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KSByZXBsID0gIiIKCWlmIChzdHIgPT0gIlwiXCIiKSBzdHIgPSAiIgoJaWYgKHN1Ym91dCA9PSAiXCJcIiIpIHN1Ym91dCA9ICIiCglpZiAoZ3N1Ym91dCA9PSAiXCJcIiIpIGdzdWJvdXQgPSAiIgp9CnsJCSMgZ2VuZXJhdGUgYSB0ZXN0CgludCsrCglnc3ViKC9cXC8sICImJiIsIHJlcGwpCSMgaW4gY2FzZSBvZiBcIGVuY2xvc2VkCgl0ZXN0ID0gc3ByaW50ZigiZWNobyAnIiciJyVzJyInIicgfCAlcyAnIidcbiInIiwgc3RyLCBhd2spIFwKCSAgc3ByaW50ZigieyB0ZW1wID0gJDA7IHN1YigvJXMvLCBcIiVzXCIsIHRlbXApXG4iLCBwYXQsIHJlcGwpIFwKCSAgc3ByaW50ZigiICBpZiAodGVtcCAhPSBcIiVzXCIpIHByaW50IFwiIHN1YiAlZCBmYWlsczpcIiwgdGVtcCwgXCJzaG91bGQgYmUgJXMgaW4gJXNcIlxuIiwKCQlzdWJvdXQsIG50LCBzdWJvdXQsIChwYXQgIiAiIHJlcGwgIiAiIHN0ciAiICIgc3Vib3V0KSkgXAoJICBzcHJpbnRmKCIgIGdzdWIoLyVzLywgXCIlc1wiKVxuIiwgcGF0LCByZXBsKSBcCgkgIHNwcmludGYoIiAgaWYgKCQwICE9IFwiJXNcIikgcHJpbnQgXCJnc3ViICVkIGZhaWxzOlwiLCAkMCwgXCJzaG91bGQgYmUgJXMgaW4gJXNcIlxufSIsCgkJZ3N1Ym91dCwgbnQsIGdzdWJvdXQsIChwYXQgIiAiIHJlcGwgIiAiIHN0ciAiICIgZ3N1Ym91dCkpIFwKCSAgIiciICciJyIKCSMgaWYgKG50ID49IDU1KSBwcmludCAidGVzdCBpczogIiB0ZXN0CglzeXN0ZW0odGVzdCkKCSMgc3lzdGVtKCJicHJpbnQgLWMgLi4vYS5vdXQiKQp9CkVORCB7IHByaW50IG50LCAidGVzdHMiIH0KCicgPDxcISEhIQphCXgJYWFhCXhhYQl4eHgKCQlheGEJeHhhCXh4eAoJCWJiYgliYmIJYmJiCgkJIiIJIiIJIiIKYQl4eQlhYWEJeHlhYQl4eXh5eHkKCQlheGEJeHl4YQl4eXh4eQoJCWJiYgliYmIJYmJiCgkJIiIJIiIJIiIKLgl4CWFhYQl4YWEJeHh4CgkJYXhhCXh4YQl4eHgKCQliYmIJeGJiCXh4eAoJCSIiCSIiCSIiCi5hCXgJYQlhCWEKCQlheAlheAlheAoJCWFhCXgJeAoJCWFhYWIJeGFiCXhhYgoJCWFhYWEJeGFhCXh4CgkJIiIJIiIJIiIKJAl4CWEJYXgJYXgKCQkiIgl4CXgKLiQJeAkiIgkiIgkiIgoJCWEJeAl4CgkJYWIJYXgJYXgKYSQJeAkiIgkiIgkiIgoJCWEJeAl4CgkJYgliCWIKCQlhYglhYglhYgpeCXgJIiIJeAl4CgkJYQl4YQl4YQpeYSQJeHgJYQl4eAl4eAoJCSIiCSIiCSIiCgkJYgliCWIKCQlhYQlhYQlhYQpeYS4kCXh5CWEJYQlhCgkJIiIJIiIJIiIKCQlhYgl4eQl4eQoJCWJhCWJhCWJhCl4kCXgJIiIJeAl4CgkJYQlhCWEKXi5hCXgJYWEJeAl4CgkJYmEJeAl4CgkJYWIJYWIJYWIKCQlhCWEJYQkKXi4qYQl4eQkiIgkiIgkiIgoJCWEJeHkJeHkKCQliCWIJYgoJCWJhCXh5CXh5Cl4uK2EJeHkJIiIJIiIJIiIKCQlhCWEJYQoJCWJiCWJiCWJiCgkJYmEJeHkJeHkKYQkmeCZ5CWEJYXhheQlheGF5CgkJYWEJYXhheWEJYXhheWF4YXkKCmEqCXgJIiIJeAl4CgkJegl4egl4engKCQlhegl4egl4engKCQlhemEJeHphCXh6eAoJYgl4eHgJYnh4eAlieGJ4YnhiCgl4JglwYXEJeHBhcQl4cHhhcXgKCXhcJglwYXEJeCZwYXEJeCZweCZxeCYKCXgmeQlwYXEJeHlwYXEJeHlweGF5cXh5Cgl4XCZ5CXBhcQl4JnlwYXEJeCZ5cHgmeXF4JnkKYSsJeCYJcGFxCXB4YXEJcHhhcQoJeFwmCXBhcQlweCZxCXB4JnEKCXgmeQlwYXEJcHhheXEJcHhheXEKCXhcJnkJcGFxCXB4JnlxCXB4JnlxCmFhKgl4CWEJeAl4CgkJYWEJeAl4CgkJd2F3YQl3eHdhCXd4d3gKXCQJeAkiIgkiIgkiIgoJCWEJYQlhCgkJYSQJYXgJYXgKCQkkJCQJeCQkCXh4eAoJCXokeiR6CXp4eiR6CXp4enh6ClwuCXgJIiIJIiIJIiIKCQlhCWEJYQoJCWEuCWF4CWF4CgkJLi4uCXguLgl4eHgKCQl6Lnouegl6eHouegl6eHp4egp4cit5CXEJeHkJeHkJeHkKCQl4cnkJcQlxCgkJeHJyeQlxCXEKCQl4cnlXeHJ5CXFXeHJ5CXFXcQp4cj95CXEJQXh5QglBcUIJQXFCCgkJQXhyeUIJQXFCCUFxQgoJCUF4cnJ5CUF4cnJ5CUF4cnJ5CmE/Yj9jPwl4CSIiCXgJeAoJCWEJeAl4CgkJYgl4CXgKCQljCXgJeAoJCWFjCXgJeAoJCWFjYwl4Ywl4eApeYT9iP3EJeAkiIgkiIgkiIgoJCXEJeAl4CgkJYQlhCWEKCQlhcQl4CXgKCQlicQl4CXgKCQlhYnEJeAl4CgkJcWFiCXhhYgl4YWIKCQlhYnFhYnEJeGFicQl4YWJxClswLTldCXh5egkwCXh5egl4eXoKCQkwMAl4eXowCXh5enh5egoJCTAwMAl4eXowMAl4eXp4eXp4eXoKCQkwYQl4eXphCXh5emEKCQlhMAlheHl6CWF4eXoKCQkwYTAJeHl6YTAJeHl6YXh5egoJCXh4CXh4CXh4CgkJIiIJIiIJIiIKXlswLTldCXh5egkwCXh5egl4eXoKCQkwMAl4eXowCXh5ejAKCQkwMDAJeHl6MDAJeHl6MDAKCQkwYQl4eXphCXh5emEKCQlhMAlhMAlhMAoJCXh4CXh4CXh4CgkJIiIJIiIJIiIKWzAtOV0kCXh5egkwCXh5egl4eXoKCQkwMAkweHl6CTB4eXoKCQkwMDAJMDB4eXoJMDB4eXoKCQkwYQkwYQkwYQoJCWEwCWF4eXoJYXh5egoJCXh4CXh4CXh4CgkJIiIJIiIJIiIKWzAtOV0qCXh5egkwCXh5egl4eXoKCQkwMDAJeHl6CXh5egoJCTBhCXh5emEJeHl6YXh5egoJCWEwCXh5emEwCXh5emF4eXoKCQkwYTAJeHl6YTAJeHl6YXh5egoJCXBxCXh5enBxCXh5enB4eXpxeHl6CgkJIiIJeHl6CXh5egoKIiIJPCY+CWFiYwk8PmFiYwk8PmE8PmI8PmM8PglmaXhlZCAyLzA3LCB3ZSB0aGluawoiIgk8XCY+CWFiYwk8Jj5hYmMJPCY+YTwmPmI8Jj5jPCY+CiIiCTwmJj4JYWJjCTw+YWJjCTw+YTw+Yjw+Yzw+CiIiCTwmPgkiIgk8Pgk8PgoKZD9hYmMJPCY+CWFiYwk8YWJjPgk8YWJjPgpkPwk8Jj4JYWJjCTw+YWJjCTw+YTw+Yjw+Yzw+Cgp4WzAtOV0reQlRCXh5CXh5CXh5CW5vIGNoYW5nZQoJCXgweQlRCVEKCQl4MTJ5CVEJUQoJCXgxeTIJUTIJUTIKCQl4MXlheDIzeQlRYXgyM3kJUWFRCgojIHhbMC05XT95CX4JeHkKIyAJCXgxeQojIAkhfgl4MjN5CiMgeFtbXXkJfgl4W3kKIyAJIX4JeHkKIyAJCXhbW115CiMgCQl4XXkKIyB4W15bXXkJfgl4YXkKIyAJIX4JeFt5CiMgeFstXXkJfgl4LXkKIyAJIX4JeHkKIyAJCXgreQojIHhbXi1deQl+CXgreQojIAkhfgl4LXkKIyAJCXh5CiMgWzBcLTldCX4JMAojIAkJLQojIAkJOQojIAkhfgkxCiMgCQkiIgojIFstMV0JfgktCiMgCQkxCiMgCSF+CTAKIyBbMC1dCX4JMAojIAkJLQojIAkhfgkxCiMgW14tMF0Jfgl4CiMgCQleCiMgCSF+CS0KIyAJCTAKIyAJCSIiCiMgW14wLV0Jfgl4CiMgCQleCiMgCSF+CS0KIyAJCTAKIyAJCSIiCiMgeHx5CX4JeAojIAkJeQojIAkJeHkKIyAJIX4JYQojIAkJIiIKIyBeYWJjfHh5eiQJfglhYmMKIyAJCWFiY2QKIyAJCWF4eXoKIyAJCXh5egojIAkhfgl4YWJjCiMgCQl4eXphCiMgXihhYmN8eHl6KSQJfglhYmMKIyAJCXh5egojIAkhfglhYmN4eXoKIyAJCWFiY3gKIyAJCWN4eXoKIyBeeFx8eSQJfgl4fHkKIyAJIX4JeHkKIyBeeFxceSQJfgl4XHkKIyAJIX4JeHkKIyAJCXhcXHkKIyAJCXhheQojIFwxNDFcMTQyCX4JYWIKIyAJCXhhYgojIAkJYWJ4CiMgCSF+CWEKIyAJCWIKIyAJCWF4CiMgCQlheGIKIyB4XDA1NnkJfgl4LnkKIyAJIX4JeC4KIyAJCS54CiMgCQl4eHgKIyAJCXhieSAgYmVjYXVzZSBcMDU2IGlzIG5vdCB0aGUgbWV0YWNoYXJhY3RlciAuCiMgCQl4Y3kg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L2Eub3V0Igp9Ck5GID09IDAgewoJbmV4dAp9CiQxICE9ICIiIHsJIyBuZXcgdGVzdAoJcmUgPSAkMQp9CiQyICE9ICIiIHsJIyBlaXRoZXIgfiBvciAhfgoJb3AgPSAkMgoJaWYgKG9wID09ICJ+IikKCQluZWcgPSAiISIKCWVsc2UgaWYgKG9wID09ICIhfiIpCgkJbmVnID0gIiIKfQokMyAhPSAiIiB7CSMgbmV3IHRlc3Qgc3RyaW5nCglzdHIgPSAkMwp9CiQzID09ICJcIlwiIiB7CSMgZXhwbGljaXQgZW1wdHkgbGluZQoJJDMgPSAiIgp9Ck5GID4gMiB7CSMgZ2VuZXJhdGUgYSB0ZXN0CglpbnB1dCA9ICQzCgl0ZXN0ID0gc3ByaW50ZigiLi9lY2hvICciJyInJXMnIiciJyB8ICVzICciJyInJXMvJXMvIHtwcmludCBcIiVkIGZhaWxzICVzICVzICVzXCJ9JyInIiciLAoJCWlucHV0LCBhd2ssIG5lZywgcmUsIE5SLCByZSwgb3AsIGlucHV0KQoJIyBwcmludGYoIiAlM2QgICAlcyAlcyAlczpcbiIsIE5SLCByZSwgb3AsIGlucHV0KQoJIyBwcmludCAidGVzdCBpcyB8IiB0ZXN0ICJ8IgoJc3lzdGVtKHRlc3QpCgkjIHN5c3RlbSgiYnByaW50IC1jIC4uL2Eub3V0IikKCW50KysKfQpFTkQgeyBwcmludCAiCSIgbnQsICJ0ZXN0cyIgfQonIDw8XCEhISEKCX4JYQoJCWFhCgkJYWFhCgkJIiIKYQl+CWEKCQliYQoJCWJhYgoJIX4JIiIKCQl4CgkJeHh4eHgKPQl+CT0KCQliPQoJCWI9YgoJIX4JIiIKCQl4CgkJeHh4eHgKLgl+CXgKCQl4eHgKCSF+CSIiCQkJCi5hCX4JeGEKCQl4eGEKCQl4YXgKCSF+CWEKCQlheAoJCSIiCiQJfgl4CgkJIiIKLiQJfgl4CgkJeHgKCSF+CSIiCmEkCX4JYQoJCWJhCgkJYmJiYQoJIX4JYWIKCQl4CgkJIiIKXgl+CXgKCQkiIgoJCV4KXmEkCX4JYQoJIX4JeGEKCQlheAoJCXhheAoJCSIiCl5hLiQJfglheAoJCWFhCgkhfgl4YQoJCWFhYQoJCWF4eQoJCSIiCl4kCX4JIiIKCSF+CXgKCQleCl4uYQl+CXhhCgkJeGFhCgkhfglhCgkJIiIKXi4qYQl+CWEKCQl4YQoJCXh4eHh4eGEKCSF+CSIiCl4uK2EJfgl4YQoJCXh4eHh4eGEKCSF+CSIiCgkJYQoJCWF4CmEqCX4JIiIKCQlhCgkJYWFhYQoJCXhhCgkJeHh4eAphYSoJfglhCgkJYWFhCgkJeGEKCSF+CXh4eHgKCQkiIgpcJAl+CXgkCgkJJAoJCSR4CgkJeCR4CgkhfgkiIgoJCXgKXC4JfgkuCgkhfgl4CgkJIiIKeHIreQl+CXhyeQoJCXhycnkKCQl4cnJycnJyeQoJIX4JcnkKCQl4eQoJCXhyCnhyP3kJfgl4eQoJCXhyeQoJIX4JeHJyeQphP2I/Yz8JfgkiIgoJCXgKXmE/Yj94CX4JeAoJCWF4CgkJYngKCQlhYngKCQl4YQoJIX4JIiIKCQlhYgoJCWFiYQkJCQpbMC05XQl+CTEKCQk1NjcKCQl4MHkKCSF+CWFiYwoJCSIiClteMC05XQkhfgkxCgkJNTY3CgkJIiIKCX4JYWJjCgkJeDB5ClswLTI1LTY5XQl+CTAKCQkxCgkJMgoJCTUKCQk2CgkJOQoJIX4JMwoJCTQKCQk3CgkJOApbWzpsb3dlcjpdXQl+CWEKCQliCgkJegoJIX4JQQoJCVoKCQkxCgkJOgoJCVsKCQldCltbOnVwcGVyOl1dCX4JQQoJCUIKCQlaCgkhfglhCgkJegoJCTEKCQk6CgkJWwoJCV0KW1s6ZGlnaXQ6XV0JfgkwCgkJMQoJCTkKCSF+CWQKCQk6CgkJWwoJCV0KeFswLTldK3kJfgl4MHkKCQl4MjN5CgkJeDEyMzQ1eQoJIX4JMHkKCQl4eQp4WzAtOV0/eQl+CXh5CgkJeDF5Cgkhfgl4MjN5CnhbW115CX4JeFt5Cgkhfgl4eQoJCXhbW115CgkJeF15CnhbWy1deQl+CXhbeQoJCXgteQoJIX4JeHkKCQl4W1tdeQoJCXhdeQp4W1stYV15CX4JeFt5CgkJeGF5CgkJeF15Cgkhfgl4eQoJCXhbW115CgkJeC15CnhbXS1hXXkJfgl4XXkKCQl4YXkKCSF+CXh5CgkJeFt5CgkJeC15CnhbXV15CX4JeF15Cgkhfgl4eQoJCXhbXV15CgkJeFt5CnhbXltd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AAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL1xcLwoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0ZXN0ZGlyL3QuNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY2NAAwMDAxNzUwADAwMDE3NTAAMDAwMDAwMDAwMjUAMTMzMzcxNzQ3MDMAMDEyNDEzACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQxIH4gLzUvIHx8ICQxIH4gLzQvCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0ZXN0ZGlyL3QuYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY2NAAwMDAxNzUwADAwMDE3NTAAMDAwMDAwMDAyMDMAMTMzMzcxNzQ3MDMAMDEyNDY2ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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Pj4gZm9vMAoKJGF3ayAnCnsJbiA9IHNwbGl0KCQwLCB4LCAiIikKCW0gPSBsZW5ndGgoJDApCglpZiAobSAhPSBuKSBwcmludCAiZXJyb3IgMSIsIE5SCglzID0gIiIKCWZvciAoaSA9IDE7IGkgPD0gbTsgaSsrKQoJCXMgPSBzIHhbaV0KCWlmIChzICE9ICQwKSBwcmludCAiZXJyb3IgMiIsIE5SCglwcmludCBzCn0nIGZvbzAgPmZvbzEKCmRpZmYgZm9vMCBmb28xIHx8IGVjaG8gJ0JBRDogVC5zcGxpdCAxJwoKIyBhc3N1bWVzIHNhbWUgZm9vMCEgIGJhZCBkZXNpZ24KCgokYXdrICcKewluID0gc3BsaXQoJDAsIHgsIC8vKQoJbSA9IGxlbmd0aCgkMCkKCWlmIChtICE9IG4pIHByaW50ICJlcnJvciAxIiwgTlIKCXMgPSAiIgoJZm9yIChpID0gMTsgaSA8PSBtOyBpKyspCgkJcyA9IHMgeFtpXQoJaWYgKHMgIT0gJDApIHByaW50ICJlcnJvciAyIiwgTlIKCXByaW50IHMKfScgZm9vMCA+Zm9vMQoKZGlmZiBmb28wIGZvbzEgfHwgZWNobyAnQkFEOiBULnNwbGl0IC8vJwoKJGF3ayAnCkJFR0lOIHsgRlMgPSAiIiB9CnsJbiA9IHNwbGl0KCQwLCB4KQkjIHdpbGwgYmUgc3BsaXQgd2l0aCBGUwoJbSA9IGxlbmd0aCgkMCkKCWlmIChtICE9IG4pIHByaW50ICJlcnJvciAxIiwgTlIKCXMgPSAiIgoJZm9yIChpID0gMTsgaSA8PSBtOyBpKyspCgkJcyA9IHMgeFtpXQoJaWYgKHMgIT0gJDApIHByaW50ICJlcnJvciAyIiwgTlIKCXByaW50IHMKfScgZm9vMCA+Zm9vMgoKZGlmZiBmb28wIGZvbzIgfHwgZWNobyAnQkFEOiBULnNwbGl0IDInCgojIGFzc3VtZXMgc2FtZSBmb28wIQoKJGF3ayAnCkJFR0lOIHsgRlMgPSAiIiB9CnsJbiA9IE5GCgltID0gbGVuZ3RoKCQwKQoJaWYgKG0gIT0gbikgcHJpbnQgImVycm9yIDEiLCBOUgoJcyA9ICIiCglmb3IgKGkgPSAxOyBpIDw9IG07IGkrKykKCQlzID0gcyAkaQoJaWYgKHMgIT0gJDApIHByaW50ICJlcnJvciAyIiwgTlIKCXByaW50IHMKfScgZm9vMCA+Zm9vMwoKZGlmZiBmb28wIGZvbzMgfHwgZWNobyAnQkFEOiBULnNwbGl0IDMnCgoKJGF3ayAnCnsgbiA9IHNwbGl0KCAkMCwgdGVtcCwgL15AQEAgKy8gKQogIHByaW50IG4KfScgPmZvbzEgPDxYWFgKQEBAIHh4eApAQEAgeHh4CkBAQCB4eHgKWFhYCmVjaG8gJzIKMgoyJyA+Zm9vMgpkaWZmIGZvbzEgZm9vMiB8fCBlY2hvICdCQUQ6IFQuc3BsaXQgNCcKCnJtIGZvbyoKCmVjaG8gJwphCmJjCmRlZicgPmZvbzAKJGF3ayAnCnsgcHJpbnQgc3BsaXQoJDAsIHgsICIiKQp9JyBmb28wID5mb28xCmVjaG8gJzAKMQoyCjMnID5mb28yCmRpZmYgZm9vMSBmb28yIHx8IGVjaG8gJ0JBRDogVC5zcGxpdCBudWxsIDNyZCBhcmcnCgpybSBmb28qCiRhd2sgJ0JFR0lOIHsKICBhWzFdPSJhIGIiCiAgcHJpbnQgc3BsaXQoYVsxXSxhKSxhWzFdLGFbMl0KfScgPmZvbzEKCmVjaG8gJzIgYSBiJyA+Zm9vMgpkaWZmIGZvbzEgZm9vMiB8fCBlY2hvICdCQUQ6IFQuc3BsaXQoYVsxXSxhKScKCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0ZXN0ZGlyL3QuYnJlYWsxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY2NAAwMDAxNzUwADAwMDE3NTAAMDAwMDAwMDAyMDcAMTMzMzcxNzQ3MDMAMDEzNDE3ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAl7IHhbTlJdID0gJDAgfQpFTkQgewoJZm9yIChpID0gMTsgaSA8PSBOUjsgaSsrKSB7CgkJcHJpbnQgaSwgeFtpXQoJCWlmICh4W2ldIH4gL3NoZW4vKQoJCQlicmVhawoJfQoJcHJpbnQgImdvdCBoZXJlIgoJcHJpbnQgaSwgeFtpXQp9CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdGVzdGRpci90LnN1YnN0cgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NjQAMDAwMTc1MAAwMDAxNzUwADAwMDAwMDAwMTMyADEzMzM3MTc0NzAzADAxMzU3MQAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABzdWJzdHIoJDIsIDEsIDEpIH4gL1thYmNdLwpzdWJzdHIoJDIsIGxlbmd0aCgkMikpICF+IC9bYS16XS8Kc3Vic3RyKCQyLCBsZW5ndGgoJDIpKSB+IC8uLwoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRlc3RkaXIvdC5nc3ViMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjY0ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDAwMDAyNwAxMzMzNzE3NDcwMwAwMTMyNzMAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAe2dzdWIoLyQvLCJ4Iik7IHByaW50fQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0ZXN0ZGlyL3R0LjA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY2NAAwMDAxNzUwADAwMDE3NTAAMDAwMDAwMDAwNTcAMTMzMzcxNzQ3MDMAMDEyNjY0ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsgZm9yIChpID0gTkY7IGkgPiAwOyBpLS0pCglwcmludGYgIiVzICIsICRpCn0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdGVzdGRpci90dC4wMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NjQAMDAwMTc1MAAwMDAxNzUwADAwMDAwMDAwMDEyADEzMzM3MTc0NzAzADAxMjY1MAAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7IHByaW50IH0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRlc3RkaXIvdC5zdWIyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjY0ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDAwMDA2MwAxMzMzNzE3NDcwMwAwMTMxMjUAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAe3N1YigvLiQvLCImJiIpOyBwcmludH0Ke3N1YigvLiQvLCImXFwmJiIpOyBwcmludH0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0ZXN0ZGlyL3AuMzQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY2NAAwMDAxNzUwADAwMDE3NTAAMDAwMDAwMDAwMjYAMTMzMzcxNzQ3MDMAMDEyNDczACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsgJDIgLz0gMTAwMDsgcHJpbnQgfQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdGVzdGRpci90LngAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NjQAMDAwMTc1MAAwMDAxNzUwADAwMDAwMDAwMDA0ADEzMzM3MTc0NzAzADAxMjUxNAAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAveC8KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRlc3RkaXIvY291bnRyaWVzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjY0ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDAwMDQwMAAxMzMzNzE3NDcwMwAwMTQwMTYAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVVNTUgk4NjQ5CTI3NQlBc2lhCkNhbmFkYQkzODUyCTI1CU5vcnRoIEFtZXJpY2EKQ2hpbmEJMzcwNQkxMDMyCUFzaWEKVVNBCTM2MTUJMjM3CU5vcnRoIEFtZXJpY2EKQnJhemlsCTMyODYJMTM0CVNvdXRoIEFtZXJpY2EKSW5kaWEJMTI2Nwk3NDYJQXNpYQpNZXhpY28JNzYyCTc4CU5vcnRoIEFtZXJpY2EKRnJhbmNlCTIxMQk1NQlFdXJvcGUKSmFwYW4JMTQ0CTEyMAlBc2lhCkdlcm1hbnkJOTYJNjEJRXVyb3BlCkVuZ2xhbmQJOTQJNTYJRXVyb3BlCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0ZXN0ZGlyL2xpbGx5LnByb2dzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY2NAAwMDAxNzUwADAwMDE3NTAAMDAwMDAwMDYzNDUAMTMzMzcxNzQ3MDMAMDE0Mjc3ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEJFR0lOe2Zvbz02O3ByaW50IGZvby8yfQpCRUdJTntmb289MTA7Zm9vLz0yO3ByaW50IGZvb30KLz0vIHtwcmludCAkMH0KLz09LyB7cHJpbnQgJDB9Ci9cKz0vIHtwcmludCAkMH0KL1wqPS8ge3ByaW50ICQwfQovLT0vIHtwcmludCAkMH0KL1wvPS8ge3ByaW50ICQwfQovJT0vIHtwcmludCAkMH0KL149LyB7cHJpbnQgJDB9Ci8hPS8ge3ByaW50ICQwfQovPD0vIHtwcmludCAkMH0KLz49LyB7cHJpbnQgJDB9CiEvPS8ge3ByaW50ICQwfQohLz09LyB7cHJpbnQgJDB9CiEvXCs9LyB7cHJpbnQgJDB9CiEvXCo9LyB7cHJpbnQgJDB9CiEvLT0vIHtwcmludCAkMH0KIS9cLz0vIHtwcmludCAkMH0KIS8lPS8ge3ByaW50ICQwfQohL149LyB7cHJpbnQgJDB9CiEvIT0vIHtwcmludCAkMH0KIS88PS8ge3ByaW50ICQwfQohLz49LyB7cHJpbnQgJDB9CiQwfi89LyB7cHJpbnQgJDB9CiQwfi89PS8ge3ByaW50ICQwfQokMH4vXCs9LyB7cHJpbnQgJDB9CiQwfi9cKj0vIHtwcmludCAkMH0KJDB+Ly09LyB7cHJpbnQgJDB9CiQwfi9cLz0vIHtwcmludCAkMH0KJDB+LyU9LyB7cHJpbnQgJDB9CiQwfi9ePS8ge3ByaW50ICQwfQokMH4vIT0vIHtwcmludCAkMH0KJDB+Lzw9LyB7cHJpbnQgJDB9CiQwfi8+PS8ge3ByaW50ICQwfQokMCF+Lz0vIHtwcmludCAkMH0KJDAhfi89PS8ge3ByaW50ICQwfQokMCF+L1wrPS8ge3ByaW50ICQwfQokMCF+L1wqPS8ge3ByaW50ICQwfQokMCF+Ly09LyB7cHJpbnQgJDB9CiQwIX4vJT0vIHtwcmludCAkMH0KJDAhfi9ePS8ge3ByaW50ICQwfQokMCF+LyE9LyB7cHJpbnQgJDB9CiQwIX4vPD0vIHtwcmludCAkMH0KJDAhfi8+PS8ge3ByaW50ICQwfQp7aWYobWF0Y2goJDAsLz0vKSlwcmludCAkMH0Ke2lmKG1hdGNoKCQwLC9cPS8pKXByaW50ICQwfQp7aWYobWF0Y2goJDAsLz09LykpcHJpbnQgJDB9CntpZihtYXRjaCgkMCwvXCs9LykpcHJpbnQgJDB9CntpZihtYXRjaCgkMCwvXCo9LykpcHJpbnQgJDB9CntpZihtYXRjaCgkMCwvLT0vKSlwcmludCAkMH0Ke2lmKG1hdGNoKCQwLC8lPS8pKXByaW50ICQwfQp7aWYobWF0Y2goJDAsL149LykpcHJpbnQgJDB9CntpZihtYXRjaCgkMCwvIT0vKSlwcmludCAkMH0Ke2lmKG1hdGNoKCQwLC88PS8pKXByaW50ICQwfQp7aWYobWF0Y2goJDAsLz49LykpcHJpbnQgJDB9CntpZighbWF0Y2goJDAsLz0vKSlwcmludCAkMH0Ke2lmKCFtYXRjaCgkMCwvPT0vKSlwcmludCAkMH0Ke2lmKCFtYXRjaCgkMCwvXCs9LykpcHJpbnQgJDB9CntpZighbWF0Y2goJDAsL1wqPS8pKXByaW50ICQwfQp7aWYoIW1hdGNoKCQwLC8tPS8pKXByaW50ICQwfQp7aWYoIW1hdGNoKCQwLC8lPS8pKXByaW50ICQwfQp7aWYoIW1hdGNoKCQwLC9ePS8pKXByaW50ICQwfQp7aWYoIW1hdGNoKCQwLC8hPS8pKXByaW50ICQwfQp7aWYoIW1hdGNoKCQwLC88PS8pKXByaW50ICQwfQp7aWYoIW1hdGNoKCQwLC8+PS8pKXByaW50ICQwfQp7aWYoc3BsaXQoJDAsZm9vLC89LykpcHJpbnQgJDB9CntpZihzcGxpdCgkMCxmb28sL1w9LykpcHJpbnQgJDB9CntpZihzcGxpdCgkMCxmb28sLz09LykpcHJpbnQgJDB9CntpZihzcGxpdCgkMCxmb28sL1wrPS8pKXByaW50ICQwfQp7aWYoc3BsaXQoJDAsZm9vLC9cKj0vKSlwcmludCAkMH0Ke2lmKHNwbGl0KCQwLGZvbywvLT0vKSlwcmludCAkMH0Ke2lmKHNwbGl0KCQwLGZvbywvXC89LykpcHJpbnQgJDB9CntpZihzcGxpdCgkMCxmb28sLyU9LykpcHJpbnQgJDB9CntpZihzcGxpdCgkMCxmb28sL149LykpcHJpbnQgJDB9CntpZihzcGxpdCgkMCxmb28sLyE9LykpcHJpbnQgJDB9CntpZihzcGxpdCgkMCxmb28sLzw9LykpcHJpbnQgJDB9CntpZihzcGxpdCgkMCxmb28sLz49LykpcHJpbnQgJDB9CntpZihzdWIoLz0vLCIjIikpcHJpbnQgJDB9CntpZihzdWIoL1w9LywiIyIpKXByaW50ICQwfQp7aWYoc3ViKC89PS8sIiMiKSlwcmludCAkMH0Ke2lmKHN1YigvXCs9LywiIyIpKXByaW50ICQwfQp7aWYoc3ViKC9cKj0vLCIjIikpcHJpbnQgJDB9CntpZihzdWIoLy09LywiIyIpKXByaW50ICQwfQp7aWYoc3ViKC9cLz0vLCIjIikpcHJpbnQgJDB9CntpZihzdWIoLyU9LywiIyIpKXByaW50ICQwfQp7aWYoc3ViKC9ePS8sIiMiKSlwcmludCAkMH0Ke2lmKHN1YigvIT0vLCIjIikpcHJpbnQgJDB9CntpZihzdWIoLzw9LywiIyIpKXByaW50ICQwfQp7aWYoc3ViKC8+PS8sIiMiKSlwcmludCAkMH0Ke2lmKGdzdWIoLz0vLCIjIikpcHJpbnQgJDB9CntpZihnc3ViKC9cPS8sIiMiKSlwcmludCAkMH0Ke2lmKGdzdWIoLz09LywiIyIpKXByaW50ICQwfQp7aWYoZ3N1YigvXCs9LywiIyIpKXByaW50ICQwfQp7aWYoZ3N1YigvXCo9LywiIyIpKXByaW50ICQwfQp7aWYoZ3N1YigvLT0vLCIjIikpcHJpbnQgJDB9CntpZihnc3ViKC9cLz0vLCIjIikpcHJpbnQgJDB9CntpZihnc3ViKC8lPS8sIiMiKSlwcmludCAkMH0Ke2lmKGdzdWIoL149LywiIyIpKXByaW50ICQwfQp7aWYoZ3N1YigvIT0vLCIjIikpcHJpbnQgJDB9CntpZihnc3ViKC88PS8sIiMiKSlwcmludCAkMH0Ke2lmKGdzdWIoLz49LywiIyIpKXByaW50ICQwfQp7aWYoc3ViKC89LywiIyIsJDApKXByaW50ICQwfQp7aWYoc3ViKC9cPS8sIiMiLCQwKSlwcmludCAkMH0Ke2lmKHN1YigvPT0vLCIjIiwkMCkpcHJpbnQgJDB9CntpZihzdWIoL1wrPS8sIiMiLCQwKSlwcmludCAkMH0Ke2lmKHN1YigvXCo9LywiIyIsJDApKXByaW50ICQwfQp7aWYoc3ViKC8tPS8sIiMiLCQwKSlwcmludCAkMH0Ke2lmKHN1YigvXC89LywiIyIsJDApKXByaW50ICQwfQp7aWYoc3ViKC8lPS8sIiMiLCQwKSlwcmludCAkMH0Ke2lmKHN1YigvXj0vLCIjIiwkMCkpcHJpbnQgJDB9CntpZihzdWIoLyE9LywiIyIsJDApKXByaW50ICQwfQp7aWYoc3ViKC88PS8sIiMiLCQwKSlwcmludCAkMH0Ke2lmKHN1YigvPj0vLCIjIiwkMCkpcHJpbnQgJDB9CntpZihzdWIoLz0vLCIjIiwkMCkpcHJpbnQgJDB9CntpZihnc3ViKC9cPS8sIiMiLCQwKSlwcmludCAkMH0Ke2lmKGdzdWIoLz09LywiIyIsJDApKXByaW50ICQwfQp7aWYoZ3N1YigvXCs9LywiIyIsJDApKXByaW50ICQwfQp7aWYoZ3N1YigvXCo9LywiIyIsJDApKXByaW50ICQwfQp7aWYoZ3N1YigvLT0vLCIjIiwkMCkpcHJpbnQgJDB9CntpZihnc3ViKC9cLz0vLCIjIiwkMCkpcHJpbnQgJDB9CntpZihnc3ViKC8lPS8sIiMiLCQwKSlwcmludCAkMH0Ke2lmKGdzdWIoL149Lywi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AAAAAAAAAAAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABORiAlIDIgPT0gMAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRlc3RkaXIvdC5yZTQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjY0ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDAwMDMxNQAxMzMzNzE3NDcwMwAwMTI3NDQAIDAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRlc3RkaXIvdC5yZWcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjY0ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDAwMDA0NQAxMzMzNzE3NDcwMwAwMTMwMjcAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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IDM0IDEgbTE2OTksbTI0NSAvdXNyL2d1ZXN0IApsbGMgWi9sMjVTMmdhRm43VSA0MSAxIG0xNjUwLG0zMjQgL3Vzci9ndWVzdCAKbGVtIEp1dmtTUVVFbHY3bUUgNDMgMSBtMDIyMCxtMTU3LGwgL3Vzci9ndWVzdCAKdXVjcCBzb3JyeSA0OCAxIG1oMjAxOSxtMjg1LG5vd2l0eiAvdXNyL3Nwb29sL3V1Y3AgCm51dWNwIHZSMS9xR1QwdFRtS1kgNDggMSBtaDIwMTksbTI4NSx1dWNwIC91c3Ivc3Bvb2wvdXVjcHB1YmxpYyAvdXNyL2xpYi91dWNwL3V1Y2ljbwpkdXVjcCBGdkxXSWduZjcvWXBzIDQ4IDEgbWgyMDE5LG0yODUsbm93aXR6IC91c3Ivc3Bvb2wvdXVjcCAKc3BtIE5lVUxnQXpjQ0lFN1EgNDkgMSBtMTk4OCxtMzIyIC91c3IvZ3Vlc3QgCm1iIDVxbVJNSDU1M2JOclEgODMgMSBtNTE2MyxtMjA3IC91c3IvZ3Vlc3QgCnNpZiBZRXhIMERwdnNQNnc2IDkxIDEgbTUxOTIsbTA0NCAvdXNyL2d1ZXN0IApkb3QgY1Roc1UuUXNJUk5ndyA5OSAxIG01NTc5LG0wNDggL3Vzci9ndWVzdCAKcmplIHRpMEpzUDFuNmZJTWMgMTA5IDEgbTU0MjksbTA5NixqYW5lIC91c3IvZ3Vlc3QgCnZnbCBTVWNUNWk1NFpyOTdNIDExMiAxIG01NTc5LG0wNDggL3Vzci9ndWVzdCAKanJ2IEdhb3YxRmFjd0pXUmsgMTE0IDEgbTM4ODcsbTIwNCAvdXNyL2d1ZXN0IApubHMgOGxaeW9vc0h2ODJzQSAxMzAgMSBtNDIxNixtMDUwIC91c3IvZ3Vlc3QgCm1ldCBDN2lOdi9ZTlV1SzRZIDEzMiAxIG02MjUxLG0zMjIgL3Vzci9ndWVzdCAKc3VlIENXU2F1ODJ6Q3g0VEkgMTU2IDEgbTI1OTEsbTE0OCwyYzU3NiAvdXNyL2d1ZXN0IApyYXZpIHJ2Sk5sazVqd0xYSzYgMTY3IDEgbTAwMDAsbTMyMiAvdXNyL2d1ZXN0IApwancgeE5ReS8vR0RhOEZGZyAxNzAgMSBtNjUzNCxtMzAxIC91c3IvZ3Vlc3QgL2Jpbi9jc2gKamhjIEZ1ZUphdS94R2g3VEkgMTcxIDEgIC91c3IvZ3Vlc3QgCmxjayBEUnc0cDBtc01MeERrIDE3MiAxIG02NTMyLG0xNDkgL3Vzci9ndWVzdCAKbW9oIGZXVkVmeHdJb3g4dGMgMjEzIDEgbTc4NDIsbTIxMixob21lIC91c3IvZ3Vlc3QgCmNtYiBqb1Z1UkY0ZGpnNUMuIDIxNCAxIG0xNjYwLG0wMjUgL3Vzci9ndWVzdCAKZGF2ZSBBQmZYaU8wY01jN3IuIDIyNSAxIG1oODQ1MSxtMDQwIC91c3IvZ3Vlc3QgCm1paGFsaXMgbXdaYThLWEhSemtxRSAyMzAgMSBtMjAxOSxtMjg1IC91c3IvbWloYWxpcyAKdGdzIFhSRzZ0QlBjejBrcTIgMjMxIDEgbWg3NDYxLG0wMjUgL3Vzci90Z3MgL3Vzci9jdncvYmluL3NoCnV1Y3BhIFRxajlwN01iU2NrV00gMjM4IDEgbWgyMDE5LG0yODUsdXVjcCAvdXNyL3Nwb29sL3V1Y3BwdWJsaWMgL3Vzci9saWIvdXVjcC91dWNpY28KYnMgZlJ3UWI1ZDlPR0tmNiAyNTEgMSBtMzg4NyxtMjA0IC91c3IvZ3Vlc3QgCndzYiBGQVY5WVl6OHA5RTdBIDI1NCAxIG0yNTkxLG0xNDggL3Vzci9ndWVzdCAKdXVjcGIgQTNtUndEUTkzL2c2byAyNTkgMSBtaDAwMDAsbTAwMCAvdXNyL3Nwb29sL3V1Y3BwdWJsaWMgL3Vzci9saWIvdXVjcC91dWNpY28KY3Z3IFF5QVl5dE9mVmx3VTYgMjY2IDEgbWgxNTQ4LG0zMDEgL3Vzci9jdncgL3Vzci9jdncvYmluL3NoCmJzYiAyb3ZXOFJWVHRDSm5jIDI2OCAxIG1oODA5MixtMTUwIC91c3IvYnNiIApkc2ogVVdhd1czaE4wc3hBTSAyNzYgMSBtaDY3ODQsbTE2NCAvdXNyL2RzaiAKbXJnIHM2SGczMkZyaE9BVHMgMjc3IDEgbWg2Nzg0LG0xNjQgL3Vzci9tcmcgCmx3ZiBGRjI3YWtBako1TU9zIDI4MSAxIG1oODA4NSxtaDEwMixsd2YgL3Vzci9ndWVzdCAKa2FtIHplL2s2OE1zM2R0aGcgMjg3IDEgbTU1NzksbTA0OCAvdXNyL2d1ZXN0IAplanMgL2N5QlVrYlcuRDd1VSAyOTAgMSBtMDAwMCxtMDAwIC91c3IvZ3Vlc3QgCmFyayB6L0lnRUFRWUlCcE93IDI5MiAxIG1oNjk0NyxtMjE1LGFyayAvdXNyL2FyayAKa2ZjIDdXNlpkaUR3YjNrWmMgMzAzIDEgbTY1ODEsbTI2NiAvdXNyL2d1ZXN0IApyb2IgeE9rbWtjT2UzTnJnYyAzMDQgMSBtMDEzMCxtMzIyIC91c3IvZ3Vlc3QgCnRoZW8gY3NjV3U4c1k3TFhhTSAzMDcgMSBtODQxNyxtMTY5IC91c3IvZ3Vlc3QgL2Jpbi9zaApkanIgMUprL1k3MjlnWk9TNiAzMDkgMSBNNzcwMSxNMDk3IC91c3IvZ3Vlc3QgCndtYyA5SWpVSUthSDlKM0JRIDMxMiAxIG1oODQ0NCxtMDUwLHdtY28gL3Vzci9ndWVzdCAKYmFydCAvakVkcXVUS1cueXRNIDMxMyAxICAvdXNyL2d1ZXN0IC9iaW4vc2gKc2FsbHkgQi9mU1BUb1dlcDVEUSAzMTQgMSAgL3Vzci9ndWVzdCAvYmluL3NoCmVoZyBrRERtVjdFVjZSZ2IyIDMyMCAxIG1oODczMixtMDUwLGVoZyAvdXNyL2VoZyAKZGRzIG03UW1ZTk10Z2o4OWcgMzI0IDEgIC91c3IvZGRzIApsaWJyIHNvcnJ5IDMzMCAxICAvdXNyL21lbC9ib29rcyAKZGJtIDdBZThkRE5tVDAwYkkgMzM0IDEgbTg4OTYsbTA5MSAvdXNyL2d1ZXN0IApzcm0gdzd0MWR4aW1lN3Y2RSAzNjIgMSAgL3Vzci9zcm0gY3NoCmpraCBlOWZ1aU9GYkZJU09rIDM2MyAxICAvdXNyL2d1ZXN0IAphZWsgSUlpb1p5NWhUN2M0byAzNjUgMSAgL3Vzci9ndWVzdCAKdGFjIHdNNE14YXVqcFVkNUUgMzc3IDEgbWgwMDAwLG0wMDAgL3Vzci90YWMgCmp3ZyBtMGd5V3ZOcGZ2NW1rIDQ1NCAxIG1oODYzMixtMzM2IC91c3IvandnIApoYW5pYSBrVWpwUFVoTk1tcXMuIDUwMSAxICAvdXNyL2d1ZXN0IApqZXJxIERyM29NL1MycGwyalkgNTAyIDEgIC91c3IvamVycS93cmFwIApranMgUVZLRkFMZGZneUNwdyA1MDMgMSAgL3Vzci90Z3Mva2pzIApqaW0gRFA2dDBYVndsV09xdyA2MzIgMSAgL3Vzci9ndWVzdCAKYndrMSBzZUJRSXdCNlJRcTlzIDk5OSAxIG1oMTU0OCxtMzAxIC91c3IvYndrIApjbGFpcmUgdDZNMHVEeENFN2g3RSAzMjggMSBtaDkzMjMsbTE0NyAvdXNyL2NsYWlyZSAKZWdjIHhaWDNSUW05UjR3My4gMjk3IDEgbTAwMDAsbTAwMCAvdXNyL2VnYyAKcm9vdCBGbllrMkFSb1NxeTVzIDAgMSBtMDEzMCxtMzIyIC8gCmRhZW1vbiB4IDEgMSBtMDAwMCxtMDAwIC8gCnN5cyBzb3JyeSAyIDIgbTAxMzAsbTMyMiAvdXNyL3N5cyAKYmluIHNvcnJ5IDMgNCBtMDEzMCxtMzIyIC9iaW4gCnJobSBKeG9pLzVXUmtlU2YyIDUgMSBtMDEzMCxtMzIyIC91c3IvZ3Vlc3QgCmtlbiBYLjY4d2QxLmlqYXlNIDYgMSBtMDEzMCxtMzIyIC91c3IvZ3Vlc3QgCmRtciBDNHUzZEpXYmc3UkNrIDcgMSBtaDEwOTIsbTA2OSAvdXNyL2d1ZXN0L2RtciAKZG91ZyBLaTcxY3JXR3h3L3lNIDggMSBtMTY2MCxtMDI1IC91c3IvZ3Vlc3QgCmJ3ayBjSS94Q1RRSWhMaUlzIDkgMSBtaDE1NDgsbTMwMSAvdXNyL2J3ayAKZ3JlZyBhUC9hU3ZwcnZOempzIDEwIDEgbTAxMzAsbTMyMiAvdXNyL2d1ZXN0IAp0ZGsgQnBxRlp4TTFPTThmcyAxMiAxIG0wMTMwLG0zMjIgL3Vzci90ZGsgCmF2YSAzOXBFNU00OTdBeHhBIDE1IDEgbTEzNTcsbTI0MiAvdXNyL2F2YSAKc2NqIHk5Mzdwa1JpMFZrU1EgMjQgMSBtNTE5MCxtMjkyIC91c3IvZ3Vlc3QgCm1lbCBXZFIzSWpHbXRhdHFFIDI2IDEgbTIwMTksbTI4NSxwb3VuY2UsbGVzayAvdXNyL2d1ZXN0IAphZ2YgWDN5UURraXFXbVBKZyAzNCAxIG0xNjk5LG0yNDUgL3Vzci9ndWVzdCAKbGxjIFovbDI1UzJnYUZuN1UgNDEgMSBtMTY1MCxtMzI0IC91c3IvZ3Vlc3QgCmxlbSBKdXZrU1FVRWx2N21FIDQzIDEgbTAyMjAsbTE1NyxsIC91c3IvZ3Vlc3QgCnV1Y3Agc29ycnkgNDggMSBtaDIwMTksbTI4NSxub3dpdHogL3Vzci9zcG9vbC91dWNwIApudXVjcCB2UjEvcUdUMHRUbUtZIDQ4IDEgbWgyMDE5LG0yODUsdXVjcCAvdXNyL3Nwb29sL3V1Y3BwdWJsaWMgL3Vzci9saWIvdXVjcC91dWNpY28KZHV1Y3AgRnZMV0lnbmY3L1lwcyA0OCAxIG1oMjAxOSxtMjg1LG5vd2l0eiAvdXNyL3Nwb29sL3V1Y3AgCnNwbSBOZVVMZ0F6Y0NJRTdRIDQ5IDEgbTE5ODgsbTMyMiAvdXNyL2d1ZXN0IAptYiA1cW1STUg1NTNiTnJRIDgzIDEgbTUxNjMsbTIwNyAvdXNyL2d1ZXN0IApzaWYgWUV4SDBEcHZzUDZ3NiA5MSAxIG01MTkyLG0wNDQgL3Vzci9ndWVzdCAKZG90IGNUaHNVLlFzSVJOZ3cgOTkgMSBtNTU3OSxtMDQ4IC91c3IvZ3Vlc3QgCnJqZSB0aTBKc1AxbjZmSU1jIDEwOSAxIG01NDI5LG0wOTYsamFuZSAvdXNyL2d1ZXN0IAp2Z2wgU1VjVDVpNTRacjk3TSAxMTIgMSBtNTU3OSxtMDQ4IC91c3IvZ3Vlc3QgCmpydiBHYW92MUZhY3dKV1JrIDExNCAxIG0zODg3LG0yMDQgL3Vzci9ndWVzdCAKbmxzIDhsWnlvb3NIdjgyc0EgMTMwIDEgbTQyMTYsbTA1MCAvdXNyL2d1ZXN0IAptZXQgQzdpTnYvWU5VdUs0WSAxMzIgMSBtNjI1MSxtMzIyIC91c3IvZ3Vlc3QgCnN1ZSBDV1NhdTgyekN4NFRJIDE1NiAxIG0yNTkxLG0xNDgsMmM1NzYgL3Vzci9ndWVzdCAKcmF2aSBydkpObGs1andMWEs2IDE2NyAxIG0wMDAwLG0zMjIgL3Vzci9ndWVzdCAKcGp3IHhOUXkvL0dEYThGRmcgMTcwIDEgbTY1MzQsbTMwMSAvdXNyL2d1ZXN0IC9iaW4vY3NoCmpoYyBGdWVKYXUveEdoN1RJIDE3MSAxICAvdXNyL2d1ZXN0IApsY2sgRFJ3NHAwbXNNTHhEayAxNzIgMSBtNjUzMixtMTQ5IC91c3IvZ3Vlc3QgCm1vaCBmV1ZFZnh3SW94OHRjIDIxMyAxIG03ODQyLG0yMTIsaG9tZSAvdXNyL2d1ZXN0IApjbWIgam9WdVJGNGRqZzVDLiAyMTQgMSBtMTY2MCxtMDI1IC91c3IvZ3Vlc3QgCmRhdmUgQUJmWGlPMGNNYzdyLiAyMjUgMSBtaDg0NTEsbTA0MCAvdXNyL2d1ZXN0IAptaWhhbGlzIG13WmE4S1hIUnprcUUgMjMwIDEgbTIwMTksbTI4NSAvdXNyL21paGFsaXMgCnRncyBYUkc2dEJQY3owa3EyIDIzMSAxIG1oNzQ2MSxtMDI1IC91c3IvdGdzIC91c3IvY3Z3L2Jpbi9zaAp1dWNwYSBUcWo5cDdNYlNja1dNIDIzOCAxIG1oMjAxOSxtMjg1LHV1Y3AgL3Vzci9zcG9vbC91dWNwcHVibGljIC91c3IvbGliL3V1Y3AvdXVjaWNvCmJzIGZSd1FiNWQ5T0dLZjYgMjUxIDEgbTM4ODcsbTIwNCAvdXNyL2d1ZXN0IAp3c2IgRkFWOVlZejhwOUU3QSAyNTQgMSBtMjU5MSxtMTQ4IC91c3IvZ3Vlc3QgCnV1Y3BiIEEzbVJ3RFE5My9nNm8gMjU5IDEgbWgwMDAwLG0wMDAgL3Vzci9zcG9vbC91dWNwcHVibGljIC91c3IvbGliL3V1Y3AvdXVjaWNvCmN2dyBReUFZeXRPZlZsd1U2IDI2NiAxIG1oMTU0OCxtMzAxIC91c3IvY3Z3IC91c3IvY3Z3L2Jpbi9zaApic2IgMm92VzhSVlR0Q0puYyAyNjggMSBtaDgwOTIsbTE1MCAvdXNyL2JzYiAKZHNqIFVXYXdXM2hOMHN4QU0gMjc2IDEgbWg2Nzg0LG0xNjQgL3Vzci9kc2ogCm1yZyBzNkhnMzJGcmhPQVRzIDI3NyAxIG1oNjc4NCxtMTY0IC91c3IvbXJnIApsd2YgRkYyN2FrQWpKNU1PcyAyODEgMSBtaDgwODUsbWgxMDIsbHdmIC91c3IvZ3Vlc3QgCmthbSB6ZS9rNjhNczNkdGhnIDI4NyAxIG01NTc5LG0wNDggL3Vzci9ndWVzdCAKZWpzIC9jeUJVa2JXLkQ3dVUgMjkwIDEgbTAwMDAsbTAwMCAvdXNyL2d1ZXN0IAphcmsgei9JZ0VBUVlJQnBPdyAyOTIgMSBtaDY5NDcsbTIxNSxhcmsgL3Vzci9hcmsgCmtmYyA3VzZaZGlEd2Iza1pjIDMwMyAxIG02NTgxLG0yNjYgL3Vzci9ndWVzdCAKcm9iIHhPa21rY09lM05yZ2MgMzA0IDEgbTAxMzAsbTMyMiAvdXNyL2d1ZXN0IAp0aGVvIGNzY1d1OHNZN0xYYU0gMzA3IDEgbTg0MTcsbTE2OSAvdXNyL2d1ZXN0IC9iaW4vc2gKZGpyIDFKay9ZNzI5Z1pPUzYgMzA5IDEgTTc3MDEsTTA5NyAvdXNyL2d1ZXN0IAp3bWMgOUlqVUlLYUg5SjNCUSAzMTIgMSBtaDg0NDQsbTA1MCx3bWNvIC91c3IvZ3Vlc3QgCmJhcnQgL2pFZHF1VEtXLnl0TSAzMTMgMSAgL3Vzci9ndWVzdCAvYmluL3NoCnNhbGx5IEIvZlNQVG9XZXA1RFEgMzE0IDEgIC91c3IvZ3Vlc3QgL2Jpbi9zaAplaGcga0REbVY3RVY2UmdiMiAzMjAgMSBtaDg3MzIsbTA1MCxlaGcgL3Vzci9laGcgCmRkcyBtN1FtWU5NdGdqODlnIDMyNCAxICAvdXNyL2RkcyAKbGliciBzb3JyeSAzMzAgMSAgL3Vzci9tZWwvYm9va3MgCmRibSA3QWU4ZERObVQwMGJJIDMzNCAxIG04ODk2LG0wOTEgL3Vzci9ndWVzdCAKc3JtIHc3dDFkeGltZTd2NkUgMzYyIDEgIC91c3Ivc3JtIGNzaApqa2ggZTlmdWlPRmJGSVNPayAzNjMgMSAgL3Vzci9ndWVzdCAKYWVrIElJaW9aeTVoVDdjNG8gMzY1IDEgIC91c3IvZ3Vlc3QgCnRhYyB3TTRNeGF1anBVZDVFIDM3NyAxIG1oMDAwMCxtMDAwIC91c3IvdGFjIApqd2cgbTBneVd2TnBmdjVtayA0NTQgMSBtaDg2MzIsbTMzNiAvdXNyL2p3ZyAKaGFuaWEga1VqcFBVaE5NbXFzLiA1MDEgMSAgL3Vzci9ndWVzdCAKamVycSBEcjNvTS9TMnBsMmpZIDUwMiAxICAvdXNyL2plcnEvd3JhcCAKa2pzIFFWS0ZBTGRmZ3lDcHcgNTAzIDEgIC91c3IvdGdzL2tqcyAKamltIERQNnQwWFZ3bFdPcXcgNjMyIDEgIC91c3IvZ3Vlc3QgCmJ3azEgc2VCUUl3QjZSUXE5cyA5OTkgMSBtaDE1NDgsbTMwMSAvdXNyL2J3ayAKY2xhaXJlIHQ2TTB1RHhDRTdoN0UgMzI4IDEgbWg5MzIzLG0xNDcgL3Vzci9jbGFpcmUgCmVnYyB4WlgzUlFtOVI0dzMuIDI5NyAxIG0wMDAwLG0wMDAgL3Vzci9lZ2MgCnJvb3QgRm5ZazJBUm9TcXk1cyAwIDEgbTAxMzAsbTMyMiAvIApkYWVtb24geCAxIDEgbTAwMDAsbTAwMCAvIApzeXMgc29ycnkgMiAyIG0wMTMwLG0zMjIgL3Vzci9zeXMgCmJpbiBzb3JyeSAzIDQgbTAxMzAsbTMyMiAvYmluIApyaG0gSnhvaS81V1JrZVNmMiA1IDEgbTAxMzAsbTMyMiAvdXNyL2d1ZXN0IAprZW4gWC42OHdkMS5pamF5TSA2IDEgbTAxMzAsbTMyMiAvdXNyL2d1ZXN0IApkbXIgQzR1M2RKV2JnN1JDayA3IDEgbWgxMDkyLG0wNjkgL3Vzci9ndWVzdC9kbXIgCmRvdWcgS2k3MWNyV0d4dy95TSA4IDEgbTE2NjAsbTAyNSAvdXNyL2d1ZXN0IApid2sgY0kveENUUUloTGlJcyA5IDEgbWgxNTQ4LG0zMDEgL3Vzci9id2sgCmdyZWcgYVAvYVN2cHJ2TnpqcyAxMCAxIG0wMTMwLG0zMjIgL3Vzci9ndWVzdCAKdGRrIEJwcUZaeE0xT004ZnMgMTIgMSBtMDEzMCxtMzIyIC91c3IvdGRrIAphdmEgMzlwRTVNNDk3QXh4QSAxNSAxIG0xMzU3LG0yNDIgL3Vzci9hdmEgCnNjaiB5OTM3cGtSaTBWa1NRIDI0IDEgbTUxOTAsbTI5MiAvdXNyL2d1ZXN0IAptZWwgV2RSM0lqR210YXRxRSAyNiAxIG0yMDE5LG0yODUscG91bmNlLGxlc2sgL3Vzci9ndWVzdCAKYWdmIFgzeVFEa2lxV21QSmcgMzQgMSBtMTY5OSxtMjQ1IC91c3IvZ3Vlc3QgCmxsYyBaL2wyNVMyZ2FGbjdVIDQxIDEgbTE2NTAsbTMyNCAvdXNyL2d1ZXN0IApsZW0gSnV2a1NRVUVsdjdtRSA0MyAxIG0wMjIwLG0xNTcsbCAvdXNyL2d1ZXN0IAp1dWNwIHNvcnJ5IDQ4IDEgbWgyMDE5LG0yODUsbm93aXR6IC91c3Ivc3Bvb2wvdXVjcCAKbnV1Y3AgdlIxL3FHVDB0VG1LWSA0OCAxIG1oMjAxOSxtMjg1LHV1Y3AgL3Vzci9zcG9vbC91dWNwcHVibGljIC91c3IvbGliL3V1Y3AvdXVjaWNvCmR1dWNwIEZ2TFdJZ25mNy9ZcHMgNDggMSBtaDIwMTksbTI4NSxub3dpdHogL3Vzci9zcG9vbC91dWNwIApzcG0gTmVVTGdBemNDSUU3USA0OSAxIG0xOTg4LG0zMjIgL3Vzci9ndWVzdCAKbWIgNXFtUk1INTUzYk5yUSA4MyAxIG01MTYzLG0yMDcgL3Vzci9ndWVzdCAKc2lmIFlFeEgwRHB2c1A2dzYgOTEgMSBtNTE5MixtMDQ0IC91c3IvZ3Vlc3QgCmRvdCBjVGhzVS5Rc0lSTmd3IDk5IDEgbTU1NzksbTA0OCAvdXNyL2d1ZXN0IApyamUgdGkwSnNQMW42ZklNYyAxMDkgMSBtNTQyOSxtMDk2LGphbmUgL3Vzci9ndWVzdCAKdmdsIFNVY1Q1aTU0WnI5N00gMTEyIDEgbTU1NzksbTA0OCAvdXNyL2d1ZXN0IApqcnYgR2FvdjFGYWN3SldSayAxMTQgMSBtMzg4NyxtMjA0IC91c3IvZ3Vlc3QgCm5scyA4bFp5b29zSHY4MnNBIDEzMCAxIG00MjE2LG0wNTAgL3Vzci9ndWVzdCAKbWV0IEM3aU52L1lOVXVLNFkgMTMyIDEgbTYyNTEsbTMyMiAvdXNyL2d1ZXN0IApzdWUgQ1dTYXU4MnpDeDRUSSAxNTYgMSBtMjU5MSxtMTQ4LDJjNTc2IC91c3IvZ3Vlc3QgCnJhdmkgcnZKTmxrNWp3TFhLNiAxNjcgMSBtMDAwMCxtMzIyIC91c3IvZ3Vlc3QgCnBqdyB4TlF5Ly9HRGE4RkZnIDE3MCAxIG02NTM0LG0zMDEgL3Vzci9ndWVzdCAvYmluL2NzaApqaGMgRnVlSmF1L3hHaDdUSSAxNzEgMSAgL3Vzci9ndWVzdCAKbGNrIERSdzRwMG1zTUx4RGsgMTcyIDEgbTY1MzIsbTE0OSAvdXNyL2d1ZXN0IAptb2ggZldWRWZ4d0lveDh0YyAyMTMgMSBtNzg0MixtMjEyLGhvbWUgL3Vzci9ndWVzdCAKY21iIGpvVnVSRjRkamc1Qy4gMjE0IDEgbTE2NjAsbTAyNSAvdXNyL2d1ZXN0IApkYXZlIEFCZlhpTzBjTWM3ci4gMjI1IDEgbWg4NDUxLG0wNDAgL3Vzci9ndWVzdCAKbWloYWxpcyBtd1phOEtYSFJ6a3FFIDIzMCAxIG0yMDE5LG0yODUgL3Vzci9taWhhbGlzIAp0Z3MgWFJHNnRCUGN6MGtxMiAyMzEgMSBtaDc0NjEsbTAyNSAvdXNyL3RncyAvdXNyL2N2dy9iaW4vc2gKdXVjcGEgVHFqOXA3TWJTY2tXTSAyMzggMSBtaDIwMTksbTI4NSx1dWNwIC91c3Ivc3Bvb2wvdXVjcHB1YmxpYyAvdXNyL2xpYi91dWNwL3V1Y2ljbwpicyBmUndRYjVkOU9HS2Y2IDI1MSAxIG0zODg3LG0yMDQgL3Vzci9ndWVzdCAKd3NiIEZBVjlZWXo4cDlFN0EgMjU0IDEgbTI1OTEsbTE0OCAvdXNyL2d1ZXN0IAp1dWNwYiBBM21Sd0RROTMvZzZvIDI1OSAxIG1oMDAwMCxtMDAwIC91c3Ivc3Bvb2wvdXVjcHB1YmxpYyAvdXNyL2xpYi91dWNwL3V1Y2ljbwpjdncgUXlBWXl0T2ZWbHdVNiAyNjYgMSBtaDE1NDgsbTMwMSAvdXNyL2N2dyAvdXNyL2N2dy9iaW4vc2gKYnNiIDJvdlc4UlZUdENKbmMgMjY4IDEgbWg4MDkyLG0xNTAgL3Vzci9ic2IgCmRzaiBVV2F3VzNoTjBzeEFNIDI3NiAxIG1oNjc4NCxtMTY0IC91c3IvZHNqIAptcmcgczZIZzMyRnJoT0FUcyAyNzcgMSBtaDY3ODQsbTE2NCAvdXNyL21yZyAKbHdmIEZGMjdha0FqSjVNT3MgMjgxIDEgbWg4MDg1LG1oMTAyLGx3ZiAvdXNyL2d1ZXN0IAprYW0gemUvazY4TXMzZHRoZyAyODcgMSBtNTU3OSxtMDQ4IC91c3IvZ3Vlc3QgCmVqcyAvY3lCVWtiVy5EN3VVIDI5MCAxIG0wMDAwLG0wMDAgL3Vzci9ndWVzdCAKYXJrIHovSWdFQVFZSUJwT3cgMjkyIDEgbWg2OTQ3LG0yMTUsYXJrIC91c3IvYXJrIAprZmMgN1c2WmRpRHdiM2taYyAzMDMgMSBtNjU4MSxtMjY2IC91c3IvZ3Vlc3QgCnJvYiB4T2tta2NPZTNOcmdjIDMwNCAxIG0wMTMwLG0zMjIgL3Vzci9ndWVzdCAKdGhlbyBjc2NXdThzWTdMWGFNIDMwNyAxIG04NDE3LG0xNjkgL3Vzci9ndWVzdCAvYmluL3NoCmRqciAxSmsvWTcyOWdaT1M2IDMwOSAxIE03NzAxLE0wOTcgL3Vzci9ndWVzdCAKd21jIDlJalVJS2FIOUozQlEgMzEyIDEgbWg4NDQ0LG0wNTAsd21jbyAvdXNyL2d1ZXN0IApiYXJ0IC9qRWRxdVRLVy55dE0gMzEzIDEgIC91c3IvZ3Vlc3QgL2Jpbi9zaApzYWxseSBCL2ZTUFRvV2VwNURRIDMxNCAxICAvdXNyL2d1ZXN0IC9iaW4vc2gKZWhnIGtERG1WN0VWNlJnYjIgMzIwIDEgbWg4NzMyLG0wNTAsZWhnIC91c3IvZWhnIApkZHMgbTdRbVlOTXRnajg5ZyAzMjQgMSAgL3Vzci9kZHMgCmxpYnIgc29ycnkgMzMwIDEgIC91c3IvbWVsL2Jvb2tzIApkYm0gN0FlOGRETm1UMDBiSSAzMzQgMSBtODg5NixtMDkxIC91c3IvZ3Vlc3QgCnNybSB3N3QxZHhpbWU3djZFIDM2MiAxICAvdXNyL3NybSBjc2gKamtoIGU5ZnVpT0ZiRklTT2sgMzYzIDEgIC91c3IvZ3Vlc3QgCmFlayBJSWlvWnk1aFQ3YzRvIDM2NSAxICAvdXNyL2d1ZXN0IAp0YWMgd000TXhhdWpwVWQ1RSAzNzcgMSBtaDAwMDAsbTAwMCAvdXNyL3RhYyAKandnIG0wZ3lXdk5wZnY1bWsgNDU0IDEgbWg4NjMyLG0zMzYgL3Vzci9qd2cgCmhhbmlhIGtVanBQVWhOTW1xcy4gNTAxIDEgIC91c3IvZ3Vlc3QgCmplcnEgRHIzb00vUzJwbDJqWSA1MDIgMSAgL3Vzci9qZXJxL3dyYXAgCmtqcyBRVktGQUxkZmd5Q3B3IDUwMyAxICAvdXNyL3Rncy9ranMgCmppbSBEUDZ0MFhWd2xXT3F3IDYzMiAxICAvdXNyL2d1ZXN0IApid2sxIHNlQlFJd0I2UlFxOXMgOTk5IDEgbWgxNTQ4LG0zMDEgL3Vzci9id2sgCmNsYWlyZSB0Nk0wdUR4Q0U3aDdFIDMyOCAxIG1oOTMyMyxtMTQ3IC91c3IvY2xhaXJlIAplZ2MgeFpYM1JRbTlSNHczLiAyOTcgMSBtMDAwMCxtMDAwIC91c3IvZWdjIApyb290IEZuWWsyQVJvU3F5NXMgMCAxIG0wMTMwLG0zMjIgLyAKZGFlbW9uIHggMSAxIG0wMDAwLG0wMDAgLyAKc3lzIHNvcnJ5IDIgMiBtMDEzMCxtMzIyIC91c3Ivc3lzIApiaW4gc29ycnkgMyA0IG0wMTMwLG0zMjIgL2JpbiAKcmhtIEp4b2kvNVdSa2VTZjIgNSAxIG0wMTMwLG0zMjIgL3Vzci9ndWVzdCAKa2VuIFguNjh3ZDEuaWpheU0gNiAxIG0wMTMwLG0zMjIgL3Vzci9ndWVzdCAKZG1yIEM0dTNkSldiZzdSQ2sgNyAxIG1oMTA5MixtMDY5IC91c3IvZ3Vlc3QvZG1yIApkb3VnIEtpNzFjcldHeHcveU0gOCAxIG0xNjYwLG0wMjUgL3Vzci9ndWVzdCAKYndrIGNJL3hDVFFJaExpSXMgOSAxIG1oMTU0OCxtMzAxIC91c3IvYndrIApncmVnIGFQL2FTdnBydk56anMgMTAgMSBtMDEzMCxtMzIyIC91c3IvZ3Vlc3QgCnRkayBCcHFGWnhNMU9NOGZzIDEyIDEgbTAxMzAsbTMyMiAvdXNyL3RkayAKYXZhIDM5cEU1TTQ5N0F4eEEgMTUgMSBtMTM1NyxtMjQyIC91c3IvYXZhIApzY2ogeTkzN3BrUmkwVmtTUSAyNCAxIG01MTkwLG0yOTIgL3Vzci9ndWVzdCAKbWVsIFdkUjNJakdtdGF0cUUgMjYgMSBtMjAxOSxtMjg1LHBvdW5jZSxsZXNrIC91c3IvZ3Vlc3QgCmFnZiBYM3lRRGtpcVdtUEpnIDM0IDEgbTE2OTksbTI0NSAvdXNyL2d1ZXN0IApsbGMgWi9sMjVTMmdhRm43VSA0MSAxIG0xNjUwLG0zMjQgL3Vzci9ndWVzdCAKbGVtIEp1dmtTUVVFbHY3bUUgNDMgMSBtMDIyMCxtMTU3LGwgL3Vzci9ndWVzdCAKdXVjcCBzb3JyeSA0OCAxIG1oMjAxOSxtMjg1LG5vd2l0eiAvdXNyL3Nwb29sL3V1Y3AgCm51dWNwIHZSMS9xR1QwdFRtS1kgNDggMSBtaDIwMTksbTI4NSx1dWNwIC91c3Ivc3Bvb2wvdXVjcHB1YmxpYyAvdXNyL2xpYi91dWNwL3V1Y2ljbwpkdXVjcCBGdkxXSWduZjcvWXBzIDQ4IDEgbWgyMDE5LG0yODUsbm93aXR6IC91c3Ivc3Bvb2wvdXVjcCAKc3BtIE5lVUxnQXpjQ0lFN1EgNDkgMSBtMTk4OCxtMzIyIC91c3IvZ3Vlc3QgCm1iIDVxbVJNSDU1M2JOclEgODMgMSBtNTE2MyxtMjA3IC91c3IvZ3Vlc3QgCnNpZiBZRXhIMERwdnNQNnc2IDkxIDEgbTUxOTIsbTA0NCAvdXNyL2d1ZXN0IApkb3QgY1Roc1UuUXNJUk5ndyA5OSAxIG01NTc5LG0wNDggL3Vzci9ndWVzdCAKcmplIHRpMEpzUDFuNmZJTWMgMTA5IDEgbTU0MjksbTA5NixqYW5lIC91c3IvZ3Vlc3QgCnZnbCBTVWNUNWk1NFpyOTdNIDExMiAxIG01NTc5LG0wNDggL3Vzci9ndWVzdCAKanJ2IEdhb3YxRmFjd0pXUmsgMTE0IDEgbTM4ODcsbTIwNCAvdXNyL2d1ZXN0IApubHMgOGxaeW9vc0h2ODJzQSAxMzAgMSBtNDIxNixtMDUwIC91c3IvZ3Vlc3QgCm1ldCBDN2lOdi9ZTlV1SzRZIDEzMiAxIG02MjUxLG0zMjIgL3Vzci9ndWVzdCAKc3VlIENXU2F1ODJ6Q3g0VEkgMTU2IDEgbTI1OTEsbTE0OCwyYzU3NiAvdXNyL2d1ZXN0IApyYXZpIHJ2Sk5sazVqd0xYSzYgMTY3IDEgbTAwMDAsbTMyMiAvdXNyL2d1ZXN0IApwancgeE5ReS8vR0RhOEZGZyAxNzAgMSBtNjUzNCxtMzAxIC91c3IvZ3Vlc3QgL2Jpbi9jc2gKamhjIEZ1ZUphdS94R2g3VEkgMTcxIDEgIC91c3IvZ3Vlc3QgCmxjayBEUnc0cDBtc01MeERrIDE3MiAxIG02NTMyLG0xNDkgL3Vzci9ndWVzdCAKbW9oIGZXVkVmeHdJb3g4dGMgMjEzIDEgbTc4NDIsbTIxMixob21lIC91c3IvZ3Vlc3QgCmNtYiBqb1Z1UkY0ZGpnNUMuIDIxNCAxIG0xNjYwLG0wMjUgL3Vzci9ndWVzdCAKZGF2ZSBBQmZYaU8wY01jN3IuIDIyNSAxIG1oODQ1MSxtMDQwIC91c3IvZ3Vlc3QgCm1paGFsaXMgbXdaYThLWEhSemtxRSAyMzAgMSBtMjAxOSxtMjg1IC91c3IvbWloYWxpcyAKdGdzIFhSRzZ0QlBjejBrcTIgMjMxIDEgbWg3NDYxLG0wMjUgL3Vzci90Z3MgL3Vzci9jdncvYmluL3NoCnV1Y3BhIFRxajlwN01iU2NrV00gMjM4IDEgbWgyMDE5LG0yODUsdXVjcCAvdXNyL3Nwb29sL3V1Y3BwdWJsaWMgL3Vzci9saWIvdXVjcC91dWNpY28KYnMgZlJ3UWI1ZDlPR0tmNiAyNTEgMSBtMzg4NyxtMjA0IC91c3IvZ3Vlc3QgCndzYiBGQVY5WVl6OHA5RTdBIDI1NCAxIG0yNTkxLG0xNDggL3Vzci9ndWVzdCAKdXVjcGIgQTNtUndEUTkzL2c2byAyNTkgMSBtaDAwMDAsbTAwMCAvdXNyL3Nwb29sL3V1Y3BwdWJsaWMgL3Vzci9saWIvdXVjcC91dWNpY28KY3Z3IFF5QVl5dE9mVmx3VTYgMjY2IDEgbWgxNTQ4LG0zMDEgL3Vzci9jdncgL3Vzci9jdncvYmluL3NoCmJzYiAyb3ZXOFJWVHRDSm5jIDI2OCAxIG1oODA5MixtMTUwIC91c3IvYnNiIApkc2ogVVdhd1czaE4wc3hBTSAyNzYgMSBtaDY3ODQsbTE2NCAvdXNyL2RzaiAKbXJnIHM2SGczMkZyaE9BVHMgMjc3IDEgbWg2Nzg0LG0xNjQgL3Vzci9tcmcgCmx3ZiBGRjI3YWtBako1TU9zIDI4MSAxIG1oODA4NSxtaDEwMixsd2YgL3Vzci9ndWVzdCAKa2FtIHplL2s2OE1zM2R0aGcgMjg3IDEgbTU1NzksbTA0OCAvdXNyL2d1ZXN0IAplanMgL2N5QlVrYlcuRDd1VSAyOTAgMSBtMDAwMCxtMDAwIC91c3IvZ3Vlc3QgCmFyayB6L0lnRUFRWUlCcE93OjI5MjoxOm1oNjk0NyxtMjE1LGFyazovdXNyL2FyazoKa2ZjIDdXNlpkaUR3YjNrWmM6MzAzOjE6bTY1ODEsbTI2NjovdXNyL2d1ZXN0Ogpyb2IgeE9rbWtjT2UzTnJnYzozMDQ6MTptMDEzMCxtMzIyOi91c3IvZ3Vlc3Q6CnRoZW8gY3NjV3U4c1k3TFhhTTozMDc6MTptODQxNyxtMTY5Oi91c3IvZ3Vlc3Q6L2Jpbi9zaApkanIgMUprL1k3MjlnWk9TNjozMDk6MTpNNzcwMSxNMDk3Oi91c3IvZ3Vlc3Q6CndtYyA5SWpVSUthSDlKM0JROjMxMjoxOm1oODQ0NCxtMDUwLHdtY286L3Vzci9ndWVzdDoKYmFydCAvakVkcXVUS1cueXRNOjMxMzoxOjovdXNyL2d1ZXN0Oi9iaW4vc2gKc2FsbHkgQi9mU1BUb1dlcDVEUTozMTQ6MTo6L3Vzci9ndWVzdDovYmluL3NoCmVoZyBrRERtVjdFVjZSZ2IyOjMyMDoxOm1oODczMixtMDUwLGVoZzovdXNyL2VoZzoKZGRzIG03UW1ZTk10Z2o4OWc6MzI0OjE6Oi91c3IvZGRzOgpsaWJyIHNvcnJ5OjMzMDoxOjovdXNyL21lbC9ib29rczoKZGJtIDdBZThkRE5tVDAwYkk6MzM0OjE6bTg4OTYsbTA5MTovdXNyL2d1ZXN0Ogpzcm0gdzd0MWR4aW1lN3Y2RTozNjI6MTo6L3Vzci9zcm06Y3NoCmpraCBlOWZ1aU9GYkZJU09rOjM2MzoxOjovdXNyL2d1ZXN0OgphZWsgSUlpb1p5NWhUN2M0bzozNjU6MTo6L3Vzci9ndWVzdDoKdGFjIHdNNE14YXVqcFVkNUU6Mzc3OjE6bWgwMDAwLG0wMDA6L3Vzci90YWM6Cmp3ZyBtMGd5V3ZOcGZ2NW1rOjQ1NDoxOm1oODYzMixtMzM2Oi91c3IvandnOgpoYW5pYSBrVWpwUFVoTk1tcXMuOjUwMToxOjovdXNyL2d1ZXN0OgpqZXJxIERyM29NL1MycGwyalk6NTAyOjE6Oi91c3IvamVycS93cmFwOgpranMgUVZLRkFMZGZneUNwdzo1MDM6MTo6L3Vzci90Z3Mva2pzOgpqaW0gRFA2dDBYVndsV09xdzo2MzI6MTo6L3Vzci9ndWVzdDoKYndrMSBzZUJRSXdCNlJRcTlzOjk5OToxOm1oMTU0OCxtMzAxOi91c3IvYndrOgpjbGFpcmUgdDZNMHVEeENFN2g3RTozMjg6MTptaDkzMjMsbTE0NzovdXNyL2NsYWlyZToKZWdjIHhaWDNSUW05UjR3My46Mjk3OjE6bTAwMDAsbTAwMDovdXNyL2VnYzoKcm9vdCBGbllrMkFSb1NxeTVzOjA6MTptMDEzMCxtMzIyOi86CmRhZW1vbiB4OjE6MTptMDAwMCxtMDAwOi86CnN5cyBzb3JyeToyOjI6bTAxMzAsbTMyMjovdXNyL3N5czoKYmluIHNvcnJ5OjM6NDptMDEzMCxtMzIyOi9iaW46CnJobSBKeG9pLzVXUmtlU2YyOjU6MTptMDEzMCxtMzIyOi91c3IvZ3Vlc3Q6CmtlbiBYLjY4d2QxLmlqYXlNOjY6MTptMDEzMCxtMzIyOi91c3IvZ3Vlc3Q6CmRtciBDNHUzZEpXYmc3UkNrOjc6MTptaDEwOTIsbTA2OTovdXNyL2d1ZXN0L2RtcjoKZG91ZyBLaTcxY3JXR3h3L3lNOjg6MTptMTY2MCxtMDI1Oi91c3IvZ3Vlc3Q6CmJ3ayBjSS94Q1RRSWhMaUlzOjk6MTptaDE1NDgsbTMwMTovdXNyL2J3azoKZ3JlZyBhUC9hU3ZwcnZOempzOjEwOjE6bTAxMzAsbTMyMjovdXNyL2d1ZXN0Ogp0ZGsgQnBxRlp4TTFPTThmczoxMjoxOm0wMTMwLG0zMjI6L3Vzci90ZGs6CmF2YSAzOXBFNU00OTdBeHhBOjE1OjE6bTEzNTcsbTI0MjovdXNyL2F2YToKc2NqIHk5Mzdwa1JpMFZrU1E6MjQ6MTptNTE5MCxtMjkyOi91c3IvZ3Vlc3Q6Cm1lbCBXZFIzSWpHbXRhdHFFOjI2OjE6bTIwMTksbTI4NSxwb3VuY2UsbGVzazovdXNyL2d1ZXN0OgphZ2YgWDN5UURraXFXbVBKZzozNDoxOm0xNjk5LG0yNDU6L3Vzci9ndWVzdDoKbGxjIFovbDI1UzJnYUZuN1U6NDE6MTptMTY1MCxtMzI0Oi91c3IvZ3Vlc3Q6CmxlbSBKdXZrU1FVRWx2N21FOjQzOjE6bTAyMjAsbTE1NyxsOi91c3IvZ3Vlc3Q6CnV1Y3Agc29ycnk6NDg6MTptaDIwMTksbTI4NSxub3dpdHo6L3Vzci9zcG9vbC91dWNwOgpudXVjcCB2UjEvcUdUMHRUbUtZOjQ4OjE6bWgyMDE5LG0yODUsdXVjcDovdXNyL3Nwb29sL3V1Y3BwdWJsaWM6L3Vzci9saWIvdXVjcC91dWNpY28KZHV1Y3AgRnZMV0lnbmY3L1lwczo0ODoxOm1oMjAxOSxtMjg1LG5vd2l0ejovdXNyL3Nwb29sL3V1Y3A6CnNwbSBOZVVMZ0F6Y0NJRTdROjQ5OjE6bTE5ODgsbTMyMjovdXNyL2d1ZXN0OgptYiA1cW1STUg1NTNiTnJROjgzOjE6bTUxNjMsbTIwNzovdXNyL2d1ZXN0OgpzaWYgWUV4SDBEcHZzUDZ3Njo5MToxOm01MTkyLG0wNDQ6L3Vzci9ndWVzdDoKZG90IGNUaHNVLlFzSVJOZ3c6OTk6MTptNTU3OSxtMDQ4Oi91c3IvZ3Vlc3Q6CnJqZSB0aTBKc1AxbjZmSU1jOjEwOToxOm01NDI5LG0wOTYsamFuZTovdXNyL2d1ZXN0Ogp2Z2wgU1VjVDVpNTRacjk3TToxMTI6MTptNTU3OSxtMDQ4Oi91c3IvZ3Vlc3Q6CmpydiBHYW92MUZhY3dKV1JrOjExNDoxOm0zODg3LG0yMDQ6L3Vzci9ndWVzdDoKbmxzIDhsWnlvb3NIdjgyc0E6MTMwOjE6bTQyMTYsbTA1MDovdXNyL2d1ZXN0OgptZXQgQzdpTnYvWU5VdUs0WToxMzI6MTptNjI1MSxtMzIyOi91c3IvZ3Vlc3Q6CnN1ZSBDV1NhdTgyekN4NFRJOjE1NjoxOm0yNTkxLG0xNDgsMmM1NzY6L3Vzci9ndWVzdDoKcmF2aSBydkpObGs1andMWEs2OjE2NzoxOm0wMDAwLG0zMjI6L3Vzci9ndWVzdDoKcGp3IHhOUXkvL0dEYThGRmc6MTcwOjE6bTY1MzQsbTMwMTovdXNyL2d1ZXN0Oi9iaW4vY3NoCmpoYyBGdWVKYXUveEdoN1RJOjE3MToxOjovdXNyL2d1ZXN0OgpsY2sgRFJ3NHAwbXNNTHhEazoxNzI6MTptNjUzMixtMTQ5Oi91c3IvZ3Vlc3Q6Cm1vaCBmV1ZFZnh3SW94OHRjOjIxMzoxOm03ODQyLG0yMTIsaG9tZTovdXNyL2d1ZXN0OgpjbWIgam9WdVJGNGRqZzVDLjoyMTQ6MTptMTY2MCxtMDI1Oi91c3IvZ3Vlc3Q6CmRhdmUgQUJmWGlPMGNNYzdyLjoyMjU6MTptaDg0NTEsbTA0MDovdXNyL2d1ZXN0OgptaWhhbGlzIG13WmE4S1hIUnprcUU6MjMwOjE6bTIwMTksbTI4NTovdXNyL21paGFsaXM6CnRncyBYUkc2dEJQY3owa3EyOjIzMToxOm1oNzQ2MSxtMDI1Oi91c3IvdGdzOi91c3IvY3Z3L2Jpbi9zaAp1dWNwYSBUcWo5cDdNYlNja1dNOjIzODoxOm1oMjAxOSxtMjg1LHV1Y3A6L3Vzci9zcG9vbC91dWNwcHVibGljOi91c3IvbGliL3V1Y3AvdXVjaWNvCmJzIGZSd1FiNWQ5T0dLZjY6MjUxOjE6bTM4ODcsbTIwNDovdXNyL2d1ZXN0Ogp3c2IgRkFWOVlZejhwOUU3QToyNTQ6MTptMjU5MSxtMTQ4Oi91c3IvZ3Vlc3Q6CnV1Y3BiIEEzbVJ3RFE5My9nNm86MjU5OjE6bWgwMDAwLG0wMDA6L3Vzci9zcG9vbC91dWNwcHVibGljOi91c3IvbGliL3V1Y3AvdXVjaWNvCmN2dyBReUFZeXRPZlZsd1U2OjI2NjoxOm1oMTU0OCxtMzAxOi91c3IvY3Z3Oi91c3IvY3Z3L2Jpbi9zaApic2IgMm92VzhSVlR0Q0puYzoyNjg6MTptaDgwOTIsbTE1MDovdXNyL2JzYjoKZHNqIFVXYXdXM2hOMHN4QU06Mjc2OjE6bWg2Nzg0LG0xNjQ6L3Vzci9kc2o6Cm1yZyBzNkhnMzJGcmhPQVRzOjI3NzoxOm1oNjc4NCxtMTY0Oi91c3IvbXJnOgpsd2YgRkYyN2FrQWpKNU1PczoyODE6MTptaDgwODUsbWgxMDIsbHdmOi91c3IvZ3Vlc3Q6CmthbSB6ZS9rNjhNczNkdGhnOjI4NzoxOm01NTc5LG0wNDg6L3Vzci9ndWVzdDoKZWpzIC9jeUJVa2JXLkQ3dVU6MjkwOjE6bTAwMDAsbTAwMDovdXNyL2d1ZXN0Ogphcmsgei9JZ0VBUVlJQnBPdzoyOTI6MTptaDY5NDcsbTIxNSxhcms6L3Vzci9hcms6CmtmYyA3VzZaZGlEd2Iza1pjOjMwMzoxOm02NTgxLG0yNjY6L3Vzci9ndWVzdDoKcm9iIHhPa21rY09lM05yZ2M6MzA0OjE6bTAxMzAsbTMyMjovdXNyL2d1ZXN0Ogp0aGVvIGNzY1d1OHNZN0xYYU06MzA3OjE6bTg0MTcsbTE2OTovdXNyL2d1ZXN0Oi9iaW4vc2gKZGpyIDFKay9ZNzI5Z1pPUzY6MzA5OjE6TTc3MDEsTTA5NzovdXNyL2d1ZXN0Ogp3bWMgOUlqVUlLYUg5SjNCUTozMTI6MTptaDg0NDQsbTA1MCx3bWNvOi91c3IvZ3Vlc3Q6CmJhcnQgL2pFZHF1VEtXLnl0TTozMTM6MTo6L3Vzci9ndWVzdDovYmluL3NoCnNhbGx5IEIvZlNQVG9XZXA1RFE6MzE0OjE6Oi91c3IvZ3Vlc3Q6L2Jpbi9zaAplaGcga0REbVY3RVY2UmdiMjozMjA6MTptaDg3MzIsbTA1MCxlaGc6L3Vzci9laGc6CmRkcyBtN1FtWU5NdGdqODlnOjMyNDoxOjovdXNyL2RkczoKbGliciBzb3JyeTozMzA6MTo6L3Vzci9tZWwvYm9va3M6CmRibSA3QWU4ZERObVQwMGJJOjMzNDoxOm04ODk2LG0wOTE6L3Vzci9ndWVzdDoKc3JtIHc3dDFkeGltZTd2NkU6MzYyOjE6Oi91c3Ivc3JtOmNzaApqa2ggZTlmdWlPRmJGSVNPazozNjM6MTo6L3Vzci9ndWVzdDoKYWVrIElJaW9aeTVoVDdjNG86MzY1OjE6Oi91c3IvZ3Vlc3Q6CnRhYyB3TTRNeGF1anBVZDVFOjM3NzoxOm1oMDAwMCxtMDAwOi91c3IvdGFjOgpqd2cgbTBneVd2TnBmdjVtazo0NTQ6MTptaDg2MzIsbTMzNjovdXNyL2p3ZzoKaGFuaWEga1VqcFBVaE5NbXFzLjo1MDE6MTo6L3Vzci9ndWVzdDoKamVycSBEcjNvTS9TMnBsMmpZOjUwMjoxOjovdXNyL2plcnEvd3JhcDoKa2pzIFFWS0ZBTGRmZ3lDcHc6NTAzOjE6Oi91c3IvdGdzL2tqczoKamltIERQNnQwWFZ3bFdPcXc6NjMyOjE6Oi91c3IvZ3Vlc3Q6CmJ3azEgc2VCUUl3QjZSUXE5czo5OTk6MTptaDE1NDgsbTMwMTovdXNyL2J3azoKY2xhaXJlIHQ2TTB1RHhDRTdoN0U6MzI4OjE6bWg5MzIzLG0xNDc6L3Vzci9jbGFpcmU6CmVnYyB4WlgzUlFtOVI0dzMuOjI5NzoxOm0wMDAwLG0wMDA6L3Vzci9lZ2M6CnJvb3QgRm5ZazJBUm9TcXk1czowOjE6bTAxMzAsbTMyMjovOgpkYWVtb24geDoxOjE6bTAwMDAsbTAwMDovOgpzeXMgc29ycnk6MjoyOm0wMTMwLG0zMjI6L3Vzci9zeXM6CmJpbiBzb3JyeTozOjQ6bTAxMzAsbTMyMjovYmluOgpyaG0gSnhvaS81V1JrZVNmMjo1OjE6bTAxMzAsbTMyMjovdXNyL2d1ZXN0OgprZW4gWC42OHdkMS5pamF5TTo2OjE6bTAxMzAsbTMyMjovdXNyL2d1ZXN0OgpkbXIgQzR1M2RKV2JnN1JDazo3OjE6bWgxMDkyLG0wNjk6L3Vzci9ndWVzdC9kbXI6CmRvdWcgS2k3MWNyV0d4dy95TTo4OjE6bTE2NjAsbTAyNTovdXNyL2d1ZXN0Ogpid2sgY0kveENUUUloTGlJczo5OjE6bWgxNTQ4LG0zMDE6L3Vzci9id2s6CmdyZWcgYVAvYVN2cHJ2TnpqczoxMDoxOm0wMTMwLG0zMjI6L3Vzci9ndWVzdDoKdGRrIEJwcUZaeE0xT004ZnM6MTI6MTptMDEzMCxtMzIyOi91c3IvdGRrOgphdmEgMzlwRTVNNDk3QXh4QToxNToxOm0xMzU3LG0yNDI6L3Vzci9hdmE6CnNjaiB5OTM3cGtSaTBWa1NROjI0OjE6bTUxOTAsbTI5MjovdXNyL2d1ZXN0OgptZWwgV2RSM0lqR210YXRxRToyNjoxOm0yMDE5LG0yODUscG91bmNlLGxlc2s6L3Vzci9ndWVzdDoKYWdmIFgzeVFEa2lxV21QSmc6MzQ6MTptMTY5OSxtMjQ1Oi91c3IvZ3Vlc3Q6CmxsYyBaL2wyNVMyZ2FGbjdVOjQxOjE6bTE2NTAsbTMyNDovdXNyL2d1ZXN0OgpsZW0gSnV2a1NRVUVsdjdtRTo0MzoxOm0wMjIwLG0xNTcsbDovdXNyL2d1ZXN0Ogp1dWNwIHNvcnJ5OjQ4OjE6bWgyMDE5LG0yODUsbm93aXR6Oi91c3Ivc3Bvb2wvdXVjcDoKbnV1Y3AgdlIxL3FHVDB0VG1LWTo0ODoxOm1oMjAxOSxtMjg1LHV1Y3A6L3Vzci9zcG9vbC91dWNwcHVibGljOi91c3IvbGliL3V1Y3AvdXVjaWNvCmR1dWNwIEZ2TFdJZ25mNy9ZcHM6NDg6MTptaDIwMTksbTI4NSxub3dpdHo6L3Vzci9zcG9vbC91dWNwOgpzcG0gTmVVTGdBemNDSUU3UTo0OToxOm0xOTg4LG0zMjI6L3Vzci9ndWVzdDoKbWIgNXFtUk1INTUzYk5yUTo4MzoxOm01MTYzLG0yMDc6L3Vzci9ndWVzdDoKc2lmIFlFeEgwRHB2c1A2dzY6OTE6MTptNTE5MixtMDQ0Oi91c3IvZ3Vlc3Q6CmRvdCBjVGhzVS5Rc0lSTmd3Ojk5OjE6bTU1NzksbTA0ODovdXNyL2d1ZXN0OgpyamUgdGkwSnNQMW42ZklNYzoxMDk6MTptNTQyOSxtMDk2LGphbmU6L3Vzci9ndWVzdDoKdmdsIFNVY1Q1aTU0WnI5N006MTEyOjE6bTU1NzksbTA0ODovdXNyL2d1ZXN0OgpqcnYgR2FvdjFGYWN3SldSazoxMTQ6MTptMzg4NyxtMjA0Oi91c3IvZ3Vlc3Q6Cm5scyA4bFp5b29zSHY4MnNBOjEzMDoxOm00MjE2LG0wNTA6L3Vzci9ndWVzdDoKbWV0IEM3aU52L1lOVXVLNFk6MTMyOjE6bTYyNTEsbTMyMjovdXNyL2d1ZXN0OgpzdWUgQ1dTYXU4MnpDeDRUSToxNTY6MTptMjU5MSxtMTQ4LDJjNTc2Oi91c3IvZ3Vlc3Q6CnJhdmkgcnZKTmxrNWp3TFhLNjoxNjc6MTptMDAwMCxtMzIyOi91c3IvZ3Vlc3Q6CnBqdyB4TlF5Ly9HRGE4RkZnOjE3MDoxOm02NTM0LG0zMDE6L3Vzci9ndWVzdDovYmluL2NzaApqaGMgRnVlSmF1L3hHaDdUSToxNzE6MTo6L3Vzci9ndWVzdDoKbGNrIERSdzRwMG1zTUx4RGs6MTcyOjE6bTY1MzIsbTE0OTovdXNyL2d1ZXN0Ogptb2ggZldWRWZ4d0lveDh0YzoyMTM6MTptNzg0MixtMjEyLGhvbWU6L3Vzci9ndWVzdDoKY21iIGpvVnVSRjRkamc1Qy46MjE0OjE6bTE2NjAsbTAyNTovdXNyL2d1ZXN0OgpkYXZlIEFCZlhpTzBjTWM3ci46MjI1OjE6bWg4NDUxLG0wNDA6L3Vzci9ndWVzdDoKbWloYWxpcyBtd1phOEtYSFJ6a3FFOjIzMDoxOm0yMDE5LG0yODU6L3Vzci9taWhhbGlzOgp0Z3MgWFJHNnRCUGN6MGtxMjoyMzE6MTptaDc0NjEsbTAyNTovdXNyL3RnczovdXNyL2N2dy9iaW4vc2gKdXVjcGEgVHFqOXA3TWJTY2tXTToyMzg6MTptaDIwMTksbTI4NSx1dWNwOi91c3Ivc3Bvb2wvdXVjcHB1YmxpYzovdXNyL2xpYi91dWNwL3V1Y2ljbwpicyBmUndRYjVkOU9HS2Y2OjI1MToxOm0zODg3LG0yMDQ6L3Vzci9ndWVzdDoKd3NiIEZBVjlZWXo4cDlFN0E6MjU0OjE6bTI1OTEsbTE0ODovdXNyL2d1ZXN0Ogp1dWNwYiBBM21Sd0RROTMvZzZvOjI1OToxOm1oMDAwMCxtMDAwOi91c3Ivc3Bvb2wvdXVjcHB1YmxpYzovdXNyL2xpYi91dWNwL3V1Y2ljbwpjdncgUXlBWXl0T2ZWbHdVNjoyNjY6MTptaDE1NDgsbTMwMTovdXNyL2N2dzovdXNyL2N2dy9iaW4vc2gKYnNiIDJvdlc4UlZUdENKbmM6MjY4OjE6bWg4MDkyLG0xNTA6L3Vzci9ic2I6CmRzaiBVV2F3VzNoTjBzeEFNOjI3NjoxOm1oNjc4NCxtMTY0Oi91c3IvZHNqOgptcmcgczZIZzMyRnJoT0FUczoyNzc6MTptaDY3ODQsbTE2NDovdXNyL21yZzoKbHdmIEZGMjdha0FqSjVNT3M6MjgxOjE6bWg4MDg1LG1oMTAyLGx3ZjovdXNyL2d1ZXN0OgprYW0gemUvazY4TXMzZHRoZzoyODc6MTptNTU3OSxtMDQ4Oi91c3IvZ3Vlc3Q6CmVqcyAvY3lCVWtiVy5EN3VVOjI5MDoxOm0wMDAwLG0wMDA6L3Vzci9ndWVzdDoKYXJrIHovSWdFQVFZSUJwT3c6MjkyOjE6bWg2OTQ3LG0yMTUsYXJrOi91c3IvYXJrOgprZmMgN1c2WmRpRHdiM2taYzozMDM6MTptNjU4MSxtMjY2Oi91c3IvZ3Vlc3Q6CnJvYiB4T2tta2NPZTNOcmdjOjMwNDoxOm0wMTMwLG0zMjI6L3Vzci9ndWVzdDoKdGhlbyBjc2NXdThzWTdMWGFNOjMwNzoxOm04NDE3LG0xNjk6L3Vzci9ndWVzdDovYmluL3NoCmRqciAxSmsvWTcyOWdaT1M2OjMwOToxOk03NzAxLE0wOTc6L3Vzci9ndWVzdDoKd21jIDlJalVJS2FIOUozQlE6MzEyOjE6bWg4NDQ0LG0wNTAsd21jbzovdXNyL2d1ZXN0OgpiYXJ0IC9qRWRxdVRLVy55dE06MzEzOjE6Oi91c3IvZ3Vlc3Q6L2Jpbi9zaApzYWxseSBCL2ZTUFRvV2VwNURROjMxNDoxOjovdXNyL2d1ZXN0Oi9iaW4vc2gKZWhnIGtERG1WN0VWNlJnYjI6MzIwOjE6bWg4NzMyLG0wNTAsZWhnOi91c3IvZWhnOgpkZHMgbTdRbVlOTXRnajg5ZzozMjQ6MTo6L3Vzci9kZHM6CmxpYnIgc29ycnk6MzMwOjE6Oi91c3IvbWVsL2Jvb2tzOgpkYm0gN0FlOGRETm1UMDBiSTozMzQ6MTptODg5NixtMDkxOi91c3IvZ3Vlc3Q6CnNybSB3N3QxZHhpbWU3djZFOjM2MjoxOjovdXNyL3NybTpjc2gKamtoIGU5ZnVpT0ZiRklTT2s6MzYzOjE6Oi91c3IvZ3Vlc3Q6CmFlayBJSWlvWnk1aFQ3YzRvOjM2NToxOjovdXNyL2d1ZXN0Ogp0YWMgd000TXhhdWpwVWQ1RTozNzc6MTptaDAwMDAsbTAwMDovdXNyL3RhYzoKandnIG0wZ3lXdk5wZnY1bWs6NDU0OjE6bWg4NjMyLG0zMzY6L3Vzci9qd2c6CmhhbmlhIGtVanBQVWhOTW1xcy46NTAxOjE6Oi91c3IvZ3Vlc3Q6CmplcnEgRHIzb00vUzJwbDJqWTo1MDI6MTo6L3Vzci9qZXJxL3dyYXA6CmtqcyBRVktGQUxkZmd5Q3B3OjUwMzoxOjovdXNyL3Rncy9ranM6CmppbSBEUDZ0MFhWd2xXT3F3OjYzMjoxOjovdXNyL2d1ZXN0Ogpid2sxIHNlQlFJd0I2UlFxOXM6OTk5OjE6bWgxNTQ4LG0zMDE6L3Vzci9id2s6CmNsYWlyZSB0Nk0wdUR4Q0U3aDdFOjMyODoxOm1oOTMyMyxtMTQ3Oi91c3IvY2xhaXJlOgplZ2MgeFpYM1JRbTlSNHczLjoyOTc6MTptMDAwMCxtMDAwOi91c3IvZWdjOgpyb290IEZuWWsyQVJvU3F5NXM6MDoxOm0wMTMwLG0zMjI6LzoKZGFlbW9uIHg6MToxOm0wMDAwLG0wMDA6LzoKc3lzIHNvcnJ5OjI6MjptMDEzMCxtMzIyOi91c3Ivc3lzOgpiaW4gc29ycnk6Mzo0Om0wMTMwLG0zMjI6L2JpbjoKcmhtIEp4b2kvNVdSa2VTZjI6NToxOm0wMTMwLG0zMjI6L3Vzci9ndWVzdDoKa2VuIFguNjh3ZDEuaWpheU06NjoxOm0wMTMwLG0zMjI6L3Vzci9ndWVzdDoKZG1yIEM0dTNkSldiZzdSQ2s6NzoxOm1oMTA5MixtMDY5Oi91c3IvZ3Vlc3QvZG1yOgpkb3VnIEtpNzFjcldHeHcveU06ODoxOm0xNjYwLG0wMjU6L3Vzci9ndWVzdDoKYndrIGNJL3hDVFFJaExpSXM6OToxOm1oMTU0OCxtMzAxOi91c3IvYndrOgpncmVnIGFQL2FTdnBydk56anM6MTA6MTptMDEzMCxtMzIyOi91c3IvZ3Vlc3Q6CnRkayBCcHFGWnhNMU9NOGZzOjEyOjE6bTAxMzAsbTMyMjovdXNyL3RkazoKYXZhIDM5cEU1TTQ5N0F4eEE6MTU6MTptMTM1NyxtMjQyOi91c3IvYXZhOgpzY2ogeTkzN3BrUmkwVmtTUToyNDoxOm01MTkwLG0yOTI6L3Vzci9ndWVzdDoKbWVsIFdkUjNJakdtdGF0cUU6MjY6MTptMjAxOSxtMjg1LHBvdW5jZSxsZXNrOi91c3IvZ3Vlc3Q6CmFnZiBYM3lRRGtpcVdtUEpnOjM0OjE6bTE2OTksbTI0NTovdXNyL2d1ZXN0OgpsbGMgWi9sMjVTMmdhRm43VTo0MToxOm0xNjUwLG0zMjQ6L3Vzci9ndWVzdDoKbGVtIEp1dmtTUVVFbHY3bUU6NDM6MTptMDIyMCxtMTU3LGw6L3Vzci9ndWVzdDoKdXVjcCBzb3JyeTo0ODoxOm1oMjAxOSxtMjg1LG5vd2l0ejovdXNyL3Nwb29sL3V1Y3A6Cm51dWNwIHZSMS9xR1QwdFRtS1k6NDg6MTptaDIwMTksbTI4NSx1dWNwOi91c3Ivc3Bvb2wvdXVjcHB1YmxpYzovdXNyL2xpYi91dWNwL3V1Y2ljbwpkdXVjcCBGdkxXSWduZjcvWXBzOjQ4OjE6bWgyMDE5LG0yODUsbm93aXR6Oi91c3Ivc3Bvb2wvdXVjcDoKc3BtIE5lVUxnQXpjQ0lFN1E6NDk6MTptMTk4OCxtMzIyOi91c3IvZ3Vlc3Q6Cm1iIDVxbVJNSDU1M2JOclE6ODM6MTptNTE2MyxtMjA3Oi91c3IvZ3Vlc3Q6CnNpZiBZRXhIMERwdnNQNnc2OjkxOjE6bTUxOTIsbTA0NDovdXNyL2d1ZXN0Ogpkb3QgY1Roc1UuUXNJUk5ndzo5OToxOm01NTc5LG0wNDg6L3Vzci9ndWVzdDoKcmplIHRpMEpzUDFuNmZJTWM6MTA5OjE6bTU0MjksbTA5NixqYW5lOi91c3IvZ3Vlc3Q6CnZnbCBTVWNUNWk1NFpyOTdNOjExMjoxOm01NTc5LG0wNDg6L3Vzci9ndWVzdDoKanJ2IEdhb3YxRmFjd0pXUms6MTE0OjE6bTM4ODcsbTIwNDovdXNyL2d1ZXN0OgpubHMgOGxaeW9vc0h2ODJzQToxMzA6MTptNDIxNixtMDUwOi91c3IvZ3Vlc3Q6Cm1ldCBDN2lOdi9ZTlV1SzRZOjEzMjoxOm02MjUxLG0zMjI6L3Vzci9ndWVzdDoKc3VlIENXU2F1ODJ6Q3g0VEk6MTU2OjE6bTI1OTEsbTE0OCwyYzU3NjovdXNyL2d1ZXN0OgpyYXZpIHJ2Sk5sazVqd0xYSzY6MTY3OjE6bTAwMDAsbTMyMjovdXNyL2d1ZXN0OgpwancgeE5ReS8vR0RhOEZGZzoxNzA6MTptNjUzNCxtMzAxOi91c3IvZ3Vlc3Q6L2Jpbi9jc2gKamhjIEZ1ZUphdS94R2g3VEk6MTcxOjE6Oi91c3IvZ3Vlc3Q6CmxjayBEUnc0cDBtc01MeERrOjE3MjoxOm02NTMyLG0xNDk6L3Vzci9ndWVzdDoKbW9oIGZXVkVmeHdJb3g4dGM6MjEzOjE6bTc4NDIsbTIxMixob21lOi91c3IvZ3Vlc3Q6CmNtYiBqb1Z1UkY0ZGpnNUMuOjIxNDoxOm0xNjYwLG0wMjU6L3Vzci9ndWVzdDoKZGF2ZSBBQmZYaU8wY01jN3IuOjIyNToxOm1oODQ1MSxtMDQwOi91c3IvZ3Vlc3Q6Cm1paGFsaXMgbXdaYThLWEhSemtxRToyMzA6MTptMjAxOSxtMjg1Oi91c3IvbWloYWxpczoKdGdzIFhSRzZ0QlBjejBrcTI6MjMxOjE6bWg3NDYxLG0wMjU6L3Vzci90Z3M6L3Vzci9jdncvYmluL3NoCnV1Y3BhIFRxajlwN01iU2NrV006MjM4OjE6bWgyMDE5LG0yODUsdXVjcDovdXNyL3Nwb29sL3V1Y3BwdWJsaWM6L3Vzci9saWIvdXVjcC91dWNpY28KYnMgZlJ3UWI1ZDlPR0tmNjoyNTE6MTptMzg4NyxtMjA0Oi91c3IvZ3Vlc3Q6CndzYiBGQVY5WVl6OHA5RTdBOjI1NDoxOm0yNTkxLG0xNDg6L3Vzci9ndWVzdDoKdXVjcGIgQTNtUndEUTkzL2c2bzoyNTk6MTptaDAwMDAsbTAwMDovdXNyL3Nwb29sL3V1Y3BwdWJsaWM6L3Vzci9saWIvdXVjcC91dWNpY28KY3Z3IFF5QVl5dE9mVmx3VTY6MjY2OjE6bWgxNTQ4LG0zMDE6L3Vzci9jdnc6L3Vzci9jdncvYmluL3NoCmJzYiAyb3ZXOFJWVHRDSm5jOjI2ODoxOm1oODA5MixtMTUwOi91c3IvYnNiOgpkc2ogVVdhd1czaE4wc3hBTToyNzY6MTptaDY3ODQsbTE2NDovdXNyL2RzajoKbXJnIHM2SGczMkZyaE9BVHM6Mjc3OjE6bWg2Nzg0LG0xNjQ6L3Vzci9tcmc6Cmx3ZiBGRjI3YWtBako1TU9zOjI4MToxOm1oODA4NSxtaDEwMixsd2Y6L3Vzci9ndWVzdDoKa2FtIHplL2s2OE1zM2R0aGc6Mjg3OjE6bTU1NzksbTA0ODovdXNyL2d1ZXN0OgplanMgL2N5QlVrYlcuRDd1VToyOTA6MTptMDAwMCxtMDAwOi91c3IvZ3Vlc3Q6CmFyayB6L0lnRUFRWUlCcE93OjI5MjoxOm1oNjk0NyxtMjE1LGFyazovdXNyL2FyazoKa2ZjIDdXNlpkaUR3YjNrWmM6MzAzOjE6bTY1ODEsbTI2NjovdXNyL2d1ZXN0Ogpyb2IgeE9rbWtjT2UzTnJnYzozMDQ6MTptMDEzMCxtMzIyOi91c3IvZ3Vlc3Q6CnRoZW8gY3NjV3U4c1k3TFhhTTozMDc6MTptODQxNyxtMTY5Oi91c3IvZ3Vlc3Q6L2Jpbi9zaApkanIgMUprL1k3MjlnWk9TNjozMDk6MTpNNzcwMSxNMDk3Oi91c3IvZ3Vlc3Q6CndtYyA5SWpVSUthSDlKM0JROjMxMjoxOm1oODQ0NCxtMDUwLHdtY286L3Vzci9ndWVzdDoKYmFydCAvakVkcXVUS1cueXRNOjMxMzoxOjovdXNyL2d1ZXN0Oi9iaW4vc2gKc2FsbHkgQi9mU1BUb1dlcDVEUTozMTQ6MTo6L3Vzci9ndWVzdDovYmluL3NoCmVoZyBrRERtVjdFVjZSZ2IyOjMyMDoxOm1oODczMixtMDUwLGVoZzovdXNyL2VoZzoKZGRzIG03UW1ZTk10Z2o4OWc6MzI0OjE6Oi91c3IvZGRzOgpsaWJyIHNvcnJ5OjMzMDoxOjovdXNyL21lbC9ib29rczoKZGJtIDdBZThkRE5tVDAwYkk6MzM0OjE6bTg4OTYsbTA5MTovdXNyL2d1ZXN0Ogpzcm0gdzd0MWR4aW1lN3Y2RTozNjI6MTo6L3Vzci9zcm06Y3NoCmpraCBlOWZ1aU9GYkZJU09rOjM2MzoxOjovdXNyL2d1ZXN0OgphZWsgSUlpb1p5NWhUN2M0bzozNjU6MTo6L3Vzci9ndWVzdDoKdGFjIHdNNE14YXVqcFVkNUU6Mzc3OjE6bWgwMDAwLG0wMDA6L3Vzci90YWM6Cmp3ZyBtMGd5V3ZOcGZ2NW1rOjQ1NDoxOm1oODYzMixtMzM2Oi91c3IvandnOgpoYW5pYSBrVWpwUFVoTk1tcXMuOjUwMToxOjovdXNyL2d1ZXN0OgpqZXJxIERyM29NL1MycGwyalk6NTAyOjE6Oi91c3IvamVycS93cmFwOgpranMgUVZLRkFMZGZneUNwdzo1MDM6MTo6L3Vzci90Z3Mva2pzOgpqaW0gRFA2dDBYVndsV09xdzo2MzI6MTo6L3Vzci9ndWVzdDoKYndrMSBzZUJRSXdCNlJRcTlzOjk5OToxOm1oMTU0OCxtMzAxOi91c3IvYndrOgpjbGFpcmUgdDZNMHVEeENFN2g3RTozMjg6MTptaDkzMjMsbTE0NzovdXNyL2NsYWlyZToKZWdjIHhaWDNSUW05UjR3My46Mjk3OjE6bTAwMDAsbTAwMDovdXNyL2VnYzoKcm9vdCBGbllrMkFSb1NxeTVzOjA6MTptMDEzMCxtMzIyOi86CmRhZW1vbiB4OjE6MTptMDAwMCxtMDAwOi86CnN5cyBzb3JyeToyOjI6bTAxMzAsbTMyMjovdXNyL3N5czoKYmluIHNvcnJ5OjM6NDptMDEzMCxtMzIyOi9iaW46CnJobSBKeG9pLzVXUmtlU2YyOjU6MTptMDEzMCxtMzIyOi91c3IvZ3Vlc3Q6CmtlbiBYLjY4d2QxLmlqYXlNOjY6MTptMDEzMCxtMzIyOi91c3IvZ3Vlc3Q6CmRtciBDNHUzZEpXYmc3UkNrOjc6MTptaDEwOTIsbTA2OTovdXNyL2d1ZXN0L2RtcjoKZG91ZyBLaTcxY3JXR3h3L3lNOjg6MTptMTY2MCxtMDI1Oi91c3IvZ3Vlc3Q6CmJ3ayBjSS94Q1RRSWhMaUlzOjk6MTptaDE1NDgsbTMwMTovdXNyL2J3azoKZ3JlZyBhUC9hU3ZwcnZOempzOjEwOjE6bTAxMzAsbTMyMjovdXNyL2d1ZXN0Ogp0ZGsgQnBxRlp4TTFPTThmczoxMjoxOm0wMTMwLG0zMjI6L3Vzci90ZGs6CmF2YSAzOXBFNU00OTdBeHhBOjE1OjE6bTEzNTcsbTI0MjovdXNyL2F2YToKc2NqIHk5Mzdwa1JpMFZrU1E6MjQ6MTptNTE5MCxtMjkyOi91c3IvZ3Vlc3Q6Cm1lbCBXZFIzSWpHbXRhdHFFOjI2OjE6bTIwMTksbTI4NSxwb3VuY2UsbGVzazovdXNyL2d1ZXN0OgphZ2YgWDN5UURraXFXbVBKZzozNDoxOm0xNjk5LG0yNDU6L3Vzci9ndWVzdDoKbGxjIFovbDI1UzJnYUZuN1U6NDE6MTptMTY1MCxtMzI0Oi91c3IvZ3Vlc3Q6CmxlbSBKdXZrU1FVRWx2N21FOjQzOjE6bTAyMjAsbTE1NyxsOi91c3IvZ3Vlc3Q6CnV1Y3Agc29ycnk6NDg6MTptaDIwMTksbTI4NSxub3dpdHo6L3Vzci9zcG9vbC91dWNwOgpudXVjcCB2UjEvcUdUMHRUbUtZOjQ4OjE6bWgyMDE5LG0yODUsdXVjcDovdXNyL3Nwb29sL3V1Y3BwdWJsaWM6L3Vzci9saWIvdXVjcC91dWNpY28KZHV1Y3AgRnZMV0lnbmY3L1lwczo0ODoxOm1oMjAxOSxtMjg1LG5vd2l0ejovdXNyL3Nwb29sL3V1Y3A6CnNwbSBOZVVMZ0F6Y0NJRTdROjQ5OjE6bTE5ODgsbTMyMjovdXNyL2d1ZXN0OgptYiA1cW1STUg1NTNiTnJROjgzOjE6bTUxNjMsbTIwNzovdXNyL2d1ZXN0OgpzaWYgWUV4SDBEcHZzUDZ3Njo5MToxOm01MTkyLG0wNDQ6L3Vzci9ndWVzdDoKZG90IGNUaHNVLlFzSVJOZ3c6OTk6MTptNTU3OSxtMDQ4Oi91c3IvZ3Vlc3Q6CnJqZSB0aTBKc1AxbjZmSU1jOjEwOToxOm01NDI5LG0wOTYsamFuZTovdXNyL2d1ZXN0Ogp2Z2wgU1VjVDVpNTRacjk3TToxMTI6MTptNTU3OSxtMDQ4Oi91c3IvZ3Vlc3Q6CmpydiBHYW92MUZhY3dKV1JrOjExNDoxOm0zODg3LG0yMDQ6L3Vzci9ndWVzdDoKbmxzIDhsWnlvb3NIdjgyc0E6MTMwOjE6bTQyMTYsbTA1MDovdXNyL2d1ZXN0OgptZXQgQzdpTnYvWU5VdUs0WToxMzI6MTptNjI1MSxtMzIyOi91c3IvZ3Vlc3Q6CnN1ZSBDV1NhdTgyekN4NFRJOjE1NjoxOm0yNTkxLG0xNDgsMmM1NzY6L3Vzci9ndWVzdDoKcmF2aSBydkpObGs1andMWEs2OjE2NzoxOm0wMDAwLG0zMjI6L3Vzci9ndWVzdDoKcGp3IHhOUXkvL0dEYThGRmc6MTcwOjE6bTY1MzQsbTMwMTovdXNyL2d1ZXN0Oi9iaW4vY3NoCmpoYyBGdWVKYXUveEdoN1RJOjE3MToxOjovdXNyL2d1ZXN0OgpsY2sgRFJ3NHAwbXNNTHhEazoxNzI6MTptNjUzMixtMTQ5Oi91c3IvZ3Vlc3Q6Cm1vaCBmV1ZFZnh3SW94OHRjOjIxMzoxOm03ODQyLG0yMTIsaG9tZTovdXNyL2d1ZXN0OgpjbWIgam9WdVJGNGRqZzVDLjoyMTQ6MTptMTY2MCxtMDI1Oi91c3IvZ3Vlc3Q6CmRhdmUgQUJmWGlPMGNNYzdyLjoyMjU6MTptaDg0NTEsbTA0MDovdXNyL2d1ZXN0OgptaWhhbGlzIG13WmE4S1hIUnprcUU6MjMwOjE6bTIwMTksbTI4NTovdXNyL21paGFsaXM6CnRncyBYUkc2dEJQY3owa3EyOjIzMToxOm1oNzQ2MSxtMDI1Oi91c3IvdGdzOi91c3IvY3Z3L2Jpbi9zaAp1dWNwYSBUcWo5cDdNYlNja1dNOjIzODoxOm1oMjAxOSxtMjg1LHV1Y3A6L3Vzci9zcG9vbC91dWNwcHVibGljOi91c3IvbGliL3V1Y3AvdXVjaWNvCmJzIGZSd1FiNWQ5T0dLZjY6MjUxOjE6bTM4ODcsbTIwNDovdXNyL2d1ZXN0Ogp3c2IgRkFWOVlZejhwOUU3QToyNTQ6MTptMjU5MSxtMTQ4Oi91c3IvZ3Vlc3Q6CnV1Y3BiIEEzbVJ3RFE5My9nNm86MjU5OjE6bWgwMDAwLG0wMDA6L3Vzci9zcG9vbC91dWNwcHVibGljOi91c3IvbGliL3V1Y3AvdXVjaWNvCmN2dyBReUFZeXRPZlZsd1U2OjI2NjoxOm1oMTU0OCxtMzAxOi91c3IvY3Z3Oi91c3IvY3Z3L2Jpbi9zaApic2IgMm92VzhSVlR0Q0puYzoyNjg6MTptaDgwOTIsbTE1MDovdXNyL2JzYjoKZHNqIFVXYXdXM2hOMHN4QU06Mjc2OjE6bWg2Nzg0LG0xNjQ6L3Vzci9kc2o6Cm1yZyBzNkhnMzJGcmhPQVRzOjI3NzoxOm1oNjc4NCxtMTY0Oi91c3IvbXJnOgpsd2YgRkYyN2FrQWpKNU1PczoyODE6MTptaDgwODUsbWgxMDIsbHdmOi91c3IvZ3Vlc3Q6CmthbSB6ZS9rNjhNczNkdGhnOjI4NzoxOm01NTc5LG0wNDg6L3Vzci9ndWVzdDoKZWpzIC9jeUJVa2JXLkQ3dVU6MjkwOjE6bTAwMDAsbTAwMDovdXNyL2d1ZXN0Ogphcmsgei9JZ0VBUVlJQnBPdzoyOTI6MTptaDY5NDcsbTIxNSxhcms6L3Vzci9hcms6CmtmYyA3VzZaZGlEd2Iza1pjOjMwMzoxOm02NTgxLG0yNjY6L3Vzci9ndWVzdDoKcm9iIHhPa21rY09lM05yZ2M6MzA0OjE6bTAxMzAsbTMyMjovdXNyL2d1ZXN0Ogp0aGVvIGNzY1d1OHNZN0xYYU06MzA3OjE6bTg0MTcsbTE2OTovdXNyL2d1ZXN0Oi9iaW4vc2gKZGpyIDFKay9ZNzI5Z1pPUzY6MzA5OjE6TTc3MDEsTTA5NzovdXNyL2d1ZXN0Ogp3bWMgOUlqVUlLYUg5SjNCUTozMTI6MTptaDg0NDQsbTA1MCx3bWNvOi91c3IvZ3Vlc3Q6CmJhcnQgL2pFZHF1VEtXLnl0TTozMTM6MTo6L3Vzci9ndWVzdDovYmluL3NoCnNhbGx5IEIvZlNQVG9XZXA1RFE6MzE0OjE6Oi91c3IvZ3Vlc3Q6L2Jpbi9zaAplaGcga0REbVY3RVY2UmdiMjozMjA6MTptaDg3MzIsbTA1MCxlaGc6L3Vzci9laGc6CmRkcyBtN1FtWU5NdGdqODlnOjMyNDoxOjovdXNyL2RkczoKbGliciBzb3JyeTozMzA6MTo6L3Vzci9tZWwvYm9va3M6CmRibSA3QWU4ZERObVQwMGJJOjMzNDoxOm04ODk2LG0wOTE6L3Vzci9ndWVzdDoKc3JtIHc3dDFkeGltZTd2NkU6MzYyOjE6Oi91c3Ivc3JtOmNzaApqa2ggZTlmdWlPRmJGSVNPazozNjM6MTo6L3Vzci9ndWVzdDoKYWVrIElJaW9aeTVoVDdjNG86MzY1OjE6Oi91c3IvZ3Vlc3Q6CnRhYyB3TTRNeGF1anBVZDVFOjM3NzoxOm1oMDAwMCxtMDAwOi91c3IvdGFjOgpqd2cgbTBneVd2TnBmdjVtazo0NTQ6MTptaDg2MzIsbTMzNjovdXNyL2p3ZzoKaGFuaWEga1VqcFBVaE5NbXFzLjo1MDE6MTo6L3Vzci9ndWVzdDoKamVycSBEcjNvTS9TMnBsMmpZOjUwMjoxOjovdXNyL2plcnEvd3JhcDoKa2pzIFFWS0ZBTGRmZ3lDcHc6NTAzOjE6Oi91c3IvdGdzL2tqczoKamltIERQNnQwWFZ3bFdPcXc6NjMyOjE6Oi91c3IvZ3Vlc3Q6CmJ3azEgc2VCUUl3QjZSUXE5czo5OTk6MTptaDE1NDgsbTMwMTovdXNyL2J3azoKY2xhaXJlIHQ2TTB1RHhDRTdoN0U6MzI4OjE6bWg5MzIzLG0xNDc6L3Vzci9jbGFpcmU6CmVnYyB4WlgzUlFtOVI0dzMuOjI5NzoxOm0wMDAwLG0wMDA6L3Vzci9lZ2M6CnJvb3QgRm5ZazJBUm9TcXk1czowOjE6bTAxMzAsbTMyMjovOgpkYWVtb24geDoxOjE6bTAwMDAsbTAwMDovOgpzeXMgc29ycnk6MjoyOm0wMTMwLG0zMjI6L3Vzci9zeXM6CmJpbiBzb3JyeTozOjQ6bTAxMzAsbTMyMjovYmluOgpyaG0gSnhvaS81V1JrZVNmMjo1OjE6bTAxMzAsbTMyMjovdXNyL2d1ZXN0OgprZW4gWC42OHdkMS5pamF5TTo2OjE6bTAxMzAsbTMyMjovdXNyL2d1ZXN0OgpkbXIgQzR1M2RKV2JnN1JDazo3OjE6bWgxMDkyLG0wNjk6L3Vzci9ndWVzdC9kbXI6CmRvdWcgS2k3MWNyV0d4dy95TTo4OjE6bTE2NjAsbTAyNTovdXNyL2d1ZXN0Ogpid2sgY0kveENUUUloTGlJczo5OjE6bWgxNTQ4LG0zMDE6L3Vzci9id2s6CmdyZWcgYVAvYVN2cHJ2TnpqczoxMDoxOm0wMTMwLG0zMjI6L3Vzci9ndWVzdDoKdGRrIEJwcUZaeE0xT004ZnM6MTI6MTptMDEzMCxtMzIyOi91c3IvdGRrOgphdmEgMzlwRTVNNDk3QXh4QToxNToxOm0xMzU3LG0yNDI6L3Vzci9hdmE6CnNjaiB5OTM3cGtSaTBWa1NROjI0OjE6bTUxOTAsbTI5MjovdXNyL2d1ZXN0OgptZWwgV2RSM0lqR210YXRxRToyNjoxOm0yMDE5LG0yODUscG91bmNlLGxlc2s6L3Vzci9ndWVzdDoKYWdmIFgzeVFEa2lxV21QSmc6MzQ6MTptMTY5OSxtMjQ1Oi91c3IvZ3Vlc3Q6CmxsYyBaL2wyNVMyZ2FGbjdVOjQxOjE6bTE2NTAsbTMyNDovdXNyL2d1ZXN0OgpsZW0gSnV2a1NRVUVsdjdtRTo0MzoxOm0wMjIwLG0xNTcsbDovdXNyL2d1ZXN0Ogp1dWNwIHNvcnJ5OjQ4OjE6bWgyMDE5LG0yODUsbm93aXR6Oi91c3Ivc3Bvb2wvdXVjcDoKbnV1Y3AgdlIxL3FHVDB0VG1LWTo0ODoxOm1oMjAxOSxtMjg1LHV1Y3A6L3Vzci9zcG9vbC91dWNwcHVibGljOi91c3IvbGliL3V1Y3AvdXVjaWNvCmR1dWNwIEZ2TFdJZ25mNy9ZcHM6NDg6MTptaDIwMTksbTI4NSxub3dpdHo6L3Vzci9zcG9vbC91dWNwOgpzcG0gTmVVTGdBemNDSUU3UTo0OToxOm0xOTg4LG0zMjI6L3Vzci9ndWVzdDoKbWIgNXFtUk1INTUzYk5yUTo4MzoxOm01MTYzLG0yMDc6L3Vzci9ndWVzdDoKc2lmIFlFeEgwRHB2c1A2dzY6OTE6MTptNTE5MixtMDQ0Oi91c3IvZ3Vlc3Q6CmRvdCBjVGhzVS5Rc0lSTmd3Ojk5OjE6bTU1NzksbTA0ODovdXNyL2d1ZXN0OgpyamUgdGkwSnNQMW42ZklNYzoxMDk6MTptNTQyOSxtMDk2LGphbmU6L3Vzci9ndWVzdDoKdmdsIFNVY1Q1aTU0WnI5N006MTEyOjE6bTU1NzksbTA0ODovdXNyL2d1ZXN0OgpqcnYgR2FvdjFGYWN3SldSazoxMTQ6MTptMzg4NyxtMjA0Oi91c3IvZ3Vlc3Q6Cm5scyA4bFp5b29zSHY4MnNBOjEzMDoxOm00MjE2LG0wNTA6L3Vzci9ndWVzdDoKbWV0IEM3aU52L1lOVXVLNFk6MTMyOjE6bTYyNTEsbTMyMjovdXNyL2d1ZXN0OgpzdWUgQ1dTYXU4MnpDeDRUSToxNTY6MTptMjU5MSxtMTQ4LDJjNTc2Oi91c3IvZ3Vlc3Q6CnJhdmkgcnZKTmxrNWp3TFhLNjoxNjc6MTptMDAwMCxtMzIyOi91c3IvZ3Vlc3Q6CnBqdyB4TlF5Ly9HRGE4RkZnOjE3MDoxOm02NTM0LG0zMDE6L3Vzci9ndWVzdDovYmluL2NzaApqaGMgRnVlSmF1L3hHaDdUSToxNzE6MTo6L3Vzci9ndWVzdDoKbGNrIERSdzRwMG1zTUx4RGs6MTcyOjE6bTY1MzIsbTE0OTovdXNyL2d1ZXN0Ogptb2ggZldWRWZ4d0lveDh0YzoyMTM6MTptNzg0MixtMjEyLGhvbWU6L3Vzci9ndWVzdDoKY21iIGpvVnVSRjRkamc1Qy46MjE0OjE6bTE2NjAsbTAyNTovdXNyL2d1ZXN0OgpkYXZlIEFCZlhpTzBjTWM3ci46MjI1OjE6bWg4NDUxLG0wNDA6L3Vzci9ndWVzdDoKbWloYWxpcyBtd1phOEtYSFJ6a3FFOjIzMDoxOm0yMDE5LG0yODU6L3Vzci9taWhhbGlzOgp0Z3MgWFJHNnRCUGN6MGtxMjoyMzE6MTptaDc0NjEsbTAyNTovdXNyL3RnczovdXNyL2N2dy9iaW4vc2gKdXVjcGEgVHFqOXA3TWJTY2tXTToyMzg6MTptaDIwMTksbTI4NSx1dWNwOi91c3Ivc3Bvb2wvdXVjcHB1YmxpYzovdXNyL2xpYi91dWNwL3V1Y2ljbwpicyBmUndRYjVkOU9HS2Y2OjI1MToxOm0zODg3LG0yMDQ6L3Vzci9ndWVzdDoKd3NiIEZBVjlZWXo4cDlFN0E6MjU0OjE6bTI1OTEsbTE0ODovdXNyL2d1ZXN0Ogp1dWNwYiBBM21Sd0RROTMvZzZvOjI1OToxOm1oMDAwMCxtMDAwOi91c3Ivc3Bvb2wvdXVjcHB1YmxpYzovdXNyL2xpYi91dWNwL3V1Y2ljbwpjdncgUXlBWXl0T2ZWbHdVNjoyNjY6MTptaDE1NDgsbTMwMTovdXNyL2N2dzovdXNyL2N2dy9iaW4vc2gKYnNiIDJvdlc4UlZUdENKbmM6MjY4OjE6bWg4MDkyLG0xNTA6L3Vzci9ic2I6CmRzaiBVV2F3VzNoTjBzeEFNOjI3NjoxOm1oNjc4NCxtMTY0Oi91c3IvZHNqOgptcmcgczZIZzMyRnJoT0FUczoyNzc6MTptaDY3ODQsbTE2NDovdXNyL21yZzoKbHdmIEZGMjdha0FqSjVNT3M6MjgxOjE6bWg4MDg1LG1oMTAyLGx3ZjovdXNyL2d1ZXN0OgprYW0gemUvazY4TXMzZHRoZzoyODc6MTptNTU3OSxtMDQ4Oi91c3IvZ3Vlc3Q6CmVqcyAvY3lCVWtiVy5EN3VVOjI5MDoxOm0wMDAwLG0wMDA6L3Vzci9ndWVzdDoKYXJrIHovSWdFQVFZSUJwT3c6MjkyOjE6bWg2OTQ3LG0yMTUsYXJrOi91c3IvYXJrOgprZmMgN1c2WmRpRHdiM2taYzozMDM6MTptNjU4MSxtMjY2Oi91c3IvZ3Vlc3Q6CnJvYiB4T2tta2NPZTNOcmdjOjMwNDoxOm0wMTMwLG0zMjI6L3Vzci9ndWVzdDoKdGhlbyBjc2NXdThzWTdMWGFNOjMwNzoxOm04NDE3LG0xNjk6L3Vzci9ndWVzdDovYmluL3NoCmRqciAxSmsvWTcyOWdaT1M2OjMwOToxOk03NzAxLE0wOTc6L3Vzci9ndWVzdDoKd21jIDlJalVJS2FIOUozQlE6MzEyOjE6bWg4NDQ0LG0wNTAsd21jbzovdXNyL2d1ZXN0OgpiYXJ0IC9qRWRxdVRLVy55dE06MzEzOjE6Oi91c3IvZ3Vlc3Q6L2Jpbi9zaApzYWxseSBCL2ZTUFRvV2VwNURROjMxNDoxOjovdXNyL2d1ZXN0Oi9iaW4vc2gKZWhnIGtERG1WN0VWNlJnYjI6MzIwOjE6bWg4NzMyLG0wNTAsZWhnOi91c3IvZWhnOgpkZHMgbTdRbVlOTXRnajg5ZzozMjQ6MTo6L3Vzci9kZHM6CmxpYnIgc29ycnk6MzMwOjE6Oi91c3IvbWVsL2Jvb2tzOgpkYm0gN0FlOGRETm1UMDBiSTozMzQ6MTptODg5NixtMDkxOi91c3IvZ3Vlc3Q6CnNybSB3N3QxZHhpbWU3djZFOjM2MjoxOjovdXNyL3NybTpjc2gKamtoIGU5ZnVpT0ZiRklTT2s6MzYzOjE6Oi91c3IvZ3Vlc3Q6CmFlayBJSWlvWnk1aFQ3YzRvOjM2NToxOjovdXNyL2d1ZXN0Ogp0YWMgd000TXhhdWpwVWQ1RTozNzc6MTptaDAwMDAsbTAwMDovdXNyL3RhYzoKandnIG0wZ3lXdk5wZnY1bWs6NDU0OjE6bWg4NjMyLG0zMzY6L3Vzci9qd2c6CmhhbmlhIGtVanBQVWhOTW1xcy46NTAxOjE6Oi91c3IvZ3Vlc3Q6CmplcnEgRHIzb00vUzJwbDJqWTo1MDI6MTo6L3Vzci9qZXJxL3dyYXA6CmtqcyBRVktGQUxkZmd5Q3B3OjUwMzoxOjovdXNyL3Rncy9ranM6CmppbSBEUDZ0MFhWd2xXT3F3OjYzMjoxOjovdXNyL2d1ZXN0Ogpid2sxIHNlQlFJd0I2UlFxOXM6OTk5OjE6bWgxNTQ4LG0zMDE6L3Vzci9id2s6CmNsYWlyZSB0Nk0wdUR4Q0U3aDdFOjMyODoxOm1oOTMyMyxtMTQ3Oi91c3IvY2xhaXJlOgplZ2MgeFpYM1JRbTlSNHczLjoyOTc6MTptMDAwMCxtMDAwOi91c3IvZWdjOgpyb290IEZuWWsyQVJvU3F5NXM6MDoxOm0wMTMwLG0zMjI6LzoKZGFlbW9uIHg6MToxOm0wMDAwLG0wMDA6LzoKc3lzIHNvcnJ5OjI6MjptMDEzMCxtMzIyOi91c3Ivc3lzOgpiaW4gc29ycnk6Mzo0Om0wMTMwLG0zMjI6L2JpbjoKcmhtIEp4b2kvNVdSa2VTZjI6NToxOm0wMTMwLG0zMjI6L3Vzci9ndWVzdDoKa2VuIFguNjh3ZDEuaWpheU06NjoxOm0wMTMwLG0zMjI6L3Vzci9ndWVzdDoKZG1yIEM0dTNkSldiZzdSQ2s6NzoxOm1oMTA5MixtMDY5Oi91c3IvZ3Vlc3QvZG1yOgpkb3VnIEtpNzFjcldHeHcveU06ODoxOm0xNjYwLG0wMjU6L3Vzci9ndWVzdDoKYndrIGNJL3hDVFFJaExpSXM6OToxOm1oMTU0OCxtMzAxOi91c3IvYndrOgpncmVnIGFQL2FTdnBydk56anM6MTA6MTptMDEzMCxtMzIyOi91c3IvZ3Vlc3Q6CnRkayBCcHFGWnhNMU9NOGZzOjEyOjE6bTAxMzAsbTMyMjovdXNyL3RkazoKYXZhIDM5cEU1TTQ5N0F4eEE6MTU6MTptMTM1NyxtMjQyOi91c3IvYXZhOgpzY2ogeTkzN3BrUmkwVmtTUToyNDoxOm01MTkwLG0yOTI6L3Vzci9ndWVzdDoKbWVsIFdkUjNJakdtdGF0cUU6MjY6MTptMjAxOSxtMjg1LHBvdW5jZSxsZXNrOi91c3IvZ3Vlc3Q6CmFnZiBYM3lRRGtpcVdtUEpnOjM0OjE6bTE2OTksbTI0NTovdXNyL2d1ZXN0OgpsbGMgWi9sMjVTMmdhRm43VTo0MToxOm0xNjUwLG0zMjQ6L3Vzci9ndWVzdDoKbGVtIEp1dmtTUVVFbHY3bUU6NDM6MTptMDIyMCxtMTU3LGw6L3Vzci9ndWVzdDoKdXVjcCBzb3JyeTo0ODoxOm1oMjAxOSxtMjg1LG5vd2l0ejovdXNyL3Nwb29sL3V1Y3A6Cm51dWNwIHZSMS9xR1QwdFRtS1k6NDg6MTptaDIwMTksbTI4NSx1dWNwOi91c3Ivc3Bvb2wvdXVjcHB1YmxpYzovdXNyL2xpYi91dWNwL3V1Y2ljbwpkdXVjcCBGdkxXSWduZjcvWXBzOjQ4OjE6bWgyMDE5LG0yODUsbm93aXR6Oi91c3Ivc3Bvb2wvdXVjcDoKc3BtIE5lVUxnQXpjQ0lFN1E6NDk6MTptMTk4OCxtMzIyOi91c3IvZ3Vlc3Q6Cm1iIDVxbVJNSDU1M2JOclE6ODM6MTptNTE2MyxtMjA3Oi91c3IvZ3Vlc3Q6CnNpZiBZRXhIMERwdnNQNnc2OjkxOjE6bTUxOTIsbTA0NDovdXNyL2d1ZXN0Ogpkb3QgY1Roc1UuUXNJUk5ndzo5OToxOm01NTc5LG0wNDg6L3Vzci9ndWVzdDoKcmplIHRpMEpzUDFuNmZJTWM6MTA5OjE6bTU0MjksbTA5NixqYW5lOi91c3IvZ3Vlc3Q6CnZnbCBTVWNUNWk1NFpyOTdNOjExMjoxOm01NTc5LG0wNDg6L3Vzci9ndWVzdDoKanJ2IEdhb3YxRmFjd0pXUms6MTE0OjE6bTM4ODcsbTIwNDovdXNyL2d1ZXN0OgpubHMgOGxaeW9vc0h2ODJzQToxMzA6MTptNDIxNixtMDUwOi91c3IvZ3Vlc3Q6Cm1ldCBDN2lOdi9ZTlV1SzRZOjEzMjoxOm02MjUxLG0zMjI6L3Vzci9ndWVzdDoKc3VlIENXU2F1ODJ6Q3g0VEk6MTU2OjE6bTI1OTEsbTE0OCwyYzU3NjovdXNyL2d1ZXN0OgpyYXZpIHJ2Sk5sazVqd0xYSzY6MTY3OjE6bTAwMDAsbTMyMjovdXNyL2d1ZXN0OgpwancgeE5ReS8vR0RhOEZGZzoxNzA6MTptNjUzNCxtMzAxOi91c3IvZ3Vlc3Q6L2Jpbi9jc2gKamhjcm9vdCBGbllrMkFSb1NxeTVzIDAgMSBtMDEzMCxtMzIyIC8gCmRhZW1vbiB4IDEgMSBtMDAwMCxtMDAwIC8gCnN5cyBzb3JyeSAyIDIgbTAxMzAsbTMyMiAvdXNyL3N5cyAKYmluIHNvcnJ5IDMgNCBtMDEzMCxtMzIyIC9iaW4gCnJobSBKeG9pLzVXUmtlU2YyIDUgMSBtMDEzMCxtMzIyIC91c3IvZ3Vlc3QgCmtlbiBYLjY4d2QxLmlqYXlNIDYgMSBtMDEzMCxtMzIyIC91c3IvZ3Vlc3QgCmRtciBDNHUzZEpXYmc3UkNrIDcgMSBtaDEwOTIsbTA2OSAvdXNyL2d1ZXN0L2RtciAKZG91ZyBLaTcxY3JXR3h3L3lNIDggMSBtMTY2MCxtMDI1IC91c3IvZ3Vlc3QgCmJ3ayBjSS94Q1RRSWhMaUlzIDkgMSBtaDE1NDgsbTMwMSAvdXNyL2J3ayAKZ3JlZyBhUC9hU3ZwcnZOempzIDEwIDEgbTAxMzAsbTMyMiAvdXNyL2d1ZXN0IAp0ZGsgQnBxRlp4TTFPTThmcyAxMiAxIG0wMTMwLG0zMjIgL3Vzci90ZGsgCmF2YSAzOXBFNU00OTdBeHhBIDE1IDEgbTEzNTcsbTI0MiAvdXNyL2F2YSAKc2NqIHk5Mzdwa1JpMFZrU1EgMjQgMSBtNTE5MCxtMjkyIC91c3IvZ3Vlc3QgCm1lbCBXZFIzSWpHbXRhdHFFIDI2IDEgbTIwMTksbTI4NSxwb3VuY2UsbGVzayAvdXNyL2d1ZXN0IAphZ2YgWDN5UURraXFXbVBKZyAzNCAxIG0xNjk5LG0yNDUgL3Vzci9ndWVzdCAKbGxjIFovbDI1UzJnYUZuN1UgNDEgMSBtMTY1MCxtMzI0IC91c3IvZ3Vlc3QgCmxlbSBKdXZrU1FVRWx2N21FIDQzIDEgbTAyMjAsbTE1NyxsIC91c3IvZ3Vlc3QgCnV1Y3Agc29ycnkgNDggMSBtaDIwMTksbTI4NSxub3dpdHogL3Vzci9zcG9vbC91dWNwIApudXVjcCB2UjEvcUdUMHRUbUtZIDQ4IDEgbWgyMDE5LG0yODUsdXVjcCAvdXNyL3Nwb29sL3V1Y3BwdWJsaWMgL3Vzci9saWIvdXVjcC91dWNpY28KZHV1Y3AgRnZMV0lnbmY3L1lwcyA0OCAxIG1oMjAxOSxtMjg1LG5vd2l0eiAvdXNyL3Nwb29sL3V1Y3AgCnNwbSBOZVVMZ0F6Y0NJRTdRIDQ5IDEgbTE5ODgsbTMyMiAvdXNyL2d1ZXN0IAptYiA1cW1STUg1NTNiTnJRIDgzIDEgbTUxNjMsbTIwNyAvdXNyL2d1ZXN0IApzaWYgWUV4SDBEcHZzUDZ3NiA5MSAxIG01MTkyLG0wNDQgL3Vzci9ndWVzdCAKZG90IGNUaHNVLlFzSVJOZ3cgOTkgMSBtNTU3OSxtMDQ4IC91c3IvZ3Vlc3QgCnJqZSB0aTBKc1AxbjZmSU1jIDEwOSAxIG01NDI5LG0wOTYsamFuZSAvdXNyL2d1ZXN0IAp2Z2wgU1VjVDVpNTRacjk3TSAxMTIgMSBtNTU3OSxtMDQ4IC91c3IvZ3Vlc3QgCmpydiBHYW92MUZhY3dKV1JrIDExNCAxIG0zODg3LG0yMDQgL3Vzci9ndWVzdCAKbmxzIDhsWnlvb3NIdjgyc0EgMTMwIDEgbTQyMTYsbTA1MCAvdXNyL2d1ZXN0IAptZXQgQzdpTnYvWU5VdUs0WSAxMzIgMSBtNjI1MSxtMzIyIC91c3IvZ3Vlc3QgCnN1ZSBDV1NhdTgyekN4NFRJIDE1NiAxIG0yNTkxLG0xNDgsMmM1NzYgL3Vzci9ndWVzdCAKcmF2aSBydkpObGs1andMWEs2IDE2NyAxIG0wMDAwLG0zMjIgL3Vzci9ndWVzdCAKcGp3IHhOUXkvL0dEYThGRmcgMTcwIDEgbTY1MzQsbTMwMSAvdXNyL2d1ZXN0IC9iaW4vY3NoCmpoYyBGdWVKYXUveEdoN1RJIDE3MSAxICAvdXNyL2d1ZXN0IApsY2sgRFJ3NHAwbXNNTHhEayAxNzIgMSBtNjUzMixtMTQ5IC91c3IvZ3Vlc3QgCm1vaCBmV1ZFZnh3SW94OHRjIDIxMyAxIG03ODQyLG0yMTIsaG9tZSAvdXNyL2d1ZXN0IApjbWIgam9WdVJGNGRqZzVDLiAyMTQgMSBtMTY2MCxtMDI1IC91c3IvZ3Vlc3QgCmRhdmUgQUJmWGlPMGNNYzdyLiAyMjUgMSBtaDg0NTEsbTA0MCAvdXNyL2d1ZXN0IAptaWhhbGlzIG13WmE4S1hIUnprcUUgMjMwIDEgbTIwMTksbTI4NSAvdXNyL21paGFsaXMgCnRncyBYUkc2dEJQY3owa3EyIDIzMSAxIG1oNzQ2MSxtMDI1IC91c3IvdGdzIC91c3IvY3Z3L2Jpbi9zaAp1dWNwYSBUcWo5cDdNYlNja1dNIDIzOCAxIG1oMjAxOSxtMjg1LHV1Y3AgL3Vzci9zcG9vbC91dWNwcHVibGljIC91c3IvbGliL3V1Y3AvdXVjaWNvCmJzIGZSd1FiNWQ5T0dLZjYgMjUxIDEgbTM4ODcsbTIwNCAvdXNyL2d1ZXN0IAp3c2IgRkFWOVlZejhwOUU3QSAyNTQgMSBtMjU5MSxtMTQ4IC91c3IvZ3Vlc3QgCnV1Y3BiIEEzbVJ3RFE5My9nNm8gMjU5IDEgbWgwMDAwLG0wMDAgL3Vzci9zcG9vbC91dWNwcHVibGljIC91c3IvbGliL3V1Y3AvdXVjaWNvCmN2dyBReUFZeXRPZlZsd1U2IDI2NiAxIG1oMTU0OCxtMzAxIC91c3IvY3Z3IC91c3IvY3Z3L2Jpbi9zaApic2IgMm92VzhSVlR0Q0puYyAyNjggMSBtaDgwOTIsbTE1MCAvdXNyL2JzYiAKZHNqIFVXYXdXM2hOMHN4QU0gMjc2IDEgbWg2Nzg0LG0xNjQgL3Vzci9kc2ogCm1yZyBzNkhnMzJGcmhPQVRzIDI3NyAxIG1oNjc4NCxtMTY0IC91c3IvbXJnIApsd2YgRkYyN2FrQWpKNU1PcyAyODEgMSBtaDgwODUsbWgxMDIsbHdmIC91c3IvZ3Vlc3QgCmthbSB6ZS9rNjhNczNkdGhnIDI4NyAxIG01NTc5LG0wNDggL3Vzci9ndWVzdCAKZWpzIC9jeUJVa2JXLkQ3dVUgMjkwIDEgbTAwMDAsbTAwMCAvdXNyL2d1ZXN0IAphcmsgei9JZ0VBUVlJQnBPdyAyOTIgMSBtaDY5NDcsbTIxNSxhcmsgL3Vzci9hcmsgCmtmYyA3VzZaZGlEd2Iza1pjIDMwMyAxIG02NTgxLG0yNjYgL3Vzci9ndWVzdCAKcm9iIHhPa21rY09lM05yZ2MgMzA0IDEgbTAxMzAsbTMyMiAvdXNyL2d1ZXN0IAp0aGVvIGNzY1d1OHNZN0xYYU0gMzA3IDEgbTg0MTcsbTE2OSAvdXNyL2d1ZXN0IC9iaW4vc2gKZGpyIDFKay9ZNzI5Z1pPUzYgMzA5IDEgTTc3MDEsTTA5NyAvdXNyL2d1ZXN0IAp3bWMgOUlqVUlLYUg5SjNCUSAzMTIgMSBtaDg0NDQsbTA1MCx3bWNvIC91c3IvZ3Vlc3QgCmJhcnQgL2pFZHF1VEtXLnl0TSAzMTMgMSAgL3Vzci9ndWVzdCAvYmluL3NoCnNhbGx5IEIvZlNQVG9XZXA1RFEgMzE0IDEgIC91c3IvZ3Vlc3QgL2Jpbi9zaAplaGcga0REbVY3RVY2UmdiMiAzMjAgMSBtaDg3MzIsbTA1MCxlaGcgL3Vzci9laGcgCmRkcyBtN1FtWU5NdGdqODlnIDMyNCAxICAvdXNyL2RkcyAKbGliciBzb3JyeSAzMzAgMSAgL3Vzci9tZWwvYm9va3MgCmRibSA3QWU4ZERObVQwMGJJIDMzNCAxIG04ODk2LG0wOTEgL3Vzci9ndWVzdCAKc3JtIHc3dDFkeGltZTd2NkUgMzYyIDEgIC91c3Ivc3JtIGNzaApqa2ggZTlmdWlPRmJGSVNPayAzNjMgMSAgL3Vzci9ndWVzdCAKYWVrIElJaW9aeTVoVDdjNG8gMzY1IDEgIC91c3IvZ3Vlc3QgCnRhYyB3TTRNeGF1anBVZDVFIDM3NyAxIG1oMDAwMCxtMDAwIC91c3IvdGFjIApqd2cgbTBneVd2TnBmdjVtayA0NTQgMSBtaDg2MzIsbTMzNiAvdXNyL2p3ZyAKaGFuaWEga1VqcFBVaE5NbXFzLiA1MDEgMSAgL3Vzci9ndWVzdCAKamVycSBEcjNvTS9TMnBsMmpZIDUwMiAxICAvdXNyL2plcnEvd3JhcCAKa2pzIFFWS0ZBTGRmZ3lDcHcgNTAzIDEgIC91c3IvdGdzL2tqcyAKamltIERQNnQwWFZ3bFdPcXcgNjMyIDEgIC91c3IvZ3Vlc3QgCmJ3azEgc2VCUUl3QjZSUXE5cyA5OTkgMSBtaDE1NDgsbTMwMSAvdXNyL2J3ayAKY2xhaXJlIHQ2TTB1RHhDRTdoN0UgMzI4IDEgbWg5MzIzLG0xNDcgL3Vzci9jbGFpcmUgCmVnYyB4WlgzUlFtOVI0dzMuIDI5NyAxIG0wMDAwLG0wMDAgL3Vzci9lZ2MgCnJvb3QgRm5ZazJBUm9TcXk1cyAwIDEgbTAxMzAsbTMyMiAvIApkYWVtb24geCAxIDEgbTAwMDAsbTAwMCAvIApzeXMgc29ycnkgMiAyIG0wMTMwLG0zMjIgL3Vzci9zeXMgCmJpbiBzb3JyeSAzIDQgbTAxMzAsbTMyMiAvYmluIApyaG0gSnhvaS81V1JrZVNmMiA1IDEgbTAxMzAsbTMyMiAvdXNyL2d1ZXN0IAprZW4gWC42OHdkMS5pamF5TSA2IDEgbTAxMzAsbTMyMiAvdXNyL2d1ZXN0IApkbXIgQzR1M2RKV2JnN1JDayA3IDEgbWgxMDkyLG0wNjkgL3Vzci9ndWVzdC9kbXIgCmRvdWcgS2k3MWNyV0d4dy95TSA4IDEgbTE2NjAsbTAyNSAvdXNyL2d1ZXN0IApid2sgY0kveENUUUloTGlJcyA5IDEgbWgxNTQ4LG0zMDEgL3Vzci9id2sgCmdyZWcgYVAvYVN2cHJ2TnpqcyAxMCAxIG0wMTMwLG0zMjIgL3Vzci9ndWVzdCAKdGRrIEJwcUZaeE0xT004ZnMgMTIgMSBtMDEzMCxtMzIyIC91c3IvdGRrIAphdmEgMzlwRTVNNDk3QXh4QSAxNSAxIG0xMzU3LG0yNDIgL3Vzci9hdmEgCnNjaiB5OTM3cGtSaTBWa1NRIDI0IDEgbTUxOTAsbTI5MiAvdXNyL2d1ZXN0IAptZWwgV2RSM0lqR210YXRxRSAyNiAxIG0yMDE5LG0yODUscG91bmNlLGxlc2sgL3Vzci9ndWVzdCAKYWdmIFgzeVFEa2lxV21QSmcgMzQgMSBtMTY5OSxtMjQ1IC91c3IvZ3Vlc3QgCmxsYyBaL2wyNVMyZ2FGbjdVIDQxIDEgbTE2NTAsbTMyNCAvdXNyL2d1ZXN0IApsZW0gSnV2a1NRVUVsdjdtRSA0MyAxIG0wMjIwLG0xNTcsbCAvdXNyL2d1ZXN0IAp1dWNwIHNvcnJ5IDQ4IDEgbWgyMDE5LG0yODUsbm93aXR6IC91c3Ivc3Bvb2wvdXVjcCAKbnV1Y3AgdlIxL3FHVDB0VG1LWSA0OCAxIG1oMjAxOSxtMjg1LHV1Y3AgL3Vzci9zcG9vbC91dWNwcHVibGljIC91c3IvbGliL3V1Y3AvdXVjaWNvCmR1dWNwIEZ2TFdJZ25mNy9ZcHMgNDggMSBtaDIwMTksbTI4NSxub3dpdHogL3Vzci9zcG9vbC91dWNwIApzcG0gTmVVTGdBemNDSUU3USA0OSAxIG0xOTg4LG0zMjIgL3Vzci9ndWVzdCAKbWIgNXFtUk1INTUzYk5yUSA4MyAxIG01MTYzLG0yMDcgL3Vzci9ndWVzdCAKc2lmIFlFeEgwRHB2c1A2dzYgOTEgMSBtNTE5MixtMDQ0IC91c3IvZ3Vlc3QgCmRvdCBjVGhzVS5Rc0lSTmd3IDk5IDEgbTU1NzksbTA0OCAvdXNyL2d1ZXN0IApyamUgdGkwSnNQMW42ZklNYyAxMDkgMSBtNTQyOSxtMDk2LGphbmUgL3Vzci9ndWVzdCAKdmdsIFNVY1Q1aTU0WnI5N00gMTEyIDEgbTU1NzksbTA0OCAvdXNyL2d1ZXN0IApqcnYgR2FvdjFGYWN3SldSayAxMTQgMSBtMzg4NyxtMjA0IC91c3IvZ3Vlc3QgCm5scyA4bFp5b29zSHY4MnNBIDEzMCAxIG00MjE2LG0wNTAgL3Vzci9ndWVzdCAKbWV0IEM3aU52L1lOVXVLNFkgMTMyIDEgbTYyNTEsbTMyMiAvdXNyL2d1ZXN0IApzdWUgQ1dTYXU4MnpDeDRUSSAxNTYgMSBtMjU5MSxtMTQ4LDJjNTc2IC91c3IvZ3Vlc3QgCnJhdmkgcnZKTmxrNWp3TFhLNiAxNjcgMSBtMDAwMCxtMzIyIC91c3IvZ3Vlc3QgCnBqdyB4TlF5Ly9HRGE4RkZnIDE3MCAxIG02NTM0LG0zMDEgL3Vzci9ndWVzdCAvYmluL2NzaApqaGMgRnVlSmF1L3hHaDdUSSAxNzEgMSAgL3Vzci9ndWVzdCAKbGNrIERSdzRwMG1zTUx4RGsgMTcyIDEgbTY1MzIsbTE0OSAvdXNyL2d1ZXN0IAptb2ggZldWRWZ4d0lveDh0YyAyMTMgMSBtNzg0MixtMjEyLGhvbWUgL3Vzci9ndWVzdCAKY21iIGpvVnVSRjRkamc1Qy4gMjE0IDEgbTE2NjAsbTAyNSAvdXNyL2d1ZXN0IApkYXZlIEFCZlhpTzBjTWM3ci4gMjI1IDEgbWg4NDUxLG0wNDAgL3Vzci9ndWVzdCAKbWloYWxpcyBtd1phOEtYSFJ6a3FFIDIzMCAxIG0yMDE5LG0yODUgL3Vzci9taWhhbGlzIAp0Z3MgWFJHNnRCUGN6MGtxMiAyMzEgMSBtaDc0NjEsbTAyNSAvdXNyL3RncyAvdXNyL2N2dy9iaW4vc2gKdXVjcGEgVHFqOXA3TWJTY2tXTSAyMzggMSBtaDIwMTksbTI4NSx1dWNwIC91c3Ivc3Bvb2wvdXVjcHB1YmxpYyAvdXNyL2xpYi91dWNwL3V1Y2ljbwpicyBmUndRYjVkOU9HS2Y2IDI1MSAxIG0zODg3LG0yMDQgL3Vzci9ndWVzdCAKd3NiIEZBVjlZWXo4cDlFN0EgMjU0IDEgbTI1OTEsbTE0OCAvdXNyL2d1ZXN0IAp1dWNwYiBBM21Sd0RROTMvZzZvIDI1OSAxIG1oMDAwMCxtMDAwIC91c3Ivc3Bvb2wvdXVjcHB1YmxpYyAvdXNyL2xpYi91dWNwL3V1Y2ljbwpjdncgUXlBWXl0T2ZWbHdVNiAyNjYgMSBtaDE1NDgsbTMwMSAvdXNyL2N2dyAvdXNyL2N2dy9iaW4vc2gKYnNiIDJvdlc4UlZUdENKbmMgMjY4IDEgbWg4MDkyLG0xNTAgL3Vzci9ic2IgCmRzaiBVV2F3VzNoTjBzeEFNIDI3NiAxIG1oNjc4NCxtMTY0IC91c3IvZHNqIAptcmcgczZIZzMyRnJoT0FUcyAyNzcgMSBtaDY3ODQsbTE2NCAvdXNyL21yZyAKbHdmIEZGMjdha0FqSjVNT3MgMjgxIDEgbWg4MDg1LG1oMTAyLGx3ZiAvdXNyL2d1ZXN0IAprYW0gemUvazY4TXMzZHRoZyAyODcgMSBtNTU3OSxtMDQ4IC91c3IvZ3Vlc3QgCmVqcyAvY3lCVWtiVy5EN3VVIDI5MCAxIG0wMDAwLG0wMDAgL3Vzci9ndWVzdCAKYXJrIHovSWdFQVFZSUJwT3cgMjkyIDEgbWg2OTQ3LG0yMTUsYXJrIC91c3IvYXJrIAprZmMgN1c2WmRpRHdiM2taYyAzMDMgMSBtNjU4MSxtMjY2IC91c3IvZ3Vlc3QgCnJvYiB4T2tta2NPZTNOcmdjIDMwNCAxIG0wMTMwLG0zMjIgL3Vzci9ndWVzdCAKdGhlbyBjc2NXdThzWTdMWGFNIDMwNyAxIG04NDE3LG0xNjkgL3Vzci9ndWVzdCAvYmluL3NoCmRqciAxSmsvWTcyOWdaT1M2IDMwOSAxIE03NzAxLE0wOTcgL3Vzci9ndWVzdCAKd21jIDlJalVJS2FIOUozQlEgMzEyIDEgbWg4NDQ0LG0wNTAsd21jbyAvdXNyL2d1ZXN0IApiYXJ0IC9qRWRxdVRLVy55dE0gMzEzIDEgIC91c3IvZ3Vlc3QgL2Jpbi9zaApzYWxseSBCL2ZTUFRvV2VwNURRIDMxNCAxICAvdXNyL2d1ZXN0IC9iaW4vc2gKZWhnIGtERG1WN0VWNlJnYjIgMzIwIDEgbWg4NzMyLG0wNTAsZWhnIC91c3IvZWhnIApkZHMgbTdRbVlOTXRnajg5ZyAzMjQgMSAgL3Vzci9kZHMgCmxpYnIgc29ycnkgMzMwIDEgIC91c3IvbWVsL2Jvb2tzIApkYm0gN0FlOGRETm1UMDBiSSAzMzQgMSBtODg5NixtMDkxIC91c3IvZ3Vlc3QgCnNybSB3N3QxZHhpbWU3djZFIDM2MiAxICAvdXNyL3NybSBjc2gKamtoIGU5ZnVpT0ZiRklTT2sgMzYzIDEgIC91c3IvZ3Vlc3QgCmFlayBJSWlvWnk1aFQ3YzRvIDM2NSAxICAvdXNyL2d1ZXN0IAp0YWMgd000TXhhdWpwVWQ1RSAzNzcgMSBtaDAwMDAsbTAwMCAvdXNyL3RhYyAKandnIG0wZ3lXdk5wZnY1bWsgNDU0IDEgbWg4NjMyLG0zMzYgL3Vzci9qd2cgCmhhbmlhIGtVanBQVWhOTW1xcy4gNTAxIDEgIC91c3IvZ3Vlc3QgCmplcnEgRHIzb00vUzJwbDJqWSA1MDIgMSAgL3Vzci9qZXJxL3dyYXAgCmtqcyBRVktGQUxkZmd5Q3B3IDUwMyAxICAvdXNyL3Rncy9ranMgCmppbSBEUDZ0MFhWd2xXT3F3IDYzMiAxICAvdXNyL2d1ZXN0IApid2sxIHNlQlFJd0I2UlFxOXMgOTk5IDEgbWgxNTQ4LG0zMDEgL3Vzci9id2sgCmNsYWlyZSB0Nk0wdUR4Q0U3aDdFIDMyOCAxIG1oOTMyMyxtMTQ3IC91c3IvY2xhaXJlIAplZ2MgeFpYM1JRbTlSNHczLiAyOTcgMSBtMDAwMCxtMDAwIC91c3IvZWdjIApyb290IEZuWWsyQVJvU3F5NXMgMCAxIG0wMTMwLG0zMjIgLyAKZGFlbW9uIHggMSAxIG0wMDAwLG0wMDAgLyAKc3lzIHNvcnJ5IDIgMiBtMDEzMCxtMzIyIC91c3Ivc3lzIApiaW4gc29ycnkgMyA0IG0wMTMwLG0zMjIgL2JpbiAKcmhtIEp4b2kvNVdSa2VTZjIgNSAxIG0wMTMwLG0zMjIgL3Vzci9ndWVzdCAKa2VuIFguNjh3ZDEuaWpheU0gNiAxIG0wMTMwLG0zMjIgL3Vzci9ndWVzdCAKZG1yIEM0dTNkSldiZzdSQ2sgNyAxIG1oMTA5MixtMDY5IC91c3IvZ3Vlc3QvZG1yIApkb3VnIEtpNzFjcldHeHcveU0gOCAxIG0xNjYwLG0wMjUgL3Vzci9ndWVzdCAKYndrIGNJL3hDVFFJaExpSXMgOSAxIG1oMTU0OCxtMzAxIC91c3IvYndrIApncmVnIGFQL2FTdnBydk56anMgMTAgMSBtMDEzMCxtMzIyIC91c3IvZ3Vlc3QgCnRkayBCcHFGWnhNMU9NOGZzIDEyIDEgbTAxMzAsbTMyMiAvdXNyL3RkayAKYXZhIDM5cEU1TTQ5N0F4eEEgMTUgMSBtMTM1NyxtMjQyIC91c3IvYXZhIApzY2ogeTkzN3BrUmkwVmtTUSAyNCAxIG01MTkwLG0yOTIgL3Vzci9ndWVzdCAKbWVsIFdkUjNJakdtdGF0cUUgMjYgMSBtMjAxOSxtMjg1LHBvdW5jZSxsZXNrIC91c3IvZ3Vlc3QgCmFnZiBYM3lRRGtpcVdtUEpnIDM0IDEgbTE2OTksbTI0NSAvdXNyL2d1ZXN0IApsbGMgWi9sMjVTMmdhRm43VSA0MSAxIG0xNjUwLG0zMjQgL3Vzci9ndWVzdCAKbGVtIEp1dmtTUVVFbHY3bUUgNDMgMSBtMDIyMCxtMTU3LGwgL3Vzci9ndWVzdCAKdXVjcCBzb3JyeSA0OCAxIG1oMjAxOSxtMjg1LG5vd2l0eiAvdXNyL3Nwb29sL3V1Y3AgCm51dWNwIHZSMS9xR1QwdFRtS1kgNDggMSBtaDIwMTksbTI4NSx1dWNwIC91c3Ivc3Bvb2wvdXVjcHB1YmxpYyAvdXNyL2xpYi91dWNwL3V1Y2ljbwpkdXVjcCBGdkxXSWduZjcvWXBzIDQ4IDEgbWgyMDE5LG0yODUsbm93aXR6IC91c3Ivc3Bvb2wvdXVjcCAKc3BtIE5lVUxnQXpjQ0lFN1EgNDkgMSBtMTk4OCxtMzIyIC91c3IvZ3Vlc3QgCm1iIDVxbVJNSDU1M2JOclEgODMgMSBtNTE2MyxtMjA3IC91c3IvZ3Vlc3QgCnNpZiBZRXhIMERwdnNQNnc2IDkxIDEgbTUxOTIsbTA0NCAvdXNyL2d1ZXN0IApkb3QgY1Roc1UuUXNJUk5ndyA5OSAxIG01NTc5LG0wNDggL3Vzci9ndWVzdCAKcmplIHRpMEpzUDFuNmZJTWMgMTA5IDEgbTU0MjksbTA5NixqYW5lIC91c3IvZ3Vlc3QgCnZnbCBTVWNUNWk1NFpyOTdNIDExMiAxIG01NTc5LG0wNDggL3Vzci9ndWVzdCAKanJ2IEdhb3YxRmFjd0pXUmsgMTE0IDEgbTM4ODcsbTIwNCAvdXNyL2d1ZXN0IApubHMgOGxaeW9vc0h2ODJzQSAxMzAgMSBtNDIxNixtMDUwIC91c3IvZ3Vlc3QgCm1ldCBDN2lOdi9ZTlV1SzRZIDEzMiAxIG02MjUxLG0zMjIgL3Vzci9ndWVzdCAKc3VlIENXU2F1ODJ6Q3g0VEkgMTU2IDEgbTI1OTEsbTE0OCwyYzU3NiAvdXNyL2d1ZXN0IApyYXZpIHJ2Sk5sazVqd0xYSzYgMTY3IDEgbTAwMDAsbTMyMiAvdXNyL2d1ZXN0IApwancgeE5ReS8vR0RhOEZGZyAxNzAgMSBtNjUzNCxtMzAxIC91c3IvZ3Vlc3QgL2Jpbi9jc2gKamhjIEZ1ZUphdS94R2g3VEkgMTcxIDEgIC91c3IvZ3Vlc3QgCmxjayBEUnc0cDBtc01MeERrIDE3MiAxIG02NTMyLG0xNDkgL3Vzci9ndWVzdCAKbW9oIGZXVkVmeHdJb3g4dGMgMjEzIDEgbTc4NDIsbTIxMixob21lIC91c3IvZ3Vlc3QgCmNtYiBqb1Z1UkY0ZGpnNUMuIDIxNCAxIG0xNjYwLG0wMjUgL3Vzci9ndWVzdCAKZGF2ZSBBQmZYaU8wY01jN3IuIDIyNSAxIG1oODQ1MSxtMDQwIC91c3IvZ3Vlc3QgCm1paGFsaXMgbXdaYThLWEhSemtxRSAyMzAgMSBtMjAxOSxtMjg1IC91c3IvbWloYWxpcyAKdGdzIFhSRzZ0QlBjejBrcTIgMjMxIDEgbWg3NDYxLG0wMjUgL3Vzci90Z3MgL3Vzci9jdncvYmluL3NoCnV1Y3BhIFRxajlwN01iU2NrV00gMjM4IDEgbWgyMDE5LG0yODUsdXVjcCAvdXNyL3Nwb29sL3V1Y3BwdWJsaWMgL3Vzci9saWIvdXVjcC91dWNpY28KYnMgZlJ3UWI1ZDlPR0tmNiAyNTEgMSBtMzg4NyxtMjA0IC91c3IvZ3Vlc3QgCndzYiBGQVY5WVl6OHA5RTdBIDI1NCAxIG0yNTkxLG0xNDggL3Vzci9ndWVzdCAKdXVjcGIgQTNtUndEUTkzL2c2byAyNTkgMSBtaDAwMDAsbTAwMCAvdXNyL3Nwb29sL3V1Y3BwdWJsaWMgL3Vzci9saWIvdXVjcC91dWNpY28KY3Z3IFF5QVl5dE9mVmx3VTYgMjY2IDEgbWgxNTQ4LG0zMDEgL3Vzci9jdncgL3Vzci9jdncvYmluL3NoCmJzYiAyb3ZXOFJWVHRDSm5jIDI2OCAxIG1oODA5MixtMTUwIC91c3IvYnNiIApkc2ogVVdhd1czaE4wc3hBTSAyNzYgMSBtaDY3ODQsbTE2NCAvdXNyL2RzaiAKbXJnIHM2SGczMkZyaE9BVHMgMjc3IDEgbWg2Nzg0LG0xNjQgL3Vzci9tcmcgCmx3ZiBGRjI3YWtBako1TU9zIDI4MSAxIG1oODA4NSxtaDEwMixsd2YgL3Vzci9ndWVzdCAKa2FtIHplL2s2OE1zM2R0aGcgMjg3IDEgbTU1NzksbTA0OCAvdXNyL2d1ZXN0IAplanMgL2N5QlVrYlcuRDd1VSAyOTAgMSBtMDAwMCxtMDAwIC91c3IvZ3Vlc3QgCmFyayB6L0lnRUFRWUlCcE93IDI5MiAxIG1oNjk0NyxtMjE1LGFyayAvdXNyL2FyayAKa2ZjIDdXNlpkaUR3YjNrWmMgMzAzIDEgbTY1ODEsbTI2NiAvdXNyL2d1ZXN0IApyb2IgeE9rbWtjT2UzTnJnYyAzMDQgMSBtMDEzMCxtMzIyIC91c3IvZ3Vlc3QgCnRoZW8gY3NjV3U4c1k3TFhhTSAzMDcgMSBtODQxNyxtMTY5IC91c3IvZ3Vlc3QgL2Jpbi9zaApkanIgMUprL1k3MjlnWk9TNiAzMDkgMSBNNzcwMSxNMDk3IC91c3IvZ3Vlc3QgCndtYyA5SWpVSUthSDlKM0JRIDMxMiAxIG1oODQ0NCxtMDUwLHdtY28gL3Vzci9ndWVzdCAKYmFydCAvakVkcXVUS1cueXRNIDMxMyAxICAvdXNyL2d1ZXN0IC9iaW4vc2gKc2FsbHkgQi9mU1BUb1dlcDVEUSAzMTQgMSAgL3Vzci9ndWVzdCAvYmluL3NoCmVoZyBrRERtVjdFVjZSZ2IyIDMyMCAxIG1oODczMixtMDUwLGVoZyAvdXNyL2VoZyAKZGRzIG03UW1ZTk10Z2o4OWcgMzI0IDEgIC91c3IvZGRzIApsaWJyIHNvcnJ5IDMzMCAxICAvdXNyL21lbC9ib29rcyAKZGJtIDdBZThkRE5tVDAwYkkgMzM0IDEgbTg4OTYsbTA5MSAvdXNyL2d1ZXN0IApzcm0gdzd0MWR4aW1lN3Y2RSAzNjIgMSAgL3Vzci9zcm0gY3NoCmpraCBlOWZ1aU9GYkZJU09rIDM2MyAxICAvdXNyL2d1ZXN0IAphZWsgSUlpb1p5NWhUN2M0byAzNjUgMSAgL3Vzci9ndWVzdCAKdGFjIHdNNE14YXVqcFVkNUUgMzc3IDEgbWgwMDAwLG0wMDAgL3Vzci90YWMgCmp3ZyBtMGd5V3ZOcGZ2NW1rIDQ1NCAxIG1oODYzMixtMzM2IC91c3IvandnIApoYW5pYSBrVWpwUFVoTk1tcXMuIDUwMSAxICAvdXNyL2d1ZXN0IApqZXJxIERyM29NL1MycGwyalkgNTAyIDEgIC91c3IvamVycS93cmFwIApranMgUVZLRkFMZGZneUNwdyA1MDMgMSAgL3Vzci90Z3Mva2pzIApqaW0gRFA2dDBYVndsV09xdyA2MzIgMSAgL3Vzci9ndWVzdCAKYndrMSBzZUJRSXdCNlJRcTlzIDk5OSAxIG1oMTU0OCxtMzAxIC91c3IvYndrIApjbGFpcmUgdDZNMHVEeENFN2g3RSAzMjggMSBtaDkzMjMsbTE0NyAvdXNyL2NsYWlyZSAKZWdjIHhaWDNSUW05UjR3My4gMjk3IDEgbTAwMDAsbTAwMCAvdXNyL2VnYyAKcm9vdCBGbllrMkFSb1NxeTVzIDAgMSBtMDEzMCxtMzIyIC8gCmRhZW1vbiB4IDEgMSBtMDAwMCxtMDAwIC8gCnN5cyBzb3JyeSAyIDIgbTAxMzAsbTMyMiAvdXNyL3N5cyAKYmluIHNvcnJ5IDMgNCBtMDEzMCxtMzIyIC9iaW4gCnJobSBKeG9pLzVXUmtlU2YyIDUgMSBtMDEzMCxtMzIyIC91c3IvZ3Vlc3QgCmtlbiBYLjY4d2QxLmlqYXlNIDYgMSBtMDEzMCxtMzIyIC91c3IvZ3Vlc3QgCmRtciBDNHUzZEpXYmc3UkNrIDcgMSBtaDEwOTIsbTA2OSAvdXNyL2d1ZXN0L2RtciAKZG91ZyBLaTcxY3JXR3h3L3lNIDggMSBtMTY2MCxtMDI1IC91c3IvZ3Vlc3QgCmJ3ayBjSS94Q1RRSWhMaUlzIDkgMSBtaDE1NDgsbTMwMSAvdXNyL2J3ayAKZ3JlZyBhUC9hU3ZwcnZOempzIDEwIDEgbTAxMzAsbTMyMiAvdXNyL2d1ZXN0IAp0ZGsgQnBxRlp4TTFPTThmcyAxMiAxIG0wMTMwLG0zMjIgL3Vzci90ZGsgCmF2YSAzOXBFNU00OTdBeHhBIDE1IDEgbTEzNTcsbTI0MiAvdXNyL2F2YSAKc2NqIHk5Mzdwa1JpMFZrU1EgMjQgMSBtNTE5MCxtMjkyIC91c3IvZ3Vlc3QgCm1lbCBXZFIzSWpHbXRhdHFFIDI2IDEgbTIwMTksbTI4NSxwb3VuY2UsbGVzayAvdXNyL2d1ZXN0IAphZ2YgWDN5UURraXFXbVBKZyAzNCAxIG0xNjk5LG0yNDUgL3Vzci9ndWVzdCAKbGxjIFovbDI1UzJnYUZuN1UgNDEgMSBtMTY1MCxtMzI0IC91c3IvZ3Vlc3QgCmxlbSBKdXZrU1FVRWx2N21FIDQzIDEgbTAyMjAsbTE1NyxsIC91c3IvZ3Vlc3QgCnV1Y3Agc29ycnkgNDggMSBtaDIwMTksbTI4NSxub3dpdHogL3Vzci9zcG9vbC91dWNwIApudXVjcCB2UjEvcUdUMHRUbUtZIDQ4IDEgbWgyMDE5LG0yODUsdXVjcCAvdXNyL3Nwb29sL3V1Y3BwdWJsaWMgL3Vzci9saWIvdXVjcC91dWNpY28KZHV1Y3AgRnZMV0lnbmY3L1lwcyA0OCAxIG1oMjAxOSxtMjg1LG5vd2l0eiAvdXNyL3Nwb29sL3V1Y3AgCnNwbSBOZVVMZ0F6Y0NJRTdRIDQ5IDEgbTE5ODgsbTMyMiAvdXNyL2d1ZXN0IAptYiA1cW1STUg1NTNiTnJRIDgzIDEgbTUxNjMsbTIwNyAvdXNyL2d1ZXN0IApzaWYgWUV4SDBEcHZzUDZ3NiA5MSAxIG01MTkyLG0wNDQgL3Vzci9ndWVzdCAKZG90IGNUaHNVLlFzSVJOZ3cgOTkgMSBtNTU3OSxtMDQ4IC91c3IvZ3Vlc3QgCnJqZSB0aTBKc1AxbjZmSU1jIDEwOSAxIG01NDI5LG0wOTYsamFuZSAvdXNyL2d1ZXN0IAp2Z2wgU1VjVDVpNTRacjk3TSAxMTIgMSBtNTU3OSxtMDQ4IC91c3IvZ3Vlc3QgCmpydiBHYW92MUZhY3dKV1JrIDExNCAxIG0zODg3LG0yMDQgL3Vzci9ndWVzdCAKbmxzIDhsWnlvb3NIdjgyc0EgMTMwIDEgbTQyMTYsbTA1MCAvdXNyL2d1ZXN0IAptZXQgQzdpTnYvWU5VdUs0WSAxMzIgMSBtNjI1MSxtMzIyIC91c3IvZ3Vlc3QgCnN1ZSBDV1NhdTgyekN4NFRJIDE1NiAxIG0yNTkxLG0xNDgsMmM1NzYgL3Vzci9ndWVzdCAKcmF2aSBydkpObGs1andMWEs2IDE2NyAxIG0wMDAwLG0zMjIgL3Vzci9ndWVzdCAKcGp3IHhOUXkvL0dEYThGRmcgMTcwIDEgbTY1MzQsbTMwMSAvdXNyL2d1ZXN0IC9iaW4vY3NoCmpoYyBGdWVKYXUveEdoN1RJIDE3MSAxICAvdXNyL2d1ZXN0IApsY2sgRFJ3NHAwbXNNTHhEayAxNzIgMSBtNjUzMixtMTQ5IC91c3IvZ3Vlc3QgCm1vaCBmV1ZFZnh3SW94OHRjIDIxMyAxIG03ODQyLG0yMTIsaG9tZSAvdXNyL2d1ZXN0IApjbWIgam9WdVJGNGRqZzVDLiAyMTQgMSBtMTY2MCxtMDI1IC91c3IvZ3Vlc3QgCmRhdmUgQUJmWGlPMGNNYzdyLiAyMjUgMSBtaDg0NTEsbTA0MCAvdXNyL2d1ZXN0IAptaWhhbGlzIG13WmE4S1hIUnprcUUgMjMwIDEgbTIwMTksbTI4NSAvdXNyL21paGFsaXMgCnRncyBYUkc2dEJQY3owa3EyIDIzMSAxIG1oNzQ2MSxtMDI1IC91c3IvdGdzIC91c3IvY3Z3L2Jpbi9zaAp1dWNwYSBUcWo5cDdNYlNja1dNIDIzOCAxIG1oMjAxOSxtMjg1LHV1Y3AgL3Vzci9zcG9vbC91dWNwcHVibGljIC91c3IvbGliL3V1Y3AvdXVjaWNvCmJzIGZSd1FiNWQ5T0dLZjYgMjUxIDEgbTM4ODcsbTIwNCAvdXNyL2d1ZXN0IAp3c2IgRkFWOVlZejhwOUU3QSAyNTQgMSBtMjU5MSxtMTQ4IC91c3IvZ3Vlc3QgCnV1Y3BiIEEzbVJ3RFE5My9nNm8gMjU5IDEgbWgwMDAwLG0wMDAgL3Vzci9zcG9vbC91dWNwcHVibGljIC91c3IvbGliL3V1Y3AvdXVjaWNvCmN2dyBReUFZeXRPZlZsd1U2IDI2NiAxIG1oMTU0OCxtMzAxIC91c3IvY3Z3IC91c3IvY3Z3L2Jpbi9zaApic2IgMm92VzhSVlR0Q0puYyAyNjggMSBtaDgwOTIsbTE1MCAvdXNyL2JzYiAKZHNqIFVXYXdXM2hOMHN4QU0gMjc2IDEgbWg2Nzg0LG0xNjQgL3Vzci9kc2ogCm1yZyBzNkhnMzJGcmhPQVRzIDI3NyAxIG1oNjc4NCxtMTY0IC91c3IvbXJnIApsd2YgRkYyN2FrQWpKNU1PcyAyODEgMSBtaDgwODUsbWgxMDIsbHdmIC91c3IvZ3Vlc3QgCmthbSB6ZS9rNjhNczNkdGhnIDI4NyAxIG01NTc5LG0wNDggL3Vzci9ndWVzdCAKZWpzIC9jeUJVa2JXLkQ3dVUgMjkwIDEgbTAwMDAsbTAwMCAvdXNyL2d1ZXN0IAphcmsgei9JZ0VBUVlJQnBPdzoyOTI6MTptaDY5NDcsbTIxNSxhcms6L3Vzci9hcms6CmtmYyA3VzZaZGlEd2Iza1pjOjMwMzoxOm02NTgxLG0yNjY6L3Vzci9ndWVzdDoKcm9iIHhPa21rY09lM05yZ2M6MzA0OjE6bTAxMzAsbTMyMjovdXNyL2d1ZXN0Ogp0aGVvIGNzY1d1OHNZN0xYYU06MzA3OjE6bTg0MTcsbTE2OTovdXNyL2d1ZXN0Oi9iaW4vc2gKZGpyIDFKay9ZNzI5Z1pPUzY6MzA5OjE6TTc3MDEsTTA5NzovdXNyL2d1ZXN0Ogp3bWMgOUlqVUlLYUg5SjNCUTozMTI6MTptaDg0NDQsbTA1MCx3bWNvOi91c3IvZ3Vlc3Q6CmJhcnQgL2pFZHF1VEtXLnl0TTozMTM6MTo6L3Vzci9ndWVzdDovYmluL3NoCnNhbGx5IEIvZlNQVG9XZXA1RFE6MzE0OjE6Oi91c3IvZ3Vlc3Q6L2Jpbi9zaAplaGcga0REbVY3RVY2UmdiMjozMjA6MTptaDg3MzIsbTA1MCxlaGc6L3Vzci9laGc6CmRkcyBtN1FtWU5NdGdqODlnOjMyNDoxOjovdXNyL2RkczoKbGliciBzb3JyeTozMzA6MTo6L3Vzci9tZWwvYm9va3M6CmRibSA3QWU4ZERObVQwMGJJOjMzNDoxOm04ODk2LG0wOTE6L3Vzci9ndWVzdDoKc3JtIHc3dDFkeGltZTd2NkU6MzYyOjE6Oi91c3Ivc3JtOmNzaApqa2ggZTlmdWlPRmJGSVNPazozNjM6MTo6L3Vzci9ndWVzdDoKYWVrIElJaW9aeTVoVDdjNG86MzY1OjE6Oi91c3IvZ3Vlc3Q6CnRhYyB3TTRNeGF1anBVZDVFOjM3NzoxOm1oMDAwMCxtMDAwOi91c3IvdGFjOgpqd2cgbTBneVd2TnBmdjVtazo0NTQ6MTptaDg2MzIsbTMzNjovdXNyL2p3ZzoKaGFuaWEga1VqcFBVaE5NbXFzLjo1MDE6MTo6L3Vzci9ndWVzdDoKamVycSBEcjNvTS9TMnBsMmpZOjUwMjoxOjovdXNyL2plcnEvd3JhcDoKa2pzIFFWS0ZBTGRmZ3lDcHc6NTAzOjE6Oi91c3IvdGdzL2tqczoKamltIERQNnQwWFZ3bFdPcXc6NjMyOjE6Oi91c3IvZ3Vlc3Q6CmJ3azEgc2VCUUl3QjZSUXE5czo5OTk6MTptaDE1NDgsbTMwMTovdXNyL2J3azoKY2xhaXJlIHQ2TTB1RHhDRTdoN0U6MzI4OjE6bWg5MzIzLG0xNDc6L3Vzci9jbGFpcmU6CmVnYyB4WlgzUlFtOVI0dzMuOjI5NzoxOm0wMDAwLG0wMDA6L3Vzci9lZ2M6CnJvb3QgRm5ZazJBUm9TcXk1czowOjE6bTAxMzAsbTMyMjovOgpkYWVtb24geDoxOjE6bTAwMDAsbTAwMDovOgpzeXMgc29ycnk6MjoyOm0wMTMwLG0zMjI6L3Vzci9zeXM6CmJpbiBzb3JyeTozOjQ6bTAxMzAsbTMyMjovYmluOgpyaG0gSnhvaS81V1JrZVNmMjo1OjE6bTAxMzAsbTMyMjovdXNyL2d1ZXN0OgprZW4gWC42OHdkMS5pamF5TTo2OjE6bTAxMzAsbTMyMjovdXNyL2d1ZXN0OgpkbXIgQzR1M2RKV2JnN1JDazo3OjE6bWgxMDkyLG0wNjk6L3Vzci9ndWVzdC9kbXI6CmRvdWcgS2k3MWNyV0d4dy95TTo4OjE6bTE2NjAsbTAyNTovdXNyL2d1ZXN0Ogpid2sgY0kveENUUUloTGlJczo5OjE6bWgxNTQ4LG0zMDE6L3Vzci9id2s6CmdyZWcgYVAvYVN2cHJ2TnpqczoxMDoxOm0wMTMwLG0zMjI6L3Vzci9ndWVzdDoKdGRrIEJwcUZaeE0xT004ZnM6MTI6MTptMDEzMCxtMzIyOi91c3IvdGRrOgphdmEgMzlwRTVNNDk3QXh4QToxNToxOm0xMzU3LG0yNDI6L3Vzci9hdmE6CnNjaiB5OTM3cGtSaTBWa1NROjI0OjE6bTUxOTAsbTI5MjovdXNyL2d1ZXN0OgptZWwgV2RSM0lqR210YXRxRToyNjoxOm0yMDE5LG0yODUscG91bmNlLGxlc2s6L3Vzci9ndWVzdDoKYWdmIFgzeVFEa2lxV21QSmc6MzQ6MTptMTY5OSxtMjQ1Oi91c3IvZ3Vlc3Q6CmxsYyBaL2wyNVMyZ2FGbjdVOjQxOjE6bTE2NTAsbTMyNDovdXNyL2d1ZXN0OgpsZW0gSnV2a1NRVUVsdjdtRTo0MzoxOm0wMjIwLG0xNTcsbDovdXNyL2d1ZXN0Ogp1dWNwIHNvcnJ5OjQ4OjE6bWgyMDE5LG0yODUsbm93aXR6Oi91c3Ivc3Bvb2wvdXVjcDoKbnV1Y3AgdlIxL3FHVDB0VG1LWTo0ODoxOm1oMjAxOSxtMjg1LHV1Y3A6L3Vzci9zcG9vbC91dWNwcHVibGljOi91c3IvbGliL3V1Y3AvdXVjaWNvCmR1dWNwIEZ2TFdJZ25mNy9ZcHM6NDg6MTptaDIwMTksbTI4NSxub3dpdHo6L3Vzci9zcG9vbC91dWNwOgpzcG0gTmVVTGdBemNDSUU3UTo0OToxOm0xOTg4LG0zMjI6L3Vzci9ndWVzdDoKbWIgNXFtUk1INTUzYk5yUTo4MzoxOm01MTYzLG0yMDc6L3Vzci9ndWVzdDoKc2lmIFlFeEgwRHB2c1A2dzY6OTE6MTptNTE5MixtMDQ0Oi91c3IvZ3Vlc3Q6CmRvdCBjVGhzVS5Rc0lSTmd3Ojk5OjE6bTU1NzksbTA0ODovdXNyL2d1ZXN0OgpyamUgdGkwSnNQMW42ZklNYzoxMDk6MTptNTQyOSxtMDk2LGphbmU6L3Vzci9ndWVzdDoKdmdsIFNVY1Q1aTU0WnI5N006MTEyOjE6bTU1NzksbTA0ODovdXNyL2d1ZXN0OgpqcnYgR2FvdjFGYWN3SldSazoxMTQ6MTptMzg4NyxtMjA0Oi91c3IvZ3Vlc3Q6Cm5scyA4bFp5b29zSHY4MnNBOjEzMDoxOm00MjE2LG0wNTA6L3Vzci9ndWVzdDoKbWV0IEM3aU52L1lOVXVLNFk6MTMyOjE6bTYyNTEsbTMyMjovdXNyL2d1ZXN0OgpzdWUgQ1dTYXU4MnpDeDRUSToxNTY6MTptMjU5MSxtMTQ4LDJjNTc2Oi91c3IvZ3Vlc3Q6CnJhdmkgcnZKTmxrNWp3TFhLNjoxNjc6MTptMDAwMCxtMzIyOi91c3IvZ3Vlc3Q6CnBqdyB4TlF5Ly9HRGE4RkZnOjE3MDoxOm02NTM0LG0zMDE6L3Vzci9ndWVzdDovYmluL2NzaApqaGMgRnVlSmF1L3hHaDdUSToxNzE6MTo6L3Vzci9ndWVzdDoKbGNrIERSdzRwMG1zTUx4RGs6MTcyOjE6bTY1MzIsbTE0OTovdXNyL2d1ZXN0Ogptb2ggZldWRWZ4d0lveDh0YzoyMTM6MTptNzg0MixtMjEyLGhvbWU6L3Vzci9ndWVzdDoKY21iIGpvVnVSRjRkamc1Qy46MjE0OjE6bTE2NjAsbTAyNTovdXNyL2d1ZXN0OgpkYXZlIEFCZlhpTzBjTWM3ci46MjI1OjE6bWg4NDUxLG0wNDA6L3Vzci9ndWVzdDoKbWloYWxpcyBtd1phOEtYSFJ6a3FFOjIzMDoxOm0yMDE5LG0yODU6L3Vzci9taWhhbGlzOgp0Z3MgWFJHNnRCUGN6MGtxMjoyMzE6MTptaDc0NjEsbTAyNTovdXNyL3RnczovdXNyL2N2dy9iaW4vc2gKdXVjcGEgVHFqOXA3TWJTY2tXTToyMzg6MTptaDIwMTksbTI4NSx1dWNwOi91c3Ivc3Bvb2wvdXVjcHB1YmxpYzovdXNyL2xpYi91dWNwL3V1Y2ljbwpicyBmUndRYjVkOU9HS2Y2OjI1MToxOm0zODg3LG0yMDQ6L3Vzci9ndWVzdDoKd3NiIEZBVjlZWXo4cDlFN0E6MjU0OjE6bTI1OTEsbTE0ODovdXNyL2d1ZXN0Ogp1dWNwYiBBM21Sd0RROTMvZzZvOjI1OToxOm1oMDAwMCxtMDAwOi91c3Ivc3Bvb2wvdXVjcHB1YmxpYzovdXNyL2xpYi91dWNwL3V1Y2ljbwpjdncgUXlBWXl0T2ZWbHdVNjoyNjY6MTptaDE1NDgsbTMwMTovdXNyL2N2dzovdXNyL2N2dy9iaW4vc2gKYnNiIDJvdlc4UlZUdENKbmM6MjY4OjE6bWg4MDkyLG0xNTA6L3Vzci9ic2I6CmRzaiBVV2F3VzNoTjBzeEFNOjI3NjoxOm1oNjc4NCxtMTY0Oi91c3IvZHNqOgptcmcgczZIZzMyRnJoT0FUczoyNzc6MTptaDY3ODQsbTE2NDovdXNyL21yZzoKbHdmIEZGMjdha0FqSjVNT3M6MjgxOjE6bWg4MDg1LG1oMTAyLGx3ZjovdXNyL2d1ZXN0OgprYW0gemUvazY4TXMzZHRoZzoyODc6MTptNTU3OSxtMDQ4Oi91c3IvZ3Vlc3Q6CmVqcyAvY3lCVWtiVy5EN3VVOjI5MDoxOm0wMDAwLG0wMDA6L3Vzci9ndWVzdDoKYXJrIHovSWdFQVFZSUJwT3c6MjkyOjE6bWg2OTQ3LG0yMTUsYXJrOi91c3IvYXJrOgprZmMgN1c2WmRpRHdiM2taYzozMDM6MTptNjU4MSxtMjY2Oi91c3IvZ3Vlc3Q6CnJvYiB4T2tta2NPZTNOcmdjOjMwNDoxOm0wMTMwLG0zMjI6L3Vzci9ndWVzdDoKdGhlbyBjc2NXdThzWTdMWGFNOjMwNzoxOm04NDE3LG0xNjk6L3Vzci9ndWVzdDovYmluL3NoCmRqciAxSmsvWTcyOWdaT1M2OjMwOToxOk03NzAxLE0wOTc6L3Vzci9ndWVzdDoKd21jIDlJalVJS2FIOUozQlE6MzEyOjE6bWg4NDQ0LG0wNTAsd21jbzovdXNyL2d1ZXN0OgpiYXJ0IC9qRWRxdVRLVy55dE06MzEzOjE6Oi91c3IvZ3Vlc3Q6L2Jpbi9zaApzYWxseSBCL2ZTUFRvV2VwNURROjMxNDoxOjovdXNyL2d1ZXN0Oi9iaW4vc2gKZWhnIGtERG1WN0VWNlJnYjI6MzIwOjE6bWg4NzMyLG0wNTAsZWhnOi91c3IvZWhnOgpkZHMgbTdRbVlOTXRnajg5ZzozMjQ6MTo6L3Vzci9kZHM6CmxpYnIgc29ycnk6MzMwOjE6Oi91c3IvbWVsL2Jvb2tzOgpkYm0gN0FlOGRETm1UMDBiSTozMzQ6MTptODg5NixtMDkxOi91c3IvZ3Vlc3Q6CnNybSB3N3QxZHhpbWU3djZFOjM2MjoxOjovdXNyL3NybTpjc2gKamtoIGU5ZnVpT0ZiRklTT2s6MzYzOjE6Oi91c3IvZ3Vlc3Q6CmFlayBJSWlvWnk1aFQ3YzRvOjM2NToxOjovdXNyL2d1ZXN0Ogp0YWMgd000TXhhdWpwVWQ1RTozNzc6MTptaDAwMDAsbTAwMDovdXNyL3RhYzoKandnIG0wZ3lXdk5wZnY1bWs6NDU0OjE6bWg4NjMyLG0zMzY6L3Vzci9qd2c6CmhhbmlhIGtVanBQVWhOTW1xcy46NTAxOjE6Oi91c3IvZ3Vlc3Q6CmplcnEgRHIzb00vUzJwbDJqWTo1MDI6MTo6L3Vzci9qZXJxL3dyYXA6CmtqcyBRVktGQUxkZmd5Q3B3OjUwMzoxOjovdXNyL3Rncy9ranM6CmppbSBEUDZ0MFhWd2xXT3F3OjYzMjoxOjovdXNyL2d1ZXN0Ogpid2sxIHNlQlFJd0I2UlFxOXM6OTk5OjE6bWgxNTQ4LG0zMDE6L3Vzci9id2s6CmNsYWlyZSB0Nk0wdUR4Q0U3aDdFOjMyODoxOm1oOTMyMyxtMTQ3Oi91c3IvY2xhaXJlOgplZ2MgeFpYM1JRbTlSNHczLjoyOTc6MTptMDAwMCxtMDAwOi91c3IvZWdjOgpyb290IEZuWWsyQVJvU3F5NXM6MDoxOm0wMTMwLG0zMjI6LzoKZGFlbW9uIHg6MToxOm0wMDAwLG0wMDA6LzoKc3lzIHNvcnJ5OjI6MjptMDEzMCxtMzIyOi91c3Ivc3lzOgpiaW4gc29ycnk6Mzo0Om0wMTMwLG0zMjI6L2JpbjoKcmhtIEp4b2kvNVdSa2VTZjI6NToxOm0wMTMwLG0zMjI6L3Vzci9ndWVzdDoKa2VuIFguNjh3ZDEuaWpheU06NjoxOm0wMTMwLG0zMjI6L3Vzci9ndWVzdDoKZG1yIEM0dTNkSldiZzdSQ2s6NzoxOm1oMTA5MixtMDY5Oi91c3IvZ3Vlc3QvZG1yOgpkb3VnIEtpNzFjcldHeHcveU06ODoxOm0xNjYwLG0wMjU6L3Vzci9ndWVzdDoKYndrIGNJL3hDVFFJaExpSXM6OToxOm1oMTU0OCxtMzAxOi91c3IvYndrOgpncmVnIGFQL2FTdnBydk56anM6MTA6MTptMDEzMCxtMzIyOi91c3IvZ3Vlc3Q6CnRkayBCcHFGWnhNMU9NOGZzOjEyOjE6bTAxMzAsbTMyMjovdXNyL3RkazoKYXZhIDM5cEU1TTQ5N0F4eEE6MTU6MTptMTM1NyxtMjQyOi91c3IvYXZhOgpzY2ogeTkzN3BrUmkwVmtTUToyNDoxOm01MTkwLG0yOTI6L3Vzci9ndWVzdDoKbWVsIFdkUjNJakdtdGF0cUU6MjY6MTptMjAxOSxtMjg1LHBvdW5jZSxsZXNrOi91c3IvZ3Vlc3Q6CmFnZiBYM3lRRGtpcVdtUEpnOjM0OjE6bTE2OTksbTI0NTovdXNyL2d1ZXN0OgpsbGMgWi9sMjVTMmdhRm43VTo0MToxOm0xNjUwLG0zMjQ6L3Vzci9ndWVzdDoKbGVtIEp1dmtTUVVFbHY3bUU6NDM6MTptMDIyMCxtMTU3LGw6L3Vzci9ndWVzdDoKdXVjcCBzb3JyeTo0ODoxOm1oMjAxOSxtMjg1LG5vd2l0ejovdXNyL3Nwb29sL3V1Y3A6Cm51dWNwIHZSMS9xR1QwdFRtS1k6NDg6MTptaDIwMTksbTI4NSx1dWNwOi91c3Ivc3Bvb2wvdXVjcHB1YmxpYzovdXNyL2xpYi91dWNwL3V1Y2ljbwpkdXVjcCBGdkxXSWduZjcvWXBzOjQ4OjE6bWgyMDE5LG0yODUsbm93aXR6Oi91c3Ivc3Bvb2wvdXVjcDoKc3BtIE5lVUxnQXpjQ0lFN1E6NDk6MTptMTk4OCxtMzIyOi91c3IvZ3Vlc3Q6Cm1iIDVxbVJNSDU1M2JOclE6ODM6MTptNTE2MyxtMjA3Oi91c3IvZ3Vlc3Q6CnNpZiBZRXhIMERwdnNQNnc2OjkxOjE6bTUxOTIsbTA0NDovdXNyL2d1ZXN0Ogpkb3QgY1Roc1UuUXNJUk5ndzo5OToxOm01NTc5LG0wNDg6L3Vzci9ndWVzdDoKcmplIHRpMEpzUDFuNmZJTWM6MTA5OjE6bTU0MjksbTA5NixqYW5lOi91c3IvZ3Vlc3Q6CnZnbCBTVWNUNWk1NFpyOTdNOjExMjoxOm01NTc5LG0wNDg6L3Vzci9ndWVzdDoKanJ2IEdhb3YxRmFjd0pXUms6MTE0OjE6bTM4ODcsbTIwNDovdXNyL2d1ZXN0OgpubHMgOGxaeW9vc0h2ODJzQToxMzA6MTptNDIxNixtMDUwOi91c3IvZ3Vlc3Q6Cm1ldCBDN2lOdi9ZTlV1SzRZOjEzMjoxOm02MjUxLG0zMjI6L3Vzci9ndWVzdDoKc3VlIENXU2F1ODJ6Q3g0VEk6MTU2OjE6bTI1OTEsbTE0OCwyYzU3NjovdXNyL2d1ZXN0OgpyYXZpIHJ2Sk5sazVqd0xYSzY6MTY3OjE6bTAwMDAsbTMyMjovdXNyL2d1ZXN0OgpwancgeE5ReS8vR0RhOEZGZzoxNzA6MTptNjUzNCxtMzAxOi91c3IvZ3Vlc3Q6L2Jpbi9jc2gKamhjIEZ1ZUphdS94R2g3VEk6MTcxOjE6Oi91c3IvZ3Vlc3Q6CmxjayBEUnc0cDBtc01MeERrOjE3MjoxOm02NTMyLG0xNDk6L3Vzci9ndWVzdDoKbW9oIGZXVkVmeHdJb3g4dGM6MjEzOjE6bTc4NDIsbTIxMixob21lOi91c3IvZ3Vlc3Q6CmNtYiBqb1Z1UkY0ZGpnNUMuOjIxNDoxOm0xNjYwLG0wMjU6L3Vzci9ndWVzdDoKZGF2ZSBBQmZYaU8wY01jN3IuOjIyNToxOm1oODQ1MSxtMDQwOi91c3IvZ3Vlc3Q6Cm1paGFsaXMgbXdaYThLWEhSemtxRToyMzA6MTptMjAxOSxtMjg1Oi91c3IvbWloYWxpczoKdGdzIFhSRzZ0QlBjejBrcTI6MjMxOjE6bWg3NDYxLG0wMjU6L3Vzci90Z3M6L3Vzci9jdncvYmluL3NoCnV1Y3BhIFRxajlwN01iU2NrV006MjM4OjE6bWgyMDE5LG0yODUsdXVjcDovdXNyL3Nwb29sL3V1Y3BwdWJsaWM6L3Vzci9saWIvdXVjcC91dWNpY28KYnMgZlJ3UWI1ZDlPR0tmNjoyNTE6MTptMzg4NyxtMjA0Oi91c3IvZ3Vlc3Q6CndzYiBGQVY5WVl6OHA5RTdBOjI1NDoxOm0yNTkxLG0xNDg6L3Vzci9ndWVzdDoKdXVjcGIgQTNtUndEUTkzL2c2bzoyNTk6MTptaDAwMDAsbTAwMDovdXNyL3Nwb29sL3V1Y3BwdWJsaWM6L3Vzci9saWIvdXVjcC91dWNpY28KY3Z3IFF5QVl5dE9mVmx3VTY6MjY2OjE6bWgxNTQ4LG0zMDE6L3Vzci9jdnc6L3Vzci9jdncvYmluL3NoCmJzYiAyb3ZXOFJWVHRDSm5jOjI2ODoxOm1oODA5MixtMTUwOi91c3IvYnNiOgpkc2ogVVdhd1czaE4wc3hBTToyNzY6MTptaDY3ODQsbTE2NDovdXNyL2RzajoKbXJnIHM2SGczMkZyaE9BVHM6Mjc3OjE6bWg2Nzg0LG0xNjQ6L3Vzci9tcmc6Cmx3ZiBGRjI3YWtBako1TU9zOjI4MToxOm1oODA4NSxtaDEwMixsd2Y6L3Vzci9ndWVzdDoKa2FtIHplL2s2OE1zM2R0aGc6Mjg3OjE6bTU1NzksbTA0ODovdXNyL2d1ZXN0OgplanMgL2N5QlVrYlcuRDd1VToyOTA6MTptMDAwMCxtMDAwOi91c3IvZ3Vlc3Q6CmFyayB6L0lnRUFRWUlCcE93OjI5MjoxOm1oNjk0NyxtMjE1LGFyazovdXNyL2FyazoKa2ZjIDdXNlpkaUR3YjNrWmM6MzAzOjE6bTY1ODEsbTI2NjovdXNyL2d1ZXN0Ogpyb2IgeE9rbWtjT2UzTnJnYzozMDQ6MTptMDEzMCxtMzIyOi91c3IvZ3Vlc3Q6CnRoZW8gY3NjV3U4c1k3TFhhTTozMDc6MTptODQxNyxtMTY5Oi91c3IvZ3Vlc3Q6L2Jpbi9zaApkanIgMUprL1k3MjlnWk9TNjozMDk6MTpNNzcwMSxNMDk3Oi91c3IvZ3Vlc3Q6CndtYyA5SWpVSUthSDlKM0JROjMxMjoxOm1oODQ0NCxtMDUwLHdtY286L3Vzci9ndWVzdDoKYmFydCAvakVkcXVUS1cueXRNOjMxMzoxOjovdXNyL2d1ZXN0Oi9iaW4vc2gKc2FsbHkgQi9mU1BUb1dlcDVEUTozMTQ6MTo6L3Vzci9ndWVzdDovYmluL3NoCmVoZyBrRERtVjdFVjZSZ2IyOjMyMDoxOm1oODczMixtMDUwLGVoZzovdXNyL2VoZzoKZGRzIG03UW1ZTk10Z2o4OWc6MzI0OjE6Oi91c3IvZGRzOgpsaWJyIHNvcnJ5OjMzMDoxOjovdXNyL21lbC9ib29rczoKZGJtIDdBZThkRE5tVDAwYkk6MzM0OjE6bTg4OTYsbTA5MTovdXNyL2d1ZXN0Ogpzcm0gdzd0MWR4aW1lN3Y2RTozNjI6MTo6L3Vzci9zcm06Y3NoCmpraCBlOWZ1aU9GYkZJU09rOjM2MzoxOjovdXNyL2d1ZXN0OgphZWsgSUlpb1p5NWhUN2M0bzozNjU6MTo6L3Vzci9ndWVzdDoKdGFjIHdNNE14YXVqcFVkNUU6Mzc3OjE6bWgwMDAwLG0wMDA6L3Vzci90YWM6Cmp3ZyBtMGd5V3ZOcGZ2NW1rOjQ1NDoxOm1oODYzMixtMzM2Oi91c3IvandnOgpoYW5pYSBrVWpwUFVoTk1tcXMuOjUwMToxOjovdXNyL2d1ZXN0OgpqZXJxIERyM29NL1MycGwyalk6NTAyOjE6Oi91c3IvamVycS93cmFwOgpranMgUVZLRkFMZGZneUNwdzo1MDM6MTo6L3Vzci90Z3Mva2pzOgpqaW0gRFA2dDBYVndsV09xdzo2MzI6MTo6L3Vzci9ndWVzdDoKYndrMSBzZUJRSXdCNlJRcTlzOjk5OToxOm1oMTU0OCxtMzAxOi91c3IvYndrOgpjbGFpcmUgdDZNMHVEeENFN2g3RTozMjg6MTptaDkzMjMsbTE0NzovdXNyL2NsYWlyZToKZWdjIHhaWDNSUW05UjR3My46Mjk3OjE6bTAwMDAsbTAwMDovdXNyL2VnYzoKcm9vdCBGbllrMkFSb1NxeTVzOjA6MTptMDEzMCxtMzIyOi86CmRhZW1vbiB4OjE6MTptMDAwMCxtMDAwOi86CnN5cyBzb3JyeToyOjI6bTAxMzAsbTMyMjovdXNyL3N5czoKYmluIHNvcnJ5OjM6NDptMDEzMCxtMzIyOi9iaW46CnJobSBKeG9pLzVXUmtlU2YyOjU6MTptMDEzMCxtMzIyOi91c3IvZ3Vlc3Q6CmtlbiBYLjY4d2QxLmlqYXlNOjY6MTptMDEzMCxtMzIyOi91c3IvZ3Vlc3Q6CmRtciBDNHUzZEpXYmc3UkNrOjc6MTptaDEwOTIsbTA2OTovdXNyL2d1ZXN0L2RtcjoKZG91ZyBLaTcxY3JXR3h3L3lNOjg6MTptMTY2MCxtMDI1Oi91c3IvZ3Vlc3Q6CmJ3ayBjSS94Q1RRSWhMaUlzOjk6MTptaDE1NDgsbTMwMTovdXNyL2J3azoKZ3JlZyBhUC9hU3ZwcnZOempzOjEwOjE6bTAxMzAsbTMyMjovdXNyL2d1ZXN0Ogp0ZGsgQnBxRlp4TTFPTThmczoxMjoxOm0wMTMwLG0zMjI6L3Vzci90ZGs6CmF2YSAzOXBFNU00OTdBeHhBOjE1OjE6bTEzNTcsbTI0MjovdXNyL2F2YToKc2NqIHk5Mzdwa1JpMFZrU1E6MjQ6MTptNTE5MCxtMjkyOi91c3IvZ3Vlc3Q6Cm1lbCBXZFIzSWpHbXRhdHFFOjI2OjE6bTIwMTksbTI4NSxwb3VuY2UsbGVzazovdXNyL2d1ZXN0OgphZ2YgWDN5UURraXFXbVBKZzozNDoxOm0xNjk5LG0yNDU6L3Vzci9ndWVzdDoKbGxjIFovbDI1UzJnYUZuN1U6NDE6MTptMTY1MCxtMzI0Oi91c3IvZ3Vlc3Q6CmxlbSBKdXZrU1FVRWx2N21FOjQzOjE6bTAyMjAsbTE1NyxsOi91c3IvZ3Vlc3Q6CnV1Y3Agc29ycnk6NDg6MTptaDIwMTksbTI4NSxub3dpdHo6L3Vzci9zcG9vbC91dWNwOgpudXVjcCB2UjEvcUdUMHRUbUtZOjQ4OjE6bWgyMDE5LG0yODUsdXVjcDovdXNyL3Nwb29sL3V1Y3BwdWJsaWM6L3Vzci9saWIvdXVjcC91dWNpY28KZHV1Y3AgRnZMV0lnbmY3L1lwczo0ODoxOm1oMjAxOSxtMjg1LG5vd2l0ejovdXNyL3Nwb29sL3V1Y3A6CnNwbSBOZVVMZ0F6Y0NJRTdROjQ5OjE6bTE5ODgsbTMyMjovdXNyL2d1ZXN0OgptYiA1cW1STUg1NTNiTnJROjgzOjE6bTUxNjMsbTIwNzovdXNyL2d1ZXN0OgpzaWYgWUV4SDBEcHZzUDZ3Njo5MToxOm01MTkyLG0wNDQ6L3Vzci9ndWVzdDoKZG90IGNUaHNVLlFzSVJOZ3c6OTk6MTptNTU3OSxtMDQ4Oi91c3IvZ3Vlc3Q6CnJqZSB0aTBKc1AxbjZmSU1jOjEwOToxOm01NDI5LG0wOTYsamFuZTovdXNyL2d1ZXN0Ogp2Z2wgU1VjVDVpNTRacjk3TToxMTI6MTptNTU3OSxtMDQ4Oi91c3IvZ3Vlc3Q6CmpydiBHYW92MUZhY3dKV1JrOjExNDoxOm0zODg3LG0yMDQ6L3Vzci9ndWVzdDoKbmxzIDhsWnlvb3NIdjgyc0E6MTMwOjE6bTQyMTYsbTA1MDovdXNyL2d1ZXN0OgptZXQgQzdpTnYvWU5VdUs0WToxMzI6MTptNjI1MSxtMzIyOi91c3IvZ3Vlc3Q6CnN1ZSBDV1NhdTgyekN4NFRJOjE1NjoxOm0yNTkxLG0xNDgsMmM1NzY6L3Vzci9ndWVzdDoKcmF2aSBydkpObGs1andMWEs2OjE2NzoxOm0wMDAwLG0zMjI6L3Vzci9ndWVzdDoKcGp3IHhOUXkvL0dEYThGRmc6MTcwOjE6bTY1MzQsbTMwMTovdXNyL2d1ZXN0Oi9iaW4vY3NoCmpoYyBGdWVKYXUveEdoN1RJOjE3MToxOjovdXNyL2d1ZXN0OgpsY2sgRFJ3NHAwbXNNTHhEazoxNzI6MTptNjUzMixtMTQ5Oi91c3IvZ3Vlc3Q6Cm1vaCBmV1ZFZnh3SW94OHRjOjIxMzoxOm03ODQyLG0yMTIsaG9tZTovdXNyL2d1ZXN0OgpjbWIgam9WdVJGNGRqZzVDLjoyMTQ6MTptMTY2MCxtMDI1Oi91c3IvZ3Vlc3Q6CmRhdmUgQUJmWGlPMGNNYzdyLjoyMjU6MTptaDg0NTEsbTA0MDovdXNyL2d1ZXN0OgptaWhhbGlzIG13WmE4S1hIUnprcUU6MjMwOjE6bTIwMTksbTI4NTovdXNyL21paGFsaXM6CnRncyBYUkc2dEJQY3owa3EyOjIzMToxOm1oNzQ2MSxtMDI1Oi91c3IvdGdzOi91c3IvY3Z3L2Jpbi9zaAp1dWNwYSBUcWo5cDdNYlNja1dNOjIzODoxOm1oMjAxOSxtMjg1LHV1Y3A6L3Vzci9zcG9vbC91dWNwcHVibGljOi91c3IvbGliL3V1Y3AvdXVjaWNvCmJzIGZSd1FiNWQ5T0dLZjY6MjUxOjE6bTM4ODcsbTIwNDovdXNyL2d1ZXN0Ogp3c2IgRkFWOVlZejhwOUU3QToyNTQ6MTptMjU5MSxtMTQ4Oi91c3IvZ3Vlc3Q6CnV1Y3BiIEEzbVJ3RFE5My9nNm86MjU5OjE6bWgwMDAwLG0wMDA6L3Vzci9zcG9vbC91dWNwcHVibGljOi91c3IvbGliL3V1Y3AvdXVjaWNvCmN2dyBReUFZeXRPZlZsd1U2OjI2NjoxOm1oMTU0OCxtMzAxOi91c3IvY3Z3Oi91c3IvY3Z3L2Jpbi9zaApic2IgMm92VzhSVlR0Q0puYzoyNjg6MTptaDgwOTIsbTE1MDovdXNyL2JzYjoKZHNqIFVXYXdXM2hOMHN4QU06Mjc2OjE6bWg2Nzg0LG0xNjQ6L3Vzci9kc2o6Cm1yZyBzNkhnMzJGcmhPQVRzOjI3NzoxOm1oNjc4NCxtMTY0Oi91c3IvbXJnOgpsd2YgRkYyN2FrQWpKNU1PczoyODE6MTptaDgwODUsbWgxMDIsbHdmOi91c3IvZ3Vlc3Q6CmthbSB6ZS9rNjhNczNkdGhnOjI4NzoxOm01NTc5LG0wNDg6L3Vzci9ndWVzdDoKZWpzIC9jeUJVa2JXLkQ3dVU6MjkwOjE6bTAwMDAsbTAwMDovdXNyL2d1ZXN0Ogphcmsgei9JZ0VBUVlJQnBPdzoyOTI6MTptaDY5NDcsbTIxNSxhcms6L3Vzci9hcms6CmtmYyA3VzZaZGlEd2Iza1pjOjMwMzoxOm02NTgxLG0yNjY6L3Vzci9ndWVzdDoKcm9iIHhPa21rY09lM05yZ2M6MzA0OjE6bTAxMzAsbTMyMjovdXNyL2d1ZXN0Ogp0aGVvIGNzY1d1OHNZN0xYYU06MzA3OjE6bTg0MTcsbTE2OTovdXNyL2d1ZXN0Oi9iaW4vc2gKZGpyIDFKay9ZNzI5Z1pPUzY6MzA5OjE6TTc3MDEsTTA5NzovdXNyL2d1ZXN0Ogp3bWMgOUlqVUlLYUg5SjNCUTozMTI6MTptaDg0NDQsbTA1MCx3bWNvOi91c3IvZ3Vlc3Q6CmJhcnQgL2pFZHF1VEtXLnl0TTozMTM6MTo6L3Vzci9ndWVzdDovYmluL3NoCnNhbGx5IEIvZlNQVG9XZXA1RFE6MzE0OjE6Oi91c3IvZ3Vlc3Q6L2Jpbi9zaAplaGcga0REbVY3RVY2UmdiMjozMjA6MTptaDg3MzIsbTA1MCxlaGc6L3Vzci9laGc6CmRkcyBtN1FtWU5NdGdqODlnOjMyNDoxOjovdXNyL2RkczoKbGliciBzb3JyeTozMzA6MTo6L3Vzci9tZWwvYm9va3M6CmRibSA3QWU4ZERObVQwMGJJOjMzNDoxOm04ODk2LG0wOTE6L3Vzci9ndWVzdDoKc3JtIHc3dDFkeGltZTd2NkU6MzYyOjE6Oi91c3Ivc3JtOmNzaApqa2ggZTlmdWlPRmJGSVNPazozNjM6MTo6L3Vzci9ndWVzdDoKYWVrIElJaW9aeTVoVDdjNG86MzY1OjE6Oi91c3IvZ3Vlc3Q6CnRhYyB3TTRNeGF1anBVZDVFOjM3NzoxOm1oMDAwMCxtMDAwOi91c3IvdGFjOgpqd2cgbTBneVd2TnBmdjVtazo0NTQ6MTptaDg2MzIsbTMzNjovdXNyL2p3ZzoKaGFuaWEga1VqcFBVaE5NbXFzLjo1MDE6MTo6L3Vzci9ndWVzdDoKamVycSBEcjNvTS9TMnBsMmpZOjUwMjoxOjovdXNyL2plcnEvd3JhcDoKa2pzIFFWS0ZBTGRmZ3lDcHc6NTAzOjE6Oi91c3IvdGdzL2tqczoKamltIERQNnQwWFZ3bFdPcXc6NjMyOjE6Oi91c3IvZ3Vlc3Q6CmJ3azEgc2VCUUl3QjZSUXE5czo5OTk6MTptaDE1NDgsbTMwMTovdXNyL2J3azoKY2xhaXJlIHQ2TTB1RHhDRTdoN0U6MzI4OjE6bWg5MzIzLG0xNDc6L3Vzci9jbGFpcmU6CmVnYyB4WlgzUlFtOVI0dzMuOjI5NzoxOm0wMDAwLG0wMDA6L3Vzci9lZ2M6CnJvb3QgRm5ZazJBUm9TcXk1czowOjE6bTAxMzAsbTMyMjovOgpkYWVtb24geDoxOjE6bTAwMDAsbTAwMDovOgpzeXMgc29ycnk6MjoyOm0wMTMwLG0zMjI6L3Vzci9zeXM6CmJpbiBzb3JyeTozOjQ6bTAxMzAsbTMyMjovYmluOgpyaG0gSnhvaS81V1JrZVNmMjo1OjE6bTAxMzAsbTMyMjovdXNyL2d1ZXN0OgprZW4gWC42OHdkMS5pamF5TTo2OjE6bTAxMzAsbTMyMjovdXNyL2d1ZXN0OgpkbXIgQzR1M2RKV2JnN1JDazo3OjE6bWgxMDkyLG0wNjk6L3Vzci9ndWVzdC9kbXI6CmRvdWcgS2k3MWNyV0d4dy95TTo4OjE6bTE2NjAsbTAyNTovdXNyL2d1ZXN0Ogpid2sgY0kveENUUUloTGlJczo5OjE6bWgxNTQ4LG0zMDE6L3Vzci9id2s6CmdyZWcgYVAvYVN2cHJ2TnpqczoxMDoxOm0wMTMwLG0zMjI6L3Vzci9ndWVzdDoKdGRrIEJwcUZaeE0xT004ZnM6MTI6MTptMDEzMCxtMzIyOi91c3IvdGRrOgphdmEgMzlwRTVNNDk3QXh4QToxNToxOm0xMzU3LG0yNDI6L3Vzci9hdmE6CnNjaiB5OTM3cGtSaTBWa1NROjI0OjE6bTUxOTAsbTI5MjovdXNyL2d1ZXN0OgptZWwgV2RSM0lqR210YXRxRToyNjoxOm0yMDE5LG0yODUscG91bmNlLGxlc2s6L3Vzci9ndWVzdDoKYWdmIFgzeVFEa2lxV21QSmc6MzQ6MTptMTY5OSxtMjQ1Oi91c3IvZ3Vlc3Q6CmxsYyBaL2wyNVMyZ2FGbjdVOjQxOjE6bTE2NTAsbTMyNDovdXNyL2d1ZXN0OgpsZW0gSnV2a1NRVUVsdjdtRTo0MzoxOm0wMjIwLG0xNTcsbDovdXNyL2d1ZXN0Ogp1dWNwIHNvcnJ5OjQ4OjE6bWgyMDE5LG0yODUsbm93aXR6Oi91c3Ivc3Bvb2wvdXVjcDoKbnV1Y3AgdlIxL3FHVDB0VG1LWTo0ODoxOm1oMjAxOSxtMjg1LHV1Y3A6L3Vzci9zcG9vbC91dWNwcHVibGljOi91c3IvbGliL3V1Y3AvdXVjaWNvCmR1dWNwIEZ2TFdJZ25mNy9ZcHM6NDg6MTptaDIwMTksbTI4NSxub3dpdHo6L3Vzci9zcG9vbC91dWNwOgpzcG0gTmVVTGdBemNDSUU3UTo0OToxOm0xOTg4LG0zMjI6L3Vzci9ndWVzdDoKbWIgNXFtUk1INTUzYk5yUTo4MzoxOm01MTYzLG0yMDc6L3Vzci9ndWVzdDoKc2lmIFlFeEgwRHB2c1A2dzY6OTE6MTptNTE5MixtMDQ0Oi91c3IvZ3Vlc3Q6CmRvdCBjVGhzVS5Rc0lSTmd3Ojk5OjE6bTU1NzksbTA0ODovdXNyL2d1ZXN0OgpyamUgdGkwSnNQMW42ZklNYzoxMDk6MTptNTQyOSxtMDk2LGphbmU6L3Vzci9ndWVzdDoKdmdsIFNVY1Q1aTU0WnI5N006MTEyOjE6bTU1NzksbTA0ODovdXNyL2d1ZXN0OgpqcnYgR2FvdjFGYWN3SldSazoxMTQ6MTptMzg4NyxtMjA0Oi91c3IvZ3Vlc3Q6Cm5scyA4bFp5b29zSHY4MnNBOjEzMDoxOm00MjE2LG0wNTA6L3Vzci9ndWVzdDoKbWV0IEM3aU52L1lOVXVLNFk6MTMyOjE6bTYyNTEsbTMyMjovdXNyL2d1ZXN0OgpzdWUgQ1dTYXU4MnpDeDRUSToxNTY6MTptMjU5MSxtMTQ4LDJjNTc2Oi91c3IvZ3Vlc3Q6CnJhdmkgcnZKTmxrNWp3TFhLNjoxNjc6MTptMDAwMCxtMzIyOi91c3IvZ3Vlc3Q6CnBqdyB4TlF5Ly9HRGE4RkZnOjE3MDoxOm02NTM0LG0zMDE6L3Vzci9ndWVzdDovYmluL2NzaApqaGMgRnVlSmF1L3hHaDdUSToxNzE6MTo6L3Vzci9ndWVzdDoKbGNrIERSdzRwMG1zTUx4RGs6MTcyOjE6bTY1MzIsbTE0OTovdXNyL2d1ZXN0Ogptb2ggZldWRWZ4d0lveDh0YzoyMTM6MTptNzg0MixtMjEyLGhvbWU6L3Vzci9ndWVzdDoKY21iIGpvVnVSRjRkamc1Qy46MjE0OjE6bTE2NjAsbTAyNTovdXNyL2d1ZXN0OgpkYXZlIEFCZlhpTzBjTWM3ci46MjI1OjE6bWg4NDUxLG0wNDA6L3Vzci9ndWVzdDoKbWloYWxpcyBtd1phOEtYSFJ6a3FFOjIzMDoxOm0yMDE5LG0yODU6L3Vzci9taWhhbGlzOgp0Z3MgWFJHNnRCUGN6MGtxMjoyMzE6MTptaDc0NjEsbTAyNTovdXNyL3RnczovdXNyL2N2dy9iaW4vc2gKdXVjcGEgVHFqOXA3TWJTY2tXTToyMzg6MTptaDIwMTksbTI4NSx1dWNwOi91c3Ivc3Bvb2wvdXVjcHB1YmxpYzovdXNyL2xpYi91dWNwL3V1Y2ljbwpicyBmUndRYjVkOU9HS2Y2OjI1MToxOm0zODg3LG0yMDQ6L3Vzci9ndWVzdDoKd3NiIEZBVjlZWXo4cDlFN0E6MjU0OjE6bTI1OTEsbTE0ODovdXNyL2d1ZXN0Ogp1dWNwYiBBM21Sd0RROTMvZzZvOjI1OToxOm1oMDAwMCxtMDAwOi91c3Ivc3Bvb2wvdXVjcHB1YmxpYzovdXNyL2xpYi91dWNwL3V1Y2ljbwpjdncgUXlBWXl0T2ZWbHdVNjoyNjY6MTptaDE1NDgsbTMwMTovdXNyL2N2dzovdXNyL2N2dy9iaW4vc2gKYnNiIDJvdlc4UlZUdENKbmM6MjY4OjE6bWg4MDkyLG0xNTA6L3Vzci9ic2I6CmRzaiBVV2F3VzNoTjBzeEFNOjI3NjoxOm1oNjc4NCxtMTY0Oi91c3IvZHNqOgptcmcgczZIZzMyRnJoT0FUczoyNzc6MTptaDY3ODQsbTE2NDovdXNyL21yZzoKbHdmIEZGMjdha0FqSjVNT3M6MjgxOjE6bWg4MDg1LG1oMTAyLGx3ZjovdXNyL2d1ZXN0OgprYW0gemUvazY4TXMzZHRoZzoyODc6MTptNTU3OSxtMDQ4Oi91c3IvZ3Vlc3Q6CmVqcyAvY3lCVWtiVy5EN3VVOjI5MDoxOm0wMDAwLG0wMDA6L3Vzci9ndWVzdDoKYXJrIHovSWdFQVFZSUJwT3c6MjkyOjE6bWg2OTQ3LG0yMTUsYXJrOi91c3IvYXJrOgprZmMgN1c2WmRpRHdiM2taYzozMDM6MTptNjU4MSxtMjY2Oi91c3IvZ3Vlc3Q6CnJvYiB4T2tta2NPZTNOcmdjOjMwNDoxOm0wMTMwLG0zMjI6L3Vzci9ndWVzdDoKdGhlbyBjc2NXdThzWTdMWGFNOjMwNzoxOm04NDE3LG0xNjk6L3Vzci9ndWVzdDovYmluL3NoCmRqciAxSmsvWTcyOWdaT1M2OjMwOToxOk03NzAxLE0wOTc6L3Vzci9ndWVzdDoKd21jIDlJalVJS2FIOUozQlE6MzEyOjE6bWg4NDQ0LG0wNTAsd21jbzovdXNyL2d1ZXN0OgpiYXJ0IC9qRWRxdVRLVy55dE06MzEzOjE6Oi91c3IvZ3Vlc3Q6L2Jpbi9zaApzYWxseSBCL2ZTUFRvV2VwNURROjMxNDoxOjovdXNyL2d1ZXN0Oi9iaW4vc2gKZWhnIGtERG1WN0VWNlJnYjI6MzIwOjE6bWg4NzMyLG0wNTAsZWhnOi91c3IvZWhnOgpkZHMgbTdRbVlOTXRnajg5ZzozMjQ6MTo6L3Vzci9kZHM6CmxpYnIgc29ycnk6MzMwOjE6Oi91c3IvbWVsL2Jvb2tzOgpkYm0gN0FlOGRETm1UMDBiSTozMzQ6MTptODg5NixtMDkxOi91c3IvZ3Vlc3Q6CnNybSB3N3QxZHhpbWU3djZFOjM2MjoxOjovdXNyL3NybTpjc2gKamtoIGU5ZnVpT0ZiRklTT2s6MzYzOjE6Oi91c3IvZ3Vlc3Q6CmFlayBJSWlvWnk1aFQ3YzRvOjM2NToxOjovdXNyL2d1ZXN0Ogp0YWMgd000TXhhdWpwVWQ1RTozNzc6MTptaDAwMDAsbTAwMDovdXNyL3RhYzoKandnIG0wZ3lXdk5wZnY1bWs6NDU0OjE6bWg4NjMyLG0zMzY6L3Vzci9qd2c6CmhhbmlhIGtVanBQVWhOTW1xcy46NTAxOjE6Oi91c3IvZ3Vlc3Q6CmplcnEgRHIzb00vUzJwbDJqWTo1MDI6MTo6L3Vzci9qZXJxL3dyYXA6CmtqcyBRVktGQUxkZmd5Q3B3OjUwMzoxOjovdXNyL3Rncy9ranM6CmppbSBEUDZ0MFhWd2xXT3F3OjYzMjoxOjovdXNyL2d1ZXN0Ogpid2sxIHNlQlFJd0I2UlFxOXM6OTk5OjE6bWgxNTQ4LG0zMDE6L3Vzci9id2s6CmNsYWlyZSB0Nk0wdUR4Q0U3aDdFOjMyODoxOm1oOTMyMyxtMTQ3Oi91c3IvY2xhaXJlOgplZ2MgeFpYM1JRbTlSNHczLjoyOTc6MTptMDAwMCxtMDAwOi91c3IvZWdjOgpyb290IEZuWWsyQVJvU3F5NXM6MDoxOm0wMTMwLG0zMjI6LzoKZGFlbW9uIHg6MToxOm0wMDAwLG0wMDA6LzoKc3lzIHNvcnJ5OjI6MjptMDEzMCxtMzIyOi91c3Ivc3lzOgpiaW4gc29ycnk6Mzo0Om0wMTMwLG0zMjI6L2JpbjoKcmhtIEp4b2kvNVdSa2VTZjI6NToxOm0wMTMwLG0zMjI6L3Vzci9ndWVzdDoKa2VuIFguNjh3ZDEuaWpheU06NjoxOm0wMTMwLG0zMjI6L3Vzci9ndWVzdDoKZG1yIEM0dTNkSldiZzdSQ2s6NzoxOm1oMTA5MixtMDY5Oi91c3IvZ3Vlc3QvZG1yOgpkb3VnIEtpNzFjcldHeHcveU06ODoxOm0xNjYwLG0wMjU6L3Vzci9ndWVzdDoKYndrIGNJL3hDVFFJaExpSXM6OToxOm1oMTU0OCxtMzAxOi91c3IvYndrOgpncmVnIGFQL2FTdnBydk56anM6MTA6MTptMDEzMCxtMzIyOi91c3IvZ3Vlc3Q6CnRkayBCcHFGWnhNMU9NOGZzOjEyOjE6bTAxMzAsbTMyMjovdXNyL3RkazoKYXZhIDM5cEU1TTQ5N0F4eEE6MTU6MTptMTM1NyxtMjQyOi91c3IvYXZhOgpzY2ogeTkzN3BrUmkwVmtTUToyNDoxOm01MTkwLG0yOTI6L3Vzci9ndWVzdDoKbWVsIFdkUjNJakdtdGF0cUU6MjY6MTptMjAxOSxtMjg1LHBvdW5jZSxsZXNrOi91c3IvZ3Vlc3Q6CmFnZiBYM3lRRGtpcVdtUEpnOjM0OjE6bTE2OTksbTI0NTovdXNyL2d1ZXN0OgpsbGMgWi9sMjVTMmdhRm43VTo0MToxOm0xNjUwLG0zMjQ6L3Vzci9ndWVzdDoKbGVtIEp1dmtTUVVFbHY3bUU6NDM6MTptMDIyMCxtMTU3LGw6L3Vzci9ndWVzdDoKdXVjcCBzb3JyeTo0ODoxOm1oMjAxOSxtMjg1LG5vd2l0ejovdXNyL3Nwb29sL3V1Y3A6Cm51dWNwIHZSMS9xR1QwdFRtS1k6NDg6MTptaDIwMTksbTI4NSx1dWNwOi91c3Ivc3Bvb2wvdXVjcHB1YmxpYzovdXNyL2xpYi91dWNwL3V1Y2ljbwpkdXVjcCBGdkxXSWduZjcvWXBzOjQ4OjE6bWgyMDE5LG0yODUsbm93aXR6Oi91c3Ivc3Bvb2wvdXVjcDoKc3BtIE5lVUxnQXpjQ0lFN1E6NDk6MTptMTk4OCxtMzIyOi91c3IvZ3Vlc3Q6Cm1iIDVxbVJNSDU1M2JOclE6ODM6MTptNTE2MyxtMjA3Oi91c3IvZ3Vlc3Q6CnNpZiBZRXhIMERwdnNQNnc2OjkxOjE6bTUxOTIsbTA0NDovdXNyL2d1ZXN0Ogpkb3QgY1Roc1UuUXNJUk5ndzo5OToxOm01NTc5LG0wNDg6L3Vzci9ndWVzdDoKcmplIHRpMEpzUDFuNmZJTWM6MTA5OjE6bTU0MjksbTA5NixqYW5lOi91c3IvZ3Vlc3Q6CnZnbCBTVWNUNWk1NFpyOTdNOjExMjoxOm01NTc5LG0wNDg6L3Vzci9ndWVzdDoKanJ2IEdhb3YxRmFjd0pXUms6MTE0OjE6bTM4ODcsbTIwNDovdXNyL2d1ZXN0OgpubHMgOGxaeW9vc0h2ODJzQToxMzA6MTptNDIxNixtMDUwOi91c3IvZ3Vlc3Q6Cm1ldCBDN2lOdi9ZTlV1SzRZOjEzMjoxOm02MjUxLG0zMjI6L3Vzci9ndWVzdDoKc3VlIENXU2F1ODJ6Q3g0VEk6MTU2OjE6bTI1OTEsbTE0OCwyYzU3NjovdXNyL2d1ZXN0OgpyYXZpIHJ2Sk5sazVqd0xYSzY6MTY3OjE6bTAwMDAsbTMyMjovdXNyL2d1ZXN0OgpwancgeE5ReS8vR0RhOEZGZzoxNzA6MTptNjUzNCxtMzAxOi91c3IvZ3Vlc3Q6L2Jpbi9jc2gKamhjIEZ1ZUphdS94R2g3VEk6MTcxOjE6Oi91c3IvZ3Vlc3Q6CmxjayBEUnc0cDBtc01MeERrOjE3MjoxOm02NTMyLG0xNDk6L3Vzci9ndWVzdDoKbW9oIGZXVkVmeHdJb3g4dGM6MjEzOjE6bTc4NDIsbTIxMixob21lOi91c3IvZ3Vlc3Q6CmNtYiBqb1Z1UkY0ZGpnNUMuOjIxNDoxOm0xNjYwLG0wMjU6L3Vzci9ndWVzdDoKZGF2ZSBBQmZYaU8wY01jN3IuOjIyNToxOm1oODQ1MSxtMDQwOi91c3IvZ3Vlc3Q6Cm1paGFsaXMgbXdaYThLWEhSemtxRToyMzA6MTptMjAxOSxtMjg1Oi91c3IvbWloYWxpczoKdGdzIFhSRzZ0QlBjejBrcTI6MjMxOjE6bWg3NDYxLG0wMjU6L3Vzci90Z3M6L3Vzci9jdncvYmluL3NoCnV1Y3BhIFRxajlwN01iU2NrV006MjM4OjE6bWgyMDE5LG0yODUsdXVjcDovdXNyL3Nwb29sL3V1Y3BwdWJsaWM6L3Vzci9saWIvdXVjcC91dWNpY28KYnMgZlJ3UWI1ZDlPR0tmNjoyNTE6MTptMzg4NyxtMjA0Oi91c3IvZ3Vlc3Q6CndzYiBGQVY5WVl6OHA5RTdBOjI1NDoxOm0yNTkxLG0xNDg6L3Vzci9ndWVzdDoKdXVjcGIgQTNtUndEUTkzL2c2bzoyNTk6MTptaDAwMDAsbTAwMDovdXNyL3Nwb29sL3V1Y3BwdWJsaWM6L3Vzci9saWIvdXVjcC91dWNpY28KY3Z3IFF5QVl5dE9mVmx3VTY6MjY2OjE6bWgxNTQ4LG0zMDE6L3Vzci9jdnc6L3Vzci9jdncvYmluL3NoCmJzYiAyb3ZXOFJWVHRDSm5jOjI2ODoxOm1oODA5MixtMTUwOi91c3IvYnNiOgpkc2ogVVdhd1czaE4wc3hBTToyNzY6MTptaDY3ODQsbTE2NDovdXNyL2RzajoKbXJnIHM2SGczMkZyaE9BVHM6Mjc3OjE6bWg2Nzg0LG0xNjQ6L3Vzci9tcmc6Cmx3ZiBGRjI3YWtBako1TU9zOjI4MToxOm1oODA4NSxtaDEwMixsd2Y6L3Vzci9ndWVzdDoKa2FtIHplL2s2OE1zM2R0aGc6Mjg3OjE6bTU1NzksbTA0ODovdXNyL2d1ZXN0OgplanMgL2N5QlVrYlcuRDd1VToyOTA6MTptMDAwMCxtMDAwOi91c3IvZ3Vlc3Q6CmFyayB6L0lnRUFRWUlCcE93OjI5MjoxOm1oNjk0NyxtMjE1LGFyazovdXNyL2FyazoKa2ZjIDdXNlpkaUR3YjNrWmM6MzAzOjE6bTY1ODEsbTI2NjovdXNyL2d1ZXN0Ogpyb2IgeE9rbWtjT2UzTnJnYzozMDQ6MTptMDEzMCxtMzIyOi91c3IvZ3Vlc3Q6CnRoZW8gY3NjV3U4c1k3TFhhTTozMDc6MTptODQxNyxtMTY5Oi91c3IvZ3Vlc3Q6L2Jpbi9zaApkanIgMUprL1k3MjlnWk9TNjozMDk6MTpNNzcwMSxNMDk3Oi91c3IvZ3Vlc3Q6CndtYyA5SWpVSUthSDlKM0JROjMxMjoxOm1oODQ0NCxtMDUwLHdtY286L3Vzci9ndWVzdDoKYmFydCAvakVkcXVUS1cueXRNOjMxMzoxOjovdXNyL2d1ZXN0Oi9iaW4vc2gKc2FsbHkgQi9mU1BUb1dlcDVEUTozMTQ6MTo6L3Vzci9ndWVzdDovYmluL3NoCmVoZyBrRERtVjdFVjZSZ2IyOjMyMDoxOm1oODczMixtMDUwLGVoZzovdXNyL2VoZzoKZGRzIG03UW1ZTk10Z2o4OWc6MzI0OjE6Oi91c3IvZGRzOgpsaWJyIHNvcnJ5OjMzMDoxOjovdXNyL21lbC9ib29rczoKZGJtIDdBZThkRE5tVDAwYkk6MzM0OjE6bTg4OTYsbTA5MTovdXNyL2d1ZXN0Ogpzcm0gdzd0MWR4aW1lN3Y2RTozNjI6MTo6L3Vzci9zcm06Y3NoCmpraCBlOWZ1aU9GYkZJU09rOjM2MzoxOjovdXNyL2d1ZXN0OgphZWsgSUlpb1p5NWhUN2M0bzozNjU6MTo6L3Vzci9ndWVzdDoKdGFjIHdNNE14YXVqcFVkNUU6Mzc3OjE6bWgwMDAwLG0wMDA6L3Vzci90YWM6Cmp3ZyBtMGd5V3ZOcGZ2NW1rOjQ1NDoxOm1oODYzMixtMzM2Oi91c3IvandnOgpoYW5pYSBrVWpwUFVoTk1tcXMuOjUwMToxOjovdXNyL2d1ZXN0OgpqZXJxIERyM29NL1MycGwyalk6NTAyOjE6Oi91c3IvamVycS93cmFwOgpranMgUVZLRkFMZGZneUNwdzo1MDM6MTo6L3Vzci90Z3Mva2pzOgpqaW0gRFA2dDBYVndsV09xdzo2MzI6MTo6L3Vzci9ndWVzdDoKYndrMSBzZUJRSXdCNlJRcTlzOjk5OToxOm1oMTU0OCxtMzAxOi91c3IvYndrOgpjbGFpcmUgdDZNMHVEeENFN2g3RTozMjg6MTptaDkzMjMsbTE0NzovdXNyL2NsYWlyZToKZWdjIHhaWDNSUW05UjR3My46Mjk3OjE6bTAwMDAsbTAwMDovdXNyL2VnYzoKcm9vdCBGbllrMkFSb1NxeTVzOjA6MTptMDEzMCxtMzIyOi86CmRhZW1vbiB4OjE6MTptMDAwMCxtMDAwOi86CnN5cyBzb3JyeToyOjI6bTAxMzAsbTMyMjovdXNyL3N5czoKYmluIHNvcnJ5OjM6NDptMDEzMCxtMzIyOi9iaW46CnJobSBKeG9pLzVXUmtlU2YyOjU6MTptMDEzMCxtMzIyOi91c3IvZ3Vlc3Q6CmtlbiBYLjY4d2QxLmlqYXlNOjY6MTptMDEzMCxtMzIyOi91c3IvZ3Vlc3Q6CmRtciBDNHUzZEpXYmc3UkNrOjc6MTptaDEwOTIsbTA2OTovdXNyL2d1ZXN0L2RtcjoKZG91ZyBLaTcxY3JXR3h3L3lNOjg6MTptMTY2MCxtMDI1Oi91c3IvZ3Vlc3Q6CmJ3ayBjSS94Q1RRSWhMaUlzOjk6MTptaDE1NDgsbTMwMTovdXNyL2J3azoKZ3JlZyBhUC9hU3ZwcnZOempzOjEwOjE6bTAxMzAsbTMyMjovdXNyL2d1ZXN0Ogp0ZGsgQnBxRlp4TTFPTThmczoxMjoxOm0wMTMwLG0zMjI6L3Vzci90ZGs6CmF2YSAzOXBFNU00OTdBeHhBOjE1OjE6bTEzNTcsbTI0MjovdXNyL2F2YToKc2NqIHk5Mzdwa1JpMFZrU1E6MjQ6MTptNTE5MCxtMjkyOi91c3IvZ3Vlc3Q6Cm1lbCBXZFIzSWpHbXRhdHFFOjI2OjE6bTIwMTksbTI4NSxwb3VuY2UsbGVzazovdXNyL2d1ZXN0OgphZ2YgWDN5UURraXFXbVBKZzozNDoxOm0xNjk5LG0yNDU6L3Vzci9ndWVzdDoKbGxjIFovbDI1UzJnYUZuN1U6NDE6MTptMTY1MCxtMzI0Oi91c3IvZ3Vlc3Q6CmxlbSBKdXZrU1FVRWx2N21FOjQzOjE6bTAyMjAsbTE1NyxsOi91c3IvZ3Vlc3Q6CnV1Y3Agc29ycnk6NDg6MTptaDIwMTksbTI4NSxub3dpdHo6L3Vzci9zcG9vbC91dWNwOgpudXVjcCB2UjEvcUdUMHRUbUtZOjQ4OjE6bWgyMDE5LG0yODUsdXVjcDovdXNyL3Nwb29sL3V1Y3BwdWJsaWM6L3Vzci9saWIvdXVjcC91dWNpY28KZHV1Y3AgRnZMV0lnbmY3L1lwczo0ODoxOm1oMjAxOSxtMjg1LG5vd2l0ejovdXNyL3Nwb29sL3V1Y3A6CnNwbSBOZVVMZ0F6Y0NJRTdROjQ5OjE6bTE5ODgsbTMyMjovdXNyL2d1ZXN0OgptYiA1cW1STUg1NTNiTnJROjgzOjE6bTUxNjMsbTIwNzovdXNyL2d1ZXN0OgpzaWYgWUV4SDBEcHZzUDZ3Njo5MToxOm01MTkyLG0wNDQ6L3Vzci9ndWVzdDoKZG90IGNUaHNVLlFzSVJOZ3c6OTk6MTptNTU3OSxtMDQ4Oi91c3IvZ3Vlc3Q6CnJqZSB0aTBKc1AxbjZmSU1jOjEwOToxOm01NDI5LG0wOTYsamFuZTovdXNyL2d1ZXN0Ogp2Z2wgU1VjVDVpNTRacjk3TToxMTI6MTptNTU3OSxtMDQ4Oi91c3IvZ3Vlc3Q6CmpydiBHYW92MUZhY3dKV1JrOjExNDoxOm0zODg3LG0yMDQ6L3Vzci9ndWVzdDoKbmxzIDhsWnlv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ICAgPSAiKzEgODAxIDU4MSA1MjU0IiwKJSUlICAgICBGQVggICAgICAgICAgICAgPSAiKzEgODAxIDU4MSA0MTQ4IiwKJSUlICAgICBjaGVja3N1bSAgICAgICAgPSAiNTA2NzMgNDA2NzAgMTk2MDMzIDE3ODc4MjkiLAolJSUgICAgIGVtYWlsICAgICAgICAgICA9ICJiZWViZSBhdCBtYXRoLnV0YWguZWR1IChJbnRlcm5ldCkiLAolJSUgICAgIGNvZGV0YWJsZSAgICAgICA9ICJJU08vQVNDSUkiLAolJSUgICAgIGtleXdvcmRzICAgICAgICA9ICJiaWJsaW9ncmFwaHksIENBQ00sIENvbW11bmljYXRpb25zIG9mIHRoZQolJSUgICAgICAgICAgICAgICAgICAgICAgICBBQ00iLAolJSUgICAgIHN1cHBvcnRlZCAgICAgICA9ICJ5ZXMiLAolJSUgICAgIGRvY3N0cmluZyAgICAgICA9ICJUaGlzIGlzIGEgYmlibGlvZ3JhcGh5IG9mIHRoZSBqb3VybmFsCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIENvbW11bmljYXRpb25zIG9mIHRoZSBBQ00sIGNvdmVyaW5nCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIChpbmNvbXBsZXRlbHkpIDE5NzAgLS0gMTk3OS4KJSUlCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIEF0IHZlcnNpb24gMi4wOSwgdGhlIHllYXIgY292ZXJhZ2UgbG9va2VkCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIGxpa2UgdGhpczoKJSUlCiUlJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTk2MSAoICAxKSAgICAgMTk3MiAoMTY4KSAgICAgMTk4MyAoICAwKQolJSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5NjIgKCAgMSkgICAgIDE5NzMgKDE1OCkgICAgIDE5ODQgKCAgMCkKJSUlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOTYzICggIDIpICAgICAxOTc0ICgxMjcpICAgICAxOTg1ICggIDIpCiUlJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTk2NCAoICAyKSAgICAgMTk3NSAoMTA3KSAgICAgMTk4NiAoICAwKQolJSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5NjUgKCAgMSkgICAgIDE5NzYgKCA5NykgICAgIDE5ODcgKCAgMCkKJSUlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOTY2ICggIDIpICAgICAxOTc3ICgxMTcpICAgICAxOTg4ICggIDApCiUlJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTk2NyAoICAxKSAgICAgMTk3OCAoMTE4KSAgICAgMTk4OSAoICAwKQolJSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5NjggKCAgMSkgICAgIDE5NzkgKCA3OCkgICAgIDE5OTAgKCAgMikKJSUlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOTY5ICggIDMpICAgICAxOTgwICggIDEpICAgICAxOTkxICggIDQpCiUlJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTk3MCAoMTU3KSAgICAgMTk4MSAoICAyKSAgICAgMTk5MiAoICAxKQolJSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5NzEgKDEwNCkgICAgIDE5ODIgKCAgMSkKJSUlCiUlJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJ0aWNsZTogICAgICAgMTI1MgolJSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJvb2s6ICAgICAgICAgICAgIDIKJSUlICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJblByb2NlZWRpbmdzOiAgICAxCiUlJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFudWFsOiAgICAgICAgICAgMQolJSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hc3RlcnNUaGVzaXM6ICAgIDEKJSUlICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQaGRUaGVzaXM6ICAgICAgICAxCiUlJQolJSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvdGFsIGVudHJpZXM6IDEyNTgKJSUlCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBzaXplIG9mIHRoZSBvcmlnaW5hbCBjYWNtLmJpYiBmaWxlCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIGNvdmVyaW5nIDE5NTgtLTE5OTYgYmVjYW1lIHRvbyBsYXJnZSAoYWJvdXQKJSUlICAgICAgICAgICAgICAgICAgICAgICAgNDAwMCBlbnRyaWVzKSBmb3IgQmliVGVYIGFuZCBUZVggdG8gaGFuZGxlLAolJSUgICAgICAgICAgICAgICAgICAgICAgICBzbyBhdCB2ZXJzaW9uIDEuNDQsIGl0IHdhcyBzcGxpdCBpbnRvCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIGNhY20xOTUwLmJpYiwgY2FjbTE5NjAuYmliLCBjYWNtMTk3MC5iaWIsCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIGNhY20xOTgwLmJpYiwgYW5kIGNhY20xOTkwLmJpYiwgZWFjaCBjb3ZlcmluZwolJSUgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZGVjYWRlIHN0YXJ0aW5nIHdpdGggdGhlIHllYXIgZW1iZWRkZWQgaW4KJSUlICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZpbGVuYW1lLiAgVmVyc2lvbiBudW1iZXJzIGZvciB0aGVzZQolJSUgICAgICAgICAgICAgICAgICAgICAgICBmaWxlcyBiZWdpbiBhdCAyLjAwLgolJSUKJSUlICAgICAgICAgICAgICAgICAgICAgICAgVm9sdW1lcyBmcm9tIHRoZSAxOTkwcyBhdmVyYWdlIG1vcmUgdGhhbiAyMDAKJSUlICAgICAgICAgICAgICAgICAgICAgICAgYXJ0aWNsZXMgeWVhcmx5LCBzbyBhIGNvbXBsZXRlIGJpYmxpb2dyYXBoeQolJSUgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhpcyBqb3VybmFsIGNvdWxkIGNvbnRhaW4gbW9yZSB0aGFuIDYwMDAKJSUlICAgICAgICAgICAgICAgICAgICAgICAgZW50cmllcyBmcm9tIDE5NTggdG8gMjAwMC4KJSUlCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIFRoZXNlIGJpYmxpb2dyYXBoaWVzIGFsc28gaW5jbHVkZSBBQ00KJSUlICAgICAgICAgICAgICAgICAgICAgICAgQWxnb3JpdGhtcyAxLS00OTIuICBGb3IgQWxnb3JpdGhtcyA0OTMtLTY4NiwKJSUlICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIEFsZ29yaXRobSA1NjgsIHB1Ymxpc2hlZCBpbiBBQ00KJSUlICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNhY3Rpb25zIG9uIFByb2dyYW1taW5nIExhbmd1YWdlcyBhbmQKJSUlICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtcyAoVE9QTEFTKSwgc2VlIHRoZSBjb21wYW5pb24KJSUlICAgICAgICAgICAgICAgICAgICAgICAgYmlibGlvZ3JhcGhpZXMsIHRvbXMuYmliIGFuZCB0b3BsYXMuYmliLgolJSUKJSUlICAgICAgICAgICAgICAgICAgICAgICAgQWxsIHB1Ymxpc2hlZCBSZW1hcmtzIGFuZCBDb3JyaWdlbmRhIGFyZQolJSUgICAgICAgICAgICAgICAgICAgICAgICBjcm9zcy1yZWZlcmVuY2VkIGluIGJvdGggZGlyZWN0aW9ucywgc28KJSUlICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBjaXRpbmcgYSBwYXBlciB3aWxsIGF1dG9tYXRpY2FsbHkKJSUlICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGUgY2l0YXRpb25zIGZvciB0aG9zZSBSZW1hcmtzIGFuZAolJSUgICAgICAgICAgICAgICAgICAgICAgICBDb3JyaWdlbmRhLiAgQ3Jvc3MtcmVmZXJlbmNlZCBlbnRyaWVzIGFyZQolJSUgICAgICAgICAgICAgICAgICAgICAgICBkdXBsaWNhdGVkIGluIGNhY20xOSouYmliIGFuZCB0b21zLmJpYiwgc28KJSUlICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBlYWNoIGlzIGNvbXBsZXRlbHkgc2VsZi1jb250YWluZWQuCiUlJQolJSUgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2UgY29kZSBmb3IgQUNNIEFsZ29yaXRobXMgZnJvbSAzODAKJSUlICAgICAgICAgICAgICAgICAgICAgICAgb253YXJkcywgd2l0aCBzb21lIG9taXNzaW9ucywgaXMgYXZhaWxhYmxlCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIHZpYSB0aGUgTmV0bGliIHNlcnZpY2UgYXQKJSUlICAgICAgICAgICAgICAgICAgICAgICAgaHR0cDovL25ldGxpYi5vcm5sLmdvdi8sIGFuZAolJSUgICAgICAgICAgICAgICAgICAgICAgICBmdHA6Ly9uZXRsaWIuYmVsbC1sYWJzLmNvbS9uZXRsaWIvdG9tcy4KJSUlCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIFRoZXJlIGlzIGEgV29ybGQgV2lkZSBXZWIgc2VhcmNoIGZhY2lsaXR5CiUlJSAgICAgICAgICAgICAgICAgICAgICAgIGZvciBhcnRpY2xlcyBwdWJsaXNoZWQgaW4gdGhpcyBqb3VybmFsIGZyb20KJSUlICAgICAgICAgICAgICAgICAgICAgICAgMTk1OSB0byAxOTc5IGF0CiUlJSAgICAgICAgICAgICAgICAgICAgICAgIGh0dHA6Ly9jaWlyLmNzLnVtYXNzLmVkdS9jZ2ktYmluL3dlYl9xdWVyeV9mb3JtL3B1YmxpYy9jYWNtMi4xLgolJSUKJSUlICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGluaXRpYWwgZHJhZnQgb2YgZW50cmllcyBmb3IgMTk4MSAtLQolJSUgICAgICAgICAgICAgICAgICAgICAgICAxOTkwIHdhcyBleHRyYWN0ZWQgZnJvbSB0aGUgQUNNIENvbXB1dGluZwolJSUgICAgICAgICAgICAgICAgICAgICAgICBBcmNoaXZlIENEIFJPTSBmb3IgdGhlIDE5ODBzLCB3aXRoIG1hbnVhbAolJSUgICAgICAgICAgICAgICAgICAgICAgICBjb3JyZWN0aW9ucyBhbmQgYWRkaXRpb25zLiAgQWRkaXRpb25zIHdlcmUKJSUlICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBtYWRlIGZyb20gYWxsIG9mIHRoZSBiaWJsaW9ncmFwaGllcyBpbgolJSUgICAgICAgICAgICAgICAgICAgICAgICB0aGUgVGVYIFVzZXIgR3JvdXAgY29sbGVjdGlvbiwgZnJvbQolJSUgICAgICAgICAgICAgICAgICAgICAgICBiaWJsaW9ncmFwaGllcyBpbiB0aGUgYXV0aG9yJ3MgcGVyc29uYWwKJSUlICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXMsIGZyb20gdGhlIENvbXBlbmRleCBkYXRhYmFzZQolJSUgICAgICAgICAgICAgICAgICAgICAgICAoMTk3MC0tMTk3OSksIGZyb20gdGhlIElFRUUgSU5TUEVDIGRhdGFiYXNlCiUlJSAgICAgICAgICAgICAgICAgICAgICAgICgxOTcwLS0xOTc5KSwgZnJvbSB0YWJsZXMgb2YgY29udGVudHMKJSUlICAgICAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gYXQgaHR0cDovL3d3dy5hY20ub3JnL3B1YnMvY2FjbS8sCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gWmVudHJhbGJsYXR0IGZ1ciBNYXRoZW1hdGlrIE1hdGhlbWF0aWNzCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIEFic3RyYWN0cyBhdAolJSUgICAgICAgICAgICAgICAgICAgICAgICBodHRwOi8vd3d3LmVtaXMuZGUvY2dpLWJpbi9NQVRILywgZnJvbQolJSUgICAgICAgICAgICAgICAgICAgICAgICBiaWJsaW9ncmFwaGllcyBhdCBJbnRlcm5ldCBob3N0CiUlJSAgICAgICAgICAgICAgICAgICAgICAgIG5ldGxpYi5iZWxsLWxhYnMuY29tLCBhbmQgZnJvbSB0aGUgY29tcHV0ZXIKJSUlICAgICAgICAgICAgICAgICAgICAgICAgc2NpZW5jZSBiaWJsaW9ncmFwaHkgY29sbGVjdGlvbiBvbgolJSUgICAgICAgICAgICAgICAgICAgICAgICBmdHAuaXJhLnVrYS5kZSBpbiAvcHViL2JpYmxpb2dyYXBoeSB0byB3aGljaAolJSUgICAgICAgICAgICAgICAgICAgICAgICBtYW55IHBlb3BsZSBvZiBoYXZlIGNvbnRyaWJ1dGVkLiAgVGhlCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIHNuYXBzaG90IG9mIHRoaXMgY29sbGVjdGlvbiB3YXMgdGFrZW4gb24KJSUlICAgICAgICAgICAgICAgICAgICAgICAgNS1NYXktMTk5NCwgYW5kIGl0IGNvbnNpc3RzIG9mIDQ0MSBCaWJUZVgKJSUlICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXMsIDIsNjcyLDY3NSBsaW5lcywgMjA1LDI4OSBlbnRyaWVzLCBhbmQKJSUlICAgICAgICAgICAgICAgICAgICAgICAgNiwzNzUgPGF0PlN0cmluZ3t9IGFiYnJldmlhdGlvbnMsIG9jY3VweWluZwolJSUgICAgICAgICAgICAgICAgICAgICAgICA5NC44TUIgb2YgZGlzayBzcGFjZS4KJSUlCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIE51bWVyb3VzIGVycm9ycyBpbiB0aGUgc291cmNlcyBub3RlZCBhYm92ZQolJSUgICAgICAgICAgICAgICAgICAgICAgICBoYXZlIGJlZW4gY29ycmVjdGVkLiAgIFNwZWxsaW5nIGhhcyBiZWVuCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIHZlcmlmaWVkIHdpdGggdGhlIFVOSVggc3BlbGwgYW5kIEdOVSBpc3BlbGwKJSUlICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbXMgdXNpbmcgdGhlIGV4Y2VwdGlvbiBkaWN0aW9uYXJ5CiUlJSAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlZCBpbiB0aGUgY29tcGFuaW9uIGZpbGUgd2l0aCBleHRlbnNpb24KJSUlICAgICAgICAgICAgICAgICAgICAgICAgLnNvay4KJSUlCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIEJpYlRlWCBjaXRhdGlvbiB0YWdzIGFyZSB1bmlmb3JtbHkgY2hvc2VuCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIGFzIG5hbWU6eWVhcjphYmJyZXYsIHdoZXJlIG5hbWUgaXMgdGhlCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIGZhbWlseSBuYW1lIG9mIHRoZSBmaXJzdCBhdXRob3Igb3IgZWRpdG9yLAolJSUgICAgICAgICAgICAgICAgICAgICAgICB5ZWFyIGlzIGEgNC1kaWdpdCBudW1iZXIsIGFuZCBhYmJyZXYgaXMgYQolJSUgICAgICAgICAgICAgICAgICAgICAgICAzLWxldHRlciBjb25kZW5zYXRpb24gb2YgaW1wb3J0YW50IHRpdGxlCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIHdvcmRzLiBDaXRhdGlvbiB0YWdzIHdlcmUgYXV0b21hdGljYWxseQolJSUgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZWQgYnkgc29mdHdhcmUgZGV2ZWxvcGVkIGZvciB0aGUKJSUlICAgICAgICAgICAgICAgICAgICAgICAgQmliTmV0IFByb2plY3QuCiUlJQolJSUgICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGJpYmxpb2dyYXBoeSwgZW50cmllcyBhcmUgc29ydGVkIGluCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpY2F0aW9uIG9yZGVyIHdpdGhpbiBlYWNoIGpvdXJuYWwsCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nIGJpYnNvcnQgLWJ5dm9sdW1lLgolJSUKJSUlICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGNoZWNrc3VtIGZpZWxkIGFib3ZlIGNvbnRhaW5zIGEgQ1JDLTE2CiUlJSAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrc3VtIGFzIHRoZSBmaXJzdCB2YWx1ZSwgZm9sbG93ZWQgYnkgdGhlCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIGVxdWl2YWxlbnQgb2YgdGhlIHN0YW5kYXJkIFVOSVggd2MgKHdvcmQKJSUlICAgICAgICAgICAgICAgICAgICAgICAgY291bnQpIHV0aWxpdHkgb3V0cHV0IG9mIGxpbmVzLCB3b3JkcywgYW5kCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnMuICBUaGlzIGlzIHByb2R1Y2VkIGJ5IFJvYmVydAolJSUgICAgICAgICAgICAgICAgICAgICAgICBTb2xvdmF5J3MgY2hlY2tzdW0gdXRpbGl0eS4iLAolJSUgIH0KJSUlID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpAUHJlYW1ibGV7IlxpbnB1dCBiaWJuYW1lcy5zdHkgIiAjICJcaW5wdXQgcGF0aC5zdHkgIiAjICJcZGVmIFxUTSB7JHt9Xntcc2MgVE19JH0gIiAjICJcaHlwaGVuYXRpb257IGFsLXBoYS1tZXItaWMgQmFsei1lciBCbG9tLXF1aXN0IEJvLXRhLWZvLWdvIEJyYW4tZGluIEJyYW5zLWNvbWIgQnUtdGVyYSBDaHJpcy10aW5hIENocmlzdC1vLWZpLWRlcyBDb2wtbGlucyBDb3ItZGVsbCBkYXRhLWJhc2UgZWNvbi1vbWllcyBGbGV0Y2gtZXIgZmxvdy1jaGFydCBmbG93LWNoYXJ0cyBGcnktc3R5ayBnZS1kYW5rLWVuIEdhci1maW5rLWVsIEdlLWhhLW5pIEdsdXNoLWtvIEdvdWQtcmVhdSBHdWEtZGFuLWdvIEhhcmktZGkgSGF3LXRob3JuIEhlbS1tZW4tZGluZy1lciBIb3Itby13aXR6IEhvdXItdml0eiBIaXJzY2gtYmVyZyBJa2UtZGEgS2EtY2hpLXR2aS1jaHlhbi11LWt1bCBLYXQtemUtbmVsLXNvbiBLaXR6LW1pbGxlciBLby1iYS15YXNoaSBMZS1NZS10YXktZXIgS2VuLW5lLWR5IExhdy1yZW5jZSBNYWMta2F5IE1haS1uZXQtdGkgTWFyLXNhLWdsaWEgTWF4LXdlbGwgTWVyLW5lciBNby1yYW4tZGkgTmEtcmF5LWFuIE5ldy1lbGwgTmljaC1vbHMgcGFyYS1kaWdtIHBhdC1lbnQtZWQgUGhpLWxvLWt5cC1yb3UgUHJlcC1hLXJhLXRhIHBzZXUtZG8tY2hhaW4taW5nIFFVSUstU0NSSVBUIFJhZC1lLW1hY2gtZXIgcmUtZXZhbC11LWEtdGlvbiByZS13aW5kIFJvcy13aXRoYSBTY2hldS1lci1tYW5uIFNjaHdhY2gtaGVpbSBTY2hvYi1iZW5zIFNjaG9uLWJlcmcgU2hvLXNoYS1uaSBTaS10aGEtcmEtbWEgU2t3YS1yZWMta2kgU3RyZWNrLWVyIFN0cmluLWdpLW5pIFRlcy1sZXIgVGUtenUta2EgVGV1LWhvLWxhIFRpbGwtcXVpc3QgVG93bi1zZW5kIFRzaS1jaHJpLXR6aXMgVHVyLXNraSBWdWlsbGUtbWluIFdhbGQtaW5nLWVyIFphLWJvLXJvdy1za2kgWmEtbW9yYSB9In0KCiU9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQolIEFja25vd2xlZGdlbWVudCBhYmJyZXZpYXRpb25zOgoKQFN0cmluZ3thY2stbmhmYiA9ICJOZWxzb24gSC4gRi4gQmVlYmUsIENlbnRlciBmb3IgU2NpZW50aWZpYyBDb21wdXRpbmcsIERlcGFydG1lbnQgb2YgTWF0aGVtYXRpY3MsIFVuaXZlcnNpdHkgb2YgVXRhaCwgU2FsdCBMYWtlIENpdHksIFVUIDg0MTEyLCBVU0EsIFRlbDogKzEgODAxIDU4MSA1MjU0LCBGQVg6ICsxIDgwMSA1ODEgNDE0OCwgZS1tYWlsOiBccGF0aHxiZWViZUBtYXRoLnV0YWguZWR1fCJ9CgpAU3RyaW5ne2Fjay1uaiA9ICJOb3JiZXJ0IEp1ZmZhLCAyNDQ1IE1pc3Npb24gQ29sbGVnZSBCbHZkLiBTYW50YSBDbGFyYSwgQ0EgOTUwNTQgVVNBIGVtYWlsOiBccGF0aD1ub3JiZXJ0QGlpdC5jb209In0KCiU9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQolIEpvdXJuYWwgYWJicmV2aWF0aW9uczoKCkBTdHJpbmd7ai1DQUNNID0gIkNvbW11bmljYXRpb25zIG9mIHRoZSBBQ00ifQoKQFN0cmluZ3tqLUNPTVAtU1VSViA9ICJDb21wdXRpbmcgU3VydmV5cyJ9CgpAU3RyaW5ne2otSi1BQ00gPSAiSm91cm5hbCBvZiB0aGUgQUNNIn0KCkBTdHJpbmd7ai1NQU5BR0VNRU5ULVNDSUVOQ0UgPSAiTWFuYWdlbWVudCBTY2llbmNlIn0KCkBTdHJpbmd7ai1TSUFNLUotQ09NUFVUID0gIlNJQU0gSm91cm5hbCBvZiBDb21wdXRpbmcifQoKQFN0cmluZ3tqLVNQRSA9ICAiU29mdHdhcmUgLS0tIFByYWN0aWNlIGFuZCBFeHBlcmllbmNlIn0KCkBTdHJpbmd7ai1UT01TID0gIkFDTSBUcmFuc2FjdGlvbnMgb24gTWF0aGVtYXRpY2FsIFNvZnR3YXJlIn0KCiU9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQolIFB1Ymxpc2hlciBhYmJyZXZpYXRpb25zOgoKQFN0cmluZ3twdWItQU5TSSA9ICJBbWVyaWNhbiBOYXRpb25hbCBTdGFuZGFyZHMgSW5zdGl0dXRlIn0KCkBTdHJpbmd7cHViLUFOU0k6YWRyID0gIjE0MzAgQnJvYWR3YXksIE5ldyBZb3JrLCBOWSAxMDAxOCwgVVNBIn0KCkBTdHJpbmd7cHViLUFXID0gIkFke1wtZH1pe1wtc31vbi1XZXN7XC1sfWV5In0KCkBTdHJpbmd7cHViLUFXOmFkciA9ICJSZWFkaW5nLCBNQSwgVVNBIn0KCkBTdHJpbmd7cHViLVNVQ1NMSSA9ICJTdGFuZm9yZCBVbml2ZXJzaXR5IENlbnRlciBmb3IgdGhlIFN0dWR5IG9mIExhbmd1YWdlIGFuZCBJbmZvcm1hdGlvbiJ9CgpAU3RyaW5ne3B1Yi1TVUNTTEk6YWRyID0gIlN0YW5mb3JkLCBDQSwgVVNBIn0KCkBTdHJpbmd7cHViLVNWID0gIlNwcmluZ3tcLX1lci1WZXJ7XC19bGFnIn0KCkBTdHJpbmd7cHViLVNWOmFkciA9ICJCZXJsaW4sIEdlcm1hbnl+LyBIZWlkZWxiZXJnLCBHZXJtYW55fi8gTG9uZG9uLCBVS34vIGV0Yy4ifQoKJT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiUgQmlibGlvZ3JhcGh5IGVudHJpZXMgKGNyb3NzLXJlZmVyZW5jZXMgaW4gbm90ZXMgbmVjZXNzaXRhdGUKJSBpbmNsdXNpb24gb2YgYSBmZXcgYWRkaXRpb25hbCBlbnRyaWVzIHB1Ymxpc2hlZCBlbHNld2hlcmUpOgoKQEFydGljbGV7SGVybmRvbjoxOTYxOkFBUywKICBhdXRob3IgPSAgICAgICAiSi4gUi4gSGVybmRvbiIsCiAgdGl0bGUgPSAgICAgICAgIntBQ019IEFsZ29yaXRobSA0OTogU3BoZXJpY2FsIHtOZXVtYW5ufSBGdW5jdGlvbiIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICI0IiwKICBudW1iZXIgPSAgICAgICAiNCIsCiAgcGFnZXMgPSAgICAgICAgIjE3OSIsCiAgbW9udGggPSAgICAgICAgYXByLAogIHllYXIgPSAgICAgICAgICIxOTYxIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVGh1IFNlcCAwOCAwOTo0Nzo1MCAxOTk0IiwKICBub3RlID0gICAgICAgICAiU2VlIGFsc28gXGNpdGV7Q29sZW1hbjoxOTc4OlJBU30uIiwKfQoKQEFydGljbGV7TWVybmVyOjE5NjI6QUFDLAogIGF1dGhvciA9ICAgICAgICJKLiBOLiBNZXJuZXIiLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gMTQ5OiBDb21wbGV0ZSBFbGxpcHRpYyBJbnRlZ3JhbCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICI1IiwKICBudW1iZXIgPSAgICAgICAiMTIiLAogIHBhZ2VzID0gICAgICAgICI2MDUiLAogIG1vbnRoID0gICAgICAgIGRlYywKICB5ZWFyID0gICAgICAgICAiMTk2MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlRodSBTZXAgMDggMDk6NDc6NTAgMTk5NCIsCiAgbm90ZSA9ICAgICAgICAgIlNlZSBhbHNvIFxjaXRle1Nrb3ZnYWFyZDoxOTc4OlJDRX0uIiwKfQoKQEFydGljbGV7THVkd2lnOjE5NjM6QUFJLAogIGF1dGhvciA9ICAgICAgICJPLiBHLiBMdWR3aWciLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gMTc5OiBJbmNvbXBsZXRlIEJldGEgUmF0aW8iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiNiIsCiAgbnVtYmVyID0gICAgICAgIjYiLAogIHBhZ2VzID0gICAgICAgICIzMTQiLAogIG1vbnRoID0gICAgICAgIGp1biwKICB5ZWFyID0gICAgICAgICAiMTk2MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlRodSBTZXAgMDggMDk6NDc6NTAgMTk5NCIsCiAgbm90ZSA9ICAgICAgICAgIlNlZSBhbHNvIFxjaXRle1Bpa2U6MTk3NjpSSUJ9LiIsCn0KCkBBcnRpY2xle0thc2U6MTk2MzpBQVQsCiAgYXV0aG9yID0gICAgICAgIlIuIEguIEthc2UiLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gMjE5OiBUb3BvbG9naWNhbCBPcmRlcmluZyBmb3Ige1BlcnR9IE5ldHdvcmtzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjYiLAogIG51bWJlciA9ICAgICAgICIxMiIsCiAgcGFnZXMgPSAgICAgICAgIjczOC0tNzM5IiwKICBtb250aCA9ICAgICAgICBkZWMsCiAgeWVhciA9ICAgICAgICAgIjE5NjMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUaHUgU2VwIDA4IDA5OjQ3OjUxIDE5OTQiLAogIG5vdGUgPSAgICAgICAgICJTZWUgYWxzbyBcY2l0ZXtUZW5uZXk6MTk3NzpSQVR9LiIsCn0KCkBBcnRpY2xle0dhdXRzY2hpOjE5NjQ6QUFCLAogIGF1dGhvciA9ICAgICAgICJXLiBHYXV0c2NoaSIsCiAgdGl0bGUgPSAgICAgICAgIntBQ019IEFsZ29yaXRobSAyMzY6IHtCZXNzZWx9IEZ1bmN0aW9ucyBvZiB0aGUgRmlyc3QgS2luZCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICI3IiwKICBudW1iZXIgPSAgICAgICAiOCIsCiAgcGFnZXMgPSAgICAgICAgIjQ3OS0tNDgwIiwKICBtb250aCA9ICAgICAgICBhdWcsCiAgeWVhciA9ICAgICAgICAgIjE5NjQiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUaHUgU2VwIDA4IDA5OjQ3OjU0IDE5OTQiLAogIG5vdGUgPSAgICAgICAgICJTZWUgYWxzbyBcY2l0ZXtTa292Z2FhcmQ6MTk3NTpSQkZ9LiIsCn0KCkBBcnRpY2xle0Jvb3Rocm95ZDoxOTY0OkFBRywKICBhdXRob3IgPSAgICAgICAiSi4gQm9vdGhyb3lkIiwKICB0aXRsZSA9ICAgICAgICAie0FDTX0gQWxnb3JpdGhtIDI0NjogR3JheWNvZGUiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiNyIsCiAgbnVtYmVyID0gICAgICAgIjEyIiwKICBwYWdlcyA9ICAgICAgICAiNzAxIiwKICBtb250aCA9ICAgICAgICBkZWMsCiAgeWVhciA9ICAgICAgICAgIjE5NjQiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUaHUgU2VwIDA4IDA5OjQ3OjU0IDE5OTQiLAogIG5vdGUgPSAgICAgICAgICJTZWUgYWxzbyBcY2l0ZXtNaXNyYToxOTc1OlJHLEVyOjE5ODU6Ukd9LiIsCn0KCkBBcnRpY2xle0dhdXRzY2hpOjE5NjU6QUFMLAogIGF1dGhvciA9ICAgICAgICJXLiBHYXV0c2NoaSIsCiAgdGl0bGUgPSAgICAgICAgIntBQ019IEFsZ29yaXRobSAyNTk6IHtMZWdlbmRyZX0gRnVuY3Rpb25zIGZvciBBcmd1bWVudHMgTGFyZ2VyIHRoYW4gT25lIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjgiLAogIG51bWJlciA9ICAgICAgICI4IiwKICBwYWdlcyA9ICAgICAgICAiNDg4LS00OTIiLAogIG1vbnRoID0gICAgICAgIGF1ZywKICB5ZWFyID0gICAgICAgICAiMTk2NSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlRodSBTZXAgMDggMDk6NDc6NTQgMTk5NCIsCiAgbm90ZSA9ICAgICAgICAgIlNlZSBhbHNvIFxjaXRle0phbnNlbjoxOTc3OlJMRn0uIiwKfQoKQEFydGljbGV7RmxldGNoZXI6MTk2NjpBQUksCiAgYXV0aG9yID0gICAgICAgIlcuIEZsZXRjaGVyIiwKICB0aXRsZSA9ICAgICAgICAie0FDTX0gQWxnb3JpdGhtIDI4NDogSW50ZXJjaGFuZ2Ugb2YgVHdvIEJsb2NrcyBvZiBEYXRhIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjkiLAogIG51bWJlciA9ICAgICAgICI1IiwKICBwYWdlcyA9ICAgICAgICAiMzI2IiwKICBtb250aCA9ICAgICAgICBtYXksCiAgeWVhciA9ICAgICAgICAgIjE5NjYiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUaHUgU2VwIDA4IDA5OjQ3OjU0IDE5OTQiLAogIG5vdGUgPSAgICAgICAgICJTZWUgYWxzbyBcY2l0ZXtJdG86MTk3NjpSSVR9LiIsCn0KCkBBcnRpY2xle0hpbGw6MTk2NzpBQUMsCiAgYXV0aG9yID0gICAgICAgIkkuIEQuIEhpbGwgYW5kIE0uIEMuIFBpa2UiLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gMjk5OiBDaGktU3F1YXJlZCBJbnRlZ3JhbCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMCIsCiAgbnVtYmVyID0gICAgICAgIjQiLAogIHBhZ2VzID0gICAgICAgICIyNDMtLTI0NCIsCiAgbW9udGggPSAgICAgICAgYXByLAogIHllYXIgPSAgICAgICAgICIxOTY3IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVGh1IFNlcCAwOCAwOTo0Nzo1NCAxOTk0IiwKICBub3RlID0gICAgICAgICAiU2VlIGFsc28gXGNpdGV7TG96eToxOTc2OlJDUyxIaWxsOjE5ODU6UkNTfS4iLAp9CgpAQXJ0aWNsZXtEaWprc3RyYToxOTY4OkdTQywKICBhdXRob3IgPSAgICAgICAiRWRzZ2VyIFd5YmUgRGlqa3N0cmEiLAogIHRpdGxlID0gICAgICAgICJHbyB0byBzdGF0ZW1lbnQgY29uc2lkZXJlZCBoYXJtZnVsIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjExIiwKICBudW1iZXIgPSAgICAgICAiMyIsCiAgcGFnZXMgPSAgICAgICAgIjE0Ny0tMTQ4IiwKICBtb250aCA9ICAgICAgICBtYXIsCiAgeWVhciA9ICAgICAgICAgIjE5NjgiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIG5vdGUgPSAgICAgICAgICJUaGlzIHBhcGVyIGluc3BpcmVkIHNjb3JlcyBvZiBvdGhlcnMsIHB1Ymxpc2hlZCBtYWlubHkgaW4gU0lHUExBTiBOb3RpY2VzIHVwIHRvIHRoZSBtaWQtMTk4MHMuIFRoZSBiZXN0LWtub3duIGlzIFxjaXRle0tudXRoOjE5NzQ6U1BHfS4iLAp9CgpAQXJ0aWNsZXtBTlNJOjE5Njk6Q0ZTLAogIGF1dGhvciA9ICAgICAgICJ7QU5TSSBTdWJjb21taXR0ZWUgWDNKM30iLAogIHRpdGxlID0gICAgICAgICJDbGFyaWZpY2F0aW9uIG9mIHtGb3J0cmFufSBTdGFuZGFyZHMgLS0tIEluaXRpYWwgUHJvZ3Jlc3MiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTIiLAogIG51bWJlciA9ICAgICAgICI1IiwKICBwYWdlcyA9ICAgICAgICAiMjg5LS0yOTQiLAogIG1vbnRoID0gICAgICAgIG1heSwKICB5ZWFyID0gICAgICAgICAiMTk2OSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIk1vbiBBdWcgMjkgMTg6MjY6MjUgMTk5NCIsCiAgbm90ZSA9ICAgICAgICAgIlNlZSBhbHNvIFxjaXRle0FOU0k6MTk2NjpBRn0uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKfQoKQEFydGljbGV7V2lydGg6MTk2OTpNTUMsCiAgYXV0aG9yID0gICAgICAgIk4uIFdpcnRoIiwKICB0aXRsZSA9ICAgICAgICAiT24gTXVsdGlwcm9ncmFtbWluZywgTWFjaGluZSBDb2RpbmcsIGFuZCBDb21wdXRlciBPcmdhbml6YXRpb24iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTIiLAogIG51bWJlciA9ICAgICAgICI5IiwKICBwYWdlcyA9ICAgICAgICAiNDg5LS00OTgiLAogIG1vbnRoID0gICAgICAgIHNlcCwKICB5ZWFyID0gICAgICAgICAiMTk2OSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIkZyaSBKYW4gMTcgMTg6MjM6MjIgMTk5NyIsCiAgbm90ZSA9ICAgICAgICAgIlNlZSBjb3JyaWdlbmR1bSBcY2l0ZXtXaXJ0aDoxOTcwOkNNTX0uIiwKfQoKQEFydGljbGV7THVtOjE5NzA6TUFSLAogIGF1dGhvciA9ICAgICAgICJWLiBZLiBMdW0iLAogIHRpdGxlID0gICAgICAgICJNdWx0aS1BdHRyaWJ1dGUgUmV0cmlldmFsIHdpdGggQ29tYmluZWQgSW5kZXhlcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxIiwKICBudW1iZXIgPSAgICAgICAiMTEiLAogIHBhZ2VzID0gICAgICAgICI2NjAtLTY2NSIsCiAgbW9udGggPSAgICAgICAgbm92LAogIHllYXIgPSAgICAgICAgICIxOTcwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJzb3VyY2UgPSAgICAiZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EYXRhYmFzZS9XaWVkZXJob2xkLmJpYiIsCiAgYW5ub3RlID0gICAgICAgIkNvbnN0cnVjdGlvbiBvZiBjb21iaW5lZCBpbmRleGVzIHdpdGggZm9ybXVsYXMgZm9yIG51bWJlciBuZWVkZWQuIiwKfQoKQEFydGljbGV7TG93ZToxOTcwOkFTQywKICBhdXRob3IgPSAgICAgICAiVC4gQy4gTG93ZSIsCiAgdGl0bGUgPSAgICAgICAgIkF1dG9tYXRpYyBzZWdtZW50YXRpb24gb2YgY3ljbGljIHByb2dyYW0gc3RydWN0dXJlcyBiYXNlZCBvbiBjb25uZWN0aXZpdHkgYW5kIHByb2Nlc3NvciB0aW1pbmciLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTMiLAogIG51bWJlciA9ICAgICAgICIxIiwKICBwYWdlcyA9ICAgICAgICAiMy0tNiIsCiAgbW9udGggPSAgICAgICAgamFuLAogIHllYXIgPSAgICAgICAgICIxOTcwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTUwQyAoQ29tcGlsZXJzLCBpbnRlcnByZXRlcnMgYW5kIG90aGVyIHByb2Nlc3NvcnMpIiwKICBjb3Jwc291cmNlID0gICAiSW5mb3JtYXRpY3MgSW5jLiwgQmV0aGVzZGEsIE1ELCBVU0EiLAogIGtleXdvcmRzID0gICAgICJpbnB1dC1vdXRwdXQgcHJvZ3JhbXM7IG11bHRpcHJvZ3JhbW1pbmc7IHByb2dyYW0gcHJvY2Vzc29yczsgdGltZS1zaGFyaW5nIHByb2dyYW1zIiwKfQoKQEFydGljbGV7R2F1dHNjaGk6MTk3MDpSQ0MsCiAgYXV0aG9yID0gICAgICAgIldhbHRlciBHYXV0c2NoaSBhbmQgQnJ1Y2UgSi4gS2xlaW4iLAogIHRpdGxlID0gICAgICAgICJSZWN1cnNpdmUgY29tcHV0YXRpb24gb2YgY2VydGFpbiBkZXJpdmF0aXZlcyAtLS0ge0F9IHN0dWR5IG9mIGVycm9yIHByb3BhZ2F0aW9uIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiMSIsCiAgcGFnZXMgPSAgICAgICAgIjctLTkiLAogIG1vbnRoID0gICAgICAgIGphbiwKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY1UTA1IiwKICBNUm51bWJlciA9ICAgICAiNDYgMTExNSIsCiAgbXJyZXZpZXdlciA9ICAgIkQuIEYuIE1heWVycyIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFic3RyYWN0ID0gICAgICJBIGJyaWVmIHN0dWR5IGlzIG1hZGUgb2YgdGhlIHByb3BhZ2F0aW9uIG9mIGVycm9ycyBpbiBsaW5lYXIgZmlyc3Qtb3JkZXIgZGlmZmVyZW5jZSBlcXVhdGlvbnMuIFRoZSByZWN1cnNpdmUgY29tcHV0YXRpb24gb2Ygc3VjY2Vzc2l2ZSBkZXJpdmF0aXZlcyBvZiAkKGVeeCkveCQgYW5kICQoXGNvcyB4KS94JCBpcyBjb25zaWRlcmVkIGFzIGFuIGlsbHVzdHJhdGlvbi4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDExMCAoRXJyb3IgYW5hbHlzaXMgaW4gbnVtZXJpY2FsIG1ldGhvZHMpIiwKICBjb3Jwc291cmNlID0gICAiUHVyZHVlIFVuaXYuLCBMYWZheWV0dGUsIElOLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJkaWZmZXJlbmNlIGVxdWF0aW9uczsgZXJyb3IgYW5hbHlzaXM7IGVycm9yIHByb3BhZ2F0aW9uOyByZWN1cnNpdmUgY29tcHV0YXRpb247IHN1Y2Nlc3NpdmUgZGVyaXZhdGl2ZXMiLAp9CgpAQXJ0aWNsZXtNdWxsZXJ5OjE5NzA6UEFNLAogIGF1dGhvciA9ICAgICAgICJBLiBQLiBNdWxsZXJ5IGFuZCBHLiBDLiBEcmlzY29sbCIsCiAgdGl0bGUgPSAgICAgICAgIkEgcHJvY2Vzc29yIGFsbG9jYXRpb24gbWV0aG9kIGZvciB0aW1lLXNoYXJpbmciLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTMiLAogIG51bWJlciA9ICAgICAgICIxIiwKICBwYWdlcyA9ICAgICAgICAiMTAtLTE0IiwKICBtb250aCA9ICAgICAgICBqYW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzAiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxNTBKIChPcGVyYXRpbmcgc3lzdGVtcykiLAogIGNvcnBzb3VyY2UgPSAgICJJQk0sIFRob21hcyBKLiBXYXRzb24gUmVzLiBDZW50ZXIgWW9ya3Rvd24gSGVpZ2h0cywgTlksIFVTQSIsCiAga2V5d29yZHMgPSAgICAgInN0b3JhZ2UgYWxsb2NhdGlvbjsgdGltZS1zaGFyaW5nIHByb2dyYW1zIiwKfQoKQEFydGljbGV7U2ltbW9uczoxOTcwOk5MUSwKICBhdXRob3IgPSAgICAgICAiUi4gRi4gU2ltbW9ucyIsCiAgdGl0bGUgPSAgICAgICAgIk5hdHVyYWwgTGFuZ3VhZ2UgUXVlc3Rpb24tQW5zd2VyaW5nIFN5c3RlbXM6IDE5NjkiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTMiLAogIG51bWJlciA9ICAgICAgICIxIiwKICBwYWdlcyA9ICAgICAgICAiMTUtLTMwIiwKICBtb250aCA9ICAgICAgICBqYW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzAiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EYXRhYmFzZS9XaWVkZXJob2xkLmJpYiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM3ODIwIChIdW1hbml0aWVzIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBUZXhhcywgQXVzdGluLCBUWCwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2U7IGNvbXB1dGF0aW9uYWwgbGluZ3Vpc3RpY3M7IGxhbmd1YWdlOyB0cmFuc2xhdGlvbiBhbmQgbGluZ3Vpc3RpY3MiLAp9CgpAQXJ0aWNsZXtJcm9uczoxOTcwOkVFTCwKICBhdXRob3IgPSAgICAgICAiRS4gVC4gSXJvbnMiLAogIHRpdGxlID0gICAgICAgICJFeHBlcmllbmNlIHdpdGggYW4gZXh0ZW5zaWJsZSBsYW5ndWFnZSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjEiLAogIHBhZ2VzID0gICAgICAgICIzMS0tNDAiLAogIG1vbnRoID0gICAgICAgIGphbiwKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjE0MEQgKEhpZ2ggbGV2ZWwgbGFuZ3VhZ2VzKSIsCiAgY29ycHNvdXJjZSA9ICAgIkluc3QuIERlZmVuc2UgQW5hbHlzZXMgUHJpbmNldG9uLCBOSiwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAicHJvY2VkdXJlIG9yaWVudGVkIGxhbmd1YWdlcyIsCn0KCkBBcnRpY2xle01vbnRhbmFyaToxOTcwOk5NTCwKICBhdXRob3IgPSAgICAgICAiVS4gTW9udGFuYXJpIiwKICB0aXRsZSA9ICAgICAgICAiQSBub3RlIG9uIG1pbmltYWwgbGVuZ3RoIHBvbHlnb25hbCBhcHByb3hpbWF0aW9uIHRvIGEgZGlnaXRpemVkIGNvbnRvdXIiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTMiLAogIG51bWJlciA9ICAgICAgICIxIiwKICBwYWdlcyA9ICAgICAgICAiNDEtLTQ3IiwKICBtb250aCA9ICAgICAgICBqYW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzAiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2NS4yMCIsCiAgTVJudW1iZXIgPSAgICAgIjQ0XCMyMzExIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWJzdHJhY3QgPSAgICAgIkEgbWV0aG9kIGZvciBleHRyYWN0aW5nIGEgc21vb3RoIHBvbHlnb25hbCBjb250b3VyIGZyb20gYSBkaWdpdGl6ZWQgaW1hZ2UgaXMgaWxsdXN0cmF0ZWQuIFRoZSBvcmRlcmVkIHNlcXVlbmNlIG9mIGNvbnRvdXIgcG9pbnRzIGFuZCB0aGUgY29ubmVjdGlvbiBncmFwaCBvZiB0aGUgaW1hZ2UgYXJlIGZpcnN0IG9idGFpbmVkIGJ5IGEgbW9kaWZpZWQgTGVkbGV5IGFsZ29yaXRobSBpbiBvbmUgaW1hZ2Ugc2Nhbi4gQSBtaW5pbWFsIHBlcmltZXRlciBwb2x5Z29uIHN1YmplY3RlZCB0byBzcGVjaWZpZWQgY29uc3RyYWludHMgaXMgdGhlbiBjaG9zZW4gYXMgdGhlIGFwcHJveGltYXRpbmcgY29udG91ci4gVGhlIGRldGVybWluYXRpb24gb2YgdGhlIG1pbmltYWwgcG9seWdvbiBjYW4gYmUgcmVkdWNlZCB0byBhIG5vbmxpbmVhciBwcm9ncmFtbWluZyBwcm9ibGVtLCBzb2x2ZWQgYnkgYW4gYWxnb3JpdGhtIHdoaWNoIHRha2VzIGludG8gYWNjb3VudCB0aGUgd2VhayBib25kcyBiZXR3ZWVuIHZhcmlhYmxlcy4gU29tZSBleGFtcGxlcyBhcmUgcHJlc2VudGVkLCBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgY29tcHV0aW5nIHRpbWVzIGFyZSBsaXN0ZWQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjYxNDBDIChPcHRpY2FsIGluZm9ybWF0aW9uLCBpbWFnZSBhbmQgdmlkZW8gc2lnbmFsIHByb2Nlc3NpbmcpOyBDMTI1MCAoUGF0dGVybiByZWNvZ25pdGlvbikiLAogIGNvcnBzb3VyY2UgPSAgICJDb25zaWdsaW8gTmF6aW9uYWxlIGRlbGxlIFJpY2hlcmNoZSwgUGlzYSwgSXRhbHkiLAogIGtleXdvcmRzID0gICAgICJjb25uZWN0aW9uIHRyZWU7IGRpZ2l0aXplZCBpbWFnZTsgbWluaW1hbCBwb2x5Z29uOyBub25saW5lYXIgcHJvZ3JhbW1pbmc7IG9wdGltYWwgYXBwcm94aW1hdGlvbjsgcGF0dGVybiByZWNvZ25pdGlvbiIsCn0KCkBBcnRpY2xle1N0ZWhmZXN0OjE5NzA6QUFOLAogIGF1dGhvciA9ICAgICAgICJIYXJhbGQgU3RlaGZlc3QiLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gMzY4OiBOdW1lcmljYWwgSW52ZXJzaW9uIG9mIHtMYXBsYWNlfSBUcmFuc2Zvcm1zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiMSIsCiAgcGFnZXMgPSAgICAgICAgIjQ3LS00OSIsCiAgbW9udGggPSAgICAgICAgamFuLAogIHllYXIgPSAgICAgICAgICIxOTcwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM3MzAwIChOYXR1cmFsIHNjaWVuY2VzIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJKLiBXLiBHb2V0aGUgVW5pdi4gRnJhbmtmdXJ0IGFtIE1haW4sIFdlc3QgR2VybWFueSIsCiAga2V5d29yZHMgPSAgICAgIkxhcGxhY2UgdHJhbnNmb3Jtczsgc3Vicm91dGluZXMiLAp9CgpAQXJ0aWNsZXtTY2hhZmZlcjoxOTcwOkFBRywKICBhdXRob3IgPSAgICAgICAiSC4gRS4gU2NoYWZmZXIiLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gMzY5OiBHZW5lcmF0b3Igb2YgUmFuZG9tIE51bWJlcnMgU2F0aXNmeWluZyB0aGUge1BvaXNzb259IERpc3RyaWJ1dGlvbiIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjEiLAogIHBhZ2VzID0gICAgICAgICI0OS0tNDkiLAogIG1vbnRoID0gICAgICAgIGphbiwKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNzg5MCAoT3RoZXIgc3BlY2lhbCBhcHBsaWNhdGlvbnMgb2YgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIk5vcnRoIENhcm9saW5hIFN0YXRlIFVuaXYuLCBSYWxlaWdoLCBOQywgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAicmFuZG9tIG51bWJlciBnZW5lcmF0aW9uOyBzdWJyb3V0aW5lcyIsCn0KCkBBcnRpY2xle0J1dGxlcjoxOTcwOkFBRywKICBhdXRob3IgPSAgICAgICAiRS4gTC4gQnV0bGVyIiwKICB0aXRsZSA9ICAgICAgICAie0FDTX0gQWxnb3JpdGhtIDM3MDogR2VuZXJhbCBSYW5kb20gTnVtYmVyIEdlbmVyYXRvciIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjEiLAogIHBhZ2VzID0gICAgICAgICI0OS0tNTIiLAogIG1vbnRoID0gICAgICAgIGphbiwKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNzg5MCAoT3RoZXIgc3BlY2lhbCBhcHBsaWNhdGlvbnMgb2YgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIlRleGFzIEEgYW5kIE0gVW5pdi4sIENvbGxlZ2UgU3RhdGlvbiwgVFgsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgInJhbmRvbSBudW1iZXIgZ2VuZXJhdGlvbjsgc3Vicm91dGluZXMiLAp9CgpAQXJ0aWNsZXtNY0theToxOTcwOkFBUCwKICBhdXRob3IgPSAgICAgICAiSi4gSy4gUy4gTWNLYXkiLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gMzcxOiBQYXJ0aXRpb25zIGluIE5hdHVyYWwgT3JkZXIiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTMiLAogIG51bWJlciA9ICAgICAgICIxIiwKICBwYWdlcyA9ICAgICAgICAiNTItLTUyIiwKICBtb250aCA9ICAgICAgICBqYW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzAiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzczMDAgKE5hdHVyYWwgc2NpZW5jZXMgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIkNhbGlmb3JuaWEgSW5zdC4gVGVjaG5vbC4gUGFzYWRlbmEsIENBLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJudW1iZXIgdGhlb3J5OyBzdWJyb3V0aW5lcyIsCn0KCkBBcnRpY2xle0R1bmhhbToxOTcwOkFBQSwKICBhdXRob3IgPSAgICAgICAiSy4gQi4gRHVuaGFtIiwKICB0aXRsZSA9ICAgICAgICAie0FDTX0gQWxnb3JpdGhtIDM3MjogQW4gQWxnb3JpdGhtIHRvIFByb2R1Y2UgQ29tcGxleCBQcmltZXMge0NTSUVWRX0iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTMiLAogIG51bWJlciA9ICAgICAgICIxIiwKICBwYWdlcyA9ICAgICAgICAiNTItLTU0IiwKICBtb250aCA9ICAgICAgICBqYW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzAiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzczMDAgKE5hdHVyYWwgc2NpZW5jZXMgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIkdlb3JnaWEgSW5zdC4gVGVjaG5vbC4sIEF0bGFudGEsIEdBLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJudW1iZXIgdGhlb3J5OyBzdWJyb3V0aW5lcyIsCn0KCkBBcnRpY2xle0dyaWZmaW46MTk3MDpSTUUsCiAgYXV0aG9yID0gICAgICAgIlIuIEdyaWZmaW4gYW5kIEsuIEEuIFJlZGljaCIsCiAgdGl0bGUgPSAgICAgICAgIlJlbWFyayBvbiB7YGBBbGdvcml0aG0gMzQ3IFt7TTF9XTogQW4gRWZmaWNpZW50IEFsZ29yaXRobSBmb3IgU29ydGluZyB3aXRoIE1pbmltYWwgU3RvcmFnZScnLCBieSBSLiBDLiBTaW5nbGV0b259IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiMSIsCiAgcGFnZXMgPSAgICAgICAgIjU0LS01NCIsCiAgbW9udGggPSAgICAgICAgamFuLAogIHllYXIgPSAgICAgICAgICIxOTcwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiRnJpIEphbiAxNyAxODoyNjo0MSAxOTk3IiwKICBrZXl3b3JkcyA9ICAgICAiZGlnaXRhbCBjb21wdXRlciBzb3J0aW5nOyBtaW5pbWFsIHN0b3JhZ2Ugc29ydGluZzsgc29ydGluZyIsCn0KCkBBcnRpY2xle0Fub255bW91czoxOTcwOlJDRCwKICBhdXRob3IgPSAgICAgICAiQW5vbnltb3VzIiwKICB0aXRsZSA9ICAgICAgICAiUmVwcmVzZW50YXRpb24gZm9yIGNhbGVuZGFyIGRhdGUgZm9yIG1hY2hpbmUtdG8tbWFjaGluZSBkYXRhIGludGVyY2hhbmdlIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiMSIsCiAgcGFnZXMgPSAgICAgICAgIjU1LS01NSIsCiAgbW9udGggPSAgICAgICAgamFuLAogIHllYXIgPSAgICAgICAgICIxOTcwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTMwIChEYXRhIGhhbmRsaW5nIHRlY2huaXF1ZXMpIiwKICBrZXl3b3JkcyA9ICAgICAiY29kZXM7IHN0YW5kYXJkcyIsCn0KCkBBcnRpY2xle0Fub255bW91czoxOTcwOklSUCwKICBhdXRob3IgPSAgICAgICAiQW5vbnltb3VzIiwKICB0aXRsZSA9ICAgICAgICAiSW50ZXJjaGFuZ2Ugcm9sbHMgb2YgcGVyZm9yYXRlZCB0YXBlIGZvciBpbmZvcm1hdGlvbiBpbnRlcmNoYW5nZSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjEiLAogIHBhZ2VzID0gICAgICAgICI1Ni0tNTYiLAogIG1vbnRoID0gICAgICAgIGphbiwKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNTMyMFogKE90aGVyIGRpZ2l0YWwgc3RvcmFnZSk7IEM1NTYwIChEYXRhIHByZXBhcmF0aW9uIGVxdWlwbWVudCk7IEM3MjUwIChJbmZvcm1hdGlvbiBzdG9yYWdlIGFuZCByZXRyaWV2YWwpIiwKICBrZXl3b3JkcyA9ICAgICAiZGlnaXRhbCBzdG9yYWdlOyBlcXVpcG1lbnQ7IGluZm9ybWF0aW9uIHJldHJpZXZhbDsgcHVuY2hlZCB0YXBlOyBzdGFuZGFyZHMiLAp9CgpAQXJ0aWNsZXtQYXluZToxOTcwOkZUUCwKICBhdXRob3IgPSAgICAgICAiVy4gSC4gUGF5bmUiLAogIHRpdGxlID0gICAgICAgICJ7Rm9ydHJhbiBUYXVzd29ydGhlfSBwc2V1ZG9yYW5kb20gbnVtYmVyIGdlbmVyYXRvciIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjEiLAogIHBhZ2VzID0gICAgICAgICI1Ny0tNTciLAogIG1vbnRoID0gICAgICAgIGphbiwKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNzg5MCAoT3RoZXIgc3BlY2lhbCBhcHBsaWNhdGlvbnMgb2YgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIldhc2hpbmd0b24gU3RhdGUgVW5pdi4gUHVsbG1hbiwgV0EsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgInJhbmRvbSBudW1iZXIgZ2VuZXJhdGlvbiIsCn0KCkBBcnRpY2xle0hzaWFvOjE5NzA6RlNJLAogIGF1dGhvciA9ICAgICAgICJEYXZpZCBLLiBIc2lhbyBhbmQgRnJhbmsgRC4gSGFyYXJ5IiwKICB0aXRsZSA9ICAgICAgICAiQSBGb3JtYWwgU3lzdGVtIGZvciBJbmZvcm1hdGlvbiBSZXRyaWV2YWwgZnJvbSBGaWxlcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjIiLAogIHBhZ2VzID0gICAgICAgICI2Ny0tNzMiLAogIG1vbnRoID0gICAgICAgIGZlYiwKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0RhdGFiYXNlL1dpZWRlcmhvbGQuYmliIiwKICBub3RlID0gICAgICAgICAiU2VlIGNvcnJpZ2VuZGEgXGNpdGV7SHNpYW86MTk3MDpDRlN9LiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbik7IEM3MjUwIChJbmZvcm1hdGlvbiBzdG9yYWdlIGFuZCByZXRyaWV2YWwpIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gUGVubnN5bHZhbmlhLCBQaGlsYWRlbHBoaWEsIFBBLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJmaWxlIG9yZ2FuaXNhdGlvbjsgaW5mb3JtYXRpb24gcmV0cmlldmFsIiwKfQoKQEFydGljbGV7dm9uR2xhc2VyZmVsZDoxOTcwOk1QSCwKICBhdXRob3IgPSAgICAgICAiRS4ge3ZvbiBHbGFzZXJmZWxkfSBhbmQgUC4gUC4gUGlzYW5pIiwKICB0aXRsZSA9ICAgICAgICAiVGhlIG11bHRpc3RvcmUgcGFyc2VyIGZvciBoaWVyYXJjaGljYWwgc3ludGFjdGljIHN0cnVjdHVyZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTMiLAogIG51bWJlciA9ICAgICAgICIyIiwKICBwYWdlcyA9ICAgICAgICAiNzQtLTgyIiwKICBtb250aCA9ICAgICAgICBmZWIsCiAgeWVhciA9ICAgICAgICAgIjE5NzAiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQyMTAgKEZvcm1hbCBsb2dpYykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBHZW9yZ2lhLCBBdGhlbnMsIEdBLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJjb21wdXRhdGlvbmFsIGxpbmd1aXN0aWNzIiwKfQoKQEFydGljbGV7VmVyZToxOTcwOlRFLAogIGF1dGhvciA9ICAgICAgICJTdGV2ZW4gVmVyZSIsCiAgdGl0bGUgPSAgICAgICAgIlRyYW5zbGF0aW9uIGVxdWF0aW9ucyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjIiLAogIHBhZ2VzID0gICAgICAgICI4My0tODkiLAogIG1vbnRoID0gICAgICAgIGZlYiwKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4QTMwIiwKICBNUm51bWJlciA9ICAgICAiNDUgNDkyNSIsCiAgbXJyZXZpZXdlciA9ICAgIkguIE1hdXJlciIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIG5vdGUgPSAgICAgICAgICJTZWUgZXJyYXRhIFxjaXRle1ZlcmU6MTk3MDpURUV9LCIsCiAgYWJzdHJhY3QgPSAgICAgIklucHV0IGxpbWl0ZWQgdHJhbnNkdWN0aW9uIGV4cHJlc3Npb25zLCBvciB0cmFuc2xhdGlvbiBlcXVhdGlvbnMsIGFyZSB1c2VkIHRvIGRlc2NyaWJlIHRoZSBzeW50YXggYW5kIGxlZnQtY29udGV4dCBzZW5zaXRpdmUgc2VtYW50aWNzIGZvciBjb250ZXh0LWZyZWUgbGFuZ3VhZ2VzLiBBIGZvcm1hbCBwcm9jZWR1cmUgaXMgZ2l2ZW4gZm9yIGRlcml2aW5nIGZyb20gYSBzZXQgb2YgdHJhbnNsYXRpb24gZXF1YXRpb25zIHRoZSBzcGVjaWZpY2F0aW9ucyBmb3IgYSBwdXNoZG93biB0cmFuc2xhdG9yLiBUaGUgdHJhbnNsYXRvciBjb25zaXN0cyBvZiBNZWFseSBmb3JtIGZpbml0ZS1zdGF0ZSBhdXRvbWF0YSBpbnRlcmFjdGluZyBieSBtZWFucyBvZiBhIHB1c2hkb3duIHN0YWNrLiBXaXRoaW4gdGhlIGZyYW1ld29yayBkZXNjcmliZWQgc3RyaW5nIHJlY29nbml0aW9uIGFuZCBwYXJzaW5nIG1heSBiZSB0cmVhdGVkIGFzIHNwZWNpYWwgY2FzZXMgb2YgdGhlIHRyYW5zbGF0aW9uIHByb2JsZW0uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQyMTAgKEZvcm1hbCBsb2dpYykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBDYWxpZm9ybmlhLCBMb3MgQW5nZWxlcywgQ0EsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImF1dG9tYXRhOyBjb21wdXRhdGlvbmFsIGxpbmd1aXN0aWNzOyBjb250ZXh0LWZyZWUgbGFuZ3VhZ2VzOyBmaW5pdGUgc3RhdGUgYXV0b21hdGE7IGZvcm1hbCBsYW5ndWFnZXM7IG1ldGEtY29tcGlsZXJzOyBwYXJzaW5nOyBwdXNoZG93biB0cmFuc2R1Y2VyOyByZWNvZ25pemVyczsgcmVndWxhciBleHByZXNzaW9uOyBzeW50YXggZGlyZWN0ZWQgY29tcGlsZXJzOyB0cmFuc2R1Y3Rpb24gZXhwcmVzc2lvbjsgdHJhbnNsYXRpb247IFR1cmluZyBtYWNoaW5lcyIsCn0KCkBBcnRpY2xle01vcmdhbjoxOTcwOlNDU2EsCiAgYXV0aG9yID0gICAgICAgIkguIEwuIE1vcmdhbiIsCiAgdGl0bGUgPSAgICAgICAgIlNwZWxsaW5nIGNvcnJlY3Rpb24gaW4gc3lzdGVtcyBwcm9ncmFtcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjIiLAogIHBhZ2VzID0gICAgICAgICI5MC0tOTQiLAogIG1vbnRoID0gICAgICAgIGZlYiwKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjE1MEcgKERpYWdub3N0aWMsIHRlc3RpbmcsIGRlYnVnZ2luZyBhbmQgZXZhbHVhdGluZyBzeXN0ZW1zKSIsCiAgY29ycHNvdXJjZSA9ICAgIkNvcm5lbGwgVW5pdi4sIEl0aGFjYSwgTlksIFVTQSIsCiAga2V5d29yZHMgPSAgICAgInByb2dyYW0gZGVidWdnaW5nOyBzdWJyb3V0aW5lcyIsCiAgeHhub3RlID0gICAgICAgIkNoZWNrIGlzc3VlIG51bWJlcjogMiBvciAzPz8iLAp9CgpAQXJ0aWNsZXtFYXJsZXk6MTk3MDpFQ0YsCiAgYXV0aG9yID0gICAgICAgIkouIEVhcmxleSIsCiAgdGl0bGUgPSAgICAgICAgIkFuIEVmZmljaWVudCBDb250ZXh0LUZyZWUgUGFyc2luZyBBbGdvcml0aG0iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTMiLAogIG51bWJlciA9ICAgICAgICIyIiwKICBwYWdlcyA9ICAgICAgICAiOTQtLTEwMiIsCiAgbW9udGggPSAgICAgICAgZmViLAogIHllYXIgPSAgICAgICAgICIxOTcwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgImZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvUGFyYWxsZWwvTXVsdGkuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiQSBwYXJzaW5nIGFsZ29yaXRobSB3aGljaCBzZWVtcyB0byBiZSB0aGUgbW9zdCBlZmZpY2llbnQgZ2VuZXJhbCBjb250ZXh0LWZyZWUgYWxnb3JpdGhtIGtub3duIGlzIGRlc2NyaWJlZC4gSXQgaXMgc2ltaWxhciB0byBib3RoIEtudXRoJ3MgTFIoaykgYWxnb3JpdGhtIGFuZCB0aGUgZmFtaWxpYXIgdG9wLWRvd24gYWxnb3JpdGhtLiBJdCBoYXMgYSB0aW1lIGJvdW5kIHByb3BvcnRpb25hbCB0byAkbl4zJCAod2hlcmUgJG4kIGlzIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBiZWluZyBwYXJzZWQpIGluIGdlbmVyYWw7IGl0IGhhcyBhICRuXjIkIGJvdW5kIGZvciB1bmFtYmlndW91cyBncmFtbWFyczsgYW5kIGl0IHJ1bnMgaW4gbGluZWFyIHRpbWUgb24gYSBsYXJnZSBjbGFzcyBvZiBncmFtbWFycywgd2hpY2ggc2VlbXMgdG8gaW5jbHVkZSBtb3N0IHByYWN0aWNhbCBjb250ZXh0LWZyZWUgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgZ3JhbW1hcnMuIEluIGFuIGVtcGlyaWNhbCBjb21wYXJpc29uIGl0IGFwcGVhcnMgdG8gYmUgc3VwZXJpb3IgdG8gdGhlIHRvcC1kb3duIGFuZCBib3R0b20tdXAgYWxnb3JpdGhtcyBzdHVkaWVkIGJ5IEdyaWZmaXRocyBhbmQgUGV0cmljay4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDIxMCAoRm9ybWFsIGxvZ2ljKTsgQzYxNTBDIChDb21waWxlcnMsIGludGVycHJldGVycyBhbmQgb3RoZXIgcHJvY2Vzc29ycykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBDYWxpZm9ybmlhLCBCZXJrZWxleSwgQ0EsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImNvbXBpbGVyczsgY29tcHV0YXRpb25hbCBjb21wbGV4aXR5OyBjb250ZXh0LWZyZWUgZ3JhbW1hcjsgcGFyc2luZzsgc3ludGF4IGFuYWx5c2lzIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0YXRpb25hbCBsaW5ndWlzdGljczsgcHJvZ3JhbSBjb21waWxlcnMiLAp9CgpAQXJ0aWNsZXtSYWRrZToxOTcwOlVRUiwKICBhdXRob3IgPSAgICAgICAiQy4gRS4gUmFka2UiLAogIHRpdGxlID0gICAgICAgICJUaGUgVXNlIG9mIFF1YWRyYXRpYyBSZXNpZHVlIFJlc2VhcmNoIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiMiIsCiAgcGFnZXMgPSAgICAgICAgIjEwMy0tMTA1IiwKICBtb250aCA9ICAgICAgICBmZWIsCiAgeWVhciA9ICAgICAgICAgIjE5NzAiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMzAgKERhdGEgaGFuZGxpbmcgdGVjaG5pcXVlcykiLAogIGNvcnBzb3VyY2UgPSAgICJJQk0sIEVuZGljb3R0LCBOWSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiZGF0YSBoYW5kbGluZzsgcHJvZ3JhbW1pbmciLAp9CgpAQXJ0aWNsZXtKb25lczoxOTcwOlZTQSwKICBhdXRob3IgPSAgICAgICAiQi4gSm9uZXMiLAogIHRpdGxlID0gICAgICAgICJBIFZhcmlhdGlvbiBvbiBTb3J0aW5nIGJ5IEFkZHJlc3MgQ2FsY3VsYXRpb24iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTMiLAogIG51bWJlciA9ICAgICAgICIyIiwKICBwYWdlcyA9ICAgICAgICAiMTA1LS0xMDciLAogIG1vbnRoID0gICAgICAgIGZlYiwKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKSIsCiAgY29ycHNvdXJjZSA9ICAgIk1hcnRpbiBNYXJpZXR0YSBDb3JwLiwgT3JsYW5kbywgRkwsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgInNvcnRpbmciLAp9CgpAQXJ0aWNsZXtCZWxsOjE5NzA6UVFNLAogIGF1dGhvciA9ICAgICAgICJKYW1lcyBSLiBCZWxsIiwKICB0aXRsZSA9ICAgICAgICAiVGhlIFF1YWRyYXRpYyBRdW90aWVudCBNZXRob2Q6IHtBfSBIYXNoIENvZGUgRWxpbWluYXRpbmcgU2Vjb25kYXJ5IENsdXN0ZXJpbmciLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTMiLAogIG51bWJlciA9ICAgICAgICIyIiwKICBwYWdlcyA9ICAgICAgICAiMTA3LS0xMDkiLAogIG1vbnRoID0gICAgICAgIGZlYiwKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKSIsCiAgY29ycHNvdXJjZSA9ICAgIkRpZ2l0YWwgRXF1aXBtZW50IENvcnAuLCBNYXluYXJkLCBNQSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAidGFibGUgbG9va3VwIiwKfQoKQEFydGljbGV7TmVzczoxOTcwOkNFRywKICBhdXRob3IgPSAgICAgICAiRC4gTi4gTmVzcyBhbmQgUi4gUy4gR3JlZW4gYW5kIFcuIEEuIE1hcnRpbiBhbmQgRy4gQS4gTW91bHRvbiIsCiAgdGl0bGUgPSAgICAgICAgIkNvbXB1dGVyIGVkdWNhdGlvbiBpbiBhIGdyYWR1YXRlIHNjaG9vbCBvZiBtYW5hZ2VtZW50IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiMiIsCiAgcGFnZXMgPSAgICAgICAgIjExMC0tMTE0LCAxOSIsCiAgbW9udGggPSAgICAgICAgZmViLAogIHllYXIgPSAgICAgICAgICIxOTcwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMwMjIwIChDb21wdXRpbmcgZWR1Y2F0aW9uIGFuZCB0cmFpbmluZykiLAogIGNvcnBzb3VyY2UgPSAgICJNLkkuVC4sIENhbWJyaWRnZSwgTUEsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImVkdWNhdGlvbjsgbWFuYWdlbWVudDsgc2ltdWxhdGlvbiIsCn0KCkBBcnRpY2xle1JvYmJpbnM6MTk3MDpJQ1MsCiAgYXV0aG9yID0gICAgICAgIk0uIEYuIFJvYmJpbnMgYW5kIEouIEQuIEJleWVyIiwKICB0aXRsZSA9ICAgICAgICAiQW4gaW50ZXJhY3RpdmUgY29tcHV0ZXIgc3lzdGVtIHVzaW5nIGdyYXBoaWNhbCBmbG93Y2hhcnQgaW5wdXQiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTMiLAogIG51bWJlciA9ICAgICAgICIyIiwKICBwYWdlcyA9ICAgICAgICAiMTE1LS0xMTkiLAogIG1vbnRoID0gICAgICAgIGZlYiwKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNzQwMCAoRW5naW5lZXJpbmcgY29tcHV0aW5nKTsgQzU1NDAgKFRlcm1pbmFscyBhbmQgZ3JhcGhpYyBkaXNwbGF5cykiLAogIGNvcnBzb3VyY2UgPSAgICJCZWxsIFRlbGVwaG9uZSBMYWJzLiBJbmMuLCBIb2xtZGVsLCBOSiwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiYXBwbGljYXRpb25zIG9mIGNvbXB1dGVyczsgY29tcHV0ZXJzOyBjb250cm9sIHN5c3RlbSBzeW50aGVzaXM7IGVsZWN0cmljYWwgZW5naW5lZXJpbmc7IGVuZ2luZWVyaW5nIGFwcGxpY2F0aW9ucyBvZjsgb25saW5lIG9wZXJhdGlvbjsgc2FtcGxlZCBkYXRhIHN5c3RlbXM7IHNpbXVsYXRpb24iLAp9CgpAQXJ0aWNsZXtXaGl0ZToxOTcwOkFBTiwKICBhdXRob3IgPSAgICAgICAiSi4gUy4gV2hpdGUiLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gMzczOiBOdW1iZXIgb2YgRG91Ymx5IFJlc3RyaWN0ZWQgUGFydGl0aW9ucyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjIiLAogIHBhZ2VzID0gICAgICAgICIxMjAtLTEyMCIsCiAgbW9udGggPSAgICAgICAgZmViLAogIHllYXIgPSAgICAgICAgICIxOTcwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM3MzAwIChOYXR1cmFsIHNjaWVuY2VzIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBNaW5uZXNvdGEsIE1pbm5lYXBvbGlzLCBNTiwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiY29tYmluYXRvcmlhbCBtYXRoZW1hdGljczsgc3Vicm91dGluZXMiLAp9CgpAQXJ0aWNsZXtXaGl0ZToxOTcwOkFBUiwKICBhdXRob3IgPSAgICAgICAiSi4gUy4gV2hpdGUiLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gMzc0OiBSZXN0cmljdGVkIFBhcnRpdGlvbiBHZW5lcmF0b3IiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTMiLAogIG51bWJlciA9ICAgICAgICIyIiwKICBwYWdlcyA9ICAgICAgICAiMTIwLS0xMjAiLAogIG1vbnRoID0gICAgICAgIGZlYiwKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNzMwMCAoTmF0dXJhbCBzY2llbmNlcyBjb21wdXRpbmcpIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gTWlubmVzb3RhLCBNaW5uZWFwb2xpcywgTU4sIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImNvbWJpbmF0b3JpYWwgbWF0aGVtYXRpY3M7IHN1YnJvdXRpbmVzIiwKfQoKQEFydGljbGV7U3BhdGg6MTk3MDpBQUYsCiAgYXV0aG9yID0gICAgICAgIkguIFNwe1wie2F9fXRoIiwKICB0aXRsZSA9ICAgICAgICAie0FDTX0gQWxnb3JpdGhtIDM3NTogRml0dGluZyBEYXRhIHRvIE9uZSBFeHBvbmVudGlhbCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjIiLAogIHBhZ2VzID0gICAgICAgICIxMjAtLTEyMSIsCiAgbW9udGggPSAgICAgICAgZmViLAogIHllYXIgPSAgICAgICAgICIxOTcwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVGh1IFNlcCAwOCAwOTozMzo0OCAxOTk0IiwKfQoKQEFydGljbGV7U3BhdGg6MTk3MDpGRE8sCiAgYXV0aG9yID0gICAgICAgIkguIFNwYXRoIiwKICB0aXRsZSA9ICAgICAgICAiRml0dGluZyBkYXRhIHRvIG9uZSBleHBvbmVudGlhbCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjIiLAogIHBhZ2VzID0gICAgICAgICIxMjAtLTEyMSIsCiAgbW9udGggPSAgICAgICAgZmViLAogIHllYXIgPSAgICAgICAgICIxOTcwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MTUwIChOb25saW5lYXIgYW5kIGZ1bmN0aW9uYWwgZXF1YXRpb25zKTsgQzczMDAgKE5hdHVyYWwgc2NpZW5jZXMgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIkluc3QuIE5ldXRyb25lbnBoeXNpayBSZWFrdG9ydGVjaG5paywgS2FybHNydWhlLCBXZXN0IEdlcm1hbnkiLAogIGtleXdvcmRzID0gICAgICJsZWFzdCBzcXVhcmVzIGFwcHJveGltYXRpb25zOyBub25saW5lYXIgZXF1YXRpb25zOyBzdWJyb3V0aW5lcyIsCn0KCkBBcnRpY2xle1NwYXRoOjE5NzA6QUFMLAogIGF1dGhvciA9ICAgICAgICJILiBTcHtcInthfX10aCIsCiAgdGl0bGUgPSAgICAgICAgIntBQ019IEFsZ29yaXRobSAzNzY6IExlYXN0IFNxdWFyZXMgRml0IGJ5IHskZih4KT1BXGNvcyhCeCtDKSR9IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiMiIsCiAgcGFnZXMgPSAgICAgICAgIjEyMS0tMTIyIiwKICBtb250aCA9ICAgICAgICBmZWIsCiAgeWVhciA9ICAgICAgICAgIjE5NzAiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQxNTAgKE5vbmxpbmVhciBhbmQgZnVuY3Rpb25hbCBlcXVhdGlvbnMpOyBDNzMwMCAoTmF0dXJhbCBzY2llbmNlcyBjb21wdXRpbmcpIiwKICBjb3Jwc291cmNlID0gICAiSW5zdC4gTmV1dHJvbmVucGh5c2lrLCBSZWFrdG9ydGVjaG5paywgS2FybHNydWhlLCBXZXN0IEdlcm1hbnkiLAogIGtleXdvcmRzID0gICAgICJsZWFzdCBzcXVhcmVzIGFwcHJveGltYXRpb25zOyBub25saW5lYXIgZXF1YXRpb25zOyBzdWJyb3V0aW5lcyIsCn0KCkBBcnRpY2xle01vcmdhbjoxOTcwOlNDU2IsCiAgYXV0aG9yID0gICAgICAgIkguIEwuIE1vcmdhbiIsCiAgdGl0bGUgPSAgICAgICAgIlNwZWxsaW5nIGNvcnJlY3Rpb24gaW4gc3lzdGVtcyBwcm9ncmFtcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjMiLAogIHBhZ2VzID0gICAgICAgICI5MC0tOTQiLAogIG1vbnRoID0gICAgICAgIG1hciwKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXkgMjggMDk6NDk6MDcgMTk5NiIsCiAgYWJzdHJhY3QgPSAgICAgIlNldmVyYWwgc3BlY2lhbGl6ZWQgdGVjaG5pcXVlcyBhcmUgc2hvd24gZm9yIGVmZmljaWVudGx5IGluY29ycG9yYXRpbmcgc3BlbGxpbmcgY29ycmVjdGlvbiBhbGdvcml0aG1zIGluIHRvIGNvbXBpbGVycyBhbmQgb3BlcmF0aW5nIHN5c3RlbXMuIFRoZXNlIGluY2x1ZGUgdGhlIHVzZSBvZiBzeW50YXggYW5kIHNlbWFudGljcyBpbmZvcm1hdGlvbiwgdGhlIG9yZ2FuaXphdGlvbiBvZiByZXN0cmljdGVkIGtleXdvcmQgYW5kIHN5bWJvbCB0YWJsZXMsIGFuZCB0aGUgY29uc2lkZXJhdGlvbiBvZiBhIGxpbWl0ZWQgY2xhc3Mgb2Ygc3BlbGxpbmcgZXJyb3JzLiBTYW1wbGUgMzYwIGNvZGluZyBmb3IgcGVyZm9ybWluZyBzcGVsbGluZyBjb3JyZWN0aW9uIGlzIHByZXNlbnRlZC4gQnkgdXNpbmcgc3lzdGVtcyB3aGljaCBwZXJmb3JtIHNwZWxsaW5nIGNvcnJlY3Rpb24sIHRoZSBudW1iZXIgb2YgZGVidWdnaW5nIHJ1bnMgcGVyIHByb2dyYW0gaGFzIGJlZW4gZGVjcmVhc2VkLCBzYXZpbmcgYm90aCBwcm9ncmFtbWVyIGFuZCBtYWNoaW5lIHRpbWUuIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcGlsZXJzOyBjb21wdXRlciBzY2llbmNlIGFuZCBhdXRvbWF0YTsgZGVidWdnaW5nOyBkaWFnbm9zdGljczsgZXJyb3IgY29ycmVjdGlvbjsgZXJyb3IgZGV0ZWN0aW9uOyBsZXhpY2FsIGFuYWx5c2lzIHN5c3RlbXMgcHJvZ3JhbW1pbmc7IG1pc3NwZWxsaW5nOyBvcGVyYXRpbmcgc3lzdGVtczsgc3BlbGxpbmcgY29ycmVjdGlvbiIsCiAgeHhub3RlID0gICAgICAgIkNoZWNrIGlzc3VlIG51bWJlcjogMiBvciAzPz8iLAp9CgpAQXJ0aWNsZXtGZW5pY2hlbDoxOTcwOlBUUCwKICBhdXRob3IgPSAgICAgICAiUi4gUi4gRmVuaWNoZWwgYW5kIEouIFdlaXplbmJhdW0gYW5kIEouIEMuIFlvY2hlbHNvbiIsCiAgdGl0bGUgPSAgICAgICAgIkEgUHJvZ3JhbSB0byBUZWFjaCBQcm9ncmFtbWluZyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjMiLAogIHBhZ2VzID0gICAgICAgICIxNDEtLTE0NiIsCiAgbW9udGggPSAgICAgICAgbWFyLAogIHllYXIgPSAgICAgICAgICIxOTcwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlRoZSBURUFDSCBzeXN0ZW0gd2FzIGRldmVsb3BlZCBhdCBNSVQgdG8gZWFzZSB0aGUgY29zdCBhbmQgaW1wcm92ZSB0aGUgcmVzdWx0cyBvZiBlbGVtZW50YXJ5IGluc3RydWN0aW9uIGluIHByb2dyYW1taW5nLiBUbyB0aGUgc3R1ZGVudCwgVEVBQ0ggb2ZmZXJzIGxvb3NlbHkgZ3VpZGVkIGV4cGVyaWVuY2Ugd2l0aCBhIGNvbnZlcnNhdGlvbmFsIGxhbmd1YWdlIHdoaWNoIHdhcyBkZXNpZ25lZCB3aXRoIHRlYWNoaW5nIGluIG1pbmQuIEZhY3VsdHkgaW52b2x2ZW1lbnQgaXMgbGltaXRlZC4gQXQgdGhlIGhlYXJ0IG9mIHRoZSBURUFDSCBzeXN0ZW0gaXMgYW4gaW50ZXJhY3RpdmUgbGFuZ3VhZ2Ugd2hpY2ggc29tZXdoYXQgcmVzZW1ibGVzIEpvc3MsIGJ1dCBpcyBzb21ld2hhdCBtb3JlIGFtZW5hYmxlIHRvIHJhdGlvbmFsIGV4cGxhbmF0aW9uLiBTdXJyb3VuZGluZyB0aGUgbGFuZ3VhZ2UgcHJvY2Vzc29yIGlzIGEgdGVhY2hpbmcgc3lzdGVtIHdoaWNoIHByZXNlbnRzIGxlc3NvbnMgdG8gdGhlIHN0dWRlbnQsIHN1cGVydmlzZXMgaGlzIHByb2dyZXNzLCBhbmQgcGVybWl0cyBoaW0gdG8gZXhlcmNpc2UgaGlzIHNraWxscy4gQSB0ZXJtIG9mIGV4cGVyaWVuY2Ugd2l0aCBURUFDSCBpcyBkaXNjdXNzZWQuIFBlZGFnb2dpY2FsbHksIHRoZSBzeXN0ZW0gYXBwZWFycyB0byBiZSBzdWNjZXNzZnVsOyBzdHJhaWdodGZvcndhcmQgcmVpbXBsZW1lbnRhdGlvbiB3aWxsIG1ha2UgaXQgZWNvbm9taWNhbGx5IHN1Y2Nlc3NmdWwgYXMgd2VsbC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDMDMxMCAoRURQIG1hbmFnZW1lbnQpOyBDNjE1MFogKE90aGVyIHN5c3RlbXMgb3BlcmF0aW9uIHByb2dyYW1zKSIsCiAgY29ycHNvdXJjZSA9ICAgIk1hc3NhY2h1c2V0dHMgSW5zdC4gVGVjaG5vbC4sIENhbWJyaWRnZSwgTUEsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBhcHBsaWNhdGlvbnM7IGNvbXB1dGVyLWFzc2lzdGVkIGxlYXJuaW5nOyBjb21wdXRlcnMsIHByb2dyYW1taW5nOyBlZHVjYXRpb247IGVsZW1lbnRhcnkgcHJvZ3JhbW1pbmc7IGVuZ2luZWVyaW5nIGVkdWNhdGlvbjsgcHJvZ3JhbW1pbmc7IFRFQUNIOyBVTkNMOyB1dGlsaXR5IHByb2dyYW1zIiwKfQoKQEFydGljbGV7U2xhZ2xlOjE5NzA6RU1ULAogIGF1dGhvciA9ICAgICAgICJKLiBSLiBTbGFnbGUgYW5kIEouIEsuIERpeG9uIiwKICB0aXRsZSA9ICAgICAgICAiRXhwZXJpbWVudHMgd2l0aCB0aGUge00gXCYgTn0gVHJlZS1TZWFyY2hpbmcgUHJvZ3JhbSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjMiLAogIHBhZ2VzID0gICAgICAgICIxNDctLTE1NCwgMTU5IiwKICBtb250aCA9ICAgICAgICBtYXIsCiAgeWVhciA9ICAgICAgICAgIjE5NzAiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiVGhlIE0gXCYgTiBwcm9jZWR1cmUgaXMgYW4gaW1wcm92ZW1lbnQgdG8gdGhlIG1pbmktbWF4IGJhY2tpbmctdXAgcHJvY2VkdXJlIHdpZGVseSB1c2VkIGluIGNvbXB1dGVyIHByb2dyYW1zIGZvciBnYW1lLXBsYXlpbmcgYW5kIG90aGVyIHB1cnBvc2VzLiBJdCBpcyBiYXNlZCBvbiB0aGUgcHJpbmNpcGxlIHRoYXQgaXQgaXMgZGVzaXJhYmxlIHRvIGhhdmUgbWFueSBvcHRpb25zIHdoZW4gbWFraW5nIGRlY2lzaW9ucyBpbiB0aGUgZmFjZSBvZiB1bmNlcnRhaW50eS4gVGhlIG1pbmktbWF4IHByb2NlZHVyZSBhc3NpZ25zIHRvIGEgTUFYIChNSU4pIG5vZGUgdGhlIHZhbHVlIG9mIHRoZSBoaWdoZXN0IChsb3dlc3QpIHZhbHVlZCBzdWNjZXNzb3IgdG8gdGhhdCBub2RlLiBUaGUgTSBcJiBOIHByb2NlZHVyZSBhc3NpZ25zIHRvIGEgTUFYIChNSU4pIG5vZGUgc29tZSBmdW5jdGlvbiBvZiB0aGUgTSAoTikgaGlnaGVzdCAobG93ZXN0KSB2YWx1ZWQgc3VjY2Vzc29ycy4gQW4gTSBcJiBOIHByb2NlZHVyZSB3YXMgd3JpdHRlbiBpbiBMSVNQIHRvIHBsYXkgdGhlIGdhbWUgb2Yga2FsYWgsIGFuZCBpdCB3YXMgZGVtb25zdHJhdGVkIHRoYXQgdGhlIE0gXCYgTnByb2NlZHVyZSBpcyBzaWduaWZpY2FudGx5IHN1cGVyaW9yIHRvIHRoZSBtaW5pLW1heCBwcm9jZWR1cmUuIFRoZSBzdGF0aXN0aWNhbCBzaWduaWZpY2FuY2Ugb2YgaW1wb3J0YW50IGNvbmNsdXNpb25zIGlzIGdpdmVuLiBTaW5jZSBpbmZvcm1hdGlvbiBvbiBzdGF0aXN0aWNhbCBzaWduaWZpY2FuY2UgaGFzIG9mdGVuIGJlZW4gbGFja2luZyBpbiBwYXBlcnMgb24gY29tcHV0ZXIgZXhwZXJpbWVudHMgaW4gdGhlIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIGZpZWxkLCB0aGVzZSBleHBlcmltZW50cyBjYW4gcGVyaGFwcyBzZXJ2ZSBhcyBhIG1vZGVsIGZvciBmdXR1cmUgd29yay4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDMTIzMCAoQXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UpIiwKICBjb3Jwc291cmNlID0gICAiRWR1Y2F0aW9uIFdlbGZhcmUsIEJldGhlc2RhLCBNRCwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFyZzsgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2U7IGF1dG9tYXRhIHRoZW9yeTsgY29tcHV0ZXJzOyBnYW1lIHRoZW9yeTsgaGV1cmlzdGljIHByb2dyYW1taW5nOyBvcHRpbWlzYXRpb247IHByb2dyYW1taW5nOyB0cmVlcyAobWF0aGVtYXRpY3MpIiwKfQoKQEFydGljbGV7QmF0c29uOjE5NzA6TVNTLAogIGF1dGhvciA9ICAgICAgICJBLiBCYXRzb24gYW5kIFNoeS1NaW5nIE0uIEp1IGFuZCBELiBDLiBXb29kIiwKICB0aXRsZSA9ICAgICAgICAiTWVhc3VyZW1lbnRzIG9mIFNlZ21lbnQgU2l6ZSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjMiLAogIHBhZ2VzID0gICAgICAgICIxNTUtLTE1OSIsCiAgbW9udGggPSAgICAgICAgbWFyLAogIHllYXIgPSAgICAgICAgICIxOTcwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkRpc3RyaWJ1dGlvbnMgb2Ygc2VnbWVudCBzaXplcyBtZWFzdXJlZCB1bmRlciByb3V0aW5lIG9wZXJhdGluZyBjb25kaXRpb25zIG9uIGEgY29tcHV0ZXIgc3lzdGVtIHdoaWNoIHV0aWxpemVzIHZhcmlhYmxlIHNpemVkIHNlZ21lbnRzICh0aGUgQnVycm91Z2hzIEI1NTAwKSBhcmUgZGlzY3Vzc2VkLiBUaGUgbW9zdCBzdHJpa2luZyBmZWF0dXJlIG9mIHRoZSBtZWFzdXJlbWVudHMgaXMgdGhlIGxhcmdlIG51bWJlciBvZiBzbWFsbCBzZWdtZW50cy1hYm91dCA2MFwlIG9mIHRoZSBzZWdtZW50cyBpbiB1c2UgY29udGFpbiBsZXNzIHRoYW4gNDAgd29yZHMuIEFsdGhvdWdoIHRoZSByZXN1bHRzIGFyZSBjZXJ0YWlubHkgbm90IGluc3RhbGxhdGlvbiBpbmRlcGVuZGVudCwgYW5kIGFsdGhvdWdoIHRoZXkgYXJlIHBhcnRpY3VsYXJseSBpbmZsdWVuY2VkIGJ5IGZlYXR1cmVzIG9mIHRoZSBCNTUwMCBBTEdPTCBzeXN0ZW0sIHRoZXkgc2hvdWxkIGJlIHJlbGV2YW50IHRvIHRoZSBkZXNpZ24gb2YgbmV3IGNvbXB1dGVyIHN5c3RlbXMsIGVzcGVjaWFsbHkgd2l0aCByZXNwZWN0IHRvIHRoZSBvcmdhbml6YXRpb24gb2YgcGFnaW5nIHNjaGVtZXMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxNTBKIChPcGVyYXRpbmcgc3lzdGVtcykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBWaXJnaW5pYSwgQ2hhcmxvdHRlc3ZpbGxlLCBWQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyczsgZHluYW1pYyBtZW1vcnkgbWFuYWdlbWVudDsgb3BlcmF0aW5nIHN5c3RlbXM7IHN0b3JhZ2UgYWxsb2NhdGlvbiIsCn0KCkBBcnRpY2xle1dhdHNvbjoxOTcwOkFOTSwKICBhdXRob3IgPSAgICAgICAiRy4gQS4gV2F0c29uIiwKICB0aXRsZSA9ICAgICAgICAiT24gYW4gQWxnb3JpdGhtIGZvciBOb25saW5lYXIgTWluaW1heCBBcHByb3hpbWF0aW9uIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiMyIsCiAgcGFnZXMgPSAgICAgICAgIjE2MC0tMTYyIiwKICBtb250aCA9ICAgICAgICBtYXIsCiAgeWVhciA9ICAgICAgICAgIjE5NzAiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI5MC41MCAoNjUuMDApIiwKICBNUm51bWJlciA9ICAgICAiNDRcIzM2OTQiLAogIG1ycmV2aWV3ZXIgPSAgICJSLiBXLiBDb3R0bGUiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiQ2VydGFpbiBub25saW5lYXIgbWluaW1heCBhcHByb3hpbWF0aW9uIHByb2JsZW1zIGFyZSBjaGFyYWN0ZXJpemVkIGJ5IHByb3BlcnRpZXMgd2hpY2ggcGVybWl0IHRoZSBhcHBsaWNhdGlvbiBvZiBzcGVjaWFsIGFsZ29yaXRobXMsIG1haW5seSwgYmFzZWQgb24gdGhlIGV4Y2hhbmdlIGFsZ29yaXRobXMgb2YgRS4gWS4gUmVtZXMgKDE5MzQsIDE5MzUpLCBmb3IgdGhlaXIgc29sdXRpb24uIFRoZSBhcHBsaWNhdGlvbiB0byBwcm9ibGVtcyBvZiB0aGlzIHR5cGUgb2YgYSBnZW5lcmFsIG5vbmxpbmVhciBhbGdvcml0aG0gZHVlIHRvIE0uIFIuIE9zYm9ybmUgYW5kIEcuIEEuIFdhdHNvbiAoMTk2OSkgaXMgY29uc2lkZXJlZC4gRXhhbXBsZXMgYXJlIGdpdmVuIHRvIGlsbHVzdHJhdGUgdGhhdCB0aGlzIGFsZ29yaXRobSBjYW4gZ2l2ZSBzYXRpc2ZhY3RvcnkgcmVzdWx0cyBhbmQsIGluIHBhcnRpY3VsYXIsIGNhbiBzdWNjZXNzZnVsbHkgc29sdmUgcHJvYmxlbXMgd2hpY2ggbGVhZCB0byBkaWZmaWN1bHRpZXMgd2l0aCB0aGUgbW9yZSBjb252ZW50aW9uYWwgc3BlY2lhbGlzdCBtZXRob2RzLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkIwMjYwIChPcHRpbWlzYXRpb24gdGVjaG5pcXVlcyk7IEMxMTgwIChPcHRpbWlzYXRpb24gdGVjaG5pcXVlcykiLAogIGNvcnBzb3VyY2UgPSAgICJBdXN0cmFsaWFuIE5hdC4gVW5pdi4sIENhbmJlcnJhLCBBdXN0cmFsaWEiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAibGluZWFyIHByb2dyYW1taW5nOyBtYXRoZW1hdGljczsgbWluaW1heCBhcHByb3hpbWF0aW9uOyBub25saW5lYXIgYXBwcm94aW1hdGlvbjsgbnVtZXJpY2FsIG1ldGhvZHM7IG9wdGltaXNhdGlvbjsgVEhPIiwKfQoKQEFydGljbGV7U2Nod2Vpa2VydDoxOTcwOkNFSSwKICBhdXRob3IgPSAgICAgICAiRC4gRy4gU2Nod2Vpa2VydCIsCiAgdGl0bGUgPSAgICAgICAgIkEgQ29tcGFyaXNvbiBvZiBFcnJvciBJbXByb3ZlbWVudCBFc3RpbWF0ZXMgZm9yIEFkYXB0aXZlIFRyYXBlem9pZCBJbnRlZ3JhdGlvbiIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjMiLAogIHBhZ2VzID0gICAgICAgICIxNjMtLTE2NiIsCiAgbW9udGggPSAgICAgICAgbWFyLAogIHllYXIgPSAgICAgICAgICIxOTcwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjUuNTUiLAogIE1SbnVtYmVyID0gICAgICI0NFwjNzc1MSIsCiAgbXJyZXZpZXdlciA9ICAgIlIuIEUuIEJhcm5oaWxsIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlZhcmlvdXMgc2ltcGxlIGNob2ljZXMgb2YgZXJyb3IgaW1wcm92ZW1lbnQgZXN0aW1hdGVzIGZvciB0aGUgdHJhcGV6b2lkIHJ1bGUgYXJlIHN0dWRpZWQgdG8gZGVtb25zdHJhdGUgYSBjb21wYXJpc29uIHByb2NlZHVyZSB3aGljaCBpcyByZWxhdGl2ZWx5IGluZGVwZW5kZW50IG9mIHRoZSBwcm9mdXNpb24gb2YgYWRhcHRpdmUgc2VhcmNoIGFuZCBzdG9wcGluZyBzdHJhdGVnaWVzLiBDb21wYXJpc29ucyBhcmUgYmFzZWQgb24gJHhecjEkOyB0aGUgaW5jbHVzaW9uIG9mIHRoZSBub25pbnRlZ2VyIHBvd2VycyBtYWtlcyB0aGlzIG1vcmUgcmVhbGlzdGljIHRoYW4gdGhlIHVzdWFsIHBvbHlub21pYWwgYmFzZWQgY29tcGFyaXNvbi4gQmVoYXZpb3IgbmVhciB0aGUgc2luZ3VsYXJpdHkgd2FzIGZvdW5kIHRvIGJlIHRoZSBkb21pbmFudCBmYWN0b3IsIGFuZCBhIG5ldyBlc3RpbWF0ZSwgYmFzZWQgb24gYSBjb25zdGFudCBjdXJ2YXR1cmUgYXNzdW1wdGlvbiBhbmQgcGFyYW1ldHJpYyBkaWZmZXJlbmNlcywgd2FzIGNvbnNpZGVyZWQgc2xpZ2h0bHkgYmV0dGVyIHRoYW4gdGhlIG90aGVyIGNob2ljZXMgY29uc2lkZXJlZC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDExMCAoRXJyb3IgYW5hbHlzaXMgaW4gbnVtZXJpY2FsIG1ldGhvZHMpOyBDNDE2MCAoTnVtZXJpY2FsIGludGVncmF0aW9uIGFuZCBkaWZmZXJlbnRpYXRpb24pIiwKICBjb3Jwc291cmNlID0gICAiQmVsbCBUZWxlcGhvbmUgTGFicy4gSW5jLiwgTXVycmF5IEhpbGwsIE5KLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYWRhcHRpdmUgaW50ZWdyYXRpb247IGVycm9yIGFuYWx5c2lzOyBlcnJvciBpbXByb3ZlbWVudCBlc3RpbWF0ZTsgaW50ZWdyYXRpb247IG1hdGhlbWF0aWNzOyBub25wb2x5bm9taWFsIGVycm9yIGNyaXRlcmlhOyBudW1lcmljYWwgbWV0aG9kczsgcmU7IHRyYXBlem9pZCBydWxlIiwKfQoKQEFydGljbGV7U2Nod2FyY3o6MTk3MDpEUUEsCiAgYXV0aG9yID0gICAgICAgIlJvYmVydCBNLiBTY2h3YXJjeiBhbmQgSm9obiBGLiBCdXJnZXIgYW5kIFJvYmVydCBGLiBTaW1tb25zIiwKICB0aXRsZSA9ICAgICAgICAiQSBEZWR1Y3RpdmUgUXVlc3Rpb24gQW5zd2VyZXIgZm9yIE5hdHVyYWwgTGFuZ3VhZ2UgSW5mZXJlbmNlIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiMyIsCiAgcGFnZXMgPSAgICAgICAgIjE2Ny0tMTgzIiwKICBtb250aCA9ICAgICAgICBtYXIsCiAgeWVhciA9ICAgICAgICAgIjE5NzAiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0RhdGFiYXNlL1dpZWRlcmhvbGQuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiVGhlIHF1ZXN0aW9uLWFuc3dlcmluZyBhc3BlY3RzIG9mIHRoZSBQcm90b3N5bnRoZXggSUlJIHByb3RvdHlwZSBsYW5ndWFnZSBwcm9jZXNzaW5nIHN5c3RlbSBhcmUgZGVzY3JpYmVkIGFuZCBleGVtcGxpZmllZCBpbiBkZXRhaWwuIFRoZSBzeXN0ZW0gaXMgd3JpdHRlbiBpbiBMSVNQIDEuIDUgYW5kIG9wZXJhdGVzIG9uIHRoZSBRLTMyIHRpbWUtc2hhcmluZyBzeXN0ZW0uIFRoZSBzeXN0ZW0ncyBkYXRhIHN0cnVjdHVyZXMgYW5kIHRoZWlyIHNlbWFudGljIG9yZ2FuaXphdGlvbiwgdGhlIGRlZHVjdGl2ZSBxdWVzdGlvbi1hbnN3ZXJpbmcgZm9ybWFsaXNtIG9mIHJlbGF0aW9uYWwgcHJvcGVydGllcyBhbmQgY29tcGxleC1yZWxhdGlvbi1mb3JtaW5nIG9wZXJhdG9ycywgYW5kIHRoZSBxdWVzdGlvbi1hbnN3ZXJpbmcgcHJvY2VkdXJlcyB3aGljaCBlbXBsb3kgdGhlc2UgZmVhdHVyZXMgaW4gdGhlaXIgb3BlcmF0aW9uIGFyZSBhbGwgZGVzY3JpYmVkIGFuZCBpbGx1c3RyYXRlZC4gRXhhbXBsZXMgb2YgdGhlIHN5c3RlbSdzIHBlcmZvcm1hbmNlIGFuZCBvZiB0aGUgbGltaXRhdGlvbnMgb2YgaXRzIHF1ZXN0aW9uLWFuc3dlcmluZyBjYXBhYmlsaXR5IGFyZSBwcmVzZW50ZWQgYW5kIGRpc2N1c3NlZC4gSXQgaXMgc2hvd24gdGhhdCB0aGUgdXNlIG9mIHNlbWFudGljIGluZm9ybWF0aW9uIGluIGRlZHVjdGl2ZSBxdWVzdGlvbiBhbnN3ZXJpbmcgZ3JlYXRseSBmYWNpbGl0YXRlcyB0aGUgcHJvY2VzcywgYW5kIHRoYXQgYSB0b3AtZG93biBwcm9jZWR1cmUgd2hpY2ggd29ya3MgZnJvbSBxdWVzdGlvbiB0byBhbnN3ZXIgZW5hYmxlcyBlZmZlY3RpdmUgdXNlIHRvIGJlIG1hZGUgb2YgdGhpcyBpbmZvcm1hdGlvbi4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGFubm90ZSA9ICAgICAgICJEZWR1Y3RpdmUgaW5mZXJlbmNlIGRyaXZlbiBieSBFbmdsaXNoOiBQUk9UT1NZTlRIRVggSUlJIiwKICBjbGFzc2NvZGVzID0gICAiQzc4MjAgKEh1bWFuaXRpZXMgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIlN5c3RlbSBEZXYuIENvcnAuLCBTYW50YSBNb25pY2EsIENBLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2U7IGF1dG9tYXRhIHRoZW9yeTsgY29tcHV0YXRpb25hbCBsaW5ndWlzdGljcyIsCiAga2V5d29yZHMgPSAgICAgImFydGlmaWNpYWwgaW50ZWxsaWdlbmNlOyBjb21wdXRhdGlvbmFsIGxpbmd1aXN0aWNzOyBpbmZvcm1hdGlvbiByZXRyaWV2YWw7IGxhbmd1YWdlIHRyYW5zbGF0aW9uIGFuZCBsaW5ndWlzdGljcyIsCn0KCkBBcnRpY2xle0NhcmRlbmFzOjE5NzA6UExQLAogIGF1dGhvciA9ICAgICAgICJBLiBGLiBDYXJkZW5hcyBhbmQgVy4gSi4gS2FycGx1cyIsCiAgdGl0bGUgPSAgICAgICAgIntQREVMfSwgYSBMYW5ndWFnZSBmb3IgUGFydGlhbCBEaWZmZXJlbnRpYWwgRXF1YXRpb25zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiMyIsCiAgcGFnZXMgPSAgICAgICAgIjE4NC0tMTkxIChvciAxODQtLTE5MD8/KSIsCiAgbW9udGggPSAgICAgICAgbWFyLAogIHllYXIgPSAgICAgICAgICIxOTcwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkNvbnZlbnRpb25hbCBjb21wdXRlciBtZXRob2RzIGF2YWlsYWJsZSB0byBzb2x2ZSBjb250aW51b3VzIHN5c3RlbSBwcm9ibGVtcyBjaGFyYWN0ZXJpemVkIGJ5IHBhcnRpYWwgZGlmZmVyZW50aWFsIGVxdWF0aW9ucyBhcmUgdmVyeSB0aW1lLWNvbnN1bWluZyBhbmQgY3VtYmVyc29tZS4gQSBjb252ZW5pZW50LCBlYXN5IHRvIGxlYXJuIGFuZCB0byB1c2UsIGhpZ2ggbGV2ZWwgcHJvYmxlbSBvcmllbnRlZCBsYW5ndWFnZSB0byBzb2x2ZSBhbmQgc3R1ZHkgcGFydGlhbCBkaWZmZXJlbnRpYWwgZXF1YXRpb24gcHJvYmxlbXMgaGFzIGJlZW4gZGVzaWduZWQ7IGEgcHJhY3RpY2FsIHRyYW5zbGF0b3IgZm9yIHRoZSBsYW5ndWFnZSBoYXMgYWxzbyBiZWVuIGRlc2lnbmVkLCBhbmQgYSB3b3JraW5nIHZlcnNpb24gb2YgaXQgaGFzIGJlZW4gY29uc3RydWN0ZWQgZm9yIGEgc2lnbmlmaWNhbnQgcG9ydGlvbiBvZiB0aGUgbGFuZ3VhZ2UuIFRoaXMgUGFydGlhbCBEaWZmZXJlbnRpYWwgRXF1YXRpb24gTGFuZ3VhZ2UsIFBERUwsIGlzIG91dGxpbmVkLCBhbmQgdGhlIGhpZ2hsaWdodHMgb2YgdGhlIHRyYW5zbGF0b3IgYXJlIGJyaWVmbHkgc3VtbWFyaXplZC4gUERFTCBjYW4gaGFuZGxlIGEgbGFyZ2UgdmFyaWV0eSBvZiBmaWVsZHMuIFRpbWUtZGVwZW5kZW50IGFuZCB0aW1lLWluZGVwZW5kZW50IGZpZWxkcyBjYW4gYmUgZGVmaW5lZC4gQW55IHNpemUgb2YgZ3JpZCBjYW4gYmUgdXNlZCB0byBhcHByb3hpbWF0ZSByZWd1bGFyIGFuZCBpcnJlZ3VsYXIgZ2VvbWV0cmllcy4gTGluZWFyLCBub25saW5lYXIsIHVuaWZvcm0gYW5kIG5vbnVuaWZvcm0gZmllbGRzIGNhbiBiZSB0cmVhdGVkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTQwRCAoSGlnaCBsZXZlbCBsYW5ndWFnZXMpIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gQ2FsaWZvcm5pYSwgTG9zIEFuZ2VsZXMsIENBLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXJzOyBkaWZmZXJlbnRpYWwgZXF1YXRpb25zOyBtYXRoZW1hdGljczsgcHJvYmxlbSBvcmllbnRlZCBsYW5ndWFnZXMiLAp9CgpAQXJ0aWNsZXtMZXZpbmU6MTk3MDpBQVMsCiAgYXV0aG9yID0gICAgICAgIk0uIEouIExldmluZSBhbmQgUy4gTS4gU3dhbnNvbiIsCiAgdGl0bGUgPSAgICAgICAgIntBQ019IEFsZ29yaXRobSAzNzc6IFN5bWJvbGljIEV4cGFuc2lvbiBvZiBBbGdlYnJhaWMgRXhwcmVzc2lvbnMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTMiLAogIG51bWJlciA9ICAgICAgICIzIiwKICBwYWdlcyA9ICAgICAgICAiMTkxLS0xOTIiLAogIG1vbnRoID0gICAgICAgIG1hciwKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L01pc2MvYWNtLmJpYiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM3MzAwIChOYXR1cmFsIHNjaWVuY2VzIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJDYXJuZWdpZS1NZWxsb24gVW5pdi4sIFBpdHRzYnVyZ2gsIFBBLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJhbGdlYnJhOyBzdWJyb3V0aW5lcyIsCiAgeHhhdXRob3IgPSAgICAgIkouIEwuIExldmluZSIsCn0KCkBBcnRpY2xle0thaWxhczoxOTcwOkFNQywKICBhdXRob3IgPSAgICAgICAiTS4gVi4gS2FpbGFzIiwKICB0aXRsZSA9ICAgICAgICAiQW5vdGhlciBtZXRob2Qgb2YgY29udmVydGluZyBmcm9tIGhleGFkZWNpbWFsIHRvIGRlY2ltYWwiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTMiLAogIG51bWJlciA9ICAgICAgICIzIiwKICBwYWdlcyA9ICAgICAgICAiMTkzLS0xOTMiLAogIG1vbnRoID0gICAgICAgIG1hciwKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNTIzMCAoRGlnaXRhbCBhcml0aG1ldGljIG1ldGhvZHMpIiwKICBrZXl3b3JkcyA9ICAgICAiZGlnaXRhbCBhcml0aG1ldGljIiwKfQoKQEFydGljbGV7UGFnZXI6MTk3MDpOU1AsCiAgYXV0aG9yID0gICAgICAgIkQuIFBhZ2VyIiwKICB0aXRsZSA9ICAgICAgICAiQSBudW1iZXIgc3lzdGVtIGZvciB0aGUgcGVybXV0YXRpb25zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiMyIsCiAgcGFnZXMgPSAgICAgICAgIjE5My0tMTkzIiwKICBtb250aCA9ICAgICAgICBtYXIsCiAgeWVhciA9ICAgICAgICAgIjE5NzAiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzUyMzAgKERpZ2l0YWwgYXJpdGhtZXRpYyBtZXRob2RzKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIEhhd2FpaSwgSG9ub2x1bHUsIEhJLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJudW1iZXIgdGhlb3J5IiwKfQoKQEFydGljbGV7RGVtcHN0ZXI6MTk3MDpDUEEsCiAgYXV0aG9yID0gICAgICAgIkouIFIuIEguIERlbXBzdGVyIiwKICB0aXRsZSA9ICAgICAgICAiQ29tbWVudCBvbiBhIFBhZ2luZyBBbm9tYWx5IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiMyIsCiAgcGFnZXMgPSAgICAgICAgIjE5My0tMTk0IiwKICBtb250aCA9ICAgICAgICBtYXIsCiAgeWVhciA9ICAgICAgICAgIjE5NzAiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQyOTAgKE90aGVyIGNvbXB1dGVyIHRoZW9yeSkiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBCcml0aXNoIENvbHVtYmlhLCBWYW5jb3V2ZXIsIEJDLCBDYW5hZGEiLAogIGtleXdvcmRzID0gICAgICJjb21wdXRhdGlvbiB0aGVvcnk7IGRlbWFuZCBwYWdpbmc7IHBhZ2luZyBtYWNoaW5lczsgcmVwbGFjZW1lbnQgYWxnb3JpdGhtOyBzdG9yYWdlIGFsbG9jYXRpb24iLAp9CgpAQXJ0aWNsZXtNYXVyZXI6MTk3MDpOQ0ksCiAgYXV0aG9yID0gICAgICAgIkguIEEuIE1hdXJlciIsCiAgdGl0bGUgPSAgICAgICAgIkEgTm90ZSBvbiB0aGUgQ29tcGxlbWVudCBvZiBJbmhlcmVudGx5IEFtYmlndW91cyBDb250ZXh0LUZyZWUgTGFuZ3VhZ2VzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiMyIsCiAgcGFnZXMgPSAgICAgICAgIjE5NC0tMTk0IiwKICBtb250aCA9ICAgICAgICBtYXIsCiAgeWVhciA9ICAgICAgICAgIjE5NzAiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQyMTAgKEZvcm1hbCBsb2dpYykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBDYWxnYXJ5LCBBbHRhLiwgQ2FuYWRhIiwKICBrZXl3b3JkcyA9ICAgICAiYW1iaWd1aXR5OyBib3VuZGVkIGxhbmd1YWdlOyBDaG9tc2t5LWxhbmd1YWdlOyBjb21wbGVtZW50OyBjb250ZXh0LWZyZWUgbGFuZ3VhZ2U7IGZvcm1hbCBsYW5ndWFnZXM7IGluaGVyZW50IGFtYmlndWl0eTsgcGhyYXNlIHN0cnVjdHVyZSBsYW5ndWFnZTsgcHJvZHVjdGlvbiBzeXN0ZW07IHR5cGUgMiBsYW5ndWFnZSIsCn0KCkBBcnRpY2xle0hzaWFvOjE5NzA6Q0ZTLAogIGF1dGhvciA9ICAgICAgICJELiBLLiBIc2lhbyBhbmQgRi4gRC4gSGFyYXJ5IiwKICB0aXRsZSA9ICAgICAgICAiQ29ycmlnZW5kYToge2BgQSBGb3JtYWwgU3lzdGVtIGZvciBJbmZvcm1hdGlvbiBSZXRyaWV2YWwgZnJvbSBGaWxlcycnfSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjMiLAogIHBhZ2VzID0gICAgICAgICIyNjYtLTI2NiIsCiAgbW9udGggPSAgICAgICAgbWFyLAogIHllYXIgPSAgICAgICAgICIxOTcwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIERlYyAyNiAxODozMzo0MiAxOTk1IiwKICBub3RlID0gICAgICAgICAiU2VlIFxjaXRle0hzaWFvOjE5NzA6RlNJfS4iLAp9CgpAQXJ0aWNsZXtEZVNhbHZpbzoxOTcwOkNDSSwKICBhdXRob3IgPSAgICAgICAiQS4gSi4gRGVTYWx2aW8gYW5kIEouIEcuIFB1cmR5IGFuZCBKLiBSYXUiLAogIHRpdGxlID0gICAgICAgICJDcmVhdGlvbiBhbmQgQ29udHJvbCBvZiBJbnRlcm5hbCBEYXRhIEJhc2VzIFVuZGVyIGEge0ZvcnRyYW59IFByb2dyYW1taW5nIEVudmlyb25tZW50IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiNCIsCiAgcGFnZXMgPSAgICAgICAgIjIxMS0tMjE1IiwKICBtb250aCA9ICAgICAgICBhcHIsCiAgeWVhciA9ICAgICAgICAgIjE5NzAiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiQSBtZXRob2QgaXMgZGVzY3JpYmVkIGZvciB0aGUgZGVmaW5pdGlvbiBvZiBhIHVzZXIncyBDT01NT04gc3RydWN0dXJlIGFuZCB0aGUgYXV0b21hdGljIGdlbmVyYXRpb24gb2YgdGhlIG5lY2Vzc2FyeSBDT01NT04sIERJTUVOU0lPTiwgRVFVSVZBTEVOQ0UsIGFuZCB0eXBlIGRlY2xhcmF0aW9ucyBmb3IgZWFjaCBvZiB0aGUgdXNlcidzIHJvdXRpbmVzLiBUaGUgZGVmaW5pdGlvbiBmb3IgdGhlIENPTU1PTiBpcyBjb250YWluZWQgaW4gYW4gZWFzeSB0byBtb2RpZnkgZm9ybSwgdGh1cyBhbGxvd2luZyB0aGUgY29udHJvbCBvZiBnZW5lcmFsIGNvbW11bmljYXRpb25zIG9mIGRhdGEgYmV0d2VlbiByb3V0aW5lcy4gVGhlIGRlc2NyaWJlZCBzeXN0ZW0gaGFzIGJlZW4gaW1wbGVtZW50ZWQgb24gdGhlIElCTSA3MDk0LCBDREMgNjAwMCBzZXJpZXMsIGFuZCB0aGUgSUJNIDM2MC4gVGhlIG1ldGhvZCBoYXMgcHJvdmVkIHRvIGJlIGludmFsdWFibGUgZm9yIHRoZSBkZWZpbml0aW9uIGFuZCBjb250cm9sIG9mIENPTU1PTiBpbiBtYW55IGxhcmdlLXNjYWxlIHByb2dyYW1zLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTMwIChEYXRhIGhhbmRsaW5nIHRlY2huaXF1ZXMpOyBDNjE0MEQgKEhpZ2ggbGV2ZWwgbGFuZ3VhZ2VzKSIsCiAgY29ycHNvdXJjZSA9ICAgIlRSVyBTeXN0ZW1zLCBSZWRvbmRvIEJlYWNoIGFuZCBTdW5ueXZhbGUsIENBLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXJzOyBkYXRhIGhhbmRsaW5nOyBkYXRhIHN0cnVjdHVyZXM7IEZPUlRSQU4iLAp9CgpAQXJ0aWNsZXtNaWxsczoxOTcwOlNEUCwKICBhdXRob3IgPSAgICAgICAiSC4gRC4gTWlsbHMiLAogIHRpdGxlID0gICAgICAgICJTeW50YXgtRGlyZWN0ZWQgRG9jdW1lbnRhdGlvbiBmb3Ige1BMMzYwfSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjQiLAogIHBhZ2VzID0gICAgICAgICIyMTYtLTIyMiIsCiAgbW9udGggPSAgICAgICAgYXByLAogIHllYXIgPSAgICAgICAgICIxOTcwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlRoZSBsYW5ndWFnZSBQTDM2MCwgdG9nZXRoZXIgd2l0aCBpdHMgcGhyYXNlIHN0cnVjdHVyZSBncmFtbWFyLCBpcyB1c2VkIGFzIGEgY29uY3JldGUgYmFzaXMgZm9yIGlsbHVzdHJhdGluZyBhbiBpZGVhIGNhbGxlZCBzeW50YXgtZGlyZWN0ZWQgZG9jdW1lbnRhdGlvbi4gVGhpcyBpZGVhIGlzLXRvIHVzZSB0aGUgcGhyYXNlIHN0cnVjdHVyZSBvZiBhIHByb2dyYW0gdG8gZGVmaW5lIHRoZSBzdHJ1Y3R1cmUgb2YgYSBmb3JtYWwgZG9jdW1lbnRhdGlvbiBmb3IgdGhhdCBwcm9ncmFtOyB0byB1c2UgdGhlIHN5bnRhY3RpYyB0eXBlcyBhbmQgaWRlbnRpZmllcnMgaW4gdGhlIHJlc3VsdGluZyBzdHJ1Y3R1cmUgdG8gdHJpZ2dlciB0aGUgYXV0b21hdGljIGZvcm1hdGlvbiBvZiBxdWVzdGlvbnMgdG8gdGhlIHByb2dyYW1tZXIsIHdob3NlIGFuc3dlcnMgd2lsbCBiZWNvbWUgcGFydCBvZiB0aGF0IGRvY3VtZW50YXRpb247IGFuZCB0byBwcm92aWRlIGF1dG9tYXRpYyBzdG9yYWdlIGFuZCByZXRyaWV2YWwgZmFjaWxpdGllcyBzbyB0aGF0IG90aGVyIHByb2dyYW1tZXJzIHdobyB3YW50IHRvIHVuZGVyc3RhbmQgb3IgbW9kaWZ5IHRoZSBpbmRleCBpbiB2YXJpb3VzIHdheXMgYnkgc3ludGFjdGljIHR5cGVzIGFuZCBvYmplY3RzLiBBIHNtYWxsIFBMMzYwIHByb2dyYW0sIGFscmVhZHkgZm91bmQgaW4gdGhlIGxpdGVyYXR1cmUsIGlzIHdvcmtlZCBvdXQgYXMgYW4gZXhhbXBsZS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjE0MEQgKEhpZ2ggbGV2ZWwgbGFuZ3VhZ2VzKTsgQzYxNTBHIChEaWFnbm9zdGljLCB0ZXN0aW5nLCBkZWJ1Z2dpbmcgYW5kIGV2YWx1YXRpbmcgc3lzdGVtcykiLAogIGNvcnBzb3VyY2UgPSAgICJJQk0sIEdhaXRoZXJzYnVyZywgTUQsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlcnM7IGNvbXB1dGVycywgcHJvZ3JhbW1pbmc7IGRvY3VtZW50YXRpb247IHByb2NlZHVyZSBvcmllbnRlZCBsYW5ndWFnZXM7IFByb2dyYW0gYW5kIHN5c3RlbSIsCn0KCkBBcnRpY2xle0JheWVyOjE5NzA6U0NDLAogIGF1dGhvciA9ICAgICAgICJSdWRvbGYgQmF5ZXIgYW5kIENocmlzdG9waCBXaXR6Z2FsbCIsCiAgdGl0bGUgPSAgICAgICAgIlNvbWUgQ29tcGxldGUgQ2FsY3VsaSBmb3IgTWF0cmljZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTMiLAogIG51bWJlciA9ICAgICAgICI0IiwKICBwYWdlcyA9ICAgICAgICAiMjIzLS0yMzciLAogIG1vbnRoID0gICAgICAgIGFwciwKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvQ29tcGlsZXIvcmV5bm9sZHMuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiQSBtYXRyaXggY2FsY3VsdXMgaXMgaW50cm9kdWNlZCB3aXRoIHRoZSBpbnRlbnRpb24gb2YgZGV2ZWxvcGluZyBkYXRhIHN0cnVjdHVyZXMgc3VpdGFibGUgZm9yIGEgaGlnaCBsZXZlbCBhbGdvcml0aG1pYyBsYW5ndWFnZSBmb3IgbWF0aGVtYXRpY2FsIHByb2dyYW1taW5nLiBJdCBpcyBzaG93biBob3cgdGhlIHNwZWNpYWwgc3RydWN0dXJlIG9mIG1hdHJpY2VzIGNhbiBiZSBkZXNjcmliZWQgYW5kIHV0aWxpemVkIGZvciBlZmZpY2llbnQgY29tcHV0aW5nIGJ5IHNhdmluZyBtZW1vcnkgc3BhY2UgYW5kIHN1cGVyZmx1b3VzIG9wZXJhdGlvbnMuIFNlcXVlbmNlcyBvZiBtYXRyaWNlcyAoYW5kIHNlcXVlbmNlcyBvZiBzZXF1ZW5jZXMgb2YgbWF0cmljZXMpIGFyZSBjb25zaWRlcmVkLCBhbmQgbWF0cml4IG9wZXJhdG9ycyBhcmUgZXh0ZW5kZWQgdG8gc2VxdWVuY2Ugb3BlcmF0b3JzIGFuZCBjdW11bGF0aXZlIG9wZXJhdG9ycy4gQWxnb3JpdGhtcyBhcmUgZ2l2ZW4gd2hpY2ggdXNlIHN5bWJvbCBtYW5pcHVsYXRpb24gb2YgbWF0cml4IGV4cHJlc3Npb25zIHNvIGFzIHRvIGZpbmQgdGhlIGZvcm1zIGJlc3Qgc3VpdGVkIGZvciBjb21wdXRhdGlvbi4gVGhlc2UgZm9ybXMgYXJlIGNhbGxlZCBub3JtYWxmb3Jtcy4gU2V2ZXJhbCBjb21wbGV0ZW5lc3MgcmVzdWx0cyBhcmUgb2J0YWluZWQgaW4gdGhlIHNlbnNlIHRoYXQgZm9yIGVhY2ggZXhwcmVzc2lvbiBhbiBlcXVpdmFsZW50IGV4cHJlc3Npb24gaW4gbm9ybWFsIGZvcm0gY2FuIGJlIGZvdW5kIHdpdGhpbiBhIHNwZWNpZmllZCBjYWxjdWx1cy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNoZWNrZWQgPSAgICAgICIyOSBKdW5lIDE5OTMiLAogIGNsYXNzY29kZXMgPSAgICJCMDI2MCAoT3B0aW1pc2F0aW9uIHRlY2huaXF1ZXMpOyBDMTE4MCAoT3B0aW1pc2F0aW9uIHRlY2huaXF1ZXMpIiwKICBjb3Jwc291cmNlID0gICAiQm9laW5nIFNjaS4gUmVzLiBMYWJzLiwgU2VhdHRsZSwgV0EsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhbGdvcml0aG1pYyBsYW5ndWFnZXM7IGNvbXB1dGVyczsgY29tcHV0ZXJzLCBwcm9ncmFtbWluZzsgZGF0YSBzdHJ1Y3R1cmVzOyBtYXRoZW1hdGljYWw7IG1hdGhlbWF0aWNzOyBtYXRyaXggYWxnZWJyYTsgcHJvZ3JhbW1pbmciLAp9CgpAQXJ0aWNsZXtCcmluY2hIYW5zZW46MTk3MDpOTVMsCiAgYXV0aG9yID0gICAgICAgIlAuIHtCcmluY2ggSGFuc2VufSIsCiAgdGl0bGUgPSAgICAgICAgIlRoZSBOdWNsZXVzIG9mIGEgTXVsdGlwcm9ncmFtbWluZyBTeXN0ZW0iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTMiLAogIG51bWJlciA9ICAgICAgICI0IiwKICBwYWdlcyA9ICAgICAgICAiMjM4LS0yNDEsIDI1MCIsCiAgbW9udGggPSAgICAgICAgYXByLAogIHllYXIgPSAgICAgICAgICIxOTcwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9NaXNjL29zLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIlRoZSBwaGlsb3NvcGh5IGFuZCBzdHJ1Y3R1cmUgaXMgZGVzY3JpYmVkIG9mIGEgbXVsdGlwcm9ncmFtbWluZyBzeXN0ZW0gdGhhdCBjYW4gYmUgZXh0ZW5kZWQgd2l0aCBhIGhpZXJhcmNoeSBvZiBvcGVyYXRpbmcgc3lzdGVtcyB0byBzdWl0IGRpdmVyc2UgcmVxdWlyZW1lbnRzIG9mIHByb2dyYW0gc2NoZWR1bGluZyBhbmQgcmVzb3VyY2UgYWxsb2NhdGlvbi4gVGhlIHN5c3RlbSBudWNsZXVzIHNpbXVsYXRlcyBhbiBlbnZpcm9ubWVudCBpbiB3aGljaCBwcm9ncmFtIGV4ZWN1dGlvbiBhbmQgaW5wdXRcc2xhc2ggb3V0cHV0IGFyZSBoYW5kbGVkIHVuaWZvcm1seSBhcyBwYXJhbGxlbCwgY29vcGVyYXRpbmcgcHJvY2Vzc2VzLiBBIGZ1bmRhbWVudGFsIHNldCBvZiBwcmltaXRpdmVzIGFsbG93cyB0aGUgZHluYW1pYyBjcmVhdGlvbiBhbmQgY29udHJvbCBvZiBhIGhpZXJhcmNoeSBvZiBwcm9jZXNzZXMgYXMgd2VsbCBhcyB0aGUgY29tbXVuaWNhdGlvbiBhbW9uZyB0aGVtLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTUwSiAoT3BlcmF0aW5nIHN5c3RlbXMpIiwKICBjb3Jwc291cmNlID0gICAiQS9TIFJlZ25lY2VudHJhbGVuLCBDb3BlbmhhZ2VuLCBEZW5tYXJrIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyczsgY29tcHV0ZXJzLCB0aW1lIHNoYXJpbmc7IG9wZXJhdGluZyBzeXN0ZW1zIiwKICBrZXl3b3JkcyA9ICAgICAibXVsdGlwcm9ncmFtbWluZyIsCn0KCkBBcnRpY2xle0Vhc3RtYW46MTk3MDpSU1AsCiAgYXV0aG9yID0gICAgICAgIkMuIE0uIEVhc3RtYW4iLAogIHRpdGxlID0gICAgICAgICJSZXByZXNlbnRhdGlvbnMgZm9yIFNwYWNlIFBsYW5uaW5nIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiNCIsCiAgcGFnZXMgPSAgICAgICAgIjI0Mi0tMjUwIiwKICBtb250aCA9ICAgICAgICBhcHIsCiAgeWVhciA9ICAgICAgICAgIjE5NzAiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiUHJvYmxlbXMgaW52b2x2aW5nIHRoZSBhcnJhbmdlbWVudCBvZiBvYmplY3RzIGluIHR3by1vciB0aHJlZS1zcGFjZSB3aGVyZSB0aGUgb2JqZWN0aXZlIGZ1bmN0aW9uIHByaW1hcmlseSBjb25zaXN0cyBvZiBkZXJpdmF0aXZlcyBvZiB0aGUgZGlzdGFuY2UgYmV0d2VlbiBvYmplY3RzIG9yIHRoZWlyIGFycmFuZ2VtZW50IGFyZSBjYWxsZWQgc3BhY2UgcGxhbm5pbmcgcHJvYmxlbXMuIFRoZSByZXByZXNlbnRhdGlvbmFsIHJlcXVpcmVtZW50cyBmb3IgdGhpcyBwcm9ibGVtIGFyZWEgYXJlIGRlZmluZWQgYW5kIGNvbXBhcmVkIHdpdGggY3VycmVudCBjb21wdXRlciBncmFwaGljIGxhbmd1YWdlcy4gRm91ciBhbHRlcm5hdGl2ZSBkYXRhIHN0cnVjdHVyZXMgdGhhdCBhbGxvdyBhdXRvbWF0ZWQgc3BhY2UgcGxhbm5pbmcgYXJlIGRlc2NyaWJlZCBhbmQgY29tcGFyZWQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKSIsCiAgY29ycHNvdXJjZSA9ICAgIkNhcm5lZ2llLU1lbGxvbiBVbml2LiwgUGl0dHNidXJnaCwgUEEsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlci1haWRlZCBkZXNpZ247IGNvbXB1dGVyczsgY29tcHV0ZXJzLCBsYW5ndWFnZTsgZGF0YSBzdHJ1Y3R1cmVzOyBkZXNpZ24gYXV0b21hdGlvbjsgZ3JhcGhpYyBtZXRob2RzOyBncmFwaGljcyIsCn0KCkBBcnRpY2xle1BvbWVyYW56OjE5NzA6Q01QLAogIGF1dGhvciA9ICAgICAgICJKLiBFLiBQb21lcmFueiBhbmQgUi4gTC4ge1dlaWwsIEpyLn0iLAogIHRpdGxlID0gICAgICAgICJUaGUgY3ljbGljYWwgbWFqb3JpdHkgcHJvYmxlbSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjQiLAogIHBhZ2VzID0gICAgICAgICIyNTEtLTI1NCIsCiAgbW9udGggPSAgICAgICAgYXByLAogIHllYXIgPSAgICAgICAgICIxOTcwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlRoZSB1bnNvbHZlZCBjb21iaW5hdGlvbmFsIHByb2JsZW0gb2YgdGhlIGN5Y2xpY2FsIG1ham9yaXR5IGlzIHByZXNlbnRlZCBhbmQgc29tZSBtZXcsIHNpbXVsYXRlZCByZXN1bHRzIGZvciAzLCA0LCA1LFxsZG90c3t9LCA0MCBpc3N1ZXMgYW5kIDMsIDUsIDcsXGxkb3Rze30sIDM3IGp1ZGdlcyBhcmUgcmVwb3J0ZWQuIFRoZSBtZXRob2QgZGV2aXNlZCBmb3Igc2ltdWxhdGluZyB0aGUgdm90aW5nIHByb2Nlc3MgdG8gZXN0aW1hdGUgdGhlIHByb2JhYmlsaXRpZXMgZG9lcyBub3Qgc29sdmUgdGhlIHByb2JsZW0sIGJ1dCBhcHBlYXJzIG11Y2ggbW9yZSBlZmZpY2llbnQgdGhhbiBvbmUgcHJldmlvdXMgc2ltdWxhdGlvbiBhbmQgbW9yZSBhY2N1cmF0ZSB0aGFuIGFub3RoZXIuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzExNjAgKENvbWJpbmF0b3JpYWwgbWF0aGVtYXRpY3MpIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gQ2hpY2FnbywgSUwsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21iaW5hdG9yaWFsIG1hdGhlbWF0aWNzOyBjb21wdXRlcnMsIHNpbXVsYXRpb247IHNpbXVsYXRpb247IHN0YXRpc3RpY2FsIG1ldGhvZHMiLAp9CgpAQXJ0aWNsZXtOaWxzb246MTk3MDpDU1UsCiAgYXV0aG9yID0gICAgICAgIkUuIE4uIE5pbHNvbiIsCiAgdGl0bGUgPSAgICAgICAgIkN1YmljIFNwbGluZXMgb24gVW5pZm9ybSBNZXNoZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTMiLAogIG51bWJlciA9ICAgICAgICI0IiwKICBwYWdlcyA9ICAgICAgICAiMjU1LS0yNTgiLAogIG1vbnRoID0gICAgICAgIGFwciwKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY1LjIwIiwKICBNUm51bWJlciA9ICAgICAiNDRcIzExODkiLAogIG1ycmV2aWV3ZXIgPSAgICJDLiBBLiBIYWxsIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkEgdmVyeSBzaW1wbGUgcHJvY2VkdXJlIGlzIHByZXNlbnRlZCBmb3IgY29uc3RydWN0aW5nIGN1YmljIHNwbGluZXMsIHBlcmlvZGljIG9yIG5vbnBlcmlvZGljLCBvbiB1bmlmb3JtIG1lc2hlcy4gQXJjcyBvZiB0d28gY3ViaWNzIHN1ZmZpY2UgdG8gY29uc3RydWN0IGEgYmFzaXMgb2YgY2FyZGluYWwgc3BsaW5lcy4gQW4gYWxnb3JpdGhtIGlzIGdpdmVuIHdoaWNoIHJlcXVpcmVzIG9ubHkgbWluaW1hbCBzdG9yYWdlIGFuZCBjb21wdXRhdGlvbiBhbmQgcGVybWl0cyBlYXN5IHRyYWRlLW9mZiBvZiBvbmUgYWdhaW5zdCB0aGUgb3RoZXIuIFRoZSBhcHBsaWNhdGlvbiBvZiB0aGVzZSBkZXZpY2VzIGlzIG9mIGZ1bmRhbWVudGFsIGltcG9ydGFuY2UgaW4gdGhlIGFyZWEgb2YgY29tcHV0ZXIgZ3JhcGhpY3Mgd2hlcmUgc3Vic3RhbnRpYWwgc2F2aW5ncyBpbiBjb21wdXRpbmcgdGltZSBhbmQgc3RvcmFnZSByZXF1aXJlbWVudHMgaGF2ZSBzcGVjaWFsIHNpZ25pZmljYW5jZS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDEzMCAoSW50ZXJwb2xhdGlvbiBhbmQgZnVuY3Rpb24gYXBwcm94aW1hdGlvbikiLAogIGNvcnBzb3VyY2UgPSAgICJQcmF0dCBhbmQgV2hpdG5leSBBaXJjcmFmdCwgRWFzdCBIYXJ0Zm9yZCwgQ1QsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjYXJkaW5hbCBzcGxpbmVzOyBjb21wdXRlcnM7IG1hdGhlbWF0aWNzOyBudW1lcmljYWwgbWV0aG9kczsgcG9seW5vbWlhbHM7IHNpbXBsZSBzcGxpbmUgcmVwcmVzZW50YXRpb247IHVuaWZvcm0gbWVzaCBzcGxpbmVzIiwKfQoKQEFydGljbGV7UGFua2lld2ljejoxOTcwOkFBRCwKICBhdXRob3IgPSAgICAgICAiVy4gUGFua2lld2ljeiIsCiAgdGl0bGUgPSAgICAgICAgIntBQ019IEFsZ29yaXRobSAzNzg6IERpc2NyZXRpemVkIHtOZXd0b259LWxpa2UgTWV0aG9kIGZvciBTb2x2aW5nIGEgU3lzdGVtIG9mIFNpbXVsdGFuZW91cyBOb25saW5lYXIgRXF1YXRpb25zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiNCIsCiAgcGFnZXMgPSAgICAgICAgIjI1OS0tMjYwIiwKICBtb250aCA9ICAgICAgICBhcHIsCiAgeWVhciA9ICAgICAgICAgIjE5NzAiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQxNTAgKE5vbmxpbmVhciBhbmQgZnVuY3Rpb25hbCBlcXVhdGlvbnMpOyBDNzMwMCAoTmF0dXJhbCBzY2llbmNlcyBjb21wdXRpbmcpIiwKICBrZXl3b3JkcyA9ICAgICAibm9ubGluZWFyIGVxdWF0aW9uczsgbnVtZXJpY2FsIG1ldGhvZHM7IHN1YnJvdXRpbmVzIiwKfQoKQEFydGljbGV7THluZXNzOjE5NzA6QUFTLAogIGF1dGhvciA9ICAgICAgICJKLiBOLiBMeW5lc3MiLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gMzc5OiB7U1FVQU5LIChTaW1wc29uIFF1YWRyYXR1cmUgVXNlZCBBZGFwdGl2ZWx5LU5vaXNlIEtpbGxlZCl9IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiNCIsCiAgcGFnZXMgPSAgICAgICAgIjI2MC0tMjYzIChvciAyNjAtLTI2Mj8/KSIsCiAgbW9udGggPSAgICAgICAgYXByLAogIHllYXIgPSAgICAgICAgICIxOTcwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MTYwIChOdW1lcmljYWwgaW50ZWdyYXRpb24gYW5kIGRpZmZlcmVudGlhdGlvbik7IEM3MzAwIChOYXR1cmFsIHNjaWVuY2VzIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJBcmdvbm5lIE5hdC4gTGFiLiwgSUwsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImludGVncmF0aW9uOyBzdWJyb3V0aW5lcyIsCn0KCkBBcnRpY2xle0hlZXNzOjE5NzA6Q1BXLAogIGF1dGhvciA9ICAgICAgICJXLiBGLiB7SGVlc3MsIEpyLn0iLAogIHRpdGxlID0gICAgICAgICJDb21tZW50cyBvbiBhIHBhcGVyIGJ5IHtXYWxsYWNlfSBhbmQge01hc29ufSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjQiLAogIHBhZ2VzID0gICAgICAgICIyNjQtLTI2NSIsCiAgbW9udGggPSAgICAgICAgYXByLAogIHllYXIgPSAgICAgICAgICIxOTcwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTUwSiAoT3BlcmF0aW5nIHN5c3RlbXMpIiwKICBrZXl3b3JkcyA9ICAgICAibXVsdGlwcm9ncmFtbWluZzsgc3RvcmFnZSBhbGxvY2F0aW9uIiwKfQoKQEFydGljbGV7U21pdGg6MTk3MDpDTVUsCiAgYXV0aG9yID0gICAgICAgIkouIEwuIFNtaXRoIiwKICB0aXRsZSA9ICAgICAgICAiQ29tbWVudCBvbiBtdWx0aXByb2dyYW1taW5nIHVuZGVyIGEgcGFnZSBvbiBkZW1hbmQgc3RyYXRlZ3kiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTMiLAogIG51bWJlciA9ICAgICAgICI0IiwKICBwYWdlcyA9ICAgICAgICAiMjY1LS0yNjUiLAogIG1vbnRoID0gICAgICAgIGFwciwKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjE1MEogKE9wZXJhdGluZyBzeXN0ZW1zKSIsCiAgY29ycHNvdXJjZSA9ICAgIkNTSVJPLCBDYW5iZXJyYSBDaXR5LCBBQ1QsIEF1c3RyYWxpYSIsCiAga2V5d29yZHMgPSAgICAgIm11bHRpcHJvZ3JhbW1pbmciLAp9CgpAQXJ0aWNsZXtkZVZyaWVzOjE5NzA6Q0xNLAogIGF1dGhvciA9ICAgICAgICJSb25hbGQgQy4ge2RlIFZyaWVzfSIsCiAgdGl0bGUgPSAgICAgICAgIkNvbW1lbnQgb24ge0xhd2xlcn0ncyBNdWx0aWxldmVsIHtCb29sZWFufSBtaW5pbWl6YXRpb24iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTMiLAogIG51bWJlciA9ICAgICAgICI0IiwKICBwYWdlcyA9ICAgICAgICAiMjY1LS0yNjYiLAogIG1vbnRoID0gICAgICAgIGFwciwKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4LjAwICg5NC4wMCkiLAogIE1SbnVtYmVyID0gICAgICI0NFwjNzgwMSIsCiAgbXJyZXZpZXdlciA9ICAgIkUuIE1hbGlzemV3c2tpIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MjMwIChTd2l0Y2hpbmcgdGhlb3J5KSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIE5ldyBNZXhpY28sIEFsYnVxdWVycXVlLCBOTSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiZ2VuZXJhbGl6ZWQgcHJpbWUgaW1wbGljYW50czsgaW5jb21wbGV0ZWx5IHNwZWNpZmllZCBmdW5jdGlvbnM7IG1pbmltYWwgZm9ybXM7IG1pbmltaXphdGlvbjsgbXVsdGlsZXZlbCBsb2dpYyBkZXNpZ24iLAogIGtleXdvcmRzID0gICAgICJtaW5pbWlzYXRpb24gb2Ygc3dpdGNoaW5nIG5ldHMiLAp9CgpAQXJ0aWNsZXtLbmlnaHQ6MTk3MDpBQ1AsCiAgYXV0aG9yID0gICAgICAgIksuIFIuIEtuaWdodCIsCiAgdGl0bGUgPSAgICAgICAgIkFuIHtBbGdvbH0gY29uc3RydWN0aW9uIGZvciBwcm9jZWR1cmVzIGFzIHBhcmFtZXRlcnMgb2YgcHJvY2VkdXJlcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjQiLAogIHBhZ2VzID0gICAgICAgICIyNjYtLTI2NiIsCiAgbW9udGggPSAgICAgICAgYXByLAogIHllYXIgPSAgICAgICAgICIxOTcwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTQwRCAoSGlnaCBsZXZlbCBsYW5ndWFnZXMpIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gU3VycmV5LCBHdWlsZGZvcmQsIFVLIiwKICBrZXl3b3JkcyA9ICAgICAiQUxHT0w7IHByb2dyYW1taW5nIiwKfQoKQEFydGljbGV7V2lydGg6MTk3MDpDTU0sCiAgYXV0aG9yID0gICAgICAgIk4uIFdpcnRoIiwKICB0aXRsZSA9ICAgICAgICAiQ29ycmlnZW5kYToge2BgT24gTXVsdGlwcm9ncmFtbWluZywgTWFjaGluZSBDb2RpbmcsIGFuZCBDb21wdXRlciBPcmdhbml6YXRpb259JyciLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTMiLAogIG51bWJlciA9ICAgICAgICI0IiwKICBwYWdlcyA9ICAgICAgICAiMjY2LS0yNjYiLAogIG1vbnRoID0gICAgICAgIGFwciwKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIkZyaSBKYW4gMTcgMTg6MjM6NTMgMTk5NyIsCiAgbm90ZSA9ICAgICAgICAgIlNlZSBcY2l0ZXtXaXJ0aDoxOTY5Ok1NQ30uIiwKfQoKQEFydGljbGV7SG9kZXM6MTk3MDpQU08sCiAgYXV0aG9yID0gICAgICAgIkwuIEhvZGVzIiwKICB0aXRsZSA9ICAgICAgICAiUHJvZ3JhbW1pbmcgU3lzdGVtIGZvciB0aGUgT24tTGluZSBBbmFseXNpcyBvZiBCaW9tZWRpY2FsIEltYWdlcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjUiLAogIHBhZ2VzID0gICAgICAgICIyNzktLTI4MywgMjg2IiwKICBtb250aCA9ICAgICAgICBtYXksCiAgeWVhciA9ICAgICAgICAgIjE5NzAiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiQSBwcmVsaW1pbmFyeSBkZXNjcmlwdGlvbiBvZiB0aGUgc29mdHdhcmUgZm9yIGEgY29tcHV0ZXItZGlzcGxheSBzeXN0ZW0gaXMgZ2l2ZW4gd2l0aCBzcGVjaWFsIGVtcGhhc2lzIG9uIHRoZSBtYW4tbWFjaGluZSBpbnRlcmFjdGlvbi4gVGhpcyBzeXN0ZW0gaXMgaW50ZW5kZWQgZm9yIGEgd2lkZSB2YXJpZXR5IG9mIGJpb21lZGljYWwgYXBwbGljYXRpb25zLiBBcyBhbiBleGFtcGxlLCB0aGUgbWV0aG9kcyBhcmUgYXBwbGllZCB0byB0aGUga2FyeW90eXBpbmcgb2YgY2hyb21vc29tZXMuIFRoZSBzeXN0ZW0gaXMgc2VwYXJhdGVkIGludG8gZm91ciBwcm9ncmFtbWluZyB0YXNrcy1waWN0dXJlIHRyYW5zZm9ybWF0aW9ucywgZmlsZSBtYWludGVuYW5jZSwgcGljdHVyZSBzdHJ1Y3R1cmluZywgYW5kIGRpc3BsYXkgbWFuYWdlbWVudC4gUGljdHVyZSBzdHJ1Y3R1cmluZyBpcyBjb25zaWRlcmVkIGFzIHRoZSB2ZWhpY2xlIGZvciBtYW4tbWFjaGluZSBjb21tdW5pY2F0aW9uLiBBIHByb3RvdHlwZSBkYXRhIGZvcm1hdCBmb3IgcGljdHVyZXMsIGNhbGxlZCBhIHBpY3R1cmUtZm9ybSwgaXMgZGV2ZWxvcGVkLiBTdHJ1Y3R1cmUgb3BlcmF0b3JzIGFyZSBkZWZpbmVkIHdoaWNoIG1hbmlwdWxhdGUgcGljdHVyZS1mb3JtcyB0byBwcm9kdWNlIG5ldyBwaWN0dXJlLWZvcm1zLiBNYW55IG9mIHRoZSBpZGVhcyBhcmUgdGFrZW4gZnJvbSB0aGUgc3ltYm9saWMgbWF0aGVtYXRpY2FsIGxhYm9yYXRvcnkgYXQgTUlUIGNvbmNlaXZlZCBieSBNLiBNaW5za3kuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzczMDAgKE5hdHVyYWwgc2NpZW5jZXMgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIkRlcHQuIEhlYWx0aCwgRWR1Y2F0aW9uIFdlbGZhcmUsIEJldGhhc2RhLCBNRCwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImJpb2VuZ2luZWVyaW5nLCBjb21wdXRlciBhcHBsaWNhdGlvbnM7IGJpb2xvZ3k7IGNvbXB1dGVyczsgY29tcHV0ZXJzLCBwcm9ncmFtbWluZzsgZGF0YSBoYW5kbGluZzsgZGF0YSByZWR1Y3Rpb24gYW5kIGFuYWx5c2lzOyBncmFwaGljczsgaW1hZ2UgcHJvY2Vzc2luZzsgbWFjaGluZSBzeXN0ZW1zOyBtYW4tOyBtZWRpY2luZTsgcGF0dGVybiByZWNvZ25pdGlvbiIsCn0KCkBBcnRpY2xle1NpdHRvbjoxOTcwOk9HQSwKICBhdXRob3IgPSAgICAgICAiRy4gQS4gU2l0dG9uIiwKICB0aXRsZSA9ICAgICAgICAiT3BlcmF0aW9ucyBvbiBHZW5lcmFsaXplZCBBcnJheXMgd2l0aCB0aGUge0dlbmllfSBDb21waWxlciIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjUiLAogIHBhZ2VzID0gICAgICAgICIyODQtLTI4NiIsCiAgbW9udGggPSAgICAgICAgbWF5LAogIHllYXIgPSAgICAgICAgICIxOTcwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIk9wZXJhdGlvbnMgb24gdmVjdG9ycywgbWF0cmljZXMsIGFuZCBoaWdoZXIgZGltZW5zaW9uYWwgc3RvcmFnZSBhcnJheXMgYXJlIHN0YW5kYXJkIGZlYXR1cmVzIG9mIG1vc3QgY29tcGlsZXJzIHRvZGF5LiBUaGUgZWxlbWVudHMgb2Ygc3VjaCBzdHJ1Y3R1cmVzIGFyZSB1c3VhbGx5IHJlc3RyaWN0ZWQgdG8gYmUgc2NhbGFycyBGb3IgbWFueSBzb3BoaXN0aWNhdGVkIGFwcGxpY2F0aW9ucyB0aGlzIHJlc3RyaWN0aW9uIGNhbiBpbXBvc2UgY3VtYmVyc29tZSBkYXRhIHJlcHJlc2VudGF0aW9ucy4gQW4gZWZmaWNpZW50IHN5c3RlbSBoYXMgYmVlbiBkZXZpc2VkIGFuZCBpbXBsZW1lbnRlZCB3aGljaCBhbGxvd3MgdGhlIGVsZW1lbnRzIG9mIG11bHRpZGltZW5zaW9uYWwgYXJyYXlzIHRvIHRoZW1zZWx2ZXMgYmUgbXVsdGlkaW1lbnNpb25hbCBhcnJheXMuIFRoaXMgc3lzdGVtIHdhcyBkZXZlbG9wZWQgZnJvbSBhIHN0b3JhZ2Ugc3RydWN0dXJlIGluIHdoaWNoIHRoZSBsb2NhdGlvbiwgbGVuZ3RoLCBhbmQgY29udGVudCBvZiBlYWNoIGFycmF5IGlzIGRlc2NyaWJlZCBieSBhIGNvZGV3b3JkIHdoaWNoIGNhbiBiZSBpbnRlcnByZXRlZCBieSB0aGUgc3lzdGVtLiBDb2Rld29yZHMgbWF5IGRlc2NyaWJlIGFycmF5cyBjb250YWluaW5nIG1vcmUgY29kZXdvcmRzLCB0aHVzIHByb3ZpZGluZyBhbGwgbmVlZGVkIGRlc2NyaXB0aXZlIGluZm9ybWF0aW9uIGZvciBoeXBlcnN0cnVjdHVyZXMgb2YgYW55IGZvcm0uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMzAgKERhdGEgaGFuZGxpbmcgdGVjaG5pcXVlcyk7IEM2MTUwQyAoQ29tcGlsZXJzLCBpbnRlcnByZXRlcnMgYW5kIG90aGVyIHByb2Nlc3NvcnMpIiwKICBjb3Jwc291cmNlID0gICAiUmljZSBVbml2LiwgSG91c3RvbiwgVFgsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlcnM7IGNvbXB1dGVycywgb3BlcmF0aW5nIHN5c3RlbXM7IGRhdGEgaGFuZGxpbmc7IGRhdGEgc3RydWN0dXJlczsgRSBQOyBtYXRyaXggb3BlcmF0aW9uczsgbXVsdGlkaW1lbnNpb25hbCBhcnJheXM7IHByb2dyYW0gY29tcGlsZXJzOyBwcm9ncmFtbWluZyIsCn0KCkBBcnRpY2xle1ZlcmU6MTk3MDpURUUsCiAgYXV0aG9yID0gICAgICAgIlMuIFZlcmUiLAogIHRpdGxlID0gICAgICAgICJUcmFuc2xhdGlvbiBFcXVhdGlvbnMgKEVycmF0YSkiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTMiLAogIG51bWJlciA9ICAgICAgICI1IiwKICBwYWdlcyA9ICAgICAgICAiMjg2LS0yODYiLAogIG1vbnRoID0gICAgICAgIG1heSwKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIkZyaSBKYW4gMTcgMTg6Mjg6MjcgMTk5NyIsCiAgbm90ZSA9ICAgICAgICAgIlNlZSBcY2l0ZXtWZXJlOjE5NzA6VEV9LiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCn0KCkBBcnRpY2xle1Nhc3NlcjoxOTcwOkFTUywKICBhdXRob3IgPSAgICAgICAiVy4gRS4gU2Fzc2VyIGFuZCBELiBTLiBCdXJkaWNrIGFuZCBELiBBLiBHcmFoYW0gYW5kIFQuIEguIE5heWxvciIsCiAgdGl0bGUgPSAgICAgICAgIkFwcGxpY2F0aW9uIG9mIFNlcXVlbnRpYWwgU2FtcGxpbmcgdG8gU2ltdWxhdGlvbi4gYW4gRXhhbXBsZSBJbnZlbnRvcnkgTW9kZWwiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTMiLAogIG51bWJlciA9ICAgICAgICI1IiwKICBwYWdlcyA9ICAgICAgICAiMjg3LS0yOTYiLAogIG1vbnRoID0gICAgICAgIG1heSwKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJGb3VyIGRpZmZlcmVudCBzZXF1ZW50aWFsIHNhbXBsaW5nIHByb2NlZHVyZXMgYXJlIGFwcGxpZWQgdG8gdGhlIGFuYWx5c2lzIG9mIGRhdGEgZ2VuZXJhdGVkIGJ5IGEgY29tcHV0ZXIgc2ltdWxhdGlvbiBleHBlcmltZW50IHdpdGggYSBtdWx0aS1pdGVtIGludmVudG9yeSBtb2RlbC4gRm9yIGVhY2ggcHJvY2VkdXJlIHRoZSBjb3N0IG9mIGNvbXB1dGVyIHRpbWUgcmVxdWlyZWQgdG8gYWNoaWV2ZSBnaXZlbiBsZXZlbHMgb2Ygc3RhdGlzdGljYWwgcHJlY2lzaW9uIGlzIGNhbGN1bGF0ZWQuIEFsc28gdGhlIGNvc3Qgb2YgY29tcHV0ZXIgdGltZSB1c2luZyBjb21wYXJhYmxlIGZpeGVkIHNhbXBsZSBzaXplIG1ldGhvZHMgaXMgY2FsY3VsYXRlZC4gVGhlIGNvbXB1dGVyIGNvc3RzIG9mIGZpeGVkIHNhbXBsZSBzaXplIHByb2NlZHVyZXMgdnMgc2VxdWVudGlhbCBzYW1wbGluZyBwcm9jZWR1cmVzIGFyZSBjb21wYXJlZC4gRGV0YWlscyBhcmUgZ2l2ZW4gZm9yIHRoZSBpbnZlbnRvcnkgbW9kZWwgYW5kIHNhbXBsaW5nIHByb2NlZHVyZXMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzEyMjAgKFNpbXVsYXRpb24sIG1vZGVsbGluZyBhbmQgaWRlbnRpZmljYXRpb24pIiwKICBjb3Jwc291cmNlID0gICAiRHVrZSBVbml2LiwgRHVyaGFtLCBOQywgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyczsgY29udHJvbDsgZGF0YSByZWR1Y3Rpb24gYW5kIGFuYWx5c2lzOyBpbmR1c3RyaWFsIG1hbmFnZW1lbnQsIGRhdGEgcHJvY2Vzc2luZzsgaW52ZW50b3J5IGNvbnRyb2w7IG1vZGVsbGluZzsgc2VxdWVudGlhbCBzYW1wbGluZzsgc2ltdWxhdGlvbjsgc3RhdGlzdGljYWwgbWV0aG9kczsgc3RvY2siLAp9CgpAQXJ0aWNsZXtMb2Vja3g6MTk3MDpBQ0IsCiAgYXV0aG9yID0gICAgICAgIkouIExvZWNreCIsCiAgdGl0bGUgPSAgICAgICAgIkFsZ29yaXRobSBmb3IgdGhlIENvbnN0cnVjdGlvbiBvZiBCb3VuZGVkLUNvbnRleHQgUGFyc2VycyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjUiLAogIHBhZ2VzID0gICAgICAgICIyOTctLTMwNyIsCiAgbW9udGggPSAgICAgICAgbWF5LAogIHllYXIgPSAgICAgICAgICIxOTcwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkFuIGFsZ29yaXRobSBpcyBkZXNjcmliZWQgd2hpY2ggYWNjZXB0cyBhbiBhcmJpdHJhcnkgY29udGV4dC1mcmVlIGdyYW1tYXIgYW5kIGNvbnN0cnVjdHMgYSBib3VuZGVkLWNvbnRleHQgcGFyc2VyIGZvciBpdCB3aGVuZXZlciBzdWNoIGEgcGFyc2VyIGV4aXN0cy4gVGhlIGRlZmluaXRpb24gb2YgYSBjb250ZXh0LWZyZWUgZ3JhbW1hciBhbmQgdGhlIHdvcmtpbmcgb2YgYSBib3VuZGVkLWNvbnRleHQgcGFyc2VyIGFyZSByZWNhbGxlZC4gVGhlIG5vdGlvbiBvZiByZWR1Y3Rpb24gY2xhc3MgZm9yIGEgY29udGV4dC1mcmVlIGdyYW1tYXIgaXMgdGhlbiBpbnRyb2R1Y2VkIGFuZCBpdHMgY29ubmVjdGlvbiB3aXRoIHRoZSBzdHJ1Y3R1cmUgb2YgYSBib3VuZGVkLWNvbnRleHQgcGFyc2VyIGlzIGluZGljYXRlZC4gTmV4dCwgcHVzaGRvd24gYXV0b21hdGEgd2hpY2ggZ2VuZXJhdGUgdGhlIGRpZmZlcmVudCByZWR1Y3Rpb24gY2xhc3NlcyBvZiBhIGNvbnRleHQtZnJlZSBncmFtbWFyIGFyZSBkZWZpbmVkLiBGaW5hbGx5LCB0aGUgYWxnb3JpdGhtIGlzIGRlc2NyaWJlZDsgaXQgZXNzZW50aWFsbHkgY2FycmllcyBvdXQgYW4gZXhoYXVzdGl2ZSBzdHVkeSBvZiBhbGwgcG9zc2libGUgcnVucyBvZiB0aGUgcHVzaGRvd24gYXV0b21hdGEgZ2VuZXJhdGluZyB0aGUgcmVkdWN0aW9uIGNsYXNzZXMuIFRoZSB1dGlsaXR5IG9mIHRoZSBhbGdvcml0aG0gaXMgZGlzY3Vzc2VkIGluIHRoZSBsaWdodCBvZiB0aGUgZXhwZXJpZW5jZSBnYWluZWQgZnJvbSBpdHMgdXNlIGluIGNvbXBpbGVyIGRlc2lnbi4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDIxMCAoRm9ybWFsIGxvZ2ljKSIsCiAgY29ycHNvdXJjZSA9ICAgIk1CTEUgUmVzLiBMYWIuLCBCcnVzc2VscywgQmVsZ2l1bSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhdXRvbWF0YSB0aGVvcnk7IGNvbXBpbGVyczsgY29tcHV0YXRpb25hbCBsaW5ndWlzdGljczsgY29tcHV0ZXJzLCBsYW5ndWFnZTsgY29udGV4dC1mcmVlIGdyYW1tYXJzOyBmb3JtYWwgbGFuZ3VhZ2VzOyBncmFtbWFyczsgbG93IiwKfQoKQEFydGljbGV7UmV5bm9sZHM6MTk3MDpHU1QsCiAgYXV0aG9yID0gICAgICAgIkpvaG4gQy4gUmV5bm9sZHMiLAogIHRpdGxlID0gICAgICAgICJ7R0VEQU5LRU59IC0tLSB7QX0gU2ltcGxlIFR5cGVsZXNzIExhbmd1YWdlIEJhc2VkIG9uIHRoZSBQcmluY2lwbGUgb2YgQ29tcGxldGVuZXNzIGFuZCB0aGUgUmVmZXJlbmNlIENvbmNlcHQiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTMiLAogIG51bWJlciA9ICAgICAgICI1IiwKICBwYWdlcyA9ICAgICAgICAiMzA4LS0zMTkiLAogIG1vbnRoID0gICAgICAgIG1heSwKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvQ29tcGlsZXIvcmV5bm9sZHMuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiSW4gdGhpcyBleHBlcmltZW50YWwgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UsIGFueSB2YWx1ZSB3aGljaCBpcyBwZXJtaXR0ZWQgaW4gc29tZSBjb250ZXh0IG9mIHRoZSBsYW5ndWFnZSBpcyBwZXJtaXNzaWJsZSBpbiBhbnkgb3RoZXIgbWVhbmluZ2Z1bCBjb250ZXh0LiBJbiBwYXJ0aWN1bGFyLCBmdW5jdGlvbnMgYW5kIGxhYmVscyBhcmUgcGVybWlzc2libGUgcmVzdWx0cyBvZiBmdW5jdGlvbnMgYW5kIHZhbHVlcyBvZiB2YXJpYWJsZXMuIEFzc2lnbm1lbnQgYW5kIGluZGlyZWN0IGFkZHJlc3NpbmcgYXJlIGZvcm1hbGl6ZWQgYnkgaW50cm9kdWNpbmcgdmFsdWVzLCBjYWxsZWQgcmVmZXJlbmNlcywgd2hpY2ggaW4gdHVybiBwb3NzZXNzIG90aGVyIHZhbHVlcy4gVGhlIGFzc2lnbm1lbnQgb3BlcmF0aW9uIGFsd2F5cyBhZmZlY3RzIHRoZSByZWxhdGlvbiBiZXR3ZWVuIHNvbWUgcmVmZXJlbmNlIGFuZCBpdHMgdmFsdWVzLiBBbGwgY29tcG9zZWQgZGF0YSBzdHJ1Y3R1cmVzIGFyZSB0cmVhdGVkIGFzIGZ1bmN0aW9ucy4gVHlwZSBkZWNsYXJhdGlvbnMgYXJlIG5vdCBwZXJtaXR0ZWQuIEFueSBkYXRhIHN0cnVjdHVyZSBtYXkgYmUgaW1wbGljaXQ7IGkuZS4sIGl0IG1heSBiZSBzcGVjaWZpZWQgYnkgZ2l2aW5nIGFuIGFyYml0cmFyeSBhbGdvcml0aG0gZm9yIGNvbXB1dGluZyBvciBhY2Nlc3NpbmcgaXRzIGNvbXBvbmVudHMuIFRoZSBleGlzdGVuY2Ugb2YgbGFiZWwgdmFyaWFibGVzIHBlcm1pdHMgdGhlIGNvbnN0cnVjdGlvbiBvZiBjb3JvdXRpbmVzLCBxdWFzaS1wYXJhbGxlbCBwcm9jZXNzZXMsIGFuZCBvdGhlciB1bm9ydGhvZG94IGNvbnRyb2wgbWVjaGFuaXNtcy4gQSB2YXJpZXR5IG9mIHByb2dyYW1taW5nIGV4YW1wbGVzIGlsbHVzdHJhdGVzIHRoZSBnZW5lcmFsaXR5IG9mIHRoZSBsYW5ndWFnZS4gTGltaXRhdGlvbnMgYW5kIHBvc3NpYmxlIGV4dGVuc2lvbnMgYXJlIGRpc2N1c3NlZCBicmllZmx5LiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2hlY2tlZCA9ICAgICAgIjQgU2VwdGVtYmVyIDE5OTAiLAogIGNsYXNzY29kZXMgPSAgICJDNjE0MEQgKEhpZ2ggbGV2ZWwgbGFuZ3VhZ2VzKSIsCiAgY29ycHNvdXJjZSA9ICAgIkFyZ29ubmUgTmF0LiBMYWIuLCBJTCwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyczsgZGF0YSBzdHJ1Y3R1cmVzOyBnZWRhbmtlbjsgcHJvY2VkdXJlIG9yaWVudGVkIGxhbmd1YWdlczsgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzIiwKfQoKQEFydGljbGV7Q3Jlc3BpLVJlZ2hpenppOjE5NzA6TFRHLAogIGF1dGhvciA9ICAgICAgICJTLiBDcmVzcGktUmVnaGl6emkgYW5kIFIuIE1vcnB1cmdvIiwKICB0aXRsZSA9ICAgICAgICAiQSBsYW5ndWFnZSBmb3IgdHJlYXRpbmcgZ3JhcGhzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiNSIsCiAgcGFnZXMgPSAgICAgICAgIjMxOS0tMzIzIiwKICBtb250aCA9ICAgICAgICBtYXksCiAgeWVhciA9ICAgICAgICAgIjE5NzAiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiQSBsYW5ndWFnZSBmb3IgdGhlIHJlcHJlc2VudGF0aW9uIG9mIGdyYXBocyBpcyBkZXNjcmliZWQsIGFuZCB0aGUgZm9ybXVsYXRpb24gb2YgZ3JhcGggb3BlcmF0aW9ucyBzdWNoIGFzIG5vZGUgYW5kXHNsYXNoIG9yIGxpbmsgZGVsZXRpb24gb3IgaW5zZXJ0aW9uLCB1bmlvbiwgaW50ZXJzZWN0aW9uLCBjb21wYXJpc29uLCBhbmQgdHJhdmVyc2FsIG9mIGdyYXBocyBpcyBnaXZlbi4gR3JhcGhzIGFyZSByZXByZXNlbnRlZCBieSBsaW5rZWQgbGlzdHMuIFRoZSBsYW5ndWFnZSBpcyBzeW50YWN0aWNhbGx5IGRlZmluZWQgYXMgYW4gZXh0ZW5zaW9uIHRvIEFMR09MIDYwLCBhbmQgaXQgaXMgdHJhbnNsYXRlZCBpbnRvIEFMR09MIGJ5IG1lYW5zIG9mIGEgc3ludGF4LWRyaXZlbiBjb21waWxlci4gQXBwbGljYXRpb24gYXJlYXMgZm9yIHRoaXMgbGFuZ3VhZ2UgYXJlIG9wZXJhdGlvbiByZXNlYXJjaCwgbmV0d29yayBwcm9ibGVtcywgY29udHJvbCB0aGVvcnksIHRyYWZmaWMgcHJvYmxlbXMsIGV0Yy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKTsgQzYxNDBEIChIaWdoIGxldmVsIGxhbmd1YWdlcykiLAogIGNvcnBzb3VyY2UgPSAgICJQb2xpdGVjbmljbyBkaSBNaWxhbm8sIEl0YWx5IiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImF1dG9tYXRpYyBjb250cm9sLCBhbmFseXNpczsgY29tcHV0ZXJzOyBkYXRhIGhhbmRsaW5nOyBkYXRhIHN0cnVjdHVyZXM7IGVsZWN0cmljIGNpcmN1aXRzLCBhbmFseXNpczsgZ3JhcGggdGhlb3J5OyBvcGVyYXRpb25zIHJlc2VhcmNoOyBwcm9jZWR1cmUgb3JpZW50ZWQgbGFuZ3VhZ2VzIiwKfQoKQEFydGljbGV7TGFmbGluOjE5NzA6QUFTLAogIGF1dGhvciA9ICAgICAgICJTLiBMYWZsaW4gYW5kIE0uIEEuIEJyZWJuZXIiLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gMzgwOiBJbi1zaXR1IFRyYW5zcG9zaXRpb24gb2YgYSBSZWN0YW5ndWxhciBNYXRyaXgiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTMiLAogIG51bWJlciA9ICAgICAgICI1IiwKICBwYWdlcyA9ICAgICAgICAiMzI0LS0zMjYgKG9yIDMyNC0tMzI1Pz8pIiwKICBtb250aCA9ICAgICAgICBtYXksCiAgeWVhciA9ICAgICAgICAgIjE5NzAiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzczMDAgKE5hdHVyYWwgc2NpZW5jZXMgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIEJpcm1pbmdoYW0sIFVLIiwKICBrZXl3b3JkcyA9ICAgICAibWF0cml4IGFsZ2VicmE7IHN1YnJvdXRpbmVzIiwKfQoKQEFydGljbGV7S25vcDoxOTcwOkFBUiwKICBhdXRob3IgPSAgICAgICAiUi4gRS4gS25vcCIsCiAgdGl0bGUgPSAgICAgICAgIntBQ019IEFsZ29yaXRobSAzODE6IFJhbmRvbSBWZWN0b3JzIFVuaWZvcm0gSW4gU29saWQgQW5nbGUiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTMiLAogIG51bWJlciA9ICAgICAgICI1IiwKICBwYWdlcyA9ICAgICAgICAiMzI2LS0zMjYiLAogIG1vbnRoID0gICAgICAgIG1heSwKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNzg5MCAoT3RoZXIgc3BlY2lhbCBhcHBsaWNhdGlvbnMgb2YgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIlJ1dGdlcnMgVW5pdi4sIE5ldyBCcnVuc3dpY2ssIE5KLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJyYW5kb20gbnVtYmVyIGdlbmVyYXRpb247IHN1YnJvdXRpbmVzIiwKfQoKQEFydGljbGV7RWxkZXI6MTk3MDpGVkksCiAgYXV0aG9yID0gICAgICAgIkguIEEuIEVsZGVyIiwKICB0aXRsZSA9ICAgICAgICAiT24gdGhlIEZlYXNpYmlsaXR5IG9mIFZvaWNlIElucHV0IHRvIGFuIE9uLUxpbmUgQ29tcHV0ZXIgUHJvY2Vzc2luZyBTeXN0ZW0iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTMiLAogIG51bWJlciA9ICAgICAgICI2IiwKICBwYWdlcyA9ICAgICAgICAiMzM5LS0zNDYiLAogIG1vbnRoID0gICAgICAgIGp1biwKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJBbiBvbi1saW5lIGRpZ2l0YWwgY29tcHV0ZXIgcHJvY2Vzc2luZyBzeXN0ZW0gaXMgY29uc2lkZXJlZCBpbiB3aGljaCBhbiBvcmRpbmFyeSB0ZWxlcGhvbmUgaXMgdGhlIGNvbXBsZXRlIHRlcm1pbmFsIGRldmljZSwgaW5wdXQgdG8gdGhlIGNvbXB1dGVyIGJlaW5nIHByb3ZpZGVkIGFzIGEgc2VxdWVuY2Ugb2Ygc3Bva2VuIHdvcmRzLCBhbmQgb3V0cHV0IHRvIHRoZSB1c2VyIGJlaW5nIGF1ZGlvIHJlc3BvbnNlcyBmcm9tIHRoZSBtYWNoaW5lLiBUaGUgZmVhc2liaWxpdHkgb2YgaW1wbGVtZW50aW5nIHN1Y2ggYSBzeXN0ZW0gd2l0aCBhIEZPUlRSQU4tbGlrZSBhbGdlYnJhaWMgY29tcGlsZXIgYXMgdGhlIG9iamVjdCBwcm9jZXNzb3IgaXMgY29uc2lkZXJlZC4gRGV0YWlscyBvZiBhIHNwZWNpZmljIHdvcmQgcmVjb2duaXRpb24gcHJvZ3JhbSBhcmUgZ2l2ZW4uIFRoaXMgdGVjaG5pcXVlIFxsZG90c3t9IGJldHdlZW4gZWFjaCBpbnB1dCB3b3JkLiBFeHBlcmltZW50YWwgcmVzdWx0cyBhcmUgcHJlc2VudGVkIGdpdmluZyBlcnJvciByYXRlcyBmb3IgZGlmZmVyZW50IGV4cGVyaW1lbnRhbCBjb25kaXRpb25zIGFzIHdlbGwgYXMgdGhlIG1hY2hpbmUgcmVzb3VyY2VzIHJlcXVpcmVkIHRvIGFjY29tbW9kYXRlIHNldmVyYWwgdXNlcnMgYXQgYSB0aW1lLiBUaGUgcmVzdWx0cyBzaG93IHRoYXQgYXQgdGhpcyB0aW1lIGl0IGlzIGJvdGggZWNvbm9taWNhbGx5IGFuZCBsb2dpY2FsbHkgZmVhc2libGUgdG8gaGFuZGxlIGF0IGxlYXN0IDQwIHVzZXJzIGF0IGEgdGltZSB3aXRoIGFuIElCTSAzNjBcc2xhc2ggNjUgY29tcHV0ZXIuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzU1OTAgKE90aGVyIGNvbXB1dGVyIHBlcmlwaGVyYWwgZXF1aXBtZW50KSIsCiAgY29ycHNvdXJjZSA9ICAgIkNvcm5lbGwgVW5pdi4sIEl0aGFjYSwgTlksIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBwZXJpcGhlcmFsIGVxdWlwbWVudDsgY29tcHV0ZXJzOyBjb21wdXRlcnMsIGlucHV0LW91dHB1dCBkZXZpY2U7IGNvbXB1dGVycywgcGF0dGVybiByZWNvZ25pdGlvbjsgZGF0YSBwcm9jZXNzaW5nOyBtYW4tbWFjaGluZSBpbnRlcmZhY2VzOyBvbmxpbmUgb3BlcmF0aW9uOyByZWNvZ25pdGlvbjsgc3BlZWNoOyBzcGVlY2gsIHJlY29nbml0aW9uOyB0ZWxlcGhvbnk7IHZvaWNlIGlucHV0IiwKfQoKQEFydGljbGV7TXV0aHVrcmlzaG5hbjoxOTcwOkNEVCwKICBhdXRob3IgPSAgICAgICAiQy4gUi4gTXV0aHVrcmlzaG5hbiBhbmQgVi4gUmFqYXJhbWFuIiwKICB0aXRsZSA9ICAgICAgICAiT24gdGhlIENvbnZlcnNpb24gb2YgRGVjaXNpb24gVGFibGVzIHRvIENvbXB1dGVyIFByb2dyYW1zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiNiIsCiAgcGFnZXMgPSAgICAgICAgIjM0Ny0tMzUxIiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzAiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiVGhlIHVzZSBvZiBleGVjdXRpb24gdGltZSBkaWFnbm9zdGljcyBpbiBwaW5wb2ludGluZyBhbWJpZ3VpdGllcyBpbiBkZWNpc2lvbiB0YWJsZXMgaXMgZGlzY3Vzc2VkLiBJdCBpcyBwb2ludGVkIG91dCB0aGF0IGFueSBhdHRlbXB0IGF0IHJlc29sdmluZyBhbWJpZ3VpdGllcyBhdCBjb21waWxlIHRpbWUgd2lsbCwgaW4gZ2VuZXJhbCwgYmUgaW1wb3NzaWJsZS4gSXQgaXMgc2hvd24gdGhhdCwgYXMgYSBjb25zZXF1ZW5jZSwgdGhyZWUgbWV0aG9kcyBvZiBjb252ZXJ0aW5nIGRlY2lzaW9uIHRhYmxlcyB0byBwcm9ncmFtcyBhcmUgaW5hZGVxdWF0ZSBpbiByZWdhcmQgdG8gYW1iaWd1aXR5IGRldGVjdGlvbi4gVHdvIGFsZ29yaXRobXMgZm9yIHByb2dyYW1taW5nIGRlY2lzaW9uIHRhYmxlcyB3aG9zZSBtZXJpdHMgYXJlIHNpbXBsaWNpdHkgb2YgaW1wbGVtZW50YXRpb24gYW5kIGRldGVjdGlvbiBvZiBhbWJpZ3VpdGllcyBhdCBleGVjdXRpb24gdGltZSBhcmUgcHJlc2VudGVkLiBUaGUgZmlyc3QgYWxnb3JpdGhtIGlzIGZvciBsaW1pdGVkIGVudHJ5IGRlY2lzaW9uIHRhYmxlcyBhbmQgY2xhcmlmaWVzIHRoZSBpbXBvcnRhbmNlIG9mIHByb3BlciBjb2Rpbmcgb2YgdGhlIGluZm9ybWF0aW9uIGluIHRoZSBkZWNpc2lvbiB0YWJsZS4gVGhlIHNlY29uZCBhbGdvcml0aG0gcHJvZ3JhbXMgYSBtaXhlZCBlbnRyeSBkZWNpc2lvbiB0YWJsZSBkaXJlY3RseSB3aXRob3V0IGdvaW5nIHRocm91Z2ggdGhlIGludGVybWVkaWF0ZSBzdGVwIG9mIGNvbnZlcnNpb24gdG8gYSBsaW1pdGVkIGVudHJ5IGZvcm0sIHRoZXJlYnkgcmVzdWx0aW5nIGluIHN0b3JhZ2UgZWNvbm9teS4gQSBjb21wYXJpc29uIG9mIHRoZSBhbGdvcml0aG1zIGFuZCBvdGhlcnMgcHJvcG9zZWQgaW4gdGhlIGxpdGVyYXR1cmUgaXMgbWFkZS4gU29tZSBmZWF0dXJlcyBvZiBhIGRlY2lzaW9uIHRhYmxlIHRvIEZPUlRSQU4gSVYgdHJhbnNsYXRvciBkZXZlbG9wZWQgZm9yIHRoZSBJQk0gNzA0NCBhcmUgZ2l2ZW4uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMDAgKFNvZnR3YXJlIHRlY2huaXF1ZXMgYW5kIHN5c3RlbXMpIiwKICBjb3Jwc291cmNlID0gICAiSW5kaWFuIEluc3QuIFRlY2hub2wuLCBLYW5wdXIsIEluZGlhIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyczsgZGVjaXNpb24gdGFibGVzOyBvcGVyYXRpb25zIHJlc2VhcmNoOyBwcm9ncmFtbWluZyIsCn0KCkBBcnRpY2xle0dyaW1lczoxOTcwOlNSQywKICBhdXRob3IgPSAgICAgICAiSi4gRS4gR3JpbWVzIiwKICB0aXRsZSA9ICAgICAgICAiU2NoZWR1bGluZyB0byBSZWR1Y2UgQ29uZmxpY3QgaW4gTWVldGluZ3MiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTMiLAogIG51bWJlciA9ICAgICAgICI2IiwKICBwYWdlcyA9ICAgICAgICAiMzUxLS0zNTIiLAogIG1vbnRoID0gICAgICAgIGp1biwKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJDb25mbGljdHMgaW4gc2NoZWR1bGluZyBjYW4gYmUgdHJlYXRlZCBhcyBkZWZpbmluZyBhbiB1bmRpcmVjdGVkIGxpbmVhciBncmFwaCBpbmRlcGVuZGVudGx5IG9mIHRoZSByZWxhdGlvbiBvZiB0aGUgYWN0aXZpdGllcyBpbiBjb25mbGljdCB0byBhZGRpdGlvbmFsIGNvbnN0cmFpbnRzIG9mIHRpbWUgYW5kIHNwYWNlLiBFYWNoIGNvbm5lY3RlZCBjb21wb25lbnQgb2Ygc3VjaCBhIGdyYXBoLCB3aGljaCBjYW4gYmUgZm91bmQgYnkgYW4gYWxnb3JpdGhtIGRlc2NyaWJlZCBieSBTLiBDLiBHb3RsaWViIGFuZCBELiBDLiBDb3JuZWlsLCBjb3JyZXNwb25kcyB0byBhIHNldCBvZiBldmVudHMgdGhhdCBtdXN0IGJlIHNjaGVkdWxlZCBhdCBkaWZmZXJlbnQgdGltZXMuIEFwcGxpY2F0aW9ucyBhcmUgZGlzY3Vzc2VkIGluIHNjaGVkdWxpbmcgdGhlIHByZXNlbnRhdGlvbiBvZiBwYXBlcnMgYXQgbWVldGluZ3MgYW5kIHNjaGVkdWxpbmcgZXhhbWluYXRpb25zLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMxMTYwIChDb21iaW5hdG9yaWFsIG1hdGhlbWF0aWNzKSIsCiAgY29ycHNvdXJjZSA9ICAgIkNvcm5lbGwgVW5pdi4sIEl0aGFjYSwgTlksIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjbzsgY29tcHV0ZXJzOyBncmFwaCB0aGVvcnk7IHByb2dyYW1taW5nOyB1bmRpcmVjdGVkIGxpbmVhciBncmFwaHMiLAp9CgpAQXJ0aWNsZXtGcmFudHo6MTk3MDpQUEEsCiAgYXV0aG9yID0gICAgICAgIkQuIEcuIEZyYW50eiIsCiAgdGl0bGUgPSAgICAgICAgIkEge1BMXHNsYXNofSAxIHByb2dyYW0gdG8gYXNzaXN0IHRoZSBjb21wYXJhdGl2ZSBsaW5ndWlzdCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjYiLAogIHBhZ2VzID0gICAgICAgICIzNTMtLTM1NiIsCiAgbW9udGggPSAgICAgICAganVuLAogIHllYXIgPSAgICAgICAgICIxOTcwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM3ODIwIChIdW1hbml0aWVzIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBBbGJlcnRhLCBBcnJvd3dvb2QsIEFsdGEuLCBDYW5hZGEiLAogIGtleXdvcmRzID0gICAgICJsYW5ndWFnZSB0cmFuc2xhdGlvbiBhbmQgbGluZ3Vpc3RpY3MiLAp9CgpAQXJ0aWNsZXtEYW1lcmF1OjE5NzA6QVBDLAogIGF1dGhvciA9ICAgICAgICJGLiBKLiBEYW1lcmF1IiwKICB0aXRsZSA9ICAgICAgICAiQXV0b21hdGljIFBhcnNpbmcgZm9yIENvbnRlbnQgQW5hbHlzaXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTMiLAogIG51bWJlciA9ICAgICAgICI2IiwKICBwYWdlcyA9ICAgICAgICAiMzU2LS0zNjAiLAogIG1vbnRoID0gICAgICAgIGp1biwKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJBbHRob3VnaCBhdXRvbWF0aWMgc3ludGFjdGljIGFuZCBzZW1hbnRpYyBhbmFseXNpcyBpcyBub3QgeWV0IHBvc3NpYmxlIGZvciBhbGwgb2YgYW4gdW5yZXN0cmljdGVkIG5hdHVyYWwgbGFuZ3VhZ2UgdGV4dCwgc29tZSBhcHBsaWNhdGlvbnMsIG9mIHdoaWNoIGNvbnRlbnQgYW5hbHlzaXMgaXMgb25lLCBkbyBub3QgaGF2ZSBzdWNoIGEgc3RyaW5nZW50IGNvdmVyYWdlIHJlcXVpcmVtZW50LiBQcmVsaW1pbmFyeSBzdHVkaWVzIHNob3cgdGhhdCB0aGUgSGFydmFyZCBTeW50YWN0aWMgQW5hbHl6ZXIgY2FuIHByb2R1Y2UgY29ycmVjdCBhbmQgdW5hbWJpZ3VvdXMgaWRlbnRpZmljYXRpb24gb2YgdGhlIHN1YmplY3QgYW5kIG9iamVjdCBvZiBjZXJ0YWluIHZlcmJzIGZvciBhcHByb3hpbWF0ZWx5IGhhbGYgb2YgdGhlIHJlbGV2YW50IG9jY3VycmVuY2VzLiBUaGlzIHByb3ZpZGVzIGEgZGVncmVlIG9mIGNvdmVyYWdlIGZvciBjb250ZW50IGFuYWx5c2lzIHZhcmlhYmxlcyB3aGljaCBjb21wYXJlcyBmYXZvcmFibHkgdG8gbWFudWFsIG1ldGhvZHMsIGluIHdoaWNoIG9ubHkgYSBzYW1wbGUgb2YgdGhlIHRvdGFsIGF2YWlsYWJsZSB0ZXh0IGlzIG5vcm1hbGx5IHByb2Nlc3NlZC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNzgyMCAoSHVtYW5pdGllcyBjb21wdXRpbmcpIiwKICBjb3Jwc291cmNlID0gICAiSUJNLCBZb3JrdG93biBIZWlnaHRzLCBOWSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVycywgZGF0YSBwcm9jZXNzaW5nOyBjb250ZW50IGFuYWx5c2lzOyBFIEw7IGluZm9ybWF0aW9uIHN0b3JhZ2UgYW5kIHJldHJpZTsgbGFuZ3VhZ2UgdHJhbnNsYXRpb24gYW5kIGxpbmd1aXN0aWNzOyBsaW5ndWlzdGljczsgbmF0dXJhbCBsYW5ndWFnZSBwcm9jZXNzaW5nOyBzeW50YWN0aWMgYW5hbHlzaXMiLAp9CgpAQXJ0aWNsZXtMaW56OjE5NzA6QUZQLAogIGF1dGhvciA9ICAgICAgICJQZXRlciBMaW56IiwKICB0aXRsZSA9ICAgICAgICAiQWNjdXJhdGUgRmxvYXRpbmctUG9pbnQgU3VtbWF0aW9uIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiNiIsCiAgcGFnZXMgPSAgICAgICAgIjM2MS0tMzYyIiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzAiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2NS4yNSIsCiAgTVJudW1iZXIgPSAgICAgIjQ0XCMzNDY4IiwKICBtcnJldmlld2VyID0gICAiUi4gUC4gQnJlbnQiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBnYXJiby51d2FzYS5maTovcGMvZG9jLXNvZnQvZnBiaWJsaW8udHh0IGFuZCBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0Rpc3RyaWJ1dGVkL1FMRC8xOTcwLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIlRoaXMgcGFwZXIgZGVzY3JpYmVzIGFuIGFsdGVybmF0ZSBtZXRob2QgZm9yIHN1bW1pbmcgYSBzZXQgb2YgZmxvYXRpbmctcG9pbnQgbnVtYmVycy4gQ29tcGFyaXNvbiBvZiB0aGUgZXJyb3IgYm91bmQgZm9yIHRoaXMgbWV0aG9kIHdpdGggdGhhdCBvZiB0aGUgc3RhbmRhcmQgc3VtbWF0aW9uIG1ldGhvZCBzaG93cyB0aGF0IGl0IGlzIGNvbnNpZGVyYWJseSBsZXNzIHNlbnNpdGl2ZSB0byBwcm9wYWdhdGlvbiBvZiByb3VuZC1vZmYgZXJyb3IuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzUyMzAgKERpZ2l0YWwgYXJpdGhtZXRpYyBtZXRob2RzKSIsCiAgY29ycHNvdXJjZSA9ICAgIk5ldyBZb3JrIFVuaXYuLCBOWSwgVVNBIiwKICBkZXNjcmlwdG9ycyA9ICAiU2ltdWxhdGlvbjsgc3RhdGlzdGljczsgbnVtZXJpYyBjYWxjdWxhdGlvbjsiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXJzLCBkYXRhIHByb2Nlc3Npbmc7IGZsb2F0aW5nIHBvaW50IGFyaXRobWV0aWM7IGZsb2F0aW5nLXBvaW50IGFkZGl0aW9uOyBtYXRoZW1hdGljczsgbnVtZXJpY2FsIG1ldGhvZHM7IHJvdW5kLW9mZiBlcnJvcjsgcm91bmQtb2ZmIGVycm9yczsgcm91bmQtb2ZmIHByb3BhZ2F0aW9uOyBzdW1tYXRpb24iLAogIGtleXdvcmRzID0gICAgICJkaWdpdGFsIGFyaXRobWV0aWMiLAp9CgpAQXJ0aWNsZXtIaWxsc3Ryb206MTk3MDpDU0EsCiAgYXV0aG9yID0gICAgICAgIksuIEUuIEhpbGxzdHJvbSIsCiAgdGl0bGUgPSAgICAgICAgIkNvbXBhcmlzb24gb2YgU2V2ZXJhbCBBZGFwdGl2ZSBOZXd0b24tQ290ZXMgUXVhZHJhdHVyZSBSb3V0aW5lcyBpbiBFdmFsdWF0aW5nIERlZmluaXRlIEludGVncmFscyB3aXRoIFBlYWtlZCBJbnRlZ3JhbmRzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiNiIsCiAgcGFnZXMgPSAgICAgICAgIjM2Mi0tMzY1IiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzAiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiSXQgaXMgc2hvd24sIGJ5IG51bWVyaWNhbCBleHBlcmltZW50IG9ubHksIHRoYXQgdGhlcmUgYXJlIGNlcnRhaW4gcXVhZHJhdHVyZXMgZm9yIHdoaWNoIHRoZSByYXRlIG9mIGNvbnZlcmdlbmNlcyBpbmNyZWFzZXMgd2l0aCB0aGUgdXNlIG9mIGhpZ2hlciBkZWdyZWUgTmV3dG9uLUNvdGVzIHJ1bGVzLCB1c2VkIGFkYXB0aXZlbHkuIFRoZSBhZHZhbnRhZ2Ugb2YgYWRhcHRpdmUgbWV0aG9kcyBvdmVyIGEgbm9uYWRhcHRpdmUgcnVsZSBpbiBhcHByb3hpbWF0aW5nIGludGVncmFscyBoYXZpbmcgcGVha2VkIGludGVncmFuZHMgaXMgZGVtb25zdHJhdGVkLiBUaGUgcGVyZm9ybWFuY2Ugb2YgZml2ZSBkaWZmZXJlbnQgYWRhcHRpdmUgcXVhZHJhdHVyZSBzY2hlbWVzLCBiYXNlZCBvbiBOZXd0b24tQ290ZXMgKDJOIHBsdXMgMSkgcG9pbnQgcnVsZXMgKE4gZXF1YWxzIDEsIDIsIDMsIDQsIDUpLCBpbiBhcHByb3hpbWF0aW5nIGEgc2V0IG9mIGRlZmluaXRlIGludGVncmFscyBpcyBjb21wYXJlZC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDE2MCAoTnVtZXJpY2FsIGludGVncmF0aW9uIGFuZCBkaWZmZXJlbnRpYXRpb24pIiwKICBjb3Jwc291cmNlID0gICAiQXJnb25uZSBOYXQuIExhYi4sIElMLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXJzLCBkYXRhIHByb2Nlc3Npbmc7IGNvbnZlcmdlbmNlIG9mIG51bWVyaWNhbCBtZXRob2RzOyBpbnRlZ3JhbCBldmFsdWF0aW9uOyBpbnRlZ3JhdGlvbjsgbWF0aGVtYXRpY3M7IG1ldGhvZHM7IG51bWVyaWNhbDsgbnVtZXJpY2FsIGludGVncmF0aW9uOyBudW1lcmljYWwgbWV0aG9kczsgcXVhZHJhdHVyZSBzY2hlbWVzIiwKfQoKQEFydGljbGV7U3Rld2FydDoxOTcwOklPUywKICBhdXRob3IgPSAgICAgICAiRy4gVy4gU3Rld2FydCIsCiAgdGl0bGUgPSAgICAgICAgIkluY29ycG9yYXRpbmcgT3JpZ2luIFNoaWZ0cyBpbnRvIHRoZSB7UVJ9IEFsZ29yaXRobSBmb3IgU3ltbWV0cmljIFRyaWRpYWdvbmFsIE1hdHJpY2VzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiNiIsCiAgcGFnZXMgPSAgICAgICAgIjM2NS0tMzY3IiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzAiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L1RoZW9yeS9ndmwuYmliIGFuZCBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L1RoZW9yeS9NYXRyaXguYmliIiwKICBhYnN0cmFjdCA9ICAgICAiVGhlIFFSIGl0ZXJhdGlvbiBmb3IgdGhlIGVpZ2VudmFsdWVzIG9mIGEgc3ltbWV0cmljIHRyaWRpYWdvbmFsIG1hdHJpeCBjYW4gYmUgYWNjZWxlcmF0ZWQgYnkgaW5jb3Jwb3JhdGluZyBhIHNlcXVlbmNlIG9mIG9yaWdpbiBzaGlmdHMuIFRoZSBvcmlnaW4gc2hpZnQgbWF5IGJlIGVpdGhlciBzdWJ0cmFjdGVkIGRpcmVjdGx5IGZyb20gdGhlIGRpYWdvbmFsIGVsZW1lbnRzIG9mIHRoZSBtYXRyaXggb3IgaW5jb3Jwb3JhdGVkIGJ5IG1lYW5zIG9mIGFuIGltcGxpY2l0IGFsZ29yaXRobS4gQm90aCBtZXRob2RzIGhhdmUgZHJhd2JhY2tzLXRoZSBkaXJlY3QgbWV0aG9kIGNhbiB1bm5lY2Vzc2FyaWx5IGRlZ3JhZGUgc21hbGwgZWlnZW52YWx1ZXMsIHdoaWxlIHRoZSBpbXBsaWNpdCBtZXRob2QgY2FuIGVmZmVjdGl2ZWx5IGxvb3NlIHRoZSBzaGlmdCBhbmQgdGhlcmVieSByZXRhcmQgdGhlIGNvbnZlcmdlbmNlLiBBIG5ldyBtZXRob2Qgd2hpY2ggaGFzIG5laXRoZXIgZHJhd2JhY2sgaXMgcHJlc2VudGVkLiBCb3RoIHRoZSBhbGdvcml0aG0gcHJvcG9zZWQgaGVyZSBhbmQgdGhlIGltcGxpY2l0IGFsZ29yaXRobSBhcmUgc2FmZXIgdGhhbiB0aGUgZXhwbGljaXQgYWxnb3JpdGhtLiBUaGUgaW1wbGljaXQgYWxnb3JpdGhtIHJlcXVpcmVzIHNvbWV3aGF0IGxlc3MgY29tcHV0YXRpb24sIGJ1dCB0aGUgbmV3IGFsZ29yaXRobSB3aWxsIGdpdmUgZmFzdGVyIGNvbnZlcmdlbmNlIGluIHNvbWUgY2FzZXMsIGFuIGltcG9ydGFudCBjb25zaWRlcmF0aW9uIHdoZW4gZWlnZW52ZWN0b3JzIGFyZSBiZWluZyBjYWxjdWxhdGVkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MTQwIChMaW5lYXIgYWxnZWJyYSkiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBUZXguLCBBdXN0aW4sIFRYLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXJzLCBkYXRhIHByb2Nlc3Npbmc7IGNvbnZlcmdlbmNlIG9mIG51bWVyaWNhbCBtZXRob2RzOyBlaWdlbmZ1bmN0aW9uczsgZWlnZW52YWx1ZXM7IGVpZ2VudmFsdWVzIGFuZDsgZWlnZW52ZWN0b3JzOyBpdGVyYXRpdmUgbWV0aG9kczsgbWF0aGVtYXRpY3M7IG1hdHJpeCBhbGdlYnJhOyBvcmlnaW4gc2hpZnRzOyBRUiBtZXRob2Q7IHN5bW1ldHJpYyB0cmlkaWFnb25hbCBtYXRyaXg7IHRyaWRpYWdvbmFsIG1hdHJpY2VzIiwKICBrd2RzID0gICAgICAgICAibmxhLCBlaWcsIFFSIGFsZ29yaXRobSwgc3ltbWV0cmljIG1hdHJpeCwgdHJpZGlhZ29uYWwgbWF0cml4IiwKfQoKQEFydGljbGV7Q2hhc2U6MTk3MDpBQUMsCiAgYXV0aG9yID0gICAgICAgIlAuIEouIENoYXNlIiwKICB0aXRsZSA9ICAgICAgICAie0FDTX0gQWxnb3JpdGhtIDM4MjogQ29tYmluYXRpb25zIG9mICR7TX0kIE91dCBvZiAke059JCBPYmplY3RzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiNiIsCiAgcGFnZXMgPSAgICAgICAgIjM2OC0tMzY4IiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzAiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzczMDAgKE5hdHVyYWwgc2NpZW5jZXMgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIkRlcHQuIERlZmVuc2UsIEZvcnQgTWVhZGUsIE1ELCBVU0EiLAogIGtleXdvcmRzID0gICAgICJhbGdlYnJhOyBzdWJyb3V0aW5lcyIsCn0KCkBBcnRpY2xle0NoYXNlOjE5NzA6QUFQLAogIGF1dGhvciA9ICAgICAgICJQLiBKLiBDaGFzZSIsCiAgdGl0bGUgPSAgICAgICAgIntBQ019IEFsZ29yaXRobSAzODM6IFBlcm11dGF0aW9ucyBvZiBhIFNldCB3aXRoIFJlcGV0aXRpb25zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiNiIsCiAgcGFnZXMgPSAgICAgICAgIjM2OC0tMzY5IiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzAiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzczMDAgKE5hdHVyYWwgc2NpZW5jZXMgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIkRlcHQuIERlZmVuc2UsIEZvcnQgTWVhZGUsIE1ELCBVU0EiLAogIGtleXdvcmRzID0gICAgICJhbGdlYnJhOyBzdWJyb3V0aW5lcyIsCn0KCkBBcnRpY2xle1N0ZXdhcnQ6MTk3MDpBQUUsCiAgYXV0aG9yID0gICAgICAgIkcuIFcuIFN0ZXdhcnQiLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gMzg0OiBFaWdlbnZhbHVlcyBhbmQgRWlnZW52ZWN0b3JzIG9mIGEgUmVhbCBTeW1tZXRyaWMgTWF0cml4IFt7RjJ9XSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjYiLAogIHBhZ2VzID0gICAgICAgICIzNjktLTM3MSIsCiAgbW9udGggPSAgICAgICAganVuLAogIHllYXIgPSAgICAgICAgICIxOTcwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgbm90ZSA9ICAgICAgICAgIlNlZSBlcnJhdGEgXGNpdGV7U3Rld2FydDoxOTcwOkVBQX0uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQxNDAgKExpbmVhciBhbGdlYnJhKTsgQzczMDAgKE5hdHVyYWwgc2NpZW5jZXMgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIFRleGFzLCBBdXN0aW4sIFRYLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJlaWdlbnZhbHVlczsgZWlnZW52YWx1ZXMgYW5kIGVpZ2VuZnVuY3Rpb25zOyBlaWdlbnZlY3RvcnM7IG1hdHJpeCBhbGdlYnJhOyBRUiBhbGdvcml0aG07IHJlYWwgc3ltbWV0cmljIG1hdHJpeDsgc3Vicm91dGluZXMiLAogIGt3ZHMgPSAgICAgICAgICJubGEsIGVpZywgUVIgYWxnb3JpdGhtLCBzeW1tZXRyaWMgbWF0cml4IiwKfQoKQEFydGljbGV7TG9uZG9uOjE5NzA6Q0FNLAogIGF1dGhvciA9ICAgICAgICJSLiBMLiBMb25kb24iLAogIHRpdGxlID0gICAgICAgICJDZXJ0aWZpY2F0aW9uIG9mIEFsZ29yaXRobSAyNDUgKHtNMX0pIFRyZWVzb3J0IDM6IFByb29mIG9mIEFsZ29yaXRobXMgLS0tIHtBfSBOZXcgS2luZCBvZiBDZXJ0aWZpY2F0aW9uIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiNiIsCiAgcGFnZXMgPSAgICAgICAgIjM3MS0tMzc0IiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzAiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJGcmkgSmFuIDE3IDE4OjI2OjM5IDE5OTciLAp9CgpAQXJ0aWNsZXtDaGFuZGxlcjoxOTcwOlJTLAogIGF1dGhvciA9ICAgICAgICJKLiBQLiBDaGFuZGxlciBhbmQgVy4gQy4gSGFycmlzb24iLAogIHRpdGxlID0gICAgICAgICJ7UjIwMX0tLXtTSEVMTFNPUlR9IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiNiIsCiAgcGFnZXMgPSAgICAgICAgIjM3My0tMzc0IiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzAiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJGcmkgSmFuIDE3IDE4OjI4OjUzIDE5OTciLAogIGtleXdvcmRzID0gICAgICJkaWdpdGFsIGNvbXB1dGVyIHNvcnRpbmc7IG1pbmltYWwgc3RvcmFnZSBzb3J0aW5nOyBzb3J0aW5nIiwKfQoKQEFydGljbGV7Q29kZDoxOTcwOlJNRCwKICBhdXRob3IgPSAgICAgICAiRS4gRi4gQ29kZCIsCiAgdGl0bGUgPSAgICAgICAgIkEgUmVsYXRpb25hbCBNb2RlbCBvZiBEYXRhIGZvciBMYXJnZSBTaGFyZWQgRGF0YSBCYW5rcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjYiLAogIHBhZ2VzID0gICAgICAgICIzNzctLTM4NyIsCiAgbW9udGggPSAgICAgICAganVuLAogIHllYXIgPSAgICAgICAgICIxOTcwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EYXRhYmFzZS9XaWVkZXJob2xkLmJpYiBhbmQgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EYXRhYmFzZS9kYXRhYmFzZS5iaWIiLAogIG5vdGUgPSAgICAgICAgICJBbHNvIHB1Ymxpc2hlZCBpbi9hczogYFJlYWRpbmdzIGluIERhdGFiYXNlIFN5c3RlbXMnLCBNLiBTdG9uZWJyYWtlciwgTW9yZ2FuLUthdWZtYW5uLCAxOTg4LCBwcC4gNS0tMTUiLAogIGFic3RyYWN0ID0gICAgICJGdXR1cmUgdXNlcnMgb2YgbGFyZ2UgZGF0YSBiYW5rcyBtdXN0IGJlIHByb3RlY3RlZCBmcm9tIGhhdmluZyB0byBrbm93IGhvdyB0aGUgZGF0YSBpcyBvcmdhbml6ZWQgaW4gdGhlIG1hY2hpbmUgKHRoZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbikuIEEgcHJvbXB0aW5nIHNlcnZpY2Ugd2hpY2ggc3VwcGxpZXMgc3VjaCBpbmZvcm1hdGlvbiBpcyBub3QgYSBzYXRpc2ZhY3Rvcnkgc29sdXRpb24uIEFjdGl2aXRpZXMgb2YgdXNlcnMgYXQgdGVybWluYWxzIGFuZCBtb3N0IGFwcGxpY2F0aW9uIHByb2dyYW1zIHdvdWxkIHJlbWFpbiB1bmFmZmVjdGVkIHdoZW4gdGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIGRhdGEgaXMgY2hhbmdlZCBhbmQgZXZlbiB3aGVuIHNvbWUgYXNwZWN0cyBvZiB0aGUgZXh0ZXJuYWwgcmVwcmVzZW50YXRpb24gYXJlIGNoYW5nZWQuIENoYW5nZXMgaW4gZGF0YSByZXByZXNlbnRhdGlvbiB3aWxsIG9mdGVuIGJlIG5lZWRlZCBhcyBhIHJlc3VsdCBvZiBjaGFuZ2VzIGluIHF1ZXJ5LCB1cGRhdGUsIGFuZCByZXBvcnQgdHJhZmZpYyBhbmQgbmF0dXJhbCBncm93dGggaW4gdGhlIHR5cGVzIG9mIHN0b3JlZCBpbmZvcm1hdGlvbi4gRXhpc3Rpbmcgbm9uaW5mZXJlbnRpYWwsIGZvcm1hdHRlZCBkYXRhIHN5c3RlbXMgcHJvdmlkZSB1c2VycyB3aXRoIHRyZWUtc3RydWN0dXJlZCBmaWxlcyBvciBzbGlnaHRseSBtb3JlIGdlbmVyYWwgbmV0d29yayBtb2RlbHMgb2YgdGhlIGRhdGEuIEluIFNlY3Rpb24gMSwgaW5hZGVxdWFjaWVzIG9mIHRoZXNlIG1vZGVscyBhcmUgZGlzY3Vzc2VkLiBBIG1vZGVsIGJhc2VkIG9uICRuJC1hcnkgcmVsYXRpb25zLCBhIG5vcm1hbCBmb3JtIGZvciBkYXRhIGJhc2UgcmVsYXRpb25zLCBhbmQgdGhlIGNvbmNlcHQgb2YgYSB1bml2ZXJzYWwgZGF0YSBzdWJsYW5ndWFnZSBhcmUgaW50cm9kdWNlZC4gSW4gU2VjdGlvbiAyLCBjZXJ0YWluIG9wZXJhdGlvbnMgb24gcmVsYXRpb25zIChvdGhlciB0aGFuIGxvZ2ljYWwgaW5mZXJlbmNlKSBhcmUgZGlzY3Vzc2VkIGFuZCBhcHBsaWVkIHRvIHRoZSBwcm9ibGVtcyBvZiByZWR1bmRhbmN5IGFuZCBjb25zaXN0ZW5jeSBpbiB0aGUgdXNlcidzIG1vZGVsLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgYW5ub3RlID0gICAgICAgIlNob3dzIHByb2JsZW1zIG9mIGhpZXJhcmNoaWNhbCBkYXRhIG9yZ2FuaXphdGlvbiwgcHJlc2VudHMgYSBub24taGllcmFyY2hpY2FsIGBub3JtYWwnIHN0cnVjdHVyZSwgYW5kIGRpc2N1c3NlcyBsYW5ndWFnZXMgZm9yIGRlc2NyaWJpbmcgcmVsYXRpb25zIG9mIHN1Y2ggbm9ybWFsIHN0cnVjdHVyZXMuIiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKTsgQzcyNTAgKEluZm9ybWF0aW9uIHN0b3JhZ2UgYW5kIHJldHJpZXZhbCkiLAogIGNvcnBzb3VyY2UgPSAgICJJQk0sIFNhbiBKb3NlLCBDQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXBvc2l0aW9uOyBjb21wdXRlcnMsIGRhdGEgc3RvcmFnZTsgY29uc2lzdGVuY3k7IGRhdGEgYmFuazsgZGF0YSBiYW5rczsgZGF0YSBiYXNlOyBkYXRhIGludGVncml0eTsgZGF0YSBvcmdhbml6YXRpb247IGRhdGEgc3RydWN0dXJlOyBkYXRhIHN0cnVjdHVyZXM7IGRlcml2YWJpbGl0eTsgZmlsZSBvcmdhbmlzYXRpb247IGhpZXJhcmNoaWVzIG9mIGRhdGE7IGluZm9ybWF0aW9uIHJldHJpZXZhbDsgaW5mb3JtYXRpb24gc3RvcmFnZSBhbmQgcmV0cmllOyBqb2luOyBuZXR3b3JrcyBvZiBkYXRhOyBOT0k7IHByZWRpY2F0ZSBjYWxjdWx1czsgcmVkdW5kYW5jeTsgcmVsYXRpb25zOyByZXRyaWV2YWwgbGFuZ3VhZ2U7IHNlY3VyaXR5OyBzeXN0ZW1zIiwKICByZXZpZXcgPSAgICAgICAiQUNNIENSIDg5MDUtMDMyOSIsCn0KCkBBcnRpY2xle0dyYW50OjE5NzA6SUNHLAogIGF1dGhvciA9ICAgICAgICJDLiBBLiBHcmFudCIsCiAgdGl0bGUgPSAgICAgICAgIkFuIGludGVyYWN0aXZlIGNvbW1hbmQgZ2VuZXJhdGluZyBmYWNpbGl0eSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjciLAogIHBhZ2VzID0gICAgICAgICI0MDMtLTQwNiIsCiAgbW9udGggPSAgICAgICAganVsLAogIHllYXIgPSAgICAgICAgICIxOTcwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkEgZmFjaWxpdHkgdG8gcGVybWl0IGNvbnZlcnNhdGlvbmFsbHkgY29udHJvbGxlZCB0YXNrcyB0byBiZSBleGVjdXRlZCBpbiBhIG5vbmludGVyYWN0aXZlIGVudmlyb25tZW50IGlzIHByb3Bvc2VkLiBBIG1lYW5zIGJ5IHdoaWNoIHByb2dyYW1zIGNhbiBnZW5lcmF0ZSBpbnRlcmFjdGl2ZSB0aW1lLXNoYXJpbmcgY29tbWFuZHMgYW5kIHJlY2VpdmUgdGhlIGNvcnJlc3BvbmRpbmcgb3V0cHV0IHJlc3BvbnNlIGlzIHByZXNlbnRlZC4gVGhlIGNvbW1hbmRzIHdpbGwgYmUgaW52b2tlZCBhcyBpZiB0aGV5IGhhZCBiZWVuIHR5cGVkIGF0IGEgY29uc29sZSBrZXlib2FyZC4gSXQgaXMgYXJndWVkIHRoYXQgdGhpcyBmYWNpbGl0eSB3aWxsIGhlbHAgb3ZlcmNvbWUgc29tZSBvZiB0aGUgY3VycmVudCBsaW1pdGF0aW9ucyBpbiBtYW4tY29tcHV0ZXIgY29tbXVuaWNhdGlvbi4gQSBzZXQgb2YgZnVuY3Rpb25zIHRvIGFjY29tcGxpc2ggdGhlIGFib3ZlIHdoaWNoIGNvdWxkIGJlIGVtYmVkZGVkIGludG8gYW55IHN0cmluZyBwcm9jZXNzaW5nIGxhbmd1YWdlIGlzIHN1Z2dlc3RlZCwgYW5kIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiBwZXJ0aW5lbnQgdG8gaW1wbGVtZW50YXRpb24gb2YgdGhlIGZhY2lsaXR5IG9uIGV4aXN0aW5nIHRpbWUtc2hhcmluZyBzeXN0ZW1zIGlzIGdpdmVuLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTQwQiAoTWFjaGluZS1vcmllbnRlZCBsYW5ndWFnZXMpOyBDNjE1MEogKE9wZXJhdGluZyBzeXN0ZW1zKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIENhbGlmb3JuaWEsIEJlcmtlbGV5LCBDQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyczsgY29tcHV0ZXJzLCB0aW1lIHNoYXJpbmc7IGludGVyYWN0aXZlIGNvbXB1dGluZzsgbWFjaGluZSBvcmllbnRlZCBsYW5ndWFnZXM7IG9wZXJhdGluZyBzeXN0ZW1zOyB0aW1lLXNoYXJpbmcgc3lzdGVtcyIsCn0KCkBBcnRpY2xle1dpbGtlczoxOTcwOkNBTSwKICBhdXRob3IgPSAgICAgICAiTS4gQS4gV2lsa2VzIiwKICB0aXRsZSA9ICAgICAgICAiQ29udmVyc2F0aW9uYWwgQWNjZXNzIHRvIGEgMjA0OC1Xb3JkIE1hY2hpbmUiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTMiLAogIG51bWJlciA9ICAgICAgICI3IiwKICBwYWdlcyA9ICAgICAgICAiNDA3LS00MTQiLAogIG1vbnRoID0gICAgICAgIGp1bCwKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJMQVA2IGlzIGFuIG9uLWxpbmUgc3lzdGVtIHJ1bm5pbmcgb24gMjA0OC0gd29yZCBMSU5DIHdoaWNoIHByb3ZpZGVzIGZ1bGwgZmFjaWxpdGllcyBmb3IgdGV4dCBlZGl0aW5nLCBhdXRvbWF0aWMgZmlsaW5nIGFuZCBmaWxlIG1haW50ZW5hbmNlLCBhbmQgcHJvZ3JhbSBwcmVwYXJhdGlvbiBhbmQgYXNzZW1ibHkuIEl0IGZvY3VzZXMgb24gdGhlIHByZXBhcmF0aW9uIGFuZCBlZGl0aW5nIG9mIGNvbnRpbnVvdXNseSBkaXNwbGF5ZWQgMjMsMDQwLSBjaGFyYWN0ZXIgdGV4dCBzdHJpbmdzIChtYW51c2NyaXB0cykgd2hpY2ggY2FuIGJlIHBvc2l0aW9uZWQgYW55d2hlcmUgYnkgdGhlIHVzZXIgYW5kIGVkaXRlZCBieSBzaW1wbHkgYWRkaW5nIGFuZCBkZWxldGluZyBsaW5lcyBhcyB0aG91Z2ggd29ya2luZyBkaXJlY3RseSBvbiBhbiBlbGFzdGljIHNjcm9sbC4gT3RoZXIgZmVhdHVyZXMgYXJlIGF2YWlsYWJsZSB0aHJvdWdoIGEgdW5pZm9ybSBjb21tYW5kIHNldCB3aGljaCBpdHNlbGYgY2FuIGJlIGF1Z21lbnRlZCBieSB0aGUgdXNlci4gVGhlIG1hY2hpbmUsIGFsdGhvdWdoIHNtYWxsLCBhaWRzIHByb2dyYW0gZGVzaWduIGJ5IHByb3ZpZGluZyBkaXNwbGF5IHNjb3BlIGFuZCBwcmVtYXJrZWQgcmFuZG9tbHkgYWRkcmVzc2FibGUgTElOQyB0YXBlcyBhcyBzdGFuZGFyZCBpdGVtcywgaW4gYW4gZW52aXJvbm1lbnQgc2ltaWxhciB0byB0aGF0IG9mIGEgc29waGlzdGljYXRlZCB0ZXJtaW5hbC4gVGhlIHRhcGVzIGFyZSBsb2dpY2FsbHkgc2ltaWxhciB0byBhIGRpc2suIFByaW9yaXR5IHdhcyBnaXZlbiB0byB0aGUgZGVzaWduIG9mIGVmZmljaWVudCB0YXBlIGFsZ29yaXRobXMgdG8gbWluaW1pemUgdGhlIGxpbWl0YXRpb25zIG9mIHRoZSBzbWFsbCBtZW1vcnkuIFRlY2huaXF1ZXMgZGV2ZWxvcGVkIGZvciBoYW5kbGluZyBzY3JvbGwgZWRpdGluZywgZmlsaW5nLCBhbmQgdGhlIGxheWVyZWQgc3lzdGVtIHN0cnVjdHVyZSBhcmUgb3V0bGluZWQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxNTBKIChPcGVyYXRpbmcgc3lzdGVtcykiLAogIGNvcnBzb3VyY2UgPSAgICJXYXNoaW5ndG9uIFVuaXYuLCBTdC4gTG91aXMsIE1TLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXJzOyBpbnRlcmFjdGl2ZSBjb21wdXRpbmc7IE9EOyBvbmxpbmUgb3BlcmF0aW9uOyBvcGVyYXRpbmcgc3lzdGVtczsgb3BlcmF0aW5nIHN5c3RlbXMgKGNvbXB1dGVycyk7IHRleHQgZWRpdGluZyIsCn0KCkBBcnRpY2xle1dhaXRlOjE5NzA6TVBTLAogIGF1dGhvciA9ICAgICAgICJXLiBNLiBXYWl0ZSIsCiAgdGl0bGUgPSAgICAgICAgIlRoZSBtb2JpbGUgcHJvZ3JhbW1pbmcgc3lzdGVtOiB7U1RBR0V9IDIiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTMiLAogIG51bWJlciA9ICAgICAgICI3IiwKICBwYWdlcyA9ICAgICAgICAiNDE1LS00MjEiLAogIG1vbnRoID0gICAgICAgIGp1bCwKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJTVEFHRSAyIGlzIHRoZSBzZWNvbmQgbGV2ZWwgb2YgYSBib290c3RyYXAgc2VxdWVuY2Ugd2hpY2ggaXMgZWFzaWx5IGltcGxlbWVudGVkIG9uIGFueSBjb21wdXRlci4gSXQgaXMgYSBmbGV4aWJsZSwgcG93ZXJmdWwgbWFjcm8gcHJvY2Vzc29yIGRlc2lnbmVkIHNwZWNpZmljYWxseSBhcyBhIHRvb2wgZm9yIGNvbnN0cnVjdGluZyBtYWNoaW5lLWluZGVwZW5kZW50IHNvZnR3YXJlLiBUaGUgZmVhdHVyZXMgcHJvdmlkZWQgYnkgU1RBR0UgMiBhcmUgc3VtbWFyaXplZCwgYW5kIHRoZSBpbXBsZW1lbnRhdGlvbiB0ZWNobmlxdWVzIHdoaWNoIGhhdmUgbWFkZSBpdCBwb3NzaWJsZSB0byBoYXZlIFNUQUdFIDIgcnVubmluZyBvbiBhIG5ldyBtYWNoaW5lIHdpdGggbGVzcyB0aGFuIG9uZSBtYW4td2VlayBvZiBlZmZvcnQgYXJlIGRpc2N1c3NlZC4gVGhlIGFwcHJvYWNoIGhhcyBiZWVuIHN1Y2Nlc3NmdWwgb24gb3ZlciAxNSBtYWNoaW5lcyBvZiB3aWRlbHkgdmFyeWluZyBjaGFyYWN0ZXJpc3RpY3MuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxNDBFIChPdGhlciBwcm9ncmFtbWluZyBsYW5ndWFnZXMpIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gQ29sb3JhZG8sIEJvdWxkZXIsIENPLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYm9vdHN0cmFwcGluZzsgY29tcHV0ZXJzOyBtYWNybyBwcm9jZXNzb3JzOyBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IHN5c3RlbSIsCn0KCkBBcnRpY2xle0Jsb29tOjE5NzA6U1RULAogIGF1dGhvciA9ICAgICAgICJCdXJ0b24gSC4gQmxvb20iLAogIHRpdGxlID0gICAgICAgICJTcGFjZVxzbGFzaCBUaW1lIFRyYWRlLW9mZnMgaW4gSGFzaCBDb2Rpbmcgd2l0aCBBbGxvd2FibGUgRXJyb3JzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiNyIsCiAgcGFnZXMgPSAgICAgICAgIjQyMi0tNDI2IiwKICBtb250aCA9ICAgICAgICBqdWwsCiAgeWVhciA9ICAgICAgICAgIjE5NzAiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiVHJhZGUtb2ZmcyBhbW9uZyBjZXJ0YWluIGNvbXB1dGF0aW9uYWwgZmFjdG9ycyBpbiBoYXNoIGNvZGluZyBhcmUgYW5hbHl6ZWQuIFRoZSBwYXJhZGlnbSBwcm9ibGVtIGNvbnNpZGVyZWQgaXMgdGhhdCBvZiB0ZXN0aW5nIGEgc2VyaWVzIG9mIG1lc3NhZ2VzIG9uZS1ieS1vbmUgZm9yIG1lbWJlcnNoaXAgaW4gYSBnaXZlbiBzZXQgb2YgbWVzc2FnZXMuIFR3byBuZXcgaGFzaC1jb2RpbmcgbWV0aG9kcyBhcmUgZXhhbWluZWQgYW5kIGNvbXBhcmVkIHdpdGggYSBwYXJ0aWN1bGFyIGNvbnZlbnRpb25hbCBoYXNoLWNvZGluZyBtZXRob2QuIFRoZSBjb21wdXRhdGlvbmFsIGZhY3RvcnMgY29uc2lkZXJlZCBhcmUgdGhlIHNpemUgb2YgdGhlIGhhc2ggYXJlYSAoc3BhY2UpLCB0aGUgdGltZSByZXF1aXJlZCB0byBpZGVudGlmeSBhIG1lc3NhZ2UgYXMgYSBub25tZW1iZXIgb2YgdGhlIGdpdmVuIHNldCAocmVqZWN0IHRpbWUpLCBhbmQgYW4gYWxsb3dhYmxlIGVycm9yIGZyZXF1ZW5jeS4gVGhlIG5ldyBtZXRob2RzIGFyZSBpbnRlbmRlZCB0byByZWR1Y2UgdGhlIGFtb3VudCBvZiBzcGFjZSByZXF1aXJlZCB0byBjb250YWluIHRoZSBoYXNoLWNvZGVkIGluZm9ybWF0aW9uIGZyb20gdGhhdCBhc3NvY2lhdGVkIHdpdGggY29udmVudGlvbmFsIG1ldGhvZHMuIFRoZSByZWR1Y3Rpb24gaW4gc3BhY2UgaXMgYWNjb21wbGlzaGVkIGJ5IGV4cGxvaXRpbmcgdGhlIHBvc3NpYmlsaXR5IHRoYXQgYSBzbWFsbCBmcmFjdGlvbiBvZiBlcnJvcnMgb2YgY29tbWlzc2lvbiBtYXkgYmUgdG9sZXJhYmxlIGluIHNvbWUgYXBwbGljYXRpb25zLCBpbiBwYXJ0aWN1bGFyLCBhcHBsaWNhdGlvbnMgaW4gd2hpY2ggYSBsYXJnZSBhbW91bnQgb2YgZGF0YSBpcyBpbnZvbHZlZCBhbmQgYSBjb3JlIHJlc2lkZW50IGhhc2ggYXJlYSBpcyBjb25zZXF1ZW50bHkgbm90IGZlYXNpYmxlIHVzaW5nIGNvbnZlbnRpb25hbCBtZXRob2RzLiBBbiBleGFtcGxlIGlzIGRpc2N1c3NlZCB3aGljaCBpbGx1c3RyYXRlcyBwb3NzaWJsZSBhcmVhcyBvZiBhcHBsaWNhdGlvbiBmb3IgdGhlIG5ldyBtZXRob2QuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBhbm5vdGUgPSAgICAgICAiUGhhbnRvbSB1c2Ugb2YgYSBkaXJlY3QgYWNjZXNzIGxpc3QuIiwKICBjbGFzc2NvZGVzID0gICAiQzYxMzAgKERhdGEgaGFuZGxpbmcgdGVjaG5pcXVlcykiLAogIGNvcnBzb3VyY2UgPSAgICJDb21wdXRlciBVc2FnZSBDby4gTmV3dG9uIFVwcGVyIEZhbGxzLCBNQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImJpdCB2ZWN0b3IgZmlsdGVyIENBQ007IGNvZGVzOyBjb21wdXRlcnM7IGNvbXB1dGVycywgZXJyb3JzOyBoYXNoIGNvZGluZzsgaW5mIiwKfQoKQEFydGljbGV7Q29mZm1hbjoxOTcwOkZTVSwKICBhdXRob3IgPSAgICAgICAiRS4gRy4ge0NvZmZtYW4sIEpyLn0gYW5kIEouIEV2ZSIsCiAgdGl0bGUgPSAgICAgICAgIkZpbGUgU3RydWN0dXJlcyBVc2luZyBIYXNoaW5nIEZ1bmN0aW9ucyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjciLAogIHBhZ2VzID0gICAgICAgICI0MjctLTQzMiwgNDM2IiwKICBtb250aCA9ICAgICAgICBqdWwsCiAgeWVhciA9ICAgICAgICAgIjE5NzAiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0RhdGFiYXNlL1dpZWRlcmhvbGQuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiQSBnZW5lcmFsIG1ldGhvZCBvZiBmaWxlIHN0cnVjdHVyaW5nIGlzIHByb3Bvc2VkIHdoaWNoIHVzZXMgYSBoYXNoaW5nIGZ1bmN0aW9uIHRvIGRlZmluZSB0cmVlIHN0cnVjdHVyZS4gVHdvIHR5cGVzIG9mIHN1Y2ggdHJlZXMgYXJlIGV4YW1pbmVkLCBhbmQgdGhlaXIgcmVsYXRpb24gdG8gdHJlZXMgc3R1ZGllZCBpbiB0aGUgcGFzdCBpcyBleHBsYWluZWQuIFJlc3VsdHMgZm9yIHRoZSBwcm9iYWJpbGl0eSBkaXN0cmlidXRpb25zIG9mIHBhdGggbGVuZ3RocyBhcmUgZGVyaXZlZCBhbmQgaWxsdXN0cmF0ZWQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBhbm5vdGUgPSAgICAgICAiVHJlZSBzdHJ1Y3R1cmUgd2l0aCBicmFuY2hpbmcgYmFzZWQgb24gYml0IHZhbHVlcyBvZiBrZXkgY29kZS4iLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gTmV3Y2FzdGxlIHVwb24gVHluZSwgVUsiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXJzOyBkYXRhIHByb2Nlc3Npbmc7IGRhdGEgc3RydWN0dXJlczsgZmlsZSBvcmdhbml6YXRpb247IGhhc2ggY29kaW5nOyBpbmZvcm1hdGlvbiBzdG9yYWdlIGFuZCByZXRyaWU7IHRyZWUgc3RydWN0dXJlczsgdHJlZXMgKG1hdGhlbWF0aWNzKSIsCn0KCkBBcnRpY2xle0JyYWRsZXk6MTk3MDpBQkcsCiAgYXV0aG9yID0gICAgICAgIkdvcmRvbiBILiBCcmFkbGV5IiwKICB0aXRsZSA9ICAgICAgICAiQWxnb3JpdGhtIGFuZCBCb3VuZCBmb3IgdGhlIEdyZWF0ZXN0IENvbW1vbiBEaXZpc29yIG9mICRuJCBJbnRlZ2VycyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjciLAogIHBhZ2VzID0gICAgICAgICI0MzMtLTQzNiIsCiAgbW9udGggPSAgICAgICAganVsLAogIHllYXIgPSAgICAgICAgICIxOTcwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiMTBBMzAiLAogIE1SbnVtYmVyID0gICAgICI0NSAzMzEzIiwKICBtcnJldmlld2VyID0gICAiQS4gTS4gQ29oZW4iLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiQSBuZXcgdmVyc2lvbiBvZiB0aGUgRXVjbGlkZWFuIGFsZ29yaXRobSBmb3IgZmluZGluZyB0aGUgZ3JlYXRlc3QgY29tbW9uIGRpdmlzb3Igb2YgJG4kIGludGVnZXJzICRhKGkpJCBhbmQgbXVsdGlwbGllcnMgJHgoaSkkIHN1Y2ggdGhhdCAkXG1ib3h7Z2NkfSA9IHgoMSlhKDEpICsgXGxkb3RzICsgeChuKWEobikkIGlzIHByZXNlbnRlZC4gVGhlIG51bWJlciBvZiBhcml0aG1ldGljIG9wZXJhdGlvbnMgYW5kIHRoZSBudW1iZXIgb2Ygc3RvcmFnZSBsb2NhdGlvbnMgYXJlIGxpbmVhciBpbiAkbiQuIEEgdGhlb3JlbSBvZiBMYW1lIHRoYXQgZ2l2ZXMgYSBib3VuZCBmb3IgdGhlIG51bWJlciBvZiBpdGVyYXRpb25zIG9mIHRoZSBFdWNsaWRlYW4gYWxnb3JpdGhtIGZvciB0d28gaW50ZWdlcnMgaXMgZXh0ZW5kZWQgdG8gdGhlIGNhc2Ugb2YgJG4kIGludGVnZXJzLiBBbiBhbGdvcml0aG0gdG8gY29uc3RydWN0IGEgbWluaW1hbCBzZXQgb2YgbXVsdGlwbGllcnMgaXMgcHJlc2VudGVkLiBBIEZvcnRyYW4gcHJvZ3JhbSBmb3IgdGhlIGFsZ29yaXRobSBhcHBlYXJzIGFzIENvbW0uIEFDTSBBbGdvcml0aG0gMzg2LiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MTkwIChPdGhlciBudW1lcmljYWwgbWV0aG9kcykiLAogIGNvcnBzb3VyY2UgPSAgICJZYWxlIFVuaXYuLCBOZXcgSGF2ZW4sIENULCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXJzLCBkYXRhIHByb2Nlc3Npbmc7IGRpb3BoYW50aW5lIGVxdWF0aW9uczsgRXVjbGlkZWFuIGFsZ29yaXRobTsgZ3JlYXRlc3QgY29tbW9uIGRpdmlzb3I7IGl0ZXJhdGl2ZSBtZXRob2RzOyBtYXRoZW1hdGljczsgbnVtYmVyIHRoZW9yeTsgbnVtZXJpY2FsIG1ldGhvZHMiLAp9CgpAQXJ0aWNsZXtXb29kczoxOTcwOkNTUCwKICBhdXRob3IgPSAgICAgICAiVy4gQS4gV29vZHMiLAogIHRpdGxlID0gICAgICAgICJDb250ZXh0LVNlbnNpdGl2ZSBQYXJzaW5nIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiNyIsCiAgcGFnZXMgPSAgICAgICAgIjQzNy0tNDQ1IiwKICBtb250aCA9ICAgICAgICBqdWwsCiAgeWVhciA9ICAgICAgICAgIjE5NzAiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiVGhpcyBwYXBlciBwcmVzZW50cyBhIGNhbm9uaWNhbCBmb3JtIGZvciBjb250ZXh0LXNlbnNpdGl2ZSBkZXJpdmF0aW9ucyBhbmQgYSBwYXJzaW5nIGFsZ29yaXRobSB3aGljaCBmaW5kcyBlYWNoIGNvbnRleHQtc2Vuc2l0aXZlIGFuYWx5c2lzIG9uY2UgYW5kIG9ubHkgb25jZS4gVGhlIGFtb3VudCBvZiBtZW1vcnkgcmVxdWlyZWQgYnkgdGhlIGFsZ29yaXRobSBpcyBlc3NlbnRpYWxseSBubyBtb3JlIHRoYW4gdGhlIHJlcXVpcmVkIHRvIHN0b3JlIGEgc2luZ2xlIGNvbXBsZXRlIGRlcml2YXRpb24uIEluIGFkZGl0aW9uLCBhIG1vZGlmaWVkIHZlcnNpb24gb2YgdGhlIGJhc2ljIGFsZ29yaXRobSBpcyBwcmVzZW50ZWQgd2hpY2ggYmxvY2tzIGluZmluaXRlIGFuYWx5c2VzIGZvciBncmFtbWFycyB3aGljaCBjb250YWluIGxvb3BzLiBUaGUgYWxnb3JpdGhtIGlzIGFsc28gY29tcGFyZWQgd2l0aCBzZXZlcmFsIHByZXZpb3VzIHBhcnNlcnMgZm9yIGNvbnRleHQtc2Vuc2l0aXZlIGdyYW1tYXJzIGFuZCBnZW5lcmFsIHJld3JpdGluZyBzeXN0ZW1zLCBhbmQgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdHdvIHR5cGVzIG9mIGFuYWx5c2VzIGlzIGRpc2N1c3NlZC4gVGhlIGFsZ29yaXRobSBhcHBlYXJzIHRvIGJlIGNvbXBsZW1lbnRhcnkgdG8gYW4gYWxnb3JpdGhtIGJ5IFMuIEt1bm8gaW4gc2V2ZXJhbCByZXNwZWN0cywgaW5jbHVkaW5nIHRoZSBzcGFjZS10aW1lIHRyYWRlLW9mZiBhbmQgdGhlIGRlZ3JlZSBvZiBjb250ZXh0IGRlcGVuZGVuY2UgaW52b2x2ZWQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQyMTAgKEZvcm1hbCBsb2dpYykiLAogIGNvcnBzb3VyY2UgPSAgICJIYXJ2YXJkIFVuaXYuLCBDYW1icmlkZ2UsIE1BLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0YXRpb25hbCBsaW5ndWlzdGljcyIsCiAga2V5d29yZHMgPSAgICAgImF1dG9tYXRhIHRoZW9yeTsgY29tcHV0YXRpb25hbCBsaW5ndWlzdGljczsgY29udGV4dC1zZW5zaXRpdmUgZ3JhbW1hcnM7IGNvbnRleHQtc2Vuc2l0aXZlIHBhcnNpbmc7IGZvcm1hbCBncmFtbWFyczsgZm9ybWFsIGxhbmd1YWdlIHRoZW9yeTsgcGFyc2luZzsgcGFyc2luZyBhbGdvcml0aG1zOyByZWNvZ25pdGlvbiBhbGdvcml0aG1zIiwKfQoKQEFydGljbGV7UGFjaW9yZWs6MTk3MDpBQUUsCiAgYXV0aG9yID0gICAgICAgIksuIEEuIFBhY2lvcmVrIiwKICB0aXRsZSA9ICAgICAgICAie0FDTX0gQWxnb3JpdGhtIDM4NTogRXhwb25lbnRpYWwgSW50ZWdyYWwgJHtFfV9pKHgpJCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjciLAogIHBhZ2VzID0gICAgICAgICI0NDYtLTQ0NyIsCiAgbW9udGggPSAgICAgICAganVsLAogIHllYXIgPSAgICAgICAgICIxOTcwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MTYwIChOdW1lcmljYWwgaW50ZWdyYXRpb24gYW5kIGRpZmZlcmVudGlhdGlvbik7IEM3MzAwIChOYXR1cmFsIHNjaWVuY2VzIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJBcmdvbm5lIE5hdC4gTGFiLiwgSUwsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImludGVncmF0aW9uOyBzdWJyb3V0aW5lcyIsCn0KCkBBcnRpY2xle0JyYWRsZXk6MTk3MDpBQUcsCiAgYXV0aG9yID0gICAgICAgIkcuIEguIEJyYWRsZXkiLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gMzg2OiBHcmVhdGVzdCBDb21tb24gRGl2aXNvciBvZiAkbiQgSW50ZWdlcnMgYW5kIE11bHRpcGxpZXJzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiNyIsCiAgcGFnZXMgPSAgICAgICAgIjQ0Ny0tNDQ4IiwKICBtb250aCA9ICAgICAgICBqdWwsCiAgeWVhciA9ICAgICAgICAgIjE5NzAiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQxOTAgKE90aGVyIG51bWVyaWNhbCBtZXRob2RzKTsgQzczMDAgKE5hdHVyYWwgc2NpZW5jZXMgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIllhbGUgVW5pdi4gTmV3IEhhdmVuLCBDVCwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAibnVtYmVyIHRoZW9yeTsgc3Vicm91dGluZXMiLAp9CgpAQXJ0aWNsZXtTYXR0bGV5OjE5NzA6Q1BMLAogIGF1dGhvciA9ICAgICAgICJLLiBTYXR0bGV5IGFuZCBSLiBNaWxsc3RlaW4iLAogIHRpdGxlID0gICAgICAgICJDb21tZW50cyBvbiBhIHBhcGVyIGJ5IHtMb3dlfSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjciLAogIHBhZ2VzID0gICAgICAgICI0NTAtLTQ1MSIsCiAgbW9udGggPSAgICAgICAganVsLAogIHllYXIgPSAgICAgICAgICIxOTcwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MjkwIChPdGhlciBjb21wdXRlciB0aGVvcnkpIiwKICBjb3Jwc291cmNlID0gICAiQXBwbGllZCBEYXRhIFJlcy4gSW5jLiwgTlksIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGF0aW9uIHRoZW9yeTsgZ3JhcGggdGhlb3J5IiwKfQoKQEFydGljbGV7QmFlY2tlcjoxOTcwOk5EQiwKICBhdXRob3IgPSAgICAgICAiSC4gRC4gQmFlY2tlciIsCiAgdGl0bGUgPSAgICAgICAgIkEgbm90ZSBvbiBkYXRhIGJhc2UgZGVhZGxvY2tzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiNyIsCiAgcGFnZXMgPSAgICAgICAgIjQ1MS0tNDUxIiwKICBtb250aCA9ICAgICAgICBqdWwsCiAgeWVhciA9ICAgICAgICAgIjE5NzAiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzcyNTAgKEluZm9ybWF0aW9uIHN0b3JhZ2UgYW5kIHJldHJpZXZhbCkiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBDYWxnYXJ5LCBBbHRhLiwgQ2FuYWRhIiwKICBrZXl3b3JkcyA9ICAgICAiaW5mb3JtYXRpb24gcmV0cmlldmFsIiwKfQoKQEFydGljbGV7UG9tZXJhbno6MTk3MDpOQVAsCiAgYXV0aG9yID0gICAgICAgIkouIEUuIFBvbWVyYW56IiwKICB0aXRsZSA9ICAgICAgICAiTm90ZSBvbiBhbiBBbm9tYWx5IGluIFBhZ2luZyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjciLAogIHBhZ2VzID0gICAgICAgICI0NTEtLTQ1MSIsCiAgbW9udGggPSAgICAgICAganVsLAogIHllYXIgPSAgICAgICAgICIxOTcwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbikiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBDaGljYWdvLCBJTCwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiZGVtYW5kIHBhZ2luZzsgcGFnaW5nIG1hY2hpbmVzOyByZXBsYWNlbWVudCBhbGdvcml0aG07IHN0b3JhZ2UgYWxsb2NhdGlvbiIsCn0KCkBBcnRpY2xle0h1bnQ6MTk3MDpDQUEsCiAgYXV0aG9yID0gICAgICAgIkIuIFIuIEh1bnQiLAogIHRpdGxlID0gICAgICAgICJBIENvbW1lbnQgb24gQXhpb21hdGljIEFwcHJvYWNoZXMgdG8gUHJvZ3JhbW1pbmciLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTMiLAogIG51bWJlciA9ICAgICAgICI3IiwKICBwYWdlcyA9ICAgICAgICAiNDUyLS00NTIiLAogIG1vbnRoID0gICAgICAgIGp1bCwKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDI5MCAoT3RoZXIgY29tcHV0ZXIgdGhlb3J5KSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIENhbGlmb3JuaWEsIExvcyBBbGFtb3MsIE5NLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJheGlvbWF0aWMgbWV0aG9kOyBjb21wdXRhYmlsaXR5IGFuZCBkZWNpZGFiaWxpdHk7IGhvbW9tb3JwaGljIHN0cnVjdHVyZSBpbiBwcm9ncmFtbWluZzsgcHJvZ3JhbW1pbmc7IHByb29mcyBvZiBwcm9ncmFtcyIsCn0KCkBBcnRpY2xle05pZWxzZW46MTk3MDpBQ1IsCiAgYXV0aG9yID0gICAgICAgIk4uIFIuIE5pZWxzZW4iLAogIHRpdGxlID0gICAgICAgICJBbGxvY2F0aW9uIG9mIENvbXB1dGVyIFJlc291cmNlcy4gaXMgUHJpY2luZyB0aGUgQW5zd2VyIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiOCIsCiAgcGFnZXMgPSAgICAgICAgIjQ2Ny0tNDc0IiwKICBtb250aCA9ICAgICAgICBhdWcsCiAgeWVhciA9ICAgICAgICAgIjE5NzAiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiVGhlIGV4dGVudCB0byB3aGljaCBhIHByaWNpbmcgbWVjaGFuaXNtIGZpdHMgdGhlIG1vbGQgaXMgZGlzY3Vzc2VkLiBJbmFzbXVjaCBhcyBwcmljaW5nIG11c3Qgc2VydmUgYXMgYSByYXRpb25pbmcgbWVjaGFuaXNtIGF0IHRpbWVzLCBjb25zaWRlcmF0aW9uIGlzIGdpdmVuIHRvIHRoZSBtZWFucyBieSB3aGljaCBwcmljZXMgY2FuIGJlIGFkanVzdGVkIGZsZXhpYmx5IGluIG9yZGVyIHRvIG1ha2UgYSBkeW5hbWljIGFsbG9jYXRpb24gb2YgcmVzb3VyY2VzLiBDb25zaWRlcmF0aW9uIGlzIGdpdmVuIHRvIHRoZSBtZWFucyBieSB3aGljaCB1c2VycyBjYW4gYmUgaW5zdWxhdGVkIGZyb20gdGhlIGhhcm1mdWwgZWZmZWN0cyBvZiBmcmVxdWVudCBwcmljZSBmbHVjdHVhdGlvbnMuIFR3byBpbGx1c3RyYXRpdmUgcHJpY2luZyBzeXN0ZW1zIGFyZSBkaXNjdXNzZWQgaW4gb3JkZXIgdG8gZGVtb25zdHJhdGUgdGhlIGFwcGxpY2FiaWxpdHkgb2YgcHJpY2luZyBpbiBxdWl0ZSBkaWZmZXJlbnQgZW52aXJvbm1lbnRzLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMwMjAwIChHZW5lcmFsIGNvbXB1dGVyIHRvcGljcykiLAogIGNvcnBzb3VyY2UgPSAgICJTdGFuZm9yZCBVbml2LiwgQ0EsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJDQUNNQTsgY29tcHV0ZXJzOyBjb3N0IGFjY291bnRpbmc7IGRpZ2l0YWwgY29tcHV0ZXJzOyBlY29ub21pY3M7IGluZHVzdHJpYWwgbWFuYWdlbWVudDsgaW5zdGFsbGF0aW9uIG1hbmFnZW1lbnQ7IHJlc291cmNlIGFsbG9jYXRpb247IHJlc291cmNlcyIsCn0KCkBBcnRpY2xle05hZ3k6MTk3MDpOVEgsCiAgYXV0aG9yID0gICAgICAgIkcuIE5hZ3kgYW5kIE4uIFR1b25nIiwKICB0aXRsZSA9ICAgICAgICAiTm9ybWFsaXphdGlvbiBUZWNobmlxdWVzIGZvciBIYW5kcHJpbnRlZCBOdW1lcmFscyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjgiLAogIHBhZ2VzID0gICAgICAgICI0NzUtLTQ4MSIsCiAgbW9udGggPSAgICAgICAgYXVnLAogIHllYXIgPSAgICAgICAgICIxOTcwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkEgZmFtaWx5IG9mIHBhdHRlcm4gc3RhbmRhcmRpemF0aW9uIHRlY2huaXF1ZXMgYmFzZWQgb24gZ2VvbWV0cmljYWwgcHJvamVjdGlvbiBpcyBhcHBsaWVkIHRvIGEgZmlsZSBvZiBkaWdpdGl6ZWQgaGFuZHByaW50ZWQgbnVtZXJhbHMgb2J0YWluZWQgZnJvbSBzYWxlcyBjbGVya3MuIFRoZSBwcmluY2lwbGUgaW52b2x2ZXMgdHJhbnNmb3JtaW5nIGEgcXVhZHJpbGF0ZXJhbCBzcGVjaWZpZWQgaW4gdGVybXMgb2YgdGhlIGNvbnZleCBodWxsIG9mIGVhY2ggcGF0dGVybiBpbnRvIGEgc3F1YXJlLiBUaGUgYW1vdW50IG9mIG92ZXJsYXAgd2l0aGluIGVhY2ggY2xhc3Mgb2YgY2hhcmFjdGVycyB2cyB0aGUgYW1vdW50IGJldHdlZW4gY2xhc3NlcyBpcyB1c2VkIHRvIGV2YWx1YXRlIHRoZSBkZWdyZWUgb2Ygbm9ybWFsaXphdGlvbiBhY2hpZXZlZCB3aXRoIHJlc3BlY3QgdG8gb3RoZXIgcHVibGlzaGVkIG1ldGhvZHMgaW5jbHVkaW5nIHNpemUgYW5kIHNoZWFyIG5vcm1hbGl6YXRpb24gdGhyb3VnaCBtb21lbnRzLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkI2MTQwQyAoT3B0aWNhbCBpbmZvcm1hdGlvbiwgaW1hZ2UgYW5kIHZpZGVvIHNpZ25hbCBwcm9jZXNzaW5nKTsgQzEyNTAgKFBhdHRlcm4gcmVjb2duaXRpb24pIiwKICBjb3Jwc291cmNlID0gICAiSUJNIFRob21hcyBKLiBXYXRzb24gUmVzLiBDZW50ZXIsIFlvcmt0b3duIEhlaWdodHMsIE5ZLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiQ0FDTUE7IGNvbXB1dGVycyBkaWdpdGFsLCBjaGFyYWN0ZXIgUjsgY29tcHV0ZXJzLCBkaWdpdGFsOyBwYXR0ZXJuIHJlY29nbml0aW9uOyBwYXR0ZXJuIHJlY29nbml0aW9uIHN5c3RlbXMiLAp9CgpAQXJ0aWNsZXtEYXk6MTk3MDpGVFEsCiAgYXV0aG9yID0gICAgICAgIkEuIEMuIERheSIsCiAgdGl0bGUgPSAgICAgICAgIkZ1bGwgVGFibGUgUXVhZHJhdGljIFNlYXJjaGluZyBmb3IgU2NhdHRlciBTdG9yYWdlIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiOCIsCiAgcGFnZXMgPSAgICAgICAgIjQ4MS0tNDgyIiwKICBtb250aCA9ICAgICAgICBhdWcsCiAgeWVhciA9ICAgICAgICAgIjE5NzAiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiVGhlIHF1YWRyYXRpYyByZXNpZHVlIHNlYXJjaCBtZXRob2QgZm9yIGhhc2ggdGFibGVzIGF2b2lkcyBtdWNoIG9mIHRoZSBjbHVzdGVyaW5nIGV4cGVyaWVuY2VkIHdpdGggYSBsaW5lYXIgc2VhcmNoIG1ldGhvZC4gVGhlIHNpbXBsZSBxdWFkcmF0aWMgc2VhcmNoIG9ubHkgYWNjZXNzZXMgaGFsZiB0aGUgdGFibGUuIEl0IGhhcyBiZWVuIHNob3duIHRoYXQgd2hlbiB0aGUgbGVuZ3RoIG9mIHRoZSB0YWJsZSBpcyBhIHByaW1lIG9mIHRoZSBmb3JtIDRuIHBsdXMgMywgd2hlcmUgbiBpcyBhbiBpbnRlZ2VyLCB0aGUgd2hvbGUgdGFibGUgbWF5IGJlIGFjY2Vzc2VkIGJ5IHR3byBxdWFkcmF0aWMgc2VhcmNoZXMgcGx1cyBhIHNlcGFyYXRlIGFjY2VzcyBmb3IgdGhlIG9yaWdpbmFsIGVudHJ5IHBvaW50LiBBIHNlYXJjaCBtZXRob2QgaXMgcHJlc2VudGVkIHdoaWNoIGlzIGNvbXB1dGF0aW9uYWxseSBzaW1wbGUsIGhhcyBhbGwgdGhlIGFkdmFudGFnZXMgb2YgdGhlIHF1YWRyYXRpYyBzZWFyY2gsIGFuZCB5ZXQgYWNjZXNzZXMgYWxsIHRoZSB0YWJsZSBpbiBvbmUgc3dlZXAuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMzAgKERhdGEgaGFuZGxpbmcgdGVjaG5pcXVlcykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBDb2xsLiBMb25kb24sIFVLIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgIkNBQ01BOyBjb21wdXRlcnM7IGNvbXB1dGVycywgZGF0YSBzdG9yYWdlOyBoYXNoIGNvZGluZzsgcHJvZ3JhbW1pbmc7IHRhYmxlIGxvb2stdXA7IHRhYmxlIGxvb2t1cCIsCn0KCkBBcnRpY2xle0JyYXduOjE5NzA6U1BFLAogIGF1dGhvciA9ICAgICAgICJCLiBTLiBCcmF3biBhbmQgRi4gRy4gR3VzdGF2c29uIGFuZCBFLiBTLiBNYW5raW4iLAogIHRpdGxlID0gICAgICAgICJTb3J0aW5nIGluIGEgUGFnaW5nIEVudmlyb25tZW50IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiOCIsCiAgcGFnZXMgPSAgICAgICAgIjQ4My0tNDk0IiwKICBtb250aCA9ICAgICAgICBhdWcsCiAgeWVhciA9ICAgICAgICAgIjE5NzAiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0RhdGFiYXNlL0dyYWVmZS5iaWIiLAogIGFic3RyYWN0ID0gICAgICJUaGlzIHNvcnRpbmcgc3R1ZHkgd2FzIHBhcnQgb2YgYW4gZXh0ZW5zaXZlIG1lYXN1cmVtZW50IHByb2plY3QgdW5kZXJ0YWtlbiBvbiB0aGUgTTQ0XHNsYXNoIDQ0WCwgYW4gZXhwZXJpbWVudGFsIHBhZ2luZyBzeXN0ZW0gd2hpY2ggd2FzIGNvbmNlaXZlZCBhbmQgaW1wbGVtZW50ZWQgYXQgSUJNIFJlc2VhcmNoIGluIG9yZGVyIHRvIGV4cGxvcmUgdGhlIHZpcnR1YWwgbWFjaGluZSBjb25jZXB0LiBUaGUgc3R1ZHkgd2FzIGNvbmNlcm5lZCB3aXRoIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBzb3J0aW5nIHByb2NlZHVyZXMgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGR5bmFtaWMgcGFnaW5nIGVudmlyb25tZW50IGNoYXJhY3RlcmlzdGljIG9mIHZpcnR1YWwgbWVtb3J5IG1hY2hpbmVzLiBEZXNjcmlwdGlvbnMgb2YgdGhlIGV4cGVyaW1lbnRhbCBzb3J0IHByb2dyYW1zIGFuZCBhbmFseXNpcyBvZiB0aGUgcGVyZm9ybWFuY2UgbWVhc3VyZW1lbnQgcmVzdWx0cyBvYnRhaW5lZCBmb3IgdGhlbSBhcmUgcHJlc2VudGVkLiBUaGUgaW5zaWdodCBnYWluZWQgZnJvbSB0aGUgZXhwZXJpbWVudGFsIGVmZm9ydCBpcyB1c2VkIHRvIGFycml2ZSBhdCBhIHNldCBvZiBicm9hZCBndWlkZWxpbmVzIGZvciB3cml0aW5nIHNvcnQgcHJvZ3JhbXMgZm9yIGEgcGFnaW5nIGVudmlyb25tZW50LiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTMwIChEYXRhIGhhbmRsaW5nIHRlY2huaXF1ZXMpIiwKICBjb3Jwc291cmNlID0gICAiSUJNIFRob21hcyBKLiBXYXRzb24gUmVzLiBDZW50ZXIsIFlvcmt0b3duIEhlaWdodHMsIE5ZLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiQ0FDTUE7IGNvbXB1dGVyLCBtZW1vcmllczsgY29tcHV0ZXJzOyBjb21wdXRlcnMsIHByb2dyYW1taW5nOyBkeW5hbWljIG1lbW9yeSBtYW5hZ2VtZW50OyBFeHRlcm5hbCBzb3J0IHZpcnR1YWwgbWVtb3J5IENBQ007IG9wZXJhdGluZyBzeXN0ZW1zOyBzb3J0aW5nOyB2aXJ0dWFsIG1hY2hpbmVzIiwKfQoKQEFydGljbGV7U2FsdHplcjoxOTcwOklNLAogIGF1dGhvciA9ICAgICAgICJKLiBILiBTYWx0emVyIGFuZCBKLiBXLiBHaW50ZWxsIiwKICB0aXRsZSA9ICAgICAgICAiVGhlIGluc3RydW1lbnRhdGlvbiBvZiB7TXVsdGljc30iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTMiLAogIG51bWJlciA9ICAgICAgICI4IiwKICBwYWdlcyA9ICAgICAgICAiNDk1LS01MDAiLAogIG1vbnRoID0gICAgICAgIGF1ZywKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvTWlzYy9tb25pdG9yLmJpYiBhbmQgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EYXRhYmFzZS9HcmFlZmUuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiQW4gYXJyYXkgb2YgbWVhc3VyaW5nIHRvb2xzIGRldmlzZWQgdG8gYWlkIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBhIHByb3RvdHlwZSBjb21wdXRlciB1dGlsaXR5IGlzIGRpc2N1c3NlZC4gVGhlc2UgdG9vbHMgaW5jbHVkZSBzcGVjaWFsIGhhcmR3YXJlIGNsb2NrcyBhbmQgZGF0YSBjaGFubmVscywgZ2VuZXJhbCBwdXJwb3NlIHByb2dyYW1tZWQgcHJvYmluZyBhbmQgcmVjb3JkaW5nIHRvb2xzLCBhbmQgc3BlY2lhbGl6ZWQgbWVhc3VyZW1lbnQgZmFjaWxpdGllcy4gU29tZSBwYXJ0aWN1bGFyIG1lYXN1cmVtZW50cyBvZiBpbnRlcmVzdCBpbiBhIHN5c3RlbSB3aGljaCBjb21iaW5lcyBkZW1hbmQgcGFnaW5nIHdpdGggbXVsdGlwcm9ncmFtbWluZyBhcmUgZGVzY3JpYmVkIGluIGRldGFpbC4gTWVhc3VyaW5nIHRlY2huaXF1ZXMgZGVzY3JpYmVkIGhlcmUgaGF2ZSBiZWVuIGRpcmVjdGVkIHByaW1hcmlseSB0b3dhcmQgdW5kZXJzdGFuZGluZyB3aGF0IGdvZXMgb24gaW5zaWRlIHRoZSBvcGVyYXRpbmcgc3lzdGVtLCByYXRoZXIgdGhhbiBvbiBtZWFzdXJpbmcgYHRocm91Z2hwdXQnIHN5c3RlbSBjYXBhY2l0eSwgb3IgdGhlIGNoYXJhY3RlcmlzdGljcyBvZiBzeXN0ZW0gbG9hZC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGFubm90ZSA9ICAgICAgICJBbiBhcnJheSBvZiBtZWFzdXJpbmcgdG9vbHMgZGV2aXNlZCB0byBhaWQgaW4gdGhlIGltcGxlbWVudGF0aW9uIG9mIGEgcHJvdG90eXBlIGNvbXB1dGVyIHV0aWxpdHkgaXMgZGlzY3Vzc2VkLiBUaGVzZSB0b29scyBpbmNsdWRlICgxKSBhIGhhcmR3YXJlIGNhbGVuZGFyIGNsb2NrICg1MiBiaXQsIDEgbWljcm9zZWNvbmQgcmVzb2x1dGlvbikgYW5kIGFuIGFzc29jaWF0ZWQgbWF0Y2ggcmVnaXN0ZXI7ICgyKSBhIG1lbW9yeSByZWZlcmVuY2UgY291bnRlcjsgKDMpIGFuIGlucHV0L291dHB1dCBjaGFubmVsIHdoaWNoIGNhbiBiZSB1c2VkIGJ5IGFuIGF0dGFjaGVkIHByb2Nlc3NvciB0byByZWFkIG1lbW9yeTsgKDQpIGEgZ2VuZXJhbCBtZXRlcmluZyBwYWNrYWdlIHdoaWNoIHJlY29yZHMgdGltZSBzcGVudCBleGVjdXRpbmcgc2VsZWN0YWJsZSBzdXBlcnZpc29yIG1vZHVsZXMgd2hpbGUgdGhlIHN5c3RlbSBpcyBydW5uaW5nOyAoNSkgYSBzZWdtZW50IHV0aWxpemF0aW9uIG1ldGVyaW5nIGZhY2lsaXR5IHdoaWNoIHBlcmlvZGljYWxseSBwcm9iZXMgZm9yIHRoZSBjdXJyZW50IHNlZ21lbnQgbnVtYmVyOyAoNikgYSBmYWNpbGl0eSB3aGljaCByZWNvcmRzIG9uIGEgcGVyLXNlZ21lbnQgYmFzaXMgdGhlIG51bWJlciBvZiBtaXNzaW5nIHBhZ2VzIGFuZCBzZWdtZW50cyBlbmNvdW50ZXJlZCBkdXJpbmcgZXhlY3V0aW9uIGluIHRoYXQgc2VnbWVudDsgKDcpIGEgdG9vbCB3aGljaCBjb3VudHMgdGhlIG51bWJlciBvZiB0aW1lcyBwcm9jZWR1cmVzIGFyZSBjYWxsZWQ7ICg4KSBhIHNvZnR3YXJlIHBhY2thZ2UgaW1wbGVtZW50ZWQgb24gYSBQRFAtOCB3aGljaCB1dGlsaXplcyB0aGUgc3BlY2lhbCBJL08gY2hhbm5lbCAoMyk7ICg5KSB0aGUgQ0xJLCB3aGljaCBwcmludHMgb3V0IHRoZSB0aW1lIG9mIGRheSwgdGhlIENQVSB0aW1lLCBhbmQgdGhlIG51bWJlciBvZiB0aW1lcyB0aGUgcHJvY2VzcyBoYWQgdG8gd2FpdCBmb3IgYSBwYWdlIHRvIGJlIGJyb3VnaHQgaW4gYWZ0ZXIgZXZlcnkgYHJlYWR5IG1lc3NhZ2UnOyAoMTApIGEgcmluZyBidWZmZXIgY29udGFpbmluZyB0aGUgc2VnbWVudCwgcGFnZSBudW1iZXIsIGFuZCB0aW1lIG9mIGRheSBvZiB0aGUgbGFzdCAyNTYgbWlzc2luZyBwYWdlcyBvZiB0aGUgcHJvY2VzcyB1bmRlciBtZWFzdXJlbWVudDsgKDExKSBhIHBhY2thZ2UgdG8gbW9uaXRvciB0aGUgZWZmZWN0IG9mIHRoZSBzeXN0ZW0ncyBtdWx0aXByb2dyYW1taW5nIGVmZm9ydCBvZiBhbiBpbmRpdmlkdWFsIHByb2dyYW07ICgxMikgYSBzY3JpcHQgZHJpdmVyIGltcGxlbWVudGVkIG9uIGEgUERQLTg7IGFuZCAoMTMpIGFuIGludGVybmFsIHNjcmlwdCBkcml2ZXIuIiwKICBjbGFzc2NvZGVzID0gICAiQzYxNTBKIChPcGVyYXRpbmcgc3lzdGVtcykiLAogIGNvcnBzb3VyY2UgPSAgICJNSVQsIENhbWJyaWRnZSwgTUEsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJDQUNNQTsgY29tcHV0ZXJzOyBtdWx0aXByb2dyYW1taW5nIHN5c3RlbXM7IG9wZXJhdGluZyBkaXN0cmlidXRlZCBwZXJmb3JtYW5jZSBwYWdpbmcgQ0FDTTsgb3BlcmF0aW5nIHN5c3RlbXM7IG9wZXJhdGluZyBzeXN0ZW1zIChjb21wdXRlcnMpOyBwZXJmb3JtYW5jZSBtZWFzdXJlbWVudDsgc3lzdGVtIGFuYWx5c2lzIiwKfQoKQEFydGljbGV7SWNoYmlhaDoxOTcwOlRHQSwKICBhdXRob3IgPSAgICAgICAiSi4gRC4gSWNoYmlhaCBhbmQgUy4gUC4gTW9yc2UiLAogIHRpdGxlID0gICAgICAgICJBIHRlY2huaXF1ZSBmb3IgZ2VuZXJhdGluZyBhbG1vc3Qgb3B0aW1hbCB7RmxveWQtRXZhbnN9IHByb2R1Y3Rpb25zIGZvciBwcmVjZWRlbmNlIGdyYW1tYXJzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiOCIsCiAgcGFnZXMgPSAgICAgICAgIjUwMS0tNTA4IiwKICBtb250aCA9ICAgICAgICBhdWcsCiAgeWVhciA9ICAgICAgICAgIjE5NzAiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQyMTAgKEZvcm1hbCBsb2dpYykiLAogIGNvcnBzb3VyY2UgPSAgICJDby4gSW50ZXJuYXQuIGwnSW5mb3JtYXRpcXVlLCBMZXMgQ2xheWVzLXNvdXMtQm9pcywgRnJhbmNlIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0YXRpb25hbCBsaW5ndWlzdGljczsgZ3JhbW1hcnM7IG9wdGltaXNhdGlvbiIsCn0KCkBBcnRpY2xle0ZpZWxkaW5nOjE5NzA6QUFGLAogIGF1dGhvciA9ICAgICAgICJLLiBGaWVsZGluZyIsCiAgdGl0bGUgPSAgICAgICAgIntBQ019IEFsZ29yaXRobSAzODc6IEZ1bmN0aW9uIE1pbmltaXphdGlvbiBhbmQgTGluZWFyIFNlYXJjaCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjgiLAogIHBhZ2VzID0gICAgICAgICI1MDktLTUxMCIsCiAgbW9udGggPSAgICAgICAgYXVnLAogIHllYXIgPSAgICAgICAgICIxOTcwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM3MzAwIChOYXR1cmFsIHNjaWVuY2VzIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBFc3NleCwgV2l2ZW5ob2UgUGFyaywgQ29sY2hlc3RlciwgVUsiLAogIGtleXdvcmRzID0gICAgICJvcHRpbWlzYXRpb247IHN1YnJvdXRpbmVzIiwKfQoKQEFydGljbGV7SHVibmVyOjE5NzA6QUFSLAogIGF1dGhvciA9ICAgICAgICJILiBIe1wie3V9fWJuZXIgYW5kIEguIEtyZW1lciBhbmQgSy4gTy4gTGlubiBhbmQgVy4gU2Nod2VyaW5nIiwKICB0aXRsZSA9ICAgICAgICAie0FDTX0gQWxnb3JpdGhtIDM4ODoge1JhZGVtYWNoZXJ9IEZ1bmN0aW9uIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiOCIsCiAgcGFnZXMgPSAgICAgICAgIjUxMC0tNTExIiwKICBtb250aCA9ICAgICAgICBhdWcsCiAgeWVhciA9ICAgICAgICAgIjE5NzAiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzczMDAgKE5hdHVyYWwgc2NpZW5jZXMgY29tcHV0aW5nKSIsCiAga2V5d29yZHMgPSAgICAgIm1hdGhlbWF0aWNzOyBzdWJyb3V0aW5lcyIsCn0KCkBBcnRpY2xle0h1Ym5lcjoxOTcwOkFBQiwKICBhdXRob3IgPSAgICAgICAiSC4gSHtcInt1fX1ibmVyIGFuZCBILiBLcmVtZXIgYW5kIEsuIE8uIExpbm4gYW5kIFcuIFNjaHdlcmluZyIsCiAgdGl0bGUgPSAgICAgICAgIntBQ019IEFsZ29yaXRobSAzODk6IEJpbmFyeSBPcmRlcmVkIHtXYWxzaH0gRnVuY3Rpb25zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiOCIsCiAgcGFnZXMgPSAgICAgICAgIjUxMS0tNTExIiwKICBtb250aCA9ICAgICAgICBhdWcsCiAgeWVhciA9ICAgICAgICAgIjE5NzAiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzczMDAgKE5hdHVyYWwgc2NpZW5jZXMgY29tcHV0aW5nKSIsCiAga2V5d29yZHMgPSAgICAgIm1hdGhlbWF0aWNzOyBzdWJyb3V0aW5lcyIsCn0KCkBBcnRpY2xle0h1Ym5lcjoxOTcwOkFBUywKICBhdXRob3IgPSAgICAgICAiSC4gSHtcInt1fX1ibmVyIGFuZCBILiBLcmVtZXIgYW5kIEsuIE8uIExpbm4gYW5kIFcuIFNjaHdlcmluZyIsCiAgdGl0bGUgPSAgICAgICAgIntBQ019IEFsZ29yaXRobSAzOTA6IFNlcXVlbmN5IE9yZGVyZWQge1dhbHNofSBGdW5jdGlvbnMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTMiLAogIG51bWJlciA9ICAgICAgICI4IiwKICBwYWdlcyA9ICAgICAgICAiNTExLS01MTIgKG9yIDUxMS0tNTExPz8pIiwKICBtb250aCA9ICAgICAgICBhdWcsCiAgeWVhciA9ICAgICAgICAgIjE5NzAiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzczMDAgKE5hdHVyYWwgc2NpZW5jZXMgY29tcHV0aW5nKSIsCiAga2V5d29yZHMgPSAgICAgIm1hdGhlbWF0aWNzOyBzdWJyb3V0aW5lcyIsCn0KCkBBcnRpY2xle01jS2F5OjE5NzA6QUFVLAogIGF1dGhvciA9ICAgICAgICJKLiBNY0theSIsCiAgdGl0bGUgPSAgICAgICAgIntBQ019IEFsZ29yaXRobSAzOTE6IFVuaXRhcnkgU3ltbWV0cmljIFBvbHlub21pYWxzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiOCIsCiAgcGFnZXMgPSAgICAgICAgIjUxMi0tNTEyIiwKICBtb250aCA9ICAgICAgICBhdWcsCiAgeWVhciA9ICAgICAgICAgIjE5NzAiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzczMDAgKE5hdHVyYWwgc2NpZW5jZXMgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIkNhbGlmb3JuaWEgSW5zdC4gVGVjaG5vbC4sIFBhc2FkZW5hLCBDQSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAicG9seW5vbWlhbHM7IHN1YnJvdXRpbmVzIiwKfQoKQEFydGljbGV7QW5vbnltb3VzOjE5NzA6SVNVLAogIGF1dGhvciA9ICAgICAgICJBbm9ueW1vdXMiLAogIHRpdGxlID0gICAgICAgICJJZGVudGlmaWNhdGlvbiBvZiB7U3RhdGVzIG9mIHRoZSBVbml0ZWQgU3RhdGVzfSAoaW5jbHVkaW5nIHRoZSB7RGlzdHJpY3Qgb2YgQ29sdW1iaWF9KSBmb3IgaW5mb3JtYXRpb24gaW50ZXJjaGFuZ2UiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTMiLAogIG51bWJlciA9ICAgICAgICI4IiwKICBwYWdlcyA9ICAgICAgICAiNTE0LS01MTUiLAogIG1vbnRoID0gICAgICAgIGF1ZywKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKSIsCiAga2V5d29yZHMgPSAgICAgImNvZGUgc3RhbmRhcmRzIiwKfQoKQEFydGljbGV7Qm91a25pZ2h0OjE5NzA6UEdULAogIGF1dGhvciA9ICAgICAgICJXLiBKYWNrIEJvdWtuaWdodCIsCiAgdGl0bGUgPSAgICAgICAgIkEgUHJvY2VkdXJlIGZvciBHZW5lcmF0aW9uIG9mIFRocmVlLURpbWVuc2lvbmFsIEhhbGYtVG9uZWQgQ29tcHV0ZXIgR3JhcGhpY3MgUHJlc2VudGF0aW9ucyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjkiLAogIHBhZ2VzID0gICAgICAgICI1MjctLTUzNiIsCiAgbW9udGggPSAgICAgICAgc2VwLAogIHllYXIgPSAgICAgICAgICIxOTcwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9HcmFwaGljcy9zaWdncmFwaC9wcmU3NS5iaWIiLAogIGFic3RyYWN0ID0gICAgICJBIGRlc2NyaXB0aW9uIGlzIGdpdmVuIG9mIGFuIGFsZ29yaXRobSBmb3IgcHJvZHVjaW5nIGNvbXB1dGVyIGdlbmVyYXRlZCBoYWxmdG9uZSBwcmVzZW50YXRpb25zIG9mIHRocmVlLWRpbWVuc2lvbmFsIHBvbHlnb25hbCBzdXJmYWNlIHN0cnVjdHVyZXMuIFRoZSBoaXN0b3J5IGxlYWRpbmcgdG8gdGhlIGFsZ29yaXRobSBkZXZlbG9wbWVudCBhbmQgdGhlbiB0aGUgYWxnb3JpdGhtIGl0c2VsZiBhcmUgZGVzY3JpYmVkLiBSZXN1bHRzIGFyZSBwcmVzZW50ZWQgYW5kIGFyZSBjb21wYXJlZCB3aXRoIGNvbXB1dGVyIHJ1bnMgYWNoaWV2ZWQgYnkgdGhlIFdhcm5vY2sgYXBwcm9hY2guIEFuIGV4dGVuc2lvbiBvZiB0aGUgcHJvY2VkdXJlIHRvIHZhcmlhYmxlIHBvc2l0aW9uIGlsbHVtaW5hdGlvbiBzb3VyY2VzIGlzIGFsc28gZ2l2ZW4uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQxOTAgKE90aGVyIG51bWVyaWNhbCBtZXRob2RzKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIElsbGlub2lzLCBVcmJhbmEsIElMLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiQ0FDTUE7IGNvbXB1dGVyIGdyYXBoaWNzOyBjb21wdXRlcnM7IGhhbGYtdG9uZSBpbWFnZXM7IGhpZGRlbiBzdXJmYWNlOyBpbWFnZSBwcm9jZXNzaW5nIiwKfQoKQEFydGljbGV7QnJhY2NoaToxOTcwOklTUywKICBhdXRob3IgPSAgICAgICAiRy4gQnJhY2NoaSBhbmQgTS4gU29tYWx2aWNvIiwKICB0aXRsZSA9ICAgICAgICAiSW50ZXJhY3RpdmUgU29mdHdhcmUgU3lzdGVtIGZvciBDb21wdXRlci1BaWRlZCBEZXNpZ24uIGFuIEFwcGxpY2F0aW9uIHRvIENpcmN1aXQgUHJvamVjdCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjkiLAogIHBhZ2VzID0gICAgICAgICI1MzctLTU0NSIsCiAgbW9udGggPSAgICAgICAgc2VwLAogIHllYXIgPSAgICAgICAgICIxOTcwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkNoYXJhY3RlcmlzdGljcyBvZiBhbiBpbnRlcmFjdGl2ZSBzb2Z0d2FyZSBzeXN0ZW0sIGludGVuZGVkIHRvIGNvbnN0aXR1dGUgYW4gaW50ZXJmYWNlIGJldHdlZW4gZGVzaWduZXIgYW5kIGNvbXB1dGVyIGR1cmluZyB2YXJpb3VzIHN0ZXBzIG9mIHRoZSBkZXNpZ24gcHJvY2VzcywgYXJlIHByZXNlbnRlZC4gTWFpbiBlbXBoYXNpcyBpcyBnaXZlbiB0byB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIGZlYXR1cmVzIG9mIHRoZSB0d28gaGlnaCBsZXZlbCB1c2VyIG9yaWVudGVkIGxhbmd1YWdlcywgb3BlcmF0aW5nIGF0IGRpZmZlcmVudCBsZXZlbHMsIG9uIHdoaWNoIHRoZSBpbnRlcmFjdGlvbiBpcyBiYXNlZC4gVGhlIGZpcnN0IG9uZSBpcyBJTU9MLCBhbiBpbnRlcmFjdGl2ZSBtb25pdG9yIGxhbmd1YWdlLCB3aGljaCBpcyBkZXNpZ25lZCB0byBwZXJmb3JtIHRoZSBvdmVyYWxsIGFuZCBjb250cm9sIGZ1bmN0aW9ucyBvZiB0aGUgc29mdHdhcmUgc3lzdGVtLiBUaGUgc2Vjb25kIG9uZSBpcyBDT0lGLCBhIGNpcmN1aXQgb3JpZW50ZWQgZ3JhcGhpYyBsYW5ndWFnZSwgd2hpY2ggaXMgZGVzaWduZWQgdG8gZGVzY3JpYmUsIGdlbmVyYXRlLCBhbmQgbWFuaXB1bGF0ZSBncmFwaGljIHByb2JsZW0gc3BlY2lmaWNhdGlvbnMuIFRoZSBhcHBsaWNhdGlvbiB0byBjb21wdXRlci1haWRlZCBjaXJjdWl0IGRlc2lnbiBpcyBpbiBwYXJ0aWN1bGFyIGV4YW1pbmVkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkIxMTMwQiAoQ29tcHV0ZXItYWlkZWQgY2lyY3VpdCBhbmFseXNpcyBhbmQgZGVzaWduKTsgQzc0MTBEIChFbGVjdHJvbmljIGVuZ2luZWVyaW5nIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJQb2xpdGVjbmljbywgTWlsYW5vLCBJdGFseSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJDQUNNQTsgY29tcHV0ZXIgYWlkZWQgY2lyY3VpdCBkZXNpZ247IGNvbXB1dGVyLWFpZGVkIGNpcmN1aXQgZGVzaWduOyBjb21wdXRlcnM7IGNvbXB1dGVycywgZ3JhcGhpY3M7IGNvbXB1dGVycywgcHJvZ3JhbW1pbmc7IGVsZWN0cmljIGNpcmN1aXRzLCBhbmFseXNpczsgbGFuZ3VhZ2U7IG9ubGluZSBvcGVyYXRpb24iLAp9CgpAQXJ0aWNsZXtIaXJzY2hzb2huOjE5NzA6QUhMLAogIGF1dGhvciA9ICAgICAgICJJLiBIaXJzY2hzb2huIiwKICB0aXRsZSA9ICAgICAgICAie0FNRVNQTE9UfSwgYSBIaWdoZXIgTGV2ZWwgRGF0YSBQbG90dGluZyBTb2Z0d2FyZSBTeXN0ZW0iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTMiLAogIG51bWJlciA9ICAgICAgICI5IiwKICBwYWdlcyA9ICAgICAgICAiNTQ2LS01NTUiLAogIG1vbnRoID0gICAgICAgIHNlcCwKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJTeXN0ZW0gZGVzY3JpYmVkIGlzIGhhcmR3YXJlIGluZGVwZW5kZW50LiBFbGVtZW50cyBjb21tb24gdG8gYWxsIHR5cGVzIG9mIGRhdGEgcGxvdHMgYXJlIG91dGxpbmVkIGFuZCB0aGUgd2F5IGluIHdoaWNoIHRoZXNlIGVsZW1lbnRzIG1heSBiZSBjb21iaW5lZCBpbnRvIGEgc3lzdGVtIGJhc2VkIG9uIHNpbXBsZSBtb2R1bGVzIGlzIGRlbW9uc3RyYXRlZC4gQmFzaWMgc3ludGF4IG9mIEFNRVNQTE9UIGlzIG91dGxpbmVkLCBhbmQgYSBicmllZiBkZXNjcmlwdGlvbiBpcyBnaXZlbiBvZiBpdHMgY3VycmVudCB1dGlsaXR5IHNvZnR3YXJlLCBjb25zaXN0aW5nIG9mIGBtYWNyb3MnIHRvIHByb2R1Y2Ugc2VsZi1zY2FsZWQgcGxvdHMsIGZvcm1hbCB0YWJsZXRzIG9mIHRleHQsIGludGVyc3BlcnNlZCB3aXRoIHN1YnBsb3RzLCBtYXAgY29hc3RsaW5lcyBhbmQgMy1EIHBsb3RzLiBTdHJ1Y3R1cmluZyBvZiBwbG90cyBmcm9tIG11bHRpcGxlLCBpbmRlcGVuZGVudCwgc2VsZi1jb250YWluZWQgc3VicGxvdHMgaXMgZGVzY3JpYmVkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTQwRCAoSGlnaCBsZXZlbCBsYW5ndWFnZXMpIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gQ2FsaWZvcm5pYSwgU2FuIERpZWdvLCBMYSBKb2xsYSwgQ0EsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJDQUNNQTsgY29tcHV0ZXIgZ3JhcGhpY3M7IGNvbXB1dGVyczsgY29tcHV0ZXJzLCBsYW5ndWFnZTsgZGF0YSBwbG90dGluZzsgZ3JhcGhpY3M7IGludGVyYWN0aXZlIGNvbXB1dGluZzsgcHJvYmxlbSBvcmllbnRlZCBsYW5ndWFnZXMiLAp9CgpAQXJ0aWNsZXtNb2xlcjoxOTcwOklTUiwKICBhdXRob3IgPSAgICAgICAiQ2xldmUgQi4gTW9sZXIgYW5kIExvdWlzIFAuIFNvbG9tb24iLAogIHRpdGxlID0gICAgICAgICJJbnRlZ3JhdGluZyBTcXVhcmUgUm9vdHMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTMiLAogIG51bWJlciA9ICAgICAgICI5IiwKICBwYWdlcyA9ICAgICAgICAiNTU2LS01NTciLAogIG1vbnRoID0gICAgICAgIHNlcCwKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY1LjYwIiwKICBNUm51bWJlciA9ICAgICAiNDRcIzEyMjMiLAogIG1ycmV2aWV3ZXIgPSAgICJKLiBDLiBCdXRjaGVyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkRpZmZlcmVudGlhbCBlcXVhdGlvbiBvZiB0aGUgJCh5JyleMiA9IGYoeSkkIGFyZSBkaWZmaWN1bHQgdG8gaW50ZWdyYXRlIG51bWVyaWNhbGx5IGJlY2F1c2Ugb2YgdGhlIHNpbmd1bGFyaXR5IGF0IHBvaW50cyB3aGVyZSAkZih5KSQgdmFuaXNoZXMuIEEgdGVjaG5pcXVlIGlzIGRlc2NyaWJlZCBmb3IgcmVtb3ZpbmcgdGhlIHNpbmd1bGFyaXR5IGFuZCBldmFsdWF0aW5nIHRoZSBleHByZXNzaW9ucyB0aHJvdWdoIHRoZSB1c2Ugb2Ygc3RhbmRhcmQgbnVtZXJpY2FsIG1ldGhvZHMgZm9yIHNlY29uZCBvcmRlciBvcmRpbmFyeSBkaWZmZXJlbnRpYWwgZXF1YXRpb25zLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MTcwIChEaWZmZXJlbnRpYWwgZXF1YXRpb25zKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIE1pY2hpZ2FuLCBBbm4gQXJib3IsIE1JLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiQ0FDTUE7IGRpZmZlcmVudGlhbCBlcXVhdGlvbnM7IG1hdGhlbWF0aWNzOyBudW1lcmljYWwgbWV0aG9kczsgcXVhZHJhdHVyZTsgWSBGIiwKfQoKQEFydGljbGV7S2ltYmxlOjE5NzA6VkdMLAogIGF1dGhvciA9ICAgICAgICJHLiBXLiBLaW1ibGUiLAogIHRpdGxlID0gICAgICAgICJBIFZhcmlhdGlvbiBvZiB0aGUge0dvb2RtYW4tTGFuY2V9IE1ldGhvZCBmb3IgdGhlIFNvbHV0aW9uIG9mIFR3by1Qb2ludCBCb3VuZGFyeSBWYWx1ZSBQcm9ibGVtcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjkiLAogIHBhZ2VzID0gICAgICAgICI1NTctLTU1OCIsCiAgbW9udGggPSAgICAgICAgc2VwLAogIHllYXIgPSAgICAgICAgICIxOTcwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjUuNjIiLAogIE1SbnVtYmVyID0gICAgICI0NFwjMzUwMCIsCiAgbXJyZXZpZXdlciA9ICAgIkYuIE9kZWgiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiQSByZWNlbnRseSBwdWJsaXNoZWQgbWV0aG9kIGZvciB0aGUgaW50ZXJwb2xhdGl2ZSBzb2x1dGlvbiBvZiBub25saW5lYXIgZXF1YXRpb25zIGlzIGltcHJvdmVkLCBhbmQgYXBwbGllZCB0byBnaXZlIGEgc2lnbmlmaWNhbnQgdmFyaWF0aW9uIG9mIHRoZSBHb29kbWFuLUxhbmNlIG1ldGhvZCBmb3IgdGhlIHNvbHV0aW9uIG9mIHR3by1wb2ludCBib3VuZGFyeSB2YWx1ZSBwcm9ibGVtcy4gVGhlIHJlc3VsdGluZyBtZXRob2QgYXBwbGllcyBpbiBwYXJ0aWN1bGFyIHRvIHRoZSBudW1lcmljYWwgc29sdXRpb24gb2Ygb3B0aW1hbCBjb250cm9sIHByb2JsZW1zIGluIHRoZSBFdWxlci1MYWdyYW5nZSBmb3JtdWxhdGlvbi4gUXVhbnRpdGF0aXZlIGVzdGltYXRlcyBhcmUgcHJlc2VudGVkIHdoaWNoIGluZGljYXRlIHRoYXQgdGhlIHZhcmlhdGlvbiBpcyBuZWFybHkgdHdpY2UgYXMgZmFzdCBvbiBzb21lIHByb2JsZW1zIGluIHRoZSBsYXR0ZXIgY29udGV4dC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDE3MCAoRGlmZmVyZW50aWFsIGVxdWF0aW9ucykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBOZXZhZGEsIFJlbm8sIE5WLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYXV0b21hdGljIGNvbnRyb2w7IGJvdW5kYXJ5IHZhbHVlIHByb2JsZW1zOyBib3VuZGFyeS12YWx1ZSBwcm9ibGVtczsgQ0FDTUE7IGRpZmZlcmVudGlhbCBlcXVhdGlvbnM7IEdvb2RtYW4tTGFuY2U7IGludGVycG9sYXRpdmUgc29sdXRpb247IE5ld3RvbidzIG1ldGhvZDsgbm9ubGluZWFyIGVxdWF0aW9uczsgbnVtZXJpY2FsIG1ldGhvZHM7IG9wdGltYWwgY29udHJvbDsgb3B0aW1pemF0aW9uOyBvcmRpbmFyeSBkaWZmZXJlbnRpYWwgZXF1YXRpb25zOyBvcnRob2dvbmFsIG1hdHJpY2VzOyBzZWNhbnQgbWV0aG9kIiwKICBrZXl3b3JkcyA9ICAgICAiYm91bmRhcnktdmFsdWUgcHJvYmxlbXM7IGRpZmZlcmVudGlhbCBlcXVhdGlvbnMiLAp9CgpAQXJ0aWNsZXtXaWxzb246MTk3MDpPU0EsCiAgYXV0aG9yID0gICAgICAgIk0uIFdheW5lIFdpbHNvbiIsCiAgdGl0bGUgPSAgICAgICAgIk9wdGltYWwgU3RhcnRpbmcgQXBwcm94aW1hdGlvbnMgZm9yIEdlbmVyYXRpbmcgU3F1YXJlIFJvb3QgZm9yIFNsb3cgb3IgTm8gRGl2aWRlIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiOSIsCiAgcGFnZXMgPSAgICAgICAgIjU1OS0tNTYxIChvciA1NTktLTU2MD8/KSIsCiAgbW9udGggPSAgICAgICAgc2VwLAogIHllYXIgPSAgICAgICAgICIxOTcwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjUuNTAiLAogIE1SbnVtYmVyID0gICAgICI0NFwjMjMzOCIsCiAgbXJyZXZpZXdlciA9ICAgIkouIEUuIHtEZW5uaXMsIEpyLn0iLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBnYXJiby51d2FzYS5maTovcGMvZG9jLXNvZnQvZnBiaWJsaW8udHh0IiwKICBhYnN0cmFjdCA9ICAgICAiT24gY29tcHV0aW5nIG1hY2hpbmVzIHdpdGggc2xvdyBvciBubyBkaXZpc2lvbiwgaXQgaXMgcHJlZmVyYWJsZSB0byB1c2UgYW4gaXRlcmF0aXZlIHNjaGVtZSBmb3IgdGhlIHNxdWFyZSByb290IGRpZmZlcmVudCBmcm9tIHRoZSBjbGFzc2ljYWwgSGVyb24gc2NoZW1lLiBUaGUgcHJvYmxlbSBvZiBvcHRpbWFsIGluaXRpYWwgYXBwcm94aW1hbnRzIGlzIGNvbnNpZGVyZWQsIGFuZCBzb21lIG9wdGltYWwgcG9seW5vbWlhbCBpbml0aWFsIGFwcHJveGltYXRpb25zIGFyZSB0YWJ1bGF0ZWQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzUyMzAgKERpZ2l0YWwgYXJpdGhtZXRpYyBtZXRob2RzKSIsCiAgY29ycHNvdXJjZSA9ICAgIklCTSwgSG91c3RvbiwgVFgsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJDQUNNQTsgZGlnaXRhbCBhcml0aG1ldGljOyBlbGU7IGl0ZXJhdGl2ZSBtZXRob2RzOyBtYXRoZW1hdGljczsgbnVtZXJpY2FsIG1ldGhvZHM7IG9wdGltaXNhdGlvbiIsCn0KCkBBcnRpY2xle0VocmxpY2g6MTk3MDpDTUksCiAgYXV0aG9yID0gICAgICAgIkwuIFcuIEVocmxpY2giLAogIHRpdGxlID0gICAgICAgICJDb21wbGV4IE1hdHJpeCBJbnZlcnNpb24gVmVyc3VzIFJlYWwiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTMiLAogIG51bWJlciA9ICAgICAgICI5IiwKICBwYWdlcyA9ICAgICAgICAiNTYxLS01NjIiLAogIG1vbnRoID0gICAgICAgIHNlcCwKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY1LjM1IiwKICBNUm51bWJlciA9ICAgICAiNDRcIzExOTYiLAogIG1ycmV2aWV3ZXIgPSAgICJDLiBHLiBDdWxsZW4iLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiQSBjb21wYXJpc29uIG9mIGNvbXBsZXggbWF0cml4IHdpdGggcmVhbCBtYXRyaXggaW52ZXJzaW9uIGlzIG1hZGUuIEl0IGlzIHNob3duIHRoYXQgdGhlIGNvbXBsZXggaW52ZXJzaW9uIGNhbiBiZSB1cCB0byB0d2ljZSBhcyBmYXN0IGFzIHRoZSByZWFsIGludmVyc2lvbi4gRnVydGhlciwgdGhlIHJvdW5kaW5nIGVycm9yIGJvdW5kIGZvciBjb21wbGV4IGludmVyc2lvbiBpcyBhYm91dCBvbmUtZWlnaHRoIHRoYXQgb2YgcmVhbCwgZm9yIEdhdXNzaWFuIGVsaW1pbmF0aW9uLiBVc2luZyBleHRlbmRlZCBpbm5lciBwcm9kdWN0IGFjY3VtdWxhdGlvbiB0aGUgYm91bmQgaXMgaGFsZiBvZiB0aGUgcmVhbCBzeXN0ZW0uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQxNDAgKExpbmVhciBhbGdlYnJhKSIsCiAgY29ycHNvdXJjZSA9ICAgIkpvaG5zIEhvcGtpbnMgVW5pdi4sIFNpbHZlciBTcHJpbmcsIE1ELCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiQ0FDTUE7IGNvbXBsZXggbWF0cml4IGludmVyc2lvbjsgY29tcGxleCByb3VuZGluZyBlcnJvciBib3VuZHM7IGVycm9yIGJvdW5kczsgR1VMOyBpbnZlcnNpb247IG1hdGhlbWF0aWNzOyBtYXRyaXggYWxnZWJyYTsgbWF0cml4IGludmVyc2lvbjsgbnVtZXJpY2FsIG1ldGhvZHM7IHJvdW5kaW5nIGVycm9yIGJvdW5kOyByb3VuZGluZyBlcnJvcnMiLAp9CgpAQXJ0aWNsZXt2YW5FbWRlbjoxOTcwOklFUSwKICBhdXRob3IgPSAgICAgICAiTS4gSC4ge3ZhbiBFbWRlbn0iLAogIHRpdGxlID0gICAgICAgICJJbmNyZWFzaW5nIHRoZSBFZmZpY2llbmN5IG9mIFF1aWNrc29ydCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjkiLAogIHBhZ2VzID0gICAgICAgICI1NjMtLTU2NyAob3IgNTYzLS01NjY/PykiLAogIG1vbnRoID0gICAgICAgIHNlcCwKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJUaGUgYXZlcmFnZSBhc3ltcHRvdGljIG51bWJlciBvZiBjb21wYXJpc29ucyBuZWVkZWQgaXMgc2hvd24gdG8gYmUgJCEgbiBsb2dfMiAobikkLiBBIGZvcm11bGEgaXMgZGVyaXZlZCBleHByZXNzaW5nICQhJCBpbiB0ZXJtcyBvZiB0aGUgcHJvYmFiaWxpdHkgZGlzdHJpYnV0aW9uIG9mIHRoZSBgYm91bmQnIG9mIGEgcGFydGl0aW9uLiBBbm90aGVyIGdlbmVyYWxpemF0aW9uIG9mIHF1aWNrc29ydCBpcyBwcmVzZW50ZWQgd2hpY2ggdXNlcyBhIGJvdW5kaW5nIGludGVydmFsIGluc3RlYWQgb2YgYSBzaW5nbGUgZWxlbWVudCBhcyBib3VuZC4gVGhpcyBnZW5lcmFsaXphdGlvbiB0dXJucyBvdXQgdG8gYmUgZWFzeSB0byBpbXBsZW1lbnQgaW4gYSBjb21wdXRlciBwcm9ncmFtLiBBIG51bWVyaWNhbCBhcHByb3hpbWF0aW9uIHNob3dzIHRoYXQgJCEkIGVxdWFscyAxLjE0MCBmb3IgdGhpcyB2ZXJzaW9uIG9mIHF1aWNrc29ydCBjb21wYXJlZCB3aXRoIDEuMzg2IGZvciB0aGUgb3JpZ2luYWwuIFRoaXMgaW1wbGllcyBhIGRlY3JlYXNlIGluIG51bWJlciBvZiBjb21wYXJpc29ucyBvZiAxOFwlOyBhY3R1YWwgdGVzdHMgc2hvd2VkIGFib3V0IDE1XCUgc2F2aW5nIGluIGNvbXB1dGluZyB0aW1lLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTMwIChEYXRhIGhhbmRsaW5nIHRlY2huaXF1ZXMpIiwKICBjb3Jwc291cmNlID0gICAiTWF0aC4gQ2VudHJlLCBBbXN0ZXJkYW0sIE5ldGhlcmxhbmRzIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgIkNBQ01BOyBjb21wdXRlcnM7IHByb2dyYW1taW5nOyBTQUw7IHNvcnRpbmciLAp9CgpAQXJ0aWNsZXtTbWl0aDoxOTcwOkFBUywKICBhdXRob3IgPSAgICAgICAiUm9iZXJ0IFIuIFNtaXRoIGFuZCBEZW5uaXMgTWNDYWxsIiwKICB0aXRsZSA9ICAgICAgICAie0FDTX0gQWxnb3JpdGhtIDM5MjogU3lzdGVtcyBvZiBIeXBlcmJvbGljIHtQLkQuRS59IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiOSIsCiAgcGFnZXMgPSAgICAgICAgIjU2Ny0tNTcwIiwKICBtb250aCA9ICAgICAgICBzZXAsCiAgeWVhciA9ICAgICAgICAgIjE5NzAiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQxNzAgKERpZmZlcmVudGlhbCBlcXVhdGlvbnMpOyBDNzMxMCAoTWF0aGVtYXRpY3MgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVTIE5hdmFsIEVsZWN0cm9uaWNzIExhYi4gQ2VudGVyLCBTYW4gRGllZ28sIENBLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJib3VuZGFyeS12YWx1ZSBwcm9ibGVtczsgcGFydGlhbCBkaWZmZXJlbnRpYWwgZXF1YXRpb25zIiwKfQoKQEFydGljbGV7QWJkYWxpOjE5NzA6QUFTLAogIGF1dGhvciA9ICAgICAgICJTLiBLLiBBYmRhbGkiLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gMzkzOiBTcGVjaWFsIFNlcmllcyBTdW1tYXRpb24gd2l0aCBBcmJpdHJhcnkgUHJlY2lzaW9uIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiOSIsCiAgcGFnZXMgPSAgICAgICAgIjU3MC0tNTcwIiwKICBtb250aCA9ICAgICAgICBzZXAsCiAgeWVhciA9ICAgICAgICAgIjE5NzAiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQxMjAgKEZ1bmN0aW9uYWwgYW5hbHlzaXMpOyBDNzMxMCAoTWF0aGVtYXRpY3MgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIFdpc2NvbnNpbiwgTWFkaXNvbiwgV0ksIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImZ1bmN0aW9uIGFwcHJveGltYXRpb247IGZ1bmN0aW9uIGV2YWx1YXRpb247IHN1YnJvdXRpbmVzIiwKfQoKQEFydGljbGV7RGlhbDoxOTcwOkFBRCwKICBhdXRob3IgPSAgICAgICAiUi4gQi4gRGlhbCIsCiAgdGl0bGUgPSAgICAgICAgIntBQ019IEFsZ29yaXRobSAzOTQ6IERlY2lzaW9uIFRhYmxlIFRyYW5zbGF0aW9uIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiOSIsCiAgcGFnZXMgPSAgICAgICAgIjU3MS0tNTczIChvciA1NzEtLTU3Mj8/KSIsCiAgbW9udGggPSAgICAgICAgc2VwLAogIHllYXIgPSAgICAgICAgICIxOTcwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTUwQyAoQ29tcGlsZXJzLCBpbnRlcnByZXRlcnMgYW5kIG90aGVyIHByb2Nlc3NvcnMpIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gV2FzaGluZ3RvbiwgU2VhdHRsZSwgV0EsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImRlY2lzaW9uIHRhYmxlczsgcHJvZ3JhbSBpbnRlcnByZXRlcnM7IHN1YnJvdXRpbmVzIiwKfQoKQEFydGljbGV7TGFtcG9ydDoxOTcwOkNCUSwKICBhdXRob3IgPSAgICAgICAiTGVzbGllIExhbXBvcnQgYW5kIEouIFIuIEJlbGwiLAogIHRpdGxlID0gICAgICAgICJDb21tZW50IG9uIHtCZWxsfSdzIFF1YWRyYXRpYyBRdW90aWVudCBNZXRob2QgZm9yIEhhc2ggQ29kZSBTZWFyY2hpbmciLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTMiLAogIG51bWJlciA9ICAgICAgICI5IiwKICBwYWdlcyA9ICAgICAgICAiNTczLS01NzQiLAogIG1vbnRoID0gICAgICAgIHNlcCwKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKSIsCiAga2V5d29yZHMgPSAgICAgImNvZGVzOyBkYXRhIGhhbmRsaW5nIiwKfQoKQEFydGljbGV7QmF2ZWw6MTk3MDpOQVMsCiAgYXV0aG9yID0gICAgICAgIlouIEJhdmVsIiwKICB0aXRsZSA9ICAgICAgICAiT24gdGhlIE51bWJlciBvZiBBdXRvbW9ycGhpc21zIG9mIGEgU2luZ2x5IEdlbmVyYXRlZCBBdXRvbWF0b24iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTMiLAogIG51bWJlciA9ICAgICAgICI5IiwKICBwYWdlcyA9ICAgICAgICAiNTc0LS01NzUiLAogIG1vbnRoID0gICAgICAgIHNlcCwKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDIyMCAoQXV0b21hdGEgdGhlb3J5KSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIEthbnNhcywgTGF3cmVuY2UsIEtTLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJhdXRvbWF0YTsgYXV0b21vcnBoaXNtczsgZmluaXRlIGF1dG9tYXRhOyBnZW5lcmF0b3JzOyBsZW5ndGggb2Ygc3RhdGU7IG1pbmltYWwtbGVuZ3RoIGdlbmVyYXRvcnM7IG9yYml0OyBzaW5nbHkgZ2VuZXJhdGVkIGF1dG9tYXRhIiwKfQoKQEFydGljbGV7V29vZHM6MTk3MDpUTkcsCiAgYXV0aG9yID0gICAgICAgIlcuIEEuIFdvb2RzIiwKICB0aXRsZSA9ICAgICAgICAiVHJhbnNpdGlvbiBOZXR3b3JrIEdyYW1tYXJzIGZvciBOYXR1cmFsIExhbmd1YWdlIEFuYWx5c2lzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiMTAiLAogIHBhZ2VzID0gICAgICAgICI1OTEtLTYwNiIsCiAgbW9udGggPSAgICAgICAgb2N0LAogIHllYXIgPSAgICAgICAgICIxOTcwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgImZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGF0YWJhc2UvR3JhZWZlLmJpYiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MjEwIChGb3JtYWwgbG9naWMpOyBDNzgyMCAoSHVtYW5pdGllcyBjb21wdXRpbmcpIiwKICBjb3Jwc291cmNlID0gICAiSGFydmFyZCBVbml2LiwgQ2FtYnJpZGdlLCBNQSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiZ3JhbW1hcnM7IGxhbmd1YWdlIHRyYW5zbGF0aW9uIGFuZCBsaW5ndWlzdGljcyIsCn0KCkBBcnRpY2xle0VhcmxleToxOTcwOkZUSSwKICBhdXRob3IgPSAgICAgICAiSi4gRWFybGV5IGFuZCBILiBTdHVyZ2lzIiwKICB0aXRsZSA9ICAgICAgICAiQSBmb3JtYWxpc20gZm9yIHRyYW5zbGF0b3IgaW50ZXJhY3Rpb25zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiMTAiLAogIHBhZ2VzID0gICAgICAgICI2MDctLTYxNyIsCiAgbW9udGggPSAgICAgICAgb2N0LAogIHllYXIgPSAgICAgICAgICIxOTcwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkEgZm9ybWFsaXNtIGlzIHByZXNlbnRlZCBmb3IgZGVzY3JpYmluZyB0aGUgYWN0aW9ucyBvZiBwcm9jZXNzb3JzIGZvciBwcm9ncmFtbWluZyBsYW5ndWFnZXMtY29tcGlsZXJzLCBpbnRlcnByZXRlcnMsIGFzc2VtYmxlcnMtYW5kIHRoZWlyIGludGVyYWN0aW9ucyBpbiBjb21wbGV4IHN5c3RlbXMgc3VjaCBhcyBjb21waWxlci1jb21waWxlcnMgb3IgZXh0ZW5kaWJsZSBsYW5ndWFnZXMuIEFuIGFsZ29yaXRobSBpcyBwcmVzZW50ZWQgZm9yIGRlY2lkaW5nIHdoZXRoZXIgb3Igbm90IGEgZ2l2ZW4gc3lzdGVtIGNhbiBiZSBwcm9kdWNlZCBmcm9tIGEgZ2l2ZW4gc2V0IG9mIGNvbXBvbmVudCBwcm9jZXNzb3JzLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MjEwIChGb3JtYWwgbG9naWMpOyBDNjE1MEMgKENvbXBpbGVycywgaW50ZXJwcmV0ZXJzIGFuZCBvdGhlciBwcm9jZXNzb3JzKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIENhbGlmb3JuaWEsIEJlcmtlbGV5LCBDQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgIkNBQ01BOyBjb21waWxlcnM7IGNvbXB1dGF0aW9uYWwgbGluZ3Vpc3RpY3M7IGNvbXB1dGVyLCBkaWdpdGFsOyBjb21wdXRlcnMsIGRpZ2l0YWwsIGxhbmd1YWdlczsgY29tcHV0ZXJzLCBkaWdpdGFsLCBvcGVyYXRpbmc7IHByZTsgcHJvZ3JhbTsgcHJvZ3JhbSBhc3NlbWJsZXJzOyBwcm9ncmFtIGludGVycHJldGVyczsgcHJvZ3JhbSBwcm9jZXNzb3JzOyBwcm9ncmFtbWluZyBsYW5ndWFnZXMiLAp9CgpAQXJ0aWNsZXtIaWxsOjE5NzA6QUFTYSwKICBhdXRob3IgPSAgICAgICAiRy4gVy4gSGlsbCIsCiAgdGl0bGUgPSAgICAgICAgIntBQ019IEFsZ29yaXRobSAzOTU6IHtTdHVkZW50fSdzICR0JC1EaXN0cmlidXRpb24iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTMiLAogIG51bWJlciA9ICAgICAgICIxMCIsCiAgcGFnZXMgPSAgICAgICAgIjYxNy0tNjE5IiwKICBtb250aCA9ICAgICAgICBvY3QsCiAgeWVhciA9ICAgICAgICAgIjE5NzAiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBub3RlID0gICAgICAgICAiU2VlIGFsc28gXGNpdGV7TG96eToxOTc5OlJTRCxIaWxsOjE5ODE6UlNEfS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNzMxMCAoTWF0aGVtYXRpY3MgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIkNTSVJPLCBHbGVuIE9zbW9uZCwgQXVzdHJhbGlhIiwKICBrZXl3b3JkcyA9ICAgICAic3RhdGlzdGljczsgc3Vicm91dGluZXMiLAp9CgpAQXJ0aWNsZXtIaWxsOjE5NzA6QUFTYiwKICBhdXRob3IgPSAgICAgICAiRy4gVy4gSGlsbCIsCiAgdGl0bGUgPSAgICAgICAgIntBQ019IEFsZ29yaXRobSAzOTY6IHtTdHVkZW50fSdzICR0JC1RdWFudGlsZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTMiLAogIG51bWJlciA9ICAgICAgICIxMCIsCiAgcGFnZXMgPSAgICAgICAgIjYxOS0tNjIwIiwKICBtb250aCA9ICAgICAgICBvY3QsCiAgeWVhciA9ICAgICAgICAgIjE5NzAiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBub3RlID0gICAgICAgICAiU2VlIGFsc28gXGNpdGV7SGlsbDoxOTgxOlJTUX0uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQxMjAgKEZ1bmN0aW9uYWwgYW5hbHlzaXMpOyBDNzMxMCAoTWF0aGVtYXRpY3MgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIkNTSVJPLCBHbGVuIE9zbW9uZCwgQXVzdHJhbGlhIiwKICBrZXl3b3JkcyA9ICAgICAiZnVuY3Rpb24gZXZhbHVhdGlvbjsgc3RhdGlzdGljczsgc3Vicm91dGluZXMiLAp9CgpAQXJ0aWNsZXtDaGFuZzoxOTcwOkFBSSwKICBhdXRob3IgPSAgICAgICAiUy4gSy4gQ2hhbmcgYW5kIEEuIEdpbGwiLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gMzk3OiBBbiBJbnRlZ2VyIFByb2dyYW1taW5nIFByb2JsZW0iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTMiLAogIG51bWJlciA9ICAgICAgICIxMCIsCiAgcGFnZXMgPSAgICAgICAgIjYyMC0tNjIxIiwKICBtb250aCA9ICAgICAgICBvY3QsCiAgeWVhciA9ICAgICAgICAgIjE5NzAiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzczMTAgKE1hdGhlbWF0aWNzIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBDYWxpZm9ybmlhLCBCZXJrZWxleSwgQ0EsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImludGVnZXIgcHJvZ3JhbW1pbmc7IHN1YnJvdXRpbmVzIiwKfQoKQEFydGljbGV7U3RvbmU6MTk3MDpBQVQsCiAgYXV0aG9yID0gICAgICAgIlIuIEEuIFN0b25lIiwKICB0aXRsZSA9ICAgICAgICAie0FDTX0gQWxnb3JpdGhtIDM5ODogVGFibGVsZXNzIERhdGUgQ29udmVyc2lvbiIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjEwIiwKICBwYWdlcyA9ICAgICAgICAiNjIxLS02MjEiLAogIG1vbnRoID0gICAgICAgIG9jdCwKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKSIsCiAgY29ycHNvdXJjZSA9ICAgIldlc3Rlcm4gRWxlY3RyaWMgQ28uLCBQcmluY2V0b24sIE5KLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJjb2RlIGNvbnZlcnRvcnM7IHN1YnJvdXRpbmVzIiwKfQoKQEFydGljbGV7U2VwcGFuZW46MTk3MDpBQVMsCiAgYXV0aG9yID0gICAgICAgIkouIEouIFNlcHB7XCJ7YX19bmVuIiwKICB0aXRsZSA9ICAgICAgICAie0FDTX0gQWxnb3JpdGhtIDM5OTogU3Bhbm5pbmcgVHJlZSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjEwIiwKICBwYWdlcyA9ICAgICAgICAiNjIxLS02MjIiLAogIG1vbnRoID0gICAgICAgIG9jdCwKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNzMxMCAoTWF0aGVtYXRpY3MgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIkhlbHNpbmtpIFVuaXYuIFRlY2hub2wuLCBPdGFuaWVtaSwgRmlubGFuZCIsCiAga2V5d29yZHMgPSAgICAgImdyYXBoIHRoZW9yeTsgc3Vicm91dGluZXM7IHRyZWVzIChtYXRoZW1hdGljcykiLAp9CgpAQXJ0aWNsZXtXYWxsaWNrOjE5NzA6QUFNLAogIGF1dGhvciA9ICAgICAgICJHLiBDLiBXYWxsaWNrIiwKICB0aXRsZSA9ICAgICAgICAie0FDTX0gQWxnb3JpdGhtIDQwMDogTW9kaWZpZWQge0hhdmllfSBJbnRlZ3JhdGlvbiIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjEwIiwKICBwYWdlcyA9ICAgICAgICAiNjIyLS02MjQiLAogIG1vbnRoID0gICAgICAgIG9jdCwKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDE2MCAoTnVtZXJpY2FsIGludGVncmF0aW9uIGFuZCBkaWZmZXJlbnRpYXRpb24pOyBDNzMxMCAoTWF0aGVtYXRpY3MgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIk1vYmlsIFJlcy4gRGV2LiBDb3JwLiwgRGFsbGFzLCBUWCwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiaW50ZWdyYXRpb247IHN1YnJvdXRpbmVzIiwKfQoKQEFydGljbGV7UGV0bzoxOTcwOlJBTSwKICBhdXRob3IgPSAgICAgICAiUi4gUGV0byIsCiAgdGl0bGUgPSAgICAgICAgIlJlbWFyayBvbiB7YGBBbGdvcml0aG0gMzQ3IFtNMV06IEFuIEVmZmljaWVudCBBbGdvcml0aG0gZm9yIFNvcnRpbmcgd2l0aCBNaW5pbWFsIFN0b3JhZ2UnJ30iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTMiLAogIG51bWJlciA9ICAgICAgICIxMCIsCiAgcGFnZXMgPSAgICAgICAgIjYyNCIsCiAgbW9udGggPSAgICAgICAgb2N0LAogIHllYXIgPSAgICAgICAgICIxOTcwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1heSAyOCAwOToyMzo1NyAxOTk2IiwKICBrZXl3b3JkcyA9ICAgICAiZGlnaXRhbCBjb21wdXRlciBzb3J0aW5nOyBtaW5pbWFsIHN0b3JhZ2Ugc29ydGluZzsgcmFua2luZzsgc29ydGluZyIsCn0KCkBBcnRpY2xle1NtaXRoOjE5NzA6VUlHLAogIGF1dGhvciA9ICAgICAgICJMLiBCLiBTbWl0aCIsCiAgdGl0bGUgPSAgICAgICAgIlRoZSB1c2Ugb2YgaW50ZXJhY3RpdmUgZ3JhcGhpY3MgdG8gc29sdmUgbnVtZXJpY2FsIHByb2JsZW1zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiMTAiLAogIHBhZ2VzID0gICAgICAgICI2MjUtLTYzNCIsCiAgbW9udGggPSAgICAgICAgb2N0LAogIHllYXIgPSAgICAgICAgICIxOTcwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MTMwIChJbnRlcnBvbGF0aW9uIGFuZCBmdW5jdGlvbiBhcHByb3hpbWF0aW9uKTsgQzczMTAgKE1hdGhlbWF0aWNzIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJDRVJOLCBHZW5ldmEsIFN3aXR6ZXJsYW5kIiwKICBrZXl3b3JkcyA9ICAgICAiYW5hbHlzaXM7IGNvbXB1dGVyIGdyYXBoaWNzOyBsZWFzdCBzcXVhcmVzIGFwcHJveGltYXRpb25zOyBudW1lcmljYWw7IG9ubGluZSBvcGVyYXRpb24iLAp9CgpAQXJ0aWNsZXtMYUZhdGE6MTk3MDpJREEsCiAgYXV0aG9yID0gICAgICAgIlAuIExhRmF0YSBhbmQgSi4gQi4gUm9zZW4iLAogIHRpdGxlID0gICAgICAgICJBbiBpbnRlcmFjdGl2ZSBkaXNwbGF5IGZvciBhcHByb3hpbWF0aW9uIGJ5IGxpbmVhciBwcm9ncmFtbWluZyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjExIiwKICBwYWdlcyA9ICAgICAgICAiNjUxLS02NTkiLAogIG1vbnRoID0gICAgICAgIG5vdiwKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4LjAwICg5MC4wMCkiLAogIE1SbnVtYmVyID0gICAgICI0MlwjMjcxMiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFic3RyYWN0ID0gICAgICJBbiBpbnRlcmFjdGl2ZSBwcm9ncmFtIHdpdGggYSBncmFwaGljYWwgZGlzcGxheSBoYXMgYmVlbiBkZXZlbG9wZWQgZm9yIHRoZSBhcHByb3hpbWF0aW9uIG9mIGRhdGEgYnkgbWVhbnMgb2YgYSBsaW5lYXIgY29tYmluYXRpb24gb2YgZnVuY3Rpb25zIChpbmNsdWRpbmcgc3BsaW5lcykgc2VsZWN0ZWQgYnkgdGhlIHVzZXIuIFRoZSBjb2VmZmljaWVudHMgb2YgdGhlIGFwcHJveGltYXRpb24gYXJlIGRldGVybWluZWQgYnkgbGluZWFyIHByb2dyYW1taW5nIHNvIGFzIHRvIG1pbmltaXplIHRoZSBlcnJvciBpbiBlaXRoZXIgdGhlIEwxIG9yIEwtaW5maW5pdHkgbm9ybS4gQXV4aWxpYXJ5IGNvbmRpdGlvbnMgc3VjaCBhcyBtb25vdG9uaWNpdHkgb3IgY29udmV4aXR5IG9mIHRoZSBhcHByb3hpbWF0aW9uIGNhbiBhbHNvIGJlIGltcG9zZWQuIFRoaXMgaW50ZXJhY3RpdmUgc3lzdGVtIGlzIGRlc2NyaWJlZCBhbmQgc2V2ZXJhbCBleGFtcGxlcyBvZiBpdHMgdXNlIGFyZSBnaXZlbi4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDEzMCAoSW50ZXJwb2xhdGlvbiBhbmQgZnVuY3Rpb24gYXBwcm94aW1hdGlvbik7IEM3MzEwIChNYXRoZW1hdGljcyBjb21wdXRpbmcpIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gV2lzY29uc2luLCBNYWRpc29uLCBXSSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiYXBwcm94aW1hdGlvbjsgZGF0YSBmaXR0aW5nOyBmdW5jdGlvbiBhcHByb3hpbWF0aW9uOyBmdW5jdGlvbmFsIGFwcHJveGltYXRpb247IGludGVyYWN0aXZlIGdyYXBoaWNhbCBkaXNwbGF5OyBsaW5lYXIgcHJvZ3JhbW1pbmc7IG9ubGluZSBvcGVyYXRpb247IHNwbGluZSBmdW5jdGlvbnMiLAp9CgpAQXJ0aWNsZXtMdW06MTk3MDpNUkMsCiAgYXV0aG9yID0gICAgICAgIlYuIFkuIEx1bSIsCiAgdGl0bGUgPSAgICAgICAgIk11bHRpLWF0dHJpYnV0ZSByZXRyaWV2YWwgd2l0aCBjb21iaW5lZCBpbmRleGVzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiMTEiLAogIHBhZ2VzID0gICAgICAgICI2NjAtLTY2NSIsCiAgbW9udGggPSAgICAgICAgbm92LAogIHllYXIgPSAgICAgICAgICIxOTcwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbik7IEM3MjUwIChJbmZvcm1hdGlvbiBzdG9yYWdlIGFuZCByZXRyaWV2YWwpIiwKICBjb3Jwc291cmNlID0gICAiSUJNLCBTYW4gSm9zZSwgQ0EsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImZpbGUgb3JnYW5pc2F0aW9uOyBpbmZvcm1hdGlvbiByZXRyaWV2YWwiLAp9CgpAQXJ0aWNsZXtNaWZzdWQ6MTk3MDpNREEsCiAgYXV0aG9yID0gICAgICAgIkMuIEouIE1pZnN1ZCIsCiAgdGl0bGUgPSAgICAgICAgIkEgbXVsdGlwbGUtcHJlY2lzaW9uIGRpdmlzaW9uIGFsZ29yaXRobSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjExIiwKICBwYWdlcyA9ICAgICAgICAiNjY2LS02NjgiLAogIG1vbnRoID0gICAgICAgIG5vdiwKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNTIzMCAoRGlnaXRhbCBhcml0aG1ldGljIG1ldGhvZHMpIiwKICBjb3Jwc291cmNlID0gICAiTWl0cmUgQ29ycC4sIE1jTGVhbiwgVkEsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImRpZ2l0YWwgYXJpdGhtZXRpYyIsCn0KCkBBcnRpY2xle0NvbnJvdzoxOTcwOk5QUywKICBhdXRob3IgPSAgICAgICAiSy4gQ29ucm93IGFuZCBSLiBHLiBTbWl0aCIsCiAgdGl0bGUgPSAgICAgICAgIntORUFURVIyfToge0EgUEwvSX0gU291cmNlIFN0YXRlbWVudCBSZWZvcm1hdHRlciIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjExIiwKICBwYWdlcyA9ICAgICAgICAiNjY5LS02NzUiLAogIG1vbnRoID0gICAgICAgIG5vdiwKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFic3RyYWN0ID0gICAgICJORUFURVIyIGFjY2VwdHMgYSBQTC9JIHNvdXJjZSBwcm9ncmFtIGFuZCBvcGVyYXRlcyBvbiBpdCB0byBwcm9kdWNlIGEgcmVmb3JtYXR0ZWQgdmVyc2lvbi4gV2hlbiBpbiB0aGUgTE9HSUNBTCBtb2RlLCBORUFURVIyIGluZGljYXRlcyB0aGUgbG9naWNhbCBzdHJ1Y3R1cmUgb2YgdGhlIHNvdXJjZSBwcm9ncmFtIGluIHRoZSBpbmRlbnRhdGlvbiBwYXR0ZXJuIG9mIGl0cyBvdXRwdXQuIExvZ2ljIGVycm9ycyBkaXNjb3ZlcmVkIHRocm91Z2ggTkVBVEVSMiBsb2dpY2FsIGFuYWx5c2lzIGFyZSBkaXNjb3ZlcmVkIG11Y2ggbW9yZSBlY29ub21pY2FsbHkgdGhhbiBpcyBwb3NzaWJsZSB0aHJvdWdoIGNvbXBpbGF0aW9uIGFuZCB0cmlhbCBydW5zLiBBIG51bWJlciBvZiBvcHRpb25zIGFyZSBhdmFpbGFibGUgdG8gZ2l2ZSB0aGUgdXNlciBmdWxsIGNvbnRyb2wgb3ZlciB0aGUgb3V0cHV0IGZvcm1hdCBhbmQgdG8gbWF4aW1pemUgdGhlIHV0aWxpdHkgb2YgTkVBVEVSMiBhcyBhbiBhaWQgZHVyaW5nIHRoZSBlYXJseSBzdGFnZXMgb2YgZGV2ZWxvcG1lbnQgb2YgYSBQTC9JIHNvdXJjZSBkZWNrLiBPbmUgb3B0aW9uLCBVU0FHRSwgY2F1c2VzIE5FQVRFUjIgdG8gaW5zZXJ0IGludG8gZWFjaCBsb2dpY2FsIHVuaXQgb2YgY29kaW5nIGEgc3RhdGVtZW50IHdoaWNoIHdpbGwgY2FzZSB0aGUgbnVtYmVyIG9mIHRpbWVzIGVhY2ggb25lIGlzIGV4ZWN1dGVkIHRvIGJlIHJlY29yZGVkIGR1cmluZyBleGVjdXRpb24uIFRoaXMgZmVhdHVyZSBpcyBleHBlY3RlZCB0byBwcm92aWRlIGEgbWFqb3IgYWlkIGluIG9wdGltaXphdGlvbiBvZiBQTC9JIHByb2dyYW1zLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTUwQyAoQ29tcGlsZXJzLCBpbnRlcnByZXRlcnMgYW5kIG90aGVyIHByb2Nlc3NvcnMpIiwKICBjb3Jwc291cmNlID0gICAiS2Fuc2FzIFN0YXRlIFVuaXYuLCBNYW5oYXR0YW4sIEtTLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJkb2N1bWVudGF0aW9uIGFpZDsgZXhlY3V0aW9uIHRpbWUgdXNhZ2UgZGF0YTsgbG9naWNhbCBhbmFseXNpcyBvZiBQTC9JIHNvdXJjZTsgb3B0aW1pc2F0aW9uOyBQTC8xOyBwcmV0dHlwcmludGVyOyBwcm9ncmFtIHByb2Nlc3NvcnM7IHJlZm9ybWF0dGluZyBvZiBQTC9JIHNvdXJjZSIsCn0KCkBBcnRpY2xle0JlbGw6MTk3MDpMUUgsCiAgYXV0aG9yID0gICAgICAgIkphbWVzIFIuIEJlbGwgYW5kIENoYXJsZXMgSC4gS2FtYW4iLAogIHRpdGxlID0gICAgICAgICJUaGUgTGluZWFyIFF1b3RpZW50IEhhc2ggQ29kZSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjExIiwKICBwYWdlcyA9ICAgICAgICAiNjc1LS02NzciLAogIG1vbnRoID0gICAgICAgIG5vdiwKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIG5vdGUgPSAgICAgICAgICJJbmRlcGVuZGVudCBkaXNjb3Zlcnkgb2YgdGVjaG5pcXVlIG9mIHNlY29uZGFyeSBoYXNoIGZ1bmN0aW9ucyBmaXJzdCBwcm9wb3NlZCBieSBcY2l0ZXtkZUJhbGJpbmU6MTk2OTpDQVJ9LiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTMwIChEYXRhIGhhbmRsaW5nIHRlY2huaXF1ZXMpIiwKICBjb3Jwc291cmNlID0gICAiRGlnaXRhbCBFcXVpcG1lbnQgQ29ycC4sIE1heW5hcmQsIE1BLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJjb2RlcyIsCn0KCkBBcnRpY2xle0NoZW5leToxOTcwOk5MQywKICBhdXRob3IgPSAgICAgICAiQy4gSi4gQ2hlbmV5IiwKICB0aXRsZSA9ICAgICAgICAiQSBOb25yZWN1cnNpdmUgTGlzdCBDb21wYWN0aW5nIEFsZ29yaXRobSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjExIiwKICBwYWdlcyA9ICAgICAgICAiNjc3LS02NzgiLAogIG1vbnRoID0gICAgICAgIG5vdiwKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0NvbXBpbGVyL2dhcmJhZ2UuY29sbGVjdGlvbi5iaWIiLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gQ2FtYnJpZGdlLCBVSyIsCiAga2V5d29yZHMgPSAgICAgImRhdGEgc3RydWN0dXJlczsgbGlzdCBwcm9jZXNzaW5nOyBzdG9yYWdlIG1hbmFnZW1lbnQiLAp9CgpAQXJ0aWNsZXtBbm9ueW1vdXM6MTk3MDpQQU5hLAogIGF1dGhvciA9ICAgICAgICJBbm9ueW1vdXMiLAogIHRpdGxlID0gICAgICAgICJQcm9wb3NlZCB7QW1lcmljYW4gTmF0aW9uYWwgU3RhbmRhcmR9LiBSZWNvcmRlZCBtYWduZXRpYyB0YXBlIGZvciBpbmZvcm1hdGlvbiBpbnRlcmNoYW5nZSAoMTYwMCB7Q1BJfSwgcGhhc2UgZW5jb2RlZCkiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTMiLAogIG51bWJlciA9ICAgICAgICIxMSIsCiAgcGFnZXMgPSAgICAgICAgIjY3OS0tNjg1IiwKICBtb250aCA9ICAgICAgICBub3YsCiAgeWVhciA9ICAgICAgICAgIjE5NzAiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzUzMjBDIChTdG9yYWdlIG9uIG1vdmluZyBtYWduZXRpYyBtZWRpYSkiLAogIGtleXdvcmRzID0gICAgICJtYWduZXRpYyByZWNvcmRpbmc7IHN0YW5kYXJkcyIsCn0KCkBBcnRpY2xle0Fub255bW91czoxOTcwOlBBTmIsCiAgYXV0aG9yID0gICAgICAgIkFub255bW91cyIsCiAgdGl0bGUgPSAgICAgICAgIlByb3Bvc2VkIHtBbWVyaWNhbiBOYXRpb25hbCBTdGFuZGFyZH0uIFVucmVjb3JkZWQgbWFnbmV0aWMgdGFwZSBmb3IgaW5mb3JtYXRpb24gaW50ZXJjaGFuZ2UgKDkgdHJhY2stMjAwIGFuZCA4MDAge0NQSX0sIHtOUlpJfSBhbmQgMTYwMCB7Q1BJfSwge1AuRS59KSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjExIiwKICBwYWdlcyA9ICAgICAgICAiNjg2LS02OTIiLAogIG1vbnRoID0gICAgICAgIG5vdiwKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNTMyMEMgKFN0b3JhZ2Ugb24gbW92aW5nIG1hZ25ldGljIG1lZGlhKSIsCiAga2V5d29yZHMgPSAgICAgIm1hZ25ldGljIHJlY29yZGluZzsgc3RhbmRhcmRzIiwKfQoKQEFydGljbGV7QnJhdGxleToxOTcwOkFBSSwKICBhdXRob3IgPSAgICAgICAiUC4gQnJhdGxleSIsCiAgdGl0bGUgPSAgICAgICAgIntBQ019IEFsZ29yaXRobSA0MDE6IEFuIEltcHJvdmVkIEFsZ29yaXRobSB0byBQcm9kdWNlIENvbXBsZXggUHJpbWVzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiMTEiLAogIHBhZ2VzID0gICAgICAgICI2OTMtLTY5MyIsCiAgbW9udGggPSAgICAgICAgbm92LAogIHllYXIgPSAgICAgICAgICIxOTcwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM3MzEwIChNYXRoZW1hdGljcyBjb21wdXRpbmcpIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gTW9udHJlYWwsIFF1ZS4sIENhbmFkYSIsCiAga2V5d29yZHMgPSAgICAgIm51bWJlciB0aGVvcnk7IHN1YnJvdXRpbmVzIiwKfQoKQEFydGljbGV7dmFuRW1kZW46MTk3MDpBQUksCiAgYXV0aG9yID0gICAgICAgIk0uIEguIHt2YW4gRW1kZW59IiwKICB0aXRsZSA9ICAgICAgICAie0FDTX0gQWxnb3JpdGhtIDQwMjogSW5jcmVhc2luZyB0aGUgRWZmaWNpZW5jeSBvZiBRdWlja3NvcnQiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTMiLAogIG51bWJlciA9ICAgICAgICIxMSIsCiAgcGFnZXMgPSAgICAgICAgIjY5My0tNjk0IiwKICBtb250aCA9ICAgICAgICBub3YsCiAgeWVhciA9ICAgICAgICAgIjE5NzAiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMzAgKERhdGEgaGFuZGxpbmcgdGVjaG5pcXVlcykiLAogIGNvcnBzb3VyY2UgPSAgICJNYXRoLiBDZW50cmUsIEFtc3RlcmRhbSwgTmV0aGVybGFuZHMiLAogIGtleXdvcmRzID0gICAgICJzb3J0aW5nOyBzdWJyb3V0aW5lcyIsCn0KCkBBcnRpY2xle1dpbHNvbjoxOTcwOkdNRywKICBhdXRob3IgPSAgICAgICAiVy4gSi4gV2lsc29uIiwKICB0aXRsZSA9ICAgICAgICAiQSBnZW5lcmFsaXplZCBtZXRob2QgZm9yIGdlbmVyYXRpbmcgYXJndW1lbnRcc2xhc2ggZnVuY3Rpb24gdmFsdWVzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiMTEiLAogIHBhZ2VzID0gICAgICAgICI2OTYtLTY5NyIsCiAgbW9udGggPSAgICAgICAgbm92LAogIHllYXIgPSAgICAgICAgICIxOTcwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTEwIChTeXN0ZW1zIGFuYWx5c2lzIGFuZCBwcm9ncmFtbWluZykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2YWMgRGl2LiBTcGVycnkgUmFuZCwgSHVudHN2aWxsZSwgQUwsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImRlY2lzaW9uIHRhYmxlczsgdGFibGUgbG9va3VwIiwKfQoKQEFydGljbGV7RWhybWFuOjE5NzA6Q0FDLAogIGF1dGhvciA9ICAgICAgICJKLiBSLiBFaHJtYW4iLAogIHRpdGxlID0gICAgICAgICJDb3JyZWN0aW9uIHRvICdsb2dpY2FsJyBhcml0aG1ldGljIG9uIGNvbXB1dGVycyB3aXRoIHR3bydzIGNvbXBsZW1lbnQgYmluYXJ5IGFyaXRobWV0aWMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTMiLAogIG51bWJlciA9ICAgICAgICIxMSIsCiAgcGFnZXMgPSAgICAgICAgIjY5Ny0tNjk4IiwKICBtb250aCA9ICAgICAgICBub3YsCiAgeWVhciA9ICAgICAgICAgIjE5NzAiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzUyMzAgKERpZ2l0YWwgYXJpdGhtZXRpYyBtZXRob2RzKSIsCiAgY29ycHNvdXJjZSA9ICAgIlN0YW5mb3JkIExpbmVhciBBY2NlbGVyYXRvciBDZW50ZXIsIENBLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJkaWdpdGFsIGFyaXRobWV0aWMiLAp9CgpAQXJ0aWNsZXtCZXJuc3RlaW46MTk3MDpDV1MsCiAgYXV0aG9yID0gICAgICAgIkEuIEJlcm5zdGVpbiIsCiAgdGl0bGUgPSAgICAgICAgIkNvbW1lbnQgb24gdGhlIHdvcmtpbmcgc2V0IG1vZGVsIGZvciBwcm9ncmFtIGJlaGF2aW9yIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiMTEiLAogIHBhZ2VzID0gICAgICAgICI2OTgtLTY5OSIsCiAgbW9udGggPSAgICAgICAgbm92LAogIHllYXIgPSAgICAgICAgICIxOTcwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbikiLAogIGNvcnBzb3VyY2UgPSAgICJTdGF0ZSBVbml2LiBOZXcgWW9yaywgU3RvbnkgQnJvb2ssIE5ZLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJzdG9yYWdlIG1hbmFnZW1lbnQiLAp9CgpAQXJ0aWNsZXtSb2tuZToxOTcwOkNOUCwKICBhdXRob3IgPSAgICAgICAiSi4gUm9rbmUiLAogIHRpdGxlID0gICAgICAgICJDb25kaXRpb24gbnVtYmVycyBvZiB7UGVpfSBtYXRyaWNlcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjExIiwKICBwYWdlcyA9ICAgICAgICAiNjk5LS02OTkiLAogIG1vbnRoID0gICAgICAgIG5vdiwKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDE0MCAoTGluZWFyIGFsZ2VicmEpIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gQ2FsZ2FyeSwgQWx0YS4sIENhbmFkYSIsCiAga2V5d29yZHMgPSAgICAgIm1hdHJpeCBhbGdlYnJhIiwKfQoKQEFydGljbGV7TWF0aGV3czoxOTcwOkdQQywKICBhdXRob3IgPSAgICAgICAiTS4gVi4gTWF0aGV3cyBhbmQgRi4gUi4gTW9vcmUiLAogIHRpdGxlID0gICAgICAgICJ7R1JPT1ZFLUF9IHByb2dyYW0gdG8gY29tcG9zZSwgc3RvcmUsIGFuZCBlZGl0IGZ1bmN0aW9ucyBvZiB0aW1lIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiMTIiLAogIHBhZ2VzID0gICAgICAgICI3MTUtLTcyMSIsCiAgbW9udGggPSAgICAgICAgZGVjLAogIHllYXIgPSAgICAgICAgICIxOTcwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM3NDIwIChDb250cm9sIGVuZ2luZWVyaW5nIGNvbXB1dGluZyk7IEM3ODIwIChIdW1hbml0aWVzIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJCZWxsIFRlbGVwaG9uZSBMYWJzLiwgTXVycmF5IEhpbGwsIE5KLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJjb21wb3NlIHN0b3JlLCBlZGl0LCB0aW1lIGZ1bmN0aW9uczsgY29tcHV0ZXIgbXVzaWM7IGNvbXB1dGVyczsgY29uZHVjdG9yIHByb2dyYW07IGNvbnRyb2wgZW5naW5lZXJpbmcgYXBwbGljYXRpb25zIG9mIGNvbXB1dGVyczsgZGlnaXRhbCBjb250cm9sOyBHUk9PVkU7IGh5YnJpZDsgaHlicmlkIHN5c3RlbXM7IGludGVyYWN0aXZlIHNvZnR3YXJlOyBsdW1pbmVzY2VuY2U7IG1hbiBjb21wdXRlciBzeXN0ZW07IG1hbi1tYWNoaW5lIHN5c3RlbXM7IHBlcmlvZGljIGZ1bmN0aW9uczsgcmVhbC10aW1lOyByZWFsLXRpbWUgY29udHJvbDsgc2FtcGxlZCBkYXRhIHN5c3RlbXM7IHN5c3RlbXMiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle1RpZXJuYW46MTk3MDpFU0EsCiAgYXV0aG9yID0gICAgICAgIkphbWVzIEMuIFRpZXJuYW4iLAogIHRpdGxlID0gICAgICAgICJBbiBFZmZpY2llbnQgU2VhcmNoIEFsZ29yaXRobSB0byBGaW5kIHRoZSBFbGVtZW50YXJ5IENpcmN1aXRzIG9mIGEgR3JhcGgiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTMiLAogIG51bWJlciA9ICAgICAgICIxMiIsCiAgcGFnZXMgPSAgICAgICAgIjcyMi0tNzI2IiwKICBtb250aCA9ICAgICAgICBkZWMsCiAgeWVhciA9ICAgICAgICAgIjE5NzAiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI5NC4zMCAoMDUuMDApIiwKICBNUm51bWJlciA9ICAgICAiNDJcIzc0MjciLAogIG1ycmV2aWV3ZXIgPSAgICJKLiBNb3J7XCdhfXZlayIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFic3RyYWN0ID0gICAgICJBIHRoZW9yZXRpY2FsbHkgbW9zdCBlZmZpY2llbnQgc2VhcmNoIGFsZ29yaXRobSBpcyBwcmVzZW50ZWQgd2hpY2ggdXNlcyBhbiBleGhhdXN0aXZlIHNlYXJjaCB0byBmaW5kIGFsbCBvZiB0aGUgZWxlbWVudGFyeSBjaXJjdWl0cyBvZiBhIGdyYXBoLiBUaGUgYWxnb3JpdGhtIGNhbiBiZSBlYXNpbHkgbW9kaWZpZWQgdG8gZmluZCBhbGwgb2YgdGhlIGVsZW1lbnRhcnkgY2lyY3VpdHMgd2l0aCBhIHBhcnRpY3VsYXIgYXR0cmlidXRlIHN1Y2ggYXMgbGVuZ3RoLiBBIHJpZ29yb3VzIHByb29mIG9mIHRoZSBhbGdvcml0aG0gaXMgZ2l2ZW4gYXMgd2VsbCBhcyBhbiBleGFtcGxlIG9mIGl0cyBhcHBsaWNhdGlvbi4gRW1waXJpY2FsIGJvdW5kcyBhcmUgcHJlc2VudGVkIHJlbGF0aW5nIHRoZSBzcGVlZCBvZiB0aGUgYWxnb3JpdGhtIHRvIHRoZSBudW1iZXIgb2YgdmVydGljZXMgYW5kIHRoZSBudW1iZXIgb2YgYXJjcy4gVGhlIHNwZWVkIGlzIGFsc28gcmVsYXRlZCB0byB0aGUgbnVtYmVyIG9mIGNpcmN1aXRzIGluIHRoZSBncmFwaCB0byBnaXZlIGEgcmVsYXRpb24gYmV0d2VlbiBzcGVlZCBhbmQgY29tcGxleGl0eS4gRXh0ZW5zaW9ucyB0byB1bmRpcmVjdGVkIGFuZCBzLWdyYXBocyBhcmUgZGlzY3Vzc2VkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkIwMjUwIChDb21iaW5hdG9yaWFsIG1hdGhlbWF0aWNzKTsgQzExNjAgKENvbWJpbmF0b3JpYWwgbWF0aGVtYXRpY3MpIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gQ2FsaWZvcm5pYSwgU2FuIERpZWdvLCBMYSBKb2xsYSwgQ0EsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImFsZ29yaXRobTsgY2lyY3VpdCBzZWFyY2ggYWxnb3JpdGhtOyBlbGVtZW50YXJ5IGNpcmN1aXRzOyBncmFwaCB0aGVvcnk7IHBhdGggc2VhcmNoOyBwYXRoIHNlYXJjaCBhbGdvcml0aG07IHNlYXJjaGluZyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7QmV0b3VybmU6MTk3MDpQTVIsCiAgYXV0aG9yID0gICAgICAgIkMuIEJldG91cm5lIGFuZCBKLiBCb3VsZW5nZXIgYW5kIEouIEZlcnJpZSBhbmQgQy4gS2Fpc2VyIGFuZCBTLiBLcmFrb3dpYWsgYW5kIEouIE1vc3NpZXJlIiwKICB0aXRsZSA9ICAgICAgICAiUHJvY2VzcyBtYW5hZ2VtZW50IGFuZCByZXNvdXJjZSBzaGFyaW5nIGluIHRoZSBtdWx0aWFjY2VzcyBzeXN0ZW0ge0VTT1BFfSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjEyIiwKICBwYWdlcyA9ICAgICAgICAiNzI3LS03MzMiLAogIG1vbnRoID0gICAgICAgIGRlYywKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjE1MEogKE9wZXJhdGluZyBzeXN0ZW1zKSIsCiAga2V5d29yZHMgPSAgICAgIkVTT1BFOyBtdWx0aS1hY2Nlc3Mgc3lzdGVtczsgbXVsdGlwcm9ncmFtbWluZzsgcGFyYWxsZWwgcHJvY2Vzc2VzOyBwYXJhbGxlbCBwcm9jZXNzaW5nOyBwcmltaXRpdmUgb3BlcmF0aW9uczsgcHJvY2VzcyBzY2hlZHVsaW5nOyBwcm9ncmFtczsgcmVzb3VyY2UgYWxsb2NhdGlvbjsgc3lzdGVtOyB0aW1lIHNoYXJpbmcgc3lzdGVtOyB0aW1lLXNoYXJpbmciLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle01vcmdhbjoxOTcwOklCTywKICBhdXRob3IgPSAgICAgICAiSC4gTC4gTW9yZ2FuIiwKICB0aXRsZSA9ICAgICAgICAiQW4gaW50ZXJydXB0IGJhc2VkIG9yZ2FuaXphdGlvbiBmb3IgbWFuYWdlbWVudCBpbmZvcm1hdGlvbiBzeXN0ZW1zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiMTIiLAogIHBhZ2VzID0gICAgICAgICI3MzQtLTczOSIsCiAgbW9udGggPSAgICAgICAgZGVjLAogIHllYXIgPSAgICAgICAgICIxOTcwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTMwIChEYXRhIGhhbmRsaW5nIHRlY2huaXF1ZXMpOyBDNjE1MEogKE9wZXJhdGluZyBzeXN0ZW1zKSIsCiAgY29ycHNvdXJjZSA9ICAgIkNvcm5lbGwgVW5pdi4sIEl0aGFjYSwgTlksIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImRhdGEgaGFuZGxpbmc7IGludGVncmF0ZWQgZGF0YSBwcm9jZXNzaW5nOyBpbnRlcnJ1cHQgc2NoZWR1bGluZzsgbWFuYWdlbWVudCBpbmZvcm1hdGlvbiBzeXN0ZW1zOyBtb25pdG9yaW5nOyBwYXJhbGxlbDsgcGFyYWxsZWwgcHJvY2Vzc2luZzsgcHJvY2Vzc2luZzsgc3VwZXJ2aXNvcnkgcHJvZ3JhbXM7IHN1cGVydmlzb3J5IHN5c3RlbXM7IHN5c3RlbXMiLAp9CgpAQXJ0aWNsZXtUaG9tcHNvbjoxOTcwOklSUiwKICBhdXRob3IgPSAgICAgICAiUi4gSi4gVGhvbXBzb24iLAogIHRpdGxlID0gICAgICAgICJJbXByb3Zpbmcgcm91bmQtb2ZmIGluIHtSdW5nZS1LdXR0YX0gY29tcHV0YXRpb25zIHdpdGgge0dpbGx9J3MgbWV0aG9kIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiMTIiLAogIHBhZ2VzID0gICAgICAgICI3MzktLTc0MCIsCiAgbW9udGggPSAgICAgICAgZGVjLAogIHllYXIgPSAgICAgICAgICIxOTcwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MTcwIChEaWZmZXJlbnRpYWwgZXF1YXRpb25zKSIsCiAgY29ycHNvdXJjZSA9ICAgIlNhbmRpYSBMYWJzLiwgQWxidXF1ZXJxdWUsIE5NLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJkaWZmZXJlbnRpYWwgZXF1YXRpb25zOyBlcnJvciBhbmFseXNpczsgbWV0aG9kczsgbnVtZXJpY2FsIG1hdGhlbWF0aWNzOyBvcmRpbmFyeSBkaWZmZXJlbnRpYWwgZXF1YXRpb25zOyBwcmVkaWN0b3ItY29ycmVjdG9yOyByb3VuZC1vZmYgZXJyb3I7IFJ1bmdlLUt1dHRhLUdpbGwgbWV0aG9kcyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7U2hhcGlybzoxOTcwOkxTRywKICBhdXRob3IgPSAgICAgICAiUy4gQy4gU2hhcGlybyIsCiAgdGl0bGUgPSAgICAgICAgIlRoZSBsaXN0IHNldCBnZW5lcmF0b3I6IGEgY29uc3RydWN0IGZvciBldmFsdWF0aW5nIHNldCBleHByZXNzaW9ucyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjEyIiwKICBwYWdlcyA9ICAgICAgICAiNzQxLS03NDQiLAogIG1vbnRoID0gICAgICAgIGRlYywKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIFdpc2NvbnNpbiwgTWFkaXNvbiwgV0ksIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImNvbnN0cnVjdDsgZmlsZTsgbGlzdCBwcm9jZXNzaW5nOyBwcm9jZXNzaW5nOyBwcm9ncmFtbWluZzsgcHJvZ3JhbW1pbmcgdGVjaG5pcXVlczsgc2V0IGdlbmVyYXRpb247IHNldCBtYW5pcHVsYXRpbmciLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0JsYWNrOjE5NzA6T01NLAogIGF1dGhvciA9ICAgICAgICJOLiBBLiBCbGFjayIsCiAgdGl0bGUgPSAgICAgICAgIk9wdGltdW0gTWVyZ2luZyBmcm9tIE1hc3MgU3RvcmFnZSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjEyIiwKICBwYWdlcyA9ICAgICAgICAiNzQ1LS03NDkiLAogIG1vbnRoID0gICAgICAgIGRlYywKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKSIsCiAgY29ycHNvdXJjZSA9ICAgIkNvbXB1dGVyIFNjaS4gQ29ycC4sIEh1bnRzdmlsbGUsIEFMLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJhY2Nlc3MgdGltZTsgZHJ1bSBtZXJnaW5nOyBtYWduZXRpYyBzdG9yYWdlIHN5c3RlbXM7IG1hc3Mgc3RvcmFnZTsgbWVyZ2luZzsgb3B0aW1pc2F0aW9uOyBvcHRpbXVtIG1lcmdpbmc7IHNvcnQgdGltaW5nOyBzb3J0aW5nIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtTdGV3YXJ0OjE5NzA6RUFBLAogIGF1dGhvciA9ICAgICAgICJHLiBXLiBTdGV3YXJ0IiwKICB0aXRsZSA9ICAgICAgICAiRXJyYXRhOiB7QUNNfSBBbGdvcml0aG0gMzg0OiBFaWdlbnZhbHVlcyBhbmQgRWlnZW52ZWN0b3JzIG9mIGEgUmVhbCBTeW1tZXRyaWMgTWF0cml4IFt7RjJ9XSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjEyIiwKICBwYWdlcyA9ICAgICAgICAiNzUwLS03NTAiLAogIG1vbnRoID0gICAgICAgIGRlYywKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXkgMjggMTg6NDI6MzMgMTk5NiIsCiAgbm90ZSA9ICAgICAgICAgIlNlZSBcY2l0ZXtTdGV3YXJ0OjE5NzA6QUFFfS4iLAogIGtleXdvcmRzID0gICAgICJlaWdlbnZhbHVlczsgZWlnZW52ZWN0b3JzOyBRUiBhbGdvcml0aG07IHJlYWwgc3ltbWV0cmljIG1hdHJpeCIsCiAga3dkcyA9ICAgICAgICAgIm5sYSwgZWlnLCBRUiBhbGdvcml0aG0sIHN5bW1ldHJpYyBtYXRyaXgiLAogIHh4bm90ZSA9ICAgICAgICJDaGVjayB0aXRsZT8/IiwKfQoKQEFydGljbGV7RnVjaHM6MTk3MDpFRFIsCiAgYXV0aG9yID0gICAgICAgIkUuIEEuIEZ1Y2hzIGFuZCBQLiBFLiBKYWNrc29uIiwKICB0aXRsZSA9ICAgICAgICAiRXN0aW1hdGVzIG9mIERpc3RyaWJ1dGlvbnMgb2YgUmFuZG9tIFZhcmlhYmxlcyBmb3IgQ2VydGFpbiBDb21wdXRlciBDb21tdW5pY2F0aW9ucyBUcmFmZmljIE1vZGVscyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjEyIiwKICBwYWdlcyA9ICAgICAgICAiNzUyLS03NTciLAogIG1vbnRoID0gICAgICAgIGRlYywKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0Rpc3RyaWJ1dGVkL25ldHdvcmsuYmliIGFuZCBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0Rpc3RyaWJ1dGVkL1FMRC8xOTcwLmJpYiIsCiAgbm90ZSA9ICAgICAgICAgIlJlcHJvZHVjZWQgaW4gQWR2YW5jZXMgaW4gQ29tcHV0ZXIgQ29tbXVuLiwgQ2h1LCBXLiBXLiwgKEVkICgxOTc0KSwgMi03OyBpbiBDb21wdXRlciBDb21tdW4uLCBHcmVlbiwgUC4gRS4sIGFuZCBMdWNreSwgUi4gVy4gKEVkcy4pLCAoMTk3NSksIDU3Ny01ODIpLiIsCiAgYWJzdHJhY3QgPSAgICAgIkEgc3R1ZHkgb2YgbXVsdGlhY2Nlc3MgY29tcHV0ZXIgY29tbXVuaWNhdGlvbnMgaGFzIGNoYXJhY3Rlcml6ZWQgdGhlIGRpc3RyaWJ1dGlvbnMgdW5kZXJseWluZyBhbiBlbGVtZW50YXJ5IG1vZGVsIG9mIHRoZSB1c2VyLWNvbXB1dGVyIGludGVyYWN0aXZlIHByb2Nlc3MuIFRoZSBtb2RlbCB1c2VkIGlzIGVsZW1lbnRhcnkgaW4gdGhlIHNlbnNlIHRoYXQgbWFueSBvZiB0aGUgcmFuZG9tIHZhcmlhYmxlcyB0aGF0IGdlbmVyYWxseSBhcmUgb2YgaW50ZXJlc3QgaW4gY29tcHV0ZXIgY29tbXVuaWNhdGlvbnMgc3R1ZGllcyBjYW4gYmUgZGVjb21wb3NlZCBpbnRvIHRoZSBlbGVtZW50cyBvZiB0aGlzIG1vZGVsLiBEYXRhIHdlcmUgZXhhbWluZWQgZnJvbSBmb3VyIG9wZXJhdGlvbmFsIG11bHRpYWNjZXNzIHN5c3RlbXMsIGFuZCB0aGUgbW9kZWwgaXMgc2hvd24gdG8gYmUgcm9idXN0OyB0aGF0IGlzIGVhY2ggb2YgdGhlIHZhcmlhYmxlcyBvZiB0aGUgbW9kZWwgaGFzIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiBpbmRlcGVuZGVudCBvZiB3aGljaCBvZiB0aGUgZm91ciBzeXN0ZW1zIGlzIGJlaW5nIGV4YW1pbmVkLiBJdCBpcyBzaG93biB0aGF0IHRoZSBnYW1tYSBkaXN0cmlidXRpb24gY2FuIGJlIHVzZWQgdG8gZGVzY3JpYmUgdGhlIGRpc2NyZXRlIHZhcmlhYmxlcy4gQXBwcm94aW1hdGlvbnMgdG8gdGhlIGdhbW1hIGRpc3RyaWJ1dGlvbiBieSB0aGUgZXhwb25lbnRpYWwgZGlzdHJpYnV0aW9uIGFyZSBkaXNjdXNzZWQgZm9yIHRoZSBzeXN0ZW1zIHN0dWRpZWQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQyOTAgKE90aGVyIGNvbXB1dGVyIHRoZW9yeSkiLAogIGNvcnBzb3VyY2UgPSAgICJCZWxsIFRlbGVwaG9uZSBMYWJzLiBJbmMuLCBIb2xtZGVsLCBOSiwgVVNBIiwKICBkZXNjcmlwdG9ycyA9ICAiUmFuZG9tIFByb2Nlc3M7IENvbXB1dGVyIENvbW11bmljYXRpb247IFRyYWZmaWMgTW9kZWw7IERpc3RyaWJ1dGlvbjsgRXN0aW1hdGlvbjsiLAogIGtleXdvcmRzID0gICAgICJjb21wdXRhdGlvbiB0aGVvcnk7IGNvbXB1dGVyIGNvbW11bmljYXRpb25zOyBkaXN0cmlidXRpb24gb2YgcmFuZG9tIHZhcmlhYmxlczsgbW9kZWxsaW5nOyBtdWx0aS1hY2Nlc3Mgc3lzdGVtczsgbXVsdGlhY2Nlc3Mgc3lzdGVtczsgb3BlcmF0aW5nIHN5c3RlbXM7IG9wZXJhdGluZyBzeXN0ZW1zIChjb21wdXRlcnMpOyBvcHRpbWlzYXRpb24gbW9kZWxzOyBvcHRpbWl6YXRpb24gbW9kZWxzOyB0aW1lLXNoYXJpbmc7IHRpbWUtc2hhcmluZyBzeXN0ZW1zOyB1c2VyIGNvbXB1dGVyIGludGVyYWN0aXZlIHByb2Nlc3NlcyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7UGludGVyOjE5NzA6REJGLAogIGF1dGhvciA9ICAgICAgICJDLiBDLiBQaW50ZXIiLAogIHRpdGxlID0gICAgICAgICJPbiBkZWNvbXBvc2luZyBhIHtCb29sZWFufSBmdW5jdGlvbiBhbmQgc2ltcGxpZnlpbmcgdGhlIGNvbXBvbmVudHMgc2VwYXJhdGVseSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjEyIiwKICBwYWdlcyA9ICAgICAgICAiNzU4LS03NTgiLAogIG1vbnRoID0gICAgICAgIGRlYywKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDIzMCAoU3dpdGNoaW5nIHRoZW9yeSkiLAogIGNvcnBzb3VyY2UgPSAgICJCdWNrbmVsbCBVbml2LiwgTGV3aXNidXJnLCBQQSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiYmFzaWMgY2VsbHM7IEJvb2xlYW4gZnVuY3Rpb25zOyBtaW5pbWlzYXRpb247IG1pbmltaXNhdGlvbiBvZiBzd2l0Y2hpbmcgbmV0czsgb2YgQm9vbGVhbiBmdW5jdGlvbnM7IHByaW1lIGltcGxpY2FudHM7IHNpbXBsaWZpY2F0aW9uOyB2ZXJ0aWNlcyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7UmFkdWNoZWw6MTk3MDpFSEIsCiAgYXV0aG9yID0gICAgICAgIlcuIEouIFJhZHVjaGVsIiwKICB0aXRsZSA9ICAgICAgICAiRWZmaWNpZW50IGhhbmRsaW5nIG9mIGJpbmFyeSBkYXRhIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjEzIiwKICBudW1iZXIgPSAgICAgICAiMTIiLAogIHBhZ2VzID0gICAgICAgICI3NTgtLTc1OSIsCiAgbW9udGggPSAgICAgICAgZGVjLAogIHllYXIgPSAgICAgICAgICIxOTcwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTMwIChEYXRhIGhhbmRsaW5nIHRlY2huaXF1ZXMpIiwKICBjb3Jwc291cmNlID0gICAiSGFydmFyZCBVbml2LiwgQ2FtYnJpZGdlLCBNQSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiYmluYXJ5IHZhcmlhYmxlczsgYml0IHN0cmluZ3M7IGNyb3NzLTsgZGF0YSBoYW5kbGluZzsgZHVtbXkgdmFyaWFibGVzOyBlZmZpY2llbmN5OyBwcm9ncmFtbWluZzsgcHJvZ3JhbW1pbmcgdGVjaG5pcXVlczsgdGFidWxhdGlvbnMiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle1dhZ25lcjoxOTcwOkZBSSwKICBhdXRob3IgPSAgICAgICAiUm9iZXJ0IEEuIFdhZ25lciIsCiAgdGl0bGUgPSAgICAgICAgIkZpbml0ZW5lc3MgQXNzdW1wdGlvbnMgYW5kIEludGVsbGVjdHVhbCBJc29sYXRpb24gb2YgQ29tcHV0ZXIgU2NpZW50aXN0cyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMyIsCiAgbnVtYmVyID0gICAgICAgIjEyIiwKICBwYWdlcyA9ICAgICAgICAiNzU5LS03NjAiLAogIG1vbnRoID0gICAgICAgIGRlYywKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDMDIwMCAoR2VuZXJhbCBjb21wdXRlciB0b3BpY3MpIiwKICBjb3Jwc291cmNlID0gICAiQ29ybmVsbCBVbml2LiwgSXRoYWNhLCBOWSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiQUxHT0wgdmVyc3VzIEZPUlRSQU47IEFsZ29sIHZzLiBGb3J0cmFuOyBmaW5pdGU7IGZpbml0ZSB3b3JkIHNpemU7IGZpbml0ZW5lc3MgYXNzdW1wdGlvbnM7IGludGVnZXIgdmFyaWFibGUgcmFuZ2U7IGludGVsbGVjdHVhbDsgaW50ZWxsZWN0dWFsIGlzb2xhdGlvbjsgaXNvbGF0aW9uOyBtZW1vcnkgZmluaXRlbmVzczsgcGVyc29ubmVsOyBwaGlsb3NvcGhpY2FsIGFzcGVjdHM7IHdvcmQgc2l6ZSIsCn0KCkBBcnRpY2xle0xvd3J5OjE5NzE6T0NPLAogIGF1dGhvciA9ICAgICAgICJFLiBMb3dyeSBhbmQgQy4gVy4gTWVkbG9jayIsCiAgdGl0bGUgPSAgICAgICAgIk9iamVjdCBDb2RlIE9wdGltaXphdGlvbiIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxMiIsCiAgbnVtYmVyID0gICAgICAgIjEiLAogIHBhZ2VzID0gICAgICAgICIxMy0tMjIiLAogIG1vbnRoID0gICAgICAgIGphbiwKICB5ZWFyID0gICAgICAgICAiMTk3MSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBEZWMgMjYgMTY6MzU6MTQgMTk5NSIsCiAgYmlic291cmNlID0gICAgImZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvQ29tcGlsZXIvb3B0LmNvbXBpbGVyLmJpYiIsCn0KCkBBcnRpY2xle0hhbW1lcjoxOTcxOlNTQywKICBhdXRob3IgPSAgICAgICAiQ2FybCBIYW1tZXIiLAogIHRpdGxlID0gICAgICAgICJTaWduYXR1cmUgU2ltdWxhdGlvbiBhbmQgQ2VydGFpbiBDcnlwdG9ncmFwaGljIENvZGVzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE0IiwKICBudW1iZXIgPSAgICAgICAiMSIsCiAgcGFnZXMgPSAgICAgICAgIjMtLTE0IiwKICBtb250aCA9ICAgICAgICBqYW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzEiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhYnN0cmFjdCA9ICAgICAiVGhyZWUgY3lwaGVycyBhbGxlZ2VkbHkgYXV0aG9yZWQgYnkgVGhvbWFzIEplZmZlcnNvbiBCZWFsZSBpbiAxODIyIGhhdmUgYmVlbiB0aGUgc3ViamVjdCBvZiBpbnRlbnNpdmUgc3R1ZHkgZm9yIG92ZXIgMTAwIHllYXJzLiBHZW5lcmF0aW9ucyBvZiBjcnlwdGFuYWx5c3RzIGhhdmUgZXhwZW5kZWQgdW50b2xkIG1hbi15ZWFycywgdGh1cyBmYXIgd2l0aG91dCBzdWNjZXNzLCBhdHRlbXB0aW5nIHRvZGUgY29kZSB0aGVtOyB2YXN0IGFybWllcyBvZiBmb3J0dW5lIGh1bnRlcnMgYW5kIHRyZWFzdXJlIHNlZWtlcnMgaGF2ZSBkZXZvdGVkIEhlcmN1bGVhbiBsYWJvcnMgdG8gZGlnZ2luZyB1cCB0aGUgcm9sbGluZyBoaWxscyBvZiBWaXJnaW5pYSB0cnlpbmcgdG8gbG9jYXRlIHRoZSBwcm9taXNlZCBib25hbnphLiBccGFyIFRoZSBoaXN0b3J5IG9mIHBlcnRpbmVudCBhY3Rpdml0aWVzIHdvdWxkIGZpbGwgdm9sdW1lcywgeWV0IHNlcmlvdXMgc3R1ZGVudHMgb2YgY3J5cHRvZ3JhcGh5IGhhdmUgYWx3YXlzIGhhZCBuYWdnaW5nIGRvdWJ0cyBhYm91dCB0aGUgY3lwaGVycycgYXV0aGVudGljaXR5LiBJdCBoYXMgYmVlbiBhbGxlZ2VkIHRoYXQgdGhlIGBga25vd24gc29sdXRpb24nJyB0byBDeXBoZXIgTnVtYmVyIFR3bzogMTE1LCA3MywgMjQsIDgxOCwgMzcsIDUyLCA0OSwgXGxkb3Rze30gKGBgSSBoYXZlIGRlcG9zaXRlZCBpbiB0aGUgQ291bnR5IG9mIEJlZGZvcmQgYWJvdXQgZm91ciBtaWxlcyBmcm9tIEJ1Zm9yZCdzIGluIGFuIGV4Y2F2YXRpb24gb3IgdmF1bHQgXGxkb3Rze30nJykgd2l0aCB0aGUgYWlkIG9mIGFuIHVuc2FuaXRpemVkIHZlcnNpb24gb2YgdGhlIERlY2xhcmF0aW9uIG9mIEluZGVwZW5kZW5jZSB3YXMgbWVyZWx5IGEgc3VwZXJiLCBpbWFnaW5hdGl2ZSwgYW5kIGdyYW5kaW9zZSBob2F4IHBlcnBldHJhdGVkIGFnZXMgYWdvIGZvciB3aGF0ZXZlciByZWFzb25zLiBNb2Rlcm4gY29tcHV0ZXIgdGVjaG5vbG9neSBjb3VsZCBvYnZpb3VzbHkgcGVyZm9ybSBzaWduYXR1cmUgYW5hbHlzZXMgdGhlIHByb2Nlc3Mgb2YgZW5jb2RpbmcgaXRzZWxmIHNvIGFzIHRvIHlpZWxkIG5ldyBjbHVlcyBhbmQgZGVlcGVyIGluc2lnaHRzIGludG8gdGhlaXIgY29uc3RydWN0aW9uLiBGb3IgdGhlIGJlbmVmaXQgb2YgdGhlIHVuaW5pdGlhdGVkLCB0aGUgZW5jb2RpbmcgbWV0aG9kIHVzZWQgaW4gdGhlIHNlY29uZCBjeXBoZXIgZW1wbG95cyBhIHNwZWNpZmllZCBkb2N1bWVudCB3aG9zZSB3b3JkcyBhcmUgc2ltcGx5IG51bWJlcmVkIGNvbnNlY3V0aXZlbHksIGFuZCBmaXJzdCBsZXR0ZXJzIG9mIHRoZXNlIHdvcmRzIGFyZSBzb3VnaHQgb3V0IGF0IHJhbmRvbSB0byBtYXRjaCB0aGUgbGV0dGVycyBvZiB0aGVzZSB3b3JkcyBhcmUgc291Z2h0IG91dCBhdCByYW5kb20gdG8gbWF0Y2ggdGhlIGxldHRlcnMgb2YgdGhlIGNsZWFyIHRleHQgb3IgbWVzc2FnZS4gXHBhciBUaGUgc2VxdWVuY2Ugb2YgbnVtYmVycyBjb3JyZXNwb25kaW5nIHRvIHRoZXNlIG1hdGNoZXMgaXMgdGhlbiB3cml0dGVuIGRvd24gYXMgdGhlIGZpbmFsIGNvZGUuIFdoaWxlIHByaW1pdGl2ZSwgdGhlIHByb2Nlc3MgaGFzIHRoZSBhZHZhbnRhZ2Ugb2YgcmVsYXRpdmUgc2VjdXJpdHkgdW50aWwgdGhlIHNvdXJjZSBkb2N1bWVudCBiZWNvbWVzIGtub3duOyBhdCB0aGF0IG1vbWVudCB0aGUgY3lwaGVyIGNhbiBiZSBkZWNvZGVkIGV2ZW4gYnkgc2Vjb25kIGdyYWRlcnMuIFRoZSB3b3JrIG5vdyBjb21wbGV0ZWQgd2l0aCB0aGUgaGVscCBvZiBvdXIgVU5JVkFDIDExMDggaW5jbHVkZXMgbnVtZXJvdXMgYW5hbHl0aWNhbCBzdHVkaWVzIG9mIHRoZSBCZWFsZSBjeXBoZXJzIGFuZCB2YXJpb3VzIHR5cGVzIG9mIHNpbXVsYXRpb25zLiBccGFyIEZvciBleGFtcGxlLCB3ZSBoYXZlIHR1cm5lZCB0aGUgZW50aXJlIHByb2Nlc3Mgb2Ygc2ltdWxhdGVkIGVuY29kaW5nIGJ5IHZhcmlvdXMgc2NoZW1lcyBvdmVyIHRvIHRoZSBtYWNoaW5lIGFuZCBhbmFseXplZCB0aGUgc2lnbmF0dXJlcyBvZiB0aGVzZSBzeW50aGV0aWMgY29kZXM7IHdlIGhhdmUgYWxzbyBlbmNvZGVkIHZhcmlvdXMgbWVzc2FnZXMgYnkgaGFuZCwgdXNpbmcgZGlmZmVyZW50IHRleHRzIGFuZCBhIHZhcmlldHkgb2YgbWV0aG9kcyB0byBvYnRhaW4gdGhlaXIgc2lnbmF0dXJlcy4gVGhlc2Ugc2ltdWxhdGlvbnMgcHJvdmlkZSBjb252aW5jaW5nIGV2aWRlbmNlIHRoYXQgdGhlIHNpZ25hdHVyZXMgYXJlIGJvdGggcHJvY2VzcyBhbmQgZGF0YSBkZXBlbmRlbnQ7IHRoZXkgaW5kaWNhdGUgYWxzbyB2ZXJ5IHN0cm9uZ2x5IHRoYXQgTXIuIEJlYWxlJ3MgY3lwaGVycyBhcmUgZm9yIHJlYWwgYW5kIHRoYXQgaXQgaXMgbWVyZWx5IGEgbWF0dGVyIG9mIHRpbWUgYmVmb3JlIHNvbWVvbmUgZmluZHMgdGhlIGNvcnJlY3Qgc291cmNlIGRvY3VtZW50IGFuZCBsb2NhdGVzIHRoZSByaWdodCB2YXVsdCBpbiB0aGUgY29tbW9uLXdlYWx0aCBvZiBWaXJnaW5pYS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJCNjEyMEIgKENvZGVzKTsgQzYxMzAgKERhdGEgaGFuZGxpbmcgdGVjaG5pcXVlcykiLAogIGtleXdvcmRzID0gICAgICJCZWFsZSBDeXBoZXJzIGNvZGVzOyBjb2RlczsgY29tcHV0ZXIgYXBwbGljYXRpb25zOyBjb21wdXRlciBzaWduYXR1cmUgc2ltdWxhdGlvbjsgY3J5cHRhbmFseXNpczsgY3lwaGVyczsgRGVjbGFyYXRpb24gb2YgSW5kZXBlbmRlbmNlOyBkZWNvZGluZzsgZW5jb2Rpbmc7IE1hZ25hIENhcnRhOyBudW1lcmljYWwgY3J5cHRvZ3JhcGhpYyBjb2RlczsgcHNldWRvdGV4dDsgcmVzdWx0cyBhbmFseXNpczsgc2lnbmF0dXJlOyBzaW11bGF0aW9uOyBUaG9tYXMgSmVmZmVyc29uIEJlYWxlOyB0cmVhc3VyZSBzaXRlIGlkZW50aWZpY2F0aW9uIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbiIsCn0KCkBBcnRpY2xle0tsaW5nZXI6MTk3MTpQV0EsCiAgYXV0aG9yID0gICAgICAgIkEuIEtsaW5nZXIiLAogIHRpdGxlID0gICAgICAgICJQYXR0ZXJuIHdpZHRoIGF0IGEgZ2l2ZW4gYW5nbGUiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTQiLAogIG51bWJlciA9ICAgICAgICIxIiwKICBwYWdlcyA9ICAgICAgICAiMTUtLTIwIiwKICBtb250aCA9ICAgICAgICBqYW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzEiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjYxNDBDIChPcHRpY2FsIGluZm9ybWF0aW9uLCBpbWFnZSBhbmQgdmlkZW8gc2lnbmFsIHByb2Nlc3NpbmcpOyBDMTI1MCAoUGF0dGVybiByZWNvZ25pdGlvbikiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBDYWxpZm9ybmlhLCBMb3MgQW5nZWxlcywgQ0EsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImV4dGVudCBpbnRlZ3JhbCBwcm9qZWN0aW9uczsgZmVhdHVyZSBleHRyYWN0aW9uOyBmaWd1cmUgcHJvcGVydGllczsgZnVuY3Rpb25zOyBnZW9tZXRyaWNhbCBjb25jZXB0OyBpbnRlZ3JhbCBnZW9tZXRyeTsgbGluZWFyIHBhdHRlcm4gbWVhc3VyZXM7IHBhdHRlcm4gcmVjb2duaXRpb247IHBpY3R1cmUgcHJvY2Vzc2luZzsgd2lkdGg7IHdpZHRoIGF0IGFuZ2xlOyB3b3JkIGRlc2NyaXB0aW9uIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtDaGFuZzoxOTcxOlJCUCwKICBhdXRob3IgPSAgICAgICAiU2hpLUt1byBDaGFuZyIsCiAgdGl0bGUgPSAgICAgICAgIlRoZSBSZWNvbnN0cnVjdGlvbiBvZiBCaW5hcnkgUGF0dGVybnMgZnJvbSBUaGVpciBQcm9qZWN0aW9ucyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNCIsCiAgbnVtYmVyID0gICAgICAgIjEiLAogIHBhZ2VzID0gICAgICAgICIyMS0tMjUiLAogIG1vbnRoID0gICAgICAgIGphbiwKICB5ZWFyID0gICAgICAgICAiMTk3MSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4LjAwIiwKICBNUm51bWJlciA9ICAgICAiNDRcIzIzNzkiLAogIG1ycmV2aWV3ZXIgPSAgICJHLiBELiBDaGFrZXJpYW4iLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiR2l2ZW4gdGhlIGhvcml6b250YWwgYW5kIHZlcnRpY2FsIHByb2plY3Rpb25zIG9mIGEgZmluaXRlIGJpbmFyeSBwYXR0ZXJuICRmJCwgY2FuIHdlIGNvbnN0cnVjdCB0aGUgb3JpZ2luYWwgcGF0dGVybiAkZiQ/IEluIHRoaXMgcGFwZXIgd2UgZ2l2ZSBhIGNoYXJhY3Rlcml6YXRpb24gb2YgcGF0dGVybnMgdGhhdCBhcmUgcmVjb25zdHJ1Y3RpYmxlIGZyb20gdGhlaXIgcHJvamVjdGlvbi4gVGhyZWUgYWxnb3JpdGhtcyBhcmUgZGV2ZWxvcGVkIHRvIHJlY29uc3RydWN0IGJvdGggdW5hbWJpZ3VvdXMgYW5kIGFtYmlndW91cyBwYXR0ZXJucy4gSXQgaXMgc2hvd24gdGhhdCBhbiB1bmFtYmlndW91cyBwYXR0ZXJuIGNhbiBiZSBwZXJmZWN0bHkgcmVjb25zdHJ1Y3RlZCBpbiB0aW1lICRtIFx0aW1lcyBuJCBhbmQgdGhhdCBhIHBhdHRlcm4gc2ltaWxhciB0byBhbiBhbWJpZ3VvdXMgcGF0dGVybiBjYW4gYWxzbyBiZSBjb25zdHJ1Y3RlZCBpbiB0aW1lICRtIFx0aW1lcyBuJCwgd2hlcmUgJG0kLCAkbiQgYXJlIHRoZSBkaW1lbnNpb25zIG9mIHRoZSBwYXR0ZXJuIGZyYW1lLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkI2MTQwQyAoT3B0aWNhbCBpbmZvcm1hdGlvbiwgaW1hZ2UgYW5kIHZpZGVvIHNpZ25hbCBwcm9jZXNzaW5nKTsgQzEyNTAgKFBhdHRlcm4gcmVjb2duaXRpb24pIiwKICBjb3Jwc291cmNlID0gICAiSUJNLCBZb3JrdG93biBIZWlnaHRzLCBOWSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgIkFUSTsgQ0FDTUE7IGNvbXB1dGVycywgZGlnaXRhbDsgZGF0YSBjb21wcmVzc2lvbjsgZmluaXRlIGJpbmFyeSBwYXR0ZXJuOyBpbWFnZSByZWNvbnN0cnVjdGlvbjsgaW50ZWdyYWwgZ2VvbWV0cnk7IG9yaWdpbmFsIHBhdHRlcm4gcmVjb25zdHJ1Y3Rpb247IHBhdHRlcm4gZnJhbWUgZGltZW5zaW9uczsgcGF0dGVybiByZWNvZ25pdGlvbjsgcGF0dGVybiByZWNvZ25pdGlvbiBzeXN0ZW1zOyBwYXR0ZXJuIHJlY29uc3RydWN0aW9uIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtCcmFjY2hpOjE5NzE6TFRHLAogIGF1dGhvciA9ICAgICAgICJHLiBCcmFjY2hpIGFuZCBELiBGZXJyYXJpIiwKICB0aXRsZSA9ICAgICAgICAiTGFuZ3VhZ2UgZm9yIFRyZWF0aW5nIEdlb21ldHJpYyBQYXR0ZXJucyBpbiBhIFR3by1EaW1lbnNpb25hbCBTcGFjZSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNCIsCiAgbnVtYmVyID0gICAgICAgIjEiLAogIHBhZ2VzID0gICAgICAgICIyNi0tMzIiLAogIG1vbnRoID0gICAgICAgIGphbiwKICB5ZWFyID0gICAgICAgICAiMTk3MSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJJbiB0aGlzIHBhcGVyIENBREVQLCBhIHByb2JsZW0tb3JpZW50ZWQgbGFuZ3VhZ2UgZm9yIHBvc2l0aW9uaW5nIGdlb21ldHJpYyBwYXR0ZXJucyBpbiBhIHR3by1kaW1lbnNpb25hbCBzcGFjZSwgaXMgcHJlc2VudGVkLiBBbHRob3VnaCB0aGUgbGFuZ3VhZ2UgaGFzIGJlZW4gc3BlY2lmaWNhbGx5IGRlc2lnbmVkIGZvciB0aGUgYXV0b21hdGljIGdlbmVyYXRpb24gb2YgaW50ZWdyYXRlZCBjaXJjdWl0IG1hc2tzLCBpdCB0dXJucyBvdXQgdG8gYmUgd2VsbCBzdWl0ZWQgYWxzbyBmb3Igc3VjaCBvdGhlciBwbGFjZW1lbnQgcHJvYmxlbXMgYXMgYXJjaGl0ZWN0dXJlIGRlc2lnbiwgdXJiYW4gcGxhbm5pbmcsIGxvZ2ljYWwgYW5kIGJsb2NrIGRpYWdyYW0gcmVwcmVzZW50YXRpb24uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxNDBEIChIaWdoIGxldmVsIGxhbmd1YWdlcykiLAogIGNvcnBzb3VyY2UgPSAgICJQb2xpdGVjbmljbyBNaWxhbm8sIEl0YWx5IiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgIjItZGltZW5zaW9uYWwgc3BhY2U7IGFyY2hpdGVjdHVyZSBkZXNpZ247IGF1dG9tYXRpb247IGJsb2NrIGRpYWdyYW1zOyBDQUNNQTsgQ0FERVA7IGNvbXB1dGVycywgZGlnaXRhbDsgY29tcHV0ZXJzLCBkaWdpdGFsLCBwYXR0ZXJuIHJlOyBGb3J0cmFuOyBGb3J0cmFuIGV4dGVuc2lvbjsgZ2VuZXJhdGlvbjsgZ2VvbWV0cmljIHBhdHRlcm5zOyBncmFwaGljOyBncmFwaGljIGRpc3BsYXlzOyBpbnRlZ3JhdGVkIGNpcmN1aXQgbWFza3M7IGludGVncmF0ZWQgY2lyY3VpdHM7IGxhbmd1YWdlOyBsYW5ndWFnZXM7IGxheW91dCBwcm9ibGVtczsgbG9naWMgZGlhZ3JhbXMgcmVwcmVzZW50YXRpb247IHBhdHRlcm4gcmVjb2duaXRpb247IHBhdHRlcm4gcmVjb2duaXRpb24gc3lzdGVtczsgcGxhbm5pbmc7IHBvc2l0aW9uaW5nOyBwcm9ibGVtIG9yaWVudGVkIGxhbmd1YWdlOyBwcm9ibGVtIG9yaWVudGVkIGxhbmd1YWdlczsgdXJiYW47IHVyYmFuIHBsYW5uaW5nIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtCcm91Y2tlOjE5NzE6Q1JOLAogIGF1dGhvciA9ICAgICAgICJSLiBBLiBCcm91Y2tlIiwKICB0aXRsZSA9ICAgICAgICAiQ29uc3RydWN0aW9uIG9mIHJhdGlvbmFsIGFuZCBuZWdhdGl2ZSBwb3dlcnMgb2YgYSBmb3JtYWwgc2VyaWVzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE0IiwKICBudW1iZXIgPSAgICAgICAiMSIsCiAgcGFnZXMgPSAgICAgICAgIjMyLS0zNSIsCiAgbW9udGggPSAgICAgICAgamFuLAogIHllYXIgPSAgICAgICAgICIxOTcxIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MTMwIChJbnRlcnBvbGF0aW9uIGFuZCBmdW5jdGlvbiBhcHByb3hpbWF0aW9uKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIENhbGlmb3JuaWEsIExvcyBBbmdlbGVzLCBDQSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiYmlub21pYWw7IENoZWJ5c2hldiBhcHByb3hpbWF0aW9uOyBDaGVieXNoZXYgc2VyaWVzOyBjb25zdHJ1Y3Rpb247IGNvbnZlcmdlbmNlOyBjb252ZXJnZW5jZSBvZiBudW1lcmljYWwgbWV0aG9kczsgRm91cmllciBzZXJpZXM7IGludmVyc2lvbjsgaXRlcmF0aXZlIG1ldGhvZHM7IE5ld3RvbiBpdGVyYXRpb25zOyBQb2lzc29uJ3M7IHJhdGlvbmFsIG5lZ2F0aXZlIHBvd2VyOyByb290IGV4dHJhY3Rpb247IHNlcmllczsgc2VyaWVzIGV4cGFuc2lvbjsgdGhlb3JlbSIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7SG9sdDoxOTcxOkNQUywKICBhdXRob3IgPSAgICAgICAiUi4gQy4gSG9sdCIsCiAgdGl0bGUgPSAgICAgICAgIkNvbW1lbnRzIG9uIFByZXZlbnRpb24gb2YgU3lzdGVtIERlYWRsb2NrcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNCIsCiAgbnVtYmVyID0gICAgICAgIjEiLAogIHBhZ2VzID0gICAgICAgICIzNi0tMzgiLAogIG1vbnRoID0gICAgICAgIGphbiwKICB5ZWFyID0gICAgICAgICAiMTk3MSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJBLiBOLiBIYWJlcm1hbm4ncyBtZXRob2Qgb2YgZGVhZGxvY2sgcHJldmVudGlvbiBpcyBkaXNjdXNzZWQsIHdoZXJlIGRlYWRsb2NrIGlzIGRlZmluZWQgYXMgYSBzeXN0ZW0gc3RhdGUgZnJvbSB3aGljaCByZXNvdXJjZSBhbGxvY2F0aW9ucyB0byBjZXJ0YWluIHByb2Nlc3NlcyBhcmUgbm90IHBvc3NpYmxlLiBJdCBpcyBzaG93biB0aGF0IHRoZSBzY2hlZHVsZXIgbWF5IGludHJvZHVjZSBgYXJ0aWZpY2lhbCcgZGVhZGxvY2tzIHdoaWNoIEhhYmVybWFubidzIG1ldGhvZCBkb2VzIG5vdCBwcmV2ZW50LiBQZXJtYW5lbnQgYmxvY2tpbmcgaXMgdGhlIHNpdHVhdGlvbiB3aGVyZSBjZXJ0YWluIHByb2Nlc3NlcyBuZXZlciByZWNlaXZlIHRoZWlyIHJlc291cmNlIHJlcXVlc3RzLiBJdCBpcyBzaG93biB0aGF0IGRlYWRsb2NrIHByZXZlbnRpb24gZG9lcyBub3QgbmVjZXNzYXJpbHkgZWxpbWluYXRlIHBlcm1hbmVudCBibG9ja2luZy4gQSBtZXRob2Qgb2YgcHJldmVudGluZyBwZXJtYW5lbnQgYmxvY2tpbmcgaXMgZ2l2ZW4uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxNTBKIChPcGVyYXRpbmcgc3lzdGVtcykiLAogIGNvcnBzb3VyY2UgPSAgICJDb3JuZWxsIFVuaXYuIEl0aGFjYSwgTlksIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJDQUNNQTsgY29tcHV0ZXJzLCBkaWdpdGFsOyBjb21wdXRlcnMsIGRpZ2l0YWwsIG9wZXJhdGlvbjsgZGVhZGx5IGVtYnJhY2U7IEhhYmVybWFubidzIG1ldGhvZDsgaW50ZXJsb2NrOyBrbm90dGluZzsgbGF5b3V0OyBtdWx0aXByb2dyYW1taW5nOyBvcGVyYXRpbmcgc3lzdGVtcyAoY29tcHV0ZXJzKTsgcGVybWFuZW50IGJsb2NraW5nIHByZXZlbnRpb25zOyByZXNvdXJjZSBhbGxvY2F0aW9uOyBzY2hlZHVsaW5nOyBzdG9yYWdlIGFsbG9jYXRpb247IHN5c3RlbSBkZWFkbG9jayBwcmV2ZW50aW9uOyBzeXN0ZW0gcmVjb3Zlcnk7IHRpbWUgc2hhcmluZyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7SG9hcmU6MTk3MTpQUEYsCiAgYXV0aG9yID0gICAgICAgIkMuIEEuIFIuIEhvYXJlIiwKICB0aXRsZSA9ICAgICAgICAiUHJvb2Ygb2YgYSBQcm9ncmFtOiB7RklORH0iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTQiLAogIG51bWJlciA9ICAgICAgICIxIiwKICBwYWdlcyA9ICAgICAgICAiMzktLTQ1IiwKICBtb250aCA9ICAgICAgICBqYW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzEiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0NvbXBpbGVyL21sLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIkFuIGluZm9ybWFsIGRlc2NyaXB0aW9uIGlzIGdpdmVuIG9mIHRoZSBwdXJwb3NlIG9mIHRoZSBwcm9ncmFtIGFuZCB0aGUgbWV0aG9kIHVzZWQuIEEgc3lzdGVtYXRpYyB0ZWNobmlxdWUgaXMgZGVzY3JpYmVkIGZvciBjb25zdHJ1Y3RpbmcgYW5kIHRoZSBwcm9ncmFtIHByb29mIGR1cmluZyB0aGUgcHJvY2VzcyBvZiBjb2RpbmcgaXQsIGluIHN1Y2ggYSB3YXkgYXMgdG8gcHJldmVudCB0aGUgaW50cnVzaW9uIG9mIGxvZ2ljYWwgZXJyb3JzLiBUaGUgcHJvb2Ygb2YgdGVybWluYXRpb24gaXMgdHJlYXRlZCBhcyBhIHNlcGFyYXRlIGV4ZXJjaXNlLiBTb21lLCBjb25jbHVzaW9ucyByZWxhdGluZyB0byBnZW5lcmFsIHByb2dyYW1taW5nIG1ldGhvZG9sb2d5IGFyZSBkcmF3bi4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDI5MCAoT3RoZXIgY29tcHV0ZXIgdGhlb3J5KSIsCiAgY29ycHNvdXJjZSA9ICAgIlF1ZWVuJ3MgVW5pdi4gQmVsZmFzdCwgVUsiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYWxnb3JpdGhtIGNvcnJlY3RuZXNzOyBhbGdvcml0aG0gdGhlb3J5OyBDQUNNQTsgY29kaW5nOyBjb21wdXRlcnMsIGRpZ2l0YWw7IGNvbXB1dGVycywgZGlnaXRhbCwgcHJvZ3JhbW1pbmc7IGRvY3VtZW50YXRpb247IEZJTkQ7IElUSTsgbGFuZ3VhZ2VzOyBsb2dpY2FsIGVycm9ycyBpbnRydXNpb247IHByb2dyYW1taW5nIG1ldGhvZG9sb2d5OyBwcm9ncmFtbWluZyB0aGVvcnk7IHByb2dyYW1zIHByb29mcyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7UHJvbGw6MTk3MTpGRUEsCiAgYXV0aG9yID0gICAgICAgIkwuIEcuIFByb2xsIiwKICB0aXRsZSA9ICAgICAgICAiRnVydGhlciBldmlkZW5jZSBmb3IgdGhlIGFuYWx5c2lzIG9mIGFsZ29yaXRobXMgZm9yIHRoZSB6ZXJvLW9uZSBwcm9ncmFtbWluZyBwcm9ibGVtIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE0IiwKICBudW1iZXIgPSAgICAgICAiMSIsCiAgcGFnZXMgPSAgICAgICAgIjQ2LS00NyIsCiAgbW9udGggPSAgICAgICAgamFuLAogIHllYXIgPSAgICAgICAgICIxOTcxIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlRoZSBwdXJwb3NlIG9mIHRoaXMgbm90ZSBpcyB0byByZXBvcnQgY29tcHV0YXRpb25hbCBleHBlcmllbmNlIGFkZGl0aW9uYWwgdG8gdGhhdCByZWNlbnRseSBzdW1tYXJpemVkIFIuIEwuIEd1ZSBldCBhbCwgd2l0aCB0d28gYWxnb3JpdGhtcyBmb3IgdGhlIHplcm8tb25lIGxpbmVhciBwcm9ncmFtbWluZyBwcm9ibGVtLiBBbiBlcnJvciBpbiBHdWUncyBwYXBlciBpcyBjb3JyZWN0ZWQuIFRoZSB1dGlsaXR5IG9mIG9uZSBvZiB0aGUgYWxnb3JpdGhtcyBhcyBhIHN1Ym9wdGltaXplciBpcyBpbmRpY2F0ZWQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjAyNjAgKE9wdGltaXNhdGlvbiB0ZWNobmlxdWVzKTsgQzExODAgKE9wdGltaXNhdGlvbiB0ZWNobmlxdWVzKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIFNvdXRoYW1wdG9uLCBVSyIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhbGdvcml0aG0gYW5hbHlzaXM7IGFsZ29yaXRobSB0aGVvcnk7IENBQ01BOyBjb21wdXRhdGlvbmFsOyBFUyw7IGV4cGVyaWVuY2U7IGludGVnZXIgcHJvZ3JhbW1pbmc7IGxpbmVhciBwcm9ncmFtbWluZzsgbWF0aGVtYXRpY3M7IG9wZXJhdGlvbnMgcmVzZWFyY2g7IHN1Ym9wdGltaXNhdGlvbjsgemVybyBvbmUgdmFyaWFibGVzIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAogIHh4dGl0bGUgPSAgICAgICJGdXJ0aGVyIEV2aWRlbmNlIG9mIHRoZSBBbmFseXNpcyBvZiBBbGdvcml0aG1zIGZvciB0aGUgWmVyb29uZSBQcm9ncmFtbWluZyBQcm9ibGVtIiwKfQoKQEFydGljbGV7Q29sZW1hbjoxOTcxOkFBQywKICBhdXRob3IgPSAgICAgICAiTS4gVy4gQ29sZW1hbiBhbmQgTS4gUy4gVGF5bG9yIiwKICB0aXRsZSA9ICAgICAgICAie0FDTX0gQWxnb3JpdGhtIDQwMzogQ2lyY3VsYXIgSW50ZWdlciBQYXJ0aXRpb25pbmciLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTQiLAogIG51bWJlciA9ICAgICAgICIxIiwKICBwYWdlcyA9ICAgICAgICAiNDgtLTQ4IiwKICBtb250aCA9ICAgICAgICBqYW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzEiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9NaXNjL2FjbS5iaWIiLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNzMxMCAoTWF0aGVtYXRpY3MgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIkFiZXJkZWVuIFByb3ZpbmcgR3JvdW5kLCBNRCwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiY2lyY3VsYXIgaW50ZWdlciBwYXJ0aXRpb25pbmc7IGNvbWJpbmF0aW9uczsgZGVzaWduOyBleHBlcmltZW50cyBkZXNpZ247IG51bWJlciB0aGVvcnk7IHN0YXRpc3RpY2FsOyBzdWJyb3V0aW5lcyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7THVjYXM6MTk3MTpBQUMsCiAgYXV0aG9yID0gICAgICAgIkMuIFcuIHtMdWNhcywgSnIufSBhbmQgQy4gVy4gVGVycmlsbCIsCiAgdGl0bGUgPSAgICAgICAgIntBQ019IEFsZ29yaXRobSA0MDQ6IENvbXBsZXggR2FtbWEgRnVuY3Rpb24iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTQiLAogIG51bWJlciA9ICAgICAgICIxIiwKICBwYWdlcyA9ICAgICAgICAiNDgtLTQ5IChvciA0OC0tNDg/PykiLAogIG1vbnRoID0gICAgICAgIGphbiwKICB5ZWFyID0gICAgICAgICAiMTk3MSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDEyMCAoRnVuY3Rpb25hbCBhbmFseXNpcyk7IEM3MzEwIChNYXRoZW1hdGljcyBjb21wdXRpbmcpIiwKICBjb3Jwc291cmNlID0gICAiQ29sbC4gV2lsbGlhbSBhbmQgTWFyeSwgV2lsbGlhbXNidXJnLCBWQSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiYWxnb3JpdGhtOyBDR0FNTUE7IGNvbXBsZXggZ2FtbWEgZnVuY3Rpb24gZXZhbHVhdGlvbjsgZm9ybXVsYTsgZnVuY3Rpb24gZXZhbHVhdGlvbjsgcG9sZXMgb2YgZ2FtbWEgZnVuY3Rpb247IHJlY3Vyc2lvbiBmb3JtdWxhOyByZWZsZWN0aW9uOyBTdGlybGluZydzIGFzeW1wdG90aWMgc2VyaWVzOyBzdWJyb3V0aW5lIGluIEFMR09MOyBzdWJyb3V0aW5lcyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7UmVkaXNoOjE5NzE6Q0xDLAogIGF1dGhvciA9ICAgICAgICJLLiBBLiBSZWRpc2giLAogIHRpdGxlID0gICAgICAgICJDb21tZW50IG9uIHtMb25kb259J3MgQ2VydGlmaWNhdGlvbiBvZiBBbGdvcml0aG0gMjQ1IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE0IiwKICBudW1iZXIgPSAgICAgICAiMSIsCiAgcGFnZXMgPSAgICAgICAgIjUwLS01MSIsCiAgbW9udGggPSAgICAgICAgamFuLAogIHllYXIgPSAgICAgICAgICIxOTcxIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiRnJpIEphbiAxNyAxODoyOTo1NSAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBrZXl3b3JkcyA9ICAgICAiY2VydGlmaWNhdGlvbjsgZGVidWdnaW5nOyBpbi1wbGFjZSBzb3J0aW5nOyBtZXRhdGhlb3J5OyBwcm9vZiBvZiBhbGdvcml0aG1zOyBzb3J0aW5nIiwKfQoKQEFydGljbGV7UG9sbGFjazoxOTcxOkNDRCwKICBhdXRob3IgPSAgICAgICAiUy4gTC4gUG9sbGFjayIsCiAgdGl0bGUgPSAgICAgICAgIkNvbW1lbnQgb24gdGhlIGNvbnZlcnNpb24gb2YgZGVjaXNpb24gdGFibGVzIHRvIGNvbXB1dGVyIHByb2dyYW1zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE0IiwKICBudW1iZXIgPSAgICAgICAiMSIsCiAgcGFnZXMgPSAgICAgICAgIjUyLS01MiIsCiAgbW9udGggPSAgICAgICAgamFuLAogIHllYXIgPSAgICAgICAgICIxOTcxIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTEwIChTeXN0ZW1zIGFuYWx5c2lzIGFuZCBwcm9ncmFtbWluZykiLAogIGNvcnBzb3VyY2UgPSAgICJTLiBELiBMZWlkZXNkb3JmIGFuZCBDby4sIE5ZLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJhaWRzOyBhcHBsaWNhdGlvbjsgYnVzaW5lc3M7IGNvbW1lbnRzOyBjb21tdW5pY2F0aW9uOyBjb21wdXRlciBwcm9ncmFtOyBjb252ZXJzaW9uOyBkZWNpc2lvbiB0YWJsZXM7IGRpYWdub3N0aWM7IHN5c3RlbXMgYW5hbHlzaXMiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle1NjaHdheWRlcjoxOTcxOkNMRSwKICBhdXRob3IgPSAgICAgICAiSy4gU2Nod2F5ZGVyIiwKICB0aXRsZSA9ICAgICAgICAiQ29udmVyc2lvbiBvZiBMaW1pdGVkLUVudHJ5IERlY2lzaW9uIFRhYmxlcyB0byBDb21wdXRlciBQcm9ncmFtcy4gYSBQcm9wb3NlZCBNb2RpZmljYXRpb24gdG8ge1BvbGxhY2t9J3MgQWxnb3JpdGhtIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE0IiwKICBudW1iZXIgPSAgICAgICAiMiIsCiAgcGFnZXMgPSAgICAgICAgIjY5LS03MyIsCiAgbW9udGggPSAgICAgICAgZmViLAogIHllYXIgPSAgICAgICAgICIxOTcxIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVGh1IEphbiAxNiAxOTo1Mjo0NyBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlMuIFBvbGxhY2sgaGFzIHByb3Bvc2VkIGFuIGFsZ29yaXRobSBmb3IgY29udmVydGluZyBkZWNpc2lvbiB0YWJsZXMgaW50byBmbG93Y2hhcnRzIHdoaWNoIG1pbmltaXplIHN1YnNlcXVlbnQgZXhlY3V0aW9uIHRpbWUgd2hlbiBjb21waWxlZCBpbnRvIGEgY29tcHV0ZXIgcHJvZ3JhbS4gVHdvIG1vZGlmaWNhdGlvbnMgdG8gdGhpcyBhbGdvcml0aG0gYXJlIHByb3Bvc2VkLiBUaGUgZmlyc3QgcmVsaWVzIG9uIFNoYW5ub24ncyBub2lzZWxlc3MgY29kaW5nIHRoZW9yZW0gYW5kIHRoZSBjb21tdW5pY2F0aW9ucyBjb25jZXB0IG9mIGVudHJvcHkgYnV0IGRvZXMgbm90IGNvbXBsZXRlbHkgdGVzdCB0aGUgRUxTRSBSdWxlLiBUaGUgc2Vjb25kIG1vZGlmaWNhdGlvbiBjb21wbGV0ZWx5IHRlc3RzIHRoZSBFTFNFIFJ1bGUgYnV0IHJlc3VsdHMgaW4gbW9yZSBleGVjdXRpb25zIHRoYW4gdGhlIGZpcnN0IG1vZGlmaWNhdGlvbi4gQm90aCBtb2RpZmljYXRpb25zIHJlc3VsdCBpbiBsb3dlciBleGVjdXRpb24gdGltZSB0aGFuIFBvbGxhY2sncyBhbGdvcml0aG0uIEhvd2V2ZXIsIG5laXRoZXIgbW9kaWZpY2F0aW9uIGd1YXJhbnRlZXMgYSBnbG9iYWxseSBvcHRpbWFsIHNvbHV0aW9uLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJDQUNNQTsgY29tbXVuaWNhdGlvbiBjaGFubmVsczsgY29tcHV0ZXJzLCBkaWdpdGFsOyBpbmZvcm1hdGlvbiB0aGVvcnk7IHByb2dyYW1taW5nOyBwcm9ncmFtcyIsCn0KCkBBcnRpY2xle1Nod2F5ZGVyOjE5NzE6Q0xFLAogIGF1dGhvciA9ICAgICAgICJLLiBTaHdheWRlciIsCiAgdGl0bGUgPSAgICAgICAgIkNvbnZlcnNpb24gb2YgbGltaXRlZC1lbnRyeSBkZWNpc2lvbiB0YWJsZXMgdG8gY29tcHV0ZXIgcHJvZ3JhbXMtYSBwcm9wb3NlZCBtb2RpZmljYXRpb24gdG8ge1BvbGxhY2t9J3MgYWxnb3JpdGhtIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE0IiwKICBudW1iZXIgPSAgICAgICAiMiIsCiAgcGFnZXMgPSAgICAgICAgIjY5LS03MyIsCiAgbW9udGggPSAgICAgICAgZmViLAogIHllYXIgPSAgICAgICAgICIxOTcxIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTEwIChTeXN0ZW1zIGFuYWx5c2lzIGFuZCBwcm9ncmFtbWluZykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBDaGljYWdvLCBJTCwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXI7IGNvbnZlcnNpb247IGRlY2lzaW9uIHRhYmxlczsgZmxvdyBjaGFydGluZzsgZmxvd2NoYXJ0aW5nOyBtb2RpZmljYXRpb25zOyBQb2xsYWNrJ3MgYWxnb3JpdGhtOyBwcm9ncmFtbWluZzsgcHJvZ3JhbXMiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0Jlcm5zdGVpbjoxOTcxOlBTVCwKICBhdXRob3IgPSAgICAgICAiQS4gSi4gQmVybnN0ZWluIGFuZCBKLiBDLiBTaGFycCIsCiAgdGl0bGUgPSAgICAgICAgIkEgcG9saWN5LWRyaXZlbiBzY2hlZHVsZXIgZm9yIGEgdGltZS1zaGFyaW5nIHN5c3RlbSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNCIsCiAgbnVtYmVyID0gICAgICAgIjIiLAogIHBhZ2VzID0gICAgICAgICI3NC0tNzgiLAogIG1vbnRoID0gICAgICAgIGZlYiwKICB5ZWFyID0gICAgICAgICAiMTk3MSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJBIHNjaGVkdWxpbmcgYW5kIHN3YXBwaW5nIGFsZ29yaXRobSB3aGljaCBrZWVwcyB0aGUgcmVzb3VyY2UgY291bnQgb2YgZWFjaCBwcm9jZXNzIGFib3ZlIGl0cyBwb2xpY3kgZnVuY3Rpb24gd2lsbCBwcm92aWRlIHRoZSBzcGVjaWZpZWQgbGV2ZWwgb2Ygc2VydmljZS4gT3ZlcmhlYWQgY2FuIGJlIHJlZHVjZWQgYnkgYXZvaWRpbmcgc3dhcHMgb2YgcHJvY2Vzc2VzIHdoaWNoIGhhdmUgcmVjZWl2ZWQgYXQgbGVhc3QgdGhpcyBsZXZlbCBvZiBzZXJ2aWNlLiBUaGUgYWxnb3JpdGhtIGhhcyBiZWVuIGltcGxlbWVudGVkIGluIGEgZ2VuZXJhbCBwdXJwb3NlIG9wZXJhdGluZyBzeXN0ZW0sIGFuZCBpdCBoYXMgcHJvdmlkZWQgc2lnbmlmaWNhbnRseSBiZXR0ZXIgc2VydmljZSB0byBpbnRlcmFjdGl2ZSBhbmQgdG8gYmF0Y2ggam9icyB0aGFuIHRoZSBwcmV2aW91cyBzY2hlZHVsZXIuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxNTBKIChPcGVyYXRpbmcgc3lzdGVtcykiLAogIGNvcnBzb3VyY2UgPSAgICJHZW5lcmFsIEVsZWN0cmljLCBTY2hlbmVjdGFkeSwgTlksIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJDQUNNQTsgY29tcHV0YXRpb24gdGhlb3J5OyBjb21wdXRlcnMsIGRpZ2l0YWw7IGNvbXB1dGVycywgZGlnaXRhbCwgb3BlcmF0aW5nOyBvcGVyYXRpbmc7IG9wZXJhdGluZyBzeXN0ZW1zIChjb21wdXRlcnMpOyBwb2xpY3kgZHJpdmVuOyBzY2hlZHVsZXI7IHNjaGVkdWxpbmcgYWxnb3JpdGhtOyBzdXBlcnZpc29yeSBhbmQgZXhlY3V0aXZlIHByb2dyYW1zOyBzdXBlcnZpc29yeSBwcm9ncmFtczsgc3lzdGVtczsgdGltZSBzaGFyaW5nOyB0aW1lIHNoYXJpbmcgc3lzdGVtczsgdGltZS1zaGFyaW5nIHN5c3RlbXMiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle05pZWxzZW46MTk3MTpBU1QsCiAgYXV0aG9yID0gICAgICAgIk4uIFIuIE5pZWxzZW4iLAogIHRpdGxlID0gICAgICAgICJBbiBhbmFseXNpcyBvZiBzb21lIHRpbWUtc2hhcmluZyB0ZWNobmlxdWVzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE0IiwKICBudW1iZXIgPSAgICAgICAiMiIsCiAgcGFnZXMgPSAgICAgICAgIjc5LS05MCIsCiAgbW9udGggPSAgICAgICAgZmViLAogIHllYXIgPSAgICAgICAgICIxOTcxIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlRoZSBlZmZlY3RpdmVuZXNzIG9mIGNlcnRhaW4gdGltZS1zaGFyaW5nIHRlY2huaXF1ZXMgc3VjaCBhcyBwcm9ncmFtIHJlbG9jYXRpb24sIGRpc2sgcm90YXRpb25hbCBkZWxheSBtaW5pbWl6YXRpb24sIGFuZCBzd2FwIHZvbHVtZSBtaW5pbWl6YXRpb24gaXMgaW52ZXN0aWdhdGVkLiBTdW1tYXJ5IGRhdGEgaXMgcHJlc2VudGVkLCBhbmQgdGhlIGZpbmRpbmdzIGFyZSBkaXNjdXNzZWQuIFRoZSB2ZWhpY2xlIGZvciB0aGlzIGludmVzdGlnYXRpb24gd2FzIGEgU0ktTVVMQSBiYXNlZCBzaW11bGF0aW9uIG1vZGVsIHJlZmxlY3RpbmcgYW4gZWFybHkgZnJhbWV3b3JrIGZvciBhIHBsYW5uZWQgQnVycm91Z2hzIEI2NTAwIHRpbWUtc2hhcmluZyBzeXN0ZW0uIEluYXNtdWNoIGFzIHRoZSBCNjUwMCBzeXN0ZW0gaXMgYmFzZWQgdXBvbiB0aGUgdXNlIG9mIHZhcmlhYmxlIHNpemVkIHNlZ21lbnRzIGFuZCBhIGR5bmFtaWMgb3ZlcmxheSBwcm9jZWR1cmUsIGRhdGEgaXMgYWxzbyBwcmVzZW50ZWQgd2hpY2ggcHJvdmlkZXMgc29tZSBpbmRpY2F0aW9uIG9mIHRoZSBlZmZlY3RpdmVuZXNzIG9mIHRoaXMgdHlwZSBvZiBvcmdhbml6YXRpb24gaW4gYSB0aW1lLXNoYXJpbmcgZW52aXJvbm1lbnQuIFRoZSBkZXNpZ24gY2hhcmFjdGVyaXN0aWNzIGFuZCBvcGVyYXRpb25hbCBjYXBhYmlsaXRpZXMgb2YgdGhlIHNpbXVsYXRpb24gbW9kZWwgYXJlIGFsc28gZGVzY3JpYmVkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTUwSiAoT3BlcmF0aW5nIHN5c3RlbXMpIiwKICBjb3Jwc291cmNlID0gICAiU3RhbmZvcmQgVW5pdi4sIENBLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiQ0FDTUE7IGNhcGFiaWxpdGllczsgY29tcHV0ZXJzLCBkaWdpdGFsOyBjb21wdXRlcnMsIGRpZ2l0YWwsIG9wZXJhdGluZzsgZGVzaWduIGNoYXJhY3RlcmlzdGljczsgZGlzayByb3RhdGlvbmFsIGRlbGF5OyBtaW5pbWl6YXRpb247IG9wZXJhdGluZyBzeXN0ZW1zOyBvcGVyYXRpbmcgc3lzdGVtcyAoY29tcHV0ZXJzKTsgb3BlcmF0aW9uYWw7IHByb2dyYW0gcmVsb2NhdGlvbjsgc2ltdWxhdGlvbjsgc2ltdWxhdGlvbiBtb2RlbDsgc3dhcCB2b2x1bWUgbWluaW1pemF0aW9uOyBzeXN0ZW1zIGFuYWx5c2lzOyB0ZWNobmlxdWVzOyB0aW1lIHNoYXJpbmc7IHRpbWUgc2hhcmluZyBzeXN0ZW1zOyB0aW1lLXNoYXJpbmcgc3lzdGVtcyIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7U2xhZ2xlOjE5NzE6RUFMLAogIGF1dGhvciA9ICAgICAgICJKLiBSLiBTbGFnbGUgYW5kIEMuIEQuIEZhcnJlbGwiLAogIHRpdGxlID0gICAgICAgICJFeHBlcmltZW50cyBpbiBBdXRvbWF0aWMgTGVhcm5pbmcgZm9yIGEgTXVsdGlwdXJwb3NlIEhldXJpc3RpYyBQcm9ncmFtIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE0IiwKICBudW1iZXIgPSAgICAgICAiMiIsCiAgcGFnZXMgPSAgICAgICAgIjkxLS05OSAob3IgOTEtLTk4Pz8pIiwKICBtb250aCA9ICAgICAgICBmZWIsCiAgeWVhciA9ICAgICAgICAgIjE5NzEiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhYnN0cmFjdCA9ICAgICAiQW4gYXV0b21hdGljIGxlYXJuaW5nIGNhcGFiaWxpdHkgaGFzIGJlZW4gZGV2ZWxvcGVkIGFuZCBpbXBsZW1lbnRlZCBmb3IgdXNlIHdpdGggdGhlIE1VTFRJUExFIChNVUxUSXB1cnBvc2UgUHJvZ3JhbSB0aGF0IExFYXJucykgaGV1cmlzdGljIHRyZWUtc2VhcmNoaW5nIHByb2dyYW0sIHdoaWNoIGlzIHByZXNlbnRseSBiZWluZyBhcHBsaWVkIHRvIHJlc29sdXRpb24gdGhlb3JlbS1wcm92aW5nIGluIHByZWRpY2F0ZSBjYWxjdWx1cy4gTVVMVElQTEUncyBwcm92aW5nIHByb2dyYW0gKFBQKSB1c2VzIHR3byBldmFsdWF0aW9uIGZ1bmN0aW9ucyB0byBndWlkZSBpdHMgc2VhcmNoIGZvciBhIHByb29mIG9mIHdoZXRoZXIgb3Igbm90IGEgcGFydGljdWxhciBnb2FsIGlzIGFjaGlldmFibGUuIFRoaXJ0ZWVuIGdlbmVyYWwgZmVhdHVyZXMgb2YgcHJlZGljYXRlIGNhbGN1bHVzIGNsYXVzZXMgd2VyZSBjcmVhdGVkIGZvciB1c2UgaW4gdGhlIGF1dG9tYXRpYyBsZWFybmluZyBvZiBiZXR0ZXIgZXZhbHVhdGlvbiBmdW5jdGlvbnMgZm9yIFBQLiBBIG11bHRpcGxlIHJlZ3Jlc3Npb24gcHJvZ3JhbSB3YXMgdXNlZCB0byBwcm9kdWNlIG9wdGltYWwgY29lZmZpY2llbnRzIGZvciBsaW5lYXIgcG9seW5vbWlhbCBmdW5jdGlvbnMgaW4gdGVybXMgb2YgdGhlIGZlYXR1cmVzLlxwYXIgQWxzbywgYXV0b21hdGljIGRhdGEtaGFuZGxpbmcgcm91dGluZXMgd2VyZSB3cml0dGVuIGZvciBwYXNzaW5nIGRhdGEgYmV0d2VlbiB0aGUgbGVhcm5pbmcgcHJvZ3JhbSBhbmQgdGhlIHByb3ZpbmcgcHJvZ3JhbSwgYW5kIGZvciBhbmFseXppbmcgYW5kIHN1bW1hcml6aW5nIHJlc3VsdHMuIERhdGEgd2FzIGdlbmVyYWxseSBjb2xsZWN0ZWQgZm9yIGxlYXJuaW5nIChyZWdyZXNzaW9uIGFuYWx5c2lzKSBmcm9tIHRoZSBleHBlcmllbmNlIG9mIFBQLiBBIG51bWJlciBvZiBleHBlcmltZW50cyB3ZXJlIHBlcmZvcm1lZCB0byB0ZXN0IHRoZSBlZmZlY3RpdmVuZXNzIGFuZCBnZW5lcmFsaXR5IG9mIHRoZSBsZWFybmluZyBwcm9ncmFtLiBSZXN1bHRzIHNob3dlZCB0aGF0IHRoZSBsZWFybmluZyBwcm9kdWNlZCBkcmFtYXRpYyBpbXByb3ZlbWVudHMgaW4gdGhlIHNvbHV0aW9ucyB0byBwcm9ibGVtcyB3aGljaCB3ZXJlIGluIHRoZSBzYW1lIGRvbWFpbiBhcyB0aG9zZSB1c2VkIGZvciBjb2xsZWN0aW9uIGxlYXJuaW5nIGRhdGEuIExlYXJuaW5nIHdhcyBhbHNvIHNob3duIHRvIGdlbmVyYWxpemUgc3VjY2Vzc2Z1bGx5IHRvIGRvbWFpbnMgb3RoZXIgdGhhbiB0aG9zZSB1c2VkIGZvciBkYXRhIGNvbGxlY3Rpb24uIEFub3RoZXIgZXhwZXJpbWVudCBkZW1vbnN0cmF0ZWQgdGhhdCB0aGUgbGVhcm5pbmcgcHJvZ3JhbSBjb3VsZCBzaW11bHRhbmVvdXNseSBpbXByb3ZlIHBlcmZvcm1hbmNlIG9uIHByb2JsZW1zIGluIGEgc3BlY2lmaWMgZG9tYWluIGFuZCBvbiBwcm9ibGVtcyBpbiBhIHZhcmlldHkgb2YgZG9tYWlucy4gU29tZSB2YXJpYXRpb25zIG9mIHRoZSBsZWFybmluZyBwcm9ncmFtIHdlcmUgYWxzbyB0ZXN0ZWQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzEyMzAgKEFydGlmaWNpYWwgaW50ZWxsaWdlbmNlKSIsCiAgY29ycHNvdXJjZSA9ICAgIk5hdC4gSW5zdC4gSGVhbHRoLCBCZXRoZXNkYSwgTUQsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImFkYXB0aXZlOyBhcnRpZmljaWFsIGludGVsbGlnZW5jZTsgYXV0b21hdGljIGxlYXJuaW5nOyBjb21wdXRlciBhaWRlZCBpbnN0cnVjdGlvbjsgY29tcHV0ZXIgYWlkZWQgbGVhcm5pbmc7IGVkdWNhdGlvbjsgZXhwZXJpbWVudGFsIGRldmVsb3BtZW50OyBoZXVyaXN0aWM7IGhldXJpc3RpYyBwcm9ncmFtbWluZzsgaGV1cmlzdGljIHRyZWUgc2VhcmNoaW5nIHByb2dyYW07IGxlYXJuaW5nOyBsZWFybmluZyBzeXN0ZW1zOyBMSVNQOyBtdWx0aXBsZSByZWdyZXNzaW9uOyBtdWx0aXB1cnBvc2UgaGV1cmlzdGljIHByb2dyYW07IHByb2JsZW0tc29sdmluZzsgcmVzb2x1dGlvbjsgc2VsZi1tb2RpZnlpbmc7IHN5c3RlbTsgdGhlb3JlbS1wcm92aWRpbmc7IHRyZWUtc2VhcmNoaW5nOyB0cmVlczsgdHJlZXMgKG1hdGhlbWF0aWNzKSIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7SHVyd2l0ejoxOTcxOlBEViwKICBhdXRob3IgPSAgICAgICAiSC4ge0h1cndpdHosIEpyLn0iLAogIHRpdGxlID0gICAgICAgICJPbiB0aGUgUHJvYmFiaWxpdHkgRGlzdHJpYnV0aW9uIG9mIHRoZSBWYWx1ZXMgb2YgQmluYXJ5IFRyZWVzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE0IiwKICBudW1iZXIgPSAgICAgICAiMiIsCiAgcGFnZXMgPSAgICAgICAgIjk5LS0xMDIiLAogIG1vbnRoID0gICAgICAgIGZlYiwKICB5ZWFyID0gICAgICAgICAiMTk3MSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJcbGRvdHN7fXVuY3Rpb24gZm9yIGJpbmFyeSB0cmVlIHZhbHVlcywgdGhlIHZhbHVlcyByZWZsZWN0aW5nIHNvcnRpbmcgZWZmb3J0LiBUaGUgYW5hbHlzaXMgZG9lcyBub3QgYXNzdW1lIHVuaWZvcm1seSBkaXN0cmlidXRlZCBicmFuY2hpbmcgcmF0aW9zLCBhbmQgdGhlcmVmb3JlIGlzIGFwcGxpY2FibGUgdG8gYSBmYW1pbHkgb2Ygc29ydGluZyBhbGdvcml0aG1zIGRpc2N1c3NlZCBieSBIb2FyZSwgU2luZ2xldG9uLCBhbmQgdmFuIEVtZGVuLiBccGFyIFRoZSBzb2x1dGlvbiB0byB0aGUgaW50ZWdyYWwgZXF1YXRpb24gaW5kaWNhdGVzIHRoYXQgdXNpbmcgbW9yZSBhZHZhbmNlZCBhbGdvcml0aG1zIGluIHRoZSBmYW1pbHkgbWFrZXMgb25seSBtaW5vciByZWR1Y3Rpb25zIGluIHRoZSBleHBlY3RlZCBzb3J0aW5nIGVmZm9ydCwgYnV0IHN1YnN0YW50aWFsbHkgcmVkdWNlcyB0aGUgdmFyaWFuY2UgaW4gc29ydGluZyBlZmZvcnQuIFN0YXRpc3RpY2FsIHRlc3RzIG9mIHRoZSB2YWx1ZXMgb2Ygc2V2ZXJhbCB0aG91c2FuZCB0cmVlcyBjb250YWluaW5nIHVwIHRvIDEwLDAwMCBwb2ludHMgaGF2ZSBnaXZlbiBmaXJzdCwgc2Vjb25kLCBhbmQgdGhpcmQgbW9tZW50cyBvZiB0aGUgdmFsdWUgZGlzdHJpYnV0aW9uIGZ1bmN0aW9uIGluIHNhdGlzZmFjdG9yeSBhZ3JlZW1lbnQgd2l0aCB0aGUgbW9tZW50cyBjb21wdXRlZCBmcm9tIHRoZSBnZW5lcmF0aW5nIGZ1bmN0aW9uLiBUaGUgZW1waXJpY2FsIHRlc3RzLCBhcyB3ZWxsIGFzIHRoZSBhbmFseXRpY2FsIHJlc3VsdHMsIGFyZSBpbiBhZ3JlZW1lbnQgd2l0aCBwcmV2aW91c2x5IHB1Ymxpc2hlZCByZXN1bHRzIGZvciB0aGUgZmlyc3QgbW9tZW50IGluIHRoZSBjYXNlcyBvZiB1bmlmb3JtIGFuZCBub251bmlmb3JtIGRpc3RyaWJ1dGlvbiBvZiBicmFuY2hpbmcgcmF0aW8sIGFuZCBmb3IgdGhlIHNlY29uZCBtb21lbnQgaW4gdGhlIGNhc2Ugb2YgdW5pZm9ybSBkaXN0cmlidXRpb24gb2YgYnJhbmNoaW5nIHJhdGlvLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTMwIChEYXRhIGhhbmRsaW5nIHRlY2huaXF1ZXMpIiwKICBjb3Jwc291cmNlID0gICAiR2VuZXJhbCBFbGVjdHJpYywgU2NoZW5lY3RhZHksIE5ZLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYmluYXJ5IHRyZWU7IGJpbmFyeSB0cmVlczsgQ0FDTUE7IGdlbmVyYXRpb247IGludGVncmFsIGVxdWF0aW9uOiBmdW5jdGlvbjsgaW50ZWdyYWwgZXF1YXRpb25zOyBOIFQ7IHByb2JhYmlsaXR5IGRpc3RyaWJ1dGlvbjsgc29ydGluZzsgc3RhdGlzdGljYWwgYW5hbHlzaXM7IHN0YXRpc3RpY2FsIHRlc3RzOyBzdGF0aXN0aWNzOyB0cmVlczsgdHJlZXMgKG1hdGhlbWF0aWNzKTsgdmFsdWVzIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtTbGFnbGU6MTk3MTpBR1QsCiAgYXV0aG9yID0gICAgICAgIkouIFIuIFNsYWdsZSBhbmQgUi4gQy4gVC4gTGVlIiwKICB0aXRsZSA9ICAgICAgICAiQXBwbGljYXRpb24gb2YgR2FtZSBUcmVlIFNlYXJjaGluZyBUZWNobmlxdWVzIHRvIFNlcXVlbnRpYWwgUGF0dGVybiBSZWNvZ25pdGlvbiIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNCIsCiAgbnVtYmVyID0gICAgICAgIjIiLAogIHBhZ2VzID0gICAgICAgICIxMDMtLTExMCIsCiAgbW9udGggPSAgICAgICAgZmViLAogIHllYXIgPSAgICAgICAgICIxOTcxIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkEgc2VxdWVudGlhbCBwYXR0ZXJuIHJlY29nbml0aW9uIChTUFIpIHByb2NlZHVyZSBkb2VzIG5vdCB0ZXN0IGFsbCB0aGUgZmVhdHVyZXMgb2YgYSBwYXR0ZXJuIGF0IG9uY2UuIEluc3RlYWQsIGl0IHNlbGVjdHMgYSBmZWF0dXJlIHRvIGJlIHRlc3RlZC4gQWZ0ZXIgcmVjZWl2aW5nIHRoZSByZXN1bHQgb2YgdGhhdCB0ZXN0LCB0aGUgcHJvY2VkdXJlIGVpdGhlciBjbGFzc2lmaWVzIHRoZSB1bmtub3duIHBhdHRlcm4gb3Igc2VsZWN0cyBhbm90aGVyIGZlYXR1cmUgdG8gYmUgdGVzdGVkLCBldGMuIE1lZGljYWwgZGlhZ25vc2lzIGlzIGFuIGV4YW1wbGUgb2YgU1BSLiBJbiB0aGlzIHBhcGVyIHRoZSBhdXRob3JzIHN1Z2dlc3QgdGhhdCBTUFIgYmUgdmlld2VkIGFzIGEgb25lLXBlcnNvbiBnYW1lIHBsYXllZCBhZ2FpbnN0IG5hdHVyZSAoY2hhbmNlKS4gVmlydHVhbGx5IGFsbCB0aGUgcG93ZXJmdWwgdGVjaG5pcXVlcyBkZXZlbG9wZWQgZm9yIHNlYXJjaGluZyB0d28tcGVyc29uLCBzdHJpY3RseSBjb21wZXRpdGl2ZSBnYW1lIHRyZWVzIGNhbiBlYXNpbHkgYmUgaW5jb3Jwb3JhdGVkIGVpdGhlciBkaXJlY3RseSBvciBieSBhbmFsb2d5IGludG8gU1BSIHByb2NlZHVyZXMuIFxwYXIgSW4gcGFydGljdWxhciwgb25lIGNhbiBpbmNvcnBvcmF0ZSB0aGUgYGBtaW5pIGF2ZXJhZ2UgYmFja2luZy11cCBwcm9jZWR1cmUnJyBhbmQgdGhlIGBgZ2FtbWEgcHJvY2VkdXJlLCcnIHdoaWNoIGFyZSB0aGUgYW5hbG9ndWVzIG9mIHRoZSBgYG1pbmltYXggYmFja2luZy11cCBwcm9jZWR1cmUnJyBhbmQgdGhlIGBgYWxwaGEtYmV0YSBwcm9jZWR1cmUsJycgcmVzcGVjdGl2ZWx5LiBccGFyIFNvbWUgY29tcHV0ZXIgc2ltdWxhdGVkIGV4cGVyaW1lbnRzIGluIGNoYXJhY3RlciByZWNvZ25pdGlvbiBhcmUgcHJlc2VudGVkLiBUaGUgcmVzdWx0cyBpbmRpY2F0ZSB0aGF0IHRoZSBhcHByb2FjaCBpcyBwcm9taXNpbmcuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjYxNDBDIChPcHRpY2FsIGluZm9ybWF0aW9uLCBpbWFnZSBhbmQgdmlkZW8gc2lnbmFsIHByb2Nlc3NpbmcpOyBDMTI1MCAoUGF0dGVybiByZWNvZ25pdGlvbikiLAogIGNvcnBzb3VyY2UgPSAgICJOYXQuIEluc3QuIEhlYWx0aCwgQmV0aGVzZGEsIE1ELCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYmlvZW5naW5lZXJpbmcsIGNvbXB1dGVyIGFwcGxpY2F0aW9uczsgYnJhbmNoLWFuZC1ib3VuZCBhcHByb2FjaDsgQ0FDTUE7IENBTDsgY29tcHV0ZXJzLCBkaWdpdGFsLCBjaGFyYWN0ZXI7IGR5bmFtaWMgcHJvZ3JhbW1pbmc7IGdhbWUgYWdhaW5zdCBuYXR1cmU7IGdhbWUgdGhlb3J5OyBnYW1lIHRoZW9yeSBhcHBsaWNhdGlvbjsgZ2FtZSB0cmVlIHNlYXJjaGluZzsgZ2FtbWEgcHJvY2VkdXJlOyBtaW5pIGF2ZXJhZ2UgYmFja2luZy11cCBwcm9jZWR1cmU7IG9wdGltYWwgc29sdXRpb247IHBhdHRlcm47IHBhdHRlcm4gcmVjb2duaXRpb247IHBhdHRlcm4gcmVjb2duaXRpb24gc3lzdGVtczsgcmVjb2duaXRpb247IHNlcXVlbnRpYWwgcGF0dGVybiByZWNvZ25pdGlvbjsgdGVjaG5pcXVlczsgdHJlZXM7IHRyZWVzIChtYXRoZW1hdGljcykiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle1Jva25lOjE5NzE6Q0lBLAogIGF1dGhvciA9ICAgICAgICJKLiBSb2tuZSBhbmQgUC4gTGFuY2FzdGVyIiwKICB0aXRsZSA9ICAgICAgICAiQ29tcGxleCBJbnRlcnZhbCBBcml0aG1ldGljIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE0IiwKICBudW1iZXIgPSAgICAgICAiMiIsCiAgcGFnZXMgPSAgICAgICAgIjExMS0tMTEyIiwKICBtb250aCA9ICAgICAgICBmZWIsCiAgeWVhciA9ICAgICAgICAgIjE5NzEiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiQ29tcGxleCBpbnRlcnZhbCBhcml0aG1ldGljIGlzIGRlZmluZWQgdXNpbmcgcmVhbCBpbnRlcnZhbCBhcml0aG1ldGljLiBDb21wbGV4IGludGVydmFsIGRpdmlzaW9uIGlzIGRlZmluZWQgc28gYXMgdG8gYXNzdXJlIHNtYWxsZXN0IHBvc3NpYmxlIHJlc3VsdGluZyBpbnRlcnZhbHMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzUyMzAgKERpZ2l0YWwgYXJpdGhtZXRpYyBtZXRob2RzKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIENhbGdhcnksIEFsdGEuLCBDYW5hZGEiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcGxleCBpbnRlcnZhbCBhcml0aG1ldGljOyBjb21wbGV4IGludGVydmFsczsgZGlnaXRhbCBhcml0aG1ldGljOyBtYXRoZW1hdGljczsgbnVtZXJpY2FsIG1hdGhlbWF0aWNzOyBudW1lcmljYWwgbWV0aG9kczsgb247IHJlYWwgaW50ZXJ2YWwgYXJpdGhtZXRpYzsgcmVhbCBpbnRlcnZhbHMiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0RlbGw6MTk3MTpBQVIsCiAgYXV0aG9yID0gICAgICAgIkEuIE0uIERlbGwgYW5kIFIuIEwuIFdlaWwgYW5kIEcuIEwuIFRob21wc29uIiwKICB0aXRsZSA9ICAgICAgICAie0FDTX0gQWxnb3JpdGhtIDQwNTogUm9vdHMgb2YgTWF0cml4IFBlbmNpbHM6IFRoZSBHZW5lcmFsaXplZCBFaWdlbnZhbHVlIFByb2JsZW0iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTQiLAogIG51bWJlciA9ICAgICAgICIyIiwKICBwYWdlcyA9ICAgICAgICAiMTEzLS0xMTciLAogIG1vbnRoID0gICAgICAgIGZlYiwKICB5ZWFyID0gICAgICAgICAiMTk3MSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDE0MCAoTGluZWFyIGFsZ2VicmEpOyBDNzMxMCAoTWF0aGVtYXRpY3MgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIENoaWNhZ28sIElMLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJhbGdlYnJhOyBlaWdlbnZhbHVlcyBhbmQgZWlnZW5mdW5jdGlvbnM7IGdlbmVyYWxpc2VkIGVpZ2VudmFsdWU7IGxpbmVhcjsgbWF0cml4IGFsZ2VicmE7IHByb2JsZW07IHJvb3RzIG9mIG1hdHJpeCBwZW5jaWxzOyBzdWJyb3V0aW5lcyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7Tm9sbDoxOTcxOlNDRywKICBhdXRob3IgPSAgICAgICAiQS4gTS4gTm9sbCIsCiAgdGl0bGUgPSAgICAgICAgIlNjYW5uZWQtRGlzcGxheSBDb21wdXRlciBHcmFwaGljcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNCIsCiAgbnVtYmVyID0gICAgICAgIjMiLAogIHBhZ2VzID0gICAgICAgICIxNDMtLTE1MCIsCiAgbW9udGggPSAgICAgICAgbWFyLAogIHllYXIgPSAgICAgICAgICIxOTcxIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkEgdGVsZXZpc2lvbi1saWtlIHNjYW5uZWQtZGlzcGxheSBzeXN0ZW0gaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IGltcGxlbWVudGVkIG9uIGEgSG9uZXl3ZWxsIEREUC0yMjQgY29tcHV0ZXIgaW5zdGFsbGF0aW9uLiBUaGUgc2Nhbm5lZCBpbWFnZSBpcyBzdG9yZWQgaW4gdGhlIGNvcmUgbWVtb3J5IG9mIHRoZSBjb21wdXRlciwgYW5kIHNvZnR3YXJlIHNjYW4gY29udmVyc2lvbiBpcyB1c2VkIHRvIGNvbnZlcnQgdGhlIHJlY3Rhbmd1bGFyIGNvb3JkaW5hdGVzIG9mIGEgcG9pbnQgdG8gdGhlIGFwcHJvcHJpYXRlIHdvcmsgYW5kIGJpdCBpbiBhbiBvdXRwdXQgZGlzcGxheSBhcnJheSBpbiBjb3JlIHN0b3JhZ2UuIFJlc3VsdHMgdGh1cyBmYXIgaW5kaWNhdGUgdGhhdCBmbGlja2VyLWZyZWUgZGlzcGxheXMgb2YgbGFyZ2UgYW1vdW50cyBvZiBkYXRhIGFyZSBwb3NzaWJsZSB3aXRoIHJlYXNvbmFibHkgZmFzdCBncmFwaGljYWwgaW50ZXJhY3Rpb24uIEEgc2Nhbm5lZCBpbWFnZSBvZiBzaXplIDI0MHgyNTQgcG9pbnRzIGlzIGRpc3BsYXllZCBhdCBhIDMwIGZyYW1lLXBlci1zZWNvbmQgcmF0ZS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJCNzI2MCAoRGlzcGxheSB0ZWNobm9sb2d5IGFuZCBzeXN0ZW1zKTsgQzU1NDAgKFRlcm1pbmFscyBhbmQgZ3JhcGhpYyBkaXNwbGF5cykiLAogIGNvcnBzb3VyY2UgPSAgICJCZWxsIFRlbGVwaG9uZSBMYWJzLiBJbmMuLCBNdXJyYXkgSGlsbCwgTkosIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJDQUNNQTsgY29tcHV0ZXI7IGNvbXB1dGVyIGdyYXBoaWNzOyBjb21wdXRlcnMsIGRpZ2l0YWw7IGNvcmUgbWVtb3J5OyBkaXNwbGF5IHN5c3RlbXM7IGVkLjsgZ3JhcGhpY2FsIGludGVyYWN0aW9uOyBpbnN0YWxsYXRpb247IHJhc3RlciBkaXNwbGF5czsgc2NhbiBjb252ZXJzaW9uOyBzY2FubmVkIGltYWdlOyBzb2Z0d2FyZTsgc3RvcmVkOyB0ZWxldmlzaW9uIGxpa2Ugc2Nhbm5lZCBkaXNwbGF5IiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtNYW5uYToxOTcxOlRBUCwKICBhdXRob3IgPSAgICAgICAiWi4gTWFubmEgYW5kIFIuIEouIFdhbGRpbmdlciIsCiAgdGl0bGUgPSAgICAgICAgIlRvd2FyZCBBdXRvbWF0aWMgUHJvZ3JhbSBTeW50aGVzaXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTQiLAogIG51bWJlciA9ICAgICAgICIzIiwKICBwYWdlcyA9ICAgICAgICAiMTUxLS0xNjUiLAogIG1vbnRoID0gICAgICAgIG1hciwKICB5ZWFyID0gICAgICAgICAiMTk3MSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJBbiBlbGVtZW50YXJ5IG91dGxpbmUgb2YgdGhlIHRoZW9yZW0tcHJvdmluZyBhcHByb2FjaCB0byBhdXRvbWF0aWMgcHJvZ3JhbSBzeW50aGVzaXMgaXMgZ2l2ZW4sIHdpdGhvdXQgZHdlbGxpbmcgb24gdGVjaG5pY2FsIGRldGFpbHMuIFRoZSBtZXRob2QgaXMgaWxsdXN0cmF0ZWQgYnkgdGhlIGF1dG9tYXRpYyBjb25zdHJ1Y3Rpb24gb2YgYm90aCByZWN1cnNpdmUgYW5kIGl0ZXJhdGl2ZSBwcm9ncmFtcyBvcGVyYXRpbmcgb24gbmF0dXJhbCBudW1iZXJzLGxpc3RzLCBhbmQgdHJlZXMsIEluIG9yZGVyIHRvIGNvbnN0cnVjdCBhIHByb2dyYW0gc2F0aXNmeWluZyBjZXJ0YWluIHNwZWNpZmljYXRpb25zIGEgdGhlb3JlbSBpbmR1Y2VkIGJ5IHRob3NlIHNwZWNpZmljYXRpb25zIGlzIHByb3ZlZCwgYW5kIHRoZSBkZXNpcmVkIHByb2dyYW0gaXMgZXh0cmFjdGVkIGZyb20gdGhlIHByb29mLiBUaGUgc2FtZSB0ZWNobmlxdWUgaXMgYXBwbGllZCB0byB0cmFuc2Zvcm0gcmVjdXJzaXZlbHkgZGVmaW5lZCBmdW5jdGlvbnMgaW50byBpdGVyYXRpdmUgcHJvZ3JhbXMsIGZyZXF1ZW50bHkgd2l0aCBhIG1ham9yIGdhaW4gaW5lZmZpY2llbmN5LiBJdCBpcyBlbXBoYXNpemVkIHRoYXQgaW4gb3JkZXIgdG8gY29uc3RydWN0IGEgcHJvZ3JhbSB3aXRoIGxvb3BzIG9yIHdpdGggcmVjdXJzaW9uLCB0aGUgcHJpbmNpcGxlIG9mIG1hdGhlbWF0aWNhbCBpbmR1Y3Rpb24gbXVzdCBiZSBhcHBsaWVkLiBUaGUgcmVsYXRpb24gYmV0d2VlbiB0aGUgdmVyc2lvbiBvZiB0aGUgaW5kdWN0aW9uIHJ1bGUgdXNlZCBhbmQgdGhlIGZvcm0gb2YgdGhlIHByb2dyYW0gY29uc3RydWN0ZWQgaXMgZXhwbG9yZWQgaW4gc29tZSBkZXRhaWwuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzEyMzAgKEFydGlmaWNpYWwgaW50ZWxsaWdlbmNlKSIsCiAgY29ycHNvdXJjZSA9ICAgIlN0YW5mb3JkIFVuaXYuLCBDQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFuc3dlciBleHRyYWN0aW9uOyBhcnRpZmljaWFsOyBhcnRpZmljaWFsIGludGVsbGlnZW5jZTsgYXV0b21hdGEgdGhlb3J5OyBhdXRvbWF0aWMgcHJvZ3JhbSBzeW50aGVzaXM7IENBQ01BOyBjb21wdXRlciBtZXRhdGhlb3J5OyBjb21wdXRlcnMsIGxhbmd1YWdlczsgY29tcHV0ZXJzLCBwcm9ncmFtbWluZzsgaW50ZWxsaWdlbmNlOyBsaXN0czsgbWF0aGVtYXRpY2FsIGluZHVjdGlvbjsgbWF0aGVtYXRpY2FsIGluZHVjdGlvbiBwcmluY2lwbGU7IG5hdHVyYWwgbnVtYmVyczsgcHJpbmNpcGxlOyBwcm9ibGVtIHNvbHZpbmc7IHByb2dyYW1zOyByZWN1cnNpdmUgYW5kIGl0ZXJhdGl2ZTsgdGhlb3JlbSBwcm92aW5nOyB0cmVlcyIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7V2ludGVyczoxOTcxOlNBQywKICBhdXRob3IgPSAgICAgICAiVy4gSy4gV2ludGVycyIsCiAgdGl0bGUgPSAgICAgICAgIlNjaGVkdWxpbmcgQWxnb3JpdGhtIGZvciBhIENvbXB1dGVyIEFzc2lzdGVkIFJlZ2lzdHJhdGlvbiBTeXN0ZW0iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTQiLAogIG51bWJlciA9ICAgICAgICIzIiwKICBwYWdlcyA9ICAgICAgICAiMTY2LS0xNzEiLAogIG1vbnRoID0gICAgICAgIG1hciwKICB5ZWFyID0gICAgICAgICAiMTk3MSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJUaGlzIHBhcGVyIHByZXNlbnRzIHRoZSBzY2hlZHVsaW5nIGFsZ29yaXRobSB1c2VkIGluIHRoZSBDb21wdXRlciBBc3Npc3RlZCBSZWdpc3RyYXRpb24gU3lzdGVtIGF0IHRoZSBVbml2ZXJzaXR5IG9mIFRlbm5lc3NlZS4gTm90YXRpb24gaXMgZGVmaW5lZCBhbmQgdGhlIGxvZ2ljIG9mIHRoZSBhbGdvcml0aG0gbmVjZXNzYXJ5IHRvIGltcGxlbWVudCBlZHVjYXRpb25hbCBwb2xpY3kgaXMgZGVzY3JpYmVkLiBSZXN1bHRzIGZyb20gdGhlIGZpcnN0IHRlcm0ncyBpbXBsZW1lbnRhdGlvbiBhcmUgcHJlc2VudGVkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM3MTEwIChFZHVjYXRpb25hbCBhZG1pbmlzdHJhdGlvbikiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBUZW5uZXNzZWUsIEtub3h2aWxsZSwgVE4sIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhZG1pbmlzdHJhdGl2ZSBkYXRhIHByb2Nlc3Npbmc7IENBQ01BOyBjb21wdXRlciBhc3Npc3RlZCByZWdpc3RyYXRpb24gc3lzdGVtOyBkYXRhIHByb2Nlc3Npbmc7IGVkdWNhdGlvbmFsIGFkbWluaXN0cmF0aXZlIGRhdGEgcHJvY2Vzc2luZzsgZWR1Y2F0aW9uYWwgcG9saWN5OyBpbXBsZW1lbnRhdGlvbjsgbG9naWM7IHNjaGVkdWxpbmcgYWxnb3JpdGhtOyB0aW1ldGFibGUiLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle1dpbGxpYW1zOjE5NzE6U1VNLAogIGF1dGhvciA9ICAgICAgICJKLiBHLiBXaWxsaWFtcyIsCiAgdGl0bGUgPSAgICAgICAgIlN0b3JhZ2UgVXRpbGl6YXRpb24gaW4gYSBNZW1vcnkgSGllcmFyY2h5IFdoZW4gU3RvcmFnZSBBc3NpZ25tZW50IGlzIFBlcmZvcm1lZCBieSBhIEhhc2hpbmcgQWxnb3JpdGhtIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE0IiwKICBudW1iZXIgPSAgICAgICAiMyIsCiAgcGFnZXMgPSAgICAgICAgIjE3Mi0tMTc1IiwKICBtb250aCA9ICAgICAgICBtYXIsCiAgeWVhciA9ICAgICAgICAgIjE5NzEiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiVGhlIHV0aWxpemF0aW9uIG9mIHN0b3JhZ2UgaXMgc3R1ZGllZCBpbiBhIHR3by1sZXZlbCBtZW1vcnkgaGllcmFyY2h5LiBUaGUgZmlyc3Qgc3RvcmFnZSBsZXZlbCwgd2hpY2ggaXMgdGhlIGZhc3Qgc3RvcmUsIGlzIGRpdmlkZWQgaW50byBhIG51bWJlciBvZiBzdG9yYWdlIGFyZWFzLiBXaGVuIGFuIGVudHJ5IGlzIHRvIGJlIGZpbGVkIGluIHRoZSBoaWVyYXJjaHksIGEgaGFzaGluZyBhbGdvcml0aG0gd2lsbCBhdHRlbXB0IHRvIHBsYWNlIHRoZSBlbnRyeSBpbnRvIG9uZSBvZiB0aGVzZSBhcmVhcy4gSWYgdGhpcyBwYXJ0aWN1bGFyIGFyZWEgaXMgZnVsbCwgdGhlbiB0aGUgZW50cnkgd2lsbCBiZSBwbGFjZWQgaW50byB0aGUgc2xvd2VyIHNlY29uZC1sZXZlbCBzdG9yZSwgZXZlbiB0aG91Z2ggb3RoZXIgYXJlYXMgaW4gdGhlIGZpcnN0LWxldmVsIHN0b3JlIG1heSBoYXZlIHNwYWNlIGF2YWlsYWJsZS4gR2l2ZW4gdGhhdCBOIGVudHJpZXMgaGF2ZSBiZWVuIGZpbGVkIGluIHRoZSBlbnRpcmUgaGllcmFyY2h5LCBhbiBleHByZXNzaW9uIGlzIGRlcml2ZWQgZm9yIHRoZSBleHBlY3RlZCBudW1iZXIgb2YgZW50cmllcyBmaWxlZCBpbiB0aGUgZmlyc3QtbGV2ZWwgc3RvcmUuIFRoaXMgZXhwcmVzc2lvbiBnaXZlcyBhIG1lYXN1cmUgb2YgaG93IGVmZmVjdGl2ZWx5IHRoZSBmaXJzdC1sZXZlbCBzdG9yZSBpcyBiZWluZyB1c2VkLiBCeSBtZWFucyBvZiBleGFtcGxlcywgc3RvcmFnZSB1dGlsaXphdGlvbiBpcyB0aGVuIHN0dWRpZWQgYXMgYSBmdW5jdGlvbiBvZiB0aGUgaGFzaGluZyBhbGdvcml0aG0sIHRoZSBudW1iZXIgb2Ygc3RvcmFnZSBhcmVhcyBpbnRvIHdoaWNoIHRoZSBmaXJzdC1sZXZlbCBzdG9yZSBpcyBkaXZpZGVkIGFuZCB0aGUgdG90YWwgc2l6ZSBvZiB0aGUgZmlyc3QtbGV2ZWwgc3RvcmUuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKSIsCiAgY29ycHNvdXJjZSA9ICAgIlJDQSBMYWJzLiwgUHJpbmNldG9uLCBOSiwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgIkNBQ01BOyBjb21wdXRlcnMsIGRpZ2l0YWw7IGhhc2hpbmcgYWxnb3JpdGhtOyBoaWVyYXJjaGljYWwgc3lzdGVtczsgbWVtb3J5IGFsbG9jYXRpb247IG1lbW9yeSBoaWVyYXJjaHk7IHN0b3JhZ2UgYWxsb2NhdGlvbjsgc3RvcmFnZSBhc3NpZ25tZW50OyBzdG9yYWdlIHVuaXRzOyBzdG9yYWdlIHV0aWxpemF0aW9uIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtHZWFyOjE5NzE6QUlPLAogIGF1dGhvciA9ICAgICAgICJDLiBXLiBHZWFyIiwKICB0aXRsZSA9ICAgICAgICAiVGhlIEF1dG9tYXRpYyBJbnRlZ3JhdGlvbiBvZiBPcmRpbmFyeSBEaWZmZXJlbnRpYWwgRXF1YXRpb25zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE0IiwKICBudW1iZXIgPSAgICAgICAiMyIsCiAgcGFnZXMgPSAgICAgICAgIjE3Ni0tMTc5IiwKICBtb250aCA9ICAgICAgICBtYXIsCiAgeWVhciA9ICAgICAgICAgIjE5NzEiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2NUwwNSIsCiAgTVJudW1iZXIgPSAgICAgIjUyIDk2MTIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiQSBjcml0ZXJpb24gZm9yIHRoZSBzZWxlY3Rpb24gb2YgdGhlIG9yZGVyIG9mIGFwcHJveGltYXRpb24gaXMgcHJvcG9zZWQuIFRoZSBvYmplY3RpdmUgb2YgdGhlIGNyaXRlcmlvbiBpcyB0byBpbmNyZWFzZSB0aGUgc3RlcCBzaXplIHNvIGFzIHRvIHJlZHVjZSBzb2x1dGlvbiB0aW1lLiBBbiBvcHRpb24gcGVybWl0cyB0aGUgc29sdXRpb24gb2YgYHN0aWZmJyBkaWZmZXJlbnRpYWwgZXF1YXRpb25zLiBBIHByb2dyYW0gZW1ib2R5aW5nIHRoZSB0ZWNobmlxdWVzIGRpc2N1c3NlZCBhcHBlYXJzIGFzIGFuIGFsZ29yaXRobSB3aGljaCBpcyBzcGVjaWZpZWQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQxNzAgKERpZmZlcmVudGlhbCBlcXVhdGlvbnMpIiwKICBjb3Jwc291cmNlID0gICAiU3RhbmZvcmQgVW5pdi4sIENBLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYXV0b21hdGljOyBib3VuZGFyeSB2YWx1ZSBwcm9ibGVtczsgYm91bmRhcnktdmFsdWUgcHJvYmxlbXM7IENBQ01BOyBkaWZmZXJlbnRpYWwgZXF1YXRpb25zOyBpbml0aWFsIHZhbHVlOyBpbnRlZ3JhdGlvbjsgbWF0aGVtYXRpY3M7IG51bWVyaWNhbCBtZXRob2RzOyBvcmRlciBjb250cm9sOyBvcmRlciBvZiBhcHByb3hpbWF0aW9uOyBvcmRpbmFyeSBkaWZmZXJlbnRpYWwgZXF1YXRpb25zOyBwcm9ibGVtOyBzZWxlY3Rpb247IHN0ZXAgY29udHJvbDsgc3RpZmYgZXF1YXRpb25zIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtIb3dlbGw6MTk3MTpBQUUsCiAgYXV0aG9yID0gICAgICAgIkouIEEuIEhvd2VsbCIsCiAgdGl0bGUgPSAgICAgICAgIntBQ019IEFsZ29yaXRobSA0MDY6IEV4YWN0IFNvbHV0aW9uIG9mIExpbmVhciBFcXVhdGlvbnMgVXNpbmcgUmVzaWR1ZSBBcml0aG1ldGljIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE0IiwKICBudW1iZXIgPSAgICAgICAiMyIsCiAgcGFnZXMgPSAgICAgICAgIjE4MC0tMTg0IiwKICBtb250aCA9ICAgICAgICBtYXIsCiAgeWVhciA9ICAgICAgICAgIjE5NzEiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzczMTAgKE1hdGhlbWF0aWNzIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBUZXhhcywgQXVzdGluLCBUWCwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiYWRqb2ludCBtYXRyaXg7IGRldGVybWluYW50OyBHYXVzc2lhbiBlbGltaW5hdGlvbjsgaWxsIGNvbmRpdGlvbjsgaW52ZXJzaW9uOyBsaW5lYXIgZXF1YXRpb25zOyBtYXRyaXg7IG1hdHJpeCBhbGdlYnJhOyBtb2R1bHVzOyBwcmltZSBudW1iZXI7IHJlc2lkdWUgYXJpdGhtZXRpYzsgc3Vicm91dGluZTsgc3Vicm91dGluZXM7IHN5bW1ldHJpYyBtaXhlZCByYWRpeCByZXByZXNlbnRhdGlvbjsgc3ltbWV0cmljIHJlc2lkdWUiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0dlYXI6MTk3MTpBQUQsCiAgYXV0aG9yID0gICAgICAgIkMuIFcuIEdlYXIiLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gNDA3OiB7RElGU1VCfSBmb3IgU29sdXRpb24gb2YgT3JkaW5hcnkgRGlmZmVyZW50aWFsIEVxdWF0aW9ucyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNCIsCiAgbnVtYmVyID0gICAgICAgIjMiLAogIHBhZ2VzID0gICAgICAgICIxODUtLTE5MCIsCiAgbW9udGggPSAgICAgICAgbWFyLAogIHllYXIgPSAgICAgICAgICIxOTcxIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM3MzEwIChNYXRoZW1hdGljcyBjb21wdXRpbmcpIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gSWxsaW5vaXMsIFVyYmFuYSwgSUwsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImNvbnRyb2w7IGRpZmZlcmVudGlhbCBlcXVhdGlvbnM7IERJRlNVQjsgZXN0aW1hdGVkIGVycm9yOyBtZXRob2Q7IG11bHRpc3RlcCBwcmVkaWN0b3IgY29ycmVjdG9yOyBvcmRpbmFyeSBkaWZmZXJlbnRpYWwgZXF1YXRpb25zOyBzdGlmZiBkaWZmZXJlbnRpYWwgZXF1YXRpb25zOyBzdWJyb3V0aW5lOyBzdWJyb3V0aW5lcyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7V2lydGg6MTk3MTpQRFMsCiAgYXV0aG9yID0gICAgICAgIk4uIFdpcnRoIiwKICB0aXRsZSA9ICAgICAgICAiUHJvZ3JhbSBEZXZlbG9wbWVudCBieSBTdGVwd2lzZSBSZWZpbmVtZW50IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE0IiwKICBudW1iZXIgPSAgICAgICAiNCIsCiAgcGFnZXMgPSAgICAgICAgIjIyMS0tMjI3IiwKICBtb250aCA9ICAgICAgICBhcHIsCiAgeWVhciA9ICAgICAgICAgIjE5NzEiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9QYXJhbGxlbC9jb25jLnNjaWVudGlmaWMuY29tcHV0aW5nLmJpYiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTEwIChTeXN0ZW1zIGFuYWx5c2lzIGFuZCBwcm9ncmFtbWluZykiLAogIGNvcnBzb3VyY2UgPSAgICJFaWRnZW5vc3Npc2NoZSBUZWNoLiBIb2Noc2NodWxlLCBadXJpY2gsIFN3aXR6ZXJsYW5kIiwKICBrZXl3b3JkcyA9ICAgICAiZGV2ZWxvcG1lbnQ7IGVkdWNhdGlvbjsgcHJvZ3JhbW1pbmc7IHByb2dyYW1taW5nIHRlY2huaXF1ZXM7IHJlZmluZW1lbnQ7IHN0ZXB3aXNlIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtMdW06MTk3MTpLQVQsCiAgYXV0aG9yID0gICAgICAgIlYuIFkuIEx1bSBhbmQgUC4gUy4gVC4gWXVlbiBhbmQgTS4gRG9kZCIsCiAgdGl0bGUgPSAgICAgICAgIktleS10by1BZGRyZXNzIFRyYW5zZm9ybSBUZWNobmlxdWVzOiB7QX0gRnVuZGFtZW50YWwgUGVyZm9ybWFuY2UgU3R1ZHkgb24gTGFyZ2UgRXhpc3RpbmcgRm9ybWF0dGVkIEZpbGVzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE0IiwKICBudW1iZXIgPSAgICAgICAiNCIsCiAgcGFnZXMgPSAgICAgICAgIjIyOC0tMjM5IiwKICBtb250aCA9ICAgICAgICBhcHIsCiAgeWVhciA9ICAgICAgICAgIjE5NzEiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0RhdGFiYXNlL1dpZWRlcmhvbGQuYmliOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L01pc2MvaGFzaC5iaWIiLAogIG5vdGUgPSAgICAgICAgICJTdXJ2ZXkgb2Ygc2V2ZXJhbCBoYXNoIGZ1bmN0aW9ucywgd2l0aCBwZXJmb3JtYW5jZSByZXN1bHRzLiIsCiAgYWJzdHJhY3QgPSAgICAgIlRoZSByZXN1bHRzIG9mIGEgc3R1ZHkgb2YgZWlnaHQgZGlmZmVyZW50IGtleXRvLWFkZHJlc3MgdHJhbnNmb3JtYXRpb24gbWV0aG9kcyBhcHBsaWVkIHRvIGEgc2V0IG9mIGV4aXN0aW5nIGZpbGVzIGFyZSBwcmVzZW50ZWQuIEFzIGVhY2ggbWV0aG9kIGlzIGFwcGxpZWQgdG8gYSBwYXJ0aWN1bGFyIGZpbGUsIGxvYWQgZmFjdG9yIGFuZCBidWNrZXQgc2l6ZSBhcmUgdmFyaWVkIG92ZXIgYSB3aWRlIHJhbmdlLiBBcHByb3ByaWF0ZSB2YXJpYWJsZXMgcGVydGluZW50IG9ubHkgdG8gYSBzcGVjaWZpYyBtZXRob2QgdGFrZSBvbiBkaWZmZXJlbnQgdmFsdWVzLiBUaGUgcGVyZm9ybWFuY2Ugb2YgZWFjaCBtZXRob2QgaXMgc3VtbWFyaXplZCBpbiB0ZXJtcyBvZiB0aGUgbnVtYmVyIG9mIGFjY2Vzc2VzIHJlcXVpcmVkIHRvIGdldCB0byBhIHJlY29yZCBhbmQgdGhlIG51bWJlciBvZiBvdmVyZmxvdyByZWNvcmRzIGNyZWF0ZWQgYnkgYSB0cmFuc2Zvcm1hdGlvbi4gUGVjdWxpYXJpdGllcyBvZiBlYWNoIG1ldGhvZCBhcmUgZGlzY3Vzc2VkLiBQcmFjdGljYWwgZ3VpZGVsaW5lcyBvYnRhaW5lZCBmcm9tIHRoZSByZXN1bHRzIGFyZSBzdGF0ZWQuIEEgcHJvcG9zYWwgZm9yIGZ1cnRoZXIgcXVhbnRpdGF0aXZlIGZ1bmRhbWVudGFsIHN0dWR5IGlzIG91dGxpbmVkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgYW5ub3RlID0gICAgICAgIk1lYXN1cmVtZW50IG9mIGRpcmVjdCBhY2Nlc3MgbWV0aG9kcyIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbikiLAogIGNvcnBzb3VyY2UgPSAgICJJQk0sIFNhbiBKb3NlLCBDQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgIkNBQ01BOyBjb21wdXRlcnMsIGRpZ2l0YWw7IGNvbXB1dGVycywgZGlnaXRhbCBjb2RlczsgZmlsZSBvcmdhbml6YXRpb247IGhhcyBjb2RlczsgaW5mb3JtYXRpb24gc3RvcmFnZSBhbmQgcmV0cmllOyByYW5kb20gYWNjZXNzIHN0b3JhZ2UiLAogIGtleXdvcmRzID0gICAgICJmaWxlIG1hbmFnZW1lbnQ7IGZpbGUgb3JnYW5pc2F0aW9uOyBmaWxlIG9yZ2FuaXphdGlvbjsgZm9ybWF0dGVkIGZpbGVzOyBpbmZvcm1hdGlvbiByZXRyaWV2YWw7IGtleSB0byBhZGRyZXNzIHRyYW5zZm9ybTsgdGVjaG5pcXVlcyIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7VHVja2VyOjE5NzE6RE1QLAogIGF1dGhvciA9ICAgICAgICJBLiBCLiBUdWNrZXIgYW5kIE0uIEouIEZseW5uIiwKICB0aXRsZSA9ICAgICAgICAiRHluYW1pYyBNaWNyb3Byb2dyYW1taW5nLiBQcm9jZXNzb3IgT3JnYW5pemF0aW9uIGFuZCBQcm9ncmFtbWluZyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNCIsCiAgbnVtYmVyID0gICAgICAgIjQiLAogIHBhZ2VzID0gICAgICAgICIyNDAtLTI1MCIsCiAgbW9udGggPSAgICAgICAgYXByLAogIHllYXIgPSAgICAgICAgICIxOTcxIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkEgbWljcm9hc3NlbWJseSBsYW5ndWFnZSBpcyBkZXZlbG9wZWQgYW5kIHRoZSBvdmVyaGVhZCBpbnZvbHZlZCBpbiBzdWJyb3V0aW5lIGxpbmthZ2VzIGlzIGFuYWx5emVkLiBUaGUgZWZmaWNpZW5jeSBvZiBhIGZsZXhpYmxlIHNvZnR3YXJlIGxpbmthZ2Ugc2NoZW1lIGlzIGV4YW1pbmVkIGFzIHRvIGl0cyBvdmVyaGVhZCBmb3IgdmFyaW91cyBzdWJyb3V0aW5lIGNoYXJhY3RlcmlzdGljcy4gVGhyZWUgZXhhbXBsZXMgb2YgcHJvYmxlbS1vcmllbnRlZCBwcm9ncmFtbWluZyBhcmUgY29uc2lkZXJlZCBhbmQgdGhlIHJlc3VsdGluZyBjb2RpbmcgaXMgY29tcGFyZWQgYWdhaW5zdCBhIFN5c3RlbS8zNjAgYXNzZW1ibHkgbGFuZ3VhZ2UgdmVyc2lvbiwgd2l0aCB0aGUgdGVjaG5vbG9neSBub3JtYWxpemVkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTUwQyAoQ29tcGlsZXJzLCBpbnRlcnByZXRlcnMgYW5kIG90aGVyIHByb2Nlc3NvcnMpIiwKICBjb3Jwc291cmNlID0gICAiTm9ydGh3ZXN0ZXJuIFVuaXYuLCBFdmFuc3RvbiwgSUwsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJDQUNNQTsgY29tcHV0ZXJzLCBkaWdpdGFsOyBkeW5hbWljYWxseSBtaWNyb3Byb2dyYW1tZWQgcHJvY2Vzc29yOyBtaWNyb2Fzc2VtYmx5IGxhbmd1YWdlOyBtaWNyb3Byb2dyYW1taW5nOyBtaWNyb3N0b3JhZ2U7IHByb2JsZW0gb3JpZW50ZWQgcHJvZ3JhbW1pbmc7IHByb2JsZW0tb3JpZW50ZWQgbGFuZ3VhZ2VzOyBwcm9ncmFtIHByb2Nlc3NvcnM7IHJlYWQgd3JpdGU7IHN1YnJvdXRpbmUgbGlua2FnZSIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7VGFsYm90OjE5NzE6QU9ULAogIGF1dGhvciA9ICAgICAgICJQLiBBLiBUYWxib3QgYW5kIEouIFcuIENhcnIgYW5kIFIuIFIuIHtDb3VsdGVyLCBKci59IGFuZCBSLiBDLiBId2FuZyIsCiAgdGl0bGUgPSAgICAgICAgIkFuaW1hdG9yOiBhbiBvbi1saW5lIHR3by1kaW1lbnNpb25hbCBmaWxtIGFuaW1hdGlvbiBzeXN0ZW0iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTQiLAogIG51bWJlciA9ICAgICAgICI0IiwKICBwYWdlcyA9ICAgICAgICAiMjUxLS0yNTkiLAogIG1vbnRoID0gICAgICAgIGFwciwKICB5ZWFyID0gICAgICAgICAiMTk3MSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNTU0MCAoVGVybWluYWxzIGFuZCBncmFwaGljIGRpc3BsYXlzKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIFBlbm5zeWx2YW5pYSwgUGhpbGFkZWxwaGlhLCBQQSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgYW5pbWF0aW9uOyBjb21wdXRlciBncmFwaGljczsgZGltZW5zaW9uYWwgbGFuZ3VhZ2VzOyBtaWNyb2ZpbG0gcmVjb3JkZXI7IG9uIGxpbmUgc3lzdGVtOyBvbmxpbmUgb3BlcmF0aW9uOyBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IHR3byIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7U3RlaW46MTk3MTpDRCwKICBhdXRob3IgPSAgICAgICAiTS4gTC4gU3RlaW4gYW5kIFcuIEQuIE11bnJvIiwKICB0aXRsZSA9ICAgICAgICAiT24gQ29tcGxlbWVudCBEaXZpc2lvbiIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNCIsCiAgbnVtYmVyID0gICAgICAgIjQiLAogIHBhZ2VzID0gICAgICAgICIyNjAtLTI2NCIsCiAgbW9udGggPSAgICAgICAgYXByLAogIHllYXIgPSAgICAgICAgICIxOTcxIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlRoZSBkaXZpc2lvbiBhbGdvcml0aG0gdGhlb3JlbSBpcyBleHByZXNzZWQgaW4gYSBmb3JtIHRoYXQgcGVybWl0cyBpdCB0byBzZXJ2ZSBhcyB0aGUgYmFzaXMgZm9yIGRldmlzaW5nIGRpdmlzaW9uIG9wZXJhdGlvbnMgdGhhdCBwcm9kdWNlIGJvdGggcXVvdGllbnQgYW5kIHJlbWFpbmRlciBpbiBjb21wbGVtZW50IGZvcm0uIEFsZ29yaXRobXMgZm9yIGRpdmlzaW9uIHlpZWxkaW5nIGNvbXBsZW1lbnQgcmVzdWx0cyBhcmUgZGVyaXZlZCBmb3IgbnVtYmVycyByZXByZXNlbnRlZCBpbiBhbnkgYmFzZSBncmVhdGVyIHRoYW4gb25lLiBCb3RoIHJhZGl4IGFuZCByYWRpeC1sZXNzLW9uZSBjb21wbGVtZW50YXRpb24gc2NoZW1lcyBhcmUgY29uc2lkZXJlZC4gVGhlIGJpbmFyeSBmb3JtIG9mIHRoZSBhbGdvcml0aG1zIHRodXMgaW5jbHVkZXMgYm90aCB0d28ncyBhbmQgb25lJ3MgY29tcGxlbWVudCBpbXBsZW1lbnRhdGlvbi4gVGhlIHByb2JsZW0gb2YgcXVvdGllbnQgb3ZlcmZsb3cgZm9yIGNvbXBsZW1lbnQgcmVzdWx0cyBpcyBkZWFsdCB3aXRoIGFzIGlzIHRoYXQgb2Ygc2VsZWN0aW5nIGFuIGFwcHJvcHJpYXRlIGZvcm0gb2YgdGhlIHJlbWFpbmRlciBjb25kaXRpb24gZm9yIGNvbXBsZW1lbnQgZGl2aXNpb24uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQyMTAgKEZvcm1hbCBsb2dpYykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBNaW5uZXNvdGEsIE1pbm5lYXBvbGlzLCBNTiwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFsZ29yaXRobWljIGxhbmd1YWdlczsgQ0FDTUE7IGNvbXBsZW1lbnQ7IGRpZ2l0YWwgYXJpdGhtZXRpYzsgZGl2aXNpb247IGRpdmlzaW9uIGFsZ29yaXRobTsgbWF0aGVtYXRpY3M7IHJhZGl4IGNvbXBsZW1lbnRhdGlvbiBzY2hlbWVzIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtNY05hbWVlOjE5NzE6QUFTLAogIGF1dGhvciA9ICAgICAgICJKLiBNLiBNY05hbWVlIiwKICB0aXRsZSA9ICAgICAgICAie0FDTX0gQWxnb3JpdGhtIDQwODoge0F9IFNwYXJzZSBNYXRyaXggUGFja2FnZSAoUGFydCB7SX0pIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE0IiwKICBudW1iZXIgPSAgICAgICAiNCIsCiAgcGFnZXMgPSAgICAgICAgIjI2NS0tMjczIiwKICBtb250aCA9ICAgICAgICBhcHIsCiAgeWVhciA9ICAgICAgICAgIjE5NzEiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBub3RlID0gICAgICAgICAiU2VlIGFsc28gXGNpdGV7U2lwYWxhOjE5Nzc6UkFTLEd1c3RhdnNvbjoxOTc4OlJBUyxIYXJtczoxOTgwOlJTTX0uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzc0MTBCIChQb3dlciBlbmdpbmVlcmluZyBjb21wdXRpbmcpIiwKICBjb3Jwc291cmNlID0gICAiWW9yayBVbml2LiwgRG93bnN2aWV3LCBPbnQuLCBDYW5hZGEiLAogIGtleXdvcmRzID0gICAgICJhbGdlYnJhOyBlbGVjdHJpY2FsIGVuZ2luZWVyaW5nIGFwcGxpY2F0aW9ucyBvZiBjb21wdXRlcnM7IGVsZWN0cmljYWwgbmV0d29yayBwcm9ibGVtczsgRm9ydHJhbiBzdWJyb3V0aW5lczsgbWF0cml4OyBzcGFyc2UgbWF0cml4IG1hbmlwdWxhdGlvbjsgc3Vicm91dGluZXM7IHRlc3RzIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtPbGxlOjE5NzE6SUZBLAogIGF1dGhvciA9ICAgICAgICJULiBXaWxsaWFtIHtPbGxlIChDaGFpcm1hbil9IGFuZCB7Q29kYXN5bCBTeXN0ZW1zIENvbW1pdHRlZX0iLAogIHRpdGxlID0gICAgICAgICJJbnRyb2R1Y3Rpb24gdG8ge2BGZWF0dXJlIGFuYWx5c2lzIG9mIGdlbmVyYWxpemVkIGRhdGEgYmFzZSBtYW5hZ2VtZW50IHN5c3RlbXMnfSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNCIsCiAgbnVtYmVyID0gICAgICAgIjUiLAogIHBhZ2VzID0gICAgICAgICIzMDgtLTMxOCIsCiAgbW9udGggPSAgICAgICAgbWF5LAogIHllYXIgPSAgICAgICAgICIxOTcxIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgImZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGF0YWJhc2UvV2llZGVyaG9sZC5iaWIiLAogIGFic3RyYWN0ID0gICAgICJUaGlzIGludHJvZHVjdGlvbiBnaXZlcyBhIHJldmlldyBvZiB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgYXJ0IGluIHRoZSBzeXN0ZW1zIGFuZCBkaXNjdXNzZXMgdGhlIGRpZmZlcmVuY2VzIGFuZCBzaW1pbGFyaXRpZXMgYmV0d2VlbiBjYXBhYmlsaXRpZXMgZm91bmQgaW4gaG9zdCBsYW5ndWFnZSBzeXN0ZW1zIGFuZCB0aG9zZSBmb3VuZCBpbiBzZWxmLWNvbnRhaW5lZCBzeXN0ZW1zLiBUZWNobmljYWwgcHJvYmxlbXMgZmFjaW5nIGZ1dHVyZSBkZXNpZ25lcnMgYXJlIGRlc2NyaWJlZC4gVGhlIHVzZSBvZiBDb2JvbCBhcyBhIGJhc2lzIGZvciBmdXJ0aGVyIGRldmVsb3BtZW50IHdvcmsgaXMgY29uc2lkZXJlZCBhdCBzb21lIGxlbmd0aCB3aXRoIHJlc3BlY3QgdG8gZGF0YSBzdHJ1Y3R1cmVzLCBob3N0IGxhbmd1YWdlIGNhcGFiaWxpdGllcywgYW5kIHNlbGYtY29udGFpbmVkIGNhcGFiaWxpdGllcy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pOyBDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKSIsCiAga2V5d29yZHMgPSAgICAgImRhdGEgc3RydWN0dXJlczsgZmVhdHVyZSBhbmFseXNpczsgZ2VuZXJhbGlzZWQgZGF0YSBiYXNlIG1hbmFnZW1lbnQgc3lzdGVtczsgaW5mb3JtYXRpb247IHByb2dyYW1taW5nIGxhbmd1YWdlczsgcmV0cmlldmFsOyBzdGFuZGFyZHM7IHN0b3JhZ2UgbWFuYWdlbWVudDsgdHJhbnNhY3Rpb24gcHJvY2Vzc2luZyIsCn0KCkBBcnRpY2xle05pZWxzZW46MTk3MTpNUkMsCiAgYXV0aG9yID0gICAgICAgIk4uIFIuIE5pZWxzZW4iLAogIHRpdGxlID0gICAgICAgICJUaGUgbWVyaXQgb2YgcmVnaW9uYWwgY29tcHV0aW5nIG5ldHdvcmtzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE0IiwKICBudW1iZXIgPSAgICAgICAiNSIsCiAgcGFnZXMgPSAgICAgICAgIjMxOS0tMzI2IiwKICBtb250aCA9ICAgICAgICBtYXksCiAgeWVhciA9ICAgICAgICAgIjE5NzEiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiT25lIG9mIHRoZSBzdWdnZXN0ZWQgbWVhbnMgZm9yIHN0aW11bGF0aW5nIHRoZSBzcHJlYWQgb2YgY29tcHV0aW5nIGNhcGFiaWxpdGllcyBpbiBpbnN0aXR1dGlvbnMgb2YgaGlnaGVyIGxlYXJuaW5nIGlzIHRocm91Z2ggdGhlIGNvbnN0cnVjdGlvbiBvZiByZWdpb25hbCBjb21wdXRpbmcgbmV0d29ya3MuIE9uZSBzdWNoIG5ldHdvcmsgaGFzIGJlZW4gY29uc3RydWN0ZWQgaW4gdGhlIFNhbiBGcmFuY2lzY28gQmF5IEFyZWEgb2YgU3RhbmZvcmQgVW5pdmVyc2l0eS4gVGhpcyBwYXBlciByZXBvcnRzIHVwb24gdGhlIGxlc3NvbnMgbGVhcm5lZCBmcm9tIHRoZSBvcGVyYXRpb24gb2YgdGhhdCBuZXR3b3JrIG92ZXIgdGhlIHBhc3QgMiB5ci4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDMDIyMCAoQ29tcHV0aW5nIGVkdWNhdGlvbiBhbmQgdHJhaW5pbmcpOyBDNTYwMCAoRGF0YSBjb21tdW5pY2F0aW9uIGVxdWlwbWVudCBhbmQgdGVjaG5pcXVlcyk7IEM3ODEwQyAoQ29tcHV0ZXItYWlkZWQgaW5zdHJ1Y3Rpb24pIiwKICBjb3Jwc291cmNlID0gICAiU3RhbmZvcmQgVW5pdi4sIENBLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiQ0FDTUE7IGNvbXB1dGVyIGFpZGVkIGluc3RydWN0aW9uOyBjb21wdXRlciBhcHBsaWNhdGlvbnM7IGNvbXB1dGVyIHNoYXJpbmc7IGNvbXB1dGVyIHV0aWxpdHk7IGNvbXB1dGVycywgZGlnaXRhbCwgZGF0YSBwcm9jZTsgY29tcHV0aW5nOyBjb29wZXJhdGl2ZSBuZXR3b3JrczsgY3VycmljdWx1bSBkZXZlbG9wbWVudDsgZGlnaXRhbCBjb21tdW5pY2F0aW9uIHN5c3RlbXM7IGVkdWNhdGlvbjsgZWR1Y2F0aW9uYWwgY29tcHV0aW5nOyBlbmdpbmVlcmluZyBlZHVjYXRpb247IFIgQzsgcmVtb3RlIiwKfQoKQEFydGljbGV7S3JvbGFrOjE5NzE6TUFULAogIGF1dGhvciA9ICAgICAgICJQLiBLcm9sYWsgYW5kIFcuIEZlbHRzIGFuZCBHLiBNYXJibGUiLAogIHRpdGxlID0gICAgICAgICJBIE1hbi1NYWNoaW5lIEFwcHJvYWNoIFRvd2FyZCBTb2x2aW5nIHRoZSBUcmF2ZWxpbmcgU2FsZXNtYW4gUHJvYmxlbSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNCIsCiAgbnVtYmVyID0gICAgICAgIjUiLAogIHBhZ2VzID0gICAgICAgICIzMjctLTMzNCIsCiAgbW9udGggPSAgICAgICAgbWF5LAogIHllYXIgPSAgICAgICAgICIxOTcxIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlRoaXMgcGFwZXIgZGVzY3JpYmVzIGEgY29tcHV0ZXIgYWlkZWQgaGV1cmlzdGljIHRlY2huaXF1ZSB3aGljaCB1c2VzIG9ubHkgYSBtb2Rlc3QgYW1vdW50IG9mIGNvbXB1dGVyIHRpbWUgaW4gcmVhbC10aW1lIHRvIHNvbHZlIGxhcmdlICgxMDAgdG8gMjAwKSBwb2ludCBwcm9ibGVtcy4gVGhpcyB0ZWNobmlxdWUgdGFrZXMgYWR2YW50YWdlIG9mIGJvdGggdGhlIGNvbXB1dGVyJ3MgYW5kIHRoZSBodW1hbidzIHByb2JsZW0tc29sdmluZyBhYmlsaXRpZXMuIFRoZSBjb21wdXRlciBpcyBub3QgYXNrZWQgdG8gc29sdmUgdGhlIHByb2JsZW0gaW4gYSBicnV0ZSBmb3JjZSB3YXkgYXMgaW4gbWFueSBvZiB0b2RheSdzIGhldXJpc3RpY3MsIGJ1dCBpdCBpcyBhc2tlZCB0byBvcmdhbml6ZSB0aGUgZGF0YSBmb3IgdGhlIGh1bWFuIHNvIHRoYXQgdGhlIGh1bWFuIGNhbiBzb2x2ZSB0aGUgcHJvYmxlbSBlYXNpbHkuIFRoZSB0ZWNobmlxdWUgdXNlZCBpbiB0aGlzIHBhcGVyIHNlZW1zIHRvIHBvaW50IHRvIG5ldyBkaXJlY3Rpb25zIGluIHRoZSBmaWVsZCBvZiBtYW4tbWFjaGluZSBpbnRlcmFjdGlvbiBhbmQgaW4gdGhlIGZpZWxkIG9mIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMxMjMwIChBcnRpZmljaWFsIGludGVsbGlnZW5jZSk7IEMxMjcwIChNYW4tbWFjaGluZSBzeXN0ZW1zKSIsCiAgY29ycHNvdXJjZSA9ICAgIlZhbmRlcmJpbHQgVW5pdi4sIE5hc2h2aWxsZSwgVE4sIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhcnRpZmljaWFsIGludGVsbGlnZW5jZTsgYXNzaWdubWVudDsgQ0FDTUE7IGNvbXB1dGVyIGFpZGVkIGhldXJpc3RpYyB0ZWNobmlxdWVzOyBjb21wdXRlciBhcHBsaWNhdGlvbnM7IGN5YmVybmV0aWNzOyBoZXVyaXN0aWMgcHJvY2VkdXJlOyBoZXVyaXN0aWMgcHJvZ3JhbW1pbmc7IGludGVyYWN0aW9uIHByb2Nlc3M7IG1hbiBtYWNoaW5lIGludGVyYWN0aW9uOyBtYW4tbWFjaGluZSBzeXN0ZW1zOyBvcGVyYXRpb25zIHJlc2VhcmNoOyBvcHRpbWlzYXRpb247IHByb2JsZW07IHByb2R1Y3Rpb24gcGxhbm5pbmcgYW5kIGNvbnRyb2w7IHJ1YmJlciBiYW5kIHRvdXIgZ2VuZXJhdG9yOyB0cmF2ZWxsaW5nIHNhbGVzbWFuIHByb2JsZW0iLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle01vbnRhbmFyaToxOTcxOk9EQywKICBhdXRob3IgPSAgICAgICAiVWdvIE1vbnRhbmFyaSIsCiAgdGl0bGUgPSAgICAgICAgIk9uIHRoZSBvcHRpbWFsIGRldGVjdGlvbiBvZiBjdXJ2ZXMgaW4gbm9pc3kgcGljdHVyZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTQiLAogIG51bWJlciA9ICAgICAgICI1IiwKICBwYWdlcyA9ICAgICAgICAiMzM1LS0zNDUiLAogIG1vbnRoID0gICAgICAgIG1heSwKICB5ZWFyID0gICAgICAgICAiMTk3MSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L01pc2MvUmV2ZXJzZS5lbmcuYmliIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjYxNDBDIChPcHRpY2FsIGluZm9ybWF0aW9uLCBpbWFnZSBhbmQgdmlkZW8gc2lnbmFsIHByb2Nlc3NpbmcpOyBDMTI1MCAoUGF0dGVybiByZWNvZ25pdGlvbikiLAogIGNvcnBzb3VyY2UgPSAgICJJc3RpdHV0byBFbGFib3JhemlvbmUgSW5mb3JtYXppb25lLCBQaXNhLCBJdGFseSIsCiAga2V5d29yZHMgPSAgICAgImN1cnZlOyBkZXNjcmlwdGlvbjsgZHluYW1pYyBwcm9ncmFtbWluZzsgZWRnZTsgZ2xvYmFsIHJlY29nbml0aW9uOyBoZXVyaXN0aWM7IGhldXJpc3RpYyBwcm9ncmFtbWluZzsgaW50ZXJhY3Rpb24gZ3JhcGg7IGxpbmU7IG1ldGhvZHM7IG5vaXNlOyBvcHRpbWFsIGRldGVjdGlvbjsgb3B0aW1pc2F0aW9uOyBvcHRpbWlzYXRpb24gcHJvYmxlbTsgcGFyYWxsZWwgcHJvY2Vzc2luZzsgcGF0dGVybiByZWNvZ25pdGlvbjsgcGljdHVyZTsgcGljdHVyZSBwcm9jZXNzaW5nOyBwaWN0dXJlIHJlY29nbml0aW9uOyBzZWNvbmRhcnkiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle1JpY2hhcmRzOjE5NzE6SEtBLAogIGF1dGhvciA9ICAgICAgICJELiBMLiBSaWNoYXJkcyIsCiAgdGl0bGUgPSAgICAgICAgIkhvdyB0byBLZWVwIHRoZSBBZGRyZXNzZXMgU2hvcnQiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTQiLAogIG51bWJlciA9ICAgICAgICI1IiwKICBwYWdlcyA9ICAgICAgICAiMzQ2LS0zNDkiLAogIG1vbnRoID0gICAgICAgIG1heSwKICB5ZWFyID0gICAgICAgICAiMTk3MSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvQ29tcGlsZXIvQ29tcGlsZXIuTGlucy5iaWIiLAogIGFic3RyYWN0ID0gICAgICJUaGlzIHBhcGVyIGRlbW9uc3RyYXRlcyB0aGF0IGEgd2lkZSBjbGFzcyBvZiBwcm9ibGVtcyBjYW4gYmUgZm9ybXVsYXRlZCBhcyBjb3ZlcmluZyBwcm9ibGVtcyBzb2x2YWJsZSBieSBtZWFucyBvZiBlbGVtZW50YXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9ucyBvbiB0aGUgY29sdW1uIHZlY3RvcnMgb2YgYSB0ZXJuYXJ5IG1hdHJpeC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKTsgQzYxNTBDIChDb21waWxlcnMsIGludGVycHJldGVycyBhbmQgb3RoZXIgcHJvY2Vzc29ycykiLAogIGNvcnBzb3VyY2UgPSAgICJMZWFzY28gU3lzdGVtcyBDb3JwLiwgVHVzdGluLCBDQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFkZHJlc3Npbmc7IGFzc2VtYmxlcjsgQ0FDTUE7IGNvbXBpbGVyczsgY29tcHV0ZXJzLCBkaWdpdGFsOyBjb3ZlcmluZyBwcm9ibGVtOyBkYXRhIGhhbmRsaW5nOyBpbnRlZ2VyOyBpbnRlZ2VyIHByb2dyYW1taW5nOyBtaW5pbWlzYXRpb247IHByb2dyYW07IHByb2dyYW0gYXNzZW1ibGVyczsgcHJvZ3JhbW1pbmc7IHZhcmlhYmxlIGxlbmd0aCBhZGRyZXNzaW5nIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtGZW5pY2hlbDoxOTcxOklMViwKICBhdXRob3IgPSAgICAgICAiUi4gUi4gRmVuaWNoZWwiLAogIHRpdGxlID0gICAgICAgICJPbiBJbXBsZW1lbnRhdGlvbiBvZiBMYWJlbCBWYXJpYWJsZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTQiLAogIG51bWJlciA9ICAgICAgICI1IiwKICBwYWdlcyA9ICAgICAgICAiMzQ5LS0zNTAiLAogIG1vbnRoID0gICAgICAgIG1heSwKICB5ZWFyID0gICAgICAgICAiMTk3MSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJWYXJpYWJsZXMgb2YgbGFiZWwgbW9kZSBhcmUgY29udmVudGlvbmFsbHkgaW1wbGVtZW50ZWQgd2l0aCBhIHRlY2huaXF1ZSB3aGljaCBmYWlscyB0byB0cmFwIGNlcnRhaW4gcHJvZ3JhbW1pbmcgZXJyb3JzLiBGaW5lLWdyYWluZWQgY2FsZW5kZXIgY2xvY2tzIGhhdmUgcmVjZW50bHkgYmVjb21lIGF2YWlsYWJsZTsgdGhlc2UgYWxsb3cgaW1wbGVtZW50YXRpb24gb2YgbGFiZWwgdmFyaWFibGVzIHZpYSBhIG5ldyB0ZWNobmlxdWUgd2hpY2ggdHJhcHMgYWxsIHByb2dyYW1taW5nIGVycm9ycyBvZiB0aGlzIHZhcmlldHkuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxNTBDIChDb21waWxlcnMsIGludGVycHJldGVycyBhbmQgb3RoZXIgcHJvY2Vzc29ycykiLAogIGNvcnBzb3VyY2UgPSAgICJNSVQsIENhbWJyaWRnZSwgTUEsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJDQUNNQTsgY29tcGlsZXI7IGNvbXB1dGVycywgZGlnaXRhbDsgRFM7IGZpbmUgZ3JhaW5lZCBjYWxlbmRhciBjbG9ja3M7IGdvOyBpbnRlcnByZXRlcjsgbGFiZWwgdmFyaWFibGVzIGltcGxlbWVudGF0aW9uOyBwcm9ncmFtIGNvbXBpbGVyczsgcHJvZ3JhbSBkZWJ1Z2dpbmc7IHRvOyB0cmFuc2ZlciIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7TW9ycmlzOjE5NzE6QVJJLAogIGF1dGhvciA9ICAgICAgICJKYW1lcyBILiB7TW9ycmlzLCBKci59IiwKICB0aXRsZSA9ICAgICAgICAiQW5vdGhlciBSZWN1cnNpb24gSW5kdWN0aW9uIFByaW5jaXBsZSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNCIsCiAgbnVtYmVyID0gICAgICAgIjUiLAogIHBhZ2VzID0gICAgICAgICIzNTEtLTM1NCIsCiAgbW9udGggPSAgICAgICAgbWF5LAogIHllYXIgPSAgICAgICAgICIxOTcxIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiMDJGMjUgKDk0QTI1KSIsCiAgTVJudW1iZXIgPSAgICAgIjQ1IDU3IiwKICBtcnJldmlld2VyID0gICAiSC4gUi4gU3Ryb25nIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkFuIGluZHVjdGl2ZSBtZXRob2QgZm9yIHByb3ZpbmcgdGhpbmdzIGFib3V0IHJlY3Vyc2l2ZWx5IGRlZmluZWQgZnVuY3Rpb25zIGlzIGRlc2NyaWJlZC4gSXQgaXMgc2hvd24gdG8gYmUgdXNlZnVsIGZvciBwcm92aW5nIHBhcnRpYWwgZnVuY3Rpb25zIGVxdWl2YWxlbnQgYW5kIHRodXMgYXBwbGljYWJsZSBpbiBwcm9vZnMgYWJvdXQgaW50ZXJwcmV0ZXJzIGZvciBwcm9ncmFtbWluZyBsYW5ndWFnZXMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzEyMzAgKEFydGlmaWNpYWwgaW50ZWxsaWdlbmNlKTsgQzQyMTAgKEZvcm1hbCBsb2dpYykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBDYWxpZm9ybmlhLCBCZXJrZWxleSwgQ0EsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhdXRvbWF0YSB0aGVvcnk7IENBQ01BOyBjb21waWxlciBjb3JyZWN0bmVzczsgY29tcGlsZXIgY29ycmVjdG5lc3MgcHJvb2ZzOyBjb21wdXRhdGlvbmFsIGxpbmd1aXN0aWNzOyBjb21wdXRlcnMsIGRpZ2l0YWwsIGxhbmd1YWdlczsgY29tcHV0ZXJzLCBkaWdpdGFsLCBwcm9ncmFtbWluZzsgY29ycmVjdG5lc3M7IGluZHVjdGlvbjsgaW50ZXJwcmV0ZXJzOyBwcm9vZnM7IHByb3Zpbmc7IHJlY3Vyc2lvbjsgcmVjdXJzaW9uIGluZHVjdGlvbiBwcmluY2lwbGU7IHJlY3Vyc2l2ZSBmdW5jdGlvbnM7IHRoZW9yZW0iLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle1NjaG1pdHQ6MTk3MTpBQUQsCiAgYXV0aG9yID0gICAgICAgIkguIFNjaG1pdHQiLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gNDA5OiBEaXNjcmV0ZSB7Q2hlYnljaGV2fSBDdXJ2ZSBGaXQiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTQiLAogIG51bWJlciA9ICAgICAgICI1IiwKICBwYWdlcyA9ICAgICAgICAiMzU1LS0zNTYiLAogIG1vbnRoID0gICAgICAgIG1heSwKICB5ZWFyID0gICAgICAgICAiMTk3MSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDEzMCAoSW50ZXJwb2xhdGlvbiBhbmQgZnVuY3Rpb24gYXBwcm94aW1hdGlvbik7IEM3MzEwIChNYXRoZW1hdGljcyBjb21wdXRpbmcpIiwKICBjb3Jwc291cmNlID0gICAiVGVjaC4gSG9jaHNjaHVsZSwgRGFybXN0YWR0LCBXZXN0IEdlcm1hbnkiLAogIGtleXdvcmRzID0gICAgICJBTEdPTCBwcm9jZWR1cmU7IGFsZ29yaXRobTsgQ2hlYnlzaGV2IGFwcHJveGltYXRpb247IGRpc2NyZXRlIENoZWJ5Y2hldiBjdXJ2ZSBmaXQ7IGV4Y2hhbmdlOyBSZW1leiBhbGdvcml0aG07IHN1YnJvdXRpbmVzIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtDaGFtYmVyczoxOTcxOkFBUCwKICBhdXRob3IgPSAgICAgICAiSi4gTS4gQ2hhbWJlcnMiLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gNDEwOiBQYXJ0aWFsIFNvcnRpbmcgW3tNMX1dIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE0IiwKICBudW1iZXIgPSAgICAgICAiNSIsCiAgcGFnZXMgPSAgICAgICAgIjM1Ny0tMzU4IiwKICBtb250aCA9ICAgICAgICBtYXksCiAgeWVhciA9ICAgICAgICAgIjE5NzEiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9NaXNjL2FjbS5iaWIiLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKSIsCiAgY29ycHNvdXJjZSA9ICAgIkJlbGwgVGVsZXBob25lIExhYnMuLCBNdXJyYXkgSGlsbCwgTkosIFVTQSIsCiAga2V5d29yZHMgPSAgICAgIkZPUlRSQU4gcm91dGluZTsgb3JkZXIgc3RhdGlzdGljczsgcGFydGlhbCBzb3J0aW5nOyBzb3J0aW5nOyBzdWJyb3V0aW5lcyIsCiAga2V5d29yZHMgPSAgICAgInBhcnRpYWwgc29ydGluZyBvcmRlciBzdGF0aXN0aWNzOyBzb3J0aW5nIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtIYXJhZGE6MTk3MTpHUlAsCiAgYXV0aG9yID0gICAgICAgIkthenVha2kgSGFyYWRhIiwKICB0aXRsZSA9ICAgICAgICAiR2VuZXJhdGlvbiBvZiByb3NhcnkgcGVybXV0YXRpb25zIGV4cHJlc3NlZCBpbiB7SGFtaWx0b25pYW59IGNpcmN1aXRzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE0IiwKICBudW1iZXIgPSAgICAgICAiNiIsCiAgcGFnZXMgPSAgICAgICAgIjM3My0tMzc5IiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzEiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI5MC4zMCAoMDUuMDApIiwKICBNUm51bWJlciA9ICAgICAiNDRcIzM2NzUiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhYnN0cmFjdCA9ICAgICAiU3lzdGVtYXRpYyBnZW5lcmF0aW9uIG9mIGEgc3BlY2lmaWMgY2xhc3Mgb2YgcGVybXV0YXRpb25zIGZ1bmRhbWVudGFsIHRvIHNjaGVkdWxpbmcgcHJvYmxlbXMgaXMgZGVzY3JpYmVkLiBJbiBhIG5vbm9yaWVudGVkIGNvbXBsZXRlIGdyYXBoIHdpdGggbiB2ZXJ0aWNlcywgSGFtaWx0b25pYW4gY2lyY3VpdHMgZXF1aXZhbGVudCB0byAkLjUobiAtIDEpISQgc3BlY2lmaWMgcGVybXV0YXRpb25zIG9mICRuJCBlbGVtZW50cywgdGVybWVkIHJvc2FyeSBwZXJtdXRhdGlvbnMsIGNhbiBiZSBkZWZpbmVkLiBFYWNoIG9mIHRoZW0gY29ycmVzcG9uZHMgdG8gdHdvIGNpcmN1bGFyIHBlcm11dGF0aW9ucyB3aGljaCBtaXJyb3ItaW1hZ2UgZWFjaCBvdGhlciwgYW5kIGlzIGdlbmVyYXRlZCBzdWNjZXNzaXZlbHkgYnkgYSBudW1iZXIgc3lzdGVtIGNvdmVyaW5nICQzKjQqXGxkb3RzKihuLTEpJCBzZXRzIG9mIGVkZ2VzLiBFdmVyeSBzZXQgb2YgZWRnZXMgJFx7RVtrXVx9LCAxIDw9IEVba10gPD0gaywgMyA8PSBrIDw9IChuLTEpJCBpcyBkZXRlcm1pbmVkIHJlY3Vyc2l2ZWx5IGJ5IGNvbnN0cnVjdGluZyBhIEhhbWlsdG9uaWFuIGNpcmN1aXQgd2l0aCAkayQgdmVydGljZXMgZnJvbSBhIEhhbWlsdG9uaWFuIGNpcmN1aXQgd2l0aCAkay0xJCB2ZXJ0aWNlcywgc3RhcnRpbmcgd2l0aCB0aGUgSGFtaWx0b25pYW4gY2lyY3VpdCBvZiAzIHZlcnRpY2VzLiBUaGUgYmFzaWMgb3BlcmF0aW9uIGNvbnNpc3RzIG9mIHRyYW5zcG9zaXRpb24gb2YgYSBwYWlyIG9mIGFkamFjZW50IHZlcnRpY2VzIHdoZXJlIHRoZSBwb3NpdGlvbiBvZiB0aGUgcGFpciBpbiB0aGUgcGVybXV0YXRpb24gaXMgZGV0ZXJtaW5lZCBieSAkXHtFW2tdXH0kLiBUd28gYWxnb3JpdGhtcyB0cmVhdGluZyB0aGUgc2FtZSBleGFtcGxlIGZvciBmaXZlIHZlcnRpY2VzIGFyZSBwcmVzZW50ZWQuIEl0IGlzIHZlcnkgZWFzeSB0byBkZXJpdmUgYWxsIHBvc3NpYmxlIG4hIHBlcm11dGF0aW9ucyBmcm9tIHRoZSAkLjUobiAtIDEgKSEkIHJvc2FyeSBwZXJtdXRhdGlvbnMgYmUgY3ljbGluZyB0aGUgcGVybXV0YXRpb25zIGFuZCBieSB0YWtpbmcgdGhlbSBpbiB0aGUgcmV2ZXJzZSBvcmRlci1wcm9jZWR1cmVzIHdoaWNoIGNhbiBiZSBwZXJmb3JtZWQgZmFpcmx5IGVmZmljaWVudGx5IGJ5IGNvbXB1dGVyLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkIwMjUwIChDb21iaW5hdG9yaWFsIG1hdGhlbWF0aWNzKSIsCiAgY29ycHNvdXJjZSA9ICAgIldhc2hpbmd0b24gVW5pdi4sIFN0LiBMb3VpcywgTU8sIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImNpcmN1aXRzOyBjb21iaW5hdG9yaWFsIGFsZ2VicmE7IGdyYXBoIHRoZW9yeTsgSGFtaWx0b25pYW47IG5vbm9yaWVudGVkIGNvbXBsZXRlIGdyYXBoOyBwZXJtdXRhdGlvbjsgcm9zYXJ5IHBlcm11dGF0aW9ucyBnZW5lcmF0aW9uOyBzY2hlZHVsaW5nIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtGb2xleToxOTcxOkFPRCwKICBhdXRob3IgPSAgICAgICAiSi4gRC4gRm9sZXkiLAogIHRpdGxlID0gICAgICAgICJBbiBhcHByb2FjaCB0byB0aGUgb3B0aW11bSBkZXNpZ24gb2YgY29tcHV0ZXIgZ3JhcGhpY3Mgc3lzdGVtcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNCIsCiAgbnVtYmVyID0gICAgICAgIjYiLAogIHBhZ2VzID0gICAgICAgICIzODAtLTM5MCIsCiAgbW9udGggPSAgICAgICAganVuLAogIHllYXIgPSAgICAgICAgICIxOTcxIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MjkwIChPdGhlciBjb21wdXRlciB0aGVvcnkpIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gTm9ydGggQ2Fyb2xpbmEsIENoYXBlbCBIaWxsLCBOQywgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiYXZlcmFnZSByZXNwb25zZSB0aW1lIHByZWRpY3Rpb247IGNvbXB1dGVyIGdyYXBoaWNzOyBjb21wdXRlciBncmFwaGljcyBzeXN0ZW1zOyBjb21wdXRlciBtZXRhdGhlb3J5OyBtYXRoZW1hdGljYWw7IG1vZGVsOyBvcHRpbWlzYXRpb247IG9wdGltdW0gZGVzaWduIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtBbWFyZWw6MTk3MTpDU0MsCiAgYXV0aG9yID0gICAgICAgIlMuIEFtYXJlbCIsCiAgdGl0bGUgPSAgICAgICAgIkNvbXB1dGVyIFNjaWVuY2U6IHtBfSBDb25jZXB0dWFsIEZyYW1ld29yayBmb3IgQ3VycmljdWx1bSBQbGFubmluZyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNCIsCiAgbnVtYmVyID0gICAgICAgIjYiLAogIHBhZ2VzID0gICAgICAgICIzOTEtLTQwMSIsCiAgbW9udGggPSAgICAgICAganVuLAogIHllYXIgPSAgICAgICAgICIxOTcxIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWJzdHJhY3QgPSAgICAgIlR3byB2aWV3cyBvZiBjb21wdXRlciBzY2llbmNlIGFyZSBjb25zaWRlcmVkOiBhIGdsb2JhbCB2aWV3IHdoaWNoIGF0dGVtcHRzIHRvIGNhcHR1cmUgYnJvYWQgY2hhcmFjdGVyaXN0aWNzIG9mIHRoZSBmaWVsZCBhbmQgaXRzIHJlbGF0aW9uc2hpcHMgdG8gb3RoZXIgZmllbGRzLCBhbmQgYSBsb2NhbCB2aWV3IHdoaWNoIGZvY3VzZXMgb24gdGhlIGlubmVyIHN0cnVjdHVyZSBvZiB0aGUgZmllbGQuIFRoaXMgc3RydWN0dXJlIGlzIHByZXNlbnRlZCBpbiB0ZXJtcyBvZiB0aGUga2luZHMgb2Yga25vd2xlZGdlLCBwcm9ibGVtcywgYW5kIGFjdGl2aXRpZXMgdGhhdCBleGlzdCB3aXRoaW4gdGhlIGRpc2NpcGxpbmUsIGFzIHdlbGwgYXMgdGhlIHJlbGF0aW9ucyBiZXR3ZWVuIHRoZW0uIEFuIGFwcHJvYWNoIHRvIGN1cnJpY3VsdW0gcGxhbm5pbmcgaW4gY29tcHV0ZXIgc2NpZW5jZSBpcyBwcmVzZW50ZWQgd2hpY2ggaXMgZ3VpZGVkIGJ5IHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGZpZWxkLCBieSB0aGUgZmFjdCB0aGF0IGNoYW5nZSBpcyBhbiBpbXBvcnRhbnQgZmVhdHVyZSBvZiB0aGUgc2l0dWF0aW9uLCBhbmQgYnkgdGhlIGV4cGVjdGF0aW9uIHRoYXQgY29tcHV0ZXIgc2NpZW5jZSB3aWxsIGNvbnRpbnVlIHRvIGluY3JlYXNlIGl0cyB3b3JraW5nIGNvbnRhY3RzIHdpdGggb3RoZXIgZGlzY2lwbGluZXMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzAyMjAgKENvbXB1dGluZyBlZHVjYXRpb24gYW5kIHRyYWluaW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIlJ1dGdlcnMgVW5pdi4sIE5ldyBCcnVuc3dpY2ssIE5KLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBzY2llbmNlOyBjdXJyaWN1bHVtIHBsYW5uaW5nOyBlZHVjYXRpb24iLAogIHRyZWF0bWVudCA9ICAgICJHIEdlbmVyYWwgUmV2aWV3IiwKfQoKQEFydGljbGV7Qm9zYXJnZToxOTcxOk5QUiwKICBhdXRob3IgPSAgICAgICAiVy4gRS4ge0Jvc2FyZ2UsIEpyLn0gYW5kIE8uIEcuIEpvaG5zb24iLAogIHRpdGxlID0gICAgICAgICJOdW1lcmljYWwgcHJvcGVydGllcyBvZiB0aGUge1JpdHotVHJlZmZ0en0gYWxnb3JpdGhtIGZvciBvcHRpbWFsIGNvbnRyb2wiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTQiLAogIG51bWJlciA9ICAgICAgICI2IiwKICBwYWdlcyA9ICAgICAgICAiNDAyLS00MDYiLAogIG1vbnRoID0gICAgICAgIGp1biwKICB5ZWFyID0gICAgICAgICAiMTk3MSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY1LjMwIiwKICBNUm51bWJlciA9ICAgICAiNDRcIzc3MTQiLAogIG1ycmV2aWV3ZXIgPSAgICJBLiBQYXNxdWFsaSIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFic3RyYWN0ID0gICAgICJJbiB0aGlzIHBhcGVyIHRoZSBSaXR6LVRyZWZmdHogYWxnb3JpdGhtIGlzIGFwcGxpZWQgdG8gdGhlIGNvbXB1dGVyIHNvbHV0aW9uIG9mIHRoZSBzdGF0ZSByZWd1bGF0b3IgcHJvYmxlbS4gVGhlIGFsZ29yaXRobSByZXByZXNlbnRzIGEgbW9kaWZpY2F0aW9uIG9mIHRoZSBSaXR6IGRpcmVjdCBtZXRob2QgYW5kIGlzIGRlc2lnbmVkIHRvIGltcHJvdmUgdGhlIHNwZWVkIG9mIHNvbHV0aW9uIGFuZCB0aGUgc3RvcmFnZSByZXF1aXJlbWVudHMgdG8gdGhlIHBvaW50IHdoZXJlIHJlYWwtdGltZSBpbXBsZW1lbnRhdGlvbiBiZWNvbWVzIGZlYXNpYmxlLiBUaGUgbW9kaWZpY2F0aW9uIGlzIHNob3duIHRvIGJlIG1vcmUgc3RhYmxlIGNvbXB1dGF0aW9uYWxseSB0aGFuIHRoZSB0cmFkaXRpb25hbCBSaXR6IGFwcHJvYWNoLiBccGFyIFRoZSBmaXJzdCBjb25jZXJuIG9mIHRoZSBwYXBlciBpcyB0byBkZXNjcmliZSB0aGUgYWxnb3JpdGhtIGFuZCBlc3RhYmxpc2ggaXRzIHByb3BlcnRpZXMgYXMgYSB2YWxpZCBhbmQgdXNlZnVsIG51bWVyaWNhbCB0ZWNobmlxdWUuIEluIHBhcnRpY3VsYXIgc3VjaCB1c2VmdWwgcHJvcGVydGllcyBhcyBkZWZpbml0ZW5lc3MgYW5kIHJlYXNvbmFibGVuZXNzIG9mIGNvbmRpdGlvbiBhcmUgZXN0YWJsaXNoZWQgZm9yIHRoZSBtZXRob2QuIFRoZSBzZWNvbmQgcGFydCBvZiB0aGUgcGFwZXIgaXMgZGV2b3RlZCB0byBhIGNvbXBhcmlzb24gb2YgdGhlIG5ldyB0ZWNobmlxdWVzIHdpdGggdGhlIHN0YW5kYXJkIHByb2NlZHVyZSBvZiBudW1lcmljYWxseSBpbnRlZ3JhdGluZyBhIG1hdHJpeCBSaWNjYXRpIGVxdWF0aW9uIHRvIGRldGVybWluZSBhIGZlZWRiYWNrIG1hdHJpeC4gVGhlIG5ldyB0ZWNobmlxdWUgaXMgc2hvd24gdG8gYmUgc2lnbmlmaWNhbnRseSBmYXN0ZXIgZm9yIGNvbXBhcmFibGUgYWNjdXJhY3kuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzEzMzAgKE9wdGltYWwgY29udHJvbCk7IEM0MTkwIChPdGhlciBudW1lcmljYWwgbWV0aG9kcykiLAogIGNvcnBzb3VyY2UgPSAgICJJQk0gU2NpLiBDZW50ZXIsIEhvdXN0b24sIFRYLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJjb250cm9sIHRoZW9yeTsgZXF1YXRpb247IGZlZWRiYWNrIG1hdHJpeDsgbWF0cml4IFJpY2NhdGk7IG51bWVyaWNhbDsgbnVtZXJpY2FsIGFuYWx5c2lzOyBudW1lcmljYWwgaW50ZWdyYXRpb247IG51bWVyaWNhbCBtZXRob2RzOyBvcHRpbWFsIGNvbnRyb2w7IHByb3BlcnRpZXM7IHJlZ3VsYXRvciBwcm9ibGVtOyBSaXR6IFRyZWZmdHogYWxnb3JpdGhtOyBzcGxpbmVzOyBzdGF0ZSByZWd1bGF0b3IgcHJvYmxlbSIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7R2xhZHdpbjoxOTcxOk5DRiwKICBhdXRob3IgPSAgICAgICAiSC4gVGltIEdsYWR3aW4iLAogIHRpdGxlID0gICAgICAgICJBIE5vdGUgb24gQ29tcGlsaW5nIEZpeGVkIFBvaW50IEJpbmFyeSBNdWx0aXBsaWNhdGlvbnMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTQiLAogIG51bWJlciA9ICAgICAgICI2IiwKICBwYWdlcyA9ICAgICAgICAiNDA3LS00MDgiLAogIG1vbnRoID0gICAgICAgIGp1biwKICB5ZWFyID0gICAgICAgICAiMTk3MSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFic3RyYWN0ID0gICAgICJBbiBhbGdvcml0aG0gaXMgZGV2ZWxvcGVkIGZvciBjb21waWxpbmcsIGFzIGEgc2VxdWVuY2Ugb2Ygc2hpZnRzLCBhZGRpdGlvbnMsYW5kIHN1YnRyYWN0aW9ucywgbWFueSBmaXhlZCBwb2ludCBiaW5hcnkgbXVsdGlwbGljYXRpb25zIGludm9sdmluZyBhIGNvbnN0YW50LiBUaGUgbW9zdCBzaWduaWZpY2FudCBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhlIGFsZ29yaXRobSBhcmUgdGhlIHNpbXBsaWNpdHkgb2YgdGhlIHRlc3Qgd2hpY2ggZGV0ZXJtaW5lcyBpZiB0aGUgYWxnb3JpdGhtIHNob3VsZCBiZSBhcHBsaWVkIGFuZCB0aGUgZGVncmVlIHRvIHdoaWNoIGl0IGBgc3VnZ2VzdHMnJyBlZmZpY2llbnQgb2JqZWN0IGNvZGUuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzUyMzAgKERpZ2l0YWwgYXJpdGhtZXRpYyBtZXRob2RzKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIFdhc2hpbmd0b24sIFNlYXR0bGUsIFdBLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJhZGRpdGlvbnM7IGNvbXBpbGluZyBmaXhlZCBwb2ludCBiaW5hcnkgbXVsdGlwbGljYXRpb25zOyBjb21waWxpbmcgbXVsdGlwbGljYXRpb25zOyBkaWdpdGFsIGFyaXRobWV0aWM7IGZpeGVkIHBvaW50IGFyaXRobWV0aWM7IHByb2dyYW0gY29tcGlsZXJzOyBzaGlmdHM7IHN1YnRyYWN0aW9ucyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7RnJhc2VyOjE5NzE6TU5QLAogIGF1dGhvciA9ICAgICAgICJBLiBHLiBGcmFzZXIiLAogIHRpdGxlID0gICAgICAgICJPbiB0aGUgTWVhbmluZyBvZiBOYW1lcyBpbiBQcm9ncmFtbWluZyBTeXN0ZW1zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE0IiwKICBudW1iZXIgPSAgICAgICAiNiIsCiAgcGFnZXMgPSAgICAgICAgIjQwOS0tNDE2IiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzEiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9NaXNjL0Z1bmN0aW9uYWwuYmliIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQyMTAgKEZvcm1hbCBsb2dpYykiLAogIGNvcnBzb3VyY2UgPSAgICJCZWxsIFRlbGVwaG9uZSBMYWJzLiBJbmMuLCBNdXJyYXkgSGlsbCwgTkosIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGF0aW9uYWwgbGluZ3Vpc3RpY3M7IGNvbnRleHQgbWFuaXB1bGF0aW9uOyBkYXRhIG5hbWVzOyBmaWxlOyBmdW5jdGlvbmFsOyBsYW1iZGEgY2FsY3VsdXM7IG5hbWVzOyBvcGVyYXRpbmcgc3lzdGVtOyBvcGVyYXRpbmcgc3lzdGVtcyAoY29tcHV0ZXJzKTsgcHJvZ3JhbW1pbmc7IHByb2dyYW1taW5nIHN5c3RlbXM7IHByb2dyYW1taW5nIHRoZW9yeTsgdGhlb3J5IiwKICB0cmVhdG1lbnQgPSAgICAiRyBHZW5lcmFsIFJldmlldyIsCn0KCkBBcnRpY2xle1dhbGtlcjoxOTcxOkJTLAogIGF1dGhvciA9ICAgICAgICJSLiBKLiBXYWxrZXIiLAogIHRpdGxlID0gICAgICAgICJCaW5hcnkgc3VtbWF0aW9uIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE0IiwKICBudW1iZXIgPSAgICAgICAiNiIsCiAgcGFnZXMgPSAgICAgICAgIjQxNy0tNDE3IiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzEiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzUyMzAgKERpZ2l0YWwgYXJpdGhtZXRpYyBtZXRob2RzKSIsCiAgY29ycHNvdXJjZSA9ICAgIkNvcm5lbGwgVW5pdi4sIEl0aGFjYSwgTlksIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImJpbmFyeSBzdW1tYXRpb247IGRpZ2l0YWwgYXJpdGhtZXRpYzsgZmxvYXRpbmcgcG9pbnQ7IHJvdW5kb2ZmIGVycm9yczsgc3BhY2U7IHN0b3JhZ2UiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle1plbGtvd2l0ejoxOTcxOklEUCwKICBhdXRob3IgPSAgICAgICAiTS4gWmVsa293aXR6IiwKICB0aXRsZSA9ICAgICAgICAiSW50ZXJydXB0IGRyaXZlbiBwcm9ncmFtbWluZyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNCIsCiAgbnVtYmVyID0gICAgICAgIjYiLAogIHBhZ2VzID0gICAgICAgICI0MTctLTQxOCIsCiAgbW9udGggPSAgICAgICAganVuLAogIHllYXIgPSAgICAgICAgICIxOTcxIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM1MjIwIChDb21wdXRlciBhcmNoaXRlY3R1cmUpIiwKICBjb3Jwc291cmNlID0gICAiQ29ybmVsbCBVbml2LiwgSXRoYWNhLCBOWSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiYXNzb2NpYXRpdmU7IGNvbnRyb2w7IGRlYnVnZ2luZzsgaW50ZXJydXB0IGRyaXZlIHByb2dyYW1taW5nOyBtZW1vcmllczsgbWljcm9wcm9ncmFtbWluZzsgcGFyYWxsZWwgcHJvY2Vzc2luZzsgcHJvZ3JhbSBleGVjdXRpb24iLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle01jS2VubmV5OjE5NzE6U0NPLAogIGF1dGhvciA9ICAgICAgICJKLiBMLiBNY0tlbm5leSBhbmQgRi4gTS4gVG9uZ2UiLAogIHRpdGxlID0gICAgICAgICJUaGUgU3RhdGUgb2YgQ29tcHV0ZXItT3JpZW50ZWQgQ3VycmljdWxhIGluIEJ1c2luZXNzIFNjaG9vbHMgMTk3MCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNCIsCiAgbnVtYmVyID0gICAgICAgIjciLAogIHBhZ2VzID0gICAgICAgICI0NDMtLTQ0OCIsCiAgbW9udGggPSAgICAgICAganVsLAogIHllYXIgPSAgICAgICAgICIxOTcxIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgImZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGF0YWJhc2UvV2llZGVyaG9sZC5iaWIiLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDMDIyMCAoQ29tcHV0aW5nIGVkdWNhdGlvbiBhbmQgdHJhaW5pbmcpIiwKICBjb3Jwc291cmNlID0gICAiSGFydmFyZCBVbml2LiwgQ2FtYnJpZGdlLCBNQSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiYnVzaW5lc3Mgc2Nob29sczsgY29tcHV0ZXIgY3VycmljdWxhOyBlZHVjYXRpb247IHJldmlld3MiLAogIHRyZWF0bWVudCA9ICAgICJHIEdlbmVyYWwgUmV2aWV3IiwKfQoKQEFydGljbGV7QmVybnN0ZWluOjE5NzE6UFRQLAogIGF1dGhvciA9ICAgICAgICJBLiBKLiBCZXJuc3RlaW4iLAogIHRpdGxlID0gICAgICAgICJBIHByb2dyYW1tZXIgdHJhaW5pbmcgcHJvamVjdCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNCIsCiAgbnVtYmVyID0gICAgICAgIjciLAogIHBhZ2VzID0gICAgICAgICI0NDktLTQ1MiIsCiAgbW9udGggPSAgICAgICAganVsLAogIHllYXIgPSAgICAgICAgICIxOTcxIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMwMjIwIChDb21wdXRpbmcgZWR1Y2F0aW9uIGFuZCB0cmFpbmluZykiLAogIGNvcnBzb3VyY2UgPSAgICJHZW5lcmFsIEVsZWN0cmljIFJlcy4gYW5kIERldi4gQ2VudGVyLCBTY2hlbmVjdGFkeSwgTlksIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImJsYWNrOyBjb3Vyc2Ugb3JnYW5pc2F0aW9uOyBjdXJyaWN1bHVtOyBqb2JzOyBwcm9ncmFtbWVyIHRyYWluaW5nIHByb2plY3Q7IHByb2dyYW1taW5nOyByZXNpZGVudHM7IHRyYWluaW5nIiwKICB0cmVhdG1lbnQgPSAgICAiRyBHZW5lcmFsIFJldmlldyIsCn0KCkBBcnRpY2xle0RlUmVtZXI6MTk3MTpTTEssCiAgYXV0aG9yID0gICAgICAgIkZyYW5rbGluIEwuIERlUmVtZXIiLAogIHRpdGxlID0gICAgICAgICJTaW1wbGUge0xSKGspfSBncmFtbWFycyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNCIsCiAgbnVtYmVyID0gICAgICAgIjciLAogIHBhZ2VzID0gICAgICAgICI0NTMtLTQ2MCIsCiAgbW9udGggPSAgICAgICAganVsLAogIHllYXIgPSAgICAgICAgICIxOTcxIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjhBMzAiLAogIE1SbnVtYmVyID0gICAgICI0NyA5ODkzIiwKICBtcnJldmlld2VyID0gICAiSi4gRS4gTC4gUGVjayIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFic3RyYWN0ID0gICAgICJBIGNsYXNzIG9mIGNvbnRleHQtZnJlZSBncmFtbWFycywgY2FsbGVkIHRoZSBgYFNpbXBsZSBMUihrKScnIG9yIFNMUihrKSBncmFtbWFycyBpcyBkZWZpbmVkLlxwYXIgVGhpcyBjbGFzcyBoYXMgYmVlbiBzaG93biB0byBpbmNsdWRlIHdlYWsgcHJlY2VkZW5jZSBhbmQgc2ltcGxlIHByZWNlZGVuY2UgZ3JhbW1hcnMgYXMgcHJvcGVyIHN1YnNldHMuIFxwYXIgSG93IHRvIGNvbnN0cnVjdCBwYXJzZXJzIGZvciB0aGUgU0xSKGspIGdyYW1tYXJzIGlzIGFsc28gc2hvd24uIFRoZXNlIHBhcnNlci1jb25zdHJ1Y3Rpb24gdGVjaG5pcXVlcyBhcmUgZXh0ZW5kaWJsZSB0byBjb3ZlciBhbGwgb2YgdGhlIExSKGspIGdyYW1tYXJzIG9mIEtudXRoOyB0aGV5IGhhdmUgYmVlbiBpbXBsZW1lbnRlZCBhbmQgYnkgZGlyZWN0IGNvbXBhcmlzb24gcHJvdmVkIHRvIGJlIHN1cGVyaW9yIHRvIHByZWNlZGVuY2UgdGVjaG5pcXVlcywgbm90IG9ubHkgaW4gdGhlIHJhbmdlIG9mIGdyYW1tYXJzIGNvdmVyZWQsIGJ1dCBhbHNvIGluIHRoZSBzcGVlZCBvZiBwYXJzZXIgY29uc3RydWN0aW9uIGFuZCBpbiB0aGUgc2l6ZSBhbmQgc3BlZWQgb2YgdGhlIHJlc3VsdGluZyBwYXJzZXJzLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MjEwIChGb3JtYWwgbG9naWMpIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gb2YgQ2FsaWZvcm5pYSwgU2FudGEgQ3J1eiwgQ0EsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImNvbnRleHQtZnJlZSBncmFtbWFyOyBkZXRlcm1pbmlzdGljIHB1c2hkb3duIGF1dG9tYXRvbjsgZmluaXRlLXN0YXRlIG1hY2hpbmU7IExSKGspIGdyYW1tYXI7IHBhcnNlcjsgcGFyc2luZyBhbGdvcml0aG07IHByZWNlZGVuY2UgZ3JhbW1hcjsgc3ludGFjdGljIGFuYWx5c2lzIiwKICBrZXl3b3JkcyA9ICAgICAiY29udGV4dCBmcmVlIGdyYW1tYXJzOyBjb250ZXh0LWZyZWUgZ3JhbW1hcnM7IGdyYW1tYXJzOyBwYXJzZXIgY29uc3RydWN0aW9uOyBwcmVjZWRlbmNlOyBzaW1wbGUgTFIoSykgZ3JhbW1hcnMiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle1ByYXR0OjE5NzE6TEVHLAogIGF1dGhvciA9ICAgICAgICJUZXJyZW5jZSBXLiBQcmF0dCBhbmQgRGFuaWVsIFAuIEZyaWVkbWFuIiwKICB0aXRsZSA9ICAgICAgICAiQSBMYW5ndWFnZSBFeHRlbnNpb24gZm9yIEdyYXBoIFByb2Nlc3NpbmcsIGFuZCBJdHMgRm9ybWFsIFNlbWFudGljcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNCIsCiAgbnVtYmVyID0gICAgICAgIjciLAogIHBhZ2VzID0gICAgICAgICI0NjAtLTQ2NyAob3IgNDYxLS00Njc/PykiLAogIG1vbnRoID0gICAgICAgIGp1bCwKICB5ZWFyID0gICAgICAgICAiMTk3MSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4QTMwIiwKICBNUm51bWJlciA9ICAgICAiNDYgNjY1NyIsCiAgbXJyZXZpZXdlciA9ICAgIkEuIEQuIEJvb3RoIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgImZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvQWkvbGlzcC5iaWIiLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjE0MEQgKEhpZ2ggbGV2ZWwgbGFuZ3VhZ2VzKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIFRleGFzLCBBdXN0aW4sIFRYLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJkYXRhIHN0cnVjdHVyZTsgZGlyZWN0ZWQgZ3JhcGg7IGZsb3djaGFydDsgZm9ybWFsIHNlbWFudGljczsgZ3JhcGggcHJvY2Vzc2luZzsgR3Jhc3BlOyBsYW5ndWFnZSBleHRlbnNpb247IExpc3A7IHByb2JsZW0gb3JpZW50ZWQgbGFuZ3VhZ2VzOyBzeW50YXgiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle1BhdG9uOjE5NzE6QUJDLAogIGF1dGhvciA9ICAgICAgICJLZWl0aCBQYXRvbiIsCiAgdGl0bGUgPSAgICAgICAgIkFuIGFsZ29yaXRobSBmb3IgdGhlIGJsb2NrcyBhbmQgY3V0IG5vZGVzIG9mIGEgZ3JhcGgiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTQiLAogIG51bWJlciA9ICAgICAgICI3IiwKICBwYWdlcyA9ICAgICAgICAiNDY4LS00NzUiLAogIG1vbnRoID0gICAgICAgIGp1bCwKICB5ZWFyID0gICAgICAgICAiMTk3MSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjA1LTA0IiwKICBNUm51bWJlciA9ICAgICAiNDYgNTEzNSIsCiAgbXJyZXZpZXdlciA9ICAgIkUuIE0uIFJlaW5nb2xkIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgbm90ZSA9ICAgICAgICAgIlNlZSBjb3JyaWdlbmR1bSBcY2l0ZXtQYXRvbjoxOTcxOkNBQn0uIiwKICBhYnN0cmFjdCA9ICAgICAiQW4gZWZmaWNpZW50IG1ldGhvZCBpcyBwcmVzZW50ZWQgZm9yIGZpbmRpbmcgYmxvY2tzIGFuZCBjdXRub2RlcyBvZiBhbiBhcmJpdHJhcnkgdW5kaXJlY3RlZCBncmFwaC4gVGhlIGdyYXBoIG1heSBiZSByZXByZXNlbnRlZCBlaXRoZXIgKGkpIGFzIGFuIG9yZGVyZWQgbGlzdCBvZiBlZGdlcyBvciAoaWkpIGFzIGEgcGFja2VkIGFkamFjZW5jeSBtYXRyaXguIElmICR3JCBkZW5vdGVzIHRoZSB3b3JkIGxlbmd0aCBvZiB0aGUgbWFjaGluZSBlbXBsb3llZCwgdGhlIHN0b3JhZ2UgKGluIG1hY2hpbmUgd29yZHMpIHJlcXVpcmVkIGZvciBhIGdyYXBoIHdpdGggJG4kIG5vZGVzIGFuZCAkbSQgZWRnZXMgaW5jcmVhc2VzIGVzc2VudGlhbGx5IGFzICQyKG0rbikkIGluIGNhc2UgKGkpLCBvciAkKG5eMikvdyQgaW4gY2FzZSAoaWkpLiBBIHNwYW5uaW5nIHRyZWUgd2l0aCBsYWJlbGVkIGVkZ2VzIGlzIGdyb3duLCB0d28gZWRnZXMgZmluYWxseSBiZWFyaW5nIGRpZmZlcmVudCBsYWJlbHMgaWYgYW5kIG9ubHkgaWYgdGhleSBiZWxvbmcgdG8gZGlmZmVyZW50IGJsb2Nrcy4gRm9yIGJvdGggcmVwcmVzZW50YXRpb25zIHRoZSB0aW1lIHJlcXVpcmVkIHRvIGFuYWx5emUgYSBncmFwaCBvbiAkbiQgbm9kZXMgaW5jcmVhc2VzIGFzICRuXkckIHdoZXJlICRHJCBkZXBlbmRzIG9uIHRoZSB0eXBlIG9mIGdyYXBoLCAkMSA8PSBHIDw9IDIkLCBhbmQgYm90aCBib3VuZHMgYXJlIGF0dGFpbmVkLiBccGFyIFZhbHVlcyBvZiBHIGFyZSBkZXJpdmVkIGZvciBlYWNoIG9mIHNldmVyYWwgc3VpdGFibGUgZmFtaWxpZXMgb2YgdGVzdCBncmFwaHMsIGdlbmVyYXRlZCBieSBhbiBleHRlbnNpb24gb2YgdGhlIHdlYiBncmFtbWFyIGFwcHJvYWNoLiBUaGUgYWxnb3JpdGhtIGlzIGNvbXBhcmVkIGluIGRldGFpbCB3aXRoIHRoYXQgcHJvcG9zZWQgYnkgUmVhZCBmb3Igd2hpY2ggMSA8PSBHIDw9IDMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzExNjAgKENvbWJpbmF0b3JpYWwgbWF0aGVtYXRpY3MpIiwKICBjb3Jwc291cmNlID0gICAiTWVkaWNhbCBSZXMuIENvdW5jaWwsIExvbmRvbiwgVUsiLAogIGtleXdvcmRzID0gICAgICJhbGdvcml0aG07IGJsb2NrOyBibG9jay1jdXRwb2ludC10cmVlOyBibG9ja3M7IGN1dCBub2RlczsgY3V0bm9kZTsgZnVuZGFtZW50YWwgY3ljbGUgc2V0OyBncmFwaDsgZ3JhcGggdGhlb3J5OyBsYWJlbGxlZCBlZGdlczsgbG9iZTsgbG9iZSBkZWNvbXBvc2l0aW9uOyBsb2JlIGRlY29tcG9zaXRpb24gZ3JhcGg7IG9yZGVyZWQgbGlzdCBvZiBlZGdlczsgcGFja2VkIGFkamFjZW5jeSBtYXRyaXg7IHNlcGFyYWJsZTsgc3Bhbm5pbmcgdHJlZTsgdW5kaXJlY3RlZDsgd2ViIGdyYW1tYXIiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0Zlcmd1c29uOjE5NzE6QkFNLAogIGF1dGhvciA9ICAgICAgICJELiBFLiBGZXJndXNvbiIsCiAgdGl0bGUgPSAgICAgICAgIkJ1ZmZlciBBbGxvY2F0aW9uIGluIE1lcmdlLVNvcnRpbmciLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTQiLAogIG51bWJlciA9ICAgICAgICI3IiwKICBwYWdlcyA9ICAgICAgICAiNDc2LS00NzgiLAogIG1vbnRoID0gICAgICAgIGp1bCwKICB5ZWFyID0gICAgICAgICAiMTk3MSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFic3RyYWN0ID0gICAgICJBIGZpeGVkIGJ1ZmZlciBhbGxvY2F0aW9uIGZvciBtZXJnZS1zb3J0aW5nIGlzIHByZXNlbnRlZCBoZXJlIHdoaWNoIG1pbmltaXplcyB0aGUgbnVtYmVyIG9mIGlucHV0LW91dHB1dCBvcGVyYXRpb25zIGZvciBhIGdpdmVuIG9yZGVyIG9mIG1lcmdlLiBccGFyIFdoZW4gc29ydGluZyBvbiBtb3ZhYmxlIGFybSBkaXNrcywgdGhlIG51bWJlciBvZiBzZWVrcyBpcyBlcXVhbCB0byB0aGUgbnVtYmVyIG9mIGlucHV0LW91dHB1dCBvcGVyYXRpb25zLCBhbmQgdGhlIHNlZWsgdGltZSB1c3VhbGx5IGNvbnRyb2xzIHRoZSBzb3J0IHRpbWUuIEZpcnN0IHNvbWUgc3RhbmRhcmQgdGVybWlub2xvZ3kgaXMgaW50cm9kdWNlZC4gVGhlbiB0aGUgaW5wdXQgYnVmZmVyIGFsbG9jYXRpb24gbWV0aG9kIGlzIGRlc2NyaWJlZCwgZm9sbG93ZWQgYnkgYW4gYW5hbHlzaXMgb2YgdGhlIGltcHJvdmVtZW50IHRvIGJlIGV4cGVjdGVkIG92ZXIgbW9yZSBjb252ZW50aW9uYWwgYWxsb2NhdGlvbi4gVGhpcyBhbmFseXNpcyBtYWtlcyB1c2Ugb2YgYSBwYXJ0aWN1bGFyIGRpc3RyaWJ1dGlvbiBmdW5jdGlvbi4gQW4gYW5hbHlzaXMgb2YgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBkaXN0cmlidXRpb24gaXMgZ2l2ZW4gd2hpY2ggeWllbGRzIHNpbWlsYXIgcmVzdWx0cy4gVGhpcyBzdWdnZXN0cyB0aGF0IHRoZSByZXN1bHRzIGRvIG5vdCBkZXBlbmQgb24gYSBwYXJ0aWN1bGFyIGRpc3RyaWJ1dGlvbiBmdW5jdGlvbi4gQW4gb3B0aW11bSBvdXRwdXQgYnVmZmVyIHNpemUgaXMgYWxzbyBkZXRlcm1pbmVkLiBJdCBpcyBjb25jbHVkZWQgdGhhdCB0aGlzIGJ1ZmZlcmluZyBhbGxvY2F0aW9uIGNhbiBzaWduaWZpY2FudGx5IHJlZHVjZSB0aGUgdGltZSBvZiBtZXJnZSBzb3J0aW5nIG9uIG1vdmFibGUgYXJtIGRpc2tzIHdoZW4gdGhlIGlucHV0IGRhdGEgYXJlIG5vdCByYW5kb20sIGFuZCB0aGF0IHRoaXMgb3V0cHV0IGJ1ZmZlciBhbGxvY2F0aW9uIHNob3VsZCBiZSB1c2VkIHdoZXRoZXIgdGhlIGRhdGEgaXMgcmFuZG9tIG9yIG5vdC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKSIsCiAgY29ycHNvdXJjZSA9ICAgIlByb2dyYW1tYXRpY3MgSW5jLiwgTG9zIEFuZ2VsZXMsIENBLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJmaWxlOyBmaXhlZCBidWZmZXIgYWxsb2NhdGlvbjsgZ2FtbWEgZGlzdHJpYnV0aW9uIGZ1bmN0aW9uOyBpbnB1dCBvdXRwdXQgb3BlcmF0aW9uczsgaXRlbTsgbWVyZ2Ugc29ydDsgbW92YWJsZSBhcm0gZGlza3M7IG9wdGltdW07IG91dHB1dCBidWZmZXIgc2l6ZTsgc2VlayB0aW1lOyBzb3J0aW5nOyBzdG9yYWdlIGFsbG9jYXRpb247IHN0cmluZyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7UmFtYW1vb3J0aHk6MTk3MTpTT0UsCiAgYXV0aG9yID0gICAgICAgIkMuIFYuIFJhbWFtb29ydGh5IGFuZCBNLiBKLiBHb256YWxleiIsCiAgdGl0bGUgPSAgICAgICAgIlN1YmV4cHJlc3Npb24gb3JkZXJpbmcgaW4gdGhlIGV4ZWN1dGlvbiBvZiBhcml0aG1ldGljIGV4cHJlc3Npb25zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE0IiwKICBudW1iZXIgPSAgICAgICAiNyIsCiAgcGFnZXMgPSAgICAgICAgIjQ3OS0tNDg1IiwKICBtb250aCA9ICAgICAgICBqdWwsCiAgeWVhciA9ICAgICAgICAgIjE5NzEiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2OEEyMCIsCiAgTVJudW1iZXIgPSAgICAgIjQ2IDY2NTAiLAogIG1ycmV2aWV3ZXIgPSAgICJBLiBELiBCb290aCIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFic3RyYWN0ID0gICAgICJBbiBhcml0aG1ldGljIGV4cHJlc3Npb24gY2FuIG9mdGVuIGJlIGJyb2tlbiBkb3duIGludG8gaXRzIGNvbXBvbmVudCBzdWJleHByZXNzaW9ucy4gRGVwZW5kaW5nIG9uIHRoZSBoYXJkd2FyZSBlbnZpcm9ubWVudCBpbiB3aGljaCB0aGUgZXhwcmVzc2lvbiBpcyB0byBiZSBleGVjdXRlZCwgdGhlc2Ugc3ViZXhwcmVzc2lvbnMgY2FuIGJlIGV2YWx1YXRlZCBpbiBzZXJpYWxzLCBpbiBwYXJhbGxlbCwgb3IgaW4gYSBjb21iaW5hdGlvbiBvZiB0aGVzZSBtb2Rlcy4gVGhpcyBwYXBlciBzaG93cyB0aGF0IGV4cHJlc3Npb24gZXhlY3V0aW9uIHRpbWUgY2FuIGJlIG1pbmltaXplZCBvbmx5IGlmIGNvbnNpZGVyYXRpb24gaXMgZ2l2ZW4gdG8gdGhlIG9yZGVyaW5nIG9mIHRoZSBzdWJleHByZXNzaW9ucy4gSW4gcGFydGljdWxhciwgc3ViZXhwcmVzc2lvbnMgc2hvdWxkIGJlIGV4ZWN1dGVkIGluIG9yZGVyIG9mIGRlY3JlYXNpbmcgbWVtb3J5IGFuZCBwcm9jZXNzb3IgdGltZSByZXF1aXJlbWVudHMuIFRoaXMgb2JzZXJ2YXRpb24gaXMgdmFsaWQgZm9yIGNvbmZpZ3VyYXRpb25zIHJhbmdpbmcgZnJvbSBhIHVuaXByb2Nlc3NvciB3aXRoIGFuIHVuYnVmZmVyZWQgbWFpbiBtZW1vcnkgdG8gbXVsdGlwcm9jZXNzb3Igd2l0aCBhIGBgY2FjaGUnJyBidWZmZXIgbWVtb3J5LiBJZiB0aGUgbnVtYmVyIG9mIHN1YmV4cHJlc3Npb25zIHdoaWNoIGNhbiBiZSBleGVjdXRlZCBpbiBwYXJhbGxlbCBleGNlZWRzIHRoZSBudW1iZXIgb2YgYXZhaWxhYmxlIHByb2Nlc3NvcnMsIHRoZW4gZXhlY3V0aW9uIG9mIHNvbWUgb2YgdGhlc2Ugc3ViZXhwcmVzc2lvbnMgbXVzdCBiZSBwb3N0cG9uZWQuIEEgcHJvY2VkdXJlIGlzIGdpdmVuIHdoaWNoIGNvbWJpbmVzIHRoaXMgcmVxdWlyZW1lbnQgd2l0aCB0aGUgZWFybGllciBvcmRlcmluZyBjb25zaWRlcmF0aW9ucyB0byBwcm92aWRlIGFuIG9wdGltYWwgZXhlY3V0aW9uIHNlcXVlbmNlLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM1MjMwIChEaWdpdGFsIGFyaXRobWV0aWMgbWV0aG9kcyk7IEM2MTMwIChEYXRhIGhhbmRsaW5nIHRlY2huaXF1ZXMpIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gVGV4YXMsIEF1c3RpbiwgVFgsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImFyaXRobWV0aWMgZXhwcmVzc2lvbjsgYXJpdGhtZXRpYyBleHByZXNzaW9uczsgY2FjaGU7IGNvbXBpbGVyczsgY29tcHV0YXRpb25hbCB0cmVlczsgZGF0YSBoYW5kbGluZzsgZGlnaXRhbCBhcml0aG1ldGljOyBleGVjdXRpb24gdGltZTsgcGFyYWxsZWwgcHJvY2Vzc2luZzsgc3ViZXhwcmVzc2lvbiBvcmRlcmluZyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7TWNWaXRpZToxOTcxOlNNUCwKICBhdXRob3IgPSAgICAgICAiRC4gRy4gTWNWaXRpZSBhbmQgTC4gQi4gV2lsc29uIiwKICB0aXRsZSA9ICAgICAgICAiVGhlIFN0YWJsZSBNYXJyaWFnZSBQcm9ibGVtIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE0IiwKICBudW1iZXIgPSAgICAgICAiNyIsCiAgcGFnZXMgPSAgICAgICAgIjQ4Ni0tNDkwIiwKICBtb250aCA9ICAgICAgICBqdWwsCiAgeWVhciA9ICAgICAgICAgIjE5NzEiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI5MEI5OSAoNjhBMTApIiwKICBNUm51bWJlciA9ICAgICAiNDYgNjgwOCIsCiAgbXJyZXZpZXdlciA9ICAgIlIuIEIuIFBvdHRzIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWJzdHJhY3QgPSAgICAgIlRoZSBvcmlnaW5hbCB3b3JrIG9mIEdhbGUgYW5kIFNoYXBsZXkgb24gYW4gYXNzaWdubWVudCBtZXRob2QgdXNpbmcgdGhlIHN0YWJsZSBtYXJyaWFnZSBjcml0ZXJpb24gaGFzIGJlZW4gZXh0ZW5kZWQgdG8gZmluZCBhbGwgdGhlIHN0YWJsZSBtYXJyaWFnZSBhc3NpZ25tZW50cy5ccGFyIFRoZSBhbGdvcml0aG0gZGVyaXZlZCBmb3IgZmluZGluZyBhbGwgdGhlIHN0YWJsZSBtYXJyaWFnZSBhc3NpZ25tZW50cyBpcyBwcm92ZWQgdG8gc2F0aXNmeSBhbGwgdGhlIGNvbmRpdGlvbnMgb2YgdGhlIHByb2JsZW0uIEFsZ29yaXRobSA0MTEgYXBwbGllcyB0byB0aGlzIHBhcGVyLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMxMTYwIChDb21iaW5hdG9yaWFsIG1hdGhlbWF0aWNzKTsgQzczMTAgKE1hdGhlbWF0aWNzIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBOZXdjYXN0bGUgdXBvbiBUeW5lLCBVSyIsCiAga2V5d29yZHMgPSAgICAgImFzc2lnbm1lbnQ7IGFzc2lnbm1lbnQgcHJvYmxlbXM7IGFzc2lnbm1lbnQgcHJvY2VkdXJlczsgY29tYmluYXRvcmlhbCBtYXRoZW1hdGljczsgY29tYmluYXRvcmljczsgZGlzY3JldGUgbWF0aGVtYXRpY3M7IG9wZXJhdGlvbmFsIHJlc2VhcmNoOyBvcGVyYXRpb25zIHJlc2VhcmNoOyBzdGFibGUgbWFycmlhZ2UgcHJvYmxlbTsgdW5pdmVyc2l0eSBlbnRyYW5jZSIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7TWNWaXRpZToxOTcxOkFBVCwKICBhdXRob3IgPSAgICAgICAiRC4gRy4gTWNWaXRpZSBhbmQgTC4gQi4gV2lsc29uIiwKICB0aXRsZSA9ICAgICAgICAie0FDTX0gQWxnb3JpdGhtIDQxMTogVGhyZWUgUHJvY2VkdXJlcyBmb3IgdGhlIFN0YWJsZSBNYXJyaWFnZSBQcm9ibGVtIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE0IiwKICBudW1iZXIgPSAgICAgICAiNyIsCiAgcGFnZXMgPSAgICAgICAgIjQ5MS0tNDkyIiwKICBtb250aCA9ICAgICAgICBqdWwsCiAgeWVhciA9ICAgICAgICAgIjE5NzEiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzczMTAgKE1hdGhlbWF0aWNzIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBOZXdjYXN0bGUgdXBvbiBUeW5lLCBVSyIsCiAga2V5d29yZHMgPSAgICAgIkFMR09MIHByb2NlZHVyZXM7IGFzc2lnbm1lbnQ7IGNvbWJpbmF0b3JpYWwgbWF0aGVtYXRpY3M7IG9wZXJhdGlvbnMgcmVzZWFyY2g7IHN0YWJsZSBtYXJyaWFnZSBwcm9ibGVtOyBzdWJyb3V0aW5lcyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7Q2VybWFrOjE5NzE6QUFHLAogIGF1dGhvciA9ICAgICAgICJKLiB7XHZ7Q319ZXJte1wne2F9fWsiLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gNDEyOiBHcmFwaCBQbG90dGVyIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE0IiwKICBudW1iZXIgPSAgICAgICAiNyIsCiAgcGFnZXMgPSAgICAgICAgIjQ5Mi0tNDkzIiwKICBtb250aCA9ICAgICAgICBqdWwsCiAgeWVhciA9ICAgICAgICAgIjE5NzEiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9NaXNjL2FjbS5iaWIiLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjE1MEUgKEdlbmVyYWwgdXRpbGl0eSBwcm9ncmFtcykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBDaGVtLiBUZWNobm9sLiwgUGFyZHViaWNlLCBDemVjaG9zbG92YWtpYSIsCiAga2V5d29yZHMgPSAgICAgIkFMR09MIHByb2NlZHVyZTsgY29tcHV0ZXIgZ3JhcGhpY3M7IGdyYXBoOyBsaW5lOyBtdWx0aXZhbHVlZCBmdW5jdGlvbjsgcGxvdDsgcHJpbnRlcjsgc3Vicm91dGluZXM7IHV0aWxpdHkgcHJvZ3JhbXMiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0Fub255bW91czoxOTcxOlBTUywKICBhdXRob3IgPSAgICAgICAiQW5vbnltb3VzIiwKICB0aXRsZSA9ICAgICAgICAiUGFwZXJzIGZyb20gdGhlIDJuZCBzeW1wb3NpdW0gb24gc3ltYm9saWMgYW5kIGFsZ2VicmFpYyBtYW5pcHVsYXRpb24iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTQiLAogIG51bWJlciA9ICAgICAgICI4IiwKICBwYWdlcyA9ICAgICAgICAiPz8tLT8/IiwKICBtb250aCA9ICAgICAgICBhdWcsCiAgeWVhciA9ICAgICAgICAgIjE5NzEiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjAyMTAgKEFsZ2VicmEpOyBDMTExMCAoQWxnZWJyYSkiLAogIGNvbmZsb2NhdGlvbiA9ICJMb3MgQW5nZWxlcywgQ0EsIFVTQTsgMjMtMjUgTWFyY2ggMTk3MSIsCiAgY29uZnRpdGxlID0gICAgIlBhcGVycyBmcm9tIHRoZSAybmQgc3ltcG9zaXVtIG9uIHN5bWJvbGljIGFuZCBhbGdlYnJhaWMgbWFuaXB1bGF0aW9uIiwKICBrZXl3b3JkcyA9ICAgICAiYWxnZWJyYTsgYWxnZWJyYWljIGV4cHJlc3Npb25zOyBlcXVpdmFsZW5jZTsgZ3JlYXRlc3QgY29tbW9uIGRpdmlzb3JzOyBwb2x5bm9taWFsOyBwb2x5bm9taWFsczsgcmVzdWx0YW50czsgcm9vdHM7IHN1YnJlc3VsdGFudHM7IHN5bWJvbGljIGFuZCBhbGdlYnJhaWMgbWFuaXB1bGF0aW9uOyB6ZXJvIiwKICBzcG9uc29yb3JnID0gICAiQXNzb2MuIENvbXB1dGluZyBNYWNoaW5lcnkiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0hlYXJuOjE5NzE6QVNNLAogIGF1dGhvciA9ICAgICAgICJBbnRob255IEMuIEhlYXJuIiwKICB0aXRsZSA9ICAgICAgICAiQXBwbGljYXRpb25zIG9mIFN5bWJvbGljIE1hbmlwdWxhdGlvbiBpbiBUaGVvcmV0aWNhbCBQaHlzaWNzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE0IiwKICBudW1iZXIgPSAgICAgICAiOCIsCiAgcGFnZXMgPSAgICAgICAgIjUxMS0tNTE2IiwKICBtb250aCA9ICAgICAgICBhdWcsCiAgeWVhciA9ICAgICAgICAgIjE5NzEiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9UaGVvcnkvcmVkdWNlLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIlRoaXMgcGFwZXIgc3VydmV5cyB0aGUgYXBwbGljYXRpb25zIG9mIHN5bWJvbGljIGNvbXB1dGF0aW9uIHRlY2huaXF1ZXMgdG8gcHJvYmxlbXMgaW4gdGhlb3JldGljYWwgcGh5c2ljcy4gUGFydGljdWxhciBlbXBoYXNpcyBpcyBwbGFjZWQgb24gYXBwbGljYXRpb25zIGluIHF1YW50dW0gZWxlY3Ryb2R5bmFtaWNzIHdoZXJlIHRoZSBtb3N0IGFjdGl2aXR5IGhhcyBvY2N1cnJlZC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKSIsCiAgY29uZmxvY2F0aW9uID0gIkxvcyBBbmdlbGVzLCBDQSwgVVNBOyAyMy0yNSBNYXJjaCAxOTcxIiwKICBjb25mdGl0bGUgPSAgICAiUGFwZXJzIGZyb20gdGhlIDJuZCBzeW1wb3NpdW0gb24gc3ltYm9saWMgYW5kIGFsZ2VicmFpYyBtYW5pcHVsYXRpb24iLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBVdGFoLCBTYWx0IExha2UgQ2l0eSwgVVQsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImFsZ2VicmFpYzsgYWxnZWJyYWljIHNpbXBsaWZpY2F0aW9uOyBjb21wdXRhdGlvbmFsIHBoeXNpY3M7IGRhdGEgaGFuZGxpbmc7IHBoeXNpY3M7IHF1YW50dW0gZWxlY3Ryb2R5bmFtaWNzOyBzaW1wbGlmaWNhdGlvbjsgc3ltYm9sIG1hbmlwdWxhdGlvbjsgc3ltYm9saWMgY29tcHV0YXRpb247IHN5bWJvbGljIG1hbmlwdWxhdGlvbjsgdGhlb3JldGljYWwgcGh5c2ljcyIsCiAgc3BvbnNvcm9yZyA9ICAgIkFzc29jLiBDb21wdXRpbmcgTWFjaGluZXJ5IiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAogIHh4dGl0bGUgPSAgICAgICJBcHBsaWNhdGlvbnMgb2Ygc3ltYm9sIG1hbmlwdWxhdGlvbiBpbiB0aGVvcmV0aWNhbCBwaHlzaWNzIiwKfQoKQEFydGljbGV7SGFsbDoxOTcxOkFTUiwKICBhdXRob3IgPSAgICAgICAiQS4gRC4ge0hhbGwsIEpyLn0iLAogIHRpdGxlID0gICAgICAgICJUaGUge0FsdHJhbn0gc3lzdGVtIGZvciByYXRpb25hbCBmdW5jdGlvbiBtYW5pcHVsYXRpb24gLS0tIGEgc3VydmV5IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE0IiwKICBudW1iZXIgPSAgICAgICAiOCIsCiAgcGFnZXMgPSAgICAgICAgIjUxNy0tNTIxIiwKICBtb250aCA9ICAgICAgICBhdWcsCiAgeWVhciA9ICAgICAgICAgIjE5NzEiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKTsgQzYxNDBEIChIaWdoIGxldmVsIGxhbmd1YWdlcyk7IEM3MzEwIChNYXRoZW1hdGljcyBjb21wdXRpbmcpIiwKICBjb25mbG9jYXRpb24gPSAiTG9zIEFuZ2VsZXMsIENBLCBVU0E7IDIzLTI1IE1hcmNoIDE5NzEiLAogIGNvbmZ0aXRsZSA9ICAgICJQYXBlcnMgZnJvbSB0aGUgMm5kIHN5bXBvc2l1bSBvbiBzeW1ib2xpYyBhbmQgYWxnZWJyYWljIG1hbmlwdWxhdGlvbiIsCiAgY29ycHNvdXJjZSA9ICAgIkJlbGwgVGVsZXBob25lIExhYnMuIEluYy4sIE11cnJheSBIaWxsLCBOSiwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiYWxnZWJyYTsgQWx0cmFuOyBjb2VmZmljaWVudHM7IGNvbXB1dGF0aW9uOyBkYXRhIHN0cnVjdHVyZXM7IGludGVnZXI7IGxhbmd1YWdlOyBsYW5ndWFnZXM7IHBvbHlub21pYWwgbWFuaXB1bGF0aW9uOyBwb2x5bm9taWFsczsgcHJvYmxlbSBvcmllbnRlZDsgcmF0aW9uYWwgZnVuY3Rpb24gbWFuaXB1bGF0aW9uOyBydW4gdGltZSBkYXRhIHN0cnVjdHVyZXM7IHN5bWJvbGljIiwKICBzcG9uc29yb3JnID0gICAiQXNzb2MuIENvbXB1dGluZyBNYWNoaW5lcnkiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbDsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtGZW5pY2hlbDoxOTcxOkxUUywKICBhdXRob3IgPSAgICAgICAiUm9iZXJ0IFIuIEZlbmljaGVsIiwKICB0aXRsZSA9ICAgICAgICAiTGlzdCBUcmFjaW5nIGluIFN5c3RlbXMgQWxsb3dpbmcgTXVsdGlwbGUgQ2VsbCBUeXBlcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNCIsCiAgbnVtYmVyID0gICAgICAgIjgiLAogIHBhZ2VzID0gICAgICAgICI1MjItLTUyNiIsCiAgbW9udGggPSAgICAgICAgYXVnLAogIHllYXIgPSAgICAgICAgICIxOTcxIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgImZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvQ29tcGlsZXIvZ2FyYmFnZS5jb2xsZWN0aW9uLmJpYiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTMwIChEYXRhIGhhbmRsaW5nIHRlY2huaXF1ZXMpIiwKICBjb25mbG9jYXRpb24gPSAiTG9zIEFuZ2VsZXMsIENBLCBVU0E7IDIzLTI1IE1hcmNoIDE5NzEiLAogIGNvbmZ0aXRsZSA9ICAgICJQYXBlcnMgZnJvbSB0aGUgMm5kIHN5bXBvc2l1bSBvbiBzeW1ib2xpYyBhbmQgYWxnZWJyYWljIG1hbmlwdWxhdGlvbiIsCiAgY29ycHNvdXJjZSA9ICAgIk1JVCwgQ2FtYnJpZGdlLCBNQSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiY29uZmlndXJhdGlvbjsgbGlzdCBwcm9jZXNzaW5nOyBsaXN0IHRyYWNpbmc7IG11bHRpcGxlIGNlbGwgdHlwZXM7IHNpemU7IHN0b3JhZ2UgYWxsb2NhdGlvbiIsCiAgc3BvbnNvcm9yZyA9ICAgIkFzc29jLiBDb21wdXRpbmcgTWFjaGluZXJ5IiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtNb3NlczoxOTcxOkFTRywKICBhdXRob3IgPSAgICAgICAiSi4gTW9zZXMiLAogIHRpdGxlID0gICAgICAgICJBbGdlYnJhaWMgU2ltcGxpZmljYXRpb246IHtBfSBHdWlkZSBmb3IgdGhlIFBlcnBsZXhlZCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNCIsCiAgbnVtYmVyID0gICAgICAgIjgiLAogIHBhZ2VzID0gICAgICAgICI1MjctLTUzNyIsCiAgbW9udGggPSAgICAgICAgYXVnLAogIHllYXIgPSAgICAgICAgICIxOTcxIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjhBMTUiLAogIE1SbnVtYmVyID0gICAgICI0NiA4NDY1IiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgImZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvVGhlb3J5L0NvbXAuQWxnLjEuYmliIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjAyMTAgKEFsZ2VicmEpOyBDMTExMCAoQWxnZWJyYSkiLAogIGNvbmZsb2NhdGlvbiA9ICJMb3MgQW5nZWxlcywgQ0EsIFVTQTsgMjMtMjUgTWFyY2ggMTk3MSIsCiAgY29uZnRpdGxlID0gICAgIlBhcGVycyBmcm9tIHRoZSAybmQgc3ltcG9zaXVtIG9uIHN5bWJvbGljIGFuZCBhbGdlYnJhaWMgbWFuaXB1bGF0aW9uIiwKICBjb3Jwc291cmNlID0gICAiTUlULCBDYW1icmlkZ2UsIE1BLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJhbGdlYnJhOyBhbGdlYnJhaWMgc2ltcGxpZmljYXRpb247IGF1dG9tYXRpYzsgc2ltcGxpZmljYXRpb24gY2FwYWJpbGl0aWVzOyBzdWJzdGl0dXRpb24iLAogIHNwb25zb3JvcmcgPSAgICJBc3NvYy4gQ29tcHV0aW5nIE1hY2hpbmVyeSIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7SmVmZmVyeXM6MTk3MTpBQU0sCiAgYXV0aG9yID0gICAgICAgIlcuIEguIEplZmZlcnlzIiwKICB0aXRsZSA9ICAgICAgICAiQXV0b21hdGljIGFsZ2VicmFpYyBtYW5pcHVsYXRpb24gaW4gY2VsZXN0aWFsIG1lY2hhbmljcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNCIsCiAgbnVtYmVyID0gICAgICAgIjgiLAogIHBhZ2VzID0gICAgICAgICI1MzgtLTU0MSIsCiAgbW9udGggPSAgICAgICAgYXVnLAogIHllYXIgPSAgICAgICAgICIxOTcxIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM3MzIwIChQaHlzaWNzIGFuZCBjaGVtaXN0cnkgY29tcHV0aW5nKSIsCiAgY29uZmxvY2F0aW9uID0gIkxvcyBBbmdlbGVzLCBDQSwgVVNBOyAyMy0yNSBNYXJjaCAxOTcxIiwKICBjb25mdGl0bGUgPSAgICAiUGFwZXJzIGZyb20gdGhlIDJuZCBzeW1wb3NpdW0gb24gc3ltYm9saWMgYW5kIGFsZ2VicmFpYyBtYW5pcHVsYXRpb24iLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBUZXhhcywgQXVzdGluLCBUWCwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiYWxnZWJyYTsgYXV0b21hdGVkIGFsZ2VicmFpYyBtYW5pcHVsYXRpb247IGNlbGVzdGlhbCBtZWNoYW5pY3M7IGludGVncmF0aW9uOyBwZXJ0dXJiYXRpb24gdGhlb3J5OyBwaHlzaWNzOyBQb2lzc29uIHNlcmllczsgcHJvY2Vzc29ycyIsCiAgc3BvbnNvcm9yZyA9ICAgIkFzc29jLiBDb21wdXRpbmcgTWFjaGluZXJ5IiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtCYXJ0b246MTk3MTpHUkEsCiAgYXV0aG9yID0gICAgICAgIkQuIEJhcnRvbiBhbmQgSi4gUC4gRml0Y2giLAogIHRpdGxlID0gICAgICAgICJHZW5lcmFsIHJlbGF0aXZpdHkgYW5kIHRoZSBhcHBsaWNhdGlvbiBvZiBhbGdlYnJhaWMgbWFuaXB1bGF0aXZlIHN5c3RlbXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTQiLAogIG51bWJlciA9ICAgICAgICI4IiwKICBwYWdlcyA9ICAgICAgICAiNTQyLS01NDciLAogIG1vbnRoID0gICAgICAgIGF1ZywKICB5ZWFyID0gICAgICAgICAiMTk3MSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjgzLjUzIiwKICBNUm51bWJlciA9ICAgICAiNDggMTY0MCIsCiAgbXJyZXZpZXdlciA9ICAgIkkuIEsuIE1hcmVrIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWJzdHJhY3QgPSAgICAgIlRoZSBwYXBlciBkZXNjcmliZXMgc29tZSBhcHBsaWNhdGlvbnMgb2Ygc3ltYm9saWMgYWxnZWJyYSBzeXN0ZW1zIHRvIHByb2JsZW1zIG9mIGdlbmVyYWwgcmVsYXRpdml0eSBpbmNsdWRpbmcgdGhlIGRlcml2YXRpb24gb2YgdGhlIGZpZWxkIGVxdWF0aW9ucywgdGhlIFBldHJvdiBjbGFzc2lmaWNhdGlvbiBvZiBhIG1ldHJpYywgYW5kIHRoZSBzb2x1dGlvbiBvZiB0aGUgZmllbGQgZXF1YXRpb25zIGluIHRoZSBwcmVzZW5jZSBvZiBtYXR0ZXIgaW4gYSBzaW1wbGUgY2FzZS4gQXR0ZW50aW9uIGlzIGRyYXduIHRvIHRoZSBzdHJpY3RseSBhbGdlYnJhaWMgZGlmZmljdWx0aWVzIGVuY291bnRlcmVkIGluIHRoaXMgd29yay4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJCMDIxMCAoQWxnZWJyYSk7IEMxMTEwIChBbGdlYnJhKSIsCiAgY29uZmxvY2F0aW9uID0gIkxvcyBBbmdlbGVzLCBDQSwgVVNBOyAyMy0yNSBNYXJjaCAxOTcxIiwKICBjb25mdGl0bGUgPSAgICAiUGFwZXJzIGZyb20gdGhlIDJuZCBzeW1wb3NpdW0gb24gc3ltYm9saWMgYW5kIGFsZ2VicmFpYyBtYW5pcHVsYXRpb24iLAogIGNvcnBzb3VyY2UgPSAgICJDb21wdXRlciBMYWIuLCBDYW1icmlkZ2UsIFVLIiwKICBrZXl3b3JkcyA9ICAgICAiYWxnZWJyYTsgYWxnZWJyYWljIG1hbmlwdWxhdGlvbjsgYWxnZWJyYWljIG1hbmlwdWxhdGl2ZSBzeXN0ZW1zOyBlcXVhdGlvbiBtYW5pcHVsYXRpb247IGZpZWxkIGVxdWF0aW9uczsgZ2VuZXJhbCByZWxhdGl2aXR5OyBub25udW1lcmljYWwgbWF0aGVtYXRpY3M7IFBldHJvdiBjbGFzc2lmaWNhdGlvbjsgc3ltYm9saWM7IHN5bWJvbGljIG1hdGhlbWF0aWNzIiwKICBzcG9uc29yb3JnID0gICAiQXNzb2MuIENvbXB1dGluZyBNYWNoaW5lcnkiLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle01vc2VzOjE5NzE6U0lTLAogIGF1dGhvciA9ICAgICAgICJKb2VsIE1vc2VzIiwKICB0aXRsZSA9ICAgICAgICAiU3ltYm9saWMgSW50ZWdyYXRpb246IFRoZSBTdG9ybXkgRGVjYWRlIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE0IiwKICBudW1iZXIgPSAgICAgICAiOCIsCiAgcGFnZXMgPSAgICAgICAgIjU0OC0tNTYwIiwKICBtb250aCA9ICAgICAgICBhdWcsCiAgeWVhciA9ICAgICAgICAgIjE5NzEiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2OEExNSIsCiAgTVJudW1iZXIgPSAgICAgIjQ2IDg0NjYiLAogIG1ycmV2aWV3ZXIgPSAgICJELiBCLiBIdW50ZXIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhYnN0cmFjdCA9ICAgICAiVGhyZWUgYXBwcm9hY2hlcyB0byBzeW1ib2xpYyBpbnRlZ3JhdGlvbiBpbiB0aGUgMTk2MCdzIGFyZSBkZXNjcmliZWQuIFRoZSBmaXJzdCwgZnJvbSBhcnRpZmljaWFsIGludGVsbGlnZW5jZSwgbGVkIHRvIFNsYWdsZSdzIFNBSU5UIGFuZCB0byBhIGxhcmdlIGRlZ3JlZSB0byBNb3NlcycgU0lOLiBUaGUgc2Vjb25kLCBmcm9tIGFsZ2VicmFpYyBtYW5pcHVsYXRpb24sIGxlZCB0byBNYW5vdmUncyBpbXBsZW1lbnRhdGlvbiBhbmQgdG8gSG9yb3dpdHonIGFuZCBUb2JleSdzIHJlZXhhbWluYXRpb24gb2YgdGhlIEhlcm1pdGUgYWxnb3JpdGhtIGZvciBpbnRlZ3JhdGluZyByYXRpb25hbCBmdW5jdGlvbnMuIFRoZSB0aGlyZCwgZnJvbSBtYXRoZW1hdGljcywgbGVkIHRvIFJpY2hhcmRzb24ncyBwcm9vZiBvZiB0aGUgdW5zb2x2YWJpbGl0eSBvZiB0aGUgcHJvYmxlbSBmb3IgYSBjbGFzcyBvZiBmdW5jdGlvbnMgYW5kIGZvciBSaXNjaCdzIGRlY2lzaW9uIHByb2NlZHVyZSBmb3IgdGhlIGVsZW1lbnRhcnkgZnVuY3Rpb25zLkdlbmVyYWxpemF0aW9ucyBvZiBSaXNjaCdzIGFsZ29yaXRobSB0byBhIGNsYXNzIG9mIHNwZWNpYWwgZnVuY3Rpb25zIGFuZCBwcm9ncmFtcyBmb3Igc29sdmluZyBkaWZmZXJlbnRpYWwgZXF1YXRpb25zIGFuZCBmb3IgZmluZGluZyB0aGUgZGVmaW5pdGUgaW50ZWdyYWwgYXJlIGFsc28gZGVzY3JpYmVkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMxMjMwIChBcnRpZmljaWFsIGludGVsbGlnZW5jZSk7IEM0MTYwIChOdW1lcmljYWwgaW50ZWdyYXRpb24gYW5kIGRpZmZlcmVudGlhdGlvbikiLAogIGNvbmZsb2NhdGlvbiA9ICJMb3MgQW5nZWxlcywgQ0EsIFVTQTsgMjMtMjUgTWFyY2ggMTk3MSIsCiAgY29uZnRpdGxlID0gICAgIlBhcGVycyBmcm9tIHRoZSAybmQgc3ltcG9zaXVtIG9uIHN5bWJvbGljIGFuZCBhbGdlYnJhaWMgbWFuaXB1bGF0aW9uIiwKICBjb3Jwc291cmNlID0gICAiTUlULCBDYW1icmlkZ2UsIE1BLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJhbGdvcml0aG07IGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlOyBkZWZpbml0ZTsgZGVmaW5pdGUgaW50ZWdyYWxzOyBkaWZmZXJlbnRpYWwgZXF1YXRpb25zOyBIZXJtaXRlOyBpbnRlZ3JhbDsgaW50ZWdyYXRpbmcgcmF0aW9uYWwgZnVuY3Rpb25zOyBpbnRlZ3JhdGlvbjsgTWFub3ZlJ3MgaW1wbGVtZW50YXRpb247IE1vc2VzJyBTSU47IHByb29mOyByYXRpb25hbCBmdW5jdGlvbnM7IFJpY2hhcmRzb24nczsgUmlzY2gncyBkZWNpc2lvbiBwcm9jZWR1cmU7IFNBSU5UOyBTbGFnbGUnczsgc3ltYm9saWMgaW50ZWdyYXRpb247IHVuc29sdmFiaWxpdHkiLAogIHNwb25zb3JvcmcgPSAgICJBc3NvYy4gQ29tcHV0aW5nIE1hY2hpbmVyeSIsCiAgdHJlYXRtZW50ID0gICAgIkcgR2VuZXJhbCBSZXZpZXc7IFQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7VGVpY2hyb2V3OjE5NzE6RVJVLAogIGF1dGhvciA9ICAgICAgICJEYW5pZWwgVGVpY2hyb2V3IiwKICB0aXRsZSA9ICAgICAgICAiRWR1Y2F0aW9uIFJlbGF0ZWQgdG8gdGhlIFVzZSBvZiBDb21wdXRlcnMgaW4gT3JnYW5pemF0aW9ucyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNCIsCiAgbnVtYmVyID0gICAgICAgIjkiLAogIHBhZ2VzID0gICAgICAgICI1NzMtLTU4OCIsCiAgbW9udGggPSAgICAgICAgc2VwLAogIHllYXIgPSAgICAgICAgICIxOTcxIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgImZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGF0YWJhc2UvV2llZGVyaG9sZC5iaWIiLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGFubm90ZSA9ICAgICAgICJMZWFybiBhYm91dCBkYXRhIGJhc2VzIGFuZCBtYW5hZ2VtZW50LiBFeHRlbnNpdmUgYmlibGlvZ3JhcGh5LiIsCiAgY2xhc3Njb2RlcyA9ICAgIkMwMjIwIChDb21wdXRpbmcgZWR1Y2F0aW9uIGFuZCB0cmFpbmluZykiLAogIGtleXdvcmRzID0gICAgICJjb2xsZWdlczsgY29tcHV0ZXIgZWR1Y2F0aW9uOyBjdXJyaWN1bHVtIGRldmVsb3BtZW50OyBlZHVjYXRpb247IGluZm9ybWF0aW9uIHN5c3RlbXM7IG1hbmFnZW1lbnQ7IG1hbmFnZW1lbnQgaW5mb3JtYXRpb24gc3lzdGVtczsgcHJvZmVzc2lvbmFsOyBzb2NpZXRpZXM7IHVuaXZlcnNpdGllcyIsCiAgdHJlYXRtZW50ID0gICAgIkcgR2VuZXJhbCBSZXZpZXciLAp9CgpAQXJ0aWNsZXtJc29kYToxOTcxOkVCVCwKICBhdXRob3IgPSAgICAgICAiU2FkYWhpcm8gSXNvZGEgYW5kIEVpaWNoaSBHb3RvIGFuZCBJenVtaSBLaW11cmEiLAogIHRpdGxlID0gICAgICAgICJBbiBFZmZpY2llbnQgQml0IFRhYmxlIFRlY2huaXF1ZSBmb3IgRHluYW1pYyBTdG9yYWdlIEFsbG9jYXRpb24gb2YgJDJebiQtd29yZCBCbG9ja3MiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTQiLAogIG51bWJlciA9ICAgICAgICI5IiwKICBwYWdlcyA9ICAgICAgICAiNTg5LS01OTIiLAogIG1vbnRoID0gICAgICAgIHNlcCwKICB5ZWFyID0gICAgICAgICAiMTk3MSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFic3RyYWN0ID0gICAgICJBbiBlZmZpY2llbnQgYml0IHRhYmxlIHRlY2huaXF1ZSBmb3IgZHluYW1pYyBzdG9yYWdlIGFsbG9jYXRpb24gb2YgJDJebiQtd29yZCBibG9ja3MsIHdoaWNoIHJlcXVpcmVzIGEgbWluaW1pemVkIGFtb3VudCBvZiBtZW1vcnkgZm9yIGJvb2trZWVwaW5nIHB1cnBvc2VzLCBpcyBkZXNjcmliZWQuIFRoZSB0ZWNobmlxdWUgaGFzIGJlZW4gdGVzdGVkIGluIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBsaXN0IHByb2Nlc3NpbmcgbGFuZ3VhZ2UgJExeNiQuIEEgbnVtYmVyIG9mIGlkZWFzIGluY29ycG9yYXRlZCBpbiB0aGUgcHJvY2Vzc29yIGFyZSBhbHNvIGRlc2NyaWJlZC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pIiwKICBjb3Jwc291cmNlID0gICAiVG9reW8gVW5pdi4sIEphcGFuIiwKICBrZXl3b3JkcyA9ICAgICAiJExeNiQ7IDIvc3VwIG4vIHdvcmQgYmxvY2tzOyBiaXQgdGFibGU7IGJpdCB0YWJsZSB0ZWNobmlxdWU7IGJvb2trZWVwaW5nOyBidWRkeSBzeXN0ZW07IGR5bmFtaWMgc3RvcmFnZSBhbGxvY2F0aW9uOyBmcmVlIHN0b3JhZ2U7IEwvc3VwIDYvOyBsaXN0IHByb2Nlc3Npbmc7IGxpc3QgcHJvY2Vzc2luZyBsYW5ndWFnZTsgbWluaW11bSBtZW1vcnk7IHN0b3JhZ2UgYWxsb2NhdGlvbiIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7UGF0b246MTk3MTpDQUIsCiAgYXV0aG9yID0gICAgICAgIktlaXRoIFBhdG9uIiwKICB0aXRsZSA9ICAgICAgICAiQ29ycmlnZW5kdW06IGBge0FuIGFsZ29yaXRobSBmb3IgdGhlIGJsb2NrcyBhbmQgY3V0bm9kZXMgb2YgYSBncmFwaH0nJyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNCIsCiAgbnVtYmVyID0gICAgICAgIjkiLAogIHBhZ2VzID0gICAgICAgICI1OTItLTU5MiIsCiAgbW9udGggPSAgICAgICAgc2VwLAogIHllYXIgPSAgICAgICAgICIxOTcxIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiRnJpIEphbiAxNyAxODozMzoxOSAxOTk3IiwKICBub3RlID0gICAgICAgICAiU2VlIFxjaXRle1BhdG9uOjE5NzE6QUJDfS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAp9CgpAQXJ0aWNsZXtXb25nOjE5NzE6Q1NBLAogIGF1dGhvciA9ICAgICAgICJFdWdlbmUgV29uZyBhbmQgVC4gQy4gQ2hpYW5nIiwKICB0aXRsZSA9ICAgICAgICAiQ2Fub25pY2FsIFN0cnVjdHVyZSBpbiBBdHRyaWJ1dGUgQmFzZWQgRmlsZSBPcmdhbml6YXRpb24iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTQiLAogIG51bWJlciA9ICAgICAgICI5IiwKICBwYWdlcyA9ICAgICAgICAiNTkzLS01OTciLAogIG1vbnRoID0gICAgICAgIHNlcCwKICB5ZWFyID0gICAgICAgICAiMTk3MSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0RhdGFiYXNlL1dpZWRlcmhvbGQuYmliIiwKICBub3RlID0gICAgICAgICAiQWxzbyBwdWJsaXNoZWQgaW4vYXM6IFBoRCBUaC4sIFVDQiwgRUVDUywgMTk3My4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGFubm90ZSA9ICAgICAgICJDb21iaW5hdG9yaWFsIHJldHJpZXZhbCBvZiBtdWx0aS1hdHRyaWJ1dGUgc3Vic2V0cywgYXBwbGljYWJsZSB3aGVuIHRoZXJlIGFyZSBmZXcga2V5d29yZCBjaG9pY2VzLiBUaGlzaXMgb2YgVC4gQy4gQ2hpYW5nLiIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbikiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBDYWxpZm9ybmlhLCBCZXJrZWxleSwgQ0EsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImFyYml0cmFyeSBCb29sZWFuIGZ1bmN0aW9uczsgYXRvbXM7IGF0dHJpYnV0ZSBiYXNlZDsgYm9vbGVhbiBhbGdlYnJhOyBjYW5vbmljYWwgc3RydWN0dXJlOyBmaWxlIG9yZ2FuaXNhdGlvbjsgZmlsZSBvcmdhbml6YXRpb247IGludGVyc2VjdGlvbnM7IGxpc3RzOyBxdWVyaWVzIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtQaGlsbGlwczoxOTcxOk5CTywKICBhdXRob3IgPSAgICAgICAiRGF2aWQgTC4gUGhpbGxpcHMiLAogIHRpdGxlID0gICAgICAgICJBIG5vdGUgb24gYmVzdCBvbmUtc2lkZWQgYXBwcm94aW1hdGlvbnMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTQiLAogIG51bWJlciA9ICAgICAgICI5IiwKICBwYWdlcyA9ICAgICAgICAiNTk4LS02MDAiLAogIG1vbnRoID0gICAgICAgIHNlcCwKICB5ZWFyID0gICAgICAgICAiMTk3MSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY1RDE1IiwKICBNUm51bWJlciA9ICAgICAiNDUgNjE1OCIsCiAgbXJyZXZpZXdlciA9ICAgIkguIEwuIExvZWIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQxMzAgKEludGVycG9sYXRpb24gYW5kIGZ1bmN0aW9uIGFwcHJveGltYXRpb24pIiwKICBjb3Jwc291cmNlID0gICAiQXJnb25uZSBOYXQuIExhYi4sIElMLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJiZXN0OyBiZXN0IGFwcHJveGltYXRpb247IGJlc3QgYXBwcm94aW1hdGlvbnM7IGVycm9yOyBmdW5jdGlvbiBhcHByb3hpbWF0aW9uOyBnb29kbmVzcyBvZiBmaXQ7IGxvZ2FyaXRobWljOyBtdWx0aXBsaWNhdGl2ZSBjb25zdGFudDsgb25lIHNpZGVkIGFwcHJveGltYXRpb25zOyBvbmUtc2lkZWQgYXBwcm94aW1hdGlvbjsgcmVsYXRpb25zaGlwOyByZWxhdGl2ZSBlcnJvcjsgdW5pZm9ybSBub3JtIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtMaW5pZ2VyOjE5NzE6U0NOLAogIGF1dGhvciA9ICAgICAgICJXLiBMaW5pZ2VyIiwKICB0aXRsZSA9ICAgICAgICAiQSBzdG9wcGluZyBjcml0ZXJpb24gZm9yIHRoZSB7TmV3dG9uLVJhcGhzb259IG1ldGhvZCBpbiBpbXBsaWNpdCBtdWx0aXN0ZXAgaW50ZWdyYXRpb24gYWxnb3JpdGhtcyBmb3Igbm9ubGluZWFyIHN5c3RlbXMgb2Ygb3JkaW5hcnkgZGlmZmVyZW50aWFsIGVxdWF0aW9ucyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNCIsCiAgbnVtYmVyID0gICAgICAgIjkiLAogIHBhZ2VzID0gICAgICAgICI2MDAtLTYwMSIsCiAgbW9udGggPSAgICAgICAgc2VwLAogIHllYXIgPSAgICAgICAgICIxOTcxIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjUuNjAiLAogIE1SbnVtYmVyID0gICAgICI0NFwjNzc1NCIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDE3MCAoRGlmZmVyZW50aWFsIGVxdWF0aW9ucykiLAogIGNvcnBzb3VyY2UgPSAgICJJQk0sIFlvcmt0b3duIEhlaWdodHMsIE5ZLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJpbXBsaWNpdCBtdWx0aXN0ZXAgaW50ZWdyYXRpb247IGludGVncmF0aW9uOyBsaW5lYXIgbXVsdGlzdGVwIGZvcm11bGFzOyBOZXd0b24tUmFwaHNvbiBtZXRob2Q7IG5vbmxpbmVhciBkaWZmZXJlbnRpYWwgZXF1YXRpb25zOyBub25saW5lYXIgc3lzdGVtczsgb3JkaW5hcnkgZGlmZmVyZW50aWFsIGVxdWF0aW9uczsgc3RvcHBpbmcgY3JpdGVyaW9uIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtGbG9yZXM6MTk3MTpBQlMsCiAgYXV0aG9yID0gICAgICAgIkl2YW4gRmxvcmVzIGFuZCBHZW9yZ2UgTWFkcGlzIiwKICB0aXRsZSA9ICAgICAgICAiQXZlcmFnZSBCaW5hcnkgU2VhcmNoIExlbmd0aCBmb3IgRGVuc2UgT3JkZXJlZCBMaXN0cyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNCIsCiAgbnVtYmVyID0gICAgICAgIjkiLAogIHBhZ2VzID0gICAgICAgICI2MDItLTYwMyIsCiAgbW9udGggPSAgICAgICAgc2VwLAogIHllYXIgPSAgICAgICAgICIxOTcxIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgbm90ZSA9ICAgICAgICAgIlNlZSBjb3JyaWdlbmR1bSBcY2l0ZXtGbG9yZXM6MTk3MjpDQUJ9LiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTMwIChEYXRhIGhhbmRsaW5nIHRlY2huaXF1ZXMpIiwKICBjb3Jwc291cmNlID0gICAiQ2l0eSBVbml2LiBOZXcgWW9yaywgTlksIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImF2ZXJhZ2UgbGVuZ3RoOyBiaW5hcnkgc2VhcmNoOyBkZW5zZSBvcmRlcmVkIGxpc3RzOyBpbmZvcm1hdGlvbiByZXRyaWV2YWw7IGxpc3QgcHJvY2Vzc2luZyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7RmVuaWNoZWw6MTk3MTpDQ0wsCiAgYXV0aG9yID0gICAgICAgIlIuIFIuIEZlbmljaGVsIiwKICB0aXRsZSA9ICAgICAgICAiQ29tbWVudCBvbiBDaGVuZXkncyBMaXN0LUNvbXBhY3Rpb24gQWxnb3JpdGhtIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE0IiwKICBudW1iZXIgPSAgICAgICAiOSIsCiAgcGFnZXMgPSAgICAgICAgIjYwMy0tNjA0IiwKICBtb250aCA9ICAgICAgICBzZXAsCiAgeWVhciA9ICAgICAgICAgIjE5NzEiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJGcmkgSmFuIDE3IDE4OjMxOjU0IDE5OTciLAogIGtleXdvcmRzID0gICAgICJnYXJiYWdlIGNvbGxlY3RvcjsgTElTUDsgbGlzdCBwcm9jZXNzaW5nOyBzdG9yYWdlIGFsbG9jYXRpb247IHZpcnR1YWwgbWVtb3J5IiwKfQoKQEFydGljbGV7RWFybGV5OjE5NzE6VFVELAogIGF1dGhvciA9ICAgICAgICJKYXkgRWFybGV5IiwKICB0aXRsZSA9ICAgICAgICAiVG93YXJkIGFuIFVuZGVyc3RhbmRpbmcgb2YgRGF0YSBTdHJ1Y3R1cmVzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE0IiwKICBudW1iZXIgPSAgICAgICAiMTAiLAogIHBhZ2VzID0gICAgICAgICI2MTctLTYyNyIsCiAgbW9udGggPSAgICAgICAgb2N0LAogIHllYXIgPSAgICAgICAgICIxOTcxIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgImZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGF0YWJhc2UvV2llZGVyaG9sZC5iaWIiLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gQ2FsaWZvcm5pYSwgQmVya2VsZXksIENBLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJkYXRhIHN0cnVjdHVyZXM7IGZvcm1hbGlzbTsgZ3JhcGg7IGltcGxlbWVudGF0aW9uOyBwcm9ncmFtbWluZyBsYW5ndWFnZTsgc2VtYW50aWMiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0FOU0k6MTk3MTpDRlMsCiAgYXV0aG9yID0gICAgICAgIntBTlNJIFN1YmNvbW1pdHRlZSBYM0ozfSIsCiAgdGl0bGUgPSAgICAgICAgIkNsYXJpZmljYXRpb24gb2Yge0ZvcnRyYW59IFN0YW5kYXJkcyAtLS0gU2Vjb25kIFJlcG9ydCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNCIsCiAgbnVtYmVyID0gICAgICAgIjEwIiwKICBwYWdlcyA9ICAgICAgICAiNjI4LS02NDIiLAogIG1vbnRoID0gICAgICAgIG9jdCwKICB5ZWFyID0gICAgICAgICAiMTk3MSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIG5vdGUgPSAgICAgICAgICJTZWUgYWxzbyBcY2l0ZXtBTlNJOjE5NjY6QUZ9LiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMwMjAwIChHZW5lcmFsIGNvbXB1dGVyIHRvcGljcyk7IEM2MTQwRCAoSGlnaCBsZXZlbCBsYW5ndWFnZXMpIiwKICBrZXl3b3JkcyA9ICAgICAiQW1lcmljYW4gTmF0aW9uYWwgU3RhbmRhcmQ7IEJhc2ljIEZvcnRyYW47IEZvcnRyYW47IEZPUlRSQU47IGxhbmd1YWdlOyBsYW5ndWFnZSBzdGFuZGFyZDsgbGFuZ3VhZ2Ugc3RhbmRhcmQgaW50ZXJwcmV0YXRpb247IGxhbmd1YWdlIHN0YW5kYXJkIG1haW50ZW5hbmNlOyBwcm9ncmFtbWluZyBsYW5ndWFnZTsgc3BlY2lmaWNhdGlvbjsgc3RhbmRhcmQgY2xhcmlmaWNhdGlvbjsgc3RhbmRhcmRpemF0aW9uOyBzdGFuZGFyZGl6YXRpb24gY29tbWl0dGVlOyBzdGFuZGFyZHMiLAogIHRyZWF0bWVudCA9ICAgICJHIEdlbmVyYWwgUmV2aWV3IiwKfQoKQEFydGljbGV7T2xkZWhvZWZ0OjE5NzE6RUFJLAogIGF1dGhvciA9ICAgICAgICJBLiBFLiBPbGRlaG9lZnQgYW5kIFMuIEQuIENvbnRlIiwKICB0aXRsZSA9ICAgICAgICAiRXhwZXJpbWVudHMgd2l0aCBhbiBhdXRvbWF0ZWQgaW5zdHJ1Y3Rpb25hbCBzeXN0ZW0gZm9yIG51bWVyaWNhbCBtZXRob2RzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE0IiwKICBudW1iZXIgPSAgICAgICAiMTAiLAogIHBhZ2VzID0gICAgICAgICI2NDMtLTY1MCIsCiAgbW9udGggPSAgICAgICAgb2N0LAogIHllYXIgPSAgICAgICAgICIxOTcxIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM3ODEwQyAoQ29tcHV0ZXItYWlkZWQgaW5zdHJ1Y3Rpb24pIiwKICBjb3Jwc291cmNlID0gICAiSW93YSBTdGF0ZSBVbml2LiwgQW1lcywgSUEsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIGFpZGVkOyBjb21wdXRlciBhaWRlZCBpbnN0cnVjdGlvbjsgaW5zdHJ1Y3Rpb247IGluc3RydWN0aW9uYWwgc3lzdGVtczsgbnVtZXJpY2FsIG1ldGhvZHMiLAogIHRyZWF0bWVudCA9ICAgICJYIEV4cGVyaW1lbnRhbCIsCn0KCkBBcnRpY2xle05ld21hbjoxOTcxOkRQLAogIGF1dGhvciA9ICAgICAgICJXLiBNLiBOZXdtYW4iLAogIHRpdGxlID0gICAgICAgICJEaXNwbGF5IHByb2NlZHVyZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTQiLAogIG51bWJlciA9ICAgICAgICIxMCIsCiAgcGFnZXMgPSAgICAgICAgIjY1MS0tNjYwIiwKICBtb250aCA9ICAgICAgICBvY3QsCiAgeWVhciA9ICAgICAgICAgIjE5NzEiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzU1NDAgKFRlcm1pbmFscyBhbmQgZ3JhcGhpYyBkaXNwbGF5cykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBVdGFoLCBTYWx0IExha2UgQ2l0eSwgVVQsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIGdyYXBoaWNzOyBkaXNwbGF5IGZpbGVzOyBkaXNwbGF5IHN5c3RlbXM7IHByb2dyYW1taW5nIGxhbmd1YWdlcyIsCiAgdHJlYXRtZW50ID0gICAgIkcgR2VuZXJhbCBSZXZpZXciLAp9CgpAQXJ0aWNsZXtOZW1ldGg6MTk3MTpVUE0sCiAgYXV0aG9yID0gICAgICAgIkEuIEcuIE5lbWV0aCBhbmQgUC4gRC4gUm92bmVyIiwKICB0aXRsZSA9ICAgICAgICAiVXNlciBwcm9ncmFtIG1lYXN1cmVtZW50IGluIGEgdGltZS1zaGFyZWQgZW52aXJvbm1lbnQiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTQiLAogIG51bWJlciA9ICAgICAgICIxMCIsCiAgcGFnZXMgPSAgICAgICAgIjY2MS0tNjY2IiwKICBtb250aCA9ICAgICAgICBvY3QsCiAgeWVhciA9ICAgICAgICAgIjE5NzEiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9NaXNjL21vbml0b3IuYmliIGFuZCBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0Rpc3RyaWJ1dGVkL1FMRC8xOTcxLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIkEgZ2VuZXJhbCBkaXNjdXNzaW9uIG9mIHRoZSBtZWFzdXJlbWVudCBvZiBzb2Z0d2FyZSBzeXN0ZW1zIGlzIGZvbGxvd2VkIGJ5IGEgZGVzY3JpcHRpb24gb2YgYSBoYXJkd2FyZSBhbmQgc29mdHdhcmUgc2NoZW1lIGZvciBtZWFzdXJpbmcgdXNlciBwcm9ncmFtcyBpbiBhIHRpbWUtc2hhcmVkIGVudmlyb25tZW50LiBUaGUgVFgtMiBjb21wdXRlciBhdCBNSVQgTGluY29sbiBMYWJvcmF0b3J5IHdhcyB1c2VkIGZvciB0aGUgaW1wbGVtZW50YXRpb24gb2Ygc3VjaCBhIHN5c3RlbSBhbmQgdGhlIGNoYXJhY3RlcmlzdGljcyBvZiB0aGlzIGltcGxlbWVudGF0aW9uIGFyZSByZXBvcnRlZC4gRmluYWxseSwgaXQgaXMgc2hvd24gaG93IG90aGVyIHRpbWUtc2hhcmluZyBzeXN0ZW1zIG1heSBwcm92aWRlIHNpbWlsYXIgbWVhc3VyaW5nIGZhY2lsaXRpZXMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBhbm5vdGUgPSAgICAgICAiQSBnZW5lcmFsIGRpc2N1c3Npb24gb2YgdGhlIG1lYXN1cmVtZW50IG9mIHNvZnR3YXJlIHN5c3RlbXMgaXMgZm9sbG93ZWQgYnkgYSBkZXNjcmlwdGlvbiBvZiBhIGhhcmR3YXJlIGFuZCBzb2Z0d2FyZSBzY2hlbWUgZm9yIG1lYXN1cmluZyB1c2VyIHByb2dyYW1zIGluIGEgdGltZS1zaGFyZWQgZW52aXJvbm1lbnQuIiwKICBjbGFzc2NvZGVzID0gICAiQzYxNTBKIChPcGVyYXRpbmcgc3lzdGVtcykiLAogIGNvcnBzb3VyY2UgPSAgICJNSVQsIExleGluZ3RvbiwgTUEsIFVTQSIsCiAgY291bnRyeSA9ICAgICAgIlVTQSIsCiAgZGVzY3JpcHRvcnMgPSAgIlBlcmZvcm1hbmNlIGV2YWx1YXRpb247IHNvZnR3YXJlIG1vbml0b3I7IHRpbWUgc2hhcmluZzsgb3BlcmF0aW5nIHN5c3RlbTsgbXVsdGlwcm9ncmFtbWluZzsgbWVhc3VyZW1lbnQ7IHRlY2hub2xvZ3k7IHZpcnR1YWwgY29tcHV0ZXI7IHBlcmZvcm1hbmNlIGltcHJvdmVtZW50OyIsCiAgZW51bSA9ICAgICAgICAgIjIyNTIiLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBzb2Z0d2FyZTsgbWVhc3VyZW1lbnQ7IG11bHRpcHJvZ3JhbW1pbmcgc3lzdGVtczsgb3BlcmF0aW5nIHN5c3RlbXM7IHBlcmZvcm1hbmNlIGltcHJvdmVtZW50OyBzaGFyaW5nIHN5c3RlbXM7IHNvZnR3YXJlOyB0ZWNobm9sb2d5OyB0aW1lOyB0aW1lLXNoYXJpbmcgc3lzdGVtczsgVFgyIGNvbXB1dGVyOyB1c2VyIHByb2dyYW0gbWVhc3VyZW1lbnQ7IHZpcnR1YWwgY29tcHV0ZXJzIiwKICBsYW5ndWFnZSA9ICAgICAiRW5nbGlzaCIsCiAgcmVmZXJlbmNlcyA9ICAgIjExIiwKICB0cmVhdG1lbnQgPSAgICAiRyBHZW5lcmFsIFJldmlldyIsCn0KCkBBcnRpY2xle0NvdXJ0b2lzOjE5NzE6Q0MsCiAgYXV0aG9yID0gICAgICAgIlAuIEouIENvdXJ0b2lzIGFuZCBGLiBIZXltYW5zIGFuZCBELiBMLiBQYXJuYXMiLAogIHRpdGxlID0gICAgICAgICJDb25jdXJyZW50IENvbnRyb2wgd2l0aCBgUmVhZGVycycgYW5kIGBXcml0ZXJzJyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNCIsCiAgbnVtYmVyID0gICAgICAgIjEwIiwKICBwYWdlcyA9ICAgICAgICAiNjY3LS02NjgiLAogIG1vbnRoID0gICAgICAgIG9jdCwKICB5ZWFyID0gICAgICAgICAiMTk3MSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0RhdGFiYXNlL1dpZWRlcmhvbGQuYmliIGFuZCBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L01pc2Mvc29mdGVuZy5iaWIiLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGFubm90ZSA9ICAgICAgICJBbGdvcml0aG1zIGZvciBzY2hlZHVsZXIgZGVzaWduIGZvciBtdWx0aSBhY2Nlc3NlZCBkYXRhYmFzZSIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTUwSiAoT3BlcmF0aW5nIHN5c3RlbXMpIiwKICBjb3Jwc291cmNlID0gICAiTUJMRSBSZXMuIExhYi4sIEJydXNzZWxzLCBCZWxnaXVtIiwKICBrZXl3b3JkcyA9ICAgICAiY3JpdGljYWwgc2VjdGlvbjsgbXV0dWFsIGV4Y2x1c2lvbjsgb3BlcmF0aW5nIHN5c3RlbXMgKGNvbXB1dGVycyk7IHByb2dyYW1zOyByZXNvdXJjZXM7IHNoYXJlZCBhY2Nlc3MgdG87IHN1cGVydmlzb3J5IGFuZCBleGVjdXRpdmUiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0x5bmVzczoxOTcxOkFBRSwKICBhdXRob3IgPSAgICAgICAiSi4gTi4gTHluZXNzIGFuZCBHLiBTYW5kZSIsCiAgdGl0bGUgPSAgICAgICAgIntBQ019IEFsZ29yaXRobSA0MTM6IHtFTlRDQUZ9IGFuZCB7RU5UQ1JFfTogRXZhbHVhdGlvbiBvZiBOb3JtYWxpemVkIHtUYXlsb3J9IENvZWZmaWNpZW50cyBvZiBhbiBBbmFseXRpYyBGdW5jdGlvbiAoe0M1fSkiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTQiLAogIG51bWJlciA9ICAgICAgICIxMCIsCiAgcGFnZXMgPSAgICAgICAgIjY2OS0tNjc1IiwKICBtb250aCA9ICAgICAgICBvY3QsCiAgeWVhciA9ICAgICAgICAgIjE5NzEiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzczMTAgKE1hdGhlbWF0aWNzIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJBcmdvbm5lIE5hdC4gTGFiLiwgSUwsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgIkNhdWNoeSBpbnRlZ3JhbDsgY29tcGxleCBhcml0aG1ldGljOyBjb21wbGV4IHZhcmlhYmxlczsgZmFzdDsgRm91cmllciB0cmFuc2Zvcm07IGludGVycG9sYXRpb247IG1hdGhlbWF0aWNzOyBudW1lcmljYWwgZGlmZmVyZW50aWF0aW9uOyBudW1lcmljYWwgaW50ZWdyYXRpb247IHN1YnJvdXRpbmVzOyBUYXlsb3IgY29lZmZpY2llbnRzOyBUYXlsb3Igc2VyaWVzIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtCcmFucXVhcnQ6MTk3MTpDU0EsCiAgYXV0aG9yID0gICAgICAgIlAuIEJyYW5xdWFydCBhbmQgSi4gTGV3aSBhbmQgTS4gU2ludHpvZmYgYW5kIFAuIEwuIFdvZG9uIiwKICB0aXRsZSA9ICAgICAgICAiVGhlIGNvbXBvc2l0aW9uIG9mIHNlbWFudGljcyBpbiB7QWxnb2wgNjh9IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE0IiwKICBudW1iZXIgPSAgICAgICAiMTEiLAogIHBhZ2VzID0gICAgICAgICI2OTctLTcwOCIsCiAgbW9udGggPSAgICAgICAgbm92LAogIHllYXIgPSAgICAgICAgICIxOTcxIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTQwRCAoSGlnaCBsZXZlbCBsYW5ndWFnZXMpIiwKICBjb3Jwc291cmNlID0gICAiTUJMRSwgQnJ1c3NlbHMsIEJlbGdpdW0iLAogIGtleXdvcmRzID0gICAgICJBTEdPTDsgQWxnb2wgNjg7IGRhdGE7IGRlc2lnbiBvZiBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IHByb2dyYW1taW5nIGxhbmd1YWdlczsgcHJvZ3JhbW1pbmcgcHJpbWl0aXZlczsgcmVjdXJzaXZlIGNvbXBvc2l0aW9uOyBzZW1hbnRpY3M7IHN0cnVjdHVyZXMiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0hhbWJsZW46MTk3MTpVQ0gsCiAgYXV0aG9yID0gICAgICAgIkouIFcuIEhhbWJsZW4iLAogIHRpdGxlID0gICAgICAgICJVc2luZyBjb21wdXRlcnMgaW4gaGlnaGVyIGVkdWNhdGlvbjogcGFzdCByZWNvbW1lbmRhdGlvbnMsIHN0YXR1cywgYW5kIG5lZWRzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE0IiwKICBudW1iZXIgPSAgICAgICAiMTEiLAogIHBhZ2VzID0gICAgICAgICI3MDktLTcxMiIsCiAgbW9udGggPSAgICAgICAgbm92LAogIHllYXIgPSAgICAgICAgICIxOTcxIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMwMjIwIChDb21wdXRpbmcgZWR1Y2F0aW9uIGFuZCB0cmFpbmluZykiLAogIGNvcnBzb3VyY2UgPSAgICJTb3V0aGVybiBSZWdpb25hbCBFZHVjYXRpb24gQm9hcmQsIEF0bGFudGEsIEdBLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBzY2llbmNlOyBjb21wdXRlcnM7IGRhdGEgcHJvY2Vzc2luZzsgZGVncmVlIHByb2dyYW1zOyBlZHVjYXRpb247IGVkdWNhdGlvbmFsIHRlY2hub2xvZ3k7IGhpZ2hlciBlZHVjYXRpb247IGxhYm9yYXRvcnk7IG5hdGlvbmFsIGdvYWxzOyB0ZXN0aW5nIiwKICB0cmVhdG1lbnQgPSAgICAiRyBHZW5lcmFsIFJldmlldyIsCn0KCkBBcnRpY2xle1NoZWxsOjE5NzE6T1BTLAogIGF1dGhvciA9ICAgICAgICJELiBMLiBTaGVsbCIsCiAgdGl0bGUgPSAgICAgICAgIk9wdGltaXppbmcgdGhlIFBvbHlwaGFzZSBTb3J0IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE0IiwKICBudW1iZXIgPSAgICAgICAiMTEiLAogIHBhZ2VzID0gICAgICAgICI3MTMtLTcxOSIsCiAgbW9udGggPSAgICAgICAgbm92LAogIHllYXIgPSAgICAgICAgICIxOTcxIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgbm90ZSA9ICAgICAgICAgIlNlZSBjb3JyaWdlbmR1bSBcY2l0ZXtTaGVsbDoxOTcyOkNPUH0uIiwKICBhYnN0cmFjdCA9ICAgICAiVmFyaW91cyBkaXNwZXJzaW9uIGFsZ29yaXRobXMgZm9yIHRoZSBwb2x5cGhhc2Ugc29ydGluZyBwcm9jZWR1cmUgYXJlIGV4YW1pbmVkLlRoZSBvcHRpbXVtIGFsZ29yaXRobSBiYXNlZCBvbiBtaW5pbWl6aW5nIHRoZSB0b3RhbCBudW1iZXIgb2YgdW5pdCBzdHJpbmdzIHJlYWQgaXMgZGlzcGxheWVkLiBUaGUgbG9naWMgb2YgdGhpcyBhbGdvcml0aG0gaXMgcmF0aGVyIGNvbXBsaWNhdGVkOyBoZW5jZSwgc2V2ZXJhbCBvdGhlciBuZXcgZGlzcGVyc2lvbiBhbGdvcml0aG1zIHdpdGggbW9yZSBzdHJhaWdodGZvcndhcmQgbG9naWMgYXJlIHByZXNlbnRlZC4gT2YgdGhlIHNpbXBsZSBkaXNwZXJzaW9uIGFsZ29yaXRobXMgZGlzY3Vzc2VkLCB0aGUgSG9yaXpvbnRhbCBpcyBiZXN0LiBJdCBkb2VzIGFwcHJveGltYXRlbHkgb25lLWZvdXJ0aCB0byBvbmUgYW5kIG9uZS1oYWxmIHBlcmNlbnQgbGVzcyByZWFkaW5nIGFuZCB3cml0aW5nIHRoYW4gbW9zdCBhbGdvcml0aG1zIGluIHVzZSB0b2RheS4gQW4gYWRkaXRpb25hbCB0d28gYW5kIG9uZS1mb3VydGggdG8gdGhyZWUgcGVyY2VudCBpbXByb3ZlbWVudCBjYW4gYmUgYWNoaWV2ZWQgYnkgdXRpbGl6aW5nIHRoZSBNb2RpZmllZCBPcHRpbXVtIEFsZ29yaXRobS4gVGhpcyBhbGdvcml0aG0gaXMgcmVsYXRpdmVseSBzdHJhaWdodGZvcndhcmQsIGJ1dCBpdCByZXF1aXJlcyBhIGZhaXJseSBjbG9zZSBlc3RpbWF0ZSBvZiB0aGUgdG90YWwgbnVtYmVyIG9mIHVuaXQgc3RyaW5ncyBiZWZvcmUgdGhlIGRpc3BlcnNpb24gYmVnaW5zLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTMwIChEYXRhIGhhbmRsaW5nIHRlY2huaXF1ZXMpIiwKICBjb3Jwc291cmNlID0gICAiR2VuZXJhbCBFbGVjdHJpYyBDby4sIFNjaGVuZWN0YWR5LCBOWSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiZGlzcGVyc2lvbiBhbGdvcml0aG07IGRpc3BlcnNpb24gYWxnb3JpdGhtczsgbWluaW1pemluZzsgb3B0aW1pc2F0aW9uOyBvcHRpbXVtOyBvcHRpbXVtIGRpc3BlcnNpb24gYWxnb3JpdGhtOyBwb2x5cGhhc2Ugc29ydGluZzsgcmVwZXRpdGlvbiBvcGVyYXRvcjsgc29ydGluZzsgdW5pdCBzdHJpbmdzIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtBcmFtYWtpOjE5NzE6QUVMLAogIGF1dGhvciA9ICAgICAgICJJLiBBcmFtYWtpIGFuZCBULiBLYXdhYmF0YSBhbmQgSy4gQXJpbW90byIsCiAgdGl0bGUgPSAgICAgICAgIkF1dG9tYXRpb24gb2YgZXRjaGluZy1wYXR0ZXJuIGxheW91dCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNCIsCiAgbnVtYmVyID0gICAgICAgIjExIiwKICBwYWdlcyA9ICAgICAgICAiNzIwLS03MzAiLAogIG1vbnRoID0gICAgICAgIG5vdiwKICB5ZWFyID0gICAgICAgICAiMTk3MSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJCMTEzMEIgKENvbXB1dGVyLWFpZGVkIGNpcmN1aXQgYW5hbHlzaXMgYW5kIGRlc2lnbik7IEIyMjEwIChQcmludGVkIGNpcmN1aXRzKTsgQzc0MTBEIChFbGVjdHJvbmljIGVuZ2luZWVyaW5nIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJTdW1pdG9tbyBFbGVjdHJpYyBJbmR1c3RyaWVzIEx0ZC4sIE9zYWthLCBKYXBhbiIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyLWFpZGVkIGNpcmN1aXQgZGVzaWduOyBldGNoaW5nOyBoZXVyaXN0aWMgZXRjaGluZyBwYXR0ZXJuIGxheW91dDsgSUNzOyBMZWUncyBhbGdvcml0aG07IG1hemUgcnVubmluZzsgcHJpbnRlZCBjaXJjdWl0IGJvYXJkOyBwcmludGVkIGNpcmN1aXRzOyB3aXJpbmcgZGVzaWduIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtNYWxjb2xtOjE5NzE6QUZQLAogIGF1dGhvciA9ICAgICAgICJNaWNoYWVsIEEuIE1hbGNvbG0iLAogIHRpdGxlID0gICAgICAgICJPbiBBY2N1cmF0ZSBGbG9hdGluZy1Qb2ludCBTdW1tYXRpb24iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTQiLAogIG51bWJlciA9ICAgICAgICIxMSIsCiAgcGFnZXMgPSAgICAgICAgIjczMS0tNzM2IiwKICBtb250aCA9ICAgICAgICBub3YsCiAgeWVhciA9ICAgICAgICAgIjE5NzEiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2NUcwNSAoNjgtWFgpIiwKICBNUm51bWJlciA9ICAgICAiNDcgNDQzNCIsCiAgbXJyZXZpZXdlciA9ICAgIlAuIEJyb2NrIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgImdhcmJvLnV3YXNhLmZpOi9wYy9kb2Mtc29mdC9mcGJpYmxpby50eHQiLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzUyMzAgKERpZ2l0YWwgYXJpdGhtZXRpYyBtZXRob2RzKSIsCiAgY29ycHNvdXJjZSA9ICAgIlN0YW5mb3JkIFVuaXYuLCBDQSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiZGlnaXRhbCBhcml0aG1ldGljOyBlcnJvciBhbmFseXNpczsgZmxvYXRpbmcgcG9pbnQgc3VtbWF0aW9uIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtHb2x1YjoxOTcxOkFBQywKICBhdXRob3IgPSAgICAgICAiRy4gSC4gR29sdWIgYW5kIEwuIEIuIFNtaXRoIiwKICB0aXRsZSA9ICAgICAgICAie0FDTX0gQWxnb3JpdGhtIDQxNDoge0NoZWJ5c2hldn0gQXBwcm94aW1hdGlvbiBvZiBDb250aW51b3VzIEZ1bmN0aW9ucyBieSBhIHtDaGVieXNoZXZ9IFN5c3RlbSBvZiBGdW5jdGlvbnMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTQiLAogIG51bWJlciA9ICAgICAgICIxMSIsCiAgcGFnZXMgPSAgICAgICAgIjczNy0tNzQ2IiwKICBtb250aCA9ICAgICAgICBub3YsCiAgeWVhciA9ICAgICAgICAgIjE5NzEiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9NaXNjL2FjbS5iaWIiLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDEzMCAoSW50ZXJwb2xhdGlvbiBhbmQgZnVuY3Rpb24gYXBwcm94aW1hdGlvbik7IEM3MzEwIChNYXRoZW1hdGljcyBjb21wdXRpbmcpIiwKICBjb3Jwc291cmNlID0gICAiU3RhbmZvcmQgVW5pdi4sIENBLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJBTEdPTCA2MDsgYXBwcm94aW1hdGlvbjsgQ2hlYnlzaGV2IGFwcHJveGltYXRpb247IGNyaXRpY2FsIHBvaW50czsgbWluaW1heDsgbnVtZXJpY2FsIHByb3BlcnRpZXM7IG9ydGhvZ29uYWwgcG9seW5vbWlhbHM7IFJlbWV6IGFsZ29yaXRobTsgc3Vicm91dGluZXMiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbDsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtHb3Jkb246MTk3MTpSUFQsCiAgYXV0aG9yID0gICAgICAgIlIuIEdvcmRvbiBhbmQgRy4gVC4gSGVybWFuIiwKICB0aXRsZSA9ICAgICAgICAiUmVjb25zdHJ1Y3Rpb24gb2YgUGljdHVyZXMgZnJvbSBUaGVpciBQcm9qZWN0aW9ucyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNCIsCiAgbnVtYmVyID0gICAgICAgIjEyIiwKICBwYWdlcyA9ICAgICAgICAiNzU5LS03NjgiLAogIG1vbnRoID0gICAgICAgIGRlYywKICB5ZWFyID0gICAgICAgICAiMTk3MSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIG5vdGUgPSAgICAgICAgICJTZWUgY29ycmlnZW5kdW0gXGNpdGV7R29yZG9uOjE5NzI6Q1JQfS4iLAogIGFic3RyYWN0ID0gICAgICJUaGVyZSBhcmUgc2l0dWF0aW9ucyBpbiB0aGUgbmF0dXJhbCBzY2llbmNlcyBhbmQgbWVkaWNpbmUgKGUuZy4gaW4gZWxlY3Ryb24gbWljcm9zY29weSBhbmQgWC1yYXkgcGhvdG9ncmFwaHkpIGluIHdoaWNoIGl0IGlzIGRlc2lyYWJsZSB0byBlc3RpbWF0ZSB0aGUgZ3JheSBsZXZlbHMgb2YgYSBkaWdpdGFsIHBpY3R1cmUgYXQgdGhlIGluZGl2aWR1YWwgcG9pbnRzIGZyb20gdGhlIHN1bXMgb2YgdGhlIGdyYXkgbGV2ZWxzIGFsb25nIHN0cmFpZ2h0IGxpbmVzIChwcm9qZWN0aW9ucykgYXQgYSBmZXcgYW5nbGVzLiBVc3VhbGx5LCBpbiBzdWNoIHNpdHVhdGlvbnMsIHRoZSBwaWN0dXJlIGlzIGZhciBmcm9tIGRldGVybWluZWQgYW5kIHRoZSBwcm9ibGVtIGlzIHRvIGZpbmQgdGhlIGBgbW9zdCByZXByZXNlbnRhdGl2ZScnIHBpY3R1cmUuIFRocmVlIGFsZ29yaXRobXMgYXJlIGRlc2NyaWJlZCAoYWxsIHVzaW5nIE1vbnRlIENhcmxvIG1ldGhvZHMpIHdoaWNoIHdlcmUgZGVzaWduZWQgdG8gc29sdmUgdGhpcyBwcm9ibGVtLiBUaGUgYWxnb3JpdGhtcyBhcmUgYXBwbGljYWJsZSBpbiBhIGxhcmdlIGFuZCB2YXJpZWQgbnVtYmVyIG9mIGZpZWxkcy4gVGhlIG1vc3QgaW1wb3J0YW50IHVzZXMgbWF5IGJlIHRoZSByZWNvbnN0cnVjdGlvbiBvZiBwb3NzaWJseSBhc3ltbWV0cmljIHBhcnRpY2xlcyBmcm9tIGVsZWN0cm9uIG1pY3JvZ3JhcGhzIGFuZCB0aHJlZS1kaW1lbnNpb25hbCBYLXJheSBhbmFseXNpcy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNzMwMCAoTmF0dXJhbCBzY2llbmNlcyBjb21wdXRpbmcpIiwKICBjb3Jwc291cmNlID0gICAiU3RhdGUgVW5pdi4sIE5ldyBZb3JrLCBCdWZmYWxvLCBOWSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiYXBwcm94aW1hdGlvbjsgYmlvbWVkaWNhbCBpbWFnZSBwcm9jZXNzaW5nOyBlZmZpY2llbnQgZW5jb2Rpbmc7IGVsZWN0cm9uIG1pY3Jvc2NvcHk7IGltYWdlOyBpbWFnZSBwcm9jZXNzaW5nOyBsaW5lYXIgcHJvZ3JhbW1pbmc7IG1hdGhlbWF0aWNhbCBwcm9ncmFtbWluZzsgbWVkaWNpbmU7IE1vbnRlIENhcmxvOyBNb250ZSBDYXJsbyBtZXRob2RzOyBNb250ZSBDYXJsbyB0ZWNobmlxdWVzOyBuYXR1cmFsIHNjaWVuY2VzOyBvcHRpY2FsIGluZm9ybWF0aW9uOyBvcHRpbWl6YXRpb247IHBoeXNpY3M7IHBpY3R1cmUgY29tcHJlc3Npb247IHBpY3R1cmUgZGVzY3JpcHRpb247IHBpY3R1cmUgcHJvY2Vzc2luZzsgcHJvY2Vzc2luZzsgcHJvamVjdGlvbnM7IHJlY29uc3RydWN0aW9uIG9mIHBpY3R1cmVzOyBzdGVyZW9sb2d5OyB0ZWNobmlxdWVzOyBYLXJheSBhbmFseXNpczsgWC1yYXkgcGhvdG9ncmFwaHkiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0FtaWRvbjoxOTcxOkFTQiwKICBhdXRob3IgPSAgICAgICAiRS4gTC4gQW1pZG9uIGFuZCBHLiBTLiBBa2luIiwKICB0aXRsZSA9ICAgICAgICAiQWxnb3JpdGhtaWMgU2VsZWN0aW9uIG9mIHRoZSBCZXN0IE1ldGhvZCBmb3IgQ29tcHJlc3NpbmcgTWFwIERhdGEgU3RyaW5ncyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNCIsCiAgbnVtYmVyID0gICAgICAgIjEyIiwKICBwYWdlcyA9ICAgICAgICAiNzY5LS03NzQiLAogIG1vbnRoID0gICAgICAgIGRlYywKICB5ZWFyID0gICAgICAgICAiMTk3MSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFic3RyYWN0ID0gICAgICJUaGUgYmVzdCBvZiBhIGRvemVuIGRpZmZlcmVudCBtZXRob2RzIGZvciBjb21wcmVzc2luZyBtYXAgZGF0YSBpcyBpbGx1c3RyYXRlZC4gVGhlIGNob2ljZXMgYXJlIGdlbmVyYXRlZCBieSBlbmNvZGluZyBkYXRhIHN0cmluZ3Mtc2VxdWVuY2Ugb2YgbGlrZSBjb2Rlcy1ieSB0aHJlZSBtZXRob2RzIGFuZCBpbiBmb3VyIGRpcmVjdGlvbnMuIFJlbGF0aW9uc2hpcHMgYXJlIGRldmVsb3BlZCBiZXR3ZWVuIGNvbXByZXNzaW9uIGFsdGVybmF0aXZlcyB0byBhdm9pZCBjb21wYXJpbmcgYWxsIG9mIHRoZW0uIFRoZSB0ZWNobmlxdWUgaGFzIGJlZW4gdXNlZCB0byBjb21wcmVzcyBkYXRhIGZyb20gZm9yZXN0IHJlc291cmNlIG1hcHMsIGJ1dCBpcyB3aWRlbHkgYXBwbGljYWJsZSB0byBtYXAgYW5kIHBob3RvZ3JhcGhpYyBkYXRhIHJlZHVjdGlvbi4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKTsgQzc4OTAgKE90aGVyIHNwZWNpYWwgYXBwbGljYXRpb25zIG9mIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJQYWNpZmljIFNvdXRod2VzdCBGb3Jlc3QgYW5kIFJhbmdlIEV4cGVyaW1lbnQgU3RhdGlvbiwgQmVya2VsZXksIENBLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJkYXRhIGNvbXByZXNzaW9uOyBkYXRhIHJlZHVjdGlvbjsgZGF0YSByZWR1Y3Rpb24gYW5kIGFuYWx5c2lzOyBkYXRhIHN0cmluZ3M7IGZvcmVzdCByZXNvdXJjZSBtYXBzOyBpbmZvcm1hdGlvbiByZXRyaWV2YWw7IGlucHV0L291dHB1dDsgbWFwOyBtYXAgc3RvcmFnZTsgcnVuIGNvZGluZzsgc3RvcmFnZSIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7TXVsbGluOjE5NzE6UlVTLAogIGF1dGhvciA9ICAgICAgICJKYW1lcyBLLiBNdWxsaW4iLAogIHRpdGxlID0gICAgICAgICJSZXRyaWV2YWwtVXBkYXRlIFNwZWVkIFRyYWRlLW9mZnMgVXNpbmcgQ29tYmluZWQgSW5kZXhlcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNCIsCiAgbnVtYmVyID0gICAgICAgIjEyIiwKICBwYWdlcyA9ICAgICAgICAiNzc1LS03NzYiLAogIG1vbnRoID0gICAgICAgIGRlYywKICB5ZWFyID0gICAgICAgICAiMTk3MSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0RhdGFiYXNlL1dpZWRlcmhvbGQuYmliIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzcyNTAgKEluZm9ybWF0aW9uIHN0b3JhZ2UgYW5kIHJldHJpZXZhbCkiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBXZXN0ZXJuIE9udGFyaW8sIExvbmRvbiwgT250LiwgQ2FuYWRhIiwKICBrZXl3b3JkcyA9ICAgICAiY29tYmluZWQgaW5kZXggZmlsZXM7IGZpbGU7IGZpbGUgb3JnYW5pc2F0aW9uOyBmaWxlIHVwZGF0ZTsgaW5kZXhpbmc7IGluZm9ybWF0aW9uIHJldHJpZXZhbDsgaW5mb3JtYXRpb24gcmV0cmlldmFsIHN5c3RlbXM7IGludmVydGVkIGZpbGVzOyBtaW5pbWFsIGNvc3Q7IG9yZ2FuaXNhdGlvbjsgcXVlcnk7IHJldHJpZXZhbCB0aW1lOyBzcGVlZCB0cmFkZW9mZnMiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCiAgeHh0aXRsZSA9ICAgICAgIlJldHJpZXZhbC11cGRhdGUgc3BlZWQgdHJhZGVvZmZzIHVzaW5nIGNvbWJpbmVkIGluZGljZXMiLAp9CgpAQXJ0aWNsZXtIYXJyaXNvbjoxOTcxOklTVCwKICBhdXRob3IgPSAgICAgICAiTS4gQy4gSGFycmlzb24iLAogIHRpdGxlID0gICAgICAgICJJbXBsZW1lbnRhdGlvbiBvZiB0aGUgU3Vic3RyaW5nIFRlc3QgYnkgSGFzaGluZyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNCIsCiAgbnVtYmVyID0gICAgICAgIjEyIiwKICBwYWdlcyA9ICAgICAgICAiNzc3LS03NzkiLAogIG1vbnRoID0gICAgICAgIGRlYywKICB5ZWFyID0gICAgICAgICAiMTk3MSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIG5vdGUgPSAgICAgICAgICJTZWUgYWxzbyBcY2l0ZXtUaGFycDoxOTgyOlBUU30uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMzAgKERhdGEgaGFuZGxpbmcgdGVjaG5pcXVlcykiLAogIGNvcnBzb3VyY2UgPSAgICJOZXcgWW9yayBVbml2LiwgTlksIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImNvbXByZXNzaW9uOyBkYXRhIGhhbmRsaW5nOyBoYXNoaW5nOyBpbmZvcm1hdGlvbjsgaW5mb3JtYXRpb24gcmV0cmlldmFsOyBwcm9ncmFtbWluZzsgc2VhcmNoaW5nOyBzaWduYXR1cmU7IHN1YnNldDsgc3Vic3RyaW5nIHRlc3QiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle1d1bGY6MTk3MTpCTFMsCiAgYXV0aG9yID0gICAgICAgIlcuIEEuIFd1bGYgYW5kIEQuIEIuIFJ1c3NlbGwgYW5kIEEuIE4uIEhhYmVybWFubiIsCiAgdGl0bGUgPSAgICAgICAgIntCTElTU306IHtBfSBsYW5ndWFnZSBmb3Igc3lzdGVtcyBwcm9ncmFtbWluZyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNCIsCiAgbnVtYmVyID0gICAgICAgIjEyIiwKICBwYWdlcyA9ICAgICAgICAiNzgwLS03OTAiLAogIG1vbnRoID0gICAgICAgIGRlYywKICB5ZWFyID0gICAgICAgICAiMTk3MSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4QTA1IiwKICBNUm51bWJlciA9ICAgICAiNDYgODQ2MyIsCiAgbXJyZXZpZXdlciA9ICAgIlAuIERldXNzZW4iLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9BaS9BaS5taXNjLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIkEgbGFuZ3VhZ2UsIEJMSVNTLCBpcyBkZXNjcmliZWQuIFRoaXMgbGFuZ3VhZ2UgaXMgZGVzaWduZWQgc28gYXMgdG8gYmUgZXNwZWNpYWxseSBzdWl0YWJsZSBmb3IgdXNlIGluIHdyaXRpbmcgcHJvZHVjdGlvbiBzb2Z0d2FyZSBzeXN0ZW1zIGZvciBhIHNwZWNpZmljIG1hY2hpbmUgKHRoZSBQRFAtMTApOiBjb21waWxlcnMsIG9wZXJhdGluZyBzeXN0ZW1zLCBldGMuIFByaW1lIGRlc2lnbiBnb2FscyBvZiB0aGUgZGVzaWduIGFyZSB0aGUgYWJpbGl0eSB0byBwcm9kdWNlIGhpZ2hseSBlZmZpY2llbnQgb2JqZWN0IGNvZGUsIHRvIGFsbG93IGFjY2VzcyB0byBhbGwgcmVsZXZhbnQgaGFyZHdhcmUgZmVhdHVyZXMgb2YgdGhlIGhvc3QgbWFjaGluZSwgYW5kIHRvIHByb3ZpZGUgYSByYXRpb25hbCBtZWFucyBieSB3aGljaCB0byBjb3BlIHdpdGggdGhlIGV2b2x1dGlvbmFyeSBuYXR1cmUgb2Ygc3lzdGVtcyBwcm9ncmFtcy4gQSBtYWpvciBmZWF0dXJlIHdoaWNoIGNvbnRyaWJ1dGVzIHRvIHRoZSByZWFsaXphdGlvbiBvZiB0aGVzZSBnb2FscyBpcyBhIG1lY2hhbmlzbSBwZXJtaXR0aW5nIHRoZSBkZWZpbml0aW9uIG9mIHRoZSByZXByZXNlbnRhdGlvbiBvZiBhbGwgZGF0YSBzdHJ1Y3R1cmVzIGluIHRlcm1zIG9mIHRoZSBhY2Nlc3MgYWxnb3JpdGhtIGZvciBlbGVtZW50cyBvZiB0aGUgc3RydWN0dXJlLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM1NDIwIChNYWluZnJhbWVzIGFuZCBtaW5pY29tcHV0ZXJzKTsgQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKTsgQzYxNTBDIChDb21waWxlcnMsIGludGVycHJldGVycyBhbmQgb3RoZXIgcHJvY2Vzc29ycyk7IEM2MTUwSiAoT3BlcmF0aW5nIHN5c3RlbXMpIiwKICBjb3Jwc291cmNlID0gICAiQ2FybmVnaWUtTWVsbG9uIFVuaXYuLCBQaXR0c2J1cmdoLCBQQSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiZGF0YSBzdHJ1Y3R1cmVzOyBpbXBsZW1lbnRhdGlvbiBsYW5ndWFnZTsgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzOyBzeXN0ZW1zIHByb2dyYW1taW5nIiwKICBrZXl3b3JkcyA9ICAgICAiQkxJU1M7IGNvbXBpbGVyczsgZGF0YSBzdHJ1Y3R1cmVzOyBsYW5ndWFnZTsgbWluaWNvbXB1dGVyczsgb3BlcmF0aW5nIHN5c3RlbXM7IHByb2dyYW0gcHJvY2Vzc29yczsgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzOyBzb2Z0d2FyZSBzeXN0ZW1zOyBzdXBlcnZpc29yeSBhbmQgZXhlY3V0aXZlIHByb2dyYW1zOyBzeXN0ZW1zIHByb2dyYW1taW5nIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtSb2NoZmVsZDoxOTcxOk5MVCwKICBhdXRob3IgPSAgICAgICAiQS4gUm9jaGZlbGQiLAogIHRpdGxlID0gICAgICAgICJOZXcge0xJU1B9IFRlY2huaXF1ZXMgZm9yIGEgUGFnaW5nIEVudmlyb25tZW50IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE0IiwKICBudW1iZXIgPSAgICAgICAiMTIiLAogIHBhZ2VzID0gICAgICAgICI3OTEtLTc5NSIsCiAgbW9udGggPSAgICAgICAgZGVjLAogIHllYXIgPSAgICAgICAgICIxOTcxIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgImZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvQ29tcGlsZXIvZ2FyYmFnZS5jb2xsZWN0aW9uLmJpYiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbik7IEM2MTQwRCAoSGlnaCBsZXZlbCBsYW5ndWFnZXMpIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gRWRpbmJ1cmdoLCBVSyIsCiAga2V5d29yZHMgPSAgICAgImJsb2NrIHNlZ21lbnQ7IGNvbGxlY3Rpb247IGNvbXBhY3Q7IGNvcmUgZnJhZ21lbnRhdGlvbjsgZ2FyYmFnZTsgTElTUDsgbGlzdCBwcm9jZXNzaW5nOyBsaXN0IHN0cnVjdHVyZXM7IG1hbmFnZW1lbnQ7IHBhZ2luZyBlbnZpcm9ubWVudDsgcHJvY2VkdXJlIG9yaWVudGVkIGxhbmd1YWdlczsgc3RvcmFnZTsgdmlydHVhbCBtZW1vcnkiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0JsdW1iZXJnOjE5NzE6Tk1OLAogIGF1dGhvciA9ICAgICAgICJKLiBXLiBCbHVtYmVyZyBhbmQgQy4gUi4gRm91bGsiLAogIHRpdGxlID0gICAgICAgICJBIG5vdGUgb24gYGEgbW9kaWZpY2F0aW9uIG9mIHtOb3Jkc2llY2t9J3MgbWV0aG9kIHVzaW5nIGFuIGBgb2ZmLXN0ZXAnJyBwb2ludCciLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTQiLAogIG51bWJlciA9ICAgICAgICIxMiIsCiAgcGFnZXMgPSAgICAgICAgIjc5Ni0tNzk2IiwKICBtb250aCA9ICAgICAgICBkZWMsCiAgeWVhciA9ICAgICAgICAgIjE5NzEiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQxNzAgKERpZmZlcmVudGlhbCBlcXVhdGlvbnMpIiwKICBjb3Jwc291cmNlID0gICAiT2hpbyBTdGF0ZSBVbml2LiwgQ29sdW1idXMsIE9ILCBVU0EiLAogIGtleXdvcmRzID0gICAgICJjb3JyZWN0b3I7IGNvcnJlY3RvciBtZXRob2RzOyBkaWZmZXJlbnRpYWwgZXF1YXRpb25zOyBtb2RpZmljYXRpb247IG11bHRpc3RlcCBtZXRob2RzOyBOb3Jkc2llY2sncyBtZXRob2Q7IG51bWVyaWNhbCBtZXRob2RzOyBvZmYgZXJyb3I7IG9yZGluYXJ5IGRpZmZlcmVudGlhbCBlcXVhdGlvbnM7IHByZWRpY3RvcjsgcHJlZGljdG9yLTsgcm91bmQiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0d1c3RhZnNvbjoxOTcxOlJDRywKICBhdXRob3IgPSAgICAgICAiU3Zlbi17XEFBfWtlIEEuIEd1c3RhZnNvbiIsCiAgdGl0bGUgPSAgICAgICAgIlJhcGlkIENvbXB1dGF0aW9uIG9mIEdlbmVyYWwgSW50ZXJwb2xhdGlvbiBGb3JtdWxhcyBhbmQgTWVjaGFuaWNhbCBRdWFkcmF0dXJlIFJ1bGVzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE0IiwKICBudW1iZXIgPSAgICAgICAiMTIiLAogIHBhZ2VzID0gICAgICAgICI3OTctLTgwMSIsCiAgbW9udGggPSAgICAgICAgZGVjLAogIHllYXIgPSAgICAgICAgICIxOTcxIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjVEMDUiLAogIE1SbnVtYmVyID0gICAgICI0NiAxMDE2N2EiLAogIG1ycmV2aWV3ZXIgPSAgICJWLiBQZXJleXJhIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MTMwIChJbnRlcnBvbGF0aW9uIGFuZCBmdW5jdGlvbiBhcHByb3hpbWF0aW9uKSIsCiAgY29ycHNvdXJjZSA9ICAgIlJveWFsIEluc3QuIFRlY2hub2wuLCBTdG9ja2hvbG0sIFN3ZWRlbiIsCiAga2V5d29yZHMgPSAgICAgImRpdmlkZWQgZGlmZmVyZW5jZXM7IGZvcm11bGE7IGZ1bmN0aW9uYWxzOyBnZW5lcmFsIGludGVycG9sYXRpb24gZm9ybXVsYXM7IEhlcm1pdGlhbjsgaW50ZXJwb2xhdGlvbjsgTGFncmFuZ2lhbjsgbGluZWFyOyBtZWNoYW5pY2FsIHF1YWRyYXR1cmUgcnVsZXM7IE5ld3RvbidzIGludGVycG9sYXRpb247IHJhcGlkIGNvbXB1dGF0aW9uIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtCb3VyZ2VvaXM6MTk3MTpFTUEsCiAgYXV0aG9yID0gICAgICAgIkZyYW57XGN7Y319b2lzIEJvdXJnZW9pcyBhbmQgSmVhbi1DbGF1ZGUgTGFzc2FsbGUiLAogIHRpdGxlID0gICAgICAgICJBbiBleHRlbnNpb24gb2YgdGhlIHtNdW5rcmVzfSBhbGdvcml0aG0gZm9yIHRoZSBhc3NpZ25tZW50IHByb2JsZW0gdG8gcmVjdGFuZ3VsYXIgbWF0cmljZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTQiLAogIG51bWJlciA9ICAgICAgICIxMiIsCiAgcGFnZXMgPSAgICAgICAgIjgwMi0tODA0IiwKICBtb250aCA9ICAgICAgICBkZWMsCiAgeWVhciA9ICAgICAgICAgIjE5NzEiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI5MEMwNSIsCiAgTVJudW1iZXIgPSAgICAgIjQ3IDQ2MjgiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhYnN0cmFjdCA9ICAgICAiVGhlIGFzc2lnbm1lbnQgcHJvYmxlbSwgdG9nZXRoZXIgd2l0aCBNdW5rcmVzIHByb3Bvc2VkIGFsZ29yaXRobSBmb3IgaXRzIHNvbHV0aW9uIGluIHNxdWFyZSBtYXRyaWNlcywgaXMgcHJlc2VudGVkIGZpcnN0LiBUaGVuIHRoZSBhdXRob3JzIGRldmVsb3AgYW4gZXh0ZW5zaW9uIG9mIHRoaXMgYWxnb3JpdGhtIHdoaWNoIHBlcm1pdHMgYSBzb2x1dGlvbiBmb3IgcmVjdGFuZ3VsYXIgbWF0cmljZXMuIFRpbWluZyByZXN1bHRzIG9idGFpbmVkIGJ5IHVzaW5nIGFuIGFkYXB0ZWQgdmVyc2lvbiBvZiBTaWx2ZXIncyBBbGdvbCBwcm9jZWR1cmUgYXJlIGRpc2N1c3NlZCwgYW5kIGEgcmVsYXRpb24gYmV0d2VlbiBzb2x1dGlvbiB0aW1lIGFuZCBwcm9ibGVtIHNpemUgaXMgZ2l2ZW4uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQxNDAgKExpbmVhciBhbGdlYnJhKSIsCiAgY29ycHNvdXJjZSA9ICAgIkNFUk4sIEdlbmV2YSwgU3dpdHplcmxhbmQiLAogIGtleXdvcmRzID0gICAgICJhbGdvcml0aG07IGFzc2lnbm1lbnQgcHJvYmxlbTsgbWF0cml4IGFsZ2VicmE7IE11bmtyZXMgYWxnb3JpdGhtOyBvcGVyYXRpb25zIHJlc2VhcmNoOyBvcHRpbWlzYXRpb247IG9wdGltaXphdGlvbiB0aGVvcnk7IHJlY3Rhbmd1bGFyIG1hdHJpY2VzIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtCb3VyZ2VvaXM6MTk3MTpBQUEsCiAgYXV0aG9yID0gICAgICAgIkYuIEJvdXJnZW9pcyBhbmQgSi4gQy4gTGFzc2FsbGUiLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gNDE1OiBBbGdvcml0aG0gZm9yIHRoZSBBc3NpZ25tZW50IFByb2JsZW0gKFJlY3Rhbmd1bGFyIE1hdHJpY2VzKSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNCIsCiAgbnVtYmVyID0gICAgICAgIjEyIiwKICBwYWdlcyA9ICAgICAgICAiODA1LS04MDYiLAogIG1vbnRoID0gICAgICAgIGRlYywKICB5ZWFyID0gICAgICAgICAiMTk3MSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDE0MCAoTGluZWFyIGFsZ2VicmEpIiwKICBjb3Jwc291cmNlID0gICAiQ0VSTiwgR2VuZXZhLCBTd2l0emVybGFuZCIsCiAga2V5d29yZHMgPSAgICAgImFsZ29yaXRobTsgYXNzaWdubWVudCBwcm9ibGVtOyBtYXRyaXggYWxnZWJyYTsgb3BlcmF0aW9ucyByZXNlYXJjaDsgb3B0aW1pemF0aW9uOyByZWN0YW5ndWxhciBtYXRyaWNlczsgc3Vicm91dGluZXMiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0d1c3RhZnNvbjoxOTcxOkFBUmEsCiAgYXV0aG9yID0gICAgICAgIlN2ZW4te1xBQX1rZSBHdXN0YWZzb24iLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gNDE2OiBSYXBpZCBDb21wdXRhdGlvbiBvZiBDb2VmZmljaWVudHMgb2YgSW50ZXJwb2xhdGlvbiBGb3JtdWxhcyBbe0UxfV0iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTQiLAogIG51bWJlciA9ICAgICAgICIxMiIsCiAgcGFnZXMgPSAgICAgICAgIjgwNi0tODA3IiwKICBtb250aCA9ICAgICAgICBkZWMsCiAgeWVhciA9ICAgICAgICAgIjE5NzEiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2NUQwNSIsCiAgTVJudW1iZXIgPSAgICAgIjQ2IDEwMTY3YiIsCiAgbXJyZXZpZXdlciA9ICAgIlYuIFBlcmV5cmEiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQxMzAgKEludGVycG9sYXRpb24gYW5kIGZ1bmN0aW9uIGFwcHJveGltYXRpb24pIiwKICBjb3Jwc291cmNlID0gICAiU3RhbmZvcmQgVW5pdi4sIENBLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJhbGdvcml0aG07IGNvZWZmaWNpZW50czsgZGl2aWRlZCBkaWZmZXJlbmNlczsgaW50ZXJwb2xhdGlvbjsgaW50ZXJwb2xhdGlvbiBmb3JtdWxhOyByYXBpZCBjb21wdXRhdGlvbjsgc3Vicm91dGluZXMiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0d1c3RhZnNvbjoxOTcxOkFBUmIsCiAgYXV0aG9yID0gICAgICAgIlN2ZW4te1xBQX1rZSBHdXN0YWZzb24iLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gNDE3OiBSYXBpZCBDb21wdXRhdGlvbiBvZiBXZWlnaHRzIG9mIEludGVycG9sYXRvcnkgUXVhZHJhdHVyZSBSdWxlcyBbe0QxfV0iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTQiLAogIG51bWJlciA9ICAgICAgICIxMiIsCiAgcGFnZXMgPSAgICAgICAgIjgwNy0tODA3IiwKICBtb250aCA9ICAgICAgICBkZWMsCiAgeWVhciA9ICAgICAgICAgIjE5NzEiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2NUQwNSIsCiAgTVJudW1iZXIgPSAgICAgIjQ2IDEwMTY3YyIsCiAgbXJyZXZpZXdlciA9ICAgIlYuIFBlcmV5cmEiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQxMzAgKEludGVycG9sYXRpb24gYW5kIGZ1bmN0aW9uIGFwcHJveGltYXRpb24pIiwKICBjb3Jwc291cmNlID0gICAiU3RhbmZvcmQgVW5pdi4sIENBLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJhbGdvcml0aG07IGRpdmlkZWQgZGlmZmVyZW5jZXM7IGludGVycG9sYXRpb247IGludGVycG9sYXRpb24gZm9ybXVsYWU7IG1lY2hhbmljYWwgcXVhZHJhdHVyZSBydWxlczsgcmFwaWQgY29tcHV0YXRpb247IHN1YnJvdXRpbmVzOyB3ZWlnaHRzIiwKfQoKQEFydGljbGV7QWhvOjE5NzE6UE9QLAogIGF1dGhvciA9ICAgICAgICJBLiBWLiBBaG8gYW5kIFAuIEouIERlbm5pbmcgYW5kIEouIEQuIFVsbG1hbiIsCiAgdGl0bGUgPSAgICAgICAgIlByaW5jaXBsZXMgb2Ygb3B0aW1hbCBwYWdlIHJlcGxhY2VtZW50IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE4IiwKICBudW1iZXIgPSAgICAgICAiMSIsCiAgcGFnZXMgPSAgICAgICAgIjgwLS05MyIsCiAgbW9udGggPSAgICAgICAgamFuLAogIHllYXIgPSAgICAgICAgICIxOTcxIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJzb3VyY2UgPSAgICAiZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9NaXNjL2NhY2hlLmJpYiIsCn0KCkBBcnRpY2xle0pvaG5zb246MTk3MjpSQ0EsCiAgYXV0aG9yID0gICAgICAgIlMuIEMuIEpvaG5zb24gYW5kIEIuIFcuIEtlcm5pZ2hhbiIsCiAgdGl0bGUgPSAgICAgICAgIlJlbWFyayBvbiB7YGBDQUNNIEFsZ29yaXRobSAzOTcnJ30iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiNSIsCiAgbnVtYmVyID0gICAgICAgIjYiLAogIHBhZ2VzID0gICAgICAgICI0NjkiLAogIG1vbnRoID0gICAgICAgIGp1biwKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBEZWMgMjYgMTY6MzU6MzcgMTk5NSIsCiAgbm90ZSA9ICAgICAgICAgIkNoZWNrIHZvbHVtZS9udW1iZXIveWVhcj8/IiwKICBrZXl3b3JkcyA9ICAgICAiYWNtIGNhY20iLAp9CgpAQXJ0aWNsZXtCYXJ0ZWxzOjE5NzI6QVNNLAogIGF1dGhvciA9ICAgICAgICJSLiBILiBCYXJ0ZWxzIGFuZCBHLiBXLiBTdGV3YXJ0IiwKICB0aXRsZSA9ICAgICAgICAiQWxnb3JpdGhtIDQzMjogVGhlIFNvbHV0aW9uIG9mIHRoZSBNYXRyaXggRXF1YXRpb24geyRBWCAtK0JYID0gQyR9IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjgiLAogIG51bWJlciA9ICAgICAgICI5IiwKICBwYWdlcyA9ICAgICAgICAiODIwLS04MjYiLAogIG1vbnRoID0gICAgICAgIHNlcCwKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXkgMjggMTE6MTk6MTUgMTk5NiIsCiAgYmlic291cmNlID0gICAgImZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvVGhlb3J5L01hdHJpeC5iaWIiLAogIG5vdGUgPSAgICAgICAgICJDaGVjayB2b2x1bWUvbnVtYmVyL3llYXI/PyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAga2V5d29yZHMgPSAgICAgImxpbmVhciBhbGdlYnJhOyBsaW5lYXIgZXF1YXRpb25zOyBtYXRyaWNlcyIsCiAga3dkcyA9ICAgICAgICAgIm5sYSwgU2NodXIgZm9ybSwgU3lsdmVzdGVyIGVxdWF0aW9uLCBMeWFwdW5vdiBlcXVhdGlvbiwgbWF0cml4IGVxdWF0aW9uIiwKfQoKQEFydGljbGV7TGVzazoxOTcyOlBQUiwKICBhdXRob3IgPSAgICAgICAiQS4gTS4gTGVzayIsCiAgdGl0bGUgPSAgICAgICAgIlBpY3RvcmlhbCBwYXR0ZXJuIHJlY29nbml0aW9uIGFuZCB0aGUgcGhhc2UgcHJvYmxlbSBvZiB7WH0tcmF5IGNyeXN0YWxsb2dyYXBoeSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjEiLAogIHBhZ2VzID0gICAgICAgICIzLS02IiwKICBtb250aCA9ICAgICAgICBqYW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQTYxMDAgKFN0cnVjdHVyZSBvZiBsaXF1aWRzIGFuZCBzb2xpZHM7IGNyeXN0YWxsb2dyYXBoeSk7IEE2MTUwIChDcnlzdGFsbGluZSBzdGF0ZSk7IEI2MTQwQyAoT3B0aWNhbCBpbmZvcm1hdGlvbiwgaW1hZ2UgYW5kIHZpZGVvIHNpZ25hbCBwcm9jZXNzaW5nKTsgQzEyNTAgKFBhdHRlcm4gcmVjb2duaXRpb24pIiwKICBjb3Jwc291cmNlID0gICAiUHJpbmNldG9uIFVuaXYuLCBOSiwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiY2FsY3VsYXRpb24gbWV0aG9kczsgY3Jvc3MgY29ycmVsYXRpb247IGNyeXN0YWxsb2dyYXBoeTsgaHlwb3RoZXNlczsgbW9sZWN1bGFyIG1vZGVsIGJ1aWxkaW5nOyBwYXR0ZXJuIHJlY29nbml0aW9uOyBwaGFzZSBwcm9ibGVtOyBwaHlzaWNzOyBwaWN0b3JpYWwgcGF0dGVybiByZWNvZ25pdGlvbjsgc3RydWN0dXJhbDsgWC1yYXk7IFgtcmF5IGNyeXN0YWxsb2dyYXBoeSIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7TGV2aWFsZGk6MTk3MjpTQlAsCiAgYXV0aG9yID0gICAgICAgIlMuIExldmlhbGRpIiwKICB0aXRsZSA9ICAgICAgICAiT24gU2hyaW5raW5nIEJpbmFyeSBQaWN0dXJlIFBhdHRlcm5zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiMSIsCiAgcGFnZXMgPSAgICAgICAgIjctLTEwIiwKICBtb250aCA9ICAgICAgICBqYW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhYnN0cmFjdCA9ICAgICAiQSBwYXJhbGxlbCBwcm9jZXNzaW5nIGFsZ29yaXRobSBmb3Igc2hyaW5raW5nIGJpbmFyeSBwYXR0ZXJucyB0byBvYnRhaW4gc2luZ2xlIGlzb2xhdGVkIGVsZW1lbnRzLCBvbmUgZm9yIGVhY2ggcGF0dGVybiwgaXMgcHJlc2VudGVkLiBUaGlzIHByb2NlZHVyZSBtYXkgYmUgdXNlZCBmb3IgY291bnRpbmcgcGF0dGVybnMgb24gYSBtYXRyaXgsIGFuZCBhIGhhcmR3YXJlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBhbGdvcml0aG0gdXNpbmcgbGFyZ2Ugc2NhbGUgaW50ZWdyYXRlZCB0ZWNobm9sb2d5IGlzIGVudmlzaW9uZWQuIFRoZSBwcmluY2lwYWwgZmVhdHVyZXMgb2YgdGhpcyBtZXRob2QgYXJlIHRoZSB2ZXJ5IHNtYWxsIHdpbmRvdyBlbXBsb3llZCAodHdvLWJ5LXR3byBlbGVtZW50cyksIHRoZSBwYXJhbGxlbCBuYXR1cmUgb2YgdGhlIHByb2Nlc3MsIGFuZCB0aGUgcG9zc2liaWxpdHkgb2Ygc2hyaW5raW5nIGFueSBwYXR0ZXJuLCByZWdhcmRsZXNzIG9mIHRoZSBjb21wbGV4aXR5IG9mIGl0cyBjb25maWd1cmF0aW9uLiBQcm9ibGVtcyByZWdhcmRpbmcgbWVyZ2luZyBhbmQgZGlzY29ubmVjdGlvbiBvZiBwYXR0ZXJucyBkdXJpbmcgdGhlIHByb2Nlc3MgYXMgd2VsbCBhcyB0aGUgZGV0ZXJtaW5hdGlvbiBvZiB0aGUgbWF4aW11bSBudW1iZXIgb2Ygc3RlcHMgbmVjZXNzYXJ5IHRvIG9idGFpbiBhIHNpbmdsZSBpc29sYXRlZCBlbGVtZW50IGZyb20gYSBwYXR0ZXJuLCBhcmUgcmV2aWV3ZWQgYW5kIGRpc2N1c3NlZC4gQW4gYW5hbG9neSB3aXRoIGEgbmV1cmFsIG5ldHdvcmsgZGVzY3JpcHRpb24sIGluIHRlcm1zIG9mIE1jQ3VsbG9jaC1QaXR0cyBgYG5ldXJvbnMnJyBpcyBwcmVzZW50ZWQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjYxNDBDIChPcHRpY2FsIGluZm9ybWF0aW9uLCBpbWFnZSBhbmQgdmlkZW8gc2lnbmFsIHByb2Nlc3NpbmcpOyBDMTI1MCAoUGF0dGVybiByZWNvZ25pdGlvbikiLAogIGNvcnBzb3VyY2UgPSAgICJDTlIsIE5hcG9saSwgSXRhbHkiLAogIGtleXdvcmRzID0gICAgICJjb3VudGluZyBiaW5hcnkgcGF0dGVybnM7IGNvdW50aW5nIHBhdHRlcm5zOyBkaXNjb25uZWN0aW9uOyBpc29sYXRlZCBlbGVtZW50OyBsYXJnZSBzY2FsZSBpbnRlZ3JhdGVkOyBtYXRyaXg7IG1lcmdpbmc7IG11bHRpcGxlIGNvbm5lY3RlZDsgbXVsdGlwbGUgY29ubmVjdGVkIHBpY3R1cmVzOyBuZXVyYWwgbmV0d29yazsgcGFyYWxsZWwgcHJvY2Vzc2luZzsgcGF0dGVybiByZWNvZ25pdGlvbjsgcGljdHVyZXM7IHNocmlua2luZzsgc2hyaW5raW5nIGJpbmFyeSBwaWN0dXJlIHBhdHRlcm5zOyBzaW5nbGU7IHNtYWxsIHdpbmRvdzsgdGVjaG5vbG9neSIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7RHVkYToxOTcyOlVIVCwKICBhdXRob3IgPSAgICAgICAiUi4gTy4gRHVkYSBhbmQgUC4gRS4gSGFydCIsCiAgdGl0bGUgPSAgICAgICAgIlVzZSBvZiB0aGUgSG91Z2ggdHJhbnNmb3JtYXRpb24gdG8gZGV0ZWN0IGxpbmVzIGFuZCBjdXJ2ZXMgaW4gcGljdHVyZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTUiLAogIG51bWJlciA9ICAgICAgICIxIiwKICBwYWdlcyA9ICAgICAgICAiMTEtLTE1IiwKICBtb250aCA9ICAgICAgICBqYW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9NaXNjL1JldmVyc2UuZW5nLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIkhvdWdoIGhhcyBwcm9wb3NlZCBhbiBpbnRlcmVzdGluZyBhbmQgY29tcHV0YXRpb25hbGx5IGVmZmljaWVudCBwcm9jZWR1cmUgZm9yIGRldGVjdGluZyBsaW5lcyBpbiBwaWN0dXJlcy4gVGhpcyBwYXBlciBwb2ludHMgb3V0IHRoYXQgdGhlIHVzZSBvZiBhbmdsZS1yYWRpdXMgcmF0aGVyIHRoYW4gc2xvcGUtaW50ZXJjZXB0IHBhcmFtZXRlcnMgc2ltcGxpZmllcyB0aGUgY29tcHV0YXRpb24gZnVydGhlci4gSXQgYWxzbyBzaG93cyBob3cgdGhlIG1ldGhvZCBjYW4gYmUgdXNlZCBmb3IgbW9yZSBnZW5lcmFsIGN1cnZlIGZpdHRpbmcsIGFuZCBnaXZlcyBhbHRlcm5hdGl2ZSBpbnRlcnByZXRhdGlvbnMgdGhhdCBleHBsYWluIHRoZSBzb3VyY2Ugb2YgaXRzIGVmZmljaWVuY3kuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjYxNDBDIChPcHRpY2FsIGluZm9ybWF0aW9uLCBpbWFnZSBhbmQgdmlkZW8gc2lnbmFsIHByb2Nlc3NpbmcpOyBDMTI1MCAoUGF0dGVybiByZWNvZ25pdGlvbikiLAogIGNvcnBzb3VyY2UgPSAgICJTdGFuZm9yZCBSZXMuIEluc3QuLCBNZW5sbyBQYXJrLCBDQSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiYW5nbGUgcmFkaXVzOyBjb2xpbmVhciBwb2ludHM7IGN1cnZlIGRldGVjdGlvbjsgY3VydmVzOyBkZXRlY3RpbmcgbGluZXM7IEhvdWdoIHRyYW5zZm9ybWF0aW9uOyBsaW5lIGRldGVjdGlvbjsgcGF0dGVybiByZWNvZ25pdGlvbjsgcGljdHVyZSBwcm9jZXNzaW5nOyBwaWN0dXJlczsgcG9pbnQtbGluZSB0cmFuc2Zvcm1hdGlvbiIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7SXJvbnM6MTk3MjpDRVMsCiAgYXV0aG9yID0gICAgICAgIkUuIFQuIElyb25zIGFuZCBGLiBNLiBEam9ydXAiLAogIHRpdGxlID0gICAgICAgICJBIHtDUlR9IGVkaXRpbmcgc3lzdGVtIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiMSIsCiAgcGFnZXMgPSAgICAgICAgIjE2LS0yMCIsCiAgbW9udGggPSAgICAgICAgamFuLAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTMwIChEYXRhIGhhbmRsaW5nIHRlY2huaXF1ZXMpIiwKICBjb3Jwc291cmNlID0gICAiSW5zdC4gRGVmZW5zZSBBbmFseXNlcywgUHJpbmNldG9uLCBOSiwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiQ1JUIGVkaXRpbmcgc3lzdGVtOyBlbnRyeSBkaXNwbGF5OyBtYW5pcHVsYXRpb24gcHJvZ3JhbTsgdGV4dDsgdGV4dCBlZGl0aW5nOyB0aW1lIHNoYXJpbmciLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBFIEVjb25vbWljOyBQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0R3eWVyOjE5NzI6VFNBLAogIGF1dGhvciA9ICAgICAgICJULiBBLiBEd3llciIsCiAgdGl0bGUgPSAgICAgICAgIlRlYWNoZXJcc2xhc2ggc3R1ZGVudCBhdXRob3JlZCB7Q0FJfSB1c2luZyB0aGUge05FV0JBU0lDfSBzeXN0ZW0iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTUiLAogIG51bWJlciA9ICAgICAgICIxIiwKICBwYWdlcyA9ICAgICAgICAiMjEtLTI4IiwKICBtb250aCA9ICAgICAgICBqYW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzc4MTBDIChDb21wdXRlci1haWRlZCBpbnN0cnVjdGlvbikiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBQaXR0c2J1cmdoLCBQQSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiQ0FJOyBjYXBhYmlsaXR5OyBDQVRBTFlTVDsgY29tcHV0ZXIgYWlkZWQgaW5zdHJ1Y3Rpb247IGZsZXhpYmxlIENBSSBzY2FuOyBpbnRlcmFjdGl2ZTsgTkVXQkFTSUMgc3lzdGVtOyBzZWNvbmRhcnkgc2Nob29sIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtTaGVsbDoxOTcyOkNPUCwKICBhdXRob3IgPSAgICAgICAiRG9uYWxkIEwuIFNoZWxsIiwKICB0aXRsZSA9ICAgICAgICAiQ29ycmlnZW5kdW06IHtgYE9wdGltaXppbmcgdGhlIFBvbHlwaGFzZSBTb3J0Jyd9IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiMSIsCiAgcGFnZXMgPSAgICAgICAgIjI4LS0yOCIsCiAgbW9udGggPSAgICAgICAgamFuLAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiRnJpIEphbiAxNyAxODozNzozNiAxOTk3IiwKICBub3RlID0gICAgICAgICAiU2VlIFxjaXRle1NoZWxsOjE5NzE6T1BTfS4iLAp9CgpAQXJ0aWNsZXtNY0NhbGxhOjE5NzI6TU1VLAogIGF1dGhvciA9ICAgICAgICJHLiBJLiBNY0NhbGxhIGFuZCBKLiBSLiBTYW1wc29uIiwKICB0aXRsZSA9ICAgICAgICAie01VU0V9OiB7QSBNb2RlbCB0byBVbmRlcnN0YW5kIFNpbXBsZSBFbmdsaXNofSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjEiLAogIHBhZ2VzID0gICAgICAgICIyOS0tNDAiLAogIG1vbnRoID0gICAgICAgIGphbiwKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNzgyMCAoSHVtYW5pdGllcyBjb21wdXRpbmcpIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gQWxiZXJ0YSwgRWRtb250b24sIEFsdGEuLCBDYW5hZGEiLAogIGtleXdvcmRzID0gICAgICJhbWJpZ3VpdHk7IGNvbXB1dGVyIG1vZGVsOyBFbmdsaXNoIHNlbnRlbmNlczsgZ2VuZXJhbGl6YXRpb247IGluZm9ybWF0aW9uIGFkZGl0aW9uIHRvIG1lbW9yeTsgaW50ZXJwcmV0YXRpb247IGludGVyc2VjdGlvbiBwcm9jZWR1cmU7IGxhbmd1YWdlIHRyYW5zbGF0aW9uIGFuZCBsaW5ndWlzdGljczsgTVVTRTsgbmF0dXJhbCBsYW5ndWFnZSBwcm9jZXNzaW5nOyBuZXR3b3JrOyByZXNvbHV0aW9uOyBzZW1hbnRpYyBtZW1vcnk7IHN5bnRhY3RpYyBhbmFseXNpczsgdGV4dCIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle1NocmFnZXI6MTk3MjpRUE4sCiAgYXV0aG9yID0gICAgICAgIlIuIEkuIFNocmFnZXIiLAogIHRpdGxlID0gICAgICAgICJRdWFkcmF0aWMgcHJvZ3JhbW1pbmcgZm9yIG5vbmxpbmVhciByZWdyZXNzaW9uIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiMSIsCiAgcGFnZXMgPSAgICAgICAgIjQxLS00NSIsCiAgbW9udGggPSAgICAgICAgamFuLAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkIwMjYwIChPcHRpbWlzYXRpb24gdGVjaG5pcXVlcyk7IEMxMTgwIChPcHRpbWlzYXRpb24gdGVjaG5pcXVlcykiLAogIGNvcnBzb3VyY2UgPSAgICJEZXB0LiBIZWFsdGggYW5kIEVkdWNhdGlvbiwgQmV0aGVzZGEsIE1ELCBVU0EiLAogIGtleXdvcmRzID0gICAgICJkaWFnb25hbCBtZXRob2Q7IGxpbmVhciBjb25zdHJhaW50czsgbWFnbmlmaWVkOyBub25saW5lYXIgcmVncmVzc2lvbjsgcXVhZHJhdGljIHByb2dyYW1taW5nIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtTYWx6ZXI6MTk3MjpPT1csCiAgYXV0aG9yID0gICAgICAgIkguIEUuIFNhbHplciIsCiAgdGl0bGUgPSAgICAgICAgIk9yZGVyaW5nICtvci1mKCtvci1mKCtvci1mKFxsZG90c3t9K29yLWYoeClcbGRvdHN7fSkpKSB3aGVuIGYoeCkgaXMgcG9zaXRpdmUgbW9ub3RvbmljIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiMSIsCiAgcGFnZXMgPSAgICAgICAgIjQ1LS00NiIsCiAgbW9udGggPSAgICAgICAgamFuLAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MTkwIChPdGhlciBudW1lcmljYWwgbWV0aG9kcykiLAogIGtleXdvcmRzID0gICAgICJjb21iaW5hdGlvbjsgbnVtZXJpY2FsIG1ldGhvZHM7IG9yZGVyaW5nOyBwb3NpdGl2ZSBtb25vdG9uaWM7IHJlYWwgYXJndW1lbnRzOyBzaWducyIsCn0KCkBBcnRpY2xle0VpbmFyc3NvbjoxOTcyOkFBQywKICBhdXRob3IgPSAgICAgICAiQi4gRWluYXJzc29uIiwKICB0aXRsZSA9ICAgICAgICAie0FDTX0gQWxnb3JpdGhtIDQxODogQ2FsY3VsYXRpb24gb2Yge0ZvdXJpZXJ9IEludGVncmFscyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjEiLAogIHBhZ2VzID0gICAgICAgICI0Ny0tNDgiLAogIG1vbnRoID0gICAgICAgIGphbiwKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDE2MCAoTnVtZXJpY2FsIGludGVncmF0aW9uIGFuZCBkaWZmZXJlbnRpYXRpb24pOyBDNzMxMCAoTWF0aGVtYXRpY3MgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIlJlcy4gSW5zdC4gTmF0LiBEZWZlbnNlLCBUdW1iYSwgU3dlZGVuIiwKICBrZXl3b3JkcyA9ICAgICAiY2FsY3VsYXRpb247IEZPUlRSQU4gcm91dGluZTsgRm91cmllciBpbnRlZ3JhbHM7IGludGVncmF0aW9uOyBzdWJyb3V0aW5lcyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7UGFnZXI6MTk3MjpQQ0IsCiAgYXV0aG9yID0gICAgICAgIkRhdmlkIFBhZ2VyIiwKICB0aXRsZSA9ICAgICAgICAiQSBQcm9wb3NhbCBmb3IgYSBDb21wdXRlci1CYXNlZCBJbnRlcmFjdGl2ZSBTY2llbnRpZmljIENvbW11bml0eSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjIiLAogIHBhZ2VzID0gICAgICAgICI3MS0tNzUiLAogIG1vbnRoID0gICAgICAgIGZlYiwKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFic3RyYWN0ID0gICAgICJCZWNhdXNlIG9mIHRoZSBwcm9ibGVtcyBjcmVhdGVkIGJ5IHRoZSBleHBsb3Npb24gb2YgcGFwZXJzIGluIHRoZSBtYXRoZW1hdGljYWwgc2NpZW5jZXMgYW5kIHRoZSBkcmF3YmFja3MgdGhhdCB0aGlzIHBsYWNlcyBvbiByZXNlYXJjaCwgaXQgaXMgc3VnZ2VzdGVkIHRoYXQgYSB0cmVlIG9mIGFsbCBtYXRoZW1hdGljYWwgcmVzdWx0cyBhbmQgdGVybWlub2xvZ3kgYmUgbWFpbnRhaW5lZCBpbiBhIG11bHRpdGVybWluYWwgY29tcHV0ZXIgc3lzdGVtLlxwYXIgVXNlcnMgb2YgdGhlIHN5c3RlbSBjYW4gc3RvcmUgaW4gdGhlIGNvbXB1dGVyIGFuIHVwZGF0ZWQgZmlsZSBvZiB0aGVpciBjdXJyZW50IGtub3dsZWRnZSwgYW5kIG9uIHNlbGVjdGluZyBhIHBhcGVyIHRvIHJlYWQsIHRoZXkgY2FuIG9idGFpbiBmcm9tIHRoZSBjb21wdXRlciB0aGUgbWluaW11bSBzdWJ0cmVlIG9mIHRoZW9yZW1zIHJlcXVpcmVkIHRvIGJyaW5nIHRoZW0gZnJvbSB3aGF0IHRoZXkgYWxyZWFkeSBrbm93IHRvIHRoZSBiYWNrZ3JvdW5kIGtub3dsZWRnZSB3aGljaCB0aGUgcGFwZXIgYXNzdW1lcy4gVW5kZXIgY2VydGFpbiBjb25kaXRpb25zLCBtZWFucyBhcmUgYWxzbyBwcm92aWRlZCBmb3IgdGhlIGNvbnRyaWJ1dGlvbiBvZiB1c2VmdWwgY29tbWVudHMgYnkgdGhlIHJlYWRlcnMgb2YgYSB3b3JrIGFuZCBmb3IgaW50ZXJhY3Rpb24gYmV0d2VlbiBjb21tZW50YXRvcnMgYW5kIHdpdGggdGhlIGF1dGhvci4gXHBhciBUaGlzIHBhcGVyIGRlc2NyaWJlcyBob3cgdGhlIHN5c3RlbSBjYW4gYmUgb3JnYW5pemVkIGFuZCB0aGUgcm9sZSByZXF1aXJlZCBvZiByZWFkZXJzLCB3cml0ZXJzLCBhbmQgY29tbWVudGF0b3JzLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM3MjUwIChJbmZvcm1hdGlvbiBzdG9yYWdlIGFuZCByZXRyaWV2YWwpIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gSGF3YWlpLCBIb25vbHVsdSwgSEksIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImNvbW1lbnRhdG9yczsgY29tcHV0ZXIgdXRpbGl0eTsgZGF0YSBzdHJ1Y3R1cmVzOyBpbmZvcm1hdGlvbiByZXRyaWV2YWw7IGludGVyYWN0aXZlIHN5c3RlbTsgb3JnYW5pemF0aW9uIG9mIHNjaWVudGlmaWMgY29tbXVuaXR5OyByZWFkZXJzOyB0cmVlczsgd3JpdGVycyIsCiAga2V5d29yZHMgPSAgICAgImNvbW1lbnRhdG9yczsgY29tcHV0ZXIgdXRpbGl0eTsgZGF0YSBzdHJ1Y3R1cmVzOyBpbmZvcm1hdGlvbiByZXRyaWV2YWw7IGluZm9ybWF0aW9uIHJldHJpZXZhbCBzeXN0ZW1zOyBpbnRlcmFjdGl2ZSBzeXN0ZW07IG9yZ2FuaXphdGlvbiBvZiBzY2llbnRpZmljIGNvbW11bml0eTsgcmVhZGVyczsgdHJlZXM7IHRyZWVzIChtYXRoZW1hdGljcyk7IHdyaXRlcnMiLAogIHRyZWF0bWVudCA9ICAgICJHIEdlbmVyYWwgUmV2aWV3IiwKfQoKQEFydGljbGV7RWFzdG1hbjoxOTcyOlBSUywKICBhdXRob3IgPSAgICAgICAiQy4gTS4gRWFzdG1hbiIsCiAgdGl0bGUgPSAgICAgICAgIlByZWxpbWluYXJ5IHJlcG9ydCBvbiBhIHN5c3RlbSBmb3IgZ2VuZXJhbCBzcGFjZSBwbGFubmluZyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjIiLAogIHBhZ2VzID0gICAgICAgICI3Ni0tODciLAogIG1vbnRoID0gICAgICAgIGZlYiwKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjE0MEQgKEhpZ2ggbGV2ZWwgbGFuZ3VhZ2VzKTsgQzc0MDAgKEVuZ2luZWVyaW5nIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJDYXJuZWdpZS1NZWxsb24gVW5pdi4sIFBpdHRzYnVyZ2gsIFBBLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJBTEdPTDsgYXJjaGl0ZWN0czsgQ0FEOyBjb21wdXRlciBsYW5ndWFnZTsgY29tcHV0ZXItYWlkZWQgZGVzaWduOyBlbmdpbmVlcmluZzsgZXh0ZW5zaW9uIG9mIEFMR09MOyBnZW5lcmFsIHNwYWNlIHBsYW5uaW5nOyBoZXVyaXN0aWMgcHJvZ3JhbW1pbmc7IG9ydGhvZ3JhcGhpYyBkcmF3aW5nczsgc2V0IG9mIHByb2dyYW1zOyB1cmJhbiBkZXNpZ25lcnMiLAogIHRyZWF0bWVudCA9ICAgICJHIEdlbmVyYWwgUmV2aWV3OyBQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle01hcnRpbjoxOTcyOk9CVCwKICBhdXRob3IgPSAgICAgICAiVy4gQS4gTWFydGluIGFuZCBELiBOLiBOZXNzIiwKICB0aXRsZSA9ICAgICAgICAiT3B0aW1pemluZyBCaW5hcnkgVHJlZXMgR3Jvd24gd2l0aCBhIFN0b3JpbmcgQWxnb3JpdGhtIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiMiIsCiAgcGFnZXMgPSAgICAgICAgIjg4LS05MyIsCiAgbW9udGggPSAgICAgICAgZmViLAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgImZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGF0YWJhc2UvV2llZGVyaG9sZC5iaWIiLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKSIsCiAgY29ycHNvdXJjZSA9ICAgIk1JVCwgQ2FtYnJpZGdlLCBNQSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiYWxnb3JpdGhtOyBiaW5hcnkgdHJlZXM7IGRhdGEgaGFuZGxpbmc7IG9wdGltaXNhdGlvbjsgb3B0aW1pemF0aW9uOyByZWN1cnNpb247IHJldHJpZXZpbmcgaW5mb3JtYXRpb247IHNvcnRpbmc7IHRyZWVzIChtYXRoZW1hdGljcykiLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle09sZGVob2VmdDoxOTcyOk1DUCwKICBhdXRob3IgPSAgICAgICAiQS4gRS4gT2xkZWhvZWZ0IGFuZCBNLiBILiBIYWxzdGVhZCIsCiAgdGl0bGUgPSAgICAgICAgIk1heGltdW0gY29tcHV0aW5nIHBvd2VyIGFuZCBjb3N0IGZhY3RvcnMgaW4gdGhlIGNlbnRyYWxpemF0aW9uIHByb2JsZW0iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTUiLAogIG51bWJlciA9ICAgICAgICIyIiwKICBwYWdlcyA9ICAgICAgICAiOTQtLTk2IiwKICBtb250aCA9ICAgICAgICBmZWIsCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzAzMTAgKEVEUCBtYW5hZ2VtZW50KSIsCiAgY29ycHNvdXJjZSA9ICAgIklvd2EgU3RhdGUgVW5pdi4sIEFtZXMsIElBLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJjZW50cmFsaXNhdGlvbjsgY29tcHV0ZXIgbWFuYWdlbWVudDsgY29zdCBmYWN0b3JzOyBkZWNlbnRyYWxpc2F0aW9uOyBlY29ub21pY3M7IGVjb25vbWllcyBvZiBzY2FsZTsgaW5zdGFsbGF0aW9uczsgbGFyZ2Ugc2luZ2xlIG1hY2hpbmUgaW5zdGFsbGF0aW9uczsgbWFuYWdlbWVudDsgbWF4aW11bSBjb21wdXRpbmcgcG93ZXI7IG11bHRpbWFjaGluZSIsCiAgdHJlYXRtZW50ID0gICAgIkUgRWNvbm9taWMiLAp9CgpAQXJ0aWNsZXtKZW5raW5zOjE5NzI6QUFaLAogIGF1dGhvciA9ICAgICAgICJNLiBBLiBKZW5raW5zIGFuZCBKLiBGLiBUcmF1YiIsCiAgdGl0bGUgPSAgICAgICAgIntBQ019IEFsZ29yaXRobSA0MTk6IFplcm9zIG9mIGEgQ29tcGxleCBQb2x5bm9taWFsIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiMiIsCiAgcGFnZXMgPSAgICAgICAgIjk3LS05OSIsCiAgbW9udGggPSAgICAgICAgZmViLAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MTUwIChOb25saW5lYXIgYW5kIGZ1bmN0aW9uYWwgZXF1YXRpb25zKTsgQzczMTAgKE1hdGhlbWF0aWNzIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJRdWVlbidzIFVuaXYuLCBLaW5nc3RvbiwgT250LiwgQ2FuYWRhIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcGxleCBwb2x5bm9taWFsOyBGT1JUUkFOOyBwb2xlcyBhbmQgemVyb3M7IHBvbHlub21pYWxzOyByb290czsgc3Vicm91dGluZTsgc3Vicm91dGluZXM7IHplcm9zIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtXaWxsaWFtc29uOjE5NzI6QUFILAogIGF1dGhvciA9ICAgICAgICJILiBXaWxsaWFtc29uIiwKICB0aXRsZSA9ICAgICAgICAie0FDTX0gQWxnb3JpdGhtIDQyMDogSGlkZGVuLUxpbmUgUGxvdHRpbmcgUHJvZ3JhbSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjIiLAogIHBhZ2VzID0gICAgICAgICIxMDAtLTEwMyIsCiAgbW9udGggPSAgICAgICAgZmViLAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgImZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGlzdHJpYnV0ZWQvUUxELzE5NzIuYmliIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMzAgKERhdGEgaGFuZGxpbmcgdGVjaG5pcXVlcykiLAogIGNvcnBzb3VyY2UgPSAgICJUcmFjb3IgQ29tcHV0aW5nIENvcnAuLCBBdXN0aW4sIFRYLCBVU0EiLAogIGRlc2NyaXB0b3JzID0gICJGb3J0cmFuOyBncmFwaGljczsgaXRlcmF0aXZlIG1ldGhvZDsgYXBwbGljYXRpb247IG1ldGhvZDsgaHVtYW4gZmFjdG9yczsgZGlhZ3JhbSBtYW5pcHVsYXRpb247IGhpZGRlbiBsaW5lIGFsZ29yaXRobTsiLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBncmFwaGljczsgZGF0YSBoYW5kbGluZzsgRk9SVFJBTjsgaGlkZGVuIGxpbmUgcGxvdHRpbmc7IHN1YnJvdXRpbmU7IHN1YnJvdXRpbmVzOyBzdXJmYWNlIHBsb3QiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle01vb3JlcjoxOTcyOk1DQywKICBhdXRob3IgPSAgICAgICAiSi4gQS4gTW9vcmVyIiwKICB0aXRsZSA9ICAgICAgICAiTXVzaWMgYW5kIGNvbXB1dGVyIGNvbXBvc2l0aW9uIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiMiIsCiAgcGFnZXMgPSAgICAgICAgIjEwNC0tMTEzIiwKICBtb250aCA9ICAgICAgICBmZWIsCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzEyMzAgKEFydGlmaWNpYWwgaW50ZWxsaWdlbmNlKTsgQzc4MjAgKEh1bWFuaXRpZXMgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIlN0YW5mb3JkIFVuaXYuLCBDQSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2U7IGNvbXBvc2l0aW9uOyBjb21wdXRlciBtdXNpYzsgaGFybW9ueTsgaGV1cmlzdGljOyBodW1hbml0aWVzOyBtb2RlbHMgb2YgY29nbml0aXZlIHByb2Nlc3NlczsgbXVzaWMgdGhlb3J5OyBwcm9ncmFtOyBwcm9ncmFtbWluZyIsCiAgdHJlYXRtZW50ID0gICAgIkcgR2VuZXJhbCBSZXZpZXciLAp9CgpAQXJ0aWNsZXtGbG9yZXM6MTk3MjpDQUIsCiAgYXV0aG9yID0gICAgICAgIkl2YW4gRmxvcmVzIGFuZCBHZW9yZ2UgTWFkcGlzIiwKICB0aXRsZSA9ICAgICAgICAiQ29ycmlnZW5kdW06IHtgYEF2ZXJhZ2UgQmluYXJ5IFNlYXJjaCBMZW5ndGggZm9yIERlbnNlIE9yZGVyZWQgTGlzdHMnJ30iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTUiLAogIG51bWJlciA9ICAgICAgICIyIiwKICBwYWdlcyA9ICAgICAgICAiMTEzLS0xMTMiLAogIG1vbnRoID0gICAgICAgIGZlYiwKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIkZyaSBKYW4gMTcgMTg6Mzc6NDYgMTk5NyIsCiAgbm90ZSA9ICAgICAgICAgIlNlZSBcY2l0ZXtGbG9yZXM6MTk3MTpBQlN9LiIsCn0KCkBBcnRpY2xle0dvcmRvbjoxOTcyOkNSUCwKICBhdXRob3IgPSAgICAgICAiUmljaGFyZCBHb3Jkb24gYW5kIEdhYm9yIFQuIEhlcm1hbiIsCiAgdGl0bGUgPSAgICAgICAgIkNvcnJpZ2VuZHVtOiB7YGBSZWNvbnN0cnVjdGlvbiBvZiBQaWN0dXJlcyBmcm9tIFRoZWlyIFByb2plY3Rpb25zJyd9IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiMiIsCiAgcGFnZXMgPSAgICAgICAgIjExMy0tMTEzIiwKICBtb250aCA9ICAgICAgICBmZWIsCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJGcmkgSmFuIDE3IDE4OjM4OjMwIDE5OTciLAogIG5vdGUgPSAgICAgICAgICJTZWUgXGNpdGV7R29yZG9uOjE5NzE6UlBUfS4iLAp9CgpAQXJ0aWNsZXtBbm9ueW1vdXM6MTk3MjpQQVMsCiAgYXV0aG9yID0gICAgICAgIkFub255bW91cyIsCiAgdGl0bGUgPSAgICAgICAgIlBhcGVycyBmcm9tIHRoZSAzcmQge0FDTX0gc3ltcG9zaXVtIG9uIG9wZXJhdGluZyBzeXN0ZW1zIHByaW5jaXBsZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTUiLAogIG51bWJlciA9ICAgICAgICIzIiwKICBwYWdlcyA9ICAgICAgICAiPz8tLT8/IiwKICBtb250aCA9ICAgICAgICBtYXIsCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxNTBKIChPcGVyYXRpbmcgc3lzdGVtcykiLAogIGNvbmZsb2NhdGlvbiA9ICJQYWxvIEFsdG8sIENBLCBVU0E7IDE4LTIwIE9jdC4gMTk3MSIsCiAgY29uZnRpdGxlID0gICAgIlBhcGVycyBmcm9tIHRoZSAzcmQgQUNNIHN5bXBvc2l1bSBvbiBvcGVyYXRpbmcgc3lzdGVtcyBwcmluY2lwbGVzIiwKICBrZXl3b3JkcyA9ICAgICAiYWNjZXNzOyBjb21wdXRlcjsgb3BlcmF0aW5nIHN5c3RlbXM7IG9wZXJhdGluZyBzeXN0ZW1zIChjb21wdXRlcnMpOyBwYXJhbGxlbCBwcm9jZXNzaW5nIHN1cGVydmlzb3J5OyBwYXJ0aXRpb25pbmc7IHN0b3JhZ2U7IHRpbWUgc2hhcmluZyBzeXN0ZW1zIiwKICBzcG9uc29yb3JnID0gICAiQXNzb2MuIENvbXB1dGluZyBtYWNoaW5lcnkiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbDsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtCb2Jyb3c6MTk3MjpUUFQsCiAgYXV0aG9yID0gICAgICAgIkQuIEcuIEJvYnJvdyBhbmQgSi4gRC4gQnVyY2hmaWVsIGFuZCBELiBMLiBNdXJwaHkgYW5kIFIuIFMuIFRvbWxpbnNvbiIsCiAgdGl0bGUgPSAgICAgICAgIntURU5FWH0sIHtBfSBQYWdlZCBUaW1lLVNoYXJpbmcgU3lzdGVtIGZvciB0aGUge1BEUC0xMH0iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTUiLAogIG51bWJlciA9ICAgICAgICIzIiwKICBwYWdlcyA9ICAgICAgICAiMTM1LS0xNDMiLAogIG1vbnRoID0gICAgICAgIG1hciwKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0RhdGFiYXNlL1dpZWRlcmhvbGQuYmliIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBhbm5vdGUgPSAgICAgICAiSW5jbHVkZXMgZGVzY3JpcHRpb24gb2YgZmlsZSBzeXN0ZW0gYXNwZWN0cyBhbmQgcHJvdGVjdGlvbi4iLAogIGNsYXNzY29kZXMgPSAgICJDNjE1MEogKE9wZXJhdGluZyBzeXN0ZW1zKSIsCiAgY29uZmxvY2F0aW9uID0gIlBhbG8gQWx0bywgQ0EsIFVTQTsgMTgtMjAgT2N0LiAxOTcxIiwKICBjb25mdGl0bGUgPSAgICAiUGFwZXJzIGZyb20gdGhlIDNyZCBBQ00gc3ltcG9zaXVtIG9uIG9wZXJhdGluZyBzeXN0ZW1zIHByaW5jaXBsZXMiLAogIGNvcnBzb3VyY2UgPSAgICJDb21wdXRlciBTY2kuIERpdi4sIENhbWJyaWRnZSwgVUsiLAogIGtleXdvcmRzID0gICAgICJtaW5pY29tcHV0ZXJzOyBwYWdlZCB0aW1lIHNoYXJpbmcgc3lzdGVtOyBQRFAgMTA7IFRFTkVYOyB0aW1lLXNoYXJpbmcgcHJvZ3JhbXMiLAogIHNwb25zb3JvcmcgPSAgICJBc3NvYy4gQ29tcHV0aW5nIG1hY2hpbmVyeSIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7TGlza292OjE5NzI6RFZPLAogIGF1dGhvciA9ICAgICAgICJCLiBILiBMaXNrb3YiLAogIHRpdGxlID0gICAgICAgICJUaGUgRGVzaWduIG9mIHRoZSB7VmVudXN9IE9wZXJhdGluZyBTeXN0ZW0iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTUiLAogIG51bWJlciA9ICAgICAgICIzIiwKICBwYWdlcyA9ICAgICAgICAiMTQ0LS0xNDkiLAogIG1vbnRoID0gICAgICAgIG1hciwKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L01pc2Mvb3MuYmliIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzUyMjAgKENvbXB1dGVyIGFyY2hpdGVjdHVyZSk7IEM2MTUwSiAoT3BlcmF0aW5nIHN5c3RlbXMpIiwKICBjb25mbG9jYXRpb24gPSAiUGFsbyBBbHRvLCBDQSwgVVNBOyAxOC0yMCBPY3QuIDE5NzEiLAogIGNvbmZ0aXRsZSA9ICAgICJQYXBlcnMgZnJvbSB0aGUgM3JkIEFDTSBzeW1wb3NpdW0gb24gb3BlcmF0aW5nIHN5c3RlbXMgcHJpbmNpcGxlcyIsCiAgY29ycHNvdXJjZSA9ICAgIk1JVFJFIENvcnBvcmF0aW9uLiBCZWRmb3JkLCBNQSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiYXJjaGl0ZWN0dXJlOyBjb21wdXRlciBhcmNoaXRlY3R1cmU7IG9wZXJhdGluZyBzeXN0ZW1zIChjb21wdXRlcnMpOyBzbWFsbCBjb21wdXRlcjsgc29mdHdhcmU7IFZlbnVzIG9wZXJhdGluZyBzeXN0ZW0iLAogIHNwb25zb3JvcmcgPSAgICJBc3NvYy4gQ29tcHV0aW5nIG1hY2hpbmVyeSIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7R2FpbnM6MTk3MjpPU0IsCiAgYXV0aG9yID0gICAgICAgIlIuIFN0b2NrdG9uIEdhaW5zIiwKICB0aXRsZSA9ICAgICAgICAiQW4gb3BlcmF0aW5nIHN5c3RlbSBiYXNlZCBvbiB0aGUgY29uY2VwdCBvZiBhIHN1cGVydmlzb3J5IGNvbXB1dGVyIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiMyIsCiAgcGFnZXMgPSAgICAgICAgIjE1MC0tMTU2IiwKICBtb250aCA9ICAgICAgICBtYXIsCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxNTBKIChPcGVyYXRpbmcgc3lzdGVtcykiLAogIGNvbmZsb2NhdGlvbiA9ICJQYWxvIEFsdG8sIENBLCBVU0E7IDE4LTIwIE9jdC4gMTk3MSIsCiAgY29uZnRpdGxlID0gICAgIlBhcGVycyBmcm9tIHRoZSAzcmQgQUNNIHN5bXBvc2l1bSBvbiBvcGVyYXRpbmcgc3lzdGVtcyBwcmluY2lwbGVzIiwKICBjb3Jwc291cmNlID0gICAiSW5zdC4gRGVmZW5zZSBBbmFseXNlcywgdm9uIE5ldW1hbm4gSGFsbCwgUHJpbmNldG9uLCBOSiwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiaW5kZXBlbmRlbnQ7IG9wZXJhdGluZyBzeXN0ZW07IG9wZXJhdGluZyBzeXN0ZW1zIChjb21wdXRlcnMpOyBwcm9jZXNzZXM7IHN1cGVydmlzb3J5IGNvbXB1dGVyIiwKICBzcG9uc29yb3JnID0gICAiQXNzb2MuIENvbXB1dGluZyBtYWNoaW5lcnkiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbDsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtTY2hyb2VkZXI6MTk3MjpIQUksCiAgYXV0aG9yID0gICAgICAgIk1pY2hhZWwgRC4gU2Nocm9lZGVyIGFuZCBKZXJvbWUgSC4gU2FsdHplciIsCiAgdGl0bGUgPSAgICAgICAgIkEgSGFyZHdhcmUgQXJjaGl0ZWN0dXJlIGZvciBJbXBsZW1lbnRpbmcgUHJvdGVjdGlvbiBSaW5ncyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjMiLAogIHBhZ2VzID0gICAgICAgICIxNTctLTE3MCIsCiAgbW9udGggPSAgICAgICAgbWFyLAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgImZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGF0YWJhc2UvV2llZGVyaG9sZC5iaWIiLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNTIyMCAoQ29tcHV0ZXIgYXJjaGl0ZWN0dXJlKSIsCiAgY29uZmxvY2F0aW9uID0gIlBhbG8gQWx0bywgQ0EsIFVTQTsgMTgtMjAgT2N0LiAxOTcxIiwKICBjb25mdGl0bGUgPSAgICAiUGFwZXJzIGZyb20gdGhlIDNyZCBBQ00gc3ltcG9zaXVtIG9uIG9wZXJhdGluZyBzeXN0ZW1zIHByaW5jaXBsZXMiLAogIGNvcnBzb3VyY2UgPSAgICJNSVQsIENhbWJyaWRnZSwgTUEsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImFjY2VzcyBjb250cm9sOyBhY2Nlc3MgcHJpdmlsZWdlczsgYXJjaGl0ZWN0dXJlOyBjb21wdXRlciBhcmNoaXRlY3R1cmU7IGRpZ2l0YWwgc3RvcmFnZTsgTXVsdGljczsgcHJvdGVjdGlvbiByaW5nczsgc3lzdGVtIiwKICBzcG9uc29yb3JnID0gICAiQXNzb2MuIENvbXB1dGluZyBtYWNoaW5lcnkiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0hhYmVybWFubjoxOTcyOlNDUCwKICBhdXRob3IgPSAgICAgICAiQS4gTmljbyBIYWJlcm1hbm4iLAogIHRpdGxlID0gICAgICAgICJTeW5jaHJvbml6YXRpb24gb2YgQ29tbXVuaWNhdGluZyBQcm9jZXNzZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTUiLAogIG51bWJlciA9ICAgICAgICIzIiwKICBwYWdlcyA9ICAgICAgICAiMTcxLS0xNzYiLAogIG1vbnRoID0gICAgICAgIG1hciwKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L09iamVjdC9OaWVyc3RyYXN6LmJpYiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTUwSiAoT3BlcmF0aW5nIHN5c3RlbXMpIiwKICBjb25mbG9jYXRpb24gPSAiUGFsbyBBbHRvLCBDQSwgVVNBOyAxOC0yMCBPY3QuIDE5NzEiLAogIGNvbmZ0aXRsZSA9ICAgICJQYXBlcnMgZnJvbSB0aGUgM3JkIEFDTSBzeW1wb3NpdW0gb24gb3BlcmF0aW5nIHN5c3RlbXMgcHJpbmNpcGxlcyIsCiAgY29ycHNvdXJjZSA9ICAgIkNhcm5lZ2llLU1lbGxvbiBVbml2LiwgUGl0dHNidXJnLCBQQSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiYnVmZmVyIHN0b3JlOyBjb21tdW5pY2F0aW9uOyBjb25jdXJyZW5jeTsgb3BlcmF0aW5nIHN5c3RlbXMgKGNvbXB1dGVycyk7IHBhcmFsbGVsIHByb2Nlc3NlczsgcGFyYWxsZWwgcHJvY2Vzc2luZzsgc3luY2hyb25pc2F0aW9uOyBzeW5jaHJvbml6YXRpb24iLAogIHNwb25zb3JvcmcgPSAgICJBc3NvYy4gQ29tcHV0aW5nIG1hY2hpbmVyeSIsCn0KCkBBcnRpY2xle1Rlb3JleToxOTcyOkNBRCwKICBhdXRob3IgPSAgICAgICAiVG9ieSBKLiBUZW9yZXkgYW5kIFRhZCBCLiBQaW5rZXJ0b24iLAogIHRpdGxlID0gICAgICAgICJBIENvbXBhcmF0aXZlIEFuYWx5c2lzIG9mIERpc2sgU2NoZWR1bGluZyBQb2xpY2llcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjMiLAogIHBhZ2VzID0gICAgICAgICIxNzctLTE4NCIsCiAgbW9udGggPSAgICAgICAgbWFyLAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgImZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGF0YWJhc2UvV2llZGVyaG9sZC5iaWI7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvTWlzYy9pcy5iaWIiLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGFubm90ZSA9ICAgICAgICJBbmFseXNpcywgZGVzaWduIG9mIGhhcmR3YXJlLiBNaW5pbWl6aW5nIHNlZWtzIGFuZCBsYXRlbmNpZXMuIiwKICBjbGFzc2NvZGVzID0gICAiQzYxNTBKIChPcGVyYXRpbmcgc3lzdGVtcykiLAogIGNvbmZsb2NhdGlvbiA9ICJQYWxvIEFsdG8sIENBLCBVU0E7IDE4LTIwIE9jdC4gMTk3MSIsCiAgY29uZnRpdGxlID0gICAgIlBhcGVycyBmcm9tIHRoZSAzcmQgQUNNIHN5bXBvc2l1bSBvbiBvcGVyYXRpbmcgc3lzdGVtcyBwcmluY2lwbGVzIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gV2lzY29uc2luLCBNYWRpc29uLCBXSSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiY3JpdGVyaWE7IGRpc2sgc2NoZWR1bGluZyBwb2xpY2llczsgbWFnbmV0aWMgc3RvcmFnZSBzeXN0ZW1zOyBtdWx0aXByb2dyYW1taW5nOyBwZXJmb3JtYW5jZTsgc2VlayB0aW1lOyB3YWl0aW5nIHRpbWUiLAogIHNwb25zb3JvcmcgPSAgICJBc3NvYy4gQ29tcHV0aW5nIG1hY2hpbmVyeSIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7Q29mZm1hbjoxOTcyOlNTUCwKICBhdXRob3IgPSAgICAgICAiRS4gRy4ge0NvZmZtYW4sIEpyLn0gYW5kIFQuIEEuIHtSeWFuLCBKci59IiwKICB0aXRsZSA9ICAgICAgICAiQSBzdHVkeSBvZiBzdG9yYWdlIHBhcnRpdGlvbmluZyB1c2luZyBhIG1hdGhlbWF0aWNhbCBtb2RlbCBvZiBsb2NhbGl0eSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjMiLAogIHBhZ2VzID0gICAgICAgICIxODUtLTE5MCIsCiAgbW9udGggPSAgICAgICAgbWFyLAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgImZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvTWlzYy9jYWNoZS5iaWIiLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDMTIyMCAoU2ltdWxhdGlvbiwgbW9kZWxsaW5nIGFuZCBpZGVudGlmaWNhdGlvbik7IEM2MTUwSiAoT3BlcmF0aW5nIHN5c3RlbXMpIiwKICBjb25mbG9jYXRpb24gPSAiUGFsbyBBbHRvLCBDQSwgVVNBOyAxOC0yMCBPY3QuIDE5NzEiLAogIGNvbmZ0aXRsZSA9ICAgICJQYXBlcnMgZnJvbSB0aGUgM3JkIEFDTSBzeW1wb3NpdW0gb24gb3BlcmF0aW5nIHN5c3RlbXMgcHJpbmNpcGxlcyIsCiAgY29ycHNvdXJjZSA9ICAgIlBlbm5zeWx2YW5pYSBTdGF0ZSBVbml2LiwgVW5pdmVyc2l0eSBQYXJrLCBQQSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiZHluYW1pYzsgZml4ZWQ7IG1hdGhlbWF0aWNhbCBtb2RlbCBvZiBsb2NhbGl0eTsgbW9kZWxsaW5nOyBtdWx0aXByb2dyYW1taW5nOyBzdG9yYWdlIGFsbG9jYXRpb247IHN0b3JhZ2UgcGFydGl0aW9uaW5nIiwKICBzcG9uc29yb3JnID0gICAiQXNzb2MuIENvbXB1dGluZyBtYWNoaW5lcnkiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0Rlbm5pbmc6MTk3MjpQV1MsCiAgYXV0aG9yID0gICAgICAgIlBldGVyIEouIERlbm5pbmcgYW5kIFN0dWFydCBDLiBTY2h3YXJ0eiIsCiAgdGl0bGUgPSAgICAgICAgIlByb3BlcnRpZXMgb2YgdGhlIHdvcmtpbmctc2V0IG1vZGVsIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiMyIsCiAgcGFnZXMgPSAgICAgICAgIjE5MS0tMTk4IiwKICBtb250aCA9ICAgICAgICBtYXIsCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2OEEwNSIsCiAgTVJudW1iZXIgPSAgICAgIjQ3IDYxMTkiLAogIG1ycmV2aWV3ZXIgPSAgICJBLiBELiBCb290aCIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIG5vdGUgPSAgICAgICAgICJTZWUgY29ycmlnZW5kdW0gXGNpdGV7RGVubmluZzoxOTczOkNXTX0uIiwKICBhYnN0cmFjdCA9ICAgICAiQSBwcm9ncmFtJ3Mgd29ya2luZyBzZXQgJFcodCxUKSQgYXQgdGltZSAkdCQgaXMgdGhlIHNldCBvZiBkaXN0aW5jdCBwYWdlcyBhbW9uZyB0aGUgVCBtb3N0IHJlY2VudGx5IHJlZmVyZW5jZWQgcGFnZXMuIFJlbGF0aW9ucyBiZXR3ZWVuIHRoZSBhdmVyYWdlIHdvcmtpbmctc2V0IHNpemUsIHRoZSBtaXNzaW5nLXBhZ2UgcmF0ZSwgYW5kIHRoZSBpbnRlcnJlZmVyZW5jZS1pbnRlcnZhbCBkaXN0cmlidXRpb24gbWF5IGJlIGRlcml2ZWQgYm90aCBmcm9tIHRpbWUtYXZlcmFnZSBkZWZpbml0aW9ucyBhbmQgZnJvbSBlbnNlbWJsZS1hdmVyYWdlIChzdGF0aXN0aWNhbCkgZGVmaW5pdGlvbnMuIEFuIGVmZmljaWVudCBhbGdvcml0aG0gZm9yIGVzdGltYXRpbmcgdGhlc2UgcXVhbnRpdGllcyBpcyBnaXZlbi4gVGhlIHJlbGF0aW9uIHRvIExSVSAobGVhc3QgcmVjZW50bHkgdXNlZCkgcGFnaW5nIGlzIGNoYXJhY3Rlcml6ZWQuIFRoZSBpbmRlcGVuZGVudC1yZWZlcmVuY2UgbW9kZWwsIGluIHdoaWNoIHBhZ2UgcmVmZXJlbmNlcyBhcmUgc3RhdGlzdGljYWxseSBpbmRlcGVuZGVudCwgaXMgdXNlZCB0byBhc3Nlc3MgdGhlIGVmZmVjdHMgdG8gaW50ZXJwYWdlIGRlcGVuZGVuY2llcyBvbiB3b3JraW5nLXNldCBzaXplIG9ic2VydmF0aW9ucy4gVW5kZXIgZ2VuZXJhbCBhc3N1bXB0aW9ucywgd29ya2luZy1zZXQgc2l6ZSBpcyBzaG93biB0byBiZSBub3JtYWxseSBkaXN0cmlidXRlZC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDI5MCAoT3RoZXIgY29tcHV0ZXIgdGhlb3J5KSIsCiAgY29uZmxvY2F0aW9uID0gIlBhbG8gQWx0bywgQ0EsIFVTQTsgMTgtMjAgT2N0LiAxOTcxIiwKICBjb25mdGl0bGUgPSAgICAiUGFwZXJzIGZyb20gdGhlIDNyZCBBQ00gc3ltcG9zaXVtIG9uIG9wZXJhdGluZyBzeXN0ZW1zIHByaW5jaXBsZXMiLAogIGNvcnBzb3VyY2UgPSAgICJQcmluY2V0b24gVW5pdi4sIE5KLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJwYWdpbmc7IHBhZ2luZyBhbGdvcml0aG1zOyBwcm9ncmFtIGJlaGF2aW9yOyBwcm9ncmFtIG1vZGVsaW5nOyB3b3JraW5nLXNldCBtb2RlbCIsCiAga2V5d29yZHMgPSAgICAgIm1vZGVsOyBtb2RlbGxpbmc7IHBhZ2luZzsgcHJvZ3JhbW1pbmcgdGhlb3J5OyBzdXBlcnZpc29yeSBwcm9ncmFtczsgd29ya2luZyBzZXQiLAogIHNwb25zb3JvcmcgPSAgICJBc3NvYy4gQ29tcHV0aW5nIG1hY2hpbmVyeSIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7Q29ud2F5OjE5NzI6SVNNLAogIGF1dGhvciA9ICAgICAgICJSLiBXLiBDb253YXkgYW5kIFcuIEwuIE1heHdlbGwgYW5kIEguIEwuIE1vcmdhbiIsCiAgdGl0bGUgPSAgICAgICAgIk9uIHRoZSBJbXBsZW1lbnRhdGlvbiBvZiBTZWN1cml0eSBNZWFzdXJlcyBpbiBJbmZvcm1hdGlvbiBTeXN0ZW1zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiNCIsCiAgcGFnZXMgPSAgICAgICAgIjIxMS0tMjIwIiwKICBtb250aCA9ICAgICAgICBhcHIsCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EYXRhYmFzZS9XaWVkZXJob2xkLmJpYiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTMwIChEYXRhIGhhbmRsaW5nIHRlY2huaXF1ZXMpIiwKICBjb3Jwc291cmNlID0gICAiQ29ybmVsbCBVbml2LiwgSXRoYWNhLCBOWSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiYWNjZXNzIGNvbnRyb2wgY29uZmlkZW50aWFsaXR5OyBhY2Nlc3MgbWFuYWdlbWVudDsgZGF0YSBiYW5rczsgaW5mb3JtYXRpb24gc3lzdGVtczsgbWFuYWdlbWVudDsgbW9kZWw7IG1vZGVsbGluZzsgb3BlcmF0aW5nIHN5c3RlbXM7IHByaXZhY3k7IHNlY3VyaXR5OyBzZWN1cml0eSBvZiBkYXRhIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtXYWxkZW46MTk3MjpTSUMsCiAgYXV0aG9yID0gICAgICAgIkQuIEMuIFdhbGRlbiIsCiAgdGl0bGUgPSAgICAgICAgIkEgc3lzdGVtIGZvciBpbnRlcnByb2Nlc3MgY29tbXVuaWNhdGlvbiBpbiBhIHJlc291cmNlIHNoYXJpbmcgY29tcHV0ZXIgbmV0d29yayIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjQiLAogIHBhZ2VzID0gICAgICAgICIyMjEtLTIzMCIsCiAgbW9udGggPSAgICAgICAgYXByLAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgImZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGlzdHJpYnV0ZWQvUUxELzE5NzIuYmliIGFuZCBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0Rpc3RyaWJ1dGVkL25ldHdvcmsuYmliIiwKICBub3RlID0gICAgICAgICAiUmVwcm9kdWNlZCBpbiBgYEFkdmFuY2VzIGluIENvbXB1dGVyIENvbW11bmljYXRpb25zJycsIFcuIFcuIENodSwgKEVkLiksICgxOTc0KSwgMzQwLS0zNDkuIiwKICBhYnN0cmFjdCA9ICAgICAiQSBzeXN0ZW0gb2YgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIHByb2Nlc3NlcyBpbiBhIHRpbWUtc2hhcmluZyBzeXN0ZW0gaXMgZGVzY3JpYmVkIGFuZCB0aGUgY29tbXVuaWNhdGlvbiBzeXN0ZW0gaXMgZXh0ZW5kZWQgc28gdGhhdCBpdCBtYXkgYmUgdXNlZCBiZXR3ZWVuIHByb2Nlc3NlcyBkaXN0cmlidXRlZCB0aHJvdWdob3V0IGEgY29tcHV0ZXIgbmV0d29yay4gXHBhciBUaGUgaHlwb3RoZXRpY2FsIGFwcGxpY2F0aW9uIG9mIHRoZSBzeXN0ZW0gdG8gYW4gZXhpc3RpbmcgbmV0d29yayBpcyBkaXNjdXNzZWQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBhbm5vdGUgPSAgICAgICAiQSBzeXN0ZW0gb2YgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIHByb2Nlc3NlcyBpbiBhIHRpbWUtc2hhcmluZyBzeXN0ZW0gaXMgZGVzY3JpYmVkIGFuZCB0aGUgY29tbXVuaWNhdGlvbiBpcyBleHRlbmRlZCBzbyB0aGF0IGl0IG1heSBiZSB1c2VkIGJldHdlZW4gcHJvY2Vzc2VzIGRpc3RyaWJ1dGVkIHRocm91Z2hvdXQgYSBjb21wdXRlciBuZXR3b3JrLiBUaGUgaHlwb3RoZXRpY2FsIGFwcGxpY2F0aW9uIG9mIHRoZSBzeXN0ZW0gdG8gYW4gZXhpc3RpbmcgbmV0d29yayBpcyBkaXNjdXNzZWQuIiwKICBjbGFzc2NvZGVzID0gICAiQzU0OTAgKE90aGVyIGFzcGVjdHMgb2YgYW5hbG9ndWUgYW5kIGRpZ2l0YWwgY29tcHV0ZXJzKTsgQzU2MjAgKENvbXB1dGVyIG5ldHdvcmtzIGFuZCB0ZWNobmlxdWVzKSIsCiAgY29ycHNvdXJjZSA9ICAgIkJvbHQgQmVyYW5layBhbmQgTmV3bWFuIEluYy4sIENhbWJyaWRnZSwgTUEsIFVTQSIsCiAgY291bnRyeSA9ICAgICAgIlVTQSIsCiAgZGVzY3JpcHRvcnMgPSAgIlJlc291cmNlIG1hbmFnZW1lbnQ7IGNvbXB1dGVyIG5ldHdvcms7IHRpbWUgc2hhcmluZzsgaW50ZXJwcm9jZXNzIGNvbW11bmljYXRpb247IiwKICBlbnVtID0gICAgICAgICAiMzIxMyIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIG5ldHdvcmtzOyBkaWdpdGFsIGNvbW11bmljYXRpb24gc3lzdGVtczsgaHlwb3RoZXRpY2FsIGFwcGxpY2F0aW9uOyBpbnRlcnByb2Nlc3MgY29tbXVuaWNhdGlvbjsgcmVzb3VyY2Ugc2hhcmluZzsgdGltZSBzaGFyaW5nOyB0aW1lLXNoYXJpbmc7IHRpbWUtc2hhcmluZyBzeXN0ZW1zIiwKICBsYW5ndWFnZSA9ICAgICAiRW5nbGlzaCIsCiAgcmVmZXJlbmNlcyA9ICAgIjEwIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtIZXJic3Q6MTk3MjpFTFAsCiAgYXV0aG9yID0gICAgICAgIk4uIE0uIEhlcmJzdCBhbmQgUC4gTS4gV2lsbCIsCiAgdGl0bGUgPSAgICAgICAgIkFuIGV4cGVyaW1lbnRhbCBsYWJvcmF0b3J5IGZvciBwYXR0ZXJuIHJlY29nbml0aW9uIGFuZCBzaWduYWwgcHJvY2Vzc2luZyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjQiLAogIHBhZ2VzID0gICAgICAgICIyMzEtLTI0NCIsCiAgbW9udGggPSAgICAgICAgYXByLAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM1NDkwIChPdGhlciBhc3BlY3RzIG9mIGFuYWxvZ3VlIGFuZCBkaWdpdGFsIGNvbXB1dGVycykiLAogIGNvcnBzb3VyY2UgPSAgICJJQk0gVGhvbWFzIEouIFdhdHNvbiBSZXMuIENlbnRlciwgWW9ya3Rvd24gSGVpZ2h0cywgTlksIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImFuYWxvZ3VlIGlucHV0IGFuZCBvdXRwdXQgZmFjaWxpdGllczsgY29tcHV0ZXI7IGRlc2lnbjsgZGlzcGxheSBzeXN0ZW1zOyBpbWFnZTsgaW50ZXJhY3RpdmUgdGVybWluYWw7IHBhdHRlcm4gcmVjb2duaXRpb247IHByb2Nlc3MgY29udHJvbCBkaWdpdGFsOyBwcm9jZXNzaW5nOyBwcm9ncmFtbWluZyBzdXBwb3J0OyBwc2V1ZG9yYW5kb20gZGlzcGxheXM7IHNjYW5uZXIgY29udHJvbDsgc2Nhbm5lcnM7IHNpZ25hbCBwcm9jZXNzaW5nOyBzeXN0ZW07IFRWIGNhbWVyYSIsCiAgdHJlYXRtZW50ID0gICAgIkEgQXBwbGljYXRpb247IFggRXhwZXJpbWVudGFsIiwKfQoKQEFydGljbGV7TWF0c3VzaGl0YToxOTcyOkhMRSwKICBhdXRob3IgPSAgICAgICAiWXV0YWthIE1hdHN1c2hpdGEiLAogIHRpdGxlID0gICAgICAgICJIaWRkZW4gbGluZXMgZWxpbWluYXRpb24gZm9yIGEgcm90YXRpbmcgb2JqZWN0IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiNCIsCiAgcGFnZXMgPSAgICAgICAgIjI0NS0tMjUyIiwKICBtb250aCA9ICAgICAgICBhcHIsCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2OEExMCIsCiAgTVJudW1iZXIgPSAgICAgIjQ3IDc5NDUiLAogIG1ycmV2aWV3ZXIgPSAgICJSYW5pIFNpcm9tb25leSIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFic3RyYWN0ID0gICAgICJBIG1ldGhvZCBpcyBwcmVzZW50ZWQgb2YgZGV0ZXJtaW5pbmcgd2hpY2ggcGFydHMgb2YgdGhyZWUtZGltZW5zaW9uYWwgb2JqZWN0cyBhcmUgdmlzaWJsZSBhbmQgd2hpY2ggYXJlIGludmlzaWJsZSB3aGVuIHRoZSBvYmplY3RzIGFyZSByb3RhdGVkIGFib3V0IHNvbWUgYXhpcy4gVGhpcyBwYXBlciBkZXNjcmliZXMgYSBwb2x5Z29uIGNvbXBhcmlzb24gc2NoZW1lIGluIHdoaWNoIHRoZSByZWxhdGlvbnNoaXBzIG9mIHR3byBwb2x5Z29ucyBjYW4gYmUgY2xhc3NpZmllZCBpbnRvIHRyZWUgdHlwZXMsIGFuZCBhbHNvIGRpc2N1c3NlcyBob3cgdGhlIHJlbGF0aW9uc2hpcCBpcyBjaGFuZ2VkIGZvciBlYWNoIHBhaXIgb2YgcG9seWdvbnMgdW5kZXIgcm90YXRpb24gYWJvdXQgc29tZSBheGlzLiBBIHJvdGF0aW9uIHRhYmxlIGlzIGRlZmluZWQgZm9yIGVhY2ggcGFpciBvZiBwb2x5Z29ucywgd2hpY2ggcmVtYWlucyBmaXhlZCBhcyBsb25nIGFzIHJvdGF0aW9uIGlzIGFib3V0IG9uZSBheGlzIGFuZCBwcm92aWRlcyBhIG1lYW5zIG9mIHJhcGlkbHkgZGV0ZXJtaW5pbmcgdGhlIHZpc2libGUgYW5kIGhpZGRlbiBsaW5lIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHR3byBwb2x5Z29ucy4gXHBhciBBZGRpdGlvbmFsIHdvcmsgbXVzdCBiZSBkb25lIHRvIGV4dGVuZCB0aGlzIGFwcHJvYWNoIHRvIHNpbXVsdGFuZW91cyByb3RhdGlvbiBhYm91dCBzZXZlcmFsIGF4ZXMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMzAgKERhdGEgaGFuZGxpbmcgdGVjaG5pcXVlcykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBJbGxpbm9pcywgVXJiYW5hLUNoYW1wYWlnbiwgSUwsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIGRyYXduIHBpY3R1cmU7IGNvbXB1dGVyIGdyYXBoaWNzOyBkYXRhIGhhbmRsaW5nOyBkaXNwbGF5IHByb2dyYW1taW5nOyBkaXNwbGF5czsgZ3JhcGhpY3M7IGhpZGRlbiBsaW5lOyBoaWRkZW4gbGluZSBwcm9ibGVtOyBwb2x5Z29uIGNvbXBhcmlzb24gc2NoZW1lOyBwcm9ibGVtOyByb3RhdGluZyBvYmplY3QiLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0NoYXNlOjE5NzI6SUdBLAogIGF1dGhvciA9ICAgICAgICJTLiBNLiBDaGFzZSIsCiAgdGl0bGUgPSAgICAgICAgIkFuIGltcGxlbWVudGVkIGdyYXBoIGFsZ29yaXRobSBmb3Igd2lubmluZyB7U2hhbm5vbiBTd2l0Y2hpbmcgR2FtZXN9IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiNCIsCiAgcGFnZXMgPSAgICAgICAgIjI1My0tMjU2IiwKICBtb250aCA9ICAgICAgICBhcHIsCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzEyMzAgKEFydGlmaWNpYWwgaW50ZWxsaWdlbmNlKSIsCiAgY29ycHNvdXJjZSA9ICAgIklCTSBUaG9tYXMgSi4gV2F0c29uIFJlcy4gQ2VudGVyLCBZb3JrdG93biBIZWlnaHRzLCBOWSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2U7IGNvbXB1dGVyOyBnYW1lIHBsYXlpbmc7IGdyYXBoIGFsZ29yaXRobTsgcHJvZ3JhbW1lOyBTaGFubm9uIFN3aXRjaGluZyBHYW1lczsgd2lubmluZyBzdHJhdGVneSIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7SG9yb3dpdHo6MTk3MjpDU1AsCiAgYXV0aG9yID0gICAgICAgIkUuIEhvcm93aXR6IGFuZCBILiBMLiBNb3JnYW4gYW5kIEEuIEMuIFNoYXciLAogIHRpdGxlID0gICAgICAgICJDb21wdXRlcnMgYW5kIFNvY2lldHk6IHtBfSBQcm9wb3NlZCBDb3Vyc2UgZm9yIENvbXB1dGVyIFNjaWVudGlzdHMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTUiLAogIG51bWJlciA9ICAgICAgICI0IiwKICBwYWdlcyA9ICAgICAgICAiMjU3LS0yNjEiLAogIG1vbnRoID0gICAgICAgIGFwciwKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFic3RyYWN0ID0gICAgICJUaGUgcHVycG9zZSBvZiB0aGlzIHBhcGVyIGlzIHRvIGRlc2NyaWJlIGEgY291cnNlIGNvbmNlcm5lZCB3aXRoIGJvdGggdGhlIGVmZmVjdHMgb2YgY29tcHV0ZXJzIG9uIHNvY2lldHkgYW5kIHRoZSByZXNwb25zaWJpbGl0aWVzIG9mIGNvbXB1dGVyIHNjaWVudGlzdHMgdG8gc29jaWV0eS4gVGhlIGltcGFjdCBvZiBjb21wdXRlcnMgaXMgZGl2aWRlZCBpbnRvIGZpdmUgY29tcG9uZW50czogcG9saXRpY2FsLCBlY29ub21pYywgY3VsdHVyYWwsIHNvY2lhbCwgYW5kIG1vcmFsOyB0aGUgbWFpbiBwYXJ0IG9mIHRoZSBwYXBlciBkZWZpbmVzIGVhY2ggY29tcG9uZW50IGFuZCBwcmVzZW50cyBleGFtcGxlcyBvZiB0aGUgcmVsZXZhbnQgaXNzdWVzLiBJbiB0aGUgcmVtYWluaW5nIHBvcnRpb25zIHRoZSBwb3NzaWJsZSBmb3JtYXRzIGZvciBzdWNoIGEgY291cnNlIGFyZSBkaXNjdXNzZWQsIGEgdG9waWMgYnkgdG9waWMgb3V0bGluZSBpcyBnaXZlbiwgYW5kIGEgc2VsZWN0ZWQgc2V0IG9mIHJlZmVyZW5jZXMgaXMgbGlzdGVkLiBJdCBpcyBob3BlZCB0aGF0IHRoZSBwcm9wb3NhbCB3aWxsIG1ha2UgaXQgZWFzaWVyIHRvIGluaXRpYXRlIGNvdXJzZXMgb24gdGhpcyBzdWJqZWN0LiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMwMjIwIChDb21wdXRpbmcgZWR1Y2F0aW9uIGFuZCB0cmFpbmluZykiLAogIGNvcnBzb3VyY2UgPSAgICJDb3JuZWxsIFVuaXYuLCBJdGhhY2EsIE5ZLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBzY2llbnRpc3RzOyBjb21wdXRlcnMgYW5kIHNvY2lldHk7IGNvdXJzZTsgY291cnNlIHByb3Bvc2FsOyBjdWx0dXJhbDsgZWNvbm9taWM7IGVjb25vbWljIGFuZCBzb2Npb2xvZ2ljYWwgZWZmZWN0czsgZWR1Y2F0aW9uOyBtb3JhbDsgcG9saXRpY2FsOyBzb2NpYWw7IHNvY2lhbCBpbXBsaWNhdGlvbnMiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0t1a2k6MTk3MjpDR0YsCiAgYXV0aG9yID0gICAgICAgIkguIEt1a2kiLAogIHRpdGxlID0gICAgICAgICJDb21wbGV4IGdhbW1hIGZ1bmN0aW9uIHdpdGggZXJyb3IgY29udHJvbCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjQiLAogIHBhZ2VzID0gICAgICAgICIyNjItLTI2NyIsCiAgbW9udGggPSAgICAgICAgYXByLAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MTMwIChJbnRlcnBvbGF0aW9uIGFuZCBmdW5jdGlvbiBhcHByb3hpbWF0aW9uKTsgQzczMTAgKE1hdGhlbWF0aWNzIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBDaGljYWdvLCBJTCwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiYWxnb3JpdGhtOyBjb21wbGV4OyBjb21wbGV4IGdhbW1hIGZ1bmN0aW9uOyBlcnJvciBjb250cm9sOyBmdW5jdGlvbiBhcHByb3hpbWF0aW9uOyBsb2dnYW1tYSBmdW5jdGlvbiIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7TW9sZXI6MTk3MjpNQ0YsCiAgYXV0aG9yID0gICAgICAgIkMuIEIuIE1vbGVyIiwKICB0aXRsZSA9ICAgICAgICAiTWF0cml4IENvbXB1dGF0aW9ucyB3aXRoIHtGb3J0cmFufSBhbmQgUGFnaW5nIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiNCIsCiAgcGFnZXMgPSAgICAgICAgIjI2OC0tMjcwIiwKICBtb250aCA9ICAgICAgICBhcHIsCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9UaGVvcnkvTWF0cml4LmJpYiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MTQwIChMaW5lYXIgYWxnZWJyYSk7IEM2MTQwRCAoSGlnaCBsZXZlbCBsYW5ndWFnZXMpIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gTWljaGlnYW4sIEFubiBBcmJvciwgTUksIFVTQSIsCiAga2V5d29yZHMgPSAgICAgIkZPUlRSQU47IEZvcnRyYW47IGxpbmVhciBlcXVhdGlvbnM7IG1hdHJpeCBhbGdlYnJhOyBtYXRyaXggY29tcHV0YXRpb25zOyBtZW1vcnkgaGllcmFyY2h5OyBuZXN0ZWQgbG9vcHM7IG5sYTsgcGFnZWQgbWVtb3J5OyB2aXJ0dWFsIG1lbW9yeSIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7S3VraToxOTcyOkFBQywKICBhdXRob3IgPSAgICAgICAiSGlyb25kbyBLdWtpIiwKICB0aXRsZSA9ICAgICAgICAie0FDTX0gQWxnb3JpdGhtIDQyMTogQ29tcGxleCBHYW1tYSBGdW5jdGlvbiB3aXRoIEVycm9yIENvbnRyb2wiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTUiLAogIG51bWJlciA9ICAgICAgICI0IiwKICBwYWdlcyA9ICAgICAgICAiMjcxLS0yNzIiLAogIG1vbnRoID0gICAgICAgIGFwciwKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY1RDIwIiwKICBNUm51bWJlciA9ICAgICAiNDcgMTI0OSIsCiAgbXJyZXZpZXdlciA9ICAgIkwuIEZveCIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDEzMCAoSW50ZXJwb2xhdGlvbiBhbmQgZnVuY3Rpb24gYXBwcm94aW1hdGlvbik7IEM3MzEwIChNYXRoZW1hdGljcyBjb21wdXRpbmcpIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gQ2hpY2FnbywgSUwsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImNvbXBsZXggZ2FtbWEgZnVuY3Rpb247IGNvbXBsZXggbG9nZ2FtbWE7IGVycm9yIGNvbnRyb2w7IEZPUlRSQU47IGZ1bmN0aW9uOyBmdW5jdGlvbiBhcHByb3hpbWF0aW9uOyBwcm9ncmFtbWU7IHN1YnJvdXRpbmVzIiwKfQoKQEFydGljbGV7V2hpdG5leToxOTcyOkFBTSwKICBhdXRob3IgPSAgICAgICAiVi4gSy4gTS4gV2hpdG5leSIsCiAgdGl0bGUgPSAgICAgICAgIntBQ019IEFsZ29yaXRobSA0MjI6IE1pbmltYWwgU3Bhbm5pbmcgVHJlZSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjQiLAogIHBhZ2VzID0gICAgICAgICIyNzMtLTI3NCIsCiAgbW9udGggPSAgICAgICAgYXByLAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgbm90ZSA9ICAgICAgICAgIlNlZSByZW1hcmsgXGNpdGV7S2VybmlnaGFuOjE5NzM6UkFNfS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNzMxMCAoTWF0aGVtYXRpY3MgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIE1pY2hpZ2FuLCBBbm4gQXJib3IsIE1JLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJhbGdvcml0aG07IEZPUlRSQU47IG1heGltYWwgc3Bhbm5pbmcgdHJlZTsgbWluaW1hbCBzcGFubmluZyB0cmVlOyBzcGFubmluZyB0cmVlOyBzdWJyb3V0aW5lczsgdHJlZXMgKG1hdGhlbWF0aWNzKTsgdW5kaXJlY3RlZCBncmFwaCIsCn0KCkBBcnRpY2xle01vbGVyOjE5NzI6QUFMLAogIGF1dGhvciA9ICAgICAgICJDLiBCLiBNb2xlciIsCiAgdGl0bGUgPSAgICAgICAgIntBQ019IEFsZ29yaXRobSA0MjM6IExpbmVhciBFcXVhdGlvbiBTb2x2ZXIiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTUiLAogIG51bWJlciA9ICAgICAgICI0IiwKICBwYWdlcyA9ICAgICAgICAiMjc0LS0yNzQiLAogIG1vbnRoID0gICAgICAgIGFwciwKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDE0MCAoTGluZWFyIGFsZ2VicmEpIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gTWljaGlnYW4sIEFubiBBcmJvciwgTUksIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImFycmF5IHByb2Nlc3Npbmc7IEZvcnRyYW47IGxpbmVhciBhbGdlYnJhOyBsaW5lYXIgZXF1YXRpb24gc29sdmVyOyBtZW1vcnk7IHBhZ2VkIG1lbW9yeTsgc3Vicm91dGluZXM7IHZpcnR1YWwiLAp9CgpAQXJ0aWNsZXtXYWxkZW46MTk3MjpOQ04sCiAgYXV0aG9yID0gICAgICAgIkQuIEMuIFdhbGRlbiIsCiAgdGl0bGUgPSAgICAgICAgIkEgTm90ZSBvbiB7Q2hlbmV5fSdzIE5vbnJlY3Vyc2l2ZSBMaXN0LUNvbXBhY3RpbmcgQWxnb3JpdGhtIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiNCIsCiAgcGFnZXMgPSAgICAgICAgIjI3NS0tMjc1IiwKICBtb250aCA9ICAgICAgICBhcHIsCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMzAgKERhdGEgaGFuZGxpbmcgdGVjaG5pcXVlcykiLAogIGNvcnBzb3VyY2UgPSAgICJBL1MgTm9yc2sgRGF0YS1FbGVrdHJvbmlraywgT3NsbywgTm9yd2F5IiwKICBrZXl3b3JkcyA9ICAgICAiYWxnb3JpdGhtOyBnYXJiYWdlIGNvbGxlY3Rpb247IGxpc3QgY29tcGFjdGluZzsgbGlzdCBwcm9jZXNzaW5nOyBub25yZWN1cnNpdmU7IHN0b3JhZ2UgbWFuYWdlbWVudCIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7SHU6MTk3MjpDREMsCiAgYXV0aG9yID0gICAgICAgIlQuIEMuIEh1IiwKICBrZXkgPSAgICAgICAgICAiZmlsZSBzZWFyY2hpbmcsIGRvdWJsZS1jaGFpbmVkIHRyZWUsIGJpbmFyeSBzZWFyY2ggdHJlZSIsCiAgdGl0bGUgPSAgICAgICAgIkEgQ29tbWVudCBvbiB0aGUgRG91YmxlLUNoYWluZWQgVHJlZSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjQiLAogIHBhZ2VzID0gICAgICAgICIyNzYtLTI3NiIsCiAgbW9udGggPSAgICAgICAgYXByLAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbikiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBXaXNjb25zaW4sIE1hZGlzb24sIFdJLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJiaW5hcnkgc2VhcmNoIHRyZWU7IGRvdWJsZSBjaGFpbmVkIHRyZWU7IGZpbGUgb3JnYW5pc2F0aW9uOyBmaWxlIHNlYXJjaGluZzsgdHJlZXMgKG1hdGhlbWF0aWNzKSIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7TXVsbGluOjE5NzI6SUlTLAogIGF1dGhvciA9ICAgICAgICJKYW1lcyBLLiBNdWxsaW4iLAogIHRpdGxlID0gICAgICAgICJBbiBJbXByb3ZlZCBJbmRleGVkLVNlcXVlbnRpYWwgQWNjZXNzIE1ldGhvZCBVc2luZyBIYXNoZWQgT3ZlcmZsb3ciLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTUiLAogIG51bWJlciA9ICAgICAgICI1IiwKICBwYWdlcyA9ICAgICAgICAiMzAxLS0zMDciLAogIG1vbnRoID0gICAgICAgIG1heSwKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L01pc2MvaGFzaC5iaWIiLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gV2VzdGVybiBPbnRhcmlvLCBPbnQuLCBDYW5hZGEiLAogIGtleXdvcmRzID0gICAgICJjeWxpbmRlcjsgZmlsZSBtYW5hZ2VtZW50IHN5c3RlbXM7IGZpbGUgb3JnYW5pc2F0aW9uOyBoYXNoZWQgb3ZlcmZsb3c7IGltcHJvdmVkIGluZGV4IHNlcXVlbnRpYWwgYWNjZXNzIG1ldGhvZDsgbG9uZyBvdmVyZmxvdyBjaGFpbnM7IG1vdmFibGUgaGVhZCBkaXNjIGRldmljZXM7IG92ZXJmbG93IHJlY29yZHM7IHJlY29yZCBrZXlzOyBzY2F0dGVyOyBzcGFjZSBhbGxvY2F0aW9uOyBzdG9yYWdlOyBzdG9yYWdlIGFsbG9jYXRpb247IHN0b3JhZ2UgbWFuYWdlbWVudDsgdHJlYXRpbmciLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0JlbnNvdXNzYW46MTk3MjpNVk0sCiAgYXV0aG9yID0gICAgICAgIkEuIEJlbnNvdXNzYW4gYW5kIEMuIFQuIENsaW5nZW4gYW5kIFIuIEMuIERhbGV5IiwKICB0aXRsZSA9ICAgICAgICAiVGhlIHtNdWx0aWNzfSBWaXJ0dWFsIE1lbW9yeTogQ29uY2VwdHMgYW5kIERlc2lnbiIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjUiLAogIHBhZ2VzID0gICAgICAgICIzMDgtLTMxOCIsCiAgbW9udGggPSAgICAgICAgbWF5LAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgImZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGF0YWJhc2UvR3JhZWZlLmJpYiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTUwSiAoT3BlcmF0aW5nIHN5c3RlbXMpIiwKICBjb3Jwc291cmNlID0gICAiSG9uZXl3ZWxsIEluZm9ybWF0aW9uIFN5c3RlbXMgSW5jLiwgQ2FtYnJpZGdlLCBNQSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiY29uY2VwdHM7IGRlc2lnbjsgaGllcmFyY2h5OyBpbmZvcm1hdGlvbiBzaGFyaW5nOyBtZW1vcnk7IG1lbW9yeSBtYW5hZ2VtZW50OyBNdWx0aWNzIHZpcnR1YWwgbWVtb3J5OyBvbmxpbmUgb3BlcmF0aW5nIHN5c3RlbXM7IE9wZXJhdGluZyBzZWdtZW50cyBwYWdpbmcgc2hhcmluZyBtYW5hZ2VtZW50IENBQ007IG9wZXJhdGluZyBzeXN0ZW1zIChjb21wdXRlcnMpOyBwYWdpbmc7IHNlZ21lbnRhdGlvbiIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7Q2hyaXN0bWFuOjE5NzI6TVNBLAogIGF1dGhvciA9ICAgICAgICJSLiBELiBDaHJpc3RtYW4iLAogIHRpdGxlID0gICAgICAgICJ7TVVYfSwgYSBzaW1wbGUgYXBwcm9hY2ggdG8gb24tbGluZSBjb21wdXRpbmciLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTUiLAogIG51bWJlciA9ICAgICAgICI1IiwKICBwYWdlcyA9ICAgICAgICAiMzE5LS0zMjkiLAogIG1vbnRoID0gICAgICAgIG1heSwKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjE1MEogKE9wZXJhdGluZyBzeXN0ZW1zKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIENhbGlmb3JuaWEsIExvcyBBbGFtb3MsIE5NLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJiYXRjaCBzeXN0ZW07IENEQyA2NjAwIGNvbXB1dGVyOyBjb3N0OyBkZXNpZ24gY3JpdGVyaWE7IGVjb25vbWljczsgaW1wbGVtZW50YXRpb247IGlucHV0OyBtb2RpZnkgZmlsZXM7IG11bHRpLWFjY2VzcyBzeXN0ZW1zOyBtdWx0aXBsZXhlcjsgTVVYOyBvbmxpbmUgY29tcHV0aW5nOyBvbmxpbmUgb3BlcmF0aW9uOyBvcGVyYXRpbmc7IG92ZXJoZWFkOyBzeXN0ZW1zIChjb21wdXRlcnMpOyB1c2VyIHJlYWN0aW9ucyIsCiAgdHJlYXRtZW50ID0gICAgIkUgRWNvbm9taWM7IFAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7UGFybmFzOjE5NzI6VFNNLAogIGF1dGhvciA9ICAgICAgICJEYXZpZCBMLiBQYXJuYXMiLAogIHRpdGxlID0gICAgICAgICJBIHRlY2huaXF1ZSBmb3Igc29mdHdhcmUgbW9kdWxlIHNwZWNpZmljYXRpb24gd2l0aCBleGFtcGxlcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjUiLAogIHBhZ2VzID0gICAgICAgICIzMzAtLTMzNiIsCiAgbW9udGggPSAgICAgICAgbWF5LAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgImZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvVGhlb3J5L29ic2N1cmUuYmliIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMTAgKFN5c3RlbXMgYW5hbHlzaXMgYW5kIHByb2dyYW1taW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIkNhcm5lZ2llLU1lbGxvbiBVbml2LiwgUGl0dHNidXJnaCwgUEEsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgInByb2dyYW1taW5nOyBzb2Z0d2FyZSBkZXNpZ247IHNvZnR3YXJlIG1vZHVsZSBzcGVjaWZpY2F0aW9uOyB0ZWNobmlxdWUiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0dlbnRsZW1hbjoxOTcyOklDQ2EsCiAgYXV0aG9yID0gICAgICAgIlcuIE1vcnZlbiBHZW50bGVtYW4iLAogIHRpdGxlID0gICAgICAgICJJbXBsZW1lbnRpbmcge0NsZW5zaGF3LUN1cnRpc30gcXVhZHJhdHVyZS4ge0l9LiBNZXRob2RvbG9neSBhbmQgZXhwZXJpZW5jZSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjUiLAogIHBhZ2VzID0gICAgICAgICIzMzctLTM0MiIsCiAgbW9udGggPSAgICAgICAgbWF5LAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjVEMzAiLAogIE1SbnVtYmVyID0gICAgICI0OCA1MzQzIiwKICBtcnJldmlld2VyID0gICAiRC4gRi4gTWF5ZXJzIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgImZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvVGhlb3J5L0NvbXAuQWxnLjEuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiQ2xlbnNoYXctQ3VydGlzIHF1YWRyYXR1cmUgaXMgYSBwYXJ0aWN1bGFybHkgaW1wb3J0YW50IGF1dG9tYXRpYyBxdWFkcmF0dXJlIHNjaGVtZSBmb3IgYSB2YXJpZXR5IG9mIHJlYXNvbnMsIGVzcGVjaWFsbHkgdGhlIGhpZ2ggYWNjdXJhY3kgb2J0YWluZWQgZnJvbSByZWxhdGl2ZWx5IGZldyBpbnRlZ3JhbmQgdmFsdWVzLiBIb3dldmVyLCBpdCBoYXMgcmVjZWl2ZWQgbGl0dGxlIHVzZSBiZWNhdXNlIGl0IHJlcXVpcmVzIHRoZSBjb21wdXRhdGlvbiBvZiBhIGNvc2luZSB0cmFuc2Zvcm1hdGlvbiBhbmQgdGhlIGFyaXRobWV0aWMgY29zdCBvZiB0aGlzIGhhcyBiZWVuIHByb2hpYml0aXZlLiBUaGlzIHBhcGVyIGlzIGluIHR3byBwYXJ0czsgYSBjb21wYW5pb24gcGFwZXIsIGBgSUkgQ29tcHV0aW5nIHRoZSBDb3NpbmUgVHJhbnNmb3JtYXRpb24sJycgc2hvd3MgdGhhdCB0aGlzIG9iamVjdGlvbiBjYW4gYmUgb3ZlcmNvbWUgYnkgY29tcHV0aW5nIHRoZSBjb3NpbmUgdHJhbnNmb3JtYXRpb24gYnkgYSBtb2RpZmljYXRpb24gb2YgdGhlIGZhc3QgRm91cmllciB0cmFuc2Zvcm0gYWxnb3JpdGhtLiBccGFyIFRoaXMgZmlyc3QgcGFydCBkaXNjdXNzZXMgdGhlIHN0cmF0ZWd5IGFuZCB2YXJpb3VzIGVycm9yIGVzdGltYXRlcywgYW5kIHN1bW1hcml6ZXMgZXhwZXJpZW5jZSB3aXRoIGEgcGFydGljdWxhciBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgc2NoZW1lLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MTEwIChFcnJvciBhbmFseXNpcyBpbiBudW1lcmljYWwgbWV0aG9kcyk7IEM0MTYwIChOdW1lcmljYWwgaW50ZWdyYXRpb24gYW5kIGRpZmZlcmVudGlhdGlvbik7IEM3MzEwIChNYXRoZW1hdGljcyBjb21wdXRpbmcpIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gV2F0ZXJsb28sIE9udC4sIENhbmFkYSIsCiAga2V5d29yZHMgPSAgICAgImF1dG9tYXRpYyBxdWFkcmF0dXJlOyBDaGVieXNoZXYgc2VyaWVzOyBDbGVuc2hhdyBDdXJ0aXM7IENsZW5zaGF3LUN1cnRpcyBxdWFkcmF0dXJlOyBlcnJvciBhbmFseXNpczsgZXJyb3IgZXN0aW1hdGVzOyBleHBlcmllbmNlOyBpbXBsZW1lbnRhdGlvbjsgaW50ZWdyYXRpb247IG51bWVyaWNhbCBpbnRlZ3JhdGlvbjsgbnVtZXJpY2FsIG1ldGhvZHM7IHN0cmF0ZWd5IiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtHZW50bGVtYW46MTk3MjpJQ0NiLAogIGF1dGhvciA9ICAgICAgICJXLiBNb3J2aW4gR2VudGxlbWFuIiwKICB0aXRsZSA9ICAgICAgICAiSW1wbGVtZW50aW5nIHtDbGVuc2hhdy1DdXJ0aXN9IHF1YWRyYXR1cmUuIHtJSX0uIENvbXB1dGluZyB0aGUgY29zaW5lIHRyYW5zZm9ybWF0aW9uIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiNSIsCiAgcGFnZXMgPSAgICAgICAgIjM0My0tMzQ2IiwKICBtb250aCA9ICAgICAgICBtYXksCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2NUQzMCIsCiAgTVJudW1iZXIgPSAgICAgIjQ4IDUzNDQiLAogIG1ycmV2aWV3ZXIgPSAgICJELiBGLiBNYXllcnMiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhYnN0cmFjdCA9ICAgICAiSW4gYSBjb21wYW5pb24gcGFwZXIgdG8gdGhpcywgYGBJIE1ldGhvZG9sb2d5IGFuZCBFeHBlcmllbmNlcywnJyB0aGUgYXV0b21hdGljIENsZW5zaGF3LUN1cnRpcyBxdWFkcmF0dXJlIHNjaGVtZSB3YXMgZGVzY3JpYmVkIGFuZCBob3cgZWFjaCBxdWFkcmF0dXJlIGZvcm11bGEgdXNlZCBpbiB0aGUgc2NoZW1lIHJlcXVpcmVzIGEgY29zaW5lIHRyYW5zZm9ybWF0aW9uIG9mIHRoZSBpbnRlZ3JhbmQgdmFsdWVzIHdhcyBzaG93bi4gVGhlIGhpZ2ggY29zdCBvZiB0aGVzZSBjb3NpbmUgdHJhbnNmb3JtYXRpb25zIGhhcyBiZWVuIGEgc2VyaW91cyBkcmF3YmFjayBpbiB1c2luZyBDbGVuc2hhdy1DdXJ0aXMgcXVhZHJhdHVyZS4gXHBhciBUd28gb3RoZXIgcHJvYmxlbXMgcmVsYXRlZCB0byB0aGUgY29zaW5lIHRyYW5zZm9ybWF0aW9uIGhhdmUgYWxzbyBiZWVuIHRyb3VibGUgc29tZS4gRmlyc3QsIHRoZSBjb252ZW50aW9uYWwgY29tcHV0YXRpb24gb2YgdGhlIGNvc2luZSB0cmFuc2Zvcm1hdGlvbiBieSByZWN1cnJlbmNlIHJlbGF0aW9uIGlzIG51bWVyaWNhbGx5IHVuc3RhYmxlLCBwYXJ0aWN1bGFybHkgYXQgdGhlIGxvdyBmcmVxdWVuY2llcyB3aGljaCBoYXZlIHRoZSBsYXJnZXN0IGVmZmVjdCB1cG9uIHRoZSBpbnRlZ3JhbC4gU2Vjb25kLCBpbiBjYXNlIHRoZSBhdXRvbWF0aWMgc2NoZW1lIHNob3VsZCByZXF1aXJlIHJlZmluZW1lbnQgb2YgdGhlIHNhbXBsaW5nLCBzdG9yYWdlIGlzIHJlcXVpcmVkIHRvIHNhdmUgdGhlIGludGVncmFuZCB2YWx1ZXMgYWZ0ZXIgdGhlIGNvc2luZSB0cmFuc2Zvcm1hdGlvbiBpcyBjb21wdXRlZC4gVGhpcyBzZWNvbmQgcGFydCBvZiB0aGUgcGFwZXIgc2hvd3MgaG93IHRoZSBjb3NpbmUgdHJhbnNmb3JtYXRpb24gY2FuIGJlIGNvbXB1dGVkIGJ5IGEgbW9kaWZpY2F0aW9uIG9mIHRoZSBmYXN0IEZvdXJpZXIgdHJhbnNmb3JtIGFuZCBhbGwgdGhyZWUgcHJvYmxlbXMgb3ZlcmNvbWUuIFRoZSBtb2RpZmljYXRpb24gaXMgYWxzbyBhcHBsaWNhYmxlIGluIG90aGVyIGNpcmN1bXN0YW5jZXMgcmVxdWlyaW5nIGNvc2luZSBvciBzaW5lIHRyYW5zZm9ybWF0aW9ucywgc3VjaCBhcyBwb2x5bm9taWFsIGludGVycG9sYXRpb24gdGhyb3VnaCB0aGUgQ2hlYnlzaGV2IHBvaW50cy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDE2MCAoTnVtZXJpY2FsIGludGVncmF0aW9uIGFuZCBkaWZmZXJlbnRpYXRpb24pOyBDNzMxMCAoTWF0aGVtYXRpY3MgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIFdhdGVybG9vLCBPbnQuLCBDYW5hZGEiLAogIGtleXdvcmRzID0gICAgICJDaGVieXNoZXYgc2VyaWVzOyBDbGVuc2hhdyBDdXJ0aXMgcXVhZHJhdHVyZTsgQ2xlbnNoYXctQ3VydGlzIHF1YWRyYXR1cmU7IGNvc2luZTsgY29zaW5lIHRyYW5zZm9ybWF0aW9uOyBmYXN0IEZvdXJpZXIgdHJhbnNmb3JtYXRpb247IGZhc3QgRm91cmllciB0cmFuc2Zvcm1zOyBGRlQ7IGltcGxlbWVudGF0aW9uOyBpbnRlZ3JhdGlvbjsgbnVtZXJpY2FsIG1ldGhvZHM7IHBvbHlub21pYWwgaW50ZXJwb2xhdGlvbjsgdHJhbnNmb3JtYXRpb24iLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0dyZWVuc3BhbjoxOTcyOkZGRCwKICBhdXRob3IgPSAgICAgICAiRC4gR3JlZW5zcGFuIGFuZCBELiBTY2h1bHR6IiwKICB0aXRsZSA9ICAgICAgICAiRmFzdCBmaW5pdGUtZGlmZmVyZW5jZSBzb2x1dGlvbiBvZiBiaWhhcm1vbmljIHByb2JsZW1zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiNSIsCiAgcGFnZXMgPSAgICAgICAgIjM0Ny0tMzUwIiwKICBtb250aCA9ICAgICAgICBtYXksCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2NU4wNSIsCiAgTVJudW1iZXIgPSAgICAgIjQ3IDI4MjkiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhYnN0cmFjdCA9ICAgICAiU2V0dGluZyB0aGUgUmV5bm9sZHMgbnVtYmVyIGVxdWFsIHRvIHplcm8sIGluIGEgbWV0aG9kIGZvciBzb2x2aW5nIHRoZSBOYXZpZXItU3Ryb2tlcyBlcXVhdGlvbnMgbnVtZXJpY2FsbHksIHJlc3VsdHMgaW4gYSBmYXN0IG51bWVyaWNhbCBtZXRob2QgZm9yIGJpaGFybW9uaWMgcHJvYmxlbXMuIFRoZSBlcXVhdGlvbiBpcyB0cmVhdGVkIGFzIGEgc3lzdGVtIG9mIHR3byBzZWNvbmQgb3JkZXIgZXF1YXRpb25zIGFuZCBhIHNpbXBsZSBzbW9vdGhpbmcgcHJvY2VzcyBpcyBlc3NlbnRpYWwgZm9yIGNvbnZlcmdlbmNlLiBBbiBhcHBsaWNhdGlvbiBpcyBtYWRlIHRvIGEgY3JhY2stdHlwZSBwcm9ibGVtLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MTcwIChEaWZmZXJlbnRpYWwgZXF1YXRpb25zKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIFdpc2NvbnNpbiwgTWFkaXNvbiwgV0ksIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImJpaGFybW9uaWMgZXF1YXRpb247IGJvdW5kYXJ5IHZhbHVlIHByb2JsZW07IG51bWVyaWNhbCBhbmFseXNpczsgcGFydGlhbCBkaWZmZXJlbnRpYWwgZXF1YXRpb25zIiwKICBrZXl3b3JkcyA9ICAgICAiYmloYXJtb25pYyBwcm9ibGVtczsgYm91bmRhcnkgdmFsdWUgcHJvYmxlbTsgYm91bmRhcnktdmFsdWUgcHJvYmxlbXM7IGNvbnZlcmdlbmNlOyBjb252ZXJnZW5jZSBvZiBudW1lcmljYWwgbWV0aG9kczsgY3JhY2sgdHlwZSBwcm9ibGVtOyBkaWZmZXJlbmNlIGVxdWF0aW9uczsgZmFzdCBmaW5pdGUgZGlmZmVyZW5jZSBzb2x1dGlvbjsgTmF2aWVyIFN0b2tlcyBlcXVhdGlvbnM7IHBhcnRpYWwgZGlmZmVyZW50aWFsIGVxdWF0aW9uczsgcHJvY2Vzczsgc21vb3RoaW5nOyB0d28gc2Vjb25kIG9yZGVyIGVxdWF0aW9ucyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7RHVuaGFtOjE5NzI6TU5BLAogIGF1dGhvciA9ICAgICAgICJDLiBCLiBEdW5oYW0iLAogIHRpdGxlID0gICAgICAgICJNaW5pbWF4IG5vbmxpbmVhciBhcHByb3hpbWF0aW9uIGJ5IGFwcHJveGltYXRpb24gb24gc3Vic2V0cyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjUiLAogIHBhZ2VzID0gICAgICAgICIzNTEtLTM1MSIsCiAgbW9udGggPSAgICAgICAgbWF5LAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MTMwIChJbnRlcnBvbGF0aW9uIGFuZCBmdW5jdGlvbiBhcHByb3hpbWF0aW9uKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIFdlc3Rlcm4gT250YXJpbywgT250LiwgQ2FuYWRhIiwKICBrZXl3b3JkcyA9ICAgICAiZnVuY3Rpb24gYXBwcm94aW1hdGlvbjsgbWluaW1heCBub25saW5lYXIgYXBwcm94aW1hdGlvbjsgb3B0aW1pc2F0aW9uOyBzdWJzZXRzIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtIYXJ0ZXI6MTk3MjpPV0YsCiAgYXV0aG9yID0gICAgICAgIlJpY2hhcmQgSGFydGVyIiwKICB0aXRsZSA9ICAgICAgICAiVGhlIE9wdGltYWxpdHkgb2Yge1dpbm9ncmFkfSdzIEZvcm11bGEiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTUiLAogIG51bWJlciA9ICAgICAgICI1IiwKICBwYWdlcyA9ICAgICAgICAiMzUyLS0zNTIiLAogIG1vbnRoID0gICAgICAgIG1heSwKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjM1Mi42NUYwNSIsCiAgTVJudW1iZXIgPSAgICAgIjQ3IDI4MDEiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQxNDAgKExpbmVhciBhbGdlYnJhKSIsCiAga2V5d29yZHMgPSAgICAgImlubmVyIHByb2R1Y3Q7IGxpbmVhciBhbGdlYnJhOyBudW1lcmljYWwgYW5hbHlzaXM7IG9wdGltYWxpdHk7IHZlY3RvcnM7IFdpbm9ncmFkJ3MgZm9ybXVsYSIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7R2VudGxlbWFuOjE5NzI6QUFDLAogIGF1dGhvciA9ICAgICAgICJXLiBNLiBHZW50bGVtYW4iLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gNDI0OiB7Q2xlbnNoYXctQ3VydGlzfSBRdWFkcmF0dXJlIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiNSIsCiAgcGFnZXMgPSAgICAgICAgIjM1My0tMzU1IiwKICBtb250aCA9ICAgICAgICBtYXksCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBub3RlID0gICAgICAgICAiU2VlIGFsc28gXGNpdGV7R2VkZGVzOjE5Nzk6UkNDfS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDE2MCAoTnVtZXJpY2FsIGludGVncmF0aW9uIGFuZCBkaWZmZXJlbnRpYXRpb24pOyBDNzMxMCAoTWF0aGVtYXRpY3MgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIFdhdGVybG9vLCBPbnQuLCBDYW5hZGEiLAogIGtleXdvcmRzID0gICAgICJDaGVieXNoZXYgc2VyaWVzOyBDbGVuc2hhdyBDdXJ0aXMgcXVhZHJhdHVyZTsgY29zaW5lIHRyYW5zZm9ybTsgRkZUOyBGT1JUUkFOIHN1YnJvdXRpbmU7IGludGVncmF0aW9uOyBzdWJyb3V0aW5lcyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7SHVyc3Q6MTk3MjpBQUcsCiAgYXV0aG9yID0gICAgICAgIlIuIEwuIEh1cnN0IGFuZCBSLiBFLiBLbm9wIiwKICB0aXRsZSA9ICAgICAgICAie0FDTX0gQWxnb3JpdGhtIDQyNTogR2VuZXJhdGlvbiBvZiBSYW5kb20gQ29ycmVsYXRlZCBOb3JtYWwgVmFyaWFibGVzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiNSIsCiAgcGFnZXMgPSAgICAgICAgIjM1NS0tMzU3IiwKICBtb250aCA9ICAgICAgICBtYXksCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzczMTAgKE1hdGhlbWF0aWNzIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJVdGFoIFN0YXRlIFVuaXYuLCBMb2dhbiwgVVQsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImFsZ29yaXRobXM7IEZPUlRSQU4gc3Vicm91dGluZTsgZ2VuZXJhdGlvbjsgbXVsdGl2YXJpYXRlIG5vcm1hbCBkZW5zaXR5OyByYW5kb20gY29ycmVsYXRlZCBub3JtYWwgdmFyaWFibGVzOyBzdGF0aXN0aWNzOyBzdWJyb3V0aW5lczsgdGltaW5nIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtCcm9uOjE5NzI6QUFNLAogIGF1dGhvciA9ICAgICAgICJDLiBCcm9uIiwKICB0aXRsZSA9ICAgICAgICAie0FDTX0gQWxnb3JpdGhtIDQyNjogTWVyZ2UgU29ydCBBbGdvcml0aG0iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTUiLAogIG51bWJlciA9ICAgICAgICI1IiwKICBwYWdlcyA9ICAgICAgICAiMzU3LS0zNTgiLAogIG1vbnRoID0gICAgICAgIG1heSwKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKSIsCiAgY29ycHNvdXJjZSA9ICAgIlRlY2hub2wuIFVuaXYuLCBFaW5kaG92ZW4sIE5ldGhlcmxhbmRzIiwKICBrZXl3b3JkcyA9ICAgICAiQUxHT0wgNjAgcHJvY2VkdXJlOyBtZXJnZSBzb3J0IGFsZ29yaXRobTsgbWVyZ2luZzsgcmVjdXJzaW9uOyBzb3J0aW5nOyBzdWJyb3V0aW5lcyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7TGluejoxOTcyOkFBRiwKICBhdXRob3IgPSAgICAgICAiUC4gTGlueiIsCiAgdGl0bGUgPSAgICAgICAgIntBQ019IEFsZ29yaXRobSA0Mjc6IHtGb3VyaWVyIENvc2luZX0gSW50ZWdyYWwiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTUiLAogIG51bWJlciA9ICAgICAgICI1IiwKICBwYWdlcyA9ICAgICAgICAiMzU4LS0zNjAiLAogIG1vbnRoID0gICAgICAgIG1heSwKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDE2MCAoTnVtZXJpY2FsIGludGVncmF0aW9uIGFuZCBkaWZmZXJlbnRpYXRpb24pOyBDNzMxMCAoTWF0aGVtYXRpY3MgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIENhbGlmb3JuaWEsIERhdmlzLCBDQSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiRk9SVFJBTiBwcm9jZWR1cmU7IEZvdXJpZXIgY29zaW5lIGludGVncmFsOyBpbnRlZ3JhdGlvbjsgc3Vicm91dGluZXMiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle1lvaGU6MTk3MjpBQUgsCiAgYXV0aG9yID0gICAgICAgIkouIE0uIFlvaGUiLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gNDI4OiB7SHUtVHVja2VyfSBNaW5pbXVtIFJlZHVuZGFuY3kgQWxwaGFiZXRpYyBDb2RpbmcgTWV0aG9kIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiNSIsCiAgcGFnZXMgPSAgICAgICAgIjM2MC0tMzYyIiwKICBtb250aCA9ICAgICAgICBtYXksCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjYxMjBCIChDb2Rlcyk7IEMxMjYwIChJbmZvcm1hdGlvbiB0aGVvcnkpIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gV2lzY29uc2luLCBNYWRpc29uLCBXSSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiY29kZXM7IGVuY29kaW5nOyBGT1JUUkFOIHN1YnJvdXRpbmU7IEh1IFR1Y2tlciBtaW5pbXVtIHJlZHVuZGFuY3kgYWxwaGFiZXRpYyBiaW5hcnkgY29kaW5nOyBtZXRob2Q7IHN1YnJvdXRpbmVzIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtBc2hlbmh1cnN0OjE5NzI6UkFDLAogIGF1dGhvciA9ICAgICAgICJSLiBMLiBBc2hlbmh1cnN0IiwKICB0aXRsZSA9ICAgICAgICAiQSByZXBvcnQgb2YgdGhlIHtBQ019IGN1cnJpY3VsdW0gY29tbWl0dGVlIG9uIGNvbXB1dGVyIGVkdWNhdGlvbiBmb3IgbWFuYWdlbWVudC4gQ3VycmljdWx1bSByZWNvbW1lbmRhdGlvbnMgZm9yIGdyYWR1YXRlIHByb2Zlc3Npb25hbCBwcm9ncmFtcyBpbiBpbmZvcm1hdGlvbiBzeXN0ZW1zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiNSIsCiAgcGFnZXMgPSAgICAgICAgIjM2My0tMzk4IiwKICBtb250aCA9ICAgICAgICBtYXksCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EYXRhYmFzZS9XaWVkZXJob2xkLmJpYiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMwMjIwIChDb21wdXRpbmcgZWR1Y2F0aW9uIGFuZCB0cmFpbmluZykiLAogIGtleXdvcmRzID0gICAgICJjb3Vyc2UgZGVzY3JpcHRpb25zOyBjdXJyaWN1bHVtIHJlY29tbWVuZGF0aW9uczsgZWR1Y2F0aW9uOyBpbXBsZW1lbnRhdGlvbjsgaW5mb3JtYXRpb24gc3lzdGVtczsgc3lzdGVtcyBhbmFseXNpcyIsCiAgdHJlYXRtZW50ID0gICAgIkcgR2VuZXJhbCBSZXZpZXciLAp9CgpAQXJ0aWNsZXtCbGF0bnk6MTk3MjpPUFQsCiAgYXV0aG9yID0gICAgICAgIkouIEJsYXRueSBhbmQgUy4gUi4gQ2xhcmsgYW5kIFQuIEEuIFJvdXJrZSIsCiAgdGl0bGUgPSAgICAgICAgIk9uIHRoZSBvcHRpbWl6YXRpb24gb2YgcGVyZm9ybWFuY2Ugb2YgdGltZS1zaGFyaW5nIHN5c3RlbXMgYnkgc2ltdWxhdGlvbiIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjYiLAogIHBhZ2VzID0gICAgICAgICI0MTEtLTQyMCIsCiAgbW9udGggPSAgICAgICAganVuLAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MjkwIChPdGhlciBjb21wdXRlciB0aGVvcnkpOyBDNjE1MEogKE9wZXJhdGluZyBzeXN0ZW1zKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIE1hbml0b2JhLCBXaW5uaXBlZywgTWFuLiwgQ2FuYWRhIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0YXRpb24gdGhlb3J5OyBmaW5pdGU7IGluZmluaXRlIGF1eGlsaWFyeSBzdG9yZTsgam9iIHNjaGVkdWxpbmcgYWxnb3JpdGhtOyBub25jb250aWd1b3VzIHN0b3JlOyBudW1iZXIgb2Ygam9icyBhbGxvd2VkIHRvIGV4ZWN1dGUgc2ltdWx0YW5lb3VzbHk7IG9wdGltaXNhdGlvbjsgb3B0aW1pemF0aW9uIG9mIHBlcmZvcm1hbmNlOyBvcHRpbXVtIHJvdW5kIHJvYmluIGN5Y2xlIHRpbWUgc2VsZWN0aW9uOyBwcm9ncmFtczsgc2hhcmluZyBzeXN0ZW1zOyBzaW11bGF0aW9uOyBzbGljZSB0ZWNobmlxdWVzOyBzdG9yZSBzaXplOyB0aW1lOyB0aW1lLXNoYXJpbmc7IHZhcmlhYmxlIHRpbWUiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle1NwYWNlazoxOTcyOlBFUCwKICBhdXRob3IgPSAgICAgICAiVC4gUi4gU3BhY2VrIiwKICB0aXRsZSA9ICAgICAgICAiQSBwcm9wb3NhbCB0byBlc3RhYmxpc2ggYSBwc2V1ZG8gdmlydHVhbCBtZW1vcnkgdmlhIHdyaXRhYmxlIG92ZXJsYXlzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiNiIsCiAgcGFnZXMgPSAgICAgICAgIjQyMS0tNDI2IiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKSIsCiAgY29ycHNvdXJjZSA9ICAgIkNJQSwgV2FzaGluZ3RvbiwgREMsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImNvbGxlY3RvcjsgZGlzcGxheTsgZXN0YWJsaXNobWVudDsgZXhlY3V0YWJsZSBzdG9yYWdlIHNpemUgcHJvYmxlbXM7IGZvbGRpbmc7IGdyYXBoaWM7IGxpbmthZ2UgZWRpdG9yOyBsb2FkZXI7IG92ZXJsYXkgc3RydWN0dXJlOyBwYWdpbmc7IHBzZXVkb3ZpcnR1YWwgbWVtb3J5OyBzZWdtZW50YXRpb247IHN0b3JhZ2UgYWxsb2NhdGlvbjsgd3JpdGFibGUgb3ZlcmxheXMiLAp9CgpAQXJ0aWNsZXtHaWxiZXJ0OjE5NzI6SUJDLAogIGF1dGhvciA9ICAgICAgICJQLiBHaWxiZXJ0IGFuZCBXLiBKLiBDaGFuZGxlciIsCiAgdGl0bGUgPSAgICAgICAgIkludGVyZmVyZW5jZSBiZXR3ZWVuIENvbW11bmljYXRpbmcgUGFyYWxsZWwgUHJvY2Vzc2VzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiNiIsCiAgcGFnZXMgPSAgICAgICAgIjQyNy0tNDM3IiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EYXRhYmFzZS9XaWVkZXJob2xkLmJpYiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MjkwIChPdGhlciBjb21wdXRlciB0aGVvcnkpOyBDNjE1MEogKE9wZXJhdGluZyBzeXN0ZW1zKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIFNvdXRoZXJuIENhbGlmb3JuaWEsIExvcyBBbmdlbGVzLCBDQSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0YXRpb24gdGhlb3J5OyBjb25jdXJyZW50IHByb2dyYW1taW5nIGNvbnRyb2w7IGNvb3BlcmF0aW5nIHByb2Nlc3NlczsgZm9ybWFsIHByb2dyYW1zOyBpbmNsdXNpb247IGludGVyZmVyZW5jZSBiZXR3ZWVuIGNvbW11bmljYXRpbmcgcGFyYWxsZWwgcHJvY2Vzc2VzOyBtdXR1YWwgZXhjbHVzaW9uOyBvcGVyYXRpbmcgc3lzdGVtczsgcGFyYWxsZWwgcHJvY2Vzc2luZzsgcHJvYmxlbTsgc2VxdWVuY2VzIG9mIHN0YXRlczsgdHJhbnNpdGlvbiBydWxlIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtHaW1wZWw6MTk3MjpCTkQsCiAgYXV0aG9yID0gICAgICAgIkouIEYuIEdpbXBlbCIsCiAgdGl0bGUgPSAgICAgICAgIkJsb2Nrcy1hIG5ldyBkYXRhdHlwZSBmb3Ige1NOT0JPTH0gNCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjYiLAogIHBhZ2VzID0gICAgICAgICI0MzgtLTQ0NyIsCiAgbW9udGggPSAgICAgICAganVuLAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTMwIChEYXRhIGhhbmRsaW5nIHRlY2huaXF1ZXMpOyBDNjE0MEQgKEhpZ2ggbGV2ZWwgbGFuZ3VhZ2VzKSIsCiAgY29ycHNvdXJjZSA9ICAgIkJlbGwgVGVsZXBob25lIExhYnMuIEluYy4sIEhvbG1kZWwsIE5KLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJibG9ja3M7IGNoYXJhY3RlcjsgY29tcG9zaW5nIHByaW50YWJsZSBvdXRwdXQ7IGRhdGF0eXBlOyBkaW1lbnNpb25hbCBhZ2dyZWdhdGUgb2YgY2hhcmFjdGVyczsgbWFuaXB1bGF0aW9uOyBvdmVyc3RyaWtpbmc7IHByb2JsZW0gb3JpZW50ZWQgbGFuZ3VhZ2VzOyByaWdodCBwYXJhbGxlbGVwaXBlZDsgU05PQk9MIDQ7IHN0cmluZyBwcm9jZXNzaW5nOyB0ZXh0IGVkaXRpbmc7IHRleHQgcHJvY2Vzc2luZzsgdGhyZWUiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle01hcnRpbjoxOTcyOkJNTSwKICBhdXRob3IgPSAgICAgICAiRGF2aWQgRi4gTWFydGluIiwKICB0aXRsZSA9ICAgICAgICAiQSB7Qm9vbGVhbn0gbWF0cml4IG1ldGhvZCBmb3IgdGhlIGNvbXB1dGF0aW9uIG9mIGxpbmVhciBwcmVjZWRlbmNlIGZ1bmN0aW9ucyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjYiLAogIHBhZ2VzID0gICAgICAgICI0NDgtLTQ1NCIsCiAgbW9udGggPSAgICAgICAganVuLAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjhBMzAiLAogIE1SbnVtYmVyID0gICAgICI1NCA5MTc1IiwKICBtcnJldmlld2VyID0gICAiRGFuaWVsIEouIFJvc2Vua3JhbnR6IiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MjEwIChGb3JtYWwgbG9naWMpIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gQ2FsaWZvcm5pYSwgTG9zIEFuZ2VsZXMsIENBLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJhbmFseXNpczsgQm9vbGVhbiBmdW5jdGlvbnM7IGJvb2xlYW4gbWF0cml4IG1ldGhvZDsgY29uZmxpY3QgZnJlZSBtYXRyaXg7IGNvbnRleHQ7IGNvbnRleHQtZnJlZSBncmFtbWFyczsgZnJlZSBwYXJzaW5nOyBsaW5lYXIgcHJlY2VkZW5jZSBmdW5jdGlvbnM7IG1hdHJpeCBhbGdlYnJhOyBwcmVjZWRlbmNlIGdyYW1tYXJzOyBzeW50YXgiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle09SZWFnYW46MTk3MjpDQUMsCiAgYXV0aG9yID0gICAgICAgIlJvYmVydCBULiBPJ1JlYWdhbiIsCiAgdGl0bGUgPSAgICAgICAgIkNvbXB1dGVyIEFzc2lnbmVkIENvZGVzIGZyb20gVmVyYmFsIFJlc3BvbnNlcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjYiLAogIHBhZ2VzID0gICAgICAgICI0NTUtLTQ1OSIsCiAgbW9udGggPSAgICAgICAganVuLAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgImZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGF0YWJhc2UvV2llZGVyaG9sZC5iaWIiLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVTIEJ1cmVhdSBvZiB0aGUgQ2Vuc3VzLCBXYXNoaW5ndG9uLCBEQywgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiY29kZXM7IGNvbXB1dGVyIGNvZGluZzsgY29uY2VwdDsgZGF0YSBoYW5kbGluZzsgaGlzdG9yaWNhbCByZXNwb25zZSBwYXR0ZXJuczsgcmVmZXJlbmNlIGxpc3Q7IHRyYW5zbGF0aW9uOyB2ZXJiYWwgcmVzcG9uc2VzOyB3b3JkIGNvZGluZzsgd29yZCBzdHJpbmdzIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtJZ3VjaGk6MTk3MjpTTVMsCiAgYXV0aG9yID0gICAgICAgIksuIElndWNoaSIsCiAgdGl0bGUgPSAgICAgICAgIkEgc3RhcnRpbmcgbWV0aG9kIGZvciBzb2x2aW5nIG5vbmxpbmVhciB7Vm9sdGVycmF9IGludGVncmFsIGVxdWF0aW9ucyBvZiB0aGUgc2Vjb25kIGtpbmQiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTUiLAogIG51bWJlciA9ICAgICAgICI2IiwKICBwYWdlcyA9ICAgICAgICAiNDYwLS00NjEiLAogIG1vbnRoID0gICAgICAgIGp1biwKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDE2MCAoTnVtZXJpY2FsIGludGVncmF0aW9uIGFuZCBkaWZmZXJlbnRpYXRpb24pIiwKICBjb3Jwc291cmNlID0gICAiTmFnb3lhIFVuaXYuLCBKYXBhbiIsCiAga2V5d29yZHMgPSAgICAgImFsZ29yaXRobTsgZm91cnRoIG9yZGVyIG1ldGhvZDsgaW50ZWdyYWwgZXF1YXRpb25zOyBub25saW5lYXIgVm9sdGVycmEgaW50ZWdyYWwgZXF1YXRpb25zOyBudW1lcmljYWwgbWV0aG9kczsgc3RhcnRpbmcgbWV0aG9kIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtQb2hsOjE5NzI6U1BDLAogIGF1dGhvciA9ICAgICAgICJJLiBQb2hsIiwKICB0aXRsZSA9ICAgICAgICAiQSBTb3J0aW5nIFByb2JsZW0gYW5kIEl0cyBDb21wbGV4aXR5IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiNiIsCiAgcGFnZXMgPSAgICAgICAgIjQ2Mi0tNDY0IiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhYnN0cmFjdCA9ICAgICAiQSB0ZWNobmlxdWUgZm9yIHByb3ZpbmcgbWluLW1heCBub3JtcyBvZiBzb3J0aW5nIGFsZ29yaXRobXMgaXMgZ2l2ZW4uIE9uZSBuZXcgYWxnb3JpdGhtIGZvciBmaW5kaW5nIHRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIGVsZW1lbnRzIG9mIGEgc2V0IHdpdGggZmV3ZXN0IGNvbXBhcmlzb25zIGlzIHByb3ZlZCBvcHRpbWFsIHdpdGggdGhpcyB0ZWNobmlxdWUuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMzAgKERhdGEgaGFuZGxpbmcgdGVjaG5pcXVlcykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBDYWxpZm9ybmlhLCBTYW50YSBDcnV6LCBDQSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcGxleGl0eTsgY29tcHV0YXRpb25hbDsgY29tcHV0YXRpb25hbCBjb21iaW5hdG9yaWNzOyBjb21wdXRhdGlvbmFsIGNvbWJpbmF0b3JpZXM7IGNvbXB1dGF0aW9uYWwgY29tcGxleGl0eTsgbWluaW1heCBub3JtczsgbWluaW11bSBhbmQgbWF4aW11bSBlbGVtZW50czsgc29ydGluZyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7S29sYmlnOjE5NzI6Q0FDLAogIGF1dGhvciA9ICAgICAgICJLLiBTLiBLb2xiaWciLAogIHRpdGxlID0gICAgICAgICJDZXJ0aWZpY2F0aW9uIG9mIGFsZ29yaXRobSAzNjMgKGNvbXBsZXggZXJyb3IgZnVuY3Rpb24pIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiNiIsCiAgcGFnZXMgPSAgICAgICAgIjQ2NS0tNDY2IiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQxMjAgKEZ1bmN0aW9uYWwgYW5hbHlzaXMpOyBDNzMxMCAoTWF0aGVtYXRpY3MgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIkNFUk4sIEdlbmV2YSwgU3dpdHplcmxhbmQiLAogIGtleXdvcmRzID0gICAgICJjb21wbGV4IGVycm9yIGZ1bmN0aW9uOyBmdW5jdGlvbiBldmFsdWF0aW9uOyBzcGVjaWFsIGZ1bmN0aW9uczsgc3Vicm91dGluZXM7IFZvaWd0IGZ1bmN0aW9uIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtOaWVzc25lcjoxOTcyOlJBRSwKICBhdXRob3IgPSAgICAgICAiSC4gTmllc3NuZXIiLAogIHRpdGxlID0gICAgICAgICJSZW1hcmsgb24gYWxnb3JpdGhtIDM0MyAoRWlnZW52YWx1ZXMgYW5kIGVpZ2VudmVjdG9ycyBvZiBhIHJlYWwgZ2VuZXJhbCBtYXRyaXgpIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiNiIsCiAgcGFnZXMgPSAgICAgICAgIjQ2Ni0tNDY2IiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQxNDAgKExpbmVhciBhbGdlYnJhKTsgQzczMTAgKE1hdGhlbWF0aWNzIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJCcm93biwgQm92ZXJpIGFuZCBDby4sIEJhZGVuLCBTd2l0emVybGFuZCIsCiAga2V5d29yZHMgPSAgICAgImVpZ2VudmFsdWVzOyBlaWdlbnZhbHVlcyBhbmQgZWlnZW5mdW5jdGlvbnM7IGVpZ2VudmVjdG9yczsgRk9SVFJBTjsgZ2VuZXJhbDsgbWF0cmljZXM7IG1hdHJpeCBhbGdlYnJhOyBub25zeW1tZXRyaWMgbWF0cmljZXM7IFFSIGFsZ29yaXRobTsgc3Vicm91dGluZXMiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle1Byb2xsOjE5NzI6UkFBLAogIGF1dGhvciA9ICAgICAgICJMLiBHLiBQcm9sbCIsCiAgdGl0bGUgPSAgICAgICAgIlJlbWFyayBvbiBgYHtBQ00gQWxnb3JpdGhtIDM3MCAoR2VuZXJhbCByYW5kb20gbnVtYmVyIGdlbmVyYXRvcikgW0c1XScnfSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjYiLAogIHBhZ2VzID0gICAgICAgICI0NjctLTQ2OCIsCiAgbW9udGggPSAgICAgICAganVuLAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgImZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGlzdHJpYnV0ZWQvUUxELzE5NzIuYmliIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzc4OTAgKE90aGVyIHNwZWNpYWwgYXBwbGljYXRpb25zIG9mIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBTb3V0aGFtcHRvbiwgVUsiLAogIGNvdW50cnkgPSAgICAgICJVU0EiLAogIGRlc2NyaXB0b3JzID0gICJSVkc7IiwKICBlbnVtID0gICAgICAgICAiNzc4MyIsCiAga2V5d29yZHMgPSAgICAgImN1bXVsYXRpdmUgZGlzdHJpYnV0aW9uIGZ1bmN0aW9uOyBwcm9iYWJpbGl0eSBkZW5zaXR5IGZ1bmN0aW9uOyByYW5kb20gbnVtYmVyIGdlbmVyYXRpb247IHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yOyBzdWJyb3V0aW5lczsgdHJhbnNmb3JtYXRpb24iLAogIGxhbmd1YWdlID0gICAgICJFbmdsaXNoIiwKICByZWZlcmVuY2VzID0gICAiMCIsCiAgdHJlYXRtZW50ID0gICAgIkcgR2VuZXJhbCBSZXZpZXciLAp9CgpAQXJ0aWNsZXtTY2hyYWNrOjE5NzI6UkFSLAogIGF1dGhvciA9ICAgICAgICJHLiBGLiBTY2hyYWNrIiwKICB0aXRsZSA9ICAgICAgICAiUmVtYXJrIG9uIGFsZ29yaXRobSAzODEgKFJhbmRvbSB2ZWN0b3JzIHVuaWZvcm0gaW4gc29saWQgYW5nbGUpIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiNiIsCiAgcGFnZXMgPSAgICAgICAgIjQ2OC0tNDY4IiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzc4OTAgKE90aGVyIHNwZWNpYWwgYXBwbGljYXRpb25zIG9mIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBCcml0aXNoIENvbHVtYmlhLCBWYW5jb3V2ZXIsIEJDLCBDYW5hZGEiLAogIGtleXdvcmRzID0gICAgICJwb2ludHMgdW5pZm9ybSBvbjsgcmFuZG9tIG51bWJlciBnZW5lcmF0aW9uOyByYW5kb20gdmVjdG9yIGdlbmVyYXRvcjsgc29saWQgYW5nbGU7IHNwaGVyZTsgc3BoZXJpY2FsbHkgc3ltbWV0cmljIHByb2JhYmlsaXR5IGRpc3RyaWJ1dGlvbjsgc3Vicm91dGluZXMiLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uIiwKfQoKQEFydGljbGV7U2FsZToxOTcyOlJBUywKICBhdXRob3IgPSAgICAgICAiQS4gSC4gSi4gU2FsZSIsCiAgdGl0bGUgPSAgICAgICAgIlJlbWFyayBvbiBhbGdvcml0aG0gMzkzIChTcGVjaWFsIHNlcmllcyBzdW1tYXRpb24gd2l0aCBhcmJpdHJhcnkgcHJlY2lzaW9uKSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjYiLAogIHBhZ2VzID0gICAgICAgICI0NjgtLTQ2OSIsCiAgbW9udGggPSAgICAgICAganVuLAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MTIwIChGdW5jdGlvbmFsIGFuYWx5c2lzKTsgQzczMTAgKE1hdGhlbWF0aWNzIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBTeWRuZXksIE5TVywgQXVzdHJhbGlhIiwKICBrZXl3b3JkcyA9ICAgICAiYXBwcm94aW1hdGlvbjsgZnVuY3Rpb24gZXZhbHVhdGlvbjsgaGFybW9uaWMgc2VyaWVzOyBzZXJpZXMgc3VtbWF0aW9uOyBzdWJyb3V0aW5lcyIsCiAgdHJlYXRtZW50ID0gICAgIkEgQXBwbGljYXRpb24iLAp9CgpAQXJ0aWNsZXtFaW5hcnNzb246MTk3MjpSQUMsCiAgYXV0aG9yID0gICAgICAgIkIuIEVpbmFyc3NvbiIsCiAgdGl0bGUgPSAgICAgICAgIlJlbWFyayBvbiBhbGdvcml0aG0gNDE4IChDYWxjdWxhdGlvbiBvZiB7Rm91cmllcn0gaW50ZWdyYWxzKSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjYiLAogIHBhZ2VzID0gICAgICAgICI0NjktLTQ2OSIsCiAgbW9udGggPSAgICAgICAganVuLAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MTYwIChOdW1lcmljYWwgaW50ZWdyYXRpb24gYW5kIGRpZmZlcmVudGlhdGlvbik7IEM3MzEwIChNYXRoZW1hdGljcyBjb21wdXRpbmcpIiwKICBjb3Jwc291cmNlID0gICAiUmVzLiBJbnN0LiBOYXQuIERlZmVuc2UsIFR1bWJhLCBTd2VkZW4iLAogIGtleXdvcmRzID0gICAgICJhcHByb3hpbWF0aW9uOyBjb2VmZmljaWVudHM7IEZpbG9uIGludGVncmF0aW9uOyBGaWxvbiBxdWFkcmF0dXJlOyBGb3VyaWVyOyBGb3VyaWVyIGludGVncmFsczsgRm91cmllciBzZXJpZXM7IGludGVncmF0aW9uOyBudW1lcmljYWwgbWV0aG9kczsgcXVhZHJhdHVyZTsgUmljaGFyZHNvbiBleHRyYXBvbGF0aW9uOyBzcGxpbmU7IHNwbGluZXMgKG1hdGhlbWF0aWNzKTsgc3Vicm91dGluZXMiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0pvaG5zb246MTk3MjpSQUksCiAgYXV0aG9yID0gICAgICAgIlMuIEMuIEpvaG5zb24gYW5kIEIuIFcuIEtlcm5pZ2hhbiIsCiAgdGl0bGUgPSAgICAgICAgIlJlbWFyayBvbiBhbGdvcml0aG0gMzk3IChBbiBpbnRlZ2VyIHByb2dyYW1taW5nIHByb2JsZW0pIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiNiIsCiAgcGFnZXMgPSAgICAgICAgIjQ2OS0tNDY5IiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjAyNjAgKE9wdGltaXNhdGlvbiB0ZWNobmlxdWVzKTsgQzExODAgKE9wdGltaXNhdGlvbiB0ZWNobmlxdWVzKTsgQzczMTAgKE1hdGhlbWF0aWNzIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJCZWxsIExhYnMuLCBNdXJyYXkgSGlsbCwgTkosIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImNoYW5nZSBtYWtpbmcgcHJvYmxlbTsgaW50ZWdlciBwcm9ncmFtbWluZzsgc3Vicm91dGluZXMiLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uIiwKfQoKQEFydGljbGV7S2FuZGVsOjE5NzI6Q1NWLAogIGF1dGhvciA9ICAgICAgICJBYnJhaGFtIEthbmRlbCIsCiAgdGl0bGUgPSAgICAgICAgIkNvbXB1dGVyIFNjaWVuY2UgLS0tIHtBfSBWaWNpb3VzIENpcmNsZSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjYiLAogIHBhZ2VzID0gICAgICAgICI0NzAtLTQ3MSIsCiAgbW9udGggPSAgICAgICAganVuLAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMwMjIwIChDb21wdXRpbmcgZWR1Y2F0aW9uIGFuZCB0cmFpbmluZykiLAogIGNvcnBzb3VyY2UgPSAgICJOZXcgTWV4aWNvIEluc3QuIE1pbmluZyBhbmQgVGVjaG5vbC4sIFNvY29ycm8sIE5NLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBlbmdpbmVlcmluZzsgY29tcHV0ZXIgcGVyc29ubmVsOyBjb21wdXRlciBzY2llbmNlIGN1cnJpY3VsdW07IGVkdWNhdGlvbjsgcGVyc29ubmVsOyBzeXN0ZW1zIGRlc2lnbiIsCiAgdHJlYXRtZW50ID0gICAgIkcgR2VuZXJhbCBSZXZpZXciLAp9CgpAQXJ0aWNsZXtLb2ZmbWFuOjE5NzI6SUlHLAogIGF1dGhvciA9ICAgICAgICJFLiBCLiBLb2ZmbWFuIiwKICB0aXRsZSA9ICAgICAgICAiSW5kaXZpZHVhbGl6aW5nIGluc3RydWN0aW9uIGluIGEgZ2VuZXJhdGl2ZSB7Q0FJfSB0dXRvciIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjYiLAogIHBhZ2VzID0gICAgICAgICI0NzItLTQ3MyIsCiAgbW9udGggPSAgICAgICAganVuLAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMwMjIwIChDb21wdXRpbmcgZWR1Y2F0aW9uIGFuZCB0cmFpbmluZyk7IEM3ODEwQyAoQ29tcHV0ZXItYWlkZWQgaW5zdHJ1Y3Rpb24pIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gQ29ubmVjdGljdXQsIFN0b3JycywgQ1QsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImFkYXB0aXZlIGluc3RydWN0aW9uOyBhbmQgc2VxdWVudGlhbCBkZXNpZ247IGNvbWJpbmF0aW9uYWw7IGNvbXB1dGVyIGFpZGVkIGluc3RydWN0aW9uOyBjb21wdXRlciBhc3Npc3RlZCBpbnN0cnVjdGlvbnM7IGVkdWNhdGlvbjsgZ2VuZXJhdGl2ZSBDQUkgdHV0b3I7IG1hY2hpbmUgbGFuZ3VhZ2UgcHJvZ3JhbW1pbmciLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0hvdXN0aXM6MTk3MjpBQVAsCiAgYXV0aG9yID0gICAgICAgIkUuIE4uIEhvdXN0aXMgYW5kIFcuIEYuIE1pdGNoZWxsIGFuZCBKLiBSLiBSaWNlIiwKICB0aXRsZSA9ICAgICAgICAie0FDTX0gQWxnb3JpdGhtIDQzODogUHJvZHVjdCBUeXBlIFR3by1wb2ludCB7R2F1c3MtTGVnZW5kcmUtU2ltcHNvbn0ncyBJbnRlZ3JhdGlvbiIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjYiLAogIHBhZ2VzID0gICAgICAgICIxMDcxIiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUaHUgU2VwIDA4IDA5OjM0OjAyIDE5OTQiLAp9CgpAQXJ0aWNsZXtSZXZlbnM6MTk3MjpGVEYsCiAgYXV0aG9yID0gICAgICAgIkxlZSBSZXZlbnMiLAogIHRpdGxlID0gICAgICAgICJUaGUgZmlyc3QgdHdlbnR5LWZpdmUgeWVhcnMge0FDTX0gMTk0Ny0tMTk2MiIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjciLAogIHBhZ2VzID0gICAgICAgICI0ODUtLTQ5MCIsCiAgbW9udGggPSAgICAgICAganVsLAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjgtMDMiLAogIE1SbnVtYmVyID0gICAgICI1MiAxNjA4MSIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBEZWMgMjYgMTM6MzU6MDcgMTk5NSIsCiAgbm90ZSA9ICAgICAgICAgIlR3ZW50eS1maWZ0aCBhbm5pdmVyc2FyeSBvZiB0aGUgQXNzb2NpYXRpb24gZm9yIENvbXB1dGluZyBNYWNoaW5lcnkuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKfQoKQEFydGljbGV7V2Vpc3M6MTk3MjpQQ0ksCiAgYXV0aG9yID0gICAgICAgIkVyaWMgQS4gV2Vpc3MiLAogIHRpdGxlID0gICAgICAgICJQdWJsaWNhdGlvbnMgaW4gY29tcHV0aW5nOiBhbiBpbmZvcm1hbCByZXZpZXciLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTUiLAogIG51bWJlciA9ICAgICAgICI3IiwKICBwYWdlcyA9ICAgICAgICAiNDkxLS00OTciLAogIG1vbnRoID0gICAgICAgIGp1bCwKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4LTAzIiwKICBNUm51bWJlciA9ICAgICAiNTIgMTYwODMiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBub3RlID0gICAgICAgICAiVHdlbnR5LWZpZnRoIGFubml2ZXJzYXJ5IG9mIHRoZSBBc3NvY2lhdGlvbiBmb3IgQ29tcHV0aW5nIE1hY2hpbmVyeS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDMDIwMCAoR2VuZXJhbCBjb21wdXRlciB0b3BpY3MpIiwKICBrZXl3b3JkcyA9ICAgICAiZGlnaXRhbCBjb21wdXRlcnM7IHB1YmxpY2F0aW9ucyBpbiBjb21wdXRpbmc7IHJldmlldyIsCiAgdHJlYXRtZW50ID0gICAgIkIgQmlibGlvZ3JhcGh5IiwKfQoKQEFydGljbGV7RXJzaG92OjE5NzI6QUhGLAogIGF1dGhvciA9ICAgICAgICJBLiBQLiBFcnNob3YiLAogIHRpdGxlID0gICAgICAgICJBZXN0aGV0aWNzIGFuZCB0aGUgSHVtYW4gRmFjdG9yIGluIFByb2dyYW1taW5nIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiNyIsCiAgcGFnZXMgPSAgICAgICAgIjUwMS0tNTA1IiwKICBtb250aCA9ICAgICAgICBqdWwsCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBub3RlID0gICAgICAgICAiU2VlIGNvcnJpZ2VuZHVtIFxjaXRle0Vyc2hvdjoxOTcyOkNBSH0uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMTAgKFN5c3RlbXMgYW5hbHlzaXMgYW5kIHByb2dyYW1taW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIk5vdm9zaWJpcnNrIFVuaXYuLCBVU1NSIiwKICBrZXl3b3JkcyA9ICAgICAiYWVzdGhldGljczsgaHVtYW4gZmFjdG9yOyBodW1hbiBmYWN0b3JzOyBwcm9ncmFtbWluZyIsCiAgdHJlYXRtZW50ID0gICAgIkcgR2VuZXJhbCBSZXZpZXciLAp9CgpAQXJ0aWNsZXtBbm9ueW1vdXM6MTk3MjpJU0ksCiAgYXV0aG9yID0gICAgICAgIkFub255bW91cyIsCiAgdGl0bGUgPSAgICAgICAgIkFzIHRoZSBpbmR1c3RyeSBzZWVzIGl0IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiNyIsCiAgcGFnZXMgPSAgICAgICAgIjUwNi0tNTE3IiwKICBtb250aCA9ICAgICAgICBqdWwsCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzAyMDAgKEdlbmVyYWwgY29tcHV0ZXIgdG9waWNzKSIsCiAga2V5d29yZHMgPSAgICAgImRpZ2l0YWwgY29tcHV0ZXJzOyBmdXR1cmUgb2YgY29tcHV0ZXJzOyBpbmR1c3RyeSIsCiAgdHJlYXRtZW50ID0gICAgIkcgR2VuZXJhbCBSZXZpZXciLAp9CgpAQXJ0aWNsZXtBcmJpYjoxOTcyOlRBVCwKICBhdXRob3IgPSAgICAgICAiTWljaGFlbCBBLiBBcmJpYiIsCiAgdGl0bGUgPSAgICAgICAgIlRvd2FyZCBhbiBBdXRvbWF0YSBUaGVvcnkgb2YgQnJhaW5zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiNyIsCiAgcGFnZXMgPSAgICAgICAgIjUyMS0tNTI3IiwKICBtb250aCA9ICAgICAgICBqdWwsCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2OEEyNSAoOTJBMDUpIiwKICBNUm51bWJlciA9ICAgICAiNTMgNzEzMSIsCiAgbXJyZXZpZXdlciA9ICAgIkppbGwgSHVtcGhyaWVzIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgbm90ZSA9ICAgICAgICAgIlR3ZW50eS1maWZ0aCBhbm5pdmVyc2FyeSBvZiB0aGUgQXNzb2NpYXRpb24gZm9yIENvbXB1dGluZyBNYWNoaW5lcnkuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQyMjAgKEF1dG9tYXRhIHRoZW9yeSkiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBNYXNzYWNodXNldHRzLCBBbWhlcnN0LCBNQSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiYXV0b21hdGEgdGhlb3J5OyBicmFpbiBtb2RlbHM7IGJyYWlucyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7TWFubmE6MTk3MjpGQVQsCiAgYXV0aG9yID0gICAgICAgIlpvaGFyIE1hbm5hIGFuZCBKZWFuIFZ1aWxsZW1pbiIsCiAgdGl0bGUgPSAgICAgICAgIkZpeHBvaW50IEFwcHJvYWNoIHRvIHRoZSBUaGVvcnkgb2YgQ29tcHV0YXRpb24iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTUiLAogIG51bWJlciA9ICAgICAgICI3IiwKICBwYWdlcyA9ICAgICAgICAiNTI4LS01MzYiLAogIG1vbnRoID0gICAgICAgIGp1bCwKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4QTA1IiwKICBNUm51bWJlciA9ICAgICAiNTUgMTM4NTkiLAogIG1ycmV2aWV3ZXIgPSAgICJBbmRyZWEgTWFnZ2lvbG8tU2NoZXR0aW5pIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgImZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvQ29tcGlsZXIvc2VtYW50aWNzLmJpYiIsCiAgbm90ZSA9ICAgICAgICAgIlR3ZW50eS1maWZ0aCBhbm5pdmVyc2FyeSBvZiB0aGUgQXNzb2NpYXRpb24gZm9yIENvbXB1dGluZyBNYWNoaW5lcnkuIiwKICBhYnN0cmFjdCA9ICAgICAiRm9sbG93aW5nIHRoZSBmaXggcG9pbnQgdGhlb3J5IG9mIFNjb3R0LCB0aGUgc2VtYW50aWNzIG9mIGNvbXB1dGVyIHByb2dyYW1zIGFyZSBkZWZpbmVkIGluIHRlcm1zIG9mIHRoZSBsZWFzdCBmaXggcG9pbnRzIG9mIHJlY3Vyc2l2ZSBwcm9ncmFtcy4gVGhpcyBhbGxvd3Mgbm90IG9ubHkgdGhlIGp1c3RpZmljYXRpb24gb2YgYWxsIGV4aXN0aW5nIHZlcmlmaWNhdGlvbiB0ZWNobmlxdWVzLCBidXQgYWxzbyB0aGVpciBleHRlbnNpb24gdG8gdGhlIGhhbmRsaW5nLCBpbiBhIHVuaWZvcm0gbWFubmVyIG9mIHZhcmlvdXMgcHJvcGVydGllcyBvZiBjb21wdXRlciBwcm9ncmFtcywgaW5jbHVkaW5nIGNvcnJlY3RuZXNzLCB0ZXJtaW5hdGlvbiwgYW5kIGVxdWl2YWxlbmNlLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MjkwIChPdGhlciBjb21wdXRlciB0aGVvcnkpIiwKICBjb3Jwc291cmNlID0gICAiU3RhbmZvcmQgVW5pdi4sIENBLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJjb21wdXRhdGlvbjsgY29tcHV0YXRpb25hbCBpbmR1Y3Rpb247IGNvbXB1dGF0aW9uYWwgbGluZ3Vpc3RpY3M7IGNvcnJlY3RuZXNzOyBlcXVpdmFsZW5jZTsgZml4cG9pbnRzOyBsZWFzdDsgbGVhc3QgZml4IHBvaW50czsgcHJvZ3JhbSBkaWFnbm9zdGljczsgcHJvZ3JhbW1pbmc7IHJlY3Vyc2l2ZSBwcm9ncmFtczsgc2VtYW50aWNzIG9mIGNvbXB1dGVyIHByb2dyYW1zOyBzZW1hbnRpY3Mgb2YgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzOyB0ZXJtaW5hdGlvbjsgdGhlb3J5OyB2ZXJpZmljYXRpb24gdGVjaG5pcXVlcyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7VHJhdWI6MTk3MjpOTUMsCiAgYXV0aG9yID0gICAgICAgIkouIEYuIFRyYXViIiwKICB0aXRsZSA9ICAgICAgICAiTnVtZXJpY2FsIE1hdGhlbWF0aWNzIGFuZCBDb21wdXRlciBTY2llbmNlIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiNyIsCiAgcGFnZXMgPSAgICAgICAgIjUzNy0tNTQxIiwKICBtb250aCA9ICAgICAgICBqdWwsCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2NS0wMyIsCiAgTVJudW1iZXIgPSAgICAgIjU0IDQwMzEiLAogIG1ycmV2aWV3ZXIgPSAgICJSLiBILiBCYXJ0ZWxzIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgbm90ZSA9ICAgICAgICAgIlR3ZW50eS1maWZ0aCBhbm5pdmVyc2FyeSBvZiB0aGUgQXNzb2NpYXRpb24gZm9yIENvbXB1dGluZyBNYWNoaW5lcnkuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQxMDAgKE51bWVyaWNhbCBhbmFseXNpcykiLAogIGNvcnBzb3VyY2UgPSAgICJDYXJuZWdpZS1NZWxsb24gVW5pdi4sIFBpdHRzYnVyZ2gsIFBBLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJhbGdvcml0aG1zOyBjb21wdXRlciBzY2llbmNlOyBmb3VuZGF0aW9uczsgbnVtZXJpY2FsIG1hdGhlbWF0aWNzOyBudW1lcmljYWwgbWV0aG9kczsgcmV2aWV3czsgc3ludGhlc2lzIGFuZCBhbmFseXNpcyIsCiAgdHJlYXRtZW50ID0gICAgIkcgR2VuZXJhbCBSZXZpZXciLAp9CgpAQXJ0aWNsZXtTaGFubm86MTk3MjpNU1YsCiAgYXV0aG9yID0gICAgICAgIkRhdmlkIEYuIFNoYW5ubyBhbmQgUm9tYW4gTC4gV2VpbCIsCiAgdGl0bGUgPSAgICAgICAgIk1hbmFnZW1lbnQgc2NpZW5jZTogYSB2aWV3IGZyb20gbm9ubGluZWFyIHByb2dyYW1taW5nIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiNyIsCiAgcGFnZXMgPSAgICAgICAgIjU0Mi0tNTQ5IiwKICBtb250aCA9ICAgICAgICBqdWwsCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI5MEMxMCAoOTBDMzApIiwKICBNUm51bWJlciA9ICAgICAiNTUgOTk3MCIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIG5vdGUgPSAgICAgICAgICJUd2VudHktZmlmdGggYW5uaXZlcnNhcnkgb2YgdGhlIEFzc29jaWF0aW9uIGZvciBDb21wdXRpbmcgTWFjaGluZXJ5LiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkIwMjYwIChPcHRpbWlzYXRpb24gdGVjaG5pcXVlcyk7IEMxMTgwIChPcHRpbWlzYXRpb24gdGVjaG5pcXVlcykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBUb3JvbnRvLCBPbnQuLCBDYW5hZGEiLAogIGtleXdvcmRzID0gICAgICJpbnRlZ2VyOyBtYW5hZ2VtZW50IHNjaWVuY2U7IG1hdGhlbWF0aWNhbCBwcm9ncmFtbWluZzsgbm9ubGluZWFyIHByb2dyYW1taW5nOyByZXZpZXdzIiwKICB0cmVhdG1lbnQgPSAgICAiQiBCaWJsaW9ncmFwaHk7IEcgR2VuZXJhbCBSZXZpZXciLAp9CgpAQXJ0aWNsZXtNb3NlczoxOTcyOlRHVCwKICBhdXRob3IgPSAgICAgICAiSm9lbCBNb3NlcyIsCiAgdGl0bGUgPSAgICAgICAgIlRvd2FyZCBhIEdlbmVyYWwgVGhlb3J5IG9mIFNwZWNpYWwgRnVuY3Rpb25zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiNyIsCiAgcGFnZXMgPSAgICAgICAgIjU1MC0tNTU2IChvciA1NTAtLTU1ND8/KSIsCiAgbW9udGggPSAgICAgICAganVsLAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiMzQtMDIgMTJIMDUiLAogIE1SbnVtYmVyID0gICAgICI1MyAzMzg0IiwKICBtcnJldmlld2VyID0gICAiSy4gT2t1Z2F3YSIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIG5vdGUgPSAgICAgICAgICJUd2VudHktZmlmdGggYW5uaXZlcnNhcnkgb2YgdGhlIEFzc29jaWF0aW9uIGZvciBDb21wdXRpbmcgTWFjaGluZXJ5LiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMxMTAwIChNYXRoZW1hdGljYWwgdGVjaG5pcXVlcykiLAogIGtleXdvcmRzID0gICAgICJnZW5lcmFsIHRoZW9yeTsgbWF0aGVtYXRpY3M7IHNwZWNpYWwgZnVuY3Rpb25zIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtGb3N0ZXI6MTk3MjpWQ0EsCiAgYXV0aG9yID0gICAgICAgIkMuIEMuIEZvc3RlciIsCiAgdGl0bGUgPSAgICAgICAgIkEgdmlldyBvZiBjb21wdXRlciBhcmNoaXRlY3R1cmUiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTUiLAogIG51bWJlciA9ICAgICAgICI3IiwKICBwYWdlcyA9ICAgICAgICAiNTU3LS01NjUiLAogIG1vbnRoID0gICAgICAgIGp1bCwKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNTIyMCAoQ29tcHV0ZXIgYXJjaGl0ZWN0dXJlKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIE1hc3NhY2h1c2V0dHMsIEFtaGVyc3QsIE1BLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBhcmNoaXRlY3R1cmU7IG1pY3JvY29tcHV0ZXJzOyBwcmVkaWN0OyByZXZpZXdzIiwKICB0cmVhdG1lbnQgPSAgICAiRyBHZW5lcmFsIFJldmlldyIsCn0KCkBBcnRpY2xle0ZyYXNlcjoxOTcyOklCQywKICBhdXRob3IgPSAgICAgICAiQS4gRy4gRnJhc2VyIiwKICB0aXRsZSA9ICAgICAgICAiT24gdGhlIGludGVyZmFjZSBiZXR3ZWVuIGNvbXB1dGVycyBhbmQgZGF0YSBjb21tdW5pY2F0aW9ucyBzeXN0ZW1zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiNyIsCiAgcGFnZXMgPSAgICAgICAgIjU2Ni0tNTczIiwKICBtb250aCA9ICAgICAgICBqdWwsCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EaXN0cmlidXRlZC9uZXR3b3JrLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIlJlcHJvZHVjZWQgaW4gQWR2YW5jZXMgaW4gQ29tcHV0ZXIgQ29tbXVuLiwgQ2h1LFcuVyAoRWQuKSwgKDE5NzQpLCAyNDYtMjUzLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM1NjEwIChDb21wdXRlciBpbnRlcmZhY2VzKSIsCiAgY29ycHNvdXJjZSA9ICAgIkJlbGwgVGVsZXBob25lIExhYnMuIEluYy4sIE11cnJheSBIaWxsLCBOSiwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgaW50ZXJmYWNlczsgY29tcHV0ZXJzOyBkYXRhIGNvbW11bmljYXRpb24gc3lzdGVtczsgZGF0YSBjb21tdW5pY2F0aW9uczsgaW50ZXJmYWNlOyBzcGVjaWZ5aW5nIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtCcmluY2hIYW5zZW46MTk3MjpTTSwKICBhdXRob3IgPSAgICAgICAiUGVyIHtCcmluY2ggSGFuc2VufSIsCiAgdGl0bGUgPSAgICAgICAgIlN0cnVjdHVyZWQgTXVsdGlwcm9ncmFtbWluZyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjciLAogIHBhZ2VzID0gICAgICAgICI1NzQtLTU3OCIsCiAgbW9udGggPSAgICAgICAganVsLAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgImZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvT2JqZWN0L05pZXJzdHJhc3ouYmliIGFuZCBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L09zL29zLmJpYiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgYW5ub3RlID0gICAgICAgIlRoaXMgcGFwZXIgcHJlc2VudHMgYSBwcm9wb3NhbCBmb3Igc3RydWN0dXJlZCByZXByZXNlbnRhdGlvbiBvZiBtdWx0aXByb2dyYW1taW5nIGluIGEgaGlnaCBsZXZlbCBsYW5ndWFnZS4gU2hhcmVkIHZhcmlhYmxlcyBhcmUgaW50cm9kdWNlZCwgYW5kIHRoZWlyIHJvbGUgaW4gYGNyaXRpY2FsIHJlZ2lvbnMgKGRlbm90ZWQgYnkgdGhlIHN0cnVjdHVyZWQgc3RhdGVtZW50IHJlZ2lvbiB2YXIgZG8gU3RhdGVtZW50JykgaXMgZGlzY3Vzc2VkLiBBIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmUgYGF3YWl0IEJvb2xlYW4nIGRlbGF5cyBhIHByb2Nlc3MgdW50aWwgdGhlIGNvbXBvbmVudHMgb2YgYSBzaGFyZWQgdmFyaWFibGUgc2F0aXNmeSB0aGUgYm9vbGVhbiBleHByZXNzaW9uLiBGb3IgZXhwbGljaXQgY29udHJvbCBvZiB0aGUgc2NoZWR1bGluZyBvZiByZXNvdXJjZXMsIGFuIGV2ZW50IHF1ZXVlIGlzIGFzc29jaWF0ZWQgd2l0aCBhIHNoYXJlZCB2YXJpYWJsZSwgYW5kIHR3byBwcm9jZWR1cmVzIGF3YWl0IChldmVudCkgKGxlYXZlIGEgY3JpdGljYWwgcmVnaW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgc2hhcmVkIHZhcmlhYmxlIGFuZCBqb2luIHRoZSBldmVudCBxdWV1ZSkgYW5kIGNhdXNlIChldmVudCkgKGVuYWJsZSBhbGwgcHJvY2Vzc2VzIGluIHRoZSBldmVudCBxdWV1ZSB0byByZWVudGVyIHRoZWlyIGNyaXRpY2FsIHJlZ2lvbnMpIGFyZSBwcm92aWRlZCwgd2hpY2ggY2FuIGNvbnRyb2wgcHJvY2VzcyBzY2hlZHVsaW5nIHRvIGFueSBkZWdyZWUgZGVzaXJlZC4iLAogIGNsYXNzY29kZXMgPSAgICJDNjE1MEogKE9wZXJhdGluZyBzeXN0ZW1zKSIsCiAgY29ycHNvdXJjZSA9ICAgIkNhbGlmb3JuaWEgSW5zdC4gVGVjaG5vbC4sIFBhc2FkZW5hLCBDQSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiY29uY3VycmVuY3kiLAogIGtleXdvcmRzID0gICAgICJjcml0aWNhbCByZWdpb25zOyBldmVudCB2YXJpYWJsZXM7IGhpZ2ggbGV2ZWw7IGxhbmd1YWdlOyBtdWx0aXByb2dyYW1taW5nOyBvcGVyYXRpbmcgc3lzdGVtczsgc3RydWN0dXJlZCBtdWx0aXByb2dyYW1taW5nIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtMeW5jaDoxOTcyOk9TUCwKICBhdXRob3IgPSAgICAgICAiVy4gQy4gTHluY2giLAogIHRpdGxlID0gICAgICAgICJPcGVyYXRpbmcgc3lzdGVtIHBlcmZvcm1hbmNlIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiNyIsCiAgcGFnZXMgPSAgICAgICAgIjU3OS0tNTg1IiwKICBtb250aCA9ICAgICAgICBqdWwsCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxNTBKIChPcGVyYXRpbmcgc3lzdGVtcykiLAogIGNvcnBzb3VyY2UgPSAgICJDYXNlIFdlc3Rlcm4gUmVzLiBVbml2LiwgQ2xldmVsYW5kLCBPSCwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXI7IG1vZGVsOyBvcGVyYXRpbmcgc3lzdGVtIHBlcmZvcm1hbmNlOyBvcGVyYXRpbmcgc3lzdGVtcyAoY29tcHV0ZXJzKTsgcmV2aWV3czsgc3lzdGVtczsgdG90YWwgc3lzdGVtIiwKICB0cmVhdG1lbnQgPSAgICAiRyBHZW5lcmFsIFJldmlldyIsCn0KCkBBcnRpY2xle0tpbWJsZXRvbjoxOTcyOlJDUywKICBhdXRob3IgPSAgICAgICAiUy4gUi4gS2ltYmxldG9uIiwKICB0aXRsZSA9ICAgICAgICAiVGhlIHJvbGUgb2YgY29tcHV0ZXIgc3lzdGVtIG1vZGVscyBpbiBwZXJmb3JtYW5jZSBldmFsdWF0aW9uIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiNyIsCiAgcGFnZXMgPSAgICAgICAgIjU4Ni0tNTkwIiwKICBtb250aCA9ICAgICAgICBqdWwsCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzAzMTAgKEVEUCBtYW5hZ2VtZW50KTsgQzEyMjAgKFNpbXVsYXRpb24sIG1vZGVsbGluZyBhbmQgaWRlbnRpZmljYXRpb24pOyBDNjE1MEogKE9wZXJhdGluZyBzeXN0ZW1zKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVOSVYuIE1pY2hpZ2FuLCBBbm4gQXJib3IsIE1JLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBzZWxlY3Rpb24gYW5kIGV2YWx1YXRpb247IGNvbXB1dGVyIHN5c3RlbSBtb2RlbHM7IGV2YWx1YXRpb247IG1vZGVsbGluZzsgb3BlcmF0aW5nOyBvcGVyYXRpbmcgc3lzdGVtczsgcGVyZm9ybWFuY2U7IHN5c3RlbXMgKGNvbXB1dGVycykiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle1Jvc2VuOjE5NzI6UFNMLAogIGF1dGhvciA9ICAgICAgICJTYXVsIFJvc2VuIiwKICB0aXRsZSA9ICAgICAgICAiUHJvZ3JhbW1pbmcgU3lzdGVtcyBhbmQgTGFuZ3VhZ2VzICgxOTY1LS0xOTc1KSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjciLAogIHBhZ2VzID0gICAgICAgICI1OTEtLTYwMCIsCiAgbW9udGggPSAgICAgICAganVsLAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWJzdHJhY3QgPSAgICAgIkluIHNwaXRlIG9mIGltcHJlc3NpdmUgZ2FpbnMgYnkgUEwvSSwgRm9ydHJhbiBhbmQgQ29ib2wgcmVtYWluIHRoZSBsYW5ndWFnZXMgaW4gd2hpY2ggbW9zdCBvZiB0aGUgd29ybGQncyBwcm9kdWN0aW9uIHByb2dyYW1zIGFyZSB3cml0dGVuIGFuZCB3aWxsIHJlbWFpbiBzbyBpbnRvIHRoZSBmb3Jlc2VlYWJsZSBmdXR1cmUuIFRoZXJlIGlzIGEgZ3JlYXQgZGVhbCBvZiB0aGVvcmV0aWNhbCBpbnRlcmVzdCBpbiBBbGdvbCA2OCBhbmQgaW4gZXh0ZW5zaWJsZSBsYW5ndWFnZXMsIGJ1dCBzbyBmYXIgYXQgbGVhc3QgdGhleSBoYXZlIGhhZCBsaXR0bGUgcHJhY3RpY2FsIGltcGFjdC4gUHJvYmxlbS1vcmllbnRlZCBsYW5ndWFnZXMgbWF5IHZlcnkgd2VsbCBiZWNvbWUgdGhlIG1vc3QgaW1wb3J0YW50IGxhbmd1YWdlIGRldmVsb3BtZW50IGFyZWEgaW4gdGhlIG5leHQgZml2ZSB0byB0ZW4geWVhcnMuXHBhciBJbiB0aGUgb3BlcmF0aW5nIHN5c3RlbSBhcmVhIGFsbCBtYWpvciBjb21wdXRlciBtYW51ZmFjdHVyZXJzIHNldCBvdXQgdG8gcHJvZHVjZSB2ZXJ5IGFtYml0aW91cyBtdWx0aXByb2dyYW1taW5nIHN5c3RlbXMsIGFuZCB0aGV5IGFsbCByYW4gaW50byBzaW1pbGFyIHByb2JsZW1zLiBBIG51bWJlciBvZiB1bml2ZXJzaXR5IHByb2plY3RzLHRob3VnaCBub3QgZGlyZWN0bHkgY29tcGFyYWJsZSB0byB0aG9zZSBvZiB0aGUgbWFudWZhY3R1cmVycywgaGF2ZSBjb250cmlidXRlZCBncmVhdGx5IHRvIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2Ygb3BlcmF0aW5nIHN5c3RlbSBwcmluY2lwbGVzLiBJbXBvcnRhbnQgdHJlbmRzIGluY2x1ZGUgdGhlIGluY3JlYXNlZCBpbnRlcmVzdCBpbiB0aGUgZGV2ZWxvcG1lbnQgb2Ygc3lzdGVtIG1lYXN1cmVtZW50IGFuZCBldmFsdWF0aW9uIHRlY2huaXF1ZXMsYW5kIGluY3JlYXNlZCB1c2Ugb2YgbWljcm9wcm9ncmFtbWluZyBmb3Igc29tZSBwcm9ncmFtbWluZyBzeXN0ZW0gZnVuY3Rpb25zLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTQwIChQcm9ncmFtbWluZyBsYW5ndWFnZXMpOyBDNjE1MEogKE9wZXJhdGluZyBzeXN0ZW1zKSIsCiAgY29ycHNvdXJjZSA9ICAgIlB1cmR1ZSBVbml2LiwgTGFmYXlldHRlLCBJTiwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiaGlzdG9yeTsgbGFuZ3VhZ2VzOyBtaWNyb3Byb2dyYW1taW5nOyBtdWx0aXByb2dyYW1taW5nOyBvcGVyYXRpbmcgc3lzdGVtOyBvcGVyYXRpbmcgc3lzdGVtczsgb3BlcmF0aW5nIHN5c3RlbXMgKGNvbXB1dGVycyk7IHByb2JsZW0gb3JpZW50ZWQgbGFuZ3VhZ2VzOyBwcm9ncmFtbWluZzsgcHJvZ3JhbW1pbmcgc3lzdGVtczsgcmV2aWV3cyIsCiAgdHJlYXRtZW50ID0gICAgIkcgR2VuZXJhbCBSZXZpZXciLAp9CgpAQXJ0aWNsZXtTYW1tZXQ6MTk3MjpQTEgsCiAgYXV0aG9yID0gICAgICAgIkplYW4gRS4gU2FtbWV0IiwKICB0aXRsZSA9ICAgICAgICAiUHJvZ3JhbW1pbmcgTGFuZ3VhZ2VzOiBIaXN0b3J5IGFuZCBGdXR1cmUiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTUiLAogIG51bWJlciA9ICAgICAgICI3IiwKICBwYWdlcyA9ICAgICAgICAiNjAxLS02MTAiLAogIG1vbnRoID0gICAgICAgIGp1bCwKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFic3RyYWN0ID0gICAgICJUaGlzIHBhcGVyIGRpc2N1c3NlcyBib3RoIHRoZSBoaXN0b3J5IGFuZCBmdXR1cmUgb2YgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzICg9IGhpZ2hlciBsZXZlbCBsYW5ndWFnZXMpLiBccGFyIFNvbWUgb2YgdGhlIGRpZmZpY3VsdGllcyBpbiB3cml0aW5nIHN1Y2ggYSBoaXN0b3J5IGFyZSBpbmRpY2F0ZWQuIEEga2V5IHBhcnQgb2YgdGhlIHBhcGVyIGlzIGEgdHJlZSBzaG93aW5nIHRoZSBjaHJvbm9sb2dpY2FsIGRldmVsb3BtZW50IG9mIGxhbmd1YWdlcyBhbmQgdGhlaXIgaW50ZXJyZWxhdGlvbnNoaXBzLiBSZWFzb25zIGZvciB0aGUgcHJvbGlmZXJhdGlvbiBvZiBsYW5ndWFnZXMgYXJlIGdpdmVuLiBUaGUgbWFqb3IgbGFuZ3VhZ2VzIGFyZSBsaXN0ZWQgd2l0aCB0aGUgcmVhc29ucyBmb3IgdGhlaXIgaW1wb3J0YW5jZS4gQSBzZWN0aW9uIG9uIGNocm9ub2xvZ3kgaW5kaWNhdGVzIHRoZSBoYXBwZW5pbmdzIG9mIHRoZSBzaWduaWZpY2FudCBwcmV2aW91cyB0aW1lIHBlcmlvZHMgYW5kIHRoZSBtYWpvciB0b3BpY3Mgb2YgMTk3Mi4gS2V5IGNvbmNlcHRzIG90aGVyIHRoYW4gc3BlY2lmaWMgbGFuZ3VhZ2VzIGFyZSBkaXNjdXNzZWQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxNDAgKFByb2dyYW1taW5nIGxhbmd1YWdlcykiLAogIGNvcnBzb3VyY2UgPSAgICJJQk0gQ29ycC4sIENhbWJyaWRnZSwgTUEsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImNocm9ub2xvZ2ljYWw7IGRldmVsb3BtZW50OyBmdXR1cmU7IGZ1dHVyZSBkaXJlY3Rpb25zOyBoaWdoZXIgbGV2ZWwgbGFuZ3VhZ2VzOyBoaXN0b3J5OyBsYW5ndWFnZSBpbnRlcnJlbGF0aW9uc2hpcHM7IGxhbmd1YWdlczsgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgZnV0dXJlOyBwcm9ncmFtbWluZyBsYW5ndWFnZSBoaXN0b3J5OyBwcm9ncmFtbWluZyBsYW5ndWFnZSB0cmVlOyBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IHJldmlld3MiLAogIHRyZWF0bWVudCA9ICAgICJHIEdlbmVyYWwgUmV2aWV3IiwKfQoKQEFydGljbGV7Rm9zZGljazoxOTcyOlBCTSwKICBhdXRob3IgPSAgICAgICAiTC4gRC4gRm9zZGljayIsCiAgdGl0bGUgPSAgICAgICAgIlRoZSBwcm9kdWN0aW9uIG9mIGJldHRlciBtYXRoZW1hdGljYWwgc29mdHdhcmUiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTUiLAogIG51bWJlciA9ICAgICAgICI3IiwKICBwYWdlcyA9ICAgICAgICAiNjExLS02MTciLAogIG1vbnRoID0gICAgICAgIGp1bCwKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjExMCAoU3lzdGVtcyBhbmFseXNpcyBhbmQgcHJvZ3JhbW1pbmcpIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gQ29sb3JhZG8sIEJvdWxkZXIsIENPLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBzb2Z0d2FyZTsgbWF0aGVtYXRpY2FsIHNvZnR3YXJlOyBtYXRoZW1hdGljczsgcHJvZHVjdGlvbjsgcHJvZ3JhbW1pbmciLAogIHRyZWF0bWVudCA9ICAgICJHIEdlbmVyYWwgUmV2aWV3IiwKfQoKQEFydGljbGV7Qm9icm93OjE5NzI6UkFQLAogIGF1dGhvciA9ICAgICAgICJELiBHLiBCb2Jyb3ciLAogIHRpdGxlID0gICAgICAgICJSZXF1aXJlbWVudHMgZm9yIEFkdmFuY2VkIFByb2dyYW1taW5nIFN5c3RlbXMgZm9yIExpc3QgUHJvY2Vzc2luZyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjciLAogIHBhZ2VzID0gICAgICAgICI2MTgtLTYyNyIsCiAgbW9udGggPSAgICAgICAganVsLAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgImZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvQWkvbGlzcC5iaWIiLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKSIsCiAgY29ycHNvdXJjZSA9ICAgIlhlcm94LCBQYWxvIEFsdG8sIENBLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJhZHZhbmNlZCBwcm9ncmFtbWluZyBzeXN0ZW1zOyBsaXN0IHByb2Nlc3Npbmc7IHJlcXVpcmVtZW50cyIsCn0KCkBBcnRpY2xle0JhY2htYW46MTk3MjpFU1MsCiAgYXV0aG9yID0gICAgICAgIkNoYXJsZXMgVy4gQmFjaG1hbiIsCiAgdGl0bGUgPSAgICAgICAgIlRoZSBFdm9sdXRpb24gb2YgU3RvcmFnZSBTdHJ1Y3R1cmVzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiNyIsCiAgcGFnZXMgPSAgICAgICAgIjYyOC0tNjM0IiwKICBtb250aCA9ICAgICAgICBqdWwsCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EYXRhYmFzZS9XaWVkZXJob2xkLmJpYiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgYW5ub3RlID0gICAgICAgIkdvb2Qgb3ZlcnZpZXcgb2YgYmFzaWMgZGVmaW5pdGlvbnMgYW5kIHRoZWlyIHJlbGF0aW9uc2hpcHMiLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pIiwKICBjb3Jwc291cmNlID0gICAiSG9uZXl3ZWxsIEluZm9ybWF0aW9uIFN5c3RlbXMsIEJpbGxlcmljYSwgTUEsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImRhdGEgYmFzZSBtYW5hZ2VtZW50IHN5c3RlbXM7IERhdGEgU3RydWN0dXJlIERpYWdyYW0gZ3JhcGhpYyB0ZWNobmlxdWU7IGRhdGEgc3RydWN0dXJlczsgZXZvbHV0aW9uOyBzdG9yYWdlIG1hbmFnZW1lbnQ7IHN0b3JhZ2Ugc3RydWN0dXJlcyIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7UmljZToxOTcyOlBGUywKICBhdXRob3IgPSAgICAgICAiSi4gUi4gUmljZSIsCiAgdGl0bGUgPSAgICAgICAgIk9uIHRoZSBwcmVzZW50IGFuZCBmdXR1cmUgb2Ygc2NpZW50aWZpYyBjb21wdXRhdGlvbiIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjciLAogIHBhZ2VzID0gICAgICAgICI2MzctLTYzOSIsCiAgbW9udGggPSAgICAgICAganVsLAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM3MzIwIChQaHlzaWNzIGFuZCBjaGVtaXN0cnkgY29tcHV0aW5nKTsgQzc0OTAgKENvbXB1dGluZyBpbiBvdGhlciBlbmdpbmVlcmluZyBmaWVsZHMpIiwKICBjb3Jwc291cmNlID0gICAiUHVyZHVlIFVuaXYuLCBMYWZheWV0dGUsIElOLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJlbmdpbmVlcmluZyBhcHBsaWNhdGlvbnMgb2YgY29tcHV0ZXJzOyBmdXR1cmU7IG5hdHVyYWwgc2NpZW5jZXM7IHBoeXNpY2FsIHNjaWVuY2VzOyBwaHlzaWNzOyBwcmVzZW50OyBzY2llbnRpZmljIGNvbXB1dGF0aW9uIiwKICB0cmVhdG1lbnQgPSAgICAiRyBHZW5lcmFsIFJldmlldyIsCn0KCkBBcnRpY2xle0JlbmphbWluOjE5NzI6R1BJLAogIGF1dGhvciA9ICAgICAgICJSb2JlcnQgSS4gQmVuamFtaW4iLAogIHRpdGxlID0gICAgICAgICJBIGdlbmVyYXRpb25hbCBwZXJzcGVjdGl2ZSBvZiBpbmZvcm1hdGlvbiBzeXN0ZW0gZGV2ZWxvcG1lbnQiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTUiLAogIG51bWJlciA9ICAgICAgICI3IiwKICBwYWdlcyA9ICAgICAgICAiNjQwLS02NDMiLAogIG1vbnRoID0gICAgICAgIGp1bCwKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0RhdGFiYXNlL1dpZWRlcmhvbGQuYmliIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzcxMDAgKEJ1c2luZXNzIGFuZCBhZG1pbmlzdHJhdGlvbikiLAogIGNvcnBzb3VyY2UgPSAgICJYZXJveCBDb3JwLiwgUm9jaGVzdGVyLCBOWSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0aW5nIG1pbGlldTsgZ2VuZXJhdGlvbmFsIHBlcnNwZWN0aXZlOyBpbmZvcm1hdGlvbiBzeXN0ZW0gZGV2ZWxvcG1lbnQ7IG1hbmFnZW1lbnQgZGF0YSBwcm9jZXNzaW5nOyBtYW5hZ2VtZW50IGluZm9ybWF0aW9uIHN5c3RlbXMiLAogIHRyZWF0bWVudCA9ICAgICJHIEdlbmVyYWwgUmV2aWV3IiwKfQoKQEFydGljbGV7U2VkZWxvdzoxOTcyOkxBSCwKICBhdXRob3IgPSAgICAgICAiUy4gWS4gU2VkZWxvdyIsCiAgdGl0bGUgPSAgICAgICAgIkxhbmd1YWdlIGFuYWx5c2lzIGluIHRoZSBodW1hbml0aWVzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiNyIsCiAgcGFnZXMgPSAgICAgICAgIjY0NC0tNjQ3IiwKICBtb250aCA9ICAgICAgICBqdWwsCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzc4MjAgKEh1bWFuaXRpZXMgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIEthbnNhcywgTGF3cmVuY2UsIEtTLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJjb25jb3JkYW5jZXM7IGh1bWFuaXRpZXM7IGluZGljZXM7IGxhbmd1YWdlIGFuYWx5c2lzOyBsYW5ndWFnZSB0cmFuc2xhdGlvbiBhbmQgbGluZ3Vpc3RpY3M7IHBhdHRlcm4gZ2VuZXJhdGlvbjsgcGF0dGVybiByZWNvZ25pdGlvbiIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7WmlubjoxOTcyOkNJUCwKICBhdXRob3IgPSAgICAgICAiSy4gTC4gWmlubiIsCiAgdGl0bGUgPSAgICAgICAgIkNvbXB1dGVycyBpbiB0aGUgaW5zdHJ1Y3Rpb25hbCBwcm9jZXNzOiBkaXJlY3Rpb25zIGZvciByZXNlYXJjaCBhbmQgZGV2ZWxvcG1lbnQiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTUiLAogIG51bWJlciA9ICAgICAgICI3IiwKICBwYWdlcyA9ICAgICAgICAiNjQ4LS02NTEiLAogIG1vbnRoID0gICAgICAgIGp1bCwKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNzgxMEMgKENvbXB1dGVyLWFpZGVkIGluc3RydWN0aW9uKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIE1pY2hpZ2FuLCBBbm4gQXJib3IsIE1JLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBhaWRlZCBpbnN0cnVjdGlvbjsgY29tcHV0ZXJzOyBkZXZlbG9wbWVudDsgZGlyZWN0aW9uczsgZWR1Y2F0aW9uOyBpbnN0cnVjdGlvbmFsIHByb2Nlc3M7IHJlc2VhcmNoIGFuZCIsCiAgdHJlYXRtZW50ID0gICAgIkcgR2VuZXJhbCBSZXZpZXciLAp9CgpAQXJ0aWNsZXtTdHVybWFuOjE5NzI6Q1VTLAogIGF1dGhvciA9ICAgICAgICJHLiBNLiBTdHVybWFuIiwKICB0aXRsZSA9ICAgICAgICAiQ29tcHV0ZXJzIGFuZCB1cmJhbiBzb2NpZXR5IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiNyIsCiAgcGFnZXMgPSAgICAgICAgIjY1Mi0tNjU3IiwKICBtb250aCA9ICAgICAgICBqdWwsCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzcwMDAgKENvbXB1dGVyIGFwcGxpY2F0aW9ucyk7IEM3MTMwIChQdWJsaWMgYWRtaW5pc3RyYXRpb24pIiwKICBjb3Jwc291cmNlID0gICAiUGFyc29ucyBCcmluY2tlcmhvZmYgUXVhZGUgYW5kIERvdWdsYXMgSW5jLiwgTlksIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImFkbWluaXN0cmF0aXZlIGRhdGEgcHJvY2Vzc2luZzsgYnJpZWYgc3VydmV5OyBjb21wdXRlcnM7IGVuZ2luZWVyaW5nIGFuYWx5c2lzOyBlbmdpbmVlcmluZyBhcHBsaWNhdGlvbnMgb2YgY29tcHV0ZXJzOyBnb3Zlcm5tZW50OyBpbmZvcm1hdGlvbiBzeXN0ZW1zOyBzY2llbmNlczsgc29jaWFsIGFuZCBiZWhhdmlvdXJhbDsgdXJiYW4gc29jaWV0eTsgdXJiYW4gc3lzdGVtcyIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7U2FsdG9uOjE5NzI6RERQLAogIGF1dGhvciA9ICAgICAgICJHLiBTYWx0b24iLAogIHRpdGxlID0gICAgICAgICJEeW5hbWljIGRvY3VtZW50IHByb2Nlc3NpbmciLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTUiLAogIG51bWJlciA9ICAgICAgICI3IiwKICBwYWdlcyA9ICAgICAgICAiNjU4LS02NjgiLAogIG1vbnRoID0gICAgICAgIGp1bCwKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNzI1MCAoSW5mb3JtYXRpb24gc3RvcmFnZSBhbmQgcmV0cmlldmFsKSIsCiAgY29ycHNvdXJjZSA9ICAgIkNvcm5lbGwgVW5pdi4sIEl0aGFjYSwgTlksIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImF1dG9tYXRpYzsgYXV0b21hdGljIGluZGV4aW5nOyBhdXRvbWF0aWMgc2VhcmNoIGFuZDsgY2x1c3RlcmVkIGZpbGVzOyBjb2xsZWN0aW9uIGdyb3d0aDsgZHluYW1pYyBkb2N1bWVudDsgaW5kZXhpbmc7IGluZm9ybWF0aW9uOyBpbmZvcm1hdGlvbiByZXRyaWV2YWw7IGludGVyYWN0aXZlIHVzZXIgY29udHJvbGxlZCBzZWFyY2ggcHJvY2VzczsgaXRlcmF0aXZlIHNlYXJjaGluZzsgbGlicmFyeSBhdXRvbWF0aW9uOyBsaWJyYXJ5IG1lY2hhbmlzYXRpb247IHByb2Nlc3Npbmc7IHF1ZXJ5IG1vZGlmaWNhdGlvbjsgcmV0cmlldmFsIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtLbnV0aDoxOTcyOkFCQSwKICBhdXRob3IgPSAgICAgICAiRG9uYWxkIEUuIEtudXRoIiwKICB0aXRsZSA9ICAgICAgICAiQW5jaWVudCB7QmFieWxvbmlhbn0gYWxnb3JpdGhtcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjciLAogIHBhZ2VzID0gICAgICAgICI2NzEtLTY3NyIsCiAgbW9udGggPSAgICAgICAganVsLAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUm51bWJlciA9ICAgICAiNTIgMTMxMzIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBub3RlID0gICAgICAgICAiVHdlbnR5LWZpZnRoIGFubml2ZXJzYXJ5IG9mIHRoZSBBc3NvY2lhdGlvbiBmb3IgQ29tcHV0aW5nIE1hY2hpbmVyeS4gU2VlIGVycmF0YSBcY2l0ZXtLbnV0aDoxOTc2OkVBQn0uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzExMDAgKE1hdGhlbWF0aWNhbCB0ZWNobmlxdWVzKSIsCiAgY29ycHNvdXJjZSA9ICAgIlN0YW5mb3JkIFVuaXYuLCBDQSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiYW5jaWVudCBCYWJ5bG9uaWFuIGFsZ29yaXRobXM7IEJhYnlsb25pYW47IGNvbXB1dGVyIHNjaWVuY2U7IGhpc3Rvcnkgb2YgY29tcHV0YXRpb247IG1hdGhlbWF0aWNzOyBvcmlnaW5zIG9mIG1hdGhlbWF0aWNzOyBzZXhhZ2VzaW1hbCBudW1iZXIgc3lzdGVtOyB0YWJsZXRzIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtCYXVlcjoxOTcyOlBLWiwKICBhdXRob3IgPSAgICAgICAiRi4gTC4gQmF1ZXIgYW5kIEguIFd7XCJvfXNzbmVyIGFuZCBLb25yYWQgWnVzZSIsCiAgdGl0bGUgPSAgICAgICAgIlRoZSBgYFBsYW5rYWxre1widX1sJycgb2Yge0tvbnJhZCBadXNlfTogYSBmb3JlcnVubmVyIG9mIHRvZGF5J3MgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzLiIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjciLAogIHBhZ2VzID0gICAgICAgICI2NzgtLTY4NSIsCiAgbW9udGggPSAgICAgICAganVsLAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjhBMDUgKDY4LTAzKSIsCiAgTVJudW1iZXIgPSAgICAgIjUyIDE2MDkzIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgbm90ZSA9ICAgICAgICAgIlR3ZW50eS1maWZ0aCBhbm5pdmVyc2FyeSBvZiB0aGUgQXNzb2NpYXRpb24gZm9yIENvbXB1dGluZyBNYWNoaW5lcnkuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxNDAgKFByb2dyYW1taW5nIGxhbmd1YWdlcykiLAogIGNvcnBzb3VyY2UgPSAgICJUZWNoLiBVbml2LiBNe1widX1uY2hlbiwgV2VzdCBHZXJtYW55IiwKICBrZXl3b3JkcyA9ICAgICAiaGlzdG9yeSBvZjsgS29ucmFkIFp1c2U7IGxhbmd1YWdlczsgbm90YXRpb25hbCBhbmQgY29uY2VwdHVhbCBzeXN0ZW07IFBsYW5rYWxrdWw7IHByb2dyYW1taW5nOyBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IHByb2dyYW1taW5nIHRoZW9yeSIsCiAgdHJlYXRtZW50ID0gICAgIkcgR2VuZXJhbCBSZXZpZXciLAp9CgpAQXJ0aWNsZXtTcHJhZ3VlOjE5NzI6V1ZDLAogIGF1dGhvciA9ICAgICAgICJSaWNoYXJkIEUuIFNwcmFndWUiLAogIHRpdGxlID0gICAgICAgICJBIHtXZXN0ZXJufSBWaWV3IG9mIENvbXB1dGVyIEhpc3RvcnkiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTUiLAogIG51bWJlciA9ICAgICAgICI3IiwKICBwYWdlcyA9ICAgICAgICAiNjg2LS02OTIiLAogIG1vbnRoID0gICAgICAgIGp1bCwKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4LTAzIiwKICBNUm51bWJlciA9ICAgICAiNTIgMTYwODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBub3RlID0gICAgICAgICAiVHdlbnR5LWZpZnRoIGFubml2ZXJzYXJ5IG9mIHRoZSBBc3NvY2lhdGlvbiBmb3IgQ29tcHV0aW5nIE1hY2hpbmVyeS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDMDIwMCAoR2VuZXJhbCBjb21wdXRlciB0b3BpY3MpIiwKICBjb3Jwc291cmNlID0gICAiTGl0dG9uIEFSUywgTW9ycmlzdG93biwgTkosIFVTQSIsCiAga2V5d29yZHMgPSAgICAgIjE5NDUgdG8gMTk1NTsgY29tcHV0ZXIgaGlzdG9yeTsgZGlnaXRhbCBjb21wdXRlcnMiLAogIHRyZWF0bWVudCA9ICAgICJHIEdlbmVyYWwgUmV2aWV3IiwKfQoKQEFydGljbGV7QWx0OjE5NzI6QUNSLAogIGF1dGhvciA9ICAgICAgICJGcmFueiBMLiBBbHQiLAogIHRpdGxlID0gICAgICAgICJBcmNoYWVvbG9neSBvZiBjb21wdXRlcnMgLS0tIHJlbWluaXNjZW5jZXMsIDE5NDUtLTE5NDciLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTUiLAogIG51bWJlciA9ICAgICAgICI3IiwKICBwYWdlcyA9ICAgICAgICAiNjkzLS02OTQiLAogIG1vbnRoID0gICAgICAgIGp1bCwKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4LTAzIiwKICBNUm51bWJlciA9ICAgICAiNTIgMTYwNzkiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBub3RlID0gICAgICAgICAiVHdlbnR5LWZpZnRoIGFubml2ZXJzYXJ5IG9mIHRoZSBBc3NvY2lhdGlvbiBmb3IgQ29tcHV0aW5nIE1hY2hpbmVyeSIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM1NDIwIChNYWluZnJhbWVzIGFuZCBtaW5pY29tcHV0ZXJzKSIsCiAgY29ycHNvdXJjZSA9ICAgIkFtZXJpY2FuIEluc3QuIFBoeXMuLCBOWSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiMTk0NSB0byAxOTQ3OyBkaWdpdGFsIGNvbXB1dGVyczsgRU5JQUM7IGhpc3Rvcnkgb2YgY29tcHV0ZXJzOyByZW1pbmlzY2VuY2VzOyBzcGVjaWFsIHB1cnBvc2UgY29tcHV0ZXJzIiwKICB0cmVhdG1lbnQgPSAgICAiRyBHZW5lcmFsIFJldmlldyIsCn0KCkBBcnRpY2xle0Jvcm9kaW46MTk3MjpDRSwKICBhdXRob3IgPSAgICAgICAiQS4gQm9yb2RpbiBhbmQgQy4gQy4gR290bGllYiIsCiAgdGl0bGUgPSAgICAgICAgIkNvbXB1dGVycyBhbmQgZW1wbG95bWVudCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjciLAogIHBhZ2VzID0gICAgICAgICI2OTUtLTcwMiIsCiAgbW9udGggPSAgICAgICAganVsLAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMwMjAwIChHZW5lcmFsIGNvbXB1dGVyIHRvcGljcykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBUb3JvbnRvLCBPbnQuLCBDYW5hZGEiLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlcnM7IGVjb25vbWljIGFuZCBzb2Npb2xvZ2ljYWwgZWZmZWN0czsgZW1wbG95bWVudDsgc29jaWFsIGltcGxpY2F0aW9uczsgdW5lbXBsb3ltZW50IiwKICB0cmVhdG1lbnQgPSAgICAiRyBHZW5lcmFsIFJldmlldyIsCn0KCkBBcnRpY2xle0hlcnJpb3Q6MTk3MjpNR0YsCiAgYXV0aG9yID0gICAgICAgIkpvaG4gRy4gSGVycmlvdCIsCiAgdGl0bGUgPSAgICAgICAgIkluIG1lbW9yeSBvZiB7R2VvcmdlIEUuIEZvcnN5dGhlfSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjgiLAogIHBhZ2VzID0gICAgICAgICI3MTktLTcyMCIsCiAgbW9udGggPSAgICAgICAgYXVnLAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiMDFBNzAiLAogIE1SbnVtYmVyID0gICAgICI1MiA3ODAxIiwKICBiaWJkYXRlID0gICAgICAiVHVlIERlYyAyNiAxMzozNTowNyAxOTk1IiwKICBub3RlID0gICAgICAgICAiQ29sbGVjdGlvbiBvZiBhcnRpY2xlcyBpbiBob25vciBvZiB7R2VvcmdlIEUuIEZvcnN5dGhlfSAoe0FDTX0gU3R1ZGVudCBDb21wZXRpdGlvbiBBd2FyZCBQYXBlcnMpLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCn0KCkBBcnRpY2xle0tudXRoOjE5NzI6R0ZELAogIGF1dGhvciA9ICAgICAgICJEb25hbGQgRS4gS251dGgiLAogIHRpdGxlID0gICAgICAgICJ7R2VvcmdlIEZvcnN5dGhlfSBhbmQgdGhlIGRldmVsb3BtZW50IG9mIENvbXB1dGVyIFNjaWVuY2UiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTUiLAogIG51bWJlciA9ICAgICAgICI4IiwKICBwYWdlcyA9ICAgICAgICAiNzIxLS03MjYiLAogIG1vbnRoID0gICAgICAgIGF1ZywKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjAxQTcwICg2OC0wMykiLAogIE1SbnVtYmVyID0gICAgICI1MiA3ODAyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIERlYyAyNiAxMzozNTowNyAxOTk1IiwKICBub3RlID0gICAgICAgICAiQ29sbGVjdGlvbiBvZiBhcnRpY2xlcyBpbiBob25vciBvZiB7R2VvcmdlIEUuIEZvcnN5dGhlfSAoe0FDTX0gU3R1ZGVudCBDb21wZXRpdGlvbiBBd2FyZCBQYXBlcnMpLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCn0KCkBBcnRpY2xle0Nyb3dlOjE5NzI6R1BBLAogIGF1dGhvciA9ICAgICAgICJEYXZpZCBDcm93ZSIsCiAgdGl0bGUgPSAgICAgICAgIkdlbmVyYXRpbmcgcGFyc2VycyBmb3IgYWZmaXggZ3JhbW1hcnMuIENvbGxlY3Rpb24gb2YgYXJ0aWNsZXMgaW4gaG9ub3Igb2Yge0dlb3JnZSBFLiBGb3JzeXRoZSAoQUNNIFN0dWRlbnQgQ29tcGV0aXRpb24gQXdhcmQgUGFwZXJzKX0iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTUiLAogIG51bWJlciA9ICAgICAgICI4IiwKICBwYWdlcyA9ICAgICAgICAiNzI4LS03MzQiLAogIG1vbnRoID0gICAgICAgIGF1ZywKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4QTMwIiwKICBNUm51bWJlciA9ICAgICAiNTMgNDYzNSIsCiAgbXJyZXZpZXdlciA9ICAgIk9sZSBMZWhybWFubiBNYWRzZW4iLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiS29zdGVyLCB0aGUgaW52ZW50b3Igb2YgYWZmaXggZ3JhbW1hcnMsIHN1Z2dlc3RzIGEgdG9wLWRvd24gc2NoZW1lIGZvciBwYXJzaW5nIHRoZW0sIGJhc2VkIG9uIHJlY3Vyc2l2ZSBwcm9jZWR1cmVzLiBUaGlzIHBhcGVyIHByZXNlbnRzIGEgYm90dG9tLXVwIHNjaGVtZSBmb3IgcGFyc2luZyB0aGVtLCBiYXNlZCBvbiBhbiBleHRlbnNpb24gb2YgRmxveWQgUHJvZHVjdGlvbiBMYW5ndWFnZSAoRlBMKS4gSW5jbHVkZWQgaXMgYW4gYWxnb3JpdGhtLCBzaW1pbGFyIHRvIHRoYXQgb2YgRGVSZW1lcidzLCBmb3IgY292ZXJpbmcgYSBsYXJnZSBjbGFzcyBvZiBhZmZpeCBncmFtbWFycyBpbnRvIEZQTC4gVGhlIHBhcGVyIGRpc2N1c3NlcyB0aGUgYXBwbGljYWJpbGl0aWVzIG9mIHRoZSBjb252ZXJzaW9uIGFsZ29yaXRobSBhbmQgYWZmaXggZ3JhbW1hcnMgaW4gZ2VuZXJhbCwgYW5kIHNvbWUgcG9zc2libGUgZXh0ZW5zaW9ucyB0byBLb3N0ZXIncyBkZWZpbml0aW9uIG9mIGFmZml4IGdyYW1tYXJzLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MjEwIChGb3JtYWwgbG9naWMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjE7IDcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIEJyaXRpc2ggQ29sdW1iaWEsIFZhbmNvdXZlciwgQkMsIENhbmFkYSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhZmZpeCBncmFtbWFyczsgYWxnb3JpdGhtaWMgbGFuZ3VhZ2UgcHJvY2Vzc2luZzsgYWxnb3JpdGhtaWMgbGFuZ3VhZ2VzOyBhdXRvbWF0YSB0aGVvcnkgLS0tIEdyYW1tYXJzOyBib3R0b20gdXA7IGNvbXB1dGVyIG1ldGF0aGVvcnk7IGdyYW1tYXJzOyBwYXJzZXJzOyBzeW50YXggZGlyZWN0ZWQgY29tcGlsaW5nOyB0cmFuc2xhdG9yIHdyaXRpbmcgc3lzdGVtczsgdHdvIGxldmVsIGdyYW1tYXJzIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtIZWxiaWc6MTk3MjpQUkMsCiAgYXV0aG9yID0gICAgICAgIlJvYmVydCBFLiBIZWxiaWcgYW5kIFBhdHJpY2sgSy4gT3JyIGFuZCBSb2JlcnQgUi4gUm9lZGlnZXIiLAogIHRpdGxlID0gICAgICAgICJQb2xpdGljYWwgUmVkaXN0cmljdGluZyBieSBDb21wdXRlciIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjgiLAogIHBhZ2VzID0gICAgICAgICI3MzUtLTc0MSIsCiAgbW9udGggPSAgICAgICAgYXVnLAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkNyaXRlcmlhIGZvciBhY2NlcHRhYmxlIHJlZGlzdHJpY3RpbmcgYXJlIGRpc2N1c3NlZCwgaW5jbHVkaW5nIHBvcHVsYXRpb24gZXF1YWxpdHksIGNvbXBhY3RuZXNzLCBjb250aWd1aXR5LCBhbmQgcHJlc2VydmF0aW9uIG9mIG5hdHVyYWwgYW5kXHNsYXNoIG9yIHBvbGl0aWNhbCBib3VuZGFyaWVzLiBPbmx5IG5vbnBhcnRpc2FuIGNyaXRlcmlhIGFyZSBjb25zaWRlcmVkLiBVc2luZyAxOTcwIEJ1cmVhdSBvZiBDZW5zdXMgcG9wdWxhdGlvbiBkYXRhLCBzcGVjaWZpYyByZXN1bHRzIGFyZSBnaXZlbiBmb3IgdGhlIHRlbiBDb25ncmVzc2lvbmFsIERpc3RyaWN0cyBpbiB0aGUgc3RhdGUgb2YgTWlzc291cmkgYW5kIGZvciB0aGUgc2V2ZW4gU3QuIExvdWlzIGNvdW50eSBDb3VuY2lsIHNlYXRzLiBSZXN1bHRzIGZyb20gdGhlIHVzZSBvZiB0aGUgYWxnb3JpdGhtIGluZGljYXRlIHRoZSBmZWFzaWJpbGl0eSBvZiBwb2xpdGljYWwgcmVkaXN0cmljdGluZyB3aXRoIHRoZSBhaWQgb2YgYSBjb21wdXRlci4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNzgxMCAoU29jaWFsIGFuZCBiZWhhdmlvdXJhbCBzY2llbmNlcyBjb21wdXRpbmcpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJXYXNoaW5ndG9uIFVuaXYuLCBTdC4gTG91aXMsIE1PLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYWxnb3JpdGhtOyBjb21wYWN0bmVzczsgY29tcHV0ZXI7IGNvbnRpZ3VpdHk7IGRhdGEgcHJvY2Vzc2luZywgYnVzaW5lc3M7IGVxdWFsIHBvcHVsYXRpb247IGxlZ2lzbGF0aXZlIGRpc3RyaWN0czsgcG9saXRpY2FsIHJlZGlzdHJpY3Rpbmc7IHJlYXBwb3J0aW9ubWVudDsgc29jaWFsIGFuZCBiZWhhdmlvdXJhbCBzY2llbmNlczsgdHJhbnNwb3J0YXRpb24iLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uIiwKfQoKQEFydGljbGV7QmVuamFtaW46MTk3MjpFRVMsCiAgYXV0aG9yID0gICAgICAgIkFydGh1ciBKLiBCZW5qYW1pbiIsCiAgdGl0bGUgPSAgICAgICAgIkV4dGVuc2libGUgRWRpdG9yIGZvciBhIFNtYWxsIE1hY2hpbmUgd2l0aCBEaXNrIFN0b3JhZ2UiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTUiLAogIG51bWJlciA9ICAgICAgICI4IiwKICBwYWdlcyA9ICAgICAgICAiNzQyLS03NDciLAogIG1vbnRoID0gICAgICAgIGF1ZywKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJBIGRlc2lnbiBwaGlsb3NvcGh5IGZvciBkZXZlbG9waW5nIGEgc29waGlzdGljYXRlZCB1dGlsaXR5IHByb2dyYW0gaXMgaWxsdXN0cmF0ZWQgYnkgdGhlIGFjdHVhbCBkZXNpZ24gYW5kIGltcGxlbWVudGF0aW9uIG9mIGEgdGV4dCBlZGl0b3IuIEEgdmVyc2F0aWxlIGRhdGEgc3RydWN0dXJlIGlzIGVtcGxveWVkIHNvIHRoYXQgb25seSBhIHNtYWxsIG51bWJlciBvZiBwcm9ncmFtbWVkIHN1YnJvdXRpbmVzIGFyZSBuZWNlc3NhcnkgZm9yIGFsbCB0eXBlcyBvZiBkYXRhIG1hbmlwdWxhdGlvbi4gU3VjaCBhIGRhdGEgc3RydWN0dXJlIGlzIGRlc2NyaWJlZCwgYW5kIGl0cyBtZXJpdHMgYXJlIGlsbHVzdHJhdGVkIGJ5IHRoZSBlYXNlIHdpdGggd2hpY2ggcG93ZXJmdWwgZXh0ZW5zaW9ucyBjYW4gYmUgaW1wbGVtZW50ZWQgaW4gdGVybXMgb2YgYSBmZXcgYmFzaWMgZWRpdGluZyBmdW5jdGlvbnMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKTsgQzYxMzAgKERhdGEgaGFuZGxpbmcgdGVjaG5pcXVlcyk7IEM2MTUwRSAoR2VuZXJhbCB1dGlsaXR5IHByb2dyYW1zKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiQnJhbmRlaXMgVW5pdi4sIFdhbHRoYW0sIE1BLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29sbGVjdGlvbjsgY29tbWFuZDsgY29tcHV0ZXIgcHJvZ3JhbW1pbmcgLS0tIE1hY3JvczsgY29tcHV0ZXIgc3lzdGVtcyBwcm9ncmFtbWluZyAtLS0gU3VwZXJ2aXNvcnkgYW5kIEV4ZWN1dGl2ZSBQcm9ncmFtczsgY29udGV4dCBzZWFyY2hpbmc7IGRhdGEgcHJvY2Vzc2luZzsgZGF0YSBzdG9yYWdlLCBtYWduZXRpYyAtLS0gRGlzayBTdG9yYWdlOyBkYXRhIHN0cnVjdHVyZXM7IGRlc2lnbjsgZGlzYyBzdG9yYWdlOyBleGVjdXRpdmUgcHJvZ3JhbTsgZXh0ZW5zaWJsZSBlZGl0b3I7IGdhcmJhZ2U7IGludGVycHJldGVyOyBsaXN0IHByb2Nlc3Npbmc7IG1hY3JvIGxhbmd1YWdlOyBwYWdpbmc7IHBhcmFtZXRlciBzdWJzdGl0dXRpb247IHBoaWxvc29waHk7IHByb2Nlc3Npbmc7IHByb2dyYW1zOyByZWN1cnNpb247IHNtYWxsIG1hY2hpbmU7IHN0YXRlIHRhYmxlOyBzdG9yYWdlIGFsbG9jYXRpb247IHN0cmluZyBtYW5pcHVsYXRpb247IHRleHQgZWRpdGluZzsgdGV4dCBlZGl0b3I7IHV0aWxpdHk7IHV0aWxpdHkgcHJvZ3JhbTsgdmlydHVhbCBtZW1vcnkiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle1Jvc2luOjE5NzI6RVJNLAogIGF1dGhvciA9ICAgICAgICJSb2JlcnQgRi4gUm9zaW4gYW5kIEdpZGVvbiBGcmllZGVyIGFuZCBSaWNoYXJkIEguIHtFY2tob3VzZSwgSnIufSIsCiAgdGl0bGUgPSAgICAgICAgIkVudmlyb25tZW50IGZvciBSZXNlYXJjaCBpbiBNaWNyb3Byb2dyYW1taW5nIGFuZCBFbXVsYXRpb24iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTUiLAogIG51bWJlciA9ICAgICAgICI4IiwKICBwYWdlcyA9ICAgICAgICAiNzQ4LS03NjAiLAogIG1vbnRoID0gICAgICAgIGF1ZywKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJUaGUgZGV2ZWxvcG1lbnQgb2YgdGhlIHJlc2VhcmNoIHByb2plY3QgaW4gbWljcm9wcm9ncmFtbWluZyBhbmQgZW11bGF0aW9uIGF0IFN0YXRlIFVuaXZlcnNpdHkgb2YgTmV3IFlvcmsgYXQgQnVmZmFsbyBjb25zaXN0ZWQgb2YgdGhyZWUgcGhhc2VzOiB0aGUgZXZhbHVhdGlvbiBvZiB2YXJpb3VzIHBvc3NpYmxlIG1hY2hpbmVzIHRvIHN1cHBvcnQgdGhpcyByZXNlYXJjaDsgdGhlIGRlY2lzaW9uIHRvIHB1cmNoYXNlIG9uZSBzdWNoIG1hY2hpbmUsIHdoaWNoIGFwcGVhcnMgdG8gYmUgc3VwZXJpb3IgdG8gdGhlIG90aGVycyBjb25zaWRlcmVkOyBhbmQgdGhlIG9yZ2FuaXphdGlvbiBhbmQgZGVmaW5pdGlvbiBvZiBnb2FscyBmb3IgZWFjaCBncm91cCBpbiB0aGUgcHJvamVjdC4gRWFjaCBvZiB0aGVzZSBwaGFzZXMgaXMgcmVwb3J0ZWQsIHdpdGggZW1waGFzaXMgcGxhY2VkIG9uIHRoZSBlYXJseSByZXN1bHRzIGFjaGlldmVkIGluIHRoaXMgcmVzZWFyY2guIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzUyMjAgKENvbXB1dGVyIGFyY2hpdGVjdHVyZSk7IEM3NDMwIChDb21wdXRlciBlbmdpbmVlcmluZykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMjsgNzIzIiwKICBjb3Jwc291cmNlID0gICAiU3RhdGUgVW5pdi4gTmV3IFlvcmssIEJ1ZmZhbG8sIE5ZLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgYXJjaGl0ZWN0dXJlOyBjb21wdXRlciBzeXN0ZW1zOyBjb21wdXRlciBzeXN0ZW1zLCBkaWdpdGFsOyBlbXVsYXRpb247IGVuZ2luZWVyaW5nIGFwcGxpY2F0aW9ucyBvZiBjb21wdXRlcnM7IGVudmlyb25tZW50IGZvciByZXNlYXJjaDsgaGFyZHdhcmUgZXZhbHVhdGlvbjsgbGFuZ3VhZ2UgcHJvY2Vzc29yczsgbWFuYWdlbWVudDsgbWljcm9wcm9ncmFtbWluZzsgbmFub3Byb2dyYW07IHByb2plY3Q7IHNpbXVsYXRpb24iLAogIHRyZWF0bWVudCA9ICAgICJYIEV4cGVyaW1lbnRhbCIsCn0KCkBBcnRpY2xle09kZW46MTk3MjpNTUMsCiAgYXV0aG9yID0gICAgICAgIlAuIEguIE9kZW4gYW5kIEcuIFMuIFNoZWRsZXIiLAogIHRpdGxlID0gICAgICAgICJBIE1vZGVsIG9mIE1lbW9yeSBDb250ZW50aW9uIGluIGEgUGFnaW5nIE1hY2hpbmUiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTUiLAogIG51bWJlciA9ICAgICAgICI4IiwKICBwYWdlcyA9ICAgICAgICAiNzYxLS03NzEiLAogIG1vbnRoID0gICAgICAgIGF1ZywKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4QTUwIiwKICBNUm51bWJlciA9ICAgICAiNTUgMTM5MDMiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBub3RlID0gICAgICAgICAiQ29sbGVjdGlvbiBvZiBhcnRpY2xlcyBpbiBob25vciBvZiB7R2VvcmdlIEUuIEZvcnN5dGhlfSAoe0FDTX0gU3R1ZGVudCBDb21wZXRpdGlvbiBBd2FyZCBQYXBlcnMpLiIsCiAgYWJzdHJhY3QgPSAgICAgIkluIHRoZSBtb2RlbCBwcmVzZW50ZWQsIHRoZSBudW1iZXIgb2YgcGFnZS1mcmFtZXMgb2YgbWFpbiBtZW1vcnkgYWxsb2NhdGVkIHRvIGEgcHJvYmxlbSBwcm9ncmFtIHZhcmllcyBpbiB0aW1lLiBUaGVzZSBjaGFuZ2VzIGluIG1lbW9yeSBjb25maWd1cmF0aW9uIGFyZSByZXByZXNlbnRlZCBleHBsaWNpdGx5IGluIHRoZSBtb2RlbCwgQ1BVIHJlcXVpcmVtZW50cyBhbmQgcGFnZSBleGNlcHRpb24gY2hhcmFjdGVyaXN0aWNzIG9mIHByb2dyYW0gbWF0ZXJpYWwgYmVpbmcgZGVzY3JpYmVkIHN0YXRpc3RpY2FsbHkuIEV4cHJlc3Npb25zIGZvciB0aGUgZGlzdHJpYnV0aW9uIG9mIHRoZSBudW1iZXIgb2YgcGFnZS1mcmFtZXMgYWxsb2NhdGVkIHRvIGFuIGV4ZWN1dGluZyBwcm9ncmFtLCB0aGUgbG9uZyBydW4gZXhwZWN0ZWQgZnJhY3Rpb24gb2YgYSBwcm9ncmFtJ3MgZXhlY3V0aW9uIHRpbWUgaW4gYSBnaXZlbiBudW1iZXIgb2YgcGFnZS1mcmFtZXMsIGFuZCB0aGUgYXZlcmFnZSBleGVjdXRpb24gaW50ZXJ2YWwgb2YgdGhlIG11bHRpcHJvZ3JhbW1lZCBsb2FkIGFyZSBvYnRhaW5lZC4gSXQgaXMgcG9pbnRlZCBvdXQgaGV1cmlzdGljYWxseSBhbmQgZGVtb25zdHJhdGVkIG51bWVyaWNhbGx5IHRoYXQgYW4gaW5jcmVhc2UgaXMgb2J0YWluYWJsZSBpbiB0aGUgYXZlcmFnZSBleGVjdXRpb24gaW50ZXJ2YWwgb2YgdGhlIG11bHRpcHJvZ3JhbW1lZCBsb2FkIG92ZXIgdGhhdCByZXN1bHRpbmcgZnJvbSBlcXVhbCBmaXhlZCBwYXJ0aXRpb25pbmcgb2YgbWFpbiBtZW1vcnkuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiSUJNIFRob21hcyBKLiBXYXRzb24gUmVzLiBDZW50ZXIsIFlvcmt0b3duIEhlaWdodHMsIE5ZLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgb3BlcmF0aW5nIHN5c3RlbXM7IGRlbWFuZCBwYWdpbmc7IGZpbGUgb3JnYW5pc2F0aW9uOyBtYW5hZ2VtZW50OyBtZW1vcnk7IG1lbW9yeSBjb250ZW50aW9uOyBtb2RlbGxpbmc7IG11bHRpcHJvZ3JhbW1lZDsgb3BlcmF0aW5nOyBwYWdpbmcgbWFjaGluZXM7IHByb2JhYmlsaXR5IC0tLSBRdWV1ZWluZyBUaGVvcnk7IHF1ZXVpbmcgYW5hbHlzaXM7IHN0b3JhZ2U7IHN0b3JhZ2UgYWxsb2NhdGlvbjsgc3lzdGVtcyBzdHVkaWVzIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtCZXJuc3RlaW46MTk3MjpDRk0sCiAgYXV0aG9yID0gICAgICAgIkguIEouIEJlcm5zdGVpbiBhbmQgSC4gVC4gR2xhZHdpbiIsCiAgdGl0bGUgPSAgICAgICAgIkNvbXBpbGluZyBmaXhlZC1wb2ludCBtdWx0aXBsaWNhdGlvbnMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTUiLAogIG51bWJlciA9ICAgICAgICI4IiwKICBwYWdlcyA9ICAgICAgICAiNzcyLS03NzIiLAogIG1vbnRoID0gICAgICAgIGF1ZywKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNTIzMCAoRGlnaXRhbCBhcml0aG1ldGljIG1ldGhvZHMpOyBDNjExMCAoU3lzdGVtcyBhbmFseXNpcyBhbmQgcHJvZ3JhbW1pbmcpIiwKICBjb3Jwc291cmNlID0gICAiQnJvb2toYXZlbiBOYXQuIExhYi4sIFVwdG9uLCBOWSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcGlsaW5nIG11bHRpcGxpY2F0aW9uczsgZGlnaXRhbCBhcml0aG1ldGljOyBmaXhlZCBwb2ludCBhcml0aG1ldGljOyBwcm9ncmFtbWluZyIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7dmFuZGVyUG9lbDoxOTcyOkNDUywKICBhdXRob3IgPSAgICAgICAiVy4gTC4ge3ZhbiBkZXIgUG9lbH0iLAogIHRpdGxlID0gICAgICAgICJDb21tZW50IG9uIHRoZSBjb21wb3NpdGlvbiBvZiBzZW1hbnRpY3MgaW4ge0FsZ29sIDY4fSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjgiLAogIHBhZ2VzID0gICAgICAgICI3NzItLTc3MiIsCiAgbW9udGggPSAgICAgICAgYXVnLAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTQwRCAoSGlnaCBsZXZlbCBsYW5ndWFnZXMpIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gVGVjaG5vbC4gRGVsZnQsIE5ldGhlcmxhbmRzIiwKICBrZXl3b3JkcyA9ICAgICAiQUxHT0w7IEFMR09MIDY4OyBjb21wb3NpdGlvbiBvZiBzZW1hbnRpY3M7IGRhdGE7IGRlc2lnbjsgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzOyBwcm9ncmFtbWluZyBwcmltaXRpdmVzOyByZWN1cnNpdmUgY29tcG9zaXRpb247IHN0cnVjdHVyZXMiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle01vcnJpczoxOTcyOkJWVywKICBhdXRob3IgPSAgICAgICAiSmFtZXMgSC4ge01vcnJpcywgSnIufSIsCiAgdGl0bGUgPSAgICAgICAgIkEgQm9udXMgZnJvbSB7dmFuIFdpam5nYWFyZGVufSdzIERldmljZSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjgiLAogIHBhZ2VzID0gICAgICAgICI3NzMtLTc3MyIsCiAgbW9udGggPSAgICAgICAgYXVnLAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgImZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvQ29tcGlsZXIvcmV5bm9sZHMuYmliIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxNDBEIChIaWdoIGxldmVsIGxhbmd1YWdlcykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBDYWxpZm9ybmlhLCBCZXJrZWxleSwgQ0EsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgIkFMR09MOyBBTEdPTCA2MCBwcm9ncmFtczsgZWxpbWluYXRlIGFsbCBsYWJlbHM7IG5vbmxvY2FsIHRyYW5zZmVyczsgcHJvY2VkdXJlIHJldHVybnMiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0pvbmVzOjE5NzI6Q0FCLAogIGF1dGhvciA9ICAgICAgICJQLiBSLiBKb25lcyIsCiAgdGl0bGUgPSAgICAgICAgIkNvbW1lbnQgb24gYXZlcmFnZSBiaW5hcnkgc2VhcmNoIGxlbmd0aCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjgiLAogIHBhZ2VzID0gICAgICAgICI3NzQtLTc3NCIsCiAgbW9udGggPSAgICAgICAgYXVnLAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTMwIChEYXRhIGhhbmRsaW5nIHRlY2huaXF1ZXMpIiwKICBrZXl3b3JkcyA9ICAgICAiYmluYXJ5IHNlYXJjaGluZzsgZGF0YSBoYW5kbGluZzsgcmVjb3JkIHJldHJpZXZhbDsgc2VhcmNoIGxlbmd0aCIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7UmVhZDoxOTcyOk5HUiwKICBhdXRob3IgPSAgICAgICAiUm9uYWxkIEMuIFJlYWQgYW5kIEsuIEhhcmFkYSIsCiAgdGl0bGUgPSAgICAgICAgIkEgbm90ZSBvbiB0aGUgZ2VuZXJhdGlvbiBvZiByb3NhcnkgcGVybXV0YXRpb25zLiBXaXRoIGEgcmVzcG9uc2UgYnkge0suIEhhcmFkYX0iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTUiLAogIG51bWJlciA9ICAgICAgICI4IiwKICBwYWdlcyA9ICAgICAgICAiNzc1LS03NzUiLAogIG1vbnRoID0gICAgICAgIGF1ZywKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4QTEwIiwKICBNUm51bWJlciA9ICAgICAiNTMgOTcwNiIsCiAgbXJyZXZpZXdlciA9ICAgIkRlbm5pcyBXaGl0ZSIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIG5vdGUgPSAgICAgICAgICJDb2xsZWN0aW9uIG9mIGFydGljbGVzIGluIGhvbm9yIG9mIHtHZW9yZ2UgRS4gRm9yc3l0aGV9ICh7QUNNfSBTdHVkZW50IENvbXBldGl0aW9uIEF3YXJkIFBhcGVycykuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjAyNTAgKENvbWJpbmF0b3JpYWwgbWF0aGVtYXRpY3MpOyBDMTE2MCAoQ29tYmluYXRvcmlhbCBtYXRoZW1hdGljcykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBXYXRlcmxvbywgT250LiwgQ2FuYWRhIiwKICBrZXl3b3JkcyA9ICAgICAiYXNzb2NpYXRpbmcgYW4gaW50ZWdlcjsgY29tYmluYXRvcmlhbCBtYXRoZW1hdGljczsgZ2VuZXJhdGlvbjsgcm9zYXJ5IHBlcm11dGF0aW9ucyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7U3F1aXJlOjE5NzI6QUFMLAogIGF1dGhvciA9ICAgICAgICJXLiBTcXVpcmUiLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gNDI5OiBMb2NhbGl6YXRpb24gb2YgdGhlIFJvb3RzIG9mIGEgUG9seW5vbWlhbCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjgiLAogIHBhZ2VzID0gICAgICAgICI3NzYtLTc3NyIsCiAgbW9udGggPSAgICAgICAgYXVnLAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVGh1IFNlcCAwOCAwOTozNDowNiAxOTk0IiwKfQoKQEFydGljbGV7UHVyZG9tSnI6MTk3MjpBQUksCiAgYXV0aG9yID0gICAgICAgIlAuIFcuIHtQdXJkb20gSnIufSBhbmQgRS4gRi4gTW9vcmUiLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gNDMwOiBJbW1lZGlhdGUgUHJlZG9taW5hdG9ycyBpbiBhIERpcmVjdGVkIEdyYXBoIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiOCIsCiAgcGFnZXMgPSAgICAgICAgIjc3Ny0tNzc4IiwKICBtb250aCA9ICAgICAgICBhdWcsCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUaHUgU2VwIDA4IDA5OjM0OjA1IDE5OTQiLAp9CgpAQXJ0aWNsZXtMZXZpdHQ6MTk3MjpDQVMsCiAgYXV0aG9yID0gICAgICAgIksuIE4uIExldml0dCBhbmQgVy4gSC4gS2F1dHoiLAogIHRpdGxlID0gICAgICAgICJDZWxsdWxhciBBcnJheXMgZm9yIHRoZSBTb2x1dGlvbiBvZiBHcmFwaCBQcm9ibGVtcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjkiLAogIHBhZ2VzID0gICAgICAgICI3ODktLTgwMSIsCiAgbW9udGggPSAgICAgICAgc2VwLAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlNldmVyYWwgcGFyYWxsZWxpemVkIGFsZ29yaXRobXMgYXJlIHByZXNlbnRlZCBmb3IgdGhlIHNvbHV0aW9uIG9mIGNlcnRhaW4gc3Bhbm5pbmcgdHJlZSwgZGlzdGFuY2UsIGFuZCBwYXRoIHByb2JsZW1zLCB3aXRoIGRpcmVjdCBhcHBsaWNhdGlvbnMgdG8gd2lyZSByb3V0aW5nLCBQRVJUIGNoYXJ0IGFuYWx5c2lzLCBhbmQgdGhlIGFuYWx5c2lzIG9mIG1hbnkgdHlwZXMgb2YgbmV0d29ya3MuIFRoZXNlIGFsZ29yaXRobXMgZXhoaWJpdCBhIGNvbXB1dGF0aW9uIHRpbWUgdGhhdCBpbiBtYW55IGNhc2VzIGdyb3dzIGF0IGEgcmF0ZSBub3QgZXhjZWVkaW5nIGxvZy8vMiBuLCB3aGVyZSBuIGlzIHRoZSBudW1iZXIgb2Ygbm9kZXMgaW4gdGhlIGdyYXBoLiBTdHJhaWdodGZvcndhcmQgY2VsbHVsYXIgaW1wbGVtZW50YXRpb25zIG9mIHRoZSB3ZWxsLWtub3duIHNlcmlhbCBhbGdvcml0aG1zIGZvciB0aGVzZSBwcm9ibGVtcyByZXF1aXJlIGFib3V0IG4gc3RlcHMsIGFuZCBub25jZWxsdWxhciBpbXBsZW1lbnRhdGlvbnMgcmVxdWlyZSBmcm9tIG4qKjIgdG8gbioqMyBzdGVwcy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNTQyMCAoTWFpbmZyYW1lcyBhbmQgbWluaWNvbXB1dGVycyk7IEM3MzEwIChNYXRoZW1hdGljcyBjb21wdXRpbmcpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjI7IDcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlN0YW5mb3JkIFJlcy4gSW5zdC4sIE1lbmxvIFBhcmssIENBLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY2VsbHVsYXIgYXJyYXlzOyBkYXRhIHN0b3JhZ2UsIGRpZ2l0YWw7IGdyYXBoIHByb2JsZW1zOyBncmFwaCB0aGVvcnk7IG1hdGhlbWF0aWNhbCB0ZWNobmlxdWVzIC0tLSBHcmFwaCBUaGVvcnk7IHNwZWNpYWwgcHVycG9zZSBjb21wdXRlcnMiLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uIiwKfQoKQEFydGljbGV7R2hvc2g6MTk3MjpGT0MsCiAgYXV0aG9yID0gICAgICAgIlNha3RpIFAuIEdob3NoIiwKICB0aXRsZSA9ICAgICAgICAiRmlsZSBPcmdhbml6YXRpb24gLS0tIFRoZSBDb25zZWN1dGl2ZSBSZXRyaWV2YWwgUHJvcGVydHkiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTUiLAogIG51bWJlciA9ICAgICAgICI5IiwKICBwYWdlcyA9ICAgICAgICAiODAyLS04MDgiLAogIG1vbnRoID0gICAgICAgIHNlcCwKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGF0YWJhc2UvV2llZGVyaG9sZC5iaWIiLAogIGFic3RyYWN0ID0gICAgICJTb21lIGltcG9ydGFudCB0aGVvcmVtcyBvbiB0aGUgY29uc2VjdXRpdmUgcmV0cmlldmFsIHByb3BlcnR5IGFyZSBwcm92ZWQuIENvbmRpdGlvbnMgdW5kZXIgd2hpY2ggdGhlIGNvbnNlY3V0aXZlIHJldHJpZXZhbCBwcm9wZXJ0eSBleGlzdHMgYW5kIHJlbWFpbiBpbnZhcmlhbnQgaGF2ZSBiZWVuIGVzdGFibGlzaGVkLiBBbiBvdXRsaW5lIGZvciBkZXNpZ25pbmcgYW4gaW5mb3JtYXRpb24gcmV0cmlldmFsIHN5c3RlbSBiYXNlZCBvbiB0aGUgY29uc2VjdXRpdmUgcmV0cmlldmFsIHByb3BlcnR5IGlzIGRpc2N1c3NlZC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjE7IDcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIklCTSwgU2FuIEpvc2UsIENBLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29uc2VjdXRpdmU7IGNvbnNlY3V0aXZlIHJldHJpZXZhbDsgZGF0YSBwcm9jZXNzaW5nOyBmaWxlIG9yZ2FuaXNhdGlvbjsgZmlsZSBvcmdhbml6YXRpb247IGluZm9ybWF0aW9uIHJldHJpZXZhbDsgaW5mb3JtYXRpb24gcmV0cmlldmFsIHN5c3RlbTsgaW5mb3JtYXRpb24gcmV0cmlldmFsIHN5c3RlbXM7IG1pbmltdW0gYWNjZXNzOyBxdWVyeSBzdHJ1Y3R1cmU7IHJlY29yZDsgc3RvcmFnZTsgc3RvcmFnZSBvbiB0YXBlczsgc3RvcmFnZSBzcGFjZTsgc3RydWN0dXJlOyB0aW1lIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtNb3I6MTk3MjpOQUEsCiAgYXV0aG9yID0gICAgICAgIk0uIE1vciBhbmQgVC4gTGFtZGFuIiwKICB0aXRsZSA9ICAgICAgICAiQSBOZXcgQXBwcm9hY2ggdG8gQXV0b21hdGljIFNjYW5uaW5nIG9mIENvbnRvdXIgTWFwcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjkiLAogIHBhZ2VzID0gICAgICAgICI4MDktLTgxMiIsCiAgbW9udGggPSAgICAgICAgc2VwLAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9HcmFwaGljcy9pbWFnZXIvaW1hZ2VyLjc1LmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIlRoZSBzdHJ1Y3R1cmUgb2YgYSBnZW5lcmFsIGNvbnRvdXIgbWFwIGlzIGFuYWx5emVkLCBhbmQgaXRzIHRvcG9sb2dpY2FsIHByb3BlcnRpZXMgYXJlIHV0aWxpemVkIGluIGRldmVsb3BpbmcgYSBuZXcgc2Nhbm5pbmcgYWxnb3JpdGhtLiBUaGUgcHJvYmxlbSBvZiBkZXRlY3Rpb24gYW5kIHJlY29nbml0aW9uIG9mIGNvbnRvdXIgbGluZXMgaXMgc29sdmVkIGJ5IGEgdHdvIGNvbG9yIGxhYmVsaW5nIG1ldGhvZC4gSXQgaXMgc2hvd24gdGhhdCBmb3IgbWFwcyBjb250YWluaW5nIG5vcm1hbCBjb250b3VyIGxpbmVzIG9ubHksIGl0IHN1ZmZpY2VzIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gc28tY2FsbGVkIGBgZXZlbicnIGFuZCBgYG9kZCcnIGxpbmVzLiBUaGUgYGB0YW5nZW5jeSBwcm9ibGVtJycgaW52b2x2ZWQgaW4gcHJhY3RpY2FsIHNjYW5uaW5nIGlzIGRpc2N1c3NlZCwgYW5kIGEgc29sdXRpb24gYmFzZSBvbiBtaW5pbWl6aW5nIGNvbXB1dGVyIG1lbW9yeSBzcGFjZSBhbmQgc2ltcGxpZnlpbmcgY29udHJvbCBwcm9ncmFtIGlzIHN1Z2dlc3RlZC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKTsgQzc4OTAgKE90aGVyIHNwZWNpYWwgYXBwbGljYXRpb25zIG9mIGNvbXB1dGluZykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIklzcmFlbGkgTWluLiBEZWZlbnNlLCBUZWwtQXZpdiwgSXNyYWVsIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImF1dG9tYXRpYyBzY2FubmluZzsgY2FydG9ncmFwaHk7IGNvbXB1dGVyIGdyYXBoaWNzOyBjb250b3VyIG1hcHM7IGRhdGEgaGFuZGxpbmc7IGRpZ2l0aXppbmc7IGltYWdlIHByb2Nlc3Npbmc7IHRvcG9sb2d5IiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtSaWNobWFuOjE5NzI6QUVBLAogIGF1dGhvciA9ICAgICAgICJQYXVsIEwuIFJpY2htYW4iLAogIHRpdGxlID0gICAgICAgICJBdXRvbWF0aWMgRXJyb3IgQW5hbHlzaXMgZm9yIERldGVybWluaW5nIFByZWNpc2lvbiIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjkiLAogIHBhZ2VzID0gICAgICAgICI4MTMtLTgxNyIsCiAgbW9udGggPSAgICAgICAgc2VwLAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjVHMDUiLAogIE1SbnVtYmVyID0gICAgICI0NyAyODA4IiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlRoZSBwcm9ibGVtIGNvbnNpZGVyZWQgaXMgdGhhdCBvZiBldmFsdWF0aW5nIGEgcmF0aW9uYWwgZXhwcmVzc2lvbiB0byB3aXRoaW4gYW55IGRlc2lyZWQgdG9sZXJhbmNlIG9uIGEgY29tcHV0ZXIgd2hpY2ggcGVyZm9ybXMgdmFyaWFibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IGFyaXRobWV0aWMgb3BlcmF0aW9ucy4gQW4gYXV0b21hdGljIGVycm9yIGFuYWx5c2lzIHRlY2huaXF1ZSBpcyBnaXZlbiBmb3IgZGV0ZXJtaW5pbmcsIGRpcmVjdGx5IGZyb20gdGhlIHJlc3VsdHMgb2YgYSB0cmlhbCBsb3ctcHJlY2lzaW9uIGludGVydmFsIGFyaXRobWV0aWMgY2FsY3VsYXRpb24sIGp1c3QgaG93IG11Y2ggcHJlY2lzaW9uIGFuZCBkYXRhIGFjY3VyYWN5IGFyZSByZXF1aXJlZCB0byBhY2hpZXZlIGEgZGVzaXJlZCBmaW5hbCBhY2N1cmFjeS4gVGhlIHRlY2huaXF1ZSBnaXZlbiBnZW5lcmFsaXplIGVhc2lseSB0byB0aGUgZXZhbHVhdGlvbiBvZiBtYW55IG5vbnJhdGlvbmFsIGV4cHJlc3Npb25zLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkIwMjkwQiAoRXJyb3IgYW5hbHlzaXMgaW4gbnVtZXJpY2FsIG1ldGhvZHMpOyBDNDExMCAoRXJyb3IgYW5hbHlzaXMgaW4gbnVtZXJpY2FsIG1ldGhvZHMpOyBDNTIzMCAoRGlnaXRhbCBhcml0aG1ldGljIG1ldGhvZHMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI5MjEiLAogIGNvcnBzb3VyY2UgPSAgICJCZWxsIFRlbGVwaG9uZSBMYWJzLiBJbmMuLCBEZW52ZXIsIENPLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYXV0b21hdGljIGVycm9yIGFuYWx5c2lzOyBjb250cm9sOyBkaWdpdGFsIGFyaXRobWV0aWM7IGVycm9yIGFuYWx5c2lzOyBmbG9hdGluZyBwb2ludCBhcml0aG1ldGljOyBpbnRlcnZhbCBhcml0aG1ldGljOyBtYXRoZW1hdGljYWwgdGVjaG5pcXVlczsgcHJlY2lzaW9uOyBwcmVjaXNpb24gY29udHJvbCIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7UmF2aW5kcmFuOjE5NzI6QUFDLAogIGF1dGhvciA9ICAgICAgICJBLiBSYXZpbmRyYW4iLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gNDMxOiB7QX0gQ29tcHV0ZXIgUm91dGluZSBmb3IgUXVhZHJhdGljIGFuZCBMaW5lYXIgUHJvZ3JhbW1pbmcgUHJvYmxlbXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTUiLAogIG51bWJlciA9ICAgICAgICI5IiwKICBwYWdlcyA9ICAgICAgICAiODE4LS04MjAiLAogIG1vbnRoID0gICAgICAgIHNlcCwKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIk1vbiBGZWIgMTIgMTQ6MzQ6MDAgMTk5NiIsCn0KCkBBcnRpY2xle0JhcnRlbHM6MTk3MjpBQVMsCiAgYXV0aG9yID0gICAgICAgIlIuIEguIEJhcnRlbHMgYW5kIEcuIFcuIFN0ZXdhcnQiLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gNDMyOiBTb2x1dGlvbiBvZiB0aGUgTWF0cml4IEVxdWF0aW9uICR7XGJme0F9fXgreHtcYmZ7Qn19PXtcYmZ7Q319JCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjkiLAogIHBhZ2VzID0gICAgICAgICI4MjAtLTgyNiIsCiAgbW9udGggPSAgICAgICAgc2VwLAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVGh1IFNlcCAwOCAwOTozMzo1OSAxOTk0IiwKICBiaWJzb3VyY2UgPSAgICAiZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9QYXJhbGxlbC9wYXIubGluLmFsZy5iaWIiLAogIGtleXdvcmRzID0gICAgICJsaW5lYXIgYWxnZWJyYTsgbGluZWFyIGVxdWF0aW9uczsgbWF0cmljZXMiLAp9CgpAQXJ0aWNsZXtEZXV0c2NoOjE5NzI6VEFSLAogIGF1dGhvciA9ICAgICAgICJFLiBTLiBEZXV0c2NoIiwKICB0aXRsZSA9ICAgICAgICAiVGhpbm5pbmcgQWxnb3JpdGhtcyBvbiBSZWN0YW5ndWxhciwgSGV4YWdvbmFsLCBhbmQgVHJpYW5ndWxhciBBcnJheXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTUiLAogIG51bWJlciA9ICAgICAgICI5IiwKICBwYWdlcyA9ICAgICAgICAiODI3LS04MzciLAogIG1vbnRoID0gICAgICAgIHNlcCwKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJUaHJlZSB0aGlubmluZyBhbGdvcml0aG1zIGFyZSBkZXZlbG9wZWQ6IG9uZSBlYWNoIGZvciB1c2Ugd2l0aCByZWN0YW5ndWxhciwgaGV4YWdvbmFsLCBhbmQgdHJpYW5ndWxhciBhcnJheXMuIFRoZSBhcHByb2FjaCB0byB0aGUgZGV2ZWxvcG1lbnQgb2YgZWFjaCBhbGdvcml0aG0gaXMgdGhlIHNhbWUuIFBpY3RvcmlhbCByZXN1bHRzIHByb2R1Y2VkIGJ5IGVhY2ggb2YgdGhlIGFsZ29yaXRobXMgYXJlIHByZXNlbnRlZCBhbmQgdGhlIHJlbGF0aXZlIHBlcmZvcm1hbmNlcyBvZiB0aGUgYWxnb3JpdGhtcyBhcmUgY29tcGFyZWQuIEl0IGlzIGZvdW5kIHRoYXQgdGhlIGFsZ29yaXRobSBvcGVyYXRpbmcgd2l0aCB0aGUgdHJpYW5ndWxhciBhcnJheSBpcyB0aGUgbW9zdCBzZW5zaXRpdmUgdG8gaW1hZ2UgaXJyZWd1bGFyaXRpZXMgYW5kIG5vaXNlLCB5ZXQgaXQgd2lsbCB5aWVsZCBhIHRoaW5uZWQgaW1hZ2Ugd2l0aCBhbiBvdmVyYWxsIHJlZHVjZWQgbnVtYmVyIG9mIHBvaW50cy4gSXQgaXMgY29uY2x1ZGVkIHRoYXQgdGhlIGFsZ29yaXRobSBvcGVyYXRpbmcgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgaGV4YWdvbmFsIGFycmF5IGhhcyBmZWF0dXJlcyB3aGljaCBzdHJpa2UgYSBiYWxhbmNlIGJldHdlZW4gdGhvc2Ugb2YgdGhlIG90aGVyIHR3byBhcnJheXMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQyOTAgKE90aGVyIGNvbXB1dGVyIHRoZW9yeSkiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIE1hcnlsYW5kLCBDb2xsZWdlIFBhcmssIE1ELCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYXJyYXlzOyBjb21wdXRhdGlvbiB0aGVvcnk7IGNvbXB1dGVyIHByb2dyYW1taW5nIC0tLSBTdWJyb3V0aW5lczsgZGF0YSBoYW5kbGluZzsgaW1hZ2UgcHJvY2Vzc2luZzsgcGF0dGVybiByZWNvZ25pdGlvbiBzeXN0ZW1zOyByZWN0YW5ndWxhciwgaGV4YWdvbmFsLCB0cmlhbmd1bGFyOyBza2VsZXRvbjsgdGhpbm5pbmcgYWxnb3JpdGhtcyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7R3JlZ29yeToxOTcyOkNGUCwKICBhdXRob3IgPSAgICAgICAiSi4gR3JlZ29yeSIsCiAgdGl0bGUgPSAgICAgICAgIkEgQ29tcGFyaXNvbiBvZiBGbG9hdGluZyBQb2ludCBTdW1tYXRpb24gTWV0aG9kcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjkiLAogIHBhZ2VzID0gICAgICAgICI4MzgtLTgzOCIsCiAgbW9udGggPSAgICAgICAgc2VwLAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgImdhcmJvLnV3YXNhLmZpOi9wYy9kb2Mtc29mdC9mcGJpYmxpby50eHQgYW5kIGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGlzdHJpYnV0ZWQvUUxELmJpYiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5qICMgIiBhbmQgIiAjIGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNTIzMCAoRGlnaXRhbCBhcml0aG1ldGljIG1ldGhvZHMpIiwKICBjb3Jwc291cmNlID0gICAiQXJnb25uZSBOYXQuIExhYi4sIElMLCBVU0EiLAogIGRlc2NyaXB0b3JzID0gICJTaW11bGF0aW9uOyBzdGF0aXN0aWNzOyBudW1lcmljIGNhbGN1bGF0aW9uOyIsCiAga2V5d29yZHMgPSAgICAgImNvbXBhcmlzb247IGRpZ2l0YWwgYXJpdGhtZXRpYzsgZXJyb3I7IGVycm9yIHByb3BhZ2F0aW9uOyBmbG9hdGluZyBwb2ludCBzdW1tYXRpb24gbWV0aG9kczsgdHJ1bmNhdGlvbiIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7S2hhbGlsOjE5NzI6RUJULAogIGF1dGhvciA9ICAgICAgICJIYXRlbSBNLiBLaGFsaWwiLAogIHRpdGxlID0gICAgICAgICJUaGUgZWlnZW5wcm9ibGVtIG9mIGJsb2NrIHRyaWRpYWdvbmFsIG1hdHJpY2VzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiOSIsCiAgcGFnZXMgPSAgICAgICAgIjgzOS0tODM5IiwKICBtb250aCA9ICAgICAgICBzZXAsCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI4MzkuNjVGMTUiLAogIE1SbnVtYmVyID0gICAgICI0NyAyODAyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkIwMjkwSCAoTGluZWFyIGFsZ2VicmEpOyBDNDE0MCAoTGluZWFyIGFsZ2VicmEpIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gRGVsYXdhcmUsIE5ld2FyaywgREUsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImJsb2NrIHRyaWRpYWdvbmFsIG1hdHJpY2VzOyBlaWdlbnZhbHVlczsgZWlnZW52YWx1ZXMgYW5kIGVpZ2VuZnVuY3Rpb25zOyBlaWdlbnZhbHVlcyBhbmQgZWlnZW52ZWN0b3JzOyBlaWdlbnZlY3RvcnM7IGxpbmVhciBhbGdlYnJhOyBtYXRyaXggYWxnZWJyYTsgcGFydGlhbCBkaWZmZXJlbnRpYWwgZXF1YXRpb25zIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtQYXJuYXM6MTk3MjpDRFAsCiAgYXV0aG9yID0gICAgICAgIkQuIEwuIFBhcm5hcyBhbmQgQS4gTi4gSGFiZXJtYW5uIGFuZCBSLiBDLiBIb2x0IiwKICB0aXRsZSA9ICAgICAgICAiQ29tbWVudCBvbiBEZWFkbG9jayBQcmV2ZW50aW9uIE1ldGhvZCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjkiLAogIHBhZ2VzID0gICAgICAgICI4NDAtLTg0MSIsCiAgbW9udGggPSAgICAgICAgc2VwLAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTUwSiAoT3BlcmF0aW5nIHN5c3RlbXMpIiwKICBjb3Jwc291cmNlID0gICAiQ2FybmVnaWUtTWVsbG9uIFVuaXYuLCBQaXR0c2J1cmdoLCBQQSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiZGVhZGxvY2s7IGRlYWRsb2NrIHByZXZlbnRpb24gbWV0aG9kOyBkZWFkbHkgZW1icmFjZTsgaW50ZXJsb2NrOyBrbm90dGluZzsgbG9ja291dDsgbXVsdGlwcm9ncmFtbWluZzsgcmVzb3VyY2UgYWxsb2NhdGlvbjsgc2NoZWR1bGluZzsgdGltZSBzaGFyaW5nOyB0aW1lLXNoYXJpbmc7IHRpbWUtc2hhcmluZyBzeXN0ZW1zIiwKICB0cmVhdG1lbnQgPSAgICAiRyBHZW5lcmFsIFJldmlldzsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtSdWJpbnN0ZWluOjE5NzI6Q0JULAogIGF1dGhvciA9ICAgICAgICJSLiBSdWJpbnN0ZWluIGFuZCBKLiBGZWxkbWFuIiwKICB0aXRsZSA9ICAgICAgICAiQSBjb250cm9sbGVyIGZvciBhIHtCcmFpbGxlfSB0ZXJtaW5hbCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjkiLAogIHBhZ2VzID0gICAgICAgICI4NDEtLTg0MiIsCiAgbW9udGggPSAgICAgICAgc2VwLAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM1NTQwIChUZXJtaW5hbHMgYW5kIGdyYXBoaWMgZGlzcGxheXMpOyBDNTYxMCAoQ29tcHV0ZXIgaW50ZXJmYWNlcykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBDYWxpZm9ybmlhLCBJcnZpbmUsIENBLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJibGluZCBwcm9ncmFtbWluZyBhaWQ7IGJyYWlsbGU7IGNvbXB1dGVyIGludGVyZmFjZXM7IGNvbXB1dGVyIHBlcmlwaGVyYWwgZXF1aXBtZW50OyBjb21wdXRlciB0ZXJtaW5hbDsgY29udHJvbGxlcjsgdGFjdGlsZSB0ZXJtaW5hbDsgdGVybWluYWwiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle1RhbjoxOTcyOkZJUywKICBhdXRob3IgPSAgICAgICAiSy4gQy4gVGFuIiwKICB0aXRsZSA9ICAgICAgICAiT24ge0Zvc3Rlcn0ncyBJbmZvcm1hdGlvbiBTdG9yYWdlIGFuZCBSZXRyaWV2YWwgVXNpbmcge0FWTH0gVHJlZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTUiLAogIG51bWJlciA9ICAgICAgICI5IiwKICBwYWdlcyA9ICAgICAgICAiODQzLS04NDMiLAogIG1vbnRoID0gICAgICAgIHNlcCwKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIG5vdGUgPSAgICAgICAgICJTZWUgXGNpdGV7Rm9zdGVyOjE5NzI6VkNBfS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pIiwKICBjb3Jwc291cmNlID0gICAiTm9ydGh3ZXN0ZXJuIFVuaXYuLCBFdmFuc3RvbiwgSUwsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgIihtYXRoZW1hdGljYWwpOyBBVkwgdHJlZXM7IGJpbmFyeSB0cmVlczsgZmlsZSBvcmdhbmlzYXRpb247IGluZm9ybWF0aW9uIHJldHJpZXZhbDsgaW5mb3JtYXRpb24gc3RvcmFnZTsgc2VhcmNoIHRyZWVzOyB0cmVlcyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKICB4eG5vdGUgPSAgICAgICAiQ2hlY2sgY3Jvc3MtcmVmZXJlbmNlPz8iLAp9CgpAQXJ0aWNsZXtEaWprc3RyYToxOTcyOkhQLAogIGF1dGhvciA9ICAgICAgICJFLiBXLiBEaWprc3RyYSIsCiAgdGl0bGUgPSAgICAgICAgIlRoZSBIdW1ibGUgUHJvZ3JhbW1lciIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjEwIiwKICBwYWdlcyA9ICAgICAgICAiODU5LS04NjYiLAogIG1vbnRoID0gICAgICAgIG9jdCwKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlNhdCBKYW4gMTggMTQ6MDg6MjEgMTk5NyIsCiAgbm90ZSA9ICAgICAgICAgIjE5NzIgQUNNIFR1cmluZyBBd2FyZCBMZWN0dXJlLiIsCiAgYWJzdHJhY3QgPSAgICAgIldlIHNoYWxsIGRvIGEgbXVjaCBiZXR0ZXIgcHJvZ3JhbW1pbmcgam9iLCBwcm92aWRlZCB0aGF0IHdlIGFwcHJvYWNoIHRoZSB0YXNrIHdpdGggYSBmdWxsIGFwcHJlY2lhdGlvbiBpZiBpdHMgdHJlbWVuZG91cyBkaWZmaWN1bHR5LCBwcm92aWRlZCB0aGF0IHdlIHN0aWNrIHRvIG1vZGVzdCBhbmQgZWxlZ2FudCBwcm9ncmFtbWluZyBsYW5ndWFnZXMsIHByb3ZpZGVkIHRoYXQgd2UgcmVzcGVjdCB0aGUgaW50cmluc2ljIGxpbWl0YXRpb25zIG9mIHRoZSBodW1hbiBtaW5kIGFuZCBhcHByb2FjaCB0aGUgdGFzayBhcyBWZXJ5IEh1bWJsZSBQcm9ncmFtbWVycy4iLAp9CgpAQXJ0aWNsZXtNb3JyaXM6MTk3MjpEUFQsCiAgYXV0aG9yID0gICAgICAgIkphbWVzIEIuIE1vcnJpcyIsCiAgdGl0bGUgPSAgICAgICAgIkRlbWFuZCBQYWdpbmcgVGhyb3VnaCBVdGlsaXphdGlvbiBvZiBXb3JraW5nIFNldHMgb24gdGhlIHtNYW5pYWMgSUl9IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiMTAiLAogIHBhZ2VzID0gICAgICAgICI4NjctLTg3MiIsCiAgbW9udGggPSAgICAgICAgb2N0LAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkEgaGFyZHdhcmUgaW1wbGVtZW50YXRpb24gb24gdGhlIE1hbmlhYyBJSSBjb21wdXRlciBvZiB0aGUgd29ya2luZyBzZXQgbW9kZWwgZm9yIGRlbWFuZCBwYWdpbmcsIGFzIGludHJvZHVjZWQgYnkgRGVubmluZywgaXMgZGlzY3Vzc2VkLiBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhlIE1hbmlhYyBJSSBhcmUgZ2l2ZW4sIGFsb25nIHdpdGggYSBkZXNjcmlwdGlvbiBvZiB0aGUgYmFzaWMgZGVtYW5kIHBhZ2luZyBzY2hlbWUgYW5kIHRoZSBhc3NvY2lhdGl2ZSBtZW1vcnkgd2hpY2ggaGFzIGJlZW4gYWRkZWQgdG8gdGhlIE1hbmlhYyBJSSBoYXJkd2FyZS4gQSBkZXNjcmlwdGlvbiBvZiB0aGUgaGFyZHdhcmUgZGVzaWduIGZvciBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgd29ya2luZyBzZXQgbW9kZWwgaXMgZGlzY3Vzc2VkIGFuZCBhIHNwZWNpZmljYXRpb24gb2YgdGhlIGFjdGlvbnMgdGFrZW4gdW5kZXIgdmFyaW91cyBjb25kaXRpb25zIHdoaWNoIG1heSBhcmlzZSBkdXJpbmcgdGhlIG9wZXJhdGlvbiBvZiB0aGUgZnVsbCB3b3JraW5nIHNldCBtb2RlbCwgZGVtYW5kIHBhZ2luZyBzeXN0ZW0gaXMgZ2l2ZW4uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzUyMjAgKENvbXB1dGVyIGFyY2hpdGVjdHVyZSk7IEM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbikiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIENhbGlmb3JuaWEsIExvcyBBbGFtb3MsIE5NLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYXNzb2NpYXRpdmUgbWVtb3J5OyBhc3NvY2lhdGl2ZSBzdG9yYWdlOyBjb21wdXRlciBhcmNoaXRlY3R1cmU7IGNvbXB1dGVyIG9wZXJhdGluZyBzeXN0ZW1zOyBkYXRhIHN0b3JhZ2UsIGRpZ2l0YWw7IGRlbWFuZCBwYWdpbmc7IGR5bmFtaWMgc3RvcmFnZSBhbGxvY2F0aW9uOyBmaWxlOyBoYXJkd2FyZSBpbXBsZW1lbnRhdGlvbjsgTUFOSUFDIElJOyBtb2RlbDsgb3JnYW5pc2F0aW9uOyBzdG9yYWdlIGFsbG9jYXRpb247IHN0b3JhZ2UgbWFuYWdlbWVudDsgdXRpbGl6YXRpb24gb2Ygd29ya2luZyBzZXRzOyB2aXJ0dWFsIG1lbW9yeTsgd29ya2luZyBzZXQiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0FocmVuczoxOTcyOkNNUywKICBhdXRob3IgPSAgICAgICAiSi4gSC4gQWhyZW5zIGFuZCBVLiBEaWV0ZXIiLAogIHRpdGxlID0gICAgICAgICJDb21wdXRlciBNZXRob2RzIGZvciBTYW1wbGluZyBmcm9tIHRoZSBFeHBvbmVudGlhbCBhbmQgTm9ybWFsIERpc3RyaWJ1dGlvbnMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTUiLAogIG51bWJlciA9ICAgICAgICIxMCIsCiAgcGFnZXMgPSAgICAgICAgIjg3My0tODgyIiwKICBtb250aCA9ICAgICAgICBvY3QsCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2NUMxMCIsCiAgTVJudW1iZXIgPSAgICAgIjQ5IDE3MjgiLAogIG1ycmV2aWV3ZXIgPSAgICJWLiBEdXBhYyIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGlzdHJpYnV0ZWQvUUxELzE5NzIuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiVmFyaW91cyBtZXRob2RzIGFyZSBrbm93biBmb3IgdHJhbnNmb3JtaW5nIHVuaWZvcm1seSBkaXN0cmlidXRlZCByYW5kb20gbnVtYmVycyBpbnRvIGV4cG9uZW50aWFsbHkgYW5kIG5vcm1hbGx5IGRpc3RyaWJ1dGVkIHF1YW50aXRpZXMuIFRoZSBtb3N0IGVmZmljaWVudCBvbmVzIGFyZSBjb21wYXJlZCwgaW4gdGVybXMgb2YgbWVtb3J5IHJlcXVpcmVtZW50cyBhbmQgc3BlZWQsIHdpdGggc29tZSBuZXcgYWxnb3JpdGhtcy4gQSBudW1iZXIgb2YgcHJvY2VkdXJlcyBjb252ZXJ0IFRheWxvciBzZXJpZXMgZXhwYW5zaW9ucyBkaXJlY3RseSBpbnRvIHNhbXBsaW5nIHN0ZXBzLCBhbiBhcHByb2FjaCB3aGljaCBtYXkgYmUgdXNlZCBmb3Igc2FtcGxpbmcgZnJvbSBhbnkgY29udGludW91cyBkaXN0cmlidXRpb24uIEZvciB0aGUgZXhwb25lbnRpYWwgZGlzdHJpYnV0aW9uIGEgZGVmaW5pdGUgcmVjb21tZW5kYXRpb24gY2FuIGJlIG1hZGUsIHdoZXJlYXMgaW4gdGhlIGNhc2Ugb2YgdGhlIG5vcm1hbCBkaXN0cmlidXRpb24gdGhlcmUgcmVtYWlucyBhIGNob2ljZSBiZXR3ZWVuIHNsb3dlciBhbmQgc2hvcnRlciBhbGdvcml0aG1zIGFuZCBmYXN0ZXIgYnV0IHNwYWNlIGNvbnN1bWluZyBtZXRob2RzLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM3ODkwIChPdGhlciBzcGVjaWFsIGFwcGxpY2F0aW9ucyBvZiBjb21wdXRpbmcpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI5MTM7IDkyMiIsCiAgY29ycHNvdXJjZSA9ICAgIk5vdmEgU2NvdGlhIFRlY2guIENvbGwuLCBIYWxpZmF4LCBOUywgQ2FuYWRhIiwKICBjb3VudHJ5ID0gICAgICAiVVNBIiwKICBkZXNjcmlwdG9ycyA9ICAiUlZHOyIsCiAgZW51bSA9ICAgICAgICAgIjY5MjYiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgYWlkZWQgc2FtcGxpbmc7IGNvbXB1dGVyIG1ldGhvZHM7IGRpc3RyaWJ1dGVkIHJhbmRvbSBudW1iZXJzOyBkaXN0cmlidXRpb25zOyBleHBvbmVudGlhbDsgbm9ybWFsIGRpc3RyaWJ1dGlvbnM7IHJhbmRvbSBudW1iZXIgZ2VuZXJhdGlvbjsgc2FtcGxlZCBkYXRhIHN5c3RlbXM7IHNhbXBsaW5nOyBzYW1wbGluZyBzdGVwczsgdW5pZm9ybWx5IiwKICBsYW5ndWFnZSA9ICAgICAiRW5nbGlzaCIsCiAgcmVmZXJlbmNlcyA9ICAgIjAiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0hhbnNvbjoxOTcyOklFSSwKICBhdXRob3IgPSAgICAgICAiUmljaGFyZCBKLiBIYW5zb24iLAogIHRpdGxlID0gICAgICAgICJJbnRlZ3JhbCBFcXVhdGlvbnMgb2YgSW1tdW5vbG9neSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjEwIiwKICBwYWdlcyA9ICAgICAgICAiODgzLS04OTAiLAogIG1vbnRoID0gICAgICAgIG9jdCwKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY1UjA1IiwKICBNUm51bWJlciA9ICAgICAiNDggMTAxNjYiLAogIG1ycmV2aWV3ZXIgPSAgICJTLiBNYWxvbiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJUaGUgaW52ZXJzaW9uIG9mIGEgcGFydGljdWxhciBpbnRlZ3JhbCBlcXVhdGlvbiBvZiB0aGUgZmlyc3QgKEZyZWRob2xtKSBraW5kIGlzIHRoZSBiYXNpYyBwcm9ibGVtIGNvbnNpZGVyZWQuIFRoZSBzdHJhdGVneSB3aGljaCB5aWVsZGVkIHN1Y2Nlc3MgY29uc2lzdGVkIG9mIHRocmVlIGVzc2VudGlhbCBwb2ludHM6ICgxKSBmaXQgdGhlIGtub3duIGV4cGVyaW1lbnRhbCBkYXRhIGJ5IGEgY3VydmUgd2l0aCBwcm9wZXJ0aWVzIHdoaWNoIGRlcml2ZSBmcm9tIHByb3BlcnRpZXMgb2YgdGhlIChhcyB5ZXQgdW5rbm93bikgZnVuY3Rpb247ICgyKSBzdGFiaWxpemUgdGhlIGNvbXB1dGF0aW9uIGZvciB0aGUgdW5rbm93biBmdW5jdGlvbiBieSB1c2luZyBzaW5ndWxhciB2YWx1ZSBkZWNvbXBvc2l0aW9uOyAoMykgY29uc3RyYWluIHRoZSB1bmtub3duIGZ1bmN0aW9uIGFwcHJveGltYXRpb24gKHNpbmNlIGl0IHJlcHJlc2VudHMgYSBwcm9iYWJpbGl0eSBkaXN0cmlidXRpb24pIHRvIGJlIG5vbm5lZ2F0aXZlLiBccGFyIEEgbnVtYmVyIG9mIHRlc3QgY2FzZXMgYXJlIHByZXNlbnRlZC4gT25lIHNldCBvZiBhY3R1YWwgZXhwZXJpbWVudGFsIGRhdGEgaXMgYW5hbHl6ZWQgd2l0aCB0aGUgcHJvY2VkdXJlcyBwcmVzZW50ZWQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjAyOTBSIChJbnRlZ3JhbCBlcXVhdGlvbnMpOyBDNDE4MCAoSW50ZWdyYWwgZXF1YXRpb25zKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNDYxOyA5MjEiLAogIGNvcnBzb3VyY2UgPSAgICJDYWxpZm9ybmlhIEluc3QuIFRlY2hub2wuLCBQYXNhZGVuYSwgQ0EsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJiaW9tZWRpY2FsIGVuZ2luZWVyaW5nOyBjdXJ2ZSBmaXR0aW5nOyBkZWNvbXBvc2l0aW9uOyBleHBlcmltZW50YWwgZGF0YTsgZmlyc3Qga2luZDsgaW1tdW5vbG9neTsgaW50ZWdyYWwgZXF1YXRpb24gb2Y7IGludGVncmFsIGVxdWF0aW9uczsgaW50ZWdyYWwgZXF1YXRpb25zIG9mIHRoZSBmaXJzdCBraW5kOyBpbnZlcnNpb247IG1hdGhlbWF0aWNhbCB0ZWNobmlxdWVzOyBtZWRpY2luZTsgbm9ubmVnYXRpdmUgY29uc3RyYWludHM7IG51bWVyaWNhbCBtZXRob2RzOyBzaW5ndWxhciB2YWx1ZTsgc2luZ3VsYXIgdmFsdWUgYW5hbHlzaXMiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle1NpbW1vbnM6MTk3MjpHRUQsCiAgYXV0aG9yID0gICAgICAgIlJvYmVydCBGLiBTaW1tb25zIGFuZCBKb25hdGhhbiBTbG9jdW0iLAogIHRpdGxlID0gICAgICAgICJHZW5lcmF0aW5nIHtFbmdsaXNofSBEaXNjb3Vyc2UgZnJvbSBTZW1hbnRpYyBOZXR3b3JrcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjEwIiwKICBwYWdlcyA9ICAgICAgICAiODkxLS05MDUiLAogIG1vbnRoID0gICAgICAgIG9jdCwKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvQWkvbGlzcC5iaWIiLAogIGFic3RyYWN0ID0gICAgICJBIHN5c3RlbSBpcyBkZXNjcmliZWQgZm9yIGdlbmVyYXRpbmcgRW5nbGlzaCBzZW50ZW5jZXMgZnJvbSBhIGZvcm0gb2Ygc2VtYW50aWMgbmV0cyBpbiB3aGljaCB0aGUgbm9kZXMgYXJlIHdvcmQtc2Vuc2UgbWVhbmluZ3MgYW5kIHRoZSBwYXRocyBhcmUgcHJpbWFyaWx5IGRlZXAgY2FzZSByZWxhdGlvbnMuIFRoZSBncmFtbWFyIHVzZWQgYnkgdGhlIHN5c3RlbSBpcyBpbiB0aGUgZm9ybSBvZiBhIG5ldHdvcmsgdGhhdCBpbXBvc2VzIGFuIG9yZGVyaW5nIG9uIGEgc2V0IG9mIHN5bnRhY3RpYyB0cmFuc2Zvcm1hdGlvbnMgdGhhdCBhcmUgZXhwcmVzc2VkIGFzIExJU1AgZnVuY3Rpb25zLiBUaGUgZ2VuZXJhdGlvbiBhbGdvcml0aG0gdXNlcyB0aGUgaW5mb3JtYXRpb24gaW4gdGhlIHNlbWFudGljIG5ldHdvcmsgdG8gc2VsZWN0IGFwcHJvcHJpYXRlIGdlbmVyYXRpb24gcGF0aHMgdGhyb3VnaCB0aGUgZ3JhbW1hci4gVGhlIHN5c3RlbSBpcyBkZXNpZ25lZCBmb3IgdXNlIGFzIGEgY29tcHV0YXRpb25hbCB0b29sIHRoYXQgYWxsb3dzIGEgbGluZ3Vpc3QgdG8gZGV2ZWxvcCBhbmQgc3R1ZHkgbWV0aG9kcyBmb3IgZ2VuZXJhdGluZyBzdXJmYWNlIHN0cmluZ3MgZnJvbSBhbiB1bmRlcmx5aW5nIHNlbWFudGljIHN0cnVjdHVyZS4gSW5pdGlhbCBmaW5kaW5ncyB3aXRoIHJlZ2FyZCB0byBmb3JtIGRldGVybWluZXJzIHN1Y2ggYXMgdm9pY2UsIGZvcm0sIHRlbnNlLCBhbmQgbW9vZCwgc29tZSBydWxlcyBmb3IgZW1iZWRkaW5nIHNlbnRlbmNlcywgYW5kIHNvbWUgYXR0ZW50aW9uIHRvIHByb25vbWluYWwgc3Vic3RpdHV0aW9uIGFyZSByZXBvcnRlZC4gVGhlIHN5c3RlbSBpcyBwcm9ncmFtbWVkIGluIExJU1AgMS41IGFuZCBpcyBhdmFpbGFibGUgZnJvbSB0aGUgYXV0aG9ycy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNzgyMCAoSHVtYW5pdGllcyBjb21wdXRpbmcpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjE7IDcyMzsgOTAxIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gVGV4YXMsIEF1c3RpbiwgVFgsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhdXRvbWF0YSB0aGVvcnk7IGNvbXB1dGVyIGFwcGxpY2F0aW9uczsgY29tcHV0ZXIgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzIC0tLSBsaXNwOyBkYXRhIHByb2Nlc3NpbmcgLS0tIEh1bWFuaXRpZXMgQXBwbGljYXRpb25zOyBkZWVwIGNhc2UgcmVsYXRpb25zOyBFbmdsaXNoIHNlbnRlbmNlIGdlbmVyYXRpb247IGluZm9ybWF0aW9uIHNjaWVuY2UgLS0tIExhbmd1YWdlIFRyYW5zbGF0aW9uIGFuZCBMaW5ndWlzdGljczsgbGFuZ3VhZ2UgdHJhbnNsYXRpb24gYW5kIGxpbmd1aXN0aWNzOyBMSVNQIGZ1bmN0aW9uczsgc2VtYW50aWMgZ2VuZXJhdGlvbjsgc2VtYW50aWMgbmV0d29ya3MiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0RhdGhlOjE5NzI6Q0RULAogIGF1dGhvciA9ICAgICAgICJHZXJ0IERhdGhlIiwKICB0aXRsZSA9ICAgICAgICAiQ29udmVyc2lvbiBvZiBEZWNpc2lvbiBUYWJsZXMgYnkgUnVsZSBNYXNrIE1ldGhvZCB3aXRob3V0IFJ1bGUgTWFzayIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjEwIiwKICBwYWdlcyA9ICAgICAgICAiOTA2LS05MDkiLAogIG1vbnRoID0gICAgICAgIG9jdCwKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJUd28gYWxnb3JpdGhtcyBmb3IgZ2VuZXJhdGluZyBjb21wdXRlciBwcm9ncmFtcyBmcm9tIGRlY2lzaW9uIHRhYmxlcyBhcmUgZGVzY3JpYmVkLiBUaGUgYWxnb3JpdGhtcyBhbGxvdyBoYW5kbGluZyBsaW1pdGVkIGVudHJ5LCBleHRlbmRlZCBlbnRyeSwgYW5kIG1peGVkIGVudHJ5IHRhYmxlcy4gVGhlIGFsZ29yaXRobXMgYXJlIGJhc2VkIG9uIHRoZSBydWxlIG1hc2sgbWV0aG9kIGJ1dCBuZWVkIG5vdCBoYXZlIHRoZSBtYXNrcyBhdCBleGVjdXRpb24gdGltZS4gVGhleSBwZXJmb3JtIHRoZSBsb2dpY2FsIG9wZXJhdGlvbnMgaW1tZWRpYXRlbHkgcmF0aGVyIHRoYW4gYXQgdGhlIGVuZCBvZiB0aGUgaW50ZXJwcmV0aW5nIHByb2Nlc3MuIEV4ZWN1dGlvbiB0aW1lIGNhbiBiZSBjb25zaWRlcmFibHkgcmVkdWNlZCBieSBpbnN0YW50bHkgbWFya2luZyBydWxlcyB3aGljaCBhcmUgbm90IGFwcGxpY2FibGUgb3IgY29uZGl0aW9ucyB3aGljaCBhcmUgYWxyZWFkeSB0ZXN0ZWQuIFRoZSBuZXcgYWxnb3JpdGhtcyBjb21iaW5lIHRvIGEgY2VydGFpbiBkZWdyZWUgdGhlIGFkdmFudGFnZXMgb2YgbWFzayBtZXRob2RzIHdpdGggdGhvc2Ugb2YgdHJlZSBtZXRob2RzLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTEwIChTeXN0ZW1zIGFuYWx5c2lzIGFuZCBwcm9ncmFtbWluZyk7IEM2MTUwQyAoQ29tcGlsZXJzLCBpbnRlcnByZXRlcnMgYW5kIG90aGVyIHByb2Nlc3NvcnMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJTb2Z0d2FyZSBBRywgRGFybXN0YWR0LCBXZXN0IEdlcm1hbnkiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgcHJvZ3JhbW1pbmc7IGNvbnZlcnNpb247IGRlY2lzaW9uIHRhYmxlczsgbWFzazsgcHJvZ3JhbSBnZW5lcmF0aW9uOyBwcm9ncmFtIHByb2Nlc3NvcnM7IHJ1bGUgbWFzayBtZXRob2Qgd2l0aG91dCBydWxlIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtGcmF6ZXI6MTk3MjpTTlMsCiAgYXV0aG9yID0gICAgICAgIlcuIEQuIEZyYXplciBhbmQgQy4gSy4gV29uZyIsCiAgdGl0bGUgPSAgICAgICAgIlNvcnRpbmcgYnkgTmF0dXJhbCBTZWxlY3Rpb24iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTUiLAogIG51bWJlciA9ICAgICAgICIxMCIsCiAgcGFnZXMgPSAgICAgICAgIjkxMC0tOTEzIiwKICBtb250aCA9ICAgICAgICBvY3QsCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0RhdGFiYXNlL0dyYWVmZS5iaWIiLAogIGFic3RyYWN0ID0gICAgICJBIGZhbWlseSBvZiBzb3J0aW5nIGFsZ29yaXRobXMgaXMgcHJvcG9zZWQsIHRoZSBtZW1iZXJzIG9mIHdoaWNoIG1ha2UgZnVsbGVyIHVzZSBvZiB0aGUgbWVtb3J5IHNwYWNlIGFuZCB0aHVzIHlpZWxkIGxvbmdlciBzb3J0ZWQgc3RyaW5ncy4gRXh0ZW5zaXZlIHNpbXVsYXRpb24gcmVzdWx0cyBhcmUgcHJlc2VudGVkLCBhbmQgdmFyaW91cyBpbXBsaWNhdGlvbnMgYW5kIGZ1cnRoZXIgYXBwbGljYXRpb25zIGFyZSBkaXNjdXNzZWQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMzAgKERhdGEgaGFuZGxpbmcgdGVjaG5pcXVlcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIklCTSBUaG9tYXMgSi5XYXRzb24gUmVzLiBDZW50ZXIsIFlvcmt0b3duIEhlaWdodHMsIE5ZLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiQ0FDTTsgY29tcHV0ZXIgcHJvZ3JhbW1pbmcgLS0tIFN1YnJvdXRpbmVzOyBjb21wdXRlciBzeXN0ZW1zIHByb2dyYW1taW5nOyBuYXR1cmFsIHNlbGVjdGlvbjsgc29ydGluZyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7RXJzaG92OjE5NzI6Q0FILAogIGF1dGhvciA9ICAgICAgICJBLiBQLiBFcnNob3YiLAogIHRpdGxlID0gICAgICAgICJDb3JyaWdlbmR1bToge2BgQWVzdGhldGljcyBhbmQgdGhlIEh1bWFuIEZhY3RvciBpbiBQcm9ncmFtbWluZycnfSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjEwIiwKICBwYWdlcyA9ICAgICAgICAiOTEzLS05MTMiLAogIG1vbnRoID0gICAgICAgIG9jdCwKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlNhdCBKYW4gMTggMTQ6MDg6NTcgMTk5NyIsCiAgbm90ZSA9ICAgICAgICAgIlNlZSBcY2l0ZXtFcnNob3Y6MTk3MjpBSEZ9LiIsCn0KCkBBcnRpY2xle0FraW1hOjE5NzI6QUFJLAogIGF1dGhvciA9ICAgICAgICJILiBBa2ltYSIsCiAgdGl0bGUgPSAgICAgICAgIntBQ019IEFsZ29yaXRobSA0MzM6IEludGVycG9sYXRpb24gYW5kIFNtb290aCBDdXJ2ZSBGaXR0aW5nIEJhc2VkIG9uIExvY2FsIFByb2NlZHVyZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTUiLAogIG51bWJlciA9ICAgICAgICIxMCIsCiAgcGFnZXMgPSAgICAgICAgIjkxNC0tOTE4IiwKICBtb250aCA9ICAgICAgICBvY3QsCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUaHUgU2VwIDA4IDA5OjQ3OjU1IDE5OTQiLAogIG5vdGUgPSAgICAgICAgICJTZWUgYWxzbyBcY2l0ZXtBbmRlcnNvbjoxOTc2OlJJU30uIiwKfQoKQEFydGljbGV7Rm94OjE5NzI6Q1NDLAogIGF1dGhvciA9ICAgICAgICJQaHlsbGlzIEZveCIsCiAgdGl0bGUgPSAgICAgICAgIkNvbXBhcmF0aXZlIFN0dWR5IG9mIENvbXB1dGVyIFByb2dyYW1zIGZvciBJbnRlZ3JhdGluZyBEaWZmZXJlbnRpYWwgRXF1YXRpb25zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiMTEiLAogIHBhZ2VzID0gICAgICAgICI5NDEtLTk0OCIsCiAgbW9udGggPSAgICAgICAgbm92LAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlRoZSBpbnRlZ3JhdGlvbiBtZXRob2RzIHJlcHJlc2VudGVkIGluY2x1ZGUgbXVsdGlzdGVwIG1ldGhvZHMgKHByZWRpY3Rvci1jb3JyZWN0b3JzKSwgc2luZ2xlLXN0ZXAgbWV0aG9kcyAoUnVuZ2UtS3V0dGEpIGFuZCBleHRyYXBvbGF0aW9uIG1ldGhvZHMgKGJvdGggcG9seW5vbWlhbCBhbmQgcmF0aW9uYWwpLiBUaGUgdGVzdGluZyBwcm9jZWR1cmUgaXMgZGVzY3JpYmVkIHRvZ2V0aGVyIHdpdGggdGhlIGV2YWx1YXRpb24gY3JpdGVyaWEgYXBwbGllZC4gQSBzZXQgb2YgdGVzdCBwcm9ibGVtcyBvbiB3aGljaCB0aGUgcHJvZ3JhbXMgd2VyZSB0ZXN0ZWQgaXMgaW5jbHVkZWQgaW4gYXBwZW5kaXguIEZvciB0aGUgcGFydGljdWxhciBwcm9ibGVtcyBhbmQgY3JpdGVyaWEgdXNlZCBpbiB0aGUgaW52ZXN0aWdhdGlvbiBpdCB3YXMgZm91bmQgdGhhdCBhIHByb2dyYW0gYmFzZWQgb24gcmF0aW9uYWwgZXh0cmFwb2xhdGlvbiBzaG93ZWQgdGhlIGJlc3QgcGVyZm9ybWFuY2UuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjAyOTBQIChEaWZmZXJlbnRpYWwgZXF1YXRpb25zKTsgQzQxNzAgKERpZmZlcmVudGlhbCBlcXVhdGlvbnMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjM7IDkyMSIsCiAgY29ycHNvdXJjZSA9ICAgIk5ld2FyayBDb2xsLiBFbmduZy4sIE5KLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcGFyYXRpdmUgc3R1ZHk7IGNvbXB1dGVyIHByb2dyYW1taW5nOyBjb21wdXRlciBwcm9ncmFtczsgZGlmZmVyZW50aWFsOyBkaWZmZXJlbnRpYWwgZXF1YXRpb25zOyBlcXVhdGlvbnM7IGV4dHJhcG9sYXRpb24gbWV0aG9kczsgaW50ZWdyYXRpb24gbWV0aG9kczsgbWF0aGVtYXRpY2FsIHRlY2huaXF1ZXMgLS0tIERpZmZlcmVudGlhbCBFcXVhdGlvbnM7IG1hdGhlbWF0aWNhbCB0ZWNobmlxdWVzIC0tLSBJbnRlZ3JhdGlvbjsgcHJlZGljdG9yLWNvcnJlY3RvciBtZXRob2RzIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtNYWxjb2xtOjE5NzI6QVJQLAogIGF1dGhvciA9ICAgICAgICJNaWNoYWVsIEEuIE1hbGNvbG0iLAogIHRpdGxlID0gICAgICAgICJBbGdvcml0aG1zIHRvIFJldmVhbCBQcm9wZXJ0aWVzIG9mIEZsb2F0aW5nLVBvaW50IEFyaXRobWV0aWMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTUiLAogIG51bWJlciA9ICAgICAgICIxMSIsCiAgcGFnZXMgPSAgICAgICAgIjk0OS0tOTUxIiwKICBtb250aCA9ICAgICAgICBub3YsCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBub3RlID0gICAgICAgICAiU2VlIGFsc28gXGNpdGV7R2VudGxlbWFuOjE5NzQ6TUFSfS4iLAogIGFic3RyYWN0ID0gICAgICJUd28gYWxnb3JpdGhtcyBhcmUgcHJlc2VudGVkIGluIHRoZSBmb3JtIG9mIEZvcnRyYW4gc3Vicm91dGluZXMuIEVhY2ggc3Vicm91dGluZSBjb21wdXRlcyB0aGUgcmFkaXggYW5kIG51bWJlciBvZiBkaWdpdHMgb2YgdGhlIGZsb2F0aW5nLXBvaW50IG51bWJlcnMgYW5kIHdoZXRoZXIgcm91bmRpbmcgb3IgY2hvcHBpbmcgaXMgZG9uZSBieSB0aGUgbWFjaGluZSBvbiB3aGljaCBpdCBpcyBydW4uIFRoZSBtZXRob2RzIGFyZSBzaG93biB0byB3b3JrIG9uIGFueSBgYHJlYXNvbmFibGUnJyBmbG9hdGluZy1wb2ludCBjb21wdXRlci4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNTIzMCAoRGlnaXRhbCBhcml0aG1ldGljIG1ldGhvZHMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJTdGFuZm9yZCBVbml2LiwgQ0EsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjaG9wcGluZzsgY29tcHV0ZXIgcHJvZ3JhbW1pbmc7IGNvbXB1dGVyIHByb2dyYW1taW5nIGxhbmd1YWdlcyAtLS0gRm9ydHJhbjsgZGlnaXRhbCBhcml0aG1ldGljOyBkaWdpdHM7IGZsb2F0aW5nIHBvaW50IGFyaXRobWV0aWM7IEZvcnRyYW4gc3Vicm91dGluZXM7IG1hdGhlbWF0aWNhbCB0ZWNobmlxdWVzIC0tLSBEaWdpdGFsIEFyaXRobWV0aWM7IG51bWJlciBvZjsgcHJvcGVydGllczsgcmFkaXg7IHJvdW5kaW5nIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtQYXRyaWNrOjE5NzI6SFBBLAogIGF1dGhvciA9ICAgICAgICJNZXJyZWxsIEwuIFBhdHJpY2siLAogIHRpdGxlID0gICAgICAgICJBIEhpZ2hseSBQYXJhbGxlbCBBbGdvcml0aG0gZm9yIEFwcHJveGltYXRpbmcgQWxsIFplcm9zIG9mIGEgUG9seW5vbWlhbCB3aXRoIE9ubHkgUmVhbCBaZXJvcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjExIiwKICBwYWdlcyA9ICAgICAgICAiOTUyLS05NTUiLAogIG1vbnRoID0gICAgICAgIG5vdiwKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY1SDA1IiwKICBNUm51bWJlciA9ICAgICAiNDggMTQ1NSIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJBbiBhbGdvcml0aG0gaXMgZGVzY3JpYmVkIGJhc2VkIG9uIE5ld3RvbidzIG1ldGhvZCB3aGljaCBzaW11bHRhbmVvdXNseSBhcHByb3hpbWF0ZXMgYWxsIHplcm9zIG9mIGEgcG9seW5vbWlhbCB3aXRoIG9ubHkgcmVhbCB6ZXJvcy4gVGhlIGFsZ29yaXRobSwgd2hpY2ggaXMgY29uY2VwdHVhbGx5IHN1aXRhYmxlIGZvciBwYXJhbGxlbCBjb21wdXRhdGlvbiwgZGV0ZXJtaW5lcyBpdHMgb3duIHN0YXJ0aW5nIHZhbHVlcyBzbyB0aGF0IGNvbnZlcmdlbmNlIHRvIHRoZSB6ZXJvcyBpcyBndWFyYW50ZWVkLiBNdWx0aXBsZSB6ZXJvcyBhbmQgdGhlaXIgbXVsdGlwbGljaXR5IGFyZSByZWFkaWx5IGRldGVybWluZWQuIEF0IG5vIHBvaW50IGluIHRoZSBtZXRob2QgaXMgcG9seW5vbWlhbCBkZWZsYXRpb24gdXNlZC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJCMDI5MEYgKEludGVycG9sYXRpb24gYW5kIGZ1bmN0aW9uIGFwcHJveGltYXRpb24pOyBDNDEzMCAoSW50ZXJwb2xhdGlvbiBhbmQgZnVuY3Rpb24gYXBwcm94aW1hdGlvbikiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMzsgOTIxIiwKICBjb3Jwc291cmNlID0gICAiRHVrZSBVbml2LiwgRHVyaGFtLCBOQywgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFwcHJveGltYXRpb24gd2l0aCByZWFsIHplcm9zOyBjb21wdXRlciBwcm9ncmFtbWluZzsgZnVuY3Rpb24gYXBwcm94aW1hdGlvbjsgZ3VhcmFudGVlZCBjb252ZXJnZW5jZTsgaGlnaGx5OyBtYXRoZW1hdGljYWwgdGVjaG5pcXVlcyAtLS0gUG9sZXMgYW5kIFplcm9zOyBtYXRoZW1hdGljYWwgdGVjaG5pcXVlcyAtLS0gUG9seW5vbWlhbHM7IG11bHRpcGxlIHplcm9zOyBOZXd0b24ncyBtZXRob2Q7IHBhcmFsbGVsIGFsZ29yaXRobTsgcGFyYWxsZWwgbnVtZXJpY2FsIGFsZ29yaXRobXM7IHBvbGVzIGFuZCB6ZXJvczsgcG9seW5vbWlhbCB6ZXJvczsgcG9seW5vbWlhbHM7IHJlYWwgcG9seW5vbWlhbHM7IHJlYWwgemVyb3M7IHN0YXJ0aW5nIHZhbHVlcyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7TGVkZ2FyZDoxOTcyOk1UQywKICBhdXRob3IgPSAgICAgICAiSGVucnkgRi4gTGVkZ2FyZCIsCiAgdGl0bGUgPSAgICAgICAgIk1vZGVsIGZvciBUeXBlIENoZWNraW5nIC0tLSB3aXRoIGFuIEFwcGxpY2F0aW9uIHRvIHtBbGdvbCA2MH0iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTUiLAogIG51bWJlciA9ICAgICAgICIxMSIsCiAgcGFnZXMgPSAgICAgICAgIjk1Ni0tOTY2IiwKICBtb250aCA9ICAgICAgICBub3YsCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiVGhpcyBwYXBlciBhdHRlbXB0cyB0byBpc29sYXRlIHRoZSBub3Rpb24gb2YgdHlwZSBjaGVja2luZyBhbmQgcHJlc2VudHMgYSBwYXJ0aWFsIHNvbHV0aW9uIHRvIHRoZSB0eXBlIGNoZWNraW5nIHByb2JsZW0gYmFzZWQgb24gdGhlIG5vdGlvbnMgb2YgYWJzdHJhY3Rpb24gYW5kIGFwcGxpY2F0aW9uIG9mIGZ1bmN0aW9ucy4gQSBwcm9ncmFtIGlzIG1hcHBlZCBpbnRvIGFuIGV4cHJlc3Npb24gd2l0aGluIGEgZGVjaWRhYmxlIHN1YnNldCBvZiB0aGUgbGFtYmRhLWNhbGN1bHVzLCB3aGljaCBjaGFyYWN0ZXJpemVzIHRoZSB0eXBlIHJlbGF0aW9ucyB3aXRoaW4gdGhlIHByb2dyYW0gYW5kIGVsaW1pbmF0ZXMgYWxsIG90aGVyIGluZm9ybWF0aW9uLiBUaGUgZGV0ZXJtaW5hdGlvbiBvZiB0aGUgdHlwZS13aXNlIGNvcnJlY3RuZXNzIG9yIGluY29ycmVjdG5lc3Mgb2YgdGhlIHByb2dyYW0gaXMgcmVzb2x2ZWQgYnkgcmVkdWNpbmcgaXRzIGNvcnJlc3BvbmRpbmcgbGFtYmRhLWNhbGN1bHVzIGV4cHJlc3Npb24gdG8gb25lIG9mIHR3byBub3JtYWwgZm9ybXMsIHRoZSBjb25zdGFudCBgYGNvcnJlY3QnJyBmb3IgYSB0eXBlLXdpc2UgY29ycmVjdCBwcm9ncmFtIG9yIHRoZSBjb25zdGFudCBgYGVycm9yLicnIEFuIGFwcGxpY2F0aW9uIHRvIHR5cGUgY2hlY2tpbmcgaW4gQWxnb2wgNjAgaXMgbWFkZSwgYW5kIHRoZSBhdHRlbmRhbnQgcHJvYmxlbXMgZmFjZWQgZm9yIGFueSBub3Rpb24gb2YgdHlwZSBjaGVja2luZyBhcmUgZGlzY3Vzc2VkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTUwQyAoQ29tcGlsZXJzLCBpbnRlcnByZXRlcnMgYW5kIG90aGVyIHByb2Nlc3NvcnMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJKb2hucyBIb3BraW5zIFVuaXYuLCBCYWx0aW1vcmUsIE1ELCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYWJzdHJhY3Rpb247IEFMR09MOyBBTEdPTCA2MDsgYXBwbGljYXRpb24gb2YgZnVuY3Rpb25zOyBjb21waWxhdGlvbjsgY29tcHV0ZXIgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzOyBleGVjdXRpb247IGxhbWJkYSBjYWxjdWx1czsgbW9kZWw7IHByb2dyYW0gY29tcGlsZXJzOyB0eXBlIGNoZWNraW5nIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtIZW5kZXJzb246MTk3MjpEU1MsCiAgYXV0aG9yID0gICAgICAgIlBldGVyIEhlbmRlcnNvbiIsCiAgdGl0bGUgPSAgICAgICAgIkRlcml2ZWQgU2VtYW50aWNzIGZvciBTb21lIFByb2dyYW1taW5nIExhbmd1YWdlIENvbnN0cnVjdHMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTUiLAogIG51bWJlciA9ICAgICAgICIxMSIsCiAgcGFnZXMgPSAgICAgICAgIjk2Ny0tOTczIiwKICBtb250aCA9ICAgICAgICBub3YsCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiVGhlIGNvbnN0cnVjdHMgb2YgYSBzaW1wbGUgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgYXJlIGludHJvZHVjZWQgYW5kIGRlc2NyaWJlZCBpbmZvcm1hbGx5IGluIHRlcm1zIG9mIHZhbHVlcyBhbmQgc2lkZS1lZmZlY3RzLiBhIHRyYW5zbGF0b3IgaXMgZGVmaW5lZCB3aGljaCB0cmFuc2xhdGVzIHRoZSBsYW5ndWFnZSBpbnRvIGZsb3djaGFydHMgZm9yIGEgc2ltcGxlIG1hY2hpbmUuIFRoZSBhY3Rpb24gb2YgdGhlIG1hY2hpbmUgaW4gZXhlY3V0aW5nIGEgZmxvd2NoYXJ0IGlzIGRlZmluZWQuIEEgcHJvb2YgaXMgY29uc3RydWN0ZWQgdGhhdCB0aGUgZWZmZWN0IG9mIHRyYW5zbGF0aW5nIGFuZCBleGVjdXRpbmcgYW55IHByb2dyYW0gY2FuIGJlIGV4cHJlc3NlZCBzb2xlbHkgaW4gdGVybXMgb2YgdGhlIHZhbHVlIGFuZCBzaWRlLWVmZmVjdCBvZiB0aGUgcHJvZ3JhbS4gZHVyaW5nIHRoZSBjb3Vyc2Ugb2YgY29uc3RydWN0aW5nIHRoZSBwcm9vZiwgZm9ybWFsIGRlZmluaXRpb25zIG9mIHRoZSBjb25jZXB0cyBvZiB2YWx1ZSBhbmQgc2lkZS1lZmZlY3QgYXJlIGRlcml2ZWQgaW4gb3JkZXIgdG8gbWFrZSB0aGUgcHJvb2Ygcmlnb3JvdXMuIENvcnJlY3RuZXNzIG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBpbnZvbHZlcyBjaGVja2luZyB0aGF0IHRoZSBkZWZpbml0aW9ucyBkZXJpdmVkIGluIHRoZSBzdGVwIGFib3ZlIGFyZSBhbiBhY2NlcHRhYmxlIGZvcm1hbGl6YXRpb24gb2YgdGhlIGluZm9ybWFsIGRlc2NyaXB0aW9uIGdpdmVuIGluIHRoZSBmaXJzdCBzdGVwLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MjQwIChQcm9ncmFtbWluZyBhbmQgYWxnb3JpdGhtIHRoZW9yeSkiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIE5ld2Nhc3RsZSB1cG9uIFR5bmUsIFVLIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIHByb2dyYW1taW5nIGxhbmd1YWdlczsgY29uc3RydWN0czsgZGVyaXZlZCBzZW1hbnRpY3M7IGZsb3djaGFydHM7IGxhbWJkYSBjYWxjdWx1czsgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2U7IHByb2dyYW1taW5nIHRoZW9yeTsgc2lkZSBlZmZlY3RzOyB0cmFuc2xhdG9yOyB2YWx1ZXMiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle1ZlcmhlbHN0OjE5NzI6Q0xELAogIGF1dGhvciA9ICAgICAgICJNLiBWZXJoZWxzdCIsCiAgdGl0bGUgPSAgICAgICAgIkNvbnZlcnNpb24gb2YgTGltaXRlZC1FbnRyeSBEZWNpc2lvbiBUYWJsZXMgdG8gT3B0aW1hbCBhbmQgTmVhci1PcHRpbWFsIEZsb3djaGFydHM6IFR3byBOZXcgQWxnb3JpdGhtcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjExIiwKICBwYWdlcyA9ICAgICAgICAiOTc0LS05ODAiLAogIG1vbnRoID0gICAgICAgIG5vdiwKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJUaGUgYWxnb3JpdGhtcyBhcmUgZmlyc3QgZGVyaXZlZCBmb3IgdHJlYXRpbmcgZGVjaXNpb24gdGFibGVzIG5vdCBjb250YWluaW5nIGFuIEVMU0UtcnVsZSwgYnV0IHRoZSBvcHRpbXVtLWFwcHJvYWNoaW5nIGFsZ29yaXRobSBpcyBzaG93biB0byBiZSBlcXVhbGx5IHZhbGlkIGZvciB0YWJsZXMgaW5jbHVkaW5nIHN1Y2ggYSBydWxlLiBCb3RoIGFsZ29yaXRobXMgYXJlIGNvbXBhcmVkIHdpdGggZXhpc3Rpbmcgb25lcyBhbmQgYXJlIGFwcGxpZWQgdG8gYSBzb21ld2hhdCBsYXJnZSBkZWNpc2lvbiB0YWJsZSBkZXJpdmVkIGZyb20gYSByZWFsIGNhc2UuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMTAgKFN5c3RlbXMgYW5hbHlzaXMgYW5kIHByb2dyYW1taW5nKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gTG91dmFpbiwgQmVsZ2l1bSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhbGdvcml0aG07IGNvbXB1dGVyIHByb2dyYW1taW5nIC0tLSBTdWJyb3V0aW5lczsgY29tcHV0ZXIgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzOyBjb252ZXJzaW9uOyBkZWNpc2lvbiB0YWJsZXM7IGZsb3djaGFydGluZzsgbGltaXRlZCBlbnRyeSBkZWNpc2lvbiB0YWJsZXM7IG1pbmltdW0gZXhlY3V0aW9uIHRpbWU7IG5lYXI7IG9wdGltYWwgZmxvd2NoYXJ0czsgb3B0aW1pc2F0aW9uOyBvcHRpbXVtIGFwcHJvYWNoaW5nIGFsZ29yaXRobTsgb3B0aW11bSBmaW5kaW5nIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtCYWVja2VyOjE5NzI6R0NWLAogIGF1dGhvciA9ICAgICAgICJILiBELiBCYWVja2VyIiwKICB0aXRsZSA9ICAgICAgICAiR2FyYmFnZSBDb2xsZWN0aW9uIGZvciBWaXJ0dWFsIE1lbW9yeSBDb21wdXRlciBTeXN0ZW1zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiMTEiLAogIHBhZ2VzID0gICAgICAgICI5ODEtLTk4NiIsCiAgbW9udGggPSAgICAgICAgbm92LAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9Db21waWxlci9nYXJiYWdlLmNvbGxlY3Rpb24uYmliIiwKICBhYnN0cmFjdCA9ICAgICAiSW4gbGlzdCBwcm9jZXNzaW5nIHRoZXJlIGlzIHR5cGljYWxseSBhIGdyb3dpbmcgZGVtYW5kIGZvciBzcGFjZSBkdXJpbmcgcHJvZ3JhbSBleGVjdXRpb24uIFRoaXMgcGFwZXIgZXhhbWluZXMgdGhlIHByYWN0aWNhbCBpbXBsaWNhdGlvbnMgb2YgdGhpcyBncm93dGggd2l0aGluIGEgdmlydHVhbCBtZW1vcnkgY29tcHV0ZXIgc3lzdGVtLCBwcm9wb3NlcyB0d28gbmV3IGdhcmJhZ2UgY29sbGVjdGlvbiB0ZWNobmlxdWVzIGZvciB2aXJ0dWFsIG1lbW9yeSBzeXN0ZW1zLCBhbmQgY29tcGFyZXMgdGhlbSB3aXRoIHRyYWRpdGlvbmFsIG1ldGhvZHMgYnkgZGlzY3Vzc2lvbiBhbmQgYnkgc2ltdWxhdGlvbi4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBDYWxnYXJ5LCBBbHRhLiwgQ2FuYWRhIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIG9wZXJhdGluZyBzeXN0ZW1zIC0tLSBTdG9yYWdlIEFsbG9jYXRpb247IGNvbXB1dGVyIHByb2dyYW1taW5nIGxhbmd1YWdlczsgZGF0YSBzdG9yYWdlLCBkaWdpdGFsOyBmaWxlIG9yZ2FuaXNhdGlvbjsgZ2FyYmFnZSBjb2xsZWN0aW9uOyBsaXN0OyBwYWdpbmc7IHByb2Nlc3Npbmc7IHNlZ21lbnRhdGlvbjsgc3RvcmFnZSBhbGxvY2F0aW9uOyBzdG9yYWdlIG1hbmFnZW1lbnQ7IHZpcnR1YWwgbWVtb3J5OyB2aXJ0dWFsIG1lbW9yeSBjb21wdXRlciBzeXN0ZW1zIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtSYW1iZXJnOjE5NzI6QU1HLAogIGF1dGhvciA9ICAgICAgICJKb2huIFMuIFJhbWJlcmcgYW5kIEJydWNlIFcuIFNjaG1laXNlciIsCiAgdGl0bGUgPSAgICAgICAgIkFwcHJveGltYXRlIE1ldGhvZCBmb3IgR2VuZXJhdGluZyBTeW1tZXRyaWMgUmFuZG9tIFZhcmlhYmxlcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjExIiwKICBwYWdlcyA9ICAgICAgICAiOTg3LS05OTAiLAogIG1vbnRoID0gICAgICAgIG5vdiwKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJBIG1ldGhvZCBmb3IgZ2VuZXJhdGluZyB2YWx1ZXMgb2YgY29udGludW91cyBzeW1tZXRyaWMgcmFuZG9tIHZhcmlhYmxlcyB0aGF0IGlzIHJlbGF0aXZlbHkgZmFzdCwgcmVxdWlyZXMgZXNzZW50aWFsbHkgbm8gY29tcHV0ZXIgbWVtb3J5LCBhbmQgaXMgZWFzeSB0byB1c2UgaXMgZGV2ZWxvcGVkLiBUaGUgbWV0aG9kLCB3aGljaCB1c2VzIGEgdW5pZm9ybSB6ZXJvLW9uZSByYW5kb20gbnVtYmVyIHNvdXJjZSwgaXMgYmFzZWQgb24gdGhlIGludmVyc2UgZnVuY3Rpb24gb2YgdGhlIGxhbWJkYSBkaXN0cmlidXRpb24gb2YgVHVrZXkuIFNpbmNlIGl0IGFwcHJveGltYXRlcyBtYW55IG9mIHRoZSBjb250aW51b3VzIHRoZW9yZXRpY2FsIGRpc3RyaWJ1dGlvbnMgYW5kIGVtcGlyaWNhbCBkaXN0cmlidXRpb25zIGZyZXF1ZW50bHkgdXNlZCBpbiBzaW11bGF0aW9ucywgdGhlIG1ldGhvZCBzaG91bGQgYmUgdXNlZnVsIHRvIHNpbXVsYXRpb24gcHJhY3RpdGlvbmVycy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNzg5MCAoT3RoZXIgc3BlY2lhbCBhcHBsaWNhdGlvbnMgb2YgY29tcHV0aW5nKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiOTIyIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gSW93YSwgSW93YSBDaXR5LCBJQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFwcHJveGltYXRlIG1ldGhvZDsgaW52ZXJzZSBmdW5jdGlvbjsgbGFtYmRhIGRpc3RyaWJ1dGlvbiBvZiBUdWtleTsgbWF0aGVtYXRpY2FsIG1vZGVsczsgbWF0aGVtYXRpY2FsIHN0YXRpc3RpY3M7IHJhbmRvbSBudW1iZXIgZ2VuZXJhdGlvbjsgcmFuZG9tIG51bWJlciBzb3VyY2U7IHNpbXVsYXRpb247IHN5bW1ldHJpYyByYW5kb20gdmFyaWFibGUgZ2VuZXJhdGlvbjsgdW5pZm9ybSB6ZXJvIG9uZSIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7TWFyY2g6MTk3MjpBQUUsCiAgYXV0aG9yID0gICAgICAgIkQuIEwuIE1hcmNoIiwKICB0aXRsZSA9ICAgICAgICAie0FDTX0gQWxnb3JpdGhtIDQzNDogRXhhY3QgUHJvYmFiaWxpdGllcyBmb3IgJHtSXHRpbWVze0N9fSQgQ29udGluZ2VuY3kgVGFibGVzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiMTEiLAogIHBhZ2VzID0gICAgICAgICI5OTEtLTk5MiIsCiAgbW9udGggPSAgICAgICAgbm92LAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIFNlcCAyMCAxOToyNjowNCAxOTk0IiwKICBub3RlID0gICAgICAgICAiU2VlIGFsc28gXGNpdGV7Qm91bHRvbjoxOTc2OlJFUH0uIiwKfQoKQEFydGljbGV7RnVsbGVydG9uOjE5NzI6QUFNLAogIGF1dGhvciA9ICAgICAgICJXLiBGdWxsZXJ0b24iLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gNDM1OiBNb2RpZmllZCBJbmNvbXBsZXRlIEdhbW1hIEZ1bmN0aW9uIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiMTEiLAogIHBhZ2VzID0gICAgICAgICI5OTMtLTk5NSIsCiAgbW9udGggPSAgICAgICAgbm92LAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVGh1IFNlcCAwOCAwOTo0Nzo1NSAxOTk0IiwKICBub3RlID0gICAgICAgICAiU2VlIGFsc28gXGNpdGV7U2Nob2VuZToxOTc4OlJNSX0uIiwKfQoKQEFydGljbGV7THVtOjE5NzI6QVJLLAogIGF1dGhvciA9ICAgICAgICJWLiBZLiBMdW0gYW5kIFAuIFMuIFQuIFl1ZW4iLAogIHRpdGxlID0gICAgICAgICJBZGRpdGlvbmFsIHJlc3VsdHMgb24ga2V5LXRvLWFkZHJlc3MgdHJhbnNmb3JtIHRlY2huaXF1ZXM6IGEgZnVuZGFtZW50YWwgcGVyZm9ybWFuY2Ugc3R1ZHkgb24gbGFyZ2UgZXhpc3RpbmcgZm9ybWF0dGVkIGZpbGVzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiMTEiLAogIHBhZ2VzID0gICAgICAgICI5OTYtLTk5NyIsCiAgbW9udGggPSAgICAgICAgbm92LAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbikiLAogIGNvcnBzb3VyY2UgPSAgICJJQk0gUmVzLiBMYWIuLCBTYW4gSm9zZSwgQ0EsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImZpbGU7IGZpbGUgb3JnYW5pc2F0aW9uOyBmdW5kYW1lbnRhbCBwZXJmb3JtYW5jZTsgaGFzaCBjb2Rpbmc7IGtleSB0byBhZGRyZXNzIHRyYW5zZm9ybSB0ZWNobmlxdWVzOyBsYXJnZSBleGlzdGluZyBmb3JtYXR0ZWQgZmlsZXM7IG9yZ2FuaXphdGlvbjsgc3R1ZHkiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0tlbm5lZHk6MTk3MjpOT0QsCiAgYXV0aG9yID0gICAgICAgIlMuIEtlbm5lZHkiLAogIHRpdGxlID0gICAgICAgICJBIG5vdGUgb24gb3B0aW1hbCBkb3VibHktY2hhaW5lZCB0cmVlcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjExIiwKICBwYWdlcyA9ICAgICAgICAiOTk3LS05OTgiLAogIG1vbnRoID0gICAgICAgIG5vdiwKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pIiwKICBjb3Jwc291cmNlID0gICAiQ2FsaWZvcm5pYSBJbnN0LiBUZWNobm9sLiwgUGFzYWRlbmEsIENBLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJiaW5hcnkgc2VhcmNoOyBmaWxlIG9yZ2FuaXNhdGlvbjsgZmlsZSBzZWFyY2hpbmc7IG9wdGltYWwgZG91Ymx5IGNoYWluZWQgdHJlZXM7IHRyZWU7IHRyZWVzIChtYXRoZW1hdGljYWwpIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtFaXNlbmJlcmc6MTk3MjpGQ0QsCiAgYXV0aG9yID0gICAgICAgIk11cnJheSBBLiBFaXNlbmJlcmcgYW5kIE1pY2hhZWwgUi4gTWNHdWlyZSIsCiAgdGl0bGUgPSAgICAgICAgIkZ1cnRoZXIgY29tbWVudHMgb24ge0RpamtzdHJhfSdzIGNvbmN1cnJlbnQgcHJvZ3JhbW1pbmcgY29udHJvbCBwcm9ibGVtIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiMTEiLAogIHBhZ2VzID0gICAgICAgICI5OTktLTk5OSIsCiAgbW9udGggPSAgICAgICAgbm92LAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgImZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGF0YWJhc2UvV2llZGVyaG9sZC5iaWIiLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjE1MEogKE9wZXJhdGluZyBzeXN0ZW1zKSIsCiAga2V5d29yZHMgPSAgICAgImNyaXRpY2FsOyBEaWprc3RyYSdzIGNvbmN1cnJlbnQgcHJvZ3JhbW1pbmcgY29udHJvbCBwcm9ibGVtOyBtdWx0aXByb2Nlc3Npbmc7IG11bHRpcHJvY2Vzc2luZyBwcm9ncmFtczsgc2VjdGlvbiIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKICB4eHRpdGxlID0gICAgICAiRnVydGhlciBDb21tZW50cyBvbiB7RGlqa3N0cmF9J3MgQ29uY3VycmVudCBQcm9ncmFtbWluZyBDb250cm9sIFByb2JsZW1zIiwKfQoKQEFydGljbGV7U21vbGlhcjoxOTcyOkNNTSwKICBhdXRob3IgPSAgICAgICAiUy4gVy4gU21vbGlhciIsCiAgdGl0bGUgPSAgICAgICAgIkNvbW1lbnRzIG9uIHtNb29yZXIncyBNdXNpY30gYW5kIGNvbXB1dGVyIGNvbXBvc2l0aW9uIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiMTEiLAogIHBhZ2VzID0gICAgICAgICIxMDAwLS0xMDAxIiwKICBtb250aCA9ICAgICAgICBub3YsCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzc4MjAgKEh1bWFuaXRpZXMgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIlRlY2guIElzcmFlbCBJbnN0LiBUZWNobm9sLiwgSGFpZmEsIElzcmFlbCIsCiAga2V5d29yZHMgPSAgICAgImFydGlmaWNpYWwgaW50ZWxsaWdlbmNlOyBjb21wdXRlciBjb21wb3NpdGlvbjsgY29tcHV0ZXIgbXVzaWM7IGhldXJpc3RpYzsgaHVtYW5pdGllczsgcHJvZ3JhbW1pbmciLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle1BoaWxsaXBzOjE5NzI6RFBBLAogIGF1dGhvciA9ICAgICAgICJKLiBSaWNoYXJkIFBoaWxsaXBzIGFuZCBILiBDLiBBZGFtcyIsCiAgdGl0bGUgPSAgICAgICAgIkR5bmFtaWMgUGFydGl0aW9uaW5nIGZvciBBcnJheSBMYW5ndWFnZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTUiLAogIG51bWJlciA9ICAgICAgICIxMiIsCiAgcGFnZXMgPSAgICAgICAgIjEwMjMtLTEwMzIiLAogIG1vbnRoID0gICAgICAgIGRlYywKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJUaGUgY2xhc3NpY2FsIHByb2Nlc3Mgb2YgcGFydGl0aW9uaW5nIGFuIGFycmF5IGludG8gc3ViYXJyYXlzIGlzIGV4dGVuZGVkIHRvIGEgbW9yZSB1c2VmdWwgYXJyYXkgbGFuZ3VhZ2Ugb3BlcmF0aW9uLiBWYXJpb3VzIG1vZGVzIG9mIHBhcnRpdGlvbmluZyBhcmUgZGVmaW5lZCBmb3IgZGlmZmVyZW50IHR5cGVzIG9mIGFycmF5cywgc28gdGhhdCBzdWJhcnJheXMgbWF5IHZhcnkgb3ZlciB0aGUgb3JpZ2luYWwgYXJyYXkgaW4gYSBuZWFybHkgYXJiaXRyYXJ5IG1hbm5lci4gVGhlc2UgZGVmaW5pdGlvbnMgYXJlIG1vdGl2YXRlZCB3aXRoIHNldmVyYWwgcmVhbGlzdGljIGV4YW1wbGVzIHRvIGlsbHVzdHJhdGUgdGhlIHZhbHVlIG9mIHBhcnRpdGlvbmluZyBmb3IgYXJyYXkgbGFuZ3VhZ2VzLiBPZiBnZW5lcmFsIGludGVyZXN0IGlzIHRoZSBkYXRhIHN0cnVjdHVyZSBmb3IgcGFydGl0aW9uaW5nLiBUaGlzIGNvbnNpc3RzIG9mIGR5bmFtaWMgdHJlZSBzdHJ1Y3R1cmVzIHdoaWNoIGFyZSB1c2VkIHRvIGRlcml2ZSBhbmQgbWFpbnRhaW4gdGhlIGFycmF5IGNvbnRyb2wgaW5mb3JtYXRpb24uIFRoZXNlIGFyZSBkZXNjcmliZWQgaW4gc3VmZmljaWVudCBkZXRhaWwgdG8gYmUgb2YgdmFsdWUgaW4gdGhlIGRlc2lnbiBvZiBvdGhlciBhcnJheSBsYW5ndWFnZXMuIFRoZSBkZXNjcmlwdGlvbiBwcmVzZW50ZWQgaW4gdGhpcyBwYXBlciBpcyBpbXBsZW1lbnRlZCBpbiBhIG5ldyBhcnJheSBsYW5ndWFnZSwgT0wvMiwgY3VycmVudGx5IHVuZGVyIGRldmVsb3BtZW50IGF0IHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbik7IEM2MTQwRCAoSGlnaCBsZXZlbCBsYW5ndWFnZXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBJbGxpbm9pcywgVXJiYW5hLUNoYW1wYWlnbiwgSUwsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhcnJheSBsYW5ndWFnZXM7IGFycmF5IHBhcnRpdGlvbmluZzsgY29tcHV0ZXIgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzOyBkYXRhIHByb2Nlc3NpbmcgLS0tIERhdGEgU3RydWN0dXJlczsgZGF0YSBzdHJ1Y3R1cmU7IGRhdGEgc3RydWN0dXJlczsgZHluYW1pYyBwYXJ0aXRpb25pbmc7IGR5bmFtaWMgdHJlZSBzdHJ1Y3R1cmVzOyBPTC8yOyBwcm9ncmFtbWluZyBsYW5ndWFnZXMiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0JheWVyOjE5NzI6SVJNLAogIGF1dGhvciA9ICAgICAgICJSLiBCYXllciBhbmQgQy4gV2l0emdhbGwiLAogIHRpdGxlID0gICAgICAgICJJbmRleCBSYW5nZXMgZm9yIE1hdHJpeCBDYWxjdWxpIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiMTIiLAogIHBhZ2VzID0gICAgICAgICIxMDMzLS0xMDM5IiwKICBtb250aCA9ICAgICAgICBkZWMsCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiVGhlIHBhcGVyIGRlc2NyaWJlcyBhIHNjaGVtZSBmb3Igc3ltYm9saWMgbWFuaXB1bGF0aW9uIG9mIGluZGV4IGV4cHJlc3Npb25zIHdoaWNoIGFyaXNlIGFzIGEgYnktcHJvZHVjdCBvZiB0aGUgc3ltYm9saWMgbWFuaXB1bGF0aW9uIG9mIGV4cHJlc3Npb25zIGluIHRoZSBtYXRyaXggY2FsY3VsaSBkZXNjcmliZWQgYnkgdGhlIGF1dGhvcnMgaW4gYSBwcmV2aW91cyBwYXBlci4gVGhpcyBzY2hlbWUgYXR0ZW1wdHMgcHJvZ3JhbSBvcHRpbWl6YXRpb24gYnkgdHJhbnNmb3JtaW5nIHRoZSBvcmlnaW5hbCBhbGdvcml0aG0gcmF0aGVyIHRoYW4gdGhlIG1hY2hpbmUgY29kZS4gVGhlIGdvYWwgaXMgdG8gYXV0b21hdGljYWxseSBnZW5lcmF0ZSBjb2RlIGZvciBoYW5kbGluZyB0aGUgdGVkaW91cyBhZGRyZXNzIGNhbGN1bGF0aW9ucyBuZWNlc3NpdGF0ZWQgYnkgY29tcGxpY2F0ZWQgZGF0YSBzdHJ1Y3R1cmVzLiBUaGUgcGFwZXIgaXMgdGhlcmVmb3JlIHByZW9jY3VwaWVkIHdpdGggYGBpbmRleGluZyBieSBwb3NpdGlvbi4nJyBUaGUgcmVsYXRpb25zaGlwIG9mIGBgaW5kZXhpbmcgYnkgbmFtZScnIGFuZCBgYGluZGV4aW5nIGJ5IHBvc2l0aW9uJycgaXMgZGlzY3Vzc2VkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTMwIChEYXRhIGhhbmRsaW5nIHRlY2huaXF1ZXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJCb2VpbmcgU2NpLiBSZXMuIExhYnMuLCBTZWF0dGxlLCBXQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFkZHJlc3MgY2FsY3VsYXRpb25zOyBhbGdvcml0aG07IGNvbXB1dGVyIHByb2dyYW1taW5nIGxhbmd1YWdlczsgZGF0YSBoYW5kbGluZzsgZGF0YSBwcm9jZXNzaW5nOyBkYXRhIHN0cnVjdHVyZXM7IGV4cHJlc3Npb25zOyBpbmRleDsgaW5kZXggcmFuZ2VzOyBpbmRleGluZyBieSBuYW1lOyBpbmRleGluZyBieSBwb3NpdGlvbjsgbWF0cml4IGFsZ2VicmE7IG1hdHJpeCBjYWxjdWxpOyBwcm9ncmFtIG9wdGltaXphdGlvbjsgc3ltYm9saWMgbWFuaXB1bGF0aW9uOyB0cmFuc2Zvcm1hdGlvbiIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7RWFybGV5OjE5NzI6TUlDLAogIGF1dGhvciA9ICAgICAgICJKYXkgRWFybGV5IGFuZCBQYXVsIENhaXplcmd1ZXMiLAogIHRpdGxlID0gICAgICAgICJNZXRob2QgZm9yIEluY3JlbWVudGFsbHkgQ29tcGlsaW5nIExhbmd1YWdlcyB3aXRoIE5lc3RlZCBTdGF0ZW1lbnQgU3RydWN0dXJlIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiMTIiLAogIHBhZ2VzID0gICAgICAgICIxMDQwLS0xMDQ0IiwKICBtb250aCA9ICAgICAgICBkZWMsCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiVGhlIG1ldGhvZCBwZXJtaXRzIGVkaXRpbmcgb2YgdGhlIHNvdXJjZSBsYW5ndWFnZSB1c2luZyBhIGdlbmVyYWwgcHVycG9zZSB0ZXh0IGVkaXRvciwgYW5kIGluY3JlbWVudGFsIHByb2Nlc3Npbmcgb2YgY2hhbmdlcyB3aXRob3V0IGZyZXF1ZW50IHJlY29tcGlsYXRpb24gb2YgZW50aXJlIHJvdXRpbmVzLiBUaGUgZXNzZW50aWFsIHBvaW50cyBvZiB0aGUgbWV0aG9kIGFyZTogdGhlIHN5bnRheCBvZiB0aGUgbGFuZ3VhZ2UgaXMgcmVzdHJpY3RlZCBpbnNvZmFyIGFzIHdoaWNoIGNvbnN0cnVjdHMgbWF5IG9jY3VyIG9uIGxpbmVzOyBhbiBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZSAoY2FsbGVkIHRoZSBza2VsZXRvbikgaXMgbWFpbnRhaW5lZCB0byByZXByZXNlbnQgdGhlIHN0YXRlbWVudCBzdHJ1Y3R1cmU7IHRoZSByZWNvbXBpbGF0aW9uIGlzIHBhcnRpYWxseSBiYXRjaGVkIGluIHRoZSBzZW5zZSB0aGF0IHJlY29tcGlsYXRpb24gb2YgbW9kaWZpZWQgbGluZXMgZG9lcyBub3Qgb2NjdXIgdW50aWwgdGhlIGxhc3Qgb2YgYSBzZXQgb2YgZWRpdGluZyBjb21tYW5kcyBoYXMgYmVlbiByZWNlaXZlZDsgYW5kIHRoZSBwYXJzaW5nIGFuZCBjb21waWxhdGlvbiBhcmUgZmFjdG9yZWQgaW50byB0d28gcGFydHMsIHRoYXQgZG9uZSBvbiBpbmRpdmlkdWFsIGxpbmVzIGFuZCB0aGF0IGRvbmUgZ2xvYmFsbHkgdG8gaGFuZGxlIHRoZSByZWxhdGlvbnNoaXBzIGJldHdlZW4gdGhlIGxpbmVzLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTUwQyAoQ29tcGlsZXJzLCBpbnRlcnByZXRlcnMgYW5kIG90aGVyIHByb2Nlc3NvcnMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBDYWxpZm9ybmlhLCBCZXJrZWxleSwgQ0EsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJBTEdPTDsgY29tcHV0ZXIgb3BlcmF0aW5nIHN5c3RlbXMgLS0tIFByb2dyYW0gQ29tcGlsZXJzOyBjb21wdXRlciBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IGRhdGEgcHJvY2Vzc2luZyAtLS0gRGF0YSBTdHJ1Y3R1cmVzOyBlZGl0b3I7IGdlbmVyYWwgcHVycG9zZSB0ZXh0OyBpbmNyZW1lbnRhbCBjb21waWxhdGlvbjsgbmVzdGVkIHN0YXRlbWVudCBzdHJ1Y3R1cmU7IFBML0k7IHByb2dyYW0gY29tcGlsZXJzOyBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IHNvdXJjZSBsYW5ndWFnZSIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7THVjY2lvOjE5NzI6V0lMLAogIGF1dGhvciA9ICAgICAgICJGYWJyaXppbyBMdWNjaW8iLAogIHRpdGxlID0gICAgICAgICJXZWlnaHRlZCBJbmNyZW1lbnQgTGluZWFyIFNlYXJjaCBmb3IgU2NhdHRlciBUYWJsZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTUiLAogIG51bWJlciA9ICAgICAgICIxMiIsCiAgcGFnZXMgPSAgICAgICAgIjEwNDUtLTEwNDciLAogIG1vbnRoID0gICAgICAgIGRlYywKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGF0YWJhc2UvV2llZGVyaG9sZC5iaWIiLAogIGFic3RyYWN0ID0gICAgICJBIG5ldyBsaW5lYXIgc2VhcmNoIGZvciBoYXNoIHRhYmxlcyB3aG9zZSBpbmNyZW1lbnQgc3RlcCBpcyBhIGZ1bmN0aW9uIG9mIHRoZSBrZXkgYmVpbmcgYWRkcmVzc2VkIGlzIHByZXNlbnRlZC4gQ29tcGFyaXNvbnMgd2l0aCBrbm93biBtZXRob2RzIGFyZSBnaXZlbiwgaW4gdGVybXMgb2YgZWZmaWNpZW5jeSBhbmQgY29tcHV0YXRpb24gY29tcGxleGl0eS4gSW4gcGFydGljdWxhciwgdGhlIG5ldyBtZXRob2QgYXBwbGllcyB0byB0YWJsZXMgb2Ygc2l6ZSBuIGVxdWFscyAyKipyLiBJdCBhbGxvd3MgZnVsbCB0YWJsZSBzZWFyY2hpbmcsIGFuZCBwcmFjdGljYWxseSBlbGltaW5hdGVzIHByaW1hcnkgY2x1c3RlcmluZyBhdCBhIHZlcnkgbG93IGNvc3QuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMzAgKERhdGEgaGFuZGxpbmcgdGVjaG5pcXVlcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIFBpc2EsIEl0YWx5IiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNsdXN0ZXJpbmc7IGNvbXB1dGVyIHByb2dyYW1taW5nOyBoYXNoOyBpbmZvcm1hdGlvbiByZXRyaWV2YWwgc3lzdGVtczsgaW5mb3JtYXRpb24gc2VhcmNoaW5nIHRlY2huaXF1ZXM7IHNjYXR0ZXIgdGFibGVzOyB0YWJsZSBsb29rdXA7IHRhYmxlczsgd2VpZ2h0ZWQgaW5jcmVtZW50IGxpbmVhciBzZWFyY2giLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0JhcnI6MTk3MjpDTU4sCiAgYXV0aG9yID0gICAgICAgIkQuIFIuIEJhcnIgYW5kIE4uIEwuIFNsZXphayIsCiAgdGl0bGUgPSAgICAgICAgIkEgY29tcGFyaXNvbiBvZiBtdWx0aXZhcmlhdGUgbm9ybWFsIGdlbmVyYXRvcnMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTUiLAogIG51bWJlciA9ICAgICAgICIxMiIsCiAgcGFnZXMgPSAgICAgICAgIjEwNDgtLTEwNDkiLAogIG1vbnRoID0gICAgICAgIGRlYywKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNzg5MCAoT3RoZXIgc3BlY2lhbCBhcHBsaWNhdGlvbnMgb2YgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIk5hdmFsIFBvc3RncmFkdWF0ZSBTY2hvb2wsIE1vbnRlcmV5LCBDQSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcGFyaXNvbjsgY292YXJpYW5jZSBtYXRyaXg7IEdhdXNzaWFuIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yOyBtdWx0aXZhcmlhdGU7IG11bHRpdmFyaWF0ZSBub3JtYWwgZ2VuZXJhdG9yczsgbm9ybWFsIHJhbmRvbSB2ZWN0b3JzOyByYW5kb20gbnVtYmVyIGdlbmVyYXRpb247IHNpbXVsYXRpb247IHRyaWFuZ3VsYXIgZmFjdG9yaXphdGlvbiIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7TW9vcmU6MTk3MjpOTVMsCiAgYXV0aG9yID0gICAgICAgIkpvaG4gTW9vcmUgYW5kIFByZW50aXNzIFJvYmluc29uIiwKICB0aXRsZSA9ICAgICAgICAiTmV3IE1ldGhvZCBmb3IgdGhlIFNvbHV0aW9uIG9mIHRoZSB7Q2F1Y2h5fSBQcm9ibGVtIGZvciBQYXJhYm9saWMgRXF1YXRpb25zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiMTIiLAogIHBhZ2VzID0gICAgICAgICIxMDUwLS0xMDUyIiwKICBtb250aCA9ICAgICAgICBkZWMsCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiQW4gaW50ZWdyYWwgZXF1YXRpb24gcmVwcmVzZW50YXRpb24gaXMgZ2l2ZW4gZm9yIHBhcmFib2xpYyBwYXJ0aWFsIGRpZmZlcmVudGlhbCBlcXVhdGlvbnMuIFdoZW4gdGhlIGVxdWF0aW9ucyBhcmUgZGVmaW5lZCBpbiB1bmJvdW5kZWQgZG9tYWlucywgYXMgaW4gdGhlIGluaXRpYWwgdmFsdWUgKENhdWNoeSkgcHJvYmxlbSwgdGhlIHNvbHV0aW9uIG9mIHRoZSBpbnRlZ3JhbCBlcXVhdGlvbiBieSB0aGUgbWV0aG9kIG9mIHN1Y2Nlc3NpdmUgYXBwcm94aW1hdGlvbiBoYXMgaW5oZXJlbnQgYWR2YW50YWdlcyBvdmVyIG90aGVyIG1ldGhvZHMuIEVycm9yIGJvdW5kcyBmb3IgdGhlIG1ldGhvZCBhcmUgb2Ygb3JkZXIgaCoqMyoqLyoqMiBhbmQgaCoqNyoqLyoqMiAoaCBpcyB0aGUgaW5jcmVtZW50IHNpemUpIGRlcGVuZGluZyBvbiB0aGUgZmluaXRlIGRpZmZlcmVuY2UgYXBwcm94aW1hdGlvbnMgaW52b2x2ZWQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjAyOTBQIChEaWZmZXJlbnRpYWwgZXF1YXRpb25zKTsgQzQxNzAgKERpZmZlcmVudGlhbCBlcXVhdGlvbnMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI5MjEiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBOZXdjYXN0bGUsIFVLIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgIkNhdWNoeSBwcm9ibGVtOyBpbml0aWFsIHZhbHVlIHByb2JsZW07IGludGVncmFsIGVxdWF0aW9uIHJlcHJlc2VudGF0aW9uOyBtYXRoZW1hdGljYWwgdGVjaG5pcXVlczsgcGFyYWJvbGljOyBwYXJ0aWFsIGRpZmZlcmVudGlhbCBlcXVhdGlvbnM7IHN1Y2Nlc3NpdmUgYXBwcm94aW1hdGlvbiIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7UGFybmFzOjE5NzI6Q0JVLAogIGF1dGhvciA9ICAgICAgICJELiBMLiBQYXJuYXMiLAogIHRpdGxlID0gICAgICAgICJPbiB0aGUgQ3JpdGVyaWEgdG8gQmUgVXNlZCBpbiBEZWNvbXBvc2luZyBTeXN0ZW1zIGludG8gTW9kdWxlcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjEyIiwKICBwYWdlcyA9ICAgICAgICAiMTA1My0tMTA1OCIsCiAgbW9udGggPSAgICAgICAgZGVjLAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9NaXNjL3NvZnRlbmcuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiVGhpcyBwYXBlciBkaXNjdXNzZXMgbW9kdWxhcml6YXRpb24gYXMgYSBtZWNoYW5pc20gZm9yIGltcHJvdmluZyB0aGUgZmxleGliaWxpdHkgYW5kIGNvbXByZWhlbnNpYmlsaXR5IG9mIGEgc3lzdGVtIHdoaWxlIGFsbG93aW5nIHRoZSBzaG9ydGVuaW5nIG9mIGl0cyBkZXZlbG9wbWVudCB0aW1lLiBUaGUgZWZmZWN0aXZlbmVzcyBvZiBhIGBgbW9kdWxhcml6YXRpb24nJyBpcyBkZXBlbmRlbnQgdXBvbiB0aGUgY3JpdGVyaWEgdXNlZCBpbiBkaXZpZGluZyB0aGUgc3lzdGVtIGludG8gbW9kdWxlcy4gQSBzeXN0ZW0gZGVzaWduIHByb2JsZW0gcHJlc2VudGVkIGFuZCBib3RoIGEgY29udmVudGlvbmFsIGFuZCB1bmNvbnZlbnRpb25hbCBkZWNvbXBvc2l0aW9uIGFyZSBkZXNjcmliZWQuIEl0IGlzIHNob3duIHRoYXQgdGhlIHVuY29udmVudGlvbmFsIGRlY29tcG9zaXRpb25zIGhhdmUgZGlzdGluY3QgYWR2YW50YWdlcyBmb3IgdGhlIGdvYWxzIG91dGxpbmVkLiBUaGUgY3JpdGVyaWEgdXNlZCBpbiBhcnJpdmluZyBhdCB0aGUgZGVjb21wb3NpdGlvbnMgYXJlIGRpc2N1c3NlZC4gVGhlIHVuY29udmVudGlvbmFsIGRlY29tcG9zaXRpb24sIGlmIGltcGxlbWVudGVkIHdpdGggdGhlIGNvbnZlbnRpb25hbCBhc3N1bXB0aW9uIHRoYXQgYSBtb2R1bGUgY29uc2lzdHMgb2Ygb25lIG9yIG1vcmUgc3Vicm91dGluZXMsIHdpbGwgYmUgbGVzcyBlZmZpY2llbnQgaW4gbW9zdCBjYXNlcy4gQW4gYWx0ZXJuYXRpdmUgYXBwcm9hY2ggdG8gaW1wbGVtZW50YXRpb24gd2hpY2ggZG9lcyBub3QgdGhpcyBlZmZlY3QgaXMgc2tldGNoZWQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMTAgKFN5c3RlbXMgYW5hbHlzaXMgYW5kIHByb2dyYW1taW5nKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiQ2FybmVnaWUtTWVsbG9uIFVuaXYuLCBQaXR0c2J1cmdoLCBQQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXByZWhlbnNpYmlsaXR5OyBjb21wdXRlciBwcm9ncmFtbWluZzsgY3JpdGVyaWE7IGRlY29tcG9zaXRpb247IGZsZXhpYmlsaXR5OyBtb2R1bGFyaXphdGlvbjsgbW9kdWxlczsgcHJvZ3JhbW1pbmc7IHNvZnR3YXJlIGVuZ2luZWVyaW5nOyBzeXN0ZW1zIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtCcm93bjoxOTcyOkxMUCwKICBhdXRob3IgPSAgICAgICAiUC4gSi4gQnJvd24iLAogIHRpdGxlID0gICAgICAgICJMZXZlbHMgb2YgTGFuZ3VhZ2UgZm9yIFBvcnRhYmxlIFNvZnR3YXJlIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiMTIiLAogIHBhZ2VzID0gICAgICAgICIxMDU5LS0xMDYyIiwKICBtb250aCA9ICAgICAgICBkZWMsCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiQW4gaW5jcmVhc2luZyBhbW91bnQgb2Ygc29mdHdhcmUgaXMgYmVpbmcgaW1wbGVtZW50ZWQgaW4gYSBwb3J0YWJsZSBmb3JtLiBBIHBvcHVsYXIgd2F5IG9mIGFjY29tcGxpc2hpbmcgdGhpcyBpcyB0byBlbmNvZGUgdGhlIHNvZnR3YXJlIGluIGEgc3BlY2lhbGx5IGRlc2lnbmVkIG1hY2hpbmUtaW5kZXBlbmRlbnQgbGFuZ3VhZ2UgYW5kIHRoZW4gdG8gbWFwIHRoaXMgbGFuZ3VhZ2UsIG9mdGVuIHVzaW5nIGEgbWFjcm8gcHJvY2Vzc29yLCBpbnRvIHRoZSBhc3NlbWJseSBsYW5ndWFnZSBvZiBlYWNoIGRlc2lyZWQgb2JqZWN0IG1hY2hpbmUuIFRoZSBkZXNpZ24gb2YgdGhlIG1hY2hpbmUtaW5kZXBlbmRlbnQgbGFuZ3VhZ2UgaXMgdGhlIGtleSBmYWN0b3IgaW4gdGhpcyBvcGVyYXRpb24uIFRoaXMgcGFwZXIgZGlzY3Vzc2VzIHRoZSByZWxhdGl2ZSBtZXJpdHMgb2YgcGl0Y2hpbmcgdGhpcyBsYW5ndWFnZSBhdCBhIGhpZ2ggbGV2ZWwgb3IgYSBsb3cgbGV2ZWwsIGFuZCBwcmVzZW50cyBzb21lIGNvbXBhcmF0aXZlIHJlc3VsdHMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxNDBEIChIaWdoIGxldmVsIGxhbmd1YWdlcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIEtlbnQsIENhbnRlcmJ1cnksIFVLIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFzc2VtYmx5IGxhbmd1YWdlOyBjb21wdXRlciBwcm9ncmFtbWluZzsgbGV2ZWxzIG9mIGxhbmd1YWdlOyBtYWNoaW5lIGluZGVwZW5kZW50IGxhbmd1YWdlOyBtYWNybyBwcm9jZXNzb3I7IHBvcnRhYmxlIHNvZnR3YXJlOyBwcm9jZWR1cmUgb3JpZW50ZWQgbGFuZ3VhZ2VzIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtTaGVybWFuOjE5NzI6VE1BLAogIGF1dGhvciA9ICAgICAgICJTdGVwaGVuIFNoZXJtYW4gYW5kIEZvcmVzdCB7QmFza2V0dCwgSUlJfSBhbmQgSi4gQy4gQnJvd25lIiwKICB0aXRsZSA9ICAgICAgICAiVHJhY2UtRHJpdmVuIE1vZGVsaW5nIGFuZCBBbmFseXNpcyBvZiB7Q1BVfSBTY2hlZHVsaW5nIGluIGEgTXVsdGlwcm9ncmFtbWluZyBTeXN0ZW0iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTUiLAogIG51bWJlciA9ICAgICAgICIxMiIsCiAgcGFnZXMgPSAgICAgICAgIjEwNjMtLTEwNjkiLAogIG1vbnRoID0gICAgICAgIGRlYywKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJUaGUgc2NoZWR1bGluZyBtZXRob2RzIHRlc3RlZCBpbmNsdWRlZCB0aGUgYmVzdCBwb3NzaWJsZSBhbmQgd29yc3QgcG9zc2libGUgbWV0aG9kcywgdGhlIHRyYWRpdGlvbmFsIG1ldGhvZHMgb2YgbXVsdGlwcm9ncmFtbWluZyB0aGVvcnksIHJvdW5kLXJvYmluLCBmaXJzdC1jb21lLWZpcnN0LXNlcnZlZCwgYW5kIGR5bmFtaWMgcHJlZGljdG9ycy4gVGhlIHJlbGF0aXZlIGFuZCBhYnNvbHV0ZSBwZXJmb3JtYW5jZXMgb2YgdGhlc2Ugc2NoZWR1bGluZyBtZXRob2RzIGFyZSBnaXZlbi4gSXQgaXMgY29uY2x1ZGVkIHRoYXQgYSBzdWNjZXNzZnVsIENQVSBzY2hlZHVsaW5nIG1ldGhvZCBtdXN0IGJlIHByZWVtcHRpdmUgYW5kIG11c3QgcHJldmVudCBhIGdpdmVuIGpvYiBmcm9tIGhvbGRpbmcgdGhlIENQVSBmb3IgdG9vIGxvbmcgYSBwZXJpb2QuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxNTBKIChPcGVyYXRpbmcgc3lzdGVtcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIFRleGFzLCBBdXN0aW4sIFRYLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYW5hbHlzaXM7IGNvbXB1dGVyIHN5c3RlbXMgcHJvZ3JhbW1pbmc7IENQVSBzY2hlZHVsaW5nOyBmaXJzdCBjb21lIGZpcnN0IHNlcnZlZDsgbWljcm9zY29waWMgbGV2ZWwgam9iIHN0cmVhbSBkYXRhOyBtb2RlbGxpbmc7IG11bHRpcHJvZ3JhbW1pbmc7IG11bHRpcHJvZ3JhbW1pbmcgc3lzdGVtOyByb3VuZCByb2JpbjsgdHJhY2UgZHJpdmVuIG1vZGVsbGluZyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7Qm9sYW5kOjE5NzI6QUFQYSwKICBhdXRob3IgPSAgICAgICAiVy4gUi4gQm9sYW5kIiwKICB0aXRsZSA9ICAgICAgICAie0FDTX0gQWxnb3JpdGhtIDQzNjogUHJvZHVjdCBUeXBlIFRyYXBlem9pZGFsIEludGVncmF0aW9uIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiMTIiLAogIHBhZ2VzID0gICAgICAgICIxMDcwLS0xMDcwIiwKICBtb250aCA9ICAgICAgICBkZWMsCiAgeWVhciA9ICAgICAgICAgIjE5NzIiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUaHUgU2VwIDA4IDA5OjM0OjAwIDE5OTQiLAp9CgpAQXJ0aWNsZXtCb2xhbmQ6MTk3MjpBQVBiLAogIGF1dGhvciA9ICAgICAgICJXLiBSLiBCb2xhbmQiLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gNDM3OiBQcm9kdWN0IFR5cGUge1NpbXBzb259J3MgSW50ZWdyYXRpb24iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTUiLAogIG51bWJlciA9ICAgICAgICIxMiIsCiAgcGFnZXMgPSAgICAgICAgIjEwNzAtLTEwNzEiLAogIG1vbnRoID0gICAgICAgIGRlYywKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlRodSBTZXAgMDggMDk6MzM6NTkgMTk5NCIsCn0KCkBBcnRpY2xle0JvbGFuZDoxOTcyOkFBUGMsCiAgYXV0aG9yID0gICAgICAgIlcuIFIuIEJvbGFuZCIsCiAgdGl0bGUgPSAgICAgICAgIntBQ019IEFsZ29yaXRobSA0Mzk6IFByb2R1Y3QgVHlwZSBUaHJlZS1wb2ludCB7R2F1c3MtTGVnZW5kcmUtU2ltcHNvbn0ncyBJbnRlZ3JhdGlvbiIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNSIsCiAgbnVtYmVyID0gICAgICAgIjEyIiwKICBwYWdlcyA9ICAgICAgICAiMTA3MiIsCiAgbW9udGggPSAgICAgICAgZGVjLAogIHllYXIgPSAgICAgICAgICIxOTcyIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVGh1IFNlcCAwOCAwOTozNDowMCAxOTk0IiwKfQoKQEFydGljbGV7RGVubmluZzoxOTczOkNXTSwKICBhdXRob3IgPSAgICAgICAiUGV0ZXIgSi4gRGVubmluZyBhbmQgU3R1YXJ0IEMuIFNjaHdhcnR6IiwKICB0aXRsZSA9ICAgICAgICAiQ29ycmlnZW5kdW06IGBge1Byb3BlcnRpZXMgb2YgdGhlIHdvcmtpbmctc2V0IG1vZGVsfScnIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE1IiwKICBudW1iZXIgPSAgICAgICAiMiIsCiAgcGFnZXMgPSAgICAgICAgIjE5MS0tMTk4IiwKICBtb250aCA9ICAgICAgICBmZWIsCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWF5IDI4IDExOjM3OjE1IDE5OTYiLAogIG5vdGUgPSAgICAgICAgICJTZWUgXGNpdGV7RGVubmluZzoxOTcyOlBXU30uIiwKfQoKQEFydGljbGV7U2hlZGxlcjoxOTczOlFNTSwKICBhdXRob3IgPSAgICAgICAiRy4gUy4gU2hlZGxlciIsCiAgdGl0bGUgPSAgICAgICAgIkEgUXVldWluZyBNb2RlbCBvZiBhIE11bHRpcHJvZ3JhbW1lZCBDb21wdXRlciB3aXRoIGEgVHdvLUxldmVsIFN0b3JhZ2UgU3lzdGVtIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiMSIsCiAgcGFnZXMgPSAgICAgICAgIjMtLTEwIiwKICBtb250aCA9ICAgICAgICBqYW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2OEE1MCIsCiAgTVJudW1iZXIgPSAgICAgIjUxIDE0NjgwIiwKICBtcnJldmlld2VyID0gICAiSy4gVmFpcmFyYW4iLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiVGhlIHJlc3VsdHMgYXJlIHByZXNlbnRlZCBvZiBhbiBhbmFseXNpcyBvZiBhIHByb2JhYmlsaXN0aWMgbW9kZWwgb2YgYSBtdWx0aXByb2dyYW1tZWQgY29tcHV0ZXIgc3lzdGVtIHdpdGggYSB0d28tbGV2ZWwgc3RvcmFnZSBzeXN0ZW0gaW4gd2hpY2ggdGhlcmUgaXMgc2VxdWVudGlhbCBkZXBlbmRlbmN5IG9mIGFjY2Vzc2VzIGJldHdlZW4gdGhlIGRldmljZXMuIEV4cHJlc3Npb25zIGFyZSBvYnRhaW5lZCBmb3IgdGhlIGxvbmctcnVuIHByb2JhYmlsaXR5IHRoYXQgYm90aCB0aGUgQ1BVIGFuZCBlYWNoIG9mIHRoZSBzdG9yYWdlIGRldmljZXMgYXJlIGJ1c3kuIFNvbWUgbnVtZXJpY2FsIHJlc3VsdHMgYXJlIGdpdmVuIHdoaWNoIHF1YW50aWZ5IHRoZSBnYWlucyBpbiBDUFUgdXRpbGl6YXRpb24gb2J0YWluYWJsZSBieSBtdWx0aXByb2dyYW1taW5nIGluIHRoZSBwcmVzZW5jZSBvZiB0aGlzIHR5cGUgb2Ygc3RvcmFnZSBzeXN0ZW0uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQyOTAgKE90aGVyIGNvbXB1dGVyIHRoZW9yeSkiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMzsgOTIyIiwKICBjb3Jwc291cmNlID0gICAiSUJNLCBTYW4gSm9zZSwgQ0EsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBzeXN0ZW1zIHByb2dyYW1taW5nIC0tLSBNdWx0aXByb2dyYW1taW5nOyBkYXRhIHN0b3JhZ2UsIGRpZ2l0YWw7IGRlcGVuZGVuY3kgb2YgYWNjZXNzZXM7IGhpZXJhcmNoaWNhbCBpbmRleCBzZXM7IGhpZXJhcmNoaWNhbCBpbmRleCBzZXRzOyBtb2RlbGxpbmc7IG11bHRpcHJvZ3JhbW1lZCBjb21wdXRlcjsgbXVsdGlwcm9ncmFtbWVkIGNvbXB1dGVyIHN5c3RlbTsgbXVsdGlwcm9ncmFtbWluZzsgcHJvYmFiaWxpdHk7IHF1ZXVlaW5nIHRoZW9yeTsgcXVldWluZyBtb2RlbDsgc2VxdWVudGlhbDsgc3RvcmFnZSBzeXN0ZW07IHR3byBsZXZlbCIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7QmF5czoxOTczOlJIQywKICBhdXRob3IgPSAgICAgICAiQ2FydGVyIEJheXMiLAogIHRpdGxlID0gICAgICAgICJUaGUgUmVhbGxvY2F0aW9uIG9mIEhhc2gtQ29kZWQgVGFibGVzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiMSIsCiAgcGFnZXMgPSAgICAgICAgIjExLS0xNCIsCiAgbW9udGggPSAgICAgICAgamFuLAogIHllYXIgPSAgICAgICAgICIxOTczIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIldoZW4gdGhlIHNwYWNlIGFsbG9jYXRpb24gZm9yIGEgaGFzaC1jb2RlZCB0YWJsZSBpcyBhbHRlcmVkLCB0aGUgdGFibGUgZW50cmllcyBtdXN0IGJlIHJlc2NhdHRlcmVkIG92ZXIgdGhlIG5ldyBzcGFjZS4gQSB0ZWNobmlxdWUgZm9yIGFjY29tcGxpc2hpbmcgdGhpcyByZXNjYXR0ZXJpbmcgaXMgcHJlc2VudGVkLiBUaGUgdGVjaG5pcXVlIGlzIGluZGVwZW5kZW50IG9mIGJvdGggdGhlIGxlbmd0aCBvZiB0aGUgdGFibGUgYW5kIHRoZSBoYXNoaW5nIGZ1bmN0aW9uIHVzZWQsIGFuZCBjYW4gYmUgdXRpbGl6ZWQgaW4gY29uanVuY3Rpb24gd2l0aCBhIGxpbmVhciByZWFsbG9jYXRpb24gb2YgdGhlIHRhYmxlIGJlaW5nIHJlc2NhdHRlcmVkLiBNb3Jlb3ZlciwgaXQgY2FuIGJlIHVzZWQgdG8gZWxpbWluYXRlIHByZXZpb3VzbHkgZmxhZ2dlZCBkZWxldGlvbnMgZnJvbSBhbnkgaGFzaC1jb2RlZCB0YWJsZSwgb3IgdG8gY2hhbmdlIGZyb20gb25lIGhhc2hpbmcgbWV0aG9kIHRvIGFub3RoZXIuIFRoZSBlZmZpY2llbmN5IG9mIHRoZSB0ZWNobmlxdWUgaXMgZGlzY3Vzc2VkIGFuZCB0aGVvcmV0aWNhbCBzdGF0aXN0aWNzIGFyZSBnaXZlbi4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGFubm90ZSA9ICAgICAgICJBbGdvcml0aG0gdG8gaGFuZGxlIGluY3JlYXNlIG9yIGRlY3JlYXNlIHdpdGhpbiBhIGRpcmVjdCBhY2Nlc3MgdGFibGUgY29udGFpbmluZyBlbnRyaWVzLiIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTEwIChTeXN0ZW1zIGFuYWx5c2lzIGFuZCBwcm9ncmFtbWluZyk7IEM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbikiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIFNvdXRoIENhcm9saW5hLCBDb2x1bWJpYSwgU0MsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBzeXN0ZW1zIHByb2dyYW1taW5nOyBkYXRhIHN0b3JhZ2UsIGRpZ2l0YWw7IGR5bmFtaWMgc3RvcmFnZTsgaGFzaCBjb2RlOyByZWFsbG9jYXRpb247IHNjYXR0ZXIgc3RvcmFnZSIsCiAga2V5d29yZHMgPSAgICAgImRlbGV0aW9uczsgZHluYW1pYyBzdG9yYWdlOyBoYXNoIGNvZGU7IHByb2dyYW1taW5nOyByZWFsbG9jYXRpb247IHNjYXR0ZXIgc3RvcmFnZTsgc3RvcmFnZSBhbGxvY2F0aW9uIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtNb3JyaXM6MTk3MzpQUEwsCiAgYXV0aG9yID0gICAgICAgIkphbWVzIEguIHtNb3JyaXMsIEpyLn0iLAogIHRpdGxlID0gICAgICAgICJQcm90ZWN0aW9uIGluIFByb2dyYW1taW5nIExhbmd1YWdlcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNiIsCiAgbnVtYmVyID0gICAgICAgIjEiLAogIHBhZ2VzID0gICAgICAgICIxNS0tMjEiLAogIG1vbnRoID0gICAgICAgIGphbiwKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGF0YWJhc2UvV2llZGVyaG9sZC5iaWIiLAogIGFic3RyYWN0ID0gICAgICJMaW5ndWlzdGljIG1lY2hhbmlzbXMgd2hpY2ggY2FuIGJlIHVzZWQgdG8gcHJvdGVjdCBvbmUgc3VicHJvZ3JhbSBmcm9tIGFub3RoZXIncyBtYWxmdW5jdGlvbmluZyBhcmUgZGVzY3JpYmVkLiBGdW5jdGlvbi1wcm9kdWNpbmcgZnVuY3Rpb25zIGFuZCB2YXJpb3VzIHR5cGUtdGFnZ2luZyBzY2hlbWVzIGFyZSBjb25zaWRlcmVkLiBBbiBhdHRlbXB0IGlzIG1hZGUgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBhY2Nlc3MgbGltaXRhdGlvbiBhbmQgYXV0aGVudGljYXRpb24uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMDAgKFNvZnR3YXJlIHRlY2huaXF1ZXMgYW5kIHN5c3RlbXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBDYWxpZm9ybmlhLCBCZXJrZWxleSwgQ0EsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhY2Nlc3MgY29udHJvbDsgYWNjZXNzIGtleXM7IGF1dGhlbnRpY2F0aW9uOyBjb21wdXRlciBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IGVudmlyb25tZW50czsgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzOyBwcm90ZWN0aW9uOyBzZWFsczsgc2VjcmVjeTsgc2VjdXJpdHkgb2YgZGF0YTsgdHJhZGVtYXJrczsgdHlwZXMiLAogIHRyZWF0bWVudCA9ICAgICJHIEdlbmVyYWwgUmV2aWV3OyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle011cmFva2E6MTk3MzpUUlMsCiAgYXV0aG9yID0gICAgICAgIllvaWNoaSBNdXJhb2thIGFuZCBEYXZpZCBKLiBLdWNrIiwKICB0aXRsZSA9ICAgICAgICAiT24gdGhlIFRpbWUgUmVxdWlyZWQgZm9yIGEgU2VxdWVuY2Ugb2YgTWF0cml4IFByb2R1Y3RzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiMSIsCiAgcGFnZXMgPSAgICAgICAgIjIyLS0yNiIsCiAgbW9udGggPSAgICAgICAgamFuLAogIHllYXIgPSAgICAgICAgICIxOTczIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjhBMjAiLAogIE1SbnVtYmVyID0gICAgICI1MSAyMzQ3IiwKICBtcnJldmlld2VyID0gICAiTS4gVGV0cnVhc3ZpbGkiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L1BhcmFsbGVsL011bHRpLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIlRoaXMgcGFwZXIgZGlzY3Vzc2VzIHRoZSBtdWx0aXBsaWNhdGlvbiBvZiBjb25mb3JtYWJsZSBzZXF1ZW5jZXMgb2Ygcm93IHZlY3RvcnMsIGNvbHVtbiB2ZWN0b3JzLCBhbmQgc3F1YXJlIG1hdHJpY2VzLiBUaGUgbWluaW11bSB0aW1lIHJlcXVpcmVkIHRvIGV2YWx1YXRlIHN1Y2ggcHJvZHVjdHMgb24gb3JkaW5hcnkgc2VyaWFsIGNvbXB1dGVycyBhcyB3ZWxsIGFzIHBhcmFsbGVsIGNvbXB1dGVycyBpcyBkaXNjdXNzZWQuIEFsZ29yaXRobXMgYXJlIHByZXNlbnRlZCB3aGljaCBwcm9wZXJseSBwYXJzZSBzdWNoIG1hdHJpeCBzZXF1ZW5jZXMgc3ViamVjdCB0byB0aGUgY29uc3RyYWludHMgb2YgdGhlIG1hY2hpbmUgb3JnYW5pemF0aW9uLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM1MjMwIChEaWdpdGFsIGFyaXRobWV0aWMgbWV0aG9kcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIElsbGlub2lzLCBVcmJhbmEtQ2hhbXBhaWduLCBJTCwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIHByb2dyYW1taW5nOyBjb21wdXRlciBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IGNvbXB1dGVyczsgZGlnaXRhbCBhcml0aG1ldGljOyBtYXRyaXggYWxnZWJyYTsgbWF0cml4IGV4cHJlc3Npb25zOyBtYXRyaXggbXVsdGlwbGljYXRpb247IG9wZXJhdGlvbiBtaW5pbWl6YXRpb247IHBhcmFsbGVsIGNvbXB1dGVyczsgcGFyYWxsZWwgbWFjaGluZTsgcGFyYWxsZWwgcHJvY2Vzc2luZzsgc2VxdWVuY2Ugb2YgbWF0cml4IHByb2R1Y3RzOyBzZXJpYWw7IHRpbWUgcmVxdWlyZWQiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0phbWVzOjE5NzM6QUNQLAogIGF1dGhvciA9ICAgICAgICJFLiBCLiBKYW1lcyBhbmQgRC4gUC4gUGFydHJpZGdlIiwKICB0aXRsZSA9ICAgICAgICAiQWRhcHRpdmUgQ29ycmVjdGlvbiBvZiBQcm9ncmFtIFN0YXRlbWVudHMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICIxIiwKICBwYWdlcyA9ICAgICAgICAiMjctLTM3IiwKICBtb250aCA9ICAgICAgICBqYW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiQSBtZXRob2Qgb2YgYW5hbHl6aW5nIHN0YXRlbWVudHMgaW4gYSBwcm9ncmFtbWluZyBsYW5ndWFnZSB3aGljaCBjYW4gdG9sZXJhdGUgYSBjb25zaWRlcmFibGUgaW5hY2N1cmFjeSBpbiB0aGVpciBzcGVjaWZpY2F0aW9uIGlzIHByb3Bvc2VkLiBUaGlzIG1ldGhvZCBpbnZvbHZlcyBwcmluY2lwbGVzIGF0IHByZXNlbnQgbWFpbmx5IGNvbmZpbmVkIHRvIHN0dWRpZXMgaW4gdGhlIGFyZWEgb2YgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2Ugc3VjaCBhcyBmZWF0dXJlIGV4dHJhY3Rpb24sIGFwcHJveGltYXRlIHRyZWUgbWF0Y2hpbmcsIGFuZCBzdHJhdGVneSBpbXByb3ZlbWVudCBieSBmZWVkYmFjayBmcm9tIHRoZSBtYXRjaGluZyBwcm9jZXNzLiBBIHBpbG90IHByb2dyYW0gaW5jb3Jwb3JhdGluZyB0aGUgcHJpbmNpcGxlcyBpcyBkZXNjcmliZWQgYW5kIHByZWxpbWluYXJ5IG9wZXJhdGluZyByZXN1bHRzIGFyZSBwcmVzZW50ZWQuIEEgZmluYWwgc2VjdGlvbiBzdXJ2ZXlzIGZ1cnRoZXIgcHJpbmNpcGxlcyB3aGljaCBhcmUgY3VycmVudGx5IGJlaW5nIGludmVzdGlnYXRlZC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDI0MCAoUHJvZ3JhbW1pbmcgYW5kIGFsZ29yaXRobSB0aGVvcnkpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJJbXBlcmlhbCBDb2xsLiBTY2kuIGFuZCBUZWNobm9sLiwgTG9uZG9uLCBVSyIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhZGFwdGl2ZSBjb3JyZWN0aW9uOyBhcnRpZmljaWFsIGludGVsbGlnZW5jZTsgYXV0b21hdGljIHBhcnNpbmc7IGNvbXBpbGVyOyBjb21wdXRlciBtZXRhdGhlb3J5OyBjb21wdXRlciBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IGxpbmd1aXN0aWMgcGF0dGVybiBtYXRjaGluZzsgcHJvZ3JhbSBzdGF0ZW1lbnRzOyBwcm9ncmFtbWluZzsgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzOyBzeW50YXggYW5hbHlzaXM7IHRoZW9yeSIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7UmljaG1hbjoxOTczOlZFLAogIGF1dGhvciA9ICAgICAgICJQLiBMLiBSaWNobWFuIiwKICB0aXRsZSA9ICAgICAgICAiVmFyaWFibGUtUHJlY2lzaW9uIEV4cG9uZW50aWF0aW9uIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiMSIsCiAgcGFnZXMgPSAgICAgICAgIjM4LS00MCIsCiAgbW9udGggPSAgICAgICAgamFuLAogIHllYXIgPSAgICAgICAgICIxOTczIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjVEMjAiLAogIE1SbnVtYmVyID0gICAgICI1MSA0NjMxIiwKICBtcnJldmlld2VyID0gICAiVi4gVi4gSXZhbm92IiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkEgcHJldmlvdXMgcGFwZXIgcHJlc2VudGVkIGFuIGVmZmljaWVudCBhbGdvcml0aG0sIGNhbGxlZCB0aGUgUmVjb21wdXRhdGlvbiBBbGdvcml0aG0sIGZvciBldmFsdWF0aW5nIGEgcmF0aW9uYWwgZXhwcmVzc2lvbiB0byB3aXRoaW4gYW55IGRlc2lyZWQgdG9sZXJhbmNlIG9uIGEgY29tcHV0ZXIgd2hpY2ggcGVyZm9ybXMgdmFyaWFibGUtcHJlY2lzaW9uIGFyaXRobWV0aWMgb3BlcmF0aW9ucy4gVGhlIFJlY29tcHV0YXRpb24gQWxnb3JpdGhtIGNhbiBiZSBhcHBsaWVkIHRvIGV4cHJlc3Npb25zIGludm9sdmluZyBhbnkgdmFyaWFibGUtcHJlY2lzaW9uIG9wZXJhdGlvbnMgaGF2aW5nICRPKDEwXigtcCkgKyBcc3VtX2l8RV9pfCkkIGVycm9yIGJvdW5kcywgd2hlcmUgJHAkIGRlbm90ZXMgdGhlIG9wZXJhdGlvbidzIHByZWNpc2lvbiBhbmQgJEVfaSQgZGVub3RlcyB0aGUgZXJyb3IgaW4gdGhlIG9wZXJhdGlvbidzICRpJC10aCBhcmd1bWVudC4gXHBhciBUaGlzIHBhcGVyIHByZXNlbnRzIGFuIGVmZmljaWVudCB2YXJpYWJsZS1wcmVjaXNpb24gZXhwb25lbnRpYWwgb3BlcmF0aW9uIHdpdGggYW4gZXJyb3IgYm91bmQgb2YgdGhlIGFib3ZlIG9yZGVyLiBPdGhlciBvcGVyYXRpb25zIHN1Y2ggYXMgbG9nLCBzaW4sIGFuZCBjb3MsIHdoaWNoIGhhdmUgc2ltcGxlIHNlcmllcyBleHBhbnNpb25zLCBjYW4gYmUgaGFuZGxlZCBzaW1pbGFybHkuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzUyMzAgKERpZ2l0YWwgYXJpdGhtZXRpYyBtZXRob2RzKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzOyA5MjEiLAogIGNvcnBzb3VyY2UgPSAgICJCZWxsIFRlbGVwaG9uZSBMYWJzLiBJbmMuLCBEZW52ZXIsIENPLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgcHJvZ3JhbW1pbmc7IGRpZ2l0YWwgYXJpdGhtZXRpYzsgZXJyb3IgYW5hbHlzaXM7IGV4cG9uZW50aWFsIGZ1bmN0aW9uOyBleHBvbmVudGlhdGlvbjsgaW50ZXJ2YWwgYXJpdGhtZXRpYzsgbWF0aGVtYXRpY2FsIHByb2dyYW1taW5nOyB2YXJpYWJsZSBwcmVjaXNpb247IHZhcmlhYmxlLXByZWNpc2lvbiIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7Q3Jhd2ZvcmQ6MTk3MzpSQlMsCiAgYXV0aG9yID0gICAgICAgIkMuIFIuIENyYXdmb3JkIiwKICB0aXRsZSA9ICAgICAgICAiUmVkdWN0aW9uIG9mIGEgQmFuZC1TeW1tZXRyaWMgR2VuZXJhbGl6ZWQgRWlnZW52YWx1ZSBQcm9ibGVtIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiMSIsCiAgcGFnZXMgPSAgICAgICAgIjQxLS00NCIsCiAgbW9udGggPSAgICAgICAgamFuLAogIHllYXIgPSAgICAgICAgICIxOTczIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjVGMTUiLAogIE1SbnVtYmVyID0gICAgICI1MSA3MjY2IiwKICBtcnJldmlld2VyID0gICAiVy4gTmlldGhhbW1lciIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvVGhlb3J5L2d2bC5iaWIgYW5kIGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvVGhlb3J5L01hdHJpeC5iaWIiLAogIGFic3RyYWN0ID0gICAgICJBbiBhbGdvcml0aG0gaXMgZGVzY3JpYmVkIGZvciByZWR1Y2luZyBhIGdlbmVyYWxpemVkIGVpZ2VudmFsdWUgcHJvYmxlbSB0byBhbiBvcmRpbmFyeSBwcm9ibGVtLCBpbiBjYXNlIEEgYW5kIEIgYXJlIHN5bW1ldHJpYyBiYW5kIG1hdHJpY2VzIHdpdGggQiBwb3NpdGl2ZSBkZWZpbml0ZS4gSWYgbiBpcyB0aGUgb3JkZXIgb2YgdGhlIG1hdHJpeCBhbmQgbSB0aGUgYmFuZHdpZHRoLCB0aGUgbWF0cmljZXMgQSBhbmQgQiBhcmUgcGFydGl0aW9uZWQgaW50byBtLWJ5LW0gYmxvY2tzOyBhbmQgdGhlIGFsZ29yaXRobSBpcyBkZXNjcmliZWQgaW4gdGVybXMgb2YgdGhlc2UgYmxvY2tzLiBUaGUgYWxnb3JpdGhtIHJlZHVjZXMgdGhlIGdlbmVyYWxpemVkIHByb2JsZW0gdG8gYW4gb3JkaW5hcnkgZWlnZW52YWx1ZSBwcm9ibGVtIGZvciBhIHN5bW1ldHJpYyBiYW5kIG1hdHJpeCBDIHdob3NlIGJhbmR3aWR0aCBpcyB0aGUgc2FtZSBhcyBBIGFuZCBCLiBUaGUgYWxnb3JpdGhtIGlzIHNpbWlsYXIgdG8gdGhvc2Ugb2YgUnV0aXNoYXVzZXIgYW5kIFNjaHdhcnR6IGZvciB0aGUgcmVkdWN0aW9uIG9mIHN5bW1ldHJpYyBtYXRyaWNlcyB0byBiYW5kIGZvcm0uIFRoZSBjYWxjdWxhdGlvbiBvZiBDIHJlcXVpcmVzIG9yZGVyIE4qKjJtIG9wZXJhdGlvbi4gVGhlIHJvdW5kLW9mZiBlcnJvciBpbiB0aGUgY2FsY3VsYXRpb24gb2YgQyBpcyBvZiB0aGUgc2FtZSBvcmRlciBhcyB0aGUgc3VtIG9mIHRoZSBlcnJvcnMgYXQgZWFjaCBvZiB0aGUgbi9tIHN0ZXBzIG9mIHRoZSBhbGdvcml0aG0sIHRoZSBsYXR0ZXIgZXJyb3JzIGJlaW5nIGxhcmdlbHkgZGV0ZXJtaW5lZCBieSB0aGUgY29uZGl0aW9uIG9mIEIgd2l0aCByZXNwZWN0IHRvIGludmVyc2lvbi4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJCMDI5MEggKExpbmVhciBhbGdlYnJhKTsgQzQxNDAgKExpbmVhciBhbGdlYnJhKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzOyA5MjEiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBUb3JvbnRvLCBPbnQuLCBDYW5hZGEiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgcHJvZ3JhbW1pbmcgLS0tIFN1YnJvdXRpbmVzOyBnZW5lcmFsaXplZCBlaWdlbnZhbHVlczsgbWF0aGVtYXRpY2FsIHRlY2huaXF1ZXM7IHN5bW1ldHJpYyBiYW5kIG1hdHJpY2VzIiwKICBrZXl3b3JkcyA9ICAgICAiZWlnZW52YWx1ZXMgYW5kIGVpZ2VuZnVuY3Rpb25zOyBnZW5lcmFsaXplZCBlaWdlbnZhbHVlczsgbWF0cml4IGFsZ2VicmE7IHJlZHVjdGlvbjsgc3ltbWV0cmljIGJhbmQgbWF0cmljZXMiLAogIGt3ZHMgPSAgICAgICAgICJubGEsIGdlaWcsIGJhbmQgbWF0cml4LCBzeW1tZXRyaWMgbWF0cml4IiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtCbG91bnQ6MTk3MzpQQUMsCiAgYXV0aG9yID0gICAgICAgIlMuIEUuIEJsb3VudCBhbmQgTC4gRmVpbiIsCiAgdGl0bGUgPSAgICAgICAgIlRoZSBwcmFjdGljYWwgYXNwZWN0IG9mIGNvbXB1dGVyIHNjaWVuY2UgZWR1Y2F0aW9uIC0tLSBkaXNjdXNzaW9uIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiMSIsCiAgcGFnZXMgPSAgICAgICAgIjQ1LS00NiIsCiAgbW9udGggPSAgICAgICAgamFuLAogIHllYXIgPSAgICAgICAgICIxOTczIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMwMjIwIChDb21wdXRpbmcgZWR1Y2F0aW9uIGFuZCB0cmFpbmluZykiLAogIGNvcnBzb3VyY2UgPSAgICJEaWdpdGFsIEVxdWlwbWVudCBDb3JwLiwgQWN0b24sIE1BLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBlbmdpbmVlcmluZzsgY29tcHV0ZXIgc2NpZW5jZTsgY3VycmljdWx1bTsgZGlnaXRhbCBjb21wdXRlcnM7IGVkdWNhdGlvbjsgc3lzdGVtcyBkZXNpZ24iLAogIHRyZWF0bWVudCA9ICAgICJHIEdlbmVyYWwgUmV2aWV3IiwKfQoKQEFydGljbGV7QmF5czoxOTczOk5XQywKICBhdXRob3IgPSAgICAgICAiQy4gQmF5cyIsCiAgdGl0bGUgPSAgICAgICAgIkEgbm90ZSBvbiB3aGVuIHRvIGNoYWluIG92ZXJmbG93IGl0ZW1zIHdpdGhpbiBhIGRpcmVjdC1hY2Nlc3MgdGFibGUiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICIxIiwKICBwYWdlcyA9ICAgICAgICAiNDYtLTQ3IiwKICBtb250aCA9ICAgICAgICBqYW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMzAgKERhdGEgaGFuZGxpbmcgdGVjaG5pcXVlcykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBTb3V0aCBDYXJvbGluYSwgQ29sdW1iaWEsIFNDLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJjaGFpbmluZzsgY29sbGlzaW9uOyBkYXRhIGhhbmRsaW5nOyBkaXJlY3QgYWNjZXNzIHRhYmxlOyBoYXNoIGNvZGU7IGluZm9ybWF0aW9uOyBvcGVuIGhhc2g7IG92ZXJmbG93IGl0ZW1zOyByZXRyaWV2YWwiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0F0a2luczoxOTczOk1SQSwKICBhdXRob3IgPSAgICAgICAiTS4gUy4gQXRraW5zIiwKICB0aXRsZSA9ICAgICAgICAiTXV0dWFsIHJlY3Vyc2lvbiBpbiB7QWxnb2wgNjB9IHVzaW5nIHJlc3RyaWN0ZWQgY29tcGlsZXJzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiMSIsCiAgcGFnZXMgPSAgICAgICAgIjQ3LS00OCIsCiAgbW9udGggPSAgICAgICAgamFuLAogIHllYXIgPSAgICAgICAgICIxOTczIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTQwRCAoSGlnaCBsZXZlbCBsYW5ndWFnZXMpOyBDNjE1MEMgKENvbXBpbGVycywgaW50ZXJwcmV0ZXJzIGFuZCBvdGhlciBwcm9jZXNzb3JzKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIFdhcndpY2ssIENvdmVudHJ5LCBVSyIsCiAga2V5d29yZHMgPSAgICAgIkFMR09MOyBBTEdPTCA2MDsgbXV0dWFsIHJlY3Vyc2lvbjsgcHJvZ3JhbSBjb21waWxlcnM7IHJlc3RyaWN0ZWQgY29tcGlsZXJzIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtHYWxsYWhlcjoxOTczOkFBTSwKICBhdXRob3IgPSAgICAgICAiTC4gSi4gR2FsbGFoZXIiLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gNDQwOiB7QX0gTXVsdGlkaW1lbnNpb25hbCB7TW9udGV9IHtDYXJsb30gUXVhZHJhdHVyZSB3aXRoIEFkYXB0aXZlIFN0cmF0aWZpZWQgU2FtcGxpbmciLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICIxIiwKICBwYWdlcyA9ICAgICAgICAiNDktLTUwIiwKICBtb250aCA9ICAgICAgICBqYW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjAyOTBNIChOdW1lcmljYWwgaW50ZWdyYXRpb24gYW5kIGRpZmZlcmVudGlhdGlvbik7IEM0MTYwIChOdW1lcmljYWwgaW50ZWdyYXRpb24gYW5kIGRpZmZlcmVudGlhdGlvbik7IEM3MzEwIChNYXRoZW1hdGljcyBjb21wdXRpbmcpIiwKICBjb3Jwc291cmNlID0gICAiR2VvcmdpYSBJbnN0LiBUZWNobm9sLiwgQXRsYW50YSwgR0EsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImFkYXB0aXZlIHF1YWRyYXR1cmU7IEFMR09MOyBpbnRlZ3JhbDsgaW50ZWdyYXRpb247IE1vbnRlIENhcmxvIG1ldGhvZHM7IE1vbnRlIENhcmxvIFF1YWRyYXR1cmU7IG11bHRpZGltZW5zaW9uYWw7IHNhbXBsaW5nOyBzZXF1ZW50aWFsIHN0cmF0aWZpY2F0aW9uOyBzdHJhdGlmaWVkOyBzdWJyb3V0aW5lcyIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7S25vcDoxOTczOkFBUiwKICBhdXRob3IgPSAgICAgICAiUi4gRS4gS25vcCIsCiAgdGl0bGUgPSAgICAgICAgIntBQ019IEFsZ29yaXRobSA0NDE6IFJhbmRvbSBzYW1wbGVzIGZyb20gdGhlIGRpcG9sZSBkaXN0cmlidXRpb24gW3tHNX1dIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiMSIsCiAgcGFnZXMgPSAgICAgICAgIjUxLS01MSIsCiAgbW9udGggPSAgICAgICAgamFuLAogIHllYXIgPSAgICAgICAgICIxOTczIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgImZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGlzdHJpYnV0ZWQvUUxELzE5NzMuYmliIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzczMTAgKE1hdGhlbWF0aWNzIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJGbG9yaWRhIFN0YXRlIFVuaXYuLCBUYWxsYWhhc3NlZSwgRkwsIFVTQSIsCiAgY291bnRyeSA9ICAgICAgIlVTQSIsCiAgZGVzY3JpcHRvcnMgPSAgIlJWRzsiLAogIGVudW0gPSAgICAgICAgICI3NTE0IiwKICBrZXl3b3JkcyA9ICAgICAiZGlwb2xlIGRpc3RyaWJ1dGlvbjsgRk9SVFJBTjsgcHJvYmFiaWxpdHkgZGVuc2l0eTsgcmFuZG9tIGRldmlhdGVzOyByYW5kb20gbnVtYmVyOyBzdGF0aXN0aWNzOyBzdWJyb3V0aW5lcyIsCiAgbGFuZ3VhZ2UgPSAgICAgIkVuZ2xpc2giLAogIHJlZmVyZW5jZXMgPSAgICIwIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtIaWxsOjE5NzM6QUFOLAogIGF1dGhvciA9ICAgICAgICJHLiBXLiBIaWxsIGFuZCBBLiBXLiBEYXZpcyIsCiAgdGl0bGUgPSAgICAgICAgIntBQ019IEFsZ29yaXRobSA0NDI6IE5vcm1hbCBkZXZpYXRlIFt7UzE0fV0iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICIxIiwKICBwYWdlcyA9ICAgICAgICAiNTEtLTUyIiwKICBtb250aCA9ICAgICAgICBqYW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EaXN0cmlidXRlZC9RTEQvMTk3My5iaWIiLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNzMxMCAoTWF0aGVtYXRpY3MgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIkNTSVJPLCBHbGVuIE9zbW9uZCwgQXVzdHJhbGlhIiwKICBjb3VudHJ5ID0gICAgICAiVVNBIiwKICBkZXNjcmlwdG9ycyA9ICAiUlZHOyIsCiAgZW51bSA9ICAgICAgICAgIjczOTMiLAogIGtleXdvcmRzID0gICAgICJBTEdPTDsgbm9ybWFsIGRldmlhdGU7IG5vcm1hbCBkaXN0cmlidXRpb24gaW52ZXJzZTsgcHJvYml0OyBzdGF0aXN0aWNzOyBzdWJyb3V0aW5lczsgVGF5bG9yIHNlcmllcyBhcHByb3hpbWF0aW9uOyB0cmFuc2Zvcm0iLAogIGxhbmd1YWdlID0gICAgICJFbmdsaXNoIiwKICByZWZlcmVuY2VzID0gICAiMCIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7TWVycmlsbDoxOTczOlJDUiwKICBhdXRob3IgPSAgICAgICAiUi4gRC4gTWVycmlsbCIsCiAgdGl0bGUgPSAgICAgICAgIlJlcHJlc2VudGF0aW9uIG9mIENvbnRvdXJzIGFuZCBSZWdpb25zIGZvciBFZmZpY2llbnQgQ29tcHV0ZXIgU2VhcmNoIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiMiIsCiAgcGFnZXMgPSAgICAgICAgIjY5LS04MiIsCiAgbW9udGggPSAgICAgICAgZmViLAogIHllYXIgPSAgICAgICAgICIxOTczIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjhBMTAiLAogIE1SbnVtYmVyID0gICAgICI1MSA3MzYyIiwKICBtcnJldmlld2VyID0gICAiQXJub2xkIEdyaWZmaXRoIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9HcmFwaGljcy9pbWFnZXIvaW1hZ2VyLjc1LmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIkEgbm92ZWwgY29tcHV0ZXItc2VhcmNoYWJsZSByZXByZXNlbnRhdGlvbiBmb3IgdGhlIHRocmVlIGJhc2ljIHBpY3RvcmlhbCBmZWF0dXJlcywgY29udG91ciBtYXBzLCByZWdpb24gY292ZXJhZ2UsIGFuZCBsaW5lIHN0cnVjdHVyZXMsIGlzIGRlc2NyaWJlZC4gVGhlIHJlcHJlc2VudGF0aW9uLCB3aGljaCBoYXMgcHJhY3RpY2FsIHN0b3JhZ2UgcmVxdWlyZW1lbnRzLCBwcm92aWRlcyBhIHJhcGlkIG1lYW5zIG9mIHNlYXJjaGluZyBsYXJnZSBmaWxlcyBmb3IgZGF0YSBhc3NvY2lhdGVkIHdpdGggZ2VvbWV0cmljIHBvc2l0aW9uIGFzIHdlbGwgYXMgd2l0aCBhdHRyaWJ1dGUgdmFsdWUuIEFuIGFwcGxpY2F0aW9uIG9mIHRoaXMgcmVwcmVzZW50YXRpb24gdG8gaGFuZGxpbmcgdGVycmFpbiBpbmZvcm1hdGlvbiBpbGx1c3RyYXRlcyBpdHMgdXRpbGl0eS4gVGhlIGFsZ2VicmFpYyBwcm9wZXJ0aWVzIG9mIHRoZSBkYXRhIHN0cnVjdHVyZSBtYWtlIGl0IGNvbXB1dGF0aW9uYWxseSBlYXN5IHRvIGRldGVybWluZSB3aGV0aGVyIGEgcG9pbnQgbGllcyB3aXRoaW4gYSBjbG9zZWQgYm91bmRhcnk7IGNvbXB1dGUgdGhlIGFyZWEgY29udGFpbmVkIGJ5IGEgY2xvc2VkIGJvdW5kYXJ5OyBnZW5lcmF0ZSB0aGUgY2xvc2VkIGJvdW5kYXJ5IHJlcHJlc2VudGluZyB0aGUgdW5pb24gb3IgaW50ZXJzZWN0aW9uIG9mIHR3byBjbG9zZWQgYm91bmRhcmllczsgYW5kIGRldGVybWluZSB0aGUgbmVpZ2hib3JpbmcgYm91bmRhcmllcyB0byBhIHBvaW50IGFuZCB0aGUgbWluaW11bSBkaXN0YW5jZXMgYmV0d2VlbiB0aGVtIGFuZCB0aGUgcG9pbnQuIFBlcnRpbmVudCB0byBtYXBwaW5nLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTMwIChEYXRhIGhhbmRsaW5nIHRlY2huaXF1ZXMpOyBDNzQwMCAoRW5naW5lZXJpbmcgY29tcHV0aW5nKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNDA1OyA3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJMb2NraGVlZCBQYWxvIEFsdG8gUmVzLiBMYWJvcmF0b3J5LCBDQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFwcGxpY2F0aW9ucyBvZiBjb21wdXRlcnM7IGNhcnRvZ3JhcGh5OyBjb21wdXRlciBncmFwaGljczsgY29tcHV0ZXIgc2VhcmNoYWJsZSBzdHJ1Y3R1cmU7IGNvbnRvdXIgbWFwIHJlcHJlc2VudGF0aW9uOyBkYXRhIGhhbmRsaW5nOyBkYXRhIHByb2Nlc3NpbmcgLS0tIERhdGEgSGFuZGxpbmc7IGRhdGEgcHJvY2Vzc2luZyAtLS0gRGF0YSBTdHJ1Y3R1cmVzOyBlbmdpbmVlcmluZzsgZ3JhcGhpYyBkYXRhIHJldHJpZXZhbDsgbWFwcyBhbmQgbWFwcGluZzsgcmVnaW9uIGJvdW5kYXJ5IHJlcHJlc2VudGF0aW9uIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtDcmVzcGktUmVnaGl6emk6MTk3MzpVR0ksCiAgYXV0aG9yID0gICAgICAgIlMuIENyZXNwaS1SZWdoaXp6aSBhbmQgTS4gQS4gTWVsa2Fub2ZmIGFuZCBMLiBMaWNodGVuIiwKICB0aXRsZSA9ICAgICAgICAiVGhlIFVzZSBvZiBHcmFtbWF0aWNhbCBJbmZlcmVuY2UgZm9yIERlc2lnbmluZyBQcm9ncmFtbWluZyBMYW5ndWFnZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICIyIiwKICBwYWdlcyA9ICAgICAgICAiODMtLTkwIiwKICBtb250aCA9ICAgICAgICBmZWIsCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2OEEzMCIsCiAgTVJudW1iZXIgPSAgICAgIjUwIDE1NDQ2IiwKICBtcnJldmlld2VyID0gICAiTGVvbiBMZXZ5IiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9BaS9jb2x0LmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIkJvdGggaW4gZGVzaWduaW5nIGEgbmV3IHByb2dyYW1taW5nIGxhbmd1YWdlIGFuZCBpbiBleHRlbmRpbmcgYW4gZXhpc3RpbmcgbGFuZ3VhZ2UsIHRoZSBkZXNpZ25lciBpcyBmYWNlZCB3aXRoIHRoZSBwcm9ibGVtIG9mIGRlcml2aW5nIGEgYGBuYXR1cmFsJycgZ3JhbW1hciBmb3IgdGhlIGxhbmd1YWdlLiBXZSBhcmUgcHJvcG9zaW5nIGFuIGludGVyYWN0aXZlIGFwcHJvYWNoIHRvIHRoZSBncmFtbWFyIGRlc2lnbiBwcm9ibGVtIHdoZXJlaW4gdGhlIGRlc2lnbmVyIHByZXNlbnRzIGEgc2FtcGxlIG9mIHNlbnRlbmNlcyBhbmQgc3RydWN0dXJlcyBhcyBpbnB1dCB0byBhIGdyYW1tYXRpY2FsIGluZmVyZW5jZSBhbGdvcml0aG0uIFRoZSBhbGdvcml0aG0gdGhlbiBjb25zdHJ1Y3RzIGEgZ3JhbW1hciB3aGljaCBpcyBhIHJlYXNvbmFibGUgZ2VuZXJhbGl6YXRpb24gb2YgdGhlIGV4YW1wbGVzIHN1Ym1pdHRlZCBieSB0aGUgZGVzaWduZXIuIFxwYXIgVGhlIGltcGxlbWVudGF0aW9uIGlzIHByZXNlbnRseSByZXN0cmljdGVkIHRvIGEgc3ViY2xhc3Mgb2Ygb3BlcmF0b3IgcHJlY2VkZW5jZSBncmFtbWFycywgYnV0IGEgc2Vjb25kIGFsZ29yaXRobSBpcyBvdXRsaW5lZCB3aGljaCBhcHBsaWVzIHRvIGEgbGFyZ2VyIGNsYXNzIG9mIGNvbnRleHQtZnJlZSBncmFtbWFycy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDIxMCAoRm9ybWFsIGxvZ2ljKTsgQzYxNDAgKFByb2dyYW1taW5nIGxhbmd1YWdlcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIENhbGlmb3JuaWEsIExvcyBBbmdlbGVzLCBDQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIHByb2dyYW1taW5nIGxhbmd1YWdlczsgY29udGV4dDsgY29udGV4dC1mcmVlIGdyYW1tYXJzOyBleHRlbnNpYmxlIGxhbmd1YWdlczsgZnJlZSBncmFtbWFyczsgZ3JhbW1hciBkZXNpZ247IGdyYW1tYXRpY2FsIGluZmVyZW5jZTsgaWRlbnRpZmljYXRpb24gaW4gdGhlIGxpbWl0OyBpbmZlcmVuY2U7IGxhbmd1YWdlIGRlZmluaXRpb247IG9wZXJhdG9yOyBwcmVjZWRlbmNlIGdyYW1tYXJzOyBwcm9ncmFtbWluZyBsYW5ndWFnZXMiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0dpbXBlbDoxOTczOlREUCwKICBhdXRob3IgPSAgICAgICAiSi4gRi4gR2ltcGVsIiwKICB0aXRsZSA9ICAgICAgICAiQSBUaGVvcnkgb2YgRGlzY3JldGUgUGF0dGVybnMgYW5kIFRoZWlyIEltcGxlbWVudGF0aW9uIGluIHtTTk9CT0w0fSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNiIsCiAgbnVtYmVyID0gICAgICAgIjIiLAogIHBhZ2VzID0gICAgICAgICI5MS0tMTAwIiwKICBtb250aCA9ICAgICAgICBmZWIsCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2OEExNSAoNjhBNDUpIiwKICBNUm51bWJlciA9ICAgICAiNTIgNzE5OCIsCiAgbXJyZXZpZXdlciA9ICAgIkpvaG4gSy4gRGViZW5oYW0iLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiVGhlIG5vdGlvbiBvZiBhIGRpc2NyZXRlIHBhdHRlcm4gaXMgZm9ybWFsaXplZCBhbmQgY2VydGFpbiBwcm9wZXJ0aWVzIGRlZHVjZWQuIEEgcGF0dGVybiBpcyBzaG93biB0byBiZSBhIGdlbmVyYWxpemF0aW9uIG9mIGEgZm9ybWFsIGxhbmd1YWdlLiBBbGdvcml0aG1zIGZvciBpbXBsZW1lbnRpbmcgdGhlIGtpbmRzIG9mIHBhdHRlcm5zIGluIFNOT0JPTDQgYXJlIGdpdmVuLiBUaGUgZ2VuZXJhbCBhcHByb2FjaCBpcyB0byBjcmVhdGUsIGluLXNvLWZhciBhcyBwb3NzaWJsZSwgYSBib3R0b20tdXAgcGFyc2UgZnJvbSBhIHRvcC1kb3duIHNwZWNpZmljYXRpb24uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQyMTAgKEZvcm1hbCBsb2dpYyk7IEM2MTQwIChQcm9ncmFtbWluZyBsYW5ndWFnZXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJCZWxsIFRlbGVwaG9uZSBMYWJzLiwgSG9sbWRlbCwgTkosIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IGRhdGEgcHJvY2Vzc2luZyAtLS0gRGF0YSBTdHJ1Y3R1cmVzOyBkaXNjcmV0ZSBwYXR0ZXJuczsgZm9ybWFsIGxhbmd1YWdlOyBmb3JtYWwgbGFuZ3VhZ2VzOyBwYXJzaW5nOyBwYXR0ZXJuIGltcGxlbWVudGF0aW9uOyBwYXR0ZXJuIG1hdGNoaW5nOyBwYXR0ZXJuIHJlY29nbml0aW9uIHN5c3RlbXM7IHBhdHRlcm4gdGhlb3J5OyBwYXR0ZXJuczsgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzOyBTTk9CT0w0OyBzdHJpbmcgcHJvY2Vzc2luZyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7Um9rbmU6MTk3MzpBRVMsCiAgYXV0aG9yID0gICAgICAgIkouIFJva25lIiwKICB0aXRsZSA9ICAgICAgICAiQXV0b21hdGljIEVycm9yYm91bmRzIGZvciBTaW1wbGUgWmVyb3Mgb2YgQW5hbHl0aWMgRnVuY3Rpb25zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiMiIsCiAgcGFnZXMgPSAgICAgICAgIjEwMS0tMTA0IiwKICBtb250aCA9ICAgICAgICBmZWIsCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2NUUwNSIsCiAgTVJudW1iZXIgPSAgICAgIjUxIDQ2MzgiLAogIG1ycmV2aWV3ZXIgPSAgICJFLiBNYWxpc3pld3NraSIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJUaGUgQ2F1Y2h5LU9zdHJvd3NraSB0aGVvcmVtIG9uIGNvbnZlcmdlbmNlIG9mIE5ld3RvbiBpdGVyYXRlcyBmb3IgYW4gYW5hbHl0aWMgZnVuY3Rpb24gaW4gb25lIHZhcmlhYmxlIGlzIGV4dGVuZGVkIHRvIGluY2x1ZGUgY29tcHV0YXRpb25hbCBlcnJvcnMgdXNpbmcgY29tcGxleCBpbnRlcnZhbCBhcml0aG1ldGljLiBTZXZlcmFsIG51bWVyaWNhbCBleGFtcGxlcyBhcmUgZ2l2ZW4gZm9yIHBvbHlub21pYWxzIHdpdGggcmVhbCBhbmQgY29tcGxleCByb290cyBhbmQgb25lIGV4YW1wbGUgZm9yIHRoZSBCZXNzZWwgZnVuY3Rpb24gb2YgdGhlIGZpcnN0IGtpbmQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjAyOTBCIChFcnJvciBhbmFseXNpcyBpbiBudW1lcmljYWwgbWV0aG9kcyk7IEIwMjkwRCAoRnVuY3Rpb25hbCBhbmFseXNpcyk7IEIwMjkwSyAoTm9ubGluZWFyIGFuZCBmdW5jdGlvbmFsIGVxdWF0aW9ucyk7IEM0MTEwIChFcnJvciBhbmFseXNpcyBpbiBudW1lcmljYWwgbWV0aG9kcyk7IEM0MTIwIChGdW5jdGlvbmFsIGFuYWx5c2lzKTsgQzQxNTAgKE5vbmxpbmVhciBhbmQgZnVuY3Rpb25hbCBlcXVhdGlvbnMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBDYWxnYXJ5LCBBbHRhLiwgQ2FuYWRhIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFuYWx5c2lzOyBhbmFseXRpYyBmdW5jdGlvbnM7IGF1dG9tYXRpYyBlcnJvcmJvdW5kczsgQmVzc2VsIGZ1bmN0aW9uczsgQ2F1Y2h5LU9zdHJvd3NraSB0aGVvcmVtOyBjb21wbGV4IGludGVydmFsIGFyaXRobWV0aWM7IGNvbXBsZXggaW50ZXJ2YWxzOyBjb252ZXJnZW5jZSBvZiBudW1lcmljYWwgbWV0aG9kczsgZGF0YSBwcm9jZXNzaW5nIC0tLSBEYXRhIEhhbmRsaW5nOyBkYXRhIHByb2Nlc3NpbmcgLS0tIERhdGEgU3RydWN0dXJlczsgZXJyb3I7IGludGVydmFsIGFyaXRobWV0aWM7IGl0ZXJhdGl2ZSBtZXRob2RzOyBtYXRoZW1hdGljYWwgdGVjaG5pcXVlczsgTmV3dG9uJ3MgbWV0aG9kOyBwb2xlcyBhbmQgemVyb3M7IHBvbHlub21pYWxzOyByZWFsIGludGVydmFsIGFyaXRobWV0aWM7IHJlYWwgaW50ZXJ2YWxzOyBzaW1wbGUgemVyb3M7IHplcm9zIG9mIEJlc3NlbCBmdW5jdGlvbnM7IHplcm9zIG9mIHBvbHlub21pYWxzIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtCcmVudDoxOTczOlJSVCwKICBhdXRob3IgPSAgICAgICAiUmljaGFyZCBQLiBCcmVudCIsCiAgdGl0bGUgPSAgICAgICAgIlJlZHVjaW5nIHRoZSBSZXRyaWV2YWwgVGltZSBvZiBTY2F0dGVyIFN0b3JhZ2UgVGVjaG5pcXVlcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNiIsCiAgbnVtYmVyID0gICAgICAgIjIiLAogIHBhZ2VzID0gICAgICAgICIxMDUtLTEwOSIsCiAgbW9udGggPSAgICAgICAgZmViLAogIHllYXIgPSAgICAgICAgICIxOTczIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgbm90ZSA9ICAgICAgICAgIk1vZGlmaWNhdGlvbiBvZiBvcGVuIGFkZHJlc3Npbmcgd2l0aCBkb3VibGUgaGFzaGluZyB0byByZWR1Y2UgdGhlIGF2ZXJhZ2UgbnVtYmVyIG9mIHByb2JlcyBmb3IgYSBzdWNjZXNzZnVsIHNlYXJjaC4iLAogIGFic3RyYWN0ID0gICAgICJBIG5ldyBtZXRob2QgZm9yIGVudGVyaW5nIGFuZCByZXRyaWV2aW5nIGluZm9ybWF0aW9uIGluIGEgaGFzaCB0YWJsZSBpcyBkZXNjcmliZWQuIFRoZSBtZXRob2QgaXMgaW50ZW5kZWQgdG8gYmUgZWZmaWNpZW50IGlmIG1vc3QgZW50cmllcyBhcmUgbG9va2VkIHVwIHNldmVyYWwgdGltZXMuIFRoZSBleHBlY3RlZCBudW1iZXIgb2YgcHJvYmVzIHRvIGxvb2sgdXAgYW4gZW50cnksIHByZWRpY3RlZCB0aGVvcmV0aWNhbGx5IGFuZCB2ZXJpZmllZCBieSBNb250ZSBDYXJsbyBleHBlcmltZW50cywgaXMgY29uc2lkZXJhYmx5IGxlc3MgdGhhbiBmb3Igb3RoZXIgY29tcGFyYWJsZSBtZXRob2RzIGlmIHRoZSB0YWJsZSBpcyBuZWFybHkgZnVsbC4gQW4gZXhhbXBsZSBvZiBhIHBvc3NpYmxlIEZvcnRyYW4gaW1wbGVtZW50YXRpb24gaXMgZ2l2ZW4uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzOyA5MDEiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYWRkcmVzczsgYWRkcmVzcyBjYWxjdWxhdGlvbjsgYWRkcmVzc2luZzsgY2FsY3VsYXRpb247IGNvbXB1dGVyIHByb2dyYW1taW5nIGxhbmd1YWdlcyAtLS0gRm9ydHJhbjsgY29udGVudCBhZGRyZXNzaW5nOyBkYXRhIHN0b3JhZ2UsIGRpZ2l0YWwgLS0tIFJhbmRvbSBBY2Nlc3M7IGZpbGUgb3JnYW5pc2F0aW9uOyBmaWxlIHNlYXJjaGluZzsgaGFzOyBoYXMgY29kZTsgaGFzaCBhZGRyZXNzaW5nOyBpbmZvcm1hdGlvbiByZXRyaWV2YWwgc3lzdGVtczsgbGluZWFyIHByb2Jpbmc7IGxpbmVhciBxdW90aWVudDsgbGluZWFyIHF1b3RpZW50IG1ldGhvZDsgbWV0aG9kOyByZXRyaWV2YWwgdGltZTsgc2NhdHRlciBzdG9yYWdlIHRlY2huaXF1ZXM7IHN0b3JhZ2UgbWFuYWdlbWVudDsgc3ltYm9sIHRhYmxlIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtHcmFoYW06MTk3MzpTREUsCiAgYXV0aG9yID0gICAgICAgIlJvYmVydCBNLiBHcmFoYW0gYW5kIEdlcmFsZCBKLiB7Q2xhbmN5LCBKci59IGFuZCBEYXZpZCBCLiBEZVZhbmV5IiwKICB0aXRsZSA9ICAgICAgICAiQSBzb2Z0d2FyZSBkZXNpZ24gYW5kIGV2YWx1YXRpb24gc3lzdGVtIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiMiIsCiAgcGFnZXMgPSAgICAgICAgIjExMC0tMTE2IiwKICBtb250aCA9ICAgICAgICBmZWIsCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiQSBjcml0aWNhbCBmYWlsdXJlIG9mIGN1cnJlbnQgc29mdHdhcmUgc3lzdGVtIGRlc2lnbiBhbmQgaW1wbGVtZW50YXRpb24gbWV0aG9kb2xvZ3kgaXMgdGhhdCB0aGUgcGVyZm9ybWFuY2Ugb2YgYSBwcm9wb3NlZCBkZXNpZ24gaXMgbm90IGV2YWx1YXRlZCBiZWZvcmUgaXQgaXMgYWN0dWFsbHkgaW1wbGVtZW50ZWQuIEluIHRoaXMgcGFwZXIgdGhlIHJlYXNvbnMgZm9yIHRoaXMgZmFpbHVyZSBhcmUgZXhwbG9yZWQsIGFuZCBhIG5ldyBtZXRob2RvbG9neSB3aGljaCBvdmVyY29tZXMgbWFueSBvZiB0aGUgZGlmZmljdWx0aWVzIGlzIHByb3Bvc2VkLiBBIHN5c3RlbSB3aGljaCBpbnRlZ3JhdGVzIHBlcmZvcm1hbmNlIGV2YWx1YXRpb24gd2l0aCBkZXNpZ24gYW5kIGltcGxlbWVudGF0aW9uIGlzIGRlc2NyaWJlZC4gVGhpcyBzeXN0ZW0gaXMgYmFzZWQgb24gYSBzaW1wbGUsIGhpZ2ggbGV2ZWwgbGFuZ3VhZ2Ugd2hpY2ggaXMgdXNlZCB0byBkZXNjcmliZSB0aGUgZXZvbHZpbmcgc3lzdGVtIGF0IGFsbCBzdGFnZXMgb2YgaXRzIGRldmVsb3BtZW50LiBUaGUgc291cmNlIGxhbmd1YWdlIGRlc2NyaXB0aW9uIGlzIHVzZWQgYXMgZGlyZWN0IGlucHV0IHRvIHBlcmZvcm1hbmNlIGFuYWx5c2lzIGFuZCBzaW11bGF0aW9uIHJvdXRpbmVzLiB1c2luZyB0aGUgcGVyZm9ybWFuY2UgaW5mb3JtYXRpb24gb2J0YWluZWQgZnJvbSB0aGVzZSByb3V0aW5lcyBhcyBmZWVkYmFjaywgdGhlIHByb2JsZW1zIHdoaWNoIGFkdmVyc2VseSBhZmZlY3QgcGVyZm9ybWFuY2UgYXJlIGRldGVjdGVkIGVhcmx5IGVub3VnaCBzbyB0aGF0IHRoZXkgY2FuIGJlIGNvcnJlY3RlZCB3aXRob3V0IGNvc3RseSBtYWpvciByZWltcGxlbWVudGF0aW9uIG9mIHRoZSBwcm9wb3NlZCBzeXN0ZW0uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxNTBDIChDb21waWxlcnMsIGludGVycHJldGVycyBhbmQgb3RoZXIgcHJvY2Vzc29ycyk7IEM2MTUwSiAoT3BlcmF0aW5nIHN5c3RlbXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBDYWxpZm9ybmlhLCBCZXJrZWxleSwgQ0EsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21waWxlcnM7IGNvbXB1dGVyIHByb2dyYW1taW5nIGxhbmd1YWdlczsgY29tcHV0ZXIgc29mdHdhcmU7IGNvbXB1dGVyIHN5c3RlbXMgcHJvZ3JhbW1pbmc7IGNvbXB1dGVyIHN5c3RlbXMgcHJvZ3JhbW1pbmcgLS0tIFN1cGVydmlzb3J5IGFuZCBFeGVjdXRpdmUgUHJvZ3JhbXM7IGRhdGEgcHJvY2Vzc2luZyAtLS0gRGF0YSBTdHJ1Y3R1cmVzOyBkZWJ1Z2dpbmc7IGRlcyBsYW5ndWFnZTsgZXZhbHVhdGlvbjsgZXhlY3V0aXZlIHByb2dyYW1zOyBoaWdoIGxldmVsIGxhbmd1YWdlOyBwZXJmb3JtYW5jZSBhbmFseXNpczsgcHJvZ3JhbSBtYWludGVuYW5jZTsgcHJvZ3JhbSBwcm9jZXNzb3JzOyBzaW11bGF0aW9uOyBzb2Z0d2FyZSBkZXNpZ247IHN1cGVydmlzb3J5IGFuZDsgc3VwZXJ2aXNvcnkgc3lzdGVtczsgc3lzdGVtIHByb2dyYW1taW5nIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtCYWx6ZXI6MTk3MzpPSUMsCiAgYXV0aG9yID0gICAgICAgIlIuIE0uIEJhbHplciIsCiAgdGl0bGUgPSAgICAgICAgIkFuIG92ZXJ2aWV3IG9mIHRoZSB7SVNQTH0gY29tcHV0ZXIgc3lzdGVtIGRlc2lnbiIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNiIsCiAgbnVtYmVyID0gICAgICAgIjIiLAogIHBhZ2VzID0gICAgICAgICIxMTctLTEyMiIsCiAgbW9udGggPSAgICAgICAgZmViLAogIHllYXIgPSAgICAgICAgICIxOTczIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlRoaXMgcGFwZXIgZXhwbG9yZXMgdGhlIGFkdmFudGFnZXMgb2YgdGhlIGNvbmN1cnJlbnQgZGVzaWduIG9mIHRoZSBsYW5ndWFnZSwgb3BlcmF0aW5nIHN5c3RlbSwgYW5kIG1hY2hpbmUgKHZpYSBtaWNyb2NvZGUpIHRvIGNyZWF0ZSBhbiBpbnRlcmFjdGl2ZSBwcm9ncmFtbWluZyBsYWJvcmF0b3J5LiBJdCBkZXNjcmliZXMgdGhlIHN5bmVyZ2lzdGljIGVmZmVjdCB0aGF0IHRoZSBmcmVlZG9tIHRvIG1vdmUgYW5kIGFsdGVyIGZlYXR1cmVzIGZyb20gb25lIG9mIHRoZXNlIGRvbWFpbnMgdG8gYW5vdGhlciBoYXMgaGFkIG9uIHRoZSBkZXNpZ24gb2YgdGhpcyBzeXN0ZW0gKHdoaWNoIGhhcyBub3QgYmVlbiBpbXBsZW1lbnRlZCkuIFRoaXMgZnJlZWRvbSBzaW1wbGlmaWVkIGJvdGggaW5jcmVtZW50YWwgY29tcGlsYXRpb24gYW5kIHRoZSBzeXN0ZW0ncyBhZGRyZXNzaW5nIHN0cnVjdHVyZSwgYW5kIGNlbnRyYWxpemVkIHRoZSBjb21tdW5pY2F0aW9uIG1lY2hhbmlzbXMgZW5hYmxpbmcgdGhlIGNvbnN0cnVjdGlvbiBvZiBoaWVyYXJjaGljYWwgc3Vic3lzdGVtcy4gSXQgYWxzbyBzdWdnZXN0ZWQgYW4gaW1wb3J0YW50IG5ldyBjb25jZXB0IGZvciBvcGVyYXRpbmcgc3lzdGVtczogc2VwYXJhdGlvbiBvZiB0aGUgc2NoZWR1bGluZyBmcm9tIHRoZSBtYWludGVuYW5jZSBmdW5jdGlvbnMgaW4gcmVzb3VyY2UgYWxsb2NhdGlvbi4gVGhpcyBzZXBhcmF0aW9uIGVuYWJsZXMgaW5jb3Jwb3JhdGlvbiBvZiBuZXcgc2NoZWR1bGluZyBhbGdvcml0aG1zIChkZWNpc2lvbiBvZiB3aGF0IHRvIGRvKSB3aXRob3V0IGVuZGFuZ2VyaW5nIHRoZSBzeXN0ZW0gaW50ZWdyYXRpb24gKGNvcnJlY3RseSBwZXJmb3JtaW5nIHRoZSBzY2hlZHVsaW5nIGRlY2lzaW9ucykuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMDAgKFNvZnR3YXJlIHRlY2huaXF1ZXMgYW5kIHN5c3RlbXMpOyBDNjE1MEogKE9wZXJhdGluZyBzeXN0ZW1zKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIHByb2dyYW1taW5nIGxhbmd1YWdlczsgY29tcHV0ZXIgc3lzdGVtIGRlc2lnbjsgY29tcHV0ZXIgc3lzdGVtcywgZGlnaXRhbCAtLS0gVGltZSBTaGFyaW5nOyBjb21wdXRlcnMgLS0tIERhdGEgQ29tbXVuaWNhdGlvbiBTeXN0ZW1zOyBoaWVyYXJjaGljYWwgc3Vic3lzdGVtczsgaW5jcmVtZW50YWwgY29tcGlsYXRpb247IGludGVyYWN0aXZlIHByb2dyYW1taW5nIGxhYm9yYXRvcnk7IGludGVycHJvZ3JhbSBjb21tdW5pY2F0aW9uOyBJU1BMOyBsYW5ndWFnZTsgbWFjaGluZTsgb3BlcmF0aW5nIHN5c3RlbTsgb3BlcmF0aW5nIHN5c3RlbXMgKGNvbXB1dGVycyk7IHByb2dyYW1taW5nIiwKICB0cmVhdG1lbnQgPSAgICAiRyBHZW5lcmFsIFJldmlldzsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtGcml0c2NoOjE5NzM6QUFTLAogIGF1dGhvciA9ICAgICAgICJGLiBOLiBGcml0c2NoIGFuZCBSLiBFLiBTaGFmZXIgYW5kIFcuIFAuIENyb3dsZXkiLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gNDQzOiBTb2x1dGlvbiBvZiB0aGUgVHJhbnNjZW5kZW50YWwgRXF1YXRpb24gJHcgZV53ID0geCQiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICIyIiwKICBwYWdlcyA9ICAgICAgICAiMTIzLS0xMjQiLAogIG1vbnRoID0gICAgICAgIGZlYiwKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJCMDI5MEQgKEZ1bmN0aW9uYWwgYW5hbHlzaXMpOyBDNDEyMCAoRnVuY3Rpb25hbCBhbmFseXNpcyk7IEM3MzEwIChNYXRoZW1hdGljcyBjb21wdXRpbmcpIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gQ2FsaWZvcm5pYSwgTGl2ZXJtb3JlLCBDQSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiRk9SVFJBTjsgZnVuY3Rpb24gZXZhbHVhdGlvbjsgaXRlcmF0aW9uOyBpdGVyYXRpdmUgbWV0aG9kczsgc3Vicm91dGluZXM7IHRyYW5zY2VuZGVudGFsIGVxdWF0aW9uIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAogIHh4YXV0aG9yID0gICAgICJGLiBOLiBGcml0c2NoIGFuZCBSLiBFLiBTaGFmZXIgYW5kIFcuIFAuIEdvd2xleSIsCn0KCkBBcnRpY2xle0F1c3Rpbmc6MTk3MzpDU0MsCiAgYXV0aG9yID0gICAgICAgIlJpY2hhcmQgSC4gQXVzdGluZyBhbmQgR2VyYWxkIEwuIEVuZ2VsIiwKICB0aXRsZSA9ICAgICAgICAiQSBDb21wdXRlciBTY2llbmNlIENvdXJzZSBQcm9ncmFtIGZvciBTbWFsbCBDb2xsZWdlcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNiIsCiAgbnVtYmVyID0gICAgICAgIjMiLAogIHBhZ2VzID0gICAgICAgICIxMzktLTE0NyIsCiAgbW9udGggPSAgICAgICAgbWFyLAogIHllYXIgPSAgICAgICAgICIxOTczIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EYXRhYmFzZS9XaWVkZXJob2xkLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIlRoaXMgcmVwb3J0IGdpdmVzIHJlY29tbWVuZGF0aW9ucyBmb3IgdGhlIGNvbnRlbnQsIGltcGxlbWVudGF0aW9uLCBhbmQgb3BlcmF0aW9uIG9mIGEgcHJvZ3JhbSBvZiBjb21wdXRlciBzY2llbmNlIGNvdXJzZXMgc3BlY2lmaWNhbGx5IGRpcmVjdGVkIHRvIHNtYWxsIGNvbGxlZ2VzLiBJbXBsZW1lbnRhdGlvbiBwcm9ibGVtcyBhcmUgZGlzY3Vzc2VkLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBjb25zdHJhaW50cyBvZiBsaW1pdGVkIGZhY3VsdHkgYW5kIGZvciB0aGUgcHVycG9zZXMgb2Ygc2F0aXNmeWluZyBhIHdpZGUgdmFyaWV0eSBvZiBvYmplY3RpdmVzLiBEZXRhaWxlZCBkZXNjcmlwdGlvbnMgb2YgZm91ciBjb3Vyc2VzIGFyZSBnaXZlbjsgc3VnZ2VzdGlvbnMgYXJlIG1hZGUgZm9yIG1vcmUgYWR2YW5jZWQgd29yazsgYW5kIGFuIGV4dGVuc2l2ZSBsaWJyYXJ5IGxpc3QgaXMgaW5jbHVkZWQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzAyMjAgKENvbXB1dGluZyBlZHVjYXRpb24gYW5kIHRyYWluaW5nKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzOyA5MDEiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBNYXJ5bGFuZCwgQ29sbGVnZSBQYXJrLCBNRCwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIHNjaWVuY2UgZWR1Y2F0aW9uOyBkYXRhIHByb2Nlc3NpbmciLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBvcmdhbml6YXRpb24gY291cnNlOyBjb21wdXRlciBzY2llbmNlIGNvdXJzZTsgZWR1Y2F0aW9uOyBmaWxlIG9yZ2FuaXphdGlvbiBjb3Vyc2U7IHByb2dyYW1taW5nIGNvdXJzZTsgcmV2aWV3czsgc21hbGwgY29sbGVnZXM7IHNvY2lhbCBpbXBsaWNhdGlvbnMgY291cnNlOyB1bml2ZXJzaXRpZXMiLAogIHRyZWF0bWVudCA9ICAgICJCIEJpYmxpb2dyYXBoeTsgRyBHZW5lcmFsIFJldmlldyIsCn0KCkBBcnRpY2xle1dhZ25lcjoxOTczOkNQTSwKICBhdXRob3IgPSAgICAgICAiUm9iZXJ0IEEuIFdhZ25lciIsCiAgdGl0bGUgPSAgICAgICAgIkNvbW1vbiBQaHJhc2VzIGFuZCBNaW5pbXVtLVNwYWNlIFRleHQgU3RvcmFnZSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNiIsCiAgbnVtYmVyID0gICAgICAgIjMiLAogIHBhZ2VzID0gICAgICAgICIxNDgtLTE1MiIsCiAgbW9udGggPSAgICAgICAgbWFyLAogIHllYXIgPSAgICAgICAgICIxOTczIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkEgbWV0aG9kIGZvciBzYXZpbmcgc3RvcmFnZSBzcGFjZSBmb3IgdGV4dCBzdHJpbmdzLCBzdWNoIGFzIGNvbXBpbGVyIGRpYWdub3N0aWMgbWVzc2FnZXMsIGlzIGRlc2NyaWJlZC4gVGhlIG1ldGhvZCByZWxpZXMgb24gaGFuZCBzZWxlY3Rpb24gb2YgYSBzZXQgb2YgdGV4dCBzdHJpbmdzIHdoaWNoIGFyZSBjb21tb24gdG8gb25lIG9yIG1vcmUgbWVzc2FnZXMuIFRoZXNlIHBocmFzZXMgYXJlIHRoZW4gc3RvcmVkIG9ubHkgb25jZS4gVGhlIHN0b3JhZ2UgdGVjaG5pcXVlIGdpdmVzIHJpc2UgdG8gYSBtYXRoZW1hdGljYWwgb3B0aW1pemF0aW9uIHByb2JsZW06IGRldGVybWluZSBob3cgZWFjaCBtZXNzYWdlIHNob3VsZCB1c2UgdGhlIGF2YWlsYWJsZSBwaHJhc2VzIHRvIG1pbmltaXplIGl0cyBzdG9yYWdlIHJlcXVpcmVtZW50LiBUaGlzIHByb2JsZW0gaXMgbm9udHJpdmlhbCB3aGVuIHBocmFzZXMgd2hpY2ggb3ZlcmxhcCBleGlzdC4gSG93ZXZlciwgYSBkeW5hbWljIHByb2dyYW1taW5nIGFsZ29yaXRobSBpcyBwcmVzZW50ZWQgd2hpY2ggc29sdmVzIHRoZSBwcm9ibGVtIGluIHRpbWUgd2hpY2ggZ3Jvd3MgbGluZWFybHkgd2l0aCB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gdGhlIHRleHQuIEFsZ29yaXRobSA0NDQgYXBwbGllcyB0byB0aGlzIHBhcGVyLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkIwMjYwIChPcHRpbWlzYXRpb24gdGVjaG5pcXVlcyk7IEMxMTgwIChPcHRpbWlzYXRpb24gdGVjaG5pcXVlcyk7IEM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbik7IEM2MTUwRyAoRGlhZ25vc3RpYywgdGVzdGluZywgZGVidWdnaW5nIGFuZCBldmFsdWF0aW5nIHN5c3RlbXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJDb3JuZWxsIFVuaXYuLCBOWSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbW1vbiBwaHJhc2VzOyBjb21wdXRlciBvcGVyYXRpbmcgc3lzdGVtcyAtLS0gUHJvZ3JhbSBDb21waWxlcnM7IGNvbXB1dGVyIHByb2dyYW1taW5nOyBkaWFnbm9zdGljIG1lc3NhZ2VzOyBkeW5hbWljIHByb2dyYW1taW5nOyBlcnJvciBtZXNzYWdlczsgZmlsZSBvcmdhbmlzYXRpb247IG1pbmltdW0gc3BhY2U7IG9wdGltaXphdGlvbjsgcHJvZ3JhbSBkaWFnbm9zdGljczsgdGV4dCBzdG9yYWdlIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtGZWlucm90aDoxOTczOlRVRiwKICBhdXRob3IgPSAgICAgICAiWS4gRmVpbnJvdGggYW5kIEUuIEZyYW5jZXNjaGluaSBhbmQgTS4gR29sZHN0ZWluIiwKICB0aXRsZSA9ICAgICAgICAiVGVsZWNvbW11bmljYXRpb25zIFVzaW5nIGEgRnJvbnQtRW5kIE1pbmljb21wdXRlciIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNiIsCiAgbnVtYmVyID0gICAgICAgIjMiLAogIHBhZ2VzID0gICAgICAgICIxNTMtLTE2MCIsCiAgbW9udGggPSAgICAgICAgbWFyLAogIHllYXIgPSAgICAgICAgICIxOTczIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlRoZSB1c2Ugb2YgYSBmcm9udC1lbmQgbWluaWNvbXB1dGVyIHRvIHByb3ZpZGUgdmFyaWVkIHJlbW90ZSB0ZXJtaW5hbCBhY2Nlc3MgdG8gYSBsYXJnZSBzY2FsZSBjb21wdXRlciBpcyBjb25zaWRlcmVkLiBUaGUgcHJvYmxlbXMgb2YgZW1iZWRkaW5nIHRlbGVjb21tdW5pY2F0aW9ucyBJL08gd2l0aGluIGFuIG9wZXJhdGluZyBzeXN0ZW0gYXJlIGRpc2N1c3NlZCwgYW5kIGl0IGlzIHNob3duIGhvdyB0aGUgZGVjZW50cmFsaXphdGlvbiBvZiBpbnRlbGxpZ2VuY2UgYWNxdWlyZWQgYnkgZnJvbnQtZW5kIHByb2Nlc3NpbmcgdmFzdGx5IHNpbXBsaWZpZXMgdGhlIHByb2JsZW0uIEEgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gaXMgZGlzY3Vzc2VkIHdpdGggZW1waGFzaXMgb24gdGhlIG1haW4gcHJvY2Vzc29yLW1pbmljb21wdXRlciBsaW5rLCB0aGUgaGFyZHdhcmUtc29mdHdhcmUgaW1wbGVtZW50YXRpb24sIHRoZSBlZmZlY3Qgb24gdGhlIG1haW4gcHJvY2Vzc29yIG9wZXJhdGluZyBzeXN0ZW0sIGFuZCBhbiBhc3Nlc3NtZW50IG9mIHRoZSBhZHZhbnRhZ2VzIG92ZXIgYSBoYXJkd2lyZWQgbGluZSBjb250cm9sbGVyLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM1NjAwIChEYXRhIGNvbW11bmljYXRpb24gZXF1aXBtZW50IGFuZCB0ZWNobmlxdWVzKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzE4OyA3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJOZXcgWW9yayBVbml2LiwgTlksIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlcnM7IGNvbXB1dGVycywgbWluaWF0dXJlOyBkaWdpdGFsIGNvbW11bmljYXRpb24gc3lzdGVtczsgZnJvbnQgZW5kIHByb2Nlc3NvcjsgZnJvbnQtZW5kIHByb2Nlc3NvcjsgbGFyZ2Ugc2NhbGUgY29tcHV0ZXI7IG1pbmljb21wdXRlcjsgbWluaWNvbXB1dGVyczsgb3BlcmF0aW5nOyBvcGVyYXRpbmcgc3lzdGVtOyByZW1vdGU7IHJlbW90ZSBqb2IgZW50cnk7IHN5c3RlbXMgKGNvbXB1dGVycyk7IHRlbGVjb21tdW5pY2F0aW9uIHN5c3RlbXM7IHRlbGVjb21tdW5pY2F0aW9uczsgdGVybWluYWxzIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtQYWNrOjE5NzM6RU1DLAogIGF1dGhvciA9ICAgICAgICJDaGFybGVzIEQuIFBhY2siLAogIHRpdGxlID0gICAgICAgICJUaGUgRWZmZWN0cyBvZiBNdWx0aXBsZXhpbmcgb24gYSBDb21wdXRlci1Db21tdW5pY2F0aW9ucyBTeXN0ZW0iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICIzIiwKICBwYWdlcyA9ICAgICAgICAiMTYxLS0xNjgiLAogIG1vbnRoID0gICAgICAgIG1hciwKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGlzdHJpYnV0ZWQvbmV0d29yay5iaWIiLAogIGFic3RyYWN0ID0gICAgICJBIHN0dWR5IGlzIG1hZGUgb2YgdGhlIHdheSBpbiB3aGljaCBhc3luY2hyb25vdXMgdGltZSBkaXZpc2lvbiBtdWx0aXBsZXhpbmcgY2hhbmdlcyB0aGUgc3RvY2hhc3RpYyBuYXR1cmUgb2YgdGhlIGFycml2YWwgcHJvY2VzcyBmcm9tIGEgdXNlciB0byB0aGUgY29tcHV0ZXIgYW5kLCBjb25zZXF1ZW50bHksIGFmZmVjdHMgdGhlIHBlcmZvcm1hbmNlIG9mIGEgdGltZS1zaGFyZWQgY29tcHV0ZXItY29tbXVuaWNhdGlvbnMgc3lzdGVtLiBJdCBpcyBjb25jbHVkZWQgdGhhdCB3aGlsZSwgZm9yIGNlcnRhaW4gdmFsdWVzIG9mIHN5c3RlbSBwYXJhbWV0ZXJzLCB0aGVyZSBpcyBub3RpY2VhYmxlIGltcHJvdmVtZW50IGluIHRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgY29tcHV0ZXIgKG1vZGVsKSwgaW4gdGhlIHNlbnNlIHRoYXQgdGltZS1zaGFyZWQgc2NoZWR1bGluZyBkZWxheXMgYXJlIHJlZHVjZWQsIHRoZXNlIGltcHJvdmVtZW50cyBhcmUgb2Zmc2V0IGJ5IHRoZSB0cmFuc21pc3Npb24gZGVsYXlzIGltcG9zZWQgYnkgbXVsdGlwbGV4aW5nIHNvIHRoYXQgdGhlcmUgbWF5IGJlIGxpdHRsZSBvciBubyBjaGFuZ2UgaW4gdGhlIGNvbXB1dGVyLWNvbW11bmljYXRpb25zIHN5c3RlbSBwZXJmb3JtYW5jZS4gQW5hbHl0aWNhbCBhbmQgc2ltdWxhdGlvbiByZXN1bHRzIGFyZSBiYXNlZCBvbiB0aGUgbW9kZWwgb2YgdGhlIGNvbXB1dGVyLWNvbW11bmljYXRpb25zIHN5c3RlbSBiZWluZyBhbiBNL0QvSSBxdWV1ZSAodGhlIG11bHRpcGxleG9yKSBpbiB0YW5kZW0gd2l0aCBhIHNpbmdsZSBleHBvbmVudGlhbCBzZXJ2ZXIgKHRoZSBjb21wdXRlcikuIEFuYWx5dGljYWwgcmVzdWx0cyBpbmNsdWRlIGEgZ2VuZXJhbCBkZXNjcmlwdGlvbiBvZiB0aGUgb3V0cHV0IHByb2Nlc3Mgb2YgYW4gTS9ELzEgcXVldWUgYW5kIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoaXMgb3V0cHV0IHByb2Nlc3MgaXMgYXBwcm94aW1hdGVseSBQb2lzc29uLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM1NjAwIChEYXRhIGNvbW11bmljYXRpb24gZXF1aXBtZW50IGFuZCB0ZWNobmlxdWVzKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzE4OyA3MjI7IDcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIkJlbGwgVGVsZXBob25lIExhYnMuIEluYy4sIE11cnJheSBIaWxsLCBOSiwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDbSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIGNvbW11bmljYXRpb25zOyBjb21wdXRlciBwcm9ncmFtbWluZyAtLS0gU3Vicm91dGluZXM7IGNvbXB1dGVyczsgZGlnaXRhbCBjb21tdW5pY2F0aW9uIHN5c3RlbXM7IG11bHRpcGxleGluZzsgb3BlcmF0aW5nIHN5c3RlbXM7IHNjaGVkdWxpbmcgYWxnb3JpdGhtczsgc3lzdGVtczsgdGltZSBzaGFyaW5nOyB0aW1lLXNoYXJpbmciLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0NvbndheToxOTczOkRJRCwKICBhdXRob3IgPSAgICAgICAiUmljaGFyZCBXLiBDb253YXkgYW5kIFRob21hcyBSLiBXaWxjb3giLAogIHRpdGxlID0gICAgICAgICJEZXNpZ24gYW5kIEltcGxlbWVudGF0aW9uIG9mIERpYWdub3N0aWMgQ29tcGlsZXIgZm9yIHtQTC9JfSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNiIsCiAgbnVtYmVyID0gICAgICAgIjMiLAogIHBhZ2VzID0gICAgICAgICIxNjktLTE3OSIsCiAgbW9udGggPSAgICAgICAgbWFyLAogIHllYXIgPSAgICAgICAgICIxOTczIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlBML0MgaXMgYSBjb21waWxlciBmb3IgYSBkaWFsZWN0IGZvciBQTC9JLiBUaGUgZGVzaWduIG9iamVjdGl2ZSB3YXMgdG8gcHJvdmlkZSBhIG1heGltdW0gZGVncmVlIG9mIGRpYWdub3N0aWMgYXNzaXN0YW5jZSBpbiBhIGJhdGNoIHByb2Nlc3NpbmcgZW52aXJvbm1lbnQuIEZvciB0aGUgbW9zdCBwYXJ0IHRoaXMgYXNzaXN0YW5jZSBpcyBpbXBsaWNpdCBhbmQgaXMgcHJvdmlkZWQgYXV0b21hdGljYWxseSBieSB0aGUgY29tcGlsZXJzLiBUaGUgbW9zdCByZW1hcmthYmxlIGNoYXJhY3RlcmlzdGljIG9mIFBML0MgaXMgaXRzIHBlcnNldmVyYW5jZSAtLS0gaXQgY29tcGxldGVzIHRyYW5zbGF0aW9uIG9mIGV2ZXJ5IHByb2dyYW0gc3VibWl0dGVkIGFuZCBjb250aW51ZXMgZXhlY3V0aW9uIHVudGlsIGEgdXNlci1lc3RhYmxpc2hlZCBlcnJvciBsaW1pdCBpcyByZWFjaGVkLiBUaGlzIHJlcXVpcmVzIHRoYXQgdGhlIGNvbXBpbGVyIHJlcGFpciBlcnJvcnMgZW5jb3VudGVyZWQgZHVyaW5nIGJvdGggdHJhbnNsYXRpb24gYW5kIGV4ZWN1dGlvbiwgYW5kIHRoZSBkZXNpZ24gb2YgUEwvQyBpcyBkb21pbmF0ZWQgYnkgdGhpcyBjb25zaWRlcmF0aW9uLiBQTC9DIGFsc28gaW50cm9kdWNlcyBzZXZlcmFsIGV4cGxpY2l0IHVzZXItY29udHJvbGxlZCBmYWNpbGl0aWVzIGZvciBwcm9ncmFtIHRlc3RpbmcuIFRvIGFjY29tbW9kYXRlIHRoZXNlIGV4dGVuc2lvbnMgdG8gUEwvSSB3aXRob3V0IGFiYW5kb25pbmcgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBJQk0gY29tcGlsZXIsIFBML0MgcGVybWl0cyBgYHBzZXVkbyBjb21tZW50cycnIC0tLSBjb25zdHJ1Y3Rpb25zIHdob3NlIGNvbnRlbnRzIGNhbiBvcHRpb25hbGx5IGJlIGNvbnNpZGVyZWQgZWl0aGVyIHNvdXJjZSB0ZXh0IG9yIGNvbW1lbnQuIEluIHNwaXRlIG9mIHRoZSBkaWFnbm9zdGljIGVmZm9ydCBQTC9DIGlzIGEgZmFzdCBhbmQgZWZmaWNpZW50IHByb2Nlc3Nvci4gSXQgZWZmZWN0aXZlbHkgZGVtb25zdHJhdGVzIHRoYXQgY29tcGlsZXJzIGNhbiBwcm92aWRlIGJldHRlciBkaWFnbm9zdGljIGFzc2lzdGFuY2UgdGhhbiBpcyBjdXN0b21hcmlseSBvZmZlcmVkLCBldmVuIHdoZW4gYSBzb3BoaXN0aWNhdGVkIHNvdXJjZSBsYW5ndWFnZSBpcyBlbXBsb3llZCwgYW5kIHRoYXQgdGhpcyBhc3Npc3RhbmNlIG5lZWQgbm90IGJlIHByb2hpYml0aXZlbHkgY29zdGx5LiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTQwRCAoSGlnaCBsZXZlbCBsYW5ndWFnZXMpOyBDNjE1MEMgKENvbXBpbGVycywgaW50ZXJwcmV0ZXJzIGFuZCBvdGhlciBwcm9jZXNzb3JzKTsgQzYxNTBHIChEaWFnbm9zdGljLCB0ZXN0aW5nLCBkZWJ1Z2dpbmcgYW5kIGV2YWx1YXRpbmcgc3lzdGVtcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIkNvcm5lbGwgVW5pdi4sIE5ZLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYmF0Y2ggcHJvY2Vzc2luZyBlbnZpcm9ubWVudDsgYmF0Y2gtcHJvY2Vzc2luZzsgY29tcHV0ZXIgb3BlcmF0aW5nIHN5c3RlbXM7IGNvbXB1dGVyIHByb2dyYW1taW5nIGxhbmd1YWdlcyAtLS0gUHJvZ3JhbSBEZWJ1Z2dpbmc7IGNvbXB1dGVyIHByb2dyYW1taW5nIGxhbmd1YWdlcyAtLS0gUHJvZ3JhbSBEaWFnbm9zdGljczsgZGVzaWduOyBkaWFnbm9zdGljIGNvbXBpbGVyOyBkaWFnbm9zdGljczsgaW1wbGVtZW50YXRpb247IFBMLzE7IFBML0M7IFBML0k7IHByb2dyYW07IHByb2dyYW0gY29tcGlsZXJzIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAogIHh4dGl0bGUgPSAgICAgICJEZXNpZ24gYW5kIGltcGxlbWVudGF0aW9uIG9mIGEgZGlhZ25vc3RpYyBjb21waWxlciBmb3Ige1BML0l9IiwKfQoKQEFydGljbGV7U2FsemVyOjE5NzM6R0NPLAogIGF1dGhvciA9ICAgICAgICJILiBFLiBTYWx6ZXIiLAogIHRpdGxlID0gICAgICAgICJ7R3JheX0gY29kZSBhbmQgdGhlICtvci1zaWduIHNlcXVlbmNlIHdoZW4gK29yLWYoK29yLWYoK29yLWYoIC4gLiArb3ItZih4KSAuIC4gLikpKSBpcyBvcmRlcmVkIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiMyIsCiAgcGFnZXMgPSAgICAgICAgIjE4MC0tMTgwIiwKICBtb250aCA9ICAgICAgICBtYXIsCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBub3RlID0gICAgICAgICAiQ2hlY2sgdGl0bGU/PyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTMwIChEYXRhIGhhbmRsaW5nIHRlY2huaXF1ZXMpIiwKICBrZXl3b3JkcyA9ICAgICAiYmluYXJ5IHNlcXVlbmNlczsgYmluYXJ5IHN5c3RlbTsgY29kZXM7IGZ1bmN0aW9uczsgR2Fsb2lzIHN1bTsgR3JheSBjb2RlOyBvcmRlcmluZzsgcG9zaXRpdmUgbW9ub3RvbmljOyBzaWduIHNlcXVlbmNlcyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7Qm9va3N0ZWluOjE5NzM6SFNULAogIGF1dGhvciA9ICAgICAgICJBYnJhaGFtIEJvb2tzdGVpbiIsCiAgdGl0bGUgPSAgICAgICAgIk9uIHtIYXJyaXNvbn0ncyBTdWJzdHJpbmcgVGVzdGluZyBUZWNobmlxdWUiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICIzIiwKICBwYWdlcyA9ICAgICAgICAiMTgwLS0xODEiLAogIG1vbnRoID0gICAgICAgIG1hciwKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIENoaWNhZ28sIElMLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJkYXRhIGhhbmRsaW5nOyBoYXNoaW5nOyBpbmZvcm1hdGlvbiBzdG9yYWdlOyByZXRyaWV2YWw7IHN1YnN0cmluZyB0ZXN0aW5nIHRlY2huaXF1ZSIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7UGF5bmU6MTk3MzpHRVAsCiAgYXV0aG9yID0gICAgICAgIlcuIEguIFBheW5lIiwKICB0aXRsZSA9ICAgICAgICAiR3JhZHVhdGUgRWR1Y2F0aW9uOiBUaGUge1BoLkQufSBHbHV0IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiMyIsCiAgcGFnZXMgPSAgICAgICAgIjE4MS0tMTgyIiwKICBtb250aCA9ICAgICAgICBtYXIsCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBub3RlID0gICAgICAgICAiU2VlIHJlc3BvbnNlIGFuZCByZWJ1dHRhbCBcY2l0ZXtGcmVlbWFuOjE5NzQ6R0VQfS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDMDIyMCAoQ29tcHV0aW5nIGVkdWNhdGlvbiBhbmQgdHJhaW5pbmcpIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gSWxsaW5vaXMsIFVyYmFuYS1DaGFtcGFpZ24sIElMLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJhY2NyZWRpdGF0aW9uOyBlZHVjYXRpb247IGdyYWR1YXRlIGVkdWNhdGlvbjsgUGguRC4gZ2x1dDsgUGguRC4gcHJvZHVjdGlvbiIsCiAgdHJlYXRtZW50ID0gICAgIkcgR2VuZXJhbCBSZXZpZXciLAp9CgpAQXJ0aWNsZXtXYWduZXI6MTk3MzpBQUEsCiAgYXV0aG9yID0gICAgICAgIlIuIEEuIFdhZ25lciIsCiAgdGl0bGUgPSAgICAgICAgIntBQ019IEFsZ29yaXRobSA0NDQ6IEFuIEFsZ29yaXRobSBmb3IgRXh0cmFjdGluZyBQaHJhc2VzIGluIGEgU3BhY2UtT3B0aW1hbCBGYXNoaW9uIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiMyIsCiAgcGFnZXMgPSAgICAgICAgIjE4My0tMTg1IiwKICBtb250aCA9ICAgICAgICBtYXIsCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMzAgKERhdGEgaGFuZGxpbmcgdGVjaG5pcXVlcykiLAogIGNvcnBzb3VyY2UgPSAgICJWYW5kZXJiaWx0IFVuaXYuLCBOYXNodmlsbGUsIFROLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJhbGdvcml0aG07IGNvZGluZzsgZGF0YSBoYW5kbGluZzsgZXh0cmFjdGluZyBwaHJhc2VzOyBpbmZvcm1hdGlvbiByZXRyaWV2YWw7IFBBUlNFOyBQTC9JOyBzdWJyb3V0aW5lczsgdGV4dCBjb21wcmVzc2lvbiIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7Q2hhbmc6MTk3MzpBQUIsCiAgYXV0aG9yID0gICAgICAgIlNoaS1LdW8gQ2hhbmciLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gNDQ1OiBCaW5hcnkgUGF0dGVybiBSZWNvbnN0cnVjdGlvbiBmcm9tIFByb2plY3Rpb25zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiMyIsCiAgcGFnZXMgPSAgICAgICAgIjE4NS0tMTg2IiwKICBtb250aCA9ICAgICAgICBtYXIsCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjYxNDBDIChPcHRpY2FsIGluZm9ybWF0aW9uLCBpbWFnZSBhbmQgdmlkZW8gc2lnbmFsIHByb2Nlc3NpbmcpOyBDMTI1MCAoUGF0dGVybiByZWNvZ25pdGlvbik7IEM3ODAwIChPdGhlciBjb21wdXRlciBhcHBsaWNhdGlvbnMpIiwKICBjb3Jwc291cmNlID0gICAiQ29ybmVsbCBVbml2LiwgSXRoYWNhLCBOWSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiQUxHT0w7IGJpbmFyeSBwYXR0ZXJuOyBjb21wcmVzc2lvbjsgZGF0YTsgcGljdHVyZSBwcm9jZXNzaW5nOyBwcm9qZWN0aW9uczsgcmVjb25zdHJ1Y3Rpb247IHN1YnJvdXRpbmVzIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWw7IFQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7TGF1OjE5NzM6QlBSLAogIGF1dGhvciA9ICAgICAgICJKLiBMYXUiLAogIHRpdGxlID0gICAgICAgICJCaW5hcnkgcGF0dGVybiByZWNvbnN0cnVjdGlvbiBmcm9tIHByb2plY3Rpb25zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiMyIsCiAgcGFnZXMgPSAgICAgICAgIjE4Ni0tMTg2IiwKICBtb250aCA9ICAgICAgICBtYXIsCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjYxNDBDIChPcHRpY2FsIGluZm9ybWF0aW9uLCBpbWFnZSBhbmQgdmlkZW8gc2lnbmFsIHByb2Nlc3NpbmcpOyBDMTI1MCAoUGF0dGVybiByZWNvZ25pdGlvbik7IEM3ODAwIChPdGhlciBjb21wdXRlciBhcHBsaWNhdGlvbnMpIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gQnJpdGlzaCBDb2x1bWJpYSwgVmFuY291dmVyLCBCQywgQ2FuYWRhIiwKICBrZXl3b3JkcyA9ICAgICAiQUxHT0w7IGJpbmFyeSBwYXR0ZXJuIHJlY29uc3RydWN0aW9uOyBjb21wcmVzc2lvbjsgZGF0YTsgcGljdHVyZSBwcm9jZXNzaW5nOyBwcm9qZWN0aW9uczsgc3Vicm91dGluZXMiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbDsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtIYXNzaXR0OjE5NzM6SUhMLAogIGF1dGhvciA9ICAgICAgICJBLiBIYXNzaXR0IGFuZCBKLiBXLiBMYWdlc2NodWx0ZSBhbmQgTC4gRS4gTHlvbiIsCiAgdGl0bGUgPSAgICAgICAgIkltcGxlbWVudGF0aW9uIG9mIGEgSGlnaCBMZXZlbCBMYW5ndWFnZSBNYWNoaW5lIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiNCIsCiAgcGFnZXMgPSAgICAgICAgIjE5OS0tMjEyIiwKICBtb250aCA9ICAgICAgICBhcHIsCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiQ29tcHV0aW5nIG1hY2hpbmVzIHdoaWNoIGRpcmVjdGx5IGV4ZWN1dGUgdGhlIHN0YXRlbWVudHMgb2YgYSBoaWdoIGxldmVsIGxhbmd1YWdlIGhhdmUgYmVlbiBwcm9wb3NlZCBpbiB0aGUgcGFzdC4gVGhpcyByZXBvcnQgZGVzY3JpYmVzIHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24gb2Ygc3VjaCBhIG1hY2hpbmU6IGl0IGlzIGEgY29tcHV0ZXIgd2hvc2UgYGBtYWNoaW5lIGxhbmd1YWdlJycgaXMgQVBMLiBUaGUgbWFjaGluZSBpcyBmdWxseSBvcGVyYXRpb25hbCBhbmQgY29ycmVjdGx5IGV4ZWN1dGVzIGFsbW9zdCBhbGwgb2YgdGhlIEFQTCBvcGVyYXRpb25zIG9uIHNjYWxhcnMsIHZlY3RvcnMsIGFuZCBhcnJheXMuIFRoZSBtYWNoaW5lIGF1dG9tYXRpY2FsbHkgYWxsb2NhdGVzIG1lbW9yeSwgZXhlY3V0ZXMgc3RhdGVtZW50cywgY2FsbHMgZnVuY3Rpb25zLCBjb252ZXJ0cyBudW1iZXJzIGZyb20gb25lIHR5cGUgdG8gYW5vdGhlciwgY2hlY2tzIHN1YnNjcmlwdHMsIGFuZCBhdXRvbWF0aWNhbGx5IGRldGVjdHMgbWFueSB0eXBlcyBvZiBwcm9ncmFtbWVyIGVycm9ycy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNTIyMCAoQ29tcHV0ZXIgYXJjaGl0ZWN0dXJlKTsgQzYxNDBEIChIaWdoIGxldmVsIGxhbmd1YWdlcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIklCTSBQYWxvIEFsdG8sIENBLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiQVBMOyBjb21wdXRlciBhcmNoaXRlY3R1cmU7IGNvbXB1dGVyIG9wZXJhdGluZyBzeXN0ZW1zIC0tLSBQcm9ncmFtIENvbXBpbGVyczsgY29tcHV0ZXIgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzOyBjb21wdXRpbmcgbWFjaGluZXM7IGVtdWxhdG9yczsgaGlnaCBsZXZlbCBsYW5ndWFnZTsgaGlnaCBsZXZlbCBsYW5ndWFnZSBtYWNoaW5lOyBpbXBsZW1lbnRhdGlvbjsgaW50ZXJwcmV0ZXJzOyBtaWNyb3Byb2dyYW1taW5nOyBwcm9jZWR1cmUgb3JpZW50ZWQgbGFuZ3VhZ2VzIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtXaWxsaWFtczoxOTczOkFNSCwKICBhdXRob3IgPSAgICAgICAiSm9obiBHLiBXaWxsaWFtcyIsCiAgdGl0bGUgPSAgICAgICAgIkFzeW1tZXRyaWMgTWVtb3J5IEhpZXJhcmNoaWVzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiNCIsCiAgcGFnZXMgPSAgICAgICAgIjIxMy0tMjIyIiwKICBtb250aCA9ICAgICAgICBhcHIsCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2OEE1MCIsCiAgTVJudW1iZXIgPSAgICAgIjUxIDIzNzgiLAogIG1ycmV2aWV3ZXIgPSAgICJJLiBLYXVmbWFubiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvTWlzYy9zdG9yYWdlLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIkEgc3R1ZHkgaXMgcHJlc2VudGVkIG9mIHNvbWUgb2YgdGhlIHN5c3RlbSBpbXBsaWNhdGlvbnMgb2YgbWVtb3J5IGhpZXJhcmNoaWVzIGluIHdoaWNoIHRoZSBiYWNraW5nIG9yIHNlY29uZGFyeSBzdG9yZSBoYXMgYSB2ZXJ5IHNtYWxsIHJlYWQgdGltZSwgcmVsYXRpdmUgb2YgYm90aCB0aGUgdGltZSByZXF1aXJlZCBmb3Igd3JpdGluZyBhbmQgdG8gdGhlIHJlYWQgdGltZSBvZiBjb252ZW50aW9uYWwgYmFja2luZyBzdG9yYWdlIGRldmljZXMuIFNldmVyYWwgYW5hbHl0aWMgbW9kZWxzIGFyZSBpbnRyb2R1Y2VkLCBhbmQgaXQgaXMgc2hvd24gdGhhdCBzdWNoIGhpZXJhcmNoaWVzIG1heSBvcGVyYXRlIGluIHdheXMgd2hpY2ggZGlmZmVyIGZyb20gdGhvc2Ugb2YgbW9yZSBjb252ZW50aW9uYWwgaGllcmFyY2hpZXMuIEluIHBhcnRpY3VsYXIsIGl0IGlzIHNob3duIHRoYXQgaXQgbWF5IG5vdCBiZSBuZWNlc3NhcnkgdG8gbXVsdGlwcm9ncmFtIGluIHN1Y2ggYSBzaXR1YXRpb24uIFxwYXIgSW4gdGhlIHBhc3QsIGJhY2tpbmcgc3RvcmFnZSBkZXZpY2VzIGhhdmUgYmVlbiByb3VnaGx5IHN5bW1ldHJpYyB3aXRoIHJlc3BlY3QgdG8gdGhlaXIgcmVhZCBhbmQgd3JpdGUgdGltZXMuIFRoaXMgc2l0dWF0aW9uIG1heSBub3QgY29udGludWUsIGFzIHNldmVyYWwgZGV2aWNlcyBhcmUgY3VycmVudGx5IHVuZGVyIGRldmVsb3BtZW50IHdoaWNoIG1heSBoYXZlIGEgdmVyeSBzbWFsbCByZWFkLXRpbWUvd3JpdGUtdGltZSByYXRpby4gVGhpcyBzdHVkeSBwbGFjZXMgcGFydGljdWxhciBlbXBoYXNpcyBvbiBvbmUgc3VjaCBzeXN0ZW0tdGhlIFJDQSByZWFkL3dyaXRlIGhvbG9ncmFwaGljIG9wdGljYWwgbWVtb3J5LiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM1MzIwWiAoT3RoZXIgZGlnaXRhbCBzdG9yYWdlKTsgQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIyOyA3MjM7IDc0MSIsCiAgY29ycHNvdXJjZSA9ICAgIlJDQSwgUHJpbmNldG9uLCBOSiwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFzeW1tZXRyaWMgbWVtb3J5OyBhc3ltbWV0cmljIG1lbW9yeSBoaWVyYXJjaGllczsgYXN5bW1ldHJpYyBtZW1vcnkgaGllcmFyY2h5OyBjb21wdXRlciBzeXN0ZW1zIHByb2dyYW1taW5nIC0tLSBNdWx0aXByb2dyYW1taW5nOyBkYXRhIHN0b3JhZ2UsIG9wdGljYWw7IGRlbWFuZCBwYWdpbmc7IGZpbGUgb3JnYW5pc2F0aW9uOyBob2xvZ3JhcGhpYzsgaG9sb2dyYXBoaWMgb3B0aWNhbCBtZW1vcnk7IGhvbG9ncmFwaHk7IG1lbW9yeSBkZXZpY2U7IG1lbW9yeSBoaWVyYXJjaHk7IG9wdGljYWwgbWVtb3J5OyBvcHRpY2FsIHN0b3JlczsgcGFnaW5nOyBQZXJmb3JtYW5jZSBFdmFsdWF0aW9uOiBBbmFseXRpYzsgc3RvcmFnZSBkZXZpY2U7IHN0b3JhZ2UgaGllcmFyY2h5OyB2aXJ0dWFsIG1lbW9yeSIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7S3VraToxOTczOlNTQSwKICBhdXRob3IgPSAgICAgICAiSC4gS3VraSBhbmQgVy4gSi4gQ29keSIsCiAgdGl0bGUgPSAgICAgICAgIkEgU3RhdGlzdGljYWwgU3R1ZHkgb2YgdGhlIEFjY3VyYWN5IG9mIEZsb2F0aW5nIFBvaW50IE51bWJlciBTeXN0ZW1zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiNCIsCiAgcGFnZXMgPSAgICAgICAgIjIyMy0tMjMwIiwKICBtb250aCA9ICAgICAgICBhcHIsCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2OEEyMCAoNjVHMDUpIiwKICBNUm51bWJlciA9ICAgICAiNTEgMjM0NCIsCiAgbXJyZXZpZXdlciA9ICAgIkkuIEthdWZtYW5uIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZ2FyYm8udXdhc2EuZmk6L3BjL2RvYy1zb2Z0L2ZwYmlibGlvLnR4dCIsCiAgYWJzdHJhY3QgPSAgICAgIlRoaXMgcGFwZXIgcHJlc2VudHMgdGhlIHN0YXRpc3RpY2FsIHJlc3VsdHMgb2YgdGVzdHMgb2YgdGhlIGFjY3VyYWN5IG9mIGNlcnRhaW4gYXJpdGhtZXRpYyBzeXN0ZW1zIGluIGV2YWx1YXRpbmcgc3VtcywgcHJvZHVjdHMgYW5kIGlubmVyIHByb2R1Y3RzLCBhbmQgYW5hbHl0aWMgZXJyb3IgZXN0aW1hdGVzIGZvciBzb21lIG9mIHRoZSBjb21wdXRhdGlvbnMuIFRoZSBhcml0aG1ldGljIHN5c3RlbXMgc3R1ZGllZCBhcmUgNi1kaWdpdCBoZXhhZGVjaW1hbCBhbmQgMjItZGlnaXQgYmluYXJ5IGZsb2F0aW5nIHBvaW50IG51bWJlciByZXByZXNlbnRhdGlvbnMgY29tYmluZWQgd2l0aCB0aGUgdXN1YWwgY2hvcCBhbmQgcm91bmQgbW9kZXMgb2YgYXJpdGhtZXRpYyB3aXRoIHZhcmlvdXMgbnVtYmVycyBvZiBndWFyZCBkaWdpdHMsIGFuZCB3aXRoIGEgbW9kaWZpZWQgcm91bmQgbW9kZSB3aXRoIGd1YXJkIGRpZ2l0cy4gSW4gYSBjZXJ0YWluIHNlbnNlLCBhcml0aG1ldGljIHN5c3RlbXMgZGlmZmVyaW5nIG9ubHkgaW4gdGhlaXIgdXNlIG9mIGJpbmFyeSBvciBoZXhhZGVjaW1hbCBudW1iZXIgcmVwcmVzZW50YXRpb25zIGFyZSBzaG93biB0byBiZSBhcHByb3hpbWF0ZWx5IHN0YXRpc3RpY2FsbHkgZXF1aXZhbGVudCBpbiBhY2N1cmFjeS4gRnVydGhlciwgdGhlIHVzdWFsIHJvdW5kIG1vZGUgd2l0aCBndWFyZCBkaWdpdHMgaXMgc2hvd24gdG8gYmUgc3RhdGlzdGljYWxseSBzdXBlcmlvciBpbiBhY2N1cmFjeSB0byB0aGUgdXN1YWwgY2hvcCBtb2RlIGluIGFsbCBjYXNlcyBzYXZlIG9uZS4gVGhlIG1vZGlmaWVkIHJvdW5kIG1vZGUgaXMgZm91bmQgdG8gYmUgc3VwZXJpb3IgdG8gdGhlIGNob3AgbW9kZSBpbiBhbGwgY2FzZXMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiAjICIgYW5kICIgIyBhY2stbmosCiAgY2xhc3Njb2RlcyA9ICAgIkM1MjMwIChEaWdpdGFsIGFyaXRobWV0aWMgbWV0aG9kcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIENoaWNhZ28sIElMLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYWNjdXJhY3k7IGFyaXRobWV0aWM7IGNvbXB1dGVyIHByb2dyYW1taW5nOyBkaWdpdGFsIGFyaXRobWV0aWM7IGVycm9yIGFuYWx5c2lzOyBmbG9hdGluZyBwb2ludCBhcml0aG1ldGljOyBmbG9hdGluZyBwb2ludCBudW1iZXIgc3lzdGVtczsgZ3VhcmQgZGlnaXRzOyBudW1iZXIgcmVwcmVzZW50YXRpb247IHJvdW5kaW5nOyBzdGF0aXN0aWNhbCBzdHVkeSIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7QnVya2hhcmQ6MTk3MzpTQUIsCiAgYXV0aG9yID0gICAgICAgIlcuIEEuIEJ1cmtoYXJkIGFuZCBSLiBNLiBLZWxsZXIiLAogIHRpdGxlID0gICAgICAgICJTb21lIEFwcHJvYWNoZXMgdG8gQmVzdC1NYXRjaCBGaWxlIFNlYXJjaGluZyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNiIsCiAgbnVtYmVyID0gICAgICAgIjQiLAogIHBhZ2VzID0gICAgICAgICIyMzAtLTIzNiIsCiAgbW9udGggPSAgICAgICAgYXByLAogIHllYXIgPSAgICAgICAgICIxOTczIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9HcmFwaGljcy9zaWdncmFwaC9wcmU3NS5iaWIiLAogIGFic3RyYWN0ID0gICAgICJUaGUgcHJvYmxlbSBvZiBzZWFyY2hpbmcgdGhlIHNldCBvZiBrZXlzIGluIGEgZmlsZSB0byBmaW5kIGEga2V5IHdoaWNoIGlzIGNsb3Nlc3QgdG8gYSBnaXZlbiBxdWVyeSBrZXkgaXMgZGlzY3Vzc2VkLiBBZnRlciBgYGNsb3Nlc3QnJywgaW4gdGVybXMgb2YgYSBtZXRyaWMgb24gdGhlIGtleSBzcGFjZSwgaXMgc3VpdGFibHkgZGVmaW5lZCwgdGhyZWUgZmlsZSBzdHJ1Y3R1cmVzIGFyZSBwcmVzZW50ZWQgdG9nZXRoZXIgd2l0aCB0aGVpciBjb3JyZXNwb25kaW5nIHNlYXJjaCBhbGdvcml0aG1zLCB3aGljaCBhcmUgaW50ZW5kZWQgdG8gcmVkdWNlIHRoZSBudW1iZXIgb2YgY29tcGFyaXNvbnMgcmVxdWlyZWQgdG8gYWNoaWV2ZSB0aGUgZGVzaXJlZCByZXN1bHQuIFRoZXNlIG1ldGhvZHMgYXJlIGRlcml2ZWQgdXNpbmcgY2VydGFpbiBpbmVxdWFsaXRpZXMgc2F0aXNmaWVkIGJ5IG1ldHJpY3MgYW5kIGJ5IGdyYXBoLXRoZW9yZXRpYyBjb25jZXB0cy4gU29tZSBlbXBpcmljYWwgcmVzdWx0cyBhcmUgcHJlc2VudGVkIHdoaWNoIGNvbXBhcmUgdGhlIGVmZmljaWVuY3kgb2YgdGhlIG1ldGhvZHMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzOyA5MDEiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBDYWxpZm9ybmlhLCBTYW4gRGllZ28sIENBLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYmVzdCBtYXRjaDsgZGF0YSBwcm9jZXNzaW5nOyBmaWxlIG9yZ2FuaXNhdGlvbjsgZmlsZSBzZWFyY2hpbmc7IGZpbGUgc3RydWN0dXJpbmc7IGhldXJpc3RpY3M7IGluZm9ybWF0aW9uIHJldHJpZXZhbCBzeXN0ZW1zIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtTdHJvbmc6MTk3MzpSQ1QsCiAgYXV0aG9yID0gICAgICAgIkphbWVzIFAuIHtTdHJvbmcsIElJSX0gYW5kIEF6cmllbCBSb3NlbmZlbGQiLAogIHRpdGxlID0gICAgICAgICJBIHJlZ2lvbiBjb2xvcmluZyB0ZWNobmlxdWUgZm9yIHNjZW5lIGFuYWx5c2lzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiNCIsCiAgcGFnZXMgPSAgICAgICAgIjIzNy0tMjQ2IiwKICBtb250aCA9ICAgICAgICBhcHIsCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiQSBtZXRob2Qgb2YgY29udmVydGluZyBhIHBpY3R1cmUgaW50byBhIGBgY2FydG9vbicnIG9yIGBgbWFwJycgd2hvc2UgcmVnaW9ucyBjb3JyZXNwb25kIHRvIGRpZmZlcmVudGx5IHRleHR1cmVkIHJlZ2lvbnMgaXMgZGVzY3JpYmVkLiBUZXh0dXJlIGVkZ2VzIGluIHRoZSBwaWN0dXJlIGFyZSBkZXRlY3RlZCwgYW5kIHNvbGlkIHJlZ2lvbnMgc3Vycm91bmRlZCBieSB0aGVzZSAodXN1YWxseSBicm9rZW4pIGVkZ2VzIGFyZSBgYGNvbG9yZWQgaW4nJyB1c2luZyBhIHByb3BhZ2F0aW9uIHByb2Nlc3MuIFRoZSByZXN1bHRpbmcgbWFwIGlzIGNsZWFuZWQgYnkgY29tcGFyaW5nIHRoZSByZWdpb24gY29sb3JzIHdpdGggdGhlIHRleHR1cmVzIG9mIHRoZSBjb3JyZXNwb25kaW5nIHJlZ2lvbnMgaW4gdGhlIHBpY3R1cmUsIGFuZCBhbHNvIGJ5IG1lcmdpbmcgc29tZSByZWdpb25zIHdpdGggb3RoZXJzIGFjY29yZGluZyB0byBjcml0ZXJpYSBiYXNlZCBvbiB0b3BvbG9neSBhbmQgc2l6ZS4gVGhlIG1ldGhvZCBoYXMgYmVlbiBhcHBsaWVkIHRvIHRoZSBjb25zdHJ1Y3Rpb24gb2YgY291bGQgY292ZXIgbWFwcyBmcm9tIGNsb3VkIGNvdmVyIHBpY3R1cmVzIG9idGFpbmVkIGJ5IHNhdGVsbGl0ZXMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzU1NDAgKFRlcm1pbmFscyBhbmQgZ3JhcGhpYyBkaXNwbGF5cykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjQwNTsgNzIzOyA3NDEiLAogIGNvcnBzb3VyY2UgPSAgICJOQVNBLCBHcmVlbmJlbHQsIE1ELCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgZ3JhcGhpY3M7IGRhdGEgcHJvY2Vzc2luZyAtLS0gTmF0dXJhbCBTY2llbmNlcyBBcHBsaWNhdGlvbnM7IGVkZ2UgZGV0ZWN0aW9uOyBtYXBzIGFuZCBtYXBwaW5nOyBwYXR0ZXJuIHJlY29nbml0aW9uIHN5c3RlbXM7IHBpY3R1cmU7IHBpY3R1cmUgcHJvY2Vzc2luZzsgcHJvY2Vzc2luZzsgcmVnaW9uIGNvbG91cmluZyB0ZWNobmlxdWU7IHNjZW5lIGFuYWx5c2lzIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtSb2RyaWd1ZXotUm9zZWxsOjE5NzM6RElFLAogIGF1dGhvciA9ICAgICAgICJKdWFuIFJvZHJpZ3Vlei1Sb3NlbGwgYW5kIEplYW4tUGllcnJlIER1cHV5IiwKICB0aXRsZSA9ICAgICAgICAiVGhlIGRlc2lnbiwgaW1wbGVtZW50YXRpb24sIGFuZCBldmFsdWF0aW9uIG9mIGEgd29ya2luZyBzZXQgZGlzcGF0Y2hlciIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNiIsCiAgbnVtYmVyID0gICAgICAgIjQiLAogIHBhZ2VzID0gICAgICAgICIyNDctLTI1MyIsCiAgbW9udGggPSAgICAgICAgYXByLAogIHllYXIgPSAgICAgICAgICIxOTczIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlRoZSBiZWhhdmlvciBvZiBhIGNvbXB1dGVyIHN5c3RlbSBpcyBsYXJnZWx5IGRlcGVuZGVudCB1cG9uIHRoZSBhbGdvcml0aG0gZW1wbG95ZWQgdG8gYWxsb2NhdGUgdGhlIHN5c3RlbSByZXNvdXJjZXMgdG8gdGhlIHByb2Nlc3NlcyBjb21wZXRpbmcgZm9yIHRoZW0uIFJlY2VudCByZXNlYXJjaCBpbiB0aW1lLXNoYXJpbmcgcGFnaW5nIHN5c3RlbXMgaGFzIGRldmVsb3BlZCB0aGUgd29ya2luZyBzZXQgbW9kZWwgZm9yIHByb2dyYW0gYmVoYXZpb3IsIGFuZCBhIHJlc291cmNlIGFsbG9jYXRpb24gc3RyYXRlZ3kgYmFzZWQgb24gdGhpcyBtb2RlbCBoYXMgYmVlbiBwcm9wb3NlZC4gVHdvIGltcGxlbWVudGF0aW9ucyBhbG9uZyB0aGVzZSBwcmluY2lwbGVzIGhhdmUgYmVlbiByZXBvcnRlZCwgYnV0IGl0IHNlZW1zIHRoYXQgaW4gbmVpdGhlciBjYXNlIGhhdmUgZnVydGhlciByZXN1bHRzIGJlZW4gYW5ub3VuY2VkLiBUaGlzIHJlcG9ydCBkaXNjdXNzZXMgdGhlIGRlc2lnbiBhbmQgaW1wbGVtZW50YXRpb24gb2YgYSBkaXNwYXRjaGVyIGJhc2VkIG9uIHRoZSB3b3JraW5nIHNldCBwcmluY2lwbGUsIHByZXNlbnRzIGRhdGEgdG8gcGVybWl0IGFuYWx5c2lzIG9mIGl0cyBiZWhhdmlvciwgYW5kIGluZGljYXRlcyBmdXR1cmUgZGlyZWN0aW9ucyBvZiByZXNlYXJjaCBvbiBtZXRob2RzIG9mIGNvbnRyb2xsaW5nIGEgY29tcHV0ZXIgc3lzdGVtLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTUwSiAoT3BlcmF0aW5nIHN5c3RlbXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjI7IDcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlJveWFsIEluc3QuIFRlY2hub2wuLCBTdG9ja2hvbG0sIFN3ZWRlbiIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBzeXN0ZW1zLCBkaWdpdGFsOyBjb21wdXRlcnMgLS0tIE9wZXJhdGluZyBQcm9jZWR1cmVzOyBkZXNpZ247IGV2YWx1YXRpb247IGltcGxlbWVudGF0aW9uOyBvcGVyYXRpbmcgc3lzdGVtczsgcmVzb3VyY2UgYWxsb2NhdGlvbjsgc2NoZWR1bGVyOyBzb2Z0d2FyZSBldmFsdWF0aW9uOyBzdXBlcnZpc29yeSBhbmQgZXhlY3V0aXZlIHByb2dyYW1zOyBzdXBlcnZpc29yeSBzeXN0ZW1zOyB0aW1lIHNoYXJpbmc7IHRpbWUtc2hhcmluZyBzeXN0ZW1zOyB3b3JraW5nIHNldDsgd29ya2luZyBzZXQgZGlzcGF0Y2hlciIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKICB4eHRpdGxlID0gICAgICAiRGVzaWduLCBJbXBsZW1lbnRhdGlvbiwgYW5kIEV2YWx1YXRpb24gb2YgV29ya2luZyBTZXQgRGlzcGF0Y2hlciIsCn0KCkBBcnRpY2xle0Jyb3Vja2U6MTk3MzpBQVQsCiAgYXV0aG9yID0gICAgICAgIlIuIEJyb3Vja2UiLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gNDQ2OiBUZW4gU3Vicm91dGluZXMgZm9yIHRoZSBNYW5pcHVsYXRpb24gb2Yge0NoZWJ5c2hldn0gU2VyaWVzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiNCIsCiAgcGFnZXMgPSAgICAgICAgIjI1NC0tMjU2IiwKICBtb250aCA9ICAgICAgICBhcHIsCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjAyOTBGIChJbnRlcnBvbGF0aW9uIGFuZCBmdW5jdGlvbiBhcHByb3hpbWF0aW9uKTsgQzQxMzAgKEludGVycG9sYXRpb24gYW5kIGZ1bmN0aW9uIGFwcHJveGltYXRpb24pOyBDNzMxMCAoTWF0aGVtYXRpY3MgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIENhbGlmb3JuaWEsIExvcyBBbmdlbGVzLCBDQSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiYXBwcm94aW1hdGlvbnM7IENoZWJ5c2hldiBhcHByb3hpbWF0aW9uOyBDaGVieXNoZXYgc2VyaWVzOyBjdXJ2ZSBmaXR0aW5nOyBNYW5pcHVsYXRpb247IG5lZ2F0aXZlIHBvd2Vyczsgc2VyaWVzIChtYXRoZW1hdGljcyk7IHN1YnJvdXRpbmVzIiwKfQoKQEFydGljbGV7UmFnbGFuZDoxOTczOkdDRCwKICBhdXRob3IgPSAgICAgICAiTC4gQy4gUmFnbGFuZCBhbmQgRC4gSS4gR29vZCIsCiAgdGl0bGUgPSAgICAgICAgIkdyZWF0ZXN0IGNvbW1vbiBkaXZpc29yIG9mICRuJCBpbnRlZ2VycyBhbmQgbXVsdGlwbGllcnMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICI0IiwKICBwYWdlcyA9ICAgICAgICAiMjU3LS0yNTciLAogIG1vbnRoID0gICAgICAgIGFwciwKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNTIzMCAoRGlnaXRhbCBhcml0aG1ldGljIG1ldGhvZHMpIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gVGV4YXMsIEF1c3RpbiwgVFgsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgIkV1Y2xpZGVhbiBhbGdvcml0aG07IGdyZWF0ZXN0IGNvbW1vbiBkaXZpc29yOyBpbmR1Y3RpdmUgYXNzZXJ0aW9uIG1ldGhvZDsgaW50ZWdlcnM7IG11bHRpcGxpZXJzOyBudW1iZXIgdGhlb3J5OyBwcm9vZiBvZiBhbGdvcml0aG1zIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtQYWdlcjoxOTczOlBDQywKICBhdXRob3IgPSAgICAgICAiRGF2aWQgUGFnZXIiLAogIHRpdGxlID0gICAgICAgICJPbiB0aGUgUHJvYmxlbSBvZiBDb21tdW5pY2F0aW5nIENvbXBsZXggSW5mb3JtYXRpb24iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICI1IiwKICBwYWdlcyA9ICAgICAgICAiMjc1LS0yODEiLAogIG1vbnRoID0gICAgICAgIG1heSwKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJUaGUgbmF0dXJlIG9mIHRoZSBkaWZmaWN1bHR5IGludm9sdmVkIGluIGNvbW11bmljYXRpbmcgbWF0aGVtYXRpY2FsIHJlc3VsdHMgYmV0d2VlbiBzY2llbnRpc3RzIHVzaW5nIGEgY29tcHV0ZXIgYmFzZWQgaW5mb3JtYXRpb24gcmV0cmlldmFsIHN5c3RlbSBpcyBleGFtaW5lZC4gVGhlIHByb2JsZW0gaXMgYW5hbHl6ZWQgaW4gdGVybXMgb2YgcHN5Y2hvbG9naWNhbCBhbmQgaW5mb3JtYXRpb24tcHJvY2Vzc2luZyBwcm9jZXNzZXMsIGFuZCB3aGF0IHR1cm5zIG91dCB0byBiZSBhIHZpY2lvdXMgY2lyY2xlIG9mIGVmZmVjdHMgaXMgZGVzY3JpYmVkLiBUaGUgcGFwZXIgdGhlbiBjb25zaWRlcnMgaG93IHRoZSBwcmVzZW50YXRpb24gb2YgaW5mb3JtYXRpb24gYnkgYSBjb21wdXRlci1iYXNlZCBpbmZvcm1hdGlvbiByZXRyaWV2YWwgc3lzdGVtLCBvciBieSBvdGhlciBtZWRpYSwgY2FuIGJlIGltcHJvdmVkLiBTb21lIHRyYWRlLW9mZnMgd2hpY2ggYWZmZWN0IHRoZSBkZXNpZ24gb2YgdGhlIHByZXNlbnRhdGlvbiBhcmUgbWVudGlvbmVkLCBhbmQgYSBudW1iZXIgb2YgaWRlYXMgZm9yIGltcHJvdmVtZW50IGFyZSBkZXNjcmliZWQuIFRoZXNlIGluY2x1ZGUgd2F5cyBvZiBhdWdtZW50aW5nIHdyaXR0ZW4gbGFuZ3VhZ2UgYnkgdmFyaW91cyBub3RhdGlvbmFsIGFuZCBsaW5ndWlzdGljIGRldmljZXMsIHRoZSBleGhpYml0aW9uIG9mIHRoZSBzdHJ1Y3R1cmUgaW5oZXJlbnQgaW4gdGhlIGluZm9ybWF0aW9uIHRoZSBhdXRob3JzIGFyZSBjb21tdW5pY2F0aW5nLCBhbmQgYSBzb3BoaXN0aWNhdGVkIGludGVyYWN0aXZlIHN5c3RlbSBjb250cm9sbGVkIGJ5IGNvbXB1dGVyLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM3MjUwIChJbmZvcm1hdGlvbiBzdG9yYWdlIGFuZCByZXRyaWV2YWwpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjM7IDkwMSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIEhhd2FpaSwgSG9ub2x1bHUsIEhJLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tbXVuaWNhdGlvbjsgY29tcGxleCBpbmZvcm1hdGlvbjsgY29tcHV0ZXIgYmFzZWQgaW5mb3JtYXRpb24gcmV0cmlldmFsOyBjb21wdXRlcnMgLS0tIERhdGEgQ29tbXVuaWNhdGlvbiBTeXN0ZW1zOyBpbmZvcm1hdGlvbjsgaW5mb3JtYXRpb24gcmV0cmlldmFsIHN5c3RlbXM7IGluZm9ybWF0aW9uIHNjaWVuY2UgLS0tIEluZm9ybWF0aW9uIFJldHJpZXZhbDsgaW50ZXJhY3RpdmUgc3lzdGVtOyBsYW5ndWFnZTsgbWF0aGVtYXRpY3M7IHByb29mOyBwc3ljaG9sb2d5OyBzeXN0ZW0iLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0xvdzoxOTczOlBRRSwKICBhdXRob3IgPSAgICAgICAiRGF2aWQgVy4gTG93IiwKICB0aXRsZSA9ICAgICAgICAiUHJvZ3JhbW1pbmcgYnkgUXVlc3Rpb25uYWlyZTogYW4gRWZmZWN0aXZlIFdheSB0byBVc2UgRGVjaXNpb24gVGFibGVzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiNSIsCiAgcGFnZXMgPSAgICAgICAgIjI4Mi0tMjg2IiwKICBtb250aCA9ICAgICAgICBtYXksCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiUHJvZ3JhbW1pbmcgYnkgcXVlc3Rpb25uYWlyZSBjb21iaW5lcyBhc3BlY3RzIG9mIGRlY2lzaW9uIHRhYmxlIHByb2dyYW1taW5nIGFuZCBnZW5lcmFsIHB1cnBvc2UgcHJvZ3JhbW1pbmcgYnkgdXNpbmcgZGVjaXNpb24gdGFibGVzIHRvIGNvbnN0cnVjdCBhbiBhcHBsaWNhdGlvbiBwcm9ncmFtIHRocm91Z2ggdGhlIHNlbGVjdGlvbiBvZiBjZXJ0YWluIHNvdXJjZSBzdGF0ZW1lbnRzIGZyb20gYSBwcmVkZWZpbmVkIGZpbGUuIEl0IGlzIHByb3Bvc2VkIHRoYXQgcHJvZ3JhbW1pbmcgYnkgcXVlc3Rpb25uYWlyZSBpcyBhIHVzZWZ1bCBjb21wcm9taXNlIGJldHdlZW4gZ2VuZXJhbCBhbmQgc3BlY2lhbCBwdXJwb3NlIHByb2dyYW1taW5nIGZvciBhIHNpZ25pZmljYW50IGNsYXNzIG9mIGxhcmdlIHNjYWxlIHByb2JsZW1zLiBUaGUgZWxlbWVudHMgb2YgdGhlIGFwcHJvYWNoIGFyZSBkaXNjdXNzZWQgYW5kIGFuIGV4aXN0aW5nIGFwcGxpY2F0aW9uIGlzIGRlc2NyaWJlZC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjExMCAoU3lzdGVtcyBhbmFseXNpcyBhbmQgcHJvZ3JhbW1pbmcpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJJQk0gQ29ycC4sIExvcyBBbmdlbGVzLCBDQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImF1dG9tYXRpYyBwcm9ncmFtOyBhdXRvbWF0aWMgcHJvZ3JhbSBnZW5lcmF0aW9uOyBjb21wdXRlciBzeXN0ZW1zIHByb2dyYW1taW5nOyBkZWNpc2lvbiB0YWJsZXM7IGdlbmVyYXRpb247IHByb2R1Y3Rpdml0eTsgcHJvZ3JhbW1lcjsgcHJvZ3JhbW1pbmc7IHF1ZXN0aW9ubmFpcmU7IHNpbXVsYXRvciBnZW5lcmF0aW9uIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtLaW5nOjE5NzM6U0NVLAogIGF1dGhvciA9ICAgICAgICJQLiBKLiBILiBLaW5nIGFuZCBSLiBHLiBKb2huc29uIiwKICB0aXRsZSA9ICAgICAgICAiU29tZSBDb21tZW50cyBvbiB0aGUgVXNlIG9mIEFtYmlndW91cyBEZWNpc2lvbiBUYWJsZXMgYW5kIFRoZWlyIENvbnZlcnNpb24gdG8gQ29tcHV0ZXIgUHJvZ3JhbXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICI1IiwKICBwYWdlcyA9ICAgICAgICAiMjg3LS0yOTAiLAogIG1vbnRoID0gICAgICAgIG1heSwKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJUaGlzIHBhcGVyIGNvbW1lbnRzIHVwb24gcmVjZW50bHkgcHVibGlzaGVkIHdvcmsgb24gZGVjaXNpb24gdGFibGUgdHJhbnNsYXRpb24gdXNpbmcgbWV0aG9kcyBzaW1pbGFyIHRvIHJ1bGUtbWFzayB0ZWNobmlxdWUuIFRoZSBhcHBsaWNhYmlsaXR5IG9mIHRoZXNlIG1ldGhvZHMgdW5kZXIgdmFyaW91cyBwb3NzaWJsZSBjb252ZW50aW9ucyBvbiBvdmVyYWxsIHRhYmxlIG1lYW5pbmcgaXMgZGlzY3Vzc2VkLCBhbmQgaXQgaXMgYXJndWVkIHRoYXQgdGhlcmUgaXMgYSBwbGFjZSBib3RoIGZvciB0aGUgbXVsdGktcnVsZSBhbmQgdGhlIHNpbmdsZS1ydWxlIChvciBhY3Rpb24gc2V0KSBjb252ZW50aW9uIGluIGRlY2lzaW9uIHRhYmxlIHVzYWdlLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTEwIChTeXN0ZW1zIGFuYWx5c2lzIGFuZCBwcm9ncmFtbWluZykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIkJpcmJlY2sgQ29sbC4sIFVuaXYuIExvbmRvbiwgVUsiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgcHJvZ3JhbXM7IGNvbXB1dGVyIHN5c3RlbXMgcHJvZ3JhbW1pbmc7IGNvbnZlcnNpb247IGRlY2lzaW9uIHRhYmxlcyIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7U2FsYXNpbjoxOTczOkhTSSwKICBhdXRob3IgPSAgICAgICAiSm9obiBTYWxhc2luIiwKICB0aXRsZSA9ICAgICAgICAiSGllcmFyY2hpY2FsIFN0b3JhZ2UgaW4gSW5mb3JtYXRpb24gUmV0cmlldmFsIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiNSIsCiAgcGFnZXMgPSAgICAgICAgIjI5MS0tMjk1IiwKICBtb250aCA9ICAgICAgICBtYXksCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L01pc2Mvc3RvcmFnZS5iaWIgYW5kIGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGF0YWJhc2UvV2llZGVyaG9sZC5iaWIiLAogIGFic3RyYWN0ID0gICAgICJBIHByb2JhYmlsaXN0aWMgYW5hbHlzaXMgaXMgZW1wbG95ZWQgdG8gZGV0ZXJtaW5lIHRoZSBlZmZlY3Qgb2YgaGllcmFyY2hpY2FsIHN0b3JhZ2Ugb3JnYW5pemF0aW9ucyBvbiBpbmZvcm1hdGlvbiByZXRyaWV2YWwgb3BlcmF0aW9ucy4gVGhlIGRhdGEgc3RvcmFnZSBoYXJkd2FyZSBpcyBhc3N1bWVkIHRvIGNvbnNpc3Qgb2Ygbi1sZXZlbHMgb2YgbGluZWFybHkgY29ubmVjdGVkIG1lbW9yeSBoYXJkd2FyZSB3aXRoIGluY3JlYXNpbmcgZGF0YSBhY2Nlc3MgdGltZXMgYW5kIGluY3JlYXNpbmcgZGF0YSBzdG9yYWdlIGNhcGFiaWxpdGllcy4gQSBzeXN0ZW0gbWlnaHQsIGZvciBleGFtcGxlLCBjb25zaXN0IG9mIGZhc3Qgc2VtaWNvbmR1Y3RvciBtZW1vcnksIGNvbXB1dGVyIGNvcmUgbWVtb3J5LCBleHRlbmRlZCBjb3JlIHN0b3JhZ2UsIGRpc2sgbWVtb3J5LCBhbmQgZGF0YSBjZWxscy4gRXF1YXRpb25zIGFyZSBkZXJpdmVkIHRvIHByZWRpY3QgdGhlIGVmZmVjdCBvZiBzdWNoIGEgc3lzdGVtIG9uIGRhdGEgYWNjZXNzIHRpbWVzIHVzaW5nIHNlcXVlbnRpYWwgZmlsZXMsIHJhbmRvbSBhY2Nlc3MgZmlsZXMsIGFuZCBzdHJ1Y3R1cmVkIGZpbGVzIGVtcGxveWluZyBtdWx0aXBsZS1oaWVyYXJjaGljYWwgbGlua2VkIGxpc3RzLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgYW5ub3RlID0gICAgICAgIlNpbXBsZSBldmFsdWF0aW9uIG9mIHJlY29yZCBmZXRjaCBjb3N0cyB1c2luZyB2YXJpb3VzIGFjY2Vzc2luZyBzZXF1ZW5jZXMuIiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKTsgQzcyNTAgKEluZm9ybWF0aW9uIHN0b3JhZ2UgYW5kIHJldHJpZXZhbCkiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMzsgOTAxIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gTWlubmVhcG9saXMsIE1OLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYW5hbHlzaXM7IGFuYWx5dGljOyBjb21wdXRlciBvcGVyYXRpbmcgc3lzdGVtcyAtLS0gU3RvcmFnZSBBbGxvY2F0aW9uOyBkYXRhIGFjY2VzcyB0aW1lczsgZmlsZSBvcmdhbmlzYXRpb247IGZpbGVzOyBoaWVyYXJjaGljYWwgc3RvcmFnZTsgaW5mb3JtYXRpb24gcmV0cmlldmFsOyBpbmZvcm1hdGlvbiByZXRyaWV2YWwgc3lzdGVtczsgbGlua2VkIGxpc3RzOyBtZW1vcnkgaGllcmFyY2h5OyBwZXJmb3JtYW5jZSBldmFsdWF0aW9uOyBwcm9iYWJpbGlzdGljOyByYW5kb20gYWNjZXNzOyBzZXF1ZW50aWFsIGZpbGVzOyBzdHJ1Y3R1cmVkIGZpbGVzIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtDb3JuZWlsOjE5NzM6TUVOLAogIGF1dGhvciA9ICAgICAgICJELiBHLiBDb3JuZWlsIGFuZCBDLiBDLiBHb3RsaWViIGFuZCBZLiBNLiBMZWUiLAogIHRpdGxlID0gICAgICAgICJNaW5pbWFsIEV2ZW50LU5vZGUgTmV0d29yayBvZiBQcm9qZWN0IFByZWNlZGVuY2UgUmVsYXRpb25zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiNSIsCiAgcGFnZXMgPSAgICAgICAgIjI5Ni0tMjk4IiwKICBtb250aCA9ICAgICAgICBtYXksCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiQSBwcm9jZWR1cmUgZm9yIGNvbnN0cnVjdGluZyBhIG1pbmltYWwgZXZlbnQtbm9kZSBuZXR3b3JrIHRvIHJlcHJlc2VudCBhIHNldCBvZiBwcmVjZWRlbmNlIHJlbGF0aW9ucyB3aXRob3V0IHBhcmFsbGVsIGFjdGl2aXRpZXMgaXMgcHJlc2VudGVkLiBBIG1pbmltYWwgZXZlbi1ub2RlIG5ldHdvcmsgaXMgYW4gZXZlbnQtbm9kZSBuZXR3b3JrIGluIHdoaWNoIGJvdGggdGhlIG51bWJlciBvZiBub2RlcyBhbmQgdGhlIG51bWJlciBvZiBhcmNzIGFyZSB0aGUgbWluaW1hIHRvIHByZXNlcnZlIHRoZSBnaXZlbiBwcmVjZWRlbmNlIHJlbGF0aW9ucy4gQ291bnRlcmV4YW1wbGVzIGFyZSBnaXZlbiB0byBzaG93IHRoYXQgdGhlIGFsZ29yaXRobSBwcmVzZW50ZWQgYnkgQS4gQy4gRmlzaGVyLCBKLiBTLiBMaWVibWFuLCBhbmQgRy4gTC4gTmVtaGF1c2VyICgxOTY4KSBwcm9kdWNlcyBldmVudC1ub2RlIG5ldHdvcmtzIHdoaWNoIGFyZSBub3QgbWluaW1hbC4gU2luY2Ugb3VyIHByb2NlZHVyZSBpbmNsdWRlcyB0aGUgc2V0LWNvdmVyaW5nIHByb2JsZW0sIHRoZSB0aW1lIHJlcXVpcmVkIG1heSBncm93IGV4cG9uZW50aWFsbHkgd2l0aCB0aGUgbnVtYmVyIG9mIGdpdmVuIGFjdGl2aXRpZXMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzcxMDAgKEJ1c2luZXNzIGFuZCBhZG1pbmlzdHJhdGlvbikiLAogIGNsYXNzaWZpY2F0aW9uID0gIjkxMiIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIFRvcm9udG8sIE9udC4sIENhbmFkYSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJldmVudCBub2RlIG5ldHdvcms7IGV2ZW50LW5vZGUgbmV0d29yazsgbWFuYWdlbWVudCBzY2llbmNlOyBtYW5hZ2VtZW50IHNjaWVuY2VzOyBtaW5pbWFsOyBtaW5pbWFsIGV2ZW50LW5vZGUgbmV0d29yazsgbmV0d29yayBhbmFseXNpczsgb3BlcmF0aW9ucyByZXNlYXJjaDsgcHJvamVjdCBwcmVjZWRlbmNlIHJlbGF0aW9ucyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7TWVyY2VyOjE5NzM6QUdQLAogIGF1dGhvciA9ICAgICAgICJBbmRyZXcgTWVyY2VyIGFuZCBBenJpZWwgUm9zZW5mZWxkIiwKICB0aXRsZSA9ICAgICAgICAiQW4gYXJyYXkgZ3JhbW1hciBwcm9ncmFtbWluZyBzeXN0ZW0iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICI1IiwKICBwYWdlcyA9ICAgICAgICAiMjk5LS0zMDUiLAogIG1vbnRoID0gICAgICAgIG1heSwKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJBIHBhY2thZ2Ugb2YgRm9ydHJhbiBwcm9ncmFtcyBoYXMgYmVlbiBkZXZlbG9wZWQgdGhhdCBwZXJtaXRzIGEgdXNlciB0byBpbnRlcmFjdGl2ZWx5IGRlc2lnbiBhbmQgdGVzdCBhcnJheSBncmFtbWFycy4gVGhlIHVzZXIgY2FuIGNvbnRyb2wgdGhlIHJ1bGUgc2VsZWN0aW9uIHByb2NlZHVyZSBpbiBhIGRlcml2YXRpb24gb3IgcGFyc2UsIHVzaW5nIHdlaWdodGVkIHByb2dyYW1taW5nIG1hdHJpY2VzOyBoZSBhbHNvIGhhcyBhIGNob2ljZSBvZiBpbnN0YW5jZSBzZWxlY3Rpb24gc2NoZW1lcyAocmFzdGVyLCByYW5kb20sIHBhcmFsbGVsKS4gRXhhbXBsZXMgYXJlIGdpdmVuIGludm9sdmluZyBhcnJheSBsYW5ndWFnZXMgY29uc2lzdGluZyBvZiBzaW1wbGUgZ2VvbWV0cmljYWwgcGF0dGVybnMsIGFzIHdlbGwgYXMgYSBsYW5ndWFnZSBvZiBgYG5ldXJvbiBwaWN0dXJlcy4nJyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MjEwIChGb3JtYWwgbG9naWMpOyBDNzQzMCAoQ29tcHV0ZXIgZW5naW5lZXJpbmcpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjE7IDcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIkthcHBhIFN5c3RlbXMgSW5jLiwgQXJsaW5ndG9uLCBWQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFycmF5IGdyYW1tYXI7IGFycmF5IGdyYW1tYXJzOyBhdXRvbWF0YSB0aGVvcnkgLS0tIEdyYW1tYXJzOyBhdXRvbWF0aWMgdGVzdGluZzsgQ0FEOyBjb21wdXRlciBncmFwaGljczsgY29tcHV0ZXIgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzOyBjb21wdXRlci1haWRlZCBkZXNpZ247IEZvcnRyYW4gcHJvZ3JhbXM7IGdyYW1tYXJzOyBpbnRlcmFjdGl2ZWx5OyBwaWN0dXJlIGdyYW1tYXJzOyBwcm9ncmFtbWluZyBzeXN0ZW07IHRlc3QiLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle1JlaW5nb2xkOjE5NzM6TkxNLAogIGF1dGhvciA9ICAgICAgICJFZHdhcmQgTS4gUmVpbmdvbGQiLAogIHRpdGxlID0gICAgICAgICJBIE5vbnJlY3Vyc2l2ZSBMaXN0IE1vdmluZyBBbGdvcml0aG0iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICI1IiwKICBwYWdlcyA9ICAgICAgICAiMzA1LS0zMDciLAogIG1vbnRoID0gICAgICAgIG1heSwKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvQ29tcGlsZXIvZ2FyYmFnZS5jb2xsZWN0aW9uLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIkFuIGVmZmljaWVudCwgbm9ucmVjdXJzaXZlIGFsZ29yaXRobSBpcyBnaXZlbiBmb3IgbW92aW5nIGFueSBMSVNULXR5cGUgbGlzdC4gSW4gcGFydGljdWxhciwgdGhlIGFsZ29yaXRobSByZXF1aXJlcyBubyBzdG9yYWdlIG90aGVyIHRoYW4gdGhlIG5ldyBub2RlcyBpbnRvIHdoaWNoIHRoZSBsaXN0IGlzIHRvIGJlIG1vdmVkLCBhbmQgbm8gYWRkaXRpb25hbCBiaXRzIHBlciBub2RlIGZvciBtYXJraW5nOyB0aGUgYWxnb3JpdGhtIHJ1bnMgaW4gdGltZSBwcm9wb3J0aW9uYWwgdG8gdGhlIG51bWJlciBvZiBub2RlcyBpbiB0aGUgbGlzdC4gVGhlIG9yaWdpbmFsIGxpc3Qgc3RydWN0dXJlIGlzIGRlc3Ryb3llZCBhcyBpdCBpcyBtb3ZlZC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gSWxsaW5vaXMsIFVyYmFuYS1DaGFtcGFpZ24sIElMLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgcHJvZ3JhbW1pbmcgLS0tIFN1YnJvdXRpbmVzOyBjb21wdXRlciBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IGNvbXB1dGVyIHByb2dyYW1taW5nIGxhbmd1YWdlcyAtLS0gbGlzcDsgZ2FyYmFnZSBjb2xsZWN0aW9uOyBMSVNQOyBsaXN0IG1vdmluZzsgbGlzdCBwcm9jZXNzaW5nOyBub25yZWN1cnNpdmUgYWxnb3JpdGhtOyBzdG9yYWdlIG1hbmFnZW1lbnQiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle1ZvczoxOTczOkNXRiwKICBhdXRob3IgPSAgICAgICAiSC4gVm9zIiwKICB0aXRsZSA9ICAgICAgICAiQ291bG9tYiB3YXZlIGZ1bmN0aW9ucyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNiIsCiAgbnVtYmVyID0gICAgICAgIjUiLAogIHBhZ2VzID0gICAgICAgICIzMDgtLTMwOSIsCiAgbW9udGggPSAgICAgICAgbWF5LAogIHllYXIgPSAgICAgICAgICIxOTczIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkIwMjkwRCAoRnVuY3Rpb25hbCBhbmFseXNpcyk7IEM0MTIwIChGdW5jdGlvbmFsIGFuYWx5c2lzKTsgQzczMTAgKE1hdGhlbWF0aWNzIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJWcmlqZSBVbml2LiwgQW1zdGVyZGFtLCBOZXRoZXJsYW5kcyIsCiAga2V5d29yZHMgPSAgICAgIkNvdWxvbWIgd2F2ZSBmdW5jdGlvbnM7IGZ1bmN0aW9uIGV2YWx1YXRpb247IG1hdGhlbWF0aWNzOyB3YXZlIGZ1bmN0aW9ucyIsCiAgdHJlYXRtZW50ID0gICAgIkEgQXBwbGljYXRpb247IFQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7QmF5ZXI6MTk3MzpNLAogIGF1dGhvciA9ICAgICAgICJHLiBCYXllciIsCiAgdGl0bGUgPSAgICAgICAgIk1heGZsb3ciLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICI1IiwKICBwYWdlcyA9ICAgICAgICAiMzA5LS0zMDkiLAogIG1vbnRoID0gICAgICAgIG1heSwKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNzMwMCAoTmF0dXJhbCBzY2llbmNlcyBjb21wdXRpbmcpIiwKICBjb3Jwc291cmNlID0gICAiVGVjaC4gVW5pdi4sIEJyYXVuc2Nod2VpZywgV2VzdCBHZXJtYW55IiwKICBrZXl3b3JkcyA9ICAgICAiYXJjczsgZmxvd3M7IGlucHV0IHBhcmFtZXRlcnM7IG1heGZsb3c7IG5ldHdvcms7IG5ldHdvcmsgYW5hbHlzaXMiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0hvbG1ncmVuOjE5NzM6TUFMLAogIGF1dGhvciA9ICAgICAgICJCLiBIb2xtZ3JlbiBhbmQgQS4gS29sbSBhbmQgRC4gT2JyYWRvdmljIiwKICB0aXRsZSA9ICAgICAgICAiTWluaXQgYWxnb3JpdGhtIGZvciBsaW5lYXIgcHJvZ3JhbW1pbmciLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICI1IiwKICBwYWdlcyA9ICAgICAgICAiMzEwLS0zMTAiLAogIG1vbnRoID0gICAgICAgIG1heSwKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJCMDI2MCAoT3B0aW1pc2F0aW9uIHRlY2huaXF1ZXMpOyBDMTE4MCAoT3B0aW1pc2F0aW9uIHRlY2huaXF1ZXMpOyBDNzMxMCAoTWF0aGVtYXRpY3MgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIkFTRUEsIFZhc3RlcmFzLCBTd2VkZW4iLAogIGtleXdvcmRzID0gICAgICJsaW5lYXIgcHJvZ3JhbW1pbmc7IG1pbml0IGFsZ29yaXRobSIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7T2JyYWRvdmljOjE5NzM6TUFMLAogIGF1dGhvciA9ICAgICAgICJELiBPYnJhZG92aWMiLAogIHRpdGxlID0gICAgICAgICJNaW5pdCBhbGdvcml0aG0gZm9yIGxpbmVhciBwcm9ncmFtbWluZyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNiIsCiAgbnVtYmVyID0gICAgICAgIjUiLAogIHBhZ2VzID0gICAgICAgICIzMTAtLTMxMCIsCiAgbW9udGggPSAgICAgICAgbWF5LAogIHllYXIgPSAgICAgICAgICIxOTczIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkIwMjYwIChPcHRpbWlzYXRpb24gdGVjaG5pcXVlcyk7IEMxMTgwIChPcHRpbWlzYXRpb24gdGVjaG5pcXVlcyk7IEM3MzEwIChNYXRoZW1hdGljcyBjb21wdXRpbmcpIiwKICBjb3Jwc291cmNlID0gICAiQm9yaXMgS2lkcmljIEluc3QuIE51Y2xlYXIgU2NpLiwgQmVvZ3JhZCwgWXVnb3NsYXZpYSIsCiAga2V5d29yZHMgPSAgICAgImxpbmVhciBwcm9ncmFtbWluZzsgbWluaSBhbGdvcml0aG0iLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0hvd2VsbDoxOTczOkVTTCwKICBhdXRob3IgPSAgICAgICAiSi4gQS4gSG93ZWxsIiwKICB0aXRsZSA9ICAgICAgICAiRXhhY3Qgc29sdXRpb24gb2YgbGluZWFyIGVxdWF0aW9ucyB1c2luZyByZXNpZHVlIGFyaXRobWV0aWMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICI1IiwKICBwYWdlcyA9ICAgICAgICAiMzExLS0zMTEiLAogIG1vbnRoID0gICAgICAgIG1heSwKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJCMDI5MEggKExpbmVhciBhbGdlYnJhKTsgQzQxNDAgKExpbmVhciBhbGdlYnJhKTsgQzUyMzAgKERpZ2l0YWwgYXJpdGhtZXRpYyBtZXRob2RzKTsgQzczMTAgKE1hdGhlbWF0aWNzIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJZYWxlIFVuaXYuLCBOZXcgSGF2ZW4sIENULCBVU0EiLAogIGtleXdvcmRzID0gICAgICJkaWdpdGFsIGFyaXRobWV0aWM7IGV4YWN0IHNvbHV0aW9uOyBpbnZlcnNpb247IGxpbmVhciBhbGdlYnJhOyBsaW5lYXIgZXF1YXRpb25zOyBtYXRyaXg7IG1peGVkIHJhZGl4IGNvbnZlcnNpb247IG1vZHVsdXM7IHByaW1lIG51bWJlcjsgcmVzaWR1ZSBhcml0aG1ldGljIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtTYWxlOjE5NzM6U01QLAogIGF1dGhvciA9ICAgICAgICJBLiBILiBKLiBTYWxlIiwKICB0aXRsZSA9ICAgICAgICAiQSBzcGFyc2UgbWF0cml4IHBhY2thZ2UiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICI1IiwKICBwYWdlcyA9ICAgICAgICAiMzExLS0zMTEiLAogIG1vbnRoID0gICAgICAgIG1heSwKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJCMDI5MEggKExpbmVhciBhbGdlYnJhKTsgQzQxNDAgKExpbmVhciBhbGdlYnJhKTsgQzczMTAgKE1hdGhlbWF0aWNzIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBTeWRuZXksIE5TVywgQXVzdHJhbGlhIiwKICBrZXl3b3JkcyA9ICAgICAiYWxnb3JpdGhtOyBtYXRyaXggYWxnZWJyYTsgc3BhcnNlIG1hdHJpeCBwYWNrYWdlIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtXaGVlbGVyOjE5NzM6SUVRLAogIGF1dGhvciA9ICAgICAgICJSLiBFLiBXaGVlbGVyIiwKICB0aXRsZSA9ICAgICAgICAiSW5jcmVhc2luZyB0aGUgZWZmaWNpZW5jeSBvZiBxdWlja3NvcnQiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICI1IiwKICBwYWdlcyA9ICAgICAgICAiMzExLS0zMTEiLAogIG1vbnRoID0gICAgICAgIG1heSwKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKSIsCiAgY29ycHNvdXJjZSA9ICAgIkUuIEkuIGR1IFBvbnQgTmVtb3VycyBhbmQgQ28uLCBXaWxtaW5ndG9uLCBERSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiZWZmaWNpZW5jeTsgcXVpY2tzb3J0OyBzb3J0aW5nIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtSb3k6MTk3MzpSUFIsCiAgYXV0aG9yID0gICAgICAgIk0uIEsuIFJveSIsCiAgdGl0bGUgPSAgICAgICAgIlJlZmxlY3Rpb24tZnJlZSBwZXJtdXRhdGlvbnMsIHJvc2FyeSBwZXJtdXRhdGlvbnMgYW5kIGFkamFjZW50IHRyYW5zcG9zaXRpb24gYWxnb3JpdGhtcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNiIsCiAgbnVtYmVyID0gICAgICAgIjUiLAogIHBhZ2VzID0gICAgICAgICIzMTItLTMxMiIsCiAgbW9udGggPSAgICAgICAgbWF5LAogIHllYXIgPSAgICAgICAgICIxOTczIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkIwMjUwIChDb21iaW5hdG9yaWFsIG1hdGhlbWF0aWNzKTsgQzExNjAgKENvbWJpbmF0b3JpYWwgbWF0aGVtYXRpY3MpIiwKICBjb3Jwc291cmNlID0gICAiSmFkYXZwdXIgVW5pdi4sIENhbGN1dHRhLCBJbmRpYSIsCiAga2V5d29yZHMgPSAgICAgImFkamFjZW50IHRyYW5zcG9zaXRpb24gYWxnb3JpdGhtczsgY29tYmluYXRvcmlhbCBhbmFseXNpczsgY29tYmluYXRvcmlhbCBtYXRoZW1hdGljczsgcGVybXV0YXRpb247IHJlZmxlY3Rpb24gZnJlZTsgcm9zYXJ5IiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtNY01vcnJvdzoxOTczOkNNQywKICBhdXRob3IgPSAgICAgICAiQy4gSC4gTWNNb3Jyb3ciLAogIHRpdGxlID0gICAgICAgICJDb25jZXJuaW5nIG11c2ljIGFuZCBjb21wdXRlciBjb21wb3NpdGlvbiBpbiBjb21wdXRhdGlvbmFsIGxpbmd1aXN0aWNzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiNSIsCiAgcGFnZXMgPSAgICAgICAgIjMxMy0tMzEzIiwKICBtb250aCA9ICAgICAgICBtYXksCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzc4MjAgKEh1bWFuaXRpZXMgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIkVhZ2xlIFNpZ25hbCBDb3JwLiwgRGF2ZW5wb3J0LCBJQSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0YXRpb25hbCBsaW5ndWlzdGljczsgY29tcHV0ZXIgY29tcG9zaXRpb247IGh1bWFuaXRpZXM7IG11c2ljIiwKICB0cmVhdG1lbnQgPSAgICAiRyBHZW5lcmFsIFJldmlldyIsCn0KCkBBcnRpY2xle1dleGVsYmxhdDoxOTczOkFDQywKICBhdXRob3IgPSAgICAgICAiUi4gTC4gV2V4ZWxibGF0IiwKICB0aXRsZSA9ICAgICAgICAiQW5vdGhlciBjb21tZW50IG9uIGNvbXB1dGVyIG11c2ljIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiNSIsCiAgcGFnZXMgPSAgICAgICAgIjMxMy0tMzE0IiwKICBtb250aCA9ICAgICAgICBtYXksCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzc4MjAgKEh1bWFuaXRpZXMgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIkJlbGwgTGFicy4sIEhvbG1kZWwsIE5KLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJjb21wb3NlcjsgY29tcHV0ZXIgbXVzaWM7IGh1bWFuaXRpZXM7IG11c2ljYWwgdGFzdGU7IHZhbHVlIGp1ZGdtZW50IiwKICB0cmVhdG1lbnQgPSAgICAiRyBHZW5lcmFsIFJldmlldyIsCn0KCkBBcnRpY2xle0VzdGVsbDoxOTczOkNQQSwKICBhdXRob3IgPSAgICAgICAiUi4gRy4gRXN0ZWxsIiwKICB0aXRsZSA9ICAgICAgICAiQSBjb21tZW50IG9uIHRoZSBwcmFjdGljYWwgYXNwZWN0cyBvZiBjb21wdXRlciBzY2llbmNlIGVkdWNhdGlvbiIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNiIsCiAgbnVtYmVyID0gICAgICAgIjUiLAogIHBhZ2VzID0gICAgICAgICIzMTQtLTMxNSIsCiAgbW9udGggPSAgICAgICAgbWF5LAogIHllYXIgPSAgICAgICAgICIxOTczIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMwMjIwIChDb21wdXRpbmcgZWR1Y2F0aW9uIGFuZCB0cmFpbmluZykiLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBzY2llbmNlIGVkdWNhdGlvbjsgY3VycmljdWx1bTsgZGlnaXRhbCBjb21wdXRlcnM7IGVkdWNhdGlvbiIsCiAgdHJlYXRtZW50ID0gICAgIkcgR2VuZXJhbCBSZXZpZXc7IFAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7RmFqbWFuOjE5NzM6V0lULAogIGF1dGhvciA9ICAgICAgICJSb2dlciBGYWptYW4gYW5kIEpvaG4gQm9yZ2VsdCIsCiAgdGl0bGUgPSAgICAgICAgIntXWUxCVVJ9LCBBbiBJbnRlcmFjdGl2ZSBUZXh0IEVkaXRpbmcgYW5kIFJlbW90ZSBKb2IgRW50cnkgU3lzdGVtIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiNSIsCiAgcGFnZXMgPSAgICAgICAgIjMxNC0tMzIyIiwKICBtb250aCA9ICAgICAgICBtYXksCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0RhdGFiYXNlL1dpZWRlcmhvbGQuYmliOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L01pc2Mvb3MuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiV1lMQlVSIGlzIGEgY29tcHJlaGVuc2l2ZSBzeXN0ZW0gZm9yIG1hbmlwdWxhdGluZyBhbGwga2luZHMgb2YgdGV4dCwgc3VjaCBhcyBjb21wdXRlciBwcm9ncmFtcywgbGV0dGVycywgYW5kIG1hbnVzY3JpcHRzLCB1c2luZyB0eXBld3JpdGVyIHRlcm1pbmFscyBjb25uZWN0ZWQgdG8gYSBjb21wdXRlci4gSXQgaGFzIGZhY2lsaXRpZXMgZm9yIHJlbW90ZSBqb2IgZW50cnkgYW5kIHJldHJpZXZhbCBhcyB3ZWxsIGFzIGZhY2lsaXRpZXMgZm9yIHRleHQgYWxpZ25tZW50IGFuZCBqdXN0aWZpY2F0aW9uLiBBIHBvd2VyZnVsIG1ldGhvZCBmb3IgYWRkcmVzc2luZyB0ZXh0IGJ5IGNvbnRlbnQgaXMgcHJvdmlkZWQuIFRoaXMgcGFwZXIgZGVzY3JpYmVzIHRoZSBleHRlcm5hbCBhcHBlYXJhbmNlIG9mIFdZTEJVUiBhcyB3ZWxsIGFzIGl0cyBpbnRlcm5hbCBzdHJ1Y3R1cmUuIEEgc2hvcnQgZGVzY3JpcHRpb24gb2YgdGhlIG1ham9yIGZlYXR1cmVzIG9mIE9SVllMLCBhIGdlbmVyYWwgcHVycG9zZSB0aW1lLXNoYXJpbmcgc3lzdGVtIHdoaWNoIG9wZXJhdGVzIGluIGNvbmp1bmN0aW9uIHdpdGggV1lMQlVSLCBpcyBhbHNvIGluY2x1ZGVkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTMwIChEYXRhIGhhbmRsaW5nIHRlY2huaXF1ZXMpOyBDNjE1MEogKE9wZXJhdGluZyBzeXN0ZW1zKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiU3RhbmZvcmQgVW5pdi4sIENBLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYWRkcmVzc2luZzsgY29tcHV0ZXIgc3lzdGVtcyBwcm9ncmFtbWluZzsgY29udGVudDsgY29udGVudCBhZGRyZXNzaW5nOyBkYXRhIGVudHJ5OyBkYXRhIGhhbmRsaW5nOyBkYXRhIHByb2Nlc3Npbmc7IGRvY3VtZW50IHByZXBhcmF0aW9uOyBpbnRlcmFjdGl2ZSB0ZXh0IGVkaXRpbmc7IE9SVllMOyByZW1vdGU7IHJlbW90ZSBqb2IgZW50cnk7IHJlbW90ZSBqb2IgcmV0cmlldmFsOyB0ZXJtaW5hbDsgdGV4dCBlZGl0aW5nIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtGcmFpbGV5OjE5NzM6UEFNLAogIGF1dGhvciA9ICAgICAgICJEZW5uaXMgSi4gRnJhaWxleSIsCiAgdGl0bGUgPSAgICAgICAgIkEgUHJhY3RpY2FsIEFwcHJvYWNoIHRvIE1hbmFnaW5nIFJlc291cmNlcyBhbmQgQXZvaWRpbmcgRGVhZGxvY2tzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiNSIsCiAgcGFnZXMgPSAgICAgICAgIjMyMy0tMzI5IiwKICBtb250aCA9ICAgICAgICBtYXksCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0RhdGFiYXNlL1dpZWRlcmhvbGQuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiUmVzb3VyY2Ugc2NoZWR1bGluZyBhbmQgYWxsb2NhdGlvbiBjYW4gYmUgZXhwZW5zaXZlIHdpdGggcmVnYXJkIHRvIHRpbWUgYW5kIHNwYWNlIGluIG11bHRpcHJvZ3JhbW1pbmcgb3IgdGltZS1zaGFyaW5nIGVudmlyb25tZW50cyBpbnZvbHZpbmcgbGFyZ2UgbnVtYmVycyBvZiB0YXNrcyBhbmQgcmVzb3VyY2VzIHdpdGggY29uZmxpY3RpbmcgcmVxdWlyZW1lbnRzLiBccGFyIERldGVjdGlvbiBhbmRcc2xhc2ggb3IgcHJldmVudGlvbiBvZiBkZWFkbG9ja3MgY2FuIHJlcXVpcmUgbWFzc2l2ZSBhbW91bnRzIG9mIGFkZGl0aW9uYWwgb3ZlcmhlYWQgaWYgZWZmaWNpZW50IHVzYWdlIG9mIHJlc291cmNlcyBpcyB0byBiZSBtYWludGFpbmVkLiBBIHJlc291cmNlIG1hbmFnZW1lbnQgcHJvZ3JhbSBpcyBkZXNjcmliZWQgd2hpY2ggdXNlcyBsaW5rZWQgbGlzdHMgYWxvbmcgd2l0aCBvdGhlciB0ZWNobmlxdWVzIHRvIG92ZXJjb21lIGEgbGFyZ2UgcG9ydGlvbiBvZiB0aGlzIG92ZXJoZWFkLiBUaGUgcHJvZ3JhbSwgd2hpY2ggaXMgY3VycmVudGx5IHJ1bm5pbmcgYXMgcGFydCBvZiBhIGxhcmdlIHNjYWxlIGdlbmVyYWwgcHVycG9zZSBvcGVyYXRpbmcgc3lzdGVtLCBrZWVwcyByZXNvdXJjZXMgcmVsYXRpdmVseSBhY3RpdmUgYnV0IGRvZXMgbm90IGRldGVjdCBvciBwcmV2ZW50IGFsbCBkZWFkbG9ja3MgaW4gaXRzIGltcGxlbWVudGVkIHN0YXRlLiBDZXJ0YWluIGNoYW5nZXMsIHdoaWNoIHdvdWxkIHBlcm1pdCBtb3JlIGNvbXByZWhlbnNpdmUgbGV2ZWxzIG9mIGRlYWRsb2NrIHByZXZlbnRpb25cc2xhc2ggZGV0ZWN0aW9uIGF0IGFkZGl0aW9uYWwgY29zdCwgaGF2ZSBub3QgYmVlbiBpbmNvcnBvcmF0ZWQgaW4gdGhlIHJ1bm5pbmcgc3lzdGVtIGR1ZSB0byB0aGUgaW5mcmVxdWVuY3kgb2YgZGVhZGxvY2sgc2l0dWF0aW9ucy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGFubm90ZSA9ICAgICAgICJEZXNjcmlwdGlvbiBvZiBhIGxpbWl0ZWQgaW1wbGVtZW50YXRpb24gYW5kIGdvb2Qgb3ZlcnZpZXcuIiwKICBjbGFzc2NvZGVzID0gICAiQzYxNTBKIChPcGVyYXRpbmcgc3lzdGVtcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlNvdXRoZXJuIE1ldGhvZGlzdCBVbml2LiwgRGFsbGFzLCBUWCwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgIihjb21wdXRlcnMpOyBhbGxvY2F0aW9uOyBjb21wdXRlciBzeXN0ZW1zIHByb2dyYW1taW5nOyBkZWFkbG9jazsgZGVhZGx5IGVtYnJhY2U7IGZpbGUgb3JnYW5pc2F0aW9uOyBtdWx0aXByb2Nlc3Npbmc7IG11bHRpcHJvZ3JhbW1pbmc7IG9wZXJhdGluZyBzeXN0ZW1zOyByZXNvdXJjZTsgcmVzb3VyY2UgYWxsb2NhdGlvbjsgcmVzb3VyY2UgbWFuYWdlbWVudDsgcmVzb3VyY2Ugc2NoZWR1bGluZzsgc2NoZWR1bGluZzsgc3RvcmFnZSBhbGxvY2F0aW9uOyB0aW1lIHNoYXJpbmc7IHRpbWUtc2hhcmluZzsgdGltZS1zaGFyaW5nIHByb2dyYW1zIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtIYW1sZXQ6MTk3MzpFTVIsCiAgYXV0aG9yID0gICAgICAgIlIuIEcuIEhhbWxldCIsCiAgdGl0bGUgPSAgICAgICAgIkVmZmljaWVudCBtdWx0aXByb2dyYW1taW5nIHJlc291cmNlIGFsbG9jYXRpb24gYW5kIGFjY291bnRpbmciLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICI2IiwKICBwYWdlcyA9ICAgICAgICAiMzM3LS0zNDIiLAogIG1vbnRoID0gICAgICAgIGp1biwKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pOyBDNjE1MEogKE9wZXJhdGluZyBzeXN0ZW1zKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIE1hcnlsYW5kLCBCYWx0aW1vcmUsIE1ELCBVU0EiLAogIGtleXdvcmRzID0gICAgICJhY2NvdW50aW5nOyBlZmZpY2llbnQ7IGV4ZWN1dGl2ZTsgbWVtb3J5OyBtb25pdG9yOyBtdWx0aXByb2dyYW1taW5nOyByZXNvdXJjZSBhbGxvY2F0aW9uOyBzdG9yYWdlIGFsbG9jYXRpb24iLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0dlbGVuYmU6MTk3MzpNV1MsCiAgYXV0aG9yID0gICAgICAgIkUuIEdlbGVuYmUgYW5kIEouIEMuIEEuIEJvZWtob3JzdCBhbmQgSi4gTC4gVy4gS2Vzc2VscyIsCiAgdGl0bGUgPSAgICAgICAgIk1pbmltaXppbmcgd2FzdGVkIHNwYWNlIGluIHBhcnRpdGlvbmVkIHNlZ21lbnRhdGlvbiIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNiIsCiAgbnVtYmVyID0gICAgICAgIjYiLAogIHBhZ2VzID0gICAgICAgICIzNDMtLTM0OSIsCiAgbW9udGggPSAgICAgICAganVuLAogIHllYXIgPSAgICAgICAgICIxOTczIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbik7IEM2MTUwSiAoT3BlcmF0aW5nIHN5c3RlbXMpIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gTWljaGlnYW4sIEFubiBBcmJvciwgTUksIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImFsZ29yaXRobXM7IGR5bmFtaWMgc3RvcmFnZSBhbGxvY2F0aW9uOyBmaWxlIG9yZ2FuaXNhdGlvbjsgZnJhZ21lbnRhdGlvbjsgbXVsdGlwbGU7IHBhZ2Ugc2l6ZXM7IHBhZ2VkIHZpcnR1YWwgbWVtb3J5OyBwYXJ0aXRpb25lZCBzZWdtZW50YXRpb247IHN0b3JhZ2UgYWxsb2NhdGlvbjsgc3RvcmFnZSBtYW5hZ2VtZW50OyBzeXN0ZW07IHdhc3RlZCBzcGFjZSIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7SGlsbDoxOTczOlNQTSwKICBhdXRob3IgPSAgICAgICAiSi4gQy4gSGlsbCIsCiAgdGl0bGUgPSAgICAgICAgIlN5bmNocm9uaXppbmcgcHJvY2Vzc29ycyB3aXRoIG1lbW9yeS1jb250ZW50LWdlbmVyYXRlZCBpbnRlcnJ1cHRzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiNiIsCiAgcGFnZXMgPSAgICAgICAgIjM1MC0tMzUxIiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxNTBKIChPcGVyYXRpbmcgc3lzdGVtcykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBDYWxpZm9ybmlhLCBMaXZlcm1vcmUsIENBLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJhc3NvY2lhdGl2ZSBtZW1vcmllczsgZGVidWdnaW5nOyBpbnRlcnJ1cHRzOyBtaWNyb3Byb2dyYW1taW5nOyBtb25pdG9yczsgbXVsdGlwcm9jZXNzaW5nIHByb2dyYW1zOyBtdWx0aXByb2Nlc3NvcjsgcGFyYWxsZWwgcHJvY2Vzc2luZzsgc3VwZXJ2aXNvcnM7IHN5bmNocm9uaXNhdGlvbjsgc3luY2hyb25pemluZyBwcm9jZXNzb3JzIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtTdG9uZToxOTczOk5PUywKICBhdXRob3IgPSAgICAgICAiSGFyb2xkIFMuIFN0b25lIGFuZCBTYW11ZWwgRi4gRnVsbGVyIiwKICB0aXRsZSA9ICAgICAgICAiT24gdGhlIE5lYXItT3B0aW1hbGl0eSBvZiB0aGUgU2hvcnRlc3QtTGF0ZW5jeS1UaW1lLUZpcnN0IERydW0gU2NoZWR1bGluZyBEaXNjaXBsaW5lIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiNiIsCiAgcGFnZXMgPSAgICAgICAgIjM1Mi0tMzUzIiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EYXRhYmFzZS9XaWVkZXJob2xkLmJpYiIsCiAgbm90ZSA9ICAgICAgICAgIkFsc28gcHVibGlzaGVkIGluL2FzOiBUZWNobmljYWwgTm90ZSBOby4xMiwgRFNMLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbikiLAogIGNvcnBzb3VyY2UgPSAgICJTdGFuZm9yZCBVbml2LiwgQ0EsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIHN5c3RlbXM7IGRydW0gc2NoZWR1bGluZyBkaXNjaXBsaW5lOyBmaWxlIG9yZ2FuaXNhdGlvbjsgbGF0ZW5jeSBzY2hlZHVsaW5nOyBtaW5pbWFsOyBzaG9ydGVzdCBsYXRlbmN5IHRpbWUgZmlyc3Q7IHN0b3JhZ2UgYWxsb2NhdGlvbjsgc3RvcmFnZSBtYW5hZ2VtZW50IiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtTdG9ja2hhdXNlbjoxOTczOkFPQywKICBhdXRob3IgPSAgICAgICAiUC4gRi4gU3RvY2toYXVzZW4iLAogIHRpdGxlID0gICAgICAgICJBZGFwdGluZyBvcHRpbWFsIGNvZGUgZ2VuZXJhdGlvbiBmb3IgYXJpdGhtZXRpYyBleHByZXNzaW9ucyB0byB0aGUgaW5zdHJ1Y3Rpb24gc2V0cyBhdmFpbGFibGUgb24gcHJlc2VudC1kYXkgY29tcHV0ZXJzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiNiIsCiAgcGFnZXMgPSAgICAgICAgIjM1My0tMzU0IiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzUyMzAgKERpZ2l0YWwgYXJpdGhtZXRpYyBtZXRob2RzKSIsCiAgY29ycHNvdXJjZSA9ICAgIkJlbGwgTGFicy4sIE11cnJheSBIaWxsLiwgTkosIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImFyaXRobWV0aWMgZXhwcmVzc2lvbnM7IGNvZGVzOyBkaWdpdGFsIGFyaXRobWV0aWM7IGluc3RydWN0aW9uOyBvcHRpbWFsIGNvZGUgZ2VuZXJhdGlvbjsgc2V0cyIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7TGluZzoxOTczOkNHQSwKICBhdXRob3IgPSAgICAgICAiUi4gRi4gTGluZyIsCiAgdGl0bGUgPSAgICAgICAgIkEgY29tcHV0ZXIgZ2VuZXJhdGVkIGFpZCBmb3IgY2x1c3RlciBhbmFseXNpcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNiIsCiAgbnVtYmVyID0gICAgICAgIjYiLAogIHBhZ2VzID0gICAgICAgICIzNTUtLTM2MSIsCiAgbW9udGggPSAgICAgICAganVuLAogIHllYXIgPSAgICAgICAgICIxOTczIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM1NTMwIChQYXR0ZXJuIHJlY29nbml0aW9uIGFuZCBjb21wdXRlciB2aXNpb24gZXF1aXBtZW50KTsgQzU1NDAgKFRlcm1pbmFscyBhbmQgZ3JhcGhpYyBkaXNwbGF5cykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBDaGljYWdvLCBJTCwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiY2x1c3RlciBhbmFseXNpczsgY29tcHV0ZXIgYWlkZWQgYW5hbHlzaXM7IGNvbXB1dGVyIGdyYXBoaWNzOyBmYWN0b3IgYW5hbHlzaXM7IGhpZXJhcmNoaWNhbCBjbHVzdGVyaW5nOyBudW1lcmljYWwgdGF4b25vbXk7IHBhdHRlcm47IHJlY29nbml0aW9uIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtTaG5laWRlcm1hbjoxOTczOk9EQiwKICBhdXRob3IgPSAgICAgICAiQmVuIFNobmVpZGVybWFuIiwKICB0aXRsZSA9ICAgICAgICAiT3B0aW11bSBEYXRhIEJhc2UgUmVvcmdhbml6YXRpb24gUG9pbnRzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiNiIsCiAgcGFnZXMgPSAgICAgICAgIjM2Mi0tMzY1IiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EYXRhYmFzZS9XaWVkZXJob2xkLmJpYiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgYW5ub3RlID0gICAgICAgIkNyaXRlcmlhIGZvciBmaWxlIHJlb3JnYW5pemF0aW9uIiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKSIsCiAgY29ycHNvdXJjZSA9ICAgIlN0YXRlIFVuaXYuIE5ldyBZb3JrLCBTdG9ueSBCcm9vaywgTlksIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImNvc3QgcGVyIGFjY2VzczsgZGF0YSBiYXNlOyBmaWxlIG9yZ2FuaXNhdGlvbjsgZmlsZXM7IGluZm9ybWF0aW9uIHJldHJpZXZhbDsgb3B0aW11bTsgcmVvcmdhbml6YXRpb247IHN0cmF0ZWdpZXMiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle1N0cnVuejoxOTczOkREVCwKICBhdXRob3IgPSAgICAgICAiSC4gU3RydW56IiwKICB0aXRsZSA9ICAgICAgICAiVGhlIGRldmVsb3BtZW50IG9mIGRlY2lzaW9uIHRhYmxlcyB2aWEgcGFyc2luZyBvZiBjb21wbGV4IGRlY2lzaW9uIHNpdHVhdGlvbnMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICI2IiwKICBwYWdlcyA9ICAgICAgICAiMzY2LS0zNjkiLAogIG1vbnRoID0gICAgICAgIGp1biwKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjExMCAoU3lzdGVtcyBhbmFseXNpcyBhbmQgcHJvZ3JhbW1pbmcpIiwKICBjb3Jwc291cmNlID0gICAiTWF0aGVtYXRpc2NoZXIgQmVyYXR1bmdzLSBhbmQgUHJvZ3JhbW1pZXJ1bmdzZGllbnN0IEdtYkgsIENvbG9nbmUsIFdlc3QgR2VybWFueSIsCiAga2V5d29yZHMgPSAgICAgImRlY2lzaW9uIGdyaWQgY2hhcnQ7IGRlY2lzaW9uIHRhYmxlczsgZGV2ZWxvcG1lbnQ7IHBhcnNpbmc7IHByb2JsZW0gYW5hbHlzaXMiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0JlbGw6MTk3MzpUQywKICBhdXRob3IgPSAgICAgICAiSmFtZXMgUi4gQmVsbCIsCiAgdGl0bGUgPSAgICAgICAgIlRocmVhZGVkIENvZGUiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICI2IiwKICBwYWdlcyA9ICAgICAgICAiMzcwLS0zNzIiLAogIG1vbnRoID0gICAgICAgIGp1biwKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFic3RyYWN0ID0gICAgICJUaGUgY29uY2VwdCBvZiBgYHRocmVhZGVkIGNvZGUnJyBpcyBwcmVzZW50ZWQgYXMgYW4gYWx0ZXJuYXRpdmUgdG8gbWFjaGluZSBsYW5ndWFnZSBjb2RlLiBIYXJkd2FyZSBhbmQgc29mdHdhcmUgcmVhbGl6YXRpb25zIG9mIGl0IGFyZSBnaXZlbi4gSW4gc29mdHdhcmUgaXQgaXMgcmVhbGl6ZWQgYXMgaW50ZXJwcmV0aXZlIGNvZGUgbm90IG5lZWRpbmcgYW4gaW50ZXJwcmV0ZXIuIEV4dGVuc2lvbnMgYW5kIG9wdGltaXphdGlvbnMgYXJlIG1lbnRpb25lZC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNTIyMCAoQ29tcHV0ZXIgYXJjaGl0ZWN0dXJlKTsgQzYxMTAgKFN5c3RlbXMgYW5hbHlzaXMgYW5kIHByb2dyYW1taW5nKTsgQzYxNDBCIChNYWNoaW5lLW9yaWVudGVkIGxhbmd1YWdlcykiLAogIGNvcnBzb3VyY2UgPSAgICJEaWdpdGFsIEVxdWlwbWVudCBDb3JwLiwgTWF5bmFyZCwgTUEsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImNvZGU7IGNvbXBpbGVkIGNvZGU7IGhhcmR3YXJlOyBpbnRlcnByZXRlcjsgbWFjaGluZTsgbWFjaGluZSBjb2RlOyBtYWNoaW5lIG9yaWVudGVkIGxhbmd1YWdlczsgbWljcm9wcm9ncmFtbWluZzsgcHJvZ3JhbW1pbmc7IHNvZnR3YXJlOyBzcGFjZSB0cmFkZW9mZjsgc3Vicm91dGluZSBjYWxsczsgdGhyZWFkZWQgY29kZTsgdGltZSB0cmFkZW9mZiIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7SG9wY3JvZnQ6MTk3MzpBQUUsCiAgYXV0aG9yID0gICAgICAgIkouIEhvcGNyb2Z0IGFuZCBSLiBUYXJqYW4iLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gNDQ3OiBFZmZpY2llbnQgQWxnb3JpdGhtcyBmb3IgR3JhcGggTWFuaXB1bGF0aW9uIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiNiIsCiAgcGFnZXMgPSAgICAgICAgIjM3Mi0tMzc4IiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9QYXJhbGxlbC9NdWx0aS5iaWIiLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNzMxMCAoTWF0aGVtYXRpY3MgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIkNvcm5lbGwgVW5pdi4sIEl0aGFjYSwgTlksIFVTQSIsCiAga2V5d29yZHMgPSAgICAgIkFMR09MOyBhbGdvcml0aG1zOyBncmFwaCBtYW5pcHVsYXRpb247IGdyYXBoIHRoZW9yeTsgbWF0aGVtYXRpY3M7IHBhcnRpdGlvbmluZzsgc3Vicm91dGluZXMiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0JleWVyOjE5NzM6QUFOLAogIGF1dGhvciA9ICAgICAgICJULiBCZXllciBhbmQgRC4gRi4gU3dpbmVoYXJ0IiwKICB0aXRsZSA9ICAgICAgICAie0FDTX0gQWxnb3JpdGhtIDQ0ODogTnVtYmVyIG9mIE11bHRpcGx5LVJlc3RyaWN0ZWQgUGFydGl0aW9ucyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNiIsCiAgbnVtYmVyID0gICAgICAgIjYiLAogIHBhZ2VzID0gICAgICAgICIzNzktLTM3OSIsCiAgbW9udGggPSAgICAgICAganVuLAogIHllYXIgPSAgICAgICAgICIxOTczIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM1MjMwIChEaWdpdGFsIGFyaXRobWV0aWMgbWV0aG9kcykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBPcmVnb24sIEV1Z2VuZSwgT1IsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImNoYW5nZSBtYWtpbmc7IGRpZ2l0YWwgYXJpdGhtZXRpYzsgZW51bWVyYXRpb247IEZPUlRSQU47IG11bHRpcGx5IHJlc3RyaWN0ZWQgcGFydGl0aW9uczsgcG9zaXRpdmUgaW50ZWdlcjsgc3Vicm91dGluZTsgc3Vicm91dGluZXMiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0Zlcmd1c29uOjE5NzM6TFNQLAogIGF1dGhvciA9ICAgICAgICJKLiBGZXJndXNvbiBhbmQgUC4gQS4gU3RhbGV5IiwKICB0aXRsZSA9ICAgICAgICAiTGVhc3Qgc3F1YXJlcyBwaWVjZXdpc2UgY3ViaWMgY3VydmUgZml0dGluZyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNiIsCiAgbnVtYmVyID0gICAgICAgIjYiLAogIHBhZ2VzID0gICAgICAgICIzODAtLTM4MiIsCiAgbW9udGggPSAgICAgICAganVuLAogIHllYXIgPSAgICAgICAgICIxOTczIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjVEMTAiLAogIE1SbnVtYmVyID0gICAgICI1MCAxNTI2NyIsCiAgbXJyZXZpZXdlciA9ICAgIkJlcm5hcmQgSC4gUm9zbWFuIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWJzdHJhY3QgPSAgICAgIlRoZSBtYXRyaWNlcyBpbnZvbHZlZCBpbiBhIGxpbmVhciBsZWFzdCBzcXVhcmVzIGZvcm11bGF0aW9uIGFyZSBkZXRlcm1pbmVkIGZvciB0aGUgcHJvYmxlbSBvZiBmaXR0aW5nIHBpZWNld2lzZSBjdWJpYyBmdW5jdGlvbnMsIHRob3NlIHBvc3Nlc3NpbmcgYSBjb250aW51b3VzIGRlcml2YXRpdmUsIHRvIGFycmF5cyBvZiBwbGFuYXIgZGF0YS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJCMDI5MEYgKEludGVycG9sYXRpb24gYW5kIGZ1bmN0aW9uIGFwcHJveGltYXRpb24pOyBDNDEzMCAoSW50ZXJwb2xhdGlvbiBhbmQgZnVuY3Rpb24gYXBwcm94aW1hdGlvbikiLAogIGNvcnBzb3VyY2UgPSAgICJUZWxlZHluZSBSeWFuIEFlcm9uYXV0LiBDby4sIFNhbiBEaWVnbywgQ0EsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImFwcHJveGltYXRpb24gc3BsaW5lczsgY3VydmUgZml0dGluZzsgZGF0YTsgZGF0YSByZWR1Y3Rpb247IGRhdGEgcmVkdWN0aW9uIGFuZCBhbmFseXNpczsgZnVuY3Rpb24gYXBwcm94aW1hdGlvbjsgbGVhc3Q7IGxlYXN0IHNxdWFyZXM7IHBpZWNld2lzZSBjdWJpYzsgcmVkdWN0aW9uOyBzcXVhcmVzIGFwcHJveGltYXRpb25zIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtIb3NraW5zOjE5NzM6Q1NTLAogIGF1dGhvciA9ICAgICAgICJXLiBELiBIb3NraW5zIiwKICB0aXRsZSA9ICAgICAgICAiQ3ViaWMgc3BsaW5lIHNvbHV0aW9ucyB0byBmb3VydGgtb3JkZXIgYm91bmRhcnkgdmFsdWUgcHJvYmxlbXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICI2IiwKICBwYWdlcyA9ICAgICAgICAiMzgyLS0zODUiLAogIG1vbnRoID0gICAgICAgIGp1biwKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY1TDEwIiwKICBNUm51bWJlciA9ICAgICAiNTggMzE4NjEiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhYnN0cmFjdCA9ICAgICAiVGhlIGN1YmljIHNwbGluZSBhcHByb3hpbWF0aW9uIHRvIHRoZSBmb3VydGgtb3JkZXIgZGlmZmVyZW50aWFsIGVxdWF0aW9uICR5JycnJytwKHgpeScnK3EoeCl5JytyKHgpeT10KHgpJCBpcyBzaG93biB0byByZWR1Y2UgdG8gdGhlIHNvbHV0aW9uIG9mIGEgZml2ZS10ZXJtIHJlY3VycmVuY2UgcmVsYXRpb25zaGlwLiBGb3Igc29tZSBzcGVjaWFsIGNhc2VzIHRoZSBhcHByb3hpbWF0aW9uIGlzIHNob3duIHRvIGJlIHNpbXBseSByZWxhdGVkIHRvIGEgZmluaXRlIGRpZmZlcmVuY2UgcmVwcmVzZW50YXRpb24gd2l0aCBhIGxvY2FsIHRydW5jYXRpb24gZXJyb3Igb2Ygb3JkZXIgJCh5LzcyMClcZGVsdGFeOCQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjAyOTBGIChJbnRlcnBvbGF0aW9uIGFuZCBmdW5jdGlvbiBhcHByb3hpbWF0aW9uKTsgQjAyOTBQIChEaWZmZXJlbnRpYWwgZXF1YXRpb25zKTsgQzQxMzAgKEludGVycG9sYXRpb24gYW5kIGZ1bmN0aW9uIGFwcHJveGltYXRpb24pOyBDNDE3MCAoRGlmZmVyZW50aWFsIGVxdWF0aW9ucykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBNYW5pdG9iYSwgV2lubmlwZWcsIE1hbi4sIENhbmFkYSIsCiAga2V5d29yZHMgPSAgICAgIihtYXRoZW1hdGljcyk7IGJvdW5kYXJ5IHZhbHVlIHByb2JsZW07IGJvdW5kYXJ5IHZhbHVlIHByb2JsZW1zOyBib3VuZGFyeS12YWx1ZSBwcm9ibGVtczsgY3ViaWMgc3BsaW5lOyBkaWZmZXJlbnRpYWw7IGRpZmZlcmVudGlhbCBlcXVhdGlvbnM7IGVxdWF0aW9uczsgZm91cnRoIG9yZGVyOyBzcGxpbmVzIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtBbHQ6MTk3MzpDUFQsCiAgYXV0aG9yID0gICAgICAgIkZyYW56IEwuIEFsdCBhbmQgSnVkaXRoIFl1bmkgS2lyayIsCiAgdGl0bGUgPSAgICAgICAgIkNvbXB1dGVyIFBob3RvY29tcG9zaXRpb24gb2YgVGVjaG5pY2FsIFRleHQiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICI2IiwKICBwYWdlcyA9ICAgICAgICAiMzg2LS0zOTEiLAogIG1vbnRoID0gICAgICAgIGp1biwKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIG5vdGUgPSAgICAgICAgICJEZXNjcmliZXMgdGhlIHR5cGVzZXR0aW5nIHN5c3RlbSB1c2VkIGJ5IHRoZSBBbWVyaWNhbiBJbnN0aXR1dGUgb2YgUGh5c2ljcy4iLAogIGFic3RyYWN0ID0gICAgICJJbiBjb21wdXRlciBhc3Npc3RlZCB0eXBlc2V0dGluZyBieSBtZWFucyBvZiBwaG90b2NvbXBvc2l0aW9uLCBzcGVjaWFsIHByb2JsZW1zIGFyaXNlIGluIGhpZ2hseSB0ZWNobmljYWwgbWF0ZXJpYWwgc3VjaCBhcyBtYXRoZW1hdGljYWwgZm9ybXVsYXMuIE5ldyBzb2x1dGlvbnMgdG8gc2V2ZXJhbCBvZiB0aGVzZSBwcm9ibGVtcyBoYXZlIGJlZW4gZGV2aXNlZCBpbiB0aGUgaW5mb3JtYXRpb24gc3lzdGVtIG9mIHRoZSBBbWVyaWNhbiBJbnN0aXR1dGUgb2YgUGh5c2ljcy4gVGhleSBpbmNsdWRlOiB0aGUgcmVwcmVzZW50YXRpb24gb2Ygc3BlY2lhbCBjaGFyYWN0ZXJzIChmb3JlaWduIGFscGhhYmV0cywgbWF0aGVtYXRpY2FsIHN5bWJvbHMsIGV0Yy4pIG5vdCBhdmFpbGFibGUgb24gaW5wdXQga2V5Ym9hcmRzIG9yIG9uIHRoZSBwaG90b2NvbXBvc2VyOyB0aGUgZ2VuZXJhdGlvbiBvZiBzdWNoIHN5bWJvbHMsIGUuZy4gYnkgb3ZlcnByaW50aW5nOyB0aGUgcHJlY2lzZSBwb3NpdGlvbmluZyBvZiBhY2NlbnQgbWFya3MgKGZsb2F0aW5nIGRpYWNyaXRpY3MpOyBsaW5lIGJyZWFrcywgaS5lLiB3b3JkcyBvciBmb3JtdWxhcyBwbGFjZWQgcGFydGx5IGF0IHRoZSBlbmQgb2Ygb25lIGxpbmUgYW5kIHBhcnRseSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuZXh0OyBhbmQgY2VydGFpbiBhc3BlY3RzIG9mIGVycm9yIGNvcnJlY3Rpb24uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzcyMzAgKFB1Ymxpc2hpbmcgYW5kIHJlcHJvZHVjdGlvbikiLAogIGNvcnBzb3VyY2UgPSAgICJBbWVyaWNhbiBJbnN0LiBQaHlzLiwgTmV3IFlvcmssIE5ZLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlcjsgY29tcHV0ZXIgY29udHJvbGxlZCB0eXBlc2V0dGluZzsgZ3JhcGhpY3M7IHBob3RvY29tcG9zaXRpb247IHByaW50aW5nOyB0ZWNobmljYWwgdGV4dDsgdGV4dCBwcm9jZXNzaW5nOyB0eXBlc2V0dGluZyIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7Tm9sYW46MTk3MzpNQ1IsCiAgYXV0aG9yID0gICAgICAgIlJpY2hhcmQgTC4gTm9sYW4iLAogIHRpdGxlID0gICAgICAgICJNYW5hZ2luZyB0aGUgQ29tcHV0ZXIgUmVzb3VyY2U6IFN0YWdlIEh5cG90aGVzaXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICI3IiwKICBwYWdlcyA9ICAgICAgICAiMzk5LS00MDUiLAogIG1vbnRoID0gICAgICAgIGp1bCwKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJCYXNlZCBvbiB0aGUgc3R1ZHkgb2YgZXhwZW5kaXR1cmVzIGZvciBkYXRhIHByb2Nlc3NpbmcsIGEgZGVzY3JpcHRpdmUgc3RhZ2UgaHlwb3RoZXNpcyBpcyBwcmVzZW50ZWQuIEl0IGlzIHN1Z2dlc3RlZCB0aGF0IHRoZSBwbGFubmluZywgb3JnYW5pemluZywgYW5kIGNvbnRyb2xsaW5nIGFjdGl2aXRpZXMgYXNzb2NpYXRlZCB3aXRoIG1hbmFnaW5nIHRoZSBjb21wdXRlciByZXNvdXJjZSB3aWxsIGNoYW5nZSBpbiBjaGFyYWN0ZXIgb3ZlciBhIHBlcmlvZCBvZiB0aW1lLCBhbmQgd2lsbCBldm9sdmUgaW4gcGF0dGVybnMgcm91Z2hseSBjb3JyZWxhdGVkIHRvIGZvdXIgc3RhZ2VzIG9mIHRoZSBjb21wdXRlciBidWRnZXQ6IFN0YWdlIEkgKGNvbXB1dGVyIGFjcXVpc2l0aW9uKSwgU3RhZ2UgSUkgKGludGVuc2Ugc3lzdGVtIGRldmVsb3BtZW50KSwgU3RhZ2UgSUlJIChwcm9saWZlcmF0aW9uIG9mIGNvbnRyb2xzKSwgYW5kIFN0YWdlIElWICh1c2VyXHNsYXNoIHNlcnZpY2Ugb3JpZW50YXRpb24pLiBFYWNoIHN0YWdlIGlzIGRlc2NyaWJlZCBhbmQgcmVsYXRlZCB0byBpbmRpdmlkdWFsIHRhc2tzIGZvciBtYW5hZ2luZyB0aGUgY29tcHV0ZXIgcmVzb3VyY2UuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzAzMTAgKEVEUCBtYW5hZ2VtZW50KSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiSGFydmFyZCBVbml2LiBDYW1icmlkZ2UsIE1BLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXI7IGNvbXB1dGVyIGJ1ZGdldDsgY29tcHV0ZXIgZXhwZW5kaXR1cmVzOyBjb21wdXRlciBtYW5hZ2VtZW50OyBjb21wdXRlciByZXNvdXJjZTsgY29udHJvbDsgZGF0YSBwcm9jZXNzaW5nOyBkYXRhIHByb2Nlc3NpbmcsIGJ1c2luZXNzOyBlY29ub21pY3M7IG1hbmFnZW1lbnQ7IG9yZ2FuaXppbmc7IHBsYW5uaW5nOyByZXNvdXJjZTsgc3RhZ2UgaHlwb3RoZXNpcyIsCiAgdHJlYXRtZW50ID0gICAgIkUgRWNvbm9taWMiLAogIHh4dGl0bGUgPSAgICAgICJNYW5hZ2luZyB0aGUgY29tcHV0ZXIgcmVzb3VyY2U6IGEgc3RhZ2UgaHlwb3RoZXNpcyIsCn0KCkBBcnRpY2xle0h1YW5nOjE5NzM6TklPLAogIGF1dGhvciA9ICAgICAgICJKLiBDLiBIdWFuZyIsCiAgdGl0bGUgPSAgICAgICAgIkEgTm90ZSBvbiBJbmZvcm1hdGlvbiBPcmdhbml6YXRpb24gYW5kIFN0b3JhZ2UiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICI3IiwKICBwYWdlcyA9ICAgICAgICAiNDA2LS00MTAiLAogIG1vbnRoID0gICAgICAgIGp1bCwKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4QTUwIiwKICBNUm51bWJlciA9ICAgICAiNTUgMTM5MDAiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiU2luY2UgdGhlIGxvZ2ljYWwgc3RydWN0dXJlIG9mIGEgZGF0YSBiYXNlIGNhbiBiZSByZXByZXNlbnRlZCBieSBhIHRyZWUgb3IgZ3JhcGgsIGl0IGlzIHF1aXRlIG5hdHVyYWwgZm9yIHVzIHRvIHZpZXcgdGhlIHByb2Nlc3Mgb2YgZGVzaWduaW5nIGEgZGF0YSBiYXNlIGFzIHRoYXQgb2YgY29uc3RydWN0aW5nIGEgdHJlZSBvciBhIGdyYXBoLiBccGFyIEEgZ2VuZXJhbCBtZXRob2QgZm9yIGNvbnN0cnVjdGluZyBzdWNoIGEgdHJlZSBvciBhIGdyYXBoIGlzIHByb3ZpZGVkLiBUaGVyZSBhcmUgdGhyZWUgaW1wb3J0YW50IGVsZW1lbnRzIGluIHRoaXMgZ2VuZXJhbCBjb25zdHJ1Y3Rpb24gbWV0aG9kOyBuYW1lbHksIGEgc2V0IG9mIGJpbmFyeSByZWxhdGlvbnMsIGFuIGFsZ29yaXRobSBmb3IgY29uc3RydWN0aW5nIHN1YnNldHMgb2YgYSBzZXQsIGFuZCBhbiBhbGdvcml0aG0gZm9yIHNlbGVjdGluZyBhbiBlbGVtZW50IGZyb20gdGhlIGdpdmVuIHNldCBvZiBvYmplY3RzLiBUaGUgdXNlIG9mIGRpZmZlcmVudCByZWxhdGlvbnMgYW5kIGFsZ29yaXRobXMgcmVzdWx0cyBpbiBkaWZmZXJlbnQgaW5mb3JtYXRpb24gc3RydWN0dXJlcywgYXMgbGlzdCwgdHJlZSwgcmluZywgZXRjLiBUaHVzIHRoZSBwcm9ibGVtIG9mIGluZm9ybWF0aW9uIG9yZ2FuaXphdGlvbiBhbmQgc3RvcmFnZSBpcyByZWR1Y2VkIHRvIHRoYXQgb2YgZGVmaW5pbmcgcmVsYXRpb25zIGFuZCBmb3JtdWxhdGluZyBhbGdvcml0aG1zIHVuZGVyIGEgZ2l2ZW4gc2V0IG9mIGNvbnN0cmFpbnRzLiBccGFyIFRoZSByZXN1bHRzIHByZXNlbnRlZCBtYXkgYmUgdmFsdWFibGUgdG8gZGVzaWduZXJzIGFzIHVzZWZ1bCBkZXNpZ24gY29uY2VwdHMsIGFuZCBtYXkgc2VydmUgYXMgYSBiYXNpcyBmb3IgZGV2ZWxvcGluZyBhIGZvcm1hbCB0aGVvcnkgb24gdGhlIHN1YmplY3QuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzOyA5MDE7IDkyMSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIEhvdXN0b24sIFRYLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiKG1hdGhlbWF0aWNhbCk7IGRhdGEgYmFzZTsgZGF0YS1iYXNlIG1hbmFnZW1lbnQ7IGZpbGUgb3JnYW5pc2F0aW9uOyBmaWxlIG9yZ2FuaXphdGlvbjsgZ3JhcGg7IGdyYXBoIHRoZW9yeTsgaW5mb3JtYXRpb247IGluZm9ybWF0aW9uIHJldHJpZXZhbDsgaW5mb3JtYXRpb24gcmV0cmlldmFsIHN5c3RlbXM7IGluZm9ybWF0aW9uIHN0cnVjdHVyZTsgbWFuYWdlbWVudDsgbWF0aGVtYXRpY2FsIHRlY2huaXF1ZXMgLS0tIEdyYXBoIFRoZW9yeTsgc3RvcmFnZSBhbGxvY2F0aW9uOyBzdHJ1Y3R1cmU7IHRyZWU7IHRyZWVzIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtLb3pkcm93aWNraToxOTczOkNJQywKICBhdXRob3IgPSAgICAgICAiRWR3YXJkIFcuIEtvemRyb3dpY2tpIGFuZCBEZW5uaXMgVy4gQ29vcGVyIiwKICB0aXRsZSA9ICAgICAgICAie0NPS08gSUlJfTogdGhlIHtDb29wZXItS296fSBDaGVzcyBQcm9ncmFtIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiNyIsCiAgcGFnZXMgPSAgICAgICAgIjQxMS0tNDI3IChvciA0MTEtLTQyNj8/KSIsCiAgbW9udGggPSAgICAgICAganVsLAogIHllYXIgPSAgICAgICAgICIxOTczIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkNPS08gSUlJIGlzIGEgY2hlc3MgcGxheWVyIHdyaXR0ZW4gZW50aXJlbHkgaW4gRm9ydHJhbi4gT24gdGhlIElCTSAzNjAtNjUsIENPS08gSUlJIHBsYXlzIGEgbWluaW1hbCBjaGVzcyBnYW1lIGF0IHRoZSByYXRlIG9mLiAyIHNlYyBjcHUgdGltZSBwZXIgbW92ZSwgd2l0aCBhIGxldmVsIGNsb3NlIHRvIGxvd2VyIGNoZXNzIGNsdWIgcGxheS4gQSBzZWxlY3RpdmUgdHJlZSBzZWFyY2hpbmcgcHJvY2VkdXJlIGNvbnRyb2xsZWQgYnkgdGFjdGljYWwgY2hlc3MgbG9naXN0aWNzIGFsbG93cyBhIGRlcGxveW1lbnQgb2YgbXVsdGlwbGUgbWluaW1hbCBnYW1lIGNhbGN1bGF0aW9ucyB0byBhY2hpZXZlIHNvbWUgb3B0aW1hbCBtb3ZlIHNlbGVjdGlvbi4gSW4gYWRkaXRpb24sIGFuIGludGVyZXN0aW5nIHBoZW5vbWVub24gY2FsbGVkIGEgdHJlZSBzZWFyY2hpbmcgY2F0YXN0cm9waGUgaGFzIHBsYWd1ZWQgQ09LTydzIGVudGlyZSBkZXZlbG9wbWVudCBqdXN0IGFzIGl0IHRyb3VibGVzIGEgaHVtYW4gcGxheWVyLiBTdGFuZGFyZCBleHBvbmVudGlhbCBncm93dGggaXMgY3VyYmVkIHRvIGEgbGFyZ2UgZXh0ZW50IGJ5IHRoZSBkZWZpbml0aW9uIGFuZCB0cmltbWluZyBvZiB0aGUgRmlzY2hlciBzZXQuIFJlcHJlc2VudGF0aW9uIG9mIHRoZSBjaGVzcyBlbnZpcm9ubWVudCBpcyBkZXNjcmliZWQgYWxvbmcgd2l0aCBhIHN0cmF0ZWdpYyBwcmVhbmFseXNpcyBwcm9jZWR1cmUgdGhhdCBtYXBzIHRoZSBMYXNrZXIgcmVnaW9ucy4gU3BlY2lmaWMgY2hlc3MgYWxnb3JpdGhtcyBhcmUgZGVzY3JpYmVkIHdoaWNoIGNvdWxkIGJlIHVzZWQgYXMgYSBjb21tYW5kIHN0cnVjdHVyZSBieSBhbnlvbmUgZGVzaXJpbmcgdG8gZG8gc29tZSBjaGVzcyBwcm9ncmFtIGV4cGVyaW1lbnRhdGlvbi4gQSBjb21wYXJpc29uIGlzIG1hZGUgb2Ygc29tZSBteXN0ZXJpb3VzIGFjdGlvbnMgb2YgaHVtYW4gcGxheWVycyBhbmQgQ09LTyBJSUkuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzEyMzAgKEFydGlmaWNpYWwgaW50ZWxsaWdlbmNlKTsgQzc4MTAgKFNvY2lhbCBhbmQgYmVoYXZpb3VyYWwgc2NpZW5jZXMgY29tcHV0aW5nKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gQ2FsaWZvcm5pYSwgRGF2aXMsIENBLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2U7IGNoZXNzIHByb2dyYW07IENPS08gSUlJOyBjb21wdXRlciBzeXN0ZW1zIHByb2dyYW1taW5nOyBGT1JUUkFOOyBnYW1lcyBvZiBza2lsbDsgaGV1cmlzdGljIHByb2dyYW1taW5nOyBtaW5pbWFsIGNoZXNzIGdhbWU7IHNlbGVjdGl2ZSBzZWFyY2hpbmc7IHRyZWUgc2VhcmNoaW5nIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbiIsCn0KCkBBcnRpY2xle0hvd2FyZDoxOTczOk1TRCwKICBhdXRob3IgPSAgICAgICAiSm9obiBILiB7SG93YXJkLCBKci59IiwKICB0aXRsZSA9ICAgICAgICAiTWl4ZWQgU29sdXRpb25zIGZvciB0aGUgRGVhZGxvY2sgUHJvYmxlbSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNiIsCiAgbnVtYmVyID0gICAgICAgIjciLAogIHBhZ2VzID0gICAgICAgICI0MjctLTQzMCIsCiAgbW9udGggPSAgICAgICAganVsLAogIHllYXIgPSAgICAgICAgICIxOTczIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9QYXJhbGxlbC9NdWx0aS5iaWIiLAogIGFic3RyYWN0ID0gICAgICJNaXh0dXJlcyBvZiBkZXRlY3Rpb24sIGF2b2lkYW5jZSwgYW5kIHByZXZlbnRpb24gcHJvdmlkZSBtb3JlIGVmZmVjdGl2ZSBhbmQgcHJhY3RpY2FsIHNvbHV0aW9ucyB0byB0aGUgZGVhZGxvY2sgcHJvYmxlbSB0aGFuIGFueSBvbmUgb2YgdGhlc2UgYWxvbmUuIFRoZSBpbmRpdmlkdWFsIHRlY2huaXF1ZXMgY2FuIGJlIHRhaWxvcmVkIGZvciBzdWJwcm9ibGVtcyBvZiByZXNvdXJjZSBhbGxvY2F0aW9uIGFuZCBzdGlsbCBvcGVyYXRlIHRvZ2V0aGVyIHRvIHByZXZlbnQgZGVhZGxvY2tzLiBUaGlzIHBhcGVyIHByZXNlbnRzIGEgbWV0aG9kLCBiYXNlZCBvbiB0aGUgY29uY2VwdCBvZiB0aGUgaGllcmFyY2hpY2FsIG9wZXJhdGluZyBzeXN0ZW0sIGZvciBjb25zdHJ1Y3RpbmcgYXBwcm9wcmlhdGUgbWl4dHVyZXMgYW5kIHN1Z2dlc3RzIGFwcHJvcHJpYXRlIHN1YnN5c3RlbXMgZm9yIHRoZSBtb3N0IGZyZXF1ZW50bHkgb2NjdXJyaW5nIHJlc291cmNlIGFsbG9jYXRpb24gcHJvYmxlbXMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxNTBKIChPcGVyYXRpbmcgc3lzdGVtcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIFRleGFzLCBBdXN0aW4sIFRYLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgb3BlcmF0aW5nIHN5c3RlbXM7IGNvbXB1dGVyIHN5c3RlbXMgcHJvZ3JhbW1pbmcgLS0tIE11bHRpcHJvZ3JhbW1pbmc7IGRlYWRsb2NrIHByb2JsZW07IGRlYWRsb2NrczsgaGllcmFyY2hpY2FsIHN5c3RlbXM7IG1peGVkIHNvbHV0aW9uczsgbXVsdGlwcm9ncmFtbWluZzsgb3BlcmF0aW5nIHN5c3RlbXM7IG9wZXJhdGluZyBzeXN0ZW1zIChjb21wdXRlcnMpOyByZXNvdXJjZSBhbGxvY2F0aW9uIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtHZWxlbmJlOjE5NzM6RFBQLAogIGF1dGhvciA9ICAgICAgICJFcm9sIEdlbGVuYmUiLAogIHRpdGxlID0gICAgICAgICJEaXN0cmlidXRpb24gb2YgYSBQcm9ncmFtIGluIFByaW1hcnkgYW5kIEZhc3QgQnVmZmVyIFN0b3JhZ2UiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICI3IiwKICBwYWdlcyA9ICAgICAgICAiNDMxLS00MzQiLAogIG1vbnRoID0gICAgICAgIGp1bCwKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJBIHZpcnR1YWwgbWVtb3J5IGNvbXB1dGVyIHN5c3RlbSB3aXRoIGEgZmFzdCBidWZmZXIgKGNhY2hlKSBtZW1vcnkgYmV0d2VlbiBwcmltYXJ5IG1lbW9yeSBhbmQgY2VudHJhbCBwcm9jZXNzaW5nIHVuaXQgaXMgY29uc2lkZXJlZC4gVGhlIG9wdGltYWwgZGlzdHJpYnV0aW9uIG9mIGEgcHJvZ3JhbSBiZXR3ZWVuIHRoZSBidWZmZXIgYW5kIHByaW1hcnkgbWVtb3J5IGlzIHN0dWRpZWQgdXNpbmcgdGhlIHByb2dyYW0ncyBsaWZldGltZSBmdW5jdGlvbi4gRXhwcmVzc2lvbnMgZm9yIHRoZSBkaXN0cmlidXRpb24gb2YgYSBwcm9ncmFtIHdoaWNoIG1heGltaXplcyB0aGUgdXNlZnVsIGZyYWN0aW9uIG9mIHRoZSBjb3N0LXRpbWUgaW50ZWdyYWwgb2YgcHJpbWFyeSBhbmQgZmFzdCBidWZmZXIgc3RvcmFnZSBhcmUgb2J0YWluZWQgZm9yIHN3YXBwaW5nIGFuZCBub25zd2FwcGluZyBidWZmZXIgbWFuYWdlbWVudCBwb2xpY2llcy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY2FjaGU7IGNvbXB1dGVyIHN5c3RlbXMgcHJvZ3JhbW1pbmc7IGNvc3QgdGltZSBpbnRlZ3JhbDsgZGlzdHJpYnV0aW9uIG9mIGEgcHJvZ3JhbTsgZmFzdCBidWZmZXI7IGZ1bmN0aW9uOyBsaWZldGltZTsgbGlmZXRpbWUgZnVuY3Rpb247IHN0b3JhZ2U7IHZpcnR1YWwgbWVtb3J5OyB2aXJ0dWFsIG1lbW9yeSBjb21wdXRlciBzeXN0ZW07IHZpcnR1YWwgc3RvcmFnZSIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7Um9zaW46MTk3MzpUUCwKICBhdXRob3IgPSAgICAgICAiUm9iZXJ0IEYuIFJvc2luIiwKICB0aXRsZSA9ICAgICAgICAiVGVhY2hpbmcgYGBBYm91dCBQcm9ncmFtbWluZycnIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiNyIsCiAgcGFnZXMgPSAgICAgICAgIjQzNS0tNDM5IiwKICBtb250aCA9ICAgICAgICBqdWwsCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiVGhpcyBwYXBlciBwcmVzZW50cyB0aGUgZ29hbHMgYW5kIG9yZ2FuaXphdGlvbiBvZiBhIGNvdXJzZSBhYm91dCBwcm9ncmFtbWluZyBkZXNpZ25lZCB0byBwcm92aWRlIGVudGVyaW5nIHN0dWRlbnRzIGluIGEgZ3JhZHVhdGUgcHJvZ3JhbSB3aXRoIGEgY3VsdHVyYWwgZW5yaWNobWVudCBpbiB0aGVpciBwcm9mZXNzaW9uYWwgbGl2ZXMuIFRoZSBzdHVkZW50cyBhcmUgZXhwZWN0ZWQgdG8gaGF2ZSB0YWtlbiBhdCBsZWFzdCB0d28gcHJvZ3JhbW1pbmcgY291cnNlcyBwcmlvciB0byB0aGlzIG9uZSBhbmQsIHRoZXJlZm9yZSwgdG8gYmUgZmFtaWxpYXIgd2l0aCBhdCBsZWFzdCB0d28gcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzLCBib3RoIGFzIHN0dWRlbnRzIGFuZCB1c2Vycy4gVGVhY2hpbmcgc29tZW9uZSBob3cgdG8gcHJvZ3JhbSBpcyBzaW1pbGFyIHRvIHRlYWNoaW5nIGhpbSB0byBwbGF5IGEgbXVzaWNhbCBpbnN0cnVtZW50OiBuZWl0aGVyIHNraWxsIGNhbiBiZSB0YXVnaHQtdGhleSBtdXN0IGJlIGxlYXJuZWQuIEhvd2V2ZXIsIHRoZSB0ZWFjaGVyIHN0aWxsIHNlcnZlcyBzZXZlcmFsIHZpdGFsIHB1cnBvc2VzOiB0byBwcmVzZW50IGEgc2V0IG9mIHJ1bGVzIGZvciBwcm9kdWNpbmcgd2VsbC1mb3JtZWQgdXR0ZXJhbmNlczsgdG8gb2ZmZXIgbnVtZXJvdXMgZGVtb25zdHJhdGlvbnMgb2YgaGlzIG93biBza2lsbDsgYW5kIHRvIGZ1bmN0aW9uIGFzIGFuIGludm9sdmVkIGNyaXRpYy4gRmluYWxseSwgdGhlIHRlYWNoZXIgaXMgdGhlIHNvdXJjZSBvZiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcHJvY2VzcyBpbiB3aGljaCB0aGUgc3R1ZGVudCBpcyBpbnZvbHZlZC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDMDIyMCAoQ29tcHV0aW5nIGVkdWNhdGlvbiBhbmQgdHJhaW5pbmcpOyBDNjExMCAoU3lzdGVtcyBhbmFseXNpcyBhbmQgcHJvZ3JhbW1pbmcpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBBYXJodXMsIERlbm1hcmsiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgc3lzdGVtcyBwcm9ncmFtbWluZzsgZWR1Y2F0aW9uOyBwcm9mZXNzaW9uYWxpc207IHByb2dyYW1taW5nOyBwcm9ncmFtbWluZyBjb25jZXB0czsgdGVhY2hpbmciLAp9CgpAQXJ0aWNsZXtNY0ZhcmxhbjoxOTczOkNSRywKICBhdXRob3IgPSAgICAgICAiRi4gV2FycmVuIE1jRmFybGFuIGFuZCBSaWNoYXJkIEwuIE5vbGFuIiwKICB0aXRsZSA9ICAgICAgICAiQ3VycmljdWx1bSBSZWNvbW1lbmRhdGlvbnMgZm9yIEdyYWR1YXRlIFByb2Zlc3Npb25hbCBQcm9ncmFtcyBpbiBJbmZvcm1hdGlvbiBTeXN0ZW1zOiBSZWNvbW1lbmRlZCBBZGRlbmR1bSBvbiBJbmZvcm1hdGlvbiBTeXN0ZW1zIEFkbWluaXN0cmF0aW9uIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiNyIsCiAgcGFnZXMgPSAgICAgICAgIjQzOS0tNDQyIChvciA0MzktLTQ0MT8/KSIsCiAgbW9udGggPSAgICAgICAganVsLAogIHllYXIgPSAgICAgICAgICIxOTczIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkFuIGFkZGVuZHVtIHRvIHRoZSBSZXBvcnQgb2YgdGhlIEFDTSBDdXJyaWN1bHVtIENvbW1pdHRlZSBvbiBDb21wdXRlciBFZHVjYXRpb24gZm9yIE1hbmFnZW1lbnQgaXMgcHJvcG9zZWQuIFRoZSBwcm9wb3NlZCBhZGRlbmR1bSBpcyB0byBpbmNsdWRlIGluIHRoZSBjdXJyaWN1bHVtIGEgY291cnNlIG9uIEluZm9ybWF0aW9uIFN5c3RlbXMgYWRtaW5pc3RyYXRpb24uIEl0IGlzIGltcG9ydGFudCBmb3IgdHdvIHJlYXNvbnM6ICgxKSB0aGUgc3lzdGVtcyBkZXNpZ25lciBtdXN0IHVuZGVyc3RhbmQgdGhlIGFkbWluaXN0cmF0aXZlIGZyYW1ld29yayBpbiB3aGljaCBoZSBtdXN0IG9wZXJhdGUgdG8gd29yayBlZmZlY3RpdmVseSwgYW5kICgyKSBhbiBpbXBvcnRhbnQgb2JqZWN0aXZlIG9mIHRoZSBjdXJyaWN1bHVtIHJlY29tbWVuZGF0aW9ucyBpcyB0byBwcmVwYXJlIHRoZSBmdXR1cmUgbWFuYWdlciBvZiB0aGUgY29tcHV0ZXIgYWN0aXZpdHkuIFxwYXIgSXQgaXMgZmVsdCB0aGF0IHRoZSBpbXBvcnRhbmNlIG9mIHRoZXNlIHR3byByZWFzb25zIGp1c3RpZmllcyB0aGUgYWRkaXRpb24gb2YgdGhlIHJlY29tbWVuZGVkIGNvdXJzZS4gXHBhciBUaGUgY291cnNlIGlzIG91dGxpbmVkIGluIHRoZSBmb3JtYXQgb2YgdGhlIG9yaWdpbmFsIHJlcG9ydC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDMDIyMCAoQ29tcHV0aW5nIGVkdWNhdGlvbiBhbmQgdHJhaW5pbmcpOyBDMDMxMCAoRURQIG1hbmFnZW1lbnQpOyBDNzEwMCAoQnVzaW5lc3MgYW5kIGFkbWluaXN0cmF0aW9uKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzOyA5MDEiLAogIGNvcnBzb3VyY2UgPSAgICJIYXJ2YXJkIFVuaXYuLCBDYW1icmlkZ2UsIE1BLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYWRtaW5pc3RyYXRpb247IGNvbXB1dGVyIG1hbmFnZW1lbnQ7IGN1cnJpY3VsdW0gcmVjb21tZW5kYXRpb25zOyBlZHVjYXRpb247IGluZm9ybWF0aW9uIHJldHJpZXZhbCBzeXN0ZW1zOyBpbmZvcm1hdGlvbiBzeXN0ZW1zOyBpbmZvcm1hdGlvbiBzeXN0ZW1zIGFkbWluaXN0cmF0aW9uOyBpbmZvcm1hdGlvbiBzeXN0ZW1zIG1hbmFnZW1lbnQ7IG1hbmFnZW1lbnQ7IG1hbmFnZW1lbnQgaW5mb3JtYXRpb24gc3lzdGVtcyIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7S2FuZGVsOjE5NzM6Q1NTLAogIGF1dGhvciA9ICAgICAgICJBLiBLYW5kZWwiLAogIHRpdGxlID0gICAgICAgICJDb21wdXRlciBTY2llbmNlIC0tLSBTZW1pbmFycyBmb3IgVW5kZXJncmFkdWF0ZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICI3IiwKICBwYWdlcyA9ICAgICAgICAiNDQyLS00NDIiLAogIG1vbnRoID0gICAgICAgIGp1bCwKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDMDIyMCAoQ29tcHV0aW5nIGVkdWNhdGlvbiBhbmQgdHJhaW5pbmcpIiwKICBjb3Jwc291cmNlID0gICAiTmV3IE1leGljbyBJbnN0LiBNaW5pbmcgVGVjaG5vbC4sIFNvY2NvcnJvLiwgTk0sIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIHNjaWVuY2U7IGN1cnJpY3VsdW07IGRpZ2l0YWwgY29tcHV0ZXJzOyBlZHVjYXRpb247IHNlbWluYXJzOyB1bmRlcmdyYWR1YXRlcyIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIHNjaWVuY2U7IGN1cnJpY3VsdW07IGVkdWNhdGlvbjsgZnV6enkgZWR1Y2F0aW9uYWwgc3RydWN0dXJlOyBpbXByZWNpc2Ugc3ludGhlc2lzIiwKICB0cmVhdG1lbnQgPSAgICAiRyBHZW5lcmFsIFJldmlldzsgUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtCb2NobWFubjoxOTczOk1FTCwKICBhdXRob3IgPSAgICAgICAiRy4gVi4gQm9jaG1hbm4iLAogIHRpdGxlID0gICAgICAgICJNdWx0aXBsZSBFeGl0cyBmcm9tIGEgTG9vcCBXaXRob3V0IHRoZSB7R09UT30iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICI3IiwKICBwYWdlcyA9ICAgICAgICAiNDQzLS00NDQiLAogIG1vbnRoID0gICAgICAgIGp1bCwKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjE0MCAoUHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIE1vbnRyZWFsLCBRdWUuLCBDYW5hZGEiLAogIGtleXdvcmRzID0gICAgICJjb250cm9sIHN0cnVjdHVyZXM7IGV4aXQgc3RhdGVtZW50OyBmcm9tIGxvb3BzOyBnb3RvIGZyZWUgcHJvZ3JhbW1pbmc7IG11bHRpcGxlIGV4aXRzOyBtdWx0aXBsZSBleGl0cyBmcm9tIGxvb3BzOyBwcm9ncmFtbWluZyBsYW5ndWFnZXMiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0hhbGw6MTk3MzpFQkEsCiAgYXV0aG9yID0gICAgICAgIlBhdHJpY2sgQS4gVi4gSGFsbCIsCiAgdGl0bGUgPSAgICAgICAgIkVxdWl2YWxlbmNlIEJldHdlZW4ge0FORFxzbGFzaCBPUn0gR3JhcGhzIGFuZCBDb250ZXh0LUZyZWUgR3JhbW1hcnMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICI3IiwKICBwYWdlcyA9ICAgICAgICAiNDQ0LS00NDUiLAogIG1vbnRoID0gICAgICAgIGp1bCwKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDMTIzMCAoQXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UpOyBDNDIxMCAoRm9ybWFsIGxvZ2ljKSIsCiAgY29ycHNvdXJjZSA9ICAgIkNpdHkgVW5pdi4sIExvbmRvbiwgVUsiLAogIGtleXdvcmRzID0gICAgICJBTkQvT1IgZ3JhcGhzOyBhcnRpZmljaWFsIGludGVsbGlnZW5jZTsgY29udGV4dCBmcmVlIGdyYW1tYXJzOyBjb250ZXh0LWZyZWUgZ3JhbW1hcnM7IGVxdWl2YWxhbmNlOyBncmFwaCB0aGVvcnk7IGxhbmd1YWdlIHRoZW9yeSIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7RmlhbGE6MTk3MzpBQVMsCiAgYXV0aG9yID0gICAgICAgIkYuIEZpYWxhIiwKICB0aXRsZSA9ICAgICAgICAie0FDTX0gQWxnb3JpdGhtIDQ0OTogU29sdXRpb24gb2YgTGluZWFyIFByb2dyYW1taW5nIFByb2JsZW1zIGluIDAtMSBWYXJpYWJsZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICI3IiwKICBwYWdlcyA9ICAgICAgICAiNDQ1LS00NDggKG9yIDQ0NS0tNDQ3Pz8pIiwKICBtb250aCA9ICAgICAgICBqdWwsCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjAyNjAgKE9wdGltaXNhdGlvbiB0ZWNobmlxdWVzKTsgQzExODAgKE9wdGltaXNhdGlvbiB0ZWNobmlxdWVzKTsgQzczMTAgKE1hdGhlbWF0aWNzIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBBbGJlcnRhLCBFZG1vbnRvbiwgQWx0YS4sIENhbmFkYSIsCiAga2V5d29yZHMgPSAgICAgIkZPUlRSQU47IGxpbmVhciBwcm9ncmFtbWluZzsgc3Vicm91dGluZTsgc3Vicm91dGluZXM7IHplcm8gb25lIHByb2dyYW1taW5nIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtLZXJuaWdoYW46MTk3MzpSQU0sCiAgYXV0aG9yID0gICAgICAgIkIuIFcuIEtlcm5pZ2hhbiIsCiAgdGl0bGUgPSAgICAgICAgIlJlbWFyayBvbiB7YGBBbGdvcml0aG0gNDIyOiBNaW5pbWFsIFNwYW5uaW5nIFRyZWUnJ30iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICI3IiwKICBwYWdlcyA9ICAgICAgICAiNDQ4LS00NDgiLAogIG1vbnRoID0gICAgICAgIGp1bCwKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIG5vdGUgPSAgICAgICAgICJTZWUgXGNpdGV7V2hpdG5leToxOTcyOkFBTX0uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzczMTAgKE1hdGhlbWF0aWNzIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJCZWxsIFRlbGVwaG9uZSBMYWJzLiBJbmMuLCBNdXJyYXkgSGlsbCwgTkosIFVTQSIsCiAga2V5d29yZHMgPSAgICAgIm1pbmltYWwgc3Bhbm5pbmcgdHJlZTsgc3Vicm91dGluZTsgdHJlZXMgKG1hdGhlbWF0aWNhbCkiLAogIGtleXdvcmRzID0gICAgICJtaW5pbWFsIHNwYW5uaW5nIHRyZWU7IFByaW0gYWxnb3JpdGhtOyBzcGFubmluZyB0cmVlIiwKfQoKQEFydGljbGV7TWFjbGVvZDoxOTczOkhQUCwKICBhdXRob3IgPSAgICAgICAiSS4gRC4gRy4gTWFjbGVvZCBhbmQgQS4gTS4gQ29sbGlucyIsCiAgdGl0bGUgPSAgICAgICAgIkhpZGRlbi1saW5lIHBsb3R0aW5nIHByb2dyYW0iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICI3IiwKICBwYWdlcyA9ICAgICAgICAiNDQ4LS00NDgiLAogIG1vbnRoID0gICAgICAgIGp1bCwKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNTU0MCAoVGVybWluYWxzIGFuZCBncmFwaGljIGRpc3BsYXlzKTsgQzYxMzAgKERhdGEgaGFuZGxpbmcgdGVjaG5pcXVlcykiLAogIGNvcnBzb3VyY2UgPSAgICJBdXN0cmFsaWFuIE5hdC4gVW5pdi4sIENhbmJlcnJhLCBBdXN0cmFsaWEiLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBncmFwaGljczsgZGF0YSBoYW5kbGluZzsgaGlkZGVuIGxpbmU7IHN1cmZhY2UgcGxvdCIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7Tmlrb2xhaToxOTczOkRTTywKICBhdXRob3IgPSAgICAgICAiUC4gSi4gTmlrb2xhaSIsCiAgdGl0bGUgPSAgICAgICAgIntESUZTVUJ9IGZvciBzb2x1dGlvbiBvZiBvcmRpbmFyeSBkaWZmZXJlbnRpYWwgZXF1YXRpb25zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiNyIsCiAgcGFnZXMgPSAgICAgICAgIjQ0OC0tNDQ4IiwKICBtb250aCA9ICAgICAgICBqdWwsCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjAyOTBQIChEaWZmZXJlbnRpYWwgZXF1YXRpb25zKTsgQzQxNzAgKERpZmZlcmVudGlhbCBlcXVhdGlvbnMpOyBDNzMxMCAoTWF0aGVtYXRpY3MgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIldyaWdodC1QYXR0ZXJzb24gQWlyIEZvcmNlIEJhc2UsIE9ILCBVU0EiLAogIGtleXdvcmRzID0gICAgICJib3VuZGFyeSB2YWx1ZTsgY2VydGlmaWNhdGlvbjsgZGlmZmVyZW50aWFsIGVxdWF0aW9uczsgRElGU1VCOyBvcmRpbmFyeSBkaWZmZXJlbnRpYWwgZXF1YXRpb25zOyBwcm9ibGVtcyIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7U21pdGg6MTk3MzpMUFcsCiAgYXV0aG9yID0gICAgICAgIk1pY2hhZWwgSC4gU21pdGgiLAogIHRpdGxlID0gICAgICAgICJBIGxlYXJuaW5nIHByb2dyYW0gd2hpY2ggcGxheXMgcGFydG5lcnNoaXAgZG9taW5vZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICI4IiwKICBwYWdlcyA9ICAgICAgICAiNDYyLS00NjciLAogIG1vbnRoID0gICAgICAgIGF1ZywKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJBIGxlYXJuaW5nIHByb2dyYW0gaGFzIGJlZW4gd3JpdHRlbiBpbiBCQVNJQyB0byBwbGF5IGZvdXItcGxheWVyIHBhcnRuZXJzaGlwIGRvbWlub2VzLiBCZWNhdXNlIGRvbWlub2VzIGlzIGEgZ2FtZSBvZiBpbmNvbXBsZXRlIGluZm9ybWF0aW9uLCB0aGUgcHJvZ3JhbSB1c2VzIHNvbWV3aGF0IGRpZmZlcmVudCBwcmluY2lwbGVzIG9mIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIGZyb20gdGhvc2UgdXNlZCBpbiBwcm9ncmFtcyBmb3IgZ2FtZXMgb2YgY29tcGxldGUgaW5mb3JtYXRpb24sIHN1Y2ggYXMgY2hlY2tlcnMsIGNoZXNzLCBhbmQgZ28uIFRoZSBwcm9ncmFtIHdhcyBjb25zdHJ1Y3RlZCB0byB1c2UgYSBgYHN0cmF0ZWd5IHNpZ25hdHVyZSB0YWJsZScnIHdoaWNoIGNsYXNzaWZpZXMgYm9hcmQgc2l0dWF0aW9ucyB0aHJvdWdoIHRoZSBpbnRlcmFjdGlvbnMgb2YgZ2FtZSBwYXJhbWV0ZXJzLiBFYWNoIGVudHJ5IGluIHRoZSB0YWJsZSBjb250YWlucyBhZGFwdGl2ZWx5IGRldGVybWluZWQgd2VpZ2h0cyBpbmRpY2F0aW5nIHRoZSBhZHZpc2FiaWxpdHkgb2YgdmFyaW91cyBzdHJhdGVnaWVzLiBPbmNlIGNob3NlbiwgYSBzdHJhdGVneSB0aGVuIGVtcGxveXMgcHJvYmFiaWxpdHkgYW5hbHlzaXMgYW5kIGxpbmVhciBwb2x5bm9taWFsIGV2YWx1YXRpb24gdG8gY2hvb3NlIGEgbW92ZS4gT3VyIHByb2dyYW0gd2lucyBhcHByb3hpbWF0ZWx5IHR3by10aGlyZHMgb2YgaXRzIGdhbWVzIGluIHRvdXJuYW1lbnQgc2l0dWF0aW9ucywgYW5kIGhhcyBkZWZlYXRlZCBjaGFtcGlvbnNoaXAgcGxheWVycy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDMTIzMCAoQXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UpOyBDNzg5MCAoT3RoZXIgc3BlY2lhbCBhcHBsaWNhdGlvbnMgb2YgY29tcHV0aW5nKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNDYxOyA5MTIiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBDYWxpZm9ybmlhLCBCZXJrZWxleSwgQ0EsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhcnRpZmljaWFsIGludGVsbGlnZW5jZTsgQkFTSUM7IGdhbWUgcGxheWluZzsgZ2FtZXMgb2Ygc2tpbGw7IGhldXJpc3RpYzsgaW50ZWxsaWdlbmNlOyBsZWFybmluZyBwcm9ncmFtOyBsZWFybmluZzogaGV1cmlzdGljIHByb2NlZHVyZXM7IHBhcnRuZXJzaGlwIGRvbWlub2VzOyBwcm9ibGVtOyBwcm9ncmFtbWluZzsgc29sdmluZzsgc3lzdGVtcyBzY2llbmNlIGFuZCBjeWJlcm5ldGljcyIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7TWFjTGVubmFuOjE5NzM6RkFCLAogIGF1dGhvciA9ICAgICAgICJCLiBKLiBNYWNMZW5uYW4iLAogIHRpdGxlID0gICAgICAgICJ7RmVufSAtLS0gYW4gQXhpb21hdGljIEJhc2lzIGZvciBQcm9ncmFtIFNlbWFudGljcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNiIsCiAgbnVtYmVyID0gICAgICAgIjgiLAogIHBhZ2VzID0gICAgICAgICI0NjgtLTQ3NCIsCiAgbW9udGggPSAgICAgICAgYXVnLAogIHllYXIgPSAgICAgICAgICIxOTczIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjhBMDUgKDAyRzk5KSIsCiAgTVJudW1iZXIgPSAgICAgIjUxIDk1NjEiLAogIG1ycmV2aWV3ZXIgPSAgICJXLiBELiBNYXVyZXIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiVGhlIG5vdGlvbnMgb2YgZGF0YSBpdGVtLCBmdW5jdGlvbiwgYW5kIHJlbGF0aW9uLiBJdCBpcyBhcmd1ZWQgdGhhdCB0aGUgc3lzdGVtIGlzIG1vcmUgc3VpdGFibGUgdGhhbiBzZXQgdGhlb3J5IChvciBpdHMgZGVyaXZhdGl2ZXMpIGZvciB0aGUgY29uY2lzZSBhbmQgYWNjdXJhdGUgZGVzY3JpcHRpb24gb2YgcHJvZ3JhbSBzZW1hbnRpY3MuIEl0IGlzIHNob3duIGhvdyB0aGUgc3lzdGVtIGNhbiBiZSB1c2VkIHRvIGJ1aWxkIGNvbXBvc2l0ZSBkYXRhIHR5cGVzIG91dCBvZiBzaW1wZXIgb25lcyB3aXRoIHRoZSBvcGVyYXRpb25zIG9mIHJvd2luZywgc3RydWN0dXJpbmcsIGFuZCB1bml0aW5nLiBJdCBpcyBhbHNvIGRlbW9uc3RyYXRlZCB0aGF0IGNvbXBsZXRlbHkgbmV3IHByaW1pdGl2ZSB0eXBlcyBjYW4gYmUgaW50cm9kdWNlZCBpbnRvIGxhbmd1YWdlcyB0aHJvdWdoIHRoZSBtZWNoYW5pc20gb2Ygc2luZ2xldG9uIGRhdGEgdHlwZXMuIEJvdGggZGV0ZXJtaW5pc3RpYyBhbmQgbm9uZGV0ZXJtaW5pc3RpYyBmdW5jdGlvbnMgYXJlIHNob3duIHRvIGJlIGRlZmluYWJsZSBpbiB0aGUgc3lzdGVtLiBccGFyIEl0IGlzIGRlc2NyaWJlZCBob3cgdGhlIGxvY2FsIGVudmlyb25tZW50IGNhbiBiZSBtb2RlbGVkIGFzIGEgZGF0YSBpdGVtIGFuZCBob3cgaW1wZXJhdGl2ZSBzdGF0ZW1lbnRzIGNhbiBiZSBjb25zaWRlcmVkIGZ1bmN0aW9ucyBvbiB0aGUgZW52aXJvbm1lbnQuIFRoZSBuYXR1cmUgb2YgcmVjdXJzaXZlIGZ1bmN0aW9ucyBpcyBicmllZmx5IGRpc2N1c3NlZCwgYW5kIGEgdGVjaG5pcXVlIGlzIHByZXNlbnRlZCBieSB3aGljaCB0aGV5IGNhbiBiZSBpbnRyb2R1Y2VkIGludG8gdGhlIHN5c3RlbS4gVGhlIHRlY2huaXF1ZSBpcyBjb250cmFzdGVkIHdpdGggdGhlIHVzZSBvZiB0aGUgcGFyYWRveGljYWwgY29tYmluYXRvciwgWS4gVGhlIHF1ZXN0aW9ucyBvZiBsb2NhbCBhbmQgZ2xvYmFsIGVudmlyb25tZW50cyBhbmQgb2YgdmFyaW91cyBtb2RlcyBvZiBmdW5jdGlvbiBjYWxsaW5nIGFuZCBwYXJhbWV0ZXIgcGFzc2luZyBhcmUgdG91Y2hlZCB1cG9uLiBUaGUgdGhlb3J5IGlzIGFwcGxpZWQgdG8gdGhlIHByb29mIG9mIHNldmVyYWwgZWxlbWVudGFyeSB0aGVvcmVtcyBjb25jZXJuaW5nIHRoZSBzZW1hbnRpY3Mgb2YgdGhlIGFzc2lnbm1lbnQsIGNvbmRpdGlvbmFsLCBhbmQgaXRlcmF0aXZlIHN0YXRlbWVudHMuIEFuIGFwcGVuZGl4IGlzIGluY2x1ZGVkIHdoaWNoIHByZXNlbnRzIGluIGRldGFpbCB0aGUgZm9ybWFsIHN5c3RlbSBnb3Zlcm5pbmcgd2VicyBhbmQgZmVuLCB0aGUgYWJzdHJhY3Rpb25zIHVzZWQgaW5mb3JtYWxseSBpbiB0aGUgYm9keSBvZiB0aGUgcGFwZXIuIiwKICBhYnN0cmFjdDIgPSAgICAiQSBmb3JtYWwgc3lzdGVtIGlzIHByZXNlbnRlZCB3aGljaCBhYnN0cmFjdHMgdGhlIG5vdGlvbnMgb2YgZGF0YSBpdGVtLCBmdW5jdGlvbiwgYW5kIHJlbGF0aW9uLiBJdCBpcyBzaG93biBob3cgdGhlIHN5c3RlbSBjYW4gYmUgdXNlZCB0byBidWlsZCBjb21wb3NpdGUgZGF0YSB0eXBlcyBvdXQgb2Ygc2ltcGxlciBvbmVzIHdpdGggdGhlIG9wZXJhdGlvbnMgb2Ygcm93aW5nLCBzdHJ1Y3R1cmluZywgYW5kIHVuaXRpbmcuIEl0IGlzIGFsc28gZGVtb25zdHJhdGVkIHRoYXQgY29tcGxldGVseSBuZXcgcHJpbWl0aXZlIHR5cGVzIGNhbiBiZSBpbnRyb2R1Y2VkIGludG8gbGFuZ3VhZ2VzIHRocm91Z2ggdGhlIG1lY2hhbmlzbSBvZiBzaW5nbGV0b24gZGF0YSB0eXBlcy4gQm90aCBkZXRlcm1pbmlzdGljIGFuZCBub25kZXRlcm1pbmlzdGljIGZ1bmN0aW9ucyBhcmUgc2hvd24gdG8gYmUgZGVmaW5hYmxlIGluIHRoZSBzeXN0ZW0uIEl0IGlzIGRlc2NyaWJlZCBob3cgdGhlIGxvY2FsIGVudmlyb25tZW50IGNhbiBiZSBtb2RlbGVkIGFzIGEgZGF0YSBpdGVtIGFuZCBob3cgaW1wZXJhdGl2ZSBzdGF0ZW1lbnRzIGNhbiBiZSBjb25zaWRlcmVkIGZ1bmN0aW9ucyBvbiB0aGUgZW52aXJvbm1lbnQuIFRoZSBuYXR1cmUgb2YgcmVjdXJzaXZlIGZ1bmN0aW9ucyBpcyBicmllZmx5IGRpc2N1c3NlZCwgYW5kIGEgdGVjaG5pcXVlIGlzIHByZXNlbnRlZCBieSB3aGljaCB0aGV5IGNhbiBiZSBpbnRyb2R1Y2VkIGludG8gdGhlIHN5c3RlbS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDIxMCAoRm9ybWFsIGxvZ2ljKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiRmxvcmlkYSBTdGF0ZSBVbml2LiwgVGFsbGFoYXNzZWUsIEZMLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYXhpb21zOyBjb21wdXRlciBtZXRhdGhlb3J5OyBjb3JyZWN0bmVzczsgZGF0YTsgZGF0YSBzdHJ1Y3R1cmVzOyBkYXRhIHR5cGVzOyBkZWZpbml0aW9uOyBkZXNjcmlwdGlvbiBsYW5ndWFnZXM7IGV4dGVuc2libGUgbGFuZ3VhZ2VzOyBmZW47IGZvcm1hbCBkZXNjcmlwdGlvbjsgZm9ybWFsIGxhbmd1YWdlOyBmb3JtYWwgbGFuZ3VhZ2UgZGVmaW5pdGlvbjsgZm9ybWFsIGxhbmd1YWdlczsgZm9ybWFsIHN5c3RlbXM7IGxhbWJkYS1jYWxjdWx1czsgbW9kZWxzIG9mIGNvbXB1dGF0aW9uOyBtb2Rlczsgc2VtYW50aWNzOyB0eXBlcyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7TWlzdW5hczoxOTczOlBOUywKICBhdXRob3IgPSAgICAgICAiRGF2aWQgTWlzdW5hcyIsCiAgdGl0bGUgPSAgICAgICAgIlBldHJpIE5ldHMgYW5kIFNwZWVkIEluZGVwZW5kZW50IERlc2lnbiIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNiIsCiAgbnVtYmVyID0gICAgICAgIjgiLAogIHBhZ2VzID0gICAgICAgICI0NzQtLTQ4MiAob3IgNDc0LS00ODE/PykiLAogIG1vbnRoID0gICAgICAgIGF1ZywKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvTWlzYy9hc3luYy5jaXJjdWl0cy5iaWIiLAogIGFic3RyYWN0ID0gICAgICJQZXRyaSBuZXRzIGFyZSBpbnZlc3RpZ2F0ZWQgYXMgb25lIG1ldGhvZCBvZiBtb2RlbGluZyBzcGVlZCBpbmRlcGVuZGVudCBhc3luY2hyb25vdXMgY2lyY3VpdHMuIEEgc3R1ZHkgb2YgY2lyY3VpdCByZWFsaXphdGlvbiBvZiBQZXRyaSBuZXRzIGxlYWRzIHRvIGEgZGVtb25zdHJhdGlvbiBvZiB0aGVpciB1c2VmdWxuZXNzIGluIG1vZGVsaW5nIHNwZWVkIGluZGVwZW5kZW50IG9wZXJhdGlvbi4gVGhpcyB1c2VmdWxuZXNzIGlzIGVtcGhhc2l6ZWQgYnkgdGhlIGRlc2lnbiBvZiBhIHNwZWVkIGluZGVwZW5kZW50IHByb2Nlc3NvciBmcm9tIG1vZHVsZXMgZGV2ZWxvcGVkIGluIHRoZSBpbnZlc3RpZ2F0aW9uIG9mIFBldHJpIG5ldCBpbXBsZW1lbnRhdGlvbi4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDIzMEQgKFNlcXVlbnRpYWwgc3dpdGNoaW5nIHRoZW9yeSk7IEM1MjEwIChMb2dpYyBkZXNpZ24gbWV0aG9kcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMTsgNzIzIiwKICBjb3Jwc291cmNlID0gICAiTUlULCBDYW1icmlkZ2UsIE1BLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYXN5bmNocm9ub3VzIGNpcmN1aXRzOyBhc3luY2hyb25vdXMgc2VxdWVudGlhbCBsb2dpYzsgZGVzaWduOyBsb2dpYyBkZXNpZ247IFBldHJpIG5ldHM7IHNwZWVkIGluZGVwZW5kZW50IiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtNYWNIdXJhOjE5NzM6QUFSLAogIGF1dGhvciA9ICAgICAgICJNLiBNYWNIdXJhIGFuZCBBLiBNdWxhd2EiLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gNDUwOiB7Um9zZW5icm9ja30gRnVuY3Rpb24gTWluaW1pemF0aW9uIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiOCIsCiAgcGFnZXMgPSAgICAgICAgIjQ4Mi0tNDgzIiwKICBtb250aCA9ICAgICAgICBhdWcsCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBub3RlID0gICAgICAgICAiU2VlIGFsc28gXGNpdGV7RGF2aWVzOjE5NzY6UlJGfS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJCMDI2MCAoT3B0aW1pc2F0aW9uIHRlY2huaXF1ZXMpOyBDMTE4MCAoT3B0aW1pc2F0aW9uIHRlY2huaXF1ZXMpOyBDNzMxMCAoTWF0aGVtYXRpY3MgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIkluc3QuIEF1dG9tYXRpb24gYW5kIE1lYXN1cmVtZW50cywgV2Fyc2F3LCBQb2xhbmQiLAogIGtleXdvcmRzID0gICAgICJkaXJlY3Qgc2VhcmNoOyBGT1JUUkFOOyBmdW5jdGlvbiBtaW5pbWl6YXRpb247IG1pbmltaXNhdGlvbjsgUm9zZW5icm9jazsgc3Vicm91dGluZTsgc3Vicm91dGluZXM7IHVuY29uc3RyYWluZWQgcHJvYmxlbSIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7R29sZHN0ZWluOjE5NzM6QUFDLAogIGF1dGhvciA9ICAgICAgICJSLiBCLiBHb2xkc3RlaW4iLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gNDUxOiBDaGktU3F1YXJlIFF1YW50aWxlcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNiIsCiAgbnVtYmVyID0gICAgICAgIjgiLAogIHBhZ2VzID0gICAgICAgICI0ODMtLTQ4NSIsCiAgbW9udGggPSAgICAgICAgYXVnLAogIHllYXIgPSAgICAgICAgICIxOTczIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM3MzEwIChNYXRoZW1hdGljcyBjb21wdXRpbmcpIiwKICBjb3Jwc291cmNlID0gICAiUHJvdmlkZW5jZSBDb2xsLiwgUkksIFVTQSIsCiAga2V5d29yZHMgPSAgICAgIkNoaSBzcXVhcmUgcXVhbnRpbGVzOyBwcm9iYWJpbGl0eTsgc3RhdGlzdGljOyBzdGF0aXN0aWNzOyBzdWJyb3V0aW5lcyIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7TGl1OjE5NzM6QUFFLAogIGF1dGhvciA9ICAgICAgICJDLiBOLiBMaXUgYW5kIEQuIFQuIFRhbmciLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gNDUyOiBFbnVtZXJhdGluZyBDb21iaW5hdGlvbnMgb2YgJG0kIE91dCBvZiAkbiQgT2JqZWN0cyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNiIsCiAgbnVtYmVyID0gICAgICAgIjgiLAogIHBhZ2VzID0gICAgICAgICI0ODUtLTQ4NSIsCiAgbW9udGggPSAgICAgICAgYXVnLAogIHllYXIgPSAgICAgICAgICIxOTczIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM3MzEwIChNYXRoZW1hdGljcyBjb21wdXRpbmcpIiwKICBjb3Jwc291cmNlID0gICAiSUJNIFRob21hcyBKLiBXYXRzb24gUmVzLiBDZW50ZXIsIFlvcmt0b3duIEhlaWdodHMsIE5ZLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJjb21iaW5hdGlvbnM7IEZPUlRSQU47IE5YQ0JOOyBwZXJtdXRhdGlvbnM7IHN0YXRpc3RpY3M7IHN1YnJvdXRpbmVzIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtQaWVzc2VuczoxOTczOkFBRywKICBhdXRob3IgPSAgICAgICAiUm9iZXJ0IFBpZXNzZW5zIiwKICB0aXRsZSA9ICAgICAgICAie0FDTX0gQWxnb3JpdGhtIDQ1Mzoge0dhdXNzaWFufSBRdWFkcmF0dXJlIEZvcm11bGFzIGZvciB7QnJvbXdpY2h9J3MgSW50ZWdyYWwiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICI4IiwKICBwYWdlcyA9ICAgICAgICAiNDg2LS00ODciLAogIG1vbnRoID0gICAgICAgIGF1ZywKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJCMDI5ME0gKE51bWVyaWNhbCBpbnRlZ3JhdGlvbiBhbmQgZGlmZmVyZW50aWF0aW9uKTsgQzQxNjAgKE51bWVyaWNhbCBpbnRlZ3JhdGlvbiBhbmQgZGlmZmVyZW50aWF0aW9uKTsgQzczMTAgKE1hdGhlbWF0aWNzIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBMZXV2ZW4sIEhldmVybGVlLCBCZWxnaXVtIiwKICBrZXl3b3JkcyA9ICAgICAiQlJPTUlOOyBCcm9td2ljaCdzIGludGVncmFsOyBjb21wbGV4OyBGT1JUUkFOOyBHYXVzc2lhbiBxdWFkcmF0dXJlIGZvcm11bGFzOyBpbnRlZ3JhdGlvbjsgTGFwbGFjZSB0cmFuc2Zvcm07IExhcGxhY2UgdHJhbnNmb3JtczsgbnVtZXJpY2FsIGludmVyc2lvbjsgc3Vicm91dGluZXMiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle1JpY2hhcmRzb246MTk3MzpBQUMsCiAgYXV0aG9yID0gICAgICAgIkouIEEuIFJpY2hhcmRzb24gYW5kIEouIEwuIEt1ZXN0ZXIiLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gNDU0OiBUaGUgQ29tcGxleCBNZXRob2QgZm9yIENvbnN0cmFpbmVkIE9wdGltaXphdGlvbiIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNiIsCiAgbnVtYmVyID0gICAgICAgIjgiLAogIHBhZ2VzID0gICAgICAgICI0ODctLTQ4OSIsCiAgbW9udGggPSAgICAgICAgYXVnLAogIHllYXIgPSAgICAgICAgICIxOTczIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkIwMjYwIChPcHRpbWlzYXRpb24gdGVjaG5pcXVlcyk7IEMxMTgwIChPcHRpbWlzYXRpb24gdGVjaG5pcXVlcyk7IEM3MzEwIChNYXRoZW1hdGljcyBjb21wdXRpbmcpIiwKICBjb3Jwc291cmNlID0gICAiQXJpem9uYSBTdGF0ZSBVbml2LiwgVGVtcGUsIEFaLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJCb3gncyBhbGdvcml0aG07IGNvbXBsZXggbWV0aG9kOyBjb25zdHJhaW5lZCBvcHRpbWl6YXRpb247IEZPUlRSQU47IG1heGltdW07IG11bHRpdmFyaWFibGU7IG5vbmxpbmVhciBmdW5jdGlvbjsgb3B0aW1pc2F0aW9uOyBzdWJyb3V0aW5lcyIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7QW5kcmVqa292YToxOTczOkNHRiwKICBhdXRob3IgPSAgICAgICAiRy4gQW5kcmVqa292YSBhbmQgSi4gVmluYXIiLAogIHRpdGxlID0gICAgICAgICJDb21wbGV4IGdhbW1hIGZ1bmN0aW9uIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiOCIsCiAgcGFnZXMgPSAgICAgICAgIjQ4OS0tNDg5IiwKICBtb250aCA9ICAgICAgICBhdWcsCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzczMTAgKE1hdGhlbWF0aWNzIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJTYWZhcmlrIFVuaXYuLCBLb3NpY2UsIEN6ZWNob3Nsb3Zha2lhIiwKICBrZXl3b3JkcyA9ICAgICAiYWxnb3JpdGhtOyBjZXJ0aWZpY2F0aW9uOyBjb21tZW50OyBjb21wbGV4IGdhbW1hIGZ1bmN0aW9uOyBmdW5jdGlvbnMiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0RlTW9yZ2FuOjE5NzM6UkFBLAogIGF1dGhvciA9ICAgICAgICJSLiBNLiB7RGUgTW9yZ2FufSIsCiAgdGl0bGUgPSAgICAgICAgIlJlbWFyayBvbiB7YGBBbGdvcml0aG0gMzU3IFtBMV06IEFuIEVmZmljaWVudCBQcmltZSBOdW1iZXIgR2VuZXJhdG9yJyd9IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiOCIsCiAgcGFnZXMgPSAgICAgICAgIjQ4OS0tNDg5IiwKICBtb250aCA9ICAgICAgICBhdWcsCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzczMTAgKE1hdGhlbWF0aWNzIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJEaWdpdGFsIEVxdWlwbWVudCBDby4gTHRkLiwgUmVhZGluZywgVUsiLAogIGtleXdvcmRzID0gICAgICJhbGdvcml0aG07IG1hdGhlbWF0aWNzOyBwcmltZSBudW1iZXIgZ2VuZXJhdG9yIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtXYXRraW5zOjE5NzM6R1AsCiAgYXV0aG9yID0gICAgICAgIlIuIFAuIFdhdGtpbnMiLAogIHRpdGxlID0gICAgICAgICJHcmFwaCBwbG90dGVyIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiOCIsCiAgcGFnZXMgPSAgICAgICAgIjQ4OS0tNDkwIiwKICBtb250aCA9ICAgICAgICBhdWcsCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzU1NDAgKFRlcm1pbmFscyBhbmQgZ3JhcGhpYyBkaXNwbGF5cyk7IEM2MTMwIChEYXRhIGhhbmRsaW5nIHRlY2huaXF1ZXMpIiwKICBjb3Jwc291cmNlID0gICAiUm95YWwgTWVsYm91cm5lIEluc3QuIFRlY2hub2wuLCBWaWMuLCBBdXN0cmFsaWEiLAogIGtleXdvcmRzID0gICAgICJhbGdvcml0aG07IGNvbXB1dGVyIGdyYXBoaWNzOyBncmFwaCBwbG90dGVyOyBwbG90dGVycyIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7QnlybmU6MTk3MzpITVIsCiAgYXV0aG9yID0gICAgICAgIkouIEcuIEJ5cm5lIiwKICB0aXRsZSA9ICAgICAgICAie0h1LVR1Y2tlcn0gbWluaW11bSByZWR1bmRhbmN5IGFscGhhYmV0aWMgY29kaW5nIG1ldGhvZCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNiIsCiAgbnVtYmVyID0gICAgICAgIjgiLAogIHBhZ2VzID0gICAgICAgICI0OTAtLTQ5MCIsCiAgbW9udGggPSAgICAgICAgYXVnLAogIHllYXIgPSAgICAgICAgICIxOTczIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTMwIChEYXRhIGhhbmRsaW5nIHRlY2huaXF1ZXMpIiwKICBjb3Jwc291cmNlID0gICAiVHJpbml0eSBDb2xsLiwgRHVibGluLCBJcmVsYW5kIiwKICBrZXl3b3JkcyA9ICAgICAiYWxnb3JpdGhtOyBhbHBoYWJldGljIGNvZGluZyBtZXRob2Q7IGVuY29kaW5nOyBIdTsgbWluaW11bSByZWR1bmRhbmN5OyBUdWNrZXIiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0dvb2Q6MTk3MzpDUSwKICBhdXRob3IgPSAgICAgICAiQS4gSi4gR29vZCIsCiAgdGl0bGUgPSAgICAgICAgIntDbGVuc2hhdy1DdXJ0aXN9IHF1YWRyYXR1cmUiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICI4IiwKICBwYWdlcyA9ICAgICAgICAiNDkwLS00OTAiLAogIG1vbnRoID0gICAgICAgIGF1ZywKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJCMDI5ME0gKE51bWVyaWNhbCBpbnRlZ3JhdGlvbiBhbmQgZGlmZmVyZW50aWF0aW9uKTsgQzQxNjAgKE51bWVyaWNhbCBpbnRlZ3JhdGlvbiBhbmQgZGlmZmVyZW50aWF0aW9uKTsgQzczMTAgKE1hdGhlbWF0aWNzIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJTeXN0ZW1zLCBTY2kuIGFuZCBTb2Z0d2FyZSwgTGEgSm9sbGEsIENBLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJhbGdvcml0aG07IENsZW5zaGF3IEN1cnRpcyBxdWFkcmF0dXJlOyBpbnRlZ3JhdGlvbiIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7V2lsbGlhbXM6MTk3MzpMUlAsCiAgYXV0aG9yID0gICAgICAgIkUuIEouIFdpbGxpYW1zIiwKICB0aXRsZSA9ICAgICAgICAiTG9jYWxpemF0aW9uIG9mIHRoZSByb290cyBvZiBhIHBvbHlub21pYWwiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICI4IiwKICBwYWdlcyA9ICAgICAgICAiNDkwLS00OTAiLAogIG1vbnRoID0gICAgICAgIGF1ZywKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJCMDI5MEggKExpbmVhciBhbGdlYnJhKTsgQzQxNDAgKExpbmVhciBhbGdlYnJhKTsgQzczMTAgKE1hdGhlbWF0aWNzIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJGb3JkIE1vdG9yIENvLiwgRGVhcmJvcm4sIE1JLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJhbGdvcml0aG07IGxvY2FsaXphdGlvbjsgcG9seW5vbWlhbHM7IHJvb3RzIG9mIGEgcG9seW5vbWlhbCIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7TWFubmE6MTk3MzpJTVAsCiAgYXV0aG9yID0gICAgICAgIlpvaGFyIE1hbm5hIGFuZCBTdGVwaGVuIE5lc3MgYW5kIEplYW4gVnVpbGxlbWluIiwKICB0aXRsZSA9ICAgICAgICAiSW5kdWN0aXZlIE1ldGhvZHMgZm9yIFByb3ZpbmcgUHJvcGVydGllcyBvZiBQcm9ncmFtcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNiIsCiAgbnVtYmVyID0gICAgICAgIjgiLAogIHBhZ2VzID0gICAgICAgICI0OTEtLTUwMiIsCiAgbW9udGggPSAgICAgICAgYXVnLAogIHllYXIgPSAgICAgICAgICIxOTczIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjhBMDUiLAogIE1SbnVtYmVyID0gICAgICI1MSAyMzMxIiwKICBtcnJldmlld2VyID0gICAiVy4gRC4gTWF1cmVyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9Db21waWxlci9tbC5iaWIiLAogIGFic3RyYWN0ID0gICAgICJUaGVyZSBhcmUgdHdvIG1haW4gcHVycG9zZXMgaW4gdGhpcyBwYXBlcjogZmlyc3QsIGNsYXJpZmljYXRpb24gYW5kIGV4dGVuc2lvbiBvZiBrbm93biByZXN1bHRzIGFib3V0IGNvbXB1dGF0aW9uIG9mIHJlY3Vyc2l2ZSBwcm9ncmFtcywgd2l0aCBlbXBoYXNpcyBvbiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB0aGVvcmV0aWNhbCBhbmQgcHJhY3RpY2FsIGFwcHJvYWNoZXM7IHNlY29uZCwgcHJlc2VudGF0aW9uIGFuZCBleGFtaW5hdGlvbiBvZiB2YXJpb3VzIGtub3duIG1ldGhvZHMgZm9yIHByb3ZpbmcgcHJvcGVydGllcyBvZiByZWN1cnNpdmUgcHJvZ3JhbXMuIERpc2N1c3NlZCBpbiBkZXRhaWwgYXJlIHR3byBwb3dlcmZ1bCBpbmR1Y3RpdmUgbWV0aG9kcywgY29tcHV0YXRpb25hbCBpbmR1Y3Rpb24gYW5kIHN0cnVjdHVyYWwgaW5kdWN0aW9uLCBpbmNsdWRpbmcgZXhhbXBsZXMgb2YgdGhlaXIgYXBwbGljYXRpb24uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQyNDAgKFByb2dyYW1taW5nIGFuZCBhbGdvcml0aG0gdGhlb3J5KSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiU3RhbmZvcmQgVW5pdi4sIENBLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0YWJpbGl0eSBhbmQgZGVjaWRhYmlsaXR5OyBjb21wdXRhdGlvbiBpbmR1Y3Rpb247IGNvbXB1dGVyIG1ldGF0aGVvcnk7IGluZHVjdGl2ZSBtZXRob2RzOyBsZWFzdCBmaXhlZHBvaW50OyBwcm9ncmFtbWluZyB0aGVvcnk7IHByb3BlcnRpZXMgb2YgcHJvZ3JhbXM7IHByb3Zpbmc7IHJlY3Vyc2l2ZSBwcm9ncmFtczsgc3RydWN0dXJhbCBpbmR1Y3Rpb24iLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle1BldGVyc29uOjE5NzM6Q1dSLAogIGF1dGhvciA9ICAgICAgICJXLiBXLiBQZXRlcnNvbiBhbmQgVC4gS2FzYW1pIGFuZCBOLiBUb2t1cmEiLAogIHRpdGxlID0gICAgICAgICJPbiB0aGUgQ2FwYWJpbGl0aWVzIG9mIFdoaWxlLCBSZXBlYXQsIGFuZCBFeGl0IFN0YXRlbWVudHMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICI4IiwKICBwYWdlcyA9ICAgICAgICAiNTAzLS01MTIiLAogIG1vbnRoID0gICAgICAgIGF1ZywKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4QTA1IiwKICBNUm51bWJlciA9ICAgICAiNTEgNDcwNyIsCiAgbXJyZXZpZXdlciA9ICAgIkouIEUuIEwuIFBlY2siLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiQSB3ZWxsLWZvcm1lZCBwcm9ncmFtIGlzIGRlZmluZWQgYXMgYSBwcm9ncmFtIGluIHdoaWNoIGxvb3BzIGFuZCBpZiBzdGF0ZW1lbnRzIGFyZSBwcm9wZXJseSBuZXN0ZWQgYW5kIGNhbiBiZSBlbnRlcmVkIG9ubHkgYXQgdGhlaXIgYmVnaW5uaW5nLiBBIGNvcnJlc3BvbmRpbmcgZGVmaW5pdGlvbiBpcyBnaXZlbiBmb3IgYSB3ZWxsLWZvcm1lZCBmbG93Y2hhcnQuIEl0IGlzIHNob3duIHRoYXQgYSBwcm9ncmFtIGlzIHdlbGwgZm9ybWVkIGlmIGFuZCBvbmx5IGlmIGl0IGNhbiBiZSB3cml0dGVuIHdpdGggaWYsIHJlcGVhdCwgYW5kIG11bHRpLWxldmVsIGV4aXQgc3RhdGVtZW50cyBmb3Igc2VxdWVuY2UgY29udHJvbC4gSXQgaXMgYWxzbyBzaG93biB0aGF0IGlmLCB3aGlsZSwgYW5kIHJlcGVhdCBzdGF0ZW1lbnRzIHdpdGggc2luZ2xlLWxldmVsIGV4aXQgZG8gbm90IHN1ZmZpY2UuIEl0IGlzIGFsc28gc2hvd24gdGhhdCBhbnkgZmxvd2NoYXJ0IGNhbiBiZSBjb252ZXJ0ZWQgdG8gYSB3ZWxsLWZvcm1lZCBmbG93Y2hhcnQgYnkgbm9kZSBzcGxpdHRpbmcuIFByYWN0aWNhbCBpbXBsaWNhdGlvbnMgYXJlIGRpc2N1c3NlZC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDI0MCAoUHJvZ3JhbW1pbmcgYW5kIGFsZ29yaXRobSB0aGVvcnkpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBIYXdhaWksIEhvbm9sdWx1LCBISSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNhcGFiaWxpdGllczsgY29tcHV0ZXIgbWV0YXRoZW9yeTsgZXhpdDsgZXhpdCBzdGF0ZW1lbnQ7IGZsb3djaGFydDsgZ28gdG8gc3RhdGVtZW50OyBub2RlIHNwbGl0dGluZzsgcHJvZ3JhbW1pbmcgdGhlb3J5OyByZXBlYXQgc3RhdGVtZW50OyBzb2Z0d2FyZSByZWxpYWJpbGl0eTsgc3RhdGVtZW50OyB3ZWxsIGZvcm1lZCBwcm9ncmFtOyB3ZWxsLWZvcm1lZCBwcm9ncmFtOyB3aGlsZSBzdGF0ZW1lbnQiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0Zvc3RlcjoxOTczOkdBVCwKICBhdXRob3IgPSAgICAgICAiQ2F4dG9uIEMuIEZvc3RlciIsCiAgdGl0bGUgPSAgICAgICAgIkEgR2VuZXJhbGl6YXRpb24gb2Yge0FWTH0gVHJlZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICI4IiwKICBwYWdlcyA9ICAgICAgICAiNTEzLS01MTciLAogIG1vbnRoID0gICAgICAgIGF1ZywKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGF0YWJhc2UvV2llZGVyaG9sZC5iaWIiLAogIGFic3RyYWN0ID0gICAgICJBIGdlbmVyYWxpemF0aW9uIG9mIEFWTCB0cmVlcyBpcyBwcm9wb3NlZCBpbiB3aGljaCBpbWJhbGFuY2VzIHVwIHRvICh0cmlhbmdsZSBzaGFwZSkgaXMgYSBzbWFsbCBpbnRlZ2VyLiBBbiBleHBlcmltZW50IGlzIHBlcmZvcm1lZCB0byBjb21wYXJlIHRoZXNlIHRyZWVzIHdpdGggc3RhbmRhcmQgQVZMIHRyZWVzIGFuZCB3aXRoIGJhbGFuY2VkIHRyZWVzIG9uIHRoZSBiYXNpcyBvZiBtZWFuIHJldHJpZXZhbCB0aW1lLCBvZiBhbW91bnQgb2YgcmVzdHJ1Y3R1cmluZyBleHBlY3RlZCwgYW5kIG9uIHRoZSB3b3JzdCBjYXNlIG9mIHJldHJpZXZhbCB0aW1lLiBJdCBpcyBzaG93biB0aGF0LCBieSBwZXJtaXR0aW5nIGltYmFsYW5jZXMgb2YgdXAgdG8gZml2ZSB1bml0cywgdGhlIHJldHJpZXZhbCB0aW1lIGlzIGluY3JlYXNlZCBhIHNtYWxsIGFtb3VudCB3aGlsZSB0aGUgYW1vdW50IG9mIHJlc3RydWN0dXJpbmcgcmVxdWlyZWQgaXMgZGVjcmVhc2VkIGJ5IGEgZmFjdG9yIG9mIHRlbi4gXHBhciBBIGZldyB0aGVvcmV0aWNhbCByZXN1bHRzIGFyZSBkZXJpdmVkLCBpbmNsdWRpbmcgdGhlIGNvcnJlY3Rpb24gb2YgYW4gZWFybGllciBwYXBlciwgYW5kIGFyZSBkdWx5IGNvbXBhcmVkIHdpdGggdGhlIGV4cGVyaW1lbnRhbCBkYXRhLiBSZWFzb25hYmx5IGdvb2QgY29ycmVzcG9uZGVuY2UgaXMgZm91bmQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQyMTAgKEZvcm1hbCBsb2dpYyk7IEM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbikiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMzsgOTAxIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gTWFzc2FjaHVzZXR0cywgQW1oZXJzdCwgTUEsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJBVkwgdHJlZXM7IGJhbGFuY2VkIHRyZWVzOyBmaWxlIG9yZ2FuaXNhdGlvbjsgZ2VuZXJhbGlzYXRpb247IGluZm9ybWF0aW9uIHJldHJpZXZhbCBzeXN0ZW1zOyBpbmZvcm1hdGlvbiBzdG9yYWdlIGFuZDsgaW5mb3JtYXRpb24gc3RvcmFnZSBhbmQgcmV0cmlldmFsOyByZXRyaWV2YWw7IHRyZWVzIChtYXRoZW1hdGljYWwpIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtCdXplbjoxOTczOkNBQywKICBhdXRob3IgPSAgICAgICAiSmVmZnJleSBQLiBCdXplbiIsCiAgdGl0bGUgPSAgICAgICAgIkNvbXB1dGF0aW9uYWwgQWxnb3JpdGhtcyBmb3IgQ2xvc2VkIFF1ZXVlaW5nIE5ldHdvcmtzIHdpdGggRXhwb25lbnRpYWwgU2VydmVycyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNiIsCiAgbnVtYmVyID0gICAgICAgIjkiLAogIHBhZ2VzID0gICAgICAgICI1MjctLTUzMSIsCiAgbW9udGggPSAgICAgICAgc2VwLAogIHllYXIgPSAgICAgICAgICIxOTczIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjhBMTAiLAogIE1SbnVtYmVyID0gICAgICI1MCAxNTQyMyIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGlzdHJpYnV0ZWQvUUxELzE5NzMuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiTWV0aG9kcyBhcmUgcHJlc2VudGVkIGZvciBjb21wdXRpbmcgdGhlIGVxdWlsaWJyaXVtIGRpc3RyaWJ1dGlvbiBvZiBjdXN0b21lcnMgaW4gY2xvc2VkIHF1ZXVlaW5nIG5ldHdvcmtzIHdpdGggZXhwb25lbnRpYWwgc2VydmVycy4gRXhwcmVzc2lvbnMgZm9yIHZhcmlvdXMgbWFyZ2luYWwgZGlzdHJpYnV0aW9ucyBhcmUgYWxzbyBkZXJpdmVkLiBUaGUgY29tcHV0YXRpb25hbCBhbGdvcml0aG1zIGFyZSBiYXNlZCBvbiB0d28tZGltZW5zaW9uYWwgaXRlcmF0aXZlIHRlY2huaXF1ZXMgd2hpY2ggYXJlIGhpZ2hseSBlZmZpY2llbnQgYW5kIHF1aXRlIHNpbXBsZSB0byBpbXBsZW1lbnQuIEltcGxlbWVudGF0aW9uIGNvbnNpZGVyYXRpb25zIHN1Y2ggYXMgc3RvcmFnZSBhbGxvY2F0aW9uIHN0cmF0ZWdpZXMgYW5kIG9yZGVyIG9mIGV2YWx1YXRpb24gYXJlIGV4YW1pbmVkIGluIHNvbWUgZGV0YWlsLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgYW5ub3RlID0gICAgICAgIk1ldGhvZHMgYXJlIHByZXNlbnRlZCBmb3IgY29tcHV0aW5nIHRoZSBlcXVpbGlicml1bSBkaXN0cmlidXRpb24gb2YgY3VzdG9tZXJzIGluIGNsb3NlZCBxdWV1ZWluZyBuZXR3b3JrcyB3aXRoIGV4cG9uZW50aWFsIHNlcnZlcnMuIEV4cHJlc3Npb25zIGZvciB2YXJpb3VzIG1hcmdpbmFsIGRpc3RyaWJ1dGlvbnMgYXJlIGFsc28gZGVyaXZlZC4iLAogIGNsYXNzY29kZXMgPSAgICJCMDI0MEMgKFF1ZXVlaW5nIHRoZW9yeSk7IEMxMTQwQyAoUXVldWVpbmcgdGhlb3J5KSIsCiAgY2xhc3NpZmljYXRpb24gPSAiOTEyOyA5MjIiLAogIGNvcnBzb3VyY2UgPSAgICJIYXJ2YXJkIFVuaXYuLCBDYW1icmlkZ2UsIE1BLCBVU0EiLAogIGNvdW50cnkgPSAgICAgICJVU0EiLAogIGRhdGUgPSAgICAgICAgICIxNC8xMi83OSIsCiAgZGVzY3JpcHRvcnMgPSAgIkV4cG9uZW50aWFsIHF1ZXVlaW5nIG5ldHdvcms7IG51bWJlciBvZiBlbGVtZW50cyBpbiBzeXN0ZW07IG1ldGhvZDsiLAogIGVudW0gPSAgICAgICAgICI0ODMiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY2xvc2VkIHF1ZXVlaW5nIG5ldHdvcmtzOyBjb21wdXRhdGlvbmFsIGFsZ29yaXRobXM7IGRpc3RyaWJ1dGlvbnM7IGVxdWlsaWJyaXVtIGRpc3RyaWJ1dGlvbnM7IGV4cG9uZW50aWFsIHNlcnZlcnM7IG9wZXJhdGlvbnMgcmVzZWFyY2g7IHByb2JhYmlsaXR5OyBxdWV1ZWluZyBuZXR3b3JrczsgcXVldWVpbmcgdGhlb3J5OyBzdGVhZHkgc3RhdGUiLAogIGxhbmd1YWdlID0gICAgICJFbmdsaXNoIiwKICByZWZlcmVuY2VzID0gICAiNiIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7R2FuYXBhdGh5OjE5NzM6SVRBLAogIGF1dGhvciA9ICAgICAgICJTLiBHYW5hcGF0aHkgYW5kIFYuIFJhamFyYW1hbiIsCiAgdGl0bGUgPSAgICAgICAgIkluZm9ybWF0aW9uIFRoZW9yeSBBcHBsaWVkIHRvIHRoZSBDb252ZXJzaW9uIG9mIERlY2lzaW9uIFRhYmxlcyB0byBDb21wdXRlciBQcm9ncmFtcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNiIsCiAgbnVtYmVyID0gICAgICAgIjkiLAogIHBhZ2VzID0gICAgICAgICI1MzItLTUzOSIsCiAgbW9udGggPSAgICAgICAgc2VwLAogIHllYXIgPSAgICAgICAgICIxOTczIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9UaGVvcnkvaW5kdWN0aXZlLmluZmVyZW5jZS5iaWIiLAogIGFic3RyYWN0ID0gICAgICJVc2luZyBpZGVhcyBmcm9tIGluZm9ybWF0aW9uIHRoZW9yeSwgdGhpcyBwYXBlciBkZXZlbG9wcyBhIGhldXJpc3RpYyBhbGdvcml0aG0gdGhhdCBjb252ZXJ0cyBhIGxpbWl0ZWQgZW50cnkgZGVjaXNpb24gdGFibGUgdG8gYSB0cmVlIHN0cnVjdHVyZWQgY29tcHV0ZXIgcHJvZ3JhbSB3aXRoIG5lYXIgbWluaW11bSBhdmVyYWdlIHByb2Nlc3NpbmcgdGltZS4gVGhlIG1ldGhvZCBpcyBhcHBsaWNhYmxlIHRvIGFueSBsaW1pdGVkIGVudHJ5IGRlY2lzaW9uIHRhYmxlIGFuZCBkb2VzIG5vdCByZXF1aXJlIHRoYXQgYWN0aW9ucyBoYXZlIHNpbmdsZSBydWxlcyBvciB0aGF0IHRoZSBjb3N0IG9mIHRlc3RpbmcgY29uZGl0aW9ucyBiZSBlcXVhbC4gSXQgaXMgdGh1cyBtb3JlIGdlbmVyYWwgdGhhbiB0aGUgcHJldmlvdXNseSBwdWJsaXNoZWQgaGV1cmlzdGljIGFsZ29yaXRobXMuIENvbXBhcmVkIHRvIHRoZSBvcHRpbWFsIGFsZ29yaXRobSBvZiBSZWlud2FsZCBhbmQgU29sYW5kLCB0aGlzIGFsZ29yaXRobSBpcyBlYXN5IHRvIGNvZGUgYW5kIHRha2VzIGEgbXVjaCBzbWFsbGVyIHRyYW5zbGF0aW9uIHRpbWU7IGl0IGlzIHRodXMgZmVsdCB0aGF0IGl0IGlzIG1vcmUgdXNlZnVsIGluIHByYWN0aWNlLiBUaGUgYWxnb3JpdGhtIGlzIHdlbGwgc3VpdGVkIGZvciBtYW51YWwgY29udmVyc2lvbiBvZiBkZWNpc2lvbiB0YWJsZXMgdG8gZmxvd2NoYXJ0cy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDI0MCAoUHJvZ3JhbW1pbmcgYW5kIGFsZ29yaXRobSB0aGVvcnkpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjM7IDczMTsgOTIyIiwKICBjb3Jwc291cmNlID0gICAiSW5kaWFuIEluc3QuIFRlY2hub2wuLCBOZXcgRGVsaGksIEluZGlhIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyOyBjb21wdXRlciBzeXN0ZW1zIHByb2dyYW1taW5nIC0tLSBEZWNpc2lvbiBUYWJsZXM7IGNvbnZlcnNpb247IGRlY2lzaW9uIHRhYmxlczsgZGVjaXNpb24gdGhlb3J5IGFuZCBhbmFseXNpczsgaW5mb3JtYXRpb24gbWVhc3VyZTsgaW5mb3JtYXRpb24gdGhlb3J5OyBvcHRpbXVtIGNvbXB1dGVyIHByb2dyYW1zOyBwcm9ncmFtbWluZyB0aGVvcnk7IHByb2dyYW1zIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtDYXJkZW5hczoxOTczOkVTRiwKICBhdXRob3IgPSAgICAgICAiQWxmb25zbyBGLiBDYXJkZW5hcyIsCiAgdGl0bGUgPSAgICAgICAgIkV2YWx1YXRpb24gYW5kIFNlbGVjdGlvbiBvZiBGaWxlIE9yZ2FuaXphdGlvbiAtLS0ge0F9IE1vZGVsIGFuZCBhIFN5c3RlbSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNiIsCiAgbnVtYmVyID0gICAgICAgIjkiLAogIHBhZ2VzID0gICAgICAgICI1NDAtLTU0OCIsCiAgbW9udGggPSAgICAgICAgc2VwLAogIHllYXIgPSAgICAgICAgICIxOTczIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EYXRhYmFzZS9XaWVkZXJob2xkLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIlRoaXMgd29yayBmaXJzdCBkaXNjdXNzZXMgdGhlIGZhY3RvcnMgdGhhdCBhZmZlY3QgZmlsZSAoZGF0YSBiYXNlKSBvcmdhbml6YXRpb24gcGVyZm9ybWFuY2UsIGFuIGVsdXNpdmUgc3ViamVjdCwgYW5kIHRoZW4gcHJlc2VudHMgYSBtZXRob2RvbG9neSwgYSBtb2RlbCBhbmQgYSBwcm9ncmFtbWVkIHN5c3RlbSB0byBlc3RpbWF0ZSBwcmltYXJpbHkgdG90YWwgc3RvcmFnZSBjb3N0cyBhbmQgYXZlcmFnZSBhY2Nlc3MgdGltZSBvZiBzZXZlcmFsIGZpbGUgb3JnYW5pemF0aW9ucywgZ2l2ZW4gYSBzcGVjaWZpYyBkYXRhIGJhc2UsIHF1ZXJ5IGNoYXJhY3Rlcml6YXRpb24gYW5kIGRldmljZS1yZWxhdGVkIHNwZWNpZmljYXRpb25zLiBCYXNlZCBvbiB0aGVzZSBlc3RpbWF0ZXMsIGFuIGFwcHJvcHJpYXRlIGZpbGUgc3RydWN0dXJlIG1heSBiZSBzZWxlY3RlZCBmb3IgdGhlIHNwZWNpZmljIHNpdHVhdGlvbi4gVGhlIHN5c3RlbSBpcyBhIGNvbnZlbmllbnQgdG9vbCB0byBzdHVkeSBmaWxlIHN0cnVjdHVyZXMgYW5kIHRvIGZhY2lsaXRhdGUgYXMgbXVjaCBhcyBwb3NzaWJsZSB0aGUgcHJvY2VzcyBvZiBkYXRhIGJhc2Ugc3RydWN0dXJlIGRlc2lnbiBhbmQgZXZhbHVhdGlvbi4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGFubm90ZSA9ICAgICAgICJUcmVlLCBpbmRleGVkLCBhbmQgcmluZyBmaWxlcyBjb21wYXJlZCBmb3Igc2l4IGZpbGVzIGFuZCB2YXJpb3VzIHJldHJpZXZhbCByZXF1ZXN0cy4iLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBDYWxpZm9ybmlhLCBMb3MgQW5nZWxlcywgQ0EsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhY2Nlc3MgdGltZTsgZGF0YSBiYXNlOyBkYXRhIG1hbmFnZW1lbnQ7IGRhdGEgcHJvY2Vzc2luZzsgZGF0YSBzdHJ1Y3R1cmVzOyBkZXNpZ247IGV2YWx1YXRpb247IGZpbGUgbWFuYWdlbWVudDsgZmlsZSBvcmdhbmlzYXRpb247IGZpbGUgb3JnYW5pemF0aW9uOyBmaWxlIHN0cnVjdHVyZXM7IG1vZGVsOyBzZWxlY3Rpb247IHNpbXVsYXRpb247IHN0b3JhZ2UgcmVxdWlyZW1lbnQiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0Nhc2V5OjE5NzM6RFRTLAogIGF1dGhvciA9ICAgICAgICJSLiBHLiBDYXNleSIsCiAgdGl0bGUgPSAgICAgICAgIkRlc2lnbiBvZiBUcmVlIFN0cnVjdHVyZXMgZm9yIEVmZmljaWVudCBRdWVyeWluZyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNiIsCiAgbnVtYmVyID0gICAgICAgIjkiLAogIHBhZ2VzID0gICAgICAgICI1NDktLTU1NiIsCiAgbW9udGggPSAgICAgICAgc2VwLAogIHllYXIgPSAgICAgICAgICIxOTczIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlRoaXMgcGFwZXIgcG9zZXMgYW4gb3B0aW1pemF0aW9uIHByb2JsZW0gaW4gdGhlIGRlc2lnbiBvZiBzdWNoIHRyZWVzIHRvIHNlcnZlIGEgd2VsbC1zcGVjaWZpZWQgYXBwbGljYXRpb24uIFRoZSBwcm9ibGVtIGlzIGFjYWRlbWljIGluIHRoZSBzZW5zZSB0aGF0IG9yZGluYXJpbHkgdGhlIG9wdGltYWwgdHJlZSBjYW5ub3QgYmUgaW1wbGVtZW50ZWQgYnkgbWVhbnMgb2YgcHJhY3RpY2FsIHRlY2huaXF1ZXMuIE9uIHRoZSBvdGhlciBoYW5kLCBpdCBpcyBwb3RlbnRpYWxseSB1c2VmdWwgZm9yIHRoZSBjb21wYXJpc29uIGl0IGFmZm9yZHMgYmV0d2VlbiBvYnNlcnZlZCBwZXJmb3JtYW5jZSBhbmQgdGhhdCBvZiBhbiBpbnR1aXRpdmVseSBhdHRyYWN0aXZlIGlkZWFsIHNlYXJjaCBwcm9jZWR1cmUuIEFzIGEgcHJhY3RpY2FsIGFwcGxpY2F0aW9uIG9mIHN1Y2ggYSBtb2RlbCB0aGlzIHBhcGVyIGNvbnNpZGVycyB0aGUgZGVzaWduIG9mIGEgbm92ZWwgdHJlZSBzZWFyY2ggc2NoZW1lIGJhc2VkIG9uIGEgYml0IHZlY3RvciByZXByZXNlbnRhdGlvbiBvZiBkYXRhIGFuZCBzaG93cyB0aGF0IGVzc2VudGlhbGx5IHRoZSBzYW1lIGFsZ29yaXRobSBjYW4gYmUgdXNlZCB0byBkZXNpZ24gZWl0aGVyIGFuIGlkZWFsIHNlYXJjaCB0cmVlIG9yIGEgYml0LXZlY3RvciB0cmVlLiBBbiBleHBlcmltZW50YWwgc3R1ZHkgb2YgYSBzbWFsbCBmb3JtYXR0ZWQgZmlsZSBpbGx1c3RyYXRlcyB0aGUgY29uY2VwdHMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKTsgQzcyNTAgKEluZm9ybWF0aW9uIHN0b3JhZ2UgYW5kIHJldHJpZXZhbCkiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMzsgOTAxIiwKICBjb3Jwc291cmNlID0gICAiSUJNLCBTYW4gSm9zZSwgQ0EsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjbHVzdGVyaW5nOyBkYXRhOyBkYXRhIHN0cnVjdHVyZTsgZGF0YSBzdHJ1Y3R1cmVzOyBkZXNpZ247IGZpbGUgb3JnYW5pc2F0aW9uOyBpbmZvcm1hdGlvbiByZXRyaWV2YWw7IGluZm9ybWF0aW9uIHJldHJpZXZhbCBzeXN0ZW1zOyBpbmZvcm1hdGlvbiBzdG9yYWdlOyBpbmZvcm1hdGlvbiBzdG9yYWdlIGFuZDsgbWFuYWdlbWVudDsgcXVlcnlpbmc7IHJldHJpZXZhbDsgc2VhcmNoOyB0cmVlIGZpbGU7IHRyZWUgc3RydWN0dXJlcyIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7Um9kcmlndWV6LVJvc2VsbDoxOTczOkVXUywKICBhdXRob3IgPSAgICAgICAiSnVhbiBSb2RyaWd1ZXotUm9zZWxsIiwKICB0aXRsZSA9ICAgICAgICAiRW1waXJpY2FsIFdvcmtpbmcgU2V0IEJlaGF2aW9yIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiOSIsCiAgcGFnZXMgPSAgICAgICAgIjU1Ni0tNTYwIiwKICBtb250aCA9ICAgICAgICBzZXAsCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiVGhlIHdvcmtpbmcgc2V0IG1vZGVsIGZvciBwcm9ncmFtIGJlaGF2aW9yIGhhcyBiZWVuIHByb3Bvc2VkIGluIHJlY2VudCB5ZWFycyBhcyBhIGJhc2lzIGZvciB0aGUgZGVzaWduIG9mIHNjaGVkdWxpbmcgYW5kIHBhZ2luZyBhbGdvcml0aG1zLiBBbHRob3VnaCB0aGUgd29yZHMgYGB3b3JraW5nIHNldCcnIGFyZSBub3cgY29tbW9ubHkgZW5jb3VudGVyZWQgaW4gdGhlIGxpdGVyYXR1cmUgZGVhbGluZyB3aXRoIHJlc291cmNlIGFsbG9jYXRpb24sIHRoZXJlIGlzIGEgZGVhcnRoIG9mIHB1Ymxpc2hlZCBkYXRhIG9uIHByb2dyYW0gd29ya2luZyBzZXQgYmVoYXZpb3IuIEl0IGlzIHRoZSBwdXJwb3NlIG9mIHRoaXMgcGFwZXIgdG8gcHJlc2VudCBlbXBpcmljYWwgZGF0YSBmcm9tIGFjdHVhbCBwcm9ncmFtIG1lYXN1cmVtZW50cywgaW4gdGhlIGhvcGUgdGhhdCB3b3JrZXJzIGluIHRoZSBmaWVsZCBtaWdodCBmaW5kIGV4cGVyaW1lbnRhbCBldmlkZW5jZSB1cG9uIHdoaWNoIHRvIHN1YnN0YW50aWF0ZSBhbmQgYmFzZSB0aGVvcmV0aWNhbCB3b3JrLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbik7IEM2MTUwSiAoT3BlcmF0aW5nIHN5c3RlbXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJSb3lhbCBJbnN0LiBUZWNobm9sLiwgU3RvY2tob2xtLCBTd2VkZW4iLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgbWV0YXRoZW9yeTsgbWVhc3VyZW1lbnQ7IG9wZXJhdGluZyBzeXN0ZW1zIChjb21wdXRlcnMpOyBwYWdpbmc7IHByb2dyYW0gYmVoYXZpb3VyOyBzY2hlZHVsaW5nOyBzb2Z0d2FyZTsgc29mdHdhcmUgbWVhc3VyZW1lbnQ7IHZpcnR1YWwgbWVtb3J5OyB2aXJ0dWFsIHN0b3JhZ2U7IHdvcmtpbmcgc2V0IiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtHYXRlczoxOTczOlNUUywKICBhdXRob3IgPSAgICAgICAiR2VvZmZyZXkgVy4gR2F0ZXMgYW5kIERhdmlkIEEuIFBvcGxhd3NraSIsCiAgdGl0bGUgPSAgICAgICAgIkEgc2ltcGxlIHRlY2huaXF1ZSBmb3Igc3RydWN0dXJlZCB2YXJpYWJsZSBsb29rdXAiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICI5IiwKICBwYWdlcyA9ICAgICAgICAiNTYxLS01NjUiLAogIG1vbnRoID0gICAgICAgIHNlcCwKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJBIHNpbXBsZSB0ZWNobmlxdWUgZm9yIHRoZSBzeW1ib2wtdGFibGUgbG9va3VwIG9mIHN0cnVjdHVyZWQgdmFyaWFibGVzIGJhc2VkIG9uIHNpbXBsZSBhdXRvbWF0YSB0aGVvcnkgaXMgcHJlc2VudGVkLiBUaGUgdGVjaG5pcXVlIG9mZmVycyBhIGRldGVybWluaXN0aWMgc29sdXRpb24gdG8gYSBwcm9ibGVtIHdoaWNoIGlzIGN1cnJlbnRseSBoYW5kbGVkIGluIGEgbm9uZGV0ZXJtaW5pc3RpYyBtYW5uZXIgaW4gUEwvSSBhbmQgQ09CT0wgY29tcGlsZXJzLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTMwIChEYXRhIGhhbmRsaW5nIHRlY2huaXF1ZXMpOyBDNjE0MEQgKEhpZ2ggbGV2ZWwgbGFuZ3VhZ2VzKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiTWljaGlnYW4gU3RhdGUgVW5pdi4sIEVhc3QgTGFuc2luZywgTUksIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhdXRvbWF0YSB0aGVvcnk7IENPQk9MOyBjb21wdXRlciBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IGNvbXB1dGVyIHN5c3RlbXMgcHJvZ3JhbW1pbmc7IGRldGVybWluaXN0aWM7IFBMLzE7IFBML0k7IHN0cnVjdHVyZWQgdmFyaWFibGU7IHRhYmxlIGxvb2t1cCIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7WmVsa293aXR6OjE5NzM6UkUsCiAgYXV0aG9yID0gICAgICAgIk0uIFYuIFplbGtvd2l0eiIsCiAgdGl0bGUgPSAgICAgICAgIlJldmVyc2libGUgRXhlY3V0aW9uIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiOSIsCiAgcGFnZXMgPSAgICAgICAgIjU2Ni0tNTY2IiwKICBtb250aCA9ICAgICAgICBzZXAsCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9NaXNjL2RlYnVnLmJpYiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTQwRCAoSGlnaCBsZXZlbCBsYW5ndWFnZXMpOyBDNjE1MEcgKERpYWdub3N0aWMsIHRlc3RpbmcsIGRlYnVnZ2luZyBhbmQgZXZhbHVhdGluZyBzeXN0ZW1zKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIE1hcnlsYW5kLCBCYWx0aW1vcmUsIE1ELCBVU0EiLAogIGtleXdvcmRzID0gICAgICJiYWNrdHJhY2tpbmc7IGNvbXB1dGVyIHByb2dyYW07IGRlYnVnZ2luZzsgUEwvSTsgcHJvZ3JhbSBkZWJ1Z2dpbmc7IHByb2dyYW1taW5nIGxhbmd1YWdlOyBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IHJldmVyc2libGUgZXhlY3V0aW9uIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtCYXJuaGlsbDoxOTczOlNLQywKICBhdXRob3IgPSAgICAgICAiUm9iZXJ0IEUuIEJhcm5oaWxsIGFuZCBEYXZpZCBULiBQaWxjaGVyIiwKICB0aXRsZSA9ICAgICAgICAie1NhcmR9IGtlcm5lbHMgZm9yIGNlcnRhaW4gYml2YXJpYXRlIGN1YmF0dXJlcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNiIsCiAgbnVtYmVyID0gICAgICAgIjkiLAogIHBhZ2VzID0gICAgICAgICI1NjctLTU3MSAob3IgNTY3LS01NzA/PykiLAogIG1vbnRoID0gICAgICAgIHNlcCwKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY1RDMwIiwKICBNUm51bWJlciA9ICAgICAiNTIgMjE1MCIsCiAgbXJyZXZpZXdlciA9ICAgIlAuIEJyb2NrIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkFuIGVycm9yIGFuYWx5c2lzIGZvciBzb21lIGJpdmFyaWF0ZSBjdWJhdHVyZXMgaXMgZ2l2ZW4uIFRoZSByZW1haW5kZXJzIGFyZSBvYnRhaW5lZCBieSB0aGUgdXNlIG9mIFNhcmQga2VybmVscy4gTnVtZXJpY2FsIHJlc3VsdHMgYW5kIGNvbXB1dGVyIGdyYXBocyBhcmUgZ2l2ZW4gZm9yIHNvbWUgb2YgdGhlIGtlcm5lbCBmdW5jdGlvbnMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjAyOTBCIChFcnJvciBhbmFseXNpcyBpbiBudW1lcmljYWwgbWV0aG9kcyk7IEIwMjkwTSAoTnVtZXJpY2FsIGludGVncmF0aW9uIGFuZCBkaWZmZXJlbnRpYXRpb24pOyBDNDExMCAoRXJyb3IgYW5hbHlzaXMgaW4gbnVtZXJpY2FsIG1ldGhvZHMpOyBDNDE2MCAoTnVtZXJpY2FsIGludGVncmF0aW9uIGFuZCBkaWZmZXJlbnRpYXRpb24pIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI5MjEiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBVdGFoLCBTYWx0IExha2UgQ2l0eSwgVVQsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJiaXZhcmlhdGUgY3ViYXR1cmVzOyBjdWJhdHVyZXM7IGVycm9yIGFuYWx5c2lzOyBpbnRlZ3JhdGlvbjsgbWF0aGVtYXRpY2FsIHRlY2huaXF1ZXM7IG51bWVyaWNhbCBpbnRlZ3JhdGlvbjsgbnVtZXJpY2FsIG1ldGhvZHM7IHJlbWFpbmRlciBmb3JtdWxhczsgU2FyZCBrZXJuZWxzIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtIdW50ZXI6MTk3MzpBQUEsCiAgYXV0aG9yID0gICAgICAgIkQuIEIuIEh1bnRlciBhbmQgSi4gTS4gV2lsbGlhbXMiLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gNDU1OiBBbmFseXNpcyBvZiBTa2V3IFJlcHJlc2VudGF0aW9ucyBvZiB0aGUgU3ltbWV0cmljIEdyb3VwIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiOSIsCiAgcGFnZXMgPSAgICAgICAgIjU3MS0tNTcyIiwKICBtb250aCA9ICAgICAgICBzZXAsCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzczMTAgKE1hdGhlbWF0aWNzIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBCcmFkZm9yZCwgVUsiLAogIGtleXdvcmRzID0gICAgICJBTEdPTDsgYW5hbHlzaXM7IGJpbmFyeSBtb2RlbDsgZ3JvdXAgdGhlb3J5OyBsYXR0aWNlOyBvdXRlciBwcm9kdWN0OyBwZXJtdXRhdGlvbjsgc2tldyByZXByZXNlbnRhdGlvbnM7IHN1YnJvdXRpbmVzOyBzeW1tZXRyaWMgZ3JvdXAiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0ZlbmNsOjE5NzM6QUFSLAogIGF1dGhvciA9ICAgICAgICJaZGVue1x2e2V9fWsgRmVuY2wiLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gNDU2OiBSb3V0aW5nIFByb2JsZW0iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICI5IiwKICBwYWdlcyA9ICAgICAgICAiNTcyLS01NzQiLAogIG1vbnRoID0gICAgICAgIHNlcCwKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNzMxMCAoTWF0aGVtYXRpY3MgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIlJDQSwgTWFybGJvcm91Z2gsIE1BLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJGT1JUUkFOOyBncmFwaCB0aGVvcnk7IEhhbWlsdG9uaWFuIGNpcmN1aXQ7IG9wdGltaXNhdGlvbjsgcm91dGluZyBwcm9ibGVtOyBzaG9ydGVzdCBwYXRoOyBzdWJyb3V0aW5lczsgdHJhdmVsbGluZyBzYWxlc21hbiBwcm9ibGVtIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtCcm9uOjE5NzM6QUFGLAogIGF1dGhvciA9ICAgICAgICJDb2VuIEJyb24gYW5kIEpvZXAgS2VyYm9zY2giLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gNDU3OiBGaW5kaW5nIEFsbCBDbGlxdWVzIG9mIGFuIFVuZGlyZWN0ZWQgR3JhcGgiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICI5IiwKICBwYWdlcyA9ICAgICAgICAiNTc1LS01NzciLAogIG1vbnRoID0gICAgICAgIHNlcCwKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L1RoZW9yeS9ncmFwaC5jb2xvcmluZy5iaWIgYW5kIGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvVGhlb3J5L2NsaXF1ZS5jb2xvci5iaWIiLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGFubm90ZSA9ICAgICAgICJBbiBpbXBsaWNpdCBlbnVtZXJhdGlvbiBhbGdvcml0aG0gZm9yIGxpc3RpbmcgYWxsIGNsaXF1ZXMgaW4gYSBncmFwaC4gSW5jbHVkZXMgZWFzaWx5IHRyYW5zbGF0ZWQgY29kZS4iLAogIGNsYXNzY29kZXMgPSAgICJDNzMxMCAoTWF0aGVtYXRpY3MgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIlRlY2hub2wuIFVuaXYuLCBFaW5kaG92ZW4sIE5ldGhlcmxhbmRzIiwKICBrZXl3b3JkcyA9ICAgICAiQUxHT0w7IGJhY2t0cmFja2luZyBhbGdvcml0aG07IGJyYW5jaCBhbmQgYm91bmQgdGVjaG5pcXVlOyBjbGlxdWVzOyBjbHVzdGVyczsgZmdyYXBoIGNvbG9yaW5nIHJlbGF0ZWQgY2xpcXVlIGJhY2t0cmFja2luZyBicmFuY2ggYW5kIGJvdW5kOyBncmFwaCB0aGVvcnk7IG1heGltYWwgY29tcGxldGU7IHJlY3Vyc2lvbjsgc3ViZ3JhcGg7IHN1YnJvdXRpbmVzOyB1bmRpcmVjdGVkIGdyYXBoIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtSb3k6MTk3MzpSQUcsCiAgYXV0aG9yID0gICAgICAgIk0uIEsuIFJveSIsCiAgdGl0bGUgPSAgICAgICAgIlJlbWFyayBvbiB7YGBBbGdvcml0aG0gMzIzIFtHNl06IEdlbmVyYXRpb24gb2YgUGVybXV0YXRpb25zIGluIExleGljb2dyYXBoaWMgT3JkZXInJ30iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICI5IiwKICBwYWdlcyA9ICAgICAgICAiNTc3LS01NzgiLAogIG1vbnRoID0gICAgICAgIHNlcCwKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNzMxMCAoTWF0aGVtYXRpY3MgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIkphZGF2cHVyIFVuaXYuLCBDYWxjdXR0YSwgSW5kaWEiLAogIGtleXdvcmRzID0gICAgICJhbGdvcml0aG07IGdlbmVyYXRpb247IGxleGljb2dyYXBoaWMgb3JkZXI7IHBlcm11dGF0aW9uczsgc3RhdGlzdGljcyIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7Um95OjE5NzM6UkdQLAogIGF1dGhvciA9ICAgICAgICJNb2hpdCBLdW1hciBSb3kiLAogIHRpdGxlID0gICAgICAgICJSZW1hcmsgb24ge2BgQWxnb3JpdGhtIDMyMyBbRzZdOiBHZW5lcmF0aW9uIG9mIFBlcm11dGF0aW9ucyBpbiBMZXhpY29ncmFwaGljIE9yZGVyJyd9IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiOSIsCiAgcGFnZXMgPSAgICAgICAgIjU3Ny0tNTc4IiwKICBtb250aCA9ICAgICAgICBzZXAsCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJTYXQgSmFuIDE4IDE0OjU1OjQ5IDE5OTciLAp9CgpAQXJ0aWNsZXtMYXdyZW5jZToxOTczOlNNUCwKICBhdXRob3IgPSAgICAgICAiRS4gRS4gTGF3cmVuY2UiLAogIHRpdGxlID0gICAgICAgICJBIHNwYXJzZSBtYXRyaXggcGFja2FnZS4ge0l9IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiOSIsCiAgcGFnZXMgPSAgICAgICAgIjU3OC0tNTc4IiwKICBtb250aCA9ICAgICAgICBzZXAsCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjAyOTBIIChMaW5lYXIgYWxnZWJyYSk7IEM0MTQwIChMaW5lYXIgYWxnZWJyYSk7IEM3MzEwIChNYXRoZW1hdGljcyBjb21wdXRpbmcpIiwKICBjb3Jwc291cmNlID0gICAiTXVsbGFyZCBMdGQuLCBNaXRjaGFtLCBVSyIsCiAga2V5d29yZHMgPSAgICAgImFsZ29yaXRobTsgbWF0cml4IGFsZ2VicmE7IHNwYXJzZSBtYXRyaXggcGFja2FnZSIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7V2lsbGlhbXNvbjoxOTczOkhQUCwKICBhdXRob3IgPSAgICAgICAiSC4gV2lsbGlhbXNvbiIsCiAgdGl0bGUgPSAgICAgICAgIkhpZGRlbi1saW5lIHBsb3R0aW5nIHByb2dyYW0iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICI5IiwKICBwYWdlcyA9ICAgICAgICAiNTc4LS01NzkiLAogIG1vbnRoID0gICAgICAgIHNlcCwKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNTU0MCAoVGVybWluYWxzIGFuZCBncmFwaGljIGRpc3BsYXlzKTsgQzYxMzAgKERhdGEgaGFuZGxpbmcgdGVjaG5pcXVlcykiLAogIGNvcnBzb3VyY2UgPSAgICJOYXQuIENvbi1TZXJ2LiBJbmMuLCBBdXN0aW4sIFRYLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJhbGdvcml0aG07IGNvbXB1dGVyIGdyYXBoaWNzOyBkYXRhIGhhbmRsaW5nOyBoaWRkZW4gbGluZSBwbG90dGluZzsgcHJvZ3JhbSIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7RHJpZXNzZW46MTk3MzpMUlAsCiAgYXV0aG9yID0gICAgICAgIkguIEIuIERyaWVzc2VuIGFuZCBFLiBXLiBMZU0uIEh1bnQiLAogIHRpdGxlID0gICAgICAgICJMb2NhbGl6YXRpb24gb2YgdGhlIHJvb3RzIG9mIGEgcG9seW5vbWlhbCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNiIsCiAgbnVtYmVyID0gICAgICAgIjkiLAogIHBhZ2VzID0gICAgICAgICI1NzktLTU3OSIsCiAgbW9udGggPSAgICAgICAgc2VwLAogIHllYXIgPSAgICAgICAgICIxOTczIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkIwMjkwSCAoTGluZWFyIGFsZ2VicmEpOyBDNDE0MCAoTGluZWFyIGFsZ2VicmEpOyBDNzMxMCAoTWF0aGVtYXRpY3MgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIlN1cHJlbWUgSGVhZHF1YXJ0ZXJzIEFsbGllZCBQb3dlcnMgRXVyb3BlLCBUaGUgSGFndWUsIE5ldGhlcmxhbmRzIiwKICBrZXl3b3JkcyA9ICAgICAiYWxnb3JpdGhtOyBsb2NhbGl6YXRpb247IHBvbHlub21pYWw7IHBvbHlub21pYWxzOyByb290cyIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7TWNHZWFjaGllOjE5NzM6TVRVLAogIGF1dGhvciA9ICAgICAgICJKb2huIFMuIE1jR2VhY2hpZSIsCiAgdGl0bGUgPSAgICAgICAgIk11bHRpcGxlIFRlcm1pbmFscyBVbmRlciBVc2VyIFByb2dyYW0gQ29udHJvbCBpbiBhIFRpbWUtU2hhcmluZyBFbnZpcm9ubWVudCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNiIsCiAgbnVtYmVyID0gICAgICAgIjEwIiwKICBwYWdlcyA9ICAgICAgICAiNTg3LS01OTAiLAogIG1vbnRoID0gICAgICAgIG9jdCwKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJVc2VyLXdyaXR0ZW4gcHJvZ3JhbXMgb24gdGhlIERhcnRtb3V0aCBUaW1lLVNoYXJpbmcgU3lzdGVtIGNhbiBjb21tdW5pY2F0ZSB3aXRoIG1hbnkgcmVtb3RlIHRlcm1pbmFscyBzaW11bHRhbmVvdXNseSBhbmQgY2FuIGNvbnRyb2wgdGhlIGludGVyYWN0aW9ucyBiZXR3ZWVuIHRoZXNlIHRlcm1pbmFscy4gU3VjaCBwcm9ncmFtcyBjYW4gYmUgd3JpdHRlbiB1c2luZyBzdGFuZGFyZCBpbnB1dCBhbmQgb3V0cHV0IGluc3RydWN0aW9ucyBpbiBhbnkgbGFuZ3VhZ2UgYXZhaWxhYmxlIG9uIHRoZSBzeXN0ZW0uIFRoaXMgcGFwZXIgZGVzY3JpYmVzIGhvdyB0aGlzIG11bHRpcGxlLXRlcm1pbmFsIGZhY2lsaXR5IHdhcyBpbXBsZW1lbnRlZCB3aXRob3V0IHJlcXVpcmluZyBhbnkgY2hhbmdlcyBpbiB0aGUgc3lzdGVtIGV4ZWN1dGl2ZSBvciBpbiBhbnkgb2YgdGhlIHN5c3RlbSdzIGNvbXBpbGVycyBvciBpbnRlcnByZXRlcnMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxNTBKIChPcGVyYXRpbmcgc3lzdGVtcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMiIsCiAgY29ycHNvdXJjZSA9ICAgIkRhcnRtb3V0aCBDb2xsLiwgSGFub3ZlciwgTkgsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBzeXN0ZW1zLCBkaWdpdGFsOyBtdWx0aXBsZSB0ZXJtaW5hbHM7IG9uLWxpbmUgaW50ZXJhY3Rpb247IHJlbW90ZSBjb25zb2xlczsgdGltZSBzaGFyaW5nOyB0aW1lLXNoYXJpbmcgcHJvZ3JhbXM7IHVzZXIgcHJvZ3JhbSBjb250cm9sIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtCb2Jyb3c6MTk3MzpNU0ksCiAgYXV0aG9yID0gICAgICAgIkRhbmllbCBHLiBCb2Jyb3cgYW5kIEJlbiBXZWdicmVpdCIsCiAgdGl0bGUgPSAgICAgICAgIkEgTW9kZWwgYW5kIFN0YWNrIEltcGxlbWVudGF0aW9uIG9mIE11bHRpcGxlIEVudmlyb25tZW50cyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNiIsCiAgbnVtYmVyID0gICAgICAgIjEwIiwKICBwYWdlcyA9ICAgICAgICAiNTkxLS02MDMiLAogIG1vbnRoID0gICAgICAgIG9jdCwKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvQ29tcGlsZXIvZ2FyYmFnZS5jb2xsZWN0aW9uLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIlRoaXMgcGFwZXIgcHJlc2VudHMgYW4gaW1wbGVtZW50YXRpb24gdGVjaG5pcXVlIHVzaW5nIGEgc2luZ2xlIHN0YWNrIHRvIGhvbGQgcHJvY2VkdXJlIGFjdGl2YXRpb24gc3RvcmFnZSB3aGljaCBhbGxvd3MgcmV0ZW50aW9uIG9mIHRoYXQgc3RvcmFnZSBmb3IgZHVyYXRpb25zIG5vdCBuZWNlc3NhcmlseSB0aWVkIHRvIGNvbnRyb2wgZmxvdy4gVGhlIHRlY2huaXF1ZSBoYXMgdGhlIHByb3BlcnR5IHRoYXQsIGluIHRoZSBzaW1wbGUgY2FzZSwgaXQgcnVucyBpZGVudGljYWxseSB0byB0aGUgdXN1YWwgYXV0b21hdGljIHN0YWNrIGFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbiBwcm9jZWR1cmUuIEFwcGxpY2F0aW9ucyBvZiB0aGlzIHRlY2huaXF1ZSB0byBtdWx0aXRhc2tpbmcsIGNvcm91dGluZXMsIGJhY2t0cmFja2luZywgbGFiZWwtdmFsdWVkIHZhcmlhYmxlcywgYW5kIGZ1bmN0aW9uYWwgYXJndW1lbnRzIGFyZSBkaXNjdXNzZWQuIEluIHRoZSBpbml0aWFsIG1vZGVsLCBhIHNpbmdsZSByZWFsIHByb2Nlc3NvciBpcyBhc3N1bWVkLCBhbmQgdGhlIGltcGxlbWVudGF0aW9uIGFzc3VtZXMgbXVsdGlwbGUtcHJvY2Vzc2VzIGNvb3JkaW5hdGUgYnkgcGFzc2luZyBjb250cm9sIGV4cGxpY2l0bHkgdG8gb25lIGFub3RoZXIuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMTAgKFN5c3RlbXMgYW5hbHlzaXMgYW5kIHByb2dyYW1taW5nKTsgQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiWGVyb3ggUGFsbyBBbHRvIFJlcy4gQ2VudGVyLCBDQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIHByb2dyYW1taW5nOyBjb250cm9sOyBjb3JvdXRpbmVzOyBkZW5kcmFyY2h5OyBkeW5hbWljOyBmdW5hcmcgcHJvYmxlbTsgbGFiZWwtdmFsdWVkIHZhcmlhYmxlczsgbW9kZWw7IG11bHRpcGxlIGVudmlyb25tZW50czsgbXVsdGlwcm9jZXNzaW5nIHByb2dyYW1zOyBtdWx0aXByb2Nlc3NvcjsgbXVsdGl0YXNraW5nOyBwcm9ncmFtbWluZzsgcmV0ZW50aW9uOyBzdGFjayBhbGxvY2F0aW9uOyBzdGFjayBpbXBsZW1lbnRhdGlvbjsgc3RvcmFnZSBhbGxvY2F0aW9uOyBzdHJ1Y3R1cmVzOyBzeXN0ZW1zIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtMdW06MTk3MzpHUEEsCiAgYXV0aG9yID0gICAgICAgIlZpbmNlbnQgWS4gTHVtIiwKICB0aXRsZSA9ICAgICAgICAiR2VuZXJhbCBQZXJmb3JtYW5jZSBBbmFseXNpcyBvZiBLZXktdG8tQWRkcmVzcyBUcmFuc2Zvcm1hdGlvbiBNZXRob2RzIFVzaW5nIGFuIEFic3RyYWN0IEZpbGUgQ29uY2VwdCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNiIsCiAgbnVtYmVyID0gICAgICAgIjEwIiwKICBwYWdlcyA9ICAgICAgICAiNjAzLS02MTIiLAogIG1vbnRoID0gICAgICAgIG9jdCwKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGF0YWJhc2UvV2llZGVyaG9sZC5iaWIiLAogIGFic3RyYWN0ID0gICAgICJUaGlzIHBhcGVyIHByZXNlbnRzIGEgbmV3IGFwcHJvYWNoIHRvIHRoZSBhbmFseXNpcyBvZiBwZXJmb3JtYW5jZSBvZiB0aGUgdmFyaW91cyBrZXktdG8tYWRkcmVzcyB0cmFuc2Zvcm1hdGlvbiBtZXRob2RzLiBJbiB0aGlzIGFwcHJvYWNoIHRoZSBrZXlzIGluIGEgZmlsZSBhcmUgYXNzdW1lZCB0byBoYXZlIGJlZW4gc2VsZWN0ZWQgZnJvbSB0aGUga2V5IHNwYWNlIGFjY29yZGluZyB0byBhIGNlcnRhaW4gcHJvYmFiaWxpc3RpYyBzZWxlY3Rpb24gYWxnb3JpdGhtLiBBbGwgZmlsZXMgd2l0aCB0aGUgc2FtZSBudW1iZXIgb2Yga2V5cyBzZWxlY3RlZCBmcm9tIHRoaXMga2V5IHNwYWNlIHdpbGwgYmUgc3VpdGFibHkgd2VpZ2h0ZWQgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBhbGdvcml0aG0sIGFuZCB0aGUgYXZlcmFnZSBwZXJmb3JtYW5jZSBvZiB0aGUgdHJhbnNmb3JtYXRpb24gbWV0aG9kcyBvbiB0aGVzZSBmaWxlcyB3aWxsIGJlIHVzZWQgYXMgdGhlIHBvdGVudGlhbCBvZiB0aGVzZSBtZXRob2RzLiBVc2luZyB0aGlzIGFuYWx5c2lzLCBtZXRob2RzIHdpdGggdGhlIHNhbWUgb3ZlcmFsbCBwZXJmb3JtYW5jZSBjYW4gYmUgY2xhc3NpZmllZCBhbmQga2V5IGRpc3RyaWJ1dGlvbnMgcGFydGlhbCB0byBjZXJ0YWluIHRyYW5zZm9ybWF0aW9ucyBjYW4gYmUgaWRlbnRpZmllZC4gQWxsIHRoaXMgY2FuIGJlIGRvbmUgYW5hbHl0aWNhbGx5LiBUaGUgYXBwcm9hY2ggaXMgYXBwbGllZCB0byBhIGdyb3VwIG9mIHRyYW5zZm9ybWF0aW9uIG1ldGhvZHMgdXNpbmcgZmlsZXMgd2hvc2Uga2V5cyBhcmUgc2VsZWN0ZWQgcmFuZG9tbHkuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBhbm5vdGUgPSAgICAgICAiYW5hbHlzaXMgYW5kIHJlc3VsdHMgdXNpbmcgZGlzdHJpYnV0aW9ucyBmcm9tIHRoZSBlbnRpcmUga2V5IGRvbWFpbi4iLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjM7IDkwMSIsCiAgY29ycHNvdXJjZSA9ICAgIklCTSBSZXMuIExhYi4sIFNhbiBKb3NlLCBDQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFic3RyYWN0IGZpbGUgY29uY2VwdDsgYWNjZXNzOyBkaXJlY3QgYWRkcmVzc2luZzsgZmlsZSBvcmdhbmlzYXRpb247IGhhc2hpbmc7IGluZm9ybWF0aW9uIHJldHJpZXZhbCBzeXN0ZW1zOyBrZXkgdG8gYWRkcmVzcyB0cmFuc2Zvcm1hdGlvbjsgcGVyZm9ybWFuY2UgYW5hbHlzaXM7IHJhbmRvbTsgc2NhdHRlciBzdG9yYWdlOyBzdG9yYWdlIG1hbmFnZW1lbnQiLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0xhbXBzb246MTk3MzpOQ1AsCiAgYXV0aG9yID0gICAgICAgIkJ1dGxlciBXLiBMYW1wc29uIiwKICB0aXRsZSA9ICAgICAgICAiQSBOb3RlIG9uIHRoZSBDb25maW5lbWVudCBQcm9ibGVtIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiMTAiLAogIHBhZ2VzID0gICAgICAgICI2MTMtLTYxNSIsCiAgbW9udGggPSAgICAgICAgb2N0LAogIHllYXIgPSAgICAgICAgICIxOTczIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EYXRhYmFzZS9XaWVkZXJob2xkLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIlRoaXMgbm90ZSBleHBsb3JlcyB0aGUgcHJvYmxlbSBvZiBjb25maW5pbmcgYSBwcm9ncmFtIGR1cmluZyBpdHMgZXhlY3V0aW9uIHNvIHRoYXQgaXQgY2Fubm90IHRyYW5zbWl0IGluZm9ybWF0aW9uIHRvIGFueSBvdGhlciBwcm9ncmFtIGV4Y2VwdCBpdHMgY2FsbGVyLiBBIHNldCBvZiBleGFtcGxlcyBhdHRlbXB0cyB0byBzdGFrZSBvdXQgdGhlIGJvdW5kYXJpZXMgb2YgdGhlIHByb2JsZW0uIE5lY2Vzc2FyeSBjb25kaXRpb25zIGZvciBhIHNvbHV0aW9uIGFyZSBzdGF0ZWQgYW5kIGluZm9ybWFsbHkganVzdGlmaWVkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgYW5ub3RlID0gICAgICAgIlByZXZlbnRpb24gb2YgcHJpdmFjeSBsZWFrcyBiZXR3ZWVuIHByb2dyYW1zLiIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTMwIChEYXRhIGhhbmRsaW5nIHRlY2huaXF1ZXMpOyBDNjE1MEogKE9wZXJhdGluZyBzeXN0ZW1zKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiWGVyb3ggUGFsbyBBbHRvIFJlcy4gQ2VudGVyLCBDQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIHN5c3RlbXMgcHJvZ3JhbW1pbmc7IGNvbmZpbmVtZW50OyBsZWFrYWdlIG9mIGRhdGE7IG9wZXJhdGluZyBzeXN0ZW1zIChjb21wdXRlcnMpOyBwcml2YWN5OyBwcm9wcmlldGFyeSBwcm9ncmFtOyBwcm90ZWN0aW9uOyBzZWN1cml0eTsgc2VjdXJpdHkgb2YgZGF0YSIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7SGlyc2NoYmVyZzoxOTczOkNETSwKICBhdXRob3IgPSAgICAgICAiRGFuaWVsIFMuIEhpcnNjaGJlcmciLAogIHRpdGxlID0gICAgICAgICJBIENsYXNzIG9mIER5bmFtaWMgTWVtb3J5IEFsbG9jYXRpb24gQWxnb3JpdGhtcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNiIsCiAgbnVtYmVyID0gICAgICAgIjEwIiwKICBwYWdlcyA9ICAgICAgICAiNjE1LS02MTgiLAogIG1vbnRoID0gICAgICAgIG9jdCwKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJBIG5ldyBkeW5hbWljIG1lbW9yeSBhbGxvY2F0aW9uIGFsZ29yaXRobSwgdGhlIEZpYm9uYWNjaSBzeXN0ZW0sIGlzIGludHJvZHVjZWQuIFRoaXMgYWxnb3JpdGhtIGlzIHNpbWlsYXIgdG8sIGJ1dCBzZWVtcyB0byBoYXZlIGNlcnRhaW4gYWR2YW50YWdlcyBvdmVyLCB0aGUgYGBidWRkeScnIHN5c3RlbS4gQSBnZW5lcmFsaXphdGlvbiBpcyBtZW50aW9uZWQgd2hpY2ggaW5jbHVkZXMgYm90aCBvZiB0aGVzZSBzeXN0ZW1zIGFzIHNwZWNpYWwgY2FzZXMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiUHJpbmNldG9uIFVuaXYuLCBOSiwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImJ1ZGR5IHN5c3RlbTsgY29tcHV0ZXIgb3BlcmF0aW5nIHN5c3RlbXM7IGR5bmFtaWMgbWVtb3J5IGFsbG9jYXRpb24gYWxnb3JpdGhtczsgZHluYW1pYyBzdG9yYWdlIGFsbG9jYXRpb247IEZpYm9uYWNjaTsgRmlib25hY2NpIHN5c3RlbTsgZnJhZ21lbnRhdGlvbjsgc2ltdWxhdGlvbjsgc3RvcmFnZSBhbGxvY2F0aW9uIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtQcmlldmU6MTk3MzpVUFIsCiAgYXV0aG9yID0gICAgICAgIkJhcnRvbiBHLiBQcmlldmUiLAogIHRpdGxlID0gICAgICAgICJVc2luZyBQYWdlIFJlc2lkZW5jeSB0byBTZWxlY3QgdGhlIFdvcmtpbmcgU2V0IFBhcmFtZXRlciIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNiIsCiAgbnVtYmVyID0gICAgICAgIjEwIiwKICBwYWdlcyA9ICAgICAgICAiNjE5LS02MjAiLAogIG1vbnRoID0gICAgICAgIG9jdCwKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJEZW5uaW5nJ3MgbWV0aG9kIGZvciBzZWxlY3RpbmcgdGhlIHdvcmtpbmcgc2V0IHBhcmFtZXRlciwgd2hpY2ggdXNlcyBpbnRlcnJlZmVyZW5jZSBpbnRlcnZhbHMsIGlzIGV4YW1pbmVkLiBTZXZlcmFsIG9taXNzaW9ucyBpbiBoaXMgbW9kZWwgYXJlIG5vdGVkLCBhbmQgbmV3IGFzc3VtcHRpb25zIGFyZSBpbnRyb2R1Y2VkIHRvIG92ZXJjb21lIHRoZXNlIG9taXNzaW9ucy4gVXNpbmcgdGhpcyBtb2RpZmllZCBtb2RlbCwgRGVubmluZydzIHJlc3VsdHMgb24gcGFnZSByZXNpZGVuY3kgYXJlIHJlZGVyaXZlZCBhbmQgcmVjb25zaWRlcmVkIGZvciBzZWxlY3RpbmcgdGhlIHdvcmtpbmcgc2V0IHBhcmFtZXRlci4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDI0MCAoUHJvZ3JhbW1pbmcgYW5kIGFsZ29yaXRobSB0aGVvcnkpOyBDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJCZWxsIFRlbGVwaG9uZSBMYWJzLiwgSW5jLiwgTmFwZXJ2aWxsZSwgSUwsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBvcGVyYXRpbmcgc3lzdGVtczsgcGFnZSByZXNpZGVuY3k7IHByb2dyYW0gYmVoYXZpb3VyOyBwcm9ncmFtbWluZyB0aGVvcnk7IHZpcnR1YWwgc3RvcmFnZTsgd29ya2luZyBzZXQgcGFyYW1ldGVyIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtNaWxsc3RlaW46MTk3MzpDU0ksCiAgYXV0aG9yID0gICAgICAgIlJvYmVydCBFLiBNaWxsc3RlaW4iLAogIHRpdGxlID0gICAgICAgICJDb250cm9sIFN0cnVjdHVyZXMgaW4ge0lsbGlhYyBJViBGb3J0cmFufSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNiIsCiAgbnVtYmVyID0gICAgICAgIjEwIiwKICBwYWdlcyA9ICAgICAgICAiNjIxLS02MjciLAogIG1vbnRoID0gICAgICAgIG9jdCwKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJBcyBwYXJ0IG9mIGFuIGVmZm9ydCB0byBkZXNpZ24gYW5kIGltcGxlbWVudCBhIEZvcnRyYW4gY29tcGlsZXIgb24gdGhlIElMTElBQyBJViwgYW4gZXh0ZW5kZWQgRm9ydHJhbiwgY2FsbGVkIElWVFJBTiwgaGFzIGJlZW4gZGV2ZWxvcGVkLiBUaGlzIGxhbmd1YWdlIHByb3ZpZGVzIGEgbWVhbnMgb2YgZXhwcmVzc2luZyBkYXRhIGFuZCBjb250cm9sIHN0cnVjdHVyZXMgc3VpdGFibGUgZm9yIGV4cGxvaXRpbmcgSUxMSUFDIElWIHBhcmFsbGVsaXNtLiBccGFyIFRoaXMgcGFwZXIgcmV2aWV3cyB0aGUgaGFyZHdhcmUgY2hhcmFjdGVyaXN0aWNzIG9mIHRoZSBJTExJQUMgYW5kIHNpbmdsZXMgb3V0IHVuY29udmVudGlvbmFsIGZlYXR1cmVzIHdoaWNoIGNvdWxkIGJlIGV4cGVjdGVkIHRvIGluZmx1ZW5jZSBsYW5ndWFnZSAoYW5kIGNvbXBpbGVyKSBkZXNpZ24uIFRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlc2UgZmVhdHVyZXMgZm9yIGRhdGEgbGF5b3V0IGFuZCBhbGdvcml0aG0gc3RydWN0dXJlIGFyZSBkaXNjdXNzZWQsIGFuZCB0aGUgY29uY2x1c2lvbiBpcyBkcmF3biB0aGF0IGRhdGEgYWxsb2NhdGlvbiByYXRoZXIgdGhhbiBjb2RlIHN0cnVjdHVyaW5nIGlzIHRoZSBjcnVjaWFsIElMTElBQyBvcHRpbWl6YXRpb24gcHJvYmxlbS4gQSBzYXRpc2ZhY3RvcnkgbWV0aG9kIG9mIGRhdGEgYWxsb2NhdGlvbiBpcyB0aGVuIHByZXNlbnRlZC4gTGFuZ3VhZ2Ugc3RydWN0dXJlcyB0byB1dGlsaXplIHRoaXMgc3RvcmFnZSBtZXRob2QgYW5kIGV4cHJlc3MgcGFyYWxsZWwgYWxnb3JpdGhtcyBhcmUgZGVzY3JpYmVkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTQwRCAoSGlnaCBsZXZlbCBsYW5ndWFnZXMpOyBDNjE1MEMgKENvbXBpbGVycywgaW50ZXJwcmV0ZXJzIGFuZCBvdGhlciBwcm9jZXNzb3JzKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiTWFzc2FjaHVzZXR0cyBDb21wdXRlciBBc3NvY2lhdGVzLCBJbmMuLCBXYWtlZmllbGQsIE1BLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYXJyYXkgYWxsb2NhdGlvbjsgYXJyYXkgcHJvY2Vzc2luZzsgY29tcHV0ZXIgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzOyBjb250cm9sIHN0cnVjdHVyZXM7IGV4cGxpY2l0IHBhcmFsbGVsaXNtOyBGT1JUUkFOOyBJTExJQUMgSVY7IElMTElBQyBJViBGb3J0cmFuOyBwYXJhbGxlbCBjb250cm9sOyBwYXJhbGxlbCBjb250cm9sIHN0cnVjdHVyZXM7IHBhcmFsbGVsIHByb2Nlc3Npbmc7IHBhcmFsbGVsaXNtIGRldGVjdGlvbjsgcHJvY2VkdXJlIG9yaWVudGVkIGxhbmd1YWdlczsgcHJvZ3JhbSBjb21waWxlcnM7IHN0cnVjdHVyZXMiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle1JvYmVyczoxOTczOkFBRCwKICBhdXRob3IgPSAgICAgICAiUC4gRC4gUm9iZXJzIGFuZCBTLiBTLiBSb2JlcnMiLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gNDU4OiBEaXNjcmV0ZSBMaW5lYXIgJHtMfV8xJCBBcHByb3hpbWF0aW9uIGJ5IEludGVydmFsIExpbmVhciBQcm9ncmFtbWluZyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNiIsCiAgbnVtYmVyID0gICAgICAgIjEwIiwKICBwYWdlcyA9ICAgICAgICAiNjI5LS02MzEiLAogIG1vbnRoID0gICAgICAgIG9jdCwKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJCMDI2MCAoT3B0aW1pc2F0aW9uIHRlY2huaXF1ZXMpOyBCMDI5MEYgKEludGVycG9sYXRpb24gYW5kIGZ1bmN0aW9uIGFwcHJveGltYXRpb24pOyBDMTE4MCAoT3B0aW1pc2F0aW9uIHRlY2huaXF1ZXMpOyBDNDEzMCAoSW50ZXJwb2xhdGlvbiBhbmQgZnVuY3Rpb24gYXBwcm94aW1hdGlvbik7IEM3MzEwIChNYXRoZW1hdGljcyBjb21wdXRpbmcpIiwKICBjb3Jwc291cmNlID0gICAiRXJuc3QgYW5kIEVybnN0LCBXYXNoaW5ndG9uLCBEQywgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiZGlzY3JldGUgbGluZWFyOyBGT1JUUkFOOyBmdW5jdGlvbiBhcHByb3hpbWF0aW9uOyBpbnRlcnZhbCBsaW5lYXIgcHJvZ3JhbW1pbmc7IEwvc3ViIDEvIGFwcHJveGltYXRpb247IGxpbmVhciBwcm9ncmFtbWluZzsgc3Vib3B0aW1pc2F0aW9uIG1ldGhvZDsgc3Vicm91dGluZTsgc3Vicm91dGluZXMiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle1N5c2xvOjE5NzM6QUFFLAogIGF1dGhvciA9ICAgICAgICJNLiBNLiBTeXNsbyIsCiAgdGl0bGUgPSAgICAgICAgIntBQ019IEFsZ29yaXRobSA0NTk6IFRoZSBFbGVtZW50YXJ5IENpcmN1aXRzIG9mIGEgR3JhcGgiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICIxMCIsCiAgcGFnZXMgPSAgICAgICAgIjYzMi0tNjMzIiwKICBtb250aCA9ICAgICAgICBvY3QsCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzczMTAgKE1hdGhlbWF0aWNzIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBXcm9jbGF3LCBQb2xhbmQiLAogIGtleXdvcmRzID0gICAgICJBTEdPTDsgZWxlbWVudGFyeSBjaXJjdWl0czsgZ3JhcGg7IGdyYXBoIHRoZW9yeTsgcGF0aCBzZWFyY2ggYWxnb3JpdGhtOyBzdWJyb3V0aW5lcyIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7U2F5bG9yOjE5NzM6QUFDLAogIGF1dGhvciA9ICAgICAgICJQYXVsIEUuIFNheWxvciBhbmQgSmFtZXMgRC4gU2ViYXN0aWFuIiwKICB0aXRsZSA9ICAgICAgICAie0FDTX0gQWxnb3JpdGhtIDQ2MDogQ2FsY3VsYXRpb24gb2YgT3B0aW11bSBQYXJhbWV0ZXJzIGZvciBBbHRlcm5hdGluZyBEaXJlY3Rpb24gSW1wbGljaXQgUHJvY2VkdXJlcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNiIsCiAgbnVtYmVyID0gICAgICAgIjEwIiwKICBwYWdlcyA9ICAgICAgICAiNjMzLS02MzUiLAogIG1vbnRoID0gICAgICAgIG9jdCwKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJCMDI5MFAgKERpZmZlcmVudGlhbCBlcXVhdGlvbnMpOyBDNDE3MCAoRGlmZmVyZW50aWFsIGVxdWF0aW9ucyk7IEM3MzEwIChNYXRoZW1hdGljcyBjb21wdXRpbmcpIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gSWxsaW5vaXMsIFVyYmFuYSwgSUwsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImFsdGVybmF0aW5nIGRpcmVjdGlvbiBpbXBsaWNpdDsgZGlmZmVyZW50aWFsIGVxdWF0aW9uczsgZWxsaXB0aWMgZGlmZmVyZW5jZTsgZXF1YXRpb25zOyBGT1JUUkFOOyBvcHRpbXVtIHBhcmFtZXRlcnM7IHByb2NlZHVyZXM7IHNpbXVsdGFuZW91cyBlcXVhdGlvbnM7IHN1YnJvdXRpbmU7IHN1YnJvdXRpbmVzIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtCdXJrb3dza2k6MTk3MzpBQUMsCiAgYXV0aG9yID0gICAgICAgIkYuIEouIEJ1cmtvd3NraSBhbmQgVy4gRC4gSG9za2lucyIsCiAgdGl0bGUgPSAgICAgICAgIntBQ019IEFsZ29yaXRobSA0NjE6IEN1YmljIFNwbGluZSBTb2x1dGlvbnMgdG8gYSBDbGFzcyBvZiBGdW5jdGlvbmFsIERpZmZlcmVudGlhbCBFcXVhdGlvbnMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICIxMCIsCiAgcGFnZXMgPSAgICAgICAgIjYzNS0tNjM3IiwKICBtb250aCA9ICAgICAgICBvY3QsCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjAyOTBGIChJbnRlcnBvbGF0aW9uIGFuZCBmdW5jdGlvbiBhcHByb3hpbWF0aW9uKTsgQjAyOTBQIChEaWZmZXJlbnRpYWwgZXF1YXRpb25zKTsgQzQxMzAgKEludGVycG9sYXRpb24gYW5kIGZ1bmN0aW9uIGFwcHJveGltYXRpb24pOyBDNDE3MCAoRGlmZmVyZW50aWFsIGVxdWF0aW9ucyk7IEM3MzEwIChNYXRoZW1hdGljcyBjb21wdXRpbmcpIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gTWFuaXRvYmEsIFdpbm5pcGVnLCBNYW4uLCBDYW5hZGEiLAogIGtleXdvcmRzID0gICAgICIobWF0aGVtYXRpY3MpOyBib3VuZGFyeSB2YWx1ZSBwcm9ibGVtOyBib3VuZGFyeS12YWx1ZSBwcm9ibGVtczsgY3ViaWMgc3BsaW5lIHNvbHV0aW9uczsgZGlmZmVyZW50aWFsIGVxdWF0aW9uczsgRk9SVFJBTjsgZnVuY3Rpb25hbCBkaWZmZXJlbnRpYWwgZXF1YXRpb25zOyBwaWVjZXdpc2UgY29udGludW91cyBhcHByb3hpbWF0aW9uOyBzcGxpbmVzOyBTUE5CVkY7IHN1YnJvdXRpbmU7IHN1YnJvdXRpbmVzIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtEb25uZWxseToxOTczOkFBQiwKICBhdXRob3IgPSAgICAgICAiVC4gRy4gRG9ubmVsbHkiLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gNDYyOiBCaXZhcmlhdGUgTm9ybWFsIERpc3RyaWJ1dGlvbiIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNiIsCiAgbnVtYmVyID0gICAgICAgIjEwIiwKICBwYWdlcyA9ICAgICAgICAiNjM4LS02MzgiLAogIG1vbnRoID0gICAgICAgIG9jdCwKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNzMxMCAoTWF0aGVtYXRpY3MgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIE5vcnRoIENhcm9saW5hLCBDaGFwZWwgSGlsbCwgTkMsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImJpdmFyaWF0ZSBub3JtYWwgZGlzdHJpYnV0aW9uOyBGT1JUUkFOOyBmcmVxdWVuY3kgZGlzdHJpYnV0aW9uOyBzdGF0aXN0aWNzOyBzdWJyb3V0aW5lOyBzdWJyb3V0aW5lcyIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7TGV3YXJ0OjE5NzM6QUFBLAogIGF1dGhvciA9ICAgICAgICJDLiBSLiBMZXdhcnQiLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gNDYzOiBBbGdvcml0aG1zIHtTQ0FMRX0xLCB7U0NBTEV9MiwgYW5kIHtTQ0FMRX0zIGZvciBEZXRlcm1pbmF0aW9uIG9mIFNjYWxlcyBvbiBDb21wdXRlciBHZW5lcmF0ZWQgUGxvdHMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICIxMCIsCiAgcGFnZXMgPSAgICAgICAgIjYzOS0tNjQwIiwKICBtb250aCA9ICAgICAgICBvY3QsCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzU1NDAgKFRlcm1pbmFscyBhbmQgZ3JhcGhpYyBkaXNwbGF5cyk7IEM2MTMwIChEYXRhIGhhbmRsaW5nIHRlY2huaXF1ZXMpIiwKICBjb3Jwc291cmNlID0gICAiQmVsbCBUZWxlcGhvbmUgTGFiLiwgSW5jLiwgSG9sbWRlbCwgTkosIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImFsZ29yaXRobXM7IGNvbXB1dGVyIGdlbmVyYXRlZCBwbG90czsgY29tcHV0ZXIgZ3JhcGhpY3M7IGRldGVybWluYXRpb24gb2Y7IEZPUlRSQU47IFNDQUxFIDE7IFNDQUxFIDI7IFNDQUxFIDM7IHNjYWxlczsgc3Vicm91dGluZXMiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0JhY2htYW46MTk3MzpQTiwKICBhdXRob3IgPSAgICAgICAiQ2hhcmxlcyBXLiBCYWNobWFuIiwKICB0aXRsZSA9ICAgICAgICAiVGhlIFByb2dyYW1tZXIgYXMgTmF2aWdhdG9yIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiMTEiLAogIHBhZ2VzID0gICAgICAgICI2NTMtLTY1OCIsCiAgbW9udGggPSAgICAgICAgbm92LAogIHllYXIgPSAgICAgICAgICIxOTczIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgImZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGF0YWJhc2UvV2llZGVyaG9sZC5iaWIgYW5kIGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGF0YWJhc2UvR3JhZWZlLmJpYiIsCiAgbm90ZSA9ICAgICAgICAgIjE5NzMgQUNNIFR1cmluZyBBd2FyZCBMZWN0dXJlLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgYW5ub3RlID0gICAgICAgIlR1cmluZyBhd2FyZCBhY2NlcHRhbmNlIHNwZWVjaC1nZW5lcmFsIHZpZXcgb2YgdGhlIHN0YXRlIG9mIGRhdGFiYXNlIHdvcmsgZnJvbSBhIERCVEcgb3JpZ2luYXRvci4iLAogIGNsYXNzY29kZXMgPSAgICJDNjExMCAoU3lzdGVtcyBhbmFseXNpcyBhbmQgcHJvZ3JhbW1pbmcpOyBDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pOyBDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKSIsCiAgY29ycHNvdXJjZSA9ICAgIkhvbmV5d2VsbCBJbmZvcm1hdGlvbiBTeXN0ZW1zIEluYy4sIFdhbHRoYW0sIE1BLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJhY2Nlc3M7IGFkZHJlc3Npbmc7IGRhdGEgaGFuZGxpbmc7IGRhdGFiYXNlOyBmaWxlIG9yZ2FuaXNhdGlvbjsgbmV0d29yayBoaWVyYXJjaGljYWwgZGF0YSBtb2RlbCBDQUNNOyBwcm9ncmFtbWVyOyBwcm9ncmFtbWluZyIsCiAgdHJlYXRtZW50ID0gICAgIkcgR2VuZXJhbCBSZXZpZXciLAp9CgpAQXJ0aWNsZXtGYWJyeToxOTczOkRWTywKICBhdXRob3IgPSAgICAgICAiUi4gUy4gRmFicnkiLAogIHRpdGxlID0gICAgICAgICJEeW5hbWljIFZlcmlmaWNhdGlvbiBvZiBPcGVyYXRpbmcgU3lzdGVtIERlY2lzaW9ucyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNiIsCiAgbnVtYmVyID0gICAgICAgIjExIiwKICBwYWdlcyA9ICAgICAgICAiNjU5LS02NjgiLAogIG1vbnRoID0gICAgICAgIG5vdiwKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJEeW5hbWljIHZlcmlmaWNhdGlvbiBvZiBhIGRlY2lzaW9uIGltcGxpZXMgdGhhdCBldmVyeSB0aW1lIHRoZSBkZWNpc2lvbiBpcyBtYWRlIHRoZXJlIGlzIGEgY29uc2lzdGVuY3kgY2hlY2sgcGVyZm9ybWVkIG9uIHRoZSBkZWNpc2lvbiB1c2luZyBpbmRlcGVuZGVudCBoYXJkd2FyZSBhbmQgc29mdHdhcmUuIFRoZSBkeW5hbWljIHZlcmlmaWNhdGlvbiBvZiBvcGVyYXRpbmcgc3lzdGVtIGRlY2lzaW9ucyBpcyB1c2VkIG9uIHRoZSBQUklNRSBzeXN0ZW0gYmVpbmcgZGVzaWduZWQgYW5kIGNvbnN0cnVjdGVkIGF0IHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEsIEJlcmtlbGV5LiBQUklNRSBpcyBhbiBleHBlcmltZW50YWwgdGltZS1zaGFyaW5nIHN5c3RlbSB3aGljaCBpcyB0byBoYXZlIHRoZSBwcm9wZXJ0aWVzIG9mIGNvbnRpbnVvdXMgYXZhaWxhYmlsaXR5LCBkYXRhIHByaXZhY3ksIGFuZCBjb3N0IGVmZmVjdGl2ZW5lc3MuIFRoZSB0ZWNobmlxdWUgb2YgZHluYW1pYyB2ZXJpZmljYXRpb24gYWxsb3dzIHRoZSBjb25zdHJ1Y3Rpb24gb2YgYW4gb3BlcmF0aW5nIHN5c3RlbSB3aGljaCBkb2VzIG5vdCBtYWtlIGNlcnRhaW4gZGVjaXNpb25zIGltcHJvcGVybHkgZXZlbiBpbiB0aGUgcHJlc2VuY2Ugb2YgYSBzaW5nbGUgaGFyZHdhcmUgb3Igc29mdHdhcmUgZmF1bHQuIEZ1cnRoZXJtb3JlLCBtdWx0aXBsZSBmYXVsdHMgbGVhZCB0byB1bnJlbGlhYmxlIG9wZXJhdGlvbiBvbmx5IGlmIHRoZSBmYXVsdHMgaGFwcGVuIHRvIHJlaW5mb3JjZSBlYWNoIG90aGVyLiBPbiBQUklNRSwgZHluYW1pYyB2ZXJpZmljYXRpb24gaXMgdXNlZCB0byBlbnN1cmUgdGhhdCBvbmUgdXNlcidzIGluZm9ybWF0aW9uIGNhbm5vdCBiZWNvbWUgYXZhaWxhYmxlIHRvIGFub3RoZXIgdXNlciBncmF0dWl0b3VzbHkgZXZlbiBpbiB0aGUgcHJlc2VuY2Ugb2YgYSBzaW5nbGUgaGFyZHdhcmUgb3Igc29mdHdhcmUgZmF1bHQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxNTBHIChEaWFnbm9zdGljLCB0ZXN0aW5nLCBkZWJ1Z2dpbmcgYW5kIGV2YWx1YXRpbmcgc3lzdGVtcyk7IEM2MTUwSiAoT3BlcmF0aW5nIHN5c3RlbXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjI7IDcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIENhbGlmb3JuaWEsIEJlcmtlbGV5LCBDQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIG9wZXJhdGluZyBzeXN0ZW1zOyBjb21wdXRlciBzeXN0ZW1zOyBjb21wdXRlciBzeXN0ZW1zLCBkaWdpdGFsOyBkYXRhIHByaXZhY3k7IGRhdGEgc2VjdXJpdHk7IGR5bmFtaWMgdmVyaWZpY2F0aW9uOyBmYXVsdCB0b2xlcmFuY2U7IG1vZHVsYXI7IG9wZXJhdGluZyBzeXN0ZW1zOyBvcGVyYXRpbmcgc3lzdGVtcyAoY29tcHV0ZXJzKTsgcHJvZ3JhbSB2ZXJpZmljYXRpb247IHJlbGlhYmlsaXR5OyBzZWN1cml0eSBvZiBkYXRhOyBzb2Z0d2FyZSIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsOyBYIEV4cGVyaW1lbnRhbCIsCn0KCkBBcnRpY2xle01pY2t1bmFzOjE5NzM6UFNDLAogIGF1dGhvciA9ICAgICAgICJNLiBELiBNaWNrdW5hcyBhbmQgVi4gQi4gU2NobmVpZGVyIiwKICB0aXRsZSA9ICAgICAgICAiUGFyc2VyLUdlbmVyYXRpbmcgU3lzdGVtIGZvciBDb25zdHJ1Y3RpbmcgQ29tcHJlc3NlZCBDb21waWxlcnMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICIxMSIsCiAgcGFnZXMgPSAgICAgICAgIjY2OS0tNjc2IiwKICBtb250aCA9ICAgICAgICBub3YsCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiVGhpcyBwYXBlciBkZXNjcmliZXMgYSBwYXJzZXItZ2VuZXJhdGluZyBzeXN0ZW0gKFBHUykgY3VycmVudGx5IGluIHVzZSBvbiB0aGUgQ0RDLTY1MDAgY29tcHV0ZXIgYXQgUHVyZHVlIFVuaXZlcnNpdHkuIFRoZSBQR1MgaXMgYSBGT1JUUkFOLWNvZGVkIHByb2dyYW0gdGhhdCBhY2NlcHRzIGEgdHJhbnNsYXRpb24gZ3JhbW1hciBhcyBpbnB1dCBhbmQgY29uc3RydWN0cyBmcm9tIGl0IGEgY29tcGFjdCwgbWFjaGluZS1jb2RlZCBjb21waWxlci4gSW4gdGhlIGlucHV0IHRyYW5zbGF0aW9uIGdyYW1tYXIsIGVhY2ggQk5GIHN5bnRhY3RpYyBydWxlIGNvcnJlc3BvbmRzIHRvIGEgKHBvc3NpYmx5IGVtcHR5KSBgYGNvZGUgZ2VuZXJhdG9yJycgcmVhbGl6YWJsZSBhcyBhbiBhc3NlbWJseSBsYW5ndWFnZSwgRk9SVFJBTiBvciBBbGdvbCwgc3Vicm91dGluZSB0aGF0IGlzIGNhbGxlZCB3aGVuZXZlciB0aGF0IHN5bnRhY3RpYyBydWxlIGlzIGFwcGxpZWQgaW4gdGhlIHBhcnNlIG9mIGEgcHJvZ3JhbS4gVHlwaWNhbCBvbmUtcGFzcyBjb21waWxlcnMgY29uc3RydWN0ZWQgYnkgdGhlIFBHUyB0cmFuc2xhdGUgc291cmNlIHByb2dyYW1zIGF0IHNwZWVkcyBhcHByb2FjaGluZyAxNCwwMDAgY2FyZHMgcGVyIG1pbnV0ZS4gRm9yIGFuIFhQTCBjb21waWxlciwgdGhlIHBhcnNlciBwcm9ncmFtIGFuZCBpdHMgdGFibGVzIGN1cnJlbnRseSBvY2N1cHkgMjg4IHdvcmRzIG9mIDYwLWJpdCBjb3JlIG1lbW9yeSBvZiB3aGljaCAxNDAgd29yZHMgYXJlIHBhcnNpbmcgdGFibGUgZW50cmllcyBhbmQgODIgd29yZHMgYXJlIGxpbmtzIHRvIGNvZGUgZ2VuZXJhdG9ycy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDIxMCAoRm9ybWFsIGxvZ2ljKTsgQzQyMjAgKEF1dG9tYXRhIHRoZW9yeSk7IEM2MTUwQyAoQ29tcGlsZXJzLCBpbnRlcnByZXRlcnMgYW5kIG90aGVyIHByb2Nlc3NvcnMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJQdXJkdWUgVW5pdi4sIExhZmF5ZXR0ZSwgSU4sIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJCTkY7IGNvbXByZXNzaW9uIGFsZ29yaXRobTsgY29tcHV0ZXIgb3BlcmF0aW5nIHN5c3RlbXMgLS0tIFByb2dyYW0gQ29tcGlsZXJzOyBjb21wdXRlciBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IGRhdGEgY29tcHJlc3Npb247IGdyYW1tYXJzOyBpbnRlcnByZXRlcnM7IHBhcnNlciBnZW5lcmF0b3JzOyBwcm9ncmFtOyBwcm9ncmFtIGNvbXBpbGVyczsgcHVzaGRvd24gYXV0b21hdGE7IHN5bnRhY3RpYyBhbmFseXNpczsgdHJhbnNsYXRpb24gZ3JhbW1hcnM7IHRyYW5zbGF0b3Igd3JpdGluZyBzeXN0ZW1zIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtKb3JkYW46MTk3MzpTQ0EsCiAgYXV0aG9yID0gICAgICAgIkIuIFcuIHtKb3JkYW4sIEpyLn0gYW5kIFIuIEMuIEJhcnJldHQiLAogIHRpdGxlID0gICAgICAgICJTY2FuIENvbnZlcnNpb24gQWxnb3JpdGhtIHdpdGggUmVkdWNlZCBTdG9yYWdlIFJlcXVpcmVtZW50cyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNiIsCiAgbnVtYmVyID0gICAgICAgIjExIiwKICBwYWdlcyA9ICAgICAgICAiNjc2LS02ODIiLAogIG1vbnRoID0gICAgICAgIG5vdiwKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJUaGUgc2NhbiBjb252ZXJzaW9uIGFsZ29yaXRobSB0aGF0IGlzIGRlc2NyaWJlZCB1c2VzIGEgbGlua2VkIGxpc3QgZGF0YSBzdHJ1Y3R1cmUgdG8gcHJvY2VzcyB0aGUgbGluZXMgb2YgdGhlIGRyYXdpbmcgaW4gc3RyaXBzIGNvcnJlc3BvbmRpbmcgdG8gZ3JvdXBzIG9mIHNjYW4gbGluZXMuIEEgcmVsYXRpdmVseSBzbWFsbCBwcmltYXJ5IG1lbW9yeSBidWZmZXIgYXJlYSBpcyB1c2VkIHRvIGFjY3VtdWxhdGUgdGhlIGJpbmFyeSBpbWFnZSBmb3IgYSBncm91cCBvZiBzY2FuIGxpbmVzLiBXaGVuIHRoaXMgcG9ydGlvbiBvZiB0aGUgZHJhd2luZyBoYXMgYmVlbiBwbG90dGVkLCB0aGUgYnVmZmVyIGlzIHJldXNlZCBmb3IgdGhlIG5leHQgcG9ydGlvbi4gQmVjYXVzZSBvZiB0aGUgbGlzdCBwcm9jZXNzaW5nIHByb2NlZHVyZXMgdXNlZCwgb25seSBhIHNpbmdsZSBwYXNzIHRocm91Z2ggdGhlIFhZIGRpc3BsYXkgZmlsZSBpcyByZXF1aXJlZCB3aGVuIGdlbmVyYXRpbmcgdGhlIGJpbmFyeSBpbWFnZSBhbmQgb25seSBhIHNsaWdodCBpbmNyZWFzZSBpbiBleGVjdXRpb24gdGltZSBvdmVyIHRoZSBmdWxseSBidWZmZXJlZCBjb3JlIHJlc3VsdHMuIFJlc3VsdHMgc2hvdyB0aGF0IHN0b3JhZ2UgcmVxdWlyZW1lbnRzIGNhbiBiZSByZWR1Y2VkIGJ5IG1vcmUgdGhhbiA4MFwlIHdoaWxlIGNhdXNpbmcgbGVzcyB0aGFuIGEgMTBcJSBpbmNyZWFzZSBpbiBleGVjdXRpb24gdGltZS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNTU0MCAoVGVybWluYWxzIGFuZCBncmFwaGljIGRpc3BsYXlzKTsgQzYxMzAgKERhdGEgaGFuZGxpbmcgdGVjaG5pcXVlcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIk5vcnRod2VzdGVybiBVbml2LiwgRXZhbnN0b24sIElMLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgZ3JhcGhpY3M7IGRhdGEgaGFuZGxpbmc7IGRpc2NyZXRlIGltYWdlOyBkb3QgZ2VuZXJhdGlvbjsgbGluZSBkcmF3aW5nOyByYXN0ZXIgcGxvdHRlcjsgcmVkdWNlZCBzdG9yYWdlIHJlcXVpcmVtZW50czsgc2NhbiBjb252ZXJzaW9uOyBzY2FuIGNvbnZlcnNpb24gYWxnb3JpdGhtIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtTbGFnbGU6MTk3MzpFQVQsCiAgYXV0aG9yID0gICAgICAgIkphbWVzIFIuIFNsYWdsZSBhbmQgTGV3aXMgTS4gTm9ydG9uIiwKICB0aXRsZSA9ICAgICAgICAiRXhwZXJpbWVudHMgd2l0aCBhbiBBdXRvbWF0aWMgVGhlb3JlbS1Qcm92ZXIgSGF2aW5nIFBhcnRpYWwgT3JkZXJpbmcgSW5mZXJlbmNlIFJ1bGVzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiMTEiLAogIHBhZ2VzID0gICAgICAgICI2ODItLTY4OCIsCiAgbW9udGggPSAgICAgICAgbm92LAogIHllYXIgPSAgICAgICAgICIxOTczIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9BaS9ub25tb25vLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIlRoaXMgcGFwZXIgcHJlc2VudHMgYSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiB0aGUgcHJvZ3JhbSBhbmQgYSBjb21wcmVoZW5zaXZlIGFjY291bnQgb2YgdGhlIGV4cGVyaW1lbnRzIHRoYXQgaGF2ZSBiZWVuIHBlcmZvcm1lZCB3aXRoIGl0LiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMxMjMwIChBcnRpZmljaWFsIGludGVsbGlnZW5jZSkiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIk5hdC4gSW5zdC4gSGVhbHRoLCBCZXRoZXNkYSwgTUQsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBwcm9ncmFtbWluZzsgaGV1cmlzdGljczsgaW5mZXJlbmNlIHJ1bGVzOyBwYXJhbW9kdWxhdGlvbjsgcGFydGlhbCBvcmRlcmluZzsgcmVzb2x1dGlvbjsgdGhlb3JlbSBwcm92aW5nIiwKICB0cmVhdG1lbnQgPSAgICAiWCBFeHBlcmltZW50YWwiLAp9CgpAQXJ0aWNsZXtSZWluc2NoOjE5NzM6QUFFLAogIGF1dGhvciA9ICAgICAgICJDLiBILiBSZWluc2NoIiwKICB0aXRsZSA9ICAgICAgICAie0FDTX0gQWxnb3JpdGhtIDQ2NDogRWlnZW52YWx1ZXMgb2YgYSBSZWFsIFN5bW1ldHJpYyBUcmlkaWFnb25hbCBNYXRyaXgiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICIxMSIsCiAgcGFnZXMgPSAgICAgICAgIjY4OS0tNjg5IiwKICBtb250aCA9ICAgICAgICBub3YsCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjAyOTBIIChMaW5lYXIgYWxnZWJyYSk7IEM0MTQwIChMaW5lYXIgYWxnZWJyYSk7IEM3MzEwIChNYXRoZW1hdGljcyBjb21wdXRpbmcpIiwKICBjb3Jwc291cmNlID0gICAiVGVjaC4gVW5pdi4sIE17XCJ1fW5jaGVuLCBXZXN0IEdlcm1hbnkiLAogIGtleXdvcmRzID0gICAgICJBTEdPTDsgZWlnZW52YWx1ZXM7IGVpZ2VudmFsdWVzIGFuZCBlaWdlbmZ1bmN0aW9uczsgbWF0cml4OyBtYXRyaXggYWxnZWJyYTsgUVI7IHJlYWw7IHN1YnJvdXRpbmVzOyBzeW1tZXRyaWM7IHRyYW5zZm9ybWF0aW9uOyB0cmlkaWFnb25hbCIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7SGlsbDoxOTczOkFBUywKICBhdXRob3IgPSAgICAgICAiRy4gVy4gSGlsbCIsCiAgdGl0bGUgPSAgICAgICAgIntBQ019IEFsZ29yaXRobSA0NjU6IHtTdHVkZW50fSdzICR0JCBGcmVxdWVuY3kiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICIxMSIsCiAgcGFnZXMgPSAgICAgICAgIjY5MC0tNjkwIiwKICBtb250aCA9ICAgICAgICBub3YsCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzczMTAgKE1hdGhlbWF0aWNzIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJDU0lSTywgR2xlbiBPc21vbmQsIFNBLCBBdXN0cmFsaWEiLAogIGtleXdvcmRzID0gICAgICJBTEdPTDsgYXBwcm94aW1hdGlvbjsgZGVuc2l0eSBmdW5jdGlvbjsgc2VyaWVzOyBzdGF0aXN0aWNzOyBzdHVkZW50J3MgdCBzdGF0aXN0aWM7IHN1YnJvdXRpbmU7IHN1YnJvdXRpbmVzIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtFaHJsaWNoOjE5NzM6QUFGLAogIGF1dGhvciA9ICAgICAgICJHLiBFaHJsaWNoIiwKICB0aXRsZSA9ICAgICAgICAie0FDTX0gQWxnb3JpdGhtIDQ2NjogRm91ciBDb21iaW5hdG9yaWFsIEFsZ29yaXRobXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICIxMSIsCiAgcGFnZXMgPSAgICAgICAgIjY5MC0tNjkxIiwKICBtb250aCA9ICAgICAgICBub3YsCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzczMTAgKE1hdGhlbWF0aWNzIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJXZWl6bWFubiBJbnN0LiBTY2kuLCBSZWhvdm90LCBJc3JhZWwiLAogIGtleXdvcmRzID0gICAgICJjb21iaW5hdGlvbnM7IGNvbWJpbmF0b3JpYWwgYWxnb3JpdGhtczsgcGVybXV0YXRpb25zOyBQTC8xOyBzdGF0aXN0aWNzOyBzdWJyb3V0aW5lcyIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7QnJlbm5lcjoxOTczOkFBTSwKICBhdXRob3IgPSAgICAgICAiTi4gQnJlbm5lciIsCiAgdGl0bGUgPSAgICAgICAgIntBQ019IEFsZ29yaXRobSA0Njc6IE1hdHJpeCBUcmFuc3Bvc2l0aW9uIGluIFBsYWNlIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiMTEiLAogIHBhZ2VzID0gICAgICAgICI2OTItLTY5NCIsCiAgbW9udGggPSAgICAgICAgbm92LAogIHllYXIgPSAgICAgICAgICIxOTczIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgbm90ZSA9ICAgICAgICAgIlNlZSBhbHNvIFxjaXRle0xlYXRoZXJzOjE5Nzk6UkFTfS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJCMDI5MEggKExpbmVhciBhbGdlYnJhKTsgQzQxNDAgKExpbmVhciBhbGdlYnJhKTsgQzczMTAgKE1hdGhlbWF0aWNzIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJNSVQsIENhbWJyaWRnZSwgTUEsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImluIHBsYWNlOyBtYXRyaXggYWxnZWJyYTsgbWF0cml4IG9wZXJhdGlvbnM7IG51bWJlciB0aGVvcnk7IHBlcm11dGF0aW9uczsgcHJpbWl0aXZlOyByZWN0YW5ndWxhciBtYXRyaXg7IHJvb3RzOyBzdWJyb3V0aW5lczsgdHJhbnNwb3NpdGlvbiIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7UGF0dGVyc29uOjE5NzM6QUFBLAogIGF1dGhvciA9ICAgICAgICJULiBOLiBMLiBQYXR0ZXJzb24iLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gNDY4OiBBbGdvcml0aG0gZm9yIEF1dG9tYXRpYyBOdW1lcmljYWwgSW50ZWdyYXRpb24gT3ZlciBhIEZpbml0ZSBJbnRlcnZhbCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNiIsCiAgbnVtYmVyID0gICAgICAgIjExIiwKICBwYWdlcyA9ICAgICAgICAiNjk0LS02OTkiLAogIG1vbnRoID0gICAgICAgIG5vdiwKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJCMDI5ME0gKE51bWVyaWNhbCBpbnRlZ3JhdGlvbiBhbmQgZGlmZmVyZW50aWF0aW9uKTsgQzQxNjAgKE51bWVyaWNhbCBpbnRlZ3JhdGlvbiBhbmQgZGlmZmVyZW50aWF0aW9uKTsgQzczMTAgKE1hdGhlbWF0aWNzIGNvbXB1dGluZykiLAogIGtleXdvcmRzID0gICAgICJmaW5pdGUgaW50ZXJ2YWw7IEZPUlRSQU4gYWxnb3JpdGhtOyBpbnRlZ3JhdGlvbjsgbnVtZXJpY2FsOyBudW1lcmljYWwgaW50ZWdyYXRpb247IG51bWVyaWNhbCBtZXRob2RzOyBxdWFkcmF0dXJlOyBzdWJyb3V0aW5lcyIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7TGFtOjE5NzM6QUFBLAogIGF1dGhvciA9ICAgICAgICJDLiBMYW0gYW5kIEouIE1jS2F5IiwKICB0aXRsZSA9ICAgICAgICAie0FDTX0gQWxnb3JpdGhtIDQ2OTogQXJpdGhtZXRpYyBPdmVyIGEgRmluaXRlIEZpZWxkIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiMTEiLAogIHBhZ2VzID0gICAgICAgICI2OTktLTY5OSIsCiAgbW9udGggPSAgICAgICAgbm92LAogIHllYXIgPSAgICAgICAgICIxOTczIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkIwMjkwSCAoTGluZWFyIGFsZ2VicmEpOyBDNDE0MCAoTGluZWFyIGFsZ2VicmEpOyBDNTIzMCAoRGlnaXRhbCBhcml0aG1ldGljIG1ldGhvZHMpOyBDNzMxMCAoTWF0aGVtYXRpY3MgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIkNhbHRlY2ggVW5pdi4sIFBhc2FkZW5hLCBDQSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiYWxnZWJyYTsgQUxHT0w7IGFyaXRobWV0aWM7IGRpZ2l0YWwgYXJpdGhtZXRpYzsgZmluaXRlIGZpZWxkOyBsaW5lYXIgYWxnZWJyYTsgcmF0aW9uYWwgb3BlcmF0aW9uczsgc3Vicm91dGluZXMiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0Rlbm5pbmc6MTk3MzpOU08sCiAgYXV0aG9yID0gICAgICAgIlBldGVyIEouIERlbm5pbmcgYW5kIEcuIFNjb3R0IEdyYWhhbSIsCiAgdGl0bGUgPSAgICAgICAgIkEgTm90ZSBvbiBTdWJleHByZXNzaW9uIE9yZGVyaW5nIGluIHRoZSBFeGVjdXRpb24gb2YgQXJpdGhtZXRpYyBFeHByZXNzaW9ucyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNiIsCiAgbnVtYmVyID0gICAgICAgIjExIiwKICBwYWdlcyA9ICAgICAgICAiNzAwLS03MDIiLAogIG1vbnRoID0gICAgICAgIG5vdiwKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4QTIwIiwKICBNUm51bWJlciA9ICAgICAiNTAgMTE4NDQiLAogIG1ycmV2aWV3ZXIgPSAgICJCLiBTLiBCYWtlciIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIG5vdGUgPSAgICAgICAgICJFcnJhdHVtLCBpYmlkLiAxNywgMTk3NCwgNDU1LiIsCiAgYWJzdHJhY3QgPSAgICAgIkEgY291bnRlcmV4YW1wbGUgdG8gdGhlIHN1cHBvc2VkIG9wdGltYWxpdHkgb2YgYW4gYWxnb3JpdGhtIGZvciBnZW5lcmF0aW5nIHNjaGVkdWxlcyBmb3IgdHJlZXMgb2YgdGFza3Mgd2l0aCB1bmVxdWFsIGV4ZWN1dGlvbiB0aW1lcyBpcyBwcmVzZW50ZWQuIEEgY29tcGFyaXNvbiB3aXRoIHRoZSBgYGNyaXRpY2FsIHBhdGgnJyBoZXVyaXN0aWMgaXMgZGlzY3Vzc2VkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MjQwIChQcm9ncmFtbWluZyBhbmQgYWxnb3JpdGhtIHRoZW9yeSk7IEM1MjMwIChEaWdpdGFsIGFyaXRobWV0aWMgbWV0aG9kcyk7IEM2MTUwSiAoT3BlcmF0aW5nIHN5c3RlbXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJQdXJkdWUgVW5pdi4sIExhZmF5ZXR0ZSwgSU4sIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhcml0aG1ldGljIGV4cHJlc3Npb25zOyBjb21wdXRlciBvcGVyYXRpbmcgc3lzdGVtczsgZGlnaXRhbCBhcml0aG1ldGljOyBleGVjdXRpb247IG11bHRpcHJvY2Vzc2luZyBwcm9ncmFtczsgbXVsdGlwcm9jZXNzb3Igc2NoZWR1bGluZzsgb3JkZXJpbmc7IHNjaGVkdWxpbmc7IHN1YmV4cHJlc3Npb247IHRhc2s7IHRyZWUgc2NoZWR1bGluZyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7RmVsZG1hbjoxOTczOkNCUywKICBhdXRob3IgPSAgICAgICAiSmVyb21lIEEuIEZlbGRtYW4gYW5kIEphbWVzIFIuIExvdyBhbmQgUi4gUC4gQnJlbnQiLAogIHRpdGxlID0gICAgICAgICJDb21tZW50IG9uIHtCcmVudH0ncyBzY2F0dGVyIHN0b3JhZ2UgYWxnb3JpdGhtIChhbmQgYXV0aG9yJ3MgcmVwbHkpIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiMTEiLAogIHBhZ2VzID0gICAgICAgICI3MDMtLTcwMyIsCiAgbW9udGggPSAgICAgICAgbm92LAogIHllYXIgPSAgICAgICAgICIxOTczIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbikiLAogIGNvcnBzb3VyY2UgPSAgICJTdGFuZm9yZCBVbml2LiwgQ0EsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImR5bmFtaWMgY2hhaW5pbmc7IGZpbGUgb3JnYW5pc2F0aW9uOyBoYXNoaW5nOyBIYXNoaW5nOyBpbmZvcm1hdGlvbiBzdG9yYWdlIGFuZCByZXRyaWV2YWw7IHNjYXR0ZXIgc3RvcmFnZTsgc2NhdHRlciBzdG9yYWdlIGFsZ29yaXRobTsgc2VhcmNoaW5nOyBzdG9yYWdlIGFsbG9jYXRpb247IHN0b3JhZ2UgbWFuYWdlbWVudDsgc3ltYm9sIHRhYmxlIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtXZWduZXI6MTk3MzpUUCwKICBhdXRob3IgPSAgICAgICAiRS4gV2VnbmVyIiwKICB0aXRsZSA9ICAgICAgICAiVHJlZS1zdHJ1Y3R1cmVkIHByb2dyYW1zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiMTEiLAogIHBhZ2VzID0gICAgICAgICI3MDQtLTcwNSIsCiAgbW9udGggPSAgICAgICAgbm92LAogIHllYXIgPSAgICAgICAgICIxOTczIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MjkwIChPdGhlciBjb21wdXRlciB0aGVvcnkpOyBDNjExMCAoU3lzdGVtcyBhbmFseXNpcyBhbmQgcHJvZ3JhbW1pbmcpIiwKICBjb3Jwc291cmNlID0gICAiVGVjaC4gVW5pdi4sIEJlcmxpbiwgV2VzdCBHZXJtYW55IiwKICBrZXl3b3JkcyA9ICAgICAiY29tcGlsZXJzOyBjb250cm9sIHN0cnVjdHVyZXM7IGRhdGEgc3RydWN0dXJlczsgZml4cG9pbnRzOyBmbG93Y2hhcnRzOyBnb3RvIHN0YXRlbWVudHM7IGdyYXBoczsgaW5kdWN0aXZlIGFzc2VydGlvbjsgbGVhc3Q7IHByb2dyYW0gZG9jdW1lbnRhdGlvbjsgcHJvZ3JhbSBmbG93OyBwcm9ncmFtbWluZzsgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgZGVzaWduOyBwcm9vZiBvZiBwcm9ncmFtczsgc2VtYW50aWNzIG9mIHByb2dyYW1taW5nIGxhbmd1YWdlczsgc3RydWN0dXJlZCBwcm9ncmFtbWluZzsgdHJlZSBzdHJ1Y3R1cmUiLAogIHRyZWF0bWVudCA9ICAgICJHIEdlbmVyYWwgUmV2aWV3OyBQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle1NhbHplcjoxOTczOlJTQywKICBhdXRob3IgPSAgICAgICAiSGVyYmVydCBFLiBTYWx6ZXIiLAogIHRpdGxlID0gICAgICAgICJBIHJlY3VycmVuY2Ugc2NoZW1lIGZvciBjb252ZXJ0aW5nIGZyb20gb25lIG9ydGhvZ29uYWwgZXhwYW5zaW9uIGludG8gYW5vdGhlciIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNiIsCiAgbnVtYmVyID0gICAgICAgIjExIiwKICBwYWdlcyA9ICAgICAgICAiNzA1LS03MDciLAogIG1vbnRoID0gICAgICAgIG5vdiwKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY1RDA1ICg2NVEwNSkiLAogIE1SbnVtYmVyID0gICAgICI1MiAxNTk1NiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJCMDI5MEggKExpbmVhciBhbGdlYnJhKTsgQzQxNDAgKExpbmVhciBhbGdlYnJhKSIsCiAga2V5d29yZHMgPSAgICAgIkNoZWJ5c2hldjsgQ2xlbnNoYXcgcmVjdXJyZW5jZTsgSGFtbWluZyByZWN1cnJlbmNlOyBudW1lcmljYWwgbWV0aG9kczsgb3J0aG9nb25hbCBleHBhbnNpb25zOyBwb2x5bm9taWFsczsgcmVjdXJyZW5jZTsgc2NoZW1lczsgc2VyaWVzOyBzZXJpZXMgKG1hdGhlbWF0aWNzKTsgc2VyaWVzIGludGVyY29udmVyc2lvbiIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7U3RlbmdlcjoxOTczOkFBUywKICBhdXRob3IgPSAgICAgICAiRi4gU3RlbmdlciIsCiAgdGl0bGUgPSAgICAgICAgIkFuIGFsZ29yaXRobSBmb3IgdGhlIGFwcHJveGltYXRlIHNvbHV0aW9uIG9mIHtXaWVuZXItSG9wZn0gaW50ZWdyYWwgZXF1YXRpb25zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE2IiwKICBudW1iZXIgPSAgICAgICAiMTEiLAogIHBhZ2VzID0gICAgICAgICI3MDgtLTcxMCIsCiAgbW9udGggPSAgICAgICAgbm92LAogIHllYXIgPSAgICAgICAgICIxOTczIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkIwMjkwUiAoSW50ZWdyYWwgZXF1YXRpb25zKTsgQzQxODAgKEludGVncmFsIGVxdWF0aW9ucykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBVdGFoLCBTYWx0IExha2UgQ2l0eSwgVVQsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImFsZ29yaXRobTsgYXBwcm94aW1hdGUgc29sdXRpb247IGNvbnZvbHV0aW9uOyBIb3BmOyBpbnRlZ3JhbCBlcXVhdGlvbnM7IG51bWVyaWNhbCBtZXRob2RzOyBXaWVuZXIiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0VocmxpY2g6MTk3MzpTQkUsCiAgYXV0aG9yID0gICAgICAgIkwuIFcuIEVocmxpY2giLAogIHRpdGxlID0gICAgICAgICJTb2x2aW5nIHRoZSBCaWhhcm1vbmljIEVxdWF0aW9uIGluIGEgU3F1YXJlOiBhIERpcmVjdCBWZXJzdXMgYSBTZW1pZGlyZWN0IE1ldGhvZCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNiIsCiAgbnVtYmVyID0gICAgICAgIjExIiwKICBwYWdlcyA9ICAgICAgICAiNzExLS03MTQiLAogIG1vbnRoID0gICAgICAgIG5vdiwKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJUd28gbWV0aG9kcyBmb3Igc29sdmluZyB0aGUgYmloYXJtb25pYyBlcXVhdGlvbiBhcmUgY29tcGFyZWQuIE9uZSBtZXRob2QgaXMgZGlyZWN0LCB1c2luZyBlaWdlbnZhbHVlLWVpZ2VudmVjdG9yIGRlY29tcG9zaXRpb24uIFRoZSBvdGhlciBtZXRob2QgaXMgaXRlcmF0aXZlLCBzb2x2aW5nIGEgUG9pc3NvbiBlcXVhdGlvbiBkaXJlY3RseSBhdCBlYWNoIGl0ZXJhdGlvbi4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJCMDI5MFAgKERpZmZlcmVudGlhbCBlcXVhdGlvbnMpOyBDNDE3MCAoRGlmZmVyZW50aWFsIGVxdWF0aW9ucykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIkpvaG5zIEhvcGtpbnMgVW5pdi4sIEJhbHRpbW9yZSwgTUQsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJiaWhhcm1vbmljOyBiaWhhcm1vbmljIGVxdWF0aW9uOyBjb21wYXJlZDsgY29tcHV0ZXIgc3lzdGVtcyBwcm9ncmFtbWluZzsgZGVjb21wb3NpdGlvbjsgZGlmZmVyZW5jZTsgZGlmZmVyZW5jZSBlcXVhdGlvbnM7IGVpZ2VudmFsdWVzIGFuZCBlaWdlbmZ1bmN0aW9uczsgZWlnZW52ZWN0b3I7IGVxdWF0aW9uczsgaXRlcmF0aXZlOyBpdGVyYXRpdmUgbWV0aG9kczsgbnVtZXJpY2FsIG1ldGhvZHM7IHBhcnRpYWwgZGlmZmVyZW50aWFsOyBQb2lzc29uIGVxdWF0aW9uOyBzcXVhcmUiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0NvdWdlcjoxOTczOkNSVSwKICBhdXRob3IgPSAgICAgICAiSi4gRGFuaWVsIENvdWdlciIsCiAgdGl0bGUgPSAgICAgICAgIkN1cnJpY3VsdW0gUmVjb21tZW5kYXRpb25zIGZvciBVbmRlcmdyYWR1YXRlIFByb2dyYW1zIGluIEluZm9ybWF0aW9uIFN5c3RlbXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICIxMiIsCiAgcGFnZXMgPSAgICAgICAgIjcyNy0tNzQ5IiwKICBtb250aCA9ICAgICAgICBkZWMsCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhYnN0cmFjdCA9ICAgICAiVGhlIG5lZWQgZm9yIGVkdWNhdGlvbiByZWxhdGVkIHRvIGluZm9ybWF0aW9uIHN5c3RlbXMgaW4gb3JnYW5pemF0aW9ucyBpcyBkaXNjdXNzZWQsIGFuZCBhIGN1cnJpY3VsdW0gaXMgcHJvcG9zZWQgZm9yIGFuIHVuZGVyZ3JhZHVhdGUgcHJvZ3JhbS4gTWF0ZXJpYWwgbmVjZXNzYXJ5IGZvciBzdWNoIHByb2dyYW1zIGlzIGlkZW50aWZpZWQsIGFuZCBjb3Vyc2VzIGluY29ycG9yYXRpbmcgaXQgYXJlIHNwZWNpZmllZC5EZXRhaWxlZCBjb3Vyc2UgZGVzY3JpcHRpb25zIGFyZSBwcmVzZW50ZWQuIFByb2dyYW0gb3JnYW5pemF0aW9uIGFuZCBhIHByb2JsZW1zIG9mIGltcGxlbWVudGF0aW9uIGFyZSBkaXNjdXNzZWQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzAyMjAgKENvbXB1dGluZyBlZHVjYXRpb24gYW5kIHRyYWluaW5nKTsgQzAzMTAgKEVEUCBtYW5hZ2VtZW50KTsgQzYxMTAgKFN5c3RlbXMgYW5hbHlzaXMgYW5kIHByb2dyYW1taW5nKTsgQzcxMDAgKEJ1c2luZXNzIGFuZCBhZG1pbmlzdHJhdGlvbikiLAogIGtleXdvcmRzID0gICAgICJjdXJyaWN1bHVtOyBlZHVjYXRpb247IGluZm9ybWF0aW9uIGFuYWx5c2lzOyBpbmZvcm1hdGlvbiBzeXN0ZW1zOyBtYW5hZ2VtZW50IGluZm9ybWF0aW9uIHN5c3RlbXM7IG1hbmFnZW1lbnQgc3lzdGVtczsgcmVjb21tZW5kYXRpb25zOyBzeXN0ZW0gZGVzaWduOyBzeXN0ZW1zIGFuYWx5c2lzOyB1bmRlcmdyYWR1YXRlOyB1bmRlcmdyYWR1YXRlIGN1cnJpY3VsYSIsCiAgdHJlYXRtZW50ID0gICAgIkIgQmlibGlvZ3JhcGh5OyBQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle1NpYmxleToxOTczOkRETSwKICBhdXRob3IgPSAgICAgICAiRWRnYXIgSC4gU2libGV5IGFuZCBSb2JlcnQgVy4gVGF5bG9yIiwKICB0aXRsZSA9ICAgICAgICAiQSBEYXRhIERlZmluaXRpb24gYW5kIE1hcHBpbmcgTGFuZ3VhZ2UiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICIxMiIsCiAgcGFnZXMgPSAgICAgICAgIjc1MC0tNzU5IiwKICBtb250aCA9ICAgICAgICBkZWMsCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EYXRhYmFzZS9XaWVkZXJob2xkLmJpYiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgYW5ub3RlID0gICAgICAgIk92ZXJ2aWV3IG9mIGRhdGEgdHJhbnNsYXRpb24iLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gTWljaGlnYW4sIEFubiBBcmJvciwgTUksIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImRhdGEgYmFzZSBtYW5hZ2VtZW50OyBkYXRhIGRlZmluaXRpb24gbGFuZ3VhZ2U7IGRhdGEgc3RydWN0dXJlczsgZGF0YSB0cmFuc2xhdGlvbjsgZmlsZSBvcmdhbmlzYXRpb247IGZpbGUgdHJhbnNsYXRpb247IG1hcHBpbmcgbGFuZ3VhZ2U7IHN0b3JhZ2UgYWxsb2NhdGlvbjsgc3RvcmFnZSBzdHJ1Y3R1cmU7IHN5c3RlbXMiLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0t1YmljZWs6MTk3MzpBQUwsCiAgYXV0aG9yID0gICAgICAgIk0uIEt1YmljZWsiLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gNDcwOiBMaW5lYXIgU3lzdGVtcyB3aXRoIEFsbW9zdCBUcmlkaWFnb25hbCBNYXRyaXgiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICIxMiIsCiAgcGFnZXMgPSAgICAgICAgIjc2MC0tNzYxIiwKICBtb250aCA9ICAgICAgICBkZWMsCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjAyOTBIIChMaW5lYXIgYWxnZWJyYSk7IEM0MTQwIChMaW5lYXIgYWxnZWJyYSk7IEM3MzEwIChNYXRoZW1hdGljcyBjb21wdXRpbmcpIiwKICBjb3Jwc291cmNlID0gICAiVGVjaC4gVW5pdi4sIFByYWhhLCBDemVjaG9zbG92YWtpYSIsCiAga2V5d29yZHMgPSAgICAgImFsbW9zdCB0cmlkaWFnb25hbCBtYXRyaXg7IEZBS1VCOyBGT1JUUkFOOyBsaW5lYXIgc3lzdGVtczsgbWF0cml4IGFsZ2VicmE7IHByb2dyYW07IHNwYXJzZSBtYXRyaXg7IHN1YnJvdXRpbmVzIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtHYXV0c2NoaToxOTczOkFBRSwKICBhdXRob3IgPSAgICAgICAiVy4gR2F1dHNjaGkiLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gNDcxOiBFeHBvbmVudGlhbCBJbnRlZ3JhbHMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTYiLAogIG51bWJlciA9ICAgICAgICIxMiIsCiAgcGFnZXMgPSAgICAgICAgIjc2MS0tNzYzIiwKICBtb250aCA9ICAgICAgICBkZWMsCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjAyOTBNIChOdW1lcmljYWwgaW50ZWdyYXRpb24gYW5kIGRpZmZlcmVudGlhdGlvbik7IEM0MTYwIChOdW1lcmljYWwgaW50ZWdyYXRpb24gYW5kIGRpZmZlcmVudGlhdGlvbik7IEM3MzEwIChNYXRoZW1hdGljcyBjb21wdXRpbmcpIiwKICBjb3Jwc291cmNlID0gICAiUHVyZHVlIFVuaXYuLCBMYWZheWV0dGUsIElOLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJBTEdPTDsgY29tcHV0YXRpb247IGNvbnRpbnVlZCBmcmFjdGlvbnM7IGV4cG9uZW50aWFsIGludGVncmFsczsgaW50ZWdyYXRpb247IHJlY3VycmVuY2UgcmVsYXRpb25zOyByZWN1cnNpdmU7IHN1YnJvdXRpbmU7IHN1YnJvdXRpbmVzIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtIZXJyaW90OjE5NzM6QUFQLAogIGF1dGhvciA9ICAgICAgICJKLiBHLiBIZXJyaW90IGFuZCBDLiBILiBSZWluc2NoIiwKICB0aXRsZSA9ICAgICAgICAie0FDTX0gQWxnb3JpdGhtIDQ3MjogUHJvY2VkdXJlcyBmb3IgTmF0dXJhbCBTcGxpbmUgSW50ZXJwb2xhdGlvbiIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNiIsCiAgbnVtYmVyID0gICAgICAgIjEyIiwKICBwYWdlcyA9ICAgICAgICAiNzYzLS03NjgiLAogIG1vbnRoID0gICAgICAgIGRlYywKICB5ZWFyID0gICAgICAgICAiMTk3MyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJCMDI5MEYgKEludGVycG9sYXRpb24gYW5kIGZ1bmN0aW9uIGFwcHJveGltYXRpb24pOyBDNDEzMCAoSW50ZXJwb2xhdGlvbiBhbmQgZnVuY3Rpb24gYXBwcm94aW1hdGlvbik7IEM3MzEwIChNYXRoZW1hdGljcyBjb21wdXRpbmcpIiwKICBjb3Jwc291cmNlID0gICAiU3RhbmZvcmQgVW5pdi4sIENBLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJhcHByb3hpbWF0aW9uOyBjdWJpYyBuYXR1cmFsIHNwbGluZTsgaW50ZXJwb2xhdGlvbjsgbmF0dXJhbCBzcGxpbmUgaW50ZXJwb2xhdGlvbjsgcHJvY2VkdXJlczsgc3BsaW5lcyAobWF0aGVtYXRpY3MpOyBzdWJyb3V0aW5lcyIsCiAgdHJlYXRtZW50ID0gICAgIkEgQXBwbGljYXRpb247IFQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7THlvbjoxOTc0OlNMQSwKICBhdXRob3IgPSAgICAgICAiRy4gTHlvbiIsCiAgdGl0bGUgPSAgICAgICAgIlN5bnRheC1kaXJlY3RlZCBsZWFzdC1lcnJvcnMgYW5hbHlzaXMgZm9yIGNvbnRleHQtZnJlZSBsYW5ndWFnZXM6IGEgcHJhY3RpY2FsIGFwcHJvYWNoIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE3IiwKICBudW1iZXIgPSAgICAgICAiMSIsCiAgcGFnZXMgPSAgICAgICAgIjMtLTE0IiwKICBtb250aCA9ICAgICAgICBqYW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzQiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQyMTAgKEZvcm1hbCBsb2dpYykiLAogIGNvcnBzb3VyY2UgPSAgICJOYXQuIEJ1ci4gU3RhbmQuLCBXYXNoaW5ndG9uLCBEQywgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiYXJiaXRyYXJ5IGlucHV0IHN0cmluZ3M7IGNvbnRleHQgZnJlZSBncmFtbWFyczsgY29udGV4dC1mcmVlIGxhbmd1YWdlczsgZHluYW1pYyBwcm9ncmFtbWluZzsgZXJyb3IgYW5hbHlzaXM7IGxlYXN0IGVycm9ycyBjb3JyZWN0aW9uOyBtZXJnaW5nOyBwYXJzaW5nOyBzZXBhcmFiaWxpdHk7IHN0YXRlOyBzdG9yZWQgc3ViYW5hbHlzZXMiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle01hbGNvbG06MTk3NDpGTVMsCiAgYXV0aG9yID0gICAgICAgIk1pY2hhZWwgQS4gTWFsY29sbSBhbmQgSm9obiBQYWxtZXIiLAogIHRpdGxlID0gICAgICAgICJBIEZhc3QgTWV0aG9kIEZvciBTb2x2aW5nIGEgQ2xhc3Mgb2YgVHJpZGlhZ29uYWwgU3lzdGVtcyBvZiBMaW5lYXIgRXF1YXRpb25zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE3IiwKICBudW1iZXIgPSAgICAgICAiMSIsCiAgcGFnZXMgPSAgICAgICAgIjE0LS0xNyIsCiAgbW9udGggPSAgICAgICAgamFuLAogIHllYXIgPSAgICAgICAgICIxOTc0IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjVGMDUiLAogIE1SbnVtYmVyID0gICAgICI0OCAxMDA3NiIsCiAgbXJyZXZpZXdlciA9ICAgIkQuIEIuIEh1bnRlciIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L1RoZW9yeS9NYXRyaXguYmliIiwKICBhYnN0cmFjdCA9ICAgICAiVGhlIHNvbHV0aW9uIG9mIGxpbmVhciBzeXN0ZW1zIGhhdmluZyByZWFsLCBzeW1tZXRyaWMsIGRpYWdvbmFsbHkgZG9taW5hbnQsdHJpZGlhZ29uYWwgY29lZmZpY2llbnQgbWF0cmljZXMgd2l0aCBjb25zdGFudCBkaWFnb25hbHMgaXMgY29uc2lkZXJlZC4gSXQgaXMgcHJvdmVkIHRoYXQgdGhlIGRpYWdvbmFscyBvZiB0aGUgTFUgZGVjb21wb3NpdGlvbiBjb252ZXJnZXMgd2hlbiBmbG9hdGluZy1wb2ludCBwcmVjaXNpb24uIEl0IGlzIGFsc28gcHJvdmVkIHRoYXQgdGhlIGNvbXB1dGVkIExVIGRlY29tcG9zaXRpb24gY29udmVyZ2VzIHdoZW4gZmxvYXRpbmctcG9pbnQgYXJpdGhtZXRpYyBpcyB1c2VkIGFuZCB0aGF0IHRoZSBsaW1pdHMgb2YgdGhlIExVIGRpYWdvbmFscyB1c2luZyBmbG9hdGluZyBwb2ludCBhcmUgcm91Z2hseSB3aXRoaW4gbWFjaGluZSBwcmVjaXNpb24gb2YgdGhlIGxpbWl0cyB1c2luZyByZWFsIGFyaXRobWV0aWMuIFRoaXMgZmFjdCBpcyBleHBsb2l0ZWQgdG8gcmVkdWNlIHRoZSBudW1iZXIgb2YgZmxvYXRpbmctcG9pbnQgb3BlcmF0aW9ucyByZXF1aXJlZCB0byBzb2x2ZSBhIGxpbmVhciBzeXN0ZW0gZnJvbSAkOG4tNyQgdG8gJDVuKzJrLTMkLCB3aGVyZSAkayQgaXMgbXVjaCBsZXNzIHRoYW4gJG4kLCB0aGUgb3JkZXIgb2YgdGhlIG1hdHJpeC4gSWYgdGhlIGVsZW1lbnRzIG9mIHRoZSBzdWJkaWFnb25hbHMgYW5kIHN1cGVyZGlhZ29uYWxzIGFyZSAxLCB0aGVuIG9ubHkgJDRuKzJrLTMkIG9wZXJhdGlvbnMgYXJlIG5lZWRlZC4gVGhlIGVudGlyZSBMVSBkZWNvbXBvc2l0aW9uIHRha2VzICRrJCB3b3JkcyBvZiBzdG9yYWdlLCBhbmQgY29uc2lkZXJhYmxlIHNhdmluZ3MgaW4gYXJyYXkgc3Vic2NyaXB0aW5nIGFyZSBhY2hpZXZlZC4gVXBwZXIgYW5kIGxvd2VyIGJvdW5kcyBvbiAkayQgYXJlIG9idGFpbmVkIGluIHRlcm1zIG9mIHRoZSByYXRpbyBvZiB0aGUgY29lZmZpY2llbnQgbWF0cml4IGRpYWdvbmFsIGNvbnN0YW50cyBhbmQgcGFyYW1ldGVycyBvZiB0aGUgZmxvYXRpbmctcG9pbnQgbnVtYmVyIHN5c3RlbS4gVmFyaW91cyBnZW5lcmFsaXphdGlvbnMgb2YgdGhlc2UgcmVzdWx0cyBhcmUgZGlzY3Vzc2VkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkIwMjkwSCAoTGluZWFyIGFsZ2VicmEpOyBDNDE0MCAoTGluZWFyIGFsZ2VicmEpOyBDNTIzMCAoRGlnaXRhbCBhcml0aG1ldGljIG1ldGhvZHMpIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gV2F0ZXJsb28sIE9udC4sIENhbmFkYSIsCiAga2V5d29yZHMgPSAgICAgImRpZ2l0YWwgYXJpdGhtZXRpYzsgZmFzdCBtZXRob2Q7IGZsb2F0aW5nIHBvaW50OyBsaW5lYXIgc3lzdGVtczsgbWF0cml4IGFsZ2VicmE7IG51bWVyaWNhbCBsaW5lYXIgYWxnZWJyYTsgb3BlcmF0aW9uczsgcmVhbCBhcml0aG1ldGljOyBUb2VwbGl0eiBtYXRyaWNlczsgdHJpZGlhZ29uYWwgbWF0cmljZXMiLAogIGt3ZHMgPSAgICAgICAgICJubGEsIGxpbmVhciBzeXN0ZW0sIHRyaWRpYWdvbmFsIG1hdHJpeCwgZmFzdCBhbGdvcml0aG0iLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCiAgeHh0aXRsZSA9ICAgICAgIkEgZmFzdCBtZXRob2QgZm9yIHNvbHZpbmcgYSBjbGFzcyBvZiB0cmlkaWFnb25hbCBsaW5lYXIgc3lzdGVtcyIsCn0KCkBBcnRpY2xle0FraW1hOjE5NzQ6TUJJLAogIGF1dGhvciA9ICAgICAgICJILiBBa2ltYSIsCiAgdGl0bGUgPSAgICAgICAgIkEgbWV0aG9kIG9mIGJpdmFyaWF0ZSBpbnRlcnBvbGF0aW9uIGFuZCBzbW9vdGggc3VyZmFjZSBmaXR0aW5nIGJhc2VkIG9uIGxvY2FsIHByb2NlZHVyZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTciLAogIG51bWJlciA9ICAgICAgICIxIiwKICBwYWdlcyA9ICAgICAgICAiMTgtLTIwIiwKICBtb250aCA9ICAgICAgICBqYW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzQiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9HcmFwaGljcy9zaWdncmFwaC9wcmU3NS5iaWIiLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJCMDI5MEYgKEludGVycG9sYXRpb24gYW5kIGZ1bmN0aW9uIGFwcHJveGltYXRpb24pOyBDNDEzMCAoSW50ZXJwb2xhdGlvbiBhbmQgZnVuY3Rpb24gYXBwcm94aW1hdGlvbikiLAogIGNvcnBzb3VyY2UgPSAgICJVUyBEZXB0LiBDb21tZXJjZSwgQm91bGRlciwgQ29sby4sIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImJpdmFyaWF0ZSBpbnRlcnBvbGF0aW9uOyBpbnRlcnBvbGF0aW9uOyBsb2NhbDsgcGFydGlhbCBkZXJpdmF0aXZlOyBwb2x5bm9taWFsOyBwcm9jZWR1cmVzOyBzbW9vdGggc3VyZmFjZSBmaXR0aW5nIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtHaWJiczoxOTc0OlRQLAogIGF1dGhvciA9ICAgICAgICJOb3JtYW4gRS4gR2liYnMgYW5kIFdpbGxpYW0gRy4ge1Bvb2xlLCBKci59IiwKICB0aXRsZSA9ICAgICAgICAiVHJpZGlhZ29uYWxpemF0aW9uIGJ5IFBlcm11dGF0aW9ucyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNyIsCiAgbnVtYmVyID0gICAgICAgIjEiLAogIHBhZ2VzID0gICAgICAgICIyMC0tMjQiLAogIG1vbnRoID0gICAgICAgIGphbiwKICB5ZWFyID0gICAgICAgICAiMTk3NCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY1RjE1IiwKICBNUm51bWJlciA9ICAgICAiNDggNzU2NyIsCiAgbXJyZXZpZXdlciA9ICAgIkouIEh1cnQiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9UaGVvcnkvTWF0cml4LmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIlRyaWRpYWdvbmFsaXppbmcgYSBtYXRyaXggYnkgc2ltaWxhcml0eSB0cmFuc2Zvcm1hdGlvbnMgaXMgYW4gaW1wb3J0YW50IGNvbXB1dGF0aW9uYWwgdG9vbCBpbiBudW1lcmljYWwgbGluZWFyIGFsZ2VicmEuIENvbnNpZGVyIHRoZSBjbGFzcyBvZiBzcGFyc2UgbWF0cmljZXMgd2hpY2ggY2FuIGJlIHRyaWRpYWdvbmFsaXplZCB1c2luZyBvbmx5IHJvdyBhbmQgY29ycmVzcG9uZGluZyBjb2x1bW4gcGVybXV0YXRpb25zLiBUaGUgYWR2YW50YWdlcyBvZiB1c2luZyBzdWNoIGEgdHJhbnNmb3JtYXRpb24gaW5jbHVkZSB0aGUgYWJzZW5jZSBvZiByb3VuZC1vZmYgZXJyb3JzIGFuZCBpbXByb3ZlZCBjb21wdXRhdGlvbiB0aW1lIHdoZW4gY29tcGFyZWQgd2l0aCBzdGFuZGFyZCB0cmFuc2Zvcm1hdGlvbnMuIFxwYXIgQSBncmFwaCB0aGVvcmV0aWMgYWxnb3JpdGhtIHdoaWNoIGV4YW1pbmVzIGFuIGFyYml0cmFyeSAkbiBcdGltZXMgbiQgbWF0cml4IGFuZCBkZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IGl0IGNhbiBiZSBwZXJtdXRlZCBpbnRvIHRyaWRpYWdvbmFsIGZvcm0gaXMgZ2l2ZW4uIFRoZSBhbGdvcml0aG0gcmVxdWlyZXMgbm8gYXJpdGhtZXRpYyB3aGlsZSB0aGUgbnVtYmVyIG9mIGNvbXBhcmlzb25zLCB0aGUgbnVtYmVyIG9mIGFzc2lnbm1lbnRzLCBhbmQgdGhlIG51bWJlciBvZiBpbmNyZW1lbnRzIGFyZSBsaW5lYXIgaW4gJG4kLiBUaGlzIGNvbXBhcmVzIHZlcnkgZmF2b3JhYmx5IHdpdGggc3RhbmRhcmQgdHJhbnNmb3JtYXRpb24gbWV0aG9kcy4gXHBhciBJZiB0aGUgbWF0cml4IGlzIHBlcm11dGFibGUgaW50byB0cmlkaWFnb25hbCBmb3JtLCB0aGUgYWxnb3JpdGhtIGdpdmVzIHRoZSBleHBsaWNpdCB0cmlkaWFnb25hbCBmb3JtLiBPdGhlcndpc2UsIGVhcmx5IHJlamVjdGlvbiB3aWxsIG9jY3VyLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkIwMjkwSCAoTGluZWFyIGFsZ2VicmEpOyBDNDE0MCAoTGluZWFyIGFsZ2VicmEpIiwKICBjb3Jwc291cmNlID0gICAiQ29sbGVnZSBXaWxsaWFtIGFuZCBNYXJ5LCBXaWxsaWFtc2J1cmcsIFZBLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJhbGdvcml0aG07IGJhbmR3aWR0aDsgZWlnZW52YWx1ZXM7IGdyYXBoOyBtYXRyaXggYWxnZWJyYTsgcGVybXV0YXRpb247IHNwYXJzZSBtYXRyaXg7IHRyaWRpYWdvbmFsIG1hdHJpeCIsCiAga3dkcyA9ICAgICAgICAgIm5sYSwgdHJpZGlhZ29uYWwgbWF0cml4LCBwZXJtdXRhdGlvbiBtYXRyaXgiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle1BpZXNzZW5zOjE5NzQ6QUFDLAogIGF1dGhvciA9ICAgICAgICJSLiBQaWVzc2VucyIsCiAgdGl0bGUgPSAgICAgICAgIntBQ019IEFsZ29yaXRobSA0NzM6IENvbXB1dGF0aW9uIG9mIHtMZWdlbmRyZX0gU2VyaWVzIENvZWZmaWNpZW50cyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNyIsCiAgbnVtYmVyID0gICAgICAgIjEiLAogIHBhZ2VzID0gICAgICAgICIyNS0tMjUiLAogIG1vbnRoID0gICAgICAgIGphbiwKICB5ZWFyID0gICAgICAgICAiMTk3NCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJCMDI5MEYgKEludGVycG9sYXRpb24gYW5kIGZ1bmN0aW9uIGFwcHJveGltYXRpb24pOyBDNDEzMCAoSW50ZXJwb2xhdGlvbiBhbmQgZnVuY3Rpb24gYXBwcm94aW1hdGlvbik7IEM3MzEwIChNYXRoZW1hdGljcyBjb21wdXRpbmcpIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gTGV1dmVuLCBIZXZlcmxlZSwgQmVsZ2l1bSIsCiAga2V5d29yZHMgPSAgICAgIkNoZWJ5c2hldjsgQ2hlYnlzaGV2IGFwcHJveGltYXRpb247IGNvZWZmaWNpZW50czsgY29tcHV0YXRpb247IEZPUlRSQU47IExlZ2VuZHJlIHNlcmllczsgTEVHU0VSOyBzZXJpZXM7IHNlcmllcyAobWF0aGVtYXRpY3MpOyBzdWJyb3V0aW5lcyIsCiAgdHJlYXRtZW50ID0gICAgIkEgQXBwbGljYXRpb247IFQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7QWtpbWE6MTk3NDpBQUIsCiAgYXV0aG9yID0gICAgICAgIkguIEFraW1hIiwKICB0aXRsZSA9ICAgICAgICAie0FDTX0gQWxnb3JpdGhtIDQ3NDogQml2YXJpYXRlIEludGVycG9sYXRpb24gYW5kIFNtb290aCBTdXJmYWNlIEZpdHRpbmcgQmFzZWQgb24gTG9jYWwgUHJvY2VkdXJlcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNyIsCiAgbnVtYmVyID0gICAgICAgIjEiLAogIHBhZ2VzID0gICAgICAgICIyNi0tMzEiLAogIG1vbnRoID0gICAgICAgIGphbiwKICB5ZWFyID0gICAgICAgICAiMTk3NCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIG5vdGUgPSAgICAgICAgICJTZWUgYWxzbyBcY2l0ZXtBbmRlcnNvbjoxOTc5OlJCSX0uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjAyOTBGIChJbnRlcnBvbGF0aW9uIGFuZCBmdW5jdGlvbiBhcHByb3hpbWF0aW9uKTsgQzQxMzAgKEludGVycG9sYXRpb24gYW5kIGZ1bmN0aW9uIGFwcHJveGltYXRpb24pOyBDNzMxMCAoTWF0aGVtYXRpY3MgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVTIERlcHQgQ29tbWVyY2UsIEJvdWxkZXIsIENvbG8uLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJiaXZhcmlhdGUgaW50ZXJwb2xhdGlvbjsgRk9SVFJBTjsgaW50ZXJwb2xhdGlvbjsgSVRQTEJWOyBsb2NhbDsgcGFydGlhbCBkZXJpdmF0aXZlOyBwb2x5bm9taWFsOyBwcm9jZWR1cmVzOyBTRkNGSVQ7IHNtb290aCBzdXJmYWNlIGZpdHRpbmc7IHN1YnJvdXRpbmVzIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtTdXRoZXJsYW5kOjE5NzQ6UlBDLAogIGF1dGhvciA9ICAgICAgICJJdmFuIEUuIFN1dGhlcmxhbmQgYW5kIEdhcnkgVy4gSG9kZ21hbiIsCiAgdGl0bGUgPSAgICAgICAgIlJlZW50cmFudCBQb2x5Z29uIENsaXBwaW5nIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE3IiwKICBudW1iZXIgPSAgICAgICAiMSIsCiAgcGFnZXMgPSAgICAgICAgIjMyLS00MiIsCiAgbW9udGggPSAgICAgICAgamFuLAogIHllYXIgPSAgICAgICAgICIxOTc0IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM1NTQwIChUZXJtaW5hbHMgYW5kIGdyYXBoaWMgZGlzcGxheXMpOyBDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKSIsCiAgY29ycHNvdXJjZSA9ICAgIkV2YW5kIGFuZCBTdXRoZXJsYW5kIENvbXB1dGVyIENvcnAuLCBTYWx0IExha2UgQ2l0eSwgVVQsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImFsZ29yaXRobXM7IGNvbXB1dGVyOyBjb21wdXRlciBncmFwaGljczsgZGF0YSBoYW5kbGluZzsgZ3JhcGhpY3M7IGhpZGRlbiBsaW5lOyBwZXJzcGVjdGl2ZTsgcGVyc3BlY3RpdmUgcHJvamVjdGlvbjsgcGljdHVyZXM7IHBsYW5lczsgcG9seWdvbiBjbGlwcGluZzsgcmVlbnRyYW50IHBvbHlnb24gY2xpcHBpbmc7IHN1cmZhY2U7IHRocmVlIGRpbWVuc2lvbnMiLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0tpbmc6MTk3NDpDQVYsCiAgYXV0aG9yID0gICAgICAgIlAuIEouIEguIEtpbmcgYW5kIFIuIEcuIEpvaG5zb24iLAogIHRpdGxlID0gICAgICAgICJDb21tZW50cyBvbiB0aGUgYWxnb3JpdGhtcyBvZiB7VmVyaGVsc3R9IGZvciB0aGUgY29udmVyc2lvbiBvZiBsaW1pdGVkLWVudHJ5IGRlY2lzaW9uIHRhYmxlcyB0byBmbG93Y2hhcnRzIChhbmQgYXV0aG9yJ3MgcmVwbHkpIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE3IiwKICBudW1iZXIgPSAgICAgICAiMSIsCiAgcGFnZXMgPSAgICAgICAgIjQzLS00NSIsCiAgbW9udGggPSAgICAgICAgamFuLAogIHllYXIgPSAgICAgICAgICIxOTc0IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTEwIChTeXN0ZW1zIGFuYWx5c2lzIGFuZCBwcm9ncmFtbWluZykiLAogIGNvcnBzb3VyY2UgPSAgICJCaXJrYmVjayBDb2xsLiwgVW5pdi4gTG9uZG9uLCBVSyIsCiAga2V5d29yZHMgPSAgICAgImFsZ29yaXRobXM7IGNvbnZlcnNpb247IGRlY2lzaW9uIHRhYmxlOyBkZWNpc2lvbiB0YWJsZXM7IGZsb3cgY2hhcnRpbmc7IGZsb3djaGFydGluZzsgb3B0aW1hbCBwcm9ncmFtczsgcHJlcHJvY2Vzc29yOyBzZWFyY2giLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0tub3R0OjE5NzQ6TlNDLAogIGF1dGhvciA9ICAgICAgICJHYXJ5IEQuIEtub3R0IiwKICB0aXRsZSA9ICAgICAgICAiQSBOdW1iZXJpbmcgU3lzdGVtIGZvciBDb21iaW5hdGlvbnMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTciLAogIG51bWJlciA9ICAgICAgICIxIiwKICBwYWdlcyA9ICAgICAgICAiNDUtLTQ2IiwKICBtb250aCA9ICAgICAgICBqYW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzQiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMTAgKFN5c3RlbXMgYW5hbHlzaXMgYW5kIHByb2dyYW1taW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIk5hdC4gSW5zdC4gSGVhbHRoLCBCZXRoZXNkYSwgTUQsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImNvZGluZyBzeXN0ZW07IGNvZGluZyBzeXN0ZW1zOyBjb21iaW5hdGlvbnM7IGNvbWJpbmF0b3JpY3M7IG51bWJlcmluZyBzeXN0ZW07IHByb2dyYW1taW5nOyBwcm9ncmFtbWluZyB0ZWNobmlxdWVzOyBzdG9yYWdlIG1hcHBpbmcgZnVuY3Rpb247IHN0b3JhZ2UgbWFwcGluZyBmdW5jdGlvbnMiLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0x1Y2FzOjE5NzQ6Q1JHLAogIGF1dGhvciA9ICAgICAgICJILiBDLiB7THVjYXMsIEpyLn0iLAogIHRpdGxlID0gICAgICAgICJBIHtDUlR9IHJlcG9ydCBnZW5lcmF0aW5nIHN5c3RlbSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNyIsCiAgbnVtYmVyID0gICAgICAgIjEiLAogIHBhZ2VzID0gICAgICAgICI0Ny0tNDgiLAogIG1vbnRoID0gICAgICAgIGphbiwKICB5ZWFyID0gICAgICAgICAiMTk3NCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjExMCAoU3lzdGVtcyBhbmFseXNpcyBhbmQgcHJvZ3JhbW1pbmcpIiwKICBjb3Jwc291cmNlID0gICAiU3RhbmZvcmQgVW5pdi4sIENBLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJhdXRvbWF0ZWQgc3lzdGVtcyBkZXNpZ247IGRhdGE7IG1hbmFnZW1lbnQ7IHByb2Nlc3Npbmc7IHByb2dyYW1taW5nOyByZXBvcnQgZ2VuZXJhdGlvbjsgcmVwb3J0IGdlbmVyYXRvcnM7IHN5c3RlbXMgYW5hbHlzaXMiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle1JvdGhuaWU6MTk3NDpBQkYsCiAgYXV0aG9yID0gICAgICAgIkphbWVzIEIuIHtSb3RobmllLCBKci59IGFuZCBUb21hcyBMb3phbm8iLAogIHRpdGxlID0gICAgICAgICJBdHRyaWJ1dGUgQmFzZWQgRmlsZSBPcmdhbml6YXRpb24gaW4gYSBQYWdlZCBNZW1vcnkgRW52aXJvbm1lbnQiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTciLAogIG51bWJlciA9ICAgICAgICIyIiwKICBwYWdlcyA9ICAgICAgICAiNjMtLTY5IiwKICBtb250aCA9ICAgICAgICBmZWIsCiAgeWVhciA9ICAgICAgICAgIjE5NzQiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0RhdGFiYXNlL2RhdGFiYXNlLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIlRoaXMgYXJ0aWNsZSBhbmFseXplcyB0aGUgaGlnaCBjb3N0IG9mIHBhZ2UgYWNjZXNzaW5nIGFuZCBwcm9wb3NlcyBhIG1ldGhvZCBjYWxsZWQgbXVsdGlwbGUga2V5IGhhc2hpbmcgd2hpY2ggYXR0ZW1wdHMgdG8gbWluaW1pemUgaXQuIHNpbmNlIHRoaXMgYXBwcm9hY2ggaXMgbm90IGFsd2F5cyBwcmVmZXJhYmxlIHRvIGludmVyc2lvbiwgYSBjb21iaW5lZCBtZXRob2QgaXMgZGVzY3JpYmVkLiBUaGUgZXhhY3Qgc3BlY2lmaWNhdGlvbnMgb2YgdGhpcyBjb21iaW5hdGlvbiBmb3IgYSBmaWxlIHdpdGggZ2l2ZW4gZGF0YSBhbmQgdHJhZmZpYyBjaGFyYWN0ZXJpc3RpY3MgYXJlIGZvcm11bGF0ZWQgYXMgYSBtYXRoZW1hdGljYWwgcHJvZ3JhbS4gVGhlIHByb3Bvc2VkIGhldXJpc3RpYyBzb2x1dGlvbiB0byB0aGlzIHByb2dyYW0gY2FuIG9mdGVuIGltcHJvdmUgb24gYSBzaW1wbGUgaW52ZXJzaW9uIHRlY2huaXF1ZSBieSBhIGZhY3RvciBvZiAyIG9yIDMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiTUlULCBDYW1icmlkZ2UsIE1BLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYXR0cmlidXRlIGJhc2VkIGZpbGUgb3JnYW5pemF0aW9uOyBjb3N0OyBkYXRhIG9yZ2FuaXphdGlvbjsgZGF0YSBwcm9jZXNzaW5nOyBkYXRhIHN0b3JhZ2UsIGRpZ2l0YWw7IGZpbGUgb3JnYW5pc2F0aW9uOyBmaWxlIG9yZ2FuaXphdGlvbjsgaGV1cmlzdGljIHNvbHV0aW9uOyBpbnZlcnRlZCBmaWxlOyBtYXRoZW1hdGljYWw7IG1hdGhlbWF0aWNhbCBwcm9ncmFtbWluZzsgbXVsdGlrZXkgcmV0cmlldmFsOyBtdWx0aXBsZSBrZXkgaGFzaGluZzsgcGFnZSBhY2Nlc3Npbmc7IHBhZ2VkIG1lbW9yaWVzOyBwYWdlZCBtZW1vcnkgZW52aXJvbm1lbnQ7IHBhZ2luZzsgcHJvZ3JhbTsgcmV0cmlldmFsIGFsZ29yaXRobTsgdmlydHVhbCBzdG9yYWdlIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgRSBFY29ub21pYzsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtKb3JkYW46MTk3NDpDT1IsCiAgYXV0aG9yID0gICAgICAgIkIuIFcuIHtKb3JkYW4sIEpyLn0gYW5kIFIuIEMuIEJhcnJldHQiLAogIHRpdGxlID0gICAgICAgICJBIGNlbGwgb3JnYW5pemVkIHJhc3RlciBkaXNwbGF5IGZvciBsaW5lIGRyYXdpbmdzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE3IiwKICBudW1iZXIgPSAgICAgICAiMiIsCiAgcGFnZXMgPSAgICAgICAgIjcwLS03NyIsCiAgbW9udGggPSAgICAgICAgZmViLAogIHllYXIgPSAgICAgICAgICIxOTc0IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlJhc3RlciBzY2FuIGNvbXB1dGVyIGdyYXBoaWNzIGRpc3BsYXlzIHdpdGggYGByZWFsIHRpbWUnJyBjaGFyYWN0ZXIgZ2VuZXJhdG9ycyBoYXZlIHByZXZpb3VzbHkgYmVlbiBsaW1pdGVkIHRvIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzLiBBIGRpc3BsYXkgaXMgZGVzY3JpYmVkIHdoaWNoIGV4dGVuZHMgdGhlIGNhcGFiaWxpdGllcyBvZiB0aGlzIG9yZ2FuaXphdGlvbiB0byBpbmNsdWRlIGdlbmVyYWwgZ3JhcGhpY3MuIFRoZSBmZWFzaWJpbGl0eSBvZiBzdWNoIGEgZGlzcGxheSBpcyBzaG93biBieSBkZXJpdmluZyB0aGUgbWluaW11bSBudW1iZXIgb2YgcGF0dGVybnMgcmVxdWlyZWQgaW4gdGhlIHJlYWQgb25seSBtZW1vcnkgb2YgdGhlIGNoYXJhY3RlciBnZW5lcmF0b3IgdG8gc3ludGhlc2l6ZSBhbiBhcmJpdHJhcnkgbGluZS4gVGhlIHN5bnRoZXNpcyBwcm9jZXNzIGRvZXMgbm90IGNvbXByb21pc2UgcGljdHVyZSBxdWFsaXR5LCBzaW5jZSB0aGUgcmVzdWx0aW5nIGRvdCBwYXR0ZXJucyBhcmUgaWRlbnRpY2FsIHdpdGggdGhvc2Ugb2YgYSBjb252ZW50aW9uYWwgcmFzdGVyIGRpc3BsYXkuIFRoZSB0aW1lIGNvbnN0cmFpbnRzIG9mIGEgcmFzdGVyIGRpc3BsYXkgYXJlIHNob3duIHRvIGJlIHNhdGlzZmllZCBmb3IgYSB0eXBpY2FsIGRlc2lnbiBmb3IgdmVyeSBjb21wbGV4IGxpbmUgZHJhd2luZ3MuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzU1NDAgKFRlcm1pbmFscyBhbmQgZ3JhcGhpYyBkaXNwbGF5cyk7IEM2MTMwIChEYXRhIGhhbmRsaW5nIHRlY2huaXF1ZXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjIiLAogIGNvcnBzb3VyY2UgPSAgICJOb3J0aHdlc3Rlcm4gVW5pdi4sIEV2YW5zdG9uLCBJTCwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFyYml0cmFyeSBsaW5lOyBjZWxsIG9yZ2FuaXplZCByYXN0ZXIgZGlzcGxheTsgY29tcGxleCBsaW5lIGRyYXdpbmdzOyBjb21wdXRlcjsgY29tcHV0ZXIgZ3JhcGhpYyBlcXVpcG1lbnQ7IGNvbXB1dGVyIGdyYXBoaWNzOyBjb21wdXRlciBwZXJpcGhlcmFsIGVxdWlwbWVudDsgZGlzY3JldGU7IGRvdDsgZG90IGdlbmVyYXRpb247IGdyYXBoaWNzIGRpc3BsYXlzOyBpbWFnZTsgbGluZSBkcmF3aW5nOyBsaW5lIGRyYXdpbmdzOyBtYXRyaXggZGlzcGxheXM7IG1pbmltdW07IG51bWJlciBvZiBwYXR0ZXJuczsgcGF0dGVybnM7IHJlYWQgb25seSBtZW1vcnk7IHJlYWwgdGltZSBjaGFyYWN0ZXIgZ2VuZXJhdG9ycyIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7UmFtYmVyZzoxOTc0OkFNRywKICBhdXRob3IgPSAgICAgICAiSm9obiBTLiBSYW1iZXJnIGFuZCBCcnVjZSBXLiBTY2htZWlzZXIiLAogIHRpdGxlID0gICAgICAgICJBbiBBcHByb3hpbWF0ZSBNZXRob2QgZm9yIEdlbmVyYXRpbmcgQXN5bW1ldHJpYyBSYW5kb20gVmFyaWFibGVzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE3IiwKICBudW1iZXIgPSAgICAgICAiMiIsCiAgcGFnZXMgPSAgICAgICAgIjc4LS04MiIsCiAgbW9udGggPSAgICAgICAgZmViLAogIHllYXIgPSAgICAgICAgICIxOTc0IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjVDMTAiLAogIE1SbnVtYmVyID0gICAgICI0OCAxMDA0MyIsCiAgbXJyZXZpZXdlciA9ICAgIkouIFNwYW5pZXIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0Rpc3RyaWJ1dGVkL1FMRC8xOTc0LmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIlR1a2V5J3MgbGFtYmRhIGRpc3RyaWJ1dGlvbiBpcyBnZW5lcmFsaXplZCB0byBwcm92aWRlIGFuIGFsZ29yaXRobSBmb3IgZ2VuZXJhdGluZyB2YWx1ZXMgb2YgdW5pbW9kYWwgYXN5bW1ldHJpYyByYW5kb20gdmFyaWFibGVzLiBUaGlzIGFsZ29yaXRobSBoYXMgdGhlIHNhbWUgYWR2YW50YWdlcyBhcyB0aGUgc3ltbWV0cmljIHJhbmRvbSB2YXJpYWJsZSBnZW5lcmF0b3IgcHJldmlvdXNseSBnaXZlbiBieSB0aGUgYXV0aG9ycywgZXhjZXB0IHRoYXQgdGhlIGFkZGl0aW9uIG9mIGFub3RoZXIgcGFyYW1ldGVyIGNvbXBsaWNhdGVzIHRoZSBwcm9ibGVtIG9mIGZpbmRpbmcgdGhlIHBhcmFtZXRlciB2YWx1ZXMgdG8gZml0IGEgZGlzdHJpYnV0aW9uLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM3ODkwIChPdGhlciBzcGVjaWFsIGFwcGxpY2F0aW9ucyBvZiBjb21wdXRpbmcpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjM7IDkyMiIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIElvd2EsIElBLCBVU0EiLAogIGNvdW50cnkgPSAgICAgICJVU0EiLAogIGRlc2NyaXB0b3JzID0gICJSTkc7IFJWRzsiLAogIGVudW0gPSAgICAgICAgICIyNTA1IiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFwcHJveGltYXRlIG1ldGhvZDsgYXBwcm94aW1hdGlvbnM7IGNvbXB1dGVyIHByb2dyYW1taW5nIC0tLSBTdWJyb3V0aW5lczsgZGlzdHJpYnV0aW9uOyBnZW5lcmF0aW5nIGFzeW1tZXRyaWMgcmFuZG9tIHZhcmlhYmxlczsgbWF0aGVtYXRpY2FsIHN0YXRpc3RpY3M7IG1vbWVudHM7IE1vbnRlIENhcmxvOyBNb250ZSBDYXJsbyBtZXRob2RzOyBwcm9iYWJpbGl0eTsgcmFuZG9tIG51bWJlciBnZW5lcmF0aW9uOyByYW5kb20gbnVtYmVyczsgcmFuZG9tIHZhcmlhYmxlczsgc2ltdWxhdGlvbjsgc3RhdGlzdGljczsgVHVrZXkncyBsYW1iZGEgZGlzdHJpYnV0aW9uOyB1bmltb2RhbCBhc3ltbWV0cmljIHJhbmRvbTsgdmFyaWFibGVzIiwKICBsYW5ndWFnZSA9ICAgICAiRW5nbGlzaCIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7TGFtcG9ydDoxOTc0OlBFRCwKICBhdXRob3IgPSAgICAgICAiTGVzbGllIExhbXBvcnQiLAogIHRpdGxlID0gICAgICAgICJUaGUgUGFyYWxsZWwgRXhlY3V0aW9uIG9mIHtET30gTG9vcHMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTciLAogIG51bWJlciA9ICAgICAgICIyIiwKICBwYWdlcyA9ICAgICAgICAiODMtLTkzIiwKICBtb250aCA9ICAgICAgICBmZWIsCiAgeWVhciA9ICAgICAgICAgIjE5NzQiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiTWV0aG9kcyBhcmUgZGV2ZWxvcGVkIGZvciB0aGUgcGFyYWxsZWwgZXhlY3V0aW9uIG9mIGRpZmZlcmVudCBpdGVyYXRpb25zIG9mIGEgRE8gbG9vcC4gQm90aCBhc3luY2hyb25vdXMgbXVsdGlwcm9jZXNzb3IgY29tcHV0ZXJzIGFuZCBhcnJheSBjb21wdXRlcnMgYXJlIGNvbnNpZGVyZWQuIFByYWN0aWNhbCBhcHBsaWNhdGlvbiB0byB0aGUgZGVzaWduIG9mIGNvbXBpbGVycyBmb3Igc3VjaCBjb21wdXRlcnMgaXMgZGlzY3Vzc2VkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTEwIChTeXN0ZW1zIGFuYWx5c2lzIGFuZCBwcm9ncmFtbWluZyk7IEM2MTUwQyAoQ29tcGlsZXJzLCBpbnRlcnByZXRlcnMgYW5kIG90aGVyIHByb2Nlc3NvcnMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjI7IDcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIk1hc3NhY2h1c2V0dHMgQ29tcHV0ZXIgQXNzb2NpYXRlcyBJbmMuLCBXYWtlZmllbGQsIE1BLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYXJyYXkgY29tcHV0ZXJzOyBhc3luY2hyb25vdXMgbXVsdGlwcm9jZXNzb3I7IGNvbXB1dGVyIG9wZXJhdGluZyBzeXN0ZW1zIC0tLSBQcm9ncmFtIENvbXBpbGVyczsgY29tcHV0ZXIgc3lzdGVtcywgZGlnaXRhbDsgY29tcHV0ZXJzOyBjb21wdXRpbmc7IGRlc2lnbiBvZiBjb21waWxlcnM7IERPIGxvb3BzOyBsb29wczsgcGFyYWxsZWw7IHBhcmFsbGVsIGV4ZWN1dGlvbjsgcGFyYWxsZWwgcHJvY2Vzc2luZzsgcHJvZ3JhbSBjb21waWxlcnM7IHByb2dyYW1taW5nOyB2ZWN0b3IgY29tcHV0ZXJzIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtMZWRnYXJkOjE5NzQ6UFNDLAogIGF1dGhvciA9ICAgICAgICJIZW5yeSBGLiBMZWRnYXJkIiwKICB0aXRsZSA9ICAgICAgICAie1Byb2R1Y3Rpb24gU3lzdGVtc306IG9yIGNhbiB3ZSBkbyBiZXR0ZXIgdGhhbiB7Qk5GfT8iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTciLAogIG51bWJlciA9ICAgICAgICIyIiwKICBwYWdlcyA9ICAgICAgICAiOTQtLTEwMiIsCiAgbW9udGggPSAgICAgICAgZmViLAogIHllYXIgPSAgICAgICAgICIxOTc0IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlNpbmNlIHRoZSBkZXZlbG9wbWVudCBvZiBCTkYsIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBzeW50YXggb2YgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzIGhhcyBiZWVuIGFsbW9zdCB1bml2ZXJzYWxseSBhc3NvY2lhdGVkIHdpdGggY29udGV4dC1mcmVlIHJlcXVpcmVtZW50cy4gXHBhciBZZXQgbnVtZXJvdXMgaW50ZXJlc3RpbmcgYW5kIGRpZmZpY3VsdCBpc3N1ZXMgaW4gc3ludGF4IHN0ZW0gZnJvbSB0aGUgY29udGV4dC1zZW5zaXRpdmUgcmVxdWlyZW1lbnRzLCBub3RhYmx5IHRoZSBjb21wYXRpYmlsaXR5IGJldHdlZW4gdGhlIGRlY2xhcmF0aW9uIG9mIGFuIGlkZW50aWZpZXIgYW5kIGl0cyB1c2VzLCB0aGUgY29ycmVzcG9uZGVuY2UgYmV0d2VlbiBhY3R1YWwgYW5kIGZvcm1hbCBwYXJhbWV0ZXJzLCBhbmQgaXNzdWVzIGFyaXNpbmcgZnJvbSBibG9jayBzdHJ1Y3R1cmUuIFRoaXMgcGFwZXIgZXhwbG9yZXMgdGhlIHVzZSBvZiBhIGZvcm1hbCBub3RhdGlvbiBjYWxsZWQgUHJvZHVjdGlvbiBTeXN0ZW1zIGluIHByb3ZpZGluZyBhIHJlYWRhYmxlIGFuZCBjb21wbGV0ZSBmb3JtYWwgZGVmaW5pdGlvbiBvZiBzeW50YXguIEFzIGEgcHJhY3RpY2FsIGlsbHVzdHJhdGlvbiwgYSBzbWFsbCBidXQgc2lnbmlmaWNhbnQgc3Vic2V0IG9mIFBML0kgaXMgY29uc2lkZXJlZC4gQSBtb3JlIGRldGFpbGVkIHByZXNlbnRhdGlvbiwgYXMgd2VsbCBhcyB0aGUgYXBwbGljYXRpb24gdG8gZGVmaW5lIGFic3RyYWN0IHN5bnRheCBhbmQgdHJhbnNsYXRpb25zIGJldHdlZW4gbGFuZ3VhZ2VzLCBpcyBnaXZlbiBpbiBhIHByZXZpb3VzIHBhcGVyIGJ5IHRoZSBhdXRob3IuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQyMTAgKEZvcm1hbCBsb2dpYykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMTsgNzIzIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gTWFzc2FjaHVzZXR0cywgQW1oZXJzdCwgTUEsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhdXRvbWF0YSB0aGVvcnk7IEJORjsgY29tcGlsZXJzOyBjb21wdXRlciBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IGNvbnRleHQgc2Vuc2l0aXZlIGdyYW1tYXJzOyBjb250ZXh0IHNlbnNpdGl2ZSByZXF1aXJlbWVudHM7IGNvbnRleHQtc2Vuc2l0aXZlIGdyYW1tYXJzOyBkZWZpbml0aW9uOyBkZWZpbml0aW9uIG9mIHN5bnRheDsgZm9ybWFsOyBmb3JtYWwgZGVmaW5pdGlvbjsgUEwvSSBzdGFuZGFyZHM7IFByb2R1Y3Rpb24gU3lzdGVtczsgcmVhZGFibGUgYW5kIGNvbXBsZXRlIGZvcm1hbDsgc3ludGF4OyBzeW50YXggb2YgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzOyB0cmFuc2xhdGlvbiIsCiAgdHJlYXRtZW50ID0gICAgIkEgQXBwbGljYXRpb247IFQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7V2VnYnJlaXQ6MTk3NDpTTFAsCiAgYXV0aG9yID0gICAgICAgIkJlbiBXZWdicmVpdCIsCiAgdGl0bGUgPSAgICAgICAgIlRoZSBTeW50aGVzaXMgb2YgTG9vcCBQcmVkaWNhdGVzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE3IiwKICBudW1iZXIgPSAgICAgICAiMiIsCiAgcGFnZXMgPSAgICAgICAgIjEwMi0tMTEyIiwKICBtb250aCA9ICAgICAgICBmZWIsCiAgeWVhciA9ICAgICAgICAgIjE5NzQiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2OEEwNSIsCiAgTVJudW1iZXIgPSAgICAgIjQ5IDg0MjAiLAogIG1ycmV2aWV3ZXIgPSAgICJBcm1pbiBDcmVtZXJzIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkN1cnJlbnQgbWV0aG9kcyBmb3IgbWVjaGFuaWNhbCBwcm9ncmFtIHZlcmlmaWNhdGlvbiByZXF1aXJlIGEgY29tcGxldGUgcHJlZGljYXRlIHNwZWNpZmljYXRpb24gb24gZWFjaCBsb29wLiBCZWNhdXNlIHRoaXMgaXMgdGVkaW91cyBhbmQgZXJyb3IgcHJvbmUsIHByb2R1Y2luZyBhIHByb2dyYW0gd2l0aCBjb21wbGV0ZSwgY29ycmVjdCBwcmVkaWNhdGVzIGlzIHJlYXNvbmFibHkgZGlmZmljdWx0IGFuZCB3b3VsZCBiZSBmYWNpbGl0YXRlZCBieSBtYWNoaW5lIGFzc2lzdGFuY2UuIFRoaXMgcGFwZXIgZGlzY3Vzc2VzIHRlY2huaXF1ZXMgZm9yIG1lY2hhbmljYWxseSBzeW50aGVzaXppbmcgbG9vcCBwcmVkaWNhdGVzLiBUd28gY2xhc3NlcyBvZiB0ZWNobmlxdWVzIGFyZSBjb25zaWRlcmVkOiAoMSkgaGV1cmlzdGljIG1ldGhvZHMgd2hpY2ggZGVyaXZlIGxvb3AgcHJlZGljYXRlcyBmcm9tIGJvdW5kYXJ5IGNvbmRpdGlvbnMgYW5kL29yIHBhcnRpYWxseSBzcGVjaWZpZWQgaW5kdWN0aXZlIGFzc2VydGlvbnM6ICgyKSBleHRyYWN0aW9uIG1ldGhvZHMgd2hpY2ggdXNlIGlucHV0IHByZWRpY2F0ZXMgYW5kIGFwcHJvcHJpYXRlIHdlYWsgaW50ZXJwcmV0YXRpb25zIHRvIG9idGFpbiBjZXJ0YWluIGNsYXNzZXMgb2YgbG9vcCBwcmVkaWNhdGVzIGJ5IGFuIGV2YWx1YXRpb24gb24gdGhlIHdlYWsgaW50ZXJwcmV0YXRpb24uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQyNDAgKFByb2dyYW1taW5nIGFuZCBhbGdvcml0aG0gdGhlb3J5KTsgQzYxNTBHIChEaWFnbm9zdGljLCB0ZXN0aW5nLCBkZWJ1Z2dpbmcgYW5kIGV2YWx1YXRpbmcgc3lzdGVtcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMTsgNzIzIiwKICBjb3Jwc291cmNlID0gICAiSGFydmFyZCBVbml2LiwgQ2FtYnJpZGdlLCBNQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFzc2VydGlvbnM7IGF1dG9tYXRhIHRoZW9yeSAtLS0gVGhlb3JlbSBQcm92aW5nOyBib3VuZGFyeSBjb25kaXRpb25zOyBjb21wdXRlciBvcGVyYXRpbmcgc3lzdGVtczsgY29tcHV0ZXIgcHJvZ3JhbW1pbmc7IGV4dHJhY3Rpb24gbWV0aG9kczsgaGV1cmlzdGljIG1ldGhvZHM7IGluZHVjdGl2ZTsgaW5kdWN0aXZlIGFzc2VydGlvbnM7IGlucHV0IHByZWRpY2F0ZXM7IGludGVycHJldGF0aW9uczsgbG9vcCBwcmVkaWNhdGVzOyBtZWNoYW5pY2FsIHByb2dyYW0gdmVyaWZpY2F0aW9uOyBwcm9ncmFtIGRlYnVnZ2luZzsgcHJvZ3JhbSB2ZXJpZmljYXRpb247IHByb2dyYW0gdmVyaWZpZXJzOyBwcm9ncmFtbWluZyB0aGVvcnk7IHByb3BlcnR5IGV4dHJhY3Rpb247IHN5bnRoZXNpczsgc3ludGhlc2lzIG9mIGxvb3AgcHJlZGljYXRlczsgdGhlb3JlbSBwcm92aW5nOyB3ZWFrOyB3ZWFrIGludGVycHJldGF0aW9uOyB3ZWFrIGludGVycHJldGF0aW9uczsgd2VsbCBmb3VuZGVkIHNldHM7IHdlbGwtZm91bmRlZCBzZXRzIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtTcmVlbml2YXNhbjoxOTc0OkNSUywKICBhdXRob3IgPSAgICAgICAiSy4gU3JlZW5pdmFzYW4gYW5kIEEuIEouIEtsZWlubWFuIiwKICB0aXRsZSA9ICAgICAgICAiT24gdGhlIENvbnN0cnVjdGlvbiBvZiBhIFJlcHJlc2VudGF0aXZlIFN5bnRoZXRpYyBXb3JrbG9hZCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNyIsCiAgbnVtYmVyID0gICAgICAgIjMiLAogIHBhZ2VzID0gICAgICAgICIxMjctLTEzMyIsCiAgbW9udGggPSAgICAgICAgbWFyLAogIHllYXIgPSAgICAgICAgICIxOTc0IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EYXRhYmFzZS9XaWVkZXJob2xkLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIkEgZ2VuZXJhbCBtZXRob2Qgb2YgY29uc3RydWN0aW5nIGEgZHJpdmUgd29ya2xvYWQgcmVwcmVzZW50YXRpdmUgb2YgYSByZWFsIHdvcmtsb2FkIGlzIGRlc2NyaWJlZC4gVGhlIHJlYWwgd29ya2xvYWQgaXMgY2hhcmFjdGVyaXplZCBieSBpdHMgZGVtYW5kcyBvbiB0aGUgdmFyaW91cyBzeXN0ZW0gcmVzb3VyY2VzLiBUaGVzZSBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhlIHJlYWwgd29ya2xvYWQgYXJlIG9idGFpbmVkIGZyb20gdGhlIHN5c3RlbSBhY2NvdW50aW5nIGRhdGEuIFRoZSBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhlIGRyaXZlIHdvcmtsb2FkIGFyZSBkZXRlcm1pbmVkIGJ5IG1hdGNoaW5nIHRoZSBqb2ludCBwcm9iYWJpbGl0eSBkZW5zaXR5IG9mIHRoZSByZWFsIHdvcmtsb2FkIHdpdGggdGhhdCBvZiB0aGUgZHJpdmUgd29ya2xvYWQuIFRoZSBkcml2ZSB3b3JrbG9hZCBpcyByZWFsaXplZCBieSB1c2luZyBhIHN5bnRoZXRpYyBwcm9ncmFtIGluIHdoaWNoIHRoZSBjaGFyYWN0ZXJpc3RpY3MgY2FuIGJlIHZhcmllZCBieSB2YXJ5aW5nIHRoZSBhcHByb3ByaWF0ZSBwYXJhbWV0ZXJzLiBDYWxpYnJhdGlvbiBleHBlcmltZW50cyBhcmUgY29uZHVjdGVkIHRvIGRldGVybWluZSBleHByZXNzaW9ucyByZWxhdGluZyB0aGUgc3ludGhldGljIHByb2dyYW0gcGFyYW1ldGVycyB3aXRoIHRoZSB3b3JrbG9hZCBjaGFyYWN0ZXJpc3RpY3MuIFRoZSBnZW5lcmFsIG1ldGhvZCBpcyBhcHBsaWVkIHRvIHRoZSBjYXNlIG9mIHR3byB2YXJpYWJsZXMsIGNwdSBzZWNvbmRzIGFuZCBudW1iZXIgb2YgSS9PIGFjdGl2aXRpZXM7IGFuZCBhIHN5bnRoZXRpYyB3b3JrbG9hZCB3aXRoIDg4IGpvYnMgaXMgY29uc3RydWN0ZWQgdG8gcmVwcmVzZW50IGEgbW9udGgncyB3b3JrbG9hZCBjb25zaXN0aW5nIG9mIGFib3V0IDYwMDAgam9icy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjE1MEcgKERpYWdub3N0aWMsIHRlc3RpbmcsIGRlYnVnZ2luZyBhbmQgZXZhbHVhdGluZyBzeXN0ZW1zKTsgQzc0MzAgKENvbXB1dGVyIGVuZ2luZWVyaW5nKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIyIiwKICBjb3Jwc291cmNlID0gICAiTUlUUkUgQ29ycC4sIEJlZGZvcmQsIE1BLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYWN0aXZpdGllczsgY2FsaWJyYXRpb24gZXhwZXJpbWVudHM7IGNvbXB1dGVyIHN5c3RlbXMsIGRpZ2l0YWw7IGNvbXB1dGVyIHRlc3Rpbmc7IGNvbnN0cnVjdGlvbjsgY3B1IHNlY29uZHM7IGRhdGE7IGRyaXZlOyBqb2ludCBwcm9iYWJpbGl0eSBkZW5zaXR5OyBudW1iZXIgb2YgSS9POyByZWFsIHdvcmtsb2FkOyByZXByZXNlbnRhdGl2ZSBzeW50aGV0aWMgd29ya2xvYWQ7IHNpbXVsYXRpb247IHN5bnRoZXRpYyBwcm9ncmFtOyBzeW50aGV0aWMgd29ya2xvYWQ7IHN5c3RlbSBhY2NvdW50aW5nOyBzeXN0ZW0gcmVzb3VyY2VzOyB3b3JrbG9hZCIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7QmFsa292aWNoOjE5NzQ6RE1SLAogIGF1dGhvciA9ICAgICAgICJFLiBCYWxrb3ZpY2ggYW5kIFcuIENoaXUgYW5kIEwuIFByZXNzZXIgYW5kIFIuIFdvb2QiLAogIHRpdGxlID0gICAgICAgICJEeW5hbWljIE1lbW9yeSBSZXBhY2tpbmciLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTciLAogIG51bWJlciA9ICAgICAgICIzIiwKICBwYWdlcyA9ICAgICAgICAiMTMzLS0xMzgiLAogIG1vbnRoID0gICAgICAgIG1hciwKICB5ZWFyID0gICAgICAgICAiMTk3NCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJBIHByb2JhYmlsaXN0aWMgbW9kZWwgb2YgYSBtdWx0aXByb2dyYW1taW5nIHN5c3RlbSBpcyBleGVyY2lzZWQgaW4gb3JkZXIgdG8gZGV0ZXJtaW5lIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoZSBkeW5hbWljIHJlcGFja2luZyBvZiBtYWluIG1lbW9yeSBpcyBiZW5lZmljaWFsLiBBbiBleHByZXNzaW9uIGlzIGRlcml2ZWQgZm9yIHRoZSBtYXhpbXVtIGludGVyZmVyZW5jZSB0aGF0IGEgcmVwYWNraW5nIHByb2Nlc3MgbWF5IGludHJvZHVjZSBiZWZvcmUgdGhlIG9yaWdpbmFsIHBlcmZvcm1hbmNlIG9mIHRoZSBzeXN0ZW0gaXMgZGVncmFkZWQuIEFsdGVybmF0aXZlIGFwcHJvYWNoZXMgdG8gcmVwYWNraW5nIGFyZSBkaXNjdXNzZWQsIGFuZCB0aGUgb3BlcmF0aW5nIGNvbmRpdGlvbnMgdGhhdCBsZWFkIHRvIGltcHJvdmVkIHN5c3RlbSB0aHJvdWdocHV0IHRocm91Z2ggcmVwYWNraW5nIGFyZSBkZWxpbmVhdGVkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbik7IEM2MTUwSiAoT3BlcmF0aW5nIHN5c3RlbXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBDYWxpZm9ybmlhLCBTYW50YSBCYXJiYXJhLCBDQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNlbnRyYWw7IGNvbXB1dGVyIHN5c3RlbXMgcHJvZ3JhbW1pbmc7IGR5bmFtaWMgbWVtb3J5IHJlcGFja2luZzsgZmlsZSBvcmdhbmlzYXRpb247IGZyYWdtZW50YXRpb247IG1heGltdW0gaW50ZXJmZXJlbmNlOyBtdWx0aXByb2dyYW1taW5nOyBtdWx0aXByb2dyYW1taW5nIHN5c3RlbTsgbXVsdGlwcm9ncmFtbWluZyBzeXN0ZW0gbW9kZWw7IHByb2JhYmlsaXN0aWMgbW9kZWw7IHByb2Nlc3NvciBwcm9kdWN0aXZpdHk7IHJlc291cmNlIHV0aWxpemF0aW9uOyBzdG9yYWdlOyBzdG9yYWdlIGZyYWdtZW50YXRpb247IHN5c3RlbTsgdGhyb3VnaHB1dCIsCiAgdHJlYXRtZW50ID0gICAgIkEgQXBwbGljYXRpb247IFQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7TW9yZ2FuOjE5NzQ6T1NBLAogIGF1dGhvciA9ICAgICAgICJIb3dhcmQgTGVlIE1vcmdhbiIsCiAgdGl0bGUgPSAgICAgICAgIk9wdGltYWwgU3BhY2UgQWxsb2NhdGlvbiBvbiBEaXNrIFN0b3JhZ2UgRGV2aWNlcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNyIsCiAgbnVtYmVyID0gICAgICAgIjMiLAogIHBhZ2VzID0gICAgICAgICIxMzktLTE0MiIsCiAgbW9udGggPSAgICAgICAgbWFyLAogIHllYXIgPSAgICAgICAgICIxOTc0IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EYXRhYmFzZS9XaWVkZXJob2xkLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIldoZW4gdGhlIGFtb3VudCBvZiBzcGFjZSByZXF1aXJlZCBmb3IgZmlsZSBzdG9yYWdlIGV4Y2VlZHMgdGhlIGFtb3VudCB3aGljaCBjYW4gYmUga2VwdCBvbmxpbmUsIGRlY2lzaW9ucyBtdXN0IGJlIG1hZGUgYXMgdG8gd2hpY2ggZmlsZXMgYXJlIHRvIGJlIHBlcm1hbmVudGx5IHJlc2lkZW50IGFuZCB3aGljaCBtb3VudGFibGUuIFRoZXNlIGRlY2lzaW9ucyB3aWxsIGFmZmVjdCB0aGUgbnVtYmVyIG9mIG1vdW50IHJlcXVlc3RzIGlzc3VlZCB0byB0aGUgb3BlcmF0b3JzLiBUaGlzIGlzIG9mdGVuIGEgYm90dGxlbmVjayBpbiBhIGNvbXB1dGluZyBmYWNpbGl0eSwgYW5kIHJlZHVjaW5nIHRoZSBudW1iZXIgb2YgbW91bnRzIHRodXMgZGVjcmVhc2VzIHR1cm5hcm91bmQgdGltZS4gQW4gb3B0aW1pemF0aW9uIG1vZGVsIGZvciB0aGUgYXNzaWdubWVudCBvZiBmaWxlcyB0byBkaXNrIHBhY2tzLCBhbmQgcGFja3MgdG8gZWl0aGVyIHJlc2lkZW50IG9yIG5vbnJlc2lkZW50IHN0YXR1cyBpcyBwcmVzZW50ZWQuIEhldXJpc3RpY3MgYXJlIHN1Z2dlc3RlZCBmb3IgdGhvc2UgY2FzZXMgaW4gd2hpY2ggaXQgaXMgaW5lZmZpY2llbnQgdG8gY29tcHV0ZSB0aGUgYWN0dWFsIG9wdGltdW0uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBhbm5vdGUgPSAgICAgICAiT3B0aW1pemF0aW9uIG9mIGZpbGUgYWxsb2NhdGlvbiB0byBtb3VudGFibGUgZGlza3BhY2tzLiIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbikiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIkNhbGlmb3JuaWEgSW5zdC4gVGVjaG5vbC4sIFBhc2FkZW5hLCBDQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImJvdHRsZW5lY2s7IGNvbXB1dGVyIG9wZXJhdGluZyBzeXN0ZW1zOyBjb21wdXRpbmcgZmFjaWxpdHk7IGRpc2MgYW5hbHlzaXM7IGRpc2MgZmlsZXM7IGRpc2Mgc3RvcmFnZSBkZXZpY2VzOyBmaWxlOyBmaWxlIHN5c3RlbXM7IEhldXJpc3RpY3M7IG1hZ25ldGljIGRpc2Mgc3RvcmFnZTsgbWVtb3J5IGhpZXJhcmNoeTsgb3B0aW1hbCBzcGFjZSBhbGxvY2F0aW9uOyBvcHRpbWl6YXRpb24gbW9kZWw7IHNjaGVkdWxpbmc7IHN0b3JhZ2U7IHN0b3JhZ2UgYWxsb2NhdGlvbiIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7TG9lc2VyOjE5NzQ6U1BULAogIGF1dGhvciA9ICAgICAgICJSdWRvbGYgTG9lc2VyIiwKICB0aXRsZSA9ICAgICAgICAiU29tZSBQZXJmb3JtYW5jZSBUZXN0cyBvZiBgYFF1aWNrc29ydCcnIGFuZCBEZXNjZW5kYW50cyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNyIsCiAgbnVtYmVyID0gICAgICAgIjMiLAogIHBhZ2VzID0gICAgICAgICIxNDMtLTE1MiIsCiAgbW9udGggPSAgICAgICAgbWFyLAogIHllYXIgPSAgICAgICAgICIxOTc0IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EYXRhYmFzZS9HcmFlZmUuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiRGV0YWlsZWQgcGVyZm9ybWFuY2UgZXZhbHVhdGlvbnMgYXJlIHByZXNlbnRlZCBmb3Igc2l4IEFDTSBhbGdvcml0aG1zOiBxdWlja3NvcnQgKE5vLiA2NCksIFNoZWxsc29ydCAoTm8uIDIwMSksIHN0cmluZ3NvcnQgKE5vLiAyMDcpLCBgYFRSRUVTT1JUUzMnJyAoTm8uIDI0NSksIHF1aWNrZXJzb3J0IChOby4gMjcxKSwgYW5kIHFzb3J0IChOby4gNDAyKS4gQWxnb3JpdGhtcyAyNzEgYW5kIDQwMiBhcmUgcmVmaW5lbWVudHMgb2YgYWxnb3JpdGhtIDY0LCBhbmQgYWxsIHRocmVlIGFyZSBkaXNjdXNzZWQgaW4gc29tZSBkZXRhaWwuIFRoZSBldmlkZW5jZSBnaXZlbiBoZXJlIGRlbW9uc3RyYXRlcyB0aGF0IHFzb3J0IChOby4gNDAyKSByZXF1aXJlcyBtYW55IG1vcmUgY29tcGFyaXNvbnMgdGhhdCBpdHMgYXV0aG9yIGNsYWltcy4gT2YgYWxsIHRoZXNlIGFsZ29yaXRobXMsIHF1aWNrZXJzb3J0IHJlcXVpcmVzIHRoZSBmZXdlc3QgY29tcGFyaXNvbnMgdG8gc29ydCByYW5kb20gYXJyYXlzLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTMwIChEYXRhIGhhbmRsaW5nIHRlY2huaXF1ZXMpOyBDNjE1MEcgKERpYWdub3N0aWMsIHRlc3RpbmcsIGRlYnVnZ2luZyBhbmQgZXZhbHVhdGluZyBzeXN0ZW1zKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiU21pdGhzb25pYW4gQXN0cm9waHlzLiBPYnMuLCBDYW1icmlkZ2UsIE1BLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiJ3F1aWNrc29ydCc7IEFDTTsgYWxnb3JpdGhtczsgY29tcHV0ZXIgcHJvZ3JhbW1pbmc7IGNvbXB1dGVyIHRlc3Rpbmc7IGdlbmVyYWw7IHBlcmZvcm1hbmNlIGV2YWx1YXRpb25zOyBwZXJmb3JtYW5jZSB0ZXN0czsgcHVycG9zZSBzb3J0IGFsZ29yaXRobTsgcXNvcnQ7IHF1aWNrc29ydDsgcXVpY2tzb3J0IHF1aWNrZXJzb3J0IHFzb3J0IENBQ007IHJhbmRvbSBhcnJheXM7IFNoZWxsc29ydDsgc29ydGluZzsgc29ydGluZyBhbGdvcml0aG0gZG9jdW1lbnRhdGlvbjsgc29ydGluZyBlZmZpY2llbmN5OyBzb3J0aW5nIHBlcmZvcm1hbmNlIHRlc3RzOyBzdHJpbmcgc29ydDsgVFJFRVNPUlQzOyB1dGlsaXR5IHNvcnQgYWxnb3JpdGhtIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtXcmlnaHQ6MTk3NDpWU1AsCiAgYXV0aG9yID0gICAgICAgIlQuIFdyaWdodCIsCiAgdGl0bGUgPSAgICAgICAgIlZpc2libGUgc3VyZmFjZSBwbG90dGluZyBwcm9ncmFtIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE3IiwKICBudW1iZXIgPSAgICAgICAiMyIsCiAgcGFnZXMgPSAgICAgICAgIjE1Mi0tMTU3IChvciAxNTItLTE1NT8/KSIsCiAgbW9udGggPSAgICAgICAgbWFyLAogIHllYXIgPSAgICAgICAgICIxOTc0IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgImZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGlzdHJpYnV0ZWQvUUxELzE5NzIuYmliIiwKICBub3RlID0gICAgICAgICAiU2VlIGFsc28gXGNpdGV7RHV0YToxOTc2OlJWUyxTd2lldGVuOjE5Nzk6UlZTfS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNTU0MCAoVGVybWluYWxzIGFuZCBncmFwaGljIGRpc3BsYXlzKTsgQzYxMzAgKERhdGEgaGFuZGxpbmcgdGVjaG5pcXVlcykiLAogIGNvcnBzb3VyY2UgPSAgICJOYXQuIENlbnRlciBBdG1vc3BoZXJpYyBSZXMuLCBCb3VsZGVyLCBDTywgVVNBIiwKICBjb3VudHJ5ID0gICAgICAiVVNBIiwKICBkZXNjcmlwdG9ycyA9ICAiRk9SVFJBTjsgZ3JhcGhpY3M7IGFwcGxpY2F0aW9uOyBtZXRob2Q7IGh1bWFuIGZhY3RvcnM7IGhpZGRlbiBsaW5lIGFsZ29yaXRobTsgY29udG91ciBzdXJmYWNlIiwKICBlbnVtID0gICAgICAgICAiMzM0MyIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIGdyYXBoaWNzOyBjb250b3VyIHN1cmZhY2U7IGhpZGRlbiBsaW5lIHByb2JsZW07IHN1YnJvdXRpbmVzOyB2aXNpYmxlIHN1cmZhY2UgcGxvdHRpbmcgcHJvZ3JhbSIsCiAgbGFuZ3VhZ2UgPSAgICAgIkVuZ2xpc2giLAogIHJlZmVyZW5jZXMgPSAgICIwIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtCb3N0ZW46MTk3NDpJQlIsCiAgYXV0aG9yID0gICAgICAgIk4uIEUuIEJvc3RlbiBhbmQgRS4gTC4gQmF0dGlzdGUiLAogIHRpdGxlID0gICAgICAgICJJbmNvbXBsZXRlIGJldGEgcmF0aW8iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTciLAogIG51bWJlciA9ICAgICAgICIzIiwKICBwYWdlcyA9ICAgICAgICAiMTU2LS0xNTciLAogIG1vbnRoID0gICAgICAgIG1hciwKICB5ZWFyID0gICAgICAgICAiMTk3NCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJCMDI5MEYgKEludGVycG9sYXRpb24gYW5kIGZ1bmN0aW9uIGFwcHJveGltYXRpb24pOyBDNDEzMCAoSW50ZXJwb2xhdGlvbiBhbmQgZnVuY3Rpb24gYXBwcm94aW1hdGlvbik7IEM3MzEwIChNYXRoZW1hdGljcyBjb21wdXRpbmcpIiwKICBjb3Jwc291cmNlID0gICAiSU1TTCwgSG91c3RvbiwgVFgsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgIkFsZ29yaXRobSAxNzk7IGNvbXB1dGVyIGFpZGVkIGFuYWx5c2lzOyBmdW5jdGlvbiBhcHByb3hpbWF0aW9uOyBpbmNvbXBsZXRlIGJldGEgcmF0aW87IHN1YnJvdXRpbmVzIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtCYXJyZXR0OjE5NzQ6U0NBLAogIGF1dGhvciA9ICAgICAgICJSLiBDLiBCYXJyZXR0IGFuZCBCLiBXLiB7Sm9yZGFuLCBKci59IiwKICB0aXRsZSA9ICAgICAgICAiU2NhbiBDb252ZXJzaW9uIEFsZ29yaXRobXMgZm9yIGEgQ2VsbCBPcmdhbml6ZWQgUmFzdGVyIERpc3BsYXkiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTciLAogIG51bWJlciA9ICAgICAgICIzIiwKICBwYWdlcyA9ICAgICAgICAiMTU3LS0xNjMiLAogIG1vbnRoID0gICAgICAgIG1hciwKICB5ZWFyID0gICAgICAgICAiMTk3NCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJSYXN0ZXIgc2NhbiBjb21wdXRlciBncmFwaGljcyB3aXRoIGBgcmVhbCB0aW1lJycgY2hhcmFjdGVyIGdlbmVyYXRvcnMgaGF2ZSBwcmV2aW91c2x5IGJlZW4gbGltaXRlZCB0byBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4gQSBkaXNwbGF5IGhhcyBiZWVuIGRlc2NyaWJlZCB3aGljaCBleHRlbmRzIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhpcyBvcmdhbml6YXRpb24gdG8gaW5jbHVkZSBnZW5lcmFsIGdyYXBoaWNzLiBUd28gZnVuZGFtZW50YWxseSBkaWZmZXJlbnQgc2NhbiBjb252ZXJzaW9uIGFsZ29yaXRobXMgd2hpY2ggaGF2ZSBiZWVuIGRldmVsb3BlZCB0byBzdXBwb3J0IHRoaXMgZGlzcGxheSBhcmUgcHJlc2VudGVkLiBPbmUgaXMgbW9zdCBzdWl0YWJsZSB0byBub25pbnRlcmFjdGl2ZSBhcHBsaWNhdGlvbnMgYW5kIHRoZSBvdGhlciB0byBpbnRlcmFjdGl2ZSBhcHBsaWNhdGlvbnMuIFRoZSBhbGdvcml0aG1zIHdlcmUgaW1wbGVtZW50ZWQgaW4gRm9ydHJhbiBvbiB0aGUgQ0RDNjQwMCBjb21wdXRlci4gUmVzdWx0cyBvYnRhaW5lZCBmcm9tIHRoZSBpbXBsZW1lbnRhdGlvbnMgc2hvdyB0aGF0IHRoZSBub25pbnRlcmFjdGl2ZSBhbGdvcml0aG1zIGNhbiBzaWduaWZpY2FudGx5IHJlZHVjZSBkaXNwbGF5IGZpbGUgc3RvcmFnZSByZXF1aXJlbWVudHMgYXQgbGl0dGxlIGNvc3QgaW4gZXhlY3V0aW9uIHRpbWUgb3ZlciB0aGF0IG9mIGEgY29udmVudGlvbmFsIHJhc3RlciBkaXNwbGF5LiBUaGUgaW50ZXJhY3RpdmUgYWxnb3JpdGhtIGltcHJvdmUgcmVzcG9uc2UgdGltZSBhbmQgcmVkdWNlIHN0b3JhZ2UgcmVxdWlyZW1lbnRzLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM1NTQwIChUZXJtaW5hbHMgYW5kIGdyYXBoaWMgZGlzcGxheXMpOyBDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiSHVnaGVzIEFpcmNyYWZ0IENvLiwgQ3VsdmVyIENpdHksIENBLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiJ3JlYWwgdGltZScgY2hhcmFjdGVyIGdlbmVyYXRvcnM7IGNlbGwgb3JnYW5pemVkIHJhc3RlciBkaXNwbGF5OyBjb21wdXRlciBncmFwaGljczsgY29tcHV0ZXIgcHJvZ3JhbW1pbmcgLS0tIFN1YnJvdXRpbmVzOyBkYXRhIGhhbmRsaW5nOyBnZW5lcmFsIGdyYXBoaWNzOyBpbnRlcmFjdGl2ZSBhcHBsaWNhdGlvbnM7IG5vbmludGVyYWN0aXZlIGFwcGxpY2F0aW9uczsgc2NhbiBjb252ZXJzaW9uIGFsZ29yaXRobXMiLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0Fja2VybWFuOjE5NzQ6UVNILAogIGF1dGhvciA9ICAgICAgICJBLiBGcmFuayBBY2tlcm1hbiIsCiAgdGl0bGUgPSAgICAgICAgIlF1YWRyYXRpYyBTZWFyY2ggZm9yIEhhc2ggVGFibGVzIG9mIFNpemUgJHBebiQiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTciLAogIG51bWJlciA9ICAgICAgICIzIiwKICBwYWdlcyA9ICAgICAgICAiMTY0LS0xNjQiLAogIG1vbnRoID0gICAgICAgIG1hciwKICB5ZWFyID0gICAgICAgICAiMTk3NCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4QTA1IiwKICBNUm51bWJlciA9ICAgICAiNDggMTAxNzgiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKTsgQzYxMzAgKERhdGEgaGFuZGxpbmcgdGVjaG5pcXVlcykiLAogIGtleXdvcmRzID0gICAgICJmaWxlIG9yZ2FuaXNhdGlvbjsgcXVhZHJhdGljIHNlYXJjaCBmb3IgaGFzaCB0YWJsZXM7IHRhYmxlIGxvb2t1cCIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7U3RvbmU6MTk3NDpOQ1AsCiAgYXV0aG9yID0gICAgICAgIkhhcm9sZCBTLiBTdG9uZSIsCiAgdGl0bGUgPSAgICAgICAgIkEgbm90ZSBvbiBhIGNvbWJpbmF0b3JpYWwgcHJvYmxlbSBvZiB7QnVybmV0dH0gYW5kIHtDb2ZmbWFufSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNyIsCiAgbnVtYmVyID0gICAgICAgIjMiLAogIHBhZ2VzID0gICAgICAgICIxNjUtLTE2NiIsCiAgbW9udGggPSAgICAgICAgbWFyLAogIHllYXIgPSAgICAgICAgICIxOTc0IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiMDVBMDUiLAogIE1SbnVtYmVyID0gICAgICI0OCAxMDgyNiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJCMDI1MCAoQ29tYmluYXRvcmlhbCBtYXRoZW1hdGljcyk7IEMxMTYwIChDb21iaW5hdG9yaWFsIG1hdGhlbWF0aWNzKTsgQzYxMzAgKERhdGEgaGFuZGxpbmcgdGVjaG5pcXVlcykiLAogIGNvcnBzb3VyY2UgPSAgICJTdGFuZm9yZCBVbml2LiwgQ0EsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImNvbWJpbmF0b3JpYWwgYW5hbHlzaXM7IGNvbWJpbmF0b3JpYWwgbWF0aGVtYXRpY3M7IGNvbWJpbmF0b3JpYWwgcHJvYmxlbTsgZGVyYW5nZW1lbnRzOyBmaWxlIG9yZ2FuaXNhdGlvbjsgaW50ZXJsZWF2ZWQgbWVtb3J5IHN5c3RlbXM7IGludGVybGVhdmluZzsgbWVhbjsgbWVtb3JpZXM7IG1lbW9yeSBiYW5kd2lkdGg7IHJlbmNvbnRyZXMiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0tyb2doOjE5NzQ6RUlWLAogIGF1dGhvciA9ICAgICAgICJGcmVkIFQuIEtyb2doIiwKICB0aXRsZSA9ICAgICAgICAiRWZmaWNpZW50IEltcGxlbWVudGF0aW9uIG9mIGEgVmFyaWFibGUgUHJvamVjdGlvbiBBbGdvcml0aG0gZm9yIE5vbmxpbmVhciBMZWFzdCBTcXVhcmVzIFByb2JsZW1zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE3IiwKICBudW1iZXIgPSAgICAgICAiMyIsCiAgcGFnZXMgPSAgICAgICAgIjE2Ny0tMTY5IiwKICBtb250aCA9ICAgICAgICBtYXIsCiAgeWVhciA9ICAgICAgICAgIjE5NzQiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2NUswNSIsCiAgTVJudW1iZXIgPSAgICAgIjQ5IDE3NzMiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L1RoZW9yeS9NYXRyaXguYmliIiwKICBub3RlID0gICAgICAgICAiU2VlIGVycmF0YSBcY2l0ZXtLcm9naDoxOTc0OkVFSX0uIiwKICBhYnN0cmFjdCA9ICAgICAiTm9ubGluZWFyIGxlYXN0IHNxdWFyZXMgcHJvYmxlbXMgZnJlcXVlbnRseSBhcmlzZSBmb3Igd2hpY2ggdGhlIHZhcmlhYmxlcyB0byBiZSBzb2x2ZWQgZm9yIGNhbiBiZSBzZXBhcmF0ZWQgaW50byBhIGxpbmVhciBhbmQgYSBub25saW5lYXIgcGFydC4gQSB2YXJpYWJsZSBwcm9qZWN0aW9uIGFsZ29yaXRobSBoYXMgYmVlbiBkZXZlbG9wZWQgcmVjZW50bHkgd2hpY2ggaXMgZGVzaWduZWQgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIHN0cnVjdHVyZSBvZiBhIHByb2JsZW0gd2hvc2UgdmFyaWFibGVzIHNlcGFyYXRlIGluIHRoaXMgd2F5LiBUaGlzIHBhcGVyIGdpdmVzIGEgc2xpZ2h0bHkgbW9yZSBlZmZpY2llbnQgYW5kIHNsaWdodGx5IG1vcmUgZ2VuZXJhbCB2ZXJzaW9uIG9mIHRoaXMgYWxnb3JpdGhtIHRoYW4gaGFzIGFwcGVhcmVkIGVhcmxpZXIuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjAyOTBGIChJbnRlcnBvbGF0aW9uIGFuZCBmdW5jdGlvbiBhcHByb3hpbWF0aW9uKTsgQzQxMzAgKEludGVycG9sYXRpb24gYW5kIGZ1bmN0aW9uIGFwcHJveGltYXRpb24pOyBDNzMxMCAoTWF0aGVtYXRpY3MgY29tcHV0aW5nKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzOyA5MjEiLAogIGNvcnBzb3VyY2UgPSAgICJDYWxpZm9ybmlhIEluc3QuIFRlY2hub2wuLCBQYXNhZGVuYSwgQ0EsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBhaWRlZCBhbmFseXNpczsgY29tcHV0ZXIgcHJvZ3JhbW1pbmc7IGxlYXN0IHNxdWFyZXMgYXBwcm94aW1hdGlvbnM7IGxzcTsgbWF0aGVtYXRpY2FsIHRlY2huaXF1ZXMgLS0tIExlYXN0IFNxdWFyZXMgQXBwcm94aW1hdGlvbnM7IG5sbHNxOyBubG9wOyBubHNxOyBub25saW5lYXIgbGVhc3Qgc3F1YXJlczsgcGFyYW1ldGVyIGVzdGltYXRpb247IHByb2JsZW1zOyB2YXJpYWJsZSBwcm9qZWN0aW9uOyB2YXJpYWJsZSBwcm9qZWN0aW9uIGFsZ29yaXRobTsgdmFycHJvIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtTYWx0emVyOjE5NzQ6U0xNLAogIGF1dGhvciA9ICAgICAgICJKZXJvbWUgSC4gU2FsdHplciIsCiAgdGl0bGUgPSAgICAgICAgIkEgU2ltcGxlIExpbmVhciBNb2RlbCBvZiBEZW1hbmQgUGFnaW5nIFBlcmZvcm1hbmNlIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE3IiwKICBudW1iZXIgPSAgICAgICAiNCIsCiAgcGFnZXMgPSAgICAgICAgIjE4MS0tMTg2IiwKICBtb250aCA9ICAgICAgICBhcHIsCiAgeWVhciA9ICAgICAgICAgIjE5NzQiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L01pc2Mvc3RvcmFnZS5iaWIgYW5kIGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvTWlzYy9jYWNoZS5iaWIiLAogIGFic3RyYWN0ID0gICAgICJUaGlzIHBhcGVyIHByb3Bvc2VzIGFuZCBhbmFseXplcyBhIGRlbWFuZCBwYWdlZCB2aXJ0dWFsIG1lbW9yeSBjb21wdXRlciBzeXN0ZW0uIFRoZSBzaW1wbGUgbW9kZWwgY29tYmluZXMgdGhlIGVmZmVjdCBvZiB0aGUgaW5mb3JtYXRpb24gcmVmZXJlbmNlIHBhdHRlcm4gd2l0aCB0aGUgZWZmZWN0IG9mIHRoZSBhdXRvbWF0aWMgbWFuYWdlbWVudCBhbGdvcml0aG0gdG8gcHJvZHVjZSBhIHNpbmdsZSwgY29tcG9zaXRlIHN0YXRlbWVudDogdGhlIG1lYW4gbnVtYmVyIG9mIG1lbW9yeSByZWZlcmVuY2VzIGJldHdlZW4gcGFnaW5nIGV4Y2VwdGlvbnMgaW5jcmVhc2VzIGxpbmVhcmx5IHdpdGggdGhlIHNpemUgb2YgdGhlIHBhZ2luZyBtZW1vcnkuIFRoZSByZXN1bHRpbmcgbW9kZWwgaXMgZWFzeSB0byBtYW5pcHVsYXRlLCBhbmQgaXMgYXBwbGljYWJsZSB0byBzdWNoIGRpdmVyc2UgcHJvYmxlbXMgYXMgY2hvb3NpbmcgYW4gb3B0aW11bSBzaXplIGZvciBhIHBhZ2luZyBtZW1vcnksIGFycmFuZ2luZyBmb3IgcmVwcm9kdWNpYmxlIG1lbW9yeSB1c2FnZSBjaGFyZ2VzLCBhbmQgZXN0aW1hdGluZyB0aGUgYW1vdW50IG9mIGNvcmUgbWVtb3J5IHNoYXJpbmcuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKTsgQzYxNTBKIChPcGVyYXRpbmcgc3lzdGVtcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIk1JVCwgQ2FtYnJpZGdlLCBNQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImF1dG9tYXRpYyBtYW5hZ2VtZW50IGFsZ29yaXRobTsgYXV0b21hdGljYWxseSBtYW5hZ2VkIG11bHRpbGV2ZWwgbWVtb3J5IHN5c3RlbTsgY29tcHV0ZXIgbWV0YXRoZW9yeTsgY29tcHV0ZXIgdGVzdGluZzsgY29yZSBtZW1vcnk7IGRlbWFuZCBwYWdpbmcgcGVyZm9ybWFuY2U7IGluZm9ybWF0aW9uOyBsaW5lYXIgbW9kZWw7IG1lbW9yeSBoaWVyYXJjaHk7IG1lbW9yeSBtb2RlbHM7IG9wZXJhdGluZyBzeXN0ZW1zIChjb21wdXRlcnMpOyBvcHRpbXVtOyBwYWdpbmc7IHBlcmZvcm1hbmNlOyBQZXJmb3JtYW5jZSBFdmFsdWF0aW9uOiBBbmFseXRpYzsgcGVyZm9ybWFuY2UgbWVhc3VyZW1lbnQ7IHByZWRpY3RpbmcgdGhlOyBwcm9ncmFtIHJlZmVyZW5jZSBtb2RlbDsgcmVmZXJlbmNlIHBhdHRlcm47IHJlcHJvZHVjaWJsZSBtZW1vcnkgdXNhZ2UgY2hhcmdlczsgc2hhcmluZzsgc2l6ZTsgc3RvcmFnZTsgdmlydHVhbDsgdmlydHVhbCBtZW1vcnkiLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBYIEV4cGVyaW1lbnRhbCIsCn0KCkBBcnRpY2xle0ZyYW5rbGluOjE5NzQ6Q1BGLAogIGF1dGhvciA9ICAgICAgICJNLiBBLiBGcmFua2xpbiBhbmQgUi4gSy4gR3VwdGEiLAogIHRpdGxlID0gICAgICAgICJDb21wdXRhdGlvbiBvZiBQYWdlIEZhdWx0IFByb2JhYmlsaXR5IGZyb20gUHJvZ3JhbSBUcmFuc2l0aW9uIERpYWdyYW0iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTciLAogIG51bWJlciA9ICAgICAgICI0IiwKICBwYWdlcyA9ICAgICAgICAiMTg2LS0xOTEiLAogIG1vbnRoID0gICAgICAgIGFwciwKICB5ZWFyID0gICAgICAgICAiMTk3NCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJBbiBhbGdvcml0aG0gaXMgZ2l2ZW4gZm9yIGNhbGN1bGF0aW5nIHBhZ2UgZmF1bHQgcHJvYmFiaWxpdHkgaW4gYSB2aXJ0dWFsIG1lbW9yeSBzeXN0ZW0gb3BlcmF0aW5nIHVuZGVyIGRlbWFuZCBwYWdpbmcgd2l0aCB2YXJpb3VzIG1lbW9yeSBzaXplcyBhbmQgcmVwbGFjZW1lbnQgcnVsZXMuIEEgZmlyc3Qgb3JkZXIgTWFya292IG1vZGVsIG9mIHByb2dyYW0gYmVoYXZpb3IgaXMgYXNzdW1lZCwgYW5kIGEgcmVwcmVzZW50YXRpb24gb2YgdGhlIHN5c3RlbSBiYXNlZCBvbiBtZW1vcnkgc3RhdGVzLCBjb250cm9sIHN0YXRlcywgYW5kIG1lbW9yeSBzdWJzdGF0ZXMgaXMgcHJlc2VudGVkLiBUaGUgYWxnb3JpdGhtIGlzIGdlbmVyYWwgaW4gdGhlIHNlbnNlIHRoYXQgdGhlIHBhZ2UgZmF1bHQgcHJvYmFiaWxpdGllcyBjYW4gYmUgY2FsY3VsYXRlZCBmb3Igbm9ucHJlZGljdGl2ZSByZXBsYWNlbWVudCBydWxlcyBhcHBsaWVkIHRvIGFueSBwcm9ncmFtIHJlcHJlc2VudGVkIGJ5IGEgb25lLXN0ZXAgTWFya292IGNoYWluLiBBIGRldGFpbGVkIGV4YW1wbGUgaXMgZ2l2ZW4gdG8gaWxsdXN0cmF0ZSB0aGUgYWxnb3JpdGhtIGZvciBSYW5kb20gYW5kIExlYXN0IFJlY2VudGx5IFVzZWQgKExSVSkgcmVwbGFjZW1lbnQgcnVsZXMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKTsgQzc0MzAgKENvbXB1dGVyIGVuZ2luZWVyaW5nKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiV2FzaGluZ3RvbiBVbml2LiwgU3QuIExvdWlzLCBNTywgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIG1ldGF0aGVvcnk7IGNvbXB1dGVyIHRlc3Rpbmc7IGNvbnRyb2wgc3RhdGVzOyBkZW1hbmQgcGFnaW5nOyBmYXVsdCB0b2xlcmFudCBjb21wdXRpbmc7IE1hcmtvdiBtb2RlbDsgbWVtb3J5OyBtZW1vcnkgc3RhdGVzOyBtZW1vcnkgc3Vic3RhdGVzOyBub25wcmVkaWN0aXZlIHJlcGxhY2VtZW50IHJ1bGVzOyBwYWdlIGZhdWx0IHByb2JhYmlsaXR5OyBwcm9ncmFtIHRyYW5zaXRpb24gZGlhZ3JhbTsgdmFyaW91cyBtZW1vcnkgc2l6ZXM7IHZpcnR1YWw7IHZpcnR1YWwgc3RvcmFnZSIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7Qm95c2U6MTk3NDpFQ1AsCiAgYXV0aG9yID0gICAgICAgIkpvaG4gVy4gQm95c2UiLAogIHRpdGxlID0gICAgICAgICJFeGVjdXRpb24gQ2hhcmFjdGVyaXN0aWNzIG9mIFByb2dyYW1zIGluIGEgUGFnZS1Pbi1EZW1hbmQgU3lzdGVtIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE3IiwKICBudW1iZXIgPSAgICAgICAiNCIsCiAgcGFnZXMgPSAgICAgICAgIjE5Mi0tMTk2IiwKICBtb250aCA9ICAgICAgICBhcHIsCiAgeWVhciA9ICAgICAgICAgIjE5NzQiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiRGF0YSBhcmUgcHJlc2VudGVkIHdoaWNoIHNob3cgdGhlIGV4ZWN1dGlvbiBjaGFyYWN0ZXJpc3RpY3Mgb2YgdHdvIHR5cGVzIG9mIGNvbW1vbmx5IHVzZWQgcHJvZ3JhbXMgaW4gYSBsYXJnZS1zY2FsZSwgdGltZS1zaGFyZWQgY29tcHV0ZXIgc3lzdGVtLiBBIHNvZnR3YXJlIG1vbml0b3JpbmcgZmFjaWxpdHkgYnVpbHQgaW50byB0aGUgc3VwZXJ2aXNvciB3YXMgdXNlZCBmb3IgZGF0YSBjb2xsZWN0aW9uIGR1cmluZyBub3JtYWwgc3lzdGVtIG9wZXJhdGlvbi4gVGhlc2UgZGF0YSB3ZXJlIGFuYWx5emVkLCBhbmQgcmVzdWx0cyBvZiB0aGlzIGFuYWx5c2lzIGFyZSBwcmVzZW50ZWQgZm9yIGEgRk9SVFJBTiBjb21waWxlciBhbmQgYW4gaW50ZXJhY3RpdmUgbGluZSBmaWxlIGVkaXRvci4gUHJvYmFiaWxpdHkgZGlzdHJpYnV0aW9uIGZ1bmN0aW9ucyBhbmQgb3RoZXIgZGF0YSBhcmUgZ2l2ZW4gZm9yIHN1Y2ggdGhpbmdzIGFzIENQVSBpbnRlcnZhbHMsIEkvTyBpbnRlcnZhbHMsIGFuZCB0aGUgbnVtYmVyIG9mIHN1Y2ggaW50ZXJ2YWxzIGR1cmluZyBleGVjdXRpb24uIEVtcGlyaWNhbCBkaXN0cmlidXRpb25zIGFyZSBjb21wYXJlZCB3aXRoIHNpbXBsZSB0aGVvcmV0aWNhbCBkaXN0cmlidXRpb25zIChleHBvbmVudGlhbCwgaHlwZXJleHBvbmVudGlhbCwgYW5kIGdlb21ldHJpYykuIE90aGVyIGRhdGEgc2hvdyBwYWdpbmcgY2hhcmFjdGVyaXN0aWNzIG9mIHRhc2tzIGFzIGEgZnVuY3Rpb24gb2YgdGhlIG51bWJlciBvZiBwYWdlcyB0aG9zZSB0YXNrcyBoYXZlIGluIGNvcmUuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKTsgQzYxNTBDIChDb21waWxlcnMsIGludGVycHJldGVycyBhbmQgb3RoZXIgcHJvY2Vzc29ycyk7IEM2MTUwRyAoRGlhZ25vc3RpYywgdGVzdGluZywgZGVidWdnaW5nIGFuZCBldmFsdWF0aW5nIHN5c3RlbXMpOyBDNjE1MEogKE9wZXJhdGluZyBzeXN0ZW1zKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gTWljaGlnYW4sIEFubiBBcmJvciwgTUksIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjaGFyYWN0ZXJpc3RpY3M7IGNvbXBpbGVyIGV4ZWN1dGlvbiBiZWhhdmlvdXI7IGNvbXB1dGVyIG1ldGF0aGVvcnk7IGNvbXB1dGVyIHRlc3Rpbmc7IENQVSBpbnRlcnZhbHM7IGRlbWFuZCBwYWdpbmc7IGVkaXRvcjsgZXhlY3V0aW9uIGJlaGF2aW91cjsgRm9ydHJhbiBjb21waWxlcjsgSS9PIGludGVydmFsczsgaW50ZXJhY3RpdmUgbGluZSBmaWxlOyBsYXJnZSBzY2FsZSwgdGltZSBzaGFyZWQgY29tcHV0ZXIgc3lzdGVtOyBtb25pdG9yaW5nIGZhY2lsaXR5OyBwYWdlIG9uIGRlbWFuZCBzeXN0ZW07IHBhZ2luZyBjaGFyYWN0ZXJpc3RpY3M7IHByb2JhYmlsaXR5IGRpc3RyaWJ1dGlvbiBmdW5jdGlvbnM7IHByb2dyYW0gYmVoYXZpb3VyOyBwcm9ncmFtIGV4ZWN1dGlvbjsgc29mdHdhcmU7IHN1cGVydmlzb3J5IGFuZCBleGVjdXRpdmUgcHJvZ3JhbXM7IHZpcnR1YWwgbWVtb3J5OyB2aXJ0dWFsIHN0b3JhZ2UiLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle1NtaXRoOjE5NzQ6TENFLAogIGF1dGhvciA9ICAgICAgICJHcmFoYW0gU21pdGggYW5kIElhbiBNLiBTZWZ0b24iLAogIHRpdGxlID0gICAgICAgICJPbiB7TGlvbnN9JyBDb3VudGVyIEV4YW1wbGUgZm9yIHtHb3RsaWVifSdzIE1ldGhvZCBmb3IgdGhlIENvbnN0cnVjdGlvbiBvZiBTY2hvb2wgVGltZXRhYmxlcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNyIsCiAgbnVtYmVyID0gICAgICAgIjQiLAogIHBhZ2VzID0gICAgICAgICIxOTYtLTE5NyIsCiAgbW9udGggPSAgICAgICAgYXByLAogIHllYXIgPSAgICAgICAgICIxOTc0IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlRoZSB0aW1ldGFibGUgcHJvYmxlbSBpcyBhbiBlc3NlbnRpYWxseSBkaXNjcmV0ZSBwcm9ibGVtLiBBbHRob3VnaCB0aGUgZGlzY3JldGUgcHJvYmxlbSBtYXkgaGF2ZSBubyBmZWFzaWJsZSBzb2x1dGlvbiwgdGhlcmUgbWF5IGV4aXN0IGEgc29sdXRpb24gdG8gdGhlIGVxdWl2YWxlbnQgY29udGludW91cyBwcm9ibGVtLiBBbiBleGFtcGxlIGlzIGdpdmVuLCBmb3Igd2hpY2ggdGhlIG5vbmRpc2NyZXRlIHNvbHV0aW9uIGNhbiBiZSBpbnRlcnByZXRlZCBhcyBhIHNldCBvZiB0aW1ldGFibGVzLCBkaWZmZXJpbmcgZnJvbSB3ZWVrIHRvIHdlZWssIHdoaWNoIHRvZ2V0aGVyIHNhdGlzZnkgdGhlIGxvbmctdGVybSByZXF1aXJlbWVudHMgb2YgdGhlIHRpbWV0YWJsZSBwcm9ibGVtLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM3MTEwIChFZHVjYXRpb25hbCBhZG1pbmlzdHJhdGlvbik7IEM3ODkwIChPdGhlciBzcGVjaWFsIGFwcGxpY2F0aW9ucyBvZiBjb21wdXRpbmcpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI5MjEiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBOZXcgU291dGggV2FsZXMsIEtlbnNpbmd0b24sIE5TVywgQXVzdHJhbGlhIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbWJpbmF0b3JpYWw7IGNvbWJpbmF0b3JpYWwgbWF0aGVtYXRpY3M7IGRpc2NyZXRlIHByb2JsZW07IGVkdWNhdGlvbmFsIGFkbWluaXN0cmF0aXZlIGRhdGE7IEdvdGxpZWIncyBtZXRob2Q7IG1hdGhlbWF0aWNhbCBwcm9ncmFtbWluZzsgbXVsdGlpbmRleCBwcm9ibGVtOyBwcm9jZXNzaW5nOyBzY2hlZHVsZTsgc2NoZWR1bGluZzsgc2Nob29sIHRpbWV0YWJsZXM7IHRpbWV0YWJsZSIsCiAgdHJlYXRtZW50ID0gICAgIkEgQXBwbGljYXRpb247IFQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7TGluZHN0cm9tOjE5NzQ6Q0xTLAogIGF1dGhvciA9ICAgICAgICJHYXJ5IExpbmRzdHJvbSIsCiAgdGl0bGUgPSAgICAgICAgIkNvcHlpbmcgTGlzdCBTdHJ1Y3R1cmVzIFVzaW5nIEJvdW5kZWQgV29ya3NwYWNlIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE3IiwKICBudW1iZXIgPSAgICAgICAiNCIsCiAgcGFnZXMgPSAgICAgICAgIjE5OC0tMjAyIiwKICBtb250aCA9ICAgICAgICBhcHIsCiAgeWVhciA9ICAgICAgICAgIjE5NzQiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0NvbXBpbGVyL2dhcmJhZ2UuY29sbGVjdGlvbi5iaWIiLAogIGFic3RyYWN0ID0gICAgICJUd28gbmV3IGFsZ29yaXRobXMgYXJlIHByZXNlbnRlZCBmb3IgbGlzdCBzdHJ1Y3R1cmUgY29weWluZyB1c2luZyBib3VuZGVkIHdvcmtzcGFjZS4gVGhlIGZpcnN0LCBvZiBwcmltYXJpbHkgdGhlb3JldGljYWwgaW50ZXJlc3QsIHNob3dzIHRoYXQgd2l0aG91dCBjZWxsIHRhZyBiaXRzIHRoZSB0YXNrIGNhbiBiZSBwZXJmb3JtZWQgaW4gdGltZSBuKioyLiBUaGUgc2Vjb25kIGFsZ29yaXRobSwgYXNzdW1pbmcgb25lIHRhZyBiaXQgaW4gZWFjaCBjZWxsLCBkZWxpdmVycyBhdHRyYWN0aXZlIHByYWN0aWNhbCBzcGVlZC4gQW55IG5vbmN5Y2xpYyBzdHJ1Y3R1cmUgaXMgY29waWVkIGluIGxpbmVhciBzcGVlZCwgd2hpbGUgY3ljbGljIHN0cnVjdHVyZXMgYXJlIGNvcGllZCBpbiBhdmVyYWdlIHRpbWUgbGVzcyB0aGFuIG4gbG9nIG4uIE5vIGZvcmVrbm93bGVkZ2Ugb2YgY3ljbGUgYWJzZW5jZSBpcyBuZWNlc3NhcnkgdG8gYWNoaWV2ZSBsaW5lYXIgc3BlZWQuIEEgdmFyaWF0aW9uIG9mIHRoZSBzZWNvbmQgYWxnb3JpdGhtIHNvbHZlcyBhbiBvcGVuIHByb2JsZW0gY29uY2VybmluZyBsaXN0IHN0cnVjdHVyZSBtYXJraW5nLiBUaGF0IHJlc3VsdCBkZW1vbnN0cmF0ZXMgdGhhdCBtYXJraW5nIGNhbiBiZSBkb25lIGluIGF2ZXJhZ2UgdGltZSBuIGxvZyBuIHdpdGhvdXQgdGhlIGFpZCBvZiBzdXBwbGVtZW50YWwgdGFnIGJpdHMgb3Igc3RhY2tzLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbik7IEM2MTMwIChEYXRhIGhhbmRsaW5nIHRlY2huaXF1ZXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBQaXR0c2J1cmdoLCBQQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFsZ29yaXRobXM7IGJvdW5kZWQgd29ya3NwYWNlOyBjb21wbGV4aXR5OyBjb21wdXRlciBwcm9ncmFtbWluZzsgY29weWluZyBsaXN0IHN0cnVjdHVyZXM7IGN5Y2xpYzsgZGF0YSBzdHJ1Y3R1cmVzOyBsaXN0OyBsaXN0IHByb2Nlc3Npbmc7IGxpc3Qgc3RydWN0dXJlIG1hcmtpbmc7IG5vbmN5Y2xpYyBzdHJ1Y3R1cmU7IG9uZSB0YWcgYml0OyBzcGFjZTsgc3RydWN0dXJlIGNvcHlpbmc7IHN0cnVjdHVyZXMiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0V2ZW46MTk3NDpQVFMsCiAgYXV0aG9yID0gICAgICAgIlNoaW1vbiBFdmVuIiwKICB0aXRsZSA9ICAgICAgICAiUGFyYWxsZWxpc20gaW4gVGFwZS1Tb3J0aW5nIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE3IiwKICBudW1iZXIgPSAgICAgICAiNCIsCiAgcGFnZXMgPSAgICAgICAgIjIwMi0tMjA0IiwKICBtb250aCA9ICAgICAgICBhcHIsCiAgeWVhciA9ICAgICAgICAgIjE5NzQiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L1BhcmFsbGVsL011bHRpLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIlR3byBtZXRob2RzIGZvciBlbXBsb3lpbmcgcGFyYWxsZWxpc20gaW4gdGFwZS1zb3J0aW5nIGFyZSBwcmVzZW50ZWQuIE1ldGhvZCBBIGlzIHRoZSBuYXR1cmFsIHdheSB0byB1c2UgcGFyYWxsZWxpc20uIE1ldGhvZCBCIGlzIG5ldy4gQm90aCBhcHByb3hpbWF0ZWx5IGFjaGlldmUgdGhlIGdvYWwgb2YgcmVkdWNpbmcgdGhlIHByb2Nlc3NpbmcgdGltZSBieSBhIGRpdmlzb3Igd2hpY2ggaXMgdGhlIG51bWJlciBvZiBwcm9jZXNzb3JzLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTMwIChEYXRhIGhhbmRsaW5nIHRlY2huaXF1ZXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJXZWl6bWFubiBJbnN0LiBTY2kuLCBSZWhvdm90LCBJc3JhZWwiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgc3lzdGVtcyBwcm9ncmFtbWluZyIsCiAga2V5d29yZHMgPSAgICAgImV4dGVybmFsIHNvcnRpbmc7IHBhcmFsbGVsIHByb2Nlc3Npbmc7IHBhcmFsbGVsaXNtOyBxdWV1ZXM7IHJlZHVjaW5nIHRoZSBwcm9jZXNzaW5nIHRpbWU7IHNvcnRpbmc7IHN0YWNrczsgdGFwZSBzb3J0aW5nIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtMdWNhczoxOTc0OlNDVSwKICBhdXRob3IgPSAgICAgICAiSC4gQy4ge0x1Y2FzLCBKci59IGFuZCBELiBCLiBNb250Z29tZXJ5IGFuZCBKLiBDLiBMYXJyZWNoZSIsCiAgdGl0bGUgPSAgICAgICAgIkEgc3R1ZHkgb2YgY29tcHV0ZXIgdXNlIGluIGEgZ3JhZHVhdGUgc2Nob29sIG9mIGJ1c2luZXNzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE3IiwKICBudW1iZXIgPSAgICAgICAiNCIsCiAgcGFnZXMgPSAgICAgICAgIjIwNS0tMjA2IiwKICBtb250aCA9ICAgICAgICBhcHIsCiAgeWVhciA9ICAgICAgICAgIjE5NzQiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzAyMjAgKENvbXB1dGluZyBlZHVjYXRpb24gYW5kIHRyYWluaW5nKTsgQzcxMDAgKEJ1c2luZXNzIGFuZCBhZG1pbmlzdHJhdGlvbikiLAogIGNvcnBzb3VyY2UgPSAgICJTdGFuZm9yZCBVbml2LiwgQ0EsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImFjY291bnRpbmcgcmVjb3JkczsgY29tbWVyY2U7IGNvbXB1dGVyIGFpZGVkIGluc3RydWN0aW9uOyBjb21wdXRlciB1c2U7IGN1bXVsYXRpdmU7IGN1cnJpY3VsdW07IGVkdWNhdGlvbjsgZ2VuZXJhbCBwcm9ibGVtIHNvbHZpbmcgdG9vbDsgZ3JhZHVhdGUgc2Nob29sIG9mIGJ1c2luZXNzOyBwcm9jZXNzIG1vZGVsOyBxdWVzdGlvbm5haXJlczsgcmVzZWFyY2giLAogIHRyZWF0bWVudCA9ICAgICJHIEdlbmVyYWwgUmV2aWV3IiwKfQoKQEFydGljbGV7RnJlZW1hbjoxOTc0OkdFUCwKICBhdXRob3IgPSAgICAgICAiUGV0ZXIgRnJlZW1hbiBhbmQgTWljaGFlbCBBLiBNYWxjb2xtIGFuZCBXaWxsaWFtIEguIFBheW5lIiwKICB0aXRsZSA9ICAgICAgICAiR3JhZHVhdGUgRWR1Y2F0aW9uOiBUaGUge1BoLkQufSBHbHV0OiBSZXNwb25zZSBhbmQgUmVidXR0YWwiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTciLAogIG51bWJlciA9ICAgICAgICI0IiwKICBwYWdlcyA9ICAgICAgICAiMjA2LS0yMDciLAogIG1vbnRoID0gICAgICAgIGFwciwKICB5ZWFyID0gICAgICAgICAiMTk3NCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIG5vdGUgPSAgICAgICAgICJTZWUgXGNpdGV7UGF5bmU6MTk3MzpHRVB9LiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMwMzEwIChFRFAgbWFuYWdlbWVudCkiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBDYWxpZm9ybmlhLCBJcnZpbmUsIENBLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJhY2NyZWRpdGF0aW9uOyBhZHZhbmNlZCBkZWdyZWVzOyBlZHVjYXRpb247IGdyYWR1YXRlIGVkdWNhdGlvbjsgUGguRC47IFBoLkQuIHByb2R1Y3Rpb247IHJlc3BvbnNlIGFuZCByZWJ1dHRlZDsgd2hhdCBraW5kIiwKICB0cmVhdG1lbnQgPSAgICAiRyBHZW5lcmFsIFJldmlldyIsCn0KCkBBcnRpY2xle1N0ZXJsaW5nOjE5NzQ6SVRNLAogIGF1dGhvciA9ICAgICAgICJULiBELiBTdGVybGluZyBhbmQgUy4gVi4gUG9sbGFjayIsCiAgdGl0bGUgPSAgICAgICAgIklkZWFsIHRlYWNoaW5nIG1hY2hpbmVzIC0tLSBhIHNvbHV0aW9uIHRvIHRoZSBwZWRhZ29naWMgbGFuZ3VhZ2UgcHJvYmxlbSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNyIsCiAgbnVtYmVyID0gICAgICAgIjQiLAogIHBhZ2VzID0gICAgICAgICIyMDctLTIwOCIsCiAgbW9udGggPSAgICAgICAgYXByLAogIHllYXIgPSAgICAgICAgICIxOTc0IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMwMjIwIChDb21wdXRpbmcgZWR1Y2F0aW9uIGFuZCB0cmFpbmluZyk7IEM2MTQwRCAoSGlnaCBsZXZlbCBsYW5ndWFnZXMpIiwKICBjb3Jwc291cmNlID0gICAiU2ltb24gRnJhc2VyIFVuaXYuLCBCdXJuYWJ5LCBCQywgQ2FuYWRhIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXI7IGVkdWNhdGlvbjsgaWRlYWwgdGVhY2hpbmcgbWFjaGluZTsgcGVkYWdvZ2ljIGxhbmd1YWdlIHByb2JsZW07IHByb2JsZW0gb3JpZW50ZWQgbGFuZ3VhZ2VzOyBzaW11bGF0ZWQ7IHRlYWNoaW5nIG1hY2hpbmVzIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgRyBHZW5lcmFsIFJldmlldzsgUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtBYnJhaGFtczoxOTc0OlNSTCwKICBhdXRob3IgPSAgICAgICAiUC4gVy4gQWJyYWhhbXMiLAogIHRpdGxlID0gICAgICAgICJTb21lIHJlbWFya3Mgb24gbG9va3VwIG9mIHN0cnVjdHVyZWQgdmFyaWFibGVzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE3IiwKICBudW1iZXIgPSAgICAgICAiNCIsCiAgcGFnZXMgPSAgICAgICAgIjIwOS0tMjEwIiwKICBtb250aCA9ICAgICAgICBhcHIsCiAgeWVhciA9ICAgICAgICAgIjE5NzQiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKTsgQzYxMzAgKERhdGEgaGFuZGxpbmcgdGVjaG5pcXVlcykiLAogIGNvcnBzb3VyY2UgPSAgICJOZXcgWW9yayBVbml2LiwgTlksIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImNvbXBpbGVyczsgZGF0YSBzdHJ1Y3R1cmVzOyBkZXRlcm1pbmlzdGljOyBmaW5pdGUgc3RhdGUgbWFjaGluZTsgbG9va3VwIG9mIHN0cnVjdHVyZWQgdmFyaWFibGVzOyBxdWFsaWZpZWQgcmVmZXJlbmNlczsgc2VxdWVuY2Ugb2YgaWRlbnRpZmllcnM7IHN0cnVjdHVyZWQ7IHN5bWJvbCB0YWJsZTsgdGFibGUgbG9va3VwOyB2YXJpYWJsZXMiLAogIHRyZWF0bWVudCA9ICAgICJHIEdlbmVyYWwgUmV2aWV3OyBQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0JhbGZvdXI6MTk3NDpBQU0sCiAgYXV0aG9yID0gICAgICAgIkEuIEJhbGZvdXIiLAogIHRpdGxlID0gICAgICAgICJBbiBhbHRlcm5hdGl2ZSBhcHByb2FjaCB0byBtdXR1YWwgcmVjdXJzaW9uIHtpbiBBbGdvbH0gNjAgdXNpbmcgcmVzdHJpY3RlZCBjb21waWxlcnMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTciLAogIG51bWJlciA9ICAgICAgICI0IiwKICBwYWdlcyA9ICAgICAgICAiMjEwLS0yMTAiLAogIG1vbnRoID0gICAgICAgIGFwciwKICB5ZWFyID0gICAgICAgICAiMTk3NCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjE0MEQgKEhpZ2ggbGV2ZWwgbGFuZ3VhZ2VzKTsgQzYxNTBDIChDb21waWxlcnMsIGludGVycHJldGVycyBhbmQgb3RoZXIgcHJvY2Vzc29ycykiLAogIGNvcnBzb3VyY2UgPSAgICJIZXJpb3QtV2F0dCBVbml2LiwgRWRpbmJ1cmdoLCBVSyIsCiAga2V5d29yZHMgPSAgICAgIkFMR09MOyBBbGdvbCA2MDsgY29tcGlsZXI7IG11dHVhbCByZWN1cnNpb247IHByb2dyYW0gY29tcGlsZXJzOyByZXN0cmljdGVkIGNvbXBpbGVyczsgcmVzdHJpY3Rpb25zIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtMZWU6MTk3NDpJUFMsCiAgYXV0aG9yID0gICAgICAgIlIuIEMuIFQuIExlZSBhbmQgQy4gTC4gQ2hhbmcgYW5kIFIuIEouIFdhbGRpbmdlciIsCiAgdGl0bGUgPSAgICAgICAgIkFuIEltcHJvdmVkIFByb2dyYW0tU3ludGhlc2l6aW5nIEFsZ29yaXRobSBhbmQgaXRzIENvcnJlY3RuZXNzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE3IiwKICBudW1iZXIgPSAgICAgICAiNCIsCiAgcGFnZXMgPSAgICAgICAgIjIxMS0tMjE3IiwKICBtb250aCA9ICAgICAgICBhcHIsCiAgeWVhciA9ICAgICAgICAgIjE5NzQiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2OEEwNSAoNjhBNDApIiwKICBNUm51bWJlciA9ICAgICAiNDkgMTAxNzUiLAogIG1ycmV2aWV3ZXIgPSAgICJTLiBBbWFyZWwiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiQW4gaW1wcm92ZWQgcHJvZ3JhbS1zeW50aGVzaXppbmcgYWxnb3JpdGhtIGJhc2VkIG9uIHRoZSBhbGdvcml0aG0gcHJvcG9zZWQgYnkgV2FsZGluZ2VyIGFuZCBMZWUgaW4gMTk2OSBpcyBnaXZlbi4gSW4gdGhlIG9sZCBhbGdvcml0aG0sIHRoZSBwcm9ncmFtLXN5bnRoZXNpemluZyBwcm9ibGVtIGlzIHRyYW5zbGF0ZWQgaW50byBhIHRoZW9yZW0tcHJvdmluZyBwcm9ibGVtLCBhbmQgYSBwcm9ncmFtIGlzIG9idGFpbmVkIGJ5IGFuYWx5emluZyBhIHByb29mLiBccGFyIEZvciB0aGUgaW1wcm92ZWQgYWxnb3JpdGhtLCB0aGUgYW5hbHlzaXMgaXMgbm90IG5lY2Vzc2FyeSwgYW5kIGEgcHJvZ3JhbSBpcyBvYnRhaW5lZCBhcyBzb29uIGFzIHRoZSBwcm9vZiBpcyBjb21wbGV0ZWQuIFRoaXMgaXMgYWNoaWV2ZWQgYnkgdXNpbmcgYSBtb2RpZmllZCB2YXJpYWJsZSB0cmFjaW5nIG1lY2hhbmlzbSBpbnZlbnRlZCBieSBHcmVlbiBpbiAxOTY5LiBUaGUgY29ycmVjdG5lc3Mgb2YgdGhlIGltcHJvdmVkIGFsZ29yaXRobSBpcyBhbHNvIHByb3ZlZDsgaS5lLiB0aGUgcHJvZ3JhbSB0aHVzIG9idGFpbmVkIGFsd2F5cyBzYXRpc2ZpZXMgdGhlIHNwZWNpZmljYXRpb24uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQyNDAgKFByb2dyYW1taW5nIGFuZCBhbGdvcml0aG0gdGhlb3J5KSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiTmF0LiBJbnN0LiBIZWFsdGgsIEJldGhlc2RhLCBNRCwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIG1ldGF0aGVvcnk7IGNvbnNlcXVlbmNlIGZpbmRpbmc7IHByaW1pdGl2ZSByZXNvbHV0aW9uczsgcHJvZ3JhbS1zeW50aGVzaXppbmcgYWxnb3JpdGhtczsgdGhlb3JlbSBwcm92aW5nIiwKICBrZXl3b3JkcyA9ICAgICAiY29uc2VxdWVuY2U7IGNvcnJlY3RuZXNzOyBmaW5kaW5nOyBtb2RpZmllZCB2YXJpYWJsZSB0cmFjaW5nIG1lY2hhbmlzbTsgcHJpbWl0aXZlIHJlc29sdXRpb25zOyBwcm9ibGVtOyBwcm9ncmFtIHN5bnRoZXNpemluZyBhbGdvcml0aG07IHByb2dyYW1taW5nIHRoZW9yeTsgdGhlb3JlbSBwcm92aW5nIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtDbGluZToxOTc0OlNQViwKICBhdXRob3IgPSAgICAgICAiQS4gSy4gQ2xpbmUiLAogIHRpdGxlID0gICAgICAgICJTY2FsYXItIGFuZCBwbGFuYXItdmFsdWVkIGN1cnZlIGZpdHRpbmcgdXNpbmcgc3BsaW5lcyB1bmRlciB0ZW5zaW9uLiB7SX0iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTciLAogIG51bWJlciA9ICAgICAgICI0IiwKICBwYWdlcyA9ICAgICAgICAiMjE4LS0yMjAiLAogIG1vbnRoID0gICAgICAgIGFwciwKICB5ZWFyID0gICAgICAgICAiMTk3NCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY1RDA1IiwKICBNUm51bWJlciA9ICAgICAiNDkgODI3NCIsCiAgbXJyZXZpZXdlciA9ICAgIkouIFcuIEplcm9tZSIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGlzdHJpYnV0ZWQvUUxELzE5NzQuYmliOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0dyYXBoaWNzL3NpZ2dyYXBoL3ByZTc1LmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIlRoZSBzcGxpbmUgdW5kZXIgdGVuc2lvbiB3YXMgaW50cm9kdWNlZCBieSBTY2h3ZWlrZXJ0IGluIGFuIGF0dGVtcHQgdG8gaW1pdGF0ZSBjdWJpYyBzcGxpbmVzIGJ1dCBhdm9pZCB0aGUgc3B1cmlvdXMgY3JpdGljYWwgcG9pbnRzIHRoZXkgaW5kdWNlLiBUaGUgZGVmaW5pbmcgZXF1YXRpb25zIGFyZSBwcmVzZW50ZWQgaGVyZSwgdG9nZXRoZXIgd2l0aCBhbiBlZmZpY2llbnQgbWV0aG9kIGZvciBkZXRlcm1pbmluZyB0aGUgbmVjZXNzYXJ5IHBhcmFtZXRlcnMgYW5kIGNvbXB1dGluZyB0aGUgcmVzdWx0YW50IHNwbGluZS4gVGhlIHN0YW5kYXJkIHNjYWxhci12YWx1ZWQgY3VydmUgZml0dGluZyBwcm9ibGVtIGlzIGRpc2N1c3NlZCwgYXMgd2VsbCBhcyB0aGUgZml0dGluZyBvZiBvcGVuIGFuZCBjbG9zZWQgY3VydmVzIGluIHRoZSBwbGFuZS4gVGhlIHVzZSBvZiB0aGVzZSBjdXJ2ZXMgYW5kIHRoZSBpbXBvcnRhbmNlIG9mIHRoZSB0ZW5zaW9uIGluIHRoZSBmaXR0aW5nIG9mIGNvbnRvdXIgbGluZXMgYXJlIG1lbnRpb25lZCBhcyBhcHBsaWNhdGlvbi4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJCMDI5MEYgKEludGVycG9sYXRpb24gYW5kIGZ1bmN0aW9uIGFwcHJveGltYXRpb24pOyBDNDEzMCAoSW50ZXJwb2xhdGlvbiBhbmQgZnVuY3Rpb24gYXBwcm94aW1hdGlvbikiLAogIGNsYXNzaWZpY2F0aW9uID0gIjkyMSIsCiAgY29ycHNvdXJjZSA9ICAgIk5hdC4gQ2VudGVyIEF0bW9zcGhlcmljIFJlcy4sIEJvdWxkZXIsIENPLCBVU0EiLAogIGNvdW50cnkgPSAgICAgICJVU0EiLAogIGRlc2NyaXB0b3JzID0gICJSZWFsaXphdGlvbjsgcG9seW5vbWlhbDsgYXBwcm94aW1hdGlvbjsgbWV0aG9kOyBpbnRlcnBvbGF0aW9uOyBGT1JUUkFOOyBncmFwaGljczsgaXRlcmF0aXZlIG1ldGhvZDsgaW5mb3JtYXRpb24gc3lzdGVtOyBzcGxpbmU7IGN1cnZlIGZpdHRpbmc7IiwKICBlbnVtID0gICAgICAgICAiNTk3IiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbnRvdXJpbmc7IGN1YmljIHNwbGluZXM7IGN1cnZlIGZpdHRpbmc7IGN1cnZlcyBpbiB0aGUgcGxhbmU7IGZpdHRpbmc7IGZ1bmN0aW9uIGFwcHJveGltYXRpb247IGludGVycG9sYXRpb247IHNjYWxhciB2YWx1ZWQgY3VydmU7IHNwbGluZXMgKG1hdGhlbWF0aWNzKTsgc3BsaW5lcyB1bmRlciB0ZW5zaW9uIiwKICBrZXl3b3JkcyA9ICAgICAiY29udG91cmluZzsgY3VydmUgZml0dGluZzsgaW50ZXJwb2xhdGlvbjsgbWF0aGVtYXRpY2FsIHRlY2huaXF1ZXM7IHNwbGluZXMiLAogIGxhbmd1YWdlID0gICAgICJFbmdsaXNoIiwKICByZWZlcmVuY2VzID0gICAiMyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7Q2xpbmU6MTk3NDpBQVMsCiAgYXV0aG9yID0gICAgICAgIkEuIEsuIENsaW5lIiwKICB0aXRsZSA9ICAgICAgICAie0FDTX0gQWxnb3JpdGhtIDQ3NjogU2l4IFN1YnByb2dyYW1zIGZvciBDdXJ2ZSBGaXR0aW5nIFVzaW5nIFNwbGluZXMgVW5kZXIgVGVuc2lvbiIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNyIsCiAgbnVtYmVyID0gICAgICAgIjQiLAogIHBhZ2VzID0gICAgICAgICIyMjAtLTIyMyAob3IgMjIwLS0yMjE/PykiLAogIG1vbnRoID0gICAgICAgIGFwciwKICB5ZWFyID0gICAgICAgICAiMTk3NCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJCMDI5MEYgKEludGVycG9sYXRpb24gYW5kIGZ1bmN0aW9uIGFwcHJveGltYXRpb24pOyBDNDEzMCAoSW50ZXJwb2xhdGlvbiBhbmQgZnVuY3Rpb24gYXBwcm94aW1hdGlvbik7IEM3MzEwIChNYXRoZW1hdGljcyBjb21wdXRpbmcpIiwKICBjb3Jwc291cmNlID0gICAiTmF0LiBDZW50ZXIgQXRtb3NwaGVyaWMgUmVzLiwgQm91bGRlciwgQ08sIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImNvbnRvdXJpbmc7IGN1cnZlIGZpdHRpbmc7IEZPUlRSQU47IGZ1bmN0aW9uIGFwcHJveGltYXRpb247IGludGVycG9sYXRpb247IHNwbGluZXMgKG1hdGhlbWF0aWNzKTsgc3BsaW5lcyB1bmRlciB0ZW5zaW9uOyBzdWJwcm9ncmFtczsgc3Vicm91dGluZXMiLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0VocmxpY2g6MTk3NDpBQUcsCiAgYXV0aG9yID0gICAgICAgIkcuIEVocmxpY2giLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gNDc3OiBHZW5lcmF0b3Igb2YgU2V0LVBhcnRpdGlvbnMgdG8gRXhhY3RseSAke1J9JCBTdWJzZXRzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE3IiwKICBudW1iZXIgPSAgICAgICAiNCIsCiAgcGFnZXMgPSAgICAgICAgIjIyNC0tMjI1IiwKICBtb250aCA9ICAgICAgICBhcHIsCiAgeWVhciA9ICAgICAgICAgIjE5NzQiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjAyNTAgKENvbWJpbmF0b3JpYWwgbWF0aGVtYXRpY3MpOyBDMTE2MCAoQ29tYmluYXRvcmlhbCBtYXRoZW1hdGljcyk7IEM3MzEwIChNYXRoZW1hdGljcyBjb21wdXRpbmcpIiwKICBjb3Jwc291cmNlID0gICAiV2Vpem1hbm4gSW5zdC4gU2NpLiwgUmVob3ZvdCwgSXNyYWVsIiwKICBrZXl3b3JkcyA9ICAgICAibXV0dWFsbHkgZXhjbHVzaXZlIHN1YnNldHM7IFBBUlRFWEFDVDsgcGFydGl0aW9uczsgcGVybXV0YXRpb25zOyBzZXQgdGhlb3J5OyBzdWJyb3V0aW5lczsgc3Vic2V0IGdlbmVyYXRpb247IHN1YnNldHMiLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0VpbmFyc3NvbjoxOTc0OlNURSwKICBhdXRob3IgPSAgICAgICAiQi4gRWluYXJzc29uIiwKICB0aXRsZSA9ICAgICAgICAiU29sdXRpb24gb2YgdGhlIHRyYW5zY2VuZGVudGFsIGVxdWF0aW9uIHdlXHNsYXNoIHN1cCB3XHNsYXNoID14IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE3IiwKICBudW1iZXIgPSAgICAgICAiNCIsCiAgcGFnZXMgPSAgICAgICAgIjIyNS0tMjI1IiwKICBtb250aCA9ICAgICAgICBhcHIsCiAgeWVhciA9ICAgICAgICAgIjE5NzQiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjAyOTBGIChJbnRlcnBvbGF0aW9uIGFuZCBmdW5jdGlvbiBhcHByb3hpbWF0aW9uKTsgQzQxMzAgKEludGVycG9sYXRpb24gYW5kIGZ1bmN0aW9uIGFwcHJveGltYXRpb24pOyBDNzMxMCAoTWF0aGVtYXRpY3MgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIlJlcy4gSW5zdC4gTmF0LiBEZWZlbnNlLCBUdW1iYSwgU3dlZGVuIiwKICBrZXl3b3JkcyA9ICAgICAiZnVuY3Rpb24gZXZhbHVhdGlvbjsgc3Vicm91dGluZXM7IHRyYW5zY2VuZGVudGFsIGVxdWF0aW9uOyB2aW9sYXRpb24gb2YgdGhlIEZvcnRyYW4gc3RhbmRhcmQiLAogIHRyZWF0bWVudCA9ICAgICJHIEdlbmVyYWwgUmV2aWV3OyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle1NoYXc6MTk3NDpSQ0MsCiAgYXV0aG9yID0gICAgICAgIk1hcnkgU2hhdyIsCiAgdGl0bGUgPSAgICAgICAgIlJlZHVjdGlvbiBvZiBDb21waWxhdGlvbiBDb3N0cyBUaHJvdWdoIExhbmd1YWdlIENvbnRyYWN0aW9uIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE3IiwKICBudW1iZXIgPSAgICAgICAiNSIsCiAgcGFnZXMgPSAgICAgICAgIjI0NS0tMjUwIiwKICBtb250aCA9ICAgICAgICBtYXksCiAgeWVhciA9ICAgICAgICAgIjE5NzQiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiUHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzIHRhaWxvcmVkIHRvIHBhcnRpY3VsYXIgZ3JvdXBzIG9mIHVzZXJzIGNhbiBvZnRlbiBiZSBjb25zdHJ1Y3RlZCBieSByZW1vdmluZyB1bndhbnRlZCBmZWF0dXJlcyBmcm9tIGEgZ2VuZXJhbCBwdXJwb3NlIGxhbmd1YWdlLiBUaGlzIHBhcGVyIGRlc2NyaWJlcyB0aGUgdXNlIG9mIHNpbXVsYXRpb24gdGVjaG5pcXVlcyB0byBwcmVkaWN0IHRoZSBzYXZpbmdzIGluIGNvbXBpbGF0aW9uIGNvc3QgYWNoaWV2YWJsZSBieSBzdWNoIGFuIGFwcHJvYWNoLiBUaGUgcmVzdWx0cyBzdWdnZXN0IGEgZnVuY3Rpb24gd2hpY2ggZGVzY3JpYmVzIHRoZSBlZmZlY3Qgb2YgY2hhbmdlcyBpbiB0aGUgcG93ZXIgb2YgYSBsYW5ndWFnZSBvbiB0aGUgY29tcGlsYXRpb24gY29zdCBvZiBhbiBhbGdvcml0aG0gZXhwcmVzc2VkIGluIHRoYXQgbGFuZ3VhZ2U6IHdoZW4gZmVhdHVyZXMgbm90IGFjdHVhbGx5IHVzZWQgYnkgdGhlIGFsZ29yaXRobSBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBsYW5ndWFnZSwgdGhlIGNvc3Qgb2YgY29tcGlsaW5nIHRoZSBhbGdvcml0aG0gZGVjcmVhc2VzIG1vZGVyYXRlbHksIGJ1dCB3aGVuIGZlYXR1cmVzIHRoYXQgYXJlIG5lZWRlZCBhcmUgcmVtb3ZlZCwgdGhlIGNvbXBpbGF0aW9uIGNvc3QgaW5jcmVhc2VzIHNoYXJwbHkuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxNDAgKFByb2dyYW1taW5nIGxhbmd1YWdlcyk7IEM2MTUwQyAoQ29tcGlsZXJzLCBpbnRlcnByZXRlcnMgYW5kIG90aGVyIHByb2Nlc3NvcnMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJDYXJuZWdpZS1NZWxsb24gVW5pdi4sIFBpdHRzYnVyZ2gsIFBBLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcGlsYXRpb24gY29zdHM7IGNvbXBpbGVyIGRlc2lnbjsgY29tcHV0YXRpb25hbCBjb21wbGV4aXR5OyBjb21wdXRlciBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IGRlc2lnbiBvZiBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IGdlbmVyYWwgcHVycG9zZSBsYW5ndWFnZTsgbGFuZ3VhZ2UgY29udHJhY3Rpb247IGxhbmd1YWdlczsgcHJvZ3JhbW1pbmc7IHByb2dyYW1taW5nIGxhbmd1YWdlczsgc2ltdWxhdGlvbiB0ZWNobmlxdWVzIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtXZWdicmVpdDoxOTc0OlREVCwKICBhdXRob3IgPSAgICAgICAiQmVuIFdlZ2JyZWl0IiwKICB0aXRsZSA9ICAgICAgICAiVGhlIHRyZWF0bWVudCBvZiBkYXRhIHR5cGVzIGluIHtFTDF9IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE3IiwKICBudW1iZXIgPSAgICAgICAiNSIsCiAgcGFnZXMgPSAgICAgICAgIjI1MS0tMjY0IiwKICBtb250aCA9ICAgICAgICBtYXksCiAgeWVhciA9ICAgICAgICAgIjE5NzQiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiSW4gY29uc3RydWN0aW5nIGEgZ2VuZXJhbCBwdXJwb3NlIHByb2dyYW1taW5nIGxhbmd1YWdlLCBhIGtleSBpc3N1ZSBpcyBwcm92aWRpbmcgYSBzdWZmaWNpZW50IHNldCBvZiBkYXRhIHR5cGVzIGFuZCBhc3NvY2lhdGVkIG9wZXJhdGlvbnMgaW4gYSBtYW5uZXIgdGhhdCBwZXJtaXRzIGJvdGggbmF0dXJhbCBwcm9ibGVtLW9yaWVudGVkIG5vdGF0aW9uIGFuZCBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24uIFRoZSBFTDEgbGFuZ3VhZ2UgY29udGFpbnMgYSBudW1iZXIgb2YgZmVhdHVyZXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIHNpbXVsdGFuZW91c2x5IHNhdGlzZnkgYm90aCByZXF1aXJlbWVudHMuIFRoZSByZXN1bHRpbmcgdHJlYXRtZW50IG9mIGRhdGEgdHlwZXMgaW5jbHVkZXMgcHJvdmlzaW9uIGZvciBwcm9ncmFtbWVyLWRlZmluZWQgZGF0YSB0eXBlcyBhbmQgZ2VuZXJpYyByb3V0aW5lcywgcHJvZ3JhbW1lciBjb250cm9sIG92ZXIgdHlwZSBjb252ZXJzaW9uLCBhbmQgdmVyeSBmbGV4aWJsZSBkYXRhIHR5cGUgYmVoYXZpb3IsIGluIGEgY29udGV4dCB0aGF0IGFsbG93cyBlZmZpY2llbnQgY29tcGlsZWQgY29kZSBhbmQgY29tcGFjdCBkYXRhIHJlcHJlc2VudGF0aW9uLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTMwIChEYXRhIGhhbmRsaW5nIHRlY2huaXF1ZXMpOyBDNjE0MEQgKEhpZ2ggbGV2ZWwgbGFuZ3VhZ2VzKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiSGFydmFyZCBVbml2LiwgQ2FtYnJpZGdlLCBNQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImJlaGF2aW91cjsgY29lcmNpb247IGNvbXBpbGF0aW9uOyBjb21wdXRlciBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IGRhdGEgZGVzY3JpcHRpb24gbGFuZ3VhZ2U7IGRhdGEgaGFuZGxpbmc7IGRhdGEgdHlwZSBkZWZpbml0aW9uOyBkYXRhIHR5cGVzOyBlZmZpY2llbnQgaW1wbGVtZW50YXRpb247IEVMMTsgZXh0ZW5zaWJsZTsgZmxleGlibGUgZGF0YSB0eXBlOyBnZW5lcmFsIHB1cnBvc2UgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2U7IGdlbmVyaWMgcm91dGluZXM7IGxhbmd1YWdlOyBsYW5ndWFnZXM7IG1vZGUgdW5pb25zOyBtb2RlczsgcHJvYmxlbSBvcmllbnRlZCBub3RhdGlvbjsgcHJvY2VkdXJlIG9yaWVudGVkIGxhbmd1YWdlczsgcHJvZ3JhbW1lciBjb250cm9sOyBwcm9ncmFtbWVyIGRlZmluZWQgZGF0YSB0eXBlczsgdHlwZSBjb252ZXJzaW9uIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtXYWduZXI6MTk3NDpPQ1IsCiAgYXV0aG9yID0gICAgICAgIlJvYmVydCBBLiBXYWduZXIiLAogIHRpdGxlID0gICAgICAgICJPcmRlci0kbiQgQ29ycmVjdGlvbiBmb3IgUmVndWxhciBMYW5ndWFnZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTciLAogIG51bWJlciA9ICAgICAgICI1IiwKICBwYWdlcyA9ICAgICAgICAiMjY1LS0yNjgiLAogIG1vbnRoID0gICAgICAgIG1heSwKICB5ZWFyID0gICAgICAgICAiMTk3NCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJBIG1ldGhvZCBpcyBwcmVzZW50ZWQgZm9yIGNhbGN1bGF0aW5nIGEgc3RyaW5nIEIsIGJlbG9uZ2luZyB0byBhIGdpdmVuIHJlZ3VsYXIgbGFuZ3VhZ2UgTCwgd2hpY2ggaXMgYGBuZWFyZXN0JycgKGluIG51bWJlciBvZiBlZGl0IG9wZXJhdGlvbnMpIHRvIGEgZ2l2ZW4gaW5wdXQgc3RyaW5nICRhJC4gJEIkIGlzIHZpZXdlZCBhcyBhIHJlYXNvbmFibGUgYGBjb3JyZWN0aW9uJycgZm9yIHRoZSBwb3NzaWJseSBlcnJvbmVvdXMgc3RyaW5nICRhJCwgd2hlcmUgYSB3YXMgb3JpZ2luYWxseSBpbnRlbmRlZCB0byBiZSBhIHN0cmluZyBvZiAkTCQuIFxwYXIgVGhlIGNhbGN1bGF0aW9uIG9mICRCJCBieSB0aGUgbWV0aG9kIHByZXNlbnRlZCByZXF1aXJlcyB0aW1lIHByb3BvcnRpb25hbCB0byAkfGF8JCwgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluICRhJC4gVGhlIG1ldGhvZCBzaG91bGQgZmluZCBhcHBsaWNhdGlvbnMgaW4gaW5mb3JtYXRpb24gcmV0cmlldmFsLCBhcnRpZmljaWFsIGludGVsbGlnZW5jZSwgYW5kIHNwZWxsaW5nIGNvcnJlY3Rpb24gc3lzdGVtcy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDIxMCAoRm9ybWFsIGxvZ2ljKTsgQzYxMzAgKERhdGEgaGFuZGxpbmcgdGVjaG5pcXVlcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlZhbmRlcmJpbHQgVW5pdi4sIE5hc2h2aWxsZSwgVE4sIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhcnRpZmljaWFsIGludGVsbGlnZW5jZTsgY29tcGlsZXIgZXJyb3IgcmVjb3Zlcnk7IGNvbXB1dGVyIHByb2dyYW1taW5nIGxhbmd1YWdlczsgY29udGV4dCBmcmVlIGxhbmd1YWdlczsgY29udGV4dC1mcmVlIGxhbmd1YWdlczsgY29ycmVjdGlvbjsgY29ycmVjdG9yOyBlZGl0IG9wZXJhdGlvbnM7IGVycm9yIGNvcnJlY3Rpb247IGVycm9yIGNvcnJlY3Rpb24gY29kZXM7IGVycm9yczsgZmluaXRlIHN0YXRlIGF1dG9tYXRhOyBpbmZvcm1hdGlvbjsgbm9uZGV0ZXJtaW5pc3RpYyBmaW5pdGUgc3RhdGUgYXV0b21hdGE7IG5vbmRldGVybWluaXN0aWMgZmluaXRlLXN0YXRlIGF1dG9tYXRhOyBvcmRlciAkbiQgY29ycmVjdGlvbjsgcmVndWxhciBldmVudHM7IHJlZ3VsYXIgbGFuZ3VhZ2VzOyByZXRyaWV2YWw7IHNwZWxsaW5nIGNvcnJlY3Rpb247IHN0cmluZyBiZXN0IG1hdGNoIHByb2JsZW0iLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle1RzYW86MTk3NDpEU0QsCiAgYXV0aG9yID0gICAgICAgIk5haSBLdWFuIFRzYW8iLAogIHRpdGxlID0gICAgICAgICJPbiB0aGUgRGlzdHJpYnV0aW9ucyBvZiBTaWduaWZpY2FudCBEaWdpdHMgYW5kIFJvdW5kb2ZmIEVycm9ycyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNyIsCiAgbnVtYmVyID0gICAgICAgIjUiLAogIHBhZ2VzID0gICAgICAgICIyNjktLTI3MSIsCiAgbW9udGggPSAgICAgICAgbWF5LAogIHllYXIgPSAgICAgICAgICIxOTc0IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjVHMDUiLAogIE1SbnVtYmVyID0gICAgICI0OSA2NTk1IiwKICBtcnJldmlld2VyID0gICAiTi4gTi4gQWJkZWxtYWxlayIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGdhcmJvLnV3YXNhLmZpOi9wYy9kb2Mtc29mdC9mcGJpYmxpby50eHQiLAogIGFic3RyYWN0ID0gICAgICJHZW5lcmFsaXplZCBsb2dhcml0aG1pYyBsYXcgaXMgZGVyaXZlZCBmb3IgdGhlIGRpc3RyaWJ1dGlvbiBvZiB0aGUgZmlyc3QgdCBzaWduaWZpY2FudCBkaWdpdHMgb2YgYSByYW5kb20gZGlnaXRhbCBpbnRlZ2VyLiBUaGlzIHJlc3VsdCBpcyB0aGVuIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBkaXN0cmlidXRpb24gb2YgdGhlIHJvdW5kb2ZmIGVycm9ycyBpbiBmbG9hdGluZy1wb2ludCBvcGVyYXRpb25zLCB3aGljaCBpcyBhIG1peHR1cmUgb2YgdW5pZm9ybSBhbmQgcmVjaXByb2NhbCBkaXN0cmlidXRpb25zLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM1MjMwIChEaWdpdGFsIGFyaXRobWV0aWMgbWV0aG9kcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjkyMSIsCiAgY29ycHNvdXJjZSA9ICAgIkFlcm9zcGFjZSBSZXMuIExhYnMuLCBXcmlnaHQtUGF0dGVyc29uIEFGQiwgT0gsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJkaWdpdGFsIGFyaXRobWV0aWM7IGRpZ2l0YWwgaW50ZWdlcjsgZGlzdHJpYnV0aW9uczsgZXJyb3IgYW5hbHlzaXM7IGZsb2F0aW5nIHBvaW50IG9wZXJhdGlvbnM7IGxvZ2FyaXRobWljIGxhdzsgbWF0aGVtYXRpY2FsIHRlY2huaXF1ZXM7IG1lYW4gdmFsdWU7IHJhbmRvbTsgcmVjaXByb2NhbDsgcm91bmRvZmYgZXJyb3JzOyBzaWduaWZpY2FudCBkaWdpdHM7IHVuaWZvcm0gZGlzdHJpYnV0aW9uOyB2YXJpYW5jZSIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7V3VuZGVybGljaDoxOTc0OkROVCwKICBhdXRob3IgPSAgICAgICAiTS4gQy4gV3VuZGVybGljaCBhbmQgSi4gTC4gU2VsZnJpZGdlIiwKICB0aXRsZSA9ICAgICAgICAiRGVzaWduIGZvciBhIE51bWJlciBUaGVvcnkgUGFja2FnZSB3aXRoIGFuIE9wdGltaXplZCBUcmlhbCBEaXZpc2lvbiBSb3V0aW5lIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE3IiwKICBudW1iZXIgPSAgICAgICAiNSIsCiAgcGFnZXMgPSAgICAgICAgIjI3Mi0tMjc2IiwKICBtb250aCA9ICAgICAgICBtYXksCiAgeWVhciA9ICAgICAgICAgIjE5NzQiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiQSBudW1iZXIgdGhlb3J5IHBhY2thZ2UgaXMgZGVzY3JpYmVkIHdoaWNoIHVzZXMgZG91Ymx5IGxpbmtlZCBsaXN0IHN0cnVjdHVyZXMgZm9yIHN0b3JpbmcgbXVsdGlwcmVjaXNlIGludGVnZXJzLiBUaGUgcGFja2FnZSBoYXMgYmVlbiBjb2RlZCBpbiBJQk0ncyBCYXNpYyBBc3NlbWJseSBMYW5ndWFnZSBhbmQgbWFrZXMgaGVhdnkgdXNlIG9mIHRoZSBtYWNybyBsYW5ndWFnZSBhbmQgY29uZGl0aW9uYWwgYXNzZW1ibHkuIEFuIG9wdGltYWxseSBjb2RlZCB0cmlhbCBkaXZpc2lvbiByb3V0aW5lIGlzIGFsc28gZGVzY3JpYmVkIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGRldGVybWluZSB0aGUgdW5pcXVlIGZhY3Rvcml6YXRpb24gb2YgbGFyZ2UgaW50ZWdlcnMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzUyMzAgKERpZ2l0YWwgYXJpdGhtZXRpYyBtZXRob2RzKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiOTIxIiwKICBjb3Jwc291cmNlID0gICAiTm9ydGhlcm4gSWxsaW5vaXMgVW5pdi4sIERla2FsYiwgSUwsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhcml0aG1ldGljOyBCYXNpYzsgY29uZGl0aW9uYWwgYXNzZW1ibHk7IGRlc2lnbjsgZG91Ymx5IGxpbmtlZCBsaXN0IHN0cnVjdHVyZXM7IGRvdWJseSBsaW5rZWQgbGlzdHM7IGZhY3Rvcml6YXRpb247IGludGVnZXJzOyBtYWNybyBsYW5ndWFnZTsgbWF0aGVtYXRpY2FsIHRlY2huaXF1ZXM7IG11bHRpcHJlY2lzZTsgbnVtYmVyIHRoZW9yeTsgbnVtYmVyIHRoZW9yeSBwYWNrYWdlOyBvcHRpbWFsbHkgY29kZWQ7IG9wdGltaXplZCB0cmlhbCBkaXZpc2lvbjsgcHNldWRvcHJpbWU7IHJvdXRpbmU7IHRyaWFsIGRpdmlzaW9uOyB1dGlsaXR5IHByb2dyYW1zIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtHZW50bGVtYW46MTk3NDpNQVIsCiAgYXV0aG9yID0gICAgICAgIlcuIE0uIEdlbnRsZW1hbiBhbmQgUy4gQi4gTWFyb3ZpY2giLAogIHRpdGxlID0gICAgICAgICJNb3JlIG9uIEFsZ29yaXRobXMgdGhhdCBSZXZlYWwgUHJvcGVydGllcyBvZiBGbG9hdGluZyBQb2ludCBBcml0aG1ldGljIFVuaXRzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE3IiwKICBudW1iZXIgPSAgICAgICAiNSIsCiAgcGFnZXMgPSAgICAgICAgIjI3Ni0tMjc3IiwKICBtb250aCA9ICAgICAgICBtYXksCiAgeWVhciA9ICAgICAgICAgIjE5NzQiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiZ2FyYm8udXdhc2EuZmk6L3BjL2RvYy1zb2Z0L2ZwYmlibGlvLnR4dCIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM1MjMwIChEaWdpdGFsIGFyaXRobWV0aWMgbWV0aG9kcykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBXYXRlcmxvbywgT250LiwgQ2FuYWRhIiwKICBrZXl3b3JkcyA9ICAgICAiYWxnb3JpdGhtczsgYmFzZSBvZiB0aGUgYXJpdGhtZXRpYzsgZGlnaXRhbCBhcml0aG1ldGljOyBmbG9hdGluZyBwb2ludCBhcml0aG1ldGljIHVuaXRzOyBoaWdoIGxldmVsOyBsYW5ndWFnZXM7IHRyYWlsaW5nIGRpZ2l0cyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7R29sZDoxOTc0Ok1NUiwKICBhdXRob3IgPSAgICAgICAiRC4gRS4gR29sZCBhbmQgRC4gSi4gS3VjayIsCiAgdGl0bGUgPSAgICAgICAgIkEgTW9kZWwgZm9yIE1hc2tpbmcgUm90YXRpb25hbCBMYXRlbmN5IGJ5IER5bmFtaWMgRGlzayBBbGxvY2F0aW9uIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE3IiwKICBudW1iZXIgPSAgICAgICAiNSIsCiAgcGFnZXMgPSAgICAgICAgIjI3OC0tMjg4IiwKICBtb250aCA9ICAgICAgICBtYXksCiAgeWVhciA9ICAgICAgICAgIjE5NzQiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0RhdGFiYXNlL1dpZWRlcmhvbGQuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiVGhpcyBwYXBlciBwcmVzZW50cyB0aGUgYmFja2dyb3VuZCBhbmQgYWxnb3JpdGhtcyBmb3IgbWFza2luZyB0aGUgcm90YXRpb25hbCBsYXRlbmN5IG9mIGEgZGlzayBvciBkcnVtLiBJdCBkaXNjdXNzZXMgdGhlIGFudGljaXBhdG9yeSBpbnB1dCBhbmQgb3V0cHV0IG9mIGJsb2NrcyBvZiBkYXRhIHRvIGJ1ZmZlciBhbmQgcHJpbWFyeSBtZW1vcmllcyBmb3IgYSBtb25vLXByb2dyYW1tZWQgY29tcHV0ZXIgc3lzdGVtLiBBIGJhc2ljIHBlcm11dGF0aW9uIGFsZ29yaXRobSBhbmQgc2V2ZXJhbCB2YXJpYXRpb25zIGFyZSBnaXZlbi4gQmVjYXVzZSBvZiB0aGUgYW50aWNpcGF0b3J5IG5hdHVyZSBvZiB0aGUgSS9PIHNjaGVkdWxpbmcsIHRoZXNlIGFsZ29yaXRobXMgYXJlIHJlc3RyaWN0ZWQgdG8gY2xhc3NlcyBvZiBwcm9ncmFtcyB3aXRoIHByZWRpY3RhYmxlIGJlaGF2aW9yLiBXaGlsZSB0aGUgbWV0aG9kcyBhcmUgbm90IHJlc3RyaWN0ZWQgdG8gbnVtZXJpY2FsIGNvbXB1dGF0aW9ucywgbWF0cml4IGFuZCBwYXJ0aWFsIGRpZmZlcmVudGlhbCBlcXVhdGlvbiBtZXRob2RzIGFyZSB0eXBpY2FsIGV4YW1wbGVzIG9mIHRoZWlyIHVzZS4gSXQgaXMgc2hvd24gdGhhIGxhdGVuY3kgbWF5IGJlIG1hc2tlZCB1c2luZyBhIHNtYWxsIGFtb3VudCBvZiBidWZmZXIgbWVtb3J5LiBUaGUgbWV0aG9kcyBkaXNjdXNzZWQgYXJlIGluZGVwZW5kZW50IG9mIHRoZSBvdmVyYWxsIHNpemUgb2YgdGhlIGRhdGEgYmFzZSBiZWluZyBjb25zaWRlcmVkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgYW5ub3RlID0gICAgICAgIk9wdGltYWwgYXJyYW5nZW1lbnQgb2YgZGF0YSB0byBtaW5pbWl6ZSBidWZmZXIgbmVlZHMuIiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKTsgQzYxNTBKIChPcGVyYXRpbmcgc3lzdGVtcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMjsgNzIzIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gSWxsaW5vaXMsIFVyYmFuYS1DaGFtcGFpZ24sIElMLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiKGNvbXB1dGVycyk7IGFsZ29yaXRobTsgYW50aWNpcGF0b3J5IGlucHV0OyBhbnRpY2lwYXRvcnkgb3V0cHV0OyBiZWhhdmlvdXI7IGJ1ZmZlcjsgYnVmZmVyIG1lbW9yeTsgY29tcHV0ZXIgb3BlcmF0aW5nIHN5c3RlbXM7IGNvbXB1dGVyIHN5c3RlbTsgZGF0YSBzdG9yYWdlLCBtYWduZXRpYyAtLS0gRGlzazsgZHluYW1pYyBkaXNjIGFsbG9jYXRpb247IG1hZ25ldGljIGRpc2MgYW5kIGRydW0gc3RvcmFnZTsgbWFza2luZzsgbWVtb3J5IGhpZXJhcmNoeTsgbW9kZWw7IG1vbm9wcm9ncmFtbWVkOyBvcGVyYXRpbmcgc3lzdGVtczsgcGVybXV0YXRpb247IHBlcm11dGF0aW9uIGFsZ29yaXRobTsgcHJlZGljdGFibGU7IHByaW1hcnkgbWVtb3JpZXM7IHJvdGF0aW9uYWwgbGF0ZW5jeTsgc3RhZ2luZzsgc3RvcmFnZSBhbGxvY2F0aW9uIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtDb2hlbjoxOTc0OlRMRSwKICBhdXRob3IgPSAgICAgICAiSmFjcXVlcyBDb2hlbiBhbmQgQ2FybCBadWNrZXJtYW4iLAogIHRpdGxlID0gICAgICAgICJUd28gTGFuZ3VhZ2VzIGZvciBFc3RpbWF0aW5nIFByb2dyYW0gRWZmaWNpZW5jeSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNyIsCiAgbnVtYmVyID0gICAgICAgIjYiLAogIHBhZ2VzID0gICAgICAgICIzMDEtLTMwOCIsCiAgbW9udGggPSAgICAgICAganVuLAogIHllYXIgPSAgICAgICAgICIxOTc0IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9NaXNjL21vbml0b3IuYmliIGFuZCBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0Rpc3RyaWJ1dGVkL1FMRC8xOTc0LmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIlR3byBsYW5ndWFnZXMgZW5hYmxpbmcgdGhlaXIgdXNlcnMgdG8gZXN0aW1hdGUgdGhlIGVmZmljaWVuY3kgb2YgY29tcHV0ZXIgcHJvZ3JhbXMgYXJlIHByZXNlbnRlZC4gVGhlIHByb2dyYW0gd2hvc2UgZWZmaWNpZW5jeSBvbmUgd2lzaGVzIHRvIGVzdGltYXRlIGlzIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IGxhbmd1YWdlLCBhIGdvLXRvLWxlc3MgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2Ugd2hpY2ggaW5jbHVkZXMgbW9zdCBvZiB0aGUgZmVhdHVyZXMgb2YgQWxnb2wgNjAuIFRoZSBzZWNvbmQgbGFuZ3VhZ2UgY29uc2lzdHMgb2YgaW50ZXJhY3RpdmUgY29tbWFuZHMgZW5hYmxpbmcgaXRzIHVzZXJzIHRvIHByb3ZpZGUgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcHJvZ3JhbSB3cml0dGVuIGluIHRoZSBmaXJzdCBsYW5ndWFnZSBhbmQgdG8gb3V0cHV0IHJlc3VsdHMgZXN0aW1hdGluZyBpdHMgZWZmaWNpZW5jeS4gUHJvY2Vzc29ycyBmb3IgdGhlIHR3byBsYW5ndWFnZXMgYXJlIGFsc28gZGVzY3JpYmVkLiBUaGUgZmlyc3QgcHJvY2Vzc29yIGlzIGEgc3ludGF4LWRpcmVjdGVkIHRyYW5zbGF0b3Igd2hpY2ggY29tcGlsZXMgYSBwcm9ncmFtIGludG8gYSBzeW1ib2xpYyBmb3JtdWxhIHJlcHJlc2VudGluZyB0aGUgZXhlY3V0aW9uIHRpbWUgZm9yIHRoYXQgcHJvZ3JhbS4gVGhlIHNlY29uZCBwcm9jZXNzb3IgaXMgYSBzZXQgb2YgcHJvY2VkdXJlcyBmb3IgYWxnZWJyYWljIG1hbmlwdWxhdGlvbiB3aGljaCBjYW4gYmUgY2FsbGVkIGJ5IHRoZSB1c2VyIHRvIG9wZXJhdGUgb24gdGhlIGZvcm11bGEgcHJvZHVjZWQgYnkgdGhlIGZpcnN0IHByb2Nlc3Nvci4gRXhhbXBsZXMgb2YgdGhlIHVzYWdlIG9mIHRoZSB0d28gbGFuZ3VhZ2VzIGFyZSBpbmNsdWRlZC4gVGhlIGxpbWl0YXRpb25zIG9mIHRoZSBwcmVzZW50IHN5c3RlbSwgaXRzIHJlbGF0aW9uIHRvIEtudXRoJ3Mgd29yayBvbiB0aGUgYW5hbHlzaXMgb2YgYWxnb3JpdGhtcywgYW5kIHNvbWUgb2YgdGhlIGRpcmVjdGlvbnMgZm9yIGZ1cnRoZXIgcmVzZWFyY2ggYXJlIGFsc28gZGlzY3Vzc2VkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTQwRCAoSGlnaCBsZXZlbCBsYW5ndWFnZXMpOyBDNjE1MEMgKENvbXBpbGVycywgaW50ZXJwcmV0ZXJzIGFuZCBvdGhlciBwcm9jZXNzb3JzKTsgQzYxNTBHIChEaWFnbm9zdGljLCB0ZXN0aW5nLCBkZWJ1Z2dpbmcgYW5kIGV2YWx1YXRpbmcgc3lzdGVtcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIkJyYW5kZWlzIFVuaXYuLCBXYWx0aGFtLCBNQSwgVVNBIiwKICBjb3VudHJ5ID0gICAgICAiVVNBIiwKICBkZXNjcmlwdG9ycyA9ICAiUHJvZ3JhbW1pbmcgbGFuZ3VhZ2U7IHJ1bnRpbWUvc3RvcmFnZSBlZmZpY2llbmN5OyBhbmFseXNpczsgYWxnb3JpdGhtOyIsCiAgZW51bSA9ICAgICAgICAgIjYxNCIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhbmFseXNpcyBvZiBhbGdvcml0aG1zOyBjb21wdXRlciBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IGVmZmljaWVuY3k7IGVzdGltYXRpbmcgcHJvZ3JhbSBlZmZpY2llbmN5OyBnbyB0byBsZXNzOyBpbnRlcmFjdGl2ZSBjb21tYW5kczsgbGFuZ3VhZ2VzOyBwcm9jZWR1cmUgb3JpZW50ZWQgbGFuZ3VhZ2VzOyBwcm9jZXNzb3JzOyBwcm9ncmFtOyBwcm9ncmFtIGRpYWdub3N0aWNzOyBwcm9ncmFtIGVmZmljaWVuY3k7IHByb2dyYW1taW5nIGxhbmd1YWdlOyBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IHN5bWJvbGljIG1hbmlwdWxhdGlvbjsgc3ludGF4IGRpcmVjdGVkIHRyYW5zbGF0aW9uOyBzeW50YXgtZGlyZWN0ZWQgdHJhbnNsYXRpb24iLAogIGxhbmd1YWdlID0gICAgICJFbmdsaXNoIiwKICByZWZlcmVuY2VzID0gICAiMTYiLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0hlbnNjaGVuOjE5NzQ6VFBMLAogIGF1dGhvciA9ICAgICAgICJMLiBIZW5zY2hlbiBhbmQgUm9zcyBBLiBPdmVyYmVlayBhbmQgTC4gV29zIiwKICB0aXRsZSA9ICAgICAgICAiQSBUaGVvcmVtLVByb3ZpbmcgTGFuZ3VhZ2UgZm9yIEV4cGVyaW1lbnRhdGlvbiIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNyIsCiAgbnVtYmVyID0gICAgICAgIjYiLAogIHBhZ2VzID0gICAgICAgICIzMDgtLTMxNCIsCiAgbW9udGggPSAgICAgICAganVuLAogIHllYXIgPSAgICAgICAgICIxOTc0IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjhBNDAiLAogIE1SbnVtYmVyID0gICAgICI0OSA2Njk4IiwKICBtcnJldmlld2VyID0gICAiSy4gSC4gVi4gQm9vdGgiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiQmVjYXVzZSBvZiB0aGUgbGFyZ2UgbnVtYmVyIG9mIHN0cmF0ZWdpZXMgYW5kIGluZmVyZW5jZSBydWxlcyBwcmVzZW50bHkgdW5kZXIgY29uc2lkZXJhdGlvbiBpbiBhdXRvbWF0ZWQgdGhlb3JlbSBwcm92aW5nLCB0aGVyZSBpcyBhIG5lZWQgZm9yIGRldmVsb3BpbmcgYSBsYW5ndWFnZSBlc3BlY2lhbGx5IG9yaWVudGVkIHRvd2FyZCBhdXRvbWF0ZWQgdGhlb3JlbSBwcm92aW5nLiBUaGlzIHBhcGVyIGRpc2N1c3NlcyBzb21lIG9mIHRoZSBmZWF0dXJlcyBhbmQgaW5zdHJ1Y3Rpb25zIG9mIHRoaXMgbGFuZ3VhZ2UuIFRoZSB1c2Ugb2YgdGhpcyBsYW5ndWFnZSBwZXJtaXRzIGVhc3kgZXh0ZW5zaW9uIG9mIGF1dG9tYXRlZCB0aGVvcmVtLXByb3ZpbmcgcHJvZ3JhbXMgdG8gaW5jbHVkZSBuZXcgc3RyYXRlZ2llcyBhbmQvb3IgbmV3IGluZmVyZW5jZSBydWxlcy4gU3VjaCBleHRlbmQgYWJpbGl0eSB3aWxsIHBlcm1pdCBnZW5lcmFsIGV4cGVyaW1lbnRhdGlvbiB3aXRoIHRoZSB2YXJpb3VzIGFsdGVybmF0aXZlIHN5c3RlbXMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzEyMzAgKEFydGlmaWNpYWwgaW50ZWxsaWdlbmNlKTsgQzYxNDBEIChIaWdoIGxldmVsIGxhbmd1YWdlcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIk5vcnRod2VzdGVybiBVbml2LiwgRXZhbnN0b24sIElMLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzOyBmYWN0b3Jpbmc7IHBhcmFtb2R1bGF0aW9uOyBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IHJlc29sdXRpb247IHRoZW9yZW0gcHJvdmluZyIsCiAga2V5d29yZHMgPSAgICAgImFsdGVybmF0aXZlIHN5c3RlbXM7IGF1dG9tYXRlZCB0aGVvcmVtIHByb3Zpbmc7IGV4cGVyaW1lbnRhdGlvbjsgZmFjdG9yaW5nOyBwYXJhbW9kdWxhdGlvbjsgcHJvYmxlbSBvcmllbnRlZCBsYW5ndWFnZXM7IHByb2dyYW1taW5nIGxhbmd1YWdlczsgcmVzb2x1dGlvbjsgc3RyYXRlZ2llcyBhbmQgaW5mZXJlbmNlIHJ1bGVzIHByZXNlbnRseTsgdGhlb3JlbSBwcm92aW5nIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtHaW1wZWw6MTk3NDpNU0MsCiAgYXV0aG9yID0gICAgICAgIkphbWVzIEYuIEdpbXBlbCIsCiAgdGl0bGUgPSAgICAgICAgIlRoZSBtaW5pbWl6YXRpb24gb2Ygc3BhdGlhbGx5LW11bHRpcGxleGVkIGNoYXJhY3RlciBzZXRzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE3IiwKICBudW1iZXIgPSAgICAgICAiNiIsCiAgcGFnZXMgPSAgICAgICAgIjMxNS0tMzE4IiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzQiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiVGhlIHBhcGVyIGRlc2NyaWJlcyBhIHRlY2huaXF1ZSBmb3IgY29tcGFjdGluZyBjaGFyYWN0ZXIgc2V0cyBpbiBhIGRpZ2l0YWwgY29tcHV0ZXIgd2hpbGUgcmV0YWluaW5nIGZhc3QgYWNjZXNzIHRvIGluZGl2aWR1YWwgYml0cy4gSXQgY29uc2lkZXJzIHRoZSBwcm9ibGVtIG9mIG1pbmltaXppbmcgdGhlIHN0b3JhZ2UgbmVlZGVkIHRvIGNvbnRhaW4gc3VjaCB0YWJsZXMuIFJlZHVjdGlvbiB0ZWNobmlxdWVzIGFyZSBkZXZlbG9wZWQsIGFuZCB0aGUgcHJvYmxlbSBpcyBzaG93biB0byByZWR1Y2UgdG8gYSBjb3ZlcmluZyBwcm9ibGVtLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbik7IEM2MTMwIChEYXRhIGhhbmRsaW5nIHRlY2huaXF1ZXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJCZWxsIFRlbGVwaG9uZSBMYWJzLiwgSG9sbWRlbCwgTkosIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjaGFyYWN0ZXIgc2V0czsgY29tcGFjdGluZyBjaGFyYWN0ZXIgc2V0czsgY29tcHV0ZXIgcHJvZ3JhbW1pbmc7IGNvdmVyaW5nIHByb2JsZW07IGRhdGEgaGFuZGxpbmc7IGRhdGEgc3RydWN0dXJlczsgZmFzdCBhY2Nlc3MgdG87IGluZGl2aWR1YWwgYml0czsgbGV4aWNhbCBhbmFseXNpczsgbWluaW1pemluZyB0aGUgc3RvcmFnZTsgcGFyc2luZzsgcmVkdWN0aW9uOyBzY2FubmluZzsgc3BhdGlhbCBtdWx0aXBsZXhpbmc7IHN0cmluZyBwcm9jZXNzaW5nOyB0ZWNobmlxdWVzIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtCYXJyb2RhbGU6MTk3NDpBQVMsCiAgYXV0aG9yID0gICAgICAgIkkuIEJhcnJvZGFsZSBhbmQgRi4gRC4gSy4gUm9iZXJ0cyIsCiAgdGl0bGUgPSAgICAgICAgIntBQ019IEFsZ29yaXRobSA0Nzg6IFNvbHV0aW9uIG9mIGFuIE92ZXJkZXRlcm1pbmVkIFN5c3RlbSBvZiBFcXVhdGlvbnMgaW4gdGhlICR7TF8xfSQgTm9ybSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNyIsCiAgbnVtYmVyID0gICAgICAgIjYiLAogIHBhZ2VzID0gICAgICAgICIzMTktLTMyMCIsCiAgbW9udGggPSAgICAgICAganVuLAogIHllYXIgPSAgICAgICAgICIxOTc0IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkIwMjYwIChPcHRpbWlzYXRpb24gdGVjaG5pcXVlcyk7IEIwMjkwRiAoSW50ZXJwb2xhdGlvbiBhbmQgZnVuY3Rpb24gYXBwcm94aW1hdGlvbik7IEMxMTgwIChPcHRpbWlzYXRpb24gdGVjaG5pcXVlcyk7IEM0MTMwIChJbnRlcnBvbGF0aW9uIGFuZCBmdW5jdGlvbiBhcHByb3hpbWF0aW9uKTsgQzczMTAgKE1hdGhlbWF0aWNzIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBWaWN0b3JpYSwgQkMsIENhbmFkYSIsCiAga2V5d29yZHMgPSAgICAgImFsZ29yaXRobTsgZnVuY3Rpb24gYXBwcm94aW1hdGlvbjsgbC9zdWIgMS8gYXBwcm94aW1hdGlvbjsgbDEgbm9ybTsgbGluZWFyIHByb2dyYW1taW5nOyBtaW5pbWl6ZXM7IG92ZXJkZXRlcm1pbmVkIHN5c3RlbSBvZiBlcXVhdGlvbnM7IHNpbXBsZXggbWV0aG9kOyBzdWJyb3V0aW5lczsgc3VtIG9mIHRoZSBhYnNvbHV0ZSB2YWx1ZXMgb2YgdGhlIHJlc2lkdWFscyIsCiAgdHJlYXRtZW50ID0gICAgIkEgQXBwbGljYXRpb247IFQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7UGFnZToxOTc0OkFBTSwKICBhdXRob3IgPSAgICAgICAiUi4gTC4gUGFnZSIsCiAgdGl0bGUgPSAgICAgICAgIntBQ019IEFsZ29yaXRobSA0Nzk6IHtBfSBNaW5pbWFsIFNwYW5uaW5nIFRyZWUgQ2x1c3RlcmluZyBNZXRob2QiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTciLAogIG51bWJlciA9ICAgICAgICI2IiwKICBwYWdlcyA9ICAgICAgICAiMzIxLS0zMjMiLAogIG1vbnRoID0gICAgICAgIGp1biwKICB5ZWFyID0gICAgICAgICAiMTk3NCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIG5vdGUgPSAgICAgICAgICJTZWUgYWxzbyBcY2l0ZXtXaGl0ZToxOTc2OlJNU30uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjYxNDBDIChPcHRpY2FsIGluZm9ybWF0aW9uLCBpbWFnZSBhbmQgdmlkZW8gc2lnbmFsIHByb2Nlc3NpbmcpOyBDMTI1MCAoUGF0dGVybiByZWNvZ25pdGlvbik7IEM3MzEwIChNYXRoZW1hdGljcyBjb21wdXRpbmcpIiwKICBjb3Jwc291cmNlID0gICAiQ29sb3JhZG8gU3RhdGUgVW5pdi4sIEZvcnQgQ29sbGlucywgQ08sIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImNvbXBsZXRlIGdyYXBoOyBmZWF0dXJlOyBGT1JUUkFOOyBncmFwaCB0aGVvcnk7IGh1bWFuIHBlcmNlcHRpb247IG1pbmltYWwgc3Bhbm5pbmcgdHJlZTsgcGF0dGVybiByZWNvZ25pdGlvbjsgc2VsZWN0aW9uOyBzdWJyb3V0aW5lcyIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7R2FpdGhlcjoxOTc0OkhQUCwKICBhdXRob3IgPSAgICAgICAiQi4gR2FpdGhlciIsCiAgdGl0bGUgPSAgICAgICAgIkhpZGRlbi1saW5lIHBsb3R0aW5nIHByb2dyYW0iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTciLAogIG51bWJlciA9ICAgICAgICI2IiwKICBwYWdlcyA9ICAgICAgICAiMzI0LS0zMjQiLAogIG1vbnRoID0gICAgICAgIGp1biwKICB5ZWFyID0gICAgICAgICAiMTk3NCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNTU0MCAoVGVybWluYWxzIGFuZCBncmFwaGljIGRpc3BsYXlzKTsgQzYxMzAgKERhdGEgaGFuZGxpbmcgdGVjaG5pcXVlcyk7IEM3MzEwIChNYXRoZW1hdGljcyBjb21wdXRpbmcpIiwKICBjb3Jwc291cmNlID0gICAiTmV3IE1leGljbyBJbnN0LiBNaW5pbmcgYW5kIFRlY2hub2wuLCBTb2NvcnJvLCBOTSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiYWxnb3JpdGhtOyBjb21wdXRlciBncmFwaGljczsgZGl2aXNpb24gYnkgemVybzsgaGlkZGVuIGxpbmU7IHBsb3R0aW5nIHByb2dyYW0iLAogIHRyZWF0bWVudCA9ICAgICJHIEdlbmVyYWwgUmV2aWV3OyBQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle1BpZXNzZW5zOjE5NzQ6Q0ZJLAogIGF1dGhvciA9ICAgICAgICJSLiBQaWVzc2VucyIsCiAgdGl0bGUgPSAgICAgICAgIkNhbGN1bGF0aW9uIG9mIHtGb3VyaWVyfSBpbnRlZ3JhbHMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTciLAogIG51bWJlciA9ICAgICAgICI2IiwKICBwYWdlcyA9ICAgICAgICAiMzI0LS0zMjQiLAogIG1vbnRoID0gICAgICAgIGp1biwKICB5ZWFyID0gICAgICAgICAiMTk3NCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJCMDI5MFogKE90aGVyIG51bWVyaWNhbCBtZXRob2RzKTsgQzQxOTAgKE90aGVyIG51bWVyaWNhbCBtZXRob2RzKTsgQzczMTAgKE1hdGhlbWF0aWNzIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBMZXV2ZW4sIEhldmVybGVlLCBCZWxnaXVtIiwKICBrZXl3b3JkcyA9ICAgICAiYWxnb3JpdGhtOyBGb3VyaWVyIGludGVncmFsczsgRm91cmllciB0cmFuc2Zvcm1zOyBpbnRlZ3JhdGlvbiIsCiAgdHJlYXRtZW50ID0gICAgIkcgR2VuZXJhbCBSZXZpZXc7IFAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7UGllc3NlbnM6MTk3NDpNSEksCiAgYXV0aG9yID0gICAgICAgIlIuIFBpZXNzZW5zIiwKICB0aXRsZSA9ICAgICAgICAiTW9kaWZpZWQge0hhdmllfSBpbnRlZ3JhdGlvbiIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNyIsCiAgbnVtYmVyID0gICAgICAgIjYiLAogIHBhZ2VzID0gICAgICAgICIzMjQtLTMyNCIsCiAgbW9udGggPSAgICAgICAganVuLAogIHllYXIgPSAgICAgICAgICIxOTc0IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkIwMjkwTSAoTnVtZXJpY2FsIGludGVncmF0aW9uIGFuZCBkaWZmZXJlbnRpYXRpb24pOyBDNDE2MCAoTnVtZXJpY2FsIGludGVncmF0aW9uIGFuZCBkaWZmZXJlbnRpYXRpb24pOyBDNzMxMCAoTWF0aGVtYXRpY3MgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIExldXZlbiwgSGV2ZXJsZWUsIEJlbGdpdW0iLAogIGtleXdvcmRzID0gICAgICJhbGdvcml0aG07IGF1dG9tYXRpYzsgaW50ZWdyYXRpb247IGludGVncmF0b3JzOyBtb2RpZmllZCBIYXZpZSBpbnRlZ3JhdGlvbjsgbnVtZXJpY2FsIGFuYWx5c2lzOyBvdmVyZmxvd3M7IHNwZWNpZmllZCB0b2xlcmFuY2VzIiwKICB0cmVhdG1lbnQgPSAgICAiRyBHZW5lcmFsIFJldmlldzsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtFbGxpczoxOTc0OkhQUCwKICBhdXRob3IgPSAgICAgICAiVC4gTS4gUi4gRWxsaXMiLAogIHRpdGxlID0gICAgICAgICJIaWRkZW4tbGluZSBwbG90dGluZyBwcm9ncmFtIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE3IiwKICBudW1iZXIgPSAgICAgICAiNiIsCiAgcGFnZXMgPSAgICAgICAgIjMyNC0tMzI1IiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzQiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzU1NDAgKFRlcm1pbmFscyBhbmQgZ3JhcGhpYyBkaXNwbGF5cyk7IEM2MTMwIChEYXRhIGhhbmRsaW5nIHRlY2huaXF1ZXMpOyBDNzMxMCAoTWF0aGVtYXRpY3MgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIFNoZWZmaWVsZCwgVUsiLAogIGtleXdvcmRzID0gICAgICJhbGdvcml0aG07IGNvbXB1dGVyIGdyYXBoaWNzOyBlcnJvcjsgaGlkZGVuIGxpbmUgcGxvdHRpbmcgcHJvZ3JhbTsgcGxvdHRpbmcgcHJvZ3JhbSIsCiAgdHJlYXRtZW50ID0gICAgIkcgR2VuZXJhbCBSZXZpZXc7IFAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7UGFnZToxOTc0OkdSQywKICBhdXRob3IgPSAgICAgICAiUi4gTC4gUGFnZSIsCiAgdGl0bGUgPSAgICAgICAgIkdlbmVyYXRpb24gb2YgcmFuZG9tIGNvcnJlbGF0ZWQgbm9ybWFsIHZhcmlhYmxlcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNyIsCiAgbnVtYmVyID0gICAgICAgIjYiLAogIHBhZ2VzID0gICAgICAgICIzMjUtLTMyNSIsCiAgbW9udGggPSAgICAgICAganVuLAogIHllYXIgPSAgICAgICAgICIxOTc0IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM3ODkwIChPdGhlciBzcGVjaWFsIGFwcGxpY2F0aW9ucyBvZiBjb21wdXRpbmcpIiwKICBjb3Jwc291cmNlID0gICAiQ29sb3JhZG8gU3RhdGUgVW5pdi4sIEZvcnQgQ29sbGlucywgQ08sIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImFsZ29yaXRobTsgYXJyYXkgcGFyYW1ldGVyczsgcmFuZG9tIGNvcnJlbGF0ZWQgbm9ybWFsIHZhcmlhYmxlczsgcmFuZG9tIG51bWJlciBnZW5lcmF0aW9uOyByZXZpc2VzOyB3b3JrIiwKICB0cmVhdG1lbnQgPSAgICAiRyBHZW5lcmFsIFJldmlldzsgUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtCb3VsdG9uOjE5NzQ6RVBSLAogIGF1dGhvciA9ICAgICAgICJELiBNLiBCb3VsdG9uIiwKICB0aXRsZSA9ICAgICAgICAiRXhhY3QgcHJvYmFiaWxpdGllcyBmb3Ige1J9KntDfSBjb250aW5nZW5jeSB0YWJsZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTciLAogIG51bWJlciA9ICAgICAgICI2IiwKICBwYWdlcyA9ICAgICAgICAiMzI2LS0zMjYiLAogIG1vbnRoID0gICAgICAgIGp1biwKICB5ZWFyID0gICAgICAgICAiMTk3NCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNzMxMCAoTWF0aGVtYXRpY3MgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIk1vbmFzaCBVbml2LiwgTWVsYm91cm5lLCBWaWMuLCBBdXN0cmFsaWEiLAogIGtleXdvcmRzID0gICAgICJhbGdvcml0aG07IGNlbGwgZnJlcXVlbmN5IGNvbWJpbmF0aW9uczsgY29udGluZ2VuY3kgdGFibGVzOyBkaW1lbnNpb25hbCBjb250aW5nZW5jeSB0YWJsZTsgZXhhY3QgcHJvYmFiaWxpdGllczsgaW5lZmZpY2llbnQ7IG1hcmdpbmFsIHN1bSBjb25zdHJhaW50czsgcHJvYmFiaWxpdHk7IHR3byIsCiAgdHJlYXRtZW50ID0gICAgIkcgR2VuZXJhbCBSZXZpZXc7IFAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7U2x5c3o6MTk3NDpFU1MsCiAgYXV0aG9yID0gICAgICAgIlcuIEQuIFNseXN6IiwKICB0aXRsZSA9ICAgICAgICAiQW4gZXZhbHVhdGlvbiBvZiBzb2Z0d2FyZSBpbiB0aGUgc29jaWFsIHNjaWVuY2VzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE3IiwKICBudW1iZXIgPSAgICAgICAiNiIsCiAgcGFnZXMgPSAgICAgICAgIjMyNi0tMzMyIiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzQiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzc4MTAgKFNvY2lhbCBhbmQgYmVoYXZpb3VyYWwgc2NpZW5jZXMgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIENvbm5lY3RpY3V0LCBTdG9ycnMsIENULCBVU0EiLAogIGtleXdvcmRzID0gICAgICJiaXZhcmlhdGU7IEJNRDsgY29sbGVnZTsgY29zdDsgREFUQSBURVhUOyBkZXNjcmlwdGl2ZSBzdGF0aXN0aWNzOyBmYWN0b3IgYW5hbHlzaXM7IG9uZSB3YXkgYW5hbHlzaXMgb2YgdmFyaWFuY2U7IE9TSVJJUzsgUGVhcnNvbiBjb3JyZWxhdGlvbjsgcGVyZm9ybWFuY2U7IHJlZ3Jlc3Npb247IHNvY2lhbCBhbmQgYmVoYXZpb3VyYWwgc2NpZW5jZXM7IHNvY2lhbCBzY2llbmNlczsgU1BTUzsgc3RhdGlzdGljYWwgYW5hbHlzaXM7IHN0YXRpc3RpY2FsIGNvbXB1dGF0aW9uOyBzdGF0aXN0aWNhbCBwYWNrYWdlczsgc3RhdGlzdGljYWwgc29mdHdhcmU7IHRhYmxlczsgVFNBUjsgdW5pdmVyc2l0eSIsCiAgdHJlYXRtZW50ID0gICAgIkEgQXBwbGljYXRpb247IFAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7QWRhbXM6MTk3NDpDUkMsCiAgYXV0aG9yID0gICAgICAgIkpvaG4gQWRhbXMgYW5kIEpvaG4gR2FyeSIsCiAgdGl0bGUgPSAgICAgICAgIkNvbXBhY3QgUmVwcmVzZW50YXRpb24gb2YgQ29udG91ciBQbG90cyBmb3IgUGhvbmUgTGluZSBUcmFuc21pc3Npb24iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTciLAogIG51bWJlciA9ICAgICAgICI2IiwKICBwYWdlcyA9ICAgICAgICAiMzMzLS0zMzYiLAogIG1vbnRoID0gICAgICAgIGp1biwKICB5ZWFyID0gICAgICAgICAiMTk3NCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJNZXRob2RzIGZvciB0aGUgY29tcGFjdCByZXByZXNlbnRhdGlvbiBvZiBjb250b3VyIHBsb3RzIGFyZSBkZXNjcmliZWQgYW5kIHRlc3RlZC4gVGhlc2UgYXJlIGludGVuZGVkIHRvIHJlZHVjZSB0aGUgY29zdCBvZiB0cmFuc21pdHRpbmcgY29udG91ciBwbG90cyBvdmVyIHBob25lIGxpbmVzLiBTb21lIG9mIHRoZXNlIG1ldGhvZHMgY291bGQgYmUgdXNlZCB0byB0cmFuc21pdCBjb250b3VyIHBsb3RzIG92ZXIgdm9pY2UgZ3JhZGUgcGhvbmUgbGluZXMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjYyMTBEIChUZWxlcGhvbnkpOyBDNTU0MCAoVGVybWluYWxzIGFuZCBncmFwaGljIGRpc3BsYXlzKTsgQzU2MDAgKERhdGEgY29tbXVuaWNhdGlvbiBlcXVpcG1lbnQgYW5kIHRlY2huaXF1ZXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJOYXQuIENlbnRlciBBdG1vc3BoZXJpYyBSZXMuLCBCb3VsZGVyLCBDTywgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXBhY3QgcmVwcmVzZW50YXRpb247IGNvbXB1dGVyIGdyYXBoaWNzOyBjb250b3VyIHBsb3RzOyBkYXRhIGNvbXBhY3Rpb247IGRhdGEgdHJhbnNtaXNzaW9uOyBkYXRhIHRyYW5zbWlzc2lvbiBzeXN0ZW1zOyBwaG9uZSBsaW5lOyByZW1vdGUgdGVybWluYWw7IHRyYW5zbWlzc2lvbjsgdm9pY2UgZ3JhZGUgcGhvbmUgbGluZXMiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle1d1bGY6MTk3NDpIS00sCiAgYXV0aG9yID0gICAgICAgIlcuIFd1bGYgYW5kIEUuIENvaGVuIGFuZCBXLiBDb3J3aW4gYW5kIEEuIEpvbmVzIGFuZCBSLiBMZXZpbiBhbmQgQy4gUGllcnNvbiBhbmQgRi4gUG9sbGFjayIsCiAgdGl0bGUgPSAgICAgICAgIntIWURSQX06IFRoZSBLZXJuZWwgb2YgYSBNdWx0aXByb2Nlc3NvciBPcGVyYXRpbmcgU3lzdGVtIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE3IiwKICBudW1iZXIgPSAgICAgICAiNiIsCiAgcGFnZXMgPSAgICAgICAgIjMzNy0tMzQ1IiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzQiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0RhdGFiYXNlL1dpZWRlcmhvbGQuYmliIGFuZCBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L09iamVjdC9OaWVyc3RyYXN6LmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIlRoaXMgcGFwZXIgZGVzY3JpYmVzIHRoZSBkZXNpZ24gcGhpbG9zb3BoeSBvZiBIWURSQSB0aGUga2VybmVsIG9mIGFuIG9wZXJhdGluZyBzeXN0ZW0gZm9yIEMuIG1tcCwgdGhlIENhcm5lZ2llLU1lbGxvbiBNdWx0aS1NaW5pLVByb2Nlc3Nvci4gVGhpcyBwaGlsb3NvcGh5IGlzIHJlYWxpemVkIHRocm91Z2ggdGhlIGludHJvZHVjdGlvbiBvZiBhIGdlbmVyYWxpemVkIG5vdGlvbiBvZiBgYHJlc291cmNlLCcnIGJvdGggcGh5c2ljYWwgYW5kIHZpcnR1YWwsIGNhbGxlZCBhbiBgYG9iamVjdC4nJyBNZWNoYW5pc21zIGFyZSBwcmVzZW50ZWQgZm9yIGRlYWxpbmcgd2l0aCBvYmplY3RzLCBpbmNsdWRpbmcgdGhlIGNyZWF0aW9uIG9mIG5ldyB0eXBlcywgc3BlY2lmaWNhdGlvbiBvZiBuZXcgb3BlcmF0aW9ucyBhcHBsaWNhYmxlIHRvIGEgZ2l2ZW4gdHlwZSwgc2hhcmluZywgYW5kIHByb3RlY3Rpb24gb2YgYW55IHJlZmVyZW5jZSB0byBhIGdpdmVuIG9iamVjdCBhZ2FpbnN0IGltcHJvcGVyIGFwcGxpY2F0aW9uIG9mIGFueSBvZiB0aGUgb3BlcmF0aW9ucyBkZWZpbmVkIHdpdGggcmVzcGVjdCB0byB0aGF0IHR5cGUgb2Ygb2JqZWN0LiBUaGUgbWVjaGFuaXNtcyBwcm92aWRlIGEgY29oZXJlbnQgYmFzaXMgZm9yIGV4dGVuc2lvbiBvZiB0aGUgc3lzdGVtIGluIHR3byBkaXJlY3Rpb25zOiB0aGUgaW50cm9kdWN0aW9uIG9mIG5ldyBmYWNpbGl0aWVzLCBhbmQgdGhlIGNyZWF0aW9uIG9mIGhpZ2hseSBzZWN1cmUgc3lzdGVtcy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGFubm90ZSA9ICAgICAgICJJbmNsdWRlcyBwcm90ZWN0aW9uIG1lY2hhbmlzbSB1c2luZyBjYXBhYmlsaXRpZXMgYXR0YWNoZWQgdG8gcmVmZXJlbmNlcy4iLAogIGNsYXNzY29kZXMgPSAgICJDNjE1MEogKE9wZXJhdGluZyBzeXN0ZW1zKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIyIiwKICBjb3Jwc291cmNlID0gICAiQ2FybmVnaWUtTWVsbG9uIFVuaXYuLCBQaXR0c2J1cmdoLCBQQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIG9wZXJhdGluZyBzeXN0ZW1zOyBkZXNpZ24gcGhpbG9zb3BoeTsgaGlnaGx5IHNlY3VyZSBzeXN0ZW1zOyBIWURSQTsga2VybmVsOyBtdWx0aXByb2Nlc3NpbmcgcHJvZ3JhbXM7IG11bHRpcHJvY2Vzc29yIG9wZXJhdGluZyBzeXN0ZW07IG5ldyBmYWNpbGl0aWVzOyBudWNsZXVzOyBvcGVyYXRpbmcgc3lzdGVtcyAoY29tcHV0ZXJzKTsgcHJvdGVjdGlvbjsgc2VjdXJpdHkgb2xpdCBoeWRyYSBjYXBhYmlsaXRpZXM7IHNoYXJpbmciLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0JhcnRvbjoxOTc0OklUQSwKICBhdXRob3IgPSAgICAgICAiSWFuIEouIEJhcnRvbiBhbmQgU3VzYW4gRS4gQ3JlYXNleSBhbmQgTWljaGFlbCBGLiBMeW5jaCBhbmQgTWljaGFlbCBKLiBTbmVsbCIsCiAgdGl0bGUgPSAgICAgICAgIkFuIEluZm9ybWF0aW9uLVRoZW9yZXRpYyBBcHByb2FjaCB0byBUZXh0IFNlYXJjaGluZyBpbiBEaXJlY3QgQWNjZXNzIFN5c3RlbXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTciLAogIG51bWJlciA9ICAgICAgICI2IiwKICBwYWdlcyA9ICAgICAgICAiMzQ1LS0zNTAiLAogIG1vbnRoID0gICAgICAgIGp1biwKICB5ZWFyID0gICAgICAgICAiMTk3NCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJVc2luZyBkaXJlY3QgYWNjZXNzIGNvbXB1dGVyIGZpbGVzIG9mIGJpYmxpb2dyYXBoaWMgaW5mb3JtYXRpb24sIGFuIGF0dGVtcHQgaXMgbWFkZSB0byBvdmVyY29tZSBvbmUgb2YgdGhlIHByb2JsZW1zIG9mdGVuIGFzc29jaWF0ZWQgd2l0aCBpbmZvcm1hdGlvbiByZXRyaWV2YWwsIG5hbWVseSwgdGhlIG1haW50ZW5hbmNlIGFuZCB1c2Ugb2YgbGFyZ2UgZGljdGlvbmFyaWVzLCB0aGUgZ3JlYXRlciBwYXJ0IG9mIHdoaWNoIGlzIHVzZWQgb25seSBpbmZyZXF1ZW50bHkuIEEgbm92ZWwgbWV0aG9kIGlzIHByZXNlbnRlZCwgd2hpY2ggbWFwcyB0aGUgaHlwZXJib2xpYyBmcmVxdWVuY3kgZGlzdHJpYnV0aW9uLiBUaGlzIGlzIG1vcmUgc3VpdGVkIHRvIGltcGxlbWVudGF0aW9uIG9uIHN0b3JhZ2UgZGV2aWNlcy4gXHBhciBUaGlzIG1ldGhvZCB0cmVhdHMgdGV4dCBhcyBhIHN0cmluZyBvZiBjaGFyYWN0ZXJzIHJhdGhlciB0aGFuIHdvcmRzIGJvdW5kZWQgYnkgc3BhY2VzLCBhbmQgY2hvb3NlcyBzdWJzZXRzIG9mIHN0cmluZ3Mgc3VjaCB0aGF0IHRoZWlyIGZyZXF1ZW5jaWVzIG9mIG9jY3VycmVuY2UgYXJlIG1vcmUgZXZlbiB0aGFuIHRob3NlIG9mIHdvcmQgdHlwZXMuIFRoZSBtZW1iZXJzIG9mIHRoaXMgc3Vic2V0IGFyZSB0aGVuIHVzZWQgYXMgaW5kZXgga2V5cyBmb3IgcmV0cmlldmFsLiBUaGUgcmVjdGFuZ3VsYXIgZGlzdHJpYnV0aW9uIG9mIGtleSBmcmVxdWVuY2llcyByZXN1bHRzIGluIGEgbXVjaCBzaW1wbGlmaWVkIGZpbGUgb3JnYW5pemF0aW9uIGFuZCBwcm9taXNlcyBjb25zaWRlcmFibGUgY29zdCBhZHZhbnRhZ2VzLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbik7IEM3MjUwIChJbmZvcm1hdGlvbiBzdG9yYWdlIGFuZCByZXRyaWV2YWwpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjM7IDczMSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIFNoZWZmaWVsZCwgVUsiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYml0IHZlY3RvcjsgY2hhcmFjdGVyIHN0cmluZzsgZGF0YSBwcm9jZXNzaW5nIC0tLSBGaWxlIE9yZ2FuaXphdGlvbjsgZGlyZWN0IGFjY2VzczsgZmlsZSBvcmdhbml6YXRpb247IGluZm9ybWF0aW9uIHJldHJpZXZhbDsgaW5mb3JtYXRpb24gdGhlb3J5OyB0ZXh0IHNlYXJjaGluZyIsCiAga2V5d29yZHMgPSAgICAgImJpYmxpb2dyYXBoaWMgaW5mb3JtYXRpb247IGJpdCB2ZWN0b3I7IGNoYXJhY3RlciBzdHJpbmc7IGNoYXJhY3RlcmlzdGljczsgY29tcHV0ZXIgZmlsZXM7IGRpY3Rpb25hcmllczsgZGlyZWN0IGFjY2VzczsgZGlyZWN0IGFjY2VzcyBzeXN0ZW1zOyBmaWxlIG9yZ2FuaXNhdGlvbjsgaHlwZXJib2xpYyBmcmVxdWVuY3kgZGlzdHJpYnV0aW9uIG9mIHRleHQ7IGluZGV4IGtleXM7IGluZm9ybWF0aW9uIHJldHJpZXZhbDsgaW5mb3JtYXRpb24gdGhlb3J5OyBsYXJnZTsgcmVjdGFuZ3VsYXIgZGlzdHJpYnV0aW9uOyBzaW1wbGlmaWVkIGZpbGUgb3JnYW5pemF0aW9uOyB0ZXh0IHNlYXJjaGluZyIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7TWluaWVrYToxOTc0OkNTUywKICBhdXRob3IgPSAgICAgICAiRWR3YXJkIE1pbmlla2EiLAogIHRpdGxlID0gICAgICAgICJPbiBDb21wdXRpbmcgU2V0cyBvZiBTaG9ydGVzdCBQYXRocyBpbiBhIEdyYXBoIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE3IiwKICBudW1iZXIgPSAgICAgICAiNiIsCiAgcGFnZXMgPSAgICAgICAgIjM1MS0tMzUzIiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzQiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICIwNUMzNSIsCiAgTVJudW1iZXIgPSAgICAgIjQ5IDcxNzgiLAogIG1ycmV2aWV3ZXIgPSAgICJUb3JyZW5jZSBELiBQYXJzb25zIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlR3byBhbGdvcml0aG1zIGFyZSBwcmVzZW50ZWQgdGhhdCBjb25zdHJ1Y3QgdGhlICRrJCBzaG9ydGVzdCBwYXRocyBiZXR3ZWVuIGV2ZXJ5IHBhaXIgb2YgdmVydGljZXMgaW4gYSBkaXJlY3RlZCBncmFwaC4gVGhlc2UgYWxnb3JpdGhtcyBnZW5lcmFsaXplIHRoZSBGbG95ZCBhbGdvcml0aG0gYW5kIHRoZSBEYW50emlnIGFsZ29yaXRobSBmb3IgZmluZGluZyB0aGUgc2hvcnRlc3QgcGF0aCBiZXR3ZWVuIGV2ZXJ5IHBhaXIgb2YgdmVydGljZXMgaW4gYSBkaXJlY3RlZCBncmFwaC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNzE5MCAoT3RoZXIgZmllbGRzIG9mIGJ1c2luZXNzIGFuZCBhZG1pbmlzdHJhdGl2ZSBjb21wdXRpbmcpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI5MjEiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBJbGxpbm9pcywgQ2hpY2FnbywgSUwsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhbGdvcml0aG07IGNvbXB1dGVyIGFpZGVkIGFuYWx5c2lzOyBjcml0aWNhbCBwYXRoIGFuYWx5c2lzOyBEYW50emlnIGFsZ29yaXRobTsgZGlyZWN0ZWQgZ3JhcGg7IEZsb3lkIGFsZ29yaXRobTsgZ3JhcGg7IG1hdGhlbWF0aWNhbCB0ZWNobmlxdWVzOyBuZXR3b3JrOyBzaG9ydGVzdCBwYXRoOyBzaG9ydGVzdCBwYXRocyIsCiAgdHJlYXRtZW50ID0gICAgIkEgQXBwbGljYXRpb247IFAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7Uml0Y2hpZToxOTc0OlVUUywKICBhdXRob3IgPSAgICAgICAiRGVubmlzIE0uIFJpdGNoaWUgYW5kIEtlbiBUaG9tcHNvbiIsCiAgdGl0bGUgPSAgICAgICAgIlRoZSB7VU5JWH0gVGltZS1TaGFyaW5nIFN5c3RlbSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNyIsCiAgbnVtYmVyID0gICAgICAgIjciLAogIHBhZ2VzID0gICAgICAgICIzNjUtLTM3NSIsCiAgbW9udGggPSAgICAgICAganVsLAogIHllYXIgPSAgICAgICAgICIxOTc0IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EYXRhYmFzZS9XaWVkZXJob2xkLmJpYiBhbmQgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9QYXJhbGxlbC9NdWx0aS5iaWIiLAogIGFic3RyYWN0ID0gICAgICJUaGlzIHBhcGVyIGRpc2N1c3NlcyB0aGUgbmF0dXJlIGFuZCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgZmlsZSBzeXN0ZW0gYW5kIG9mIHRoZSB1c2VyIGNvbW1hbmQgaW50ZXJmYWNlLiBVTklYIGlzIGEgZ2VuZXJhbC1wdXJwb3NlLCBtdWx0aS11c2VyLCBpbnRlcmFjdGl2ZSBvcGVyYXRpbmcgc3lzdGVtIGZvciB0aGUgRGlnaXRhbCBFcXVpcG1lbnQgQ29ycG9yYXRpb24gUERQLTExXHNsYXNoIDQwIGFuZCAxMVxzbGFzaCA0NSBjb21wdXRlcnMuIEl0IG9mZmVycyBhIG51bWJlciBvZiBmZWF0dXJlcyBzZWxkb20gZm91bmQgZXZlbiBpbiBsYXJnZXIgb3BlcmF0aW5nIHN5c3RlbXMsIGluY2x1ZGluZzogKDEpIGEgaGllcmFyY2hpY2FsIGZpbGUgc3lzdGVtIGluY29ycG9yYXRpbmcgZGVtb3VudGFibGUgdm9sdW1lczsgKDIpIGNvbXBhdGlibGUgZmlsZSwgZGV2aWNlLCBhbmQgaW50ZXItcHJvY2VzcyBJL087ICgzKSB0aGUgYWJpbGl0eSB0byBpbml0aWF0ZSBhc3luY2hyb25vdXMgcHJvY2Vzc2VzOyAoNCkgc3lzdGVtIGNvbW1hbmQgbGFuZ3VhZ2Ugc2VsZWN0YWJsZSBvbiBhIHBlci11c2VyIGJhc2lzOyBhbmQgKDUpIG92ZXIgMTAwIHN1YnN5c3RlbXMgaW5jbHVkaW5nIGEgZG96ZW4gbGFuZ3VhZ2VzLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgYW5ub3RlID0gICAgICAgIkludGVyYWN0aXZlIG9wZXJhdGluZyBzeXN0ZW0gZm9yIFBEUC0xMSwgVkFYIHdpdGggYSBoaWVyYXJjaGljYWwgZmlsZSBzeXN0ZW0gaW5jb3Jwb3JhdGluZyBkZW1vdW50YWJsZSB2b2x1bWVzLiIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbik7IEM2MTUwSiAoT3BlcmF0aW5nIHN5c3RlbXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJCZWxsIExhYnMuLCBNdXJyYXkgSGlsbCwgTkosIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhc3luY2hyb25vdXM7IGNvbW1hbmQgbGFuZ3VhZ2U7IGNvbXBhdGlibGUgZmlsZTsgY29tcHV0ZXIgc3lzdGVtcyBwcm9ncmFtbWluZzsgZGVtb3VudGFibGUgdm9sdW1lczsgZmlsZSBvcmdhbmlzYXRpb247IGZpbGUgc3lzdGVtOyBoaWVyYXJjaGljYWwgZmlsZSBzeXN0ZW07IG9wZXJhdGluZzsgb3BlcmF0aW5nIHN5c3RlbXMgKGNvbXB1dGVycyk7IHByb2Nlc3Nlczsgc2hhcmluZyBzeXN0ZW1zOyBzeXN0ZW07IHN5c3RlbSBjb21tYW5kIGxhbmd1YWdlOyB0aW1lIHNoYXJpbmc7IHRpbWUtOyBVTklYIGludGVyYWN0aXZlIG9wZXJhdGluZyBzeXN0ZW0iLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0Z1bGxlcjoxOTc0Ok1UUCwKICBhdXRob3IgPSAgICAgICAiU2FtdWVsIEguIEZ1bGxlciIsCiAgdGl0bGUgPSAgICAgICAgIk1pbmltYWwtVG90YWwtUHJvY2Vzc2luZyBUaW1lIERydW0gYW5kIERpc2sgU2NoZWR1bGluZyBEaXNjaXBsaW5lcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNyIsCiAgbnVtYmVyID0gICAgICAgIjciLAogIHBhZ2VzID0gICAgICAgICIzNzYtLTM4MSIsCiAgbW9udGggPSAgICAgICAganVsLAogIHllYXIgPSAgICAgICAgICIxOTc0IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EYXRhYmFzZS9XaWVkZXJob2xkLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIlRoaXMgYXJ0aWNsZSBpbnZlc3RpZ2F0ZXMgdGhlIGFwcGxpY2F0aW9uIG9mIG1pbmltYWwtdG90YWwtcHJvY2Vzc2luZy10aW1lIChNVFBUKSBzY2hlZHVsaW5nIGRpc2NpcGxpbmVzIHRvIHJvdGF0aW5nIHN0b3JhZ2UgdW5pdHMgd2hlbiByYW5kb20gYXJyaXZhbCBvZiByZXF1ZXN0cyBpcyBhbGxvd2VkLiBGaXhlZC1oZWFkIGRydW0gYW5kIG1vdmluZy1oZWFkIGRpc2sgc3RvcmFnZSB1bml0cyBhcmUgY29uc2lkZXJlZCwgYW5kIGVtcGhhc2lzIGlzIHBsYWNlZCBvbiB0aGUgcmVsYXRpdmUgbWVyaXRzIG9mIHRoZSBNVFBUIHNjaGVkdWxpbmcgZGlzY2lwbGluZSB3aXRoIHJlc3BlY3QgdG8gdGhlIHNob3J0ZXN0LWxhdGVuY3ktdGltZS1maXJzdCAoU0xURikgc2NoZWR1bGluZyBkaXNjaXBsaW5lLiBUaGUgcmVzdWx0cyBvZiB0aGUgc2ltdWxhdGlvbiBzdHVkaWVzIHByZXNlbnRlZCBzaG93IHRoYXQgbmVpdGhlciBzY2hlZHVsaW5nIGRpc2NpcGxpbmUgaXMgdW5jb25kaXRpb25hbGx5IHN1cGVyaW9yIHRvIHRoZSBvdGhlci4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pOyBDNjE1MEogKE9wZXJhdGluZyBzeXN0ZW1zKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiQ2FybmVnaWUtTWVsbG9uIFVuaXYuLCBQaXR0c2J1cmdoLCBQQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIHByb2dyYW1taW5nIGxhbmd1YWdlcyIsCiAga2V5d29yZHMgPSAgICAgImRpc2Mgc2NoZWR1bGluZzsgZHJ1bSBzY2hlZHVsaW5nOyBmaXhlZCBoZWFkIGRydW07IGludHJhIGN5bGluZGVyIGRpc2M7IG1hbmFnZW1lbnQ7IG1pbmltYWwgdG90YWwgcHJvY2Vzc2luZyB0aW1lOyBtb3ZpbmcgaGVhZCBkaXNjOyBvcGVyYXRpbmcgc3lzdGVtcyAoY29tcHV0ZXJzKTsgcm90YXRpbmcgc3RvcmFnZSB1bml0czsgc2NoZWR1bGluZzsgc2NoZWR1bGluZyBkaXNjaXBsaW5lczsgc2hvcnRlc3QgbGF0ZW5jeSB0aW1lIGZpcnN0OyBzaW11bGF0aW9uOyBzb3J0aW5nOyBzdG9yYWdlIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtCcnVubzoxOTc0OlNJVCwKICBhdXRob3IgPSAgICAgICAiSi4gQnJ1bm8gYW5kIEUuIEcuIHtDb2ZmbWFuLCBKci59IGFuZCBSLiBTZXRoaSIsCiAgdGl0bGUgPSAgICAgICAgIlNjaGVkdWxpbmcgSW5kZXBlbmRlbnQgVGFza3MgVG8gUmVkdWNlIE1lYW4gRmluaXNoaW5nIFRpbWUiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTciLAogIG51bWJlciA9ICAgICAgICI3IiwKICBwYWdlcyA9ICAgICAgICAiMzgyLS0zODciLAogIG1vbnRoID0gICAgICAgIGp1bCwKICB5ZWFyID0gICAgICAgICAiMTk3NCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjkwQjM1IiwKICBNUm51bWJlciA9ICAgICAiNTAgOTMzOCIsCiAgbXJyZXZpZXdlciA9ICAgIkpvaG4gQy4gR2l0dGlucyIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGlzdHJpYnV0ZWQvUUxELzE5NzQuYmliIGFuZCBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0RhdGFiYXNlL0dyYWVmZS5iaWIiLAogIGFic3RyYWN0ID0gICAgICJBIGRldGVybWluaXN0aWMgbW9kZWwgb2YgaW5kZXBlbmRlbnQgdGFza3MgaXMgaW50cm9kdWNlZCBhbmQgbmV3IHJlc3VsdHMgYXJlIGRlcml2ZWQgd2hpY2ggZXh0ZW5kIGFuZCBnZW5lcmFsaXplIHRoZSBhbGdvcml0aG1zIGtub3duIGZvciBtaW5pbWl6aW5nIG1lYW4gZmluaXNoaW5nIHRpbWUuIEluIGFkZGl0aW9uIHRvIHByZXNlbnRpbmcgYW5kIGFuYWx5emluZyBuZXcgYWxnb3JpdGhtcyBpdCBpcyBzaG93biB0aGF0IHRoZSBtb3N0IGdlbmVyYWwgbWVhbi1maW5pc2hpbmctdGltZSBwcm9ibGVtIGZvciBpbmRlcGVuZGVudCB0YXNrcyBpcyBwb2x5bm9taWFsIGNvbXBsZXRlLCBoZW5jZSB1bmxpa2VseSB0byBhZG1pdCBvZiBhIG5vbi1lbnVtZXJhdGl2ZSBzb2x1dGlvbi4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJCMDI2MCAoT3B0aW1pc2F0aW9uIHRlY2huaXF1ZXMpOyBDMTE4MCAoT3B0aW1pc2F0aW9uIHRlY2huaXF1ZXMpOyBDNjE1MEogKE9wZXJhdGluZyBzeXN0ZW1zKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiUGVubnN5bHZhbmlhIFN0YXRlIFVuaXYuLCBVbml2ZXJzaXR5IFBhcmssIFBBLCBVU0EiLAogIGRlc2NyaXB0b3JzID0gICJTY2hlZHVsaW5nOyBGaW5pc2ggVGltZTsiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiQ0FDTTsgY29tcHV0ZXIgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzOyBkZXRlcm1pbmlzdGljIG1vZGVsOyBpbmRlcGVuZGVudCB0YXNrczsgbWVhbiBmaW5pc2hpbmcgdGltZTsgbWluaW1pc2F0aW9uOyBtaW5pbWl6ZTsgbWluaW1pemluZyBtZWFuIGZpbmlzaGluZyB0aW1lOyBtaW5pbWl6aW5nIG1lYW4gZmxvdyB0aW1lOyBvcGVyYXRpbmcgc3lzdGVtcyAoY29tcHV0ZXJzKTsgb3B0aW1hbDsgcG9seW5vbWlhbCBjb21wbGV0ZTsgc2NoZWR1bGluZzsgc2NoZWR1bGluZyBhbGdvcml0aG1zOyBzY2hlZHVsaW5nIGluZGVwZW5kZW50IHRhc2tzOyBzZXF1ZW5jaW5nIGFsZ29yaXRobXM7IHN0b3JhZ2UgcmVxdWlyZWQiLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle1NhbHR6ZXI6MTk3NDpQQ0ksCiAgYXV0aG9yID0gICAgICAgIkplcm9tZSBILiBTYWx0emVyIiwKICB0aXRsZSA9ICAgICAgICAiUHJvdGVjdGlvbiBhbmQgdGhlIENvbnRyb2wgb2YgSW5mb3JtYXRpb24gU2hhcmluZyBpbiB7TXVsdGljc30iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTciLAogIG51bWJlciA9ICAgICAgICI3IiwKICBwYWdlcyA9ICAgICAgICAiMzg4LS00MDIiLAogIG1vbnRoID0gICAgICAgIGp1bCwKICB5ZWFyID0gICAgICAgICAiMTk3NCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGF0YWJhc2UvR3JhZWZlLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIlRoZSBkZXNpZ24gb2YgbWVjaGFuaXNtcyB0byBjb250cm9sIHRoZSBzaGFyaW5nIG9mIGluZm9ybWF0aW9uIGluIHRoZSBNdWx0aWNzIHN5c3RlbSBpcyBkZXNjcmliZWQuIEZpdmUgZGVzaWduIHByaW5jaXBsZXMgaGVscCBwcm92aWRlIGluc2lnaHQgaW50byB0aGUgdHJhZGVvZmZzIGFtb25nIGRpZmZlcmVudCBwb3NzaWJsZSBkZXNpZ25zLiBUaGUga2V5IG1lY2hhbmlzbXMgZGVzY3JpYmVkIGluY2x1ZGUgYWNjZXNzIGNvbnRyb2wgbGlzdHMsIGhpZXJhcmNoaWNhbCBjb250cm9sIG9mIGFjY2VzcyBzcGVjaWZpY2F0aW9ucywgaWRlbnRpZmljYXRpb24gYW5kIGF1dGhlbnRpY2F0aW9uIG9mIHVzZXJzLCBhbmQgcHJpbWFyeSBtZW1vcnkgcHJvdGVjdGlvbi4gVGhlIHBhcGVyIGVuZHMgd2l0aCBhIGRpc2N1c3Npb24gb2Ygc2V2ZXJhbCBrbm93biB3ZWFrbmVzc2VzIGluIHRoZSBjdXJyZW50IHByb3RlY3Rpb24gbWVjaGFuaXNtIGRlc2lnbi4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDMDMxMCAoRURQIG1hbmFnZW1lbnQpOyBDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKTsgQzYxNTBKIChPcGVyYXRpbmcgc3lzdGVtcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIk1JVCwgQ2FtYnJpZGdlLCBNQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFjY2VzcyBjb250cm9sIGxpc3RzOyBhdXRoZW50aWNhdGlvbjsgY29tcHV0ZXIgc3lzdGVtcyBwcm9ncmFtbWluZzsgY29udHJvbDsgY29udHJvbCBvZiBhY2Nlc3Mgc3BlY2lmaWNhdGlvbnM7IGRlc2NyaXB0b3JzOyBkZXNpZ24gcHJpbmNpcGxlczsgaGllcmFyY2hpY2FsOyBpZGVudGlmaWNhdGlvbjsgaW5mb3JtYXRpb24gc2hhcmluZzsgbWVjaGFuaXNtIGRlc2lnbjsgTXVsdGljcyBzeXN0ZW07IG9wZXJhdGluZyBzeXN0ZW1zIChjb21wdXRlcnMpOyBvcGVyYXRpbmcgdmlydHVhbCBtZW1vcnkgQ0FDTTsgcHJpbWFyeSBtZW1vcnkgcHJvdGVjdGlvbjsgcHJpdmFjeTsgcHJvdGVjdGlvbjsgc2VjdXJpdHk7IHNlY3VyaXR5IG9mIGRhdGE7IHN0b3JhZ2U7IHRpbWUgc2hhcmluZyBzeXN0ZW1zOyB2aXJ0dWFsOyB2aXJ0dWFsIG1lbW9yeSIsCiAgdHJlYXRtZW50ID0gICAgIkEgQXBwbGljYXRpb247IFAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7RmFicnk6MTk3NDpDQkEsCiAgYXV0aG9yID0gICAgICAgIlIuIFMuIEZhYnJ5IiwKICB0aXRsZSA9ICAgICAgICAiQ2FwYWJpbGl0eS1CYXNlZCBBZGRyZXNzaW5nIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE3IiwKICBudW1iZXIgPSAgICAgICAiNyIsCiAgcGFnZXMgPSAgICAgICAgIjQwMy0tNDEyIiwKICBtb250aCA9ICAgICAgICBqdWwsCiAgeWVhciA9ICAgICAgICAgIjE5NzQiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0RhdGFiYXNlL0dyYWVmZS5iaWIgYW5kIGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvTWlzYy9vcy5iaWIgYW5kIGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvT2JqZWN0L05pZXJzdHJhc3ouYmliIiwKICBhYnN0cmFjdCA9ICAgICAiVmFyaW91cyBhZGRyZXNzaW5nIHNjaGVtZXMgbWFraW5nIHVzZSBvZiBzZWdtZW50IHRhYmxlcyBhcmUgZXhhbWluZWQuIFRoZSBpbmFkZXF1YWNpZXMgb2YgdGhlc2Ugc2NoZW1lcyB3aGVuIGRlYWxpbmcgd2l0aCBzaGFyZWQgYWRkcmVzc2VzIGFyZSBleHBsYWluZWQuIFRoZXNlIGluYWRlcXVhY2llcyBhcmUgdHJhY2VkIHRvIHRoZSBsYWNrIG9mIGFuIGVmZmljaWVudCBhYnNvbHV0ZSBhZGRyZXNzIGZvciBvYmplY3RzIGluIHRoZXNlIHN5c3RlbXMuIFRoZSBkaXJlY3QgdXNlIG9mIGEgY2FwYWJpbGl0eSBhcyBhbiBhZGRyZXNzIGlzIHNob3duIHRvIG92ZXJjb21lIHRoZXNlIGRpZmZpY3VsdGllcyBiZWNhdXNlIGl0IHByb3ZpZGVzIHRoZSBuZWVkZWQgYWJzb2x1dGUgYWRkcmVzcy4gSW1wbGVtZW50YXRpb24gb2YgY2FwYWJpbGl0eS1iYXNlZCBhZGRyZXNzaW5nIGlzIGRpc2N1c3NlZC4gSXQgaXMgcHJlZGljdGVkIHRoYXQgdGhlIHVzZSBvZiB0YWdzIHRvIGlkZW50aWZ5IGNhcGFiaWxpdGllcyB3aWxsIGRvbWluYXRlLiBBIGhhcmR3YXJlIGFkZHJlc3MgdHJhbnNsYXRpb24gc2NoZW1lIHdoaWNoIG5ldmVyIHJlcXVpcmVzIHRoZSBtb2RpZmljYXRpb24gb2YgdGhlIHJlcHJlc2VudGF0aW9uIG9mIGNhcGFiaWxpdGllcyBpcyBzdWdnZXN0ZWQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBhbm5vdGUgPSAgICAgICAiVGhlIGRpcmVjdCB1c2Ugb2YgYSBjYXBhYmlsaXR5IGFzIGFuIGFkZHJlc3MgaXMgc2hvd24gdG8gYmUgdXNlZnVsIHdoZW4gZGVhbGluZyB3aXRoIHNoYXJlZCBhZGRyZXNzZXMuIEltcGxlbWVudGF0aW9uIG9mIGNhcGFiaWxpdHktYmFzZWQgYWRkcmVzc2luZyBpcyBkaXNjdXNzZWQuIiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzOyA5MDEiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBDYWxpZm9ybmlhLCBCZXJrZWxleSwgQ0EsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhZGRyZXNzIHRyYW5zbGF0aW9uIHNjaGVtZTsgYWRkcmVzc2VzOyBhZGRyZXNzaW5nOyBhZGRyZXNzaW5nIGhhcmR3YXJlOyBhZGRyZXNzaW5nIHNjaGVtZXM7IGFzc29jaWF0aXZlOyBjYXBhYmlsaXRpZXM7IGNhcGFiaWxpdHkgYmFzZWQgYWRkcmVzc2luZzsgY29kZTsgY29tcHV0ZXIgdXRpbGl0eTsgZGF0YSBzdHJ1Y3R1cmVzOyBoYXJkd2FyZTsgaGFzaCB0YWJsZTsgaW5mb3JtYXRpb24gc2hhcmluZzsgb3BlcmF0aW5nIHN5c3RlbXM7IHByb2dyYW1taW5nIGNvbnZlbnRpb25zOyBwcm90ZWN0aW9uOyBwcm90ZWN0aW9uIGhhcmR3YXJlOyByZWdpc3RlcnM7IHNlY3VyaXR5IG9mIGRhdGE7IHNlZ21lbnQgdGFibGVzOyBzaGFyZWQ7IHN0b3JhZ2UgbWFuYWdlbWVudDsgdGFnZ2VkIGFyY2hpdGVjdHVyZTsgdGFncyIsCiAga2V5d29yZHMgPSAgICAgIkNBQ00gbWVtb3J5IG1hbmFnZW1lbnQgc2VnbWVudHMgcGFnZXMgb3BlcmF0aW5nIHNlY3VyaXR5IG9saXQgY2FwYWJpbGl0aWVzOyBpbmZvcm1hdGlvbiByZXRyaWV2YWwgc3lzdGVtcyIsCiAgdHJlYXRtZW50ID0gICAgIkEgQXBwbGljYXRpb247IFAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7UG9wZWs6MTk3NDpGUlYsCiAgYXV0aG9yID0gICAgICAgIkdlcmFsZCBKLiBQb3BlayBhbmQgUm9iZXJ0IFAuIEdvbGRiZXJnIiwKICB0aXRsZSA9ICAgICAgICAiRm9ybWFsIFJlcXVpcmVtZW50cyBmb3IgVmlydHVhbGl6YWJsZSBUaGlyZCBHZW5lcmF0aW9uIEFyY2hpdGVjdHVyZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTciLAogIG51bWJlciA9ICAgICAgICI3IiwKICBwYWdlcyA9ICAgICAgICAiNDEyLS00MjEiLAogIG1vbnRoID0gICAgICAgIGp1bCwKICB5ZWFyID0gICAgICAgICAiMTk3NCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4QTA1IiwKICBNUm51bWJlciA9ICAgICAiNDkgMTAxNzciLAogIG1ycmV2aWV3ZXIgPSAgICJJLiBLYXVmbWFubiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGF0YWJhc2UvV2llZGVyaG9sZC5iaWIiLAogIGFic3RyYWN0ID0gICAgICJBIG1vZGVsIG9mIGEgdGhpcmQtZ2VuZXJhdGlvbi1saWtlIGNvbXB1dGVyIHN5c3RlbSBpcyBkZXZlbG9wZWQuIEZvcm1hbCB0ZWNobmlxdWVzIGFyZSB1c2VkIHRvIGRlcml2ZSBwcmVjaXNlIHN1ZmZpY2llbnQgY29uZGl0aW9ucyB0byB0ZXN0IHdoZXRoZXIgc3VjaCBhbiBhcmNoaXRlY3R1cmUgY2FuIHN1cHBvcnQgdmlydHVhbCBtYWNoaW5lcy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNTIyMCAoQ29tcHV0ZXIgYXJjaGl0ZWN0dXJlKTsgQzc0MzAgKENvbXB1dGVyIGVuZ2luZWVyaW5nKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIyIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gQ2FsaWZvcm5pYSwgTG9zIEFuZ2VsZXMsIENBLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYWJzdHJhY3QgbW9kZWw7IGFyY2hpdGVjdHVyZXM7IGNvbXB1dGVyIGFyY2hpdGVjdHVyZTsgY29tcHV0ZXIgb3BlcmF0aW5nIHN5c3RlbXM7IGZvcm1hbCByZXF1aXJlbWVudHM7IGdlbmVyYXRpb24gYXJjaGl0ZWN0dXJlOyBoeXBlcnZpc29yOyBvcGVyYXRpbmcgc3lzdGVtOyBzdWZmaWNpZW50IGNvbmRpdGlvbnM7IHN5c3RlbXM7IHRoaXJkOyB0aGlyZCBnZW5lcmF0aW9uIGNvbXB1dGVyOyB2aXJ0dWFsIG1hY2hpbmU7IHZpcnR1YWwgbWFjaGluZSBtb25pdG9yOyB2aXJ0dWFsIG1hY2hpbmVzOyB2aXJ0dWFsIG1lbW9yeTsgdmlydHVhbGl6YWJsZSB0aGlyZCBnZW5lcmF0aW9uIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtIYWhuOjE5NzQ6TlRDLAogIGF1dGhvciA9ICAgICAgICJCcnVjZSBIYWhuIiwKICB0aXRsZSA9ICAgICAgICAiQSBOZXcgVGVjaG5pcXVlIGZvciBDb21wcmVzc2lvbiBhbmQgU3RvcmFnZSBvZiBEYXRhIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE3IiwKICBudW1iZXIgPSAgICAgICAiOCIsCiAgcGFnZXMgPSAgICAgICAgIjQzNC0tNDM2IiwKICBtb250aCA9ICAgICAgICBhdWcsCiAgeWVhciA9ICAgICAgICAgIjE5NzQiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0RhdGFiYXNlL1dpZWRlcmhvbGQuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiVGhpcyBwYXBlciBkZXNjcmliZXMgdGVjaG5pcXVlcyB0aGF0IGNhbiwgaW4gbW9zdCBjYXNlcywgZGVjcmVhc2Ugc3RvcmFnZSBzaXplIGJ5IGEgZmFjdG9yIG9mIGZyb20gdHdvIHRvIGZvdXIuIFRoZSB0ZWNobmlxdWVzIGludm9sdmUgc3BlY2lhbCBoYW5kbGluZyBvZiBsZWFkaW5nIGFuZCB0cmFpbGluZyBibGFua3MsIGFuZCB0aGUgZW5jb2Rpbmcgb2Ygb3RoZXIgc3ltYm9scyBpbiBncm91cHMgb2YgZml4ZWQgc2l6ZSBhcyB1bmlxdWUgZml4ZWQgcG9pbnQgbnVtYmVycy4gVGhlIGVmZmljaWVuY3kgb2YgdGhlIHN5c3RlbSBpcyBjb25zaWRlcmVkIGFuZCBwZXJ0aW5lbnQgc3RhdGlzdGljcyBhcmUgZ2l2ZW4gYW5kIGNvbXBhcmVkIHdpdGggc3RhdGlzdGljcyBmb3Igb3RoZXIgaW5mb3JtYXRpb24gY29kaW5nIHRlY2huaXF1ZXMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBhbm5vdGUgPSAgICAgICAiR2VuZXJhdGlvbiBvZiBhIGNoYXJhY3RlciBkaWN0aW9uYXJ5IGFuZCBpdHMgdXNlIHRvIG1pbmltaXplIHNwYWNlLiIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbik7IEM2MTMwIChEYXRhIGhhbmRsaW5nIHRlY2huaXF1ZXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MzEiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBXYXRlcmxvbywgT250LiwgQ2FuYWRhIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvZGluZyB0ZWNobmlxdWVzOyBjb21wcmVzc2lvbjsgZGF0YSBoYW5kbGluZzsgZGF0YSBtYW5hZ2VtZW50OyBkYXRhIHN0b3JhZ2U7IGVmZmljaWVuY3k7IGVuY29kaW5nOyBmaWxlIG1haW50ZW5hbmNlOyBmaWxlIG9yZ2FuaXNhdGlvbjsgZml4ZWQgcG9pbnQgbnVtYmVyczsgaW5mb3JtYXRpb24gY29kaW5nIHRlY2huaXF1ZXM7IGluZm9ybWF0aW9uIHRoZW9yeTsgcHJvZ3JhbXM7IHRleHQgY29tcHJlc3Npb247IHV0aWxpdHkiLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0V2YW5zOjE5NzQ6VUFTLAogIGF1dGhvciA9ICAgICAgICJBcnRodXIge0V2YW5zLCBKci59IGFuZCBXaWxsaWFtIEthbnRyb3dpdHogYW5kIEVkd2luIFdlaXNzIiwKICB0aXRsZSA9ICAgICAgICAiQSBVc2VyIEF1dGhlbnRpY2F0aW9uIFNjaGVtZSBOb3QgUmVxdWlyaW5nIFNlY3JlY3kgaW4gdGhlIENvbXB1dGVyIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE3IiwKICBudW1iZXIgPSAgICAgICAiOCIsCiAgcGFnZXMgPSAgICAgICAgIjQzNy0tNDQyIiwKICBtb250aCA9ICAgICAgICBhdWcsCiAgeWVhciA9ICAgICAgICAgIjE5NzQiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0RhdGFiYXNlL1dpZWRlcmhvbGQuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiSW4gbWFueSBjb21wdXRlciBvcGVyYXRpbmcgc3lzdGVtcyBhIHVzZXIgYXV0aGVudGljYXRlcyBoaW1zZWxmIGJ5IGVudGVyaW5nIGEgc2VjcmV0IHBhc3N3b3JkIGtub3duIHNvbGVseSB0byBoaW1zZWxmIGFuZCB0aGUgc3lzdGVtLiBUaGUgc3lzdGVtIGNvbXBhcmVzIHRoaXMgcGFzc3dvcmQgd2l0aCBvbmUgcmVjb3JkZWQgaW4gYSBQYXNzd29yZCBUYWJsZSB3aGljaCBpcyBhdmFpbGFibGUgdG8gb25seSB0aGUgYXV0aGVudGljYXRpb24gcHJvZ3JhbS4gVGhlIGludGVncml0eSBvZiB0aGUgc3lzdGVtIGRlcGVuZHMgb24ga2VlcGluZyB0aGUgdGFibGUgc2VjcmV0LiBJbiB0aGlzIHBhcGVyIGEgcGFzc3dvcmQgc2NoZW1lIGlzIHByZXNlbnRlZCB3aGljaCBkb2VzIG5vdCByZXF1aXJlIHNlY3JlY3kgaW4gdGhlIGNvbXB1dGVyLiBBbGwgYXNwZWN0cyBvZiB0aGUgc3lzdGVtLCBpbmNsdWRpbmcgYWxsIHJlbGV2YW50IGNvZGUgYW5kIGRhdGEgYmFzZXMsIG1heSBiZSBrbm93biBieSBhbnlvbmUgYXR0ZW1wdGluZyB0byBpbnRydWRlLiBUaGUgc2NoZW1lIGlzIGJhc2VkIG9uIHVzaW5nIGEgZnVuY3Rpb24gSCB3aGljaCB0aGUgd291bGQtYmUgaW50cnVkZXIgaXMgdW5hYmxlIHRvIGludmVydC4gVGhpcyBmdW5jdGlvbiBpcyBhcHBsaWVkIHRvIHRoZSB1c2VyJ3MgcGFzc3dvcmQgYW5kIHRoZSByZXN1bHQgY29tcGFyZWQgdG8gYSB0YWJsZSBlbnRyeSwgYSBtYXRjaCBiZWluZyBpbnRlcnByZXRlZCBhcyBhdXRoZW50aWNhdGlvbiBvZiB0aGUgdXNlci4gVGhlIGludHJ1ZGVyIG1heSBrbm93IGFsbCBhYm91dCBIIGFuZCBoYXZlIGFjY2VzcyB0byB0aGUgdGFibGUsIGJ1dCBoZSBjYW4gcGVuZXRyYXRlIHRoZSBzeXN0ZW0gb25seSBpZiBoZSBjYW4gaW52ZXJ0IEggdG8gZGV0ZXJtaW5lIGFuIGlucHV0IHRoYXQgcHJvZHVjZXMgYSBnaXZlbiBvdXRwdXQuIFRoaXMgcGFwZXIgZGlzY3Vzc2VzIGlzc3VlcyBzdXJyb3VuZGluZyBzZWxlY3Rpb24gb2YgYSBzdWl0YWJsZSBILiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgYW5ub3RlID0gICAgICAgIlBhc3N3b3JkIHByb3RlY3Rpb24gYnkgaXJyZXZlcnNpYmxlIHRyYW5zZm9ybWF0aW9uIiwKICBjbGFzc2NvZGVzID0gICAiQzYxMzAgKERhdGEgaGFuZGxpbmcgdGVjaG5pcXVlcyk7IEM2MTUwSiAoT3BlcmF0aW5nIHN5c3RlbXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjI7IDcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIk1JVCwgTGV4aW5ndG9uLCBNQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImF1dGhlbnRpY2F0aW9uOyBjb21wdXRlciBvcGVyYXRpbmcgc3lzdGVtczsgY3J5cHRvbG9neTsgZW5naW5lZXJpbmcgcHJvYmxlbXM7IGh1bWFuOyBpbnZlcnQ7IG9uZSB3YXkgZW5jcnlwdGlvbjsgb3BlcmF0aW5nIHN5c3RlbSBzZWN1cml0eTsgb3BlcmF0aW5nIHN5c3RlbXMgKGNvbXB1dGVycyk7IHBhc3N3b3JkIHNjaGVtZTsgc2VjdXJpdHk7IHNlY3VyaXR5IG9mIGRhdGE7IHVzZXIgYXV0aGVudGljYXRpb24gc2NoZW1lIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtQdXJkeToxOTc0OkhTTCwKICBhdXRob3IgPSAgICAgICAiR2VvcmdlIEIuIFB1cmR5IiwKICB0aXRsZSA9ICAgICAgICAiQSBIaWdoIFNlY3VyaXR5IExvZy1pbiBQcm9jZWR1cmUiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTciLAogIG51bWJlciA9ICAgICAgICI4IiwKICBwYWdlcyA9ICAgICAgICAiNDQyLS00NDUiLAogIG1vbnRoID0gICAgICAgIGF1ZywKICB5ZWFyID0gICAgICAgICAiMTk3NCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGF0YWJhc2UvV2llZGVyaG9sZC5iaWIiLAogIGFic3RyYWN0ID0gICAgICJUaGUgcHJvdGVjdGlvbiBvZiB0aW1lIHNoYXJpbmcgc3lzdGVtcyBmcm9tIHVuYXV0aG9yaXplZCB1c2VycyBpcyBvZnRlbiBhY2hpZXZlZCBieSB0aGUgdXNlIG9mIHBhc3N3b3Jkcy4gQnkgdXNpbmcgb25lLXdheSBjaXBoZXJzIHRvIGNvZGUgdGhlIHBhc3N3b3JkcywgdGhlIHJpc2tzIGludm9sdmVkIHdpdGggc3RvcmluZyB0aGUgcGFzc3dvcmRzIGluIHRoZSBjb21wdXRlciBjYW4gYmUgYXZvaWRlZC4gVGhlIHNlbGVjdGlvbiBvZiBhIHN1aXRhYmxlIG9uZS13YXkgY2lwaGVyIGlzIGRpc2N1c3NlZC4gSXQgaXMgc3VnZ2VzdGVkIHRoYXQgZm9yIHRoaXMgcHVycG9zZSBwb2x5bm9taWFscyBvdmVyIGEgcHJpbWUgbW9kdWx1cyBhcmUgc3VwZXJpb3IgdG8gb25lLXdheSBjaXBoZXJzIGRlcml2ZWQgZnJvbSBTaGFubm9uIGNvZGVzLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgYW5ub3RlID0gICAgICAgIlBhc3N3b3JkIHByb3RlY3Rpb24gYnkgaXJyZXZlcnNpYmxlIGNyeXB0b2dyYXBoaWMgdHJhbnNmb3JtYXRpb24iLAogIGNsYXNzY29kZXMgPSAgICJDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKTsgQzYxNTBKIChPcGVyYXRpbmcgc3lzdGVtcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMjsgNzIzIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gSWxsaW5vaXMsIFVyYmFuYS1DaGFtcGFpZ24sIElMLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29kZTsgY29tcHV0ZXIgb3BlcmF0aW5nIHN5c3RlbXM7IGNyeXB0b2dyYXBoeTsgZGF0YSBwcm9jZXNzaW5nIC0tLSBTZWN1cml0eSBvZiBEYXRhOyBvbmUgd2F5IGNpcGhlcnM7IG9wZXJhdGluZyBzeXN0ZW1zOyBvcGVyYXRpbmcgc3lzdGVtcyAoY29tcHV0ZXJzKTsgcGFzc3dvcmRzOyBzZWN1cml0eTsgc2VjdXJpdHkgb2YgZGF0YTsgdGltZSBzaGFyaW5nIHN5c3RlbXMiLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0ZyaWVkbWFuOjE5NzQ6RVRSLAogIGF1dGhvciA9ICAgICAgICJUaGVvZG9yZSBELiBGcmllZG1hbiBhbmQgTGFuY2UgSi4gSG9mZm1hbiIsCiAgdGl0bGUgPSAgICAgICAgIkV4ZWN1dGlvbiBUaW1lIFJlcXVpcmVtZW50cyBmb3IgRW5jaXBoZXJtZW50IFByb2dyYW1zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE3IiwKICBudW1iZXIgPSAgICAgICAiOCIsCiAgcGFnZXMgPSAgICAgICAgIjQ0NS0tNDQ5IiwKICBtb250aCA9ICAgICAgICBhdWcsCiAgeWVhciA9ICAgICAgICAgIjE5NzQiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0RhdGFiYXNlL1dpZWRlcmhvbGQuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiVGhlIHRpbWUgdGFrZW4gdG8gZGVjaXBoZXIgMjAsMDAwIHdvcmRzIG9mIGRhdGEgYnkgZm91ciBhZGRpdGl2ZSBtZXRob2RzIG9uIGEgQ29udHJvbCBEYXRhIDY0MDAgY29tcHV0ZXIgd2FzIG1lYXN1cmVkIHVzaW5nIGFzc2VtYmx5IGxhbmd1YWdlIGFuZCBGb3J0cmFuIHJvdXRpbmVzLiBTdGFuZGFyZCBkZXZpYXRpb25zIHdlcmUgY29tcHV0ZWQgZm9yIDEwMCBydW5zIGJ5IGVhY2ggbWV0aG9kLCBhbmQgZnJvbSB0aGlzIHRoZSByYW5nZSBvZiBlcnJvciBhdCB0aGUgOTUgcGVyY2VudCBjb25maWRlbmNlIGxldmVsIHdhcyBjYWxjdWxhdGVkLiBUaGUgdGltZSByZXF1aXJlZCBmb3Igc2VsZWN0aW5nIGFuZCBmZXRjaGluZyB0aGUgcGxhaW50ZXh0IGRhdGEgYW5kIGZvciBzdG9yaW5nIHRoZSBjaXBoZXJ0ZXh0IHdhcyBzZXBhcmF0ZWx5IG1lYXN1cmVkICh0aGUgYGBudWxsIHRyYW5zZm9ybWF0aW9uJycgKSwgYW5kIHdhcyB0aGVuIGNvbXBhcmVkIHdpdGggdGhlIHRpbWVzIHJlcXVpcmVkIGJ5IGVhY2ggZW5jaXBoZXJpbmcgbWV0aG9kLiBUaGUgZW5jaXBoZXJpbmcgcHJvY2Vzc2VzIHJlcXVpcmVkIGF0IGxlYXN0IGZvdXIgdGltZXMgYXMgbXVjaCBjcHUgdGltZSB3aGVuIHByb2dyYW1tZWQgaW4gRm9ydHJhbi4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKTsgQzYxNTBKIChPcGVyYXRpbmcgc3lzdGVtcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIENhbGlmb3JuaWEsIEJlcmtlbGV5LCBDQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFkZGl0aXZlIGNpcGhlcnM7IGFzc2VtYmx5IGxhbmd1YWdlOyBjcHU7IGNyeXB0b2dyYXBoeTsgY3J5cHRvbG9neTsgZGF0YSBwcm9jZXNzaW5nOyBkb3VibGUga2V5IGVuY2lwaGVybWVudDsgZW5jaXBoZXJpbmcgdGltZSBjb2VmZmljaWVudDsgZW5jaXBoZXJtZW50IHByb2dyYW1zOyBlcnJvcnM7IGV4ZWN1dGlvbiB0aW1lOyBleHBlcmltZW50czsgRm9ydHJhbjsgbnVsbDsgb25lIHdvcmQga2V5OyBvcGVyYXRpbmcgc3lzdGVtcyAoY29tcHV0ZXJzKTsgcHJpdmFjeSB0cmFuc2Zvcm1hdGlvbnM7IHByb3RlY3Rpb247IHBzZXVkbyByYW5kb20ga2V5OyBzZWN1cml0eTsgc2VjdXJpdHkgb2YgZGF0YTsgdGltZTsgdHJhbnNmb3JtYXRpb24iLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbDsgWCBFeHBlcmltZW50YWwiLAp9CgpAQXJ0aWNsZXtOZXVmZWxkOjE5NzQ6R0NDLAogIGF1dGhvciA9ICAgICAgICJHLiBBLiBOZXVmZWxkIGFuZCBKLiBUYXJ0YXIiLAogIHRpdGxlID0gICAgICAgICJHcmFwaCBDb2xvcmluZyBDb25kaXRpb25zIGZvciB0aGUgRXhpc3RlbmNlIG9mIFNvbHV0aW9ucyB0byB0aGUgVGltZXRhYmxlIFByb2JsZW0iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTciLAogIG51bWJlciA9ICAgICAgICI4IiwKICBwYWdlcyA9ICAgICAgICAiNDUwLS00NTMiLAogIG1vbnRoID0gICAgICAgIGF1ZywKICB5ZWFyID0gICAgICAgICAiMTk3NCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjkwQjM1IiwKICBNUm51bWJlciA9ICAgICAiNTIgMTY1OTQiLAogIG1ycmV2aWV3ZXIgPSAgICJFdGhhbiBELiBCb2xrZXIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L1RoZW9yeS9ncmFwaC5jb2xvcmluZy5iaWIiLAogIGFic3RyYWN0ID0gICAgICJBIG5lY2Vzc2FyeSBhbmQgc3VmZmljaWVudCBjb25kaXRpb24gaXMgcHJlc2VudGVkIGZvciB0aGUgZXhpc3RlbmNlIG9mIGEgc29sdXRpb24gdG8gdGhlIEdvdGxpZWIgY2xhc3MtdGVhY2hlciB0aW1ldGFibGUgcHJvYmxlbS4gU2V2ZXJhbCByZWxhdGlvbnNoaXBzIGFyZSBlc3RhYmxpc2hlZCBiZXR3ZWVuIHRoZSBjbGFzcy10ZWFjaGVyIHRpbWV0YWJsZSBwcm9ibGVtIGFuZCBncmFwaHMgd2l0aCBwcmVjb25kaXRpb25zLiBUaGVzZSBwcmVjb25kaXRpb25zIHBsYWNlIGFkZGl0aW9uYWwgcmVzdHJpY3Rpb25zIG9uIHRoZSBjb2xvcmF0aW9uIG9mIGEgZ3JhcGguIFRoZSBwcmVjb25kaXRpb25zIGNvcnJlc3BvbmQgdG8gdGhlIHVuYXZhaWxhYmlsaXR5IGNvbnN0cmFpbnRzIGFuZCBwcmVhc3NpZ25lZCBtZWV0aW5ncyBpbiB0aGUgY2xhc3MtdGVhY2hlciB0aW1ldGFibGUgcHJvYmxlbS4gVXNpbmcgc29tZSByZWNlbnQgcmVzdWx0cyB0aGF0IGNvbnZlcnQgZ3JhcGhzIHdpdGggcHJlY29uZGl0aW9ucyB0byBncmFwaHMgd2l0aG91dCB0aGVtLCBpdCBpcyBzaG93biB0aGF0IHRoZSBleGlzdGVuY2Ugb2YgYSBjb2xvcmF0aW9uIG9mIGEgZ3JhcGggaXMgdGhlIHJlcXVpcmVkIG5lY2Vzc2FyeSBhbmQgc3VmZmljaWVudCBjb25kaXRpb24uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjAyNTAgKENvbWJpbmF0b3JpYWwgbWF0aGVtYXRpY3MpOyBDMTE2MCAoQ29tYmluYXRvcmlhbCBtYXRoZW1hdGljcyk7IEM3MTEwIChFZHVjYXRpb25hbCBhZG1pbmlzdHJhdGlvbikiLAogIGNsYXNzaWZpY2F0aW9uID0gIjkxMjsgOTIxIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gQWxiZXJ0YSwgRWRtb250b24sIEFsdGEuLCBDYW5hZGEiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY2xhc3MtdGVhY2hlciB0aW1ldGFibGUgcHJvYmxlbTsgY2xhc3MtdGVhY2hlciB0aW1ldGFibGVzOyBjb2xvcmF0aW9uOyBlZHVjYXRpb25hbCBhZG1pbmlzdHJhdGl2ZSBkYXRhIHByb2Nlc3Npbmc7IGdyYXBoIGNvbG91cmluZyBjb25kaXRpb25zOyBncmFwaCB0aGVvcnk7IGdyYXBoczsgZ3JhcGhzIHdpdGggcHJlY29uZGl0aW9uczsgbWF0aGVtYXRpY2FsIHRlY2huaXF1ZXM7IG5lY2Vzc2FyeSBhbmQ7IG9wZXJhdGlvbnMgcmVzZWFyY2g7IHByZWFzc2lnbm1lbnQ7IHByZXZlbnRpb24gb2YgYXNzaWdubWVudDsgc2NoZWR1bGluZzsgc3VmZmljaWVudCBjb25kaXRpb247IHRpbWV0YWJsZSBwcm9ibGVtIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtMYW1wb3J0OjE5NzQ6TlNELAogIGF1dGhvciA9ICAgICAgICJMZXNsaWUgTGFtcG9ydCIsCiAgdGl0bGUgPSAgICAgICAgIkEgTmV3IFNvbHV0aW9uIG9mIHtEaWprc3RyYX0ncyBDb25jdXJyZW50IFByb2dyYW1taW5nIFByb2JsZW0iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTciLAogIG51bWJlciA9ICAgICAgICI4IiwKICBwYWdlcyA9ICAgICAgICAiNDUzLS00NTUiLAogIG1vbnRoID0gICAgICAgIGF1ZywKICB5ZWFyID0gICAgICAgICAiMTk3NCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4QTA1IiwKICBNUm51bWJlciA9ICAgICAiNDkgODQxOCIsCiAgbXJyZXZpZXdlciA9ICAgIkphbWVzIEhvd2xhbmQiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0RhdGFiYXNlL1dpZWRlcmhvbGQuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiQSBzaW1wbGUgc29sdXRpb24gdG8gdGhlIG11dHVhbCBleGNsdXNpb24gcHJvYmxlbSBpcyBwcmVzZW50ZWQgd2hpY2ggYWxsb3dzIHRoZSBzeXN0ZW0gdG8gY29udGludWUgdG8gb3BlcmF0ZSBkZXNwaXRlIHRoZSBmYWlsdXJlIG9mIGFueSBpbmRpdmlkdWFsIGNvbXBvbmVudC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGFubm90ZSA9ICAgICAgICJBIHNvbHV0aW9uIHdoaWNoIGlzIG1vcmUgZmFpbHVyZSBwcm9vZi4iLAogIGNsYXNzY29kZXMgPSAgICJDNjE1MEogKE9wZXJhdGluZyBzeXN0ZW1zKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIHN5c3RlbXMgcHJvZ3JhbW1pbmc7IGNvbmN1cnJlbnQgcHJvZ3JhbW1pbmc7IGNyaXRpY2FsIHNlY3Rpb247IERpamtzdHJhJ3MgY29uY3VycmVudCBwcm9ncmFtbWluZyBwcm9ibGVtOyBmYWlsdXJlOyBmYXVsdCB0b2xlcmFudCBjb21wdXRpbmc7IG11bHRpcHJvY2Vzc2luZzsgbXVsdGlwcm9jZXNzaW5nIHByb2dyYW1zOyBtdXR1YWwgZXhjbHVzaW9uOyBzZW1hcGhvcmVzIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtDYXZvdXJhczoxOTc0OkNQRCwKICBhdXRob3IgPSAgICAgICAiSm9obiBDLiBDYXZvdXJhcyIsCiAgdGl0bGUgPSAgICAgICAgIk9uIHRoZSBDb252ZXJzaW9uIG9mIFByb2dyYW1zIHRvIERlY2lzaW9uIFRhYmxlczogTWV0aG9kIGFuZCBPYmplY3RpdmVzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE3IiwKICBudW1iZXIgPSAgICAgICAiOCIsCiAgcGFnZXMgPSAgICAgICAgIjQ1Ni0tNDYyIiwKICBtb250aCA9ICAgICAgICBhdWcsCiAgeWVhciA9ICAgICAgICAgIjE5NzQiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiVGhlIHByb2JsZW1zIG9mIGNvbnZlcnRpbmcgcHJvZ3JhbXMgdG8gZGVjaXNpb24gdGFibGVzIGFyZSBpbnZlc3RpZ2F0ZWQuIE9iamVjdGl2ZXMgb2YgdGhlc2UgY29udmVyc2lvbnMgYXJlIG1haW5seSBwcm9ncmFtIGRlYnVnZ2luZyBhbmQgb3B0aW1pemF0aW9uIGluIHByYWN0aWNlLiBFeHRlbnNpb25zIHRvIHRoZSB0aGVvcnkgb2YgY29tcHV0YXRpb24gYW5kIGNvbXB1dGFiaWxpdHkgYXJlIHN1Z2dlc3RlZC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDI5MCAoT3RoZXIgY29tcHV0ZXIgdGhlb3J5KTsgQzYxMTAgKFN5c3RlbXMgYW5hbHlzaXMgYW5kIHByb2dyYW1taW5nKTsgQzYxNTBHIChEaWFnbm9zdGljLCB0ZXN0aW5nLCBkZWJ1Z2dpbmcgYW5kIGV2YWx1YXRpbmcgc3lzdGVtcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIEdsYXNnb3csIFVLIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFuYWx5c2lzOyBjb21wdXRhYmlsaXR5OyBjb21wdXRhYmlsaXR5IGFuZCBkZWNpZGFiaWxpdHk7IGNvbXB1dGVyIHN5c3RlbXMgcHJvZ3JhbW1pbmc7IGNvbnZlcnNpb24gb2YgcHJvZ3JhbXM7IGRlYnVnZ2luZzsgZGVjaXNpb24gdGFibGVzOyBvYmplY3RpdmVzOyBvcHRpbWl6YXRpb247IHByb2dyYW07IHNlbWFudGljczsgc3lzdGVtczsgdGhlb3J5IG9mIHByb2dyYW1taW5nIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtMeWNoZToxOTc0OkFBUCwKICBhdXRob3IgPSAgICAgICAiVC4gTHljaGUgYW5kIEwuIEwuIFNjaHVtYWtlciIsCiAgdGl0bGUgPSAgICAgICAgIntBQ019IEFsZ29yaXRobSA0ODA6IFByb2NlZHVyZXMgZm9yIENvbXB1dGluZyBTbW9vdGhpbmcgYW5kIEludGVycG9sYXRpbmcgTmF0dXJhbCBTcGxpbmVzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE3IiwKICBudW1iZXIgPSAgICAgICAiOCIsCiAgcGFnZXMgPSAgICAgICAgIjQ2My0tNDY3IiwKICBtb250aCA9ICAgICAgICBhdWcsCiAgeWVhciA9ICAgICAgICAgIjE5NzQiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjAyOTBGIChJbnRlcnBvbGF0aW9uIGFuZCBmdW5jdGlvbiBhcHByb3hpbWF0aW9uKTsgQzQxMzAgKEludGVycG9sYXRpb24gYW5kIGZ1bmN0aW9uIGFwcHJveGltYXRpb24pOyBDNzMxMCAoTWF0aGVtYXRpY3MgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIFRleGFzLCBBdXN0aW4sIFRYLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJBbGdvbDsgYXBwcm94aW1hdGlvbjsgY29lZmZpY2llbnRzOyBpbnRlcnBvbGF0aW5nOyBpbnRlcnBvbGF0aW9uOyBuYXR1cmFsIHNjaWVuY2VzIGFwcGxpY2F0aW9ucyBvZiBjb21wdXRlcnM7IG5hdHVyYWwgc3BsaW5lczsgc21vb3RoaW5nOyBzcGxpbmUgc21vb3RoaW5nOyBzcGxpbmVzIChtYXRoZW1hdGljcyk7IHN1YnJvdXRpbmVzIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtDcmFuZGFsbDoxOTc0OkFBQSwKICBhdXRob3IgPSAgICAgICAiSy4gQy4gQ3JhbmRhbGwiLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gNDgxOiBBcnJvdyB0byBQcmVjZWRlbmNlIE5ldHdvcmsgVHJhbnNmb3JtYXRpb24iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTciLAogIG51bWJlciA9ICAgICAgICI4IiwKICBwYWdlcyA9ICAgICAgICAiNDY3LS00NjkiLAogIG1vbnRoID0gICAgICAgIGF1ZywKICB5ZWFyID0gICAgICAgICAiMTk3NCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNzEwMCAoQnVzaW5lc3MgYW5kIGFkbWluaXN0cmF0aW9uKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIENhbGlmb3JuaWEsIEJlcmtlbGV5LCBDQSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiYXJyb3cgY29udmVudGlvbjsgYXJyb3cgY29udmVudGlvbiBuZXR3b3JrczsgY29tcHV0ZXIgYWlkZWQgYW5hbHlzaXM7IGNvbnZlbnRpb247IGNyaXRpY2FsIHBhdGg7IGNyaXRpY2FsIHBhdGggYW5hbHlzaXM7IG5ldHdvcmsgdHJhbnNmb3JtYXRpb247IHByZWNlZGVuY2U7IHByZWNlZGVuY2UgbmV0d29ya3M7IHJlc291cmNlIGFsbG9jYXRpb247IHNjaGVkdWxpbmc7IHN1YnJvdXRpbmVzIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtNY0theToxOTc0OkFBVCwKICBhdXRob3IgPSAgICAgICAiSm9obiBNY0theSBhbmQgRS4gUmVnZW5lciIsCiAgdGl0bGUgPSAgICAgICAgIntBQ019IEFsZ29yaXRobSA0ODI6IFRyYW5zaXRpdml0eSBTZXRzIFt7Rzd9XSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNyIsCiAgbnVtYmVyID0gICAgICAgIjgiLAogIHBhZ2VzID0gICAgICAgICI0NzAtLTQ3MCIsCiAgbW9udGggPSAgICAgICAgYXVnLAogIHllYXIgPSAgICAgICAgICIxOTc0IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgImZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvUGFyYWxsZWwvTXVsdGkuYmliIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjAyNTAgKENvbWJpbmF0b3JpYWwgbWF0aGVtYXRpY3MpOyBDMTE2MCAoQ29tYmluYXRvcmlhbCBtYXRoZW1hdGljcyk7IEM3MzEwIChNYXRoZW1hdGljcyBjb21wdXRpbmcpIiwKICBjb3Jwc291cmNlID0gICAiTWNHaWxsIFVuaXYuLCBNb250cmVhbCwgUXVlLiwgQ2FuYWRhIiwKICBrZXl3b3JkcyA9ICAgICAic2V0czsgdHJhbnNpdGl2aXR5IiwKICBrZXl3b3JkcyA9ICAgICAiQWxnb2w7IGFsZ29yaXRobTsgZ3JhcGg7IG5hdHVyYWwgc2NpZW5jZXMgYXBwbGljYXRpb25zIG9mIGNvbXB1dGVyczsgb3JiaXRzOyBzZW1pZ3JvdXA7IHNldCB0aGVvcnk7IHNldHM7IHNwYW5uaW5nIHRyZWU7IHN1YnJvdXRpbmVzOyB0cmFuc2l0aXZpdHk7IHRyYW5zaXRpdml0eSBzZXRzIiwKICBwYWdlID0gICAgICAgICAiNDcwIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtTdHJvdWQ6MTk3NDpHSEksCiAgYXV0aG9yID0gICAgICAgIkEuIEguIFN0cm91ZCIsCiAgdGl0bGUgPSAgICAgICAgIntHYXVzc30gSGFybW9uaWMgSW50ZXJwb2xhdGlvbiBGb3JtdWxhcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNyIsCiAgbnVtYmVyID0gICAgICAgIjgiLAogIHBhZ2VzID0gICAgICAgICI0NzEtLTQ3NSIsCiAgbW9udGggPSAgICAgICAgYXVnLAogIHllYXIgPSAgICAgICAgICIxOTc0IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjVEMDUiLAogIE1SbnVtYmVyID0gICAgICI1MCAxNTI2NSIsCiAgbXJyZXZpZXdlciA9ICAgIlN0ZXBoZW4gSGlsYmVydCIsCiAgYmliZGF0ZSA9ICAgICAgIlRodSBKYW4gMTYgMTk6NTI6NDcgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJMZXQgJFIkIGJlIGFuIG9wZW4sIGJvdW5kZWQsIHNpbXBseSBjb25uZWN0ZWQgcmVnaW9uIGluIHRoZSAkKHgseSkkLXBsYW5lIGFuZCBsZXQgJCh4Kix5KikkIGJlIGEgcG9pbnQgaW4gJFIkLiBBc3N1bWluZyBSIGlzIHN0YXJsaWtlIHdpdGggcmVzcGVjdCB0byAkKHgqLHkqKSQsIHdlIGRpc2N1c3MgYSBtZXRob2QgZm9yIGNvbXB1dGluZyBHYXVzcyBoYXJtb25pYyBpbnRlcnBvbGF0aW9uIGZvcm11bGFzIGZvciAkUiQgYW5kIHRoZSBwb2ludCAkKHgqLHkqKSQuIFxwYXIgU3VjaCBmb3JtdWxhcyBhcHByb3hpbWF0ZSBhIGhhcm1vbmljIGZ1bmN0aW9uIGF0ICQoeCoseSopJCBpbiB0ZXJtcyBvZiBhIGxpbmVhciBjb21iaW5hdGlvbiBvZiBpdHMgdmFsdWVzIGF0IGNlcnRhaW4gc2VsZWN0ZWQgcG9pbnRzIG9uIHRoZSBib3VuZGFyeSBvZiAkUiQuIFN1Y2ggZm9ybXVsYXMgYXJlIHVzZWZ1bCBmb3IgYXBwcm94aW1hdGluZyB0aGUgc29sdXRpb24gb2YgdGhlIERpcmljaGxldCBwcm9ibGVtIGZvciAkUiQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2lmaWNhdGlvbiA9ICI5MjEiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiRGlyaWNobGV0IHByb2JsZW07IGhhcm1vbmljIGludGVycG9sYXRpb247IGhhcm1vbmljIHF1YWRyYXR1cmU7IGludGVycG9sYXRpb247IG1hdGhlbWF0aWNhbCB0ZWNobmlxdWVzOyBxdWFkcmF0dXJlIiwKfQoKQEFydGljbGV7TGFnZXJsb2VmOjE5NzQ6SVJSLAogIGF1dGhvciA9ICAgICAgICJSb2xmIE8uIEUuIExhZ2VybG9lZiIsCiAgdGl0bGUgPSAgICAgICAgIkludGVycG9sYXRpb24gd2l0aCBSb3VuZGVkIFJhbXAgRnVuY3Rpb25zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE3IiwKICBudW1iZXIgPSAgICAgICAiOCIsCiAgcGFnZXMgPSAgICAgICAgIjQ3Ni0tNDc5IiwKICBtb250aCA9ICAgICAgICBhdWcsCiAgeWVhciA9ICAgICAgICAgIjE5NzQiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUaHUgSmFuIDE2IDE5OjUyOjQ3IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiQSBuZXcgaW50ZXJwb2xhdGlvbiBmdW5jdGlvbiBpcyBpbnRyb2R1Y2VkLiBJdCBoYXMgaW5maW5pdGVseSBtYW55IGNvbnRpbnVvdXMgZGVyaXZhdGl2ZXMgYW5kIGlzIGEgY29tcG9zaXRpb24gb2YgcmFtcCBmdW5jdGlvbnMgd2l0aCBzbW9vdGhlZCBiZW5kcyBjYWxsZWQgUm91bmRlZCBSYW1wIEZ1bmN0aW9ucy4gSG93IHRoZSBpbnRlcnBvbGF0aW9uIGZ1bmN0aW9uIGNhbiBiZSBleHRlbmRlZCB0byBtb3JlIHRoYW4gb25lIHZhcmlhYmxlIGlzIHNob3duLiBBbiBlZmZpY2llbnQgRm9ydHJhbiBwcm9ncmFtIGlzIGdpdmVuIGJ5IHdoaWNoIHRoZSBpbnRlcnBvbGF0aW9uIGZ1bmN0aW9uIGNhbiBiZSBvYnRhaW5lZCBmb3IgYSBnaXZlbiBwb2ludCBzZXQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2lmaWNhdGlvbiA9ICI5MjEiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAibWF0aGVtYXRpY2FsIHRlY2huaXF1ZXMiLAp9CgpAQXJ0aWNsZXtBY3RvbjoxOTc0OlJSRiwKICBhdXRob3IgPSAgICAgICAiRm9ybWFuIFMuIEFjdG9uIiwKICB0aXRsZSA9ICAgICAgICAiUmVjdXJyZW5jZSBSZWxhdGlvbnMgZm9yIHRoZSB7RnJlc25lbH0gSW50ZWdyYWwgJFxpbnRfMF5caW5mdHlbXGV4cCgtY3QpZHQvKHQpXnsxLzJ9KDErdF4yKV0kIGFuZCBTaW1pbGFyIEludGVncmFscyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNyIsCiAgbnVtYmVyID0gICAgICAgIjgiLAogIHBhZ2VzID0gICAgICAgICI0ODAtLTQ4MSIsCiAgbW9udGggPSAgICAgICAgYXVnLAogIHllYXIgPSAgICAgICAgICIxOTc0IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjVEMjAgKDMzQTcwKSIsCiAgTVJudW1iZXIgPSAgICAgIjQ5IDY1NTQiLAogIGJpYmRhdGUgPSAgICAgICJNb24gSmFuIDI3IDEyOjIzOjUyIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJUaGUgY2xhc3Mgb2YgZnVuY3Rpb25zIGRlZmluZWQgYnkgJFxpbnRfMF5caW5mdHlbXGV4cCgtIGNYKWR0LygxK1kpKHReezEvMn0pXmtdJCB3aGVyZSAkWCQgYW5kICRZJCBhcmUgZWl0aGVyICR0JCBvciAkdF4yJCBhbmQgJGskIGlzICQtMSQsICQwJCwgb3IgJDEkIGNhbiBiZSBldmFsdWF0ZWQgYnkgcmVjdXJyZW5jZXMgZm9yIGFsbCBidXQgc21hbGwgdmFsdWVzIG9mIHRoZSBwYXJhbWV0ZXIgJGMkLiBUaGVzZSByZWN1cnJlbmNlcywgZ2l2ZW4gaGVyZSwgYXJlIG1vcmUgZWZmaWNpZW50IHRoYW4gdGhlIHVzdWFsIGFzeW1wdG90aWMgc2VyaWVzLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3NpZmljYXRpb24gPSAiOTIxIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImV4cG9uZW50aWFsIGludGVncmFsOyBGcmVzbmVsIGludGVncmFsOyBtYXRoZW1hdGljYWwgdGVjaG5pcXVlczsgcmVjdXJyZW5jZSByZWxhdGlvbnMiLAp9CgpAQXJ0aWNsZXtXaWxsZXJzOjE5NzQ6TklBLAogIGF1dGhvciA9ICAgICAgICJJLiBNLiBXaWxsZXJzIiwKICB0aXRsZSA9ICAgICAgICAiQSBOZXcgSW50ZWdyYXRpb24gQWxnb3JpdGhtIGZvciBPcmRpbmFyeSBEaWZmZXJlbnRpYWwgRXF1YXRpb25zIEJhc2VkIG9uIENvbnRpbnVlZCBGcmFjdGlvbiBBcHByb3hpbWF0aW9ucyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNyIsCiAgbnVtYmVyID0gICAgICAgIjkiLAogIHBhZ2VzID0gICAgICAgICI1MDQtLTUwOCIsCiAgbW9udGggPSAgICAgICAgc2VwLAogIHllYXIgPSAgICAgICAgICIxOTc0IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjVMMDUiLAogIE1SbnVtYmVyID0gICAgICI0OSA4MzY3IiwKICBtcnJldmlld2VyID0gICAiRy4gRC4gQnlybmUiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiQSBuZXcgaW50ZWdyYXRpb24gYWxnb3JpdGhtIGlzIGZvdW5kLCBhbmQgYW4gaW1wbGVtZW50YXRpb24gaXMgY29tcGFyZWQgd2l0aCBvdGhlciBwcm9ncmFtbWVkIGFsZ29yaXRobXMuIFRoZSBuZXcgYWxnb3JpdGhtIGlzIGEgc3RlcC1ieS1zdGVwIHByb2NlZHVyZSBmb3Igc29sdmluZyB0aGUgaW5pdGlhbCB2YWx1ZSBwcm9ibGVtIGluIG9yZGluYXJ5IGRpZmZlcmVudGlhbCBlcXVhdGlvbnMuIEl0IGlzIGRlc2lnbmVkIHRvIGFwcHJveGltYXRlIHBvbGVzIG9mIHNtYWxsIGludGVnZXIgb3JkZXIgaW4gdGhlIHNvbHV0aW9ucyBvZiB0aGUgZGlmZmVyZW50aWFsIGVxdWF0aW9ucyBieSBjb250aW51ZWQgZnJhY3Rpb25zIG9idGFpbmVkIGJ5IG1hbmlwdWxhdGluZyB0aGUgc3VtcyBvZiB0cnVuY2F0ZWQgVGF5bG9yIHNlcmllcyBleHBhbnNpb25zLiBUaGUgbmV3IG1ldGhvZCBpcyBjb21wYXJlZCB3aXRoIEdyYWdnLUJ1bGlyc2gtU3RvZXIsIGFuZCB0aGUgVGF5bG9yIHNlcmllcyBtZXRob2QuIFxwYXIgVGhlIFRheWxvciBzZXJpZXMgbWV0aG9kIGFuZCB0aGUgbmV3IG1ldGhvZCBhcmUgc2hvd24gdG8gYmUgc3VwZXJpb3IgaW4gc3BlZWQgYW5kIGFjY3VyYWN5LCB3aGlsZSB0aGUgbmV3IG1ldGhvZCBpcyBzaG93biB0byBiZSBtb3N0IHN1cGVyaW9yIHdoZW4gdGhlIHNvbHV0aW9uIGlzIHJlcXVpcmVkIG5lYXIgYSBzaW5ndWxhcml0eS4gVGhlIG5ldyBtZXRob2QgY2FuIGZpbmFsbHkgYmUgc2VlbiB0byBwYXNzIGF1dG9tYXRpY2FsbHkgdGhyb3VnaCBzaW5ndWxhcml0aWVzIHdoZXJlIGFsbCB0aGUgb3RoZXIgbWV0aG9kcyB3aGljaCBhcmUgZGlzY3Vzc2VkIHdpbGwgaGF2ZSBmYWlsZWQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjAyOTBNIChOdW1lcmljYWwgaW50ZWdyYXRpb24gYW5kIGRpZmZlcmVudGlhdGlvbik7IEIwMjkwUCAoRGlmZmVyZW50aWFsIGVxdWF0aW9ucyk7IEM0MTYwIChOdW1lcmljYWwgaW50ZWdyYXRpb24gYW5kIGRpZmZlcmVudGlhdGlvbik7IEM0MTcwIChEaWZmZXJlbnRpYWwgZXF1YXRpb25zKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiOTIxIiwKICBjb3Jwc291cmNlID0gICAiQ0VSTiwgR2VuZXZlLCBTd2l0emVybGFuZCIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJib3VuZGFyeS12YWx1ZSBwcm9ibGVtczsgY29udGludWVkIGZyYWN0aW9uIGFwcHJveGltYXRpb25zOyBjb250aW51ZWQgZnJhY3Rpb25zOyBkaWZmZXJlbnRpYWwgZXF1YXRpb25zOyBpbml0aWFsIHZhbHVlIHByb2JsZW07IGludGVncmF0aW9uOyBpbnRlZ3JhdGlvbiBhbGdvcml0aG07IG1hdGhlbWF0aWNhbCB0ZWNobmlxdWVzOyBvcmRpbmFyeSBkaWZmZXJlbnRpYWwgZXF1YXRpb25zOyBwcm9ncmFtIGNvbXBhcmlzb247IHNpbmd1bGFyaXRpZXM7IHNpbmd1bGFyaXR5OyBzdGVwIGJ5IHN0ZXAgcHJvY2VkdXJlOyBUYXlsb3Igc2VyaWVzOyBUYXlsb3Igc2VyaWVzIGV4cGFuc2lvbnMiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0FiZXJ0aDoxOTc0OlBOQSwKICBhdXRob3IgPSAgICAgICAiT2xpdmVyIEFiZXJ0aCIsCiAgdGl0bGUgPSAgICAgICAgIkEgUHJlY2lzZSBOdW1lcmljYWwgQW5hbHlzaXMgUHJvZ3JhbSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNyIsCiAgbnVtYmVyID0gICAgICAgIjkiLAogIHBhZ2VzID0gICAgICAgICI1MDktLTUxMyIsCiAgbW9udGggPSAgICAgICAgc2VwLAogIHllYXIgPSAgICAgICAgICIxOTc0IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EaXN0cmlidXRlZC9RTEQvMTk3NC5iaWIiLAogIGFic3RyYWN0ID0gICAgICJBIGRlc2NyaXB0aW9uIGlzIGdpdmVuIG9mIGEgcHJvZ3JhbSBmb3IgY29tcHV0aW5nIHRoZSBzb2x1dGlvbiB0byBhIHNtYWxsIG51bWJlciBvZiBzdGFuZGFyZCBudW1lcmljYWwgYW5hbHlzaXMgcHJvYmxlbXMgdG8gYW55IHNwZWNpZmllZCBhY2N1cmFjeSwgdXAgdG8gYSBsaW1pdCBvZiAyMDAwIGNvcnJlY3QgZGVjaW1hbCBwbGFjZXMuIFxwYXIgRWFjaCBjb21wdXRlZCBudW1iZXIgaXMgYm91bmRlZCBpbiBhbiBpbnRlcnZhbCB3aXRoIGEgbXVsdGlwbGUgcHJlY2lzaW9uIG1pZHBvaW50LiBBcml0aG1ldGljIG9wZXJhdGlvbnMgaW52b2x2aW5nIHRoZXNlIG51bWJlcnMgYXJlIGV4ZWN1dGVkIGFjY29yZGluZyB0byBpbnRlcnZhbCBhcml0aG1ldGljIGNvbmNlcHRzLCB3aXRoIG5vbi1zaWduaWZpY2FudCBkaWdpdHMgYXV0b21hdGljYWxseSBkaXNjYXJkZWQuIERldGFpbHMgYXJlIHN1cHBsaWVkIG9mIHByb2JsZW0gc3BlY2lmaWNhdGlvbiBhbmQgcHJvYmxlbSBjb21wdXRhdGlvbi4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJCMDI5MCAoTnVtZXJpY2FsIGFuYWx5c2lzKTsgQzQxMDAgKE51bWVyaWNhbCBhbmFseXNpcyk7IEM3MzEwIChNYXRoZW1hdGljcyBjb21wdXRpbmcpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI5MjEiLAogIGNvcnBzb3VyY2UgPSAgICJUZXhhcyBBIGFuZCBNIFVuaXYuLCBDb2xsZWdlIFN0YXRpb24sIFRYLCBVU0EiLAogIGNvdW50cnkgPSAgICAgICJVU0EiLAogIGRlc2NyaXB0b3JzID0gICJNZXRob2Q7IHJlYWxpemF0aW9uOyBudW1lcmljYWwgbWV0aG9kOyBvcHRpbWl6YXRpb247IGluZm9ybWF0aW9uIHN5c3RlbTsgcHJvZ3JhbSBjb25zdHJ1Y3Rpb247IGVycm9yIGNvbnRyb2w7IGludGVydmFsIGFyaXRobWV0aWM7IiwKICBlbnVtID0gICAgICAgICAiMyIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhcml0aG1ldGljOyBhcml0aG1ldGljIG9wZXJhdGlvbnM7IGVycm9yIGNvbnRyb2w7IGludGVydmFsOyBpbnRlcnZhbCBhcml0aG1ldGljOyBsaXN0IHN0cnVjdHVyZTsgbWF0aGVtYXRpY2FsIHRlY2huaXF1ZXM7IG1ldGhvZHM7IG11bHRpcGxlOyBtdWx0aXBsZSBwcmVjaXNpb247IG5hdHVyYWwgc2NpZW5jZXMgYXBwbGljYXRpb25zIG9mIGNvbXB1dGVyczsgbnVtZXJpY2FsOyBudW1lcmljYWwgYW5hbHlzaXM7IHByZWNpc2lvbiBtaWRwb2ludDsgcHJvZ3JhbTsgc3BlY2lmaWVkIGFjY3VyYWN5IiwKICBsYW5ndWFnZSA9ICAgICAiRW5nbGlzaCIsCiAgcmVmZXJlbmNlcyA9ICAgIjExIiwKfQoKQEFydGljbGV7Q2hldW5nOjE5NzQ6SUdELAogIGF1dGhvciA9ICAgICAgICJUby15YXQuIENoZXVuZyIsCiAgdGl0bGUgPSAgICAgICAgIkludGVyYWN0aXZlIEdyYXBoaWMgRGlzcGxheSBmb3IgUmVnaW9uIFBhcnRpdGlvbmluZyBieSBMaW5lYXIgUHJvZ3JhbW1pbmciLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTciLAogIG51bWJlciA9ICAgICAgICI5IiwKICBwYWdlcyA9ICAgICAgICAiNTEzLS01MTYiLAogIG1vbnRoID0gICAgICAgIHNlcCwKICB5ZWFyID0gICAgICAgICAiMTk3NCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJVc2luZyBsaW5lYXIgcHJvZ3JhbW1pbmcsIGFuIGludGVyYWN0aXZlIGdyYXBoaWMgZGlzcGxheSBzeXN0ZW0gaGFzIGJlZW4gaW1wbGVtZW50ZWQgdG8gc29sdmUgdGhlIHJlZ2lvbiBkZXNpZ24gcHJvYmxlbSBvZiBwYXJ0aXRpb25pbmcgYSByZWdpb24gaW50byBOIG5vbm92ZXJsYXBwaW5nIHN1YnJlZ2lvbnMgaW4gc3VjaCBhIHdheSB0aGF0IHRoZWlyIGFyZWFzIGFyZSBpbiBzcGVjaWZpZWQgcHJvcG9ydGlvbnMgYW5kIHRoYXQgdGhlIHRvdGFsIGNvc3Qgb2Ygc2VydmljaW5nIHRoZW0gaXMgYSBtaW5pbXVtLiBJbiBhIGNvbnZlcnNhdGlvbmFsIG1hbm5lciwgYSB1c2VyIGNhbiBlYXNpbHkgb2J0YWluIGRpZmZlcmVudCBwYXJ0aXRpb25pbmdzIGJ5IHNwZWNpZnlpbmcgYW5kIG1vZGlmeWluZyB0aGUgYm91bmRhcnksIHRoZSBzZXJ2aWNlIGNlbnRlcnMnIGxvY2F0aW9ucywgdGhlIGFyZWEgcHJvcG9ydGlvbnMsIGFuZCB0aGUgY29zdCBmdW5jdGlvbnMuIEV4YW1wbGVzIGFyZSBpbmNsdWRlZC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJCMDI2MCAoT3B0aW1pc2F0aW9uIHRlY2huaXF1ZXMpOyBDMTE4MCAoT3B0aW1pc2F0aW9uIHRlY2huaXF1ZXMpOyBDNTU0MCAoVGVybWluYWxzIGFuZCBncmFwaGljIGRpc3BsYXlzKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzOyA5MjEiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBBbGJlcnRhLCBFZG1vbnRvbiwgQWx0YS4sIENhbmFkYSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhcmVhIHByb3BvcnRpb25zOyBhcmVhIHNwZWNpZmljYXRpb247IGJvdW5kYXJ5OyBjb21wdXRlciBncmFwaGljczsgY29zdDsgY29zdCBmdW5jdGlvbnM7IGludGVyYWN0aXZlIGdyYXBoaWMgZGlzcGxheTsgaW50ZXJhY3RpdmUgdGVybWluYWxzOyBsaW5lYXI7IGxpbmVhciBwcm9ncmFtbWluZzsgbWF0aGVtYXRpY2FsIHByb2dyYW1taW5nLCBsaW5lYXI7IG1pbmltdW07IG5vbm92ZXJsYXBwaW5nIHN1YnJlZ2lvbnM7IG9mIHNlcnZpY2luZzsgcHJvZ3JhbW1pbmc7IHJlZ2lvbiBkZXNpZ247IHJlZ2lvbiBwYXJ0aXRpb25pbmc7IHNlcnZpY2UgY2VudGVycycgbG9jYXRpb25zIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtTY2hrb2xuaWNrOjE5NzQ6RVJULAogIGF1dGhvciA9ICAgICAgICJNYXJpbyBTY2hrb2xuaWNrIiwKICB0aXRsZSA9ICAgICAgICAiVGhlIEVxdWl2YWxlbmNlIG9mIFJlZHVjaW5nIFRyYW5zaXRpb24gTGFuZ3VhZ2VzIGFuZCBEZXRlcm1pbmlzdGljIExhbmd1YWdlcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNyIsCiAgbnVtYmVyID0gICAgICAgIjkiLAogIHBhZ2VzID0gICAgICAgICI1MTctLTUxOSIsCiAgbW9udGggPSAgICAgICAgc2VwLAogIHllYXIgPSAgICAgICAgICIxOTc0IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjhBMzAiLAogIE1SbnVtYmVyID0gICAgICI0OSA4NDM2IiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlRoZSBjbGFzcyBvZiByZWR1Y2luZyB0cmFuc2l0aW9uIGxhbmd1YWdlcyBpbnRyb2R1Y2VkIGJ5IEVpY2tlbCwgUGF1bCwgQmF1ZXIsIGFuZCBTYW1lbHNvbiB3YXMgc2hvd24gYnkgTW9ycmlzIHRvIGJlIGEgcHJvcGVyIHN1cGVyY2xhc3Mgb2YgdGhlIHNpbXBsZSBwcmVjZWRlbmNlIGxhbmd1YWdlcy4gSW4gdGhpcyBwYXBlciB0aGlzIHJlc3VsdCBpcyBleHRlbmRlZCwgc2hvd2luZyB0aGF0LCBpbiBmYWN0LCB0aGUgZmlyc3QgY2xhc3MgaXMgZXF1aXZhbGVudCB0byB0aGUgY2xhc3Mgb2YgZGV0ZXJtaW5pc3RpYyBjb250ZXh0IGZyZWUgbGFuZ3VhZ2VzLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MjEwIChGb3JtYWwgbG9naWMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJDYXJuZWdpZS1NZWxsb24gVW5pdi4sIFBpdHRzYnVyZ2gsIFBBLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzOyBjb250ZXh0IGZyZWUgbGFuZ3VhZ2VzOyBjb250ZXh0LWZyZWUgbGFuZ3VhZ2VzOyBkZXRlcm1pbmlzdGljOyBkZXRlcm1pbmlzdGljIGNvbnRleHQgZnJlZSBncmFtbWFyczsgZGV0ZXJtaW5pc3RpYyBjb250ZXh0LWZyZWUgZ3JhbW1hcnM7IGVxdWl2YWxlbmNlOyBsYW5ndWFnZXM7IHByZWNlZGVuY2UgbGFuZ3VhZ2VzOyByZWR1Y2luZyB0cmFuc2l0aW9uIGxhbmd1YWdlczsgc3VwZXJjbGFzczsgc3ludGF4IGNvbnRyb2xsZWQgZ2VuZXJhdG9ycyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7V2F0a2luczoxOTc0OkFBTSwKICBhdXRob3IgPSAgICAgICAiUy4gTC4gV2F0a2lucyIsCiAgdGl0bGUgPSAgICAgICAgIntBQ019IEFsZ29yaXRobSA0ODM6IE1hc2tlZCBUaHJlZS1EaW1lbnNpb25hbCBQbG90IFByb2dyYW0gd2l0aCBSb3RhdGlvbnMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTciLAogIG51bWJlciA9ICAgICAgICI5IiwKICBwYWdlcyA9ICAgICAgICAiNTIwLS01MjMiLAogIG1vbnRoID0gICAgICAgIHNlcCwKICB5ZWFyID0gICAgICAgICAiMTk3NCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0Rpc3RyaWJ1dGVkL1FMRC8xOTczLmJpYiIsCiAgbm90ZSA9ICAgICAgICAgIlNlZSBhbHNvIFxjaXRle0ZlaW5zdGVpbjoxOTc1OlJNVH0uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzU1NDAgKFRlcm1pbmFscyBhbmQgZ3JhcGhpYyBkaXNwbGF5cyk7IEM2MTUwRSAoR2VuZXJhbCB1dGlsaXR5IHByb2dyYW1zKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIFRleGFzLCBBdXN0aW4sIFRYLCBVU0EiLAogIGNvdW50cnkgPSAgICAgICJVU0EiLAogIGRlc2NyaXB0b3JzID0gICJGT1JUUkFOOyBncmFwaGljczsgYXBwbGljYXRpb247IG1ldGhvZDsgaHVtYW4gZmFjdG9yczsgZGlhZ3JhbSBtYW5pcHVsYXRpb247IHRocmVlLWRpbWVuc2lvbmFsIHBsb3Q7IiwKICBlbnVtID0gICAgICAgICAiMzI0MSIsCiAga2V5d29yZHMgPSAgICAgImNvbXBsZXRlIGNvbXB1dGVyIHByb2dyYW1zOyBjb21wdXRlciBncmFwaGljczsgbWFza2VkOyBwbG90IHByb2dyYW07IHByb2dyYW1zOyByb3RhdGlvbnM7IHRocmVlIGRpbWVuc2lvbmFsIHBsb3R0aW5nOyB1dGlsaXR5IiwKICBrZXl3b3JkcyA9ICAgICAicGxvdHRpbmc7IHRocmVlLWRpbWVuc2lvbmFsIHBsb3R0aW5nIiwKICBsYW5ndWFnZSA9ICAgICAiRW5nbGlzaCIsCiAgcmVmZXJlbmNlcyA9ICAgIjAiLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uIiwKfQoKQEFydGljbGV7QnVycmVsbDoxOTc0OkFBRSwKICBhdXRob3IgPSAgICAgICAiSy4gSC4gQnVycmVsbCIsCiAgdGl0bGUgPSAgICAgICAgIntBQ019IEFsZ29yaXRobSA0ODQ6IEV2YWx1YXRpb24gb2YgdGhlIE1vZGlmaWVkIHtCZXNzZWx9IEZ1bmN0aW9ucyAke0t9XzAoeikkIGFuZCAke0t9XzEoeikkIGZvciBDb21wbGV4IEFyZ3VtZW50cyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNyIsCiAgbnVtYmVyID0gICAgICAgIjkiLAogIHBhZ2VzID0gICAgICAgICI1MjQtLTUyNiIsCiAgbW9udGggPSAgICAgICAgc2VwLAogIHllYXIgPSAgICAgICAgICIxOTc0IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkIwMjkwRCAoRnVuY3Rpb25hbCBhbmFseXNpcyk7IEM0MTIwIChGdW5jdGlvbmFsIGFuYWx5c2lzKTsgQzczMTAgKE1hdGhlbWF0aWNzIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJDYWxpZm9ybmlhIEluc3QuIFRlY2hub2wuLCBQYXNhZGVuYSwgQ0EsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImFsZ29yaXRobTsgYXBwbGljYXRpb25zIG9mIGNvbXB1dGVyczsgQmVzc2VsIGZ1bmN0aW9uczsgY29tcGxleCBhcmd1bWVudHM7IGZ1bmN0aW9uIGV2YWx1YXRpb247IEdhdXNzLUhlcm1pdGUgcXVhZHJhdHVyZTsgSGFua2VsIGZ1bmN0aW9uczsgbW9kaWZpZWQgQmVzc2VsIGZ1bmN0aW9uczsgbmF0dXJhbCBzY2llbmNlczsgc3Vicm91dGluZXMiLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0VpZHNvbjoxOTc0OkFBQywKICBhdXRob3IgPSAgICAgICAiSC4gRC4gRWlkc29uIGFuZCBMLiBMLiBTY2h1bWFrZXIiLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gNDg1OiBDb21wdXRhdGlvbiBvZiAkZyQtU3BsaW5lcyB2aWEgYSBGYWN0b3JpemF0aW9uIE1ldGhvZCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNyIsCiAgbnVtYmVyID0gICAgICAgIjkiLAogIHBhZ2VzID0gICAgICAgICI1MjYtLTUzMCIsCiAgbW9udGggPSAgICAgICAgc2VwLAogIHllYXIgPSAgICAgICAgICIxOTc0IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkIwMjkwRiAoSW50ZXJwb2xhdGlvbiBhbmQgZnVuY3Rpb24gYXBwcm94aW1hdGlvbik7IEM0MTMwIChJbnRlcnBvbGF0aW9uIGFuZCBmdW5jdGlvbiBhcHByb3hpbWF0aW9uKTsgQzczMTAgKE1hdGhlbWF0aWNzIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBUZXhhcywgQXVzdGluLCBUWCwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiYXBwcm94aW1hdGlvbjsgY29tcHV0YXRpb247IGNvbXB1dGVyczsgZmFjdG9yaXphdGlvbiBtZXRob2Q7IEZPUlRSQU4gc3Vicm91dGluZXM7IGZ1bmN0aW9uIGFwcHJveGltYXRpb247IGctc3BsaW5lczsgSGVybWl0ZS9CaXJrb2ZmIGRhdGE7IGludGVycG9sYXRpbmc7IG5hdHVyYWwgc2NpZW5jZXMgYXBwbGljYXRpb25zIG9mOyBzcGxpbmUgYXBwcm94aW1hdGlvbjsgc3BsaW5lczsgc3BsaW5lcyAobWF0aGVtYXRpY3MpOyBzdWJyb3V0aW5lcyIsCiAgdHJlYXRtZW50ID0gICAgIkEgQXBwbGljYXRpb247IFQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7WW91bmc6MTk3NDpGT0EsCiAgYXV0aG9yID0gICAgICAgIkpvaG4gVy4gWW91bmciLAogIHRpdGxlID0gICAgICAgICJBIEZpcnN0IE9yZGVyIEFwcHJveGltYXRpb24gdG8gdGhlIE9wdGltdW0gQ2hlY2twb2ludCBJbnRlcnZhbCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNyIsCiAgbnVtYmVyID0gICAgICAgIjkiLAogIHBhZ2VzID0gICAgICAgICI1MzAtLTUzMSIsCiAgbW9udGggPSAgICAgICAgc2VwLAogIHllYXIgPSAgICAgICAgICIxOTc0IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgImZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGF0YWJhc2UvV2llZGVyaG9sZC5iaWIiLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjE1MEogKE9wZXJhdGluZyBzeXN0ZW1zKSIsCiAgY29ycHNvdXJjZSA9ICAgIk1hcnRpbiBNYXJpZXR0YSBDb3JwLiwgT3JsYW5kbywgRkwsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImNoZWNrcG9pbnQ7IGRpYWdub3N0aWNzOyBlcnJvcnM7IGZpcnN0IG9yZGVyIGFwcHJveGltYXRpb247IGpvYiBmYWlsdXJlczsgbWluaW1pc2F0aW9uOyBtaW5pbWl6ZSB0aGUgY29zdDsgb3BlcmF0aW5nIHN5c3RlbXMgKGNvbXB1dGVycyk7IG9wdGltdW0gY2hlY2twb2ludCBpbnRlcnZhbDsgcHJvZ3JhbTsgcHJvZ3JhbW1pbmcgY2hlY2twb2ludDsgcmFuZG9tIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtTaHdheWRlcjoxOTc0OkVJVCwKICBhdXRob3IgPSAgICAgICAiS2VpdGggU2h3YXlkZXIiLAogIHRpdGxlID0gICAgICAgICJFeHRlbmRpbmcgdGhlIEluZm9ybWF0aW9uIFRoZW9yeSBBcHByb2FjaCB0byBDb252ZXJ0aW5nIExpbWl0ZWQtRW50cnkgRGVjaXNpb24gVGFibGVzIHRvIENvbXB1dGVyIFByb2dyYW1zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE3IiwKICBudW1iZXIgPSAgICAgICAiOSIsCiAgcGFnZXMgPSAgICAgICAgIjUzMi0tNTM3IiwKICBtb250aCA9ICAgICAgICBzZXAsCiAgeWVhciA9ICAgICAgICAgIjE5NzQiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiVGhpcyBwYXBlciBtb2RpZmllcyBhbiBlYXJsaWVyIGFsZ29yaXRobSBmb3IgY29udmVydGluZyBkZWNpc2lvbiB0YWJsZXMgaW50byBmbG93Y2hhcnRzIHdoaWNoIG1pbmltaXplIHN1YnNlcXVlbnQgZXhlY3V0aW9uIHRpbWUgd2hlbiBjb21waWxlZCBpbnRvIGEgY29tcHV0ZXIgcHJvZ3JhbS4gVGhlIGFsZ29yaXRobXMgY29uc2lkZXJlZCBpbiB0aGlzIHBhcGVyIHBlcmZvcm0gbGltaXRlZCBzZWFyY2ggYW5kLCBhY2NvcmRpbmdseSwgZG8gbm90IG5lY2Vzc2FyaWx5IHJlc3VsdCBpbiBnbG9iYWxseSBvcHRpbWFsIHNvbHV0aW9ucy4gVGhlcmUgaXMgYW4gYW5hbG9neSBiZXR3ZWVuIHRoZSBwcm9ibGVtIG9mIGNvbnZlcnRpbmcgZGVjaXNpb24gdGFibGVzIGludG8gZWZmaWNpZW50IGZsb3djaGFydHMgYW5kIHRoZSB3ZWxsLXVuZGVyc3Rvb2QgcHJvYmxlbSBpbiBpbmZvcm1hdGlvbiB0aGVvcnkgb2Ygbm9pc2VsZXNzIGNvZGluZy4gVGhlIHJlc3VsdHMgb2YgdGhlIG5vaXNlbGVzcyBjb2RpbmcgbGl0ZXJhdHVyZSBhcmUgdXNlZCB0byBleHBsb3JlIHRoZSBsaW1pdGF0aW9ucyBvZiBhbGdvcml0aG1zIHVzZWQgdG8gc29sdmUgdGhlIGRlY2lzaW9uIHRhYmxlIHByb2JsZW0uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMTAgKFN5c3RlbXMgYW5hbHlzaXMgYW5kIHByb2dyYW1taW5nKTsgQzYxMzAgKERhdGEgaGFuZGxpbmcgdGVjaG5pcXVlcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIENoaWNhZ28sIElMLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29kaW5nOyBjb21wdXRlciBwcm9ncmFtczsgY29tcHV0ZXIgc3lzdGVtcyBwcm9ncmFtbWluZzsgY29udmVydGluZzsgY29udmVydGluZyBkZWNpc2lvbiB0YWJsZXM7IGRlY2lzaW9uIHRhYmxlczsgZGVwdGggb2Ygc2VhcmNoOyBmbG93Y2hhcnRpbmc7IGZsb3djaGFydHM7IGluZm9ybWF0aW9uIHRoZW9yeSBhcHByb2FjaDsgbGltaXRlZCBzZWFyY2g7IGxpc3QgcHJvY2Vzc2luZzsgbm9pc2VsZXNzIGNoYW5uZWw7IG5vaXNlbGVzcyBjb2Rpbmc7IHNvcnRpbmciLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0hvYXJlOjE5NzQ6TU9TLAogIGF1dGhvciA9ICAgICAgICJDLiBBLiBSLiBIb2FyZSIsCiAgdGl0bGUgPSAgICAgICAgIk1vbml0b3JzOiBBbiBPcGVyYXRpbmcgU3lzdGVtIFN0cnVjdHVyaW5nIENvbmNlcHQiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTciLAogIG51bWJlciA9ICAgICAgICIxMCIsCiAgcGFnZXMgPSAgICAgICAgIjU0OS0tNTU3IiwKICBtb250aCA9ICAgICAgICBvY3QsCiAgeWVhciA9ICAgICAgICAgIjE5NzQiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L1RoZW9yeS9Qcm9iQWxncy5iaWIgYW5kIGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGF0YWJhc2UvR3JhZWZlLmJpYiBhbmQgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9Db21waWxlci9yZXlub2xkcy5iaWIiLAogIG5vdGUgPSAgICAgICAgICJFcnJhdHVtIGluIHtcZW0gQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTX0sIFZvbC4gMTgsIE5vLiAyIChGZWJydWFyeSksIHAuIDk1LCAxOTc1LiBUaGlzIHBhcGVyIGNvbnRhaW5zIG9uZSBvZiB0aGUgZmlyc3Qgc29sdXRpb25zIHRvIHRoZSBEaW5pbmcgUGhpbG9zb3BoZXJzIHByb2JsZW0uIiwKICBhYnN0cmFjdCA9ICAgICAiVGhpcyBwYXBlciBkZXZlbG9wcyBCcmluY2gtSGFuc2VuJ3MgY29uY2VwdCBvZiBhIG1vbml0b3IgYXMgYSBtZXRob2Qgb2Ygc3RydWN0dXJpbmcgYW4gb3BlcmF0aW5nIHN5c3RlbS4gSXQgaW50cm9kdWNlcyBhIGZvcm0gb2Ygc3luY2hyb25pemF0aW9uLCBkZXNjcmliZXMgYSBwb3NzaWJsZSBtZXRob2Qgb2YgaW1wbGVtZW50YXRpb24gaW4gdGVybXMgb2Ygc2VtYXBob3JlcyBhbmQgZ2l2ZXMgYSBzdWl0YWJsZSBwcm9vZiBydWxlLiBJbGx1c3RyYXRpdmUgZXhhbXBsZXMgaW5jbHVkZSBhIHNpbmdsZSByZXNvdXJjZSBzY2hlZHVsZXIsIGEgYm91bmRlZCBidWZmZXIsIGFuIGFsYXJtIGNsb2NrLCBhIGJ1ZmZlciBwb29sLCBhIGRpc2sgaGVhZCBvcHRpbWl6ZXIsIGFuZCBhIHZlcnNpb24gb2YgdGhlIHByb2JsZW0gb2YgcmVhZGVycyBhbmQgd3JpdGVycy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGFubm90ZSA9ICAgICAgICJNb25pdG9ycyIsCiAgY2hlY2tlZCA9ICAgICAgIjcgQXByaWwgMTk4OSIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTUwSiAoT3BlcmF0aW5nIHN5c3RlbXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjI7IDcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlF1ZWVuJ3MgVW5pdi4gQmVsZmFzdCwgVUsiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYWxhcm0gY2xvY2s7IGJvdW5kZWQgYnVmZmVyOyBidWZmZXIgcG9vbDsgQ0FDTSBzeW5jaHJvbml6YXRpb24gY29tbXVuaWNhdGlvbiBzZW1hcGhvcmVzOyBjb21wdXRlciBvcGVyYXRpbmcgc3lzdGVtczsgZGlzYzsgZXhjbHVzaW9uOyBoZWFkIG9wdGltaXplcjsgbW9uaXRvcnM7IG11bHRpcHJvZ3JhbW1pbmc7IG11dHVhbDsgb3BlcmF0aW5nIHN5c3RlbSBzdHJ1Y3R1cmluZyBjb25jZXB0OyBvcGVyYXRpbmcgc3lzdGVtcyAoY29tcHV0ZXJzKTsgcHJvb2YgcnVsZTsgcmVhZGVyczsgc2NoZWR1bGVyOyBzY2hlZHVsaW5nOyBzZW1hcGhvcmVzOyBzaW5nbGUgcmVzb3VyY2U7IHN0cnVjdHVyZWQgbXVsdGlwcm9ncmFtbWluZzsgc3RydWN0dXJpbmc7IHN5bmNocm9uaXphdGlvbjsgd3JpdGVycyIsCiAgdHJlYXRtZW50ID0gICAgIkEgQXBwbGljYXRpb247IFAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7U2hlbjoxOTc0OldCTSwKICBhdXRob3IgPSAgICAgICAiS2VubmV0aCBLLiBTaGVuIGFuZCBKYW1lcyBMLiBQZXRlcnNvbiIsCiAgdGl0bGUgPSAgICAgICAgIkEgV2VpZ2h0ZWQgQnVkZHkgTWV0aG9kIGZvciBEeW5hbWljIFN0b3JhZ2UgQWxsb2NhdGlvbiIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNyIsCiAgbnVtYmVyID0gICAgICAgIjEwIiwKICBwYWdlcyA9ICAgICAgICAiNTU4LS01NjggKG9yIDU1OC0tNTYyPz8pIiwKICBtb250aCA9ICAgICAgICBvY3QsCiAgeWVhciA9ICAgICAgICAgIjE5NzQiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBub3RlID0gICAgICAgICAiU2VlIGNvcnJpZ2VuZHVtIFxjaXRle1NoZW46MTk3NTpDV0J9LiIsCiAgYWJzdHJhY3QgPSAgICAgIkFuIGV4dGVuc2lvbiBvZiB0aGUgYnVkZHkgbWV0aG9kLCBjYWxsZWQgdGhlIHdlaWdodGVkIGJ1ZGR5IG1ldGhvZCwgZm9yIGR5bmFtaWMgc3RvcmFnZSBhbGxvY2F0aW9uIGlzIHByZXNlbnRlZC4gVGhlIHdlaWdodGVkIGJ1ZGR5IG1ldGhvZCBhbGxvd3MgYmxvY2sgc2l6ZXMgb2YgJDJeayQgYW5kICQzKDJeaykkLCB3aGVyZWFzIHRoZSBvcmlnaW5hbCBidWRkeSBtZXRob2QgYWxsb3dlZCBvbmx5IGJsb2NrIHNpemVzIG9mICQyXmskLiBUaGlzIGV4dGVuc2lvbiBpcyBhY2hpZXZlZCBhdCBhbiBhZGRpdGlvbmFsIGNvc3Qgb2Ygb25seSB0d28gYml0cyBwZXIgYmxvY2suIFNpbXVsYXRpb24gcmVzdWx0cyBhcmUgcHJlc2VudGVkIHdoaWNoIGNvbXBhcmUgdGhpcyBtZXRob2Qgd2l0aCB0aGUgYnVkZHkgbWV0aG9kLiBUaGVzZSByZXN1bHRzIGluZGljYXRlIHRoYXQgZm9yIGEgdW5pZm9ybSByZXF1ZXN0IGRpc3RyaWJ1dGlvbiwgdGhlIGJ1ZGR5IHN5c3RlbSBoYXMgbGVzcyB0b3RhbCBtZW1vcnkgZnJhZ21lbnRhdGlvbiB0aGFuIHRoZSB3ZWlnaHRlZCBidWRkeSBhbGdvcml0aG0uIEhvd2V2ZXIsIHRoZSB0b3RhbCBmcmFnbWVudGF0aW9uIGlzIHNtYWxsZXIgZm9yIHRoZSB3ZWlnaHRlZCBidWRkeSBtZXRob2Qgd2hlbiB0aGUgcmVxdWVzdHMgYXJlIGZvciBleHBvbmVudGlhbGx5IGRpc3RyaWJ1dGVkIGJsb2NrIHNpemVzLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbik7IEM2MTUwSiAoT3BlcmF0aW5nIHN5c3RlbXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjI7IDcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlN0YW5mb3JkIFVuaXYuLCBDQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFsbG9jYXRpb247IGJ1ZGR5OyBidWRkeSBzeXN0ZW1zOyBjb21wdXRlciBvcGVyYXRpbmcgc3lzdGVtczsgZHluYW1pYyBzdG9yYWdlIGFsbG9jYXRpb247IGV4cG9uZW50aWFsbHkgZGlzdHJpYnV0ZWQgYmxvY2sgc2l6ZXM7IGZpbGUgb3JnYW5pc2F0aW9uOyBmcmFnbWVudGF0aW9uOyBtZW1vcnkgYWxsb2NhdGlvbjsgb3BlcmF0aW5nIHN5c3RlbXMgKGNvbXB1dGVycyk7IHNpbXVsYXRpb247IHN0b3JhZ2U7IHN5c3RlbTsgdG90YWwgbWVtb3J5OyB1bmlmb3JtIHJlcXVlc3QgZGlzdHJpYnV0aW9uOyB3ZWlnaHRlZCBidWRkeSBhbGdvcml0aG07IHdlaWdodGVkIGJ1ZGR5IG1ldGhvZCIsCiAgdHJlYXRtZW50ID0gICAgIkEgQXBwbGljYXRpb247IFQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7U2x1dHo6MTk3NDpOQ0EsCiAgYXV0aG9yID0gICAgICAgIkQuIFIuIFNsdXR6IGFuZCBJLiBMLiBUcmFpZ2VyIiwKICB0aXRsZSA9ICAgICAgICAiQSBub3RlIG9uIHRoZSBjYWxjdWxhdGlvbiBvZiBhdmVyYWdlIHdvcmtpbmcgc2V0IHNpemUiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTciLAogIG51bWJlciA9ICAgICAgICIxMCIsCiAgcGFnZXMgPSAgICAgICAgIjU2My0tNTY1IiwKICBtb250aCA9ICAgICAgICBvY3QsCiAgeWVhciA9ICAgICAgICAgIjE5NzQiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiRmluaXRlLWxlbmd0aCByZWZlcmVuY2Ugc3RyaW5nIG9mIGFyYml0cmFyeSBzdHJ1Y3R1cmUgYXJlIGNvbnNpZGVyZWQsIGFuZCBhbiBleGFjdCBleHByZXNzaW9uIGZvciBhdmVyYWdlIHdvcmtpbmcgc2V0IHNpemUgaW4gdGVybXMgb2YgYGBjb3JyZWN0ZWQnJyBpbnRlcmZlcmVuY2UgaW50ZXJ2YWwgc3RhdGlzdGljcyBpcyBkZXJpdmVkLiBBbiBleGFtcGxlIGlzIGRpc2N1c3NlZDsgdXBwZXIgYW5kIGxvd2VyIGJvdW5kcyBhcmUgb2J0YWluZWQ7IGFuZCB0aGUgYXZlcmFnZSB3b3JraW5nIHNldCBzaXplIGZ1bmN0aW9uIGlzIHNob3duIHRvIGJlIGVmZmljaWVudGx5IG9idGFpbmVkIGZvciBhIHNldCBvZiBwYWdlIHNpemVzLCBpbiBhIHNpbmdsZSBwYXNzIG9mIHRoZSByZWZlcmVuY2Ugc3RyaW5nLiBUaGlzIHdvcmsgZm9sbG93cyB0aGUgZGV2ZWxvcG1lbnRzIG9mIGEgcGFwZXIgYnkgRGVubmluZyBhbmQgU2Nod2FydHosIHdobyBjb25zaWRlciBpbmZpbml0ZS1sZW5ndGggcmVmZXJlbmNlIHN0cmluZ3Mgd2hpY2ggc2F0aXNmeSBjZXJ0YWluIHN0YXRpc3RpY2FsIHByb3BlcnRpZXMgYW5kIHdobyBkZXJpdmUgYW4gZXhwcmVzc2lvbiByZWxhdGluZyB0aGUgYXN5bXB0b3RpYyBhdmVyYWdlIHdvcmtpbmcgc2V0IHNpemUgdG8gdGhlIGFzeW1wdG90aWMgbWlzc2luZyBwYWdlIHJhdGUgZnVuY3Rpb24gdW5kZXIgd29ya2luZyBzZXQgcmVwbGFjZW1lbnQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKTsgQzYxNTBKIChPcGVyYXRpbmcgc3lzdGVtcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIklCTSwgU2FuIEpvc2UsIENBLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYXJiaXRyYXJ5IHN0cnVjdHVyZTsgYXZlcmFnZSB3b3JraW5nIHNldCBzaXplOyBjb21wdXRlciBvcGVyYXRpbmcgc3lzdGVtczsgZGF0YSBzdHJ1Y3R1cmVzOyBmaW5pdGUgbGVuZ3RoIHJlZmVyZW5jZSBzdHJpbmc7IGludGVyZmVyZW5jZSBpbnRlcnZhbCBzdGF0aXN0aWNzOyBvcGVyYXRpbmcgc3lzdGVtcyAoY29tcHV0ZXJzKTsgcGFnZTsgcGFnaW5nOyBwcm9ncmFtIGJlaGF2aW91cjsgc2l6ZXM7IHN0b3JhZ2U7IHZpcnR1YWw7IHdvcmtpbmcgc2V0IG1vZGVsIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtTaG5laWRlcm1hbjoxOTc0OlNEUywKICBhdXRob3IgPSAgICAgICAiQmVuIFNobmVpZGVybWFuIGFuZCBQZXRlciBTY2hldWVybWFubiIsCiAgdGl0bGUgPSAgICAgICAgIlN0cnVjdHVyZWQgRGF0YSBTdHJ1Y3R1cmVzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE3IiwKICBudW1iZXIgPSAgICAgICAiMTAiLAogIHBhZ2VzID0gICAgICAgICI1NjYtLTU3NCIsCiAgbW9udGggPSAgICAgICAgb2N0LAogIHllYXIgPSAgICAgICAgICIxOTc0IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EYXRhYmFzZS9XaWVkZXJob2xkLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIlByb2dyYW1taW5nIHN5c3RlbXMgd2hpY2ggcGVybWl0IGFyYml0cmFyeSBsaW5rZWQgbGlzdCBzdHJ1Y3R1cmVzIGVuYWJsZSB0aGUgdXNlciB0byBjcmVhdGUgY29tcGxpY2F0ZWQgc3RydWN0dXJlcyB3aXRob3V0IHN1ZmZpY2llbnQgcHJvdGVjdGlvbi4gRGVsZXRpb25zIGNhbiByZXN1bHQgaW4gdW5yZWFjaGFibGUgZGF0YSBlbGVtZW50cywgYW5kIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IGFkZGl0aW9ucyB3aWxsIGJlIHBlcmZvcm1lZCBwcm9wZXJseS4gVG8gcmVtZWR5IHRoaXMgc2l0dWF0aW9uLCB0aGlzIHBhcGVyIHByb3Bvc2VzIGEgZGF0YSBzdHJ1Y3R1cmUgZGVzY3JpcHRpb24gYW5kIG1hbmlwdWxhdGlvbiBsYW5ndWFnZSB3aGljaCBwcm92aWRlcyBmb3IgdGhlIGNyZWF0aW9uIG9mIGEgcmVzdHJpY3RlZCBjbGFzcyBvZiBkYXRhIHN0cnVjdHVyZXMgYnV0IGVuc3VyZXMgdGhlIGNvcnJlY3RuZXNzIG9mIHRoZSBwcm9ncmFtLiBUaGlzIGlzIGFjY29tcGxpc2hlZCBieSBhbiBleHBsaWNpdCBzdHJ1Y3R1cmUgZGVjbGFyYXRpb24gZmFjaWxpdHksIGEgcmVzdHJpY3Rpb24gb24gdGhlIHBlcm1pc3NpYmxlIG9wZXJhdGlvbnMsIGFuZCBleGVjdXRpb24tdGltZSBjaGVja3MuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBhbm5vdGUgPSAgICAgICAiT3BlcmF0aW9ucyBvbiBsaW5rZWQgc3RydWN0dXJlcy4iLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJJbmRpYW5hIFVuaXYuLCBCbG9vbWluZ3RvbiwgSU4sIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhcmJpdHJhcnkgbGlua2VkIGxpc3Q7IGJhc2UgbWFuYWdlbWVudCBzeXN0ZW07IGRhdGE7IGRhdGEgcHJvY2Vzc2luZzsgRGF0YSBTdHJ1Y3R1cmUgRGVzY3JpcHRpb24gYW5kIE1hbmlwdWxhdGlvbjsgZGF0YSBzdHJ1Y3R1cmVzOyBleGVjdXRpb247IGV4cGxpY2l0IHN0cnVjdHVyZSBkZWNsYXJhdGlvbiBmYWNpbGl0eTsgTGFuZ3VhZ2U7IHN0b3JhZ2UgbWFuYWdlbWVudDsgc3RydWN0dXJlZCBkYXRhIHN0cnVjdHVyZXM7IHN0cnVjdHVyZWQgcHJvZ3JhbW1pbmc7IHN0cnVjdHVyZXM7IHRpbWUgY2hlY2tzIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtDYW5hZGF5OjE5NzQ6QkVDLAogIGF1dGhvciA9ICAgICAgICJSLiBILiBDYW5hZGF5IGFuZCBSLiBELiBIYXJyaXNvbiBhbmQgRS4gTC4gSXZpZSBhbmQgSi4gTC4gUnlkZXIgYW5kIEwuIEEuIFdlaHIiLAogIHRpdGxlID0gICAgICAgICJBIEJhY2stZW5kIENvbXB1dGVyIGZvciBEYXRhIEJhc2UgTWFuYWdlbWVudCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNyIsCiAgbnVtYmVyID0gICAgICAgIjEwIiwKICBwYWdlcyA9ICAgICAgICAiNTc1LS01ODMgKG9yIDU3NS0tNTgyPz8pIiwKICBtb250aCA9ICAgICAgICBvY3QsCiAgeWVhciA9ICAgICAgICAgIjE5NzQiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0RhdGFiYXNlL1dpZWRlcmhvbGQuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiSXQgaXMgcHJvcG9zZWQgdGhhdCB0aGUgZGF0YSBiYXNlIG1hbmFnZW1lbnQgZnVuY3Rpb24gYmUgcGxhY2VkIG9uIGEgZGVkaWNhdGVkIGJhY2stZW5kIGNvbXB1dGVyIHdoaWNoIGFjY2VwdHMgY29tbWFuZHMgKGluIGEgcmVsYXRpdmVseSBoaWdoIGxldmVsIGxhbmd1YWdlIHN1Y2ggYXMgdGhlIENPREFTWUwgRGF0YSBCYXNlIFRhc2sgR3JvdXAsIEFwcmlsIDE5NzEgUmVwb3J0KSBmcm9tIGEgaG9zdCBjb21wdXRlciwgYWNjZXNzZXMgdGhlIGRhdGEgYmFzZSBvbiBzZWNvbmRhcnkgc3RvcmFnZSwgYW5kIHJldHVybnMgcmVzdWx0cy4gVGhlIGFkdmFudGFnZXMgb2Ygc3VjaCBhIGNvbmZpZ3VyYXRpb24gYXJlIGRpc2N1c3NlZC4gQW4gZXhwZXJpbWVudGFsIGltcGxlbWVudGF0aW9uLCBjYWxsZWQgdGhlIEV4cGVyaW1lbnRhbCBEYXRhIE1hbmFnZW1lbnQgU3lzdGVtLCBYREFNUywgaXMgZGVzY3JpYmVkIGFuZCBjZXJ0YWluIGNvbmNsdXNpb25zIGFib3V0IHRoZSBiYWNrLWVuZCBhcHByb2FjaCBhcmUgZHJhd24gZnJvbSB0aGlzIGltcGxlbWVudGF0aW9uLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgYW5ub3RlID0gICAgICAgIlBoeXNpY2FsIHNlcGFyYXRpb24gb2YgZGF0YSBiYXNlIG1hbmFnZW1lbnQgZnJvbSBkYXRhIHByb2Nlc3NpbmcgdG8gZ2FpbiBmbGV4aWJpbGl0eSwgZXRjLiBpbiB0aGUgWERNUyBzeXN0ZW0uIiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiQmVsbCBUZWxlcGhvbmUgTGFicy4gSW5jLiwgUGlzY2F0YXdheSwgTkosIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJkYXRhIHByb2Nlc3NpbmciLAogIGtleXdvcmRzID0gICAgICJiYWNrIGVuZCBjb21wdXRlcjsgY29tcHV0ZXIgY29uZmlndXJhdGlvbnM7IGNvbXB1dGVyIG5ldHdvcmtzOyBkYXRhIGJhc2UgbWFuYWdlbWVudDsgRGF0YSBiYXNlIFRhc2s7IGRpZ2l0YWwgY29tbXVuaWNhdGlvbiBzeXN0ZW1zOyBlWHBlcmltZW50YWwgRGF0YSBNYW5hZ2VtZW50IFN5c3RlbTsgR3JvdXAgTGFuZ3VhZ2U7IGhvc3QgY29tcHV0ZXI7IHNlY29uZGFyeSBzdG9yYWdlOyBzdG9yYWdlIG1hbmFnZW1lbnQiLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0NoYXJuZXM6MTk3NDpHVFAsCiAgYXV0aG9yID0gICAgICAgIkEuIENoYXJuZXMgYW5kIFcuIE0uIFJhaWtlIGFuZCBKLiBELiBTdHV0eiBhbmQgQS4gUy4gV2FsdGVycyIsCiAgdGl0bGUgPSAgICAgICAgIk9uIEdlbmVyYXRpb24gb2YgVGVzdCBQcm9ibGVtcyBmb3IgTGluZWFyIFByb2dyYW1taW5nIENvZGVzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE3IiwKICBudW1iZXIgPSAgICAgICAiMTAiLAogIHBhZ2VzID0gICAgICAgICI1ODMtLTU4NyAob3IgNTgzLS01ODY/PykiLAogIG1vbnRoID0gICAgICAgIG9jdCwKICB5ZWFyID0gICAgICAgICAiMTk3NCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJUaGlzIHBhcGVyIHByZXNlbnRzIGEgdGhlb3JldGljYWwganVzdGlmaWNhdGlvbiBhbmQgYW4gaWxsdXN0cmF0aXZlIGltcGxlbWVudGF0aW9uIG9mIGEgbWV0aG9kIGZvciBnZW5lcmF0aW5nIGxpbmVhciBwcm9ncmFtbWluZyB0ZXN0IHByb2JsZW1zIHdpdGgga25vd24gc29sdXRpb25zLiBUaGUgbWV0aG9kIHBlcm1pdHMgdGhlIGdlbmVyYXRpb24gb2YgdGVzdCBwcm9ibGVtcyB0aGF0IGFyZSBvZiBhcmJpdHJhcnkgc2l6ZSBhbmQgaGF2ZSBhIHdpZGUgcmFuZ2Ugb2YgbnVtZXJpY2FsIGNoYXJhY3RlcmlzdGljcy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJCMDI2MCAoT3B0aW1pc2F0aW9uIHRlY2huaXF1ZXMpOyBDMTE4MCAoT3B0aW1pc2F0aW9uIHRlY2huaXF1ZXMpOyBDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzOyA5MjEiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBUZXhhcywgQXVzdGluLCBUWCwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFjY3VyYWN5OyBjb2RlczsgY29tcHV0ZXIgcHJvZ3JhbW1pbmc7IGRhdGEgaGFuZGxpbmc7IGxhcmdlOyBsaW5lYXIgcHJvZ3JhbW1pbmc7IGxpbmVhciBwcm9ncmFtbWluZyBjb2RlczsgTFA7IExQIHByb2dyYW0gdmFsaWRhdGlvbjsgbWF0aGVtYXRpY2FsIHByb2dyYW1taW5nLCBsaW5lYXI7IHByb2dyYW0gZXZhbHVhdGlvbjsgc2NhbGUgbGluZWFyIHByb2dyYW1taW5nIGNvZGVzOyB0ZXN0IHByb2JsZW0gZ2VuZXJhdGlvbjsgdGVzdCBwcm9ibGVtcyIsCiAgdHJlYXRtZW50ID0gICAgIkEgQXBwbGljYXRpb247IFQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7VmVpbGxvbjoxOTc0OkFBTiwKICBhdXRob3IgPSAgICAgICAiRi4gVmVpbGxvbiIsCiAgdGl0bGUgPSAgICAgICAgIntBQ019IEFsZ29yaXRobSA0ODY6IE51bWVyaWNhbCBJbnZlcnNpb24gb2Yge0xhcGxhY2V9IFRyYW5zZm9ybSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNyIsCiAgbnVtYmVyID0gICAgICAgIjEwIiwKICBwYWdlcyA9ICAgICAgICAiNTg3LS01ODkgKG9yIDU4Ny0tNTg4Pz8pIiwKICBtb250aCA9ICAgICAgICBvY3QsCiAgeWVhciA9ICAgICAgICAgIjE5NzQiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBub3RlID0gICAgICAgICAiU2VlIGFsc28gXGNpdGV7S29wcGVsYWFyOjE5NzY6Uk5JLFZlaWxsb246MTk3NzpSTkl9LiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkIwMjMwIChJbnRlZ3JhbCB0cmFuc2Zvcm1zKTsgQzExMzAgKEludGVncmFsIHRyYW5zZm9ybXMpOyBDNzMxMCAoTWF0aGVtYXRpY3MgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIEdyZW5vYmxlLCBGcmFuY2UiLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlcnM7IGludmVyc2lvbjsgTGFwbGFjZSB0cmFuc2Zvcm07IExhcGxhY2UgdHJhbnNmb3JtczsgbmF0dXJhbCBzY2llbmNlcyBhcHBsaWNhdGlvbnMgb2Y7IG51bWVyaWNhbCBpbnZlcnNpb247IHN1YnJvdXRpbmVzIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtLb3BwZWxhYXI6MTk3NDpDUkEsCiAgYXV0aG9yID0gICAgICAgIkguIEtvcHBlbGFhciIsCiAgdGl0bGUgPSAgICAgICAgIkNlcnRpZmljYXRpb24gYW5kIHJlbWFyayBvbiBhbGdvcml0aG0gMTkxIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE3IiwKICBudW1iZXIgPSAgICAgICAiMTAiLAogIHBhZ2VzID0gICAgICAgICI1ODktLTU5MCIsCiAgbW9udGggPSAgICAgICAgb2N0LAogIHllYXIgPSAgICAgICAgICIxOTc0IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM3MzEwIChNYXRoZW1hdGljcyBjb21wdXRpbmcpIiwKICBjb3Jwc291cmNlID0gICAiVXRyZWNodCBTdGF0ZSBVbml2LiwgTmV0aGVybGFuZHMiLAogIGtleXdvcmRzID0gICAgICJhbGdvcml0aG07IGh5cGVyZ2VvbWV0cmljOyBpbXByb3ZlbWVudHM7IGluZWZmaWNpZW5jeTsgbmF0dXJhbCBzY2llbmNlcyBhcHBsaWNhdGlvbnMgb2YgY29tcHV0ZXJzOyBzdWJyb3V0aW5lcyIsCiAgdHJlYXRtZW50ID0gICAgIkcgR2VuZXJhbCBSZXZpZXc7IFQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7UHJvbGw6MTk3NDpDUlEsCiAgYXV0aG9yID0gICAgICAgIkwuIEcuIFByb2xsIiwKICB0aXRsZSA9ICAgICAgICAiQSBjb21wdXRlciByb3V0aW5lIGZvciBxdWFkcmF0aWMgYW5kIGxpbmVhciBwcm9ncmFtbWluZyBwcm9ibGVtcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNyIsCiAgbnVtYmVyID0gICAgICAgIjEwIiwKICBwYWdlcyA9ICAgICAgICAiNTkwLS01OTAiLAogIG1vbnRoID0gICAgICAgIG9jdCwKICB5ZWFyID0gICAgICAgICAiMTk3NCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJCMDI2MCAoT3B0aW1pc2F0aW9uIHRlY2huaXF1ZXMpOyBDMTE4MCAoT3B0aW1pc2F0aW9uIHRlY2huaXF1ZXMpOyBDNzMxMCAoTWF0aGVtYXRpY3MgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIExlZWRzLCBVSyIsCiAga2V5d29yZHMgPSAgICAgImFsZ29yaXRobTsgY29tcHV0ZXIgcm91dGluZTsgY29tcHV0ZXJzOyBsaW5lYXIgcHJvZ3JhbW1pbmc7IG5hdHVyYWwgc2NpZW5jZXMgYXBwbGljYXRpb25zIG9mOyBwcm9ncmFtbWluZzsgcXVhZHJhdGljIGFuZCBsaW5lYXI7IHF1YWRyYXRpYyBwcm9ncmFtbWluZzsgc3Vicm91dGluZXMiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0tsZW1lczoxOTc0OlJGTSwKICBhdXRob3IgPSAgICAgICAiSi4gS2xlbWVzIGFuZCBKLiBLbGVtc2EiLAogIHRpdGxlID0gICAgICAgICJ7Um9zZW5icm9ja30gZnVuY3Rpb24gbWluaW1pemF0aW9uIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE3IiwKICBudW1iZXIgPSAgICAgICAiMTAiLAogIHBhZ2VzID0gICAgICAgICI1OTAtLTU5MSIsCiAgbW9udGggPSAgICAgICAgb2N0LAogIHllYXIgPSAgICAgICAgICIxOTc0IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkIwMjYwIChPcHRpbWlzYXRpb24gdGVjaG5pcXVlcyk7IEMxMTgwIChPcHRpbWlzYXRpb24gdGVjaG5pcXVlcyk7IEM3MzEwIChNYXRoZW1hdGljcyBjb21wdXRpbmcpIiwKICBjb3Jwc291cmNlID0gICAiQ0hFUE9TLCBCcm5vLCBDemVjaG9zbG92YWtpYSIsCiAga2V5d29yZHMgPSAgICAgImFsZ29yaXRobTsgbWluaW1pc2F0aW9uOyBuYXR1cmFsIHNjaWVuY2VzIGFwcGxpY2F0aW9ucyBvZiBjb21wdXRlcnM7IFJvc2VuYnJvY2sgZnVuY3Rpb24gbWluaW1pemF0aW9uIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtLcm9naDoxOTc0OkVFSSwKICBhdXRob3IgPSAgICAgICAiRnJlZCBULiBLcm9naCIsCiAgdGl0bGUgPSAgICAgICAgIkVycmF0YTogYGB7RWZmaWNpZW50IEltcGxlbWVudGF0aW9uIG9mIGEgVmFyaWFibGUgUHJvamVjdGlvbiBBbGdvcml0aG0gZm9yIE5vbmxpbmVhciBMZWFzdCBTcXVhcmVzfScnIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE3IiwKICBudW1iZXIgPSAgICAgICAiMTAiLAogIHBhZ2VzID0gICAgICAgICI1OTEtLTU5MSIsCiAgbW9udGggPSAgICAgICAgb2N0LAogIHllYXIgPSAgICAgICAgICIxOTc0IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1heSAyOCAxNDo1MjoyNyAxOTk2IiwKICBub3RlID0gICAgICAgICAiU2VlIFxjaXRle0tyb2doOjE5NzQ6RUlWfS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAp9CgpAQXJ0aWNsZXtHaWxjaHJpc3Q6MTk3NDpFRlAsCiAgYXV0aG9yID0gICAgICAgIkJydWNlIEdpbGNocmlzdCBhbmQgUmljaGFyZCBFLiBXZWJlciIsCiAgdGl0bGUgPSAgICAgICAgIkVudW1lcmF0aW5nIEZ1bGwtVGltZSBQcm9ncmFtbWVycyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNyIsCiAgbnVtYmVyID0gICAgICAgIjEwIiwKICBwYWdlcyA9ICAgICAgICAiNTkyLS01OTMiLAogIG1vbnRoID0gICAgICAgIG9jdCwKICB5ZWFyID0gICAgICAgICAiMTk3NCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlRodSBKYW4gMTYgMTk6NTI6NDcgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJEYXRhIGZyb20gdGhlIDE5NzAgQ2Vuc3VzIGFuZCB0aGUgRGVwYXJ0bWVudCBvZiBMYWJvcidzIEFyZWEgV2FnZSBTdXJ2ZXlzIGFyZSB1c2VkIHRvIGRlcml2ZSBlc3RpbWF0ZXMgb2YgdGhlIG51bWJlciBvZiBmdWxsLXRpbWUgcHJvZ3JhbW1lcnMgZW1wbG95ZWQgZHVyaW5nIHRoZSB5ZWFycyAxOTY5IHRocm91Z2ggMTk3My4gVGhlIDE5NzMgZmlndXJlIG9mIDE4MCwwMDAgaXMgY29uc2lkZXJhYmx5IGxlc3MgdGhhbiBzdWdnZXN0ZWQgaW4gZWFybGllciByZXBvcnRzLiBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IGVkdWNhdGlvbmFsIGFkbWluaXN0cmF0b3JzIGNvbnNpZGVyIHdoZXRoZXIgdGhlIG1hbnkgY291cnNlcyBhaW1lZCBhdCB0cmFpbmluZyBwcm9ncmFtbWVycyBhcmUganVzdGlmaWVkIG9uIGEgdm9jYXRpb25hbCBiYXNpcy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMzsgOTEyIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIHByb2dyYW1taW5nIiwKfQoKQEFydGljbGV7U3Rlcmxpbmc6MTk3NDpHSEMsCiAgYXV0aG9yID0gICAgICAgIlRoZW9kb3IgRC4gU3RlcmxpbmciLAogIHRpdGxlID0gICAgICAgICJHdWlkZWxpbmVzIGZvciBIdW1hbml6aW5nIENvbXB1dGVyaXplZCBJbmZvcm1hdGlvbiBTeXN0ZW1zLCB7QX0gUmVwb3J0IGZyb20gU3RhbmxleSBIb3VzZSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNyIsCiAgbnVtYmVyID0gICAgICAgIjExIiwKICBwYWdlcyA9ICAgICAgICAiNjA5LS02MTMiLAogIG1vbnRoID0gICAgICAgIG5vdiwKICB5ZWFyID0gICAgICAgICAiMTk3NCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGF0YWJhc2UvV2llZGVyaG9sZC5iaWIiLAogIGFic3RyYWN0ID0gICAgICJUaGlzIHJlcG9ydCBpcyB0aGUgcmVzdWx0IG9mIGFuIGludGVuc2l2ZSBhbmFseXNpcyBvZiBjb25kaXRpb25zIHRoYXQgbWF5IGh1bWFuaXplIG9yIGRlaHVtYW5pemUgcGFydGljaXBhbnRzIGluIHZhcmlvdXMgY29tcHV0ZXJpemVkIHN5c3RlbXMuIFRoZSBndWlkZWxpbmVzIHByZXNlbnRlZCBoZXJlIHdlcmUgZ2VuZXJhdGVkIGR1cmluZyBhIHdlZWstbG9uZyB3b3Jrc2hvcCBzcG9uc29yZWQgaW4gQXVndXN0IDE5NzMgYnkgQ2FuYWRhIENvdW5jaWwgYXQgQ2FuYWRhIENvdW5jaWwncyBTdGFubGV5IEhvdXNlLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMwMjAwIChHZW5lcmFsIGNvbXB1dGVyIHRvcGljcyk7IEM3MTAwIChCdXNpbmVzcyBhbmQgYWRtaW5pc3RyYXRpb24pIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjM7IDkwMSIsCiAgY29ycHNvdXJjZSA9ICAgIlNpbW9uIEZyYXNlciBVbml2LiwgQnVybmFieSwgQkMsIENhbmFkYSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlcml6ZWQgaW5mb3JtYXRpb24gc3lzdGVtczsgZWNvbm9taWMgYW5kIHNvY2lvbG9naWNhbCBlZmZlY3RzOyBndWlkZWxpbmVzOyBodW1hbml6aW5nOyBpbmZvcm1hdGlvbiByZXRyaWV2YWwgc3lzdGVtczsgbWFuYWdlbWVudCBpbmZvcm1hdGlvbjsgc3lzdGVtcyIsCiAgdHJlYXRtZW50ID0gICAgIkcgR2VuZXJhbCBSZXZpZXciLAp9CgpAQXJ0aWNsZXtGZXJyYXJpOjE5NzQ6SUxDLAogIGF1dGhvciA9ICAgICAgICJEb21lbmljbyBGZXJyYXJpIiwKICB0aXRsZSA9ICAgICAgICAiSW1wcm92aW5nIExvY2FsaXR5IGJ5IENyaXRpY2FsIFdvcmtpbmcgU2V0cyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNyIsCiAgbnVtYmVyID0gICAgICAgIjExIiwKICBwYWdlcyA9ICAgICAgICAiNjE0LS02MjAiLAogIG1vbnRoID0gICAgICAgIG5vdiwKICB5ZWFyID0gICAgICAgICAiMTk3NCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvTWlzYy9jYWNoZS5iaWIiLAogIGFic3RyYWN0ID0gICAgICJBIG5ldyBhcHByb2FjaCB0byBwcm9ncmFtIGxvY2FsaXR5IGltcHJvdmVtZW50IHZpYSByZXN0cnVjdHVyaW5nIGlzIGRlc2NyaWJlZC4gVGhlIG1ldGhvZCBpcyBwYXJ0aWN1bGFybHkgc3VpdGVkIHRvIHRob3NlIHN5c3RlbXMgd2hlcmUgcHJpbWFyeSBtZW1vcnkgaXMgbWFuYWdlZCBhY2NvcmRpbmcgdG8gYSB3b3JraW5nIHNldCBzdHJhdGVneS4gSXQgaXMgYmFzZWQgb24gdGhlIGNvbmNlcHQgb2YgY3JpdGljYWwgd29ya2luZyBzZXQsIGEgd29ya2luZyBzZXQgd2hpY2ggZG9lcyBub3QgY29udGFpbiB0aGUgbmV4dCBtZW1vcnkgcmVmZXJlbmNlLiBUaGUgZGF0YSB0aGUgbWV0aG9kIG9wZXJhdGVzIHVwb24gYXJlIGV4dHJhY3RlZCBmcm9tIGEgdHJhY2Ugb2YgdGhlIHByb2dyYW0gdG8gYmUgcmVzdHJ1Y3R1cmVkLiBJdCBpcyBzaG93biB0aGF0LCBleGNlcHQgaW4gc29tZSBzcGVjaWFsIGNhc2VzLCB0aGUgbWV0aG9kIGlzIG5vdCBvcHRpbXVtLiBIb3dldmVyLCB0aGUgZXhwZXJpbWVudGFsIHJlc3VsdHMgb2J0YWluZWQgYnkgdXNpbmcgdGhlIG1ldGhvZCB0byByZXN0cnVjdHVyZSBhbiBpbnRlcmFjdGl2ZSB0ZXh0IGVkaXRvciBhbmQgdGhlIGZpbGUgc3lzdGVtIG1vZHVsZSBvZiBhbiBvcGVyYXRpbmcgc3lzdGVtIGhhdmUgc2hvd24gaXRzIHN1YnN0YW50aWFsIHN1cGVyaW9yaXR5IG92ZXIgdGhlIG90aGVyIG1ldGhvZHMgcHJvcG9zZWQgaW4gdGhlIGxpdGVyYXR1cmUuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKTsgQzYxNTBKIChPcGVyYXRpbmcgc3lzdGVtcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIENhbGlmb3JuaWEsIEJlcmtlbGV5LCBDQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIHN5c3RlbXMgcHJvZ3JhbW1pbmc7IGNyaXRpY2FsIHdvcmtpbmcgc2V0OyBkeW5hbWljIHJlc3RydWN0dXJpbmc7IGZpbGUgb3JnYW5pc2F0aW9uOyBpbXByb3ZlbWVudDsgbG9jYWxpdHk7IG1lbW9yeSBoaWVyYXJjaGllczsgbXVsdGlwcm9ncmFtbWluZzsgcHJvZ3JhbSByZXN0cnVjdHVyaW5nOyBwcm9ncmFtIHNlZ21lbnRhdGlvbjsgcmVzdHJ1Y3R1cmluZzsgcmVzdHJ1Y3R1cmluZyB0ZWNobmlxdWVzOyBzdGF0aWM7IHZpcnR1YWwgbWVtb3J5OyB3b3JraW5nIHNldCBzdHJhdGVneSIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7TWlsbGVyOjE5NzQ6TFBTLAogIGF1dGhvciA9ICAgICAgICJQZXJyeSBMb3dlbGwgTWlsbGVyIiwKICB0aXRsZSA9ICAgICAgICAiQSBsb2NhbGx5LW9yZ2FuaXplZCBwYXJzZXIgZm9yIHNwb2tlbiBpbnB1dCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNyIsCiAgbnVtYmVyID0gICAgICAgIjExIiwKICBwYWdlcyA9ICAgICAgICAiNjIxLS02MzAiLAogIG1vbnRoID0gICAgICAgIG5vdiwKICB5ZWFyID0gICAgICAgICAiMTk3NCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJUaGlzIHBhcGVyIGRlc2NyaWJlcyBMUEFSUywgYSBsb2NhbGx5LW9yZ2FuaXplZCBwYXJzaW5nIHN5c3RlbSwgZGVzaWduZWQgZm9yIHVzZSBpbiBhIGNvbnRpbnVvdXMgc3BlZWNoIHJlY29nbml6ZXIuIExQQVJTIHByb2Nlc3NlcyBhIHN0cmluZyBvZiBwaG9uZW1lcyB3aGljaCBjb250YWlucyBhbWJpZ3VpdHkgYW5kIGVycm9yLiBUaGUgc3lzdGVtIGlzIGxvY2FsbHktb3JnYW5pemVkIGluIHRoZSBzZW5zZSB0aGF0IGl0IGJ1aWxkcyBsb2NhbCBwYXJzZSBzdHJ1Y3R1cmVzIGZyb20gcmVsaWFibGUgd29yZCBjYW5kaWRhdGVzIHJlY29nbml6ZWQgYW55d2hlcmUgaW4gYW4gaW5wdXQgdXR0ZXJhbmNlLiBUaGVzZSBsb2NhbCBzdHJ1Y3R1cmVzIGFyZSB1c2VkIGFzIGBgaXNsYW5kcyBvZiByZWxpYWJpbGl0eScnIHRvIGd1aWRlIHRoZSBzZWFyY2ggZm9yIG1vcmUgaGlnaGx5IGdhcmJsZWQgd29yZHMgd2hpY2ggbWlnaHQgY29tcGxldGUgdGhlIHV0dGVyYW5jZS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNTUzMCAoUGF0dGVybiByZWNvZ25pdGlvbiBhbmQgY29tcHV0ZXIgdmlzaW9uIGVxdWlwbWVudCkiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMzsgNzUxIiwKICBjb3Jwc291cmNlID0gICAiTUlULCBDYW1icmlkZ2UsIE1BLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYXVnbWVudGVkOyBsb2NhbCBwYXJzaW5nOyBwYXJzaW5nOyBzcGVlY2ggcmVjb2duaXRpb247IHNwZWVjaCB1bmRlcnN0YW5kaW5nOyB0cmFuc2l0aW9uIG5ldHdvcmtzIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtSYWRlcjoxOTc0Ok1DUywKICBhdXRob3IgPSAgICAgICAiR2FyeSBNLiBSYWRlciIsCiAgdGl0bGUgPSAgICAgICAgIk1ldGhvZCBmb3IgQ29tcG9zaW5nIFNpbXBsZSBUcmFkaXRpb25hbCBNdXNpYyBieSBDb21wdXRlciIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNyIsCiAgbnVtYmVyID0gICAgICAgIjExIiwKICBwYWdlcyA9ICAgICAgICAiNjMxLS02MzgiLAogIG1vbnRoID0gICAgICAgIG5vdiwKICB5ZWFyID0gICAgICAgICAiMTk3NCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJBIG1ldGhvZCBpcyBkZXNjcmliZWQgZm9yIGNvbXBvc2luZyBtdXNpY2FsIHJvdW5kcyBieSBjb21wdXRlci4gVGhpcyBtZXRob2QgdXNlcyBzb21lIG11c2ljIHRoZW9yeSBwbHVzIGFkZGl0aW9uYWwgaGV1cmlzdGljcy4gRnVuZGFtZW50YWwgdG8gdGhlIG1ldGhvZCBpcyBhIHNldCBvZiBwcm9kdWN0aW9ucyB0b2dldGhlciB3aXRoIHNldHMgb2YgYXBwbGljYWJpbGl0eSBydWxlcyBhbmQgd2VpZ2h0IHJ1bGVzIHdoaWNoIG9wZXJhdGUgb24gdGhlIHByb2R1Y3Rpb25zIGRlY2lkaW5nIHdoZW4gYW5kIHRvIHdoYXQgZXh0ZW50IHRoZXkgYXJlIGF2YWlsYWJsZSBmb3IgdXNlLiBTZXZlcmFsIHJvdW5kcyBnZW5lcmF0ZWQgYnkgdGhlIGNvbXB1dGVyIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtZXRob2QgYXJlIHByZXNlbnRlZC4gR2VuZXJhbGx5LCB0aGUgcmVzdWx0YW50IG11c2ljIHNvdW5kcyBtZWRpb2NyZSB0byB0aGUgcHJvZmVzc2lvbmFsIGFsdGhvdWdoIHVzdWFsbHkgcGxlYXNpbmcgdG8gdGhlIGxheW1hbi4gSXQgYXBwZWFycyB0aGF0IGZ1bGwtYmxvd24gbXVzaWMgdGhlb3J5IGlzIG5vdCBuZWVkZWQgZm9yIHJvdW5kcyAtLS0gYWxsIHRoZSBoYXJkd2FyZSByZXF1aXJlZCBmb3Igc3RydWN0dXJhbCBsZXZlbHMgaXMgbm90IG5lY2Vzc2FyeSBmb3IgdGhlc2UgcGllY2VzLiBUaGUgYXV0aG9yIGhhcyB0cmllZCB0byBhZGRyZXNzIGJvdGggbXVzaWNpYW5zIGFuZCBjb21wdXRlciBzY2llbnRpc3RzLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMxMjMwIChBcnRpZmljaWFsIGludGVsbGlnZW5jZSk7IEM3ODIwIChIdW1hbml0aWVzIGNvbXB1dGluZykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjQ2MTsgNzIzOyA5MTIiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBQZW5uc3lsdmFuaWEsIFBoaWxhZGVscGhpYSwgUEEsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhcnRpZmljaWFsIGludGVsbGlnZW5jZTsgY29tcHV0ZXIgY29tcG9zaXRpb247IGNvbXB1dGVyIG11c2ljOyBmb3JtYWw7IGhldXJpc3RpYyBwcm9ncmFtbWluZzsgaHVtYW5pdGllczsgbGFuZ3VhZ2VzOyBtb2RlbHMgb2YgY29nbml0aXZlIHByb2Nlc3NlczsgbXVzaWMgdGhlb3J5OyBwcm9iYWJpbGlzdGljIGdyYW1tYXJzOyBzeXN0ZW1zIHNjaWVuY2UgYW5kIGN5YmVybmV0aWNzOyB0cmFkaXRpb25hbCBtdXNpY2FsIHJvdW5kcyIsCiAgdHJlYXRtZW50ID0gICAgIkEgQXBwbGljYXRpb247IFAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7RnJlaWJ1cmdob3VzZToxOTc0OlJBVSwKICBhdXRob3IgPSAgICAgICAiUi4gQS4gRnJlaWJ1cmdob3VzZSIsCiAgdGl0bGUgPSAgICAgICAgIlJlZ2lzdGVyIEFsbG9jYXRpb24gdmlhIFVzYWdlIENvdW50cyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNyIsCiAgbnVtYmVyID0gICAgICAgIjExIiwKICBwYWdlcyA9ICAgICAgICAiNjM4LS02NDIiLAogIG1vbnRoID0gICAgICAgIG5vdiwKICB5ZWFyID0gICAgICAgICAiMTk3NCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvQ29tcGlsZXIvQ29tcGlsZXIuTGlucy5iaWIiLAogIGFic3RyYWN0ID0gICAgICJUaGlzIHBhcGVyIGludHJvZHVjZXMgdGhlIG5vdGlvbiBvZiB1c2FnZSBjb3VudHMsIHNob3dzIGhvdyB1c2FnZSBjb3VudHMgY2FuIGJlIGRldmVsb3BlZCBieSBhbGdvcml0aG1zIHRoYXQgZWxpbWluYXRlIHJlZHVuZGFudCBjb21wdXRhdGlvbnMsIGFuZCBkZXNjcmliZXMgaG93IHVzYWdlIGNvdW50cyBjYW4gcHJvdmlkZSB0aGUgYmFzaXMgZm9yIHJlZ2lzdGVyIGFsbG9jYXRpb24uIFRoZSBwYXBlciBjb21wYXJlcyByZWdpc3RlciBhbGxvY2F0aW9uIGJhc2VkIG9uIHVzYWdlIGNvdW50cyB0byBvdGhlciBjb21tb25seSB1c2VkIHJlZ2lzdGVyIGFsbG9jYXRpb24gdGVjaG5pcXVlcywgYW5kIHByZXNlbnRzIGV2aWRlbmNlIHdoaWNoIHNob3dzIHRoYXQgdGhlIHVzYWdlIGNvdW50IHRlY2huaXF1ZSBpcyBzaWduaWZpY2FudGx5IGJldHRlciB0aGFuIHRoZXNlIG90aGVyIHRlY2huaXF1ZXMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMTAgKFN5c3RlbXMgYW5hbHlzaXMgYW5kIHByb2dyYW1taW5nKTsgQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiSG9uZXl3ZWxsIEluZm9ybWF0aW9uIFN5c3RlbXMgSW5jLiwgQ2FtYnJpZGdlLCBNQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbW1vbiBzdWJleHByZXNzaW9uczsgY29tcGlsZXJzOyBjb21wdXRhdGlvbnM7IGNvbXB1dGVyIHByb2dyYW1taW5nOyBkZW1hbmQgcGFnaW5nOyBsYW5ndWFnZXM7IG9wdGltaXphdGlvbjsgcHJvZ3JhbW1pbmc7IHJlZHVuZGFudDsgcmVnaXN0ZXIgYWxsb2NhdGlvbjsgc3RvcmFnZSBhbGxvY2F0aW9uOyB1c2FnZSBjb3VudHM7IHZpcnR1YWwgbWVtb3J5IiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtEaWprc3RyYToxOTc0OlNTUywKICBhdXRob3IgPSAgICAgICAiRS4gVy4gRGlqa3N0cmEiLAogIHRpdGxlID0gICAgICAgICJTZWxmLXN0YWJpbGl6aW5nIFN5c3RlbXMgaW4gU3BpdGUgb2YgRGlzdHJpYnV0ZWQgQ29udHJvbCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNyIsCiAgbnVtYmVyID0gICAgICAgIjExIiwKICBwYWdlcyA9ICAgICAgICAiNjQzLS02NDQiLAogIG1vbnRoID0gICAgICAgIG5vdiwKICB5ZWFyID0gICAgICAgICAiMTk3NCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L01pc2MvdHJhY2VzLmJpYiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MjIwIChBdXRvbWF0YSB0aGVvcnkpOyBDNjE1MEogKE9wZXJhdGluZyBzeXN0ZW1zKSIsCiAgY29ycHNvdXJjZSA9ICAgIkJ1cnJvdWdocyBDb3JwLiwgTnVlbmVuLCBOZXRoZXJsYW5kcyIsCiAga2V5d29yZHMgPSAgICAgIihjb21wdXRlcnMpOyBhdXRvbWF0YSB0aGVvcnk7IGRpc3RyaWJ1dGVkIGNvbnRyb2w7IGVycm9yIHJlY292ZXJ5OyBmYXVsdCB0b2xlcmFudCBjb21wdXRpbmc7IGhhcm1vbmlvdXMgY29vcGVyYXRpb247IG11bHRpcHJvY2Vzc2luZzsgbXV0dWFsIGV4Y2x1c2lvbjsgbmV0d29ya3M7IG9wZXJhdGluZyBzeXN0ZW1zOyByb2J1c3RuZXNzOyBzZWxmIHJlcGFpcjsgc2VsZiBzdGFiaWxpemF0aW9uOyBzaGFyaW5nOyBzeW5jaHJvbml6YXRpb24iLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0Jyb3duOjE5NzQ6T0RNLAogIGF1dGhvciA9ICAgICAgICJKLiBBLiBCcm93biBhbmQgQi4gV2VybmVyIiwKICB0aXRsZSA9ICAgICAgICAiQW4gb24tc2l0ZSBkYXRhIG1hbmFnZW1lbnQgc3lzdGVtIGFwcGxpY2F0aW9uIGluIGZpZWxkIGFyY2hhZW9sb2d5IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE3IiwKICBudW1iZXIgPSAgICAgICAiMTEiLAogIHBhZ2VzID0gICAgICAgICI2NDQtLTY0NiIsCiAgbW9udGggPSAgICAgICAgbm92LAogIHllYXIgPSAgICAgICAgICIxOTc0IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbik7IEM3ODIwIChIdW1hbml0aWVzIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJOb3J0aHdlc3Rlcm4gVW5pdi4sIEV2YW5zdG9uLCBJTCwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiQVBMLVBMVVM7IGFyY2hhZW9sb2d5OyBkYXRhIG1hbmFnZW1lbnQgc3lzdGVtOyBmaWVsZCBhcmNoYWVvbG9neTsgZmlsZSBvcmdhbmlzYXRpb247IG9uIHNpdGU7IHByZWhpc3RvcmljIHNpdGU7IHJldHJpZXZhbCBzeXN0ZW1zIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtIYW5zb246MTk3NDpTVFIsCiAgYXV0aG9yID0gICAgICAgIkQuIFIuIEhhbnNvbiIsCiAgdGl0bGUgPSAgICAgICAgIkEgc2ltcGxlIHRlY2huaXF1ZSBmb3IgcmVwcmVzZW50aW5nIHN0cmluZ3MgaW4ge0ZvcnRyYW4gSVZ9IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE3IiwKICBudW1iZXIgPSAgICAgICAiMTEiLAogIHBhZ2VzID0gICAgICAgICI2NDYtLTY0NyIsCiAgbW9udGggPSAgICAgICAgbm92LAogIHllYXIgPSAgICAgICAgICIxOTc0IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTEwIChTeXN0ZW1zIGFuYWx5c2lzIGFuZCBwcm9ncmFtbWluZyk7IEM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbik7IEM2MTQwRCAoSGlnaCBsZXZlbCBsYW5ndWFnZXMpIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gQXJpem9uYSwgVHVjc29uLCBBWiwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiZGF0YSBzdHJ1Y3R1cmVzOyBGT1JUUkFOOyBGT1JUUkFOIElWOyBwcm9ncmFtbWluZzsgcmVwcmVzZW50aW5nIHN0cmluZ3M7IHN0cmluZyBwcm9jZXNzaW5nOyBzdHJ1Y3R1cmVkIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtWYW5SaWpzYmVyZ2VuOjE5NzQ6QlBELAogIGF1dGhvciA9ICAgICAgICJDLiBKLiB7VmFuIFJpanNiZXJnZW59IiwKICB0aXRsZSA9ICAgICAgICAiVGhlIGJlc3QtbWF0Y2ggcHJvYmxlbSBpbiBkb2N1bWVudCByZXRyaWV2YWwiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTciLAogIG51bWJlciA9ICAgICAgICIxMSIsCiAgcGFnZXMgPSAgICAgICAgIjY0OC0tNjQ5IiwKICBtb250aCA9ICAgICAgICBub3YsCiAgeWVhciA9ICAgICAgICAgIjE5NzQiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKTsgQzcyNTAgKEluZm9ybWF0aW9uIHN0b3JhZ2UgYW5kIHJldHJpZXZhbCkiLAogIGNvcnBzb3VyY2UgPSAgICJNb25hc2ggVW5pdi4sIENsYXl0b24sIFZpYy4sIEF1c3RyYWxpYSIsCiAga2V5d29yZHMgPSAgICAgImJlc3QgbWF0Y2g7IGNsYXNzaWZpY2F0aW9uOyBjbHVzdGVyaW5nOyBkaXNzaW1pbGFyaXR5OyBkb2N1bWVudCByZXRyaWV2YWw7IGZpbGUgc2VhcmNoaW5nOyBoaWVyYXJjaHk7IGluZm9ybWF0aW9uIHJldHJpZXZhbDsgbWF0Y2hpbmciLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0V2YW5zOjE5NzQ6TUVMLAogIGF1dGhvciA9ICAgICAgICJSLiBWLiBFdmFucyIsCiAgdGl0bGUgPSAgICAgICAgIk11bHRpcGxlIGV4aXRzIGZyb20gYSBsb29wIHVzaW5nIG5laXRoZXIge0dPIFRPfSBub3IgbGFiZWxzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE3IiwKICBudW1iZXIgPSAgICAgICAiMTEiLAogIHBhZ2VzID0gICAgICAgICI2NTAtLTY1MCIsCiAgbW9udGggPSAgICAgICAgbm92LAogIHllYXIgPSAgICAgICAgICIxOTc0IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTEwIChTeXN0ZW1zIGFuYWx5c2lzIGFuZCBwcm9ncmFtbWluZykiLAogIGNvcnBzb3VyY2UgPSAgICJJQ0wgRGF0YXNraWwsIFJlYWRpbmcsIFVLIiwKICBrZXl3b3JkcyA9ICAgICAiY29udHJvbCBzdHJ1Y3R1cmVzOyBleGl0IHN0YXRlbWVudDsgR08gVE87IGdvIHRvIGZyZWUgcHJvZ3JhbW1pbmc7IGxhYmVsczsgbXVsdGlwbGUgZXhpdHMgZnJvbSBsb29wczsgcHJvZ3JhbW1pbmciLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0tudXRoOjE5NzQ6Q1BBLAogIGF1dGhvciA9ICAgICAgICJEb25hbGQgRS4gS251dGgiLAogIHRpdGxlID0gICAgICAgICJDb21wdXRlciBQcm9ncmFtbWluZyBhcyBhbiBBcnQiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTciLAogIG51bWJlciA9ICAgICAgICIxMiIsCiAgcGFnZXMgPSAgICAgICAgIjY2Ny0tNjczIiwKICBtb250aCA9ICAgICAgICBkZWMsCiAgeWVhciA9ICAgICAgICAgIjE5NzQiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBub3RlID0gICAgICAgICAiRnJlbmNoIHRyYW5zbGF0aW9uLCB3aXRoIHRocmVlIHN1cHBsZW1lbnRhcnkgcGFyYWdyYXBocywgaW4ge1xzbCBMJ0luZm9ybWF0aXF1ZSBOb3V2ZWxsZX0sIE5vLlwgNjQgKEp1bmUgMTk3NSksIDIwLS0yNy4gSmFwYW5lc2UgdHJhbnNsYXRpb24gYnkgTWFrb3RvIEFyaXNhd2EgaW4ge1xzbCBiaXRcLyBcYmYgN30gKDE5NzUpLCA0MzQtLTQ0NDsgcmVwcmludGVkIGluIHtcc2wgS3VudXN1IFNlbnNlaSBubyBQcm9ncmFtLVJvblwvfSAoc2VlIHVuZGVyIEJvb2tzKSwgMi0tMTkuIEVuZ2xpc2ggdmVyc2lvbiByZXByaW50ZWQgd2l0aCB0aGUgc3VwcGxlbWVudGFyeSBwYXJhZ3JhcGhzIGluIHtcc2wgQUNNIFR1cmluZyBBd2FyZCBMZWN0dXJlczogVGhlIEZpcnN0IFR3ZW50eSBZZWFyc30gKE5ldyBZb3JrOiBBQ00gUHJlc3MsIDE5ODcpLCAzMy0tNDY7IHJlcHJpbnRlZCB3aXRoIGNvcnJlY3Rpb25zIGluIFxjaXRlW3BwLn4xLS0xNl17S251dGg6MTk5MjpMUH0uIFJ1c3NpYW4gdHJhbnNsYXRpb24gYnkgVi4gVi4gTWFydHluXHQgaXVrIGluIHtcc2wgTGVrdHNpaSBsYXVyZWF0b3YgcHJlbWlpIFQnXHRcaSB1cmluZ2FcL30gKE1vc2NvdzogTWlyLCAxOTkzKSwgNDgtLTY0LiIsCiAgYWJzdHJhY3QgPSAgICAgIkRpc2N1c3Npb24gZW1waGFzaXplcyB0aGF0IGNvbXB1dGVyIHByb2dyYW1taW5nIGlzIGFuIGFydCBhcyB3ZWxsIGFzIGEgc2NpZW5jZS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjExMCAoU3lzdGVtcyBhbmFseXNpcyBhbmQgcHJvZ3JhbW1pbmcpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJTdGFuZm9yZCBVbml2LiwgQ0EsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhcnQ7IGNvbXB1dGVyOyBjb21wdXRlciBwcm9ncmFtbWluZzsgcHJvZ3JhbW1pbmc7IHF1YWxpdHkiLAogIHRyZWF0bWVudCA9ICAgICJHIEdlbmVyYWwgUmV2aWV3OyBQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle1ByZXNzOjE5NzQ6QU1DLAogIGF1dGhvciA9ICAgICAgICJMYXVyYW5jZSBJLiBQcmVzcyIsCiAgdGl0bGUgPSAgICAgICAgIkFyZ3VtZW50cyBmb3IgYSBNb3JhdG9yaXVtIG9uIHRoZSBDb25zdHJ1Y3Rpb24gb2YgYSBDb21tdW5pdHkgSW5mb3JtYXRpb24gVXRpbGl0eSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNyIsCiAgbnVtYmVyID0gICAgICAgIjEyIiwKICBwYWdlcyA9ICAgICAgICAiNjc0LS02NzgiLAogIG1vbnRoID0gICAgICAgIGRlYywKICB5ZWFyID0gICAgICAgICAiMTk3NCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJJbiB0aGlzIGFydGljbGUgdGhlIGF1dGhvciB1cmdlcyBhIHBydWRlbnQgYW5kIGRlY2VudHJhbGl6ZWQgYXBwcm9hY2ggdG8gdGhlIHF1ZXN0aW9uIG9mIHRoZSBkZXNpZ24gYW5kIGRlc2lyYWJpbGl0eSBvZiBjb21wdXRlcml6ZWQgY29tbXVuaXR5IGluZm9ybWF0aW9uIHV0aWxpdGllcy4gQ3VycmVudCBwcm9wb3NhbHMgZm9yIGNvbW11bml0eSBpbmZvcm1hdGlvbiB1dGlsaXRpZXMgYXJlIGV4YW1pbmVkIGluIHRoaXMgZnJhbWV3b3JrLCBhbmQgdGhlIGNvbmNsdXNpb24gaXMgZHJhd24gdGhhdCBzb2NpZXR5IGlzIG5vdCB5ZXQgaW4gYSBwb3NpdGlvbiB0byBqdXN0aWZ5IGVpdGhlciB0aGUgY29uc3RydWN0aW9uIG9mIGFuIGluZm9ybWF0aW9uIHV0aWxpdHkgaW4gYSBwcm90b3R5cGUgY29tbXVuaXR5IG9yIHRoZSBhY2NlcHRhbmNlIG9mIGEgcG9saWN5IGluIGZhdm9yIG9mIGl0cyB3aWRlc3ByZWFkIGltcGxlbWVudGF0aW9uLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM3MjEwIChJbmZvcm1hdGlvbiBzZXJ2aWNlcyBhbmQgY2VudHJlcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIFNvdXRoZXJuIENhbGlmb3JuaWEsIExvcyBBbmdlbGVzLCBDQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbW11bml0eSBpbmZvcm1hdGlvbiB1dGlsaXR5OyBjb25zdHJ1Y3Rpb247IGRlY2VudHJhbGl6ZWQ7IGRlbWFuZDsgZGVzaWduOyBkZXNpcmFiaWxpdHk7IGVmZmVjdHM7IGZlYXNpYmlsaXR5OyBpbmZvcm1hdGlvbiBzZXJ2aWNlczsgc2lkZTsgdGVjaG5pcXVlczsgdXNlcnM7IHdvcmxkIHZpZXciLAogIHRyZWF0bWVudCA9ICAgICJHIEdlbmVyYWwgUmV2aWV3IiwKfQoKQEFydGljbGV7U3RyYXVzczoxOTc0OkFNSCwKICBhdXRob3IgPSAgICAgICAiSi4gQy4gU3RyYXVzcyIsCiAgdGl0bGUgPSAgICAgICAgIkFuIGFuYWx5dGljIG1vZGVsIG9mIHRoZSB7SGFzcH0gZXhlY3V0aW9uIHRhc2sgbW9uaXRvciIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNyIsCiAgbnVtYmVyID0gICAgICAgIjEyIiwKICBwYWdlcyA9ICAgICAgICAiNjc5LS02ODUiLAogIG1vbnRoID0gICAgICAgIGRlYywKICB5ZWFyID0gICAgICAgICAiMTk3NCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJBIHNpbXBsZSBhbmFseXRpYyBtb2RlbCBoYXMgYmVlbiBkZXZlbG9wZWQgZm9yIGludmVzdGlnYXRpbmcgdGhlIGVmZmVjdHMgb2YgdGhlIEhBU1AgRXhlY3V0aW9uIFRhc2sgTW9uaXRvciBvbiB0aGUgcGVyZm9ybWFuY2Ugb2YgYSBtdWx0aXByb2dyYW1taW5nIHN5c3RlbS4gQSBzcGVjaWZpYyBleGFtcGxlIGlzIHdvcmtlZCB0aHJvdWdoIGluIGRldGFpbCwgYW5kIG51bWVyaWNhbCByZXN1bHRzIGFyZSByZXBvcnRlZC4gVGhlIG1vZGVsIGRlbW9uc3RyYXRlcyB0aGUgZWZmZWN0IG9mIHRoZSBIRVRNIHByaW9yaXR5IGFsZ29yaXRobSBhbmQgcGVybWl0cyB0aGUgZXZhbHVhdGlvbiBvZiBwb3NzaWJsZSBtb2RpZmljYXRpb25zIHRvIHRoZSBhbGdvcml0aG0uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxNTBHIChEaWFnbm9zdGljLCB0ZXN0aW5nLCBkZWJ1Z2dpbmcgYW5kIGV2YWx1YXRpbmcgc3lzdGVtcyk7IEM2MTUwSiAoT3BlcmF0aW5nIHN5c3RlbXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJXYXNoaW5ndG9uIFVuaXYuLCBTdC4gTG91aXMsIE1PLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiKGNvbXB1dGVycyk7IGFuYWx5dGljIG1vZGVsOyBjb21wdXRlciBzZWxlY3Rpb24gYW5kIGV2YWx1YXRpb247IGNvbXB1dGVyIHN5c3RlbXMgcHJvZ3JhbW1pbmc7IGRpc3BhdGNoaW5nOyBleGVjdXRpb24gdGFzayBtb25pdG9yOyBIQVNQOyBoYXNwIGV4ZWN1dGlvbiB0YXNrIG1vbml0b3I7IG9wZXJhdGluZyBzeXN0ZW1zOyBPUy8zNjA7IHBlcmZvcm1hbmNlIGV2YWx1YXRpb247IHNjaGVkdWxpbmciLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0FkYW06MTk3NDpDTFMsCiAgYXV0aG9yID0gICAgICAgIlRob21hcyBMLiBBZGFtIGFuZCBLLiBNLiBDaGFuZHkgYW5kIEouIFIuIERpY2tzb24iLAogIHRpdGxlID0gICAgICAgICJBIENvbXBhcmlzb24gb2YgTGlzdCBTY2hlZHVsZXMgZm9yIFBhcmFsbGVsIFByb2Nlc3NpbmcgU3lzdGVtcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNyIsCiAgbnVtYmVyID0gICAgICAgIjEyIiwKICBwYWdlcyA9ICAgICAgICAiNjg1LS02OTAiLAogIG1vbnRoID0gICAgICAgIGRlYywKICB5ZWFyID0gICAgICAgICAiMTk3NCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvUGFyYWxsZWwvT1ZSLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIlRoZSBwcm9ibGVtIG9mIHNjaGVkdWxpbmcgdHdvIG9yIG1vcmUgcHJvY2Vzc29ycyB0byBtaW5pbWl6ZSB0aGUgZXhlY3V0aW9uIHRpbWUgb2YgYSBwcm9ncmFtIHdoaWNoIGNvbnNpc3RzIG9mIGEgc2V0IG9mIHBhcnRpYWxseSBvcmRlcmVkIHRhc2tzIGlzIHN0dWRpZWQuIENhc2VzIHdoZXJlIHRhc2sgZXhlY3V0aW9uIHRpbWVzIGFyZSBkZXRlcm1pbmlzdGljIGFuZCBvdGhlcnMgaW4gd2hpY2ggZXhlY3V0aW9uIHRpbWVzIGFyZSByYW5kb20gdmFyaWFibGVzIGFyZSBhbmFseXplZC4gSXQgaXMgc2hvd24gdGhhdCBkaWZmZXJlbnQgYWxnb3JpdGhtcyBzdWdnZXN0ZWQgaW4gdGhlIGxpdGVyYXR1cmUgdmFyeSBzaWduaWZpY2FudGx5IGluIGV4ZWN1dGlvbiB0aW1lIGFuZCB0aGF0IHRoZSBCLXNjaGVkdWxlIG9mIENvZmZtYW4gYW5kIEdyYWhhbSBpcyBuZWFyLW9wdGltYWwuIEEgZHluYW1pYyBwcm9ncmFtbWluZyBzb2x1dGlvbiBmb3IgdGhlIGNhc2UgaW4gd2hpY2ggZXhlY3V0aW9uIHRpbWVzIGFyZSByYW5kb20gdmFyaWFibGVzIGlzIHByZXNlbnRlZC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNTQwMCAoQW5hbG9ndWUgYW5kIGRpZ2l0YWwgY29tcHV0ZXJzIGFuZCBzeXN0ZW1zKTsgQzYxNTBKIChPcGVyYXRpbmcgc3lzdGVtcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMiIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIFRleGFzLCBBdXN0aW4sIFRYLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcGFyaXNvbjsgY29tcHV0ZXIgc3lzdGVtcywgZGlnaXRhbDsgZHluYW1pYyBwcm9ncmFtbWluZzsgbGlzdCBzY2hlZHVsZXM7IGxpc3Qgc2NoZWR1bGluZzsgb3B0aW1pc2F0aW9uOyBvcHRpbWl6YXRpb247IHBhcmFsbGVsIHByb2Nlc3Npbmc7IHBhcmFsbGVsIHByb2Nlc3Npbmcgc3lzdGVtczsgcHJlY2VkZW5jZSBncmFwaHM7IHNjaGVkdWxpbmciLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle1dhbGxhY2U6MTk3NDpDR0csCiAgYXV0aG9yID0gICAgICAgIk4uIEQuIFdhbGxhY2UiLAogIHRpdGxlID0gICAgICAgICJDb21wdXRlciBHZW5lcmF0aW9uIG9mIEdhbW1hIFJhbmRvbSBWYXJpYXRlcyB3aXRoIE5vbi1JbnRlZ3JhbCBTaGFwZSBQYXJhbWV0ZXJzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE3IiwKICBudW1iZXIgPSAgICAgICAiMTIiLAogIHBhZ2VzID0gICAgICAgICI2OTEtLTY5NSIsCiAgbW9udGggPSAgICAgICAgZGVjLAogIHllYXIgPSAgICAgICAgICIxOTc0IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjVDMTAiLAogIE1SbnVtYmVyID0gICAgICI1MSAxMTkyMCIsCiAgbXJyZXZpZXdlciA9ICAgIlIuIFIuIENvdmV5b3UiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0Rpc3RyaWJ1dGVkL1FMRC5iaWIiLAogIGFic3RyYWN0ID0gICAgICJXaGVuIHRoZSBzaGFwZSBwYXJhbWV0ZXIsIGFscGhhLCBpcyBpbnRlZ3JhbCwgZ2VuZXJhdGluZyBnYW1tYSByYW5kb20gdmFyaWFibGVzIHdpdGggYSBkaWdpdGFsIGNvbXB1dGVyIGlzIHN0cmFpZ2h0Zm9yd2FyZC4gVGhlcmUgaXMgbm8gc2ltcGxlIG1ldGhvZCBmb3IgZ2VuZXJhdGluZyBnYW1tYSByYW5kb20gdmFyaWF0ZXMgd2l0aCBub24taW50ZWdyYWwgc2hhcGUgcGFyYW1ldGVycy4gQSBjb21tb24gcHJvY2VkdXJlIGlzIHRvIGFwcHJveGltYXRlbHkgZ2VuZXJhdGUgc3VjaCByYW5kb20gdmFyaWFibGVzIGJ5IHRoZSB1c2Ugb2YgdGhlIHNvLWNhbGxlZCBwcm9iYWJpbGl0eSBzd2l0Y2ggbWV0aG9kLiBBbm90aGVyIHByb2NlZHVyZSwgd2hpY2ggaXMgZXhhY3QsIGlzIGR1ZSB0byBKb2VobmsuIFRoaXMgcGFwZXIgcHJlc2VudHMgYSByZWplY3Rpb24gbWV0aG9kIGZvciBleGFjdGx5IGdlbmVyYXRpbmcgZ2FtbWEgcmFuZG9tIHZhcmlhYmxlcyB3aGVuIGFscGhhIGlzIGdyZWF0ZXIgdGhhbiAxLiBUaGUgZWZmaWNpZW5jeSBvZiB0aGUgcmVqZWN0aW9uIG1ldGhvZCBpcyBzaG93biB0byBiZSBiZXR0ZXIgdGhhbiB0aGUgZWZmaWNpZW5jeSBvZiBNLiBELiBKb2VobmsncyBtZXRob2QuIFRoZSBwYXBlciBjb25jbHVkZXMgdGhhdCB3aGVuIGFscGhhIGlzIG5vbi1pbnRlZ3JhbCwgdGhlIGZvbGxvd2luZyBtaXggb2YgcHJvY2VkdXJlcyB5aWVsZHMgdGhlIGJlc3QgY29tYmluYXRpb24gb2YgYWNjdXJhY3kgYW5kIGVmZmljaWVuY3k6ICgxKSB3aGVuIGFscGhhIGlzIGxlc3MgdGhhbiAxLCB1c2UgSm9laG5rJ3MgbWV0aG9kOyAoMikgd2hlbiAxIGlzIGxlc3MgdGhhbiBhbHBoYSBhbmQgYWxwaGEgaXMgbGVzcyB0aGFuIDUsIHVzZSB0aGUgcmVqZWN0aW9uIG1ldGhvZDsgKDMpIHdoZW4gYWxwaGEgaXMgZ3JlYXRlciB0aGFuIDUsIHVzZSB0aGUgcHJvYmFiaWxpdHkgc3dpdGNoIG1ldGhvZC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNzg5MCAoT3RoZXIgc3BlY2lhbCBhcHBsaWNhdGlvbnMgb2YgY29tcHV0aW5nKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiOTIyIiwKICBjb3Jwc291cmNlID0gICAiU291dGhlcm4gSWxsaW5vaXMgVW5pdi4sIEVkd2FyZHN2aWxsZSwgSUwsIFVTQSIsCiAgY291bnRyeSA9ICAgICAgIlVTQSIsCiAgZGVzY3JpcHRvcnMgPSAgIlJWRzsiLAogIGVudW0gPSAgICAgICAgICI4MDA3IiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIGdlbmVyYXRpb247IGdhbW1hIHJhbmRvbSB2YXJpYWJsZXM7IHByb2JhYmlsaXR5OyBwcm9iYWJpbGl0eSBkaXN0cmlidXRpb247IHJhbmRvbSBudW1iZXIgZ2VuZXJhdGlvbjsgcmFuZG9tIG51bWJlcnM7IHNpbXVsYXRpb24iLAogIGxhbmd1YWdlID0gICAgICJFbmdsaXNoIiwKICBsb2NhdGlvbiA9ICAgICAiU0VMOiBXaSIsCiAgcmVmZXJlbmNlcyA9ICAgIjAiLAogIHJldmlzaW9uID0gICAgICIxNi8wMS85NCIsCiAgdHJlYXRtZW50ID0gICAgIkEgQXBwbGljYXRpb247IFQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7U2FsYXphcjoxOTc0OkdGUywKICBhdXRob3IgPSAgICAgICAiQS4gU2FsYXphciBhbmQgUi4gVi4gT2FrZm9yZCIsCiAgdGl0bGUgPSAgICAgICAgIkEgR3JhcGggRm9ybXVsYXRpb24gb2YgYSBTY2hvb2wgU2NoZWR1bGluZyBBbGdvcml0aG0iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTciLAogIG51bWJlciA9ICAgICAgICIxMiIsCiAgcGFnZXMgPSAgICAgICAgIjY5Ni0tNjk4IiwKICBtb250aCA9ICAgICAgICBkZWMsCiAgeWVhciA9ICAgICAgICAgIjE5NzQiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI5MEIzNSIsCiAgTVJudW1iZXIgPSAgICAgIjUxIDEyMzEzIiwKICBtcnJldmlld2VyID0gICAiSS4gR2guIENpb2JhbnUiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L1RoZW9yeS9ncmFwaC5jb2xvcmluZy5iaWIiLAogIG5vdGUgPSAgICAgICAgICJTZWUgXGNpdGV7S29yZmhhZ2U6MTk3NTpTTyxLb3JmaGFnZToxOTc1Ok1TTyxHYXJleToxOTc1OlNPfS4iLAogIGFic3RyYWN0ID0gICAgICJUaGUgcHJvYmxlbSBjbGFzc2ljYWxseSB0aXRsZWQgYGBUaGUgRXhhbWluYXRpb24gU2NoZWR1bGUgUHJvYmxlbScnIHRha2VzIHZhcmlvdXMgZm9ybXMgaW4gdGhlIGxpdGVyYXR1cmUuIE1vc3Qgb2YgdGhlc2UgZm9ybXVsYXRpb25zIGNhbiBiZSBwcmVzZW50ZWQgaW4gdGhlIHRlcm1pbm9sb2d5IG9mIGNsYXNzaWNhbCBOZXR3b3JrIFRoZW9yeS4gXHBhciBPbmUgc3VjaCBmb3JtdWxhdGlvbiBpczogR2l2ZW4gYSBub25kaXJlY3RlZCBuZXR3b3JrLCBwYXJ0aXRpb24gaXRzIG5vZGVzIGludG8gYSBtaW5pbWFsIG51bWJlciBvZiBzdWJzZXRzIHN1Y2ggdGhhdCBubyB0d28gbWVtYmVycyBvZiB0aGUgc2FtZSBzdWJzZXQgYXJlIGNvbm5lY3RlZCBieSBhbiBhcmMuIEFuIG9idmlvdXMgbG93ZXIgbGltaXQgdG8gdGhpcyBudW1iZXIgaXMgdGhlIHNpemUgb2YgdGhlIGxhcmdlc3Qgc3Ryb25nbHkgY29ubmVjdGVkIHN1YmdyYXBoLiBLaXJjaGdhc3NuZXIgcHJvdmVkIHRoYXQgYW4gdXBwZXIgbGltaXQgaXMgdGhpcyBzaXplIHBsdXMgb25lLiBPbmUgbG9naWNhbCBleHRlbnNpb24gb2YgdGhlIHByZXZpb3VzIHdvcmsgaXMgdGhlIGludHJvZHVjdGlvbiBvZiB2YXJpYWJsZSBsZW5ndGggZXhhbWluYXRpb25zIHdoZXJlICRXKEkpJCBpcyB0aGUgbnVtYmVyIG9mIHBlcmlvZHMgZm9yIGV4YW0gJEkkLiBUaGUgb2JqZWN0IG9mIHRoaXMgcGFwZXIgaXMgdG8gZ2VuZXJhbGl6ZSB0aGUgZGVmaW5pdGlvbiBvZiBsYXJnZXN0IHN0cm9uZ2x5IGNvbm5lY3RlZCBzdWJncmFwaCB0byBpbmNsdWRlIHRoZSB3ZWlnaHRpbmcgb2Ygbm9kZXMsIHRvIHByZXNlbnQgYW4gYXBwcm94aW1hdGUgYWxnb3JpdGhtIHdoaWNoIHVzdWFsbHkgZmluZHMgdGhlIGxhcmdlc3Qgc3Ryb25nbHkgY29ubmVjdGVkIHN1YmdyYXBoLCBhbmQgdG8gZGlzY3VzcyB0aGUgYXBwbGljYXRpb24gb2YgdGhpcyBhbGdvcml0aG0gdG8gdGhlIHNvbHV0aW9uIG9mIHNjaG9vbCBzY2hlZHVsaW5nIGFuZCBleGFtIHNjaGVkdWxpbmcgcHJvYmxlbXMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjAyNjAgKE9wdGltaXNhdGlvbiB0ZWNobmlxdWVzKTsgQzExODAgKE9wdGltaXNhdGlvbiB0ZWNobmlxdWVzKTsgQzEyOTBGIChTeXN0ZW1zIHRoZW9yeSBhcHBsaWNhdGlvbnMgaW4gaW5kdXN0cnkpQzcxMTAgKEVkdWNhdGlvbmFsIGFkbWluaXN0cmF0aW9uKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzOyA5MjEiLAogIGNvcnBzb3VyY2UgPSAgICJTdGFuZm9yZCBVbml2LiwgQ0EsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBwcm9ncmFtbWluZyAtLS0gU3Vicm91dGluZXM7IGRhdGEgcHJvY2Vzc2luZzsgZWR1Y2F0aW9uYWwgYWRtaW5pc3RyYXRpdmUgZGF0YSBwcm9jZXNzaW5nOyBleGFtaW5hdGlvbjsgZXhhbWluYXRpb24gc2NoZWR1bGluZzsgZ3JhcGg7IGdyYXBoIGNvbG9yaW5nOyBncmFwaCB0aGVvcnk7IG1hdGhlbWF0aWNhbCB0ZWNobmlxdWVzIC0tLSBHcmFwaCBUaGVvcnk7IG5vbmRpcmVjdGVkIG5ldHdvcms7IHNjaGVkdWxpbmc7IHNjaG9vbDsgc2Nob29sIHNjaGVkdWxpbmc7IHN0cm9uZ2x5IGNvbm5lY3RlZDsgc3Ryb25nbHkgY29ubmVjdGVkIHN1YmdyYXBoOyBzdWJncmFwaCIsCiAgdHJlYXRtZW50ID0gICAgIkEgQXBwbGljYXRpb247IFQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7Q2h1OjE5NzQ6RU1TLAogIGF1dGhvciA9ICAgICAgICJTaGVyd29vZCBDLiBDaHUgYW5kIE1vbmVzIEJlcm1hbiIsCiAgdGl0bGUgPSAgICAgICAgIkFuIEV4cG9uZW50aWFsIE1ldGhvZCBmb3IgdGhlIFNvbHV0aW9uIG9mIFN5c3RlbXMgb2YgT3JkaW5hcnkgRGlmZmVyZW50aWFsIEVxdWF0aW9ucyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNyIsCiAgbnVtYmVyID0gICAgICAgIjEyIiwKICBwYWdlcyA9ICAgICAgICAiNjk5LS03MDIiLAogIG1vbnRoID0gICAgICAgIGRlYywKICB5ZWFyID0gICAgICAgICAiMTk3NCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY1TDk5IiwKICBNUm51bWJlciA9ICAgICAiNTEgNDY4NSIsCiAgbXJyZXZpZXdlciA9ICAgIlcuIEguIEVucmlnaHQiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiQW4gZXhwbGljaXQsIGNvdXBsZWQsIHNpbmdsZS1zdGVwIG1ldGhvZCBmb3IgdGhlIG51bWVyaWNhbCBzb2x1dGlvbiBvZiBpbml0aWFsIHZhbHVlIHByb2JsZW1zIGZvciBzeXN0ZW1zIG9mIG9yZGluYXJ5IGRpZmZlcmVudGlhbCBlcXVhdGlvbnMgaXMgcHJlc2VudGVkLiBccGFyIFRoZSBtZXRob2Qgd2FzIGRlc2lnbmVkIHRvIGJlIGdlbmVyYWwgcHVycG9zZSBpbiBuYXR1cmUgYnV0IHRvIGJlIGVzcGVjaWFsbHkgZWZmaWNpZW50IHdoZW4gZGVhbGluZyB3aXRoIHN0aWZmIHN5c3RlbXMgb2YgZGlmZmVyZW50aWFsIGVxdWF0aW9ucy4gSXQgaXMsIGluIGdlbmVyYWwsIHNlY29uZCBvcmRlciBleGNlcHQgZm9yIHRoZSBjYXNlIG9mIGEgbGluZWFyIHN5c3RlbSB3aXRoIGNvbnN0YW50IGNvZWZmaWNpZW50cyBhbmQgbGluZWFyIGZvcmNpbmcgdGVybXM7IGluIHRoYXQgY2FzZSwgdGhlIG1ldGhvZCBpcyB0aGlyZCBvcmRlci4gSXQgaGFzIGJlZW4gaW1wbGVtZW50ZWQgYW5kIHB1dCB0byByb3V0aW5lIHVzYWdlIGluIGJpb2xvZ2ljYWwgYXBwbGljYXRpb25zLXdoZXJlIHN0aWZmbmVzcyBmcmVxdWVudGx5IGFwcGVhcnMtd2l0aCBmYXZvcmFibGUgcmVzdWx0cy4gV2hlbiBjb21wYXJlZCB0byBhIHN0YW5kYXJkIGZvdXJ0aCBvcmRlciBSdW5nZS1LdXR0YSBpbXBsZW1lbnRhdGlvbiwgY29tcHV0YXRpb24gdGltZSByZXF1aXJlZCBieSB0aGlzIG1ldGhvZCBoYXMgcmFuZ2VkIGZyb20gY29tcGFyYWJsZSBmb3IgY2VydGFpbiBub25zdGlmZiBwcm9ibGVtcyB0byBiZXR0ZXIgdGhhbiB0d28gb3JkZXJzIG9mIG1hZ25pdHVkZSBmYXN0ZXIgZm9yIHNvbWUgaGlnaGx5IHN0aWZmIHN5c3RlbXMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjAyOTBQIChEaWZmZXJlbnRpYWwgZXF1YXRpb25zKTsgQzQxNzAgKERpZmZlcmVudGlhbCBlcXVhdGlvbnMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI5MjEiLAogIGNvcnBzb3VyY2UgPSAgICJOYXQuIENhbmNlciBJbnN0LiwgQmV0aGVzZGEsIE1ELCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYm91bmRhcnktdmFsdWUgcHJvYmxlbXM7IGluaXRpYWw7IGluaXRpYWwgdmFsdWUgcHJvYmxlbXM7IG1hdGhlbWF0aWNhbCB0ZWNobmlxdWVzOyBudW1lcmljYWwgbWV0aG9kczsgbnVtZXJpY2FsIHNvbHV0aW9uOyBvcmRpbmFyeSBkaWZmZXJlbnRpYWwgZXF1YXRpb25zOyBzdGlmZiBzeXN0ZW1zOyB2YWx1ZSBwcm9ibGVtcyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7UG9tZXJhbno6MTk3NDpBQUUsCiAgYXV0aG9yID0gICAgICAgIkouIFBvbWVyYW56IiwKICB0aXRsZSA9ICAgICAgICAie0FDTX0gQWxnb3JpdGhtIDQ4NzogRXhhY3QgQ3VtdWxhdGl2ZSBEaXN0cmlidXRpb24gb2YgdGhlIHtLb2xtb2dvcm92LVNtaXJub3Z9IFN0YXRpc3RpYyBmb3IgU21hbGwgU2FtcGxlcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNyIsCiAgbnVtYmVyID0gICAgICAgIjEyIiwKICBwYWdlcyA9ICAgICAgICAiNzAzLS03MDQiLAogIG1vbnRoID0gICAgICAgIGRlYywKICB5ZWFyID0gICAgICAgICAiMTk3NCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIG5vdGUgPSAgICAgICAgICJTZWUgYWxzbyBcY2l0ZXtQb21lcmFuejoxOTc2OlJFQ30uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzczMTAgKE1hdGhlbWF0aWNzIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJQdXJkdWUgVW5pdi4sIFdlc3QgTGFmYXlldHRlLCBJTiwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiYWxnb3JpdGhtOyBleGFjdCBjdW11bGF0aXZlIGRpc3RyaWJ1dGlvbjsgRk9SVFJBTjsgS29sbW9nb3JvdiBTbWlybm92IHRlc3Q7IG5hdHVyYWwgc2NpZW5jZXMgYXBwbGljYXRpb25zIG9mIGNvbXB1dGVyczsgc21hbGwgc2FtcGxlczsgc3RhdGlzdGljOyBzdGF0aXN0aWNzOyBzdWJyb3V0aW5lcyIsCiAgdHJlYXRtZW50ID0gICAgIkEgQXBwbGljYXRpb247IFQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7QnJlbnQ6MTk3NDpBQUcsCiAgYXV0aG9yID0gICAgICAgIlIuIFAuIEJyZW50IiwKICB0aXRsZSA9ICAgICAgICAie0FDTX0gQWxnb3JpdGhtIDQ4ODoge0F9IHtHYXVzc2lhbn0gcHNldWRvLXJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIFt7RzV9XSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNyIsCiAgbnVtYmVyID0gICAgICAgIjEyIiwKICBwYWdlcyA9ICAgICAgICAiNzA0LS03MDYgKG9yIDcwNC0tNzA1Pz8pIiwKICBtb250aCA9ICAgICAgICBkZWMsCiAgeWVhciA9ICAgICAgICAgIjE5NzQiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EaXN0cmlidXRlZC9RTEQuYmliIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzc4OTAgKE90aGVyIHNwZWNpYWwgYXBwbGljYXRpb25zIG9mIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJBdXN0cmFsaWFuIE5hdC4gVW5pdi4sIENhbmJlcnJhLCBBdXN0cmFsaWEiLAogIGNvdW50cnkgPSAgICAgICJVU0EiLAogIGRlc2NyaXB0b3JzID0gICJSVkc7IiwKICBlbnVtID0gICAgICAgICAiNzA2MSIsCiAga2V5d29yZHMgPSAgICAgImRpc3RyaWJ1dGlvbjsgRk9SVFJBTjsgR2F1c3NpYW47IGdlbmVyYXRvcjsgR1JBTkQ7IG5vcm1hbCBkaXN0cmlidXRpb247IHBzZXVkbyByYW5kb20gbnVtYmVyczsgcmFuZG9tIG51bWJlciBnZW5lcmF0aW9uOyByYW5kb20gbnVtYmVyczsgc3Vicm91dGluZXMiLAogIGxhbmd1YWdlID0gICAgICJFbmdsaXNoIiwKICBsb2NhdGlvbiA9ICAgICAiU0VMOiBXaSIsCiAgcmVmZXJlbmNlcyA9ICAgIjAiLAogIHJldmlzaW9uID0gICAgICIxNi8wMS85NCIsCiAgdHJlYXRtZW50ID0gICAgIkEgQXBwbGljYXRpb247IFQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7U2tpbm5lcjoxOTc0OkhBSSwKICBhdXRob3IgPSAgICAgICAiQy4gV2lsbGlhbSBTa2lubmVyIiwKICB0aXRsZSA9ICAgICAgICAiSGV1cmlzdGljIEFwcHJvYWNoIHRvIEluZHVjdGl2ZSBJbmZlcmVuY2UgaW4gRmFjdCBSZXRyaWV2YWwgU3lzdGVtcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxNyIsCiAgbnVtYmVyID0gICAgICAgIjEyIiwKICBwYWdlcyA9ICAgICAgICAiNzA3LS03MTIiLAogIG1vbnRoID0gICAgICAgIGRlYywKICB5ZWFyID0gICAgICAgICAiMTk3NCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJIZXVyaXN0aWMgcHJvY2VkdXJlcyBhcmUgcHJlc2VudGVkIHdoaWNoIGhhdmUgYmVlbiBkZXZlbG9wZWQgdG8gcGVyZm9ybSBpbmZlcmVuY2VzIGJ5IGdlbmVyYWxpemluZyBmcm9tIGF2YWlsYWJsZSBpbmZvcm1hdGlvbi4gVGhlIHByb2NlZHVyZXMgbWFrZSB1c2Ugb2YgYSBzaW1pbGFyaXR5IHN0cnVjdHVyZSB3aGljaCBpcyBpbXBvc2VkIG9uIHRoZSBkYXRhIGJhc2UgdXNpbmcgbm9ubnVtZXJpY2FsIGNsdXN0ZXJpbmcgYWxnb3JpdGhtcy4gVGhleSBhcmUgaW1wbGVtZW50ZWQgaW4gYSBtb2RlbCBmYWN0IHJldHJpZXZhbCBzeXN0ZW0gd2hpY2ggdXNlcyBhIGZvcm1hbCBxdWVyeSBsYW5ndWFnZSBhbmQgYSBwcm9wZXJ0eS1saXN0IGRhdGEgc3RydWN0dXJlLiBBIHByb2dyYW0gb2YgZXhwZXJpbWVudHMgaXMgZGVzY3JpYmVkIHdoZXJlaW4gdGhlIHByb2NlZHVyZXMgYXJlIHVzZWQgd2l0aCB0ZXN0IGRhdGEgYmFzZXMgd2hpY2ggYXJlIGFsdGVyZWQgYnkgZGVsZXRpbmcgcGFydCBvZiB0aGUgZGF0YSBhbmQgYnkgcHVycG9zZWx5IGludHJvZHVjaW5nIGZhbHNlIGRhdGEuIEl0IGlzIGZvdW5kIHRoYXQgdGhlIHN5c3RlbSBjYW4gaW5mZXIgdGhlIGNvcnJlY3QgcmVzcG9uc2UgdW5kZXIgYSB2YXJpZXR5IG9mIGNvbmRpdGlvbnMgaW52b2x2aW5nIGluY29tcGxldGUgYW5kIGluY29uc2lzdGVudCBkYXRhLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbik7IEM3MTAwIChCdXNpbmVzcyBhbmQgYWRtaW5pc3RyYXRpb24pOyBDNzI1MCAoSW5mb3JtYXRpb24gc3RvcmFnZSBhbmQgcmV0cmlldmFsKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzOyA5MDEiLAogIGNvcnBzb3VyY2UgPSAgICJOb3J0aCBDYXJvbGluYSBTdGF0ZSBVbml2LiwgUmFsZWlnaCwgTkMsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjbHVzdGVyaW5nOyBmYWN0IHJldHJpZXZhbDsgZmlsZSBvcmdhbmlzYXRpb247IGZvcm1hbCBxdWVyeSBsYW5ndWFnZTsgaGV1cmlzdGljIHByb2dyYW1taW5nOyBoZXVyaXN0aWNzOyBpbmR1Y3RpdmU7IGluZmVyZW5jZTsgaW5mb3JtYXRpb247IGluZm9ybWF0aW9uIHJldHJpZXZhbCBzeXN0ZW1zOyBtYW5hZ2VtZW50IGluZm9ybWF0aW9uIHN5c3RlbXM7IHJldHJpZXZhbCBzeXN0ZW1zIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtNaXRyYToxOTc0OlNBSCwKICBhdXRob3IgPSAgICAgICAiRC4gTWl0cmEiLAogIHRpdGxlID0gICAgICAgICJTb21lIEFzcGVjdHMgb2YgSGllcmFyY2hpY2FsIE1lbW9yeSBTeXN0ZW1zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIxIiwKICBudW1iZXIgPSAgICAgICAiMSIsCiAgcGFnZXMgPSAgICAgICAgIjU0LS02NSIsCiAgbW9udGggPSAgICAgICAgamFuLAogIHllYXIgPSAgICAgICAgICIxOTc0IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJzb3VyY2UgPSAgICAiZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9NaXNjL3N0b3JhZ2UuYmliIiwKICBrZXl3b3JkcyA9ICAgICAibWVtb3J5IGhpZXJhcmNoeTsgUGVyZm9ybWFuY2UgRXZhbHVhdGlvbjogQW5hbHl0aWMiLAp9CgpAQXJ0aWNsZXtNaWxsc3RlaW46MTk3NTpDU0ksCiAgYXV0aG9yID0gICAgICAgIlIuIEUuIE1pbGxzdGVpbiIsCiAgdGl0bGUgPSAgICAgICAgIkNvbnRyb2wgU3RydWN0dXJlcyBpbiB7SWxsaWFjIElWIEZvcnRyYW59IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjYiLAogIG51bWJlciA9ICAgICAgICIxMCIsCiAgcGFnZXMgPSAgICAgICAgIjE1Ny0tMTY0IiwKICBtb250aCA9ICAgICAgICBvY3QsCiAgeWVhciA9ICAgICAgICAgIjE5NzUiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgU2VwIDIwIDIyOjE5OjM0IDE5OTQiLAogIGJpYnNvdXJjZSA9ICAgICJmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L1BhcmFsbGVsL011bHRpLmJpYiIsCn0KCkBBcnRpY2xle1N0ZXJsaW5nOjE5NzU6Q0hMLAogIGF1dGhvciA9ICAgICAgICJULiBTdGVybGluZyBhbmQgVi4gTHVtIGFuZCBOLiBTaHUgYW5kIEIuIEhvdXNlbCIsCiAgdGl0bGUgPSAgICAgICAgIntcZW0gQ09OVkVSVFwvfToge0F9IEhpZ2ggTGV2ZWwgVHJhbnNsYXRpb24gRGVmaW5pdGlvbiBMYW5ndWFnZSBmb3IgRGF0YSBDb252ZXJzaW9uIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjgiLAogIG51bWJlciA9ICAgICAgICIxMCIsCiAgcGFnZXMgPSAgICAgICAgIjU1Ny0tNTY3IiwKICBtb250aCA9ICAgICAgICBvY3QsCiAgeWVhciA9ICAgICAgICAgIjE5NzUiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJNb24gRmViIDEyIDE0OjM0OjAwIDE5OTYiLAogIGJpYnNvdXJjZSA9ICAgICJmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0RhdGFiYXNlL2RhdGFiYXNlLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIlRoaXMgcGFwZXIgZGVzY3JpYmVzIGEgaGlnaCBsZXZlbCBhbmQgbm9ucHJvY2VkdXJhbCB0cmFuc2xhdGlvbiBkZWZpbml0aW9uIGxhbmd1YWdlLCBDT05WRVJULCB3aGljaCBwcm92aWRlcyB2ZXJ5IHBvd2VyZnVsIGFuZCBoaWdobHkgZmxleGlibGUgZGF0YSByZXN0cnVjdHVyaW5nIGNhcGFiaWxpdGllcy4gSXRzIGRlc2lnbiBpcyBiYXNlZCBvbiB0aGUgc2ltcGxlIHVuZGVybHlpbmcgY29uY2VwdCBvZiBhIGZvcm0gd2hpY2ggZW5hYmxlcyB0aGUgdXNlcnMgdG8gdmlzdWFsaXplIHRoZSB0cmFuc2xhdGlvbiBwcm9jZXNzZXMsIGFuZCB0aHVzIG1ha2VzIGRhdGEgdHJhbnNsYXRpb24gYSBtdWNoIHNpbXBsZXIgdGFzay4gYGBDT05WRVJUJycgaGFzIGJlZW4gY2hvc2VuIGZvciBjb252ZXlpbmcgdGhlIHB1cnBvc2Ugb2YgdGhlIGxhbmd1YWdlIGFuZCBzaG91bGQgbm90IGJlIGNvbmZ1c2VkIHdpdGggYW55IG90aGVyIGxhbmd1YWdlIG9yIHByb2dyYW0gYmVhcmluZyB0aGUgc2FtZSBuYW1lLiIsCiAgYW5ub3RlID0gICAgICAgIkEgZnVsbCBkZXNjcmlwdGlvbiBvZiB0aGUgQ09OVkVSVCBsYW5ndWFnZSBpcyBnaXZlbi4gSXQgaXMgZmFpcmx5IGNvbXBsZXRlLCBhbmQgZGVhbHQgd2VsbCB3aXRoIHJlY29yZCBvcmllbnRlZCBzeXN0ZW1zLiBBIGdvb2Qgc2V0IG9mIGV4YW1wbGVzIGlzIGdpdmVuLiIsCiAga2V5d29yZHMgPSAgICAgImRhdGEgY29udmVyc2lvbjsgZGF0YSByZXN0cnVjdHVyaW5nOyBkYXRhIHRyYW5zbGF0aW9uOyBkYXRhYmFzZSByZW9yZ2FuaXphdGlvbjsgbm9ucHJvY2VkdXJhbCBsYW5ndWFnZXM7IHByb2dyYW1taW5nIGxhbmd1YWdlczsgdHJhbnNsYXRpb24gZGVmaW5pdGlvbjsgdXRpbGl0eSBwcm9ncmFtIiwKICBvd25lciA9ICAgICAgICAiY3VydGlzIiwKfQoKQEFydGljbGV7RmluZXJtYW46MTk3NTpQQ0YsCiAgYXV0aG9yID0gICAgICAgIkFhcm9uIEZpbmVybWFuIiwKICB0aXRsZSA9ICAgICAgICAiUHJvZmVzc2lvbmFsaXNtIGluIHRoZSBDb21wdXRpbmcgRmllbGQiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTgiLAogIG51bWJlciA9ICAgICAgICIxIiwKICBwYWdlcyA9ICAgICAgICAiNC0tOSIsCiAgbW9udGggPSAgICAgICAgamFuLAogIHllYXIgPSAgICAgICAgICIxOTc1IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkVhY2ggb2YgdGhlIGZvdXIgdHlwZXMgb2YgaW5zdGl0dXRpb25zIC0tLSBhY2FkZW1pYywgaW5kdXN0cnksIGdvdmVybm1lbnQsIGFuZCB0aGUgcHJvZmVzc2lvbmFsIHNvY2lldHkgLS0tIHRoYXQgZWR1Y2F0ZSwgZW1wbG95LCByZWd1bGF0ZSwgYW5kIG1vbGQgdGhlIHByYWN0aXRpb25lciBjb250cmlidXRlcyB0byB0aGUgYGBub25wcm9mZXNzaW9uYWwnJyBzdGF0dXMgb2YgdGhlIGNvbXB1dGluZyBwcmFjdGl0aW9uZXIuIFRoZSByb2xlcyBvZiB0aGVzZSBpbnN0aXR1dGlvbnMgYXJlIGV4YW1pbmVkLCB2YXJpb3VzIHNob3J0Y29taW5ncyBhcmUgbm90ZWQsIGFuZCByZWNvbW1lbmRlZCBjaGFuZ2VzIGFyZSBzdWdnZXN0ZWQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzAyMDAgKEdlbmVyYWwgY29tcHV0ZXIgdG9waWNzKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzOyA5MTIiLAogIGNvcnBzb3VyY2UgPSAgICJTdGF0ZSBVbml2LiBvZiBOZXcgWW9yaywgU3RvbnkgQnJvb2ssIE5ZLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYWNhZGVtaWM7IGNvbXB1dGVyczsgY29tcHV0aW5nOyBjb21wdXRpbmcgcHJhY3RpdGlvbmVyOyBlY29ub21pYyBhbmQgc29jaW9sb2dpY2FsIGVmZmVjdHM7IGVkdWNhdGlvbjsgZWR1Y2F0aW9uYWwgcHJvZ3JhbW1lczsgZW1wbG95bWVudDsgZ292ZXJubWVudDsgaW5kdXN0cnk7IHByb2Zlc3Npb25hbCBzb2NpZXR5OyBwcm9mZXNzaW9uYWxpc207IHNvY2lhbCBzdGFuZGFyZHM7IHRlY2huaWNhbCBzdGFuZGFyZHMiLAogIHRyZWF0bWVudCA9ICAgICJHIEdlbmVyYWwgUmV2aWV3OyBQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0JhdWVyOjE5NzU6UE4sCiAgYXV0aG9yID0gICAgICAgIkYuIEwuIEJhdWVyIiwKICB0aXRsZSA9ICAgICAgICAiUG9zaXRpdml0eSBhbmQgTm9ybXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTgiLAogIG51bWJlciA9ICAgICAgICIxIiwKICBwYWdlcyA9ICAgICAgICAiOS0tMTMiLAogIG1vbnRoID0gICAgICAgIGphbiwKICB5ZWFyID0gICAgICAgICAiMTk3NSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY1RjM1ICgxNUE2MCA0N0EzMCkiLAogIE1SbnVtYmVyID0gICAgICI1NCA2NDc2IiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgbm90ZSA9ICAgICAgICAgIkNvbGxlY3Rpb24gb2YgYXJ0aWNsZXMgaG9ub3Jpbmcge0Fsc3RvbiBTLiBIb3VzZWhvbGRlcn0uIiwKICBhYnN0cmFjdCA9ICAgICAiRm9sbG93aW5nIHNvbWUgbGluZXMgb2Ygam9pbnQgd29yayB3aXRoIEEuIFMuIEhvdXNlaG9sZGVyLCB0aGUgY2hhcmFjdGVyIGFuZCB1c2Ugb2YgYWxnZWJyYWljIG1ldGhvZHMgaW4gdGhlIHRoZW9yeSBvZiBub3JtcyBpcyBkZW1vbnN0cmF0ZWQuIE5ldyByZXN1bHRzIGNvbmNlcm5pbmcgbm9ybXMgd2l0aCB2YWx1ZXMgaW4gYW4gQXJjaGltZWRpYW4gdmVjdG9yIGxhdHRpY2UgKG5vdCBuZWNlc3NhcmlseSBiZWluZyB0b3RhbGx5IG9yZGVyZWQpIGFyZSBnaXZlbiwgaW4gcGFydGljdWxhciBmb3IgdGhlIGdlbmVyYWxpemF0aW9uIG9mIG9yZGVyIHVuaXQgbm9ybXMsIEwtbm9ybXMgYW5kIE0tbm9ybXMuIEFuIGV4YW1wbGUgb2YgYXBwbGljYXRpb24gdG8gb3BlcmF0b3Igbm9ybXMgaXMgZ2l2ZW4gY29uY2VybmluZyBjb250cmFjdGlvbiBwcm9wZXJ0aWVzIG9mIHBvc2l0aXZlIG9wZXJhdG9ycy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJCMDI5MEggKExpbmVhciBhbGdlYnJhKTsgQzQxNDAgKExpbmVhciBhbGdlYnJhKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiOTIxIiwKICBjb3Jwc291cmNlID0gICAiTWF0aC4gSW5zdC4sIFRlY2guIFVuaXYuIG9mIE11bmljaCwgTXVuaWNoLCBXZXN0IEdlcm1hbnkiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYWJzb2x1dGU7IGFsZ2VicmFpYyBtZXRob2RzOyBBcmNoaW1lZGlhbiB2ZWN0b3IgbGF0dGljZTsgY29udHJhY3Rpb247IEwgbm9ybXM7IE0gbm9ybXM7IG1hdGhlbWF0aWNhbCB0ZWNobmlxdWVzOyBtYXRyaWNlczsgbWF0cml4IGFsZ2VicmE7IG1ldGhvZHM7IG1vbm90b25pYzsgbm9ybXM7IG51bWVyaWNhbDsgbnVtZXJpY2FsIG1ldGhvZHM7IG51bWVyaWNhbCByYW5nZTsgb3BlcmF0b3Igbm9ybXM7IG9yZGVyOyBwb3NpdGl2ZSBvcGVyYXRvcnM7IHBvc2l0aXZpdHk7IHBvc2l0aXZpdHkgY29uZXM7IHByb3BlcnRpZXM7IHVuaXQgbm9ybXM7IHZlY3RvciBsYXR0aWNlOyB2ZWN0b3JzIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtUb2RkOjE5NzU6TEMsCiAgYXV0aG9yID0gICAgICAgIkpvaG4gVG9kZCIsCiAgdGl0bGUgPSAgICAgICAgIlRoZSBMZW1uaXNjYXRlIENvbnN0YW50cyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOCIsCiAgbnVtYmVyID0gICAgICAgIjEiLAogIHBhZ2VzID0gICAgICAgICIxNC0tMTkiLAogIG1vbnRoID0gICAgICAgIGphbiwKICB5ZWFyID0gICAgICAgICAiMTk3NSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY1RDIwIiwKICBNUm51bWJlciA9ICAgICAiNTEgMTE5MzUiLAogIG1ycmV2aWV3ZXIgPSAgICJMLiBGb3giLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBub3RlID0gICAgICAgICAiQ29sbGVjdGlvbiBvZiBhcnRpY2xlcyBob25vcmluZyB7QWxzdG9uIFMuIEhvdXNlaG9sZGVyfS4gU2VlIGNvcnJpZ2VuZHVtIFxjaXRle1RvZGQ6MTk3NTpDTEN9LiIsCiAgYWJzdHJhY3QgPSAgICAgIlRoZSBsZW1uaXNjYXRlIGNvbnN0YW50cywgYW5kIGluZGVlZCBzb21lIG9mIHRoZSBtZXRob2RzIHVzZWQgZm9yIGFjdHVhbGx5IGNvbXB1dGluZyB0aGVtLCBoYXZlIHBsYXllZCBhbiBlbm9ybW91cyBwYXJ0IGluIHRoZSBkZXZlbG9wbWVudCBvZiBtYXRoZW1hdGljcy4gQW4gYWNjb3VudCBpcyBnaXZlbiBoZXJlIG9mIHNvbWUgb2YgdGhlIG1ldGhvZHMgdXNlZCAtLS0gbW9zdCBvZiB0aGUgZGVyaXZhdGlvbnMgY2FuIGJlIG1hZGUgYnkgZWxlbWVudGFyeSBtZXRob2RzLiBUaGlzIG1hdGVyaWFsIGNhbiBiZSB1c2VkIGZvciB0ZWFjaGluZyBwdXJwb3NlcywgYW5kIHRoZXJlIGlzIG11Y2ggcmVsZXZhbnQgYW5kIGludGVyZXN0aW5nIGhpc3RvcmljYWwgbWF0ZXJpYWwuIFRoZSBhY2NlbGVyYXRpb24gbWV0aG9kcyBkZXZlbG9wZWQgZm9yIHRoZSBwdXJwb3NlIG9mIGV2YWx1YXRpbmcgdGhlc2UgY29uc3RhbnRzIGFyZSB1c2VmdWwgaW4gb3RoZXIgcHJvYmxlbXMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjAyOTBEIChGdW5jdGlvbmFsIGFuYWx5c2lzKTsgQjAyOTBaIChPdGhlciBudW1lcmljYWwgbWV0aG9kcyk7IEM0MTIwIChGdW5jdGlvbmFsIGFuYWx5c2lzKTsgQzQxOTAgKE90aGVyIG51bWVyaWNhbCBtZXRob2RzKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiOTIxIiwKICBjb3Jwc291cmNlID0gICAiQ2FsaWZvcm5pYSBJbnN0LiBvZiBUZWNobm9sLiwgUGFzYWRlbmEsIENBLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYWNjZWxlcmF0aW9uOyBhY2NlbGVyYXRpb24gbWV0aG9kczsgZWxsaXB0aWMgZnVuY3Rpb25zOyBFdWxlciB0cmFuc2Zvcm1hdGlvbjsgZnVuY3Rpb24gZXZhbHVhdGlvbjsgbGVtbmlzY2F0ZTsgbGVtbmlzY2F0ZSBjb25zdGFudHM7IG1hdGhlbWF0aWNhbCB0ZWNobmlxdWVzOyBtYXRoZW1hdGljczsgdHJhbnNmb3JtcyIsCiAgdHJlYXRtZW50ID0gICAgIkIgQmlibGlvZ3JhcGh5OyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle1BldGVyczoxOTc1OlNHSiwKICBhdXRob3IgPSAgICAgICAiRy4gUGV0ZXJzIGFuZCBKLiBILiBXaWxraW5zb24iLAogIHRpdGxlID0gICAgICAgICJPbiB0aGUgU3RhYmlsaXR5IG9mIHtHYXVzcy1Kb3JkYW59IEVsaW1pbmF0aW9uIHdpdGggUGl2b3RpbmciLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTgiLAogIG51bWJlciA9ICAgICAgICIxIiwKICBwYWdlcyA9ICAgICAgICAiMjAtLTI0IiwKICBtb250aCA9ICAgICAgICBqYW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzUiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2NUYwNSAoNjVHMDUpIiwKICBNUm51bWJlciA9ICAgICAiNTEgNzI2MSIsCiAgbXJyZXZpZXdlciA9ICAgIkwuIEIuIFJhbGwiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBub3RlID0gICAgICAgICAiQ29sbGVjdGlvbiBvZiBhcnRpY2xlcyBob25vcmluZyB7QWxzdG9uIFMuIEhvdXNlaG9sZGVyfSIsCiAgYWJzdHJhY3QgPSAgICAgIlRoZSBzdGFiaWxpdHkgb2YgdGhlIEdhdXNzLUpvcmRhbiBhbGdvcml0aG0gd2l0aCBwYXJ0aWFsIHBpdm90aW5nIGZvciB0aGUgc29sdXRpb24gb2YgZ2VuZXJhbCBzeXN0ZW1zIG9mIGxpbmVhciBlcXVhdGlvbnMgaXMgY29tbW9ubHkgcmVnYXJkZWQgYXMgc3VzcGVjdC4gXHBhciBJdCBpcyBzaG93biB0aGF0IGluIG1hbnkgcmVzcGVjdHMgc3VzcGljaW9ucyBhcmUgdW5mb3VuZGVkLCBhbmQgaW4gZ2VuZXJhbCB0aGUgYWJzb2x1dGUgZXJyb3IgaW4gdGhlIHNvbHV0aW9uIGlzIHN0cmljdGx5IGNvbXBhcmFibGUgd2l0aCB0aGF0IGNvcnJlc3BvbmRpbmcgdG8gR2F1c3NpYW4gZWxpbWluYXRpb24gd2l0aCBwYXJ0aWFsIHBpdm90aW5nIHBsdXMgYmFjayBzdWJzdGl0dXRpb24uIEhvd2V2ZXIsIHdoZW4gQSBpcyBpbGwgY29uZGl0aW9uZWQsIHRoZSByZXNpZHVhbCBjb3JyZXNwb25kaW5nIHRvIHRoZSBHYXVzcy1Kb3JkYW4gc29sdXRpb24gd2lsbCBvZnRlbiBiZSBtdWNoIGdyZWF0ZXIgdGhhbiB0aGF0IGNvcnJlc3BvbmRpbmcgdG8gdGhlIEdhdXNzaWFuIGVsaW1pbmF0aW9uIHNvbHV0aW9uLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkIwMjkwQiAoRXJyb3IgYW5hbHlzaXMgaW4gbnVtZXJpY2FsIG1ldGhvZHMpOyBCMDI5MEggKExpbmVhciBhbGdlYnJhKTsgQzQxMTAgKEVycm9yIGFuYWx5c2lzIGluIG51bWVyaWNhbCBtZXRob2RzKTsgQzQxNDAgKExpbmVhciBhbGdlYnJhKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiOTIxIiwKICBjb3Jwc291cmNlID0gICAiTmF0LiBQaHlzLiBMYWIuLCBUZWRkaW5ndG9uLCBVSyIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJiYWNrLXN1YnN0aXR1dGlvbjsgYmFja3dhcmQgZXJyb3IgYW5hbHlzaXM7IGJvdW5kIGZvciByZXNpZHVhbDsgYm91bmRzIGZvciBlcnJvciBpbiBzb2x1dGlvbjsgR2F1c3MtSm9yZGFuIGFsZ29yaXRobTsgR2F1c3NpYW4gZWxpbWluYXRpb247IG1hdGhlbWF0aWNhbCB0ZWNobmlxdWVzIiwKICBrZXl3b3JkcyA9ICAgICAiYWJzb2x1dGUgZXJyb3I7IGVsaW1pbmF0aW9uOyBlcnJvciBhbmFseXNpczsgR2F1c3MgSm9yZGFuIGFsZ29yaXRobTsgR2F1c3MvSm9yZGFuOyBHYXVzc2lhbiBlbGltaW5hdGlvbjsgbGluZWFyIGFsZ2VicmE7IGxpbmVhciBlcXVhdGlvbnM7IG51bWVyaWNhbCBtZXRob2RzOyBzdGFiaWxpdHkiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0Jpcmtob2ZmOjE5NzU6VEhOLAogIGF1dGhvciA9ICAgICAgICJHYXJyZXR0IEJpcmtob2ZmIiwKICB0aXRsZSA9ICAgICAgICAiVHdvIHtIYWRhbWFyZH0gTnVtYmVycyBmb3IgTWF0cmljZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTgiLAogIG51bWJlciA9ICAgICAgICIxIiwKICBwYWdlcyA9ICAgICAgICAiMjUtLTI5IiwKICBtb250aCA9ICAgICAgICBqYW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzUiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2NUYzNSIsCiAgTVJudW1iZXIgPSAgICAgIjUxIDk0NjQiLAogIG1ycmV2aWV3ZXIgPSAgICJKb2huIFRvZGQiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBub3RlID0gICAgICAgICAiQ29sbGVjdGlvbiBvZiBhcnRpY2xlcyBob25vcmluZyB7QWxzdG9uIFMuIEhvdXNlaG9sZGVyfS4iLAogIGFic3RyYWN0ID0gICAgICJBIGRpc2N1c3Npb24gaXMgZ2l2ZW4gb2YgdHdvIGZ1bmN0aW9ucyBvZiB0aGUgZW50cmllcyBvZiBhIHNxdWFyZSBtYXRyaXgsIGJvdGggcmVsYXRlZCB0byBIYWRhbWFyZCdzIGRldGVybWluYW50IHRoZW9yZW0sIHdoaWNoIGhhdmUgc29tZSBtZXJpdHMgYXMgYWx0ZXJuYXRpdmVzIHRvIG5vcm0tYm91bmQgYGBjb25kaXRpb24gbnVtYmVycycnLiBPbmUgKGZvciBsaW5lYXIgc3lzdGVtcykgaXMga25vd247IHRoZSBvdGhlciAoZm9yIGVpZ2Vuc3lzdGVtcykgc2VlbXMgdG8gYmUgbmV3LiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkIwMjkwSCAoTGluZWFyIGFsZ2VicmEpOyBDNDE0MCAoTGluZWFyIGFsZ2VicmEpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI5MjEiLAogIGNvcnBzb3VyY2UgPSAgICJIYXJ2YXJkIFVuaXYuLCBDYW1icmlkZ2UsIE1BLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29uZGl0aW9uIG51bWJlcnM7IGVpZ2VuIHN5c3RlbXM7IGVpZ2VudmFsdWVzOyBlcnJvciBhbmFseXNpczsgR3JhbS1TY2htaWR0IG9ydGhvZ29uYWxpemF0aW9uOyBHcmFtL1NjaG1pZHQgb3JnYW5pc2F0aW9uOyBIYWRhbWFyZCBudW1iZXJzOyBIYWRhbWFyZCdzIGRldGVybWluYW50OyBsaW5lYXIgc3lzdGVtczsgbWF0aGVtYXRpY2FsIHRlY2huaXF1ZXM7IG1hdHJpY2VzOyBtYXRyaXggYWxnZWJyYTsgbm9ybSBib3VuZCAnY29uZGl0aW9uIG51bWJlcnMnOyBub3Jtczsgc3F1YXJlIG1hdHJpeDsgdGhlb3JlbSIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7dmFuZGVyU2x1aXM6MTk3NTpQRU4sCiAgYXV0aG9yID0gICAgICAgIkEuIHt2YW4gZGVyIFNsdWlzfSIsCiAgdGl0bGUgPSAgICAgICAgIlBlcnR1cmJhdGlvbnMgb2YgRWlnZW52YWx1ZXMgb2YgTm9uLU5vcm1hbCBNYXRyaWNlcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOCIsCiAgbnVtYmVyID0gICAgICAgIjEiLAogIHBhZ2VzID0gICAgICAgICIzMC0tMzYiLAogIG1vbnRoID0gICAgICAgIGphbiwKICB5ZWFyID0gICAgICAgICAiMTk3NSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY1RjE1IiwKICBNUm51bWJlciA9ICAgICAiNTEgOTQ1N2EiLAogIG1ycmV2aWV3ZXIgPSAgICJKYW4gWml0a28iLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L1RoZW9yeS9ndmwuYmliIiwKICBub3RlID0gICAgICAgICAiQ29sbGVjdGlvbiBvZiBhcnRpY2xlcyBob25vcmluZyB7QWxzdG9uIFMuIEhvdXNlaG9sZGVyfS4gU2VlIGNvcnJpZ2VuZHVtIFxjaXRle3ZhbmRlclNsdWlzOjE5NzU6Q1BFfS4iLAogIGFic3RyYWN0ID0gICAgICJUaGUgcHJvYmxlbSBjb25zaWRlcmVkIGlzIHRvIGdpdmUgYm91bmRzIGZvciBmaW5pdGUgcGVydHVyYmF0aW9ucyBvZiBzaW1wbGUgYW5kIG11bHRpcGxlIGVpZ2VudmFsdWVzICRsYW1iZGFfaSQgb2Ygbm9ubm9ybWFsIG1hdHJpY2VzLCB3aGVyZSB0aGVzZSBib3VuZHMgYXJlIGluIHRlcm1zIG9mIHRoZSBlaWdlbnZhbHVlcyAkXHtcbGFtYmRhX2lcfSQsIHRoZSBkZXBhcnR1cmUgZnJvbSBub3JtYWxpdHkgJFxzaWdtYSQsIGFuZCB0aGUgRnJvYmVuaXVzIG5vcm0gb2YgdGhlIHBlcnR1cmJhdGlvbiBtYXRyaXgsIGJ1dCBub3QgaW4gdGVybXMgb2YgdGhlIGVpZ2Vuc3lzdGVtLiBUaGUgYm91bmRzIHdoaWNoIGFyZSBkZXJpdmVkIGFyZSBzaG93biB0byBiZSBhbG1vc3QgYXR0YWluYWJsZSBmb3IgYW55IHNldCBvZiBhbGwgbWF0cmljZXMgb2YgZ2l2ZW4gJFx7XGxhbWJkYV9pXH0kIGFuZCAkXHNpZ21hJC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJCMDI5MEggKExpbmVhciBhbGdlYnJhKTsgQzQxNDAgKExpbmVhciBhbGdlYnJhKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiOTIxIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gb2YgVXRyZWNodCwgVXRyZWNodCwgTmV0aGVybGFuZHMiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY2lyY2xlczsgZGVwYXJ0dXJlIGZyb20gbm9ybWFsaXR5OyBlaWdlbnZhbHVlczsgZWlnZW52YWx1ZXMgYW5kIGVpZ2VuZnVuY3Rpb25zOyBGcm9iZW5pdXMgbm9ybTsgR2Vyc2hnb3JpbjsgR2Vyc2hnb3JpbiBjaXJjbGVzOyBtYXRoZW1hdGljYWwgdGVjaG5pcXVlczsgbWF0cml4IGFsZ2VicmE7IG5vbi1ub3JtYWwgbWF0cmljZXM7IG5vbm5vcm1hbCBtYXRyaWNlczsgcGVydHVyYmF0aW9uIG9mIGVpZ2VudmFsdWVzOyBwZXJ0dXJiYXRpb25zIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtNYXJjdXM6MTk3NTpFRFQsCiAgYXV0aG9yID0gICAgICAgIk1hcnZpbiBNYXJjdXMgYW5kIEhlcmJlcnQgUm9iaW5zb24iLAogIHRpdGxlID0gICAgICAgICJFbGVtZW50YXJ5IERpdmlzb3JzIG9mIFRlbnNvciBQcm9kdWN0cyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOCIsCiAgbnVtYmVyID0gICAgICAgIjEiLAogIHBhZ2VzID0gICAgICAgICIzNi0tMzkiLAogIG1vbnRoID0gICAgICAgIGphbiwKICB5ZWFyID0gICAgICAgICAiMTk3NSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjE1QTY5IiwKICBNUm51bWJlciA9ICAgICAiNTEgNTcxIiwKICBtcnJldmlld2VyID0gICAiR2VvcmdlIFAuIEJhcmtlciIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJUaGUgZWxlbWVudGFyeSBkaXZpc29ycyBvZiBhIHRlbnNvciBwcm9kdWN0IG9mIGxpbmVhciB0cmFuc2Zvcm1hdGlvbnMgaGF2ZSBiZWVuIGtub3duIGZvciA0MCB5ZWFycy4gVGhpcyBwYXBlciBwcm92aWRlcyBhIHNob3J0LCBlYXNpbHkgYWNjZXNzaWJsZSBwcm9vZiBvZiB0aGVzZSByZXN1bHRzLCBhbmQgcG9pbnRzIG91dCBhbiBpbnRlcmVzdGluZyBjb21iaW5hdG9yaWFsIGNvbnNlcXVlbmNlIG9mIHRoZSBwcm9vZi4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJCMDI5MEggKExpbmVhciBhbGdlYnJhKTsgQzQxNDAgKExpbmVhciBhbGdlYnJhKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiOTIxIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gb2YgQ2FsaWZvcm5pYSwgU2FudGEgQmFyYmFyYSwgQ0EsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21iaW5hdG9yaWFsOyBjb21iaW5hdG9yaWFsIG1hdGhlbWF0aWNzOyBjb25zZXF1ZW5jZTsgZWxlbWVudGFyeSBkaXZpc29yczsgbGluZWFyIHRyYW5zZm9ybWF0aW9uczsgbWF0aGVtYXRpY2FsIHRlY2huaXF1ZXM7IG1hdHJpeCBhbGdlYnJhOyB0ZW5zb3IgcHJvZHVjdHM7IHRlbnNvcnMiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0hlc3RlbmVzOjE5NzU6UENHLAogIGF1dGhvciA9ICAgICAgICJNYWdudXMgUi4gSGVzdGVuZXMiLAogIHRpdGxlID0gICAgICAgICJQc2V1ZG9pbnZlcnNlcyBhbmQgQ29uanVnYXRlIEdyYWRpZW50cyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOCIsCiAgbnVtYmVyID0gICAgICAgIjEiLAogIHBhZ2VzID0gICAgICAgICI0MC0tNDMiLAogIG1vbnRoID0gICAgICAgIGphbiwKICB5ZWFyID0gICAgICAgICAiMTk3NSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY1RjIwIiwKICBNUm51bWJlciA9ICAgICAiNTEgMjI2OSIsCiAgbXJyZXZpZXdlciA9ICAgIkcuIE1hZXNzIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9UaGVvcnkvTWF0cml4LmJpYiIsCiAgbm90ZSA9ICAgICAgICAgIkNvbGxlY3Rpb24gb2YgYXJ0aWNsZXMgaG9ub3Jpbmcge0Fsc3RvbiBTLiBIb3VzZWhvbGRlcn0iLAogIGFic3RyYWN0ID0gICAgICJUaGlzIHBhcGVyIGlzIGRldm90ZWQgdG8gdGhlIHN0dWR5IG9mIGNvbm5lY3Rpb25zIGJldHdlZW4gcHNldWRvaW52ZXJzZXMgb2YgbWF0cmljZXMgYW5kIGNvbmp1Z2F0ZSBncmFkaWVudHMgYW5kIGNvbmp1Z2F0ZSBkaXJlY3Rpb24gcm91dGluZXMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjAyOTBIIChMaW5lYXIgYWxnZWJyYSk7IEM0MTQwIChMaW5lYXIgYWxnZWJyYSkiLAogIGNsYXNzaWZpY2F0aW9uID0gIjkyMSIsCiAgY29ycHNvdXJjZSA9ICAgIklCTSBUaG9tYXMgSi4gV2F0c29uIFJlcy4gQ2VudGVyLCBZb3JrdG93biBIZWlnaHRzLCBOWSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNnOyBjb25qdWdhdGUgZGlyZWN0aW9uIHJvdXRpbmVzOyBjb25qdWdhdGUgZ3JhZGllbnRzOyBnaW52OyBoZXJtaXRpYW4gbWF0cml4OyBtYXRoZW1hdGljYWwgdGVjaG5pcXVlczsgbWF0cmljZXM7IG1hdHJpeCBhbGdlYnJhOyBtaW5pbWlzYXRpb247IG1pbmltaXphdGlvbjsgbmxhOyBwc2V1ZG9pbnZlcnNlOyBwc2V1ZG9pbnZlcnNlcyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7TWlsbHM6MTk3NTpOTUMsCiAgYXV0aG9yID0gICAgICAgIkhhcmxhbiBELiBNaWxscyIsCiAgdGl0bGUgPSAgICAgICAgIlRoZSBOZXcgTWF0aCBvZiBDb21wdXRlciBQcm9ncmFtbWluZyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOCIsCiAgbnVtYmVyID0gICAgICAgIjEiLAogIHBhZ2VzID0gICAgICAgICI0My0tNDgiLAogIG1vbnRoID0gICAgICAgIGphbiwKICB5ZWFyID0gICAgICAgICAiMTk3NSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4QTA1IiwKICBNUm51bWJlciA9ICAgICAiNTEgMjMzM2EiLAogIG1ycmV2aWV3ZXIgPSAgICJFLiBJa2F1bmlla3MiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L01pc2Mvc29mdGVuZy5iaWIiLAogIG5vdGUgPSAgICAgICAgICJDb2xsZWN0aW9uIG9mIGFydGljbGVzIGhvbm9yaW5nIHtBbHN0b24gUy4gSG91c2Vob2xkZXJ9LiBTZWUgY29ycmlnZW5kdW0gXGNpdGV7TWlsbHM6MTk3NTpDTk19LiIsCiAgYWJzdHJhY3QgPSAgICAgIlN0cnVjdHVyZWQgcHJvZ3JhbW1pbmcgaGFzIHByb3ZlZCB0byBiZSBhbiBpbXBvcnRhbnQgbWV0aG9kb2xvZ3kgZm9yIHN5c3RlbWF0aWMgcHJvZ3JhbSBkZXNpZ24gYW5kIGRldmVsb3BtZW50LiBTdHJ1Y3R1cmVkIHByb2dyYW1zIGFyZSBpZGVudGlmaWVkIGFzIGNvbXBvdW5kIGZ1bmN0aW9uIGV4cHJlc3Npb25zIGluIHRoZSBhbGdlYnJhIG9mIGZ1bmN0aW9ucy4gVGhlIGFsZ2VicmFpYyBwcm9wZXJ0aWVzIG9mIHRoZXNlIGZ1bmN0aW9uIGV4cHJlc3Npb25zIHBlcm1pdCB0aGUgcmVmb3JtdWxhdGlvbiAoZXhwYW5zaW9uIGFzIHdlbGwgYXMgcmVkdWN0aW9uKSBvZiBhIG5lc3RlZCBzdWJleHByZXNzaW9uIGluZGVwZW5kZW50bHkgb2YgaXRzIGVudmlyb25tZW50LCB0aHVzIG1vZGVsaW5nIHdoYXQgaXMga25vd24gYXMgc3RlcHdpc2UgcHJvZ3JhbSByZWZpbmVtZW50IGFzIHdlbGwgYXMgcHJvZ3JhbSBleGVjdXRpb24uIEZpbmFsbHksIHN0cnVjdHVyZWQgcHJvZ3JhbW1pbmcgaXMgY2hhcmFjdGVyaXplZCBpbiB0ZXJtcyBvZiB0aGUgc2VsZWN0aW9uIGFuZCBzb2x1dGlvbiBvZiBjZXJ0YWluIGVsZW1lbnRhcnkgZXF1YXRpb25zIGRlZmluZWQgaW4gdGhlIGFsZ2VicmEgb2YgZnVuY3Rpb25zLiBUaGVzZSBzb2x1dGlvbnMgY2FuIGJlIGdpdmVuIGluIGdlbmVyYWwgZm9ybXVsYXMsIGVhY2ggaW52b2x2aW5nIGEgc2luZ2xlIHBhcmFtZXRlciwgd2hpY2ggZGlzcGxheSB0aGUgZW50aXJlIGZyZWVkb20gYXZhaWxhYmxlIGluIGNyZWF0aW5nIGNvcnJlY3Qgc3RydWN0dXJlIHByb2dyYW1zLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MjQwIChQcm9ncmFtbWluZyBhbmQgYWxnb3JpdGhtIHRoZW9yeSk7IEM2MTEwIChTeXN0ZW1zIGFuYWx5c2lzIGFuZCBwcm9ncmFtbWluZykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMzsgOTIxIiwKICBjb3Jwc291cmNlID0gICAiSUJNIEZlZGVyYWwgU3lzdGVtcyBEaXYuLCBPd2VnbywgTlksIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhbGdlYnJhaWMgcHJvcGVydGllczsgY29tcG91bmQ7IGNvbXB1dGVyIG1ldGF0aGVvcnk7IGNvbXB1dGVyIHByb2dyYW1taW5nOyBmdW5jdGlvbiBleHByZXNzaW9uczsgbWF0aGVtYXRpY2FsIHRlY2huaXF1ZXM7IHByb2dyYW0gY29ycmVjdG5lc3M7IHByb2dyYW0gZXhlY3V0aW9uOyBwcm9ncmFtbWluZzsgcHJvZ3JhbW1pbmcgdGhlb3J5OyBzdHJ1Y3R1cmVkOyBzeXN0ZW1hdGljIHByb2dyYW0gZGVzaWduIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtDaGVuOjE5NzU6U0VSLAogIGF1dGhvciA9ICAgICAgICJUaWVuIENoaSBDaGVuIGFuZCBJcnZpbmcgVC4gSG8iLAogIHRpdGxlID0gICAgICAgICJTdG9yYWdlLUVmZmljaWVudCBSZXByZXNlbnRhdGlvbiBvZiBEZWNpbWFsIERhdGEiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTgiLAogIG51bWJlciA9ICAgICAgICIxIiwKICBwYWdlcyA9ICAgICAgICAiNDktLTUyIiwKICBtb250aCA9ICAgICAgICBqYW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzUiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI5NEExNSAoNjhBMjApIiwKICBNUm51bWJlciA9ICAgICAiNTAgMTYxMDUiLAogIG1ycmV2aWV3ZXIgPSAgICJSLiBOLiBHb3NzIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZ2FyYm8udXdhc2EuZmk6L3BjL2RvYy1zb2Z0L2ZwYmlibGlvLnR4dCIsCiAgbm90ZSA9ICAgICAgICAgIkNvbGxlY3Rpb24gb2YgYXJ0aWNsZXMgaG9ub3Jpbmcge0Fsc3RvbiBTLiBIb3VzZWhvbGRlcn0iLAogIGFic3RyYWN0ID0gICAgICJVc3VhbGx5IG4gZGVjaW1hbCBkaWdpdHMgYXJlIHJlcHJlc2VudGVkIGJ5IDRuIGJpdHMgaW4gY29tcHV0ZXJzLiBBY3R1YWxseSwgdHdvIEJDRCBkaWdpdHMgY2FuIGJlIGNvbXByZXNzZWQgb3B0aW1hbGx5IGFuZCByZXZlcnNpYmx5IGludG8gNyBiaXRzLCBhbmQgdGhyZWUgZGlnaXRzIGludG8gMTAgYml0cywgYnkgYSB2ZXJ5IHNpbXBsZSBhbGdvcml0aG0gYmFzZWQgb24gdGhlIGZpeGVkLWxlbmd0aCBjb21iaW5hdGlvbiBvZiB0d28gdmFyaWFibGUgZmllbGQtbGVuZ3RoIGVuY29kaW5ncy4gSW4gb3ZlciBoYWxmIG9mIHRoZSBjYXNlcyB0aGUgY29tcHJlc3NlZCBjb2RlIHJlc3VsdHMgZnJvbSB0aGUgY29udmVudGlvbmFsIEJDRCBjb2RlIGJ5IHNpbXBsZSByZW1vdmFsIG9mIHJlZHVuZGFudCAwIGJpdHMuIEEgbG9uZyBkZWNpbWFsIG1lc3NhZ2UgY2FuIGJlIHN1YmRpdmlkZWQgaW50byB0aHJlZS1kaWdpdCBibG9ja3MsIGFuZCBzZXBhcmF0ZWx5IGNvbXByZXNzZWQ7IHRoZSByZXN1bHQgZGlmZmVycyBmcm9tIHRoZSBhc3ltcHRvdGljIG1pbmltdW0gbGVuZ3RoIGJ5IG9ubHkgMC4zNCBwZXJjZW50LiBUaGUgaGFyZHdhcmUgcmVxdWlyZW1lbnQgaXMgc21hbGwsIGFuZCB0aGUgbWFwcGluZ3MgY2FuIGJlIGRvbmUgbWFudWFsbHkuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMzAgKERhdGEgaGFuZGxpbmcgdGVjaG5pcXVlcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMjsgOTIxIiwKICBjb3Jwc291cmNlID0gICAiSUJNIFNhbiBKb3NlIFJlcy4gTGFiLiwgQ0EsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJkYXRhIHN0b3JhZ2UgdW5pdHM7IG1hdGhlbWF0aWNhbCB0ZWNobmlxdWVzIC0tLSBEaWdpdGFsIEFyaXRobWV0aWMiLAogIGtleXdvcmRzID0gICAgICJhc3ltcHRvdGljIG1pbmltdW07IGJpbmFyeSBjb2RlZCBkZWNpbWFsOyBjb2RlczsgY29tcHJlc3NlZCBjb2RlOyBkYXRhIGNvbXByZXNzaW9uOyBkZWNpbWFsIGRhdGE7IGZpeGVkIGxlbmd0aCBjb21iaW5hdGlvbjsgaGFyZHdhcmU7IGxlbmd0aDsgbGVuZ3RoIGVuY29kaW5nczsgcmVwcmVzZW50YXRpb247IHN0b3JhZ2UgZWZmaWNpZW50OyB2YXJpYWJsZSBmaWVsZCIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7TGluaWdlcjoxOTc1OkNCQSwKICBhdXRob3IgPSAgICAgICAiV2VybmVyIExpbmlnZXIiLAogIHRpdGxlID0gICAgICAgICJDb25uZWN0aW9ucyBCZXR3ZWVuIEFjY3VyYWN5IGFuZCBTdGFiaWxpdHkgUHJvcGVydGllcyBvZiBMaW5lYXIgTXVsdGlzdGVwIEZvcm11bGFzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE4IiwKICBudW1iZXIgPSAgICAgICAiMSIsCiAgcGFnZXMgPSAgICAgICAgIjUzLS01NiIsCiAgbW9udGggPSAgICAgICAgamFuLAogIHllYXIgPSAgICAgICAgICIxOTc1IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjVMMDUiLAogIE1SbnVtYmVyID0gICAgICI1MSAyMjkxIiwKICBtcnJldmlld2VyID0gICAiSWFuIEdsYWR3ZWxsIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgbm90ZSA9ICAgICAgICAgIkNvbGxlY3Rpb24gb2YgYXJ0aWNsZXMgaG9ub3Jpbmcge0Fsc3RvbiBTLiBIb3VzZWhvbGRlcn0iLAogIGFic3RyYWN0ID0gICAgICJUaGlzIHBhcGVyIGlzIGNvbmNlcm5lZCB3aXRoIHN0YWJpbGl0eSBhbmQgYWNjdXJhY3kgb2YgZmFtaWxpZXMgb2YgbGluZWFyICRrJC1zdGVwIGZvcm11bGFzIGRlcGVuZGluZyBvbiBwYXJhbWV0ZXJzLCB3aXRoIHBhcnRpY3VsYXIgZW1waGFzaXMgb24gdGhlIG51bWVyaWNhbCBzb2x1dGlvbiBvZiBzdGlmZiBvcmRpbmFyeSBkaWZmZXJlbnRpYWwgZXF1YXRpb25zLiBccGFyIEFuIHVwcGVyIGJvdW5kLCAkcD1rJCwgaXMgZGVyaXZlZCBmb3IgdGhlIG9yZGVyIG9mIGFjY3VyYWN5IG9mICRBKFxpbmZ0eSkkLXN0YWJsZSBmb3JtdWxhcy4gVGhyZWUgY3JpdGVyaWEgYXJlIGdpdmVuIGZvciBBJCgwKSQtc3RhYmlsaXR5LiBJdCBpcyBzaG93biB0aGF0ICgxKSBmb3IgJHA9ayQsICRrJCBhcmJpdHJhcnksICRBKFxpbmZ0eSkkLXN0YWJpbGl0eSBpbXBsaWVzIGNlcnRhaW4gbmVjZXNzYXJ5IGNvbmRpdGlvbnMgZm9yICRBKDApJC1zdGFiaWxpdHkgYW5kIGZvciBzdHJpY3Qgc3RhYmlsaXR5IChtZWFuaW5nIHRoYXQgdGhlIGV4dHJhbmVvdXMgcm9vdHMgb2YgJHAoXHBzaSkkIHNhdGlzZnkgJHxccHNpfDwxKSQ7ICgyKSBmb3IgJHA9az0yLDMsNCwgXG1ib3h7YW5kfSA1JCwgJEEoXGluZnR5KSQtc3RhYmlsaXR5IChmb3IgJGs9NSQgdG9nZXRoZXIgd2l0aCBhbm90aGVyIGNvbnN0cmFpbnQpIGltcGxpZXMgc3RyaWN0IHN0YWJpbGl0eTsgYW5kICgzKSBmb3IgY2VydGFpbiBvbmUtcGFyYW1ldGVyIGNsYXNzZXMgb2YgZm9ybXVsYXMgd2l0aCAkcD1rPTMsNCxcbWJveHthbmQvb3J9IDUkLCAkQShcaW5mdHkpJC1zdGFiaWxpdHkgaW1wbGllcyAkQSgwKSQtc3RhYmlsaXR5LiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkIwMjkwQiAoRXJyb3IgYW5hbHlzaXMgaW4gbnVtZXJpY2FsIG1ldGhvZHMpOyBCMDI5MFAgKERpZmZlcmVudGlhbCBlcXVhdGlvbnMpOyBDNDExMCAoRXJyb3IgYW5hbHlzaXMgaW4gbnVtZXJpY2FsIG1ldGhvZHMpOyBDNDE3MCAoRGlmZmVyZW50aWFsIGVxdWF0aW9ucykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjkyMSIsCiAgY29ycHNvdXJjZSA9ICAgIklCTSBUaG9tYXMgSi4gV2F0c29uIFJlcy4gQ2VudGVyLCBZb3JrdG93biBIZWlnaHRzLCBOWSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgIkEoMCktc3RhYmlsaXR5OyBBKGluZiktc3RhYmlsaXR5OyBhY2N1cmFjeTsgZGlmZmVyZW50aWFsIGVxdWF0aW9uczsgZXJyb3IgYW5hbHlzaXM7IGxpbmVhciBtdWx0aXN0ZXAgZm9ybXVsYXM7IG1hdGhlbWF0aWNhbCB0ZWNobmlxdWVzOyBudW1lcmljYWw7IG51bWVyaWNhbCBtZXRob2RzOyBvcmRlciBvZiBhY2N1cmFjeTsgcGFyYW1ldHJpc2VkIGxpbmVhciBtdWx0aXN0ZXAgZm9ybXVsYWU7IHBhcmFtZXRyaXplZCBsaW5lYXIgbXVsdGlzdGVwIGZvcm11bGFzOyBzb2x1dGlvbjsgc3RhYmlsaXR5OyBzdGlmZiBlcXVhdGlvbnM7IHN0aWZmIG9yZGluYXJ5IGRpZmZlcmVudGlhbCBlcXVhdGlvbnM7IHN0cmljdCBzdGFiaWxpdHkiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0hhbnNvbjoxOTc1OlNVTSwKICBhdXRob3IgPSAgICAgICAiUmljaGFyZCBKLiBIYW5zb24iLAogIHRpdGxlID0gICAgICAgICJTdGFibHkgVXBkYXRpbmcgTWVhbiBhbmQgU3RhbmRhcmQgRGV2aWF0aW9uIG9mIERhdGEiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTgiLAogIG51bWJlciA9ICAgICAgICIxIiwKICBwYWdlcyA9ICAgICAgICAiNTctLTU4IiwKICBtb250aCA9ICAgICAgICBqYW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzUiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2Mi0wNCIsCiAgTVJudW1iZXIgPSAgICAgIjUxIDcwNjQiLAogIG1ycmV2aWV3ZXIgPSAgICJELiBKLiBFdmFucyIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGlzdHJpYnV0ZWQvUUxELzE5NzUuYmliIiwKICBub3RlID0gICAgICAgICAiQ29sbGVjdGlvbiBvZiBhcnRpY2xlcyBob25vcmluZyB7QWxzdG9uIFMuIEhvdXNlaG9sZGVyfSIsCiAgYWJzdHJhY3QgPSAgICAgIkJ5IGNvbnNpZGVyaW5nIHRoZSAoc2FtcGxlKSBtZWFuIG9mIGEgc2V0IG9mIGRhdGEgYXMgYSBmaXQgdG8gdGhpcyBkYXRhIGJ5IGEgY29uc3RhbnQgZnVuY3Rpb24sIGEgY29tcHV0YXRpb25hbCBtZXRob2QgaXMgZ2l2ZW4gYmFzZWQgb24gYSBtYXRyaXggZm9ybXVsYXRpb24gYW5kIEdpdmVucyB0cmFuc2Zvcm1hdGlvbnMuIFRoZSAoc2FtcGxlKSBtZWFuIGFuZCBzdGFuZGFyZCBkZXZpYXRpb24gY2FuIGJlIHVwZGF0ZWQgYXMgZGF0YSBhY2N1bXVsYXRlcy4gVGhlIHByb2NlZHVyZSBpcyBudW1lcmljYWxseSBzdGFibGUgYW5kIGRvZXMgbm90IHJlcXVpcmUgc3RvcmFnZSBvZiB0aGUgZGF0YS4gTWV0aG9kcyBmb3IgZGVhbGluZyB3aXRoIHdlaWdodGVkIGRhdGEgYW5kIGRhdGEgcmVtb3ZhbCBhcmUgcHJlc2VudGVkLiBXaGVuIHVwZGF0aW5nIHRoZSBtZWFuIGFuZCBzcXVhcmUgb2YgdGhlIHN0YW5kYXJkIGRldmlhdGlvbiwgdGhlIHByb2Nlc3MgcmVxdWlyZXMgbm8gc3F1YXJlIHJvb3RzLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkIwMjkwRiAoSW50ZXJwb2xhdGlvbiBhbmQgZnVuY3Rpb24gYXBwcm94aW1hdGlvbik7IEM0MTMwIChJbnRlcnBvbGF0aW9uIGFuZCBmdW5jdGlvbiBhcHByb3hpbWF0aW9uKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiOTIxIiwKICBjb3Jwc291cmNlID0gICAiV2FzaGluZ3RvbiBTdGF0ZSBVbml2LiwgUHVsbG1hbiwgV0EsIFVTQSIsCiAgY291bnRyeSA9ICAgICAgIlVTQSIsCiAgZGVzY3JpcHRvcnMgPSAgIlNpbXVsYXRpb247IHN0YXRpc3RpY3M7IG51bWVyaWMgY2FsY3VsYXRpb247IiwKICBlbnVtID0gICAgICAgICAiNzM1NyIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJkYXRhIHJlbW92YWw7IGVzdGltYXRpb247IGZ1bmN0aW9uIGFwcHJveGltYXRpb247IEdpdmVuczsgaXRlcmF0aXZlIG1ldGhvZHM7IGxlYXN0IHNxdWFyZXMgYXBwcm94aW1hdGlvbjsgbWF0aGVtYXRpY2FsIHN0YXRpc3RpY3M7IG1hdGhlbWF0aWNhbCB0ZWNobmlxdWVzOyBtYXRyaXggZm9ybXVsYXRpb247IG1lYW47IHN0YWJseSB1cGRhdGluZzsgc3RhbmRhcmQgZGV2aWF0aW9uOyB0aGVvcnk7IHRyYW5zZm9ybWF0aW9uczsgd2VpZ2h0ZWQgZGF0YSIsCiAgbGFuZ3VhZ2UgPSAgICAgIkVuZ2xpc2giLAogIHJlZmVyZW5jZXMgPSAgICIwIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtNY0NhcnRoeToxOTc1OlBDQywKICBhdXRob3IgPSAgICAgICAiSm9obiBNY0NhcnRoeSIsCiAgdGl0bGUgPSAgICAgICAgIlByb3Bvc2VkIENyaXRlcmlvbiBmb3IgYSBDaXBoZXIgdG8gYmUgUHJvYmFibGUtV29yZCBQcm9vZiIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOCIsCiAgbnVtYmVyID0gICAgICAgIjIiLAogIHBhZ2VzID0gICAgICAgICI/Py0tPz8iLAogIG1vbnRoID0gICAgICAgIGZlYiwKICB5ZWFyID0gICAgICAgICAiMTk3NSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlNhdCBKYW4gMTggMTU6NTA6MTYgMTk5NyIsCiAgYmlic291cmNlID0gICAgImZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGF0YWJhc2UvV2llZGVyaG9sZC5iaWIiLAogIHh4bm90ZSA9ICAgICAgICJDYW5ub3QgZmluZCBpbiBpbmRleCB0byB2b2x1bWUgMTgsIG5vciBpbiBDb21wZW5kZXgsIG5vciBpbiBNYXRoU2NpTmV0LCBub3IgaW4gWmVudHJhbGJsYXR0IGZ7XCJ1fXIgTWF0aGVtYXRpaywgbm9yIGluIEFDTSBDb21wdXRpbmcgQXJjaGl2ZSBDRC1ST00uIiwKfQoKQEFydGljbGV7QnVybmV0dDoxOTc1OkFJTSwKICBhdXRob3IgPSAgICAgICAiRy4gSi4gQnVybmV0dCBhbmQgRS4gRy4ge0NvZmZtYW4sIEpyLn0iLAogIHRpdGxlID0gICAgICAgICJBbmFseXNpcyBvZiBJbnRlcmxlYXZlZCBNZW1vcnkgU3lzdGVtcyBVc2luZyBCbG9ja2FnZSBCdWZmZXJzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE4IiwKICBudW1iZXIgPSAgICAgICAiMiIsCiAgcGFnZXMgPSAgICAgICAgIjkxLS05NSIsCiAgbW9udGggPSAgICAgICAgZmViLAogIHllYXIgPSAgICAgICAgICIxOTc1IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkEgbW9kZWwgb2YgaW50ZXJsZWF2ZWQgbWVtb3J5IHN5c3RlbXMgaXMgcHJlc2VudGVkLCBhbmQgdGhlIGFuYWx5c2lzIG9mIHRoZSBtb2RlbCBieSBNb250ZSBDYXJsbyBzaW11bGF0aW9uIGlzIGRpc2N1c3NlZC4gVGhlIHNpbXVsYXRpb25zIGludmVzdGlnYXRlIHRoZSBwZXJmb3JtYW5jZSBvZiB2YXJpb3VzIHN5c3RlbSBzdHJ1Y3R1cmVzLCBpLmUuLCBzY2hlbWVzIGZvciBzZW5kaW5nIGluc3RydWN0aW9uIGFuZCBkYXRhIHJlcXVlc3RzIHRvIHRoZSBtZW1vcnkgc3lzdGVtLiBQZXJmb3JtYW5jZSBpcyBtZWFzdXJlZCBieSBkZXRlcm1pbmluZyB0aGUgZGlzdHJpYnV0aW9uIG9mIHRoZSBudW1iZXIgb2YgbWVtb3J5IG1vZHVsZXMgaW4gb3BlcmF0aW9uIGR1cmluZyBhIG1lbW9yeSBjeWNsZS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNTMxMCAoU3RvcmFnZSBzeXN0ZW0gZGVzaWduKTsgQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiSW5kZXggU3lzdGVtcyBJbmMuLCBDYW1icmlkZ2UsIE1BLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYmxvY2thZ2UgYnVmZmVyczsgZGF0YSByZXF1ZXN0czsgZGF0YSBzdG9yYWdlLCBkaWdpdGFsOyBmaWxlIG9yZ2FuaXNhdGlvbjsgaW50ZXJsZWF2ZWQgbWVtb3J5IHN5c3RlbXM7IG1lbW9yeSBjeWNsZTsgbWVtb3J5IG1vZHVsZXM7IE1vbnRlIENhcmxvIG1ldGhvZHM7IE1vbnRlIENhcmxvIHNpbXVsYXRpb247IHNpbXVsYXRpb247IHN0b3JhZ2U7IHN0cnVjdHVyZXM7IHN5c3RlbTsgdW5pdHMiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0dvbGRtYW46MTk3NTpTUEMsCiAgYXV0aG9yID0gICAgICAgIk5laWwgTS4gR29sZG1hbiIsCiAgdGl0bGUgPSAgICAgICAgIlNlbnRlbmNlIFBhcmFwaHJhc2luZyBmcm9tIGEgQ29uY2VwdHVhbCBCYXNlIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE4IiwKICBudW1iZXIgPSAgICAgICAiMiIsCiAgcGFnZXMgPSAgICAgICAgIjk2LS0xMDYiLAogIG1vbnRoID0gICAgICAgIGZlYiwKICB5ZWFyID0gICAgICAgICAiMTk3NSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJBIG1vZGVsIG9mIG5hdHVyYWwgbGFuZ3VhZ2UgZ2VuZXJhdGlvbiBiYXNlZCBvbiBhbiB1bmRlcmx5aW5nIGxhbmd1YWdlLWZyZWUgcmVwcmVzZW50YXRpb24gb2YgbWVhbmluZyBpcyBkZXNjcmliZWQuIEEgcHJvZ3JhbSBiYXNlZCBvbiB0aGlzIG1vZGVsIGlzIGFibGUgdG8gcHJvZHVjZSBzZW50ZW5jZSBwYXJhcGhyYXNlcyB3aGljaCBkZW1vbnN0cmF0ZSB1bmRlcnN0YW5kaW5nIHdpdGggcmVzcGVjdCB0byBhIGdpdmVuIGNvbnRleHQuIFRoaXMgZ2VuZXJhdG9yIG9wZXJhdGVzIGluIGNvbmp1bmN0aW9uIHdpdGggYSBuYXR1cmFsIGxhbmd1YWdlIGFuYWx5emVyIGFuZCBhIGNvbWJpbmVkIG1lbW9yeSBhbmQgaW5mZXJlbmNlIG1vZGVsLiBJbiBnZW5lcmF0aW5nIHNlbnRlbmNlcyBmcm9tIG1lYW5pbmcgc3RydWN0dXJlcywgdGhlIHByb2dyYW0gZW1wbG95cyBib3RoIHRoZSBpbmZvcm1hdGlvbiByZXRyaWV2YWwgYW5kIGRlZHVjdGlvbiBjYXBhYmlsaXRpZXMgb2YgdGhlIG1lbW9yeSBtb2RlbC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDMTIzMCAoQXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UpOyBDNzgyMCAoSHVtYW5pdGllcyBjb21wdXRpbmcpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjEiLAogIGNvcnBzb3VyY2UgPSAgICJTdGFuZm9yZCBVbml2LiwgU3RhbmZvcmQsIENBLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2U7IGF1dG9tYXRhIHRoZW9yeTsgY29uY2VwdHVhbCBiYXNlOyBjb25jZXB0dWFsIHByb3BlcnRpZXM7IGRpY3Rpb25hcnk7IGRpc2NyaW1pbmF0aW9uIG5ldHM7IGZvcm1hbCBncmFtbWFyOyBpbmZvcm1hdGlvbiByZXRyaWV2YWw7IGtub3dsZWRnZTsgbGFuZ3VhZ2UgdHJhbnNsYXRpb24gYW5kOyBsaW5ndWlzdGljczsgbWVtb3J5IGFuZCBpbmZlcmVuY2U7IG1vZGVsOyBuYXR1cmFsIGxhbmd1YWdlOyBzZW50ZW5jZSBwYXJhcGhyYXNpbmc7IHN1cmZhY2UgZ3JhbW1hdGljYWw7IHN5bnRhY3RpYyByb2xlczsgc3lzdGVtcyBzY2llbmNlIGFuZCBjeWJlcm5ldGljcyAtLS0gQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2U7IHdvcmQgc2Vuc2UiLAogIHRyZWF0bWVudCA9ICAgICJYIEV4cGVyaW1lbnRhbCIsCn0KCkBBcnRpY2xle1ZhbmRlckJydWc6MTk3NTpTU1AsCiAgYXV0aG9yID0gICAgICAgIkdvcmRvbiBKLiBWYW5kZXJCcnVnIGFuZCBKYWNrIE1pbmtlciIsCiAgdGl0bGUgPSAgICAgICAgIlN0YXRlLVNwYWNlLCBQcm9ibGVtLVJlZHVjdGlvbiwgYW5kIFRoZW9yZW0gUHJvdmluZyAtLS0gU29tZSBSZWxhdGlvbnNoaXBzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE4IiwKICBudW1iZXIgPSAgICAgICAiMiIsCiAgcGFnZXMgPSAgICAgICAgIjEwNy0tMTE1IiwKICBtb250aCA9ICAgICAgICBmZWIsCiAgeWVhciA9ICAgICAgICAgIjE5NzUiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2OEE0NSIsCiAgTVJudW1iZXIgPSAgICAgIjU0IDkxOTIiLAogIG1ycmV2aWV3ZXIgPSAgICJXYWx0ZXIgT2JlcnNjaGVscCIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvQWkvbm9ubW9uby5iaWIiLAogIGFic3RyYWN0ID0gICAgICJUaGlzIHBhcGVyIHN1Z2dlc3RzIGEgYmlkaXJlY3Rpb25hbCByZWxhdGlvbnNoaXAgYmV0d2VlbiBzdGF0ZS1zcGFjZSBhbmQgcHJvYmxlbS1yZWR1Y3Rpb24gcmVwcmVzZW50YXRpb25zLiBJdCBwcmVzZW50cyBhIGZvcm1hbGlzbSBiYXNlZCBvbiBtdWx0aXBsZS1pbnB1dCBhbmQgbXVsdGlwbGUtb3V0cHV0IG9wZXJhdG9ycyB3aGljaCBwcm92aWRlcyBhIGJhc2lzIGZvciB2aWV3aW5nIHRoZSB0d28gdHlwZXMgb2YgcmVwcmVzZW50YXRpb25zIGluIHRoaXMgbWFubmVyLiBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBsYW5ndWFnZSByZWNvZ25pdGlvbiBwcm9ibGVtIHdoaWNoIGlzIGJhc2VkIG9uIHRoZSBKLiBDb2NrZSBwYXJzaW5nIGFsZ29yaXRobSBpcyB1c2VkIGFzIGFuIGlsbHVzdHJhdGlvbi4gQSBtZXRob2QgZm9yIHJlcHJlc2VudGluZyBwcm9ibGVtcyBpbiBmaXJzdC1vcmRlciBsb2dpYyBpbiBzdWNoIGEgd2F5IHRoYXQgdGhlIGluZmVyZW5jZSBzeXN0ZW0gZW1wbG95ZWQgYnkgYSByZXNvbHV0aW9uLWJhc2VkIHRoZW9yZW0gcHJvdmVyIGRldGVybWluZXMgd2hldGhlciB0aGUgc2V0IG9mIGNsYXVzZXMgaXMgaW50ZXJwcmV0ZWQgaW4gdGhlIHN0YXRlLXNwYWNlIG1vZGUgb3IgaW4gdGhlIHByb2JsZW0tcmVkdWN0aW9uIG1vZGUgaXMgcHJlc2VudGVkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMxMjMwIChBcnRpZmljaWFsIGludGVsbGlnZW5jZSk7IEMxMzEwIChDb250cm9sIHN5c3RlbSBhbmFseXNpcyBhbmQgc3ludGhlc2lzIG1ldGhvZHMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI0NjE7IDczMSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIG9mIE1hcnlsYW5kLCBDb2xsZWdlIFBhcmssIE1ELCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAic3lzdGVtcyBzY2llbmNlIGFuZCBjeWJlcm5ldGljcyIsCiAga2V5d29yZHMgPSAgICAgImFydGlmaWNpYWwgaW50ZWxsaWdlbmNlOyBDb2NrZSBwYXJzaW5nIGFsZ29yaXRobTsgZmlyc3Qgb3JkZXIgbG9naWM7IGluZmVyZW5jZTsgaW5wdXQtcmVzb2x1dGlvbjsgbGFuZ3VhZ2UgcmVjb2duaXRpb24gcHJvYmxlbTsgbGluZWFyIHJlc29sdXRpb247IG11bHRpcGxlIGlucHV0IG9wZXJhdG9yczsgbXVsdGlwbGUgb3V0cHV0OyBvcGVyYXRvcnM7IHByb2JsZW0gcmVkdWN0aW9uOyBwcm92aW5nOyByZXNvbHV0aW9uIGJhc2VkIHRoZW9yZW0gcHJvdmVyOyBzdGF0ZSBzcGFjZTsgc3RhdGUtc3BhY2UgbWV0aG9kczsgc3lzdGVtOyB0aGVvcmVtOyB0aGVvcmVtIHByb3ZpbmciLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0tpbW1lOjE5NzU6RkNBLAogIGF1dGhvciA9ICAgICAgICJDYXJvbHluIEtpbW1lIGFuZCBEYW5hIEJhbGxhcmQgYW5kIEphY2sgU2tsYW5za3kiLAogIHRpdGxlID0gICAgICAgICJGaW5kaW5nIENpcmNsZXMgYnkgYW4gQXJyYXkgb2YgQWNjdW11bGF0b3JzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE4IiwKICBudW1iZXIgPSAgICAgICAiMiIsCiAgcGFnZXMgPSAgICAgICAgIjEyMC0tMTIyIiwKICBtb250aCA9ICAgICAgICBmZWIsCiAgeWVhciA9ICAgICAgICAgIjE5NzUiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L01pc2MvUmV2ZXJzZS5lbmcuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiQW4gZWZmaWNpZW50IHByb2NlZHVyZSBmb3IgZGV0ZWN0aW5nIGFwcHJveGltYXRlIGNpcmNsZXMgYW5kIGFwcHJveGltYXRlbHkgY2lyY3VsYXIgYXJjcyBvZiB2YXJ5aW5nIGdyYXkgbGV2ZWxzIGluIGFuIGVkZ2UtZW5oYW5jZWQgZGlnaXRpemVkIHBpY3R1cmUgaXMgZGVzY3JpYmVkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkI2MTQwQyAoT3B0aWNhbCBpbmZvcm1hdGlvbiwgaW1hZ2UgYW5kIHZpZGVvIHNpZ25hbCBwcm9jZXNzaW5nKTsgQzEyNTAgKFBhdHRlcm4gcmVjb2duaXRpb24pOyBDNTUzMCAoUGF0dGVybiByZWNvZ25pdGlvbiBhbmQgY29tcHV0ZXIgdmlzaW9uIGVxdWlwbWVudCk7IEM3MzMwIChCaW9sb2d5IGFuZCBtZWRpY2FsIGNvbXB1dGluZykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMzsgNzQxIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gb2YgQ2FsaWZvcm5pYSwgSXJ2aW5lLCBDQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFwcHJveGltYXRlIGNpcmNsZXM7IGFycmF5IG9mIGFjY3VtdWxhdG9yczsgYmlvbWVkaWNhbCBhcHBsaWNhdGlvbnMgb2YgY29tcHV0ZXJzOyBjaXJjbGUgZmluZGluZzsgY2lyY3VsYXIgYXJjczsgY3VydmUgZGV0ZWN0aW9uOyBlZGdlIGVuaGFuY2VkIGRpZ2l0aXNlZDsgZ3JleSBsZXZlbHM7IEhhdWdoIHN0cmFpZ2h0IGxpbmUgZmluZGVyOyBsaW5lIGZpdHRpbmc7IHBhdHRlcm4gcmVjb2duaXRpb247IHBhdHRlcm4gcmVjb2duaXRpb24gc3lzdGVtczsgcGljdHVyZTsgcGljdHVyZSBwcm9jZXNzaW5nIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtKb2huc3RvbjoxOTc1Ok1SRSwKICBhdXRob3IgPSAgICAgICAiSC4gQy4gSm9obnN0b24gYW5kIEMuIEEuIFIuIEhvYXJlIiwKICB0aXRsZSA9ICAgICAgICAiTWF0cml4IFJlZHVjdGlvbiAtLS0gYW4gRWZmaWNpZW50IE1ldGhvZCAoc2Nob29sIHRpbWV0YWJsZXMpIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE4IiwKICBudW1iZXIgPSAgICAgICAiMyIsCiAgcGFnZXMgPSAgICAgICAgIjE0MS0tMTUwIiwKICBtb250aCA9ICAgICAgICBtYXIsCiAgeWVhciA9ICAgICAgICAgIjE5NzUiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2NUswNSIsCiAgTVJudW1iZXIgPSAgICAgIjUyIDIyMDMiLAogIG1ycmV2aWV3ZXIgPSAgICJQLiBCcm9jayIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJUaGUgcGFwZXIgZGVzY3JpYmVzIGFuIGVmZmljaWVudCBtZXRob2QgZm9yIHJlZHVjdGlvbiBvZiB0aGUgYmluYXJ5IG1hdHJpY2VzIHdoaWNoIGFyaXNlIGluIHNvbWUgc2Nob29sIHRpbWUtdGFibGluZyBwcm9ibGVtcy4gSXQgaXMgYSBkZXZlbG9wbWVudCBvZiB0aGF0IGRlc2NyaWJlZCBieSBKb2huIExpb25zLiBJdCBoYXMgYmVlbiBnZW5lcmFsaXplZCBhbmQgYWRhcHRlZCB0byBmaXQgaW50byB0aGUgY29tcGxldGUgdGltZXRhYmxpbmcgcHJvY2VzczsgdG8gdXNlIGEgbW9yZSBjb21wYWN0IGRhdGEgcmVwcmVzZW50YXRpb24gYW5kIG1vcmUgZWZmaWNpZW50IHByb2Nlc3NpbmcgdGVjaG5pcXVlczsgdG8gdGFrZSBmdWxsZXIgYWR2YW50YWdlIG9mIHBvc3NpYmxlIGF2YWlsYWJsZSBwcmV2aW91cyBrbm93bGVkZ2UgYWJvdXQgdGhlIG1hdHJpeC4gQW5kIGl0IGlzIGRlc2lnbmVkIGFzIGEgc3RydWN0dXJlZCBwcm9ncmFtLCB3aGljaCBjYW4gcmVhZGlseSBiZSBjb2RlZCBieSB0aGUgcmVhZGVyIGluIHRoZSBoaWdoIGxldmVsIG9yIGxvdyBsZXZlbCBwcm9ncmFtbWluZyBsYW5ndWFnZSBvZiBoaXMgY2hvaWNlLiBQcmFjdGljYWwgdGVzdHMgb2YgdGhlIG1ldGhvZCBoYXZlIHNob3duIGl0IHRvIGJlIGEgZ29vZCBiYXNpcyBmb3IgYSByZWFsaXN0aWMgdGltZXRhYmxpbmcgYWxnb3JpdGhtLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkIwMjkwSCAoTGluZWFyIGFsZ2VicmEpOyBDNDE0MCAoTGluZWFyIGFsZ2VicmEpOyBDNzExMCAoRWR1Y2F0aW9uYWwgYWRtaW5pc3RyYXRpb24pIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI5MjEiLAogIGNvcnBzb3VyY2UgPSAgICJRdWVlbidzIFVuaXYuIG9mIEJlbGZhc3QsIFVLIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImJpbmFyeSBtYXRyaWNlczsgZGF0YSByZXByZXNlbnRhdGlvbjsgZWR1Y2F0aW9uYWwgYWRtaW5pc3RyYXRpdmUgZGF0YSBwcm9jZXNzaW5nOyBoaWdoIGxldmVsIHByb2dyYW1taW5nIGxhbmd1YWdlOyBsb3cgbGV2ZWwgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2U7IG1hdGhlbWF0aWNhbCB0ZWNobmlxdWVzOyBtYXRyaXggYWxnZWJyYTsgbWF0cml4IHJlZHVjdGlvbjsgcHJvYmxlbXM7IHByb2Nlc3NpbmcgdGVjaG5pcXVlczsgc2Nob29sIHRpbWUgdGFibGluZzsgc2Nob29sIHRpbWV0YWJsZSBjb25zdHJ1Y3Rpb247IHN0cnVjdHVyZWQgcHJvZ3JhbTsgc3RydWN0dXJlZCBwcm9ncmFtbWluZzsgdGlnaHQgc2V0OyB0aW1ldGFibGluZyBhbGdvcml0aG0iLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0tlcm5pZ2hhbjoxOTc1OlNUTSwKICBhdXRob3IgPSAgICAgICAiQnJpYW4gVy4gS2VybmlnaGFuIGFuZCBMb3JpbmRhIEwuIENoZXJyeSIsCiAgdGl0bGUgPSAgICAgICAgIkEgU3lzdGVtIGZvciBUeXBlc2V0dGluZyBNYXRoZW1hdGljcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOCIsCiAgbnVtYmVyID0gICAgICAgIjMiLAogIHBhZ2VzID0gICAgICAgICIxNTEtLTE1NyIsCiAgbW9udGggPSAgICAgICAgbWFyLAogIHllYXIgPSAgICAgICAgICIxOTc1IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EaXN0cmlidXRlZC9RTEQvMTk3NS5iaWIiLAogIGFic3RyYWN0ID0gICAgICJUaGlzIHBhcGVyIGRlc2NyaWJlcyB0aGUgZGVzaWduIGFuZCBpbXBsZW1lbnRhdGlvbiBvZiBhIHN5c3RlbSBmb3IgdHlwZXNldHRpbmcgbWF0aGVtYXRpY3MuIFxwYXIgVGhlIGxhbmd1YWdlIGhhcyBiZWVuIGRlc2lnbmVkIHRvIGJlIGVhc3kgdG8gbGVhcm4gYW5kIHRvIHVzZSBieSBwZW9wbGUgKGZvciBleGFtcGxlLCBzZWNyZXRhcmllcyBhbmQgbWF0aGVtYXRpY2FsIHR5cGlzdHMpIHdobyBrbm93IG5laXRoZXIgbWF0aGVtYXRpY3Mgbm9yIHR5cGVzZXR0aW5nLiBFeHBlcmllbmNlIGluZGljYXRlcyB0aGF0IHRoZSBsYW5ndWFnZSBjYW4gYmUgbGVhcm5lZCBpbiBhbiBob3VyIG9yIHNvLCBmb3IgaXQgaGFzIGZldyBydWxlcyBhbmQgZmV3ZXIgZXhjZXB0aW9ucy4gRm9yIHR5cGljYWwgZXhwcmVzc2lvbnMsIHRoZSBzaXplIGFuZCBmb250IGNoYW5nZXMsIHBvc2l0aW9uaW5nLCBsaW5lIGRyYXdpbmcsIGFuZCB0aGUgbGlrZSBuZWNlc3NhcnkgdG8gcHJpbnQgYWNjb3JkaW5nIHRvIG1hdGhlbWF0aWNhbCBjb252ZW50aW9ucyBhcmUgYWxsIGRvbmUgYXV0b21hdGljYWxseS4gRm9yIGV4YW1wbGUsIHRoZSBpbnB1dCB7XHR0IHN1bSBmcm9tIGk9MCB0byBpbmZpbml0eSB4IHN1YiBpPXBpIG92ZXIgMn0gcHJvZHVjZXMgJFxzdW1fe2k9MH1eXGluZnR5IHhfaSA9IFxwaS8yJC4gVGhlIHN5bnRheCBvZiB0aGUgbGFuZ3VhZ2UgaXMgc3BlY2lmaWVkIGJ5IGEgc21hbGwgY29udGV4dC1mcmVlIGdyYW1tYXI7IGEgY29tcGlsZXItY29tcGlsZXIgaXMgdXNlZCB0byBtYWtlIGEgY29tcGlsZXIgdGhhdCB0cmFuc2xhdGVzIHRoaXMgbGFuZ3VhZ2UgaW50byB0eXBlc2V0dGluZyBjb21tYW5kcy4gT3V0cHV0IG1heWJlIHByb2R1Y2VkIG9uIGVpdGhlciBhIHBob3RvdHlwZXNldHRlciBvciBvbiBhIHRlcm1pbmFsIHdpdGggZm9yd2FyZCBhbmQgcmV2ZXJzZSBoYWxmLWxpbmUgbW90aW9ucy4gVGhlIHN5c3RlbSBpbnRlcmZhY2VzIGRpcmVjdGx5IHdpdGggdGV4dCBmb3JtYXR0aW5nIHByb2dyYW1zLCBzbyBtaXh0dXJlcyBvZiB0ZXh0IGFuZCBtYXRoZW1hdGljcyBtYXkgYmUgaGFuZGxlZCBzaW1wbHkuIFRoaXMgcGFwZXIgd2FzIHR5cGVzZXQgYnkgdGhlIGF1dGhvcnMgdXNpbmcgdGhlIHN5c3RlbSBkZXNjcmliZWQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMzAgKERhdGEgaGFuZGxpbmcgdGVjaG5pcXVlcyk7IEM2MTQwRCAoSGlnaCBsZXZlbCBsYW5ndWFnZXMpOyBDNzIzMCAoUHVibGlzaGluZyBhbmQgcmVwcm9kdWN0aW9uKTsgQzczMTAgKE1hdGhlbWF0aWNzIGNvbXB1dGluZykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMzsgNzQ1IiwKICBjb3Jwc291cmNlID0gICAiQmVsbCBMYWJzLiwgSG9sbWRlbCwgTkosIFVTQSIsCiAgY291bnRyeSA9ICAgICAgIlVTQSIsCiAgZGF0ZSA9ICAgICAgICAgIjE1LzA1Lzg0IiwKICBkZXNjcmlwdG9ycyA9ICAiRGVzaWduOyByZWFsaXphdGlvbjsgY29tbWFuZCBsYW5ndWFnZTsgZ3JhcGhpY3MgbGFuZ3VhZ2U7IHRleHQgcHJvY2Vzc2luZzsgZ3JhcGhpY3M7IGludGVyYWN0aXZlIG1vZGU7IiwKICBlbnVtID0gICAgICAgICAiMTY0NSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21waWxlci1jb21waWxlcjsgY29tcHV0ZXIgY29udHJvbGxlZCB0eXBlc2V0dGluZzsgY29tcHV0ZXIgZ3JhcGhpY3M7IGNvbXB1dGVyIHByb2dyYW1taW5nIGxhbmd1YWdlczsgZ3JhcGhpY3M7IG1hdGhlbWF0aWNzOyBvcmllbnRlZCBsYW5ndWFnZXM7IHBob3RvY29tcG9zaXRpb247IHBob3RvdHlwZXNldHRlcjsgcHJpbnRpbmc7IHByb2JsZW07IHN5bnRheDsgdGVybWluYWw7IHRleHQgZm9ybWF0dGluZyBwcm9ncmFtczsgdGV4dCBwcm9jZXNzaW5nLjsgdHlwZXNldHRpbmc7IHR5cGVzZXR0aW5nIG1hdGhlbWF0aWNzIiwKICBsYW5ndWFnZSA9ICAgICAiRW5nbGlzaCIsCiAgcmVmZXJlbmNlcyA9ICAgIjciLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0xhd3JpZToxOTc1OkdQTCwKICBhdXRob3IgPSAgICAgICAiRC4gSC4gTGF3cmllIGFuZCBULiBMYXltYW4gYW5kIEQuIEJhZXIgYW5kIEouIE0uIFJhbmRhbCIsCiAgdGl0bGUgPSAgICAgICAgIntHTFlQTklSfSAtLS0ge0F9IHByb2dyYW1taW5nIGxhbmd1YWdlIGZvciB7SWxsaWFjIElWfSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOCIsCiAgbnVtYmVyID0gICAgICAgIjMiLAogIHBhZ2VzID0gICAgICAgICIxNTctLTE2NCIsCiAgbW9udGggPSAgICAgICAgbWFyLAogIHllYXIgPSAgICAgICAgICIxOTc1IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9QYXJhbGxlbC9NdWx0aS5iaWIiLAogIGFic3RyYWN0ID0gICAgICJHTFlQTklSIGlzIG9uZSBvZiB0aGUgZWFybGllc3QgZXhpc3RpbmcgbGFuZ3VhZ2VzIGRlc2lnbmVkIGZvciBwcm9ncmFtbWluZyB0aGUgSWxsaWFjIElWIGNvbXB1dGVyLiBUaGUgc3ludGF4IG9mIHRoZSBsYW5ndWFnZSBpcyBiYXNlZCBvbiBBTEdPTCA2MCwgYnV0IGhhcyBiZWVuIGV4dGVuZGVkIHRvIGFsbG93IHRoZSBwcm9ncmFtbWVyIGV4cGxpY2l0bHkgdG8gc3BlY2lmeSB0aGUgcGFyYWxsZWxpc20gb2YgaGlzIGFsZ29yaXRobSBpbiB0ZXJtcyBvZiA2NC13b3JkIHZlY3RvcnMuIFRoaXMgcGFwZXIgZGVzY3JpYmVzIHRoZSBjaGFyYWN0ZXJpc3RpY3MsIGdvYWxzLCBhbmQgcGhpbG9zb3BoeSBvZiB0aGUgbGFuZ3VhZ2UsIGFuZCBkaXNjdXNzZXMgc29tZSBvZiB0aGUgcHJvYmxlbXMgYXNzb2NpYXRlZCB3aXRoIHBhcmFsbGVsIGNvbXB1dGVyIGFyY2hpdGVjdHVyZXMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzU0MDAgKEFuYWxvZ3VlIGFuZCBkaWdpdGFsIGNvbXB1dGVycyBhbmQgc3lzdGVtcyk7IEM2MTQwQiAoTWFjaGluZS1vcmllbnRlZCBsYW5ndWFnZXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBvZiBJbGxpbm9pcywgVXJiYW5hLUNoYW1wYWlnbiwgSUwsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJBTEdPTCA2MDsgYWxnb3JpdGhtOyBjb21wdXRlciBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IEdMWVBOSVI7IEdMWVBOSVIgcHJvZ3JhbW1pbmc7IElsbGlhYyBJViBjb21wdXRlcjsgbGFuZ3VhZ2U7IG1hY2hpbmUgb3JpZW50ZWQgbGFuZ3VhZ2VzOyBwYXJhbGxlbCBjb21wdXRlciBhcmNoaXRlY3R1cmVzOyBwYXJhbGxlbCBwcm9jZXNzaW5nOyBwYXJhbGxlbGlzbTsgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2U7IHN5bnRheCIsCiAgdHJlYXRtZW50ID0gICAgIkcgR2VuZXJhbCBSZXZpZXc7IFAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7RmxveWQ6MTk3NTpFVEIsCiAgYXV0aG9yID0gICAgICAgIlJvYmVydCBXLiBGbG95ZCBhbmQgUm9uYWxkIEwuIFJpdmVzdCIsCiAgdGl0bGUgPSAgICAgICAgIkV4cGVjdGVkIFRpbWUgQm91bmRzIGZvciBTZWxlY3Rpb24iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTgiLAogIG51bWJlciA9ICAgICAgICIzIiwKICBwYWdlcyA9ICAgICAgICAiMTY1LS0xNzIiLAogIG1vbnRoID0gICAgICAgIG1hciwKICB5ZWFyID0gICAgICAgICAiMTk3NSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJBIG5ldyBzZWxlY3Rpb24gYWxnb3JpdGhtIGlzIHByZXNlbnRlZCB3aGljaCBpcyBzaG93biB0byBiZSB2ZXJ5IGVmZmljaWVudCBvbiB0aGUgYXZlcmFnZSwgYm90aCB0aGVvcmV0aWNhbGx5IGFuZCBwcmFjdGljYWxseS4gVGhlIG51bWJlciBvZiBjb21wYXJpc29ucyB1c2VkIHRvIHNlbGVjdCB0aGUgJGkkLXRoIHNtYWxsZXN0IG9mICRuJCBudW1iZXJzIGlzICRuICsgXG1pbihpLG4taSkgKyBvKG4pJC4gQSBsb3dlciBib3VuZCB3aXRoaW4gOSBwZXJjZW50IG9mIHRoZSBhYm92ZSBmb3JtdWxhIGlzIGFsc28gZGVyaXZlZC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDI0MCAoUHJvZ3JhbW1pbmcgYW5kIGFsZ29yaXRobSB0aGVvcnkpOyBDNzMxMCAoTWF0aGVtYXRpY3MgY29tcHV0aW5nKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiU3RhbmZvcmQgVW5pdi4sIFN0YW5mb3JkLCBDQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFsZ29yaXRobSB0aGVvcnk7IGJvdW5kOyBjb21wdXRhdGlvbmFsIGNvbXBsZXhpdHk7IGNvbXB1dGVyIHByb2dyYW1taW5nOyBtYXRoZW1hdGljczsgbWVkaWFuczsgcXVhbnRpbGVzOyBzZWxlY3Rpb247IHNlbGVjdGlvbiBhbGdvcml0aG07IHRpbWUgYm91bmRzIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtGbG95ZDoxOTc1OkFBQSwKICBhdXRob3IgPSAgICAgICAiUi4gVy4gRmxveWQgYW5kIFIuIEwuIFJpdmVzdCIsCiAgdGl0bGUgPSAgICAgICAgIntBQ019IEFsZ29yaXRobSA0ODk6IFRoZSBBbGdvcml0aG0ge1NFTEVDVH0gLS0gZm9yIEZpbmRpbmcgdGhlICRpJHRoIFNtYWxsZXN0IG9mICRuJCBFbGVtZW50cyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOCIsCiAgbnVtYmVyID0gICAgICAgIjMiLAogIHBhZ2VzID0gICAgICAgICIxNzMtLTE3MyIsCiAgbW9udGggPSAgICAgICAgbWFyLAogIHllYXIgPSAgICAgICAgICIxOTc1IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgbm90ZSA9ICAgICAgICAgIlNlZSBhbHNvIFxjaXRle0Jyb3duOjE5NzY6UkFTfS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNzMxMCAoTWF0aGVtYXRpY3MgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIkNvbXB1dGVyIFNjaS4gRGVwdC4sIFN0YW5mb3JkIFVuaXYuLCBTdGFuZm9yZCwgQ0EsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImFsZ29yaXRobSBTRUxFQ1Q7IEhvYXJlJ3MgYWxnb3JpdGhtIEZJTkQ7IG1hdGhlbWF0aWNzOyBzYW1wbGluZzsgc3Vicm91dGluZXMiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0VyaXNtYW46MTk3NTpDQ0UsCiAgYXV0aG9yID0gICAgICAgIkEuIE0uIEVyaXNtYW4gYW5kIFcuIEYuIFRpbm5leSIsCiAgdGl0bGUgPSAgICAgICAgIk9uIENvbXB1dGluZyBDZXJ0YWluIEVsZW1lbnRzIG9mIHRoZSBJbnZlcnNlIG9mIGEgU3BhcnNlIE1hdHJpeCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOCIsCiAgbnVtYmVyID0gICAgICAgIjMiLAogIHBhZ2VzID0gICAgICAgICIxNzctLTE3OSIsCiAgbW9udGggPSAgICAgICAgbWFyLAogIHllYXIgPSAgICAgICAgICIxOTc1IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjVGMDUiLAogIE1SbnVtYmVyID0gICAgICI1MSAxNDU0MCIsCiAgbXJyZXZpZXdlciA9ICAgIkwuIEhhZ2VtYW4iLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L1RoZW9yeS9NYXRyaXguYmliIiwKICBhYnN0cmFjdCA9ICAgICAiQSByZWN1cnNpdmUgYWxnb3JpdGhtIGZvciBjb21wdXRpbmcgdGhlIGludmVyc2Ugb2YgYSBtYXRyaXggZnJvbSB0aGUgTFUgZmFjdG9ycyBiYXNlZCBvbiByZWxhdGlvbnNoaXBzIGluIFRha2FoYXNoaSwgZXQgYWwuLCBpcyBleGFtaW5lZC4gVGhlIGZvcm11bGFzIGZvciB0aGUgYWxnb3JpdGhtIGFyZSBnaXZlbjsgdGhlIGRlcGVuZGVuY3kgcmVsYXRpb25zaGlwcyBhcmUgZGVyaXZlZDsgdGhlIGNvbXB1dGF0aW9uYWwgY29zdHMgYXJlIGRldmVsb3BlZDsgYW5kIHNvbWUgZ2VuZXJhbCBjb21tZW50cyBvbiBhcHBsaWNhdGlvbiBhbmQgc3RhYmlsaXR5IGFyZSBtYWRlLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkIwMjkwSCAoTGluZWFyIGFsZ2VicmEpOyBDNDE0MCAoTGluZWFyIGFsZ2VicmEpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI5MjEiLAogIGNvcnBzb3VyY2UgPSAgICJCb2VpbmcgQ29tcHV0ZXIgU2VydmljZXMsIFNlYXR0bGUsIFdBLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYXBwbGljYXRpb247IGNvbXB1dGF0aW9uYWwgY29zdHM7IGNvbXB1dGluZzsgY292YXI7IGRlcGVuZGVuY3kgcmVsYXRpb25zaGlwczsgZWxlbWVudHMgb2YgaW52ZXJzZTsgaW52ZXJzZTsgaW52ZXJzZSBtYXRyaXg7IG1hdGhlbWF0aWNhbCB0ZWNobmlxdWVzOyBtYXRyaXggYWxnZWJyYTsgbmxhOyByZWN1cnNpdmUgYWxnb3JpdGhtOyBzZW5zaXRpdml0aWVzOyBzcGFyc2U7IHNwYXJzZSBtYXRyaWNlczsgc3BhcnNlIG1hdHJpeDsgc3RhYmlsaXR5OyB0cmlhbmd1bGFyIGZhY3Rvcml6YXRpb247IHRyaWRpYWdvbmFsIG1hdHJpeCIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7U2hhbXBpbmU6MTk3NTpETFMsCiAgYXV0aG9yID0gICAgICAgIkwuIEYuIFNoYW1waW5lIiwKICB0aXRsZSA9ICAgICAgICAiRGlzY3JldGUgTGVhc3QgU3F1YXJlcyBQb2x5bm9taWFsIEZpdHMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTgiLAogIG51bWJlciA9ICAgICAgICIzIiwKICBwYWdlcyA9ICAgICAgICAiMTc5LS0xODAiLAogIG1vbnRoID0gICAgICAgIG1hciwKICB5ZWFyID0gICAgICAgICAiMTk3NSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY1RDEwIiwKICBNUm51bWJlciA9ICAgICAiNTEgMjI0NyIsCiAgbXJyZXZpZXdlciA9ICAgIlMuIEYuIE1jQ29ybWljayIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJUaGUgcmVjdXJyZW5jZSByZWxhdGlvbiBiZXR3ZWVuIG9ydGhvZ29uYWwgcG9seW5vbWlhbHMgaXMgd2lkZWx5IHVzZWQgZm9yIGRpc2NyZXRlIGxlYXN0IHNxdWFyZXMgZGF0YSBmaXR0aW5nLiBBIHZhcmlhbnQgb2YgdGhlIGNsYXNzaWNhbCBhbGdvcml0aG0gd2hpY2ggaGFzIGJldHRlciBudW1lcmljYWwgcHJvcGVydGllcyBpcyBwcmVzZW50ZWQgYW5kIHRoZSByZWFzb24gZm9yIGl0cyBpbXByb3ZlZCBwZXJmb3JtYW5jZSBpcyBleHBsYWluZWQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjAyOTBGIChJbnRlcnBvbGF0aW9uIGFuZCBmdW5jdGlvbiBhcHByb3hpbWF0aW9uKTsgQzQxMzAgKEludGVycG9sYXRpb24gYW5kIGZ1bmN0aW9uIGFwcHJveGltYXRpb24pIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI5MjEiLAogIGNvcnBzb3VyY2UgPSAgICJTYW5kaWEgTGFicy4sIEFsYnVxdWVycXVlLCBOTSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFsZ29yaXRobTsgZGF0YSBmaXR0aW5nOyBsZWFzdCBzcXVhcmVzOyBsZWFzdCBzcXVhcmVzIGFwcHJveGltYXRpb25zOyBsZWFzdCBzcXVhcmVzIHBvbHlub21pYWwgZml0czsgbHVkOyBtYXRoZW1hdGljYWwgdGVjaG5pcXVlczsgb3J0aG9nb25hbCBwb2x5bm9taWFsczsgcG9seW5vbWlhbHM7IHJlY3VycmVuY2UgcmVsYXRpb24gYmV0d2VlbiBvcnRob2dvbmFsIHBvbHlub21pYWxzOyByZXNpZHVhbDsgc2NhbGUiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle3ZhbmRlclNsdWlzOjE5NzU6Q1BFLAogIGF1dGhvciA9ICAgICAgICJBLiB7dmFuIGRlciBTbHVpc30iLAogIHRpdGxlID0gICAgICAgICJDb3JyaWdlbmR1bToge2BgUGVydHVyYmF0aW9ucyBvZiBlaWdlbnZhbHVlcyBvZiBub24tbm9ybWFsIG1hdHJpY2VzJyd9IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE4IiwKICBudW1iZXIgPSAgICAgICAiMyIsCiAgcGFnZXMgPSAgICAgICAgIjE4MCIsCiAgbW9udGggPSAgICAgICAgbWFyLAogIHllYXIgPSAgICAgICAgICIxOTc1IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjVGMTUiLAogIE1SbnVtYmVyID0gICAgICI1MSA5NDU3YiIsCiAgbXJyZXZpZXdlciA9ICAgIkphbiBaaXRrbyIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXkgMjggMTY6MjQ6MjQgMTk5NiIsCiAgbm90ZSA9ICAgICAgICAgIlNlZSBcY2l0ZXt2YW5kZXJTbHVpczoxOTc1OlBFTn0uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKfQoKQEFydGljbGV7UGFybmFzOjE5NzU6U0NTLAogIGF1dGhvciA9ICAgICAgICJELiBMLiBQYXJuYXMiLAogIHRpdGxlID0gICAgICAgICJPbiBhIFNvbHV0aW9uIHRvIHRoZSBDaWdhcmV0dGUgU21va2VyJ3MgUHJvYmxlbSAoV2l0aG91dCBDb25kaXRpb25hbCBTdGF0ZW1lbnRzKSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOCIsCiAgbnVtYmVyID0gICAgICAgIjMiLAogIHBhZ2VzID0gICAgICAgICIxODEtLTE4MyIsCiAgbW9udGggPSAgICAgICAgbWFyLAogIHllYXIgPSAgICAgICAgICIxOTc1IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlRoaXMgcmVwb3J0IGRpc2N1c3NlcyBhIHByb2JsZW0gZmlyc3QgaW50cm9kdWNlZCBieSBQYXRpbCwgd2hvIGhhcyBjbGFpbWVkIHRoYXQgdGhlIGNpZ2FyZXR0ZSBzbW9rZXIncyBwcm9ibGVtIGNhbm5vdCBiZSBzb2x2ZWQgdXNpbmcgdGhlICRQJCBhbmQgJFYkIG9wZXJhdGlvbnMgaW50cm9kdWNlZCBieSBEaWprc3RyYSB1bmxlc3MgY29uZGl0aW9uYWwgc3RhdGVtZW50cyBhcmUgdXNlZC4gQW4gZXhhbWluYXRpb24gb2YgUGF0aWwncyBwcm9vZiBzaG93cyB0aGF0IGhlIGhhcyBlc3RhYmxpc2hlZCB0aGlzIGNsYWltIG9ubHkgdW5kZXIgc3Ryb25nIHJlc3RyaWN0aW9ucyBvbiB0aGUgdXNlIG9mICRQJCBhbmQgJFYkLiBUaGVzZSByZXN0cmljdGlvbnMgZWxpbWluYXRlIHByb2dyYW1taW5nIHRlY2huaXF1ZXMgdXNlZCBieSBEaWprc3RyYSBhbmQgb3RoZXJzIHNpbmNlIHRoZSBmaXJzdCBpbnRyb2R1Y3Rpb24gb2YgdGhlIHNlbWFwaG9yZSBjb25jZXB0LiBUaGlzIHBhcGVyIGNvbnRhaW5zIGEgc29sdXRpb24gdG8gdGhlIHByb2JsZW0uIEl0IGFsc28gZGlzY3Vzc2VzIHRoZSBuZWVkIGZvciB0aGUgZ2VuZXJhbGl6ZWQgb3BlcmF0b3JzIHN1Z2dlc3RlZCBieSBQYXRpbC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjE1MEogKE9wZXJhdGluZyBzeXN0ZW1zKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiVGVjaC4gSG9jaHNjaHVsZSBEYXJtc3RhZHQsIERhcm1zdGFkdCwgV2VzdCBHZXJtYW55IiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNpZ2FyZXR0ZSBzbW9rZXIncyBwcm9ibGVtOyBjby1vcGVyYXRpbmcgcHJvY2Vzc2VzOyBjb21wdXRlciBvcGVyYXRpbmcgc3lzdGVtczsgY29uZGl0aW9uYWwgc3RhdGVtZW50czsgZ2VuZXJhbGl6ZWQ7IG9wZXJhdGluZyBzeXN0ZW1zOyBvcGVyYXRpbmcgc3lzdGVtcyAoY29tcHV0ZXJzKTsgb3BlcmF0b3JzOyBwcm9jZXNzIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyBwcm9ncmFtbWluZyB0ZWNobmlxdWVzOyBzZW1hcGhvcmUgY29uY2VwdDsgc3luY2hyb25pc2F0aW9uIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtDaGFtYmVyczoxOTc1OkNOSCwKICBhdXRob3IgPSAgICAgICAiSmFjayBBLiBDaGFtYmVycyBhbmQgUmF5IFYuIFBvb3JlIiwKICB0aXRsZSA9ICAgICAgICAiQ29tcHV0ZXIgTmV0d29ya3MgaW4gSGlnaGVyIEVkdWNhdGlvbjogU29jaW8tRWNvbm9taWMtUG9saXRpY2FsIEZhY3RvcnMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTgiLAogIG51bWJlciA9ICAgICAgICI0IiwKICBwYWdlcyA9ICAgICAgICAiMTkzLS0xOTkiLAogIG1vbnRoID0gICAgICAgIGFwciwKICB5ZWFyID0gICAgICAgICAiMTk3NSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJUaGlzIHN0dWR5IHByZXNlbnRzIHRoZSByZXN1bHRzIG9mIGEgbmF0aW9ud2lkZSBzdXJ2ZXkgb2YgY29tcHV0ZXIgbmV0d29ya3MgaW4gaGlnaGVyIGVkdWNhdGlvbiBjb25kdWN0ZWQgZHVyaW5nIDE5NzEtNzMuIEZpdmUgbWFqb3IgYW5kIDE4IG1pbm9yIG5ldHdvcmtzIHdlcmUgaWRlbnRpZmllZC4gVGhlIGZpdmUgbWFqb3IgbmV0d29ya3MgaW5jbHVkZWQ6IHRoZSBBUlBBIE5ldCwgdGhlIENhbGlmb3JuaWEgU3RhdGUgQ29sbGVnZSBuZXR3b3JrLCB0aGUgVW5pdmVyc2l0eSBvZiBJb3dhXHNsYXNoIElvd2EgU3RhdGUgVW5pdmVyc2l0eSBuZXR3b3JrLCB0aGUgTWljaGlnYW4gRWR1Y2F0aW9uYWwgUmVzZWFyY2ggSW5mb3JtYXRpb24gVHJpYWQsIEluYy4sIGFuZCB0aGUgVHJpYW5nbGUgVW5pdmVyc2l0aWVzIENvbXB1dGF0aW9uIENlbnRlciBuZXR3b3JrIGluIE5vcnRoIENhcm9saW5hLiBJbi1kZXB0aCBzdHVkaWVzIHdlcmUgY29uZHVjdGVkIG9mIHRoZSBsYXR0ZXIgdHdvIG5ldHMuIEJhc2VkIG9uIHRoZSBleHBlcmllbmNlcyBvZiB0aGVzZSBvcGVyYXRpbmcgbmV0d29ya3MsIGEgbnVtYmVyIG9mIGZhY3RvcnMgYXJlIGlkZW50aWZpZWQgZm9yIGNvbnNpZGVyYXRpb24gaW4gZGV2ZWxvcGluZyBuZXR3b3Jrcy4gRmluYWxseSwgcmVjb21tZW5kYXRpb25zIGFyZSBhZHZhbmNlZCByZWdhcmRpbmcgdGhlIGRldmVsb3BtZW50IG9mIG5ldHdvcmtzIGluIGhpZ2hlciBlZHVjYXRpb24gaW4gdGhlIGZ1dHVyZS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNTQwMCAoQW5hbG9ndWUgYW5kIGRpZ2l0YWwgY29tcHV0ZXJzIGFuZCBzeXN0ZW1zKTsgQzcxMTAgKEVkdWNhdGlvbmFsIGFkbWluaXN0cmF0aW9uKTsgQzc4MTBDIChDb21wdXRlci1haWRlZCBpbnN0cnVjdGlvbikiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMjsgNzIzOyA5MDEiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBvZiBTb3V0aCBGbG9yaWRhLCBUYW1wYSwgRkwsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhZG1pbmlzdHJhdGl2ZSBkYXRhIHByb2Nlc3Npbmc7IEFSUEE7IENhbGlmb3JuaWEgU3RhdGU7IENvbGxlZ2UgbmV0d29yazsgY29tcHV0ZXIgYWlkZWQgaW5zdHJ1Y3Rpb247IGNvbXB1dGVyIG5ldHdvcmtpbmc7IGNvbXB1dGVyIG5ldHdvcmtzOyBjb21wdXRlciBzeXN0ZW1zLCBkaWdpdGFsIC0tLSBUaW1lIFNoYXJpbmc7IGRhdGEgcHJvY2Vzc2luZzsgZWR1Y2F0aW9uYWw7IGhpZ2hlciBlZHVjYXRpb247IE1pY2hpZ2FuIEVkdWNhdGlvbiBSZXNlYXJjaCBJbmZvcm1hdGlvbiBUcmlhZCBJbmM7IG5hdGlvbndpZGUgc3VydmV5OyBuZXQ7IG5ldHdvcms7IHNvY2lhbCBlY29ub21pYyBhbmQgcG9saXRpY2FsIGZhY3RvcnM7IFRyaWFuZ2xlOyBVbml2ZXJzaXRpZXMgQ29tcHV0YXRpb24gQ2VudHJlIG5ldHdvcms7IFVuaXZlcnNpdHkgb2YgSW93YS9Jb3dhIFN0YXRlIFVuaXZlcnNpdHkiLAogIHRyZWF0bWVudCA9ICAgICJFIEVjb25vbWljIiwKfQoKQEFydGljbGV7R2luc2Jlcmc6MTk3NTpBQUQsCiAgYXV0aG9yID0gICAgICAgIkUuIFMuIEdpbnNiZXJnIGFuZCBELiBaYWJvcm93c2tpIiwKICB0aXRsZSA9ICAgICAgICAie0FDTX0gQWxnb3JpdGhtIDQ5MDogVGhlIERpbG9nYXJpdGhtIEZ1bmN0aW9uIG9mIGEgUmVhbCBBcmd1bWVudCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOCIsCiAgbnVtYmVyID0gICAgICAgIjQiLAogIHBhZ2VzID0gICAgICAgICIyMDAtLTIwMiIsCiAgbW9udGggPSAgICAgICAgYXByLAogIHllYXIgPSAgICAgICAgICIxOTc1IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgbm90ZSA9ICAgICAgICAgIlNlZSBhbHNvIFxjaXRle01vcnJpczoxOTc2OlJERn0uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjAyOTBEIChGdW5jdGlvbmFsIGFuYWx5c2lzKTsgQzQxMjAgKEZ1bmN0aW9uYWwgYW5hbHlzaXMpOyBDNzMxMCAoTWF0aGVtYXRpY3MgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIkRlcHQuIG9mIFBoeXMuLCBVbml2LiBvZiBNYXNzYWNodXNldHRzLCBCb3N0b24sIE1BLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJkaWxvZ2FyaXRobSBmdW5jdGlvbjsgZWxlY3Ryb2R5bmFtaWNzOyBmZXJyb21hZ25ldHM7IGZ1bmN0aW9uIGV2YWx1YXRpb247IGZ1bmN0aW9uIHN1YnJvdXRpbmU7IGlkZWFsOyBsaWJyYXJ5OyBuZXR3b3JrIGFuYWx5c2lzOyBwb2x5bWVyczsgcXVhbnR1bTsgcmVhbCBhcmd1bWVudDsgc3VicHJvZ3JhbXM7IHN1YnJvdXRpbmVzOyB0aGVybW9keW5hbWljcyIsCiAgdHJlYXRtZW50ID0gICAgIkEgQXBwbGljYXRpb247IFQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7U2hlbjoxOTc1OkNXQiwKICBhdXRob3IgPSAgICAgICAiSy4gSy4gU2hlbiBhbmQgSi4gTC4gUGV0ZXJzb24iLAogIHRpdGxlID0gICAgICAgICJDb3JyaWdlbmR1bTogYGB7QSBXZWlnaHRlZCBCdWRkeSBNZXRob2QgZm9yIER5bmFtaWMgU3RvcmFnZSBBbGxvY2F0aW9ufScnIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE4IiwKICBudW1iZXIgPSAgICAgICAiNCIsCiAgcGFnZXMgPSAgICAgICAgIjIwMi0tMjAyIiwKICBtb250aCA9ICAgICAgICBhcHIsCiAgeWVhciA9ICAgICAgICAgIjE5NzUiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJTYXQgSmFuIDE4IDE1OjE0OjI1IDE5OTciLAogIG5vdGUgPSAgICAgICAgICJTZWUgXGNpdGV7U2hlbjoxOTc0OldCTX0uIiwKfQoKQEFydGljbGV7U21pdGg6MTk3NTpNT0wsCiAgYXV0aG9yID0gICAgICAgIkdyYWhhbSBTbWl0aCIsCiAgdGl0bGUgPSAgICAgICAgIk9uIE1haW50ZW5hbmNlIG9mIHRoZSBPcHBvcnR1bml0eSBMaXN0IGZvciBDbGFzcy1UZWFjaGVyIFRpbWV0YWJsZSBQcm9ibGVtcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOCIsCiAgbnVtYmVyID0gICAgICAgIjQiLAogIHBhZ2VzID0gICAgICAgICIyMDMtLTIwOCIsCiAgbW9udGggPSAgICAgICAgYXByLAogIHllYXIgPSAgICAgICAgICIxOTc1IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiOTBCMzUiLAogIE1SbnVtYmVyID0gICAgICI1MSAxMjMxNCIsCiAgbXJyZXZpZXdlciA9ICAgIkkuIEdoLiBDaW9iYW51IiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIk9uZSBvZiB0aGUgcHJpbmNpcGFsIGNvbXBvbmVudHMgb2YgcHJvY2VkdXJlcyBmb3IgdGhlIHNvbHV0aW9uIG9mIGNsYXNzLXRlYWNoZXIgdGltZXRhYmxlIHByb2JsZW1zIGlzIHRoYXQgZm9yIG1haW50ZW5hbmNlIG9mIHRoZSBvcHBvcnR1bml0eSBsaXN0LiBPcHBvcnR1bml0eSBsaXN0IG1haW50ZW5hbmNlIG1ldGhvZHMgYXJlIGJhc2VkIG9uIG5lY2Vzc2FyeSBjb25kaXRpb25zIGZvciB0aGUgZXhpc3RlbmNlIG9mIGEgc29sdXRpb24uIEEgZ2VuZXJhbCBmcmFtZXdvcmsgZm9yIG5lY2Vzc2FyeSBjb25kaXRpb25zLCB0b2dldGhlciB3aXRoIGZvdXIgc3BlY2lmaWMgc2V0cyBvZiBuZWNlc3NhcnkgY29uZGl0aW9ucywgaXMgZ2l2ZW4uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzcxMTAgKEVkdWNhdGlvbmFsIGFkbWluaXN0cmF0aW9uKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzOyA5MDEiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBvZiBOZXcgU291dGggV2FsZXMsIEtlbnNpbmd0b24sIE5TVywgQXVzdHJhbGlhIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNsYXNzIHRlYWNoZXI7IGNvbWJpbmF0b3JpYWw7IGRhdGEgcHJvY2Vzc2luZzsgZWR1Y2F0aW9uYWwgYWRtaW5pc3RyYXRpdmUgZGF0YSBwcm9jZXNzaW5nOyBuZWNlc3NhcnkgY29uZGl0aW9uczsgb3Bwb3J0dW5pdHkgbGlzdDsgc2NoZWR1bGU7IHNjaGVkdWxpbmc7IHNjaG9vbCB0aW1ldGFibGU7IHRpbWV0YWJsZTsgdGltZXRhYmxlIHByb2JsZW1zIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtCcmFpZDoxOTc1OlNTQiwKICBhdXRob3IgPSAgICAgICAiSS4gQy4gQnJhaWQiLAogIHRpdGxlID0gICAgICAgICJUaGUgU3ludGhlc2lzIG9mIFNvbGlkcyBCb3VuZGVkIGJ5IE1hbnkgRmFjZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTgiLAogIG51bWJlciA9ICAgICAgICI0IiwKICBwYWdlcyA9ICAgICAgICAiMjA5LS0yMTYiLAogIG1vbnRoID0gICAgICAgIGFwciwKICB5ZWFyID0gICAgICAgICAiMTk3NSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJBIHRlY2huaXF1ZSBpcyBwcmVzZW50ZWQgd2hpY2ggYWxsb3dzIGEgY2xhc3Mgb2Ygc29saWQgb2JqZWN0cyB0byBiZSBzeW50aGVzaXplZCBhbmQgc3RvcmVkIHVzaW5nIGEgY29tcHV0ZXIuIFN5bnRoZXNpcyBiZWdpbnMgd2l0aCBwcmltaXRpdmUgc29saWRzIGxpa2UgYSBjdWJlLCB3ZWRnZSwgb3IgY3lsaW5kZXIuIEFueSBzb2xpZCBjYW4gYmUgbW92ZWQsIHNjYWxlZCwgb3Igcm90YXRlZC4gU29saWRzIG1heSBhbHNvIGJlIGFkZGVkIHRvZ2V0aGVyIG9yIHN1YnRyYWN0ZWQuIFR3byBhbGdvcml0aG1zIHRvIHBlcmZvcm0gYWRkaXRpb24gYXJlIGRlc2NyaWJlZC4gRm9yIHByYWN0aWNhbCBkZXNpZ25lcnMsIHRoZSB0ZWNobmlxdWUgaGFzIHRoZSBhZHZhbnRhZ2UgdGhhdCBvcGVyYXRpb25zIGFyZSBjb25jaXNlLCByZWFkaWx5IGNvbXBvc2VkLCBhbmQgYXJlIGdpdmVuIGluIHRlcm1zIG9mIGVhc2lseSBpbWFnaW5lZCBzb2xpZHMuIFF1aXRlIHNob3J0IHNlcXVlbmNlcyBvZiBvcGVyYXRpb25zIHN1ZmZpY2UgdG8gYnVpbGQgdXAgY29tcGxleCBzb2xpZHMgYm91bmRlZCBieSBtYW55IGZhY2VzLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM1NTQwIChUZXJtaW5hbHMgYW5kIGdyYXBoaWMgZGlzcGxheXMpOyBDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKTsgQzc0NDAgKENpdmlsIGFuZCBtZWNoYW5pY2FsIGVuZ2luZWVyaW5nIGNvbXB1dGluZykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIG9mIENhbWJyaWRnZSwgQ2FtYnJpZGdlLCBVSyIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhbGdvcml0aG1zOyBjb21wdXRlciBncmFwaGljczsgY29tcHV0ZXItYWlkZWQgZGVzaWduOyBpbWFnZSBwcm9jZXNzaW5nOyBtYW55IGZhY2VkIHNvbGlkczsgc2ltdWxhdGlvbjsgc3ludGhlc2lzIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtCYXRhZ2VsajoxOTc1OlFITSwKICBhdXRob3IgPSAgICAgICAiVmxhZGltaXIgQmF0YWdlbGoiLAogIHRpdGxlID0gICAgICAgICJRdWFkcmF0aWMgSGFzaCBNZXRob2QgV2hlbiB0aGUgVGFibGUgU2l6ZSBpcyBub3QgYSBQcmltZSBOdW1iZXIiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTgiLAogIG51bWJlciA9ICAgICAgICI0IiwKICBwYWdlcyA9ICAgICAgICAiMjE2LS0yMTciLAogIG1vbnRoID0gICAgICAgIGFwciwKICB5ZWFyID0gICAgICAgICAiMTk3NSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJQcmV2aW91cyB3b3JrIG9uIHF1YWRyYXRpYyBoYXNoIG1ldGhvZHMgaXMgbGltaXRlZCBtYWlubHkgdG8gdGhlIGNhc2Ugd2hlcmUgdGhlIHRhYmxlIHNpemUgaXMgYSBwcmltZSBudW1iZXIuIEhlcmUsIGNlcnRhaW4gcmVzdWx0cyBhcmUgZGVyaXZlZCBmb3IgY29tcG9zaXRlIG51bWJlcnMuIEl0IGlzIHNob3duIHRoYXQgYWxsIGNvbXBvc2l0ZSBudW1iZXJzIGNvbnRhaW5pbmcgYXQgbGVhc3QgdGhlIHNxdWFyZSBvZiBvbmUgb2YgdGhlIGNvbXBvbmVudCBwcmltZXMgaGF2ZSBmdWxsLXBlcmlvZCBpbnRlZ2VyLWNvZWZmaWNpZW50IHF1YWRyYXRpYyBoYXNoIGZ1bmN0aW9ucy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJCMDI2MCAoT3B0aW1pc2F0aW9uIHRlY2huaXF1ZXMpOyBDMTE4MCAoT3B0aW1pc2F0aW9uIHRlY2huaXF1ZXMpOyBDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiSm96ZWYgU3RlZmFuIEluc3QuLCBVbml2LiBvZiBManVibGphbmEsIExqdWJsamFuYSwgWXVnb3NsYXZpYSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21wb25lbnQgcHJpbWVzOyBjb21wb3NpdGU7IGNvbXB1dGVyIHByb2dyYW1taW5nOyBmdWxsIHBlcmlvZCBpbnRlZ2VyIGNvZWZmaWNpZW50OyBudW1iZXJzOyBwcmltZSBudW1iZXI7IHF1YWRyYXRpYyBoYXNoIGZ1bmN0aW9uczsgcXVhZHJhdGljIGhhc2ggbWV0aG9kOyBxdWFkcmF0aWMgcHJvZ3JhbW1pbmc7IHRhYmxlIGxvb2t1cDsgdGFibGUgc2l6ZSIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7V2FycmVuOjE5NzU6TVdBLAogIGF1dGhvciA9ICAgICAgICJIZW5yeSBTLiB7V2FycmVuLCBKci59IiwKICB0aXRsZSA9ICAgICAgICAiQSBNb2RpZmljYXRpb24gb2Yge1dhcnNoYWxsfSdzIEFsZ29yaXRobSBmb3IgdGhlIFRyYW5zaXRpdmUgQ2xvc3VyZSBvZiBCaW5hcnkgUmVsYXRpb25zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE4IiwKICBudW1iZXIgPSAgICAgICAiNCIsCiAgcGFnZXMgPSAgICAgICAgIjIxOC0tMjIwIiwKICBtb250aCA9ICAgICAgICBhcHIsCiAgeWVhciA9ICAgICAgICAgIjE5NzUiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2OEExMCIsCiAgTVJudW1iZXIgPSAgICAgIjUxIDIzNDAiLAogIG1ycmV2aWV3ZXIgPSAgICJFLiBNLiBSZWluZ29sZCIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJBbiBhbGdvcml0aG0gaXMgZ2l2ZW4gZm9yIGNvbXB1dGluZyB0aGUgdHJhbnNpdGl2ZSBjbG9zdXJlIG9mIGEgYmluYXJ5IHJlbGF0aW9uIHRoYXQgaXMgcmVwcmVzZW50ZWQgYnkgYSBCb29sZWFuIG1hdHJpeC4gVGhlIGFsZ29yaXRobSBpcyBzaW1pbGFyIHRvIFdhcnNoYWxsJ3MgYWx0aG91Z2ggaXQgZXhlY3V0ZXMgZmFzdGVyIGZvciBzcGFyc2UgbWF0cmljZXMgb24gbW9zdCBjb21wdXRlcnMsIHBhcnRpY3VsYXJseSBpbiBhIHBhZ2luZyBlbnZpcm9ubWVudC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJCMDI5MEggKExpbmVhciBhbGdlYnJhKTsgQzQxNDAgKExpbmVhciBhbGdlYnJhKTsgQzQyMTAgKEZvcm1hbCBsb2dpYykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIklCTSBUaG9tYXMgSi4gV2F0c29uIFJlcy4gQ2VudGVyLCBZb3JrdG93biBIZWlnaHRzLCBOWSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImJpbmFyeSByZWxhdGlvbjsgYmluYXJ5IHJlbGF0aW9uczsgQm9vbGVhbiBhbGdlYnJhOyBCb29sZWFuIG1hdHJpeDsgY29tcHV0ZXIgcHJvZ3JhbW1pbmc7IGRpZ3JhcGg7IGRpcmVjdGVkIGdyYXBoOyBtYXRyaXggYWxnZWJyYTsgcGFnaW5nIGVudmlyb25tZW50OyByZWFjaGFiaWxpdHkgbWF0cml4OyBzcGFyc2UgbWF0cmljZXM7IHRyYW5zaXRpdmUgY2xvc3VyZTsgV2Fyc2hhbGwncyBhbGdvcml0aG0iLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0hpbmRzOjE5NzU6QUxBLAogIGF1dGhvciA9ICAgICAgICJKYW1lcyBBLiBIaW5kcyIsCiAgdGl0bGUgPSAgICAgICAgIkFsZ29yaXRobSBmb3IgTG9jYXRpbmcgQWRqYWNlbnQgU3RvcmFnZSBCbG9ja3MgaW4gdGhlIEJ1ZGR5IFN5c3RlbSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOCIsCiAgbnVtYmVyID0gICAgICAgIjQiLAogIHBhZ2VzID0gICAgICAgICIyMjEtLTIyMiIsCiAgbW9udGggPSAgICAgICAgYXByLAogIHllYXIgPSAgICAgICAgICIxOTc1IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkEgc2ltcGxlIHNjaGVtZSBmb3IgdGhlIGRldGVybWluYXRpb24gb2YgdGhlIGxvY2F0aW9uIG9mIGEgYmxvY2sgb2Ygc3RvcmFnZSByZWxhdGl2ZSB0byBvdGhlciBibG9ja3MgaXMgZGVzY3JpYmVkLiBUaGlzIHNjaGVtZSBpcyBhcHBsaWNhYmxlIHRvIHRoZSBidWRkeSB0eXBlIHN0b3JhZ2UgYWxsb2NhdGlvbiBzeXN0ZW1zLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbikiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlN0YXRlIFVuaXYuIG9mIE5ldyBZb3JrLCBCdWZmYWxvLCBOWSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFsZ29yaXRobTsgYnVkZHkgc3lzdGVtOyBjb21wdXRlciBwcm9ncmFtbWluZzsgbG9jYXRpbmcgYWRqYWNlbnQgc3RvcmFnZSBibG9ja3M7IHN0b3JhZ2UgYWxsb2NhdGlvbjsgc3RvcmFnZSBhbGxvY2F0aW9uIHN5c3RlbXMiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle1ZhdWNoZXI6MTk3NTpDU0UsCiAgYXV0aG9yID0gICAgICAgIkplYW4gRy4gVmF1Y2hlciBhbmQgUGllcnJlIER1dmFsIiwKICB0aXRsZSA9ICAgICAgICAiQSBDb21wYXJpc29uIG9mIFNpbXVsYXRpb24gRXZlbnQgTGlzdCBBbGdvcml0aG1zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE4IiwKICBudW1iZXIgPSAgICAgICAiNCIsCiAgcGFnZXMgPSAgICAgICAgIjIyMy0tMjMwIiwKICBtb250aCA9ICAgICAgICBhcHIsCiAgeWVhciA9ICAgICAgICAgIjE5NzUiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0Rpc3RyaWJ1dGVkL1FMRC8xOTc1LmJpYiIsCiAgbm90ZSA9ICAgICAgICAgIlNlZSBjb3JyaWdlbmR1bSBcY2l0ZXtWYXVjaGVyOjE5NzU6Q0NTfS4iLAogIGFic3RyYWN0ID0gICAgICJGb3VyIGFsZ29yaXRobXMgYXJlIGNvbnNpZGVyZWQgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2NoZWR1bGUgZXZlbnRzIGluIGEgZ2VuZXJhbCBwdXJwb3NlIGRpc2NyZXRlIHNpbXVsYXRpb24gc3lzdGVtLiBUd28gb2YgdGhlIGFsZ29yaXRobXMgYXJlIG5ldywgb25lIGlzIGJhc2VkIG9uIGFuIGVuZC1vcmRlciB0cmVlIHN0cnVjdHVyZSBmb3IgZXZlbnQgbm90aWNlcywgYW5kIGFub3RoZXIgdXNlcyBhbiBpbmRleGVkIGxpbmVhciBsaXN0LiBUaGUgYWxnb3JpdGhtcyBhcmUgdGVzdGVkIHdpdGggYSBzZXQgb2YgdHlwaWNhbCBzdG9jaGFzdGljIHNjaGVkdWxpbmcgZGlzdHJpYnV0aW9ucyBlc3BlY2lhbGx5IGNob3NlbiB0byBzaG93IHRoZSBhZHZhbnRhZ2VzIGFuZCBsaW1pdGF0aW9ucyBvZiB0aGUgYWxnb3JpdGhtcy4gXHBhciBUaGUgZW5kLW9yZGVyIHRyZWUgYWxnb3JpdGhtIGlzIHNob3duIHRvIGJlIGFuIGFkdmFudGFnZW91cywgaW1tZWRpYXRlIHJlcGxhY2VtZW50IGZvciB0aGUgYWxnb3JpdGhtIGluIHVzZSB3aXRoIGN1cnJlbnQgc2ltdWxhdGlvbiBsYW5ndWFnZXMuIFRoZSBtb3N0IHByb21pc2luZyBhbGdvcml0aG0gdXNlcyB0aGUgaW5kZXhlZCBsaXN0IGNvbmNlcHQuIFxwYXIgSXQgd2lsbCByZXF1aXJlIGFuIGFkYXB0aXZlIHJvdXRpbmUgYmVmb3JlIGl0IGNhbiBiZSBlbXBsb3llZCBpbiBnZW5lcmFsIHB1cnBvc2Ugc2ltdWxhdG9ycyxidXQgaXRzIHBlcmZvcm1hbmNlIGlzIHN1Y2ggdGhhdCBmdXJ0aGVyIHN0dWR5IHdvdWxkIGJlIGZydWl0ZnVsLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTMwIChEYXRhIGhhbmRsaW5nIHRlY2huaXF1ZXMpOyBDNzgwMCAoT3RoZXIgY29tcHV0ZXIgYXBwbGljYXRpb25zKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gZGUgTW9udHJlYWwsIFF1ZS4sIENhbmFkYSIsCiAgY291bnRyeSA9ICAgICAgIlVTQSIsCiAgZGVzY3JpcHRvcnMgPSAgIlNpbXVsYXRpb247IGV2ZW50IGxpc3QgY29udHJvbDsgdGltZSBjb250cm9sOyIsCiAgZW51bSA9ICAgICAgICAgIjMxOTMiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYWRhcHRpdmUgcm91dGluZTsgY29tcHV0ZXIgcHJvZ3JhbW1pbmc7IGN1cnJlbnQgc2ltdWxhdGlvbjsgZGlzY3JldGUgc3lzdGVtIHNpbXVsYXRpb247IGVuZCBvcmRlciB0cmVlIHN0cnVjdHVyZTsgZXZlbnQgbGlzdCBhbGdvcml0aG07IGV2ZW50IHNjaGVkdWxpbmcgcm91dGluZTsgaW5kZXhlZCBsaW5lYXIgbGlzdDsgbGFuZ3VhZ2VzOyBzY2hlZHVsaW5nOyBzaW11bGF0aW9uOyBzaW11bGF0aW9uIGV2ZW50IGxpc3QgYWxnb3JpdGhtczsgc2ltdWxhdGlvbiBleGVjdXRpdmU7IHNvcnRpbmc7IHN0b2NoYXN0aWMgc2NoZWR1bGluZyBkaXN0cmlidXRpb25zOyB0aW1lIGZsb3cgbWVjaGFuaXNtcyIsCiAgbGFuZ3VhZ2UgPSAgICAgIkVuZ2xpc2giLAogIHJlZmVyZW5jZXMgPSAgICIwIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtLb3JmaGFnZToxOTc1OlNPLAogIGF1dGhvciA9ICAgICAgICJSb2JlcnQgUi4gS29yZmhhZ2UgYW5kIERhdmlkIFcuIE1hdHVsYSIsCiAgdGl0bGUgPSAgICAgICAgIk9uIHtTYWxhemFyfSBhbmQge09ha2ZvcmR9IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE4IiwKICBudW1iZXIgPSAgICAgICAiNCIsCiAgcGFnZXMgPSAgICAgICAgIjI0MC0tMjQwIiwKICBtb250aCA9ICAgICAgICBhcHIsCiAgeWVhciA9ICAgICAgICAgIjE5NzUiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJTYXQgSmFuIDE4IDE1OjA4OjA3IDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L1RoZW9yeS9ncmFwaC5jb2xvcmluZy5iaWIiLAogIG5vdGUgPSAgICAgICAgICJTZWUgXGNpdGV7U2FsYXphcjoxOTc0OkdGUyxLb3JmaGFnZToxOTc1Ok1TTyxHYXJleToxOTc1OlNPfSIsCiAga2V5d29yZHMgPSAgICAgImdyYXBoIGNvbG9yaW5nIiwKfQoKQEFydGljbGV7R2FyZXk6MTk3NTpTTywKICBhdXRob3IgPSAgICAgICAiTWljaGFlbCBSLiBHYXJleSBhbmQgRGF2aWQgUy4gSm9obnNvbiIsCiAgdGl0bGUgPSAgICAgICAgIk9uIHtTYWxhemFyfSBhbmQge09ha2ZvcmR9IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE4IiwKICBudW1iZXIgPSAgICAgICAiNCIsCiAgcGFnZXMgPSAgICAgICAgIjI0MC0tMjQxIiwKICBtb250aCA9ICAgICAgICBhcHIsCiAgeWVhciA9ICAgICAgICAgIjE5NzUiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYnNvdXJjZSA9ICAgICJmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L1RoZW9yeS9ncmFwaC5jb2xvcmluZy5iaWIiLAogIG5vdGUgPSAgICAgICAgICJTZWUgXGNpdGV7U2FsYXphcjoxOTc0OkdGUyxLb3JmaGFnZToxOTc1OlNPLEtvcmZoYWdlOjE5NzU6TVNPfSIsCiAga2V5d29yZHMgPSAgICAgImdyYXBoIGNvbG9yaW5nIiwKfQoKQEFydGljbGV7RmlzaGVyOjE5NzU6Q0NMLAogIGF1dGhvciA9ICAgICAgICJEYXZpZCBBLiBGaXNoZXIiLAogIHRpdGxlID0gICAgICAgICJDb3B5aW5nIEN5Y2xpYyBMaXN0IFN0cnVjdHVyZXMgaW4gTGluZWFyIFRpbWUgVXNpbmcgQm91bmRlZCBXb3Jrc3BhY2UiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTgiLAogIG51bWJlciA9ICAgICAgICI1IiwKICBwYWdlcyA9ICAgICAgICAiMjUxLS0yNTIiLAogIG1vbnRoID0gICAgICAgIG1heSwKICB5ZWFyID0gICAgICAgICAiMTk3NSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJBIGJvdW5kZWQgd29ya3NwYWNlIGNvcHlpbmcgYWxnb3JpdGhtIGZvciBhcmJpdHJhcnkgbGlzdCBzdHJ1Y3R1cmVzIGlzIGdpdmVuLiBUaGlzIGFsZ29yaXRobSBvcGVyYXRlcyBpbiBsaW5lYXIgdGltZSBhbmQgZG9lcyBub3QgcmVxdWlyZSB0YWcgYml0cy4gVGhlIGJlc3QgcHJldmlvdXMgYm91bmRlZCB3b3Jrc3BhY2UgY29weWluZyBhbGdvcml0aG1zIGFjaGlldmVkIG4qKjIgdGltZSB3aXRob3V0IHRhZyBiaXRzIGFuZCBuIGxvZyBuIHRpbWUgd2l0aCBvbmUgdGFnLiBUaGUgb25seSByZXN0cmljdGlvbiBvbiB0aGUgYWxnb3JpdGhtIGdpdmVuIGhlcmUgaXMgdGhhdCB0aGUgY29weSBtdXN0IGJlIHBsYWNlZCBpbnRvIGEgY29udGlndW91cyBzZWN0aW9uIG9mIG1lbW9yeS4gVGhlIG1ldGhvZCBpcyBhcHBsaWNhYmxlIHRvIGZpeGVkIG9yIHZhcmlhYmxlIHNpemUgbm9kZXMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMzAgKERhdGEgaGFuZGxpbmcgdGVjaG5pcXVlcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIkluc3QuIGZvciBEZWZlbnNlIEFuYWx5c2VzLCBBcmxpbmd0b24sIFZBLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYm91bmRlZCB3b3Jrc3BhY2U7IGNvbXB1dGVyIHByb2dyYW1taW5nOyBjb21wdXRlciBwcm9ncmFtbWluZyBsYW5ndWFnZXMgLS0tIExpc3QgUHJvY2Vzc2luZzsgY29weWluZyBhbGdvcml0aG07IGN5Y2xpYyBsaXN0IHN0cnVjdHVyZXM7IGxpbmVhciB0aW1lOyBsaXN0IHByb2Nlc3Npbmc7IG5vZGVzOyB0YWcgYml0cyIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7Q2FyZGVuYXM6MTk3NTpBUEksCiAgYXV0aG9yID0gICAgICAgIkFsZm9uc28gRi4gQ2FyZGVuYXMiLAogIHRpdGxlID0gICAgICAgICJBbmFseXNpcyBhbmQgUGVyZm9ybWFuY2Ugb2YgSW52ZXJ0ZWQgRGF0YSBCYXNlIFN0cnVjdHVyZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTgiLAogIG51bWJlciA9ICAgICAgICI1IiwKICBwYWdlcyA9ICAgICAgICAiMjUzLS0yNjMiLAogIG1vbnRoID0gICAgICAgIG1heSwKICB5ZWFyID0gICAgICAgICAiMTk3NSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGF0YWJhc2UvV2llZGVyaG9sZC5iaWIgYW5kIGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGF0YWJhc2UvR3JhZWZlLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIlRoZSBuZWVkIHRvIGVudmlzaW9uIGFuZCBhcmNoaXRlY3R1cmUgZGF0YSBiYXNlIHN5c3RlbXMgaW4gYSBoaWVyYXJjaGljYWwgbGV2ZWwgYnkgbGV2ZWwgZnJhbWV3b3JrIGlzIHN0cmVzc2VkLiBUaGUgaW52ZXJ0ZWQgZGF0YSBiYXNlIChmaWxlKSBvcmdhbml6YXRpb24gaXMgdGhlbiBhbmFseXplZCwgY29uc2lkZXJpbmcgaW1wbGVtZW50YXRpb24gb3JpZW50ZWQgYXNwZWN0cy4gVGhlIGludmVydGVkIGRpcmVjdG9yeSBpcyB2aWV3ZWQgcmVhbGlzdGljYWxseSBhcyBhbm90aGVyIGxhcmdlIGRhdGEgYmFzZSB3aGljaCBpdHNlbGYgaXMgc3ViamVjdGVkIHRvIGludmVyc2lvbi4gRm9ybXVsYXRpb25zIGFyZSBkZXJpdmVkIHRvIGVzdGltYXRlIGF2ZXJhZ2UgYWNjZXNzIHRpbWUgKHJlYWQgb25seSkgYW5kIHN0b3JhZ2UgcmVxdWlyZW1lbnRzLCBmb3JtYWxpemluZyB0aGUgaW50ZXJhY3Rpb24gb2YgZGF0YSBiYXNlIGNvbnRlbnQgY2hhcmFjdGVyaXN0aWNzLCBsb2dpY2FsIGNvbXBsZXhpdHkgb2YgcXVlcmllcywgYW5kIG1hY2hpbmUgdGltaW5nIGFuZCBibG9ja2luZyBzcGVjaWZpY2F0aW9ucyBpZGVudGlmaWVkIGFzIGhhdmluZyBhIGZpcnN0LW9yZGVyIGVmZmVjdCBvbiBwZXJmb3JtYW5jZS4gVGhlIGZvcm11bGF0aW9ucyBwcmVzZW50ZWQgYXJlIG5lY2Vzc2FyeSB0byBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggYW55IGluZGV4IHNlbGVjdGlvbiBjcml0ZXJpYSB0byBkZXRlcm1pbmUgdGhlIG9wdGltdW0gc2V0IG9mIGluZGV4IGtleXMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKTsgQzcxMDAgKEJ1c2luZXNzIGFuZCBhZG1pbmlzdHJhdGlvbik7IEM3MjUwIChJbmZvcm1hdGlvbiBzdG9yYWdlIGFuZCByZXRyaWV2YWwpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJJQk0gUmVzLiBMYWIuLCBTYW4gSm9zZSwgQ0EsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhY2Nlc3M7IGRhdGEgcHJvY2Vzc2luZzsgZGF0YSBzdHJ1Y3R1cmVzOyBmaWxlIG9yZ2FuaXNhdGlvbjsgaW5kZXgga2V5czsgaW5kZXggc2VsZWN0aW9uIGNyaXRlcmlhOyBpbmRleGluZzsgaW5kaWNlczsgaW5mb3JtYXRpb24gcmV0cmlldmFsOyBpbmZvcm1hdGlvbiByZXRyaWV2YWwgc3lzdGVtczsgaW5mb3JtYXRpb24gc3RvcmFnZTsgaW52ZXJ0ZWQgZGF0YSBiYXNlIHN0cnVjdHVyZXM7IGludmVydGVkIGRpcmVjdG9yeTsgbWFjaGluZSB0aW1pbmc7IG1hbmFnZW1lbnQgaW5mb3JtYXRpb24gc3lzdGVtczsgdGltZSIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7V2lsa3M6MTk3NTpJQVUsCiAgYXV0aG9yID0gICAgICAgIllvcmljayBXaWxrcyIsCiAgdGl0bGUgPSAgICAgICAgIkFuIGludGVsbGlnZW50IGFuYWx5emVyIGFuZCB1bmRlcnN0YW5kZXIgb2Yge0VuZ2xpc2h9IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE4IiwKICBudW1iZXIgPSAgICAgICAiNSIsCiAgcGFnZXMgPSAgICAgICAgIjI2NC0tMjc0IiwKICBtb250aCA9ICAgICAgICBtYXksCiAgeWVhciA9ICAgICAgICAgIjE5NzUiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiVGhlIHBhcGVyIGRlc2NyaWJlcyBhIHdvcmtpbmcgYW5hbHlzaXMgYW5kIGdlbmVyYXRpb24gcHJvZ3JhbSBmb3IgbmF0dXJhbCBsYW5ndWFnZSwgd2hpY2ggaGFuZGxlcyBwYXJhZ3JhcGggbGVuZ3RoIGlucHV0LiBJdHMgY29yZSBpcyBhIHN5c3RlbSBvZiBwcmVmZXJlbnRpYWwgY2hvaWNlIGJldHdlZW4gZGVlcCBzZW1hbnRpYyBwYXR0ZXJucywgYmFzZWQgb24gd2hhdCB3ZSBjYWxsIGBgc2VtYW50aWMgZGVuc2l0eS4nJyBUaGUgc3lzdGVtIGlzIGNvbnRyYXN0ZWQ6ICgxKSB3aXRoIHN5bnRheCBvcmllbnRlZCBsaW5ndWlzdGljIGFwcHJvYWNoZXMsIGFuZCAoMikgd2l0aCB0aGVvcmVtIHByb3ZpbmcgYXBwcm9hY2hlcyB0byB0aGUgdW5kZXJzdGFuZGluZyBwcm9ibGVtLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMxMjMwIChBcnRpZmljaWFsIGludGVsbGlnZW5jZSk7IEM0MjkwIChPdGhlciBjb21wdXRlciB0aGVvcnkpOyBDNzgyMCAoSHVtYW5pdGllcyBjb21wdXRpbmcpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjE7IDczMSIsCiAgY29ycHNvdXJjZSA9ICAgIlN0YW5mb3JkIFVuaXYuLCBTdGFuZm9yZCwgQ0EsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhcnRpZmljaWFsIGludGVsbGlnZW5jZTsgYXV0b21hdGEgdGhlb3J5IC0tLSBDb21wdXRhdGlvbmFsIExpbmd1aXN0aWNzOyBjb21wdXRhdGlvbmFsIGxpbmd1aXN0aWNzOyBkZWVwIHNlbWFudGljIHBhdHRlcm5zOyBnZW5lcmF0aW9uIHByb2dyYW07IGludGVsbGlnZW50IGFuYWx5emVyOyBsYW5ndWFnZTsgbmF0dXJhbCBsYW5ndWFnZTsgcGFyYWdyYXBoIGxlbmd0aDsgc2VtYW50aWMgZGVuc2l0eTsgc3ludGF4IG9yaWVudGVkIGxpbmd1aXN0aWMgYXBwcm9hY2hlczsgc3lzdGVtcyBzY2llbmNlIGFuZCBjeWJlcm5ldGljczsgdHJhbnNsYXRpb24gYW5kIGxpbmd1aXN0aWNzIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtHaWJiczoxOTc1OkFBQiwKICBhdXRob3IgPSAgICAgICAiTi4gRS4gR2liYnMiLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gNDkxOiBCYXNpYyBDeWNsZSBHZW5lcmF0aW9uIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE4IiwKICBudW1iZXIgPSAgICAgICAiNSIsCiAgcGFnZXMgPSAgICAgICAgIjI3NS0tMjc2IChvciAyNzUtLTI3NT8/KSIsCiAgbW9udGggPSAgICAgICAgbWF5LAogIHllYXIgPSAgICAgICAgICIxOTc1IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkIwMjUwIChDb21iaW5hdG9yaWFsIG1hdGhlbWF0aWNzKTsgQzExNjAgKENvbWJpbmF0b3JpYWwgbWF0aGVtYXRpY3MpOyBDNzMxMCAoTWF0aGVtYXRpY3MgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIkRlcHQuIG9mIE1hdGguLCBDb2xsLiBvZiBXaWxsaWFtIGFuZCBNYXJ5LCBXaWxsaWFtc2J1cmcsIFZBLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJiYXNpYzsgQkFTSUMgR0VORVJBVE9SOyBjeWNsZSBnZW5lcmF0aW9uOyBmaW5pdGUgdW5kaXJlY3RlZCBncmFwaDsgZ3JhcGggdGhlb3J5OyBQYXRvbidzIGFsZ29yaXRobTsgUEwvSTsgc3Vicm91dGluZXM7IHZlcnRleCBhZGphY2VuY3kgbWF0cml4IiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtFdmFuczoxOTc1Ok5MRiwKICBhdXRob3IgPSAgICAgICAiRC4gSi4gRXZhbnMgYW5kIE0uIEhhdHpvcG91bG9zIiwKICB0aXRsZSA9ICAgICAgICAiQSBub3RlIG9uIHRoZSB7TFV9IGZhY3Rvcml6YXRpb24gb2YgYSBzeW1tZXRyaWMgbWF0cml4IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE4IiwKICBudW1iZXIgPSAgICAgICAiNSIsCiAgcGFnZXMgPSAgICAgICAgIjI3OC0tMjc5IiwKICBtb250aCA9ICAgICAgICBtYXksCiAgeWVhciA9ICAgICAgICAgIjE5NzUiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICIxNUEyMSAoNjVGMzApIiwKICBNUm51bWJlciA9ICAgICAiNTIgODE1NCIsCiAgbXJyZXZpZXdlciA9ICAgIk1hcnZpbiBNYXJjdXMiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjAyOTBIIChMaW5lYXIgYWxnZWJyYSk7IEM0MTQwIChMaW5lYXIgYWxnZWJyYSkiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBvZiBUZWNobm9sLiwgTG91Z2hib3JvdWdoLCBVSyIsCiAga2V5d29yZHMgPSAgICAgImZhY3Rvcml6YXRpb247IG1hdHJpeCBpbnZlcnNpb247IHNlcGFyYWJsZSBzeXN0ZW1zOyBzeW1tZXRyaWMgbWF0cmljZXM7IHRlc3QgbWF0cmljZXMiLAogIGtleXdvcmRzID0gICAgICJpbnZlcnNpb24gcHJvZ3JhbXM7IGxpbmVhciBlcXVhdGlvbnM7IExVIGZhY3RvcmlzYXRpb247IG1hdHJpeDsgbWF0cml4IGFsZ2VicmE7IHN5bW1ldHJpYyBtYXRyaXg7IHRlc3QgbWF0cmljZXMiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0ZveDoxOTc1Ok1LUywKICBhdXRob3IgPSAgICAgICAiQi4gTC4gRm94IiwKICB0aXRsZSA9ICAgICAgICAiTW9yZSBvbiAkayR0aCBTaG9ydGVzdCBQYXRocyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOCIsCiAgbnVtYmVyID0gICAgICAgIjUiLAogIHBhZ2VzID0gICAgICAgICIyNzktLTI3OSIsCiAgbW9udGggPSAgICAgICAgbWF5LAogIHllYXIgPSAgICAgICAgICIxOTc1IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkIwMjUwIChDb21iaW5hdG9yaWFsIG1hdGhlbWF0aWNzKTsgQjAyNjAgKE9wdGltaXNhdGlvbiB0ZWNobmlxdWVzKTsgQzExNjAgKENvbWJpbmF0b3JpYWwgbWF0aGVtYXRpY3MpOyBDMTE4MCAoT3B0aW1pc2F0aW9uIHRlY2huaXF1ZXMpIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gb2YgTW9udHJlYWwsIE1vbnRyZWFsLCBRdWUuLCBDYW5hZGEiLAogIGtleXdvcmRzID0gICAgICJncmFwaCB0aGVvcnk7IGt0aCBzaG9ydGVzdCBwYXRoczsgTiBub2RlIG5ldHdvcms7IG5ldHdvcmtzOyBub2Rlczsgb3B0aW1pc2F0aW9uIiwKICB0cmVhdG1lbnQgPSAgICAiRyBHZW5lcmFsIFJldmlldyIsCiAgeHhhdXRob3IgPSAgICAgIkIuIEkuIEZveCIsCn0KCkBBcnRpY2xle1dhc3Nlcm1hbjoxOTc1OlBQUCwKICBhdXRob3IgPSAgICAgICAiQS4gSS4gV2Fzc2VybWFuIiwKICB0aXRsZSA9ICAgICAgICAiQSBwcm9ibGVtLWxpc3Qgb2YgcHVibGljIHBvbGljeSBpc3N1ZXMgY29uY2VybmluZyBjb21wdXRlcnMgYW5kIGhlYWx0aCBjYXJlIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE4IiwKICBudW1iZXIgPSAgICAgICAiNSIsCiAgcGFnZXMgPSAgICAgICAgIjI3OS0tMjgwIiwKICBtb250aCA9ICAgICAgICBtYXksCiAgeWVhciA9ICAgICAgICAgIjE5NzUiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzAyMDAgKEdlbmVyYWwgY29tcHV0ZXIgdG9waWNzKTsgQzcxOTAgKE90aGVyIGZpZWxkcyBvZiBidXNpbmVzcyBhbmQgYWRtaW5pc3RyYXRpdmUgY29tcHV0aW5nKTsgQzczMzAgKEJpb2xvZ3kgYW5kIG1lZGljYWwgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIG9mIENhbGlmb3JuaWEsIFNhbiBGcmFuY2lzY28sIENBLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJiaW9tZWRpY2FsIGFwcGxpY2F0aW9ucyBvZiBjb21wdXRlcnM7IGNvbXB1dGVycyBhbmQgaGVhbHRoIGNhcmU7IGVjb25vbWljIGFuZDsgbWVkaWNpbmU7IHB1YmxpYyBwb2xpY3kgaXNzdWVzOyBzb2Npb2xvZ2ljYWwgZWZmZWN0cyIsCiAgdHJlYXRtZW50ID0gICAgIkEgQXBwbGljYXRpb247IEUgRWNvbm9taWM7IEcgR2VuZXJhbCBSZXZpZXciLAp9CgpAQXJ0aWNsZXtNaWxsczoxOTc1OkNOTSwKICBhdXRob3IgPSAgICAgICAiSGFybGFuIEQuIE1pbGxzIiwKICB0aXRsZSA9ICAgICAgICAiQ29ycmlnZW5kdW06IHtgYFRoZSBOZXcgTWF0aCBvZiBDb21wdXRlciBQcm9ncmFtbWluZycnfSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOCIsCiAgbnVtYmVyID0gICAgICAgIjUiLAogIHBhZ2VzID0gICAgICAgICIyODAtLTI4MCIsCiAgbW9udGggPSAgICAgICAgbWF5LAogIHllYXIgPSAgICAgICAgICIxOTc1IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjhBMDUiLAogIE1SbnVtYmVyID0gICAgICI1MSAyMzMzYiIsCiAgbXJyZXZpZXdlciA9ICAgIkUuIElrYXVuaWVrcyIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXkgMjggMTY6MjY6MzYgMTk5NiIsCiAgbm90ZSA9ICAgICAgICAgIlNlZSBcY2l0ZXtNaWxsczoxOTc1Ok5NQ30uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKfQoKQEFydGljbGV7SG9yb3dpdHo6MTk3NTpTQVAsCiAgYXV0aG9yID0gICAgICAgIlN0ZXZlbiBMLiBIb3Jvd2l0eiIsCiAgdGl0bGUgPSAgICAgICAgIlN5bnRhY3RpYyBBbGdvcml0aG0gZm9yIFBlYWsgRGV0ZWN0aW9uIGluIFdhdmVmb3JtcyB3aXRoIEFwcGxpY2F0aW9ucyB0byBDYXJkaW9ncmFwaHkiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTgiLAogIG51bWJlciA9ICAgICAgICI1IiwKICBwYWdlcyA9ICAgICAgICAiMjgxLS0yODUiLAogIG1vbnRoID0gICAgICAgIG1heSwKICB5ZWFyID0gICAgICAgICAiMTk3NSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJQZWFrcyBpbiBhIGRpZ2l0aXplZCB3YXZlZm9ybSBhcmUgZGV0ZWN0ZWQgYnkgYW4gYWxnb3JpdGhtIGluY29ycG9yYXRpbmcgcGllY2V3aXNlIGxpbmVhciBhcHByb3hpbWF0aW9uIGFuZCB0YWJ1bGFyIHBhcnNpbmcgdGVjaG5pcXVlcy4gU2V2ZXJhbCBwYXJhbWV0ZXJzIHNlcnZlIHRvIGlkZW50aWZ5IHRoZSB3YXZlZm9ybSBjb250ZXh0IGVuYWJsaW5nIGFjY3VyYXRlIG1lYXN1cmVtZW50IG9mIHBlYWsgYW1wbGl0dWRlLCBkdXJhdGlvbiwgYW5kIHNoYXBlLiBUaGUgYWxnb3JpdGhtIGlzIG9mIHN1ZmZpY2llbnQgc3BlZWQgdG8gYWxsb3cgb24tbGluZSByZWFsLXRpbWUgcHJvY2Vzc2luZy4gQW4gZXhhbXBsZSBvZiBpdHMgYXBwbGljYXRpb24gaXMgZGVtb25zdHJhdGVkIG9uIGFuIGVsZWN0cm9jYXJkaW9ncmFtLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkE4NzcwRSAoUGF0aWVudCBkaWFnbm9zdGljIG1ldGhvZHMgYW5kIGluc3RydW1lbnRhdGlvbik7IEIwMjkwRiAoSW50ZXJwb2xhdGlvbiBhbmQgZnVuY3Rpb24gYXBwcm94aW1hdGlvbik7IEI3NTEwRCAoQmlvZWxlY3RyaWMgc2lnbmFscyk7IEM0MTMwIChJbnRlcnBvbGF0aW9uIGFuZCBmdW5jdGlvbiBhcHByb3hpbWF0aW9uKTsgQzQyMTAgKEZvcm1hbCBsb2dpYyk7IEM3MzMwIChCaW9sb2d5IGFuZCBtZWRpY2FsIGNvbXB1dGluZykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlByaW5jZXRvbiBVbml2LiwgUHJpbmNldG9uLCBOSiwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFtcGxpdHVkZTsgYXBwbGljYXRpb25zOyBiaW9tZWRpY2FsIGVuZ2luZWVyaW5nIC0tLSBFbGVjdHJvY2FyZGlvZ3JhcGh5OyBjb250ZXh0LWZyZWUgZ3JhbW1hcnM7IGR1cmF0aW9uOyBlbGVjdHJvY2FyZGlvZ3JhbTsgZWxlY3Ryb2NhcmRpb2dyYXBoeTsgcGFyc2luZyB0ZWNobmlxdWVzOyBwYXR0ZXJuIHJlY29nbml0aW9uIHN5c3RlbXM7IHBlYWsgZGV0ZWN0aW9uOyBwaWVjZXdpc2UgbGluZWFyIGFwcHJveGltYXRpb247IHBpZWNld2lzZS1saW5lYXI7IHNoYXBlOyBzeW50YWN0aWMgYWxnb3JpdGhtOyB0YWJ1bGFyOyB0ZWNobmlxdWVzOyB0byBjYXJkaW9ncmFwaHk7IHdhdmVmb3JtIGFuYWx5c2lzOyB3YXZlZm9ybXMiLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uIiwKfQoKQEFydGljbGV7UGZlZmZlcmtvcm46MTk3NTpIUFMsCiAgYXV0aG9yID0gICAgICAgIkNoYXJsZXMgRS4gUGZlZmZlcmtvcm4iLAogIHRpdGxlID0gICAgICAgICJIZXVyaXN0aWMgUHJvYmxlbSBTb2x2aW5nIERlc2lnbiBTeXN0ZW0gZm9yIEVxdWlwbWVudCBvciBGdXJuaXR1cmUgTGF5b3V0cyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOCIsCiAgbnVtYmVyID0gICAgICAgIjUiLAogIHBhZ2VzID0gICAgICAgICIyODYtLTI5NyIsCiAgbW9udGggPSAgICAgICAgbWF5LAogIHllYXIgPSAgICAgICAgICIxOTc1IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlRoZSBEZXNpZ25lciBQcm9ibGVtIFNvbHZlciAoRFBTKSBkZW1vbnN0cmF0ZXMgdGhhdCB0aGUgY29tcHV0ZXIgY2FuIHBlcmZvcm0gc2ltcGxlIGRlc2lnbiB0YXNrcy4gSW4gcGFydGljdWxhciwgaXQgZGVzaWducyBmdXJuaXR1cmUgYW5kIGVxdWlwbWVudCBsYXlvdXRzLiBUaGlzIHRhc2sgd2FzIGNob3NlbiBiZWNhdXNlIGl0IGlzIHNpbXBsZSwgd2VsbCBkZWZpbmVkLCBhbmQgY2hhcmFjdGVyaXN0aWMgb2YgbWFueSBkZXNpZ24gdGFza3MgaW4gYXJjaGl0ZWN0dXJlLCBlbmdpbmVlcmluZywgdXJiYW4gcGxhbm5pbmcsIGFuZCBuYXR1cmFsIHJlc291cmNlIG1hbmFnZW1lbnQuIFRoZXNlIHNwYWNlIHBsYW5uaW5nIHRhc2tzIHVzdWFsbHkgaW52b2x2ZSBtYW5pcHVsYXRpbmcgdHdvLWRpbWVuc2lvbmFsIHJlcHJlc2VudGF0aW9ucyBvZiBvYmplY3RzIHRvIGNyZWF0ZSBmZWFzaWJsZSBvciBvcHRpbWFsIHNvbHV0aW9ucyBmb3IgcHJvYmxlbXMgaW52b2x2aW5nIHRvcG9sb2dpY2FsIGFuZCBtZXRyaWMgc3BhdGlhbCBjb25zdHJhaW50cy4gVGhlIHBhcGVyIGRlc2NyaWJlcyBleHRlbnNpdmUgdGVzdHMgcGVyZm9ybWVkIG9uIHRoZSBwcm9ncmFtLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMxMjMwIChBcnRpZmljaWFsIGludGVsbGlnZW5jZSk7IEM3ODAwIChPdGhlciBjb21wdXRlciBhcHBsaWNhdGlvbnMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MzE7IDkwMSIsCiAgY29ycHNvdXJjZSA9ICAgIkV2YW5zIGFuZCBTdXRoZXJsYW5kIENvbXB1dGVyIENvcnAuLCBTdW5ueXZhbGUsIENBLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYXJjaGl0ZWN0dXJlOyBjb21wdXRlciBncmFwaGljczsgY29tcHV0ZXItYWlkZWQgZGVzaWduOyBkZXNpZ247IGVuZ2luZWVyaW5nOyBlcXVpcG1lbnQgbGF5b3V0OyBmdXJuaXR1cmUgbGF5b3V0czsgaGV1cmlzdGljOyBoZXVyaXN0aWMgcHJvYmxlbSBzb2x2aW5nIGRlc2lnbiBzeXN0ZW07IG1hbmFnZW1lbnQ7IG1ldHJpYzsgbmF0dXJhbCByZXNvdXJjZTsgb3B0aW1hbCBzb2x1dGlvbnM7IHByb2JsZW0gc29sdmVyOyBwcm9ncmFtOyBwcm9ncmFtbWluZzsgc3BhY2UgcGxhbm5pbmcgdGFza3M7IHNwYXRpYWwgY29uc3RyYWludHM7IHN5c3RlbXMgc2NpZW5jZSBhbmQgY3liZXJuZXRpY3MgLS0tIEhldXJpc3RpYyBQcm9ncmFtbWluZzsgdXJiYW4gcGxhbm5pbmciLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0tvcmZoYWdlOjE5NzU6TVNPLAogIGF1dGhvciA9ICAgICAgICJSb2JlcnQgUi4gS29yZmhhZ2UgYW5kIERhdmlkIFcuIE1hdHVsYSIsCiAgdGl0bGUgPSAgICAgICAgIk1vcmUgb24gdGhlIHtTYWxhemFyfSBhbmQge09ha2ZvcmR9IFBhcGVyIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE4IiwKICBudW1iZXIgPSAgICAgICAiNSIsCiAgcGFnZXMgPSAgICAgICAgIjMwMy0tMzAzIiwKICBtb250aCA9ICAgICAgICBtYXksCiAgeWVhciA9ICAgICAgICAgIjE5NzUiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJTYXQgSmFuIDE4IDE1OjA4OjA3IDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L1RoZW9yeS9ncmFwaC5jb2xvcmluZy5iaWIiLAogIG5vdGUgPSAgICAgICAgICJTZWUgXGNpdGV7U2FsYXphcjoxOTc0OkdGUyxLb3JmaGFnZToxOTc1OlNPLEdhcmV5OjE5NzU6U099IiwKICBrZXl3b3JkcyA9ICAgICAiZ3JhcGggY29sb3JpbmciLAp9CgpAQXJ0aWNsZXtHaWJiczoxOTc1OkFBRywKICBhdXRob3IgPSAgICAgICAiTi4gRS4gR2liYnMiLAogIHRpdGxlID0gICAgICAgICJ7QUNNfSBBbGdvcml0aG0gNDkyOiBHZW5lcmF0aW9uIG9mIEFsbCB0aGUgQ3ljbGVzIG9mIGEgR3JhcGggZnJvbSBhIFNldCBvZiBCYXNpYyBDeWNsZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTgiLAogIG51bWJlciA9ICAgICAgICI2IiwKICBwYWdlcyA9ICAgICAgICAiMzEwLS0zMTAiLAogIG1vbnRoID0gICAgICAgIGp1biwKICB5ZWFyID0gICAgICAgICAiMTk3NSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNzMxMCAoTWF0aGVtYXRpY3MgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIkRlcHQuIG9mIE1hdGguLCBDb2xsLiBvZiBXaWxsaWFtIGFuZCBNYXJ5LCBXaWxsaWFtc2J1cmcsIFZBLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJiYXNpYyBjeWNsZXM7IGN5Y2xlczsgZ2VuZXJhdGlvbjsgZ3JhcGg7IGdyYXBoIHRoZW9yeTsgUEwvSTsgc3Vicm91dGluZXMiLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle1Bob25nOjE5NzU6SUNHLAogIGF1dGhvciA9ICAgICAgICJCdWkgVHVvbmcgUGhvbmciLAogIHRpdGxlID0gICAgICAgICJJbGx1bWluYXRpb24gZm9yIENvbXB1dGVyIEdlbmVyYXRlZCBQaWN0dXJlcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOCIsCiAgbnVtYmVyID0gICAgICAgIjYiLAogIHBhZ2VzID0gICAgICAgICIzMTEtLTMxNyIsCiAgbW9udGggPSAgICAgICAganVuLAogIHllYXIgPSAgICAgICAgICIxOTc1IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9HcmFwaGljcy9pbWFnZXIvaW1hZ2VyLjc1LmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIlRoZSBxdWFsaXR5IG9mIGNvbXB1dGVyIGdlbmVyYXRlZCBpbWFnZXMgb2YgdGhyZWUtZGltZW5zaW9uYWwgc2NlbmVzIGRlcGVuZHMgb24gdGhlIHNoYWRpbmcgdGVjaG5pcXVlIHVzZWQgdG8gcGFpbnQgdGhlIG9iamVjdHMgb24gdGhlIGNhdGhvZGUtcmF5IHR1YmUgc2NyZWVuLiBUaGUgc2hhZGluZyBhbGdvcml0aG0gaXRzZWxmIGRlcGVuZHMgaW4gcGFydCBvbiB0aGUgbWV0aG9kIGZvciBtb2RlbGluZyB0aGUgb2JqZWN0LCB3aGljaCBhbHNvIGRldGVybWluZXMgdGhlIGhpZGRlbiBzdXJmYWNlIGFsZ29yaXRobS4gVGhlIHZhcmlvdXMgbWV0aG9kcyBvZiBvYmplY3QgbW9kZWxpbmcsIHNoYWRpbmcsIGFuZCBoaWRkZW4gc3VyZmFjZSByZW1vdmFsIGFyZSB0aHVzIHN0cm9uZ2x5IGludGVyY29ubmVjdGVkLiBTZXZlcmFsIHNoYWRpbmcgdGVjaG5pcXVlcyBjb3JyZXNwb25kaW5nIHRvIGRpZmZlcmVudCBtZXRob2RzIG9mIG9iamVjdCBtb2RlbGluZyBhbmQgdGhlIHJlbGF0ZWQgaGlkZGVuIHN1cmZhY2UgYWxnb3JpdGhtcyBhcmUgcHJlc2VudGVkIGhlcmUuIEh1bWFuIHZpc3VhbCBwZXJjZXB0aW9uIGFuZCB0aGUgZnVuZGFtZW50YWwgbGF3cyBvZiBvcHRpY3MgYXJlIGNvbnNpZGVyZWQgaW4gdGhlIGRldmVsb3BtZW50IG9mIGEgc2hhZGluZyBydWxlIHRoYXQgcHJvdmlkZXMgYmV0dGVyIHF1YWxpdHkgYW5kIGluY3JlYXNlZCByZWFsaXNtIGluIGdlbmVyYXRlZCBpbWFnZXMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzU1NDAgKFRlcm1pbmFscyBhbmQgZ3JhcGhpYyBkaXNwbGF5cykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMzsgNzQxIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gb2YgVXRhaCwgU2FsdCBMYWtlIENpdHksIFVULCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgZ2VuZXJhdGVkIGltYWdlczsgY29tcHV0ZXIgZ3JhcGhpY3M7IGhpZGRlbiBzdXJmYWNlIGFsZ29yaXRobTsgaW1hZ2UgcHJvY2Vzc2luZzsgUGhvbmc7IHNoYWRpbmc7IHNoYWRpbmcgYWxnb3JpdGhtOyB0ZWNobmlxdWU7IHRocmVlIGRpbWVuc2lvbmFsIHNjZW5lcyIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7THVtOjE5NzU6Q09BLAogIGF1dGhvciA9ICAgICAgICJWLiBZLiBMdW0gYW5kIE0uIEUuIFNlbmtvIGFuZCBDLiBQLiBXYW5nIGFuZCBILiBMaW5nIiwKICB0aXRsZSA9ICAgICAgICAiQSBDb3N0IE9yaWVudGVkIEFsZ29yaXRobSBmb3IgRGF0YSBTZXQgQWxsb2NhdGlvbiBpbiBTdG9yYWdlIEhpZXJhcmNoaWVzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE4IiwKICBudW1iZXIgPSAgICAgICAiNiIsCiAgcGFnZXMgPSAgICAgICAgIjMxOC0tMzIyIiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzUiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0RhdGFiYXNlL1dpZWRlcmhvbGQuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiVGhlIHRyZW5kIGluIGNvbXB1dGVyIHN5c3RlbXMgaXMgdG93YXJkIHRoZSB1c2Ugb2YgbXVsdGlsZXZlbCBzdG9yYWdlIGhpZXJhcmNoeSBzeXN0ZW1zLiBJbiB0aGlzIGtpbmQgb2Ygc3lzdGVtLCBkYXRhIHNldCBhbGxvY2F0aW9uIGlzIHVzdWFsbHkgYmFzZWQgb24gcXVhbGl0YXRpdmUsIGFkIGhvYyBkZWNpc2lvbnMuIElmIGF1dG9tYXRpYyBkYXRhIG1pZ3JhdGlvbiBpcyB1c2VkIGF0IGFsbCwgdGhlIGRhdGEgc2V0cyBhcmUgYWxsb2NhdGVkIHRvIHNsb3dlciBsZXZlbCBtZW1vcmllcyBzaW1wbHkgb24gdGhlIGJhc2lzIG9mIGFuIGFkIGhvYyB0aHJlc2hvbGQgYWdhaW5zdCBhIHRpbWUgaW50ZXJ2YWwgc2luY2UgdGhlIGxhc3QgdXNlLiBUbyBhY2hpZXZlIHF1YW50aXRhdGl2ZSwgbW9yZSBvcHRpbWFsIGFsbG9jYXRpb24sIGJvdGggc3RvcmFnZSBjb3N0IGFuZCBhY2Nlc3MgdGltZSBjb3N0IG11c3QgYmUgY2FyZWZ1bGx5IGFuYWx5emVkLiBUaGlzIHBhcGVyIHByZXNlbnRzIGFuIGFwcHJvcHJpYXRlIGF1dG9tYXRpYyBhbGdvcml0aG0gd2hpY2ggaW5jbHVkZXMgbWFueSBzaWduaWZpY2FudCBkZXRhaWxzIG9mIGJvdGggY29zdHMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiSUJNIFJlcy4gTGFiLiwgU2FuIEpvc2UsIENBLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYWxnb3JpdGhtOyBjb21wdXRlciBvcGVyYXRpbmcgc3lzdGVtczsgY29zdCBvcmllbnRlZDsgZGF0YSBtaWdyYXRpb247IGRhdGEgc2V0IGFsbG9jYXRpb247IGRhdGEgc3RhZ2luZzsgZGF0YSBzdG9yYWdlOyBoaWVyYXJjaGllczsgc3RvcmFnZTsgc3RvcmFnZSBhbGxvY2F0aW9uIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtCYWJpY2g6MTk3NTpTRVMsCiAgYXV0aG9yID0gICAgICAgIkFsYW4gRi4gQmFiaWNoIGFuZCBKb2huIEdyYXNvbiBhbmQgRGF2aWQgTC4gUGFybmFzIiwKICB0aXRsZSA9ICAgICAgICAiU2lnbmlmaWNhbnQgRXZlbnQgU2ltdWxhdGlvbiIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOCIsCiAgbnVtYmVyID0gICAgICAgIjYiLAogIHBhZ2VzID0gICAgICAgICIzMjMtLTMyOSIsCiAgbW9udGggPSAgICAgICAganVuLAogIHllYXIgPSAgICAgICAgICIxOTc1IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlRoaXMgcGFwZXIgY29tcGFyZXMgYSBuZXcgbWV0aG9kIG9mIHNpbXVsYXRpb24gb3JnYW5pemF0aW9uLCBjYWxsZWQgdGhlIHNpZ25pZmljYW50IGV2ZW50IG1ldGhvZCwgd2l0aCBhbiBvbGQgb25lLCBjYWxsZWQgdGhlIGNsb2NrIHB1bHNlIG1ldGhvZCwgdXNpbmcgYXMgZXhhbXBsZXMgdHdvIGF1dG9tb2JpbGUgdHJhZmZpYyBtb2RlbHMuIFRoZSBzaWduaWZpY2FudCBldmVudCBtZXRob2QgaXMgZm91bmQgdG8gYmUgbW9yZSBlZmZpY2llbnQgdGhhbiB0aGUgY2xvY2sgcHVsc2UgbWV0aG9kIGF0IGxvdyBsZXZlbHMgb2Ygc3lzdGVtIGludGVyYWN0aW9uIGFuZCBsZXNzIGVmZmljaWVudCBhdCBoaWdoIGxldmVscy4gQSBzaW1wbGUgbWF0aGVtYXRpY2FsIG1vZGVsIGZvciB0aGUgdHJhZGUtb2ZmIGluIHRoZSByZWxhdGl2ZSBydW5uaW5nIHRpbWUgb2YgdGhlIHR3byBtZXRob2RzIGlzIGRldmVsb3BlZC4gVGhlIG1vZGVsIGFpZHMgaW4gY2hvb3NpbmcgYmV0d2VlbiB0aGUgdHdvIHNpbXVsYXRpb24gbWV0aG9kcyBmb3IgYSBwYXJ0aWN1bGFyIGV4cGVyaW1lbnQuIEl0IGlzIGNvbmNsdWRlZCB0aGF0IHRoZSBzaWduaWZpY2FudCBldmVudCBtZXRob2QgY2FuIGJlIG9mIHZhbHVlIGluIHRoZSBzaW11bGF0aW9uIG9mIHNvbWUgc3lzdGVtcyB3aGVuIGNvbXB1dGF0aW9uYWwgZWZmaWNpZW5jeSBpcyBvZiBzdWZmaWNpZW50IGltcG9ydGFuY2UuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMTAgKFN5c3RlbXMgYW5hbHlzaXMgYW5kIHByb2dyYW1taW5nKTsgQzc4MDAgKE90aGVyIGNvbXB1dGVyIGFwcGxpY2F0aW9ucykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIkNhcm5lZ2llLU1lbGxvbiBVbml2LiwgUGl0dHNidXJnLCBQQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNsb2NrIHB1bHNlIG1vZGVsczsgY29tcHV0YXRpb25hbCBlZmZpY2llbmN5OyBjb21wdXRlciBzaW11bGF0aW9uOyBlZmZpY2llbnQ7IHNpZ25pZmljYW50IGV2ZW50IG1ldGhvZDsgc2ltdWxhdGlvbiIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7RGV3YXI6MTk3NTpJVEMsCiAgYXV0aG9yID0gICAgICAgIlJvYmVydCBCLiBLLiBEZXdhciIsCiAgdGl0bGUgPSAgICAgICAgIkluZGlyZWN0IFRocmVhZGVkIENvZGUiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTgiLAogIG51bWJlciA9ICAgICAgICI2IiwKICBwYWdlcyA9ICAgICAgICAiMzMwLS0zMzEiLAogIG1vbnRoID0gICAgICAgIGp1biwKICB5ZWFyID0gICAgICAgICAiMTk3NSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJBbiBlZmZpY2llbnQgYXJyYW5nZW1lbnQgZm9yIGludGVycHJldGl2ZSBjb2RlIGlzIGRlc2NyaWJlZC4gSXQgaXMgcmVsYXRlZCB0byBCZWxsJ3Mgbm90aW9uIG9mIHRocmVhZGVkIGNvZGUgYnV0IHJlcXVpcmVzIGxlc3Mgc3BhY2UgYW5kIGlzIG1vcmUgYW1lbmFibGUgdG8gbWFjaGluZSBpbmRlcGVuZGVudCBpbXBsZW1lbnRhdGlvbnMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMTAgKFN5c3RlbXMgYW5hbHlzaXMgYW5kIHByb2dyYW1taW5nKTsgQzYxNTBDIChDb21waWxlcnMsIGludGVycHJldGVycyBhbmQgb3RoZXIgcHJvY2Vzc29ycykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIklsbGlub2lzIEluc3QuIG9mIFRlY2hub2wuLCBDaGljYWdvLCBJTCwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvZGUgZ2VuZXJhdGlvbjsgY29kZXMsIHN5bWJvbGljOyBpbXBsZW1lbnRhdGlvbnM7IGluZGlyZWN0IHRocmVhZGVkIGNvZGU7IGludGVycHJldGl2ZSBjb2RlOyBpbnRlcnByZXRvcnM7IG1hY2hpbmUgaW5kZXBlbmRlbnQ7IHByb2dyYW0gaW50ZXJwcmV0ZXJzOyBwcm9ncmFtbWluZzsgU05PQk9MOyBTTk9CT0w0OyBTUElUQk9MOyB0aHJlYWRlZCBjb2RlIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtDcmFuc3RvbjoxOTc1OlNSUywKICBhdXRob3IgPSAgICAgICAiQmVuIENyYW5zdG9uIGFuZCBSaWNrIFRob21hcyIsCiAgdGl0bGUgPSAgICAgICAgIlNpbXBsaWZpZWQgUmVjb21iaW5hdGlvbiBTY2hlbWUgZm9yIHRoZSB7Rmlib25hY2NpfSBCdWRkeSBTeXN0ZW0iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTgiLAogIG51bWJlciA9ICAgICAgICI2IiwKICBwYWdlcyA9ICAgICAgICAiMzMxLS0zMzIiLAogIG1vbnRoID0gICAgICAgIGp1biwKICB5ZWFyID0gICAgICAgICAiMTk3NSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJBIHNpbXBsaWZpZWQgcmVjb21iaW5hdGlvbiBzY2hlbWUgZm9yIHRoZSBGaWJvbmFjY2kgYnVkZHkgc3lzdGVtIHdoaWNoIHJlcXVpcmVzIG5laXRoZXIgdGFibGVzIG5vciByZXBldGl0aXZlIGNhbGN1bGF0aW9ucyBhbmQgdXNlcyBvbmx5IHR3byBhZGRpdGlvbmFsIGJpdHMgcGVyIGJ1ZmZlciBpcyBwcmVzZW50ZWQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gb2YgTWFyeWxhbmQsIENvbGxlZ2UgUGFyaywgTUQsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBvcGVyYXRpbmcgc3lzdGVtczsgZHluYW1pYyBzdG9yYWdlIGFsbG9jYXRpb247IEZpYm9uYWNjaSBidWRkeSBzeXN0ZW07IHNpbXBsaWZpZWQgcmVjb21iaW5hdGlvbiBzY2hlbWU7IHN0b3JhZ2UgYWxsb2NhdGlvbiIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7QWhvOjE5NzU6RVNNLAogIGF1dGhvciA9ICAgICAgICJBbGZyZWQgVi4gQWhvIGFuZCBNYXJnYXJldCBKLiBDb3Jhc2ljayIsCiAgdGl0bGUgPSAgICAgICAgIkVmZmljaWVudCBTdHJpbmcgTWF0Y2hpbmc6IGFuIEFpZCB0byBCaWJsaW9ncmFwaGljIFNlYXJjaCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOCIsCiAgbnVtYmVyID0gICAgICAgIjYiLAogIHBhZ2VzID0gICAgICAgICIzMzMtLTM0MCIsCiAgbW9udGggPSAgICAgICAganVuLAogIHllYXIgPSAgICAgICAgICIxOTc1IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjhBNTAiLAogIE1SbnVtYmVyID0gICAgICI1MSA3MzkzIiwKICBtcnJldmlld2VyID0gICAiSy4gSC4gVi4gQm9vdGgiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L01pc2MvcHJvdGVpbi5wYXR0ZXJuLmJpYjsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9PYmplY3QvTmllcnN0cmFzei5iaWIiLAogIGFic3RyYWN0ID0gICAgICJUaGlzIHBhcGVyIGRlc2NyaWJlcyBhIHNpbXBsZSwgZWZmaWNpZW50IGFsZ29yaXRobSB0byBsb2NhdGUgYWxsIG9jY3VycmVuY2VzIG9mIGFueSBvZiBhIGZpbml0ZSBudW1iZXIgb2Yga2V5d29yZHMgaW4gYSBzdHJpbmcgb2YgdGV4dC4gVGhlIGFsZ29yaXRobSBjb25zaXN0cyBvZiBjb25zdHJ1Y3RpbmcgYSBmaW5pdGUgc3RhdGUgcGF0dGVybiBtYXRjaGluZyBtYWNoaW5lIGZyb20gdGhlIGtleXdvcmRzIGFuZCB0aGVuIHVzaW5nIHRoZSBwYXR0ZXJuIG1hdGNoaW5nIG1hY2hpbmUgdG8gcHJvY2VzcyB0aGUgdGV4dCBzdHJpbmcgaW4gYSBzaW5nbGUgcGFzcy4gQ29uc3RydWN0aW9uIG9mIHRoZSBwYXR0ZXJuIG1hdGNoaW5nIG1hY2hpbmUgdGFrZXMgdGltZSBwcm9wb3J0aW9uYWwgdG8gdGhlIHN1bSBvZiB0aGUgbGVuZ3RocyBvZiB0aGUga2V5d29yZHMuIFRoZSBudW1iZXIgb2Ygc3RhdGUgdHJhbnNpdGlvbnMgbWFkZSBieSB0aGUgcGF0dGVybiBtYXRjaGluZyBtYWNoaW5lIGluIHByb2Nlc3NpbmcgdGhlIHRleHQgc3RyaW5nIGlzIGluZGVwZW5kZW50IG9mIHRoZSBudW1iZXIgb2Yga2V5d29yZHMuIFRoZSBhbGdvcml0aG0gaGFzIGJlZW4gdXNlZCB0byBpbXByb3ZlIHRoZSBzcGVlZCBvZiBhIGxpYnJhcnkgYmlibGlvZ3JhcGhpYyBzZWFyY2ggcHJvZ3JhbSBieSBhIGZhY3RvciBvZiA1IHRvIDEwLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbik7IEM3MjUwIChJbmZvcm1hdGlvbiBzdG9yYWdlIGFuZCByZXRyaWV2YWwpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjE7IDcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIkJlbGwgTGFicy4sIE11cnJheSBIaWxsLCBOSiwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFsZ29yaXRobTsgYXV0b21hdGEgdGhlb3J5IC0tLSBGaW5pdGUgQXV0b21hdGE7IGJpYmxpb2dyYXBoaWMgc2VhcmNoOyBjb21wdXRhdGlvbmFsIGNvbXBsZXhpdHkuOyBlZmZpY2llbnQ7IGZpbml0ZSBzdGF0ZSBtYWNoaW5lczsgZmluaXRlIHN0YXRlIHBhdHRlcm4gbWF0Y2hpbmc7IGluZm9ybWF0aW9uIHJldHJpZXZhbDsgaW5mb3JtYXRpb24gcmV0cmlldmFsIHN5c3RlbXM7IGtleXdvcmRzOyBrZXl3b3JkcyBhbmQgcGhyYXNlczsgcGF0dGVybnMgVU5JWCBzZWFyY2hpbmc7IHN0cmluZyBtYXRjaGluZzsgc3RyaW5nIHBhdHRlcm4gbWF0Y2hpbmc7IHRleHQ7IHRleHQgZWRpdGluZzsgdGV4dC1lZGl0aW5nIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtIaXJzY2hiZXJnOjE5NzU6TFNBLAogIGF1dGhvciA9ICAgICAgICJELiBTLiBIaXJzY2hiZXJnIiwKICB0aXRsZSA9ICAgICAgICAiQSBMaW5lYXIgU3BhY2UgQWxnb3JpdGhtIGZvciBDb21wdXRpbmcgTWF4aW1hbCBDb21tb24gU3Vic2VxdWVuY2VzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE4IiwKICBudW1iZXIgPSAgICAgICAiNiIsCiAgcGFnZXMgPSAgICAgICAgIjM0MS0tMzQzIiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzUiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2OEExMCAoNjhBMjApIiwKICBNUm51bWJlciA9ICAgICAiNTEgMTIwMTkiLAogIG1ycmV2aWV3ZXIgPSAgICJDbGF1ZGUgQmVuemFrZW4iLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L01pc2MvcHJvdGVpbi5wYXR0ZXJuLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIlRoZSBwcm9ibGVtIG9mIGZpbmRpbmcgYSBsb25nZXN0IGNvbW1vbiBzdWJzZXF1ZW5jZSBvZiB0d28gc3RyaW5ncyBoYXMgYmVlbiBzb2x2ZWQgaW4gcXVhZHJhdGljIHRpbWUgYW5kIHNwYWNlLiBBbiBhbGdvcml0aG0gaXMgcHJlc2VudGVkIHdoaWNoIHdpbGwgc29sdmUgdGhpcyBwcm9ibGVtIGluIHF1YWRyYXRpYyB0aW1lIGFuZCBpbiBsaW5lYXIgc3BhY2UuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMzAgKERhdGEgaGFuZGxpbmcgdGVjaG5pcXVlcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29tbWVudCA9ICAgICAgIkFsZ29yaXRobXMgYXJlIGdpdmVuIHRoYXQgc29sdmUgdGhlIGxvbmdlc3QgY29tbW9uIHN1YnNlcXVlbmNlIHByb2JsZW0gaW4gcXVhZHJhdGljIHRpbWUgYW5kIGxpbmVhciBzcGFjZS4gUHJldmlvdXNseSBhbGdvcml0aG1zIGZvciB0aGlzIHByb2JsZW0gdXNlZCBxdWFkcmF0aWMgdGltZSBhbmQgcXVhZHJhdGljIHNwYWNlLiIsCiAgY29ycHNvdXJjZSA9ICAgIlByaW5jZXRvbiBVbml2LiwgUHJpbmNldG9uLCBOWSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIHByb2dyYW1taW5nOyBjb21wdXRpbmc7IGRhdGEgaGFuZGxpbmc7IGVkaXRpbmc7IGxpbmVhciBzcGFjZTsgbGluZWFyIHNwYWNlIGFsZ29yaXRobTsgbG9uZ2VzdCBjb21tb24gc3Vic2VxdWVuY2U7IG1heGltYWwgY29tbW9uOyBxdWFkcmF0aWMgdGltZTsgc3RyaW5nIGNvcnJlY3Rpb247IHN1YnNlcXVlbmNlOyBzdWJzZXF1ZW5jZXM7IHR3byBzdHJpbmdzIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtTb3VsZToxOTc1OkFBQiwKICBhdXRob3IgPSAgICAgICAiU3RlcGhlbiBTb3VsZSIsCiAgdGl0bGUgPSAgICAgICAgIkFkZGl0aW9uIGluIGFuIEFyYml0cmFyeSBCYXNlIFdpdGhvdXQgUmFkaXggQ29udmVyc2lvbiIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOCIsCiAgbnVtYmVyID0gICAgICAgIjYiLAogIHBhZ2VzID0gICAgICAgICIzNDQtLTM0NiIsCiAgbW9udGggPSAgICAgICAganVuLAogIHllYXIgPSAgICAgICAgICIxOTc1IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9UaGVvcnkvU2VpZmVyYXMvMTk3NS5iaWIiLAogIGFic3RyYWN0ID0gICAgICJUaGlzIHBhcGVyIHByZXNlbnRzIGEgZ2VuZXJhbGl6YXRpb24gb2YgYW4gb2xkIHByb2dyYW1taW5nIHRlY2huaXF1ZTsgdXNpbmcgaXQsIG9uZSBtYXkgYWRkIGFuZCBzdWJ0cmFjdCBudW1iZXJzIHJlcHJlc2VudGVkIGluIGFueSByYWRpeCwgaW5jbHVkaW5nIGEgbWl4ZWQgcmFkaXgsIGFuZCBzdG9yZWQgb25lIGRpZ2l0IHBlciBieXRlIGluIGJ5dGVzIG9mIHN1ZmZpY2llbnQgc2l6ZS4gUmFkaXggY29udmVyc2lvbiBpcyB1bm5lY2Vzc2FyeSwgbm8gbG9vcGluZyBpcyByZXF1aXJlZCwgYW5kIG51bWJlcnMgbWF5IGV2ZW4gYmUgc3RvcmVkIGluIGEgZGlzcGxheSAoSS9PKSBmb3JtYXQuIEFwcGxpY2F0aW9ucyB0byBDb2JvbCwgTUlYLCBhbmQgaGV4YWRlY2ltYWwgc3VtcyBhcmUgZGlzY3Vzc2VkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM1MjMwIChEaWdpdGFsIGFyaXRobWV0aWMgbWV0aG9kcyk7IEM2MTMwIChEYXRhIGhhbmRsaW5nIHRlY2huaXF1ZXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjM7IDkyMSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIG9mIENhbGdhcnksIENhbGdhcnksIEFsdGEuLCBDYW5hZGEiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYWRkOyBhZGRpdGlvbjsgYXJiaXRyYXJ5IGJhc2U7IGFyYml0cmFyeSByYWRpeCBhcml0aG1ldGljOyBDb2JvbCBkaXNwbGF5IGFyaXRobWV0aWM7IGNvbXB1dGVyIHN5c3RlbXMgcHJvZ3JhbW1pbmc7IGRhdGEgaGFuZGxpbmc7IGRlY2ltYWwgYXJpdGhtZXRpYzsgZGlnaXRhbCBhcml0aG1ldGljOyBtYXRoZW1hdGljYWwgdGVjaG5pcXVlcyAtLS0gRGlnaXRhbCBBcml0aG1ldGljOyBNSVggYXJpdGhtZXRpYzsgbWl4ZWQgcmFkaXggYXJpdGhtZXRpYzsgbnVtYmVyczsgcHJvZ3JhbW1pbmc7IHJhZGl4IGNvbnZlcnNpb247IHN1YnRyYWN0OyBzdWJ0cmFjdGlvbjsgd2l0aG91dCByYWRpeCBjb252ZXJzaW9uIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtIYXJwZXI6MTk3NTpTLAogIGF1dGhvciA9ICAgICAgICJMLiBILiBIYXJwZXIgYW5kIFQuIEguIFBheW5lIGFuZCBKLiBFLiBTYXZhZ2UgYW5kIEUuIFN0cmF1cyIsCiAgdGl0bGUgPSAgICAgICAgIlNvcnRpbmcgeyRYICsgWSR9IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE4IiwKICBudW1iZXIgPSAgICAgICAiNiIsCiAgcGFnZXMgPSAgICAgICAgIjM0Ny0tMzUwIChvciAzNDctLTM0OT8/KSIsCiAgbW9udGggPSAgICAgICAganVuLAogIHllYXIgPSAgICAgICAgICIxOTc1IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjhBMjAiLAogIE1SbnVtYmVyID0gICAgICI1MSAxNDY0MSIsCiAgbXJyZXZpZXdlciA9ICAgIkZvcmJlcyBELiBMZXdpcyIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L1RoZW9yeS9TZWlmZXJhcy8xOTc1LmJpYiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MjQwIChQcm9ncmFtbWluZyBhbmQgYWxnb3JpdGhtIHRoZW9yeSk7IEM2MTMwIChEYXRhIGhhbmRsaW5nIHRlY2huaXF1ZXMpIiwKICBjb3Jwc291cmNlID0gICAiTUlULCBEZXB0LiBvZiBNYXRoLiwgQ2FtYnJpZGdlLCBNQSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiYmluYXJ5IGNvbXBhcmlzb25zOyBjb21wdXRhdGlvbmFsIGNvbXBsZXhpdHk7IGNvbXB1dGluZyBtb2RlbHM7IGRhdGEgbW9kZWxpbmc7IG1lcmdlIHNvcnRpbmciLAogIGtleXdvcmRzID0gICAgICJjb21wdXRhdGlvbiB0aW1lOyBjb21wdXRhdGlvbmFsIGNvbXBsZXhpdHk7IG1lcmdlIHNvcnRpbmc7IG1lcmdpbmc7IHNldHMgb2YgbnVtYmVyczsgc29ydGluZyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7V3ltYW46MTk3NTpJRVMsCiAgYXV0aG9yID0gICAgICAgIkYuIFBhdWwgV3ltYW4iLAogIHRpdGxlID0gICAgICAgICJJbXByb3ZlZCBFdmVudC1TY2FubmluZyBNZWNoYW5pc21zIGZvciBEaXNjcmV0ZSBFdmVudCBTaW11bGF0aW9uIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE4IiwKICBudW1iZXIgPSAgICAgICAiNiIsCiAgcGFnZXMgPSAgICAgICAgIjM1MC0tMzUzIiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzUiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0Rpc3RyaWJ1dGVkL1FMRC8xOTc1LmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIlNpbXVsYXRpb24gbW9kZWxzIG9mIGxhcmdlLCBjb21wbGV4IGBgcmVhbC13b3JsZCcnIGFwcGxpY2F0aW9ucyBoYXZlIG9jY2FzaW9uYWxseSBlYXJuZWQgdGhlIHJlcHV0YXRpb24gb2YgZWF0aW5nIHVwIGhvdXJzIG9mIGNvbXB1dGVyIHRpbWUuIFRoaXMgcHJvYmxlbSBtYXkgYmUgYXR0cmlidXRlZCBpbiBwYXJ0IHRvIGRpZmZpY3VsdGllcyBzdWNoIGFzIHNsb3cgc3RvY2hhc3RpYyBjb252ZXJnZW5jZS4gSG93ZXZlciwgYW4gYWRkaXRpb25hbCBwcm9ibGVtIGxpZXMgaW4gdGhlIGZhY3QgdGhhdCBhIHNpZ25pZmljYW50IGFtb3VudCBvZiBib29ra2VlcGluZyB0aW1lIGlzIHJlcXVpcmVkIHRvIGtlZXAgZnV0dXJlIGV2ZW50cyBpbiB0aGVpciBwcm9wZXIgc2VxdWVuY2UuIFRoaXMgcGFwZXIgcHJlc2VudHMgYSBtZXRob2QgZm9yIHNpZ25pZmljYW50bHkgcmVkdWNpbmcgdGhlIHRpbWUgc3BlbnQgc2Nhbm5pbmcgZnV0dXJlIGV2ZW50IGxpc3RzIGluIGRpc2NyZXRlIGV2ZW50IHNpbXVsYXRpb25zLiBccGFyIFRoZXJlIG1vZGVscyBhcmUgcHJlc2VudGVkLCBhbGwgb2Ygd2hpY2ggaW1wcm92ZSBpbiBlZmZlY3RpdmVuZXNzIGFzIHRoZSBldmVudHMtbGlzdCBzY2FuIHByb2JsZW0gYmVjb21lcyBtb3JlIGJ1cmRlbnNvbWUuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzc4MDAgKE90aGVyIGNvbXB1dGVyIGFwcGxpY2F0aW9ucykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIkJlY2h0ZWwgSW5jLiwgU2FuIEZyYW5jaXNjbywgQ0EsIFVTQSIsCiAgY291bnRyeSA9ICAgICAgIlVTQSIsCiAgZGVzY3JpcHRvcnMgPSAgIlNpbXVsYXRpb247IHRpbWUgY29udHJvbDsiLAogIGVudW0gPSAgICAgICAgICIzMzUyIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIHNpbXVsYXRpb247IGRpc2NyZXRlIGV2ZW50IHNpbXVsYXRpb247IGV2ZW50IHNjYW5uaW5nIG1lY2hhbmlzbXM7IHNpbXVsYXRpb24iLAogIGtleXdvcmRzID0gICAgICJib29ra2VlcGluZyB0aW1lOyBkaXNjcmV0ZSBldmVudCBzaW11bGF0aW9uOyBzY2FubmluZzsgc2ltdWxhdGlvbiIsCiAgbGFuZ3VhZ2UgPSAgICAgIkVuZ2xpc2giLAogIHJlZmVyZW5jZXMgPSAgICIwIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtLbnV0aDoxOTc1OklDVSwKICBhdXRob3IgPSAgICAgICAiRG9uYWxkIEUuIEtudXRoIGFuZCBDaGFybGVzIFQuIHtaYWhuLCBKci59IiwKICB0aXRsZSA9ICAgICAgICAiSWxsLUNob3NlbiBVc2Ugb2YgYGBFdmVudCcnIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE4IiwKICBudW1iZXIgPSAgICAgICAiNiIsCiAgcGFnZXMgPSAgICAgICAgIjM2MC0tMzYwIiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzUiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgU2VwIDIwIDIzOjM0OjI0IDE5OTQiLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAp9CgpAQXJ0aWNsZXtDb3VydG9pczoxOTc1OkRJUywKICBhdXRob3IgPSAgICAgICAiUC4gSi4gQ291cnRvaXMiLAogIHRpdGxlID0gICAgICAgICJEZWNvbXBvc2FiaWxpdHksIEluc3RhYmlsaXRpZXMsIGFuZCBTYXR1cmF0aW9uIGluIE11bHRpcHJvZ3JhbW1pbmcgU3lzdGVtcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOCIsCiAgbnVtYmVyID0gICAgICAgIjciLAogIHBhZ2VzID0gICAgICAgICIzNzEtLTM3NyIsCiAgbW9udGggPSAgICAgICAganVsLAogIHllYXIgPSAgICAgICAgICIxOTc1IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkEgc3RlcC1ieS1zdGVwIGFwcHJvYWNoIHRvIG1vZGVsIHRoZSBkeW5hbWljIGJlaGF2aW9yIGFuZCBldmFsdWF0ZSB0aGUgcGVyZm9ybWFuY2Ugb2YgY29tcHV0aW5nIHN5c3RlbXMgaXMgcHJvcG9zZWQuIEl0IGlzIGJhc2VkIG9uIGEgdGVjaG5pcXVlIG9mIHZhcmlhYmxlIGFnZ3JlZ2F0aW9uIGFuZCB0aGUgY29uY2VwdCBvZiBuZWFybHkgZGVjb21wb3NhYmxlIHN5c3RlbXMsIGJvdGggYm9ycm93ZWQgZnJvbSBFY29ub21ldHJpY3MuIFRoaXMgYXBwcm9hY2ggaXMgdGFrZW4gaW4gb3JkZXIgdG8gaWRlbnRpZnkgaW4gbXVsdGlwcm9ncmFtbWluZyBwYWdpbmcgc3lzdGVtcyAoaSkgdW5zdGFibGUgcmVnaW1lcyBvZiBvcGVyYXRpb25zIGFuZCAoaWkpIGNyaXRpY2FsIGNvbXB1dGluZyBsb2FkcyB3aGljaCBicmluZyB0aGUgc3lzdGVtIGludG8gc3RhdGVzIG9mIHNhdHVyYXRpb24uIFRoaXMgYW5hbHlzaXMgbGVhZHMgdG8gYSBtb3JlIGNvbXBsZXRlIGRlZmluaXRpb24gb2YgdGhlIGNpcmN1bXN0YW5jZXMgaW4gd2hpY2ggYGB0aHJhc2hpbmcnJyBjYW4gc2V0IGluLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbik7IEM2MTUwSiAoT3BlcmF0aW5nIHN5c3RlbXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJNQkxFIFJlcy4gTGFiLiwgQnJ1c3NlbHMsIEJlbGdpdW0iLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgc2VsZWN0aW9uIGFuZCBldmFsdWF0aW9uOyBjb21wdXRlciBzeXN0ZW1zIHByb2dyYW1taW5nOyBjb21wdXRpbmcgc3lzdGVtczsgZGVjb21wb3NhYmxlOyBpbnN0YWJpbGl0aWVzOyBtdWx0aXByb2dyYW1taW5nOyBtdWx0aXByb2dyYW1taW5nIHN5c3RlbXM7IHBlcmZvcm1hbmNlOyBzYXR1cmF0aW9uOyBzdG9yYWdlOyB2aXJ0dWFsIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtMYXVlc2VuOjE5NzU6TFNCLAogIGF1dGhvciA9ICAgICAgICJTb3JlbiBMYXVlc2VuIiwKICB0aXRsZSA9ICAgICAgICAiQSBsYXJnZSBzZW1hcGhvcmUgYmFzZWQgb3BlcmF0aW5nIHN5c3RlbSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOCIsCiAgbnVtYmVyID0gICAgICAgIjciLAogIHBhZ2VzID0gICAgICAgICIzNzctLTM4OSIsCiAgbW9udGggPSAgICAgICAganVsLAogIHllYXIgPSAgICAgICAgICIxOTc1IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlRoZSBwYXBlciBkZXNjcmliZXMgdGhlIGludGVybmFsIHN0cnVjdHVyZSBvZiBhIGxhcmdlIG9wZXJhdGluZyBzeXN0ZW0gYXMgYSBzZXQgb2YgY29vcGVyYXRpbmcgc2VxdWVudGlhbCBwcm9jZXNzZXMuIFRoZSBwcm9jZXNzZXMgc3luY2hyb25pemUgYnkgbWVhbnMgb2Ygc2VtYXBob3JlcyBhbmQgZXh0ZW5kZWQgc2VtYXBob3JlcyAocXVldWUgc2VtYXBob3JlcykuIFRoZSBudW1iZXIgb2YgcGFyYWxsZWwgcHJvY2Vzc2VzIGlzIGNhcmVmdWxseSBqdXN0aWZpZWQsIGFuZCB0aGUgdmFyaW91cyBzZW1hcGhvcmUgY29uc3RydWN0aW9ucyBhcmUgZXhwbGFpbmVkLiBUaGUgc3lzdGVtIGlzIHByb3ZlZCB0byBiZSBmcmVlIG9mIGBgZGVhZGx5IGVtYnJhY2UnJyAoZGVhZGxvY2spLiBUaGUgZGVzaWduIHByaW5jaXBsZSBpcyBhbiBhbHRlcm5hdGl2ZSB0byBEaWprc3RyYSdzIGhpZXJhcmNoaWNhbCBzdHJ1Y3R1cmluZyBvZiBvcGVyYXRpbmcgc3lzdGVtcy4gVGhlIHByb2plY3QgbWFuYWdlbWVudCBhbmQgdGhlIHBlcmZvcm1hbmNlIGFyZSBkaXNjdXNzZWQsIHRvby4gVGhlIG9wZXJhdGluZyBzeXN0ZW0gaXMgdGhlIGZpcnN0IGxhcmdlIG9uZSB1c2luZyB0aGUgUkMgNDAwMCBtdWx0aXByb2dyYW1taW5nIHN5c3RlbS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjE1MEogKE9wZXJhdGluZyBzeXN0ZW1zKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiTm9yZGlzayBCcm93biBCb3ZlcmksIENvcGVuaGFnZW4sIERlbm1hcmsiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgb3BlcmF0aW5nIHN5c3RlbXM7IGxhcmdlOyBtdWx0aXByb2dyYW1taW5nIHN5c3RlbTsgb3BlcmF0aW5nIHN5c3RlbTsgb3BlcmF0aW5nIHN5c3RlbXMgKGNvbXB1dGVycyk7IHBhcmFsbGVsOyBwYXJhbGxlbCBwcm9jZXNzaW5nOyBwcm9jZXNzZXM7IFJDIDQwMDA7IHNlbWFwaG9yZSBiYXNlZCIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7U2FnZXI6MTk3NTpSTEMsCiAgYXV0aG9yID0gICAgICAgIk5hb21pIFNhZ2VyIGFuZCBSYWxwaCBHcmlzaG1hbiIsCiAgdGl0bGUgPSAgICAgICAgIlJlc3RyaWN0aW9uIExhbmd1YWdlIGZvciBDb21wdXRlciBHcmFtbWFycyBvZiBOYXR1cmFsIExhbmd1YWdlIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE4IiwKICBudW1iZXIgPSAgICAgICAiNyIsCiAgcGFnZXMgPSAgICAgICAgIjM5MC0tNDAwIiwKICBtb250aCA9ICAgICAgICBqdWwsCiAgeWVhciA9ICAgICAgICAgIjE5NzUiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiVGhpcyBwYXBlciBwcmVzZW50cyBhIHByb2dyYW1taW5nIGxhbmd1YWdlIGRlc2lnbmVkIHNwZWNpZmljYWxseSBmb3IgdGhlIGNvbXBhY3QgYW5kIHBlcnNwaWN1b3VzIHN0YXRlbWVudCBvZiByZXN0cmljdGlvbnMgb2YgYSBuYXR1cmFsIGxhbmd1YWdlIGdyYW1tYXIuIEl0IGlzIGJhc2VkIG9uIHRlbiB5ZWFycycgZXhwZXJpZW5jZSBwYXJzaW5nIHRleHQgc2VudGVuY2VzIHdpdGggdGhlIGNvbXByZWhlbnNpdmUgRW5nbGlzaCBncmFtbWFyIG9mIHRoZSBOLiBZLiBVLiBMaW5ndWlzdGljIFN0cmluZyBQcm9qZWN0LCBhbmQgZW1ib2RpZXMgaW4gaXRzIHN5bnRheCBhbmQgcm91dGluZXMgdGhlIHJlbGF0aW9ucyB3aGljaCB3ZXJlIGZvdW5kIHRvIGJlIHVzZWZ1bCBhbmQgYWRlcXVhdGUgZm9yIGNvbXB1dGVyaXplZCBuYXR1cmFsIGxhbmd1YWdlIGFuYWx5c2lzLiBUaGUgbGFuZ3VhZ2UgaXMgdXNlZCBpbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTGluZ3Vpc3RpYyBTdHJpbmcgUGFyc2VyLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MjEwIChGb3JtYWwgbG9naWMpOyBDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKTsgQzYxNDBEIChIaWdoIGxldmVsIGxhbmd1YWdlcyk7IEM3ODIwIChIdW1hbml0aWVzIGNvbXB1dGluZykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMTsgNzIzIiwKICBjb3Jwc291cmNlID0gICAiTmV3IFlvcmsgVW5pdi4sIE5ldyBZb3JrLCBOWSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImF1dG9tYXRhIHRoZW9yeTsgY29tcHV0YXRpb25hbCBsaW5ndWlzdGljczsgY29tcHV0ZXIgZ3JhbW1hcnM7IGNvbXB1dGVyIHByb2dyYW1taW5nIGxhbmd1YWdlczsgZ3JhbW1hcnM7IGxpdGVyYXR1cmU7IG5hdHVyYWwgbGFuZ3VhZ2U7IG9yaWVudGVkIGxhbmd1YWdlczsgcGFyc2luZzsgcHJvYmxlbTsgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2U7IFJlc3RyaWN0aW9uIExhbmd1YWdlOyB0ZXh0OyB0ZXh0IGVkaXRpbmciLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle1Bhcm5hczoxOTc1OlVDVCwKICBhdXRob3IgPSAgICAgICAiRC4gTC4gUGFybmFzIGFuZCBELiBQLiBTaWV3aW9yZWsiLAogIHRpdGxlID0gICAgICAgICJVc2Ugb2YgdGhlIENvbmNlcHQgb2YgVHJhbnNwYXJlbmN5IGluIHRoZSBEZXNpZ24gb2YgSGllcmFyY2hpY2FsbHkgU3RydWN0dXJlZCBTeXN0ZW1zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE4IiwKICBudW1iZXIgPSAgICAgICAiNyIsCiAgcGFnZXMgPSAgICAgICAgIjQwMS0tNDA4IiwKICBtb250aCA9ICAgICAgICBqdWwsCiAgeWVhciA9ICAgICAgICAgIjE5NzUiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L01pc2Mvc29mdGVuZy5iaWIiLAogIGFic3RyYWN0ID0gICAgICJUaGlzIHBhcGVyIGRlYWxzIHdpdGggdGhlIGRlc2lnbiBvZiBoaWVyYXJjaGljYWxseSBzdHJ1Y3R1cmVkIHByb2dyYW1taW5nIHN5c3RlbXMuIEl0IGRldmVsb3BzIGEgbWV0aG9kIGZvciBldmFsdWF0aW5nIHRoZSBjb3N0IG9mIHJlcXVpcmluZyBwcm9ncmFtbWVycyB0byB3b3JrIHdpdGggYW4gYWJzdHJhY3Rpb24gb2YgYSByZWFsIG1hY2hpbmUuIEEgbnVtYmVyIG9mIGV4YW1wbGVzIGZyb20gaGFyZHdhcmUgYW5kIHNvZnR3YXJlIGFyZSBnaXZlbiBhcyBpbGx1c3RyYXRpb25zIG9mIHRoZSBtZXRob2QuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMTAgKFN5c3RlbXMgYW5hbHlzaXMgYW5kIHByb2dyYW1taW5nKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiVGVjaC4gSG9jaHNjaHVsZSBEYXJtc3RhZHQsIERhcm1zdGFkdCwgV2VzdCBHZXJtYW55IiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFic3RyYWN0aW9uOyBjb21wdXRlciBzeXN0ZW1zIHByb2dyYW1taW5nOyBjb3N0OyBkZXNpZ247IGhpZXJhcmNoaWNhbGx5IHN0cnVjdHVyZWQgc3lzdGVtczsgcHJvZ3JhbW1pbmc7IHJlYWwgbWFjaGluZTsgdHJhbnNwYXJlbmN5IiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtGcmVlbWFuOjE5NzU6RE1BLAogIGF1dGhvciA9ICAgICAgICJILiBGcmVlbWFuIGFuZCBSLiBTaGFwaXJhIiwKICB0aXRsZSA9ICAgICAgICAiRGV0ZXJtaW5pbmcgdGhlIE1pbmltdW0tQXJlYSBFbmNhc2luZyBSZWN0YW5nbGUgZm9yIGFuIEFyYml0cmFyeSBDbG9zZWQgQ3VydmUiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTgiLAogIG51bWJlciA9ICAgICAgICI3IiwKICBwYWdlcyA9ICAgICAgICAiNDA5LS00MTMiLAogIG1vbnRoID0gICAgICAgIGp1bCwKICB5ZWFyID0gICAgICAgICAiMTk3NSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4QTEwICg1MkE0MCkiLAogIE1SbnVtYmVyID0gICAgICI1MSAxMjAxOCIsCiAgbXJyZXZpZXdlciA9ICAgIkphY3F1ZXMgRHVib2lzIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlRoaXMgcGFwZXIgZGVzY3JpYmVzIGEgbWV0aG9kIGZvciBmaW5kaW5nIHRoZSByZWN0YW5nbGUgb2YgbWluaW11bSBhcmVhIGluIHdoaWNoIGEgZ2l2ZW4gYXJiaXRyYXJ5IHBsYW5lIGN1cnZlIGNhbiBiZSBjb250YWluZWQuIFRoZSBtZXRob2QgaXMgb2YgaW50ZXJlc3QgaW4gY2VydGFpbiBwYWNraW5nIGFuZCBvcHRpbXVtIGxheW91dCBwcm9ibGVtcy4gSXQgY29uc2lzdHMgb2YgZmlyc3QgZGV0ZXJtaW5pbmcgdGhlIG1pbmltYWwtcGVyaW1ldGVyIGNvbnZleCBwb2x5Z29uIHRoYXQgZW5jbG9zZXMgdGhlIGdpdmVuIGN1cnZlIGFuZCB0aGVuIHNlbGVjdGluZyB0aGUgcmVjdGFuZ2xlIG9mIG1pbmltdW0gYXJlYSBjYXBhYmxlIG9mIGNvbnRhaW5pbmcgdGhpcyBwb2x5Z29uLiBUaHJlZSB0aGVvcmVtcyBhcmUgaW50cm9kdWNlZCB0byBzaG93IHRoYXQgb25lIHNpZGUgb2YgdGhlIG1pbmltdW0tYXJlYSByZWN0YW5nbGUgbXVzdCBiZSBjb2xpbmVhciB3aXRoIGFuIGVkZ2Ugb2YgdGhlIGVuY2xvc2VkIHBvbHlnb24gYW5kIHRoYXQgdGhlIG1pbmltdW0tYXJlYSBlbmNhc2luZyByZWN0YW5nbGUgZm9yIHRoZSBjb252ZXggcG9seWdvbiBpcyBhbHNvIHRoZSBtaW5pbXVtLWFyZWEgcmVjdGFuZ2xlIGZvciB0aGUgY3VydmUuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjAyNjAgKE9wdGltaXNhdGlvbiB0ZWNobmlxdWVzKTsgQzExODAgKE9wdGltaXNhdGlvbiB0ZWNobmlxdWVzKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiOTIxOyA5MjIiLAogIGNvcnBzb3VyY2UgPSAgICJOZXcgWW9yayBVbml2LiwgTmV3IFlvcmssIE5ZLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiZW5jbG9zZWQgY3VydmU7IG1pbmltdW0tYXJlYSBlbmNhc2luZyByZWN0YW5nbGU7IG9wdGltaXphdGlvbjsgb3B0aW11bSBsYXlvdXQ7IG9wdGltdW0gcGFja2luZyIsCiAga2V5d29yZHMgPSAgICAgImFyYml0cmFyeSBjbG9zZWQgY3VydmU7IGVuY2FzaW5nIHJlY3RhbmdsZTsgbWluaW1pc2F0aW9uOyBtaW5pbXVtIGFyZWE7IG9wdGltdW0gbGF5b3V0OyBwYWNraW5nIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtCb2Jyb3c6MTk3NTpOSEwsCiAgYXV0aG9yID0gICAgICAgIkRhbmllbCBHLiBCb2Jyb3ciLAogIHRpdGxlID0gICAgICAgICJBIE5vdGUgb24gSGFzaCBMaW5raW5nIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE4IiwKICBudW1iZXIgPSAgICAgICAiNyIsCiAgcGFnZXMgPSAgICAgICAgIjQxMy0tNDE1IiwKICBtb250aCA9ICAgICAgICBqdWwsCiAgeWVhciA9ICAgICAgICAgIjE5NzUiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiSGFzaCBzZWFyY2hpbmcgaXMgYSB0ZWNobmlxdWUgaW4gd2hpY2ggYSBrZXkgaXMgbWFwcGVkIGludG8gYSB1bmlxdWUgYWRkcmVzcyBhc3NvY2lhdGVkIHdpdGggdGhhdCBrZXkuIE1vc3QgYXBwbGljYXRpb25zIG9mIHRoaXMgdGVjaG5pcXVlIGFyZSBmb3IgaW5zZXJ0aW9uIGFuZCBmYXN0IHJldHJpZXZhbCBvZiBkYXRhIHJlY29yZHMgY29udGFpbmluZyBrZXkgZmllbGRzLiBJbiB0aGUgdXNlIG9mIGhhc2ggc2VhcmNoIGRlc2NyaWJlZCBpbiB0aGlzIHBhcGVyLCB0aGUga2V5IGZpZWxkIGlzIHRoZSB2aXJ0dWFsIGFkZHJlc3Mgb2YgYSBtYWNoaW5lIGNlbGwgd2l0aCB3aGljaCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGlzIGFzc29jaWF0ZWQuIEFuIGFkZHJlc3MgdG8gYXV4aWxpYXJ5IGRhdGEgbm90IGNvbnRhaW5lZCBpbiB0aGF0IGNlbGwgaXMgY2FsbGVkIGhhc2ggbGlua2luZy4gKEEgaGFzaCBsaW5rIGZ1bmN0aW9uIGlzIG9uZSB3aGljaCBtYXBzIGFueSBtYWNoaW5lIHZpcnR1YWwgYWRkcmVzcyBpbnRvIGFub3RoZXIgdW5pcXVlIGFkZHJlc3Mgd2hlcmUgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBjYW4gYmUgc3RvcmVkLiApIFRoaXMgbm90ZSBkZXNjcmliZXMgc2V2ZXJhbCBub25vYnZpb3VzIGFwcGxpY2F0aW9ucyBvZiB0aGlzIHRlY2huaXF1ZS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjM7IDkwMSIsCiAgY29ycHNvdXJjZSA9ICAgIlhlcm94IFBhbG8gQWx0byBSZXMuIENlbnRlciwgUGFsbyBBbHRvLCBDQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIHByb2dyYW1taW5nOyBoYXNoIGxpbmtpbmc7IGluZm9ybWF0aW9uIHJldHJpZXZhbCBzeXN0ZW1zOyBMSVNQOyBsb2NhdGlvbnM7IG1hY2hpbmUgYWRkcmVzczsgc3RvcmFnZTsgc3RvcmFnZSBhbGxvY2F0aW9uIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtXZWJlcjoxOTc1OkRFVywKICBhdXRob3IgPSAgICAgICAiUi4gRS4gV2ViZXIgYW5kIEIuIEdpbGNocmlzdCIsCiAgdGl0bGUgPSAgICAgICAgIkRpc2NyaW1pbmF0aW9uIGluIHRoZSBlbXBsb3ltZW50IG9mIHdvbWVuIGluIHRoZSBjb21wdXRlciBpbmR1c3RyeSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOCIsCiAgbnVtYmVyID0gICAgICAgIjciLAogIHBhZ2VzID0gICAgICAgICI0MTYtLTQxOCIsCiAgbW9udGggPSAgICAgICAganVsLAogIHllYXIgPSAgICAgICAgICIxOTc1IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMwMjAwIChHZW5lcmFsIGNvbXB1dGVyIHRvcGljcykiLAogIGNvcnBzb3VyY2UgPSAgICJSdXRnZXJzIFVuaXYuLCBOZXcgQnJ1bnN3aWNrLCBOSiwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgaW5kdXN0cnk7IGRpc2NyaW1pbmF0aW9uOyBlbXBsb3ltZW50OyB3b21lbiIsCiAgdHJlYXRtZW50ID0gICAgIkcgR2VuZXJhbCBSZXZpZXciLAp9CgpAQXJ0aWNsZXtTaG9yZToxOTc1OkVTRiwKICBhdXRob3IgPSAgICAgICAiSm9obiBFLiBTaG9yZSIsCiAgdGl0bGUgPSAgICAgICAgIk9uIHRoZSBFeHRlcm5hbCBTdG9yYWdlIEZyYWdtZW50YXRpb24gUHJvZHVjZWQgYnkgRmlyc3QtRml0IGFuZCBCZXN0LUZpdCBBbGxvY2F0aW9uIFN0cmF0ZWdpZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTgiLAogIG51bWJlciA9ICAgICAgICI4IiwKICBwYWdlcyA9ICAgICAgICAiNDMzLS00NDAiLAogIG1vbnRoID0gICAgICAgIGF1ZywKICB5ZWFyID0gICAgICAgICAiMTk3NSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJSZXBvcnQgb24gc29tZSBleHBlcmltZW50cyB3aG9zZSByZXN1bHRzIGhhdmUgaGVscGVkIHRvIHVuZGVyc3RhbmQgZGlmZmVyZW5jZXMgaW4gdGhlIHBlcmZvcm1hbmNlIG9mIHR3byB3ZWxsLWtub3duIHN0b3JhZ2UtYWxsb2NhdGlvbiBzdHJhdGVnaWVzLCBmaXJzdC1maXQgYW5kIGJlc3QtZml0LiBGb3IgZXhwb25lbnRpYWwgYW5kIGh5cGVyZXhwb25lbnRpYWwgZGlzdHJpYnV0aW9ucyBvZiByZXF1ZXN0cywgZmlyc3QtZml0IG91dHBlcmZvcm1lZCBiZXN0LWZpdDsgYnV0IGZvciBub3JtYWwgYW5kIHVuaWZvcm0gZGlzdHJpYnV0aW9ucywgYW5kIGZvciBleHBvbmVudGlhbCBkaXN0cmlidXRpb25zIGRpc3RvcnRlZCBpbiB2YXJpb3VzIHdheXMsIGJlc3QtZml0IG91dHBlcmZvcm1lZCBmaXJzdC1maXQuIEl0IGlzIGh5cG90aGVzaXplZCB0aGF0IHdoZW4gZmlyc3QtZml0IG91dHBlcmZvcm1zIGJlc3QtZml0LCBpdCBkb2VzIHNvIGJlY2F1c2UgZmlyc3QtZml0LCBieSBwcmVmZXJlbnRpYWxseSBhbGxvY2F0aW5nIHRvd2FyZCBvbmUgZW5kIG9mIG1lbW9yeSwgZW5jb3VyYWdlcyBsYXJnZSBibG9ja3MgdG8gZ3JvdyBhdCB0aGUgb3RoZXIgZW5kLiBTdWZmaWNpZW50IGNvbnRpZ3VvdXMgc3BhY2UgaXMgdGhlcmVieSBtb3JlIGxpa2VseSB0byBiZSBhdmFpbGFibGUgZm9yIHJlbGF0aXZlbHkgbGFyZ2UgcmVxdWVzdHMuIFJlc3VsdHMgb2Ygc2ltdWxhdGlvbiBleHBlcmltZW50cyBzdXBwb3J0ZWQgdGhpcyBoeXBvdGhlc2lzIGFuZCBzaG93ZWQgdGhhdCB0aGUgcmVsYXRpdmUgcGVyZm9ybWFuY2Ugb2YgZmlyc3QtZml0IGFuZCBiZXN0LWZpdCBkZXBlbmRzIG9uIHRoZSBmcmVxdWVuY3kgb2YgcmVxdWVzdHMgdGhhdCBhcmUgbGFyZ2UgY29tcGFyZWQgdG8gdGhlIGF2ZXJhZ2UgcmVxdWVzdC4gd2hlbiB0aGUgY29lZmZpY2llbnQgb2YgdmFyaWF0aW9uIG9mIHRoZSByZXF1ZXN0IGRpc3RyaWJ1dGlvbiBpcyBncmVhdGVyIHRoYW4gb3IgYXBwcm94aW1hdGVseSBlcXVhbCB0byB1bml0eSwgZmlyc3QtZml0IG91dHBlcmZvcm1lZCBiZXN0LWZpdC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pOyBDNjE1MEogKE9wZXJhdGluZyBzeXN0ZW1zKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIyOyA3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJOYXZhbCBSZXMuIExhYi4sIFdhc2hpbmd0b24sIERDLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYWxsb2NhdGlvbiBzdHJhdGVnaWVzOyBiZXN0IGZpdDsgY29tcHV0ZXIgb3BlcmF0aW5nIHN5c3RlbXM7IGR5bmFtaWMgbWVtb3J5IGFsbG9jYXRpb247IGVuY291bnRlcmVkIGJsb2NrOyBleHRlcm5hbCBzdG9yYWdlIGZyYWdtZW50YXRpb247IGZpcnN0IGZpdDsgcGVuZGluZyBzdG9yYWdlOyBzdGFydGluZyBhZGRyZXNzZXM7IHN0b3JhZ2UgYWxsb2NhdGlvbiIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7QWhvOjE5NzU6RFBBLAogIGF1dGhvciA9ICAgICAgICJBLiBWLiBBaG8gYW5kIFMuIEMuIEpvaG5zb24gYW5kIEouIEQuIFVsbG1hbiIsCiAgdGl0bGUgPSAgICAgICAgIkRldGVybWluaXN0aWMgUGFyc2luZyBvZiBBbWJpZ3VvdXMgR3JhbW1hcnMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTgiLAogIG51bWJlciA9ICAgICAgICI4IiwKICBwYWdlcyA9ICAgICAgICAiNDQxLS00NTIiLAogIG1vbnRoID0gICAgICAgIGF1ZywKICB5ZWFyID0gICAgICAgICAiMTk3NSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4QTI1IiwKICBNUm51bWJlciA9ICAgICAiNTEgMTIwMzMiLAogIG1ycmV2aWV3ZXIgPSAgICJTLiBHaW5zYnVyZyIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvQ29tcGlsZXIvQ29tcGlsZXIuTGlucy5iaWIiLAogIGFic3RyYWN0ID0gICAgICJNZXRob2RzIG9mIGRlc2NyaWJpbmcgdGhlIHN5bnRheCBvZiBwcm9ncmFtbWluZyBsYW5ndWFnZXMgaW4gd2F5cyB0aGF0IGFyZSBtb3JlIGZsZXhpYmxlIGFuZCBuYXR1cmFsIHRoYW4gY29udmVudGlvbmFsIEJORiBkZXNjcmlwdGlvbnMgYXJlIGNvbnNpZGVyZWQuIFRoZXNlIG1ldGhvZHMgaW52b2x2ZSB0aGUgdXNlIG9mIGFtYmlndW91cyBjb250ZXh0LWZyZWUgZ3JhbW1hcnMgdG9nZXRoZXIgd2l0aCBydWxlcyB0byByZXNvbHZlIHN5bnRhY3RpYyBhbWJpZ3VpdGllcy4gSXQgaXMgc2hvd24gaG93IGVmZmljaWVudCBMUiBhbmQgTEwgcGFyc2VycyBjYW4gYmUgY29uc3RydWN0ZWQgZGlyZWN0bHkgZnJvbSBjZXJ0YWluIGNsYXNzZXMgb2YgdGhlc2Ugc3BlY2lmaWNhdGlvbnMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQyMTAgKEZvcm1hbCBsb2dpYykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIkJlbGwgTGFicy4sIE11cnJheSBIaWxsLCBOSiwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFtYmlndWl0aWVzOyBhbWJpZ3VvdXMgZ3JhbW1hcnM7IGNvbXB1dGVyIHByb2dyYW1taW5nIGxhbmd1YWdlczsgY29udGV4dCBmcmVlIGdyYW1tYXJzOyBjb250ZXh0LWZyZWUgZ3JhbW1hcnM7IExMIHBhcnNlcnM7IExSIHBhcnNpbmc7IHBhcnNlciBnZW5lcmF0aW9uOyBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IHN5bnRhY3RpYzsgdHJhbnNsYXRvciB3cml0aW5nIHN5c3RlbXMiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0RpamtzdHJhOjE5NzU6R0NOLAogIGF1dGhvciA9ICAgICAgICJFZHNnZXIgVy4gRGlqa3N0cmEiLAogIHRpdGxlID0gICAgICAgICJHdWFyZGVkIENvbW1hbmRzLCBOb25kZXRlcm1pbmFjeSBhbmQgRm9ybWFsIERlcml2YXRpb24gb2YgUHJvZ3JhbXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTgiLAogIG51bWJlciA9ICAgICAgICI4IiwKICBwYWdlcyA9ICAgICAgICAiNDUzLS00NTciLAogIG1vbnRoID0gICAgICAgIGF1ZywKICB5ZWFyID0gICAgICAgICAiMTk3NSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4QTA1IiwKICBNUm51bWJlciA9ICAgICAiNTIgNDY4OCIsCiAgbXJyZXZpZXdlciA9ICAgIkpvaG4gS2FtIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9QYXJhbGxlbC9wYXIuc3luY2guYmliIiwKICBhYnN0cmFjdCA9ICAgICAiU28tY2FsbGVkIGBgZ3VhcmRlZCBjb21tYW5kcycnIGFyZSBpbnRyb2R1Y2VkIGFzIGEgYnVpbGRpbmcgYmxvY2sgZm9yIGFsdGVybmF0aXZlIGFuZCByZXBldGl0aXZlIGNvbnN0cnVjdHMgdGhhdCBhbGxvdyBub25kZXRlcm1pbmlzdGljIHByb2dyYW0gY29tcG9uZW50cyBmb3Igd2hpY2ggYXQgbGVhc3QgdGhlIGFjdGl2aXR5IGV2b2tlZCwgYnV0IHBvc3NpYmx5IGV2ZW4gdGhlIGZpbmFsIHN0YXRlLCBpcyBub3QgbmVjZXNzYXJpbHkgdW5pcXVlbHkgZGV0ZXJtaW5lZCBieSB0aGUgaW5pdGlhbCBzdGF0ZS4gRm9yIHRoZSBmb3JtYWwgZGVyaXZhdGlvbiBvZiBwcm9ncmFtcyBleHByZXNzZWQgaW4gdGVybXMgb2YgdGhlc2UgY29uc3RydWN0cywgYSBjYWxjdWx1cyBpcyBzaG93bi4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGFubm90ZSA9ICAgICAgICJZZXQgYW5vdGhlciBhbmNpZW50IHBhcGVyIHdoaWNoIGlzIG9jY2FzaW9uYWxseSBjaXRlZCIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MjEwIChGb3JtYWwgbG9naWMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJCdXJyb3VnaHMgQ29ycC4sIE51ZW5lbiwgTmV0aGVybGFuZHMiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY2FsY3VsdXM7IGNvbXB1dGVyIHByb2dyYW1taW5nIGxhbmd1YWdlczsgY29uc3RydWN0czsgY29ycmVjdG5lc3MgcHJvb2Y7IGRlcml2YXRpb247IGd1YXJkZWQgY29tbWFuZHM7IGstZ3VhcmRlZC1jb21tYW5kczsgbm9uZGV0ZXJtaW5pc3RpYyBwcm9ncmFtIGNvbXBvbmVudHM7IHByb2dyYW1taW5nIGxhbmd1YWdlIHNlbWFudGljczsgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzOyBwcm9ncmFtbWluZyBtZXRob2RvbG9neTsgc2VxdWVuY2luZyBwcmltaXRpdmVzIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtDb3R0b246MTk3NTpSU1UsCiAgYXV0aG9yID0gICAgICAgIkwuIFcuIENvdHRvbiIsCiAgdGl0bGUgPSAgICAgICAgIlJlbWFyayBvbiBzdGFibHkgdXBkYXRpbmcgbWVhbiBhbmQgc3RhbmRhcmQgZGV2aWF0aW9uIG9mIGRhdGEiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTgiLAogIG51bWJlciA9ICAgICAgICI4IiwKICBwYWdlcyA9ICAgICAgICAiNDU4LS00NTgiLAogIG1vbnRoID0gICAgICAgIGF1ZywKICB5ZWFyID0gICAgICAgICAiMTk3NSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L1RoZW9yeS9NYXRyaXguYmliIGFuZCBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0Rpc3RyaWJ1dGVkL1FMRC5iaWIiLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJCMDI5MEYgKEludGVycG9sYXRpb24gYW5kIGZ1bmN0aW9uIGFwcHJveGltYXRpb24pOyBDNDEzMCAoSW50ZXJwb2xhdGlvbiBhbmQgZnVuY3Rpb24gYXBwcm94aW1hdGlvbik7IEM3MzEwIChNYXRoZW1hdGljcyBjb21wdXRpbmcpIiwKICBjb3Jwc291cmNlID0gICAiTmF0LiBCdXIuIG9mIFN0YW5kLiwgV2FzaGluZ3RvbiwgREMsIFVTQSIsCiAgY291bnRyeSA9ICAgICAgIlVTQSIsCiAgZGVzY3JpcHRvcnMgPSAgIlNpbXVsYXRpb247IHN0YXRpc3RpY3M7IG51bWVyaWMgY2FsY3VsYXRpb247IiwKICBlbnVtID0gICAgICAgICAiNzE1OCIsCiAga2V5d29yZHMgPSAgICAgImFsZ29yaXRobTsgSGFuc29uJ3MgYXJ0aWNsZTsgbmV3OyBudW1iZXJzOyBudW1lcmljYWwgbWV0aG9kczsgcmVtYXJrOyBzZXF1ZW50aWFsbHkgcmVjb21wdXRpbmc7IHNlcmllczsgc3RhYmx5IHVwZGF0aW5nIG1lYW47IHN0YW5kYXJkIGRldmlhdGlvbiBvZiBkYXRhOyBzdGF0aXN0aWNzIiwKICBrd2RzID0gICAgICAgICAic3RhdCwgdXBkYXRpbmcsIG1lYW4sIHN0YW5kYXJkIGRldmlhdGlvbiwgdmFyaWFuY2UiLAogIGxhbmd1YWdlID0gICAgICJFbmdsaXNoIiwKICBsb2NhdGlvbiA9ICAgICAiU0VMOiBXaSIsCiAgcmVmZXJlbmNlcyA9ICAgIjAiLAogIHJldmlzaW9uID0gICAgICIxNi8wMS85NCIsCiAgdHJlYXRtZW50ID0gICAgIkEgQXBwbGljYXRpb247IEcgR2VuZXJhbCBSZXZpZXciLAogIHh4YXV0aG9yID0gICAgICJJLiBXLiBDb3R0b24iLAp9CgpAQXJ0aWNsZXtTaGFwaXJvOjE5NzU6SUNOLAogIGF1dGhvciA9ICAgICAgICJTdHVhcnQgQy4gU2hhcGlybyBhbmQgU3RhbmxleSBDLiBLd2FzbnkiLAogIHRpdGxlID0gICAgICAgICJJbnRlcmFjdGl2ZSBDb25zdWx0aW5nIHZpYSBOYXR1cmFsIExhbmd1YWdlIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE4IiwKICBudW1iZXIgPSAgICAgICAiOCIsCiAgcGFnZXMgPSAgICAgICAgIjQ1OS0tNDYyIiwKICBtb250aCA9ICAgICAgICBhdWcsCiAgeWVhciA9ICAgICAgICAgIjE5NzUiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0FpL2V4cGVydC5iaWIiLAogIGFic3RyYWN0ID0gICAgICJJbnRlcmFjdGl2ZSBwcm9ncmFtbWluZyBzeXN0ZW1zIG9mdGVuIGNvbnRhaW4gaGVscCBjb21tYW5kcyB0byBnaXZlIHRoZSBwcm9ncmFtbWVyIG9uLWxpbmUgaW5zdHJ1Y3Rpb24gcmVnYXJkaW5nIHRoZSB1c2Ugb2YgdGhlIHZhcmlvdXMgc3lzdGVtcyBjb21tYW5kcy4gSXQgaXMgYXJndWVkIHRoYXQgaXQgd291bGQgYmUgcmVsYXRpdmVseSBlYXN5IHRvIG1ha2UgdGhlc2UgaGVscCBjb21tYW5kcyBzaWduaWZpY2FudGx5IG1vcmUgaGVscGZ1bCBieSBoYXZpbmcgdGhlbSBhY2NlcHQgcmVxdWVzdHMgaW4gbmF0dXJhbCBsYW5ndWFnZS4gQXMgYSBkZW1vbnN0cmF0aW9uLCBXZWl6ZW5iYXVtJ3MgRUxJWkEgcHJvZ3JhbSBoYXMgYmVlbiBwcm92aWRlZCB3aXRoIGEgc2NyaXB0IHRoYXQgdHVybnMgaXQgaW50byBhIG5hdHVyYWwgbGFuZ3VhZ2Ugc3lzdGVtIGNvbnN1bHRhbnQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBhbm5vdGUgPSAgICAgICAiSGVscCBjb21tYW5kcyBhcmUgc2lnbmlmaWNhbnRseSBtb3JlIHVzZWZ1bCBpbiBhbiBpbnRlcmFjdGl2ZSBlbnZpcm9ubWVudCBpZiB0aGV5IGFjY2VwdCBjb21tYW5kcyBpbiBhIG5hdHVyYWwgbGFuZ3VhZ2UuIEFzIGEgZGVtb25zdHJhdGlvbiwgV2VpemVuYmF1bSdzIEVMSVpBIHByb2dyYW0gaGFzIGJlZW4gcHJvdmlkZWQgd2l0aCBhIHNjcmlwdCB0aGF0IHR1cm5zIGludG8gYSBuYXR1cmFsIGxhbmd1YWdlIHN5c3RlbSBjb25zdWx0YW50LiIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTEwIChTeXN0ZW1zIGFuYWx5c2lzIGFuZCBwcm9ncmFtbWluZyk7IEM2MTQwIChQcm9ncmFtbWluZyBsYW5ndWFnZXMpOyBDNjE1MEogKE9wZXJhdGluZyBzeXN0ZW1zKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiSW5kaWFuYSBVbml2LiwgQmxvb21pbmd0b24sIElOLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgYWlkZWQgaW5zdHJ1Y3Rpb247IGNvbXB1dGVyIGFzc2lzdGVkIGluc3RydWN0aW9uOyBjb21wdXRlciBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IEVMSVpBOyBoZWxwIGNvbW1hbmRzOyBpbnN0cnVjdGlvbjsgaW50ZXJhY3RpdmUgcHJvZ3JhbW1pbmc7IG5hdHVyYWwgbGFuZ3VhZ2U7IG5hdHVyYWwgbGFuZ3VhZ2UgcHJvY2Vzc2luZzsgbmF0dXJhbCBsYW5ndWFnZSBzeXN0ZW0gY29uc3VsdGFudDsgb24gbGluZTsgcHJvZ3JhbTsgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzOyBzaGFyaW5nIHByb2dyYW1zOyBzeXN0ZW1zIGNvbW1hbmRzOyB0aW1lIHNoYXJpbmcgc3lzdGVtczsgdGltZS07IHRpbWUtc2hhcmluZyBzeXN0ZW1zIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtUb2RkOjE5NzU6Q0xDLAogIGF1dGhvciA9ICAgICAgICJKb2huIFRvZGQiLAogIHRpdGxlID0gICAgICAgICJDb3JyaWdlbmR1bToge2BgVGhlIExlbW5pc2NhdGUgQ29uc3RhbnRzJyd9IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE4IiwKICBudW1iZXIgPSAgICAgICAiOCIsCiAgcGFnZXMgPSAgICAgICAgIjQ2Mi0tNDYyIiwKICBtb250aCA9ICAgICAgICBhdWcsCiAgeWVhciA9ICAgICAgICAgIjE5NzUiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgRGVjIDI2IDE4OjQyOjA5IDE5OTUiLAogIG5vdGUgPSAgICAgICAgICJTZWUgXGNpdGV7VG9kZDoxOTc1OkxDfS4iLAp9CgpAQXJ0aWNsZXtWYXVjaGVyOjE5NzU6Q0NTLAogIGF1dGhvciA9ICAgICAgICJKLiBHLiBWYXVjaGVyIGFuZCBQLiBEdXZhbCIsCiAgdGl0bGUgPSAgICAgICAgIkNvcnJpZ2VuZHVtOiBgYHtBIGNvbXBhcmlzb24gb2Ygc2ltdWxhdGlvbiBldmVudCBsaXN0IGFsZ29yaXRobXN9JyciLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTgiLAogIG51bWJlciA9ICAgICAgICI4IiwKICBwYWdlcyA9ICAgICAgICAiNDYyLS00NjIiLAogIG1vbnRoID0gICAgICAgIGF1ZywKICB5ZWFyID0gICAgICAgICAiMTk3NSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlNhdCBKYW4gMTggMTU6MTc6MzQgMTk5NyIsCiAgbm90ZSA9ICAgICAgICAgIlNlZSBcY2l0ZXtWYXVjaGVyOjE5NzU6Q1NFfS4iLAp9CgpAQXJ0aWNsZXtTbWl0aDoxOTc1OkNQVCwKICBhdXRob3IgPSAgICAgICAiQS4gSi4gU21pdGgiLAogIHRpdGxlID0gICAgICAgICJDb21tZW50cyBvbiBhIHBhcGVyIGJ5IHtULiBDLiBDaGVufSBhbmQge0kuIFQuIEhvfSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOCIsCiAgbnVtYmVyID0gICAgICAgIjgiLAogIHBhZ2VzID0gICAgICAgICI0NjMtLTQ2MyIsCiAgbW9udGggPSAgICAgICAgYXVnLAogIHllYXIgPSAgICAgICAgICIxOTc1IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTMwIChEYXRhIGhhbmRsaW5nIHRlY2huaXF1ZXMpIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gb2YgQ2FsaWZvcm5pYSwgQmVya2VsZXksIENBLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJhZHZhbnRhZ2VzOyBhbHRlcm5hdGl2ZXM7IGJpbmFyeSBjb2RlZCBkZWNpbWFsOyBjb2RlczsgY29kaW5nOyBjb21wcmVzc2lvbiBvZiBudW1iZXJzOyBkYXRhIGhhbmRsaW5nOyBkZWNpbWFsIGRhdGE7IGRlY29kaW5nOyBkZWxldGlvbnM7IEh1ZmZtYW4gY29kZXM7IGluc2VydGlvbnM7IHBlcm11dGF0aW9uczsgc3RvcmFnZSBlZmZpY2llbnQgcmVwcmVzZW50YXRpb247IHZhcmlhYmxlIGxlbmd0aCBjb2RlcyIsCiAgdHJlYXRtZW50ID0gICAgIkcgR2VuZXJhbCBSZXZpZXc7IFQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7R2hvc2g6MTk3NTpDU1IsCiAgYXV0aG9yID0gICAgICAgIlNha3RpIFAuIEdob3NoIiwKICB0aXRsZSA9ICAgICAgICAiQ29uc2VjdXRpdmUgU3RvcmFnZSBvZiBSZWxldmFudCBSZWNvcmRzIHdpdGggUmVkdW5kYW5jeSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOCIsCiAgbnVtYmVyID0gICAgICAgIjgiLAogIHBhZ2VzID0gICAgICAgICI0NjQtLTQ3MSIsCiAgbW9udGggPSAgICAgICAgYXVnLAogIHllYXIgPSAgICAgICAgICIxOTc1IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjhBNTAiLAogIE1SbnVtYmVyID0gICAgICI1MiA0NzQzIiwKICBtcnJldmlld2VyID0gICAiSy4gSC4gVi4gQm9vdGgiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiVGhpcyBwYXBlciBzdHVkaWVzIHRoZSBwcm9wZXJ0aWVzIG9mIGEgbmV3IGNsYXNzIG9mIGZpbGUgb3JnYW5pemF0aW9ucyAoQ1JXUikgd2hlcmUgcmVjb3JkcyByZWxldmFudCB0byBldmVyeSBxdWVyeSBhcmUgc3RvcmVkIGluIGNvbnNlY3V0aXZlIHN0b3JhZ2UgbG9jYXRpb25zIGJ1dCB0aGUgb3JnYW5pemF0aW9ucyBjb250YWluIHJlZHVuZGFuY3kuIFNvbWUgdGhlb3JlbXMgd2hpY2ggcHJvdmlkZSB0b29scyBmb3IgcmVkdWNpbmcgcmVkdW5kYW5jeSBpbiBDUldSIG9yZ2FuaXphdGlvbnMgaGF2ZSBiZWVuIGFsc28gZGV2ZWxvcGVkLiBSZWR1bmRhbmNpZXMgb2J0YWluZWQgYnkgdGhlIGFwcGxpY2F0aW9uIG9mIHRoZXNlIHRoZW9yZW1zIGFyZSBjb21wYXJlZCB3aXRoIHRoYXQgb2YgcXVlcnktaW52ZXJ0ZWQgZmlsZSBvcmdhbml6YXRpb25zLiBTb21lIENSV1Igb3JnYW5pemF0aW9ucyB3aXRoIG1pbmltdW0gcmVkdW5kYW5jeSBoYXZlIGFsc28gYmVlbiBkZXZlbG9wZWQgZm9yIHF1ZXJpZXMgd2hpY2ggc3BlY2lmeSBzZXRzIG9mIGtleXMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiSUJNIFJlcy4gTGFiLiwgU2FuIEpvc2UsIENBLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29uc2VjdXRpdmUgc3RvcmFnZTsgZGF0YSBwcm9jZXNzaW5nOyBmaWxlIG9yZ2FuaXNhdGlvbjsgZmlsZSBvcmdhbml6YXRpb25zOyBrZXlzOyBxdWVyeTsgcmVjb3JkczsgcmVkdW5kYW5jeTsgcmV0cmlldmFsIiwKICB0cmVhdG1lbnQgPSAgICAiTiBOZXcgRGV2ZWxvcG1lbnQ7IFQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7TGFtcG9ydDoxOTc1Ok1CUCwKICBhdXRob3IgPSAgICAgICAiTGVzbGllIExhbXBvcnQiLAogIHRpdGxlID0gICAgICAgICJNdWx0aXBsZSBCeXRlIFByb2Nlc3Npbmcgd2l0aCBGdWxsLVdvcmQgSW5zdHJ1Y3Rpb25zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE4IiwKICBudW1iZXIgPSAgICAgICAiOCIsCiAgcGFnZXMgPSAgICAgICAgIjQ3MS0tNDc1IiwKICBtb250aCA9ICAgICAgICBhdWcsCiAgeWVhciA9ICAgICAgICAgIjE5NzUiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L1RoZW9yeS9TZWlmZXJhcy8xOTc1LmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIkEgbWV0aG9kIGlzIGRlc2NyaWJlZCB3aGljaCBhbGxvd3MgcGFyYWxsZWwgcHJvY2Vzc2luZyBvZiBwYWNrZWQgZGF0YSBpdGVtcyB1c2luZyBvbmx5IG9yZGluYXJ5IGZ1bGwtd29yZCBjb21wdXRlciBpbnN0cnVjdGlvbnMsIGV2ZW4gdGhvdWdoIHRoZSBwcm9jZXNzaW5nIHJlcXVpcmVzIG9wZXJhdGlvbnMgd2hvc2UgZXhlY3V0aW9uIGlzIGNvbnRpbmdlbnQgdXBvbiB0aGUgdmFsdWUgb2YgYSBkYXR1bS4gSXQgcHJvdmlkZXMgYSB1c2VmdWwgdGVjaG5pcXVlIGZvciBwcm9jZXNzaW5nIHNtYWxsIGRhdGEgaXRlbXMgc3VjaCBhcyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjExMCAoU3lzdGVtcyBhbmFseXNpcyBhbmQgcHJvZ3JhbW1pbmcpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJNYXNzYWNodXNldHRzIENvbXB1dGVyIEFzc29jaWF0ZXMsIEluYy4sIFdha2VmaWVsZCwgTUEsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhbHBoYW51bWVyaWMgY2hhcmFjdGVyczsgYnl0ZSBwcm9jZXNzaW5nOyBjaGFyYWN0ZXIgcHJvY2Vzc2luZzsgZGF0YSBwcm9jZXNzaW5nOyBkYXR1bTsgZnVsbC13b3JkIGluc3RydWN0aW9uczsgcGFja2VkIGRhdGE7IHBhcmFsbGVsOyBwYXJhbGxlbCBwcm9jZXNzaW5nOyBwcm9jZXNzaW5nOyBwcm9ncmFtbWluZyIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7U2h3YXlkZXI6MTk3NTpDRFIsCiAgYXV0aG9yID0gICAgICAgIktlaXRoIFNod2F5ZGVyIiwKICB0aXRsZSA9ICAgICAgICAiQ29tYmluaW5nIERlY2lzaW9uIFJ1bGVzIGluIGEgRGVjaXNpb24gVGFibGUiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTgiLAogIG51bWJlciA9ICAgICAgICI4IiwKICBwYWdlcyA9ICAgICAgICAiNDc2LS00ODAiLAogIG1vbnRoID0gICAgICAgIGF1ZywKICB5ZWFyID0gICAgICAgICAiMTk3NSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJUaGUgdGVjaG5pcXVlcyBmb3IgbWluaW1pemluZyBsb2dpYyBjaXJjdWl0cyBhcmUgYXBwbGllZCB0byB0aGUgc2ltcGxpZmljYXRpb24gb2YgZGVjaXNpb24gdGFibGVzIGJ5IHRoZSBjb21iaW5pbmcgb2YgZGVjaXNpb24gcnVsZXMuIFRoaXMgbWV0aG9kIGlzIGxvZ2ljYWxseSBlcXVpdmFsZW50IHRvIHRoZSBRdWluZS1NY0NsdXNrZXkgbWV0aG9kIGZvciBmaW5kaW5nIHByaW1lIGltcGxpY2FudHMuIElmIHNvbWUgb2YgdGhlIGRlY2lzaW9uIHJ1bGVzIGltcGxpZWQgaW4gdGhlIEVMU0UgUnVsZSBvY2N1ciB3aXRoIGxvdyBmcmVxdWVuY3ksIHRoZW4gdGhlIEVMU0UgUnVsZSBjYW4gYmUgdXNlZCB0byBmdXJ0aGVyIHNpbXBsaWZ5IHRoZSBkZWNpc2lvbiB0YWJsZS4gU2V2ZXJhbCBvYmplY3RpdmVzIG1lcml0IGNvbnNpZGVyYXRpb24gaW4gb3B0aW1pemluZyBhIGRlY2lzaW9uIHRhYmxlLiAoMSkgcmVkdWNpbmcgbWFjaGluZSBleGVjdXRpb24gdGltZTsgKDIpIHJlZHVjaW5nIHByZXByb2Nlc3NpbmcgdGltZTsgKDMpIHJlZHVjaW5nIHJlcXVpcmVkIG1hY2hpbmUgbWVtb3J5OyAoNCkgcmVkdWNpbmcgdGhlIG51bWJlciBvZiBkZWNpc2lvbiBydWxlcy4gT2JqZWN0aXZlcyAoMykgYW5kICg0KSBjYW4gYmUgZnVydGhlcmVkIHdpdGggdGhlIGFib3ZlIG1ldGhvZHMuIE9iamVjdGl2ZSAoMSkgaXMgYWxzbyBhdHRhaW5lZCBpZiBvdmVyc3BlY2lmaWVkIGRlY2lzaW9uIHJ1bGVzIGFyZSBub3QgY29tYmluZWQuIE9iamVjdGl2ZSAoMikgbXVzdCBiZSBjb21wYXJlZCBhZ2FpbnN0IHRoZSBwb3RlbnRpYWwgYmVuZWZpdHMgb2Ygb2JqZWN0aXZlcyAoMSksICgzKSwgYW5kICg0KSBpbiBkZWNpZGluZyB3aGV0aGVyIHRvIHVzZSB0aGUgYWJvdmUgbWV0aG9kcy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjExMCAoU3lzdGVtcyBhbmFseXNpcyBhbmQgcHJvZ3JhbW1pbmcpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJTYW1zb25pdGUgQ29ycC4sIEZ1cm5pdHVyZSBEaXYuLCBEZW52ZXIsIENPLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiQm9vbGVhbiBtZXRob2Q7IGNvZGluZzsgY29tcHV0ZXIgc3lzdGVtcyBwcm9ncmFtbWluZzsgZGVjaXNpb24gcnVsZXM7IGRlY2lzaW9uIHRhYmxlOyBkZWNpc2lvbiB0YWJsZXM7IGZsb3djaGFydGluZzsgbWluaW1pc2F0aW9uOyBtaW5pbWl6aW5nIGxvZ2ljIGNpcmN1aXRzOyBwcmltZSBpbXBsaWNhbnRzOyBRdWluZSBNY0NsdXNrZXkgbWV0aG9kOyBzb3J0aW5nIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtTdGVlbGU6MTk3NTpNQ0csCiAgYXV0aG9yID0gICAgICAgIkd1eSBMLiB7U3RlZWxlLCBKci59IiwKICB0aXRsZSA9ICAgICAgICAiTXVsdGlwcm9jZXNzaW5nIENvbXBhY3RpZnlpbmcgR2FyYmFnZSBDb2xsZWN0aW9uIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE4IiwKICBudW1iZXIgPSAgICAgICAiOSIsCiAgcGFnZXMgPSAgICAgICAgIjQ5NS0tNTA4IiwKICBtb250aCA9ICAgICAgICBzZXAsCiAgeWVhciA9ICAgICAgICAgIjE5NzUiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0NvbXBpbGVyL2dhcmJhZ2UuY29sbGVjdGlvbi5iaWIiLAogIG5vdGUgPSAgICAgICAgICJTZWUgY29ycmlnZW5kdW0gXGNpdGV7U3RlZWxlOjE5NzY6Q01DfS4iLAogIGFic3RyYWN0ID0gICAgICJBbGdvcml0aG1zIGZvciBhIG11bHRpcHJvY2Vzc2luZyBjb21wYWN0aWZ5aW5nIGdhcmJhZ2UgY29sbGVjdG9yIGFyZSBwcmVzZW50ZWQgYW5kIGRpc2N1c3NlZC4gXHBhciBUaGUgc2ltcGxlIGNhc2Ugb2YgdHdvIHByb2Nlc3NvcnMsIG9uZSBwZXJmb3JtaW5nIExJU1AtbGlrZSBsaXN0IG9wZXJhdGlvbnMgYW5kIHRoZSBvdGhlciBwZXJmb3JtaW5nIGdhcmJhZ2UgY29sbGVjdGlvbiBjb250aW51b3VzbHksIGlzIHRob3JvdWdobHkgZXhhbWluZWQuIFRoZSBuZWNlc3NhcnkgY2FwYWJpbGl0aWVzIG9mIGVhY2ggcHJvY2Vzc29yIGFyZSBkZWZpbmVkLCBhcyB3ZWxsIGFzIGludGVycHJvY2Vzc29yIGNvbW11bmljYXRpb24gYW5kIGludGVybG9ja3MuIENvbXBsZXRlIHByb2NlZHVyZXMgZm9yIGdhcmJhZ2UgY29sbGVjdGlvbiBhbmQgZm9yIHN0YW5kYXJkIGxpc3QgcHJvY2Vzc2luZyBwcmltaXRpdmVzIGFyZSBwcmVzZW50ZWQgYW5kIHRob3JvdWdobHkgZXhwbGFpbmVkLiBQYXJ0aWN1bGFyIGF0dGVudGlvbiBpcyBnaXZlbiB0byB0aGUgcHJvYmxlbXMgb2YgbWFya2luZyBhbmQgcmVsb2NhdGluZyBsaXN0IGNlbGxzIHdoaWxlIGFub3RoZXIgcHJvY2Vzc29yIG1heSBiZSBvcGVyYXRpbmcgb24gdGhlbS4gVGhlIHByaW1hcnkgYWltIHRocm91Z2hvdXQgaXMgdG8gYWxsb3cgdGhlIGxpc3QgcHJvY2Vzc29yIHRvIHJ1biB1bmltcGVkZWQgd2hpbGUgdGhlIG90aGVyIHByb2Nlc3NvciByZWNsYWltcyBsaXN0IHN0b3JhZ2UuIFRoZSBtb3JlIGNvbXBsZXggY2FzZXMgaW52b2x2aW5nIHNldmVyYWwgbGlzdCBwcm9jZXNzb3JzIGFuZCBvbmUgb3IgbW9yZSBnYXJiYWdlIGNvbGxlY3Rpb24gcHJvY2Vzc29ycyBhcmUgYWxzbyBicmllZmx5IGRpc2N1c3NlZC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pOyBDNjE1MEogKE9wZXJhdGluZyBzeXN0ZW1zKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiSGFydmFyZCBVbml2LiwgQ2FtYnJpZGdlLCBNQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNhcGFiaWxpdGllczsgY29tcGFjdGlmaWNhdGlvbjsgY29tcHV0ZXIgc3lzdGVtcyBwcm9ncmFtbWluZzsgZGF0YSBzdHJ1Y3R1cmVzOyBmcmVlIHN0b3JhZ2U7IGdhcmJhZ2UgY29sbGVjdGlvbjsgZ2MgcHJvY2Vzc29yOyBpbnRlcmxvY2tzOyBpbnRlcnByb2Nlc3NvciBjb21tdW5pY2F0aW9uOyBMSVNQOyBsaXN0OyBsaXN0IHByb2Nlc3Npbmc7IGxpc3Qgc3RvcmFnZTsgbWFuYWdlbWVudDsgbXVsdGlwcm9jZXNzaW5nOyBtdWx0aXByb2Nlc3NpbmcgY29tcGFjdGlmeWluZyBnYXJiYWdlIGNvbGxlY3RvcjsgbXVsdGlwcm9jZXNzaW5nIHByb2dyYW1zOyBvcGVyYXRpb25zOyBwYXJhbGxlbCBwcm9jZXNzaW5nOyBwb2ludGVyczsgcmVjbGFpbWVyOyByZWxvY2F0aW9uOyBzZW1hcGhvcmVzOyBzdG9yYWdlOyBzdG9yYWdlIGFsbG9jYXRpb247IHN0b3JhZ2UgcmVjbGFtYXRpb247IHN5bmNocm9uaXphdGlvbiIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7QmVudGxleToxOTc1Ok1CUywKICBhdXRob3IgPSAgICAgICAiSm9uIExvdWlzIEJlbnRsZXkiLAogIHRpdGxlID0gICAgICAgICJNdWx0aWRpbWVuc2lvbmFsIEJpbmFyeSBTZWFyY2ggVHJlZXMgVXNlZCBmb3IgQXNzb2NpYXRpdmUgU2VhcmNoaW5nIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE4IiwKICBudW1iZXIgPSAgICAgICAiOSIsCiAgcGFnZXMgPSAgICAgICAgIjUwOS0tNTE3IiwKICBtb250aCA9ICAgICAgICBzZXAsCiAgeWVhciA9ICAgICAgICAgIjE5NzUiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0RhdGFiYXNlL2RhdGFiYXNlLmJpYiBhbmQgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EYXRhYmFzZS9HcmFlZmUuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiVGhpcyBwYXBlciBkZXZlbG9wcyB0aGUgbXVsdGlkaW1lbnNpb25hbCBiaW5hcnkgc2VhcmNoIHRyZWUgKG9yIGstZCB0cmVlLCB3aGVyZSBrIGlzIHRoZSBkaW1lbnNpb25hbGl0eSBvZiB0aGUgc2VhcmNoIHNwYWNlKSBhcyBhIGRhdGEgc3RydWN0dXJlIGZvciBzdG9yYWdlIG9mIGluZm9ybWF0aW9uIHRvIGJlIHJldHJpZXZlZCBieSBhc3NvY2lhdGl2ZSBzZWFyY2hlcy4gVGhlIGstZCB0cmVlIGlzIGRlZmluZWQgYW5kIGV4YW1wbGVzIGFyZSBnaXZlbi4gSXQgaXMgc2hvd24gdG8gYmUgcXVpdGUgZWZmaWNpZW50IGluIGl0cyBzdG9yYWdlIHJlcXVpcmVtZW50cy4gQSBzaWduaWZpY2FudCBhZHZhbnRhZ2Ugb2YgdGhpcyBzdHJ1Y3R1cmUgaXMgdGhhdCBhIHNpbmdsZSBkYXRhIHN0cnVjdHVyZSBjYW4gaGFuZGxlIG1hbnkgdHlwZXMgb2YgcXVlcmllcyB2ZXJ5IGVmZmljaWVudGx5LiBWYXJpb3VzIHV0aWxpdHkgYWxnb3JpdGhtcyBhcmUgZGV2ZWxvcGVkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbik7IEM3MjUwIChJbmZvcm1hdGlvbiBzdG9yYWdlIGFuZCByZXRyaWV2YWwpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjM7IDkwMSIsCiAgY29ycHNvdXJjZSA9ICAgIlN0YW5mb3JkIFVuaXYuLCBTdGFuZm9yZCwgQ0EsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhbGdvcml0aG07IGNvbnRlbnQtYWRkcmVzc2FibGUgc3RvcmFnZTsgZGF0YSBzdHJ1Y3R1cmVzOyBlZmZpY2llbnQ7IGhvbW9nZW5lb3VzIHNwbGl0dGluZzsgaW5mb3JtYXRpb247IGluZm9ybWF0aW9uIHJldHJpZXZhbDsgaW5mb3JtYXRpb24gcmV0cmlldmFsIHN5c3RlbXM7IGludGVyc2VjdGlvbiBxdWVyeTsgSy1EIHRyZWVzOyBtdWx0aWRpbWVuc2lvbmFsIGJpbmFyeSBzZWFyY2ggdHJlZTsgcGFydGlhbCBtYXRjaDsgcXVlcmllczsgcmV0cmlldmFsOyBydW5uaW5nIHRpbWVzOyBzaW5nbGUgZGF0YTsgc3RydWN0dXJlOyB0cmVlcyAobWF0aGVtYXRpY3MpOyB1dGlsaXR5IGFsZ29yaXRobXMiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0NsYXVkc29uOjE5NzU6RFNSLAogIGF1dGhvciA9ICAgICAgICJSLiBNYXJrIENsYXVkc29uIiwKICB0aXRsZSA9ICAgICAgICAiRGlnaXRhbCBTaW11bGF0aW9uIG9mIFJpdmVyIFBsYW5rdG9uIFBvcHVsYXRpb24gRHluYW1pY3MiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTgiLAogIG51bWJlciA9ICAgICAgICI5IiwKICBwYWdlcyA9ICAgICAgICAiNTE3LS01MjMiLAogIG1vbnRoID0gICAgICAgIHNlcCwKICB5ZWFyID0gICAgICAgICAiMTk3NSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJUaGlzIHBhcGVyIGRlYWxzIHdpdGggdGhlIGRldmVsb3BtZW50IG9mIGEgbWF0aGVtYXRpY2FsIG1vZGVsIGZvciBhbmQgdGhlIGRpZ2l0YWwgc2ltdWxhdGlvbiBpbiBGb3J0cmFuIElWIG9mIHBoeXRvcGxhbmt0b24gYW5kIHpvb3BsYW5rdG9uIHBvcHVsYXRpb24gZGVuc2l0aWVzIGluIGEgcml2ZXIgdXNpbmcgcHJldmlvdXNseSBkZXZlbG9wZWQgcmF0ZSBleHByZXNzaW9ucy4gQXMgYW4gaW52ZXN0aWdhdGlvbiBvZiB0aGUgYWNjdXJhY3kgb2YgdGhlIHNpbXVsYXRpb24gbWV0aG9kcywgYSBzaW11bGF0aW9uIG9mIHRoZSBhY3R1YWwgcG9wdWxhdGlvbiBkeW5hbWljcyBvZiBBc3RlcmlvbmVsbGEgaW4gdGhlIENvbHVtYmlhIFJpdmVyIHdhcyBtYWRlIGJhc2VkIG9uIGFwcHJveGltYXRpb25zIG9mIGNvbmRpdGlvbnMgaW4gdGhhdCByaXZlci4gVGhlIHN0dWR5IGRlbW9uc3RyYXRlcyB0aGUgdXNlZnVsbmVzcyBvZiBkaWdpdGFsIHNpbXVsYXRpb25zIGluIHRoZSBleGFtaW5hdGlvbnMgb2YgY2VydGFpbiBhcXVhdGljIGVjb3N5c3RlbXMsIGFzIHdlbGwgYXMgaW4gZW52aXJvbm1lbnRhbCBwbGFubmluZyBpbnZvbHZpbmcgc3VjaCBleGFtaW5hdGlvbnMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzczMzAgKEJpb2xvZ3kgYW5kIG1lZGljYWwgY29tcHV0aW5nKTsgQzc0NDAgKENpdmlsIGFuZCBtZWNoYW5pY2FsIGVuZ2luZWVyaW5nIGNvbXB1dGluZykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMzsgOTAxIiwKICBjb3Jwc291cmNlID0gICAiSGFuZm9yZCBIaWdoIFNjaG9vbCwgUmljaGxhbmQsIFdBLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYXBwcm94aW1hdGlvbnM7IGFxdWF0aWMgZWNvc3lzdGVtczsgY29tcHV0ZXIgc2ltdWxhdGlvbjsgZGlnaXRhbCBzaW11bGF0aW9uOyBlY29sb2dpY2FsIG1lY2hhbmlzbXM7IGVjb2xvZ3k7IGVudmlyb25tZW50YWwgZW5naW5lZXJpbmc7IGVudmlyb25tZW50YWwgc2ltdWxhdGlvbjsgZXhwcmVzc2lvbnM7IEZPUlRSQU47IG1hdGhlbWF0aWNhbCBtb2RlbGxpbmc7IG1hdGhlbWF0aWNhbCBtb2RlbHM7IHBvbGx1dGlvbjsgcmF0ZTsgcml2ZXIgcGxhbmt0b24gcG9wdWxhdGlvbiBkeW5hbWljczsgc2ltdWxhdGlvbjsgdmVsb2NpdHkgY3ljbGUiLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle1BpZXBtZWllcjoxOTc1Ok9CSSwKICBhdXRob3IgPSAgICAgICAiV2lsbGlhbSBGLiBQaWVwbWVpZXIiLAogIHRpdGxlID0gICAgICAgICJPcHRpbWFsIEJhbGFuY2luZyBvZiB7SS9PfSBSZXF1ZXN0cyB0byBEaXNrcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOCIsCiAgbnVtYmVyID0gICAgICAgIjkiLAogIHBhZ2VzID0gICAgICAgICI1MjQtLTUyNyIsCiAgbW9udGggPSAgICAgICAgc2VwLAogIHllYXIgPSAgICAgICAgICIxOTc1IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EaXN0cmlidXRlZC9RTEQvMTk3NS5iaWIiLAogIGFic3RyYWN0ID0gICAgICJEZXRlcm1pbmluZyBhIHBvbGljeSBmb3IgZWZmaWNpZW50IGFsbG9jYXRpb24gYW5kIHV0aWxpemF0aW9uIG9mIGEgc2V0IG9mIGRpc2sgZHJpdmVzIHdpdGggZGlmZmVyaW5nIG9wZXJhdGlvbmFsIGNoYXJhY3RlcmlzdGljcyBpcyBleGFtaW5lZCB1c2luZyBhbmFseXRpY2FsIHRlY2huaXF1ZXMuIFVzaW5nIHN0YW5kYXJkIHF1ZXVlaW5nIHRoZW9yeSwgZWFjaCBkaXNrIGRyaXZlIGlzIGNoYXJhY3Rlcml6ZWQgYnkgYSBxdWV1ZWluZyBtb2RlbCB3aXRoIHNlcnZpY2UgdGltZSBvZiBhIGRpc2sgZHJpdmUgcmVwcmVzZW50ZWQgYnkgdGhlIHByb2JhYmlsaXR5IGRlbnNpdHkgZnVuY3Rpb24gb2YgdGhlIHN1bSBvZiB0d28gdW5pZm9ybSBkaXN0cmlidXRpb25zLiBUb3RhbCByZXNwb25zZSB0aW1lIG9mIHRoZSBzZXQgb2YgZGlzayBtb2RlbHMgaXMgdGhlbiBtaW5pbWl6ZWQgdW5kZXIgdmFyeWluZyBsb2FkIGNvbmRpdGlvbnMuIFRoZSByZXN1bHRzIGluZGljYXRlIHRoYXQgZmFzdGVyIGRldmljZXMgc2hvdWxkIGhhdmUgaGlnaGVyIHV0aWxpemF0aW9uIGZhY3RvcnMgYW5kIHRoYXQgdGhlIG51bWJlciBvZiBkaWZmZXJlbnQgZGV2aWNlIHR5cGVzIHV0aWxpemVkIHRlbmRzIHRvIGRlY3JlYXNlIHdpdGggZGVjcmVhc2luZyBsb2FkLiBTcGVjaWZpYyBleGFtcGxlcyB1c2luZyAyMzE0IGFuZCAzMzMwIGNvbWJpbmF0aW9ucyBhcmUgZXhhbWluZWQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBhbm5vdGUgPSAgICAgICAiRGV0ZXJtaW5pbmcgYSBwb2xpY3kgZm9yIGVmZmljaWVudCBhbGxvY2F0aW9uIGFuZCB1dGlsaXphdGlvbiBvZiBhIHNldCBvZiBkaXNrIGRyaXZlcyB3aXRoIGRpZmZlcmluZyBvcGVyYXRpb25hbCBjaGFyYWN0ZXJpc3RpY3MgaXMgZXhhbWluZWQgdXNpbmcgYW5hbHl0aWNhbCB0ZWNobmlxdWVzLiBVc2luZyBzdGFuZGFyZCBxdWV1ZWluZyB0aGVvcnksIGVhY2ggZGlzayBkcml2ZSBpcyBjaGFyYWN0ZXJpemVkIGJ5IGEgcXVldWVpbmcgbW9kZWwgd2l0aCBzZXJ2aWNlIHRpbWUgb2YgYSBkaXNrIGRyaXZlIHJlcHJlc2VudGVkIGJ5IHRoZSBwcm9iYWJpbGl0eSBkZW5zaXR5IGZ1bmN0aW9uIG9mIHRoZSBzdW0gb2YgdHdvIHVuaWZvcm0gZGlzdHJpYnV0aW9ucy4gVG90YWwgcmVzcC4gdGltZSBvZiB0aGUgc2V0IG9mIGRpc2sgaXMgbWluaW0uIHVuZGVyIHZhcnkuIGxvYWQuIGNvbmQuIiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKTsgQzYxNTBKIChPcGVyYXRpbmcgc3lzdGVtcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjkyMTsgOTIyIiwKICBjb3Jwc291cmNlID0gICAiV2FzaGluZ3RvbiBVbml2LiwgU2FpbnQgTG91aXMsIE1PLCBVU0EiLAogIGNvdW50cnkgPSAgICAgICJVU0EiLAogIGRlc2NyaXB0b3JzID0gICJBbmFseXNpczsgcXVldWVpbmcgdGhlb3J5OyBxdWV1ZWluZyBzeXN0ZW07IG1vZGVsOyBkaXNrOyBzeXN0ZW0gZXZhbHVhdGlvbjsgc2NoZWR1bGluZzsgZGlzdHJpYnV0aW9uOyIsCiAgZW51bSA9ICAgICAgICAgIjM2NDkiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYWxsb2NhdGlvbjsgYW5hbHl0aWNhbCB0ZWNobmlxdWVzOyBiYWxhbmNpbmc7IGNoYXJhY3RlcmlzdGljczsgZGV2aWNlIGFzc2lnbm1lbnQ7IGRpc2M7IGRyaXZlczsgZWZmaWNpZW50IGFsbG9jYXRpb247IGZpbGUgb3JnYW5pc2F0aW9uOyBpbnB1dC9vdXRwdXQ7IG1vZGVsbGluZzsgb3BlcmF0aW9uYWw7IG9wdGltaXphdGlvbjsgcHJvYmFiaWxpdHkgLS0tIFF1ZXVlaW5nIFRoZW9yeTsgcHJvYmFiaWxpdHkgZGVuc2l0eSBmdW5jdGlvbjsgcXVldWVpbmcgdGhlb3J5OyBzY2hlZHVsaW5nOyBzdG9yYWdlOyB1dGlsaXphdGlvbiBmYWN0b3JzIiwKICBsYW5ndWFnZSA9ICAgICAiRW5nbGlzaCIsCiAgcmVmZXJlbmNlcyA9ICAgIjUiLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle1dlZ2JyZWl0OjE5NzU6TVBBLAogIGF1dGhvciA9ICAgICAgICJCZW4gV2VnYnJlaXQiLAogIHRpdGxlID0gICAgICAgICJNZWNoYW5pY2FsIFByb2dyYW0gQW5hbHlzaXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTgiLAogIG51bWJlciA9ICAgICAgICI5IiwKICBwYWdlcyA9ICAgICAgICAiNTI4LS01MzkiLAogIG1vbnRoID0gICAgICAgIHNlcCwKICB5ZWFyID0gICAgICAgICAiMTk3NSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4QTA1IiwKICBNUm51bWJlciA9ICAgICAiNTMgOTcwMSIsCiAgbXJyZXZpZXdlciA9ICAgIkEuIEQuIEJvb3RoIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9NaXNjL0Z1bmN0aW9uYWwuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiT25lIG1lYW5zIG9mIGFuYWx5emluZyBwcm9ncmFtIHBlcmZvcm1hbmNlIGlzIGJ5IGRlcml2aW5nIGNsb3NlZC1mb3JtIGV4cHJlc3Npb25zIGZvciB0aGVpciBleGVjdXRpb24gYmVoYXZpb3IuIFRoaXMgcGFwZXIgZGlzY3Vzc2VzIHRoZSBtZWNoYW5pemF0aW9uIG9mIHN1Y2ggYW5hbHlzaXMsIGFuZCBkZXNjcmliZXMgYSBzeXN0ZW0sIE1ldHJpYywgd2hpY2ggaXMgYWJsZSB0byBhbmFseXplIHNpbXBsZSBMaXNwIHByb2dyYW1zIGFuZCBwcm9kdWNlLCBmb3IgZXhhbXBsZSwgY2xvc2VkLWZvcm0gZXhwcmVzc2lvbnMgZm9yIHRoZWlyIHJ1bm5pbmcgdGltZSBleHByZXNzZWQgaW4gdGVybXMgb2Ygc2l6ZSBvZiBpbnB1dC4gVGhpcyBwYXBlciBwcmVzZW50cyB0aGUgcmVhc29ucyBmb3IgbWVjaGFuaXppbmcgcHJvZ3JhbSBhbmFseXNpcywgZGVzY3JpYmVzIHRoZSBvcGVyYXRpb24gb2YgTWV0cmljLCBleHBsYWlucyBpdHMgaW1wbGVtZW50YXRpb24sIGFuZCBkaXNjdXNzZXMgaXRzIGxpbWl0YXRpb25zLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTEwIChTeXN0ZW1zIGFuYWx5c2lzIGFuZCBwcm9ncmFtbWluZyk7IEM2MTQwRCAoSGlnaCBsZXZlbCBsYW5ndWFnZXMpOyBDNjE1MEcgKERpYWdub3N0aWMsIHRlc3RpbmcsIGRlYnVnZ2luZyBhbmQgZXZhbHVhdGluZyBzeXN0ZW1zKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiWGVyb3ggUGFsbyBBbHRvIFJlcy4gQ2VudGVyLCBQYWxvIEFsdG8sIENBLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYWxnZWJyYWljIG1hbmlwdWxhdGlvbjsgYW5hbHlzaXM7IGNvbXB1dGVyIHByb2dyYW1taW5nIGxhbmd1YWdlczsgZXhlY3V0aW9uIGJlaGF2aW91cjsgZnVuY3Rpb25hbCBsaXNwOyBnZW5lcmF0aW5nIGZ1bmN0aW9uczsgTElTUDsgbGlzcDsgbGlzdDsgbWVjaGFuaXphdGlvbjsgbWVjaGFuaXppbmcgcHJvZ3JhbTsgbWV0cmljOyBwZXJmb3JtYW5jZTsgcHJvY2Vzc2luZzsgcHJvZ3JhbSBhbmFseXNpczsgcHJvZ3JhbW1pbmc7IHByb2dyYW1taW5nIGxhbmd1YWdlczsgcHJvZ3JhbXM7IHJ1bm5pbmcgdGltZTsgc2l6ZSBvZiBpbnB1dCIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7R2Vycml0c2VuOjE5NzU6UFNELAogIGF1dGhvciA9ICAgICAgICJSb2IgR2Vycml0c2VuIiwKICB0aXRsZSA9ICAgICAgICAiQSBQcmVsaW1pbmFyeSBTeXN0ZW0gZm9yIHRoZSBEZXNpZ24gb2Yge0RCVEd9IERhdGEgU3RydWN0dXJlcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOCIsCiAgbnVtYmVyID0gICAgICAgIjEwIiwKICBwYWdlcyA9ICAgICAgICAiNTUxLS01NTciLAogIG1vbnRoID0gICAgICAgIG9jdCwKICB5ZWFyID0gICAgICAgICAiMTk3NSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGF0YWJhc2UvV2llZGVyaG9sZC5iaWIiLAogIGFic3RyYWN0ID0gICAgICJUaGUgZnVuY3Rpb25hbCBhcHByb2FjaCB0byBkYXRhYmFzZSBkZXNpZ24gaXMgaW50cm9kdWNlZC4gSW4gdGhpcyBhcHByb2FjaCB0aGUgZ29hbCBvZiBkZXNpZ24gaXMgdG8gZGVyaXZlIGEgZGF0YSBzdHJ1Y3R1cmUgd2hpY2ggaXMgY2FwYWJsZSBvZiBzdXBwb3J0aW5nIGEgc2V0IG9mIGFudGljaXBhdGVkIHF1ZXJpZXMgcmF0aGVyIHRoYW4gYSBzdHJ1Y3R1cmUgd2hpY2ggYGBtb2RlbHMgdGhlIGJ1c2luZXNzJycgaW4gc29tZSBvdGhlciB3YXkuIEFuIG9wZXJhdGlvbmFsIGNvbXB1dGVyIHByb2dyYW0gaXMgZGVzY3JpYmVkIHdoaWNoIHV0aWxpemVzIHRoZSBmdW5jdGlvbmFsIGFwcHJvYWNoIHRvIGRlc2lnbiBkYXRhIHN0cnVjdHVyZXMgY29uZm9ybWluZyB0byB0aGUgRGF0YSBCYXNlIFRhc2sgR3JvdXAgc3BlY2lmaWNhdGlvbnMuIFRoZSBhdXRvbWF0aWMgcHJvZ3JhbW1pbmcgdGVjaG5vbG9neSB1dGlsaXplZCBieSB0aGlzIHByb2dyYW0sIGFsdGhvdWdoIHR5cGljYWxseSB1c2VkIHRvIGdlbmVyYXRlIHByb2NlZHVyZSwgaXMgaGVyZSB1c2VkIHRvIGdlbmVyYXRlIGRlY2xhcmF0aXZlcy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBvZiBQZW5uc3lsdmFuaWEsIFBoaWxhZGVscGhpYSwgUEEsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhdXRvbWF0aWMgcHJvZ3JhbW1pbmc7IERhdGEgQmFzZTsgZGF0YSBwcm9jZXNzaW5nOyBkYXRhIHN0cnVjdHVyZXM7IGRhdGFiYXNlIGRlc2lnbjsgZnVuY3Rpb25hbCBhcHByb2FjaDsgbm9ucHJvY2VkdXJhbCBsYW5ndWFnZXM7IG9wZXJhdGlvbmFsIGNvbXB1dGVyIHByb2dyYW07IHByZWxpbWluYXJ5IHN5c3RlbTsgVGFzayBHcm91cDsgdHJhbnNsYXRpb24iLAogIHJldmlldyA9ICAgICAgICJBQ00gQ1IgNzYwNC0/PyIsCiAgdHJlYXRtZW50ID0gICAgIkEgQXBwbGljYXRpb247IFQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7U2h1OjE5NzU6Q0hMLAogIGF1dGhvciA9ICAgICAgICJOYW4gQy4gU2h1IGFuZCBCYXJyb24gQy4gSG91c2VsIGFuZCBWaW5jZW50IFkuIEx1bSIsCiAgdGl0bGUgPSAgICAgICAgIntDT05WRVJUfToge0F9IEhpZ2ggTGV2ZWwgVHJhbnNsYXRpb24gRGVmaW5pdGlvbiBMYW5ndWFnZSBmb3IgRGF0YSBDb252ZXJzaW9uIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE4IiwKICBudW1iZXIgPSAgICAgICAiMTAiLAogIHBhZ2VzID0gICAgICAgICI1NTctLTU2NyIsCiAgbW9udGggPSAgICAgICAgb2N0LAogIHllYXIgPSAgICAgICAgICIxOTc1IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EYXRhYmFzZS9XaWVkZXJob2xkLmJpYiIsCiAgbm90ZSA9ICAgICAgICAgIkFsc28gcHVibGlzaGVkIGluL2FzOiAxOSBBQ00gU0lHTU9EIENvbmYuIG9uIHRoZSBNYW5hZ2VtZW50IG9mIERhdGEsIEtpbmcoZWQpLCBNYXkuMTk3NS4iLAogIGFic3RyYWN0ID0gICAgICJUaGlzIHBhcGVyIGRlc2NyaWJlcyBhIGhpZ2ggbGV2ZWwgYW5kIG5vbnByb2NlZHVyYWwgdHJhbnNsYXRpb24gZGVmaW5pdGlvbiBsYW5ndWFnZSwgQ09OVkVSVCwgd2hpY2ggcHJvdmlkZXMgdmVyeSBwb3dlcmZ1bCBhbmQgaGlnaGx5IGZsZXhpYmxlIGRhdGEgcmVzdHJ1Y3R1cmluZyBjYXBhYmlsaXRpZXMuIEl0cyBkZXNpZ24gaXMgYmFzZWQgb24gdGhlIHNpbXBsZSB1bmRlcmx5aW5nIGNvbmNlcHQgb2YgYSBmb3JtIHdoaWNoIGVuYWJsZXMgdGhlIHVzZXJzIHRvIHZpc3VhbGl6ZSB0aGUgdHJhbnNsYXRpb24gcHJvY2Vzc2VzLCBhbmQgdGh1cyBtYWtlcyBkYXRhIHRyYW5zbGF0aW9uIGEgbXVjaCBzaW1wbGVyIHRhc2suIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMzAgKERhdGEgaGFuZGxpbmcgdGVjaG5pcXVlcyk7IEM2MTQwRCAoSGlnaCBsZXZlbCBsYW5ndWFnZXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJJQk0gUmVzLiBMYWIuLCBTYW4gSm9zZSwgQ0EsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IGNvbnZlcnQ7IGRhdGE7IGRhdGEgY29udmVyc2lvbjsgZGF0YSBoYW5kbGluZzsgZGF0YSBwcm9jZXNzaW5nIC0tLSBEYXRhIFN0cnVjdHVyZXM7IGRhdGEgdHJhbnNsYXRpb247IGRhdGFiYXNlIHJlb3JnYW5pc2F0aW9uOyBub25wcm9jZWR1cmFsIHRyYW5zbGF0aW9uIGRlZmluaXRpb24gbGFuZ3VhZ2U7IHByb2JsZW0gb3JpZW50ZWQgbGFuZ3VhZ2VzOyBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IHJlc3RydWN0dXJpbmc7IHRyYW5zbGF0aW9uIGRlZmluaXRpb24gbGFuZ3VhZ2U7IHV0aWxpdHkgcHJvZ3JhbSIsCiAgdHJlYXRtZW50ID0gICAgIkEgQXBwbGljYXRpb247IFAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7U21pdGg6MTk3NTpPUFIsCiAgYXV0aG9yID0gICAgICAgIkpvaG4gTWlsZXMgU21pdGggYW5kIFBoaWxpcCBZZW4tVGFuZyBDaGFuZyIsCiAgdGl0bGUgPSAgICAgICAgIk9wdGltaXppbmcgdGhlIFBlcmZvcm1hbmNlIG9mIGEgUmVsYXRpb25hbCBBbGdlYnJhIERhdGEgQmFzZSBJbnRlcmZhY2UiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTgiLAogIG51bWJlciA9ICAgICAgICIxMCIsCiAgcGFnZXMgPSAgICAgICAgIjU2OC0tNTc5IiwKICBtb250aCA9ICAgICAgICBvY3QsCiAgeWVhciA9ICAgICAgICAgIjE5NzUiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0RhdGFiYXNlL1dpZWRlcmhvbGQuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiQSByZWxhdGlvbmFsIGFsZ2VicmEgaW50ZXJmYWNlLCBjYWxsZWQgU1FVSVJBTCwgaXMgZGVzY3JpYmVkIGluIGRldGFpbC4gU1FVSVJBTCBzZWVrcyB0byBtaW5pbWl6ZSBxdWVyeSByZXNwb25zZSB0aW1lIGFuZCBzcGFjZSB1dGlsaXphdGlvbiBieTogKDEpIHBlcmZvcm1pbmcgZ2xvYmFsIHF1ZXJ5IG9wdGltaXphdGlvbiwgKDIpIGV4cGxvaXRpbmcgZGlzam9pbnQgYW5kIHBpcGVsaW5lZCBjb25jdXJyZW5jeSwgKDMpIGNvb3JkaW5hdGluZyBzb3J0IG9yZGVycyBpbiB0ZW1wb3JhcnkgcmVsYXRpb25zLCAoNCkgZW1wbG95aW5nIGRpcmVjdG9yeSBhbmFseXNpcywgYW5kICg1KSBtYWludGFpbmluZyBsb2NhbGl0eSBpbiBwYWdlIHJlZmVyZW5jZXMuIEFsZ29yaXRobXMgZm9yIGltcGxlbWVudGluZyB0aGUgb3BlcmF0b3JzIG9mIEUuIEYuIENvZGQncyByZWxhdGlvbmFsIGFsZ2VicmEgYXJlIHByZXNlbnRlZCwgYW5kIGEgbWV0aG9kb2xvZ3kgZm9yIGNvbXBvc2luZyB0aGVtIHRvIG9wdGltaXplIHRoZSBwZXJmb3JtYW5jZSBvZiBhIHBhcnRpY3VsYXIgdXNlciBxdWVyeSBpcyBkZXNjcmliZWQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gb2YgVXRhaCwgU2FsdCBMYWtlIENpdHksIFVULCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYXV0b21hdGljOyBkYXRhOyBkYXRhIHByb2Nlc3Npbmc7IGRpcmVjdG9yeSBhbmFseXNpczsgZmlsZTsgZ2xvYmFsIHF1ZXJ5IG9wdGltaXNhdGlvbjsgaW52ZXJ0ZWQ7IG1hbmlwdWxhdGlvbiBsYW5ndWFnZTsgb3B0aW1pc2F0aW9uOyBwaXBlbGluZWQgY29uY3VycmVuY3k7IHByb2dyYW1taW5nOyBxdWVyeSByZXNwb25zZTsgcXVlcnkgc3BlY2lmaWNhdGlvbjsgcmVsYXRpb25hbCBhbGdlYnJhIGRhdGFiYXNlIGludGVyZmFjZTsgc29ydCBvcmRlcnM7IHNwYWNlIHV0aWxpemF0aW9uOyBTUVVJUkFMOyB0aW1lOyB2ZXJ5IGhpZ2ggbGV2ZWwgbGFuZ3VhZ2UiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0FzdHJhaGFuOjE5NzU6SVNFLAogIGF1dGhvciA9ICAgICAgICJNLiBNLiBBc3RyYWhhbiBhbmQgRC4gRC4gQ2hhbWJlcmxpbiIsCiAgdGl0bGUgPSAgICAgICAgIkltcGxlbWVudGF0aW9uIG9mIGEge1N0cnVjdHVyZWQgRW5nbGlzaCBRdWVyeSBMYW5ndWFnZX0iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTgiLAogIG51bWJlciA9ICAgICAgICIxMCIsCiAgcGFnZXMgPSAgICAgICAgIjU4MC0tNTg4IiwKICBtb250aCA9ICAgICAgICBvY3QsCiAgeWVhciA9ICAgICAgICAgIjE5NzUiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0RhdGFiYXNlL0dyYWVmZS5iaWIgYW5kIGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGF0YWJhc2UvV2llZGVyaG9sZC5iaWIiLAogIG5vdGUgPSAgICAgICAgICJBbHNvIHB1Ymxpc2hlZCBpbi9hczogMTkgQUNNIFNJR01PRCBDb25mLiBvbiB0aGUgTWFuYWdlbWVudCBvZiBEYXRhLCBLaW5nKGVkKSwgTWF5LjE5NzUiLAogIGFic3RyYWN0ID0gICAgICJTRVFVRUwgaXMgYSBub25wcm9jZWR1cmFsIGxhbmd1YWdlIHdoaWNoIGRvZXMgbm90IG1ha2UgdXNlIG9mIHF1YW50aWZpZXJzIG9yIG90aGVyIG1hdGhlbWF0aWNhbCBjb25jZXB0czsgcmF0aGVyLCBTRVFVRUwgdXNlcyBhIGJsb2NrIHN0cnVjdHVyZWQgZm9ybWF0IG9mIEVuZ2xpc2gga2V5IHdvcmRzIChoZW5jZSB0aGUgYWNyb255bSBgYFN0cnVjdHVyZWQgRW5nbGlzaCBRdWVyeSBMYW5ndWFnZScnICkuIFNFUVVFTCBpcyBpbnRlbmRlZCBmb3IgaW50ZXJhY3RpdmUsIHByb2JsZW0gc29sdmluZyB1c2UgYnkgcGVvcGxlIHdobyBoYXZlIG5lZWQgZm9yIGludGVyYWN0aW9uIHdpdGggYSBsYXJnZSBkYXRhYmFzZSBidXQgd2hvIGFyZSBub3QgdHJhaW5lZCBwcm9ncmFtbWVycy4gVGhpcyBjbGFzcyBvZiB1c2VycyBpbmNsdWRlcyB1cmJhbiBwbGFubmVycywgc29jaW9sb2dpc3RzLCBhY2NvdW50YW50cywgYW5kIG90aGVyIHByb2Zlc3Npb25hbHMuIFRoZSBvYmplY3RpdmUgb2YgdGhlIGxhbmd1YWdlIGlzIHRvIHByb3ZpZGUgYSBzaW1wbGUsIGVhc3ktdG8tbGVhcm4gbWVhbnMgb2YgZXhwcmVzc2luZyB0aGUgcHJpbWl0aXZlIGFjdGlvbnMgdXNlZCBieSBwZW9wbGUgdG8gb2J0YWluIGluZm9ybWF0aW9uIGZyb20gdGFibGVzLCBzdWNoIGFzIGBgbG9vayB1cCBhIHZhbHVlIGluIGEgY29sdW1uLicnIFNFUVVFTCBhbmQgaXRzIGNvbXBhbmlvbiBsYW5ndWFnZSwgU1FVQVJFLCBoYXZlIGJlZW4gc2hvd24gdG8gYmUgcmVsYXRpb25hbGx5IGNvbXBsZXRlLCBpLmUuIGVxdWl2YWxlbnQgaW4gcG93ZXIgdG8gQ29kZCdzIHJlbGF0aW9uYWwgY2FsY3VsdXMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBhbm5vdGUgPSAgICAgICAiRGVzY3JpcHRpb24gb2YgaW1wbGVtZW50YXRpb24gb2YgU0VRVUVMIGludGVycHJldGVyLCBlc3BlY2lhbGx5IG9wdGltaXplciwgd2hpY2ggdXNlcyBpbmRleGVzIHRvIHNpbXBsaWZ5IHF1ZXJpZXMuIiwKICBjbGFzc2NvZGVzID0gICAiQzYxMzAgKERhdGEgaGFuZGxpbmcgdGVjaG5pcXVlcyk7IEM2MTQwRCAoSGlnaCBsZXZlbCBsYW5ndWFnZXMpOyBDNjE1MEMgKENvbXBpbGVycywgaW50ZXJwcmV0ZXJzIGFuZCBvdGhlciBwcm9jZXNzb3JzKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiSUJNIFJlcy4gRGl2LiwgU2FuIEpvc2UsIENBLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiQ0FDTTsgZGF0YSBhY2Nlc3Npbmc7IGRhdGEgaGFuZGxpbmc7IGRhdGEgb3JnYW5pc2F0aW9uOyBkYXRhIHByb2Nlc3Npbmc7IGRhdGEgc3RydWN0dXJlOyBkYXRhIHN0cnVjdHVyZXM7IGRhdGEgc3VibGFuZ3VhZ2U7IGRhdGFiYXNlOyBub25wcm9jZWR1cmFsIGxhbmd1YWdlOyBvcGVyYXRpb25zOyBvcHRpbWlzYXRpb24gYWxnb3JpdGhtczsgcHJvYmxlbSBvcmllbnRlZCBsYW5ndWFnZXM7IHByb2dyYW0gaW50ZXJwcmV0ZXJzOyBwcm90b3R5cGUgaW50ZXJwcmV0ZXI7IHJlbGF0aW9uIGRhdGFiYXNlIElCTSBTYW4gSm9zZTsgcmVsYXRpb25hbCBtb2RlbDsgU0VRVUVMOyBzdHJ1Y3R1cmVkIEVuZ2xpc2ggcXVlcnkgbGFuZ3VhZ2UiLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0dhdnJpbDoxOTc1Ok1QUCwKICBhdXRob3IgPSAgICAgICAiRmFuaWNhIEdhdnJpbCIsCiAgdGl0bGUgPSAgICAgICAgIk1lcmdpbmcgd2l0aCBQYXJhbGxlbCBQcm9jZXNzb3JzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE4IiwKICBudW1iZXIgPSAgICAgICAiMTAiLAogIHBhZ2VzID0gICAgICAgICI1ODgtLTU5MSIsCiAgbW9udGggPSAgICAgICAgb2N0LAogIHllYXIgPSAgICAgICAgICIxOTc1IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkNvbnNpZGVyIHR3byBsaW5lYXJseSBvcmRlcmVkIHNldHMgQSwgQiwgdmVydGljYWwgQSB2ZXJ0aWNhbCBlcXVhbHMgbSwgdmVydGljYWwgQiB2ZXJ0aWNhbCBlcXVhbHMgbiwgbSBsZXNzIHRoYW4gZXF1aXZhbGVudCB0byBuLCBhbmQgcCxwIGxlc3MgdGhhbiBlcXVpdmFsZW50IHRvIG0sIHBhcmFsbGVsIHByb2Nlc3NvcnMgd29ya2luZyBzeW5jaHJvbm91c2x5LiBUaGUgcGFwZXIgcHJlc2VudHMgYW4gYWxnb3JpdGhtIGZvciBtZXJnaW5nIEEgYW5kIEIgd2l0aCB0aGUgcCBwYXJhbGxlbCBwcm9jZXNzb3JzLCB3aGljaCByZXF1aXJlcyBhdCBtb3N0IDIgbGVmdCBicmFja2V0IGxvZy8vMigybSBwbHVzIDEpIHJpZ2h0IGJyYWNrZXQgcGx1cyBsZWZ0IGJyYWNrZXQgM20vcCByaWdodCBicmFja2V0IHBsdXMgbGVmdCBicmFja2V0IG0vcCByaWdodCBicmFja2V0IGxlZnQgYnJhY2tldCBsb2cvLzIobi9tKSByaWdodCBicmFja2V0IHN0ZXBzLiBJZiBuIGVxdWFscyAyKiogYmV0YSBtICggYmV0YSBhbiBpbnRlZ2VyKSwgdGhlIGFsZ29yaXRobSByZXF1aXJlcyBhdCBtb3N0IDIgbGVmdCBicmFja2V0IGxvZy8vMihtIHBsdXMgMSkgcmlnaHQgYnJhY2tldCBwbHVzIGxlZnQgYnJhY2tldCBtL3AgcmlnaHQgYnJhY2tldCAoMiBwbHVzIGJldGEgKSBzdGVwcy4gSW4gdGhlIGNhc2Ugd2hlcmUgbSBhbmQgbiBhcmUgb2YgdGhlIHNhbWUgb3JkZXIgb2YgbWFnbml0dWRlLCBpLmUuIG4gZXF1YWxzIGttIHdpdGggayBiZWluZyBhIGNvbnN0YW50LCB0aGUgYWxnb3JpdGhtIHJlcXVpcmVzIDIgbGVmdCBicmFja2V0IGxvZy8vMihtIHBsdXMgMSkgcmlnaHQgYnJhY2tldCBwbHVzIHJpZ2h0IGJyYWNrZXQgbS9wIHJpZ2h0IGJyYWNrZXQgKDMgcGx1cyBrKSBzdGVwcy4gVGhlc2UgcGVyZm9ybWFuY2VzIGNvbXBhcmUgdmVyeSBmYXZvcmFibHkgd2l0aCB0aGUgcHJldmlvdXMgYmVzdCBwYXJhbGxlbCBtZXJnaW5nIGFsZ29yaXRobSwgQmF0Y2hlcidzIGFsZ29yaXRobSwgd2hpY2ggcmVxdWlyZXMgbi9wIHBsdXMgKChtIHBsdXMgbikvMnApbG9nLy8ybSBzdGVwcyBpbiB0aGUgZ2VuZXJhbCBjYXNlIGFuZCBrbS9wIHBsdXMgKChrIHBsdXMgbCkvMikobS9wKWxvZy8vMm0gaW4gdGhlIHNwZWNpYWwgY2FzZSB3aGVyZSBuIGVxdWFscyBrbS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDI0MCAoUHJvZ3JhbW1pbmcgYW5kIGFsZ29yaXRobSB0aGVvcnkpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjI7IDcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIG9mIElsbGlub2lzLCBDaGljYWdvLCBJTCwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgIkJhdGNoZXIncyBhbGdvcml0aG07IGNvbXB1dGVyIHN5c3RlbXMgcHJvZ3JhbW1pbmcgLS0tIFNvcnRpbmc7IGNvbXB1dGVyIHN5c3RlbXMsIGRpZ2l0YWw7IGxpbmVhcmx5IG9yZGVyZWQgc2V0czsgbWVyZ2luZzsgcGFyYWxsZWwgYmluYXJ5IGluc2VydGlvbjsgcGFyYWxsZWwgcHJvY2Vzc2luZzsgcGFyYWxsZWwgcHJvY2Vzc29yczsgcHJvZ3JhbW1pbmcgdGhlb3J5IiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtSZWlzZXI6MTk3NTpIUkUsCiAgYXV0aG9yID0gICAgICAgIk0uIFJlaXNlciBhbmQgSC4gS29iYXlhc2hpIiwKICB0aXRsZSA9ICAgICAgICAie0hvcm5lcn0ncyBSdWxlIGZvciB0aGUgRXZhbHVhdGlvbiBvZiBHZW5lcmFsIENsb3NlZCBRdWV1ZWluZyBOZXR3b3JrcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOCIsCiAgbnVtYmVyID0gICAgICAgIjEwIiwKICBwYWdlcyA9ICAgICAgICAiNTkyLS01OTMiLAogIG1vbnRoID0gICAgICAgIG9jdCwKICB5ZWFyID0gICAgICAgICAiMTk3NSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGlzdHJpYnV0ZWQvUUxELzE5NzUuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiVGhlIHNvbHV0aW9uIG9mIHNlcGFyYWJsZSBjbG9zZWQgcXVldWVpbmcgbmV0d29ya3MgcmVxdWlyZXMgdGhlIGV2YWx1YXRpb24gb2YgaG9tb2dlbmVvdXMgbXVsdGlub21pYWwgZXhwcmVzc2lvbnMuIFRoZSBudW1iZXIgb2YgdGVybXMgaW4gdGhvc2UgZXhwcmVzc2lvbnMgZ3Jvd3MgY29tYmluYXRvcmlhbGx5IHdpdGggdGhlIHNpemUgb2YgdGhlIG5ldHdvcmsgc3VjaCB0aGF0IGEgZGlyZWN0IHN1bW1hdGlvbiBtYXkgYmVjb21lIGltcHJhY3RpY2FsLiBBbiBhbGdvcml0aG0gaXMgZ2l2ZW4gd2hpY2ggZG9lcyBub3Qgc2hvdyBhIGNvbWJpbmF0b3JpYWwgb3BlcmF0aW9uIGNvdW50LiBUaGUgYWxnb3JpdGhtIGlzIGJhc2VkIG9uIGEgZ2VuZXJhbGl6YXRpb24gb2YgSG9ybmVyJ3MgcnVsZSBmb3IgcG9seW5vbWlhbHMuIEl0IGlzIGFsc28gc2hvd24gaG93IG1lYW4gcXVldWUgc2l6ZSBhbmQgdGhyb3VnaHB1dCBjYW4gYmUgb2J0YWluZWQgYXQgbmVnbGlnaWJsZSBleHRyYSBjb3N0IG9uY2UgdGhlIG5vcm1hbGl6YXRpb24gY29uc3RhbnQgaXMgZXZhbHVhdGVkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgYW5ub3RlID0gICAgICAgIkFuIGFsZ29yaXRobSBpcyBnaXZlbiB3aGljaCBtYWtlcyBpdCBwb3NzaWJsZSB0byBzb2x2ZSBzZXBhcmFibGUgY2xvc2VkIHF1ZXVlaW5nIG5ldHdvcmtzIGluZGVwZW5kZW50IGZyb20gdGhlIHNpemUgb2YgdGhlIG5ldHdvcmsuIFRoZSBhbGdvcml0aG0gZG9lcyBub3Qgc2hvdyBhIGNvbWJpbmF0b3JpYWwgb3BlcmF0aW9uIGNvdW50OyBpdCBpcyBiYXNlZCBvbiBhIGdlbmVyYWxpemF0aW9uIG9mIEhvcm5lcidzIHJ1bGUgZm9yIHBvbHlub21pYWxzLiBBbHNvIGlzIHNob3duIGhvdyBtZWFuIHF1ZXVlIHNpemUgYW5kIHRocm91Z2hwdXQgY2FuIGJlIG9idGFpbmVkIGF0IG5lZ2xpZ2libGUgZXh0cmEgY29zdCBvbmNlIHRoZSBub3JtYWxpemF0aW9uIGNvbnN0YW50IGlzIGV2YWx1YXRlZC4iLAogIGNsYXNzY29kZXMgPSAgICJCMDI0MEMgKFF1ZXVlaW5nIHRoZW9yeSk7IEMxMTQwQyAoUXVldWVpbmcgdGhlb3J5KSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzOyA5MTI7IDkyMiIsCiAgY29ycHNvdXJjZSA9ICAgIklCTSBUaG9tYXMgSi4gV2F0c29uIFJlcy4gQ2VudGVyLCBZb3JrdG93biBIZWlnaHRzLCBOWSwgVVNBIiwKICBjb3VudHJ5ID0gICAgICAiVVNBIiwKICBkZXNjcmlwdG9ycyA9ICAiQ2xvc2VkIHF1ZXVlaW5nIG5ldHdvcms7IGFsZ29yaXRobTsgZXZhbHVhdGlvbjsiLAogIGVudW0gPSAgICAgICAgICIzNjYwIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNsb3NlZCBxdWV1ZWluZyBuZXR3b3JrczsgY29tYmluYXRvcmlhbCBvcGVyYXRpb24gY291bnQ7IGV4cHJlc3Npb25zOyBob21vZ2VuZW91cyBtdWx0aW5vbWlhbDsgSG9ybmVyJ3MgcnVsZTsgbG9hZCBkZXBlbmRlbnQgc2VydmljZSByYXRlOyBtdWx0aW5vbWlhbCBzdW1zOyBvcGVyYXRpb25zIHJlc2VhcmNoIC0tLSBDb21wdXRlciBBcHBsaWNhdGlvbnM7IHByb2JhYmlsaXR5OyBxdWV1ZWluZyB0aGVvcnkiLAogIGxhbmd1YWdlID0gICAgICJFbmdsaXNoIiwKICByZWZlcmVuY2VzID0gICAiOCIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7U2FsdG9uOjE5NzU6VlNNLAogIGF1dGhvciA9ICAgICAgICJHLiBTYWx0b24gYW5kIEEuIFdvbmcgYW5kIEMuIFMuIFlhbmciLAogIHRpdGxlID0gICAgICAgICJBIFZlY3RvciBTcGFjZSBNb2RlbCBmb3IgQXV0b21hdGljIEluZGV4aW5nIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE4IiwKICBudW1iZXIgPSAgICAgICAiMTEiLAogIHBhZ2VzID0gICAgICAgICI2MTMtLTYyMCIsCiAgbW9udGggPSAgICAgICAgbm92LAogIHllYXIgPSAgICAgICAgICIxOTc1IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EYXRhYmFzZS9XaWVkZXJob2xkLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIkluIGEgZG9jdW1lbnQgcmV0cmlldmFsLCBvciBvdGhlciBwYXR0ZXJuIG1hdGNoaW5nIGVudmlyb25tZW50IHdoZXJlIHN0b3JlZCBlbnRpdGllcyAoZG9jdW1lbnRzKSBhcmUgY29tcGFyZWQgd2l0aCBlYWNoIG90aGVyIG9yIHdpdGggaW5jb21pbmcgcGF0dGVybnMgKHNlYXJjaCByZXF1ZXN0cyksIGl0IGFwcGVhcnMgdGhhdCB0aGUgYmVzdCBpbmRleGluZyAocHJvcGVydHkpIHNwYWNlIGlzIG9uZSB3aGVyZSBlYWNoIGVudGl0eSBsaWVzIGFzIGZhciBhd2F5IGZyb20gdGhlIG90aGVycyBhcyBwb3NzaWJsZTsgaW4gdGhlc2UgY2lyY3Vtc3RhbmNlcyB0aGUgdmFsdWUgb2YgYW4gaW5kZXhpbmcgc3lzdGVtIG1heSBiZSBleHByZXNzaWJsZSBhcyBhIGZ1bmN0aW9uIG9mIHRoZSBkZW5zaXR5IG9mIHRoZSBvYmplY3Qgc3BhY2U7IGluIHBhcnRpY3VsYXIsIHJldHJpZXZhbCBwZXJmb3JtYW5jZSBtYXkgY29ycmVsYXRlIGludmVyc2VseSB3aXRoIHNwYWNlIGRlbnNpdHkuIEFuIGFwcHJvYWNoIGJhc2VkIG9uIHNwYWNlIGRlbnNpdHkgY29tcHV0YXRpb25zIGlzIHVzZWQgdG8gY2hvb3NlIGFuIG9wdGltdW0gaW5kZXhpbmcgdm9jYWJ1bGFyeSBmb3IgYSBjb2xsZWN0aW9uIG9mIGRvY3VtZW50cy4gVHlwaWNhbCBldmFsdWF0aW9uIHJlc3VsdHMgYXJlIHNob3duLCBkZW1vbnN0cmF0aW5nIHRoZSB1c2VmdWxuZXNzIG9mIHRoZSBtb2RlbC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGFubm90ZSA9ICAgICAgICJPcHRpbWl6aW5nIG9mIHJlbGF0aW9uc2hpcCBzdHJlbmd0aCBiYXNlZCBkYXRhIGFjY2Vzcy4iLAogIGNsYXNzY29kZXMgPSAgICJDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKTsgQzcyNDAgKEluZm9ybWF0aW9uIGFuYWx5c2lzIGFuZCBpbmRleGluZykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMzsgOTAxIiwKICBjb3Jwc291cmNlID0gICAiQ29ybmVsbCBVbml2LiwgSXRoYWNhLCBOWSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImF1dG9tYXRpYyBpbmRleGluZzsgY29udGVudCBhbmFseXNpczsgZGVuc2l0eTsgZG9jdW1lbnQgcmV0cmlldmFsOyBpbmNvbWluZyBwYXR0ZXJuczsgaW5kZXhpbmc7IGluZm9ybWF0aW9uIHNjaWVuY2U7IGxpYnJhcnkgbWVjaGFuaXNhdGlvbjsgcGF0dGVybiBtYXRjaGluZyBlbnZpcm9ubWVudDsgc3BhY2U7IHZlY3RvciBzcGFjZSBtb2RlbCIsCiAgdHJlYXRtZW50ID0gICAgIkEgQXBwbGljYXRpb247IFAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7Qm95Y2U6MTk3NTpTUVIsCiAgYXV0aG9yID0gICAgICAgIlJheW1vbmQgRi4gQm95Y2UgYW5kIERvbmFsZCBELiBDaGFtYmVybGluIGFuZCBXLiBGcmFuayB7S2luZywgSUlJfSBhbmQgTWljaGFlbCBNLiBIYW1tZXIiLAogIHRpdGxlID0gICAgICAgICJTcGVjaWZ5aW5nIFF1ZXJpZXMgYXMgUmVsYXRpb25hbCBFeHByZXNzaW9uczogVGhlIFNxdWFyZSBEYXRhIFN1Ymxhbmd1YWdlIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE4IiwKICBudW1iZXIgPSAgICAgICAiMTEiLAogIHBhZ2VzID0gICAgICAgICI2MjEtLTYyOCIsCiAgbW9udGggPSAgICAgICAgbm92LAogIHllYXIgPSAgICAgICAgICIxOTc1IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EYXRhYmFzZS9XaWVkZXJob2xkLmJpYiIsCiAgbm90ZSA9ICAgICAgICAgIkFsc28gcHVibGlzaGVkIGluL2FzOiBpbiBEb3VxdWU3NCAoSUZJUCBUQy0yKSwgMTk3NC4gQWxzbyBwdWJsaXNoZWQgaW4vYXM6IEFDTSBTSUdQTEFOLVNJR0lSIDE5NzQsIE5hbmNlIChlZCksIHBwLiAzMS0tNDcuIEFsc28gcHVibGlzaGVkIGluL2FzOiBJQk0sIFNhbiBKb3NlIFJlc2VhcmNoIFJlcG9ydCBSSjEyOTEsIE9jdG9iZXIgMTk3My4iLAogIGFic3RyYWN0ID0gICAgICJUaGlzIHBhcGVyIHByZXNlbnRzIGEgZGF0YSBzdWJsYW5ndWFnZSBjYWxsZWQgU1FVQVJFLCBpbnRlbmRlZCBmb3IgdXNlIGluIGFkIGhvYywgaW50ZXJhY3RpdmUgcHJvYmxlbSBzb2x2aW5nIGJ5IG5vbi1jb21wdXRlciBzcGVjaWFsaXN0cy4gU1FVQVJFIGlzIGJhc2VkIG9uIHRoZSByZWxhdGlvbmFsIG1vZGVsIG9mIGRhdGEsIGFuZCBpcyBzaG93biB0byBiZSByZWxhdGlvbmFsbHkgY29tcGxldGU7IGhvd2V2ZXIsIGl0IGF2b2lkcyB0aGUgcXVhbnRpZmllcnMgYW5kIGJvdW5kIHZhcmlhYmxlcyByZXF1aXJlZCBieSBsYW5ndWFnZXMgYmFzZWQgb24gdGhlIHJlbGF0aW9uYWwgY2FsY3VsdXMuIEZhY2lsaXRpZXMgZm9yIHF1ZXJ5LCBpbnNlcnRpb24sIGRlbGV0aW9uLCBhbmQgdXBkYXRlIG9uIHRhYnVsYXIgZGF0YSBiYXNlcyBhcmUgZGVzY3JpYmVkLiBBIHN5bnRheCBpcyBnaXZlbiwgYW5kIHN1Z2dlc3Rpb25zIGFyZSBtYWRlIGZvciBhbHRlcm5hdGl2ZSBzeW50YXhlcywgaW5jbHVkaW5nIGEgc3ludGF4IGJhc2VkIG9uIEVuZ2xpc2gga2V5IHdvcmRzIGZvciB1c2VycyB3aXRoIGxpbWl0ZWQgbWF0aGVtYXRpY2FsIGJhY2tncm91bmQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMzAgKERhdGEgaGFuZGxpbmcgdGVjaG5pcXVlcyk7IEM2MTQwRCAoSGlnaCBsZXZlbCBsYW5ndWFnZXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJJQk0gUmVzLiBMYWIuLCBTYW4gSm9zZSwgQ0EsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjYXN1YWwgdXNlcjsgZGF0YSBwcm9jZXNzaW5nOyBkYXRhIHN1Ymxhbmd1YWdlOyBkYXRhYmFzZTsgRW5nbGlzaCBrZXkgd29yZHM7IGludGVyYWN0aXZlIHByb2JsZW07IG5vbnByb2NlZHVyYWwgbGFuZ3VhZ2U7IHByb2JsZW0gb3JpZW50ZWQgbGFuZ3VhZ2VzOyBxdWVyeSBsYW5ndWFnZXM7IHJlbGF0aW9uYWwgY2FsY3VsdXM7IHJlbGF0aW9uYWwgZXhwcmVzc2lvbnM7IFNRVUFSRTsgc3F1YXJlOyB0YWJ1bGFyIGRhdGEiLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0xlZGdhcmQ6MTk3NTpHQ1MsCiAgYXV0aG9yID0gICAgICAgIkhlbnJ5IEYuIExlZGdhcmQgYW5kIE1pY2hhZWwgTWFyY290dHkiLAogIHRpdGxlID0gICAgICAgICJBIGdlbmVhbG9neSBvZiBjb250cm9sIHN0cnVjdHVyZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTgiLAogIG51bWJlciA9ICAgICAgICIxMSIsCiAgcGFnZXMgPSAgICAgICAgIjYyOS0tNjM5IiwKICBtb250aCA9ICAgICAgICBub3YsCiAgeWVhciA9ICAgICAgICAgIjE5NzUiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiVGhlIGNsYXNzaWMgcmVzdWx0IG9mIEJvaG0gYW5kIEphY29waW5pIG9uIHRoZSB0aGVvcmV0aWNhbCBjb21wbGV0ZW5lc3Mgb2YgaWYtdGhlbi1lbHNlIGFuZCB3aGlsZS1kbyBpcyBkaXNjdXNzZWQuIFNldmVyYWwgcmVjZW50IGlkZWFzIG9uIGNvbnRyb2wgc3RydWN0dXJlcyBhcmUgdGhlbiBleHBsb3JlZC4gVGhlc2UgaW5jbHVkZSBhIHJldmlldyBvZiB2YXJpb3VzIG90aGVyIGNvbnRyb2wgc3RydWN0dXJlcywgcmVzdWx0cyBvbiB0aW1lXHNsYXNoIHNwYWNlIGxpbWl0YXRpb25zLCBhbmQgdGhlb3JlbXMgcmVsYXRpbmcgdGhlIHJlbGF0aXZlIHBvd2VyIG9mIGNvbnRyb2wgc3RydWN0dXJlcyB1bmRlciBzZXZlcmFsIG5vdGlvbnMgb2YgZXF1aXZhbGVuY2UuIEluIGNvbmNsdXNpb24sIHRoZSBpbXBhY3Qgb2YgdGhlb3JldGljYWwgcmVzdWx0cyBvbiB0aGUgcHJhY3RpY2luZyBwcm9ncmFtbWVyIGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBvbmUtaW4sIG9uZS1vdXQgY29udHJvbCBzdHJ1Y3R1cmVzIGFzIG9wZXJhdGlvbmFsIGFic3RyYWN0aW9ucyBhcmUgZGlzY3Vzc2VkLiBJdCBpcyBhcmd1ZWQgZnVydGhlciB0aGF0IHRoZXJlIGlzIGluc3VmZmljaWVudCBldmlkZW5jZSB0byB3YXJyYW50IG1vcmUgdGhhbiBpZi10aGVuLWVsc2UsIHdoaWxlLWRvLCBhbmQgdGhlaXIgdmFyaWFudHMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQyOTAgKE90aGVyIGNvbXB1dGVyIHRoZW9yeSk7IEM2MTEwIChTeXN0ZW1zIGFuYWx5c2lzIGFuZCBwcm9ncmFtbWluZykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIG9mIE1hc3NhY2h1c2V0dHMsIEFtaGVyc3QsIE1BLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzOyBnbyB0byBzdGF0ZW1lbnRzOyBsYW5ndWFnZSBkZXNpZ247IG9wZXJhdGlvbmFsIGFic3RyYWN0aW9uczsgUEFTQ0FMOyBwcm9ncmFtIGNvbnRyb2wgc3RydWN0dXJlczsgcHJvZ3JhbW1pbmc7IHN0cnVjdHVyZWQgcHJvZ3JhbW1pbmciLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0dyYWhhbToxOTc1OlBTRSwKICBhdXRob3IgPSAgICAgICAiU3VzYW4gTC4gR3JhaGFtIGFuZCBTdGV2ZW4gUC4gUmhvZGVzIiwKICB0aXRsZSA9ICAgICAgICAiUHJhY3RpY2FsIFN5bnRhY3RpYyBFcnJvciBSZWNvdmVyeSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOCIsCiAgbnVtYmVyID0gICAgICAgIjExIiwKICBwYWdlcyA9ICAgICAgICAiNjM5LS02NTAgKG9yIDYzOS0tNjQ5Pz8pIiwKICBtb250aCA9ICAgICAgICBub3YsCiAgeWVhciA9ICAgICAgICAgIjE5NzUiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiVGhpcyBwYXBlciBkZXNjcmliZXMgYSByZWNvdmVyeSBzY2hlbWUgZm9yIHN5bnRheCBlcnJvcnMgd2hpY2ggcHJvdmlkZXMgYXV0b21hdGljYWxseS1nZW5lcmF0ZWQgaGlnaCBxdWFsaXR5IHJlY292ZXJ5IHdpdGggZ29vZCBkaWFnbm9zdGljIGluZm9ybWF0aW9uIGF0IHJlbGF0aXZlbHkgbG93IGNvc3QuIFByZXZpb3VzIHJlY292ZXJ5IHRlY2huaXF1ZXMgYXJlIHN1bW1hcml6ZWQgYW5kIGVtcGlyaWNhbCBjb21wYXJpc29ucyBhcmUgbWFkZS4gU3VnZ2VzdGlvbnMgZm9yIGZ1cnRoZXIgcmVzZWFyY2ggb24gdGhpcyB0b3BpYyBjb25jbHVkZSB0aGUgcGFwZXIuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMTAgKFN5c3RlbXMgYW5hbHlzaXMgYW5kIHByb2dyYW1taW5nKTsgQzYxNTBDIChDb21waWxlcnMsIGludGVycHJldGVycyBhbmQgb3RoZXIgcHJvY2Vzc29ycyk7IEM2MTUwRyAoRGlhZ25vc3RpYywgdGVzdGluZywgZGVidWdnaW5nIGFuZCBldmFsdWF0aW5nIHN5c3RlbXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBvZiBDYWxpZm9ybmlhLCBCZXJrZWxleSwgQ0EsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21waWxlcnM7IGNvbXB1dGVyIHByb2dyYW1taW5nIGxhbmd1YWdlczsgY29ycmVjdGlvbjsgZGVidWdnaW5nOyBkaWFnbm9zdGljIGluZm9ybWF0aW9uOyBlcnJvcjsgZXJyb3IgY29tcGVuc2F0aW9uOyBlcnJvciBjb3JyZWN0aW9uOyBwYXJzaW5nOyBwcm9ncmFtIGNvbXBpbGVyczsgcHJvZ3JhbSBkZWJ1Z2dpbmc7IHNpbXBsZSBwcmVjZWRlbmNlOyBzeW50YWN0aWMgZXJyb3IgcmVjb3Zlcnk7IHN5c3RlbSByZWNvdmVyeSIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7Qml0bmVyOjE5NzU6QlBULAogIGF1dGhvciA9ICAgICAgICJKYW1lcyBSLiBCaXRuZXIgYW5kIEVkd2FyZCBNLiBSZWluZ29sZCIsCiAgdGl0bGUgPSAgICAgICAgIkJhY2t0cmFjayBQcm9ncmFtbWluZyBUZWNobmlxdWVzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE4IiwKICBudW1iZXIgPSAgICAgICAiMTEiLAogIHBhZ2VzID0gICAgICAgICI2NTEtLTY1NiIsCiAgbW9udGggPSAgICAgICAgbm92LAogIHllYXIgPSAgICAgICAgICIxOTc1IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9UaGVvcnkvZ3JhcGguY29sb3JpbmcuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiVGhlIHB1cnBvc2Ugb2YgdGhpcyBwYXBlciBpcyB0d29mb2xkLiBGaXJzdCwgYSBicmllZiBleHBvc2l0aW9uIG9mIHRoZSBnZW5lcmFsIGJhY2t0cmFjayB0ZWNobmlxdWUgYW5kIGl0cyBoaXN0b3J5IGlzIGdpdmVuLiBTZWNvbmQsIGl0IGlzIHNob3duIGhvdyB0aGUgdXNlIG9mIG1hY3JvcyBjYW4gY29uc2lkZXJhYmx5IHNob3J0ZW4gdGhlIGNvbXB1dGF0aW9uIHRpbWUgaW4gbWFueSBjYXNlcy4gSW4gcGFydGljdWxhciwgdGhpcyB0ZWNobmlxdWUgaGFzIGFsbG93ZWQgdGhlIHNvbHV0aW9uIG9mIHR3byBwcmV2aW91c2x5IG9wZW4gY29tYmluYXRvcmlhbCBwcm9ibGVtcywgdGhlIGNvbXB1dGF0aW9uIG9mIG5ldyB0ZXJtcyBpbiBhIHdlbGwta25vd24gc2VyaWVzLCBhbmQgdGhlIHN1YnN0YW50aWFsIHJlZHVjdGlvbiBpbiBjb21wdXRhdGlvbiB0aW1lIGZvciB0aGUgc29sdXRpb24gdG8gYW5vdGhlciBjb21iaW5hdG9yaWFsIHByb2JsZW0uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQyNDAgKFByb2dyYW1taW5nIGFuZCBhbGdvcml0aG0gdGhlb3J5KTsgQzYxMDAgKFNvZnR3YXJlIHRlY2huaXF1ZXMgYW5kIHN5c3RlbXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBvZiBJbGxpbm9pcywgVXJiYW5hLCBJTCwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImJhY2t0cmFjazsgY29tYmluYXRvcmlhbCBjb21wdXRpbmc7IGNvbWJpbmF0b3JpYWwgcHJvYmxlbXM7IGNvbXB1dGVyIHByb2dyYW1taW5nOyBkZXB0aCBmaXJzdCBzZWFyY2g7IGRlcHRoLWZpcnN0IHNlYXJjaDsgZGlmZmVyZW5jZS1wcmVzZXJ2aW5nIGNvZGVzOyBleGhhdXN0aXZlOyBleGhhdXN0aXZlIHNlYXJjaDsgZ3JhcGggY29sb3JpbmcgcmVsYXRlZCBhbGdvcml0aG1zOyBtYWNyb3M7IG5vbi1hdHRhY2tpbmcgcXVlZW4ncyBwcm9ibGVtOyBub25hdHRhY2tpbmcgcXVlZW4ncyBwcm9ibGVtOyBwZW50b21pbm9lczsgcHJvYmxlbXM7IHByb2dyYW1taW5nIHRoZW9yeTsgc2VhcmNoOyBzaG9ydGVuIHRoZSBjb21wdXRhdGlvbiB0aW1lOyBzcXVhcmluZyB0aGUgc3F1YXJlOyB0aWxpbmc7IHRpbGluZyBwcm9ibGVtcyIsCiAgdHJlYXRtZW50ID0gICAgIkEgQXBwbGljYXRpb247IFQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7S291OjE5NzU6TlNCLAogIGF1dGhvciA9ICAgICAgICJMYXdyZW5jZSBULiBLb3UgYW5kIEMuIEsuIFdvbmciLAogIHRpdGxlID0gICAgICAgICJBIE5vdGUgb24gdGhlIFNldCBCYXNpcyBQcm9ibGVtIFJlbGF0ZWQgdG8gdGhlIENvbXBhY3Rpb24gb2YgQ2hhcmFjdGVyIFNldHMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTgiLAogIG51bWJlciA9ICAgICAgICIxMSIsCiAgcGFnZXMgPSAgICAgICAgIjY1Ni0tNjU3IiwKICBtb250aCA9ICAgICAgICBub3YsCiAgeWVhciA9ICAgICAgICAgIjE5NzUiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2OEExMCIsCiAgTVJudW1iZXIgPSAgICAgIjUyIDcxOTYiLAogIG1ycmV2aWV3ZXIgPSAgICJEb3JvdGh5IEJvbGxtYW4iLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiVGhpcyBub3RlIGRpc2N1c3NlcyB0aGUgcmVkdWN0aW9uIG9mIHRoZSBzZXQgYmFzaXMgcHJvYmxlbSB0byB0aGUgY2xpcXVlIGNvdmVyIHByb2JsZW0uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQyNDAgKFByb2dyYW1taW5nIGFuZCBhbGdvcml0aG0gdGhlb3J5KSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiSUJNIFRob21hcyBKLiBXYXRzb24gUmVzLiBDZW50ZXIsIFlvcmt0b3duIEhlaWdodHMsIE5ZLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY2hhcmFjdGVyIHNldHM7IGNsaXF1ZTsgY29tcGFjdGlvbiBvZiBjaGFyYWN0ZXIgc2V0czsgY29tcHV0YXRpb25hbCBjb21wbGV4aXR5OyBjb21wdXRlciBwcm9ncmFtbWluZzsgY292ZXIgcHJvYmxlbTsgZGF0YSBjb21wcmVzc2lvbjsgcG9seW5vbWlhbCBjb21wbGV0ZW5lc3M7IHNldCBiYXNpcyBwcm9ibGVtOyBzZXQgY292ZXJpbmciLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle05hdXI6MTk3NTpQTE4sCiAgYXV0aG9yID0gICAgICAgIlBldGVyIE5hdXIiLAogIHRpdGxlID0gICAgICAgICJQcm9ncmFtbWluZyBMYW5ndWFnZXMsIE5hdHVyYWwgTGFuZ3VhZ2VzLCBhbmQgTWF0aGVtYXRpY3MiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTgiLAogIG51bWJlciA9ICAgICAgICIxMiIsCiAgcGFnZXMgPSAgICAgICAgIjY3Ni0tNjgzIiwKICBtb250aCA9ICAgICAgICBkZWMsCiAgeWVhciA9ICAgICAgICAgIjE5NzUiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2OEEwNSAoNjhBMzApIiwKICBNUm51bWJlciA9ICAgICAiNTYgMTM3NTIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBub3RlID0gICAgICAgICAiUGFwZXJzIGZyb20gdGhlIFNlY29uZCB7QUNNfSBTeW1wb3NpdW0gb24gUHJpbmNpcGxlcyBvZiBQcm9ncmFtbWluZyBMYW5ndWFnZXMgKFBhbG8gQWx0bywgQ2FsaWYuLCAxOTc1KS4iLAogIGFic3RyYWN0ID0gICAgICJTb21lIHNvY2lhbCBhc3BlY3RzIG9mIHByb2dyYW1taW5nIGFyZSBpbGx1bWluYXRlZCB0aHJvdWdoIGFuYWxvZ2llcyB3aXRoIHNpbWlsYXIgYXNwZWN0cyBvZiBtYXRoZW1hdGljcyBhbmQgbmF0dXJhbCBsYW5ndWFnZXMuIFRoZSBzcGxpdCBiZXR3ZWVuIHB1cmUgYW5kIGFwcGxpZWQgbWF0aGVtYXRpY3MgaXMgZm91bmQgc2ltaWxhcmx5IGluIHByb2dyYW1taW5nLiBUaGUgZGV2ZWxvcG1lbnQgb2YgbmF0dXJhbCBsYW5ndWFnZXMgdG93YXJkIGZsZXhpb25sZXNzLCB3b3JkLW9yZGVyIGJhc2VkIGxhbmd1YWdlIHR5cGVzIHNwZWFrcyBmb3IgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgZGVzaWduIGJhc2VkIG9uIGdlbmVyYWwsIGFic3RyYWN0IGNvbnN0cnVjdHMuIEJ5IGFuYWxvZ3kgd2l0aCBpbmNpZGVudHMgb2YgdGhlIGhpc3Rvcnkgb2YgYXJ0aWZpY2lhbCwgYXV4aWxpYXJ5IGxhbmd1YWdlcyBpdCBpcyBzdWdnZXN0ZWQgdGhhdCBGb3J0cmFuIGFuZCBDb2JvbCB3aWxsIHJlbWFpbiBkb21pbmFudCBmb3IgYSBsb25nIHRpbWUgdG8gY29tZS4gVGhlIG1vc3QgcHJvbWlzaW5nIGF2ZW51ZXMgZm9yIGZ1cnRoZXIgd29yayBvZiB3aWRlIGluZmx1ZW5jZSBhcmUgc2VlbiB0byBiZSBoaWdoIHF1YWxpdHkgcHJvZ3JhbSBsaXRlcmF0dXJlIChpLmUuIHByb2dyYW1zKSBvZiBnZW5lcmFsIHV0aWxpdHkgYW5kIHN0dWRpZXMgb2YgcXVlc3Rpb25zIHJlbGF0ZWQgdG8gcHJvZ3JhbSBzdHlsZS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjExMCAoU3lzdGVtcyBhbmFseXNpcyBhbmQgcHJvZ3JhbW1pbmcpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJEYXRhbG9naXNrIEluc3QuLCBDb3BlbmhhZ2VuIFVuaXYuLCBDb3BlbmhhZ2VuLCBEZW5tYXJrIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFic3RyYWN0IGNvbnN0cnVjdHM7IGFydGlmaWNpYWw7IGF1eGlsaWFyeSBsYW5ndWFnZXM7IGNvbXB1dGVyIHByb2dyYW1taW5nIGxhbmd1YWdlczsgZGVzY3JpcHRpdmUgYW5kOyBsaXRlcmF0dXJlOyBwcmVzY3JpcHRpdmUgYXR0aXR1ZGVzOyBwcm9ncmFtbWluZyBsYW5ndWFnZTsgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzOyBwdXJlIGFuZCBhcHBsaWVkIG1hdGhlbWF0aWNzOyBzb2NpYWwgYXNwZWN0cyBvZiBhdXRvbWF0aW9uOyBzb2NpYWwgYXNwZWN0cyBvZiBwcm9ncmFtbWluZzsgc3R5bGUiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0dvb2Rlbm91Z2g6MTk3NTpFSEksCiAgYXV0aG9yID0gICAgICAgIkpvaG4gQi4gR29vZGVub3VnaCIsCiAgdGl0bGUgPSAgICAgICAgIkV4Y2VwdGlvbiBIYW5kbGluZzogSXNzdWVzIGFuZCBhIFByb3Bvc2VkIE5vdGF0aW9uIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE4IiwKICBudW1iZXIgPSAgICAgICAiMTIiLAogIHBhZ2VzID0gICAgICAgICI2ODMtLTY5NiIsCiAgbW9udGggPSAgICAgICAgZGVjLAogIHllYXIgPSAgICAgICAgICIxOTc1IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlRoaXMgcGFwZXIgZGVmaW5lcyBleGNlcHRpb24gY29uZGl0aW9ucywgZGlzY3Vzc2VzIHRoZSByZXF1aXJlbWVudHMgZXhjZXB0aW9uIGhhbmRsaW5nIGxhbmd1YWdlIGZlYXR1cmVzIG11c3Qgc2F0aXNmeSwgYW5kIHByb3Bvc2VzIHNvbWUgbmV3IGxhbmd1YWdlIGZlYXR1cmVzIGZvciBkZWFsaW5nIHdpdGggZXhjZXB0aW9ucyBpbiBhbiBvcmRlcmx5IGFuZCByZWxpYWJsZSB3YXkuIFRoZSBwcm9wb3NlZCBsYW5ndWFnZSBmZWF0dXJlcyBzZXJ2ZSB0byBoaWdobGlnaHQgZXhjZXB0aW9uIGhhbmRsaW5nIGlzc3VlcyBieSBzaG93aW5nIGhvdyBkZWZpY2llbmNpZXMgaW4gY3VycmVudCBhcHByb2FjaGVzIGNhbiBiZSByZW1lZGllZC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjExMCAoU3lzdGVtcyBhbmFseXNpcyBhbmQgcHJvZ3JhbW1pbmcpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJTb2ZUZWNoIEluYy4sIFdhbHRoYW0sIE1BLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzOyBjb25kaXRpb25zOyBlcnJvcjsgZXhjZXB0aW9uIGNvbmRpdGlvbnM7IGV4Y2VwdGlvbiBoYW5kbGluZzsgZ290byBzdGF0ZW1lbnQ7IGxhbmd1YWdlIGZlYXR1cmVzOyBtdWx0aWxldmVsIGV4aXQ7IE9OIGNvbmRpdGlvbnM7IHByb2dyYW1taW5nOyBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IHByb3Bvc2VkIG5vdGF0aW9uOyBzdHJ1Y3R1cmVkIHByb2dyYW1taW5nIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtKYXpheWVyaToxOTc1OklFQywKICBhdXRob3IgPSAgICAgICAiTWVoZGkgSmF6YXllcmkgYW5kIFdpbGxpYW0gRi4gT2dkZW4gYW5kIFdpbGxpYW0gQy4gUm91bmRzIiwKICB0aXRsZSA9ICAgICAgICAiVGhlIEludHJpbnNpY2FsbHkgRXhwb25lbnRpYWwgQ29tcGxleGl0eSBvZiB0aGUgQ2lyY3VsYXJpdHkgUHJvYmxlbSBmb3IgQXR0cmlidXRlIEdyYW1tYXJzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE4IiwKICBudW1iZXIgPSAgICAgICAiMTIiLAogIHBhZ2VzID0gICAgICAgICI2OTctLTcwNiIsCiAgbW9udGggPSAgICAgICAgZGVjLAogIHllYXIgPSAgICAgICAgICIxOTc1IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjhBMjAiLAogIE1SbnVtYmVyID0gICAgICI1MiAxNjExNSIsCiAgbXJyZXZpZXdlciA9ICAgIkkuIEhhbCBTdWRib3JvdWdoIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9Db21waWxlci9BRy5iaWIiLAogIG5vdGUgPSAgICAgICAgICJQYXBlcnMgZnJvbSB0aGUgU2Vjb25kIHtBQ019IFN5bXBvc2l1bSBvbiBQcmluY2lwbGVzIG9mIFByb2dyYW1taW5nIExhbmd1YWdlcyAoUGFsbyBBbHRvLCBDYWxpZi4sIDE5NzUpIiwKICBhYnN0cmFjdCA9ICAgICAiQXR0cmlidXRlIGdyYW1tYXJzIGFyZSBhbiBleHRlbnNpb24gb2YgY29udGV4dC1mcmVlIGdyYW1tYXJzIGRldmlzZWQgYnkgS251dGggYXMgYSBtZWNoYW5pc20gZm9yIGluY2x1ZGluZyB0aGUgc2VtYW50aWNzIG9mIGEgY29udGV4dC1mcmVlIGxhbmd1YWdlIHdpdGggdGhlIHN5bnRheCBvZiB0aGUgbGFuZ3VhZ2UuIFRoZSBjaXJjdWxhcml0eSBwcm9ibGVtIGZvciBhIGdyYW1tYXIgaXMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIHNlbWFudGljcyBmb3IgYWxsIHBvc3NpYmxlIHNlbnRlbmNlcyAocHJvZ3JhbXMpIGluIGZhY3Qgd2lsbCBiZSB3ZWxsIGRlZmluZWQuIEl0IGlzIHByb3ZlZCB0aGF0IHRoaXMgcHJvYmxlbSBpcywgaW4gZ2VuZXJhbCwgY29tcHV0YXRpb25hbGx5IGludHJhY3RhYmxlLiBTcGVjaWZpY2FsbHksIGl0IGlzIHNob3duIHRoYXQgYW55IGRldGVybWluaXN0aWMgYWxnb3JpdGhtIHdoaWNoIHNvbHZlcyB0aGUgcHJvYmxlbSBtdXN0IGZvciBpbmZpbml0ZWx5IG1hbnkgY2FzZXMgdXNlIGFuIGV4cG9uZW50aWFsIGFtb3VudCBvZiB0aW1lLiBBbiBpbXByb3ZlZCB2ZXJzaW9uIG9mIEtudXRoJ3MgY2lyY3VsYXJpdHkgdGVzdGluZyBhbGdvcml0aG0gaXMgYWxzbyBnaXZlbiwgd2hpY2ggYWN0dWFsbHkgc29sdmVzIHRoZSBwcm9ibGVtIHdpdGhpbiBleHBvbmVudGlhbCB0aW1lLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MjEwIChGb3JtYWwgbG9naWMpOyBDNDI0MCAoUHJvZ3JhbW1pbmcgYW5kIGFsZ29yaXRobSB0aGVvcnkpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjE7IDcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIG9mIE5vcnRoIENhcm9saW5hLCBDaGFwZWwgSGlsbCwgTkMsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhdHRyaWJ1dGUgZ3JhbW1hcnM7IGF1dG9tYXRhIHRoZW9yeTsgY2lyYzsgY2lyY3VsYXJpdHkgcHJvYmxlbTsgY29tcHV0YXRpb25hbCBjb21wbGV4aXR5OyBjb21wdXRlciBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IGNvbnRleHQgZnJlZSBncmFtbWFyczsgY29udGV4dC1mcmVlIGdyYW1tYXJzOyBkZXRlcm1pbmlzdGljIGFsZ29yaXRobTsgZXhwb25lbnRpYWwgdGltZTsgaW50cmluc2ljYWxseSBleHBvbmVudGlhbCBjb21wbGV4aXR5OyBzZW1hbnRpY3MiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0h1bnQ6MTk3NTpDTEssCiAgYXV0aG9yID0gICAgICAgIkhhcnJ5IEIuIHtIdW50LCBJSUl9IGFuZCBUaG9tYXMgRy4gU3p5bWFuc2tpIGFuZCBKZWZmcmV5IEQuIFVsbG1hbiIsCiAgdGl0bGUgPSAgICAgICAgIk9uIHRoZSBDb21wbGV4aXR5IG9mIHtMUihrKX0gVGVzdGluZyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOCIsCiAgbnVtYmVyID0gICAgICAgIjEyIiwKICBwYWdlcyA9ICAgICAgICAiNzA3LS03MTYiLAogIG1vbnRoID0gICAgICAgIGRlYywKICB5ZWFyID0gICAgICAgICAiMTk3NSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4QTIwICg2OEEzMCkiLAogIE1SbnVtYmVyID0gICAgICI1MiAxMjQwMiIsCiAgbXJyZXZpZXdlciA9ICAgIlBhdmVsIFN0cm5hZCIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIG5vdGUgPSAgICAgICAgICJQYXBlcnMgZnJvbSB0aGUgU2Vjb25kIEFDTSBTeW1wb3NpdW0gb24gUHJpbmNpcGxlcyBvZiBQcm9ncmFtbWluZyBMYW5ndWFnZXMgKFBhbG8gQWx0bywgQ2FsaWYuLCAxOTc1KS4iLAogIGFic3RyYWN0ID0gICAgICJUaGUgcHJvYmxlbSBvZiBkZXRlcm1pbmluZyB3aGV0aGVyIGFuIGFyYml0cmFyeSBjb250ZXh0LWZyZWUgZ3JhbW1hciBpcyBhIG1lbWJlciBvZiBzb21lIGVhc2lseSBwYXJzZWQgc3ViY2xhc3Mgb2YgZ3JhbW1hcnMgc3VjaCBhcyB0aGUgTFIoaykgZ3JhbW1hcnMgaXMgY29uc2lkZXJlZC4gVGhlIHRpbWUgY29tcGxleGl0eSBvZiB0aGlzIHByb2JsZW0gaXMgYW5hbHl6ZWQgYm90aCB3aGVuIGsgaXMgY29uc2lkZXJlZCB0byBiZSBhIGZpeGVkIGludGVnZXIgYW5kIHdoZW4gayBpcyBjb25zaWRlcmVkIHRvIGJlIGEgcGFyYW1ldGVyIG9mIHRoZSB0ZXN0LiBJbiB0aGUgZmlyc3QgY2FzZSwgaXQgaXMgc2hvd24gdGhhdCBmb3IgZXZlcnkgayB0aGVyZSBleGlzdHMgYW4gTyhuKiprKiogcGx1cyAqKjIpIGFsZ29yaXRobSBmb3IgdGVzdGluZyB0aGUgTFIoaykgcHJvcGVydHksIHdoZXJlIG4gaXMgdGhlIHNpemUgb2YgdGhlIGdyYW1tYXIgaW4gcXVlc3Rpb24uIE9uIHRoZSBvdGhlciBoYW5kLCBpZiBib3RoIGsgYW5kIHRoZSBzdWJqZWN0IGdyYW1tYXIgYXJlIHByb2JsZW0gcGFyYW1ldGVycywgdGhlbiB0aGUgY29tcGxleGl0eSBvZiB0aGUgcHJvYmxlbSBkZXBlbmRzIHZlcnkgc3Ryb25nbHkgb24gdGhlIHJlcHJlc2VudGF0aW9uIGNob3NlbiBmb3Igay4gTW9yZSBzcGVjaWZpY2FsbHksIGl0IGlzIHNob3duIHRoYXQgdGhpcyBwcm9ibGVtIGlzIE5QLWNvbXBsZXRlIHdoZW4gayBpcyBleHByZXNzZWQgaW4gdW5hcnkuIFdoZW4gayBpcyBleHByZXNzZWQgaW4gYmluYXJ5IHRoZSBwcm9ibGVtIGlzIGNvbXBsZXRlIGZvciBub25kZXRlcm1pbmlzdGljIGV4cG9uZW50aWFsIHRpbWUuIFRoZXNlIHJlc3VsdHMgY2Fycnkgb3ZlciB0byBtYW55IG90aGVyIHBhcmFtZXRlcml6ZWQgY2xhc3NlcyBvZiBncmFtbWFycywgc3VjaCBhcyB0aGUgTEwoayksIHN0cm9uZyBMTChrKSwgU0xSKGspLCBhbmQgc3Ryb25nIExDKGspIGdyYW1tYXJzLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MjEwIChGb3JtYWwgbG9naWMpOyBDNDI0MCAoUHJvZ3JhbW1pbmcgYW5kIGFsZ29yaXRobSB0aGVvcnkpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjE7IDcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIkhhcnZhcmQgVW5pdi4sIENhbWJyaWRnZSwgTUEsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhdXRvbWF0YSB0aGVvcnk7IGNvbXB1dGVyIHByb2dyYW1taW5nIGxhbmd1YWdlcyIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGF0aW9uYWwgY29tcGxleGl0eTsgY29udGV4dCBmcmVlIGdyYW1tYXI7IGNvbnRleHQtZnJlZSBncmFtbWFyczsgTFIoaykgZ3JhbW1hcnM7IG5vbmRldGVybWluaXN0aWMgZXhwb25lbnRpYWwgdGltZTsgTlAgY29tcGxldGU7IHBhcnNpbmc7IHByb2JsZW1zOyB0aW1lIGNvbXBsZXhpdHkiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0dyYWhhbToxOTc1OkZVTCwKICBhdXRob3IgPSAgICAgICAiU3VzYW4gTC4gR3JhaGFtIGFuZCBNYXJrIFdlZ21hbiIsCiAgdGl0bGUgPSAgICAgICAgIkEgZmFzdCBhbmQgdXN1YWxseSBsaW5lYXIgYWxnb3JpdGhtIGZvciBnbG9iYWwgZmxvdyBhbmFseXNpcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOCIsCiAgbnVtYmVyID0gICAgICAgIjEyIiwKICBwYWdlcyA9ICAgICAgICAiNzE2LS03MTYiLAogIG1vbnRoID0gICAgICAgIGRlYywKICB5ZWFyID0gICAgICAgICAiMTk3NSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIG5vdGUgPSAgICAgICAgICJTZWUgXGNpdGV7R3JhaGFtOjE5NzY6RlVMfSBmb3IgZnVsbCBwYXBlci4iLAogIGFic3RyYWN0ID0gICAgICJBIG5ldyBhbGdvcml0aG0gZm9yIGdsb2JhbCBmbG93IGFuYWx5c2lzIG9uIHJlZHVjaWJsZSBncmFwaHMgaXMgcHJlc2VudGVkLiBUaGUgYWxnb3JpdGhtIGlzIHNob3duIHRvIHRyZWF0IGEgdmVyeSBnZW5lcmFsIGNsYXNzIG9mIGZ1bmN0aW9uIHNwYWNlcy4gXHBhciBGb3IgYSBncmFwaCBvZiAkZSQgZWRnZXMsIHRoZSBhbGdvcml0aG0gaGFzIGEgd29yc3QgY2FzZSB0aW1lIGJvdW5kIG9mICRPKGUgXGxvZyBlKSQgZnVuY3Rpb24gb3BlcmF0aW9ucy4gXHBhciBJdCBpcyBhbHNvIHNob3duIHRoYXQgaW4gcHJvZ3JhbW1pbmcgdGVybXMsIHRoZSBudW1iZXIgb2Ygb3BlcmF0aW9ucyBpcyBwcm9wb3J0aW9uYWwgdG8gJGUkIHBsdXMgdGhlIG51bWJlciBvZiBleGl0cyBmcm9tIHByb2dyYW0gbG9vcHMuIENvbnNlcXVlbnRseSBhIHJlc3RyaWN0aW9uIHRvIG9uZS1lbnRyeSBvbmUtZXhpdCBjb250cm9sIHN0cnVjdHVyZXMgbGluZWFyaXR5LiBUaGUgYWxnb3JpdGhtIGNhbiBiZSBleHRlbmRlZCB0byB5ZXQgbGFyZ2VyIGNsYXNzZXMgb2YgZnVuY3Rpb24gc3BhY2VzIGFuZCBncmFwaHMgYnkgcmVsYXhpbmcgdGhlIHRpbWUgYm91bmQuIEV4YW1wbGVzIGFyZSBnaXZlbiBvZiBjb2RlIGltcHJvdmVtZW50IHByb2JsZW1zIHdoaWNoIGNhbiBiZSBzb2x2ZWQgdXNpbmcgdGhlIGFsZ29yaXRobS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJCMDI1MCAoQ29tYmluYXRvcmlhbCBtYXRoZW1hdGljcyk7IEMxMTYwIChDb21iaW5hdG9yaWFsIG1hdGhlbWF0aWNzKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIG9mIENhbGlmb3JuaWEsIEJlcmtlbGV5LCBDQSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiYm91bmQ7IGNvZGUgb3B0aW1pc2F0aW9uOyBjb2RlIG9wdGltaXphdGlvbjsgY29tbW9uOyBjb21tb24gc3ViZXhwcmVzc2lvbiBlbGltaW5hdGlvbjsgY29tcHJlc3Npb247IGRhdGEgZmxvdzsgZGVwdGgtZmlyc3Qgc2VhcmNoOyBmbG93IGdyYXBoOyBmdW5jdGlvbiBzcGFjZXM7IGdsb2JhbCBmbG93IGFuYWx5c2lzOyBnby10by1sZXNzIHByb2dyYW1taW5nOyBncmFwaCB0aGVvcnk7IGluZm9ybWF0aW9uIHByb3BhZ2F0aW9uOyBsaXZlLWRlYWQgYW5hbHlzaXM7IHBhdGg7IHBhdGggY29tcHJlc3Npb247IHJlZHVjaWJpbGl0eTsgcmVkdWNpYmxlIGdyYXBoczsgc3ViZXhwcmVzc2lvbiBlbGltaW5hdGlvbjsgd29yc3QgY2FzZSB0aW1lIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtMaXB0b246MTk3NTpSTVAsCiAgYXV0aG9yID0gICAgICAgIlJpY2hhcmQgSi4gTGlwdG9uIiwKICB0aXRsZSA9ICAgICAgICAiUmVkdWN0aW9uOiB7QX0gTWV0aG9kIG9mIFByb3ZpbmcgUHJvcGVydGllcyBvZiBQYXJhbGxlbCBQcm9ncmFtcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOCIsCiAgbnVtYmVyID0gICAgICAgIjEyIiwKICBwYWdlcyA9ICAgICAgICAiNzE3LS03MjEiLAogIG1vbnRoID0gICAgICAgIGRlYywKICB5ZWFyID0gICAgICAgICAiMTk3NSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4QTA1IiwKICBNUm51bWJlciA9ICAgICAiNTMgNDU5OSIsCiAgbXJyZXZpZXdlciA9ICAgIk8uIEEuIExldGljZXZza2lpIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9Db21waWxlci9zZW1hbnRpY3MuYmliIiwKICBub3RlID0gICAgICAgICAiUGFwZXJzIGZyb20gdGhlIFNlY29uZCB7QUNNfSBTeW1wb3NpdW0gb24gUHJpbmNpcGxlcyBvZiBQcm9ncmFtbWluZyBMYW5ndWFnZXMgKFBhbG8gQWx0bywgQ2FsaWYuLCAxOTc1KS4iLAogIGFic3RyYWN0ID0gICAgICJXaGVuIHByb3ZpbmcgdGhhdCBhIHBhcmFsbGVsIHByb2dyYW0gaGFzIGEgZ2l2ZW4gcHJvcGVydHkgaXQgaXMgb2Z0ZW4gY29udmVuaWVudCB0byBhc3N1bWUgdGhhdCBhIHN0YXRlbWVudCBpcyBpbmRpdmlzaWJsZSwgaS5lLiB0aGF0IHRoZSBzdGF0ZW1lbnQgY2Fubm90IGJlIGludGVybGVhdmVkIHdpdGggdGhlIHJlc3Qgb2YgdGhlIHByb2dyYW0uIEhlcmUgc3VmZmljaWVudCBjb25kaXRpb25zIGFyZSBvYnRhaW5lZCB0byBzaG93IHRoYXQgdGhlIGFzc3VtcHRpb24gdGhhdCBhIHN0YXRlbWVudCBpcyBpbmRpdmlzaWJsZSBjYW4gYmUgcmVsYXhlZCBhbmQgc3RpbGwgcHJlc2VydmUgcHJvcGVydGllcyBzdWNoIGFzIGhhbHRpbmcuIFRodXMgY29ycmVjdG5lc3MgcHJvb2ZzIG9mIGEgcGFyYWxsZWwgc3lzdGVtIGNhbiBvZnRlbiBiZSBncmVhdGx5IHNpbXBsaWZpZWQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQyNDAgKFByb2dyYW1taW5nIGFuZCBhbGdvcml0aG0gdGhlb3J5KSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiWWFsZSBVbml2LiwgTmV3IEhhdmVuLCBDVCwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGF0aW9uIHNlcXVlbmNlOyBjb21wdXRlciBtZXRhdGhlb3J5OyBkZWFkbG9jazsgZnJlZTsgaGFsdGluZzsgaW5kaXZpc2libGU7IGludGVycnVwdGlibGU7IHBhcmFsbGVsIHByb2Nlc3Npbmc7IHBhcmFsbGVsIHByb2dyYW1zOyBwcm9jZXNzOyBwcm9ncmFtbWluZyB0aGVvcnk7IHJlZHVjdGlvbjsgc2VtYXBob3JlOyB2ZXJpZmljYXRpb24gbWV0aG9kIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtTY2h3YXJ0ejoxOTc1OkFEUywKICBhdXRob3IgPSAgICAgICAiSi4gVC4gU2Nod2FydHoiLAogIHRpdGxlID0gICAgICAgICJBdXRvbWF0aWMgRGF0YSBTdHJ1Y3R1cmUgQ2hvaWNlIGluIGEgTGFuZ3VhZ2Ugb2YgVmVyeSBIaWdoIExldmVsIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE4IiwKICBudW1iZXIgPSAgICAgICAiMTIiLAogIHBhZ2VzID0gICAgICAgICI3MjItLTcyOCIsCiAgbW9udGggPSAgICAgICAgZGVjLAogIHllYXIgPSAgICAgICAgICIxOTc1IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9Db21waWxlci9vcHQuY29tcGlsZXIuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiU0VUTCBpcyBhIHNldC10aGVvcmV0aWNhbGx5IG9yaWVudGVkIGxhbmd1YWdlIG9mIHZlcnkgaGlnaCBsZXZlbCB3aG9zZSByZXBlcnRvaXJlIG9mIHNlbWFudGljIG9iamVjdHMgaW5jbHVkZXMgZmluaXRlIHNldHMsIG9yZGVyZWQgbi10dXBsZXMsIGFuZCBzZXRzIG9mIG9yZGVyZWQgbi10dXBsZXMgdXNhYmxlIGFzIG1hcHBpbmdzLiBUaGlzIHBhcGVyIGRlc2NyaWJlcyB0aGUgc3RydWN0dXJlIG9mIGFuIG9wdGltaXplciBmb3IgdGhpcyBsYW5ndWFnZS4gQW1vbmcgb3RoZXIgbWV0aG9kcyBvZiBpbnRlcmVzdCwgdGhlIG9wdGltaXplciB1c2VzIHRlY2huaXF1ZXMgd2hpY2ggYWxsb3cgcmVsYXRpb25zIG9mIGluY2x1c2lvbiBhbmQgbWVtYmVyc2hpcCB0byBiZSBlc3RhYmxpc2hlZCwgdGhlIGRvbWFpbnMgYW5kIHJhbmdlcyBvZiAodGFidWxhdGVkKSBtYXBwaW5ncyB0byBiZSBlc3RpbWF0ZWQgZnJvbSBhYm92ZSBhbmQgYmVsb3csIGFuZCB0aGUgc2luZ2xlLXZhbHVlZG5lc3Mgb2YgKHRhYnVsYXRlZCkgbWFwcGluZ3MgdG8gYmUgcHJvdmVkLiBPbmNlIGZhY3RzIG9mIHRoaXMga2luZCBoYXZlIGJlZW4gZXN0YWJsaXNoZWQsIGF1dG9tYXRpYyBjaG9pY2Ugb2YgZGF0YSBzdHJ1Y3R1cmVzIGJlY29tZXMgcG9zc2libGUuIFRoZSBtZXRob2RzIGVtcGxveWVkIGFyZSBiYXNlZCB1cG9uLCBhbmQgZXh0ZW5kLCBrbm93biB0ZWNobmlxdWVzIG9mIGRhdGEgZmxvdyBhbmFseXNpcy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDI0MCAoUHJvZ3JhbW1pbmcgYW5kIGFsZ29yaXRobSB0aGVvcnkpOyBDNjE0MEQgKEhpZ2ggbGV2ZWwgbGFuZ3VhZ2VzKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiTmV3IFlvcmsgVW5pdi4sIE5ldyBZb3JrLCBOWSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImF1dG9tYXRpYyBwcm9ncmFtbWluZzsgY29tcHV0ZXIgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzOyBkYXRhIGZsb3cgYW5hbHlzaXM7IGRhdGEgcHJvY2Vzc2luZyAtLS0gRGF0YSBTdHJ1Y3R1cmVzOyBkYXRhIHN0cnVjdHVyZSBjaG9pY2U7IGRhdGEgc3RydWN0dXJlczsgbGFuZ3VhZ2U7IG1hcHBpbmdzOyBvcHRpbWlzYXRpb247IHByb2dyYW07IHByb2dyYW1taW5nIGxhbmd1YWdlczsgcHJvZ3JhbW1pbmcgdGhlb3J5OyBzZXQgdGhlb3JldGljYWxseSBvcmllbnRlZDsgU0VUTCIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7S2xlaW5yb2NrOjE5NzY6U0xPLAogIGF1dGhvciA9ICAgICAgICJMZW9uYXJkIEtsZWlucm9jayBhbmQgV2lsbGlhbSBFLiBOYXlsb3IgYW5kIEhvbGdlciBPcGRlcmJlY2siLAogIHRpdGxlID0gICAgICAgICJBIFN0dWR5IG9mIExpbmUgT3ZlcmhlYWQgaW4gdGhlIHtBUlBBTkVUfSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOSIsCiAgbnVtYmVyID0gICAgICAgIjEiLAogIHBhZ2VzID0gICAgICAgICIzLS0xMyIsCiAgbW9udGggPSAgICAgICAgamFuLAogIHllYXIgPSAgICAgICAgICIxOTc2IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EaXN0cmlidXRlZC9RTEQvMTk3Ni5iaWIiLAogIGFic3RyYWN0ID0gICAgICJUaGUgZm9ybSwgZXh0ZW50LCBhbmQgZWZmZWN0IG9mIHRoZSBjb21tdW5pY2F0aW9uIGxpbmUgb3ZlcmhlYWQgaW4gdGhlIEFSUEFORVQgYXJlIGNvbnNpZGVyZWQuIFRoZSBzb3VyY2Ugb2YgdGhpcyBvdmVyaGVhZCBpcyBzZXBhcmF0ZWQgaW50byB2YXJpb3VzIGxldmVscyBvZiBwcm90b2NvbCBoaWVyYXJjaHkgYW5kIHRoZSBjaGFyYWN0ZXJpc3RpY3Mgb2YgZWFjaCBsZXZlbCBhcmUgc3VtbWFyaXplZC4gVGhlbiB0aGUgbGluZSBlZmZpY2llbmN5IGZvciB2YXJpb3VzIG1vZGVscyBvZiBzeXN0ZW0gdXNlIGlzIHN0dWRpZWQuIFNvbWUgbWVhc3VyZW1lbnRzIG9mIGxpbmUgZWZmaWNpZW5jeSBmb3IgdGhlIEFSUEFORVQgYXJlIHByZXNlbnRlZCBhbmQgYnkgZXh0cmFwb2xhdGlvbiB0aGVzZSBtZWFzdXJlbWVudHMgYXJlIHVzZWQgdG8gYW50aWNpcGF0ZSBvdmVyaGVhZCBpbiBhIGhlYXZpbHkgbG9hZGVkIG5ldHdvcmsuIFNpbWlsYXIgcmVzdWx0cyBhcmUgZGVyaXZlZCBmb3IgYSByZWNlbnRseSBwcm9wb3NlZCBuZXR3b3JrIHByb3RvY29sIGFuZCBjb21wYXJlZCB3aXRoIHRob3NlIGZvciB0aGUgY3VycmVudCBzeXN0ZW0uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBhbm5vdGUgPSAgICAgICAiVGhlIGZvcm0sIGV4dGVuZCwgYW5kIGVmZmVjdCBvZiB0aGUgY29tbXVuaWNhdGlvbiBsaW5lIG92ZXJoZWFkIGluIHRoZSBBcnBhbmV0IGFyZSBjb25zaWRlcmVkLiIsCiAgY2xhc3Njb2RlcyA9ICAgIkM1NjIwIChDb21wdXRlciBuZXR3b3JrcyBhbmQgdGVjaG5pcXVlcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIG9mIENhbGlmb3JuaWEsIExvcyBBbmdlbGVzLCBDQSwgVVNBIiwKICBjb3VudHJ5ID0gICAgICAiVVNBIiwKICBkYXRlID0gICAgICAgICAiMDgvMTIvODAiLAogIGRlc2NyaXB0b3JzID0gICJBUlBBTkVUOyBwYWNrZXQgc3dpdGNoaW5nOyBwZXJmb3JtYW5jZSBldmFsdWF0aW9uOyBPVkVSSEVBRDsiLAogIGVudW0gPSAgICAgICAgICIxNzAzIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgIkFSUEFORVQ7IGNvbW11bmljYXRpb24gbGluZTsgY29tcHV0ZXIgbmV0d29ya3M7IGNvbXB1dGVyIHN5c3RlbXMsIGRpZ2l0YWwgLS0tIFRpbWUgU2hhcmluZzsgY29tcHV0ZXJzOyBoZWF2aWx5IGxvYWRlZCBuZXR3b3JrOyBoaWVyYXJjaHk7IGxpbmUgZWZmaWNpZW5jeTsgbGluZSBvdmVyaGVhZDsgcHJvdG9jb2wiLAogIGxhbmd1YWdlID0gICAgICJFbmdsaXNoIiwKICByZWZlcmVuY2VzID0gICAiMjMiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle1dpbGhlbG06MTk3NjpBRFMsCiAgYXV0aG9yID0gICAgICAgIk5laWwgQy4gV2lsaGVsbSIsCiAgdGl0bGUgPSAgICAgICAgIkFuIEFub21hbHkgaW4gRGlzayBTY2hlZHVsaW5nOiB7QX0gQ29tcGFyaXNvbiBvZiB7RkNGU30gYW5kIHtTU1RGfSBTZWVrIFNjaGVkdWxpbmcgVXNpbmcgYW4gRW1waXJpY2FsIE1vZGVsIGZvciBEaXNrIEFjY2Vzc2VzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE5IiwKICBudW1iZXIgPSAgICAgICAiMSIsCiAgcGFnZXMgPSAgICAgICAgIjEzLS0xOCAob3IgMTMtLTE3Pz8pIiwKICBtb250aCA9ICAgICAgICBqYW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzYiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0RhdGFiYXNlL1dpZWRlcmhvbGQuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiQSBtb2RlbCBmb3IgZGlzayBhY2Nlc3NlcyBiYXNlZCBvbiBwdWJsaXNoZWQgbWVhc3VyZW1lbnRzIGlzIGRldmVsb3BlZC4gVGhlIG1vZGVsIGlzIHVzZWQgdG8gc2hvdyB0aGF0IHVuZGVyIGhpZ2hseSBwcm9iYWJsZSBjb25kaXRpb25zLCBGQ0ZTIHNlZWsgc2NoZWR1bGluZyBpcyBzdXBlcmlvciB0byBTU1RGIHNjaGVkdWxpbmcgaW4gdGhlIHNlbnNlIG9mIGhhdmluZyBhIGxvd2VyIG1lYW4gcXVldWUgbGVuZ3RoLiBBIHNpbXBsZSBleGFtcGxlIG9mIGFuIGFycml2YWwgc2VxdWVuY2UgaWxsdXN0cmF0aW5nIHRoaXMgYW5vbWFseSBpcyBwcmVzZW50ZWQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKTsgQzYxNTBKIChPcGVyYXRpbmcgc3lzdGVtcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMTsgNzIyIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gb2YgUm9jaGVzdGVyLCBSb2NoZXN0ZXIsIE5ZLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiKGNvbXB1dGVycyk7IGNvbXBhcmlzb247IGRhdGEgc3RvcmFnZSwgbWFnbmV0aWM7IGRpc2MgYWNjZXNzZXM7IGRpc2Mgc2NoZWR1bGluZzsgZW1waXJpY2FsIG1vZGVsOyBGQ0ZTOyBtYWduZXRpYyBkaXNjIGFuZCBkcnVtIHN0b3JhZ2U7IG9wZXJhdGluZyBzeXN0ZW1zOyBzZWVrIHNjaGVkdWxpbmc7IFNTVEYiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0FnbmV3OjE5NzY6UUFSLAogIGF1dGhvciA9ICAgICAgICJDYXJzb24gRS4gQWduZXciLAogIHRpdGxlID0gICAgICAgICJPbiBRdWFkcmF0aWMgQWRhcHRpdmUgUm91dGluZyBBbGdvcml0aG1zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE5IiwKICBudW1iZXIgPSAgICAgICAiMSIsCiAgcGFnZXMgPSAgICAgICAgIjE4LS0yMiIsCiAgbW9udGggPSAgICAgICAgamFuLAogIHllYXIgPSAgICAgICAgICIxOTc2IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EaXN0cmlidXRlZC9RTEQvMTk3Ni5iaWIiLAogIGFic3RyYWN0ID0gICAgICJUd28gYW5hbHl0aWMgbW9kZWxzIG9mIGEgc3RvcmUtYW5kLWZvcndhcmQgY29tbXVuaWNhdGlvbnMgbmV0d29yayBhcmUgY29uc3RydWN0ZWQsIG9uZSB0byBmaW5kIHRoZSBvcHRpbWFsIG1lc3NhZ2Ugcm91dGluZyBhbmQgdGhlIG90aGVyIHRvIGlsbHVzdHJhdGUgdGhlIGVxdWlsaWJyaXVtIChzdGF0aW9uYXJ5IHN0YXRlKSBtYWludGFpbmVkIGJ5IGFuIGFkYXB0aXZlIHJvdXRpbmcgYWxnb3JpdGhtLiBUaGVzZSBtb2RlbHMgc2hvdyB0aGF0IGFkYXB0aXZlIHJvdXRpbmcgZG9lcyBub3Qgc2F0aXNmeSB0aGUgbmVjZXNzYXJ5IGNvbmRpdGlvbnMgZm9yIGFuIG9wdGltYWwgcm91dGluZy4gQWRhcHRpdmUgcm91dGluZyB0ZW5kcyB0byBvdmVydXNlIHRoZSBkaXJlY3QgcGF0aCBhbmQgdW5kZXJ1c2UgYWx0ZXJuYXRlIHJvdXRlcyBiZWNhdXNlIGl0IGRvZXMgbm90IGNvbnNpZGVyIHRoZSBpbXBhY3Qgb2YgaXRzIGN1cnJlbnQgcm91dGluZyBkZWNpc2lvbiBvbiB0aGUgZnV0dXJlIHN0YXRlIG9mIHRoZSBuZXR3b3JrLiBUaGUgZm9ybSBvZiB0aGUgb3B0aW1hbGl0eSBjb25kaXRpb25zIHN1Z2dlc3RzIHRoYXQgYSBtb2RpZmljYXRpb24gb2YgdGhlIGFkYXB0aXZlIGFsZ29yaXRobSB3aWxsIHJlc3VsdCBpbiBvcHRpbWFsaXR5LiBUaGUgbW9kaWZpY2F0aW9uIHJlcXVpcmVzIHRoZSBzdWJzdGl0dXRpb24gb2YgYSBxdWFkcmF0aWMgYmlhcyB0ZXJtIGluc3RlYWQgb2YgYSBsaW5lYXIgb25lIGluIHRoZSByb3V0aW5nIHRhYmxlIG1haW50YWluZWQgYXQgZWFjaCBuZXR3b3JrIG5vZGUuIFNpbXVsYXRpb24gcmVzdWx0cyBhcmUgcHJlc2VudGVkIHdoaWNoIGNvbmZpcm0gdGhlIHRoZW9yZXRpY2FsIGFuYWx5c2lzIGZvciBhIHNpbXBsZSBuZXR3b3JrLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgYW5ub3RlID0gICAgICAgIlR3byBhbmFseXRpYyBtb2RlbHMgb2YgYSBzdG9yZS1hbmQtZm9yd2FyZCBjb21tdW5pY2F0aW9ucyBuZXR3b3JrIGFyZSBjb25zdHJ1Y3RlZCwgb25lIHRvIGZpbmQgdGhlIG9wdGltYWwgbWVzc2FnZSByb3V0aW5nIGFuZCB0aGUgb3RoZXIgdG8gaWxsdXN0cmF0ZSB0aGUgZXF1aWxpYnJpdW0gbWFpbnRhaW5lZCBieSBhbiBhZGFwdGl2ZSByb3V0aW5nIGFsZ29yaXRobS4gVGhlc2UgbW9kZWxzIHNob3cgdGhhdCBhZGFwdGl2ZSByb3V0aW5nIGRvZXMgbm90IHNhdGlzZnkgdGhlIG5lY2Vzc2FyeSBjb25kaXRpb25zIGZvciBhbiBvcHRpbWFsIHJvdXRpbmcuIEFkYXB0aXZlIHJvdXRpbmcgdGVuZHMgdG8gb3ZlcnVzZSB0aGUgZGlyZWN0IHBhdGggYW5kIHVuZGVydXNlIGFsdGVybmF0ZSByb3V0ZXMgYmVjYXVzZSBpdCBkb2VzIG5vdCBjb25zaWRlciB0aGUgaW1wYWN0IG9mIHRoZSBybyIsCiAgY2xhc3Njb2RlcyA9ICAgIkI2MjEwWiAoT3RoZXIgZGF0YSB0cmFuc21pc3Npb24pOyBDNTYwMCAoRGF0YSBjb21tdW5pY2F0aW9uIGVxdWlwbWVudCBhbmQgdGVjaG5pcXVlcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlN0YW5mb3JkIFVuaXYuLCBTdGFuZm9yZCwgQ0EsIFVTQSIsCiAgY291bnRyeSA9ICAgICAgIlVTQSIsCiAgZGVzY3JpcHRvcnMgPSAgIlJvdXRpbmcgYWxnb3JpdGhtOyBhZGFwdGl2ZSByb3V0aW5nOyBxdWFkcmF0aWMgcm91dGluZzsgYWx0ZXJuYXRlIHJvdXRpbmc7IHN0b3JlLWFuZC1mb3J3YXJkOyBjb21wdXRlciBuZXR3b3JrOyBkaXN0cmlidXRlZCBjb21wdXRpbmcgc3lzdGVtOyBtZXNzYWdlIHN3aXRjaGluZzsiLAogIGVudW0gPSAgICAgICAgICIzNyIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhZGFwdGl2ZSByb3V0aW5nOyBhbGdvcml0aG1zOyBhbHRlcm5hdGUgcm91dGluZzsgY29tbXVuaWNhdGlvbnMgbmV0d29yazsgY29tcHV0ZXIgbmV0d29yazsgY29tcHV0ZXIgcHJvZ3JhbW1pbmc7IGRpZ2l0YWwgY29tbXVuaWNhdGlvbiBzeXN0ZW1zOyBkaXN0cmlidXRlZCBuZXR3b3JrOyBlcXVpbGlicml1bTsgZm9yd2FyZDsgbWVzc2FnZSBzd2l0Y2hpbmc7IG9wdGltYWwgbWVzc2FnZTsgcXVhZHJhdGljIGFkYXB0aXZlIHJvdXRpbmc7IHF1YWRyYXRpYyByb3V0aW5nOyByb3V0aW5nOyByb3V0aW5nIGFsZ29yaXRobXM7IHN0b3JlLWFuZC1mb3J3YXJkIG5ldHdvcmsiLAogIGxhbmd1YWdlID0gICAgICJFbmdsaXNoIiwKICByZWZlcmVuY2VzID0gICAiMCIsCiAgdHJlYXRtZW50ID0gICAgIkEgQXBwbGljYXRpb247IFQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7S2FybHRvbjoxOTc2OlBIQiwKICBhdXRob3IgPSAgICAgICAiUC4gTC4gS2FybHRvbiBhbmQgUy4gSC4gRnVsbGVyIGFuZCBSLiBFLiBTY3JvZ2dzIGFuZCBFLiBCLiBLYWVobGVyIiwKICB0aXRsZSA9ICAgICAgICAiUGVyZm9ybWFuY2Ugb2YgSGVpZ2h0LUJhbGFuY2VkIFRyZWVzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE5IiwKICBudW1iZXIgPSAgICAgICAiMSIsCiAgcGFnZXMgPSAgICAgICAgIjIzLS0yOCIsCiAgbW9udGggPSAgICAgICAgamFuLAogIHllYXIgPSAgICAgICAgICIxOTc2IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EYXRhYmFzZS9XaWVkZXJob2xkLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIlRoaXMgcGFwZXIgcHJlc2VudHMgdGhlIHJlc3VsdHMgb2Ygc2ltdWxhdGlvbnMgdGhhdCBpbnZlc3RpZ2F0ZSB0aGUgcGVyZm9ybWFuY2Ugb2YgaGVpZ2h0LWJhbGFuY2VkIChIQiBsZWZ0IGJyYWNrZXQgayByaWdodCBicmFja2V0ICkgdHJlZXMuIEl0IGlzIHNob3duIHRoYXQgdGhlIG9ubHkgc3RhdGlzdGljIG9mIEhCIGxlZnQgYnJhY2tldCAxIHJpZ2h0IGJyYWNrZXQgdHJlZXMgKEFWTCB0cmVlcykgdGhhdCBpcyBhIGZ1bmN0aW9uIG9mIHRoZSBzaXplIG9mIHRoZSB0cmVlIGlzIHRoZSB0aW1lIHRvIHNlYXJjaCBmb3IgYW4gaXRlbSBpbiB0aGUgdHJlZS4gRm9yIHN1ZmZpY2llbnRseSBsYXJnZSB0cmVlcywgdGhlIGV4ZWN1dGlvbiB0aW1lcyBvZiBhbGwgcHJvY2VkdXJlcyBmb3IgbWFpbnRhaW5pbmcgSEIgbGVmdCBicmFja2V0IDEgcmlnaHQgYnJhY2tldCB0cmVlcyBhcmUgaW5kZXBlbmRlbnQgb2YgdGhlIHNpemUgb2YgdGhlIHRyZWUuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBhbm5vdGUgPSAgICAgICAiQmluYXJ5IHRyZWUgYmFsYW5jaW5nIHdoZW4gaW5zZXJ0aW5nIGFuZCBkZWxldGluZy4iLAogIGNsYXNzY29kZXMgPSAgICJDNDI5MCAoT3RoZXIgY29tcHV0ZXIgdGhlb3J5KTsgQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzOyA5MjEiLAogIGNvcnBzb3VyY2UgPSAgICJDYXJuZWdpZS1NZWxsb24gVW5pdi4sIFBpdHRzYnVyZ2gsIFBBLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiZGVsZXRpb247IGV4ZWN1dGlvbiB0aW1lczsgZmlsZSBvcmdhbmlzYXRpb247IGhlaWdodCBiYWxhbmNlZCB0cmVlczsgcGVyZm9ybWFuY2U7IHNlYXJjaDsgdHJhY2ViYWNrOyB0cmVlcyAobWF0aGVtYXRpY3MpIiwKICBrZXl3b3JkcyA9ICAgICAiaW5mb3JtYXRpb24gcmV0cmlldmFsIHN5c3RlbXM7IG1hdGhlbWF0aWNhbCB0ZWNobmlxdWVzIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtGbG9yZW50aW46MTk3NjpJUkMsCiAgYXV0aG9yID0gICAgICAgIkouIEouIEZsb3JlbnRpbiIsCiAgdGl0bGUgPSAgICAgICAgIkluZm9ybWF0aW9uIFJlZmVyZW5jZSBDb2RpbmciLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTkiLAogIG51bWJlciA9ICAgICAgICIxIiwKICBwYWdlcyA9ICAgICAgICAiMjktLTMzIiwKICBtb250aCA9ICAgICAgICBqYW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzYiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0RhdGFiYXNlL1dpZWRlcmhvbGQuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiSXRlbXMgaW4gYnVzaW5lc3Mgc3lzdGVtcyBoYXZlIHRvIGJlIGlkZW50aWZpZWQgYnkgcmVmZXJlbmNlIGNvZGVzLCB3aGljaCBjYW4gbGF0ZXIgYmUgdXNlZCBhcyBkYXRhIGNvZGVzIGFuZCBmaWxlIGtleXMgaW4gYW4gYXNzb2NpYXRlZCBkYXRhIHByb2Nlc3Npbmcgc3lzdGVtLiBJbiBidXNpbmVzcyBzeXN0ZW1zIGFzc29jaWF0ZWQgd2l0aCBsYXJnZSBjb2xsZWN0aW9ucyBvZiBpbnRlZ3JhdGVkIGZpbGVzIChkYXRhYmFzZXMpIGl0IGlzIHZpdGFsIHRvIGFzc2lnbiBjb2RlcyBpbiBhIG1ldGhvZGljYWwgd2F5IHNvIGFzIHRvIGNvbnRyb2wgZnV0dXJlIGV4dGVuc2lvbiBhbmQgY2hhbmdlcyB3aGlsZSBtYWludGFpbmluZyBjb3JyZWN0IHByb2dyYW0gYWN0aW9uLiBUaGUgcHJpbmNpcGxlcyBvZiBtZXRob2RpY2FsIGNvZGluZyBhcmUgZGlzY3Vzc2VkLCBhbmQgdGhlIHdheSBpbiB3aGljaCBsb2dpY2FsIGNvbm5lY3Rpb25zIGJldHdlZW4gZGF0YSBpdGVtcyBtdXN0IGJlIHJlZmxlY3RlZCBpbiB0aGUgcmVmZXJlbmNlIGNvZGUgZnJhbWV3b3JrIGlzIHNob3duIHRocm91Z2ggYSBzZXQtdGhlb3JldGljIGluZm9ybWF0aW9uIG1vZGVsLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgYW5ub3RlID0gICAgICAgIkNvZGVzIHRvIGRlbm90ZSBhc3NvY2lhdGl2ZSB0dXBsZXMuIiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKTsgQzYxMzAgKERhdGEgaGFuZGxpbmcgdGVjaG5pcXVlcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIkJpcmtiZWNrIENvbGwuLCBVbml2LiBvZiBMb25kb24sIExvbmRvbiwgVUsiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYnVzaW5lc3Mgc3lzdGVtczsgZGF0YSBjb2RlczsgZGF0YSBoYW5kbGluZzsgZGF0YSBwcm9jZXNzaW5nIHN5c3RlbTsgZGF0YSBwcm9jZXNzaW5nLCBidXNpbmVzczsgZGF0YWJhc2VzOyBmaWxlIGtleXM7IGZpbGUgb3JnYW5pc2F0aW9uOyBpbmZvcm1hdGlvbiBtb2RlbDsgaW50ZWdyYXRlZCBmaWxlczsgbG9naWNhbCBjb25uZWN0aW9uczsgbWV0aG9kaWNhbCBjb2Rpbmc7IHJlZmVyZW5jZSBjb2RlcyIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7TGl0ZWNreToxOTc2OlNFRSwKICBhdXRob3IgPSAgICAgICAiQ2hhcmxlcyBSLiBMaXRlY2t5IGFuZCBHb3Jkb24gQi4gRGF2aXMiLAogIHRpdGxlID0gICAgICAgICJTdHVkeSBvZiBFcnJvcnMsIEVycm9yLVByb25lbmVzcywgYW5kIEVycm9yIERpYWdub3NpcyBpbiB7Q29ib2x9IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE5IiwKICBudW1iZXIgPSAgICAgICAiMSIsCiAgcGFnZXMgPSAgICAgICAgIjMzLS0zNyIsCiAgbW9udGggPSAgICAgICAgamFuLAogIHllYXIgPSAgICAgICAgICIxOTc2IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlRoaXMgcGFwZXIgcHJvdmlkZXMgZGF0YSBvbiBDb2JvbCBlcnJvciBmcmVxdWVuY3kgZm9yIGNvcnJlY3Rpb24gb2YgZXJyb3JzIGluIHN0dWRlbnQtb3JpZW50ZWQgY29tcGlsZXJzLCBpbXByb3ZlbWVudCBvZiB0ZWFjaGluZywgYW5kIGNoYW5nZXMgaW4gcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UuIENvYm9sIHdhcyBzdHVkaWVkIGJlY2F1c2Ugb2YgZWNvbm9taWMgaW1wb3J0YW5jZSwgd2lkZXNwcmVhZCB1c2FnZSwgcG9zc2libGUgZXJyb3ItaW5kdWNpbmcgZGVzaWduLCBhbmQgbGFjayBvZiByZXNlYXJjaC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjExMCAoU3lzdGVtcyBhbmFseXNpcyBhbmQgcHJvZ3JhbW1pbmcpOyBDNjE0MEQgKEhpZ2ggbGV2ZWwgbGFuZ3VhZ2VzKTsgQzYxNTBHIChEaWFnbm9zdGljLCB0ZXN0aW5nLCBkZWJ1Z2dpbmcgYW5kIGV2YWx1YXRpbmcgc3lzdGVtcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIG9mIFdpc2NvbnNpbiwgTWFkaXNvbiwgV0ksIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJDT0JPTDsgY29tcHV0ZXIgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzOyBlcnJvciBkaWFnbm9zaXM7IGVycm9yczsgbWlzc3BlbGxpbmdzOyBwcm9ncmFtIGRpYWdub3N0aWNzOyBwcm9ncmFtbWluZyIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7S251dGg6MTk3NjpFQUIsCiAgYXV0aG9yID0gICAgICAgIkRvbmFsZCBFLiBLbnV0aCIsCiAgdGl0bGUgPSAgICAgICAgIkVycmF0YToge2BgQW5jaWVudCBCYWJ5bG9uaWFuIGFsZ29yaXRobXMnJ30iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTkiLAogIG51bWJlciA9ICAgICAgICIyIiwKICBtb250aCA9ICAgICAgICBmZWIsCiAgeWVhciA9ICAgICAgICAgIjE5NzYiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICIxMDguMDFBMTUiLAogIE1SbnVtYmVyID0gICAgICI1MiAxMzEzMyIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBEZWMgMjYgMTM6MzU6MDcgMTk5NSIsCiAgbm90ZSA9ICAgICAgICAgIlNlZSBcY2l0ZXtLbnV0aDoxOTcyOkFCQX0uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKfQoKQEFydGljbGV7Qm9jaG1hbm46MTk3NjpTRUwsCiAgYXV0aG9yID0gICAgICAgIkdyZWdvciBWLiBCb2NobWFubiIsCiAgdGl0bGUgPSAgICAgICAgIlNlbWFudGljIEV2YWx1YXRpb24gZnJvbSBMZWZ0IHRvIFJpZ2h0IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE5IiwKICBudW1iZXIgPSAgICAgICAiMiIsCiAgcGFnZXMgPSAgICAgICAgIjU1LS02MiIsCiAgbW9udGggPSAgICAgICAgZmViLAogIHllYXIgPSAgICAgICAgICIxOTc2IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjhBMzAiLAogIE1SbnVtYmVyID0gICAgICI1NSAxMzg3OSIsCiAgbXJyZXZpZXdlciA9ICAgIlYuIE4uIEFnYWZvbm92IiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9Db21waWxlci9BRy5iaWI7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGF0YWJhc2UvZGJhc2UuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiVGhpcyBwYXBlciBkZXNjcmliZXMgYXR0cmlidXRlIGdyYW1tYXJzIGFuZCB0aGVpciB1c2UgZm9yIHRoZSBkZWZpbml0aW9uIG9mIHByb2dyYW1taW5nIGxhbmd1YWdlcyBhbmQgY29tcGlsZXJzOyBhIGZvcm1hbCBkZWZpbml0aW9uIG9mIGF0dHJpYnV0ZSBncmFtbWFycyBhbmQgYSBkaXNjdXNzaW9uIG9mIHNvbWUgb2YgaXRzIGltcG9ydGFudCBhc3BlY3RzIGFyZSBpbmNsdWRlZC4gVGhlIHBhcGVyIGNvbmNlbnRyYXRlcyBvbiB0aGUgZXZhbHVhdGlvbiBvZiBzZW1hbnRpYyBhdHRyaWJ1dGVzIGluIGEgZmV3IHBhc3NlcyBmcm9tIGxlZnQgdG8gcmlnaHQgb3ZlciB0aGUgZGVyaXZhdGlvbiB0cmVlIG9mIGEgcHJvZ3JhbS4gQSBjb25kaXRpb24gZm9yIGFuIGF0dHJpYnV0ZSBncmFtbWFyIGlzIGdpdmVuIHdoaWNoIGFzc3VyZXMgdGhhdCB0aGUgc2VtYW50aWNzIG9mIGFueSBwcm9ncmFtIGNhbiBiZSBldmFsdWF0ZWQgaW4gYSBzaW5nbGUgcGFzcyBvdmVyIHRoZSBkZXJpdmF0aW9uIHRyZWUsIGFuZCBhbiBhbGdvcml0aG0gaXMgZGlzY3Vzc2VkIHdoaWNoIGRlY2lkZXMgaG93IG1hbnkgcGFzc2VzIGZyb20gbGVmdCB0byByaWdodCBhcmUgaW4gZ2VuZXJhbCBuZWNlc3NhcnksIGdpdmVuIHRoZSBhdHRyaWJ1dGUgZ3JhbW1hci4gVGhlc2Ugbm90aW9ucyBhcmUgZXhwbGFpbmVkIGluIHRlcm1zIG9mIGFuIGV4YW1wbGUgZ3JhbW1hciB3aGljaCBkZXNjcmliZXMgdGhlIHNjb3BlIHJ1bGVzIG9mIEFsZ29sIDYwLiBQcmFjdGljYWwgcXVlc3Rpb25zLCBzdWNoIGFzIHRoZSByZWxhdGl2ZSBlZmZpY2llbmN5IG9mIGRpZmZlcmVudCBldmFsdWF0aW9uIHNjaGVtZXMsIGFuZCB0aGUgZWFzZSBvZiBhZGFwdGluZyB0aGUgYXR0cmlidXRlIGdyYW1tYXIgb2YgYSBnaXZlbiBwcm9ncmFtbWluZyBsYW5ndWFnZSB0byB0aGUgbGVmdC10by1yaWdodCBldmFsdWF0aW9uIHNjaGVtZSBhcmUgZGlzY3Vzc2VkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MjEwIChGb3JtYWwgbG9naWMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBvZiBNb250cmVhbCwgTW9udHJlYWwsIFF1ZS4sIENhbmFkYSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJBbGdvbCA2MDsgYXR0cmlidXRlIGdyYW1tYXJzOyBjb21waWxlcnM7IGNvbXB1dGVyIHByb2dyYW1taW5nIGxhbmd1YWdlczsgY29udGV4dCBmcmVlIGdyYW1tYXI7IGNvbnRleHQtZnJlZSBncmFtbWFyczsgY29udGV4dC1mcmVlIGxhbmd1YWdlczsgZGVyaXZhdGlvbiB0cmVlOyBldmFsIGNsYXNzOyBsZWZ0IHRvIHJpZ2h0OyBtdWx0aXBhc3M7IHByb2dyYW1taW5nIGxhbmd1YWdlczsgc2VtYW50aWMgYXR0cmlidXRlcyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7Uml2ZXN0OjE5NzY6U09TLAogIGF1dGhvciA9ICAgICAgICJSb25hbGQgTC4gUml2ZXN0IiwKICB0aXRsZSA9ICAgICAgICAiT24gU2VsZi1Pcmdhbml6aW5nIFNlcXVlbnRpYWwgU2VhcmNoIEhldXJpc3RpY3MiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTkiLAogIG51bWJlciA9ICAgICAgICIyIiwKICBwYWdlcyA9ICAgICAgICAiNjMtLTY3IiwKICBtb250aCA9ICAgICAgICBmZWIsCiAgeWVhciA9ICAgICAgICAgIjE5NzYiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2OEExMCAoNjhBMjApIiwKICBNUm51bWJlciA9ICAgICAiNTMgMTIwNjgiLAogIG1ycmV2aWV3ZXIgPSAgICJSb2JlcnQgV2FnbmVyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EYXRhYmFzZS9XaWVkZXJob2xkLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIlRoaXMgcGFwZXIgZXhhbWluZXMgYSBjbGFzcyBvZiBoZXVyaXN0aWNzIGZvciBtYWludGFpbmluZyBhIHNlcXVlbnRpYWwgbGlzdCBpbiBhcHByb3hpbWF0ZWx5IG9wdGltYWwgb3JkZXIgd2l0aCByZXNwZWN0IHRvIHRoZSBhdmVyYWdlIHRpbWUgcmVxdWlyZWQgdG8gc2VhcmNoIGZvciBhIHNwZWNpZmllZCBlbGVtZW50LCBhc3N1bWluZyB0aGF0IGVhY2ggZWxlbWVudCBpcyBzZWFyY2hlZCBmb3Igd2l0aCBhIGZpeGVkIHByb2JhYmlsaXR5IGluZGVwZW5kZW50IG9mIHByZXZpb3VzIHNlYXJjaGVzIHBlcmZvcm1lZC4gVGhlIGBgbW92ZSB0byBmcm9udCcnIGFuZCBgYHRyYW5zcG9zaXRpb24nJyBoZXVyaXN0aWNzIGFyZSBzaG93biB0byBiZSBvcHRpbWFsIHRvIHdpdGhpbiBhIGNvbnN0YW50IGZhY3RvciwgYW5kIHRoZSB0cmFuc3Bvc2l0aW9uIHJ1bGUgaXMgc2hvd24gdG8gYmUgdGhlIG1vcmUgZWZmaWNpZW50IG9mIHRoZSB0d28uIEVtcGlyaWNhbCBldmlkZW5jZSBzdWdnZXN0cyB0aGF0IHRyYW5zcG9zaXRpb24gaXMgaW4gZmFjdCBvcHRpbWFsIGZvciBhbnkgZGlzdHJpYnV0aW9uIG9mIHNlYXJjaCBwcm9iYWJpbGl0aWVzLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkIwMjUwIChDb21iaW5hdG9yaWFsIG1hdGhlbWF0aWNzKTsgQzExNjAgKENvbWJpbmF0b3JpYWwgbWF0aGVtYXRpY3MpOyBDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pOyBDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzOyA5MjIiLAogIGNvcnBzb3VyY2UgPSAgICJNSVQsIENhbWJyaWRnZSwgTUEsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBzeXN0ZW1zIHByb2dyYW1taW5nOyBwcm9iYWJpbGl0eSIsCiAga2V5d29yZHMgPSAgICAgImNvbWJpbmF0b3JpYWwgbWF0aGVtYXRpY3M7IGxpc3QgcHJvY2Vzc2luZzsgcnVsZTsgc2VsZiBvcmdhbmlzaW5nOyBzZXF1ZW50aWFsIHNlYXJjaCBoZXVyaXN0aWNzOyBzb3J0aW5nOyB0cmFuc3Bvc2l0aW9uIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtJdmVzOjE5NzY6UEVGLAogIGF1dGhvciA9ICAgICAgICJGLiBNLiBJdmVzIiwKICB0aXRsZSA9ICAgICAgICAiUGVybXV0YXRpb24gRW51bWVyYXRpb246IEZvdXIgTmV3IFBlcm11dGF0aW9uIEFsZ29yaXRobXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTkiLAogIG51bWJlciA9ICAgICAgICIyIiwKICBwYWdlcyA9ICAgICAgICAiNjgtLTcyIiwKICBtb250aCA9ICAgICAgICBmZWIsCiAgeWVhciA9ICAgICAgICAgIjE5NzYiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiQ2xhc3NpY2FsIHBlcm11dGF0aW9uIGVudW1lcmF0aW9uIGFsZ29yaXRobXMgZW5jb3VudGVyIHNwZWNpYWwgY2FzZXMgcmVxdWlyaW5nIGFkZGl0aW9uYWwgY29tcHV0YXRpb24gZXZlcnkgbnRoIHBlcm11dGF0aW9uIHdoZW4gZ2VuZXJhdGluZyB0aGUgbiEgcGVybXV0YXRpb25zIG9uIG4gbWFya3MuIEZvdXIgbmV3IGFsZ29yaXRobXMgaGF2ZSB0aGUgYXR0cmlidXRlIHRoYXQgc3BlY2lhbCBjYXNlcyBvY2N1ciBldmVyeSBuKG4gbWludXMgMSkgcGVybXV0YXRpb25zLiBUd28gb2YgdGhlIGFsZ29yaXRobXMgcHJvZHVjZSB0aGUgbmV4dCBwZXJtdXRhdGlvbiB3aXRoIGEgc2luZ2xlIGV4Y2hhbmdlIG9mIHR3byBtYXJrcy4gVGhlIG90aGVyIHR3byBhbGdvcml0aG1zIGluZnJlcXVlbnRseSBleGNoYW5nZSBtb3JlIHRoYW4gdHdvIG1hcmtzLCBidXQgdGhlIHJ1bGVzIGZvciBnZW5lcmF0aW5nIHRoZSBuZXh0IHBlcm11dGF0aW9uIGFyZSB2ZXJ5IHNpbXBsZS4gUGVyZm9ybWFuY2UgdGVzdHMgd2hpY2ggaGF2ZSBjb3VudGVkIGV4ZWN1dGlvbiBvZiBhc3NpZ25tZW50IHN0YXRlbWVudHMsIGNvbXBhcmlzb25zLCBhcml0aG1ldGljIG9wZXJhdGlvbnMsIGFuZCBzdWJzY3JpcHRlZCBhcnJheSByZWZlcmVuY2VzIGhhdmUgc2hvd24gc3VwZXJpb3JpdHkgb2YgdGhlIG5ldyBhbGdvcml0aG1zIGNvbXBhcmVkIHRvIEJvb3Rocm95ZCdzIGltcGxlbWVudGF0aW9uIG9mIE0uIEIuIFdlbGxzJyBhbGdvcml0aG0gYW5kIEVybGljaCdzIGltcGxlbWVudGF0aW9uIG9mIHRoZSBKb2huc29uLVRyb3R0ZXIgYWxnb3JpdGhtLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkIwMjUwIChDb21iaW5hdG9yaWFsIG1hdGhlbWF0aWNzKTsgQzExNjAgKENvbWJpbmF0b3JpYWwgbWF0aGVtYXRpY3MpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJXZXN0ZXJuIFdhc2hpbmd0b24gU3RhdGUgQ29sbC4sIEJlbGxpbmdoYW0sIFdBLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tYmluYXRvcmlhbCBtYXRoZW1hdGljczsgY29tcHV0ZXIgcHJvZ3JhbW1pbmc7IGVudW1lcmF0aW9uOyBsb29wIGZyZWUgYWxnb3JpdGhtczsgcGVybXV0YXRpb24iLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle01hcnRlbGxpOjE5NzY6QUhTLAogIGF1dGhvciA9ICAgICAgICJBbGJlcnRvIE1hcnRlbGxpIiwKICB0aXRsZSA9ICAgICAgICAiQXBwbGljYXRpb24gb2YgSGV1cmlzdGljIFNlYXJjaCBNZXRob2RzIHRvIEVkZ2UgYW5kIENvbnRvdXIgRGV0ZWN0aW9uIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE5IiwKICBudW1iZXIgPSAgICAgICAiMiIsCiAgcGFnZXMgPSAgICAgICAgIjczLS04MyIsCiAgbW9udGggPSAgICAgICAgZmViLAogIHllYXIgPSAgICAgICAgICIxOTc2IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlRoaXMgcGFwZXIgcHJlc2VudHMgYSBtZXRob2QgZm9yIGRldGVjdGluZyBlZGdlcyBhbmQgY29udG91cnMgaW4gbm9pc3kgcGljdHVyZXMuIFRoZSBwcm9wZXJ0aWVzIG9mIGFuIGVkZ2UgYXJlIGVtYmVkZGVkIGluIGEgZmlndXJlIG9mIG1lcml0IGFuZCB0aGUgZWRnZSBkZXRlY3Rpb24gcHJvYmxlbSBiZWNvbWVzIHRoZSBwcm9ibGVtIG9mIG1pbmltaXppbmcgdGhlIGdpdmVuIGZpZ3VyZSBvZiBtZXJpdC4gVGhpcyBwcm9ibGVtIGNhbiBiZSByZXByZXNlbnRlZCBhcyBhIHNob3J0ZXN0IHBhdGggcHJvYmxlbSBvbiBhIGdyYXBoIGFuZCBjYW4gYmUgc29sdmVkIHVzaW5nIHdlbGwta25vd24gZ3JhcGggc2VhcmNoIGFsZ29yaXRobXMuIFRoZSByZWxhdGlvbnMgYmV0d2VlbiB0aGlzIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtaW5pbWl6YXRpb24gcHJvYmxlbSBhbmQgYSBkeW5hbWljIHByb2dyYW1taW5nIGFwcHJvYWNoIGFyZSBkaXNjdXNzZWQsIHNob3dpbmcgdGhhdCB0aGUgZ3JhcGggc2VhcmNoIG1ldGhvZCBjYW4gbGVhZCB0byBzdWJzdGFudGlhbCBpbXByb3ZlbWVudHMgaW4gY29tcHV0aW5nIHRpbWUuIE1vcmVvdmVyLCBpZiBoZXVyaXN0aWMgc2VhcmNoIG1ldGhvZHMgYXJlIHVzZWQsIHRoZSBjb21wdXRpbmcgdGltZSB3aWxsIGRlcGVuZCBvbiB0aGUgYW1vdW50IG9mIG5vaXNlIGluIHRoZSBwaWN0dXJlLiBTb21lIGV4cGVyaW1lbnRhbCByZXN1bHRzIGFyZSBnaXZlbjsgdGhlc2Ugc2hvdyBob3cgdmFyaW91cyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc2hhcGUgb2YgdGhlIGNvbnRvdXIgb2YgYW4gb2JqZWN0IGNhbiBiZSBlbWJlZGRlZCBpbiB0aGUgZmlndXJlIG9mIG1lcml0LCB0aHVzIGFsbG93aW5nIHRoZSBleHRyYWN0aW9uIG9mIGNvbnRvdXJzIGZyb20gbm9pc3kgcGljdHVyZXMgYW5kIHRoZSBzZXBhcmF0aW9uIG9mIHRvdWNoaW5nIG9iamVjdHMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjAyNjAgKE9wdGltaXNhdGlvbiB0ZWNobmlxdWVzKTsgQjYxNDBDIChPcHRpY2FsIGluZm9ybWF0aW9uLCBpbWFnZSBhbmQgdmlkZW8gc2lnbmFsIHByb2Nlc3NpbmcpOyBDMTE4MCAoT3B0aW1pc2F0aW9uIHRlY2huaXF1ZXMpOyBDMTIzMCAoQXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UpOyBDMTI1MCAoUGF0dGVybiByZWNvZ25pdGlvbik7IEM1NTMwIChQYXR0ZXJuIHJlY29nbml0aW9uIGFuZCBjb21wdXRlciB2aXNpb24gZXF1aXBtZW50KTsgQzc0OTAgKENvbXB1dGluZyBpbiBvdGhlciBlbmdpbmVlcmluZyBmaWVsZHMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjM7IDkyMSIsCiAgY29ycHNvdXJjZSA9ICAgIklzdGl0dXRvIGRpIEVsYWJvcmF6aW9uZSBkZWxsYSBJbmZvcm1hemlvbmUgQ29uc2lnbGlvIE5hemlvbmFsZSBkZWxsZSBSaWNlcmNoZSwgUGl6YSwgSXRhbHkiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29udG91cnM7IGR5bmFtaWMgcHJvZ3JhbW1pbmc7IGVkZ2UgYW5kIGNvbnRvdXIgZGV0ZWN0aW9uOyBleHRyYWN0aW9uIG9mOyBoZXVyaXN0aWMgcHJvZ3JhbW1pbmc7IGhldXJpc3RpYyBzZWFyY2g7IGltYWdlIHByb2Nlc3Npbmc7IG1hdGhlbWF0aWNhbCBwcm9ncmFtbWluZywgZHluYW1pYzsgbm9pc3k7IHBhdHRlcm47IHBhdHRlcm4gcmVjb2duaXRpb247IHBhdHRlcm4gcmVjb2duaXRpb24gc3lzdGVtczsgcGljdHVyZSBwcm9jZXNzaW5nOyBwaWN0dXJlczsgcHJvYmxlbTsgcmVjb2duaXRpb247IHNob3J0ZXN0IHBhdGg7IHNvbHZpbmciLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle1NpbGVyOjE5NzY6U0VNLAogIGF1dGhvciA9ICAgICAgICJLZW5uZXRoIEYuIFNpbGVyIiwKICB0aXRsZSA9ICAgICAgICAiQSBTdG9jaGFzdGljIEV2YWx1YXRpb24gTW9kZWwgZm9yIERhdGFiYXNlIE9yZ2FuaXphdGlvbnMgaW4gRGF0YSBSZXRyaWV2YWwgU3lzdGVtcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOSIsCiAgbnVtYmVyID0gICAgICAgIjIiLAogIHBhZ2VzID0gICAgICAgICI4NC0tOTUiLAogIG1vbnRoID0gICAgICAgIGZlYiwKICB5ZWFyID0gICAgICAgICAiMTk3NiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGF0YWJhc2UvR3JhZWZlLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIlRoaXMgcGFwZXIgZGlzY3Vzc2VzIGEgc2ltdWxhdGlvbiBtb2RlbCBvZiBhIGRhdGEgcmV0cmlldmFsIHN5c3RlbSB3aGljaCBoYXMgdGhlIGVmZmVjdCBvZiBzaWduaWZpY2FudGx5IHJlZHVjaW5nIHRoZSBjb3N0IG9mIGV4cGVyaW1lbnRhdGlvbiBhbmQgZW5hYmxpbmcgcmVzZWFyY2ggbmV2ZXIgYXR0ZW1wdGVkIGJlZm9yZS4gVGhlIG1vZGVsIGlzIGRlc2lnbmVkIHRvIGVzdGltYXRlIHRoZSByZXRyaWV2YWwgd29ya2xvYWQgb2YgYWx0ZXJuYXRpdmUgZGF0YSByZXRyaWV2YWwgc3lzdGVtcy4gVGhlc2UgZGF0YSByZXRyaWV2YWwgc3lzdGVtcyBjYW4gYmUgb3JnYW5pemVkIHVuZGVyIHNldmVyYWwgZGF0YWJhc2Ugb3JnYW5pemF0aW9ucywgaW5jbHVkaW5nIGludmVydGVkIGxpc3QsIHRocmVhZGVkIGxpc3QsIGFuZCBjZWxsdWxhciBsaXN0IG9yZ2FuaXphdGlvbnMgYW5kIGh5YnJpZCBjb21iaW5hdGlvbnMgb2YgdGhlc2Ugc3lzdGVtcy4gRWZmZWN0aXZlbmVzcyBvZiB0aGUgbWV0aG9kb2xvZ3kgaXMgZGVtb25zdHJhdGVkIGJ5IHVzaW5nIHRoZSBtb2RlbCB0byBzdHVkeSB0aGUgZWZmZWN0IG9mIGRhdGFiYXNlIG9yZ2FuaXphdGlvbnMgaW4gZGF0YSByZXRyaWV2YWwgc3lzdGVtcy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pOyBDNzI1MCAoSW5mb3JtYXRpb24gc3RvcmFnZSBhbmQgcmV0cmlldmFsKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzOyA5MjIiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBvZiBDYWxpZm9ybmlhLCBMb3MgQW5nZWxlcywgQ0EsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjZWxsdWxhciBsaXN0OyBkYXRhIHByb2Nlc3Npbmc7IGRhdGEgcmV0cmlldmFsIHN5c3RlbXM7IGRhdGFiYXNlIG1hbmFnZW1lbnQgc3lzdGVtczsgZGF0YWJhc2Ugb3JnYW5pc2F0aW9uczsgaW5mb3JtYXRpb24gcmV0cmlldmFsIHN5c3RlbXM7IGludmVydGVkIGxpc3Q7IGxpc3Q7IG1hdGhlbWF0aWNhbCBtb2RlbHM7IHBoeXNpY2FsIGRhdGFiYXNlIGRlc2lnbjsgc2ltdWxhdGlvbjsgc3RvY2hhc3RpYyBldmFsdWF0aW9uIG1vZGVsOyBzdG9jaGFzdGljIHByb2Nlc3NlczsgdGhyZWFkZWQiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0ZhZ2luOjE5NzY6Q0VDLAogIGF1dGhvciA9ICAgICAgICJSb25hbGQgRmFnaW4iLAogIHRpdGxlID0gICAgICAgICJBIENvdW50ZXJpbnR1aXRpdmUgRXhhbXBsZSBvZiBDb21wdXRlciBQYWdpbmciLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTkiLAogIG51bWJlciA9ICAgICAgICIyIiwKICBwYWdlcyA9ICAgICAgICAiOTYtLTk3IiwKICBtb250aCA9ICAgICAgICBmZWIsCiAgeWVhciA9ICAgICAgICAgIjE5NzYiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2OEE1MCIsCiAgTVJudW1iZXIgPSAgICAgIjU1IDcwMDBhIiwKICBtcnJldmlld2VyID0gICAiVy4gS3dhc293aWVjIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgbm90ZSA9ICAgICAgICAgIlNlZSBjb3JyaWdlbmR1bSBcY2l0ZXtGYWdpbjoxOTc2OkNDRX0uIiwKICBhYnN0cmFjdCA9ICAgICAiQSBjb3VudGVyZXhhbXBsZSBpcyBleGhpYml0ZWQgdG8gYSBuYXR1cmFsIGNvbmplY3R1cmUgY29uY2VybmluZyB0aGUgb3B0aW1hbCB3YXkgdG8gZ3JvdXAgcmVjb3JkcyBpbnRvIHBhZ2VzIGluIHRoZSBpbmRlcGVuZGVudCByZWZlcmVuY2UgbW9kZWwgb2YgY29tcHV0ZXIgcGFnaW5nIChhbiBvcmdhbml6YXRpb24gaXMgc2FpZCB0byBiZSBvcHRpbWFsIGlmIHRoZSBgYGxlYXN0IHJlY2VudGx5IHVzZWQnJyBtaXNzIHJhdGlvIGlzIG1pbmltaXplZCkuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiSUJNIFRob21hcyBKLiBXYXRzb24gUmVzLiBDZW50ZXIsIFlvcmt0b3duIEhlaWdodHMsIE5ZLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYWxsb2NhdGlvbjsgY29tcHV0ZXIgb3BlcmF0aW5nIHN5c3RlbXM7IGNvbXB1dGVyIHBhZ2luZzsgaW5kZXBlbmRlbnQgcmVmZXJlbmNlIG1vZGVsOyBsZWFzdCByZWNlbnRseTsgbW9zdCBsaWtlbHkgdG9nZXRoZXI7IHJlY29yZDsgc3RvcmFnZSBvcmdhbmlzYXRpb247IHVzZWQ7IHZpcnR1YWwgc3RvcmFnZSIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7QXJ0enk6MTk3NjpGRFQsCiAgYXV0aG9yID0gICAgICAgIkVodWQgQXJ0enkgYW5kIEphbWVzIEEuIEhpbmRzIGFuZCBIYXJyeSBKLiBTYWFsIiwKICB0aXRsZSA9ICAgICAgICAiQSBGYXN0IERpdmlzaW9uIFRlY2huaXF1ZSBmb3IgQ29uc3RhbnQgRGl2aXNvcnMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTkiLAogIG51bWJlciA9ICAgICAgICIyIiwKICBwYWdlcyA9ICAgICAgICAiOTgtLTEwMSIsCiAgbW9udGggPSAgICAgICAgZmViLAogIHllYXIgPSAgICAgICAgICIxOTc2IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjhBMTAgKDEwQTEwKSIsCiAgTVJudW1iZXIgPSAgICAgIjU0IDE3MDciLAogIG1ycmV2aWV3ZXIgPSAgICJDLiBGLiBLZWxlbWVuIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9Db21waWxlci9Db21waWxlci5MaW5zLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIkEgZmFzdCBhbGdvcml0aG0gZm9yIGRpdmlzaW9uIGJ5IGNvbnN0YW50IGRpdmlzb3JzIGlzIHByZXNlbnRlZC4gVGhlIG1ldGhvZCBoYXMgcHJvdmVkIHZlcnkgdXNlZnVsIGltcGxlbWVudGVkIGFzIG1pY3JvY29kZSBvbiBhIGJpbmFyeSBtYWNoaW5lLCBhbmQgY2FuIGJlIGFkYXB0ZWQgZGlyZWN0bHkgaW50byBoYXJkd2FyZS4gVGhlIG1hdGhlbWF0aWNhbCBmb3VuZGF0aW9ucyBvZiB0aGUgYWxnb3JpdGhtIGFyZSBwcmVzZW50ZWQgYXMgd2VsbCBhcyBzb21lIHBlcmZvcm1hbmNlIG1lYXN1cmVzLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM1MjMwIChEaWdpdGFsIGFyaXRobWV0aWMgbWV0aG9kcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlN0YXRlIFVuaXYuIG9mIE5ldyBZb3JrLCBCdWZmYWxvLCBOWSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImJpdCBhZGRyZXNzYWJsZSBtZW1vcnk7IGNvbXB1dGVyIHByb2dyYW1taW5nOyBjb25zdGFudCBkaXZpc29yczsgZGlnaXRhbCBhcml0aG1ldGljOyBmYXN0IGRpdmlzaW9uOyBtaWNyb3Byb2dyYW0iLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle05ld2VsbDoxOTc2OkNTRSwKICBhdXRob3IgPSAgICAgICAiQWxsZW4gTmV3ZWxsIGFuZCBIZXJiZXJ0IEEuIFNpbW9uIiwKICB0aXRsZSA9ICAgICAgICAiQ29tcHV0ZXIgU2NpZW5jZSBhcyBFbXBpcmljYWwgSW5xdWlyeTogU3ltYm9scyBhbmQgU2VhcmNoIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE5IiwKICBudW1iZXIgPSAgICAgICAiMyIsCiAgcGFnZXMgPSAgICAgICAgIjExMy0tMTI2IiwKICBtb250aCA9ICAgICAgICBtYXIsCiAgeWVhciA9ICAgICAgICAgIjE5NzYiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2OC0wMSIsCiAgTVJudW1iZXIgPSAgICAgIjU3IDQ1NTUiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzEyMzAgKEFydGlmaWNpYWwgaW50ZWxsaWdlbmNlKTsgQzYxMzAgKERhdGEgaGFuZGxpbmcgdGVjaG5pcXVlcykiLAogIGNvcnBzb3VyY2UgPSAgICJDYXJuZWdpZS1NZWxsb24gVW5pdi4sIFBpdHRzYnVyZ2gsIFBBLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJhcnRpZmljaWFsIGludGVsbGlnZW5jZTsgY29nbml0aW9uOyBjb21wdXRlciBzY2llbmNlOyBlbXBpcmljYWwgaW5xdWlyeTsgaGV1cmlzdGljIHByb2dyYW1taW5nOyBoZXVyaXN0aWMgc2VhcmNoOyBsaXN0OyBsaXN0IHByb2Nlc3Npbmc7IHBoeXNpY2FsIHN5bWJvbCBzeXN0ZW1zOyBwcm9ibGVtIHNvbHZpbmc7IHByb2Nlc3Npbmc7IHN5bWJvbHM7IFR1cmluZyIsCiAgdHJlYXRtZW50ID0gICAgIkEgQXBwbGljYXRpb247IFAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7QmFiYWQ6MTk3NjpKUE0sCiAgYXV0aG9yID0gICAgICAgIkphaXIgTS4gQmFiYWQgYW5kIE1hcmlvIE0uIE1vZGlhbm8iLAogIHRpdGxlID0gICAgICAgICJKb2luaW5nIFBvbGljaWVzIGluIGEgTXVsdGlwcmlvcml0eSBNdWx0aWNsYXNzIEJhdGNoIENvbXB1dGVyIFN5c3RlbSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOSIsCiAgbnVtYmVyID0gICAgICAgIjMiLAogIHBhZ2VzID0gICAgICAgICIxMjctLTEzNiIsCiAgbW9udGggPSAgICAgICAgbWFyLAogIHllYXIgPSAgICAgICAgICIxOTc2IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiOTBCMzUgKDY4QTk5KSIsCiAgTVJudW1iZXIgPSAgICAgIjUzIDc0MjkiLAogIG1ycmV2aWV3ZXIgPSAgICJFcm9sIEdlbGVuYmUiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiQSBtdWx0aXByaW9yaXR5IGJhdGNoIGNvbXB1dGVyIHN5c3RlbSB3aGljaCB1c2VycyBmcm9tIHNldmVyYWwgZGlmZmVyZW50IGNsYXNzZXMgbWF5IGpvaW4sIHdpdGggdG9sbCwgc2VydmljZSwgYW5kIHdhaXRpbmcgY2hhcmdlcyBpcyBmb3JtdWxhdGVkIGhlcmUgYXMgYSBzZW1pLU1hcmtvdiBkZWNpc2lvbiBwcm9jZXNzLCBpbiB3aGljaCB0aGUgYWltIG9mIGFycml2aW5nIHVzZXJzIGlzIHRvIG1pbmltaXplIHRoZWlyIGV4cGVjdGVkIGxvc3MuIFRoZSBvcHRpbWFsIGpvaW5pbmcgcG9saWN5IG9mIGFycml2aW5nIHVzZXJzIHdobyBtYXkgam9pbiB0aGUgc3lzdGVtIGF0IHNvbWUgb2YgaXRzIHF1ZXVlcyBpcyBhIGNvbnRyb2wgbGltaXQgcG9saWN5LCB3aXRoIGEgc2luZ2xlIGNvbnRyb2wgbnVtYmVyIGZvciBhbnkgcG9zc2libGUgcXVldWUgYW5kIHRoZSB1c2VyJ3MgY2xhc3M7IGEgbmV3bHkgYXJyaXZpbmcgdXNlciB3aWxsIGpvaW4gYSBxdWV1ZSB0aGF0IGlzIG5vdCBmaWxsZWQgdXAgdG8gdGhlIGNvbnRyb2wgbnVtYmVyIGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBxdWV1ZSBhbmQgdGhlIHVzZXIncyBjbGFzcy4gSW4gdGhpcyBwYXBlciBjb250cm9sIG51bWJlcnMsIGFzIHdlbGwgYXMgbG93ZXIgYW5kIHVwcGVyIGJvdW5kcyBmb3IgdGhlIGNvbnRyb2wgbnVtYmVycyBhbmQgdGhlIGNhcGFjaXRpZXMgb2YgdGhlIHN5c3RlbSdzIHF1ZXVlcyBhcmUgZGVyaXZlZC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjE1MEogKE9wZXJhdGluZyBzeXN0ZW1zKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzOyA5MjIiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBvZiBDaGljYWdvLCBDaGljYWdvLCBJTCwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImJhdGNoIHByb2Nlc3NpbmcgKGNvbXB1dGVycyk7IGNvbnRyb2wgbnVtYmVyOyBkYXRhIHByb2Nlc3Npbmc7IE1hcmtvdiBwcm9jZXNzZXM7IG11bHRpcHJpb3JpdHkgYmF0Y2ggY29tcHV0ZXIgc3lzdGVtOyBvcGVyYXRpbmcgc3lzdGVtOyBvcGVyYXRpb25zOyBvcGVyYXRpb25zIHJlc2VhcmNoOyBvcHRpbWFsIGpvaW5pbmcgcG9saWN5OyBwcmljZTsgcHJpb3JpdHkgcXVldWVzOyBwcm9iYWJpbGl0eSAtLS0gUXVldWVpbmcgVGhlb3J5OyByZXNlYXJjaDsgc2NoZWR1bGluZzsgc2VtaSBNYXJrb3cgcHJvY2VzcyIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7QWxsZW46MTk3NjpQREYsCiAgYXV0aG9yID0gICAgICAgIkYuIEUuIEFsbGVuIGFuZCBKLiBDb2NrZSIsCiAgdGl0bGUgPSAgICAgICAgIkEgUHJvZ3JhbSBEYXRhIEZsb3cgQW5hbHlzaXMgUHJvY2VkdXJlIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE5IiwKICBudW1iZXIgPSAgICAgICAiMyIsCiAgcGFnZXMgPSAgICAgICAgIjEzNy0tMTQ3IChvciAxMzctLTE0Nj8/KSIsCiAgbW9udGggPSAgICAgICAgbWFyLAogIHllYXIgPSAgICAgICAgICIxOTc2IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9QYXJhbGxlbC9NdWx0aS5iaWIiLAogIGFic3RyYWN0ID0gICAgICJUaGUgZ2xvYmFsIGRhdGEgcmVsYXRpb25zaGlwcyBpbiBhIHByb2dyYW0gY2FuIGJlIGV4cG9zZWQgYW5kIGNvZGlmaWVkIGJ5IHRoZSBzdGF0aWMgYW5hbHlzaXMgbWV0aG9kcyBkZXNjcmliZWQgaW4gdGhpcyBwYXBlci4gQSBwcm9jZWR1cmUgaXMgZ2l2ZW4gd2hpY2ggZGV0ZXJtaW5lcyBhbGwgdGhlIGRlZmluaXRpb25zIHdoaWNoIGNhbiBwb3NzaWJseSBgYHJlYWNoJycgZWFjaCBtb2RlIG9mIHRoZSBjb250cm9sIGZsb3cgZ3JhcGggb2YgdGhlIHByb2dyYW0gYW5kIGFsbCB0aGUgZGVmaW5pdGlvbnMgdGhhdCBhcmUgYGBsaXZlJycgb24gZWFjaCBlZGdlIG9mIHRoZSBncmFwaC4gVGhlIHByb2NlZHVyZSB1c2VzIGFuIGBgaW50ZXJ2YWwnJyBvcmRlcmVkIGVkZ2UgbGlzdGluZyBkYXRhIHN0cnVjdHVyZSBhbmQgaGFuZGxlcyByZWR1Y2libGUgYW5kIGlycmVkdWNpYmxlIGdyYXBocyBpbmRpc3Rpbmd1aXNoYWJseS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDI0MCAoUHJvZ3JhbW1pbmcgYW5kIGFsZ29yaXRobSB0aGVvcnkpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJJQk0gVGhvbWFzIEouIFdhdHNvbiBSZXMuIENlbnRlciwgWW9ya3Rvd24gSGVpZ2h0cywgTlksIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21waWxlcnM7IGRhdGEgZmxvdyBhbmFseXNpczsgZGF0YSBwcm9jZXNzaW5nOyBlZGdlIGxpc3RpbmcgZGF0YTsgZmxvdyBncmFwaHM7IG9wdGltaXNhdGlvbjsgcHJvZ3JhbSBvcHRpbWlzYXRpb247IHByb2dyYW1taW5nIHRoZW9yeTsgc3RhdGljIGFuYWx5c2lzOyBzdHJ1Y3R1cmUiLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle01pbnNraToxOTc2OklSUCwKICBhdXRob3IgPSAgICAgICAiTmFmdGFseSBNaW5za2kiLAogIHRpdGxlID0gICAgICAgICJJbnRlbnRpb25hbCBSZXNvbHV0aW9uIG9mIFByaXZhY3kgUHJvdGVjdGlvbiBpbiBEYXRhYmFzZSBTeXN0ZW1zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE5IiwKICBudW1iZXIgPSAgICAgICAiMyIsCiAgcGFnZXMgPSAgICAgICAgIjE0OC0tMTU5IiwKICBtb250aCA9ICAgICAgICBtYXIsCiAgeWVhciA9ICAgICAgICAgIjE5NzYiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJTYXQgSmFuIDE4IDE1OjI4OjIzIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGF0YWJhc2UvV2llZGVyaG9sZC5iaWIiLAogIGFic3RyYWN0ID0gICAgICJUaGlzIHBhcGVyIGlzIGNvbmNlcm5lZCB3aXRoIHRoZSBjb250cm9sIG92ZXIgd2hhdCBhIHVzZXIgaXMgYWxsb3dlZCB0byBkbyB3aXRoIGEgcGllY2Ugb2YgaW5mb3JtYXRpb24gc3VwcGxpZWQgdG8gaGltIGJ5IHRoZSBkYXRhYmFzZS4gVGhlIGFiaWxpdHkgdG8gY29uZGl0aW9uIHRoZSBzdXBwbHkgb2YgaW5mb3JtYXRpb24gb24gaXRzIGludGVuZGVkIHVzZSBpcyBjYWxsZWQgaGVyZSBgYGludGVudGlvbmFsIHJlc29sdXRpb24nJyBvZiBwcml2YWN5IHByb3RlY3Rpb24uIFRoZSBwcmFjdGljYWwgaW1wb3J0YW5jZSBvZiBpbnRlbnRpb25hbCByZXNvbHV0aW9uIGlzIGRlbW9uc3RyYXRlZCBieSBzZXZlcmFsIGV4YW1wbGVzLCBhbmQgaXRzIHJlYWxpemF0aW9uIGlzIGRpc2N1c3NlZC4gSXQgYXBwZWFycyB0byBiZSBuZWNlc3NhcnkgZm9yIHRoZSBkYXRhYmFzZSB0byBpbXBvc2UgYSBjZXJ0YWluIGFtb3VudCBvZiBjb250cm9sIG92ZXIgdGhlIGludGVybmFsIGJlaGF2aW9yIG9mIHVzZXJzJyBwcm9ncmFtcyB3aGljaCBpbnRlcmFjdCB3aXRoIGl0LiBBIG1vZGVsIGZvciB1c2VyLWRhdGFiYXNlIGludGVyYWN0aW9uIHdoaWNoIGFkbWl0cyBzdWNoIGEgY29udHJvbCBpcyBkZXZlbG9wZWQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiZGF0YSBwcm9jZXNzaW5nIiwKfQoKQEFydGljbGV7TmFmdGFseToxOTc2OklSUCwKICBhdXRob3IgPSAgICAgICAiTS4gTmFmdGFseSIsCiAgdGl0bGUgPSAgICAgICAgIkludGVudGlvbmFsIHJlc29sdXRpb24gb2YgcHJpdmFjeSBwcm90ZWN0aW9uIGluIGRhdGFiYXNlIHN5c3RlbXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTkiLAogIG51bWJlciA9ICAgICAgICIzIiwKICBwYWdlcyA9ICAgICAgICAiMTQ4LS0xNTkiLAogIG1vbnRoID0gICAgICAgIG1hciwKICB5ZWFyID0gICAgICAgICAiMTk3NiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDMDIwMCAoR2VuZXJhbCBjb21wdXRlciB0b3BpY3MpOyBDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pOyBDNzEwMCAoQnVzaW5lc3MgYW5kIGFkbWluaXN0cmF0aW9uKSIsCiAgY29ycHNvdXJjZSA9ICAgIlJ1dGdlcnMgVW5pdi4sIE5ldyBCcnVuc3dpY2ssIE5KLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJkYXRhIGJhc2Ugc3lzdGVtczsgZGF0YWJhc2UgbWFuYWdlbWVudCBzeXN0ZW1zOyBpbnRlbnRpb25hbDsgaW50ZXJhY3Rpb24gd2l0aCBkYXRhYmFzZXM7IHByaXZhY3kgcHJvdGVjdGlvbjsgcHJvdGVjdGlvbiBpbiBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IHJlc29sdXRpb247IHNlY3VyaXR5OyBzZWN1cml0eSBvZiBkYXRhIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtTbW9vdDoxOTc2OkRJUywKICBhdXRob3IgPSAgICAgICAiTy4gUi4gU21vb3QiLAogIHRpdGxlID0gICAgICAgICJEZXZlbG9wbWVudCBvZiBhbiBpbnRlcm5hdGlvbmFsIHN5c3RlbSBmb3IgbGVnYWwgcHJvdGVjdGlvbiBvZiBjb21wdXRlciBwcm9ncmFtcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOSIsCiAgbnVtYmVyID0gICAgICAgIjQiLAogIHBhZ2VzID0gICAgICAgICIxNzEtLTE3NCIsCiAgbW9udGggPSAgICAgICAgYXByLAogIHllYXIgPSAgICAgICAgICIxOTc2IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMwMjAwIChHZW5lcmFsIGNvbXB1dGVyIHRvcGljcykiLAogIGNvcnBzb3VyY2UgPSAgICJDb21wdXRlciBhbmQgQnVzaW5lc3MgRXF1aXBtZW50IE1mZy4gQXNzb2MuLCBXYXNoaW5ndG9uLCBEQywgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgcHJvZ3JhbXM7IGluZm9ybWFsIHJlcG9ydDsgaW50ZXJuYXRpb25hbCBzeXN0ZW07IGxlZ2FsIHByb3RlY3Rpb247IGxlZ2lzbGF0aW9uOyBtYXJrZXQgZGF0YTsgc2VjdXJpdHkgb2YgZGF0YTsgc29mdHdhcmUgcHJvdGVjdGlvbjsgdGVjaG5vbG9naWNhbCBwcmVkaWN0aW9ucyIsCiAgdHJlYXRtZW50ID0gICAgIkcgR2VuZXJhbCBSZXZpZXc7IFAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7TGllbnR6OjE5NzY6Q0VWLAogIGF1dGhvciA9ICAgICAgICJCZW5uZXQgUC4gTGllbnR6IiwKICB0aXRsZSA9ICAgICAgICAiQSBjb21wYXJhdGl2ZSBldmFsdWF0aW9uIG9mIHZlcnNpb25zIG9mIHtCQVNJQ30iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTkiLAogIG51bWJlciA9ICAgICAgICI0IiwKICBwYWdlcyA9ICAgICAgICAiMTc1LS0xODEiLAogIG1vbnRoID0gICAgICAgIGFwciwKICB5ZWFyID0gICAgICAgICAiMTk3NiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJGcm9tIGl0cyBpbmNlcHRpb24sIHRoZSBCQVNJQyBsYW5ndWFnZSBoYXMgZ3Jvd24gaW4gdGVybXMgb2YgaXRzIHVzYWdlLCBzY29wZSBvZiB1c2FnZSwgYW5kIGl0cyBmZWF0dXJlcy4gVGhpcyBhcnRpY2xlIGNvbXBhcmVzIHRlbiBvZiB0aGUgY3VycmVudCB2ZXJzaW9ucyBvZiBCQVNJQyB3aXRoIGVhY2ggb3RoZXIsIHdpdGggdHdvIGVhcmxpZXIgdmVyc2lvbnMsIGFuZCB3aXRoIHRoZSBwcm9wb3NlZCBzdGFuZGFyZCBmb3IgbWluaW1hbCBCQVNJQy4gVGhlIGNvbXBhcmlzb24gaXMgYXJyYW5nZWQgYnkgdGhlIGZlYXR1cmVzIG9mIHRoZSB2ZXJzaW9ucyBhbmQgYnkgY29tcHV0YXRpb25hbCBjb21wYXJpc29uIG9mIGNvbXB1dGF0aW9uIGFuZCB0aW1lcyBhbmQgcHJvY2Vzc2luZyBjb3N0cy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjE0MEQgKEhpZ2ggbGV2ZWwgbGFuZ3VhZ2VzKTsgQzYxNTBHIChEaWFnbm9zdGljLCB0ZXN0aW5nLCBkZWJ1Z2dpbmcgYW5kIGV2YWx1YXRpbmcgc3lzdGVtcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIG9mIENhbGlmb3JuaWEsIExvcyBBbmdlbGVzLCBDQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgIkJBU0lDOyBjb21wdXRlciBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IGludGVycHJldGl2ZSBsYW5ndWFnZSBzdW1tYXJ5IiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtSYXltb25kOjE5NzY6TExBLAogIGF1dGhvciA9ICAgICAgICJKLiBSYXltb25kIiwKICB0aXRsZSA9ICAgICAgICAie0xHfToge0F9IGxhbmd1YWdlIGZvciBhbmFseXRpYyBnZW9tZXRyeSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOSIsCiAgbnVtYmVyID0gICAgICAgIjQiLAogIHBhZ2VzID0gICAgICAgICIxODItLTE4NyIsCiAgbW9udGggPSAgICAgICAgYXByLAogIHllYXIgPSAgICAgICAgICIxOTc2IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNTAtMDQgNTBEMTUgNjhBMDUiLAogIE1SbnVtYmVyID0gICAgICI1NyA3MzQxIiwKICBtcnJldmlld2VyID0gICAiV29sZmdhbmcgQm9obSIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvR3JhcGhpY3MvaW1hZ2VyL2ltYWdlci43Ni5iaWIiLAogIGFic3RyYWN0ID0gICAgICJBIGNvbnZlcnNhdGlvbmFsIHByb2dyYW1taW5nIGxhbmd1YWdlIGZvciBhbmFseXRpYyBnZW9tZXRyeSBpcyBkZXNjcmliZWQsIHRvZ2V0aGVyIHdpdGggc29tZSBhc3BlY3RzIG9mIGl0cyBpbXBsZW1lbnRhdGlvbi4gVGhlIGxhbmd1YWdlIGFsbG93cyB0aGUgZmxleGlibGUgZGVmaW5pdGlvbiBvZiBnZW9tZXRyaWMgb2JqZWN0cyBhbmQgZWxlbWVudHMsIGNvbXB1dGVzIHRoZWlyIHBhcmFtZXRlcnMsIGFuZCBkaXNwbGF5cyB0aGUgcmVzdWx0cy4gSXQgYWxzbyBwcm92aWRlcyB0aGUgY2FwYWJpbGl0eSBvZiBzcGVjaWZ5aW5nIGEgZ2VvbWV0cmljIGZpZ3VyZSB2aWEgYSBjb2xsZWN0aW9uIG9mIHBhcmFtZXRlcnMgYW5kIGRpc3BsYXlpbmcgdmFyaW91cyBsb2NpIGNvcnJlc3BvbmRpbmcgdG8gdGhlc2UgcGFyYW1ldGVycy4gQSB0aGlyZCBjaGFyYWN0ZXJpc3RpYyBjb25zaXN0cyBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdXNpbmcgdGhpcyBsYW5ndWFnZSB0byBkZXNpZ24gb3RoZXIgdXNlciBvcmllbnRlZCBsYW5ndWFnZXMuIExHIGhhcyBiZWVuIHNwZWNpZmljYWxseSBkZXNpZ25lZCBmb3IgdXNlIGJ5IG5vbnByb2dyYW1tZXJzOyBpdCBpcyBlYXN5IHRvIGxlYXJuIGFuZCB2ZXJ5IGNsb3NlIHRvIHRoZSBuYXR1cmFsIGxhbmd1YWdlIHVzZWQgaW4gZ2VvbWV0cnkuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzU1NDAgKFRlcm1pbmFscyBhbmQgZ3JhcGhpYyBkaXNwbGF5cyk7IEM2MTQwRCAoSGlnaCBsZXZlbCBsYW5ndWFnZXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBvZiBPdHRhd2EsIE90dGF3YSwgT250LiwgQ2FuYWRhIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFuYWx5dGljIGdlb21ldHJ5OyBjb21wdXRlcjsgY29tcHV0ZXIgZ3JhcGhpY3M7IGNvbXB1dGVyIHByb2dyYW1taW5nIGxhbmd1YWdlczsgY29udmVudGlvbmFsIHByb2dyYW1taW5nIGxhbmd1YWdlOyBnZW9tZXRyeTsgZ3JhcGhpY3M7IGludGVyYWN0aXZlIHByb2dyYW1taW5nOyBMRzsgcHJvYmxlbSBvcmllbnRlZCBsYW5ndWFnZTsgcHJvYmxlbSBvcmllbnRlZCBsYW5ndWFnZXMiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0ZhZ2luOjE5NzY6Q0NFLAogIGF1dGhvciA9ICAgICAgICJSb25hbGQgRmFnaW4iLAogIHRpdGxlID0gICAgICAgICJDb3JyaWdlbmR1bToge2BgQSBDb3VudGVyaW50dWl0aXZlIEV4YW1wbGUgb2YgQ29tcHV0ZXIgUGFnaW5nJyd9IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE5IiwKICBudW1iZXIgPSAgICAgICAiNCIsCiAgcGFnZXMgPSAgICAgICAgIjE4NyIsCiAgbW9udGggPSAgICAgICAgYXByLAogIHllYXIgPSAgICAgICAgICIxOTc2IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjhBNTAiLAogIE1SbnVtYmVyID0gICAgICI1NSA3MDAwYiIsCiAgbXJyZXZpZXdlciA9ICAgIlcuIEt3YXNvd2llYyIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBEZWMgMjYgMTM6MzU6MDcgMTk5NSIsCiAgbm90ZSA9ICAgICAgICAgIlNlZSBcY2l0ZXtGYWdpbjoxOTc2OkNFQ30uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKfQoKQEFydGljbGV7S2F0ejoxOTc2OkxBUCwKICBhdXRob3IgPSAgICAgICAiU2htdWVsIEthdHogYW5kIFpvaGFyIE1hbm5hIiwKICB0aXRsZSA9ICAgICAgICAiTG9naWNhbCBBbmFseXNpcyBvZiBQcm9ncmFtcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOSIsCiAgbnVtYmVyID0gICAgICAgIjQiLAogIHBhZ2VzID0gICAgICAgICIxODgtLTIwNiIsCiAgbW9udGggPSAgICAgICAgYXByLAogIHllYXIgPSAgICAgICAgICIxOTc2IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjhBMDUiLAogIE1SbnVtYmVyID0gICAgICI1NiAxNzE4MyIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJNb3N0IHByZXNlbnQgc3lzdGVtcyBmb3IgdmVyaWZpY2F0aW9uIG9mIGNvbXB1dGVyIHByb2dyYW1zIGFyZSBpbmNvbXBsZXRlIGluIHRoYXQgaW50ZXJtZWRpYXRlIGluZHVjdGl2ZSBhc3NlcnRpb25zIG11c3QgYmUgcHJvdmlkZWQgbWFudWFsbHkgYnkgdGhlIHVzZXIsIHRlcm1pbmF0aW9uIGlzIG5vdCBwcm92ZW4sIGFuZCBpbmNvcnJlY3QgcHJvZ3JhbXMgYXJlIG5vdCB0cmVhdGVkLiBBcyBhIHVuaWZpZWQgc29sdXRpb24gdG8gdGhlc2UgcHJvYmxlbXMsIHRoaXMgcGFwZXIgc3VnZ2VzdHMgY29uZHVjdGluZyBhIGxvZ2ljYWwgYW5hbHlzaXMgb2YgcHJvZ3JhbXMgYnkgdXNpbmcgaW52YXJpYW50cyB3aGljaCBleHByZXNzIHdoYXQgaXMgYWN0dWFsbHkgb2NjdXJyaW5nIGluIHRoZSBwcm9ncmFtLiBUZWNobmlxdWVzIGZvciB0aGUgYXV0b21hdGljIGdlbmVyYXRpb24gb2YgaW52YXJpYW50cyBhcmUgZXhhbWluZWQuIENyaXRlcmlhIGZvciB1c2luZyB0aGUgaW52YXJpYW50cyB0byBjaGVjayBzaW11bHRhbmVvdXNseSBmb3IgY29ycmVjdG5lc3MgKGluY2x1ZGluZyB0ZXJtaW5hdGlvbikgb3IgaW5jb3JyZWN0bmVzcyBhcmUgcHJvdmlkZWQuIEltcGxpY2F0aW9ucyBvZiB0aGUgYXBwcm9hY2ggZm9yIHRoZSBhdXRvbWF0aWMgZGlhZ25vc2lzIGFuZCBjb3JyZWN0aW9uIG9mIGxvZ2ljYWwgZXJyb3JzIGFyZSBkaXNjdXNzZWQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxNTBHIChEaWFnbm9zdGljLCB0ZXN0aW5nLCBkZWJ1Z2dpbmcgYW5kIGV2YWx1YXRpbmcgc3lzdGVtcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMzsgOTIxIiwKICBjb3Jwc291cmNlID0gICAiV2Vpem1hbm4gSW5zdC4gb2YgU2NpLiwgUmVob3ZvdGgsIElzcmFlbCIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhdXRvbWF0aWMgZGlhZ25vc2lzOyBjb21wdXRlciBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IGNvcnJlY3RuZXNzOyBpbmNvcnJlY3RuZXNzOyBpbnZhcmlhbnRzOyBsb2dpY2FsIGFuYWx5c2lzOyBtYXRoZW1hdGljYWwgdGVjaG5pcXVlczsgcHJvZ3JhbSBkZWJ1Z2dpbmc7IHByb2dyYW0gdGVzdGluZzsgcHJvZ3JhbSB2ZXJpZmljYXRpb24iLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0Rlbm5pbmc6MTk3NjpMTVMsCiAgYXV0aG9yID0gICAgICAgIkRvcm90aHkgRS4gRGVubmluZyIsCiAgdGl0bGUgPSAgICAgICAgIkEgTGF0dGljZSBNb2RlbCBvZiBTZWN1cmUgSW5mb3JtYXRpb24gRmxvdyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOSIsCiAgbnVtYmVyID0gICAgICAgIjUiLAogIHBhZ2VzID0gICAgICAgICIyMzYtLTI0MyIsCiAgbW9udGggPSAgICAgICAgbWF5LAogIHllYXIgPSAgICAgICAgICIxOTc2IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjhBMjUiLAogIE1SbnVtYmVyID0gICAgICI1NSAxODIxIiwKICBtcnJldmlld2VyID0gICAiR2VvcmdlIEkuIERhdmlkYSIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIG5vdGUgPSAgICAgICAgICJQYXBlcnMgZnJvbSB0aGUgRmlmdGggQUNNIFN5bXBvc2l1bSBvbiBPcGVyYXRpbmcgU3lzdGVtcyBQcmluY2lwbGVzIChVbml2LiBUZXhhcywgQXVzdGluLCBUZXguLCAxOTc1KS4iLAogIGFic3RyYWN0ID0gICAgICJNZWNoYW5pc21zIHRoYXQgZ3VhcmFudGVlIHNlY3VyZSBpbmZvcm1hdGlvbiBmbG93IGluIGEgY29tcHV0ZXIgc3lzdGVtIGFyZSBkaXNjdXNzZWQuIFRoZXNlIG1lY2hhbmlzbXMgYXJlIGV4YW1pbmVkIHdpdGhpbiBhIG1hdGhlbWF0aWNhbCBmcmFtZXdvcmsgc3VpdGFibGUgZm9yIGZvcm11bGF0aW5nIHRoZSByZXF1aXJlbWVudHMgb2Ygc2VjdXJlIGluZm9ybWF0aW9uIGZsb3cgYW1vbmcgc2VjdXJpdHkgY2xhc3Nlcy4gVGhlIGNlbnRyYWwgY29tcG9uZW50IG9mIHRoZSBtb2RlbCBpcyBhIGxhdHRpY2Ugc3RydWN0dXJlIGRlcml2ZWQgZnJvbSB0aGUgc2VjdXJpdHkgY2xhc3NlcyBhbmQganVzdGlmaWVkIGJ5IHRoZSBzZW1hbnRpY3Mgb2YgaW5mb3JtYXRpb24gZmxvdy4gVGhlIG1vZGVsIHByb3ZpZGVzIGEgdW5pZnlpbmcgdmlldyBvZiBhbGwgc3lzdGVtcyB0aGF0IHJlc3RyaWN0IGluZm9ybWF0aW9uIGZsb3csIGVuYWJsZXMgYSBjbGFzc2lmaWNhdGlvbiBvZiB0aGVtIGFjY29yZGluZyB0byBzZWN1cml0eSBvYmplY3RpdmVzLCBhbmQgc3VnZ2VzdHMgc29tZSBuZXcgYXBwcm9hY2hlcy4gSXQgYWxzbyBsZWFkcyB0byB0aGUgY29uc3RydWN0aW9uIG9mIGF1dG9tYXRpYyBwcm9ncmFtIGNlcnRpZmljYXRpb24gbWVjaGFuaXNtcyBmb3IgdmVyaWZ5aW5nIHRoZSBzZWN1cmUgZmxvdyBvZiBpbmZvcm1hdGlvbiB0aHJvdWdoIGEgcHJvZ3JhbS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDMDIwMCAoR2VuZXJhbCBjb21wdXRlciB0b3BpY3MpOyBDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pOyBDNjE1MEogKE9wZXJhdGluZyBzeXN0ZW1zKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIyOyA3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJQdXJkdWUgVW5pdi4sIExhZmF5ZXR0ZSwgSU4sIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBvcGVyYXRpbmcgc3lzdGVtczsgZGF0YSBwcm9jZXNzaW5nOyBsYXR0aWNlOyBtYXRoZW1hdGljYWwgbW9kZWxzOyBwcm9ncmFtIGNlcnRpZmljYXRpb247IHNlY3VyZSBpbmZvcm1hdGlvbiBmbG93OyBzZWN1cml0eTsgc2VjdXJpdHkgY2xhc3Nlczsgc2VjdXJpdHkgb2YgZGF0YSIsCiAgdHJlYXRtZW50ID0gICAgIkEgQXBwbGljYXRpb247IFQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7TWlsbGVuOjE5NzY6U0tWLAogIGF1dGhvciA9ICAgICAgICJKb25hdGhhbiBLLiBNaWxsZW4iLAogIHRpdGxlID0gICAgICAgICJTZWN1cml0eSBLZXJuZWwgVmFsaWRhdGlvbiBpbiBQcmFjdGljZSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOSIsCiAgbnVtYmVyID0gICAgICAgIjUiLAogIHBhZ2VzID0gICAgICAgICIyNDMtLTI1MCIsCiAgbW9udGggPSAgICAgICAgbWF5LAogIHllYXIgPSAgICAgICAgICIxOTc2IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkEgc2VjdXJpdHkga2VybmVsIGlzIGEgc29mdHdhcmUgYW5kIGhhcmR3YXJlIG1lY2hhbmlzbSB0aGF0IGVuZm9yY2VzIGFjY2VzcyBjb250cm9scyB3aXRoaW4gYSBjb21wdXRlciBzeXN0ZW0uIFRoZSBjb3JyZWN0bmVzcyBvZiBhIHNlY3VyaXR5IGtlcm5lbCBvbiBhIFBEUC0xMVxzbGFzaCA0NSBpcyBiZWluZyBwcm92ZWQuIFRoaXMgcGFwZXIgZGVzY3JpYmVzIHRoZSB0ZWNobmlxdWUgdXNlZCB0byBjYXJyeSBvdXQgdGhlIGZpcnN0IHN0ZXAgb2YgdGhlIHByb29mOiB2YWxpZGF0aW5nIGEgZm9ybWFsIHNwZWNpZmljYXRpb24gb2YgdGhlIHByb2dyYW0gd2l0aCByZXNwZWN0IHRvIGF4aW9tcyBmb3IgYSBzZWN1cmUgc3lzdGVtLiBBcHBsaWNhdGlvbiBvZiB0aGUga2VybmVsIHdpbGwgYmUgaW4gcHJvdmlkaW5nIG5vcm1hbGx5IHJlc3BvbnNpdmUgbXVsdGlwcm9ncmFtbWVkIG9yIHRpbWUtc2hhcmVkIHNlcnZpY2UgdG8gY29tcHV0ZXIgc3lzdGVtIHVzZXJzLCB3aGlsZSByZXN0cmljdGluZyBhY2Nlc3MgdG8gZGF0YSB0byB0aG9zZSB1c2VycyB3aXRoIHBlcm1pc3Npb24gZm9yIGl0LiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbik7IEM2MTUwSiAoT3BlcmF0aW5nIHN5c3RlbXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjI7IDcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIk1JVFJFIENvcnAuLCBCZWRmb3JkLCBNQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIG9wZXJhdGluZyBzeXN0ZW1zOyBjb21wdXRlciBzeXN0ZW1zLCBkaWdpdGFsIC0tLSBUaW1lIFNoYXJpbmc7IGNvcnJlY3RuZXNzOyBkYXRhIHByb2Nlc3Npbmc7IGZvcm1hbCBzcGVjaWZpY2F0aW9uOyBvcGVyYXRpbmcgc3lzdGVtcyAoY29tcHV0ZXJzKTsgcHJvdGVjdGlvbjsgc2VjdXJpdHkga2VybmVsOyBzZWN1cml0eSBvZiBkYXRhOyB2YWxpZGF0aW9uOyB2ZXJpZmljYXRpb24iLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0xhbXBzb246MTk3NjpST1MsCiAgYXV0aG9yID0gICAgICAgIkJ1dGxlciBXLiBMYW1wc29uIGFuZCBIb3dhcmQgRS4gU3R1cmdpcyIsCiAgdGl0bGUgPSAgICAgICAgIlJlZmxlY3Rpb25zIG9uIGFuIE9wZXJhdGluZyBTeXN0ZW0gRGVzaWduIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE5IiwKICBudW1iZXIgPSAgICAgICAiNSIsCiAgcGFnZXMgPSAgICAgICAgIjI1MS0tMjY1IiwKICBtb250aCA9ICAgICAgICBtYXksCiAgeWVhciA9ICAgICAgICAgIjE5NzYiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L01pc2Mvb3MuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiVGhlIG1haW4gZmVhdHVyZXMgb2YgYSBnZW5lcmFsIHB1cnBvc2UgbXVsdGlhY2Nlc3Mgb3BlcmF0aW5nIHN5c3RlbSBkZXZlbG9wZWQgZm9yIHRoZSBDREMgNjQwMCBhdCBCZXJrZWxleSBhcmUgcHJlc2VudGVkLCBhbmQgaXRzIGdvb2QgYW5kIGJhZCBwb2ludHMgYXJlIGRpc2N1c3NlZCBhcyB0aGV5IGFwcGVhciBpbiByZXRyb3NwZWN0LiBEaXN0aW5jdGl2ZSBmZWF0dXJlcyBvZiB0aGUgZGVzaWduIHdlcmUgdGhlIHVzZSBvZiBjYXBhYmlsaXRpZXMgZm9yIHByb3RlY3Rpb24sIGFuZCB0aGUgb3JnYW5pemF0aW9uIG9mIHRoZSBzeXN0ZW0gaW50byBhIHNlcXVlbmNlIG9mIGxheWVycywgZWFjaCBidWlsZGluZyBvbiB0aGUgZmFjaWxpdGllcyBwcm92aWRlZCBieSBlYXJsaWVyIG9uZXMgYW5kIHByb3RlY3RpbmcgaXRzZWxmIGZyb20gdGhlIG1hbGZ1bmN0aW9ucyBvZiBsYXRlciBvbmVzLiBUaGVyZSB3ZXJlIHNlcmlvdXMgcHJvYmxlbXMgaW4gbWFpbnRhaW5pbmcgdGhlIHByb3RlY3Rpb24gYmV0d2VlbiBsYXllcnMgd2hlbiBsZXZlbHMgd2VyZSBhZGRlZCB0byB0aGUgbWVtb3J5IGhpZXJhcmNoeS4gVGhlc2UgcHJvYmxlbXMgYXJlIGRpc2N1c3NlZCBhbmQgYSBuZXcgc29sdXRpb24gaXMgZGVzY3JpYmVkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbik7IEM2MTUwSiAoT3BlcmF0aW5nIHN5c3RlbXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJYZXJveCBQYWxvIEFsdG8gUmVzLiBDZW50ZXIsIFBhbG8gQWx0bywgQ0EsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjYXBhYmlsaXRpZXM7IENEQyA2NDAwOyBjb21wdXRlciBvcGVyYXRpbmcgc3lzdGVtczsgZmF1bHRzOyBoaWVyYXJjaHk7IGxheWVyaW5nIGRvbWFpbnM7IG1lbW9yeTsgbWVtb3J5IGhpZXJhcmNoeTsgb3BlcmF0aW5nIHN5c3RlbTsgb3BlcmF0aW5nIHN5c3RlbXMgKGNvbXB1dGVycyk7IHByb3RlY3Rpb247IHNlY3VyaXR5IG9mIGRhdGE7IHNoYXJpbmcgcHJvZ3JhbXM7IHRpbWUtIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtIYWJlcm1hbm46MTk3NjpNSEYsCiAgYXV0aG9yID0gICAgICAgIkEuIE4uIEhhYmVybWFubiBhbmQgTGF3cmVuY2UgRmxvbiBhbmQgTGVlIENvb3ByaWRlciIsCiAgdGl0bGUgPSAgICAgICAgIk1vZHVsYXJpemF0aW9uIGFuZCBIaWVyYXJjaHkgaW4gYSBGYW1pbHkgb2YgT3BlcmF0aW5nIFN5c3RlbXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTkiLAogIG51bWJlciA9ICAgICAgICI1IiwKICBwYWdlcyA9ICAgICAgICAiMjY2LS0yNzIiLAogIG1vbnRoID0gICAgICAgIG1heSwKICB5ZWFyID0gICAgICAgICAiMTk3NiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvTWlzYy9vcy5iaWIiLAogIGFic3RyYWN0ID0gICAgICJUaGlzIHBhcGVyIGRlc2NyaWJlcyB0aGUgZGVzaWduIHBoaWxvc29waHkgdXNlZCBpbiB0aGUgY29uc3RydWN0aW9uIG9mIGEgZmFtaWx5IG9mIG9wZXJhdGluZyBzeXN0ZW1zLiBGdW5kYW1lbnRhbCB0byB0aGUgZGVzaWduIGFyZSB0aGUgY29uY2VwdHMgb2YgbGV2ZWwgYW5kIG1vZHVsZS4gRnVydGhlciwgdGhlIHN5c3RlbSBkZXNpZ24gaXMgc3RydWN0dXJlZCBoaWVyYXJjaGljYWxseSBiYXNlZCB1cG9uIGZ1bmN0aW9ucy4gRmFtaWx5IG1lbWJlcnMgY2FuIHNoYXJlIG11Y2ggb2YgdGhlIHNvZnR3YXJlIGFzIGEgcmVzdWx0IG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBydW4tdGltZSBtb2R1bGVzIGF0IHRoZSBsb3dlc3Qgc3lzdGVtIGxldmVsLiBUaGUgc3lzdGVtIGlzIGV4cGVjdGVkIHRvIHByb2R1Y2Ugc2V2ZXJhbCBmYW1pbHkgbWVtYmVycyAtLS0gaW5jbHVkaW5nIGJhdGNoIGFuZCB0aW1lc2hhcmluZyBzeXN0ZW0gLS0tIHdpdGggd2lkZWx5IGRpZmZlcmluZyBzdG9yYWdlIG1hbmFnZW1lbnQgc3RyYXRlZ2llcy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pOyBDNjE1MEogKE9wZXJhdGluZyBzeXN0ZW1zKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiQ2FybmVnaWUtTWVsbG9uIFVuaXYuLCBQaXR0c2J1cmdoLCBQQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFkZHJlc3Mgc3BhY2U7IGNvbXB1dGVyIG9wZXJhdGluZyBzeXN0ZW1zOyBkYXRhOyBpbmNyZW1lbnRhbCBtYWNoaW5lIGRlc2lnbjsgbW9kdWxlOyBvcGVyYXRpbmcgc3lzdGVtczsgb3BlcmF0aW5nIHN5c3RlbXMgKGNvbXB1dGVycyk7IHR5cGU7IHZpcnR1YWwgbWVtb3J5OyB2aXJ0dWFsIHN0b3JhZ2UiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0hvd2FyZDoxOTc2OlBNLAogIGF1dGhvciA9ICAgICAgICJKb2huIEguIEhvd2FyZCIsCiAgdGl0bGUgPSAgICAgICAgIlByb3ZpbmcgTW9uaXRvcnMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTkiLAogIG51bWJlciA9ICAgICAgICI1IiwKICBwYWdlcyA9ICAgICAgICAiMjczLS0yNzkgKG9yIDI3My0tMjc4Pz8pIiwKICBtb250aCA9ICAgICAgICBtYXksCiAgeWVhciA9ICAgICAgICAgIjE5NzYiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiTW9uaXRvcnMgYXJlIGRldmljZXMgZm9yIGRlZmluaW5nIHNoYXJlZCBhYnN0cmFjdCBvYmplY3RzIGluIGEgbXVsdGlwcm9ncmFtbWluZyBzeXN0ZW0gYW5kIGZvciBzY2hlZHVsaW5nIGFjY2VzcyB0byB0aGVtLiBJdCBpcyBzaG93biB0aGF0IHNjaGVkdWxpbmcgYW5kIHNlcXVlbnRpYWwgcHJvcGVydGllcyBvZiBtb25pdG9ycyBjYW4gYmUgcHJvdmVkIGJ5IHVzaW5nIHN0YXRlIHZhcmlhYmxlcyB3aGljaCByZWNvcmQgdGhlIG1vbml0b3JzJyBoaXN0b3J5IGFuZCBieSBkZWZpbmluZyBleHRlbmRlZCBwcm9vZiBydWxlcyBmb3IgdGhlaXIgd2FpdCBhbmQgc2lnbmFsIG9wZXJhdGlvbnMuIFRoZXNlIHR3byB0ZWNobmlxdWVzIGFyZSBkZWZpbmVkLCBkaXNjdXNzZWQsIGFuZCBhcHBsaWVkIHRvIGV4YW1wbGVzIHRvIHByb3ZlIHByb3BlcnRpZXMgc3VjaCBhcyBmcmVlZG9tIGZyb20gaW5kZWZpbml0ZWx5IHJlcGVhdGVkIG92ZXJ0YWtpbmcgb3IgdW5uZWNlc3Nhcnkgd2FpdGluZywgdXBwZXIgYm91bmRzIG9uIHF1ZXVlIGxlbmd0aHMsIGFuZCBoaXN0b3JpY2FsIGJlaGF2aW9yLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbik7IEM2MTUwSiAoT3BlcmF0aW5nIHN5c3RlbXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBvZiBUZXhhcywgQXVzdGluLCBUWCwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFsYXJtOyBib3VuZGVkIGJ1ZmZlcjsgY2xvY2tzOyBjb21wdXRlciBtZXRhdGhlb3J5OyBjb21wdXRlciBvcGVyYXRpbmcgc3lzdGVtczsgY29tcHV0ZXIgc3lzdGVtcyBwcm9ncmFtbWluZyAtLS0gTXVsdGlwcm9ncmFtbWluZzsgY29uY3VycmVuY3k7IGNvcnJlY3RuZXNzOyBkaXNjIGhlYWQ7IGhpc3RvcmljYWw7IG1vbml0b3JzOyBtdWx0aXByb2dyYW1taW5nOyBvcGVyYXRpbmcgc3lzdGVtcyAoY29tcHV0ZXJzKTsgcHJvb2YgcnVsZXM7IHNjaGVkdWxpbmc7IHNlbWFwaG9yZXM7IHZhcmlhYmxlcyIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7T3dpY2tpOjE5NzY6VlBQLAogIGF1dGhvciA9ICAgICAgICJTdXNhbiBPd2lja2kgYW5kIERhdmlkIEdyaWVzIiwKICB0aXRsZSA9ICAgICAgICAiVmVyaWZ5aW5nIFByb3BlcnRpZXMgb2YgUGFyYWxsZWwgUHJvZ3JhbXM6IEFuIEF4aW9tYXRpYyBBcHByb2FjaCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOSIsCiAgbnVtYmVyID0gICAgICAgIjUiLAogIHBhZ2VzID0gICAgICAgICIyNzktLTI4NSIsCiAgbW9udGggPSAgICAgICAgbWF5LAogIHllYXIgPSAgICAgICAgICIxOTc2IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjhBMDUgKDY4QTQwKSIsCiAgTVJudW1iZXIgPSAgICAgIjU1IDY5MjUiLAogIG1ycmV2aWV3ZXIgPSAgICJEZXJlayBDLiBPcHBlbiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvUGFyYWxsZWwvTXVsdGkuYmliIiwKICBub3RlID0gICAgICAgICAiUGFwZXJzIGZyb20gdGhlIHtGaWZ0aCB7QUNNfSBTeW1wb3NpdW0gb24gT3BlcmF0aW5nIFN5c3RlbXMgUHJpbmNpcGxlcyAoVW5pdi4gVGV4YXMsIEF1c3RpbiwgVGV4LiwgMTk3NSl9LiIsCiAgYWJzdHJhY3QgPSAgICAgIkFuIGF4aW9tYXRpYyBtZXRob2QgZm9yIHByb3ZpbmcgYSBudW1iZXIgb2YgcHJvcGVydGllcyBvZiBwYXJhbGxlbCBwcm9ncmFtcyBpcyBwcmVzZW50ZWQuIEEgZGVkdWN0aXZlIHN5c3RlbSB3aGljaCBpcyBpbiBzb21lIHNlbnNlIGNvbXBsZXRlIGZvciBwYXJ0aWFsIGNvcnJlY3RuZXNzIGlzIGRlZmluZWQuIEEgY3J1Y2lhbCBheGlvbSBwcm92aWRlcyBmb3IgdGhlIHVzZSBvZiBhdXhpbGlhcnkgdmFyaWFibGVzLCB3aGljaCBhcmUgYWRkZWQgdG8gYSBwYXJhbGxlbCBwcm9ncmFtIGFzIGFuIGFpZCB0byBwcm92aW5nIGl0IGNvcnJlY3QuIFRoZSBpbmZvcm1hdGlvbiBpbiBhIHBhcnRpYWwgY29ycmVjdG5lc3MgcHJvb2YgY2FuIGJlIHVzZWQgdG8gcHJvdmUgc3VjaCBwcm9wZXJ0aWVzIGFzIG11dHVhbCBleGNsdXNpb24sIGZyZWVkb20gZnJvbSBkZWFkbG9jaywgYW5kIHByb2dyYW0gdGVybWluYXRpb24uIFRlY2huaXF1ZXMgZm9yIHZlcmlmeWluZyB0aGVzZSBwcm9wZXJ0aWVzIGFyZSBwcmVzZW50ZWQgYW5kIGlsbHVzdHJhdGVkIGJ5IGFwcGxpY2F0aW9uIHRvIHRoZSBkaW5pbmcgcGhpbG9zb3BoZXJzIHByb2JsZW0uIFRoZSBsYW5ndWFnZSBhbmQgYXhpb21zIG9mZmVyZWQgZ2l2ZSBndWlkZXMgZm9yIHRoZSBjb25zdHJ1Y3Rpb24gb2YgY29ycmVjdCBhbmQgY29tcHJlaGVuc2libGUgcHJvZ3JhbXMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxNTBHIChEaWFnbm9zdGljLCB0ZXN0aW5nLCBkZWJ1Z2dpbmcgYW5kIGV2YWx1YXRpbmcgc3lzdGVtcyk7IEM2MTUwSiAoT3BlcmF0aW5nIHN5c3RlbXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJDb21wdXRlciBTY2kuIERlcHQuLCBDb3JuZWxsIFVuaXYuLCBJdGhhY2EsIE5ZLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYXhpb21hdGljIG1ldGhvZDsgY29tcHV0ZXIgbWV0YXRoZW9yeTsgY29tcHV0ZXIgb3BlcmF0aW5nIHN5c3RlbXM7IGNvbXB1dGVyIHN5c3RlbXMgcHJvZ3JhbW1pbmc7IGNvbmN1cnJlbnQgcHJvY2Vzc2VzOyBjb3JyZWN0bmVzcyBwcm9vZnM7IGRlYWRsb2NrOyBtdWx0aXByb2dyYW1taW5nOyBtdXR1YWwgZXhjbHVzaW9uOyBwYXJhbGxlbCBwcm9jZXNzaW5nOyBwYXJhbGxlbCBwcm9ncmFtczsgcHJvZ3JhbSB0ZXN0aW5nOyBwcm9ncmFtIHZlcmlmaWNhdGlvbjsgc3RydWN0dXJlZDsgc3luY2hyb25pc2F0aW9uIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtNYWRpc29uOjE5NzY6Q1BMLAogIGF1dGhvciA9ICAgICAgICJBLiBXYXluZSBNYWRpc29uIGFuZCBBbGFuIFAuIEJhdHNvbiIsCiAgdGl0bGUgPSAgICAgICAgIkNoYXJhY3RlcmlzdGljcyBvZiBQcm9ncmFtIExvY2FsaXRpZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTkiLAogIG51bWJlciA9ICAgICAgICI1IiwKICBwYWdlcyA9ICAgICAgICAiMjg1LS0yOTQiLAogIG1vbnRoID0gICAgICAgIG1heSwKICB5ZWFyID0gICAgICAgICAiMTk3NiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvTWlzYy9vcy5iaWIiLAogIGFic3RyYWN0ID0gICAgICJUaGUgdGVybSBgYGxvY2FsaXR5JycgaXMgdXNlZCB0byBkZW5vdGUgdGhhdCBzdWJzZXQgb2YgYSBwcm9ncmFtJ3Mgc2VnbWVudHMgd2hpY2ggYXJlIHJlZmVyZW5jZWQgZHVyaW5nIGEgcGFydGljdWxhciBwaGFzZSBvZiBpdHMgZXhlY3V0aW9uLiBJbiB0aGlzIHBhcGVyIHRoZSBjb25jZXB0IG9mIGEgbG9jYWxpdHkgaXMgbWFkZSBtb3JlIGV4cGxpY2l0IHRocm91Z2ggYSBmb3JtYWwgZGVmaW5pdGlvbiBvZiB3aGF0IGNvbnN0aXR1dGVzIGEgcGhhc2Ugb2YgbG9jYWxpemVkIHJlZmVyZW5jZSBiZWhhdmlvciwgYW5kIGJ5IGEgY29ycmVzcG9uZGluZyBtZWNoYW5pc20gZm9yIHRoZSBkZXRlY3Rpb24gb2YgbG9jYWxpdGllcyBpbiBhY3R1YWwgcmVmZXJlbmNlIHN0cmluZ3MuIFRoaXMgZGVmaW5pdGlvbiBwcm92aWRlcyBmb3IgdGhlIGV4aXN0ZW5jZSBvZiBhIGhpZXJhcmNoeSBvZiBsb2NhbGl0aWVzIGF0IGFueSBnaXZlbiB0aW1lLiBlbXBpcmljYWwgZGF0YSBmcm9tIGEgc2FtcGxlIG9mIHByb2R1Y3Rpb24gQWxnb2wgNjAgcHJvZ3JhbXMgaXMgdXNlZCB0byBkaXNwbGF5IGRpc3RyaWJ1dGlvbnMgb2YgbG9jYWxpdHkgc2l6ZXMgYW5kIGxpZmV0aW1lcy4gVGhlc2UgcmVzdWx0cyBhcmUgZGlzY3Vzc2VkIGluIHRlcm1zIG9mIHRoZWlyIGltcGxpY2F0aW9ucyBmb3IgdGhlIG1vZGVsaW5nIG9mIHByb2dyYW0gYmVoYXZpb3IgYW5kIG1lbW9yeSBtYW5hZ2VtZW50IGluIHZpcnR1YWwgbWVtb3J5IHN5c3RlbXMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKTsgQzYxNTBHIChEaWFnbm9zdGljLCB0ZXN0aW5nLCBkZWJ1Z2dpbmcgYW5kIGV2YWx1YXRpbmcgc3lzdGVtcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIkRlcHQuIG9mIEFwcGwuIE1hdGguIGFuZCBDb21wdXRlciBTY2kuLCBVbml2LiBvZiBWaXJnaW5pYSwgQ2hhcmxvdHRlc3ZpbGxlLCBWQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImJvdW5kZWQgbG9jYWxpdHkgaW50ZXJ2YWxzOyBjb21wdXRlciBvcGVyYXRpbmcgc3lzdGVtczsgY29tcHV0ZXIgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzOyBsb2NhbGl0eTsgbWVtb3J5OyBtZW1vcnkgbWFuYWdlbWVudDsgcHJvZ3JhbSBiZWhhdmlvdXI7IHN0b3JhZ2UgbWFuYWdlbWVudDsgdmlydHVhbDsgdmlydHVhbCBzdG9yYWdlIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtQcmlldmU6MTk3NjpWT1YsCiAgYXV0aG9yID0gICAgICAgIkJhcnRvbiBHLiBQcmlldmUgYW5kIFIuIFMuIEZhYnJ5IiwKICB0aXRsZSA9ICAgICAgICAie1ZNSU59IC0tLSBhbiBPcHRpbWFsIFZhcmlhYmxlLVNwYWNlIFBhZ2UgUmVwbGFjZW1lbnQgQWxnb3JpdGhtIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE5IiwKICBudW1iZXIgPSAgICAgICAiNSIsCiAgcGFnZXMgPSAgICAgICAgIjI5NS0tMjk3IiwKICBtb250aCA9ICAgICAgICBtYXksCiAgeWVhciA9ICAgICAgICAgIjE5NzYiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiQSBjcml0ZXJpb24gZm9yIGNvbXBhcmluZyB2YXJpYWJsZSBzcGFjZSBwYWdlIHJlcGxhY2VtZW50IGFsZ29yaXRobXMgaXMgcHJlc2VudGVkLiBBbiBvcHRpbXVtIHBhZ2UgcmVwbGFjZW1lbnQgYWxnb3JpdGhtLCBjYWxsZWQgVk1JTiwgaXMgZGVzY3JpYmVkIGFuZCBzaG93biB0byBiZSBvcHRpbXVtIHdpdGggcmVzcGVjdCB0byB0aGlzIGNyaXRlcmlvbi4gVGhlIHJlc3VsdHMgb2Ygc2ltdWxhdGluZyBWTUlOLCBEZW5uaW5nJ3Mgd29ya2luZyBzZXQsIGFuZCB0aGUgcGFnZSBwYXJ0aXRpb25pbmcgcmVwbGFjZW1lbnQgYWxnb3JpdGhtcyBvbiBmaXZlIHZpcnR1YWwgbWVtb3J5IHByb2dyYW1zIGFyZSBwcmVzZW50ZWQgdG8gZGVtb25zdHJhdGUgdGhlIGltcHJvdmVtZW50IHBvc3NpYmxlIG92ZXIgdGhlIGtub3duIHJlYWxpemFibGUgdmFyaWFibGUgc3BhY2UgYWxnb3JpdGhtcy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJCZWxsIExhYnMuLCBOYXBlcnZpbGxlLCBJTCwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIG9wZXJhdGluZyBzeXN0ZW1zOyBjb21wdXRlciBzeXN0ZW1zIHByb2dyYW1taW5nIC0tLSBTdXBlcnZpc29yeSBhbmQgRXhlY3V0aXZlIFByb2dyYW1zOyBkZW1hbmQgcGFnaW5nOyBtdWx0aWxldmVsIG1lbW9yeTsgb3B0aW1hbCBwYWdlIHJlcGxhY2VtZW50OyBwYWdlIHJlcGxhY2VtZW50IGFsZ29yaXRobXM7IHBlcmZvcm1hbmNlIG1lYXN1cmVtZW50OyBzeXN0ZW1zOyB2aXJ0dWFsIG1lbW9yeSBwcm9ncmFtczsgdmlydHVhbCBzdG9yYWdlOyBWTUlOOyB3b3JraW5nIHNldCIsCn0KCkBBcnRpY2xle0NodToxOTc2OkFQUiwKICBhdXRob3IgPSAgICAgICAiV2VzbGV5IFcuIENodSBhbmQgSG9sZ2VyIE9wZGVyYmVjayIsCiAgdGl0bGUgPSAgICAgICAgIkFuYWx5c2lzIG9mIHRoZSB7UEZGfSBSZXBsYWNlbWVudCBBbGdvcml0aG0gdmlhIGEge1NlbWktTWFya292fSBNb2RlbCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOSIsCiAgbnVtYmVyID0gICAgICAgIjUiLAogIHBhZ2VzID0gICAgICAgICIyOTgtLTMwNCIsCiAgbW9udGggPSAgICAgICAgbWF5LAogIHllYXIgPSAgICAgICAgICIxOTc2IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjhBNTAiLAogIE1SbnVtYmVyID0gICAgICI1NCA5MTk0IiwKICBtcnJldmlld2VyID0gICAiVS4gTS4gVm9uIE1heWRlbGwiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBub3RlID0gICAgICAgICAiUGFwZXJzIGZyb20gdGhlIEZpZnRoIEFDTSBTeW1wb3NpdW0gb24gT3BlcmF0aW5nIFN5c3RlbXMgUHJpbmNpcGxlcyAoVW5pdi4gVGV4YXMsIEF1c3RpbiwgVGV4LiwgMTk3NSkuIFNlZSBjb3JyaWdlbmR1bSBcY2l0ZXtDaHU6MTk3NjpDQVB9LiIsCiAgYWJzdHJhY3QgPSAgICAgIkFuIGFuYWx5dGljYWwgbW9kZWwgaXMgcHJlc2VudGVkIHRvIGVzdGltYXRlIHRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgUGFnZSBGYXVsdCBGcmVxdWVuY3kgKFBGRikgcmVwbGFjZW1lbnQgYWxnb3JpdGhtLiBJbiB0aGlzIG1vZGVsLCBwcm9ncmFtIGJlaGF2aW9yIGlzIHJlcHJlc2VudGVkIGJ5IHRoZSBMUlUgc3RhY2sgZGlzdGFuY2UgbW9kZWwgYW5kIHRoZSBQRkYgcmVwbGFjZW1lbnQgYWxnb3JpdGhtIGlzIHJlcHJlc2VudGVkIGJ5IGEgc2VtaS1NYXJrb3YgbW9kZWwuIFVzaW5nIHRoZXNlIG1vZGVscywgc3VjaCBwYXJhbWV0ZXJzIGFzIHRoZSBpbnRlci1wYWdlLWZhdWx0IGludGVydmFsIGRpc3RyaWJ1dGlvbiwgdGhlIHByb2JhYmlsaXR5IG9mIHRoZSBudW1iZXIgb2YgZGlzdGluY3QgcGFnZXMgYmVpbmcgcmVmZXJlbmNlZCBkdXJpbmcgYW4gaW50ZXItcGFnZS1mYXVsdCBpbnRlcnZhbCwgZXRjLiwgbWF5IGJlIGFuYWx5dGljYWxseSBkZXRlcm1pbmVkLiBVc2luZyB0aGVzZSBtb2RlbHMgdG8gZXZhbHVhdGUgdGhlc2UgcGFyYW1ldGVyIHZhbHVlcyBwZXJtaXRzIHN0dWR5IG9mIHRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgcmVwbGFjZW1lbnQgYWxnb3JpdGhtIGJ5IHNpbXVsYXRpbmcgdGhlIHBhZ2UgZmF1bHQgZXZlbnRzIHJhdGhlciB0aGFuIGV2ZXJ5IHBhZ2UgcmVmZXJlbmNlIGV2ZW50LiBUaGlzIHNpZ25pZmljYW50bHkgcmVkdWNlcyB0aGUgcmVxdWlyZWQgY29tcHV0YXRpb24gdGltZSBpbiBlc3RpbWF0aW5nIHRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgUEZGIGFsZ29yaXRobS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBvZiBDYWxpZm9ybmlhLCBMb3MgQW5nZWxlcywgQ0EsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJiZWhhdmlvdXI7IGNvbXB1dGVyIG9wZXJhdGluZyBzeXN0ZW1zOyBjb21wdXRlciBzeXN0ZW1zIHByb2dyYW1taW5nIC0tLSBTdXBlcnZpc29yeSBhbmQgRXhlY3V0aXZlIFByb2dyYW1zOyBtYXRoZW1hdGljYWwgbW9kZWxzOyBvZiByZXBsYWNlbWVudCBhbGdvcml0aG07IHBhZ2UgZmF1bHQgZXZlbnRzOyBQYWdlIEZhdWx0IEZyZXF1ZW5jeTsgUEZGIHJlcGxhY2VtZW50IGFsZ29yaXRobTsgcHJvZ3JhbTsgc2VtaSBNYXJrb3YgbW9kZWw7IHNpbXVsYXRpb247IHZpcnR1YWwgc3RvcmFnZSIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7VGF1bGJlZToxOTc2OlBFUCwKICBhdXRob3IgPSAgICAgICAiTy4gRS4gVGF1bGJlZSBhbmQgUy4gRC4gQ29udGUiLAogIHRpdGxlID0gICAgICAgICJQcm9kdWN0aW9uIGFuZCBlbXBsb3ltZW50IG9mIHtQaC5ELn0ncyBpbiBjb21wdXRlciBzY2llbmNlIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE5IiwKICBudW1iZXIgPSAgICAgICAiNiIsCiAgcGFnZXMgPSAgICAgICAgIjMxMS0tMzEzIiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzYiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzAyMDAgKEdlbmVyYWwgY29tcHV0ZXIgdG9waWNzKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIG9mIFBpdHRzYnVyZ2gsIFBpdHRzYnVyZ2gsIFBBLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBzY2llbmNlOyBlbXBsb3ltZW50OyBmYWN1bHR5OyBwcm9kdWN0aW9uOyBzYWxhcmllcyIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7U2V2ZXJhbmNlOjE5NzY6UEdBLAogIGF1dGhvciA9ICAgICAgICJEZW5uaXMgRy4gU2V2ZXJhbmNlIGFuZCBSaWNhcmRvIEEuIER1aG5lIiwKICB0aXRsZSA9ICAgICAgICAiQSBQcmFjdGl0aW9uZXIncyBHdWlkZSB0byBBZGRyZXNzaW5nIEFsZ29yaXRobXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTkiLAogIG51bWJlciA9ICAgICAgICI2IiwKICBwYWdlcyA9ICAgICAgICAiMzE0LS0zMjYiLAogIG1vbnRoID0gICAgICAgIGp1biwKICB5ZWFyID0gICAgICAgICAiMTk3NiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGF0YWJhc2UvV2llZGVyaG9sZC5iaWIgYW5kIGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvT2JqZWN0L05pZXJzdHJhc3ouYmliIiwKICBhYnN0cmFjdCA9ICAgICAiVGhpcyBwYXBlciBjb25zb2xpZGF0ZXMgYSBudW1iZXIgb2YgcG9wdWxhciBydWxlcyBvZiB0aHVtYiB3aGljaCBoYXZlIGJlZW4gc3VnZ2VzdGVkIGZvciB0aGUgZGVzaWduIG9mIHJlY29yZCBhZGRyZXNzaW5nIGFsZ29yaXRobXMsIGFuZCBkaXNjdXNzZXMgdGhlIGFwcGxpY2FiaWxpdHkgb2YgdGhlc2UgcnVsZXMgdG8gbGFyZ2UgY29tbWVyY2lhbCBkYXRhYmFzZXMuIEd1aWRlbGluZXMgZm9yIHNlbGVjdGluZyBpZGVudGlmaWVyIHRyYW5zZm9ybWF0aW9ucywgb3ZlcmZsb3cgdGVjaG5pcXVlcywgbG9hZGluZyBmYWN0b3JzLCBidWNrZXQgc2l6ZXMsIGFuZCBsb2FkaW5nIG9yZGVyIGFyZSBjb25zaWRlcmVkLiBQYXJ0aWN1bGFyIGF0dGVudGlvbiBpcyBmb2N1c2VkIG9uIHRoZSByZWFzb25hYmxlbmVzcyBvZiBjb21tb24gaGV1cmlzdGljcyBmb3IgZGV0ZXJtaW5pbmcgcHJpbWFyeSBvciBzZWNvbmRhcnkgYnVja2V0IHNpemVzLiBBIG1hdGhlbWF0aWNhbCBtb2RlbCB3aGljaCBleHBsaWNpdGx5IGNvbnNpZGVycyBzdG9yYWdlIGRldmljZSBjaGFyYWN0ZXJpc3RpY3MgYW5kIHRpbWVcc2xhc2ggc3BhY2UgY29zdCB0cmFkZW9mZnMgaXMgdXNlZCB0byBhbmFseXplIHRoZSBlZmZlY3Qgb2YgZGVzaWduIHBhcmFtZXRlcnMgb24gb3ZlcmFsbCBzeXN0ZW0gY29zdHMuIEEgc3BlY2lmaWMgZGVzaWduIGV4YW1wbGUgaXMgcHJlc2VudGVkIGFuZCBzb2x2ZWQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBhbm5vdGUgPSAgICAgICAiVGhpcyBwYXBlciBjb25zb2xpZGF0ZXMgYSBudW1iZXIgb2YgcG9wdWxhciBydWxlcyBvZiB0aHVtYiB3aGljaCBoYXZlIGJlZW4gc3VnZ2VzdGVkIGZvciB0aGUgZGVzaWduIG9mIHJlY29yZCBhZGRyZXNzaW5nIGFsZ29yaXRobXMsIGFuZCBkaXNjdXNzZXMgdGhlIGFwcGxpY2FiaWxpdHkgb2YgdGhlc2UgcnVsZXMgdG8gbGFyZ2UgY29tbWVyY2lhbCBkYXRhYmFzZXMuIiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKTsgQzcxMDAgKEJ1c2luZXNzIGFuZCBhZG1pbmlzdHJhdGlvbikiLAogIGNsYXNzaWZpY2F0aW9uID0gIjgyMzsgOTAxIiwKICBjb3Jwc291cmNlID0gICAiQ29ybmVsbCBVbml2LiwgSXRoYWNhLCBOWSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImJ1Y2tldDsgY29tcHV0ZXIgc3lzdGVtcyBwcm9ncmFtbWluZyAtLS0gVXRpbGl0eSBQcm9ncmFtczsgZGF0YSBtYW5hZ2VtZW50OyBkYXRhIHByb2Nlc3Npbmc7IGRhdGFiYXNlIG1hbmFnZW1lbnQgc3lzdGVtczsgZmlsZSBvcmdhbmlzYXRpb247IGZpbGUgcmV0cmlldmFsOyBmdW5jdGlvbnM7IGhhc2hpbmc7IGluZm9ybWF0aW9uOyBpbmZvcm1hdGlvbiByZXRyaWV2YWwgc3lzdGVtcyAtLS0gRXZhbHVhdGlvbjsgbG9hZGluZyBmYWN0b3JzOyByZWNvcmQgYWRkcmVzc2luZzsgcmV0cmlldmFsOyBydWxlcyBvZiB0aHVtYjsgc2VhcmNoaW5nOyBzaXplczsgc3lub255bSByZXNvbHV0aW9uIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgRSBFY29ub21pYzsgUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtCYXNrZXR0OjE5NzY6SU1DLAogIGF1dGhvciA9ICAgICAgICJGb3Jlc3QgQmFza2V0dCBhbmQgQWxhbiBKYXkgU21pdGgiLAogIHRpdGxlID0gICAgICAgICJJbnRlcmZlcmVuY2UgaW4gTXVsdGlwcm9jZXNzb3IgQ29tcHV0ZXIgU3lzdGVtcyB3aXRoIEludGVybGVhdmVkIE1lbW9yeSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOSIsCiAgbnVtYmVyID0gICAgICAgIjYiLAogIHBhZ2VzID0gICAgICAgICIzMjctLTMzNCIsCiAgbW9udGggPSAgICAgICAganVuLAogIHllYXIgPSAgICAgICAgICIxOTc2IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9QYXJhbGxlbC9NdWx0aS5iaWIiLAogIGFic3RyYWN0ID0gICAgICJUaGUgbWVtb3J5IGludGVyZmVyZW5jZSBjYXVzZWQgYnkgc2V2ZXJhbCBwcm9jZXNzb3JzIHNpbXVsdGFuZW91c2x5IHVzaW5nIHNldmVyYWwgbWVtb3J5IG1vZHVsZXMgaXMgYW5hbHl6ZWQuIEV4YWN0IHJlc3VsdHMgYXJlIGNvbXB1dGVkIGZvciBhIHNpbXBsZSBtb2RlbCBvZiBzdWNoIGEgc3lzdGVtLiBUaGUgbGltaXRpbmcgdmFsdWUgaXMgZGVyaXZlZCBmb3IgdGhlIHJlbGF0aXZlIGRlZ3JlZSBvZiBtZW1vcnkgaW50ZXJmZXJlbmNlIGFzIHRoZSBzeXN0ZW0gc2l6ZSBpbmNyZWFzZXMuIFRoZSBhc3N1bXB0aW9ucyBhbmQgcmVzdWx0cyBvZiB0aGUgc2ltcGxlIG1vZGVsIGFyZSB0ZXN0ZWQgYWdhaW5zdCBzb21lIG1lYXN1cmVtZW50cyBvZiBwcm9ncmFtIGJlaGF2aW9yIGFuZCBzaW11bGF0aW9ucyBvZiBzeXN0ZW1zIHVzaW5nIG1lbW9yeSByZWZlcmVuY2VzIGZyb20gcmVhbCBwcm9ncmFtcy4gVGhlIG1vZGVsIHJlc3VsdHMgcHJvdmlkZSBhIGdvb2QgaW5kaWNhdGlvbiBvZiB0aGUgcGVyZm9ybWFuY2UgdGhhdCBzaG91bGQgYmUgZXhwZWN0ZWQgZnJvbSByZWFsIHN5c3RlbXMgb2YgdGhpcyB0eXBlLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MjkwIChPdGhlciBjb21wdXRlciB0aGVvcnkpOyBDNTQwMCAoQW5hbG9ndWUgYW5kIGRpZ2l0YWwgY29tcHV0ZXJzIGFuZCBzeXN0ZW1zKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIyIiwKICBjb3Jwc291cmNlID0gICAiU3RhbmZvcmQgVW5pdi4sIFN0YW5mb3JkLCBDQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIHN5c3RlbXM7IGNvbXB1dGVyIHN5c3RlbXMsIGRpZ2l0YWw7IGludGVyZmVyZW5jZTsgaW50ZXJsZWF2ZWQgbWVtb3J5OyBtZW1vcnk7IG11bHRpcHJvY2Vzc2luZzsgbXVsdGlwcm9jZXNzaW5nIHN5c3RlbXM7IG11bHRpcHJvY2Vzc29yOyB0cmFjZSBkcml2ZW4gc2ltdWxhdGlvbiIsCiAgdHJlYXRtZW50ID0gICAgIkEgQXBwbGljYXRpb247IFQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7RnJpZWRlcjoxOTc2OlBEQSwKICBhdXRob3IgPSAgICAgICAiR2lkZW9uIEZyaWVkZXIgYW5kIEhhcnJ5IEouIFNhYWwiLAogIHRpdGxlID0gICAgICAgICJQcm9jZXNzIGZvciB0aGUgRGV0ZXJtaW5hdGlvbiBvZiBBZGRyZXNzZXMgaW4gVmFyaWFibGUgTGVuZ3RoIEFkZHJlc3NpbmciLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTkiLAogIG51bWJlciA9ICAgICAgICI2IiwKICBwYWdlcyA9ICAgICAgICAiMzM1LS0zMzgiLAogIG1vbnRoID0gICAgICAgIGp1biwKICB5ZWFyID0gICAgICAgICAiMTk3NiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJBbiBhbGdvcml0aG0gaXMgcHJlc2VudGVkIGZvciB0aGUgYXNzaWdubWVudCBvZiBpbnN0cnVjdGlvbiBhZGRyZXNzZXMgYW5kIGZvcm1hdHMgdW5kZXIgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiB0aGUgbGVuZ3RoIG9mIHRoZSBpbnN0cnVjdGlvbiB2YXJpZXMgYXMgYSBmdW5jdGlvbiBvZiB0aGUgZGlzdGFuY2Ugb2YgdGhlIGluc3RydWN0aW9uIGZyb20gaXRzIHRhcmdldDsgdGhlcmUgZXhpc3RzIGFuIG9wdGltYWxpdHkgY3JpdGVyaW9uIHdoaWNoIGltcGxpZXMgc29tZSBwcmVmZXJlbnRpYWwgY2hvaWNlcyBzdWJqZWN0IHRvIHRoZSBhZGRyZXNzaW5nIGNvbnN0cmFpbnRzLiBUaGlzIG1heSBiZSwgZm9yIGV4YW1wbGUsIGFjaGlldmluZyB0aGUgc21hbGxlc3QgbnVtYmVyIG9mIGxvbmcgaW5zdHJ1Y3Rpb25zLCBpbiB3aGljaCBjYXNlIHRoZSB0b3RhbCBjb2RlIGxlbmd0aCBpcyBtaW5pbWl6ZWQsIG9yIG1pbmltaXppbmcgdGhlIGFzc2lnbmVkIGFkZHJlc3Mgb2YgYSBzcGVjaWZpZWQgcG9pbnQgaW4gdGhlIHByb2dyYW0uIFRoZSBhbGdvcml0aG0gaXMgc3VpdGFibGUgZm9yIGFyYml0cmFyeSBwcm9ncmFtIHN0cnVjdHVyZSBhbmQgYSBjaG9pY2Ugb2Ygb3B0aW1pemF0aW9uIGNyaXRlcmlhLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTEwIChTeXN0ZW1zIGFuYWx5c2lzIGFuZCBwcm9ncmFtbWluZyk7IEM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbikiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIklCTSBJc3JhZWwgU2NpLiBDZW50ZXIsIEhhaWZhLCBJc3JhZWwiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYXNzZW1ibGVyOyBjb21wdXRlciBvcGVyYXRpbmcgc3lzdGVtczsgZm9ybWF0czsgaW5zdHJ1Y3Rpb24gYWRkcmVzc2VzOyBwYWdpbmc7IHByb2dyYW1taW5nOyB2YXJpYWJsZSBsZW5ndGggYWRkcmVzc2luZzsgdmlydHVhbCBzdG9yYWdlIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtXaXNlOjE5NzY6UkxFLAogIGF1dGhvciA9ICAgICAgICJEYXZpZCBTLiBXaXNlIiwKICB0aXRsZSA9ICAgICAgICAiUmVmZXJlbmNpbmcgTGlzdHMgYnkgYW4gRWRnZSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOSIsCiAgbnVtYmVyID0gICAgICAgIjYiLAogIHBhZ2VzID0gICAgICAgICIzMzgtLTM0MiIsCiAgbW9udGggPSAgICAgICAganVuLAogIHllYXIgPSAgICAgICAgICIxOTc2IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkFuIGVkZ2UgcmVmZXJlbmNlIGludG8gYSBsaXN0IHN0cnVjdHVyZSBpcyBhIHBhaXIgb2YgcG9pbnRlcnMgdG8gYWRqYWNlbnQgbm9kZXMuIFN1Y2ggYSByZWZlcmVuY2Ugb2Z0ZW4gcmVxdWlyZXMgbGl0dGxlIGFkZGl0aW9uYWwgc3BhY2UsIGJ1dCBpdHMgdXNlIGNhbiB5aWVsZCBlZmZpY2llbnQgYWxnb3JpdGhtcy4gRm9yIGluc3RhbmNlLCBhIGNpcmN1bGFyIGxpbmsgYmV0d2VlbiB0aGUgZW5kcyBvZiBhIGxpc3QgaXMgcmVkdW5kYW50IGlmIHRoZSBsaXN0IGlzIGFsd2F5cyByZWZlcmVuY2VkIGJ5IHRoYXQgZWRnZSwgYW5kIGxpc3QgdHJhdmVyc2FsIGlzIGVhc2llciB3aGVuIHRoYXQgbGluayBpcyBudWxsLiBFZGdlIHJlZmVyZW5jZXMgYWxzbyBhbGxvdyB0aHJlYWRpbmcgb2Ygbm9ucmVjdXJzaXZlIGxpc3RzLCBjYW4gcmVwbGFjZSBzb21lIGhlYWRlciBjZWxscywgYW5kIGVuaGFuY2UgdGhlIGZhbW91cyBleGNsdXNpdmUtb3IgdHJpY2sgdG8gZG91YmxlLWxpbmsgbGlzdHMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMTAgKFN5c3RlbXMgYW5hbHlzaXMgYW5kIHByb2dyYW1taW5nKTsgQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKTsgQzYxMzAgKERhdGEgaGFuZGxpbmcgdGVjaG5pcXVlcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIkluZGlhbmEgVW5pdi4sIEJsb29taW5ndG9uLCBJTiwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNpcmN1bGFyIGxpbms7IGNvbXB1dGVyIHByb2dyYW1taW5nIC0tLSBTdWJyb3V0aW5lczsgY29tcHV0ZXIgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzOyBjdXJzb3I7IGRhdGEgc3RydWN0dXJlczsgZG91Ymx5IGxpbmtlZDsgZWRnZSByZWZlcmVuY2U7IGhlYWRlciBjZWxsczsgbGlzdDsgbGlzdCBwcm9jZXNzaW5nOyBsaXN0IHN0cnVjdHVyZTsgb3ZlcmxhcHBpbmcgc3VibGlzdDsgcG9pbnRlcjsgdHJhdmVyc2FsIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtTY2h1bWFjaGVyOjE5NzY6U0FELAogIGF1dGhvciA9ICAgICAgICJIZWxtdXQgU2NodW1hY2hlciBhbmQgS2VubmV0aCBDLiBTZXZjaWsiLAogIHRpdGxlID0gICAgICAgICJUaGUgc3ludGhldGljIGFwcHJvYWNoIHRvIGRlY2lzaW9uIHRhYmxlIGNvbnZlcnNpb24iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTkiLAogIG51bWJlciA9ICAgICAgICI2IiwKICBwYWdlcyA9ICAgICAgICAiMzQzLS0zNTEiLAogIG1vbnRoID0gICAgICAgIGp1biwKICB5ZWFyID0gICAgICAgICAiMTk3NiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJQcmV2aW91cyBhcHByb2FjaGVzIHRvIHRoZSBwcm9ibGVtIG9mIGF1dG9tYXRpY2FsbHkgY29udmVydGluZyBkZWNpc2lvbiB0YWJsZXMgdG8gY29tcHV0ZXIgcHJvZ3JhbXMgaGF2ZSBiZWVuIGJhc2VkIG9uIGRlY29tcG9zaXRpb24uIEFuIG9wdGltYWwgcHJvZ3JhbSBpcyBsb2NhdGVkIG9ubHkgdGhyb3VnaCBpbXBsaWNpdCBlbnVtZXJhdGlvbiBvZiBhbGwgcG9zc2libGUgZGVjaXNpb24gdHJlZXMgdXNpbmcgYSB0ZWNobmlxdWUgc3VjaCBhcyBicmFuY2gtYW5kLWJvdW5kLiBUaGUgbmV3IGFwcHJvYWNoIGRlc2NyaWJlZCBpbiB0aGlzIHBhcGVyIHVzZXMgZHluYW1pYyBwcm9ncmFtbWluZyB0byBzeW50aGVzaXplIGFuIG9wdGltYWwgZGVjaXNpb24gdHJlZSBmcm9tIHdoaWNoIGEgcHJvZ3JhbSBjYW4gYmUgY3JlYXRlZC4gVXNpbmcgdGhpcyBhcHByb2FjaCwgdGhlIGVmZmljaWVuY3kgb2YgY3JlYXRpbmcgYW4gb3B0aW1hbCBwcm9ncmFtIGlzIGluY3JlYXNlZCBzdWJzdGFudGlhbGx5LCBwZXJtaXR0aW5nIGdlbmVyYXRpb24gb2Ygb3B0aW1hbCBwcm9ncmFtcyBmb3IgZGVjaXNpb24gdGFibGVzIHdpdGggYXMgbWFueSBhcyB0ZW4gdG8gdHdlbHZlIGNvbmRpdGlvbnMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQyNDAgKFByb2dyYW1taW5nIGFuZCBhbGdvcml0aG0gdGhlb3J5KTsgQzYxMTAgKFN5c3RlbXMgYW5hbHlzaXMgYW5kIHByb2dyYW1taW5nKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzOyA5MjEiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBvZiBUb3JvbnRvLCBUb3JvbnRvLCBPbnQuLCBDYW5hZGEiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgc3lzdGVtcyBwcm9ncmFtbWluZzsgZGVjaXNpb24gdGFibGUgY29udmVyc2lvbjsgZGVjaXNpb24gdGFibGVzOyBkZWNpc2lvbiB0cmVlczsgZHluYW1pYyBwcm9ncmFtbWluZzsgbWF0aGVtYXRpY2FsIHRlY2huaXF1ZXMgLS0tIENvbWJpbmF0b3JpYWwgTWF0aGVtYXRpY3M7IG9wdGltYWwgcHJvZ3JhbTsgcHJvZ3JhbW1pbmcgdGhlb3J5IiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtDbGFyazoxOTc2OkVMTSwKICBhdXRob3IgPSAgICAgICAiRG91Z2xhcyBXLiBDbGFyayIsCiAgdGl0bGUgPSAgICAgICAgIkFuIEVmZmljaWVudCBMaXN0IE1vdmluZyBBbGdvcml0aG0gVXNpbmcgY29uc3RhbnQgV29ya3NwYWNlIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE5IiwKICBudW1iZXIgPSAgICAgICAiNiIsCiAgcGFnZXMgPSAgICAgICAgIjM1Mi0tMzU0IChvciAzNTMtLTM1ND8/KSIsCiAgbW9udGggPSAgICAgICAganVuLAogIHllYXIgPSAgICAgICAgICIxOTc2IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9Db21waWxlci9nYXJiYWdlLmNvbGxlY3Rpb24uYmliIiwKICBhYnN0cmFjdCA9ICAgICAiQW4gZWZmaWNpZW50IGFsZ29yaXRobSBpcyBwcmVzZW50ZWQgZm9yIG1vdmluZyBhcmJpdHJhcnkgbGlzdCBzdHJ1Y3R1cmVzLCB1c2luZyBubyBzdG9yYWdlIChhcGFydCBmcm9tIHByb2dyYW0gdmFyaWFibGVzKSBvdGhlciB0aGFuIHRoYXQgcmVxdWlyZWQgdG8gaG9sZCB0aGUgb3JpZ2luYWwgbGlzdCBhbmQgdGhlIGNvcHkuIFRoZSBvcmlnaW5hbCBsaXN0IGlzIGRlc3Ryb3llZCBhcyBpdCBpcyBtb3ZlZC4gTm8gbWFyayBiaXRzIGFyZSBuZWNlc3NhcnksIGJ1dCBwb2ludGVycyB0byB0aGUgY29weSBtdXN0IGJlIGRpc3Rpbmd1aXNoYWJsZSBmcm9tIHBvaW50ZXJzIHRvIHRoZSBvcmlnaW5hbC4gVGhlIGFsZ29yaXRobSBpcyBzdXBlcmlvciBpbiBleGVjdXRpb24gc3BlZWQgdG8gcHJldmlvdXMgYWxnb3JpdGhtcyBmb3IgdGhlIHNhbWUgcHJvYmxlbS4gU29tZSB2YXJpYXRpb25zIGFuZCBleHRlbnNpb25zIG9mIHRoZSBhbGdvcml0aG0gYXJlIGRpc2N1c3NlZC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pOyBDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiQ2FybmVnaWUtTWVsbG9uIFVuaXYuLCBQaXR0c2J1cmdoLCBQQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXBsZXhpdHk7IGNvbXB1dGVyIHByb2dyYW1taW5nIC0tLSBTdWJyb3V0aW5lczsgY29tcHV0ZXIgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzOyBjb25zdGFudCB3b3Jrc3BhY2U7IGRhdGEgcHJvY2Vzc2luZyAtLS0gRGF0YSBTdHJ1Y3R1cmVzOyBMSVNQOyBsaXN0IGNvcHlpbmc7IGxpc3QgbW92aW5nOyBsaXN0IHByb2Nlc3Npbmc7IHNwYWNlOyBzdG9yYWdlIG1hbmFnZW1lbnQiLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle1N0ZWVsZToxOTc2OkNNQywKICBhdXRob3IgPSAgICAgICAiR3V5IEwuIHtTdGVlbGUsIEpyLn0iLAogIHRpdGxlID0gICAgICAgICJDb3JyaWdlbmR1bToge2BgTXVsdGlwcm9jZXNzaW5nIENvbXBhY3RpZnlpbmcgR2FyYmFnZSBDb2xsZWN0aW9uJyd9IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE5IiwKICBudW1iZXIgPSAgICAgICAiNiIsCiAgcGFnZXMgPSAgICAgICAgIjM1NC0tMzU0IiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzYiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJTYXQgSmFuIDE4IDE1OjI5OjAzIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L1RoZW9yeS9TZWlmZXJhcy8xOTc2LmJpYiIsCiAgbm90ZSA9ICAgICAgICAgIlNlZSBcY2l0ZXtTdGVlbGU6MTk3NTpNQ0d9LiIsCn0KCkBBcnRpY2xle0tub3R0OjE5NzY6TlNQLAogIGF1dGhvciA9ICAgICAgICJHYXJ5IEQuIEtub3R0IiwKICB0aXRsZSA9ICAgICAgICAiQSBOdW1iZXJpbmcgU3lzdGVtIGZvciBQZXJtdXRhdGlvbnMgb2YgQ29tYmluYXRpb25zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE5IiwKICBudW1iZXIgPSAgICAgICAiNiIsCiAgcGFnZXMgPSAgICAgICAgIjM1NS0tMzU2IiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzYiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9UaGVvcnkvU2VpZmVyYXMvMTk3Ni5iaWIiLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJCMDI1MCAoQ29tYmluYXRvcmlhbCBtYXRoZW1hdGljcyk7IEMxMTYwIChDb21iaW5hdG9yaWFsIG1hdGhlbWF0aWNzKTsgQzczMTAgKE1hdGhlbWF0aWNzIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJOYXQuIEluc3QuIG9mIEhlYWx0aCwgQmV0aGVzZGEsIE1ELCBVU0EiLAogIGtleXdvcmRzID0gICAgICJBbGdvbCBwcm9jZWR1cmVzOyBjb2Rpbmcgc3lzdGVtczsgY29tYmluYXRvcmlhbCBtYXRoZW1hdGljczsgY29tYmluYXRvcmljczsgaW52ZXJzZTsgcGVybXV0ZWQgY29tYmluYXRpb24gbnVtYmVyaW5nIHN5c3RlbTsgc3RvcmFnZSBtYXBwaW5nIGZ1bmN0aW9ucyIsCiAgdHJlYXRtZW50ID0gICAgIkEgQXBwbGljYXRpb247IFQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7Q29udGU6MTk3NjpUQ0MsCiAgYXV0aG9yID0gICAgICAgIlMuIEQuIENvbnRlIGFuZCBNLiBILiBIYWxzdGVhZCIsCiAgdGl0bGUgPSAgICAgICAgIlRlY2hub2xvZ3kgb2YgQ29tcHV0ZXIgQ2VudGVyIE1hbmFnZW1lbnQ6IGEgUHJvcG9zZWQgQ291cnNlIGZvciBHcmFkdWF0ZSBQcm9mZXNzaW9uYWwgUHJvZ3JhbXMgaW4gQ29tcHV0ZXIgU2NpZW5jZSBvciBpbiBJbmZvcm1hdGlvbiBTeXN0ZW1zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE5IiwKICBudW1iZXIgPSAgICAgICAiNyIsCiAgcGFnZXMgPSAgICAgICAgIjM2OS0tMzcwIiwKICBtb250aCA9ICAgICAgICBqdWwsCiAgeWVhciA9ICAgICAgICAgIjE5NzYiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiVGhpcyBwYXBlciBpcyBhIHJlcG9ydCBvbiBhIGNvdXJzZSBlbnRpdGxlZCwgYGBUaGUgVGVjaG5vbG9neSBvZiBDb21wdXRlciBDZW50ZXIgTWFuYWdlbWVudCwnJyB3aGljaCBoYXMgYmVlbiBvZmZlcmVkIGF0IFB1cmR1ZSBmb3IgdGhlIHBhc3QgZm91ciB5ZWFycy4gVGhlIGNvdXJzZSBpcyBzdWl0YWJsZSBlaXRoZXIgZm9yIGdyYWR1YXRlIHByb2Zlc3Npb25hbCBwcm9ncmFtcyBpbiBpbmZvcm1hdGlvbiBzeXN0ZW1zIG9yIGZvciBncmFkdWF0ZSBwcm9mZXNzaW9uYWwgcHJvZ3JhbXMgaW4gY29tcHV0ZXIgc2NpZW5jZS4gQWx0aG91Z2ggdGhlcmUgYXJlIGN1cnJlbnRseSBubyBzdWl0YWJsZSB0ZXh0Ym9va3MgZm9yIHRoaXMgY291cnNlLCBhIHNlbGVjdGVkIGJpYmxpb2dyYXBoeSBpcyBpbmNsdWRlZCB3aGljaCBjb3ZlcnMgdmFyaW91cyBjb3Vyc2UgdG9waWNzLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMwMjIwIChDb21wdXRpbmcgZWR1Y2F0aW9uIGFuZCB0cmFpbmluZykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMzsgOTAxOyA5MTIiLAogIGNvcnBzb3VyY2UgPSAgICJQdXJkdWUgVW5pdi4sIFdlc3QgTGFmYXlldHRlLCBJTiwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFkbWluaXN0cmF0aW9uOyBjb21wdXRlciBjZW50cmUgbWFuYWdlbWVudDsgY29tcHV0ZXIgc2NpZW5jZTsgY29tcHV0ZXIgc3lzdGVtOyBkYXRhIHByb2Nlc3Npbmc7IGVkdWNhdGlvbjsgZWR1Y2F0aW9uYWwgY291cnNlczsgZ3JhZHVhdGUgcHJvZmVzc2lvbmFsIHByb2dyYW1zOyBpbmZvcm1hdGlvbiBzY2llbmNlOyBpbmZvcm1hdGlvbiBzeXN0ZW1zOyBtYW5hZ2VtZW50OyBtYW5hZ2VtZW50IHNjaWVuY2U7IHBlcmZvcm1hbmNlIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtLZWxsZXI6MTk3NjpGVlAsCiAgYXV0aG9yID0gICAgICAgIlJvYmVydCBNLiBLZWxsZXIiLAogIHRpdGxlID0gICAgICAgICJGb3JtYWwgVmVyaWZpY2F0aW9uIG9mIFBhcmFsbGVsIFByb2dyYW1zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE5IiwKICBudW1iZXIgPSAgICAgICAiNyIsCiAgcGFnZXMgPSAgICAgICAgIjM3MS0tMzg0IiwKICBtb250aCA9ICAgICAgICBqdWwsCiAgeWVhciA9ICAgICAgICAgIjE5NzYiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2OEEwNSIsCiAgTVJudW1iZXIgPSAgICAgIjU0IDE0NDMwIiwKICBtcnJldmlld2VyID0gICAiVy4gRC4gTWF1cmVyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9QYXJhbGxlbC9NdWx0aS5iaWIiLAogIGFic3RyYWN0ID0gICAgICJUd28gZm9ybWFsIG1vZGVscyBmb3IgcGFyYWxsZWwgY29tcHV0YXRpb24gYXJlIHByZXNlbnRlZDogYW4gYWJzdHJhY3QgY29uY2VwdHVhbCBtb2RlbCBhbmQgYSBwYXJhbGxlbC1wcm9ncmFtIG1vZGVsLiBUaGUgZm9ybWVyIG1vZGVsIGRvZXMgbm90IGRpc3Rpbmd1aXNoIGJldHdlZW4gY29udHJvbCBhbmQgZGF0YSBzdGF0ZXMuIFRoZSBsYXR0ZXIgbW9kZWwgaXMgaW5jbHVkZXMgdGhlIGNhcGFiaWxpdHkgZm9yIHRoZSByZXByZXNlbnRhdGlvbiBvZiBhbiBpbmZpbml0ZSBzZXQgb2YgY29udHJvbCBzdGF0ZXMgYnkgYWxsb3dpbmcgdGhlcmUgdG8gYmUgYXJiaXRyYXJpbHkgbWFueSBpbnN0cnVjdGlvbiBwb2ludGVycyAob3IgcHJvY2Vzc2VzKSBleGVjdXRpbmcgdGhlIHByb2dyYW0uIEFuIGluZHVjdGlvbiBwcmluY2lwbGUgaXMgcHJlc2VudGVkIHdoaWNoIHRyZWF0cyB0aGUgY29udHJvbCBhbmQgZGF0YSBzdGF0ZSBzZXRzIG9uIHRoZSBzYW1lIGdyb3VuZC4gVGhyb3VnaCB0aGUgdXNlIG9mIGBgcGxhY2UgdmFyaWFibGVzJycsIGl0IGlzIG9ic2VydmVkIHRoYXQgY2VydGFpbiBjb3JyZWN0bmVzcyBjb25kaXRpb25zIGNhbiBiZSBleHByZXNzZWQgd2l0aG91dCBlbnVtZXJhdGlvbiBvZiB0aGUgc2V0IG9mIGFsbCBwb3NzaWJsZSBjb250cm9sIHN0YXRlcy4gRXhhbXBsZXMgYXJlIHByZXNlbnRlZCBpbiB3aGljaCB0aGUgaW5kdWN0aW9uIHByaW5jaXBsZSBpcyB1c2VkIHRvIGRlbW9uc3RyYXRlIHByb29mcyBvZiBtdXR1YWwgZXhjbHVzaW9uLiBBbHNvIGRpc2N1c3NlZCBpcyBhbiBleHRlbnNpb24gb2YgdGhlIHByb2dyYW0gbW9kZWwgd2hpY2ggYWxsb3dzIGVhY2ggcHJvY2VzcyB0byBoYXZlIGl0cyBvd24gbG9jYWwgdmFyaWFibGVzIGFuZCBwZXJtaXRzIHNoYXJlZCBnbG9iYWwgdmFyaWFibGVzLiBDb3JyZWN0bmVzcyBvZiBjZXJ0YWluIGZvcm1zIG9mIGltcGxlbWVudGF0aW9uIGlzIGFsc28gZGlzY3Vzc2VkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MjkwIChPdGhlciBjb21wdXRlciB0aGVvcnkpOyBDNTQwMCAoQW5hbG9ndWUgYW5kIGRpZ2l0YWwgY29tcHV0ZXJzIGFuZCBzeXN0ZW1zKTsgQzYxNTBHIChEaWFnbm9zdGljLCB0ZXN0aW5nLCBkZWJ1Z2dpbmcgYW5kIGV2YWx1YXRpbmcgc3lzdGVtcyk7IEM2MTUwSiAoT3BlcmF0aW5nIHN5c3RlbXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjI7IDcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlByaW5jZXRvbiBVbml2LiwgUHJpbmNldG9uLCBOSiwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFzc2VydGlvbnM7IGNvbXB1dGVyIG1ldGF0aGVvcnkgLS0tIFByb2dyYW1taW5nIFRoZW9yeTsgY29tcHV0ZXIgc3lzdGVtcywgZGlnaXRhbDsgY29ycmVjdG5lc3M7IGRhdGEgc3RhdGUgc2V0czsgZGVhZGxvY2s7IGV4Y2x1c2lvbjsgbXV0dWFsOyBvcGVyYXRpbmcgc3lzdGVtcyAoY29tcHV0ZXJzKTsgcGFyYWxsZWwgcHJvY2Vzc2luZzsgcGFyYWxsZWwgcHJvZ3JhbXM7IFBldHJpIG5ldDsgcHJvZ3JhbTsgdGVzdGluZzsgdHJhbnNpdGlvbiBzeXN0ZW07IHZlcmlmaWNhdGlvbiIsCiAgdHJlYXRtZW50ID0gICAgIkEgQXBwbGljYXRpb247IFQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7S2luZzoxOTc2OlNFUCwKICBhdXRob3IgPSAgICAgICAiSmFtZXMgQy4gS2luZyIsCiAgdGl0bGUgPSAgICAgICAgIlN5bWJvbGljIEV4ZWN1dGlvbiBhbmQgUHJvZ3JhbSBUZXN0aW5nIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE5IiwKICBudW1iZXIgPSAgICAgICAiNyIsCiAgcGFnZXMgPSAgICAgICAgIjM4NS0tMzk0IiwKICBtb250aCA9ICAgICAgICBqdWwsCiAgeWVhciA9ICAgICAgICAgIjE5NzYiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2OEEwNSIsCiAgTVJudW1iZXIgPSAgICAgIjU0IDY1NDEiLAogIG1ycmV2aWV3ZXIgPSAgICJQLiBXLiBCYWtlciIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJUaGlzIHBhcGVyIGRlc2NyaWJlcyB0aGUgc3ltYm9saWMgZXhlY3V0aW9uIG9mIHByb2dyYW1zLiBJbnN0ZWFkIG9mIHN1cHBseWluZyB0aGUgbm9ybWFsIGlucHV0cyB0byBhIHByb2dyYW0gKGUuZy4gbnVtYmVycykgb25lIHN1cHBsaWVzIHN5bWJvbHMgcmVwcmVzZW50aW5nIGFyYml0cmFyeSB2YWx1ZXMuIFRoZSBleGVjdXRpb24gcHJvY2VlZHMgYXMgaW4gYSBub3JtYWwgZXhlY3V0aW9uIGV4Y2VwdCB0aGF0IHZhbHVlcyBtYXkgYmUgc3ltYm9saWMgZm9ybXVsYXMgb3ZlciB0aGUgaW5wdXQgc3ltYm9scy4gVGhlIGRpZmZpY3VsdCwgeWV0IGludGVyZXN0aW5nIGlzc3VlcyBhcmlzZSBkdXJpbmcgdGhlIHN5bWJvbGljIGV4ZWN1dGlvbiBvZiBjb25kaXRpb25hbCBicmFuY2ggdHlwZSBzdGF0ZW1lbnRzLiBBIHBhcnRpY3VsYXIgc3lzdGVtIGNhbGxlZCBFRkZJR1kgd2hpY2ggcHJvdmlkZXMgc3ltYm9saWMgZXhlY3V0aW9uIGZvciBwcm9ncmFtIHRlc3RpbmcgYW5kIGRlYnVnZ2luZyBpcyBhbHNvIGRlc2NyaWJlZC4gSXQgaW50ZXJwcmV0aXZlbHkgZXhlY3V0ZXMgcHJvZ3JhbXMgd3JpdHRlbiBpbiBhIHNpbXBsZSBQTC9JIHN0eWxlIHByb2dyYW1taW5nIGxhbmd1YWdlLiBJdCBpbmNsdWRlcyBtYW55IHN0YW5kYXJkIGRlYnVnZ2luZyBmZWF0dXJlcywgdGhlIGFiaWxpdHkgdG8gbWFuYWdlIGFuZCB0byBwcm92ZSB0aGluZ3MgYWJvdXQgc3ltYm9saWMgZXhwcmVzc2lvbnMsIGEgc2ltcGxlIHByb2dyYW0gdGVzdGluZyBtYW5hZ2VyLCBhbmQgYSBwcm9ncmFtIHZlcmlmaWVyLiBBIGJyaWVmIGRpc2N1c3Npb24gb2YgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHN5bWJvbGljIGV4ZWN1dGlvbiBhbmQgcHJvZ3JhbSBwcm92aW5nIGlzIGFsc28gaW5jbHVkZWQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMTAgKFN5c3RlbXMgYW5hbHlzaXMgYW5kIHByb2dyYW1taW5nKTsgQzYxNTBHIChEaWFnbm9zdGljLCB0ZXN0aW5nLCBkZWJ1Z2dpbmcgYW5kIGV2YWx1YXRpbmcgc3lzdGVtcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIklCTSBUaG9tYXMgSi4gV2F0c29uIFJlcy4gQ2VudGVyLCBZb3JrdG93biBIZWlnaHRzLCBOSiwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIG1ldGF0aGVvcnkgLS0tIEZvcm1hbCBMb2dpYzsgY29tcHV0ZXIgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzOyBkZWJ1Z2dpbmc7IEVGRklHWTsgZWZmaWd5OyBpbnRlcnByZXRhdGlvbjsgUEwvSTsgcHJvZ3JhbSBkZWJ1Z2dpbmc7IHByb2dyYW0gcHJvdmluZzsgcHJvZ3JhbSB0ZXN0aW5nOyBwcm9ncmFtIHZlcmlmaWNhdGlvbjsgc3ltYm9saWM7IHN5bWJvbGljIGV4ZWN1dGlvbiIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle01ldGNhbGZlOjE5NzY6RURQLAogIGF1dGhvciA9ICAgICAgICJSb2JlcnQgTS4gTWV0Y2FsZmUgYW5kIERhdmlkIFIuIEJvZ2dzIiwKICB0aXRsZSA9ICAgICAgICAie0V0aGVybmV0fTogRGlzdHJpYnV0ZWQgUGFja2V0IFN3aXRjaGluZyBmb3IgTG9jYWwgQ29tcHV0ZXIgTmV0d29ya3MiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTkiLAogIG51bWJlciA9ICAgICAgICI3IiwKICBwYWdlcyA9ICAgICAgICAiMzk1LS00MDQiLAogIG1vbnRoID0gICAgICAgIGp1bCwKICB5ZWFyID0gICAgICAgICAiMTk3NiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGF0YWJhc2UvR3JhZWZlLmJpYiBhbmQgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9BaS9BaS5taXNjLmJpYiBhbmQgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9NaXNjL21pc2MuMS5iaWIiLAogIGFic3RyYWN0ID0gICAgICJFdGhlcm5ldCBpcyBhIGJyYW5jaGluZyBicm9hZGNhc3QgY29tbXVuaWNhdGlvbiBzeXN0ZW0gZm9yIGNhcnJ5aW5nIGRpZ2l0YWwgZGF0YSBwYWNrZXRzIGFtb25nIGxvY2FsbHkgZGlzdHJpYnV0ZWQgY29tcHV0aW5nIHN0YXRpb25zLiBUaGUgcGFja2V0IHRyYW5zcG9ydCBtZWNoYW5pc20gcHJvdmlkZWQgYnkgRXRoZXJuZXQgaGFzIGJlZW4gdXNlZCB0byBidWlsZCBzeXN0ZW1zIHdoaWNoIGNhbiBiZSB2aWV3ZWQgYXMgZWl0aGVyIGxvY2FsIGNvbXB1dGVyIG5ldHdvcmtzIG9yIGxvb3NlbHkgY291cGxlZCBtdWx0aXByb2Nlc3NvcnMuIFxwYXIgQW4gRXRoZXJuZXQncyBzaGFyZWQgY29tbXVuaWNhdGlvbiBmYWNpbGl0eSwgaXRzIEV0aGVyLCBpcyBhIHBhc3NpdmUgYnJvYWRjYXN0IG1lZGl1bSB3aXRoIG5vIGNlbnRyYWwgY29udHJvbC4gQ29vcmRpbmF0aW9uIG9mIGFjY2VzcyB0byB0aGUgRXRoZXIgZm9yIHBhY2tldCBicm9hZGNhc3RzIGlzIGRpc3RyaWJ1dGVkIGFtb25nIHRoZSBjb250ZW5kaW5nIHRyYW5zbWl0dGluZyBzdGF0aW9ucyB1c2luZyBjb250cm9sbGVkIHN0YXRpc3RpY2FsIGFyYml0cmF0aW9uLiBccGFyIFN3aXRjaGluZyBvZiBwYWNrZXRzIHRvIHRoZWlyIGRlc3RpbmF0aW9ucyBvbiB0aGUgRXRoZXIgaXMgZGlzdHJpYnV0ZWQgYW1vbmcgdGhlIHJlY2VpdmluZyBzdGF0aW9ucyB1c2luZyBwYWNrZXQgYWRkcmVzcyByZWNvZ25pdGlvbi4gRGVzaWduIHByaW5jaXBsZXMgYW5kIGltcGxlbWVudGF0aW9uIGFyZSBkZXNjcmliZWQsIGJhc2VkIG9uIGV4cGVyaWVuY2Ugd2l0aCBhbiBvcGVyYXRpbmcgRXRoZXJuZXQgb2YgMTAwIG5vZGVzIGFsb25nIGEga2lsb21ldGVyIG9mIGNvYXhpYWwgY2FibGUuIEEgbW9kZWwgZm9yIGVzdGltYXRpbmcgcGVyZm9ybWFuY2UgdW5kZXIgaGVhdnkgbG9hZHMgYW5kIGEgcGFja2V0IHByb3RvY29sIGZvciBlcnJvciBjb250cm9sbGVkIGNvbW11bmljYXRpb24gYXJlIGluY2x1ZGVkIGZvciBjb21wbGV0ZW5lc3MuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjYyMTBMIChDb21wdXRlciBjb21tdW5pY2F0aW9ucyk7IEM1NjIwIChDb21wdXRlciBuZXR3b3JrcyBhbmQgdGVjaG5pcXVlcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcxODsgNzIyOyA3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJYZXJveCBQYWxvIEFsdG8gUmVzLiBDZW50ZXIsIFBhbG8gQWx0bywgQ0EsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJicm9hZGNhc3Q7IGJyb2FkY2FzdCBjb21tdW5pY2F0aW9uOyBjb21tdW5pY2F0aW9uOyBjb21wdXRlciBuZXR3b3JrczsgY29tcHV0ZXIgc3lzdGVtcywgZGlnaXRhbCAtLS0gUmVhbCBUaW1lIE9wZXJhdGlvbjsgY29tcHV0ZXJzIC0tLSBEYXRhIENvbW11bmljYXRpb24gU3lzdGVtczsgZGF0YSB0cmFuc21pc3Npb247IGRpZ2l0YWwgY29tbXVuaWNhdGlvbiBzeXN0ZW1zOyBkaXN0cmlidXRlZCBjb21tdW5pY2F0aW9uOyBkaXN0cmlidXRlZCBjb21wdXRpbmc7IGRpc3RyaWJ1dGVkIGNvbnRyb2w7IEV0aGVybmV0OyBMQU5zOyBtdWx0aXByb2Nlc3Npbmc7IG11bHRpcHJvY2Vzc29yczsgbmV0d29ya3M7IG9wZXJhdGluZzsgcGFja2V0IHN3aXRjaGluZzsgc3RhdGlzdGljYWwgYXJiaXRyYXRpb247IHN3aXRjaGluZyBzeXN0ZW1zIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtDaGVuZzoxOTc2OlNEUiwKICBhdXRob3IgPSAgICAgICAiQ2hlbmctV2VuIENoZW5nIGFuZCBKb25hcyBSYWJpbiIsCiAgdGl0bGUgPSAgICAgICAgIlN5bnRoZXNpcyBvZiBEZWNpc2lvbiBSdWxlcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOSIsCiAgbnVtYmVyID0gICAgICAgIjciLAogIHBhZ2VzID0gICAgICAgICI0MDQtLTQwNiIsCiAgbW9udGggPSAgICAgICAganVsLAogIHllYXIgPSAgICAgICAgICIxOTc2IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkRlY2lzaW9uIHRhYmxlcyBjYW4gYmUgdXNlZCBhcyBhbiBlZmZlY3RpdmUgdG9vbCBkdXJpbmcgYW4gaW50ZXJ2aWV3IHRvIHJlY29yZCB0aGUgbG9naWMgb2YgcHJvY2Vzc2VzIHRvIGJlIGF1dG9tYXRlZC4gVGhlIHJlc3VsdCBvZiBzdWNoIGFuIGludGVydmlldyBpcyBub3QgYSBzdHJ1Y3R1cmUgb2YgY29tcGxldGUgZGVjaXNpb24gdGFibGVzIGJ1dCByYXRoZXIgc2V0cyBvZiBkZWNpc2lvbiBydWxlcy4gVGhlIHB1cnBvc2Ugb2YgdGhpcyBwYXBlciBpcyB0byBwcm92aWRlIGEgcHJvY2VkdXJlIGZvciBzeW50aGVzaXppbmcgdGhlIGRlY2lzaW9uIHJ1bGVzIGFuZCB0aHVzIHByb3ZpZGUgYW4gYWlkIGluIGRldmVsb3BpbmcgYSBzdHJ1Y3R1cmUgb2YgY29tcGxldGUgZGVjaXNpb24gdGFibGVzLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTEwIChTeXN0ZW1zIGFuYWx5c2lzIGFuZCBwcm9ncmFtbWluZyk7IEM3MTAwIChCdXNpbmVzcyBhbmQgYWRtaW5pc3RyYXRpb24pIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjM7IDkyMiIsCiAgY29ycHNvdXJjZSA9ICAgIldlc3Rlcm4gRWxlY3RyaWMgUmVzLiBDZW50ZXIsIFByaW5jZXRvbiwgTkosIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBzeXN0ZW1zIHByb2dyYW1taW5nOyBkYXRhIHByb2Nlc3NpbmcgLS0tIFNlY3VyaXR5IG9mIERhdGE7IGRlY2lzaW9uIHJ1bGVzOyBkZWNpc2lvbiB0YWJsZXM7IGRlY2lzaW9uIHRoZW9yeSBhbmQgYW5hbHlzaXM7IGludGVydmlldzsgbG9naWNhbCBkZXNpZ247IGxvZ2ljYWwgdGFibGVzOyBtYW5hZ2VtZW50OyBzcGVjaWZpY2F0aW9uIGxhbmd1YWdlOyBzeXN0ZW0gZGVzaWduIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWw7IFQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7RmlzaG1hbjoxOTc2OlNHRCwKICBhdXRob3IgPSAgICAgICAiR2VvcmdlIFMuIEZpc2htYW4iLAogIHRpdGxlID0gICAgICAgICJTYW1wbGluZyBmcm9tIHRoZSB7R2FtbWEtZGlzdHJpYnV0aW9ufSBvbiBhIGNvbXB1dGVyIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE5IiwKICBudW1iZXIgPSAgICAgICAiNyIsCiAgcGFnZXMgPSAgICAgICAgIjQwNy0tNDA5IiwKICBtb250aCA9ICAgICAgICBqdWwsCiAgeWVhciA9ICAgICAgICAgIjE5NzYiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2NUMxMCIsCiAgTVJudW1iZXIgPSAgICAgIjU0IDY0NDkiLAogIG1ycmV2aWV3ZXIgPSAgICJBcnRlbmlvIERlIE1hdHRlaXMiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0Rpc3RyaWJ1dGVkL1FMRC8xOTc2LmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIlRoaXMgcGFwZXIgZGVzY3JpYmVzIGEgbmV3IHRlY2huaXF1ZSBmb3Igc2FtcGxpbmcgZnJvbSB0aGUgZ2FtbWEgZGlzdHJpYnV0aW9uIG9uIGEgZGlnaXRhbCBjb21wdXRlciBhbmQgY29tcGFyZXMgaXQgd2l0aCBhbiBhbHRlcm5hdGl2ZSB0ZWNobmlxdWUuIFRoZSBtZXRob2Qgc3VnZ2VzdGVkIHVzZXMgdGhlIHJlamVjdGlvbiB0ZWNobmlxdWUuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjAyNDAgKFByb2JhYmlsaXR5IGFuZCBzdGF0aXN0aWNzKTsgQzExNDAgKFByb2JhYmlsaXR5IGFuZCBzdGF0aXN0aWNzKTsgQzcxMDAgKEJ1c2luZXNzIGFuZCBhZG1pbmlzdHJhdGlvbik7IEM3MzEwIChNYXRoZW1hdGljcyBjb21wdXRpbmcpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI5MTI7IDkyMiIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIG9mIE5vcnRoIENhcm9saW5hLCBDaGFwZWwgSGlsbCwgTkMsIFVTQSIsCiAgY291bnRyeSA9ICAgICAgIlVTQSIsCiAgZGVzY3JpcHRvcnMgPSAgIlJORzsgc2ltdWxhdGlvbjsiLAogIGVudW0gPSAgICAgICAgICI5NTEiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiZ2FtbWEgZGlzdHJpYnV0aW9uOyBnYW1tYSB2YXJpYXRlczsgb3BlcmF0aW9ucyByZXNlYXJjaDsgcHJvYmFiaWxpdHk7IHByb2JhYmlsaXR5IC0tLSBSYW5kb20gUHJvY2Vzc2VzOyByZWplY3Rpb24gdGVjaG5pcXVlOyBzYW1wbGluZzsgc2hhcGUgcGFyYW1ldGVyOyBXYWxsYWNlJ3MgbWV0aG9kIiwKICBsYW5ndWFnZSA9ICAgICAiRW5nbGlzaCIsCiAgcmVmZXJlbmNlcyA9ICAgIjAiLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle01hbHk6MTk3NjpDVCwKICBhdXRob3IgPSAgICAgICAiS3VydCBNYWx5IiwKICB0aXRsZSA9ICAgICAgICAiQ29tcHJlc3NlZCBUcmllcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOSIsCiAgbnVtYmVyID0gICAgICAgIjciLAogIHBhZ2VzID0gICAgICAgICI0MDktLTQxNSIsCiAgbW9udGggPSAgICAgICAganVsLAogIHllYXIgPSAgICAgICAgICIxOTc2IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjhBNTAiLAogIE1SbnVtYmVyID0gICAgICI1NCA5MTk1IiwKICBtcnJldmlld2VyID0gICAiRmFicml6aW8gTHVjY2lvIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlRoaXMgcGFwZXIgcHJlc2VudHMgYSBuZXcgZGF0YSBzdHJ1Y3R1cmUsIGNhbGxlZCBhIGNvbXByZXNzZWQgdHJpZSBvciBDLXRyaWUsIHRvIGJlIHVzZWQgaW4gaW5mb3JtYXRpb24gcmV0cmlldmFsIHN5c3RlbXMuIEl0IGhhcyB0aGUgc2FtZSB1bmRlcmx5aW5nIG0tYXJ5IHRyZWUgc3RydWN0dXJlIGFzIGEgdHJpZSwgd2hlcmUgbSBpcyBhIHBhcmFtZXRlciBvZiB0aGUgdHJpZSwgYnV0IHdoZXJlYXMgdGhlIGZpZWxkcyBvZiB0aGUgbm9kZXMgaW4gYSB0cmllIGhhdmUgdG8gYmUgbGFyZ2UgZW5vdWdoIHRvIGhvbGQgYSBrZXkgb3IgYXQgbGVhc3QgYSBwb2ludGVyLCB0aGUgZmllbGRzIGluIGEgQy10cmllIGFyZSBvbmx5IG9uZSBiaXQgbG9uZy4gRmlyc3QsIHRoZSBDLXRyaWUgaXMgYW5hbHl6ZWQgYXMgYSBkYXRhIHN0cnVjdHVyZSwgYW5kIHRoZW4gc2V2ZXJhbCBtZXRob2RzIG9mIGl0cyB1c2UgZm9yIHJlbGF0aXZlbHkgc3RhdGljIGRhdGEgYmFzZXMgYXJlIGRpc2N1c3NlZC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pOyBDNzI1MCAoSW5mb3JtYXRpb24gc3RvcmFnZSBhbmQgcmV0cmlldmFsKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzOyA5MDEiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBvZiBNaW5uZXNvdGEsIE1pbm5lYXBvbGlzLCBNTiwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImRhdGEgcHJvY2Vzc2luZyAtLS0gRGF0YSBTdHJ1Y3R1cmVzOyBkYXRhIHN0b3JhZ2UsIGRpZ2l0YWw7IGRhdGEgc3RydWN0dXJlOyBkYXRhIHN0cnVjdHVyZXM7IGRhdGFiYXNlIG1hbmFnZW1lbnQgc3lzdGVtczsgZGF0YWJhc2VzOyBpbmZvcm1hdGlvbjsgaW5mb3JtYXRpb24gcmV0cmlldmFsIHN5c3RlbXM7IGtleTsgbSBhcnk7IHJldHJpZXZhbCBzeXN0ZW1zOyByZXRyaWV2YWwgdGltZTsgc3RvcmFnZSByZXF1aXJlbWVudDsgdHJlZTsgdHJpZSIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7QnVydG9uOjE5NzY6QlNWLAogIGF1dGhvciA9ICAgICAgICJXYXJyZW4gQnVydG9uIiwKICB0aXRsZSA9ICAgICAgICAiQSBidWRkeSBzeXN0ZW0gdmFyaWF0aW9uIGZvciBkaXNrIHN0b3JhZ2UgYWxsb2NhdGlvbiIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOSIsCiAgbnVtYmVyID0gICAgICAgIjciLAogIHBhZ2VzID0gICAgICAgICI0MTYtLTQxNyIsCiAgbW9udGggPSAgICAgICAganVsLAogIHllYXIgPSAgICAgICAgICIxOTc2IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkEgZ2VuZXJhbGl6YXRpb24gb2YgdGhlIGJ1ZGR5IHN5c3RlbSBmb3Igc3RvcmFnZSBhbGxvY2F0aW9uIGlzIGRlc2NyaWJlZC4gSXQgaXMgc2hvd24gaG93IGxpbWl0YXRpb25zIG9uIGJsb2NrIHNpemVzIG1ha2UgaXQgcG9zc2libGUgdG8gZm9yY2UgbG9naWNhbCBzdG9yYWdlIGJsb2NrcyB0byBjb2luY2lkZSB3aXRoIHBoeXNpY2FsIHN0b3JhZ2UgYmxvY2tzLCBzdWNoIGFzIHRyYWNrcyBhbmQgY3lsaW5kZXJzLiBUaGlzIG5ldyB2YXJpYXRpb24gb2YgdGhlIGJ1ZGR5IHN5c3RlbSBoYXMgYmVlbiBkZXZlbG9wZWQgZm9yIGFsbG9jYXRpbmcgc3RvcmFnZSBmb3IgZ2VvbWV0cmljYWwgZGF0YSBpdGVtcyAocG9seWdvbnMsIHNldHMgb2YgcG9pbnRzLCBldGMuICkuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzUzMjBDIChTdG9yYWdlIG9uIG1vdmluZyBtYWduZXRpYyBtZWRpYSk7IEM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbikiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMjsgNzIzIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gb2YgRWFzdCBBbmdsaWEsIE5vcndpY2gsIFVLIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImJ1ZGR5IHN5c3RlbTsgY29tcHV0ZXIgb3BlcmF0aW5nIHN5c3RlbXM7IGNvbXB1dGVyIHN5c3RlbXMgcHJvZ3JhbW1pbmcgLS0tIFN1cGVydmlzb3J5IGFuZCBFeGVjdXRpdmUgUHJvZ3JhbXM7IGRhdGEgc3RvcmFnZSwgbWFnbmV0aWMgLS0tIERpc2s7IGRpc2Mgc3RvcmFnZTsgaW50ZWdyYWwgdmFsdWVkIGZ1bmN0aW9uOyBtYWduZXRpYyBkaXNjIGFuZCBkcnVtIHN0b3JhZ2U7IHN0b3JhZ2UgYWxsb2NhdGlvbiIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7R29ubmV0OjE5NzY6SEFFLAogIGF1dGhvciA9ICAgICAgICJHLiBILiBHb25uZXQiLAogIHRpdGxlID0gICAgICAgICJIZWFwcyBhcHBsaWVkIHRvIGV2ZW50IGRyaXZlbiBtZWNoYW5pc21zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE5IiwKICBudW1iZXIgPSAgICAgICAiNyIsCiAgcGFnZXMgPSAgICAgICAgIjQxNy0tNDE4IiwKICBtb250aCA9ICAgICAgICBqdWwsCiAgeWVhciA9ICAgICAgICAgIjE5NzYiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EaXN0cmlidXRlZC9RTEQvMTk3Ni5iaWIiLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDI0MCAoUHJvZ3JhbW1pbmcgYW5kIGFsZ29yaXRobSB0aGVvcnkpOyBDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gb2YgV2F0ZXJsb28sIFdhdGVybG9vLCBPbnQuLCBDYW5hZGEiLAogIGNvdW50cnkgPSAgICAgICJVU0EiLAogIGRlc2NyaXB0b3JzID0gICJTaW11bGF0aW9uOyBldmVudCBzZXQ7IiwKICBlbnVtID0gICAgICAgICAiNzMzMSIsCiAga2V5d29yZHMgPSAgICAgImFsZ29yaXRobSB0aGVvcnk7IGRhdGEgc3RydWN0dXJlczsgZGlzY3JldGUgZXZlbnQgc2ltdWxhdGlvbjsgZXZlbnQ7IGhlYXBzOyBwcmlvcml0eSBxdWV1ZTsgc2Nhbm5pbmcgbWVjaGFuaXNtcyIsCiAgbGFuZ3VhZ2UgPSAgICAgIkVuZ2xpc2giLAogIHJlZmVyZW5jZXMgPSAgICIwIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtEb25vdmFuOjE5NzY6VFBTLAogIGF1dGhvciA9ICAgICAgICJKb2huIEouIERvbm92YW4iLAogIHRpdGxlID0gICAgICAgICJUb29scyBhbmQgUGhpbG9zb3BoeSBmb3IgU29mdHdhcmUgRWR1Y2F0aW9uIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE5IiwKICBudW1iZXIgPSAgICAgICAiOCIsCiAgcGFnZXMgPSAgICAgICAgIjQzMC0tNDM2IiwKICBtb250aCA9ICAgICAgICBhdWcsCiAgeWVhciA9ICAgICAgICAgIjE5NzYiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiVGhpcyBwYXBlciBkZXNjcmliZXMgYSBzZXQgb2YgdG9vbHMgYW5kIGEgcGhpbG9zb3BoeSBmb3IgdGVhY2hpbmcgc29mdHdhcmUgdGhhdCBoYXZlIGJlZW4gZm91bmQgdmVyeSB1c2VmdWwgaW4gY291cnNlIGF0IE1JVCBvdmVyIHRoZSBwYXN0IHNldmVuIHllYXJzLiBccGFyIFRoZSB0b29scyBpbmNsdWRlIHByb2dyYW1zIHN1Y2ggYXMgc2ltdWxhdG9ycywgZ3JhZGVycywgY29tcGlsZXJzLCBhbmQgbW9uaXRvci4gVGhlc2UgYWxsb3cgdGhlIGluc3RydWN0b3IgdG8gYXVnbWVudCB0aGUgYmFzaWMgY29uY2VwdHMgd2l0aCByZWxldmFudCwgZXhjaXRpbmcsIGFuZCBlY29ub21pY2FsIHN0dWRlbnQgcHJvamVjdCBhY3Rpdml0aWVzLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMwMjIwIChDb21wdXRpbmcgZWR1Y2F0aW9uIGFuZCB0cmFpbmluZyk7IEM2MTEwIChTeXN0ZW1zIGFuYWx5c2lzIGFuZCBwcm9ncmFtbWluZykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMzsgOTAxIiwKICBjb3Jwc291cmNlID0gICAiTUlULCBDYW1icmlkZ2UsIE1BLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgcHJvZ3JhbW1pbmc7IGNvbXB1dGVyIHNvZnR3YXJlOyBlZHVjYXRpb247IGdyYWRpbmc7IGdyYWRpbmcgcHJvZ3JhbXM7IHBoaWxvc29waHk7IHByb2dyYW1zOyBzaW11bGF0b3JzOyBzb2Z0d2FyZSBlZHVjYXRpb247IHN0dWRlbnQgYXNzaWdubWVudHM7IHRvb2xzIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtUZW5uZW50OjE5NzY6RFNQLAogIGF1dGhvciA9ICAgICAgICJSLiBELiBUZW5uZW50IiwKICB0aXRsZSA9ICAgICAgICAiVGhlIERlbm90YXRpb25hbCBTZW1hbnRpY3Mgb2YgUHJvZ3JhbW1pbmcgTGFuZ3VhZ2VzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE5IiwKICBudW1iZXIgPSAgICAgICAiOCIsCiAgcGFnZXMgPSAgICAgICAgIjQzNy0tNDUzIiwKICBtb250aCA9ICAgICAgICBhdWcsCiAgeWVhciA9ICAgICAgICAgIjE5NzYiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2OEEwNSIsCiAgTVJudW1iZXIgPSAgICAgIjU1IDE3OTEiLAogIG1ycmV2aWV3ZXIgPSAgICJHaWFubmkgQWd1enppIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9NaXNjL0Z1bmN0aW9uYWwuYmliOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L09iamVjdC9OaWVyc3RyYXN6LmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIlRoaXMgcGFwZXIgaXMgYSB0dXRvcmlhbCBpbnRyb2R1Y3Rpb24gdG8gdGhlIHRoZW9yeSBvZiBwcm9ncmFtbWluZyBsYW5ndWFnZSBzZW1hbnRpY3MgZGV2ZWxvcGVkIGJ5IEQuIFNjb3R0IGFuZCBDLiBTdHJhY2hleS4gVGhlIGFwcGxpY2F0aW9uIG9mIHRoZSB0aGVvcnkgdG8gZm9ybWFsIGxhbmd1YWdlIHNwZWNpZmljYXRpb24gaXMgZGVtb25zdHJhdGVkIGFuZCBvdGhlciBhcHBsaWNhdGlvbnMgYXJlIHN1cnZleWVkLiBUaGUgZmlyc3QgbGFuZ3VhZ2UgY29uc2lkZXJlZCwgTE9PUCwgaXMgdmVyeSBlbGVtZW50YXJ5IGFuZCBpdHMgZGVmaW5pdGlvbiBtZXJlbHkgaW50cm9kdWNlcyB0aGUgbm90YXRpb24gYW5kIG1ldGhvZG9sb2d5IG9mIHRoZSBhcHByb2FjaC4gVGhlbiB0aGUgc2VtYW50aWMgY29uY2VwdHMgb2YgZW52aXJvbm1lbnRzLCBzdG9yZXMsIGFuZCBjb250aW51YXRpb25zIGFyZSBpbnRyb2R1Y2VkIHRvIG1vZGVsIGNsYXNzZXMgb2YgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgZmVhdHVyZXMgYW5kIHRoZSB1bmRlcmx5aW5nIG1hdGhlbWF0aWNhbCB0aGVvcnkgb2YgY29tcHV0YXRpb24gZHVlIHRvIFNjb3R0IGlzIG1vdGl2YXRlZCBhbmQgb3V0bGluZWQuIEZpbmFsbHksIHRoZSBwYXBlciBwcmVzZW50cyBhIGZvcm1hbCBkZWZpbml0aW9uIG9mIHRoZSBsYW5ndWFnZSBHRURBTktFTi4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDIxMCAoRm9ybWFsIGxvZ2ljKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIxOyA3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJRdWVlbidzIFVuaXYuLCBLaW5nc3RvbiwgT250LiwgQ2FuYWRhIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFwcGxpY2F0aXZlOyBhdXRvbWF0YSB0aGVvcnkgLS0tIENvbnRleHQgRnJlZSBMYW5ndWFnZXM7IGNvbXB1dGVyIG1ldGF0aGVvcnk7IGNvbXB1dGVyIHByb2dyYW1taW5nIGxhbmd1YWdlcyAtLS0gQW5hbHlzaXM7IGNvbnRpbnVhdGlvbjsgZW52aXJvbm1lbnQ7IGZvcm1hbCBsYW5ndWFnZTsgZm9ybWFsIGxhbmd1YWdlczsgZnVuY3Rpb247IGZ1bmN0aW9uYWw7IEdFREFOS0VOOyBnZWRhbmtlbjsgaGlnaGVyIG9yZGVyOyBoaWdoZXItb3JkZXIgZnVuY3Rpb247IGltcGVyYXRpdmU7IGxvb3A7IExPT1A7IG1hdGhlbWF0aWNhbCB0aGVvcnkgb2YgY29tcHV0YXRpb247IHBsLXNlbWFudGljcyBiaW5kZXI7IHByb2dyYW1taW5nIGxhbmd1YWdlOyBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IHJlY3Vyc2l2ZSBkZWZpbml0aW9uOyBzZW1hbnRpY3M7IHN0b3JlOyB0aGVvcnkgb2YgY29tcHV0YXRpb24iLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0NsYXJrOjE5NzY6RFMsCiAgYXV0aG9yID0gICAgICAgIkphbWVzIEguIENsYXJrIiwKICB0aXRsZSA9ICAgICAgICAiRGVzaWduaW5nIFN1cmZhY2VzIGluIHszLUR9IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE5IiwKICBudW1iZXIgPSAgICAgICAiOCIsCiAgcGFnZXMgPSAgICAgICAgIjQ1NC0tNDYwIiwKICBtb250aCA9ICAgICAgICBhdWcsCiAgeWVhciA9ICAgICAgICAgIjE5NzYiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2OEE5OSAoNTBEMTUgNjVEMTApIiwKICBNUm51bWJlciA9ICAgICAiNTQgNDIxNiIsCiAgbXJyZXZpZXdlciA9ICAgIldvbGZnYW5nIEJvaG0iLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L01pc2MvdmlydHVhbC5iaWIiLAogIGFic3RyYWN0ID0gICAgICJBbiBleHBlcmltZW50YWwgc3lzdGVtIGZvciBjb21wdXRlci1haWRlZCBkZXNpZ24gb2YgZnJlZS1mb3JtIHN1cmZhY2VzIGluIHRocmVlIGRpbWVuc2lvbnMgaXMgZGVzY3JpYmVkLiBUaGUgc3VyZmFjZXMgYXJlIHJlcHJlc2VudGVkIGluIHRoZSBzeXN0ZW0gYXMgcGFyYW1ldHJpYyBiYXNpcyBzcGxpbmVzLiBUaGUgcHJpbmNpcGFsIGZlYXR1cmVzIG9mIHRoZSBzeXN0ZW0gYXJlOiB0aGUgc3VyZmFjZXMgYXJlIHJlbmRlcmVkIGFzIGlzb3BhcmFtZXRyaWMgbGluZSBkcmF3aW5ncyBvbiBhIGhlYWQtbW91bnRlZCBkaXNwbGF5LCBhbmQgdGhleSBhcmUgZGVzaWduZWQgd2l0aCB0aGUgYWlkIG9mIGEgdGhyZWUtZGltZW5zaW9uYWwgYGB3YW5kLCcnIHdoaWNoIGFsbG93cyAzLUQgbW92ZW1lbnRzIG9mIHRoZSBwb2ludHMgY29udHJvbGxpbmcgdGhlIHNoYXBlcyBvZiB0aGUgc3VyZmFjZXM7IGFsbCBvZiB0aGUgaW50ZXJhY3Rpb25zIHdpdGggdGhlIHN1cmZhY2VzIGFyZSBpbiByZWFsLXRpbWU7IGFuZCB0aGUgbWF0aGVtYXRpY2FsIGZvcm11bGF0aW9ucyB1c2VkIGFzc3VtZSBubyBrbm93bGVkZ2Ugb2YgdGhlbSBieSB0aGUgdXNlciBvZiB0aGUgc3lzdGVtLiBBbHNvIGV4YW1pbmVkIGFyZSBzb21lIG9mIHRoZSBmZWF0dXJlcyB0aGF0IHNob3VsZCBiZSBwYXJ0IG9mIGEgcHJhY3RpY2FsIDMtRCBzeXN0ZW0gZm9yIGRlc2lnbmluZyBzcGFjZS1mb3Jtcy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNTU0MCAoVGVybWluYWxzIGFuZCBncmFwaGljIGRpc3BsYXlzKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIyOyA3MjM7IDkwMSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIG9mIFV0YWgsIFNhbHQgTGFrZSBDaXR5LCBVVCwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgIjNEIGRpc3BsYXlzOyBCIHNwbGluZXM7IENBRDsgY29tcHV0ZXIgZ3JhcGhpY3M7IGNvbXB1dGVyIHBlcmlwaGVyYWwgZXF1aXBtZW50IC0tLSBMaWdodCBQZW5zOyBjb21wdXRlciBzeXN0ZW1zLCBkaWdpdGFsIC0tLSBSZWFsIFRpbWUgT3BlcmF0aW9uOyBjb21wdXRlci1haWRlZCBkZXNpZ247IGVuZ2luZWVyaW5nIC0tLSBDb21wdXRlciBBaWRlZCBEZXNpZ247IGZyZWUgZm9ybSBzdXJmYWNlczsgaW1hZ2UgcHJvY2Vzc2luZzsgaXNvcGFyYW1ldHJpYyBsaW5lIGRyYXdpbmdzOyBwaWN0dXJlIHByb2Nlc3Npbmc7IHJlYWw7IHN1cmZhY2UgZGVzaWduOyBzdXJmYWNlczsgdGhyZWUgZGltZW5zaW9uYWwgc3VyZmFjZXM7IHRpbWUgZ3JhcGhpY3MiLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBQIFByYWN0aWNhbDsgWCBFeHBlcmltZW50YWwiLAp9CgpAQXJ0aWNsZXtIYXJyaXNvbjoxOTc2OlBPUywKICBhdXRob3IgPSAgICAgICAiTWljaGFlbCBBLiBIYXJyaXNvbiBhbmQgV2FsdGVyIEwuIFJ1enpvIGFuZCBKZWZmcmV5IEQuIFVsbG1hbiIsCiAgdGl0bGUgPSAgICAgICAgIlByb3RlY3Rpb24gaW4gT3BlcmF0aW5nIFN5c3RlbXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTkiLAogIG51bWJlciA9ICAgICAgICI4IiwKICBwYWdlcyA9ICAgICAgICAiNDYxLS00NzEiLAogIG1vbnRoID0gICAgICAgIGF1ZywKICB5ZWFyID0gICAgICAgICAiMTk3NiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4QTk5IiwKICBNUm51bWJlciA9ICAgICAiNTQgMTQ0NzQiLAogIG1ycmV2aWV3ZXIgPSAgICJHZW9yZ2UgSS4gRGF2aWRhIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9NaXNjL3NlY3VyaXR5LjEuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiQSBtb2RlbCBvZiBwcm90ZWN0aW9uIG1lY2hhbmlzbXMgaW4gY29tcHV0aW5nIHN5c3RlbXMgaXMgcHJlc2VudGVkIGFuZCBpdHMgYXBwcm9wcmlhdGVuZXNzIGlzIGFyZ3VlZC4gVGhlIGBgc2FmZXR5JycgcHJvYmxlbSBmb3IgcHJvdGVjdGlvbiBzeXN0ZW1zIHVuZGVyIHRoaXMgbW9kZWwgaXMgdG8gZGV0ZXJtaW5lIGluIGEgZ2l2ZW4gc2l0dWF0aW9uIHdoZXRoZXIgYSBzdWJqZWN0IGNhbiBhY3F1aXJlIGEgcGFydGljdWxhciByaWdodCB0byBhbiBvYmplY3QuIEluIHJlc3RyaWN0ZWQgY2FzZXMsIGl0IGNhbiBiZSBzaG93biB0aGF0IHRoaXMgcHJvYmxlbSBpcyBkZWNpZGFibGU7IGkuZS4sIHRoZXJlIGlzIGFuIGFsZ29yaXRobSB0byBkZXRlcm1pbmUgd2hldGhlciBhIHN5c3RlbSBpbiBhIHBhcnRpY3VsYXIgY29uZmlndXJhdGlvbiBpcyBzYWZlLiBJbiBnZW5lcmFsLCBhbmQgdW5kZXIgc3VycHJpc2luZ2x5IHdlYWsgYXNzdW1wdGlvbnMsIGl0IGNhbm5vdCBiZSBkZWNpZGVkIGlmIGEgc2l0dWF0aW9uIGlzIHNhZmUuIFZhcmlvdXMgaW1wbGljYXRpb25zIG9mIHRoaXMgZmFjdCBhcmUgZGlzY3Vzc2VkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MjEwIChGb3JtYWwgbG9naWMpOyBDNDIyMCAoQXV0b21hdGEgdGhlb3J5KTsgQzYxNTBKIChPcGVyYXRpbmcgc3lzdGVtcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMTsgNzIzIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gb2YgQ2FsaWZvcm5pYSwgQmVya2VsZXksIENBLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiKGNvbXB1dGVycyk7IGF1dG9tYXRhIHRoZW9yeSAtLS0gVHVyaW5nIE1hY2hpbmVzOyBjb21wdXRhYmlsaXR5IGFuZCBkZWNpZGFiaWxpdHk7IGNvbXB1dGVyIG9wZXJhdGluZyBzeXN0ZW1zIC0tLSBEZXNpZ247IGNvbXB1dGVyIHNlY3VyaXR5OyBkYXRhIHByb2Nlc3Npbmc7IGRlY2lkYWJpbGl0eTsgb3BlcmF0aW5nIHN5c3RlbXM7IHByb3RlY3Rpb247IHByb3RlY3Rpb24gc3lzdGVtczsgc2VjdXJpdHkgbW9kZWw7IHNlY3VyaXR5IG9mIGRhdGE7IFR1cmluZyBtYWNoaW5lOyBUdXJpbmcgbWFjaGluZXMiLAogIG9ydCA9ICAgICAgICAgICJvcmRuZXIgc2ljaGVyaGVpdCIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0hpcnNjaGJlcmc6MTk3NjpJVE8sCiAgYXV0aG9yID0gICAgICAgIkQuIFMuIEhpcnNjaGJlcmciLAogIHRpdGxlID0gICAgICAgICJBbiBJbnNlcnRpb24gVGVjaG5pcXVlIGZvciBPbmUtU2lkZWQgSGVpZ2h0LUJhbGFuY2VkIFRyZWVzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE5IiwKICBudW1iZXIgPSAgICAgICAiOCIsCiAgcGFnZXMgPSAgICAgICAgIjQ3MS0tNDczIiwKICBtb250aCA9ICAgICAgICBhdWcsCiAgeWVhciA9ICAgICAgICAgIjE5NzYiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiQSByZXN0cmljdGlvbiBvbiBoZWlnaHQtYmFsYW5jZWQgYmluYXJ5IHRyZWVzIGlzIHByZXNlbnRlZC4gSXQgaXMgc2VlbiB0aGF0IHRoaXMgcmVzdHJpY3Rpb24gcmVkdWNlcyB0aGUgZXh0cmEgbWVtb3J5IHJlcXVpcmVtZW50cyBieSBoYWxmIChmcm9tIHR3byBleHRyYSBiaXRzIHBlciBub2RlIHRvIG9uZSkgYW5kIG1haW50YWlucyBmYXN0IHNlYXJjaCBjYXBhYmlsaXRpZXMgYXQgYSBjb3N0IG9mIGluY3JlYXNlZCB0aW1lIHJlcXVpcmVtZW50cyBmb3IgaW5zZXJ0aW5nIG5ldyBub2Rlcy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDIxMCAoRm9ybWFsIGxvZ2ljKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiUHJpbmNldG9uIFVuaXYuLCBQcmluY2V0b24sIE5KLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYmFsYW5jZWQ7IGJhbGFuY2VkIHRyZWVzOyBiaW5hcnk7IGJpbmFyeSB0cmVlczsgY29tcHV0ZXIgcHJvZ3JhbW1pbmc7IGRhdGEgcHJvY2Vzc2luZzsgaW5zZXJ0aW9uIHRlY2huaXF1ZTsgb25lIHNpZGVkIGhlaWdodDsgc2VhcmNoOyB0cmVlczsgdHJlZXMgKG1hdGhlbWF0aWNzKSIsCiAgdHJlYXRtZW50ID0gICAgIkEgQXBwbGljYXRpb247IFQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7Q2h1OjE5NzY6Q0FQLAogIGF1dGhvciA9ICAgICAgICJXZXNsZXkgVy4gQ2h1IGFuZCBIb2xnZXIgT3BkZXJiZWNrIiwKICB0aXRsZSA9ICAgICAgICAiQ29ycmlnZW5kdW06IHtgYEFuYWx5c2lzIG9mIHRoZSBQRkYgcmVwbGFjZW1lbnQgYWxnb3JpdGhtIHZpYSBhIHNlbWktTWFya292IG1vZGVsJyd9IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE5IiwKICBudW1iZXIgPSAgICAgICAiOSIsCiAgbW9udGggPSAgICAgICAgc2VwLAogIHllYXIgPSAgICAgICAgICIxOTc2IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNTI5LjY4QTUwIiwKICBNUm51bWJlciA9ICAgICAiNTUgNjk5OCIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBEZWMgMjYgMTM6MzU6MDcgMTk5NSIsCiAgbm90ZSA9ICAgICAgICAgIlNlZSBcY2l0ZXtDaHU6MTk3NjpBUFJ9LiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCn0KCkBBcnRpY2xle1dlZ2JyZWl0OjE5NzY6Q1JDLAogIGF1dGhvciA9ICAgICAgICJCZW4gV2VnYnJlaXQiLAogIHRpdGxlID0gICAgICAgICJDb3JyaWdlbmR1bTogYGB7RmFzdGVyIFJldHJpZXZhbCBmcm9tIENvbnRleHQgVHJlZXN9JyciLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTkiLAogIG51bWJlciA9ICAgICAgICI5IiwKICBwYWdlcyA9ICAgICAgICAiPz8tLT8/IiwKICBtb250aCA9ICAgICAgICBzZXAsCiAgeWVhciA9ICAgICAgICAgIjE5NzYiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJTYXQgSmFuIDE4IDE1OjMxOjAxIDE5OTciLAogIG5vdGUgPSAgICAgICAgICJTZWUgXGNpdGV7V2VnYnJlaXQ6MTk3NjpGUkN9LiIsCiAga2V5d29yZHMgPSAgICAgImNvbnRleHQgdHJlZXM7IGRhdGEgc3RydWN0dXJlczsgZnJhbWUgcHJvYmxlbTsgdmFyaWFibGUgYmluZGluZ3MiLAogIHh4bm90ZSA9ICAgICAgICJDYW5ub3QgZmluZCB0aGlzIGNvcnJpZ2VuZHVtIGluIDE5NzYtLTE5NzcgaXNzdWVzLCBvciBvbiBDb21wZW5kZXggZGF0YWJhc2UsIG9yIGluIEFDTSBDb21wdXRpbmcgQXJjaGl2ZSBDRC1ST00uPz8iLAp9CgpAQXJ0aWNsZXtXYWRsZXI6MTk3NjpBQVIsCiAgYXV0aG9yID0gICAgICAgIlBoaWxpcCBMLiBXYWRsZXIiLAogIHRpdGxlID0gICAgICAgICJBbmFseXNpcyBvZiBhbiBBbGdvcml0aG0gZm9yIFJlYWwgVGltZSBHYXJiYWdlIENvbGxlY3Rpb24iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTkiLAogIG51bWJlciA9ICAgICAgICI5IiwKICBwYWdlcyA9ICAgICAgICAiNDkxLS01MDAiLAogIG1vbnRoID0gICAgICAgIHNlcCwKICB5ZWFyID0gICAgICAgICAiMTk3NiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4QTUwIiwKICBNUm51bWJlciA9ICAgICAiNTQgMTQ0NzMiLAogIG1ycmV2aWV3ZXIgPSAgICJHZW9yZ2UgSS4gRGF2aWRhIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9Db21waWxlci9nYXJiYWdlLmNvbGxlY3Rpb24uYmliIiwKICBhYnN0cmFjdCA9ICAgICAiTGlzdCBwcm9jZXNzaW5nIHN5c3RlbXMgb2Z0ZW4gdXNlIGEgbWV0aG9kIGNhbGxlZCBnYXJiYWdlIGNvbGxlY3Rpb24gZm9yIHJlY2xhaW1pbmcgdW51c2VkIG1lbW9yeSBzcGFjZS4gQSByZWFsIHRpbWUgZ2FyYmFnZSBjb2xsZWN0aW9uIHN5c3RlbSBhdm9pZHMgc3VzcGVuZGluZyB0aGUgb3BlcmF0aW9ucyBvZiBhIGxpc3QgcHJvY2Vzc29yIGZvciB0aGUgbG9uZyB0aW1lcyB0aGF0IGdhcmJhZ2UgY29sbGVjdGlvbiBub3JtYWxseSByZXF1aXJlcyBieSBwZXJmb3JtaW5nIGdhcmJhZ2UgY29sbGVjdGlvbiBvbiBhIHNlY29uZCBwcm9jZXNzb3IgaW4gcGFyYWxsZWwgd2l0aCBsaXN0IHByb2Nlc3Npbmcgb3BlcmF0aW9ucywgb3Igb24gYSBzaW5nbGUgcHJvY2Vzc29yIHRpbWUtc2hhcmVkIHdpdGggdGhlbS4gQWxnb3JpdGhtcyBmb3IgcmVjb3ZlcmluZyBkaXNjYXJkZWQgbGlzdCBzdHJ1Y3R1cmVzIGluIHRoaXMgbWFubmVyIGFyZSBwcmVzZW50ZWQgYW5kIGFuYWx5emVkIHRvIGRldGVybWluZSBzdWZmaWNpZW50IGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggdGhlIGxpc3QgcHJvY2Vzc29yIG5ldmVyIG5lZWQgdG8gd2FpdCBvbiB0aGUgY29sbGVjdG9yLiBUaGVzZSB0ZWNobmlxdWVzIGFyZSBzaG93biB0byByZXF1aXJlIGF0IG1vc3QgdHdpY2UgYXMgbXVjaCBwcm9jZXNzaW5nIHBvd2VyIGFzIHJlZ3VsYXIgZ2FyYmFnZSBjb2xsZWN0b3JzLCBpZiB0aGV5IGFyZSB1c2VkIGVmZmljaWVudGx5LiBUaGUgYXZlcmFnZSBiZWhhdmlvciBvZiB0aGUgcHJvZ3JhbSBpcyBzaG93biB0byBiZSB2ZXJ5IG5lYXJseSBlcXVhbCB0byB0aGUgd29yc3QtY2FzZSBwZXJmb3JtYW5jZSwgc28gdGhhdCB0aGUgc3VmZmljaWVudCBjb25kaXRpb25zIGFyZSBhbHNvIHN1aXRhYmxlIGZvciBtZWFzdXJpbmcgdGhlIHR5cGljYWwgYmVoYXZpb3Igb2YgdGhlIGFsZ29yaXRobS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNTQwMCAoQW5hbG9ndWUgYW5kIGRpZ2l0YWwgY29tcHV0ZXJzIGFuZCBzeXN0ZW1zKTsgQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb21tZW50ID0gICAgICAiVGhpcyBhbGdvcml0aG0gY29udGFpbnMgYW4gZXJyb3IgdGhhdCBpcyBwb2ludGVkIG91dCBieSBcY2l0ZXtHcmllczoxOTc3OkJQQn0iLAogIGNvcnBzb3VyY2UgPSAgICJTdGFuZm9yZCBVbml2LiwgU3RhbmZvcmQsIENBLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgcHJvZ3JhbW1pbmcgLS0tIFN1YnJvdXRpbmVzOyBjb21wdXRlciBwcm9ncmFtbWluZyBsYW5ndWFnZXMgLS0tIGxpc3A7IGNvbXB1dGVyIHN5c3RlbXMgcHJvZ3JhbW1pbmc7IGRhdGEgcHJvY2Vzc2luZyAtLS0gRGF0YSBTdHJ1Y3R1cmVzOyBkYXRhIHN0cnVjdHVyZTsgZGF0YSBzdHJ1Y3R1cmVzOyBnYXJiYWdlIGNvbGxlY3Rpb247IExpc3A7IGxpc3Q7IGxpc3QgcHJvY2Vzc29yOyBtdWx0aXByb2Nlc3Npbmc7IHBhcmFsbGVsIHByb2Nlc3Npbmc7IHByb2Nlc3Npbmc7IHJlYWwgdGltZTsgc3RvcmFnZSBtYW5hZ2VtZW50OyBzdG9yYWdlIHJlY2xhbWF0aW9uOyB0aW1lIGNoYW5nZSIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle1lhcDoxOTc2Ok5VQiwKICBhdXRob3IgPSAgICAgICAiQ2hlZSBLLiBZYXAiLAogIHRpdGxlID0gICAgICAgICJOZXcgVXBwZXIgQm91bmRzIGZvciBTZWxlY3Rpb24iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTkiLAogIG51bWJlciA9ICAgICAgICI5IiwKICBwYWdlcyA9ICAgICAgICAiNTAxLS01MDgiLAogIG1vbnRoID0gICAgICAgIHNlcCwKICB5ZWFyID0gICAgICAgICAiMTk3NiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4QTIwIiwKICBNUm51bWJlciA9ICAgICAiNTQgNjU1OSIsCiAgbXJyZXZpZXdlciA9ICAgIlRob21hcyBHLiBTenltYW5za2kiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiVGhlIHdvcnN0LWNhc2UsIG1pbmltdW0gbnVtYmVyIG9mIGNvbXBhcmlzb25zIGNvbXBsZXhpdHkgVi8vaSAobikgb2YgdGhlIGktdGggc2VsZWN0aW9uIHByb2JsZW0gaXMgY29uc2lkZXJlZC4gQSBuZXcgdXBwZXIgYm91bmQgZm9yIFYvL2kgKG4pIGltcHJvdmVzIHRoZSBib3VuZCBnaXZlbiBieSB0aGUgc3RhbmRhcmQgSGFkaWFuLVNvYmVsIGFsZ29yaXRobSBieSBhIGdlbmVyYWxpemF0aW9uIG9mIHRoZSBLaXJrcGF0cmljay1IYWRpYW4tU29iZWwgYWxnb3JpdGhtLCBhbmQgZXh0ZW5kcyBLaXJrcGF0cmljaydzIG1ldGhvZCB0byBhIG11Y2ggd2lkZXIgcmFuZ2Ugb2YgYXBwbGljYXRpb24uIFRoaXMgZ2VuZXJhbGl6YXRpb24gY29tcGFyZXMgZmF2b3JhYmx5IHdpdGggYSByZWNlbnQgYWxnb3JpdGhtIGJ5IEwuIEh5YWZpbC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDI0MCAoUHJvZ3JhbW1pbmcgYW5kIGFsZ29yaXRobSB0aGVvcnkpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJEZXB0LiBvZiBDb21wdXRlciBTY2kuLCBZYWxlIFVuaXYuLCBOZXcgSGF2ZW4sIENULCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcGFyaXNvbiBwcm9ibGVtczsgY29tcHV0YXRpb25hbCBjb21wbGV4aXR5OyBjb21wdXRlciBtZXRhdGhlb3J5OyBjb25jcmV0ZSBjb21wdXRhdGlvbmFsIGNvbXBsZXhpdHk7IHNlbGVjdGlvbiBwcm9ibGVtOyB1cHBlciBib3VuZHM7IHdvcnN0IGNhc2UgYW5hbHlzaXMiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0xvdWk6MTk3NjpXRFQsCiAgYXV0aG9yID0gICAgICAgIk1pY2hhZWwgQy4gTG91aSIsCiAgdGl0bGUgPSAgICAgICAgIldlaWdodGVkIERlcml2YXRpb24gVHJlZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTkiLAogIG51bWJlciA9ICAgICAgICI5IiwKICBwYWdlcyA9ICAgICAgICAiNTA5LS01MTMiLAogIG1vbnRoID0gICAgICAgIHNlcCwKICB5ZWFyID0gICAgICAgICAiMTk3NiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4QTMwIiwKICBNUm51bWJlciA9ICAgICAiNTQgMTcyNyIsCiAgbXJyZXZpZXdlciA9ICAgIlN0ZXBoZW4gU291bGUiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiVGhlIG5vZGVzIG9mIGEgd2VpZ2h0ZWQgZGVyaXZhdGlvbiB0cmVlIGFyZSBhc3NvY2lhdGVkIHdpdGggd2VpZ2h0aW5nIGZ1bmN0aW9ucyBvdmVyIHRoZSB2b2NhYnVsYXJ5IG9mIGEgY29udGV4dC1mcmVlIGdyYW1tYXIuIEFuIGFsZ29yaXRobSBpcyBwcmVzZW50ZWQgZm9yIGNvbnN0cnVjdGluZyB0aGUgb3B0aW1hbCBkZXJpdmF0aW9uIHRyZWUgaGF2aW5nIHRoZSBzYW1lIHN0cnVjdHVyZSBhcyBhIGdpdmVuIHdlaWdodGVkIGRlcml2YXRpb24gdHJlZS4gSW4gYWRkaXRpb24sIHRoZSBjb3JyZWN0bmVzcyBvZiB0aGUgYWxnb3JpdGhtIGlzIGVzdGFibGlzaGVkLiBUaGUgbWV0aG9kIG1heSBiZSBhcHBsaWVkIHRvIHByb2JsZW1zIGludm9sdmluZyBwcm9iYWJpbGlzdGljIHBhcnNpbmcgb3IgY29tYmluYXRvcmlhbCBvcHRpbWl6YXRpb24uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQyMTAgKEZvcm1hbCBsb2dpYykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMTsgNzIzOyA5MjEiLAogIGNvcnBzb3VyY2UgPSAgICJEZXB0LiBvZiBDb21wdXRlciBTY2kuLCBZYWxlIFVuaXYuLCBOZXcgSGF2ZW4sIENULCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYW1iaWd1aXR5OyBhdXRvbWF0YSB0aGVvcnk7IGNvbWJpbmF0b3JpYWwgb3B0aW1pc2F0aW9uOyBjb21wdXRlciBwcm9ncmFtbWluZyAtLS0gU3Vicm91dGluZXM7IGNvbnRleHQgZnJlZSBncmFtbWFyczsgY29udGV4dC1mcmVlIGdyYW1tYXJzOyBkZXJpdmF0aW9uIHRyZWVzOyBtYXRoZW1hdGljYWwgcHJvZ3JhbW1pbmc7IHBhcnNlIHRyZWU7IHBhcnNpbmc7IHByb2JhYmlsaXN0aWM7IHN0cnVjdHVyYWw7IHRyZWVzIChtYXRoZW1hdGljcyk7IHdlaWdodGluZyBmdW5jdGlvbnMiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle1dhbHRlcjoxOTc2OlJBQywKICBhdXRob3IgPSAgICAgICAiS2VubmV0aCBHLiBXYWx0ZXIiLAogIHRpdGxlID0gICAgICAgICJSZWN1cnNpb24gQW5hbHlzaXMgZm9yIENvbXBpbGVyIE9wdGltaXphdGlvbiIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOSIsCiAgbnVtYmVyID0gICAgICAgIjkiLAogIHBhZ2VzID0gICAgICAgICI1MTQtLTUxNiIsCiAgbW9udGggPSAgICAgICAgc2VwLAogIHllYXIgPSAgICAgICAgICIxOTc2IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkEgcmVsYXRpdmVseSBzaW1wbGUgbWV0aG9kIGZvciB0aGUgZGV0ZWN0aW9uIG9mIHJlY3Vyc2l2ZSB1c2Ugb2YgcHJvY2VkdXJlcyBpcyBwcmVzZW50ZWQgZm9yIHVzZSBpbiBjb21waWxlciBvcHRpbWl6YXRpb24uIEltcGxlbWVudGF0aW9uIGNvbnNpZGVyYXRpb25zIGFyZSBkaXNjdXNzZWQsIGFuZCBhIG1vZGlmaWNhdGlvbiBvZiB0aGUgYWxnb3JpdGhtIGlzIGdpdmVuIHRvIGZ1cnRoZXIgaW1wcm92ZSBvcHRpbWl6YXRpb24uIFRoaXMgYW5hbHlzaXMgY2FuIGFsc28gYmUgdXNlZCB0byBkZXRlcm1pbmUgd2hhdCBwb3NzaWJsZSBzdWJzZXQgb2YgdmFsdWVzIGNvdWxkIGJlIGFzc3VtZWQgYnkgdmFyaWFibGVzIHdoaWNoIGNhbiBvbmx5IHRha2Ugb24gYSByZWxhdGl2ZWx5IHNtYWxsIGRpc2NyZXRlIHNldCBvZiB2YWx1ZXMuIFRoZSBtb3N0IGNvbW1vbiBhcmUgcGFyYW1ldGVycyBvZiB2YXJpYWJsZXMgYXNzdW1pbmcgdmFsdWVzIG9mIGxhYmVsLCBwcm9jZWR1cmUsIG9yIFBhc2NhbCdzIGVudW1lcmF0ZWQgdHlwZS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDI5MCAoT3RoZXIgY29tcHV0ZXIgdGhlb3J5KTsgQzYxNTBDIChDb21waWxlcnMsIGludGVycHJldGVycyBhbmQgb3RoZXIgcHJvY2Vzc29ycykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIkNvbXB1dGluZyBhbmQgSW5mb3JtYXRpb24gU2NpLiBEZXB0LiwgQ2FzZSBXZXN0ZXJuIFJlc2VydmUgVW5pdi4sIENsZXZlbGFuZCwgT0gsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21waWxlciBvcHRpbWlzYXRpb247IGNvbXB1dGVyIG9wZXJhdGluZyBzeXN0ZW1zOyBub25yZWN1cnNpb247IG9wdGltaXNhdGlvbjsgcHJvZ3JhbSBjb21waWxlcnM7IHJlY3Vyc2lvbiBhbmFseXNpczsgcmVsYXRpdmUiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbDsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtCaXRuZXI6MTk3NjpFR0IsCiAgYXV0aG9yID0gICAgICAgIkphbWVzIFIuIEJpdG5lciBhbmQgR2lkZW9uIEVocmxpY2ggYW5kIEVkd2FyZCBNLiBSZWluZ29sZCIsCiAgdGl0bGUgPSAgICAgICAgIkVmZmljaWVudCBHZW5lcmF0aW9uIG9mIHRoZSBCaW5hcnkgUmVmbGVjdGVkIHtHcmF5fSBDb2RlIGFuZCBJdHMgQXBwbGljYXRpb25zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE5IiwKICBudW1iZXIgPSAgICAgICAiOSIsCiAgcGFnZXMgPSAgICAgICAgIjUxNy0tNTIxIiwKICBtb250aCA9ICAgICAgICBzZXAsCiAgeWVhciA9ICAgICAgICAgIjE5NzYiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI5NEExMCAoNjhBMTApIiwKICBNUm51bWJlciA9ICAgICAiNTQgMTIzNDkiLAogIG1ycmV2aWV3ZXIgPSAgICJCLiBELiBTaGFybWEiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiQWxnb3JpdGhtcyBhcmUgcHJlc2VudGVkIHRvIGdlbmVyYXRlIHRoZSBuLWJpdCBiaW5hcnkgcmVmbGVjdGVkIEdyYXkgY29kZSBhbmQgY29kZXdvcmRzIG9mIGZpeGVkIHdlaWdodCBpbiB0aGF0IGNvZGUuIEJvdGggYWxnb3JpdGhtcyBhcmUgZWZmaWNpZW50IGluIHRoYXQgdGhlIHRpbWUgcmVxdWlyZWQgdG8gZ2VuZXJhdGUgdGhlIG5leHQgZWxlbWVudCBmcm9tIHRoZSBjdXJyZW50IG9uZSBpcyBjb25zdGFudC4gQXBwbGljYXRpb25zIHRvIHRoZSBnZW5lcmF0aW9uIG9mIHRoZSBjb21iaW5hdGlvbnMgb2YgbiB0aGluZ3MgdGFrZW4gayBhdCBhIHRpbWUsIHRoZSBjb21wb3NpdGlvbnMgb2YgaW50ZWdlcnMsIGFuZCB0aGUgcGVybXV0YXRpb25zIG9mIGEgbXVsdGlzZXQgYXJlIGRpc2N1c3NlZC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDI0MCAoUHJvZ3JhbW1pbmcgYW5kIGFsZ29yaXRobSB0aGVvcnkpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjM7IDkyMSIsCiAgY29ycHNvdXJjZSA9ICAgIkRlcHQuIG9mIENvbXB1dGVyIFNjaS4sIFVuaXYuIG9mIElsbGlub2lzLCBVcmJhbmEtQ2hhbXBhaWduLCBJTCwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFsZ29yaXRobSB0aGVvcnk7IGNvZGVzLCBzeW1ib2xpYzsgY29tYmluYXRpb25zOyBjb21iaW5hdG9yaWFsIGNvbXB1dGluZzsgY29tcG9zaXRpb25zOyBjb21wdXRlciBwcm9ncmFtbWluZyAtLS0gU3Vicm91dGluZXM7IGZpeGVkIHdlaWdodDsgR3JheSBjb2RlOyBtYXRoZW1hdGljYWwgdGVjaG5pcXVlczsgc3Vic2V0cyIsCiAgdHJlYXRtZW50ID0gICAgIkEgQXBwbGljYXRpb247IFQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7RGV1dHNjaDoxOTc2OkVJQSwKICBhdXRob3IgPSAgICAgICAiTC4gUGV0ZXIgRGV1dHNjaCBhbmQgRGFuaWVsIEcuIEJvYnJvdyIsCiAgdGl0bGUgPSAgICAgICAgIkFuIEVmZmljaWVudCwgSW5jcmVtZW50YWwsIEF1dG9tYXRpYyBHYXJiYWdlIENvbGxlY3RvciIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOSIsCiAgbnVtYmVyID0gICAgICAgIjkiLAogIHBhZ2VzID0gICAgICAgICI1MjItLTUyNiIsCiAgbW9udGggPSAgICAgICAgc2VwLAogIHllYXIgPSAgICAgICAgICIxOTc2IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9PYmplY3QvTmllcnN0cmFzei5iaWIiLAogIGFic3RyYWN0ID0gICAgICJUaGlzIHBhcGVyIGRlc2NyaWJlcyBhIG5ldyB3YXkgb2Ygc29sdmluZyB0aGUgc3RvcmFnZSByZWNsYW1hdGlvbiBwcm9ibGVtIGZvciBhIHN5c3RlbSBzdWNoIGFzIExpc3AgdGhhdCBhbGxvY2F0ZXMgc3RvcmFnZSBhdXRvbWF0aWNhbGx5IGZyb20gYSBoZWFwLCBhbmQgZG9lcyBub3QgcmVxdWlyZSB0aGUgcHJvZ3JhbW1lciB0byBnaXZlIGFueSBpbmRpY2F0aW9uIHRoYXQgcGFydGljdWxhciBpdGVtcyBhcmUgbm8gbG9uZ2VyIHVzZWZ1bCBvciBhY2Nlc3NpYmxlLiBBIHJlZmVyZW5jZSBjb3VudCBzY2hlbWUgZm9yIHJlY2xhaW1pbmcgbm9uLXNlbGYtcmVmZXJlbnRpYWwgc3RydWN0dXJlcywgYW5kIGEgbGluZWFyaXppbmcsIGNvbXBhY3RpbmcsIGNvcHlpbmcgc2NoZW1lIHRvIHJlb3JnYW5pemUgYWxsIHN0b3JhZ2UgYXQgdGhlIHVzZXJzIGRpc2NyZXRpb24gYXJlIHByb3Bvc2VkLiBUaGUgYWxnb3JpdGhtcyBhcmUgZGVzaWduZWQgdG8gd29yayB3ZWxsIGluIHN5c3RlbXMgd2hpY2ggdXNlIG11bHRpcGxlIGxldmVscyBvZiBzdG9yYWdlLCBhbmQgbGFyZ2UgdmlydHVhbCBhZGRyZXNzIHNwYWNlLiBUaGV5IGRlcGVuZCBvbiB0aGUgZmFjdCB0aGF0IG1vc3QgY2VsbHMgYXJlIHJlZmVyZW5jZWQgZXhhY3RseSBvbmNlLCBhbmQgdGhhdCByZWZlcmVuY2UgY291bnRzIG5lZWQgb25seSBiZSBhY2N1cmF0ZSB3aGVuIHN0b3JhZ2UgaXMgYWJvdXQgdG8gYmUgcmVjbGFpbWVkLiBBIHRyYW5zYWN0aW9uIGZpbGUgc3RvcmVzIGNoYW5nZXMgdG8gcmVmZXJlbmNlIGNvdW50cywgYW5kIGEgbXVsdGlwbGUgcmVmZXJlbmNlIHRhYmxlIHN0b3JlcyB0aGUgY291bnQgZm9yIGl0ZW1zIHdoaWNoIGFyZSByZWZlcmVuY2VkIG1vcmUgdGhhbiBvbmNlLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbikiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29tbWVudCA9ICAgICAgIlRyYW5zYWN0aW9uLWJhc2VkIHJlZmVyZW5jZSBjb3VudGluZzsgaW50ZXJlc3RpbmcgYmxlbmQgb2YgbWFya2luZyBhbmQgcmVmLWNvdW50aW5nIGNvbGxlY3Rpb24iLAogIGNvcnBzb3VyY2UgPSAgICJYZXJveCBQYWxvIEFsdG8gUmVzLiBDZW50ZXIsIFBhbG8gQWx0bywgQ0EsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhZGRyZXNzIHNwYWNlOyBjb21wdXRlciBvcGVyYXRpbmcgc3lzdGVtcyAtLS0gU3RvcmFnZSBBbGxvY2F0aW9uOyBjb21wdXRlciBwcm9ncmFtbWluZzsgY29tcHV0ZXIgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzIC0tLSBsaXNwOyBnYXJiYWdlIGNvbGxlY3RvcjsgTGlzcDsgbXVsdGlwbGUgcmVmZXJlbmNlOyBvbGl0IG1lbW9yeSBsaXNwOyBzdG9yYWdlIG1hbmFnZW1lbnQ7IHN0b3JhZ2UgcmVjbGFtYXRpb247IHRhYmxlIHN0b3JlczsgdHJhbnNhY3Rpb24gZmlsZSBzdG9yZXM7IHZpcnR1YWwiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbDsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtXZWdicmVpdDoxOTc2OkZSQywKICBhdXRob3IgPSAgICAgICAiQmVuIFdlZ2JyZWl0IiwKICB0aXRsZSA9ICAgICAgICAiRmFzdGVyIFJldHJpZXZhbCBmcm9tIENvbnRleHQgVHJlZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTkiLAogIG51bWJlciA9ICAgICAgICI5IiwKICBwYWdlcyA9ICAgICAgICAiNTI2LS01MjkiLAogIG1vbnRoID0gICAgICAgIHNlcCwKICB5ZWFyID0gICAgICAgICAiMTk3NiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIG5vdGUgPSAgICAgICAgICJTZWUgY29ycmlnZW5kdW0gXGNpdGV7V2VnYnJlaXQ6MTk3NjpDUkN9LiIsCiAgYWJzdHJhY3QgPSAgICAgIkNvbnRleHQgdHJlZXMgcHJvdmlkZSBhIGNvbnZlbmllbnQgd2F5IG9mIHN0b3JpbmcgZGF0YSB3aGljaCBpcyB0byBiZSB2aWV3ZWQgYXMgYSBoaWVyYXJjaHkgb2YgY29udGV4dHMuIFRoaXMgbm90ZSBwcmVzZW50cyBhbiBhbGdvcml0aG0gd2hpY2ggaW1wcm92ZXMgb24gcHJldmlvdXMgY29udGV4dCB0cmVlIHJldHJpZXZhbCBhbGdvcml0aG1zLiBJdCBpcyBiYXNlZCBvbiB0aGUgb2JzZXJ2YXRpb24gdGhhdCBpbiB0eXBpY2FsIHVzZXMgY29udGV4dCBjaGFuZ2VzIGFyZSBpbmZyZXF1ZW50IHJlbGF0aXZlIHRvIHJldHJpZXZhbHMsIHNvIHRoYXQgZGF0YSBjYW4gYmUgY2FjaGVkIHRvIHNwZWVkIHVwIHJldHJpZXZhbC4gQSByZXRyaWV2YWwgaXMgc3RhcnRlZCBmcm9tIHRoZSBwb3NpdGlvbiBvZiB0aGUgcHJldmlvdXMgcmV0cmlldmFsIGFuZCBhdXhpbGlhcnkgc3RydWN0dXJlcyBhcmUgYnVpbHQgdXAgdG8gbWFrZSB0aGUgc2VhcmNoIHJhcGlkLiBBbGdvcml0aG1zIGZvciBhZGRpdGlvbiBhbmQgZGVsZXRpb24gb2YgZGF0YSBhbmQgZm9yIGdhcmJhZ2UgY29sbGVjdGlvbiBhcmUgb3V0bGluZWQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQyOTAgKE90aGVyIGNvbXB1dGVyIHRoZW9yeSk7IEM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbikiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlhlcm94IFBhbG8gQWx0byBSZXMuIENlbnRlciwgUGFsbyBBbHRvLCBDQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIHByb2dyYW1taW5nOyBjb250ZXh0IHRyZWU7IGNvbnRleHQgdHJlZXM7IGRhdGEgcHJvY2Vzc2luZyAtLS0gRGF0YSBTdHJ1Y3R1cmVzOyBkYXRhIHN0cnVjdHVyZTsgZGF0YSBzdHJ1Y3R1cmVzOyBmcmFtZSBwcm9ibGVtOyBnYXJiYWdlIGNvbGxlY3Rpb247IHJldHJpZXZhbCBhbGdvcml0aG1zOyBzdG9yYWdlIG1hbmFnZW1lbnQ7IHRyZWVzIChtYXRoZW1hdGljcyk7IHZhcmlhYmxlIGJpbmRpbmdzIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtCbGlubjoxOTc2OlRSQywKICBhdXRob3IgPSAgICAgICAiSmFtZXMgRi4gQmxpbm4gYW5kIE1hcnRpbiBFLiBOZXdlbGwiLAogIHRpdGxlID0gICAgICAgICJUZXh0dXJlIGFuZCBSZWZsZWN0aW9uIGluIENvbXB1dGVyIEdlbmVyYXRlZCBJbWFnZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTkiLAogIG51bWJlciA9ICAgICAgICIxMCIsCiAgcGFnZXMgPSAgICAgICAgIjU0Mi0tNTQ3IiwKICBtb250aCA9ICAgICAgICBvY3QsCiAgeWVhciA9ICAgICAgICAgIjE5NzYiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0dyYXBoaWNzL2ltYWdlci9pbWFnZXIuNzYuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiSW4gMTk3NCBFLiBBLiBDYXRtdWxsIGRldmVsb3BlZCBhIG5ldyBhbGdvcml0aG0gZm9yIHJlbmRlcmluZyBpbWFnZXMgb2YgYml2YXJpYXRlIHN1cmZhY2UgcGF0Y2hlcy4gVGhpcyBwYXBlciBkZXNjcmliZXMgZXh0ZW5zaW9ucyBvZiB0aGlzIGFsZ29yaXRobSBpbiB0aGUgYXJlYXMgb2YgdGV4dHVyZSBzaW11bGF0aW9uIGFuZCBsaWdodGluZyBtb2RlbHMuIFRoZSBwYXJhbWV0cml6YXRpb24gb2YgYSBwYXRjaCBkZWZpbmVzIGEgY29vcmRpbmF0ZSBzeXN0ZW0gd2hpY2ggaXMgdXNlZCBhcyBhIGtleSBmb3IgbWFwcGluZyBwYXR0ZXJucyBvbnRvIHRoZSBzdXJmYWNlLiBUaGUgaW50ZW5zaXR5IG9mIHRoZSBwYXR0ZXJuIGF0IGVhY2ggcGljdHVyZSBlbGVtZW50IGlzIGNvbXB1dGVkIGFzIGEgd2VpZ2h0ZWQgYXZlcmFnZSBvZiByZWdpb25zIG9mIHRoZSBwYXR0ZXJuIGRlZmluaXRpb24gZnVuY3Rpb24uIFRoZSBzaGFwZSBhbmQgc2l6ZSBvZiB0aGlzIHdlaWdodGluZyBmdW5jdGlvbiBhcmUgY2hvc2VuIHVzaW5nIGRpZ2l0YWwgc2lnbmFsIHByb2Nlc3NpbmcgdGhlb3J5LiBUaGUgcGF0Y2ggcmVuZGVyaW5nIGFsZ29yaXRobSBhbGxvd3MgYWNjdXJhdGUgY29tcHV0YXRpb24gb2YgdGhlIHN1cmZhY2Ugbm9ybWFsIHRvIHRoZSBwYXRjaCBhdCBlYWNoIHBpY3R1cmUgZWxlbWVudCwgcGVybWl0dGluZyB0aGUgc2ltdWxhdGlvbiBvZiBtaXJyb3IgcmVmbGVjdGlvbnMuIFNldmVyYWwgZXhhbXBsZXMgb2YgaW1hZ2VzIHN5bnRoZXNpemVkIHVzaW5nIHRoZXNlIG5ldyB0ZWNobmlxdWVzIGFyZSBpbmNsdWRlZC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGFubm90ZSA9ICAgICAgICJlYXJseSBwYXBlciBvbiB0ZXh0dXJlIG1hcHBpbmcsIGRpc2N1c3NlcyBzcGhlcmljYWwgc2t5IHRleHR1cmVzIiwKICBjbGFzc2NvZGVzID0gICAiQzU1NDAgKFRlcm1pbmFscyBhbmQgZ3JhcGhpYyBkaXNwbGF5cyk7IEM2MTMwQiAoR3JhcGhpY3MgdGVjaG5pcXVlcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIG9mIFV0YWgsIFNhbHQgTGFrZSBDaXR5LCBVVCwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgIkNBQ007IGNvbXB1dGVyIGdyYXBoaWNzOyBjb21wdXRlcmlzZWQgcGljdHVyZSBwcm9jZXNzaW5nOyBncmFwaGljIGRpc3BsYXk7IGhpZGRlbiBzdXJmYWNlIHJlbW92YWw7IGltYWdlIHByb2Nlc3Npbmc7IHJlZmxlY3Rpb24gb2YgbGlnaHQ7IHNoYWRpbmc7IHRleHR1cmUgZW52aXJvbm1lbnQ7IHRleHR1cmUgbWFwcGluZzsgdGV4dHVyZSBzaW11bGF0aW9uIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgUCBQcmFjdGljYWw7IFQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7Q2xhcms6MTk3NjpIR00sCiAgYXV0aG9yID0gICAgICAgIkphbWVzIEguIENsYXJrIiwKICB0aXRsZSA9ICAgICAgICAiSGllcmFyY2hpY2FsIEdlb21ldHJpYyBNb2RlbHMgZm9yIFZpc2libGUgU3VyZmFjZSBBbGdvcml0aG1zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE5IiwKICBudW1iZXIgPSAgICAgICAiMTAiLAogIHBhZ2VzID0gICAgICAgICI1NDctLTU1NCIsCiAgbW9udGggPSAgICAgICAgb2N0LAogIHllYXIgPSAgICAgICAgICIxOTc2IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9HcmFwaGljcy9pbWFnZXIvaW1hZ2VyLjc2LmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIkJ5IHVzaW5nIGFuIGV4dGVuc2lvbiBvZiB0cmFkaXRpb25hbCBzdHJ1Y3R1cmUgaW5mb3JtYXRpb24sIG9yIGEgZ2VvbWV0cmljIGhpZXJhcmNoeSwgZml2ZSBzaWduaWZpY2FudCBpbXByb3ZlbWVudHMgdG8gY3VycmVudCB0ZWNobmlxdWVzIG9mIGNvbXB1dGVyIHBpY3R1cmUgcHJvZHVjdGlvbiBhcmUgcG9zc2libGUuIEZpcnN0LCB0aGUgcmFuZ2Ugb2YgY29tcGxleGl0eSBvZiBhbiBlbnZpcm9ubWVudCBpcyBncmVhdGx5IGluY3JlYXNlZCB3aGlsZSB0aGUgdmlzaWJsZSBjb21wbGV4aXR5IG9mIGFueSBnaXZlbiBzY2VuZSBpcyBrZXB0IHdpdGhpbiBhIGZpeGVkIHVwcGVyIGxpbWl0LiBTZWNvbmQsIGEgbWVhbmluZ2Z1bCB3YXkgaXMgcHJvdmlkZWQgdG8gdmFyeSB0aGUgYW1vdW50IG9mIGRldGFpbCBwcmVzZW50ZWQgaW4gYSBzY2VuZS4gVGhpcmQsIGBgY2xpcHBpbmcnJyBiZWNvbWVzIGEgdmVyeSBmYXN0IGxvZ2FyaXRobWljIHNlYXJjaCBmb3IgdGhlIHJlc29sdmFibGUgcGFydHMgb2YgdGhlIGVudmlyb25tZW50IHdpdGhpbiB0aGUgZmllbGQgb2Ygdmlldy4gRm91cnRoLCBmcmFtZSB0byBmcmFtZSBjb2hlcmVuY2UgYW5kIGNsaXBwaW5nIGRlZmluZSBhIGdyYXBoaWNhbCBgYHdvcmtpbmcgc2V0LCcnIG9yIGZyYWN0aW9uIG9mIHRoZSB0b3RhbCBzdHJ1Y3R1cmUgdGhhdCBzaG91bGQgYmUgcHJlc2VudCBpbiBwcmltYXJ5IHN0b3JlIGZvciBpbW1lZGlhdGUgYWNjZXNzIGJ5IHRoZSB2aXNpYmxlIHN1cmZhY2UgYWxnb3JpdGhtLiBGaW5hbGx5LCB0aGUgZ2VvbWV0cmljIHN0cnVjdHVyZSBzdWdnZXN0cyBhIHJlY3Vyc2l2ZSBkZXNjZW50LCB2aXNpYmxlIHN1cmZhY2UgYWxnb3JpdGhtIGluIHdoaWNoIHRoZSBjb21wdXRhdGlvbiB0aW1lIHBvdGVudGlhbGx5IGdyb3dzIGxpbmVhcmx5IHdpdGggdGhlIHZpc2libGUgY29tcGxleGl0eSBvZiB0aGUgc2NlbmUuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzU1NDAgKFRlcm1pbmFscyBhbmQgZ3JhcGhpYyBkaXNwbGF5cyk7IEM2MTMwQiAoR3JhcGhpY3MgdGVjaG5pcXVlcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMzsgOTIxIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gb2YgQ2FsaWZvcm5pYSwgU2FudGEgQ3J1eiwgQ0EsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhbGdvcml0aG1zOyBjb21wdXRlciBncmFwaGljczsgZ2VvbWV0cmljIG1vZGVsczsgaGlkZGVuIHN1cmZhY2U7IGhpZXJhcmNoaWNhbCBkYXRhIHN0cnVjdHVyZXM7IGltYWdlIHByb2Nlc3Npbmc7IG1hdGhlbWF0aWNhbCB0ZWNobmlxdWVzIC0tLSBDb21iaW5hdG9yaWFsIE1hdGhlbWF0aWNzOyBtb2RlbDsgdmlzaWJsZSBzdXJmYWNlIGFsZ29yaXRobXMiLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBQIFByYWN0aWNhbDsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtMZXZpbjoxOTc2OlBBRCwKICBhdXRob3IgPSAgICAgICAiSm9zaHVhIFouIExldmluIiwKICB0aXRsZSA9ICAgICAgICAiQSBQYXJhbWV0cmljIEFsZ29yaXRobSBmb3IgRHJhd2luZyBQaWN0dXJlcyBvZiBTb2xpZCBPYmplY3RzIENvbXBvc2VkIG9mIFF1YWRyaWMgU3VyZmFjZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTkiLAogIG51bWJlciA9ICAgICAgICIxMCIsCiAgcGFnZXMgPSAgICAgICAgIjU1NS0tNTYzIiwKICBtb250aCA9ICAgICAgICBvY3QsCiAgeWVhciA9ICAgICAgICAgIjE5NzYiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2OEExMCIsCiAgTVJudW1iZXIgPSAgICAgIjU1IDEzODY3IiwKICBtcnJldmlld2VyID0gICAiV29sZmdhbmcgQm9obSIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvR3JhcGhpY3MvZ3JhcGhpY3MuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiQW4gYWxnb3JpdGhtIGZvciBkcmF3aW5nIHBpY3R1cmVzIG9mIHRocmVlLWRpbWVuc2lvbmFsIG9iamVjdHMsIHdpdGggc3VyZmFjZXMgbWFkZSB1cCBvZiBwYXRjaGVzIG9mIHF1YWRyaWMgc3VyZmFjZXMsIGlzIGRlc2NyaWJlZC4gVGhlIGVtcGhhc2lzIG9mIHRoaXMgYWxnb3JpdGhtIGlzIG9uIGNhbGN1bGF0aW5nIHRoZSBpbnRlcnNlY3Rpb25zIG9mIHF1YWRyaWMgc3VyZmFjZXMuIEEgcGFyYW1ldGVyaXphdGlvbiBzY2hlbWUgaXMgdXNlZC4gRWFjaCBxdWFkcmljIHN1cmZhY2UgaW50ZXJzZWN0aW9uIGN1cnZlIChRU0lDKSBpcyByZXByZXNlbnRlZCBhcyBhIHNldCBvZiBjb2VmZmljaWVudHMgYW5kIHBhcmFtZXRlciBsaW1pdHMuIEVhY2ggdmFsdWUgb2YgdGhlIHBhcmFtZXRlciByZXByZXNlbnRzIGF0IG1vc3QgdHdvIHBvaW50cywgYW5kIHRoZXNlIG1heSBlYXNpbHkgYmUgZGlzdGluZ3Vpc2hlZC4gVGhpcyBzY2hlbWUgY2FuIGZpbmQgdGhlIGNvb3JkaW5hdGVzIG9mIHBvaW50cyBvZiBldmVuIHF1YXJ0aWMgKGZvdXJ0aC1vcmRlcikgaW50ZXJzZWN0aW9uIGN1cnZlcywgdXNpbmcgZXF1YXRpb25zIG9mIG5vIG1vcmUgdGhhbiBzZWNvbmQgb3JkZXIuIE1ldGhvZHMgb2YgcGFyYW1ldGVyaXphdGlvbiBmb3IgZWFjaCB0eXBlIG9mIFFTSUMgYXJlIGRpc2N1c3NlZCwgYXMgd2VsbCBhcyBzdXJmYWNlIGJvdW5kaW5nIGFuZCBoaWRkZW4gc3VyZmFjZSByZW1vdmFsLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM1NTQwIChUZXJtaW5hbHMgYW5kIGdyYXBoaWMgZGlzcGxheXMpOyBDNjEzMEIgKEdyYXBoaWNzIHRlY2huaXF1ZXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjM7IDkyMSIsCiAgY29ycHNvdXJjZSA9ICAgIk5ldyBZb3JrIFVuaXYuLCBOZXcgWW9yaywgTlksIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhbGdvcml0aG1zOyBjb21wdXRlciBncmFwaGljczsgY3VydmVzIGFuZCBzdXJmYWNlczsgZ3JhcGhpY3M7IGhpZGRlbjsgaW50ZXJzZWN0aW9uczsgbWF0aGVtYXRpY2FsIHRlY2huaXF1ZXMgLS0tIEZ1bmN0aW9uIEV2YWx1YXRpb247IHBhcmFtZXRyaWMgYWxnb3JpdGhtOyBxdWFkcmljIHN1cmZhY2UgaW50ZXJzZWN0aW9uIGN1cnZlOyBxdWFkcmljIHN1cmZhY2VzOyBxdWFkcmljczsgc2NhbmxpbmUgYWxnb3JpdGhtczsgc29saWQgb2JqZWN0czsgc3VyZmFjZSBib3VuZGluZzsgc3VyZmFjZSByZW1vdmFsOyBzdXJmYWNlczsgdGhyZWUgZGltZW5zaW9uYWwiLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBQIFByYWN0aWNhbDsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtCdXJ0bnlrOjE5NzY6SVNULAogIGF1dGhvciA9ICAgICAgICJOLiBCdXJ0bnlrIGFuZCBNLiBXZWluIiwKICB0aXRsZSA9ICAgICAgICAiSW50ZXJhY3RpdmUgU2tlbGV0b24gVGVjaG5pcXVlcyBmb3IgRW5oYW5jaW5nIE1vdGlvbiBEeW5hbWljcyBpbiBLZXkgRnJhbWUgQW5pbWF0aW9uIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE5IiwKICBudW1iZXIgPSAgICAgICAiMTAiLAogIHBhZ2VzID0gICAgICAgICI1NjQtLTU2OSIsCiAgbW9udGggPSAgICAgICAgb2N0LAogIHllYXIgPSAgICAgICAgICIxOTc2IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9HcmFwaGljcy9pbWFnZXIvaW1hZ2VyLjc2LmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIkEgc2lnbmlmaWNhbnQgaW5jcmVhc2UgaW4gdGhlIGNhcGFiaWxpdHkgZm9yIGNvbnRyb2xsaW5nIG1vdGlvbiBkeW5hbWljcyBpbiBrZXkgZnJhbWUgYW5pbWF0aW9uIGlzIGFjaGlldmVkIHRocm91Z2ggc2tlbGV0b24gY29udHJvbC4gVGhpcyB0ZWNobmlxdWUgYWxsb3dzIGFuIGFuaW1hdG9yIHRvIGRldmVsb3AgYSBjb21wbGV4IG1vdGlvbiBzZXF1ZW5jZSBieSBhbmltYXRpbmcgYSBzdGljayBmaWd1cmUgcmVwcmVzZW50YXRpb24gb2YgYW4gaW1hZ2UuIFRoaXMgY29udHJvbCBzZXF1ZW5jZSBpcyB0aGVuIHVzZWQgdG8gZHJpdmUgYW4gaW1hZ2Ugc2VxdWVuY2UgdGhyb3VnaCB0aGUgc2FtZSBtb3ZlbWVudC4gXHBhciBUaGUgc2ltcGxpY2l0eSBvZiB0aGUgc3RpY2sgZmlndXJlIGltYWdlIGVuY291cmFnZXMgYSBoaWdoIGxldmVsIG9mIGludGVyYWN0aW9uIGR1cmluZyB0aGUgZGVzaWduIHN0YWdlLiBJdHMgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBiYXNpYyBrZXkgZnJhbWUgYW5pbWF0aW9uIHRlY2huaXF1ZSBwZXJtaXRzIHNrZWxldG9uIGNvbnRyb2wgdG8gYmUgYXBwbGllZCBzZWxlY3RpdmVseSB0byBvbmx5IHRob3NlIGNvbXBvbmVudHMgb2YgYSBjb21wb3NpdGUgaW1hZ2Ugc2VxdWVuY2UgdGhhdCByZXF1aXJlIGVuaGFuY2VtZW50LiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM1NTQwIChUZXJtaW5hbHMgYW5kIGdyYXBoaWMgZGlzcGxheXMpOyBDNjEzMEIgKEdyYXBoaWNzIHRlY2huaXF1ZXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjM7IDc0MiIsCiAgY29ycHNvdXJjZSA9ICAgIk5hdC4gUmVzLiBDb3VuY2lsIG9mIENhbmFkYSwgT3R0YXdhLCBPbnQuLCBDYW5hZGEiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgZ2VuZXJhdGVkIGFuaW1hdGlvbjsgY29tcHV0ZXIgZ3JhcGhpY3M7IGNvbXB1dGVyaXNlZCBwaWN0dXJlIHByb2Nlc3Npbmc7IGZpZ3VyZSBhbmltYXRpb247IGltYWdlIHByb2Nlc3Npbmc7IGludGVyYWN0aXZlIGdyYXBoaWNzOyBpbnRlcmFjdGl2ZSBza2VsZXRvbjsgaW50ZXJhY3RpdmUgc2tlbGV0b24gY29udHJvbDsga2V5IGZyYW1lIGFuaW1hdGlvbjsgbW90aW9uIGFuYWx5c2lzIGFuZCBtb3Rpb24gZHluYW1pY3M7IG1vdGlvbiBwaWN0dXJlcyAtLS0gQW5pbWF0aW9uOyBza2VsZXRvbiBjb250cm9sOyBzdGljazsgc3RpY2sgZmlndXJlIGFuaW1hdGlvbiIsCiAgdHJlYXRtZW50ID0gICAgIkEgQXBwbGljYXRpb247IFAgUHJhY3RpY2FsOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0ZyYW5lOjE5NzY6QkJTLAogIGF1dGhvciA9ICAgICAgICJKYW1lcyBXLiBGcmFuZSIsCiAgdGl0bGUgPSAgICAgICAgIlRoZSB7Qk1EfSBhbmQge0JNRFB9IFNlcmllcyBvZiBTdGF0aXN0aWNhbCBDb21wdXRlciBQcm9ncmFtcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOSIsCiAgbnVtYmVyID0gICAgICAgIjEwIiwKICBwYWdlcyA9ICAgICAgICAiNTcwLS01NzYiLAogIG1vbnRoID0gICAgICAgIG9jdCwKICB5ZWFyID0gICAgICAgICAiMTk3NiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9zaWdncmFwaC83Ni5iaWIiLAogIGFic3RyYWN0ID0gICAgICJUaGUgQk1EIGFuZCBCTURQIHNlcmllcyBhcmUgdGhlIHJlc3VsdHMgb2YgbWV0aG9kb2xvZ2ljYWwgcmVzZWFyY2ggYW5kIHByb2dyYW1taW5nIGVmZm9ydCBhdCB0aGUgVUNMQSBIZWFsdGggU2NpZW5jZXMgQ29tcHV0aW5nIEZhY2lsaXR5IHNpbmNlIDE5NTcuIFRoZSBvcmlnaW5hbCB1c2VycyBvZiB0aGUgQk1EIGFuZCBCTURQIHByb2dyYW1zIHdlcmUgaW50ZW5kZWQgdG8gYmUgcmVzZWFyY2hlcnMgaW4gdGhlIGhlYWx0aCBzY2llbmNlcy4gSG93ZXZlciwgdGhlIHByb2dyYW1zIGhhdmUgYmVlbiB1c2VkIGZvciBhIHdpZGUgdmFyaWV0eSBvZiBiaW9sb2dpY2FsIGFuZCBiZWhhdmlvcmFsIGFwcGxpY2F0aW9ucy4gVGhlIHByb2dyYW1zIGFyZSBhbHNvIHVzZWQgZm9yIHByb2JsZW1zIGluIHRoZSBwaHlzaWNhbCBzY2llbmNlcywgYWx0aG91Z2ggdGhleSBhcmUgbm90IGludGVuZGVkIHRvIHNvbHZlIGhpZ2hseSBpbGwtY29uZGl0aW9uZWQgcHJvYmxlbXMgd2hpY2ggYXJlIHNvbWV0aW1lcyBlbmNvdW50ZXJlZCB0aGVyZS4gQ29udHJvbCBsYW5ndWFnZSwgZ3JhcGhpY3MgY2FwYWJpbGl0aWVzLCBzdGF0aXN0aWNhbCBmZWF0dXJlcywgZGF0YSBtYW5hZ2VtZW50IGFuZCBsaW1pdGF0aW9ucyBhcmUgZGlzY3Vzc2VkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkIwMjQwIChQcm9iYWJpbGl0eSBhbmQgc3RhdGlzdGljcyk7IEMxMTQwIChQcm9iYWJpbGl0eSBhbmQgc3RhdGlzdGljcyk7IEM2MTMwIChEYXRhIGhhbmRsaW5nIHRlY2huaXF1ZXMpOyBDNzMxMCAoTWF0aGVtYXRpY3MgY29tcHV0aW5nKTsgQzczMzAgKEJpb2xvZ3kgYW5kIG1lZGljYWwgY29tcHV0aW5nKTsgQzc4MTAgKFNvY2lhbCBhbmQgYmVoYXZpb3VyYWwgc2NpZW5jZXMgY29tcHV0aW5nKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzOyA5MjIiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBvZiBDYWxpZm9ybmlhLCBMb3MgQW5nZWxlcywgQ0EsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhbmFseXNpczsgYW5hbHlzaXMgb2Y7IGJpb2xvZ3kgY29tcHV0aW5nOyBCTUQ7IEJNRFA7IGNsdXN0ZXIgYW5hbHlzaXM7IGNvbXB1dGluZzsgY29udGluZ2VuY3kgdGFibGVzOyBkYXRhOyBkYXRhIHByb2Nlc3Npbmc7IGRpc2NyaW1pbmFudCBhbmFseXNpczsgZmFjdG9yIGFuYWx5c2lzOyBncmFwaGljczsgbWF0aGVtYXRpY2FsIHN0YXRpc3RpY3MgLS0tIENvbXB1dGVyIEFwcGxpY2F0aW9uczsgb3V0bGluZXM7IHJlZ3Jlc3Npb247IHNvY2lhbCBhbmQgYmVoYXZpb3VyYWwgc2NpZW5jZXM7IHN0YXRpc3RpY2FsIGFuYWx5c2lzOyBzdGF0aXN0aWNhbCBjb21wdXRlciBwcm9ncmFtczsgc3RhdGlzdGljczsgdGltZSBzZXJpZXM7IHZhcmlhbmNlIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtEdW9uZy1LaWVuOjE5NzY6SU1BLAogIGF1dGhvciA9ICAgICAgICJDLiBEdW9uZy1LaWVuIGFuZCBILi1KLiBIb2ZmbWFubiBhbmQgRC4gTXV0aCIsCiAgdGl0bGUgPSAgICAgICAgIkFuIGltcHJvdmVtZW50IHRvIHtNYXJ0aW59J3MgYWxnb3JpdGhtIGZvciBjb21wdXRhdGlvbiBvZiBsaW5lYXIgcHJlY2VkZW5jZSBmdW5jdGlvbnMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTkiLAogIG51bWJlciA9ICAgICAgICIxMCIsCiAgcGFnZXMgPSAgICAgICAgIjU3Ni0tNTc3IiwKICBtb250aCA9ICAgICAgICBvY3QsCiAgeWVhciA9ICAgICAgICAgIjE5NzYiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2OEEzMCIsCiAgTVJudW1iZXIgPSAgICAgIjU0IDkxNzYiLAogIG1ycmV2aWV3ZXIgPSAgICJEYW5pZWwgSi4gUm9zZW5rcmFudHoiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQyMTAgKEZvcm1hbCBsb2dpYykiLAogIGNvcnBzb3VyY2UgPSAgICJUZWNoLiBIb2Noc2NodWxlIERhcm1zdGFkdCwgRGFybXN0YWR0LCBXZXN0IEdlcm1hbnkiLAogIGtleXdvcmRzID0gICAgICJCb29sZWFuOyBCb29sZWFuIGFsZ2VicmE7IGxpbmVhciBwcmVjZWRlbmNlIGZ1bmN0aW9uczsgbWF0cmljZXM7IHN5bnRheCBhbmFseXNpcyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7TW9udGFuZWxsaToxOTc2OlNXTSwKICBhdXRob3IgPSAgICAgICAiUmljaGFyZCBHLiB7TW9udGFuZWxsaSwgSnIufSBhbmQgU2FuZHJhIEEuIE1hbXJhayIsCiAgdGl0bGUgPSAgICAgICAgIlN0YXR1cyBvZiBXb21lbiBhbmQgTWlub3JpdGllcyBpbiBBY2FkZW1pYyBDb21wdXRlciBTY2llbmNlIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE5IiwKICBudW1iZXIgPSAgICAgICAiMTAiLAogIHBhZ2VzID0gICAgICAgICI1NzgtLTU4MSIsCiAgbW9udGggPSAgICAgICAgb2N0LAogIHllYXIgPSAgICAgICAgICIxOTc2IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlRoZSByZXN1bHRzIG9mIGEgc3VydmV5IGNvbmNlcm5pbmcgd29tZW4gYW5kIG1pbm9yaXR5IHN0dWRlbnRzIGFuZCBmYWN1bHR5IGluIGNvbXB1dGVyIHNjaWVuY2UgZHVyaW5nIHRoZSB5ZWFycyAxOTcxIHRvIDE5NzUgYXJlIHByZXNlbnRlZC4gQW5hbHlzaXMgb2YgdGhlIGRhdGEgaW5kaWNhdGVzIHRoYXQgZWZmZWN0aXZlIGFmZmlybWF0aXZlIGFjdGlvbiBwcm9ncmFtcyBmb3IgcmVjcnVpdG1lbnQgaW50byBncmFkdWF0ZSBkZWdyZWUgcHJvZ3JhbXMgYXJlIG5lZWRlZCB0byBlbmxhcmdlIHRoZSBudW1iZXIgb2Ygd29tZW4gYW5kIG1pbm9yaXRpZXMgcXVhbGlmaWVkIGZvciBsYXRlciBlbXBsb3ltZW50IGluIGNvbXB1dGVyIHNjaWVuY2UuIEFsc28sIHBvc3NpYmxlIGRpc2NyaW1pbmF0aW9uIGluIGVtcGxveW1lbnQgb2Ygd29tZW4gYW5kIG1pbm9yaXR5IGdyYWR1YXRlIHN0dWRlbnRzIGlzIHJldmVhbGVkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMwMjIwIChDb21wdXRpbmcgZWR1Y2F0aW9uIGFuZCB0cmFpbmluZykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMzsgOTAxIiwKICBjb3Jwc291cmNlID0gICAiRGVwdC4gb2YgQ29tcHV0ZXIgU2NpLiwgVW5pdi4gb2YgSWxsaW5vaXMsIFVyYmFuYSwgSUwsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhY2FkZW1pYyBlbXBsb3ltZW50OyBhZmZpcm1hdGl2ZSBhY3Rpb247IGNvbXB1dGVyIHByb2dyYW1taW5nOyBjb21wdXRlciBzY2llbmNlOyBjb21wdXRlciBzY2llbmNlIGVkdWNhdGlvbjsgZGF0YSBwcm9jZXNzaW5nOyBkaXNjcmltaW5hdGlvbiBhZ2FpbnN0OyBkaXNjcmltaW5hdGlvbiBhZ2FpbnN0IHdvbWVuOyBlZHVjYXRpb247IGVtcGxveW1lbnQ7IGZhY3VsdHk7IGdyYWR1YXRlIHN0dWRlbnRzOyBtaW5vcml0aWVzIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtSb3NzOjE5NzY6SEhTLAogIGF1dGhvciA9ICAgICAgICJELiBULiBSb3NzIiwKICB0aXRsZSA9ICAgICAgICAiSG9taWxpZXMgZm9yIGh1bWJsZSBzdGFuZGFyZHMgKGNvbXB1dGVyIGFwcGxpY2F0aW9ucykiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTkiLAogIG51bWJlciA9ICAgICAgICIxMSIsCiAgcGFnZXMgPSAgICAgICAgIjU5NS0tNjAwIiwKICBtb250aCA9ICAgICAgICBub3YsCiAgeWVhciA9ICAgICAgICAgIjE5NzYiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzAzMTAgKEVEUCBtYW5hZ2VtZW50KTsgQzcwMDAgKENvbXB1dGVyIGFwcGxpY2F0aW9ucykiLAogIGNvcnBzb3VyY2UgPSAgICJTb2ZUZWNoLiBJbmMuLCBXYWx0aGFtLCBNQSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgYXBwbGljYXRpb25zOyBzdGFuZGFyZHM7IHN5c3RlbXMgbWV0aG9kb2xvZ3kiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0xlZGdhcmQ6MTk3NjpDVUMsCiAgYXV0aG9yID0gICAgICAgIkhlbnJ5IEYuIExlZGdhcmQgYW5kIFdpbGxpYW0gQy4gQ2F2ZSIsCiAgdGl0bGUgPSAgICAgICAgIntDb2JvbH0gVW5kZXIgQ29udHJvbCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOSIsCiAgbnVtYmVyID0gICAgICAgIjExIiwKICBwYWdlcyA9ICAgICAgICAiNjAxLS02MDgiLAogIG1vbnRoID0gICAgICAgIG5vdiwKICB5ZWFyID0gICAgICAgICAiMTk3NiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJBIHNhbXBsZSBzZXQgb2YgQ29ib2wgcHJvZ3JhbW1pbmcgc3RhbmRhcmRzIGlzIG9mZmVyZWQuIFRoZXNlIHN0YW5kYXJkcyBjb25zdHJhaW4gY29kZSB0byBiZSBkZXZlbG9wZWQgaW4gYSBgYHN0cnVjdHVyZWQnJyBmb3JtIGZvciBib3RoIGRhdGEgYW5kIGNvbnRyb2wgc3RydWN0dXJlcy4gVGhleSBkbyBub3QgcmVxdWlyZSBzeW50YXggYmV5b25kIHRoZSBleGlzdGluZyBDb2JvbCBsYW5ndWFnZSBhbmQgaW4gZmFjdCB1dGlsaXplIGEgdHlwaWNhbCBsaW1pdGVkIHN1YnNldCBvZiB0aGUgMTk3NCBBTlMgQ29ib2wgc3RhbmRhcmQuIFRoaXMgYXBwcm9hY2ggaGFzIHJlZHVjZWQgdGhlIGNvc3QgYW5kIHRpbWUgdG8gcHJvZHVjZSBhbmQgbWFpbnRhaW4gbGFyZ2Ugc29mdHdhcmUgc3lzdGVtcy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjExMCAoU3lzdGVtcyBhbmFseXNpcyBhbmQgcHJvZ3JhbW1pbmcpOyBDNjE0MEQgKEhpZ2ggbGV2ZWwgbGFuZ3VhZ2VzKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzOyA5MTIiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBvZiBNYXNzYWNodXNldHRzLCBBbWhlcnN0LCBNQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgIkNPQk9MOyBjb21wdXRlciBwcm9ncmFtbWluZyAtLS0gU3RydWN0dXJlZCBQcm9ncmFtbWluZzsgY29tcHV0ZXIgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzOyBjb21wdXRlciBwcm9ncmFtcyAtLS0gU3RhbmRhcmRpemF0aW9uOyBjb250cm9sIHN0cnVjdHVyZXM7IGRhdGEgc3RydWN0dXJlOyBsaXZlOyBtYW5hZ2VtZW50OyBtdWx0aXBsZSBjdXN0b21lciBlbnZpcm9ubWVudHM7IHByb2dyYW1taW5nIHN0YW5kYXJkczsgc2FtcGxlIHNldDsgc3RhbmRhcmRzOyBzdHJ1Y3R1cmVkIHByb2dyYW1taW5nIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtXaWxjb3g6MTk3NjpESVQsCiAgYXV0aG9yID0gICAgICAgIlRob21hcyBSLiBXaWxjb3ggYW5kIEFsYW4gTS4gRGF2aXMgYW5kIE1pY2hhZWwgSC4gVGluZGFsbCIsCiAgdGl0bGUgPSAgICAgICAgIkRlc2lnbiBhbmQgSW1wbGVtZW50YXRpb24gb2YgYSBUYWJsZSBEcml2ZW4sIEludGVyYWN0aXZlIERpYWdub3N0aWMgUHJvZ3JhbW1pbmcgU3lzdGVtIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE5IiwKICBudW1iZXIgPSAgICAgICAiMTEiLAogIHBhZ2VzID0gICAgICAgICI2MDktLTYxNiIsCiAgbW9udGggPSAgICAgICAgbm92LAogIHllYXIgPSAgICAgICAgICIxOTc2IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkNBUFMgaXMgYSBoaWdobHkgaW50ZXJhY3RpdmUgZGlhZ25vc3RpYyBjb21waWxlclxzbGFzaCBpbnRlcnByZXRlciB0aGF0IGFsbG93cyBiZWdpbm5pbmcgcHJvZ3JhbW1lcnMgdG8gcHJlcGFyZSwgZGVidWcsIGFuZCBleGVjdXRlIGZhaXJseSBzaW1wbGUgcHJvZ3JhbXMgYXQgYSBncmFwaGljcyBkaXNwbGF5IHRlcm1pbmFsLiBDb21wbGV0ZSBzeW50YXggY2hlY2tpbmcgYW5kIG1vc3Qgc2VtYW50aWMgYW5hbHlzaXMgaXMgcGVyZm9ybWVkIGFzIHRoZSBwcm9ncmFtIGlzIGVudGVyZWQgYW5kIGFzIGl0IGlzIHN1YnNlcXVlbnRseSBlZGl0ZWQuIEFuYWx5c2lzIGlzIHBlcmZvcm1lZCBjaGFyYWN0ZXIgYnkgY2hhcmFjdGVyLiBUaGUgbW9zdCByZW1hcmthYmxlIGZlYXR1cmUgb2YgQ0FQUyBpcyBpdHMgYWJpbGl0eSB0byBhdXRvbWF0aWNhbGx5IGRpYWdub3NlIGVycm9ycyBib3RoIGF0IGNvbXBpbGUgdGltZSBhbmQgYXQgcnVuIHRpbWUuIEVycm9ycyBhcmUgbm90IGF1dG9tYXRpY2FsbHkgY29ycmVjdGVkLiBJbnN0ZWFkLCBDQVBTIGludGVyYWN0cyB3aXRoIHRoZSBzdHVkZW50IHRvIGhlbHAgaGltIGZpbmQgdGhlIGNhdXNlIG9mIGhpcyBlcnJvci4gTW9zdCBjb21wb25lbnRzIG9mIENBUFMgYXJlIHRhYmxlIGRyaXZlbiwgYm90aCB0byByZWR1Y2UgdGhlIHNwYWNlIG5lZWRlZCBmb3IgaW1wbGVtZW50YXRpb24gYW5kIHRvIGluY3JlYXNlIHRoZSBmbGV4aWJpbGl0eSBvZiB0aGUgbXVsdGlsaW5ndWFsIHN5c3RlbS4gT3ZlciA1MDAgc3R1ZGVudHMgaGF2ZSB1c2VkIENBUFMgdG8gbGVhcm4gRm9ydHJhbiwgUEwvSSwgb3IgQ29ib2wgaW4gY29uanVuY3Rpb24gd2l0aCBhIGNvbXB1dGVyIGFzc2lzdGVkIGNvdXJzZSBvbiBpbnRyb2R1Y3RvcnkgY29tcHV0ZXIgc2NpZW5jZS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDMDIyMCAoQ29tcHV0aW5nIGVkdWNhdGlvbiBhbmQgdHJhaW5pbmcpOyBDNjExMCAoU3lzdGVtcyBhbmFseXNpcyBhbmQgcHJvZ3JhbW1pbmcpOyBDNjE1MEMgKENvbXBpbGVycywgaW50ZXJwcmV0ZXJzIGFuZCBvdGhlciBwcm9jZXNzb3JzKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIyOyA3MjM7IDkwMSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIG9mIElsbGlub2lzLCBVcmJhbmEtQ2hhbXBhaWduLCBJTCwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNhcHM7IENBUFM7IGNvbXBpbGVyL2ludGVycHJldGVyOyBjb21waWxlcnM7IGNvbXB1dGVyIG9wZXJhdGluZyBzeXN0ZW1zIC0tLSBQcm9ncmFtIENvbXBpbGVyczsgY29tcHV0ZXIgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzIC0tLSBQcm9jZWR1cmUgT3JpZW50YXRpb247IGNvbXB1dGVyIHNjaWVuY2UgZWR1Y2F0aW9uOyBjb21wdXRlciBzeXN0ZW1zLCBkaWdpdGFsOyBkYXRhIHByb2Nlc3NpbmcgLS0tIEVkdWNhdGlvbmFsIEFwcGxpY2F0aW9uczsgZGVzaWduOyBlZHVjYXRpb24gLS0tIENvbXB1dGVyIEFwcGxpY2F0aW9uczsgaW1wbGVtZW50YXRpb247IGludGVyYWN0aXZlIGRpYWdub3N0aWM7IGludGVyYWN0aXZlIHByb2dyYW1taW5nOyBQbGF0byBJVjsgcHJvZ3JhbTsgcHJvZ3JhbSBpbnRlcnByZXRlcnM7IHByb2dyYW1taW5nIHN5c3RlbTsgc3R1ZGVudDsgdGFibGUgZHJpdmVuIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtSdWJpbjoxOTc2OkVURiwKICBhdXRob3IgPSAgICAgICAiRnJhbmsgUnViaW4iLAogIHRpdGxlID0gICAgICAgICJFeHBlcmltZW50cyBpbiBUZXh0IEZpbGUgQ29tcHJlc3Npb24iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTkiLAogIG51bWJlciA9ICAgICAgICIxMSIsCiAgcGFnZXMgPSAgICAgICAgIjYxNy0tNjIzIChvciA2MTctLTYyMj8/KSIsCiAgbW9udGggPSAgICAgICAgbm92LAogIHllYXIgPSAgICAgICAgICIxOTc2IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkEgc3lzdGVtIGZvciB0aGUgY29tcHJlc3Npb24gb2YgZGF0YSBmaWxlcywgdmlld2VkIGFzIHN0cmluZ3Mgb2YgY2hhcmFjdGVycywgaXMgcHJlc2VudGVkLiBccGFyIFRoZSBtZXRob2QgaXMgZ2VuZXJhbCwgYW5kIGFwcGxpZXMgZXF1YWxseSB3ZWxsIHRvIEVuZ2xpc2gsIHRvIFBML0ksIG9yIHRvIGRpZ2l0YWwgZGF0YS4gVGhlIHN5c3RlbSBjb25zaXN0cyBvZiBhbiBlbmNvZGVyLCBhbiBhbmFseXNpcyBwcm9ncmFtLCBhbmQgYSBkZWNvZGVyLiBccGFyIFR3byBhbGdvcml0aG1zIGZvciBlbmNvZGluZyBhIHN0cmluZyBkaWZmZXIgc2xpZ2h0bHkgZnJvbSBlYXJsaWVyIHByb3Bvc2Fscy4gVGhlIGFuYWx5c2lzIHByb2dyYW0gYXR0ZW1wdHMgdG8gZmluZCBhbiBvcHRpbWFsIHNldCBvZiBjb2RlcyBmb3IgcmVwcmVzZW50aW5nIHN1YnN0cmluZ3Mgb2YgdGhlIGZpbGUuIEZvdXIgbmV3IGFsZ29yaXRobXMgZm9yIHRoaXMgb3BlcmF0aW9uIGFyZSBkZXNjcmliZWQgYW5kIGNvbXBhcmVkLiBWYXJpb3VzIHBhcmFtZXRlcnMgaW4gdGhlIGFsZ29yaXRobXMgYXJlIG9wdGltaXplZCB0byBvYnRhaW4gYSBoaWdoIGRlZ3JlZSBvZiBjb21wcmVzc2lvbiBmb3Igc2FtcGxlIHRleHRzLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTMwIChEYXRhIGhhbmRsaW5nIHRlY2huaXF1ZXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJJQk0sIFBvdWdoa2VlcHNpZSwgTlksIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhbmFseXNpcyBwcm9ncmFtOyBjb21wYXJpc29uIG9mIGFsZ29yaXRobXM7IGNvbXB1dGVyIHByb2dyYW1taW5nIC0tLSBTdWJyb3V0aW5lczsgZGF0YSBmaWxlIGNvbXBhY3Rpb247IGRhdGEgcHJvY2Vzc2luZzsgZGVjb2RlcjsgZW5jb2RlcjsgSHVmZm1hbiBjb2RlczsgTi1ncmFtIGVuY29kaW5nOyBzdHJpbmdzIG9mIGNoYXJhY3RlcnM7IHRleHQgY29tcHJlc3Npb247IHRleHQgZWRpdGluZzsgdGV4dCBmaWxlIGNvbXByZXNzaW9uIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWw7IFggRXhwZXJpbWVudGFsIiwKfQoKQEFydGljbGV7RXN3YXJhbjoxOTc2Ok5DUCwKICBhdXRob3IgPSAgICAgICAiSy4gUC4gRXN3YXJhbiBhbmQgSi4gTi4gR3JheSBhbmQgUi4gQS4gTG9yaWUgYW5kIEkuIEwuIFRyYWlnZXIiLAogIHRpdGxlID0gICAgICAgICJUaGUgbm90aW9ucyBvZiBjb25zaXN0ZW5jeSBhbmQgcHJlZGljYXRlIGxvY2tzIGluIGEgZGF0YWJhc2Ugc3lzdGVtIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE5IiwKICBudW1iZXIgPSAgICAgICAiMTEiLAogIHBhZ2VzID0gICAgICAgICI2MjQtLTYzMyIsCiAgbW9udGggPSAgICAgICAgbm92LAogIHllYXIgPSAgICAgICAgICIxOTc2IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjhBNTAiLAogIE1SbnVtYmVyID0gICAgICI1NyAyMDA1IiwKICBtcnJldmlld2VyID0gICAiVy4gVy4gQXJtc3Ryb25nIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EYXRhYmFzZS9XaWVkZXJob2xkLmJpYiBhbmQgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EYXRhYmFzZS9HcmFlZmUuYmliIGFuZCBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0RhdGFiYXNlL1dpZWRlcmhvbGQuYmliIiwKICBub3RlID0gICAgICAgICAiQWxzbyBwdWJsaXNoZWQgaW4vYXM6IElCTSBSZXNlYXJjaCBSZXBvcnQgUkoxNDg3LCBTYW4gSm9zZSwgQ0EsIERlY2VtYmVyLCAxOTc0LiIsCiAgYWJzdHJhY3QgPSAgICAgIkluIGRhdGFiYXNlIHN5c3RlbXMsIHVzZXJzIGFjY2VzcyBzaGFyZWQgZGF0YSB1bmRlciB0aGUgYXNzdW1wdGlvbiB0aGF0IHRoZSBkYXRhIHNhdGlzZmllcyBjZXJ0YWluIGNvbnNpc3RlbmN5IGNvbnN0cmFpbnRzLiBUaGlzIHBhcGVyIGRlZmluZXMgdGhlIGNvbmNlcHRzIG9mIHRyYW5zYWN0aW9uLCBjb25zaXN0ZW5jeSBhbmQgc2NoZWR1bGUgYW5kIHNob3dzIHRoYXQgY29uc2lzdGVuY3kgcmVxdWlyZXMgdGhhdCBhIHRyYW5zYWN0aW9uIGNhbm5vdCByZXF1ZXN0IG5ldyBsb2NrcyBhZnRlciByZWxlYXNpbmcgYSBsb2NrLiBUaGVuIGl0IGlzIGFyZ3VlZCB0aGF0IGEgdHJhbnNhY3Rpb24gbmVlZHMgdG8gbG9jayBhIGxvZ2ljYWwgcmF0aGVyIHRoYW4gYSBwaHlzaWNhbCBzdWJzZXQgb2YgdGhlIGRhdGFiYXNlLiBUaGVzZSBzdWJzZXRzIG1heSBiZSBzcGVjaWZpZWQgYnkgcHJlZGljYXRlcy4gQW4gaW1wbGVtZW50YXRpb24gb2YgcHJlZGljYXRlIGxvY2tzIHdoaWNoIHNhdGlzZmllcyB0aGUgY29uc2lzdGVuY3kgY29uZGl0aW9uIGlzIHN1Z2dlc3RlZC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGFubm90ZSA9ICAgICAgICJJZiB0cmFuc2FjdGlvbnMgYXJlIHdlbGwtZm9ybWVkICh0aGV5IG9idGFpbiBhbmQgcmVsZWFzZSBhbGwgbG9ja3MgcmVxdWlyZWQgdG8gYXZvaWQgY29uZmxpY3RzKSBhbmQgMi1waGFzZSAodGhleSBkb24ndCBvYnRhaW4gbG9ja3MgYWZ0ZXIgaGF2aW5nIHJlbGVhc2VkIG9uZSksIHRoZXkgbWFpbnRhaW4gY29uc2lzdGVuY3kuIE9yaWdpbmFsIDItcGhhc2UgcHJvdG9jb2wuIFNlcmlhbGl6YWJpbGl0eT8gRGVmaW5pdGlvbnMgb2YgdHJhbnNhY3Rpb25zLCBwZXJtaXNzaWJsZSBsb2NraW5nIHNlcXVlbmNlIGluIHRyYW5zYWN0aW9ucywgdGhlIGltcG9ydGFuY2UgYW5kIGNvbXBsZXhpdHkgb2YgcHJlZGljYXRlIGxvY2tzLiBUd28tcGhhc2UgdHJhbnNhY3Rpb25zLiIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbik7IEM3MTAwIChCdXNpbmVzcyBhbmQgYWRtaW5pc3RyYXRpb24pIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjM7IDkxMyIsCiAgY29ycHNvdXJjZSA9ICAgIklCTSBSZXMuIExhYi4sIFNhbiBKb3NlLCBDQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIG9wZXJhdGluZyBzeXN0ZW1zIC0tLSBTY2hlZHVsaW5nOyBjb21wdXRlciBzeXN0ZW1zIHByb2dyYW1taW5nIC0tLSBNdWx0aXByb2Nlc3NpbmcgUHJvZ3JhbXM7IGNvbnNpc3RlbmN5OyBkYXRhIGJhc2Ugc3lzdGVtczsgZGF0YWJhc2UgbWFuYWdlbWVudCBzeXN0ZW1zOyBkYXRhYmFzZSBzeXN0ZW07IHByZWRpY2F0ZSBsb2NrczsgcmVsYXRpb24gZGF0YWJhc2UgSUJNIFNhbiBKb3NlIENBQ007IHNjaGVkdWxlOyBzaGFyZWQgZGF0YTsgdHJhbnNhY3Rpb24iLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle01hcnV5YW1hOjE5NzY6T1JELAogIGF1dGhvciA9ICAgICAgICJLLiBNYXJ1eWFtYSBhbmQgUy4gRS4gU21pdGgiLAogIHRpdGxlID0gICAgICAgICJPcHRpbWFsIFJlb3JnYW5pemF0aW9uIG9mIERpc3RyaWJ1dGVkIFNwYWNlIERpc2sgRmlsZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTkiLAogIG51bWJlciA9ICAgICAgICIxMSIsCiAgcGFnZXMgPSAgICAgICAgIjYzNC0tNjQyIiwKICBtb250aCA9ICAgICAgICBub3YsCiAgeWVhciA9ICAgICAgICAgIjE5NzYiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L09zL3N0b3JhZ2UuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiQSBiYXNpYyBwcm9ibGVtIGluIGRhdGFiYXNlIG1haW50ZW5hbmNlIGlzIHRvIGVzdGFibGlzaCB0aGUgcHJvcGVyIHRyYWRlb2ZmIGJldHdlZW4gcGVyZm9ybWFuY2UsIHN0b3JhZ2UgY29zdHMsIGFuZCByZW9yZ2FuaXphdGlvbiBjb3N0cy4gVGhpcyBwYXBlciBjb25zaWRlcnMgdGhlIG9wdGltdW0gcG9pbnRzIGF0IHdoaWNoIHRvIHJlb3JnYW5pemUgZGF0YWJhc2UuIEEgZGlzayBmaWxlIG9yZ2FuaXphdGlvbiB3aGljaCBhbGxvd3MgZm9yIGRpc3RyaWJ1dGVkIGZyZWUgc3BhY2UgaXMgZGVzY3JpYmVkLiBUaGUgZmlsZSBpcyBjYWxsZWQgYSBEU0RGIChEaXN0cmlidXRlZCBTcGFjZSBEaXNrIEZpbGUpLiBBIGNvc3QgZnVuY3Rpb24gZGVzY3JpYmluZyB0aGUgZXhjZXNzIGNvc3RzIGR1ZSB0byBwaHlzaWNhbCBkaXNvcmdhbml6YXRpb24gaXMgZGVmaW5lZCwgYW5kIHRoaXMgZnVuY3Rpb24gaXMgbWluaW1pemVkIHRvIG9idGFpbiB0aGUgb3B0aW11bSByZW9yZ2FuaXphdGlvbiBwb2ludHMuIE51bWVyaWNhbCBleGFtcGxlcyBiYXNlZCBvbiB0aGUgY2hhcmFjdGVyaXN0aWNzIG9mIGV4aXN0aW5nIGRpc2sgc3RvcmFnZSBkZXZpY2VzIGFyZSBnaXZlbi4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjI7IDcyMzsgOTAxIiwKICBjb3Jwc291cmNlID0gICAiSUJNIFRob21hcyBKLiBXYXRzb24gUmVzLiBDZW50ZXIsIFlvcmt0b3duIEhlaWdodHMsIE5ZLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYWNjZXNzaW5nOyBjb3N0OyBkYXRhIGJhc2Ugc3lzdGVtcyAtLS0gT3B0aW1pemF0aW9uOyBkYXRhIHByb2Nlc3NpbmcgLS0tIEZpbGUgT3JnYW5pemF0aW9uOyBkYXRhIHN0b3JhZ2UsIG1hZ25ldGljOyBkYXRhYmFzZSBvcmdhbml6YXRpb25zOyBkaXNjIGZpbGVzOyBkaXN0cmlidXRlZCBzcGFjZTsgRFNERjsgZmlsZSBvcmdhbmlzYXRpb247IGluZm9ybWF0aW9uIHJldHJpZXZhbCBzeXN0ZW1zOyBpbnNlcnRpb25zOyBtYWduZXRpYyBkaXNjIGFuZCBkcnVtIHN0b3JhZ2U7IG1lbW9yeSBoaWVyYXJjaHk7IHBlcmZvcm1hbmNlOyByZW9yZ2FuaXppbmc7IHVwZGF0ZXMiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0hhbWxldDoxOTc2OkhCTCwKICBhdXRob3IgPSAgICAgICAiUmljaGFyZCBHLiBIYW1sZXQiLAogIHRpdGxlID0gICAgICAgICJIaWdoLUxldmVsIEJpbmRpbmcgd2l0aCBMb3ctTGV2ZWwgTGlua2VycyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIxOSIsCiAgbnVtYmVyID0gICAgICAgIjExIiwKICBwYWdlcyA9ICAgICAgICAiNjQyLS02NDQiLAogIG1vbnRoID0gICAgICAgIG5vdiwKICB5ZWFyID0gICAgICAgICAiMTk3NiIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJBbiBlYXN5IHRvIGltcGxlbWVudCBzY2hlbWUgaXMgZGVzY3JpYmVkIGJ5IHdoaWNoIGEgY29tcGlsZXIgY2FuIGVuZm9yY2UgYWdyZWVtZW50IGJldHdlZW4gY29tcGxleCBkYXRhIHR5cGVzIGluIHNlcGFyYXRlbHkgY29tcGlsZWQgbW9kdWxlcy4gVGhlIHNjaGVtZSBpcyBkZXNpZ25lZCB0byB3b3JrIHdpdGggYW55IGV4aXN0aW5nIGxpbmsgZWRpdG9yIG9yIGxpbmtpbmcgbG9hZGVyLCBubyBtYXR0ZXIgaG93IGRlZmljaWVudC4gT2JzY3VyZSBydW4tdGltZSBlcnJvcnMgY2F1c2VkIGJ5IGluY29uc2lzdGVudCB1c2FnZXMgYXJlIGZvcmVzdGFsbGVkIGJ5IHN0YXRpYyBlcnJvcnMgZGV0ZWN0ZWQgYXQgbGlua2luZyB0aW1lLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTUwQyAoQ29tcGlsZXJzLCBpbnRlcnByZXRlcnMgYW5kIG90aGVyIHByb2Nlc3NvcnMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBvZiBNYXJ5bGFuZCwgQ29sbGVnZSBQYXJrLCBNRCwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFncmVlbWVudDsgY29tcGlsZXI7IGNvbXBsZXggZGF0YSB0eXBlczsgY29tcHV0ZXIgb3BlcmF0aW5nIHN5c3RlbXM7IGNvbXB1dGVyIHByb2dyYW1taW5nIGxhbmd1YWdlczsgaGlnaCBsZXZlbCBiaW5kaW5nOyBsaW5rIGVkaXRvcjsgbG93IGxldmVsIGxpbmtlcnM7IG1vZHVsZXM7IHByb2dyYW0gY29tcGlsZXJzOyBzZXBhcmF0ZWx5IGNvbXBpbGVkIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtTYW1tZXQ6MTk3NjpSUEwsCiAgYXV0aG9yID0gICAgICAgIkplYW4gRS4gU2FtbWV0IiwKICB0aXRsZSA9ICAgICAgICAiUm9zdGVyIG9mIFByb2dyYW1taW5nIExhbmd1YWdlcyBmb3IgMTk3NC0tNzUiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTkiLAogIG51bWJlciA9ICAgICAgICIxMiIsCiAgcGFnZXMgPSAgICAgICAgIjY1NS0tNjY5IiwKICBtb250aCA9ICAgICAgICBkZWMsCiAgeWVhciA9ICAgICAgICAgIjE5NzYiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiVGhpcyByb3N0ZXIgY29udGFpbnMgYSBsaXN0IG9mIDE2NyBjdXJyZW50bHkgZXhpc3RpbmcgaGlnaGVyLWxldmVsIGxhbmd1YWdlcyB3aGljaCBoYXZlIGJlZW4gZGV2ZWxvcGVkIG9yIHJlcG9ydGVkIGluIHRoZSBVbml0ZWQgU3RhdGVzOyBoYXZlIGJlZW4gaW1wbGVtZW50ZWQgb24gYXQgbGVhc3Qgb25lIGdlbmVyYWwtcHVycG9zZSBjb21wdXRlcjsgYW5kIGFyZSBiZWxpZXZlZCB0byBiZSBpbiB1c2UgaW4gdGhlIFVuaXRlZCBTdGF0ZXMgYnkgc29tZW9uZSBvdGhlciB0aGFuIHRoZSBkZXZlbG9wZXIuIEEgcHJvZ3JhbW1pbmcgKCBlcXVhbHMgaGlnaGVyLWxldmVsKSBsYW5ndWFnZSBpcyBkZWZpbmVkIGFzIGEgc2V0IG9mIGNoYXJhY3RlcnMgYW5kIHJ1bGVzIGZvciBjb21iaW5pbmcgdGhlbSB3aGljaCBoYXMgdGhlIGZvbGxvd2luZyBjaGFyYWN0ZXJpc3RpY3M6IHRoZSBsYW5ndWFnZSByZXF1aXJlcyBubyBrbm93bGVkZ2Ugb2YgbWFjaGluZSBjb2RlIGJ5IHRoZSB1c2VyOyB0aGUgbGFuZ3VhZ2UgaXMgc2lnbmlmaWNhbnRseSBpbmRlcGVuZGVudCBvZiBhIHBhcnRpY3VsYXIgY29tcHV0ZXI7IHRoZXJlIGlzIGEgb25lLW1hbnkgdHJhbnNsYXRpb24gb2YgaW5zdHJ1Y3Rpb25zIGZyb20gc291cmNlIGNvZGUgdG8gb2JqZWN0IGNvZGU7IGFuZCB0aGUgbm90YXRpb24gb2YgdGhlIGxhbmd1YWdlIGlzIGZhaXJseSBuYXR1cmFsIHRvIGl0cyBwcm9ibGVtIGFyZWEgYW5kIGlzIG5vdCBhIGZpeGVkIHRhYnVsYXIgZm9ybWF0LiBPZiB0aGUgdG90YWwgb2YgMTY3IGxhbmd1YWdlcywgNzkgYXJlIGluIGNhdGVnb3JpZXM6IG51bWVyaWNhbCBzY2llbnRpZmljLCBidXNpbmVzcyBkYXRhIHByb2Nlc3NpbmcsIGxpc3QgcHJvY2Vzc2luZywgc3RyaW5nIHByb2Nlc3NpbmcsIGZvcm11bGEgbWFuaXB1bGF0aW9uLCBhbmQgbXVsdGlwdXJwb3NlLiBUaGUgcmVtYWluaW5nIDg4IGFyZSBpbiB2YXJpb3VzIHNwZWNpYWxpemVkIGFwcGxpY2F0aW9uIGFyZWFzLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTQwRCAoSGlnaCBsZXZlbCBsYW5ndWFnZXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJJQk0sIENhbWJyaWRnZSwgTUEsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBwcm9ncmFtbWluZzsgY29tcHV0ZXIgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzOyBoaWdoZXIgbGV2ZWwgbGFuZ3VhZ2U7IHByb2dyYW1taW5nIGxhbmd1YWdlcyIsCiAgdHJlYXRtZW50ID0gICAgIkcgR2VuZXJhbCBSZXZpZXc7IFAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7QXJkZW46MTk3NjpDU0UsCiAgYXV0aG9yID0gICAgICAgIkJydWNlIFcuIEFyZGVuIiwKICB0aXRsZSA9ICAgICAgICAiVGhlIENvbXB1dGVyIFNjaWVuY2UgYW5kIEVuZ2luZWVyaW5nIFJlc2VhcmNoIFN0dWR5ICh7Q09TRVJTfSkiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTkiLAogIG51bWJlciA9ICAgICAgICIxMiIsCiAgcGFnZXMgPSAgICAgICAgIjY3MC0tNjczIiwKICBtb250aCA9ICAgICAgICBkZWMsCiAgeWVhciA9ICAgICAgICAgIjE5NzYiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiVGhlIENvbXB1dGVyIFNjaWVuY2UgYW5kIEVuZ2luZWVyaW5nIFJlc2VhcmNoIFN0dWR5IChDT1NFUlMpIGlzIGJyaWVmbHkgZGVzY3JpYmVkLiBUaGUgbW90aXZhdGlvbiwgb3JnYW5pemF0aW9uLCBhbmQgc2NoZWR1bGUgZm9yIHRoaXMgTlNGIHN1cHBvcnRlZCBzdHVkeSBhcmUgZ2l2ZW4uIEZvciBwb3NzaWJsZSBmdXJ0aGVyIHJlZmVyZW5jZSwgdGhlIHN1YmplY3QgYXJlYSBwYW5lbCBjaGFpcm1lbiBhbmQgdGhlIG1lbWJlcnMgb2YgdGhlIFN0ZWVyaW5nIENvbW1pdHRlZSBhcmUgaWRlbnRpZmllZC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDMDMxMCAoRURQIG1hbmFnZW1lbnQpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI5MDE7IDkxMiIsCiAgY29ycHNvdXJjZSA9ICAgIlByaW5jZXRvbiBVbml2LiwgUHJpbmNldG9uLCBOSiwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIGVuZ2luZWVyaW5nIHJlc2VhcmNoOyBjb21wdXRlciBzY2llbmNlIHJlc2VhcmNoOyBjb21wdXRlcnMgLS0tIFJlc2VhcmNoOyBDT1NFUlM7IGVuZ2luZWVyaW5nIHJlc2VhcmNoOyBuYXRpb25hbCByZXNlYXJjaCBzdHVkeTsgcmVzZWFyY2ggYW5kIGRldmVsb3BtZW50IG1hbmFnZW1lbnQiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle051bmFtYWtlcjoxOTc2OkNBRCwKICBhdXRob3IgPSAgICAgICAiSi4gRi4ge051bmFtYWtlciwgSnIufSBhbmQgQmVubiBSLiB7S29uc3luc2tpLCBKci59IGFuZCBUaG9tYXMgSG8gYW5kIENhcmwgU2luZ2VyIiwKICB0aXRsZSA9ICAgICAgICAiQ29tcHV0ZXItQWlkZWQgQW5hbHlzaXMgYW5kIERlc2lnbiBvZiBJbmZvcm1hdGlvbiBTeXN0ZW1zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjE5IiwKICBudW1iZXIgPSAgICAgICAiMTIiLAogIHBhZ2VzID0gICAgICAgICI2NzQtLTY4NyIsCiAgbW9udGggPSAgICAgICAgZGVjLAogIHllYXIgPSAgICAgICAgICIxOTc2IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlRoaXMgcGFwZXIgZGVzY3JpYmVzIHRoZSB1c2Ugb2YgY29tcHV0ZXItYWlkZWQgYW5hbHlzaXMgZm9yIHRoZSBkZXNpZ24gYW5kIGRldmVsb3BtZW50IG9mIGFuIGludGVncmF0ZWQgZmluYW5jaWFsIG1hbmFnZW1lbnQgc3lzdGVtIGJ5IHRoZSBOYXZ5IE1hdGVyaWFsIENvbW1hbmQgU3VwcG9ydCBBY3Rpdml0eSAoTk1DU0EpLiBDb21wdXRlci1haWRlZCBhbmFseXNpcyBjb25zaXN0cyBvZiBhIHNldCBvZiBwcm9jZWR1cmVzIGFuZCBjb21wdXRlciBwcm9ncmFtcyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgdG8gYWlkIGluIHRoZSBwcm9jZXNzIG9mIGFwcGxpY2F0aW9ucyBzb2Z0d2FyZSBkZXNpZ24sIGNvbXB1dGVyIHNlbGVjdGlvbiBhbmQgcGVyZm9ybWFuY2UgZXZhbHVhdGlvbi4gVGhlcmUgYXJlIGZvdXIgbWFqb3IgY29tcG9uZW50czogUHJvYmxlbSBTdGF0ZW1lbnQgTGFuZ3VhZ2UsIFByb2JsZW0gU3RhdGVtZW50IEFuYWx5emVyLCBHZW5lcmF0b3Igb2YgQWx0ZXJuYXRpdmUgRGVzaWducywgYW5kIFBlcmZvcm1hbmNlIEV2YWx1YXRvci4gVGhlIHN0YXRlbWVudCBvZiByZXF1aXJlbWVudHMgd2FzIHdyaXR0ZW4gaW4gQURTIChBY2N1cmF0ZWx5IERlZmluZWQgU3lzdGVtcykgYW5kIGFuYWx5emVkIGJ5IGEgUHJvYmxlbSBTdGF0ZW1lbnQgQW5hbHl6ZXIgZm9yIEFEUy4gVGhlIGFuYWx5emVkIHByb2JsZW0gc3RhdGVtZW50IHdhcyB0cmFuc2xhdGVkIHRvIHRoZSBmb3JtIG5lY2Vzc2FyeSBmb3IgdXNlIGJ5IHRoZSBTT0RBIChTeXN0ZW1zIE9wdGltaXphdGlvbiBhbmQgRGVzaWduIEFsZ29yaXRobSkgcHJvZ3JhbSBmb3IgdGhlIGdlbmVyYXRpb24gb2YgYWx0ZXJuYXRpdmUgc3BlY2lmaWNhdGlvbnMgb2YgcHJvZ3JhbSBtb2R1bGVzIGFuZCBsb2dpY2FsIGRhdGFiYXNlIHN0cnVjdHVyZXMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjc5MDAgKE1pbGl0YXJ5IHN5c3RlbXMgYW5kIGVxdWlwbWVudCk7IEI3OTkwIChPdGhlciBtaWxpdGFyeSB0b3BpY3MpOyBDNjExMCAoU3lzdGVtcyBhbmFseXNpcyBhbmQgcHJvZ3JhbW1pbmcpOyBDNzEyMCAoRmluYW5jaWFsIGNvbXB1dGluZyk7IEM3MTUwIChNaWxpdGFyeSBjb21wdXRpbmcpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjM7IDkwMSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIG9mIEFyaXpvbmEsIFR1Y3NvbiwgQVosIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhY2N1cmF0ZWx5IGRlZmluZWQgc3lzdGVtczsgYWRzOyBhbmFseXNpczsgQ0FEOyBjb21wdXRlciBhaWRlZCBhbmFseXNpczsgY29tcHV0ZXIgc3lzdGVtcywgZGlnaXRhbCAtLS0gQ29tcHV0ZXIgQWlkZWQgRGVzaWduOyBjb21wdXRlci1haWRlZCBhbmFseXNpczsgZGF0YSBiYXNlIHN5c3RlbXMgLS0tIENvbXB1dGVyIEFpZGVkIERlc2lnbjsgZGF0YSBwcm9jZXNzaW5nIC0tLSBGaW5hbmNpYWwgQXBwbGljYXRpb25zOyBmaW5hbmNpYWwgZGF0YSBwcm9jZXNzaW5nOyBmaW5hbmNpYWwgbWFuYWdlbWVudCBzeXN0ZW07IGluZm9ybWF0aW9uIHJldHJpZXZhbCBzeXN0ZW1zOyBpbmZvcm1hdGlvbiBzeXN0ZW1zOyBpbnRlZ3JhdGVkOyBsb2dpYyBkZXNpZ24gLS0tIENvbXB1dGVyIEFpZHM7IGxvZ2ljYWwgZGF0YWJhc2Ugc3RydWN0dXJlczsgbWFuYWdlbWVudCBpbmZvcm1hdGlvbiBzeXN0ZW1zOyBtaWxpdGFyeSBjb21wdXRpbmc7IHBlcmZvcm1hbmNlIGV2YWx1YXRvcjsgcHJvYmxlbSBzdGF0ZW1lbnQgYW5hbHlzZXI7IHByb2JsZW0gc3RhdGVtZW50IGxhbmd1YWdlOyBzb2RhOyBzeXN0ZW1zIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgRSBFY29ub21pYzsgUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtTdG9ja21hbjoxOTc2OlNQUiwKICBhdXRob3IgPSAgICAgICAiR2VvcmdlIFN0b2NrbWFuIGFuZCBMYXZlZW4gS2FuYWwgYW5kIE0uIEMuIEt5bGUiLAogIHRpdGxlID0gICAgICAgICJTdHJ1Y3R1cmFsIFBhdHRlcm4gUmVjb2duaXRpb24gb2YgQ2Fyb3RpZCBQdWxzZSBXYXZlcyBVc2luZyBhIEdlbmVyYWwgV2F2ZWZvcm0gUGFyc2luZyBTeXN0ZW0iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMTkiLAogIG51bWJlciA9ICAgICAgICIxMiIsCiAgcGFnZXMgPSAgICAgICAgIjY4OC0tNjk1IiwKICBtb250aCA9ICAgICAgICBkZWMsCiAgeWVhciA9ICAgICAgICAgIjE5NzYiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiQSBnZW5lcmFsIHdhdmVmb3JtIHBhcnNpbmcgc3lzdGVtIChXUFMpIHdpdGggYXBwbGljYXRpb24gdG8gc3RydWN0dXJhbCBwYXR0ZXJuIHJlY29nbml0aW9uIG9mIGNhcm90aWQgcHVsc2Ugd2F2ZXMgaXMgZGVzY3JpYmVkLiBUaGUgY2Fyb3RpZCBhcnRlcmlhbCBwdWxzZSB3YXZlIGlzIG9mIG1lZGljYWwgaW1wb3J0YW5jZSBiZWNhdXNlIG9mIHZhcmlhdGlvbiBpbiBpdHMgc3RydWN0dXJlIGluZHVjZWQgYnkgYXJ0ZXJpYWwgYWdpbmcgYW5kIGNhcmRpb3Zhc2N1bGFyIGRpc2Vhc2UuIFRoZSBzeW50YXgtZHJpdmVuIHdhdmVmb3JtIGFuYWx5c2lzIHN5c3RlbSBoYXMgYmVlbiBhcHBsaWVkIHdpdGggZ29vZCByZXN1bHRzIHRvIHRoZXNlIHB1bHNlIHdhdmVzIHRvIGRldGVjdCBhbmQgbWVhc3VyZSBzdHJ1Y3R1cmFsIHZhcmlhdGlvbnMuIFRoZSB3YXZlZm9ybSBhcHBsaWVkIHdpdGggZ29vZCByZXN1bHRzIHRvIHRoZXNlIHB1bHNlIHdhdmVzIHRvIGRldGVjdCBhbmQgbWVhc3VyZSBzdHJ1Y3R1cmFsIHZhcmlhdGlvbnMuIFRoZSB3YXZlZm9ybSBwYXJzaW5nIHN5c3RlbSBpcyBtb2RlbGVkIG9uIGEgY29tcGlsZXItY29tcGlsZXIgc3lzdGVtIGFuZCBhbGxvd3MgdGhlIHVzZXIgdG8gZW50ZXIgYXBwbGljYXRpb24gc3BlY2lmaWMgaW5mb3JtYXRpb24gYXMgZGF0YS4gSXQgaXMgdGh1cyBnZW5lcmFsIGVub3VnaCB0byBiZSBhcHBsaWNhYmxlIHRvIG90aGVyIHdhdmVmb3Jtcy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJCNjE0MEMgKE9wdGljYWwgaW5mb3JtYXRpb24sIGltYWdlIGFuZCB2aWRlbyBzaWduYWwgcHJvY2Vzc2luZyk7IEMxMTIwIChNYXRoZW1hdGljYWwgYW5hbHlzaXMpOyBDMTI1MCAoUGF0dGVybiByZWNvZ25pdGlvbik7IEMxMjkwTCAoU3lzdGVtcyB0aGVvcnkgYXBwbGljYXRpb25zIGluIGJpb2xvZ3kgYW5kIG1lZGljaW5lKTsgQzczMzAgKEJpb2xvZ3kgYW5kIG1lZGljYWwgY29tcHV0aW5nKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNDYxOyA3MjE7IDcyMyIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhdXRvbWF0YSB0aGVvcnkgLS0tIENvbnRleHQgRnJlZSBMYW5ndWFnZXM7IGJpb21lZGljYWwgZW5naW5lZXJpbmcgLS0tIENvbXB1dGVyIEFpZGVkIERpYWdub3NpczsgY2FyZGlvdmFzY3VsYXIgZGlzZWFzZTsgY2Fyb3RpZCBwdWxzZSB3YXZlczsgZGF0YSBwcm9jZXNzaW5nIC0tLSBNZWRpY2FsIEluZm9ybWF0aW9uOyBtZWRpY2FsIGNvbXB1dGluZzsgcGF0dGVybiByZWNvZ25pdGlvbjsgcGF0dGVybiByZWNvZ25pdGlvbiBzeXN0ZW1zOyBzdHJ1Y3R1cmFsIHBhdHRlcm4gcmVjb2duaXRpb247IHdhdmVmb3JtIGFuYWx5c2lzOyB3YXZlZm9ybSBwYXJzaW5nIHN5c3RlbSIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7dmFuR2VsZGVyOjE5Nzc6U1BDLAogIGF1dGhvciA9ICAgICAgICJBbGxlbiB7dmFuIEdlbGRlcn0iLAogIHRpdGxlID0gICAgICAgICJTdHJ1Y3R1cmVkIHByb2dyYW1taW5nIGluIHtDT0JPTH06IGFuIGFwcHJvYWNoIGZvciBhcHBsaWNhdGlvbiBwcm9ncmFtbWVycyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMCIsCiAgbnVtYmVyID0gICAgICAgIjEiLAogIHBhZ2VzID0gICAgICAgICIyLS0xMiIsCiAgbW9udGggPSAgICAgICAgamFuLAogIHllYXIgPSAgICAgICAgICIxOTc3IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EaXN0cmlidXRlZC9RTEQvMTk3Ny5iaWIiLAogIGFic3RyYWN0ID0gICAgICJUZWNobmlxdWVzIGZvciBkZXNpZ25pbmcgYW5kIHdyaXRpbmcgQ29ib2wgcHJvZ3JhbXMgYXJlIHByZXNlbnRlZC4gUHJldmlvdXMgd29yayBpbiBzdHJ1Y3R1cmVkIHByb2dyYW1taW5nIGlzIGRyYXduIHVwb24gYW5kIGFkYXB0ZWQuIFRoZSBwcmVzZW50YXRpb24gaXMgaW5mb3JtYWw6IHRoZSB0ZXJtaW5vbG9neSBpcyBub25tYXRoZW1hdGljYWwgYXMgZmFyIGFzIHBvc3NpYmxlLCBubyB0aGVvcmVtcyBhcmUgcHJvdmVkLCBhbmQgZXhhbXBsZXMgYXJlIHVzZWQgZnJlcXVlbnRseS4gVG9wLWRvd24gcHJvZ3JhbSBkZXNpZ24gaXMgaW1wbGVtZW50ZWQgdGhyb3VnaCB0aGUgdXNlIG9mIHN0cnVjdHVyZWQgZmxvd2NoYXJ0cywgZGlzY2lwbGluZWQgc3BlY2lmaWNhdGlvbnMsIGFuZCBzdGVwIGJ5IHN0ZXAgdmVyaWZpY2F0aW9uLiBBIHdlbGwtZm9ybWVkIENvYm9sIHByb2dyYW0gaXMgZGVmaW5lZC4gVGhlIHByb3BlciB1c2Ugb2YgdGhlIEdPIFRPIGFuZCBvdGhlciBDb2JvbCBjb2RpbmcgcHJhY3RpY2VzIGFyZSBkaXNjdXNzZWQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMTAgKFN5c3RlbXMgYW5hbHlzaXMgYW5kIHByb2dyYW1taW5nKTsgQzYxNDBEIChIaWdoIGxldmVsIGxhbmd1YWdlcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIkFDTSwgU2VhdHRsZSwgV0EsIFVTQSIsCiAgY291bnRyeSA9ICAgICAgIlVTQSIsCiAgZGVzY3JpcHRvcnMgPSAgIlByb2dyYW0gY29uc3RydWN0aW9uOyBDT0JPTDsgc3RhbmRhcmQ7IiwKICBlbnVtID0gICAgICAgICAiMzE3NCIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhcHBsaWNhdGlvbjsgYXBwbGljYXRpb24gcHJvZ3JhbW1pbmc7IENPQk9MOyBDb2JvbDsgY29tcHV0ZXIgbWV0YXRoZW9yeSAtLS0gUHJvZ3JhbW1pbmcgVGhlb3J5OyBjb21wdXRlciBwcm9ncmFtbWluZzsgY29tcHV0ZXIgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzIC0tLSBDb2JvbDsgZmxvd2NoYXJ0OyBHTyBUTzsgR08gVE8gc3RhdGVtZW50OyBwcm9ncmFtIHZlcmlmaWNhdGlvbjsgcHJvZ3JhbW1pbmc7IHJlcGVhdCBzdGF0ZW1lbnQ7IHNvZnR3YXJlIHJlbGlhYmlsaXR5OyBzdHJ1Y3R1cmVkIGZsb3djaGFydHM7IHN0cnVjdHVyZWQgcHJvZ3JhbW1pbmc7IHRvcCBkb3duOyB0b3AtZG93bjsgd2VsbCBmb3JtZWQgcHJvZ3JhbTsgd2VsbC1mb3JtZWQgcHJvZ3JhbSIsCiAgbGFuZ3VhZ2UgPSAgICAgIkVuZ2xpc2giLAogIHJlZmVyZW5jZXMgPSAgICIyNCIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7QXVzdGluZzoxOTc3OlNMQywKICBhdXRob3IgPSAgICAgICAiUmljaGFyZCBILiBBdXN0aW5nIGFuZCBCcnVjZSBILiBCYXJuZXMgYW5kIEdlcmFsZCBMLiBFbmdlbCIsCiAgdGl0bGUgPSAgICAgICAgIkEgU3VydmV5IG9mIHRoZSBMaXRlcmF0dXJlIGluIENvbXB1dGVyIFNjaWVuY2UgRWR1Y2F0aW9uIFNpbmNlIHtDdXJyaWN1bHVtICc2OH0iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjAiLAogIG51bWJlciA9ICAgICAgICIxIiwKICBwYWdlcyA9ICAgICAgICAiMTMtLTIxIiwKICBtb250aCA9ICAgICAgICBqYW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzciLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiQSBiaWJsaW9ncmFwaHkgb2YgYXBwcm94aW1hdGVseSB0d28gaHVuZHJlZCByZWZlcmVuY2VzIGluIGNvbXB1dGVyIHNjaWVuY2UgZWR1Y2F0aW9uIGFwcGVhcmluZyBpbiB0aGUgbGl0ZXJhdHVyZSBzaW5jZSB0aGUgcHVibGljYXRpb24gb2YgYGBDdXJyaWN1bHVtICc2OCcnIGlzIHByZXNlbnRlZC4gVGhlIGJpYmxpb2dyYXBoeSBpdHNlbGYgaXMgcHJlY2VkZWQgYnkgYnJpZWYgZGVzY3JpcHRpdmUgbWF0ZXJpYWxzIG9yZ2FuaXppbmcgdGhlIHJlZmVyZW5jZXMgaW50byB0aGUgY2F0ZWdvcmllcyBvZiBzdXJ2ZXkgcmVwb3J0cywgYWN0aXZpdGllcyBvZiBwcm9mZXNzaW9uYWwgb3JnYW5pemF0aW9ucywgcGhpbG9zb3BoeSBvZiBwcm9ncmFtcywgZGVzY3JpcHRpb24gb2YgcHJvZ3JhbXMsIGRlc2NyaXB0aW9uIG9mIGNvdXJzZXMgYW5kIG90aGVyIG1hdGVyaWFscy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDMDIyMCAoQ29tcHV0aW5nIGVkdWNhdGlvbiBhbmQgdHJhaW5pbmcpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjM7IDkwMTsgOTEyIiwKICBjb3Jwc291cmNlID0gICAiQUNNLCBTZWF0dGxlLCBXQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImJpYmxpb2dyYXBoeTsgY29tcHV0ZXIgc2NpZW5jZTsgY29tcHV0ZXIgc2NpZW5jZSBjdXJyaWN1bGE7IGNvbXB1dGVyIHNjaWVuY2UgZWR1Y2F0aW9uOyBjb21wdXRlcnM7IGN1cnJpY3VsYTsgZWR1Y2F0aW9uOyBlZHVjYXRpb24gLS0tIEJpYmxpb2dyYXBoaWVzIiwKICB0cmVhdG1lbnQgPSAgICAiQiBCaWJsaW9ncmFwaHkiLAp9CgpAQXJ0aWNsZXtCYWJhZDoxOTc3OlJGUCwKICBhdXRob3IgPSAgICAgICAiSmFpciBNLiBCYWJhZCIsCiAgdGl0bGUgPSAgICAgICAgIkEgUmVjb3JkIGFuZCBGaWxlIFBhcnRpdGlvbmluZyBNb2RlbCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMCIsCiAgbnVtYmVyID0gICAgICAgIjEiLAogIHBhZ2VzID0gICAgICAgICIyMi0tMzEgKG9yIDIyLS0zMD8/KSIsCiAgbW9udGggPSAgICAgICAgamFuLAogIHllYXIgPSAgICAgICAgICIxOTc3IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EYXRhYmFzZS9XaWVkZXJob2xkLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIlRoaXMgcGFwZXIgcHJlc2VudHMgYSBtb2RlbCBpbiB3aGljaCBzZXZlcmFsIHJlcXVlc3RzIGFjY2VzcyBhIGZpbGUgc3lzdGVtLCBhbmQgZWFjaCByZXF1ZXN0IHJlcXVpcmVzIGluZm9ybWF0aW9uIGZyb20gb25lIG9yIG1vcmUgdmFyaWFibGUgbGVuZ3RoIGRhdGEtaXRlbXMuIFRoZSBmaWxlIHN5c3RlbSB1c2VzIG9uZSBvciBtb3JlIHN0b3JhZ2UgZGV2aWNlcywgYW5kIGVhY2ggcmVjb3JkIG1heSBiZSBwYXJ0aXRpb25lZCBpbnRvIHN1YnJlY29yZHMgdGhhdCBhcmUgc3RvcmVkIG9uIGRpZmZlcmVudCBkZXZpY2VzLiBPbmUgb2YgdGhlIHN1YnJlY29yZHMgaXMgZGVzaWduYXRlZCBhcyB0aGUgcHJpbWFyeSByZWNvcmQ7IHdoZW4gYSByZXF1ZXN0IGZvciBhIHJlY29yZCBpcyBtYWRlLCB0aGUgcHJpbWFyeSByZWNvcmQgaXMgZmlyc3QgYWNjZXNzZWQsIGFuZCBvdGhlciBzdWJyZWNvcmRzIGFyZSBhY2Nlc3NlZCBvbmx5IGlmIHRoZSBwZXJ0aW5lbnQgaW5mb3JtYXRpb24gaXMgbm90IHN0b3JlZCBpbiB0aGUgcHJpbWFyeSByZWNvcmQuIFRoZSBtb2RlbCB0aGF0IGlzIHByZXNlbnRlZCBpbiB0aGlzIHBhcGVyLCBib3RoIGFzIGEgbm9ubGluZWFyIHByb2dyYW1taW5nIG1vZGVsIGFuZCBhIG1peGVkIGludGVnZXIgcHJvZ3JhbW1pbmcgbW9kZWwsIGlzIGEgdmVyeSBnZW5lcmFsIG9uZTsgc2V2ZXJhbCB0eXBlcyBvZiBmaWxlIHN5c3RlbXMgbWF5IGJlIGRlcml2ZWQgZnJvbSBpdCBieSBhbiBhcHByb3ByaWF0ZSBzZWxlY3Rpb24gb2YgaXRzIHBhcmFtZXRlcnMuIFRoaXMgbW9kZWwgaGFzIGFscmVhZHkgYmVlbiB1c2VkIGluIHRoZSBvcHRpbWl6YXRpb24gb2YgbGlicmFyeSByb3V0aW5lcycgc3RvcmFnZSBhdCBhIGxhcmdlIHNjYWxlIG9wZXJhdGluZyBzeXN0ZW0uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIyOyA3MjM7IDkwMTsgOTIxIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gb2YgQ2hpY2FnbywgQ2hpY2FnbywgSUwsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJkYXRhIHByb2Nlc3Npbmc7IGRhdGEgc3RvcmFnZSwgZGlnaXRhbCAtLS0gTWF0aGVtYXRpY2FsIE1vZGVsczsgZmlsZSBkZXNpZ247IGZpbGUgb3JnYW5pc2F0aW9uOyBmaWxlIHBhcnRpdGlvbmluZzsgZmlsZSBzeXN0ZW1zOyBpbmZvcm1hdGlvbiByZXRyaWV2YWwgc3lzdGVtcyAtLS0gT3B0aW1pemF0aW9uOyBpbnRlZ2VyIHByb2dyYW1taW5nOyBpbnRlZ2VyIHByb2dyYW1taW5nIG1vZGVsOyBtaXhlZDsgbm9ubGluZWFyOyBub25saW5lYXIgcHJvZ3JhbW1pbmcgbW9kZWw7IHBhcnRpdGlvbmluZzsgcHJvZ3JhbW1pbmc7IHJlY29yZCIsCiAgdHJlYXRtZW50ID0gICAgIkEgQXBwbGljYXRpb247IFAgUHJhY3RpY2FsOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle1pvYnJpc3Q6MTk3NzpEQ08sCiAgYXV0aG9yID0gICAgICAgIkFsYmVydCBMLiBab2JyaXN0IGFuZCBGcmVkZXJpY2sgUi4ge0Nhcmxzb24sIEpyLn0iLAogIHRpdGxlID0gICAgICAgICJEZXRlY3Rpb24gb2YgQ29tYmluZWQgT2NjdXJyZW5jZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjAiLAogIG51bWJlciA9ICAgICAgICIxIiwKICBwYWdlcyA9ICAgICAgICAiMzEtLTM2IChvciAzMS0tMzU/PykiLAogIG1vbnRoID0gICAgICAgIGphbiwKICB5ZWFyID0gICAgICAgICAiMTk3NyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJJbiB0aGlzIHBhcGVyIGl0IGlzIHN1cHBvc2VkIHRoYXQgdGhlIHZhcmlhYmxlcyB4Ly8xLFxsZG90c3t9LHgvL24gZWFjaCBoYXZlIGZpbml0ZSByYW5nZSB3aXRoIHRoZSB2YXJpYWJsZSB4Ly9pIHRha2luZyBvbiBwLy9pIHBvc3NpYmxlIHZhbHVlcyBhbmQgdGhhdCB0aGUgdmFsdWVzIG9mIHRoZSB2YXJpYWJsZXMgYXJlIGNoYW5naW5nIHdpdGggdGltZS4gSXQgaXMgc3VwcG9zZWQgZnVydGhlciB0aGF0IGl0IGlzIGRlc2lyZWQgdG8gZGV0ZWN0IG9jY3VycmVuY2VzIGluIHdoaWNoIHNvbWUgc3Vic2V0IG9mIHRoZSB2YXJpYWJsZXMgYWNoaWV2ZSBwYXJ0aWN1bGFyIHZhbHVlcy4gRmluYWxseSwgaXQgaXMgc3VwcG9zZWQgdGhhdCB0aGUgcHJvYmxlbSBpbnZvbHZlcyB0aGUgZGV0ZWN0aW9uIG9mIGEgbGFyZ2UgbnVtYmVyIG9mIGNvbWJpbmVkIG9jY3VycmVuY2VzIGZvciBhIGxhcmdlIG51bWJlciBvZiBjaGFuZ2VzIG9mIHZhbHVlcyBvZiB2YXJpYWJsZXMuIFR3byBlZmZpY2llbnQgc29sdXRpb25zIGZvciB0aGlzIHByb2JsZW0gYXJlIGRlc2NyaWJlZC4gQm90aCBtZXRob2RzIGhhdmUgdGhlIHVudXN1YWwgcHJvcGVydHkgb2YgYmVpbmcgZmFzdGVyIGZvciBzeXN0ZW1zIHdoZXJlIHRoZSBzdW0gcC8vMSBwbHVzXGxkb3Rze30gcGx1cyBwLy9uIGlzIGxhcmdlci4gQSBjaGVzcyBwbGF5aW5nIGFwcGxpY2F0aW9uIG9mIHRoZSBzZWNvbmQgc29sdXRpb24gYWxnb3JpdGhtIGlzIHByb3ZpZGVkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MjQwIChQcm9ncmFtbWluZyBhbmQgYWxnb3JpdGhtIHRoZW9yeSk7IEM2MTEwIChTeXN0ZW1zIGFuYWx5c2lzIGFuZCBwcm9ncmFtbWluZyk7IEM2MTMwIChEYXRhIGhhbmRsaW5nIHRlY2huaXF1ZXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI0NjE7IDcyMzsgOTEyIiwKICBjb3Jwc291cmNlID0gICAiSmV0IFByb3B1bHNpb24gTGFiLiwgUGFzYWRlbmEsIENBLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiJG4kIHR1cGxlczsgYXJ0aWZpY2lhbDsgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2U7IGNoZXNzOyBjb2Rpbmc7IGNvbWJpbmVkIG9jY3VycmVuY2VzOyBjb21wdXRlciBwcm9ncmFtbWluZzsgZXJyb3IgYW5hbHlzaXM7IGhhc2ggY29kaW5nOyBpbnRlbGxpZ2VuY2U7IHBhdHRlcm4gcmVjb2duaXRpb247IHBhdHRlcm4gcmVjb2duaXRpb24gc3lzdGVtczsgcHJvZ3JhbW1pbmc7IHJldHJpZXZhbDsgc2Vjb25kYXJ5IGtleXM7IHNvcnRpbmc7IHN5c3RlbXMgc2NpZW5jZSBhbmQgY3liZXJuZXRpY3MgLS0tIEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlOyB0aGVvcnkiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbDsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtCYXRzb246MTk3NzpTU0wsCiAgYXV0aG9yID0gICAgICAgIkEuIFAuIEJhdHNvbiBhbmQgUi4gRS4gQnJ1bmRhZ2UiLAogIHRpdGxlID0gICAgICAgICJTZWdtZW50IFNpemVzIGFuZCBMaWZldGltZXMgaW4ge0FsZ29sIDYwfSBQcm9ncmFtcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMCIsCiAgbnVtYmVyID0gICAgICAgIjEiLAogIHBhZ2VzID0gICAgICAgICIzNi0tNDQiLAogIG1vbnRoID0gICAgICAgIGphbiwKICB5ZWFyID0gICAgICAgICAiMTk3NyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvQ29tcGlsZXIvSGVhcHMuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiVGhlIGNoYXJhY3RlcmlzdGljcyBvZiB0aGUgdmlydHVhbCBtZW1vcnkgcmVxdWlyZW1lbnRzIG9mIGEgc2FtcGxlIG9mIEFsZ29sIDYwIHByb2dyYW1zIGhhdmUgYmVlbiBtZWFzdXJlZC4gRGlzdHJpYnV0aW9ucyBhcmUgcHJlc2VudGVkIGZvciB0aGUgc2l6ZXMgb2YgbWVtb3J5IHJlcXVlc3RzIGFuZCBmb3IgdGhlaXIgaG9sZGluZyB0aW1lcyAobGlmZXRpbWVzKS4gVGhlIHJlc3VsdHMgYXJlIHByZXNlbnRlZCBpbiB0ZXJtcyBvZiBKLiBCLiBKb2huc3RvbidzIGNvbnRvdXIgbW9kZWwgYW5kIGEgc2ltcGxlIGFic3RyYWN0IG1hY2hpbmUuIFRoZXkgcHJvdmlkZSBuZXcgZW1waXJpY2FsIGV2aWRlbmNlIG9mIGNlcnRhaW4gYXNwZWN0cyBvZiB0aGUgY29uc3RydWN0aW9uIGFuZCBiZWhhdmlvciBvZiByZWFsIHByb2dyYW1zLCBhbmQgc29tZSBvZiB0aGVpciBpbXBsaWNhdGlvbnMgZm9yIHRoZSBkZXNpZ24gb2YgdmlydHVhbCBtZW1vcnkgc3lzdGVtcyBhcmUgcHJlc2VudGVkIGFuZCBkaXNjdXNzZWQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIyOyA3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBvZiBWaXJnaW5pYSwgQ2hhcmxvdHRlc3ZpbGxlLCBWQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFic3RyYWN0OyBBTEdPTDsgQUxHT0wgNjA7IGNvbXB1dGVyIG9wZXJhdGluZyBzeXN0ZW1zIC0tLSBTdG9yYWdlIEFsbG9jYXRpb247IGNvbXB1dGVyIHByb2dyYW1taW5nIGxhbmd1YWdlcyAtLS0gQWxnb2w7IGNvbXB1dGVyIHN5c3RlbXMsIGRpZ2l0YWw7IGRhdGEgc3RvcmFnZSwgZGlnaXRhbDsgSm9obnN0b24ncyBjb250b3VyIG1vZGVsOyBtYWNoaW5lOyBwcm9ncmFtIGJlaGF2aW91cjsgc2VnbWVudGF0aW9uOyBzdG9yYWdlIGFsbG9jYXRpb247IHZpcnR1YWwgbWVtb3J5OyB2aXJ0dWFsIHN0b3JhZ2UiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0dyaWVzOjE5Nzc6QlBCLAogIGF1dGhvciA9ICAgICAgICJEYXZpZCBHcmllcyIsCiAgdGl0bGUgPSAgICAgICAgIk9uIEJlbGlldmluZyBQcm9ncmFtcyB0byBiZSBDb3JyZWN0IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIwIiwKICBudW1iZXIgPSAgICAgICAiMSIsCiAgcGFnZXMgPSAgICAgICAgIjQ5LS01MCIsCiAgbW9udGggPSAgICAgICAgamFuLAogIHllYXIgPSAgICAgICAgICIxOTc3IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJzb3VyY2UgPSAgICAiZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9Db21waWxlci9nYXJiYWdlLmNvbGxlY3Rpb24uYmliIiwKfQoKQEFydGljbGV7TXVsbGVyOjE5Nzc6QU1ELAogIGF1dGhvciA9ICAgICAgICJNZXJ2aW4gRS4gTXVsbGVyIiwKICB0aXRsZSA9ICAgICAgICAiQW4gQXBwcm9hY2ggdG8gTXVsdGlkaW1lbnNpb25hbCBEYXRhIEFycmF5IFByb2Nlc3NpbmcgYnkgQ29tcHV0ZXIiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjAiLAogIG51bWJlciA9ICAgICAgICIyIiwKICBwYWdlcyA9ICAgICAgICAiNjMtLTc3IiwKICBtb250aCA9ICAgICAgICBmZWIsCiAgeWVhciA9ICAgICAgICAgIjE5NzciLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L1BhcmFsbGVsL011bHRpLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIkF0dGVudGlvbiBpcyBmaXJzdCBnaXZlbiB0byBzb21lIG9mIHRoZSBnZW5lcmFsIHByb2JsZW1zIG9mIG11bHRpZGltZW5zaW9uYWwgdGFibGUgYW5kIGFycmF5IHByb2Nlc3NpbmcuIFRoaXMgaXMgZm9sbG93ZWQgYnkgYSBzdW1tYXJ5IG9mIHNvbWUgcmVjZW50IGRldmVsb3BtZW50cyBpbiBhcnJheSBwcm9jZXNzaW5nIGNhcGFiaWxpdGllcyBhdCB0aGUgV29ybGQgQmFuaywgaW4gcGFydGljdWxhciwgdGhlIHN5c3RlbSBpZGVudGlmaWVkIGFzIFdSQVBTIChXb3JsZCBCYW5rIFJldHJpZXZhbCBhbmQgQXJyYXkgUHJvY2Vzc2luZyBTeXN0ZW0pLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTMwIChEYXRhIGhhbmRsaW5nIHRlY2huaXF1ZXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjM7IDkwMSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhcnJheSBwcm9jZXNzaW5nOyBhcnJheXM7IGNvbXB1dGVyOyBkYXRhIHByb2Nlc3Npbmc7IGluZm9ybWF0aW9uIHJldHJpZXZhbCBzeXN0ZW1zOyBtdWx0aWRpbWVuc2lvbmFsIGRhdGE7IHRhYmxlIGxvb2t1cDsgV29ybGQgQmFuayBSZXRyaWV2YWwgYW5kIEFycmF5IFByb2Nlc3NpbmcgU3lzdGVtOyBXUkFQUzsgd3JhcHMiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0NsYXJrOjE5Nzc6RVNMLAogIGF1dGhvciA9ICAgICAgICJEb3VnbGFzIFcuIENsYXJrIGFuZCBDLiBDb3JkZWxsIEdyZWVuIiwKICB0aXRsZSA9ICAgICAgICAiQW4gRW1waXJpY2FsIFN0dWR5IG9mIExpc3QgU3RydWN0dXJlIGluIHtMSVNQfSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMCIsCiAgbnVtYmVyID0gICAgICAgIjIiLAogIHBhZ2VzID0gICAgICAgICI3OC0tODciLAogIG1vbnRoID0gICAgICAgIGZlYiwKICB5ZWFyID0gICAgICAgICAiMTk3NyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvQ29tcGlsZXIvZ2FyYmFnZS5jb2xsZWN0aW9uLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIlN0YXRpYyBtZWFzdXJlbWVudHMgb2YgdGhlIGxpc3Qgc3RydWN0dXJlIG9mIGZpdmUgbGFyZ2UgTGlzcCBwcm9ncmFtcyBhcmUgcmVwb3J0ZWQgYW5kIGFuYWx5emVkLiBUaGVzZSBtZWFzdXJlbWVudHMgcmV2ZWFsIHN1YnN0YW50aWFsIHJlZ3VsYXJpdHksIG9yIHByZWRpY3RhYmlsaXR5LCBhbW9uZyBwb2ludGVycyB0byBhdG9tcyBhbmQgZXNwZWNpYWxseSBhbW9uZyBwb2ludGVycyB0byBsaXN0cy4gUG9pbnRlcnMgdG8gYXRvbXMgYXJlIGZvdW5kIHRvIG9iZXksIHJvdWdobHksIFppcGYncyBsYXcsIHdoaWNoIGdvdmVybnMgd29yZCBmcmVxdWVuY2llcyBpbiBuYXR1cmFsIGxhbmd1YWdlczsgcG9pbnRlcnMgdG8gbGlzdHMgdXN1YWxseSBwb2ludCB0byBhIGxvY2F0aW9uIHBoeXNpY2FsbHkgbmVhcmJ5IGluIG1lbW9yeS4gVGhlIHVzZSBvZiBzdWNoIHJlZ3VsYXJpdGllcyBpbiB0aGUgc3BhY2UtZWZmaWNpZW50IHJlcHJlc2VudGF0aW9uIG9mIGxpc3Qgc3RydWN0dXJlIGlzIGRpc2N1c3NlZC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKTsgQzYxNDBEIChIaWdoIGxldmVsIGxhbmd1YWdlcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29tbWVudCA9ICAgICAgIkdyZWF0IHBhcGVyOyBldmlkZW5jZSBwcm8gQ0RSLWNvZGluZywgY29uIGZhbmN5IENPTlMiLAogIGNvcnBzb3VyY2UgPSAgICJDYXJuZWdpZS1NZWxsb24gVW5pdi4sIFBpdHRzYnVyZ2gsIFBBLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzOyBkYXRhIHByb2Nlc3NpbmcgLS0tIERhdGEgU3RydWN0dXJlczsgZW1waXJpY2FsIHN0dWR5OyBMSVNQOyBsaXN0IHN0cnVjdHVyZTsgbWVhc3VyZW1lbnRzOyByZWd1bGFyaXR5IiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtQcmVwYXJhdGE6MTk3NzpDSEYsCiAgYXV0aG9yID0gICAgICAgIkYuIFAuIFByZXBhcmF0YSBhbmQgUy4gSi4gSG9uZyIsCiAgdGl0bGUgPSAgICAgICAgIkNvbnZleCBIdWxscyBvZiBGaW5pdGUgU2V0cyBvZiBQb2ludHMgaW4gVHdvIGFuZCBUaHJlZSBEaW1lbnNpb25zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIwIiwKICBudW1iZXIgPSAgICAgICAiMiIsCiAgcGFnZXMgPSAgICAgICAgIjg3LS05MyIsCiAgbW9udGggPSAgICAgICAgZmViLAogIHllYXIgPSAgICAgICAgICIxOTc3IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjhBMTAgKDUyQTI1KSIsCiAgTVJudW1iZXIgPSAgICAgIjU4IDg0NzUiLAogIG1ycmV2aWV3ZXIgPSAgICJWLiBNZWRlayIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvR3JhcGhpY3Mvc2lnZ3JhcGgvNzcuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiVGhlIGNvbnZleCBodWxscyBvZiBzZXRzIG9mIG4gcG9pbnRzIGluIHR3byBhbmQgdGhyZWUgZGltZW5zaW9ucyBjYW4gYmUgZGV0ZXJtaW5lZCB3aXRoIE8obiBsb2cgbikgb3BlcmF0aW9ucy4gVGhlIHByZXNlbnRlZCBhbGdvcml0aG1zIHVzZSB0aGUgYGBkaXZpZGUgYW5kIGNvbnF1ZXInJyB0ZWNobmlxdWUgYW5kIHJlY3Vyc2l2ZWx5IGFwcGx5IGEgbWVyZ2UgcHJvY2VkdXJlIGZvciB0d28gbm9uaW50ZXJzZWN0aW5nIGNvbnZleCBodWxscy4gU2luY2UgYW55IGNvbnZleCBodWxsIGFsZ29yaXRobSByZXF1aXJlcyBhdCBsZWFzdCBPKG4gbG9nIG4pIG9wZXJhdGlvbnMsIHRoZSB0aW1lIGNvbXBsZXhpdHkgb2YgdGhlIHByb3Bvc2VkIGFsZ29yaXRobXMgaXMgb3B0aW1hbCB3aXRoaW4gYSBtdWx0aXBsaWNhdGl2ZSBjb25zdGFudC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGFubm90ZSA9ICAgICAgICIkTyhuIFxsb2cgbikkIHRpbWUiLAogIGNsYXNzY29kZXMgPSAgICJDNjEzMEIgKEdyYXBoaWNzIHRlY2huaXF1ZXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjM7IDkzMSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIG9mIElsbGlub2lzLCBVcmJhbmEtQ2hhbXBhaWduLCBJTCwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXBsZXhpdHk7IGNvbXB1dGF0aW9uYWwgY29tcGxleGl0eTsgY29tcHV0ZXIgZ3JhcGhpY3M7IGNvbXB1dGVyIHByb2dyYW1taW5nOyBjb252ZXggaHVsbCBhbGdvcml0aG07IGRpdmlkZS1hbmQtY29ucXVlcjsgZmluaXRlIHNldHMgb2YgcG9pbnRzOyBzdHJ1Y3R1cmFsIGFuYWx5c2lzIC0tLSBDb21wdXRlciBBcHBsaWNhdGlvbnM7IHRpbWU7IHdvcnN0LWNhc2UgYW5hbHlzaXMiLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0Vhc3RvbjoxOTc3OlRGVywKICBhdXRob3IgPSAgICAgICAiTS4gQy4gRWFzdG9uIGFuZCBCLiBULiBCZW5uZXR0IiwKICB0aXRsZSA9ICAgICAgICAiVHJhbnNpZW50LUZyZWUgV29ya2luZy1TZXQgU3RhdGlzdGljcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMCIsCiAgbnVtYmVyID0gICAgICAgIjIiLAogIHBhZ2VzID0gICAgICAgICI5My0tOTkiLAogIG1vbnRoID0gICAgICAgIGZlYiwKICB5ZWFyID0gICAgICAgICAiMTk3NyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4QTIwIiwKICBNUm51bWJlciA9ICAgICAiNTggMjUxMDgiLAogIG1ycmV2aWV3ZXIgPSAgICJBLiBELiBCb290aCIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJUcmFuc2llbnQgZnJlZS1hdmVyYWdlIHdvcmtpbmctc2V0IHNpemUgYW5kIHRyYW5zaWVudC1mcmVlIG1pc3NpbmctcGFnZSByYXRlIGZvciBhIGZpbml0ZSBzYW1wbGUgb2YgYSByZWZlcmVuY2Ugc3RyaW5nIGFyZSBkZWZpbmVkLiBVc2Ugb2YgdGhlc2Ugc3RhdGlzdGljcyBpcyBhcHByb3ByaWF0ZSBpZiB0aGUgY29udGVudHMgb2YgdGhlIHdvcmtpbmcgc2V0IGF0IHRoZSBzdGFydCBvZiB0aGUgcmVjb3JkZWQgc3RyaW5nIGFyZSB1bmtub3duLiBJZiBhIGNlcnRhaW4gc3RhdGlvbmFyaXR5IGNvbmRpdGlvbiBob2xkcywgdGhlc2Ugc3RhdGlzdGljcyBwcm92aWRlIHVuYmlhc2VkIGVzdGltYXRlcyBvZiBleHBlY3RlZCB3b3JraW5nLXNldCBzaXplcywgbWlzc2luZy1wYWdlIHByb2JhYmlsaXRpZXMsIGFuZCBpbnRlcmZlcmVuY2UgZGlzdGFuY2UgcHJvYmFiaWxpdGllcy4gVHdvIG90aGVyIHBhaXJzIG9mIGVzdGltYXRvcnMgYXJlIHNob3duIHRvIGJlIGJpYXNlZC4gRXhwcmVzc2lvbnMgZm9yIHRoZSB0cmFuc2llbnQtZnJlZSBzdGF0aXN0aWNzIGFyZSBvYnRhaW5lZCBpbiB0ZXJtcyBvZiBpbnRlcnZhbCBzdGF0aXN0aWNzLiBNZXRob2RzIGFyZSBkZXNjcmliZWQgZm9yIGhhbmRsaW5nIGxvbmcgc3RyaW5ncyBjb250YWluaW5nIG1hbnkgZGlzdGluY3QgcGFnZSBuYW1lcy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDI0MCAoUHJvZ3JhbW1pbmcgYW5kIGFsZ29yaXRobSB0aGVvcnkpOyBDNjExMCAoU3lzdGVtcyBhbmFseXNpcyBhbmQgcHJvZ3JhbW1pbmcpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjM7IDkyMiIsCiAgY29ycHNvdXJjZSA9ICAgIklCTSBUaG9tYXMgSi4gV2F0c29uIFJlcy4gQ2VudGVyLCBZb3JrdG93biBIZWlnaHRzLCBOWSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIG9wZXJhdGluZyBzeXN0ZW1zOyBzdGF0aXN0aWNhbCBtZXRob2RzIiwKICBrZXl3b3JkcyA9ICAgICAibWlzc2luZyBwYWdlIHJhdGU7IHByb2dyYW1taW5nOyBzdGF0aXN0aWNzOyB0cmFuc2llbnQgZnJlZTsgd29ya2luZyBzZXQiLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0JyZXNlbmhhbToxOTc3OkxBSSwKICBhdXRob3IgPSAgICAgICAiSmFjayBCcmVzZW5oYW0iLAogIHRpdGxlID0gICAgICAgICJBIExpbmVhciBBbGdvcml0aG0gZm9yIEluY3JlbWVudGFsIERpZ2l0YWwgRGlzcGxheSBvZiBDaXJjdWxhciBBcmNzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIwIiwKICBudW1iZXIgPSAgICAgICAiMiIsCiAgcGFnZXMgPSAgICAgICAgIjEwMC0tMTA2IiwKICBtb250aCA9ICAgICAgICBmZWIsCiAgeWVhciA9ICAgICAgICAgIjE5NzciLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0dyYXBoaWNzL2ltYWdlci9pbWFnZXIuNzcuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiQ2lyY3VsYXIgYXJjcyBjYW4gYmUgZHJhd24gb24gYW4gaW5jcmVtZW50YWwgZGlzcGxheSBkZXZpY2Ugc3VjaCBhcyBhIGNhdGhvZGUgcmF5IHR1YmUsIGRpZ2l0YWwgcGxvdHRlciwgb3IgbWF0cml4IHByaW50ZXIgdXNpbmcgb25seSBzaWduIHRlc3RpbmcgYW5kIGVsZW1lbnRhcnkgYWRkaXRpb24gYW5kIHN1YnRyYWN0aW9uLiBUaGlzIHBhcGVyIGRlc2NyaWJlcyBtZXRob2RvbG9neSBmb3IgcHJvZHVjaW5nIGRvdCBvciBzdGVwIHBhdHRlcm5zIGNsb3Nlc3QgdG8gdGhlIHRydWUgY2lyY2xlLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTMwQiAoR3JhcGhpY3MgdGVjaG5pcXVlcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIklCTSBTeXN0ZW0gQ29tbXVuaWNhdGlvbnMgRGl2LiwgUGFsbyBBbHRvLCBDQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFkZGl0aW9uOyBhcmMgZ2VuZXJhdGlvbjsgYXJjczsgY2lyY2xlIGRyYXdpbmc7IGNpcmN1bGFyOyBjb21wdXRlciBncmFwaGljczsgY29tcHV0ZXIgcHJvZ3JhbW1pbmcgLS0tIFN1YnJvdXRpbmVzOyBkb3QgZ2VuZXJhdGlvbjsgaW1hZ2luZyB0ZWNobmlxdWVzOyBpbmNyZW1lbnRhbCBkaWdpdGFsIGRpc3BsYXk7IGxpbmVhciBhbGdvcml0aG07IHJhc3RlciBkaXNwbGF5OyBzaWduIHRlc3Rpbmc7IHN1YnRyYWN0aW9uIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtLb3RpYWg6MTk3NzpPQ08sCiAgYXV0aG9yID0gICAgICAgIlRob2RkaSBDLiBULiBLb3RpYWggYW5kIERhdmlkIEkuIFN0ZWluYmVyZyIsCiAgdGl0bGUgPSAgICAgICAgIk9jY3VycmVuY2VzIG9mIEN5Y2xpbmcgYW5kIE90aGVyIFBoZW5vbWVuYSBBcmlzaW5nIGluIGEgQ2xhc3Mgb2YgTGluZWFyIFByb2dyYW1taW5nIE1vZGVscyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMCIsCiAgbnVtYmVyID0gICAgICAgIjIiLAogIHBhZ2VzID0gICAgICAgICIxMDctLTExMiIsCiAgbW9udGggPSAgICAgICAgZmViLAogIHllYXIgPSAgICAgICAgICIxOTc3IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkFuIGludmVzdGlnYXRpb24gaW50byB0aGUgYXZlcmFnZSBxdWV1ZSBzaXplIGZvciBhIGNlcnRhaW4gY2xhc3Mgb2YgcXVldWVzIGhhcyByZXN1bHRlZCBpbiB0aGUgZm9ybXVsYXRpb24gb2YgbGluZWFyIHByb2dyYW1taW5nIHByb2JsZW1zIHdoaWNoIGFyZSBpbGwtY29uZGl0aW9uZWQgaW4gc29tZSBjYXNlcy4gSW4gYXR0ZW1wdGluZyB0byBzb2x2ZSB0aGVzZSBsaW5lYXIgcHJvZ3JhbW1pbmcgbW9kZWxzLCB1c2luZyBJQk0ncyBNUFMgcGFja2FnZSwgaW5zdGFuY2VzIG9mIGN5Y2xpbmcgd2VyZSBlbmNvdW50ZXJlZC4gU21hbGwgcGVydHVyYmF0aW9ucyBpbiB0aGUgaW5wdXQgZGF0YSByZXN1bHRlZCBpbiBwcm9ibGVtcyB3aGljaCBkaWQgbm90IGN5Y2xlLiBUaGlzIGZhY3QsIHBsdXMgc2V2ZXJhbCBvdGhlciBvYnNlcnZlZCBwaGVub21lbmEgc3VnZ2VzdCB0aGF0IHRoZSBwcmltYXJ5IHJlYXNvbiB0aGF0IGN5Y2xpbmcgaXMgbm90IGtub3duIHRvIG9jY3VyIG1vcmUgZnJlcXVlbnRseSBpcyB0aGF0IHJvdW5kLW9mZiBlcnJvcnMgaW4gdGhlIGNvbXB1dGF0aW9ucyBwZXJ0dXJiIHRoZSBwcm9ibGVtIHN1ZmZpY2llbnRseSB0byBwcmV2ZW50IGN5Y2xpbmcgKG9yIGF0IGxlYXN0IHRvIHByZXZlbnQgaW5kZWZpbml0ZSBjeWNsaW5nKS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDMTE0MEMgKFF1ZXVlaW5nIHRoZW9yeSk7IEMxMTgwIChPcHRpbWlzYXRpb24gdGVjaG5pcXVlcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMzsgOTIxOyA5MjIiLAogIGNvcnBzb3VyY2UgPSAgICJTb3V0aGVybiBJbGxpbm9pcyBVbml2LiwgRWR3YXJkc3ZpbGxlLCBJTCwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImF2ZXJhZ2UgcXVldWUgc2l6ZTsgY3ljbGluZzsgbGluZWFyIHByb2dyYW1taW5nOyBtYXRoZW1hdGljYWwgcHJvZ3JhbW1pbmcsIGxpbmVhcjsgTVBTIHBhY2thZ2U7IHBoZW5vbWVuYTsgcHJvYmFiaWxpdHkgLS0tIFF1ZXVlaW5nIFRoZW9yeTsgcXVldWVpbmcgdGhlb3J5IiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtLbm90dDoxOTc3Ok5TQiwKICBhdXRob3IgPSAgICAgICAiR2FyeSBELiBLbm90dCIsCiAgdGl0bGUgPSAgICAgICAgIkEgTnVtYmVyaW5nIFN5c3RlbSBmb3IgQmluYXJ5IFRyZWVzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIwIiwKICBudW1iZXIgPSAgICAgICAiMiIsCiAgcGFnZXMgPSAgICAgICAgIjExMy0tMTE1IiwKICBtb250aCA9ICAgICAgICBmZWIsCiAgeWVhciA9ICAgICAgICAgIjE5NzciLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjAyNTAgKENvbWJpbmF0b3JpYWwgbWF0aGVtYXRpY3MpOyBDMTE2MCAoQ29tYmluYXRvcmlhbCBtYXRoZW1hdGljcyk7IEM0MjQwIChQcm9ncmFtbWluZyBhbmQgYWxnb3JpdGhtIHRoZW9yeSkiLAogIGNvcnBzb3VyY2UgPSAgICJOYXQuIEluc3QuIG9mIEhlYWx0aCwgQmV0aGVzZGEsIE1ELCBVU0EiLAogIGtleXdvcmRzID0gICAgICJiaW5hcnkgc2VhcmNoIHRyZWVzOyBiaW5hcnkgdHJlZXM7IG51bWJlcmluZyBzeXN0ZW07IHBlcm11dGF0aW9uczsgcmFua2luZyBmdW5jdGlvbjsgdHJlZXMgKG1hdGhlbWF0aWNzKSIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7Q2xhcHNvbjoxOTc3OklBVCwKICBhdXRob3IgPSAgICAgICAiUGhpbGlwIENsYXBzb24iLAogIHRpdGxlID0gICAgICAgICJJbXByb3ZpbmcgdGhlIEFjY2VzcyBUaW1lIGZvciBSYW5kb20gQWNjZXNzIEZpbGVzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIwIiwKICBudW1iZXIgPSAgICAgICAiMyIsCiAgcGFnZXMgPSAgICAgICAgIjEyNy0tMTM1IiwKICBtb250aCA9ICAgICAgICBtYXIsCiAgeWVhciA9ICAgICAgICAgIjE5NzciLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiQ2x1c3RlcmluZyBpbiB0aGUga2V5IHNldCBpcyBkZWNyZWFzZWQgYnkgc21vb3RoaW5nIHRoZSBrZXktdG8tYWRkcmVzcyB0cmFuc2Zvcm1hdGlvbiwgYW5kIGJ5IGFkZGluZyBzaGFkb3cgYnVja2V0cyB0byBhbiBvcGVuIGNoYWluaW5nIGZpbGUuIFRoZSBrZXlzIGFyZSBwcmUtaGFzaGVkIGJlZm9yZSB0aGUgYWRkcmVzcyBkaXZpc2lvbiwgdG8gcmVtb3ZlIHRoZSBlZmZlY3Qgb2Ygc2VxdWVudGlhbCBwcm9wZXJ0aWVzIGluIHRoZSBrZXkgc2V0LiBTaGFkb3cgYnVja2V0cyBpbiB0aGUga2V5IHNlYXJjaCBzZXF1ZW5jZSByZWR1Y2UgdGhlIGVmZmVjdCBvZiBub251bmlmb3JtaXR5IGluIGZpbGUgbG9hZGluZywgYW5kIGRlY3JlYXNlIHRoZSBudW1iZXIgb2YgbWF4aW11bSBwcm9iZXMgbmVlZGVkIHRvIGxvY2F0ZSBhIHJlY29yZC4gVGhlIGNvbWJpbmVkIGVmZmVjdHMgb2YgdGhlc2UgdGVjaG5pcXVlcyBsZWFkIHRvIGltcHJvdmVkIGZpbGUgcGVyZm9ybWFuY2UgZm9yIHNlY29uZGFyeSBzdG9yYWdlIGRldmljZXMsIGFzIHNob3duIGJ5IGVtcGlyaWNhbCBzdHVkaWVzLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbikiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMzsgOTAxIiwKICBjb3Jwc291cmNlID0gICAiSUJNIFVuaXRlZCBLaW5nZG9tIEx0ZC4sIEZlbHRoYW0sIFVLIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFjY2VzcyB0aW1lOyBjaGFpbmluZyBmaWxlOyBkYXRhIHByb2Nlc3NpbmcgLS0tIEZpbGUgT3JnYW5pemF0aW9uOyBkYXRhIHN0b3JhZ2UsIGRpZ2l0YWw7IGZpbGUgbG9hZGluZzsgZmlsZSBvcmdhbmlzYXRpb247IGltcHJvdmVkIGZpbGU7IGluZm9ybWF0aW9uIHJldHJpZXZhbCBzeXN0ZW1zIC0tLSBEZXNpZ247IGtleSBzZWFyY2ggc2VxdWVuY2U7IG1heGltdW0gcHJvYmVzOyBub251bmlmb3JtaXR5OyBvcGVuOyBwZXJmb3JtYW5jZTsgcmFuZG9tIGFjY2VzcyBmaWxlczsgc2Vjb25kYXJ5IHN0b3JhZ2UgZGV2aWNlczsgc2VxdWVudGlhbCBwcm9wZXJ0aWVzOyBzaGFkb3cgYnVja2V0cyIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7WXU6MTk3NzpFSVIsCiAgYXV0aG9yID0gICAgICAgIkMuIFQuIFl1IGFuZCBHLiBTYWx0b24iLAogIHRpdGxlID0gICAgICAgICJFZmZlY3RpdmUgSW5mb3JtYXRpb24gUmV0cmlldmFsIFVzaW5nIFRlcm0gQWNjdXJhY3kiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjAiLAogIG51bWJlciA9ICAgICAgICIzIiwKICBwYWdlcyA9ICAgICAgICAiMTM1LS0xNDIiLAogIG1vbnRoID0gICAgICAgIG1hciwKICB5ZWFyID0gICAgICAgICAiMTk3NyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4QTUwIiwKICBNUm51bWJlciA9ICAgICAiNTUgNzAxMiIsCiAgbXJyZXZpZXdlciA9ICAgIkZ1amlvIE5pc2hpZGEiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiRXZhbHVhdGlvbiBvZiBhIHJldHJpZXZhbCBzeXN0ZW0gaW4gdGhpcyBzdHVkeSBpcyBiYXNlZCBvbiBvcHRpbWl6aW5nIHRoZSBwZXJmb3JtYW5jZSBvZiBhIHNwZWNpZmljIHVzZXIgcXVlcnkuIFRoZSBjb25jZXB0IG9mIHF1ZXJ5IHRlcm0gYWNjdXJhY3kgaXMgaW50cm9kdWNlZCBhcyB0aGUgcHJvYmFiaWxpdHkgb2Ygb2NjdXJyZW5jZSBvZiBhIHF1ZXJ5IHRlcm0gaW4gdGhlIGRvY3VtZW50cyByZWxldmFudCB0byB0aGF0IHF1ZXJ5LiBCeSByZWxhdGluZyB0ZXJtIGFjY3VyYWN5IHRvIHRoZSBmcmVxdWVuY3kgb2Ygb2NjdXJyZW5jZSBvZiB0aGUgdGVybSBpbiB0aGUgZG9jdW1lbnRzIG9mIGEgY29sbGVjdGlvbiBpdCBpcyBwb3NzaWJsZSB0byBnaXZlIGZvcm1hbCBwcm9vZnMgb2YgdGhlIGVmZmVjdGl2ZW5lc3Mgd2l0aCByZXNwZWN0IHRvIGEgZ2l2ZW4gdXNlciBxdWVyeSBvZiBhIG51bWJlciBvZiBhdXRvbWF0aWMgaW5kZXhpbmcgc3lzdGVtcyB0aGF0IGhhdmUgYmVlbiB1c2VkIHN1Y2Nlc3NmdWxseSBpbiBleHBlcmltZW50YWwgc2l0dWF0aW9ucy4gQW1vbmcgdGhlc2UgYXJlIGludmVyc2UgZG9jdW1lbnQgZnJlcXVlbmN5IHdlaWdodGluZywgdGhlc2F1cnVzIGNvbnN0cnVjdGlvbiwgYW5kIHBocmFzZSBnZW5lcmF0aW9uLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM3MjUwIChJbmZvcm1hdGlvbiBzdG9yYWdlIGFuZCByZXRyaWV2YWwpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjM7IDkwMSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIG9mIEFsYmVydGEsIEVkbW9udG9uLCBBbHRhLiwgQ2FuYWRhIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImF1dG9tYXRpYyBpbmRleGluZzsgY29uY2VwdDsgZXZhbHVhdGlvbjsgZm9ybWFsIHByb29mczsgaW5mb3JtYXRpb24gcmV0cmlldmFsOyBpbmZvcm1hdGlvbiByZXRyaWV2YWwgc3lzdGVtIGV2YWx1YXRpb247IGluZm9ybWF0aW9uIHJldHJpZXZhbCBzeXN0ZW1zOyBpbmZvcm1hdGlvbiBzY2llbmNlIC0tLSBJbmRleGluZzsgcGVyZm9ybWFuY2U7IHF1ZXJ5IHRlcm0gYWNjdXJhY3kiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0x1bmRlOjE5Nzc6RUVTLAogIGF1dGhvciA9ICAgICAgICJBbXVuZCBMdW5kZSIsCiAgdGl0bGUgPSAgICAgICAgIkVtcGlyaWNhbCBFdmFsdWF0aW9uIG9mIFNvbWUgRmVhdHVyZXMgb2YgSW5zdHJ1Y3Rpb24gU2V0IFByb2Nlc3NvciBBcmNoaXRlY3R1cmVzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIwIiwKICBudW1iZXIgPSAgICAgICAiMyIsCiAgcGFnZXMgPSAgICAgICAgIjE0My0tMTUzIiwKICBtb250aCA9ICAgICAgICBtYXIsCiAgeWVhciA9ICAgICAgICAgIjE5NzciLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L01pc2MvcmlzYy5iaWIiLAogIGFic3RyYWN0ID0gICAgICJUaGlzIHBhcGVyIHByZXNlbnRzIG1ldGhvZHMgZm9yIGVtcGlyaWNhbCBldmFsdWF0aW9uIG9mIGZlYXR1cmVzIG9mIEluc3RydWN0aW9uIFNldCBQcm9jZXNzb3JzIChJU1BzKS4gSVNQIGZlYXR1cmVzIGFyZSBldmFsdWF0ZWQgaW4gdGVybXMgb2YgdGhlIHRpbWUgdXNlZCBvciBzYXZlZCBieSBoYXZpbmcgb3Igbm90IGhhdmluZyB0aGUgZmVhdHVyZS4gXHBhciBUaGUgbWV0aG9kcyBhcmUgYmFzZWQgb24gYW5hbHlzaXMgb2YgdHJhY2VzIG9mIHByb2dyYW0gZXhlY3V0aW9ucy4gVGhlIGNvbmNlcHQgb2YgYSByZWdpc3RlciBsaWZlIGlzIGluIHRyb2R1Y2VkLCBhbmQgdXNlZCB0byBhbnN3ZXIgcXVlc3Rpb25zIGxpa2U6IEhvdyBtYW55IHJlZ2lzdGVycyBhcmUgdXNlZCBzaW11bHRhbmVvdXNseT8gSG93IG1hbnkgd291bGQgYmUgc3VmZmljaWVudCBhbGwgb2YgdGhlIHRpbWU/IE1vc3Qgb2YgdGhlIHRpbWU/IFdoYXQgd291bGQgdGhlIG92ZXJoZWFkIGJlIGlmIHRoZSBudW1iZXIgb2YgcmVnaXN0ZXJzIHdlcmUgcmVkdWNlZD8gV2hhdCBhcmUgcmVnaXN0ZXJzIHVzZWQgZm9yIGR1cmluZyB0aGVpciBsaXZlcz8gVGhlIHBhcGVyIGFsc28gZGlzY3Vzc2VzIHRoZSBwcm9ibGVtIG9mIGRldGVjdGluZyBkZXNpcmFibGUgYnV0IG5vbi1leGlzdGluZyBpbnN0cnVjdGlvbnMuIE90aGVyIHByb2JsZW1zIGFyZSBicmllZmx5IGRpc2N1c3NlZC4gRXhwZXJpbWVudGFsIHJlc3VsdHMgYXJlIHByZXNlbnRlZCwgb2J0YWluZWQgYnkgYW5hbHl6aW5nIDQxIHByb2dyYW1zIHJ1bm5pbmcgb24gdGhlIERFQyBzeXN0ZW0gMTAgSVNQLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM1MjIwIChDb21wdXRlciBhcmNoaXRlY3R1cmUpOyBDNjE1MEcgKERpYWdub3N0aWMsIHRlc3RpbmcsIGRlYnVnZ2luZyBhbmQgZXZhbHVhdGluZyBzeXN0ZW1zKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIyOyA3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJDYXJuZWdpZS1NZWxsb24gVW5pdi4sIFBpdHRzYnVyZywgUEEsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhcmNoaXRlY3R1cmVzOyBjb21wdXRlciBhcmNoaXRlY3R1cmU7IGNvbXB1dGVyIHByb2dyYW1taW5nIGxhbmd1YWdlcyAtLS0gTWFjaGluZSBPcmllbnRhdGlvbjsgY29tcHV0ZXIgc2VsZWN0aW9uIGFuZCBldmFsdWF0aW9uOyBjb21wdXRlcnMsIGRpZ2l0YWwgLS0tIEdlbmVyYWwgUHVycG9zZSBBcHBsaWNhdGlvbjsgZXZhbHVhdGlvbjsgZXhlY3V0aW9uIHRpbWU7IGluc3RydWN0aW9uIHNldCBwcm9jZXNzb3I7IGluc3RydWN0aW9uIHNldHM7IGluc3RydWN0aW9uIHRyYWNpbmc7IG1pY3JvY29kaW5nOyBNSVBTOyBvcCBjb2RlIHV0aWxpemF0aW9uOyBwaXBlbGluaW5nOyBwcm9ncmFtIGJlaGF2aW9yOyByZWR1Y2VkOyByZWdpc3RlciBsaWZlOyByZWdpc3RlciBzdHJ1Y3R1cmVzOyByZWdpc3RlciB1dGlsaXphdGlvbjsgcmVzdHJpY3RlZCBpbnN0cnVjdGlvbiBzZXQgY29tcHV0ZXIgYXJjaGl0ZWN0dXJlOyBSSVNDOyBzaW11bHRhbmVvdXMgcmVnaXN0ZXIgbGl2ZXMiLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0Jyb3duOjE5Nzc6TU1SLAogIGF1dGhvciA9ICAgICAgICJSLiBNLiBCcm93biBhbmQgSi4gQy4gQnJvd25lIGFuZCBLLiBNLiBDaGFuZHkiLAogIHRpdGxlID0gICAgICAgICJNZW1vcnkgTWFuYWdlbWVudCBhbmQgUmVzcG9uc2UgVGltZSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMCIsCiAgbnVtYmVyID0gICAgICAgIjMiLAogIHBhZ2VzID0gICAgICAgICIxNTMtLTE2NSIsCiAgbW9udGggPSAgICAgICAgbWFyLAogIHllYXIgPSAgICAgICAgICIxOTc3IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjhBNTAgKDYwSzMwKSIsCiAgTVJudW1iZXIgPSAgICAgIjU1IDY5OTYiLAogIG1ycmV2aWV3ZXIgPSAgICJKYWNlayBCbGF6ZXdpY3oiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0Rpc3RyaWJ1dGVkL3NpbXVsYW4uYmliIiwKICBhYnN0cmFjdCA9ICAgICAiVGhpcyBwYXBlciBwcmVzZW50cyBhIG1ldGhvZG9sb2d5IGZvciBpbmNsdWRpbmcgdGhlIGVmZmVjdHMgb2YgZmluaXRlIG1lbW9yeSBzaXplIGFuZCB3b3JrbG9hZCBtZW1vcnkgcmVxdWlyZW1lbnRzIGluIHF1ZXVlaW5nIG5ldHdvcmsgbW9kZWxzIG9mIGNvbXB1dGVyIHN5c3RlbXMuIEVtcGlyaWNhbCBhbmFseXNlcyBhbmQgYW5hbHl0aWMgc3R1ZGllcyBiYXNlZCBvbiBhcHBseWluZyB0aGlzIG1ldGhvZG9sb2d5IHRvIGFuIGFjdHVhbCBtdWx0aWFjY2VzcyBpbnRlcmFjdGl2ZSBzeXN0ZW0gYXJlIHJlcG9ydGVkLiBBIG11bHRpcGhhc2UsIGFuYWx5dGljYWxseSBzb2x1YmxlIG1vZGVsIGlzIHByb3Bvc2VkIGFzIGJlaW5nIGJyb2FkbHkgYXBwbGljYWJsZSB0byB0aGUgYW5hbHlzaXMgb2YgaW50ZXJhY3RpdmUgY29tcHV0ZXIgc3lzdGVtcyB3aGljaCB1c2Ugbm9ucGFnZWQgbWVtb3JpZXMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIyOyA3MjM7IDkyMiIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIG9mIFRleGFzLCBBdXN0aW4sIFRYLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgb3BlcmF0aW5nIHN5c3RlbXMgLS0tIFN0b3JhZ2UgQWxsb2NhdGlvbjsgY29tcHV0ZXIgc3lzdGVtcywgZGlnaXRhbDsgZGlzdHJpYnV0aW9uOyBpbnRlcmFjdGl2ZSBjb21wdXRlcjsgam9iIHN3YXAgdGltZTsgbWVtb3J5OyBtZW1vcnkgcmVxdWlyZW1lbnQ7IG1vZGVsOyBtdWx0aS1hY2Nlc3Mgc3lzdGVtczsgbXVsdGlwaGFzZTsgbm9ucGFnZWQgbWVtb3JpZXM7IHBlcmZvcm1hbmNlIG1lYXN1cmVzOyBwcm9iYWJpbGl0eSAtLS0gUXVldWVpbmcgVGhlb3J5OyByZXNwb25zZSB0aW1lOyBzdG9yYWdlIG1hbmFnZW1lbnQ7IHN5c3RlbXM7IHV0aWxpemF0aW9uOyB3b3JrbG9hZCB2YXJpYWJsZXMiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0J1cnRvbjoxOTc3OlJNUywKICBhdXRob3IgPSAgICAgICAiV2FycmVuIEJ1cnRvbiIsCiAgdGl0bGUgPSAgICAgICAgIlJlcHJlc2VudGF0aW9uIG9mIE1hbnktU2lkZWQgUG9seWdvbnMgYW5kIFBvbHlnb25hbCBMaW5lcyBmb3IgUmFwaWQgUHJvY2Vzc2luZyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMCIsCiAgbnVtYmVyID0gICAgICAgIjMiLAogIHBhZ2VzID0gICAgICAgICIxNjYtLTE3MSIsCiAgbW9udGggPSAgICAgICAgbWFyLAogIHllYXIgPSAgICAgICAgICIxOTc3IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL3NpZ2dyYXBoLzc3LmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIkEgcmVwcmVzZW50YXRpb24gZm9yIHBvbHlnb25zIGFuZCBwb2x5Z29uYWwgbGluZXMgaXMgZGVzY3JpYmVkIHdoaWNoIGFsbG93cyBzZXRzIG9mIGNvbnNlY3V0aXZlIHNpZGVzIHRvIGJlIGNvbGxlY3RpdmVseSBleGFtaW5lZC4gVGhlIHNldHMgb2Ygc2lkZXMgYXJlIGFycmFuZ2VkIGluIGEgYmluYXJ5IHRyZWUgaGllcmFyY2h5IGJ5IGluY2x1c2lvbi4gQSBmYXN0IGFsZ29yaXRobSBmb3IgdGVzdGluZyB0aGUgaW5jbHVzaW9uIG9mIGEgcG9pbnQgaW4gYSBtYW55LXNpZGVkIHBvbHlnb24gaXMgZ2l2ZW4uIEl0IGlzIHNob3duIHRoYXQgdGhlIHBvaW50cyBvZiBpbnRlcnNlY3Rpb24gb2YgdHdvIHBvbHlnb25hbCBsaW5lcyBjYW4gYmUgbG9jYXRlZCBieSB3aGF0IGlzIGVzc2VudGlhbGx5IGEgYmluYXJ5IHRyZWUgc2VhcmNoLiBUaGUgYWxnb3JpdGhtIGFuZCBhIHByYWN0aWNhbCBleGFtcGxlIGFyZSBkaXNjdXNzZWQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMzBCIChHcmFwaGljcyB0ZWNobmlxdWVzKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzOyA5MjEiLAogIGNvcnBzb3VyY2UgPSAgICJNaWNoaWdhbiBUZWNoLiBVbml2LiwgSG91Z2h0b24sIE1JLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgcHJvZ3JhbW1pbmcgLS0tIFN1YnJvdXRpbmVzOyBkYXRhIHByb2Nlc3NpbmcgLS0tIE5hdHVyYWwgU2NpZW5jZXMgQXBwbGljYXRpb25zOyBpbWFnZSBwcm9jZXNzaW5nOyBtYXRoZW1hdGljYWwgdGVjaG5pcXVlcyAtLS0gVHJlZXMiLAogIGtleXdvcmRzID0gICAgICJiaW5hcnkgdHJlZSBoaWVyYXJjaHk7IGNvbXB1dGVyIGdyYXBoaWNzOyBmYXN0IGFsZ29yaXRobTsgaW5jbHVzaW9uOyBwb2x5Z29uYWwgbGluZXM7IHBvbHlnb25zOyByYXBpZCBwcm9jZXNzaW5nOyByZXByZXNlbnRhdGlvbjsgc3BlZWQiLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0h1bnQ6MTk3NzpPU1IsCiAgYXV0aG9yID0gICAgICAgIkguIEIuIHtIdW50LCBJSUl9IGFuZCBULiBHLiBTenltYW5za2kgYW5kIEouIEQuIFVsbG1hbiIsCiAgdGl0bGUgPSAgICAgICAgIk9wZXJhdGlvbnMgb24gU3BhcnNlIFJlbGF0aW9ucyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMCIsCiAgbnVtYmVyID0gICAgICAgIjMiLAogIHBhZ2VzID0gICAgICAgICIxNzEtLTE3NiIsCiAgbW9udGggPSAgICAgICAgbWFyLAogIHllYXIgPSAgICAgICAgICIxOTc3IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjhBMjAgKDY4QTMwKSIsCiAgTVJudW1iZXIgPSAgICAgIjU1IDQ3NzQiLAogIG1ycmV2aWV3ZXIgPSAgICJBcm1pbiBDcmVtZXJzIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlZhcmlvdXMgY29tcHV0YXRpb25zIG9uIHJlbGF0aW9ucywgQm9vbGVhbiBtYXRyaWNlcywgb3IgZGlyZWN0ZWQgZ3JhcGhzLCBzdWNoIGFzIHRoZSBjb21wdXRhdGlvbiBvZiBwcmVjZWRlbmNlIHJlbGF0aW9ucyBmb3IgYSBjb250ZXh0LWZyZWUgZ3JhbW1hciwgY2FuIGJlIGRvbmUgYnkgYSBwcmFjdGljYWwgYWxnb3JpdGhtIHRoYXQgaXMgYXN5bXB0b3RpY2FsbHkgZmFzdGVyIHRoYW4gdGhvc2UgaW4gY29tbW9uIHVzZS4gVGhlIGhlYXJ0IG9mIHRoZSBhbGdvcml0aG1zIGlzIGEgZ2VuZXJhbCB0aGVvcmVtIGdpdmluZyBzdWZmaWNpZW50IGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYW4gZXhwcmVzc2lvbiB3aG9zZSBvcGVyYW5kcyBhcmUgc3BhcnNlIHJlbGF0aW9ucyBhbmQgd2hvc2Ugb3BlcmF0b3JzIGFyZSBjb21wb3NpdGlvbiwgdHJhbnNpdGl2ZSBjbG9zdXJlLCB1bmlvbiwgYW5kIGludmVyc2UsIGNhbiBiZSBjb21wdXRlZCBlZmZpY2llbnRseS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDIxMCAoRm9ybWFsIGxvZ2ljKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIxOyA3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJIYXJ2YXJkIFVuaXYuLCBDYW1icmlkZ2UsIE1BLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYXV0b21hdGEgdGhlb3J5IC0tLSBHcmFtbWFyczsgY29tcHV0YXRpb25hbCBjb21wbGV4aXR5OyBjb21wdXRhdGlvbnM7IGNvbXB1dGVyIG1ldGF0aGVvcnkgLS0tIFByb2dyYW1taW5nIFRoZW9yeTsgY29tcHV0ZXIgcHJvZ3JhbW1pbmc7IGNvbnRleHQgZnJlZSBncmFtbWFyOyBjb250ZXh0LWZyZWUgZ3JhbW1hcnM7IHByZWNlZGVuY2UgcmVsYXRpb25zOyBzcGFyc2UgcmVsYXRpb25zIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtOb2xhbjoxOTc3OkVDVSwKICBhdXRob3IgPSAgICAgICAiUmljaGFyZCBMLiBOb2xhbiIsCiAgdGl0bGUgPSAgICAgICAgIkVmZmVjdHMgb2YgQ2hhcmdlb3V0IG9uIFVzZXJcc2xhc2ggTWFuYWdlciBBdHRpdHVkZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjAiLAogIG51bWJlciA9ICAgICAgICIzIiwKICBwYWdlcyA9ICAgICAgICAiMTc3LS0xODUiLAogIG1vbnRoID0gICAgICAgIG1hciwKICB5ZWFyID0gICAgICAgICAiMTk3NyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJUaGUgcmVsYXRpb25zaGlwIG9mIGludGVybmFsIHByaWNpbmcgc3lzdGVtcyBmb3IgY29tcHV0ZXIgc2VydmljZXMgKGNoYXJnZW91dCBzeXN0ZW1zKSBhbmQgdXNlciBtYW5hZ2VtZW50IGF0dGl0dWRlcyBhYm91dCB0aGVpciBjb21wdXRlci1iYXNlZCBpbmZvcm1hdGlvbiBzeXN0ZW1zIGlzIGludmVzdGlnYXRlZC4gRGV2ZWxvcG1lbnQgYW5kIG1haW50ZW5hbmNlIG9mIGNvbXB1dGVyLWJhc2VkIHN5c3RlbXMgaXMgYXNzZXJ0ZWQgdG8gYmUgYSBjYXRlZ29yeSBvZiBvcmdhbml6YXRpb25hbCBjaGFuZ2UuIEEgYGBmZWx0IG5lZWQnJyBmb3IgdGhlIGNoYW5nZSBvbiB0aGUgcGFydCBvZiB0aGUgdXNlclxzbGFzaCBtYW5hZ2VyIGlzIHByZXJlcXVpc2l0ZSB0byBhbnkgY2hhbmdlIHRha2luZyBwbGFjZS4gVGhlIHJlc2VhcmNoIG1ldGhvZHMgb2YgYmVoYXZpb3JhbCBzY2llbmNlIGFyZSBhcHBsaWVkIHRvIGludmVzdGlnYXRlIHRoZSB1c2VyXHNsYXNoIG1hbmFnZXIgZW52aXJvbm1lbnQgYW5kIHRoZSBlZmZlY3RzIG9mIGNoYXJnZW91dC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDMDMxMCAoRURQIG1hbmFnZW1lbnQpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJIYXJ2YXJkIFVuaXYuLCBCb3N0b24sIE1BLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYXR0aXR1ZGVzOyBjaGFyZ2VvdXQ7IGNvbXB1dGVyIGZhY2lsaXRpZXM7IGNvbXB1dGVyIHNlcnZpY2VzOyBkYXRhIHByb2Nlc3NpbmcsIGJ1c2luZXNzOyBEUCBtYW5hZ2VtZW50OyBpbnRlcm5hbCBwcmljaW5nIHN5c3RlbXM7IHVzZXIvbWFuYWdlciBhdHRpdHVkZXMiLAogIHRyZWF0bWVudCA9ICAgICJFIEVjb25vbWljIiwKfQoKQEFydGljbGV7Qm9yb3ZpdHM6MTk3NzpDVU0sCiAgYXV0aG9yID0gICAgICAgIklzcmFlbCBCb3Jvdml0cyBhbmQgUGhpbGlwIEVpbi1Eb3IiLAogIHRpdGxlID0gICAgICAgICJDb3N0XHNsYXNoIHV0aWxpemF0aW9uOiB7QX0gbWVhc3VyZSBvZiBzeXN0ZW0gcGVyZm9ybWFuY2UiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjAiLAogIG51bWJlciA9ICAgICAgICIzIiwKICBwYWdlcyA9ICAgICAgICAiMTg1LS0xOTEiLAogIG1vbnRoID0gICAgICAgIG1hciwKICB5ZWFyID0gICAgICAgICAiMTk3NyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJBIG1ldGhvZCBpcyBwcmVzZW50ZWQgZm9yIGV2YWx1YXRpbmcgY29tcHV0ZXIgc3lzdGVtIHBlcmZvcm1hbmNlIGluIHRlcm1zIG9mIGEgY29zdFxzbGFzaCB1dGlsaXphdGlvbiBmYWN0b3IgYW5kIGEgbWVhc3VyZSBvZiBpbWJhbGFuY2UuIFRoZXNlIGNvZWZmaWNpZW50cyBpbmRpY2F0ZSB0aGUgZXh0ZW50IHRvIHdoaWNoIHRoZSB0b3RhbCBzeXN0ZW0gY29zdCBpcyBlZmZlY3RpdmVseSB1dGlsaXplZC4gVGhlIG1ldGhvZCBpbmNsdWRlcyBhIHRlY2huaXF1ZSBmb3IgdGhlIHZpc3VhbCByZXByZXNlbnRhdGlvbiBvZiBzeXN0ZW0gcGVyZm9ybWFuY2UuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzAzMTAgKEVEUCBtYW5hZ2VtZW50KTsgQzYxNTBHIChEaWFnbm9zdGljLCB0ZXN0aW5nLCBkZWJ1Z2dpbmcgYW5kIGV2YWx1YXRpbmcgc3lzdGVtcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMzsgOTExIiwKICBjb3Jwc291cmNlID0gICAiVGVsLUF2aXYgVW5pdi4sIFRlbC1Bdml2LCBJc3JhZWwiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgc3lzdGVtcywgZGlnaXRhbDsgY29zdCBhY2NvdW50aW5nIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXI7IGNvbXB1dGVyIHNlbGVjdGlvbiBhbmQgZXZhbHVhdGlvbjsgY29zdDsgY29zdC91dGlsaXphdGlvbiBmYWN0b3I7IGV2YWx1YXRpbmc7IG1lYXN1cmU7IG1lYXN1cmUgb2YgaW1iYWxhbmNlOyBzeXN0ZW0gcGVyZm9ybWFuY2U7IHRvdGFsIHN5c3RlbSIsCiAgdHJlYXRtZW50ID0gICAgIkUgRWNvbm9taWM7IFAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7QmF5czoxOTc3OkNORiwKICBhdXRob3IgPSAgICAgICAiQy4gQmF5cyIsCiAgdGl0bGUgPSAgICAgICAgIkEgY29tcGFyaXNvbiBvZiBuZXh0LWZpdCwgZmlyc3QtZml0LCBhbmQgYmVzdC1maXQiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjAiLAogIG51bWJlciA9ICAgICAgICIzIiwKICBwYWdlcyA9ICAgICAgICAiMTkxLS0xOTIiLAogIG1vbnRoID0gICAgICAgIG1hciwKICB5ZWFyID0gICAgICAgICAiMTk3NyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gb2YgU291dGggQ2Fyb2xpbmEsIENvbHVtYmlhLCBTQywgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiYmVzdDsgY29tcGFyaXNvbjsgZmlyc3QgZml0OyBmaXQ7IG5leHQgZml0OyBzdG9yYWdlIGFsbG9jYXRpb24iLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0JlcnRzY2g6MTk3NzpTUlAsCiAgYXV0aG9yID0gICAgICAgIkViZXJoYXJkIEJlcnRzY2giLAogIHRpdGxlID0gICAgICAgICJUaGUgc3RvcmFnZSByZXF1aXJlbWVudCBpbiBwcmVjZWRlbmNlIHBhcnNpbmciLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjAiLAogIG51bWJlciA9ICAgICAgICIzIiwKICBwYWdlcyA9ICAgICAgICAiMTkyLS0xOTYgKG9yIDE5Mi0tMTk0Pz8pIiwKICBtb250aCA9ICAgICAgICBtYXIsCiAgeWVhciA9ICAgICAgICAgIjE5NzciLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiUHJlY2VkZW5jZSB0YWJsZXMgYW5kIGxpbmVhciBwcmVjZWRlbmNlIGZ1bmN0aW9ucyBoYXZlIGJlZW4gdXNlZCBhbmQgZXh0ZW5zaXZlbHkgc3R1ZGllZCBhcyBhaWRzIGZvciBzeW50YXgtZGlyZWN0ZWQgY29tcGlsaW5nLiBJZiBhIHByZWNlZGVuY2UgdGFibGUgZXhpc3RzIGJ1dCBjYW5ub3QgYmUgcmVzaGFwZWQgaW50byBhIHBhaXIgb2YgcHJlY2VkZW5jZSBmdW5jdGlvbnMsIHNldmVyYWwgdGVjaG5pcXVlcyBmb3IgZWxpbWluYXRpbmcgYmxhbmsgZW50cmllcyBtYXkgYmUgdXNlZC4gSW4gdGhhdCBjYXNlLCBhbGwgbm9uYmxhbmsgZW50cmllcyBoYXZlIHRvIGJlIGtlcHQsIGhvd2V2ZXIuIFRodXMsIHRoZXJlIGlzIGEgY29uc2lkZXJhYmxlIGdhcCBiZXR3ZWVuIHRoZSBzdG9yYWdlIHJlcXVpcmVtZW50cyBvZiBwcmVjZWRlbmNlIGZ1bmN0aW9ucyBhbmQgcHJlY2VkZW5jZSB0YWJsZXMuIFRoZSBwdXJwb3NlIG9mIHRoaXMgcGFwZXIgaXMgdG8gc2hvdyB0aGF0IHRoZSBnYXAgYmV0d2VlbiBwcmVjZWRlbmNlIGZ1bmN0aW9ucyBhbmQgcHJlY2VkZW5jZSB0YWJsZXMgY2FuIGJlIGNsb3NlZCBpbiBhIG5hdHVyYWwgd2F5LiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTUwQyAoQ29tcGlsZXJzLCBpbnRlcnByZXRlcnMgYW5kIG90aGVyIHByb2Nlc3NvcnMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2IGRlcyBTYWFybGFuZGVzLCBTYWFyYnJ1Y2tlbiwgV2VzdCBHZXJtYW55IiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIG1ldGF0aGVvcnkgLS0tIFByb2dyYW1taW5nIFRoZW9yeTsgY29tcHV0ZXIgb3BlcmF0aW5nIHN5c3RlbXM7IGNvbXB1dGVyIHByb2dyYW1taW5nIC0tLSBTdWJyb3V0aW5lczsgcHJlY2VkZW5jZSBwYXJzaW5nOyBwcm9ncmFtIGNvbXBpbGVyczsgc3RvcmFnZSByZXF1aXJlbWVudDsgdmFsdWUgdGFibGUiLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle01vcnJpczoxOTc3OlNJLAogIGF1dGhvciA9ICAgICAgICJKYW1lcyBILiB7TW9ycmlzLCBKci59IGFuZCBCZW4gV2VnYnJlaXQiLAogIHRpdGxlID0gICAgICAgICJTdWJnb2FsIEluZHVjdGlvbiIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMCIsCiAgbnVtYmVyID0gICAgICAgIjQiLAogIHBhZ2VzID0gICAgICAgICIyMDktLTIyMiIsCiAgbW9udGggPSAgICAgICAgYXByLAogIHllYXIgPSAgICAgICAgICIxOTc3IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjhBMDUiLAogIE1SbnVtYmVyID0gICAgICI1NiA0MjIyIiwKICBtcnJldmlld2VyID0gICAiQW5kcmVhIE1hZ2dpb2xvLVNjaGV0dGluaSIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvTWlzYy9GdW5jdGlvbmFsLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIkEgcHJvb2YgbWV0aG9kLCBzdWJnb2FsIGluZHVjdGlvbiwgaXMgcHJlc2VudGVkIGFzIGFuIGFsdGVybmF0aXZlIG9yIHN1cHBsZW1lbnQgdG8gdGhlIGNvbW1vbmx5IHVzZWQgaW5kdWN0aXZlIGFzc2VydGlvbiBtZXRob2QuIEl0cyBtYWpvciB2aXJ0dWUgaXMgdGhhdCBpdCBjYW4gb2Z0ZW4gYmUgdXNlZCB0byBwcm92ZSBhIGxvb3AncyBjb3JyZWN0bmVzcyBkaXJlY3RseSBmcm9tIGl0cyBpbnB1dC1vdXRwdXQgc3BlY2lmaWNhdGlvbiB3aXRob3V0IHRoZSB1c2Ugb2YgYW4gaW52YXJpYW50LiBUaGUgcmVsYXRpb24gYmV0d2VlbiBzdWJnb2FsIGluZHVjdGlvbiBhbmQgb3RoZXIgY29tbW9ubHkgdXNlZCBpbmR1Y3Rpb24gcnVsZXMgaXMgZXhwbG9yZWQgYW5kLCBpbiBwYXJ0aWN1bGFyLCBpdCBpcyBzaG93biB0aGF0IHN1YmdvYWwgaW5kdWN0aW9uIGNhbiBiZSB2aWV3ZWQgYXMgYSBzcGVjaWFsaXplZCBmb3JtIG9mIGNvbXB1dGF0aW9uIGluZHVjdGlvbi4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDI0MCAoUHJvZ3JhbW1pbmcgYW5kIGFsZ29yaXRobSB0aGVvcnkpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJYZXJveCBQYWxvIEFsdG8gUmVzLiBDZW50ZXIsIFBhbG8gQWx0bywgQ0EsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBtZXRhdGhlb3J5IC0tLSBQcm9ncmFtbWluZyBUaGVvcnk7IGNvbXB1dGVyIHByb2dyYW1taW5nOyBjb21wdXRlciBwcm9ncmFtbWluZyBsYW5ndWFnZXMgLS0tIFByb2dyYW0gRGVidWdnaW5nOyBmdW5jdGlvbmFsIHZlcmlmaWNhdGlvbiBjb3JyZWN0bmVzczsgcHJvZ3JhbSBwcm92aW5nOyBwcm9ncmFtbWluZyB0aGVvcnk7IHN1YmdvYWwgaW5kdWN0aW9uIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtUYW5pbW90bzoxOTc3OkVQUywKICBhdXRob3IgPSAgICAgICAiU3RldmVuIEwuIFRhbmltb3RvIGFuZCBUaGVvZG9zaW9zIFBhdmxpZGlzIiwKICB0aXRsZSA9ICAgICAgICAiRWRpdGluZyBvZiBQaWN0dXJlIFNlZ21lbnRhdGlvbnMgVXNpbmcgTG9jYWwgQW5hbHlzaXMgb2YgR3JhcGhzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIwIiwKICBudW1iZXIgPSAgICAgICAiNCIsCiAgcGFnZXMgPSAgICAgICAgIjIyMy0tMjI5IiwKICBtb250aCA9ICAgICAgICBhcHIsCiAgeWVhciA9ICAgICAgICAgIjE5NzciLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiQSBtYWpvciBwcm9ibGVtIGluIHBpY3R1cmUgcHJvY2Vzc2luZyBpcyB0aGUgZWxpbWluYXRpb24gb2YgdGhlIGxhcmdlIG51bWJlciBvZiBzcHVyaW91cyByZWdpb25zIHRoYXQgcmVzdWx0IGZyb20gYW4gaW5pdGlhbCBzZWdtZW50YXRpb24gYnkgcmVnaW9uIGdyb3dpbmcgdGVjaG5pcXVlcy4gVGhpcyBwYXBlciBkZXNjcmliZXMgYSBub25zZW1hbnRpYyBlZGl0aW5nIHNjaGVtZSB3aGljaCBwZXJmb3JtcyBlbGltaW5hdGlvbnMgb24gdGhlIGJhc2lzIG9mIGxvY2FsIHByb3BlcnRpZXMgb2YgdGhlIHJlZ2lvbiBhZGphY2VuY3kgZ3JhcGguIFRoZSBzY2hlbWUgaXMgYmFzZWQgb24gZGVmaW5pdGlvbnMgb2YgZ3JhcGggcHJvcGVydGllcyB3aGljaCBhcmUgc2F0aXNmaWVkIHdoZW4gYSBzcHVyaW91cyByZWdpb24gaXMgcHJlc2VudDsgdGhlbiBlZGl0aW5nIGlzIGVxdWl2YWxlbnQgdG8gZmFzdCBncmFwaCBvcGVyYXRpb25zLiBBIG51bWJlciBvZiBleGFtcGxlcyBhcmUgc2hvd24uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjYxNDBDIChPcHRpY2FsIGluZm9ybWF0aW9uLCBpbWFnZSBhbmQgdmlkZW8gc2lnbmFsIHByb2Nlc3NpbmcpOyBDMTI1MCAoUGF0dGVybiByZWNvZ25pdGlvbikiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMzsgOTIxIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gb2YgQ29ubmVjdGljdXQsIFN0b3JycywgQ1QsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJlZGl0aW5nOyBncmFwaHM7IGltYWdlIHByb2Nlc3Npbmc7IGxvY2FsIGFuYWx5c2lzOyBtYXRoZW1hdGljYWwgdGVjaG5pcXVlcyAtLS0gR3JhcGggVGhlb3J5OyBwYXR0ZXJuIHJlY29nbml0aW9uIHN5c3RlbXM7IHBpY3R1cmUgcHJvY2Vzc2luZzsgcGljdHVyZSBzZWdtZW50YXRpb25zIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtGaW5kbGVyOjE5Nzc6U01DLAogIGF1dGhvciA9ICAgICAgICJOaWNob2xhcyBWLiBGaW5kbGVyIiwKICB0aXRsZSA9ICAgICAgICAiU3R1ZGllcyBpbiBNYWNoaW5lIENvZ25pdGlvbiBVc2luZyB0aGUgR2FtZSBvZiBQb2tlciIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMCIsCiAgbnVtYmVyID0gICAgICAgIjQiLAogIHBhZ2VzID0gICAgICAgICIyMzAtLTI0NSIsCiAgbW9udGggPSAgICAgICAgYXByLAogIHllYXIgPSAgICAgICAgICIxOTc3IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkEgcHJvZ3Jlc3MgcmVwb3J0IGlzIHByZXNlbnRlZCBvZiBvbi1nb2luZyByZXNlYXJjaCBlZmZvcnRzIGNvbmNlcm5pbmcgaHVtYW4gZGVjaXNpb24tbWFraW5nIHVuZGVyIHVuY2VydGFpbnR5IGFuZCByaXNrIGFuZCBodW1hbiBwcm9ibGVtLXNvbHZpbmcgYW5kIGxlYXJuaW5nIHByb2Nlc3NlcyBvbiB0aGUgb25lIGhhbmQsIGFuZCBtYWNoaW5lIGxlYXJuaW5nLCBsYXJnZSBzY2FsZSBwcm9ncmFtbWluZyBzeXN0ZW0sIGFuZCBub3ZlbCBwcm9ncmFtbWluZyB0ZWNobmlxdWVzIG9uIHRoZSBvdGhlci4gVGhlcmUgaGFzIGFsc28gYmVlbiBpbnRlcmVzdCBpbiBob3cgaHVtYW5zIG1ha2UgZGVkdWN0aXZlIGFuZCBpbmR1Y3RpdmUgaW5mZXJlbmNlcyBhbmQgZm9ybSBhbmQgb3B0aW1pemUgaGV1cmlzdGljIHJ1bGVzLCBhbmQgaG93IG1hY2hpbmVzIGNhbiByZWFjaCBzaW1pbGFyIHJlc3VsdHMuIEFsdGhvdWdoIHRoZSB2ZWhpY2xlIG9mIHRoZXNlIGludmVzdGlnYXRpb25zIGhhcyBiZWVuIHRoZSBnYW1lIG9mIHBva2VyLCBhIGNvbmNlcHR1YWwgZnJhbWV3b3JrIGhhcyBiZWVuIHByb3ZpZGVkIHRoYXQgc2hvdWxkIGhhdmUgYSBmYWlybHkgd2lkZSByYW5nZSBvZiBhcHBsaWNhYmlsaXR5LiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMxMjMwIChBcnRpZmljaWFsIGludGVsbGlnZW5jZSkiLAogIGNsYXNzaWZpY2F0aW9uID0gIjQ2MTsgNzIzOyA5MTI7IDkyMiIsCiAgY29ycHNvdXJjZSA9ICAgIlN0YXRlIFVuaXYuIG9mIE5ldyBZb3JrLCBCdWZmYWxvLCBOWSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFydGlmaWNpYWwgaW50ZWxsaWdlbmNlOyBkYXRhIHByb2Nlc3NpbmcgLS0tIFBzeWNob2xvZ3kgQXBwbGljYXRpb25zOyBkZWNpc2lvbiB0aGVvcnkgYW5kIGFuYWx5c2lzOyBodW1hbiBkZWNpc2lvbiBtYWtpbmc7IGh1bWFuIHByb2JsZW0gc29sdmluZzsgbGFyZ2Ugc2NhbGUgcHJvZ3JhbW1pbmcgc3lzdGVtczsgbGVhcm5pbmc7IG1hY2hpbmUgY29nbml0aW9uOyBtYWNoaW5lIGxlYXJuaW5nOyBwb2tlcjsgcHJvYmFiaWxpdHk7IHByb2Nlc3Nlczsgcmlzazsgc3lzdGVtcyBzY2llbmNlIGFuZCBjeWJlcm5ldGljczsgdW5jZXJ0YWludHkiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle01hcnV5YW1hOjE5Nzc6QURBLAogIGF1dGhvciA9ICAgICAgICJLLiBNYXJ1eWFtYSBhbmQgUy4gRS4gU21pdGgiLAogIHRpdGxlID0gICAgICAgICJBbmFseXNpcyBvZiBEZXNpZ24gQWx0ZXJuYXRpdmVzIGZvciBWaXJ0dWFsIE1lbW9yeSBJbmRleGVzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIwIiwKICBudW1iZXIgPSAgICAgICAiNCIsCiAgcGFnZXMgPSAgICAgICAgIjI0NS0tMjU0IiwKICBtb250aCA9ICAgICAgICBhcHIsCiAgeWVhciA9ICAgICAgICAgIjE5NzciLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0RhdGFiYXNlL1dpZWRlcmhvbGQuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiQSBjbGFzcyBvZiBpbmRleCBzdHJ1Y3R1cmVzIG1vZGVsZWQgYWZ0ZXIgdGhlIHN0cnVjdHVyZSBvZiBWU0FNIC0tLSBzaW1pbGFyIHRvIEItdHJlZXMgYnV0IGJpYXNlZCB0b3dhcmQgc2VxdWVudGlhbCBwcm9jZXNzaW5nIC0tLSBpcyBkZXNjcmliZWQuIERlc2lnbiBhbHRlcm5hdGl2ZXMgd2l0aGluIHRoaXMgY2xhc3Mgb2YgaW5kZXggc3RydWN0dXJlcyBhcmUgYW5hbHl6ZWQuIFRoZXNlIGFsdGVybmF0aXZlcyBpbmNsdWRlIGEgY2hvaWNlIG9mIHNlYXJjaCBzdHJhdGVneSwgd2hldGhlciBvciBub3QgcGFnZXMgaW4gdGhlIGluZGV4IGFyZSBzdHJ1Y3R1cmVkLCBhbmQgd2hldGhlciBvciBub3Qga2V5cyBhcmUgY29tcHJlc3NlZC4gVGhlIGF2ZXJhZ2UgY29zdCBvZiByZXRyaWV2aW5nIGVudHJpZXMgZnJvbSB0aGVzZSBpbmRleGVzIGlzIGV4cHJlc3NlZCBhcyBhIHdlaWdodGVkIHN1bSBvZiB0aGUgY29zdCBvZiBhIGJhc2ljIGtleSBjb21wYXJpc29uIGFuZCB0aGUgY29zdCBvZiBjcm9zc2luZyBhIHBhZ2UgYm91bmRhcnkgaW4gdGhlIGluZGV4IHN0cnVjdHVyZS4gRm9ybXVsYXMgZm9yIHRoZSByZXRyaWV2YWwgY29zdHMgZm9yIHBvc3NpYmxlIGNvbWJpbmF0aW9ucyBvZiBkZXNpZ24gYWx0ZXJuYXRpdmVzIGFyZSBnaXZlbi4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJJQk0gVGhvbWFzIEouIFdhdHNvbiBSZXMuIENlbnRlciwgWW9ya3Rvd24gSGVpZ2h0cywgTlksIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21wcmVzc2VkOyBjb3N0czsgZGF0YSBwcm9jZXNzaW5nIC0tLSBEYXRhIEhhbmRsaW5nOyBkYXRhIHN0b3JhZ2UsIGRpZ2l0YWw7IGRlc2lnbiBhbHRlcm5hdGl2ZXM7IGluZGV4IHN0cnVjdHVyZXM7IHBhZ2VzOyByZXRyaWV2YWw7IHNlYXJjaCBzdHJhdGVneTsgc3RydWN0dXJlZDsgdmlydHVhbCBtZW1vcnk7IHZpcnR1YWwgc3RvcmFnZSIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7THVjYXM6MTk3NzpTSFMsCiAgYXV0aG9yID0gICAgICAgIkhlbnJ5IEMuIHtMdWNhcywgSnIufSBhbmQgSmltbXkgQS4gU3V0dG9uIiwKICB0aXRsZSA9ICAgICAgICAiU3RhZ2UgSHlwb3RoZXNpcyBhbmQgdGhlIHtTfS1DdXJ2ZTogU29tZSBDb250cmFkaWN0b3J5IEV2aWRlbmNlIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIwIiwKICBudW1iZXIgPSAgICAgICAiNCIsCiAgcGFnZXMgPSAgICAgICAgIjI1NC0tMjU5IiwKICBtb250aCA9ICAgICAgICBhcHIsCiAgeWVhciA9ICAgICAgICAgIjE5NzciLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiVGhlIHMtc2hhcGVkIGJ1ZGdldCBjdXJ2ZSBvZiBSLiBOb2xhbidzIHN0YWdlIG1vZGVsIG9mIGNvbXB1dGVyIGRldmVsb3BtZW50IGluIGFuIG9yZ2FuaXphdGlvbiAoQ29tbSBBQ00gdiAxNiBuIDcgSnVsIDE5NzMgcCAzOTkpIGlzIHRlc3RlZC4gUmVzZWFyY2ggb24gdGhlIGRhdGEgcHJvY2Vzc2luZyBidWRnZXRzIG9mIENhbGlmb3JuaWEgY291bnRpZXMgZmFpbHMgdG8gc3VwcG9ydCB0aGUgcy1zaGFwZWQgY3VydmUgb3IgdGhlIHVzZSBvZiBidWRnZXRzIGFzIGEgYmFzaXMgZm9yIGEgc3RhZ2UgbW9kZWwuIEhvd2V2ZXIsIHRoZSByZXN1bHRzIGRvIG5vdCBpbnZhbGlkYXRlIHRoZSBjb25jZXB0IG9mIGEgc3RhZ2UgbW9kZWwuIFRoZSBhbmFseXNpcyBzdWdnZXN0cyBhbiBhbHRlcm5hdGl2ZSBtb2RlbCBvZiBidWRnZXQgZ3Jvd3RoIGFuZCBhIHNlcGFyYXRpb24gYmV0d2VlbiBtb2RlbHMgb2YgYnVkZ2V0aW5nIGdyb3d0aCBhbmQgZ3Jvd3RoIHN0YWdlcyBpbiB0aGUgZGV2ZWxvcG1lbnQgb2YgdGhlIGNvbXB1dGVyIHJlc291cmNlLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMwMzEwIChFRFAgbWFuYWdlbWVudCkiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMzsgOTExOyA5MTIiLAogIGNvcnBzb3VyY2UgPSAgICJOZXcgWW9yayBVbml2LiwgTmV3IFlvcmssIE5ZLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYnVkZ2V0IGN1cnZlOyBjb21wdXRlciBkZXZlbG9wbWVudDsgZGF0YTsgZGF0YSBwcm9jZXNzaW5nOyBEUCBtYW5hZ2VtZW50OyBtYW5hZ2VtZW50IC0tLSBBcHBsaWNhdGlvbnM7IHByb2Nlc3NpbmcgYnVkZ2V0czsgc3RhZ2UgaHlwb3RoZXNpcyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7WWFvOjE5Nzc6QUJBLAogIGF1dGhvciA9ICAgICAgICJTLiBCLiBZYW8iLAogIHRpdGxlID0gICAgICAgICJBcHByb3hpbWF0aW5nIGJsb2NrIGFjY2Vzc2VzIGluIGRhdGFiYXNlIG9yZ2FuaXphdGlvbnMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjAiLAogIG51bWJlciA9ICAgICAgICI0IiwKICBwYWdlcyA9ICAgICAgICAiMjYwLS0yNjEiLAogIG1vbnRoID0gICAgICAgIGFwciwKICB5ZWFyID0gICAgICAgICAiMTk3NyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0RhdGFiYXNlL0dyYWVmZS5iaWIgYW5kIGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGF0YWJhc2UvV2llZGVyaG9sZC5iaWIiLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pIiwKICBjb3Jwc291cmNlID0gICAiUHVyZHVlIFVuaXYuLCBXZXN0IExhZmF5ZXR0ZSwgSU4sIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImFwcHJveGltYXRpbmc7IGJsb2NrIGFjY2Vzc2VzOyBkYXRhYmFzZSBvcmdhbml6YXRpb25zOyBmaWxlIG9yZ2FuaXNhdGlvbjsgaW52ZXJ0ZWQgZmlsZTsgc2VsZWN0aXZpdHkgZXN0aW1hdGlvbiBJL08gY29zdCBxdWVyeSBvcHRpbWl6YXRpb24gQ0FDTSIsCiAgdHJlYXRtZW50ID0gICAgIkEgQXBwbGljYXRpb247IFQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKICB4eHRpdGxlID0gICAgICAiQXBwcm94aW1hdGluZyBCbG9jayBBY2Nlc3NlcyBpbiBEYXRhYmFzZSBPcmdhbml6YXRpb24iLAp9CgpAQXJ0aWNsZXtIb2xsYW5kZXI6MTk3NzpSVUksCiAgYXV0aG9yID0gICAgICAgIkMuIFIuIEhvbGxhbmRlciIsCiAgdGl0bGUgPSAgICAgICAgIlJlbWFyayBvbiB1bmlmb3JtIGluc2VydGlvbiBvbiBzdHJ1Y3R1cmVkIGRhdGEgc3RydWN0dXJlcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMCIsCiAgbnVtYmVyID0gICAgICAgIjQiLAogIHBhZ2VzID0gICAgICAgICIyNjEtLTI2MiIsCiAgbW9udGggPSAgICAgICAgYXByLAogIHllYXIgPSAgICAgICAgICIxOTc3IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbikiLAogIGNvcnBzb3VyY2UgPSAgICJJQk0gU2NpLiBDZW50ZXIsIFBhbG8gQWx0bywgQ0EsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImRhdGEgc3RydWN0dXJlczsgc3RydWN0dXJlZCBkYXRhIHN0cnVjdHVyZXM7IHVuaWZvcm0gaW5zZXJ0aW9uIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtCYW5keW9wYWRoeWF5OjE5Nzc6Q1dJLAogIGF1dGhvciA9ICAgICAgICJTLiBLLiBCYW5keW9wYWRoeWF5IiwKICB0aXRsZSA9ICAgICAgICAiQ29tbWVudCBvbiB3ZWlnaHRlZCBpbmNyZW1lbnQgbGluZWFyIHNlYXJjaCBmb3Igc2NhdHRlciB0YWJsZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjAiLAogIG51bWJlciA9ICAgICAgICI0IiwKICBwYWdlcyA9ICAgICAgICAiMjYyLS0yNjMiLAogIG1vbnRoID0gICAgICAgIGFwciwKICB5ZWFyID0gICAgICAgICAiMTk3NyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pIiwKICBjb3Jwc291cmNlID0gICAiQWVyb25hdXRpY2FsIERldi4gRXN0YWJsLiwgQmFuZ2Fsb3JlLCBJbmRpYSIsCiAga2V5d29yZHMgPSAgICAgImFkZHJlc3M7IGZpbGUgb3JnYW5pc2F0aW9uOyBoYXNoOyBwcmltYXJ5IGNsdXN0ZXJpbmc7IHNjYXR0ZXIgdGFibGVzOyB3ZWlnaHRlZCBpbmNyZW1lbnQgbGluZWFyIHNlYXJjaCIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7VGhvbXBzb246MTk3NzpTTUMsCiAgYXV0aG9yID0gICAgICAgIkMuIEQuIFRob21wc29uIGFuZCBILiBULiBLdW5nIiwKICB0aXRsZSA9ICAgICAgICAiU29ydGluZyBvbiBhIE1lc2gtQ29ubmVjdGVkIFBhcmFsbGVsIENvbXB1dGVyIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIwIiwKICBudW1iZXIgPSAgICAgICAiNCIsCiAgcGFnZXMgPSAgICAgICAgIjI2My0tMjcxIiwKICBtb250aCA9ICAgICAgICBhcHIsCiAgeWVhciA9ICAgICAgICAgIjE5NzciLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2OEExMCAoNjhBMjApIiwKICBNUm51bWJlciA9ICAgICAiNTUgMTE2OTMiLAogIG1ycmV2aWV3ZXIgPSAgICJKbyBBbm4gSG93ZWxsIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9QYXJhbGxlbC9wYXIuY29tbS5iaWIiLAogIGFic3RyYWN0ID0gICAgICJUd28gYWxnb3JpdGhtcyBhcmUgcHJlc2VudGVkIGZvciBzb3J0aW5nIG4qKjIgZWxlbWVudHMgb24gYW4gbiBtdWx0aXBsaWVkIGJ5IG4gbWVzaC1jb25uZWN0ZWQgcHJvY2Vzc29yIGFycmF5IHRoYXQgcmVxdWlyZSBPIChuKSByb3V0aW5nIGFuZCBjb21wYXJpc29uIHN0ZXBzLiBUaGUgYmVzdCBwcmV2aW91cyBhbGdvcml0aG0gdGFrZXMgdGltZSBPKG4gbG9nIG4pLiBUaGUgYWxnb3JpdGhtcyBhcmUgc2hvd24gdG8gYmUgb3B0aW1hbCBpbiB0aW1lIHdpdGhpbiBzbWFsbCBjb25zdGFudCBmYWN0b3JzLiBFeHRlbnNpb25zIHRvIGhpZ2hlci1kaW1lbnNpb25hbCBhcnJheXMgYXJlIGFsc28gZ2l2ZW4uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMzAgKERhdGEgaGFuZGxpbmcgdGVjaG5pcXVlcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMjsgNzIzIiwKICBjb3Jwc291cmNlID0gICAiQ2FybmVnaWUtTWVsbG9uIFVuaXYuLCBQaXR0c2J1cmdoLCBQQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIHByb2dyYW1taW5nIC0tLSBTdWJyb3V0aW5lczsgY29tcHV0ZXIgc3lzdGVtcyBwcm9ncmFtbWluZyAtLS0gU29ydGluZzsgY29tcHV0ZXIgc3lzdGVtcywgZGlnaXRhbCIsCiAga2V5d29yZHMgPSAgICAgIm1lc2ggY29ubmVjdGVkOyBwYXJhbGxlbCBjb21wdXRlcjsgcGFyYWxsZWwgcHJvY2Vzc2luZzsgc29ydGluZyIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7Um9iaW5zb246MTk3NzpQVEgsCiAgYXV0aG9yID0gICAgICAgIkxhd3JlbmNlIFJvYmluc29uIGFuZCBLYXJsIE4uIExldml0dCIsCiAgdGl0bGUgPSAgICAgICAgIlByb29mIFRlY2huaXF1ZXMgZm9yIEhpZXJhcmNoaWNhbGx5IFN0cnVjdHVyZWQgUHJvZ3JhbXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjAiLAogIG51bWJlciA9ICAgICAgICI0IiwKICBwYWdlcyA9ICAgICAgICAiMjcxLS0yODMiLAogIG1vbnRoID0gICAgICAgIGFwciwKICB5ZWFyID0gICAgICAgICAiMTk3NyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4QTA1IiwKICBNUm51bWJlciA9ICAgICAiNTcgMTQ1ODQiLAogIG1ycmV2aWV3ZXIgPSAgICJGcmFuY28gU2lyb3ZpY2giLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0NvbXBpbGVyL3NlbWFudGljcy5iaWIiLAogIGFic3RyYWN0ID0gICAgICJBIG1ldGhvZCBmb3IgZGVzY3JpYmluZyBhbmQgc3RydWN0dXJpbmcgcHJvZ3JhbXMgdGhhdCBzaW1wbGlmaWVzIHByb29mcyBvZiB0aGVpciBjb3JyZWN0bmVzcyBpcyBwcmVzZW50ZWQuIFRoZSBtZXRob2QgZm9ybWFsbHkgcmVwcmVzZW50cyBhIHByb2dyYW0gaW4gdGVybXMgb2YgbGV2ZWxzIG9mIGFic3RyYWN0aW9uLCBlYWNoIGxldmVsIG9mIHdoaWNoIGNhbiBiZSBkZXNjcmliZWQgYnkgYSBzZWxmLWNvbnRhaW5lZCBub25wcm9jZWR1cmFsIHNwZWNpZmljYXRpb24uIFRoZSBwcm9vZnMsIGxpa2UgdGhlIHByb2dyYW1zLCBhcmUgc3RydWN0dXJlZCBieSBsZXZlbHMuIEFsdGhvdWdoIG9ubHkgbWFudWFsIHByb29mcyBhcmUgZGVzY3JpYmVkLCB0aGUgbWV0aG9kIGlzIGFsc28gYXBwbGljYWJsZSB0byBzZW1pYXV0b21hdGljIGFuZCBhdXRvbWF0aWMgcHJvb2ZzLiBQcmVsaW1pbmFyeSByZXN1bHRzIGluZGljYXRlIHRoYXQgdGhlIG1ldGhvZCBjYW4gYmUgYXBwbGllZCB0byBsYXJnZSBwcm9ncmFtcywgc3VjaCBhcyBvcGVyYXRpbmcgc3lzdGVtcy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjExMCAoU3lzdGVtcyBhbmFseXNpcyBhbmQgcHJvZ3JhbW1pbmcpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI0NjE7IDcyMzsgOTEyIiwKICBjb3Jwc291cmNlID0gICAiU3RhbmZvcmQgUmVzLiBJbnN0LiwgTWVubG8gUGFyaywgQ0EsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBtZXRhdGhlb3J5IC0tLSBQcm9ncmFtbWluZyBUaGVvcnk7IGNvbXB1dGVyIHByb2dyYW1taW5nOyBjb3JyZWN0bmVzczsgaGllcmFyY2hpY2FsbHkgc3RydWN0dXJlZCBwcm9ncmFtczsgcHJvZ3JhbSB0ZXN0aW5nOyBwcm9vZnM7IHN0cnVjdHVyZWQgcHJvZ3JhbW1pbmc7IHN5c3RlbXMgc2NpZW5jZSBhbmQgY3liZXJuZXRpY3MgLS0tIEhpZXJhcmNoaWNhbCBTeXN0ZW1zIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtIb2x0OjE5Nzc6U0tTLAogIGF1dGhvciA9ICAgICAgICJSLiBDLiBIb2x0IGFuZCBELiBCLiBXb3J0bWFuIGFuZCBELiBULiBCYXJuYXJkIGFuZCBKLiBSLiBDb3JkeSIsCiAgdGl0bGUgPSAgICAgICAgIntTUC9rfToge0F9IFN5c3RlbSBmb3IgVGVhY2hpbmcgQ29tcHV0ZXIgUHJvZ3JhbW1pbmciLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjAiLAogIG51bWJlciA9ICAgICAgICI1IiwKICBwYWdlcyA9ICAgICAgICAiMzAxLS0zMDkiLAogIG1vbnRoID0gICAgICAgIG1heSwKICB5ZWFyID0gICAgICAgICAiMTk3NyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJTUC9rLCBhIGNvbXBhdGlibGUgc3Vic2V0IG9mIHRoZSBQTC9JIGxhbmd1YWdlLCBpcyBhIHNlcXVlbmNlIG9mIGxhbmd1YWdlIHN1YnNldHMgY2FsbGVkIFNQLzEsIFNQLzIsXGxkb3Rze30gU1AvOC4gRWFjaCBzdWJzZXQgaW50cm9kdWNlcyBuZXcgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgY29uc3RydWN0cyB3aGlsZSByZXRhaW5pbmcgYWxsIHRoZSBjb25zdHJ1Y3RzIG9mIHByZWNlZGluZyBzdWJzZXRzLiBUaGUgZmVhdHVyZXMgb2YgdGhlIFNQL2sgbGFuZ3VhZ2Ugd2VyZSBjaG9zZW4gdG8gZW5jb3VyYWdlIHN0cnVjdHVyZWQgcHJvYmxlbSBzb2x2aW5nIGJ5IGNvbXB1dGVycywgdG8gbWFrZSB0aGUgbGFuZ3VhZ2UgZWFzeSB0byBsZWFybiBhbmQgdXNlLCB0byBlbGltaW5hdGUgY29uZnVzaW5nIGFuZCByZWR1bmRhbnQgY29uc3RydWN0cywgYW5kIHRvIG1ha2UgdGhlIGxhbmd1YWdlIGVhc3kgdG8gY29tcGlsZS4gTGFuZ3VhZ2UgZmVhdHVyZXMsIHByb2Nlc3NvciBkZXNpZ24sIGFuZCBzeXN0ZW0gZXhwZXJpZW5jZSBhcmUgZGlzY3Vzc2VkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMwMjIwIChDb21wdXRpbmcgZWR1Y2F0aW9uIGFuZCB0cmFpbmluZyk7IEM2MTEwIChTeXN0ZW1zIGFuYWx5c2lzIGFuZCBwcm9ncmFtbWluZyk7IEM2MTQwRCAoSGlnaCBsZXZlbCBsYW5ndWFnZXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjM7IDkwMSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIG9mIFRvcm9udG8sIFRvcm9udG8sIE9udC4sIENhbmFkYSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21wYXRpYmxlIHN1YnNldDsgY29tcHV0ZXIgcHJvZ3JhbW1pbmc7IGNvbXB1dGVyIHNjaWVuY2UgZWR1Y2F0aW9uOyBQTC8xOyBQTC9JIGxhbmd1YWdlOyBwcm9ncmFtbWluZzsgU1AvazsgdGVhY2hpbmciLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IGVkdWNhdGlvbiIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7RmlzaG1hbjoxOTc3OkFTQSwKICBhdXRob3IgPSAgICAgICAiR2VvcmdlIFMuIEZpc2htYW4iLAogIHRpdGxlID0gICAgICAgICJBY2hpZXZpbmcgU3BlY2lmaWMgQWNjdXJhY3kgaW4gU2ltdWxhdGlvbiBPdXRwdXQgQW5hbHlzaXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjAiLAogIG51bWJlciA9ICAgICAgICI1IiwKICBwYWdlcyA9ICAgICAgICAiMzEwLS0zMTUiLAogIG1vbnRoID0gICAgICAgIG1heSwKICB5ZWFyID0gICAgICAgICAiMTk3NyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGlzdHJpYnV0ZWQvUUxELzE5NzcuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiVGhpcyBwYXBlciBleHRlbmRzIHRoZSB1c2Ugb2YgdGhlIHJlZ2VuZXJhdGl2ZSBwcm9wZXJ0eSBvZiBxdWV1ZWluZyBzeXN0ZW1zIGluIHRoZSBhbmFseXNpcyBvZiBzaW11bGF0aW9uIG91dHB1dC4gSW4gcGFydGljdWxhciwgaXQgZGVzY3JpYmVzIGEgc2VxdWVudGlhbCBlc3RpbWF0aW9uIG1ldGhvZCB3aGljaCB3aGVuIHVzZWQgd2l0aCB0aGUgcmVnZW5lcmF0aXZlIHByb3BlcnR5IGFsbG93cyByZXN1bHRzIHRvIGJlIG9idGFpbmVkIHdpdGggc3BlY2lmaWVkIHN0YXRpc3RpY2FsIGFjY3VyYWN5LiBUaGlzIG1ldGhvZCBpbmNsdWRlcyBhIHRlc3QgdG8gY2hlY2sgdGhlIG5vcm1hbGl0eSBhc3N1bXB0aW9uIG9uIHdoaWNoIHRoZSBzZXF1ZW50aWFsIHByb2NlZHVyZSByZWxpZXMuIFRoZSBwYXBlciBpbGx1c3RyYXRlcyB0aGUgbWV0aG9kIHVzaW5nIHRoZSBlbXB0eSBhbmQgaWRsZSBzdGF0ZSBhcyB0aGUgcmVnZW5lcmF0aXZlIHN0YXRlLiBBIHNlY29uZCBleGFtcGxlIHRoZW4gZGVzY3JpYmVzIGhvdyB1c2luZyB0aGUgbW9zdCBmcmVxdWVudGx5IGVudGVyZWQgc3RhdGUgYXMgdGhlIHJlZ2VuZXJhdGl2ZSBzdGF0ZSByZWR1Y2VzIHRoZSBjaGFuY2Ugb2YgbWFraW5nIGEgY29zdGx5IGVycm9yIGluIGEgcHJlbGltaW5hcnkgc2ltdWxhdGlvbiBydW4uIFRoZSBwYXBlciBhbHNvIGRlc2NyaWJlZCBob3cgYSB2YXJpYW5jZSByZWR1Y3Rpb24gbWV0aG9kIGR1ZSB0byBQYWdlIFs5XSBjYW4gYmUgdXNlZCB0byBvYnRhaW4gYSBzcGVjaWZpZWQgYWNjdXJhY3kgd2l0aCBjb25zaWRlcmFibHkgZmV3ZXIgam9iIGNvbXBsZXRpb25zIHRoYW4gYXJlIHJlcXVpcmVkIHdoZW4gbm8gdmFyaWFuY2UgcmVkdWN0aW9uIHRlY2huaXF1ZSBpcyBhcHBsaWVkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMxMjIwIChTaW11bGF0aW9uLCBtb2RlbGxpbmcgYW5kIGlkZW50aWZpY2F0aW9uKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzOyA5MTI7IDkyMiIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIG9mIE5vcnRoIENhcm9saW5hLCBDaGFwZWwgSGlsbCwgTkMsIFVTQSIsCiAgY291bnRyeSA9ICAgICAgIlVTQSIsCiAgZGVzY3JpcHRvcnMgPSAgIlNpbXVsYXRpb247IHRpbWUgc2VyaWVzIGFuYWx5c2lzOyIsCiAgZW51bSA9ICAgICAgICAgIjk1MiIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhY2N1cmFjeTsgY29tcHV0ZXIgc2ltdWxhdGlvbjsgY29uZmlkZW5jZSBpbiB0ZXJ2YWw7IG1hdGhlbWF0aWNhbCBzdGF0aXN0aWNzOyBvcGVyYXRpb25zIHJlc2VhcmNoIC0tLSBDb21wdXRlciBBcHBsaWNhdGlvbnM7IHByb2JhYmlsaXR5IC0tLSBRdWV1ZWluZyBUaGVvcnk7IHF1ZXVlaW5nIHN5c3RlbXM7IHF1ZXVlaW5nIHRoZW9yeTsgcmF0aW8gZXN0aW1hdG9yOyByZWdlbmVyYXRpdmUgcHJvcGVydHk7IHNlcXVlbnRpYWwgZXN0aW1hdGlvbiBtZXRob2Q7IHNlcXVlbnRpYWwgZXN0aW1hdG9yOyBzaW11bGF0aW9uOyBzaW11bGF0aW9uIG91dHB1dCBhbmFseXNpczsgc3RvcHBpbmcgcnVsZTsgdmFyaWFuY2UgcmVkdWN0aW9uIiwKICBsYW5ndWFnZSA9ICAgICAiRW5nbGlzaCIsCiAgcmVmZXJlbmNlcyA9ICAgIjAiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle01vcmdhbjoxOTc3Ok9QRCwKICBhdXRob3IgPSAgICAgICAiSG93YXJkIEwuIE1vcmdhbiBhbmQgSy4gRGFuIExldmluIiwKICB0aXRsZSA9ICAgICAgICAiT3B0aW1hbCBQcm9ncmFtIGFuZCBEYXRhIExvY2F0aW9ucyBpbiBDb21wdXRlciBOZXR3b3JrcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMCIsCiAgbnVtYmVyID0gICAgICAgIjUiLAogIHBhZ2VzID0gICAgICAgICIzMTUtLTMyMiIsCiAgbW9udGggPSAgICAgICAgbWF5LAogIHllYXIgPSAgICAgICAgICIxOTc3IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EYXRhYmFzZS9XaWVkZXJob2xkLmJpYjsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9NaXNjL3N0b3JhZ2UuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiQW4gb3B0aW1pemF0aW9uIHByb2NlZHVyZSBmb3IgdGhlIGFsbG9jYXRpb24gb2YgcHJvZ3JhbSBhbmQgZGF0YSBmaWxlcyBpbiBhIGNvbXB1dGVyIG5ldHdvcmsgaXMgcHJlc2VudGVkLiBUaGlzIGFsZ29yaXRobSB0YWtlcyBpbnRvIGFjY291bnQgdGhlIGRlcGVuZGVuY2llcyBiZXR3ZWVuIGZpbGVzIGFuZCBwcm9ncmFtcyBzdWNoIGFzIG9jY3VyIGluIHJlYWwgaGV0ZXJvZ2VuZW91cyBjb21wdXRlciBuZXR3b3Jrcy4gQSBzZWFyY2ggcHJvY2VkdXJlIGZvciB0aGUgZmlsZSBsb2NhdGlvbiBwcm9ibGVtIGlzIGRlc2NyaWJlZCwgYWxvbmcgd2l0aCBhbiBleGFtcGxlIGFuZCBhIHBvc3NpYmxlIGFwcGxpY2F0aW9uIG9mIHRoZSBtb2RlbC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNTYyMCAoQ29tcHV0ZXIgbmV0d29ya3MgYW5kIHRlY2huaXF1ZXMpOyBDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBvZiBQZW5uc3lsdmFuaWEsIFBoaWxhZGVscGhpYSwgUEEsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBuZXR3b3JrczsgY29tcHV0ZXIgcHJvZ3JhbW1pbmcgLS0tIFN1YnJvdXRpbmVzOyBjb21wdXRlcnMgLS0tIERhdGEgQ29tbXVuaWNhdGlvbiBTeXN0ZW1zOyBkYXRhIGJhc2Ugc3lzdGVtcyAtLS0gT3B0aW1pemF0aW9uOyBkYXRhIGxvY2F0aW9uczsgZGF0YSBwcm9jZXNzaW5nIC0tLSBEYXRhIEhhbmRsaW5nOyBtYXRoZW1hdGljYWwgbW9kZWxzOyBvcHRpbWl6YXRpb24gcHJvY2VkdXJlOyBwcm9ncmFtOyBzdG9yYWdlIGFsbG9jYXRpb24iLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0JhZXI6MTk3NzpDVEIsCiAgYXV0aG9yID0gICAgICAgIkouLUwuIEJhZXIgYW5kIEIuIFNjaHdhYiIsCiAgdGl0bGUgPSAgICAgICAgIkEgQ29tcGFyaXNvbiBvZiBUcmVlLUJhbGFuY2luZyBBbGdvcml0aG1zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIwIiwKICBudW1iZXIgPSAgICAgICAiNSIsCiAgcGFnZXMgPSAgICAgICAgIjMyMi0tMzMwIiwKICBtb250aCA9ICAgICAgICBtYXksCiAgeWVhciA9ICAgICAgICAgIjE5NzciLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiU2V2ZXJhbCBhbGdvcml0aG1zLWhlaWdodC1iYWxhbmNlIChpLmUuIEFWTCBhbmQgZXh0ZW5zaW9ucyksIHdlaWdodC1iYWxhbmNlIChpLmUuIEJCIGFuZCBXQiksIGFuZCB0b3RhbCByZXN0cnVjdHVyaW5nLWZvciBidWlsZGluZyBiYWxhbmNlZCBiaW5hcnkgc2VhcmNoIHRyZWVzIGFyZSBjb21wYXJlZC4gVGhlIGNyaXRlcmlhIGZvciBjb21wYXJpc29uIGVuY29tcGFzcyB0aGVvcmV0aWNhbCBhc3BlY3RzIChlLmcuIHBhdGggbGVuZ3RocykgYW5kIGltcGxlbWVudGF0aW9uIGluZGVwZW5kZW50IGFuZCBtYWNoaW5lL2FsZ29yaXRobS1kZXBlbmRlbnQgbWVhc3VyZXMgKGUuZy4gcnVuIHRpbWUpLiBBIGRldGFpbGVkIGFuYWx5c2lzIG9mIGNvZGUgaXMgYWxzbyBwcmVzZW50ZWQgYXQgYSBsZXZlbCBiZWxpZXZlZCB0byBiZSBsYW5ndWFnZS1hbmQgY29tcGlsZXItaW5kZXBlbmRlbnQuIFRoZSBxdWFsaXR5IG9mIHRoZSByZXN1bHRpbmcgdHJlZXMgYW5kIHRoZSBvdmVyaGVhZCBzcGVudCBvbiBidWlsZGluZyB0aGVtIGFyZSBhbmFseXplZCwgYW5kIHNvbWUgZ3VpZGVsaW5lcyBhcmUgZ2l2ZW4gZm9yIGFuIGVmZmljaWVudCB1c2Ugb2YgdGhlIG1ldGhvZHMuIElmIGluc2VydGlvbiBhbmQgc3Vic2VxdWVudCBxdWVyaWVzIGFyZSB0aGUgb25seSBvcGVyYXRpb25zIG9mIGluIHRlcmVzdCwgdGhlbiBgYHB1cmUnJyBBVkwgdHJlZXMgcHJlc2VudCB0aGUgb3ZlcmFsbCBiZXN0IHF1YWxpdGllcy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDI0MCAoUHJvZ3JhbW1pbmcgYW5kIGFsZ29yaXRobSB0aGVvcnkpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjM7IDkwMTsgOTIxIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gb2YgV2FzaGluZ3RvbiwgU2VhdHRsZSwgV0EsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhbGdvcml0aG0gdGhlb3J5OyBiYWxhbmNlOyBiYWxhbmNlZCBiaW5hcnkgc2VhcmNoOyBjb21wYXJpc29uOyBoZWlnaHQgYmFsYW5jZTsgdG90YWwgcmVzdHJ1Y3R1cmluZzsgdHJlZSBiYWxhbmNpbmcgYWxnb3JpdGhtczsgdHJlZXM7IHdlaWdodCIsCiAga2V5d29yZHMgPSAgICAgImFuYWx5c2lzIG9mIGFsZ29yaXRobXM7IEFWTCB0cmVlczsgYmluYXJ5IHNlYXJjaCB0cmVlczsgY29tcHV0ZXIgcHJvZ3JhbW1pbmcgLS0tIFN1YnJvdXRpbmVzOyBkYXRhIHByb2Nlc3Npbmc7IGluZm9ybWF0aW9uIHJldHJpZXZhbCBzeXN0ZW1zOyBpbmZvcm1hdGlvbiBzdG9yYWdlIGFuZCByZXRyaWV2YWw7IG1hdGhlbWF0aWNhbCB0ZWNobmlxdWVzIC0tLSBUcmVlczsgcGF0aCBsZW5ndGg7IHdlaWdodC1iYWxhbmNlZCB0cmVlcyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7U3RpbGxtYW46MTk3NzpDSFMsCiAgYXV0aG9yID0gICAgICAgIk5laWwgSi4gU3RpbGxtYW4gYW5kIFAuIEJydWNlIEJlcnJhIiwKICB0aXRsZSA9ICAgICAgICAiQSBDb21wYXJpc29uIG9mIEhhcmR3YXJlIGFuZCBTb2Z0d2FyZSBBc3NvY2lhdGl2ZSBNZW1vcmllcyBpbiB0aGUgQ29udGV4dCBvZiBDb21wdXRlciBHcmFwaGljcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMCIsCiAgbnVtYmVyID0gICAgICAgIjUiLAogIHBhZ2VzID0gICAgICAgICIzMzEtLTMzOSIsCiAgbW9udGggPSAgICAgICAgbWF5LAogIHllYXIgPSAgICAgICAgICIxOTc3IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9HcmFwaGljcy9zaWdncmFwaC83Ny5iaWIiLAogIGFic3RyYWN0ID0gICAgICJUaGUgQXNzb2NpYXRpdmUgUHJvY2Vzc2luZyBvZiBMaW5lIERyYXdpbmdzIChBUExEKSBTeXN0ZW0gdXRpbGl6ZXMgYSBoYXJkd2FyZSBhc3NvY2lhdGl2ZSBtZW1vcnkgYW5kIGNyZWF0ZXMsIG1vZGlmaWVzLCBkZWxldGVzLCBzdG9yZXMsIGFuZCByZXRyaWV2ZXMgdHdvLWRpbWVuc2lvbmFsIGxpbmUgZHJhd2luZ3MgY29uc2lzdGluZyBvZiBwb2ludHMsIGxpbmVzLCByZWN0YW5nbGVzLCBhbmQgdHJpYW5nbGVzLiBUaGUgQVBMRCBmdW5jdGlvbnMgd2VyZSBkdXBsaWNhdGVkIG9uIHRoZSBUWC0yIGNvbXB1dGVyIGF0IE0uIEkuIFQuICdzIExpbmNvbG4gTGFib3JhdG9yeSB1bmRlciB0aGUgTEVBUCBMYW5ndWFnZSBhbmQgRGF0YSBTdHJ1Y3R1cmUuIEEgY29tcGFyaXNvbiBvZiB0aGUgaGFyZHdhcmUgYXBwcm9hY2ggd2l0aCB0aGUgc29mdHdhcmUgc2ltdWxhdGlvbiBpbGx1c3RyYXRlcyB0aGUgYWR2YW50YWdlcyBvZiB0aGUgaGFyZHdhcmUgYXNzb2NpYXRpdmUgbWVtb3J5LiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbik7IEM2MTMwQiAoR3JhcGhpY3MgdGVjaG5pcXVlcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMjsgNzIzIiwKICBjb3Jwc291cmNlID0gICAiRGVmZW5zZSBDb21tdW5pY2F0aW9ucyBBZ2VuY3ksIFdhc2hpbmd0b24sIERDLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYXNzb2NpYXRpdmUgYW5kIG1lbW9yeTsgYXNzb2NpYXRpdmUgbWVtb3JpZXM7IGFzc29jaWF0aXZlIHByb2Nlc3Npbmcgb2YgbGluZSBkcmF3aW5nczsgY29tcGFyaXNvbjsgY29tcHV0ZXIgZ3JhcGhpY3M7IGNvbXB1dGVyIHN5c3RlbXMsIGRpZ2l0YWwgLS0tIFBhcmFsbGVsIFByb2Nlc3Npbmc7IGNvbnRlbnQtYWRkcmVzc2FibGUgc3RvcmFnZTsgZGF0YSBzdG9yYWdlLCBkaWdpdGFsIC0tLSBBc3NvY2lhdGl2ZTsgaGFyZHdhcmU7IGltYWdlIHByb2Nlc3Npbmc7IHNvZnR3YXJlIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtTaGFwaXJvOjE5Nzc6Q1JQLAogIGF1dGhvciA9ICAgICAgICJNYXJ2aW4gU2hhcGlybyIsCiAgdGl0bGUgPSAgICAgICAgIkNob2ljZSBvZiBSZWZlcmVuY2UgUG9pbnRzIGluIEJlc3QtTWF0Y2ggRmlsZSBTZWFyY2hpbmciLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjAiLAogIG51bWJlciA9ICAgICAgICI1IiwKICBwYWdlcyA9ICAgICAgICAiMzM5LS0zNDMiLAogIG1vbnRoID0gICAgICAgIG1heSwKICB5ZWFyID0gICAgICAgICAiMTk3NyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJJbXByb3ZlbWVudHMgdG8gdGhlIGV4aGF1c3RpdmUgc2VhcmNoIG1ldGhvZCBvZiBiZXN0LW1hdGNoIGZpbGUgc2VhcmNoaW5nIGhhdmUgcHJldmlvdXNseSBiZWVuIGFjaGlldmVkIGJ5IGRvaW5nIGEgcHJlcHJvY2Vzc2luZyBzdGVwIGludm9sdmluZyB0aGUgY2FsY3VsYXRpb24gb2YgZGlzdGFuY2VzIGZyb20gYSByZWZlcmVuY2UgcG9pbnQgKENvbW0gQUNNLCBWMTYgbiA0IEFwcmlsIDE5NzMgcCAyMzApLiBUaGlzIHBhcGVyIGRpc2N1c3NlcyB0aGUgcHJvcGVyIGNob2ljZSBvZiByZWZlcmVuY2UgcG9pbnRzIGFuZCBleHRlbmRzIHRoZSBwcmV2aW91cyBhbGdvcml0aG0gdG8gdXNlIG1vcmUgdGhhbiBvbmUgcmVmZXJlbmNlIHBvaW50LiBJdCBpcyBzaG93biB0aGF0IHJlZmVyZW5jZSBwb2ludHMgc2hvdWxkIGJlIGxvY2F0ZWQgb3V0c2lkZSBvZiBkYXRhIGNsdXN0ZXJzLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbikiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMzsgOTAxIiwKICBjb3Jwc291cmNlID0gICAiTmF0LiBJbnN0LiBvZiBIZWFsdGgsIEJldGhlc2RhLCBNRCwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImJlc3QgbWF0Y2g7IGNob2ljZTsgY29tcHV0ZXIgcHJvZ3JhbW1pbmcgLS0tIFN1YnJvdXRpbmVzOyBkYXRhIHByb2Nlc3Npbmc7IGZpbGUgb3JnYW5pc2F0aW9uOyBmaWxlIHNlYXJjaGluZzsgaW5mb3JtYXRpb24gcmV0cmlldmFsIHN5c3RlbXM7IHJlZmVyZW5jZSBwb2ludHMiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0hhbmFuaToxOTc3Ok9FQiwKICBhdXRob3IgPSAgICAgICAiTWljaGFlbCBaLiBIYW5hbmkiLAogIHRpdGxlID0gICAgICAgICJBbiBPcHRpbWFsIEV2YWx1YXRpb24gb2Yge0Jvb2xlYW59IEV4cHJlc3Npb25zIGluIGFuIE9ubGluZSBRdWVyeSBTeXN0ZW0iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjAiLAogIG51bWJlciA9ICAgICAgICI1IiwKICBwYWdlcyA9ICAgICAgICAiMzQ0LS0zNDciLAogIG1vbnRoID0gICAgICAgIG1heSwKICB5ZWFyID0gICAgICAgICAiMTk3NyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4QTUwIiwKICBNUm51bWJlciA9ICAgICAiNTUgOTYyNyIsCiAgbXJyZXZpZXdlciA9ICAgIksuIEguIFYuIEJvb3RoIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EYXRhYmFzZS9HcmFlZmUuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiSW4gdGhlIHN5c3RlbSBkaXNjdXNzZWQsIGluIGEgcmVzcG9uc2UgdG8gYSBxdWVyeSwgdGhlIGVudGlyZSBmaWxlIGNvbnRhaW5pbmcgaHVuZHJlZHMgb2YgdGhvdXNhbmRzIG9mIHJlY29yZHMgaGFzIHRvIGJlIHNlYXJjaGVkLCBhbmQgdGhlIEJvb2xlYW4gZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQgZm9yIGVhY2ggcmVjb3JkLiBUaGUgbWV0aG9kIHByZXNlbnRlZCBpbXByb3ZlcyB0aGUgcGVyZm9ybWFuY2Ugb2Ygc3VjaCBhIHN5c3RlbSBieSBzcGVlZGluZyB1cCB0aGUgcHJvY2VzcyBvZiBjb21wdXRpbmcgdGhlIHRydXRoIHZhbHVlIG9mIGEgQm9vbGVhbiBleHByZXNzaW9uIGZvciBhbiBpbmRpdmlkdWFsIHJlY29yZC4gVGhpcyBpcyBkb25lIGJ5IGV2YWx1YXRpbmcgdGhlIGV4cHJlc3Npb24gYmFzZWQgb24gdGhlIHZhbHVlcyBvZiBhIHN1YnNldCBvZiBpdHMgY29tcG9uZW50cyByYXRoZXIgdGhhbiB0aGUgZW50aXJlIGV4cHJlc3Npb24uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQyMTAgKEZvcm1hbCBsb2dpYyk7IEM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbikiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMjsgNzIzOyA5MDEiLAogIGNvcnBzb3VyY2UgPSAgICJCZW4gR3VyaW9uIFVuaXYuLCBOZWdldiwgSXNyYWVsIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgIkJvb2xlYW4gYWxnZWJyYTsgQm9vbGVhbiBleHByZXNzaW9uczsgY29tcHV0ZXIgcHJvZ3JhbW1pbmcgLS0tIFN1YnJvdXRpbmVzOyBjb21wdXRlciBzeXN0ZW1zLCBkaWdpdGFsIC0tLSBPbiBMaW5lIFN5c3RlbXM7IGRhdGEgYmFzZSBzeXN0ZW1zOyBkYXRhIHByb2Nlc3NpbmcgLS0tIERhdGEgSGFuZGxpbmc7IGZpbGUgb3JnYW5pc2F0aW9uOyBmaWxlIHNlYXJjaGluZzsgaW5mb3JtYXRpb24gcmV0cmlldmFsIHN5c3RlbXM7IG9ubGluZSBxdWVyeSBzeXN0ZW07IG9wdGltYWwgZXZhbHVhdGlvbjsgb3JkZXIgc29ydCBjbGF1c2VzIGJ5IGNvc3QgYW5kIHNlbGVjdGl2aXR5IENBQ00iLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle01pbG1hbjoxOTc3OkFPRCwKICBhdXRob3IgPSAgICAgICAiWS4gTWlsbWFuIiwKICB0aXRsZSA9ICAgICAgICAiQW4gQXBwcm9hY2ggdG8gT3B0aW1hbCBEZXNpZ24gb2YgU3RvcmFnZSBQYXJhbWV0ZXJzIGluIERhdGFiYXNlcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMCIsCiAgbnVtYmVyID0gICAgICAgIjUiLAogIHBhZ2VzID0gICAgICAgICIzNDctLTM1MCIsCiAgbW9udGggPSAgICAgICAgbWF5LAogIHllYXIgPSAgICAgICAgICIxOTc3IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjhBNTAiLAogIE1SbnVtYmVyID0gICAgICI1NSA3MDA3IiwKICBtcnJldmlld2VyID0gICAiQ2xlbWVudCBULiBZdSIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJTdG9yYWdlIGFuZCByZXNwb25zZS10aW1lIHJlcXVpcmVtZW50cyBhcmUgY29udHJhZGljdG9yeSBpbiBuYXR1cmUsIGFuZCBpbiBhbnkgcmVhbC13b3JsZCwgdGhlIHByb2JsZW0sIG9uZSBoYXMgdG8gYXR0YWluIGEgcmF0aW9uYWwgZXF1aWxpYnJpdW0gYmV0d2VlbiB0aGVtLiBUaGUgYWN0dWFsIGxvY2F0aW9uIG9mIHRoaXMgZXF1aWxpYnJpdW0gZGVwZW5kcyBvbiB0aGUgY29uZGl0aW9ucyBvZiB0aGUgc3BlY2lmaWMgcHJvYmxlbS4gVGhlIHB1cnBvc2Ugb2YgdGhpcyBwYXBlciBpcyB0byBwcmVzZW50IGEgc2ltcGxlIGFwcHJvYWNoIHRoYXQgY2FuIGJlIGVtcGxveWVkIHRvIGxvY2F0ZSBzdWNoIGFuIGVxdWlsaWJyaXVtLCBhbmQgdG8gZGVtb25zdHJhdGUgaXRzIHVzZSBpbiBhbiBhY3R1YWwgYXBwbGljYXRpb24uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiQ29udGFoYWwgTHRkLiwgVGVsLUF2aXYsIElzcmFlbCIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJkYXRhIGJhc2Ugc3lzdGVtczsgZGF0YSBzdG9yYWdlLCBkaWdpdGFsOyBkYXRhYmFzZSBtYW5hZ2VtZW50IHN5c3RlbXM7IGRhdGFiYXNlczsgb3B0aW1hbCBkZXNpZ247IHN0b3JhZ2UgcGFyYW1ldGVycyIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7SHVudDoxOTc3OkZBQywKICBhdXRob3IgPSAgICAgICAiSmFtZXMgVy4gSHVudCBhbmQgVGhvbWFzIEcuIFN6eW1hbnNraSIsCiAgdGl0bGUgPSAgICAgICAgIkEgRmFzdCBBbGdvcml0aG0gZm9yIENvbXB1dGluZyBMb25nZXN0IENvbW1vbiBTdWJzZXF1ZW5jZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjAiLAogIG51bWJlciA9ICAgICAgICI1IiwKICBwYWdlcyA9ICAgICAgICAiMzUwLS0zNTMiLAogIG1vbnRoID0gICAgICAgIG1heSwKICB5ZWFyID0gICAgICAgICAiMTk3NyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4QTEwICg2OEEyMCkiLAogIE1SbnVtYmVyID0gICAgICI1NSA5NTk2IiwKICBtcnJldmlld2VyID0gICAiQy4gTC4gTGl1IiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9NaXNjL3Byb3RlaW4ucGF0dGVybi5iaWIiLAogIGFic3RyYWN0ID0gICAgICJQcmV2aW91c2x5IHB1Ymxpc2hlZCBhbGdvcml0aG1zIGZvciBoYW5kbGluZyB0aGUgbG9uZ2VzdCBjb21tb24gc3Vic2VxdWVuY2Ugb2YgdHdvIHNlcXVlbmNlIG9mIGxlbmd0aCBuIGhhdmUgaGFkIGEgYmVzdC1jYXNlIHJ1bm5pbmcgdGltZSBvZiBPKG4vLzIpLiBBbiBhbGdvcml0aG0gZm9yIHRoaXMgcHJvYmxlbSBpcyBwcmVzZW50ZWQgd2hpY2ggaGFzIGEgcnVubmluZyB0aW1lIE8oKHIgcGx1cyBuKSBsb2cgbiksIHdoZXJlIHIgaXMgdGhlIHRvdGFsIG51bWJlciBvZiBvcmRlcmVkIHBhaXJzIG9mIHBvc2l0aW9ucyBhdCB3aGljaCB0aGUgdHdvIHNlcXVlbmNlcyBtYXRjaC4gVGh1cyBpbiB0aGUgd29yc3QgY2FzZSB0aGUgYWxnb3JpdGhtIGhhcyBhIHJ1bm5pbmcgdGltZSBvZiBPKG4qKjIgbG9nIG4pLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MjQwIChQcm9ncmFtbWluZyBhbmQgYWxnb3JpdGhtIHRoZW9yeSkiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29tbWVudCA9ICAgICAgImBgUHJldmlvdXNseSBwdWJsaXNoZWQgYWxnb3JpdGhtcyBmb3IgZmluZGluZyB0aGUgbG9uZ2VzdCBjb21tb24gc3Vic2VxdWVuY2Ugb2YgdHdvIHNlcXVlbmNlcyBvZiBsZW5ndGggJG4kIGhhdmUgaGFkIGEgYmVzdC0tY2FzZSBydW5uaW5nIHRpbWUgb2YgJE8obl4yKSQuIEFuIGFsZ29yaXRobSBmb3IgdGhpcyBwcm9ibGVtIGlzIHByZXNlbnRlZCB3aGljaCBoYXMgYSBydW5uaW5nIHRpbWUgb2YgJE8oKHIgKyBuKSBcbG9nIG4pJCwgd2hlcmUgJHIkIGlzIHRoZSB0b3RhbCBudW1iZXIgb2Ygb3JkZXJlZCBwYWlycyBvZiBwb3NpdGlvbnMgYXQgd2hpY2ggdGhlIHR3byBzZXF1ZW5jZXMgbWF0Y2guIFRodXMgaW4gdGhlIHdvcnN0IGNhc2UgdGhlIGFsZ29yaXRobSBoYXMgYSBydW5uaW5nIHRpbWUgb2YgJE8obl4yIFxsb2cgbikkLiBIb3dldmVyLCBmb3IgdGhvc2UgYXBwbGljYXRpb25zIHdoZXJlIG1vc3QgcG9zaXRpb25zIG9mIG9uZSBzZXF1ZW5jZSBtYXRjaCByZWxhdGl2ZWx5IGZldyBwb3NpdGlvbnMgaW4gdGhlIG90aGVyIHNlcXVlbmNlLCBhIHJ1bm5pbmcgdGltZSBvZiAkTyhuIFxsb2cgbiQpIGNhbiBiZSBleHBlY3RlZC4nJyIsCiAgY29ycHNvdXJjZSA9ICAgIlN0YW5mb3JkIFVuaXYuLCBTdGFuZm9yZCwgQ0EsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhbGdvcml0aG0gdGhlb3J5OyBjb21wdXRlciBwcm9ncmFtbWluZyAtLS0gU3Vicm91dGluZXM7IGRhdGEgcHJvY2Vzc2luZzsgZmFzdCBhbGdvcml0aG07IGZpbGUgc2VhcmNoaW5nOyBsb25nZXN0IGNvbW1vbiBzdWJzZXF1ZW5jZXM7IHR3byBzZXF1ZW5jZXMiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle1RhdWxiZWU6MTk3NzpQRVAsCiAgYXV0aG9yID0gICAgICAgIk9ycmluIEUuIFRhdWxiZWUgYW5kIFMuIEQuIENvbnRlIiwKICB0aXRsZSA9ICAgICAgICAiUHJvZHVjdGlvbiBhbmQgRW1wbG95bWVudCBvZiB7UGguRC59J3MgaW4gQ29tcHV0ZXIgU2NpZW5jZSAtLS0gMTk3NiIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMCIsCiAgbnVtYmVyID0gICAgICAgIjYiLAogIHBhZ2VzID0gICAgICAgICIzNzAtLTM3MiIsCiAgbW9udGggPSAgICAgICAganVuLAogIHllYXIgPSAgICAgICAgICIxOTc3IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlN0YXRpc3RpY3MgYXJlIHByZXNlbnRlZCBvbiB0aGUgcHJvZHVjdGlvbiBhbmQgZW1wbG95bWVudCBvZiBQaC4gRCdzIGluIGNvbXB1dGVyIHNjaWVuY2UgZm9yIHRoZSBjYWxlbmRhciB5ZWFyIDE5NzUtNzYuIERhdGEgaW5jbHVkZSBwcm9maWxlcyBvZiBncmFkdWF0ZSBzdHVkZW50cyBhbmQgb2YgZmFjdWx0eSBhdCA2MCBQaC4gRC4gLS0tIHByb2R1Y2luZyBkZXBhcnRtZW50cyBhcyB3ZWxsIGFzIGJyZWFrZG93biBvZiBkZWdyZWVzIGdyYW50ZWQgYnkgc3BlY2lhbHR5IGFyZWFzLiBTaWduaWZpY2FudCB0cmVuZHMgYXJlIG5vdGVkIGFuZCBjb21wYXJpc29ucyB3aXRoIGNvbXBhcmFibGUgZGF0YSBnYXRoZXJlZCBmb3IgdGhlIDE5NzQtNzUgY2FsZW5kYXIgeWVhciBhcmUgbWFkZS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDMDIyMCAoQ29tcHV0aW5nIGVkdWNhdGlvbiBhbmQgdHJhaW5pbmcpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjM7IDkwMTsgOTEyIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gb2YgUGl0dHNidXJnaCwgUGl0dHNidXJnaCwgUEEsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBzY2llbmNlOyBjb21wdXRlciBzY2llbmNlIGVkdWNhdGlvbjsgZGF0YSBwcm9jZXNzaW5nOyBlZHVjYXRpb247IGVtcGxveW1lbnQ7IFBoRDsgcHJvZHVjdGlvbjsgc3RhdGlzdGljcyIsCiAgdHJlYXRtZW50ID0gICAgIkcgR2VuZXJhbCBSZXZpZXciLAp9CgpAQXJ0aWNsZXtTaG5laWRlcm1hbjoxOTc3OkVJVSwKICBhdXRob3IgPSAgICAgICAiQmVuIFNobmVpZGVybWFuIGFuZCBSaWNoYXJkIE1heWVyIGFuZCBEb24gTWNLYXkgYW5kIFBldGVyIEhlbGxlciIsCiAgdGl0bGUgPSAgICAgICAgIkV4cGVyaW1lbnRhbCBJbnZlc3RpZ2F0aW9ucyBvZiB0aGUgVXRpbGl0eSBvZiBEZXRhaWxlZCBGbG93Y2hhcnRzIGluIFByb2dyYW1taW5nIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIwIiwKICBudW1iZXIgPSAgICAgICAiNiIsCiAgcGFnZXMgPSAgICAgICAgIjM3My0tMzgxIiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzciLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiVGhpcyBwYXBlciBkZXNjcmliZXMgcHJldmlvdXMgcmVzZWFyY2ggb24gZmxvd2NoYXJ0cyBhbmQgYSBzZXJpZXMgb2YgY29udHJvbGxlZCBleHBlcmltZW50cyB0byB0ZXN0IHRoZSB1dGlsaXR5IG9mIGRldGFpbGVkIGZsb3djaGFydHMgYXMgYW4gYWlkIHRvIHByb2dyYW0gY29tcG9zaXRpb24sIGNvbXByZWhlbnNpb24sIGRlYnVnZ2luZywgYW5kIG1vZGlmaWNhdGlvbi4gTm8gc3RhdGlzdGljYWxseSBzaWduaWZpY2FudCBkaWZmZXJlbmNlIGJldHdlZW4gZmxvd2NoYXJ0IGFuZCBub25mbG93Y2hhcnQgZ3JvdXBzIGhhcyBiZWVuIHNob3duLCB0aGVyZWJ5IGNhbGxpbmcgaW50byBxdWVzdGlvbiB0aGUgdXRpbGl0eSBvZiBkZXRhaWxlZCBmbG93Y2hhcnRpbmcuIEEgcHJvZ3JhbSBvZiBmdXJ0aGVyIHJlc2VhcmNoIGlzIHN1Z2dlc3RlZC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjExMCAoU3lzdGVtcyBhbmFseXNpcyBhbmQgcHJvZ3JhbW1pbmcpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJJbmRpYW5hIFVuaXYuLCBCbG9vbWluZ3RvbiwgSU4sIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhaWQ7IGNvbXByZWhlbnNpb247IGNvbXB1dGVyIHByb2dyYW1taW5nOyBjb21wdXRlciBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IGNvbnRyb2xsZWQgZXhwZXJpbWVudHM7IGRlYnVnZ2luZzsgZGV0YWlsZWQgZmxvd2NoYXJ0czsgZmxvd2NoYXJ0aW5nOyBtb2RpZmljYXRpb247IHByb2dyYW0gY29tcG9zaXRpb247IHV0aWxpdHkiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0xlZGdhcmQ6MTk3NzpUVkQsCiAgYXV0aG9yID0gICAgICAgIkguIEYuIExlZGdhcmQgYW5kIFIuIFcuIFRheWxvciIsCiAgdGl0bGUgPSAgICAgICAgIlR3byBWaWV3cyBvZiBEYXRhIEFic3RyYWN0aW9uIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIwIiwKICBudW1iZXIgPSAgICAgICAiNiIsCiAgcGFnZXMgPSAgICAgICAgIjM4Mi0tMzg0IiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzciLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9PYmplY3QvTmllcnN0cmFzei5iaWIiLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gb2YgTWFzc2FjaHVzZXR0cywgQW1oZXJzdCwgTUEsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImRhdGEgYWJzdHJhY3Rpb247IGRhdGEgc3RydWN0dXJlczsgZGF0YWJhc2U7IGxhbmd1YWdlOyB0eXBlcyBkYXRhIGFic3RyYWN0aW9uIiwKICB0cmVhdG1lbnQgPSAgICAiRyBHZW5lcmFsIFJldmlldyIsCn0KCkBBcnRpY2xle1psb29mOjE5Nzc6U0JBLAogIGF1dGhvciA9ICAgICAgICJNb3Noe1wnZX0gTS4gWmxvb2YgYW5kIFMuIFBldGVyIHtkZSBKb25nfSIsCiAgdGl0bGUgPSAgICAgICAgIlRoZSBTeXN0ZW0ge2ZvciBCdXNpbmVzcyBBdXRvbWF0aW9ufSAoe1NCQX0pOiBQcm9ncmFtbWluZyBMYW5ndWFnZSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMCIsCiAgbnVtYmVyID0gICAgICAgIjYiLAogIHBhZ2VzID0gICAgICAgICIzODUtLTM5NiIsCiAgbW9udGggPSAgICAgICAganVuLAogIHllYXIgPSAgICAgICAgICIxOTc3IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9PYmplY3QvTmllcnN0cmFzei5iaWIiLAogIGFic3RyYWN0ID0gICAgICJUaGUgc3lzdGVtIGZvciBidXNpbmVzcyBhdXRvbWF0aW9uIChTQkEpIGlzIGEgc3lzdGVtIHdpdGhpbiB3aGljaCBhcHBsaWNhdGlvbiBleHBlcnRzIC0tLSBub25wcm9ncmFtbWVycyAtLS0gY2FuIGRlc2NyaWJlIGFuZCBleGVjdXRlIHRoZWlyIGFwcGxpY2F0aW9ucyBvbiBhIGNvbXB1dGVyLiBUaGUgdXNlciBvZiBTQkEgdmlld3MgdGhlIGFwcGxpY2F0aW9uIGFzIG1hbmlwdWxhdGlvbiBvZiBpbmZvcm1hdGlvbiBpbiB0d28tZGltZW5zaW9uYWwgcGljdHVyZXMgb2YgdGFibGVzLCBidXNpbmVzcyBmb3JtcywgYW5kIHJlcG9ydHMgb24gYSBkaXNwbGF5IHRlcm1pbmFsLiBUaGUgYXBwbGljYXRpb24gY2FuIGJlIGF1dG9tYXRlZCBncmFkdWFsbHkgYnkgZ2l2aW5nIGBgZXhhbXBsZXMnJyB0byB0aGUgc3lzdGVtIG9mIGhvdyB0aGUgaW5mb3JtYXRpb24gd291bGQgYmUgbWFuaXB1bGF0ZWQgbWFudWFsbHkuIFRoZSBRdWVyeS1ieS1FeGFtcGxlIGRhdGFiYXNlIGxhbmd1YWdlIGlzIGEgc3Vic2V0IG9mIHRoZSBTQkEgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxNDBEIChIaWdoIGxldmVsIGxhbmd1YWdlcyk7IEM3MTAwIChCdXNpbmVzcyBhbmQgYWRtaW5pc3RyYXRpb24pIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjM7IDkwMSIsCiAgY29ycHNvdXJjZSA9ICAgIklCTSBUaG9tYXMgSi4gV2F0c29uIFJlcy4gQ2VudGVyLCBZb3JrdG93biBIZWlnaHRzLCBOWSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFkbWluaXN0cmF0aXZlIGRhdGEgcHJvY2Vzc2luZzsgYXV0b21hdGljIHByb2dyYW1taW5nOyBidXNpbmVzcyBhdXRvbWF0aW9uOyBieSBFeGFtcGxlOyBjb21wdXRlciBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IGRhdGEgcHJvY2Vzc2luZyAtLS0gRGF0YSBTdHJ1Y3R1cmVzOyBkYXRhIHByb2Nlc3NpbmcsIGJ1c2luZXNzOyBkYXRhYmFzZSBsYW5ndWFnZTsgZGlzcGxheSB0ZXJtaW5hbDsgaW5mb3JtYXRpb24gcmV0cmlldmFsIHN5c3RlbXM7IG5vbnByb2dyYW1tZXJzOyBwcm9ibGVtIG9yaWVudGVkIGxhbmd1YWdlczsgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2U7IFF1ZXJ5OyBTQkEiLAogIHRyZWF0bWVudCA9ICAgICJFIEVjb25vbWljOyBQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0d1dHRhZzoxOTc3OkFEVCwKICBhdXRob3IgPSAgICAgICAiSm9obiBWLiBHdXR0YWciLAogIHRpdGxlID0gICAgICAgICJBYnN0cmFjdCBEYXRhIFR5cGVzIGFuZCB0aGUgRGV2ZWxvcG1lbnQgb2YgRGF0YSBTdHJ1Y3R1cmVzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIwIiwKICBudW1iZXIgPSAgICAgICAiNiIsCiAgcGFnZXMgPSAgICAgICAgIjM5Ni0tNDA0IiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzciLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L09iamVjdC9OaWVyc3RyYXN6LmJpYiBhbmQgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9NaXNjL0Z1bmN0aW9uYWwuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiQWJzdHJhY3QgZGF0YSB0eXBlcyBjYW4gcGxheSBhIHNpZ25pZmljYW50IHJvbGUgaW4gdGhlIGRldmVsb3BtZW50IG9mIHNvZnR3YXJlIHRoYXQgaXMgcmVsaWFibGUsIGVmZmljaWVudCwgYW5kIGZsZXhpYmxlLiBUaGlzIHBhcGVyIHByZXNlbnRzIGFuZCBkaXNjdXNzZXMgdGhlIGFwcGxpY2F0aW9uIG9mIGFuIGFsZ2VicmFpYyB0ZWNobmlxdWUgZm9yIHRoZSBzcGVjaWZpY2F0aW9uIG9mIGFic3RyYWN0IGRhdGEgdHlwZXMuIEFtb25nIHRoZSBleGFtcGxlcyBwcmVzZW50ZWQgaXMgYSB0b3AtZG93biBkZXZlbG9wbWVudCBvZiBhIHN5bWJvbCB0YWJsZSBmb3IgYSBibG9jayBzdHJ1Y3R1cmVkIGxhbmd1YWdlOyBhIGRpc2N1c3Npb24gb2YgdGhlIHByb29mIG9mIGl0cyBjb3JyZWN0bmVzcyBpcyBnaXZlbi4gQSBicmllZiBkaXNjdXNzaW9uIG9mIHRoZSBwcm9ibGVtcyBpbnZvbHZlZCBpbiBjb25zdHJ1Y3RpbmcgYWxnZWJyYWljIHNwZWNpZmljYXRpb25zIHRoYXQgYXJlIGJvdGggY29uc2lzdGVudCBhbmQgY29tcGxldGUgaXMgYWxzbyBwcm92aWRlZC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjM7IDkyMSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIG9mIFNvdXRoZXJuIENhbGlmb3JuaWEsIExvcyBBbmdlbGVzLCBDQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFic3RyYWN0IGRhdGEgdHlwZXM7IGFsZ2VicmFpYyB0ZWNobmlxdWU7IGNvbXB1dGVyIG1ldGF0aGVvcnk7IGNvbXB1dGVyIHByb2dyYW1taW5nIC0tLSBSZWxpYWJpbGl0eTsgY29tcHV0ZXIgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzOyBkYXRhIHByb2Nlc3NpbmcgLS0tIERhdGEgU3RydWN0dXJlczsgZGF0YSBzdHJ1Y3R1cmVzOyBkYXRhIHR5cGVzOyBkZXZlbG9wbWVudDsgZnVuY3Rpb25hbCB0eXBlcyBvbGl0IGRhdGEgYWJzdHJhY3Rpb247IG1hdGhlbWF0aWNhbCB0ZWNobmlxdWVzIC0tLSBBbGdlYnJhOyBzcGVjaWZpY2F0aW9uIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtTbWl0aDoxOTc3OkRBQSwKICBhdXRob3IgPSAgICAgICAiSm9obiBNaWxlcyBTbWl0aCBhbmQgRGlhbmUgQy4gUC4gU21pdGgiLAogIHRpdGxlID0gICAgICAgICJEYXRhYmFzZSBBYnN0cmFjdGlvbnM6IEFnZ3JlZ2F0aW9uIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIwIiwKICBudW1iZXIgPSAgICAgICAiNiIsCiAgcGFnZXMgPSAgICAgICAgIjQwNS0tNDEzIiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzciLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0RhdGFiYXNlL1dpZWRlcmhvbGQuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiQSBuZXcgZGF0YSB0eXBlLCBjYWxsZWQgYWdncmVnYXRlLCBpcyBkZXZlbG9wZWQgd2hpY2gsIHVuZGVyIGNlcnRhaW4gY3JpdGVyaWEgb2YgYGB3ZWxsLWRlZmluZWRuZXNzLCcnIHNwZWNpZmllcyBhZ2dyZWdhdGlvbiBhYnN0cmFjdGlvbnMuIEEgdG9wLWRvd24gbWV0aG9kb2xvZ3kgZm9yIGRhdGFiYXNlIGRlc2lnbiBpcyBkZXNjcmliZWQgd2hpY2ggc2VwYXJhdGVzIGRlY2lzaW9ucyBjb25jZXJuaW5nIGFnZ3JlZ2F0ZSBzdHJ1Y3R1cmUgZnJvbSBkZWNpc2lvbnMgY29uY2VybmluZyBrZXkgaWRlbnRpZmljYXRpb24uIEl0IGlzIHN1Z2dlc3RlZCB0aGF0IGFnZ3JlZ2F0ZSB0eXBlcywgYW5kIG90aGVyIHR5cGVzIHdoaWNoIHN1cHBvcnQgcmVhbC13b3JsZCBhYnN0cmFjdGlvbnMgd2l0aG91dCBpbnRyb2R1Y2luZyBpbXBsZW1lbnRhdGlvbiBkZXRhaWwsIHNob3VsZCBiZSBpbmNvcnBvcmF0ZWQgaW50byBwcm9ncmFtbWluZyBsYW5ndWFnZXMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gb2YgVXRhaCwgU2FsdCBMYWtlIENpdHksIFVULCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzOyBkYXRhIGFnZ3JlZ2F0ZXM7IGRhdGEgYmFzZSBzeXN0ZW1zIC0tLSBEZXNpZ247IGRhdGEgcHJvY2Vzc2luZzsgZGF0YSB0eXBlcyIsCiAga2V5d29yZHMgPSAgICAgImFic3RyYWN0aW9uczsgYWdncmVnYXRpb247IGRhdGEgc3RydWN0dXJlczsgZGF0YWJhc2VzIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtHcmllczoxOTc3OlNJRCwKICBhdXRob3IgPSAgICAgICAiRGF2aWQgR3JpZXMgYW5kIE5hcmFpbiBHZWhhbmkiLAogIHRpdGxlID0gICAgICAgICJTb21lIElkZWFzIG9uIERhdGEgVHlwZXMgaW4gSGlnaC1MZXZlbCBMYW5ndWFnZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjAiLAogIG51bWJlciA9ICAgICAgICI2IiwKICBwYWdlcyA9ICAgICAgICAiNDE0LS00MjAiLAogIG1vbnRoID0gICAgICAgIGp1biwKICB5ZWFyID0gICAgICAgICAiMTk3NyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvT2JqZWN0L05pZXJzdHJhc3ouYmliIiwKICBhYnN0cmFjdCA9ICAgICAiQSBudW1iZXIgb2YgaXNzdWVzIGFyZSBleHBsb3JlZCBjb25jZXJuaW5nIHRoZSBub3Rpb24gdGhhdCBhIGRhdGEgdHlwZSBpcyBhIHNldCBvZiB2YWx1ZXMgdG9nZXRoZXIgd2l0aCBhIHNldCBvZiBwcmltaXRpdmUgb3BlcmF0aW9ucyBvbiB0aG9zZSB2YWx1ZXMuIEFtb25nIHRoZXNlIGFyZSB0aGUgbmVlZCBmb3IgYSBub3RhdGlvbiBmb3IgaXRlcmF0aW5nIG92ZXIgdGhlIGVsZW1lbnRzIG9mIGFueSBmaW5pdGUgc2V0IChpbnN0ZWFkIG9mIHRoZSBtb3JlIG5hcnJvdyBmb3IgaTogZXF1YWxzIDEgdG8gbiBub3RhdGlvbiksIHRoZSB1c2Ugb2YgdGhlIGRvbWFpbiBvZiBhbiBhcnJheSBhcyBhIGRhdGEgdHlwZSwgdGhlIG5lZWQgZm9yIGEgc2ltcGxlIG5vdGF0aW9uIGZvciBhbGxvd2luZyB0eXBlcyBvZiBwYXJhbWV0ZXJzIHRvIGJlIHRoZW1zZWx2ZXMgcGFyYW1ldGVycyAoYnV0IGluIGEgcmVzdHJpY3RpdmUgZmFzaGlvbiksIGFuZCByZXN1bHRpbmcgcHJvYmxlbXMgd2l0aCBjb252ZXJzaW9uIG9mIHZhbHVlcyBmcm9tIG9uZSB0eXBlIHRvIGFub3RoZXIuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQyNDAgKFByb2dyYW1taW5nIGFuZCBhbGdvcml0aG0gdGhlb3J5KTsgQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiQ29ybmVsbCBVbml2LiwgSXRoYWNhLCBOWSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIG1ldGEgdGhlb3J5IC0tLSBBbGdvcml0aG1pYyBMYW5ndWFnZXM7IGNvbXB1dGVyIHByb2dyYW1taW5nIGxhbmd1YWdlczsgZGF0YSBwcm9jZXNzaW5nIC0tLSBEYXRhIFN0cnVjdHVyZXM7IGRhdGEgc3RydWN0dXJlczsgZGF0YSB0eXBlczsgaGlnaCBsZXZlbCBsYW5ndWFnZXM7IHByaW1pdGl2ZSBvcGVyYXRpb25zOyBwcm9ncmFtbWluZyB0aGVvcnk7IHR5cGVzIG9saXQgaXRlcmF0aW9uIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtQZXRlcnNvbjoxOTc3OkJTLAogIGF1dGhvciA9ICAgICAgICJKYW1lcyBMLiBQZXRlcnNvbiBhbmQgVGhlb2RvcmUgQS4gTm9ybWFuIiwKICB0aXRsZSA9ICAgICAgICAiQnVkZHkgU3lzdGVtcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMCIsCiAgbnVtYmVyID0gICAgICAgIjYiLAogIHBhZ2VzID0gICAgICAgICI0MjEtLTQzMSIsCiAgbW9udGggPSAgICAgICAganVuLAogIHllYXIgPSAgICAgICAgICIxOTc3IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlR3byBhbGdvcml0aG1zIGFyZSBwcmVzZW50ZWQgZm9yIGltcGxlbWVudGluZyBhbnkgb2YgYSBjbGFzcyBvZiBidWRkeSBzeXN0ZW1zIGZvciBkeW5hbWljIHN0b3JhZ2UgYWxsb2NhdGlvbi4gRWFjaCBidWRkeSBzeXN0ZW0gY29ycmVzcG9uZHMgdG8gYSBzZXQgb2YgcmVjdXJyZW5jZSByZWxhdGlvbnMgd2hpY2ggcmVsYXRlIHRoZSBibG9jayBzaXplcyBwcm92aWRlZCB0byBlYWNoIG90aGVyLiBBbmFseXNlcyBvZiB0aGUgaW50ZXJuYWwgZnJhZ21lbnRhdGlvbiBvZiB0aGUgYmluYXJ5IGJ1ZGR5IHN5c3RlbSwgdGhlIEZpYm9uYWNjaSBidWRkeSBzeXN0ZW0sIGFuZCB0aGUgd2VpZ2h0ZWQgYnVkZHkgc3lzdGVtIGFyZSBnaXZlbi4gQ29tcGFyYXRpdmUgc2ltdWxhdGlvbiByZXN1bHRzIGFyZSBhbHNvIHByZXNlbnRlZCBmb3IgaW50ZXJuYWwsIGV4dGVybmFsLCBhbmQgdG90YWwgZnJhZ21lbnRhdGlvbi4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBvZiBUZXhhcywgQXVzdGluLCBUWCwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFsZ29yaXRobXM7IGJ1ZGR5IHN5c3RlbXM7IGNvbXB1dGVyIG9wZXJhdGluZyBzeXN0ZW1zOyBjb21wdXRlciBwcm9ncmFtbWluZyAtLS0gU3Vicm91dGluZXM7IGNvbXB1dGVyIHByb2dyYW1zOyBkYXRhIHN0b3JhZ2UsIGRpZ2l0YWw7IGR5bmFtaWMgc3RvcmFnZSBhbGxvY2F0aW9uOyByZWN1cnJlbmNlIHJlbGF0aW9uczsgc3RvcmFnZSBhbGxvY2F0aW9uIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtSb2Jzb246MTk3NzpCU0EsCiAgYXV0aG9yID0gICAgICAgIkouIE0uIFJvYnNvbiIsCiAgdGl0bGUgPSAgICAgICAgIkEgQm91bmRlZCBTdG9yYWdlIEFsZ29yaXRobSBmb3IgQ29weWluZyBDeWNsaWMgU3RydWN0dXJlcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMCIsCiAgbnVtYmVyID0gICAgICAgIjYiLAogIHBhZ2VzID0gICAgICAgICI0MzEtLTQzMyIsCiAgbW9udGggPSAgICAgICAganVuLAogIHllYXIgPSAgICAgICAgICIxOTc3IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9Db21waWxlci9nYXJiYWdlLmNvbGxlY3Rpb24uYmliIiwKICBhYnN0cmFjdCA9ICAgICAiQSBuZXcgYWxnb3JpdGhtIGlzIHByZXNlbnRlZCB3aGljaCBjb3BpZXMgY3ljbGljIGxpc3Qgc3RydWN0dXJlcyB1c2luZyBib3VuZGVkIHdvcmtzcGFjZSBhbmQgbGluZWFyIHRpbWUuIFVubGlrZSBhIHByZXZpb3VzIHNpbWlsYXIgYWxnb3JpdGhtLCB0aGlzIG9uZSBtYWtlcyBubyBhc3N1bXB0aW9ucyBhYm91dCB0aGUgc3RvcmFnZSBhbGxvY2F0aW9uIHN5c3RlbSBpbiB1c2UgYW5kIHVzZXMgb25seSBvcGVyYXRpb25zIGxpa2VseSB0byBiZSBhdmFpbGFibGUgaW4gYSBoaWdoLWxldmVsIGxhbmd1YWdlLiBUaGUgZGlzdGluY3RpdmUgZmVhdHVyZSBvZiB0aGlzIGFsZ29yaXRobSBpcyBhIHRlY2huaXF1ZSBmb3IgdHJhdmVyc2luZyB0aGUgc3RydWN0dXJlIHR3aWNlLCB1c2luZyB0aGUgc2FtZSBzcGFubmluZyB0cmVlIGluIGVhY2ggY2FzZSwgZmlyc3QgZnJvbSBsZWZ0IHRvIHJpZ2h0IGFuZCB0aGVuIGZyb20gcmlnaHQgdG8gbGVmdC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pOyBDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gb2YgTGFuY2FzdGVyLCBMYW5jYXN0ZXIsIFVLIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImJvdW5kZWQgc3RvcmFnZSBhbGdvcml0aG07IGNvbXB1dGVyIHByb2dyYW1taW5nIC0tLSBTdWJyb3V0aW5lczsgY29tcHV0ZXIgcHJvZ3JhbXM7IGNvbXB1dGVyIHN5c3RlbXMgcHJvZ3JhbW1pbmc7IGNvcHlpbmc7IGN5Y2xpYyBzdHJ1Y3R1cmVzOyBsaXN0OyBsaXN0IHByb2Nlc3Npbmc7IHN0cnVjdHVyZXMiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0JpcmQ6MTk3NzpOUkUsCiAgYXV0aG9yID0gICAgICAgIlIuIFMuIEJpcmQiLAogIHRpdGxlID0gICAgICAgICJOb3RlcyBvbiBSZWN1cnNpb24gRWxpbWluYXRpb24iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjAiLAogIG51bWJlciA9ICAgICAgICI2IiwKICBwYWdlcyA9ICAgICAgICAiNDM0LS00MzkiLAogIG1vbnRoID0gICAgICAgIGp1biwKICB5ZWFyID0gICAgICAgICAiMTk3NyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvTWlzYy9GdW5jdGlvbmFsLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIlZhcmlvdXMgbWV0aG9kcyBvZiByZWN1cnNpb24gZWxpbWluYXRpb24gYXJlIGFwcGxpZWQgdG8gdGhlIHNjaGVtYXRpYyByZWN1cnNpdmUgcHJvY2VkdXJlOiBwcm9jIFMoeCk7IHB4IHRoZW4gTih4KTsgUyhmeCk7IFMoZ3gpOyBNKHgpIGZpLiBQcm9jZWR1cmVzIHdpdGggdGhpcyBnZW5lcmFsIGZvcm0gYXJpc2UgaW4gY29ubmVjdGlvbiB3aXRoIHRyZWUgdHJhdmVyc2FsIGFuZCBzb3J0aW5nIGFsZ29yaXRobXMuIEVhY2ggbWV0aG9kIG9mIHJlY3Vyc2lvbiByZW1vdmFsIGludm9sdmVzIHRoZSB1c2Ugb2Ygb25lIG9yIG1vcmUgc3RhY2tzLCBhbmQgdGhlIHNvbHV0aW9ucyBhcmUgY29tcGFyZWQgb24gdGhlIGJhc2lzIG9mIHRoZWlyIHJ1bm5pbmcgdGltZS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDI0MCAoUHJvZ3JhbW1pbmcgYW5kIGFsZ29yaXRobSB0aGVvcnkpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjE7IDcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIG9mIFJlYWRpbmcsIFJlYWRpbmcsIFVLIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImF1dG9tYXRhIHRoZW9yeSAtLS0gUmVjdXJzaXZlIEZ1bmN0aW9uczsgY29tcHV0ZXIgcHJvZ3JhbW1pbmc7IGNvbXB1dGVyIHN5c3RlbXMgcHJvZ3JhbW1pbmcgLS0tIFNvcnRpbmc7IGZ1bmN0aW9uYWw7IHByb2dyYW1taW5nIHRoZW9yeTsgcmVjdXJzaW9uIGVsaW1pbmF0aW9uOyBydW5uaW5nIHRpbWU7IHNvcnRpbmcgYWxnb3JpdGhtczsgc3RhY2tzOyB0cmVlIHRyYXZlcnNhbCIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7V2FycmVuOjE5Nzc6RlJXLAogIGF1dGhvciA9ICAgICAgICJIZW5yeSBTLiB7V2FycmVuLCBKci59IiwKICB0aXRsZSA9ICAgICAgICAiRnVuY3Rpb25zIFJlYWxpemFibGUgd2l0aCBXb3JkLVBhcmFsbGVsIExvZ2ljYWwgYW5kIFR3bydzLUNvbXBsZW1lbnQgQWRkaXRpb24gSW5zdHJ1Y3Rpb25zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIwIiwKICBudW1iZXIgPSAgICAgICAiNiIsCiAgcGFnZXMgPSAgICAgICAgIjQzOS0tNDQxIiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzciLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI5NEEyMCIsCiAgTVJudW1iZXIgPSAgICAgIjU4IDI2NTkxIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkEgdGhlb3JlbSBpcyBnaXZlbiBmb3IgZGVkdWNpbmcgd2hldGhlciBvciBub3QgYSBnaXZlbiBmdW5jdGlvbiBjYW4gYmUgY29tcHV0ZWQgdGhyb3VnaCB0aGUgdXNlIG9mIGBgcHJvZ3JhbW1pbmcgdHJpY2tzJycgaW52b2x2aW5nIGJpbmFyeSBudW1iZXJzLiBUaGlzIGlzIGZvbGxvd2VkIGJ5IGFuIGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbiBvZiBzaWduIHByb3BhZ2F0aW9uIHRoYXQgZG9lcyBub3QgdXNlIHNoaWZ0aW5nIGluc3RydWN0aW9ucyBvciBicmFuY2hpbmcgaW5zdHJ1Y3Rpb25zLiBUaGUgc2lnbi1wcm9wYWdhdGlvbiBkZXZpY2UgYW5kIGEgZ2l2ZW4gZXhwcmVzc2lvbiBmb3IgbWl4ZWQgbGVuZ3RoIGFkZHMgYW5kIHN1YnRyYWN0cyBhcmUgdXNlZCBpbiBhbiBleHBlcmltZW50YWwgY29tcGlsZXIgY3VycmVudGx5IGJlaW5nIGRldmVsb3BlZCBmb3IgdHJhbnNsYXRpbmcgUEwvSSB0byBtaWNyb2NvZGUgZm9yIGEgdmFyaWV0eSBvZiBtYWNoaW5lcy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNTIzMCAoRGlnaXRhbCBhcml0aG1ldGljIG1ldGhvZHMpOyBDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIyOyA3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJJQk0gVGhvbWFzIEouIFdhdHNvbiBSZXMuIENlbnRlciwgWW9ya3Rvd24gSGVpZ2h0cywgTlksIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhZGRpdGlvbiBpbnN0cnVjdGlvbnM7IGNvbXB1dGVyIGFyY2hpdGVjdHVyZSAtLS0gTWljcm9wcm9ncmFtbWluZzsgY29tcHV0ZXIgbWV0YXRoZW9yeTsgY29tcHV0ZXIgcHJvZ3JhbW1pbmc7IGRpZ2l0YWwgYXJpdGhtZXRpYzsgZnVuY3Rpb25zIHJlYWxpc2FibGU7IHR3bydzIGNvbXBsZW1lbnQ7IHdvcmQgcGFyYWxsZWwgbG9naWNhbCBpbnN0cnVjdGlvbnMiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle01hbXJhazoxOTc3OkRSVCwKICBhdXRob3IgPSAgICAgICAiU2FuZHJhIEEuIE1hbXJhayIsCiAgdGl0bGUgPSAgICAgICAgIkR5bmFtaWMgUmVzcG9uc2UgVGltZSBQcmVkaWN0aW9uIGZvciBDb21wdXRlciBOZXR3b3JrcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMCIsCiAgbnVtYmVyID0gICAgICAgIjciLAogIHBhZ2VzID0gICAgICAgICI0NjEtLTQ2OCIsCiAgbW9udGggPSAgICAgICAganVsLAogIHllYXIgPSAgICAgICAgICIxOTc3IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkZpdmUgaW50ZXJhY3RpdmUgc3lzdGVtcyBjdXJyZW50bHkgYXZhaWxhYmxlIG9uIHRoZSBBUlBBIG5ldHdvcmsgYXJlIGNvbXBhcmVkLiBBIHN5c3RlbSBlbnZpcm9ubWVudCBpcyBkZWZpbmVkIGluIHdoaWNoIHJlc3BvbnNlIHRpbWUgbWVhc3VyZW1lbnRzIGNhbiBiZSBtYWRlLCBhbmQgc3RhdGlzdGljYWwsIHNpbXVsYXRpb24sIGFuZCBhbmFseXRpY2FsIHRvb2xzIGFyZSB1c2VkIHRvIGRlc2NyaWJlIGFuZCB0aGVuIHByZWRpY3QgdGhlIHJlc3BvbnNlIHRpbWUgYmVoYXZpb3IuIFRoZSBlZmZlY3Qgb2YgbmV0d29yayBxdWV1ZWluZyBkZWxheXMgaXMgZGlzY3Vzc2VkLiBGaW5hbGx5LCBhIGR5bmFtaWMgcmVzcG9uc2UgdGltZSBtb25pdG9yIGZvciBBUlBBIG5ldHdvcmsgdXNlcnMgaXMgcHJvcG9zZWQgYmFzZWQgb24gdGhlIHN1Y2Nlc3Mgb2YgdGhlIHJlc3BvbnNlIHRpbWUgcHJlZGljdGlvbiBtZXRob2RvbG9naWVzIGFuZCBtb2RlbHMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzU2MjAgKENvbXB1dGVyIG5ldHdvcmtzIGFuZCB0ZWNobmlxdWVzKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIyOyA3MjM7IDkyMiIsCiAgY29ycHNvdXJjZSA9ICAgIk9oaW8gU3RhdGUgVW5pdi4sIENvbHVtYnVzLCBPSCwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgIkFSUEE7IGNvbXB1dGVyIG5ldHdvcmtzOyBjb21wdXRlciBzaW11bGF0aW9uOyBjb21wdXRlciBzeXN0ZW1zLCBkaWdpdGFsIC0tLSBGYXN0IFJlc3BvbnNlIENhcGFiaWxpdHk7IGR5bmFtaWMgcHJlZGljdGlvbjsgbWF0aGVtYXRpY2FsIG1vZGVsczsgcmVzcG9uc2UgdGltZTsgc3RhdGlzdGljYWwgbWV0aG9kczsgdGltZS1zaGFyaW5nIHN5c3RlbXMiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle1J1c2NoaXR6a2E6MTk3NzpVQVMsCiAgYXV0aG9yID0gICAgICAgIk1hbmZyZWQgUnVzY2hpdHprYSBhbmQgUi4gUy4gRmFicnkiLAogIHRpdGxlID0gICAgICAgICJBIFVuaWZ5aW5nIEFwcHJvYWNoIHRvIFNjaGVkdWxpbmciLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjAiLAogIG51bWJlciA9ICAgICAgICI3IiwKICBwYWdlcyA9ICAgICAgICAiNDY5LS00NzciLAogIG1vbnRoID0gICAgICAgIGp1bCwKICB5ZWFyID0gICAgICAgICAiMTk3NyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGlzdHJpYnV0ZWQvUUxELzE5NzcuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiVGhpcyBwYXBlciBwcmVzZW50cyBhIHNjaGVtZSBmb3IgY2xhc3NpZnlpbmcgc2NoZWR1bGluZyBhbGdvcml0aG1zIGJhc2VkIG9uIGFuIGFic3RyYWN0IG1vZGVsIG9mIGEgc2NoZWR1bGluZyBzeXN0ZW0gd2hpY2ggZm9ybWFsaXplcyB0aGUgbm90aW9uIG9mIHByaW9yaXR5LiBWYXJpb3VzIGNsYXNzZXMgb2Ygc2NoZWR1bGluZyBhbGdvcml0aG1zIGFyZSBkZWZpbmVkIGFuZCByZWxhdGVkIHRvIGV4aXN0aW5nIGFsZ29yaXRobXMuIEEgY3JpdGVyaW9uIGZvciB0aGUgaW1wbGVtZW50YXRpb24gZWZmaWNpZW5jeSBvZiBhbiBhbGdvcml0aG0gaXMgZGV2ZWxvcGVkIGFuZCByZXN1bHRzIGluIHRoZSBkZWZpbml0aW9uIG9mIHRpbWUtaW52YXJpYW50IGFsZ29yaXRobXMsIHdoaWNoIGluY2x1ZGUgbW9zdCBvZiB0aGUgY29tbW9ubHkgaW1wbGVtZW50ZWQgb25lcy4gRm9yIHRpbWUtaW52YXJpYW50IGFsZ29yaXRobXMsIHRoZSBkZXBlbmRlbmNlIG9mIHByb2Nlc3NpbmcgcmF0ZXMgb24gcHJpb3JpdGllcyBpcyBkZXJpdmVkLiBUaGUgYWJzdHJhY3QgbW9kZWwgcHJvdmlkZXMgYSBmcmFtZXdvcmsgZm9yIGltcGxlbWVudGluZyBmbGV4aWJsZSBzY2hlZHVsZXJzIGluIHJlYWwgb3BlcmF0aW5nIHN5c3RlbXMuIFRoZSBwb2xpY3ktZHJpdmVuIHNjaGVkdWxlciBvZiBCZXJuc3RlaW4gYW5kIFNoYXJwIGlzIGRpc2N1c3NlZCBhcyBhbiBleGFtcGxlIG9mIHN1Y2ggYW4gaW1wbGVtZW50YXRpb24uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzU0MjAgKE1haW5mcmFtZXMgYW5kIG1pbmljb21wdXRlcnMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjM7IDkyMiIsCiAgY29ycHNvdXJjZSA9ICAgIlJ1dGdlcnMgVW5pdi4sIE5ldyBCcnVuc3dpY2ssIE5KLCBVU0EiLAogIGNvdW50cnkgPSAgICAgICJVU0EiLAogIGRlc2NyaXB0b3JzID0gICJTY2hlZHVsaW5nOyBxdWV1ZWluZyBkaXNjaXBsaW5lOyBwcmlvcml0eTsgcHJvY2Vzc29yIHNoYXJpbmc7IHByb2Nlc3MgbWFuYWdlbWVudDsiLAogIGVudW0gPSAgICAgICAgICIyNjQ1IiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFsZ29yaXRobXM7IGNvbXB1dGVyIG9wZXJhdGluZyBzeXN0ZW1zIC0tLSBTY2hlZHVsaW5nOyBjb21wdXRlciBwcm9ncmFtbWluZyAtLS0gU3Vicm91dGluZXM7IGNvbXB1dGVyIHN5c3RlbXMgcHJvZ3JhbW1pbmc7IGltcGxlbWVudGF0aW9uIGVmZmljaWVuY3k7IG9wZXJhdGluZyBzeXN0ZW1zOyBwcmlvcml0eTsgcHJvYmFiaWxpdHkgLS0tIFF1ZXVlaW5nIFRoZW9yeTsgcHJvY2Vzc29yIHNoYXJpbmc7IHNjaGVkdWxpbmc7IHNjaGVkdWxpbmcgYWxnb3JpdGhtczsgc2NoZWR1bGluZyBtb2RlbHM7IHRpbWUtc2hhcmluZyBzeXN0ZW1zOyB1bmlmeWluZyBhcHByb2FjaCIsCiAgbGFuZ3VhZ2UgPSAgICAgIkVuZ2xpc2giLAogIHJlZmVyZW5jZXMgPSAgICIwIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWw7IFQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7VGFqaWJuYXBpczoxOTc3OkNQVCwKICBhdXRob3IgPSAgICAgICAiV2lsbGlhbSBELiBUYWppYm5hcGlzIiwKICB0aXRsZSA9ICAgICAgICAiQSBDb3JyZWN0bmVzcyBQcm9vZiBvZiBhIFRvcG9sb2d5IEluZm9ybWF0aW9uIE1haW50ZW5hbmNlIFByb3RvY29sIGZvciBhIERpc3RyaWJ1dGVkIENvbXB1dGVyIE5ldHdvcmsiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjAiLAogIG51bWJlciA9ICAgICAgICI3IiwKICBwYWdlcyA9ICAgICAgICAiNDc3LS00ODUiLAogIG1vbnRoID0gICAgICAgIGp1bCwKICB5ZWFyID0gICAgICAgICAiMTk3NyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjk0QTIwIiwKICBNUm51bWJlciA9ICAgICAiNTggNDcwMyIsCiAgbXJyZXZpZXdlciA9ICAgIkZhbiBSLiBLLiBDaHVuZyIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGlzdHJpYnV0ZWQvUUxELzE5NzcuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiT25lIG9mIHRoZSBtYWpvciBjb25zdHJhaW50cyBvbiBhIHRvcG9sb2d5IGluZm9ybWF0aW9uIHNjaGVtZSBpcyB0aGF0IGl0IG1heSBub3QgaW52b2x2ZSBhIGNlbnRyYWwgY29udHJvbGxlci4gVGhlIFRvcG9sb2d5IEluZm9ybWF0aW9uIFByb3RvY29sIHRoYXQgd2FzIGltcGxlbWVudGVkIG9uIHRoZSBNRVJJVCBDb21wdXRlciBOZXR3b3JrIGlzIHByZXNlbnRlZCBhbmQgZXhwbGFpbmVkOyB0aGlzIHByb3RvY29sIGlzIHF1aXRlIGdlbmVyYWwgYW5kIGNvdWxkIGJlIGltcGxlbWVudGVkIG9uIGFueSBjb21wdXRlciBuZXR3b3JrLiBJdCBpcyBiYXNlZCBvbiBCYXJhbidzIGBgSG90IFBvdGF0byBIZXVyaXN0aWMgUm91dGluZyBEb2N0cmluZS4nJyBBIGNvcnJlY3RuZXNzIHByb29mIG9mIHRoaXMgVG9wb2xvZ3kgSW5mb3JtYXRpb24gUHJvdG9jb2wgaXMgYWxzbyBwcmVzZW50ZWQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBhbm5vdGUgPSAgICAgICAiKFZCSS0wMDE1NTkpIiwKICBjbGFzc2NvZGVzID0gICAiQzU2MjAgKENvbXB1dGVyIG5ldHdvcmtzIGFuZCB0ZWNobmlxdWVzKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIyOyA3MjMiLAogIGNvdW50cnkgPSAgICAgICJVU0EiLAogIGRlc2NyaXB0b3JzID0gICJQcm90b2NvbCB2ZXJpZmljYXRpb247IiwKICBlbnVtID0gICAgICAgICAiMTEyODUiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgbmV0d29ya3M7IGNvbXB1dGVyIHByb2dyYW1taW5nIC0tLSBTdWJyb3V0aW5lczsgY29tcHV0ZXIgc3lzdGVtcywgZGlnaXRhbCAtLS0gTXVsdGlwcm9jZXNzaW5nOyBjb21wdXRlcnMgLS0tIERhdGEgQ29tbXVuaWNhdGlvbiBTeXN0ZW1zOyBjb3JyZWN0bmVzcyBwcm9vZjsgZGlzdHJpYnV0ZWQgY29tcHV0ZXIgbmV0d29yazsgcHJvdG9jb2w7IHByb3RvY29sczsgdG9wb2xvZ3kgaW5mb3JtYXRpb24gbWFpbnRlbmFuY2UiLAogIGxhbmd1YWdlID0gICAgICJFbmdsaXNoIiwKICByZWZlcmVuY2VzID0gICAiMCIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7SGVja2VsOjE5Nzc6VENTLAogIGF1dGhvciA9ICAgICAgICJQYXVsIEcuIEhlY2tlbCBhbmQgQnV0bGVyIFcuIExhbXBzb24iLAogIHRpdGxlID0gICAgICAgICJBIHRlcm1pbmFsLW9yaWVudGVkIGNvbW11bmljYXRpb24gc3lzdGVtIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIwIiwKICBudW1iZXIgPSAgICAgICAiNyIsCiAgcGFnZXMgPSAgICAgICAgIjQ4Ni0tNDk0IiwKICBtb250aCA9ICAgICAgICBqdWwsCiAgeWVhciA9ICAgICAgICAgIjE5NzciLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiVGhpcyBwYXBlciBkZXNjcmliZXMgYSBzeXN0ZW0gZm9yIGZ1bGwtZHVwbGV4IGNvbW11bmljYXRpb24gYmV0d2VlbiBhIHRpbWUtc2hhcmVkIGNvbXB1dGVyIGFuZCBpdHMgdGVybWluYWxzLiBUaGUgc3lzdGVtIGNvbnNpc3RzIG9mIGEgY29tbXVuaWNhdGlvbnMgY29tcHV0ZXIgZGlyZWN0bHkgY29ubmVjdGVkIHRvIHRoZSB0aW1lLXNoYXJlZCBzeXN0ZW0sIGEgbnVtYmVyIG9mIHNtYWxsIHJlbW90ZSBjb21wdXRlcnMgdG8gd2hpY2ggdGhlIHRlcm1pbmFscyBhcmUgYXR0YWNoZWQsIGFuZCBjb25uZWN0aW5nIG1lZGl1bSBzcGVlZCB0ZWxlcGhvbmUgbGluZXMuIEl0IGNhbiBzZXJ2aWNlIGEgbGFyZ2UgbnVtYmVyIG9mIHRlcm1pbmFscyBvZiB2YXJpb3VzIHR5cGVzLiBUaGUgb3ZlcmFsbCBzeXN0ZW0gZGVzaWduIGlzIHByZXNlbnRlZCBhbG9uZyB3aXRoIHRoZSBhbGdvcml0aG1zIHVzZWQgdG8gc29sdmUgdGhyZWUgc3BlY2lmaWMgcHJvYmxlbXM6IGxvY2FsIGVjaG9pbmcsIGVycm9yIGRldGVjdGlvbiBhbmQgY29ycmVjdGlvbiBvbiB0aGUgdGVsZXBob25lIGxpbmVzLCBhbmQgbXVsdGlwbGV4aW5nIG9mIGNoYXJhY3RlciBvdXRwdXQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjYyMTBMIChDb21wdXRlciBjb21tdW5pY2F0aW9ucyk7IEM1NjAwIChEYXRhIGNvbW11bmljYXRpb24gZXF1aXBtZW50IGFuZCB0ZWNobmlxdWVzKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzE4OyA3MjI7IDcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIkludGVyYWN0aXZlIFN5c3RlbXMgQ29uc3VsdGFudHMsIFBhbG8gQWx0bywgQ0EsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjaGFyYWN0ZXIgb3V0cHV0OyBjb21tdW5pY2F0aW9uIHN5c3RlbTsgY29tcHV0ZXIgbmV0d29ya3M7IGNvbXB1dGVyIHByb2dyYW1taW5nIC0tLSBTdWJyb3V0aW5lczsgY29tcHV0ZXJzIC0tLSBEYXRhIENvbW11bmljYXRpb24gU3lzdGVtczsgZGF0YSBjb21tdW5pY2F0aW9uIHN5c3RlbXM7IGRldGVjdGlvbiBhbmQgY29ycmVjdGlvbjsgZGlnaXRhbCBjb21tdW5pY2F0aW9uIHN5c3RlbXMgLS0tIENvbXB1dGVyIEludGVyZmFjZXM7IGVycm9yOyBmdWxsIGR1cGxleDsgbG9jYWwgZWNob2luZzsgbXVsdGlwbGV4aW5nOyBzeXN0ZW0gZGVzaWduOyB0ZXJtaW5hbCBvcmllbnRlZDsgdGltZSBzaGFyaW5nOyB0aW1lLXNoYXJpbmcgc3lzdGVtcyIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7U2NobmVpZGVyOjE5Nzc6U0lULAogIGF1dGhvciA9ICAgICAgICJCZW4gUm9zcyB7U2NobmVpZGVyLCBKci59IGFuZCBSZWlkIE0uIFdhdHRzIiwKICB0aXRsZSA9ICAgICAgICAie1NJVEFSfTogYW4gSW50ZXJhY3RpdmUgVGV4dCBQcm9jZXNzaW5nIFN5c3RlbSBmb3IgU21hbGwgQ29tcHV0ZXJzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIwIiwKICBudW1iZXIgPSAgICAgICAiNyIsCiAgcGFnZXMgPSAgICAgICAgIjQ5NS0tNDk5IiwKICBtb250aCA9ICAgICAgICBqdWwsCiAgeWVhciA9ICAgICAgICAgIjE5NzciLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiU0lUQVIsIGEgU3lzdGVtIGZvciBJbnRlcmFjdGl2ZSBUZXh0LWVkaXRpbmcsIEFuYWx5c2lzLCBhbmQgUmV0cmlldmFsLCBpcyBpbiBtYW55IHdheXMgY29tcGFyYWJsZSB0byBpbnRlcmFjdGl2ZSBiaWJsaW9ncmFwaGljYWwgc2VhcmNoIGFuZCByZXRyaWV2YWwgc3lzdGVtcywgYnV0IGhhcyBzZXZlcmFsIGFkZGl0aW9uYWwgZmVhdHVyZXMuIEl0IGlzIGltcGxlbWVudGVkIG9uIGEgUERQXHNsYXNoIDExIHRpbWUtc2hhcmluZyBjb21wdXRlciBpbnZva2VkIGJ5IGEgQ1JUIHdpdGggbWljcm9wcm9ncmFtbWVkIGVkaXRpbmcgZnVuY3Rpb25zLiBFeHRlbnNpdmUgZXhwZXJpZW5jZSB3aXRoIFNJVEFSIHNob3dzIHRoYXQgdGhlIGNvbWJpbmVkIHBvd2VycyBvZiBzaW1wbGUgY29tbWFuZHMsIHN0cmluZyBvcmllbnRhdGlvbiwgY2lyY3VsYXIgZmlsZSBzdHJ1Y3R1cmUsIGEgQ1JUIHdpdGggbG9jYWwgbWVtb3J5LCBhbmQgY29udmVyc2F0aW9uYWwgY29tcHV0aW5nIHByb2R1Y2UgYSBzeXN0ZW0gbXVjaCBtb3JlIHBvd2VyZnVsIHRoYW4gdGhlIHN1bSBvZiBpdHMgcGFydHMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMzAgKERhdGEgaGFuZGxpbmcgdGVjaG5pcXVlcyk7IEM3MjUwIChJbmZvcm1hdGlvbiBzdG9yYWdlIGFuZCByZXRyaWV2YWwpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjI7IDcyMzsgOTAxIiwKICBjb3Jwc291cmNlID0gICAiTGF3cmVuY2UgVW5pdi4sIEFwcGxldG9uLCBXSSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNpcmN1bGFyIGZpbGUgc3RydWN0dXJlOyBjb21wdXRlciBzeXN0ZW1zLCBkaWdpdGFsOyBjb21wdXRlcnMsIG1pbmlhdHVyZSAtLS0gQXBwbGljYXRpb25zOyBjb252ZXJzYXRpb25hbCBjb21wdXRpbmc7IENSVCB3aXRoIGxvY2FsIG1lbW9yeTsgZGF0YSBwcm9jZXNzaW5nIC0tLSBIdW1hbml0aWVzIEFwcGxpY2F0aW9uczsgaW5mb3JtYXRpb24gcmV0cmlldmFsOyBpbmZvcm1hdGlvbiByZXRyaWV2YWwgc3lzdGVtczsgaW50ZXJhY3RpdmUgdGV4dCBwcm9jZXNzaW5nIHN5c3RlbTsgb3JpZW50YXRpb247IHNpbXBsZSBjb21tYW5kczsgU0lUQVI7IHNtYWxsIGNvbXB1dGVyczsgc3RyaW5nOyB0ZXh0IGFuYWx5c2lzOyB0ZXh0IGVkaXRpbmc7IHRleHQgaGFuZGxpbmciLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0tlc3NlbHM6MTk3NzpBRVEsCiAgYXV0aG9yID0gICAgICAgIkouIEwuIFcuIEtlc3NlbHMiLAogIHRpdGxlID0gICAgICAgICJBbHRlcm5hdGl2ZSB0byBFdmVudCBRdWV1ZXMgZm9yIFN5bmNocm9uaXphdGlvbiBpbiBNb25pdG9ycyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMCIsCiAgbnVtYmVyID0gICAgICAgIjciLAogIHBhZ2VzID0gICAgICAgICI1MDAtLTUwMyIsCiAgbW9udGggPSAgICAgICAganVsLAogIHllYXIgPSAgICAgICAgICIxOTc3IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkluIHRoZSBtb25pdG9yIGNvbmNlcHQsIGFzIHByb3Bvc2VkIGJ5IEJyaW5jaCBIYW5zZW4gYW5kIEhvYXJlLCBldmVudCBxdWV1ZXMgYXJlIHVzZWQgZm9yIHN5bmNocm9uaXphdGlvbi4gVGhpcyBwYXBlciBkZXNjcmliZXMgYW5vdGhlciBzeW5jaHJvbml6aW5nIHByaW1pdGl2ZSB3aGljaCBpcyBuZWFybHkgYXMgZXhwcmVzc2l2ZSBhcyB0aGUgY29uZGl0aW9uYWwgd2FpdCwgYnV0IGNhbiBiZSBpbXBsZW1lbnRlZCBtb3JlIGVmZmljaWVudGx5LiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIHByaW1pdGl2ZSBpbiB0ZXJtcyBvZiBQIGFuZCBWIG9wZXJhdGlvbnMgaXMgZ2l2ZW4gdG9nZXRoZXIgd2l0aCBhIGNvcnJlY3RuZXNzIHByb29mLiBUd28gZXhhbXBsZXMgYXJlIHByZXNlbnRlZDogdGhlIHJlYWRlcnMgYW5kIHdyaXRlcnMgcHJvYmxlbSBhbmQgdGhlIHByb2JsZW0gb2YgaW5mb3JtYXRpb24gc3RyZWFtcyBzaGFyaW5nIGEgZmluaXRlIGJ1ZmZlciBwb29sLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTUwSiAoT3BlcmF0aW5nIHN5c3RlbXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJQaGlsaXBzIFJlcy4gTGFicy4sIEVpbmRob3ZlbiwgTmV0aGVybGFuZHMiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYWx0ZXJuYXRpdmU7IGNvbXB1dGVyIG9wZXJhdGluZyBzeXN0ZW1zIC0tLSBTY2hlZHVsaW5nOyBjb21wdXRlciBwcm9ncmFtbWluZyAtLS0gU3Vicm91dGluZXM7IGNvbXB1dGVyIHN5c3RlbXMgcHJvZ3JhbW1pbmc7IGV2ZW50IHF1ZXVlczsgbW9uaXRvcnM7IG9wZXJhdGluZyBzeXN0ZW1zIChjb21wdXRlcnMpOyBzeW5jaHJvbml6YXRpb24iLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0Rlbm5pbmc6MTk3NzpDUFMsCiAgYXV0aG9yID0gICAgICAgIkRvcm90aHkgRS4gRGVubmluZyBhbmQgUGV0ZXIgSi4gRGVubmluZyIsCiAgdGl0bGUgPSAgICAgICAgIkNlcnRpZmljYXRpb24gb2YgUHJvZ3JhbXMgZm9yIFNlY3VyZSBJbmZvcm1hdGlvbiBGbG93IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIwIiwKICBudW1iZXIgPSAgICAgICAiNyIsCiAgcGFnZXMgPSAgICAgICAgIjUwNC0tNTEzIiwKICBtb250aCA9ICAgICAgICBqdWwsCiAgeWVhciA9ICAgICAgICAgIjE5NzciLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0RhdGFiYXNlL1dpZWRlcmhvbGQuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiQW4gaW5mb3JtYXRpb24gZmxvdyBwb2xpY3kgc3BlY2lmaWVzIGEgc2V0IG9mIHNlY3VyaXR5IGNsYXNzZXMgZm9yIGluZm9ybWF0aW9uLCBhIGZsb3cgcmVsYXRpb24gZGVmaW5pbmcgcGVybWlzc2libGUgZmxvd3MgYW1vbmcgdGhlc2UgY2xhc3NlcywgYW5kIGEgbWV0aG9kIG9mIGJpbmRpbmcgZWFjaCBzdG9yYWdlIG9iamVjdCB0byBzb21lIGNsYXNzLiBUaGlzIHBhcGVyIHByZXNlbnRzIGEgY29tcGlsZS10aW1lIG1lY2hhbmlzbSB0aGF0IGNlcnRpZmllcyBhIHByb2dyYW0gb25seSBpZiBpdCBzcGVjaWZpZXMgbm8gZmxvd3MgaW4gdmlvbGF0aW9uIG9mIHRoZSBmbG93IHBvbGljeS4gQmVjYXVzZSBpdCBleHBsb2l0cyB0aGUgcHJvcGVydGllcyBvZiBhIGxhdHRpY2Ugc3RydWN0dXJlIGFtb25nIHNlY3VyaXR5IGNsYXNzZXMsIHRoZSBwcm9jZWR1cmUgaXMgc3VmZmljaWVudGx5IHNpbXBsZSB0aGF0IGl0IGNhbiBlYXNpbHkgYmUgaW5jbHVkZWQgaW4gdGhlIGFuYWx5c2lzIHBoYXNlIG9mIG1vc3QgZXhpc3RpbmcgY29tcGlsZXJzLiBBcHByb3ByaWF0ZSBzZW1hbnRpY3MgYXJlIHByZXNlbnRlZCBhbmQgcHJvdmVkIGNvcnJlY3QuIEFuIGltcG9ydGFudCBhcHBsaWNhdGlvbiBpcyB0aGUgY29uZmluZW1lbnQgcHJvYmxlbS4gVGhlIG1lY2hhbmlzbSBjYW4gcHJvdmUgdGhhdCBhIHByb2dyYW0gY2Fubm90IGNhdXNlIHN1cHBvc2VkbHkgbm9uY29uZmlkZW50aWFsIHJlc3VsdHMgdG8gZGVwZW5kIG9uIGNvbmZpZGVudGlhbCBpbnB1dCBkYXRhLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTUwQyAoQ29tcGlsZXJzLCBpbnRlcnByZXRlcnMgYW5kIG90aGVyIHByb2Nlc3NvcnMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJQdXJkdWUgVW5pdi4sIFdlc3QgTGFmYXlldHRlLCBJTiwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNlcnRpZmljYXRpb24gbWVjaGFuaXNtOyBjb21waWxlcnM7IGNvbXB1dGVyIG9wZXJhdGluZyBzeXN0ZW1zIC0tLSBQcm9ncmFtIENvbXBpbGVyczsgZGF0YSBwcm9jZXNzaW5nOyBsYXR0aWNlIHN0cnVjdHVyZTsgcHJvZ3JhbSBjb21waWxlcnM7IHByb2dyYW1zOyBzZWN1cmUgaW5mb3JtYXRpb24gZmxvdzsgc2VjdXJpdHkgb2YgZGF0YSIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0JhcnRoOjE5Nzc6U0dDLAogIGF1dGhvciA9ICAgICAgICJKZWZmcmV5IE0uIEJhcnRoIiwKICB0aXRsZSA9ICAgICAgICAiU2hpZnRpbmcgR2FyYmFnZSBDb2xsZWN0aW9uIE92ZXJoZWFkIHRvIENvbXBpbGUgVGltZSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMCIsCiAgbnVtYmVyID0gICAgICAgIjciLAogIHBhZ2VzID0gICAgICAgICI1MTMtLTUxOCIsCiAgbW9udGggPSAgICAgICAganVsLAogIHllYXIgPSAgICAgICAgICIxOTc3IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlRoZSBwYXBlciBhc3N1bWVzIGEgdHJhbnNhY3Rpb24gb3JpZW50ZWQgY29sbGVjdGlvbiBzY2hlbWUsIGFzIHByb3Bvc2VkIGJ5IERldXRzY2ggYW5kIEJvYnJvdywgdGhlIG5lY2Vzc2FyeSBmZWF0dXJlcyBvZiB3aGljaCBhcmUgc3VtbWFyaXplZC4gSW1wbGVtZW50aW5nIHRoZSBkZXNjcmliZWQgb3B0aW1pemF0aW9uIHJlcXVpcmVzIGdsb2JhbCBmbG93IGFuYWx5c2lzIHRvIGJlIHBlcmZvcm1lZCBvbiB0aGUgc291cmNlIHByb2dyYW0uIEl0IGlzIHNob3duIHRoYXQgYXQgY29tcGlsZSB0aW1lIGNlcnRhaW4gcHJvZ3JhbSBhY3Rpb25zIHRoYXQgYWZmZWN0IHRoZSByZWZlcmVuY2UgY291bnRzIG9mIGNlbGxzIGNhbiBiZSBkZWR1Y2VkLiBUaGlzIGluZm9ybWF0aW9uIGlzIHVzZWQgdG8gZmluZCBhY3Rpb25zIHRoYXQgY2FuY2VsIHdoZW4gdGhlIGNvZGUgaXMgZXhlY3V0ZWQgYW5kIHRob3NlIHRoYXQgY2FuIGJlIGdyb3VwZWQgdG8gYWNoaWV2ZSBpbXByb3ZlZCBlZmZpY2llbmN5LiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbikiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIG9mIENhbGlmb3JuaWEsIEJlcmtlbGV5LCBDQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImF1dG9tYXRpYyBzdG9yYWdlOyBjb21waWxlIHRpbWU7IGNvbXB1dGVyIG9wZXJhdGluZyBzeXN0ZW1zOyBjb21wdXRlciBwcm9ncmFtbWluZyBsYW5ndWFnZXMgLS0tIExpc3QgUHJvY2Vzc2luZzsgZmxvdyBhbmFseXNpczsgZ2FyYmFnZSBjb2xsZWN0aW9uIG92ZXJoZWFkOyBnbG9iYWw7IG9wdGltaXphdGlvbjsgcmVjbGFtYXRpb247IHN0b3JhZ2UgbWFuYWdlbWVudDsgdHJhbnNhY3Rpb24gb3JpZW50ZWQgY29sbGVjdGlvbiBzY2hlbWUiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0FzaGNyb2Z0OjE5Nzc6TE5MLAogIGF1dGhvciA9ICAgICAgICJFLiBBLiBBc2hjcm9mdCBhbmQgVy4gVy4gV2FkZ2UiLAogIHRpdGxlID0gICAgICAgICJ7THVjaWR9LCBhIE5vbnByb2NlZHVyYWwgTGFuZ3VhZ2Ugd2l0aCBJdGVyYXRpb24iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjAiLAogIG51bWJlciA9ICAgICAgICI3IiwKICBwYWdlcyA9ICAgICAgICAiNTE5LS01MjYiLAogIG1vbnRoID0gICAgICAgIGp1bCwKICB5ZWFyID0gICAgICAgICAiMTk3NyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvUGFyYWxsZWwvUGZwYmliLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIkx1Y2lkIGlzIGEgZm9ybWFsIHN5c3RlbSBpbiB3aGljaCBwcm9ncmFtcyBjYW4gYmUgd3JpdHRlbiBhbmQgcHJvb2ZzIG9mIHByb2dyYW1zIGNhcnJpZWQgb3V0LiBUaGUgcHJvb2ZzIGFyZSBwYXJ0aWN1bGFybHkgZWFzeSB0byBmb2xsb3cgYW5kIHN0cmFpZ2h0LWZvcndhcmQgdG8gcHJvZHVjZSBiZWNhdXNlIHRoZSBzdGF0ZW1lbnRzIGluIGEgTHVjaWQgcHJvZ3JhbSBhcmUgc2ltcGx5IGF4aW9tcyBmcm9tIHdoaWNoIHRoZSBwcm9vZiBwcm9jZWVkcyBieSAoYWxtb3N0KSBjb252ZW50aW9uYWwgbG9naWMgcmVhc29uaW5nLCB3aXRoIHRoZSBoZWxwIG9mIGEgZmV3IGF4aW9tcyBhbmQgcnVsZXMgb2YgaW5mZXJlbmNlIGZvciB0aGUgc3BlY2lhbCBsdWNpZCBmdW5jdGlvbnMuIEFzIGEgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UsIEx1Y2lkIGlzIHVuY29udmVudGlvbmFsIGJlY2F1c2UsIGFtb25nIG90aGVyIHRoaW5ncywgdGhlIG9yZGVyIG9mIHN0YXRlbWVudHMgaXMgaXJyZWxldmFudCBhbmQgYXNzaWdubWVudCBzdGF0ZW1lbnRzIGFyZSBlcXVhdGlvbnMuIE5ldmVydGhlbGVzcywgTHVjaWQgcHJvZ3JhbXMgbmVlZCBub3QgbG9vayBtdWNoIGRpZmZlcmVudCB0aGFuIGl0ZXJhdGl2ZSBwcm9ncmFtcyBpbiBhIGNvbnZlbnRpb25hbCBzdHJ1Y3R1cmVkIHByb2dyYW1taW5nIGxhbmd1YWdlIHVzaW5nIGFzc2lnbm1lbnQgYW5kIGNvbmRpdGlvbmFsIHN0YXRlbWVudHMgYW5kIGxvb3BzLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MjEwIChGb3JtYWwgbG9naWMpOyBDNjE0MEQgKEhpZ2ggbGV2ZWwgbGFuZ3VhZ2VzKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gb2YgV2F0ZXJsb28sIFdhdGVybG9vLCBPbnQuLCBDYW5hZGEiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgbWV0YXRoZW9yeSAtLS0gQWxnb3JpdGhtaWMgTGFuZ3VhZ2VzOyBjb21wdXRlciBwcm9ncmFtbWluZyAtLS0gUmVsaWFiaWxpdHk7IGNvbXB1dGVyIHByb2dyYW1taW5nIGxhbmd1YWdlczsgRGF0YWZsb3c7IGZvcm1hbCBsYW5ndWFnZXM7IGZvcm1hbCBzeXN0ZW07IEZvcm1hbCBTeXN0ZW1zOyBpdGVyYXRpb247IEx1Y2lkOyBsdWNpZDsgbm9ucHJvY2VkdXJhbCBsYW5ndWFnZTsgcHJvb2ZzOyBQcm92aW5nOyBTZW1hbnRpY3M7IHN0cnVjdHVyZWQgcHJvZ3JhbW1pbmciLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbDsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtCcm93bmxlZToxOTc3OkFJUywKICBhdXRob3IgPSAgICAgICAiSi4gTmV2aWwgQnJvd25sZWUiLAogIHRpdGxlID0gICAgICAgICJBbiB7QWxnb2wtYmFzZWR9IGltcGxlbWVudGF0aW9uIG9mIHtTTk9CT0x9IDQgcGF0dGVybnMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjAiLAogIG51bWJlciA9ICAgICAgICI3IiwKICBwYWdlcyA9ICAgICAgICAiNTI3LS01MjkiLAogIG1vbnRoID0gICAgICAgIGp1bCwKICB5ZWFyID0gICAgICAgICAiMTk3NyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJXaGVuIGEgc3RyaW5nIGFwcGVhcnMgYXMgdGhlIHN1YmplY3Qgb2YgYSBTTk9CT0w0IHN0YXRlbWVudCwgaXQgbWF5IGJlIHNjYW5uZWQgdG8gc2VlIHdoZXRoZXIgb3Igbm90IGl0IGNvbnRhaW5zIGEgc3BlY2lmaWVkIHBhdHRlcm4uIEhvd2V2ZXIsIHNpbmNlIHRoZSBzY2FubmVyIGlzIGZ1bmRhbWVudGFsbHkgYW4gaW50ZXJwcmV0ZXIgKHVzaW5nIHBhdHRlcm4gZ3JhcGhzIGFzIGl0cyBpbnB1dCBjb2RlKSwgcGF0dGVybiBtYXRjaGluZyBhcHBlYXJzIHRvIGJlIGEgdGltZS1jb25zdW1pbmcgcHJvY2Vzcy4gVGhpcyBwYXBlciBkZXNjcmliZXMgYW4gYWx0ZXJuYXRpdmUgYXBwcm9hY2ggaW4gd2hpY2ggU05PQk9MNCBwYXR0ZXJucyBhcmUgY29tcGlsZWQgaW50byBBbGdvbCBmdW5jdGlvbnMsIHdoaWNoIGNhbiBiZSBjb21iaW5lZCBpbnRvIGxhcmdlciAobW9yZSBjb21wbGljYXRlZCkgcGF0dGVybnMsIGFuZCB3aGljaCBhcmUgZGlyZWN0bHkgZXhlY3V0ZWQuIEl0IHdhcyBkZXZlbG9wZWQgYXMgcGFydCBvZiB0aGUgaW1wbGVtZW50YXRpb24gb2YgYGBTbm9iYWxcc2xhc2ggNjcnJywgYSBCdXJyb3VnaHMgQjY3MDAgY29tcGlsZXIgZm9yIGEgU05PQkFMNC1saWtlIGxhbmd1YWdlLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTQwRCAoSGlnaCBsZXZlbCBsYW5ndWFnZXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBvZiBBdWNrbGFuZCwgUHJpdmF0ZSBCYWcsIEF1Y2tsYW5kLCBOZXcgWmVhbGFuZCIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJBTEdPTDsgY29tcGlsZWQ7IGNvbXB1dGVyIG9wZXJhdGluZyBzeXN0ZW1zIC0tLSBQcm9ncmFtIENvbXBpbGVyczsgY29tcHV0ZXIgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzOyBpbXBsZW1lbnRhdGlvbjsgcGF0dGVybiByZWNvZ25pdGlvbiBzeXN0ZW1zOyBwYXR0ZXJuczsgcHJvY2VkdXJlIG9yaWVudGVkIGxhbmd1YWdlczsgU05PQk9MIDQiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0dlc2Noa2U6MTk3NzpFRU0sCiAgYXV0aG9yID0gICAgICAgIkNoYXJsZXMgTS4gR2VzY2hrZSBhbmQgSmFtZXMgSC4ge01vcnJpcywgSnIufSBhbmQgRWR3aW4gSC4gU2F0dGVydGh3YWl0ZSIsCiAgdGl0bGUgPSAgICAgICAgIkVhcmx5IEV4cGVyaWVuY2Ugd2l0aCB7TWVzYX0iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjAiLAogIG51bWJlciA9ICAgICAgICI4IiwKICBwYWdlcyA9ICAgICAgICAiNTQwLS01NTMiLAogIG1vbnRoID0gICAgICAgIGF1ZywKICB5ZWFyID0gICAgICAgICAiMTk3NyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvT2JqZWN0L05pZXJzdHJhc3ouYmliIGFuZCBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0NvbXBpbGVyL3NlbWFudGljcy5iaWIiLAogIGFic3RyYWN0ID0gICAgICJUaGUgZXhwZXJpZW5jZXMgb2YgTWVzYSdzIGZpcnN0IHVzZXJzIC0tLSBwcmltYXJpbHkgaXRzIGltcGxlbWVudG9ycyAtLS0gYXJlIGRpc2N1c3NlZCwgYW5kIHNvbWUgaW1wbGljYXRpb25zIGZvciBNZXNhIGFuZCBzaW1pbGFyIHByb2dyYW1taW5nIGxhbmd1YWdlcyBhcmUgc3VnZ2VzdGVkLiBUaGUgc3BlY2lmaWMgdG9waWNzIGFkZHJlc3NlZCBhcmU6IG1vZHVsZSBzdHJ1Y3R1cmUgYW5kIGl0cyB1c2UgaW4gZGVmaW5pbmcgYWJzdHJhY3Rpb25zLCBkYXRhLXN0cnVjdHVyaW5nIGZhY2lsaXRpZXMgaW4gTWVzYSwgYW4gZXF1aXZhbGVuY2UgYWxnb3JpdGhtIGZvciB0eXBlcyBhbmQgdHlwZSBjb2VyY2lvbnMsIHRoZSBiZW5lZml0cyBvZiB0aGUgdHlwZSBzeXN0ZW0gYW5kIHdoeSBpdCBpcyBicmVhY2hlZCBvY2Nhc2lvbmFsbHksIGFuZCB0aGUgZGlmZmljdWx0eSBvZiBtYWtpbmcgdGhlIHRyZWF0bWVudCBvZiB2YXJpYW50IHJlY29yZHMgc2FmZS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjE0MEQgKEhpZ2ggbGV2ZWwgbGFuZ3VhZ2VzKTsgQzYxNTAgKFN5c3RlbXMgc29mdHdhcmUpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJYZXJveCBQYWxvIEFsdG8gUmVzLiBDZW50ZXIsIFBhbG8gQWx0bywgQ0EsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhYnN0cmFjdGlvbnM7IGNvbXB1dGVyIHByb2dyYW1taW5nIGxhbmd1YWdlczsgY29tcHV0ZXIgc3lzdGVtcyBwcm9ncmFtbWluZzsgZGF0YSBwcm9jZXNzaW5nIC0tLSBEYXRhIFN0cnVjdHVyZXM7IGRhdGEgc3RydWN0dXJpbmc7IGRlZmluaW5nOyBlcXVpdmFsZW5jZSBhbGdvcml0aG07IG1lc2E7IE1lc2E7IG1vZHVsZSBzdHJ1Y3R1cmU7IG9saXQtb29wbCBtZXNhOyBwcm9ibGVtIG9yaWVudGVkIGxhbmd1YWdlczsgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzOyBzeXN0ZW1zIHByb2dyYW1taW5nOyB0eXBlIGNvZXJjaW9uczsgdHlwZXMiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle1NoYXc6MTk3NzpBVkEsCiAgYXV0aG9yID0gICAgICAgIk1hcnkgU2hhdyBhbmQgV2lsbGlhbSBBLiBXdWxmIGFuZCBSYWxwaCBMLiBMb25kb24iLAogIHRpdGxlID0gICAgICAgICJBYnN0cmFjdGlvbiBhbmQgVmVyaWZpY2F0aW9uIGluIHtBbHBoYXJkfTogRGVmaW5pbmcgYW5kIFNwZWNpZnlpbmcgSXRlcmF0aW9uIGFuZCBHZW5lcmF0b3JzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIwIiwKICBudW1iZXIgPSAgICAgICAiOCIsCiAgcGFnZXMgPSAgICAgICAgIjU1My0tNTY0IiwKICBtb250aCA9ICAgICAgICBhdWcsCiAgeWVhciA9ICAgICAgICAgIjE5NzciLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0NvbXBpbGVyL3NlbWFudGljcy5iaWI7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvT2JqZWN0L05pZXJzdHJhc3ouYmliIGFuZCBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L1RoZW9yeS9vYnNjdXJlLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIlRoZSBBbHBoYXJkIGBgZm9ybScnIHByb3ZpZGVzIHRoZSBwcm9ncmFtbWVyIHdpdGggYSBncmVhdCBkZWFsIG9mIGNvbnRyb2wgb3ZlciB0aGUgaW1wbGVtZW50YXRpb24gb2YgYWJzdHJhY3QgZGF0YSB0eXBlcy4gSW4gdGhpcyBwYXBlciB0aGUgYWJzdHJhY3Rpb24gdGVjaG5pcXVlcyBhcmUgZXh0ZW5kZWQgZnJvbSBzaW1wbGUgZGF0YSByZXByZXNlbnRhdGlvbiBhbmQgZnVuY3Rpb24gZGVmaW5pdGlvbiB0byB0aGUgaXRlcmF0aW9uIHN0YXRlbWVudCwgdGhlIG1vc3QgaW1wb3J0YW50IHBvaW50IG9mIGludGVyYWN0aW9uIGJldHdlZW4gZGF0YSBhbmQgdGhlIGNvbnRyb2wgc3RydWN0dXJlIG9mIHRoZSBsYW5ndWFnZSBpdHNlbGYuIEEgbWVhbnMgb2Ygc3BlY2lhbGl6aW5nIEFscGhhcmQncyBsb29wcyB0byBvcGVyYXRlIG9uIGFic3RyYWN0IGVudGl0aWVzIHdpdGhvdXQgZXhwbGljaXQgZGVwZW5kZW5jZSBvbiB0aGUgcmVwcmVzZW50YXRpb24gb2YgdGhvc2UgZW50aXRpZXMgaXMgaW4gdHJvZHVjZWQuIFxwYXIgU3BlY2lmaWNhdGlvbiBhbmQgdmVyaWZpY2F0aW9uIHRlY2huaXF1ZXMgdGhhdCBhbGxvdyB0aGUgcHJvcGVydGllcyBvZiB0aGUgZ2VuZXJhdG9ycyBmb3Igc3VjaCBpdGVyYXRpb25zIHRvIGJlIGV4cHJlc3NlZCBpbiB0aGUgZm9ybSBvZiBwcm9vZiBydWxlcyBhcmUgZGV2ZWxvcGVkLiBccGFyIFJlc3VsdHMgYXJlIG9idGFpbmVkIHRoYXQgZm9yIGNvbW1vbiBzcGVjaWFsIGNhc2VzIG9mIHRoZXNlIGxvb3BzIGFyZSBlc3NlbnRpYWxseSBpZGVudGljYWwgdG8gdGhlIGNvcnJlc3BvbmRpbmcgY29uc3RydWN0cyBpbiBvdGhlciBsYW5ndWFnZXMuIEEgbWVhbnMgb2Ygc2hvd2luZyB0aGF0IGEgZ2VuZXJhdG9yIHdpbGwgdGVybWluYXRlIGlzIGFsc28gcHJvdmlkZWQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxNDBEIChIaWdoIGxldmVsIGxhbmd1YWdlcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIkRlcHQuIG9mIENvbXB1dGVyIFNjaS4sIENhcm5lZ2llLU1lbGxvbiBVbml2LiwgU2NoZW5sZXkgUGFyaywgUGl0dHNidXJnaCwgUEEsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhYnN0cmFjdCBkYXRhIHR5cGVzOyBhYnN0cmFjdGlvbiBhbmQgcmVwcmVzZW50YXRpb247IEFscGhhcmQ7IGFzc2VydGlvbnM7IGNvbXB1dGVyIHByb2dyYW1taW5nOyBjb21wdXRlciBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IGNvbnRyb2wgc3BlY2lhbGl6YXRpb247IGNvcnJlY3RuZXNzOyBkZWZpbmluZzsgZ2VuZXJhdG9yczsgaW52YXJpYW50czsgaXRlcmF0aW9uOyBpdGVyYXRpb24gc3RhdGVtZW50czsgbGFuZ3VhZ2U7IG1vZHVsYXIgZGVjb21wb3NpdGlvbjsgb2xpdCBsYW5nIGFscGhhcmQgZGF0YSBhYnN0cmFjdGlvbjsgcHJvZ3JhbSBzcGVjaWZpY2F0aW9uczsgcHJvZ3JhbW1lcjsgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzOyBwcm9ncmFtbWluZyBtZXRob2RvbG9neTsgcHJvb2ZzIG9mIGNvcnJlY3RuZXNzOyBzcGVjaWZ5aW5nOyB0eXBlczsgdmVyaWZpY2F0aW9uIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtMaXNrb3Y6MTk3NzpBTUMsCiAgYXV0aG9yID0gICAgICAgIkJhcmJhcmEgTGlza292IGFuZCBBbGFuIFNueWRlciBhbmQgUnVzc2VsbCBBdGtpbnNvbiBhbmQgQ3JhaWcgU2NoYWZmZXJ0IiwKICB0aXRsZSA9ICAgICAgICAiQWJzdHJhY3Rpb24gTWVjaGFuaXNtcyBpbiB7Q0xVfSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMCIsCiAgbnVtYmVyID0gICAgICAgIjgiLAogIHBhZ2VzID0gICAgICAgICI1NjQtLTU3NiIsCiAgbW9udGggPSAgICAgICAgYXVnLAogIHllYXIgPSAgICAgICAgICIxOTc3IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EYXRhYmFzZS9XaWVkZXJob2xkLmJpYiIsCiAgbm90ZSA9ICAgICAgICAgIkFsc28gcHVibGlzaGVkIGluL2FzOiBJbiBgYFJlYWRpbmdzIGluIE9iamVjdC1PcmllbnRlZCBEYXRhYmFzZSBTeXN0ZW1zJycgZWRpdGVkIGJ5IFMuWmRvbmlrIGFuZCBELk1haWVyLCBNb3JnYW4gS2F1Zm1hbiwgMTk5MC4iLAogIGFic3RyYWN0ID0gICAgICJDTFUgaXMgYSBuZXcgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgZGVzaWduZWQgdG8gc3VwcG9ydCB0aGUgdXNlIG9mIGFic3RyYWN0aW9ucyBpbiBwcm9ncmFtIGNvbnN0cnVjdGlvbi4gV29yayBpbiBwcm9ncmFtbWluZyBtZXRob2RvbG9neSBoYXMgbGVkIHRvIHRoZSByZWFsaXphdGlvbiB0aGF0IHRocmVlIGtpbmRzIG9mIGFic3RyYWN0aW9ucyAtLS0gcHJvY2VkdXJhbCwgY29udHJvbCwgYW5kIGVzcGVjaWFsbHkgZGF0YSBhYnN0cmFjdGlvbnMgLS0tIGFyZSB1c2VmdWwgaW4gdGhlIHByb2dyYW1taW5nIHByb2Nlc3MuIE9mIHRoZXNlLCBvbmx5IHRoZSBwcm9jZWR1cmFsIGFic3RyYWN0aW9uIGlzIHN1cHBvcnRlZCB3ZWxsIGJ5IGNvbnZlbnRpb25hbCBsYW5ndWFnZXMsIHRocm91Z2ggdGhlIHByb2NlZHVyZSBvciBzdWJyb3V0aW5lLiBDTFUgcHJvdmlkZXMsIGluIGFkZGl0aW9uIHRvIHByb2NlZHVyZXMsIG5vdmVsIGxpbmd1aXN0aWMgbWVjaGFuaXNtcyB0aGF0IHN1cHBvcnQgdGhlIHVzZSBvZiBkYXRhIGFuZCBjb250cm9sIGFic3RyYWN0aW9ucy4gVGhpcyBwYXBlciBwcm92aWRlcyBhbiBpbnRyb2R1Y3Rpb24gdG8gdGhlIGFic3RyYWN0aW9ucyBtZWNoYW5pc21zIGluIENMVS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjE0MEQgKEhpZ2ggbGV2ZWwgbGFuZ3VhZ2VzKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiTGFiLiBmb3IgQ29tcHV0ZXIgU2NpLiwgTUlULCBDYW1icmlkZ2UsIE1BLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYWJzdHJhY3Rpb25zOyBDTFU7IGNvbXB1dGVyIHByb2dyYW1taW5nOyBjb21wdXRlciBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IGNvbnN0cnVjdGlvbjsgbGluZ3Vpc3RpYyBtZWNoYW5pc21zOyBwcm9ncmFtOyBwcm9ncmFtbWluZyBsYW5ndWFnZTsgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtXaXJ0aDoxOTc3OlREUiwKICBhdXRob3IgPSAgICAgICAiTmlrbGF1cyBXaXJ0aCIsCiAgdGl0bGUgPSAgICAgICAgIlRvd2FyZCBhIERpc2NpcGxpbmUgb2YgUmVhbC1UaW1lIFByb2dyYW1taW5nIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIwIiwKICBudW1iZXIgPSAgICAgICAiOCIsCiAgcGFnZXMgPSAgICAgICAgIjU3Ny0tNTgzIiwKICBtb250aCA9ICAgICAgICBhdWcsCiAgeWVhciA9ICAgICAgICAgIjE5NzciLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L01pc2MvRGlzY3JldGUuZXZlbnQuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiUHJvZ3JhbW1pbmcgaXMgZGl2aWRlZCBpbnRvIHRocmVlIG1ham9yIGNhdGVnb3JpZXMgd2l0aCBpbmNyZWFzaW5nIGNvbXBsZXhpdHkgb2YgcmVhc29uaW5nIGluIHByb2dyYW0gdmFsaWRhdGlvbjogc2VxdWVudGlhbCBwcm9ncmFtbWluZywgbXVsdGlwcm9ncmFtbWluZywgYW5kIHJlYWwtdGltZSBwcm9ncmFtbWluZy4gQnkgYWRoZXJpbmcgdG8gYSBzdHJpY3QgcHJvZ3JhbW1pbmcgZGlzY2lwbGluZSBhbmQgYnkgdXNpbmcgYSBzdWl0YWJsZSBoaWdoLWxldmVsIGxhbmd1YWdlIG1vbGRlZCBhZnRlciB0aGlzIGRpc2NpcGxpbmUsIHRoZSBjb21wbGV4aXR5IG9mIHJlYXNvbmluZyBhYm91dCBjb25jdXJyZW5jeSBhbmQgZXhlY3V0aW9uIHRpbWUgY29uc3RyYWludHMgbWF5IGJlIGRyYXN0aWNhbGx5IHJlZHVjZWQuIFRoaXMgbWF5IGJlIHRoZSBvbmx5IHByYWN0aWNhbCB3YXkgdG8gbWFrZSByZWFsLXRpbWUgc3lzdGVtcyBhbmFseXRpY2FsbHkgdmVyaWZpYWJsZSBhbmQgdWx0aW1hdGVseSByZWxpYWJsZS4gQSBwb3NzaWJsZSBkaXNjaXBsaW5lIGlzIG91dGxpbmVkIGFuZCBleHByZXNzZWQgaW4gdGVybXMgb2YgdGhlIGxhbmd1YWdlIE1vZHVsYS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjExMCAoU3lzdGVtcyBhbmFseXNpcyBhbmQgcHJvZ3JhbW1pbmcpOyBDNjE1MEogKE9wZXJhdGluZyBzeXN0ZW1zKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIyOyA3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJFVEgsIFp1cmljaCwgU3dpdHplcmxhbmQiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzOyBjb21wdXRlciBzeXN0ZW1zLCBkaWdpdGFsOyBjb25jdXJyZW5jeTsgZGlzY2lwbGluZTsgZXhlY3V0aW9uIHRpbWU7IE1vZHVsYTsgbXVsdGlwcm9ncmFtbWluZzsgb25saW5lIG9wZXJhdGlvbjsgcHJvZ3JhbSB0ZXN0aW5nOyBwcm9ncmFtbWluZzsgcmVhbCB0aW1lIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtHYW5ub246MTk3NzpFRUQsCiAgYXV0aG9yID0gICAgICAgIkouIEQuIEdhbm5vbiIsCiAgdGl0bGUgPSAgICAgICAgIkFuIGV4cGVyaW1lbnRhbCBldmFsdWF0aW9uIG9mIGRhdGEgdHlwZSBjb252ZW50aW9ucyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMCIsCiAgbnVtYmVyID0gICAgICAgIjgiLAogIHBhZ2VzID0gICAgICAgICI1ODQtLTU5NSIsCiAgbW9udGggPSAgICAgICAgYXVnLAogIHllYXIgPSAgICAgICAgICIxOTc3IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlRoaXMgcGFwZXIgZGlzY3Vzc2VzIGFuIGV4cGVyaW1lbnQgdGhhdCBjb21wYXJlcyB0aGUgcHJvZ3JhbW1pbmcgcmVsaWFiaWxpdHkgb2Ygc3ViamVjdHMgdXNpbmcgYSBzdGF0aWNhbGx5IHR5cGVkIGxhbmd1YWdlIGFuZCBhIGBgdHlwZWxlc3MnJyBsYW5ndWFnZS4gQW5hbHlzaXMgb2YgdGhlIG51bWJlciBvZiBlcnJvcnMgYW5kIHRoZSBudW1iZXIgb2YgcnVucyBjb250YWluaW5nIGVycm9ycyBzaG93cyB0aGF0LCBhdCBsZWFzdCBpbiBvbmUgZW52aXJvbm1lbnQsIHRoZSB1c2Ugb2YgYSBzdGF0aWNhbGx5IHR5cGVkIGxhbmd1YWdlIGNhbiBpbmNyZWFzZSBwcm9ncmFtbWluZyByZWxpYWJpbGl0eS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjE0MEQgKEhpZ2ggbGV2ZWwgbGFuZ3VhZ2VzKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiRGVwdC4gb2YgQ29tcHV0ZXIgU2NpLiwgVW5pdi4gb2YgTWFyeWxhbmQsIENvbGxlZ2UgUGFyaywgTUQsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IGRhdGEgdHlwZSBjb252ZW50aW9uczsgZGF0YSB0eXBlczsgZXZhbHVhdGlvbjsgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzOyBwcm9ncmFtbWluZyByZWxpYWJpbGl0eSIsCiAgdHJlYXRtZW50ID0gICAgIlggRXhwZXJpbWVudGFsIiwKfQoKQEFydGljbGV7RnJhbnRhOjE5Nzc6RURTLAogIGF1dGhvciA9ICAgICAgICJXLiBSLiBGcmFudGEgYW5kIEt1cnQgTWFseSIsCiAgdGl0bGUgPSAgICAgICAgIkFuIEVmZmljaWVudCBEYXRhIFN0cnVjdHVyZSBmb3IgdGhlIFNpbXVsYXRpb24gRXZlbnQgU2V0IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIwIiwKICBudW1iZXIgPSAgICAgICAiOCIsCiAgcGFnZXMgPSAgICAgICAgIjU5Ni0tNjAyIiwKICBtb250aCA9ICAgICAgICBhdWcsCiAgeWVhciA9ICAgICAgICAgIjE5NzciLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0Rpc3RyaWJ1dGVkL3NpbXVsYW4uYmliIGFuZCBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0Rpc3RyaWJ1dGVkL1FMRC5iaWIiLAogIGFic3RyYWN0ID0gICAgICJBIG5ldyBldmVudCBzY2hlZHVsaW5nIGFsZ29yaXRobSBpcyBwcmVzZW50ZWQgd2hpY2ggaW1wcm92ZXMgb24gdHdvIGFzcGVjdHMgb2YgdGhlIGJlc3Qgb2YgdGhlIHByZXZpb3VzbHkgcHVibGlzaGVkIGFsZ29yaXRobXMuIEZpcnN0LCB0aGUgbmV3IGFsZ29yaXRobSdzIHBlcmZvcm1hbmNlIGlzIHF1aXRlIGluc2Vuc2l0aXZlIHRvIHNrZXdlZCBkaXN0cmlidXRpb25zLCBhbmQgc2Vjb25kLCBpdHMgd29yc3QtY2FzZSBjb21wbGV4aXR5IGlzIE8oc3F1YXJlIHJvb3Qgb2YgbiksIHdoZXJlIG4gaXMgdGhlIG51bWJlciBvZiBldmVudHMgaW4gdGhlIHNldC4gRnVydGhlcm1vcmUsIHRlc3RzIGNvbmR1Y3RlZCB0byBlc3RpbWF0ZSB0aGUgYXZlcmFnZSBjb21wbGV4aXR5IHNob3dlZCBpdCB0byBiZSBuZWFybHkgaW5kZXBlbmRlbnQgb2Ygbi4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjM7IDkxMyIsCiAgY29ycHNvdXJjZSA9ICAgIkRlcHQuIG9mIENvbXB1dGVyIFNjaS4sIFVuaXYuIG9mIE1pbm5lc290YSwgTWlubmVhcG9saXMsIE1OLCBVU0EiLAogIGRlc2NyaXB0b3JzID0gICJTaW11bGF0aW9uOyBldmVudCBzZXF1ZW5jaW5nOyBtZXRob2Q7IiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFsZ29yaXRobTsgY29tcHV0ZXIgcHJvZ3JhbW1pbmcgLS0tIFN1YnJvdXRpbmVzOyBkYXRhIHByb2Nlc3Npbmc7IGRhdGEgc3RydWN0dXJlOyBkYXRhIHN0cnVjdHVyZXM7IGRpZ2l0YWwgc2ltdWxhdGlvbjsgZXZlbnQgc2NoZWR1bGluZzsgc2NoZWR1bGluZzsgc2ltdWxhdGlvbiBldmVudCBzZXQiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0xhd2xlcjoxOTc3OkNDUywKICBhdXRob3IgPSAgICAgICAiRXVnZW5lIEwuIExhd2xlciIsCiAgdGl0bGUgPSAgICAgICAgIkNvbW1lbnQgb24gY29tcHV0aW5nIHRoZSAkayQgc2hvcnRlc3QgcGF0aHMgaW4gYSBncmFwaCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMCIsCiAgbnVtYmVyID0gICAgICAgIjgiLAogIHBhZ2VzID0gICAgICAgICI2MDMtLTYwNCIsCiAgbW9udGggPSAgICAgICAgYXVnLAogIHllYXIgPSAgICAgICAgICIxOTc3IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjhBMjAgKDkwQjEwKSIsCiAgTVJudW1iZXIgPSAgICAgIjU4IDE5MzU0IiwKICBtcnJldmlld2VyID0gICAiQ29saW4gSi4gSC4gTWNEaWFybWlkIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMxMTYwIChDb21iaW5hdG9yaWFsIG1hdGhlbWF0aWNzKSIsCiAgY29ycHNvdXJjZSA9ICAgIkRpdi4gb2YgQ29tcHV0ZXIgU2NpLiwgVW5pdi4gb2YgQ2FsaWZvcm5pYSwgQmVya2VsZXksIENBLCBVU0EiLAogIGtleXdvcmRzID0gICAgICIkayQgc2hvcnRlc3QgcGF0aHM7IGFsZ29yaXRobXM7IGNvbXB1dGluZzsgZ3JhcGg7IGdyYXBoIHRoZW9yeSIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7RnJhbmNlejoxOTc3OkFBSywKICBhdXRob3IgPSAgICAgICAiTi4gRnJhbmNleiIsCiAgdGl0bGUgPSAgICAgICAgIkFub3RoZXIgYWR2YW50YWdlIG9mIGtleXdvcmQgbm90YXRpb24gZm9yIHBhcmFtZXRlciBjb21tdW5pY2F0aW9uIHdpdGggc3VicHJvZ3JhbXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjAiLAogIG51bWJlciA9ICAgICAgICI4IiwKICBwYWdlcyA9ICAgICAgICAiNjA0LS02MDUiLAogIG1vbnRoID0gICAgICAgIGF1ZywKICB5ZWFyID0gICAgICAgICAiMTk3NyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjExMCAoU3lzdGVtcyBhbmFseXNpcyBhbmQgcHJvZ3JhbW1pbmcpIiwKICBjb3Jwc291cmNlID0gICAiV2Vpem1hbm4gSW5zdC4gb2YgU2NpLiwgUmVob3ZvdGgsIElzcmFlbCIsCiAga2V5d29yZHMgPSAgICAgImFkdmFudGFnZTsga2V5d29yZCBub3RhdGlvbjsgcGFyYW1ldGVyIGNvbW11bmljYXRpb247IHN0cnVjdHVyZWQgcHJvZ3JhbW1pbmc7IHN1YnByb2dyYW1zIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtSYWJpbjoxOTc3OkNDLAogIGF1dGhvciA9ICAgICAgICJNaWNoYWVsIE8uIFJhYmluIiwKICB0aXRsZSA9ICAgICAgICAiQ29tcGxleGl0eSBvZiBDb21wdXRhdGlvbnMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjAiLAogIG51bWJlciA9ICAgICAgICI5IiwKICBwYWdlcyA9ICAgICAgICAiNjI1LS02MzMiLAogIG1vbnRoID0gICAgICAgIHNlcCwKICB5ZWFyID0gICAgICAgICAiMTk3NyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4QTIwIiwKICBNUm51bWJlciA9ICAgICAiNTYgMTAxNDEiLAogIG1ycmV2aWV3ZXIgPSAgICJDbGF1cy1QZXRlciBTY2hub3JyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgbm90ZSA9ICAgICAgICAgIlNlZSBjb3JyaWdlbmR1bSBcY2l0ZXtSYWJpbjoxOTc4OkNDQ30uIiwKICBhYnN0cmFjdCA9ICAgICAiVGhlIGZyYW1ld29yayBmb3IgcmVzZWFyY2ggaW4gdGhlIHRoZW9yeSBvZiBjb21wbGV4aXR5IG9mIGNvbXB1dGF0aW9ucyBpcyBkZXNjcmliZWQsIGVtcGhhc2l6aW5nIHRoZSBpbnRlcnJlbGF0aW9uIGJldHdlZW4gc2VlbWluZ2x5IGRpdmVyc2UgcHJvYmxlbXMgYW5kIG1ldGhvZHMuIElsbHVzdHJhdGl2ZSBleGFtcGxlcyBvZiBwcmFjdGljYWwgYW5kIHRoZW9yZXRpY2FsIHNpZ25pZmljYW5jZSBhcmUgZ2l2ZW4uIERpcmVjdGlvbnMgZm9yIG5ldyByZXNlYXJjaCBhcmUgZGlzY3Vzc2VkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MjQwIChQcm9ncmFtbWluZyBhbmQgYWxnb3JpdGhtIHRoZW9yeSkiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMSIsCiAgY29ycHNvdXJjZSA9ICAgIkRlcHQuIG9mIE1hdGhzLiwgSGVicmV3IFVuaXYuIG9mIEplcnVzYWxlbSwgSmVydXNhbGVtLCBJc3JhZWwiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYWxnZWJyYWljIGNvbXBsZXhpdHk7IGFsZ29yaXRobWljIGNvc3QgZnVuY3Rpb25zOyBhbGdvcml0aG1zOyBhdXRvbWF0YSB0aGVvcnk7IGNvbXBsZXhpdHkgb2YgY29tcHV0YXRpb25zOyBjb21wdXRhdGlvbmFsIGNvbXBsZXhpdHk7IGludHJhY3RhYmxlIHByb2JsZW1zOyBwcm9iYWJpbGlzdGljIiwKICB0cmVhdG1lbnQgPSAgICAiRSBFY29ub21pYzsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtTY290dDoxOTc3OkxQTCwKICBhdXRob3IgPSAgICAgICAiRGFuYSBTLiBTY290dCIsCiAgdGl0bGUgPSAgICAgICAgIkxvZ2ljIGFuZCBQcm9ncmFtbWluZyBMYW5ndWFnZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjAiLAogIG51bWJlciA9ICAgICAgICI5IiwKICBwYWdlcyA9ICAgICAgICAiNjM0LS02NDEiLAogIG1vbnRoID0gICAgICAgIHNlcCwKICB5ZWFyID0gICAgICAgICAiMTk3NyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4QTA1IiwKICBNUm51bWJlciA9ICAgICAiNTYgMTAxMTQiLAogIG1ycmV2aWV3ZXIgPSAgICJIb3JzdCBSZWljaGVsIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9Db21waWxlci9zZW1hbnRpY3MuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiTG9naWMgaGFzIGJlZW4gbG9uZyBpbnRlcmVzdGVkIGluIHdoZXRoZXIgYW5zd2VycyB0byBjZXJ0YWluIHF1ZXN0aW9ucyBhcmUgY29tcHV0YWJsZSBpbiBwcmluY2lwbGUsIHNpbmNlIHRoZSBvdXRjb21lIHB1dHMgYm91bmRzIG9uIHRoZSBwb3NzaWJpbGl0aWVzIG9mIGZvcm1hbGl6YXRpb24uIEl0IHdvdWxkIHNlZW0gdGhhdCB0aGUgdW5kZXJzdGFuZGluZyBvZiBoaWdoZXItbGV2ZWwgcHJvZ3JhbSBmZWF0dXJlcyBpbnZvbHZlcyBvbmUgd2l0aCBpbmZpbml0ZSBvYmplY3RzIGFuZCBmb3JjZXMgb25lIHRvIHBhc3MgdGhyb3VnaCBzZXZlcmFsIGxldmVscyBvZiBleHBsYW5hdGlvbiB0byBnbyBmcm9tIHRoZSBjb25jZXB0dWFsIGlkZWFzIHRvIHRoZSBmaW5hbCBzaW11bGF0aW9uIG9uIGEgcmVhbCBtYWNoaW5lLiBUaGVzZSBsZXZlbHMgY2FuIGJlIG1hZGUgbWF0aGVtYXRpY2FsbHkgZXhhY3QgaWYgdGhlIHJpZ2h0IGFic3RyYWN0aW9ucyBjYW4gYmUgZm91bmQgdG8gcmVwcmVzZW50IHRoZSBuZWNlc3Nhcnkgc3RydWN0dXJlcy4gSW4gdGhpcyBwYXBlciwgdGhlIGF1dGhvciBvdXRsaW5lcyBoaXMgYXBwcm9hY2ggdG8gdGhlc2UgcHJvYmxlbXMsIHNwZWNpZmljYWxseSBoaXMgbGFtYmRhIC1jYWxjdWx1cyBvcmllbnRhdGlvbi4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDIxMCAoRm9ybWFsIGxvZ2ljKTsgQzYxNDAgKFByb2dyYW1taW5nIGxhbmd1YWdlcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMTsgNzIzIiwKICBjb3Jwc291cmNlID0gICAiTWF0aC4gSW5zdC4sIFVuaXYuIG9mIE94Zm9yZCwgT3hmb3JkLCBVSyIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhdXRvbWF0YSB0aGVvcnkgLS0tIENvbXB1dGFiaWxpdHkgYW5kIERlY2lkYWJpbGl0eTsgY29tcHV0YWJpbGl0eSBhbmQgZGVjaWRhYmlsaXR5OyBjb21wdXRhYmlsaXR5IHRoZW9yeTsgY29tcHV0YXRpb25hbCBsaW5ndWlzdGljczsgY29tcHV0ZXIgbWV0YXRoZW9yeTsgY29tcHV0ZXIgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzOyBkZWNpc2lvbiBtZXRob2RzOyBmb3JtYWwgbG9naWM7IG1ldGhvZHMgb2YgbG9naWM7IHByb2dyYW1taW5nIGxhbmd1YWdlczsgc2VtYW50aWNhbDsgc3ludGFjdGljIGZvcm1hbGl6YXRpb247IHRoZW9yeSIsCiAgdHJlYXRtZW50ID0gICAgIkEgQXBwbGljYXRpb247IFQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7QXVzdGluZzoxOTc3OkdBVCwKICBhdXRob3IgPSAgICAgICAiUmljaGFyZCBILiBBdXN0aW5nIiwKICB0aXRsZSA9ICAgICAgICAiVGhlIHtHUkUgQWR2YW5jZWQgVGVzdCBpbiBDb21wdXRlciBTY2llbmNlfSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMCIsCiAgbnVtYmVyID0gICAgICAgIjkiLAogIHBhZ2VzID0gICAgICAgICI2NDItLTY0NSIsCiAgbW9udGggPSAgICAgICAgc2VwLAogIHllYXIgPSAgICAgICAgICIxOTc3IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlRoaXMgcmVwb3J0IGRlc2NyaWJlcyB0aGUgQWR2YW5jZWQgVGVzdCBpbiBDb21wdXRlciBTY2llbmNlIHdoaWNoIHdhcyByZWNlbnRseSBpbnRyb2R1Y2VkIGluIHRoZSBHcmFkdWF0ZSBSZWNvcmQgRXhhbWluYXRpb24gUHJvZ3JhbS4gVGhlIEdSRSBwcm9ncmFtIGlzIGRlc2NyaWJlZCBpbiBnZW5lcmFsLCBhbmQsIHRoZSBldmVudHMgbGVhZGluZyB0byB0aGUgZXN0YWJsaXNobWVudCBvZiB0aGUgQWR2YW5jZWQgQ29tcHV0ZXIgU2NpZW5jZSBUZXN0IGFyZSBkaXNjdXNzZWQuIENvbnRlbnQgc3BlY2lmaWNhdGlvbnMgYW5kIHRoZWlyIHJhdGlvbmFsZSBhcmUgZ2l2ZW4uIEEgc2V0IG9mIHNhbXBsZSBxdWVzdGlvbnMgaXMgaW5jbHVkZWQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzAyMjAgKENvbXB1dGluZyBlZHVjYXRpb24gYW5kIHRyYWluaW5nKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzOyA5MDEiLAogIGNvcnBzb3VyY2UgPSAgICJEZXB0LiBvZiBDb21wdXRlciBTY2kuLCBVbml2LiBvZiBNYXJ5bGFuZCwgQ29sbGVnZSBQYXJrLCBNRCwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgIkFkdmFuY2VkIFRlc3QgaW4gQ29tcHV0ZXIgU2NpZW5jZTsgY29tcHV0ZXIgcHJvZ3JhbW1pbmc7IGNvbXB1dGVyIHNjaWVuY2UgZWR1Y2F0aW9uOyBlZHVjYXRpb247IEV4YW1pbmF0aW9uIFByb2dyYW07IEdyYWR1YXRlIFJlY29yZDsgcXVlc3Rpb25zOyByYXRpb25hbGU7IHNhbXBsZTsgc3BlY2lmaWNhdGlvbnMiLAogIHRyZWF0bWVudCA9ICAgICJHIEdlbmVyYWwgUmV2aWV3OyBQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle1NjaGVpZmxlcjoxOTc3OkFJUywKICBhdXRob3IgPSAgICAgICAiUm9iZXJ0IFcuIFNjaGVpZmxlciIsCiAgdGl0bGUgPSAgICAgICAgIkFuIEFuYWx5c2lzIG9mIElubGluZSBTdWJzdGl0dXRpb24gZm9yIGEgU3RydWN0dXJlZCBQcm9ncmFtbWluZyBMYW5ndWFnZSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMCIsCiAgbnVtYmVyID0gICAgICAgIjkiLAogIHBhZ2VzID0gICAgICAgICI2NDctLTY1NCIsCiAgbW9udGggPSAgICAgICAgc2VwLAogIHllYXIgPSAgICAgICAgICIxOTc3IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9Db21waWxlci9jb21waWxlci5iaWIiLAogIGFic3RyYWN0ID0gICAgICJBbiBvcHRpbWl6YXRpb24gdGVjaG5pcXVlIGtub3duIGFzIGlubGluZSBzdWJzdGl0dXRpb24gaXMgYW5hbHl6ZWQuIFRoZSBvcHRpbWl6YXRpb24gY29uc2lzdHMgb2YgcmVwbGFjaW5nIGEgcHJvY2VkdXJlIGludm9jYXRpb24gYnkgYSBtb2RpZmllZCBjb3B5IG9mIHRoZSBwcm9jZWR1cmUgYm9keS4gVGhlIGdlbmVyYWwgcHJvYmxlbSBvZiB1c2luZyBpbmxpbmUgc3Vic3RpdHV0aW9uIHRvIG1pbmltaXplIGV4ZWN1dGlvbiB0aW1lIHN1YmplY3QgdG8gc2l6ZSBjb25zdHJhaW50cyBpcyBmb3JtdWxhdGVkLCBhbmQgYW4gYXBwcm94aW1hdGUgYWxnb3JpdGhtaWMgc29sdXRpb24gaXMgcHJvcG9zZWQuIFRoZSBhbGdvcml0aG0gZGVwZW5kcyBvbiBydW4tdGltZSBzdGF0aXN0aWNzIGFib3V0IHRoZSBwcm9ncmFtIHRvIGJlIG9wdGltaXplZC4gUHJlbGltaW5hcnkgcmVzdWx0cyBmb3IgdGhlIENMVSBzdHJ1Y3R1cmVkIHByb2dyYW1taW5nIGxhbmd1YWdlIGluZGljYXRlIHRoYXQsIGluIHByb2dyYW1zIHdpdGggYSBsb3cgZGVncmVlIG9mIHJlY3Vyc2lvbiwgb3ZlciA5MCBwZXJjZW50IG9mIGFsbCBwcm9jZWR1cmUgY2FsbHMgY2FuIGJlIGVsaW1pbmF0ZWQsIHdpdGggbGl0dGxlIGluY3JlYXNlIGluIHRoZSBzaXplIG9mIGNvbXBpbGVkIGNvZGUgYW5kIGEgc21hbGwgc2F2aW5ncyBpbiBleGVjdXRpb24gdGltZS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjE0MCAoUHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzKTsgQzYxNTBDIChDb21waWxlcnMsIGludGVycHJldGVycyBhbmQgb3RoZXIgcHJvY2Vzc29ycykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIk1JVCwgQ2FtYnJpZGdlLCBNQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFsZ29yaXRobWljIHNvbHV0aW9uOyBjb21waWxlZCBjb2RlOyBjb21wdXRhdGlvbmFsIGxpbmd1aXN0aWNzOyBjb21wdXRlciBvcGVyYXRpbmcgc3lzdGVtczsgY29tcHV0ZXIgcHJvZ3JhbW1pbmcgLS0tIFN0cnVjdHVyZWQgUHJvZ3JhbW1pbmc7IGNvbXB1dGVyIHByb2dyYW1taW5nIGxhbmd1YWdlczsgZXhlY3V0aW9uIHRpbWU7IGlubGluZSBzdWJzdGl0dXRpb247IGxhbmd1YWdlczsgb3B0aW1pemF0aW9uIHRlY2huaXF1ZTsgcHJvY2VkdXJlIGNhbGxzOyBwcm9ncmFtIGNvbXBpbGVyczsgcHJvZ3JhbW1pbmc7IHJ1biB0aW1lIHN0YXRpc3RpY3M7IHN0cnVjdHVyZWQgcHJvZ3JhbW1pbmc7IHN0cnVjdHVyZWQgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0dpZmZvcmQ6MTk3NzpIRVAsCiAgYXV0aG9yID0gICAgICAgIkRhdmlkIEsuIEdpZmZvcmQiLAogIHRpdGxlID0gICAgICAgICJIYXJkd2FyZSBFc3RpbWF0aW9uIG9mIGEgUHJvY2VzcycgUHJpbWFyeSBNZW1vcnkgUmVxdWlyZW1lbnRzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIwIiwKICBudW1iZXIgPSAgICAgICAiOSIsCiAgcGFnZXMgPSAgICAgICAgIjY1NS0tNjYzIiwKICBtb250aCA9ICAgICAgICBzZXAsCiAgeWVhciA9ICAgICAgICAgIjE5NzciLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiQSBtaW5vciBoYXJkd2FyZSBleHRlbnNpb24gdG8gdGhlIEhvbmV5d2VsbCA2MTgwIHByb2Nlc3NvciBpcyBkZW1vbnN0cmF0ZWQgdG8gYWxsb3cgdGhlIHByaW1hcnkgbWVtb3J5IHJlcXVpcmVtZW50cyBvZiBhIHByb2Nlc3MgaW4gTXVsdGljcyB0byBiZSBhcHByb3hpbWF0ZWQuIFRoZSBhZGRpdGlvbmFsIGhhcmR3YXJlIHJlcXVpcmVkIGZvciB0aGlzIGVzdGltYXRlIHRvIGJlIGNvbXB1dGVkIGNvbnNpc3RzIG9mIGEgcHJvZ3JhbSBhY2Nlc3NpYmxlIHJlZ2lzdGVyIGNvbnRhaW5pbmcgdGhlIG1pc3MgcmF0ZSBvZiB0aGUgYXNzb2NpYXRpdmUgbWVtb3J5IHVzZWQgZm9yIHBhZ2UgdGFibGUgd29yZHMuIFRoaXMgcHJpbWFyeSBtZW1vcnkgcmVxdWlyZW1lbnQgZXN0aW1hdGUgd2FzIGVtcGxveWVkIGluIGFuIGV4cGVyaW1lbnRhbCB2ZXJzaW9uIG9mIE11bHRpY3MgdG8gY29udHJvbCB0aGUgbGV2ZWwgb2YgbXVsdGlwcm9ncmFtbWluZyBpbiB0aGUgc3lzdGVtIGFuZCB0byBiaWxsIGZvciBtZW1vcnkgdXNhZ2UuIFRoZSByZXN1bHRpbmcgc3lzdGVtJ3MgdHVuaW5nIHBhcmFtZXRlcnMgZGlzcGxheSBjb25maWd1cmF0aW9uIGluc2Vuc2l0aXZpdHksIGFuZCBpdCBpcyBjb25qZWN0dXJlZCB0aGF0IHRoZSBzeXN0ZW0gd291bGQgYWxzbyB0cmFjayBzaGlmdHMgaW4gdGhlIHJlZmVyZW5jaW5nIGNoYXJhY3RlcmlzdGljcyBvZiBpdHMgd29ya2xvYWQgYW5kIGtlZXAgdGhlIHN5c3RlbSBpbiB0dW5lLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM1MjIwIChDb21wdXRlciBhcmNoaXRlY3R1cmUpOyBDNjE1MEogKE9wZXJhdGluZyBzeXN0ZW1zKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIyOyA3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJNSVQsIENhbWJyaWRnZSwgTUEsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhc3NvY2lhdGl2ZSBtZW1vcnk7IGNvbXB1dGVyIHN5c3RlbXMgcHJvZ3JhbW1pbmcgLS0tIE11bHRpcHJvZ3JhbW1pbmc7IGNvbmZpZ3VyYXRpb24gaW5zZW5zaXRpdml0eTsgY29udGVudC1hZGRyZXNzYWJsZSBzdG9yYWdlOyBkYXRhIHN0b3JhZ2UsIGRpZ2l0YWw7IGhhcmR3YXJlIGV4dGVuc2lvbjsgbWVtb3J5IHVzYWdlOyBNdWx0aWNzOyBtdWx0aXByb2dyYW1taW5nOyBwcmltYXJ5IG1lbW9yeSByZXF1aXJlbWVudHM7IHByb2dyYW0gYWNjZXNzaWJsZSByZWdpc3RlcjsgcmVmZXJlbmNpbmcgY2hhcmFjdGVyaXN0aWNzOyB0dW5pbmc7IHR1bmluZyBwYXJhbWV0ZXJzOyB2aXJ0dWFsIHN0b3JhZ2UiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle01haXJzb246MTk3NzpTTlUsCiAgYXV0aG9yID0gICAgICAgIkhhcnJ5IEcuIE1haXJzb24iLAogIHRpdGxlID0gICAgICAgICJTb21lIE5ldyBVcHBlciBCb3VuZHMgb24gdGhlIEdlbmVyYXRpb24gb2YgUHJpbWUgTnVtYmVycyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMCIsCiAgbnVtYmVyID0gICAgICAgIjkiLAogIHBhZ2VzID0gICAgICAgICI2NjQtLTY2OSIsCiAgbW9udGggPSAgICAgICAgc2VwLAogIHllYXIgPSAgICAgICAgICIxOTc3IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjhBMjAgKDEwQTI1IDEwLTA0KSIsCiAgTVJudW1iZXIgPSAgICAgIjU2IDQyMzYiLAogIG1ycmV2aWV3ZXIgPSAgICJHLiBXZWNoc3VuZyIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJHaXZlbiBhbiBpbnRlZ2VyIE4sIHdoYXQgaXMgdGhlIGNvbXB1dGF0aW9uYWwgY29tcGxleGl0eSBvZiBmaW5kaW5nIGFsbCB0aGUgcHJpbWVzIGxlc3MgdGhhbiBOPyBBIG1vZGlmaWVkIHNpZXZlIG9mIEVyYXRvc3RoZW5lcyB1c2luZyBkb3VibHkgbGlua2VkIGxpc3RzIHlpZWxkcyBhbiBhbGdvcml0aG0gb2YgTy8vQShOKSBhcml0aG1ldGljIGNvbXBsZXhpdHkuIFRoaXMgdXBwZXIgYm91bmQgaXMgc2hvd24gdG8gYmUgZXF1aXZhbGVudCB0byB0aGUgdGhlb3JldGljYWwgbG93ZXIgYm91bmQgZm9yIHNpZXZlIG1ldGhvZHMgd2l0aG91dCBwcmVwcm9jZXNzaW5nLiBVc2Ugb2YgcHJlcHJvY2Vzc2luZyB0ZWNobmlxdWVzIGludm9sdmluZyBzcGFjZS10aW1lIGFuZCBhZGRpdGl2ZS1tdWx0aXBsaWNhdGl2ZSB0cmFkZW9mZnMgcmVkdWNlcyB0aGlzIHVwcGVyIGJvdW5kIHRvIE8vL0EoTi9sb2cgbG9nTikgYW5kIHRoZSBiaXQgY29tcGxleGl0eSB0byBPLy9CKE4gbG9nTiBsb2cgbG9nIGxvZ04pLiBBIHN0b3JhZ2UgcmVxdWlyZW1lbnQgaXMgZGVzY3JpYmVkIHVzaW5nIE8vL0IoTiBsb2dOXHNsYXNoIGxvZyBsb2dOKSBiaXRzIGFzIHdlbGwuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzUyMzAgKERpZ2l0YWwgYXJpdGhtZXRpYyBtZXRob2RzKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzOyA5MjEiLAogIGNvcnBzb3VyY2UgPSAgICJDYWxob3VuIENvbGxlZ2UsIFlhbGUgVW5pdi4sIE5ldyBIYXZlbiwgQ1QsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21wdXRhdGlvbmFsIGNvbXBsZXhpdHk7IGNvbXB1dGVyIHByb2dyYW1taW5nIC0tLSBTdWJyb3V0aW5lczsgZ2VuZXJhdGlvbiBvZiBwcmltZSBudW1iZXJzOyBtYXRoZW1hdGljYWwgdGVjaG5pcXVlczsgbWV0aG9kczsgbnVtYmVyIHRoZW9yeTsgcHJlcHJvY2Vzc2luZyB0ZWNobmlxdWVzOyByZXF1aXJlbWVudDsgc2lldmU7IHN0b3JhZ2U7IHVwcGVyIGJvdW5kIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtNY0NyZWlnaHQ6MTk3NzpQQlQsCiAgYXV0aG9yID0gICAgICAgIkVkd2FyZCBNLiBNY0NyZWlnaHQiLAogIHRpdGxlID0gICAgICAgICJQYWdpbmF0aW9uIG9mIHtCKn0tVHJlZXMgd2l0aCBWYXJpYWJsZS1MZW5ndGggUmVjb3JkcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMCIsCiAgbnVtYmVyID0gICAgICAgIjkiLAogIHBhZ2VzID0gICAgICAgICI2NzAtLTY3NCIsCiAgbW9udGggPSAgICAgICAgc2VwLAogIHllYXIgPSAgICAgICAgICIxOTc3IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EYXRhYmFzZS9XaWVkZXJob2xkLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIkEgc3RyYXRlZ3kgaXMgcHJlc2VudGVkIGZvciBwYWdpbmF0aW9uIG9mIEIqLXRyZWVzIHdpdGggdmFyaWFibGUtbGVuZ3RoIHJlY29yZHMuIElmIHJlY29yZHMgb2YgZWFjaCBsZW5ndGggYXJlIHVuaWZvcm1seSBkaXN0cmlidXRlZCB3aXRoaW4gdGhlIGZpbGUsIGFuZCBpZiBhIHdpZGUgZGlzdHJpYnV0aW9uIG9mIHJlY29yZCBsZW5ndGhzIGV4aXN0cyB3aXRoaW4gdGhlIGZpbGUsIHRoZW4gdGhpcyBzdHJhdGVneSByZXN1bHRzIGluIHNoYWxsb3cgdHJlZXMgd2l0aCBmYXN0IGFjY2VzcyB0aW1lcy4gVGhlIHBlcmZvcm1hbmNlIG9mIHRoaXMgc3RyYXRlZ3kgaW4gYW4gYXBwbGljYXRpb24gaXMgcHJlc2VudGVkLCBjb21wYXJlZCB3aXRoIHRoYXQgb2YgYW5vdGhlciBzdHJhdGVneSwgYW5kIGFuYWx5emVkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbikiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMzsgOTAxOyA5MjEiLAogIGNvcnBzb3VyY2UgPSAgICJYZXJveCBQYWxvIEFsdG8gUmVzLiBDZW50ZXIsIFBhbG8gQWx0bywgQ0EsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJkYXRhIGJhc2Ugc3lzdGVtczsgZGF0YSBwcm9jZXNzaW5nIC0tLSBEYXRhIEhhbmRsaW5nOyBkYXRhIHNlYXJjaGluZzsgaW5mb3JtYXRpb24gcmV0cmlldmFsIHN5c3RlbXM7IG1hdGhlbWF0aWNhbCB0ZWNobmlxdWVzIC0tLSBUcmVlcyIsCiAga2V5d29yZHMgPSAgICAgIkIqIHRyZWU7IGZhc3QgYWNjZXNzIHRpbWVzOyBmaWxlOyBmaWxlIG9yZ2FuaXNhdGlvbjsgcGFnaW5hdGlvbjsgc2hhbGxvdyB0cmVlczsgc3RyYXRlZ3k7IHRyZWVzIChtYXRoZW1hdGljcyk7IHZhcmlhYmxlIGxlbmd0aCByZWNvcmRzIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtGdWNoczoxOTc3Ok9TUiwKICBhdXRob3IgPSAgICAgICAiSC4gRnVjaHMgYW5kIFouIE0uIEtlZGVtIGFuZCBTLiBQLiBVc2VsdG9uIiwKICB0aXRsZSA9ICAgICAgICAiT3B0aW1hbCBTdXJmYWNlIFJlY29uc3RydWN0aW9uIGZyb20gUGxhbmFyIENvbnRvdXJzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIwIiwKICBudW1iZXIgPSAgICAgICAiMTAiLAogIHBhZ2VzID0gICAgICAgICI2OTMtLTcwMiIsCiAgbW9udGggPSAgICAgICAgb2N0LAogIHllYXIgPSAgICAgICAgICIxOTc3IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjhBNDUiLAogIE1SbnVtYmVyID0gICAgICI1OCAyNTE2MyIsCiAgbXJyZXZpZXdlciA9ICAgIkdpb3JnaW8gQmFsY29uaSIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvR3JhcGhpY3MvaW1hZ2VyL2ltYWdlci43Ny5iaWIgYW5kIGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvR3JhcGhpY3Mvc2lnZ3JhcGgvNzcuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiVGhpcyBwYXBlciBwcmVzZW50cyBhIGdlbmVyYWwgc29sdXRpb24gdG8gdGhlIHByb2JsZW0gb2YgY29uc3RydWN0aW5nIGEgc3VyZmFjZSBvdmVyIGEgc2V0IG9mIGNyb3NzLXNlY3Rpb25hbCBjb250b3Vycy4gVGhpcyBzdXJmYWNlLCB0byBiZSBjb21wb3NlZCBvZiB0cmlhbmd1bGFyIHRpbGVzLCBpcyBjb25zdHJ1Y3RlZCBieSBzZXBhcmF0ZWx5IGRldGVybWluaW5nIGFuIG9wdGltYWwgc3VyZmFjZSBiZXR3ZWVuIGVhY2ggcGFpciBvZiBjb25zZWN1dGl2ZSBjb250b3Vycy4gRGV0ZXJtaW5pbmcgc3VjaCBhIHN1cmZhY2UgaXMgcmVkdWNlZCB0byB0aGUgcHJvYmxlbSBvZiBmaW5kaW5nIGNlcnRhaW4gbWluaW11bSBjb3N0IGN5Y2xlcyBpbiBhIGRpcmVjdGVkIHRvcm9pZGFsIGdyYXBoLiBBIG5ldyBmYXN0IGFsZ29yaXRobSBmb3IgZmluZGluZyBzdWNoIGN5Y2xlcyBpcyB1dGlsaXplZC4gQWxzbyBkZXZlbG9wZWQgaXMgYSBjbG9zZWQtZm9ybSBleHByZXNzaW9uLCBpbiB0ZXJtcyBvZiB0aGUgbnVtYmVyIG9mIGNvbnRvdXIgcG9pbnRzLCBmb3IgYW4gdXBwZXIgYm91bmQgb24gdGhlIG51bWJlciBvZiBvcGVyYXRpb25zIHJlcXVpcmVkIHRvIGV4ZWN1dGUgdGhlIGFsZ29yaXRobS4gQW4gaWxsdXN0cmF0ZWQgZXhhbXBsZSB3aGljaCBpbnZvbHZlcyB0aGUgY29uc3RydWN0aW9uIG9mIGEgbWluaW11bSBhcmVhIHN1cmZhY2UgZGVzY3JpYmluZyBhIGh1bWFuIGhlYWQgaXMgaW5jbHVkZWQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBhbm5vdGUgPSAgICAgICAiQWxzbyBpbiBDb21wdXRlciBHcmFwaGljcyAoU3BlY2lhbCBpc3N1ZSBvZiBTSUdHUkFQSCAnNzcsIHByZWxpbWluYXJ5IHBhcGVycyksIHBwLiAxMS0tMjQuIiwKICBjbGFzc2NvZGVzID0gICAiQzYxMzBCIChHcmFwaGljcyB0ZWNobmlxdWVzKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gb2YgVGV4YXMsIERhbGxhcywgVFgsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBncmFwaGljczsgb3B0aW1hbDsgcGxhbmFyIGNvbnRvdXJzOyByZWNvbnN0cnVjdGlvbiBvZiBvYmplY3RzOyBzdXJmYWNlIHJlY29uc3RydWN0aW9uOyB0cmlhbmd1bGFyIHRpbGVzIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtXdToxOTc3OklDRywKICBhdXRob3IgPSAgICAgICAiU2hlbmctQ2h1YW4gQy4gV3UgYW5kIEpvaG4gRi4gQWJlbCBhbmQgRG9uYWxkIFAuIEdyZWVuYmVyZyIsCiAgdGl0bGUgPSAgICAgICAgIkFuIEludGVyYWN0aXZlIENvbXB1dGVyIEdyYXBoaWNzIEFwcHJvYWNoIHRvIFN1cmZhY2UgUmVwcmVzZW50YXRpb24iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjAiLAogIG51bWJlciA9ICAgICAgICIxMCIsCiAgcGFnZXMgPSAgICAgICAgIjcwMy0tNzEyIiwKICBtb250aCA9ICAgICAgICBvY3QsCiAgeWVhciA9ICAgICAgICAgIjE5NzciLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0Rpc3RyaWJ1dGVkL1FMRC8xOTc3LmJpYiBhbmQgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9HcmFwaGljcy9pbWFnZXIvaW1hZ2VyLjc3LmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIkFuIGludGVyYWN0aXZlIGNvbXB1dGVyIGdyYXBoaWNzIG1ldGhvZCBoYXMgYmVlbiBkZXZlbG9wZWQgZm9yIHRoZSByYXBpZCBnZW5lcmF0aW9uIG9mIGFyYml0cmFyeSBzaGFwZWQgdGhyZWUtZGltZW5zaW9uYWwgc3VyZmFjZXMuIFRoZSBtZXRob2QgaXMgYSBzeW50aGVzaXMgb2Ygc3BsaW5lIHRoZW9yeSBhbmQgYWxnb3JpdGhtcywgYW4gaW50ZXJhY3RpdmUgbWVhbnMgZm9yIG1hbi1tYWNoaW5lIGNvbW11bmljYXRpb24sIGFuZCBzb2Z0d2FyZSBmb3Igc3RhdGljIG9yIGR5bmFtaWMgZ3JhcGhpY3MgZGlzcGxheS4gVGhlIGJhc2ljIHRlY2huaXF1ZSBlbXBsb3llZCBpcyBhIG1vZGlmaWVkIGxvZnRpbmcgbWV0aG9kIGluIHdoaWNoIHNlY3Rpb25hbCBjdXJ2ZXMgYXJlIHJlcHJlc2VudGVkIGJ5IHVuaWZvcm0gQi1zcGxpbmVzIGFuZCB0aGUgc3VyZmFjZSBpcyBpbnRlcnBvbGF0ZWQgYmV0d2VlbiBzZWN0aW9ucyBieSBDYXJkaW5hbCBzcGxpbmVzLiBBbW9uZyB0aGUgZmVhdHVyZXMgb2YgdGhpcyBtZXRob2QgYXJlIGFsZ29yaXRobXMgd2hpY2ggZW5hYmxlIGludGVyYWN0aXZlIG1vZGlmaWNhdGlvbiBvZiB0aGUgQi1zcGxpbmUgcmVwcmVzZW50YXRpb24gb2YgdGhlIHNlY3Rpb25hbCBjdXJ2ZXMuIEF0IGFsbCBzdGFnZXMgb2YgdGhlIHByb2Nlc3MsIHRoZSBzcGF0aWFsIGluZm9ybWF0aW9uIGlzIGdyYXBoaWNhbGx5IGRpc3BsYXllZCB0byB0aGUgdXNlci4gQ29tcGxleCBzdXJmYWNlcyBjYW4gYmUgY3JlYXRlZCBieSB0aGUgY29tYmluYXRpb24gb2YgYSBudW1iZXIgb2Ygc2hhcGVzIHRoYXQgaGF2ZSBiZWVuIHNlcGFyYXRlbHkgZ2VuZXJhdGVkIGFuZCBhdXRvbWF0aWNhbGx5IGpvaW5lZC4gVGhlIHN5c3RlbSBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgaW50ZXJmYWNlZCB0byBhIHZhcmlldHkgb2YgYW5hbHl0aWNhbCByb3V0aW5lcyBmb3Igc3RydWN0dXJhbCwgbWVkaWNhbCBhbmQgZ3JhcGhpY2FsIGFwcGxpY2F0aW9ucy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGFubm90ZSA9ICAgICAgICJBbHNvIGluIENvbXB1dGVyIEdyYXBoaWNzIChTcGVjaWFsIGlzc3VlIG9mIFNJR0dSQVBIICc3NywgcHJlbGltaW5hcnkgcGFwZXJzKSwgcHAuIDEtLTEwLiBBbiBpbnRlcmFjdGl2ZSBjb21wdXRlciBncmFwaGljcyBtZXRob2QgaGFzIGJlZW4gZGV2ZWxvcGVkIGZvciB0aGUgcmFwaWQgZ2VuZXJhdGlvbiBvZiBhcmJpdHJhcnkgc2hhcGVkIHRocmVlLWRpbWVuc2lvbmFsIHN1cmZhY2VzLiBUaGUgbWV0aG9kIGlzIGEgc3ludGhlc2lzIG9mIHNwbGluZSB0aGVvcnkgYW5kIGFsZ29yaXRobXMsIGFuIGludGVyYWN0aXZlIG1lYW5zIGZvciBtYW4tbWFjaGluZSBjb21tdW5pY2F0aW9uLCBhbmQgc29mdHdhcmUgZm9yIHN0YXRpYyBvciBkeW5hbWljIGdyYXBoaWNzIGRpc3BsYXkuIFRoZSBiYXNpYyB0ZWNobmlxdWUgZW1wbG95ZWQgaXMgYSBtb2RpZmllZCBsb2Z0aW5nIG1ldGhvZCBpbiB3aGljaCBzZWN0aW9uYWwgY3VydmVzIGFyZSByZXByZXNlbnRlZCBieSB1bmlmb3JtIEItc3BsaW5lcyBhbmQgdGhlIHN1cmZhY2UgaXMgaW50ZXJwb2xhdGVkIiwKICBjbGFzc2NvZGVzID0gICAiQzYxMzBCIChHcmFwaGljcyB0ZWNobmlxdWVzKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiQ29ybmVsbCBVbml2LiwgSXRoYWNhLCBOWSwgVVNBIiwKICBkZXNjcmlwdG9ycyA9ICAiR3JhcGhpY3M7IHR3by1kaW1lbnNpb25hbCBwbG90OyB0aHJlZS1kaW1lbnNpb25hbCBwbG90OyBtZXRob2Q7IHByb2Nlc3MgaW50ZXJhY3Rpb247IGludGVycG9sYXRpb247IGh1bWFuIGZhY3RvcnM7IHNwbGluZTsgZmluaXRlIGVsZW1lbnQgaW5wdXQgbWV0aG9kIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIGdyYXBoaWNzOyBpbnRlcmFjdGl2ZSBjb21wdXRlciBncmFwaGljczsgcmVwcmVzZW50YXRpb247IHJlcHJlc2VudGF0aW9uIGdyYXBoaWM7IHJlcHJlc2VudGF0aW9uIHN1cmZhY2UgZ2VvbWV0cnk7IHNwbGluZXM7IHNwbGluZXMgKG1hdGhlbWF0aWNzKTsgc3VyZmFjZSByZXByZXNlbnRhdGlvbiIsCiAgdHJlYXRtZW50ID0gICAgIkEgQXBwbGljYXRpb247IFQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7Um9zZW46MTk3NzpITEQsCiAgYXV0aG9yID0gICAgICAgIkJhcnJ5IEsuIFJvc2VuIiwKICB0aXRsZSA9ICAgICAgICAiSGlnaC1MZXZlbCBEYXRhIEZsb3cgQW5hbHlzaXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjAiLAogIG51bWJlciA9ICAgICAgICIxMCIsCiAgcGFnZXMgPSAgICAgICAgIjcxMi0tNzI0IiwKICBtb250aCA9ICAgICAgICBvY3QsCiAgeWVhciA9ICAgICAgICAgIjE5NzciLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0NvbXBpbGVyL0NvbXBpbGVyLkxpbnMuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiSW4gY29udHJhc3QgdG8gdGhlIHByZWRvbWluYW50IHVzZSBvZiBsb3ctbGV2ZWwgaW4gdGVybWVkaWF0ZSB0ZXh0LCBoaWdoLWxldmVsIGRhdGEgZmxvdyBhbmFseXNpcyBkZWFscyB3aXRoIHByb2dyYW1zIGVzc2VudGlhbGx5IGF0IHNvdXJjZSBsZXZlbCBhbmQgZXhwbG9pdHMgdGhlIGNvbnRyb2wgZmxvdyBpbmZvcm1hdGlvbiBpbXBsaWNpdCBpbiB0aGUgcGFyc2UgdHJlZS4gVGhlIG5lZWQgZm9yIGhpZ2gtbGV2ZWwgZmxvdyBhbmFseXNpcyBhcmlzZXMgZnJvbSBzZXZlcmFsIGFzcGVjdHMgb2YgcmVjZW50IHdvcmsgb24gYWR2YW5jZWQgbWV0aG9kcyBvZiBwcm9ncmFtIGNlcnRpZmljYXRpb24gYW5kIG9wdGltaXphdGlvbi4gXHBhciBUaGlzIHBhcGVyIHByb3Bvc2VzIGEgc2ltcGxlIGdlbmVyYWwgbWV0aG9kIG9mIGhpZ2gtbGV2ZWwgZGF0YSBmbG93IGFuYWx5c2lzIHRoYXQgYWxsb3dzIGZyZWUgdXNlIG9mIGVzY2FwZSBhbmQganVtcCBzdGF0ZW1lbnRzLCBhdm9pZHMgbGFyZ2UgZ3JhcGhzIHdoZW4gY29tcGlsaW5nIGxhcmdlIHByb2dyYW1zLCBmYWNpbGl0YXRlcyB1cGRhdGluZyBvZiBkYXRhIGZsb3cgaW5mb3JtYXRpb24gdG8gcmVmbGVjdCBwcm9ncmFtIGNoYW5nZXMsIGFuZCBkZXJpdmVzIG5ldyBnbG9iYWwgaW5mb3JtYXRpb24gaGVscGZ1bCBpbiBzb2x2aW5nIG1hbnkgZmFtaWxpYXIgZ2xvYmFsIGZsb3cgYW5hbHlzaXMgcHJvYmxlbXMuIEFuIGlsbHVzdHJhdGl2ZSBhcHBsaWNhdGlvbiB0byBsaXZlIHZhcmlhYmxlIGFuYWx5c2lzIGlzIHByZXNlbnRlZC4gXHBhciBNYW55IG9mIHRoZSBncmFwaHMgaW52b2x2ZWQgYXJlIGNvbnN0cnVjdGVkIGFuZCBhbmFseXplZCBiZWZvcmUgYW55IHByb2dyYW1zIGFyZSBjb21waWxlZCwgdGh1cyBhdm9pZGluZyBjZXJ0YWluIGNvc3RzIHRoYXQgbG93LWxldmVsIG1ldGhvZHMgaW5jdXIgcmVwZWF0ZWRseSBhdCBjb21waWxlIHRpbWUuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQyNDAgKFByb2dyYW1taW5nIGFuZCBhbGdvcml0aG0gdGhlb3J5KTsgQzYxMTAgKFN5c3RlbXMgYW5hbHlzaXMgYW5kIHByb2dyYW1taW5nKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiSUJNIFRob21hcyBKLiBXYXRzb24gUmVzLiBDZW50ZXIsIFlvcmt0b3duIEhlaWdodHMsIE5ZLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgcHJvZ3JhbW1pbmcgLS0tIFN0cnVjdHVyYWwgUHJvZ3JhbW1pbmc7IGNvbXB1dGVyIHByb2dyYW1taW5nIGxhbmd1YWdlczsgY29udHJvbCBmbG93IGdyYXBoOyBkYXRhIGZsb3cgYW5hbHlzaXM7IGRhdGEgcHJvY2Vzc2luZyAtLS0gRGF0YSBSZWR1Y3Rpb24gYW5kIEFuYWx5c2lzOyBlc2NhcGVzOyBleGl0czsgZ290byBzdGF0ZW1lbnRzOyBoaWdoLWxldmVsIGxhbmd1YWdlOyBqdW1wczsgc3RydWN0dXJlZCBwcm9ncmFtbWluZyIsCiAga2V5d29yZHMgPSAgICAgImRhdGEgZmxvdyBhbmFseXNpczsgZXNjYXBlOyBoaWdoOyBqdW1wOyBsZXZlbDsgcHJvZ3JhbXM7IHN0YXRlbWVudHM7IHN0cnVjdHVyZWQgcHJvZ3JhbW1pbmciLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle01vbnRhbmdlcm86MTk3NzpUQ1MsCiAgYXV0aG9yID0gICAgICAgIkMuIE1vbnRhbmdlcm8gYW5kIEcuIFBhY2luaSBhbmQgRi4gVHVyaW5pIiwKICB0aXRsZSA9ICAgICAgICAiVHdvLUxldmVsIENvbnRyb2wgU3RydWN0dXJlIGZvciBOb25kZXRlcm1pbmlzdGljIFByb2dyYW1taW5nIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIwIiwKICBudW1iZXIgPSAgICAgICAiMTAiLAogIHBhZ2VzID0gICAgICAgICI3MjUtLTczMCIsCiAgbW9udGggPSAgICAgICAgb2N0LAogIHllYXIgPSAgICAgICAgICIxOTc3IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlRoZSBiYXNpYyBpZGVhcyBvZiBub25kZXRlcm1pbmlzdGljIHByb2dyYW1taW5nIGFyZSBjcml0aWNhbGx5IHJlY29uc2lkZXJlZCB0byBzaW5nbGUgb3V0IGEgcHJvcGVyIGF0dGl0dWRlIGFuZCBwcm9ncmFtbWluZyBzdHlsZSBmb3IgbGFuZ3VhZ2VzIGFsbG93aW5nIGRpcmVjdCBjb250cm9sIG9mIG5vbmRldGVybWluaXN0aWMgZmVhdHVyZXMuIFRoZSBwcm9wb3NlZCBhdHRpdHVkZSBhaW1zIGF0IHJldGFpbmluZyB0aGUgcHVyaXR5IG9mIHRoZSBub25kZXRlcm1pbmlzdGljIGZvcm11bGF0aW9uIG9mIHNlYXJjaCBwcm9jZXNzZXMgb24gb25lIGxldmVsICh0aGUgYXR0ZW1wdCBsZXZlbCksIGRlZmVycmluZyB0aGUgY29vcmRpbmF0aW9uIG9mIHByb2JsZW0gc29sdmluZyBlZmZvcnRzIHRvIGFub3RoZXIgKHRoZSBjaG9pY2UgbGV2ZWwpLiBUaGUgZmVhc2liaWxpdHkgb2YgcmVjb2duaXppbmcgdGhlc2UgdHdvIGxldmVscyBpcyBkaXNjdXNzZWQsIHN0cmVzc2luZyB0aGF0IHRoZSBzdHJ1Y3R1cmUgdG8gYmUgbWFuYWdlZCBhdCB0aGUgY2hvaWNlIGxldmVsIGlzIGEgdHJlZSBvZiBjb250ZXh0cy4gVGhlIGxlYXZlcyBhcmUgY29tcHV0YXRpb25hbCBlbnZpcm9ubWVudHMsIGVhY2ggaG9sZGluZyBhbiBhbHRlcm5hdGl2ZSB1bmRlciBpbnNwZWN0aW9uLCB3aGlsZSB0aGUgb3RoZXIgbm9kZXMgYXJlIGFzc29jaWF0ZWQgd2l0aCBjaG9pY2UgcG9pbnRzLiBBY2NvcmRpbmcgdG8gdGhlIHByb3Bvc2VkIHByb2dyYW1taW5nIHN0eWxlLCBhIGdlbmVyYXRpdmUgZnVuY3Rpb24gaXMgYXNzb2NpYXRlZCB3aXRoIGVhY2ggY2hvaWNlIHBvaW50LCB3aGljaCBleHByZXNzZXMgdGhlIGRlc2lyZWQgY2hvaWNlIHN0cmF0ZWd5LiBUaGUgbWFpbiBhZHZhbnRhZ2Ugb2YgdGhpcyBhcHByb2FjaCBpcyB0aGUgbG9jYWxpemF0aW9uIG9mIHRoZSBzZWFyY2ggc3RyYXRlZ2llczogRWFjaCBub250ZXJtaW5hbCBub2RlIG9mIHRoZSB0cmVlIGtlZXBzIHRyYWNrIG9mIHRoZSBzdGF0ZSBvZiB0aGUgY29tcHV0YXRpb24gYXMgaXQgd2FzIHdoZW4gdGhlIGNob2ljZSBwb2ludCB3YXMgbGFzdCBpbnRlcnJvZ2F0ZWQsIGhvbGRpbmcgYXQgdGhlIHNhbWUgdGltZSB0aGUgc3RyYXRlZ3kgdG8gY29vcmRpbmF0ZSB0aGUgYXZhaWxhYmxlIGFsdGVybmF0aXZlcy4gRXhhbXBsZXMgYXJlIGdpdmVuIGluIHRlcm0gb2YgTkQtTGlzcCwgYW4gZXh0ZW5zaW9uIG9mIExpc3AgZGVzaWduZWQgYW5kIGltcGxlbWVudGVkIGFjY29yZGluZyB0byB0aGVzZSBndWlkZWxpbmVzLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MjQwIChQcm9ncmFtbWluZyBhbmQgYWxnb3JpdGhtIHRoZW9yeSkiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIG9mIFBpc2EsIFBpc2EsIEl0YWx5IiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIHByb2dyYW1taW5nIGxhbmd1YWdlczsgY29udHJvbCBzdHJ1Y3R1cmU7IGxhbmd1YWdlczsgbm9uZGV0ZXJtaW5pc3RpYyBwcm9ncmFtbWluZzsgcHJvZ3JhbW1pbmcgdGhlb3J5OyB0d28gbGV2ZWwiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0xhTG9uZGU6MTk3NzpSUlAsCiAgYXV0aG9yID0gICAgICAgIldpbGYgUi4gTGFMb25kZSIsCiAgdGl0bGUgPSAgICAgICAgIlJlZ3VsYXIgUmlnaHQgUGFydCBHcmFtbWFycyBhbmQgVGhlaXIgUGFyc2VycyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMCIsCiAgbnVtYmVyID0gICAgICAgIjEwIiwKICBwYWdlcyA9ICAgICAgICAiNzMxLS03NDEiLAogIG1vbnRoID0gICAgICAgIG9jdCwKICB5ZWFyID0gICAgICAgICAiMTk3NyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4QTMwIiwKICBNUm51bWJlciA9ICAgICAiNTggMTM5NzQiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiUmVndWxhciByaWdodCBwYXJ0IChSUlApIGdyYW1tYXJzLCB3aGljaCByZXNlbWJsZSBQQVNDQUwgc3ludGF4IGRpYWdyYW1zLCBkZXNjcmliZSB0aGUgc3ludGF4IG9mIHByb2dyYW1taW5nIGxhbmd1YWdlcyBtb3JlIGNvbmNpc2VseSBhbmQgbW9yZSB1bmRlcnN0YW5kYWJseSB0aGFuIGlzIHBvc3NpYmxlIHdpdGggQ0YgZ3JhbW1hcnMuIEFsc28gaW50cm9kdWNlZCBpcyBhIGNsYXNzIG9mIHBhcnNlcnMsIFJSUCBMUihtLCBrKSBwYXJzZXJzLCB3aGljaCBpbmNsdWRlcyB0aGUgQ0YgTFIoaykgcGFyc2VycyBhbmQgcHJvdmlkZXMgdGhlIHNhbWUgYWR2YW50YWdlcy4gSW5mb3JtYWxseSwgYW4gUlJQIExSKG0sIGspIHBhcnNlciBjYW4gZGV0ZXJtaW5lIHRoZSByaWdodCBlbmQgb2YgZWFjaCBoYW5kbGUgYnkgY29uc2lkZXJpbmcgYXQgbW9zdCBrIHN5bWJvbHMgdG8gdGhlIHJpZ2h0IG9mIHRoZSBoYW5kbGUgYW5kIHRoZSBsZWZ0IGVuZCwgYWZ0ZXIgdGhlIHJpZ2h0IGVuZCBoYXMgYmVlbiBmb3VuZCwgYnkgY29uc2lkZXJpbmcgYXQgbW9zdCBtIHN5bWJvbHMgdG8gdGhlIGxlZnQgb2YgdGhlIGhhbmRsZS4gQSBtZWNoYW5pc20gZm9yIGRldGVybWluaW5nIHRoZSBsZWZ0IGVuZCBpcyByZXF1aXJlZCBiZWNhdXNlIHRoZXJlIGlzIG5vIGJvdW5kIG9uIHRoZSBsZW5ndGggb2YgdGhlIGhhbmRsZS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDIxMCAoRm9ybWFsIGxvZ2ljKTsgQzQyMjAgKEF1dG9tYXRhIHRoZW9yeSkiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMTsgNzIzIiwKICBjb3Jwc291cmNlID0gICAiQ2FybGV0b24gVW5pdi4sIE90dGF3YSwgT250LiwgQ2FuYWRhIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImF1dG9tYXRhIHRoZW9yeTsgY29tcHV0ZXIgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzOyBmaW5pdGUgYXV0b21hdGE7IGZpbml0ZSBzdGF0ZSBtYWNoaW5lczsgZ3JhbW1hcnM7IHBhcnNlcnM7IHJlZ3VsYXIgcmlnaHQgcGFydDsgcmVndWxhciByaWdodCBwYXJ0IGdyYW1tYXI7IFJSUCBncmFtbWFycyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7RGV2aWxsZXJzOjE5Nzc6R0lELAogIGF1dGhvciA9ICAgICAgICJSLiBEZXZpbGxlcnMiLAogIHRpdGxlID0gICAgICAgICJHYW1lIEludGVycHJldGF0aW9uIG9mIHRoZSBEZWFkbG9jayBBdm9pZGFuY2UgUHJvYmxlbSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMCIsCiAgbnVtYmVyID0gICAgICAgIjEwIiwKICBwYWdlcyA9ICAgICAgICAiNzQxLS03NDUiLAogIG1vbnRoID0gICAgICAgIG9jdCwKICB5ZWFyID0gICAgICAgICAiMTk3NyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvUGFyYWxsZWwvTXVsdGkuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiVGhlIGRlYWRsb2NrIGF2b2lkYW5jZSBwcm9ibGVtIG1heSBiZSBkZWZpbmVkIGluZm9ybWFsbHkgYXMgdGhlIGRldGVybWluYXRpb24sIGZyb20gc29tZSBhIHByaW9yaSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcHJvY2Vzc2VzLCByZXNvdXJjZXMsIG9wZXJhdGluZyBzeXN0ZW0sIGV0Yy4sIG9mIHRoZSBgYHNhZmUgc2l0dWF0aW9ucycnIHdoaWNoIG1heSBiZSByZWFsaXplZCB3aXRob3V0IGVuZGFuZ2VyaW5nIHRoZSBzbW9vdGggcnVubmluZyBvZiB0aGUgc3lzdGVtLiBXaGVuIGVhY2ggcHJvY2VzcyBzcGVjaWZpZXMgaXRzIGZ1dHVyZSBuZWVkcyBieSBhIGZsb3djaGFydCBvZiBuZWVkLWRlZmluZWQgc3RlcHMsIGEgZ2xvYmFsIGFwcHJvYWNoIHRvIHRoZSBwaGVub21lbm9uIGFuZCBpdHMgaW50ZXJwcmV0YXRpb24gYXMgYSBnYW1lIGJldHdlZW4gdGhlIG9wZXJhdGluZyBzeXN0ZW0gYW5kIHRoZSBwcm9jZXNzZXMgYWxsb3dzIGZvcm1hbGl6YXRpb24gb2YgcmlzayBhbmQgc2FmZXR5IGNvbmNlcHRzLiBUaGUgYmlwYXJ0aXRlIGdyYXBoIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgZ2FtZSBtYXkgdGhlbiBiZSB1c2VkIHRvIGNvbnN0cnVjdCBleHBsaWNpdGx5IHRoZSBzZXQgb2Ygc2FmZSBzdGF0ZXMgYW5kIHRvIHN0dWR5IHRoZWlyIHByb3BlcnRpZXMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQyNDAgKFByb2dyYW1taW5nIGFuZCBhbGdvcml0aG0gdGhlb3J5KTsgQzYxNTBKIChPcGVyYXRpbmcgc3lzdGVtcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMzsgOTIyIiwKICBjb3Jwc291cmNlID0gICAiRnJlZSBVbml2LiBvZiBCcnVzc2VscywgQnJ1c3NlbHMsIEJlbGdpdW0iLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgb3BlcmF0aW5nIHN5c3RlbXM7IGRlYWRsb2NrIGF2b2lkYW5jZTsgbXVsdGlwcm9ncmFtbWluZzsgb3BlcmF0aW5nIHN5c3RlbTsgcHJvYmFiaWxpdHkgLS0tIEdhbWUgVGhlb3J5OyBwcm9jZXNzZXM7IHJlc291cmNlcyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7SXZpZToxOTc3OlBXTSwKICBhdXRob3IgPSAgICAgICAiRXZhbiBMLiBJdmllIiwKICB0aXRsZSA9ICAgICAgICAiUHJvZ3JhbW1lcidzIFdvcmtiZW5jaCAtLS0gYSBNYWNoaW5lIGZvciBTb2Z0d2FyZSBEZXZlbG9wbWVudCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMCIsCiAgbnVtYmVyID0gICAgICAgIjEwIiwKICBwYWdlcyA9ICAgICAgICAiNzQ2LS03NTMiLAogIG1vbnRoID0gICAgICAgIG9jdCwKICB5ZWFyID0gICAgICAgICAiMTk3NyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJJbiB0aGlzIHBhcGVyIGl0IGlzIHN1Z2dlc3RlZCB0aGF0IHRoZXJlIGFyZSBtYW55IHNpdHVhdGlvbnMgd2hlcmUgaXQgd291bGQgYmUgYWR2YW50YWdlb3VzIHRvIHNlcGFyYXRlIHRoZSBwcm9ncmFtIGRldmVsb3BtZW50IGFuZCBtYWludGVuYW5jZSBmdW5jdGlvbiBvbnRvIGEgc3BlY2lhbGl6ZWQgY29tcHV0ZXIgd2hpY2ggaXMgZGVkaWNhdGVkIHRvIHRoYXQgcHVycG9zZS4gU3VjaCBhIGNvbXB1dGVyIGlzIGhlcmUgY2FsbGVkIGEgUHJvZ3JhbW1lcidzIFdvcmtiZW5jaC4gVGhlIGZvdXIgYmFzaWMgc2VjdGlvbnMgb2YgdGhlIHBhcGVyIGludHJvZHVjZSB0aGUgc3ViamVjdCwgb3V0bGluZSB0aGUgZ2VuZXJhbCBjb25jZXB0LCBkaXNjdXNzIGFyZWFzIHdoZXJlIHN1Y2ggYW4gYXBwcm9hY2ggbWF5IHByb3ZlIGJlbmVmaWNpYWwsIGFuZCBkZXNjcmliZWQgYW5kIG9wZXJhdGlvbmFsIHN5c3RlbSB1dGlsaXppbmcgdGhpcyBjb25jZXB0LiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM1NDIwIChNYWluZnJhbWVzIGFuZCBtaW5pY29tcHV0ZXJzKTsgQzYxMTAgKFN5c3RlbXMgYW5hbHlzaXMgYW5kIHByb2dyYW1taW5nKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiQmVsbCBUZWxlcGhvbmUgTGFicy4sIE11cnJheSBIaWxsLCBOSiwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIG9wZXJhdGluZyBzeXN0ZW1zOyBjb21wdXRlciBwcm9ncmFtbWluZzsgZGVkaWNhdGVkOyBtYWludGVuYW5jZTsgUHJvZ3JhbW1lcidzIFdvcmtiZW5jaDsgcHJvZ3JhbW1pbmc7IHNvZnR3YXJlIGRldmVsb3BtZW50OyBzcGVjaWFsIHB1cnBvc2UgY29tcHV0ZXJzOyBzcGVjaWFsaXplZCBjb21wdXRlciIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7U21pdGg6MTk3NzpNTU8sCiAgYXV0aG9yID0gICAgICAgIkFsYW4gSmF5IFNtaXRoIiwKICB0aXRsZSA9ICAgICAgICAiTXVsdGlwcm9jZXNzb3IgTWVtb3J5IE9yZ2FuaXphdGlvbiBhbmQgTWVtb3J5IEludGVyZmVyZW5jZSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMCIsCiAgbnVtYmVyID0gICAgICAgIjEwIiwKICBwYWdlcyA9ICAgICAgICAiNzU0LS03NjEiLAogIG1vbnRoID0gICAgICAgIG9jdCwKICB5ZWFyID0gICAgICAgICAiMTk3NyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJUaGUgc3RydWN0dXJlIG9mIHNoYXJlZCBtZW1vcnkgaW4gYSBtdWx0aXByb2Nlc3NvciBjb21wdXRlciBzeXN0ZW0gaXMgZXhhbWluZWQgd2l0aCBwYXJ0aWN1bGFyIGF0dGVudGlvbiB0byBub25pbnRlcmxlYXZlZCBtZW1vcnkuIEFsdGVybmF0aXZlIG1lbW9yeSBvcmdhbml6YXRpb25zIGFyZSBjb21wYXJlZCBhbmQgaXQgaXMgc2hvd24gdGhhdCBhIGhvbWUgbWVtb3J5IG9yZ2FuaXphdGlvbiwgaW4gd2hpY2ggZWFjaCBwcm9jZXNzb3IgaXMgYXNzb2NpYXRlZCB3aXRoIG9uZSBvciBtb3JlIG1lbW9yaWVzIGluIHdoaWNoIGl0cyBhZGRyZXNzIHNwYWNlIGNvbmNlbnRyYXRlZCwgaXMgcXVpdGUgZWZmZWN0aXZlIGluIHJlZHVjaW5nIG1lbW9yeSBpbnRlcmZlcmVuY2UuIEhvbWUgbWVtb3J5IG9yZ2FuaXphdGlvbiBpcyBzaG93biB0byBiZSBwYXJ0aWN1bGFybHkgc3VpdGVkIHRvIGNlcnRhaW4gc3BlY2lhbGl6ZWQgY29tcHV0YXRpb25hbCBwcm9ibGVtcyBhcyB3ZWxsIGFzIHRvIHBvc3Nlc3MgYWR2YW50YWdlcyBpbiB0ZXJtcyBvZiBpbnRlcmZlcmVuY2UgYW5kIHJlbGlhYmlsaXR5IGZvciBnZW5lcmFsIHB1cnBvc2UgY29tcHV0YXRpb24uIFJlc3VsdHMgZm9yIGludGVybGVhdmVkIG1lbW9yeSBhcmUgZHJhd24gZnJvbSBwcmV2aW91cyB3b3JrIGFuZCBhcmUgdXNlZCBmb3IgY29tcGFyaXNvbi4gVHJhY2UtZHJpdmVuIHNpbXVsYXRpb25zIGFyZSB1c2VkIHRvIHZlcmlmeSB0aGUgY29uY2x1c2lvbnMgb2YgdGhlIGFuYWx5c2lzLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM1MjIwIChDb21wdXRlciBhcmNoaXRlY3R1cmUpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBvZiBDYWxpZm9ybmlhLCBCZXJrZWxleSwgQ0EsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBzeXN0ZW07IGNvbXB1dGVyIHN5c3RlbXMgcHJvZ3JhbW1pbmc7IGZpbGUgb3JnYW5pc2F0aW9uOyBtZW1vcnkgaW50ZXJmZXJlbmNlOyBtZW1vcnkgb3JnYW5pemF0aW9uOyBtdWx0aXByb2Nlc3Npbmcgc3lzdGVtczsgbXVsdGlwcm9jZXNzb3I7IG5vbmludGVybGVhdmVkIG1lbW9yeTsgc2hhcmVkIG1lbW9yeSIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7Qm95ZXI6MTk3NzpGU1MsCiAgYXV0aG9yID0gICAgICAgIlJvYmVydCBTLiBCb3llciBhbmQgSi4gU3Ryb3RoZXIgTW9vcmUiLAogIHRpdGxlID0gICAgICAgICJBIEZhc3QgU3RyaW5nIFNlYXJjaGluZyBBbGdvcml0aG0iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjAiLAogIG51bWJlciA9ICAgICAgICIxMCIsCiAgcGFnZXMgPSAgICAgICAgIjc2Mi0tNzcyIiwKICBtb250aCA9ICAgICAgICBvY3QsCiAgeWVhciA9ICAgICAgICAgIjE5NzciLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L01pc2MvcHJvdGVpbi5wYXR0ZXJuLmJpYiIsCiAgbm90ZSA9ICAgICAgICAgIlNlZSBhbHNvIFxjaXRle0tudXRoOjE5Nzc6RlBNfSBhbmQgXGNpdGV7U3VuZGF5OjE5OTA6VkZTfS4iLAogIGFic3RyYWN0ID0gICAgICJBbiBhbGdvcml0aG0gaXMgcHJlc2VudGVkIHRoYXQgc2VhcmNoZXMgZm9yIHRoZSBsb2NhdGlvbiwgYGBpLCcnIG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIGEgY2hhcmFjdGVyIHN0cmluZywgYGBwYXQsJycgaW4gYW5vdGhlciBzdHJpbmcsIGBgc3RyaW5nLicnIER1cmluZyB0aGUgc2VhcmNoIG9wZXJhdGlvbiwgdGhlIGNoYXJhY3RlcnMgb2YgcGF0IGFyZSBtYXRjaGVkIHN0YXJ0aW5nIHdpdGggdGhlIGxhc3QgY2hhcmFjdGVyIG9mIHBhdC4gVGhlIGluZm9ybWF0aW9uIGdhaW5lZCBieSBzdGFydGluZyB0aGUgbWF0Y2ggYXQgdGhlIGVuZCBvZiB0aGUgcGF0dGVybiBvZnRlbiBhbGxvd3MgdGhlIGFsZ29yaXRobSB0byBwcm9jZWVkIGluIGxhcmdlIGp1bXBzIHRocm91Z2ggdGhlIHRleHQgYmVpbmcgc2VhcmNoZWQuIFRodXMgdGhlIGFsZ29yaXRobSBoYXMgdGhlIHVudXN1YWwgcHJvcGVydHkgdGhhdCwgaW4gbW9zdCBjYXNlcywgbm90IGFsbCBvZiB0aGUgZmlyc3QgaSBjaGFyYWN0ZXJzIG9mIHN0cmluZyBhcmUgaW5zcGVjdGVkLiBUaGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgYWN0dWFsbHkgaW5zcGVjdGVkIChvbiB0aGUgYXZlcmFnZSkgZGVjcmVhc2VzIGFzIGEgZnVuY3Rpb24gb2YgdGhlIGxlbmd0aCBvZiBwYXQuIEZvciBhIHJhbmRvbSBFbmdsaXNoIHBhdHRlcm4gb2YgbGVuZ3RoIDUsIHRoZSBhbGdvcml0aG0gd2lsbCB0eXBpY2FsbHkgaW5zcGVjdCBpLzQgY2hhcmFjdGVycyBvZiBzdHJpbmcgYmVmb3JlIGZpbmRpbmcgYSBtYXRjaCBhdCBpLiBGdXJ0aGVybW9yZSwgdGhlIGFsZ29yaXRobSBoYXMgYmVlbiBpbXBsZW1lbnRlZCBzbyB0aGF0IChvbiB0aGUgYXZlcmFnZSkgZmV3ZXIgdGhhbiBpIHBsdXMgcGF0bGVuIG1hY2hpbmUgaW5zdHJ1Y3Rpb25zIGFyZSBleGVjdXRlZC4gVGhlc2UgY29uY2x1c2lvbnMgYXJlIHN1cHBvcnRlZCB3aXRoIGVtcGlyaWNhbCBldmlkZW5jZSBhbmQgYSB0aGVvcmV0aWNhbCBhbmFseXNpcyBvZiB0aGUgYXZlcmFnZSBiZWhhdmlvciBvZiB0aGUgYWxnb3JpdGhtLiBUaGUgd29yc3QgY2FzZSBiZWhhdmlvciBvZiB0aGUgYWxnb3JpdGhtIGlzIGxpbmVhciBpbiBpIHBsdXMgcGF0bGVuLCBhc3N1bWluZyB0aGUgYXZhaWxhYmlsaXR5IG9mIGFycmF5IHNwYWNlIGZvciB0YWJsZXMgbGluZWFyIGluIHBhdGxlbiBwbHVzIHRoZSBzaXplIG9mIHRoZSBhbHBoYWJldC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDI0MCAoUHJvZ3JhbW1pbmcgYW5kIGFsZ29yaXRobSB0aGVvcnkpOyBDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzOyA5MDEiLAogIGNvbW1lbnQgPSAgICAgICJUaGUgQm95ZXItTW9vcmUgc3RyaW5nIG1hdGNoaW5nIGFsZ29yaXRobSBpcywgaW4gdGhlIHdvcnN0IGNhc2UsIGxpbmVhciBpbiB0aGUgbGVuZ3RoIG9mIHRoZSB0ZXh0ICsgbGVuZ3RoIG9mIHRoZSBwYXR0ZXJuLiBUaGUgYXZlcmFnZSBjYXNlIGJlaGF2aW9yIGlzIHN1YmxpbmVhci4gUHJhY3RpY2FsIGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbnMgb2YgdGhpcyBhbGdvcml0aG0gZXhpc3QuIEJ5IHN0YXJ0aW5nIHRoZSBjb21wYXJpc29ucyBhdCB0aGUgcmlnaHQgb2YgdGhlIHBhdHRlcm4gaW5zdGVhZCBvZiB0aGUgbGVmdCBvZiB0aGUgcGF0dGVybiwgbGFyZ2UganVtcHMgY2FuIGJlIG1hZGUgaW4gdGhlIHRleHQuIiwKICBjb3Jwc291cmNlID0gICAiU3RhbmZvcmQgUmVzLiBJbnN0LiwgU3RhbmZvcmQsIENBLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYWxnb3JpdGhtOyBCb3llci1Nb29yZTsgY2hhcmFjdGVyIHN0cmluZzsgY29tcHV0ZXIgb3BlcmF0aW5nIHN5c3RlbXM7IGNvbXB1dGVyIHByb2dyYW1taW5nOyBmYXN0OyBpbmZvcm1hdGlvbiBzY2llbmNlIC0tLSBJbmZvcm1hdGlvbiBSZXRyaWV2YWw7IGxpc3QgcHJvY2Vzc2luZzsgcGF0dGVybiBtYXRjaGluZzsgc3RyaW5nIG1hdGNoaW5nOyBzdHJpbmcgc2VhcmNoaW5nOyB0ZXh0OyB0ZXh0IGVkaXRpbmciLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0xlZToxOTc3OkNGUCwKICBhdXRob3IgPSAgICAgICAiSi4gQS4gTi4gTGVlIiwKICB0aXRsZSA9ICAgICAgICAiQ29uc2lkZXJhdGlvbnMgZm9yIGZ1dHVyZSBwcm9ncmFtbWluZyBsYW5ndWFnZSBzdGFuZGFyZHMgYWN0aXZpdGllcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMCIsCiAgbnVtYmVyID0gICAgICAgIjExIiwKICBwYWdlcyA9ICAgICAgICAiNzg4LS03OTQiLAogIG1vbnRoID0gICAgICAgIG5vdiwKICB5ZWFyID0gICAgICAgICAiMTk3NyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjE0MEQgKEhpZ2ggbGV2ZWwgbGFuZ3VhZ2VzKSIsCiAgY29ycHNvdXJjZSA9ICAgIkRlcHQuIG9mIENvbXB1dGVyIFNjaS4sIFZpcmdpbmlhIFBvbHl0ZWNoLiBJbnN0LiBhbmQgU3RhdGUgVW5pdi4sIEJsYWNrc2J1cmcsIFZBLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJCQVNJQzsgQ09CT0w7IGRvY3VtZW50YXRpb247IGVycm9yIGNvbmRpdGlvbnM7IEZPUlRSQU47IGZ1dHVyZTsgUEwvSTsgcHJvY2VkdXJlIG9yaWVudGVkIGxhbmd1YWdlczsgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2U7IHN0YW5kYXJkcyIsCiAgdHJlYXRtZW50ID0gICAgIkcgR2VuZXJhbCBSZXZpZXc7IFAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7VHVybmVyOjE5Nzc6VUxTLAogIGF1dGhvciA9ICAgICAgICJSb2xsaW5zIFR1cm5lciBhbmQgQmlsbCBTdHJlY2tlciIsCiAgdGl0bGUgPSAgICAgICAgIlVzZSBvZiB0aGUge0xSVX0gU3RhY2sgRGVwdGggRGlzdHJpYnV0aW9uIGZvciBTaW11bGF0aW9uIG9mIFBhZ2luZyBCZWhhdmlvciIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMCIsCiAgbnVtYmVyID0gICAgICAgIjExIiwKICBwYWdlcyA9ICAgICAgICAiNzk1LS03OTgiLAogIG1vbnRoID0gICAgICAgIG5vdiwKICB5ZWFyID0gICAgICAgICAiMTk3NyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvTWlzYy9zdG9yYWdlLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIlR3byBmYW1pbGllcyBvZiBwcm9iYWJpbGl0eSBkaXN0cmlidXRpb25zIGFyZSBuZWVkZWQgZm9yIHVzZSBieSBhIHZpcnR1YWwgbWVtb3J5IHNpbXVsYXRpb24gbW9kZWw6IGhlYWR3YXkgYmV0d2VlbiBwYWdlIGZhdWx0IGRpc3RyaWJ1dGlvbnMsIGFuZCB3b3JraW5nIHNldCBzaXplIGRpc3RyaWJ1dGlvbnMuIEFsbCBtZW1iZXJzIG9mIGJvdGggZmFtaWxpZXMgY2FuIGJlIGRlcml2ZWQgZnJvbSB0aGUgTFJVIHN0YWNrIGRlcHRoIGRpc3RyaWJ1dGlvbi4gU2ltcGxlIGV4cHJlc3Npb25zIGZvciB0aGUgY29tcHV0YXRpb24gb2YgYm90aCBraW5kcyBvZiBkaXN0cmlidXRpb25zIGFyZSBnaXZlbi4gRmluYWxseSwgZXhhbXBsZXMgYXJlIGdpdmVuIG9mIGJvdGggZmFtaWxpZXMgb2YgZGlzdHJpYnV0aW9ucyBhcyBjb21wdXRlZCBmcm9tIGEgcHVibGlzaGVkIHN0YWNrIGRlcHRoIGRpc3RyaWJ1dGlvbi4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJEaWdpdGFsIEVxdWlwbWVudCBDb3JwLiwgTWF5bmFyZCwgTUEsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBvcGVyYXRpbmcgc3lzdGVtczsgZmF1bHQgZGlzdHJpYnV0aW9uczsgbGVhc3Q7IExSVTsgbWVtb3J5IGhpZXJhcmNoeTsgcGFnaW5nOyBQZXJmb3JtYW5jZSBFdmFsdWF0aW9uOiBFeHBlcmltZW50YWw7IHByb2JhYmlsaXR5OyByZWNlbnRseSB1c2VkOyBzaW11bGF0aW9uOyBzdGFjayBkZXB0aCBkaXN0cmlidXRpb247IHZpcnR1YWwgbWVtb3J5OyB2aXJ0dWFsIHN0b3JhZ2UiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0Nyb3c6MTk3NzpBUEMsCiAgYXV0aG9yID0gICAgICAgIkZyYW5rbGluIEMuIENyb3ciLAogIHRpdGxlID0gICAgICAgICJUaGUgQWxpYXNpbmcgUHJvYmxlbSBpbiBDb21wdXRlci1HZW5lcmF0ZWQgU2hhZGVkIEltYWdlcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMCIsCiAgbnVtYmVyID0gICAgICAgIjExIiwKICBwYWdlcyA9ICAgICAgICAiNzk5LS04MDUiLAogIG1vbnRoID0gICAgICAgIG5vdiwKICB5ZWFyID0gICAgICAgICAiMTk3NyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGlzdHJpYnV0ZWQvUUxELzE5NzcuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiQ2VydGFpbiBkZWZlY3RzLCBzdWNoIGFzIGphZ2dlZCBlZGdlcyBhbmQgZGlzYXBwZWFyaW5nIGRldGFpbCwgaGF2ZSBsb25nIGJlZW4gYW4gYW5ub3lhbmNlIGluIGRpZ2l0YWxseSBnZW5lcmF0ZWQgc2hhZGVkIGltYWdlcy4gQWx0aG91Z2ggaW5jcmVhc2luZyB0aGUgcmVzb2x1dGlvbiBvciBkZWZvY3VzaW5nIHRoZSBkaXNwbGF5IGNhbiBhdHRlbnVhdGUgdGhlbSwgYW4gdW5kZXJzdGFuZGluZyBvZiB0aGVzZSBkZWZlY3RzIGxlYWRzIHRvIG1vcmUgZWZmZWN0aXZlIG1ldGhvZHMuIFRoaXMgcGFwZXIgZXhwbGFpbnMgdGhlIG9ic2VydmVkIGRlZmVjdHMgaW4gdGVybXMgb2YgdGhlIGFsaWFzaW5nIHBoZW5vbWVub24gaW5oZXJlbnQgaW4gc2FtcGxlZCBzaWduYWxzIGFuZCBkaXNjdXNzZXMgcHJlZmlsdGVyaW5nIGFzIGEgcmVjb2duaXplZCBjdXJlLiBBIG1ldGhvZCBmb3IgZXZhbHVhdGluZyBmaWx0ZXJzIGlzIHByZXNlbnRlZCwgdGhlIGFwcGxpY2F0aW9uIG9mIHByZWZpbHRlcmluZyB0byBoaWRkZW4tc3VyZmFjZSBhbGdvcml0aG1zIGlzIGRpc2N1c3NlZCwgYW5kIGFuIGltcGxlbWVudGF0aW9uIG9mIGEgZmlsdGVyaW5nIHRpbGVyIGlzIHNob3duIGFjY29tcGFuaWVkIGJ5IGV4YW1wbGVzIG9mIGl0cyBlZmZlY3RpdmVuZXNzLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgYW5ub3RlID0gICAgICAgIkNlcnRhaW4gZGVmZWN0cywgc3VjaCBhcyBqYWdnZWQgZWRnZXMgYW5kIGRpc2FwcGVhcmluZyBkZXRhaWwsIGhhdmUgbG9uZyBiZWVuIGFuIGFubm95YW5jZSBpbiBkaWdpdGFsbHkgZ2VuZXJhdGVkIHNoYWRlZCBpbWFnZXMuIEFsdGhvdWdoIGluY3JlYXNpbmcgdGhlIHJlc29sdXRpb24gb3IgZGVmb2N1c2luZyB0aGUgZGlzcGxheSBjYW4gYXR0ZW51YXRlIHRoZW0sIGFuIHVuZGVyc3RhbmRpbmcgb2YgdGhlc2UgZGVmZWN0cyBsZWFkcyB0byBtb3JlIGVmZmVjdGl2ZSBtZXRob2RzLiBUaGlzIHBhcGVyIGV4cGxhaW5zIHRoZSBvYnNlcnZlZCBkZWZlY3RzIGluIHRlcm1zIG9mIHRoZSBhbGlhc2luZyBwaGVub21lbm9uIGluaGVyZW50IGluIHNhbXBsZWQgc2lnbmFscyBhbmQgZGlzY3Vzc2VzIHByZWZpbHRlcmluZyBhcyBhIHJlY29nbml6ZWQgY3VyZSBcbGRvdHMuIiwKICBjbGFzc2NvZGVzID0gICAiQzYxMzBCIChHcmFwaGljcyB0ZWNobmlxdWVzKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gb2YgVGV4YXMsIEF1c3RpbiwgVFgsIFVTQSIsCiAgZGVzY3JpcHRvcnMgPSAgIk1ldGhvZDsgZ3JhcGhpY3M7IHRocmVlLWRpbWVuc2lvbmFsIHBsb3Q7IGRpc3BsYXk7IGZpbHRlciB0aGVvcnk7IHNhbXBsaW5nOyBhbGlhc2luZzsgY29udm9sdXRpb25hbCBmaWx0ZXJpbmc7IGhpZGRlbiBsaW5lIGFsZ29yaXRobSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhbGlhc2luZzsgYW50aWFsaWFzaW5nOyBDQUNNOyBjb21wdXRlciBncmFwaGljczsgZGVmZWN0czsgZmlsdGVyaW5nIHRpbGVyOyBwcmVmaWx0ZXJpbmc7IHNhbXBsZWQgc2lnbmFsczsgc2hhZGVkIGltYWdlcyIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7TGFtcG9ydDoxOTc3OkNSVywKICBhdXRob3IgPSAgICAgICAiTGVzbGllIExhbXBvcnQiLAogIHRpdGxlID0gICAgICAgICJDb25jdXJyZW50IFJlYWRpbmcgYW5kIFdyaXRpbmciLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjAiLAogIG51bWJlciA9ICAgICAgICIxMSIsCiAgcGFnZXMgPSAgICAgICAgIjgwNi0tODExIiwKICBtb250aCA9ICAgICAgICBub3YsCiAgeWVhciA9ICAgICAgICAgIjE5NzciLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2OEEwNSIsCiAgTVJudW1iZXIgPSAgICAgIjU3IDQ1NzIiLAogIG1ycmV2aWV3ZXIgPSAgICJSaWNoYXJkIEEuIERlTWlsbG8iLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiVGhlIHByb2JsZW0gb2Ygc2hhcmluZyBkYXRhIGFtb25nIGFzeW5jaHJvbm91cyBwcm9jZXNzZXMgaXMgY29uc2lkZXJlZC4gSXQgaXMgYXNzdW1lZCB0aGF0IG9ubHkgb25lIHByb2Nlc3MgYXQgYSB0aW1lIGNhbiBtb2RpZnkgdGhlIGRhdGEsIGJ1dCBjb25jdXJyZW50IHJlYWRpbmcgYW5kIHdyaXRpbmcgaXMgcGVybWl0dGVkLiBUd28gZ2VuZXJhbCB0aGVvcmVtcyBhcmUgcHJvdmVkLCBhbmQgc29tZSBhbGdvcml0aG1zIGFyZSBwcmVzZW50ZWQgdG8gaWxsdXN0cmF0ZSB0aGVpciB1c2UuIFRoZXNlIGluY2x1ZGUgYSBzb2x1dGlvbiB0byB0aGUgZ2VuZXJhbCBwcm9ibGVtIGluIHdoaWNoIGEgcmVhZCBpcyByZXBlYXRlZCBpZiBpdCBtaWdodCBoYXZlIG9idGFpbmVkIGFuIGluY29ycmVjdCByZXN1bHQsIGFuZCB0d28gdGVjaG5pcXVlcyBmb3IgdHJhbnNtaXR0aW5nIG1lc3NhZ2VzIGJldHdlZW4gcHJvY2Vzc2VzLiBUaGVzZSBzb2x1dGlvbnMgZG8gbm90IGFzc3VtZSBhbnkgc3luY2hyb25pemluZyBtZWNoYW5pc20gb3RoZXIgdGhhbiBkYXRhIHdoaWNoIGNhbiBiZSB3cml0dGVuIGJ5IG9uZSBwcm9jZXNzIGFuZCByZWFkIGJ5IG90aGVyIHByb2Nlc3Nlcy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjE1MEogKE9wZXJhdGluZyBzeXN0ZW1zKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiTWFzc2FjaHVzZXR0cyBDb21wdXRlciBBc3NvY2lhdGVzLCBXYWtlZmllbGQsIE1BLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYWxnb3JpdGhtczsgYXN5bmNocm9ub3VzIHByb2Nlc3NlczsgY29tcHV0ZXIgc3lzdGVtcyBwcm9ncmFtbWluZzsgY29uY3VycmVudDsgbXVsdGlwcm9jZXNzaW5nIHByb2dyYW1zOyByZWFkaW5nOyBzaGFyaW5nIGRhdGE7IHRoZW9yZW1zOyB3cml0aW5nIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtTaG9yZToxOTc3OkFCRiwKICBhdXRob3IgPSAgICAgICAiSm9obiBFLiBTaG9yZSIsCiAgdGl0bGUgPSAgICAgICAgIkFub21hbG91cyBCZWhhdmlvciBvZiB0aGUgRmlmdHktUGVyY2VudCBSdWxlIGluIER5bmFtaWMgTWVtb3J5IEFsbG9jYXRpb24iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjAiLAogIG51bWJlciA9ICAgICAgICIxMSIsCiAgcGFnZXMgPSAgICAgICAgIjgxMi0tODIwIiwKICBtb250aCA9ICAgICAgICBub3YsCiAgeWVhciA9ICAgICAgICAgIjE5NzciLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiU2ltdWxhdGlvbiBkYXRhIGFyZSByZXBvcnRlZCBzaG93aW5nIHRoYXQsIGluIGR5bmFtaWMgbWVtb3J5IGFsbG9jYXRpb24sIHRoZSBhdmVyYWdlIGZyZWUtdG8tYWxsb2NhdGVkLWJsb2NrIHJhdGlvIGNhbiBkaWZmZXIgY29uc2lkZXJhYmx5IGFuZCBpbiBib3RoIGRpcmVjdGlvbnMgZnJvbSB0aGUgcHJlZGljdGlvbnMgb2YgdGhlIDUwIHBlcmNlbnQgcnVsZS4gQSBuZXcgZGVyaXZhdGlvbiBpcyBnaXZlbiwgYW5kIGl0IGlzIHNob3duIHRoYXQgcHJldmlvdXMgZGVyaXZhdGlvbnMgbWFrZSBhbiBhc3N1bXB0aW9uIHRoYXQgbWF5IGJlIHZpb2xhdGVkIGZyZXF1ZW50bHkuIE9uIHRoZSBiYXNpcyBvZiB0aGUgc2ltdWxhdGlvbiBkYXRhIGFuZCB0aGUgZGVyaXZhdGlvbiwgaXQgaXMgaHlwb3RoZXNpemVkIHRoYXQgdGhlIGFub21hbG91cyBiZWhhdmlvciByZXN1bHRzIGZyb20gdGhlIGNvbWJpbmVkIGVmZmVjdHMgb2Ygc3lzdGVtYXRpYyBwbGFjZW1lbnQgYW5kIHRoZSBzdGF0aXN0aWNzIG9mIHRoZSByZWxlYXNlIHByb2Nlc3MuIEFkZGl0aW9uYWwgc2ltdWxhdGlvbnMgc3VwcG9ydCB0aGlzIGh5cG90aGVzaXMuIFN5c3RlbWF0aWMgcGxhY2VtZW50LCB3aGljaCByZWZlcnMgdG8gdGhlIG5hdHVyYWwgY29udmVudGlvbiBvZiBhbHdheXMgYWxsb2NhdGluZyBzdG9yYWdlIHJlcXVlc3RzIGFnYWluc3QgdGhlIHNhbWUgZW5kIG9mIHRoZSBmcmVlIGJsb2NrIHNlbGVjdGVkIGJ5IHRoZSBhbGxvY2F0aW9uIHN0cmF0ZWd5LCB0ZW5kcyB0byBvcmRlciBibG9ja3Mgd2l0aGluIGNvbnRpZ3VvdXMgZ3JvdXBzLCBhY2NvcmRpbmcgdG8gdGhlaXIgYWxsb2NhdGlvbiB0aW1lLiBUaGUgZGVncmVlIG9mIGFub21hbG91cyBiZWhhdmlvciBkZXBlbmRzIG9uIHRoZSBleHRlbnQgdG8gd2hpY2ggYWxsb2NhdGVkIGJsb2NrcyBhcmUgcmVsZWFzZWQgaW4gdGhlIG9yZGVyIG9mIHRoZWlyIGFsbG9jYXRpb24uIEZvciBub24tTWFya292aWFuIHJlbGVhc2UgcHJvY2Vzc2VzLCB0aGUgZXh0ZW50IG9mIHRoZSBjb3JyZWxhdGlvbiBiZXR3ZWVuIGFsbG9jYXRpb24gb3JkZXIgYW5kIHJlbGVhc2Ugb3JkZXIgdmFyaWVzIGFwcHJveGltYXRlbHkgaW52ZXJzZWx5IHdpdGggdGhlIGNvZWZmaWNpZW50IG9mIHZhcmlhdGlvbiBvZiB0aGUgbWVtb3J5IHJlc2lkZW5jZSB0aW1lIGRpc3RyaWJ1dGlvbi4gVGhlIHNpbXVsYXRpb25zIHNob3cgdGhhdCBhbGxvY2F0aW9uIGVmZmljaWVuY3kgZGVwZW5kcyBzdHJvbmdseSBvbiB0aGUgcmVzaWRlbmNlIHRpbWUgZGlzdHJpYnV0aW9uOyBlZmZpY2llbmN5IGRlY3JlYXNlcyBhcyB0aGUgZGlzdHJpYnV0aW9uJ3MgY29lZmZpY2llbnQgb2YgdmFyaWF0aW9uIGluY3JlYXNlcy4gU29tZSBwcmFjdGljYWwgaW1wbGljYXRpb25zIGFyZSBicmllZmx5IGRpc2N1c3NlZC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJOYXZhbCBSZXMuIExhYi4sIFdhc2hpbmd0b24sIERDLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiNTAgcGVyY2VudCBydWxlOyBhbm9tYWxvdXMgYmVoYXZpb3VyOyBjb21wdXRlciBvcGVyYXRpbmcgc3lzdGVtczsgZHluYW1pYyBtZW1vcnkgYWxsb2NhdGlvbjsgcmVsZWFzZSBwcm9jZXNzOyBzaW11bGF0aW9uOyBzdG9yYWdlIGFsbG9jYXRpb247IHN5c3RlbWF0aWMgcGxhY2VtZW50IiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtTdG9ja21hbjoxOTc3OkVIQywKICBhdXRob3IgPSAgICAgICAiRy4gQy4gU3RvY2ttYW4gYW5kIEEuIEsuIEFncmF3YWxhIiwKICB0aXRsZSA9ICAgICAgICAiRXF1aXZhbGVuY2Ugb2Yge0hvdWdofSBjdXJ2ZSBkZXRlY3Rpb24gdG8gdGVtcGxhdGUgbWF0Y2hpbmciLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjAiLAogIG51bWJlciA9ICAgICAgICIxMSIsCiAgcGFnZXMgPSAgICAgICAgIjgyMC0tODIyIiwKICBtb250aCA9ICAgICAgICBub3YsCiAgeWVhciA9ICAgICAgICAgIjE5NzciLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjYxNDBDIChPcHRpY2FsIGluZm9ybWF0aW9uLCBpbWFnZSBhbmQgdmlkZW8gc2lnbmFsIHByb2Nlc3NpbmcpOyBDMTI1MCAoUGF0dGVybiByZWNvZ25pdGlvbikiLAogIGNvcnBzb3VyY2UgPSAgICJMTksgQ29ycC4sIFNpbHZlciBTcHJpbmcsIE1ELCBVU0EiLAogIGtleXdvcmRzID0gICAgICJIb3VnaDsgSG91Z2ggY3VydmUgZGV0ZWN0aW9uOyBwYXR0ZXJuIHJlY29nbml0aW9uOyB0ZW1wbGF0ZSBtYXRjaGluZzsgdHJhbnNmb3JtYXRpb24iLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle1dpcnRoOjE5Nzc6V0NXLAogIGF1dGhvciA9ICAgICAgICJOLiBXaXJ0aCIsCiAgdGl0bGUgPSAgICAgICAgIldoYXQgY2FuIHdlIGRvIGFib3V0IHRoZSB1bm5lY2Vzc2FyeSBkaXZlcnNpdHkgb2Ygbm90YXRpb24gZm9yIHN5bnRhY3RpYyBkZWZpbml0aW9ucz8iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjAiLAogIG51bWJlciA9ICAgICAgICIxMSIsCiAgcGFnZXMgPSAgICAgICAgIjgyMi0tODIzIiwKICBtb250aCA9ICAgICAgICBub3YsCiAgeWVhciA9ICAgICAgICAgIjE5NzciLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQyMTAgKEZvcm1hbCBsb2dpYyk7IEM0MjQwIChQcm9ncmFtbWluZyBhbmQgYWxnb3JpdGhtIHRoZW9yeSk7IEM2MTQwRCAoSGlnaCBsZXZlbCBsYW5ndWFnZXMpIiwKICBjb3Jwc291cmNlID0gICAiRmVkZXJhbCBJbnN0LiBvZiBUZWNobm9sLiwgRVRILCBadXJpY2gsIFN3aXR6ZXJsYW5kIiwKICBrZXl3b3JkcyA9ICAgICAibm90YXRpb247IHByb2dyYW1taW5nIGxhbmd1YWdlczsgc3ludGFjdGljIGRlZmluaXRpb25zIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtSb3k6MTk3NzpOUlAsCiAgYXV0aG9yID0gICAgICAgIk0uIEsuIFJveSIsCiAgdGl0bGUgPSAgICAgICAgIkEgbm90ZSBvbiByZWZsZWN0aW9uLWZyZWUgcGVybXV0YXRpb24gZW51bWVyYXRpb24iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjAiLAogIG51bWJlciA9ICAgICAgICIxMSIsCiAgcGFnZXMgPSAgICAgICAgIjgyMy0tODIzIiwKICBtb250aCA9ICAgICAgICBub3YsCiAgeWVhciA9ICAgICAgICAgIjE5NzciLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMTAgKFN5c3RlbXMgYW5hbHlzaXMgYW5kIHByb2dyYW1taW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIkphZGF2cHVyIFVuaXYuLCBDYWxjdXR0YSwgSW5kaWEiLAogIGtleXdvcmRzID0gICAgICJlbnVtZXJhdGlvbjsgcGVybXV0YXRpb247IHByb2dyYW1taW5nOyByZWZsZWN0aW9uIGZyZWUiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbDsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtNYW5uYToxOTc3Ok9BUiwKICBhdXRob3IgPSAgICAgICAiWm9oYXIgTWFubmEgYW5kIEFkaSBTaGFtaXIiLAogIHRpdGxlID0gICAgICAgICJUaGUgT3B0aW1hbCBBcHByb2FjaCB0byBSZWN1cnNpdmUgUHJvZ3JhbXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjAiLAogIG51bWJlciA9ICAgICAgICIxMSIsCiAgcGFnZXMgPSAgICAgICAgIjgyNC0tODMxIiwKICBtb250aCA9ICAgICAgICBub3YsCiAgeWVhciA9ICAgICAgICAgIjE5NzciLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2OEEwNSIsCiAgTVJudW1iZXIgPSAgICAgIjU2IDEzNzQ4IiwKICBtcnJldmlld2VyID0gICAiR2lvcmdpbyBMZXZpIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MjQwIChQcm9ncmFtbWluZyBhbmQgYWxnb3JpdGhtIHRoZW9yeSkgMSBZZWFycyBBbGwgWWVhcnMgaW4gd2hpY2ggaXRlbXMgd2VyZSBwdWJsaXNoZWQuIDIgVHlwZSBBbGwgUHVibGljYXRpb24gdHlwZXMuIDMgTGFuZ3VhZ2UgQWxsIEZpbmQgb25seSBpdGVtcyBwdWJsaXNoZWQgaW4gdGhpcyBsYW5ndWFnZS4gSW4gYW55IHllYXIgQSBoeXBoZW4gb3IgQUxMIC0gSW4gYSBjZXJ0YWluIHllYXIgVGhlIGZvdXItZGlnaXQgeWVhciAxOTIzIEluIG9yIGFmdGVyIGEgY2VydGFpbiB5ZWFyIFRoZSB5ZWFyIGFuZCBhIGh5cGhlbiAxOTYwLSBJbiBvciBiZWZvcmUgYSBjZXJ0YWluIHllYXIgQSBoeXBoZW4gYW5kIGEgeWVhciAtMTk1NSBJbiBvciBiZXR3ZWVuIHR3byB5ZWFycyBCb3RoIHllYXJzIGFuZCBhIGh5cGhlbiAxOTYwLTE5NzUgMSBZZWFycyAxOTcwLTE5NzkgWWVhcnMgaW4gd2hpY2ggaXRlbXMgd2VyZSBwdWJsaXNoZWQuIDIgVHlwZSBBbGwgUHVibGljYXRpb24gdHlwZXMuIDMgTGFuZ3VhZ2UgQWxsIEZpbmQgb25seSBpdGVtcyBwdWJsaXNoZWQgaW4gdGhpcyBsYW5ndWFnZS4iLAogIGNvcnBzb3VyY2UgPSAgICJXZWl6bWFubiBJbnN0LiBvZiBTY2kuLCBSZWhvdm90aCwgSXNyYWVsIiwKICBrZXl3b3JkcyA9ICAgICAib3B0aW1hbCBhcHByb2FjaDsgb3B0aW1hbCBmaXhlZHBvaW50czsgcHJvZ3JhbW1pbmcgdGhlb3J5OyByZWN1cnNpdmUgcHJvZ3JhbXMiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0hhbW1lcjoxOTc3OlZITCwKICBhdXRob3IgPSAgICAgICAiTWljaGFlbCBIYW1tZXIgYW5kIFcuIEdlcnJ5IEhvd2UgYW5kIFZpbmNlbnQgSi4gS3J1c2thbCBhbmQgSXJ2aW5nIFdsYWRhd3NreSIsCiAgdGl0bGUgPSAgICAgICAgIlZlcnkgSGlnaCBMZXZlbCBQcm9ncmFtbWluZyBMYW5ndWFnZSBmb3IgRGF0YSBQcm9jZXNzaW5nIEFwcGxpY2F0aW9ucyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMCIsCiAgbnVtYmVyID0gICAgICAgIjExIiwKICBwYWdlcyA9ICAgICAgICAiODMyLS04NDAiLAogIG1vbnRoID0gICAgICAgIG5vdiwKICB5ZWFyID0gICAgICAgICAiMTk3NyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJUaGUgc3RydWN0dXJlIG9mIGEgdmVyeSBoaWdoIGxldmVsIGxhbmd1YWdlIGRlc2lnbmVkIGZvciB1c2UgaW4gYnVzaW5lc3MgZGF0YSBwcm9jZXNzaW5nIGFwcGxpY2F0aW9ucyBpcyBkZXNjcmliZWQuIFRoZSBsYW5ndWFnZSwgQnVzaW5lc3MgRGVmaW5pdGlvbiBMYW5ndWFnZSAoQkRMKSwgaGFzIGJlZW4gc3ViamVjdGVkIHRvIGEgbnVtYmVyIG9mIHZhbGlkYXRpb24gc3R1ZGllcyB3aGVyZSBpdCB3YXMgdXNlZCB0byBjb2RlIHBhcnRzIG9mIGV4aXN0aW5nIHN5c3RlbXMuIEFuIGltcGxlbWVudGF0aW9uIGlzIGN1cnJlbnRseSB1bmRlciB3YXksIGFzIGlzIGEgbW9kZWxpbmcgYW5kIGN1c3RvbWl6YXRpb24gZWZmb3J0IHVzaW5nIEJETCBhcyB0aGUgdW5kZXJseWluZyBzeXN0ZW0gbGFuZ3VhZ2UuIFRoaXMgbGF0dGVyIHN5c3RlbSB3aWxsIGJlIHVzZWQgdG8gdGFpbG9yIHByZWRlc2lnbmVkIGFwcGxpY2F0aW9uIHN5c3RlbXMgdG8gYW4gaW5kaXZpZHVhbCdzIG5lZWRzIGJ5IG1lYW5zIG9mIGhpcyByZXNwb25zZXMgdG8gYSBxdWVzdGlvbm5haXJlLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTQwRCAoSGlnaCBsZXZlbCBsYW5ndWFnZXMpOyBDNzEwMCAoQnVzaW5lc3MgYW5kIGFkbWluaXN0cmF0aW9uKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiSUJNIFRob21hcyBKLiBXYXRzb24gUmVzLiBDZW50ZXIsIFlvcmt0b3duIEhlaWdodHMsIE5ZLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYWRtaW5pc3RyYXRpdmUgZGF0YSBwcm9jZXNzaW5nOyBCREw7IGJ1c2luZXNzOyBidXNpbmVzcyBkZWZpbml0aW9uOyBidXNpbmVzcyBmb3JtczsgY2FsY3VsYXRpb25zOyBjb21wdXRlciBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IGRhdGEgcHJvY2Vzc2luZywgYnVzaW5lc3M7IGxhbmd1YWdlOyBvcmdhbml6YXRpb247IHByb2JsZW0gb3JpZW50ZWQgbGFuZ3VhZ2VzOyBzdWJsYW5ndWFnZXM7IHZlcnkgaGlnaCBsZXZlbCBwcm9ncmFtbWluZyBsYW5ndWFnZSIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7U3BydWdub2xpOjE5Nzc6UEhGLAogIGF1dGhvciA9ICAgICAgICJSZW56byBTcHJ1Z25vbGkiLAogIHRpdGxlID0gICAgICAgICJQZXJmZWN0IEhhc2hpbmcgRnVuY3Rpb25zOiB7QX0gU2luZ2xlIFByb2JlIFJldHJpZXZpbmcgTWV0aG9kIGZvciBTdGF0aWMgU2V0cyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMCIsCiAgbnVtYmVyID0gICAgICAgIjExIiwKICBwYWdlcyA9ICAgICAgICAiODQxLS04NTAiLAogIG1vbnRoID0gICAgICAgIG5vdiwKICB5ZWFyID0gICAgICAgICAiMTk3NyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4QTUwIiwKICBNUm51bWJlciA9ICAgICAiNTYgMTcyNTUiLAogIG1ycmV2aWV3ZXIgPSAgICJFYmVyaGFyZCBMdWRkZSIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvVGhlb3J5L1Byb2JBbGdzLmJpYiIsCiAgbm90ZSA9ICAgICAgICAgIlRoaXMgaXMgdGhlIGZpcnN0IGRpc2N1c3Npb24gb24gcGVyZmVjdCBoYXNoaW5nOyBkZXNjcmliZXMgaGV1cmlzdGljcyBmb3IgY29uc3RydWN0aW5nIHBlcmZlY3QgaGFzaCBmdW5jdGlvbnMuIiwKICBhYnN0cmFjdCA9ICAgICAiQSByZWZpbmVtZW50IG9mIGhhc2hpbmcgd2hpY2ggYWxsb3dzIHJldHJpZXZhbCBvZiBhbiBpdGVtIGluIGEgc3RhdGljIHRhYmxlIHdpdGggYSBzaW5nbGUgcHJvYmUgaXMgY29uc2lkZXJlZC4gR2l2ZW4gYSBzZXQgSSBvZiBpZGVudGlmaWVycywgdHdvIG1ldGhvZHMgYXJlIHByZXNlbnRlZCBmb3IgYnVpbGRpbmcsIGluIGEgbWVjaGFuaWNhbCB3YXksIHBlcmZlY3QgaGFzaGluZyBmdW5jdGlvbnMsIGkuZS4gZnVuY3Rpb25zIHRyYW5zZm9ybWluZyB0aGUgZWxlbWVudHMgb2YgSSBpbnRvIHVuaXF1ZSBhZGRyZXNzZXMuIFRoZSBmaXJzdCBtZXRob2QsIHRoZSBgYHF1b3RpZW50IHJlZHVjdGlvbicnIG1ldGhvZCwgaXMgc2hvd24gdG8gYmUgY29tcGxldGUgaW4gdGhlIHNlbnNlIHRoYXQgZm9yIGV2ZXJ5IHNldCBJIHRoZSBzbWFsbGVzdCB0YWJsZSBpbiB3aGljaCB0aGUgZWxlbWVudHMgb2YgSSBjYW4gYmUgc3RvcmVkIGFuZCBmcm9tIHdoaWNoIHRoZXkgY2FuIGJlIHJldHJpZXZlZCBieSB1c2luZyBhIHBlcmZlY3QgaGFzaGluZyBmdW5jdGlvbiBjb25zdHJ1Y3RlZCBieSB0aGlzIG1ldGhvZCBjYW4gYmUgZm91bmQuIEhvd2V2ZXIsIGZvciBub251bmlmb3JtbHkgZGlzdHJpYnV0ZWQgc2V0cywgdGhpcyBtZXRob2QgY2FuIGdpdmUgcmF0aGVyIHNwYXJzZSB0YWJsZXMuIFRoZSBzZWNvbmQgbWV0aG9kLCB0aGUgYGByZW1haW5kZXIgcmVkdWN0aW9uJycgbWV0aG9kLCBpcyBub3QgY29tcGxldGUgaW4gdGhlIGFib3ZlIHNlbnNlLCBidXQgaXQgc2VlbXMgdG8gZ2l2ZSBtaW5pbWFsIChvciBhbG1vc3QgbWluaW1hbCkgdGFibGVzIGZvciBldmVyeSBraW5kIG9mIHNldC4gVGhlIHR3byB0ZWNobmlxdWVzIGFyZSBhcHBsaWNhYmxlIGRpcmVjdGx5IHRvIHNtYWxsIHNldHMuIFNvbWUgbWV0aG9kcyB0byBleHRlbmQgdGhlc2UgcmVzdWx0cyB0byBsYXJnZXIgc2V0cyBhcmUgYWxzbyBwcmVzZW50ZWQuIEEgcm91Z2ggY29tcGFyaXNvbiB3aXRoIG9yZGluYXJ5IGhhc2hpbmcgaXMgZ2l2ZW4gd2hpY2ggc2hvd3MgdGhhdCB0aGlzIG1ldGhvZCBjYW4gYmUgdXNlZCBjb252ZW5pZW50bHkgaW4gc2V2ZXJhbCBwcmFjdGljYWwgYXBwbGljYXRpb25zLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbikiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIklzdGl0dXRvIGRpIEVsYWJvcmF6aW9uZSBkZWxsYSBJbmZvcm1hemlvbmUsIENOUiwgUGlzYSwgSXRhbHkiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgcHJvZ3JhbW1pbmc7IGZpbGUgb3JnYW5pc2F0aW9uOyBmdW5jdGlvbnM7IHBlcmZlY3QgaGFzaGluZzsgcmV0cmlldmluZzsgc2luZ2xlIHByb2JlOyBzdGF0aWMgc2V0cyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7Q29ja2U6MTk3NzpBUk8sCiAgYXV0aG9yID0gICAgICAgIkpvaG4gQ29ja2UgYW5kIEtlbiBLZW5uZWR5IiwKICB0aXRsZSA9ICAgICAgICAiQW4gQWxnb3JpdGhtIGZvciBSZWR1Y3Rpb24gb2YgT3BlcmF0b3IgU3RyZW5ndGgiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjAiLAogIG51bWJlciA9ICAgICAgICIxMSIsCiAgcGFnZXMgPSAgICAgICAgIjg1MC0tODU2IiwKICBtb250aCA9ICAgICAgICBub3YsCiAgeWVhciA9ICAgICAgICAgIjE5NzciLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0NvbXBpbGVyL0NvbXBpbGVyLkxpbnMuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiQSBzaW1wbGUgYWxnb3JpdGhtIHdoaWNoIHVzZXMgYW4gaW5kZXhlZCB0ZW1wb3JhcnkgdGFibGUgdG8gcGVyZm9ybSByZWR1Y3Rpb24gb2Ygb3BlcmF0b3Igc3RyZW5ndGggaW4gc3Ryb25nbHkgY29ubmVjdGVkIHJlZ2lvbnMgaXMgcHJlc2VudGVkLiBTZXZlcmFsIGV4dGVuc2lvbnMsIGluY2x1ZGluZyBsaW5lYXIgZnVuY3Rpb24gdGVzdCByZXBsYWNlbWVudCwgYXJlIGRpc2N1c3NlZC4gVGhlc2UgYWxnb3JpdGhtcyBzaG91bGQgZml0IHdlbGwgaW50byBhbiBpbnRlZ3JhdGVkIHBhY2thZ2Ugb2YgbG9jYWwgb3B0aW1pemF0aW9uIGFsZ29yaXRobXMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxNTBDIChDb21waWxlcnMsIGludGVycHJldGVycyBhbmQgb3RoZXIgcHJvY2Vzc29ycykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIklCTSBUaG9tYXMgSi4gV2F0c29uIFJlcy4gQ2VudGVyLCBZb3JrdG93biBIZWlnaHRzLCBOWSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFsZ29yaXRobTsgY29tcHV0ZXIgcHJvZ3JhbW1pbmc7IGluZGV4ZWQgdGVtcG9yYXJ5OyBsaW5lYXIgZnVuY3Rpb24gdGVzdDsgbG9jYWwgb3B0aW1pemF0aW9uOyBvcGVyYXRvciBzdHJlbmd0aDsgcHJvZ3JhbSBjb21waWxlcnM7IHJlZHVjdGlvbjsgcmVwbGFjZW1lbnQ7IHN0cm9uZ2x5IGNvbm5lY3RlZCByZWdpb25zOyB0YWJsZSIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0JpcmQ6MTk3NzpJUEksCiAgYXV0aG9yID0gICAgICAgIlIuIFMuIEJpcmQiLAogIHRpdGxlID0gICAgICAgICJJbXByb3ZpbmcgUHJvZ3JhbXMgYnkgdGhlIEludHJvZHVjdGlvbiBvZiBSZWN1cnNpb24iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjAiLAogIG51bWJlciA9ICAgICAgICIxMSIsCiAgcGFnZXMgPSAgICAgICAgIjg1Ni0tODYzIiwKICBtb250aCA9ICAgICAgICBub3YsCiAgeWVhciA9ICAgICAgICAgIjE5NzciLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2OEEwNSIsCiAgTVJudW1iZXIgPSAgICAgIjU2IDE3MTc5IiwKICBtcnJldmlld2VyID0gICAiVi4gQ2F6YW5lc2N1IiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9NaXNjL0Z1bmN0aW9uYWwuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiQSBuZXcgdGVjaG5pcXVlIG9mIHByb2dyYW0gdHJhbnNmb3JtYXRpb24sIGNhbGxlZCBgYHJlY3Vyc2lvbiBpbnRyb2R1Y3Rpb24sJycgaXMgZGVzY3JpYmVkIGFuZCBhcHBsaWVkIHRvIHR3byBhbGdvcml0aG1zIHdoaWNoIHNvbHZlIHBhdHRlcm4gbWF0Y2hpbmcgcHJvYmxlbXMuIEJ5IHVzaW5nIGEgcmVjdXJzaW9uIGludHJvZHVjdGlvbiwgYWxnb3JpdGhtcyB3aGljaCBtYW5pcHVsYXRlIGEgc3RhY2sgYXJlIGZpcnN0IHRyYW5zbGF0ZWQgaW50byByZWN1cnNpdmUgYWxnb3JpdGhtcyBpbiB3aGljaCBubyBzdGFjayBvcGVyYXRpb25zIG9jY3VyLiBUaGVzZSBhbGdvcml0aG1zIGFyZSB0aGVuIHN1YmplY3RlZCB0byBhIHNlY29uZCB0cmFuc2Zvcm1hdGlvbiwgYSBtZXRob2Qgb2YgcmVjdXJzaW9uIGVsaW1pbmF0aW9uIGNhbGxlZCBgYHRhYnVsYXRpb24sJycgdG8gcHJvZHVjZSBwcm9ncmFtcyB3aXRoIGEgdmVyeSBlZmZpY2llbnQgcnVubmluZyB0aW1lLiBJbiBwYXJ0aWN1bGFyLCBpdCBpcyBzaG93biBob3cgdGhlIGZhc3QgbGluZWFyIHBhdHRlcm4gbWF0Y2hpbmcgYWxnb3JpdGhtIG9mIEtudXRoLCBNb3JyaXMsIGFuZCBQcmF0dCBjYW4gYmUgZGVyaXZlZCBpbiBhIGZldyBzdGVwcyBmcm9tIGEgc2ltcGxlIG5vbmxpbmVhciBzdGFjayBhbGdvcml0aG0uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQyNDAgKFByb2dyYW1taW5nIGFuZCBhbGdvcml0aG0gdGhlb3J5KSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gb2YgUmVhZGluZywgUmVhZGluZywgVUsiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgcHJvZ3JhbW1pbmc7IGZ1bmN0aW9uYWwgcHJvZ3JhbSB0cmFuc2Zvcm1hdGlvbiBvcHRpbWl6YXRpb24gcmVjdXJzaW9uIGVsaW1pbmF0aW9uIHBhdHRlcm4gbWF0Y2hpbmcgY29tcHV0YXRpb25hbCBpbmR1Y3Rpb247IHByb2dyYW0gdHJhbnNmb3JtYXRpb247IHByb2dyYW1taW5nIHRoZW9yeTsgcmVjdXJzaW9uIGludHJvZHVjdGlvbjsgc3RhY2siLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle05pZWxzZW46MTk3NzpETUEsCiAgYXV0aG9yID0gICAgICAgIk5vcm1hbiBSLiBOaWVsc2VuIiwKICB0aXRsZSA9ICAgICAgICAiRHluYW1pYyBNZW1vcnkgQWxsb2NhdGlvbiBpbiBDb21wdXRlciBTaW11bGF0aW9uIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIwIiwKICBudW1iZXIgPSAgICAgICAiMTEiLAogIHBhZ2VzID0gICAgICAgICI4NjQtLTg3MyIsCiAgbW9udGggPSAgICAgICAgbm92LAogIHllYXIgPSAgICAgICAgICIxOTc3IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9Db21waWxlci9nYXJiYWdlLmNvbGxlY3Rpb24uYmliIiwKICBhYnN0cmFjdCA9ICAgICAiSW52ZXN0aWdhdGlvbiBpcyBtYWRlIG9mIHRoZSBwZXJmb3JtYW5jZSBvZiAzNSBkeW5hbWljIG1lbW9yeSBhbGxvY2F0aW9uIGFsZ29yaXRobXMgd2hlbiB1c2VkIHRvIHNlcnZpY2Ugc2ltdWxhdGlvbiBwcm9ncmFtcyBhcyByZXByZXNlbnRlZCBieSAxOCB0ZXN0IGNhc2VzLiBBbGdvcml0aG0gcGVyZm9ybWFuY2Ugd2FzIG1lYXN1cmVkIGluIHRlcm1zIG9mIHByb2Nlc3NpbmcgdGltZSwgbWVtb3J5IHVzYWdlLCBhbmQgZXh0ZXJuYWwgbWVtb3J5IGZyYWdtZW50YXRpb24uIEFsZ29yaXRobXMgbWFpbnRhaW5pbmcgc2VwYXJhdGUgZnJlZSBzcGFjZSBsaXN0cyBmb3IgZWFjaCBzaXplIG9mIG1lbW9yeSBibG9jayB1c2VkIHRlbmRlZCB0byBwZXJmb3JtIHF1aXRlIHdlbGwgY29tcGFyZWQgd2l0aCBvdGhlciBhbGdvcml0aG1zLiBTaW1wbGUgYWxnb3JpdGhtcyBvcGVyYXRpbmcgb24gbWVtb3J5IG9yZGVyZWQgbGlzdHMgKHdpdGhvdXQgYW55IGZyZWUgbGlzdCkgcGVyZm9ybWVkIHN1cnByaXNpbmdseSB3ZWxsLiBBbGdvcml0aG1zIGVtcGxveWluZyBwb3dlci1vZi10d28gYmxvY2sgc2l6ZXMgaGFkIGZhdm9yYWJsZSBwcm9jZXNzaW5nIHJlcXVpcmVtZW50cyBidXQgZ2VuZXJhbGx5IHVuZmF2b3JhYmxlIG1lbW9yeSB1c2FnZS4gQWxnb3JpdGhtcyBlbXBsb3lpbmcgTElGTywgRklGTywgb3IgbWVtb3J5IG9yZGVyZWQgZnJlZSBsaXN0cyBnZW5lcmFsbHkgcGVyZm9ybWVkIHBvb3JseSBjb21wYXJlZCB3aXRoIG90aGVycy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJTdGFuZm9yZCBSZXMuIEluc3QuLCBNZW5sbyBQYXJrLCBDQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFsZ29yaXRobXM7IGNvbXB1dGVyIG9wZXJhdGluZyBzeXN0ZW1zIC0tLSBTdG9yYWdlIEFsbG9jYXRpb247IGNvbXB1dGVyIHNpbXVsYXRpb247IGRpZ2l0YWwgc2ltdWxhdGlvbjsgZHluYW1pYyBtZW1vcnkgYWxsb2NhdGlvbjsgZXh0ZXJuYWwgbWVtb3J5OyBmcmFnbWVudGF0aW9uOyBtZW1vcnkgdXNhZ2U7IHBlcmZvcm1hbmNlOyBwcm9jZXNzaW5nIHRpbWU7IHN0b3JhZ2UgYWxsb2NhdGlvbiIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0JsYXNnZW46MTk3NzpFTU0sCiAgYXV0aG9yID0gICAgICAgIk1pY2hhZWwgVy4gQmxhc2dlbiBhbmQgUmljaGFyZCBHLiBDYXNleSBhbmQgS2FwYWxpIFAuIEVzd2FyYW4iLAogIHRpdGxlID0gICAgICAgICJBbiBFbmNvZGluZyBNZXRob2QgZm9yIE11bHRpZmllbGQgU29ydGluZyBhbmQgSW5kZXhpbmciLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjAiLAogIG51bWJlciA9ICAgICAgICIxMSIsCiAgcGFnZXMgPSAgICAgICAgIjg3NC0tODc4IiwKICBtb250aCA9ICAgICAgICBub3YsCiAgeWVhciA9ICAgICAgICAgIjE5NzciLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0RhdGFiYXNlL1dpZWRlcmhvbGQuYmliIiwKICBub3RlID0gICAgICAgICAiQWxzbyBwdWJsaXNoZWQgaW4vYXM6IElCTSwgUmVzLlIuLCBSSiAxNzUzLCBJQk0gU2FuIEpvc2UsIFJlcy5MYWIsIE1hci4xOTc2LiIsCiAgYWJzdHJhY3QgPSAgICAgIlRoZSBlZmZpY2llbnQgcmV0cmlldmFsIGZyb20gYSBkYXRhYmFzZSBvZiByZWNvcmRzIHRoYXQgc2F0aXNmeSBhbiBleHByZXNzaW9uIGludm9sdmluZyBtb3JlIHRoYW4gb25lIGRhdGEgZmllbGQgaXMgZXhhbWluZWQuIFNlcXVlbmNlcyBvZiBjaGFyYWN0ZXIgc3RyaW5ncyB3aXRoIGFuIG9yZGVyIHJlbGF0aW9uIGltcG9zZWQgYmV0d2VlbiBzZXF1ZW5jZXMgYXJlIGNvbnNpZGVyZWQuIEFuIGVuY29kaW5nIHNjaGVtZSBpcyBkZXNjcmliZWQgd2hpY2ggcHJvZHVjZXMgYSBzaW5nbGUsIG9yZGVyLXByZXNlcnZpbmcgc3RyaW5nIGZyb20gYSBzZXF1ZW5jZSBvZiBzdHJpbmdzLiBUaGUgb3JpZ2luYWwgc2VxdWVuY2UgY2FuIGJlIHJlY292ZXJlZCBmcm9tIHRoZSBlbmNvZGVkIHN0cmluZywgYW5kIG9uZSBzZXF1ZW5jZSBvZiBzdHJpbmdzIHByZWNlZGVzIGFub3RoZXIgaWYgYW5kIG9ubHkgaWYgdGhlIGVuY29kaW5nIG9mIHRoZSBmaXJzdCBwcmVjZWRlcyB0aGUgZW5jb2Rpbmcgb2YgdGhlIHNlY29uZC4gVGhlIHN0cmluZ3MgbWF5IGJlIHZhcmlhYmxlIGxlbmd0aCwgd2l0aG91dCBhIG1heGltdW0gbGVuZ3RoIHJlc3RyaWN0aW9uLCBhbmQgbm8gc3ltYm9scyBuZWVkIGJlIHJlc2VydmVkIGZvciBjb250cm9sIHB1cnBvc2VzLiBIZW5jZSBhbnkgc3ltYm9sIG1heSBvY2N1ciBpbiBhbnkgc3RyaW5nLiBUaGUgc2NoZW1lIGlzIHVzZWZ1bCBmb3IgbXVsdGlmaWVsZCBzb3J0aW5nLCBtdWx0aWZpZWxkIGluZGV4aW5nLCBhbmQgb3RoZXIgYXBwbGljYXRpb25zIHdoZXJlIG9yZGVyaW5nIG9uIG1vcmUgdGhhbiBvbmUgZmllbGQgaXMgaW1wb3J0YW50LiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgYW5ub3RlID0gICAgICAgIkNvZGluZyBmb3IgU1lTVEVNIFIgbXVsdGktZmllbGQgaW5kZXhlcy4iLAogIGNsYXNzY29kZXMgPSAgICJDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiSUJNIFJlcy4gTGFiLiwgU2FuIEpvc2UsIENBLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY2hhcmFjdGVyOyBjb2Rlcywgc3ltYm9saWM7IGVuY29kaW5nIG1ldGhvZDsgaW5kZXhpbmc7IGluZm9ybWF0aW9uIHNjaWVuY2UgLS0tIEluZm9ybWF0aW9uIFJldHJpZXZhbDsgbXVsdGlmaWVsZCBzb3J0aW5nOyBvcmRlciByZWxhdGlvbjsgc29ydGluZzsgc3RyaW5ncyIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0dyYXBhOjE5Nzc6U1RBLAogIGF1dGhvciA9ICAgICAgICJFbnJpcXVlIEdyYXBhIGFuZCBHZW5ldmEgRy4gQmVsZm9yZCIsCiAgdGl0bGUgPSAgICAgICAgIlNvbWUgVGhlb3JlbXMgdG8gQWlkIGluIFNvbHZpbmcgdGhlIEZpbGUgQWxsb2NhdGlvbiBQcm9ibGVtIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIwIiwKICBudW1iZXIgPSAgICAgICAiMTEiLAogIHBhZ2VzID0gICAgICAgICI4NzgtLTg4MiIsCiAgbW9udGggPSAgICAgICAgbm92LAogIHllYXIgPSAgICAgICAgICIxOTc3IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjhBNTAiLAogIE1SbnVtYmVyID0gICAgICI1NyA0NzA1IiwKICBtcnJldmlld2VyID0gICAiV2l0b2xkIExpcHNraSIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0RhdGFiYXNlL1dpZWRlcmhvbGQuYmliIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzAzMTAgKEVEUCBtYW5hZ2VtZW50KTsgQzU2MjAgKENvbXB1dGVyIG5ldHdvcmtzIGFuZCB0ZWNobmlxdWVzKTsgQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIG9mIElsbGlub2lzLCBVcmJhbmEsIElMLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBuZXR3b3JrczsgY29waWVzOyBEUCBtYW5hZ2VtZW50OyBmaWxlIGFsbG9jYXRpb24gcHJvYmxlbTsgbmV0d29yayBzaXRlczsgc3RvcmFnZSBhbGxvY2F0aW9uOyB0aGVvcmVtcyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7TG9wZXo6MTk3NzpTQ1MsCiAgYXV0aG9yID0gICAgICAgIkEuIEEuIExvcGV6IGFuZCBSLiBSYXltb25kIGFuZCBSLiBUYXJkaWZmIiwKICB0aXRsZSA9ICAgICAgICAiQSBzdXJ2ZXkgb2YgY29tcHV0ZXIgc2NpZW5jZSBvZmZlcmluZ3MgaW4gc21hbGwgbGliZXJhbCBhcnRzIGNvbGxlZ2VzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIwIiwKICBudW1iZXIgPSAgICAgICAiMTIiLAogIHBhZ2VzID0gICAgICAgICI5MDItLTkwNiIsCiAgbW9udGggPSAgICAgICAgZGVjLAogIHllYXIgPSAgICAgICAgICIxOTc3IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMwMjIwIChDb21wdXRpbmcgZWR1Y2F0aW9uIGFuZCB0cmFpbmluZykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBvZiBNaW5ub3NvdGEsIE1vcnJpcywgTU4sIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIHNjaWVuY2U7IGNvbXB1dGVyIHNjaWVuY2UgZWR1Y2F0aW9uOyBjdXJyaWN1bGFyOyBkZXZlbG9wbWVudDsgcHJvZ3JhbW1pbmcgY291cnNlczsgc21hbGwgbGliZXJhbCBhcnRzIGNvbGxlZ2VzIiwKICB0cmVhdG1lbnQgPSAgICAiRyBHZW5lcmFsIFJldmlldyIsCn0KCkBBcnRpY2xle0tlc3NlbHM6MTk3NzpDRk4sCiAgYXV0aG9yID0gICAgICAgIkouIEwuIFcuIEtlc3NlbHMiLAogIHRpdGxlID0gICAgICAgICJBIENvbmNlcHR1YWwgRnJhbWV3b3JrIGZvciBhIE5vbnByb2NlZHVyYWwgUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjAiLAogIG51bWJlciA9ICAgICAgICIxMiIsCiAgcGFnZXMgPSAgICAgICAgIjkwNi0tOTEzIiwKICBtb250aCA9ICAgICAgICBkZWMsCiAgeWVhciA9ICAgICAgICAgIjE5NzciLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L1BhcmFsbGVsL011bHRpLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIkEgc2VxdWVudGlhbCBwcm9ncmFtbWluZyBsYW5ndWFnZSBmb3JjZXMgdGhlIHByb2dyYW1tZXIgdG8gcHJlc2NyaWJlIGV4cGxpY2l0bHkgdGhlIG9yZGVyIGluIHdoaWNoIHRoZSBvcGVyYXRpb25zIGluIGhpcyBwcm9ncmFtIGhhdmUgdG8gYmUgZXhlY3V0ZWQsIGV2ZW4gaWYgdGhlIG9yZGVyIGlzIG5vdCByZWxldmFudCB0byB0aGUgc29sdXRpb24gb2YgaGlzIHByb2JsZW0uIFRoZSByZXF1aXJlbWVudCB0byBpbmRpY2F0ZSBpcnJlbGV2YW50IHNlcXVlbmNpbmcgY2FuIGJlIHJlbW92ZWQgaWYgdGhlIGxhbmd1YWdlIHByb3ZpZGVzIGZhY2lsaXRpZXMgZm9yIHNwZWNpZnlpbmcgYSB0YXNrIGluIGEgbm9ucHJvY2VkdXJhbCBtYW5uZXIuIEluIGdlbmVyYWwsIGEgcHJvZ3JhbSBzcGVjaWZpZWQgaW4gdGhpcyB3YXkgd2lsbCBhbGxvdyBjb25jdXJyZW50IGV2YWx1YXRpb24uIEEgY29uY2VwdHVhbCBmcmFtZXdvcmsgZm9yIGEgaGlnaCBsZXZlbCBwcm9ncmFtbWluZyBsYW5ndWFnZSBpcyBkZXNjcmliZWQgcHJvdmlkaW5nIGJvdGggbm9ucHJvY2VkdXJhbCBhbmQgc2VxdWVudGlhbCBmYWNpbGl0aWVzLiBXaXRoaW4gYSBwcm9ncmFtLCBub25wcm9jZWR1cmFsIGFuZCBzZXF1ZW50aWFsIHByb2dyYW0gbW9kdWxlcyBtYXkgYmUgbmVzdGVkIGZyZWVseS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDI0MCAoUHJvZ3JhbW1pbmcgYW5kIGFsZ29yaXRobSB0aGVvcnkpOyBDNjE0MEQgKEhpZ2ggbGV2ZWwgbGFuZ3VhZ2VzKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiUGhpbGlwcyBSZXMuIExhYnMuLCBFaW5kaG92ZW4sIE5ldGhlcmxhbmRzIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIHByb2dyYW1taW5nIGxhbmd1YWdlczsgY29uY2VwdHVhbCBmcmFtZXdvcms7IGNvbmN1cnJlbnQ7IG5vbnByb2NlZHVyYWwgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2U7IHBhcmFsbGVsOyBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IHNlcXVlbnRpYWwiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0NhcnRlcjoxOTc3OkNTTiwKICBhdXRob3IgPSAgICAgICAiSi4gTGF3cmVuY2UgQ2FydGVyIiwKICB0aXRsZSA9ICAgICAgICAiQSBDYXNlIFN0dWR5IG9mIGEgTmV3IENvZGUgR2VuZXJhdGlvbiBUZWNobmlxdWUgZm9yIENvbXBpbGVycyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMCIsCiAgbnVtYmVyID0gICAgICAgIjEyIiwKICBwYWdlcyA9ICAgICAgICAiOTE0LS05MjAiLAogIG1vbnRoID0gICAgICAgIGRlYywKICB5ZWFyID0gICAgICAgICAiMTk3NyIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvQ29tcGlsZXIvY29tcGlsZXIuYmliIGFuZCBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0NvbXBpbGVyL3NlbWFudGljcy5iaWIiLAogIGFic3RyYWN0ID0gICAgICJSZWNlbnQgZGV2ZWxvcG1lbnRzIGluIG9wdGltaXppbmcgdGVjaG5pcXVlcyBoYXZlIGFsbG93ZWQgYSBuZXcgZGVzaWduIGZvciBjb21waWxlcnMgdG8gZW1lcmdlLiBTdWNoIGEgY29tcGlsZXIgdHJhbnNsYXRlcyB0aGUgcGFyc2VkIHNvdXJjZSBjb2RlIGludG8gbG93ZXIgbGV2ZWwgY29kZSBieSBhIHNlcXVlbmNlIG9mIHN0ZXBzLiBFYWNoIHN0ZXAgZXhwYW5kcyBoaWdoZXIgbGV2ZWwgc3RhdGVtZW50cyBpbnRvIGJsb2NrcyBvZiBsb3dlciBsZXZlbCBjb2RlIGFuZCB0aGVuIHBlcmZvcm1zIG9wdGltaXphdGlvbnMgb24gdGhlIHJlc3VsdC4gRXZpZGVuY2UgaXMgcHJvdmlkZWQgdGhhdCB0aGlzIHN0cmF0ZWd5IGNhbiBpbmRlZWQgcmVzdWx0IGluIGdvb2Qgb2JqZWN0IGNvZGUuIFRoZSB0cmFkaXRpb25hbGx5IGRpZmZpY3VsdCBQTC9JIGNvbmNhdGVuYXRlIHN0YXRlbWVudCB3YXMgaW52ZXN0aWdhdGVkIGFzIGEgZGV0YWlsZWQgZXhhbXBsZS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGFubm90ZSA9ICAgICAgICJEZXNjcmliZXMgYSB1bmlmaWVkIHN5c3RlbSB3aGljaCBjYW4gaGFuZGxlIGJvdGggaW50ZXJwcmV0YXRpb24gYW5kIGNvbXBpbGF0aW9uLiIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTUwQyAoQ29tcGlsZXJzLCBpbnRlcnByZXRlcnMgYW5kIG90aGVyIHByb2Nlc3NvcnMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJJQk0gVGhvbWFzIEouIFdhdHNvbiBSZXMuIENlbnRlciwgWW9ya3Rvd24gSGVpZ2h0cywgTlksIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjYXNlIHN0dWR5OyBjb2RlIGdlbmVyYXRpb24gdGVjaG5pcXVlOyBjb2Rlcywgc3ltYm9saWM7IGNvbXBpbGVyczsgY29tcHV0ZXIgb3BlcmF0aW5nIHN5c3RlbXM7IHByb2dyYW0gY29tcGlsZXJzIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtHcmllczoxOTc3OkVQUCwKICBhdXRob3IgPSAgICAgICAiRGF2aWQgR3JpZXMiLAogIHRpdGxlID0gICAgICAgICJBbiBFeGVyY2lzZSBpbiBQcm92aW5nIFBhcmFsbGVsIFByb2dyYW1zIENvcnJlY3QiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjAiLAogIG51bWJlciA9ICAgICAgICIxMiIsCiAgcGFnZXMgPSAgICAgICAgIjkyMS0tOTMwIiwKICBtb250aCA9ICAgICAgICBkZWMsCiAgeWVhciA9ICAgICAgICAgIjE5NzciLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2OEEwNSIsCiAgTVJudW1iZXIgPSAgICAgIjU4IDM2MTUiLAogIG1ycmV2aWV3ZXIgPSAgICJBbmRyemVqIEJsaWtsZSIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0NvbXBpbGVyL2dhcmJhZ2UuY29sbGVjdGlvbi5iaWIiLAogIG5vdGUgPSAgICAgICAgICJTZWUgY29ycmlnZW5kdW0gXGNpdGV7R3JpZXM6MTk3ODpDRVB9LiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MjQwIChQcm9ncmFtbWluZyBhbmQgYWxnb3JpdGhtIHRoZW9yeSkiLAogIGNvcnBzb3VyY2UgPSAgICJDb3JuZWxsIFVuaXYuLCBJdGhhY2EsIE5ZLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJjb3JyZWN0OyBnYXJiYWdlIGNvbGxlY3RvcjsgcGFyYWxsZWwgcHJvY2Vzc2luZzsgcGFyYWxsZWwgcHJvZ3JhbXM7IHByb2dyYW1taW5nIHRoZW9yeTsgcHJvdmluZzsgc3RvcmFnZSBtYW5hZ2VtZW50IiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtHcmllZjoxOTc3OkxGUCwKICBhdXRob3IgPSAgICAgICAiSXJlbmUgR3JpZWYiLAogIHRpdGxlID0gICAgICAgICJBIGxhbmd1YWdlIGZvciBmb3JtYWwgcHJvYmxlbSBzcGVjaWZpY2F0aW9uIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIwIiwKICBudW1iZXIgPSAgICAgICAiMTIiLAogIHBhZ2VzID0gICAgICAgICI5MzEtLTkzNSIsCiAgbW9udGggPSAgICAgICAgZGVjLAogIHllYXIgPSAgICAgICAgICIxOTc3IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkEgbGFuZ3VhZ2UgZm9yIHNwZWNpZnlpbmcgdGhlIGludGVuZGVkIGJlaGF2aW9yIG9mIGNvbW11bmljYXRpbmcgcGFyYWxsZWwgcHJvY2Vzc2VzIGlzIGRlc2NyaWJlZC4gVGhlIHNwZWNpZmljYXRpb25zIGFyZSBjb25zdHJhaW50cyBvbiB0aGUgb3JkZXIgaW4gd2hpY2ggZXZlbnRzIG9mIGEgY29tcHV0YXRpb24gY2FuIG9jY3VyLiBUaGUgbGFuZ3VhZ2UgaXMgdXNlZCB0byB3cml0ZSBzcGVjaWZpY2F0aW9ucyBvZiB0aGUgcmVhZGVyc1xzbGFzaCB3cml0ZXJzIHByb2JsZW0gYW5kIHRoZSB3cml0ZXIgcHJpb3JpdHkgb2YgdGhlIHNlY29uZCByZWFkZXJzXHNsYXNoIHdyaXRlcnMgcHJvYmxlbS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDIxMCAoRm9ybWFsIGxvZ2ljKTsgQzQyNDAgKFByb2dyYW1taW5nIGFuZCBhbGdvcml0aG0gdGhlb3J5KSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gb2YgV2FzaGluZ3RvbiwgU2VhdHRsZSwgV0EsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21tdW5pY2F0aW5nOyBjb21wdXRlciBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IGNvbnN0cmFpbnRzOyBmb3JtYWwgbGFuZ3VhZ2VzOyBmb3JtYWwgcHJvYmxlbSBzcGVjaWZpY2F0aW9uOyBsYW5ndWFnZTsgcGFyYWxsZWwgcHJvY2Vzc2VzOyBwYXJhbGxlbCBwcm9jZXNzaW5nOyByZWFkZXJzL3dyaXRlcnMgcHJvYmxlbTsgd3JpdGVyIHByaW9yaXR5IiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAogIHh4YXV0aG9yID0gICAgICJJcmVuZSBHcmVpZiIsCn0KCkBBcnRpY2xle0FicmFtczoxOTc3Ok1JQywKICBhdXRob3IgPSAgICAgICAiTWFyc2hhbGwgRC4gQWJyYW1zIGFuZCBTaWVnZnJpZWQgVHJldSIsCiAgdGl0bGUgPSAgICAgICAgIkEgTWV0aG9kb2xvZ3kgZm9yIEludGVyYWN0aXZlIENvbXB1dGVyIFNlcnZpY2UgTWVhc3VyZW1lbnQiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjAiLAogIG51bWJlciA9ICAgICAgICIxMiIsCiAgcGFnZXMgPSAgICAgICAgIjkzNi0tOTQ0IiwKICBtb250aCA9ICAgICAgICBkZWMsCiAgeWVhciA9ICAgICAgICAgIjE5NzciLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0Rpc3RyaWJ1dGVkL1FMRC8xOTc3LmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIkEgbWVhc3VyZW1lbnQgbWV0aG9kb2xvZ3kgYXBwbGljYWJsZSB0byBpbiB0ZXJhY3RpdmUgY29tcHV0ZXIgc2VydmljZSBpcyBkZXNjcmliZWQuIEl0cyBwcmltYXJ5IHB1cnBvc2UgaXMgdG8gZW5hYmxlIGV4dGVybmFsLCB1c2VyLW9yaWVudGVkIGFzc2Vzc21lbnQgb2YgY29tcHV0ZXIgcGVyZm9ybWFuY2UsIGluc3RlYWQgb2YgdGhlIG1vcmUgZnJlcXVlbnRseSB1c2VkIGluIHRlcm5hbCBzeXN0ZW0gbWVhc3VyZW1lbnQgdGVjaG5pcXVlcy4gXHBhciBUaGUgTkJTIE5ldHdvcmsgTWVhc3VyZW1lbnQgU3lzdGVtIGlzIGVtcGxveWVkIGFzIHRoZSBleHRlcm5hbCBtZWFzdXJlbWVudCB0b29sLiBFeGFtcGxlIGRhdGEgaGF2ZSBiZWVuIGNvbGxlY3RlZCBhbmQgYW5hbHl6ZWQuIEEgZGVtb25zdHJhdGlvbiBvZiB0aGUgbWV0aG9kb2xvZ3ksIGxlYWRpbmcgdG8gYSBwcmFnbWF0aWMgZmlndXJlLW9mLW1lcml0IGV2YWx1YXRpb24gb2YgcmVzdWx0cywgaXMgaW5jbHVkZWQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBhbm5vdGUgPSAgICAgICAiQSBtZWFzdXJlbWVudCBtZXRob2RvbG9neSBhcHBsaWNhYmxlIHRvIGludGVyYWN0aXZlIGNvbXB1dGVyIHNlcnZpY2UgaXMgZGVzY3JpYmVkLiBJdHMgcHJpbWFyeSBwdXJwb3NlIGlzIHRvIGVuYWJsZSBleHRlcm5hbCwgdXNlci1vcmllbnRlZCBhc3Nlc3NtZW50IG9mIGNvbXB1dGVyIHBlcmZvcm1hbmNlLCBpbnN0ZWFkIG9mIHRoZSBtb3JlIGZyZXF1ZW50bHkgdXNlZCBpbnRlcm5hbCBzeXN0ZW0gbWVhc3VyZW1lbnQgdGVjaG5pcXVlcy4gVGhlIE5CUyBOZXR3b3JrIE1lYXN1cmVtZW50IFN5c3RlbSBpcyBlbXBsb3llZCBhcyB0aGUgZXh0ZXJuYWwgbWVhc3VyZW1lbnQgdG9vbC4gRXhhbXBsZSBkYXRhIGhhdmUgYmVlbiBjb2xsZWN0ZWQgYW5kIGFuYWx5emVkLiBBIGRlbW9uc3RyYXRpb24gb2YgdGhlIG1ldGhvZG9sb2d5LCBsZWFkaW5nIHRvIGEgcHJhZ21hdGljIGZpZ3VyZS1vZlxsZG90cy4iLAogIGNsYXNzY29kZXMgPSAgICJDNjE1MEcgKERpYWdub3N0aWMsIHRlc3RpbmcsIGRlYnVnZ2luZyBhbmQgZXZhbHVhdGluZyBzeXN0ZW1zKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIyOyA3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJOYXQuIEJ1ci4gb2YgU3RhbmQuLCBXYXNoaW5ndG9uLCBEQywgVVNBIiwKICBjb3VudHJ5ID0gICAgICAiVVNBIiwKICBkZXNjcmlwdG9ycyA9ICAiTWFuLW1hY2hpbmUgaW50ZXJhY3Rpb247IHBlcmZvcm1hbmNlIG1lYXN1cmU7IG1lYXN1cmVtZW50OyBtZXRob2Q7IHN1cnZleTsiLAogIGVudW0gPSAgICAgICAgICI1IiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIHNlbGVjdGlvbiBhbmQgZXZhbHVhdGlvbjsgY29tcHV0ZXIgc2VydmljZTsgY29tcHV0ZXIgc3lzdGVtcywgZGlnaXRhbDsgZXh0ZXJuYWw7IGV4dGVybmFsIG1lYXN1cmVtZW50OyBmaWd1cmUtb2YtbWVyaXQuOyBpbiB0ZXJhY3RpdmUgc3lzdGVtOyBpbnRlcmFjdGl2ZTsgaW50ZXJhY3RpdmUgY29tcHV0ZXIgc3lzdGVtczsgbWVhc3VyZW1lbnQ7IG1lYXN1cmVtZW50IG1vZGVsOyBtZWFzdXJlczsgbWV0aG9kb2xvZ3k7IG5ldHdvcmsgbWVhc3VyZW1lbnQgc3lzdGVtOyBwZXJmb3JtYW5jZSIsCiAgbGFuZ3VhZ2UgPSAgICAgIkVuZ2xpc2giLAogIHJlZmVyZW5jZXMgPSAgICIyNCIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7RGFuemlnZXI6MTk3NzpDSUEsCiAgYXV0aG9yID0gICAgICAgIkouIE4uIERhbnppZ2VyIGFuZCBXLiBILiBEdXR0b24iLAogIHRpdGxlID0gICAgICAgICJDb21wdXRlcnMgYXMgYW4gaW5ub3ZhdGlvbiBpbiB7QW1lcmljYW59IGxvY2FsIGdvdmVybm1lbnRzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIwIiwKICBudW1iZXIgPSAgICAgICAiMTIiLAogIHBhZ2VzID0gICAgICAgICI5NDUtLTk1NiIsCiAgbW9udGggPSAgICAgICAgZGVjLAogIHllYXIgPSAgICAgICAgICIxOTc3IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMwMjMwIChFY29ub21pYywgc29jaWFsIGFuZCBwb2xpdGljYWwgYXNwZWN0cyBvZiBjb21wdXRpbmcpOyBDNzEzMCAoUHVibGljIGFkbWluaXN0cmF0aW9uKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIG9mIENhbGlmb3JuaWEsIElydmluZSwgQ0EsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgIkFtZXJpY2FuIGxvY2FsIGdvdmVybm1lbnRzOyBhcHBsaWNhdGlvbnM7IGNvbXB1dGVyIHRlY2hub2xvZ3k7IEVEUDsgZmluYW5jaWFsIHN1cHBvcnQ7IGdvdmVybm1lbnQgZGF0YSBwcm9jZXNzaW5nOyBpbm5vdmF0aW9uOyBzb2NpYWwgYXNwZWN0cyBvZiBhdXRvbWF0aW9uIiwKICB0cmVhdG1lbnQgPSAgICAiRyBHZW5lcmFsIFJldmlldyIsCn0KCkBBcnRpY2xle1N1bW1lcnM6MTk3NzpNTFAsCiAgYXV0aG9yID0gICAgICAgIlAuIEQuIFN1bW1lcnMiLAogIHRpdGxlID0gICAgICAgICJBIE1ldGhvZG9sb2d5IGZvciB7TElTUH0gUHJvZ3JhbSBDb25zdHJ1Y3Rpb24gZnJvbSBFeGFtcGxlcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyNCIsCiAgbnVtYmVyID0gICAgICAgIjEiLAogIHBhZ2VzID0gICAgICAgICIxNjEtLTE3NSIsCiAgbW9udGggPSAgICAgICAgamFuLAogIHllYXIgPSAgICAgICAgICIxOTc3IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJzb3VyY2UgPSAgICAiZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9BaS9saXNwLmJpYiIsCiAga2V5d29yZHMgPSAgICAgIkxJU1AiLAp9CgpAQXJ0aWNsZXtMYXZpbmd0b246MTk3ODpNTUEsCiAgYXV0aG9yID0gICAgICAgIlMuIEguIExhdmluZ3RvbiIsCiAgdGl0bGUgPSAgICAgICAgIlRoZSB7TWFuY2hlc3RlciBNYXJrIEl9IGFuZCB7QXRsYXN9OiBhIGhpc3RvcmljYWwgcGVyc3BlY3RpdmUiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjEiLAogIG51bWJlciA9ICAgICAgICIxIiwKICBwYWdlcyA9ICAgICAgICAiNC0tMTIiLAogIG1vbnRoID0gICAgICAgIGphbiwKICB5ZWFyID0gICAgICAgICAiMTk3OCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNTIyMCAoQ29tcHV0ZXIgYXJjaGl0ZWN0dXJlKTsgQzYxNTBKIChPcGVyYXRpbmcgc3lzdGVtcykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBvZiBNYW5jaGVzdGVyLCBNYW5jaGVzdGVyLCBVSyIsCiAga2V5d29yZHMgPSAgICAgIihjb21wdXRlcnMpOyBhZGRyZXNzIGdlbmVyYXRpb247IGNvbXB1dGVyIGFyY2hpdGVjdHVyZTsgY29tcHV0ZXIgc29mdHdhcmU7IG9wZXJhdGluZyBzeXN0ZW1zOyBzdG9yZSBtYW5hZ2VtZW50IiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtJYmJldHQ6MTk3ODpETUMsCiAgYXV0aG9yID0gICAgICAgIlIuIE4uIEliYmV0dCBhbmQgUC4gQy4gQ2Fwb24iLAogIHRpdGxlID0gICAgICAgICJUaGUgZGV2ZWxvcG1lbnQgb2YgdGhlIHtNVTV9IGNvbXB1dGVyIHN5c3RlbSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMSIsCiAgbnVtYmVyID0gICAgICAgIjEiLAogIHBhZ2VzID0gICAgICAgICIxMy0tMjQiLAogIG1vbnRoID0gICAgICAgIGphbiwKICB5ZWFyID0gICAgICAgICAiMTk3OCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJGb2xsb3dpbmcgYSBicmllZiBvdXRsaW5lIG9mIHRoZSBiYWNrZ3JvdW5kIG9mIHRoZSBNVTUgcHJvamVjdCwgdGhlIGFpbXMgYW5kIGlkZWFzIGZvciBNVTUgYXJlIGRpc2N1c3NlZC4gQSBkZXNjcmlwdGlvbiBpcyB0aGVuIGdpdmVuIG9mIHRoZSBpbnN0cnVjdGlvbiBzZXQsIHdoaWNoIGluY2x1ZGVzIGEgbnVtYmVyIG9mIGZlYXR1cmVzIGNvbmR1Y2l2ZSB0byB0aGUgcHJvZHVjdGlvbiBvZiBlZmZpY2llbnQgY29tcGlsZWQgY29kZSBmcm9tIGhpZ2gtbGV2ZWwgbGFuZ3VhZ2Ugc291cmNlIHByb2dyYW1zLiBUaGUgZGVzaWduIG9mIHRoZSBwcm9jZXNzb3IgaXMgdGhlbiB0cmFjZWQgZnJvbSB0aGUgaW5pdGlhbCBpZGVhcyBmb3IgYW4gYXNzb2NpYXRpdmVseSBhZGRyZXNzZWQgYGBuYW1lIHN0b3JlJycgdG8gdGhlIGZpbmFsIG11bHRpc3RhZ2UgcGlwZWxpbmUgc3RydWN0dXJlIGludm9sdmluZyBhIHByZWRpY3Rpb24gbWVjaGFuaXNtIGZvciBpbnN0cnVjdGlvbiBwcmVmZXRjaGluZyBhbmQgYSBmdW5jdGlvbiBxdWV1ZSBmb3IgYXJyYXkgZWxlbWVudCBhY2Nlc3NpbmcuIEFuIG92ZXJhbGwgdmlldyBvZiB0aGUgY29tcGxldGUgTVU1IGNvbXBsZXggaXMgcHJlc2VudGVkIHRvZ2V0aGVyIHdpdGggYSBicmllZiBpbmRpY2F0aW9uIG9mIGl0cyBwZXJmb3JtYW5jZS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNTIyMCAoQ29tcHV0ZXIgYXJjaGl0ZWN0dXJlKTsgQzU0MjAgKE1haW5mcmFtZXMgYW5kIG1pbmljb21wdXRlcnMpOyBDNjE1MEogKE9wZXJhdGluZyBzeXN0ZW1zKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIyOyA3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBvZiBNYW5jaGVzdGVyLCBNYW5jaGVzdGVyLCBVSyIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhcmNoaXRlY3R1cmU7IGNvZGU7IGNvbXB1dGVyOyBjb21wdXRlciBhcmNoaXRlY3R1cmU7IGNvbXB1dGVyIHN5c3RlbXMsIGRpZ2l0YWw7IGZ1bmN0aW9uIHF1ZXVlOyBpbnN0cnVjdGlvbiBwcmVmZXRjaGluZzsgaW5zdHJ1Y3Rpb24gc2V0OyBNVTU7IG5hbWUgc3RvcmU7IG9wZXJhdGluZyBzeXN0ZW1zIChjb21wdXRlcnMpOyBwaXBlbGluZSBwcm9jZXNzaW5nOyBwaXBlbGluZSBzdHJ1Y3R1cmUiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0JvcmdlcnNvbjoxOTc4OkVTVSwKICBhdXRob3IgPSAgICAgICAiQi4gUi4gQm9yZ2Vyc29uIGFuZCBNLiBMLiBIYW5zb24gYW5kIFAuIEEuIEhhcnRsZXkiLAogIHRpdGxlID0gICAgICAgICJFdm9sdXRpb24gb2YgdGhlIHtTcGVycnkgVW5pdmFjIDExMDAgU2VyaWVzfTogYSBIaXN0b3J5LCBBbmFseXNpcywgYW5kIFByb2plY3Rpb24iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjEiLAogIG51bWJlciA9ICAgICAgICIxIiwKICBwYWdlcyA9ICAgICAgICAiMjUtLTQzIiwKICBtb250aCA9ICAgICAgICBqYW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzgiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiVGhlIDExMDAgc2VyaWVzIHN5c3RlbXMgYXJlIFNwZXJyeSBVbml2YWMncyBsYXJnZS1zY2FsZSBtYWluZnJhbWUgY29tcHV0ZXIgc3lzdGVtcy4gQmVnaW5uaW5nIHdpdGggdGhlIDExMDcgaW4gMTk2MiwgdGhlIDExMDAgc2VyaWVzIGhhcyBwcm9ncmVzc2VkIHRocm91Z2ggYSBzdWNjZXNzaW9uIG9mIGVpZ2h0IGNvbXBhdGlibGUgY29tcHV0ZXIgbW9kZWxzIHRvIHRoZSBsYXRlc3Qgc3lzdGVtLCB0aGUgMTEwMFxzbGFzaCA4MCwgaW50cm9kdWNlZCBpbiAxOTc3LiBUaGUgMTEwMCBzZXJpZXMgaGFyZHdhcmUgYXJjaGl0ZWN0dXJlIGlzIGJhc2VkIG9uIGEgMzYtYml0IHdvcmQsIG9uZXMgY29tcGxlbWVudCBzdHJ1Y3R1cmUgd2hpY2ggb2J0YWlucyBvbmUgb3BlcmFuZCBmcm9tIHN0b3JhZ2UgYW5kIG9uZSBmcm9tIGEgaGlnaC1zcGVlZCByZWdpc3Rlciwgb3IgdHdvIG9wZXJhbmRzIGZyb20gaGlnaC1zcGVlZCByZWdpc3RlcnMuIFRoZSAxMTAwIE9wZXJhdGluZyBTeXN0ZW0gaXMgZGVzaWduZWQgdG8gc3VwcG9ydCBhIHN5bW1ldHJpY2FsIG11bHRpcHJvY2Vzc29yIGNvbmZpZ3VyYXRpb24gc2ltdWx0YW5lb3VzbHkgcHJvdmlkaW5nIG11bHRpcHJvZ3JhbW1lZCBiYXRjaCwgdGltZXNoYXJpbmcsIGFuZCB0cmFuc2FjdGlvbiBlbnZpcm9ubWVudHMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzUyMjAgKENvbXB1dGVyIGFyY2hpdGVjdHVyZSk7IEM1NDIwIChNYWluZnJhbWVzIGFuZCBtaW5pY29tcHV0ZXJzKTsgQzYxNTBKIChPcGVyYXRpbmcgc3lzdGVtcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMjsgNzIzIiwKICBjb3Jwc291cmNlID0gICAiU3BlcnJ5IFVuaXZhYywgQmx1ZSBCZWxsLCBQQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIGFyY2hpdGVjdHVyZTsgY29tcHV0ZXIgc3lzdGVtcywgZGlnaXRhbDsgaGFyZHdhcmUgYXJjaGl0ZWN0dXJlOyBtdWx0aXByb2Nlc3Npbmcgc3lzdGVtczsgb3BlcmF0aW5nOyBTcGVycnkgVW5pdmFjIDExMDAgc2VyaWVzOyBzeW1tZXRyaWNhbCBtdWx0aXByb2Nlc3NvciBjb25maWd1cmF0aW9uOyBzeXN0ZW1zIChjb21wdXRlcnMpIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtCZWxsOjE5Nzg6RUQsCiAgYXV0aG9yID0gICAgICAgIkMuIEcuIEJlbGwgYW5kIEEuIEtvdG9rIGFuZCBULiBOLiBIYXN0aW5ncyBhbmQgUi4gSGlsbCIsCiAgdGl0bGUgPSAgICAgICAgIlRoZSBFdm9sdXRpb24gb2YgdGhlIHtERUNzeXN0ZW0gMTB9IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIxIiwKICBudW1iZXIgPSAgICAgICAiMSIsCiAgcGFnZXMgPSAgICAgICAgIjQ0LS02MyIsCiAgbW9udGggPSAgICAgICAgamFuLAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlRoZSBERUNzeXN0ZW0gMTAsIGFsc28ga25vd24gYXMgdGhlIFBEUC0xMCwgZXZvbHZlZCBmcm9tIHRoZSBQRFAtNiAoY2lyY2EgMTk2Mykgb3ZlciBmaXZlIGdlbmVyYXRpb25zIG9mIGltcGxlbWVudGF0aW9ucyB0byBwcmVzZW50bHkgaW5jbHVkZSBzeXN0ZW1zIGNvdmVyaW5nIGEgcHJpY2UgcmFuZ2Ugb2YgZml2ZSB0byBvbmUuIFRoZSBvcmlnaW4gYW5kIGV2b2x1dGlvbiBvZiB0aGUgaGFyZHdhcmUsIG9wZXJhdGluZyBzeXN0ZW0sIGFuZCBsYW5ndWFnZXMgYXJlIGRlc2NyaWJlZCBpbiB0ZXJtcyBvZiB0ZWNobm9sb2dpY2FsIGNoYW5nZSwgdXNlciByZXF1aXJlbWVudHMsIGFuZCB1c2VyIGRldmVsb3BtZW50cy4gVGhlIFBEUC0xMCdzIGNvbnRyaWJ1dGlvbnMgdG8gY29tcHV0aW5nIHRlY2hub2xvZ3kgaW5jbHVkZTogYWNjZWxlcmF0aW5nIHRoZSB0cmFuc2l0aW9uIGZyb20gYmF0Y2ggb3JpZW50ZWQgdG8gdGltZSBzaGFyaW5nIGNvbXB1dGluZyBzeXN0ZW1zOyB0cmFuc2ZlcnJpbmcgaGFyZHdhcmUgdGVjaG5vbG9neSB3aXRoaW4gREVDIChhbmQgZWxzZXdoZXJlKSB0byBtaW5pY29tcHV0ZXIgZGVzaWduIGFuZCBtYW51ZmFjdHVyaW5nOyBzdXBwb3J0aW5nIG1pbmljb21wdXRlciBoYXJkd2FyZSBhbmQgc29mdHdhcmUgZGV2ZWxvcG1lbnQ7IGFuZCBzZXJ2aW5nIGFzIGEgbW9kZWwgZm9yIHNpbmdsZSB1c2VyIGFuZCB0aW1lc2hhcmVkIGludGVyYWN0aXZlIG1pbmljb21wdXRlclxzbGFzaCBtaWNyb2NvbXB1dGVyIHN5c3RlbXMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzUyMjAgKENvbXB1dGVyIGFyY2hpdGVjdHVyZSk7IEM1NDIwIChNYWluZnJhbWVzIGFuZCBtaW5pY29tcHV0ZXJzKTsgQzYxNTBKIChPcGVyYXRpbmcgc3lzdGVtcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMjsgNzIzIiwKICBjb3Jwc291cmNlID0gICAiRGlnaXRhbCBFcXVpcG1lbnQgQ29ycC4sIE1heW5hcmQsIE1BLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYXJjaGl0ZWN0dXJlOyBjb21wdXRlcjsgY29tcHV0ZXIgYXJjaGl0ZWN0dXJlOyBjb21wdXRlciBzeXN0ZW1zLCBkaWdpdGFsOyBERUNzeXN0ZW0gMTA7IG9wZXJhdGluZyBzeXN0ZW07IG9wZXJhdGluZyBzeXN0ZW1zIChjb21wdXRlcnMpOyBzaGFyaW5nIHN5c3RlbXM7IHRpbWUgc2hhcmluZzsgdGltZS0iLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle1J1c3NlbGw6MTk3ODpDQ1MsCiAgYXV0aG9yID0gICAgICAgIlJpY2hhcmQgTS4gUnVzc2VsbCIsCiAgdGl0bGUgPSAgICAgICAgIlRoZSB7Q1JBWS0xfSBDb21wdXRlciBTeXN0ZW0iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjEiLAogIG51bWJlciA9ICAgICAgICIxIiwKICBwYWdlcyA9ICAgICAgICAiNjMtLTcyIiwKICBtb250aCA9ICAgICAgICBqYW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzgiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L1BhcmFsbGVsL3Bhci5taXNjLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIlRoaXMgcGFwZXIgZGVzY3JpYmVzIHRoZSBDUkFZLTEsIGRpc2N1c3NlcyB0aGUgZXZvbHV0aW9uIG9mIGl0cyBhcmNoaXRlY3R1cmUsIGFuZCBnaXZlcyBhbiBhY2NvdW50IG9mIHNvbWUgb2YgdGhlIHByb2JsZW1zIHRoYXQgd2VyZSBvdmVyY29tZSBkdXJpbmcgaXRzIG1hbnVmYWN0dXJlLiBUaGUgQ1JBWS0xIGlzIHRoZSBvbmx5IGNvbXB1dGVyIHRvIGhhdmUgYmVlbiBidWlsdCB0byBkYXRlIHRoYXQgc2F0aXNmaWVzIEVSREEncyBDbGFzcyBWSSByZXF1aXJlbWVudCAoYSBjb21wdXRlciBjYXBhYmxlIG9mIHByb2Nlc3NpbmcgZnJvbSAyMCB0byA2MCBtaWxsaW9uIGZsb2F0aW5nIHBvaW50IG9wZXJhdGlvbnMgcGVyIHNlY29uZCkgWzFdLiBUaGUgQ1JBWS0xJ3MgRm9ydHJhbiBjb21waWxlciAoQ0ZUKSBpcyBkZXNpZ25lZCB0byBnaXZlIHRoZSBzY2llbnRpZmljIHVzZXIgaW1tZWRpYXRlIGFjY2VzcyB0byB0aGUgYmVuZWZpdHMgb2YgdGhlIENSQVktMSdzIHZlY3RvciBwcm9jZXNzaW5nIGFyY2hpdGVjdHVyZS4gQW4gb3B0aW1pemluZyBjb21waWxlciwgQ0ZULCBgYHZlY3Rvcml6ZXMnJyBpbm5lcm1vc3QgRE8gbG9vcHMuIENvbXBhdGlibGUgd2l0aCB0aGUgQU5TSSAxOTY2IEZvcnRyYW4gU3RhbmRhcmQgYW5kIHdpdGggbWFueSBjb21tb25seSBzdXBwb3J0ZWQgRm9ydHJhbiBleHRlbnNpb25zLCBDRlQgZG9lcyBub3QgcmVxdWlyZSBhbnkgc291cmNlIHByb2dyYW0gbW9kaWZpY2F0aW9ucyBvciB0aGUgdXNlIG9mIGFkZGl0aW9uYWwgbm9uc3RhbmRhcmQgRm9ydHJhbiBzdGF0ZW1lbnRzIHRvIGFjaGlldmUgdmVjdG9yaXphdGlvbi4gXHBhciBUaHVzIHRoZSB1c2VyJ3MgaW52ZXN0bWVudCBvZiBodW5kcmVkcyBvZiBtYW4gbW9udGhzIG9mIGVmZm9ydCB0byBkZXZlbG9wIEZvcnRyYW4gcHJvZ3JhbXMgZm9yIG90aGVyIGNvbnRlbXBvcmFyeSBjb21wdXRlcnMgaXMgcHJvdGVjdGVkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgYW5ub3RlID0gICAgICAgIlRoZSBvcmlnaW5hbCBwYXBlciBkZXNjcmliaW5nIHRoZSBDcmF5LTEuIFRoaXMgcGFwZXIgaXMgcmVwcm9kdWNlZCBpbiBLdWhuIGFuZCBQYWR1YSdzICgxOTgxLCBJRUVFKSBzdXJ2ZXkgYGBUdXRvcmlhbCBvbiBQYXJhbGxlbCBQcm9jZXNzaW5nLicnIEFsc28gcmVwcm9kdWNlZCBpbiBgYENvbXB1dGVyIFN0cnVjdHVyZXM6IFByaW5jaXBsZXMgYW5kIEV4YW1wbGVzJycgYnkgRGFuaWVsIFAuIFNpZXdpb3JlaywgQy4gR29yZG9uIEJlbGwsIGFuZCBBbGxlbiBOZXdlbGwsIE1jR3Jhdy1IaWxsLCAxOTgyLCBwcC4gNzQzLTc1Mi4gUmVwcm9kdWNlZCBpbiBEaGFybWEgUC4gQWdyYXdhbCdzIChlZC4pIGBgQWR2YW5jZWQgQ29tcHV0ZXIgQXJjaGl0ZWN0dXJlLCcnIElFRUUsIDE5ODYsIHBwLjE1LTI0LiBMaXRlcmF0dXJlIHNlYXJjaCB5aWVsZHM6IDAwNzEyMjQ4IEUuIEkuIE1vbnRobHkgTm86IEVJNzgwNDAyMzg1MCBFLiBJLiBZZWFybHkgTm86IEVJNzgwMTQ2MTIgVGl0bGU6IENyYXktMSBDb21wdXRlciBTeXN0ZW0uIEF1dGhvcjogUnVzc2VsbCwgUmljaGFyZCBNLiBDb3Jwb3JhdGUgU291cmNlOiBDcmF5IFJlcyBJbmMsIE1pbm5lYXBvbGlzLCBNaW5uIFNvdXJjZTogQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTSB2IDIxIG4gMSBKYW4gMTk3OCBwIDYzLS03MiBQdWJsaWNhdGlvbiBZZWFyOiAxOTc4IENPREVOOiBDQUNNQTIgSVNTTjogMDAwMS0wNzgyIExhbmd1YWdlOiBFTkdMSVNIIEpvdXJuYWwgQW5ub3VuY2VtZW50OiA3ODA0IEFic3RyYWN0OiBUaGUgQ1JBWS0xIGlzIGRlc2NyaWJlZCwgdGhlIGV2b2x1dGlvbiBvZiBpdHMgYXJjaGl0ZWN0dXJlIGlzIGRpc2N1c3NlZCwgYW5kIGFuIGFjY291bnQgaXMgZ2l2ZW4gb2Ygc29tZSBvZiB0aGUgcHJvYmxlbXMgdGhhdCB3ZXJlIG92ZXJjb21lIGR1cmluZyBpdHMgbWFudWZhY3R1cmUuIFRoZSBDUkFZLTEgaXMgdGhlIG9ubHkgY29tcHV0ZXIgdG8gaGF2ZSBiZWVuIGJ1aWx0IHRvIGRhdGUgdGhhdCBzYXRpc2ZpZXMgRVJEQSdzIENsYXNzIFZJIHJlcXVpcmVtZW50IChhIGNvbXB1dGVyIGNhcGFibGUgb2YgcHJvY2Vzc2luZyBmcm9tIDIwIHRvIDYwIG1pbGxpb24gZmxvYXRpbmcgcG9pbnQgb3BlcmF0aW9ucyBwZXIgc2Vjb25kKS4gVGhlIENSQVktMSdzIEZvcnRyYW4gY29tcGlsZXIgKENGVCkgaXMgZGVzaWduZWQgdG8gZ2l2ZSB0aGUgc2NpZW50aWZpYyB1c2VyIGltbWVkaWF0ZSBhY2Nlc3MgdG8gdGhlIGJlbmVmaXRzIG9mIHRoZSBDUkFZLTEncyB2ZWN0b3IgcHJvY2Vzc2luZyBhcmNoaXRlY3R1cmUuIEFuIG9wdGltaXppbmcgY29tcGlsZXIsIENGVCwgYGB2ZWN0b3JpemVzJycgaW5uZXJtb3N0IERPIGxvb3BzLiBDb21wYXRpYmxlIHdpdGggdGhlIEFOU0kgMTk2NiBGb3J0cmFuIFN0YW5kYXJkIGFuZCB3aXRoIG1hbnkgY29tbW9ubHkgc3VwcG9ydGVkIEZvcnRyYW4gZXh0ZW5zaW9ucywgQ0ZUIGRvZXMgbm90IHJlcXVpcmUgYW55IHNvdXJjZSBwcm9ncmFtIG1vZGlmaWNhdGlvbnMgb3IgdGhlIHVzZSBvZiBhZGRpdGlvbmFsIG5vbnN0YW5kYXJkIEZvcnRyYW4gc3RhdGVtZW50cyB0byBhY2hpZXZlIHZlY3Rvcml6YXRpb24uIDYgcmVmcy4gRGVzY3JpcHRvcnM6ICpDT01QVVRFUiBBUkNISVRFQ1RVUkU7IENPTVBVVEVSIFNZU1RFTVMsIERJR0lUQUwgQ2xhc3NpZmljYXRpb24gQ29kZXM6IDcyMiAoQ29tcHV0ZXIgSGFyZHdhcmUpOyA3MjMgKENvbXB1dGVyIFNvZnR3YXJlKSA3MiAoQ09NUFVURVJTIFwmIERBVEEgUFJPQ0VTU0lORykiLAogIGNsYXNzY29kZXMgPSAgICJDNTIyMCAoQ29tcHV0ZXIgYXJjaGl0ZWN0dXJlKTsgQzU0MjAgKE1haW5mcmFtZXMgYW5kIG1pbmljb21wdXRlcnMpOyBDNjE1MEogKE9wZXJhdGluZyBzeXN0ZW1zKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIyOyA3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJDcmF5IFJlcy4gSW5jLiwgTWlubmVhcG9saXMsIE1OLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYXJjaGl0ZWN0dXJlOyBDRlQ7IGNvbXB1dGVyIGFyY2hpdGVjdHVyZTsgY29tcHV0ZXIgc3lzdGVtczsgY29tcHV0ZXIgc3lzdGVtcywgZGlnaXRhbDsgQ1JBWS0xIGNvbXB1dGVyIHN5c3RlbTsgZXhpc3RpbmcgY2xhc3NpYyBhcmNoaXRlY3R1cmU7IGdpbnNiZXJnIGJpYmxpbzogYmhpYmJhcmQgZW5tOyBncmVjb21tZW5kZWQ5MTsgaW1wbGVtZW50YXRpb247IGpcLWxiOyBtYWVkZXIgYmlibGlvOiBwYXJhbGxlbCBoYXJkd2FyZSBhbmQgZGV2aWNlczsgb3BlcmF0aW5nIHN5c3RlbXMgKGNvbXB1dGVycyk7IHByb2Nlc3Npbmc7IHZlY3RvciIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7Q2FzZToxOTc4OkFJUywKICBhdXRob3IgPSAgICAgICAiUmljaGFyZCBQLiBDYXNlIGFuZCBBbmRyaXMgUGFkZWdzIiwKICB0aXRsZSA9ICAgICAgICAiQXJjaGl0ZWN0dXJlIG9mIHRoZSB7SUJNIFN5c3RlbX1cc2xhc2ggMzcwIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIxIiwKICBudW1iZXIgPSAgICAgICAiMSIsCiAgcGFnZXMgPSAgICAgICAgIjczLS05NiIsCiAgbW9udGggPSAgICAgICAgamFuLAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgImZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvTWlzYy9zdG9yYWdlLmJpYiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM1MjIwIChDb21wdXRlciBhcmNoaXRlY3R1cmUpOyBDNTQyMCAoTWFpbmZyYW1lcyBhbmQgbWluaWNvbXB1dGVycyk7IEM2MTUwSiAoT3BlcmF0aW5nIHN5c3RlbXMpIiwKICBjb3Jwc291cmNlID0gICAiSUJNIENvcnAuLCBXaGl0ZSBQbGFpbnMsIE5ZLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJBcmNoaXRlY3R1cmVzOyBjb21wdXRlciBhcmNoaXRlY3R1cmU7IGRhdGEgbWFuaXB1bGF0aW9uOyBkZWJ1Z2dpbmc7IGRlc2lnbiBjb25zaWRlcmF0aW9uczsgZXJyb3IgaGFuZGxpbmc7IGlucHV0L291dHB1dCBvcGVyYXRpb25zOyBpbnN0cnVjdGlvbnM7IG1lbW9yeSBoaWVyYXJjaHk7IG1vbml0b3Jpbmc7IG11bHRpcHJvY2Vzc2luZzsgb3BlcmF0aW5nIHN5c3RlbXMgKGNvbXB1dGVycyk7IHByb2dyYW0gY29udHJvbDsgdGltaW5nIGZhY2lsaXRpZXM7IHZpcnR1YWwgc3RvcmFnZSIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7TWFtcmFrOjE5Nzg6Q1NGLAogIGF1dGhvciA9ICAgICAgICJTLiBBLiBNYW1yYWsgYW5kIFIuIEcuIHtNb250YW5lbGxpLCBKci59IiwKICB0aXRsZSA9ICAgICAgICAiQ29tcHV0ZXIgc2NpZW5jZSBmYWN1bHRpZXM6IHRoZSBjdXJyZW50IHN0YXR1cyBvZiBtaW5vcml0aWVzIGFuZCB3b21lbiIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMSIsCiAgbnVtYmVyID0gICAgICAgIjIiLAogIHBhZ2VzID0gICAgICAgICIxMTUtLTExOSIsCiAgbW9udGggPSAgICAgICAgZmViLAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMwMjIwIChDb21wdXRpbmcgZWR1Y2F0aW9uIGFuZCB0cmFpbmluZykiLAogIGNvcnBzb3VyY2UgPSAgICJPaGlvIFN0YXRlIFVuaXYuLCBDb2x1bWJ1cywgT0gsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImFjYWRlbWljIGNvbXB1dGVyIHNjaWVuY2U7IGNvbXB1dGVyIHNjaWVuY2UgZWR1Y2F0aW9uOyBkaXNjcmltaW5hdGlvbjsgbWlub3JpdGllczsgd29tZW4iLAogIHRyZWF0bWVudCA9ICAgICJHIEdlbmVyYWwgUmV2aWV3IiwKfQoKQEFydGljbGV7Uml2ZXN0OjE5Nzg6TU9ELAogIGF1dGhvciA9ICAgICAgICJSLiBMLiBSaXZlc3QgYW5kIEEuIFNoYW1pciBhbmQgTC4gQWRlbG1hbiIsCiAgdGl0bGUgPSAgICAgICAgIkEgTWV0aG9kIGZvciBPYnRhaW5pbmcgRGlnaXRhbCBTaWduYXR1cmVzIGFuZCBQdWJsaWMtS2V5IENyeXB0b3N5c3RlbXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjEiLAogIG51bWJlciA9ICAgICAgICIyIiwKICBwYWdlcyA9ICAgICAgICAiMTIwLS0xMjYiLAogIG1vbnRoID0gICAgICAgIGZlYiwKICB5ZWFyID0gICAgICAgICAiMTk3OCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjk0QTA1IiwKICBNUm51bWJlciA9ICAgICAiODNtOjk0MDAzIiwKICBtcnJldmlld2VyID0gICAiSi4gTC4gU2VsZnJpZGdlIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9UaGVvcnkvUHJvYkFsZ3MuYmliIGFuZCBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0RhdGFiYXNlL0dyYWVmZS5iaWIgYW5kIGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvQWkvbm9ubW9uby5iaWIiLAogIG5vdGUgPSAgICAgICAgICJUaGUgYmFzaWNzIG9mIHRyYXAtZG9vciBmdW5jdGlvbnMgYW5kIHRoZSBmYW1vdXMgUlNBIHB1YmxpYyBrZXkgY3J5cHRvc3lzdGVtIGFyZSBwcmVzZW50ZWQgaW4gdGhpcyBwYXBlci4iLAogIGFic3RyYWN0ID0gICAgICJBbiBlbmNyeXB0aW9uIG1ldGhvZCBpcyBwcmVzZW50ZWQgd2l0aCB0aGUgbm92ZWwgcHJvcGVydHkgdGhhdCBwdWJsaWNseSByZXZlYWxpbmcgYW4gZW5jcnlwdGlvbiBrZXkgZG9lcyBub3QgdGhlcmVieSByZXZlYWwgdGhlIGNvcnJlc3BvbmRpbmcgZGVjcnlwdGlvbiBrZXkuIFRoaXMgaGFzIHR3byBpbXBvcnRhbnQgY29uc2VxdWVuY2VzOiAoMSkgQ291cmllcnMgb3Igb3RoZXIgc2VjdXJlIG1lYW5zIGFyZSBub3QgbmVlZGVkIHRvIHRyYW5zbWl0IGtleXMsIHNpbmNlIGEgbWVzc2FnZSBjYW4gYmUgZW5jaXBoZXJlZCB1c2luZyBhbiBlbmNyeXB0aW9uIGtleSBwdWJsaWNseSByZXZlYWxlZCBieSB0aGUgaW50ZW5kZWQgcmVjaXBpZW50LiAoMikgQSBtZXNzYWdlIGNhbiBiZSBgYHNpZ25lZCcnIHVzaW5nIGEgcHJpdmF0ZWx5IGhlbGQgZGVjcnlwdGlvbiBrZXkuIEFueW9uZSBjYW4gdmVyaWZ5IHRoaXMgc2lnbmF0dXJlIHVzaW5nIHRoZSBjb3JyZXNwb25kaW5nIHB1YmxpY2x5IHJldmVhbGVkIGVuY3J5cHRpb24ga2V5LiBTaWduYXR1cmVzIGNhbm5vdCBiZSBmb3JnZWQsIGFuZCBhIHNpZ25lciBjYW5ub3QgbGF0ZXIgZGVueSB0aGUgdmFsaWRpdHkgb2YgaGlzIHNpZ25hdHVyZS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiRGVwdC4gb2YgTWF0aC4sIE1JVCwgQ2FtYnJpZGdlLCBNQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIHByb2dyYW1taW5nOyBjcnlwdG9ncmFwaHk7IGNyeXB0b3N5c3RlbXM7IGRhdGEgaGFuZGxpbmc7IGRhdGEgcHJvY2Vzc2luZyAtLS0gU2VjdXJpdHkgb2YgRGF0YTsgZGVjcnlwdGlvbiBrZXk7IGRpZ2l0YWwgc2lnbmF0dXJlczsgZW5jcnlwdGlvbiBrZXk7IG51bWJlciB0aGVvcnk7IG9wZXJhdGluZyBwcm90ZWN0aW9uOyBSU0E7IHNlY3VyaXR5OyBzZWN1cml0eSBvZiBkYXRhIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtBdXNsYW5kZXI6MTk3ODpTUlIsCiAgYXV0aG9yID0gICAgICAgIk0uIEEuIEF1c2xhbmRlciBhbmQgSC4gUi4gU3Ryb25nIiwKICB0aXRsZSA9ICAgICAgICAiU3lzdGVtYXRpYyBSZWN1cnNpb24gUmVtb3ZhbCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMSIsCiAgbnVtYmVyID0gICAgICAgIjIiLAogIHBhZ2VzID0gICAgICAgICIxMjctLTEzNCIsCiAgbW9udGggPSAgICAgICAgZmViLAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9Db21waWxlci9zZW1hbnRpY3MuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiVGhlIHJlY3Vyc2lvbiByZW1vdmFsIGFsZ29yaXRobSBwcmVzZW50ZWQgYnkgU3Ryb25nIGFuZCBXYWxrZXIgaXMgYW1wbGlmaWVkIGFuZCBhcHBsaWVkIHRvIGEgcmVsYXRpdmVseSBjb21wbGV4IFBML0kgcHJvZ3JhbS4gVGhlIGFpbSBpcyB0byBkZW1vbnN0cmF0ZSBzeXN0ZW1hdGljIHJlY3Vyc2lvbi1yZW1vdmFsIHRlY2huaXF1ZXMgb24gc29tZXRoaW5nIG1vcmUgY29tcGxleCB0aGFuIEtudXRoJ3MgYGBzdHVyZHkgdG9kZGxlcicnIGFuZCB0byBvYnRhaW4gbWVhc3VyZW1lbnRzIG9mIHRoZSBjb3N0IG9mIHByb2NlZHVyZSBsaW5rYWdlIGluIFBML0kgYW5kIHRoZSBzYXZpbmdzIGFjaGlldmFibGUgdmlhIHByb2NlZHVyZSBpbnRlZ3JhdGlvbiBpbiB0aGUgcHJlc2VuY2Ugb2YgcmVjdXJzaW9uLiBGaXJzdCwgdGhlIHBhcGVyIGRlc2NyaWJlcyB0aGUgcmVjdXJzaW9uLXJlbW92YWwgcHJvY2VzcyBhbmQgdGhlIGV4YW1wbGUgb24gd2hpY2ggaXQgd2lsbCBiZSBpbGx1c3RyYXRlZC4gUmVjdXJzaW9uIHJlbW92YWwgaXMgdGhlbiBhcHBsaWVkIHRvIHRoZSB0d28gbWFqb3IgcGFydHMgb2YgdGhpcyBleGFtcGxlIGFuZCB0aGUgZmluYWwgcmVzdWx0IG9mIHRoZSBwcm9jZXNzIGlzIGRpc3BsYXllZC4gT3VyIHBlcmZvcm1hbmNlIGNvbXBhcmlzb24gcmVzdWx0cyBhcmUgcHJlc2VudGVkIGFuZCBvdXIgY29uY2x1c2lvbnMgYXJlIGJyaWVmbHkgZGlzY3Vzc2VkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MjQwIChQcm9ncmFtbWluZyBhbmQgYWxnb3JpdGhtIHRoZW9yeSk7IEM2MTQwRCAoSGlnaCBsZXZlbCBsYW5ndWFnZXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJJQk0gVGhvbWFzIEouIFdhdHNvbiBSZXMuIENlbnRlciwgWW9ya3Rvd24gSGVpZ2h0cywgTlksIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBwcm9ncmFtbWluZzsgbGlua2FnZTsgb3B0aW1pemF0aW9uOyBQTC8xOyBwcm9jZWR1cmU7IHByb2NlZHVyZSBpbnRlZ3JhdGlvbjsgcHJvY2VkdXJlIGxpbmthZ2U7IHByb2dyYW1taW5nIHRoZW9yeTsgcmVjdXJzaW9uIGVsaW1pbmF0aW9uOyByZWN1cnNpb24gcmVtb3ZhbDsgcmVjdXJzaW9uIHJlbW92YWwgYWxnb3JpdGhtIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtLb3U6MTk3ODpDRUMsCiAgYXV0aG9yID0gICAgICAgIkwuIFQuIEtvdSBhbmQgTC4gSi4gU3RvY2ttZXllciBhbmQgQy4gSy4gV29uZyIsCiAgdGl0bGUgPSAgICAgICAgIkNvdmVyaW5nIEVkZ2VzIGJ5IENsaXF1ZXMgd2l0aCBSZWdhcmQgdG8gS2V5d29yZCBDb25mbGljdHMgYW5kIEludGVyc2VjdGlvbiBHcmFwaHMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjEiLAogIG51bWJlciA9ICAgICAgICIyIiwKICBwYWdlcyA9ICAgICAgICAiMTM1LS0xMzkiLAogIG1vbnRoID0gICAgICAgIGZlYiwKICB5ZWFyID0gICAgICAgICAiMTk3OCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4QTIwICgwNUMzNSkiLAogIE1SbnVtYmVyID0gICAgICI1NyA0NjIwIiwKICBtcnJldmlld2VyID0gICAiQS4gVC4gQW1pbiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJFLiBLZWxsZXJtYW4gaGFzIHByZXNlbnRlZCBhIG1ldGhvZCBmb3IgZGV0ZXJtaW5pbmcga2V5d29yZCBjb25mbGljdHMgYW5kIGRlc2NyaWJlZCBhIGhldXJpc3RpYyBhbGdvcml0aG0gd2hpY2ggc29sdmVzIGEgY2VydGFpbiBjb21iaW5hdG9yaWFsIG9wdGltaXphdGlvbiBwcm9ibGVtIGluIGNvbm5lY3Rpb24gd2l0aCB0aGlzIG1ldGhvZC4gVGhpcyBvcHRpbWl6YXRpb24gcHJvYmxlbSBpcyBzaG93biB0byBiZSBlcXVpdmFsZW50IHRvIHRoZSBwcm9ibGVtIG9mIGNvdmVyaW5nIHRoZSBlZGdlcyBvZiBhIGdyYXBoIGJ5IGNvbXBsZXRlIHN1YmdyYXBocyB3aXRoIHRoZSBvYmplY3RpdmUgb2YgbWluaW1pemluZyB0aGUgbnVtYmVyIG9mIGNvbXBsZXRlIHN1YmdyYXBocy4gQSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGlzIGVkZ2UtY2xpcXVlLWNvdmVyIHByb2JsZW0gYW5kIHRoZSBncmFwaCBjb2xvcmluZyBwcm9ibGVtIGlzIGVzdGFibGlzaGVkIHdoaWNoIGFsbG93cyBhbGdvcml0aG1zIGZvciBlaXRoZXIgb25lIG9mIHRoZXNlIHByb2JsZW1zIHRvIGJlIGNvbnN0cnVjdGVkIGZyb20gYWxnb3JpdGhtcyBmb3IgdGhlIG90aGVyLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMxMTYwIChDb21iaW5hdG9yaWFsIG1hdGhlbWF0aWNzKTsgQzExODAgKE9wdGltaXNhdGlvbiB0ZWNobmlxdWVzKTsgQzQyNDAgKFByb2dyYW1taW5nIGFuZCBhbGdvcml0aG0gdGhlb3J5KSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzOyA5MjEiLAogIGNvcnBzb3VyY2UgPSAgICJJQk0gVGhvbWFzIEouIFdhdHNvbiBSZXMuIENlbnRlciwgWW9ya3Rvd24gSGVpZ2h0cywgTlksIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjbGlxdWUgY292ZXIgcHJvYmxlbTsgY2xpcXVlczsgY29tYmluYXRvcmlhbCBvcHRpbWl6YXRpb24gcHJvYmxlbTsgY29tcHV0YXRpb25hbCBjb21wbGV4aXR5OyBjb21wdXRlciBwcm9ncmFtbWluZzsgZWRnZTsgZ3JhcGggY29sb3VyaW5nOyBpbnRlcnNlY3Rpb24gZ3JhcGhzOyBrZXl3b3JkIGNvbmZsaWN0czsgb3B0aW1pc2F0aW9uOyBvcHRpbWl6YXRpb24iLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0hlbGQ6MTk3ODpCVFIsCiAgYXV0aG9yID0gICAgICAgIkdlcmFsZCBIZWxkIGFuZCBNaWNoYWVsIFN0b25lYnJha2VyIiwKICB0aXRsZSA9ICAgICAgICAie0J9LVRyZWVzIFJlLUV4YW1pbmVkIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIxIiwKICBudW1iZXIgPSAgICAgICAiMiIsCiAgcGFnZXMgPSAgICAgICAgIjEzOS0tMTQzIiwKICBtb250aCA9ICAgICAgICBmZWIsCiAgeWVhciA9ICAgICAgICAgIjE5NzgiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0RhdGFiYXNlL1dpZWRlcmhvbGQuYmliIGFuZCBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0RhdGFiYXNlL0dyYWVmZS5iaWIiLAogIG5vdGUgPSAgICAgICAgICJBbHNvIHB1Ymxpc2hlZCBpbi9hczogVUNCLCBFbGVjLiBSZXMuIExhYiwgTm8uRVJMLU01MjgsIEp1bHkgMTk3NS4iLAogIGFic3RyYWN0ID0gICAgICJUaGUgQi10cmVlIGFuZCBpdHMgdmFyaWFudHMgaGF2ZSwgd2l0aCBpbmNyZWFzaW5nIGZyZXF1ZW5jeSwgYmVlbiBwcm9wb3NlZCBhcyBhIGJhc2ljIHN0b3JhZ2Ugc3RydWN0dXJlIGZvciBtdWx0aXVzZXIgZGF0YWJhc2UgYXBwbGljYXRpb25zLiBUaHJlZSBwb3RlbnRpYWwgcHJvYmxlbXMgd2hpY2ggbXVzdCBiZSBkZWFsdCB3aXRoIGluIHN1Y2ggYSBzdHJ1Y3R1cmUgdGhhdCBkbyBub3QgYXJpc2UgaW4gbW9yZSB0cmFkaXRpb25hbCBzdGF0aWMgZGlyZWN0b3J5IHN0cnVjdHVyZXMgYXJlIGluZGljYXRlZC4gT25lIHByb2JsZW0gaXMgYSBwb3NzaWJsZSBwZXJmb3JtYW5jZSBwZW5hbHR5LiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgYW5ub3RlID0gICAgICAgIlN0YXRpYyB2ZXJzdXMgZHluYW1pYyBpbmRleGVzLiIsCiAgY2xhc3Njb2RlcyA9ICAgIkMxMTYwIChDb21iaW5hdG9yaWFsIG1hdGhlbWF0aWNzKTsgQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiVGFuZGVtIENvbXB1dGVycyBJbmMuLCBDYXBlcnRpbm8sIENBLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiZGF0YSBiYXNlIHN5c3RlbXM7IEluZ3JlcyBJU0FNIENBQ00iLAogIGtleXdvcmRzID0gICAgICIobWF0aGVtYXRpY3MpOyBCLXRyZWU7IGRhdGEgc3RydWN0dXJlczsgZGF0YWJhc2U7IGRhdGFiYXNlIG1hbmFnZW1lbnQgc3lzdGVtczsgZGlyZWN0b3J5IHN0cnVjdHVyZXM7IHN0b3JhZ2Ugc3RydWN0dXJlOyB0cmVlcyIsCiAgdHJlYXRtZW50ID0gICAgIkcgR2VuZXJhbCBSZXZpZXc7IFQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7U3Rld2FydDoxOTc4OkNOVCwKICBhdXRob3IgPSAgICAgICAiV2lsbGlhbSBKLiBTdGV3YXJ0IiwKICB0aXRsZSA9ICAgICAgICAiQSBDb21wYXJpc29uIG9mIE51bWVyaWNhbCBUZWNobmlxdWVzIGluIHtNYXJrb3Z9IE1vZGVsaW5nIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIxIiwKICBudW1iZXIgPSAgICAgICAiMiIsCiAgcGFnZXMgPSAgICAgICAgIjE0NC0tMTUyIiwKICBtb250aCA9ICAgICAgICBmZWIsCiAgeWVhciA9ICAgICAgICAgIjE5NzgiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0Rpc3RyaWJ1dGVkL1FMRC8xOTc4LmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIlByZXNlbnRhdGlvbiBvZiBzZXZlcmFsIG51bWVyaWNhbCBtZXRob2RzIHdoaWNoIG1heSBiZSB1c2VkIHRvIG9idGFpbiB0aGUgc3RhdGlvbmFyeSBwcm9iYWJpbGl0eSB2ZWN0b3JzIG9mIE1hcmtvdmlhbiBtb2RlbHMuIEFuIGV4YW1wbGUgb2YgYSBuZWFybHkgZGVjb21wb3NhYmxlIHN5c3RlbSBpcyBjb25zaWRlcmVkLCBhbmQgdGhlIHJlc3VsdHMgb2J0YWluZWQgYnkgdGhlIGRpZmZlcmVudCBtZXRob2RzIGV4YW1pbmVkLiBBIHBvc3QgbW9ydGVtIHJldmVhbHMgd2h5IHN0YW5kYXJkIHRlY2huaXF1ZXMgb2Z0ZW4gZmFpbCB0byB5aWVsZCB0aGUgY29ycmVjdCByZXN1bHRzLiBGaW5hbGx5LCBhIG1lYW5zIG9mIGVzdGltYXRpbmcgdGhlIGVycm9yIGluaGVyZW50IGluIHRoZSBkZWNvbXBvc2l0aW9uIG9mIGNlcnRhaW4gbW9kZWxzIGlzIHByZXNlbnRlZC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDMTE0MFogKE90aGVyIHRvcGljcyBpbiBzdGF0aXN0aWNzKTsgQzEyMjAgKFNpbXVsYXRpb24sIG1vZGVsbGluZyBhbmQgaWRlbnRpZmljYXRpb24pOyBDNDExMCAoRXJyb3IgYW5hbHlzaXMgaW4gbnVtZXJpY2FsIG1ldGhvZHMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI5MTIiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBkZSBSZW5uZXMsIFJlbm5lcywgRnJhbmNlIiwKICBjb3VudHJ5ID0gICAgICAiVVNBIiwKICBkZXNjcmlwdG9ycyA9ICAiTWFya292IGNoYWluOyBsaW5lYXIgZXF1YXRpb247IiwKICBlbnVtID0gICAgICAgICAiNzkyNiIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJkZWNvbXBvc2FibGUgc3lzdGVtOyBlcnJvciBhbmFseXNpczsgbWFuYWdlbWVudCBzY2llbmNlOyBNYXJrb3YgcHJvY2Vzc2VzOyBNYXJrb3ZpYW47IG1ldGhvZHM7IG1vZGVsbGluZzsgbW9kZWxzOyBudW1lcmljYWw7IG51bWVyaWNhbCBtZXRob2RzOyBvcGVyYXRpb25zIHJlc2VhcmNoOyBzdGF0aW9uYXJ5IHByb2JhYmlsaXR5IHZlY3RvcnMiLAogIGxhbmd1YWdlID0gICAgICJFbmdsaXNoIiwKICByZWZlcmVuY2VzID0gICAiMCIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7SGVybWFuOjE5Nzg6Uk1JLAogIGF1dGhvciA9ICAgICAgICJHYWJvciBULiBIZXJtYW4gYW5kIEFybm9sZCBMZW50IGFuZCBQZXRlciBILiBMdXR6IiwKICB0aXRsZSA9ICAgICAgICAiUmVsYXhhdGlvbiBNZXRob2RzIGZvciBJbWFnZSBSZWNvbnN0cnVjdGlvbiIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMSIsCiAgbnVtYmVyID0gICAgICAgIjIiLAogIHBhZ2VzID0gICAgICAgICIxNTItLTE1OCIsCiAgbW9udGggPSAgICAgICAgZmViLAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjhBNDUgKDkyQTA1KSIsCiAgTVJudW1iZXIgPSAgICAgIjU4IDE5NDE5IiwKICBtcnJldmlld2VyID0gICAiSi4gSi4gQnVja2xleSIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJJdCBpcyBzaG93biB0aGF0LCBmb3IgYSBjb25zaXN0ZW50IHN5c3RlbSBvZiBsaW5lYXIgaW5lcXVhbGl0aWVzLCBhbnkgc2VxdWVuY2Ugb2YgcmVsYXhhdGlvbiBwYXJhbWV0ZXJzIGx5aW5nIHN0cmljdGx5IGJldHdlZW4gMCBhbmQgMiBnZW5lcmF0ZXMgYSBzZXF1ZW5jZSBvZiB2ZWN0b3JzIHdoaWNoIGNvbnZlcmdlcyB0byBhIHNvbHV0aW9uLiBVbmRlciB0aGUgc2FtZSBhc3N1bXB0aW9ucywgZm9yIGEgc3lzdGVtIG9mIGxpbmVhciBlcXVhdGlvbnMsIHRoZSByZWxheGF0aW9uIG1ldGhvZCBjb252ZXJnZXMgdG8gdGhlIG1pbmltdW0gbm9ybSBzb2x1dGlvbi4gUHJldmlvdXNseSBwcm9wb3NlZCB0ZWNobmlxdWVzIGFyZSBzaG93biB0byBiZSBzcGVjaWFsIGNhc2VzIG9mIG91ciBwcm9jZWR1cmUgd2l0aCBkaWZmZXJlbnQgY2hvaWNlcyBvZiByZWxheGF0aW9uIHBhcmFtZXRlcnMuIFRoZSBwcmFjdGljYWwgY29uc2VxdWVuY2VzIGZvciBpbWFnZSByZWNvbnN0cnVjdGlvbiBvZiB0aGUgY2hvaWNlIG9mIHRoZSByZWxheGF0aW9uIHBhcmFtZXRlcnMgYXJlIGRpc2N1c3NlZC4gVGhpcyB3b3JrIGlzIGFwcGxpY2FibGUgdG8gYmlvbWVkaWNhbCBlbmdpbmVlcmluZyBhbmQgbWF0aGVtYXRpY2FsIHByb2dyYW1taW5nLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMxMTgwIChPcHRpbWlzYXRpb24gdGVjaG5pcXVlcyk7IEMxMjYwIChJbmZvcm1hdGlvbiB0aGVvcnkpOyBDNDE0MCAoTGluZWFyIGFsZ2VicmEpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI0NjE7IDcyMzsgOTIxIiwKICBjb3Jwc291cmNlID0gICAiU3RhdGUgVW5pdi4gb2YgTmV3IFlvcmssIEJ1ZmZhbG8sIE5ZLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYmlvbWVkaWNhbCBlbmdpbmVlcmluZzsgY29udmVyZ2VuY2Ugb2YgbnVtZXJpY2FsIG1ldGhvZHM7IGdyZXluZXNzIGludGVncmFsczsgaW1hZ2UgcHJvY2Vzc2luZzsgaW1hZ2UgcmVjb25zdHJ1Y3Rpb247IGxpbmVhciBpbmVxdWFsaXRpZXM7IG1hdGhlbWF0aWNhbCBwcm9ncmFtbWluZzsgbWV0aG9kOyBwaWN0dXJlIHByb2Nlc3Npbmc7IHJlbGF4YXRpb24iLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle01hbm5hOjE5Nzg6U1NCLAogIGF1dGhvciA9ICAgICAgICJab2hhciBNYW5uYSBhbmQgUmljaGFyZCBXYWxkaW5nZXIiLAogIHRpdGxlID0gICAgICAgICJJcyBgU29tZXRpbWUnIFNvbWV0aW1lcyBCZXR0ZXIgVGhhbiBgQWx3YXlzJz8gKEludGVybWl0dGVudCBBc3NlcnRpb25zIGluIFByb3ZpbmcgUHJvZ3JhbSBDb3JyZWN0bmVzcykiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjEiLAogIG51bWJlciA9ICAgICAgICIyIiwKICBwYWdlcyA9ICAgICAgICAiMTU5LS0xNzIiLAogIG1vbnRoID0gICAgICAgIGZlYiwKICB5ZWFyID0gICAgICAgICAiMTk3OCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4QTA1IiwKICBNUm51bWJlciA9ICAgICAiNTggMzYzMCIsCiAgbXJyZXZpZXdlciA9ICAgIkZyYW5jbyBTaXJvdmljaCIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvQ29tcGlsZXIvc2VtYW50aWNzLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIlRoaXMgcGFwZXIgZXhwbG9yZXMgYSB0ZWNobmlxdWUgZm9yIHByb3ZpbmcgdGhlIGNvcnJlY3RuZXNzIGFuZCB0ZXJtaW5hdGlvbiBvZiBwcm9ncmFtcyBzaW11bHRhbmVvdXNseS4gXHBhciBUaGlzIGFwcHJvYWNoLCB0aGUgaW50ZXJtaXR0ZW50LWFzc2VydGlvbiBtZXRob2QsIGludm9sdmVzIGRvY3VtZW50aW5nIHRoZSBwcm9ncmFtIHdpdGggYXNzZXJ0aW9ucyB0aGF0IG11c3QgYmUgdHJ1ZSBhdCBzb21lIHRpbWUgd2hlbiBjb250cm9sIHBhc3NlcyB0aHJvdWdoIHRoZSBjb3JyZXNwb25kaW5nIHBvaW50LCBidXQgdGhhdCBuZWVkIG5vdCBiZSB0cnVlIGV2ZXJ5IHRpbWUuIFRoZSBtZXRob2QsIGludHJvZHVjZWQgYnkgQnVyc3RhbGwsIHByb21pc2VzIHRvIHByb3ZpZGUgYSB2YWx1YWJsZSBjb21wbGVtZW50IHRvIHRoZSBtb3JlIGNvbnZlbnRpb25hbCBtZXRob2RzLiBUaGUgaW50ZXJtaXR0ZW50LWFzc2VydGlvbiBtZXRob2QgaXMgcHJlc2VudGVkIHdpdGggYSBudW1iZXIgb2YgZXhhbXBsZXMgb2YgY29ycmVjdG5lc3MgYW5kIHRlcm1pbmF0aW9uIHByb29mcy4gU29tZSBvZiB0aGVzZSBwcm9vZnMgYXJlIG1hcmtlZGx5IHNpbXBsZXIgdGhhbiB0aGVpciBjb252ZW50aW9uYWwgY291bnRlcnBhcnRzLiBccGFyIE9uIHRoZSBvdGhlciBoYW5kLCBpdCBpcyBzaG93biB0aGF0IGEgcHJvb2Ygb2YgY29ycmVjdG5lc3Mgb3IgdGVybWluYXRpb24gYnkgYW55IG9mIHRoZSBjb252ZW50aW9uYWwgdGVjaG5pcXVlcyBjYW4gYmUgcmVwaHJhc2VkIGRpcmVjdGx5IGFzIGEgcHJvb2YgdXNpbmcgaW50ZXJtaXR0ZW50IGFzc2VydGlvbnMuIEZpbmFsbHksIGl0IGlzIHNob3duIGhvdyB0aGUgaW50ZXJtaXR0ZW50LWFzc2VydGlvbiBtZXRob2QgY2FuIGJlIGFwcGxpZWQgdG8gcHJvdmUgdGhlIHZhbGlkaXR5IG9mIHByb2dyYW0gdHJhbnNmb3JtYXRpb25zIGFuZCB0aGUgY29ycmVjdG5lc3Mgb2YgY29udGludW91c2x5IG9wZXJhdGluZyBwcm9ncmFtcy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDI0MCAoUHJvZ3JhbW1pbmcgYW5kIGFsZ29yaXRobSB0aGVvcnkpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJTdGFuZm9yZCBVbml2LiwgU3RhbmZvcmQsIENBLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzOyBjb250aW51b3VzbHkgb3BlcmF0aW5nIHByb2dyYW1zLjsgY29ycmVjdG5lc3Mgb2YgcHJvZ3JhbXM7IGludGVybWl0dGVudCBhc3NlcnRpb25zOyBwcm9ncmFtIHRyYW5zZm9ybWF0aW9uOyBwcm9ncmFtIHZlcmlmaWNhdGlvbjsgdGVybWluYXRpb24gb2YgcHJvZ3JhbXMiLAogIGtleXdvcmRzID0gICAgICJhc3NlcnRpb25zOyBjb250aW51b3VzbHkgb3BlcmF0aW5nIHByb2dyYW1zOyBpbnRlcm1pdHRlbnQtYXNzZXJ0aW9uIG1ldGhvZDsgcHJvZ3JhbTsgcHJvZ3JhbSBjb3JyZWN0bmVzczsgcHJvZ3JhbW1pbmcgdGhlb3J5OyB0ZXJtaW5hdGlvbiBwcm9vZnM7IHRyYW5zZm9ybWF0aW9ucyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7U2NoYWNodGVyOjE5Nzg6U05NLAogIGF1dGhvciA9ICAgICAgICJCcnVjZSBKLiBTY2hhY2h0ZXIgYW5kIEF6cmllbCBSb3NlbmZlbGQiLAogIHRpdGxlID0gICAgICAgICJTb21lIE5ldyBNZXRob2RzIG9mIERldGVjdGluZyBTdGVwIEVkZ2VzIGluIERpZ2l0YWwgUGljdHVyZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjEiLAogIG51bWJlciA9ICAgICAgICIyIiwKICBwYWdlcyA9ICAgICAgICAiMTcyLS0xNzYiLAogIG1vbnRoID0gICAgICAgIGZlYiwKICB5ZWFyID0gICAgICAgICAiMTk3OCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJEZXNjcmlwdGlvbiBvZiB0d28gb3BlcmF0b3JzIHRoYXQgcmVzcG9uZCB0byBzdGVwIGVkZ2VzLCBidXQgbm90IHRvIHJhbXBzLiBUaGUgZmlyc3QgaXMgc2ltaWxhciB0byB0aGUgZGlnaXRhbCBMYXBsYWNpYW4sIGJ1dCB1c2VzIHRoZSBtYXgsIHJhdGhlciB0aGFuIHRoZSBzdW0sIG9mIHRoZSB4IGFuZCB5IHNlY29uZCBkaWZmZXJlbmNlcy4gVGhlIHNlY29uZCB1c2VzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIG1lYW4gYW5kIG1lZGlhbiBncmF5IGxldmVscyBpbiBhIG5laWdoYm9yaG9vZC4gVGhlIG91dHB1dHMgb2J0YWluZWQgZnJvbSB0aGVzZSBvcGVyYXRvcnMgYXBwbGllZCB0byBhIHNldCBvZiB0ZXN0IHBpY3R1cmVzIGFyZSBjb21wYXJlZCB3aXRoIGVhY2ggb3RoZXIgYW5kIHdpdGggdGhlIHN0YW5kYXJkIGRpZ2l0YWwgTGFwbGFjaWFuIGFuZCBncmFkaWVudC4gQSB0aGlyZCBvcGVyYXRvciwgd2hpY2ggdXNlcyB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGUgY2VudGVyIGFuZCBjZW50cm9pZCBvZiBhIG5laWdoYm9yaG9vZCBhcyBhbiBlZGdlIHZhbHVlLCBpcyBhbHNvIGJyaWVmbHkgY29uc2lkZXJlZDsgaXQgdHVybnMgb3V0IHRvIGJlIGVxdWl2YWxlbnQgdG8gb25lIG9mIHRoZSBzdGFuZGFyZCBkaWdpdGFsIGFwcHJveGltYXRpb25zIHRvIHRoZSBncmFkaWVudC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJCNjE0MEMgKE9wdGljYWwgaW5mb3JtYXRpb24sIGltYWdlIGFuZCB2aWRlbyBzaWduYWwgcHJvY2Vzc2luZyk7IEMxMjUwIChQYXR0ZXJuIHJlY29nbml0aW9uKTsgQzEyNjAgKEluZm9ybWF0aW9uIHRoZW9yeSk7IEM2MTMwQiAoR3JhcGhpY3MgdGVjaG5pcXVlcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIG9mIE1hcnlsYW5kLCBDb2xsZWdlIFBhcmssIE1ELCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgZ3JhcGhpY3M7IGRpZ2l0YWw7IGRpZ2l0YWwgcGljdHVyZXM7IGVkZ2UgZGV0ZWN0aW9uOyBncmF5IGxldmVsczsgaW1hZ2UgcHJvY2Vzc2luZzsgTGFwbGFjaWFuOyBwYXR0ZXJuIHJlY29nbml0aW9uOyBwaWN0dXJlIHByb2Nlc3Npbmc7IHN0ZXAgZWRnZXMiLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle1JhYmluOjE5Nzg6Q0NDLAogIGF1dGhvciA9ICAgICAgICJNaWNoYWVsIE8uIFJhYmluIiwKICB0aXRsZSA9ICAgICAgICAiQ29ycmlnZW5kdW06IHtgYENvbXBsZXhpdHkgb2YgY29tcHV0YXRpb25zJyd9IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIxIiwKICBudW1iZXIgPSAgICAgICAiMyIsCiAgbW9udGggPSAgICAgICAgbWFyLAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiMjMxLjY4QTIwIiwKICBNUm51bWJlciA9ICAgICAiNTcgODE1NiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBEZWMgMjYgMTM6MzU6MDcgMTk5NSIsCiAgbm90ZSA9ICAgICAgICAgIlNlZSBcY2l0ZXtSYWJpbjoxOTc3OkNDfS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAp9CgpAQXJ0aWNsZXtMdWNhczoxOTc4OlVJSSwKICBhdXRob3IgPSAgICAgICAiSGVucnkgQy4ge0x1Y2FzLCBKci59IiwKICB0aXRsZSA9ICAgICAgICAiVXNlIG9mIGFuIEludGVyYWN0aXZlIEluZm9ybWF0aW9uIFN0b3JhZ2UgYW5kIFJldHJpZXZhbCBTeXN0ZW0gaW4gTWVkaWNhbCBSZXNlYXJjaCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMSIsCiAgbnVtYmVyID0gICAgICAgIjMiLAogIHBhZ2VzID0gICAgICAgICIxOTctLTIwNSIsCiAgbW9udGggPSAgICAgICAgbWFyLAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlJlc3VsdHMgb2YgYSBzdHVkeSBvZiB0aGUgdXNlIG9mIGFuIGludGVyYWN0aXZlIGNvbXB1dGVyaXplZCBzdG9yYWdlIGFuZCByZXRyaWV2YWwgc3lzdGVtLiBBIG1vbml0b3IgYnVpbHQgaW50byB0aGUgY29tcHV0ZXIgc3lzdGVtIHByb3ZpZGVkIHVzYWdlIGRhdGEgZm9yIHRoZSBzdHVkeS4gQWRkaXRpb25hbCBkYXRhIG9uIHVzZXIgcmVhY3Rpb25zIHdlcmUgZ2F0aGVyZWQgZnJvbSBhIHF1ZXN0aW9ubmFpcmUuIFRoZSByZXN1bHRzIHNob3cgdGhlIGltcG9ydGFudCByb2xlIHBsYXllZCBieSBmcmVxdWVudGx5IGNob3NlbiBsYWJvcmF0b3J5IHJlZmVyZW5jZSBsZWFkZXJzIGluIGluZmx1ZW5jaW5nIHRoZSB1c2Ugb2YgdGhpcyBzeXN0ZW0uIFRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlIHN0dWR5IGZvciB0aGUgZGVzaWduIG9mIHNpbWlsYXIgc3lzdGVtcyBhcmUgZGlzY3Vzc2VkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM3MjIwIChHZW5lcmF0aW9uLCBkaXNzZW1pbmF0aW9uLCBhbmQgdXNlIG9mIGluZm9ybWF0aW9uKTsgQzcyNTAgKEluZm9ybWF0aW9uIHN0b3JhZ2UgYW5kIHJldHJpZXZhbCk7IEM3MzMwIChCaW9sb2d5IGFuZCBtZWRpY2FsIGNvbXB1dGluZykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMzsgOTAxIiwKICBjb3Jwc291cmNlID0gICAiTmV3IFlvcmsgVW5pdi4sIE5ldyBZb3JrLCBOWSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGluZzsgaW5mb3JtYXRpb24gcmV0cmlldmFsIHN5c3RlbTsgaW5mb3JtYXRpb24gcmV0cmlldmFsIHN5c3RlbXM7IGluZm9ybWF0aW9uIHN0b3JhZ2U7IGluZm9ybWF0aW9uIHVzZTsgaW50ZXJhY3RpdmU7IGxhYm9yYXRvcnkgcmVmZXJlbmNlIGxlYWRlcnM7IG1lZGljYWw7IG1lZGljYWwgcmVzZWFyY2g7IG1vbml0b3I7IHVzZTsgdXNlciByZWFjdGlvbnMiLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0R1dHRvbjoxOTc4Ok1VQywKICBhdXRob3IgPSAgICAgICAiV2lsbGlhbSBILiBEdXR0b24gYW5kIEtlbm5ldGggTC4gS3JhZW1lciIsCiAgdGl0bGUgPSAgICAgICAgIk1hbmFnZW1lbnQgVXRpbGl6YXRpb24gb2YgQ29tcHV0ZXJzIGluIHtBbWVyaWNhbn0gTG9jYWwgR292ZXJubWVudHMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjEiLAogIG51bWJlciA9ICAgICAgICIzIiwKICBwYWdlcyA9ICAgICAgICAiMjA2LS0yMTgiLAogIG1vbnRoID0gICAgICAgIG1hciwKICB5ZWFyID0gICAgICAgICAiMTk3OCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJUcmFkaXRpb25hbCBjb25jZXB0cyBvZiBtYW5hZ2VtZW50IGluZm9ybWF0aW9uIHN5c3RlbXMgKE1JUykgYmVhciBsaXR0bGUgcmVsYXRpb24gdG8gdGhlIGluZm9ybWF0aW9uIHN5c3RlbXMgY3VycmVudGx5IGluIHVzZSBieSB0b3AgbWFuYWdlbWVudCBpbiBtb3N0IFVTIGxvY2FsIGdvdmVybm1lbnRzLiBXaGF0IGV4aXN0cyBpcyBtYW5hZ2VtZW50LW9yaWVudGVkIGNvbXB1dGluZywgaW52b2x2aW5nIHRoZSB1c2Ugb2YgcmVsYXRpdmVseSB1bnNvcGhpc3RpY2F0ZWQgYXBwbGljYXRpb25zLiBEZXNwaXRlIHRoZSB1bnNvcGhpc3RpY2F0ZWQgbmF0dXJlIG9mIHRoZXNlIHN5c3RlbXMsIG1hbmFnZW1lbnQgdXNlIG9mIGNvbXB1dGluZyBpcyBzdXJwcmlzaW5nbHkgY29tbW9uLCBidXQgYWxzbyB2YXJpZWQgaW4gaXRzIGV4dGVudCBhbW9uZyBsb2NhbCBnb3Zlcm5tZW50cy4gTWFuYWdlbWVudCBjb21wdXRpbmcgaXMgbW9zdCBwcmV2YWxlbnQgaW4gdGhvc2UgZ292ZXJubWVudHMgd2l0aCBwcm9mZXNzaW9uYWwgbWFuYWdlbWVudCBwcmFjdGljZXMgd2hlcmUgdG9wIG1hbmFnZW1lbnQgaXMgc3VwcG9ydGl2ZSBvZiBjb21wdXRpbmcgYW5kIHRlbmRzIHRvIGNvbnRyb2wgY29tcHV0aW5nIGRlY2lzaW9ucyBhbmQgd2hlcmUgZGVwYXJ0bWVudCB1c2VycyBoYXZlIGxlc3MgY29udHJvbCBvdmVyIGRlc2lnbiBhbmQgaW1wbGVtZW50YXRpb24gYWN0aXZpdGllcy4gRmluYWxseSwgbWFuYWdlbWVudCBjb21wdXRpbmcgY2xlYXJseSBoYXMgaW1wYWN0cyBmb3IgdG9wIG1hbmFnZXJzLCBtb3N0bHkgaW52b2x2aW5nIGltcHJvdmVtZW50cyBpbiBkZWNpc2lvbiBpbmZvcm1hdGlvbi4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDMDIzMCAoRWNvbm9taWMsIHNvY2lhbCBhbmQgcG9saXRpY2FsIGFzcGVjdHMgb2YgY29tcHV0aW5nKTsgQzcxMzAgKFB1YmxpYyBhZG1pbmlzdHJhdGlvbikiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMzsgOTAxOyA5MTI7IDkyMiIsCiAgY29ycHNvdXJjZSA9ICAgIlB1YmxpYyBQb2xpY3kgUmVzLiBPcmdhbml6YXRpb24sIFVuaXYuIG9mIENhbGlmb3JuaWEsIElydmluZSwgQ0EsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb25jZXB0czsgZGVjaXNpb24gaW5mb3JtYXRpb247IGRlY2lzaW9uIHRoZW9yeSBhbmQgYW5hbHlzaXM7IGdvdmVybm1lbnQgZGF0YSBwcm9jZXNzaW5nOyBpbmZvcm1hdGlvbiByZXRyaWV2YWwgc3lzdGVtczsgbG9jYWwgZ292ZXJubWVudHM7IG1hbmFnZW1lbnQgaW5mb3JtYXRpb24gc3lzdGVtczsgbWFuYWdlbWVudCBwcmFjdGljZXM7IG1hbmFnZW1lbnQgc2NpZW5jZTsgbWFuYWdlbWVudCB1c2Ugb2YgY29tcHV0aW5nOyBwcm9mZXNzaW9uYWw7IHNvY2lhbCBhc3BlY3RzIG9mIGF1dG9tYXRpb247IHRvcCBtYW5hZ2VtZW50OyBVUyIsCiAgdHJlYXRtZW50ID0gICAgIkcgR2VuZXJhbCBSZXZpZXc7IFAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7QW5kZXJzb246MTk3ODpWT0MsCiAgYXV0aG9yID0gICAgICAgIlIuIEUuIEFuZGVyc29uIiwKICB0aXRsZSA9ICAgICAgICAiVmFsdWUgb3JpZW50YXRpb24gb2YgY29tcHV0ZXIgc2NpZW5jZSBzdHVkZW50cyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMSIsCiAgbnVtYmVyID0gICAgICAgIjMiLAogIHBhZ2VzID0gICAgICAgICIyMTktLTIyNSIsCiAgbW9udGggPSAgICAgICAgbWFyLAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMwMjIwIChDb21wdXRpbmcgZWR1Y2F0aW9uIGFuZCB0cmFpbmluZyk7IEMwMjMwIChFY29ub21pYywgc29jaWFsIGFuZCBwb2xpdGljYWwgYXNwZWN0cyBvZiBjb21wdXRpbmcpIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gb2YgTWlubmVzb3RhLCBNaW5uZWFwb2xpcywgTU4sIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIHNjaWVuY2UgZWR1Y2F0aW9uOyBjb21wdXRlciBzY2llbmNlIHN0dWRlbnRzOyBzb2NpYWwgYXNwZWN0cyBvZiBhdXRvbWF0aW9uOyBzb2NpYWwgc2NpZW5jZTsgc3R1ZGVudHM7IHZhbHVlIHN0cnVjdHVyZXMiLAogIHRyZWF0bWVudCA9ICAgICJHIEdlbmVyYWwgUmV2aWV3IiwKfQoKQEFydGljbGV7S29zYXJhanU6MTk3ODpJRE8sCiAgYXV0aG9yID0gICAgICAgIlMuIFJhbyBLb3NhcmFqdSIsCiAgdGl0bGUgPSAgICAgICAgIkluc2VydGlvbnMgYW5kIERlbGV0aW9ucyBpbiBPbmUtU2lkZWQgSGVpZ2h0LUJhbGFuY2VkIFRyZWVzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIxIiwKICBudW1iZXIgPSAgICAgICAiMyIsCiAgcGFnZXMgPSAgICAgICAgIjIyNi0tMjI3IiwKICBtb250aCA9ICAgICAgICBtYXIsCiAgeWVhciA9ICAgICAgICAgIjE5NzgiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2OEExMCIsCiAgTVJudW1iZXIgPSAgICAgIjU3IDE4MjEwIiwKICBtcnJldmlld2VyID0gICAiRmFicml6aW8gTHVjY2lvIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkQuIFMuIEhpc2NoYmVyZyBoYXMgZXN0YWJsaXNoZWQgdGhhdCBpbnNlcnRpb25zIGludG8gb25lLXNpZGVkIGhlaWdodC1iYWxhbmNlZCB0cmVlcyBjYW4gYmUgZG9uZSBpbiBPKGxvZyoqMk4pIHN0ZXBzLiBJdCBpcyBwcm92ZWQgdGhhdCBkZWxldGlvbnMgY2FuIGFsc28gYmUgcGVyZm9ybWVkIGluIE8obG9nKioyTikgc3RlcHMsIHdoaWNoIGFuc3dlcnMgdGhlIG9wZW4gcHJvYmxlbSBwb3NlZCBieSBELiBTLiBIaXJzY2hiZXJnLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MjQwIChQcm9ncmFtbWluZyBhbmQgYWxnb3JpdGhtIHRoZW9yeSk7IEM2MTEwIChTeXN0ZW1zIGFuYWx5c2lzIGFuZCBwcm9ncmFtbWluZykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIkpvaG5zIEhvcGtpbnMgVW5pdi4sIEJhbHRpbW9yZSwgTUQsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJBVkwgdHJlZXM7IGJhbGFuY2VkIHRyZWVzOyBiaW5hcnkgc2VhcmNoOyBjb21wdXRlciBwcm9ncmFtbWluZzsgZHluYW1pYyBiYWxhbmNpbmciLAogIGtleXdvcmRzID0gICAgICJkZWxldGlvbnM7IGluc2VydGlvbnM7IG9uZSBzaWRlZCBoZWlnaHQgYmFsYW5jZWQgdHJlZXM7IHByb2dyYW1taW5nIHRoZW9yeTsgdHJlZXMgKG1hdGhlbWF0aWNzKSIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7RGVNaWxsbzoxOTc4OlBBUCwKICBhdXRob3IgPSAgICAgICAiUmljaGFyZCBBLiBEZU1pbGxvIGFuZCBTdGFubGV5IEMuIEVpc2Vuc3RhdCBhbmQgUmljaGFyZCBKLiBMaXB0b24iLAogIHRpdGxlID0gICAgICAgICJQcmVzZXJ2aW5nIEF2ZXJhZ2UgUHJveGltaXR5IGluIEFycmF5cyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMSIsCiAgbnVtYmVyID0gICAgICAgIjMiLAogIHBhZ2VzID0gICAgICAgICIyMjgtLTIzMSIsCiAgbW9udGggPSAgICAgICAgbWFyLAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjhBNTAiLAogIE1SbnVtYmVyID0gICAgICI1NyA4MjE3IiwKICBtcnJldmlld2VyID0gICAiRG9yb3RoeSBCb2xsbWFuIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlByb2dyYW1tZXJzIGFuZCBkYXRhIHN0cnVjdHVyZSBkZXNpZ25lcnMgYXJlIG9mdGVuIGZvcmNlZCB0byBjaG9vc2UgYmV0d2VlbiBhbHRlcm5hdGl2ZSBzdHJ1Y3R1cmVzLiBccGFyIEluIHN0b3JpbmcgdGhlc2Ugc3RydWN0dXJlcywgcHJlc2VydmluZyBsb2dpY2FsIGFkamFjZW5jaWVzIG9yIGBgcHJveGltaXR5JycgaXMgdXN1YWxseSBhbiBpbXBvcnRhbnQgY29uc2lkZXJhdGlvbi4gXHBhciBUaGUgY29tYmluYXRvcmlhbCBwcm9ibGVtIG9mIHN0b3JpbmcgYXJyYXlzIGFzIHZhcmlvdXMga2luZHMgb2YgbGlzdCBzdHJ1Y3R1cmVzIGlzIGV4YW1pbmVkLiBFbWJlZGRpbmdzIG9mIGdyYXBocyBhcmUgdXNlZCB0byBtb2RlbCB0aGUgbG9zcyBvZiBwcm94aW1pdHkgaW52b2x2ZWQgaW4gc3VjaCBzdG9yYWdlIHNjaGVtZXMsIGFuZCBhbiBlbGVtZW50YXJ5IHByb29mIHRoYXQgYXJyYXlzIGNhbm5vdCBiZSBzdG9yZWQgYXMgbGluZWFyIGxpc3RzIHdpdGggYm91bmRlZCBsb3NzIG9mIHByb3hpbWl0eSBpcyBwcmVzZW50ZWQuIEF2ZXJhZ2UgbG9zcyBvZiBwcm94aW1pdHkgaXMgdGhlbiBjb25zaWRlcmVkLCBhbmQgaXQgaXMgc2hvd24gdGhhdCBhcnJheXMgY2Fubm90IGJlIHN0b3JlZCBhcyBsaW5lYXIgbGlzdHMgd2l0aCBvbmx5IGJvdW5kZWQgbG9zcyBvZiBhdmVyYWdlIHByb3hpbWl0eSwgYnV0IGNhbiBiZSBzbyBzdG9yZWQgaW4gYmluYXJ5IHRyZWVzLiBUaGUgZm9ybWVyIHJlc3VsdCBpbXBsaWVzLCBmb3IgaW5zdGFuY2UsIHRoYXQgcm93IG1ham9yIG9yZGVyIGlzIGFuIGFzeW1wdG90aWNhbGx5IG9wdGltYWwgc3RvcmFnZSBzdHJhdGVneSBmb3IgYXJyYXlzLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbikiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIkdlb3JnaWEgSW5zdC4gb2YgVGVjaG5vbC4sIEF0bGFudGEsIEdBLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYXJyYXlzOyBhdmVyYWdlIHByb3hpbWl0eTsgY29tcHV0ZXIgcHJvZ3JhbW1pbmc7IGRhdGEgcHJvY2Vzc2luZzsgZGF0YSBzdHJ1Y3R1cmU7IGRhdGEgc3RydWN0dXJlczsgZ3JhcGggZW1iZWRkaW5nOyBsaW5lYXIgbGlzdHM7IGxpc3Qgc3RydWN0dXJlczsgbG9naWNhbCBhZGphY2VuY2llczsgcHJlc2VydmluZzsgcHJveGltaXR5OyB0cmVlcyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7RnJhbmtsaW46MTk3ODpBVlAsCiAgYXV0aG9yID0gICAgICAgIk0uIEEuIEZyYW5rbGluIGFuZCBHLiBTY290dCBHcmFoYW0gYW5kIFIuIEsuIEd1cHRhIiwKICB0aXRsZSA9ICAgICAgICAiQW5vbWFsaWVzIHdpdGggVmFyaWFibGUgUGFydGl0aW9uIFBhZ2luZyBBbGdvcml0aG1zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIxIiwKICBudW1iZXIgPSAgICAgICAiMyIsCiAgcGFnZXMgPSAgICAgICAgIjIzMi0tMjM2IiwKICBtb250aCA9ICAgICAgICBtYXIsCiAgeWVhciA9ICAgICAgICAgIjE5NzgiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2OEE1MCIsCiAgTVJudW1iZXIgPSAgICAgIjU3IDE0NjU5IiwKICBtcnJldmlld2VyID0gICAiSm9obnNvbiBNLiBIYXJ0IiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkZpdmUgdHlwZXMgb2YgYW5vbWFsb3VzIGJlaGF2aW9yIHdoaWNoIG1heSBvY2N1ciBpbiBwYWdlZCB2aXJ0dWFsIG1lbW9yeSBvcGVyYXRpbmcgc3lzdGVtcyBhcmUgZGVmaW5lZC4gT25lIHR5cGUgb2YgYW5vbWFseSwgZm9yIGV4YW1wbGUsIGNvbmNlcm5zIHRoZSBmYWN0IHRoYXQsIHdpdGggY2VydGFpbiByZWZlcmVuY2Ugc3RyaW5ncyBhbmQgcGFnaW5nIGFsZ29yaXRobXMsIGFuIGluY3JlYXNlIGluIG1lYW4gbWVtb3J5IGFsbG9jYXRpb24gbWF5IHJlc3VsdCBpbiBhbiBpbmNyZWFzZSBpbiBmYXVsdCByYXRlLiBUd28gcGFnaW5nIGFsZ29yaXRobXMsIHRoZSBwYWdlIGZhdWx0IGZyZXF1ZW5jeSBhbmQgd29ya2luZyBzZXQgYWxnb3JpdGhtcywgYXJlIGV4YW1pbmVkIGluIHRlcm1zIG9mIHRoZWlyIGFub21hbHkgcG90ZW50aWFsLCBhbmQgcmVmZXJlbmNlIHN0cmluZyBleGFtcGxlcyBvZiB2YXJpb3VzIGFub21hbGllcyBhcmUgcHJlc2VudGVkLiBUd28gcGFnaW5nIGFsZ29yaXRobSBwcm9wZXJ0aWVzLCB0aGUgaW5jbHVzaW9uIHByb3BlcnR5IGFuZCB0aGUgZ2VuZXJhbGl6ZWQgaW5jbHVzaW9uIHByb3BlcnR5LCBhcmUgZGlzY3Vzc2VkIGFuZCB0aGUgYW5vbWFseSBpbXBsaWNhdGlvbnMgb2YgdGhlc2UgcHJvcGVydGllcyBwcmVzZW50ZWQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKTsgQzYxNTBKIChPcGVyYXRpbmcgc3lzdGVtcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIldhc2hpbmd0b24gVW5pdi4sIFN0LiBMb3VpcywgTU8sIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhbm9tYWxvdXMgYmVoYXZpb3VyOyBjb21wdXRlciBvcGVyYXRpbmcgc3lzdGVtczsgY29tcHV0ZXIgcHJvZ3JhbW1pbmcgLS0tIFN1YnJvdXRpbmVzOyBvcGVyYXRpbmcgc3lzdGVtcyAoY29tcHV0ZXJzKTsgcGFnZSBmYXVsdCBmcmVxdWVuY3k7IHZhcmlhYmxlIHBhcnRpdGlvbiBwYWdpbmcgYWxnb3JpdGhtczsgdmlydHVhbCBtZW1vcnkgb3BlcmF0aW5nIHN5c3RlbXM7IHZpcnR1YWwgc3RvcmFnZTsgd29ya2luZyBzZXQgYWxnb3JpdGhtcyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7VGFuZW5iYXVtOjE5Nzg6SVNQLAogIGF1dGhvciA9ICAgICAgICJBbmRyZXcgUy4gVGFuZW5iYXVtIiwKICB0aXRsZSA9ICAgICAgICAiSW1wbGljYXRpb25zIG9mIFN0cnVjdHVyZWQgUHJvZ3JhbW1pbmcgZm9yIE1hY2hpbmUgQXJjaGl0ZWN0dXJlIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIxIiwKICBudW1iZXIgPSAgICAgICAiMyIsCiAgcGFnZXMgPSAgICAgICAgIjIzNy0tMjQ2IiwKICBtb250aCA9ICAgICAgICBtYXIsCiAgeWVhciA9ICAgICAgICAgIjE5NzgiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L01pc2MvcmlzYy5iaWIiLAogIGFic3RyYWN0ID0gICAgICJCYXNlZCBvbiBhbiBlbXBpcmljYWwgc3R1ZHkgb2YgbW9yZSB0aGFuIDEwLDAwMCBsaW5lcyBvZiBwcm9ncmFtIHRleHQgd3JpdHRlbiBpbiBhIEdPVE8tbGVzcyBsYW5ndWFnZSwgYSBtYWNoaW5lIGFyY2hpdGVjdHVyZSBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIHN0cnVjdHVyZWQgcHJvZ3JhbXMgaXMgcHJvcG9zZWQuIFNpbmNlIGFzc2lnbm1lbnQsIENBTEwsIFJFVFVSTiwgYW5kIElGIHN0YXRlbWVudHMgdG9nZXRoZXIgYWNjb3VudCBmb3IgOTMgcGVyY2VudCBvZiBhbGwgZXhlY3V0YWJsZSBzdGF0ZW1lbnRzLCBzcGVjaWFsIGNhcmUgaXMgZ2l2ZW4gdG8gZW5zdXJlIHRoYXQgdGhlc2Ugc3RhdGVtZW50cyBjYW4gYmUgaW1wbGVtZW50ZWQgZWZmaWNpZW50bHkuIEEgaGlnaGx5IGNvbXBhY3QgaW5zdHJ1Y3Rpb24gZW5jb2Rpbmcgc2NoZW1lIGlzIHByZXNlbnRlZCwgd2hpY2ggY2FuIHJlZHVjZSBwcm9ncmFtIHNpemUgYnkgYSBmYWN0b3Igb2YgMy4gVW5saWtlIGEgSHVmZm1hbiBjb2RlLCB3aGljaCB1dGlsaXplcyB2YXJpYWJsZSBsZW5ndGggZmllbGRzLCB0aGlzIG1ldGhvZCB1c2VzIG9ubHkgZml4ZWQgbGVuZ3RoICgxLWJ5dGUpIG9wIGNvZGUgYW5kIGFkZHJlc3MgZmllbGRzLiBUaGUgbW9zdCBmcmVxdWVudCBpbnN0cnVjdGlvbnMgY29uc2lzdCBvZiBhIHNpbmdsZSAxLWJ5dGUgZmllbGQuIEFzIGEgY29uc2VxdWVuY2UsIGluc3RydWN0aW9uIGRlY29kaW5nIHRpbWUgaXMgbWluaW1pemVkLCBhbmQgdGhlIG1hY2hpbmUgaXMgZWZmaWNpZW50IHdpdGggcmVzcGVjdCB0byBib3RoIHNwYWNlIGFuZCB0aW1lLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM1MjIwIChDb21wdXRlciBhcmNoaXRlY3R1cmUpOyBDNjExMCAoU3lzdGVtcyBhbmFseXNpcyBhbmQgcHJvZ3JhbW1pbmcpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJWcmlqZSBVbml2LiwgQW1zdGVyZGFtLCBOZXRoZXJsYW5kcyIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBhcmNoaXRlY3R1cmU7IGNvbXB1dGVyIG9wZXJhdGluZyBzeXN0ZW1zOyBjb21wdXRlciBvcmdhbml6YXRpb247IGluc3RydWN0aW9uIHNldCBkZXNpZ247IG1hY2hpbmUgYXJjaGl0ZWN0dXJlOyBNSVBTIFJJU0MgcmVkdWNlZCByZXN0cmljdGVkIGluc3RydWN0aW9uIHNldCBjb21wdXRlciBhcmNoaXRlY3R1cmUgcGlwZWxpbmluZyBtaWNyb2NvZGluZzsgcHJvZ3JhbSBjaGFyYWN0ZXJpc3RpY3M7IHN0cnVjdHVyZWQgcHJvZ3JhbW1pbmciLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle1BheW5lOjE5Nzg6T0VOLAogIGF1dGhvciA9ICAgICAgICJXLiBILiBQYXluZSBhbmQgSy4gTC4gTWNNaWxsZW4iLAogIHRpdGxlID0gICAgICAgICJPcmRlcmx5IEVudW1lcmF0aW9uIG9mIE5vbnNpbmd1bGFyIEJpbmFyeSBNYXRyaWNlcyBBcHBsaWVkIHRvIFRleHQgRW5jcnlwdGlvbiIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMSIsCiAgbnVtYmVyID0gICAgICAgIjQiLAogIHBhZ2VzID0gICAgICAgICIyNTktLTI2MyIsCiAgbW9udGggPSAgICAgICAgYXByLAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjhDMDUiLAogIE1SbnVtYmVyID0gICAgICI4MGg6NjgwMzEiLAogIG1ycmV2aWV3ZXIgPSAgICJQLiBFLiBPJ05laWwiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiTm9uc2luZ3VsYXIgYmluYXJ5IG1hdHJpY2VzIG9mIG9yZGVyIE4sIGkuZS4sIG5vbnNpbmd1bGFyIG92ZXIgdGhlIGZpZWxkIGxlZnQgYnJhY2UgMCwxIHJpZ2h0IGJyYWNlLCBhbmQgYW4gaW5pdGlhbCBzZWdtZW50IG9mIHRoZSBuYXR1cmFsIG51bWJlcnMgYXJlIHBsYWNlZCBpbiBvbmUtdG8tb25lIGNvcnJlc3BvbmRlbmNlLiBFYWNoIG5hdHVyYWwgbnVtYmVyIGNvcnJlc3BvbmRzIHRvIHR3byBpbnRlcm1lZGlhdGUgdmVjdG9ycy4gVGhlc2UgdmVjdG9ycyBhcmUgbWFwcGVkIGludG8gYSBub25zaW5ndWxhciBiaW5hcnkgbWF0cml4LiBFeGFtcGxlcyBvZiBjb21wbGV0ZSBlbnVtZXJhdGlvbiBvZiBhbGwgMiBtdWx0aXBsaWVkIGJ5IDIgYW5kIDMgbXVsdGlwbGllZCBieSAzIG5vbnNpbmd1bGFyIGJpbmFyeSBtYXRyaWNlcyB3ZXJlIHByb2R1Y2VkIGJ5IG1hcHBpbmcgdGhlIGludGVybWVkaWF0ZSB2ZWN0b3JzIHRvIHRoZSBtYXRyaWNlcy4gVGhlIG1hcHBpbmcgaGFzIGFwcGxpY2F0aW9uIHRvIHRoZSBWZXJuYW0gZW5jaXBoZXJtZW50IG1ldGhvZCB1c2luZyBwc2V1ZG9yYW5kb20gbnVtYmVyIHNlcXVlbmNlcy4gQSBiaXQgc3RyaW5nIGZvcm1lZCBmcm9tIGJ5dGVzIG9mIHRleHQgb2YgYSBkYXRhIGVuY3J5cHRpb24ga2V5IGNhbiBiZSB1c2VkIGFzIGEgcmVwcmVzZW50YXRpb24gb2YgYSBuYXR1cmFsIG51bWJlci4gVGhpcyBuYXR1cmFsIG51bWJlciBpcyB0cmFuc2Zvcm1lZCB0byBhIG5vbnNpbmd1bGFyIGJpbmFyeSBtYXRyaXguIEtleSBsZXZlcmFnZSBpcyBvYnRhaW5lZCBieSB1c2luZyB0aGUgbWF0cml4IGFzIGEgYGBzZWVkJycgaW4gYSBzaGlmdCByZWdpc3RlciBzZXF1ZW5jZSBwc2V1ZG9yYW5kb20gbnVtYmVyIGdlbmVyYXRvci4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDE0MCAoTGluZWFyIGFsZ2VicmEpOyBDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiV2FzaGluZ3RvbiBTdGF0ZSBVbml2LiwgUHVsbG1hbiwgV0EsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJiaW5hcnkgc2VxdWVuY2VzOyBiaXQgc3RyaW5nOyBjb21wdXRlciBwcm9ncmFtbWluZzsgZGF0YSBlbmNyeXB0aW9uIGtleTsgZW5jb2Rpbmc7IGVudW1lcmF0aW9uOyBtYXBwZWQ7IG1hdHJpeCBhbGdlYnJhOyBuYXR1cmFsIG51bWJlcjsgbm9uc2luZ3VsYXIgYmluYXJ5IG1hdHJpY2VzOyBwc2V1ZG9yYW5kb20gbnVtYmVyOyBzZXF1ZW5jZXM7IHRleHQgZWRpdGluZzsgdGV4dCBlbmNyeXB0aW9uOyBWZXJuYW0gZW5jaXBoZXJtZW50IG1ldGhvZCIsCiAgdHJlYXRtZW50ID0gICAgIkEgQXBwbGljYXRpb247IFQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7SGVja2VsOjE5Nzg6VElELAogIGF1dGhvciA9ICAgICAgICJQYXVsIEhlY2tlbCIsCiAgdGl0bGUgPSAgICAgICAgIkEgVGVjaG5pcXVlIGZvciBJc29sYXRpbmcgRGlmZmVyZW5jZXMgQmV0d2VlbiBGaWxlcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMSIsCiAgbnVtYmVyID0gICAgICAgIjQiLAogIHBhZ2VzID0gICAgICAgICIyNjQtLTI2OCIsCiAgbW9udGggPSAgICAgICAgYXByLAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9NaXNjL3NjbS5iaWIiLAogIGFic3RyYWN0ID0gICAgICJBIHNpbXBsZSBhbGdvcml0aG0gaXMgZGVzY3JpYmVkIGZvciBpc29sYXRpbmcgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdHdvIGZpbGVzLiBPbmUgYXBwbGljYXRpb24gaXMgdGhlIGNvbXBhcmluZyBvZiB0d28gdmVyc2lvbnMgb2YgYSBzb3VyY2UgcHJvZ3JhbSBvciBvdGhlciBmaWxlIGluIG9yZGVyIHRvIGRpc3BsYXkgYWxsIGRpZmZlcmVuY2VzLiBUaGUgYWxnb3JpdGhtIGlzb2xhdGVzIGRpZmZlcmVuY2VzIGluIGEgd2F5IHRoYXQgY29ycmVzcG9uZHMgY2xvc2VseSB0byBvdXIgaW50dWl0aXZlIG5vdGlvbiBvZiBkaWZmZXJlbmNlLCBpcyBlYXN5IHRvIGltcGxlbWVudCwgYW5kIGlzIGNvbXB1dGF0aW9uYWxseSBlZmZpY2llbnQsIHdpdGggdGltZSBsaW5lYXIgaW4gdGhlIGZpbGUgbGVuZ3RoLiBGb3IgbW9zdCBhcHBsaWNhdGlvbnMgdGhlIGFsZ29yaXRobSBpc29sYXRlcyBkaWZmZXJlbmNlcyBzaW1pbGFyIHRvIHRob3NlIGlzb2xhdGVkIGJ5IHRoZSBsb25nZXN0IGNvbW1vbiBzdWJzZXF1ZW5jZS4gQW5vdGhlciBhcHBsaWNhdGlvbiBvZiB0aGlzIGFsZ29yaXRobSBtZXJnZXMgZmlsZXMgY29udGFpbmluZyBpbmRlcGVuZGVudGx5IGdlbmVyYXRlZCBjaGFuZ2VzIGludG8gYSBzaW5nbGUgZmlsZS4gVGhlIGFsZ29yaXRobSBjYW4gYWxzbyBiZSB1c2VkIHRvIGdlbmVyYXRlIGVmZmljaWVudCBlbmNvZGluZ3Mgb2YgYSBmaWxlIGluIHRoZSBmb3JtIG9mIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGl0c2VsZiBhbmQgYSBnaXZlbiBgYGRhdHVtJycgZmlsZSwgcGVybWl0dGluZyByZWNvbnN0cnVjdGlvbiBvZiB0aGUgb3JpZ2luYWwgZmlsZSBmcm9tIHRoZSBkaWZmZXJlbmNlIGFuZCBkYXR1bSBmaWxlcy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJJbnRlcmFjdGl2ZSBTeXN0ZW1zIENvbnN1bHRhbnRzLCBQYWxvIEFsdG8sIENBLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgcHJvZ3JhbW1pbmc7IGRlbHRhIHN0b3JhZ2U7IGVuY29kaW5nczsgZmlsZSBvcmdhbmlzYXRpb247IGZpbGVzOyBpbmRlcGVuZGVudGx5IGdlbmVyYXRlZCBjaGFuZ2VzOyBpc29sYXRpbmcgZGlmZmVyZW5jZXM7IGxvbmdlc3QgY29tbW9uOyBtZXJnZXM7IHNvdXJjZSBwcm9ncmFtOyBzdWJzZXF1ZW5jZTsgdGV4dCBlZGl0aW5nIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtMZXc6MTk3ODpPQ0UsCiAgYXV0aG9yID0gICAgICAgIkFydCBMZXciLAogIHRpdGxlID0gICAgICAgICJPcHRpbWFsIENvbnZlcnNpb24gb2YgRXh0ZW5kZWQtRW50cnkgRGVjaXNpb24gVGFibGVzIHdpdGggR2VuZXJhbCBDb3N0IENyaXRlcmlhIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIxIiwKICBudW1iZXIgPSAgICAgICAiNCIsCiAgcGFnZXMgPSAgICAgICAgIjI2OS0tMjc5IiwKICBtb250aCA9ICAgICAgICBhcHIsCiAgeWVhciA9ICAgICAgICAgIjE5NzgiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2OEMwNSAoNDlDMjApIiwKICBNUm51bWJlciA9ICAgICAiODBhOjY4MDMyIiwKICBtcnJldmlld2VyID0gICAiQy4gTC4gTGl1IiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkEgZ2VuZXJhbCBkeW5hbWljIHByb2dyYW1taW5nIGFsZ29yaXRobSBmb3IgY29udmVydGluZyBsaW1pdGVkIGV4dGVuZGVkLCBvciBtaXhlZCBlbnRyeSBkZWNpc2lvbiB0YWJsZXMgdG8gb3B0aW1hbCBkZWNpc2lvbiB0cmVlcyBpcyBwcmVzZW50ZWQgd2hpY2ggY2FuIHRha2UgaW50byBhY2NvdW50IHJ1bGUgZnJlcXVlbmNpZXMgb3IgcHJvYmFiaWxpdGllcywgbWluaW11bSB0aW1lIGFuZFxzbGFzaCBvciBzcGFjZSBjb3N0IGNyaXRlcmlhLCBjb21tb24gYWN0aW9uIHNldHMsIGNvbXByZXNzZWQgcnVsZXMgYW5kIEVMU0UgcnVsZXMsIHNlcXVlbmNpbmcgY29uc3RyYWludHMgb24gY29uZGl0aW9uIHRlc3RzLCBleGNsdWRhYmxlIGNvbWJpbmF0aW9ucyBvZiBjb25kaXRpb25zLCBjZXJ0YWluIGFtYmlndWl0aWVzLCBhbmQgaW50ZXJydXB0ZWQgcnVsZSBtYXNraW5nLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTEwIChTeXN0ZW1zIGFuYWx5c2lzIGFuZCBwcm9ncmFtbWluZykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIG9mIEhhd2FpaSwgSG9ub2x1bHUsIEhJLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tbW9uIGFjdGlvbiBzZXRzOyBjb21wcmVzc2VkOyBjb21wdXRlciBwcm9ncmFtbWluZzsgY29uZGl0aW9uIHRlc3RzOyBjb252ZXJzaW9uOyBkZWNpc2lvbiB0YWJsZXM7IEVMU0UgcnVsZXM7IGVudHJ5IGRlY2lzaW9uIHRhYmxlczsgZXh0ZW5kZWQgZW50cnkgZGVjaXNpb24gdGFibGVzOyBmcmVxdWVuY2llczsgZ2VuZXJhbCBjb3N0IGNyaXRlcmlhOyBpbnRlcnJ1cHRlZCBydWxlIG1hc2tpbmc7IG1pbmltdW0gdGltZTsgbWl4ZWQ7IG9wdGltYWwgZGVjaXNpb24gdHJlZXM7IHJ1bGU7IHJ1bGVzOyBzZXF1ZW5jaW5nIGNvbnN0cmFpbnRzIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtCYWtlcjoxOTc4OkxQUiwKICBhdXRob3IgPSAgICAgICAiSGVucnkgRy4ge0Jha2VyLCBKci59IiwKICB0aXRsZSA9ICAgICAgICAiTGlzdCBQcm9jZXNzaW5nIGluIFJlYWwgVGltZSBvbiBhIFNlcmlhbCBDb21wdXRlciIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMSIsCiAgbnVtYmVyID0gICAgICAgIjQiLAogIHBhZ2VzID0gICAgICAgICIyODAtLTI5NCIsCiAgbW9udGggPSAgICAgICAgYXByLAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9Db21waWxlci9zZW1hbnRpY3MuYmliIiwKICBub3RlID0gICAgICAgICAiT3JpZ2luYWxseSBhcHBlYXJlZCBhcyBNSVQgQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2UgTGFib3JhdG9yeSBXb3JraW5nIFBhcGVyIE5vLiAzOSwgRmVicnVhcnkgMTk3NyIsCiAgYWJzdHJhY3QgPSAgICAgIkEgcmVhbC10aW1lIGxpc3QgcHJvY2Vzc2luZyBzeXN0ZW0gaXMgb25lIGluIHdoaWNoIHRoZSB0aW1lIHJlcXVpcmVkIGJ5IHRoZSBlbGVtZW50YXJ5IGxpc3Qgb3BlcmF0aW9ucyAoZS5nLiBDT05TIENBUiwgQ0RSLCBSUExBQ0EsIFJQTEFDRCwgRVEsIGFuZCBBVE9NIGluIExJU1ApIGlzIGJvdW5kZWQgYnkgYSAoc21hbGwpIGNvbnN0YW50LiBDbGFzc2ljYWwgaW1wbGVtZW50YXRpb25zIG9mIGxpc3QgcHJvY2Vzc2luZyBzeXN0ZW1zIGxhY2sgdGhpcyBwcm9wZXJ0eSBiZWNhdXNlIGFsbG9jYXRpbmcgYSBsaXN0IGNlbGwgZnJvbSB0aGUgaGVhcCBtYXkgY2F1c2UgYSBnYXJiYWdlIGNvbGxlY3Rpb24sIHdoaWNoIHByb2Nlc3MgcmVxdWlyZXMgdGltZSBwcm9wb3J0aW9uYWwgdG8gdGhlIGhlYXAgc2l6ZSB0byBmaW5pc2guIEEgcmVhbC10aW1lIGxpc3QgcHJvY2Vzc2luZyBzeXN0ZW0gaXMgcHJlc2VudGVkIHdoaWNoIGNvbnRpbnVvdXNseSByZWNsYWltcyBnYXJiYWdlLCBpbmNsdWRpbmcgZGlyZWN0ZWQgY3ljbGVzLCB3aGlsZSBsaW5lYXJpemluZyBhbmQgY29tcGFjdGluZyB0aGUgYWNjZXNzaWJsZSBjZWxscyBpbnRvIGNvbnRpZ3VvdXMgbG9jYXRpb25zIHRvIGF2b2lkIGZyYWdtZW50aW5nIHRoZSBmcmVlIHN0b3JhZ2UgcG9vbC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pOyBDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiTUlULCBDYW1icmlkZ2UsIE1BLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29sbGVjdGlvbjsgY29tcHV0ZXIgcHJvZ3JhbW1pbmc7IGRhdGEgcHJvY2Vzc2luZzsgZ2FyYmFnZTsgbGlzdCBwcm9jZXNzaW5nOyBsaXN0IHByb2Nlc3Npbmcgc3lzdGVtOyByZWFsIHRpbWU7IHNlcmlhbCBjb21wdXRlcjsgc3RvcmFnZSBtYW5hZ2VtZW50IiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtNZXJrbGU6MTk3ODpTQ0ksCiAgYXV0aG9yID0gICAgICAgIlJhbHBoIEMuIE1lcmtsZSIsCiAgdGl0bGUgPSAgICAgICAgIlNlY3VyZSBDb21tdW5pY2F0aW9ucyBPdmVyIEluc2VjdXJlIENoYW5uZWxzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIxIiwKICBudW1iZXIgPSAgICAgICAiNCIsCiAgcGFnZXMgPSAgICAgICAgIjI5NC0tMjk5IiwKICBtb250aCA9ICAgICAgICBhcHIsCiAgeWVhciA9ICAgICAgICAgIjE5NzgiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiQWNjb3JkaW5nIHRvIHRyYWRpdGlvbmFsIGNvbmNlcHRpb25zIG9mIGNyeXB0b2dyYXBoaWMgc2VjdXJpdHksIGl0IGlzIG5lY2Vzc2FyeSB0byB0cmFuc21pdCBhIGtleSwgYnkgc2VjcmV0IG1lYW5zLCBiZWZvcmUgZW5jcnlwdGVkIG1lc3NhZ2VzIGNhbiBiZSBzZW50IHNlY3VyZWx5LiBUaGlzIHBhcGVyIHNob3dzIHRoYXQgaXQgaXMgcG9zc2libGUgdG8gc2VsZWN0IGEga2V5IG92ZXIgb3BlbiBjb21tdW5pY2F0aW9ucyBjaGFubmVscyBpbiBzdWNoIGEgZmFzaGlvbiB0aGF0IGNvbW11bmljYXRpb25zIHNlY3VyaXR5IGNhbiBiZSBtYWludGFpbmVkLiBBIG1ldGhvZCBpcyBkZXNjcmliZWQgd2hpY2ggZm9yY2VzIGFueSBlbmVteSB0byBleHBlbmQgYW4gYW1vdW50IG9mIHdvcmsgd2hpY2ggaW5jcmVhc2VzIGFzIHRoZSBzcXVhcmUgb2YgdGhlIHdvcmsgcmVxdWlyZWQgb2YgdGhlIHR3byBjb21tdW5pY2FudHMgdG8gc2VsZWN0IHRoZSBrZXkuIFRoZSBtZXRob2QgcHJvdmlkZXMgYSBsb2dpY2FsbHkgbmV3IGtpbmQgb2YgcHJvdGVjdGlvbiBhZ2FpbnN0IHRoZSBwYXNzaXZlIGVhdmVzIGRyb3BwZXIuIEl0IHN1Z2dlc3RzIHRoYXQgZnVydGhlciByZXNlYXJjaCBvbiB0aGlzIHRvcGljIHdpbGwgYmUgaGlnaGx5IHJld2FyZGluZywgYm90aCBpbiBhIHRoZW9yZXRpY2FsIGFuZCBhIHByYWN0aWNhbCBzZW5zZS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNTYwMCAoRGF0YSBjb21tdW5pY2F0aW9uIGVxdWlwbWVudCBhbmQgdGVjaG5pcXVlcyk7IEM2MTMwIChEYXRhIGhhbmRsaW5nIHRlY2huaXF1ZXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJEZXB0LiBvZiBFbGVjdHJpY2FsIEVuZ25nLiBhbmQgQ29tcHV0ZXIgU2NpLiwgVW5pdi4gb2YgQ2FsaWZvcm5pYSwgQmVya2VsZXksIENBLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tbXVuaWNhdGlvbnMgY2hhbm5lbHM7IGNvbW11bmljYXRpb25zIHNlY3VyaXR5OyBjb21wdXRlciBuZXR3b3JrIHNlY3VyaXR5OyBjcnlwdG9ncmFwaGljIHNlY3VyaXR5OyBjcnlwdG9ncmFwaHk7IGNyeXB0b2xvZ3k7IGRhdGEgY29tbXVuaWNhdGlvbiBzeXN0ZW1zOyBkYXRhIHByb2Nlc3Npbmc7IGluc2VjdXJlIGNoYW5uZWxzOyBrZXkgZGlzdHJpYnV0aW9uOyBvcGVuOyBwYXNzaXZlIGVhdmVzZHJvcHBlcjsgcGFzc2l2ZSBlYXZlc2Ryb3BwaW5nOyBwcm90ZWN0aW9uOyBwdWJsaWMga2V5IGNyeXB0b3N5c3RlbTsgU2VjdXJpdHk7IHNlY3VyaXR5IG9mIGRhdGE7IHdpcmV0YXAiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle1N6eW1hbnNraToxOTc4OkFDTSwKICBhdXRob3IgPSAgICAgICAiVGhvbWFzIEcuIFN6eW1hbnNraSIsCiAgdGl0bGUgPSAgICAgICAgIkFzc2VtYmxpbmcgQ29kZSBmb3IgbWFjaGluZXMgd2l0aCBTcGFuLURlcGVuZGVudCBJbnN0cnVjdGlvbnMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjEiLAogIG51bWJlciA9ICAgICAgICI0IiwKICBwYWdlcyA9ICAgICAgICAiMzAwLS0zMDgiLAogIG1vbnRoID0gICAgICAgIGFwciwKICB5ZWFyID0gICAgICAgICAiMTk3OCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4QjA1ICg2OEMwNSkiLAogIE1SbnVtYmVyID0gICAgICI4Mmc6NjgwMTUiLAogIG1ycmV2aWV3ZXIgPSAgICJSLiBLLiBTaHlhbWFzdW5kYXIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9Db21waWxlci9Db21waWxlci5MaW5zLmJpYiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MjQwIChQcm9ncmFtbWluZyBhbmQgYWxnb3JpdGhtIHRoZW9yeSk7IEM2MTUwQyAoQ29tcGlsZXJzLCBpbnRlcnByZXRlcnMgYW5kIG90aGVyIHByb2Nlc3NvcnMpIiwKICBjb3Jwc291cmNlID0gICAiUHJpbmNldG9uIFVuaXYuLCBQcmluY2V0b24sIE5KLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJjb2RlIGFzc2VtYmxpbmc7IGNvbXB1dGF0aW9uYWwgY29tcGxleGl0eTsgaW5zdHJ1Y3Rpb25zOyBsZW5ndGhzIG9mIHByb2dyYW1zOyBwcm9ncmFtIGFzc2VtYmxlcnM7IHByb2dyYW1taW5nOyBzcGFuIGRlcGVuZGVudDsgdGhlb3J5IiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtWdWlsbGVtaW46MTk3ODpEU00sCiAgYXV0aG9yID0gICAgICAgIkplYW4gVnVpbGxlbWluIiwKICB0aXRsZSA9ICAgICAgICAiQSBEYXRhIFN0cnVjdHVyZSBmb3IgTWFuaXB1bGF0aW5nIFByaW9yaXR5IFF1ZXVlcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMSIsCiAgbnVtYmVyID0gICAgICAgIjQiLAogIHBhZ2VzID0gICAgICAgICIzMDktLTMxNSIsCiAgbW9udGggPSAgICAgICAgYXByLAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjhBMTAiLAogIE1SbnVtYmVyID0gICAgICI1NyAxODIxNSIsCiAgbXJyZXZpZXdlciA9ICAgIkJlcm5hcmQgSC4gUm9zbWFuIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkEgZGF0YSBzdHJ1Y3R1cmUgaXMgZGVzY3JpYmVkIHdoaWNoIGNhbiBiZSB1c2VkIGZvciByZXByZXNlbnRpbmcgYSBjb2xsZWN0aW9uIG9mIHByaW9yaXR5IHF1ZXVlcy4gVGhlIHByaW1pdGl2ZSBvcGVyYXRpb25zIGFyZSBpbnNlcnRpb24sIGRlbGV0aW9uLCB1bmlvbiwgdXBkYXRlLCBhbmQgc2VhcmNoIGZvciBhbiBpdGVtIG9mIGVhcmxpZXN0IHByaW9yaXR5LiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbikiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIGRlIFBhcmlzLVN1ZCwgT3JzYXksIEZyYW5jZSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBwcm9ncmFtbWluZzsgZGF0YSBzdHJ1Y3R1cmU7IGRhdGEgc3RydWN0dXJlczsgZGVsZXRpb247IGVhcmxpZXN0IHByaW9yaXR5OyBpbnNlcnRpb247IG1hbmlwdWxhdGluZyBwcmlvcml0eSBxdWV1ZXM7IG9wZXJhdGlvbnM7IHByaW1pdGl2ZTsgc2VhcmNoOyB1bmlvbjsgdXBkYXRlIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtFdmVuOjE5Nzg6RUVDLAogIGF1dGhvciA9ICAgICAgICJTLiBFdmVuIGFuZCBNLiBSb2RlaCIsCiAgdGl0bGUgPSAgICAgICAgIkVjb25vbWljYWwgRW5jb2Rpbmcgb2YgQ29tbWFzIEJldHdlZW4gU3RyaW5ncyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMSIsCiAgbnVtYmVyID0gICAgICAgIjQiLAogIHBhZ2VzID0gICAgICAgICIzMTUtLTMxNyIsCiAgbW9udGggPSAgICAgICAgYXByLAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjhBMTAiLAogIE1SbnVtYmVyID0gICAgICI1OCAzNjQ4IiwKICBtcnJldmlld2VyID0gICAiSm9obiBDaGVybmlhdnNreSIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKSIsCiAgY29ycHNvdXJjZSA9ICAgIklzcmFlbCBJbnN0LiBvZiBUZWNobm9sLiwgSGFpZmEsIElzcmFlbCIsCiAga2V5d29yZHMgPSAgICAgImNvbW1hczsgZGF0YSBoYW5kbGluZzsgZGVsaW1pdGVyczsgZW5jb2Rpbmc7IGV4dHJhIGNvc3Q7IHN0cmluZ3MiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0NoZW5nOjE5Nzg6R0JWLAogIGF1dGhvciA9ICAgICAgICJSLiBDLiBILiBDaGVuZyIsCiAgdGl0bGUgPSAgICAgICAgIkdlbmVyYXRpbmcgYmV0YSB2YXJpYXRlcyB3aXRoIG5vbmludGVncmFsIHNoYXBlIHBhcmFtZXRlcnMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjEiLAogIG51bWJlciA9ICAgICAgICI0IiwKICBwYWdlcyA9ICAgICAgICAiMzE3LS0zMjIiLAogIG1vbnRoID0gICAgICAgIGFwciwKICB5ZWFyID0gICAgICAgICAiMTk3OCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY1QzEwIiwKICBNUm51bWJlciA9ICAgICAiNTggMTM2MDkiLAogIG1ycmV2aWV3ZXIgPSAgICJHZW9yZ2UgTWFyc2FnbGlhIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgImZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGlzdHJpYnV0ZWQvUUxELmJpYiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM3MzEwIChNYXRoZW1hdGljcyBjb21wdXRpbmcpIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gb2YgV2FsZXMgSW5zdC4gb2YgU2NpLiBhbmQgVGVjaG5vbC4sIENhcmRpZmYsIFVLIiwKICBjb3VudHJ5ID0gICAgICAiVVNBIiwKICBkZXNjcmlwdG9ycyA9ICAiUlZHOyIsCiAgZW51bSA9ICAgICAgICAgIjcxMjgiLAogIGtleXdvcmRzID0gICAgICJiZXRhIHZhcmlhdGVzOyBjb21wdXRlciB0aW1pbmdzOyBnZW5lcmF0aW5nOyBtZXRob2Q7IG5vbmludGVncmFsIHNoYXBlIHBhcmFtZXRlcnM7IHJhbmRvbSBudW1iZXIgZ2VuZXJhdGlvbjsgcmFuZG9tIG51bWJlcnM7IHJlamVjdGlvbjsgc2ltcGxpY2l0eTsgc3BlZWQ7IHN0YXRpc3RpY3MiLAogIGxhbmd1YWdlID0gICAgICJFbmdsaXNoIiwKICBsb2NhdGlvbiA9ICAgICAiU0VMOiBXaSIsCiAgcmVmZXJlbmNlcyA9ICAgIjAiLAogIHJldmlzaW9uID0gICAgICIxNi8wMS85NCIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7Q2xhcms6MTk3ODpGQUMsCiAgYXV0aG9yID0gICAgICAgIkRvdWdsYXMgVy4gQ2xhcmsiLAogIHRpdGxlID0gICAgICAgICJBIEZhc3QgQWxnb3JpdGhtIGZvciBDb3B5aW5nIExpc3QgU3RydWN0dXJlcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMSIsCiAgbnVtYmVyID0gICAgICAgIjUiLAogIHBhZ2VzID0gICAgICAgICIzNTEtLTM1NyIsCiAgbW9udGggPSAgICAgICAgbWF5LAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9Db21waWxlci9nYXJiYWdlLmNvbGxlY3Rpb24uYmliIiwKICBhYnN0cmFjdCA9ICAgICAiQW4gYWxnb3JpdGhtIGlzIHByZXNlbnRlZCBmb3IgY29weWluZyBhbiBhcmJpdHJhcmlseSBsaW5rZWQgbGlzdCBzdHJ1Y3R1cmUgaW50byBhIGJsb2NrIG9mIGNvbnRpZ3VvdXMgc3RvcmFnZSBsb2NhdGlvbnMgd2l0aG91dCBkZXN0cm95aW5nIHRoZSBvcmlnaW5hbCBsaXN0LiBBcGFydCBmcm9tIGEgZml4ZWQgbnVtYmVyIG9mIHByb2dyYW0gdmFyaWFibGVzLCBubyBhdXhpbGlhcnkgc3RvcmFnZSwgc3VjaCBhcyBhIHN0YWNrLCBpcyB1c2VkLiBUaGUgYWxnb3JpdGhtIG5lZWRzIG5vIG1hcmsgYml0cyBhbmQgb3BlcmF0ZXMgaW4gbGluZWFyIHRpbWUuIEl0IGlzIHNob3duIHRvIGJlIHNpZ25pZmljYW50bHkgZmFzdGVyIHRoYW4gRmlzaGVyJ3MgYWxnb3JpdGhtLCB0aGUgZmFzdGVzdCBwcmV2aW91cyBsaW5lYXItdGltZSBhbGdvcml0aG0gZm9yIHRoZSBzYW1lIHByb2JsZW0uIEl0cyBzcGVlZCBjb21lcyBtYWlubHkgZnJvbSBpdHMgZWZmaWNpZW50IGxpc3QtdHJhdmVyc2FsIHRlY2huaXF1ZSwgd2hpY2ggZm9sZHMgdGhlIHByb2Nlc3Npbmcgc3RhY2sgaW50byB0aGUgc3RydWN0dXJlIGJlaW5nIGJ1aWx0LCBhbmQgZnJvbSBpdHMgY2xhc3NpZmljYXRpb24gb2YgbGlzdCBjZWxscyBpbnRvIG5pbmUgdHlwZXMsIHdoaWNoIGVuYWJsZXMgcHJvY2Vzc2luZyBvcGVyYXRpb25zIHRvIGJlIG9wdGltaXplZCBmb3IgZWFjaCB0eXBlLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTMwIChEYXRhIGhhbmRsaW5nIHRlY2huaXF1ZXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJYZXJveCBQYWxvIEFsdG8gUmVzLiBDZW50ZXIsIFBhbG8gQWx0bywgQ0EsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhcmJpdHJhcmlseSBsaW5rZWQ7IGNsYXNzaWZpY2F0aW9uOyBjb21wdXRlciBwcm9ncmFtbWluZzsgY29udGlndW91cyBzdG9yYWdlIGxvY2F0aW9uczsgY29weWluZzsgZmFzdCBhbGdvcml0aG07IGxpbmVhciB0aW1lOyBsaXN0IHByb2Nlc3Npbmc7IGxpc3Qgc3RydWN0dXJlOyBsaXN0IHN0cnVjdHVyZXM7IGxpc3QgdHJhdmVyc2FsIHRlY2huaXF1ZSIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7Sm9uZXM6MTk3ODpMRUUsCiAgYXV0aG9yID0gICAgICAgIkFuaXRhIEsuIEpvbmVzIGFuZCBCYXJiYXJhIEguIExpc2tvdiIsCiAgdGl0bGUgPSAgICAgICAgIkEgTGFuZ3VhZ2UgRXh0ZW5zaW9uIGZvciBFeHByZXNzaW5nIENvbnN0cmFpbnRzIG9uIERhdGEgQWNjZXNzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIxIiwKICBudW1iZXIgPSAgICAgICAiNSIsCiAgcGFnZXMgPSAgICAgICAgIjM1OC0tMzY3IiwKICBtb250aCA9ICAgICAgICBtYXksCiAgeWVhciA9ICAgICAgICAgIjE5NzgiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L1RoZW9yeS9vYnNjdXJlLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIkNvbnRyb2xsZWQgc2hhcmluZyBvZiBpbmZvcm1hdGlvbiBpcyBuZWVkZWQgYW5kIGRlc2lyYWJsZSBmb3IgbWFueSBhcHBsaWNhdGlvbnMgYW5kIGlzIHN1cHBvcnRlZCBpbiBvcGVyYXRpbmcgc3lzdGVtcyBieSBhY2Nlc3MgY29udHJvbCBtZWNoYW5pc21zLiBUaGlzIHdvcmsgc2hvd3MgaG93IHRvIGV4dGVuZCBwcm9ncmFtbWluZyBsYW5ndWFnZXMgdG8gcHJvdmlkZSBjb250cm9sbGVkIHNoYXJpbmcuIFRoZSBleHRlbnNpb24gcGVybWl0cyBleHByZXNzaW9uIG9mIGFjY2VzcyBjb25zdHJhaW50cyBvbiBzaGFyZWQgZGF0YS4gQWNjZXNzIGNvbnN0cmFpbnRzIGNhbiBhcHBseSBib3RoIHRvIHNpbXBsZSBvYmplY3RzLCBhbmQgdG8gb2JqZWN0cyB0aGF0IGFyZSBjb21wb25lbnRzIG9mIGxhcmdlciBvYmplY3RzLCBzdWNoIGFzIGJhbmsgYWNjb3VudCByZWNvcmRzIGluIGEgYmFuaydzIGRhdGEgYmFzZS4gVGhlIGFwcHJvYWNoIGNhbiBiZSB1c2VkIHRvIGV4dGVuZCBhbnkgc3Ryb25nbHktdHlwZWQgbGFuZ3VhZ2UsIGJ1dCBpcyBwYXJ0aWN1bGFybHkgc3VpdGFibGUgZm9yIGV4dGVuZGluZyBsYW5ndWFnZXMgdGhhdCBzdXBwb3J0IHRoZSBub3Rpb24gb2YgYWJzdHJhY3QgZGF0YSB0eXBlcy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pOyBDNjE0MEQgKEhpZ2ggbGV2ZWwgbGFuZ3VhZ2VzKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiQ2FybmVnaWUtTWVsbG9uIFVuaXYuLCBQaXR0c2J1cmcsIFBBLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYWJzdHJhY3QgZGF0YSB0eXBlczsgYWNjZXNzIGNvbnRyb2w7IGNvbXB1dGVyIHByb2dyYW1taW5nIGxhbmd1YWdlczsgY29uc3RyYWludHM7IGRhdGEgYWNjZXNzOyBkYXRhIHN0cnVjdHVyZXM7IGxhbmd1YWdlIGV4dGVuc2lvbjsgbWVjaGFuaXNtczsgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtHZWxsZXI6MTk3ODpUREEsCiAgYXV0aG9yID0gICAgICAgIk1hdHRoZXcgR2VsbGVyIiwKICB0aXRsZSA9ICAgICAgICAiVGVzdCBEYXRhIGFzIGFuIEFpZCBpbiBQcm92aW5nIFByb2dyYW0gQ29ycmVjdG5lc3MiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjEiLAogIG51bWJlciA9ICAgICAgICI1IiwKICBwYWdlcyA9ICAgICAgICAiMzY4LS0zNzUiLAogIG1vbnRoID0gICAgICAgIG1heSwKICB5ZWFyID0gICAgICAgICAiMTk3OCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4QTA1IiwKICBNUm51bWJlciA9ICAgICAiNTcgMTQ1NzUiLAogIG1ycmV2aWV3ZXIgPSAgICJMdWlnaWEgQWllbGxvIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlByb29mcyBvZiBwcm9ncmFtIGNvcnJlY3RuZXNzIHRlbmQgdG8gYmUgbG9uZyBhbmQgdGVkaW91cywgd2hlcmVhcyB0ZXN0aW5nLCB0aG91Z2ggdXNlZnVsIGluIGRldGVjdGluZyBlcnJvcnMsIHVzdWFsbHkgZG9lcyBub3QgZ3VhcmFudGVlIGNvcnJlY3RuZXNzLiBBIHRlY2huaXF1ZSBpcyBpbnRyb2R1Y2VkIHdoZXJlYnkgdGVzdCBkYXRhIGNhbiBiZSB1c2VkIGluIHByb3ZpbmcgcHJvZ3JhbSBjb3JyZWN0bmVzcy4gSW4gYWRkaXRpb24gdG8gc2ltcGxpZnlpbmcgdGhlIHByb2Nlc3Mgb2YgcHJvdmluZyBjb3JyZWN0bmVzcywgdGhpcyBtZXRob2Qgc2ltcGxpZmllcyB0aGUgcHJvY2VzcyBvZiBwcm92aWRpbmcgYWNjdXJhdGUgc3BlY2lmaWNhdGlvbiBmb3IgYSBwcm9ncmFtLiBUaGUgYXBwbGljYWJpbGl0eSBvZiB0aGlzIHRlY2huaXF1ZSB0byBwcm9jZWR1cmVzIGFuZCByZWN1cnNpdmUgcHJvZ3JhbXMgaXMgZGVtb25zdHJhdGVkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MjQwIChQcm9ncmFtbWluZyBhbmQgYWxnb3JpdGhtIHRoZW9yeSk7IEM2MTUwRyAoRGlhZ25vc3RpYywgdGVzdGluZywgZGVidWdnaW5nIGFuZCBldmFsdWF0aW5nIHN5c3RlbXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBvZiBNaWNoaWdhbiwgQW5uIEFyYm9yLCBNSSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIHByb2dyYW1taW5nOyBwcm9jZWR1cmVzOyBwcm9ncmFtIHRlc3Rpbmc7IHByb2dyYW1taW5nIHRoZW9yeTsgcHJvdmluZyBwcm9ncmFtIGNvcnJlY3RuZXNzOyByZWN1cnNpdmUgcHJvZ3JhbXM7IHNwZWNpZmljYXRpb247IHRlc3QgZGF0YSIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7TG93OjE5Nzg6QURTLAogIGF1dGhvciA9ICAgICAgICJKYW1lcyBSLiBMb3ciLAogIHRpdGxlID0gICAgICAgICJBdXRvbWF0aWMgRGF0YSBTdHJ1Y3R1cmUgU2VsZWN0aW9uOiBhbiBFeGFtcGxlIGFuZCBPdmVydmlldyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMSIsCiAgbnVtYmVyID0gICAgICAgIjUiLAogIHBhZ2VzID0gICAgICAgICIzNzYtLTM4NSIsCiAgbW9udGggPSAgICAgICAgbWF5LAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9UaGVvcnkvb2JzY3VyZS5iaWIiLAogIGFic3RyYWN0ID0gICAgICJJbiB0aGUgcGFzdCwgcHJvZ3JhbW1pbmcgc3lzdGVtcyBoYXZlIHByb3ZpZGVkIG9ubHkgYSBzaW5nbGUgZ2VuZXJhbCBwdXJwb3NlIGltcGxlbWVudGF0aW9uIGZvciBhbiBhYnN0cmFjdCB0eXBlLiBUaHVzIHRoZSBwcm9ncmFtcyBwcm9kdWNlZCB1c2luZyBhYnN0cmFjdCB0eXBlcyB3ZXJlIG9mdGVuIGluZWZmaWNpZW50IGluIHNwYWNlIG9yIHRpbWUuIEEgc3lzdGVtIGZvciBhdXRvbWF0aWNhbGx5IGNob29zaW5nIGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbnMgZm9yIGFic3RyYWN0IHR5cGVzIGZyb20gYSBsaWJyYXJ5IG9mIGltcGxlbWVudGF0aW9ucyBmb3IgYWJzdHJhY3QgdHlwZXMgZnJvbSBhIGxpYnJhcnkgb2YgaW1wbGVtZW50YXRpb25zIGlzIGRpc2N1c3NlZC4gVGhpcyBwcm9jZXNzIGlzIGRpc2N1c3NlZCBpbiBkZXRhaWwgZm9yIGFuIGV4YW1wbGUgcHJvZ3JhbS4gR2VuZXJhbCBpc3N1ZXMgaW4gZGF0YSBzdHJ1Y3R1cmUgc2VsZWN0aW9uIGFyZSBhbHNvIHJldmlld2VkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTEwIChTeXN0ZW1zIGFuYWx5c2lzIGFuZCBwcm9ncmFtbWluZyk7IEM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbik7IEM2MTUwQyAoQ29tcGlsZXJzLCBpbnRlcnByZXRlcnMgYW5kIG90aGVyIHByb2Nlc3NvcnMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBvZiBSb2NoZXN0ZXIsIFJvY2hlc3RlciwgTlksIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhYnN0cmFjdCBkYXRhIHR5cGVzOyBhdXRvbWF0aWMgcHJvZ3JhbW1pbmc7IGF1dG9tYXRpY2FsbHk7IGNvbXB1dGVyIHByb2dyYW1taW5nOyBkYXRhIHByb2Nlc3NpbmcgLS0tIERhdGEgU3RydWN0dXJlczsgZGF0YSBzdHJ1Y3R1cmUgc2VsZWN0aW9uOyBkYXRhIHN0cnVjdHVyZXM7IGxpc3RzOyBwcm9ncmFtIGNvbXBpbGVyczsgcHJvZ3JhbXM7IHNldHMiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0thcnI6MTk3ODpJVVAsCiAgYXV0aG9yID0gICAgICAgIk1pY2hhZWwgS2FyciBhbmQgRGF2aWQgQi4ge0xvdmVtYW4gSUlJfSIsCiAgdGl0bGUgPSAgICAgICAgIkluY29ycG9yYXRpb24gb2YgVW5pdHMgaW50byBQcm9ncmFtbWluZyBMYW5ndWFnZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjEiLAogIG51bWJlciA9ICAgICAgICI1IiwKICBwYWdlcyA9ICAgICAgICAiMzg1LS0zOTEiLAogIG1vbnRoID0gICAgICAgIG1heSwKICB5ZWFyID0gICAgICAgICAiMTk3OCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGF0YWJhc2UvZGF0YWJhc2UuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiVGhlIGlzc3VlcyBvZiBob3cgYSBwcm9ncmFtbWluZyBsYW5ndWFnZSBtaWdodCBhaWQgaW4ga2VlcGluZyB0cmFjayBvZiBwaHlzaWNhbCB1bml0cyAoZmVldCwgc2VjLCBldGMuICkgYXJlIGRpc2N1c3NlZC4gQSBtZXRob2QgaXMgZ2l2ZW4gZm9yIHRoZSBpbnRyb2R1Y3Rpb24gb2YgcmVsYXRpb25zaGlwcyBhbW9uZyB1bml0cyAoYSB3YXR0IGlzIHZvbHRzICphbXBzLCBhIHlhcmQgaXMgdGhyZWUgZmVldCkgYW5kIHN1YnNlcXVlbnQgYXV0b21hdGljIGNvbnZlcnNpb24gYmFzZWQgdXBvbiB0aGVzZSByZWxhdGlvbnNoaXBzLiBWYXJpb3VzIHByb3Bvc2FscyBmb3Igc3ludGF4IGFyZSBjb25zaWRlcmVkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTEwIChTeXN0ZW1zIGFuYWx5c2lzIGFuZCBwcm9ncmFtbWluZyk7IEM2MTQwRCAoSGlnaCBsZXZlbCBsYW5ndWFnZXMpOyBDNjE1MEMgKENvbXBpbGVycywgaW50ZXJwcmV0ZXJzIGFuZCBvdGhlciBwcm9jZXNzb3JzKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiTWFzc2FjaHVzZXR0cyBDb21wdXRlciBBc3NvY2lhdGVzIEluYy4sIFdha2VzZmllbGQsIE1BLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiKG1lYXN1cmVtZW50KTsgYXV0b21hdGljIGNvbnZlcnNpb247IGNvbXB1dGVyIHByb2dyYW1taW5nIGxhbmd1YWdlczsgcGh5c2ljYWwgdW5pdHM7IHByb2dyYW0gY29tcGlsZXJzOyBwcm9ncmFtbWluZyBsYW5ndWFnZTsgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzOyByZWxhdGlvbnNoaXBzIGFtb25nOyBzeW50YXg7IHVuaXRzIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtIYW5zb246MTk3ODpTUE0sCiAgYXV0aG9yID0gICAgICAgIkRhdmlkIFIuIEhhbnNvbiBhbmQgUmFscGggRS4gR3Jpc3dvbGQiLAogIHRpdGxlID0gICAgICAgICJUaGUge1NMNX0gcHJvY2VkdXJlIG1lY2hhbmlzbSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMSIsCiAgbnVtYmVyID0gICAgICAgIjUiLAogIHBhZ2VzID0gICAgICAgICIzOTItLTQwMCIsCiAgbW9udGggPSAgICAgICAgbWF5LAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkRlc2NyaXB0aW9uIG9mIGFuIGludGVncmF0ZWQgcHJvY2VkdXJlIG1lY2hhbmlzbSB0aGF0IHBlcm1pdHMgcHJvY2VkdXJlcyB0byBiZSB1c2VkIGFzIHJlY3Vyc2l2ZSBmdW5jdGlvbnMgb3IgYXMgY29yb3V0aW5lcy4gVGhpcyBpbnRlZ3JhdGlvbiBpcyBhY2NvbXBsaXNoZWQgYnkgdHJlYXRpbmcgcHJvY2VkdXJlcyBhbmQgdGhlaXIgYWN0aXZhdGlvbiByZWNvcmRzIChjYWxsZWQgZW52aXJvbm1lbnRzKSBhcyBkYXRhIG9iamVjdHMgYW5kIGJ5IGRlY29tcG9zaW5nIHByb2NlZHVyZSBpbnZvY2F0aW9uIGludG8gdGhyZWUgc2VwYXJhdGUgY29tcG9uZW50cyBhdCB0aGUgc291cmNlLWxhbmd1YWdlIGxldmVsLiBJbiBhZGRpdGlvbiwgYXJndW1lbnQgYmluZGluZyBpcyB1bmRlciB0aGUgY29udHJvbCBvZiB0aGUgcHJvZ3JhbW1lciwgcGVybWl0dGluZyB0aGUgZGVmaW5pdGlvbiBvZiB2YXJpb3VzIG1ldGhvZHMgb2YgYXJndW1lbnQgdHJhbnNtaXNzaW9uIGluIHRoZSBzb3VyY2UgbGFuZ3VhZ2UgaXRzZWxmLiBUaGUgcmVzdWx0aW5nIHByb2NlZHVyZSBtZWNoYW5pc20sIHdoaWNoIGlzIHBhcnQgb2YgdGhlIFNMNSBwcm9ncmFtbWluZyBsYW5ndWFnZSwgaXMgd2VsbCBzdWl0ZWQgdG8gZ29hbC1vcmllbnRlZCBwcm9ibGVtcyBhbmQgdG8gb3RoZXIgcHJvYmxlbXMgdGhhdCBhcmUgbW9yZSByZWFkaWx5IHByb2dyYW1tZWQgYnkgdXNpbmcgY29yb3V0aW5lcy4gU2V2ZXJhbCBleGFtcGxlcyBhcmUgZ2l2ZW4uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxNDBEIChIaWdoIGxldmVsIGxhbmd1YWdlcyk7IEM2MTUwQyAoQ29tcGlsZXJzLCBpbnRlcnByZXRlcnMgYW5kIG90aGVyIHByb2Nlc3NvcnMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJZYWxlIFVuaXYuLCBOZXcgSGF2ZW4sIENULCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYWN0aXZhdGlvbiByZWNvcmRzOyBhcmd1bWVudCBiaW5kaW5nOyBhcmd1bWVudCB0cmFuc21pc3Npb247IGNvbXB1dGVyIHByb2dyYW1taW5nIGxhbmd1YWdlczsgY29yb3V0aW5lczsgcHJvY2VkdXJlIGludm9jYXRpb247IHByb2NlZHVyZSBtZWNoYW5pc207IHByb2dyYW0gaW50ZXJwcmV0ZXJzOyBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IHJlY3Vyc2l2ZSBmdW5jdGlvbnM7IFNMNSIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7SGF5ZXMtUm90aDoxOTc4OklNVCwKICBhdXRob3IgPSAgICAgICAiRnJlZGVyaWNrIEhheWVzLVJvdGggYW5kIEpvaG4gTWNEZXJtb3R0IiwKICB0aXRsZSA9ICAgICAgICAiQW4gSW50ZXJmZXJlbmNlIE1hdGNoaW5nIFRlY2huaXF1ZSBmb3IgSW5kdWNpbmcgQWJzdHJhY3Rpb25zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIxIiwKICBudW1iZXIgPSAgICAgICAiNSIsCiAgcGFnZXMgPSAgICAgICAgIjQwMS0tNDExIiwKICBtb250aCA9ICAgICAgICBtYXksCiAgeWVhciA9ICAgICAgICAgIjE5NzgiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0FpL2NvbHQuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiQSBtZXRob2QgZm9yIGluZHVjaW5nIGtub3dsZWRnZSBieSBhYnN0cmFjdGlvbiBmcm9tIGEgc2VxdWVuY2Ugb2YgdHJhaW5pbmcgZXhhbXBsZXMgaXMgZGVzY3JpYmVkLiBccGFyIFRoZSBwcm9wb3NlZCBtZXRob2QsIGludGVyZmVyZW5jZSBtYXRjaGluZywgaW5kdWNlcyBhYnN0cmFjdGlvbnMgYnkgZmluZGluZyByZWxhdGlvbmFsIHByb3BlcnRpZXMgY29tbW9uIHRvIHR3byBvciBtb3JlIGV4ZW1wbGFycy4gVGhyZWUgdGFza3Mgc29sdmVkIGJ5IGEgcHJvZ3JhbSB0aGF0IHVzZXMgYW4gaW50ZXJmZXJlbmNlLW1hdGNoaW5nIGFsZ29yaXRobSBhcmUgcHJlc2VudGVkLiBTZXZlcmFsIHByb2JsZW1zIGNvbmNlcm5pbmcgdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSB0cmFpbmluZyBleGFtcGxlcyBhbmQgdGhlIGFkZXF1YWN5IG9mIGludGVyZmVyZW5jZSBtYXRjaGluZyBhcmUgZGlzY3Vzc2VkLCBhbmQgZGlyZWN0aW9ucyBmb3IgZnV0dXJlIHJlc2VhcmNoIGFyZSBjb25zaWRlcmVkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMxMjMwIChBcnRpZmljaWFsIGludGVsbGlnZW5jZSk7IEM2MTQwRCAoSGlnaCBsZXZlbCBsYW5ndWFnZXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJSYW5kIENvcnAuLCBTYW50YSBNb25pY2EsIENBLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYWJzdHJhY3Rpb247IGFic3RyYWN0aW9uczsgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2U7IGNvbXBsZXhpdHk7IGNvbXB1dGVyIG1ldGF0aGVvcnkgLS0tIFByb2dyYW1taW5nIFRoZW9yeTsgY29tcHV0ZXIgcHJvZ3JhbW1pbmc7IGdlbmVyYWxpemF0aW9uOyBncmFwaCBtYXRjaGluZzsgaW5kdWNpbmcga25vd2xlZGdlOyBpbmR1Y3Rpb247IGluZm9ybWFsIHJldHJpZXZhbDsgaW50ZXJmZXJlbmNlOyBpbnRlcmZlcmVuY2UgbWF0Y2hpbmc7IGtub3dsZWRnZSBhY3F1aXNpdGlvbjsga25vd2xlZGdlIHJlcHJlc2VudGF0aW9uOyBsYW5ndWFnZSBsZWFybmluZzsgbGVhcm5pbmc7IHBhcnRpYWwgbWF0Y2hpbmc7IHByZWRpY2F0ZSBkaXNjb3ZlcnkuOyBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IHJlbGF0aW9uYWwgcHJvcGVydGllczsgUnVsZSBpbmR1Y3Rpb247IFNQUk9VVEVSOyB0cmFpbmluZyBleGFtcGxlcyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7RmxlaXNoZXI6MTk3ODpOU08sCiAgYXV0aG9yID0gICAgICAgIkouIE0uIEZsZWlzaGVyIGFuZCBSLiBSLiBNZXllciIsCiAgdGl0bGUgPSAgICAgICAgIk5ldyBTdWZmaWNpZW50IE9wdGltYWxpdHkgQ29uZGl0aW9ucyBmb3IgSW50ZWdlciBQcm9ncmFtbWluZyBhbmQgVGhlaXIgQXBwbGljYXRpb24iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjEiLAogIG51bWJlciA9ICAgICAgICI1IiwKICBwYWdlcyA9ICAgICAgICAiNDExLS00MTgiLAogIG1vbnRoID0gICAgICAgIG1heSwKICB5ZWFyID0gICAgICAgICAiMTk3OCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjkwQzEwIiwKICBNUm51bWJlciA9ICAgICAiNTggMTUxMzciLAogIG1ycmV2aWV3ZXIgPSAgICJGLiBHaWFubmVzc2kiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiUmVwb3J0IG9uIGEgbmV3IGNsYXNzIG9mIHN1ZmZpY2llbnQgb3B0aW1hbGl0eSBjb25kaXRpb25zIGZvciBwdXJlIGFuZCBtaXhlZCBpbnRlZ2VyIHByb2dyYW1taW5nIHByb2JsZW1zLiBTb21lIG9mIHRoZSBzZXRzIG9mIHN1ZmZpY2llbnQgY29uZGl0aW9ucyBwcmVzZW50ZWQgY2FuIGJlIHRob3VnaHQgb2YgYXMgZ2VuZXJhbGl6YXRpb25zIG9mIG9wdGltYWxpdHkgY29uZGl0aW9ucyBiYXNlZCBvbiBwcmltYWwtZHVhbCBjb21wbGVtZW50YXJpdHkgaW4gbGluZWFyIHByb2dyYW1taW5nLiBUaGVzZSBzdWZmaWNpZW50IGNvbmRpdGlvbnMgYXJlIHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yIHRoZSBjb25zdHJ1Y3Rpb24gb2YgZGlmZmljdWx0IGludGVnZXIgcHJvZ3JhbW1pbmcgcHJvYmxlbXMgd2l0aCBrbm93biBvcHRpbWFsIHNvbHV0aW9ucy4gVGhlc2UgcHJvYmxlbXMgbWF5IHRoZW4gYmUgdXNlZCB0byB0ZXN0IGFuZFxzbGFzaCBvciBgYGJlbmNobWFyaycnIGludGVnZXIgcHJvZ3JhbW1pbmcgY29kZXMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzExODAgKE9wdGltaXNhdGlvbiB0ZWNobmlxdWVzKTsgQzEyOTAgKEFwcGxpY2F0aW9ucyBvZiBzeXN0ZW1zIHRoZW9yeSkiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMzsgOTIxIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gb2YgV2lzY29uc2luLCBNYWRpc29uLCBXSSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImludGVnZXIgcHJvZ3JhbW1pbmc7IG1hdGhlbWF0aWNhbCBwcm9ncmFtbWluZzsgc3VmZmljaWVudCBvcHRpbWFsaXR5IGNvbmRpdGlvbnMiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle1RhZGlrYW1hbGxhOjE5Nzg6Q0dHLAogIGF1dGhvciA9ICAgICAgICJQYW5kdSBSLiBUYWRpa2FtYWxsYSIsCiAgdGl0bGUgPSAgICAgICAgIkNvbXB1dGVyIEdlbmVyYXRpb24gb2YgR2FtbWEgUmFuZG9tIFZhcmlhYmxlcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMSIsCiAgbnVtYmVyID0gICAgICAgIjUiLAogIHBhZ2VzID0gICAgICAgICI0MTktLTQyMiIsCiAgbW9udGggPSAgICAgICAgbWF5LAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjVDMTAiLAogIE1SbnVtYmVyID0gICAgICI1OCAxMzYxNCIsCiAgbXJyZXZpZXdlciA9ICAgIkdlb3JnZSBNYXJzYWdsaWEiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0Rpc3RyaWJ1dGVkL1FMRC8xOTc4LmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIkEgbmV3IG1ldGhvZCBmb3IgZ2VuZXJhdGluZyByYW5kb20gdmFyaWFibGVzIGZyb20gdGhlIGdhbW1hIGRpc3RyaWJ1dGlvbiB3aXRoIG5vbmludGVncmFsIHNoYXBlIHBhcmFtZXRlciBhbHBoYSBpcyBwcm9wb3NlZC4gVGhpcyBtZXRob2QgaXMgc2ltaWxhciB0byB0d28gb3RoZXIgbWV0aG9kcyByZWNlbnRseSBnaXZlbiBieSBOLiBELiBXYWxsYWNlIGFuZCBHLiBTLiBGaXNobWFuLiBJdCBpcyBjb21wYXJlZCB3aXRoIEZpc2htYW4ncyBhbmQgSi4gSC4gQWhyZW5zIGFuZCBVLiBEaWV0ZXIncyBtZXRob2RzLiBUaGUgY29yZSBzdG9yYWdlIHJlcXVpcmVtZW50cyBhbmQgcHJvZ3JhbW1pbmcgZWZmb3J0IGZvciB0aGlzIG1ldGhvZCBhcmUgc2ltaWxhciB0byB0aG9zZSBvZiBGaXNobWFuJ3MgbWV0aG9kLiBUaGUgcHJvcG9zZWQgbWV0aG9kIGlzIHRoZSBzYW1lIGFzIEZpc2htYW4ncyBtZXRob2QgZm9yIDEgbGVzcyB0aGFuIGVxdWl2YWxlbnQgdG8gYWxwaGEgbGVzcyB0aGFuIDIgYW5kIGlzIGZhc3RlciB0aGFuIEZpc2htYW4ncyBtZXRob2QgZm9yIDMgbGVzcyB0aGFuIGVxdWl2YWxlbnQgdG8gYWxwaGEgbGVzcyB0aGFuIGVxdWl2YWxlbnQgdG8gMTkuIEFsc28sIHRoZSBwcm9wb3NlZCBtZXRob2QgaXMgbXVjaCBzaW1wbGVyIHRoYW4gQWhyZW5zIGFuZCBEaWV0ZXIncyBtZXRob2QgYW5kIGlzIGZhc3RlciBmb3IgYWxwaGEgbGVzcyB0aGFuIGVxdWl2YWxlbnQgdG8gOC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDMTE0MCAoUHJvYmFiaWxpdHkgYW5kIHN0YXRpc3RpY3MpOyBDNzMxMCAoTWF0aGVtYXRpY3MgY29tcHV0aW5nKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzOyA5MjIiLAogIGNvcnBzb3VyY2UgPSAgICJFYXN0ZXJuIEtlbnR1Y2t5IFVuaXYuLCBSaWNobW9uZCwgS1ksIFVTQSIsCiAgY291bnRyeSA9ICAgICAgIlVTQSIsCiAgZGF0ZSA9ICAgICAgICAgIjEzLzA1LzkzIiwKICBkZXNjcmlwdG9ycyA9ICAiUlZHOyIsCiAgZW51bSA9ICAgICAgICAgIjc5NDMiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgcHJvZ3JhbW1pbmc7IG1hdGhlbWF0aWNhbCBzdGF0aXN0aWNzIC0tLSBSYW5kb20gTnVtYmVyIEdlbmVyYXRpb24iLAogIGtleXdvcmRzID0gICAgICJjb3JlOyBnYW1tYSBkaXN0cmlidXRpb247IGdhbW1hIHJhbmRvbSB2YXJpYWJsZXM7IGdlbmVyYXRpbmc7IHByb2dyYW1taW5nIGVmZm9ydDsgc3RhdGlzdGljczsgc3RvcmFnZSByZXF1aXJlbWVudHMiLAogIGxhbmd1YWdlID0gICAgICJFbmdsaXNoIiwKICByZWZlcmVuY2VzID0gICAiMCIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7U2l0ZXM6MTk3ODpPU1MsCiAgYXV0aG9yID0gICAgICAgIlJpY2hhcmQgTC4gU2l0ZXMiLAogIHRpdGxlID0gICAgICAgICJPcHRpbWFsIFNoaWZ0IFN0cmF0ZWd5IGZvciBhIEJsb2NrLVRyYW5zZmVyIHtDQ0R9IE1lbW9yeSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMSIsCiAgbnVtYmVyID0gICAgICAgIjUiLAogIHBhZ2VzID0gICAgICAgICI0MjMtLTQyNSIsCiAgbW9udGggPSAgICAgICAgbWF5LAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkl0IGlzIHNob3duIHRoYXQgdGhlIG9wdGltYWwgc2hpZnQgc3RyYXRlZ3kgZm9yIGFuIGVsZWN0cm9uaWMgcGFnaW5nIGRydW0gd2l0aCB2YXJpYWJsZSBidXQgYm91bmRlZCByb3RhdGlvbiBzcGVlZCBpcyB0byBzaGlmdCBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIG92ZXIgbW9zdCBvZiBhIGN5Y2xlLCB0aGVuIHRvIHNoaWZ0IGFzIHNsb3dseSBhcyBwb3NzaWJsZSBvdmVyIHRoZSByZXN0LCB3aGVyZSB0aGUgZnJhY3Rpb24gb2YgYSBjeWNsZSB0byBiZSBjb3ZlcmVkIHNsb3dseSBpcyBhIGZ1bmN0aW9uIG9mIHRoZSBzcXVhcmUgcm9vdCBvZiB0aGUgcmF0aW8gYmV0d2VlbiB0aGUgbWF4aW11bSBhbmQgbWluaW11bSByb3RhdGlvbiBzcGVlZHMuIEZvciBhIHJhdGlvIG9mIDEwMDoxLCAxMFxzbGFzaCAxMSBvZiBhIGZ1bGwgY3ljbGUgc2hvdWxkIGJlIGNvdmVyZWQgcXVpY2tseSBhbmQgMS8xMSBzaG91bGQgYmUgY292ZXJlZCBzbG93bHkuIEFzIGRldmljZSBtYW51ZmFjdHVyZXJzIGluY3JlYXNlIHRoaXMgcmF0aW8sIHRoZSBhdmVyYWdlIGxhdGVuY3kgZm9yIGEgYmxvY2sgdHJhbnNmZXIgd2lsbCBzbG93bHkgZGVjcmVhc2UuIEluY3JlYXNpbmcgdGhlIHJhdyBzaGlmdCBzcGVlZCB3aWxsIG9mIGNvdXJzZSBkaXJlY3RseSByZWR1Y2UgYm90aCB0aGUgbGF0ZW5jeSB0aW1lIGFuZCB0aGUgYmxvY2sgdHJhbnNmZXIgdGltZS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjIiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBvZiBDYWxpZm9ybmlhLCBTYW4gRGllZ28sIExhIEpvbGxhLCBDQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImJlc3Qgc2hpZnQgc3RyYXRlZ3k7IGJsb2NrIHRyYW5zZmVyIENDRCBtZW1vcnk7IGNoYXJnZS1jb3VwbGVkIGRldmljZSBjaXJjdWl0czsgY29tcHV0ZXIgb3BlcmF0aW5nIHN5c3RlbXM7IGNyaXRpY2FsIGJvdW5kYXJ5OyBodXJyeSB1cCBhbmQgd2FpdDsgb3B0aW1hbDsgcGFnaW5nIGRydW07IHNlcmlhbCBzaGlmdCByZWdpc3RlcnM7IHN0b3JhZ2UgYWxsb2NhdGlvbjsgc3RyYXRlZ3kiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle1p3ZWJlbjoxOTc4Ok9NRCwKICBhdXRob3IgPSAgICAgICAiUy4gSC4gWndlYmVuIGFuZCBNLiBBLiBNY0RvbmFsZCIsCiAgdGl0bGUgPSAgICAgICAgIkFuIE9wdGltYWwgTWV0aG9kIGZvciBEZWxldGlvbiBpbiBPbmUtU2lkZWQgSGVpZ2h0LUJhbGFuY2VkIFRyZWVzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIxIiwKICBudW1iZXIgPSAgICAgICAiNiIsCiAgcGFnZXMgPSAgICAgICAgIjQ0MS0tNDQ1IiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzgiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2OEUxMCAoNjhCMDUgNjhDMjUpIiwKICBNUm51bWJlciA9ICAgICAiODBrOjY4MDU0IiwKICBtcnJldmlld2VyID0gICAiQS4gVC4gQW1pbiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJBIG9uZS1zaWRlZCBoZWlnaHQtYmFsYW5jZWQgdHJlZSBpcyBhIGJpbmFyeSB0cmVlIGluIHdoaWNoIGV2ZXJ5IG1vZGUncyByaWdodCBzdWJ0cmVlIGhhcyBhIGhlaWdodCB3aGljaCBpcyBlcXVhbCB0byBvciBleGFjdGx5IG9uZSBncmVhdGVyIHRoYW4gdGhlIGhlaWdodCBvZiBpdHMgbGVmdCBzdWJ0cmVlLiBJdCBoYXMgYW4gYWR2YW50YWdlIG92ZXIgdGhlIG1vcmUgZ2VuZXJhbCBBVkwgdHJlZSBpbiB0aGF0IG9ubHkgb25lIGJpdCBvZiBiYWxhbmNpbmcgaW5mb3JtYXRpb24gaXMgcmVxdWlyZWQgKHR3byBiaXRzIGFyZSByZXF1aXJlZCBmb3IgdGhlIEFWTCB0cmVlKS4gSXQgaXMgc2hvd24gdGhhdCBkZWxldGlvbiBvZiBhbiBhcmJpdHJhcnkgbm9kZSBvZiBzdWNoIGEgdHJlZSBjYW4gYmUgYWNjb21wbGlzaGVkIGluIE8obG9nIG4pIG9wZXJhdGlvbnMsIHdoZXJlIG4gaXMgdGhlIG51bWJlciBvZiBub2RlcyBpbiB0aGUgdHJlZS4gTW9yZW92ZXIgdGhlIG1ldGhvZCBpcyBvcHRpbWFsIGluIHRoZSBzZW5zZSB0aGF0IGl0cyBjb21wbGV4aXR5IGNhbm5vdCBiZSByZWR1Y2VkIGluIG9yZGVyIG9mIG1hZ25pdHVkZS4gVGhpcyByZXN1bHQsIGNvdXBsZWQgd2l0aCBlYXJsaWVyIHJlc3VsdHMgYnkgRC4gUy4gSGlyc2NoYmVyZywgaW5kaWNhdGVzIHRoYXQsIG9mIHRoZSB0aHJlZSBiYXNpYyBwcm9ibGVtcyBvZiBpbnNlcnRpb24sIGRlbGV0aW9uLCBhbmQgcmV0cmlldmFsLCBvbmx5IGluc2VydGlvbiBpcyBhZHZlcnNlbHkgYWZmZWN0ZWQgYnkgdGhpcyBtb2RpZmljYXRpb24gb2YgYW4gQVZMIHRyZWUuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQyNDAgKFByb2dyYW1taW5nIGFuZCBhbGdvcml0aG0gdGhlb3J5KTsgQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiT2hpbyBTdGF0ZSBVbml2LiwgQ29sdW1idXMsIE9ILCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYXJiaXRyYXJ5IG5vZGU7IGJpbmFyeSB0cmVlOyBjb21wdXRlciBwcm9ncmFtbWluZzsgZGF0YSBzdHJ1Y3R1cmVzOyBkZWxldGlvbjsgb25lOyBvcHRpbWFsIG1ldGhvZDsgcHJvZ3JhbW1pbmcgdGhlb3J5OyBzaWRlZCBoZWlnaHQgYmFsYW5jZWQgdHJlZXM7IHRyZWVzIChtYXRoZW1hdGljcykiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0RyaXNjb2xsOjE5Nzg6U1RBLAogIGF1dGhvciA9ICAgICAgICJKYW1lcyBSLiBEcmlzY29sbCBhbmQgWS4gRWRtdW5kIExpZW4iLAogIHRpdGxlID0gICAgICAgICJBIFNlbGVjdGl2ZSBUcmF2ZXJzYWwgQWxnb3JpdGhtIGZvciBCaW5hcnkgU2VhcmNoIFRyZWVzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIxIiwKICBudW1iZXIgPSAgICAgICAiNiIsCiAgcGFnZXMgPSAgICAgICAgIjQ0NS0tNDQ3IiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzgiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiVGhlIHByb2JsZW0gb2Ygc2VsZWN0aW5nIGRhdGEgaXRlbXMgZnJvbSBhIGJpbmFyeSBzZWFyY2ggdHJlZSBhY2NvcmRpbmcgdG8gYSBsaXN0IG9mIHJhbmdlIGNvbmRpdGlvbnMgaXMgY29uc2lkZXJlZC4gVGhlIHByb2Nlc3Mgb2YgdmlzaXRpbmcgYSBtaW5pbWFsIG51bWJlciBvZiBub2RlcyB0byByZXRyaWV2ZSBkYXRhIHNhdGlzZnlpbmcgdGhlIHJhbmdlIGNvbmRpdGlvbnMgaXMgY2FsbGVkIHNlbGVjdGl2ZSB0cmF2ZXJzYWwuIFByZXNlbnRlZCBpbiB0aGlzIHBhcGVyIGlzIGFuIGFsZ29yaXRobSBmb3Igc2VsZWN0aXZlIHRyYXZlcnNhbCB3aGljaCB1c2VzIGEgdGFnIGZpZWxkIGZvciBlYWNoIG5vZGUgaW4gdGhlIHRyZWUuIFRoZSBhbGdvcml0aG0gaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBhbmQgZWZmaWNpZW50IHdoZW4gZXhhbWluYXRpb24gb2YgZGF0YSBpcyBtb3JlIHRpbWUgY29uc3VtaW5nIHRoYW4gZXhhbWluYXRpb24gb2YgYSB0YWcgZmllbGQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQyNDAgKFByb2dyYW1taW5nIGFuZCBhbGdvcml0aG0gdGhlb3J5KTsgQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiRmxvcmlkYSBUZWNobm9sLiBVbml2LiwgT3JsYW5kbywgRkwsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJiaW5hcnkgc2VhcmNoIHRyZWU7IGJpbmFyeSBzZWFyY2ggdHJlZXM7IGNvbXB1dGVyIHByb2dyYW1taW5nOyBEYXRhIHJldHJpZXZhbDsgZGF0YSBzdHJ1Y3R1cmVzOyBwcm9ncmFtbWluZyB0aGVvcnk7IHJhbmdlIGNvbmRpdGlvbnM7IHJldHJpZXZlOyBzZWxlY3RpdmUgdHJhdmVyc2FsOyBzZWxlY3RpdmUgdHJhdmVyc2FsIGFsZ29yaXRobTsgdGFnIGZpZWxkOyB0cmVlIHRyYXZlcnNhbDsgdHJlZXMgKG1hdGhlbWF0aWNzKSIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7Q29oZW46MTk3ODpBRFAsCiAgYXV0aG9yID0gICAgICAgIkphY3F1ZXMgQ29oZW4gYW5kIE1hcnRpbiBTLiBSb3RoIiwKICB0aXRsZSA9ICAgICAgICAiQW5hbHlzZXMgb2YgRGV0ZXJtaW5pc3RpYyBQYXJzaW5nIEFsZ29yaXRobXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjEiLAogIG51bWJlciA9ICAgICAgICI2IiwKICBwYWdlcyA9ICAgICAgICAiNDQ4LS00NTgiLAogIG1vbnRoID0gICAgICAgIGp1biwKICB5ZWFyID0gICAgICAgICAiMTk3OCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4QTIwIiwKICBNUm51bWJlciA9ICAgICAiNTggMTM5MjAiLAogIG1ycmV2aWV3ZXIgPSAgICJEYXZpZCBCLiBCZW5zb24iLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiQW4gYXBwcm9hY2ggaXMgcHJlc2VudGVkIGZvciBkZXRlcm1pbmluZyB0aGUgbWluaW11bSwgbWF4aW11bSwgYW5kIGF2ZXJhZ2UgdGltZXMgdG8gcGFyc2Ugc2VudGVuY2VzIGFjY2VwdGFibGUgYnkgYSBkZXRlcm1pbmlzdGljIHBhcnNlci4gVGhlc2UgcXVhbnRpdGllcyBhcmUgcHJlc2VudGVkIGluIHRoZSBmb3JtIG9mIHN5bWJvbGljIGZvcm11bGFzLCBjYWxsZWQgdGltZS1mb3JtdWxhcy4gVGhlIHZhcmlhYmxlcyBpbiB0aGVzZSBmb3JtdWxhcyByZXByZXNlbnQgbm90IG9ubHkgdGhlIGxlbmd0aCBvZiB0aGUgaW5wdXQgc3RyaW5nIGJ1dCBhbHNvIHRoZSB0aW1lIHRvIHBlcmZvcm0gZWxlbWVudGFyeSBvcGVyYXRpb25zIHN1Y2ggYXMgcHVzaGluZywgcG9wcGluZywgc3Vic2NyaXB0aW5nLCBpdGVyYXRpbmcsIGV0Yy4gQnkgYmluZGluZyB0byB0aGUgdmFyaWFibGVzIGFjdHVhbCBudW1lcmljYWwgdmFsdWVzIGNvcnJlc3BvbmRpbmcgdG8gYSBnaXZlbiBjb21waWxlci1tYWNoaW5lIGNvbmZpZ3VyYXRpb24sIG9uZSBjYW4gZGV0ZXJtaW5lIHRoZSBleGVjdXRpb24gdGltZSBmb3IgdGhhdCBjb25maWd1cmF0aW9uLiBUaW1lLWZvcm11bGFzIGFyZSBkZXJpdmVkIGJ5IGV4YW1pbmluZyB0aGUgZ3JhbW1hciBydWxlcyBhbmQgdGhlIHByb2dyYW0gcmVwcmVzZW50aW5nIHRoZSBhbGdvcml0aG0gb25lIHdpc2hlcyB0byBhbmFseXplLiBUaGUgYXBwcm9hY2ggaXMgZGVzY3JpYmVkIGJ5IHVzaW5nIGEgc3BlY2lmaWMgZ3JhbW1hciB0aGF0IGRlZmluZXMgc2ltcGxlIGFyaXRobWV0aWMgZXhwcmVzc2lvbnMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQyMTAgKEZvcm1hbCBsb2dpYyk7IEM0MjQwIChQcm9ncmFtbWluZyBhbmQgYWxnb3JpdGhtIHRoZW9yeSkiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIkJyYW5kZWlzIFVuaXYuLCBXYWx0aGFtLCBNQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFsZ29yaXRobSB0aGVvcnk7IGF2ZXJhZ2UgdGltZXM7IGJlbmNobWFya3M7IGJvdHRvbSB1cCBTTFIoMSkgcGFyc2VyOyBjb21wdXRlciBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IGRldGVybWluaXN0aWMgcGFyc2luZyBhbGdvcml0aG1zOyBlc3RpbWF0ZXM7IGdyYW1tYXJzOyBtYXhpbXVtIHRpbWU7IG1pbmltdW0gdGltZTsgUERQIDEwOyByZWN1cnNpdmUgZGVzY2VudCBMTCgxKSBwYXJzZXI7IHJlbGF0aXZlIGVmZmljaWVuY2llczsgdG9wIGRvd24iLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle01pY2t1bmFzOjE5Nzg6QUVSLAogIGF1dGhvciA9ICAgICAgICJNLiBEZW5uaXMgTWlja3VuYXMgYW5kIEpvaG4gQS4gTW9kcnkiLAogIHRpdGxlID0gICAgICAgICJBdXRvbWF0aWMgRXJyb3IgUmVjb3ZlcnkgZm9yIHtMUn0gUGFyc2VycyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMSIsCiAgbnVtYmVyID0gICAgICAgIjYiLAogIHBhZ2VzID0gICAgICAgICI0NTktLTQ2NSIsCiAgbW9udGggPSAgICAgICAganVuLAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkEgc2NoZW1lIGlzIGdpdmVuIGZvciBkZXRlY3RpbmcgYW5kIHJlY292ZXJpbmcgZnJvbSBzeW50YXggZXJyb3JzIGluIHByb2dyYW1zLiBUaGUgc2NoZW1lLCB3aGljaCBpcyBiYXNlZCBvbiBMUiBwYXJzaW5nLCBpcyBkcml2ZW4gYnkgaW5mb3JtYXRpb24gd2hpY2ggaXMgZGlyZWN0bHkgYW5kIGF1dG9tYXRpY2FsbHkgb2J0YWluYWJsZSBmcm9tIHRoZSBpbmZvcm1hdGlvbiB0aGF0IGlzIGFscmVhZHkgcHJlc2VudCBpbiBhbiBMUiBwYXJzZXIuIFRoZSBhcHByb2FjaCwgd2hpY2ggaXMgcGF0dGVybmVkIGFmdGVyIHRoYXQgb2YgTGV2eSBhbmQgR3JhaGFtIGFuZCBSaG9kZXMsIGFwcGVhcnMgdG8gcHJvdmlkZSBlcnJvciByZWNvdmVyeSB3aGljaCBpcyBib3RoIHNpbXBsZSBhbmQgcG93ZXJmdWwuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxNTBHIChEaWFnbm9zdGljLCB0ZXN0aW5nLCBkZWJ1Z2dpbmcgYW5kIGV2YWx1YXRpbmcgc3lzdGVtcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIG9mIElsbGlub2lzLCBVcmJhbmEtQ2hhbXBhaWduLCBJTCwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImF1dG9tYXRpY2FsbHk7IGNvbXBpbGVyczsgY29tcHV0ZXIgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzOyBkZXRlY3Rpbmc7IGVycm9yIGNvcnJlY3Rpb247IGVycm9yIHJlY292ZXJ5OyBmYXVsdCB0b2xlcmFudCBjb21wdXRpbmc7IExSIHBhcnNlcnM7IHByb2dyYW07IHN5bnRheCBlcnJvcnM7IHN5c3RlbSByZWNvdmVyeSIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7TGllbnR6OjE5Nzg6Q0FTLAogIGF1dGhvciA9ICAgICAgICJCLiBQLiBMaWVudHogYW5kIEUuIEIuIFN3YW5zb24gYW5kIEcuIEUuIFRvbXBraW5zIiwKICB0aXRsZSA9ICAgICAgICAiQ2hhcmFjdGVyaXN0aWNzIG9mIEFwcGxpY2F0aW9uIFNvZnR3YXJlIE1haW50ZW5hbmNlIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIxIiwKICBudW1iZXIgPSAgICAgICAiNiIsCiAgcGFnZXMgPSAgICAgICAgIjQ2Ni0tNDcxIiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzgiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiTWFpbnRlbmFuY2UgYW5kIGVuaGFuY2VtZW50IG9mIGFwcGxpY2F0aW9uIHNvZnR3YXJlIGNvbnN1bWUgYSBtYWpvciBwb3J0aW9uIG9mIHRoZSB0b3RhbCBsaWZlIGN5Y2xlIGNvc3Qgb2YgYSBzeXN0ZW0uIFJvdWdoIGVzdGltYXRlcyBvZiB0aGUgdG90YWwgc3lzdGVtcyBhbmQgcHJvZ3JhbW1pbmcgcmVzb3VyY2VzIGNvbnN1bWVkIHJhbmdlIGFzIGhpZ2ggYXMgNzUtODAgcGVyY2VudCBpbiBlYWNoIGNhdGVnb3J5LiBIb3dldmVyLCB0aGUgYXJlYSBoYXMgYmVlbiBnaXZlbiBsaXR0bGUgYXR0ZW50aW9uIGluIHRoZSBsaXRlcmF0dXJlLiBUbyBhbmFseXplIHRoZSBwcm9ibGVtcyBpbiB0aGlzIGFyZWEgYSBxdWVzdGlvbm5haXJlIHdhcyBkZXZlbG9wZWQgYW5kIHByZXRlc3RlZC4gSXQgd2FzIHRoZW4gc3VibWl0dGVkIHRvIDEyMCBvcmdhbml6YXRpb25zLiBSZXNwb25kZW50cyB0b3RhbGVkIDY5LiBSZXNwb25zZXMgd2VyZSBhbmFseXplZCB3aXRoIHRoZSBTUFNTIHN0YXRpc3RpY2FsIHBhY2thZ2UuIFRoZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcyBhcmUgZXhhbWluZWQgaW4gZGV0YWlsLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMwMzEwIChFRFAgbWFuYWdlbWVudCk7IEM2MTEwIChTeXN0ZW1zIGFuYWx5c2lzIGFuZCBwcm9ncmFtbWluZykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIG9mIENhbGlmb3JuaWEsIExvcyBBbmdlbGVzLCBDQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFwcGxpY2F0aW9uIHNvZnR3YXJlIG1haW50ZW5hbmNlOyBjaGFyYWN0ZXJpc3RpY3M7IGNvbXB1dGVyIHByb2dyYW1taW5nOyBEUCBtYW5hZ2VtZW50OyBlbmhhbmNlbWVudDsgZXh0ZW5zaW9uOyBtYW5hZ2VtZW50OyBwcm9ncmFtbWluZzsgcmVzb3VyY2VzOyBzeXN0ZW1zOyB1c2VyIGRlbWFuZHMiLAogIHRyZWF0bWVudCA9ICAgICJHIEdlbmVyYWwgUmV2aWV3IiwKfQoKQEFydGljbGV7Q2hyeXNsZXI6MTk3ODpTQkQsCiAgYXV0aG9yID0gICAgICAgIkVhcmwgQ2hyeXNsZXIiLAogIHRpdGxlID0gICAgICAgICJTb21lIEJhc2ljIERldGVybWluYW50cyBvZiBDb21wdXRlciBQcm9ncmFtbWluZyBQcm9kdWN0aXZpdHkiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjEiLAogIG51bWJlciA9ICAgICAgICI2IiwKICBwYWdlcyA9ICAgICAgICAiNDcyLS00ODMiLAogIG1vbnRoID0gICAgICAgIGp1biwKICB5ZWFyID0gICAgICAgICAiMTk3OCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJFeGFtaW5hdGlvbiBvZiB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gcHJvY2Vzc2luZyBjaGFyYWN0ZXJpc3RpY3Mgb2YgcHJvZ3JhbXMgYW5kIGV4cGVyaWVuY2UgY2hhcmFjdGVyaXN0aWNzIG9mIHByb2dyYW1tZXJzIGFuZCBwcm9ncmFtIGRldmVsb3BtZW50IHRpbWUuIFRoZSB1bHRpbWF0ZSBvYmplY3RpdmUgd2FzIHRvIGRldmVsb3AgYSB0ZWNobmlxdWUgZm9yIHByZWRpY3RpbmcgdGhlIGFtb3VudCBvZiB0aW1lIG5lY2Vzc2FyeSB0byBjcmVhdGUgYSBjb21wdXRlciBwcm9ncmFtLiBUaGUgZmlmdGVlbiBwcm9ncmFtIGNoYXJhY3RlcmlzdGljcyBoeXBvdGhlc2l6ZWQgYXMgYmVpbmcgYXNzb2NpYXRlZCB3aXRoIGFuIGluY3JlYXNlIGluIHByb2dyYW1taW5nIHRpbWUgcmVxdWlyZWQgYXJlIG9iamVjdGl2ZWx5IG1lYXN1cmFibGUgZnJvbSBwcmVwcm9ncmFtbWluZyBzcGVjaWZpY2F0aW9ucy4gVGhlIGZpdmUgcHJvZ3JhbW1lciBjaGFyYWN0ZXJpc3RpY3MgYXJlIGV4cGVyaWVuY2UtcmVsYXRlZCBhbmQgYXJlIGFsc28gbWVhc3VyYWJsZSBiZWZvcmUgYSBwcm9ncmFtbWluZyB0YXNrIGlzIGJlZ3VuLiBOaW5lIHByb2dyYW0gY2hhcmFjdGVyaXN0aWNzIGVtZXJnZWQgYXMgbWFqb3IgaW5mbHVlbmNlcyBvbiBwcm9ncmFtIGRldmVsb3BtZW50IHRpbWUsIGVhY2ggYXNzb2NpYXRlZCB3aXRoIGluY3JlYXNlZCBwcm9ncmFtIGRldmVsb3BtZW50IHRpbWUuIEFsbCBmaXZlIHByb2dyYW1tZXIgY2hhcmFjdGVyaXN0aWNzIGFyZSBmb3VuZCB0byBiZSByZWxhdGVkIHRvIHJlZHVjZWQgcHJvZ3JhbSBkZXZlbG9wbWVudCB0aW1lLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMwMzEwIChFRFAgbWFuYWdlbWVudCk7IEM2MTEwIChTeXN0ZW1zIGFuYWx5c2lzIGFuZCBwcm9ncmFtbWluZykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIG9mIFdpc2NvbnNpbiwgUGFya3NpZGUsIFdJLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY2hhcmFjdGVyaXN0aWNzOyBjb21wdXRlciBwcm9ncmFtbWluZzsgY29tcHV0ZXIgcHJvZ3JhbW1pbmcgcHJvZHVjdGl2aXR5OyBkZXRlcm1pbmFudHM7IERQIG1hbmFnZW1lbnQ7IGZvcmVjYXN0aW5nOyBwcmVkaWN0aW5nOyBwcm9ncmFtIGRldmVsb3BtZW50IHRpbWU7IHByb2dyYW1tZXJzOyBwcm9ncmFtbWluZyIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7S2xpbmc6MTk3ODpBV0MsCiAgYXV0aG9yID0gICAgICAgIlJvYiBLbGluZyIsCiAgdGl0bGUgPSAgICAgICAgIkF1dG9tYXRlZCBXZWxmYXJlIENsaWVudC1UcmFja2luZyBhbmQgU2VydmljZSBJbnRlZ3JhdGlvbjogdGhlIFBvbGl0aWNhbCBFY29ub215IG9mIENvbXB1dGluZyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMSIsCiAgbnVtYmVyID0gICAgICAgIjYiLAogIHBhZ2VzID0gICAgICAgICI0ODQtLTQ5MyIsCiAgbW9udGggPSAgICAgICAganVuLAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlRoZSBpbXBhY3Qgb2YgYW4gYXV0b21hdGVkIGNsaWVudC10cmFja2luZyBzeXN0ZW0gb24gdGhlIGNsaWVudHMsIGNhc2V3b3JrZXJzLCBhZG1pbmlzdHJhdG9ycywgYW5kIG9wZXJhdGlvbnMgb2YgdGhlIHdlbGZhcmUgYWdlbmNpZXMgdGhhdCB1c2UgaXQgYXJlIHJlcG9ydGVkLiBUaGUgbWFqb3IgaW1wYWN0IG9mIHRoaXMgc3lzdGVtIHdhcyB0byBlbmhhbmNlIHRoZSBhZG1pbmlzdHJhdGl2ZSBhdHRyYWN0aXZlbmVzcyBvZiB0aGUgdXNpbmcgYWdlbmNpZXMgaW4gdGhlIGV5ZXMgb2YgZnVuZGVycyByYXRoZXIgdGhhbiB0byBpbmNyZWFzZSB0aGVpciBpbnRlcm5hbCBhZG1pbmlzdHJhdGl2ZSBlZmZpY2llbmN5LiBUaGlzIGltcGFjdCBpcyBhIGpvaW50IHByb2R1Y3Qgb2YgYm90aCB0aGUgdGVjaG5pY2FsIGZlYXR1cmVzIG9mIHRoZSBjb21wdXRlci1iYXNlZCBzeXN0ZW0gYW5kIG9mIHRoZSBvcmdhbml6YXRpb25hbCBkZW1hbmRzIHBsYWNlZCB1cG9uIGRpZmZlcmVudCBhZ2VuY2llcywgYWRtaW5pc3RyYXRvcnMsIGFuZCBjYXNld29ya2Vycy4gSXQgaWxsdXN0cmF0ZXMgdGhlIHdheSBgYHN1Y2Nlc3NmdWwnJyBhdXRvbWF0ZWQgaW5mb3JtYXRpb24gc3lzdGVtcyBmaXQgdGhlIHBvbGl0aWNhbCBlY29ub21pZXMgb2YgdGhlIGdyb3VwcyB0aGF0IHVzZSB0aGVtLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMwMjMwIChFY29ub21pYywgc29jaWFsIGFuZCBwb2xpdGljYWwgYXNwZWN0cyBvZiBjb21wdXRpbmcpOyBDNzEzMCAoUHVibGljIGFkbWluaXN0cmF0aW9uKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gb2YgQ2FsaWZvcm5pYSwgSXJ2aW5lLCBDQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFkbWluaXN0cmF0aXZlIGF0dHJhY3RpdmVuZXNzOyBjbGllbnQ7IGNvbXB1dGluZzsgZGF0YSBwcm9jZXNzaW5nOyBnb3Zlcm5tZW50IGRhdGEgcHJvY2Vzc2luZzsgaW1wYWN0OyBwb2xpdGljYWwgZWNvbm9taWVzOyBzZXJ2aWNlIGludGVncmF0aW9uOyBzb2NpYWwgYXNwZWN0cyBvZiBhdXRvbWF0aW9uOyBzb2NpYWwgaW1wYWN0OyB0cmFja2luZzsgd2VsZmFyZSBhZ2VuY2llcyIsCiAgdHJlYXRtZW50ID0gICAgIkcgR2VuZXJhbCBSZXZpZXciLAp9CgpAQXJ0aWNsZXtHZWxlbmJlOjE5Nzg6UFJSLAogIGF1dGhvciA9ICAgICAgICJFLiBHZWxlbmJlIGFuZCBELiBEZXJvY2hldHRlIiwKICB0aXRsZSA9ICAgICAgICAiUGVyZm9ybWFuY2Ugb2YgUm9sbGJhY2sgUmVjb3ZlcnkgU3lzdGVtcyBVbmRlciBJbnRlcm1pdHRlbnQgRmFpbHVyZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjEiLAogIG51bWJlciA9ICAgICAgICI2IiwKICBwYWdlcyA9ICAgICAgICAiNDkzLS00OTkiLAogIG1vbnRoID0gICAgICAgIGp1biwKICB5ZWFyID0gICAgICAgICAiMTk3OCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4SDA1IiwKICBNUm51bWJlciA9ICAgICAiODBhOjY4MTEzIiwKICBtcnJldmlld2VyID0gICAiTWVuYWNoZW0gRGlzaG9uIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkEgbWF0aGVtYXRpY2FsIG1vZGVsIG9mIGEgdHJhbnNhY3Rpb24tb3JpZW50ZWQgc3lzdGVtIHVuZGVyIGludGVybWl0dGVudCBmYWlsdXJlcyBpcyBwcm9wb3NlZC4gVGhlIHN5c3RlbSBpcyBhc3N1bWVkIHRvIG9wZXJhdGUgd2l0aCBhIGNoZWNrcG9pbnRpbmcgYW5kIHJvbGxiYWNrXHNsYXNoIHJlY292ZXJ5IG1ldGhvZCB0byBlbnN1cmUgcmVsaWFibGUgaW5mb3JtYXRpb24gcHJvY2Vzc2luZy4gVGhlIG1vZGVsIGlzIHVzZWQgdG8gZGVyaXZlIHRoZSBwcmluY2lwYWwgcGVyZm9ybWFuY2UgbWVhc3VyZXMsIGluY2x1ZGluZyBhdmFpbGFiaWxpdHksIHJlc3BvbnNlIHRpbWUsIGFuZCB0aGUgc3lzdGVtIHNhdHVyYXRpb24gcG9pbnQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxNTBKIChPcGVyYXRpbmcgc3lzdGVtcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIFBhcmlzLVN1ZCwgT3JzYXksIEZyYW5jZSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhdmFpbGFiaWxpdHk7IGNoZWNrcG9pbnRpbmc7IGNvbXB1dGVyIG9wZXJhdGluZyBzeXN0ZW1zOyBkYXRhIGJhc2Ugc3lzdGVtczsgaW50ZXJtaXR0ZW50IGZhaWx1cmVzOyBtYXRoZW1hdGljYWwgbW9kZWw7IHBlcmZvcm1hbmNlIG1lYXN1cmVzOyByZXNwb25zZSB0aW1lOyByb2xsYmFjayByZWNvdmVyeSBzeXN0ZW1zOyBzeXN0ZW0gcmVjb3Zlcnk7IHN5c3RlbSBzYXR1cmF0aW9uIHBvaW50IiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtUZW9yZXk6MTk3ODpHRUksCiAgYXV0aG9yID0gICAgICAgIlRvYnkgSi4gVGVvcmV5IiwKICB0aXRsZSA9ICAgICAgICAiR2VuZXJhbCBFcXVhdGlvbnMgZm9yIElkZWFsaXplZCB7Q1BVLUkvT30gT3ZlcmxhcCBDb25maWd1cmF0aW9ucyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMSIsCiAgbnVtYmVyID0gICAgICAgIjYiLAogIHBhZ2VzID0gICAgICAgICI1MDAtLTUwNyIsCiAgbW9udGggPSAgICAgICAganVuLAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjhBMDUiLAogIE1SbnVtYmVyID0gICAgICI1OCAzNjQzIiwKICBtcnJldmlld2VyID0gICAiQS4gRC4gQm9vdGgiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0RhdGFiYXNlL1dpZWRlcmhvbGQuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiR2VuZXJhbCBlcXVhdGlvbnMgYXJlIGRlcml2ZWQgZm9yIGVzdGltYXRpbmcgdGhlIG1heGltdW0gcG9zc2libGUgdXRpbGl6YXRpb24gb2YgbWFpbiBzdG9yYWdlIHBhcnRpdGlvbnMsIENQVSBhbmQgSS9PIGRldmljZXMgdW5kZXIgZGlmZmVyZW50IGNvbmRpdGlvbnMgaW4gYW4gaWRlYWxpemVkIENQVS1JL08gb3ZlcmxhcCBtb2RlbCBvZiBtdWx0aXByb2dyYW1tZWQgY29tcHV0ZXIgc3lzdGVtcy4gVGhlIGVxdWF0aW9ucyBhcmUgZGlyZWN0bHkgYXBwbGljYWJsZSB0byBhbnkgY29uZmlndXJhdGlvbiBjb25zaXN0aW5nIG9mIHNldHMgb2YgaWRlbnRpY2FsIENQVSdzLCBJL08gcHJvY2Vzc29ycywgbWFpbiBzdG9yYWdlIHBhcnRpdGlvbnMgYW5kIHVzZXIgdGFza3MuIEV4YW1wbGVzIGFyZSBwcm92aWRlZCB0byBpbGx1c3RyYXRlIHRoZSB1c2Ugb2YgdGhlIGVxdWF0aW9ucyB0byBjb21wdXRlIGVmZmVjdGl2ZSBwcm9jZXNzaW5nIHRpbWUgcGVyIHJlY29yZCBhbmQgZXhwZWN0ZWQgdGltZXNoYXJpbmcgcmVzcG9uc2UgdGltZSB1bmRlciBib3RoIGJhbGFuY2VkIGFuZCB1bmJhbGFuY2VkIHJlc291cmNlIHV0aWxpemF0aW9uIGNvbmRpdGlvbnMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxNTBKIChPcGVyYXRpbmcgc3lzdGVtcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIG9mIE1pY2hpZ2FuLCBBbm4gQXJib3IsIE1JLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYmFsYW5jZWQ7IGNvbXB1dGVyIHN5c3RlbXMgcHJvZ3JhbW1pbmc7IENQVTsgZGV2aWNlczsgZXhwZWN0ZWQgdGltZXNoYXJpbmcgcmVzcG9uc2UgdGltZTsgSS9POyBpbnB1dC1vdXRwdXQgcHJvZ3JhbXM7IG1haW4gc3RvcmFnZSBwYXJ0aXRpb25zOyBtdWx0aXByb2dyYW1tZWQgY29tcHV0ZXIgc3lzdGVtczsgbXVsdGlwcm9ncmFtbWluZzsgb3ZlcmxhcCBjb25maWd1cmF0aW9uczsgcGVyIHJlY29yZDsgcHJvY2Vzc2luZyB0aW1lOyBzdG9yYWdlIGFsbG9jYXRpb247IHRpbWUtc2hhcmluZyBzeXN0ZW1zOyB1bmJhbGFuY2VkIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtXYWx0ejoxOTc4OkVMUSwKICBhdXRob3IgPSAgICAgICAiRGF2aWQgTC4gV2FsdHoiLAogIHRpdGxlID0gICAgICAgICJBbiB7RW5nbGlzaH0gTGFuZ3VhZ2UgUXVlcnkgQW5zd2VyaW5nIFN5c3RlbSBmb3IgYSBMYXJnZSBSZWxhdGlvbmFsIERhdGEgQmFzZSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMSIsCiAgbnVtYmVyID0gICAgICAgIjciLAogIHBhZ2VzID0gICAgICAgICI1MjYtLTUzOSIsCiAgbW9udGggPSAgICAgICAganVsLAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EYXRhYmFzZS9XaWVkZXJob2xkLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIkJ5IHR5cGluZyByZXF1ZXN0cyBpbiBFbmdsaXNoLCBjYXN1YWwgdXNlcnMgd2lsbCBiZSBhYmxlIHRvIG9idGFpbiBleHBsaWNpdCBhbnN3ZXJzIGZyb20gYSBsYXJnZSByZWxhdGlvbmFsIGRhdGFiYXNlIG9mIGFpcmNyYWZ0IGZsaWdodCBhbmQgbWFpbnRlbmFuY2UgZGF0YSB1c2luZyBhIHN5c3RlbSBjYWxsZWQgUExBTkVTLiBUaGUgZGVzaWduIGFuZCBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIHN5c3RlbSBpcyBkZXNjcmliZWQgYW5kIGlsbHVzdHJhdGVkIHdpdGggZGV0YWlsZWQgZXhhbXBsZXMgb2YgdGhlIG9wZXJhdGlvbiBvZiBzeXN0ZW0gY29tcG9uZW50cyBhbmQgZXhhbXBsZXMgb2Ygb3ZlcmFsbCBzeXN0ZW0gb3BlcmF0aW9uLiBBbHNvIGluY2x1ZGVkIGFyZSBkaXNjdXNzaW9ucyBvZiBpbXBvcnRhbnQgaXNzdWVzIGluIHByb2dyYW1taW5nIG5hdHVyYWwgbGFuZ3VhZ2Ugc3lzdGVtcyBmb3IgbGltaXRlZCBkb21haW5zLCBhbmQgdGhlIHJlbGF0aW9uc2hpcCBvZiB0aGlzIHN5c3RlbSB0byBvdGhlcnMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBhbm5vdGUgPSAgICAgICAidGhlIFBMQU5FUyBzeXN0ZW0uIiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKTsgQzcyNTAgKEluZm9ybWF0aW9uIHN0b3JhZ2UgYW5kIHJldHJpZXZhbCk7IEM3NDYwIChBZXJvc3BhY2UgZW5naW5lZXJpbmcgY29tcHV0aW5nKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gb2YgSWxsaW5vaXMsIFVyYmFuYS1DaGFtcGFpZ24sIElMLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYWVyb3NwYWNlIGNvbXB1dGluZzsgYWlyY3JhZnQ7IGRhdGEgYmFzZSBzeXN0ZW1zOyBkYXRhYmFzZSBtYW5hZ2VtZW50IHN5c3RlbXM7IEVuZ2xpc2ggbGFuZ3VhZ2U7IGZsaWdodDsgaW5mb3JtYXRpb24gcmV0cmlldmFsOyBsYXJnZTsgbWFpbnRlbmFuY2U7IFBMQU5FUzsgcXVlc3Rpb24gYW5zd2VyaW5nIHN5c3RlbTsgcmVsYXRpb25hbCBkYXRhYmFzZSIsCiAgdHJlYXRtZW50ID0gICAgIkEgQXBwbGljYXRpb247IFQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKICB4eHRpdGxlID0gICAgICAiQW4ge0VuZ2xpc2h9IGxhbmd1YWdlIHF1ZXN0aW9uIGFuc3dlcmluZyBzeXN0ZW0gZm9yIGEgbGFyZ2UgcmVsYXRpb25hbCBkYXRhYmFzZSIsCn0KCkBBcnRpY2xle0ZyZWRtYW46MTk3ODpDQ00sCiAgYXV0aG9yID0gICAgICAgIk1pY2hhZWwgTC4gRnJlZG1hbiBhbmQgQnJ1Y2UgV2VpZGUiLAogIHRpdGxlID0gICAgICAgICJPbiB0aGUgY29tcGxleGl0eSBvZiBjb21wdXRpbmcgdGhlIG1lYXN1cmUgb2YgeyRcYmlnY3VwW2FfaSxiX2ldJH0iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjEiLAogIG51bWJlciA9ICAgICAgICI3IiwKICBwYWdlcyA9ICAgICAgICAiNTQwLS01NDQiLAogIG1vbnRoID0gICAgICAgIGp1bCwKICB5ZWFyID0gICAgICAgICAiMTk3OCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4QTIwIiwKICBNUm51bWJlciA9ICAgICAiNTggMTM5MjQiLAogIG1ycmV2aWV3ZXIgPSAgICJKYW4gdmFuIExlZXV3ZW4iLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0dyYXBoaWNzL3NpZ2dyYXBoLzc4LmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIlRoZSBkZWNpc2lvbiB0cmVlIGNvbXBsZXhpdHkgb2YgY29tcHV0aW5nIHRoZSBtZWFzdXJlIG9mIHRoZSB1bmlvbiBvZiAkbiQgKHBvc3NpYmx5IG92ZXJsYXBwaW5nKSBpbnRlcnZhbHMgaXMgc2hvd24gdG8gYmUgJFxPbWVnYShuIFxsb2cgbikkLCBldmVuIGlmIGNvbXBhcmlzb25zIGJldHdlZW4gbGluZWFyIGZ1bmN0aW9ucyBvZiB0aGUgaW50ZXJ2YWwgZW5kcG9pbnRzIGFyZSBhbGxvd2VkLiBUaGUgZXhpc3RlbmNlIG9mIGFuICRcT21lZ2EgKG4gXGxvZyBuKSQgbG93ZXIgYm91bmQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYW55IHR3byBvZiAkbiQgcmVhbCBudW1iZXJzIGFyZSB3aXRoaW4gJFxlcHNpbG9uJCBvZiBlYWNoIG90aGVyIGlzIGFsc28gZGVtb25zdHJhdGVkLiBUaGVzZSBwcm9ibGVtcyBwcm92aWRlIGFuIGV4Y2VsbGVudCBvcHBvcnR1bml0eSBmb3IgZGlzY3Vzc2luZyB0aGUgZWZmZWN0cyBvZiB0aGUgY29tcHV0YXRpb25hbCBtb2RlbCBvbiB0aGUgZWFzZSBvZiBhbmFseXNpcyBhbmQgb24gdGhlIHJlc3VsdHMgcHJvZHVjZWQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQyNDAgKFByb2dyYW1taW5nIGFuZCBhbGdvcml0aG0gdGhlb3J5KSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gb2YgQ2FsaWZvcm5pYSwgU2FuIERpZWdvLCBDQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFsZ29yaXRobSB0aGVvcnk7IGNvbXB1dGF0aW9uYWwgY29tcGxleGl0eTsgY29tcHV0YXRpb25hbCBtb2RlbDsgY29tcHV0ZXIgbWV0YXRoZW9yeTsgY29tcHV0ZXIgcHJvZ3JhbW1pbmc7IGNvbXB1dGluZzsgZGVjaXNpb24gdHJlZSBjb21wbGV4aXR5OyBpbnRlcnZhbHM7IG1lYXN1cmU7IHVuaW9uIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtDaGluOjE5Nzg6QUROLAogIGF1dGhvciA9ICAgICAgICJGcmFuY2lzIFkuIENoaW4iLAogIHRpdGxlID0gICAgICAgICJBbiAke099KG4pJCBBbGdvcml0aG0gZm9yIERldGVybWluaW5nIGEgTmVhci1PcHRpbWFsIENvbXB1dGF0aW9uIE9yZGVyIG9mIE1hdHJpeCBDaGFpbiBQcm9kdWN0cyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMSIsCiAgbnVtYmVyID0gICAgICAgIjciLAogIHBhZ2VzID0gICAgICAgICI1NDQtLTU0OSIsCiAgbW9udGggPSAgICAgICAganVsLAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjhDMjUgKDY1RjA1KSIsCiAgTVJudW1iZXIgPSAgICAgIjgwYTo2ODAzNyIsCiAgbXJyZXZpZXdlciA9ICAgIk9uZHJlaiBTe1wneX1rb3JhIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkRpc2N1c3Npb24gb2YgdGhlIGNvbXB1dGF0aW9uIG9mIG1hdHJpeCBjaGFpbiBwcm9kdWN0cyBvZiB0aGUgZm9ybSBNLy8xIG11bHRpcGxpZWQgYnkgTS8vMiBtdWx0aXBsaWVkIGJ5XGxkb3Rze30gbXVsdGlwbGllZCBieSBNLy9uIHdoZXJlIE0vL2kncyBhcmUgbWF0cmljZXMuIFRoZSBvcmRlciBpbiB3aGljaCB0aGUgbWF0cmljZXMgYXJlIGNvbXB1dGVkIGFmZmVjdHMgdGhlIG51bWJlciBvZiBvcGVyYXRpb25zLiBBIHN1ZmZpY2llbnQgY29uZGl0aW9uIGFib3V0IHRoZSBhc3NvY2lhdGlvbiBvZiB0aGUgbWF0cmljZXMgaW4gdGhlIG9wdGltYWwgb3JkZXIgaXMgcHJlc2VudGVkLiBBbiBPKG4pIGFsZ29yaXRobSB0byBmaW5kIGFuIG9yZGVyIG9mIGNvbXB1dGF0aW9uIHdoaWNoIHRha2VzIGxlc3MgdGhhbiAyNSBwZXJjZW50IGxvbmdlciB0aGFuIHRoZSBvcHRpbWFsIHRpbWUgVChvcHQpIGlzIGFsc28gcHJlc2VudGVkLiBJbiBtb3N0IGNhc2VzLCB0aGUgYWxnb3JpdGhtIHlpZWxkcyB0aGUgb3B0aW1hbCBvcmRlciBvciBhbiBvcmRlciB3aGljaCB0YWtlcyBvbmx5IGEgZmV3IHBlcmNlbnQgbG9uZ2VyIHRoYW4gVChvcHQpIChsZXNzIHRoYW4gMSBwZXJjZW50IG9uIHRoZSBhdmVyYWdlKS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDE0MCAoTGluZWFyIGFsZ2VicmEpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBvZiBBbGJlcnRhLCBFZG1vbnRvbiwgQWx0YS4sIENhbmFkYSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhbGdvcml0aG07IGNvbXB1dGF0aW9uIG9yZGVyOyBjb21wdXRlciBwcm9ncmFtbWluZzsgbWF0cml4IGFsZ2VicmE7IG1hdHJpeCBjaGFpbiBwcm9kdWN0czsgb3B0aW1hbCBvcmRlciIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7UGVybDoxOTc4OklTTCwKICBhdXRob3IgPSAgICAgICAiWWVob3NodWEgUGVybCBhbmQgQWxvbiBJdGFpIGFuZCBIYWltIEF2bmkiLAogIHRpdGxlID0gICAgICAgICJJbnRlcnBvbGF0aW9uIFNlYXJjaCAtLS0ge0F9IExvZyBMb2cge059IFNlYXJjaCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMSIsCiAgbnVtYmVyID0gICAgICAgIjciLAogIHBhZ2VzID0gICAgICAgICI1NTAtLTU1MyIsCiAgbW9udGggPSAgICAgICAganVsLAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjhBNTAiLAogIE1SbnVtYmVyID0gICAgICI1OCA4NTgyIiwKICBtcnJldmlld2VyID0gICAiQW1pdGF2YSBCYWdjaGkiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiSW50ZXJwb2xhdGlvbiBzZWFyY2ggaXMgYSBtZXRob2Qgb2YgcmV0cmlldmluZyBhIGRlc2lyZWQgcmVjb3JkIGJ5IGtleSBpbiBhbiBvcmRlcmVkIGZpbGUgYnkgdXNpbmcgdGhlIHZhbHVlIG9mIHRoZSBrZXkgYW5kIHRoZSBzdGF0aXN0aWNhbCBkaXN0cmlidXRpb24gb2YgdGhlIGtleXMuIEl0IGlzIHNob3duIHRoYXQgb24gdGhlIGF2ZXJhZ2UgbG9nIGxvZyBOIGZpbGUgYWNjZXNzZXMgYXJlIHJlcXVpcmVkIHRvIHJldHJpZXZlIGEga2V5LCBhc3N1bWluZyB0aGF0IHRoZSBOIGtleXMgYXJlIHVuaWZvcm1seSBkaXN0cmlidXRlZC4gVGhlIG51bWJlciBvZiBleHRyYSBhY2Nlc3NlcyBpcyBhbHNvIGVzdGltYXRlZCBhbmQgc2hvd24gdG8gYmUgdmVyeSBsb3cuIFRoZSBzYW1lIGhvbGRzIGlmIHRoZSBjdW11bGF0aXZlIGRpc3RyaWJ1dGlvbiBmdW5jdGlvbiBvZiB0aGUga2V5cyBpcyBrbm93bi4gQ29tcHV0YXRpb25hbCBleHBlcmltZW50cyBjb25maXJtIHRoZXNlIHJlc3VsdHMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiQmFyLUlsYW4gVW5pdi4sIFJhbWF0LUdhbiwgSXNyYWVsIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgIkF2ZXJhZ2UgbnVtYmVyIG9mIGFjY2Vzc2VzOyBiaW5hcnkgc2VhcmNoOyBjb21wdXRlciBwcm9ncmFtbWluZzsgZGF0YWJhc2U7IGZpbGUgb3JnYW5pc2F0aW9uOyBpbnRlcnBvbGF0aW9uIHNlYXJjaDsga2V5OyBsb2c7IGxvZ04gZmlsZSBhY2Nlc3Nlczsgb3JkZXJlZCBmaWxlOyByZXRyaWV2YWw7IHJldHJpZXZlOyBzZWFyY2hpbmc7IHN0YXRpc3RpY2FsIGRpc3RyaWJ1dGlvbiBvZiB0aGUga2V5czsgdW5pZm9ybSBkaXN0cmlidXRpb24iLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0hhbGF0c2lzOjE5Nzg6UEhULAogIGF1dGhvciA9ICAgICAgICJDb25zdGFudGluZSBIYWxhdHNpcyBhbmQgR2VvcmdlIFBoaWxva3lwcm91IiwKICB0aXRsZSA9ICAgICAgICAiUHNldWRvY2hhaW5pbmcgaW4gSGFzaCBUYWJsZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjEiLAogIG51bWJlciA9ICAgICAgICI3IiwKICBwYWdlcyA9ICAgICAgICAiNTU0LS01NTciLAogIG1vbnRoID0gICAgICAgIGp1bCwKICB5ZWFyID0gICAgICAgICAiMTk3OCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4QTUwIiwKICBNUm51bWJlciA9ICAgICAiNTggMzc4NCIsCiAgbXJyZXZpZXdlciA9ICAgIkViZXJoYXJkIEx1ZGRlIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlByZXNlbnRhdGlvbiBvZiBwc2V1ZG9jaGFpbmluZyBhcyBhIG5ldyBjb2xsaXNpb24tcmVzb2x1dGlvbiBtZXRob2QuIFBzZXVkb2NoYWluaW5nIGlzIGhhbGYgd2F5IGJldHdlZW4gb3BlbiBhZGRyZXNzaW5nIGFuZCBjaGFpbmluZy4gSXQgb3dlcyBpdHMgbmFtZSB0byB0aGUgZmFjdCB0aGF0IGxpbmsgZmllbGRzIGFyZSBwcmVzZW50IGluIGVhY2ggY2VsbCBvZiB0aGUgaGFzaCB0YWJsZSB3aGljaCBwZXJtaXRzIGBgY2hhaW5pbmcnJyBvZiB0aGUgZmlyc3Qgb3ZlcmZsb3cgaXRlbXMgaW4gdGhlIHRhYmxlLiBUaGUgZWZmaWNpZW5jeSBvZiB0aGUgbWV0aG9kIGlzIGRlcml2ZWQgYW5kIGEgdHJhZGVvZmYgYW5hbHlzaXMgaXMgZ2l2ZW4uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiTlJDICdEZW1va3JpdG9zJywgQXRoZW5zLCBHcmVlY2UiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29sbGlzaW9uIHJlc29sdXRpb24gbWV0aG9kOyBjb21wdXRlciBwcm9ncmFtbWluZzsgZWZmaWNpZW5jeTsgZmlsZSBvcmdhbmlzYXRpb247IGhhc2ggdGFibGVzOyBwc2V1ZG9jaGFpbmluZzsgdHJhZGVvZmYgYW5hbHlzaXMiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0xhbXBvcnQ6MTk3ODpUQ08sCiAgYXV0aG9yID0gICAgICAgIkxlc2xpZSBMYW1wb3J0IiwKICB0aXRsZSA9ICAgICAgICAiVGltZSwgQ2xvY2tzLCBhbmQgdGhlIE9yZGVyaW5nIG9mIEV2ZW50cyBpbiBhIERpc3RyaWJ1dGVkIFN5c3RlbSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMSIsCiAgbnVtYmVyID0gICAgICAgIjciLAogIHBhZ2VzID0gICAgICAgICI1NTgtLTU2NSIsCiAgbW9udGggPSAgICAgICAganVsLAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9QYXJhbGxlbC9wYXIubWlzYy5iaWIiLAogIGFic3RyYWN0ID0gICAgICJUaGUgY29uY2VwdCBvZiBvbmUgZXZlbnQgaGFwcGVuaW5nIGJlZm9yZSBhbm90aGVyIGluIGEgZGlzdHJpYnV0ZWQgc3lzdGVtIGlzIGV4YW1pbmVkLCBhbmQgaXMgc2hvd24gdG8gZGVmaW5lIGEgcGFydGlhbCBvcmRlcmluZyBvZiB0aGUgZXZlbnRzLiBBIGRpc3RyaWJ1dGVkIGFsZ29yaXRobSBpcyBnaXZlbiBmb3Igc3luY2hyb25pemluZyBhIHN5c3RlbSBvZiBsb2dpY2FsIGNsb2NrcyB3aGljaCBjYW4gYmUgdXNlZCB0byB0b3RhbGx5IG9yZGVyIHRoZSBldmVudHMuIFRoZSB1c2Ugb2YgdGhlIHRvdGFsIG9yZGVyaW5nIGlzIGlsbHVzdHJhdGVkIHdpdGggYSBtZXRob2QgZm9yIHNvbHZpbmcgc3luY2hyb25pemF0aW9uIHByb2JsZW1zLiBUaGUgYWxnb3JpdGhtIGlzIHRoZW4gc3BlY2lhbGl6ZWQgZm9yIHN5bmNocm9uaXppbmcgcGh5c2ljYWwgY2xvY2tzLCBhbmQgYSBib3VuZCBpcyBkZXJpdmVkIG9uIGhvdyBmYXIgb3V0IG9mIHN5bmNocm9ueSB0aGUgY2xvY2tzIGNhbiBiZWNvbWUuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBhbm5vdGUgPSAgICAgICAiQ2xhc3NpYyBwYXBlciBvbiBsb2dpY2FsIGNsb2Nrcy4gQSBjbGFzc2ljIHBhcGVyIG9uIHN5bmNocm9uaXphdGlvbi4gUmVwcm9kdWNlZCBpbiBgYERpc3RyaWJ1dGVkIENvbXB1dGluZzogQ29uY2VwdHMgYW5kIEltcGxlbWVudGF0aW9ucycnIGVkaXRlZCBieSBNY0VudGlyZSwgTydSZWlsbHkgYW5kIExhcnNvbiwgSUVFRSwgMTk4NC4gVGhlIGNvbmNlcHQgb2Ygb25lIGV2ZW50IGhhcHBlbmluZyBiZWZvcmUgYW5vdGhlciBpbiBhIGRpc3RyaWJ1dGVkIHN5c3RlbSBpcyBleGFtaW5lZCwgYW5kIGlzIHNob3duIHRvIGRlZmluZSBhIHBhcnRpYWwgb3JkZXJpbmcgb2YgdGhlIGV2ZW50cy4gQSBkaXN0cmlidXRlZCBhbGdvcml0aG0gaXMgZ2l2ZW4gZm9yIHN5bmNocm9uaXNpbmcgYSBzeXN0ZW0gb2YgbG9naWNhbCBjbG9ja3Mgd2hpY2ggY2FuIGJlIHVzZWQgdG8gdG90YWxseSBvcmRlciB0aGUgZXZlbnRzLiBUaGUgdXNlIG9mIHRoZSB0b3RhbCBvcmRlcmluZyBpcyBpbGx1c3RyYXRlZCB3aXRoIGEgbWV0aG9kIGZvciBzb2x2aW5nIHN5bmNocm9uaXNhdGlvbiBwcm9ibGVtcy4gVGhlIGFsZ29yaXRobSBpcyB0aGVuIHNwZWNpYWxpc2VkIGZvciBzeW5jaHJvbmlzaW5nIHBoeXNpY2FsIGNsb2NrcywgYW5kIGEgYm91bmQgaXMgZGVyaXZlZCBvbiBob3cgZmFyIG91dCBvZiBzeW5jaHJvbnkgdGhlIGNsb2NrcyBjYW4gYmVjb21lLiIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTUwSiAoT3BlcmF0aW5nIHN5c3RlbXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiNS4yOSBkaXN0cmlidXRlZCBwcm9jZXNzaW5nIGNvbXB1dGVyIG5ldHdvcmtzIG11bHRpcHJvY2Vzc2luZyBwcm9ncmFtcyBvcmRlcmluZyBvZiBldmVudHMgZGlzdHJpYnV0ZWQgc3lzdGVtIHN5bmNocm9uaXNpbmcgdG90YWwgb3JkZXJpbmcgY2xvY2tzIGNvbXB1dGVyIG5ldHdvcmtzIG11bHRpcHJvY2Vzc2luZyBic2F0eWEgZW5tOyBjbG9jayBzeW5jaHJvbml6YXRpb247IGNsb2NrczsgY29tcHV0ZXIgbmV0d29ya3M7IGNvbXB1dGVyIG9wZXJhdGluZyBzeXN0ZW1zOyBkaXN0cmlidXRlZCBjb21wdXRlciBzeXN0ZW1zOyBkaXN0cmlidXRlZCBwcm9jZXNzaW5nOyBkaXN0cmlidXRlZCBzeXN0ZW07IGRpc3RyaWJ1dGVkIHN5c3RlbXM7IGRtcDsgZ3JlY29tbWVuZGVkOTEgQ1IgY2F0ZWdvcmllczogNC4zMjsganc7IG11bHRpcHJvY2VzcyBzeXN0ZW1zOyBtdWx0aXByb2Nlc3Npbmc7IG9yZGVyaW5nOyBvcmRlcmluZyBvZiBldmVudHM7IHByb2dyYW1zOyBzeW5jaHJvbmlzaW5nOyB0b3RhbCIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7QmFrZXI6MTk3ODpTQkwsCiAgYXV0aG9yID0gICAgICAgIkhlbnJ5IEdpdmVucyB7QmFrZXIsIEpyLn0iLAogIHRpdGxlID0gICAgICAgICJTaGFsbG93IEJpbmRpbmcgaW4ge0xpc3B9IDEuNSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMSIsCiAgbnVtYmVyID0gICAgICAgIjciLAogIHBhZ2VzID0gICAgICAgICI1NjUtLTU2OSIsCiAgbW9udGggPSAgICAgICAganVsLAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9BaS9saXNwLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIlNoYWxsb3cgYmluZGluZyBpcyBhIHNjaGVtZSB3aGljaCBhbGxvd3MgdGhlIHZhbHVlIG9mIGEgdmFyaWFibGUgdG8gYmUgYWNjZXNzZWQgaW4gYSBib3VuZGVkIGFtb3VudCBvZiBjb21wdXRhdGlvbi4gQW4gZWxlZ2FudCBtb2RlbCBmb3Igc2hhbGxvdyBiaW5kaW5nIGluIExpc3AgMS41IGlzIHByZXNlbnRlZCBpbiB3aGljaCBjb250ZXh0LXN3aXRjaGluZyBpcyBhbiBlbnZpcm9ubWVudCB0cmVlIHRyYW5zZm9ybWF0aW9uIGNhbGxlZCByZXJvb3RpbmcuIFJlcm9vdGluZyBpcyBjb21wbGV0ZWx5IGdlbmVyYWwgYW5kIHJldmVyc2libGUsIGFuZCBpcyBvcHRpb25hbCBpbiB0aGUgc2Vuc2UgdGhhdCBhIExpc3AgMS41IGludGVycHJldGVyIHdpbGwgb3BlcmF0ZSBjb3JyZWN0bHkgd2hldGhlciBvciBub3QgcmVyb290aW5nIGlzIGludm9rZWQgb24gZXZlcnkgY29udGV4dCBjaGFuZ2UuIFNpbmNlIHJlcm9vdGluZyBsZWF2ZXMgYXNzb2MgbGVmdCBicmFja2V0IHYsIGEgcmlnaHQgYnJhY2tldCBpbnZhcmlhbnQsIGZvciBhbGwgdmFyaWFibGVzIHYgYW5kIGFsbCBlbnZpcm9ubWVudHMgYSwgdGhlIHByb2dyYW1tZXIgY2FuIGhhdmUgYWNjZXNzIHRvIGEgcmVyb290aW5nIHByaW1pdGl2ZSwgc2hhbGxvdyBsZWZ0IGJyYWNrZXQgcmlnaHQgYnJhY2tldCwgd2hpY2ggZ2l2ZXMgaGltIGR5bmFtaWMgY29udHJvbCBvdmVyIHdoZXRoZXIgYWNjZXNzZXMgYXJlIHNoYWxsb3cgb3IgZGVlcCwgYW5kIHdoaWNoIGFmZmVjdHMgb25seSB0aGUgc3BlZWQgb2YgZXhlY3V0aW9uIG9mIGEgcHJvZ3JhbSwgbm90IGl0cyBzZW1hbnRpY3MuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxNDBEIChIaWdoIGxldmVsIGxhbmd1YWdlcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIk1JVCwgQ2FtYnJpZGdlLCBNQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIHByb2dyYW1taW5nIGxhbmd1YWdlczsgY29udGV4dCBzd2l0Y2hpbmc7IGVudmlyb25tZW50OyBMSVNQOyBMSVNQIDEuNTsgcmVyb290aW5nOyBzaGFsbG93IGJpbmRpbmc7IHRyZWUgdHJhbnNmb3JtYXRpb24iLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle1NhbWV0OjE5Nzg6UENILAogIGF1dGhvciA9ICAgICAgICJIYW5hbiBTYW1ldCIsCiAgdGl0bGUgPSAgICAgICAgIlByb3ZpbmcgdGhlIENvcnJlY3RuZXNzIG9mIEhldXJpc3RpY2FsbHkgT3B0aW1pemVkIENvZGUiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjEiLAogIG51bWJlciA9ICAgICAgICI3IiwKICBwYWdlcyA9ICAgICAgICAiNTcwLS01ODIiLAogIG1vbnRoID0gICAgICAgIGp1bCwKICB5ZWFyID0gICAgICAgICAiMTk3OCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJBIHN5c3RlbSBmb3IgcHJvdmluZyB0aGF0IHByb2dyYW1zIHdyaXR0ZW4gaW4gYSBoaWdoIGxldmVsIGxhbmd1YWdlIGFyZSBjb3JyZWN0bHkgdHJhbnNsYXRlZCB0byBhIGxvdyBsZXZlbCBsYW5ndWFnZSBpcyBkZXNjcmliZWQuIEEgcHJpbWFyeSB1c2Ugb2YgdGhlIHN5c3RlbSBpcyBhcyBhIHBvc3RvcHRpbWl6YXRpb24gc3RlcCBpbiBjb2RlIGdlbmVyYXRpb24uIFRoZSBsb3cgbGV2ZWwgbGFuZ3VhZ2UgcHJvZ3JhbXMgbmVlZCBub3QgYmUgZ2VuZXJhdGVkIGJ5IGEgY29tcGlsZXIgYW5kIGluIGZhY3QgY291bGQgYmUgaGFuZCBjb2RlZC4gRXhhbXBsZXMgb2YgdGhlIHVzZWZ1bG5lc3Mgb2Ygc3VjaCBhIHN5c3RlbSBhcmUgZ2l2ZW4uIFNvbWUgaW50ZXJlc3RpbmcgcmVzdWx0cyBhcmUgdGhlIGFiaWxpdHkgdG8gaGFuZGxlIHByb2dyYW1zIHRoYXQgaW1wbGVtZW50IHJlY3Vyc2lvbiBieSBieXBhc3NpbmcgdGhlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtLCBhbmQgdGhlIGRldGVjdGlvbiBhbmQgcGlucG9pbnRpbmcgb2YgYSB3aWRlIGNsYXNzIG9mIGVycm9ycyBpbiB0aGUgbG93IGxldmVsIGxhbmd1YWdlIHByb2dyYW1zLiBUaGUgZXhhbXBsZXMgZGVtb25zdHJhdGUgdGhhdCBvcHRpbWl6YXRpb24gb2YgdGhlIGdlbnJlIG9mIHRoaXMgcGFwZXIgY2FuIHJlc3VsdCBpbiBhIHN1YnN0YW50aWFsbHkgZmFzdGVyIG9wZXJhdGlvbiBhbmQgdGhlIHNhdmluZyBvZiBtZW1vcnkgaW4gdGVybXMgb2YgcHJvZ3JhbSBhbmQgc3RhY2sgc2l6ZXMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQyNDAgKFByb2dyYW1taW5nIGFuZCBhbGdvcml0aG0gdGhlb3J5KTsgQzYxNTBDIChDb21waWxlcnMsIGludGVycHJldGVycyBhbmQgb3RoZXIgcHJvY2Vzc29ycyk7IEM2MTUwRyAoRGlhZ25vc3RpYywgdGVzdGluZywgZGVidWdnaW5nIGFuZCBldmFsdWF0aW5nIHN5c3RlbXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBvZiBNYXJ5bGFuZCwgQ29sbGVnZSBQYXJrLCBNTywgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvZGUgZ2VuZXJhdGlvbjsgY29tcGlsZXI7IGNvbXB1dGVyIHByb2dyYW1taW5nIGxhbmd1YWdlczsgY29ycmVjdG5lc3MgcHJvdmluZzsgaGV1cmlzdGljYWxseSBvcHRpbWlzZWQgY29kZTsgaGlnaCBsZXZlbCBsYW5ndWFnZTsgbG93IGxldmVsIGxhbmd1YWdlOyBwb3N0b3B0aW1pc2F0aW9uOyBwcm9ncmFtIGNvbXBpbGVyczsgcHJvZ3JhbSB0ZXN0aW5nIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAogIHh4dGl0bGUgPSAgICAgICJQcm92aW5nIHRoZSBjb3JyZWN0bmVzcyBvZiBoZXVyaXN0aWNhbGx5IG9wdGltaXNlZCBjb2RlIiwKfQoKQEFydGljbGV7U2hvc3RhazoxOTc4OkFSQSwKICBhdXRob3IgPSAgICAgICAiUm9iZXJ0IEUuIFNob3N0YWsiLAogIHRpdGxlID0gICAgICAgICJBbiBBbGdvcml0aG0gZm9yIFJlYXNvbmluZyBBYm91dCBFcXVhbGl0eSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMSIsCiAgbnVtYmVyID0gICAgICAgIjciLAogIHBhZ2VzID0gICAgICAgICI1ODMtLTU4NSIsCiAgbW9udGggPSAgICAgICAganVsLAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiMDItMDQgMDJCMTAiLAogIE1SbnVtYmVyID0gICAgICI1OCA0OTc2IiwKICBtcnJldmlld2VyID0gICAiQS4gUGxpdXNrZXZpY2llbmUiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiQSBzaW1wbGUgdGVjaG5pcXVlIGZvciByZWFzb25pbmcgYWJvdXQgZXF1YWxpdGllcyB0aGF0IGlzIGZhc3QgYW5kIGNvbXBsZXRlIGZvciBncm91bmQgZm9ybXVsYXMgd2l0aCBmdW5jdGlvbiBzeW1ib2xzIGFuZCBlcXVhbGl0eSBpcyBwcmVzZW50ZWQuIEEgcHJvb2Ygb2YgY29ycmVjdG5lc3MgaXMgZ2l2ZW4gYXMgd2VsbC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDI0MCAoUHJvZ3JhbW1pbmcgYW5kIGFsZ29yaXRobSB0aGVvcnkpOyBDNjE1MEcgKERpYWdub3N0aWMsIHRlc3RpbmcsIGRlYnVnZ2luZyBhbmQgZXZhbHVhdGluZyBzeXN0ZW1zKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiU3RhbmZvcmQgUmVzLiBJbnN0LiwgTWVubG8gUGFyaywgQ0EsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhbGdvcml0aG07IGNvbXB1dGVyIHByb2dyYW1taW5nOyBjb3JyZWN0bmVzczsgZXF1YWxpdHk7IHByb2dyYW0gdGVzdGluZzsgcmVhc29uaW5nOyB0aGVvcmVtIHByb3ZpbmciLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0NoYXR0ZXJneToxOTc4OkFBQywKICBhdXRob3IgPSAgICAgICAiUmFodWwgQ2hhdHRlcmd5IGFuZCBVZG8gVy4gUG9vY2giLAogIHRpdGxlID0gICAgICAgICJBbmFseXNpcyBvZiB0aGUgQXZhaWxhYmlsaXR5IG9mIENvbXB1dGVyIFN5c3RlbXMgVXNpbmcgQ29tcHV0ZXItQWlkZWQgQWxnZWJyYSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMSIsCiAgbnVtYmVyID0gICAgICAgIjciLAogIHBhZ2VzID0gICAgICAgICI1ODYtLTU5MSIsCiAgbW9udGggPSAgICAgICAganVsLAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjBLMjAgKDY4QTE1KSIsCiAgTVJudW1iZXIgPSAgICAgIjU4IDMwOTEiLAogIG1ycmV2aWV3ZXIgPSAgICJSYWxwaCBMLiBEaXNuZXkiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiQW5hbHl0aWNhbCByZXN1bHRzLCByZWxhdGVkIHRvIHRoZSBhdmFpbGFiaWxpdHkgb2YgYSBjb21wdXRlciBzeXN0ZW0gY29uc3RydWN0ZWQgb2YgdW5yZWxpYWJsZSBwcm9jZXNzb3JzLCBhcmUgcHJlc2VudGVkIGluIHRoaXMgcGFwZXIuIFRoZXNlIHJlc3VsdHMgYXJlIG9idGFpbmVkIGJ5IHVzaW5nIHZhcmlvdXMgY29tcHV0ZXItYWlkZWQgYWxnZWJyYWljIG1hbmlwdWxhdGlvbiB0ZWNobmlxdWVzLiBBIG1ham9yIHB1cnBvc2Ugb2YgdGhpcyBwYXBlciBpcyB0byBkZW1vbnN0cmF0ZSB0aGF0IHRoZSBkaWZmaWN1bHRpZXMgb2Ygb2J0YWluaW5nIGFuYWx5dGljYWwgc29sdXRpb25zIHRvIE1hcmtvdiBwcm9jZXNzZXMgY2FuIGJlIGNvbnNpZGVyYWJseSByZWR1Y2VkIGJ5IHRoZSBhcHBsaWNhdGlvbiBvZiBzeW1ib2wgbWFuaXB1bGF0aW9uIHByb2dyYW1zLiBTaW5jZSBtYW55IHBoeXNpY2FsIHN5c3RlbXMgY2FuIGJlIG1vZGVsZWQgYnkgTWFya292IGFuZCBzZW1pLU1hcmtvdiBwcm9jZXNzZXMsIHRoZSBwb3RlbnRpYWwgcmFuZ2Ugb2YgYXBwbGljYXRpb24gb2YgdGhlc2UgdGVjaG5pcXVlcyBpcyBtdWNoIHdpZGVyIHRoYW4gdGhlIHByb2JsZW0gb2YgYXZhaWxhYmlsaXR5IGFuYWx5emVkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MjkwIChPdGhlciBjb21wdXRlciB0aGVvcnkpOyBDNTQyMCAoTWFpbmZyYW1lcyBhbmQgbWluaWNvbXB1dGVycykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMjsgNzIzIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gb2YgSGF3YWlpLCBIb25vbHVsdSwgSEksIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhbGdlYnJhaWMgbWFuaXB1bGF0aW9uOyBhdmFpbGFiaWxpdHk7IGNvbXB1dGVyIHN5c3RlbXM7IGNvbXB1dGVyIHN5c3RlbXMsIGRpZ2l0YWw7IG1hbmlwdWxhdGlvbjsgTWFya292IHByb2Nlc3NlczsgcmVhbC10aW1lIHN5c3RlbXM7IHJlbGlhYmlsaXR5OyBzeW1ib2w7IHVucmVsaWFibGUgcHJvY2Vzc29ycyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7U255ZGVyOjE5Nzg6QlJFLAogIGF1dGhvciA9ICAgICAgICJMYXdyZW5jZSBTbnlkZXIiLAogIHRpdGxlID0gICAgICAgICJ7Qi1UcmVlc30gUmUtZXhhbWluZWQiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjEiLAogIG51bWJlciA9ICAgICAgICI3IiwKICBwYWdlcyA9ICAgICAgICAiNTk0LS01OTQiLAogIG1vbnRoID0gICAgICAgIGp1bCwKICB5ZWFyID0gICAgICAgICAiMTk3OCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlNhdCBKYW4gMTggMTU6NDA6MjAgMTk5NyIsCiAgYmlic291cmNlID0gICAgImZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGF0YWJhc2UvV2llZGVyaG9sZC5iaWIiLAp9CgpAQXJ0aWNsZXtCYWNrdXM6MTk3ODpDUEIsCiAgYXV0aG9yID0gICAgICAgIkpvaG4gQmFja3VzIiwKICB0aXRsZSA9ICAgICAgICAiQ2FuIFByb2dyYW1taW5nIEJlIExpYmVyYXRlZCBGcm9tIHRoZSB7dm9uIE5ldW1hbm59IFN0eWxlPyB7QX0gRnVuY3Rpb25hbCBTdHlsZSBhbmQgaXRzIEFsZ2VicmEgb2YgUHJvZ3JhbXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjEiLAogIG51bWJlciA9ICAgICAgICI4IiwKICBwYWdlcyA9ICAgICAgICAiNjEzLS02NDEiLAogIG1vbnRoID0gICAgICAgIGF1ZywKICB5ZWFyID0gICAgICAgICAiMTk3OCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvUGFyYWxsZWwvcGFyLm1pc2MuYmliIGFuZCBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0Rpc3RyaWJ1dGVkL1FMRC8xOTc4LmJpYiIsCiAgbm90ZSA9ICAgICAgICAgIlJlcHJvZHVjZWQgaW4gYGBTZWxlY3RlZCBSZXByaW50cyBvbiBEYXRhZmxvdyBhbmQgUmVkdWN0aW9uIEFyY2hpdGVjdHVyZXMnJyBlZC4gUy4gUy4gVGhha2thciwgSUVFRSwgMTk4NywgcHAuIDIxNS0yNDMuIiwKICBhYnN0cmFjdCA9ICAgICAiQ29udmVudGlvbmFsIHByb2dyYW1taW5nIGxhbmd1YWdlcyBhcmUgZ3Jvd2luZyBldmVyIG1vcmUgZW5vcm1vdXMsIGJ1dCBub3Qgc3Ryb25nZXIuIEluaGVyZW50IGRlZmVjdHMgYXQgdGhlIG1vc3QgYmFzaWMgbGV2ZWwgY2F1c2UgdGhlbSB0byBiZSBib3RoIGZhdCBhbmQgd2VhazogdGhlaXIgcHJpbWl0aXZlIHdvcmQtYXQtYS10aW1lIHN0eWxlIG9mIHByb2dyYW1taW5nIGluaGVyaXRlZCBmcm9tIHRoZWlyIGNvbW1vbiBhbmNlc3RvciwgdGhlIHZvbiBOZXVtYW5uIGNvbXB1dGVyOyB0aGVpciBkaXZpc2lvbiBvZiBwcm9ncmFtbWluZyBpbnRvIGEgd29ybGQgb2YgZXhwcmVzc2lvbnMgYW5kIGEgd29ybGQgb2Ygc3RhdGVtZW50czsgdGhlaXIgaW5hYmlsaXR5IHRvIGVmZmVjdGl2ZWx5IHVzZSBwb3dlcmZ1bCBjb21iaW5pbmcgZm9ybXMgZm9yIGJ1aWxkaW5nIG5ldyBwcm9ncmFtcyBmcm9tIGV4aXN0aW5nIG9uZXM7IGFuZCB0aGVpciBsYWNrIG9mIHVzZWZ1bCBtYXRoZW1hdGljYWwgcHJvcGVydGllcyBmb3IgcmVhc29uaW5nIGFib3V0IHByb2dyYW1zLiBBbiBhbHRlcm5hdGl2ZSBmdW5jdGlvbmFsIHN0eWxlIG9mIHByb2dyYW1taW5nIGlzIGZvdW5kZWQgb24gdGhlIHVzZSBvZiBjb21iaW5pbmcgZm9ybXMgZm9yIGNyZWF0aW5nIHByb2dyYW1zLiBGdW5jdGlvbmFsIHByb2dyYW1zIGRlYWwgd2l0aCBzdHJ1Y3R1cmVkIGRhdGEsIGFyZSBvZnRlbiBub25yZXBldGl0aXZlIGFuZCBub25yZWN1cnNpdmUsIGFyZSBoaWVyYXJjaGljYWxseSBjb25zdHJ1Y3RlZCwgZG8gbm90IG5hbWUgdGhlaXIgYXJndW1lbnRzLCBhbmQgZG8gbm90IHJlcXVpcmUgdGhlIGNvbXBsZXggbWFjaGluZXJ5IG9mIHByb2NlZHVyZSBkZWNsYXJhdGlvbnMgdG8gYmVjb21lIGdlbmVyYWxseSBhcHBsaWNhYmxlLiBDb21iaW5pbmcgZm9ybXMgY2FuIHVzZSBoaWdoIGxldmVsIHByb2dyYW1zIHRvIGJ1aWxkIHN0aWxsIGhpZ2hlciBsZXZlbCBvbmVzIGluIGEgc3R5bGUgbm90IHBvc3NpYmxlIGluIGNvbnZlbnRpb25hbCBsYW5ndWFnZXMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBhbm5vdGUgPSAgICAgICAiQ29udmVudGlvbmFsIHByb2dyYW1taW5nIGxhbmd1YWdlcyBhcmUgZ3Jvd2luZyBldmVyIG1vcmUgZW5vcm1vdXMsIGJ1dCBub3Qgc3Ryb25nZXIuIEluaGVyZW50IGRlZmVjdHMgYXQgdGhlIG1vc3QgYmFzaWMgbGV2ZWwgY2F1c2UgdGhlbSB0byBiZSBib3RoIGZhdCBhbmQgd2VhazogdGhlaXIgcHJpbWl0aXZlIHdvcmQtYXQtYS10aW1lIHN0eWxlIG9mIHByb2dyYW1taW5nIGluaGVyaXRlZCBmcm9tIHRoZWlyIGNvbW1vbiBhbmNlc3RvciAtIHRoZSB2b24gTmV1bWFubiBjb21wdXRlciwgdGhlaXIgY2xvc2UgY291cGxpbmcgb2Ygc2VtYW50aWNzIHRvIHN0YXRlIHRyYW5zaXRpb25zLCB0aGVpciBkaXZpc2lvbiBvZiBwcm9ncmFtbWluZyBpbnRvIGEgd29ybGQgb2YgZXhwcmVzc2lvbnMgYW5kIGEgd29ybGQgb2Ygc3RhdGVtZW50cywgdGhlaXIgaW5hYmlsaXR5IHRvIGVmZmVjdGl2ZWx5IFxsZG90c3t9IiwKICBjbGFzc2NvZGVzID0gICAiQzYxNDAgKFByb2dyYW1taW5nIGxhbmd1YWdlcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIklNQiBSZXMuIExhYi4sIFNhbiBKb3NlLCBDQSwgVVNBIiwKICBkZXNjcmlwdG9ycyA9ICAiUHJvZ3JhbW1pbmcgbGFuZ3VhZ2U7IHJlbGlhYmlsaXR5OyBmdXR1cmUgb3V0bG9vazsgdm9uIE5ldW1hbm4gY29tcHV0ZXI7IGFwcGxpY2F0aXZlIGNvbXB1dGluZyBzeXN0ZW07IiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgIjQuMjk7IDUuMjA7IDUuMjQ7IDUuMjY7IGFsZ2VicmEgb2YgcHJvZ3JhbXM7IGFwcGxpY2F0aXZlIGNvbXB1dGluZyBzeXN0ZW1zOyBjb21iaW5pbmcgZm9ybXM7IGNvbXB1dGVyIG1ldGF0aGVvcnk7IGNvbnZlbnRpb25hbCBsYW5ndWFnZXM7IENSIGNhdGVnb3JpZXM6IDQuMjA7IGZ1bmN0aW9uYWwgc3R5bGU7IGdyZWNvbW1lbmRlZDkxOyBLZXkgd29yZHMgYW5kIHBocmFzZXM6IGZ1bmN0aW9uYWwgcHJvZ3JhbW1pbmc7IG1ldGFjb21wb3NpdGlvbjsgbW9kZWxzIG9mIGNvbXB1dGluZyBzeXN0ZW1zOyBwcm9ncmFtIGNvcnJlY3RuZXNzOyBwcm9ncmFtIHRlcm1pbmF0aW9uOyBwcm9ncmFtIHRyYW5zZm9ybWF0aW9uOyBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IFJoaWdobmFtOyBzdHJ1Y3R1cmVkIGRhdGE7IHRoZW9yeSBhazsgVHVyaW5nIGF3YXJkIGxlY3R1cmU7IHZvbiBOZXVtYW4gc3R5bGU7IHZvbiBOZXVtYW5uIGNvbXB1dGVyczsgdm9uIE5ldW1hbm4gbGFuZ3VhZ2VzIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtLbGluZzoxOTc4OlZDUywKICBhdXRob3IgPSAgICAgICAiUi4gS2xpbmciLAogIHRpdGxlID0gICAgICAgICJWYWx1ZSBjb25mbGljdHMgYW5kIHNvY2lhbCBjaG9pY2UgaW4gZWxlY3Ryb25pYyBmdW5kcyB0cmFuc2ZlciBzeXN0ZW0gZGV2ZWxvcG1lbnRzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIxIiwKICBudW1iZXIgPSAgICAgICAiOCIsCiAgcGFnZXMgPSAgICAgICAgIjY0Mi0tNjU3IiwKICBtb250aCA9ICAgICAgICBhdWcsCiAgeWVhciA9ICAgICAgICAgIjE5NzgiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzcxMjAgKEZpbmFuY2lhbCBjb21wdXRpbmcpIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gb2YgQ2FsaWZvcm5pYSwgSXJ2aW5lLCBDQSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiRUZUOyBFRlRTOyBlbGVjdHJvbmljIGZ1bmRzIHRyYW5zZmVyOyBwcml2YWN5IG9mIHRyYW5zYWN0aW9uczsgcmVsaWFiaWxpdHk7IHNvY2lhbCBjaG9pY2U7IHN5c3RlbSIsCiAgdHJlYXRtZW50ID0gICAgIkUgRWNvbm9taWM7IEcgR2VuZXJhbCBSZXZpZXciLAp9CgpAQXJ0aWNsZXtIaXJzY2hiZXJnOjE5Nzg6RlBTLAogIGF1dGhvciA9ICAgICAgICJELiBTLiBIaXJzY2hiZXJnIiwKICB0aXRsZSA9ICAgICAgICAiRmFzdCBQYXJhbGxlbCBTb3J0aW5nIEFsZ29yaXRobXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjEiLAogIG51bWJlciA9ICAgICAgICI4IiwKICBwYWdlcyA9ICAgICAgICAiNjU3LS02NjEiLAogIG1vbnRoID0gICAgICAgIGF1ZywKICB5ZWFyID0gICAgICAgICAiMTk3OCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4QzI1IiwKICBNUm51bWJlciA9ICAgICAiODBjOjY4MDI4IiwKICBtcnJldmlld2VyID0gICAiSi4gTWlzcmEiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L01pc2MvcHJvdGVpbi5wYXR0ZXJuLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIkEgcGFyYWxsZWwgYnVja2V0LXNvcnQgYWxnb3JpdGhtIGlzIHByZXNlbnRlZCB0aGF0IHJlcXVpcmVzIHRpbWUgTyhsb2cgbikgYW5kIHRoZSB1c2Ugb2YgbiBwcm9jZXNzb3JzLiBUaGUgYWxnb3JpdGhtIG1ha2VzIHVzZSBvZiBhIHRlY2huaXF1ZSB0aGF0IHJlcXVpcmVzIG1vcmUgc3BhY2UgdGhhbiB0aGUgcHJvZHVjdCBvZiBwcm9jZXNzb3JzIGFuZCB0aW1lLiBBIHJlYWxpc3RpYyBtb2RlbCBpcyB1c2VkIGluIHdoaWNoIG5vIG1lbW9yeSBjb250ZW50aW9uIGlzIHBlcm1pdHRlZC4gQSBwcm9jZWR1cmUgaXMgYWxzbyBwcmVzZW50ZWQgdG8gc29ydCBuIG51bWJlcnMgaW4gdGltZSBPKGsgbG9nIG4pIHVzaW5nIG4qKjEqKiBwbHVzICoqMSoqLyoqayBwcm9jZXNzb3JzLCBmb3IgayBhbiBhcmJpdHJhcnkgaW50ZWdlci4gVGhlIG1vZGVsIG9mIGNvbXB1dGF0aW9uIGZvciB0aGlzIHByb2NlZHVyZSBwZXJtaXRzIHNpbXVsdGFuZW91cyBmZXRjaGVzIGZyb20gdGhlIHNhbWUgbWVtb3J5IGxvY2F0aW9uLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTMwIChEYXRhIGhhbmRsaW5nIHRlY2huaXF1ZXMpOyBDNjE1MEogKE9wZXJhdGluZyBzeXN0ZW1zKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb21tZW50ID0gICAgICAiYGBBIHBhcmFsbGVsIGJ1Y2tldC0tc29ydCBhbGdvcml0aG0gaXMgcHJlc2VudGVkIHRoYXQgcmVxdWlyZXMgdGltZSAkTyhcbG9nIG4pJCBhbmQgdGhlIHVzZSBvZiAkbiQgcHJvY2Vzc29ycy4gVGhlIGFsZ29yaXRobSBtYWtlcyB1c2Ugb2YgYSB0ZWNobmlxdWUgdGhhdCByZXF1aXJlcyBtb3JlIHNwYWNlIHRoYW4gdGhlIHByb2R1Y3Qgb2YgcHJvY2Vzc29ycyBhbmQgdGltZS4gQSByZWFsaXN0aWMgbW9kZWwgaXMgdXNlZCBpbiB3aGljaCBubyBtZW1vcnkgY29udGVudGlvbiBpcyBwZXJtaXR0ZWQuIEEgcHJvY2VkdXJlIGlzIGFsc28gcHJlc2VudGVkIHRvIHNvcnQgJG4kIG51bWJlcnMgaW4gdGltZSAkTyhrIFxsb2cgbikkIHVzaW5nICRuXnsxKzEva30kIHByb2Nlc3NvcnMsIGZvciAkayQgYW4gYXJiaXRyYXJ5IGludGVnZXIuIFRoZSBtb2RlbCBvZiBjb21wdXRhdGlvbiBmb3IgdGhpcyBwcm9jZWR1cmUgcGVybWl0cyBzaW11bHRhbmVvdXMgZmV0Y2hlcyBmcm9tIHRoZSBzYW1lIG1lbW9yeSBsb2NhdGlvbi4nJyIsCiAgY29ycHNvdXJjZSA9ICAgIlJpY2UgVW5pdi4sIEhvdXN0b24sIFRYLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYnVja2V0IHNvcnQgYWxnb3JpdGhtOyBjb21wdXRlciBwcm9ncmFtbWluZyAtLS0gU3Vicm91dGluZXM7IGNvbXB1dGVyIHN5c3RlbXMgcHJvZ3JhbW1pbmc7IHBhcmFsbGVsIHByb2Nlc3Npbmc7IHBhcmFsbGVsIHNvcnRpbmcgYWxnb3JpdGhtczsgc29ydGluZyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7TW9ycmlzOjE5Nzg6VFNFLAogIGF1dGhvciA9ICAgICAgICJGLiBMb2Nrd29vZCBNb3JyaXMiLAogIHRpdGxlID0gICAgICAgICJBIFRpbWUtIGFuZCBTcGFjZS1FZmZpY2llbnQgR2FyYmFnZSBDb21wYWN0aW9uIEFsZ29yaXRobSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMSIsCiAgbnVtYmVyID0gICAgICAgIjgiLAogIHBhZ2VzID0gICAgICAgICI2NjItLTY2NSIsCiAgbW9udGggPSAgICAgICAgYXVnLAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9Db21waWxlci9yZXlub2xkcy5iaWIiLAogIGFic3RyYWN0ID0gICAgICJHaXZlbiBhbiBhcmVhIG9mIHN0b3JhZ2UgY29udGFpbmluZyBzY2F0dGVyZWQsIG1hcmtlZCBub2RlcyBvZiBkaWZmZXJpbmcgc2l6ZXMsIG9uZSBtYXkgd2lzaCB0byByZWFycmFuZ2UgdGhlbSBpbnRvIGEgY29tcGFjdCBtYXNzIGF0IG9uZSBlbmQgb2YgdGhlIGFyZWEgd2hpbGUgcmV2aXNpbmcgYWxsIHBvaW50ZXJzIHRvIG1hcmtlZCBub2RlcyB0byBzaG93IHRoZWlyIG5ldyBsb2NhdGlvbnMuIEFuIGFsZ29yaXRobSBpcyBkZXNjcmliZWQgd2hpY2ggYWNjb21wbGlzaGVzIHRoaXMgdGFzayBpbiBsaW5lYXIgdGltZSByZWxhdGl2ZSB0byB0aGUgc2l6ZSBvZiB0aGUgc3RvcmFnZSBhcmVhLCBhbmQgaW4gYSBzcGFjZSBvZiB0aGUgb3JkZXIgb2Ygb25lIGJpdCBmb3IgZWFjaCBwb2ludGVyLiBUaGUgYWxnb3JpdGhtIG9wZXJhdGVzIGJ5IHJldmVyc2libHkgZW5jb2RpbmcgdGhlIHNpdHVhdGlvbiAodGhhdCBhIGNvbGxlY3Rpb24gb2YgbG9jYXRpb25zIHBvaW50IHRvIGEgc2luZ2xlIGxvY2F0aW9uKSBieSBhIGxpbmVhciBsaXN0LCBlbWFuYXRpbmcgZnJvbSB0aGUgcG9pbnRlZC10byBsb2NhdGlvbiwgcGFzc2luZyB0aHJvdWdoIHRoZSBwb2ludGluZyBsb2NhdGlvbnMsIGFuZCB0ZXJtaW5hdGluZyB3aXRoIHRoZSBwb2ludGVkLXRvIGxvY2F0aW9uJ3MgdHJhbnNwbGFudGVkIGNvbnRlbnRzLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbikiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlN5cmFjdXNlIFVuaXYuLCBTeXJhY3VzZSwgTlksIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBvcGVyYXRpbmcgc3lzdGVtcyAtLS0gU3RvcmFnZSBBbGxvY2F0aW9uOyBjb21wdXRlciBwcm9ncmFtbWluZzsgZW5jb2Rpbmc7IGdhcmJhZ2UgY29tcGFjdGlvbiBhbGdvcml0aG07IHBvaW50ZXJzOyBwb2ludGluZyBsb2NhdGlvbnM7IHJldmVyc2libHk7IHN0b3JhZ2U7IHN0b3JhZ2UgbWFuYWdlbWVudCIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7SG9hcmU6MTk3ODpDU1AsCiAgYXV0aG9yID0gICAgICAgIkMuIEEuIFIuIEhvYXJlIiwKICB0aXRsZSA9ICAgICAgICAiQ29tbXVuaWNhdGluZyBTZXF1ZW50aWFsIFByb2Nlc3NlcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMSIsCiAgbnVtYmVyID0gICAgICAgIjgiLAogIHBhZ2VzID0gICAgICAgICI2NjYtLTY3NyIsCiAgbW9udGggPSAgICAgICAgYXVnLAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9QYXJhbGxlbC9wYXIubWlzYy5iaWIiLAogIG5vdGUgPSAgICAgICAgICJTZWUgY29ycmlnZW5kdW0gXGNpdGV7SG9hcmU6MTk3ODpDQ1N9LiIsCiAgYWJzdHJhY3QgPSAgICAgIlRoaXMgcGFwZXIgc3VnZ2VzdHMgdGhhdCBpbnB1dCBhbmQgb3V0cHV0IGFyZSBiYXNpYyBwcmltaXRpdmVzIG9mIHByb2dyYW1taW5nIGFuZCB0aGF0IHBhcmFsbGVsIGNvbXBvc2l0aW9uIG9mIGNvbW11bmljYXRpbmcgc2VxdWVudGlhbCBwcm9jZXNzZXMgaXMgYSBmdW5kYW1lbnRhbCBwcm9ncmFtIHN0cnVjdHVyaW5nIG1ldGhvZC4gV2hlbiBjb21iaW5lZCB3aXRoIGEgZGV2ZWxvcG1lbnQgb2YgRGlqa3N0cmEncyBndWFyZGVkIGNvbW1hbmQsIHRoZXNlIGNvbmNlcHRzIGFyZSBzdXJwcmlzaW5nbHkgdmVyc2F0aWxlLiBccGFyIFRoZWlyIHVzZSBpcyBpbGx1c3RyYXRlZCBieSBzYW1wbGUgc29sdXRpb25zIG9mIGEgdmFyaWV0eSBvZiBmYW1pbGlhciBwcm9ncmFtbWluZyBleGVyY2lzZXMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBhbm5vdGUgPSAgICAgICAiVGhpcyBwYXBlciBpcyBub3cgZXhwYW5kZWQgaW50byBhbiBleGNlbGxlbnQgYm9vayBkZXRhaWxlZCBieSBIb2FyZSBhbmQgcHVibGlzaGVkIGJ5IFByZW50aWNlLUhhbGwuIFRoaXMgcGFwZXIgaXMgcmVwcm9kdWNlZCBpbiBLdWhuIGFuZCBQYWR1YSdzICgxOTgxLCBJRUVFKSBzdXJ2ZXkgYGBUdXRvcmlhbCBvbiBQYXJhbGxlbCBQcm9jZXNzaW5nLicnIFJlcHJvZHVjZWQgaW4gYGBEaXN0cmlidXRlZCBDb21wdXRpbmc6IENvbmNlcHRzIGFuZCBJbXBsZW1lbnRhdGlvbnMnJyBlZGl0ZWQgYnkgTWNFbnRpcmUsIE8nUmVpbGx5IGFuZCBMYXJzb24sIElFRUUsIDE5ODQuIFNvbWV3aGF0IGRhdGVkLiIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTEwIChTeXN0ZW1zIGFuYWx5c2lzIGFuZCBwcm9ncmFtbWluZykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlF1ZWVuJ3MgVW5pdi4sIEJlbGZhc3QsIFVLIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgIjQuMjI7IDQuMzIgbWFlZGVyIGJpYmxpbzogc3luY2hyb25pc2F0aW9uIGFuZCBjb25jdXJyZW5jeSBpbiBwcm9jZXNzZXM7IGFrOyBiaGliYmFyZCBncmVjb21tZW5kZWQ5MTsgY2xhc3NlczsgY29tcHV0ZXIgcHJvZ3JhbW1pbmc7IGNvbmN1cnJlbmN5OyBjb25kaXRpb25hbCBjcml0aWNhbCByZWdpb25zOyBjb3JvdXRpbmVzOyBDUiBjYXRlZ29yaWVzOiA0LjIwOyBDU1A7IGRhdGEgcmVwcmVzZW50YXRpb25zOyBEaWprc3RyYSdzIGd1YXJkZWQgY29tbWFuZDsgZ3VhcmRlZCBjb21tYW5kczsgaGNjOyBpbnB1dDsgaXRlcmF0aXZlIGFycmF5czsgay1jb25jdXJyZW5jeTsgay1jc3A7IGstZ3VhcmRlZC1jb21tYW5kczsgbW9uaXRvcnM7IG11bHRpcGxlIGVudHJpZXM7IG11bHRpcGxlIGV4aXRzOyBub25kZXRlcm1pbmFjeTsgb3V0cHV0OyBwYXJhbGxlbCBjb21wb3NpdGlvbjsgcGFyYWxsZWwgcHJvZ3JhbW1pbmc7IHByaW1pdGl2ZXM7IHByb2NlZHVyZXM7IHByb2dyYW07IHByb2dyYW0gc3RydWN0dXJlczsgcHJvZ3JhbW1pbmc7IFByb2dyYW1taW5nOyBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IHByb2dyYW1taW5nIHByaW1pdGl2ZXM7IHJlY3Vyc2lvbjsgc2VxdWVudGlhbCBwcm9jZXNzZXM7IHN0cnVjdHVyZWQgcHJvZ3JhbW1pbmc7IHN0cnVjdHVyaW5nIG1ldGhvZCIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7QnJpY2U6MTk3ODpGQ1IsCiAgYXV0aG9yID0gICAgICAgIlJpY2hhcmQgUy4gQnJpY2UgYW5kIEouIEMuIEJyb3duZSIsCiAgdGl0bGUgPSAgICAgICAgIkZlZWRiYWNrIENvdXBsZWQgUmVzb3VyY2UgQWxsb2NhdGlvbiBQb2xpY2llcyBpbiB0aGUgTXVsdGlwcm9ncmFtbWluZy1NdWx0aXByb2Nlc3NvciBDb21wdXRlciBTeXN0ZW0iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjEiLAogIG51bWJlciA9ICAgICAgICI4IiwKICBwYWdlcyA9ICAgICAgICAiNjc4LS02ODYiLAogIG1vbnRoID0gICAgICAgIGF1ZywKICB5ZWFyID0gICAgICAgICAiMTk3OCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJNb2RlbCBzdHVkaWVzIG9mIHNvbWUgaW50ZWdyYXRlZCwgZmVlZGJhY2stZHJpdmVuIHNjaGVkdWxpbmcgc3lzdGVtcyBmb3IgbXVsdGlwcm9ncmFtbWVkLW11bHRpcHJvY2Vzc29yIGNvbXB1dGVyIHN5c3RlbXMgYXJlIHByZXNlbnRlZC4gVGhlIGJhc2ljIGNvbnRyb2wgdmFyaWFibGVzIHVzZWQgYXJlIHRoZSBkYXRhLWZsb3cgcmF0ZXMgZm9yIHRoZSBwcm9jZXNzZXMgZXhlY3V0aW5nIG9uIHRoZSBDUFUuIFRoZSBtb2RlbCBzeXN0ZW1zIGZlYXR1cmUgc2ltdWxhdGVkIGNvbnRpbnVvdXMtZmxvdyBhbmQgcHJlZW1wdC1yZXN1bWUgc2NoZWR1bGluZyBvZiBpbnB1dC1vdXRwdXQgYWN0aXZpdHkuIEF0dGVudGlvbiBpcyBnaXZlbiB0byB0aGUgYW1vdW50IG9mIG1lbW9yeSByZXNvdXJjZSByZXF1aXJlZCBmb3IgZWZmZWN0aXZlIHByb2Nlc3Npbmcgb2YgdGhlIEkvTyBhY3Rpdml0eSAoYnVmZmVyIHNwYWNlIGFzc2lnbm1lbnQpLiBUaGUgbW9kZWwgc3R1ZGllcyB1c2VkIGJvdGggZGlzdHJpYnV0aW9uLWRyaXZlbiBhbmQgdHJhY2UtZHJpdmVuIHRlY2huaXF1ZXMuIEV2ZW4gcmVsYXRpdmVseSBzaW1wbGUgZHluYW1pYyBzY2hlZHVsZXJzIGFyZSBzaG93biB0byBpbXByb3ZlIHN5c3RlbSBwZXJmb3JtYW5jZSAoYXMgbWVhc3VyZWQgYnkgdXNlciBDUFUgdGltZSkgb3ZlciB0aGF0IGdpdmVuIGJ5IG9wdGltYWwgb3IgbmVhci1vcHRpbWFsIHN0YXRpYyBzY2hlZHVsZXJzIGltYmVkZGVkIGluIGlkZW50aWNhbCBzeXN0ZW0gc3RydWN0dXJlcyBhbmQgd29ya2xvYWQgZW52aXJvbm1lbnRzLiBUaGUgaW1wcm92ZW1lbnQgaXMgZ3JlYXRlc3QgdW5kZXIgYSBoZWF2eSBJL08gZGVtYW5kIHdvcmtsb2FkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTUwSiAoT3BlcmF0aW5nIHN5c3RlbXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjI7IDcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIkdlb3JnZSBXYXNoaW5ndG9uIFVuaXYuLCBXYXNoaW5ndG9uLCBEQywgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImJ1ZmZlciBzcGFjZSBhc3NpZ25tZW50OyBjb21wdXRlciBzeXN0ZW1zIHByb2dyYW1taW5nOyBjb21wdXRlciBzeXN0ZW1zLCBkaWdpdGFsOyBkeW5hbWljIHNjaGVkdWxlcnM7IGZlZWRiYWNrIHNjaGVkdWxpbmc7IEkvTyBhY3Rpdml0eTsgbXVsdGlwcm9ncmFtbWluZzsgc2NoZWR1bGluZzsgc2NoZWR1bGluZyBzeXN0ZW1zIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtTY2hldWVybWFubjoxOTc4OlNBUCwKICBhdXRob3IgPSAgICAgICAiUGV0ZXIgU2NoZXVlcm1hbm4gYW5kIEMuIFJvYmVydCBDYXJsc29uIiwKICB0aXRsZSA9ICAgICAgICAiU2VsZi1Bc3Nlc3NtZW50IFByb2NlZHVyZSB7Vn06IGEgc2VsZi1hc3Nlc3NtZW50IHByb2NlZHVyZSBkZWFsaW5nIHdpdGggZGF0YWJhc2Ugc3lzdGVtcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMSIsCiAgbnVtYmVyID0gICAgICAgIjgiLAogIHBhZ2VzID0gICAgICAgICI2ODctLTY5MyIsCiAgbW9udGggPSAgICAgICAgYXVnLAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiU2F0IEphbiAxOCAxNTo0MDo0NSAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EYXRhYmFzZS9XaWVkZXJob2xkLmJpYiIsCn0KCkBBcnRpY2xle0hhcnJpczoxOTc4OkFVUywKICBhdXRob3IgPSAgICAgICAiUi4gQS4gSGFycmlzIGFuZCBKLiBELiBadW5kIiwKICB0aXRsZSA9ICAgICAgICAiQW4gYWxnb3JpdGhtIHVzaW5nIHN5bWJvbGljIHRlY2huaXF1ZXMgZm9yIHRoZSB7QmVsLVBldHJvdn0gY2xhc3NpZmljYXRpb24gb2YgZ3Jhdml0YXRpb25hbCBmaWVsZHMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjEiLAogIG51bWJlciA9ICAgICAgICI5IiwKICBwYWdlcyA9ICAgICAgICAiNzE1LS03MTciLAogIG1vbnRoID0gICAgICAgIHNlcCwKICB5ZWFyID0gICAgICAgICAiMTk3OCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJBMDI3MCAoQ29tcHV0YXRpb25hbCB0ZWNobmlxdWVzKTsgQTA0MjBDIChGdW5kYW1lbnRhbCBwcm9ibGVtcyBhbmQgZ2VuZXJhbCBmb3JtYWxpc20gaW4gZ2VuZXJhbCByZWxhdGl2aXR5KTsgQTA0MzAgKEdyYXZpdGF0aW9uYWwgd2F2ZXMgYW5kIHJhZGlhdGlvbjogdGhlb3J5KTsgQzYxMzAgKERhdGEgaGFuZGxpbmcgdGVjaG5pcXVlcyk7IEM3MzIwIChQaHlzaWNzIGFuZCBjaGVtaXN0cnkgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIkhSQi1TaW5nZXIgSW5jLiwgU3RhdGUgQ29sbGVnZSwgUEEsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgIkJlbDsgY2xhc3NpZmljYXRpb24gc2NoZW1lOyBGT1JNQUM7IGdlbmVyYWwgcmVsYXRpdml0eTsgZ3Jhdml0YXRpb247IGdyYXZpdGF0aW9uYWwgZmllbGRzOyBncmF2aXRhdGlvbmFsIHdhdmVzOyBQZXRyb3YgdHlwZXM7IHBoeXNpY3MgY29tcHV0aW5nOyBzeW1ib2wgbWFuaXB1bGF0aW9uIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtTY2h3ZXRtYW46MTk3ODpIU00sCiAgYXV0aG9yID0gICAgICAgIkguIEQuIFNjaHdldG1hbiIsCiAgdGl0bGUgPSAgICAgICAgIkh5YnJpZCBTaW11bGF0aW9uIE1vZGVscyBvZiBDb21wdXRlciBTeXN0ZW1zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIxIiwKICBudW1iZXIgPSAgICAgICAiOSIsCiAgcGFnZXMgPSAgICAgICAgIjcxOC0tNzIzIiwKICBtb250aCA9ICAgICAgICBzZXAsCiAgeWVhciA9ICAgICAgICAgIjE5NzgiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0Rpc3RyaWJ1dGVkL3NpbXVsYW4uYmliIiwKICBhYnN0cmFjdCA9ICAgICAiQSBkZXNjcmlwdGlvbiBpcyBnaXZlbiBvZiB0aGUgc3RydWN0dXJlIGFuZCBvcGVyYXRpb24gb2YgYSBoeWJyaWQgc2ltdWxhdGlvbiBtb2RlbCBpbiB3aGljaCBib3RoIGRpc2NyZXRlLWV2ZW50IHNpbXVsYXRpb24gYW5kIGFuYWx5dGljIHRlY2huaXF1ZXMgYXJlIGNvbWJpbmVkIHRvIHByb2R1Y2UgZWZmaWNpZW50IHlldCBhY2N1cmF0ZSBzeXN0ZW0gbW9kZWxzLiBJbiBhbiBleGFtcGxlIGJhc2VkIG9uIGEgc2ltcGxlIGh5cG90aGV0aWNhbCBjb21wdXRlciBzeXN0ZW0sIGRpc2NyZXRlLWV2ZW50IHNpbXVsYXRpb24gaXMgdXNlZCB0byBtb2RlbCB0aGUgYXJyaXZhbCBhbmQgYWN0aXZhdGlvbiBvZiBqb2JzLCBhbmQgYSBjZW50cmFsLXNlcnZlciBxdWV1ZWluZyBuZXR3b3JrIG1vZGVscyB0aGUgdXNlIG9mIHN5c3RlbSBwcm9jZXNzb3JzLiBUaGUgYWNjdXJhY3kgYW5kIGVmZmljaWVuY3kgb2YgdGhlIGh5YnJpZCB0ZWNobmlxdWUgYXJlIGRlbW9uc3RyYXRlZCBieSBjb21wYXJpbmcgdGhlIHJlc3VsdCBhbmQgY29tcHV0YXRpb25hbCBjb3N0cyBvZiB0aGUgaHlicmlkIG1vZGVsIG9mIHRoZSBleGFtcGxlIHdpdGggdGhvc2Ugb2YgYW4gZXF1aXZhbGVudCBzaW11bGF0aW9uLW9ubHkgbW9kZWwuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzc0MzAgKENvbXB1dGVyIGVuZ2luZWVyaW5nKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIyOyA3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJQdXJkdWUgVW5pdi4sIExhZmF5ZXR0ZSwgSU4sIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhY3RpdmF0aW9uIG9mIGpvYnM7IGFuYWx5dGljIHRlY2huaXF1ZXM7IGFycml2YWw7IGNlbnRyYWwgc2VydmVyIHF1ZXVlaW5nOyBjb21wdXRlciBzZWxlY3Rpb24gYW5kIGV2YWx1YXRpb247IGNvbXB1dGVyIHNpbXVsYXRpb247IGNvbXB1dGVyIHN5c3RlbXM7IGNvbXB1dGVyIHN5c3RlbXMsIGRpZ2l0YWw7IGRpZ2l0YWwgc2ltdWxhdGlvbjsgZGlzY3JldGUgZXZlbnQ7IGh5cG90aGV0aWNhbCBjb21wdXRlcjsgbmV0d29yazsgc2ltdWxhdGlvbjsgc2ltdWxhdGlvbiBtb2RlbDsgc3lzdGVtIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtCYXJ0aDoxOTc4OlBJRCwKICBhdXRob3IgPSAgICAgICAiSmVmZnJleSBNLiBCYXJ0aCIsCiAgdGl0bGUgPSAgICAgICAgIkEgUHJhY3RpY2FsIEludGVycHJvY2VkdXJhbCBEYXRhIEZsb3cgQW5hbHlzaXMgQWxnb3JpdGhtIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIxIiwKICBudW1iZXIgPSAgICAgICAiOSIsCiAgcGFnZXMgPSAgICAgICAgIjcyNC0tNzM2IiwKICBtb250aCA9ICAgICAgICBzZXAsCiAgeWVhciA9ICAgICAgICAgIjE5NzgiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiQSBuZXcgaW50ZXJwcm9jZWR1cmFsIGRhdGEgZmxvdyBhbmFseXNpcyBhbGdvcml0aG0gaXMgcHJlc2VudGVkIGFuZCBhbmFseXplZC4gVGhlIGFsZ29yaXRobSBhc3NvY2lhdGVzIHdpdGggZWFjaCBwcm9jZWR1cmUgaW4gYSBwcm9ncmFtIGluZm9ybWF0aW9uIGFib3V0IHdoaWNoIHZhcmlhYmxlcyBtYXkgYmUgbW9kaWZpZWQsIHdoaWNoIG1heSBiZSB1c2VkLCBhbmQgd2hpY2ggYXJlIHBvc3NpYmx5IHByZXNlcnZlZCBieSBhIGNhbGwgb24gdGhlIHByb2NlZHVyZSwgYW5kIGFsbCBvZiBpdHMgc3ViY2FsbHMuIFRoZSBhbGdvcml0aG0gaXMgc3VmZmljaWVudGx5IHBvd2VyZnVsIHRvIGJlIHVzZWQgb24gcmVjdXJzaXZlIHByb2dyYW1zIGFuZCB0byBkZWFsIHdpdGggdGhlIHNoYXJpbmcgb2YgdmFyaWFibGVzIHdoaWNoIGFyaXNlcyB0aHJvdWdoIHJlZmVyZW5jZSBwYXJhbWV0ZXJzLiBUaGUgYWxnb3JpdGhtIGlzIHVuaXF1ZSBpbiB0aGF0IGl0IGNhbiBjb21wdXRlIGFsbCBvZiB0aGlzIGluZm9ybWF0aW9uIGluIGEgc2luZ2xlIHBhc3MsIG5vdCByZXF1aXJpbmcgYSBwcmVwYXNzIHRvIGNvbXB1dGUgY2FsbGluZyByZWxhdGlvbnNoaXBzIG9yIHNoYXJpbmcgcGF0dGVybnMuIFRoZSBhbGdvcml0aG0gaXMgYXN5bXB0b3RpY2FsbHkgb3B0aW1hbCBpbiB0aW1lIGNvbXBsZXhpdHkuIEl0IGhhcyBiZWVuIGltcGxlbWVudGVkIGFuZCBpcyBwcmFjdGljYWwgZXZlbiBvbiBwcm9ncmFtcyB3aGljaCBhcmUgcXVpdGUgbGFyZ2UuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQyNDAgKFByb2dyYW1taW5nIGFuZCBhbGdvcml0aG0gdGhlb3J5KSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiU3RhbmZvcmQgVW5pdi4sIFN0YW5mb3JkLCBDQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFzeW1wdG90aWNhbGx5OyBjb21wdXRlciBwcm9ncmFtbWluZzsgaW50ZXJwcm9jZWR1cmFsIGRhdGEgZmxvdyBhbmFseXNpcyBhbGdvcml0aG07IG9wdGltYWwgaW4gdGltZSBjb21wbGV4aXR5OyBwcm9ncmFtOyBwcm9ncmFtbWluZyB0aGVvcnk7IHJlY3Vyc2l2ZSBwcm9ncmFtczsgcmVmZXJlbmNlIHBhcmFtZXRlcnMiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle1BvcGVrOjE5Nzg6TVZELAogIGF1dGhvciA9ICAgICAgICJHZXJhbGQgSi4gUG9wZWsgYW5kIERhdmlkIEEuIEZhcmJlciIsCiAgdGl0bGUgPSAgICAgICAgIk1vZGVsIGZvciBWZXJpZmljYXRpb24gb2YgRGF0YSBTZWN1cml0eSBpbiBPcGVyYXRpbmcgU3lzdGVtcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMSIsCiAgbnVtYmVyID0gICAgICAgIjkiLAogIHBhZ2VzID0gICAgICAgICI3MzctLTc0OSIsCiAgbW9udGggPSAgICAgICAgc2VwLAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlByb2dyYW0gdmVyaWZpY2F0aW9uIGFwcGxpZWQgdG8ga2VybmVsIGFyY2hpdGVjdHVyZXMgZm9ybXMgYSBwcm9taXNpbmcgbWV0aG9kIGZvciBwcm92aWRpbmcgdW5jaXJjdW12ZW50YWJseSBzZWN1cmUsIHNoYXJlZCBjb21wdXRlciBzeXN0ZW1zLiBBIHByZWNpc2UgZGVmaW5pdGlvbiBvZiBkYXRhIHNlY3VyaXR5IGlzIGRldmVsb3BlZCBpbiB0ZXJtcyBvZiBhIGdlbmVyYWwgbW9kZWwgZm9yIG9wZXJhdGluZyBzeXN0ZW1zLiBUaGlzIG1vZGVsIGlzIHN1aXRhYmxlIGFzIGEgYmFzaXMgZm9yIHZlcmlmeWluZyBtYW55IG9mIHRob3NlIHByb3BlcnRpZXMgb2YgYW4gb3BlcmF0aW5nIHN5c3RlbSB3aGljaCBhcmUgbmVjZXNzYXJ5IHRvIGFzc3VyZSByZWxpYWJsZSBlbmZvcmNlbWVudCBvZiBzZWN1cml0eS4gVGhlIGFwcGxpY2F0aW9uIG9mIHRoaXMgYXBwcm9hY2ggdG8gdGhlIFVDTEEgc2VjdXJlIG9wZXJhdGluZyBzeXN0ZW0gaXMgYWxzbyBkaXNjdXNzZWQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxNTBKIChPcGVyYXRpbmcgc3lzdGVtcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMjsgNzIzIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gb2YgQ2FsaWZvcm5pYSwgTG9zIEFuZ2VsZXMsIENBLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgb3BlcmF0aW5nIHN5c3RlbXM7IGNvbXB1dGVyIHN5c3RlbXMsIGRpZ2l0YWwgLS0tIFRpbWUgU2hhcmluZzsgZGF0YSBwcm9jZXNzaW5nOyBkYXRhIHNlY3VyaXR5OyBrZXJuZWwgYXJjaGl0ZWN0dXJlczsgbW9kZWw7IG9wZXJhdGluZyBzeXN0ZW1zOyBvcGVyYXRpbmcgc3lzdGVtcyAoY29tcHV0ZXJzKTsgc2VjdXJpdHkgb2YgZGF0YTsgdmVyaWZpY2F0aW9uIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtEZW5uaW5nOjE5Nzg6R1dTLAogIGF1dGhvciA9ICAgICAgICJQZXRlciBKLiBEZW5uaW5nIGFuZCBEb25hbGQgUi4gU2x1dHoiLAogIHRpdGxlID0gICAgICAgICJHZW5lcmFsaXplZCBXb3JraW5nIFNldHMgZm9yIFNlZ21lbnQgUmVmZXJlbmNlIFN0cmluZ3MiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjEiLAogIG51bWJlciA9ICAgICAgICI5IiwKICBwYWdlcyA9ICAgICAgICAiNzUwLS03NTkiLAogIG1vbnRoID0gICAgICAgIHNlcCwKICB5ZWFyID0gICAgICAgICAiMTk3OCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJUaGUgd29ya2luZy1zZXQgY29uY2VwdCBpcyBleHRlbmRlZCBmb3IgcHJvZ3JhbXMgdGhhdCByZWZlcmVuY2Ugc2VnbWVudHMgb2YgZGlmZmVyZW50IHNpemVzLiBUaGUgZ2VuZXJhbGl6ZWQgd29ya2luZy1zZXQgcG9saWN5IChHV1MpIGtlZXBzIGFzIGl0cyByZXNpZGVudCBzZXQgdGhvc2Ugc2VnbWVudHMgd2hvc2UgcmV0ZW50aW9uIGNvc3RzIGRvIG5vdCBleGNlZWQgdGhlaXIgcmV0cmlldmFsIGNvc3RzLiBUaGUgR1dTIGlzIGEgbW9kZWwgZm9yIHRoZSBlbnRpcmUgY2xhc3Mgb2YgZGVtYW5kLWZldGNoaW5nIG1lbW9yeSBwb2xpY2llcyB0aGF0IHNhdGlzZnkgYSByZXNpZGVudC1zZXQgaW5jbHVzaW9uIHByb3BlcnR5LiBBIGdlbmVyYWxpemVkIG9wdGltYWwgcG9saWN5IChHT1BUKSBpcyBhbHNvIGRlZmluZWQ7IGF0IGl0cyBvcGVyYXRpbmcgcG9pbnRzIGl0IG1pbmltaXplcyBhZ2dyZWdhdGVkIHJldGVudGlvbiBhbmQgc3dhcHBpbmcgY29zdHMuIFNwZWNpYWwgY2FzZXMgb2YgdGhlIGNvc3Qgc3RydWN0dXJlIGFsbG93IEdXUyBhbmQgR09QVCB0byBzaW11bGF0ZSBhbnkga25vd24gc3RhY2sgYWxnb3JpdGhtLCB0aGUgd29ya2luZyBzZXQsIGFuZCBWTUlOLiBFZmZpY2llbnQgcHJvY2VkdXJlcyBmb3IgY29tcHV0aW5nIGRlbWFuZCBjdXJ2ZXMgc2hvd2luZyBzd2FwcGluZyBsb2FkIGFzIGEgZnVuY3Rpb24gb2YgbWVtb3J5IHVzYWdlIGFyZSBkZXZlbG9wZWQgZm9yIEdXUyBhbmQgR09QVCBwb2xpY2llcy4gRW1waXJpY2FsIGRhdGEgZnJvbSBhbiBhY3R1YWwgc3lzdGVtIGFyZSBpbmNsdWRlZC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJQdXJkdWUgVW5pdi4sIExhZmF5ZXR0ZSwgSU4sIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBvcGVyYXRpbmcgc3lzdGVtczsgZGVtYW5kIGZldGNoaW5nIG1lbW9yeSBwb2xpY2llczsgZ2VuZXJhbGlzZWQgb3B0aW1hbCBwb2xpY3k7IGdlbmVyYWxpc2VkIHdvcmtpbmcgc2V0IHBvbGljeTsgb3BlcmF0aW5nIHN5c3RlbXMgKGNvbXB1dGVycyk7IHByb3BlcnR5OyByZXNpZGVudCBzZXQgaW5jbHVzaW9uOyByZXRlbnRpb24gY29zdHM7IHJldHJpZXZhbCBjb3N0czsgc2VnbWVudCByZWZlcmVuY2Ugc3RyaW5nczsgc3RvcmFnZTsgc3RvcmFnZSBtYW5hZ2VtZW50OyBzd2FwcGluZyBjb3N0czsgdmlydHVhbCIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKICB4eHRpdGxlID0gICAgICAiR2VuZXJhbGl6ZWQgd29ya2luZyBzZXRzIG9mIHNlZ21lbnQgcmVmZXJlbmNlIHN0cmluZ3MiLAp9CgpAQXJ0aWNsZXtNeWVyczoxOTc4OkNFUCwKICBhdXRob3IgPSAgICAgICAiR2xlbmZvcmQgSi4gTXllcnMiLAogIHRpdGxlID0gICAgICAgICJDb250cm9sbGVkIEV4cGVyaW1lbnQgaW4gUHJvZ3JhbSBUZXN0aW5nIGFuZCBDb2RlIFdhbGt0aHJvdWdoc1xzbGFzaCBJbnNwZWN0aW9ucyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMSIsCiAgbnVtYmVyID0gICAgICAgIjkiLAogIHBhZ2VzID0gICAgICAgICI3NjAtLTc2OCIsCiAgbW9udGggPSAgICAgICAgc2VwLAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkFuIGV4cGVyaW1lbnQgaW4gcHJvZ3JhbSB0ZXN0aW5nIGlzIGRlc2NyaWJlZCB0aGF0IGVtcGxveXMgNTkgaGlnaGx5IGV4cGVyaWVuY2VkIGRhdGEgcHJvY2Vzc2luZyBwcm9mZXNzaW9uYWxzIHVzaW5nIHNldmVuIG1ldGhvZHMgdG8gdGVzdCBhIHNtYWxsIFBML0kgcHJvZ3JhbS4gVGhlIHJlc3VsdHMgc2hvdyB0aGF0IHRoZSBwb3B1bGFyIGNvZGUgd2Fsa3Rocm91Z2hcc2xhc2ggaW5zcGVjdGlvbiBtZXRob2Qgd2FzIGFzIGVmZmVjdGl2ZSBhcyBvdGhlciBjb21wdXRlci1iYXNlZCBtZXRob2RzIGluIGZpbmRpbmcgZXJyb3JzIGFuZCB0aGF0IHRoZSBtb3N0IGVmZmVjdGl2ZSBtZXRob2RzIChpbiB0ZXJtcyBvZiBlcnJvcnMgZm91bmQgYW5kIGNvc3QpIGVtcGxveWVkIHBhaXJzIG9mIHN1YmplY3RzIHdobyB0ZXN0ZWQgdGhlIHByb2dyYW0gaW5kZXBlbmRlbnRseSBhbmQgdGhlbiBwb29sZWQgdGhlaXIgZmluZGluZ3MuIFRoZSBzdHVkeSBhbHNvIHNob3dzIHRoYXQgdGhlcmUgaXMgYSB0cmVtZW5kb3VzIGFtb3VudCBvZiB2YXJpYWJpbGl0eSBhbW9uZyBzdWJqZWN0cyBhbmQgdGhhdCB0aGUgYWJpbGl0eSB0byBkZXRlY3QgY2VydGFpbiB0eXBlcyBvZiBlcnJvcnMgdmFyaWVzIGZyb20gbWV0aG9kIHRvIG1ldGhvZC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjExMCAoU3lzdGVtcyBhbmFseXNpcyBhbmQgcHJvZ3JhbW1pbmcpOyBDNjE1MEcgKERpYWdub3N0aWMsIHRlc3RpbmcsIGRlYnVnZ2luZyBhbmQgZXZhbHVhdGluZyBzeXN0ZW1zKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiSUJNIFN5c3RlbXMgUmVzLiBJbnN0LiwgUGFsbyBBbHRvLCBDQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvZGU7IGNvbXB1dGVyIHByb2dyYW1taW5nOyBjb250cm9sbGVkIGV4cGVyaW1lbnQ7IGVmZmVjdGl2ZTsgZXJyb3JzOyBleHBlcmllbmNlZCBkYXRhIHByb2Nlc3Npbmc7IG9mIHN1YmplY3RzOyBwYWlyczsgcHJvZmVzc2lvbmFsczsgcHJvZ3JhbSBkZWJ1Z2dpbmc7IHByb2dyYW0gdGVzdGluZzsgc21hbGwgUEwvSSBwcm9ncmFtOyB2YXJpYWJpbGl0eTsgd2Fsa3Rocm91Z2hzL2luc3BlY3Rpb25zIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWw7IFggRXhwZXJpbWVudGFsIiwKfQoKQEFydGljbGV7T3R0bWFubjoxOTc4OlJCVCwKICBhdXRob3IgPSAgICAgICAiVGguIE90dG1hbm4gYW5kIEguIFcuIFNpeCBhbmQgRC4gV29vZCIsCiAgdGl0bGUgPSAgICAgICAgIlJpZ2h0IEJyb3RoZXIgVHJlZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjEiLAogIG51bWJlciA9ICAgICAgICI5IiwKICBwYWdlcyA9ICAgICAgICAiNzY5LS03NzYiLAogIG1vbnRoID0gICAgICAgIHNlcCwKICB5ZWFyID0gICAgICAgICAiMTk3OCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4QTEwIiwKICBNUm51bWJlciA9ICAgICAiNTggMTM4OTgiLAogIG1ycmV2aWV3ZXIgPSAgICJTdGVwaGVuIFNvdWxlIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMxMTYwIChDb21iaW5hdG9yaWFsIG1hdGhlbWF0aWNzKTsgQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIG9mIEthcmxzcnVoZSwgS2FybHNydWhlLCBXZXN0IEdlcm1hbnkiLAogIGtleXdvcmRzID0gICAgICJiYWxhbmNlZCB0cmVlczsgZGF0YSBzdHJ1Y3R1cmVzOyBkZWxldGlvbiBhbGdvcml0aG1zOyBmaWxlIG9yZ2FuaXNhdGlvbjsgaW5zZXJ0aW9uIGFsZ29yaXRobTsgb25lIHNpZGVkIGhlaWdodDsgcmlnaHQgYnJvdGhlciB0cmVlczsgdHJlZXMgKG1hdGhlbWF0aWNzKSIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7VWxyaWNoOjE5Nzg6RU1ELAogIGF1dGhvciA9ICAgICAgICJFcm5zdCBHLiBVbHJpY2giLAogIHRpdGxlID0gICAgICAgICJFdmVudCBNYW5pcHVsYXRpb24gZm9yIERpc2NyZXRlIFNpbXVsYXRpb25zIFJlcXVpcmluZyBMYXJnZSBOdW1iZXJzIG9mIEV2ZW50cyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMSIsCiAgbnVtYmVyID0gICAgICAgIjkiLAogIHBhZ2VzID0gICAgICAgICI3NzctLTc4NSIsCiAgbW9udGggPSAgICAgICAgc2VwLAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EaXN0cmlidXRlZC9RTEQuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiQW4gZXZlbnQtbWFuaXB1bGF0aW9uIHN5c3RlbSBpcyBwcmVzZW50ZWQgY29uc2lzdGluZyBvZiB0d28gcGFydHMuIFRoZSBmaXJzdCBwYXJ0IGFkZHJlc3NlcyB0aGUgZmFtaWxpYXIgcHJvYmxlbSBvZiBldmVudCBzY2hlZHVsaW5nIGVmZmljaWVuY3kgd2hlbiB0aGUgbnVtYmVyIG9mIHNjaGVkdWxlZCBldmVudHMgZ3Jvd3MgbGFyZ2UuIFRoZSBzZWNvbmQgcGFydCBkZWFscyB3aXRoIHRoZSBsZXNzIGFwcGFyZW50IHByb2JsZW0gb2YgcHJvdmlkaW5nIGVmZmljaWVuY3kgYW5kIGZsZXhpYmlsaXR5IGFzIHNjaGVkdWxlZCBldmVudHMgYXJlIGFjY2Vzc2VkIHRvIGJlIGV4ZWN1dGVkLiBBZGRpdGlvbmFsIGZlYXR1cmVzIGFuZCBwcm9ibGVtcyBkZWFsdCB3aXRoIGluY2x1ZGUgdGhlIHByb3BlciBoYW5kbGluZyBvZiBzaW11bHRhbmVvdXMgZXZlbnRzOyB0aGF0IGNlcnRhaW4gZXZlbnRzIG11c3QgYmUgY3JlYXRlZCwgc2NoZWR1bGVkLCBhbmQgZXhlY3V0ZWQgYXQgdGhlIHNhbWUgcG9pbnRzIGluIHNpbXVsYXRlZCB0aW1lOyB0aGF0IGluZmluaXRlIGxvb3BzIGNhdXNlZCBieSB0aGUgY29uY2F0ZW5hdGlvbiBvZiBzdWNoIGBgemVyby10aW1lJycgZXZlbnRzIGFyZSBwb3NzaWJsZSBhbmQgbXVzdCBiZSBkaWFnbm9zZWQ7IHRoYXQgbWFpbnRhaW5pbmcgdmFyaW91cyBldmVudCBjb3VudHMgaXMgcHJhY3RpY2FsIGFuZCBlY29ub21pY2FsOyBhbmQgdGhhdCBhIGNhcGFiaWxpdHkgZm9yIGhhbmRsaW5nIGBgdGltZS1kaXNwbGFjZWFibGUnJyBldmVudHMgaXMgZGVzaXJhYmxlIGFuZCBwb3NzaWJsZS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDMTI5MCAoQXBwbGljYXRpb25zIG9mIHN5c3RlbXMgdGhlb3J5KSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzOyA5MTIiLAogIGNvcnBzb3VyY2UgPSAgICJEaWdpdGFsIEVxdWlwbWVudCBDb3JwLiwgTWF5bmFyZCwgTUEsIFVTQSIsCiAgY291bnRyeSA9ICAgICAgIlVTQSIsCiAgZGVzY3JpcHRvcnMgPSAgIlNpbXVsYXRpb247IGV2ZW50IHNldDsiLAogIGVudW0gPSAgICAgICAgICI3OTg4IiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIHByb2dyYW1taW5nIC0tLSBTdWJyb3V0aW5lczsgZGlnaXRhbCBzaW11bGF0aW9uOyBkaXNjcmV0ZSBzaW11bGF0aW9uczsgZXZlbnQ7IGV2ZW50IHNjaGVkdWxpbmcgZWZmaWNpZW5jeTsgbGFyZ2UgbnVtYmVycyBvZiBldmVudHM7IG1hbmlwdWxhdGlvbiBzeXN0ZW07IG9wZXJhdGlvbnMgcmVzZWFyY2g7IHNjaGVkdWxpbmc7IHNjaGVkdWxpbmcgYWxnb3JpdGhtczsgc2ltdWx0YW5lb3VzIGV2ZW50czsgdGltZSBmbG93IG1lY2hhbmlzbXMiLAogIGxhbmd1YWdlID0gICAgICJFbmdsaXNoIiwKICBsb2NhdGlvbiA9ICAgICAiU0VMOiBXaSIsCiAgcmVmZXJlbmNlcyA9ICAgIjAiLAogIHJldmlzaW9uID0gICAgICIxNi8wMS85NCIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7TWFseToxOTc4Ok5WTSwKICBhdXRob3IgPSAgICAgICAiSy4gTWFseSIsCiAgdGl0bGUgPSAgICAgICAgIkEgbm90ZSBvbiB2aXJ0dWFsIG1lbW9yeSBpbmRleGVzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIxIiwKICBudW1iZXIgPSAgICAgICAiOSIsCiAgcGFnZXMgPSAgICAgICAgIjc4Ni0tNzg3IiwKICBtb250aCA9ICAgICAgICBzZXAsCiAgeWVhciA9ICAgICAgICAgIjE5NzgiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIG9mIE1pbm5lc290YSwgTWlubmVhcG9saXMsIE1OLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJjb25zdHJ1Y3Rpb247IGxpbmtlZDsgbWFpbnRlbmFuY2U7IHJlcHJlc2VudGF0aW9uOyByZXRyaWV2YWwgY29zdDsgdmlydHVhbCBtZW1vcnkgaW5kZXhlczsgdmlydHVhbCBzdG9yYWdlOyB3aXRoaW4gYSBwYWdlIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtXYXJkOjE5Nzg6UlRQLAogIGF1dGhvciA9ICAgICAgICJTdGVwaGVuIEEuIFdhcmQiLAogIHRpdGxlID0gICAgICAgICJSZWFsIFRpbWUgUGxvdHRpbmcgb2YgQXBwcm94aW1hdGUgQ29udG91ciBNYXBzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIxIiwKICBudW1iZXIgPSAgICAgICAiOSIsCiAgcGFnZXMgPSAgICAgICAgIjc4OC0tNzkwIiwKICBtb250aCA9ICAgICAgICBzZXAsCiAgeWVhciA9ICAgICAgICAgIjE5NzgiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0dyYXBoaWNzL3NpZ2dyYXBoLzc4LmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIkZvciBvdXRwdXQgdG8gYSBjaGFyYWN0ZXItb3JpZW50ZWQgZGV2aWNlLCBpdCBpcyBnZW5lcmFsbHkgcHJlZmVyYWJsZSB0byBwbG90IGEgY29udG91ciBtYXAgaW4gcmFzdGVyLXNjYW4gb3JkZXIgKHJhdGhlciB0aGFuIHRvIGZvbGxvdyBpbmRpdmlkdWFsIGNvbnRvdXIgbGluZXMpLiBBIHRlY2huaXF1ZSBpcyBkZXNjcmliZWQgZm9yIHRoZSBwcm9kdWN0aW9uIG9mIGNydWRlIGNvbnRvdXIgbWFwcyBvbiBhIHNlcmlhbCBjaGFyYWN0ZXItb3JpZW50ZWQgZGV2aWNlLiBUaGUgbWV0aG9kIGRlc2NyaWJlZCBydW5zIGluIHJlYWwgdGltZSBpbiB0aGUgc2Vuc2UgdGhhdCB0aGUgY29tcHV0YXRpb24gcmVxdWlyZWQgcGVyIG91dHB1dCBjaGFyYWN0ZXIgaXMgY29uc3RhbnQuIFdoaWxlIHRoZSBjb250b3VycyBwcm9kdWNlZCBleGhpYml0IGxvY2FsIGluYWNjdXJhY2llcywgdGhleSByZXRhaW4gdGhlIHByb3BlcnRpZXMgb2Ygbm90IGNyb3NzaW5nIGFuZCBvZiBmb3JtaW5nIGNsb3NlZCBjdXJ2ZXMgKGV4Y2VwdCB3aGVyZSB0aGV5IGludGVyc2VjdCB0aGUgYm91bmRhcmllcyBvZiB0aGUgbWFwKS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEzMEIgKEdyYXBoaWNzIHRlY2huaXF1ZXMpOyBDNzM0MCAoR2VvcGh5c2ljcyBjb21wdXRpbmcpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI0MDU7IDcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIk1JVCwgQ2FtYnJpZGdlLCBNQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFwcHJveGltYXRlIGNvbnRvdXIgbWFwczsgY2FydG9ncmFwaHk7IGNvbXB1dGVyIGdyYXBoaWNzOyBjb250b3VyIG1hcHM7IGNvbnRvdXIgb3V0cHV0OyBnZW9waHlzaWNzIGNvbXB1dGluZzsgbWFwcyBhbmQgbWFwcGluZzsgb3JpZW50ZWQgZGV2aWNlOyBwbG90dGluZzsgcmVhbCB0aW1lOyBzZXJpYWwgY2hhcmFjdGVyIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtUZW5lbmJhdW06MTk3ODpTRFMsCiAgYXV0aG9yID0gICAgICAgIkEuIFRlbmVuYmF1bSIsCiAgdGl0bGUgPSAgICAgICAgIlNpbXVsYXRpb25zIG9mIGR5bmFtaWMgc2VxdWVudGlhbCBzZWFyY2ggYWxnb3JpdGhtcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMSIsCiAgbnVtYmVyID0gICAgICAgIjkiLAogIHBhZ2VzID0gICAgICAgICI3OTAtLTc5MSIsCiAgbW9udGggPSAgICAgICAgc2VwLAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTMwIChEYXRhIGhhbmRsaW5nIHRlY2huaXF1ZXMpIiwKICBjb3Jwc291cmNlID0gICAiQnJvb2tseW4gQ29sbC4sIE5ldyBZb3JrLCBOWSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiZHluYW1pYyByZW9yZGVyaW5nOyBkeW5hbWljIHNlcXVlbnRpYWwgc2VhcmNoIGFsZ29yaXRobXM7IGxpc3Q7IGxpc3QgcHJvY2Vzc2luZzsgcHJvY2Vzc2luZzsgc2ltdWxhdGlvbiIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7QnJhaW5lcmQ6MTk3ODpGLAogIGF1dGhvciA9ICAgICAgICJXYWx0IEJyYWluZXJkIiwKICB0aXRsZSA9ICAgICAgICAie0ZvcnRyYW4gNzd9IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIxIiwKICBudW1iZXIgPSAgICAgICAiMTAiLAogIHBhZ2VzID0gICAgICAgICI4MDYtLTgyMCIsCiAgbW9udGggPSAgICAgICAgb2N0LAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EYXRhYmFzZS9XaWVkZXJob2xkLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIkEgY29tcGlsZXIgZm9yIEZvcnRyYW4gNzcgbWF5IGJlIGxhcmdlciB0aGFuIG9uZSBmb3IgdGhlIDE5NjYgc3RhbmRhcmQgRm9ydHJhbiwgYnV0IG5vdCBtdWNoIGxhcmdlciB0aGFuIG1vc3QgY3VycmVudCBjb21waWxlcnMuIFRoZSBjb21waWxhdGlvbiBzaG91bGQgYmUgYWxtb3N0IGFzIGVmZmljaWVudCBhcyBiZWZvcmUgYW5kIHRoZSBjb2RlIHByb2R1Y2VkIHNob3VsZCBiZSBhbG1vc3QgYXMgZWZmaWNpZW50LCBleGNlcHQgcG9zc2libGUgZm9yIHNvbWUgb2YgdGhlIG5ldyBmZWF0dXJlcyBzdWNoIGFzIHRoZSBjaGFyYWN0ZXIgZGF0YSB0eXBlIGFuZCBzb21lIG9mIHRoZSBuZXcgdHlwZXMgb2YgaW5wdXRcc2xhc2ggb3V0cHV0LiBJbiBzZXZlcmFsIGNhc2VzLCBzdWNoIGFzIERPIGxvb3BzIChkdWUgdG8gZGVsZXRpb24gb2YgZXh0ZW5kZWQgcmFuZ2UpIGFuZCBJRiBibG9ja3MsIGl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBnZW5lcmF0ZSBldmVuIG1vcmUgZWZmaWNpZW50IGNvZGUgdGhhbiBiZWZvcmUuIEZ1cnRoZXJtb3JlIHRoZSBtb2Rlc3QgYnV0IHBvd2VyZnVsIGxhbmd1YWdlIGV4dGVuc2lvbnMgc2hvdWxkIHNlcnZlIHRvIHJlZHVjZSBncmVhdGx5IHRoZSBjb3N0cyBvZiBkZXZlbG9waW5nLCBtYWludGFpbmluZywgYW5kIHRyYW5zcG9ydGluZyBGb3J0cmFuIHNvZnR3YXJlLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgYW5ub3RlID0gICAgICAgIkktTyBhbmQgT1BFTiBzdGF0ZW1lbnRzLiIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTQwRCAoSGlnaCBsZXZlbCBsYW5ndWFnZXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJCdXJyb3VnaHMgQ29ycC4sIEVuY2lubywgQ0EsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IEZPUlRSQU47IEZPUlRSQU4gNzc7IHN0YW5kYXJkIEZPUlRSQU47IHN0YW5kYXJkcyIsCiAgdHJlYXRtZW50ID0gICAgIkcgR2VuZXJhbCBSZXZpZXc7IE4gTmV3IERldmVsb3BtZW50IiwKfQoKQEFydGljbGV7VG93c2xleToxOTc4Ok1QUCwKICBhdXRob3IgPSAgICAgICAiRC4gVG93c2xleSBhbmQgSy4gTS4gQ2hhbmR5IGFuZCBKLiBDLiBCcm93bmUiLAogIHRpdGxlID0gICAgICAgICJNb2RlbHMgZm9yIFBhcmFsbGVsIFByb2Nlc3NpbmcgV2l0aGluIFByb2dyYW1zOiBBcHBsaWNhdGlvbiB0byB7Q1BVOkkvT30gYW5kIHtJL086SS9PfSBPdmVybGFwIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIxIiwKICBudW1iZXIgPSAgICAgICAiMTAiLAogIHBhZ2VzID0gICAgICAgICI4MjEtLTgzMSIsCiAgbW9udGggPSAgICAgICAgb2N0LAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EYXRhYmFzZS9XaWVkZXJob2xkLmJpYiBhbmQgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9QYXJhbGxlbC9QYXJhbGxlbC5pby5iaWIiLAogIGFic3RyYWN0ID0gICAgICJBcHByb3hpbWF0ZSBxdWV1ZWluZyBtb2RlbHMgZm9yIGludGVybmFsIHBhcmFsbGVsIHByb2Nlc3NpbmcgYnkgaW5kaXZpZHVhbCBwcm9ncmFtcyBpbiBhIG11bHRpcHJvZ3JhbW1lZCBzeXN0ZW0gYXJlIGRldmVsb3BlZC4gVGhlIHNvbHV0aW9uIHRlY2huaXF1ZSBpcyBkZXZlbG9wZWQgYnkgbmV0d29yayBkZWNvbXBvc2l0aW9uLiBUaGUgbW9kZWxzIGFyZSBmb3JtdWxhdGVkIGluIHRlcm1zIG9mIENQVTpJL08gYW5kIEkvTzpJL08gb3ZlcmxhcCBhbmQgYXBwbGllZCB0byB0aGUgYW5hbHlzaXMgb2YgdGhlc2UgcHJvYmxlbXMuIFRoZSBwZXJjZW50YWdlIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50IGZyb20gQ1BVOkkvTyBvdmVybGFwIGlzIGZvdW5kIHRvIGJlIGdyZWF0ZXN0IGZvciBzeXN0ZW1zIHdoaWNoIGFyZSBpbiBhcHByb3hpbWF0ZSBDUFU6SS9PIHV0aWxpemF0aW9uIGJhbGFuY2UgYW5kIGZvciBsb3cgZGVncmVlcyBvZiBtdWx0aXByb2dyYW1taW5nLiBUaGUgcGVyY2VudGFnZSBpbXByb3ZlbWVudCBmcm9tIEkvTzpJL08gb3ZlcmxhcCBpcyBmb3VuZCB0byBiZSBncmVhdGVzdCBmb3Igc3lzdGVtcyBpbiB3aGljaCB0aGUgSS9PIHN5c3RlbSBpcyBtb3JlIHV0aWxpemVkIHRoYW4gdGhlIENQVS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGFubm90ZSA9ICAgICAgICJRdWV1ZWluZyBtb2RlbHMgZm9yIHBhcmFsbGVsIHByb2Nlc3NpbmcgYnkgaW1wcm92ZW1lbnQgZnJvbSBDUFU6SS9PIG92ZXJsYXAgaWYgZm91bmQgdG8gYmUgZ3JlYXRlc3QgZm9yIHN5c3RlbXMgd2hpY2ggYXJlIGluIENQVTpJL08gYmFsYW5jZSBhbmQgZm9yIGxvdyBkZWdyZWVzIG9mIG11bHRpcHJvZ3JhbW1pbmcuIEltcHJvdmVtZW50IGZyb20gSS9POkkvTyBvdmVybGFwIGlzIGZvdW5kIHRvIGJlIGdyZWF0ZXN0IGZvciBzeXN0ZW1zIGluIHdoaWNoIHRoZSBJL08gc3lzdGVtIGlzIG1vcmUgdXRpbGl6ZWQgdGhhbiB0aGUgQ1BVLiIsCiAgY2xhc3Njb2RlcyA9ICAgIkMxMTQwQyAoUXVldWVpbmcgdGhlb3J5KTsgQzYxNTBKIChPcGVyYXRpbmcgc3lzdGVtcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMjsgNzIzIiwKICBjb21tZW50ID0gICAgICAiTW9kZWxzIENQVTpJL08gYW5kIEkvTzpJL08gb3ZlcmxhcCB3aXRoaW4gYSBwcm9ncmFtLiBgYE92ZXJsYXBwaW5nIGlzIGhlbHBmdWwgb25seSB3aGVuIGl0IGFsbG93cyBhIGRldmljZSB0byBiZSB1dGlsaXplZCB3aGljaCB3b3VsZCBub3QgYmUgdXRpbGl6ZWQgd2l0aG91dCBvdmVybGFwcGluZy4nJyBJbiBnZW5lcmFsIHRoZSBvdmVybGFwcGluZyBzZWVtcyB0byBoZWxwLiIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIG9mIFRleGFzLCBBdXN0aW4sIFRYLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgc3lzdGVtcyBwcm9ncmFtbWluZzsgY29tcHV0ZXIgc3lzdGVtcywgZGlnaXRhbCAtLS0gTXVsdGlwcm9jZXNzaW5nOyBpbnRlcm5hbCBwYXJhbGxlbDsgbmV0d29yayBkZWNvbXBvc2l0aW9uOyBwYXJhbGxlbCBJL087IHBhcmFsbGVsIHByb2Nlc3Npbmc7IHBhcmlvIGJpYjsgcHJvY2Vzc2luZzsgcXVldWVpbmcgbW9kZWxzOyBxdWV1ZWluZyB0aGVvcnkiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle1NobmVpZGVybWFuOjE5Nzg6SlNGLAogIGF1dGhvciA9ICAgICAgICJCZW4gU2huZWlkZXJtYW4iLAogIHRpdGxlID0gICAgICAgICJKdW1wIFNlYXJjaGluZzoge0F9IEZhc3QgU2VxdWVudGlhbCBTZWFyY2ggVGVjaG5pcXVlIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIxIiwKICBudW1iZXIgPSAgICAgICAiMTAiLAogIHBhZ2VzID0gICAgICAgICI4MzEtLTgzNCIsCiAgbW9udGggPSAgICAgICAgb2N0LAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EYXRhYmFzZS9XaWVkZXJob2xkLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIldoZW4gc2VxdWVudGlhbCBmaWxlIHN0cnVjdHVyZXMgbXVzdCBiZSB1c2VkIGFuZCBiaW5hcnkgc2VhcmNoaW5nIGlzIG5vdCBmZWFzaWJsZSwganVtcCBzZWFyY2hpbmcgYmVjb21lcyBhbiBhcHBlYWxpbmcgYWx0ZXJuYXRpdmUuIEFuIGV4cGxvcmF0aW9uIGlzIG1hZGUgb2YgdmFyaWFudHMgb2YgdGhlIGNsYXNzaWMganVtcCBzZWFyY2hpbmcgc2NoZW1lIHdoZXJlIHRoZSBvcHRpbXVtIGp1bXAgc2l6ZSBpcyB0aGUgc3F1YXJlIHJvb3Qgb2YgdGhlIG51bWJlciBvZiByZWNvcmRzLiBNdWx0aXBsZSBsZXZlbCBhbmQgdmFyaWFibGUgc2l6ZSBqdW1wIHN0cmF0ZWdpZXMgYXJlIGV4cGxvcmVkLCBhcHByb3ByaWF0ZSBhcHBsaWNhdGlvbnMgYXJlIGRpc2N1c3NlZCBhbmQgcGVyZm9ybWFuY2UgaXMgZXZhbHVhdGVkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgYW5ub3RlID0gICAgICAgIkV4cGxvcmVzIHZhcmlhbnRzIG9mIHRoZSBjbGFzc2ljIGp1bXAgc2VhcmNoaW5nIHNjaGVtZSB3aGVyZSB0aGUgb3B0aW11bSBqdW1wIHNpemUgaXMgdGhlIHNxdWFyZSByb290IG9mIHRoZSBudW1iZXIgb2YgcmVjb3Jkcy4iLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBvZiBNYXJ5bGFuZCwgQ29sbGVnZSBQYXJrLCBNRCwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIHN5c3RlbXMgcHJvZ3JhbW1pbmc7IGRhdGEgc3RydWN0dXJlczsgZGF0YWJhc2Ugc3RydWN0dXJlczsgZmlsZSBtYW5hZ2VtZW50OyBmaWxlIG9yZ2FuaXNhdGlvbjsgaW5kZXggc2VhcmNoaW5nOyBqdW1wIHNlYXJjaGluZzsgSnVtcCBzZWFyY2hpbmc7IGp1bXAgc3RyYXRlZ2llczsgc2VhcmNoIHN0cmF0ZWdpZXM7IHNlcXVlbnRpYWwgZmlsZSBzdHJ1Y3R1cmVzOyBzZXF1ZW50aWFsIGZpbGVzOyBzZXF1ZW50aWFsIHNlYXJjaCB0ZWNobmlxdWUiLAogIHRyZWF0bWVudCA9ICAgICJHIEdlbmVyYWwgUmV2aWV3IiwKfQoKQEFydGljbGV7Q2hhbmc6MTk3ODpPSE0sCiAgYXV0aG9yID0gICAgICAgIlNoaS1LdW8gQ2hhbmcgYW5kIFlpbi1XYWggV29uZyIsCiAgdGl0bGUgPSAgICAgICAgIk9wdGltYWwgSGlzdG9ncmFtIE1hdGNoaW5nIGJ5IE1vbm90b25lIEdyYXkgTGV2ZWwgVHJhbnNmb3JtYXRpb24iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjEiLAogIG51bWJlciA9ICAgICAgICIxMCIsCiAgcGFnZXMgPSAgICAgICAgIjgzNS0tODQwIiwKICBtb250aCA9ICAgICAgICBvY3QsCiAgeWVhciA9ICAgICAgICAgIjE5NzgiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiSW52ZXN0aWdhdGlvbiBvZiB0aGUgcHJvYmxlbSBvZiBvcHRpbWFsIGhpc3RvZ3JhbSBtYXRjaGluZyB1c2luZyBtb25vdG9uZSBncmF5IGxldmVsIHRyYW5zZm9ybWF0aW9uLCB3aGljaCBhbHdheXMgYXNzaWducyBhbGwgcGljdHVyZSBwb2ludHMgb2YgYSBnaXZlbiBncmF5IGxldmVsIGkgdG8gYW5vdGhlciBncmF5IGxldmVsIFQoaSkgc3VjaCB0aGF0IGlmIGkgZ3JlYXRlciB0aGFuIGVxdWl2YWxlbnQgdG8gaiwgdGhlbiBUKGkpIGdyZWF0ZXIgdGhhbiBlcXVpdmFsZW50IHRvIFQoaikuIFRoZSBvYmplY3RpdmUgaXMgdG8gZmluZCBhIHRyYW5zZm9ybWVkIGRpZ2l0YWwgcGljdHVyZSBvZiBhIGdpdmVuIHBpY3R1cmUgc3VjaCB0aGF0IHRoZSBzdW0gb2YgYWJzb2x1dGUgZXJyb3JzIGJldHdlZW4gdGhlIGdyYXkgbGV2ZWwgaGlzdG9ncmFtIG9mIHRoZSB0cmFuc2Zvcm1lZCBwaWN0dXJlIGFuZCB0aGF0IG9mIGEgcmVmZXJlbmNlIHBpY3R1cmUgaXMgbWluaW1pemVkLiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gcGxhY2luZyBrMSBsaW5lYXJseSBvcmRlcmVkIG9iamVjdHMgb2YgZGlmZmVyZW50IHNpemVzIG9uZSBieSBvbmUgaW50byBrMiBsaW5lYXJseSBvcmRlcmVkIGJveGVzIG9mIGFzc29ydGVkIHNpemVzLCBzdWNoIHRoYXQgdGhlIGFjY3VtdWxhdGVkIGVycm9yIG9mIHNwYWNlIHVuZGVycGFja2VkIG9yIG92ZXJwYWNrZWQgaW4gdGhlIGJveGVzIGlzIG1pbmltaXplZDsgdGhlIHBsYWNlbWVudCBmdW5jdGlvbiBpcyBtb25vdG9uaWMsIHdoaWNoIGVuc3VyZXMgYSBwb2x5bm9taWFsIHRpbWUgc29sdXRpb24gdG8gdGhpcyBwcm9ibGVtLiBBIHRyZWUgc2VhcmNoIGFsZ29yaXRobSBmb3Igb3B0aW1hbCBoaXN0b2dyYW0gbWF0Y2hpbmcgaXMgcHJlc2VudGVkIHdoaWNoIGhhcyB0aW1lIGNvbXBsZXhpdHkgTyhrMSBtdWx0aXBsaWVkIGJ5IGsyKS4gSWYgdGhlIG1vbm90b25lIHByb3BlcnR5IGlzIGRyb3BwZWQsIHRoZW4gdGhlIHByb2JsZW0gYmVjb21lcyBOUC1jb21wbGV0ZSwgZXZlbiBpZiBpdCBpcyByZXN0cmljdGVkIHRvIGsyIGVxdWFscyAyLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMxMjYwIChJbmZvcm1hdGlvbiB0aGVvcnkpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjM7IDc0MSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIG9mIElsbGlub2lzIGF0IENoaWNhZ28gQ2lyY2xlLCBDaGljYWdvLCBJTCwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFsZ29yaXRobTsgY29tcGxldGUgY29tcHV0ZXIgcHJvZ3JhbXM7IGNvbXB1dGVyIHN5c3RlbXMgcHJvZ3JhbW1pbmc7IGNvbXB1dGVyaXNlZCBwaWN0dXJlIHByb2Nlc3Npbmc7IGhpc3RvZ3JhbSBtYXRjaGluZzsgaW1hZ2UgcHJvY2Vzc2luZzsgb3B0aW1hbCBoaXN0b2dyYW0gbWF0Y2hpbmc7IHRyZWUgc2VhcmNoIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtNb3JyaXM6MTk3ODpDTE4sCiAgYXV0aG9yID0gICAgICAgIlJvYmVydCBNb3JyaXMiLAogIHRpdGxlID0gICAgICAgICJDb3VudGluZyBMYXJnZSBOdW1iZXJzIG9mIEV2ZW50cyBpbiBTbWFsbCBSZWdpc3RlcnMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjEiLAogIG51bWJlciA9ICAgICAgICIxMCIsCiAgcGFnZXMgPSAgICAgICAgIjg0MC0tODQyIiwKICBtb250aCA9ICAgICAgICBvY3QsCiAgeWVhciA9ICAgICAgICAgIjE5NzgiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L01pc2MvYmluLXBhY2tpbmcuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiSXQgaXMgcG9zc2libGUgdG8gdXNlIGEgc21hbGwgY291bnRlciB0byBrZWVwIGFwcHJveGltYXRlIGNvdW50cyBvZiBsYXJnZSBudW1iZXJzLiBUaGUgcmVzdWx0aW5nIGV4cGVjdGVkIGVycm9yIGNhbiBiZSByYXRoZXIgcHJlY2lzZWx5IGNvbnRyb2xsZWQuIEFuIGV4YW1wbGUgaXMgZ2l2ZW4gaW4gd2hpY2ggOC1iaXQgY291bnRlcnMgKGJ5dGVzKSBhcmUgdXNlZCB0byBrZWVwIHRyYWNrIG9mIGFzIG1hbnkgYXMgMTMwLDAwMCBldmVudHMgd2l0aCBhIHJlbGF0aXZlIGVycm9yIHdoaWNoIGlzIHN1YnN0YW50aWFsbHkgaW5kZXBlbmRlbnQgb2YgdGhlIG51bWJlciBuIG9mIGV2ZW50cy4gVGhpcyByZWxhdGl2ZSBlcnJvciBjYW4gYmUgZXhwZWN0ZWQgdG8gYmUgMjQgcGVyY2VudCBvciBsZXNzIDk1IHBlcmNlbnQgb2YgdGhlIHRpbWUuIFRoZSB0ZWNobmlxdWVzIGNvdWxkIGJlIHVzZWQgdG8gYWR2YW50YWdlIGluIG11bHRpY2hhbm5lbCBjb3VudGluZyBoYXJkd2FyZSBvciBzb2Z0d2FyZSB1c2VkIGZvciB0aGUgbW9uaXRvcmluZyBvZiBleHBlcmltZW50cyBvciBwcm9jZXNzZXMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMzAgKERhdGEgaGFuZGxpbmcgdGVjaG5pcXVlcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIkJlbGwgTGFicy4sIE11cnJheSBIaWxsLCBOSiwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIHN5c3RlbXMgcHJvZ3JhbW1pbmc7IGNvdW50aW5nOyBkYXRhIGhhbmRsaW5nOyBtdWx0aWNoYW5uZWwgY291bnRpbmcgaGFyZHdhcmUiLAogIHRyZWF0bWVudCA9ICAgICJHIEdlbmVyYWwgUmV2aWV3IiwKfQoKQEFydGljbGV7TWNNYXN0ZXI6MTk3ODpBQUQsCiAgYXV0aG9yID0gICAgICAgIkNvbGluIEwuIE1jTWFzdGVyIiwKICB0aXRsZSA9ICAgICAgICAiQW4gQW5hbHlzaXMgb2YgQWxnb3JpdGhtcyBmb3IgdGhlIHtEdXRjaCBOYXRpb25hbCBGbGFnIFByb2JsZW19IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIxIiwKICBudW1iZXIgPSAgICAgICAiMTAiLAogIHBhZ2VzID0gICAgICAgICI4NDItLTg0NiIsCiAgbW9udGggPSAgICAgICAgb2N0LAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgbm90ZSA9ICAgICAgICAgIlNlZSBjb3JyaWdlbmR1bSBcY2l0ZXtNY01hc3RlcjoxOTc5OkNBQX0uIiwKICBhYnN0cmFjdCA9ICAgICAiU29sdXRpb25zIHRvIHRoZSBEdXRjaCBOYXRpb25hbCBGbGFnIFByb2JsZW0gaGF2ZSBiZWVuIGdpdmVuIGJ5IERpamtzdHJhIFsxXSBhbmQgTWV5ZXIgWzNdLiBccGFyIERpamtzdHJhIHN0YXJ0cyB3aXRoIGEgc2ltcGxlIHByb2dyYW0gYW5kIGFycml2ZXMgYXQgYW4gaW1wcm92ZWQgcHJvZ3JhbSBieSByZWZpbmVtZW50LiBCb3RoIG9mIHRoZSBhbGdvcml0aG1zIGdpdmVuIGJ5IERpamtzdHJhIGFyZSBzaG93biB0byBoYXZlIGFuIGV4cGVjdGVkIG51bWJlciBvZiBzd2FwcyB3aGljaCBpcyAkMi8zTiArIE8oMSkkIGFuZCB0aGF0IHRoZXNlIHZhbHVlcyBkaWZmZXIgYXQgbW9zdCBieSAkMS8zJCBvZiBhIHN3YXAgYW5kIGFzeW1wdG90aWNhbGx5IGJ5ICQxLzQkIG9mIGEgc3dhcC4gVGhlIGFsZ29yaXRobSBvZiBNZXllciBpcyBzaG93biB0byBoYXZlIGV4cGVjdGVkIHN3YXAgY29tcGxleGl0eSQgNS85TiQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMTAgKFN5c3RlbXMgYW5hbHlzaXMgYW5kIHByb2dyYW1taW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIG9mIENhbGlmb3JuaWEsIEJlcmtlbGV5LCBDQSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiQWxnb3JpdGhtaWMgYW5hbHlzaXM7IGFsZ29yaXRobWljIGFuYWx5c2lzOyBjb21wbGV0ZSBjb21wdXRlciBwcm9ncmFtczsgRHV0Y2ggTmF0aW9uYWwgRmxhZyBQcm9ibGVtOyBwcm9ncmFtIHJlZmluZW1lbnQ7IHByb2dyYW1taW5nOyByZWZpbmVtZW50OyBzdHJ1Y3R1cmVkIHByb2dyYW1taW5nIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtTZWRnZXdpY2s6MTk3ODpJUVAsCiAgYXV0aG9yID0gICAgICAgIlJvYmVydCBTZWRnZXdpY2siLAogIHRpdGxlID0gICAgICAgICJJbXBsZW1lbnRpbmcge1F1aWNrc29ydH0gUHJvZ3JhbXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjEiLAogIG51bWJlciA9ICAgICAgICIxMCIsCiAgcGFnZXMgPSAgICAgICAgIjg0Ny0tODU3IiwKICBtb250aCA9ICAgICAgICBvY3QsCiAgeWVhciA9ICAgICAgICAgIjE5NzgiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0RhdGFiYXNlL0dyYWVmZS5iaWIiLAogIG5vdGUgPSAgICAgICAgICJTZWUgY29ycmlnZW5kdW0gXGNpdGV7U2VkZ2V3aWNrOjE5Nzk6Q0lRfS4iLAogIGFic3RyYWN0ID0gICAgICJUaGlzIHBhcGVyIGlzIGEgcHJhY3RpY2FsIHN0dWR5IG9mIGhvdyB0byBpbXBsZW1lbnQgdGhlIFF1aWNrc29ydCBzb3J0aW5nIGFsZ29yaXRobSBhbmQgaXRzIGJlc3QgdmFyaWFudHMgb24gcmVhbCBjb21wdXRlcnMsIGluY2x1ZGluZyBob3cgdG8gYXBwbHkgdmFyaW91cyBjb2RlIG9wdGltaXphdGlvbiB0ZWNobmlxdWVzLiBBIGRldGFpbGVkIGltcGxlbWVudGF0aW9uIGNvbWJpbmluZyB0aGUgbW9zdCBlZmZlY3RpdmUgaW1wcm92ZW1lbnRzIHRvIFF1aWNrc29ydCBpcyBnaXZlbiwgYWxvbmcgd2l0aCBhIGRpc2N1c3Npb24gb2YgaG93IHRvIGltcGxlbWVudCBpdCBpbiBhc3NlbWJseSBsYW5ndWFnZS4gQW5hbHl0aWMgcmVzdWx0cyBkZXNjcmliaW5nIHRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgcHJvZ3JhbXMgYXJlIHN1bW1hcml6ZWQuIEEgdmFyaWV0eSBvZiBzcGVjaWFsIHNpdHVhdGlvbnMgYXJlIGNvbnNpZGVyZWQgZnJvbSBhIHByYWN0aWNhbCBzdGFuZHBvaW50IHRvIGlsbHVzdHJhdGUgUXVpY2tzb3J0J3Mgd2lkZSBhcHBsaWNhYmlsaXR5IGFzIGFuIGludGVybmFsIHNvcnRpbmcgbWV0aG9kIHdoaWNoIHJlcXVpcmVzIG5lZ2xpZ2libGUgZXh0cmEgc3RvcmFnZS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiQnJvd24gVW5pdi4sIFByb3ZpZGVuY2UsIFJJLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYW5hbHlzaXMgb2YgYWxnb3JpdGhtczsgY29kZSBvcHRpbWlzYXRpb24gdGVjaG5pcXVlczsgY29kZSBvcHRpbWl6YXRpb247IGNvbXB1dGVyIHN5c3RlbXMgcHJvZ3JhbW1pbmc7IGludGVybmFsOyBRdWlja3NvcnQ7IFF1aWNrc29ydCBwcm9ncmFtczsgc29ydGluZzsgc29ydGluZyBhbGdvcml0aG07IHNvcnRpbmcgbWV0aG9kIiwKICB0cmVhdG1lbnQgPSAgICAiRyBHZW5lcmFsIFJldmlldyIsCn0KCkBBcnRpY2xle0x5b246MTk3ODpQU1QsCiAgYXV0aG9yID0gICAgICAgIkdvcmRvbiBMeW9uIiwKICB0aXRsZSA9ICAgICAgICAiUGFja2VkIFNjYXR0ZXIgVGFibGVzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIxIiwKICBudW1iZXIgPSAgICAgICAiMTAiLAogIHBhZ2VzID0gICAgICAgICI4NTctLTg2NSIsCiAgbW9udGggPSAgICAgICAgb2N0LAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlNjYXR0ZXIgdGFibGVzIGZvciBvcGVuIGFkZHJlc3NpbmcgYmVuZWZpdCBmcm9tIHJlY3Vyc2l2ZSBlbnRyeSBkaXNwbGFjZW1lbnRzLCBjdXRvZmZzIGZvciB1bnN1Y2Nlc3NmdWwgc2VhcmNoZXMsIGFuZCBhdXhpbGlhcnkgY29zdCBmdW5jdGlvbnMuIENvbXBhcmVkIHdpdGggY29udmVudGlvbmFsIG1ldGhvZHMsIHRoZSBuZXcgdGVjaG5pcXVlcyBwcm92aWRlIHN1YnN0YW50aWFsbHkgaW1wcm92ZWQgdGFibGVzIHRoYXQgcmVzZW1ibGUgZXhhY3Qtc29sdXRpb24gb3B0aW1hbCBwYWNraW5ncy4gVGhlIGRpc3BsYWNlbWVudHMgYXJlIGRlcHRoLWxpbWl0ZWQgYXBwcm94aW1hdGlvbnMgdG8gYW4gZW51bWVyYXRpdmUgKGV4aGF1c3RpdmUpIG9wdGltaXphdGlvbiwgYWx0aG91Z2ggcGFja2luZyBjb3N0cyByZW1haW4gbGluZWFyIC0tLSBPKG4pIC0tLSB3aXRoIHRhYmxlIHNpemUgbi4gVGhlIHRlY2huaXF1ZXMgYXJlIHByaW1hcmlseSBzdWl0ZWQgZm9yIGltcG9ydGFudCBmaXhlZCAoYnV0IHBvc3NpYmx5IHF1aXRlIGxhcmdlKSB0YWJsZXMgZm9yIHdoaWNoIHJlZmVyZW5jZSBmcmVxdWVuY2llcyBtYXkgYmUga25vd246IG9wLWNvZGUgdGFibGVzLCBzcGVsbGluZyBkaWN0aW9uYXJpZXMsIGFjY2VzcyBhcnJheXMuIEludHJvZHVjdGlvbiBvZiBmcmVxdWVuY3kgd2VpZ2h0cyBmdXJ0aGVyIGltcHJvdmVzIHJldHJpZXZhbHMsIGJ1dCB0aGUgZW5oYW5jZW1lbnQgbWF5IGRlZ3JhZGUgY3V0b2Zmcy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiTmF0LiBCdXIuIG9mIFN0YW5kLiwgV2FzaGluZ3RvbiwgREMsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBzeXN0ZW1zIHByb2dyYW1taW5nOyBjb3N0czsgZGF0YSBoYW5kbGluZzsgb3BlbiBhZGRyZXNzaW5nOyBvcHRpbWFsIHBhY2tpbmdzOyBwYWNrZWQgc2NhdHRlciB0YWJsZXM7IHBhY2tpbmc7IHJlY3Vyc2lvbjsgcmVmZXJlbmNlIGZyZXF1ZW5jaWVzOyBzY2F0dGVyIHRhYmxlcyIsCiAgdHJlYXRtZW50ID0gICAgIkcgR2VuZXJhbCBSZXZpZXciLAp9CgpAQXJ0aWNsZXtFYXN0b246MTk3ODpDU1YsCiAgYXV0aG9yID0gICAgICAgIk1hbGNvbG0gQy4gRWFzdG9uIGFuZCBSb25hbGQgRmFnaW4iLAogIHRpdGxlID0gICAgICAgICJDb2xkLVN0YXJ0IFZzLiBXYXJtLVN0YXJ0IE1pc3MgUmF0aW9zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIxIiwKICBudW1iZXIgPSAgICAgICAiMTAiLAogIHBhZ2VzID0gICAgICAgICI4NjYtLTg3MiIsCiAgbW9udGggPSAgICAgICAgb2N0LAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9NaXNjL3N0b3JhZ2UuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiSW4gYSB0d28tbGV2ZWwgY29tcHV0ZXIgc3RvcmFnZSBoaWVyYXJjaHksIG1pc3MgcmF0aW8gbWVhc3VyZW1lbnRzIGFyZSBvZnRlbiBtYWRlIGZyb20gYSBgYGNvbGQgc3RhcnQnJywgdGhhdCBpcywgbWFkZSB3aXRoIHRoZSBmaXJzdC1sZXZlbCBzdG9yZSBpbml0aWFsbHkgZW1wdHkuIEZvciBsYXJnZSBjYXBhY2l0aWVzIHRoZSBlZmZlY3Qgb24gdGhlIG1lYXN1cmVkIG1pc3MgcmF0aW8gb2YgdGhlIG1pc3NlcyBpbmN1cnJlZCB3aGlsZSBmaWxsaW5nIHRoZSBmaXJzdC1sZXZlbCBzdG9yZSBjYW4gYmUgc2lnbmlmaWNhbnQsIGV2ZW4gZm9yIGxvbmcgcmVmZXJlbmNlIHN0cmluZ3MuIFVzZSBvZiBgYHdhcm0tc3RhcnQnJyByYXRoZXIgdGhhbiBgYGNvbGQtc3RhcnQnJyBtaXNzIHJhdGlvcyBjYXN0IGRvdWJ0IG9uIHRoZSB3aWRlc3ByZWFkIGJlbGllZiB0aGF0IHRoZSBvYnNlcnZlZCBgYFMtc2hhcGUnJyBvZiBsaWZldGltZSAocmVjaXByb2NhbCBvZiBtaXNzIHJhdGlvKSB2ZXJzdXMgY2FwYWNpdHkgY3VydmUgaW5kaWNhdGVzIGEgcHJvcGVydHkgb2YgYmVoYXZpb3Igb2YgcHJvZ3JhbXMgdGhhdCBtYWludGFpbiBhIGNvbnN0YW50IG51bWJlciBvZiBwYWdlcyBpbiBtYWluIHN0b3JhZ2UuIEl0IGlzIHNob3duIGhvdyB0byBvYnRhaW4sIHVuZGVyIHNpbXBsZSBhc3N1bXB0aW9ucywgdGhlIGNhY2hlIG1pc3MgcmF0aW8gZm9yIG11bHRpcHJvZ3JhbW1pbmcgZnJvbSBjb2xkLXN0YXJ0IG1pc3MgcmF0aW8gdmFsdWVzIGFuZCBob3cgdG8gb2J0YWluIGFwcHJveGltYXRlIGNvbGQtc3RhcnQgbWlzcyByYXRpb3MgZnJvbSB3YXJtLXN0YXJ0IG1pc3MgcmF0aW9zLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTUwSiAoT3BlcmF0aW5nIHN5c3RlbXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJJQk0gVGhvbWFzIEouIFdhdHNvbiBSZXMuIENlbnRlciwgWW9ya3Rvd24gSGVpZ2h0cywgTlksIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBvcGVyYXRpbmcgc3lzdGVtczsgY29tcHV0ZXIgc3lzdGVtcyBwcm9ncmFtbWluZyAtLS0gTXVsdGlwcm9ncmFtbWluZzsgbWVtb3J5IGhpZXJhcmNoeTsgUGVyZm9ybWFuY2UgRXZhbHVhdGlvbjogQW5hbHl0aWMiLAogIGtleXdvcmRzID0gICAgICJjYWNoZSBtaXNzIHJhdGlvOyBjb2xkIHN0YXJ0OyBoaWVyYXJjaHk7IGxpZmV0aW1lOyBsaWZldGltZSBmdW5jdGlvbjsgbWlzcyByYXRpb3M7IG11bHRpcHJvZ3JhbW1pbmc7IG9wZXJhdGluZyBzeXN0ZW1zIChjb21wdXRlcnMpOyBzdG9yYWdlOyB3YXJtIHN0YXJ0IiwKICB0cmVhdG1lbnQgPSAgICAiRyBHZW5lcmFsIFJldmlldyIsCn0KCkBBcnRpY2xle0ZyYW50YToxOTc4OkNIVCwKICBhdXRob3IgPSAgICAgICAiVy4gUi4gRnJhbnRhIGFuZCBLdXJ0IE1hbHkiLAogIHRpdGxlID0gICAgICAgICJBIGNvbXBhcmlzb24gb2YgaGVhcHMgYW5kIHRoZSB7VEx9IHN0cnVjdHVyZSBmb3IgdGhlIHNpbXVsYXRpb24gZXZlbnQgc2V0IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIxIiwKICBudW1iZXIgPSAgICAgICAiMTAiLAogIHBhZ2VzID0gICAgICAgICI4NzMtLTg3NSIsCiAgbW9udGggPSAgICAgICAgb2N0LAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgImZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGlzdHJpYnV0ZWQvUUxELzE5NzguYmliIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzEyOTAgKEFwcGxpY2F0aW9ucyBvZiBzeXN0ZW1zIHRoZW9yeSk7IEM2MTMwIChEYXRhIGhhbmRsaW5nIHRlY2huaXF1ZXMpIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gb2YgTWlubmVzb3RhLCBNaW5uZWFwb2xpcywgTU4sIFVTQSIsCiAgY291bnRyeSA9ICAgICAgIlVTQSIsCiAgZGVzY3JpcHRvcnMgPSAgIlNpbXVsYXRpb247IiwKICBlbnVtID0gICAgICAgICAiMTAwNSIsCiAga2V5d29yZHMgPSAgICAgImRhdGEgaGFuZGxpbmc7IGV2ZW50IHNldDsgaGVhcHM7IG9wZXJhdGlvbnMgcmVzZWFyY2g7IFNpbXVsYXRpb247IHNpbXVsYXRpb24gZXZlbnQgc2V0OyBUTCBzdHJ1Y3R1cmUiLAogIGxhbmd1YWdlID0gICAgICJFbmdsaXNoIiwKICByZWZlcmVuY2VzID0gICAiMCIsCiAgdHJlYXRtZW50ID0gICAgIkcgR2VuZXJhbCBSZXZpZXciLAp9CgpAQXJ0aWNsZXtMeW9uczoxOTc4OlNERSwKICBhdXRob3IgPSAgICAgICAiTm9ybWFuIFIuIEx5b25zIiwKICB0aXRsZSA9ICAgICAgICAiU3lzdGVtcyBEZXNpZ24gRWR1Y2F0aW9uOiBhIEdhbWluZyBBcHByb2FjaCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMSIsCiAgbnVtYmVyID0gICAgICAgIjExIiwKICBwYWdlcyA9ICAgICAgICAiODg5LS04OTUiLAogIG1vbnRoID0gICAgICAgIG5vdiwKICB5ZWFyID0gICAgICAgICAiMTk3OCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJPbmUgb2YgdGhlIHByb2JsZW1zIGZhY2luZyBtYW5hZ2VycyBvZiBjb21wdXRlciBpbnN0YWxsYXRpb25zIGlzIHRoZSBwcm9ibGVtIG9mIGNvbmZpZ3VyaW5nIHRoZSBjb21wdXRlciBzeXN0ZW0gdG8gbWVldCB0aGUgZGVtYW5kcyBtYWRlIGJ5IHRoZSBtaXggb2Ygam9icyB0aGF0IHRoZSBjb21wdXRlciBjZW50ZXIgbXVzdCBzZXJ2aWNlLiBBIG1hbmFnZW1lbnQgZ2FtZSBpcyBwcmVzZW50ZWQgdGhhdCBhbGxvd3MgdGhlIHBsYXllciB0byBjb25maWd1cmUgYSBjb21wdXRlciBzeXN0ZW0gdG8gbWVldCBhIGh5cG90aGV0aWNhbCBqb2IgbWl4LiBUaGUgam9iIG1peCBpcyB1bmRlciB0aGUgY29udHJvbCBvZiBhIGdhbWUgYWRtaW5pc3RyYXRvciBhbmQgY2FuIGJlIHZhcmllZCB0byBzaW11bGF0ZSBhIHZhcmlldHkgb2YgcmVhbC13b3JsZCBzaXR1YXRpb25zIChJL08gYm91bmQgam9icywgY29tcHV0ZSBib3VuZCBqb2JzLCBldGMuICkuIFRoZSBwbGF5ZXIgb2YgdGhlIGdhbWUgcmVjZWl2ZXMgYSBzZXQgb2YgZGV0YWlsZWQgcmVwb3J0cyBvbiB0aGUgY29zdCBvZiBoaXMgY2hvaWNlcyBhbmQgYSBzaW11bGF0ZWQgcnVuIG9mIHRoZSBjZW50ZXIgb3BlcmF0aW5nIHVuZGVyIGhpcyBjaG9pY2VzLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMwMjIwIChDb21wdXRpbmcgZWR1Y2F0aW9uIGFuZCB0cmFpbmluZyk7IEMwMzEwIChFRFAgbWFuYWdlbWVudCkiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMjsgNzIzOyA5MTIiLAogIGNvcnBzb3VyY2UgPSAgICJUZXhhcyBUZWNoLiBVbml2LiwgTHViYm9jaywgVFgsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBpbnN0YWxsYXRpb247IGNvbXB1dGVyIGluc3RhbGxhdGlvbiBtYW5hZ2VtZW50OyBjb21wdXRlciBpbnN0YWxsYXRpb25zOyBjb21wdXRlciBzY2llbmNlIGVkdWNhdGlvbjsgY29tcHV0ZXIgc3lzdGVtcywgZGlnaXRhbDsgY29uZmlndXJpbmcgdGhlIGNvbXB1dGVyIHN5c3RlbTsgY29zdDsgRFA7IG1hbmFnZW1lbnQ7IG1hbmFnZW1lbnQgZ2FtZTsgbWl4OyBvZiBqb2JzIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtXZW5kb3JmOjE5Nzg6U0VNLAogIGF1dGhvciA9ICAgICAgICJKLiBXLiBXZW5kb3JmIiwKICB0aXRsZSA9ICAgICAgICAiQSBTaW1wbHkgRXh0ZW5kZWQgYW5kIE1vZGlmaWVkIEJhdGNoIEVudmlyb25tZW50IEdyYXBoaWNhbCBTeXN0ZW0gKFNlbWJlZ3MpIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIxIiwKICBudW1iZXIgPSAgICAgICAiMTEiLAogIHBhZ2VzID0gICAgICAgICI4OTctLTkwNCIsCiAgbW9udGggPSAgICAgICAgbm92LAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9HcmFwaGljcy9pbWFnZXIvaW1hZ2VyLjc4LmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIlNFTUJFR1MgaXMgYSBjb21wbGV0ZSBiYXRjaCBlbnZpcm9ubWVudCBncmFwaGljYWwgc3lzdGVtIGNvbnRhaW5pbmcgY29tcG9uZW50cyBmb3IgaGFuZGxpbmcgZ3JhcGhpY2FsIGRhdGEgZmlsZXMsIGZvciBkaXNwbGF5aW5nIHRoZSBjb250ZW50cyBmaWxlcyBvbiBhIHZhcmlldHkgb2YgZ3JhcGhpY2FsIGhhcmR3YXJlLCBhbmQgZm9yIHBlcmZvcm1pbmcgZ3JhcGhpY2FsIGJhdGNoIGlucHV0IG9wZXJhdGlvbnMuIFNFTUJFUkcgaXMgZWFzeSB0byBleHRlbmQgYW5kIG1vZGlmeSB0byBtZWV0IHRoZSBncm93aW5nIG5lZWRzIG9mIGEgbGFyZ2UgYmF0Y2ggZW52aXJvbm1lbnQsIGFuZCBpcyBldmVuIGV4dGVuZGFibGUgdG8gYSBmdWxseSBpbnRlcmFjdGl2ZSBzeXN0ZW0uIFRoZSBwYXBlciBwcmVzZW50cyB0aGUgY29uY2VwdHVhbCB2aWV3IG9mIGdyYXBoaWNzIGxlYWRpbmcgdG8gdGhlIGRlc2lnbiBvZiBTRU1CRUdTIGFuZCBvdXRsaW5lcyB0aGUgbWFqb3IgY29tcG9uZW50cyBvZiB0aGUgc3lzdGVtLiBUaGUgZGVzaWduIG9mIFNFTUJFR1MgaXMgZm91bmRlZCB1cG9uIHRoZSBiYXNpYyBhc3N1bXB0aW9uIHRoYXQgdGhlIHRydWUgYWltIG9mIGNvbXB1dGVyIGdyYXBoaWNzIGlzIHRvIGRlc2NyaWJlIGdyYXBoaWNhbCBlbnRpdGllcywgcmF0aGVyIHRoYW4sIGFzIGNvbW1vbmx5IGhlbGQsIHRvIHByb3ZpZGUgZ3JhcGhpY2FsIGlucHV0IGFuZCBvdXRwdXQgZnVuY3Rpb25hbCBjYXBhYmlsaXRpZXMuIFNFTUJFR1MgaXMgYnVpbHQgYXJvdW5kIGEgQmFzaWMgR3JhcGhpY2FsIERhdGEgTWFuYWdlbWVudCBTeXN0ZW0gKEJBR0RBTVMpIHdoaWNoIHByb3ZpZGVzIGEgY29tbW9uIG1lYW5zIG9mIGNvbW11bmljYXRpbmcgdGhlIGRlc2NyaXB0aW9ucyBvZiBncmFwaGljYWwgZW50aXRpZXMgYmV0d2VlbiB0aGUgdmFyaW91cyBjb21wb25lbnRzIG9mIFNFTUJFR1MuIEJBR0RBTVMgcHJvdmlkZXMgZmFjaWxpdGllcyBmb3Igc3RvcmluZywgcmV0cmlldmluZywgYW5kIG1hbmlwdWxhdGluZyB0aGUgZGVzY3JpcHRpb25zIG9mIGdyYXBoaWNhbCBlbnRpdGllcyBwcm92aWRlZCBieSwgYW5kIHJlY2VpdmVkIGJ5IGFwcGxpY2F0aW9uIHByb2dyYW1zLCBncmFwaGljcyBwYWNrYWdlcywgYW5kIGdyYXBoaWNhbCBkZXZpY2VzLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTMwQiAoR3JhcGhpY3MgdGVjaG5pcXVlcyk7IEM2MTUwRSAoR2VuZXJhbCB1dGlsaXR5IHByb2dyYW1zKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gb2YgV2F0ZXJsb28sIFdhdGVybG9vLCBPbnQuLCBDYW5hZGEiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiQkFHREFNUzsgQmFzaWMgR3JhcGhpY2FsIERhdGE7IGJhdGNoOyBiYXRjaCBlbnZpcm9ubWVudDsgYmF0Y2ggcHJvY2Vzc2luZyAoY29tcHV0ZXJzKTsgY29tcHV0ZXIgZ3JhcGhpY3M7IGRpc3BsYXlpbmc7IGV4dGVuZDsgZmlsZXM7IGZ1bGx5IGludGVyYWN0aXZlIHN5c3RlbTsgZ3JhcGhpY2FsIGJhdGNoIGlucHV0IG9wZXJhdGlvbnM7IGdyYXBoaWNhbCBkYXRhOyBncmFwaGljYWwgc3lzdGVtOyBNYW5hZ2VtZW50IFN5c3RlbTsgbW9kaWZ5OyBTRU1CRUdTIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtLdW1hcjoxOTc4OlBFSCwKICBhdXRob3IgPSAgICAgICAiQi4gS3VtYXIgYW5kIEUuIFMuIERhdmlkc29uIiwKICB0aXRsZSA9ICAgICAgICAiUGVyZm9ybWFuY2UgRXZhbHVhdGlvbiBvZiBIaWdobHkgQ29uY3VycmVudCBDb21wdXRlcnMgYnkgRGV0ZXJtaW5pc3RpYyBTaW11bGF0aW9uIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIxIiwKICBudW1iZXIgPSAgICAgICAiMTEiLAogIHBhZ2VzID0gICAgICAgICI5MDQtLTkxMyIsCiAgbW9udGggPSAgICAgICAgbm92LAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlNpbXVsYXRpb24gaXMgcHJlc2VudGVkIGFzIGEgcHJhY3RpY2FsIHRlY2huaXF1ZSBmb3IgcGVyZm9ybWFuY2UgZXZhbHVhdGlvbiBvZiBhbHRlcm5hdGl2ZSBjb25maWd1cmF0aW9ucyBvZiBoaWdobHkgY29uY3VycmVudCBjb21wdXRlcnMuIEEgdGVjaG5pcXVlIGlzIGRlc2NyaWJlZCBmb3IgY29uc3RydWN0aW5nIGEgZGV0YWlsZWQgZGV0ZXJtaW5pc3RpYyBzaW11bGF0aW9uIG1vZGVsIG9mIGEgc3lzdGVtLiBJbiB0aGUgbW9kZWwgYSBjb250cm9sIHN0cmVhbSByZXBsYWNlcyB0aGUgaW5zdHJ1Y3Rpb24gYW5kIGRhdGEgc3RyZWFtcyBvZiB0aGUgcmVhbCBzeXN0ZW0uIFNpbXVsYXRpb24gb2YgdGhlIHN5c3RlbSBtb2RlbCB5aWVsZHMgdGhlIHRpbWluZyByZXNvdXJjZSB1c2FnZSBzdGF0aXN0aWNzIG5lZWRlZCBmb3IgcGVyZm9ybWFuY2UgZXZhbHVhdGlvbiwgd2l0aG91dCB0aGUgbmVjZXNzaXR5IG9mIGVtdWxhdGluZyB0aGUgc3lzdGVtLiBBcyBhIGNhc2Ugc3R1ZHksIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBhIHNpbXVsYXRpb24gb2YgYSBtb2RlbCBvZiB0aGUgQ1BVLW1lbW9yeSBzdWJzeXN0ZW0gb2YgdGhlIElCTSAzNjBcc2xhc2ggMTkxIGlzIGRlc2NyaWJlZC4gVGhlIHJlc3VsdHMgb2YgZXZhbHVhdGluZyBzb21lIGFsdGVybmF0aXZlIHN5c3RlbSBkZXNpZ25zIGFyZSBkaXNjdXNzZWQuIFRoZSBleHBlcmltZW50cyByZXZlYWwgdGhhdCwgZm9yIHRoZSBjYXNlIHN0dWR5LCB0aGUgbWFqb3IgYm90dGxlbmVja3MgaW4gdGhlIHN5c3RlbSBhcmUgdGhlIG1lbW9yeSB1bml0IGFuZCB0aGUgZml4ZWQgcG9pbnQgdW5pdC4gRnVydGhlciwgaXQgYXBwZWFycyB0aGF0IG1hbnkgb2YgdGhlIHNvcGhpc3RpY2F0ZWQgcGlwZWxpbmluZyBhbmQgYnVmZmVyaW5nIHRlY2huaXF1ZXMgaW1wbGVtZW50ZWQgaW4gdGhlIGFyY2hpdGVjdHVyZSBvZiB0aGUgSUJNIDM2MFxzbGFzaCA5MSBhcmUgb2YgbGl0dGxlIHZhbHVlIHdoZW4gaGlnaC1zcGVlZCAoY2FjaGUpIG1lbW9yeSBpcyB1c2VkLCBhcyBpbiB0aGUgSUJNIDM2MFxzbGFzaCAxOTUuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzUyMjAgKENvbXB1dGVyIGFyY2hpdGVjdHVyZSk7IEM2MTUwRyAoRGlhZ25vc3RpYywgdGVzdGluZywgZGVidWdnaW5nIGFuZCBldmFsdWF0aW5nIHN5c3RlbXMpOyBDNzQzMCAoQ29tcHV0ZXIgZW5naW5lZXJpbmcpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjI7IDcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIG9mIElsbGlub2lzLCBVcmJhbmEsIElMLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgc2VsZWN0aW9uIGFuZCBldmFsdWF0aW9uOyBjb21wdXRlciBzeXN0ZW1zLCBkaWdpdGFsOyBDUFUgbWVtb3J5IHN1YnN5c3RlbTsgZGV0ZXJtaW5pc3RpYyBzaW11bGF0aW9uOyBoaWdobHkgY29uY3VycmVudCBjb21wdXRlcnM7IElCTSAzNjAvOTE7IG11bHRpcHJvY2Vzc2luZyBzeXN0ZW1zOyBwZXJmb3JtYW5jZSBldmFsdWF0aW9uOyB2aXJ0dWFsIG1hY2hpbmVzIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtIb3JuOjE5Nzg6VVNJLAogIGF1dGhvciA9ICAgICAgICJCZXJ0aG9sZCBLLiBQLiBIb3JuIGFuZCBCcmV0dCBMLiBCYWNobWFuIiwKICB0aXRsZSA9ICAgICAgICAiVXNpbmcgU3ludGhldGljIEltYWdlcyB0byBSZWdpc3RlciBSZWFsIEltYWdlcyB3aXRoIFN1cmZhY2UgTW9kZWxzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIxIiwKICBudW1iZXIgPSAgICAgICAiMTEiLAogIHBhZ2VzID0gICAgICAgICI5MTQtLTkyNCIsCiAgbW9udGggPSAgICAgICAgbm92LAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkEgbnVtYmVyIG9mIGltYWdlIGFuYWx5c2lzIHRhc2tzIGNhbiBiZW5lZml0IGZyb20gcmVnaXN0cmF0aW9uIG9mIHRoZSBpbWFnZSB3aXRoIGEgbW9kZWwgb2YgdGhlIHN1cmZhY2UgYmVpbmcgaW1hZ2VkLiBBdXRvbWF0aWMgbmF2aWdhdGlvbiB1c2luZyB2aXNpYmxlIGxpZ2h0IG9yIHJhZGFyIGltYWdlcyByZXF1aXJlcyBleGFjdCBhbGlnbm1lbnQgb2Ygc3VjaCBpbWFnZXMgd2l0aCBkaWdpdGFsIHRlcnJhaW4gbW9kZWxzLiBJbiBhZGRpdGlvbiwgYXV0b21hdGljIGNsYXNzaWZpY2F0aW9uIG9mIHRlcnJhaW4sIHVzaW5nIHNhdGVsbGl0ZSBpbWFnZXJ5LCByZXF1aXJlcyBzdWNoIGFsaWdubWVudCB0byBkZWFsIGNvcnJlY3RseSB3aXRoIHRoZSBlZmZlY3RzIG9mIHZhcnlpbmcgc3VuIGFuZ2xlIGFuZCBzdXJmYWNlIHNsb3BlLiBFdmVuIGluc3BlY3Rpb24gdGVjaG5pcXVlcyBmb3IgY2VydGFpbiBpbmR1c3RyaWFsIHBhcnRzIG1heSBiZSBpbXByb3ZlZCBieSB0aGlzIG1lYW5zLiBUaGUgcmVxdWlyZWQgYWxpZ25tZW50IGlzIGFjaGlldmVkIGJ5IG1hdGNoaW5nIHRoZSByZWFsIGltYWdlIHdpdGggYSBzeW50aGV0aWMgaW1hZ2Ugb2J0YWluZWQgZnJvbSBhIHN1cmZhY2UgbW9kZWwgYW5kIGtub3duIHBvc2l0aW9ucyBvZiB0aGUgbGlnaHQgc291cmNlcy4gVGhlIHN5bnRoZXRpYyBpbWFnZSBpbnRlbnNpdHkgaXMgY2FsY3VsYXRlZCB1c2luZyB0aGUgcmVmbGVjdGFuY2UgbWFwLCBhIGNvbnZlbmllbnQgd2F5IG9mIGRlc2NyaWJpbmcgc3VyZmFjZSByZWZsZWN0aW9uIGFzIGEgZnVuY3Rpb24gb2Ygc3VyZmFjZSBncmFkaWVudC4gVGhlIHRlY2huaXF1ZSBpcyBpbGx1c3RyYXRlZCB1c2luZyBMQU5EU0FUIGltYWdlcyBhbmQgZGlnaXRhbCB0ZXJyYWluIG1vZGVscy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEzMEIgKEdyYXBoaWNzIHRlY2huaXF1ZXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJNSVQsIENhbWJyaWRnZSwgTUEsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhdXRvbWF0aWMgY2xhc3NpZmljYXRpb24gb2YgdGVycmFpbjsgY29tcHV0ZXIgZ3JhcGhpY3M7IGNvbXB1dGVyaXNlZCBwaWN0dXJlIHByb2Nlc3Npbmc7IGltYWdlIHByb2Nlc3Npbmc7IGluZHVzdHJpYWwgcGFydHM7IGluc3BlY3Rpb24gdGVjaG5pcXVlczsgcmVhbCBpbWFnZXM7IHJlZ2lzdHJhdGlvbjsgc2F0ZWxsaXRlIGltYWdlcnk7IHN1cmZhY2UgbW9kZWxzOyBzeW50aGV0aWMgaW1hZ2VzIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtUYWRpa2FtYWxsYToxOTc4OkNHR2IsCiAgYXV0aG9yID0gICAgICAgIlAuIFIuIFRhZGlrYW1hbGxhIiwKICB0aXRsZSA9ICAgICAgICAiQ29tcHV0ZXIgR2VuZXJhdGlvbiBvZiBHYW1tYSBSYW5kb20gVmFyaWFibGVzIC0tLSB7SUl9IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIxIiwKICBudW1iZXIgPSAgICAgICAiMTEiLAogIHBhZ2VzID0gICAgICAgICI5MjUtLTkyOCIsCiAgbW9udGggPSAgICAgICAgbm92LAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgImZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGlzdHJpYnV0ZWQvUUxELzE5NzguYmliIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzExNDBaIChPdGhlciB0b3BpY3MgaW4gc3RhdGlzdGljcyk7IEM3MzEwIChNYXRoZW1hdGljcyBjb21wdXRpbmcpIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gb2YgUGl0dHNidXJnaCwgUGl0dHNidXJnaCwgUEEsIFVTQSIsCiAgY291bnRyeSA9ICAgICAgIlVTQSIsCiAgZGVzY3JpcHRvcnMgPSAgIlJWRzsiLAogIGVudW0gPSAgICAgICAgICI3OTQ0IiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0YXRpb25hbDsgY29tcHV0ZXIgZ2VuZXJhdGlvbjsgY29yZTsgZ2FtbWEgcmFuZG9tIHZhcmlhYmxlczsgbm9uaW50ZWdyYWwgc2hhcGUgcGFyYW1ldGVyOyBwcm9ncmFtbWluZyBlZmZvcnQ7IHJhbmRvbSBwcm9jZXNzZXM7IHN0YXRpc3RpY3M7IHN0b3JhZ2UgcmVxdWlyZW1lbnRzOyB0aW1lcyIsCiAgbGFuZ3VhZ2UgPSAgICAgIkVuZ2xpc2giLAogIHJlZmVyZW5jZXMgPSAgICIwIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtSaXBsZXk6MTk3ODpTUlAsCiAgYXV0aG9yID0gICAgICAgIkcuIERhdmlkIFJpcGxleSIsCiAgdGl0bGUgPSAgICAgICAgIlNpbXBsZSBSZWNvdmVyeS1Pbmx5IFByb2NlZHVyZSBmb3IgU2ltcGxlIFByZWNlZGVuY2UgUGFyc2VycyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMSIsCiAgbnVtYmVyID0gICAgICAgIjExIiwKICBwYWdlcyA9ICAgICAgICAiOTI4LS05MzAiLAogIG1vbnRoID0gICAgICAgIG5vdiwKICB5ZWFyID0gICAgICAgICAiMTk3OCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJBIHNpbXBsZSBtZXRob2QgaXMgZGVzY3JpYmVkIGVuYWJsaW5nIHNpbXBsZSBwcmVjZWRlbmNlIHBhcnNlcnMgdG8gcmVjb3ZlciBmcm9tIHN5bnRheCBlcnJvcnMuIE5vIGF0dGVtcHQgdG8gcmVwYWlyIGVycm9ycyBpcyBtYWRlLCB5ZXQgcGFyc2luZyBhbmQgbW9zdCBzZW1hbnRpYyBwcm9jZXNzaW5nIGNhbiBjb250aW51ZS4gVGhlIHJlc3VsdCBpcyBhIGdvb2QgYGBmaXJzdCBhcHByb3hpbWF0aW9uJycgdG8gc3ludGF4IGVycm9yIGhhbmRsaW5nIHdpdGggbmVnbGlnaWJsZSBpbmNyZWFzZSBpbiBwYXJzaW5nIHRpbWUsIHNwYWNlLCBhbmQgY29tcGxleGl0eSBvZiBib3RoIHRoZSBwYXJzZXIgYW5kIGl0cyB0YWJsZSBnZW5lcmF0b3IuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQyMTAgKEZvcm1hbCBsb2dpYyk7IEM2MTUwQyAoQ29tcGlsZXJzLCBpbnRlcnByZXRlcnMgYW5kIG90aGVyIHByb2Nlc3NvcnMpOyBDNjE1MEcgKERpYWdub3N0aWMsIHRlc3RpbmcsIGRlYnVnZ2luZyBhbmQgZXZhbHVhdGluZyBzeXN0ZW1zKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiUkNBIExhYnMuLCBQcmluY2V0b24sIE5KLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcGlsZXJzOyBjb21wdXRlciBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IGRlYnVnZ2luZzsgZ3JhbW1hcnM7IHByb2Nlc3Npbmc7IHByb2dyYW0gY29tcGlsZXJzOyBwcm9ncmFtIGRlYnVnZ2luZzsgcmVjb3Zlcnk7IHNlbWFudGljOyBzaW1wbGUgcHJlY2VkZW5jZSBwYXJzZXJzOyBzeW50YXggZXJyb3JzOyBzeXN0ZW07IHRhYmxlIGdlbmVyYXRvciIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7RnJpZWRtYW46MTk3ODpOQ0UsCiAgYXV0aG9yID0gICAgICAgIkQuIFAuIEZyaWVkbWFuIGFuZCBELiBTLiBXaXNlIiwKICB0aXRsZSA9ICAgICAgICAiQSBOb3RlIG9uIENvbmRpdGlvbmFsIEV4cHJlc3Npb25zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIxIiwKICBudW1iZXIgPSAgICAgICAiMTEiLAogIHBhZ2VzID0gICAgICAgICI5MzEtLTkzMyIsCiAgbW9udGggPSAgICAgICAgbm92LAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgImZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvTWlzYy9GdW5jdGlvbmFsLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIkV2YWx1YXRpb24gb2YgYSBjb25kaXRpb25hbCBleHByZXNzaW9uIG1heSBzdWNjZWVkIGV2ZW4gd2hlbiB0aGUgYGBkZWNpZGluZyBwcmVkaWNhdGUnJyBkaXZlcmdlcyBhbmQgdGhlIGFsdGVybmF0aXZlcyBhcmUgcmVjb3JkcyAob3Igbm9kZXMpIHdob3NlIGZpZWxkcyBoYXZlIGRpZmZlcmVudCBjb250ZW50LiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MjQwIChQcm9ncmFtbWluZyBhbmQgYWxnb3JpdGhtIHRoZW9yeSk7IEM2MTQwRCAoSGlnaCBsZXZlbCBsYW5ndWFnZXMpIiwKICBjb3Jwc291cmNlID0gICAiSW5kaWFuYSBVbml2LiwgQmxvb21pbmd0b24sIElOLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJhbWJpZ3VvdXMgZnVuY3Rpb247IGNvbmRpdGlvbmFsIGV4cHJlc3Npb247IGNvbmRpdGlvbmFsIGZvcm1zOyBmdW5jdGlvbmFsOyBpZi10aGVuLWVsc2U7IGluZmluaXRlIHN0cnVjdHVyZXM7IExJU1A7IExpc3A7IExJU1A7IFBhcmFsbGVsIGV2YWx1YXRpb247IHBhcmFsbGVsIGV2YWx1YXRpb247IHByb2dyYW1taW5nIHRoZW9yeTsgc3VzcGVuZGluZyBjb25zIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtCcmluY2hIYW5zZW46MTk3ODpEUEMsCiAgYXV0aG9yID0gICAgICAgIlBlciB7QnJpbmNoIEhhbnNlbn0iLAogIHRpdGxlID0gICAgICAgICJEaXN0cmlidXRlZCBQcm9jZXNzZXM6IHtBfSBDb25jdXJyZW50IFByb2dyYW1taW5nIENvbmNlcHQiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjEiLAogIG51bWJlciA9ICAgICAgICIxMSIsCiAgcGFnZXMgPSAgICAgICAgIjkzNC0tOTQxIiwKICBtb250aCA9ICAgICAgICBub3YsCiAgeWVhciA9ICAgICAgICAgIjE5NzgiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L01pc2Mvb3MuYmliIGFuZCBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L1BhcmFsbGVsL3Bhci5zeW5jaC5iaWIgYW5kIGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGF0YWJhc2UvR3JhZWZlLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIkEgbGFuZ3VhZ2UgY29uY2VwdCBmb3IgY29uY3VycmVudCBwcm9jZXNzZXMgd2l0aG91dCBjb21tb24gdmFyaWFibGVzIGlzIGludHJvZHVjZWQuIFRoZXNlIHByb2Nlc3NlcyBjb21tdW5pY2F0ZSBhbmQgc3luY2hyb25pemUgYnkgbWVhbnMgb2YgcHJvY2VkdXJlIGNhbGxzIGFuZCBndWFyZGVkIHJlZ2lvbnMuIFRoaXMgY29uY2VwdCBpcyBwcm9wb3NlZCBmb3IgcmVhbC10aW1lIGFwcGxpY2F0aW9ucyBjb250cm9sbGVkIGJ5IG1pY3JvY29tcHV0ZXIgbmV0d29ya3Mgd2l0aCBkaXN0cmlidXRlZCBzdG9yYWdlLiBUaGUgcGFwZXIgZ2l2ZXMgc2V2ZXJhbCBleGFtcGxlcyBvZiBkaXN0cmlidXRlZCBwcm9jZXNzZXMgYW5kIHNob3dzIHRoYXQgdGhleSBpbmNsdWRlIHByb2NlZHVyZXMsIGNvcm91dGluZXMsIGNsYXNzZXMsIG1vbml0b3JzLCBwcm9jZXNzZXMsIHNlbWFwaG9yZXMsIGJ1ZmZlcnMsIHBhdGggZXhwcmVzc2lvbnMsIGFuZCBpbnB1dC1vdXRwdXQgYXMgc3BlY2lhbCBjYXNlcy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGFubm90ZSA9ICAgICAgICJEYXRlZCwgYnV0IGl0J3Mgb25lIG9mIHRob3NlIHBhcGVycyB0aGF0IHdpbGwgYWx3YXlzIGJlIHJlZmVyZW5jZWQuIFRoaXMgaXMgYW4gZWFybHkgcGFwZXIgd2hpY2ggcHJvcG9zZXMgaGF2aW5nIGEgQm9vbGVhbiBndWFyZCBhdCB0aGUgc3RhcnQgb2YgYSBwcm9jZWR1cmUuIFRoZSBwcm9jZWR1cmUgaXMgbm90IGFsbG93ZWQgdG8gZXhlY3V0ZSB1bnRpbCB0aGUgZ3VhcmQgYmVjb21lcyB0cnVlLiBUaGlzIHBhcGVyIGlzIGFsc28gYSByZWZlcmVuY2UgZm9yIHRoZSBTaG9ydGVzdCBKb2IgTmV4dCAoU0pOKSBzY2hlZHVsZXIuIiwKICBjbGFzc2NvZGVzID0gICAiQzQyNDAgKFByb2dyYW1taW5nIGFuZCBhbGdvcml0aG0gdGhlb3J5KTsgQzYxNDBEIChIaWdoIGxldmVsIGxhbmd1YWdlcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIG9mIFNvdXRoZXJuIENhbGlmb3JuaWEsIExvcyBBbmdlbGVzLCBDQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImJ1ZmZlcnM7IGNsYXNzZXM7IGNvbW11bmljYXRpb247IGNvbXB1dGVyIHByb2dyYW1taW5nIGxhbmd1YWdlczsgY29uY3VycmVuY3k7IGNvbmN1cnJlbnQgcHJvZ3JhbW1pbmc7IGNvcm91dGluZXM7IGRpc3RyaWJ1dGVkOyBkaXN0cmlidXRlZCBwcm9jZXNzZXM7IGV4cHJlc3Npb25zOyBndWFyZGVkIGNvbW1hbmQ7IGd1YXJkZWQgcmVnaW9uczsgaW5wdXQvb3V0cHV0OyBrLWJvb2xlYW4tZ3VhcmRzOyBrLXNob3J0ZXN0LWpvYi1uZXh0OyBsYW5ndWFnZSBjb25jZXB0OyBtaWNyb2NvbXB1dGVyIG5ldHdvcmtzOyBtb25pdG9yczsgb3BlcmF0aW5nIHN5bmNocm9uaXphdGlvbjsgcGFyYWxsZWwgcHJvY2Vzc2luZzsgcGF0aDsgcGF0aCBleHByZXNzaW9uczsgcHJvY2VkdXJlIGNhbGxzOyBwcm9jZWR1cmVzOyBwcm9jZXNzZXM7IHByb2dyYW1taW5nIHRoZW9yeTsgc2VtYXBob3Jlczsgc3RvcmFnZSIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7THVjY2lvOjE5Nzg6UFQsCiAgYXV0aG9yID0gICAgICAgIkZhYnJpemlvIEx1Y2NpbyBhbmQgTGluZGEgUGFnbGkiLAogIHRpdGxlID0gICAgICAgICJQb3dlciBUcmVlcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMSIsCiAgbnVtYmVyID0gICAgICAgIjExIiwKICBwYWdlcyA9ICAgICAgICAiOTQxLS05NDciLAogIG1vbnRoID0gICAgICAgIG5vdiwKICB5ZWFyID0gICAgICAgICAiMTk3OCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4QjEwICg2OEMyNSkiLAogIE1SbnVtYmVyID0gICAgICI4MGE6NjgwMTgiLAogIG1ycmV2aWV3ZXIgPSAgICJTdGVwaGVuIFNvdWxlIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlRoZSBuZXcgY2xhc3Mgb2YgUEsgdHJlZXMgaXMgcHJlc2VudGVkLCB3aGVyZSBoZWlnaHQgYmFsYW5jZSBpcyBtYWludGFpbmVkIGZvciB0aGUgbm9kZXMgbHlpbmcgb24gcGFydGljdWxhciBwYXRocy4gVGhlIG51bWJlciBvZiBub2RlcyBvZiBhIFBrIHRyZWUgYXN5bXB0b3RpY2FsbHkgZ3Jvd3MgYXMgYSBwb3dlciBvZiB0aGUgaGVpZ2h0LCBpbiB0aGUgd29yc3QgY2FzZS4gQSBwcm9jZWR1cmUgZm9yIG5vZGUgaW5zZXJ0aW9uIGlzIGdpdmVuLCBhbmQgdGhlIGNsYXNzIG9mIHRyZWVzIGNvbnNpZGVyZWQgaXMgcmVzdHJpY3RlZCB0byBJUGsgdHJlZXMsIHdoaWNoIGFyZSBidWlsZGFibGUgYnkgc3VjaCBhIHByb2NlZHVyZS4gVGhlIGF2ZXJhZ2UgYmVoYXZpb3Igb2Ygc3VjaCB0cmVlcywgc3R1ZGllZCBieSBhbiBleHRlbnNpdmUgc2V0IG9mIHNpbXVsYXRpb24gcnVucywgaXMgY2xvc2UgdG8gdGhhdCBvZiBBVkwgdHJlZXMuIEluIHBhcnRpY3VsYXIsIHRoZSBmYW1pbHkgb2YgSVBPIHRyZWVzIHdob3NlIG1haW4gYWR2YW50YWdlIGlzIHRoZSByZWR1Y2VkIG51bWJlciBvZiByZXN0cnVjdHVyaW5ncyByZXF1aXJlZCBhZnRlciBub2RlIGluc2VydGlvbiwgaXMgYW5hbHl6ZWQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzExNjAgKENvbWJpbmF0b3JpYWwgbWF0aGVtYXRpY3MpOyBDNDI0MCAoUHJvZ3JhbW1pbmcgYW5kIGFsZ29yaXRobSB0aGVvcnkpOyBDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjM7IDkyMSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIG9mIFBpc2EsIFBpc2EsIEl0YWx5IiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgIkFWTCB0cmVlczsgYmluYXJ5IHNlYXJjaCB0cmVlczsgY29tcHV0ZXIgbWV0YXRoZW9yeTsgY29tcHV0ZXIgcHJvZ3JhbW1pbmc7IGZpbGUgb3JnYW5pc2F0aW9uOyBoZWlnaHQgYmFsYW5jZTsgSVAwIHRyZWVzOyBJUGsgdHJlZXM7IG1hdGhlbWF0aWNhbCB0ZWNobmlxdWVzIC0tLSBUcmVlczsgbm9kZSBpbnNlcnRpb247IFBrIHRyZWVzOyBwb3dlciB0cmVlczsgdHJlZXMgKG1hdGhlbWF0aWNzKSIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7U2hlaWw6MTk3ODpNU1QsCiAgYXV0aG9yID0gICAgICAgIkIuIEEuIFNoZWlsIiwKICB0aXRsZSA9ICAgICAgICAiTWVkaWFuIFNwbGl0IFRyZWVzOiB7QX0gRmFzdCBMb29rdXAgVGVjaG5pcXVlIGZvciBGcmVxdWVudGx5IE9jY3VycmluZyBLZXlzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIxIiwKICBudW1iZXIgPSAgICAgICAiMTEiLAogIHBhZ2VzID0gICAgICAgICI5NDctLTk1OCIsCiAgbW9udGggPSAgICAgICAgbm92LAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjhIMDUiLAogIE1SbnVtYmVyID0gICAgICI4MGE6NjgxMTYiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBub3RlID0gICAgICAgICAiRWFybHkgd29yayBvbiBtaW5pbWFsIHBlcmZlY3QgaGFzaCBmdW5jdGlvbnMuIiwKICBhYnN0cmFjdCA9ICAgICAiU3BsaXQgdHJlZXMgYXJlIGEgbmV3IHRlY2huaXF1ZSBmb3Igc2VhcmNoaW5nIHNldHMgb2Yga2V5cyB3aXRoIGhpZ2hseSBza2V3ZWQgZnJlcXVlbmN5IGRpc3RyaWJ1dGlvbnMuIEEgc3BsaXQgdHJlZSBpcyBhIGJpbmFyeSBzZWFyY2ggdHJlZSBlYWNoIG5vZGUgb2Ygd2hpY2ggY29udGFpbnMgdHdvIGtleSB2YWx1ZXMgLS0tIGEgbm9kZSB2YWx1ZSB3aGljaCBpcyBhIG1heGltYWxseSBmcmVxdWVudCBrZXkgaW4gdGhhdCBzdWJ0cmVlLCBhbmQgYSBzcGxpdCB2YWx1ZSB3aGljaCBwYXJ0aXRpb25zIHRoZSByZW1haW5pbmcga2V5cyAod2l0aCByZXNwZWN0IHRvIHRoZWlyIGxleGljYWwgb3JkZXJpbmcpIGJldHdlZW4gdGhlIGxlZnQgYW5kIHJpZ2h0IHN1YnRyZWVzLiBBIG1lZGlhbiBzcGxpdCB0cmVlIChNU1QpIHVzZXMgdGhlIGxleGljYWwgbWVkaWFuIG9mIGEgbm9kZSdzIGRlc2NlbmRlbnRzIGFzIGl0cyBzcGxpdCB2YWx1ZSB0byBmb3JjZSB0aGUgc2VhcmNoIHRyZWUgdG8gYmUgcGVyZmVjdGx5IGJhbGFuY2VkLCBhY2hpZXZpbmcgYm90aCBhIHNwYWNlIGVmZmljaWVudCByZXByZXNlbnRhdGlvbiBvZiB0aGUgdHJlZSBhbmQgaGlnaCBzZWFyY2ggc3BlZWQuIFVubGlrZSBmcmVxdWVuY3kgb3JkZXJlZCBiaW5hcnkgc2VhcmNoIHRyZWVzLCB0aGUgY29zdCBvZiBhIHN1Y2Nlc3NmdWwgc2VhcmNoIG9mIGFuIE1TVCBpcyBsb2cgbiBib3VuZGVkIGFuZCB2ZXJ5IHN0YWJsZSBhcm91bmQgbWluaW1hbCB2YWx1ZXMuIEZ1cnRoZXIsIGFuIE1TVCBjYW4gYmUgYnVpbHQgZm9yIGEgZ2l2ZW4ga2V5IG9yZGVyaW5nIGFuZCBzZXQgb2YgZnJlcXVlbmNpZXMgaW4gdGltZSBuIGxvZyBuLCBhcyBvcHBvc2VkIHRvIG4qKjIgZm9yIGFuIG9wdGltdW0gYmluYXJ5IHNlYXJjaCB0cmVlLiBBIGRpc2N1c3Npb24gb2YgdGhlIGFwcGxpY2F0aW9uIG9mIE1TVCdzIHRvIGRpY3Rpb25hcnkgbG9va3VwIGZvciBFbmdsaXNoIGlzIHByZXNlbnRlZCwgYW5kIHRoZSBwZXJmb3JtYW5jZSBvYnRhaW5lZCBpcyBjb250cmFzdGVkIHdpdGggdGhhdCBvZiBvdGhlciB0ZWNobmlxdWVzLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMxMTYwIChDb21iaW5hdG9yaWFsIG1hdGhlbWF0aWNzKTsgQzQyNDAgKFByb2dyYW1taW5nIGFuZCBhbGdvcml0aG0gdGhlb3J5KTsgQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzOyA5MjEiLAogIGNvcnBzb3VyY2UgPSAgICJIYXJ2YXJkIFVuaXYuLCBDYW1icmlkZ2UsIE1BLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgcHJvZ3JhbW1pbmc7IGZhc3QgbG9va3VwIHRlY2huaXF1ZTsgZmlsZSBvcmdhbmlzYXRpb247IGZyZXF1ZW50bHkgb2NjdXJyaW5nIGtleXM7IGxleGljYWwgbWVkaWFuOyBtYXRoZW1hdGljYWwgdGVjaG5pcXVlcyAtLS0gVHJlZXM7IG1lZGlhbiBzcGxpdCB0cmVlOyBzZWFyY2hpbmc7IHRyZWVzIChtYXRoZW1hdGljcykiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0hvYXJlOjE5Nzg6Q0NTLAogIGF1dGhvciA9ICAgICAgICJDLiBBLiBSLiBIb2FyZSIsCiAgdGl0bGUgPSAgICAgICAgIkNvcnJpZ2VuZHVtOiB7YGBDb21tdW5pY2F0aW5nIFNlcXVlbnRpYWwgUHJvY2Vzc2VzJyd9IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIxIiwKICBudW1iZXIgPSAgICAgICAiMTEiLAogIHBhZ2VzID0gICAgICAgICI5NTgtLTk1OCIsCiAgbW9udGggPSAgICAgICAgbm92LAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiU2F0IEphbiAxOCAxNTozOTozMiAxOTk3IiwKICBub3RlID0gICAgICAgICAiU2VlIFxjaXRle0hvYXJlOjE5Nzg6Q1NQfS4iLAp9CgpAQXJ0aWNsZXtGcmV1ZGVyOjE5Nzg6U0NFLAogIGF1dGhvciA9ICAgICAgICJFdWdlbmUgQy4gRnJldWRlciIsCiAgdGl0bGUgPSAgICAgICAgIlN5bnRoZXNpemluZyBDb25zdHJhaW50IEV4cHJlc3Npb25zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIxIiwKICBudW1iZXIgPSAgICAgICAiMTEiLAogIHBhZ2VzID0gICAgICAgICI5NTgtLTk2NiIsCiAgbW9udGggPSAgICAgICAgbm92LAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjhFOTkiLAogIE1SbnVtYmVyID0gICAgICI4MGE6NjgwNzQiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0FpL2xpc3AuYmliIiwKICBub3RlID0gICAgICAgICAiQWxzbyBwdWJsaXNoZWQgYXMgTUlUIEFJIE1FTU8gMzcwLCBDYW1icmlkZ2UsIE1BLCBVU0EsIDE5NzYiLAogIGFic3RyYWN0ID0gICAgICJBIGNvbnN0cmFpbnQgbmV0d29yayByZXByZXNlbnRhdGlvbiBpcyBwcmVzZW50ZWQgZm9yIGEgY29tYmluYXRvcmlhbCBzZWFyY2ggcHJvYmxlbTogZmluZGluZyB2YWx1ZXMgZm9yIGEgc2V0IG9mIHZhcmlhYmxlcyBzdWJqZWN0IHRvIGEgc2V0IG9mIGNvbnN0cmFpbnRzLiBBIHRoZW9yeSBvZiBjb25zaXN0ZW5jeSBsZXZlbHMgaW4gc3VjaCBuZXR3b3JrcyBpcyBmb3JtdWxhdGVkLCB3aGljaCBpcyByZWxhdGVkIHRvIHByb2JsZW1zIG9mIGJhY2t0cmFjayB0cmVlIHNlYXJjaCBlZmZpY2llbmN5LiBBbiBhbGdvcml0aG0gaXMgZGV2ZWxvcGVkIHRoYXQgY2FuIGFjaGlldmUgYW55IGxldmVsIG9mIGNvbnNpc3RlbmN5IGRlc2lyZWQsIGluIG9yZGVyIHRvIHByZXByb2Nlc3MgdGhlIHByb2JsZW0gZm9yIHN1YnNlcXVlbnQgYmFja3RyYWNrIHNlYXJjaCwgb3IgdG8gZnVuY3Rpb24gYXMgYW4gYWx0ZXJuYXRpdmUgdG8gYmFja3RyYWNrIHNlYXJjaCBieSBleHBsaWNpdGx5IGRldGVybWluaW5nIGFsbCBzb2x1dGlvbnMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzExNjAgKENvbWJpbmF0b3JpYWwgbWF0aGVtYXRpY3MpOyBDNDI0MCAoUHJvZ3JhbW1pbmcgYW5kIGFsZ29yaXRobSB0aGVvcnkpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBvZiBOZXcgSGFtcHNoaXJlLCBEdXJoYW0sIE5ILCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tYmluYXRvcmlhbCBzZWFyY2g7IGNvbXB1dGVyIHByb2dyYW1taW5nOyBjb25zdHJhaW50IG5ldHdvcmsgcmVwcmVzZW50YXRpb247IGdyYXBoIGNvbG91cmluZzsgTElTUDsgcHJvYmxlbTsgcHJvZ3JhbW1pbmcgdGhlb3J5OyB0aGVvcnkgb2YgY29uc2lzdGVuY3kgbGV2ZWxzIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtEaWprc3RyYToxOTc4OkZHQywKICBhdXRob3IgPSAgICAgICAiRWRzZ2VyIFcuIERpamtzdHJhIGFuZCBMZXNsaWUgTGFtcG9ydCBhbmQgQS4gSi4gTWFydGluIGFuZCBDLiBTLiBTY2hvbHRlbiBhbmQgRS4gRi4gTS4gU3RlZmZlbnMiLAogIHRpdGxlID0gICAgICAgICJPbi10aGUtRmx5IEdhcmJhZ2UgQ29sbGVjdGlvbjogQW4gRXhlcmNpc2UgaW4gQ29vcGVyYXRpb24iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjEiLAogIG51bWJlciA9ICAgICAgICIxMSIsCiAgcGFnZXMgPSAgICAgICAgIjk2Ni0tOTc1IiwKICBtb250aCA9ICAgICAgICBub3YsCiAgeWVhciA9ICAgICAgICAgIjE5NzgiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L01pc2MvRnVuY3Rpb25hbC5iaWIgYW5kIGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvT2JqZWN0L05pZXJzdHJhc3ouYmliIGFuZCBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0NvbXBpbGVyL2dhcmJhZ2UuY29sbGVjdGlvbi5iaWIgYW5kIGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvQ29tcGlsZXIvSGVhcHMuYmliIiwKICBub3RlID0gICAgICAgICAiQWxzbyBFLiBXLiBEaWprc3RyYSBOb3RlIEVXRDQ5NiwgSnVuZSAxOTc1LiIsCiAgYWJzdHJhY3QgPSAgICAgIkFzIGFuIGV4YW1wbGUgb2YgY29vcGVyYXRpb24gYmV0d2VlbiBzZXF1ZW50aWFsIHByb2Nlc3NlcyB3aXRoIHZlcnkgbGl0dGxlIG11dHVhbCBpbnRlcmZlcmVuY2UgZGVzcGl0ZSBmcmVxdWVudCBtYW5pcHVsYXRpb25zIG9mIGEgbGFyZ2Ugc2hhcmVkIGRhdGEgc3BhY2UsIGEgdGVjaG5pcXVlIGlzIGRldmVsb3BlZCB3aGljaCBhbGxvd3MgbmVhcmx5IGFsbCBvZiB0aGUgYWN0aXZpdHkgbmVlZGVkIGZvciBnYXJiYWdlIGRldGVjdGlvbiBhbmQgY29sbGVjdGlvbiB0byBiZSBwZXJmb3JtZWQgYnkgYW4gYWRkaXRpb25hbCBwcm9jZXNzb3Igb3BlcmF0aW5nIGNvbmN1cnJlbnRseSB3aXRoIHRoZSBwcm9jZXNzb3IgZGV2b3RlZCB0byB0aGUgY29tcHV0YXRpb24gcHJvcGVyLiBFeGNsdXNpb24gYW5kIHN5bmNocm9uaXphdGlvbiBjb25zdHJhaW50cyBoYXZlIGJlZW4ga2VwdCBhcyB3ZWFrIGFzIGNvdWxkIGJlIGFjaGlldmVkOyB0aGUgc2V2ZXJlIGNvbXBsZXhpdGllcyBlbmdlbmRlcmVkIGJ5IGRvaW5nIHNvIGFyZSBpbGx1c3RyYXRlZC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pOyBDNjE1MEogKE9wZXJhdGluZyBzeXN0ZW1zKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb21tZW50ID0gICAgICAibXVjaCBvdmVybG9va2VkIGFsZ29yaXRobSwgcHJlc2VudGVkIGFzIG1vcmUgb2YgYSBjb25jdXJyZW5jeSBleGVyY2lzZSB0aGFuIGEgZ2FyYmFnZSBjb2xsZWN0b3IiLAogIGNvcnBzb3VyY2UgPSAgICJCdXJyb3VnaHMgQ29ycC4sIEFsIE51ZW5lbiwgTmV0aGVybGFuZHMiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgb3BlcmF0aW5nIHN5c3RlbXM7IGZ1bmN0aW9uYWwgZ2FyYmFnZSBjb2xsZWN0aW9uIG11bHRpcHJvY2Vzc2luZyBjb29wZXJhdGluZyBzZXF1ZW50aWFsIHByb2Nlc3NlcyBtaW5pbWlzZWQgbXV0dWFsIGV4Y2x1c2lvbiBjb3JyZWN0bmVzcyBjb25jdXJyZW5jeSBtZW1vcnkiLAogIGtleXdvcmRzID0gICAgICJjb29wZXJhdGlvbjsgZ2FyYmFnZSBkZXRlY3Rpb247IG11bHRpcHJvZ3JhbW1pbmc7IG9uIHRoZSBmbHk7IHNlcXVlbnRpYWwgcHJvY2Vzc2VzOyBzdG9yYWdlIG1hbmFnZW1lbnQiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0dyaWVzOjE5Nzg6Q0VQLAogIGF1dGhvciA9ICAgICAgICJEYXZpZCBHcmllcyIsCiAgdGl0bGUgPSAgICAgICAgIkNvcnJpZ2VuZHVtOiB7YGBBbiBleGVyY2lzZSBpbiBwcm92aW5nIHBhcmFsbGVsIHByb2dyYW1zIGNvcnJlY3QnJ30iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjEiLAogIG51bWJlciA9ICAgICAgICIxMiIsCiAgbW9udGggPSAgICAgICAgZGVjLAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiMTA0OC42OEIxMCIsCiAgTVJudW1iZXIgPSAgICAgIjgwYjo2ODAyMiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBEZWMgMjYgMTM6MzU6MDcgMTk5NSIsCiAgbm90ZSA9ICAgICAgICAgIlNlZSBcY2l0ZXtHcmllczoxOTc3OkVQUH0uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKfQoKQEFydGljbGV7TmVlZGhhbToxOTc4OlVFQSwKICBhdXRob3IgPSAgICAgICAiUm9nZXIgTS4gTmVlZGhhbSBhbmQgTWljaGFlbCBELiBTY2hyb2VkZXIiLAogIHRpdGxlID0gICAgICAgICJVc2luZyBFbmNyeXB0aW9uIGZvciBBdXRoZW50aWNhdGlvbiBpbiBMYXJnZSBOZXR3b3JrcyBvZiBDb21wdXRlcnMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjEiLAogIG51bWJlciA9ICAgICAgICIxMiIsCiAgcGFnZXMgPSAgICAgICAgIjk5My0tOTk5IiwKICBtb250aCA9ICAgICAgICBkZWMsCiAgeWVhciA9ICAgICAgICAgIjE5NzgiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0RhdGFiYXNlL1dpZWRlcmhvbGQuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiVXNlIG9mIGVuY3J5cHRpb24gdG8gYWNoaWV2ZSBhdXRoZW50aWNhdGVkIGNvbW11bmljYXRpb24gaW4gY29tcHV0ZXIgbmV0d29ya3MgaXMgZGlzY3Vzc2VkLiBFeGFtcGxlIHByb3RvY29scyBhcmUgcHJlc2VudGVkIGZvciB0aGUgZXN0YWJsaXNobWVudCBvZiBhdXRoZW50aWNhdGVkIGNvbm5lY3Rpb25zLCBmb3IgdGhlIG1hbmFnZW1lbnQgb2YgYXV0aGVudGljYXRlZCBtYWlsLCBhbmQgZm9yIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24gYW5kIGRvY3VtZW50IGludGVncml0eSBndWFyYW50ZWUuIEJvdGggY29udmVudGlvbmFsIGFuZCBwdWJsaWMta2V5IGVuY3J5cHRpb24gYWxnb3JpdGhtcyBhcmUgY29uc2lkZXJlZCBhcyB0aGUgYmFzaXMgZm9yIHByb3RvY29scy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNTYyMCAoQ29tcHV0ZXIgbmV0d29ya3MgYW5kIHRlY2huaXF1ZXMpOyBDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiWGVyb3ggUGFsbyBBbHRvIFJlcy4gQ2VudGVyLCBQYWxvIEFsdG8sIENBLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYXV0aGVudGljYXRlZCBjb21tdW5pY2F0aW9uOyBjb21wdXRlciBuZXR3b3JrczsgZGF0YSBwcm9jZXNzaW5nIC0tLSBTZWN1cml0eSBvZiBEYXRhOyBkb2N1bWVudCBpbnRlZ3JpdHk7IGVuY3J5cHRpb247IGd1YXJhbnRlZTsgcHJvdG9jb2xzOyBwdWJsaWMga2V5IGVuY3J5cHRpb24gYWxnb3JpdGhtczsgc2VjdXJpdHkgb2YgZGF0YTsgc2lnbmF0dXJlIHZlcmlmaWNhdGlvbiIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7R3JpZXM6MTk3ODpMU0EsCiAgYXV0aG9yID0gICAgICAgIkRhdmlkIEdyaWVzIGFuZCBKYXlhZGV2IE1pc3JhIiwKICB0aXRsZSA9ICAgICAgICAiQSBMaW5lYXIgU2lldmUgQWxnb3JpdGhtIGZvciBGaW5kaW5nIFByaW1lIE51bWJlcnMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjEiLAogIG51bWJlciA9ICAgICAgICIxMiIsCiAgcGFnZXMgPSAgICAgICAgIjk5OS0tMTAwMyIsCiAgbW9udGggPSAgICAgICAgZGVjLAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiMTBBMjUgKDY4QzI1KSIsCiAgTVJudW1iZXIgPSAgICAgIjgwZDoxMDAxMCIsCiAgbXJyZXZpZXdlciA9ICAgIkQuIEguIExlaG1lciIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJBIG5ldyBhbGdvcml0aG0gaXMgcHJlc2VudGVkIGZvciBmaW5kaW5nIGFsbCBwcmltZXMgYmV0d2VlbiAyIGFuZCBuLiBUaGUgYWxnb3JpdGhtIGV4ZWN1dGVzIGluIHRpbWUgcHJvcG9ydGlvbmFsIHRvIG4gKGFzc3VtaW5nIHRoYXQgbXVsdGlwbGljYXRpb24gb2YgaW50ZWdlcnMgbm90IGxhcmdlciB0aGFuIG4gY2FuIGJlIHBlcmZvcm1lZCBpbiB1bml0IHRpbWUpLiBUaGUgbWV0aG9kIGhhcyB0aGUgc2FtZSBhcml0aG1ldGljIGNvbXBsZXhpdHkgYXMgdGhlIGFsZ29yaXRobSBwcmVzZW50ZWQgYnkgTi4gRy4gTWFpcnNvbjsgaG93ZXZlciwgdGhpcyB2ZXJzaW9uIGlzIHBlcmhhcHMgc2ltcGxlciBhbmQgbW9yZSBlbGVnYW50LiBJdCBpcyBhbHNvIGVhc2lseSBleHRlbmRlZCB0byBmaW5kIHRoZSBwcmltZSBmYWN0b3JpemF0aW9uIG9mIGFsbCBpbnRlZ2VycyBiZXR3ZWVuIDIgYW5kIG4gaW4gdGltZSBwcm9wb3J0aW9uYWwgdG8gbi4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDMTE2MCAoQ29tYmluYXRvcmlhbCBtYXRoZW1hdGljcyk7IEM1MjMwIChEaWdpdGFsIGFyaXRobWV0aWMgbWV0aG9kcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIkNvcm5lbGwgVW5pdi4sIEl0aGFjYSwgTlksIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBwcm9ncmFtbWluZzsgbGluZWFyIHNpZXZlIGFsZ29yaXRobTsgbnVtYmVyIHRoZW9yeTsgcHJpbWUgZmFjdG9yaXphdGlvbjsgcHJpbWUgbnVtYmVycyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7UGV0ZXJzb246MTk3ODpTT1QsCiAgYXV0aG9yID0gICAgICAgIkphbWVzIEwuIFBldGVyc29uIGFuZCBKYW1lcyBSLiBCaXRuZXIgYW5kIEpvaG4gSC4gSG93YXJkIiwKICB0aXRsZSA9ICAgICAgICAiVGhlIFNlbGVjdGlvbiBvZiBPcHRpbWFsIFRhYiBTZXR0aW5ncyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMSIsCiAgbnVtYmVyID0gICAgICAgIjEyIiwKICBwYWdlcyA9ICAgICAgICAiMTAwNC0tMTAwNyIsCiAgbW9udGggPSAgICAgICAgZGVjLAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9HcmFwaGljcy9zaWdncmFwaC83OC5iaWIiLAogIGFic3RyYWN0ID0gICAgICJBIG5ldyBnZW5lcmF0aW9uIG9mIGNvbXB1dGVyIHRlcm1pbmFscyBhbGxvd3MgdGFiIHNldHRpbmdzIHRvIGJlIHNlbGVjdGVkIGFuZCBzZXQgYnkgdGhlIGNvbXB1dGVyLiBUaGlzIGZlYXR1cmUgY2FuIGJlIHVzZWQgdG8gcmVkdWNlIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB0aGF0IGFyZSBuZWVkZWQgdG8gcmVwcmVzZW50IGEgZG9jdW1lbnQgZm9yIHRyYW5zbWlzc2lvbiBhbmQgcHJpbnRpbmcuIEFuIGFsZ29yaXRobSBpcyBnaXZlbiBmb3Igc2VsZWN0aW5nIHRoZSBvcHRpbWFsIHNldCBvZiB0YWIgc3RvcHMgZm9yIG1pbmltaXppbmcgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRyYW5zbWl0dGVkLiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYWxnb3JpdGhtIGhhcyByZWR1Y2VkIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB0cmFuc21pdHRlZCBieSBmcm9tIDcgdG8gMzAgcGVyY2VudCwgYnV0IHJlcXVpcmVzIGEgcHJlcGFzcyB0aHJvdWdoIHRoZSBkb2N1bWVudCB0byBjb21wdXRlIGEgbWF0cml4IHVzZWQgaW4gZGV0ZXJtaW5pbmcgdGhlIG9wdGltYWwgc2V0IG9mIHRhYiBzdG9wcy4gVGhlIHVzZSBvZiBmaXhlZCB0YWIgc3RvcHMsIGFzIGEgaGV1cmlzdGljIGFsdGVybmF0aXZlLCBjYW4gYWNoaWV2ZSBhYm91dCA4MCBwZXJjZW50IG9mIG9wdGltYWwgd2l0aCBubyBwcmVwYXNzLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTMwRCAoRG9jdW1lbnQgcHJvY2Vzc2luZyB0ZWNobmlxdWVzKTsgQzYxMzAgKERhdGEgaGFuZGxpbmcgdGVjaG5pcXVlcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIG9mIFRleGFzLCBBdXN0aW4sIFRYLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYWxnb3JpdGhtOyBjb21wdXRlciBwcm9ncmFtbWluZzsgY29tcHV0ZXIgdGVybWluYWxzOyBkb2N1bWVudDsgbnVtYmVyOyBvZiBjaGFyYWN0ZXJzOyBvcHRpbWFsIHRhYiBzZXR0aW5nczsgcHJpbnRpbmc7IHNlbGVjdGlvbjsgdHJhbnNtaXNzaW9uOyB3b3JkIHByb2Nlc3NpbmciLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle1dldGhlcmJlOjE5Nzg6U1BNLAogIGF1dGhvciA9ICAgICAgICJKYW1lcyBDLiBXZXRoZXJiZSBhbmQgVi4gVGhvbWFzIERvY2siLAogIHRpdGxlID0gICAgICAgICJTdHJhdGVnaWMgUGxhbm5pbmcgTWV0aG9kb2xvZ3kgZm9yIHRoZSBDb21wdXRpbmcgRWZmb3J0IGluIEhpZ2hlciBFZHVjYXRpb246IGFuIEVtcGlyaWNhbCBFdmFsdWF0aW9uIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIxIiwKICBudW1iZXIgPSAgICAgICAiMTIiLAogIHBhZ2VzID0gICAgICAgICIxMDA4LS0xMDE1IiwKICBtb250aCA9ICAgICAgICBkZWMsCiAgeWVhciA9ICAgICAgICAgIjE5NzgiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiVGhlIGZpbmRpbmdzIG9mIGEgc3R1ZHkgZGVzaWduZWQgdG8gYWRkcmVzcyB0aGUgcHJlc3NpbmcgcHJvYmxlbXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBzdHJhdGVnaWMgcGxhbm5pbmcgb2YgdGhlIGNvbXB1dGluZyBlZmZvcnQgaW4gaGlnaGVyIGVkdWNhdGlvbiBhcmUgcHJlc2VudGVkIGhlcmUuIEEgcGxhbm5pbmcgbWV0aG9kb2xvZ3kgd2FzIGRldmVsb3BlZCBhbmQgdGVzdGVkIHRocm91Z2ggaW1wbGVtZW50YXRpb24gYXQgYSB1bml2ZXJzaXR5LiBUd28geWVhcnMgYWZ0ZXIgdGhlIG1ldGhvZG9sb2d5IHdhcyBpbXBsZW1lbnRlZCwgdGhlIGVmZmVjdGl2ZW5lc3Mgb2YgdGhlIHBsYW5uaW5nIG1ldGhvZG9sb2d5IHdhcyBhc3Nlc3NlZCBpbiB0ZXJtcyBvZiB0aGUgaW1wcm92ZW1lbnQgb2YgdGhlIGRlbGl2ZXJ5IG9mIGNvbXB1dGluZyBzZXJ2aWNlcyB0byB0aGUgbWFqb3IgaW5zdGl0dXRpb25hbCByb2xlcyBvZiBpbnN0cnVjdGlvbiwgcmVzZWFyY2gsIGFuZCBhZG1pbmlzdHJhdGlvbi4gVHdvIGNvbnRyb2wgaW5zdGl0dXRpb25zIHdlcmUgZW1wbG95ZWQgdG8gY29udHJhc3QgdGhlIGltcHJvdmVtZW50cyBhdCB0aGUgdGVzdCBpbnN0aXR1dGlvbi4gVGhlIHJlc3VsdHMgb2YgdGhlIHJlc2VhcmNoIGluZGljYXRlIHRoZSBwbGFubmluZyBtZXRob2RvbG9neSBzaWduaWZpY2FudGx5IGVuaGFuY2VkIHRoZSBkZWxpdmVyeSBvZiBjb21wdXRpbmcgc2VydmljZXMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzAzMTAgKEVEUCBtYW5hZ2VtZW50KTsgQzcxMTAgKEVkdWNhdGlvbmFsIGFkbWluaXN0cmF0aW9uKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzOyA5MDEiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBvZiBIb3VzdG9uLCBIb3VzdG9uLCBUWCwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFkbWluaXN0cmF0aW9uOyBjb21wdXRpbmcgZWZmb3J0OyBEUCBtYW5hZ2VtZW50OyBlZHVjYXRpb247IGVkdWNhdGlvbmFsIGNvbXB1dGluZzsgaGlnaGVyOyBpbnN0cnVjdGlvbjsgcmVzZWFyY2g7IHN0cmF0ZWdpYyBwbGFubmluZyBtZXRob2RvbG9neTsgdW5pdmVyc2l0eSIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7SWJyYW1zaGE6MTk3ODpETEUsCiAgYXV0aG9yID0gICAgICAgIk0uIElicmFtc2hhIGFuZCBWLiBSYWphcmFtYW4iLAogIHRpdGxlID0gICAgICAgICJEZXRlY3Rpb24gb2YgTG9naWNhbCBFcnJvcnMgaW4gRGVjaXNpb24gVGFibGUgUHJvZ3JhbXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjEiLAogIG51bWJlciA9ICAgICAgICIxMiIsCiAgcGFnZXMgPSAgICAgICAgIjEwMTYtLTEwMjUiLAogIG1vbnRoID0gICAgICAgIGRlYywKICB5ZWFyID0gICAgICAgICAiMTk3OCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJBbiBhbGdvcml0aG0gdG8gZGV0ZWN0IGxvZ2ljYWwgZXJyb3JzIGluIGEgbGltaXRlZC1lbnRyeSBkZWNpc2lvbiB0YWJsZSBhbmQgaW4gbG9vcC1mcmVlIHByb2dyYW1zIHdpdGggZW1iZWRkZWQgZGVjaXNpb24gdGFibGVzIGlzIGRldmVsb3BlZC4gQWxsIHRoZSBjb25kaXRpb25zIGluIHRoZSBkZWNpc2lvbiB0YWJsZXMgYXJlIGFzc3VtZWQgdG8gYmUgaW5lcXVhbGl0aWVzIG9yIGVxdWFsaXRpZXMgcmVsYXRpbmcgbGluZWFyIGV4cHJlc3Npb25zLiBJdCBpcyBhbHNvIGFzc3VtZWQgdGhhdCBhY3Rpb25zIGluIGEgZGVjaXNpb24gdGFibGUgYXJlIGxpbmVhciBpbiB2YXJpYWJsZXMgd2hpY2ggb2NjdXIgaW4gdGhlIGNvbmRpdGlvbiBzdHViIG9mIHRoZSBkZWNpc2lvbiB0YWJsZSAob3IgdGFibGVzKSB0byB3aGljaCBjb250cm9sIGlzIHRyYW5zZmVycmVkIGZyb20gdGhlIHRhYmxlLiBUaGUgYWxnb3JpdGhtIGlzIGJhc2VkIG9uIGRldGVybWluaW5nIHdoZXRoZXIgYSBzZXQgb2YgbGluZWFyIGluZXF1YWxpdGllcyBoYXMgb3IgZG9lcyBub3QgaGF2ZSBhIHNvbHV0aW9uLiBUaGUgYWxnb3JpdGhtIGlzIGltcGxlbWVudGVkIGluIEZvcnRyYW4gSVYuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxNTBHIChEaWFnbm9zdGljLCB0ZXN0aW5nLCBkZWJ1Z2dpbmcgYW5kIGV2YWx1YXRpbmcgc3lzdGVtcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIkluZGlhbiBJbnN0LiBvZiBUZWNobm9sLiwgS2FucHVyLCBJbmRpYSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBwcm9ncmFtbWluZzsgZGVjaXNpb24gdGFibGUgcHJvZ3JhbXM7IGRlY2lzaW9uIHRhYmxlczsgZXJyb3IgZGlhZ25vc2lzOyBsb2dpY2FsIGVycm9yczsgcHJvZ3JhbSBkaWFnbm9zdGljcyIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7TWFydGVsbGk6MTk3ODpPRFQsCiAgYXV0aG9yID0gICAgICAgIkFsYmVydG8gTWFydGVsbGkgYW5kIFVnbyBNb250YW5hcmkiLAogIHRpdGxlID0gICAgICAgICJPcHRpbWl6aW5nIERlY2lzaW9uIFRyZWVzIFRocm91Z2ggSGV1cmlzdGljYWxseSBHdWlkZWQgU2VhcmNoIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIxIiwKICBudW1iZXIgPSAgICAgICAiMTIiLAogIHBhZ2VzID0gICAgICAgICIxMDI1LS0xMDM5IiwKICBtb250aCA9ICAgICAgICBkZWMsCiAgeWVhciA9ICAgICAgICAgIjE5NzgiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2OEE1MCIsCiAgTVJudW1iZXIgPSAgICAgIjU4IDE5NDQ0IiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIk9wdGltYWwgZGVjaXNpb24gdGFibGUgY29udmVyc2lvbiBoYXMgYmVlbiB0YWNrbGVkIGluIHRoZSBsaXRlcmF0dXJlIHVzaW5nIHR3byBhcHByb2FjaGVzLCBkeW5hbWljIHByb2dyYW1taW5nIGFuZCBicmFuY2gtYW5kLWJvdW5kLiBUaGUgZm9ybWVyIHRlY2huaXF1ZSBpcyBxdWl0ZSBlZmZlY3RpdmUsIGJ1dCBpdHMgdGltZSBhbmQgc3BhY2UgcmVxdWlyZW1lbnRzIGFyZSBpbmRlcGVuZGVudCBvZiBob3cgYGBlYXN5JycgdGhlIGdpdmVuIHRhYmxlIGlzLiBGdXJ0aGVybW9yZSwgaXQgY2Fubm90IGJlIHVzZWQgdG8gcHJvZHVjZSBnb29kLCBxdWFzaW9wdGltYWwgc29sdXRpb25zIFRoZSBicmFuY2gtYW5kLWJvdW5kIHRlY2huaXF1ZSB1c2VzIGEgZ29vZCBoZXVyaXN0aWMgdG8gZGlyZWN0IHRoZSBzZWFyY2gsIGJ1dCBpcyBjbHV0dGVyZWQgdXAgYnkgYW4gZW5vcm1vdXMgc2VhcmNoIHNwYWNlLCBzaW5jZSB0aGUgbnVtYmVyIG9mIHNvbHV0aW9ucyBpbmNyZWFzZXMgd2l0aCB0aGUgbnVtYmVyIG9mIHRlc3QgdmFyaWFibGVzIGFjY29yZGluZyB0byBhIGRvdWJsZSBleHBvbmVudGlhbC4gSW4gdGhpcyBwYXBlciBhdXRob3JzIHN1Z2dlc3QgYSBoZXVyaXN0aWNhbGx5IGd1aWRlZCB0b3AtZG93biBzZWFyY2ggYWxnb3JpdGhtIHdoaWNoLCBsaWtlIGR5bmFtaWMgcHJvZ3JhbW1pbmcsIHJlY29nbml6ZXMgaWRlbnRpY2FsIHN1YnByb2JsZW1zIGJ1dCB3aGljaCBjYW4gYmUgdXNlZCB0byBmaW5kIGJvdGggb3B0aW1hbCBhbmQgcXVhc2lvcHRpbWFsIHNvbHV0aW9ucy4gQSBoZXVyaXN0aWMgc2VhcmNoIG1ldGhvZCBpcyBpbnRyb2R1Y2VkIHRoYXQgY29tYmluZXMgdGhlIHBvc2l0aXZlIGFzcGVjdHMgb2YgdGhlIGFib3ZlIHR3byB0ZWNobmlxdWVzLiBDb21wcmVzc2VkIHRhYmxlcyB3aXRoIGEgbGFyZ2UgbnVtYmVyIG9mIHZhcmlhYmxlcyBjYW4gYmUgaGFuZGxlZCB3aXRob3V0IGRlcml2aW5nIGV4cGFuZGVkIHRhYmxlcyBmaXJzdC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDI0MCAoUHJvZ3JhbW1pbmcgYW5kIGFsZ29yaXRobSB0aGVvcnkpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI5MjEiLAogIGNvcnBzb3VyY2UgPSAgICJDb25zaWdsaW8gTmF6aW9uYWxlIGRlbGxlIFJpY2VyY2hlLCBQaXNhLCBJdGFseSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJkZWNpc2lvbiB0YWJsZSBjb252ZXJzaW9uOyBkZWNpc2lvbiB0YWJsZXM7IGhldXJpc3RpY2FsbHkgZ3VpZGVkIHNlYXJjaDsgbWF0aGVtYXRpY2FsIHByb2dyYW1taW5nLCBkeW5hbWljOyBvcHRpbWFsOyBwcm9ncmFtbWluZyB0aGVvcnkiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0RhbGFsOjE5Nzg6UlBGLAogIGF1dGhvciA9ICAgICAgICJZb2dlbiBLLiBEYWxhbCBhbmQgUm9iZXJ0IE0uIE1ldGNhbGZlIiwKICB0aXRsZSA9ICAgICAgICAiUmV2ZXJzZSBQYXRoIEZvcndhcmRpbmcgb2YgQnJvYWRjYXN0IFBhY2tldHMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjEiLAogIG51bWJlciA9ICAgICAgICIxMiIsCiAgcGFnZXMgPSAgICAgICAgIjEwNDAtLTEwNDgiLAogIG1vbnRoID0gICAgICAgIGRlYywKICB5ZWFyID0gICAgICAgICAiMTk3OCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJBIGJyb2FkY2FzdCBwYWNrZXQgaXMgZm9yIGRlbGl2ZXJ5IHRvIGFsbCBub2RlcyBvZiBhIG5ldHdvcmsuIEFsZ29yaXRobXMgZm9yIGFjY29tcGxpc2hpbmcgdGhpcyBkZWxpdmVyeSB0aHJvdWdoIGEgc3RvcmUtYW5kLWZvcndhcmQgcGFja2V0IHN3aXRjaGluZyBjb21wdXRlciBuZXR3b3JrIGluY2x1ZGUgKDEpIHRyYW5zbWlzc2lvbiBvZiBzZXBhcmF0ZWx5IGFkZHJlc3NlZCBwYWNrZXRzLCAoMikgbXVsdGlkZXN0aW5hdGlvbiBhZGRyZXNzaW5nLCAoMykgaG90IHBvdGF0byBmb3J3YXJkaW5nLCAoNCkgc3Bhbm5pbmcgdHJlZSBmb3J3YXJkaW5nLCBhbmQgKDUpIHNvdXJjZSBiYXNlZCBmb3J3YXJkaW5nLiBUbyB0aGlzIGxpc3Qgb2YgYWxnb3JpdGhtcyBpcyBhZGRlZCAoNikgcmV2ZXJzZSBwYXRoIGZvcndhcmRpbmcsIGEgYnJvYWRjYXN0IHJvdXRpbmcgbWV0aG9kIHdoaWNoIGV4cGxvaXRzIHJvdXRpbmcgcHJvY2VkdXJlcyBhbmQgZGF0YSBzdHJ1Y3R1cmVzIGFscmVhZHkgYXZhaWxhYmxlIGZvciBwYWNrZXQgc3dpdGNoaW5nLiBSZXZlcnNlIHBhdGggZm9yd2FyZGluZyBpcyBhIHByYWN0aWNhbCBhbGdvcml0aG0gZm9yIGJyb2FkY2FzdCByb3V0aW5nIGluIHN0b3JlLWFuZC1mb3J3YXJkIHBhY2tldCBzd2l0Y2hpbmcgY29tcHV0ZXIgbmV0d29ya3MuIFRoZSBhbGdvcml0aG0gaXMgZGVzY3JpYmVkIGFzIGJlaW5nIHByYWN0aWNhbCBiZWNhdXNlIGl0IGlzIG5vdCBvcHRpbWFsIGFjY29yZGluZyB0byBtZXRyaWNzIGRldmVsb3BlZCBmb3IgaXRzIGFuYWx5c2lzIGluIHRoaXMgcGFwZXIsIGFuZCBhbHNvIGJlY2F1c2UgaXQgY2FuIGJlIGltcGxlbWVudGVkIGluIGV4aXN0aW5nIG5ldHdvcmtzIHdpdGggbGVzcyBjb21wbGV4aXR5IHRoYW4gdGhhdCByZXF1aXJlZCBmb3IgdGhlIGtub3duIGFsdGVybmF0aXZlcy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNTYyMCAoQ29tcHV0ZXIgbmV0d29ya3MgYW5kIHRlY2huaXF1ZXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJYZXJveCBDb3JwLiwgUGFsbyBBbHRvLCBDQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImJyb2FkY2FzdCBwYWNrZXRzOyBicm9hZGNhc3Qgcm91dGluZzsgY29tcHV0ZXIgbmV0d29ya3M7IHBhY2tldCBzd2l0Y2hpbmc7IHJldmVyc2UgcGF0aCBmb3J3YXJkaW5nIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtHdXR0YWc6MTk3ODpBRFQsCiAgYXV0aG9yID0gICAgICAgIkpvaG4gVi4gR3V0dGFnIGFuZCBFbGxpcyBIb3Jvd2l0eiBhbmQgRGF2aWQgUi4gTXVzc2VyIiwKICB0aXRsZSA9ICAgICAgICAiQWJzdHJhY3QgRGF0YSBUeXBlcyBhbmQgU29mdHdhcmUgVmFsaWRhdGlvbiIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMSIsCiAgbnVtYmVyID0gICAgICAgIjEyIiwKICBwYWdlcyA9ICAgICAgICAiMTA0OC0tMTA2NCIsCiAgbW9udGggPSAgICAgICAgZGVjLAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjhCMTUiLAogIE1SbnVtYmVyID0gICAgICI4MGI6NjgwMzAiLAogIG1ycmV2aWV3ZXIgPSAgICJKLiBQYXJlZGFlbnMiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L01pc2MvRnVuY3Rpb25hbC5iaWIiLAogIGFic3RyYWN0ID0gICAgICJBIGRhdGEgYWJzdHJhY3Rpb24gY2FuIGJlIG5hdHVyYWxseSBzcGVjaWZpZWQgdXNpbmcgYWxnZWJyYWljIGF4aW9tcy4gVGhlIHZpcnR1ZSBvZiB0aGVzZSBheGlvbXMgaXMgdGhhdCB0aGV5IHBlcm1pdCBhIHJlcHJlc2VudGF0aW9uLWluZGVwZW5kZW50IGZvcm1hbCBzcGVjaWZpY2F0aW9uIG9mIGEgZGF0YSB0eXBlLiBBbiBleGFtcGxlIGlzIGdpdmVuIHdoaWNoIHNob3dzIGhvdyB0byBlbXBsb3kgYWxnZWJyYWljIGF4aW9tcyBhdCBzdWNjZXNzaXZlIGxldmVscyBvZiBpbXBsZW1lbnRhdGlvbi4gRmlyc3QsIGl0IGlzIHNob3duIGhvdyB0aGUgdXNlIG9mIGFsZ2VicmFpYyBheGlvbWF0aXphdGlvbnMgY2FuIHNpbXBsaWZ5IHRoZSBwcm9jZXNzIG9mIHByb3ZpbmcgdGhlIGNvcnJlY3RuZXNzIG9mIGFuIGltcGxlbWVudGF0aW9uIG9mIGFuIGFic3RyYWN0IGRhdGEgdHlwZS4gU2Vjb25kLCBzZW1pLWF1dG9tYXRpYyB0b29scyBhcmUgZGVzY3JpYmVkIHdoaWNoIGNhbiBiZSB1c2VkIGJvdGggdG8gYXV0b21hdGUgc3VjaCBwcm9vZnMgb2YgY29ycmVjdG5lc3MgYW5kIHRvIGRlcml2ZSBhbiBpbW1lZGlhdGUgaW1wbGVtZW50YXRpb24gZnJvbSB0aGUgYXhpb21zLiBUaGlzIGltcGxlbWVudGF0aW9uIGFsbG93cyBmb3IgbGltaXRlZCB0ZXN0aW5nIG9mIHByb2dyYW1zIGF0IGRlc2lnbiB0aW1lLCBiZWZvcmUgYSBjb252ZW50aW9uYWwgaW1wbGVtZW50YXRpb24gaXMgYWNjb21wbGlzaGVkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbik7IEM2MTUwRyAoRGlhZ25vc3RpYywgdGVzdGluZywgZGVidWdnaW5nIGFuZCBldmFsdWF0aW5nIHN5c3RlbXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBvZiBTb3V0aGVybiBDYWxpZm9ybmlhLCBMb3MgQW5nZWxlcywgQ0EsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhYnN0cmFjdCBkYXRhIHR5cGU7IGFsZ2VicmFpYyBheGlvbWF0aXphdGlvbnM7IGFsZ2VicmFpYyBheGlvbXM7IGNvbXB1dGVyIHByb2dyYW1taW5nIGxhbmd1YWdlczsgY29ycmVjdG5lc3M7IGRhdGEgYWJzdHJhY3Rpb247IGRhdGEgc3RydWN0dXJlczsgZnVuY3Rpb25hbDsgcHJvZ3JhbSB0ZXN0aW5nOyBzb2Z0d2FyZSB2YWxpZGF0aW9uOyB0ZXN0aW5nIG9mIHByb2dyYW1zIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtTcGl0emVuOjE5Nzg6RUhELAogIGF1dGhvciA9ICAgICAgICJKYXkgTS4gU3BpdHplbiBhbmQgS2FybCBOLiBMZXZpdHQgYW5kIExhd3JlbmNlIFJvYmluc29uIiwKICB0aXRsZSA9ICAgICAgICAiQW4gRXhhbXBsZSBvZiBIaWVyYXJjaGljYWwgRGVzaWduIGFuZCBQcm9vZiIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMSIsCiAgbnVtYmVyID0gICAgICAgIjEyIiwKICBwYWdlcyA9ICAgICAgICAiMTA2NC0tMTA3NSIsCiAgbW9udGggPSAgICAgICAgZGVjLAogIHllYXIgPSAgICAgICAgICIxOTc4IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9Db21waWxlci9zZW1hbnRpY3MuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiSGllcmFyY2hpY2FsIHByb2dyYW1taW5nIGlzIGJlaW5nIGluY3JlYXNpbmdseSByZWNvZ25pemVkIGFzIGhlbHBmdWwgaW4gdGhlIGNvbnN0cnVjdGlvbiBvZiBsYXJnZSBwcm9ncmFtcy4gVXNlcnMgb2YgaGllcmFyY2hpY2FsIHRlY2huaXF1ZXMgY2xhaW0gb3IgcHJlZGljdCBzdWJzdGFudGlhbCBpbmNyZWFzZXMgaW4gcHJvZHVjdGl2aXR5IGFuZCBpbiB0aGUgcmVsaWFiaWxpdHkgb2YgdGhlIHByb2dyYW1zIHByb2R1Y2VkLiBJbiB0aGlzIHBhcGVyIHdlIGRlc2NyaWJlIGEgZm9ybWFsIG1ldGhvZCBmb3IgaGllcmFyY2hpY2FsIHByb2dyYW0gc3BlY2lmaWNhdGlvbiwgaW1wbGVtZW50YXRpb24sIGFuZCBwcm9vZi4gV2UgYXBwbHkgdGhpcyBtZXRob2QgdG8gYSBzaWduaWZpY2FudCBsaXN0IHByb2Nlc3NpbmcgcHJvYmxlbSBhbmQgYWxzbyBkaXNjdXNzIGEgbnVtYmVyIG9mIGV4dGVuc2lvbnMgdG8gY3VycmVudCBwcm9ncmFtbWluZyBsYW5ndWFnZXMgdGhhdCBlYXNlIGhpZXJhcmNoaWNhbCBwcm9ncmFtIGRlc2lnbiBhbmQgcHJvb2YuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQyNDAgKFByb2dyYW1taW5nIGFuZCBhbGdvcml0aG0gdGhlb3J5KTsgQzYxMTAgKFN5c3RlbXMgYW5hbHlzaXMgYW5kIHByb2dyYW1taW5nKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiU1JJIEludGVybmF0LiwgTWVubG8gUGFyaywgQ0EsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBwcm9ncmFtbWluZzsgY29tcHV0ZXIgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzOyBkYXRhIGFic3RyYWN0aW9uOyBoaWVyYXJjaGljYWwgZGVzaWduOyBoaWVyYXJjaGljYWwgcHJvZ3JhbTsgaGllcmFyY2hpY2FsIHN0cnVjdHVyZXM7IGltcGxlbWVudGF0aW9uOyBsYXJnZSBwcm9ncmFtczsgbGlzdCBwcm9jZXNzaW5nOyBwcm9kdWN0aXZpdHk7IFByb2dyYW0gdmVyaWZpY2F0aW9uOyBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IHByb29mOyByZWxpYWJpbGl0eTsgc29mdHdhcmUgbW9kdWxlczsgc3BlY2lmaWNhdGlvbjsgc3RydWN0dXJlZCBwcm9ncmFtbWluZyIsCiAgdHJlYXRtZW50ID0gICAgIkEgQXBwbGljYXRpb247IFQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7QmVudGxleToxOTc4Ok1EQywKICBhdXRob3IgPSAgICAgICAiSi4gTC4gQmVudGxleSIsCiAgdGl0bGUgPSAgICAgICAgIk11bHRpZGltZW5zaW9uYWwgRGl2aWRlLWFuZC1Db25xdWVyIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIzIiwKICBudW1iZXIgPSAgICAgICAiNCIsCiAgcGFnZXMgPSAgICAgICAgIjIxNC0tMjI4IiwKICBtb250aCA9ICAgICAgICBtYXksCiAgeWVhciA9ICAgICAgICAgIjE5NzgiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYnNvdXJjZSA9ICAgICJmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L1BhcmFsbGVsL011bHRpLmJpYiIsCn0KCkBBcnRpY2xle0JveXNlOjE5Nzk6SURBLAogIGF1dGhvciA9ICAgICAgICJKb2huIFcuIEJveXNlIiwKICB0aXRsZSA9ICAgICAgICAiSW50ZXJmZXJlbmNlIERldGVjdGlvbiBBbW9uZyBTb2xpZHMgYW5kIFN1cmZhY2VzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIyIiwKICBudW1iZXIgPSAgICAgICAiMSIsCiAgcGFnZXMgPSAgICAgICAgIjMtLTkiLAogIG1vbnRoID0gICAgICAgIGphbiwKICB5ZWFyID0gICAgICAgICAiMTk3OSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvR3JhcGhpY3MvaW1hZ2VyL2ltYWdlci43OS5iaWIiLAogIGFic3RyYWN0ID0gICAgICJJbiBtYW55IGluZHVzdHJpYWwgZW52aXJvbm1lbnRzIGl0IGlzIG5lY2Vzc2FyeSB0byBkZXRlcm1pbmUgd2hldGhlciB0aGVyZSBpcyBpbnRlcmZlcmVuY2UgYW1vbmcgY29tcG9uZW50cy4gVGhlcmUgYXJlIG1hbnkgcG90ZW50aWFsIGludGVyZmVyZW5jZSBwcm9ibGVtcyBpbiBwcm9kdWN0cyBtYWRlIHVwIG9mIGFzc2VtYmxpZXMgb2YgY29tcG9uZW50cyBhbmQgaW4gcHJvZHVjdCBtYW51ZmFjdHVyaW5nIGFuZCB0ZXN0aW5nLiBUeXBpY2FsbHksIGRyYXdpbmdzIGFyZSB1c2VkIGluIGFuIGF0dGVtcHQgdG8gZGV0ZWN0IHN1Y2ggdW53YW50ZWQgaW50ZXJmZXJlbmNlcywgYnV0IHRoZSB0d28tZGltZW5zaW9uYWwsIHN0YXRpYyBkcmFmdGluZyBtZWRpdW0gZG9lcyBub3QgYWx3YXlzIHNob3cgaW50ZXJmZXJlbmNlcyBhbW9uZyB0aHJlZS1kaW1lbnNpb25hbCwgbW92aW5nIHBhcnRzLiBBIGNvbXB1dGVyIHJlcHJlc2VudGF0aW9uIGZvciBzb2xpZHMgYW5kIHN1cmZhY2VzIGFuZCBhbGdvcml0aG1zIHdoaWNoIGNhcnJ5IG91dCBpbnRlcmZlcmVuY2UgY2hlY2tpbmcgYW1vbmcgb2JqZWN0cyBzbyByZXByZXNlbnRlZCBhcmUgcHJlc2VudGVkLiBPYmplY3RzIGFyZSByZXByZXNlbnRlZCBhcyBwb2x5aGVkcmEgb3IgYXMgcGllY2V3aXNlIHBsYW5hciBzdXJmYWNlcy4gVHdvIHR5cGVzIG9mIGludGVyZmVyZW5jZSBjaGVja2luZyBhcmUgZGlzY3Vzc2VkOiBkZXRlY3Rpb24gb2YgaW50ZXJzZWN0aW9ucyBhbW9uZyBvYmplY3RzIGluIGZpeGVkIHBvc2l0aW9ucyBhbmQgZGV0ZWN0aW9uIG9mIGNvbGxpc2lvbnMgYW1vbmcgb2JqZWN0cyBtb3ZpbmcgYWxvbmcgc3BlY2lmaWVkIHRyYWplY3Rvcmllcy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEzMEIgKEdyYXBoaWNzIHRlY2huaXF1ZXMpOyBDNzQ0MCAoQ2l2aWwgYW5kIG1lY2hhbmljYWwgZW5naW5lZXJpbmcgY29tcHV0aW5nKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiQ29tcHV0ZXIgU2NpLiBEZXB0LiwgR2VuZXJhbCBNb3RvcnMgUmVzLiBMYWJzLiwgV2FycmVuLCBNSSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgIkNBRDsgY29sbGlzaW9uIGRldGVjdGlvbiBncmFwaGljczsgY29tcG9uZW50czsgY29tcHV0ZXIgZ3JhcGhpY3M7IGRhdGEgcHJvY2Vzc2luZyAtLS0gTWFudWZhY3R1cmluZyBBcHBsaWNhdGlvbnM7IGRldGVjdGlvbjsgZHJhd2luZ3M7IGluZHVzdHJpYWwgZW52aXJvbm1lbnRzOyBpbnRlcmZlcmVuY2U7IGludGVyZmVyZW5jZSBjaGVja2luZzsgaW50ZXJzZWN0aW9uOyBtYW51ZmFjdHVyaW5nIGFuZCB0ZXN0aW5nOyBtZWNoYW5pY2FsIGVuZ2luZWVyaW5nIGNvbXB1dGluZzsgTWV0aG9kb2xvZ2llczsgTW9kZWxpbmcgZ2VvbWV0cmljIGRlc2lnbi9tb2RlbGluZyBhbmQgQWxnb3JpdGhtaWMgQXNwZWN0cyBpbnRlcnNlY3Rpb24gZGV0ZXJtaW5hdGlvbiBhbmQgc29saWRzIGludGVyZmFjZSBkZXRlY3Rpb247IHBpZWNld2lzZSBwbGFuYXIgc3VyZmFjZXM7IHBvbHloZWRyYTsgcG90ZW50aWFsIGludGVyZmVyZW5jZSBwcm9ibGVtczsgcHJvZHVjdDsgc29saWRzOyBzdXJmYWNlczsgVGVjaG5pcXVlcyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7Q29sdG9uOjE5Nzk6SVVDLAogIGF1dGhvciA9ICAgICAgICJLZW50IFcuIENvbHRvbiIsCiAgdGl0bGUgPSAgICAgICAgIlRoZSBpbXBhY3QgYW5kIHVzZSBvZiBjb21wdXRlciB0ZWNobm9sb2d5IGJ5IHRoZSBwb2xpY2UiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjIiLAogIG51bWJlciA9ICAgICAgICIxIiwKICBwYWdlcyA9ICAgICAgICAiMTAtLTIwIiwKICBtb250aCA9ICAgICAgICBqYW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzkiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiT3ZlciB0aGUgcGFzdCBkZWNhZGUgdGhlcmUgaGFzIGJlZW4gYSBzaWduaWZpY2FudCBncm93dGggaW4gdGhlIHVzZSBvZiBjb21wdXRlciB0ZWNobm9sb2d5IGJ5IFUuIFMuIHBvbGljZSBkZXBhcnRtZW50cy4gVGhpcyBncm93dGgsIGhvd2V2ZXIsIGhhcyBiZWVuIGF0IGEgc2xvd2VyIHJhdGUgdGhhbiBwcmVkaWN0ZWQgaW4gdGhlIGVhcmx5IDE5NzAncy4gRnVydGhlciwgd2hlbiBjb21wdXRlciBhcHBsaWNhdGlvbnMgZXh0ZW5kIGJleW9uZCBgYHJvdXRpbmUnJyB1c2VzIHRvIGBgbm9ucm91dGluZScnIGVmZm9ydHMsIHN1Y2ggYXMgcmVzb3VyY2UgYWxsb2NhdGlvbiBvciBjb21wdXRlci1haWRlZC1kaXNwYXRjaCBzeXN0ZW1zIHdoZXJlIHRoZSBtYWNoaW5lIGJlZ2lucyB0byBiZWNvbWUgYSB0b29sIGZvciBkZWNpc2lvbiBtYWtpbmcsIHN0cmF0ZWdpYyBwbGFubmluZyBhbmQgcGVyc29uXHNsYXNoIG1hY2hpbmUgaW50ZXJhY3Rpb24sIHRoZSByZXN1bHRzIG9mIHRoZSB0ZWNobm9sb2d5IHRvIGRhdGUgaGF2ZSBiZWVuIG1peGVkLiBDYXNlIHN0dWRpZXMgYW5kIHN1cnZleXMgYXJlIGRpc2N1c3NlZCB3aGljaCBwcm92aWRlIGluc2lnaHRzIG9uIHRoZSBpbXBsZW1lbnRhdGlvbiBhbmQgaW1wYWN0IG9mIHBvbGljZSBjb21wdXRlciB0ZWNobm9sb2d5IGFuZCB0aGUgcmVsYXRpb25zaGlwIG9mIHRoaXMgdGVjaG5vbG9neSB0byBsYXcgZW5mb3JjZW1lbnQgYW5kIHNvY2lldHkuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzcxMzAgKFB1YmxpYyBhZG1pbmlzdHJhdGlvbikiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlB1YmxpYyBTeXN0ZW1zIEV2YWx1YXRpb24sIE1JVCwgQ2FtYnJpZGdlLCBNQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbW1hbmQgYW5kIGNvbnRyb2wgc3lzdGVtczsgY29tcHV0ZXIgYWlkZWQgZGlzcGF0Y2g7IGNvbXB1dGVyIHRlY2hub2xvZ3k7IGNvbXB1dGVyczsgZGF0YSBwcm9jZXNzaW5nIC0tLSBHb3Zlcm5tZW50YWwgQXBwbGljYXRpb25zOyBkZWNpc2lvbjsgbWFraW5nOyBwZXJzb24vbWFjaGluZSBpbnRlcmFjdGlvbjsgcG9saWNlOyBwb2xpY2UgY29tbWFuZCBhbmQgY29udHJvbDsgcG9saWNlIGRhdGEgcHJvY2Vzc2luZzsgcmVzb3VyY2UgYWxsb2NhdGlvbjsgc3RyYXRlZ2ljIHBsYW5uaW5nIiwKICB0cmVhdG1lbnQgPSAgICAiRyBHZW5lcmFsIFJldmlldyIsCn0KCkBBcnRpY2xle0Jvbmdpb3Zhbm5pOjE5Nzk6UERCLAogIGF1dGhvciA9ICAgICAgICJHaWFuIENhcmxvIEJvbmdpb3Zhbm5pIGFuZCBGYWJyaXppbyBMdWNjaW8iLAogIHRpdGxlID0gICAgICAgICJQZXJtdXRhdGlvbiBvZiBEYXRhIEJsb2NrcyBpbiBhIEJ1YmJsZSBNZW1vcnkiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjIiLAogIG51bWJlciA9ICAgICAgICIxIiwKICBwYWdlcyA9ICAgICAgICAiMjEtLTI1IiwKICBtb250aCA9ICAgICAgICBqYW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzkiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2OEIxNSIsCiAgTVJudW1iZXIgPSAgICAgIjgwYjo2ODAyNiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJBIGNvbW1vbiBpbnRlcm5hbCBvcmdhbml6YXRpb24gb2YgYnViYmxlIG1lbW9yaWVzIGNvbnNpc3RzIG9mIGEgc2V0IG9mIChtaW5vcikgbG9vcHMsIGNvbm5lY3RlZCB0aHJvdWdoIGFub3RoZXIgKG1ham9yKSBsb29wLiBUaGUgcHJvYmxlbSBvZiBvYnRhaW5pbmcgYW55IGdpdmVuIHBlcm11dGF0aW9uIG9mIHRoZSBtaW5vciBsb29wIGNvbnRlbnRzIGluIG1pbmltdW0gdGltZSBpcyBzdHVkaWVkIGluIHRoaXMgcGFwZXIuIEEgbG93ZXIgYm91bmQgdG8gdGhlIG51bWJlciBvZiBzdGVwcyByZXF1aXJlZCBieSBhIHBlcm11dGF0aW9uIGFsZ29yaXRobSBpcyBkZXJpdmVkLCBhbmQgdGhlIGNsYXNzIG9mIG9wdGltdW0gYWxnb3JpdGhtcyBpcyBpZGVudGlmaWVkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM1MzIwRSAoU3RvcmFnZSBvbiBzdGF0aW9uYXJ5IG1hZ25ldGljIG1lZGlhKTsgQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIxOyA3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBvZiBQaXNhLCBQaXNhLCBJdGFseSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhbGdvcml0aG1zOyBidWJibGUgbWVtb3J5OyBjb21wdXRlciBwcm9ncmFtbWluZyAtLS0gU3Vicm91dGluZXM7IGRhdGEgYmxvY2sgc2hpZnQ7IGRhdGEgYmxvY2tzOyBkYXRhIHN0b3JhZ2UsIG1hZ25ldGljOyBkaWdpdGFsIHN0b3JhZ2U7IGZpbGUgb3JnYW5pc2F0aW9uOyBtYWduZXRpYyBmaWxtIHN0b3JlczsgbWVtb3J5IGxvb3BzOyBvcHRpbXVtOyBwZXJtdXRhdGlvbiBhbGdvcml0aG0iLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle1NhdWVyOjE5Nzk6SURELAogIGF1dGhvciA9ICAgICAgICJDaGFybGVzIEguIFNhdWVyIGFuZCBLLiBNYW5pIENoYW5keSIsCiAgdGl0bGUgPSAgICAgICAgIlRoZSBJbXBhY3Qgb2YgRGlzdHJpYnV0aW9ucyBhbmQgRGlzY2lwbGluZXMgb24gTXVsdGlwbGUgUHJvY2Vzc29yIFN5c3RlbXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjIiLAogIG51bWJlciA9ICAgICAgICIxIiwKICBwYWdlcyA9ICAgICAgICAiMjUtLTM0IiwKICBtb250aCA9ICAgICAgICBqYW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzkiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0Rpc3RyaWJ1dGVkL1FMRC8xOTc5LmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIlNpbXBsZSBxdWV1ZWluZyBtb2RlbHMgYXJlIHVzZWQgdG8gc3R1ZHkgdGhlIHBlcmZvcm1hbmNlIHRyYWRlb2ZmcyBvZiBtdWx0aXBsZSBwcm9jZXNzb3Igc3lzdGVtcy4gSXNzdWVzIGNvbnNpZGVyZWQgaW5jbHVkZSB0aGUgaW1wYWN0IG9mIENQVSBzZXJ2aWNlIGRpc2NpcGxpbmVzIGFuZCBkaXN0cmlidXRpb25zLCBsZXZlbCBvZiBtdWx0aXByb2dyYW1taW5nLCBtdWx0aXRhc2tpbmcsIGFuZCBqb2IgcHJpb3JpdGllcy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGFubm90ZSA9ICAgICAgICIoVkJJLTAwMDY5NikiLAogIGNsYXNzY29kZXMgPSAgICJDNTQyMCAoTWFpbmZyYW1lcyBhbmQgbWluaWNvbXB1dGVycyk7IEM2MTUwSiAoT3BlcmF0aW5nIHN5c3RlbXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjI7IDcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIklCTSBUaG9tYXMgSi4gV2F0c29uIFJlcy4gQ2VudGVyLCBZb3JrdG93biBIZWlnaHRzLCBOWSwgVVNBIiwKICBjb3VudHJ5ID0gICAgICAiVVNBIiwKICBkZXNjcmlwdG9ycyA9ICAiTXVsdGlwcm9jZXNzb3I7IHF1ZXVlaW5nIGRpc2NpcGxpbmU7IiwKICBlbnVtID0gICAgICAgICAiMTEwOTIiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgc3lzdGVtcyBwcm9ncmFtbWluZyAtLS0gTXVsdGlwcm9ncmFtbWluZzsgY29tcHV0ZXIgc3lzdGVtcywgZGlnaXRhbDsgQ1BVIHNlcnZpY2U7IGpvYjsgbXVsdGlwbGUgcHJvY2Vzc29yIHN5c3RlbXM7IG11bHRpcHJvY2Vzc2luZyBzeXN0ZW1zOyBtdWx0aXByb2dyYW1taW5nOyBtdWx0aXRhc2tpbmc7IHBlcmZvcm1hbmNlOyBwcmlvcml0aWVzOyBxdWV1ZWluZyBtb2RlbHM7IHF1ZXVlaW5nIHRoZW9yeTsgdHJhZGVvZmZzIiwKICBsYW5ndWFnZSA9ICAgICAiRW5nbGlzaCIsCiAgcmVmZXJlbmNlcyA9ICAgIjAiLAogIHRyZWF0bWVudCA9ICAgICJHIEdlbmVyYWwgUmV2aWV3OyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0JhbmF0cmU6MTk3OTpFQ1QsCiAgYXV0aG9yID0gICAgICAgIkouIFAuIEJhbntcXmF9dHJlIGFuZCBKLiBQLiBSb3V0ZWF1IGFuZCBMLiBUcmlsbGluZyIsCiAgdGl0bGUgPSAgICAgICAgIkFuIGV2ZW50LWRyaXZlbiBjb21waWxpbmcgdGVjaG5pcXVlIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIyIiwKICBudW1iZXIgPSAgICAgICAiMSIsCiAgcGFnZXMgPSAgICAgICAgIjM0LS00MiIsCiAgbW9udGggPSAgICAgICAgamFuLAogIHllYXIgPSAgICAgICAgICIxOTc5IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkR1ZSB0byB0aGUgbGluZWFyIHN0cnVjdHVyZSBvZiBzb3VyY2UgdGV4dCwgZGlmZmljdWx0aWVzIG1heSBhcmlzZSBpbiBhIG9uZS1wYXNzIGNvbXBpbGF0aW9uIHByb2Nlc3MuIFRoZXNlIGRpZmZpY3VsdGllcyBvY2N1ciB3aGVuIGFuIGVudGl0eSBjYW5ub3QgYmUgcHJvY2Vzc2VkIGJlY2F1c2Ugb2YgYSBmb3J3YXJkIHJlZmVyZW5jZSB0byBpbmZvcm1hdGlvbiBvbmx5IG9idGFpbmFibGUgZnJvbSBzdWJzZXF1ZW50IGVudGl0aWVzLiBDbGFzc2ljIHNvbHV0aW9ucyBhc2sgZm9yIGRhdGEgc3RydWN0dXJlcyBhcHByb3ByaWF0ZSBmb3IgZWFjaCBjYXNlLiBBIHRlY2huaXF1ZSBpcyBwcmVzZW50ZWQgd2hpY2ggdXNlcyBpbnN0ZWFkIGNvbnRyb2wgc3RydWN0dXJlcywgbmFtZWx5IGV2ZW50cyBhbmQgcHJvY2Vzc2VzLiBUaGUgd29yayBvZiB0aGUgY29tcGlsZXItd3JpdGVyIGJlY29tZXMgZWFzaWVyIGJvdGggY29uY2VwdHVhbGx5IGFuZCBpbiBwcmFjdGljZSBiZWNhdXNlIGhlIGNhbiBmb3JnZXQgdGhlc2UgcHJvYmxlbXMgYXQgdGhlIG91dHNldCBhbmQgaGUgYXZvaWRzIHNwZWNpYWwgcHJvY2Vzc2luZyBmb3IgZWFjaCBwcm9ibGVtLiBUaGlzIHRlY2huaXF1ZSBoYXMgYmVlbiBhcHBsaWVkIHRvIHRoZSBjb25zdHJ1Y3Rpb24gb2YgYW4gQWxnb2wgNjggY29tcGlsZXIuIFRocmVlIGV4YW1wbGVzIGZyb20gdGhhdCBpbXBsZW1lbnRhdGlvbiBhcmUgZGVzY3JpYmVkIGFuZCBkaXNjdXNzZWQgaGVyZS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pOyBDNjE1MEMgKENvbXBpbGVycywgaW50ZXJwcmV0ZXJzIGFuZCBvdGhlciBwcm9jZXNzb3JzKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gZGUgUmVubmVzLCBSZW5uZXMsIEZyYW5jZSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJBTEdPTCA2OCBjb21waWxlcjsgY29tcGlsYXRpb247IGNvbXB1dGVyIG9wZXJhdGluZyBzeXN0ZW1zIC0tLSBQcm9ncmFtIENvbXBpbGVyczsgY29tcHV0ZXIgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzOyBjb250cm9sIHN0cnVjdHVyZXM7IGRhdGE7IGRhdGEgc3RydWN0dXJlczsgZm9yd2FyZCByZWZlcmVuY2UgdG8gaW5mb3JtYXRpb247IG9uZSBwYXNzOyBwcm9ncmFtIGNvbXBpbGVyczsgc2VtYW50aWMgYW5hbHlzaXM7IHNvdXJjZSB0ZXh0OyBzdHJ1Y3R1cmVzIiwKICB0cmVhdG1lbnQgPSAgICAiRyBHZW5lcmFsIFJldmlldzsgUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtBcnNhYzoxOTc5OlNTUywKICBhdXRob3IgPSAgICAgICAiSmFjcXVlcyBKLiBBcnNhYyIsCiAgdGl0bGUgPSAgICAgICAgIlN5bnRhY3RpYyBTb3VyY2UgdG8gU291cmNlIFRyYW5zZm9ybXMgYW5kIFByb2dyYW0gTWFuaXB1bGF0aW9uIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIyIiwKICBudW1iZXIgPSAgICAgICAiMSIsCiAgcGFnZXMgPSAgICAgICAgIjQzLS01NCIsCiAgbW9udGggPSAgICAgICAgamFuLAogIHllYXIgPSAgICAgICAgICIxOTc5IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIlN5bnRhY3RpYyB0cmFuc2Zvcm1zIGFyZSB0aGUgc291cmNlIHRvIHNvdXJjZSBwcm9ncmFtIHRyYW5zZm9ybWF0aW9ucyB3aGljaCBwcmVzZXJ2ZSB0aGUgaGlzdG9yeSBvZiBjb21wdXRhdGlvbiwgYW5kIHRodXMgZG8gbm90IG1vZGlmeSB0aGUgZXhlY3V0aW9uIHRpbWUuIENvbWJpbmVkIHdpdGggYSBzbWFsbCBudW1iZXIgb2YgcHJpbWl0aXZlIHNlbWFudGljIHRyYW5zZm9ybXMsIHRoZXkgcHJvdmlkZSBhIHBvd2VyZnVsIHRvb2wgZm9yIHByb2dyYW0gbWFuaXB1bGF0aW9uLiBBIGNvbXBsZXRlIGNhdGFsb2d1ZSBvZiBzeW50YWN0aWMgdHJhbnNmb3JtcywgYW5kIGl0cyB1c2UgZm9yIHNvbHV0aW9uIG9mIGEgc3lzdGVtIG9mIHByb2dyYW0gZXF1YXRpb25zLCBpcyBnaXZlbi4gRXhhbXBsZXMgb2YgZGVyaXZhdGlvbiBvZiBtb3JlIGNvbXBsZXggc291cmNlIHRvIHNvdXJjZSB0cmFuc2Zvcm1hdGlvbnMgYXJlIGFsc28gcHJlc2VudGVkLiBUd28gY2FzZSBzdHVkaWVzIGlsbHVzdHJhdGUgdGhlIHdheSBpbiB3aGljaCBzeW50YWN0aWMgYW5kIHNlbWFudGljIHNvdXJjZSB0byBzb3VyY2UgdHJhbnNmb3JtYXRpb25zIG1heSBiZSB1c2VkIGZvciBkZXZlbG9wbWVudCBvZiBjbGVhciwgc2ltcGxlLCBhbmQgcmVhc29uYWJseSBlZmZpY2llbnQgcHJvZ3JhbXMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQyNDAgKFByb2dyYW1taW5nIGFuZCBhbGdvcml0aG0gdGhlb3J5KTsgQzYxMTAgKFN5c3RlbXMgYW5hbHlzaXMgYW5kIHByb2dyYW1taW5nKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiSW5zdC4gZGUgUHJvZ3JhbW1hdGlvbiwgVW5pdi4gUGllcnJlIGV0IE1hcmllIEN1cmllLCBQYXJpcywgRnJhbmNlIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIHByb2dyYW1taW5nOyBwcm9ncmFtIG1hbmlwdWxhdGlvbjsgcHJvZ3JhbSB0cmFuc2Zvcm1hdGlvbnM7IHByb2dyYW1taW5nIHRoZW9yeTsgc2VtYW50aWMgdHJhbnNmb3Jtczsgc291cmNlIHRvIHNvdXJjZTsgc291cmNlIHRyYW5zZm9ybXM7IHN0cnVjdHVyZWQgcHJvZ3JhbW1pbmc7IHN5bnRhY3RpYzsgdHJhbnNmb3JtcyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7VGF1bGJlZToxOTc5OlBFUCwKICBhdXRob3IgPSAgICAgICAiTy4gRS4gVGF1bGJlZSBhbmQgUy4gRC4gQ29udGUiLAogIHRpdGxlID0gICAgICAgICJQcm9kdWN0aW9uIGFuZCBlbXBsb3ltZW50IG9mIHtQaC5ELnN9IGluIGNvbXB1dGVyIHNjaWVuY2UgLS0tIDE5NzcgYW5kIDE5NzgiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjIiLAogIG51bWJlciA9ICAgICAgICIyIiwKICBwYWdlcyA9ICAgICAgICAiNzUtLTc2IiwKICBtb250aCA9ICAgICAgICBmZWIsCiAgeWVhciA9ICAgICAgICAgIjE5NzkiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzAyMjAgKENvbXB1dGluZyBlZHVjYXRpb24gYW5kIHRyYWluaW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIG9mIFBpdHRzYnVyZ2gsIFBpdHRzYnVyZ2gsIFBBLCBVU0EiLAogIGtleXdvcmRzID0gICAgICIxOTc3OyAxOTc4OyBjb21wdXRlciBzY2llbmNlOyBjb21wdXRlciBzY2llbmNlIGVkdWNhdGlvbjsgZW1wbG95bWVudDsgUGguRHMiLAogIHRyZWF0bWVudCA9ICAgICJHIEdlbmVyYWwgUmV2aWV3IiwKfQoKQEFydGljbGV7RmFpcmxleToxOTc5OkVDRCwKICBhdXRob3IgPSAgICAgICAiUi4gRS4gRmFpcmxleSIsCiAgdGl0bGUgPSAgICAgICAgIkVtcGxveW1lbnQgY2hhcmFjdGVyaXN0aWNzIG9mIGRvY3RvcmFsIGxldmVsIGNvbXB1dGVyIHNjaWVudGlzdHMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjIiLAogIG51bWJlciA9ICAgICAgICIyIiwKICBwYWdlcyA9ICAgICAgICAiNzctLTc4IiwKICBtb250aCA9ICAgICAgICBmZWIsCiAgeWVhciA9ICAgICAgICAgIjE5NzkiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzAyMzAgKEVjb25vbWljLCBzb2NpYWwgYW5kIHBvbGl0aWNhbCBhc3BlY3RzIG9mIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJDb2xvcmFkbyBTdGF0ZSBVbml2LiwgRm9ydCBDb2xsaW5zLCBDTywgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiYWNhZGVtaWM7IGJ1c2luZXNzOyBjb21wdXRlciBzY2llbnRpc3RzOyBkb2N0b3JhbDsgZW1wbG95bWVudDsgaW5kdXN0cnk7IG9wcG9ydHVuaXRpZXM7IFBoLkQuOyBwcm9mZXNzaW9uYWwgYXNwZWN0czsgd29yayBhY3Rpdml0aWVzIiwKICB0cmVhdG1lbnQgPSAgICAiRyBHZW5lcmFsIFJldmlldyIsCn0KCkBBcnRpY2xle0d1bGw6MTk3OTpSRFMsCiAgYXV0aG9yID0gICAgICAgIlcuIEUuIEd1bGwgYW5kIE0uIEEuIEplbmtpbnMiLAogIHRpdGxlID0gICAgICAgICJSZWN1cnNpdmUgZGF0YSBzdHJ1Y3R1cmVzIGluIHtBUEwufSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMiIsCiAgbnVtYmVyID0gICAgICAgIjIiLAogIHBhZ2VzID0gICAgICAgICI3OS0tOTYiLAogIG1vbnRoID0gICAgICAgIGZlYiwKICB5ZWFyID0gICAgICAgICAiMTk3OSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4QjE1ICg2OEUxMCA2OEgwNSkiLAogIE1SbnVtYmVyID0gICAgICI4MGI6NjgwMjgiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiQSBtYXRoZW1hdGljYWwgc3R1ZHkgb2YgdGhyZWUgYXBwcm9hY2hlcyBmb3IgZGVmaW5pbmcgbmVzdGVkIGFycmF5IGluIEFQTCBpcyBwcmVzZW50ZWQuIFRoZW9yZW1zIGV4aGliaXRpbmcgdGhlIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiB0aGUgZGVmaW5pdGlvbmFsIHN5c3RlbXMgYXJlIGdpdmVuIGFuZCBpbGx1c3RyYXRlZCB0aHJvdWdoIGdyYXBoIHJlcHJlc2VudGF0aW9ucy4gT25lIG9mIHRoZSBhcHByb2FjaGVzIGlzIHVzZWQgdG8gZGVmaW5lIGFuIEFQTCBhcnJheSB0byBiZSBhIHJlY3Vyc2l2ZSBkYXRhIHN0cnVjdHVyZSBlcXVpdmFsZW50IHRvIGEgdHJlZSBzdHJ1Y3R1cmUgaW4gd2hpY2ggYWxsIGRhdGEgaXMgc3RvcmVkIGF0IHRoZSBsZWF2ZXMgYXMgaG9tb2dlbmVvdXMgYXJyYXlzIG9mIG51bWJlcnMgYW5kIGNoYXJhY3RlcnMuIEFuIGV4dGVuc2lvbiBvZiBBUEwgaXMgcHJvcG9zZWQgdGhhdCBpbmNsdWRlcyBuZXcgcHJpbWl0aXZlIGZ1bmN0aW9ucyB0byBtYW5pcHVsYXRlIHRoZSBuZXN0aW5nIGxldmVsIG9mIGFycmF5cyBhbmQgbmV3IG9wZXJhdG9ycyB0byBhc3Npc3QgaW4gdGhlIGNvbnN0cnVjdGlvbiBvZiBkYXRhLWRyaXZlbiBhbGdvcml0aG1zLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbik7IEM2MTQwRCAoSGlnaCBsZXZlbCBsYW5ndWFnZXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBadXJpY2gsIFp1cmljaCwgU3dpdHplcmxhbmQiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiQVBMOyBjb21wdXRlciBwcm9ncmFtbWluZyBsYW5ndWFnZXM7IGRhdGEgc3RydWN0dXJlczsgZnVuY3Rpb25zOyBuZXN0ZWQgYXJyYXlzOyBwcmltaXRpdmU7IHByb2NlZHVyZSBvcmllbnRlZCBsYW5ndWFnZXM7IHJlY3Vyc2l2ZSBkYXRhIHN0cnVjdHVyZSIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7TW9yZWw6MTk3OTpHT1MsCiAgYXV0aG9yID0gICAgICAgIntcJ0V9LiBNb3JlbCBhbmQgQy4gUmVudm9pc2UiLAogIHRpdGxlID0gICAgICAgICJHbG9iYWwgT3B0aW1pemF0aW9uIGJ5IFN1cHByZXNzaW9uIG9mIFBhcnRpYWwgUmVkdW5kYW5jaWVzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIyIiwKICBudW1iZXIgPSAgICAgICAiMiIsCiAgcGFnZXMgPSAgICAgICAgIjk2LS0xMDMiLAogIG1vbnRoID0gICAgICAgIGZlYiwKICB5ZWFyID0gICAgICAgICAiMTk3OSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4QjA1IiwKICBNUm51bWJlciA9ICAgICAiODBiOjY4MDE2IiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9Db21waWxlci9vcHQuY29tcGlsZXIuYmliIiwKICBub3RlID0gICAgICAgICAiRGF0YSBGbG93IEFuYWx5c2lzIiwKICBhYnN0cmFjdCA9ICAgICAiVGhlIGVsaW1pbmF0aW9uIG9mIHJlZHVuZGFudCBjb21wdXRhdGlvbnMgYW5kIHRoZSBtb3Zpbmcgb2YgaW52YXJpYW50IGNvbXB1dGF0aW9ucyBvdXQgb2YgbG9vcHMgYXJlIG9mdGVuIGRvbmUgc2VwYXJhdGVseSwgd2l0aCBpbnZhcmlhbnRzIG1vdmVkIG91dHdhcmQgbG9vcCBieSBsb29wLiBJdCBpcyBwcm9wb3NlZCB0byBkbyBib3RoIGF0IG9uY2UgYW5kIHRvIG1vdmUgZWFjaCBleHByZXNzaW9uIGRpcmVjdGx5IHRvIHRoZSBlbnRyYW5jZSBvZiB0aGUgb3V0ZXJtb3N0IGxvb3AgaW4gd2hpY2ggaXQgaXMgaW52YXJpYW50LiBUaGlzIGlzIGRvbmUgYnkgc29sdmluZyBhIG1vcmUgZ2VuZXJhbCBwcm9ibGVtLCBpLmUuIHRoZSBlbGltaW5hdGlvbiBvZiBjb21wdXRhdGlvbnMgcGVyZm9ybWVkIHR3aWNlIG9uIGEgZ2l2ZW4gZXhlY3V0aW9uIHBhdGguIFN1Y2ggY29tcHV0YXRpb25zIGFyZSB0ZXJtZWQgcGFydGlhbGx5IHJlZHVuZGFudC4gTW9yZW92ZXIsIHRoZSBhbGdvcml0aG0gZG9lcyBub3QgcmVxdWlyZSBhbnkgZ3JhcGhpY2FsIGluZm9ybWF0aW9uIG9yIHJlc3RyaWN0aW9ucyBvbiB0aGUgc2hhcGUgb2YgdGhlIHByb2dyYW0gZ3JhcGguIFRlc3RpbmcgdGhpcyBhbGdvcml0aG0gaGFzIHNob3duIHRoYXQgaXRzIGV4ZWN1dGlvbiBjb3N0IGlzIG5lYXJseSBsaW5lYXIgd2l0aCB0aGUgc2l6ZSBvZiB0aGUgcHJvZ3JhbSwgYW5kIHRoYXQgaXQgbGVhZHMgdG8gYSBzbWFsbGVyIG9wdGltaXplciB0aGF0IHJlcXVpcmVzIGxlc3MgZXhlY3V0aW9uIHRpbWUuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQyNDAgKFByb2dyYW1taW5nIGFuZCBhbGdvcml0aG0gdGhlb3J5KTsgQzYxNTBDIChDb21waWxlcnMsIGludGVycHJldGVycyBhbmQgb3RoZXIgcHJvY2Vzc29ycykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIkNvbXBhZ25pZSBJbnRlcm5hdC4gcG91ciBsJ0luZm9ybWF0aXF1ZSwgSG9uZXl3ZWxsIEJ1bGwsIExvdXZlY2llbm5lcywgRnJhbmNlIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIHByb2dyYW1taW5nOyBleGVjdXRpb24gY29zdDsgZXhlY3V0aW9uIHRpbWU7IG9wdGltaXplcjsgcGFydGlhbCByZWR1bmRhbmNpZXM7IHByb2dyYW07IHByb2dyYW0gY29tcGlsZXJzOyBwcm9ncmFtbWluZyB0aGVvcnk7IHJlZHVuZGFudCBjb21wdXRhdGlvbnMiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0FuZGVyc29uOjE5Nzk6Q1BILAogIGF1dGhvciA9ICAgICAgICJNLiBSLiBBbmRlcnNvbiBhbmQgTS4gRy4gQW5kZXJzb24iLAogIHRpdGxlID0gICAgICAgICJDb21tZW50cyBvbiBQZXJmZWN0IEhhc2hpbmcgRnVuY3Rpb25zOiB7QX0gU2luZ2xlIFByb2JlIFJldHJpZXZpbmcgTWV0aG9kIGZvciBTdGF0aWMgU2V0cyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMiIsCiAgbnVtYmVyID0gICAgICAgIjIiLAogIHBhZ2VzID0gICAgICAgICIxMDQtLTEwNSIsCiAgbW9udGggPSAgICAgICAgZmViLAogIHllYXIgPSAgICAgICAgICIxOTc5IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgbm90ZSA9ICAgICAgICAgIkNvcnJlY3RzIGVycm9ycyBpbiBcY2l0ZXtTcHJ1Z25vbGk6MTk3NzpQSEZ9LiBTZWUgY29ycmlnZW5kdW0gXGNpdGV7QW5kZXJzb246MTk3OTpDQ1B9LiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTMwIChEYXRhIGhhbmRsaW5nIHRlY2huaXF1ZXMpIiwKICBjb3Jwc291cmNlID0gICAiRGVwdC4gb2YgQ29tcHV0ZXIgYW5kIENvbW11bmljYXRpb24gU2NpLiwgVW5pdi4gb2YgTWljaGlnYW4sIEFubiBBcmJvciwgTUksIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImFsZ29yaXRobTsgZGF0YSBoYW5kbGluZzsgcGVyZmVjdCBoYXNoaW5nIGZ1bmN0aW9uczsgc2luZ2xlIHByb2JlIHJldHJpZXZpbmcgbWV0aG9kOyBzdGF0aWMgc2V0cyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7Q2hlcml0b246MTk3OTpUUFIsCiAgYXV0aG9yID0gICAgICAgIkRhdmlkIFIuIENoZXJpdG9uIGFuZCBNaWNoYWVsIEEuIE1hbGNvbG0gYW5kIExhd3JlbmNlIFMuIE1lbGVuIGFuZCBHYXJ5IFIuIFNhZ2VyIiwKICB0aXRsZSA9ICAgICAgICAie1Rob3RofSwgYSBQb3J0YWJsZSBSZWFsLVRpbWUgT3BlcmF0aW5nIFN5c3RlbSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMiIsCiAgbnVtYmVyID0gICAgICAgIjIiLAogIHBhZ2VzID0gICAgICAgICIxMDUtLTExNSIsCiAgbW9udGggPSAgICAgICAgZmViLAogIHllYXIgPSAgICAgICAgICIxOTc5IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EYXRhYmFzZS9HcmFlZmUuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiVGhvdGggaXMgYSByZWFsLXRpbWUgb3BlcmF0aW5nIHN5c3RlbSB3aGljaCBpcyBkZXNpZ25lZCB0byBiZSBwb3J0YWJsZSBvdmVyIGEgbGFyZ2Ugc2V0IG9mIG1hY2hpbmVzLiBJdCBpcyBjdXJyZW50bHkgcnVubmluZyBvbiB0d28gbWluaWNvbXB1dGVycyB3aXRoIHF1aXRlIGRpZmZlcmVudCBhcmNoaXRlY3R1cmVzLiBCb3RoIHRoZSBzeXN0ZW0gYW5kIGFwcGxpY2F0aW9uIHByb2dyYW1zIHdoaWNoIHVzZSBpdCBhcmUgd3JpdHRlbiBpbiBhIGhpZ2gtbGV2ZWwgbGFuZ3VhZ2UuIEJlY2F1c2UgdGhlIHN5c3RlbSBpcyBpbXBsZW1lbnRlZCBieSB0aGUgc2FtZSBzb2Z0d2FyZSBvbiBkaWZmZXJlbnQgaGFyZHdhcmUsIGl0IGhhcyB0aGUgc2FtZSBpbnRlcmZhY2UgdG8gdXNlciBwcm9ncmFtcy4gSGVuY2UsIGFwcGxpY2F0aW9uIHByb2dyYW1zIHdoaWNoIHVzZSBUaG90aCBhcmUgaGlnaGx5IHBvcnRhYmxlLiBUaG90aCBlbmNvdXJhZ2VzIHN0cnVjdHVyaW5nIHByb2dyYW1zIGFzIG5ldHdvcmtzIG9mIGNvbW11bmljYXRpbmcgcHJvY2Vzc2VzIGJ5IHByb3ZpZGluZyBlZmZpY2llbnQgaW50ZXJwcm9jZXNzIGNvbW11bmljYXRpb24gcHJpbWl0aXZlcy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjE1MEogKE9wZXJhdGluZyBzeXN0ZW1zKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiRGVwdC4gb2YgQ29tcHV0ZXIgU2NpLiwgVW5pdi4gb2YgV2F0ZXJsb28sIFdhdGVybG9vLCBPbnQuLCBDYW5hZGEiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiQ0FDTSBzeW5jaHJvbml6YXRpb24gY29tbXVuaWNhdGlvbiByZWFsIHRpbWU7IGNvbXB1dGVyIG9wZXJhdGluZyBzeXN0ZW1zOyBtaW5pY29tcHV0ZXJzOyBvbmxpbmU7IG9ubGluZSBvcGVyYXRpb247IG9wZXJhdGluZyBzeXN0ZW07IHBvcnRhYmxlOyByZWFsIHRpbWU7IHNvZnR3YXJlIHBvcnRhYmlsaXR5OyBUaG90aCIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7UmVlZDoxOTc5OlNFUywKICBhdXRob3IgPSAgICAgICAiRGF2aWQgUC4gUmVlZCBhbmQgUmFqZW5kcmEgSy4gS2Fub2RpYSIsCiAgdGl0bGUgPSAgICAgICAgIlN5bmNocm9uaXphdGlvbiB3aXRoIEV2ZW50Y291bnRzIGFuZCBTZXF1ZW5jZXJzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIyIiwKICBudW1iZXIgPSAgICAgICAiMiIsCiAgcGFnZXMgPSAgICAgICAgIjExNS0tMTIzIiwKICBtb250aCA9ICAgICAgICBmZWIsCiAgeWVhciA9ICAgICAgICAgIjE5NzkiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0RhdGFiYXNlL1dpZWRlcmhvbGQuYmliOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L1BhcmFsbGVsL3Bhci5zeW5jaC5iaWIiLAogIGFic3RyYWN0ID0gICAgICJTeW5jaHJvbml6YXRpb24gb2YgY29uY3VycmVudCBwcm9jZXNzZXMgcmVxdWlyZXMgY29udHJvbGxpbmcgdGhlIHJlbGF0aXZlIG9yZGVyaW5nIG9mIGV2ZW50cyBpbiB0aGUgcHJvY2Vzc2VzLiBBIG5ldyBzeW5jaHJvbml6YXRpb24gbWVjaGFuaXNtIGlzIHByb3Bvc2VkLCB1c2luZyBhYnN0cmFjdCBvYmplY3RzIGNhbGxlZCBldmVudGNvdW50cyBhbmQgc2VxdWVuY2VycywgdGhhdCBhbGxvd3MgcHJvY2Vzc2VzIHRvIGNvbnRyb2wgdGhlIG9yZGVyaW5nIG9mIGV2ZW50cyBkaXJlY3RseSwgcmF0aGVyIHRoYW4gdXNpbmcgbXV0dWFsIGV4Y2x1c2lvbiB0byBwcm90ZWN0IG1hbmlwdWxhdGlvbiBvZiBzaGFyZWQgdmFyaWFibGVzIHRoYXQgY29udHJvbCBvcmRlcmluZyBvZiBldmVudHMuIERpcmVjdCBjb250cm9sIG9mIG9yZGVyaW5nIHNlZW1zIHRvIHNpbXBsaWZ5IGNvcnJlY3RuZXNzIGFyZ3VtZW50cyBhbmQgYWxzbyBzaW1wbGlmaWVzIGltcGxlbWVudGF0aW9uIGluIGRpc3RyaWJ1dGVkIHN5c3RlbXMuIFRoZSBtZWNoYW5pc20gaXMgZGVmaW5lZCBmb3JtYWxseSwgYW5kIHRoZW4gc2V2ZXJhbCBleGFtcGxlcyBvZiBpdHMgdXNlcyBhcmUgZ2l2ZW4uIFRoZSByZWxhdGlvbnNoaXAgb2YgdGhlIG1lY2hhbmlzbSB0byBwcm90ZWN0aW9uIG1lY2hhbmlzbXMgaW4gdGhlIHN5c3RlbSBpcyBleHBsYWluZWQ7IGluIHBhcnRpY3VsYXIsIGV2ZW50Y291bnRzIGFyZSBzaG93biB0byBiZSBhcHBsaWNhYmxlIHRvIHNpdHVhdGlvbnMgd2hlcmUgY29uZmluZW1lbnQgb2YgaW5mb3JtYXRpb24gbWF0dGVycy4gQW4gaW1wbGVtZW50YXRpb24gb2YgZXZlbnRjb3VudHMgYW5kIHNlcXVlbmNlcnMgaW4gYSBzeXN0ZW0gd2l0aCBzaGFyZWQgbWVtb3J5IGlzIGRlc2NyaWJlZC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGFubm90ZSA9ICAgICAgICJEYXRlZCwgYnV0IG5lZWRzIHRvIGJlIHJlZmVyZW5jZWQgZXZlcnkgbm93IGFuZCBhZ2Fpbi4iLAogIGNsYXNzY29kZXMgPSAgICJDNjE1MEogKE9wZXJhdGluZyBzeXN0ZW1zKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiTGFiLiBmb3IgQ29tcHV0ZXIgU2NpLiwgTUlULCBDYW1icmlkZ2UsIE1BLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgc3lzdGVtcyBwcm9ncmFtbWluZzsgY29uY3VycmVudCBwcm9jZXNzZXM7IGRpc3RyaWJ1dGVkIHN5c3RlbXM7IGV2ZW50Y291bnRzOyBvcGVyYXRpbmcgc3lzdGVtcyAoY29tcHV0ZXJzKTsgcHJvdGVjdGlvbjsgc2VxdWVuY2VzOyBzaGFyZWQgbWVtb3J5OyBzeW5jaHJvbml6YXRpb24iLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle01lbmRlbHNvbjoxOTc5Ok9TQSwKICBhdXRob3IgPSAgICAgICAiSGFpbSBNZW5kZWxzb24gYW5kIEpvc2VwaCBTLiBQbGlza2luIGFuZCBVcmkgWWVjaGlhbGkiLAogIHRpdGxlID0gICAgICAgICJPcHRpbWFsIFN0b3JhZ2UgQWxsb2NhdGlvbiBmb3IgU2VyaWFsIEZpbGVzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIyIiwKICBudW1iZXIgPSAgICAgICAiMiIsCiAgcGFnZXMgPSAgICAgICAgIjEyNC0tMTMwIiwKICBtb250aCA9ICAgICAgICBmZWIsCiAgeWVhciA9ICAgICAgICAgIjE5NzkiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2OEIxNSIsCiAgTVJudW1iZXIgPSAgICAgIjgwYjo2ODAzMiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJBIGNvbXB1dGVyIHN5c3RlbSB1c2VzIHNldmVyYWwgc2VyaWFsIGZpbGVzLiBUaGUgZmlsZXMgcmVzaWRlIG9uIGEgZGlyZWN0LWFjY2VzcyBzdG9yYWdlIGRldmljZSBpbiB3aGljaCBzdG9yYWdlIHNwYWNlIGlzIGxpbWl0ZWQuIFJlY29yZHMgYXJlIGFkZGVkIHRvIHRoZSBmaWxlcyBlaXRoZXIgYnkgam9icyBpbiBiYXRjaCBwcm9jZXNzaW5nIG1vZGUsIG9yIGJ5IG9uLWxpbmUgdHJhbnNhY3Rpb25zLiBFYWNoIHRyYW5zYWN0aW9uIChvciBqb2IpIGdlbmVyYXRlcyBhIGRlbWFuZCB2ZWN0b3Igd2hpY2ggZGVzaWduYXRlcyB0aGUgc3BhY2UgcmVxdWlyZWQgaW4gZWFjaCBmaWxlIGZvciByZWNvcmQgYWRkaXRpb24uIFdoZW5ldmVyIG9uZSBmaWxlIHJ1bnMgb3V0IG9mIHNwYWNlLCB0aGUgc3lzdGVtIG11c3QgYmUgcmVvcmdhbml6ZWQuIFRoaXMgcGFwZXIgY29uc2lkZXJzIHNldmVyYWwgY3JpdGVyaWEgZm9yIGJlc3QgYWxsb2NhdGluZyBzdG9yYWdlIHNwYWNlIHRvIHRoZSBmaWxlcy4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJEZXB0LiBvZiBTdGF0aXN0aWNzLCBUZWwgQXZpdiBVbml2LiwgVGVsIEF2aXYsIElzcmFlbCIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBvcGVyYXRpbmcgc3lzdGVtczsgb3B0aW1hbDsgc2VyaWFsIGZpbGVzOyBzdG9yYWdlIGFsbG9jYXRpb24iLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0F1c3Rpbmc6MTk3OTpDUlUsCiAgYXV0aG9yID0gICAgICAgIlJpY2hhcmQgSC4gQXVzdGluZyBhbmQgQnJ1Y2UgSC4gQmFybmVzIGFuZCBEZWxsYSBULiBCb25uZXR0ZSBhbmQgR2VyYWxkIEwuIEVuZ2VsIGFuZCBHb3Jkb24gU3Rva2VzIiwKICB0aXRsZSA9ICAgICAgICAiQ3VycmljdWx1bSAnNzg6IFJlY29tbWVuZGF0aW9ucyBmb3IgdGhlIFVuZGVyZ3JhZHVhdGUgUHJvZ3JhbSBpbiBDb21wdXRlciBTY2llbmNlIC0tLSB7QX0gUmVwb3J0IG9mIHRoZSB7QUNNfSBDdXJyaWN1bHVtIENvbW1pdHRlZSBvbiBDb21wdXRlciBTY2llbmNlIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIyIiwKICBudW1iZXIgPSAgICAgICAiMyIsCiAgcGFnZXMgPSAgICAgICAgIjE0Ny0tMTY2IiwKICBtb250aCA9ICAgICAgICBtYXIsCiAgeWVhciA9ICAgICAgICAgIjE5NzkiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EYXRhYmFzZS9XaWVkZXJob2xkLmJpYiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgYW5ub3RlID0gICAgICAgIkEgcmVwb3J0IG9mIHRoZSBBQ00gQ3VycmljdWx1bSBDb21taXR0ZWUgb24gQ29tcHV0ZXIgU2NpZW5jZS4gQ1MgNTogSW50cm9kdWN0aW9uIHRvIEZpbGUgUHJvY2Vzc2luZyAoMy0wLTMpIFByZXJlcXVpc2l0ZTogQ1MgMi4gVGhlIG9iamVjdGl2ZXMgb2YgdGhpcyBjb3Vyc2UgYXJlOiAoYSkgdG8gaW50cm9kdWNlIGNvbmNlcHRzIGFuZCB0ZWNobmlxdWVzIG9mIHN0cnVjdHVyaW5nIGRhdGEgb24gYnVsayBzdG9yYWdlIGRldmljZXM7ICgyKSB0byBwcm92aWRlIGV4cGVyaWVuY2UgaW4gdGhlIHVzZSBvZiBidWxrIHN0b3JhZ2UgZGV2aWNlczsgYW5kICgzKSB0byBwcm92aWRlIHRoZSBmb3VuZGF0aW9uIGZvciBhcHBsaWNhdGlvbnMgb2YgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBmaWxlIHByb2Nlc3NpbmcgdGVjaG5pcXVlcy4iLAogIGNsYXNzY29kZXMgPSAgICJDMDIyMCAoQ29tcHV0aW5nIGVkdWNhdGlvbiBhbmQgdHJhaW5pbmcpIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gb2YgTWFyeWxhbmQsIENvbGxlZ2UgUGFyaywgTUQsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIHNjaWVuY2U7IGNvbXB1dGVyIHNjaWVuY2UgZWR1Y2F0aW9uOyBjb3Vyc2VzOyBjdXJyaWN1bHVtOyBlZHVjYXRpb247IGVkdWNhdGlvbmFsIGNvdXJzZXM7IGVsZW1lbnRhcnkgbGV2ZWw7IGludGVybWVkaWF0ZSBsZXZlbDsgdW5kZXJncmFkdWF0ZSBwcm9ncmFtIiwKICB0cmVhdG1lbnQgPSAgICAiRyBHZW5lcmFsIFJldmlldzsgUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtFZGdhcjoxOTc5OkZNTiwKICBhdXRob3IgPSAgICAgICAiQWxiZXJ0IEQuIEVkZ2FyIGFuZCBTYW11ZWwgQy4gTGVlIiwKICB0aXRsZSA9ICAgICAgICAie0ZPQ1VTfSBtaWNyb2NvbXB1dGVyIG51bWJlciBzeXN0ZW0iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjIiLAogIG51bWJlciA9ICAgICAgICIzIiwKICBwYWdlcyA9ICAgICAgICAiMTY2LS0xNzciLAogIG1vbnRoID0gICAgICAgIG1hciwKICB5ZWFyID0gICAgICAgICAiMTk3OSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJGT0NVUyBpcyBhIG51bWJlciBzeXN0ZW0gYW5kIHN1cHBvcnRpbmcgY29tcHV0YXRpb25hbCBhbGdvcml0aG1zIGVzcGVjaWFsbHkgdXNlZnVsIGZvciBtaWNyb2NvbXB1dGVyIGNvbnRyb2wgYW5kIG90aGVyIHNpZ25hbCBwcm9jZXNzaW5nIGFwcGxpY2F0aW9ucy4gRk9DVVMgaGFzIHRoZSB3aWRlLXJhbmdpbmcgY2hhcmFjdGVyIG9mIGZsb2F0aW5nLXBvaW50IG51bWJlcnMgd2l0aCBhIHVuaWZvcm1pdHkgb2Ygc3RhdGUgZGlzdHJpYnV0aW9ucyB0aGF0IGdpdmUgRk9DVVMgYmV0dGVyIHRoYW4gYSB0d29mb2xkIGFjY3VyYWN5IGFkdmFudGFnZSBvdmVyIGFuIGVxdWFsIHdvcmQgbGVuZ3RoIGZsb2F0aW5nLXBvaW50IHN5c3RlbS4gRk9DVVMgY29tcHV0YXRpb25zIGFyZSB0eXBpY2FsbHkgZml2ZSB0aW1lcyBmYXN0ZXIgdGhhbiBzaW5nbGUgcHJlY2lzaW9uIGZpeGVkLXBvaW50IG9yIGludGVnZXIgYXJpdGhtZXRpYyBmb3IgYSBtaXh0dXJlIG9mIG9wZXJhdGlvbnMsIGNvbXBhcmFibGUgaW4gc3BlZWQgd2l0aCBoYXJkd2FyZSBhcml0aG1ldGljIGZvciBtYW55IGFwcGxpY2F0aW9ucy4gQWxnb3JpdGhtcyBmb3IgOC1iaXQgYW5kIDE2LWJpdCBpbXBsZW1lbnRhdGlvbnMgb2YgRk9DVVMgYXJlIGluY2x1ZGVkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM1MjMwIChEaWdpdGFsIGFyaXRobWV0aWMgbWV0aG9kcyk7IEM1MjUwIChNaWNyb2NvbXB1dGVyIHRlY2huaXF1ZXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBvZiBPa2xhaG9tYSwgTm9ybWFuLCBPSywgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFsZ29yaXRobXM7IGFyaXRobWV0aWM7IGNvbXB1dGF0aW9uYWw7IGNvbXB1dGVycywgbWljcm9wcm9jZXNzb3I7IGRpZ2l0YWwgYXJpdGhtZXRpYzsgZmxvYXRpbmcgcG9pbnQgbnVtYmVyczsgRk9DVVM7IG1pY3JvY29tcHV0ZXI7IG1pY3JvY29tcHV0ZXIgY29udHJvbDsgbWljcm9jb21wdXRlcnM7IG51bWJlciBzeXN0ZW07IHNpZ25hbCBwcm9jZXNzaW5nIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtTbGFnbGU6MTk3OTpFU0EsCiAgYXV0aG9yID0gICAgICAgIkphbWVzIFNsYWdsZSIsCiAgdGl0bGUgPSAgICAgICAgIkV4cGVyaW1lbnRzIHdpdGggU29tZSBBbGdvcml0aG1zIHRoYXQgRmluZCBDZW50cmFsIFNvbHV0aW9ucyBmb3IgUGF0dGVybiBDbGFzc2lmaWNhdGlvbiIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMiIsCiAgbnVtYmVyID0gICAgICAgIjMiLAogIHBhZ2VzID0gICAgICAgICIxNzgtLTE4MyIsCiAgbW9udGggPSAgICAgICAgbWFyLAogIHllYXIgPSAgICAgICAgICIxOTc5IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkluIHR3by1jbGFzcyBwYXR0ZXJuIHJlY29nbml0aW9uLCBpdCBpcyBhIHN0YW5kYXJkIHRlY2huaXF1ZSB0byBoYXZlIGFuIGFsZ29yaXRobSBmaW5kaW5nIGh5cGVycGxhbmVzIHdoaWNoIHNlcGFyYXRlcyB0aGUgdHdvIGNsYXNzZXMgaW4gYSBsaW5lYXJseSBzZXBhcmFibGUgdHJhaW5pbmcgc2V0LiBUaGUgdHJhZGl0aW9uYWwgbWV0aG9kcyBmaW5kIGEgaHlwZXJwbGFuZSB3aGljaCBzZXBhcmF0ZXMgYWxsIHBvaW50cyBpbiBvbmUgY2xhc3MgZnJvbSBhbGwgcG9pbnRzIGluIHRoZSBvdGhlciwgYnV0IHN1Y2ggYSBoeXBlcnBsYW5lIGlzIG5vdCBuZWNlc3NhcmlseSBjZW50ZXJlZCBpbiB0aGUgZW1wdHkgc3BhY2UgYmV0d2VlbiB0aGUgdHdvIGNsYXNzZXMuIFNpbmNlIGEgY2VudHJhbCBoeXBlcnBsYW5lIGRvZXMgbm90IGZhdm9yIG9uZSBjbGFzcyBvciB0aGUgb3RoZXIsIGl0IHNob3VsZCBoYXZlIGEgbG93ZXIgZXJyb3IgcmF0ZSBpbiBjbGFzc2lmeWluZyBuZXcgcG9pbnRzIGFuZCBpcyB0aGVyZWZvcmUgYmV0dGVyIHRoYW4gYSBub25jZW50cmFsIGh5cGVycGxhbmUuIFNpeCBhbGdvcml0aG1zIGZvciBmaW5kaW5nIGNlbnRyYWwgaHlwZXJwbGFuZXMgYXJlIHRlc3RlZCBvbiB0aHJlZSBkYXRhIHNldHMuIEFsdGhvdWdoIGZyZXF1ZW50bHkgdXNlZCBpbiBwcmFjdGljZSwgdGhlIG1vZGlmaWVkIHJlbGF4YXRpb24gYWxnb3JpdGhtIGlzIHZlcnkgcG9vci4gVGhyZWUgYWxnb3JpdGhtcyB3aGljaCBhcmUgZGVmaW5lZCBpbiB0aGUgcGFwZXIgYXJlIGZvdW5kIHRvIGJlIHF1aXRlIGdvb2QuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQjYxNDBDIChPcHRpY2FsIGluZm9ybWF0aW9uLCBpbWFnZSBhbmQgdmlkZW8gc2lnbmFsIHByb2Nlc3NpbmcpOyBDMTI1MCAoUGF0dGVybiByZWNvZ25pdGlvbikiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIk5hdmFsIFJlcy4gTGFiLiwgV2FzaGluZ3RvbiwgREMsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhbGdvcml0aG1zOyBjZW50cmFsIHNvbHV0aW9uczsgcGF0dGVybiBjbGFzc2lmaWNhdGlvbjsgcGF0dGVybiByZWNvZ25pdGlvbjsgcGF0dGVybiByZWNvZ25pdGlvbiBzeXN0ZW1zIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtEZWxpeWFubmk6MTk3OTpMU04sCiAgYXV0aG9yID0gICAgICAgIkFtYXJ5bGxpcyBEZWxpeWFubmkgYW5kIFJvYmVydCBBLiBLb3dhbHNraSIsCiAgdGl0bGUgPSAgICAgICAgIkxvZ2ljIGFuZCBTZW1hbnRpYyBOZXR3b3JrcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMiIsCiAgbnVtYmVyID0gICAgICAgIjMiLAogIHBhZ2VzID0gICAgICAgICIxODQtLTE5MiIsCiAgbW9udGggPSAgICAgICAgbWFyLAogIHllYXIgPSAgICAgICAgICIxOTc5IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9BaS9ub25tb25vLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIkFuIGV4dGVuZGVkIGZvcm0gb2Ygc2VtYW50aWMgbmV0d29yayBpcyBkZWZpbmVkLCB3aGljaCBjYW4gYmUgcmVnYXJkZWQgYXMgYSBzeW50YWN0aWMgdmFyaWFudCBvZiB0aGUgY2xhdXNhbCBmb3JtIG9mIGxvZ2ljLiBCeSB2aXJ0dWUgb2YgaXRzIHJlbGF0aW9uc2hpcCB3aXRoIGxvZ2ljLHRoZSBleHRlbmRlZCBzZW1hbnRpYyBuZXR3b3JrIGlzIHByb3ZpZGVkIHdpdGggYSBwcmVjaXNlIHNlbWFudGljcywgaW5mZXJlbmNlIHJ1bGVzLCBhbmQgYSBwcm9jZWR1cmFsIGludGVycHJldGF0aW9uLiBPbiB0aGUgb3RoZXIgaGFuZCwgYnkgcmVnYXJkaW5nIHNlbWFudGljIG5ldHdvcmtzIGFzIGFuIGFic3RyYWN0IGRhdGEgc3RydWN0dXJlIGZvciB0aGUgcmVwcmVzZW50YXRpb24gb2YgY2xhdXNlcywgd2UgcHJvdmlkZSBhIHRoZW9yZW0tcHJvdmVyIHdpdGggYSBwb3RlbnRpYWxseSB1c2VmdWwgaW5kZXhpbmcgc2NoZW1lIGFuZCBwYXRoLWZvbGxvd2luZyBzdHJhdGVneSBmb3IgZ3VpZGluZyB0aGUgc2VhcmNoIGZvciBhIHByb29mLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMxMjMwIChBcnRpZmljaWFsIGludGVsbGlnZW5jZSk7IEM0MjEwIChGb3JtYWwgbG9naWMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBvZiBBdGhlbnMsIEF0aGVucywgR3JlZWNlIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFic3RyYWN0IGRhdGE7IGNvbXB1dGVyIG1ldGF0aGVvcnk7IGZvcm1hbCBsb2dpYzsgaW5mZXJlbmNlIHJ1bGVzOyBsb2dpYzsgc2VtYW50aWMgbmV0d29ya3M7IHN0cnVjdHVyZTsgdGhlb3JlbSBwcm92ZXI7IHRoZW9yZW0gcHJvdmluZyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7TW90emtpbjoxOTc5OlVOTSwKICBhdXRob3IgPSAgICAgICAiRGFsaWEgTW90emtpbiIsCiAgdGl0bGUgPSAgICAgICAgIlVzZSBvZiBOb3JtYWwgTXVsdGlwbGljYXRpb24gVGFibGVzIGZvciBJbmZvcm1hdGlvbiBTdG9yYWdlIGFuZCBSZXRyaWV2YWwiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjIiLAogIG51bWJlciA9ICAgICAgICIzIiwKICBwYWdlcyA9ICAgICAgICAiMTkzLS0yMDciLAogIG1vbnRoID0gICAgICAgIG1hciwKICB5ZWFyID0gICAgICAgICAiMTk3OSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJBIG1ldGhvZCBpcyBkZXNjcmliZWQgZm9yIHRoZSBvcmdhbml6YXRpb24gYW5kIHJldHJpZXZhbCBvZiBhdHRyaWJ1dGUgYmFzZWQgaW5mb3JtYXRpb24gc3lzdGVtcywgdXNpbmcgdGhlIG5vcm1hbCBtdWx0aXBsaWNhdGlvbiB0YWJsZSBhcyBhIGRpcmVjdG9yeSBmb3IgdGhlIGluZm9ybWF0aW9uIHN5c3RlbS4gQWxnb3JpdGhtcyBmb3IgdGhlIG9yZ2FuaXphdGlvbiBhbmQgcmV0cmlldmFsIG9mIGluZm9ybWF0aW9uIGFyZSBkZXNjcmliZWQuIFRoaXMgbWV0aG9kIGlzIHBhcnRpY3VsYXJseSBzdWl0YWJsZSBmb3IgcXVlcmllcyByZXF1ZXN0aW5nIGEgZ3JvdXAgb2YgaW5mb3JtYXRpb24gaXRlbXMsIGFsbCBvZiB3aGljaCBwb3NzZXNzIGEgcGFydGljdWxhciBzZXQgb2YgYXR0cmlidXRlcyAoYW5kIHBvc3NpYmx5IHNvbWUgb3RoZXIgYXR0cmlidXRlcyBhcyB3ZWxsKS4gU2V2ZXJhbCBleGFtcGxlcyBhcmUgZ2l2ZW47IHRoZSByZXN1bHRzIHdpdGggcmVzcGVjdCB0byB0aGUgbnVtYmVyIG9mIGRpc2sgYWNjZXNzZXMgYW5kIGRpc2sgc3BhY2UgYXJlIGNvbXBhcmVkIHRvIG90aGVyIGNvbW1vbiBhcHByb2FjaGVzLiBBbGdvcml0aG1zIGV2YWx1YXRpbmcgdGhlIGFwcHJvcHJpYXRlbmVzcyBvZiB0aGUgYWJvdmUgYXBwcm9hY2ggdG8gYSBnaXZlbiBpbmZvcm1hdGlvbiBzeXN0ZW0gYXJlIGRlc2NyaWJlZC4gRm9yIGEgY2VydGFpbiBjbGFzcyBvZiBpbmZvcm1hdGlvbiBzeXN0ZW1zLCB0aGUgbm9ybWFsIG11bHRpcGxpY2F0aW9uIHRhYmxlIG1ldGhvZCB5aWVsZHMgZmFyIG1vcmUgcmFwaWQgcmV0cmlldmFsIHdpdGggYSBtb3JlIGVjb25vbWljYWwgc3BhY2UgcmVxdWlyZW1lbnQgdGhhbiBjb252ZW50aW9uYWwgc3lzdGVtcy4gTW9yZW92ZXIgdGhpcyBtZXRob2QgaW5jb3Jwb3JhdGVzIGFuIGltcHJvdmVkIG1vZGlmaWNhdGlvbiBvZiB0aGUgaW52ZXJ0ZWQgZmlsZSB0ZWNobmlxdWUuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzOyA5MDEiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBvZiBIYWlmYSwgSGFpZmEsIElzcmFlbCIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhdHRyaWJ1dGUgYmFzZWQgaW5mb3JtYXRpb24gc3lzdGVtczsgZGlyZWN0b3J5OyBkaXNrIGFjY2Vzc2VzOyBkaXNrIHNwYWNlOyBmaWxlIG9yZ2FuaXNhdGlvbjsgaW5mb3JtYXRpb24gcmV0cmlldmFsOyBpbmZvcm1hdGlvbiByZXRyaWV2YWwgc3lzdGVtczsgaW5mb3JtYXRpb24gc3RvcmFnZTsgaW52ZXJ0ZWQgZmlsZTsgbm9ybWFsIG11bHRpcGxpY2F0aW9uIHRhYmxlczsgcmV0cmlldmFsOyBzdG9yYWdlIGFsbG9jYXRpb24iLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle01jTWFzdGVyOjE5Nzk6Q0FBLAogIGF1dGhvciA9ICAgICAgICJDLiBMLiBNY01hc3RlciIsCiAgdGl0bGUgPSAgICAgICAgIkNvcnJpZ2VuZHVtOiB7YGBBbiBBbmFseXNpcyBvZiBBbGdvcml0aG1zIGZvciB0aGUgRHV0Y2ggTmF0aW9uYWwgRmxhZyBQcm9ibGVtJyd9IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIyIiwKICBudW1iZXIgPSAgICAgICAiMyIsCiAgcGFnZXMgPSAgICAgICAgIjIwNy0tMjA3IiwKICBtb250aCA9ICAgICAgICBtYXIsCiAgeWVhciA9ICAgICAgICAgIjE5NzkiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJTYXQgSmFuIDE4IDE1OjQyOjUzIDE5OTciLAogIG5vdGUgPSAgICAgICAgICJTZWUgXGNpdGV7TWNNYXN0ZXI6MTk3ODpBQUR9LiIsCn0KCkBBcnRpY2xle0xlc2s6MTk3OTpEVFAsCiAgYXV0aG9yID0gICAgICAgIkFydGh1ciBNLiBMZXNrIiwKICB0aXRsZSA9ICAgICAgICAiRGV0ZWN0aW9uIG9mIFRocmVlLURpbWVuc2lvbmFsIFBhdHRlcm5zIG9mIEF0b21zIGluIENoZW1pY2FsIFN0cnVjdHVyZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjIiLAogIG51bWJlciA9ICAgICAgICI0IiwKICBwYWdlcyA9ICAgICAgICAiMjE5LS0yMjQiLAogIG1vbnRoID0gICAgICAgIGFwciwKICB5ZWFyID0gICAgICAgICAiMTk3OSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJBbiBhbGdvcml0aG0gZm9yIGRldGVjdGluZyBvY2N1cnJlbmNlcyBvZiBhIHRocmVlLWRpbWVuc2lvbmFsIHBhdHRlcm4gb2Ygb2JqZWN0cyB3aXRoaW4gYSBsYXJnZXIgc3RydWN0dXJlIGlzIHByZXNlbnRlZC4gVGhlIHNlYXJjaCB0ZWNobmlxdWUgcHJlc2VudGVkIHVzZWQgdGhlIGdlb21ldHJpYyBzdHJ1Y3R1cmUgb2YgdGhlIHBhdHRlcm4gdG8gZGVmaW5lIGNoYXJhY3RlcmlzdGljcyBkZW1hbmRlZCBvZiBjYW5kaWRhdGVzIGZvciBtYXRjaGluZy4gVGhpcyBpcyB1c2VmdWwgaW4gY2FzZXMgd2hlcmUgdGhlIHByb3BlcnRpZXMgb2YgZWFjaCBhdG9tLCBjb25zaWRlcmVkIGluZGl2aWR1YWxseSwgZG8gbm90IGFkZXF1YXRlbHkgbGltaXQgdGhlIG51bWJlciBvZiBzZXRzIG9mIHBvc3NpYmxlIG1hdGNoaW5ncy4gU2V2ZXJhbCBhcHBsaWNhdGlvbnMgb2YgdGhpcyB0ZWNobmlxdWUgaW4gdGhlIGZpZWxkIG9mIGNoZW1pc3RyeSBhcmU6ICgxKSBpbiBwaGFybWFjb2xvZ3k6IFNlYXJjaGluZyBmb3IgYSBjb21tb24gY29uc3RlbGxhdGlvbiBvZiBhdG9tcyBpbiBtb2xlY3VsZXMgcG9zc2Vzc2luZyBzaW1pbGFyIGJpb2xvZ2ljYWwgYWN0aXZpdGllczsgKDIpIGluIFgtcmF5IGNyeXN0YWxsb2dyYXBoeTogZml0dGluZyBhIHN0cnVjdHVyZSBvciBhIHN0cnVjdHVyYWwgZnJhZ21lbnQgdG8gYSBzZXQgb2YgcGVha3MgaW4gdGhlIGVsZWN0cm9uLWRlbnNpdHkgZGlzdHJpYnV0aW9uIG9mIGEgRm91cmllciBtYXA7ICgzKSBpbiBjaGVtaWNhbCBkb2N1bWVudGF0aW9uOiByZXRyaWV2aW5nIGZyb20gYSBmaWxlIHRoZSBzdHJ1Y3R1cmVzIGNvbnRhaW5pbmcgc3BlY2lmaWVkIHN1YnN0cnVjdHVyZXMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzczMjAgKFBoeXNpY3MgYW5kIGNoZW1pc3RyeSBjb21wdXRpbmcpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI0NjI7IDQ4MjsgNTAxOyA3MjM7IDgwNDsgOTAxIiwKICBjb3Jwc291cmNlID0gICAiRmFpcmxlaWdoIERpY2tpbnNvbiBVbml2LiwgVGVhbmVjaywgTkosIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhdG9tczsgY2hlbWljYWwgZG9jdW1lbnRhdGlvbjsgY2hlbWljYWwgc3RydWN0dXJlczsgY2hlbWlzdHJ5IGNvbXB1dGluZzsgY3J5c3RhbGxvZ3JhcGh5OyBjcnlzdGFsbG9ncmFwaHkgLS0tIFgtUmF5IEFuYWx5c2lzOyBkcnVnIHByb2R1Y3RzOyBpbmZvcm1hdGlvbiBzY2llbmNlIC0tLSBJbmZvcm1hdGlvbiBSZXRyaWV2YWw7IHBhdHRlcm4gcmVjb2duaXRpb247IHBhdHRlcm4gcmVjb2duaXRpb24gc3lzdGVtczsgcGhhcm1hY29sb2d5OyBzZWFyY2g7IHRocmVlIGRpbWVuc2lvbmFsOyBYLXJheSIsCiAgdHJlYXRtZW50ID0gICAgIkEgQXBwbGljYXRpb24iLAp9CgpAQXJ0aWNsZXtDYWxlOjE5Nzk6UFBQLAogIGF1dGhvciA9ICAgICAgICJFLiBHLiBDYWxlIGFuZCBMLiBMLiBHcmVtaWxsaW9uIGFuZCBKLiBMLiBNY0tlbm5leSIsCiAgdGl0bGUgPSAgICAgICAgIlByaWNlXHNsYXNoIFBlcmZvcm1hbmNlIFBhdHRlcm5zIG9mIHtVLlMufSBDb21wdXRlciBTeXN0ZW1zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIyIiwKICBudW1iZXIgPSAgICAgICAiNCIsCiAgcGFnZXMgPSAgICAgICAgIjIyNS0tMjMzIiwKICBtb250aCA9ICAgICAgICBhcHIsCiAgeWVhciA9ICAgICAgICAgIjE5NzkiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiRWNvbm9tZXRyaWMgbW9kZWxzIG9mIHRoZSBVLiBTLiBjb21wdXRlciBtYXJrZXQgaGF2ZSBiZWVuIGRldmVsb3BlZCB0byBzdHVkeSB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHN5c3RlbSBwcmljZSBhbmQgaGFyZHdhcmUgcGVyZm9ybWFuY2UuIFNpbmdsZSBtZWFzdXJlcyBvZiBwcmljZS1wZXJmb3JtYW5jZSBzdWNoIGFzIGBgR3Jvc2NoJ3MgTGF3JycgYXJlIHNob3duIHRvIGJlIHNvIG92ZXJzaW1wbGlmaWVkIGFzIHRvIGJlIG1lYW5pbmdsZXNzLiBNdWx0aXBsZS1yZWdyZXNzaW9uIG1vZGVscyBwcmVkaWN0aW5nIHN5c3RlbSBjb3N0IGFzIGEgZnVuY3Rpb24gb2Ygc2V2ZXJhbCBoYXJkd2FyZSBjaGFyYWN0ZXJpc3RpY3MgZG8sIGhvd2V2ZXIsIHJldmVhbCBhIG1hcmtldCBkaWNob3RvbXkuIE9uIG9uZSBoYW5kIHRoZXJlIGV4aXN0cyBhIHN0YWJsZSwgcHJpY2UgcHJlZGljdGFibGUgbWFya2V0IGZvciBsYXJnZXIsIGdlbmVyYWwgcHVycG9zZSBjb21wdXRlciBzeXN0ZW1zLiBUaGUgb3RoZXIgbWFya2V0IGlzIHRoZSBkZXZlbG9waW5nIG9uZSBmb3Igc21hbGwgYnVzaW5lc3MgY29tcHV0ZXIgc3lzdGVtcywgYSBtYXJrZXQgd2hpY2ggaXMgcmVsYXRpdmVseSB1bnN0YWJsZSB3aXRoIGxvdyBwcmljZSBwcmVkaWN0YWJpbGl0eS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDMDIzMCAoRWNvbm9taWMsIHNvY2lhbCBhbmQgcG9saXRpY2FsIGFzcGVjdHMgb2YgY29tcHV0aW5nKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIyIiwKICBjb3Jwc291cmNlID0gICAiSGFydmFyZCBVbml2LiwgQm9zdG9uLCBNQSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIG1hcmtldDsgZGlnaXRhbCBjb21wdXRlcnM7IGhhcmR3YXJlIHBlcmZvcm1hbmNlOyBwcmljZSBwcmVkaWN0YWJpbGl0eTsgcHJpY2UvcGVyZm9ybWFuY2U7IHN5c3RlbSBwcmljZTsgVVMiLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBzeXN0ZW1zLCBkaWdpdGFsIiwKICB0cmVhdG1lbnQgPSAgICAiRSBFY29ub21pYyIsCn0KCkBBcnRpY2xle0J1Y2NpOjE5Nzk6TURELAogIGF1dGhvciA9ICAgICAgICJHaWFjb21vIEJ1Y2NpIGFuZCBEb25hbGQgTi4gU3RyZWV0ZXIiLAogIHRpdGxlID0gICAgICAgICJNZXRob2RvbG9neSBmb3IgdGhlIERlc2lnbiBvZiBEaXN0cmlidXRlZCBJbmZvcm1hdGlvbiBTeXN0ZW1zIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIyIiwKICBudW1iZXIgPSAgICAgICAiNCIsCiAgcGFnZXMgPSAgICAgICAgIjIzMy0tMjQ1IiwKICBtb250aCA9ICAgICAgICBhcHIsCiAgeWVhciA9ICAgICAgICAgIjE5NzkiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiQSBtYWNybyBtb2RlbCBvZiBhIGRpc3RyaWJ1dGVkIGluZm9ybWF0aW9uIHN5c3RlbSBpcyBwcmVzZW50ZWQuIFRoZSBtb2RlbCBkZXNjcmliZXMgdGhlIG1ham9yIGNvc3RzIG9mIHVzaW5nIGFuIGluZm9ybWF0aW9uIHN5c3RlbSBmcm9tIHRoZSBwZXJzcGVjdGl2ZSBvZiB0aGUgZW5kLXVzZXIuIFRoZSBtb2RlbCBpcyBpbnRlbmRlZCB0byBwcm92aWRlIGd1aWRhbmNlIHRvIHRoZSBzeXN0ZW0gZGVzaWduZXIgYnkgbWFraW5nIGV2aWRlbnQgdGhlIGVmZmVjdCBvZiB2YXJpb3VzIGRlc2lnbiBhbmQgb3BlcmF0aW5nIHBhcmFtZXRlcnMgb24gb3ZlcmFsbCBjb3N0IHBlciB0cmFuc2FjdGlvbi4gVGhlIHRlY2huaXF1ZSBpcyBpbGx1c3RyYXRlZCBieSBhcHBsaWNhdGlvbiB0byB0aGUgZGVzaWduIG9mIGFuIGludGVyYWN0aXZlIHRyYW5zYWN0aW9uIHByb2Nlc3Npbmcgc3lzdGVtLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTEwIChTeXN0ZW1zIGFuYWx5c2lzIGFuZCBwcm9ncmFtbWluZykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMiIsCiAgY29ycHNvdXJjZSA9ICAgIklCTSBUaG9tYXMgSi4gV2F0c29uIFJlcy4gQ2VudGVyLCBZb3JrdG93biBIZWlnaHRzLCBOWSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIHN5c3RlbXMsIGRpZ2l0YWw7IGNvc3RzOyBkZXNpZ247IGRpc3RyaWJ1dGVkIGluZm9ybWF0aW9uIHN5c3RlbXM7IGRpc3RyaWJ1dGVkIHByb2Nlc3Npbmc7IG1hY3JvOyBtZXRob2RvbG9neTsgbW9kZWw7IHN5c3RlbXMgYW5hbHlzaXMiLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0hhbnNvbjoxOTc5Ok1QVSwKICBhdXRob3IgPSAgICAgICAiUmljaGFyZCBKLiBIYW5zb24gYW5kIEpvaG4gQS4gV2lzbmlld3NraSIsCiAgdGl0bGUgPSAgICAgICAgIkEgTWF0aGVtYXRpY2FsIFByb2dyYW1taW5nIFVwZGF0aW5nIE1ldGhvZCBVc2luZyBNb2RpZmllZCB7R2l2ZW5zfSBUcmFuc2Zvcm1hdGlvbnMgYW5kIEFwcGxpZWQgdG8ge0xQfSBQcm9ibGVtcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMiIsCiAgbnVtYmVyID0gICAgICAgIjQiLAogIHBhZ2VzID0gICAgICAgICIyNDUtLTI1MSIsCiAgbW9udGggPSAgICAgICAgYXByLAogIHllYXIgPSAgICAgICAgICIxOTc5IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiOTBDMDUgKDY1RjM1KSIsCiAgTVJudW1iZXIgPSAgICAgIjgwYzo5MDA5NiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJBbiBlZmZpY2llbnQgYW5kIG51bWVyaWNhbGx5IHN0YWJsZSBtZXRob2QgaXMgcHJlc2VudGVkIGZvciB0aGUgcHJvYmxlbSBvZiB1cGRhdGluZyBhbiBvcnRob2dvbmFsIGRlY29tcG9zaXRpb24gb2YgYSBtYXRyaXggb2YgY29sdW1uIChvciByb3cpIHZlY3RvcnMuIFRoZSBmdW5kYW1lbnRhbCBpZGVhIGlzIHRvIGFkZCBhIGNvbHVtbiAob3Igcm93KSBhbmFsb2dvdXMgdG8gYWRkaW5nIGFuIGFkZGl0aW9uYWwgcm93IG9mIGRhdGEgaW4gbGluZWFyIGxlYXN0IHNxdWFyZXMgcHJvYmxlbS4gQSBjb2x1bW4gKG9yIHJvdykgaXMgZHJvcHBlZCBieSBhIGZvcm1hbCBzY2FsaW5nIHdpdGggdGhlIGltYWdpbmFyeSB1bml0LCBmb2xsb3dlZCBieSBsZWFzdCBzcXVhcmVzIGFkZGl0aW9uIG9mIHRoZSBjb2x1bW4gKG9yIHJvdykuIFRoZSBlbGltaW5hdGlvbiBwcm9jZXNzIGZvciB0aGUgcHJvY2VkdXJlIGlzIHN1Y2Nlc3NpdmUgYXBwbGljYXRpb24gb2YgdGhlIEdpdmVucyB0cmFuc2Zvcm1hdGlvbiBpbiBtb2RpZmllZCAobW9yZSBlZmZpY2llbnQpIGZvcm0uIFRoZXNlIGlkZWFzIGFyZSBpbGx1c3RyYXRlZCB3aXRoIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSByZXZpc2VkIHNpbXBsZXggbWV0aG9kLiBUaGUgYWxnb3JpdGhtIGlzIGEgZ2VuZXJhbCBwdXJwb3NlIG9uZSB0aGF0IGRvZXMgbm90IGFjY291bnQgZm9yIGFueSBwYXJ0aWN1bGFyIHN0cnVjdHVyZSBvciBzcGFyc2l0eSBpbiB0aGUgZXF1YXRpb25zLiBTb21lIHN1Z2dlc3RlZCBjb21wdXRhdGlvbmFsIHRlc3RzIGZvciBkZXRlcm1pbmluZyBzaWducyBvZiB2YXJpb3VzIGNvbnRyb2xsaW5nIHBhcmFtZXRlcnMgaW4gdGhlIHJldmlzZWQgc2ltcGxleCBhbGdvcml0aG0gYXJlIG1lbnRpb25lZC4gQSBzaW1wbGUgbWVhbnMgb2YgY29uc3RydWN0aW5nIHRlc3QgY2FzZXMgYW5kIHNvbWUgc2FtcGxlIGNvbXB1dGluZyB0aW1lcyBhcmUgcHJlc2VudGVkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMxMTgwIChPcHRpbWlzYXRpb24gdGVjaG5pcXVlcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlNhbmRpYSBMYWJzLiwgQWxidXF1ZXJxdWUsIE5NLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAibGluZWFyIHByb2dyYW1taW5nOyBtYXRoZW1hdGljYWwgcHJvZ3JhbW1pbmc7IG1hdGhlbWF0aWNhbCBwcm9ncmFtbWluZywgbGluZWFyOyBtb2RpZmllZCBHaXZlbnM7IHJldmlzZWQgc2ltcGxleDsgdHJhbnNmb3JtYXRpb25zOyB1cGRhdGluZyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7QnJlbGF6OjE5Nzk6Tk1DLAogIGF1dGhvciA9ICAgICAgICJEYW5pZWwgQnJ7XCdlfWxheiIsCiAgdGl0bGUgPSAgICAgICAgIk5ldyBNZXRob2RzIHRvIENvbG9yIHRoZSBWZXJ0aWNlcyBvZiBhIEdyYXBoIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIyIiwKICBudW1iZXIgPSAgICAgICAiNCIsCiAgcGFnZXMgPSAgICAgICAgIjI1MS0tMjU2IiwKICBtb250aCA9ICAgICAgICBhcHIsCiAgeWVhciA9ICAgICAgICAgIjE5NzkiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI5MEIzNSIsCiAgTVJudW1iZXIgPSAgICAgIjgwYzo5MDA4MCIsCiAgbXJyZXZpZXdlciA9ICAgIkcuIEJlcm1hbiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvVGhlb3J5L2NsaXF1ZS5jb2xvci5iaWIiLAogIGFic3RyYWN0ID0gICAgICJFZmZpY2llbnQgbmV3IGhldXJpc3RpYyBtZXRob2RzIHRvIGNvbG9yIHRoZSB2ZXJ0aWNlcyBvZiBhIGdyYXBoIGFyZSBkZXNjcmliZWQgd2hpY2ggcmVseSB1cG9uIHRoZSBjb21wYXJpc29uIG9mIHRoZSBkZWdyZWVzIGFuZCBzdHJ1Y3R1cmUgb2YgYSBncmFwaC4gQSBtZXRob2QgaXMgZGV2ZWxvcGVkIHdoaWNoIGlzIGV4YWN0IGZvciBiaXBhcnRpdGUgZ3JhcGhzIGFuZCBpcyBhbiBpbXBvcnRhbnQgcGFydCBvZiBoZXVyaXN0aWMgcHJvY2VkdXJlcyB0byBmaW5kIG1heGltYWwgY2xpcXVlcyBpbiBnZW5lcmFsIGdyYXBocy4gRmluYWxseSBhbiBleGFjdCBtZXRob2QgaXMgZ2l2ZW4gd2hpY2ggcGVyZm9ybXMgYmV0dGVyIHRoYW4gdGhlIFJhbmRhbGwtQnJvd24gYWxnb3JpdGhtIGFuZCBpcyBhYmxlIHRvIGNvbG9yIGxhcmdlciBncmFwaHMsIGFuZCB0aGUgbmV3IGhldXJpc3RpYyBtZXRob2RzLCB0aGUgY2xhc3NpY2FsIG1ldGhvZHMsIGFuZCB0aGUgZXhhY3QgbWV0aG9kIGFyZSBjb21wYXJlZC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGFubm90ZSA9ICAgICAgICJTdWNjZXNzaXZlIGF1Z21lbnRhdGlvbiBhcHByb2FjaCB0byBncmFwaCBjb2xvcmluZy4gRFNBVFVSIGNob29zZXMgdGhlIHZlcnRleCBhZGphY2VudCB0byB0aGUgbGFyZ2VzdCBudW1iZXIgb2YgZGlzdGluY3RseSBjb2xvcmVkIHZlcnRpY2VzLiBQYXBlciBhbHNvIGRpc2N1c3NlcyBhbiBpbXBsaWNpdCBlbnVtZXJhdGlvbiBzY2hlbWUgZm9yIGZpbmRpbmcgYW4gb3B0aW1hbCBjb2xvcmluZyB1c2luZyBzb21lIG9mIHRoZSBwcmluY2lwbGVzIG9mIERTQVRVUiB0byBndWlkZSB0aGUgc2VhcmNoLiIsCiAgY2xhc3Njb2RlcyA9ICAgIkMxMTYwIChDb21iaW5hdG9yaWFsIG1hdGhlbWF0aWNzKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiOTEyOyA5MjEiLAogIGNvcnBzb3VyY2UgPSAgICJFY29sZSBQb2x5dGVjaC4gRmVkZXJhbGUgZGUgTGF1c2FubmUsIExhdXNhbm5lLCBTd2l0emVybGFuZCIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJiaXBhcnRpdGUgZ3JhcGhzOyBjbGlxdWVzOyBjb2xvdXJpbmc7IGdyYXBoOyBncmFwaCBjb2xvdXJpbmc7IGhldXJpc3RpYzsgbWF0aGVtYXRpY2FsIHRlY2huaXF1ZXMgLS0tIEdyYXBoIFRoZW9yeTsgbWF4aW1hbDsgb3BlcmF0aW9ucyByZXNlYXJjaDsgdmVydGljZXMiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0RlTWlsbG86MTk3OTpTUFAsCiAgYXV0aG9yID0gICAgICAgIlJpY2hhcmQgQS4ge0RlIE1pbGxvfSBhbmQgUmljaGFyZCBKLiBMaXB0b24gYW5kIEFsYW4gSi4gUGVybGlzIiwKICB0aXRsZSA9ICAgICAgICAiU29jaWFsIFByb2Nlc3NlcyBhbmQgUHJvb2ZzIG9mIFRoZW9yZW1zIGFuZCBQcm9ncmFtcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMiIsCiAgbnVtYmVyID0gICAgICAgIjUiLAogIHBhZ2VzID0gICAgICAgICIyNzEtLTI4MCIsCiAgbW9udGggPSAgICAgICAgbWF5LAogIHllYXIgPSAgICAgICAgICIxOTc5IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9NaXNjL3NvZnRlbmcuYmliIiwKICBhYnN0cmFjdCA9ICAgICAiSXQgaXMgYXJndWVkIHRoYXQgZm9ybWFsIHZlcmlmaWNhdGlvbnMgb2YgcHJvZ3JhbXMsIG5vIG1hdHRlciBob3cgb2J0YWluZWQsIHdpbGwgbm90IHBsYXkgdGhlIHNhbWUga2V5IHJvbGUgaW4gdGhlIGRldmVsb3BtZW50IG9mIGNvbXB1dGVyIHNjaWVuY2UgYW5kIHNvZnR3YXJlIGVuZ2luZWVyaW5nIGFzIHByb29mcyBkbyBpbiBtYXRoZW1hdGljcy4gRnVydGhlcm1vcmUgdGhlIGFic2VuY2Ugb2YgY29udGludWl0eSwgdGhlIGluZXZpdGFiaWxpdHkgb2YgY2hhbmdlLCBhbmQgdGhlIGNvbXBsZXhpdHkgb2Ygc3BlY2lmaWNhdGlvbiBvZiBzaWduaWZpY2FudGx5IG1hbnkgcmVhbCBwcm9ncmFtcyBtYWtlIHRoZSBmb3JtYWwgdmVyaWZpY2F0aW9uIHByb2Nlc3MgZGlmZmljdWx0IHRvIGp1c3RpZnkgYW5kIG1hbmFnZS4gSXQgaXMgZmVsdCB0aGF0IGVhc2Ugb2YgZm9ybWFsIHZlcmlmaWNhdGlvbiBzaG91bGQgbm90IGRvbWluYXRlIHByb2dyYW0gbGFuZ3VhZ2UgZGVzaWduLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MjQwIChQcm9ncmFtbWluZyBhbmQgYWxnb3JpdGhtIHRoZW9yeSkiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIkdlb3JnaWEgSW5zdC4gb2YgVGVjaG5vbC4sIEF0bGFudGEsIEdBLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgcHJvZ3JhbW1pbmc7IGZvcm1hbCB2ZXJpZmljYXRpb247IHBoaWxvc29waGljYWwgYXNwZWN0czsgcHJvZ3JhbSBsYW5ndWFnZSBkZXNpZ247IHByb2dyYW1taW5nIHRoZW9yeTsgc3BlY2lmaWNhdGlvbiIsCiAgdHJlYXRtZW50ID0gICAgIkcgR2VuZXJhbCBSZXZpZXc7IFQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7Q2hhbmc6MTk3OTpJQUQsCiAgYXV0aG9yID0gICAgICAgIkVybmVzdCBDaGFuZyBhbmQgUm9zZW1hcnkgUm9iZXJ0cyIsCiAgdGl0bGUgPSAgICAgICAgIkFuIEltcHJvdmVkIEFsZ29yaXRobSBmb3IgRGVjZW50cmFsaXplZCBFeHRyZW1hLUZpbmRpbmcgaW4gQ2lyY3VsYXIgQ29uZmlndXJhdGlvbnMgb2YgUHJvY2Vzc29ycyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMiIsCiAgbnVtYmVyID0gICAgICAgIjUiLAogIHBhZ2VzID0gICAgICAgICIyODEtLTI4MyIsCiAgbW9udGggPSAgICAgICAgbWF5LAogIHllYXIgPSAgICAgICAgICIxOTc5IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZTsgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9UaGVvcnkvUHJvYkFsZ3MuYmliIiwKICBub3RlID0gICAgICAgICAiVGhleSBwcmVzZW50IGEgZGV0ZXJtaW5pc3RpYyBkaXN0cmlidXRlZCBhbGdvcml0aG0gZm9yIGZpbmRpbmcgdGhlIGxhcmdlc3Qgb2YgYSBzZXQgb2YgJG4kIHVuaXF1ZWx5IG51bWJlcmVkIHByb2Nlc3NlcyBpbiBhIHJpbmcuIFRoZSBhbGdvcml0aG0gdXNlcyAkTyhuIFxsb2cgbikkIG1lc3NhZ2VzIG9uIHRoZSBhdmVyYWdlIGFuZCAkTyhuXjIpJCBtZXNzYWdlcyBpbiB0aGUgd29yc3QgY2FzZSwgYW5kIGRvZXMgbm90IGFzc3VtZSB0aGF0ICRuJCBpcyBrbm93biBhIHByaW9yaS4iLAogIGFic3RyYWN0ID0gICAgICJBbiBpbXByb3ZlbWVudCBpcyBwcmVzZW50ZWQgb2YgTGVMYW5uJ3MgYWxnb3JpdGhtIGZvciBmaW5kaW5nIHRoZSBsYXJnZXN0IChvciBzbWFsbGVzdCkgb2YgYSBzZXQgb2YgdW5pcXVlbHkgbnVtYmVyZWQgcHJvY2Vzc2VzIGFycmFuZ2VkIGluIGEgY2lyY2xlLCBpbiB3aGljaCBubyBjZW50cmFsIGNvbnRyb2xsZXIgZXhpc3RzIGFuZCB0aGUgbnVtYmVyIG9mIHByb2Nlc3NlcyBpcyBub3Qga25vd24gYSBwcmlvcmkuIFRoaXMgZGVjZW50cmFsaXplZCBhbGdvcml0aG0gdXNlcyBhIHRlY2huaXF1ZSBvZiBzZWxlY3RpdmUgbWVzc2FnZSBleHRpbmN0aW9uIGluIG9yZGVyIHRvIGFjaGlldmUgYW4gYXZlcmFnZSBudW1iZXIgb2YgbWVzc2FnZSBwYXNzZXMgb2Ygb3JkZXIgKG4gbG9nIG4pIHJhdGhlciB0aGFuIE8obioqMikuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzQyOTAgKE90aGVyIGNvbXB1dGVyIHRoZW9yeSk7IEM2MTUwSiAoT3BlcmF0aW5nIHN5c3RlbXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBvZiBUb3JvbnRvLCBPbnQuLCBDYW5hZGEiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYWxnb3JpdGhtOyBjaXJjdWxhciBjb25maWd1cmF0aW9uczsgY29tcHV0ZXIgb3BlcmF0aW5nIHN5c3RlbXM7IGNvbXB1dGVyIHByb2dyYW1taW5nIC0tLSBTdWJyb3V0aW5lczsgZGVjZW50cmFsaXplZDsgZGlzdHJpYnV0ZWQgcHJvY2Vzc2luZzsgZGlzdHJpYnV0ZWQgc3lzdGVtczsgZXh0cmVtYTsgb3BlcmF0aW5nIHN5c3RlbXM7IG9wZXJhdGluZyBzeXN0ZW1zIChjb21wdXRlcnMpOyBwcm9jZXNzZXMiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCiAgeHh0aXRsZSA9ICAgICAgIkFuIGltcHJvdmVkIGFsZ29yaXRobSBmb3IgZGVjZW50cmFsaXplZCBleHRyZW1hLWZpbmRpbmcgaW4gY2lyY3VsYXIgY29uZmlndXJhdGlvbnMgb2YgcHJvY2Vzc2VzIiwKfQoKQEFydGljbGV7U3Rlcmxpbmc6MTk3OTpDREMsCiAgYXV0aG9yID0gICAgICAgIlQuIEQuIFN0ZXJsaW5nIiwKICB0aXRsZSA9ICAgICAgICAiQ29uc3VtZXIgRGlmZmljdWx0aWVzIHdpdGggQ29tcHV0ZXJpemVkIFRyYW5zYWN0aW9uczogYW4gRW1waXJpY2FsIEludmVzdGlnYXRpb24iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjIiLAogIG51bWJlciA9ICAgICAgICI1IiwKICBwYWdlcyA9ICAgICAgICAiMjgzLS0yODkiLAogIG1vbnRoID0gICAgICAgIG1heSwKICB5ZWFyID0gICAgICAgICAiMTk3OSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJSZXN1bHRzIHNob3cgdGhhdCB3aXRoIHRoZSBwcmVzZW50IHN0YXRlIG9mIHRoZSBhcnQsIGFwcHJveGltYXRlbHkgNDAgcGVyY2VudCBvZiBpbmRpdmlkdWFscyAob3IgaG91c2Vob2xkcykgaGF2aW5nIGF2ZXJhZ2UgY29udGFjdHMgd2l0aCBkaWZmZXJlbnQgdHlwZXMgb2YgYWNjb3VudHMgZXhwZXJpZW5jZSBvbmUgb3IgbW9yZSBlcnJvcnMgcGVyIHllYXIuIEVpZ2h0eSBwZXJjZW50IHJlbGF0ZSB0byBiaWxsaW5nLiBBdHRlbXB0cyB0byBjb3JyZWN0IGVycm9ycyBvZnRlbiB0dXJuZWQgb3V0IHRvIGJlIGRpZmZpY3VsdCBhbmQgbm90IGFsd2F5cyBzdWNjZXNzZnVsLiBUaGVyZSBhcHBlYXJzIHRvIGJlIHNvbWUgY29uZmxpY3QgYmV0d2VlbiBjb21wdXRlci11c2luZyBvcmdhbml6YXRpb25zIGFuZCB0aGVpciBwdWJsaWMuIEFsc28gdGhlIHJvbGUgb2YgcG9vciBtYW5hZ2VtZW50IHBhY2thZ2VzIGluY2x1ZGluZyBwb29yIHNvZnR3YXJlIGlzIGluZGljYXRlZC4gV2hpbGUgbW9zdCBtYW5hZ2VtZW50IHN5c3RlbXMgbWF5IGJlIGFkZXF1YXRlLCByZXN1bHRzIG9mIHRoZSBzdXJ2ZXkgcmFpc2UgY29uY2VybnMgYWJvdXQgdGhlIHRpbWVsaW5lc3MgYW5kIHRoZSBudW1iZXIgb2YgZGVzaWducyBvZiB2ZXJ5IGxhcmdlIGxpbmtlZCBwcm9ncmFtIHBhY2thZ2VzIChhcyBFRlQgZm9yIGluc3RhbmNlKS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDMDIzMCAoRWNvbm9taWMsIHNvY2lhbCBhbmQgcG9saXRpY2FsIGFzcGVjdHMgb2YgY29tcHV0aW5nKTsgQzcxMDAgKEJ1c2luZXNzIGFuZCBhZG1pbmlzdHJhdGlvbik7IEM3MTIwIChGaW5hbmNpYWwgY29tcHV0aW5nKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiU2ltb24gRnJhc2VyIFVuaXYuLCBCdXJuYWJ5LCBCQywgQ2FuYWRhIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImFkbWluaXN0cmF0aXZlIGRhdGEgcHJvY2Vzc2luZzsgYmlsbGluZzsgY29tcHV0ZXJpemVkIHRyYW5zYWN0aW9uczsgY29uc3VtZXJzOyBkYXRhIHByb2Nlc3NpbmcsIGJ1c2luZXNzOyBlY29ub21pYyBhbmQgc29jaW9sb2dpY2FsOyBlZmZlY3RzOyBlcnJvcnM7IG1hbmFnZW1lbnQ7IHBhY2thZ2VzIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtSZXlub2xkczoxOTc5OlJBQSwKICBhdXRob3IgPSAgICAgICAiSm9obiBDLiBSZXlub2xkcyIsCiAgdGl0bGUgPSAgICAgICAgIlJlYXNvbmluZyBBYm91dCBBcnJheXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjIiLAogIG51bWJlciA9ICAgICAgICI1IiwKICBwYWdlcyA9ICAgICAgICAiMjkwLS0yOTkiLAogIG1vbnRoID0gICAgICAgIG1heSwKICB5ZWFyID0gICAgICAgICAiMTk3OSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4QjEwICg2OEUwNSkiLAogIE1SbnVtYmVyID0gICAgICI4MGY6NjgwMTgiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0NvbXBpbGVyL3JleW5vbGRzLmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIkEgdmFyaWV0eSBvZiBjb25jZXB0cywgbGF3cywgYW5kIG5vdGF0aW9ucyBhcmUgcHJlc2VudGVkIHdoaWNoIGZhY2lsaXRhdGUgcmVhc29uaW5nIGFib3V0IGFycmF5cy4gVGhlIGJhc2ljIGNvbmNlcHRzIGluY2x1ZGUgaW50ZXJ2YWxzIGFuZCB0aGVpciBwYXJ0aXRpb25zLCBmdW5jdGlvbmFsIHJlc3RyaWN0aW9uLCBpbWFnZXMsIHBvaW50d2lzZSBleHRlbnNpb24gb2YgcmVsYXRpb25zLCBvcmRlcmluZywgc2luZ2xlLXBvaW50IHZhcmlhdGlvbiBvZiBmdW5jdGlvbnMsIHZhcmlvdXMgZXF1aXZhbGVuY2UgcmVsYXRpb25zIGZvciBhcnJheSB2YWx1ZXMsIGFuZCBjb25jYXRlbmF0aW9uLiBUaGUgZWZmZWN0aXZlbmVzcyBvZiB0aGVzZSBpZGVhcyBpcyBpbGx1c3RyYXRlZCBieSBpbmZvcm1hbCBkZXNjcmlwdGlvbnMgb2YgYWxnb3JpdGhtcyBmb3IgYmluYXJ5IHNlYXJjaCBhbmQgbWVyZ2luZywgYW5kIGJ5IGEgc2hvcnQgZm9ybWFsIHByb29mLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2hlY2tlZCA9ICAgICAgIjQgU2VwdGVtYmVyIDE5OTAiLAogIGNsYXNzY29kZXMgPSAgICJDNDI0MCAoUHJvZ3JhbW1pbmcgYW5kIGFsZ29yaXRobSB0aGVvcnkpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJTeXJhY3VzZSBVbml2LiwgU3lyYWN1c2UsIE5ZLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYXJyYXlzOyBiaW5hcnk7IGNvbXB1dGVyIHByb2dyYW1taW5nOyBjb25jYXRlbmF0aW9uOyBjb25jZXB0czsgZXF1aXZhbGVuY2UgcmVsYXRpb25zOyBleHRlbnNpb24gb2YgcmVsYXRpb25zOyBmdW5jdGlvbmFsIHJlc3RyaWN0aW9uOyBmdW5jdGlvbnM7IGltYWdpbmc7IGludGVydmFsczsgbGF3czsgbWVyZ2luZzsgbm90YXRpb25zOyBvcmRlcmluZzsgcGFydGl0aW9uczsgcG9pbnR3aXNlOyBwcm9ncmFtbWluZyB0aGVvcnk7IHByb2dyYW1zOyByZWFzb25pbmc7IHNlYXJjaDsgc2luZ2xlIHBvaW50IHZhcmlhdGlvbiBvZiIsCiAgdHJlYXRtZW50ID0gICAgIkEgQXBwbGljYXRpb247IFQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7TWFudGhleToxOTc5Ok1ETSwKICBhdXRob3IgPSAgICAgICAiTWljaGFlbCBKLiBNYW50aGV5IiwKICB0aXRsZSA9ICAgICAgICAiTW9kZWwgZm9yIGFuZCBEaXNjdXNzaW9uIG9mIE11bHRpLUludGVycHJldGVyIFN5c3RlbXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjIiLAogIG51bWJlciA9ICAgICAgICI1IiwKICBwYWdlcyA9ICAgICAgICAiMjk5LS0zMDkiLAogIG1vbnRoID0gICAgICAgIG1heSwKICB5ZWFyID0gICAgICAgICAiMTk3OSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2UiLAogIGFic3RyYWN0ID0gICAgICJBIG11bHRpLWludGVycHJldGVyIHN5c3RlbSBpcyBhIHN5c3RlbSBpbiB3aGljaCBwcm9ncmFtcyBleGVjdXRlIGJ5IHZpcnR1ZSBvZiBiZWluZyBpbnRlcnByZXRlZCBieSBvdGhlciBwcm9ncmFtcywgd2hpY2ggdGhlbXNlbHZlcyBtYXkgZWl0aGVyIGJlIGludGVycHJldGVkIChpLmUuIG5lc3RlZCBpbnRlcnByZXRlcnMpIG9yIHJ1biBkaXJlY3RseSBvbiB0aGUgaG9zdCBtYWNoaW5lLiBUaGUgbW9kZWwgcmV2ZWFscyB0aGUgYW5hdG9teSBvZiBpbnRlcnByZXRlcnMgYW5kIGhvdyB0aGVzZSBkaWZmZXIgZnJvbSBwcm9jZWR1cmVzLCBhbmQgZXhoaWJpdHMgbGlua3MgdG8gcHJvdGVjdGlvbiBkb21haW5zIGFuZCBtdWx0aXByb2Nlc3NvciBhcmNoaXRlY3R1cmVzLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTUwQyAoQ29tcGlsZXJzLCBpbnRlcnByZXRlcnMgYW5kIG90aGVyIHByb2Nlc3NvcnMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjI7IDcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlN0YXRlIFVuaXYuIG9mIE5ldyBZb3JrLCBCdWZmYWxvLCBOWSwgVVNBIiwKICBqb3VybmFsYWJyID0gICAiQ29tbXVuIEFDTSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIHN5c3RlbXMsIGRpZ2l0YWw7IG11bHRpIGludGVycHJldGVyIHN5c3RlbXM7IG11bHRpcHJvY2Vzc29yOyBwcm9ncmFtIGludGVycHJldGVyczsgcHJvZ3JhbXMiLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0xlbW9zOjE5Nzk6SVNXLAogIGF1dGhvciA9ICAgICAgICJSLiBTLiBMZW1vcyIsCiAgdGl0bGUgPSAgICAgICAgIkFuIGltcGxlbWVudGF0aW9uIG9mIHN0cnVjdHVyZWQgd2Fsay10aHJvdWdocyBpbiB0ZWFjaGluZyB7Q09CQUx9IHByb2dyYW1taW5nIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIyIiwKICBudW1iZXIgPSAgICAgICAiNiIsCiAgcGFnZXMgPSAgICAgICAgIjMzNS0tMzQwIiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzkiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzAyMjAgKENvbXB1dGluZyBlZHVjYXRpb24gYW5kIHRyYWluaW5nKTsgQzYxMTAgKFN5c3RlbXMgYW5hbHlzaXMgYW5kIHByb2dyYW1taW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIkNhbGlmb3JuaWEgU3RhdGUgVW5pdi4sIExvcyBBbmdlbGVzLCBDQSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiQ09CQUwgcHJvZ3JhbW1pbmc7IGNvbXB1dGVyIHNjaWVuY2UgZWR1Y2F0aW9uOyBtdWx0aXBsZSBjb3ZhcmlhbmNlOyBwcm9ncmFtbWluZzsgc3RydWN0dXJlZCB3YWxrLXRocm91Z2hzOyB0ZWFjaGluZyIsCiAgdHJlYXRtZW50ID0gICAgIkcgR2VuZXJhbCBSZXZpZXciLAp9CgpAQXJ0aWNsZXtCdXNlbmJlcmc6MTk3OTpBUFAsCiAgYXV0aG9yID0gICAgICAgIlMuIE4uIEJ1c2VuYmVyZyBhbmQgVy4gQy4gVGFtIiwKICB0aXRsZSA9ICAgICAgICAiQW4gYWNhZGVtaWMgcHJvZ3JhbSBwcm92aWRpbmcgcmVhbGlzdGljIHRyYWluaW5nIGluIHNvZnR3YXJlIGVuZ2luZWVyaW5nIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIyIiwKICBudW1iZXIgPSAgICAgICAiNiIsCiAgcGFnZXMgPSAgICAgICAgIjM0MS0tMzQ1IiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzkiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMTAgKFN5c3RlbXMgYW5hbHlzaXMgYW5kIHByb2dyYW1taW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIkhhcnZleSBNdWRkIENvbGwuLCBDbGFyZW1vbnQsIENBLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJDbGluaWMgcHJvZ3JhbTsgY29tbXVuaWNhdGlvbiBza2lsbHM7IGNvbXB1dGVyIHNjaWVuY2UgZWR1Y2F0aW9uOyBtZXRob2RvbG9neTsgcmVhbGlzdGljIHRyYWluaW5nOyBzb2Z0d2FyZSBkZXNpZ247IHNvZnR3YXJlIGVuZ2luZWVyaW5nOyBzb2Z0d2FyZSBwcm9qZWN0IG1hbmFnZW1lbnQ7IHRlYW0gd29yayIsCiAgdHJlYXRtZW50ID0gICAgIkcgR2VuZXJhbCBSZXZpZXciLAp9CgpAQXJ0aWNsZXtBbHRlcjoxOTc5Ok1BRiwKICBhdXRob3IgPSAgICAgICAiU3RldmVuIEFsdGVyIiwKICB0aXRsZSA9ICAgICAgICAiTW9kZWwgZm9yIEF1dG9tYXRpbmcgRmlsZSBhbmQgUHJvZ3JhbSBEZXNpZ24gaW4gQnVzaW5lc3MgQXBwbGljYXRpb24gU3lzdGVtcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMiIsCiAgbnVtYmVyID0gICAgICAgIjYiLAogIHBhZ2VzID0gICAgICAgICIzNDUtLTM1MyIsCiAgbW9udGggPSAgICAgICAganVuLAogIHllYXIgPSAgICAgICAgICIxOTc5IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkEgbW9kZWwgaXMgZGlzY3Vzc2VkIGZvciBmaW5kaW5nIGFuIGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbiBvZiBhIGJ1c2luZXNzIGFwcGxpY2F0aW9uIHN5c3RlbSB3aG9zZSBsb2dpY2FsIHNwZWNpZmljYXRpb25zIGhhdmUgYmVlbiBkZXRlcm1pbmVkIGluIGFkdmFuY2UuIFRoZSBtb2RlbCB2aWV3cyBmaWxlIGFuZCBwcm9ncmFtIGRlc2lnbiBhcyBhIHByb2JsZW0gb2Ygc3lzdGVtYXRpY2FsbHkgY29vcmRpbmF0aW5nIHRoZSBjb25maWd1cmF0aW9ucyBvZiBkYXRhc2V0cyBhbmQgY29tcHV0YXRpb25zLiBJdCB1c2VzIGEgc3RyYWlnaHRmb3J3YXJkIHNlYXJjaCB0ZWNobmlxdWUgdG8gZGV0ZXJtaW5lIGFnZ3JlZ2F0aW9ucyBvZiBjb21wdXRhdGlvbnMsIGFnZ3JlZ2F0aW9ucyBvZiBkYXRhc2V0cywgZGV2aWNlLCBvcmdhbml6YXRpb24sIGFuZCBrZXkgb3JkZXIgZm9yIGVhY2ggZGF0YXNldCwga2V5IG9yZGVyIGZvciBlYWNoIGNvbXB1dGF0aW9uLCBhbmQgYWNjZXNzIG1ldGhvZCBmb3IgZWFjaCBkYXRhc2V0LWNvbXB1dGF0aW9uIHBhaXIuIEFsdGhvdWdoIGNvbXB1dGF0aW9uYWwgcmVzdWx0cyBhcmUgcHJlc2VudGVkIGZvciBhIHNhbXBsZSBwcm9ibGVtIGludm9sdmluZyA1NCBjb21wdXRhdGlvbnMgYW5kIDQ5IGRhdGFzZXRzLCB0aGUgbWFpbiBwb2ludCBvZiB0aGUgcGFwZXIgaXMgdGhhdCB0aGUgdW5kZXJseWluZyBtb2RlbCB3b3JrcyBjb21wdXRhdGlvbmFsbHkgYW5kIGlzIHNpbXBsZSBlbm91Z2ggdG8gYmUgYWRhcHRlZCB0byBtYW55IGZpbGUgZGVzaWduIHNpdHVhdGlvbnMuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiU3RldmVuIEFsdGVyIGFuZCBBc3NvY2lhdGVzIEluYy4sIFNhbiBGcmFuY2lzY28sIENBLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiYXV0b21hdGluZyBmaWxlOyBidXNpbmVzcyBhcHBsaWNhdGlvbjsgY29tcHV0YXRpb25zOyBjb21wdXRlciBwcm9ncmFtbWluZzsgZGF0YXNldHM7IGRlc2lnbjsgZmlsZTsgZmlsZSBvcmdhbmlzYXRpb247IHByb2dyYW0gZGVzaWduOyBzZWFyY2ggdGVjaG5pcXVlOyBzb2Z0d2FyZSBlbmdpbmVlcmluZzsgc3lzdGVtcyIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7RmVsZG1hbjoxOTc5OkhMUCwKICBhdXRob3IgPSAgICAgICAiSmVyb21lIEEuIEZlbGRtYW4iLAogIHRpdGxlID0gICAgICAgICJIaWdoIExldmVsIFByb2dyYW1taW5nIGZvciBEaXN0cmlidXRlZCBDb21wdXRpbmciLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjIiLAogIG51bWJlciA9ICAgICAgICI2IiwKICBwYWdlcyA9ICAgICAgICAiMzUzLS0zNjgiLAogIG1vbnRoID0gICAgICAgIGp1biwKICB5ZWFyID0gICAgICAgICAiMTk3OSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvT2JqZWN0L05pZXJzdHJhc3ouYmliIiwKICBhYnN0cmFjdCA9ICAgICAiQW4gYXBwcm9hY2ggdG8gZGlzdHJpYnV0ZWQgY29tcHV0aW5nIGF0IHRoZSBsZXZlbCBvZiBnZW5lcmFsIHB1cnBvc2UgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzIGlzIGRlc2NyaWJlZC4gQmFzZWQgb24gcHJpbWl0aXZlIG5vdGlvbnMgb2YgbW9kdWxlLCBtZXNzYWdlLCBhbmQgdHJhbnNhY3Rpb24ga2V5LCB0aGUgbWV0aG9kb2xvZ3kgaXMgc2hvd24gdG8gYmUgaW5kZXBlbmRlbnQgb2YgcGFydGljdWxhciBsYW5ndWFnZXMgYW5kIG1hY2hpbmVzLiBJdCBhcHBlYXJzIHRvIGJlIHVzZWZ1bCBmb3IgcHJvZ3JhbW1pbmcgYSB3aWRlIHJhbmdlIG9mIHRhc2tzLiBUaGlzIGlzIHBhcnQgb2YgYW4gYW1iaXRpb3VzIHByb2dyYW0gb2YgZGV2ZWxvcG1lbnQgaW4gYWR2YW5jZWQgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzLCBhbmQgcmVsYXRpb25zIHdpdGggb3RoZXIgYXNwZWN0cyBvZiB0aGUgcHJvamVjdCBhcmUgYWxzbyBkaXNjdXNzZWQuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMTAgKFN5c3RlbXMgYW5hbHlzaXMgYW5kIHByb2dyYW1taW5nKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gb2YgUm9jaGVzdGVyLCBSb2NoZXN0ZXIsIE5ZLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzOyBkaXN0cmlidXRlZCBjb21wdXRpbmc7IGRpc3RyaWJ1dGVkIHByb2Nlc3Npbmc7IGhpZ2ggbGV2ZWwgcHJvZ3JhbW1pbmc7IG1lc3NhZ2U7IG1pc2MgbW9kdWxlcyBtZXNzYWdlczsgbW9kdWxlOyBtdWx0aXByb2dyYW1taW5nOyB0cmFuc2FjdGlvbiBrZXkiLAogIHRyZWF0bWVudCA9ICAgICJHIEdlbmVyYWwgUmV2aWV3IiwKfQoKQEFydGljbGV7U2VkZ2V3aWNrOjE5Nzk6Q0lRLAogIGF1dGhvciA9ICAgICAgICJSb2JlcnQgU2VkZ2V3aWNrIiwKICB0aXRsZSA9ICAgICAgICAiQ29ycmlnZW5kdW06IHtgYEltcGxlbWVudGluZyB7UXVpY2tzb3J0fSBQcm9ncmFtcycnfSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMiIsCiAgbnVtYmVyID0gICAgICAgIjYiLAogIHBhZ2VzID0gICAgICAgICIzNjgtLTM2OCIsCiAgbW9udGggPSAgICAgICAganVuLAogIHllYXIgPSAgICAgICAgICIxOTc5IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiU2F0IEphbiAxOCAxNTo0MzoxMyAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9UaGVvcnkvU2VpZmVyYXMvMTk3OS5iaWIiLAogIG5vdGUgPSAgICAgICAgICJTZWUgXGNpdGV7U2VkZ2V3aWNrOjE5Nzg6SVFQfS4iLAp9CgpAQXJ0aWNsZXtTaGFwaXJhOjE5Nzk6Q09QLAogIGF1dGhvciA9ICAgICAgICJSLiBTaGFwaXJhIGFuZCBILiBGcmVlbWFuIiwKICB0aXRsZSA9ICAgICAgICAiVGhlIEN5Y2xpYyBPcmRlciBQcm9wZXJ0eSBvZiBWZXJ0aWNlcyBhcyBhbiBBaWQgaW4gU2NlbmUgQW5hbHlzaXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjIiLAogIG51bWJlciA9ICAgICAgICI2IiwKICBwYWdlcyA9ICAgICAgICAiMzY4LS0zNzUiLAogIG1vbnRoID0gICAgICAgIGp1biwKICB5ZWFyID0gICAgICAgICAiMTk3OSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvR3JhcGhpY3MvaW1hZ2VyL2ltYWdlci43OS5iaWIiLAogIGFic3RyYWN0ID0gICAgICJBIGN5Y2xpYy1vcmRlciBwcm9wZXJ0eSBpcyBkZWZpbmVkIGZvciBib2RpZXMgYm91bmRlZCBieSBzbW9vdGgtY3VydmVkIGZhY2VzLiBUaGUgcHJvcGVydHkgaXMgc2hvd24gdG8gYmUgdXNlZnVsIGZvciBhbmFseXppbmcgcGljdHVyZXMgb2Ygc3VjaCBib2RpZXMsIHBhcnRpY3VsYXJseSB3aGVuIHRoZSBsaW5lIGRhdGEgZXh0cmFjdGVkIGZyb20gdGhlIHBpY3R1cmVzIGFyZSBpbXBlcmZlY3QuIFRoaXMgcHJvcGVydHkgYXVnbWVudHMgcHJldmlvdXNseSBrbm93biBncmFtbWF0aWNhbCBydWxlcyB0aGF0IGRldGVybWluZSB0aGUgZXhpc3RlbmNlIG9mIHRocmVlLWRpbWVuc2lvbmFsIGJvZGllcyBjb3JyZXNwb25kaW5nIHRvIGdpdmVuIHR3by1kaW1lbnNpb25hbCBsaW5lLXN0cnVjdHVyZSBkYXRhLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkI2MTQwQyAoT3B0aWNhbCBpbmZvcm1hdGlvbiwgaW1hZ2UgYW5kIHZpZGVvIHNpZ25hbCBwcm9jZXNzaW5nKTsgQzEyNTAgKFBhdHRlcm4gcmVjb2duaXRpb24pOyBDMTI2MCAoSW5mb3JtYXRpb24gdGhlb3J5KSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiUmVuc3NlbGFlciBQb2x5dGVjaC4gSW5zdC4sIFRyb3ksIE5ZLCBVU0EiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiQUk7IGFsZ29yaXRobWljIGFzcGVjdHM7IGFsZ29yaXRobXM7IGNvbXB1dGVyIGdyYXBoaWNzOyBjeWNsaWMgb3JkZXI7IGdyYW1tYXRpY2FsOyBpbWFnZSBwcm9jZXNzaW5nOyBsaW5lIGRhdGE7IHBhdHRlcm47IHBhdHRlcm4gcmVjb2duaXRpb247IHBpY3R1cmUgcHJvY2Vzc2luZzsgcGljdHVyZXM7IHJlY29nbml0aW9uOyByZWNvbnN0cnVjdGlvbjsgcmVjb25zdHJ1Y3Rpb24gb2Ygb2JqZWN0cyBhbmQgdGhyZWUtZGltZW5zaW9uYWwgZ3JhcGhpY3M7IHJ1bGVzOyBzY2VuZSBhbmFseXNpczsgc2VlIFNlY3Rpb24gNjsgdmVydGljZXMiLAp9CgpAQXJ0aWNsZXtXaW5vZ3JhZDoxOTc5OkJQTCwKICBhdXRob3IgPSAgICAgICAiVC4gV2lub2dyYWQiLAogIHRpdGxlID0gICAgICAgICJCZXlvbmQgUHJvZ3JhbW1pbmcgTGFuZ3VhZ2VzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIyIiwKICBudW1iZXIgPSAgICAgICAiNyIsCiAgcGFnZXMgPSAgICAgICAgIjM5MS0tNDAxIiwKICBtb250aCA9ICAgICAgICBqdWwsCiAgeWVhciA9ICAgICAgICAgIjE5NzkiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhYnN0cmFjdCA9ICAgICAiQXMgY29tcHV0ZXIgdGVjaG5vbG9neSBtYXR1cmVzLCBvdXIgZ3Jvd2luZyBhYmlsaXR5IHRvIGNyZWF0ZSBsYXJnZSBzeXN0ZW1zIGlzIGxlYWRpbmcgdG8gYmFzaWMgY2hhbmdlcyBpbiB0aGUgbmF0dXJlIG9mIHByb2dyYW1taW5nLiBDdXJyZW50IHByb2dyYW1taW5nIGxhbmd1YWdlIGNvbmNlcHRzIHdpbGwgbm90IGJlIGFkZXF1YXRlIGZvciBidWlsZGluZyBhbmQgbWFpbnRhaW5pbmcgc3lzdGVtcyBvZiB0aGUgY29tcGxleGl0eSBjYWxsZWQgZm9yIGJ5IHRoZSB0YXNrcyB3ZSBhdHRlbXB0LiBKdXN0IGFzIGhpZ2ggbGV2ZWwgbGFuZ3VhZ2VzIGVuYWJsZWQgdGhlIHByb2dyYW1tZXIgdG8gZXNjYXBlIGZyb20gdGhlIGludHJpY2FjaWVzIG9mIGEgbWFjaGluZSdzIG9yZGVyIGNvZGUsIGhpZ2hlciBsZXZlbCBwcm9ncmFtbWluZyBzeXN0ZW1zIGNhbiBwcm92aWRlIHRoZSBtZWFucyB0byB1bmRlcnN0YW5kIGFuZCBtYW5pcHVsYXRlIGNvbXBsZXggc3lzdGVtcyBhbmQgY29tcG9uZW50cy4gSW4gb3JkZXIgdG8gZGV2ZWxvcCBzdWNoIHN5c3RlbXMsIHdlIG5lZWQgdG8gc2hpZnQgb3VyIGF0dGVudGlvbiBhd2F5IGZyb20gdGhlIGRldGFpbGVkIHNwZWNpZmljYXRpb24gb2YgYWxnb3JpdGhtcywgdG93YXJkcyB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIHByb3BlcnRpZXMgb2YgdGhlIHBhY2thZ2VzIGFuZCBvYmplY3RzIHdpdGggd2hpY2ggd2UgYnVpbGQuIFRoaXMgcGFwZXIgYW5hbHl6ZXMgc29tZSBvZiB0aGUgc2hvcnRjb21pbmdzIG9mIHByb2dyYW1taW5nIGxhbmd1YWdlcyBhcyB0aGV5IG5vdyBleGlzdCwgYW5kIGxheXMgb3V0IHNvbWUgcG9zc2libGUgZGlyZWN0aW9ucyBmb3IgZnV0dXJlIHJlc2VhcmNoLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMwMjAwIChHZW5lcmFsIGNvbXB1dGVyIHRvcGljcyk7IEM2MTEwIChTeXN0ZW1zIGFuYWx5c2lzIGFuZCBwcm9ncmFtbWluZyk7IEM2MTQwRCAoSGlnaCBsZXZlbCBsYW5ndWFnZXMpIiwKICBjb3Jwc291cmNlID0gICAiU3RhbmZvcmQgVW5pdi4sIFN0YW5mb3JkLCBDQSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiZnV0dXJlOyBoaWdoZXIgbGV2ZWwgcHJvZ3JhbW1pbmcgc3lzdGVtczsgUHJvZ3JhbW1pbmc7IHByb2dyYW1taW5nIGxhbmd1YWdlczsgcHJvZ3JhbW1pbmcgc3lzdGVtczsgcmVzZWFyY2g7IHNob3J0Y29taW5nczsgc3lzdGVtcyBkZXZlbG9wbWVudDsgdGVjaG5vbG9naWNhbCBmb3JlY2FzdGluZyIsCiAgdHJlYXRtZW50ID0gICAgIkcgR2VuZXJhbCBSZXZpZXciLAp9CgpAQXJ0aWNsZXtQcmVwYXJhdGE6MTk3OTpPUlQsCiAgYXV0aG9yID0gICAgICAgIkYuIFAuIFByZXBhcmF0YSIsCiAgdGl0bGUgPSAgICAgICAgIkFuIE9wdGltYWwgUmVhbC1UaW1lIEFsZ29yaXRobSBmb3IgUGxhbmFyIENvbnZleCBIdWxscyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMiIsCiAgbnVtYmVyID0gICAgICAgIjciLAogIHBhZ2VzID0gICAgICAgICI0MDItLTQwNSIsCiAgbW9udGggPSAgICAgICAganVsLAogIHllYXIgPSAgICAgICAgICIxOTc5IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjhDMDUgKDY4QzI1KSIsCiAgTVJudW1iZXIgPSAgICAgIjgwZTo2ODA3NSIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJDb21wZW5kZXggZGF0YWJhc2U7IGZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvR3JhcGhpY3MvaW1hZ2VyL2ltYWdlci43OS5iaWIiLAogIGFic3RyYWN0ID0gICAgICJBbiBhbGdvcml0aG0gaXMgZGVzY3JpYmVkIGZvciB0aGUgY29uc3RydWN0aW9uIGluIHJlYWwtdGltZSBvZiB0aGUgY29udmV4IGh1bGwgb2YgYSBzZXQgb2YgbiBwb2ludHMgaW4gdGhlIHBsYW5lLiBVc2luZyBhbiBhcHByb3ByaWF0ZSBkYXRhIHN0cnVjdHVyZSwgdGhlIGFsZ29yaXRobSBjb25zdHJ1Y3RzIHRoZSBjb252ZXggaHVsbCBieSBzdWNjZXNzaXZlIHVwZGF0ZXMsIGVhY2ggdGFraW5nIHRpbWUgTyhsb2cgbiksIHRoZXJlYnkgYWNoaWV2aW5nIGEgdG90YWwgcHJvY2Vzc2luZyB0aW1lIE8obiBsb2cgbikuIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMzBCIChHcmFwaGljcyB0ZWNobmlxdWVzKSIsCiAgY2xhc3NpZmljYXRpb24gPSAiNzIzIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gb2YgSWxsaW5vaXMsIFVyYmFuYSwgSUwsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJhbGdvcml0aG1pYyBhc3BlY3RzOyBjb21wdXRlciBwcm9ncmFtbWluZzsgY29udmV4IGh1bGwgYW5kIG1hdGhlbWF0aWNhbCBhc3BlY3RzIiwKICBrZXl3b3JkcyA9ICAgICAiYWxnb3JpdGhtOyBjb21wdXRlciBncmFwaGljczsgZGF0YSBzdHJ1Y3R1cmU7IG9wdGltYWw7IHBsYW5hciBjb252ZXggaHVsbHM7IHJlYWwgdGltZSIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7RmlzY2hlcjoxOTc5OlNSVCwKICBhdXRob3IgPSAgICAgICAiUGF0cmljayBDLiBGaXNjaGVyIGFuZCBSb2JlcnQgTC4gUHJvYmVydCIsCiAgdGl0bGUgPSAgICAgICAgIlN0b3JhZ2UgUmVvcmdhbml6YXRpb24gVGVjaG5pcXVlcyBmb3IgTWF0cml4IENvbXB1dGF0aW9uIGluIGEgUGFnaW5nIEVudmlyb25tZW50IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIyIiwKICBudW1iZXIgPSAgICAgICAiNyIsCiAgcGFnZXMgPSAgICAgICAgIjQwNS0tNDE1IiwKICBtb250aCA9ICAgICAgICBqdWwsCiAgeWVhciA9ICAgICAgICAgIjE5NzkiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2OEIyMCAoNjVGMzApIiwKICBNUm51bWJlciA9ICAgICAiODBlOjY4MDU1IiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgIkNvbXBlbmRleCBkYXRhYmFzZSIsCiAgYWJzdHJhY3QgPSAgICAgIkluIG9yZGVyIHRvIG11bHRpcGx5IG1hdHJpY2VzIHdoaWxlIG1pbmltaXppbmcgdGhlIG51bWJlciBvZiBwYWdlIGZldGNoZXMgcmVxdWlyZWQsIGl0IGlzIG9mdGVuIG1vcmUgZWZmaWNpZW50IHRvIHJlb3JnYW5pemUgdGhlIGRhdGEgaW50byBzdWJtYXRyaXggZm9ybSBhbmQgdG8gdXNlIGJsb2NrIG11bHRpcGxpY2F0aW9uIHJhdGhlciB0aGFuIHRvIHVzZSB0aGUgYmVzdCBrbm93biBhbGdvcml0aG1zIHdoaWNoIGxlYXZlIHRoZSBtYXRyaWNlcyBzdG9yZWQgaW4gcm93LShvciBjb2x1bW4tKW9yaWVudGVkIGZvcm0uIEFuIGVmZmljaWVudCBtZXRob2QgZm9yIGFjY29tcGxpc2hpbmcgdGhpcyByZW9yZ2FuaXphdGlvbiBpcyBnaXZlbi4gVGhpcyBhbHNvIG1ha2VzIHBvc3NpYmxlIHRoZSBkZXJpdmF0aW9uIG9mIGFuIGFzeW1wdG90aWNhbGx5IGJldHRlciBib3VuZCBmb3IgbXVsdGlwbGljYXRpb24gb2YgbWF0cmljZXMgZ2l2ZW4gaW4gcm93LW9yaWVudGVkIGZvcm0gYnkgYWRhcHRpbmcgdGhlIHRlY2huaXF1ZSBvZiBTdHJhc3NlbiB0byB0aGUgcmVvcmdhbml6ZWQgZGF0YS4gVGhlIHJlb3JnYW5pemF0aW9uXHNsYXNoIGJsb2NrIG11bHRpcGxpY2F0aW9uIHNjaGVtZSBpcyBzaG93biB0byBiZSBhZHZhbnRhZ2VvdXMgZm9yIG1hdHJpY2VzIGFuZCBwYWdlcyBvZiByZWFsaXN0aWMgc2l6ZTsgdGhlIFN0cmFzc2VuIGFkYXB0YXRpb24gaXMgbm90LiBUaGUgZm9ybWVyIHNjaGVtZSBpcyBhbHNvIHNob3duIHRvIGJlIGFkdmFudGFnZW91cyBldmVuIGlmIHRoZSB0cmFuc3Bvc2Ugb2Ygb25lIG9mIHRoZSBtYXRyaWNlcyBpcyBhdmFpbGFibGUgYXQgbm8gYWRkaXRpb25hbCBjb3N0LiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MTQwIChMaW5lYXIgYWxnZWJyYSk7IEM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbik7IEM2MTMwIChEYXRhIGhhbmRsaW5nIHRlY2huaXF1ZXMpIiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjMiLAogIGNvcnBzb3VyY2UgPSAgICJQZW5uc3lsdmFuaWEgU3RhdGUgVW5pdi4sIFVuaXZlcnNpdHkgUGFyaywgUEEsIFVTQSIsCiAgam91cm5hbGFiciA9ICAgIkNvbW11biBBQ00iLAogIGtleXdvcmRzID0gICAgICJibG9jazsgY29tcHV0ZXIgb3BlcmF0aW5nIHN5c3RlbXM7IG1hdHJpeCBhbGdlYnJhOyBtYXRyaXggY29tcHV0YXRpb247IG11bHRpcGxpY2F0aW9uOyBwYWdpbmc7IHJlb3JnYW5pemF0aW9uOyB2aXJ0dWFsIHN0b3JhZ2UiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0hpbmU6MTk3OTpDUlQsCiAgYXV0aG9yID0gICAgICAgIkouIEguIEhpbmUgYW5kIEkuIE1pdHJhbmkgYW5kIFMuIFRzdXIiLAogIHRpdGxlID0gICAgICAgICJUaGUgQ29udHJvbCBvZiBSZXNwb25zZSBUaW1lcyBpbiBNdWx0aS1DbGFzcyBTeXN0ZW1zIGJ5IE1lbW9yeSBBbGxvY2F0aW9uIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIyIiwKICBudW1iZXIgPSAgICAgICAiNyIsCiAgcGFnZXMgPSAgICAgICAgIjQxNS0tNDI0IiwKICBtb250aCA9ICAgICAgICBqdWwsCiAgeWVhciA9ICAgICAgICAgIjE5NzkiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlOyBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0Rpc3RyaWJ1dGVkL1FMRC8xOTc5LmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIlRoZSBwb3NzaWJpbGl0eSBvZiBnaXZpbmcgZGlmZmVyZW50IHF1YWxpdHkgb2Ygc2VydmljZSB0byBqb2JzIG9mIGRpZmZlcmVudCBjbGFzc2VzIGJ5IHJlZ3VsYXRpbmcgdGhlaXIgbWVtb3J5IGFsbG9jYXRpb24gaXMgZXhhbWluZWQgaW4gdGhlIGNvbnRleHQgb2YgYSBwYWdlZCBjb21wdXRlciBzeXN0ZW0uIFR3byBwYXJhbWV0ZXJpemVkIGFsZ29yaXRobXMgd2hpY2ggcGFydGl0aW9uIHRoZSBtYWluIG1lbW9yeSBiZXR3ZWVuIHR3byBjbGFzc2VzIG9mIGpvYnMgYXJlIGNvbnNpZGVyZWQuIEluaXRpYWxseSwgYSBjbG9zZWQgc3lzdGVtIGNvbnNpc3Rpbmcgb2YgYSBwcm9jZXNzb3IgYW5kIHBhZ2luZyBhbmQgZmlsZSBkZXZpY2VzLCB3aXRoIGZpeGVkIG51bWJlciBvZiBqb2JzLCBpcyBzdHVkaWVkIHRvIGRldGVybWluZSBvcHRpbWFsIGRlZ3JlZXMgb2YgbXVsdGlwcm9ncmFtbWluZyBhbmQgdGhlIHByb3BvcnRpb24gb2YgcHJvY2Vzc29yIHRpbWUgZGV2b3RlZCB0byBlYWNoIGNsYXNzLiBBcHBseWluZyBhIGRlY29tcG9zaXRpb24gYXBwcm9hY2ggYW5kIHRyZWF0aW5nIHRoZSBjbG9zZWQgc3lzdGVtIGFzIGEgc2luZ2xlIHNlcnZlciwgdGhlIHJlc3BvbnNlIHRpbWVzIGluIGFuIG9wZW4gc3lzdGVtIHdpdGggZXh0ZXJuYWwgYXJyaXZhbHMgYXJlIHN0dWRpZWQuIFRoZSBvYmplY3QgaXMgdG8gaW52ZXN0aWdhdGUgdGhlIGVmZmVjdCBvZiB0aGUgbWVtb3J5IGFsbG9jYXRpb24gcGFyYW1ldGVycyBvbiB0aGUgZXhwZWN0ZWQgcmVzcG9uc2UgdGltZXMgdW5kZXIgdGhlIHR3byBhbGdvcml0aG1zLiBOdW1lcmljYWwgc29sdXRpb25zIGFuZCBlY29ub21pY2FsIGxvd2VyIGJvdW5kcyBmb3IgdGhlIGV4cGVjdGVkIHJlc3BvbnNlIHRpbWVzIGFzIGZ1bmN0aW9ucyBvZiB0aGUgY29udHJvbCBwYXJhbWV0ZXJzIGFyZSBvYnRhaW5lZC4gQSB3YXkgb2YgYXBwbHlpbmcgdGhlIHJlc3VsdHMgdG8gc3lzdGVtcyB3aXRoIG1vcmUgdGhhbiB0d28gam9iIGNsYXNzZXMgaXMgaW5kaWNhdGVkLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgYW5ub3RlID0gICAgICAgIlRoZSBwb3NzaWJpbGl0eSBvZiBnaXZpbmcgZGlmZmVyZW50IHF1YWxpdHkgb2Ygc2VydmljZSB0byBqb2JzIG9mIGRpZmZlcmVudCBjbGFzc2VzIGJ5IHJlZ3VsYXRpbmcgdGhlaXIgbWVtb3J5IGFsbG9jYXRpb24gaXMgZXhhbWluZWQgaW4gdGhlIGNvbnRleHQgb2YgYSBwYWdlZCBjb21wdXRlciBzeXN0ZW0uIiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKTsgQzYxNTBKIChPcGVyYXRpbmcgc3lzdGVtcykiLAogIGNsYXNzaWZpY2F0aW9uID0gIjcyMyIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIG9mIE5ld2Nhc3RsZSB1cG9uIFR5bmUsIE5ld2Nhc3RsZSB1cG9uIFR5bmUsIFVLIiwKICBjb3VudHJ5ID0gICAgICAiVVNBIiwKICBkZXNjcmlwdG9ycyA9ICAiUXVldWVpbmcgbmV0d29yazsgcmVzcG9uc2UgdGltZTsgbWVtb3J5IG1hbmFnZW1lbnQ7IHByaW9yaXR5OyBwZXJmb3JtYW5jZSBldmFsdWF0aW9uOyBtZW1vcnkgb3JnYW5pemF0aW9uOyBvcGVyYXRpbmcgc3lzdGVtOyIsCiAgZW51bSA9ICAgICAgICAgIjEzNjkiLAogIGpvdXJuYWxhYnIgPSAgICJDb21tdW4gQUNNIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgb3BlcmF0aW5nIHN5c3RlbXM7IGNvbnRyb2w7IG1lbW9yeSBhbGxvY2F0aW9uOyBtdWx0aWNsYXNzIHN5c3RlbXM7IG11bHRpcHJvZ3JhbW1pbmc7IG9wZXJhdGluZyBzeXN0ZW1zIChjb21wdXRlcnMpOyBwYWdlZCBjb21wdXRlcjsgcGFnaW5nOyBwZXJmb3JtYW5jZSBjb250cm9sOyBRdWV1ZWluZyBuZXR3b3JrczsgcmVzcG9uc2UgdGltZXM7IHN0b3JhZ2U7IHN0b3JhZ2UgYWxsb2NhdGlvbjsgc3lzdGVtOyB2aXJ0dWFsOyB2aXJ0dWFsIG1lbW9yeSIsCiAgbGFuZ3VhZ2UgPSAgICAgIkVuZ2xpc2giLAogIHJlZmVyZW5jZXMgPSAgICIxMyIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7S293YWxza2k6MTk3OTpBTEMsCiAgYXV0aG9yID0gICAgICAgIlJvYmVydCBBLiBLb3dhbHNraSIsCiAgdGl0bGUgPSAgICAgICAgIkFsZ29yaXRobSA9IExvZ2ljICsgQ29udHJvbCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMiIsCiAgbnVtYmVyID0gICAgICAgIjciLAogIHBhZ2VzID0gICAgICAgICI0MjQtLTQzNiIsCiAgbW9udGggPSAgICAgICAganVsLAogIHllYXIgPSAgICAgICAgICIxOTc5IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgImZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvQWkvcHJvbG9nLmJpYiBhbmQgZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9BaS9wcm9sb2cuMS5iaWIiLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDI0MCAoUHJvZ3JhbW1pbmcgYW5kIGFsZ29yaXRobSB0aGVvcnkpIiwKICBjb3Jwc291cmNlID0gICAiSW1wZXJpYWwgQ29sbC4sIExvbmRvbiwgVUsiLAogIGtleXdvcmRzID0gICAgICJhbGdvcml0aG07IGFsZ29yaXRobSB0aGVvcnk7IGNvbXB1dGVyIHByb2dyYW1zOyBjb250cm9sOyBsb2dpYzsgcHJvZ3JhbW1pbmcgdGhlb3J5OyBwcm9sb2c7IHRoZW9yZW0gcHJvdmluZyIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7V29uZzoxOTc5OlNBUCwKICBhdXRob3IgPSAgICAgICAiSi4gVy4gV29uZyBhbmQgRy4gU2NvdHQgR3JhaGFtIiwKICB0aXRsZSA9ICAgICAgICAiU2VsZi1Bc3Nlc3NtZW50IFByb2NlZHVyZSB7Vkl9OiBhIHNlbGYtYXNzZXNzbWVudCBwcm9jZWR1cmUgZGVhbGluZyB3aXRoIHF1ZXVlaW5nIG5ldHdvcmsgbW9kZWxzIG9mIGNvbXB1dGVyIHN5c3RlbXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjIiLAogIG51bWJlciA9ICAgICAgICI4IiwKICBwYWdlcyA9ICAgICAgICAiNDQ5LS00NTQiLAogIG1vbnRoID0gICAgICAgIGF1ZywKICB5ZWFyID0gICAgICAgICAiMTk3OSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlNhdCBKYW4gMTggMTU6NDQ6MzUgMTk5NyIsCiAgYmlic291cmNlID0gICAgImZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGlzdHJpYnV0ZWQvUUxELzE5NzkuYmliIiwKICBjb3VudHJ5ID0gICAgICAiVVNBIiwKICBkZXNjcmlwdG9ycyA9ICAiUXVldWVpbmcgc3lzdGVtOyBzaW11bGF0aW9uOyBtZWFzdXJlbWVudDsgY29tbXVuaWNhdGlvbiBuZXR3b3JrOyBzb2x2ZWQgZXhlcmNpc2U7IGJpYmxpb2dyYXBoeTsiLAogIGVudW0gPSAgICAgICAgICIzMzM1IiwKICBsYW5ndWFnZSA9ICAgICAiRW5nbGlzaCIsCiAgcmVmZXJlbmNlcyA9ICAgIjM0IiwKfQoKQEFydGljbGV7RmxveWQ6MTk3OTpQUCwKICBhdXRob3IgPSAgICAgICAiUi4gVy4gRmxveWQiLAogIHRpdGxlID0gICAgICAgICJUaGUgcGFyYWRpZ21zIG9mIHByb2dyYW1taW5nIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIyIiwKICBudW1iZXIgPSAgICAgICAiOCIsCiAgcGFnZXMgPSAgICAgICAgIjQ1NS0tNDYwIiwKICBtb250aCA9ICAgICAgICBhdWcsCiAgeWVhciA9ICAgICAgICAgIjE5NzkiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9BaS9jb25zdHIubG9naWMuYmliIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMTAgKFN5c3RlbXMgYW5hbHlzaXMgYW5kIHByb2dyYW1taW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIkRlcHQuIG9mIENvbXB1dGVyIFNjaS4sIFN0YW5mb3JkIFVuaXYuLCBTdGFuZm9yZCwgQ0EsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImNvbXB1dGVyIHByb2dyYW1zOyBsYW5ndWFnZXM7IHBhcmFkaWdtczsgcHJvZ3JhbW1pbmc7IHN0cnVjdHVyYWwgcHJvZ3JhbW1pbmciLAogIHRyZWF0bWVudCA9ICAgICJHIEdlbmVyYWwgUmV2aWV3IiwKfQoKQEFydGljbGV7SGlyc2NoYmVyZzoxOTc5OkNDQywKICBhdXRob3IgPSAgICAgICAiRC4gUy4gSGlyc2NoYmVyZyBhbmQgQS4gSy4gQ2hhbmRyYSBhbmQgRC4gVi4gU2Fyd2F0ZSIsCiAgdGl0bGUgPSAgICAgICAgIkNvbXB1dGluZyBDb25uZWN0ZWQgQ29tcG9uZW50cyBvbiBQYXJhbGxlbCBDb21wdXRlcnMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjIiLAogIG51bWJlciA9ICAgICAgICI4IiwKICBwYWdlcyA9ICAgICAgICAiNDYxLS00NjQiLAogIG1vbnRoID0gICAgICAgIGF1ZywKICB5ZWFyID0gICAgICAgICAiMTk3OSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4QzI1ICg2OEIyMCA2OEUxMCkiLAogIE1SbnVtYmVyID0gICAgICI4MGg6NjgwNDEiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9QYXJhbGxlbC9NdWx0aS5iaWIiLAogIGFic3RyYWN0ID0gICAgICJXZSBwcmVzZW50IGEgcGFyYWxsZWwgYWxnb3JpdGhtIHdoaWNoIHVzZXMgJG5eMiQgcHJvY2Vzc29ycyB0byBmaW5kIHRoZSBjb25uZWN0ZWQgY29tcG9uZW50cyBvZiBhbiB1bmRpcmVjdGVkIGdyYXBoIHdpdGggJG4kIHZlcnRpY2VzIGluIHRpbWUgJE8obG9nMm4pJC4gQW4gJE8oXGxvZ18ybikkIHRpbWUgYm91bmQgYWxzbyBjYW4gYmUgYWNoaWV2ZWQgdXNpbmcgb25seSAkbiBuL1xsb2dfMm4kIHByb2Nlc3NvcnMuIFRoZSBhbGdvcml0aG0gY2FuIGJlIHVzZWQgdG8gZmluZCB0aGUgdHJhbnNpdGl2ZSBjbG9zdXJlIG9mIGEgc3ltbWV0cmljIEJvb2xlYW4gbWF0cml4LiBXZSBhc3N1bWUgdGhhdCB0aGUgcHJvY2Vzc29ycyBoYXZlIGFjY2VzcyB0byBhIGNvbW1vbiBtZW1vcnkuIFNpbXVsdGFuZW91cyBhY2Nlc3MgdG8gdGhlIHNhbWUgbG9jYXRpb24gaXMgcGVybWl0dGVkIGZvciBmZXRjaCBpbnN0cnVjdGlvbnMgYnV0IG5vdCBmb3Igc3RvcmUgaW5zdHJ1Y3Rpb25zLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbik7IEM2MTUwSiAoT3BlcmF0aW5nIHN5c3RlbXMpIiwKICBjb3Jwc291cmNlID0gICAiRGVwdC4gb2YgRWxlY3RyaWNhbCBFbmduZy4sIFJpY2UgVW5pdi4sIEhvdXN0b24sIFRYLCBVU0EiLAogIGtleXdvcmRzID0gICAgICIoY29tcHV0ZXJzKTsgYWxnb3JpdGhtOyBhbGdvcml0aG1zOyBCb29sZWFuIG1hdHJpeDsgY29ubmVjdGVkIGNvbXBvbmVudDsgY29ubmVjdGVkIGNvbXBvbmVudHM7IGZldGNoIGluc3RydWN0aW9uczsgZmlsZSBvcmdhbmlzYXRpb247IEdyYXBoIHRoZW9yeTsgZ3JhcGggdGhlb3J5OyBvcGVyYXRpbmcgc3lzdGVtczsgT1M7IHBhcmFsbGVsOyBwYXJhbGxlbCBjb21wdXRlcnM7IHBhcmFsbGVsIHByb2Nlc3Npbmc7IHN0b3JlIGluc3RydWN0aW9uczsgdGltZSBib3VuZDsgdHJhbnNpdGl2ZSBjbG9zdXJlOyB1bmRpcmVjdGVkIGdyYXBoIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWw7IFQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7RGVyc2hvd2l0ejoxOTc5OlBUTSwKICBhdXRob3IgPSAgICAgICAiTmFjaHVtIERlcnNob3dpdHogYW5kIFpvaGFyIE1hbm5hIiwKICB0aXRsZSA9ICAgICAgICAiUHJvdmluZyBUZXJtaW5hdGlvbiB3aXRoIE11bHRpc2V0IE9yZGVyaW5ncyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMiIsCiAgbnVtYmVyID0gICAgICAgIjgiLAogIHBhZ2VzID0gICAgICAgICI0NjUtLTQ3NiIsCiAgbW9udGggPSAgICAgICAgYXVnLAogIHllYXIgPSAgICAgICAgICIxOTc5IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjhCMTAiLAogIE1SbnVtYmVyID0gICAgICI4MGc6NjgwMTciLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9UaGVvcnkvb2JzY3VyZS5iaWIiLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDI0MCAoUHJvZ3JhbW1pbmcgYW5kIGFsZ29yaXRobSB0aGVvcnkpIiwKICBjb3Jwc291cmNlID0gICAiQ29tcHV0ZXIgU2NpLiBEZXB0LiwgU3RhbmZvcmQgVW5pdi4sIFN0YW5mb3JkLCBDQSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAibXVsdGlzZXQgb3JkZXJpbmdzOyBwcm9ncmFtIHZhcmlhYmxlczsgcHJvZ3JhbW1pbmcgdGhlb3J5OyBwcm92aW5nIHRoZSB0ZXJtaW5hdGlvbiBvZiBwcm9ncmFtczsgdGVybWluYXRpb24gZnVuY3Rpb24iLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0Rlbm5pbmc6MTk3OTpTUEMsCiAgYXV0aG9yID0gICAgICAgIkRvcm90aHkgRS4gRGVubmluZyIsCiAgdGl0bGUgPSAgICAgICAgIlNlY3VyZSBQZXJzb25hbCBDb21wdXRpbmcgaW4gYW4gSW5zZWN1cmUgTmV0d29yayIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMiIsCiAgbnVtYmVyID0gICAgICAgIjgiLAogIHBhZ2VzID0gICAgICAgICI0NzYtLTQ4MiIsCiAgbW9udGggPSAgICAgICAgYXVnLAogIHllYXIgPSAgICAgICAgICIxOTc5IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjhBMDUgKDY4QjE1IDk0QTk5KSIsCiAgTVJudW1iZXIgPSAgICAgIjgwZDo2ODAxMCIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKSIsCiAgY29ycHNvdXJjZSA9ICAgIkNvbXB1dGVyIFNjaS4gRGVwdC4sIFB1cmR1ZSBVbml2LiwgV2VzdCBMYWZheWV0dGUsIElOLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJjb21tdW5pY2F0aW9uIGxpbmtzOyBjb25maWRlbnRpYWwgZGF0YTsgY29uZmlkZW50aWFsIGZpbGVzOyBlbmNvZGluZzsgZW5jcnlwdGlvbjsgaW5zZWN1cmUgbmV0d29yazsgc2VjdXJlIHBlcnNvbmFsIGNvbXB1dGluZzsgc2VjdXJpdHkgb2YgZGF0YSIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7TmVsc29uOjE5Nzk6RlJTLAogIGF1dGhvciA9ICAgICAgICJMLiBTLiBOZWxzb24iLAogIHRpdGxlID0gICAgICAgICJGdXJ0aGVyIHJlbWFyayBvbiBzdGFibHkgdXBkYXRpbmcgbWVhbiBhbmQgc3RhbmRhcmQgZGV2aWF0aW9uIGVzdGltYXRlcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMiIsCiAgbnVtYmVyID0gICAgICAgIjgiLAogIHBhZ2VzID0gICAgICAgICI0ODMtLTQ4MyIsCiAgbW9udGggPSAgICAgICAgYXVnLAogIHllYXIgPSAgICAgICAgICIxOTc5IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgImZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGlzdHJpYnV0ZWQvUUxELzE5NzkuYmliIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMTAgKFN5c3RlbXMgYW5hbHlzaXMgYW5kIHByb2dyYW1taW5nKTsgQzczMTAgKE1hdGhlbWF0aWNzIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJBcHBsLiBNYXRoLiBMYWIuLCBHZW5lcmFsIEVsZWN0cmljIENvLiwgTG91aXN2aWxsZSwgS1ksIFVTQSIsCiAgY291bnRyeSA9ICAgICAgIlVTQSIsCiAgZGVzY3JpcHRvcnMgPSAgImV4cGVjdGF0aW9uOyBzdGFuZGFyZCBkZXZpYXRpb247IG1vbWVudCBlc3RpbWF0aW9uOyBudW1lcmljYWwgbWV0aG9kIiwKICBlbnVtID0gICAgICAgICAiMjI0OSIsCiAga2V5d29yZHMgPSAgICAgIk1lYW47IHByb2dyYW1taW5nOyBzdGFuZGFyZCBkZXZpYXRpb247IHN0YW5kYXJkIGRldmlhdGlvbiBlc3RpbWF0ZXM7IHN0YXRpc3RpY3M7IHVwZGF0aW5nIiwKICBsYW5ndWFnZSA9ICAgICAiRW5nbGlzaCIsCiAgcmVmZXJlbmNlcyA9ICAgIjMiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbDsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtGZWxkbWFuOjE5Nzk6UkVDLAogIGF1dGhvciA9ICAgICAgICJKZXJvbWUgQS4gRmVsZG1hbiBhbmQgV2lsbGlhbSBSLiBTdXRoZXJsYW5kIiwKICB0aXRsZSA9ICAgICAgICAiUmVqdXZlbmF0aW5nIEV4cGVyaW1lbnRhbCBDb21wdXRlciBTY2llbmNlIC0tLSB7QX0gUmVwb3J0IHRvIHRoZSB7TmF0aW9uYWwgU2NpZW5jZSBGb3VuZGF0aW9ufSBhbmQgT3RoZXJzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIyIiwKICBudW1iZXIgPSAgICAgICAiOSIsCiAgcGFnZXMgPSAgICAgICAgIjQ5Ny0tNTAyIiwKICBtb250aCA9ICAgICAgICBzZXAsCiAgeWVhciA9ICAgICAgICAgIjE5NzkiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhYnN0cmFjdCA9ICAgICAiVGhpcyByZXBvcnQgaXMgYmFzZWQgb24gdGhlIHJlc3VsdHMgb2YgYW4gTlNGIHNwb25zb3JlZCB3b3Jrc2hvcCBoZWxkIGluIFdhc2hpbmd0b24sIERDLCBvbiBOb3ZlbWJlciAyLCAxOTc4LiBUaGUgY28tYXV0aG9ycyBvZiB0aGUgcmVwb3J0IGFyZTogR29yZG9uIEJlbGwsIERpZ2l0YWwgRXF1aXBtZW50IENvcnBvcmF0aW9uOyBCZXJuYXJkIEEuIEdhbGxlciwgVW5pdmVyc2l0eSBvZiBNaWNoaWdhbjsgUGF0cmljaWEgR29sZGJlcmcsIElCTSBDb3Jwb3JhdGlvbjsgSm9obiBIYW1ibGVuLCBVbml2ZXJzaXR5IG9mIE1pc3NvdXJpIGF0IFJvbGxhOyBFbGxpb3QgUGluc29uLCBCZWxsIFRlbGVwaG9uZSBMYWJvcmF0b3JpZXM7IGFuZCBJdmFuIFN1dGhlcmxhbmQsIENhbGlmb3JuaWEgSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3kuIEFsc28gcGFydGljaXBhdGluZyBpbiB0aGUgd29ya3Nob3Agd2VyZSByZXByZXNlbnRhdGl2ZXMgb2YgTlNGIGFuZCBvdGhlciBnb3Zlcm5tZW50IGFnZW5jaWVzLiBJbiBhZGRpdGlvbiB0byB0aGUgYXV0aG9ycywgYSBudW1iZXIgb2Ygb3RoZXIgcGVvcGxlIGhhdmUgY29udHJpYnV0ZWQgdG8gdGhlIGNvbnRlbnRzIG9mIHRoaXMgcmVwb3J0LiBJbiBwcmVwYXJhdGlvbiBmb3IgdGhlIG9yaWdpbmFsIHdvcmtzaG9wLCBhbGwgZG9jdG9yYXRlLWdyYW50aW5nIGNvbXB1dGVyIHNjaWVuY2UgZGVwYXJ0bWVudHMgaW4gdGhlIG5hdGlvbiB3ZXJlIGFza2VkIGZvciBjb21tZW50cyBhbmQgc3VnZ2VzdGlvbnMgb24gdGhlIHByb2JsZW1zIG9mIGV4cGVyaW1lbnRhbCBjb21wdXRlciBzY2llbmNlLiBBIHZlcnNpb24gb2YgdGhlIGN1cnJlbnQgcmVwb3J0IGRhdGVkIEphbnVhcnkgMTUgd2FzIGNpcmN1bGF0ZWQgdG8gdGhlc2UgZGVwYXJ0bWVudHMgYW5kIHRvIGEgbnVtYmVyIG9mIGluZHVzdHJpYWwgYW5kIGdvdmVybm1lbnQgZ3JvdXBzIGZvciBjcml0aWNpc20uIFRoZSBlZGl0b3JzIGFuZCBhdXRob3JzIG9mIHRoaXMgZmluYWwgdmVyc2lvbiBncmF0ZWZ1bGx5IGFja25vd2xlZGdlIHRoZSBjb250cmlidXRpb24gb2YgYSBsYXJnZSBudW1iZXIgb2Ygb3RoZXIgcGVvcGxlIGF0IGFsbCBzdGFnZXMgaW4gdGhlIHByZXBhcmF0aW9uIG9mIHRoZSByZXBvcnQuIFxwYXIgTm90ZTogRm9sbG93aW5nIHRoaXMgcHJlc2VudGF0aW9uIG9mIHRoZSByZXBvcnQsIHRoZXJlIGlzIGEgcG9zaXRpb24gcGFwZXIgb24gdGhlIGNyaXNpcyBpbiBleHBlcmltZW50YWwgY29tcHV0ZXIgc2NpZW5jZSB3cml0dGVuIGJ5IHRoZSBBQ00gRXhlY3V0aXZlIENvbW1pdHRlZS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDMDIyMCAoQ29tcHV0aW5nIGVkdWNhdGlvbiBhbmQgdHJhaW5pbmcpIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gb2YgUm9jaGVzdGVyLCBSb2NoZXN0ZXIsIE5ZLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJjYXBpdGFsIGVxdWlwbWVudDsgY29tcHV0ZXIgc2NpZW5jZSBlZHVjYXRpb247IGV4cGVyaW1lbnRhbCBjb21wdXRlciBzY2llbmNlOyBpbnZlc3RtZW50OyB1bml2ZXJzaXRpZXMiLAogIHRyZWF0bWVudCA9ICAgICJHIEdlbmVyYWwgUmV2aWV3IiwKfQoKQEFydGljbGV7TWNDcmFja2VuOjE5Nzk6QUFFLAogIGF1dGhvciA9ICAgICAgICJEYW5pZWwgRC4ge01jQ3JhY2tlbiwgQ0NQfSBhbmQgUGV0ZXIgSi4gRGVubmluZyBhbmQgRGF2aWQgSC4gQnJhbmRpbiIsCiAgdGl0bGUgPSAgICAgICAgIkFkZGVuZHVtOiBBbiB7QUNNfSBFeGVjdXRpdmUgQ29tbWl0dGVlIFBvc2l0aW9uIG9uIHRoZSBDcmlzaXMgaW4gRXhwZXJpbWVudGFsIENvbXB1dGVyIFNjaWVuY2UiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjIiLAogIG51bWJlciA9ICAgICAgICI5IiwKICBwYWdlcyA9ICAgICAgICAiNTAzLS01MDQiLAogIG1vbnRoID0gICAgICAgIHNlcCwKICB5ZWFyID0gICAgICAgICAiMTk3OSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlNhdCBKYW4gMTggMTU6NDY6MTMgMTk5NyIsCn0KCkBBcnRpY2xle0dhbGlsOjE5Nzk6SVdDLAogIGF1dGhvciA9ICAgICAgICJadmkgR2FsaWwiLAogIHRpdGxlID0gICAgICAgICJPbiBJbXByb3ZpbmcgdGhlIFdvcnNlIENhc2UgUnVubmluZyBUaW1lIG9mIHRoZSB7Qm95ZXItTW9vcmV9IFN0cmluZyBNYXRjaGluZyBBbGdvcml0aG0iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjIiLAogIG51bWJlciA9ICAgICAgICI5IiwKICBwYWdlcyA9ICAgICAgICAiNTA1LS01MDgiLAogIG1vbnRoID0gICAgICAgIHNlcCwKICB5ZWFyID0gICAgICAgICAiMTk3OSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4SDA1ICg2OEMyNSkiLAogIE1SbnVtYmVyID0gICAgICI4MG06NjgwODMiLAogIG1ycmV2aWV3ZXIgPSAgICJBbmRyZXcgWWFvIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgImZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGF0YWJhc2UvV2llZGVyaG9sZC5iaWIiLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGFubm90ZSA9ICAgICAgICJJdCBjb21wYXJlcyB0aGUgcGF0dGVybiB3aXRoIHRoZSB0ZXh0IGZyb20gdGhlIHJpZ2h0IGVuZCBvZiB0aGUgcGF0dGVybi4gV2hlbmV2ZXIgYSBtaXNtYXRjaCBvY2N1cnMsIGl0IHNoaWZ0cyB0aGUgcGF0dGVybiBhY2NvcmRpbmcgdG8gYSBwcmVjb21wdXRlZCB0YWJsZS4gSW4gdGhlIGNhc2UgdGhhdCB0aGUgdGV4dCBjaGFyYWN0ZXIgcG9zaXRpb25lZCBhZ2FpbnN0IHRoZSBsYXN0IGNoYXJhY3RlciBpbiB0aGUgcGF0dGVybiBkb2VzIG5vdCBhcHBlYXIgaW4gdGhlIHBhdHRlcm4sIHdlIGNhbiBpbW1lZGlhdGVseSBzaGlmdCB0aGUgcGF0dGVybiByaWdodCBhIGRpc3RhbmNlIGVxdWFsIHRvIHRoZSBzaXplIG9mIHRoZSBwYXR0ZXJuLiBUaHVzLCB3ZSBuZWVkIHRvIGluc3BlY3Qgb25seSBhYm91dCAkbi9tJCBjaGFyYWN0ZXJzIG9mIHRoZSB0ZXh0ICh3aGVyZSAkbiQgYW5kICRtJCBhcmUgdGhlIHNpemVzIG9mIHRoZSB0ZXh0IHBhdHRlcm4pLiIsCiAgY2xhc3Njb2RlcyA9ICAgIkM0MjQwIChQcm9ncmFtbWluZyBhbmQgYWxnb3JpdGhtIHRoZW9yeSk7IEM2MTMwIChEYXRhIGhhbmRsaW5nIHRlY2huaXF1ZXMpIiwKICBjb3Jwc291cmNlID0gICAiVGVsLUF2aXYgVW5pdi4sIFRlbC1Bdml2LCBJc3JhZWwiLAogIGtleXdvcmRzID0gICAgICJhbGdvcml0aG07IGNvbXB1dGF0aW9uYWwgY29tcGxleGl0eTsgZGF0YSBoYW5kbGluZzsgcnVubmluZyB0aW1lOyBzdHJpbmcgbWF0Y2hpbmc7IHdvcnN0IGNhc2UiLAogIHRyZWF0bWVudCA9ICAgICJUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle1JhaWhhOjE5Nzk6T0lBLAogIGF1dGhvciA9ICAgICAgICJLYXJpLUpvdWtvIFJ7XCJhfWloe1wiYX0gYW5kIFN0dWFydCBILiBad2ViZW4iLAogIHRpdGxlID0gICAgICAgICJBbiBPcHRpbWFsIEluc2VydGlvbiBBbGdvcml0aG0gZm9yIE9uZS1TaWRlZCBIZWlnaHQtQmFsYW5jZWQgQmluYXJ5IFNlYXJjaCBUcmVlcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMiIsCiAgbnVtYmVyID0gICAgICAgIjkiLAogIHBhZ2VzID0gICAgICAgICI1MDgtLTUxMiIsCiAgbW9udGggPSAgICAgICAgc2VwLAogIHllYXIgPSAgICAgICAgICIxOTc5IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBNUmNsYXNzID0gICAgICAiNjhDMjUgKDY4RTEwKSIsCiAgTVJudW1iZXIgPSAgICAgIjgwaDo2ODA0NCIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0Rpc3RyaWJ1dGVkL1FMRC8xOTc5LmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIkFuIGFsZ29yaXRobSBmb3IgaW5zZXJ0aW5nIGFuIGVsZW1lbnQgaW50byBhIG9uZS1zaWRlZCBoZWlnaHQtYmFsYW5jZWQgKE9TSEIpIGJpbmFyeSBzZWFyY2ggdHJlZSBpcyBwcmVzZW50ZWQuIFRoZSBhbGdvcml0aG0gb3BlcmF0ZXMgaW4gdGltZSAkTyhcbG9nIG4pJCwgd2hlcmUgJG4kIGlzIHRoZSBudW1iZXIgb2Ygbm9kZXMgaW4gdGhlIHRyZWUuIFRoaXMgcmVwcmVzZW50cyBhbiBpbXByb3ZlbWVudCBvdmVyIHRoZSBiZXN0IHByZXZpb3VzIGx5IGtub3duIGluc2VydGlvbiBhbGdvcml0aG1zIG9mIEhpcnNjaGJlcmcgYW5kIEtvc2FyYWp1LCB3aGljaCByZXF1aXJlIHRpbWUgJE8oXGxvZyAybikkLiBNb3Jlb3ZlciwgdGhlICRPKFxsb2cgbikkIGNvbXBsZXhpdHkgaXMgb3B0aW1hbC4gRWFybGllciByZXN1bHRzIGhhdmUgc2hvd24gdGhhdCBkZWxldGlvbiBpbiBzdWNoIGEgc3RydWN0dXJlIGNhbiBhbHNvIGJlIHBlcmZvcm1lZCBpbiAkTyhcbG9nIG4pJCB0aW1lLiBUaHVzIHRoZSByZXN1bHQgb2YgdGhpcyBwYXBlciBnaXZlcyBhIG5lZ2F0aXZlIGFuc3dlciB0byB0aGUgcXVlc3Rpb24gb2Ygd2hldGhlciBzdWNoIHRyZWVzIHNob3VsZCBiZSB0aGUgZmlyc3QgZXhhbXBsZXMgb2YgdGhlaXIga2luZCwgd2hlcmUgZGVsZXRpb24gaGFzIGEgc21hbGxlciB0aW1lIGNvbXBsZXhpdHkgdGhhbiBpbnNlcnRpb24uIEZ1cnRoZXJtb3JlLCBpdCBjYW4gbm93IGJlIGNvbmNsdWRlZCB0aGF0IGluc2VydGlvbiwgZGVsZXRpb24sIGFuZCByZXRyaWV2YWwgaW4gT1NIQiB0cmVlcyBjYW4gYmUgcGVyZm9ybWVkIGluIHRoZSBzYW1lIHRpbWUgYXMgdGhlIGNvcnJlc3BvbmRpbmcgb3BlcmF0aW9ucyBmb3IgdGhlIG1vcmUgZ2VuZXJhbCBBVkwgdHJlZXMsIHRvIHdpdGhpbiBhIGNvbnN0YW50IGZhY3Rvci4gSG93ZXZlciwgdGhlIGluc2VydGlvbiBhbmQgZGVsZXRpb24gYWxnb3JpdGhtcyBmb3IgT1NIQiB0cmVlcyBhcHBlYXIgbXVjaCBtb3JlIGNvbXBsaWNhdGVkIHRoYW4gdGhlIGNvcnJlc3BvbmRpbmcgYWxnb3JpdGhtcyBmb3IgQVZMIHRyZWVzLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgYW5ub3RlID0gICAgICAgIkFuIGFsZ29yaXRobSBmb3IgaW5zZXJ0aW5nIGFuIGVsZW1lbnQgaW50byBhIG9uZS1zaWRlZCBoZWlnaHQtYmFsYW5jZWQgKE9TSEIpIGJpbmFyeSBzZWFyY2ggdHJlZSBpcyBwcmVzZW50ZWQuIFRoZSBhbGdvcml0aG0gb3BlcmF0ZXMgaW4gdGltZSAkTyhcbG9ne059KSQsIHdoZXJlICROJCBpcyB0aGUgbnVtYmVyIG9mIG5vZGVzIGluIHRoZSB0cmVlLiBUaGlzIHJlcHJlc2VudHMgYW4gaW1wcm92ZW1lbnQgb3ZlciB0aGUgYmVzdCBwcmV2aW91c2x5IGtub3duIGluc2VydGlvbiBhbGdvcml0aG1zIG9mIEhpcnNjaGJlcmcgYW5kIEtvc2FyYWp1LCB3aGljaCByZXF1aXJlIHRpbWUgJE8oXGxvZ3tOfVxsb2d7Tn0pJC4iLAogIGNsYXNzY29kZXMgPSAgICJDNDI0MCAoUHJvZ3JhbW1pbmcgYW5kIGFsZ29yaXRobSB0aGVvcnkpOyBDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIG9mIEhlbHNpbmtpLCBIZWxzaW5raSwgRmlubGFuZCIsCiAgY291bnRyeSA9ICAgICAgIlVTQSIsCiAgZGVzY3JpcHRvcnMgPSAgIk1ldGhvZDsgaW5mb3JtYXRpb24gc3lzdGVtOyBzZWFyY2ggdHJlZTsgZ3JhcGggdGhlb3J5OyIsCiAgZW51bSA9ICAgICAgICAgIjI0ODYiLAogIGtleXdvcmRzID0gICAgICJiaW5hcnk7IGJpbmFyeSB0cmVlczsgZGF0YSBoYW5kbGluZzsgaGVpZ2h0IGJhbGFuY2VkOyBoZWlnaHQtYmFsYW5jZWQgdHJlZXM7IEluc2VydGlvbjsgaW5zZXJ0aW9uIGFsZ29yaXRobTsgb25lOyBvbmUtc2lkZWQgaGVpZ2h0LWJhbGFuY2VkIHRyZWVzOyBvcHRpbWFsOyBzZWFyY2ggdHJlZXM7IHNlYXJjaCB0cmVlcy47IHNpZGVkIiwKICBsYW5ndWFnZSA9ICAgICAiRW5nbGlzaCIsCiAgcmVmZXJlbmNlcyA9ICAgIjEzIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtIYW5zZW46MTk3OTpQQUQsCiAgYXV0aG9yID0gICAgICAgIldpbGZyZWQgSi4gSGFuc2VuIiwKICB0aXRsZSA9ICAgICAgICAiUHJvZ3Jlc3NpdmUgYWN5Y2xpYyBkaWdyYXBocyAtLS0gYSB0b29sIGZvciBkYXRhYmFzZSBpbnRlZ3JpdHkiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjIiLAogIG51bWJlciA9ICAgICAgICI5IiwKICBwYWdlcyA9ICAgICAgICAiNTEzLS01MTgiLAogIG1vbnRoID0gICAgICAgIHNlcCwKICB5ZWFyID0gICAgICAgICAiMTk3OSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4QjE1ICg2OEMwNSkiLAogIE1SbnVtYmVyID0gICAgICI4MGg6NjgwMTEiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzExNjAgKENvbWJpbmF0b3JpYWwgbWF0aGVtYXRpY3MpOyBDNDI0MCAoUHJvZ3JhbW1pbmcgYW5kIGFsZ29yaXRobSB0aGVvcnkpOyBDNjE2MCAoRGF0YWJhc2UgbWFuYWdlbWVudCBzeXN0ZW1zIChEQk1TKSkiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBvZiBJbGxpbm9pcywgVXJiYW5hLCBJTCwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiZGF0YWJhc2UgaW50ZWdyaXR5OyBkYXRhYmFzZSBtYW5hZ2VtZW50IHN5c3RlbXM7IGRpcmVjdGVkIGdyYXBoczsgcHJvZ3Jlc3NpdmUgYWN5Y2xpYyBkaWdyYXBoIiwKICB0cmVhdG1lbnQgPSAgICAiVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAp9CgpAQXJ0aWNsZXtOYWd5OjE5Nzk6QVBNLAogIGF1dGhvciA9ICAgICAgICJHLiBOYWd5IGFuZCBTLiBHLiBXYWdsZSIsCiAgdGl0bGUgPSAgICAgICAgIkFwcHJveGltYXRpb24gb2YgUG9seWdvbmFsIE1hcHMgYnkgQ2VsbHVsYXIgTWFwcyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMiIsCiAgbnVtYmVyID0gICAgICAgIjkiLAogIHBhZ2VzID0gICAgICAgICI1MTgtLTUyNSIsCiAgbW9udGggPSAgICAgICAgc2VwLAogIHllYXIgPSAgICAgICAgICIxOTc5IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgImZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvR3JhcGhpY3MvaW1hZ2VyL2ltYWdlci43OS5iaWIiLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEyMCAoRmlsZSBvcmdhbmlzYXRpb24pOyBDNzM0MCAoR2VvcGh5c2ljcyBjb21wdXRpbmcpIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gb2YgTmVicmFza2EsIExpbmNvbG4sIE5FLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJhbmQgQXBwbGljYXRpb25zOyBhcHByb3hpbWF0aW9uOyBjYXJ0b2dyYXBoeTsgY2VsbHVsYXIgbWFwczsgZGF0YSBzdHJ1Y3R1cmU7IGRhdGEgc3RydWN0dXJlczsgZ2VvZ3JhcGhpY2FsOyBtYXRoZW1hdGljYWwgYXNwZWN0czsgcG9seWdvbmFsIG1hcHMiLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCiAgeHhhdXRob3IgPSAgICAgIkcuIE5hZ3kgYW5kIEcuIFdhZ2xlIiwKfQoKQEFydGljbGV7Q2hhbjoxOTc5OkNTRCwKICBhdXRob3IgPSAgICAgICAiVC4gRi4gQ2hhbiBhbmQgSi4gRy4gTGV3aXMiLAogIHRpdGxlID0gICAgICAgICJDb21wdXRpbmcgc3RhbmRhcmQgZGV2aWF0aW9uczogYWNjdXJhY3kiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjIiLAogIG51bWJlciA9ICAgICAgICI5IiwKICBwYWdlcyA9ICAgICAgICAiNTI2LS01MzEiLAogIG1vbnRoID0gICAgICAgIHNlcCwKICB5ZWFyID0gICAgICAgICAiMTk3OSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0Rpc3RyaWJ1dGVkL1FMRC8xOTc5LmJpYiIsCiAgYWJzdHJhY3QgPSAgICAgIkZvdXIgYWxnb3JpdGhtcyBmb3IgdGhlIG51bWVyaWNhbCBjb21wdXRhdGlvbiBvZiB0aGUgc3RhbmRhcmQgZGV2aWF0aW9uIG9mICh1bndlaWdodGVkKSBzYW1wbGVkIGRhdGEgYXJlIGFuYWx5emVkLiBUd28gb2YgdGhlIGFsZ29yaXRobXMgYXJlIHdlbGwta25vd24gaW4gdGhlIHN0YXRpc3RpY2FsIGFuZCBjb21wdXRhdGlvbmFsIGxpdGVyYXR1cmU7IHRoZSBvdGhlciB0d28gYXJlIG5ldyBhbGdvcml0aG1zIHNwZWNpZmljYWxseSBpbnRlbmRlZCBmb3IgYXV0b21hdGljIGNvbXB1dGF0aW9uLiBPdXIgZGlzY3Vzc2lvbiBpcyBleHBvc2l0b3J5LCB3aXRoIGVtcGhhc2lzIG9uIHJlYWNoaW5nIGEgc3VpdGFibGUgZGVmaW5pdGlvbiBvZiBgYGFjY3VyYWN5LicnIEVhY2ggb2YgdGhlIGZvdXIgYWxnb3JpdGhtcyBpcyBhbmFseXplZCBmb3IgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggaXQgd2lsbCBiZSBhY2N1cmF0ZS4gV2UgY29uY2x1ZGUgdGhhdCBhbGwgZm91ciBhbGdvcml0aG1zIHdpbGwgcHJvdmlkZSBhY2N1cmF0ZSBhbnN3ZXJzIGZvciBtYW55IHByb2JsZW1zLCBidXQgdHdvIG9mIHRoZSBhbGdvcml0aG1zLCBvbmUgbmV3LCBvbmUgb2xkLCBhcmUgc3Vic3RhbnRpYWxseSBtb3JlIGFjY3VyYXRlIG9uIGRpZmZpY3VsdCBwcm9ibGVtcyB0aGFuIGFyZSB0aGUgb3RoZXIgdHdvLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkMxMTQwWiAoT3RoZXIgdG9waWNzIGluIHN0YXRpc3RpY3MpOyBDNzMxMCAoTWF0aGVtYXRpY3MgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIlN0YW5mb3JkIFVuaXYuLCBTdGFuZm9yZCwgQ0EsIFVTQSIsCiAgY291bnRyeSA9ICAgICAgIlVTQSIsCiAgZGVzY3JpcHRvcnMgPSAgIkV4cGVjdGF0aW9uOyBzdGFuZGFyZCBkZXZpYXRpb247IG1vbWVudCBlc3RpbWF0aW9uOyBudW1lcmljYWwgbWV0aG9kOyBjb21wYXJpc29uOyBydW50aW1lL3N0b3JhZ2UgZWZmaWNpZW5jeTsgcm91bmRpbmcgZXJyb3I7IGNvbXB1dGVyIGFyaXRobWV0aWM7IiwKICBlbnVtID0gICAgICAgICAiNTE1IiwKICBrZXl3b3JkcyA9ICAgICAiYWNjdXJhY3k7IGNvbmRpdGlvbiBudW1iZXIuOyBsZWFzdCBzcXVhcmVzOyBNZWFuOyBudW1lcmljYWwgY29tcHV0YXRpb247IHJvdW5kaW5nIGVycm9yIGFuYWx5c2lzOyBzYW1wbGVkIGRhdGE7IHN0YW5kYXJkIGRldmlhdGlvbjsgc3RhbmRhcmQgZGV2aWF0aW9uczsgc3RhdGlzdGljczsgdXBkYXRpbmcgZXN0aW1hdGVzIiwKICBsYW5ndWFnZSA9ICAgICAiRW5nbGlzaCIsCiAgcmVmZXJlbmNlcyA9ICAgIjExIiwKICB0cmVhdG1lbnQgPSAgICAiQSBBcHBsaWNhdGlvbjsgVCBUaGVvcmV0aWNhbCBvciBNYXRoZW1hdGljYWwiLAogIHh4dGl0bGUgPSAgICAgICJDb21wdXRpbmcgU3RhbmRhcmQgRGV2aWF0aW9uOiBBY2N1cmFjeSIsCn0KCkBBcnRpY2xle1dlc3Q6MTk3OTpVTVYsCiAgYXV0aG9yID0gICAgICAgIkQuIEguIEQuIFdlc3QiLAogIHRpdGxlID0gICAgICAgICJVcGRhdGluZyBtZWFuIGFuZCB2YXJpYW5jZSBlc3RpbWF0ZXM6IGFuIGltcHJvdmVkIG1ldGhvZCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMiIsCiAgbnVtYmVyID0gICAgICAgIjkiLAogIHBhZ2VzID0gICAgICAgICI1MzItLTUzNSIsCiAgbW9udGggPSAgICAgICAgc2VwLAogIHllYXIgPSAgICAgICAgICIxOTc5IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYmlic291cmNlID0gICAgImZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGlzdHJpYnV0ZWQvUUxELzE5NzkuYmliIGFuZCBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L1RoZW9yeS9NYXRyaXguYmliIiwKICBhYnN0cmFjdCA9ICAgICAiQSBtZXRob2Qgb2YgaW1wcm92ZWQgZWZmaWNpZW5jeSBpcyBnaXZlbiBmb3IgdXBkYXRpbmcgdGhlIG1lYW4gYW5kIHZhcmlhbmNlIG9mIHdlaWdodGVkIHNhbXBsZWQgZGF0YSB3aGVuIGFuIGFkZGl0aW9uYWwgZGF0YSB2YWx1ZSBpcyBpbmNsdWRlZCBpbiB0aGUgc2V0LiBFdmlkZW5jZSBpcyBwcmVzZW50ZWQgdGhhdCB0aGUgbWV0aG9kIGlzIHN0YWJsZSBhbmQgYXQgbGVhc3QgYXMgYWNjdXJhdGUgYXMgdGhlIGJlc3QgZXhpc3RpbmcgdXBkYXRpbmcgbWV0aG9kLiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgYW5ub3RlID0gICAgICAgIkEgbWV0aG9kIG9mIGltcHJvdmVkIGVmZmljaWVuY3kgaXMgZ2l2ZW4gZm9yIHVwZGF0aW5nIHRoZSBtZWFuIGFuZCB2YXJpYW5jZSBvZiB3ZWlnaHRlZCBzYW1wbGVkIGRhdGEgd2hlbiBhbiBhZGRpdGlvbmFsIGRhdGEgdmFsdWUgaXMgaW5jbHVkZWQgaW4gdGhlIHNldC4gRXZpZGVuY2UgaXMgcHJlc2VudGVkIHRoYXQgdGhlIG1ldGhvZCBpcyBzdGFibGUgYW5kIGF0IGxlYXN0IGFzIGFjY3VyYXRlIGFzIHRoZSBiZXN0IGV4aXN0aW5nIHVwZGF0aW5nIG1ldGhvZC4iLAogIGNsYXNzY29kZXMgPSAgICJDMTE0MFogKE90aGVyIHRvcGljcyBpbiBzdGF0aXN0aWNzKTsgQzczMTAgKE1hdGhlbWF0aWNzIGNvbXB1dGluZykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBvZiBEdWJsaW4sIER1YmxpbiwgSXJlbGFuZCIsCiAgY291bnRyeSA9ICAgICAgIlVTQSIsCiAgZGVzY3JpcHRvcnMgPSAgIkV4cGVjdGF0aW9uOyBzdGFuZGFyZCBkZXZpYXRpb247IG1vbWVudCBlc3RpbWF0aW9uOyBudW1lcmljYWwgbWV0aG9kOyBjb21wYXJpc29uOyBydW50aW1lL3N0b3JhZ2UgZWZmaWNpZW5jeTsgdmFyaWFuY2U7IiwKICBlbnVtID0gICAgICAgICAiMzI3MSIsCiAga2V5d29yZHMgPSAgICAgImVmZmljaWVuY3k7IGVzdGltYXRlczsgbWVhbjsgTWVhbjsgcmVtb3ZpbmcgZGF0YTsgc2FtcGxlZCBkYXRhOyBzdGFuZGFyZCBkZXZpYXRpb247IHN0YXRpc3RpY3M7IHVwZGF0aW5nOyB1cGRhdGluZyBlc3RpbWF0ZXM7IHZhcmlhbmNlOyB3ZWlnaHRlZCIsCiAga3dkcyA9ICAgICAgICAgIm1lYW4sIHN0YW5kYXJkIGRldmlhdGlvbiwgdmFyaWFuY2UsIHVwZGF0aW5nIiwKICBsYW5ndWFnZSA9ICAgICAiRW5nbGlzaCIsCiAgcmVmZXJlbmNlcyA9ICAgIjciLAogIHRyZWF0bWVudCA9ICAgICJBIEFwcGxpY2F0aW9uOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle0xhaXJkOjE5Nzk6Q09FLAogIGF1dGhvciA9ICAgICAgICJQLiBELiBMYWlyZCIsCiAgdGl0bGUgPSAgICAgICAgIkNvbW1lbnQgb246IHtgYEFuIG9wdGltYWwgZXZhbHVhdGlvbiBvZiBCb29sZWFuIGV4cHJlc3Npb25zIGluIGFuIG9ubGluZSBxdWVyeSBzeXN0ZW0nJyBbQ29tbS4gQUNNLCAyMCwgMTk3Nywgbm8uIDUsIDM0NC0tMzQ3LCBNUiA1NSBcIzk2MjddIGJ5IE0uIFouIEhhbmFuaX0iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjIiLAogIG51bWJlciA9ICAgICAgICIxMCIsCiAgcGFnZXMgPSAgICAgICAgIjU0OS0tNTUwIiwKICBtb250aCA9ICAgICAgICBvY3QsCiAgeWVhciA9ICAgICAgICAgIjE5NzkiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2OEgwNSAoNjhCMTUpIiwKICBNUm51bWJlciA9ICAgICAiODFiOjY4MTE4IiwKICBtcnJldmlld2VyID0gICAiSy4gSC4gVi4gQm9vdGgiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzYxMjAgKEZpbGUgb3JnYW5pc2F0aW9uKTsgQzcyNTBMIChOb24tYmlibGlvZ3JhcGhpYyByZXRyaWV2YWwgc3lzdGVtcykiLAogIGNvcnBzb3VyY2UgPSAgICJTaGFyZWQgTWVkaWNhbCBTeXN0ZW1zIENvcnAuLCBLaW5nIG9mIFBydXNzaWEsIFBBLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJCb29sZWFuIGV4cHJlc3Npb25zOyBCb29sZWFuIGZ1bmN0aW9uczsgZmlsZSBvcmdhbmlzYXRpb247IGluZm9ybWF0aW9uOyBpbmZvcm1hdGlvbiByZXRyaWV2YWw7IG9ubGluZSBxdWVyeSBzeXN0ZW07IHJldHJpZXZhbCIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7R3VkZXM6MTk3OTpOT0UsCiAgYXV0aG9yID0gICAgICAgIkVodWQgR3VkZXMgYW5kIEFudGhvbnkgSG9mZm1hbiIsCiAgdGl0bGUgPSAgICAgICAgIkEgbm90ZSBvbjoge2BgQW4gb3B0aW1hbCBldmFsdWF0aW9uIG9mIEJvb2xlYW4gZXhwcmVzc2lvbnMgaW4gYW4gb25saW5lIHF1ZXJ5IHN5c3RlbScnIFtDb21tLiBBQ00sIDIwLCAxOTc3LCBuby4gNSwgMzQ0LS0zNDcsIE1SIDU1IFwjOTYyN10gYnkgTS4gWi4gSGFuYW5pfSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMiIsCiAgbnVtYmVyID0gICAgICAgIjEwIiwKICBwYWdlcyA9ICAgICAgICAiNTUwLS01NTMiLAogIG1vbnRoID0gICAgICAgIG9jdCwKICB5ZWFyID0gICAgICAgICAiMTk3OSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4SDA1IiwKICBNUm51bWJlciA9ICAgICAiODBrOjY4MDg1IiwKICBtcnJldmlld2VyID0gICAiSy4gSC4gVi4gQm9vdGgiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzcyNTBMIChOb24tYmlibGlvZ3JhcGhpYyByZXRyaWV2YWwgc3lzdGVtcykiLAogIGNvcnBzb3VyY2UgPSAgICJQZW5uc3lsdmFuaWEgU3RhdGUgVW5pdi4sIFVuaXZlcnNpdHkgUGFyaywgUEEsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgIkJvb2xlYW4gZXhwcmVzc2lvbnM7IEJvb2xlYW4gZnVuY3Rpb25zOyBpbmZvcm1hdGlvbiByZXRyaWV2YWw7IG9ubGluZSBxdWVyeSBzeXN0ZW0iLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0FuZGVyc29uOjE5Nzk6Q0NQLAogIGF1dGhvciA9ICAgICAgICJNLiBSLiBBbmRlcnNvbiBhbmQgTS4gRy4gQW5kZXJzb24iLAogIHRpdGxlID0gICAgICAgICJDb3JyaWdlbmR1bToge2BgQ29tbWVudHMgb24gUGVyZmVjdCBIYXNoaW5nIEZ1bmN0aW9uczogQSBTaW5nbGUgUHJvYmUgUmV0cmlldmluZyBNZXRob2QgZm9yIFN0YXRpYyBTZXRzJyd9IiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjIyIiwKICBudW1iZXIgPSAgICAgICAiMTAiLAogIHBhZ2VzID0gICAgICAgICI1NTMiLAogIG1vbnRoID0gICAgICAgIG9jdCwKICB5ZWFyID0gICAgICAgICAiMTk3OSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIldlZCBEZWMgMjcgMDg6MDY6MTAgMTk5NSIsCiAgbm90ZSA9ICAgICAgICAgIkNvcnJlY3RzIFxjaXRle0FuZGVyc29uOjE5Nzk6Q1BIfS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAp9CgpAQXJ0aWNsZXtMYW1wb3J0OjE5Nzk6UENDLAogIGF1dGhvciA9ICAgICAgICJMZXNsaWUgTGFtcG9ydCIsCiAgdGl0bGUgPSAgICAgICAgIk9uIHRoZSBQcm9vZiBvZiBDb3JyZWN0bmVzcyBvZiBhIENhbGVuZGFyIFByb2dyYW0iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjIiLAogIG51bWJlciA9ICAgICAgICIxMCIsCiAgcGFnZXMgPSAgICAgICAgIjU1NC0tNTU2IiwKICBtb250aCA9ICAgICAgICBvY3QsCiAgeWVhciA9ICAgICAgICAgIjE5NzkiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIE1SY2xhc3MgPSAgICAgICI2OEIxMCIsCiAgTVJudW1iZXIgPSAgICAgIjgwZjo2ODAxNyIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNDI0MCAoUHJvZ3JhbW1pbmcgYW5kIGFsZ29yaXRobSB0aGVvcnkpIiwKICBjb3Jwc291cmNlID0gICAiU1JJIEludGVybmF0LiwgTWVubG8gUGFydCwgQ0EsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImNhbGVuZGFyIHByb2dyYW07IGNvcnJlY3RuZXNzOyBmb3JtYWwgc3BlY2lmaWNhdGlvbjsgcHJvZ3JhbW1pbmcgdGhlb3J5OyBwcm9vZiIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7S2xpbnQ6MTk3OTpMTk0sCiAgYXV0aG9yID0gICAgICAgIlBhdWwgS2xpbnQiLAogIHRpdGxlID0gICAgICAgICJMaW5lIE51bWJlcnMgTWFkZSBDaGVhcCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMiIsCiAgbnVtYmVyID0gICAgICAgIjEwIiwKICBwYWdlcyA9ICAgICAgICAiNTU3LS01NTkiLAogIG1vbnRoID0gICAgICAgIG9jdCwKICB5ZWFyID0gICAgICAgICAiMTk3OSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjExMCAoU3lzdGVtcyBhbmFseXNpcyBhbmQgcHJvZ3JhbW1pbmcpIiwKICBjb3Jwc291cmNlID0gICAiTWF0aC4gQ2VudHJ1bSwgQW1zdGVyZGFtLCBOZXRoZXJsYW5kcyIsCiAga2V5d29yZHMgPSAgICAgImV4ZWN1dGlvbjsgbGluZSBudW1iZXIgYWRtaW5pc3RyYXRpb247IHByb2dyYW1taW5nIiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWwiLAp9CgpAQXJ0aWNsZXtMb3phbm8tUGVyZXo6MTk3OTpBUEMsCiAgYXV0aG9yID0gICAgICAgIlRvbXtcJ2F9cyBMb3phbm8tUHtcJ2V9cmV6IGFuZCBNaWNoYWVsIEEuIFdlc2xleSIsCiAgdGl0bGUgPSAgICAgICAgIkFuIEFsZ29yaXRobSBmb3IgUGxhbm5pbmcgQ29sbGlzaW9uLUZyZWUgUGF0aHMgQW1vbmcgUG9seWhlZHJhbCBPYnN0YWNsZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjIiLAogIG51bWJlciA9ICAgICAgICIxMCIsCiAgcGFnZXMgPSAgICAgICAgIjU2MC0tNTcwIiwKICBtb250aCA9ICAgICAgICBvY3QsCiAgeWVhciA9ICAgICAgICAgIjE5NzkiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9HcmFwaGljcy9pbWFnZXIvaW1hZ2VyLjc5LmJpYiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM3NDkwIChDb21wdXRpbmcgaW4gb3RoZXIgZW5naW5lZXJpbmcgZmllbGRzKSIsCiAgY29ycHNvdXJjZSA9ICAgIklCTSBUaG9tYXMgSi4gV2F0c29uIFJlcy4gQ2VudGVyLCBZb3JrdG93biBIZWlnaHRzLCBOWSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiYWxnb3JpdGhtaWMgYXNwZWN0czsgY29sbGlzaW9uIGF2b2lkYW5jZSBhbGdvcml0aG07IGNvbGxpc2lvbiBmcmVlOyBkaWdpdGFsIHNpbXVsYXRpb247IGZvcmJpZGRlbiBwb3NpdGlvbnM7IGludGVyc2VjdGlvbjsgaW50ZXJzZWN0aW9uIGRldGVybWluYXRpb247IG5ldHdvcms7IHBhdGg7IHBhdGggcGxhbm5pbmc7IHBvbHloZWRyYWwgb2JzdGFjbGVzOyByZXByZXNlbnRhdGlvbiBvZiBvYmplY3RzOyBzYWZlOyBzb2xpZHM7IHRocmVlLWRpbWVuc2lvbmFsIGdyYXBoaWNzOyB2ZXJ0ZXgiLAogIHJlZiA9ICAgICAgICAgICJWVjM1IiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWw7IFQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7TW9ycmlzOjE5Nzk6Q0dDLAogIGF1dGhvciA9ICAgICAgICJGLiBMLiBNb3JyaXMiLAogIHRpdGxlID0gICAgICAgICJPbiBhIENvbXBhcmlzb24gb2YgR2FyYmFnZSBDb2xsZWN0aW9uIFRlY2huaXF1ZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjIiLAogIG51bWJlciA9ICAgICAgICIxMCIsCiAgcGFnZXMgPSAgICAgICAgIjU3MSIsCiAgbW9udGggPSAgICAgICAgb2N0LAogIHllYXIgPSAgICAgICAgICIxOTc5IiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiV2VkIFNlcCAyMSAyMjo0MDowOSAxOTk0IiwKICBiaWJzb3VyY2UgPSAgICAiZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9Db21waWxlci9nYXJiYWdlLmNvbGxlY3Rpb24uYmliIiwKfQoKQEFydGljbGV7TWF5ZXI6MTk3OTpQTEIsCiAgYXV0aG9yID0gICAgICAgIlIuIEUuIE1heWVyIiwKICB0aXRsZSA9ICAgICAgICAiQSBwc3ljaG9sb2d5IG9mIGxlYXJuaW5nIHtCQVNJQ30iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjIiLAogIG51bWJlciA9ICAgICAgICIxMSIsCiAgcGFnZXMgPSAgICAgICAgIjU4OS0tNTkzIiwKICBtb250aCA9ICAgICAgICBub3YsCiAgeWVhciA9ICAgICAgICAgIjE5NzkiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzAyMjAgKENvbXB1dGluZyBlZHVjYXRpb24gYW5kIHRyYWluaW5nKTsgQzYxMTAgKFN5c3RlbXMgYW5hbHlzaXMgYW5kIHByb2dyYW1taW5nKTsgQzYxNDBEIChIaWdoIGxldmVsIGxhbmd1YWdlcykiLAogIGNvcnBzb3VyY2UgPSAgICJVbml2LiBvZiBDYWxpZm9ybmlhLCBTYW50YSBCYXJiYXJhLCBDQSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiQkFTSUM7IGNvbXB1dGVyIHNjaWVuY2UgZWR1Y2F0aW9uOyBwcmVzdGF0ZW1lbnQ7IHByb2dyYW1taW5nOyB0cmFuc2FjdGlvbiIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7TW9ycmlzOjE5Nzk6UFNDLAogIGF1dGhvciA9ICAgICAgICJSLiBNb3JyaXMgYW5kIEsuIFRob21wc29uIiwKICB0aXRsZSA9ICAgICAgICAiUGFzc3dvcmQgU2VjdXJpdHkgLS0tIHtBfSBDYXNlIEhpc3RvcnkiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjIiLAogIG51bWJlciA9ICAgICAgICIxMSIsCiAgcGFnZXMgPSAgICAgICAgIjU5NC0tNTk3IiwKICBtb250aCA9ICAgICAgICBub3YsCiAgeWVhciA9ICAgICAgICAgIjE5NzkiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9EYXRhYmFzZS9HcmFlZmUuYmliIGFuZCBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L01pc2Mvc2VjdXJpdHkuMS5iaWIiLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKTsgQzYxNTBKIChPcGVyYXRpbmcgc3lzdGVtcykiLAogIGNvcnBzb3VyY2UgPSAgICJCZWxsIExhYnMuLCBNdXJyYXkgSGlsbCwgTkosIFVTQSIsCiAga2V5d29yZHMgPSAgICAgIm9wZXJhdGluZyBzeXN0ZW1zIChjb21wdXRlcnMpOyBPUzsgcGFzc3dvcmQgc2VjdXJpdHkgc2NoZW1lOyByZW1vdGVseSBhY2Nlc3NlZCB0aW1lIHNoYXJpbmc7IHNlY3VyaXR5IG9mIGRhdGE7IHN5c3RlbTsgVU5JWCBBVFQgb3BlcmF0aW5nIENBQ00iLAogIG9ydCA9ICAgICAgICAgICJvcmRuZXIgc2ljaGVyaGVpdCIsCiAgdHJlYXRtZW50ID0gICAgIkEgQXBwbGljYXRpb247IEcgR2VuZXJhbCBSZXZpZXciLAp9CgpAQXJ0aWNsZXtQZWxlZzoxOTc5OkJTQywKICBhdXRob3IgPSAgICAgICAiU2htdWVsIFBlbGVnIGFuZCBBenJpZWwgUm9zZW5mZWxkIiwKICB0aXRsZSA9ICAgICAgICAiQnJlYWtpbmcgU3Vic3RpdHV0aW9uIENpcGhlcnMgVXNpbmcgYSBSZWxheGF0aW9uIEFsZ29yaXRobSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMiIsCiAgbnVtYmVyID0gICAgICAgIjExIiwKICBwYWdlcyA9ICAgICAgICAiNTk4LS02MDUiLAogIG1vbnRoID0gICAgICAgIG5vdiwKICB5ZWFyID0gICAgICAgICAiMTk3OSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L01pc2Mvc2VjdXJpdHkuMS5iaWIiLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDMTIzMCAoQXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UpIiwKICBjb3Jwc291cmNlID0gICAiVW5pdi4gb2YgTWFyeWxhbmQsIENvbGxlZ2UgUGFyaywgTUQsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImFydGlmaWNpYWwgaW50ZWxsaWdlbmNlOyBjb21wdXRlciBzZWN1cml0eTsgY3J5cHRvZ3JhcGh5OyBkZWNvZGluZzsgam9pbnQgbGV0dGVyIHByb2JhYmlsaXRpZXM7IGxldHRlcnM7IHBsYWludGV4dDsgcmVsYXhhdGlvbjsgcmVsYXhhdGlvbiBhbGdvcml0aG07IHN1YnN0aXR1dGlvbiBjaXBoZXJzOyB1cGRhdGluZyBzY2hlbWUiLAogIG9ydCA9ICAgICAgICAgICJvcmRuZXIgc2ljaGVyaGVpdCIsCiAgdHJlYXRtZW50ID0gICAgIlQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7VGFyamFuOjE5Nzk6U1NULAogIGF1dGhvciA9ICAgICAgICJSb2JlcnQgRW5kcmUgVGFyamFuIGFuZCBBbmRyZXcgQ2hpIENoaWggWWFvIiwKICB0aXRsZSA9ICAgICAgICAiU3RvcmluZyBhIFNwYXJzZSBUYWJsZSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMiIsCiAgbnVtYmVyID0gICAgICAgIjExIiwKICBwYWdlcyA9ICAgICAgICAiNjA2LS02MTEiLAogIG1vbnRoID0gICAgICAgIG5vdiwKICB5ZWFyID0gICAgICAgICAiMTk3OSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjY4QjE1ICg2OEgwNSkiLAogIE1SbnVtYmVyID0gICAgICI4MWU6NjgwMTkiLAogIG1ycmV2aWV3ZXIgPSAgICJBcm1pbiBDcmVtZXJzIiwKICBiaWJkYXRlID0gICAgICAiVHVlIE1hciAyNSAxMzoyNjowOSBNU1QgMTk5NyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgY2xhc3Njb2RlcyA9ICAgIkM2MTIwIChGaWxlIG9yZ2FuaXNhdGlvbikiLAogIGNvcnBzb3VyY2UgPSAgICJTdGFuZm9yZCBVbml2LiwgU3RhbmZvcmQsIENBLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJoYXNoaW5nOyBMUiBwYXJzaW5nIHRhYmxlczsgc3BhcnNlIHRhYmxlOyBzdGF0aWMgdGFibGU7IHN0b3JhZ2UgYWxsb2NhdGlvbiIsCiAgdHJlYXRtZW50ID0gICAgIlAgUHJhY3RpY2FsOyBUIFRoZW9yZXRpY2FsIG9yIE1hdGhlbWF0aWNhbCIsCn0KCkBBcnRpY2xle1NoYW1pcjoxOTc5OkhTUywKICBhdXRob3IgPSAgICAgICAiQWRpIFNoYW1pciIsCiAgdGl0bGUgPSAgICAgICAgIkhvdyB0byBTaGFyZSBhIFNlY3JldCIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMiIsCiAgbnVtYmVyID0gICAgICAgIjExIiwKICBwYWdlcyA9ICAgICAgICAiNjEyLS02MTMiLAogIG1vbnRoID0gICAgICAgIG5vdiwKICB5ZWFyID0gICAgICAgICAiMTk3OSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgTVJjbGFzcyA9ICAgICAgIjk0Qjk5ICg2OEU5OSkiLAogIE1SbnVtYmVyID0gICAgICI4MGc6OTQwNzAiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9NaXNjL3NlY3VyaXR5LjEuYmliIGFuZCBmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0RhdGFiYXNlL1dpZWRlcmhvbGQuYmliIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBhbm5vdGUgPSAgICAgICAicHJvdGVjdGlvbiBhZ2FpbnN0IGxvc3Mgb2Yga2V5cyBieSBkaXZpZGluZyB0aGUgZGF0YSBpbnRvIHBpZWNlcy4iLAogIGNsYXNzY29kZXMgPSAgICJDNjEzMCAoRGF0YSBoYW5kbGluZyB0ZWNobmlxdWVzKSIsCiAgY29ycHNvdXJjZSA9ICAgIk1JVCwgQ2FtYnJpZGdlLCBNQSwgVVNBIiwKICBrZXl3b3JkcyA9ICAgICAiY29tcHV0ZXIgc2VjdXJpdHk7IGNyeXB0b2dyYXBoaWMgc3lzdGVtczsgY3J5cHRvZ3JhcGh5OyBlbmNvZGluZzsga2V5IG1hbmFnZW1lbnQ7IHJvYnVzdCBrZXkgbWFuYWdlbWVudCBzY2hlbWVzOyBzZWN1cml0eSBicmVhY2hlczsgc2VjdXJpdHkgb2YgZGF0YSIsCiAgb3J0ID0gICAgICAgICAgIm9yZG5lciBzaWNoZXJoZWl0IiwKICB0cmVhdG1lbnQgPSAgICAiUCBQcmFjdGljYWw7IFQgVGhlb3JldGljYWwgb3IgTWF0aGVtYXRpY2FsIiwKfQoKQEFydGljbGV7TGlwaXM6MTk3OTpDQ1UsCiAgYXV0aG9yID0gICAgICAgIkEuIEguIExpcGlzIiwKICB0aXRsZSA9ICAgICAgICAiQ29zdHMgb2YgdGhlIGN1cnJlbnQge1VTfSBwYXltZW50cyBzeXN0ZW0iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjIiLAogIG51bWJlciA9ICAgICAgICIxMiIsCiAgcGFnZXMgPSAgICAgICAgIjY0NC0tNjQ3IiwKICBtb250aCA9ICAgICAgICBkZWMsCiAgeWVhciA9ICAgICAgICAgIjE5NzkiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzcxMjAgKEZpbmFuY2lhbCBjb21wdXRpbmcpIiwKICBjb3Jwc291cmNlID0gICAiRWxlY3Ryb25pYyBCYW5raW5nIEluYy4sIEF0bGFudGEsIEdBLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJiYW5raW5nIGluZHVzdHJ5OyBjYXNoOyBjcmVkaXQgY2FyZHM7IEVGVDsgRUZUIHRyYW5zYWN0aW9uczsgRUZUUzsgc3lzdGVtcyIsCiAgdHJlYXRtZW50ID0gICAgIkUgRWNvbm9taWM7IFAgUHJhY3RpY2FsIiwKfQoKQEFydGljbGV7TG9uZzoxOTc5OlBQRSwKICBhdXRob3IgPSAgICAgICAiUi4gSC4gTG9uZyIsCiAgdGl0bGUgPSAgICAgICAgIlB1YmxpYyBwcm90ZWN0aW9uIGFuZCBlZHVjYXRpb24gd2l0aCB7RUZUfSIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMiIsCiAgbnVtYmVyID0gICAgICAgIjEyIiwKICBwYWdlcyA9ICAgICAgICAiNjQ4LS02NTQiLAogIG1vbnRoID0gICAgICAgIGRlYywKICB5ZWFyID0gICAgICAgICAiMTk3OSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBNYXIgMjUgMTM6MjY6MDkgTVNUIDE5OTciLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGNsYXNzY29kZXMgPSAgICJDMDIzMCAoRWNvbm9taWMsIHNvY2lhbCBhbmQgcG9saXRpY2FsIGFzcGVjdHMgb2YgY29tcHV0aW5nKTsgQzcxMjAgKEZpbmFuY2lhbCBjb21wdXRpbmcpIiwKICBjb3Jwc291cmNlID0gICAiQmFuayBBZG1pbmlzdHJhdGlvbiBJbnN0LiwgUGFyayBSaWRnZSwgSUwsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgImNvbnN1bWVyczsgZWR1Y2F0aW9uOyBFRlQ7IEVGVFM7IHNvY2lhbCBhc3BlY3RzIG9mIGF1dG9tYXRpb24iLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle1BhcmtlcjoxOTc5OlZFSSwKICBhdXRob3IgPSAgICAgICAiRC4gQi4gUGFya2VyIiwKICB0aXRsZSA9ICAgICAgICAiVnVsbmVyYWJpbGl0aWVzIG9mIHtFRlRzfSB0byBpbnRlbnRpb25hbGx5IGNhdXNlZCBsb3NzZXMiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjIiLAogIG51bWJlciA9ICAgICAgICIxMiIsCiAgcGFnZXMgPSAgICAgICAgIjY1NC0tNjYwIiwKICBtb250aCA9ICAgICAgICBkZWMsCiAgeWVhciA9ICAgICAgICAgIjE5NzkiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzAyMzAgKEVjb25vbWljLCBzb2NpYWwgYW5kIHBvbGl0aWNhbCBhc3BlY3RzIG9mIGNvbXB1dGluZyk7IEM3MTIwIChGaW5hbmNpYWwgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIlNSSSBJbnRlcm5hdC4sIE1lbmxvIFBhcmssIENBLCBVU0EiLAogIGtleXdvcmRzID0gICAgICJiYWNrLXVwIHJlcXVpcmVtZW50czsgYnVzaW5lc3MgY3JpbWVzOyBlY29ub21pY3M7IEVGVHM7IEVGVFM7IGVsZWN0cm9uaWMgZnVuZHMgdHJhbnNmZXIgc3lzdGVtczsgbGVnaXNsYXRpdmUgYWN0aW9uczsgc2VjdXJpdHk7IHNlY3VyaXR5IG9mIGRhdGEiLAogIHRyZWF0bWVudCA9ICAgICJQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle0tyYWVtZXI6MTk3OTpQVkUsCiAgYXV0aG9yID0gICAgICAgIksuIEwuIEtyYWVtZXIgYW5kIEsuIENvbHRvbiIsCiAgdGl0bGUgPSAgICAgICAgIlBvbGljeSwgdmFsdWVzLCBhbmQge0VGVH0gcmVzZWFyY2g6IGFuYXRvbXkgb2YgYSByZXNlYXJjaCBhZ2VuZGEiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMjIiLAogIG51bWJlciA9ICAgICAgICIxMiIsCiAgcGFnZXMgPSAgICAgICAgIjY2MC0tNjcxIiwKICBtb250aCA9ICAgICAgICBkZWMsCiAgeWVhciA9ICAgICAgICAgIjE5NzkiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgTWFyIDI1IDEzOjI2OjA5IE1TVCAxOTk3IiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2NvZGVzID0gICAiQzAyMzAgKEVjb25vbWljLCBzb2NpYWwgYW5kIHBvbGl0aWNhbCBhc3BlY3RzIG9mIGNvbXB1dGluZyk7IEM3MTIwIChGaW5hbmNpYWwgY29tcHV0aW5nKSIsCiAgY29ycHNvdXJjZSA9ICAgIlVuaXYuIG9mIENhbGlmb3JuaWEsIElydmluZSwgQ0EsIFVTQSIsCiAga2V5d29yZHMgPSAgICAgIkFtZXJpY2FuIHNvY2lldHk7IEVGVCByZXNlYXJjaDsgRUZUUzsgc29jaWFsIGFzcGVjdHMgb2YgYXV0b21hdGlvbiIsCiAgdHJlYXRtZW50ID0gICAgIkIgQmlibGlvZ3JhcGh5OyBQIFByYWN0aWNhbCIsCn0KCkBBcnRpY2xle1Nob2NoOjE5Nzk6TVBFLAogIGF1dGhvciA9ICAgICAgICJKLiBGLiBTaG9jaCBhbmQgSi4gQS4gSHVwcCIsCiAgdGl0bGUgPSAgICAgICAgIk1lYXN1cmVkIFBlcmZvcm1hbmNlIG9mIGFuIHtFVEhFUk5FVH0gTG9jYWwgTmV0d29yayIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIyMyIsCiAgbnVtYmVyID0gICAgICAgIjEyIiwKICBwYWdlcyA9ICAgICAgICAiNzExLS03MjEiLAogIG1vbnRoID0gICAgICAgIGRlYywKICB5ZWFyID0gICAgICAgICAiMTk3OSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlNhdCBKYW4gMTggMTU6NDc6MjEgMTk5NyIsCiAgYmlic291cmNlID0gICAgImZ0cDovL2Z0cC5pcmEudWthLmRlL3B1Yi9iaWJsaW9ncmFwaHkvRGlzdHJpYnV0ZWQvUUxELzE5NzkuYmliIiwKICBjb3VudHJ5ID0gICAgICAiVVNBIiwKICBkZXNjcmlwdG9ycyA9ICAiTEFOOyIsCiAgZW51bSA9ICAgICAgICAgIjI4OTMiLAogIGxhbmd1YWdlID0gICAgICJFbmdsaXNoIiwKICByZWZlcmVuY2VzID0gICAiMCIsCn0KCkBBcnRpY2xle1NhbWV0OjE5Nzk6UU1BLAogIGF1dGhvciA9ICAgICAgICJIYW5hbiBTYW1ldCIsCiAgdGl0bGUgPSAgICAgICAgIkEgcXVhZHRyZWUgbWVkaWFsIGF4aXMgdHJhbnNmb3JtIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjI2IiwKICBudW1iZXIgPSAgICAgICAiOSIsCiAgcGFnZXMgPSAgICAgICAgIjY4MC0tNjkzIiwKICBtb250aCA9ICAgICAgICBzZXAsCiAgeWVhciA9ICAgICAgICAgIjE5NzkiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJTYXQgSmFuIDE4IDE1OjQ4OjEwIDE5OTciLAogIGJpYnNvdXJjZSA9ICAgICJmdHA6Ly9mdHAuaXJhLnVrYS5kZS9wdWIvYmlibGlvZ3JhcGh5L0dyYXBoaWNzL3NpZ2dyYXBoLzc5LmJpYiIsCn0KCkBBcnRpY2xle1BlYXJzb246MTk5MDpGSFYsCiAgYXV0aG9yID0gICAgICAgIlBldGVyIEsuIFBlYXJzb24iLAogIHRpdGxlID0gICAgICAgICJGYXN0IEhhc2hpbmcgb2YgVmFyaWFibGUtTGVuZ3RoIFRleHQgU3RyaW5ncyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIzMyIsCiAgbnVtYmVyID0gICAgICAgIjYiLAogIHBhZ2VzID0gICAgICAgICI2NzctLTY4MCIsCiAgbW9udGggPSAgICAgICAganVuLAogIHllYXIgPSAgICAgICAgICIxOTkwIiwKICBDT0RFTiA9ICAgICAgICAiQ0FDTUEyIiwKICBJU1NOID0gICAgICAgICAiMDAwMS0wNzgyIiwKICBiaWJkYXRlID0gICAgICAiU2F0IEFwciAwNiAwODowNjo0MSAxOTk2IiwKICBiaWJzb3VyY2UgPSAgICAiZnRwOi8vZnRwLmlyYS51a2EuZGUvcHViL2JpYmxpb2dyYXBoeS9NaXNjL3Byb3RlaW4ucGF0dGVybi5iaWIiLAogIGFic3RyYWN0ID0gICAgICJUYWlsb3JlZCB0byB2YXJpYWJsZS1sZW5ndGggdGV4dCBzdHJpbmdzLCB0aGlzIGhhc2hpbmcgZnVuY3Rpb24gdXNlcyB2ZXJ5IGxpdHRsZSBhcml0aG1ldGljIGFuZCBjYW4gYmUgdXNlZCB3aGVyZSBwZXJmZWN0IGhhc2hpbmcgaXMgZGVzaXJlZC4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGFubm90ZSA9ICAgICAgICJCYXNlZCBvbiBleGNsdXNpdmUgT1IgKFhPUikuIiwKICBjb21tZW50ID0gICAgICAiQSBzaW1wbGUgZmFzdCBoYXNoaW5nIGFsZ29yaXRobSBpcyBnaXZlbiBmb3IgdmFyaWFibGUgbGVuZ3RoIHRleHQgc3RyaW5ncy4gRXNzZW50aWFsbHkgYW4geG9yIGlzIGRvbmUgb3ZlciBhbGwgb2YgdGhlIGNoYXJhY3RlcnMgb2YgdGhlIHN0cmluZyBhbmQgdGhlIHJlc3VsdCBpcyB0aGUgaGFzaCB2YWx1ZS4gU29tZSBhbmFseXNpcyBpcyBkb25lIGFuZCBhIHByYWN0aWNhbCBpbXBsZW1lbnRhdGlvbiBpcyByZXBvcnRlZCBvbi4iLAogIHJldmlldyA9ICAgICAgICJBQ00gQ1IgOTAxMi0wOTU4IiwKfQoKQEFydGljbGV7U3VuZGF5OjE5OTA6VkZTLAogIGF1dGhvciA9ICAgICAgICJEYW5pZWwgTS4gU3VuZGF5IiwKICB0aXRsZSA9ICAgICAgICAiQSBWZXJ5IEZhc3QgU3Vic3RyaW5nIFNlYXJjaCBBbGdvcml0aG0iLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMzMiLAogIG51bWJlciA9ICAgICAgICI4IiwKICBwYWdlcyA9ICAgICAgICAiMTMyLS0xNDIiLAogIG1vbnRoID0gICAgICAgIGF1ZywKICB5ZWFyID0gICAgICAgICAiMTk5MCIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBKYW4gMDkgMDk6MjY6NTUgMTk5NiIsCiAgbm90ZSA9ICAgICAgICAgIlNlZSBhbHNvIFxjaXRle0JveWVyOjE5Nzc6RlNTfSBhbmQgXGNpdGV7S251dGg6MTk3NzpGUE19LiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCn0KCkBBcnRpY2xle0RpdHRtZXI6MTk5MTpORkgsCiAgYXV0aG9yID0gICAgICAgIkkuIERpdHRtZXIiLAogIHRpdGxlID0gICAgICAgICJOb3RlIG9uIEZhc3QgSGFzaGluZyBvZiBWYXJpYWJsZSBMZW5ndGggVGV4dCBTdHJpbmdzIiwKICBqb3VybmFsID0gICAgICBqLUNBQ00sCiAgdm9sdW1lID0gICAgICAgIjM0IiwKICBudW1iZXIgPSAgICAgICAiMTEiLAogIHBhZ2VzID0gICAgICAgICIxMTgiLAogIG1vbnRoID0gICAgICAgIG5vdiwKICB5ZWFyID0gICAgICAgICAiMTk5MSIsCiAgQ09ERU4gPSAgICAgICAgIkNBQ01BMiIsCiAgSVNTTiA9ICAgICAgICAgIjAwMDEtMDc4MiIsCiAgYmliZGF0ZSA9ICAgICAgIlN1biBKdWwgMTcgMTk6NDI6MTYgMTk5NCIsCiAgbm90ZSA9ICAgICAgICAgIlBvaW50cyBvdXQgdGhhdCBQZWFyc29uJ3MgaGFzaGluZyBhbGdvcml0aG0gXGNpdGV7UGVhcnNvbjoxOTkwOkZIVn0gd2FzIGRpc2NvdmVyZWQgZm91cnRlZW4geWVhcnMgZWFybGllciBieSB0aGlzIGF1dGhvciBcY2l0ZXtEaXR0bWVyOjE5NzY6SUVQfS4gU2VlIGFsc28gY29tbWVudHMgaW4gXGNpdGV7U2F2b3k6MTk5MTpORkgsTGl0c2lvczoxOTkxOk5GSCxQZWFyc29uOjE5OTE6TkZIfS4iLAp9CgpAQXJ0aWNsZXtTYXZveToxOTkxOk5GSCwKICBhdXRob3IgPSAgICAgICAiSmFjcXVlcyBTYXZveSIsCiAgdGl0bGUgPSAgICAgICAgIk5vdGUgb24gRmFzdCBIYXNoaW5nIG9mIFZhcmlhYmxlIExlbmd0aCBUZXh0IFN0cmluZ3MiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMzQiLAogIG51bWJlciA9ICAgICAgICIxMSIsCiAgcGFnZXMgPSAgICAgICAgIjExOC0tMTE5IiwKICBtb250aCA9ICAgICAgICBub3YsCiAgeWVhciA9ICAgICAgICAgIjE5OTEiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgSnVsIDE5IDE3OjU4OjA5IDE5OTQiLAogIG5vdGUgPSAgICAgICAgICJTdWdnZXN0cyBhbiBpbXByb3ZlbWVudCB0byBQZWFyc29uJ3MgaGFzaGluZyBhbGdvcml0aG0gXGNpdGV7UGVhcnNvbjoxOTkwOkZIVn0gdGhhdCBhdm9pZHMgc2Vjb25kYXJ5IGNsdXN0ZXJpbmcuIEV4aGliaXRzIGEga2V5IHNldCBmb3Igd2hpY2ggUGVhcnNvbidzIGFsZ29yaXRobSBwcm9kdWNlcyBhbGFybWluZyBjbHVzdGVyaW5nLiBTZWUgYWxzbyBjb21tZW50cyBpbiBcY2l0ZXtEaXR0bWVyOjE5OTE6TkZILExpdHNpb3M6MTk5MTpORkgsUGVhcnNvbjoxOTkxOk5GSH0uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKfQoKQEFydGljbGV7TGl0c2lvczoxOTkxOk5GSCwKICBhdXRob3IgPSAgICAgICAiSmFtZXMgTGl0c2lvcyIsCiAgdGl0bGUgPSAgICAgICAgIk5vdGUgb24gRmFzdCBIYXNoaW5nIG9mIFZhcmlhYmxlIExlbmd0aCBUZXh0IFN0cmluZ3MiLAogIGpvdXJuYWwgPSAgICAgIGotQ0FDTSwKICB2b2x1bWUgPSAgICAgICAiMzQiLAogIG51bWJlciA9ICAgICAgICIxMSIsCiAgcGFnZXMgPSAgICAgICAgIjExOC0tMTIwIiwKICBtb250aCA9ICAgICAgICBub3YsCiAgeWVhciA9ICAgICAgICAgIjE5OTEiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgSnVsIDE5IDE4OjAyOjA0IDE5OTQiLAogIG5vdGUgPSAgICAgICAgICJTdWdnZXN0cyBhIHNpbXBsZSBleHRlbnNpb24gb2YgUGVhcnNvbidzIGhhc2hpbmcgYWxnb3JpdGhtIFxjaXRle1BlYXJzb246MTk5MDpGSFZ9IHRoYXQgc3VwcG9ydHMgbm9uLWNoYXJhY3RlciBkYXRhLiBTZWUgYWxzbyBjb21tZW50cyBpbiBcY2l0ZXtEaXR0bWVyOjE5OTE6TkZILFNhdm95OjE5OTE6TkZILFBlYXJzb246MTk5MTpORkh9LiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCn0KCiU9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQolIENyb3NzLXJlZmVyZW5jZWQgZW50cmllcyBjb21lIGxhc3QuCgpAQXJ0aWNsZXtQZWFyc29uOjE5OTE6TkZILAogIGF1dGhvciA9ICAgICAgICJQZXRlciBQZWFyc29uIiwKICB0aXRsZSA9ICAgICAgICAiTm90ZSBvbiBGYXN0IEhhc2hpbmcgb2YgVmFyaWFibGUgTGVuZ3RoIFRleHQgU3RyaW5ncyIsCiAgam91cm5hbCA9ICAgICAgai1DQUNNLAogIHZvbHVtZSA9ICAgICAgICIzNCIsCiAgbnVtYmVyID0gICAgICAgIjExIiwKICBwYWdlcyA9ICAgICAgICAiMTIwIiwKICBtb250aCA9ICAgICAgICBub3YsCiAgeWVhciA9ICAgICAgICAgIjE5OTEiLAogIENPREVOID0gICAgICAgICJDQUNNQTIiLAogIElTU04gPSAgICAgICAgICIwMDAxLTA3ODIiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgSnVsIDE5IDE3OjU4OjU0IDE5OTQiLAogIG5vdGUgPSAgICAgICAgICJSZXNwb25kcyB0byBzZXZlcmFsIGNvbW1lbnRzIFxjaXRle0RpdHRtZXI6MTk5MTpORkgsTGl0c2lvczoxOTkxOk5GSCxTYXZveToxOTkxOk5GSH0gb24gdGhlIGF1dGhvcidzIGVhcmxpZXIgcGFwZXIgXGNpdGV7UGVhcnNvbjoxOTkwOkZIVn0uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKfQoKQEFydGljbGV7S251dGg6MTk3NDpTUEcsCiAgYXV0aG9yID0gICAgICAgIkRvbmFsZCBFLiBLbnV0aCIsCiAgdGl0bGUgPSAgICAgICAgIlN0cnVjdHVyZWQgUHJvZ3JhbW1pbmcgd2l0aCB7XGJmIGdvIHRvfSBTdGF0ZW1lbnRzIiwKICBqb3VybmFsID0gICAgICBqLUNPTVAtU1VSViwKICB2b2x1bWUgPSAgICAgICAiNiIsCiAgbnVtYmVyID0gICAgICAgIjQiLAogIHBhZ2VzID0gICAgICAgICIyNjEtLTMwMSIsCiAgbW9udGggPSAgICAgICAgZGVjLAogIHllYXIgPSAgICAgICAgICIxOTc0IiwKICBDT0RFTiA9ICAgICAgICAiQ01TVkFOIiwKICBJU1NOID0gICAgICAgICAiMDM2MC0wMzAwIiwKICBiaWJkYXRlID0gICAgICAiU2F0IEF1ZyAyNyAxMDozNjo0OSAxOTk0IiwKICBub3RlID0gICAgICAgICAiUmVwcmludGVkIHdpdGggcmV2aXNpb25zIGluIHtcc2wgQ3VycmVudCBUcmVuZHMgaW4gUHJvZ3JhbW1pbmcgTWV0aG9kb2xvZ3l9LCBSYXltb25kIFQuIFllaCwgZWQuLCB7XGJmIDF9IChFbmdsZXdvb2QgQ2xpZmZzLCBOSjogUHJlbnRpY2UtSGFsbCwgMTk3NyksIDE0MC0tMTk0OyB7XHNsIENsYXNzaWNzIGluIFNvZnR3YXJlIEVuZ2luZWVyaW5nfSwgRWR3YXJkIE5hc2ggWW91cmRvbiwgZWQuXCAoTmV3IFlvcms6IFlvdXJkb24gUHJlc3MsIDE5NzkpLCAyNTktLTMyMS4gUmVwcmludGVkIHdpdGggYGBmaW5hbCcnIHJldmlzaW9ucyBpbiBcY2l0ZVtwcC4gMTctLTg5XXtLbnV0aDoxOTkyOkxQfS4gVGhpcyBwYXBlciBpcyBhIHJlc3BvbnNlIHRvIFxjaXRle0RpamtzdHJhOjE5Njg6R1NDfS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAp9CgpAQXJ0aWNsZXtHcmFoYW06MTk3NjpGVUwsCiAgYXV0aG9yID0gICAgICAgIlN1c2FuIEwuIEdyYWhhbSBhbmQgTWFyayBXZWdtYW4iLAogIHRpdGxlID0gICAgICAgICJBIEZhc3QgYW5kIFVzdWFsbHkgTGluZWFyIEFsZ29yaXRobSBmb3IgR2xvYmFsIEZsb3cgQW5hbHlzaXMiLAogIGpvdXJuYWwgPSAgICAgIGotSi1BQ00sCiAgdm9sdW1lID0gICAgICAgIjIzIiwKICBudW1iZXIgPSAgICAgICAiMSIsCiAgcGFnZXMgPSAgICAgICAgIjE3Mi0tMjAyIiwKICBtb250aCA9ICAgICAgICBqYW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzYiLAogIENPREVOID0gICAgICAgICJKQUNPQUgiLAogIElTU04gPSAgICAgICAgICIwMDA0LTU0MTEiLAogIGJpYmRhdGUgPSAgICAgICJXZWQgSmFuIDE1IDE4OjEyOjUzIE1TVCAxOTk3IiwKICBiaWJzb3VyY2UgPSAgICAiQ29tcGVuZGV4IGRhdGFiYXNlIiwKICBhYnN0cmFjdCA9ICAgICAiQSBuZXcgYWxnb3JpdGhtIGZvciBnbG9iYWwgZmxvdyBhbmFseXNpcyBvbiByZWR1Y2libGUgZ3JhcGhzIGlzIHByZXNlbnRlZC4gVGhlIGFsZ29yaXRobSBpcyBzaG93biB0byB0cmVhdCBhIHZlcnkgZ2VuZXJhbCBjbGFzcyBvZiBmdW5jdGlvbiBzcGFjZXMuIEZvciBhIGdyYXBoIG9mIGUgZWRnZXMsIHRoZSBhbGdvcml0aG0gaGFzIGEgd29yc3QtY2FzZSB0aW1lIGJvdW5kIG9mIDAoZSBsb2cgZSkgZnVuY3Rpb24gb3BlcmF0aW9ucy4gSXQgaXMgYWxzbyBzaG93biB0aGF0IGluIHByb2dyYW1taW5nIHRlcm1zLCB0aGUgbnVtYmVyIG9mIG9wZXJhdGlvbnMgaXMgcHJvcG9ydGlvbmFsIHRvIGUgcGx1cyB0aGUgbnVtYmVyIG9mIGV4aXRzIGZyb20gcHJvZ3JhbSBsb29wcy4gQ29uc2VxdWVudGx5IGEgcmVzdHJpY3Rpb24gdG8gb25lLWVudHJ5IG9uZS1leGl0IGNvbnRyb2wgc3RydWN0dXJlcyBndWFyYW50ZWVzIGxpbmVhcml0eS4gVGhlIGFsZ29yaXRobSBjYW4gYmUgZXh0ZW5kZWQgdG8geWV0IGxhcmdlciBjbGFzc2VzIG9mIGZ1bmN0aW9uIHNwYWNlcyBhbmQgZ3JhcGhzIGJ5IHJlbGF4aW5nIHRoZSB0aW1lIGJvdW5kLiBFeGFtcGxlcyBhcmUgZ2l2ZW4gb2YgY29kZSBpbXByb3ZlbWVudCBwcm9ibGVtcyB3aGljaCBjYW4gYmUgc29sdmVkIHVzaW5nIHRoZSBhbGdvcml0aG0uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICBjbGFzc2lmaWNhdGlvbiA9ICI3MjM7IDkyMSIsCiAgam91cm5hbGFiciA9ICAgIkogQXNzb2MgQ29tcHV0IE1hY2giLAogIGtleXdvcmRzID0gICAgICJjb21wdXRlciBwcm9ncmFtbWluZzsgbWF0aGVtYXRpY2FsIHByb2dyYW1taW5nIiwKfQoKQEFydGljbGV7QnJvd246MTk3MjpDU0MsCiAgYXV0aG9yID0gICAgICAgIlIuIEouIEJyb3duIiwKICB0aXRsZSA9ICAgICAgICAiQ2hyb21hdGljIHNjaGVkdWxpbmcgYW5kIHRoZSBjaHJvbWF0aWMgbnVtYmVyIHByb2JsZW0iLAogIGpvdXJuYWwgPSAgICAgIGotTUFOQUdFTUVOVC1TQ0lFTkNFLAogIHZvbHVtZSA9ICAgICAgICIxOSIsCiAgcGFnZXMgPSAgICAgICAgIjQ1MS0tNDYzIiwKICB5ZWFyID0gICAgICAgICAiMTk3MiIsCiAgQ09ERU4gPSAgICAgICAgIk1TQ0lBTSIsCiAgSVNTTiA9ICAgICAgICAgIjAwMjUtMTkwOSIsCiAgYW5ub3RlID0gICAgICAgIkltcGxpY2l0IGVudW1lcmF0aW9uIGFsZ29yaXRobSBbbm90IHNlZW5dLiIsCn0KCkBBcnRpY2xle0tudXRoOjE5Nzc6RlBNLAogIGF1dGhvciA9ICAgICAgICJEb25hbGQgRS4gS251dGggYW5kIEouIEguIE1vcnJpcyBhbmQgVi4gUi4gUHJhdHQiLAogIHRpdGxlID0gICAgICAgICJGYXN0IHBhdHRlcm4gbWF0Y2hpbmcgaW4gc3RyaW5ncyIsCiAgam91cm5hbCA9ICAgICAgai1TSUFNLUotQ09NUFVULAogIHZvbHVtZSA9ICAgICAgICI2IiwKICBudW1iZXIgPSAgICAgICAiMiIsCiAgcGFnZXMgPSAgICAgICAgIjMyMy0tMzUwIiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzciLAogIENPREVOID0gICAgICAgICJTTUpDQVQiLAogIElTU04gPSAgICAgICAgICIwMDk3LTUzOTciLAogIGJpYmRhdGUgPSAgICAgICJUdWUgRmViIDYgMDU6Mjk6MzcgMTk5NiIsCiAgbm90ZSA9ICAgICAgICAgIlNlZSBhbHNvIFxjaXRle0JveWVyOjE5Nzc6RlNTfSBhbmQgXGNpdGV7U3VuZGF5OjE5OTA6VkZTfS4iLAp9CgpAQXJ0aWNsZXtUaGFycDoxOTgyOlBUUywKICBhdXRob3IgPSAgICAgICAiQS4gTC4gVGhhcnAgYW5kIEsuLUMuIFRhaSIsCiAgdGl0bGUgPSAgICAgICAgIlRoZSBwcmFjdGljYWxpdHkgb2YgdGV4dCBzaWduYXR1cmVzIGZvciBhY2NlbGVyYXRpbmcgc3RyaW5nIHNlYXJjaGluZyIsCiAgam91cm5hbCA9ICAgICAgai1TUEUsCiAgdm9sdW1lID0gICAgICAgIjEyIiwKICBudW1iZXIgPSAgICAgICAiMSIsCiAgcGFnZXMgPSAgICAgICAgIjM1LS00NCIsCiAgbW9udGggPSAgICAgICAgamFuLAogIHllYXIgPSAgICAgICAgICIxOTgyIiwKICBDT0RFTiA9ICAgICAgICAiU1BFWEJMIiwKICBJU1NOID0gICAgICAgICAiMDAzOC0wNjQ0IiwKICBiaWJkYXRlID0gICAgICAiVHVlIEZlYiAwNiAwNTozMDoxOSAxOTk2IiwKICBub3RlID0gICAgICAgICAiRXhwYW5kcyBIYXJyaXNvbidzIHdvcmsgXGNpdGV7SGFycmlzb246MTk3MTpJU1R9LiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCn0KCkBBcnRpY2xle1Nrb3ZnYWFyZDoxOTc1OlJCRiwKICBhdXRob3IgPSAgICAgICAiT3ZlIFNrb3ZnYWFyZCIsCiAgdGl0bGUgPSAgICAgICAgIlJlbWFyayBvbiB7YGBBbGdvcml0aG0gMjM2OiBCZXNzZWwgRnVuY3Rpb25zIG9mIHRoZSBGaXJzdCBLaW5kIFtTMTddJyd9IiwKICBqb3VybmFsID0gICAgICBqLVRPTVMsCiAgdm9sdW1lID0gICAgICAgIjEiLAogIG51bWJlciA9ICAgICAgICIzIiwKICBwYWdlcyA9ICAgICAgICAiMjgyLS0yODQiLAogIG1vbnRoID0gICAgICAgIHNlcCwKICB5ZWFyID0gICAgICAgICAiMTk3NSIsCiAgQ09ERU4gPSAgICAgICAgIkFDTVNDVSIsCiAgSVNTTiA9ICAgICAgICAgIjAwOTgtMzUwMCIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBGZWIgMDYgMDU6MjY6NDMgMTk5NiIsCiAgbm90ZSA9ICAgICAgICAgIlNlZSBcY2l0ZXtHYXV0c2NoaToxOTY0OkFBQn0uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKfQoKQEFydGljbGV7TWlzcmE6MTk3NTpSRywKICBhdXRob3IgPSAgICAgICAiSmF5YWRldiBNaXNyYSIsCiAgdGl0bGUgPSAgICAgICAgIlJlbWFyayBvbiB7YGBBbGdvcml0aG0gMjQ2OiBHcmF5Y29kZSBbWl0nJ30iLAogIGpvdXJuYWwgPSAgICAgIGotVE9NUywKICB2b2x1bWUgPSAgICAgICAiMSIsCiAgbnVtYmVyID0gICAgICAgIjMiLAogIHBhZ2VzID0gICAgICAgICIyODUtLTI4NSIsCiAgbW9udGggPSAgICAgICAgc2VwLAogIHllYXIgPSAgICAgICAgICIxOTc1IiwKICBDT0RFTiA9ICAgICAgICAiQUNNU0NVIiwKICBJU1NOID0gICAgICAgICAiMDA5OC0zNTAwIiwKICBiaWJkYXRlID0gICAgICAiVHVlIEZlYiAwNiAwNToyNTo1NyAxOTk2IiwKICBub3RlID0gICAgICAgICAiU2VlIFxjaXRle0Jvb3Rocm95ZDoxOTY0OkFBRyxFcjoxOTg1OlJHfS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAp9CgpAQXJ0aWNsZXtGZWluc3RlaW46MTk3NTpSTVQsCiAgYXV0aG9yID0gICAgICAgIlJvYmVydCBGZWluc3RlaW4iLAogIHRpdGxlID0gICAgICAgICJSZW1hcmsgb24ge2BgQWxnb3JpdGhtIDQ4MzogTWFza2VkIFRocmVlLURpbWVuc2lvbmFsIFBsb3QgUHJvZ3JhbSB3aXRoIFJvdGF0aW9ucyBbSjZdJyd9IiwKICBqb3VybmFsID0gICAgICBqLVRPTVMsCiAgdm9sdW1lID0gICAgICAgIjEiLAogIG51bWJlciA9ICAgICAgICI5IiwKICBwYWdlcyA9ICAgICAgICAiMjg1LS0yODUiLAogIG1vbnRoID0gICAgICAgIHNlcCwKICB5ZWFyID0gICAgICAgICAiMTk3NSIsCiAgQ09ERU4gPSAgICAgICAgIkFDTVNDVSIsCiAgSVNTTiA9ICAgICAgICAgIjAwOTgtMzUwMCIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBGZWIgMDYgMDU6MjU6MzQgMTk5NiIsCiAgbm90ZSA9ICAgICAgICAgIlNlZSBcY2l0ZXtXYXRraW5zOjE5NzQ6QUFNfS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAp9CgpAQXJ0aWNsZXtCb3VsdG9uOjE5NzY6UkVQLAogIGF1dGhvciA9ICAgICAgICJELiBNLiBCb3VsdG9uIiwKICB0aXRsZSA9ICAgICAgICAiUmVtYXJrIG9uIHtgYEFsZ29yaXRobSA0MzQ6IEV4YWN0IFByb2JhYmlsaXRpZXMgZm9yICRSXHRpbWVze0N9JCBDb250aW5nZW5jeSBUYWJsZXMgW0cyXScnfSIsCiAgam91cm5hbCA9ICAgICAgai1UT01TLAogIHZvbHVtZSA9ICAgICAgICIyIiwKICBudW1iZXIgPSAgICAgICAiMSIsCiAgcGFnZXMgPSAgICAgICAgIjEwOC0tMTA4IiwKICBtb250aCA9ICAgICAgICBtYXIsCiAgeWVhciA9ICAgICAgICAgIjE5NzYiLAogIENPREVOID0gICAgICAgICJBQ01TQ1UiLAogIElTU04gPSAgICAgICAgICIwMDk4LTM1MDAiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgRmViIDA2IDA1OjI2OjI5IDE5OTYiLAogIG5vdGUgPSAgICAgICAgICJTZWUgXGNpdGV7TWFyY2g6MTk3MjpBQUV9LiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCn0KCkBBcnRpY2xle0R1dGE6MTk3NjpSVlMsCiAgYXV0aG9yID0gICAgICAgIkx1Y2lhbiBELiBEdXRhIiwKICB0aXRsZSA9ICAgICAgICAiUmVtYXJrIG9uIHtgYEFsZ29yaXRobSA0NzU6IFZpc2libGUgU3VyZmFjZSBQbG90dGluZyBQcm9ncmFtIFtKNl0nJ30iLAogIGpvdXJuYWwgPSAgICAgIGotVE9NUywKICB2b2x1bWUgPSAgICAgICAiMiIsCiAgbnVtYmVyID0gICAgICAgIjEiLAogIHBhZ2VzID0gICAgICAgICIxMDktLTExMCIsCiAgbW9udGggPSAgICAgICAgbWFyLAogIHllYXIgPSAgICAgICAgICIxOTc2IiwKICBDT0RFTiA9ICAgICAgICAiQUNNU0NVIiwKICBJU1NOID0gICAgICAgICAiMDA5OC0zNTAwIiwKICBiaWJkYXRlID0gICAgICAiVHVlIEZlYiAwNiAwNToyNjo1OSAxOTk2IiwKICBub3RlID0gICAgICAgICAiU2VlIFxjaXRle1dyaWdodDoxOTc0OlZTUH0uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKfQoKQEFydGljbGV7V2hpdGU6MTk3NjpSTVMsCiAgYXV0aG9yID0gICAgICAgIkcuIE0uIFdoaXRlIGFuZCBTLiBHb3VkcmVhdSBhbmQgSi4gTC4gTGVncm9zIiwKICB0aXRsZSA9ICAgICAgICAiUmVtYXJrIG9uIHtgYEFsZ29yaXRobSA0Nzk6IEEgTWluaW1hbCBTcGFubmluZyBUcmVlIENsdXN0ZXJpbmcgTWV0aG9kIFtaXScnfSIsCiAgam91cm5hbCA9ICAgICAgai1UT01TLAogIHZvbHVtZSA9ICAgICAgICIyIiwKICBudW1iZXIgPSAgICAgICAiMSIsCiAgcGFnZXMgPSAgICAgICAgIjExMC0tMTExIiwKICBtb250aCA9ICAgICAgICBtYXIsCiAgeWVhciA9ICAgICAgICAgIjE5NzYiLAogIENPREVOID0gICAgICAgICJBQ01TQ1UiLAogIElTU04gPSAgICAgICAgICIwMDk4LTM1MDAiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgRmViIDA2IDA1OjI4OjA2IDE5OTYiLAogIG5vdGUgPSAgICAgICAgICJTZWUgXGNpdGV7UGFnZToxOTc0OkFBTX0uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKfQoKQEFydGljbGV7UG9tZXJhbno6MTk3NjpSRUMsCiAgYXV0aG9yID0gICAgICAgIkouIFBvbWVyYW56IiwKICB0aXRsZSA9ICAgICAgICAiUmVtYXJrIG9uIHtgYEFsZ29yaXRobSA0ODc6IEV4YWN0IEN1bXVsYXRpdmUgRGlzdHJpYnV0aW9uIG9mIHRoZSBLb2xtb2dvcm92LVNtaXJub3YgU3RhdGlzdGljIGZvciBTbWFsbCBTYW1wbGVzIFtTMTRdJyd9IiwKICBqb3VybmFsID0gICAgICBqLVRPTVMsCiAgdm9sdW1lID0gICAgICAgIjIiLAogIG51bWJlciA9ICAgICAgICIxIiwKICBwYWdlcyA9ICAgICAgICAiMTExLS0xMTEiLAogIG1vbnRoID0gICAgICAgIG1hciwKICB5ZWFyID0gICAgICAgICAiMTk3NiIsCiAgQ09ERU4gPSAgICAgICAgIkFDTVNDVSIsCiAgSVNTTiA9ICAgICAgICAgIjAwOTgtMzUwMCIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBGZWIgMDYgMDU6Mjg6MDUgMTk5NiIsCiAgbm90ZSA9ICAgICAgICAgIlNlZSBcY2l0ZXtQb21lcmFuejoxOTc0OkFBRX0uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKfQoKQEFydGljbGV7TW9ycmlzOjE5NzY6UkRGLAogIGF1dGhvciA9ICAgICAgICJSb2JlcnQgTW9ycmlzIiwKICB0aXRsZSA9ICAgICAgICAiUmVtYXJrIG9uIHtgYEFsZ29yaXRobSA0OTA6IFRoZSBEaWxvZ2FyaXRobSBGdW5jdGlvbiBvZiBhIFJlYWwgQXJndW1lbnQgW1MyMl0nJ30iLAogIGpvdXJuYWwgPSAgICAgIGotVE9NUywKICB2b2x1bWUgPSAgICAgICAiMiIsCiAgbnVtYmVyID0gICAgICAgIjEiLAogIHBhZ2VzID0gICAgICAgICIxMTItLTExMiIsCiAgbW9udGggPSAgICAgICAgbWFyLAogIHllYXIgPSAgICAgICAgICIxOTc2IiwKICBDT0RFTiA9ICAgICAgICAiQUNNU0NVIiwKICBJU1NOID0gICAgICAgICAiMDA5OC0zNTAwIiwKICBiaWJkYXRlID0gICAgICAiVHVlIEZlYiAwNiAwNToyODowMiAxOTk2IiwKICBub3RlID0gICAgICAgICAiU2VlIFxjaXRle0dpbnNiZXJnOjE5NzU6QUFEfS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAp9CgpAQXJ0aWNsZXtQaWtlOjE5NzY6UklCLAogIGF1dGhvciA9ICAgICAgICJNYWxjb2xtIEMuIFBpa2UgYW5kIEplbm5pZSBTb29Ib28iLAogIHRpdGxlID0gICAgICAgICJSZW1hcmsgb24ge2BgQWxnb3JpdGhtIDE3OTogSW5jb21wbGV0ZSBCZXRhIFJhdGlvIFtTMTRdJyd9IiwKICBqb3VybmFsID0gICAgICBqLVRPTVMsCiAgdm9sdW1lID0gICAgICAgIjIiLAogIG51bWJlciA9ICAgICAgICIyIiwKICBwYWdlcyA9ICAgICAgICAiMjA3LS0yMDgiLAogIG1vbnRoID0gICAgICAgIGp1biwKICB5ZWFyID0gICAgICAgICAiMTk3NiIsCiAgQ09ERU4gPSAgICAgICAgIkFDTVNDVSIsCiAgSVNTTiA9ICAgICAgICAgIjAwOTgtMzUwMCIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBGZWIgMDYgMDU6Mjg6MDQgMTk5NiIsCiAgbm90ZSA9ICAgICAgICAgIlNlZSBcY2l0ZXtMdWR3aWc6MTk2MzpBQUl9LiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCn0KCkBBcnRpY2xle0FuZGVyc29uOjE5NzY6UklTLAogIGF1dGhvciA9ICAgICAgICJNaWNoYWVsIFIuIEFuZGVyc29uIiwKICB0aXRsZSA9ICAgICAgICAiUmVtYXJrIG9uIHtgYEFsZ29yaXRobSA0MzM6IEludGVycG9sYXRpb24gYW5kIFNtb290aCBDdXJ2ZSBGaXR0aW5nIEJhc2VkIG9uIExvY2FsIFByb2NlZHVyZXMgW0UyXScnfSIsCiAgam91cm5hbCA9ICAgICAgai1UT01TLAogIHZvbHVtZSA9ICAgICAgICIyIiwKICBudW1iZXIgPSAgICAgICAiMiIsCiAgcGFnZXMgPSAgICAgICAgIjIwOC0tMjA4IiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzYiLAogIENPREVOID0gICAgICAgICJBQ01TQ1UiLAogIElTU04gPSAgICAgICAgICIwMDk4LTM1MDAiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgRmViIDA2IDA1OjI2OjM2IDE5OTYiLAogIG5vdGUgPSAgICAgICAgICJTZWUgXGNpdGV7QWtpbWE6MTk3MjpBQUl9LiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCn0KCkBBcnRpY2xle0RhdmllczoxOTc2OlJSRiwKICBhdXRob3IgPSAgICAgICAiQWxhbiBNLiBEYXZpZXMiLAogIHRpdGxlID0gICAgICAgICJSZW1hcmsgb24ge2BgQWxnb3JpdGhtIDQ1MDogUm9zZW5icm9jayBGdW5jdGlvbiBNaW5pbWl6YXRpb24gW0U0XScnfSIsCiAgam91cm5hbCA9ICAgICAgai1UT01TLAogIHZvbHVtZSA9ICAgICAgICIyIiwKICBudW1iZXIgPSAgICAgICAiMyIsCiAgcGFnZXMgPSAgICAgICAgIjMwMC0tMzAxIiwKICBtb250aCA9ICAgICAgICBzZXAsCiAgeWVhciA9ICAgICAgICAgIjE5NzYiLAogIENPREVOID0gICAgICAgICJBQ01TQ1UiLAogIElTU04gPSAgICAgICAgICIwMDk4LTM1MDAiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgRmViIDA2IDA1OjI2OjU0IDE5OTYiLAogIG5vdGUgPSAgICAgICAgICJTZWUgXGNpdGV7TWFjSHVyYToxOTczOkFBUn0uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKfQoKQEFydGljbGV7QnJvd246MTk3NjpSQVMsCiAgYXV0aG9yID0gICAgICAgIlRoZW9kb3JlIEJyb3duIiwKICB0aXRsZSA9ICAgICAgICAiUmVtYXJrIG9uIHtgYEFsZ29yaXRobSA0ODk6IFRoZSBBbGdvcml0aG0gU0VMRUNUIC0tLSBmb3IgRmluZGluZyB0aGUgJGkkdGggU21hbGxlc3Qgb2YgJG4kIEVsZW1lbnRzIFtNMV0nJ30iLAogIGpvdXJuYWwgPSAgICAgIGotVE9NUywKICB2b2x1bWUgPSAgICAgICAiMiIsCiAgbnVtYmVyID0gICAgICAgIjMiLAogIHBhZ2VzID0gICAgICAgICIzMDEtLTMwNCIsCiAgbW9udGggPSAgICAgICAgc2VwLAogIHllYXIgPSAgICAgICAgICIxOTc2IiwKICBDT0RFTiA9ICAgICAgICAiQUNNU0NVIiwKICBJU1NOID0gICAgICAgICAiMDA5OC0zNTAwIiwKICBiaWJkYXRlID0gICAgICAiVHVlIEZlYiAwNiAwNToyNjoyNCAxOTk2IiwKICBub3RlID0gICAgICAgICAiU2VlIFxjaXRle0Zsb3lkOjE5NzU6QUFBfS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAp9CgpAQXJ0aWNsZXtJdG86MTk3NjpSSVQsCiAgYXV0aG9yID0gICAgICAgIk0uIFIuIEl0byIsCiAgdGl0bGUgPSAgICAgICAgIlJlbWFyayBvbiB7YGBBbGdvcml0aG0gMjg0OiBJbnRlcmNoYW5nZSBvZiBUd28gQmxvY2tzIG9mIERhdGEgW0syXScnfSIsCiAgam91cm5hbCA9ICAgICAgai1UT01TLAogIHZvbHVtZSA9ICAgICAgICIyIiwKICBudW1iZXIgPSAgICAgICAiNCIsCiAgcGFnZXMgPSAgICAgICAgIjM5Mi0tMzkzIiwKICBtb250aCA9ICAgICAgICBkZWMsCiAgeWVhciA9ICAgICAgICAgIjE5NzYiLAogIENPREVOID0gICAgICAgICJBQ01TQ1UiLAogIElTU04gPSAgICAgICAgICIwMDk4LTM1MDAiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgRmViIDA2IDA1OjI3OjM3IDE5OTYiLAogIG5vdGUgPSAgICAgICAgICJTZWUgXGNpdGV7RmxldGNoZXI6MTk2NjpBQUl9LiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCn0KCkBBcnRpY2xle0xvenk6MTk3NjpSQ1MsCiAgYXV0aG9yID0gICAgICAgIk1vaGFtZWQgZWwgTG96eSIsCiAgdGl0bGUgPSAgICAgICAgIlJlbWFyayBvbiB7YGBBbGdvcml0aG0gMjk5OiBDaGktU3F1YXJlZCBJbnRlZ3JhbCBbUzE1XScnfSIsCiAgam91cm5hbCA9ICAgICAgai1UT01TLAogIHZvbHVtZSA9ICAgICAgICIyIiwKICBudW1iZXIgPSAgICAgICAiNCIsCiAgcGFnZXMgPSAgICAgICAgIjM5My0tMzk1IiwKICBtb250aCA9ICAgICAgICBkZWMsCiAgeWVhciA9ICAgICAgICAgIjE5NzYiLAogIENPREVOID0gICAgICAgICJBQ01TQ1UiLAogIElTU04gPSAgICAgICAgICIwMDk4LTM1MDAiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgRmViIDA2IDA1OjI4OjAwIDE5OTYiLAogIG5vdGUgPSAgICAgICAgICJTZWUgXGNpdGV7SGlsbDoxOTY3OkFBQyxIaWxsOjE5ODU6UkNTfS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAp9CgpAQXJ0aWNsZXtLb3BwZWxhYXI6MTk3NjpSTkksCiAgYXV0aG9yID0gICAgICAgIkhlbmsgS29wcGVsYWFyIGFuZCBQZXRlciBNb2xlbmFhciIsCiAgdGl0bGUgPSAgICAgICAgIlJlbWFyayBvbiB7YGBBbGdvcml0aG0gNDg2OiBOdW1lcmljYWwgSW52ZXJzaW9uIG9mIExhcGxhY2UgVHJhbnNmb3JtIFtENV0nJ30iLAogIGpvdXJuYWwgPSAgICAgIGotVE9NUywKICB2b2x1bWUgPSAgICAgICAiMiIsCiAgbnVtYmVyID0gICAgICAgIjQiLAogIHBhZ2VzID0gICAgICAgICIzOTUtLTM5NiIsCiAgbW9udGggPSAgICAgICAgZGVjLAogIHllYXIgPSAgICAgICAgICIxOTc2IiwKICBDT0RFTiA9ICAgICAgICAiQUNNU0NVIiwKICBJU1NOID0gICAgICAgICAiMDA5OC0zNTAwIiwKICBiaWJkYXRlID0gICAgICAiVHVlIEZlYiAwNiAwNToyNzo0OCAxOTk2IiwKICBub3RlID0gICAgICAgICAiU2VlIFxjaXRle1ZlaWxsb246MTk3NDpBQU59LiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCn0KCkBBcnRpY2xle0NhdGU6MTk3NzpBQVMsCiAgYXV0aG9yID0gICAgICAgIkVza28gRy4gQ2F0ZSBhbmQgRGF2aWQgVy4gVHdpZ2ciLAogIHRpdGxlID0gICAgICAgICJBbGdvcml0aG0gNTEzOiBBbmFseXNpcyBvZiBJbi1TaXR1IFRyYW5zcG9zaXRpb24gW3tGMX1dIiwKICBqb3VybmFsID0gICAgICBqLVRPTVMsCiAgdm9sdW1lID0gICAgICAgIjMiLAogIG51bWJlciA9ICAgICAgICIxIiwKICBwYWdlcyA9ICAgICAgICAiMTA0LS0xMTAiLAogIG1vbnRoID0gICAgICAgIG1hciwKICB5ZWFyID0gICAgICAgICAiMTk3NyIsCiAgQ09ERU4gPSAgICAgICAgIkFDTVNDVSIsCiAgSVNTTiA9ICAgICAgICAgIjAwOTgtMzUwMCIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBGZWIgMDYgMDU6Mjg6MDcgMTk5NiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCn0KCkBBcnRpY2xle1ZlaWxsb246MTk3NzpSTkksCiAgYXV0aG9yID0gICAgICAgIkZyYW57XGN7Y319b2lzZSBWZWlsbG9uIiwKICB0aXRsZSA9ICAgICAgICAiUmVtYXJrIG9uIHtgYEFsZ29yaXRobSA0ODY6IE51bWVyaWNhbCBJbnZlcnNpb24gb2YgTGFwbGFjZSBUcmFuc2Zvcm0nJ30iLAogIGpvdXJuYWwgPSAgICAgIGotVE9NUywKICB2b2x1bWUgPSAgICAgICAiMyIsCiAgbnVtYmVyID0gICAgICAgIjEiLAogIHBhZ2VzID0gICAgICAgICIxMTEtLTExMSIsCiAgbW9udGggPSAgICAgICAgbWFyLAogIHllYXIgPSAgICAgICAgICIxOTc3IiwKICBDT0RFTiA9ICAgICAgICAiQUNNU0NVIiwKICBJU1NOID0gICAgICAgICAiMDA5OC0zNTAwIiwKICBiaWJkYXRlID0gICAgICAiVHVlIEZlYiAwNiAwNToyODoxMCAxOTk2IiwKICBub3RlID0gICAgICAgICAiU2VlIFxjaXRle1ZlaWxsb246MTk3NDpBQU59LiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCn0KCkBBcnRpY2xle0phbnNlbjoxOTc3OlJMRiwKICBhdXRob3IgPSAgICAgICAiSi4gSy4gTS4gSmFuc2VuIiwKICB0aXRsZSA9ICAgICAgICAiUmVtYXJrIG9uIHtgYEFsZ29yaXRobSAyNTk6IExlZ2VuZHJlIEZ1bmN0aW9ucyBmb3IgQXJndW1lbnRzIExhcmdlciB0aGFuIE9uZScnfSIsCiAgam91cm5hbCA9ICAgICAgai1UT01TLAogIHZvbHVtZSA9ICAgICAgICIzIiwKICBudW1iZXIgPSAgICAgICAiMiIsCiAgcGFnZXMgPSAgICAgICAgIjIwNC0tMjUwIiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzciLAogIENPREVOID0gICAgICAgICJBQ01TQ1UiLAogIElTU04gPSAgICAgICAgICIwMDk4LTM1MDAiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgRmViIDA2IDA1OjI4OjA4IDE5OTYiLAogIG5vdGUgPSAgICAgICAgICJTZWUgXGNpdGV7R2F1dHNjaGk6MTk2NTpBQUx9LiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCn0KCkBBcnRpY2xle1NpcGFsYToxOTc3OlJBUywKICBhdXRob3IgPSAgICAgICAiUGFvbG8gU2lwYWxhIiwKICB0aXRsZSA9ICAgICAgICAiUmVtYXJrIG9uIHtgYEFsZ29yaXRobSA0MDg6IEEgU3BhcnNlIE1hdHJpeCBQYWNrYWdlIChQYXJ0IEkpIFtGNF0nJ30iLAogIGpvdXJuYWwgPSAgICAgIGotVE9NUywKICB2b2x1bWUgPSAgICAgICAiMyIsCiAgbnVtYmVyID0gICAgICAgIjMiLAogIHBhZ2VzID0gICAgICAgICIzMDMtLTMwMyIsCiAgbW9udGggPSAgICAgICAgc2VwLAogIHllYXIgPSAgICAgICAgICIxOTc3IiwKICBDT0RFTiA9ICAgICAgICAiQUNNU0NVIiwKICBJU1NOID0gICAgICAgICAiMDA5OC0zNTAwIiwKICBiaWJkYXRlID0gICAgICAiVHVlIEZlYiAwNiAwNToyODowOSAxOTk2IiwKICBub3RlID0gICAgICAgICAiU2VlIFxjaXRle01jTmFtZWU6MTk3MTpBQVN9LiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCn0KCkBBcnRpY2xle1Rlbm5leToxOTc3OlJBVCwKICBhdXRob3IgPSAgICAgICAiRGVubmlzIFRlbm5leSIsCiAgdGl0bGUgPSAgICAgICAgIlJlbWFyayBvbiB7YGBBbGdvcml0aG0gMjE5OiBUb3BvbG9naWNhbCBPcmRlcmluZyBmb3IgUEVSVCBOZXR3b3JrcycnfSIsCiAgam91cm5hbCA9ICAgICAgai1UT01TLAogIHZvbHVtZSA9ICAgICAgICIzIiwKICBudW1iZXIgPSAgICAgICAiMyIsCiAgcGFnZXMgPSAgICAgICAgIjMwMy0tMzAzIiwKICBtb250aCA9ICAgICAgICBzZXAsCiAgeWVhciA9ICAgICAgICAgIjE5NzciLAogIENPREVOID0gICAgICAgICJBQ01TQ1UiLAogIElTU04gPSAgICAgICAgICIwMDk4LTM1MDAiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgRmViIDA2IDA1OjI4OjA5IDE5OTYiLAogIG5vdGUgPSAgICAgICAgICJTZWUgXGNpdGV7S2FzZToxOTYzOkFBVH0uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKfQoKQEFydGljbGV7U2tvdmdhYXJkOjE5Nzg6UkNFLAogIGF1dGhvciA9ICAgICAgICJPdmUgU2tvdmdhYXJkIiwKICB0aXRsZSA9ICAgICAgICAiUmVtYXJrIG9uIHtgYEFsZ29yaXRobSAxNDk6IENvbXBsZXRlIEVsbGlwdGljIEludGVncmFsIFtTMjFdJyd9IiwKICBqb3VybmFsID0gICAgICBqLVRPTVMsCiAgdm9sdW1lID0gICAgICAgIjQiLAogIG51bWJlciA9ICAgICAgICIxIiwKICBwYWdlcyA9ICAgICAgICAiOTUtLTk1IiwKICBtb250aCA9ICAgICAgICBtYXIsCiAgeWVhciA9ICAgICAgICAgIjE5NzgiLAogIENPREVOID0gICAgICAgICJBQ01TQ1UiLAogIElTU04gPSAgICAgICAgICIwMDk4LTM1MDAiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgRmViIDA2IDA1OjI4OjEzIDE5OTYiLAogIG5vdGUgPSAgICAgICAgICJTZWUgXGNpdGV7TWVybmVyOjE5NjI6QUFDfS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAp9CgpAQXJ0aWNsZXtDb2xlbWFuOjE5Nzg6UkFTLAogIGF1dGhvciA9ICAgICAgICJKb2huIFAuIENvbGVtYW4iLAogIHRpdGxlID0gICAgICAgICJSZW1hcmsgb24ge2BgQWxnb3JpdGhtIDQ5OiBTcGhlcmljYWwgTmV1bWFubiBGdW5jdGlvbicnfSIsCiAgam91cm5hbCA9ICAgICAgai1UT01TLAogIHZvbHVtZSA9ICAgICAgICI0IiwKICBudW1iZXIgPSAgICAgICAiMyIsCiAgcGFnZXMgPSAgICAgICAgIjI5NS0tMjk1IiwKICBtb250aCA9ICAgICAgICBzZXAsCiAgeWVhciA9ICAgICAgICAgIjE5NzgiLAogIENPREVOID0gICAgICAgICJBQ01TQ1UiLAogIElTU04gPSAgICAgICAgICIwMDk4LTM1MDAiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgRmViIDA2IDA1OjI4OjExIDE5OTYiLAogIG5vdGUgPSAgICAgICAgICJTZWUgXGNpdGV7SGVybmRvbjoxOTYxOkFBU30uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKfQoKQEFydGljbGV7R3VzdGF2c29uOjE5Nzg6UkFTLAogIGF1dGhvciA9ICAgICAgICJGcmVkIEcuIEd1c3RhdnNvbiIsCiAgdGl0bGUgPSAgICAgICAgIlJlbWFyayBvbiB7YGBBbGdvcml0aG0gNDA4OiBBIFNwYXJzZSBNYXRyaXggUGFja2FnZSAoUGFydCBJKSBbRjRdJyd9IiwKICBqb3VybmFsID0gICAgICBqLVRPTVMsCiAgdm9sdW1lID0gICAgICAgIjQiLAogIG51bWJlciA9ICAgICAgICIzIiwKICBwYWdlcyA9ICAgICAgICAiMjk1LS0yOTUiLAogIG1vbnRoID0gICAgICAgIHNlcCwKICB5ZWFyID0gICAgICAgICAiMTk3OCIsCiAgQ09ERU4gPSAgICAgICAgIkFDTVNDVSIsCiAgSVNTTiA9ICAgICAgICAgIjAwOTgtMzUwMCIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBGZWIgMDYgMDU6Mjg6MTIgMTk5NiIsCiAgbm90ZSA9ICAgICAgICAgIlNlZSBcY2l0ZXtNY05hbWVlOjE5NzE6QUFTfS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAp9CgpAQXJ0aWNsZXtTY2hvZW5lOjE5Nzg6Uk1JLAogIGF1dGhvciA9ICAgICAgICJBbmRyZXcgWS4gU2Nob2VuZSIsCiAgdGl0bGUgPSAgICAgICAgIlJlbWFyayBvbiB7YGBBbGdvcml0aG0gNDM1OiBNb2RpZmllZCBJbmNvbXBsZXRlIEdhbW1hIEZ1bmN0aW9uIFtTMTRdJyd9IiwKICBqb3VybmFsID0gICAgICBqLVRPTVMsCiAgdm9sdW1lID0gICAgICAgIjQiLAogIG51bWJlciA9ICAgICAgICIzIiwKICBwYWdlcyA9ICAgICAgICAiMjk2LS0zMDQiLAogIG1vbnRoID0gICAgICAgIHNlcCwKICB5ZWFyID0gICAgICAgICAiMTk3OCIsCiAgQ09ERU4gPSAgICAgICAgIkFDTVNDVSIsCiAgSVNTTiA9ICAgICAgICAgIjAwOTgtMzUwMCIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBGZWIgMDYgMDU6Mjg6MTIgMTk5NiIsCiAgbm90ZSA9ICAgICAgICAgIlNlZSBcY2l0ZXtGdWxsZXJ0b246MTk3MjpBQU19LiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCn0KCkBBcnRpY2xle0xvenk6MTk3OTpSU0QsCiAgYXV0aG9yID0gICAgICAgIk1vaGFtZWQgZWwgTG96eSIsCiAgdGl0bGUgPSAgICAgICAgIlJlbWFyayBvbiB7YGBBbGdvcml0aG0gMzk1OiBTdHVkZW50J3MgJHQkLURpc3RyaWJ1dGlvbicnfSBhbmQgUmVtYXJrIG9uIHtgYEFsZ29yaXRobSAzOTY6IFN0dWRlbnQncyBRdWFudGlsZXMgW1MxNF0nJ30iLAogIGpvdXJuYWwgPSAgICAgIGotVE9NUywKICB2b2x1bWUgPSAgICAgICAiNSIsCiAgbnVtYmVyID0gICAgICAgIjIiLAogIHBhZ2VzID0gICAgICAgICIyMzgtLTIzOSIsCiAgbW9udGggPSAgICAgICAganVuLAogIHllYXIgPSAgICAgICAgICIxOTc5IiwKICBDT0RFTiA9ICAgICAgICAiQUNNU0NVIiwKICBJU1NOID0gICAgICAgICAiMDA5OC0zNTAwIiwKICBiaWJkYXRlID0gICAgICAiVHVlIEZlYiAwNiAwNToyODoxNiAxOTk2IiwKICBub3RlID0gICAgICAgICAiU2VlIFxjaXRle0hpbGw6MTk3MDpBQVNhLEhpbGw6MTk3MDpBQVNiLEhpbGw6MTk4MTpSU0QsSGlsbDoxOTg1OlJDU30uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKfQoKQEFydGljbGV7R2VkZGVzOjE5Nzk6UkNDLAogIGF1dGhvciA9ICAgICAgICJLLiBPLiBHZWRkZXMiLAogIHRpdGxlID0gICAgICAgICJSZW1hcmsgb24ge2BgQWxnb3JpdGhtIDQyNDogQ2xlbnNoYXctQ3VydGlzIFF1YWRyYXR1cmUgW08xXScnfSIsCiAgam91cm5hbCA9ICAgICAgai1UT01TLAogIHZvbHVtZSA9ICAgICAgICI1IiwKICBudW1iZXIgPSAgICAgICAiMiIsCiAgcGFnZXMgPSAgICAgICAgIjI0MC0tMjQwIiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzkiLAogIENPREVOID0gICAgICAgICJBQ01TQ1UiLAogIElTU04gPSAgICAgICAgICIwMDk4LTM1MDAiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgRmViIDA2IDA1OjI4OjE0IDE5OTYiLAogIG5vdGUgPSAgICAgICAgICJTZWUgXGNpdGV7R2VudGxlbWFuOjE5NzI6QUFDfS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAp9CgpAQXJ0aWNsZXtBbmRlcnNvbjoxOTc5OlJCSSwKICBhdXRob3IgPSAgICAgICAiTS4gUi4gQW5kZXJzb24iLAogIHRpdGxlID0gICAgICAgICJSZW1hcmsgb24ge2BgQWxnb3JpdGhtIDQ3NDogQml2YXJpYXRlIEludGVycG9sYXRpb24gYW5kIFNtb290aCBTdXJmYWNlIEZpdHRpbmcgQmFzZWQgb24gTG9jYWwgUHJvY2VkdXJlcycnfSIsCiAgam91cm5hbCA9ICAgICAgai1UT01TLAogIHZvbHVtZSA9ICAgICAgICI1IiwKICBudW1iZXIgPSAgICAgICAiMiIsCiAgcGFnZXMgPSAgICAgICAgIjI0MS0tMjQxIiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5NzkiLAogIENPREVOID0gICAgICAgICJBQ01TQ1UiLAogIElTU04gPSAgICAgICAgICIwMDk4LTM1MDAiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgRmViIDA2IDA1OjI4OjEzIDE5OTYiLAogIG5vdGUgPSAgICAgICAgICJTZWUgXGNpdGV7QWtpbWE6MTk3NDpBQUJ9LiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCn0KCkBBcnRpY2xle0xlYXRoZXJzOjE5Nzk6UkFTLAogIGF1dGhvciA9ICAgICAgICJCdXJ0b24gTC4gTGVhdGhlcnMiLAogIHRpdGxlID0gICAgICAgICJSZW1hcmsgb24ge2BgQWxnb3JpdGhtIDUxMzogQW5hbHlzaXMgb2YgSW4tU2l0dSBUcmFuc3Bvc2l0aW9uIFtGMV0nJ30gYW5kIFJlbWFyayBvbiB7YGBBbGdvcml0aG0gNDY3OiBNYXRyaXggVHJhbnNwb3NpdGlvbiBpbiBQbGFjZScnfSIsCiAgam91cm5hbCA9ICAgICAgai1UT01TLAogIHZvbHVtZSA9ICAgICAgICI1IiwKICBudW1iZXIgPSAgICAgICAiNCIsCiAgcGFnZXMgPSAgICAgICAgIjUyMC0tNTIwIiwKICBtb250aCA9ICAgICAgICBkZWMsCiAgeWVhciA9ICAgICAgICAgIjE5NzkiLAogIENPREVOID0gICAgICAgICJBQ01TQ1UiLAogIElTU04gPSAgICAgICAgICIwMDk4LTM1MDAiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgRmViIDA2IDA1OjI4OjE1IDE5OTYiLAogIG5vdGUgPSAgICAgICAgICJTZWUgXGNpdGV7Q2F0ZToxOTc3OkFBUyxCcmVubmVyOjE5NzM6QUFNfS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAp9CgpAQXJ0aWNsZXtTd2lldGVuOjE5Nzk6UlZTLAogIGF1dGhvciA9ICAgICAgICJBLiBDLiBNLiB2YW4gU3dpZXRlbiBhbmQgSi4gVGguIE0uIGRlIEhvc3NvbiIsCiAgdGl0bGUgPSAgICAgICAgIlJlbWFyayBvbiB7YGBBbGdvcml0aG0gNDc1OiBWaXNpYmxlIFN1cmZhY2UgUGxvdHRpbmcgUHJvZ3JhbScnfSIsCiAgam91cm5hbCA9ICAgICAgai1UT01TLAogIHZvbHVtZSA9ICAgICAgICI1IiwKICBudW1iZXIgPSAgICAgICAiNCIsCiAgcGFnZXMgPSAgICAgICAgIjUyMS0tNTIzIiwKICBtb250aCA9ICAgICAgICBkZWMsCiAgeWVhciA9ICAgICAgICAgIjE5NzkiLAogIENPREVOID0gICAgICAgICJBQ01TQ1UiLAogIElTU04gPSAgICAgICAgICIwMDk4LTM1MDAiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgRmViIDA2IDA1OjI4OjE2IDE5OTYiLAogIG5vdGUgPSAgICAgICAgICJTZWUgXGNpdGV7V3JpZ2h0OjE5NzQ6VlNQfS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAp9CgpAQXJ0aWNsZXtIYXJtczoxOTgwOlJTTSwKICBhdXRob3IgPSAgICAgICAiVS4gSGFybXMgYW5kIEguIEtvbGxha293c2tpIGFuZCBHLiBNe1wie299fWxsZXIiLAogIHRpdGxlID0gICAgICAgICJSZW1hcmsgb24ge2BgQWxnb3JpdGhtIDQwODogQSBTcGFyc2UgTWF0cml4IFBhY2thZ2UgKFBhcnQgMSkgW0Y0XScnfSIsCiAgam91cm5hbCA9ICAgICAgai1UT01TLAogIHZvbHVtZSA9ICAgICAgICI2IiwKICBudW1iZXIgPSAgICAgICAiMyIsCiAgcGFnZXMgPSAgICAgICAgIjQ1Ni0tNDU3IiwKICBtb250aCA9ICAgICAgICBzZXAsCiAgeWVhciA9ICAgICAgICAgIjE5ODAiLAogIENPREVOID0gICAgICAgICJBQ01TQ1UiLAogIElTU04gPSAgICAgICAgICIwMDk4LTM1MDAiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgRmViIDA2IDA1OjI4OjE3IDE5OTYiLAogIG5vdGUgPSAgICAgICAgICJTZWUgXGNpdGV7TWNOYW1lZToxOTcxOkFBU30uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKfQoKQEFydGljbGV7SGlsbDoxOTgxOlJTRCwKICBhdXRob3IgPSAgICAgICAiRy4gVy4gSGlsbCIsCiAgdGl0bGUgPSAgICAgICAgIlJlbWFyayBvbiB7YGBBbGdvcml0aG0gMzk1OiBTdHVkZW50J3MgJHQkLURpc3RyaWJ1dGlvbicnfSIsCiAgam91cm5hbCA9ICAgICAgai1UT01TLAogIHZvbHVtZSA9ICAgICAgICI3IiwKICBudW1iZXIgPSAgICAgICAiMiIsCiAgcGFnZXMgPSAgICAgICAgIjI0Ny0tMjQ5IiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5ODEiLAogIENPREVOID0gICAgICAgICJBQ01TQ1UiLAogIElTU04gPSAgICAgICAgICIwMDk4LTM1MDAiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgRmViIDA2IDA1OjI4OjE4IDE5OTYiLAogIG5vdGUgPSAgICAgICAgICJTZWUgXGNpdGV7SGlsbDoxOTcwOkFBU2EsSGlsbDoxOTcwOkFBU2IsTG96eToxOTc5OlJTRH0uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKfQoKQEFydGljbGV7SGlsbDoxOTgxOlJTUSwKICBhdXRob3IgPSAgICAgICAiRy4gVy4gSGlsbCIsCiAgdGl0bGUgPSAgICAgICAgIlJlbWFyayBvbiB7YGBBbGdvcml0aG0gMzk2OiBTdHVkZW50J3MgJHQkLVF1YW50aWxlcycnfSIsCiAgam91cm5hbCA9ICAgICAgai1UT01TLAogIHZvbHVtZSA9ICAgICAgICI3IiwKICBudW1iZXIgPSAgICAgICAiMiIsCiAgcGFnZXMgPSAgICAgICAgIjI1MC0tMjUxIiwKICBtb250aCA9ICAgICAgICBqdW4sCiAgeWVhciA9ICAgICAgICAgIjE5ODEiLAogIENPREVOID0gICAgICAgICJBQ01TQ1UiLAogIElTU04gPSAgICAgICAgICIwMDk4LTM1MDAiLAogIGJpYmRhdGUgPSAgICAgICJUdWUgRmViIDA2IDA1OjI4OjE5IDE5OTYiLAogIG5vdGUgPSAgICAgICAgICJTZWUgXGNpdGV7SGlsbDoxOTcwOkFBU2J9LiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCn0KCkBBcnRpY2xle0hpbGw6MTk4NTpSQ1MsCiAgYXV0aG9yID0gICAgICAgIkkuIEQuIEhpbGwgYW5kIE0uIEMuIFBpa2UiLAogIHRpdGxlID0gICAgICAgICJSZW1hcmsgb24ge2BgQWxnb3JpdGhtIDI5OTogQ2hpLVNxdWFyZWQgSW50ZWdyYWwnJ30iLAogIGpvdXJuYWwgPSAgICAgIGotVE9NUywKICB2b2x1bWUgPSAgICAgICAiMTEiLAogIG51bWJlciA9ICAgICAgICIyIiwKICBwYWdlcyA9ICAgICAgICAiMTg1LS0xODUiLAogIG1vbnRoID0gICAgICAgIGp1biwKICB5ZWFyID0gICAgICAgICAiMTk4NSIsCiAgQ09ERU4gPSAgICAgICAgIkFDTVNDVSIsCiAgSVNTTiA9ICAgICAgICAgIjAwOTgtMzUwMCIsCiAgYmliZGF0ZSA9ICAgICAgIlR1ZSBGZWIgMDYgMDU6Mjg6MjIgMTk5NiIsCiAgbm90ZSA9ICAgICAgICAgIlNlZSBcY2l0ZXtIaWxsOjE5Njc6QUFDLExvenk6MTk3NjpSQ1N9LiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCn0KCkBBcnRpY2xle0VyOjE5ODU6UkcsCiAgYXV0aG9yID0gICAgICAgIk0uIEMuIEVyIiwKICB0aXRsZSA9ICAgICAgICAiUmVtYXJrIG9uIHtgYEFsZ29yaXRobSAyNDY6IEdyYXljb2RlIFtaXScnfSIsCiAgam91cm5hbCA9ICAgICAgai1UT01TLAogIHZvbHVtZSA9ICAgICAgICIxMSIsCiAgbnVtYmVyID0gICAgICAgIjQiLAogIHBhZ2VzID0gICAgICAgICI0NDEtLTQ0MyIsCiAgbW9udGggPSAgICAgICAgZGVjLAogIHllYXIgPSAgICAgICAgICIxOTg1IiwKICBDT0RFTiA9ICAgICAgICAiQUNNU0NVIiwKICBJU1NOID0gICAgICAgICAiMDA5OC0zNTAwIiwKICBiaWJkYXRlID0gICAgICAiVHVlIEZlYiAwNiAwNToyODoyMSAxOTk2IiwKICBub3RlID0gICAgICAgICAiU2VlIFxjaXRle0Jvb3Rocm95ZDoxOTY0OkFBRyxNaXNyYToxOTc1OlJHfS4iLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAp9CgpATWFudWFse0FOU0k6MTk2NjpBRiwKICB0aXRsZSA9ICAgICAgICAie0FOU0kgRm9ydHJhbiBYMy45LTE5NjZ9IiwKICBvcmdhbml6YXRpb24gPSBwdWItQU5TSSwKICBhZGRyZXNzID0gICAgICBwdWItQU5TSTphZHIsCiAgcGFnZXMgPSAgICAgICAgIj8/LS0/PyIsCiAgeWVhciA9ICAgICAgICAgIjE5NjYiLAogIGJpYmRhdGUgPSAgICAgICJTYXQgSmFuIDE4IDE1OjQ4OjIwIDE5OTciLAogIG5vdGUgPSAgICAgICAgICJBcHByb3ZlZCBNYXJjaCA3LCAxOTY2IChhbHNvIGtub3duIGFzIEZvcnRyYW4gNjYpLiBTZWUgYWxzbyBzdWJzZXF1ZW50IGNsYXJpZmljYXRpb25zIFxjaXRle0FOU0k6MTk2OTpDRlN9IGFuZCBcY2l0ZXtBTlNJOjE5NzE6Q0ZTfS4iLAp9CgpAUGhkVGhlc2lze2RlQmFsYmluZToxOTY5OkNBUiwKICBhdXRob3IgPSAgICAgICAiR3V5IHtkZSBCYWxiaW5lfSIsCiAgdGl0bGUgPSAgICAgICAgIkNvbXB1dGF0aW9uYWwgQW5hbHlzaXMgb2YgdGhlIFJhbmRvbSBDb21wb25lbnRzIEluZHVjZWQgYnkgYSBCaW5hcnkgRXF1aXZhbGVuY2UgUmVsYXRpb24iLAogIHR5cGUgPSAgICAgICAgICJQaC5ELiB0aGVzaXMiLAogIHNjaG9vbCA9ICAgICAgICJDYWxpZm9ybmlhIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5IiwKICBhZGRyZXNzID0gICAgICAiUGFzYWRlbmEsIENBLCBVU0EiLAogIHBhZ2VzID0gICAgICAgICIxNjgiLAogIHllYXIgPSAgICAgICAgICIxOTY5IiwKICBiaWJkYXRlID0gICAgICAiU2F0IEZlYiAxNyAxMzoyNDoxNiAxOTk2IiwKICBub3RlID0gICAgICAgICAiRmlyc3QgdXNlIG9mIHNlY29uZCBoYXNoIGZ1bmN0aW9uIGZvciBjb21wdXRpbmcgbmV4dCBoYXNoIHRhYmxlIGxvY2F0aW9uIGFmdGVyIGEgY29sbGlzaW9uLiIsCiAgYWJzdHJhY3QgPSAgICAgIlRoZSBwcm9ibGVtIG9mIHBhcnRpdGlvbmluZyBpbnRvIGNsYXNzZXMgYnkgbWVhbnMgb2YgYSBiaW5hcnkgZXF1aXZhbGVuY2UgcmVsYXRpb24gaXMgaW52ZXN0aWdhdGVkLiBTZXZlcmFsIGFsZ29yaXRobXMgZm9yIGRldGVybWluaW5nIHRoZSBudW1iZXIgb2YgY29tcG9uZW50cyBpbiB0aGUgZ3JhcGggYXNzb2NpYXRlZCB3aXRoIGEgcGFydGljdWxhciBzZXQgb2YgZWxlbWVudHMgYXJlIGNvbnN0cnVjdGVkIGFuZCBjb21wYXJlZC4gV2hlbiB0aGUgY2xhc3NpZmljYXRpb24gcHJvY2VzcyBvcGVyYXRlcyBvbiBpbmRlcGVuZGVudGx5LWRyYXduIHNhbXBsZXMgb2YgJG4kIGRpc3RpbmN0IGVsZW1lbnRzIGZyb20gYSBwb3B1bGF0aW9uLCB0aGUgZXhwZWN0ZWQgbnVtYmVyIG9mIGNvbXBvbmVudHMgaXMgc2hvd24gdG8gYmUgb2J0YWluYWJsZSByZWN1cnNpdmVseSBmb3IgYSBjbGFzcyBvZiBwcm9ibGVtcyBjYWxsZWQgc2VwYXJhYmxlOyBpbiBhbGwgY2FzZXMsIGVzdGltYXRlcyBhcmUgYXZhaWxhYmxlIHRvIHJlYWNoIGFueSBkZXNpcmVkIGxldmVsIG9mIGFjY3VyYWN5LiBDbHVzdGVyaW5nIG1vZGVscyBpbiBFdWNsaWRlYW4gc3BhY2UgYXJlIGFuYWx5emVkIGluIGRldGFpbCBhbmQgYXN5bXB0b3RpYyBmb3JtdWxhcyBvYnRhaW5lZCB0byBjb21wbGVtZW50IGV4cGVyaW1lbnRzLiBDb25qZWN0dXJlcyBjb25jZXJuaW5nIHRoZSBnZW5lcmFsIGJlaGF2aW9yIG9mIHRoZSBleHBlY3RlZCBudW1iZXIgb2YgY29tcG9uZW50cyBhcmUgcHJlc2VudGVkIGFsc28uIEZpbmFsbHksIHNldmVyYWwgY29tcHV0YXRpb25hbCB0b29scyBvZiBnZW5lcmFsIGludGVyZXN0IGFyZSBpbXByb3ZlZCBzaWduaWZpY2FudGx5LiIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCiAgYW5ub3RlID0gICAgICAgIkFic3RyYWN0IGluIERpc3NlcnRhdGlvbiBBYnN0cmFjdHMsIHYzMCBuMiBwNjQ1YiAxOTY5LiIsCn0KCkBJblByb2NlZWRpbmdze0tvcm1hbjoxOTcwOkNPLAogIGF1dGhvciA9ICAgICAgICJTLiBNLiBLb3JtYW4iLAogIGVkaXRvciA9ICAgICAgICJOLiBDaHJpc3RvZmlkZXMgYW5kIEEuIE1pbmdvenppIGFuZCBQLiBUb3RoIGFuZCBDLiBTYW5kaSIsCiAgYm9va3RpdGxlID0gICAgIkNvbWJpbmF0b3JpYWwgT3B0aW1pemF0aW9uIiwKICB0aXRsZSA9ICAgICAgICAiVGhlIGdyYXBoLWNvbG91cmluZyBwcm9ibGVtIiwKICBwdWJsaXNoZXIgPSAgICAiV2lsZXkiLAogIGFkZHJlc3MgPSAgICAgICJOZXcgWW9yayIsCiAgcGFnZXMgPSAgICAgICAgIjIxMS0tMjM1IiwKICB5ZWFyID0gICAgICAgICAiMTk3MCIsCiAgYW5ub3RlID0gICAgICAgIkltcGxpY2l0IGVudW1lcmF0aW9uIGFsZ29yaXRobSBbbm90IHNlZW5dLiIsCn0KCkBCb29re0tudXRoOjE5NzM6QUNQLAogIGF1dGhvciA9ICAgICAgICJELiBFLiBLbnV0aCIsCiAgdGl0bGUgPSAgICAgICAgIlRoZSBBcnQgb2YgQ29tcHV0ZXIgUHJvZ3JhbW1pbmcsIFNvcnRpbmcgYW5kIFNlYXJjaGluZyIsCiAgdm9sdW1lID0gICAgICAgIjMiLAogIHB1Ymxpc2hlciA9ICAgIHB1Yi1BVywKICBhZGRyZXNzID0gICAgICBwdWItQVc6YWRyLAogIHBhZ2VzID0gICAgICAgICJ4aSArIDcyMyIsCiAgeWVhciA9ICAgICAgICAgIjE5NzMiLAogIElTQk4gPSAgICAgICAgICIwLTIwMS0wMzgwMy1YIiwKICBMQ0NOID0gICAgICAgICAiUUE3Ni41IC5LNzQiLAogIGJpYmRhdGUgPSAgICAgICJXZWQgRGVjIDE1IDE1OjQ3OjQ3IDE5OTMiLAogIGFja25vd2xlZGdlbWVudCA9IGFjay1uaGZiLAogIGFubm90ZSA9ICAgICAgICJTdGFuZGFyZHdlcmsgdWViZXIgU3VjaGVuIHVuZCBTb3J0aWVyZW4gNS4gU29ydGluZyA1LjEuIENvbWJpbmF0b3JpYWwgUHJvcGVydGllcyBvZiBQZXJtdXRhdGlvbnMgNS4yLiBJbnRlcm5hbCBTb3J0aW5nIDUuMy4gT3B0aW11bSBTb3J0aW5nIDUuNC4gRXh0ZXJuYWwgU29ydGluZyA1LjUuIFN1bW1hcnksIEhpc3RvcnksIGFuZCBCaWJsaW9ncmFwaHkgNi4gU2VhcmNoaW5nIDYuMS4gU2VxdWVudGlhbCBTZWFyY2ggNi4yLiBTZWFyY2hpbmcgQnkgQ29tcGFyaXNvbiBvZiBLZXlzIDYuMy4gRGlnaXRhbCBTZWFyY2hpbmcgNi40LiBIYXNoaW5nIDYuNS4gUmV0cmlldmFsIG9uIFNlY29uZGFyeSBLZXlzIEFuc3dlcnMgdG8gRXhlcmNpc2VzIEFwcGVuZGl4IEE6IFRhYmxlcyBvZiBOdW1lcmljYWwgUXVhbnRpdGllcyBBcHBlbmRpeCBCOiBJbmRleCB0byBOb3RhdGlvbnMgSW5kZXggYW5kIEdsb3NzYXJ5LiIsCiAgYW5ub3RlMiA9ICAgICAgIkEgYmFzaWMgc291cmNlIGZvciBjb21wdXRhdGlvbmFsIGFsZ29yaXRobXMgc3VjaCBhcyBoYXNoaW5nIChwcC41MDYtLTU2OCksIHNlYXJjaCB0cmVlIGNvbnN0cnVjdGlvbihwcC40MDYtLTUwNSksIGFuZCBzb21lIG5vdGVzIG9uIGRpc2sgcGVyZm9ybWFuY2UgZXZhbHVhdGlvbiAocHAuMzYxLS0zNzEpLiIsCiAgZGVzY3JpcHRvciA9ICAgIkFsZ29yaXRobXVzLCBCLWJhdW0sIEJhdW0sIEJpbmFlci1iYXVtLCBHZXN0cmV1dGUgU3BlaWNoZXJ1bmcsIEhhc2gtdmVyZmFocmVuLCBNaXNjaGVuLCBTb3J0aWVyZW4sIFNwZWljaGVydW5nLCBTdWNoZW4sIFp1Z3JpZmYiLAp9CgpATWFzdGVyc1RoZXNpc3tEaXR0bWVyOjE5NzY6SUVQLAogIGF1dGhvciA9ICAgICAgICJJbmdvIERpdHRtZXIiLAogIHRpdGxlID0gICAgICAgICJ7SW1wbGVtZW50YXRpb24gZWluZXMgRWluc2Nocml0dGNvbXBpbGVycyBme1widX1yIGRpZSBQcm9nYW1taWVyc3ByYWNoZSBQQVNDQUwgYXVmIGRlciBSZWNoZW5hbmxhZ2UgSUJNXHNsYXNoIDM2MCBkZXIgVW5pdmVyc2l0e1wiYX10IE17XCJ1fW5zdGVyfS4gKHtFbmdsaXNofSB0aXRsZTogSW1wbGVtZW50YXRpb24gb2YgYSBPbmUtU3RlcCBDb21waWxlciBmb3IgdGhlIFByb2dyYW1taW5nIExhbmd1YWdlIHtQQVNDQUx9IG9uIHRoZSB7SUJNfVxzbGFzaCAzNjAgb2YgdGhlIHtVbml2ZXJzaXR5IG9mIE11ZW5zdGVyfSkiLAogIHR5cGUgPSAgICAgICAgICJEaXBsb21lYXJiZWl0IiwKICBzY2hvb2wgPSAgICAgICAiVW5pdmVyc2l0e1wiYX10IE17XCJ1fW5zdGVyIiwKICBhZGRyZXNzID0gICAgICAiTXtcInV9bnN0ZXIsIEdlcm1hbnkiLAogIHBhZ2VzID0gICAgICAgICI/PyIsCiAgbW9udGggPSAgICAgICAgIj8/IiwKICB5ZWFyID0gICAgICAgICAiMTk3NiIsCiAgYmliZGF0ZSA9ICAgICAgIlNhdCBGZWIgMTcgMTM6MjQ6MjkgMTk5NiIsCiAgbm90ZSA9ICAgICAgICAgIkRpcGxvbWVhcmJlaXQgTXtcInV9bnN0ZXIgMTk3NiB1bmQgZG9lcnQgYW5nZWdlYmVuZSBMaXRlcmF0dXIgKEVuZ2xpc2g6IE11ZW5zdGVyIGRpcGxvbWEgd29yayAxOTc2IGFuZCB0aGUgbGl0ZXJhdHVyZSBjaXRlZCB0aGVyZWluKS4gVGhlIGhhc2hpbmcgbWV0aG9kIHdhcyByZWRpc2NvdmVyZWQgZm91cnRlZW4geWVhcnMgbGF0ZXIgYnkgUGVhcnNvbiBcY2l0ZXtQZWFyc29uOjE5OTA6RkhWfSwgYW5kIHRoZW4gY29tbWVudGVkIG9uIGJ5IHNldmVyYWwgYXV0aG9ycyBcY2l0ZXtEaXR0bWVyOjE5OTE6TkZILFNhdm95OjE5OTE6TkZILExpdHNpb3M6MTk5MTpORkgsUGVhcnNvbjoxOTkxOk5GSH0uIiwKICBhY2tub3dsZWRnZW1lbnQgPSBhY2stbmhmYiwKICB4eG5vdGUgPSAgICAgICAiQ2Fubm90IGZpbmQgaW4gRGlzc2VydGF0aW9uIEFic3RyYWN0cywgRXVyb3BlYW4uIiwKfQoKQEJvb2t7S251dGg6MTk5MjpMUCwKICBhdXRob3IgPSAgICAgICAiRG9uYWxkIEUuIEtudXRoIiwKICB0aXRsZSA9ICAgICAgICAiTGl0ZXJhdGUgUHJvZ3JhbW1pbmciLAogIHB1Ymxpc2hlciA9ICAgIHB1Yi1TVUNTTEksCiAgYWRkcmVzcyA9ICAgICAgcHViLVNVQ1NMSTphZHIsCiAgcGFnZXMgPSAgICAgICAgInh2aSArIDM2OCIsCiAgeWVhciA9ICAgICAgICAgIjE5OTIiLAogIElTQk4gPSAgICAgICAgICIwLTkzNzA3My04MC02IChwYXBlcmJhY2spLCAwLTkzNzA3My04MS00IChoYXJkY292ZXIpIiwKICBMQ0NOID0gICAgICAgICAiUUE3Ni42IC5LNjQ0IDE5OTIiLAogIGJpYmRhdGUgPSAgICAgICJGcmkgSnVsIDIyIDA5OjA4OjE0IDE5OTQiLAogIG5vdGUgPSAgICAgICAgICJEaXN0cmlidXRlZCBieSB0aGUgVW5pdmVyc2l0eSBvZiBDaGljYWdvIFByZXNzLiIsCiAgcHJpY2UgPSAgICAgICAgIlVTXCQyNC45NSAocGFwZXJiYWNrKSwgVVNcJDU5Ljk1IChoYXJkY292ZXIpIiwKICBzZXJpZXMgPSAgICAgICAiQ1NMSSBMZWN0dXJlIE5vdGVzIE51bWJlciAyNyIsCiAgYWNrbm93bGVkZ2VtZW50ID0gYWNrLW5oZmIsCn0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdGVzdGRpci90LmYxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NjQAMDAwMTc1MAAwMDAxNzUwADAwMDAwMDAwMDIwADEzMzM3MTc0NzAzADAxMjU1MQAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7JDEgPSAxOyBwcmludH0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRlc3RkaXIvcC4zMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjY0ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDAwMDA0MQAxMzMzNzE3NDcwMwAwMTI0NjYAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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Zm9vfToKNQoKIyMjIC89LyB7cHJpbnQgJDB9Ogpmb289YmFyCmZvbz09YmFyCmZvbys9YmFyCmZvby09YmFyCmZvbyo9YmFyCmZvby89YmFyCmZvb149YmFyCmZvbyU9YmFyCmZvbyE9YmFyCmZvbzw9YmFyCmZvbz49YmFyCmZvbz1iYXI9ZnJpYmJsZQo9Zm9vPWJhcgoKIyMjIC89PS8ge3ByaW50ICQwfToKZm9vPT1iYXIKCiMjIyAvKz0vIHtwcmludCAkMH06Ci4uL2Eub3V0OiBpbGxlZ2FsIHByaW1hcnkgaW4gcmVndWxhciBleHByZXNzaW9uICs9IGF0ID0KIHNvdXJjZSBsaW5lIG51bWJlciAxCiBjb250ZXh0IGlzCgkgPj4+IC8rPS8gPDw8IAoKIyMjIC8qPS8ge3ByaW50ICQwfToKLi4vYS5vdXQ6IGlsbGVnYWwgcHJpbWFyeSBpbiByZWd1bGFyIGV4cHJlc3Npb24gKj0gYXQgPQogc291cmNlIGxpbmUgbnVtYmVyIDEKIGNvbnRleHQgaXMKCSA+Pj4gLyo9LyA8PDwgCgojIyMgLy09LyB7cHJpbnQgJDB9Ogpmb28tPWJhcgoKIyMjIC8vPS8ge3ByaW50ICQwfToKLi4vYS5vdXQ6IGVtcHR5IHJlZ3VsYXIgZXhwcmVzc2lvbgogc291cmNlIGxpbmUgbnVtYmVyIDEKIGNvbnRleHQgaXMKCSA+Pj4gLy8gPDw8IAoKIyMjIC8lPS8ge3ByaW50ICQwfToKZm9vJT1iYXIKCiMjIyAvXj0vIHtwcmludCAkMH06Cj1mb289YmFyCgojIyMgL1wvPS8ge3ByaW50ICQwfToKZm9vLz1iYXIKCiMjIyAvIT0vIHtwcmludCAkMH06CmZvbyE9YmFyCgojIyMgLzw9LyB7cHJpbnQgJDB9Ogpmb288PWJhcgoKIyMjIC8+PS8ge3ByaW50ICQwfToKZm9vPj1iYXIKCiMjIyAhLz0vIHtwcmludCAkMH06CmZvbytiYXIKZm9vIGJhcgpmb28vYmFyCgoKIyMjICEvPT0vIHtwcmludCAkMH06CmZvbz1iYXIKZm9vK2Jhcgpmb28rPWJhcgpmb28tPWJhcgpmb28qPWJhcgpmb28vPWJhcgpmb29ePWJhcgpmb28lPWJhcgpmb28hPWJhcgpmb288PWJhcgpmb28+PWJhcgpmb28gYmFyCmZvby9iYXIKZm9vPWJhcj1mcmliYmxlCj1mb289YmFyCgoKIyMjICEvKz0vIHtwcmludCAkMH06Ci4uL2Eub3V0OiBpbGxlZ2FsIHByaW1hcnkgaW4gcmVndWxhciBleHByZXNzaW9uICs9IGF0ID0KIHNvdXJjZSBsaW5lIG51bWJlciAxCiBjb250ZXh0IGlzCgkgPj4+ICEvKz0vIDw8PCAKCiMjIyAhLyo9LyB7cHJpbnQgJDB9OgouLi9hLm91dDogaWxsZWdhbCBwcmltYXJ5IGluIHJlZ3VsYXIgZXhwcmVzc2lvbiAqPSBhdCA9CiBzb3VyY2UgbGluZSBudW1iZXIgMQogY29udGV4dCBpcwoJID4+PiAhLyo9LyA8PDwgCgojIyMgIS8tPS8ge3ByaW50ICQwfToKZm9vPWJhcgpmb289PWJhcgpmb28rYmFyCmZvbys9YmFyCmZvbyo9YmFyCmZvby89YmFyCmZvb149YmFyCmZvbyU9YmFyCmZvbyE9YmFyCmZvbzw9YmFyCmZvbz49YmFyCmZvbyBiYXIKZm9vL2Jhcgpmb289YmFyPWZyaWJibGUKPWZvbz1iYXIKCgojIyMgIS8vPS8ge3ByaW50ICQwfToKLi4vYS5vdXQ6IGVtcHR5IHJlZ3VsYXIgZXhwcmVzc2lvbgogc291cmNlIGxpbmUgbnVtYmVyIDEKIGNvbnRleHQgaXMKCSA+Pj4gIS8vIDw8PCAKCiMjIyAhLyU9LyB7cHJpbnQgJDB9Ogpmb289YmFyCmZvbz09YmFyCmZvbytiYXIKZm9vKz1iYXIKZm9vLT1iYXIKZm9vKj1iYXIKZm9vLz1iYXIKZm9vXj1iYXIKZm9vIT1iYXIKZm9vPD1iYXIKZm9vPj1iYXIKZm9vIGJhcgpmb28vYmFyCmZvbz1iYXI9ZnJpYmJsZQo9Zm9vPWJhcgoKCiMjIyAhL149LyB7cHJpbnQgJDB9Ogpmb289YmFyCmZvbz09YmFyCmZvbytiYXIKZm9vKz1iYXIKZm9vLT1iYXIKZm9vKj1iYXIKZm9vLz1iYXIKZm9vXj1iYXIKZm9vJT1iYXIKZm9vIT1iYXIKZm9vPD1iYXIKZm9vPj1iYXIKZm9vIGJhcgpmb28vYmFyCmZvbz1iYXI9ZnJpYmJsZQoKCiMjIyAhL1wvPS8ge3ByaW50ICQwfToKZm9vPWJhcgpmb289PWJhcgpmb28rYmFyCmZvbys9YmFyCmZvby09YmFyCmZvbyo9YmFyCmZvb149YmFyCmZvbyU9YmFyCmZvbyE9YmFyCmZvbzw9YmFyCmZvbz49YmFyCmZvbyBiYXIKZm9vL2Jhcgpmb289YmFyPWZyaWJibGUKPWZvbz1iYXIKCgojIyMgIS8hPS8ge3ByaW50ICQwfToKZm9vPWJhcgpmb289PWJhcgpmb28rYmFyCmZvbys9YmFyCmZvby09YmFyCmZvbyo9YmFyCmZvby89YmFyCmZvb149YmFyCmZvbyU9YmFyCmZvbzw9YmFyCmZvbz49YmFyCmZvbyBiYXIKZm9vL2Jhcgpmb289YmFyPWZyaWJibGUKPWZvbz1iYXIKCgojIyMgIS88PS8ge3ByaW50ICQwfToKZm9vPWJhcgpmb289PWJhcgpmb28rYmFyCmZvbys9YmFyCmZvby09YmFyCmZvbyo9YmFyCmZvby89YmFyCmZvb149YmFyCmZvbyU9YmFyCmZvbyE9YmFyCmZvbz49YmFyCmZvbyBiYXIKZm9vL2Jhcgpmb289YmFyPWZyaWJibGUKPWZvbz1iYXIKCgojIyMgIS8+PS8ge3ByaW50ICQwfToKZm9vPWJhcgpmb289PWJhcgpmb28rYmFyCmZvbys9YmFyCmZvby09YmFyCmZvbyo9YmFyCmZvby89YmFyCmZvb149YmFyCmZvbyU9YmFyCmZvbyE9YmFyCmZvbzw9YmFyCmZvbyBiYXIKZm9vL2Jhcgpmb289YmFyPWZyaWJibGUKPWZvbz1iYXIKCgojIyMgJDB+Lz0vIHtwcmludCAkMH06CmZvbz1iYXIKZm9vPT1iYXIKZm9vKz1iYXIKZm9vLT1iYXIKZm9vKj1iYXIKZm9vLz1iYXIKZm9vXj1iYXIKZm9vJT1iYXIKZm9vIT1iYXIKZm9vPD1iYXIKZm9vPj1iYXIKZm9vPWJhcj1mcmliYmxlCj1mb289YmFyCgojIyMgJDB+Lz09LyB7cHJpbnQgJDB9Ogpmb289PWJhcgoKIyMjICQwfi8rPS8ge3ByaW50ICQwfToKLi4vYS5vdXQ6IGlsbGVnYWwgcHJpbWFyeSBpbiByZWd1bGFyIGV4cHJlc3Npb24gKz0gYXQgPQogc291cmNlIGxpbmUgbnVtYmVyIDEKIGNvbnRleHQgaXMKCSA+Pj4gJDB+Lys9LyA8PDwgCgojIyMgJDB+Lyo9LyB7cHJpbnQgJDB9OgouLi9hLm91dDogaWxsZWdhbCBwcmltYXJ5IGluIHJlZ3VsYXIgZXhwcmVzc2lvbiAqPSBhdCA9CiBzb3VyY2UgbGluZSBudW1iZXIgMQogY29udGV4dCBpcwoJID4+PiAkMH4vKj0vIDw8PCAKCiMjIyAkMH4vLT0vIHtwcmludCAkMH06CmZvby09YmFyCgojIyMgJDB+Ly89LyB7cHJpbnQgJDB9OgouLi9hLm91dDogZW1wdHkgcmVndWxhciBleHByZXNzaW9uCiBzb3VyY2UgbGluZSBudW1iZXIgMQogY29udGV4dCBpcwoJID4+PiAkMH4vLyA8PDwgCgojIyMgJDB+LyU9LyB7cHJpbnQgJDB9Ogpmb28lPWJhcgoKIyMjICQwfi9ePS8ge3ByaW50ICQwfToKPWZvbz1iYXIKCiMjIyAkMH4vXC89LyB7cHJpbnQgJDB9Ogpmb28vPWJhcgoKIyMjICQwfi8hPS8ge3ByaW50ICQwfToKZm9vIT1iYXIKCiMjIyAkMH4vPD0vIHtwcmludCAkMH06CmZvbzw9YmFyCgojIyMgJDB+Lz49LyB7cHJpbnQgJDB9Ogpmb28+PWJhcgoKIyMjICQwIX4vPS8ge3ByaW50ICQwfToKZm9vK2Jhcgpmb28gYmFyCmZvby9iYXIKCgojIyMgJDAhfi89PS8ge3ByaW50ICQwfToKZm9vPWJhcgpmb28rYmFyCmZvbys9YmFyCmZvby09YmFyCmZvbyo9YmFyCmZvby89YmFyCmZvb149YmFyCmZvbyU9YmFyCmZvbyE9YmFyCmZvbzw9YmFyCmZvbz49YmFyCmZvbyBiYXIKZm9vL2Jhcgpmb289YmFyPWZyaWJibGUKPWZvbz1iYXIKCgojIyMgJDAhfi8rPS8ge3ByaW50ICQwfToKLi4vYS5vdXQ6IGlsbGVnYWwgcHJpbWFyeSBpbiByZWd1bGFyIGV4cHJlc3Npb24gKz0gYXQgPQogc291cmNlIGxpbmUgbnVtYmVyIDEKIGNvbnRleHQgaXMKCSA+Pj4gJDAhfi8rPS8gPDw8IAoKIyMjICQwIX4vKj0vIHtwcmludCAkMH06Ci4uL2Eub3V0OiBpbGxlZ2FsIHByaW1hcnkgaW4gcmVndWxhciBleHByZXNzaW9uICo9IGF0ID0KIHNvdXJjZSBsaW5lIG51bWJlciAxCiBjb250ZXh0IGlzCgkgPj4+ICQwIX4vKj0vIDw8PCAKCiMjIyAkMCF+Ly09LyB7cHJpbnQgJDB9Ogpmb289YmFyCmZvbz09YmFyCmZvbytiYXIKZm9vKz1iYXIKZm9vKj1iYXIKZm9vLz1iYXIKZm9vXj1iYXIKZm9vJT1iYXIKZm9vIT1iYXIKZm9vPD1iYXIKZm9vPj1iYXIKZm9vIGJhcgpmb28vYmFyCmZvbz1iYXI9ZnJpYmJsZQo9Zm9vPWJhcgoKCiMjIyAkMCF+Ly89LyB7cHJpbnQgJDB9OgouLi9hLm91dDogZW1wdHkgcmVndWxhciBleHByZXNzaW9uCiBzb3VyY2UgbGluZSBudW1iZXIgMQogY29udGV4dCBpcwoJID4+PiAkMCF+Ly8gPDw8IAoKIyMjICQwIX4vJT0vIHtwcmludCAkMH06CmZvbz1iYXIKZm9vPT1iYXIKZm9vK2Jhcgpmb28rPWJhcgpmb28tPWJhcgpmb28qPWJhcgpmb28vPWJhcgpmb29ePWJhcgpmb28hPWJhcgpmb288PWJhcgpmb28+PWJhcgpmb28gYmFyCmZvby9iYXIKZm9vPWJhcj1mcmliYmxlCj1mb289YmFyCgoKIyMjICQwIX4vXj0vIHtwcmludCAkMH06CmZvbz1iYXIKZm9vPT1iYXIKZm9vK2Jhcgpmb28rPWJhcgpmb28tPWJhcgpmb28qPWJhcgpmb28vPWJhcgpmb29ePWJhcgpmb28lPWJhcgpmb28hPWJhcgpmb288PWJhcgpmb28+PWJhcgpmb28gYmFyCmZvby9iYXIKZm9vPWJhcj1mcmliYmxlCgoKIyMjICQwIX4vXC89LyB7cHJpbnQgJDB9Ogpmb289YmFyCmZvbz09YmFyCmZvbytiYXIKZm9vKz1iYXIKZm9vLT1iYXIKZm9vKj1iYXIKZm9vXj1iYXIKZm9vJT1iYXIKZm9vIT1iYXIKZm9vPD1iYXIKZm9vPj1iYXIKZm9vIGJhcgpmb28vYmFyCmZvbz1iYXI9ZnJpYmJsZQo9Zm9vPWJhcgoKCiMjIyAkMCF+LyE9LyB7cHJpbnQgJDB9Ogpmb289YmFyCmZvbz09YmFyCmZvbytiYXIKZm9vKz1iYXIKZm9vLT1iYXIKZm9vKj1iYXIKZm9vLz1iYXIKZm9vXj1iYXIKZm9vJT1iYXIKZm9vPD1iYXIKZm9vPj1iYXIKZm9vIGJhcgpmb28vYmFyCmZvbz1iYXI9ZnJpYmJsZQo9Zm9vPWJhcgoKCiMjIyAkMCF+Lzw9LyB7cHJpbnQgJDB9Ogpmb289YmFyCmZvbz09YmFyCmZvbytiYXIKZm9vKz1iYXIKZm9vLT1iYXIKZm9vKj1iYXIKZm9vLz1iYXIKZm9vXj1iYXIKZm9vJT1iYXIKZm9vIT1iYXIKZm9vPj1iYXIKZm9vIGJhcgpmb28vYmFyCmZvbz1iYXI9ZnJpYmJsZQo9Zm9vPWJhcgoKCiMjIyAkMCF+Lz49LyB7cHJpbnQgJDB9Ogpmb289YmFyCmZvbz09YmFyCmZvbytiYXIKZm9vKz1iYXIKZm9vLT1iYXIKZm9vKj1iYXIKZm9vLz1iYXIKZm9vXj1iYXIKZm9vJT1iYXIKZm9vIT1iYXIKZm9vPD1iYXIKZm9vIGJhcgpmb28vYmFyCmZvbz1iYXI9ZnJpYmJsZQo9Zm9vPWJhcgoKCiMjIyB7aWYobWF0Y2goJDAsLz0vKSlwcmludCAkMH06CmZvbz1iYXIKZm9vPT1iYXIKZm9vKz1iYXIKZm9vLT1iYXIKZm9vKj1iYXIKZm9vLz1iYXIKZm9vXj1iYXIKZm9vJT1iYXIKZm9vIT1iYXIKZm9vPD1iYXIKZm9vPj1iYXIKZm9vPWJhcj1mcmliYmxlCj1mb289YmFyCgojIyMge2lmKG1hdGNoKCQwLC89LykpcHJpbnQgJDB9Ogpmb289YmFyCmZvbz09YmFyCmZvbys9YmFyCmZvby09YmFyCmZvbyo9YmFyCmZvby89YmFyCmZvb149YmFyCmZvbyU9YmFyCmZvbyE9YmFyCmZvbzw9YmFyCmZvbz49YmFyCmZvbz1iYXI9ZnJpYmJsZQo9Zm9vPWJhcgoKIyMjIHtpZihtYXRjaCgkMCwvPT0vKSlwcmludCAkMH06CmZvbz09YmFyCgojIyMge2lmKG1hdGNoKCQwLC8rPS8pKXByaW50ICQwfToKLi4vYS5vdXQ6IGlsbGVnYWwgcHJpbWFyeSBpbiByZWd1bGFyIGV4cHJlc3Npb24gKz0gYXQgPQogc291cmNlIGxpbmUgbnVtYmVyIDEKIGNvbnRleHQgaXMKCSA+Pj4ge2lmKG1hdGNoKCQwLC8rPS8pIDw8PCAKCiMjIyB7aWYobWF0Y2goJDAsLyo9LykpcHJpbnQgJDB9OgouLi9hLm91dDogaWxsZWdhbCBwcmltYXJ5IGluIHJlZ3VsYXIgZXhwcmVzc2lvbiAqPSBhdCA9CiBzb3VyY2UgbGluZSBudW1iZXIgMQogY29udGV4dCBpcwoJID4+PiB7aWYobWF0Y2goJDAsLyo9LykgPDw8IAoKIyMjIHtpZihtYXRjaCgkMCwvLT0vKSlwcmludCAkMH06CmZvby09YmFyCgojIyMge2lmKG1hdGNoKCQwLC8vPS8pKXByaW50ICQwfToKLi4vYS5vdXQ6IGVtcHR5IHJlZ3VsYXIgZXhwcmVzc2lvbgogc291cmNlIGxpbmUgbnVtYmVyIDEKIGNvbnRleHQgaXMKCSA+Pj4ge2lmKG1hdGNoKCQwLC8vPSA8PDwgLykpcHJpbnQgJDB9CgojIyMge2lmKG1hdGNoKCQwLC8lPS8pKXByaW50ICQwfToKZm9vJT1iYXIKCiMjIyB7aWYobWF0Y2goJDAsL149LykpcHJpbnQgJDB9Ogo9Zm9vPWJhcgoKIyMjIHtpZihtYXRjaCgkMCwvXC89LykpcHJpbnQgJDB9Ogpmb28vPWJhcgoKIyMjIHtpZihtYXRjaCgkMCwvIT0vKSlwcmludCAkMH06CmZvbyE9YmFyCgojIyMge2lmKG1hdGNoKCQwLC88PS8pKXByaW50ICQwfToKZm9vPD1iYXIKCiMjIyB7aWYobWF0Y2goJDAsLz49LykpcHJpbnQgJDB9Ogpmb28+PWJhcgoKIyMjIHtpZighbWF0Y2goJDAsLz0vKSlwcmludCAkMH06CmZvbytiYXIKZm9vIGJhcgpmb28vYmFyCgoKIyMjIHtpZighbWF0Y2goJDAsLz09LykpcHJpbnQgJDB9Ogpmb289YmFyCmZvbytiYXIKZm9vKz1iYXIKZm9vLT1iYXIKZm9vKj1iYXIKZm9vLz1iYXIKZm9vXj1iYXIKZm9vJT1iYXIKZm9vIT1iYXIKZm9vPD1iYXIKZm9vPj1iYXIKZm9vIGJhcgpmb28vYmFyCmZvbz1iYXI9ZnJpYmJsZQo9Zm9vPWJhcgoKCiMjIyB7aWYoIW1hdGNoKCQwLC8rPS8pKXByaW50ICQwfToKLi4vYS5vdXQ6IGlsbGVnYWwgcHJpbWFyeSBpbiByZWd1bGFyIGV4cHJlc3Npb24gKz0gYXQgPQogc291cmNlIGxpbmUgbnVtYmVyIDEKIGNvbnRleHQgaXMKCSA+Pj4ge2lmKCFtYXRjaCgkMCwvKz0vKSA8PDwgCgojIyMge2lmKCFtYXRjaCgkMCwvKj0vKSlwcmludCAkMH06Ci4uL2Eub3V0OiBpbGxlZ2FsIHByaW1hcnkgaW4gcmVndWxhciBleHByZXNzaW9uICo9IGF0ID0KIHNvdXJjZSBsaW5lIG51bWJlciAxCiBjb250ZXh0IGlzCgkgPj4+IHtpZighbWF0Y2goJDAsLyo9LykgPDw8IAoKIyMjIHtpZighbWF0Y2goJDAsLy09LykpcHJpbnQgJDB9Ogpmb289YmFyCmZvbz09YmFyCmZvbytiYXIKZm9vKz1iYXIKZm9vKj1iYXIKZm9vLz1iYXIKZm9vXj1iYXIKZm9vJT1iYXIKZm9vIT1iYXIKZm9vPD1iYXIKZm9vPj1iYXIKZm9vIGJhcgpmb28vYmFyCmZvbz1iYXI9ZnJpYmJsZQo9Zm9vPWJhcgoKCiMjIyB7aWYoIW1hdGNoKCQwLC8vPS8pKXByaW50ICQwfToKLi4vYS5vdXQ6IGVtcHR5IHJlZ3VsYXIgZXhwcmVzc2lvbgogc291cmNlIGxpbmUgbnVtYmVyIDEKIGNvbnRleHQgaXMKCSA+Pj4ge2lmKCFtYXRjaCgkMCwvLz0gPDw8IC8pKXByaW50ICQwfQoKIyMjIHtpZighbWF0Y2goJDAsLyU9LykpcHJpbnQgJDB9Ogpmb289YmFyCmZvbz09YmFyCmZvbytiYXIKZm9vKz1iYXIKZm9vLT1iYXIKZm9vKj1iYXIKZm9vLz1iYXIKZm9vXj1iYXIKZm9vIT1iYXIKZm9vPD1iYXIKZm9vPj1iYXIKZm9vIGJhcgpmb28vYmFyCmZvbz1iYXI9ZnJpYmJsZQo9Zm9vPWJhcgoKCiMjIyB7aWYoIW1hdGNoKCQwLC9ePS8pKXByaW50ICQwfToKZm9vPWJhcgpmb289PWJhcgpmb28rYmFyCmZvbys9YmFyCmZvby09YmFyCmZvbyo9YmFyCmZvby89YmFyCmZvb149YmFyCmZvbyU9YmFyCmZvbyE9YmFyCmZvbzw9YmFyCmZvbz49YmFyCmZvbyBiYXIKZm9vL2Jhcgpmb289YmFyPWZyaWJibGUKCgojIyMge2lmKCFtYXRjaCgkMCwvXC89LykpcHJpbnQgJDB9Ogpmb289YmFyCmZvbz09YmFyCmZvbytiYXIKZm9vKz1iYXIKZm9vLT1iYXIKZm9vKj1iYXIKZm9vXj1iYXIKZm9vJT1iYXIKZm9vIT1iYXIKZm9vPD1iYXIKZm9vPj1iYXIKZm9vIGJhcgpmb28vYmFyCmZvbz1iYXI9ZnJpYmJsZQo9Zm9vPWJhcgoKCiMjIyB7aWYoIW1hdGNoKCQwLC8hPS8pKXByaW50ICQwfToKZm9vPWJhcgpmb289PWJhcgpmb28rYmFyCmZvbys9YmFyCmZvby09YmFyCmZvbyo9YmFyCmZvby89YmFyCmZvb149YmFyCmZvbyU9YmFyCmZvbzw9YmFyCmZvbz49YmFyCmZvbyBiYXIKZm9vL2Jhcgpmb289YmFyPWZyaWJibGUKPWZvbz1iYXIKCgojIyMge2lmKCFtYXRjaCgkMCwvPD0vKSlwcmludCAkMH06CmZvbz1iYXIKZm9vPT1iYXIKZm9vK2Jhcgpmb28rPWJhcgpmb28tPWJhcgpmb28qPWJhcgpmb28vPWJhcgpmb29ePWJhcgpmb28lPWJhcgpmb28hPWJhcgpmb28+PWJhcgpmb28gYmFyCmZvby9iYXIKZm9vPWJhcj1mcmliYmxlCj1mb289YmFyCgoKIyMjIHtpZighbWF0Y2goJDAsLz49LykpcHJpbnQgJDB9Ogpmb289YmFyCmZvbz09YmFyCmZvbytiYXIKZm9vKz1iYXIKZm9vLT1iYXIKZm9vKj1iYXIKZm9vLz1iYXIKZm9vXj1iYXIKZm9vJT1iYXIKZm9vIT1iYXIKZm9vPD1iYXIKZm9vIGJhcgpmb28vYmFyCmZvbz1iYXI9ZnJpYmJsZQo9Zm9vPWJhcgoKCiMjIyB7aWYoaW5kZXgoJDAsLz0vKSlwcmludCAkMH06Ci4uL2Eub3V0OiBpbmRleCgpIGRvZXNuJ3QgcGVybWl0IHJlZ3VsYXIgZXhwcmVzc2lvbnMgYXQgc291cmNlIGxpbmUgMQogY29udGV4dCBpcwoJID4+PiB7aWYoaW5kZXgoJDAsLz0vKSA8PDwgCgojIyMge2lmKGluZGV4KCQwLC89LykpcHJpbnQgJDB9OgouLi9hLm91dDogaW5kZXgoKSBkb2Vzbid0IHBlcm1pdCByZWd1bGFyIGV4cHJlc3Npb25zIGF0IHNvdXJjZSBsaW5lIDEKIGNvbnRleHQgaXMKCSA+Pj4ge2lmKGluZGV4KCQwLC89LykgPDw8IAoKIyMjIHtpZihpbmRleCgkMCwvPT0vKSlwcmludCAkMH06Ci4uL2Eub3V0OiBpbmRleCgpIGRvZXNuJ3QgcGVybWl0IHJlZ3VsYXIgZXhwcmVzc2lvbnMgYXQgc291cmNlIGxpbmUgMQogY29udGV4dCBpcwoJID4+PiB7aWYoaW5kZXgoJDAsLz09LykgPDw8IAoKIyMjIHtpZihpbmRleCgkMCwvKz0vKSlwcmludCAkMH06Ci4uL2Eub3V0OiBpbmRleCgpIGRvZXNuJ3QgcGVybWl0IHJlZ3VsYXIgZXhwcmVzc2lvbnMgYXQgc291cmNlIGxpbmUgMQogY29udGV4dCBpcwoJID4+PiB7aWYoaW5kZXgoJDAsLys9LykgPDw8IAoKIyMjIHtpZihpbmRleCgkMCwvKj0vKSlwcmludCAkMH06Ci4uL2Eub3V0OiBpbmRleCgpIGRvZXNuJ3QgcGVybWl0IHJlZ3VsYXIgZXhwcmVzc2lvbnMgYXQgc291cmNlIGxpbmUgMQogY29udGV4dCBpcwoJID4+PiB7aWYoaW5kZXgoJDAsLyo9LykgPDw8IAoKIyMjIHtpZihpbmRleCgkMCwvLT0vKSlwcmludCAkMH06Ci4uL2Eub3V0OiBpbmRleCgpIGRvZXNuJ3QgcGVybWl0IHJlZ3VsYXIgZXhwcmVzc2lvbnMgYXQgc291cmNlIGxpbmUgMQogY29udGV4dCBpcwoJID4+PiB7aWYoaW5kZXgoJDAsLy09LykgPDw8IAoKIyMjIHtpZihpbmRleCgkMCwvLz0vKSlwcmludCAkMH06Ci4uL2Eub3V0OiBlbXB0eSByZWd1bGFyIGV4cHJlc3Npb24KIHNvdXJjZSBsaW5lIG51bWJlciAxCiBjb250ZXh0IGlzCgkgPj4+IHtpZihpbmRleCgkMCwvLz0gPDw8IC8pKXByaW50ICQwfQoKIyMjIHtpZihpbmRleCgkMCwvJT0vKSlwcmludCAkMH06Ci4uL2Eub3V0OiBpbmRleCgpIGRvZXNuJ3QgcGVybWl0IHJlZ3VsYXIgZXhwcmVzc2lvbnMgYXQgc291cmNlIGxpbmUgMQogY29udGV4dCBpcwoJID4+PiB7aWYoaW5kZXgoJDAsLyU9LykgPDw8IAoKIyMjIHtpZihpbmRleCgkMCwvXj0vKSlwcmludCAkMH06Ci4uL2Eub3V0OiBpbmRleCgpIGRvZXNuJ3QgcGVybWl0IHJlZ3VsYXIgZXhwcmVzc2lvbnMgYXQgc291cmNlIGxpbmUgMQogY29udGV4dCBpcwoJID4+PiB7aWYoaW5kZXgoJDAsL149LykgPDw8IAoKIyMjIHtpZihpbmRleCgkMCwvXC89LykpcHJpbnQgJDB9OgouLi9hLm91dDogaW5kZXgoKSBkb2Vzbid0IHBlcm1pdCByZWd1bGFyIGV4cHJlc3Npb25zIGF0IHNvdXJjZSBsaW5lIDEKIGNvbnRleHQgaXMKCSA+Pj4ge2lmKGluZGV4KCQwLC9cLz0vKSA8PDwgCgojIyMge2lmKGluZGV4KCQwLC8hPS8pKXByaW50ICQwfToKLi4vYS5vdXQ6IGluZGV4KCkgZG9lc24ndCBwZXJtaXQgcmVndWxhciBleHByZXNzaW9ucyBhdCBzb3VyY2UgbGluZSAxCiBjb250ZXh0IGlzCgkgPj4+IHtpZihpbmRleCgkMCwvIT0vKSA8PDwgCgojIyMge2lmKGluZGV4KCQwLC88PS8pKXByaW50ICQwfToKLi4vYS5vdXQ6IGluZGV4KCkgZG9lc24ndCBwZXJtaXQgcmVndWxhciBleHByZXNzaW9ucyBhdCBzb3VyY2UgbGluZSAxCiBjb250ZXh0IGlzCgkgPj4+IHtpZihpbmRleCgkMCwvPD0vKSA8PDwgCgojIyMge2lmKGluZGV4KCQwLC8+PS8pKXByaW50ICQwfToKLi4vYS5vdXQ6IGluZGV4KCkgZG9lc24ndCBwZXJtaXQgcmVndWxhciBleHByZXNzaW9ucyBhdCBzb3VyY2UgbGluZSAxCiBjb250ZXh0IGlzCgkgPj4+IHtpZihpbmRleCgkMCwvPj0vKSA8PDwgCgojIyMge2lmKHNwbGl0KCQwLGZvbywvPS8pKXByaW50ICQwfToKZm9vPWJhcgpmb289PWJhcgpmb28rYmFyCmZvbys9YmFyCmZvby09YmFyCmZvbyo9YmFyCmZvby89YmFyCmZvb149YmFyCmZvbyU9YmFyCmZvbyE9YmFyCmZvbzw9YmFyCmZvbz49YmFyCmZvbyBiYXIKZm9vL2Jhcgpmb289YmFyPWZyaWJibGUKPWZvbz1iYXIKCgojIyMge2lmKHNwbGl0KCQwLGZvbywvPS8pKXByaW50ICQwfToKZm9vPWJhcgpmb289PWJhcgpmb28rYmFyCmZvbys9YmFyCmZvby09YmFyCmZvbyo9YmFyCmZvby89YmFyCmZvb149YmFyCmZvbyU9YmFyCmZvbyE9YmFyCmZvbzw9YmFyCmZvbz49YmFyCmZvbyBiYXIKZm9vL2Jhcgpmb289YmFyPWZyaWJibGUKPWZvbz1iYXIKCgojIyMge2lmKHNwbGl0KCQwLGZvbywvPT0vKSlwcmludCAkMH06CmZvbz1iYXIKZm9vPT1iYXIKZm9vK2Jhcgpmb28rPWJhcgpmb28tPWJhcgpmb28qPWJhcgpmb28vPWJhcgpmb29ePWJhcgpmb28lPWJhcgpmb28hPWJhcgpmb288PWJhcgpmb28+PWJhcgpmb28gYmFyCmZvby9iYXIKZm9vPWJhcj1mcmliYmxlCj1mb289YmFyCgoKIyMjIHtpZihzcGxpdCgkMCxmb28sLys9LykpcHJpbnQgJDB9OgouLi9hLm91dDogaWxsZWdhbCBwcmltYXJ5IGluIHJlZ3VsYXIgZXhwcmVzc2lvbiArPSBhdCA9CiBzb3VyY2UgbGluZSBudW1iZXIgMQogY29udGV4dCBpcwoJID4+PiB7aWYoc3BsaXQoJDAsZm9vLC8rPS8pIDw8PCAKCiMjIyB7aWYoc3BsaXQoJDAsZm9vLC8qPS8pKXByaW50ICQwfToKLi4vYS5vdXQ6IGlsbGVnYWwgcHJpbWFyeSBpbiByZWd1bGFyIGV4cHJlc3Npb24gKj0gYXQgPQogc291cmNlIGxpbmUgbnVtYmVyIDEKIGNvbnRleHQgaXMKCSA+Pj4ge2lmKHNwbGl0KCQwLGZvbywvKj0vKSA8PDwgCgojIyMge2lmKHNwbGl0KCQwLGZvbywvLT0vKSlwcmludCAkMH06CmZvbz1iYXIKZm9vPT1iYXIKZm9vK2Jhcgpmb28rPWJhcgpmb28tPWJhcgpmb28qPWJhcgpmb28vPWJhcgpmb29ePWJhcgpmb28lPWJhcgpmb28hPWJhcgpmb288PWJhcgpmb28+PWJhcgpmb28gYmFyCmZvby9iYXIKZm9vPWJhcj1mcmliYmxlCj1mb289YmFyCgoKIyMjIHtpZihzcGxpdCgkMCxmb28sLy89LykpcHJpbnQgJDB9OgouLi9hLm91dDogZW1wdHkgcmVndWxhciBleHByZXNzaW9uCiBzb3VyY2UgbGluZSBudW1iZXIgMQogY29udGV4dCBpcwoJID4+PiB7aWYoc3BsaXQoJDAsZm9vLC8vPSA8PDwgLykpcHJpbnQgJDB9CgojIyMge2lmKHNwbGl0KCQwLGZvbywvJT0vKSlwcmludCAkMH06CmZvbz1iYXIKZm9vPT1iYXIKZm9vK2Jhcgpmb28rPWJhcgpmb28tPWJhcgpmb28qPWJhcgpmb28vPWJhcgpmb29ePWJhcgpmb28lPWJhcgpmb28hPWJhcgpmb288PWJhcgpmb28+PWJhcgpmb28gYmFyCmZvby9iYXIKZm9vPWJhcj1mcmliYmxlCj1mb289YmFyCgoKIyMjIHtpZihzcGxpdCgkMCxmb28sL149LykpcHJpbnQgJDB9Ogpmb289YmFyCmZvbz09YmFyCmZvbytiYXIKZm9vKz1iYXIKZm9vLT1iYXIKZm9vKj1iYXIKZm9vLz1iYXIKZm9vXj1iYXIKZm9vJT1iYXIKZm9vIT1iYXIKZm9vPD1iYXIKZm9vPj1iYXIKZm9vIGJhcgpmb28vYmFyCmZvbz1iYXI9ZnJpYmJsZQo9Zm9vPWJhcgoKCiMjIyB7aWYoc3BsaXQoJDAsZm9vLC9cLz0vKSlwcmludCAkMH06CmZvbz1iYXIKZm9vPT1iYXIKZm9vK2Jhcgpmb28rPWJhcgpmb28tPWJhcgpmb28qPWJhcgpmb28vPWJhcgpmb29ePWJhcgpmb28lPWJhcgpmb28hPWJhcgpmb288PWJhcgpmb28+PWJhcgpmb28gYmFyCmZvby9iYXIKZm9vPWJhcj1mcmliYmxlCj1mb289YmFyCgoKIyMjIHtpZihzcGxpdCgkMCxmb28sLyE9LykpcHJpbnQgJDB9Ogpmb289YmFyCmZvbz09YmFyCmZvbytiYXIKZm9vKz1iYXIKZm9vLT1iYXIKZm9vKj1iYXIKZm9vLz1iYXIKZm9vXj1iYXIKZm9vJT1iYXIKZm9vIT1iYXIKZm9vPD1iYXIKZm9vPj1iYXIKZm9vIGJhcgpmb28vYmFyCmZvbz1iYXI9ZnJpYmJsZQo9Zm9vPWJhcgoKCiMjIyB7aWYoc3BsaXQoJDAsZm9vLC88PS8pKXByaW50ICQwfToKZm9vPWJhcgpmb289PWJhcgpmb28rYmFyCmZvbys9YmFyCmZvby09YmFyCmZvbyo9YmFyCmZvby89YmFyCmZvb149YmFyCmZvbyU9YmFyCmZvbyE9YmFyCmZvbzw9YmFyCmZvbz49YmFyCmZvbyBiYXIKZm9vL2Jhcgpmb289YmFyPWZyaWJibGUKPWZvbz1iYXIKCgojIyMge2lmKHNwbGl0KCQwLGZvbywvPj0vKSlwcmludCAkMH06CmZvbz1iYXIKZm9vPT1iYXIKZm9vK2Jhcgpmb28rPWJhcgpmb28tPWJhcgpmb28qPWJhcgpmb28vPWJhcgpmb29ePWJhcgpmb28lPWJhcgpmb28hPWJhcgpmb288PWJhcgpmb28+PWJhcgpmb28gYmFyCmZvby9iYXIKZm9vPWJhcj1mcmliYmxlCj1mb289YmFyCgoKIyMjIHtpZihzdWIoLz0vLCIjIikpcHJpbnQgJDB9Ogpmb28jYmFyCmZvbyM9YmFyCmZvbysjYmFyCmZvby0jYmFyCmZvbyojYmFyCmZvby8jYmFyCmZvb14jYmFyCmZvbyUjYmFyCmZvbyEjYmFyCmZvbzwjYmFyCmZvbz4jYmFyCmZvbyNiYXI9ZnJpYmJsZQojZm9vPWJhcgoKIyMjIHtpZihzdWIoLz0vLCIjIikpcHJpbnQgJDB9Ogpmb28jYmFyCmZvbyM9YmFyCmZvbysjYmFyCmZvby0jYmFyCmZvbyojYmFyCmZvby8jYmFyCmZvb14jYmFyCmZvbyUjYmFyCmZvbyEjYmFyCmZvbzwjYmFyCmZvbz4jYmFyCmZvbyNiYXI9ZnJpYmJsZQojZm9vPWJhcgoKIyMjIHtpZihzdWIoLz09LywiIyIpKXByaW50ICQwfToKZm9vI2JhcgoKIyMjIHtpZihzdWIoLys9LywiIyIpKXByaW50ICQwfToKLi4vYS5vdXQ6IGlsbGVnYWwgcHJpbWFyeSBpbiByZWd1bGFyIGV4cHJlc3Npb24gKz0gYXQgPQogc291cmNlIGxpbmUgbnVtYmVyIDEKIGNvbnRleHQgaXMKCSA+Pj4ge2lmKHN1YigvKz0vLCIjIikgPDw8IAoKIyMjIHtpZihzdWIoLyo9LywiIyIpKXByaW50ICQwfToKLi4vYS5vdXQ6IGlsbGVnYWwgcHJpbWFyeSBpbiByZWd1bGFyIGV4cHJlc3Npb24gKj0gYXQgPQogc291cmNlIGxpbmUgbnVtYmVyIDEKIGNvbnRleHQgaXMKCSA+Pj4ge2lmKHN1YigvKj0vLCIjIikgPDw8IAoKIyMjIHtpZihzdWIoLy09LywiIyIpKXByaW50ICQwfToKZm9vI2JhcgoKIyMjIHtpZihzdWIoLy89LywiIyIpKXByaW50ICQwfToKLi4vYS5vdXQ6IGVtcHR5IHJlZ3VsYXIgZXhwcmVzc2lvbgogc291cmNlIGxpbmUgbnVtYmVyIDEKIGNvbnRleHQgaXMKCSA+Pj4ge2lmKHN1YigvLz0gPDw8IC8sIiMiKSlwcmludCAkMH0KCiMjIyB7aWYoc3ViKC8lPS8sIiMiKSlwcmludCAkMH06CmZvbyNiYXIKCiMjIyB7aWYoc3ViKC9ePS8sIiMiKSlwcmludCAkMH06CiNmb289YmFyCgojIyMge2lmKHN1YigvXC89LywiIyIpKXByaW50ICQwfToKZm9vI2JhcgoKIyMjIHtpZihzdWIoLyE9LywiIyIpKXByaW50ICQwfToKZm9vI2JhcgoKIyMjIHtpZihzdWIoLzw9LywiIyIpKXByaW50ICQwfToKZm9vI2JhcgoKIyMjIHtpZihzdWIoLz49LywiIyIpKXByaW50ICQwfToKZm9vI2JhcgoKIyMjIHtpZihnc3ViKC89LywiIyIpKXByaW50ICQwfToKZm9vI2Jhcgpmb28jI2Jhcgpmb28rI2Jhcgpmb28tI2Jhcgpmb28qI2Jhcgpmb28vI2Jhcgpmb29eI2Jhcgpmb28lI2Jhcgpmb28hI2Jhcgpmb288I2Jhcgpmb28+I2Jhcgpmb28jYmFyI2ZyaWJibGUKI2ZvbyNiYXIKCiMjIyB7aWYoZ3N1YigvPS8sIiMiKSlwcmludCAkMH06CmZvbyNiYXIKZm9vIyNiYXIKZm9vKyNiYXIKZm9vLSNiYXIKZm9vKiNiYXIKZm9vLyNiYXIKZm9vXiNiYXIKZm9vJSNiYXIKZm9vISNiYXIKZm9vPCNiYXIKZm9vPiNiYXIKZm9vI2JhciNmcmliYmxlCiNmb28jYmFyCgojIyMge2lmKGdzdWIoLz09LywiIyIpKXByaW50ICQwfToKZm9vI2JhcgoKIyMjIHtpZihnc3ViKC8rPS8sIiMiKSlwcmludCAkMH06Ci4uL2Eub3V0OiBpbGxlZ2FsIHByaW1hcnkgaW4gcmVndWxhciBleHByZXNzaW9uICs9IGF0ID0KIHNvdXJjZSBsaW5lIG51bWJlciAxCiBjb250ZXh0IGlzCgkgPj4+IHtpZihnc3ViKC8rPS8sIiMiKSA8PDwgCgojIyMge2lmKGdzdWIoLyo9LywiIyIpKXByaW50ICQwfToKLi4vYS5vdXQ6IGlsbGVnYWwgcHJpbWFyeSBpbiByZWd1bGFyIGV4cHJlc3Npb24gKj0gYXQgPQogc291cmNlIGxpbmUgbnVtYmVyIDEKIGNvbnRleHQgaXMKCSA+Pj4ge2lmKGdzdWIoLyo9LywiIyIpIDw8PCAKCiMjIyB7aWYoZ3N1YigvLT0vLCIjIikpcHJpbnQgJDB9Ogpmb28jYmFyCgojIyMge2lmKGdzdWIoLy89LywiIyIpKXByaW50ICQwfToKLi4vYS5vdXQ6IGVtcHR5IHJlZ3VsYXIgZXhwcmVzc2lvbgogc291cmNlIGxpbmUgbnVtYmVyIDEKIGNvbnRleHQgaXMKCSA+Pj4ge2lmKGdzdWIoLy89IDw8PCAvLCIjIikpcHJpbnQgJDB9CgojIyMge2lmKGdzdWIoLyU9LywiIyIpKXByaW50ICQwfToKZm9vI2JhcgoKIyMjIHtpZihnc3ViKC9ePS8sIiMiKSlwcmludCAkMH06CiNmb289YmFyCgojIyMge2lmKGdzdWIoL1wvPS8sIiMiKSlwcmludCAkMH06CmZvbyNiYXIKCiMjIyB7aWYoZ3N1YigvIT0vLCIjIikpcHJpbnQgJDB9Ogpmb28jYmFyCgojIyMge2lmKGdzdWIoLzw9LywiIyIpKXByaW50ICQwfToKZm9vI2JhcgoKIyMjIHtpZihnc3ViKC8+PS8sIiMiKSlwcmludCAkMH06CmZvbyNiYXIKCiMjIyB7aWYoc3ViKC89LywiIyIsJDApKXByaW50ICQwfToKZm9vI2Jhcgpmb28jPWJhcgpmb28rI2Jhcgpmb28tI2Jhcgpmb28qI2Jhcgpmb28vI2Jhcgpmb29eI2Jhcgpmb28lI2Jhcgpmb28hI2Jhcgpmb288I2Jhcgpmb28+I2Jhcgpmb28jYmFyPWZyaWJibGUKI2Zvbz1iYXIKCiMjIyB7aWYoc3ViKC89LywiIyIsJDApKXByaW50ICQwfToKZm9vI2Jhcgpmb28jPWJhcgpmb28rI2Jhcgpmb28tI2Jhcgpmb28qI2Jhcgpmb28vI2Jhcgpmb29eI2Jhcgpmb28lI2Jhcgpmb28hI2Jhcgpmb288I2Jhcgpmb28+I2Jhcgpmb28jYmFyPWZyaWJibGUKI2Zvbz1iYXIKCiMjIyB7aWYoc3ViKC89PS8sIiMiLCQwKSlwcmludCAkMH06CmZvbyNiYXIKCiMjIyB7aWYoc3ViKC8rPS8sIiMiLCQwKSlwcmludCAkMH06Ci4uL2Eub3V0OiBpbGxlZ2FsIHByaW1hcnkgaW4gcmVndWxhciBleHByZXNzaW9uICs9IGF0ID0KIHNvdXJjZSBsaW5lIG51bWJlciAxCiBjb250ZXh0IGlzCgkgPj4+IHtpZihzdWIoLys9LywiIyIsJDApIDw8PCAKCiMjIyB7aWYoc3ViKC8qPS8sIiMiLCQwKSlwcmludCAkMH06Ci4uL2Eub3V0OiBpbGxlZ2FsIHByaW1hcnkgaW4gcmVndWxhciBleHByZXNzaW9uICo9IGF0ID0KIHNvdXJjZSBsaW5lIG51bWJlciAxCiBjb250ZXh0IGlzCgkgPj4+IHtpZihzdWIoLyo9LywiIyIsJDApIDw8PCAKCiMjIyB7aWYoc3ViKC8tPS8sIiMiLCQwKSlwcmludCAkMH06CmZvbyNiYXIKCiMjIyB7aWYoc3ViKC8vPS8sIiMiLCQwKSlwcmludCAkMH06Ci4uL2Eub3V0OiBlbXB0eSByZWd1bGFyIGV4cHJlc3Npb24KIHNvdXJjZSBsaW5lIG51bWJlciAxCiBjb250ZXh0IGlzCgkgPj4+IHtpZihzdWIoLy89IDw8PCAvLCIjIiwkMCkpcHJpbnQgJDB9CgojIyMge2lmKHN1YigvJT0vLCIjIiwkMCkpcHJpbnQgJDB9Ogpmb28jYmFyCgojIyMge2lmKHN1YigvXj0vLCIjIiwkMCkpcHJpbnQgJDB9OgojZm9vPWJhcgoKIyMjIHtpZihzdWIoL1wvPS8sIiMiLCQwKSlwcmludCAkMH06CmZvbyNiYXIKCiMjIyB7aWYoc3ViKC8hPS8sIiMiLCQwKSlwcmludCAkMH06CmZvbyNiYXIKCiMjIyB7aWYoc3ViKC88PS8sIiMiLCQwKSlwcmludCAkMH06CmZvbyNiYXIKCiMjIyB7aWYoc3ViKC8+PS8sIiMiLCQwKSlwcmludCAkMH06CmZvbyNiYXIKCiMjIyB7aWYoc3ViKC89LywiIyIsJDApKXByaW50ICQwfToKZm9vI2Jhcgpmb28jPWJhcgpmb28rI2Jhcgpmb28tI2Jhcgpmb28qI2Jhcgpmb28vI2Jhcgpmb29eI2Jhcgpmb28lI2Jhcgpmb28hI2Jhcgpmb288I2Jhcgpmb28+I2Jhcgpmb28jYmFyPWZyaWJibGUKI2Zvbz1iYXIKCiMjIyB7aWYoZ3N1YigvPS8sIiMiLCQwKSlwcmludCAkMH06CmZvbyNiYXIKZm9vIyNiYXIKZm9vKyNiYXIKZm9vLSNiYXIKZm9vKiNiYXIKZm9vLyNiYXIKZm9vXiNiYXIKZm9vJSNiYXIKZm9vISNiYXIKZm9vPCNiYXIKZm9vPiNiYXIKZm9vI2JhciNmcmliYmxlCiNmb28jYmFyCgojIyMge2lmKGdzdWIoLz09LywiIyIsJDApKXByaW50ICQwfToKZm9vI2JhcgoKIyMjIHtpZihnc3ViKC8rPS8sIiMiLCQwKSlwcmludCAkMH06Ci4uL2Eub3V0OiBpbGxlZ2FsIHByaW1hcnkgaW4gcmVndWxhciBleHByZXNzaW9uICs9IGF0ID0KIHNvdXJjZSBsaW5lIG51bWJlciAxCiBjb250ZXh0IGlzCgkgPj4+IHtpZihnc3ViKC8rPS8sIiMiLCQw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Y2hvICciJyInQkFEBzogJXMnIiciJyBmYWlsZWQiLCBwYXQsIHBhdCkKfQonID5mb28uc2ggPDxcISEhIQppbGxlZ2FsIHByaW1hcnkgaW4gcmVndWxhciBleHByZXNzaW9uCi8oLwoKaWxsZWdhbCBicmVhaywgY29udGludWUsIG5leHQgb3IgbmV4dGZpbGUgZnJvbSBCRUdJTgpCRUdJTiB7IG5leHRmaWxlIH0KCmlsbGVnYWwgYnJlYWssIGNvbnRpbnVlLCBuZXh0IG9yIG5leHRmaWxlIGZyb20gRU5ECkVORCB7IG5leHRmaWxlIH0KCm5leHRmaWxlIGlzIGlsbGVnYWwgaW5zaWRlIGEgZnVuY3Rpb24KZnVuY3Rpb24gZm9vKCkgeyBuZXh0ZmlsZSB9CgpkdXBsaWNhdGUgYXJndW1lbnQKZnVuY3Rpb24gZihpLGosaSkgeyByZXR1cm4gaSB9Cgpub250ZXJtaW5hdGVkIGNoYXJhY3RlciBjbGFzcwovW1svCgpub250ZXJtaW5hdGVkIGNoYXJhY3RlciBjbGFzcwovW10vCgpub250ZXJtaW5hdGVkIGNoYXJhY3RlciBjbGFzcwovW1wKCm5vbnRlcm1pbmF0ZWQgY2hhcmFjdGVyIGNsYXNzCkJFR0lOIHsgcyA9ICJbeCI7IGlmICgxIH4gcykgcHJpbnQgImZvbyJ9CgpzeW50YXggZXJyb3IgaW4gcmVndWxhciBleHByZXNzaW9uCkJFR0lOIHsgaWYgKCJ4IiB+IC8kXi8pIHByaW50ICJ1Z2giIH0KCnN5bnRheCBlcnJvciBpbiByZWd1bGFyIGV4cHJlc3Npb24KLygoLikvCgpkaXZpc2lvbiBieSB6ZXJvCkJFR0lOIHsgcHJpbnQgMS8wIH0KCmRpdmlzaW9uIGJ5IHplcm8gaW4gLz0KQkVHSU4geyB4ID0gMTsgcHJpbnQgeCAvPSAwIH0KCmRpdmlzaW9uIGJ5IHplcm8gaW4gJT0KQkVHSU4geyB4ID0gMTsgcHJpbnQgeCAlPSAwIH0KCmRpdmlzaW9uIGJ5IHplcm8gaW4gbW9kCkJFR0lOIHsgcHJpbnQgMSUwIH0KCmNhbi50IHJlYWQgdmFsdWUuKiBhcnJheSBuYW1lLgpCRUdJTiB7IHhbMV0gPSAwOyBzcGxpdCgiYSBiIGMiLCB5LCB4KSB9CgpjYW4udCByZWFkIHZhbHVlLiogZnVuY3Rpb24KZnVuY3Rpb24gZigpe307IHtzcGxpdCgkMCwgeCwgZil9CgpjYW4udCBhc3NpZ24uKiBhIGZ1bmN0aW9uCmZ1bmN0aW9uIGYoKXt9OyB7ZiA9IHNwbGl0KCQwLCB4KX0KCmNhbi50IGFzc2lnbiB0byB4OyBpdC5zIGFuIGFycmF5IG5hbWUuCnt4ID0gc3BsaXQoJDAsIHgpfQoKaXMgYSBmdW5jdGlvbiwgbm90IGFuIGFycmF5CmZ1bmN0aW9uIGYoKXt9OyB7c3BsaXQoJDAsIGYpfQoKZnVuY3Rpb24gZiBjYWxsZWQgd2l0aCAxIGFyZ3MsIHVzZXMgb25seSAwCkJFR0lOIHsgZihmKSB9CmZ1bmN0aW9uIGYoKSB7IHByaW50ICJ4IiB9CgpjYW4udCB1c2UgZnVuY3Rpb24gZiBhcyBhcmd1bWVudCBpbiBmCkJFR0lOIHsgZihmKSB9CmZ1bmN0aW9uIGYoKSB7IHByaW50ICJ4IiB9Cgp4IGlzIGFuIGFycmF5LCBub3QgYSBmdW5jdGlvbgp7IHNwbGl0KCQwLCB4KSB9OyBmdW5jdGlvbiB4KCkge30KCmlsbGVnYWwgbmVzdGVkIGZ1bmN0aW9uCmZ1bmN0aW9uIHgoKSB7IGZ1bmN0aW9uIGcoKSB7fSB9CgpyZXR1cm4gbm90IGluIGZ1bmN0aW9uCnsgcmV0dXJuIH0KCmJyZWFrIGlsbGVnYWwgb3V0c2lkZQp7IGJyZWFrIH0KCmNvbnRpbnVlIGlsbGVnYWwgb3V0c2lkZQp7IGNvbnRpbnVlIH0KCm5vbi10ZXJtaW5hdGVkIHN0cmluZwp7IHByaW50ICJhYmMKfQoKaWxsZWdhbCBmaWVsZCAkKGZvbykKQkVHSU4geyBwcmludCAkImZvbyIgfQoKbmV4dCBpcyBpbGxlZ2FsIGluc2lkZSBhIGZ1bmN0aW9uCkJFR0lOIHsgZigpIH0KZnVuY3Rpb24gZigpIHsgbmV4dCB9Cgpub3QgZW5vdWdoIGFyZ3MgaW4gcHJpbnRmKCVzKQpCRUdJTiB7IHByaW50ZigiJXMiKSB9Cgp3ZWlyZCBwcmludGYgY29udmVyc2lvbgpCRUdJTiB7IHByaW50ZigiJXoiLCAiZm9vIil9CgpmdW5jdGlvbiBmIGhhcyAuKiBhcmd1bWVudHMsIGxpbWl0IC4qCmZ1bmN0aW9uIGYoYTEsYTIsYTMsYTQsYTUsYTYsYTcsYTgsYTksYTEwLGIxLGIyLGIzLGI0LGI1LGI2LGI3LGI4LGI5LGIxMCwKCWMxLGMyLGMzLGM0LGM1LGM2LGM3LGM4LGM5LGMxMCxkMSxkMixkMyxkNCxkNSxkNixkNyxkOCxkOSxkMTAsCgllMSxlMixlMyxlNCxlNSxlNixlNyxlOCxlOSxlMTAsZjEsZjIsZjMsZjQsZjUsZjYsZjcsZjgsZjksZjEwKSB7fQpCRUdJTiB7IGYoMTIzKSB9CgpiYWlsaW5nIG91dApdKX0KCmJhaWxpbmcgb3V0CnsgcHJpbnQgfX0KCmJhaWxpbmcgb3V0CnsgcHJpbnQgfX19CgpiYWlsaW5nIG91dApdCgpiYWlsaW5nIG91dApbCgpiYWlsaW5nIG91dAphICYgYgoKZXh0cmEgKQp7IHggPSAxKSB9CgppbGxlZ2FsIHN0YXRlbWVudAp7IHByaW50ICkpfQoKaWxsZWdhbCBzdGF0ZW1lbnQKe3sgcHJpbnQgfQoKaWxsZWdhbCBzdGF0ZW1lbnQKe3t7IHByaW50IH0KCmlsbGVnYWwgLipuZXh0LiogZnJvbSBCRUdJTgpCRUdJTiB7IG5leHQgfQoKaWxsZWdhbCAuKm5leHQuKiBmcm9tIEVORApFTkQgewluZXh0OyBwcmludCBOUiB9CgpjYW4udCBvcGVuIGZpbGUgL2V0Yy9wYXNzd2QKQkVHSU4geyBwcmludCAiYWJjIiA+Ii9ldGMvcGFzc3dkIiB9Cgp5b3UgY2FuLnQgZGVmaW5lIGZ1bmN0aW9uIGYgbW9yZSB0aGFuIG9uY2UKZnVuY3Rpb24gZigpIHsgcHJpbnQgMSB9CmZ1bmN0aW9uIGYoKSB7IHByaW50IDIgfQoKZnVuY3Rpb24gbXAgY2FsbGVkIHdpdGggMSBhcmdzLCB1c2VzIG9ubHkgMApmdW5jdGlvbiBtcCgpeyBjbnQrKzt9CkJFR0lOIHsJbXAoeHgpIH0KCmluZGV4Lipkb2Vzbi50IHBlcm1pdCByZWd1bGFyIGV4cHJlc3Npb25zCkJFR0lOIHsgaW5kZXgoImFiYyIsIC9hLykgfQoKbG9nIGFyZ3VtZW50IG91dCBvZiBkb21haW4KQkVHSU4geyBwcmludCBsb2coLTEpIH0KCmV4cCByZXN1bHQgb3V0IG9mIHJhbmdlCkJFR0lOIHtwcmludCBleHAoMTAwMCl9CgpudWxsIGZpbGUgbmFtZSBpbiBwcmludCBvciBnZXRsaW5lCkJFR0lOIHsgcHJpbnQgPmZvbyB9CgpmdW5jdGlvbiBoYXMgdG9vIG1hbnkgYXJndW1lbnRzCkJFR0lOIHsgbGVuZ3RoKCJhYmMiLCAiZGVmIikgfQoKY2FsbGluZyB1bmRlZmluZWQgZnVuY3Rpb24gZm9vCkJFR0lOIHsgZm9vKCkgfQoKdGhpcyBzaG91bGQgcHJpbnQgYSBCQUQgbWVzc2FnZQpCRUdJTiB7IHByaW50IH0KISEhCgoKZWNobyAnCXJ1bm5pbmcgdGVzdHMgaW4gZm9vLnNoJwpzaCBmb28uc2gKCnRlc3QgLXIgY29yZSAmJiBlY2hvIAdCQUQ6IHNvbWVvbmUgZHJvcHBlZCBjb3JlIDE+JjIKCmVjaG8geHh4ID5mb28wCiRhd2sgJ3twcmludCB4fScgeD0nYQpiJyBmb28wID5mb28xIDI+Zm9vMgpncmVwICduZXdsaW5lIGluIHN0cmluZycgZm9vMiA+L2Rldi9udWxsIHx8IGVjaG8gJ0JBRAc6IFQuZXJybXNnIG5ld2xpbmUgaW4gc3RyaW5nJwoKJGF3ayAtc2FmZSAnQkVHSU57ImRhdGUiIHwgZ2V0bGluZX0nID5mb28gMj5mb28yCmdyZXAgJ2NtZCB8IGdldGxpbmUgaXMgdW5zYWZlJyBmb28yID4vZGV2L251bGwgfHwgZWNobyAnQkFEBzogVC5lcnJtc2cgY21kfGdldGxpbmUgdW5zYWZlJwoKJGF3ayAtc2FmZSAnQkVHSU57cHJpbnQgPiJmb28ifScgPmZvbyAyPmZvbzIKZ3JlcCAncHJpbnQgPiBpcyB1bnNhZmUnIGZvbzIgPi9kZXYvbnVsbCB8fCBlY2hvICdCQUQHOiBULmVycm1zZyBwcmludCA+IHVuc2FmZScKCiRhd2sgLXNhZmUgJ0JFR0lOe3ByaW50ID4+ICJmb28ifScgPmZvbyAy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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsgcHJpbnQgTlIsICQwIH0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdGVzdGRpci9wLjI2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NjQAMDAwMTc1MAAwMDAxNzUwADAwMDAwMDAwMTYwADEzMzM3MTc0NzAzADAxMjQ3MwAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvLiQvCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRlc3RkaXIvcC4xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjY0ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDAwMDAxMgAxMzMzNzE3NDcwMwAwMTI0MDAAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeyBwcmludCB9CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0ZXN0ZGlyL3QuY29tbWVudAAAAAAAAAAAAAAA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LWYgY29yZQoKIyBzdGRpbiBvbmx5LCBubyBjbWRsaW5lIGFzZ24KZWNobyAnaGVsbG8KZ29vZGJ5ZScgfCAkYXdrICcKQkVHSU4geyB4PTA7IHByaW50IHg7IGdldGxpbmU7IHByaW50IHgsICQwIH0KJyA+Zm9vMQplY2hvICcwCjAgaGVsbG8nID5mb28yCmRpZmYgZm9vMSBmb28yIHx8IGVjaG8gJ0JBRDogVC5jbHYgKHN0ZGluIG9ubHkpJwoKIyBjbWRsaW5lIGFzZ24gdGhlbiBzdGRpbgplY2hvICdoZWxsbwpnb29kYnllJyB8ICRhd2sgJwpCRUdJTiB7IHg9MDsgcHJpbnQgeDsgZ2V0bGluZTsgcHJpbnQgeCwgJDAgfQonIHg9MSA+Zm9vMQplY2hvICcwCjEgaGVsbG8nID5mb28yCmRpZmYgZm9vMSBmb28yIHx8IGVjaG8gJ0JBRDogVC5jbHYgKHg9MSBvbmx5KScKCiMgc2V2ZXJhbCBjbWRsaW5lIGFzZ24sIHRoZW4gc3RkaW4KZWNobyAnaGVsbG8KZ29vZGJ5ZScgfCAkYXdrICcKQkVHSU4geyB4PTA7IHByaW50IHg7IGdldGxpbmU7IHByaW50IHgsICQwIH0KJyB4PTEgeD0yIHg9MyA+Zm9vMQplY2hvICcwCjMgaGVsbG8nID5mb28yCmRpZmYgZm9vMSBmb28yIHx8IGVjaG8gJ0JBRDogVC5jbHYgKHg9MyBvbmx5KScKCiMgc2V2ZXJhbCBjbWRsaW5lIGFzZ24sIHRoZW4gZmlsZQplY2hvICdoZWxsbwpnb29kYnllJyA+Zm9vCiRhd2sgJwpCRUdJTiB7IHg9MDsgcHJpbnQgeDsgZ2V0bGluZTsgcHJpbnQgeCwgJDAgfQonIHg9MSB4PTIgeD0zIGZvbyA+Zm9vMQplY2hvICcwCjMgaGVsbG8nID5mb28yCmRpZmYgZm9vMSBmb28yIHx8IGVjaG8gJ0JBRDogVC5jbHYgKHg9MyBvbmx5KScKCiMgY21kbGluZSBhc2duIHRoZW4gZmlsZQplY2hvIDQgPmZvbzEKJGF3ayAnQkVHSU4geyBnZXRsaW5lOyBwcmludCB4fScgeD00IC9kZXYvbnVsbCA+Zm9vMgpkaWZmIGZvbzEgZm9vMiB8fCBlY2hvICdCQUQ6IFQuY2x2ICh4PTQgL2Rldi9udWxsKScKCiNjbWRsaW5lIGFzZ24gdGhlbiBmaWxlIGJ1dCBubyByZWFkIG9mIGl0CmVjaG8gMCA+Zm9vMQokYXdrICdCRUdJTiB7IHg9MDsgZ2V0bGluZSA8Ii9kZXYvbnVsbCI7IHByaW50IHh9JyB4PTUgL2Rldi9udWxsID5mb28yCmRpZmYgZm9vMSBmb28yIHx8IGVjaG8gJ0JBRDogVC5jbHYgKHg9NSAvZGV2L251bGwpJwoKI2NtZGxpbmUgYXNnbiB0aGVuIGZpbGUgdGhlbiByZWFkCmVjaG8gJ3h4eAp5eXkKenp6JyA+Zm9vCmVjaG8gJzYKZW5kJyA+Zm9vMQokYXdrICdCRUdJTiB7IHg9MDsgZ2V0bGluZTsgcHJpbnQgeH0KICAgICAgRU5EIHsgcHJpbnQgeCB9JyB4PTYgZm9vIHg9ZW5kID5mb28yCmRpZmYgZm9vMSBmb28yIHx8IGVjaG8gJ0JBRDogVC5jbHYgKHg9NiAvZGV2L251bGwpJwoKI2NtZGxpbmUgYXNnbiB0aGVuIGZpbGUgdGhlbiByZWFkCmVjaG8gJzAKZW5kJyA+Zm9vMQokYXdrICdCRUdJTiB7IHg9MDsgZ2V0bGluZSA8Ii9kZXYvbnVsbCI7IHByaW50IHh9CiAgICAgIEVORCB7IHByaW50IHggfScgeD03IC9kZXYvbnVsbCB4PWVuZCA+Zm9vMgpkaWZmIGZvbzEgZm9vMiB8fCBlY2hvICdCQUQ6IFQuY2x2ICh4PTcgL2Rldi9udWxsKScKCiNjbWRsaW5lIGFzZ24gdGhlbiBmaWxlIHRoZW4gcmVhZDsgXyBpbiBjb21tYW5kbmFtZQplY2hvICcwCmVuZCcgPmZvbzEKJGF3ayAnQkVHSU4geyBfPTA7IGdldGxpbmUgPCIvZGV2L251bGwiOyBwcmludCBffQogICAgICBFTkQgeyBwcmludCBfIH0nIF89N0EgL2Rldi9udWxsIF89ZW5kID5mb28yCmRpZmYgZm9vMSBmb28yIHx8IGVjaG8gJ0JBRDogVC5jbHYgKF89N0EgL2Rldi9udWxsKScKCiMgaWxsZWdhbCB2YXJuYW1lIGluIGNvbW1hbmRuYW1lCiRhd2sgJ3sgcHJpbnQgfScgOTlfPWZvbyAvZGV2L251bGwgPmZvbyAyPmZvbzIKZ3JlcCAiY2FuJ3Qgb3Blbi4qZm9vIiBmb28yID4vZGV2L251bGwgMj4mMSB8fCBlY2hvICdCQUQ6IFQuY2x2ICg3QjogaWxsZWdhbCB2YXJuYW1lKScKCiMgdGhlc2UgdGVzdCB0aGUgbmV3IC12IG9wdGlvbjogIGF3ayAuLi4gLXYgYT0xIC12IGI9MiAncHJvZycgZG9lcyBiZWZvcmUgQkVHSU4KCmVjaG8gMTIzID5mb28xCiRhd2sgLXYgeD0xMjMgJ0JFR0lOIHsgcHJpbnQgeCB9JyA+Zm9vMgpkaWZmIGZvbzEgZm9vMiB8fCBlY2hvICdCQUQ6IFQuY2x2ICh4PTExKScKCmVjaG8gMTIzID5mb28xCiRhd2sgLXZ4PTEyMyAnQkVHSU4geyBwcmludCB4IH0nID5mb28yCmRpZmYgZm9vMSBmb28yIHx8IGVjaG8gJ0JBRDogVC5jbHYgKHg9MTFhKScKCmVjaG8gMTIzIGFiYyAxMC45OSA+Zm9vMQokYXdrIC12IHg9MTIzIC12IHk9YWJjIC12IHoxPTEwLjk5ICdCRUdJTiB7IHByaW50IHgsIHksIHoxIH0nID5mb28yCmRpZmYgZm9vMSBmb28yIHx8IGVjaG8gJ0JBRDogVC5jbHYgKHg9MTIpJwoKZWNobyAxMjMgYWJjIDEwLjk5ID5mb28xCiRhd2sgLXZ4PTEyMyAtdnk9YWJjIC12ejE9MTAuOTkgJ0JFR0lOIHsgcHJpbnQgeCwgeSwgejEgfScgPmZvbzIKZGlmZiBmb28xIGZvbzIgfHwgZWNobyAnQkFEOiBULmNsdiAoeD0xMmEpJwoKZWNobyAxMjMgYWJjIDEwLjk5ID5mb28xCiRhd2sgLXYgeD0xMjMgLXYgeT1hYmMgLXYgejE9MTAuOTkgLS0gJ0JFR0lOIHsgcHJpbnQgeCwgeSwgejEgfScgPmZvbzIKZGlmZiBmb28xIGZvbzIgfHwgZWNobyAnQkFEOiBULmNsdiAoeD0xMmEpJwoKZWNobyAnQkVHSU4geyBwcmludCB4LCB5LCB6MSB9JyA+Zm9vMAplY2hvIDEyMyBhYmMgMTAuOTkgPmZvbzEKJGF3ayAtdiB4PTEyMyAtdiB5PWFiYyAtZiBmb28wIC12IHoxPTEwLjk5ID5mb28yCmRpZmYgZm9vMSBmb28yIHx8IGVjaG8gJ0JBRDogVC5jbHYgKHg9MTMpJwoKZWNobyAnQkVHSU4geyBwcmludCB4LCB5LCB6MSB9JyA+Zm9vMAplY2hvIDEyMyBhYmMgMTAuOTkgPmZvbzEKJGF3ayAtdng9MTIzIC12eT1hYmMgLWYgZm9vMCAtdnoxPTEwLjk5ID5mb28yCmRpZmYgZm9vMSBmb28yIHx8IGVjaG8gJ0JBRDogVC5jbHYgKHg9MTNhKScKCmVjaG8gJ0JFR0lOIHsgcHJpbnQgeCwgeSwgejEgfScgPmZvbzAKZWNobyAxMjMgYWJjIDEwLjk5ID5mb28xCiRhd2sgLWYgZm9vMCAtdiB4PTEyMyAtdiB5PWFiYyAtdiB6MT0xMC45OSA+Zm9vMgpkaWZmIGZvbzEgZm9vMiB8fCBlY2hvICdCQUQ6IFQuY2x2ICh4PTE0KScKCmVjaG8gJ0JFR0lOIHsgcHJpbnQgeCwgeSwgejEgfScgPmZvbzAKZWNobyAxMjMgYWJjIDEwLjk5ID5mb28xCiRhd2sgLWYgZm9vMCAtdng9MTIzIC12eT1hYmMgLXZ6MT0xMC45OSA+Zm9vMgpkaWZmIGZvbzEgZm9vMiB8fCBlY2hvICdCQUQ6IFQuY2x2ICh4PTE0YSknCgplY2hvICdCRUdJTiB7IHByaW50IHgsIHksIHoxIH0KRU5EIHsgcHJpbnQgeCB9JyA+Zm9vMAplY2hvICcxMjMgYWJjIDEwLjk5CjQ1NjcnID5mb28xCiRhd2sgLWYgZm9vMCAtdiB4PTEyMyAtdiB5PWFiYyAtdiB6MT0xMC45OSAvZGV2L251bGwgeD00NTY3IC9kZXYvbnVsbCA+Zm9vMgpkaWZmIGZvbzEgZm9vMiB8fCBlY2hvICdCQUQ6IFQuY2x2ICh4PTE1KScKCmVjaG8gJ0JFR0lOIHsgcHJpbnQgeCwgeSwgejEgfQpFTkQgeyBwcmludCB4IH0nID5mb28wCmVjaG8gJzEyMyBhYmMgMTAuOTkKNDU2NycgPmZvbzEKJGF3ayAtZiBmb28wIC12eD0xMjMgLXZ5PWFiYyAtdnoxPTEwLjk5IC9kZXYvbnVsbCB4PTQ1NjcgL2Rldi9udWxsID5mb28yCmRpZmYgZm9vMSBmb28yIHx8IGVjaG8gJ0JBRDogVC5jbHYgKHg9MTVhKScKCmVjaG8gJ0JFR0lOIHsgcHJpbnQgeCwgeSwgejEgfQpOUj09MSB7IHByaW50IHggfScgPmZvbzAKZWNobyAnMTIzIGFiYyAxMC45OQo0NTY3JyA+Zm9vMQokYXdrIC12IHg9MTIzIC12IHk9YWJjIC12IHoxPTEwLjk5IC1mIGZvbzAgeD00NTY3IC9ldGMvcGFzc3dkID5mb28yCmRpZmYgZm9vMSBmb28yIHx8IGVjaG8gJ0JBRDogVC5jbHYgKHg9MTYpJwoKZWNobyAnQkVHSU4geyBwcmludCB4LCB5LCB6MSB9Ck5SPT0xIHsgcHJpbnQgeCB9JyA+Zm9vMAplY2hvICcxMjMgYWJjIDEwLjk5CjQ1NjcnID5mb28xCiRhd2sgLXZ4PTEyMyAtdnk9YWJjIC12ejE9MTAuOTkgLWYgZm9vMCB4PTQ1NjcgL2V0Yy9wYXNzd2QgPmZvbzIKZGlmZiBmb28xIGZvbzIgfHwgZWNobyAnQkFEOiBULmNsdiAoeD0xNmEpJwoKCgojIHNwZWNpYWwgY2hhcnMgaW4gY29tbWFuZGxpbmUgYXNzaWduZWQgdmFsdWU7CiMgaGF2ZSB0byB1c2UgbG9jYWwgZWNobyB0byBhdm9pZCBxdW90aW5nIHByb2JsZW1zLgoKLi9lY2hvICdhXFxiXHonID5mb28xCi4vZWNobyAnaGVsbG8nIHwgJGF3ayAne3ByaW50IHh9JyB4PSdcMTQxXFxcXFwxNDJcXHonID5mb28yCmRpZmYgZm9vMSBmb28yIHx8IGVjaG8gJ0JBRDogVC5jbHYgKHg9MTcpJwoKLi9lY2hvICJhCnoiID5mb28xCi4vZWNobyAnaGVsbG8nIHwgJGF3ayAne3ByaW50IHh9JyB4PSdhXG56JyA+Zm9vMgpkaWZmIGZvbzEgZm9vMiB8fCBlY2hvICdCQUQ6IFQuY2x2ICh4PTE4KScKCiMgYSBiaXQgY2lyY3VsYXIgaGVyZS4uLgokYXdrICdCRUdJTiB7IHByaW50ZigiYSVjJWMlY3pcbiIsICJcYiIsICJcciIsICJcZiIpIH0nID5mb28xIAouL2VjaG8gJ2hlbGxvJyB8ICRhd2sgJ3twcmludCB4fScg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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAxNzUwADAwMDE3NTAAMDAwMDAwMDAwNDQAMDYwMTM3NTA2MjAAMDEzMjUwACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGEgYiBjIGEgYiBjIGEgYiBjCmEgYiBjIGEgYiBjIGEgYiBjCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYmVlYmUvcHJkdXB2YWwuYXdrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NDQAMDAwMTc1MAAwMDAxNzUwADAwMDAwMDAwMDM1ADA2MzQ1MzE0NzcyADAxNDAxMgAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7IHByaW50IE5GLCAkTkYsICJhYmMiICRORiB9CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGJlZWJlL2luZnRlc3QuYXdrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDAwMDE0NQAwNTQ2MTEwMDUzNwAwMTM2MjEAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQkVHSU4gewogIHggPSAxMDAKICBkbyB7IHkgPSB4IDsgeCAqPSAxMDAwOyBwcmludCB4LHkgfSB3aGlsZSAoIHkgIT0geCApCiAgcHJpbnQgImxvb3AgdGVybWluYXRlZCIKfQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABiZWViZS9pbnRlc3QuYXdrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAxNzUwADAwMDE3NTAAMDAwMDAwMDAxMzcAMDYzNDUzMTQ3NjMAMDEzNDY2ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEJFR0lOIHsKCWJvb2wgPSAoKGIgPSAxKSBpbiBjKTsKCXByaW50IGJvb2wsIGIJIyBnYXdrLTMuMC4xIHByaW50cyAiMCAiOyBzaG91bGQgcHJpbnQgIjAgMSIKfSAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYmVlYmUvcGlwZWlvMS5hd2sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NDQAMDAwMTc1MAAwMDAxNzUwADAwMDAwMDAyMzM0ADA2MzQ1MzE0NzcwADAxMzUyNQAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjIEZyb20gZHJhZ29uIWdhbWdlZS5hY2FkLmVtaWNoLmVkdSFkaHcgVHVlIE1hciAxOCAwMToxMjoxNSAxOTk3CiMgUmV0dXJuLVBhdGg6IDxkcmFnb24hZ2FtZ2VlLmFjYWQuZW1pY2guZWR1IWRodz4KIyBNZXNzYWdlLUlEOiA8bTB3Nm93Vy0wMDBJRFNDQGdhbWdlZS5hY2FkLmVtaWNoLmVkdT4KIyBEYXRlOiBNb24sIDE3IE1hciA5NyAyMDo0OCBDU1QKIyBGcm9tOiBkaHdAZ2FtZ2VlLmFjYWQuZW1pY2guZWR1IChEYXZpZCBILiBXZXN0KQojIFRvOiBhcm5vbGRAZ251LmFpLm1pdC5lZHUKIyBTdWJqZWN0OiBnYXdrIDMuMC4yIGJ1ZyByZXBvcnQgKGNjIG9mIG1zZyB0byBidWctZ251LXV0aWxzKQojIFN0YXR1czogT1IKIyBDb250ZW50LUxlbmd0aDogODY5CiMgWC1MaW5lczogMjAKIyBYLURpc3BsYXktUG9zaXRpb246IDIKIyAKIyBOYXR1cmUgb2YgYnVnOiBvcGVyYXRpb24gb24gYSBwaXBlIHNpZGUtZWZmZWN0cyBhIGRpZmZlcmVudCBwaXBlLgojIE9ic2VydmVkLVdpdGg6IGdhd2sgMy4wLjIsIExpbnV4IGtlcm5lbCAyLjAuMjgKIyBSZXByb2R1Y2UtQnk6IHJ1bm5pbmcgdGhlIGZvbGxvd2luZyBzY3JpcHQsIHdpdGhvdXQgYW5kIHdpdGggdGhlICJjbG9zZSIKIyAgICAgICAgICAgICAgIHN0YXRlbWVudCB1bmNvbW1lbnRlZC4KIyAtLS0tLS0tLS0tLS0tLS0tLWN1dCBoZXJlLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQkVHSU4ge0ZJTEUxPSJ0ZXN0MSI7IEZJTEUyPSJ0ZXN0MiI7IAogICAgICAgcHJpbnQgIjFcbiIgPiBGSUxFMTsgY2xvc2UoRklMRTEpOwogICAgICAgcHJpbnQgIjJcbiIgPiBGSUxF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dGV4dApmaWxlIC5cXi5cXi4KLlNIIERFU0NSSVBUSU9OCi5JIEdhd2sKaXMgdGhlIEdOVSBQcm9qZWN0J3MgaW1wbGVtZW50YXRpb24gb2YgdGhlIEFXSyBwcm9ncmFtbWluZyBsYW5ndWFnZS4KSXQgY29uZm9ybXMgdG8gdGhlIGRlZmluaXRpb24gb2YgdGhlIGxhbmd1YWdlIGluCnRoZSBcKihQWCAxMDAzLjIgQ29tbWFuZCBMYW5ndWFnZSBBbmQgVXRpbGl0aWVzIFN0YW5kYXJkCihkcmFmdCAxMSkuClRoaXMgdmVyc2lvbiBpbiB0dXJuIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbiBpbgouSVIgIlRoZSBBV0sgUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UiICwKYnkgQWhvLCBLZXJuaWdoYW4sIGFuZCBXZWluYmVyZ2VyLAp3aXRoIHRoZSBhZGRpdGlvbmFsIGZlYXR1cmVzIGRlZmluZWQgaW4gdGhlIFN5c3RlbSBWIFJlbGVhc2UgNCB2ZXJzaW9uCm9mIFwqKFVYCi5JUiBhd2sgLgouSSBHYXdrCmFsc28gcHJvdmlkZXMgc29tZSBHTlUtc3BlY2lmaWMgZXh0ZW5zaW9ucy4KLlBQClRoZSBjb21tYW5kIGxpbmUgY29uc2lzdHMgb2Ygb3B0aW9ucyB0bwouSSBnYXdrCml0c2VsZiwgdGhlIEFXSyBwcm9ncmFtIHRleHQgKGlmIG5vdCBzdXBwbGllZCB2aWEgdGhlCi5CIFwtZgpvcHRpb24pLCBhbmQgdmFsdWVzIHRvIGJlIG1hZGUKYXZhaWxhYmxlIGluIHRoZQouQiBBUkdDCmFuZAouQiBBUkdWCnByZS1kZWZpbmVkIEFXSyB2YXJpYWJsZXMuCi5TSCBPUFRJT05TCi5QUAouSSBHYXdrCmFjY2VwdHMgdGhlIGZvbGxvd2luZyBvcHRpb25zLCB3aGljaCBzaG91bGQgYmUgYXZhaWxhYmxlIG9uIGFueSBpbXBsZW1lbnRhdGlvbgpvZiB0aGUgQVdLIGxhbmd1YWdlLgouVFAKLkJJIFwtRiBmcwpVc2UKLkkgZnMKZm9yIHRoZSBpbnB1dCBmaWVsZCBzZXBhcmF0b3IgKHRoZSB2YWx1ZSBvZiB0aGUKLkIgRlMKcHJlZGVmaW5lZAp2YXJpYWJsZSkuCi5UUApcZkJcLXZcZkkgdmFyXGZSXF49XF5cZkl2YWxcZlIKQXNzaWduIHRoZSB2YWx1ZQouSVIgdmFsICwKdG8gdGhlIHZhcmlhYmxlCi5JUiB2YXIgLApiZWZvcmUgZXhlY3V0aW9uIG9mIHRoZSBwcm9ncmFtIGJlZ2lucy4KU3VjaCB2YXJpYWJsZSB2YWx1ZXMgYXJlIGF2YWlsYWJsZSB0byB0aGUKLkIgQkVHSU4KYmxvY2sgb2YgYW4gQVdLIHByb2dyYW0uCi5UUAouQkkgXC1mICIgcHJvZ3JhbS1maWxlIgpSZWFkIHRoZSBBV0sgcHJvZ3JhbSBzb3VyY2UgZnJvbSB0aGUgZmlsZQouSVIgcHJvZ3JhbS1maWxlICwKaW5zdGVhZCBvZiBmcm9tIHRoZSBmaXJzdCBjb21tYW5kIGxpbmUgYXJndW1lbnQuCk11bHRpcGxlCi5CIFwtZgpvcHRpb25zIG1heSBiZSB1c2VkLgouVFAKLkIgXC1cXlwtClNpZ25hbCB0aGUgZW5kIG9mIG9wdGlvbnMuIFRoaXMgaXMgdXNlZnVsIHRvIGFsbG93IGZ1cnRoZXIgYXJndW1lbnRzIHRvIHRoZQpBV0sgcHJvZ3JhbSBpdHNlbGYgdG8gc3RhcnQgd2l0aCBhIGBgXC0nJy4KVGhpcyBpcyBtYWlubHkgZm9yIGNvbnNpc3RlbmN5IHdpdGggdGhlIGFyZ3VtZW50IHBhcnNpbmcgY29udmVudGlvbiB1c2VkCmJ5IG1vc3Qgb3RoZXIgXCooUFggcHJvZ3JhbXMuCi5QUApGb2xsb3dpbmcgdGhlIFwqKFBYIHN0YW5kYXJkLAouSVIgZ2F3ayAtc3BlY2lmaWMKb3B0aW9ucyBhcmUgc3VwcGxpZWQgdmlhIGFyZ3VtZW50cyB0byB0aGUKLkIgXC1XCm9wdGlvbi4gIE11bHRpcGxlCi5CIFwtVwpvcHRpb25zIG1heSBiZSBzdXBwbGllZCwgb3IgbXVsdGlwbGUgYXJndW1lbnRzIG1heSBiZSBzdXBwbGllZCB0b2dldGhlcgppZiB0aGV5IGFyZSBzZXBhcmF0ZWQgYnkgY29tbWFzLCBvciBlbmNsb3NlZCBpbiBxdW90ZXMgYW5kIHNlcGFyYXRlZApieSB3aGl0ZSBzcGFjZS4KQ2FzZSBpcyBpZ25vcmVkIGluIGFyZ3VtZW50cyB0byB0aGUKLkIgXC1XCm9wdGlvbi4KLlBQClRoZQouQiBcLVcKb3B0aW9uIGFjY2VwdHMgdGhlIGZvbGxvd2luZyBhcmd1bWVudHM6Ci5UUCBcdydcZkJjb3B5cmlnaHRcZlIndSsxbgouQiBjb21wYXQKUnVuIGluCi5JIGNvbXBhdGliaWxpdHkKbW9kZS4gIEluIGNvbXBhdGliaWxpdHkgbW9kZSwKLkkgZ2F3awpiZWhhdmVzIGlkZW50aWNhbGx5IHRvIFwqKFVYCi5JUiBhd2sgOwpub25lIG9mIHRoZSBHTlUtc3BlY2lmaWMgZXh0ZW5zaW9ucyBhcmUgcmVjb2duaXplZC4KLlRQCi5QRCAwCi5CIGNvcHlsZWZ0Ci5UUAouUEQKLkIgY29weXJpZ2h0ClByaW50IHRoZSBzaG9ydCB2ZXJzaW9uIG9mIHRoZSBHTlUgY29weXJpZ2h0IGluZm9ybWF0aW9uIG1lc3NhZ2Ugb24KdGhlIGVycm9yIG91dHB1dC4KLlRQCi5CIGxpbnQKUHJvdmlkZSB3YXJuaW5ncyBhYm91dCBjb25zdHJ1Y3RzIHRoYXQgYXJlCmR1YmlvdXMgb3Igbm9uLXBvcnRhYmxlIHRvIG90aGVyIEFXSyBpbXBsZW1lbnRhdGlvbnMuCi5UUAouQiBwb3NpeApUaGlzIHR1cm5zIG9uCi5JIGNvbXBhdGliaWxpdHkgCm1vZGUsIHdpdGggdGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIHJlc3RyaWN0aW9uczoKLlJTCi5UUCBcdydcKGJ1J3UrMW4KXChidQouQiBcZXgKZXNjYXBlIHNlcXVlbmNlcyBhcmUgbm90IHJlY29nbml6ZWQuCi5UUApcKGJ1ClRoZSBzeW5vbnltCi5CIGZ1bmMKZm9yIHRoZSBrZXl3b3JkCi5CIGZ1bmN0aW9uCmlzIG5vdCByZWNvZ25pemVkLgouVFAKXChidQpUaGUgb3BlcmF0b3JzCi5CICoqCmFuZAouQiAqKj0KY2Fubm90IGJlIHVzZWQgaW4gcGxhY2Ugb2YKLkIgXgphbmQKLkJSIF49IC4KLlJFCi5UUAouQiB2ZXJzaW9uClByaW50IHZlcnNpb24gaW5mb3JtYXRpb24gZm9yIHRoaXMgcGFydGljdWxhciBjb3B5IG9mCi5JIGdhd2sKb24gdGhlIGVycm9yIG91dHB1dC4KVGhpcyBpcyB1c2VmdWwgbWFpbmx5IGZvciBrbm93aW5nIGlmIHRoZSBjdXJyZW50IGNvcHkgb2YKLkkgZ2F3awpvbiB5b3VyIHN5c3RlbQppcyB1cCB0byBkYXRlIHdpdGggcmVzcGVjdCB0byB3aGF0ZXZlciB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCmlzIGRpc3RyaWJ1dGluZy4KLlBQCkFueSBvdGhlciBvcHRpb25zIGFyZSBmbGFnZ2VkIGFzIGlsbGVnYWwsIGJ1dCBhcmUgb3RoZXJ3aXNlIGlnbm9yZWQuCi5TSCBBV0sgUFJPR1JBTSBFWEVDVVRJT04KLlBQCkFuIEFXSyBwcm9ncmFtIGNvbnNpc3RzIG9mIGEgc2VxdWVuY2Ugb2YgcGF0dGVybi1hY3Rpb24gc3RhdGVtZW50cwphbmQgb3B0aW9uYWwgZnVuY3Rpb24gZGVmaW5pdGlvbnMuCi5SUwouUFAKXGZJcGF0dGVyblxmQgl7IFxmSWFjdGlvbiBzdGF0ZW1lbnRzXGZCIH1cZlIKLmJyClxmQmZ1bmN0aW9uIFxmSW5hbWVcZkIoXGZJcGFyYW1ldGVyIGxpc3RcZkIpIHsgXGZJc3RhdGVtZW50c1xmQiB9XGZSCi5SRQouUFAKLkkgR2F3awpmaXJzdCByZWFkcyB0aGUgcHJvZ3JhbSBzb3VyY2UgZnJvbSB0aGUKLklSIHByb2dyYW0tZmlsZSAocykKaWYgc3BlY2lmaWVkLCBvciBmcm9tIHRoZSBmaXJzdCBub24tb3B0aW9uIGFyZ3VtZW50IG9uIHRoZSBjb21tYW5kIGxpbmUuClRoZQouQiBcLWYKb3B0aW9uIG1heSBiZSB1c2VkIG11bHRpcGxlIHRpbWVzIG9uIHRoZSBjb21tYW5kIGxpbmUuCi5JIEdhd2sKd2lsbCByZWFkIHRoZSBwcm9ncmFtIHRleHQgYXMgaWYgYWxsIHRoZQouSVIgcHJvZ3JhbS1maWxlIHMKaGFkIGJlZW4gY29uY2F0ZW5hdGVkIHRvZ2V0aGVy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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArNDQgMTIzIDQ1NgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGJlZWJlL3N3YXBsbnMuYXdrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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NzUwADAwMDE3NTAAMDAwMDAwMDAwMTUAMDYwMzM2NDI2MDYAMDE0MDM2ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMAoxMDAwCjAwMAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEKMQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYmVlYmUvc3dhcGxucy5pbgAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDAwMDAyNAAwNjI1NDE1MjExMQAwMTM3MjEAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL2Zvb15iYXIvCi9mb28kYmFyLwoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUlJSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQolJSUgIEJpYlRlWC1maWxlewolJSUgICAgIGF1dGhvciAgICAgICAgICA9ICJOZWxzb24gSC4gRi4gQmVlYmUiLAolJSUgICAgIHZlcnNpb24gICAgICAgICA9ICIyLjA5IiwKJSUlICAgICBkYXRlICAgICAgICAgICAgPSAiMjYgTWFyY2ggMTk5NyIsCiUlJSAgICAgdGltZSAgICAgICAgICAgID0gIjA4OjIxOjE5IE1TVCIsCiUlJSAgICAgZmlsZW5hbWUgICAgICAgID0gImNhY20xOTcwLmJpYiIsCiUlJSAgICAgYWRkcmVzcyAgICAgICAgID0gIkNlbnRlciBmb3IgU2NpZW50aWZpYyBDb21wdXRpbmcKJSUlICAgICAgICAgICAgICAgICAgICAgICAgRGVwYXJ0bWVudCBvZiBNYXRoZW1hdGljcwolJSUgICAgICAgICAgICAgICAgICAgICAgICBVbml2ZXJzaXR5IG9mIFV0YWgKJSUlICAgICAgICAgICAgICAgICAgICAgICAgU2FsdCBMYWtlIENpdHksIFVUIDg0MTEyCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIFVTQSIsCiUlJSAgICAgdGVsZXBob25lICAgICAgID0gIisxIDgwMSA1ODEgNTI1NCIsCiUlJSAgICAgRkFYICAgICAgICAgICAgID0gIisxIDgwMSA1ODEgNDE0OCIsCiUlJSAgICAgY2hlY2tzdW0gICAgICAgID0gIjUwNjczIDQwNjcwIDE5NjAzMyAxNzg3ODI5IiwKJSUlICAgICBlbWFpbCAgICAgICAgICAgPSAiYmVlYmUgYXQgbWF0aC51dGFoLmVkdSAoSW50ZXJuZXQpIiwKJSUlICAgICBjb2RldGFibGUgICAgICAgPSAiSVNPL0FTQ0lJIiwKJSUlICAgICBrZXl3b3JkcyAgICAgICAgPSAiYmlibGlvZ3JhcGh5LCBDQUNNLCBDb21tdW5pY2F0aW9ucyBvZiB0aGUKJSUlICAgICAgICAgICAgICAgICAgICAgICAgQUNNIiwKJSUlICAgICBzdXBwb3J0ZWQgICAgICAgPSAieWVzIiwKJSUlICAgICBkb2NzdHJpbmcgICAgICAgPSAiVGhpcyBpcyBhIGJpYmxpb2dyYXBoeSBvZiB0aGUgam91cm5hbAolJSUgICAgICAgICAgICAgICAgICAgICAgICBDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNLCBjb3ZlcmluZwolJSUgICAgICAgICAgICAgICAgICAgICAgICAoaW5jb21wbGV0ZWx5KSAxOTcwIC0tIDE5NzkuCiUlJQolJSUgICAgICAgICAgICAgICAgICAgICAgICBBdCB2ZXJzaW9uIDIuMDksIHRoZSB5ZWFyIGNvdmVyYWdlIGxvb2tlZAolJSUgICAgICAgICAgICAgICAgICAgICAgICBsaWtlIHRoaXM6CiUlJQolJSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5NjEgKCAgMSkgICAgIDE5NzIgKDE2OCkgICAgIDE5ODMgKCAgMCkKJSUlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOTYyICggIDEpICAgICAxOTczICgxNTgpICAgICAxOTg0ICggIDApCiUlJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTk2MyAoICAyKSAgICAgMTk3NCAoMTI3KSAgICAgMTk4NSAoICAyKQolJSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5NjQgKCAgMikgICAgIDE5NzUgKDEwNykgICAgIDE5ODYgKCAgMCkKJSUlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOTY1ICggIDEpICAgICAxOTc2ICggOTcpICAgICAxOTg3ICggIDApCiUlJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTk2NiAoICAyKSAgICAgMTk3NyAoMTE3KSAgICAgMTk4OCAoICAwKQolJSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5NjcgKCAgMSkgICAgIDE5NzggKDExOCkgICAgIDE5ODkgKCAgMCkKJSUlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOTY4ICggIDEpICAgICAxOTc5ICggNzgpICAgICAxOTkwICggIDIpCiUlJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTk2OSAoICAzKSAgICAgMTk4MCAoICAxKSAgICAgMTk5MSAoICA0KQolJSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5NzAgKDE1NykgICAgIDE5ODEgKCAgMikgICAgIDE5OTIgKCAgMSkKJSUlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOTcxICgxMDQpICAgICAxOTgyICggIDEpCiUlJQolJSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFydGljbGU6ICAgICAgIDEyNTIKJSUlICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCb29rOiAgICAgICAgICAgICAyCiUlJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5Qcm9jZWVkaW5nczogICAgMQolJSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hbnVhbDogICAgICAgICAgIDEKJSUlICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXN0ZXJzVGhlc2lzOiAgICAxCiUlJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGhkVGhlc2lzOiAgICAgICAgMQolJSUKJSUlICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUb3RhbCBlbnRyaWVzOiAxMjU4CiUlJQolJSUgICAgICAgICAgICAgICAgICAgICAgICBUaGUgc2l6ZSBvZiB0aGUgb3JpZ2luYWwgY2FjbS5iaWIgZmlsZQolJSUgICAgICAgICAgICAgICAgICAgICAgICBjb3ZlcmluZyAxOTU4LS0xOTk2IGJlY2FtZSB0b28gbGFyZ2UgKGFib3V0CiUlJSAgICAgICAgICAgICAgICAgICAgICAgIDQwMDAgZW50cmllcykgZm9yIEJpYlRlWCBhbmQgVGVYIHRvIGhhbmRsZSwKJSUlICAgICAgICAgICAgICAgICAgICAgICAgc28gYXQgdmVyc2lvbiAxLjQ0LCBpdCB3YXMgc3BsaXQgaW50bwolJSUgICAgICAgICAgICAgICAgICAgICAgICBjYWNtMTk1MC5iaWIsIGNhY20xOTYwLmJpYiwgY2FjbTE5NzAuYmliLAolJSUgICAgICAgICAgICAgICAgICAgICAgICBjYWNtMTk4MC5iaWIsIGFuZCBjYWNtMTk5MC5iaWIsIGVhY2ggY292ZXJpbmcKJSUlICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGRlY2FkZSBzdGFydGluZyB3aXRoIHRoZSB5ZWFyIGVtYmVkZGVkIGluCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmaWxlbmFtZS4gIFZlcnNpb24gbnVtYmVycyBmb3IgdGhlc2UKJSUlICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXMgYmVnaW4gYXQgMi4wMC4KJSUlCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIFZvbHVtZXMgZnJvbSB0aGUgMTk5MHMgYXZlcmFnZSBtb3JlIHRoYW4gMjAwCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIGFydGljbGVzIHllYXJseSwgc28gYSBjb21wbGV0ZSBiaWJsaW9ncmFwaHkKJSUlICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgam91cm5hbCBjb3VsZCBjb250YWluIG1vcmUgdGhhbiA2MDAwCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIGVudHJpZXMgZnJvbSAxOTU4IHRvIDIwMDAuCiUlJQolJSUgICAgICAgICAgICAgICAgICAgICAgICBUaGVzZSBiaWJsaW9ncmFwaGllcyBhbHNvIGluY2x1ZGUgQUNNCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIEFsZ29yaXRobXMgMS0tNDkyLiAgRm9yIEFsZ29yaXRobXMgNDkzLS02ODYsCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBBbGdvcml0aG0gNTY4LCBwdWJsaXNoZWQgaW4gQUNNCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zYWN0aW9ucyBvbiBQcm9ncmFtbWluZyBMYW5ndWFnZXMgYW5kCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbXMgKFRPUExBUyksIHNlZSB0aGUgY29tcGFuaW9uCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIGJpYmxpb2dyYXBoaWVzLCB0b21zLmJpYiBhbmQgdG9wbGFzLmJpYi4KJSUlCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIEFsbCBwdWJsaXNoZWQgUmVtYXJrcyBhbmQgQ29ycmlnZW5kYSBhcmUKJSUlICAgICAgICAgICAgICAgICAgICAgICAgY3Jvc3MtcmVmZXJlbmNlZCBpbiBib3RoIGRpcmVjdGlvbnMsIHNvCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgY2l0aW5nIGEgcGFwZXIgd2lsbCBhdXRvbWF0aWNhbGx5CiUlJSAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlIGNpdGF0aW9ucyBmb3IgdGhvc2UgUmVtYXJrcyBhbmQKJSUlICAgICAgICAgICAgICAgICAgICAgICAgQ29ycmlnZW5kYS4gIENyb3NzLXJlZmVyZW5jZWQgZW50cmllcyBhcmUKJSUlICAgICAgICAgICAgICAgICAgICAgICAgZHVwbGljYXRlZCBpbiBjYWNtMTkqLmJpYiBhbmQgdG9tcy5iaWIsIHNvCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgZWFjaCBpcyBjb21wbGV0ZWx5IHNlbGYtY29udGFpbmVkLgolJSUKJSUlICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlIGNvZGUgZm9yIEFDTSBBbGdvcml0aG1zIGZyb20gMzgwCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIG9ud2FyZHMsIHdpdGggc29tZSBvbWlzc2lvbnMsIGlzIGF2YWlsYWJsZQolJSUgICAgICAgICAgICAgICAgICAgICAgICB2aWEgdGhlIE5ldGxpYiBzZXJ2aWNlIGF0CiUlJSAgICAgICAgICAgICAgICAgICAgICAgIGh0dHA6Ly9uZXRsaWIub3JubC5nb3YvLCBhbmQKJSUlICAgICAgICAgICAgICAgICAgICAgICAgZnRwOi8vbmV0bGliLmJlbGwtbGFicy5jb20vbmV0bGliL3RvbXMuCiUlJQolJSUgICAgICAgICAgICAgICAgICAgICAgICBUaGVyZSBpcyBhIFdvcmxkIFdpZGUgV2ViIHNlYXJjaCBmYWNpbGl0eQolJSUgICAgICAgICAgICAgICAgICAgICAgICBmb3IgYXJ0aWNsZXMgcHVibGlzaGVkIGluIHRoaXMgam91cm5hbCBmcm9tCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIDE5NTkgdG8gMTk3OSBhdAolJSUgICAgICAgICAgICAgICAgICAgICAgICBodHRwOi8vY2lpci5jcy51bWFzcy5lZHUvY2dpLWJpbi93ZWJfcXVlcnlfZm9ybS9wdWJsaWMvY2FjbTIuMS4KJSUlCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBpbml0aWFsIGRyYWZ0IG9mIGVudHJpZXMgZm9yIDE5ODEgLS0KJSUlICAgICAgICAgICAgICAgICAgICAgICAgMTk5MCB3YXMgZXh0cmFjdGVkIGZyb20gdGhlIEFDTSBDb21wdXRpbmcKJSUlICAgICAgICAgICAgICAgICAgICAgICAgQXJjaGl2ZSBDRCBST00gZm9yIHRoZSAxOTgwcywgd2l0aCBtYW51YWwKJSUlICAgICAgICAgICAgICAgICAgICAgICAgY29ycmVjdGlvbnMgYW5kIGFkZGl0aW9ucy4gIEFkZGl0aW9ucyB3ZXJlCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gbWFkZSBmcm9tIGFsbCBvZiB0aGUgYmlibGlvZ3JhcGhpZXMgaW4KJSUlICAgICAgICAgICAgICAgICAgICAgICAgdGhlIFRlWCBVc2VyIEdyb3VwIGNvbGxlY3Rpb24sIGZyb20KJSUlICAgICAgICAgICAgICAgICAgICAgICAgYmlibGlvZ3JhcGhpZXMgaW4gdGhlIGF1dGhvcidzIHBlcnNvbmFsCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzLCBmcm9tIHRoZSBDb21wZW5kZXggZGF0YWJhc2UKJSUlICAgICAgICAgICAgICAgICAgICAgICAgKDE5NzAtLTE5NzkpLCBmcm9tIHRoZSBJRUVFIElOU1BFQyBkYXRhYmFzZQolJSUgICAgICAgICAgICAgICAgICAgICAgICAoMTk3MC0tMTk3OSksIGZyb20gdGFibGVzIG9mIGNvbnRlbnRzCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uIGF0IGh0dHA6Ly93d3cuYWNtLm9yZy9wdWJzL2NhY20vLAolJSUgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIFplbnRyYWxibGF0dCBmdXIgTWF0aGVtYXRpayBNYXRoZW1hdGljcwolJSUgICAgICAgICAgICAgICAgICAgICAgICBBYnN0cmFjdHMgYXQKJSUlICAgICAgICAgICAgICAgICAgICAgICAgaHR0cDovL3d3dy5lbWlzLmRlL2NnaS1iaW4vTUFUSC8sIGZyb20KJSUlICAgICAgICAgICAgICAgICAgICAgICAgYmlibGlvZ3JhcGhpZXMgYXQgSW50ZXJuZXQgaG9zdAolJSUgICAgICAgICAgICAgICAgICAgICAgICBuZXRsaWIuYmVsbC1sYWJzLmNvbSwgYW5kIGZyb20gdGhlIGNvbXB1dGVyCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIHNjaWVuY2UgYmlibGlvZ3JhcGh5IGNvbGxlY3Rpb24gb24KJSUlICAgICAgICAgICAgICAgICAgICAgICAgZnRwLmlyYS51a2EuZGUgaW4gL3B1Yi9iaWJsaW9ncmFwaHkgdG8gd2hpY2gKJSUlICAgICAgICAgICAgICAgICAgICAgICAgbWFueSBwZW9wbGUgb2YgaGF2ZSBjb250cmlidXRlZC4gIFRoZQolJSUgICAgICAgICAgICAgICAgICAgICAgICBzbmFwc2hvdCBvZiB0aGlzIGNvbGxlY3Rpb24gd2FzIHRha2VuIG9uCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIDUtTWF5LTE5OTQsIGFuZCBpdCBjb25zaXN0cyBvZiA0NDEgQmliVGVYCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzLCAyLDY3Miw2NzUgbGluZXMsIDIwNSwyODkgZW50cmllcywgYW5kCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIDYsMzc1IDxhdD5TdHJpbmd7fSBhYmJyZXZpYXRpb25zLCBvY2N1cHlpbmcKJSUlICAgICAgICAgICAgICAgICAgICAgICAgOTQuOE1CIG9mIGRpc2sgc3BhY2UuCiUlJQolJSUgICAgICAgICAgICAgICAgICAgICAgICBOdW1lcm91cyBlcnJvcnMgaW4gdGhlIHNvdXJjZXMgbm90ZWQgYWJvdmUKJSUlICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZSBiZWVuIGNvcnJlY3RlZC4gICBTcGVsbGluZyBoYXMgYmVlbgolJSUgICAgICAgICAgICAgICAgICAgICAgICB2ZXJpZmllZCB3aXRoIHRoZSBVTklYIHNwZWxsIGFuZCBHTlUgaXNwZWxsCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW1zIHVzaW5nIHRoZSBleGNlcHRpb24gZGljdGlvbmFyeQolJSUgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZWQgaW4gdGhlIGNvbXBhbmlvbiBmaWxlIHdpdGggZXh0ZW5zaW9uCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIC5zb2suCiUlJQolJSUgICAgICAgICAgICAgICAgICAgICAgICBCaWJUZVggY2l0YXRpb24gdGFncyBhcmUgdW5pZm9ybWx5IGNob3NlbgolJSUgICAgICAgICAgICAgICAgICAgICAgICBhcyBuYW1lOnllYXI6YWJicmV2LCB3aGVyZSBuYW1lIGlzIHRoZQolJSUgICAgICAgICAgICAgICAgICAgICAgICBmYW1pbHkgbmFtZSBvZiB0aGUgZmlyc3QgYXV0aG9yIG9yIGVkaXRvciwKJSUlICAgICAgICAgICAgICAgICAgICAgICAgeWVhciBpcyBhIDQtZGlnaXQgbnVtYmVyLCBhbmQgYWJicmV2IGlzIGEKJSUlICAgICAgICAgICAgICAgICAgICAgICAgMy1sZXR0ZXIgY29uZGVuc2F0aW9uIG9mIGltcG9ydGFudCB0aXRsZQolJSUgICAgICAgICAgICAgICAgICAgICAgICB3b3Jkcy4gQ2l0YXRpb24gdGFncyB3ZXJlIGF1dG9tYXRpY2FsbHkKJSUlICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVkIGJ5IHNvZnR3YXJlIGRldmVsb3BlZCBmb3IgdGhlCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIEJpYk5ldCBQcm9qZWN0LgolJSUKJSUlICAgICAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBiaWJsaW9ncmFwaHksIGVudHJpZXMgYXJlIHNvcnRlZCBpbgolJSUgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWNhdGlvbiBvcmRlciB3aXRoaW4gZWFjaCBqb3VybmFsLAolJSUgICAgICAgICAgICAgICAgICAgICAgICB1c2luZyBiaWJzb3J0IC1ieXZvbHVtZS4KJSUlCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBjaGVja3N1bSBmaWVsZCBhYm92ZSBjb250YWlucyBhIENSQy0xNgolJSUgICAgICAgICAgICAgICAgICAgICAgICBjaGVja3N1bSBhcyB0aGUgZmlyc3QgdmFsdWUsIGZvbGxvd2VkIGJ5IHRoZQolJSUgICAgICAgICAgICAgICAgICAgICAgICBlcXVpdmFsZW50IG9mIHRoZSBzdGFuZGFyZCBVTklYIHdjICh3b3JkCiUlJSAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50KSB1dGlsaXR5IG91dHB1dCBvZiBsaW5lcywgd29yZHMsIGFuZAolJSUgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzLiAgVGhpcyBpcyBwcm9kdWNlZCBieSBSb2JlcnQKJSUlICAgICAgICAgICAgICAgICAgICAgICAgU29sb3ZheSdzIGNoZWNrc3VtIHV0aWxpdHkuIiwKJSUlICB9CiUlJSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKQFByZWFtYmxleyJcaW5wdXQgYmlibmFtZXMuc3R5ICIgIyAiXGlucHV0IHBhdGguc3R5ICIgIyAiXGRlZiBcVE0geyR7fV57XHNjIFRNfSR9ICIgIyAiXGh5cGhlbmF0aW9ueyBhbC1waGEtbWVyLWljIEJhbHotZXIgQmxvbS1xdWlzdCBCby10YS1mby1nbyBCcmFuLWRpbiBCcmFucy1jb21iIEJ1LXRlcmEgQ2hyaXMtdGluYSBDaHJpc3Qtby1maS1kZXMgQ29sLWxpbnMgQ29yLWRlbGwgZGF0YS1iYXNlIGVjb24tb21pZXMgRmxldGNoLWVyCiBmbG93LWNoYXJ0IGZsb3ctY2hhcnRzIEZyeS1zdHlrIGdlLWRhbmstZW4gR2FyLWZpbmstZWwgR2UtaGEtbmkgR2x1c2gta28gR291ZC1yZWF1IEd1YS1kYW4tZ28gSGFyaS1kaSBIYXctdGhvcm4gSGVtLW1lbi1kaW5nLWVyIEhvci1vLXdpdHogSG91ci12aXR6IEhpcnNjaC1iZXJnIElrZS1kYSBLYS1jaGktdHZpLWNoeWFuLXUta3VsIEthdC16ZS1uZWwtc29uIEtpdHotbWlsbGVyIEtvLWJhLXlhc2hpIExlLU1lLXRheS1lciBLZW4tbmUtZHkKIExhdy1yZW5jZSBNYWMta2F5IE1haS1uZXQtdGkgTWFyLXNhLWdsaWEgTWF4LXdlbGwgTWVyLW5lciBNby1yYW4tZGkgTmEtcmF5LWFuIE5ldy1lbGwgTmljaC1vbHMgcGFyYS1kaWdtIHBhdC1lbnQtZWQgUGhpLWxvLWt5cC1yb3UgUHJlcC1hLXJhLXRhIHBzZXUtZG8tY2hhaW4taW5nIFFVSUstU0NSSVBUIFJhZC1lLW1hY2gtZXIgcmUtZXZhbC11LWEtdGlvbiByZS13aW5kIFJvcy13aXRoYSBTY2hldS1lci1tYW5uIFNjaHdhY2gtaGVpbQogU2Nob2ItYmVucyBTY2hvbi1iZXJnIFNoby1zaGEtbmkgU2ktdGhhLXJhLW1hIFNrd2EtcmVjLWtpIFN0cmVjay1lciBTdHJpbi1naS1uaSBUZXMtbGVyIFRlLXp1LWthIFRldS1oby1sYSBUaWxsLXF1aXN0IFRvd24tc2VuZCBUc2ktY2hyaS10emlzIFR1ci1za2kgVnVpbGxlLW1pbiBXYWxkLWluZy1lciBaYS1iby1yb3ctc2tpIFphLW1vcmEgfSJ9CgolPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KJSBBY2tub3dsZWRnZW1lbnQgYWJicmV2aWF0aW9uczoKCkBTdHJpbmd7YWNrLW5oZmIgPSAiTmVsc29uIEguIEYuIEJlZWJlLCBDZW50ZXIgZm9yIFNjaWVudGlmaWMgQ29tcHV0aW5nLCBEZXBhcnRtZW50IG9mIE1hdGhlbWF0aWNzLCBVbml2ZXJzaXR5IG9mIFV0YWgsIFNhbHQgTGFrZSBDaXR5LCBVVCA4NDExMiwgVVNBLCBUZWw6ICsxIDgwMSA1ODEgNTI1NCwgRkFYOiArMSA4MDEgNTgxIDQxNDgsIGUtbWFpbDogXHBhdGh8YmVlYmVAbWF0aC51dGFoLmVkdXwifQoKQFN0cmluZ3thY2stbmogPSAiTm9yYmVydCBKdWZmYSwgMjQ0NSBNaXNzaW9uIENvbGxlZ2UgQmx2ZC4gU2FudGEgQ2xhcmEsIENBIDk1MDU0IFVTQSBlbWFpbDogXHBhdGg9bm9yYmVydEBpaXQuY29tPSJ9CgolPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KJSBKb3VybmFsIGFiYnJldmlhdGlvbnM6CgpAU3RyaW5ne2otQ0FDTSA9ICJDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNIn0KCkBTdHJpbmd7ai1DT01QLVNVUlYgPSAiQ29tcHV0aW5nIFN1cnZleXMifQoKQFN0cmluZ3tqLUotQUNNID0gIkpvdXJuYWwgb2YgdGhlIEFDTSJ9CgpAU3RyaW5ne2otTUFOQUdFTUVOVC1TQ0lFTkNFID0gIk1hbmFnZW1lbnQgU2NpZW5jZSJ9CgpAU3RyaW5ne2otU0lBTS1KLUNPTVBVVCA9ICJTSUFNIEpvdXJuYWwgb2YgQ29tcHV0aW5nIn0KCkBTdHJpbmd7ai1TUEUgPSAgIlNvZnR3YXJlIC0tLSBQcmFjdGljZSBhbmQgRXhwZXJpZW5jZSJ9CgpAU3RyaW5ne2otVE9NUyA9ICJBQ00gVHJhbnNhY3Rpb25zIG9uIE1hdGhlbWF0aWNhbCBTb2Z0d2FyZSJ9CgolPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KJSBQdWJsaXNoZXIgYWJicmV2aWF0aW9uczoKCkBTdHJpbmd7cHViLUFOU0kgPSAiQW1lcmljYW4gTmF0aW9uYWwgU3RhbmRhcmRzIEluc3RpdHV0ZSJ9CgpAU3RyaW5ne3B1Yi1BTlNJOmFkciA9ICIxNDMwIEJyb2Fkd2F5LCBOZXcgWW9yaywgTlkgMTAwMTgsIFVTQSJ9CgpAU3RyaW5ne3B1Yi1BVyA9ICJBZHtcLWR9aXtcLXN9b24tV2Vze1wtbH1leSJ9CgpAU3RyaW5ne3B1Yi1BVzphZHIgPSAiUmVhZGluZywgTUEsIFVTQSJ9CgpAU3RyaW5ne3B1Yi1TVUNTTEkgPSAiU3RhbmZvcmQgVW5pdmVyc2l0eSBDZW50ZXIgZm9yIHRoZSBTdHVkeSBvZiBMYW5ndWFnZSBhbmQgSW5mb3JtYXRpb24ifQoKQFN0cmluZ3twdWItU1VDU0xJOmFkciA9ICJTdGFuZm9yZCwgQ0EsIFVTQSJ9CgpAU3RyaW5ne3B1Yi1TViA9ICJTcHJpbmd7XC19ZXItVmVye1wtfWxhZyJ9CgpAU3RyaW5ne3B1Yi1TVjphZHIgPSAiQmVybGluLCBHZXJtYW55fi8gSGVpZGVsYmVyZywgR2VybWFueX4vIExvbmRvbiwgVUt+LyBldGMuIn0KQE1hc3RlcnNUaGVzaXN7RGl0dG1lcjoxOTc2OklFUCwKICBhdXRob3IgPSAgICAgICAiSW5nbyBEaXR0bWVyIiwKICB0aXRsZSA9ICAgICAgICAie0ltcGxlbWVudGF0aW9uIGVpbmVzIEVpbnNjaHJpdHRjb21waWxlcnMgZntcInV9ciBkaWUgUHJvZ2FtbWllcnNwcmFjaGUgUEFTQ0FMIGF1ZiBkZXIgUmVjaGVuYW5sYWdlIElCTVxzbGFzaCAzNjAgZGVyIFVuaXZlcnNpdHtcImF9dCBNe1widX1uc3Rlcn0uICh7RW5nbGlzaH0gdGl0bGU6IEltcGxlbWVudGF0aW9uIG9mIGEgT25lLVN0ZXAgQ29tcGlsZXIgZm9yIHRoZSBQcm9ncmFtbWluZyBMYW5ndWFnZQoge1BBU0NBTH0gb24gdGhlIHtJQk19XHNsYXNoIDM2MCBvZiB0aGUge1VuaXZlcnNpdHkg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IG9mbXRiaWcuYXdrLCBvZm10YmlnLmluLCBvZm10YmlnLm9rOiBuZXcgZmlsZXMuCgpUdWUgT2N0IDIwIDIyOjA3OjEwIDE5OTggIEFybm9sZCBELiBSb2JiaW5zICA8YXJub2xkQGdudS5vcmc+CgoJKiBNYWtlZmlsZS5pbiAobGludCk6IG5ldyB0ZXN0IGNhc2UuCgkqIGxpbnQuYXdrLCBsaW50Lm9rOiBuZXcgZmlsZXMuCgkqIGJhZGFyZ3Mub2s6IHVwZGF0ZWQgb3V0cHV0IGNvcnJlc3BvbmRpbmcgdG8gY2hhbmdlIG1hZGUgdG8KCSAgbWFpbi5jIChzZWUgbWFpbiBDaGFuZ2VMb2cpLgoKVHVlIE1heSAyNiAyMDozOTowNyAxOTk4ICBBcm5vbGQgRC4gUm9iYmlucyAgPGFybm9sZEBnbnUub3JnPgoKCSogcGlwZWlvMi5hd2s6IGNoYW5nZSAiXCciIHRvICInIiB0byBhdm9pZCBuZXcgd2FybmluZy4KCk1vbiBNYXIgMjMgMjE6NTM6MzYgMTk5OCAgQXJub2xkIEQuIFJvYmJpbnMgIDxhcm5vbGRAZ251Lm9yZz4KCgkqIE1ha2VmaWxlLmluIChmbmFzZ25tKTogbmV3IHRlc3QgY2FzZS4KCSogZm5hc2dubS5hd2ssIGZuYXNnbm0uaW4sIGZuYXNnbm0ub2s6IG5ldyBmaWxlcy4KCkZyaSBNYXIgMjAgMTE6MDE6MzggMTk5OCBBcm5vbGQgRC4gUm9iYmlucyAgPGFybm9sZEBnbnUub3JnPgoKCSogTWFrZWZpbGUuaW4gKGZuYXJ5c2NsKTogbmV3IHRlc3QgY2FzZS4KCSogZm5hcnlzY2wuYXdrLCBmbmFyeXNjbC5vazogbmV3IGZpbGVzLgoKTW9uIE1hciAxNiAxNToyMzoyMiAxOTk4ICBBcm5vbGQgRC4gUm9iYmlucyAgPGFybm9sZEBnbnUub3JnPgoKCSogTWFrZWZpbGUuaW4gKHNwbGl0ZGVmKTogbmV3IHRlc3QgY2FzZS4KCSogc3BsaXRkZWYuYXdrLCBzcGxpdGRlZi5vazogbmV3IGZpbGVzLgoKRnJpIFNlcCAyNiAwMToxMDoxNCAxOTk3ICBBcm5vbGQgRC4gUm9iYmlucyAgPGFybm9sZEBnbnUub3JnPgoKCSogTWFrZWZpbGUuaW4gKHBhcnNlbWUpOiBuZXcgdGVzdCBjYXNlLgoJKiBwYXJzZW1lLmF3aywgcGFyc2VtZS5vazogbmV3IGZpbGVzLgoKU3VuIFNlcCAxNCAyMzoyNToxMCAxOTk3ICBBcm5vbGQgRC4gUm9iYmlucyAgPGFybm9sZEBnbnUub3JnPgoKCSogTWFrZWZpbGUuaW4gKG9mbXRzKTogbmV3IHRlc3QgY2FzZS4KCSogb2ZtdHMuYXdrLCBvZm10cy5pbiwgb2ZtdHMub2s6IG5ldyBmaWxlcy4KClN1biBBdWcgMTcgMDc6MTc6MzUgMTk5NyAgQXJub2xkIEQuIFJvYmJpbnMgIDxhcm5vbGRAZ251Lm9yZz4KCgkqIE1ha2VmaWxlLmluIChmc2Z3ZnMpOiBuZXcgdGVzdCBjYXNlLgoJKiBmc2Z3ZnMuYXdrLCBmc2Z3ZnMuaW4sIGZzZndmcy5vazogbmV3IGZpbGVzLgoKU3VuIEp1bCAyNyAyMzowODo1MyAxOTk3ICBBcm5vbGQgRC4gUm9iYmlucyAgPGFybm9sZEBnbnUub3JnPgoKCSogTWFrZWZpbGUuaW4gKGhzcHJpbnQpOiBuZXcgdGVzdCBjYXNlLgoJKiBoc3ByaW50LmF3aywgaHNwcmludC5vaywgcHJpbnRmbG9hdC5hd2s6IG5ldyBmaWxlcy4KClRodSBKdWwgMTcgMjA6MDc6MzEgMTk5NyAgQXJub2xkIEQuIFJvYmJpbnMgIDxhcm5vbGRAZ251Lm9yZz4KCgkqIE1ha2VmaWxlLmluIChvZm10KTogbmV3IHRlc3QgY2FzZS4KCSogb2ZtdC5hd2ssIG9mbXQuaW4sIG9mbXQub2s6IG5ldyBmaWxlcy4KClN1biBKdW4gMjIgMTY6MTc6MzUgMTk5NyAgQXJub2xkIEQuIFJvYmJpbnMgIDxhcm5vbGRAZ251Lm9yZz4KCgkqIE1ha2VmaWxlLmluIChubGluc3RyKTogbmV3IHRlc3QgY2FzZS4KCSogbmxpbnN0ci5hd2ssIG5saW5zdHIuaW4sIG5saW5zdHIub2s6IG5ldyBmaWxlcy4KCldlZCBKdW4gIDQgMTM6MTg6MjEgMTk5NyAgQXJub2xkIEQuIFJvYmJpbnMgIDxhcm5vbGRAZ251Lm9yZz4KCgkqIHBpZC5zaDogc2VuZCBlcnJvcnMgdG8gL2Rldi9udWxsIHRvIHRvc3Mgd2FybmluZyBhYm91dAoJICB1c2luZyBQUk9DSU5GT1sicGlkIl0gZXRjLiBUaGlzIHRlc3QgZXhwbGljaXRseSB0ZXN0cwoJICB0aGUgc3BlY2lhbCBmaWxlcy4gSXQnbGwgbmVlZCBjaGFuZ2luZyBpbiAzLjIuCgpUaHUgQXByIDI0IDIzOjI0OjU5IDE5OTcgIEFybm9sZCBELiBSb2JiaW5zICA8YXJub2xkQGdudS5vcmc+CgoJKiBNYWtlZmlsZS5pbiAobWVzc2FnZXMpOiByZW1vdmUgc3BlY2lhbCBjYXNlIGlmIC9kZXYvZmQgZXhpc3RzLgoJICBGaW5hbGx5LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClN1biBOb3YgMTYgMjA6MDg6NTkgMTk5NyAgQXJub2xkIEQuIFJvYmJpbnMgIDxhcm5vbGRAZ251Lm9yZz4KCgkqIGdzdWJ0ZXN0LmF3aywgZ3N1YnRlc3Qub2s6IGZpeCBmb3IgY291bnQgb2YgbWF0Y2hlcyBpbiBnc3ViCgkgIGZyb20gR2VlcnQuRGVieXNlckBlc2F0Lmt1bGV1dmVuLmFjLmJlLgoKU3VuIE5vdiAxNiAxOTo1NDo1MCAxOTk3ICBBcm5vbGQgRC4gUm9iYmlucyAgPGFybm9sZEBnbnUub3JnPgoKCSogTWFrZWZpbGUuaW4gKHN0cmZ0aW1lKTogZml4IGEgdHlwbyAoTEFOQyAtPiBMQU5HKS4KClRodSBNYXkgMTUgMTI6NDk6MDggMTk5NyAgQXJub2xkIEQuIFJvYmJpbnMgIDxhcm5vbGRAc2tlZXZlLmF0bC5nYS51cz4KCgkqIFJlbGVhc2UgMy4wLjM6IFJlbGVhc2UgdGFyIGZpbGUgbWFkZS4KClR1ZSBNYXkgMTMgMTI6NTM6NDYgMTk5NyAgQXJub2xkIEQuIFJvYmJpbnMgIDxhcm5vbGRAc2tlZXZlLmF0bC5nYS51cz4KCgkqIE1ha2VmaWxlLmluIChtZXNzYWdlcyk6IG1vcmUgdGVzdGluZyBmb3IgT0sgZmFpbHVyZSBvbiBMaW51eC4KClN1biBNYXkgMTEgMTQ6NTc6MTEgMTk5NyAgQXJub2xkIEQuIFJvYmJpbnMgIDxhcm5vbGRAc2tlZXZlLmF0bC5nYS51cz4KCgkqIE1ha2VmaWxlLmluIChub25kZWMpOiBuZXcgdGVzdCBjYXNlLgoJKiBub25kZWMuYXdrLCBub25kZWMub2s6IG5ldyBmaWxlcy4KClN1biBNYXkgMTEgMDc6MDc6MDUgMTk5NyAgQXJub2xkIEQuIFJvYmJpbnMgIDxhcm5vbGRAc2tlZXZlLmF0bC5nYS51cz4KCgkqIE1ha2VmaWxlLmluIChwcmR1cHZhbCk6IG5ldyB0ZXN0IGNhc2UuCgkqIHByZHVwdmFsLmF3aywgcHJkdXB2YWwuaW4sIHByZHVwdmFsLm9rOiBuZXcgZmlsZXMuCgpXZWQgTWF5ICA3IDIxOjU0OjM0IDE5OTcgIEFybm9sZCBELiBSb2JiaW5zICA8YXJub2xkQHNrZWV2ZS5hdGwuZ2EudXM+CgoJKiBNYWtlZmlsZS5pbiAoZGVsYXJwcm0pOiBuZXcgdGVzdCBjYXNlLgoJKiBkZWxhcnBybS5hd2ssIGRlbGFycHJtLm9rOiBuZXcgZmlsZXMuCgpXZWQgTWF5ICA3IDE3OjU0OjAwIDE5OTcgIEFybm9sZCBELiBSb2JiaW5zICA8YXJub2xkQHNrZWV2ZS5hdGwuZ2EudXM+CgoJKiBNYWtlZmlsZS5pbiAocGlkKTogc2V2ZXJhbCBmaXhlcyBmcm9tIGdoYXppQGNhaXAucnV0Z2Vycy5lZHUuCgpUdWUgTWF5ICA2IDIwOjI4OjMwIDE5OTcgIEFybm9sZCBELiBSb2JiaW5zICA8YXJub2xkQHNrZWV2ZS5hdGwuZ2EudXM+CgoJKiBNYWtlZmlsZS5pbiAoc3RyZnRpbWUpOiBVc2UgdGhlIHJpZ2h0IGxvY2FsZSBzdHVmZi4KCSAgKGNsb2JiZXIpOiBkb24ndCBuZWVkIGFuIGlucHV0IGZpbGUuCgpUaHUgQXByIDI0IDIyOjI0OjQyIDE5OTcgIEFybm9sZCBELiBSb2JiaW5zICA8YXJub2xkQHNrZWV2ZS5hdGwuZ2EudXM+CgoJKiBNYWtlZmlsZS5pbiAocGlkKTogbmV3IHRlc3QgY2FzZSwgZnJvbSBqY29AY29udmV4LmNvbS4KCSAgKHNwZWNmaWxlKTogcmVtb3ZlZCB0ZXN0IGNhc2UsIHBpZCBkb2VzIGl0IGJldHRlci4KCSogcGlkLmF3aywgcGlkLm9rLCBwaWQuc2g6IG5ldyBmaWxlcy4KCSogc3BlY2ZpbGUuYXdrOiByZW1vdmVkLgoKV2VkIEFwciAyMyAyMzozNzoxMCAxOTk3ICBBcm5vbGQgRC4gUm9iYmlucyAgPGFybm9sZEBza2VldmUuYXRsLmdhLnVzPgoKCSogTWFrZWZpbGUuaW4gKHBpcGVpbzIpOiBuZXcgdGVzdCBjYXNlLgoJKiBwaXBlaW8yLmF3aywgcGlwZWlvMi5vaywgcGlwZWlvMi5pbjogbmV3IGZpbGVzLgoKU3VuIEFwciAyMCAxMjoyMjo1MiAxOTk3ICBBcm5vbGQgRC4gUm9iYmlucyAgPGFybm9sZEBza2VldmUuYXRsLmdhLnVzPgoKCSogTWFrZWZpbGUuaW4gKGNsb2JiZXIpOiBuZXcgdGVzdCBjYXNlLgoJKiBjbG9iYmVyLmF3aywgY2xvYmJlci5vazogbmV3IGZpbGVzLgoKRnJpIEFwciAxOCAwNzo1NTo0NyAxOTk3ICBBcm5vbGQgRC4gUm9iYmlucyAgPGFybm9sZEBza2VldmUuYXRsLmdhLnVzPgoKCSogQkVUQSBSZWxlYXNlIDMuMC4zNDogUmVsZWFzZSB0YXIgZmlsZSBtYWRlLgoKVHVlIEFwciAxNSAwNTo1NzoyOSAxOTk3ICBBcm5vbGQgRC4gUm9iYmlucyAgPGFybm9sZEBza2VldmUuYXRsLmdhLnVzPgoKCSogTWFrZWZpbGUuaW4gKHN0cmZ0bG5nKTogTW9yZSB3aXphcmRyeSBmb3IgYml6YXJyZSBVbml4IHN5c3RlbXMuCgkgIChubGZsZHNlcCk6IHVzZSBwcm9ncmFtIGFuZCBpbnB1dCBmaWxlLCBub3Qgc2hlbGwgc2NyaXB0CgkgIChiYXNpYywgdW5peC10ZXN0cywgZ2F3ay5leHRlbnNpb25zKTogbW92ZWQgc3BlY2ZpbGUsIHBpcGVpbzEKCSAgYW5kIHN0cmZ0bG5nIGludG8gdW5peC10ZXN0cyBwZXIgUGF0IFJhbmtpbi4KCSogbmxmbGRzZXAuYXdrLCBubGZsZHNlcC5pbjogbmV3IGZpbGVzLgoJKiBubGZsZHNlcC5zaDogcmVtb3ZlZC4KCldlZCBBcHIgIDkgMjM6MzI6NDcgMTk5NyAgQXJub2xkIEQuIFJvYmJpbnMgIDxhcm5vbGRAc2tlZXZlLmF0bC5nYS51cz4KCgkqIE1ha2VmaWxlLmluIChmdW5zdGFjayk6IG5ldyB0ZXN0IGNhc2UuCgkqIGZ1bnN0YWNrLmF3aywgZnVuc3RhY2suaW4sIGZ1bnN0YWNrLm9rOiBuZXcgZmlsZXMuCgkqIHN1YnN0ci5hd2s6IGFkZGVkIG1hbnkgbW9yZSB0ZXN0cy4KCSogc3Vic3RyLm9rOiB1cGRhdGVkCgpXZWQgTWFyIDE5IDIwOjEwOjIxIDE5OTcgIEFybm9sZCBELiBSb2JiaW5zICA8YXJub2xkQHNrZWV2ZS5hdGwuZ2EudXM+CgoJKiBNYWtlZmlsZS5pbiAocGlwZWlvMSk6IG5ldyB0ZXN0IGNhc2UuCgkqIHBpcGVpbzEuYXdrLCBwaXBlaW8xLm9rOiBuZXcgZmlsZXMuCgpUdWUgTWFyIDE4IDA2OjM4OjM2IDE5OTcgIEFybm9sZCBELiBSb2JiaW5zICA8YXJub2xkQHNrZWV2ZS5hdGwuZ2EudXM+CgoJKiBNYWtlZmlsZS5pbiAobm9wYXJtKTogbmV3IHRlc3QgY2FzZS4KCSogbm9wYXJtLmF3aywgbm9wYXJtLm9rOiBuZXcgZmlsZXMuCgpGcmkgRmViIDIxIDA2OjMwOjE4IDE5OTcgIEFybm9sZCBELiBSb2JiaW5zICA8YXJub2xkQHNrZWV2ZS5hdGwuZ2EudXM+CgoJKiBNYWtlZmlsZS5pbiAocmVpbnQpOiBuZXcgdGVzdCBjYXNlLgoJKiByZWludC5hd2ssIHJlaW50LmluLCByZWludC5vazogbmV3IGZpbGVzLgoKV2VkIEZlYiAgNSAxODoxNzo1MSAxOTk3ICBBcm5vbGQgRC4gUm9iYmlucyAgPGFybm9sZEBza2VldmUuYXRsLmdhLnVzPgoKCSogTWFrZWZpbGUuaW4gKGZuYXJ5ZGVsKTogbmV3IHRlc3QgY2FzZS4KCSogZm5hcnlkZWwuYXdrLCBmbmFyeWRlbC5vazogbmV3IGZpbGVzLgoKU3VuIEphbiAxOSAxNzowNjoxOCAxOTk3ICBBcm5vbGQgRC4gUm9iYmlucyAgPGFybm9sZEBza2VldmUuYXRsLmdhLnVzPgoKCSogTWFrZWZpbGUuaW4gKG5vcnMpOiBuZXcgdGVzdCBjYXNlLgoJKiBub3JzLm9rOiBuZXcgZmlsZS4KClN1biBKYW4gMTkgMTc6MDY6MTggMTk5NyAgQXJub2xkIEQuIFJvYmJpbnMgIDxhcm5vbGRAc2tlZXZlLmF0bC5nYS51cz4KCgkqIE1ha2VmaWxlLmluIChzcGVjZmlsZSwgc3RyZnRsbmcsIG5mbGRzdHIpOiBuZXcgdGVzdCBjYXNlcy4KCSogc3BlY2ZpbGUuYXdrLCBzdHJmdGxuZy5hd2ssIHN0cmZ0bG5nLm9rLCBuZmxkc3RyLm9rOiBuZXcgZmlsZXMuCgpGcmkgRGVjIDI3IDExOjI3OjEzIDE5OTYgIEFybm9sZCBELiBSb2JiaW5zICA8YXJub2xkQHNrZWV2ZS5hdGwuZ2EudXM+CgoJKiBNYWtlZmlsZS5pbiAoaW50ZXN0KTogbmV3IHRlc3QgY2FzZS4KCSogaW50ZXN0LmF3aywgaW50ZXN0Lm9rOiBuZXcgZmlsZXMuCgpXZWQgRGVjIDI1IDExOjI1OjIyIDE5OTYgIEFybm9sZCBELiBSb2JiaW5zICA8YXJub2xkQHNrZWV2ZS5hdGwuZ2EudXM+CgoJKiBSZWxlYXNlIDMuMC4yOiBSZWxlYXNlIHRhciBmaWxlIG1hZGUuCgpUdWUgRGVjIDEwIDIzOjA5OjI2IDE5OTYgIEFybm9sZCBELiBSb2JiaW5zICA8YXJub2xkQHNrZWV2ZS5hdGwuZ2EudXM+CgoJKiBSZWxlYXNlIDMuMC4xOiBSZWxlYXNlIHRhciBmaWxlIG1hZGUuCgpUaHUgTm92ICA3IDA5OjEyOjIwIDE5OTYgIEFybm9sZCBELiBSb2JiaW5zICA8YXJub2xkQHNrZWV2ZS5hdGwuZ2EudXM+CgoJKiBNYWtlZmlsZS5pbiAoc3BsaXR2YXIpOiBuZXcgdGVzdCBjYXNlLgoJKiBzcGxpdHZhci5hd2ssIHNwbGl0dmFyLmluLCBzcGxpdHZhci5vazogbmV3IGZpbGVzLgoKU3VuIE5vdiAgMyAxMDo1NTo1MCAxOTk2ICBBcm5vbGQgRC4gUm9iYmlucyAgPGFybm9sZEBza2VldmUuYXRsLmdhLnVzPgoKCSogTWFrZWZpbGUuaW4gKG5sZmxkc2VwKTogbmV3IHRlc3QgY2FzZS4KCSogbmxmbGRzZXAuc2gsIG5sZmxkc2VwLm9rOiBuZXcgZmlsZXMuCgpGcmkgT2N0IDI1IDEwOjI5OjU2IDE5OTYgIEFybm9sZCBELiBSb2JiaW5zICA8YXJub2xkQHNrZWV2ZS5hdGwuZ2EudXM+CgoJKiByYW5kLmF3azogY2FsbCBzcmFuZCB3aXRoIGZpeGVkIHNlZWQuCgkqIHJhbmQub2s6IG5ldyBmaWxlLgoJKiBNYWtlZmlsZS5pbiAocmFuZCk6IGNoYW5nZWQgdG8gY29tcGFyZSBvdXRwdXQgd2l0aCByYW5kLm9rLgoKU2F0IE9jdCAxOSAyMTo1MjowNCAxOTk2ICBBcm5vbGQgRC4gUm9iYmlucyAgPGFybm9sZEBza2VldmUuYXRsLmdhLnVzPgoKCSogTWFrZWZpbGUuaW4gKHRyYWRhbmNoKTogbmV3IHRlc3QgY2FzZS4KCSogdHJhZGFuY2guYXdrLCB0cmFkYW5jaC5pbiwgdHJhZGFuY2gub2s6IG5ldyBmaWxlcy4KClRodSBPY3QgMTcgMjE6MjI6MDUgMTk5NiAgQXJub2xkIEQuIFJvYmJpbnMgIDxhcm5vbGRAc2tlZXZlLmF0bC5nYS51cz4KCgkqIHR3ZWFrZmxkLmF3azogbW92ZSBgcm0nIG91dCBpbnRvIE1ha2VmaWxlLmluLgoJKiBlb2ZzcGxpdC5hd2s6IGZpeGVkIGJ1Z2d5IGNvZGUgc28gd29uJ3QgbG9vcCBmb3JldmVyLgoJKiBNYWtlZmlsZS5pbiAoYWxsKTogYWRkIHVuaXgtdGVzdHMuCgkgICh1bml4LXRlc3RzKTogbmV3IHRhcmdldCwgaGFzIHBvdW5kLWJhbmcsIGZmbHVzaCwgZ2V0bG5oZC4KCSAgKGJhc2ljKTogcmVtb3ZlZCBmZmx1c2gsIGdldGxuaGQuCgkgICh0d2Vha2ZsZCk6IGFkZGVkIHJtIGZyb20gdHdlYWtmbGQuYXdrLgoKU3VuIE9jdCAgNiAyMjowMDozNSAxOTk2ICBBcm5vbGQgRC4gUm9iYmlucyAgPGFybm9sZEBza2VldmUuYXRsLmdhLnVzPgoKCSogTWFrZWZpbGUuaW4gKGJhY2s4OSk6IG5ldyB0ZXN0IGNhc2UuCgkqIGJhY2s4OS5pbiwgYmFjazg5Lm9rOiBuZXcgZmlsZXMuCgpTdW4gT2N0ICA2IDIwOjQ1OjU0IDE5OTYgIEFybm9sZCBELiBSb2JiaW5zICA8YXJub2xkQHNrZWV2ZS5hdGwuZ2EudXM+CgoJKiBNYWtlZmlsZS5pbiAoc3BsaXR3aHQpOiBuZXcgdGVzdCBjYXNlLgoJKiBzcGxpdHdodC5hd2ssIHNwbGl0d2h0Lm9rOiBuZXcgZmlsZXMuCgpTdW4gU2VwIDI5IDIzOjE0OjIwIDE5OTYgIEFybm9sZCBELiBSb2JiaW5zICA8YXJub2xkQHNrZWV2ZS5hdGwuZ2EudXM+CgoJKiBNYWtlZmlsZS5pbiAoZ3N1YnRlc3QpOiBuZXcgdGVzdCBjYXNlLgoJKiBnc3VidGVzdC5hd2ssIGdzdWJ0ZXN0Lm9rOiBuZXcgZmlsZXMuCgpGcmkgU2VwIDIwIDExOjU4OjQwIDE5OTYgIEFybm9sZCBELiBSb2JiaW5zICA8YXJub2xkQHNrZWV2ZS5hdGwuZ2EudXM+CgoJKiBNYWtlZmlsZS5pbiAocHJ0b2V2YWwpOiBuZXcgdGVzdCBjYXNlLgoJKiBwcnRvZXZhbC5hd2ssIHBydG9ldmFsLm9rOiBuZXcgZmlsZXMuCgpUdWUgU2VwIDEwIDA2OjI2OjQ0IDE5OTYgIEFybm9sZCBELiBSb2JiaW5zICA8YXJub2xkQHNrZWV2ZS5hdGwuZ2EudXM+CgoJKiBNYWtlZmlsZS5pbiAoZ3N1YmFzZ24pOiBuZXcgdGVzdCBjYXNlLgoJKiBnc3ViYXNnbi5hd2ssIGdzdWJhc2duLm9rOiBuZXcgZmlsZXMuCgpXZWQgQXVnIDI4IDIyOjA2OjMzIDE5OTYgIEFybm9sZCBELiBSb2JiaW5zICA8YXJub2xkQHNrZWV2ZS5hdGwuZ2EudXM+CgoJKiBiYWRhcmdzLm9rOiB1cGRhdGVkIG91dHB1dCBjb3JyZXNwb25kaW5nIHRvIGNoYW5nZSBtYWRlIHRvCgkgIG1haW4uYyAoc2VlIG1haW4gQ2hhbmdlTG9nKS4KClRodSBBdWcgIDEgMDc6MjA6MjggMTk5NiAgQXJub2xkIEQuIFJvYmJpbnMgIDxhcm5vbGRAc2tlZXZlLmF0bC5nYS51cz4KCgkqIE1ha2VmaWxlLmluIChjbGVhbik6IHJlbW92ZSBvdXRbMTIzXSBmaWxlcyBmcm9tIGBtZXNzYWdlcycgdGVzdC4KCSAgVGhhbmtzIHRvIFBhdCBSYW5raW4gKHJhbmtpbkBlcWwuY2FsdGVjaC5lZHUpLgoKU2F0IEp1bCAyNyAyMzo1Njo1NyAxOTk2ICBBcm5vbGQgRC4gUm9iYmlucyAgPGFybm9sZEBza2VldmUuYXRsLmdhLnVzPgoKCSogTWFrZWZpbGUuaW4gKHBydDFldmFsKTogbmV3IHRlc3QgY2FzZS4KCSogcHJ0MWV2YWwuYXdrLCBwcnQxZXZhbC5vazogbmV3IGZpbGVzLgoKTW9uIEp1bCAyMiAyMjowNjoxMCAxOTk2ICBBcm5vbGQgRC4gUm9iYmlucyAgPGFybm9sZEBza2VldmUuYXRsLmdhLnVzPgoKCSogTWFrZWZpbGUuaW4gKGVvZnNwbGl0KTogbmV3IHRlc3QgY2FzZS4KCSogZW9mc3BsaXQuYXdrLCBlb2ZzcGxpdC5vazogbmV3IGZpbGVzLgoKU3VuIEp1bCAxNCAwNzowNzo0NSAxOTk2ICBBcm5vbGQgRC4gUm9iYmlucyAgPGFybm9sZEBza2VldmUuYXRsLmdhLnVzPgoKCSogTWFrZWZpbGUuaW4gKGZsZGNoZ25mKTogbmV3IHRlc3QgY2FzZS4KCSogZmxkY2hnbmYuYXdrLCBmbGRjaGduZi5vazogbmV3IGZpbGVzLgoKVHVlIE1heSAyMSAyMzoyMzoyMiAxOTk2ICBBcm5vbGQgRC4gUm9iYmlucyAgPGFybm9sZEBza2VldmUuYXRsLmdhLnVzPgoKCSogTWFrZWZpbGUuaW4gKHN1YnN0cik6IG5ldyB0ZXN0IGNhc2UuCgkqIHN1YnN0ci5hd2ssIHN1YnN0ci5vazogbmV3IGZpbGVzLgoKVHVlIE1heSAxNCAxNTowNToyMyAxOTk2ICBBcm5vbGQgRC4gUm9iYmlucyAgPGFybm9sZEBza2VldmUuYXRsLmdhLnVzPgoKCSogTWFrZWZpbGUuaW4gKGR5bmxqKTogbmV3IHRlc3QgY2FzZS4KCSogZHlubGouYXdrLCBkeW5sai5vazogbmV3IGZpbGVzLgoKU3VuIE1heSAxMiAyMDo0NTozNCAxOTk2ICBBcm5vbGQgRC4gUm9iYmlucyAgPGFybm9sZEBza2VldmUuYXRsLmdhLnVzPgoKCSogTWFrZWZpbGUuaW4gKGZuYXJyYXkpOiBuZXcgdGVzdCBjYXNlLgoJKiBmbmFycmF5LmF3aywgZm5hcnJheS5vazogbmV3IGZpbGVzLgoKRnJpIE1hciAxNSAwNjo0Njo0OCAxOTk2ICBBcm5vbGQgRC4gUm9iYmlucyAgPGFybm9sZEBza2VldmUuYXRsLmdhLnVzPgoKCSogTWFrZWZpbGUuaW4gKGNsZWFuKTogYWRkZWQgYCp+JyB0byBsaXN0IG9mIGZpbGVzIHRvIGJlIHJlbW92ZWQuCgkqIHR3ZWFrZmxkLmF3ayAoRU5EKTogYWRkZWQgdG8gZG8gY2xlYW4gdXAgYWN0aW9uLgoKVGh1IE1hciAxNCAxNjo0MTozMiAxOTk2ICBBcm5vbGQgRC4gUm9iYmlucyAgPGFybm9sZEBza2VldmUuYXRsLmdhLnVzPgoKCSogTWFrZWZpbGUuaW4gKG1tYXA4ayk6IG5ldyB0ZXN0IGNhc2UuCgkqIG1tYXA4ay5pbiwgbW1hcDhrLm9rOiBuZXcgZmlsZXMuCgpTdW4gTWFyIDEwIDIyOjU4OjM1IDE5OTYgIEFybm9sZCBELiBSb2JiaW5zICA8YXJub2xkQHNrZWV2ZS5hdGwuZ2EudXM+CgoJKiBNYWtlZmlsZS5pbiAoY2xzZmxuYW0pOiBuZXcgdGVzdCBjYXNlLgoJKiBjbHNmbG5hbS5pbiwgY2xzZmxuYW0uYXdrLCBjbHNmbG5hbS5vazogbmV3IGZpbGVzLgoJKiB0d2Vha2ZsZC5hd2s6IGNoYW5nZWQgdG8gaGF2ZSBhIGZpeGVkIGRhdGUuCgpUaHUgTWFyICA3IDA5OjU2OjA5IDE5OTYgIEFybm9sZCBELiBSb2JiaW5zICA8YXJub2xkQHNrZWV2ZS5hdGwuZ2EudXM+CgoJKiBNYWtlZmlsZS5pbiAodHdlYWtmbGQpOiBuZXcgdGVzdCBjYXNlLgoJKiB0d2Vha2ZsZC5pbiwgdHdlYWtmbGQuYXdrLCB0d2Vha2ZsZC5vazogbmV3IGZpbGVzLgoKU3VuIE1hciAgMyAwNjo1MToyNiAxOTk2ICBBcm5vbGQgRC4gUm9iYmlucyAgPGFybm9sZEBza2VldmUuYXRsLmdhLnVzPgoKCSogTWFrZWZpbGUuaW4gKGdldGxuaGQsIGJhY2tnc3ViKSA6IG5ldyB0ZXN0IGNhc2VzLgoJKiBnZXRsbmhkLmF3aywgZ2V0bG5oZC5vazogbmV3IGZpbGVzLgoJKiBiYWNrZ3N1Yi5pbiwgYmFja2dzdWIuYXdrLCBiYWNrZ3N1Yi5vazogbmV3IGZpbGVzLgoKTW9uIEZlYiAyNiAyMjozMDowMiAxOTk2ICBBcm5vbGQgRC4gUm9iYmlucyAgPGFybm9sZEBza2VldmUuYXRsLmdhLnVzPgoKCSogTWFrZWZpbGUuaW4gKHNwcmludGZjKTogbmV3IHRlc3QgY2FzZS4KCSogc3ByaW50ZmMuaW4sIHNwcmludGZjLmF3aywgc3ByaW50ZmMub2s6IG5ldyBmaWxlcy4KCSogZ2Vuc3ViLmF3azogdXBkYXRlZCBmb3IgY2FzZSBvZiBubyBtYXRjaCBvZiByZWdleC4KCldlZCBKYW4gMjQgMTA6MDY6MTYgMTk5NiAgQXJub2xkIEQuIFJvYmJpbnMgIDxhcm5vbGRAc2tlZXZlLmF0bC5nYS51cz4KCgkqIE1ha2VmaWxlLmluIChkaXN0Y2xlYW4sIG1haW50YWluZXItY2xlYW4pOiBuZXcgdGFyZ2V0cy4KCSAgKHJlaW5kb3BzKTogYWRkZWQgdGVzdCBmcm9tIFJpY2sgQWRhbXMgKHJpY2tAdXVuZXQudXUubmV0KS4KCSAgKGFycmF5cGFybSwgcGFyYW1kdXAsIGRlZnJlZiwgc3RyZnRpbWUsIHBybWFyc2NsLCBzY2xmb3JpbiwKCSAgc2NsaWZpbik6IEZpeCBmcm9tIExhcnJ5IFNjaHdpbW1lciAoc2Nod2ltQGN5Y2xvbmUuc3RhbmZvcmQuZWR1KQoJICBzbyB0aGF0IHRlc3RzIHRoYXQgYXJlIHN1cHBvc2VkIHRvIGZhaWwgdXNlIGAuLi4gfHwgZXhpdCAwJyB0bwoJICBjYXVzZSBhIGNsZWFuIGBtYWtlIGNsZWFuJy4KCldlZCBKYW4gMTAgMjI6NTg6NTUgMTk5NiAgQXJub2xkIEQuIFJvYmJpbnMgIDxhcm5vbGRAc2tlZXZlLmF0bC5nYS51cz4KCgkqIENoYW5nZUxvZyBjcmVhdGVkLgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGJlZWJlL3ByaW50ZmxvYXQuYXdrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDAwMjQ3NwAwNTUxMTE0NDM1MwAwMTQzNDEAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIyBUZXN0IHByb2dyYW0gZm9yIGNoZWNraW5nIHNwcmludGYgb3BlcmF0aW9uIHdpdGggdmFyaW91cyBmbG9hdGluZwojIHBvaW50IGZvcm1hdHMKIwojIFdhdGNoIG91dCAtIGZ1bGwgb3V0cHV0IG9mIHRoaXMgcHJvZ3JhbSB3aWxsIGhhdmUgMzAwMCAqIHRvdCBsaW5lcywKIyB3aGljaCB3aWxsIHRha2UgYSBjaHVuayBvZiBzcGFjZSBpZiB5b3Ugd2lsbCB3cml0ZSBpdCB0byB5b3VyIGRpc2suCiMgLS1tagoKQkVHSU4gewogICAganVzdCA9ICItIgogICAgcGx1cyA9ICIrICIKICAgIGFsdCAgPSAiIyIKICAgIHplcm8gPSAiMCIKICAgIHNwZWMgPSAiZmVFZ0ciCiAgICBmd1sxXSA9ICIiCiAgICBmd1syXSA9ICIxIgogICAgZndbM10gPSAiNSIKICAgIGZ3WzRdID0gIjEwIgogICAgZndbNV0gPSAiMTUiCiAgICBwcmVjWzFdID0gIi4tMSIKICAgIHByZWNbMl0gPSAiIgogICAgcHJlY1szXSA9ICIuMiIKICAgIHByZWNbNF0gPSAiLjUiCiAgICBwcmVjWzVdID0gIi4xMCIKCiAgICBudW0gPSAxMjMuNgogICAgZmFjdG9yID0gMS4wZS0xMgogICAgdG90ID0gOAogICAgZGF0YVsxXSA9IDAKICAgIGRhdGFbMl0gPSAxCiAgICBmb3IgKGkgPSAzOyBpIDw9IHRvdDsgaSsrKSB7CglkYXRhW2ldID0gbnVtICogZmFjdG9yCglmYWN0b3IgKj0gMTAwMAogICAgfQoKICAgIGZvciAoaiA9IDE7IGogPD0gMjsgaisrKSB7Cglmb3IgKHAgPSAxOyBwIDw9IDM7IHArKykgewoJICAgIGZvciAoYSA9IDE7IGEgPD0gMjsgYSsrKSB7CgkJZm9yICh6ID0gMTsgeiA8PSAyOyB6KyspIHsKCQkgICAgZm9yIChzID0gMTsgcyA8PSA1OyBzKyspIHsKCQkJZm9yICh3ID0gMTsgdyA8PSA1OyB3KyspIHsKCQkJICAgIGZvciAociA9IDE7IHIgPD0gNTsgcisrKSB7CgkJCQlmcm10ID0gInwlIiBzdWJzdHIoanVzdCwgaiwgMSkKCQkJCWZybXQgPSBmcm10IHN1YnN0cihwbHVzLCBwLCAxKQoJCQkJZnJtdCA9IGZybXQgc3Vic3RyKGFs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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMS4yIDIuMgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABiZWViZS9jbG9iYmVyLm9rAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAxNzUwADAwMDE3NTAAMDAwMDAwMDAwMDYAMDYzNDUzMTUwMTMAMDEzMzc3ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDgwMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg1MDQyOTYgNzYxODU4NAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYmVlYmUvZmxkY2hnbmYuYXdrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NDQAMDAwMTc1MAAwMDAxNzUwADAwMDAwMDAwMDUzADA2MjU0MTUyMDczADAxMzcyMQAgMAAAAAAAAAAAAAAA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cmludGYgIlRlc3QgIzQ6ICIKCWlmIChiID09IGUpIHByaW50ICJcIiIgZSAiXCIiICIgY29tcGFyZXMgYXMgYSBudW1iZXIiCgllbHNlIHByaW50ICJcIiIgZSAiXCIiICIgY29tcGFyZXMgYXMgYSBzdHJpbmciCgoJZiA9IGEgKyBiICsgYyArIGQgKyBlCglwcmludCAiYWZ0ZXIgYWRkaXRpb24iCgoJcHJpbnRmICJUZXN0ICM1OiAiCglpZiAoYiA9PSBhKSBwcmludCAiXCIiIGEgIlwiIiAiIGNvbXBhcmVzIGFzIGEgbnVtYmVyIgoJZWxzZSBwcmludCAiXCIiIGEgIlwiIiAiIGNvbXBhcmVzIGFzIGEgc3RyaW5nIgoKCXByaW50ZiAiVGVzdCAjNjogIgoJaWYgKGIgPT0gYykgcHJpbnQgIlwiIiBjICJcIiIgIiBjb21wYXJlcyBhcyBhIG51bWJlciIKCWVsc2UgcHJpbnQgIlwiIiBjICJcIiIgIiBjb21wYXJlcyBhcyBhIHN0cmluZyIKCglwcmludGYgIlRlc3QgIzc6ICIKCWlmIChiID09IGQpIHByaW50ICJcIiIgZCAiXCIiICIgY29tcGFyZXMgYXMgYSBudW1iZXIiCgllbHNlIHByaW50ICJcIiIgZCAiXCIiICIgY29tcGFyZXMgYXMgYSBzdHJpbmciCgoJcHJpbnRmICJUZXN0ICM4OiAiCglpZiAoYiA9PSBlKSBwcmludCAiXCIiIGUgIlwiIiAiIGNvbXBhcmVzIGFzIGEgbnVtYmVyIgoJZWxzZSBwcmludCAiXCIiIGUgIlwiIiAiIGNvbXBhcmVzIGFzIGEgc3RyaW5nIgoKCXByaW50ZiAiVGVzdCAjOTogIgoJaWYgKCIzZTUiID4gIjUiKSBwcmludCAiXCIzZTVcIiA+IFwiNVwiIgoJZWxzZSBwcmludCAiXCIzZTVcIiA8PSBcIjVcIiIKCglwcmludGYgIlRlc3QgIzEwOiAiCgl4ID0gMzIuMTQKCXlbeF0gPSAidGVzdCIKCU9GTVQgPSAiJWUiCglwcmludCB5W3hdCgoJcHJpbnRmICJUZXN0ICMxMTogIgoJeCA9IHggKyAwCglwcmludCB5W3hdCgoJcHJpbnRmICJUZXN0ICMxMjogIgoJ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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGJlZWJlL25hc3R5Lm9rAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDAwMTcwMwAwNjYxNTY0NDY1MQAwMTMxNDcAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIzMTIz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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYThiCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABiZWViZS9pZ25jZnMub2sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAxNzUwADAwMDE3NTAAMDAwMDAwMDAwNjMAMDU0NjExMDA1MzcAMDEzMjQ0ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGJlZWJlL2xpdG9jdC5hd2sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDAwMDA2NwAwNjAxMzc0MzA3MgAwMTM0NDcAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAxNzUwADAwMDE3NTAAMDAwMDAwMDAwMDEAMDYwMTM0MjMwMTAAMDEzMDY2ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYmVlYmUvc3Vic3RyLmF3awAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NDQAMDAwMTc1MAAwMDAxNzUwADAwMDAwMDAwNTE2ADA2MzQ1MzE0Nzc3ADAxMzUxMAAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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ICAgIHZhbHVlWzRdID0gMTIuNjc4OwogICAgdmFsdWVbNV0gPSAxMi42Nzg7CiAgICB2YWx1ZVs2XSA9ICJ6YXAiOwogICAgdmFsdWVbN10gPSAiKiI7CiAgICB2YWx1ZVs4XSA9IC0zLjQ1Njc7CiAgICB2YWx1ZVs5XSA9IC0zLjQ1Njc7CiAgICB2YWx1ZVsxMF09IC0zLjQ1Njc7CiAgICB2YWx1ZVsxMV09IC0zLjQ1Njc7CiAgICBvcGVyWzBdICA9ICI1ZCI7CiAgICBvcGVyWzFdICA9ICI1byI7CiAgICBvcGVyWzJdICA9ICI1eCI7CiAgICBvcGVyWzNdICA9ICI3LjJmIjsKICAgIG9wZXJbNF0gID0gIjEwLjJlIjsKICAgIG9wZXJbNV0gID0gIjEwLjRnIjsKICAgIG9wZXJbNl0gID0gIjVzIjsKICAgIG9wZXJbN10gID0gIjVjIjsKICAgIG9wZXJbOF0gID0gIjcuMUciOwogICAgb3Blcls5XSAgPSAiNy4yZiI7CiAgICBvcGVyWzEwXSA9ICIxMC4yZSI7CiAgICBvcGVyWzExXSA9ICIxMC40ZyI7CgogICAgCiAgICBmb3IgKHIgPSAwOyByIDwgMTI7IHIgKz0gNikgewoJZm9yIChqID0gMjsgaiA+IDA7IC0taikgewoJICAgIGZvciAocCA9IDI7IHAgPiAwOyAtLXApIHsKCQlmb3IgKHMgPSAyOyBzID4gMDsgLS1zKSB7CgkJICAgIGZvciAoYSA9IDI7IGEgPiAwOyAtLWEpIHsKCQkJZm9yICh6ID0gMjsgeiA+IDA7IC0teikgewoJCQkgICAgZm10ID0gIiUiIHN1YnN0cihqdXN0LGosMSkgc3Vic3RyKHBsdXMscCwxKSBcCgkJCSAgICAgIHN1YnN0cihzcGMscywxKSBzdWJzdHIoYWx0LGEsMSkgc3Vic3RyKHplcm8seiwxKTsKCQkJICAgIGZzdHIgPSBzcHJpbnRmKFwKCQkJCSAgICAgIiU2c3wlcyVzfCVzJXN8JXMlc3wlcyVzfCVzJXN8JXMlc3xcbiIsCgkJCQkJICAgZm10LCAKCQkJCQkgICBmbXQsIG9wZXJbcl0sCgkJCQkJICAgZm10LCBvcGVyW3IrMV0sCgkJCQkJICAgZm10LCBv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OTg5LCAxOTkxLTE5OTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgojIAojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyAKIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3LCBVU0EuCiMgYmFzaCQgZ2RiIGdhd2sKIyBHREIgaXMgZnJlZSBzb2Z0d2FyZSBhbmQgeW91IGFyZSB3ZWxjb21lIHRvIGRpc3RyaWJ1dGUgY29waWVzIG9mIGl0CiMgIHVuZGVyIGNlcnRhaW4gY29uZGl0aW9uczsgdHlwZSAic2hvdyBjb3B5aW5nIiB0byBzZWUgdGhlIGNvbmRpdGlvbnMuCiMgVGhlcmUgaXMgYWJzb2x1dGVseSBubyB3YXJyYW50eSBmb3IgR0RCOyB0eXBlICJzaG93IHdhcnJhbnR5IiBmb3IgZGV0YWlscy4KIyBHREIgNC4xMyAoaTM4Ni11bmtub3duLWZyZWVic2QpLCAKIyBDb3B5cmlnaHQgMTk5NCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4uLgojIChnZGIpIHNoZWxsIGVjaG8gMDAwODAwID4vdG1wL3NlcQojIChnZGIpIHIgJ3sgcHJpbnRmICIlMDZkIiwgJDEgKyAxID4iL3RtcC9zZXEiOyBwcmludGYgIiUwNmQiLCAkMSArIDEgfShnZGIpIHIgJ3sgcHJpbnRmICIlMDZkIiwgJDEgKyAxID4iL3RtcC9zZXEiOyBwcmludGYgIiUwNmQiLCAkMSArIDEgfScgL3RtcC9zZXEKIyBTdGFydGluZyBwcm9ncmFtOiAvc2NyYXRjaC9hcmNoaXZlL3NyYy9jbWQvZ251YXdrLTMuMC4yL2dhd2sgJ3sgcHJpbnRmICIlMDZkIiwgJDEgKyAxID4iL3RtcC9zZXEiOyBwcmludGYgIiUwNmQiLCAkMSArIDEgfScgL3RtcC9zZXEKIyAKIyBQcm9ncmFtIHJlY2VpdmVkIHNpZ25hbCBTSUdCVVMsIEJ1cyBlcnJvci4KIyAweGQ4NmYgaW4gZGVmX3BhcnNlX2ZpZWxkICh1cF90bz0xLCBidWY9MHgzNzcwNCwgbGVuPTYsIGZzPTB4M2IyNDAsIHJwPTB4MCwgCiMgICAgIHNldD0weGNlNmMgPHNldF9maWVsZD4sIG49MHgwKSBhdCBmaWVsZC5jOjM5MQojIDM5MQkJc2F2ID0gKmVuZDsKIyAoZ2RiKSBidAojICMwICAweGQ4NmYgaW4gZGVmX3BhcnNlX2ZpZWxkICh1cF90bz0xLCBidWY9MHgzNzcwNCwgbGVuPTYsIGZzPTB4M2IyNDAsIAojICAgICBycD0weDAsIHNldD0weGNlNmMgPHNldF9maWVsZD4sIG49MHgwKSBhdCBmaWVsZC5jOjM5MQojICMxICAweGRkYjEgaW4gZ2V0X2ZpZWxkIChyZXF1ZXN0ZWQ9MSwgYXNzaWduPTB4MCkgYXQgZmllbGQuYzo2NjkKIyAjMiAgMHhjMjVkIGluIHJfZ2V0X2xocyAocHRyPTB4M2I5YjQsIGFzc2lnbj0weDApIGF0IGV2YWwuYzoxMzM5CiMgIzMgIDB4OWFiMCBpbiByX3RyZWVfZXZhbCAodHJlZT0weDNiOWI0LCBpc2NvbmQ9MCkgYXQgZXZhbC5jOjYwNAojICM0ICAweGE1ZjEgaW4gcl90cmVlX2V2YWwgKHRyZWU9MHgzYjlmYywgaXNjb25kPTApIGF0IGV2YWwuYzo3NDUKIyAjNSAgMHg0NjYxIGluIGZvcm1hdF90cmVlIChmbXRfc3RyaW5nPTB4M2UwNDAgIiUwNmQiLCBuMD0wLCBjYXJnPTB4M2JhMjApCiMgICAgIGF0IGJ1aWx0aW4uYzo2MjAKIyAjNiAgMHg1YmViIGluIGRvX3NwcmludGYgKHRyZWU9MHgzYjk2YykgYXQgYnVpbHRpbi5jOjgwOQojICM3ICAweDVjZDUgaW4gZG9fcHJpbnRmICh0cmVlPTB4M2JhOGMpIGF0IGJ1aWx0aW4uYzo4NDQKIyAjOCAgMHg5MjcxIGluIGludGVycHJldCAodHJlZT0weDNiYThjKSBhdCBldmFsLmM6NDY1CiMgIzkgIDB4OGNhMyBpbiBpbnRlcnByZXQgKHRyZWU9MHgzYmJkMCkgYXQgZXZhbC5jOjMwOAojICMxMCAweDhjMzQgaW4gaW50ZXJwcmV0ICh0cmVlPTB4M2JjMTgpIGF0IGV2YWwuYzoyOTIKIyAjMTEgMHhmMDY5IGluIGRvX2lucHV0ICgpIGF0IGlvLmM6MzEyCiMgIzEyIDB4MTJiYTkgaW4gbWFpbiAoYXJnYz0zLCBhcmd2PTB4ZWZiZmQ1MzgpIGF0IG1haW4uYzozOTMKIyAoZ2RiKSBsCiMgMzg2CQkJKmJ1ZiArPSBsZW47CiMgMzg3CQkJcmV0dXJuIG5mOwojIDM4OAkJfQojIDM4OQkKIyAzOTAJCS8qIGJlZm9yZSBkb2luZyBhbnl0aGluZyBzYXZlIHRoZSBjaGFyIGF0ICplbmQgKi8KIyAzOTEJCXNhdiA9ICplbmQ7CiMgMzkyCQkvKiBiZWNhdXNlIGl0IHdpbGwgYmUgZGVzdHJveWVkIG5vdzogKi8KIyAzOTMJCiMgMzk0CQkqZW5kID0gJyAn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AAAAADAwMDA2NDQAMDAwMTc1MAAwMDAxNzUwADAwMDAwMDAwMDA0ADA2MjU0MTUyMTA3ADAxMzY0NQAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0CjUKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGEgYgpjIGQKZSAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYmVlYmUvcHJ0MWV2YWwuYXdrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NDQAMDAwMTc1MAAwMDAxNzUwADAwMDAwMDAwMTIxADA2MjU0MTUyMTAzADAxMzY3MgAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGJlZWJlL251bXN1YnN0ci5hd2sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDAwMDAzNQAwNjAzMjIwNTI1MwAwMTQyMDEAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeyBwcmludCBzdWJzdHIoMTAwMCskMSwgMikgfQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABiZWViZS9kZWxhcnBybS5vawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAxNzUwADAwMDE3NTAAMDAwMDAwMDAwMDAAMDYzNDUzMTUwMTEAMDEzNTY1ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGJlZWJlL2NoaWxkaW4ub2sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDAwMDAwMwAwNjAxNDQ2MjMzMwAwMTMzNzcAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaGkKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABiZWViZS9nbnVyZW9wcy5hd2sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAxNzUwADAwMDE3NTAAMDAwMDAwMDI3NzEAMDYwNDQwNDUzMDYAMDE0MDE2ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMgdGVzdCB0aGUgZ251IHJlZ2V4cCBvcHMKCkJFR0lOIHsKCWlmICgiYSByYXQgaXMgaGVyZSIgfiAvXHlyYXQvKQlwcmludCAidGVzdCAgMSBvayAoXFx5KSIKCWVsc2UJCQkJcHJpbnQgInRlc3QgIDEgZmFpbGVkIChcXHkpIgoJaWYgKCJhIHJhdCBpcyBoZXJlIiB+IC9yYXRceS8pCXByaW50ICJ0ZXN0ICAyIG9rIChcXHkpIgoJZWxzZQkJCQlwcmludCAidGVzdCAgMiBmYWlsZWQgKFxceSkiCglpZiAoIndoYXQgYSBicmF0IiAhfiAvXHlyYXQvKQlwcmludCAidGVzdCAgMyBvayAoXFx5KSIKCWVsc2UJCQkJcHJpbnQgInRlc3QgIDMgZmFpbGVkIChcXHkpIgoKCWlmICgiaW4gdGhlIGNyYXRlIiB+IC9cQnJhdC8pCXByaW50ICJ0ZXN0ICA0IG9rIChcXEIpIgoJZWxzZQkJCQlwcmludCAidGVzdCAgNCBmYWlsZWQgKFxcQikiCglpZiAoImEgcmF0IiAhfiAvXEJyYXQvKQlwcmludCAidGVzdCAgNSBvayAoXFxCKSIKCWVsc2UJCQkJcHJpbnQgInRlc3QgIDUgZmFpbGVkIChcXEIpIgoKCWlmICgiYSB3b3JkIiB+IC9cPHdvcmQvKQlwcmludCAidGVzdCAgNiBvayAoXFw8KSIKCWVsc2UJCQkJcHJpbnQgInRlc3QgIDYgZmFpbGVkIChcXDwpIgoJaWYgKCJmb3Jld29yZCIgIX4gL1w8d29yZC8pCXByaW50ICJ0ZXN0ICA3IG9rIChcXDwpIgoJZWxzZQkJCQlwcmludCAidGVzdCAgNyBmYWlsZWQgKFxcPCkiCgoJaWYgKCJhIHdvcmQiIH4gL3dvcmRcPi8pCXByaW50ICJ0ZXN0ICA4IG9rIChcXD4pIgoJZWxzZQkJCQlwcmludCAidGVzdCAgOCBmYWlsZWQgKFxcXFw+KSIKCWlmICgid29yZHkiICF+IC93b3JkXD4vKQlwcmludCAidGVzdCAgOSBvayAoXFw+KSIKCWVsc2UJCQkJcHJpbnQgInRlc3QgIDkgZmFpbGVkIChcXD4pIgoKCWlmICgiYSIgfiAvXHcvKQkJcHJpbnQgInRlc3QgMTAgb2sgKFxcdykiCgllbHNlCQkJCXByaW50ICJ0ZXN0IDEwIGZhaWxlZCAoXFxcXHcpIgoJaWYgKCIrIiAhfiAvXHcvKQkJ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ZDogZnJvbSBsaW5jLmNpcy51cGVubi5lZHUgYnkgZ251LWxpZmUuYWkubWl0LmVkdSAoOC44LjUvOC42LjEyR05VKSB3aXRoCiMgICAgICAgICAgIEVTTVRQIGlkIFFBQTI0MzUwIGZvciA8YnVnLWdudS11dGlsc0BwcmVwLmFpLm1pdC5lZHU+OyBUdWUsIDI1IE1hcgojICAgICAgICAgICAxOTk3IDE2OjU2OjU5IC0wNTAwIChFU1QpCiMgUmVjZWl2ZWQ6IGZyb20gdW5hZ2kuY2lzLnVwZW5uLmVkdSAoVU5BR0kuQ0lTLlVQRU5OLkVEVSBbMTU4LjEzMC44LjE1M10pIGJ5CiMgICAgICAgICAgIGxpbmMuY2lzLnVwZW5uLmVkdSAoOC44LjUvOC44LjUpIHdpdGggRVNNVFAgaWQgUUFBMDk0MjQ7IFR1ZSwgMjUgTWFyCiMgICAgICAgICAgIDE5OTcgMTY6NTY6NTQgLTA1MDAgKEVTVCkKIyBSZWNlaXZlZDogKGZyb20gc2phbmV0QGxvY2FsaG9zdCkgYnkgdW5hZ2kuY2lzLnVwZW5uLmVkdSAoOC44LjUvOC44LjUpIGlkCiMgICAgICAgICAgIFFBQTAzOTY5OyBUdWUsIDI1IE1hciAxOTk3IDE2OjU2OjUwIC0wNTAwIChFU1QpCiMgRGF0ZTogVHVlLCAyNSBNYXIgMTk5NyAxNjo1Njo1MCAtMDUwMCAoRVNUKQojIEZyb206IFN0YW4gSmFuZXQgPHNqYW5ldEB1bmFnaS5jaXMudXBlbm4uZWR1PgojIE1lc3NhZ2UtSUQ6IDwxOTk3MDMyNTIxNTYuUUFBMDM5NjlAdW5hZ2kuY2lzLnVwZW5uLmVkdT4KIyBUbzogYnVnLWdudS11dGlsc0BwcmVwLmFpLm1pdC5lZHUKIyBDQzogYXJub2xkQGdudS5haS5taXQuZWR1CiMgU3ViamVjdDogR05VIGF3ayAzLjAuMiBidWc6IGZhdGFsIGVycm9yIGRlbGV0aW5nIGxvY2FsIGFycmF5IGluc2lkZSBmdW5jdGlvbgojIFN0YXR1czogT1JmCiMgCiMgVmVyc2lvbjogR05VIEF3ayAzLjAuMgojIFBsYXRmb3JtczogU3VuT1MgNC4xLjEgKGNvbXBpbGVkIHdpdGggU3VuIGNjKQojICAgICAgICAgICAgSVJJWCA1LjMgKGNvbXBpbGVkIHdpdGggU0dJIGNjKQojIFByb2JsZW06IERlbGV0aW5nIGxvY2FsIGFycmF5IGluc2lkZSBmdW5jdGlvbiBjYXVzZXMgZmF0YWwgaW50ZXJuYWwgZXJyb3IgKGFuZAojIAljb3JlIGR1bXAuIFRoZSBlcnJvciBkb2VzIG5vdCBvY2N1ciB3aGVuIHRoZSB2YXJpYWJsZSAieCIsIHVudXNlZCBpbgojIAl0aGUgZXhhbXBsZSwgaXMgcmVtb3ZlZCBvciB3aGVuIHRoZSBmdW5jdGlvbiBpcyBkZWNsYXJlZCBmb28oeCxwKS4KIyAJV2hlbiB0aGUgZnVuY3Rpb24gaXMgZGVjbGFyZWQgZm9vKHAseCksIGFkZGluZyBhIGR1bW15IGxpbmUgdGhhdCB1c2VzCiMgCSJ4IiwgZS5nLiAieD0xIiBkb2VzIG5vdCBwcmV2ZW50IHRoZSBlcnJvci4gSWYgInAiIGlzIG5vdCBkZWxldGVkLAojIAl0aGVyZSBpcyBubyBlcnJvci4gSWYgInBbMV0iIGlzIHVzZWQgdG8gZGVsZXRlIHRoZSBsb25lIGVsZW1lbnQsIHRoZXJlCiMgCWlzIG5vIGVycm9yLgojIAojID09PT0gVGhlIHByb2dyYW0geC5nYXdrID09PT0KCmZ1bmN0aW9uIGZvbyhwLHgpIHsKCXBbMV09ImJhciIKCWRlbGV0ZSBwCglyZXR1cm4gMAp9CgpCRUdJTiB7Cglmb28oKQp9CgojID09PT0gVGhlIG91dHB1dCBmb3IgImdhd2sgLWYgeC5nYXdrIiAoU3VuT1MpID09PT0KIyAKIyBnYXdrOiB4Lmdhd2s6NDogZmF0YWwgZXJyb3I6IGludGVybmFsIGVycm9yCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYmVlYmUvcnN3aGl0ZS5hd2sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NDQAMDAwMTc1MAAwMDAxNzUwADAwMDAwMDAwMDUzADA2MDEzNzcyMDA1ADAxMzYyNwAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABCRUdJTiB7IFJTID0gIiIgfQp7IHByaW50ZigiPCVzPlxuIiwgJDApIH0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGJlZWJlL29mbXQub2sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDAwMDIzMgAwNjM2MzUzMTU1NQAwMTI3NTAAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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dDFldmFsLm9rAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDAwMDAwMgAwNjI1NDE1MjEwMwAwMTM1MTcAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABiZWViZS9zdHJmdGxuZy5vawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAxNzUwADAwMDE3NTAAMDAwMDAwMDIwMjQAMDYzNDUzMTQ3NzcAMDEzNjU0ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCjAxLzAxLzcwIDAwOjAwOjAwCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgIGEgYgpjIGQKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABiZWViZS9ubGZsZHNlcC5vawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAxNzUwADAwMDE3NTAAMDAwMDAwMDAwMTEAMDU0NjExMDA1MzcAMDEzNDA3ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAKMQowIDEKCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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c2l0eSBvZiBVdGFoCiMjIyAgICAgICAgICAgICAgICAgICAgICAgIFNhbHQgTGFrZSBDaXR5LCBVVCA4NDExMgojIyMgICAgICAgICAgICAgICAgICAgICAgICBVU0EiLAojIyMgICAgIHRlbGVwaG9uZSAgICAgICA9ICIrMSA4MDEgNTgxIDUyNTQiLAojIyMgICAgIEZBWCAgICAgICAgICAgICA9ICIrMSA4MDEgNTgxIDQxNDgiLAojIyMgICAgIFVSTCAgICAgICAgICAgICA9ICJodHRwOi8vd3d3Lm1hdGgudXRhaC5lZHUvfmJlZWJlIiwKIyMjICAgICBjaGVja3N1bSAgICAgICAgPSAiMjUwOTIgOTc3IDMzNTcgMjY0OTMiLAojIyMgICAgIGVtYWlsICAgICAgICAgICA9ICJiZWViZUBtYXRoLnV0YWguZWR1IChJbnRlcm5ldCkiLAojIyMgICAgIGNvZGV0YWJsZSAgICAgICA9ICJJU08vQVNDSUkiLAojIyMgICAgIGtleXdvcmRzICAgICAgICA9ICJCaWJUZVgsIGJpYmxpb2dyYXBoeSwgSFRNTCwgam91cm5hbCB0YWJsZSBvZgojIyMgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50cyIsCiMjIyAgICAgc3VwcG9ydGVkICAgICAgID0gInllcyIsCiMjIyAgICAgZG9jc3RyaW5nICAgICAgID0gIkNyZWF0ZSBhIGpvdXJuYWwgY292ZXIgdGFibGUgb2YgY29udGVudHMgZnJvbQojIyMgICAgICAgICAgICAgICAgICAgICAgICA8YXQ+QXJ0aWNsZXsuLi59IGVudHJpZXMgaW4gYSBqb3VybmFsIEJpYlRlWAojIyMgICAgICAgICAgICAgICAgICAgICAgICAuYmliIGZpbGUgZm9yIGNoZWNraW5nIHRoZSBiaWJsaW9ncmFwaHkKIyMjICAgICAgICAgICAgICAgICAgICAgICAgZGF0YWJhc2UgYWdhaW5zdCB0aGUgYWN0dWFsIGpvdXJuYWwgY292ZXJzLgojIyMgICAgICAgICAgICAgICAgICAgICAgICBUaGUgb3V0cHV0IGNhbiBiZSBlaXRoZXIgcGxhaW4gdGV4dCwgb3IgSFRNTC4KIyMjCiMjIyAgICAgICAgICAgICAgICAgICAgICAgIFVzYWdlOgojIyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmliY2xlYW4gLW1heC13aWR0aCAwIEJpYlRlWC1maWxlKHMpIHwgXAojIyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpYnNvcnQgLWJ5dm9sdW1lIHwgXAojIyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3ayAtZiBqb3VybmFsLXRvYy5hd2sgXAojIyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbLXYgSFRNTD1ubm5dIFstdiBJTkRFTlQ9bm5uXSBcCiMjIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFstdiBCSUJGSUxFVVJMPXVybF0gPmZvby50b2MKIyMjCiMjIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBpZiB0aGUgYmlibGlvZ3JhcGh5IGlzIGFscmVhZHkgc29ydGVkCiMjIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBieSB2b2x1bWUsCiMjIwojIyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmliY2xlYW4gLW1heC13aWR0aCAwIEJpYlRlWC1maWxlKHMpIHwgXAojIyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3ayAtZiBqb3VybmFsLXRvYy5hd2sgXAojIyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbLXYgSFRNTD1ubm5dIFstdiBJTkRFTlQ9bm5uXSBcCiMjIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFstdiBCSUJGSUxFVVJMPXVybF0gPmZvby50b2MKIyMjCiMjIyAgICAgICAgICAgICAgICAgICAgICAgIEEgbm9uLXplcm8gdmFsdWUgb2YgdGhlIGNvbW1hbmQtbGluZSBvcHRpb24sCiMjIyAgICAgICAgICAgICAgICAgICAgICAgIEhUTUw9bm5uLCByZXN1bHRzIGluIEhUTUwgb3V0cHV0IGluc3RlYWQgb2YKIyMjICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGRlZmF1bHQgcGxhaW4gQVNDSUkgdGV4dCAoY29ycmVzcG9uZGluZwojIyMgICAgICAgICAgICAgICAgICAgICAgICB0byBIVE1MPTApLiAgVGhlCiMjIwojIyMgICAgICAgICAgICAgICAgICAgICAgICBUaGUgSU5ERU5UPW5ubiBjb21tYW5kLWxpbmUgb3B0aW9uIHNwZWNpZmllcwojIyMgICAgICAgICAgICAgICAgICAgICAgICB0aGUgbnVtYmVyIG9mIGJsYW5rcyB0byBpbmRlbnQgZWFjaCBsb2dpY2FsCiMjIyAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsIG9mIEhUTUwuICBUaGUgZGVmYXVsdCBpcyBJTkRFTlQ9NC4KIyMjICAgICAgICAgICAgICAgICAgICAgICAgSU5ERU5UPTAgc3VwcHJlc3NlcyBpbmRlbnRhdGlvbi4gIFRoZSBJTkRFTlQKIyMjICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uIGhhcyBubyBlZmZlY3Qgd2hlbiB0aGUgZGVmYXVsdCBIVE1MPTAKIyMjICAgICAgICAgICAgICAgICAgICAgICAgKHBsYWluIHRleHQgb3V0cHV0KSBvcHRpb24gaXMgaW4gZWZmZWN0LgojIyMKIyMjICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiBIVE1MIG91dHB1dCBpcyBzZWxlY3RlZCwgdGhlCiMjIyAgICAgICAgICAgICAgICAgICAgICAgIEJJQkZJTEVVUkw9dXJsIGNvbW1hbmQtbGluZSBvcHRpb24gcHJvdmlkZXMgYQojIyMgICAgICAgICAgICAgICAgICAgICAgICB3YXkgdG8gcmVxdWVzdCBoeXBlcnRleHQgbGlua3MgZnJvbSB0YWJsZSBvZgojIyMgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50cyBwYWdlIG51bWJlcnMgdG8gdGhlIGNvbXBsZXRlIEJpYlRlWAojIyMgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeSBmb3IgdGhlIGFydGljbGUuICBUaGVzZSBsaW5rcyBhcmUKIyMjICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZCBieSBhcHBlbmRpbmcgYSBzaGFycCAoIykgYW5kIHRoZQojIyMgICAgICAgICAgICAgICAgICAgICAgICBjaXRhdGlvbiBsYWJlbCB0byB0aGUgQklCRklMRVVSTCB2YWx1ZSwgd2hpY2gKIyMjICAgICAgICAgICAgICAgICAgICAgICAgY29uZm9ybXMgd2l0aCB0aGUgcHJhY3RpY2Ugb2YKIyMjICAgICAgICAgICAgICAgICAgICAgICAgYmlidGV4LXRvLWh0bWwuYXdrLgojIyMKIyMjICAgICAgICAgICAgICAgICAgICAgICAgVGhlIEhUTUwgb3V0cHV0IGZvcm0gbWF5IGJlIHVzZWZ1bCBhcyBhIG1vcmUKIyMjICAgICAgICAgICAgICAgICAgICAgICAgY29tcGFjdCByZXByZXNlbnRhdGlvbiBvZiBqb3VybmFsIGFydGljbGUKIyMjICAgICAgICAgICAgICAgICAgICAgICAgYmlibGlvZ3JhcGh5IGRhdGEgdGhhbiB0aGUgb3JpZ2luYWwgQmliVGVYCiMjIyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUgcHJvdmlkZXMuICBPZiBjb3Vyc2UsIHRoZQojIyMgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZS1vZi1jb250ZW50cyBmb3JtYXQgcHJvdmlkZXMgbGVzcwojIyMgICAgICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiwgYW5kIGlzIGNvbnNpZGVyYWJseSBtb3JlCiMjIyAgICAgICAgICAgICAgICAgICAgICAgIHRyb3VibGVzb21lIGZvciBhIGNvbXB1dGVyIHByb2dyYW0gdG8gcGFyc2UuCiMjIwojIyMgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIFVSTCBrZXkgdmFsdWVzIGFyZSBwcm92aWRlZCwgdGhleSB3aWxsCiMjIyAgICAgICAgICAgICAgICAgICAgICAgIGJlIHVzZWQgdG8gY3JlYXRlIGh5cGVydGV4dCBsaW5rcyBhcm91bmQKIyMjICAgICAgICAgICAgICAgICAgICAgICAgYXJ0aWNsZSB0aXRsZXMuICBUaGlzIHN1cHBvcnRzIGpvdXJuYWxzIHRoYXQKIyMjICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmlkZSBhcnRpY2xlIGNvbnRlbnRzIG9uIHRoZSBXb3JsZC1XaWRlCiMjIyAgICAgICAgICAgICAgICAgICAgICAgIFdlYi4KIyMjCiMjIyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBwYXJzaW5nIHNpbXBsaWNpdHksIHRoaXMgcHJvZ3JhbSByZXF1aXJlcwojIyMgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IEJpYlRlWAojIyMKIyMjICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSA9ICJ2YWx1ZSIKIyMjCiMjIyAgICAgICAgICAgICAgICAgICAgICAgIGFuZAojIyMKIyMjICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBTdHJpbmd7bmFtZSA9ICJ2YWx1ZSJ9CiMjIwojIyMgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpY2F0aW9ucyBiZSBlbnRpcmVseSBjb250YWluZWQgb24KIyMjICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlIGxpbmVzLCB3aGljaCBpcyByZWFkaWx5IHByb3ZpZGVkIGJ5CiMjIyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBgYmliY2xlYW4gLW1heC13aWR0aCAwJyBmaWx0ZXIuICBJdCBhbHNvCiMjIyAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVzIHRoYXQgYmlibGlvZ3JhcGh5IGVudHJpZXMgYmVnaW4gYW5kCiMjIyAgICAgICAgICAgICAgICAgICAgICAgIGVuZCBhdCB0aGUgc3RhcnQgb2YgYSBsaW5lLCBhbmQgdGhhdAojIyMgICAgICAgICAgICAgICAgICAgICAgICBxdW90YXRpb24gbWFya3MsIHJhdGhlciB0aGFuIGJhbGFuY2VkIGJyYWNlcywKIyMjICAgICAgICAgICAgICAgICAgICAgICAgZGVsaW1pdCBzdHJpbmcgdmFsdWVzLiAgVGhpcyBpcyBhCiMjIyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlbnRpb25hbCBmb3JtYXQgdGhhdCBhZ2FpbiBjYW4gYmUKIyMjICAgICAgICAgICAgICAgICAgICAgICAgZ3VhcmFudGVlZCBieSBiaWJjbGVhbi4KIyMjCiMjIyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcHJvZ3JhbSByZXF1aXJlcyBgbmV3JyBhd2ssIGFzIGRlc2NyaWJlZAojIyMgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgYm9vawojIyMKIyMjICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsZnJlZCBWLiBBaG8sIEJyaWFuIFcuIEtlcm5pZ2hhbiwgYW5kCiMjIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQZXRlciBKLiBXZWluYmVyZ2VyLAojIyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBUaGUgQVdLIFByb2dyYW1taW5nIExhbmd1YWdlJycsCiMjIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRpc29uLVdlc2xleSAoMTk4OCksIElTQk4KIyMjICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAtMjAxLTA3OTgxLVgsCiMjIwojIyMgICAgICAgICAgICAgICAgICAgICAgICBzdWNoIGFzIHByb3ZpZGVkIGJ5IHByb2dyYW1zIG5hbWVkIChHTlUpCiMjIyAgICAgICAgICAgICAgICAgICAgICAgIGdhd2ssIG5hd2ssIGFuZCByZWNlbnQgQVQmVCBhd2suCiMjIwojIyMgICAgICAgICAgICAgICAgICAgICAgICBUaGUgY2hlY2tzdW0gZmllbGQgYWJvdmUgY29udGFpbnMgYSBDUkMtMTYKIyMjICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tzdW0gYXMgdGhlIGZpcnN0IHZhbHVlLCBmb2xsb3dlZCBieSB0aGUKIyMjICAgICAgICAgICAgICAgICAgICAgICAgZXF1aXZhbGVudCBvZiB0aGUgc3RhbmRhcmQgVU5JWCB3YyAod29yZAojIyMgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCkgdXRpbGl0eSBvdXRwdXQgb2YgbGluZXMsIHdvcmRzLCBhbmQKIyMjICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVycy4gIFRoaXMgaXMgcHJvZHVjZWQgYnkgUm9iZXJ0CiMjIyAgICAgICAgICAgICAgICAgICAgICAgIFNvbG92YXkncyBjaGVja3N1bSB1dGlsaXR5LiIsCiMjIyAgfQojIyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCkJFR0lOCQkJCQkJeyBpbml0aWFsaXplKCkgfQoKL14gKkAgKltTc11bVHRdW1JyXVtJaV1bTm5dW0dnXSAqey8JCXsgZG9fU3RyaW5nKCk7IG5leHQgfQoKL14gKkAgKltQcF1bUnJdW0VlXVtBYV1bTW1dW0JiXVtMbF1bRWVdLwl7IG5leHQgfQoKL14gKkAgKltBYV1bUnJdW1R0XVtJaV1bQ2NdW0xsXVtFZV0vCQl7IGRvX0FydGljbGUoKTsgbmV4dCB9CgovXiAqQC8JCQkJCQl7IGRvX090aGVyKCk7IG5leHQgfQoKL14gKmF1dGhvciAqPSAqXCIvIAkJCQl7IGRvX2F1dGhvcigpOyBuZXh0IH0KCi9eICpqb3VybmFsICo9ICovCQkJCXsgZG9fam91cm5hbCgpOyBuZXh0IH0KCi9eICp2b2x1bWUgKj0gKlwiLwkJCQl7IGRvX3ZvbHVtZSgpOyBuZXh0IH0KCi9eICpudW1iZXIgKj0gKlwiLwkJCQl7IGRvX251bWJlcigpOyBuZXh0IH0KCi9eICp5ZWFyICo9ICpcIi8JCQkJeyBkb195ZWFyKCk7IG5leHQgfQoKL14gKm1vbnRoICo9ICovCQkJCQl7IGRvX21vbnRoKCk7IG5leHQgfQoKL14gKnRpdGxlICo9ICpcIi8JCQkJeyBkb190aXRsZSgpOyBuZXh0IH0KCi9eICpwYWdlcyAqPSAqXCIvCQkJCXsgZG9fcGFnZXMoKTsgbmV4dCB9CgovXiAqVVJMICo9ICpcIi8JCQkJCXsgZG9fVVJMKCk7IG5leHQgfQoKL14gKn0gKiQvCQkJCQl7IGlmIChJbl9BcnRpY2xlKSBkb19lbmRfZW50cnkoKTsgbmV4dCB9CgpFTkQJCQkJCQl7IHRlcm1pbmF0ZSgpIH0KCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBOQjogVGhlIHByb2dyYW1taW5nIGNvbnZlbnRpb25zIGZvciB2YXJpYWJsZXMgaW4gdGhpcyBwcm9ncmFtIGFyZTogICAjCiMJVVBQRVJDQVNFCQlnbG9iYWwgY29uc3RhbnRzIGFuZCB1c2VyIG9wdGlvbnMgICAgICAjCiMJSW5pdGlhbHVwcGVyY2FzZQlnbG9iYWwgdmFyaWFibGVzICAgICAgICAgICAgICAgICAgICAgICAjCiMJbG93ZXJjYXNlCQlsb2NhbCB2YXJpYWJsZXMgICAgICAgICAgICAgICAgICAgICAgICAjCiMgQW55IGRldmlhdGlvbiBpcyBhbiBlcnJvciEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCgpmdW5jdGlvbiBkb19BcnRpY2xlKCkKewoJSW5fQXJ0aWNsZSA9IDEKCglDaXRhdGlvbl9sYWJlbCA9ICQwCglzdWIoL15bXlx7XSp7LywiIixDaXRhdGlvbl9sYWJlbCkKCXN1YigvICosICokLywiIixDaXRhdGlvbl9sYWJlbCkKCglBdXRob3IgPSAiIgogICAgICAgIFRpdGxlID0gIiIKICAgICAgICBKb3VybmFsID0gIiIKICAgICAgICBWb2x1bWUgPSAiIgogICAgICAgIE51bWJlciA9ICIiCiAgICAgICAgTW9udGggPSAiIgogICAgICAgIFllYXIgPSAiIgogICAgICAgIFBhZ2VzID0gIiIKICAgICAgICBVcmwgPSAiIgp9CgoKZnVuY3Rpb24gZG9fYXV0aG9yKCkKewoJQXV0aG9yID0gVGVYX3RvX0hUTUwoZ2V0X3ZhbHVlKCQwKSkKfQoKCmZ1bmN0aW9uIGRvX2VuZF9lbnRyeSggayxuLHBhcnRzKQp7CgluID0gc3BsaXQoQXV0aG9yLHBhcnRzLCIgYW5kICIpCglpZiAoTGFzdF9udW1iZXIgIT0gTnVtYmVyKQoJCWRvX25ld19pc3N1ZSgpCglmb3IgKGsgPSAxOyBrIDwgbjsgKytrKQoJCXByaW50X3RvY19saW5lKHBhcnRzW2tdICIgYW5kIiwgIiIsICIiKQoJVGl0bGVfcHJlZml4ID0gaHRtbF9iZWdpbl90aXRsZSgpCglUaXRsZV9zdWZmaXggPSBodG1sX2VuZF90aXRsZSgpCglpZiAoaHRtbF9sZW5ndGgoVGl0bGUpIDw9IChNQVhfVElUTEVfQ0hBUlMgKyBNSU5fTEVBREVSUykpICMgY29tcGxldGUgdGl0bGUgZml0cyBvbiBsaW5lCgkJcHJpbnRfdG9jX2xpbmUocGFydHNbbl0sIFRpdGxlLCBodG1sX2JlZ2luX3BhZ2VzKCkgUGFnZXMgaHRtbF9lbmRfcGFnZXMoKSkKCWVsc2UJCQkjIG5lZWQgdG8gc3BsaXQgbG9uZyB0aXRsZSBvdmVyIG11bHRpcGxlIGxpbmVzCgkJZG9fbG9uZ190aXRsZShwYXJ0c1tuXSwgVGl0bGUsIGh0bWxfYmVnaW5fcGFnZXMoKSBQYWdlcyBodG1sX2VuZF9wYWdlcygpKQp9CgoKZnVuY3Rpb24gZG9fam91cm5hbCgpCnsKCWlmICgkMCB+IC9bPV0gKiIvKQkjIGhhdmUgam91cm5hbCA9ICJxdW90ZWQgam91cm5hbCBuYW1lIiwKCQlKb3VybmFsID0gZ2V0X3ZhbHVlKCQwKQoJZWxzZQkJCSMgaGF2ZSBqb3VybmFsID0gam91cm5hbC1hYmJyZXZpYXRpb24sCgl7CiAgICAgICAgCUpvdXJuYWwgPSBnZXRfYWJicmV2KCQwKQoJCWlmIChKb3VybmFsIGluIFN0cmluZykgIyByZXBsYWNlIGFiYnJldiBieSBpdHMgZXhwYW5zaW9uCgkJCUpvdXJuYWwgPSBTdHJpbmdbSm91cm5hbF0KCX0KCWdzdWIoL1xcLS8sIiIsSm91cm5hbCkJIyByZW1vdmUgZGlzY3JldGlvbmFyeSBoeXBoZW5zCn0KCgpmdW5jdGlvbiBkb19sb25nX3RpdGxlKGF1dGhvcix0aXRsZSxwYWdlcywgbGFzdF90aXRsZSxuKQp7Cgl0aXRsZSA9IHRyaW0odGl0bGUpCQkJIyBkaXNjYXJkIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHNwYWNlCgl3aGlsZSAobGVuZ3RoKHRpdGxlKSA+IDApCgl7CgkJbiA9IGh0bWxfYnJlYWtwb2ludCh0aXRsZSxNQVhfVElUTEVfQ0hBUlMrTUlOX0xFQURFUlMpCgkJbGFzdF90aXRsZSA9IHN1YnN0cih0aXRsZSwxLG4pCgkJdGl0bGUgPSBzdWJzdHIodGl0bGUsbisxKQoJCXN1YigvXiArLywiIix0aXRsZSkJCSMgZGlzY2FyZCBhbnkgbGVhZGluZyBzcGFjZQoJCXByaW50X3RvY19saW5lKGF1dGhvciwgbGFzdF90aXRsZSwgKGxlbmd0aCh0aXRsZSkgPT0gMCkgPyBwYWdlcyA6ICIiKQoJCWF1dGhvciA9ICIiCgl9Cn0KCgpmdW5jdGlvbiBkb19tb250aCggayxuLHBhcnRzKQp7CglNb250aCA9ICgkMCB+IC9bPV0gKiIvKSA/IGdldF92YWx1ZSgkMCkgOiBnZXRfYWJicmV2KCQwKQoJZ3N1YigvW1wiXS8sIiIsTW9udGgpCglnc3ViKC8gKiMgKlxcc2xhc2ggKiMgKi8sIiAvICIsTW9udGgpCglnc3ViKC8gKiMgKi0rICojICovLCIgLyAiLE1vbnRoKQoJbiA9IHNwbGl0KE1vbnRoLHBhcnRzLCIgKi8gKiIpCglNb250aCA9ICIiCglmb3IgKGsgPSAxOyBrIDw9IG47ICsraykKCQlNb250aCA9IE1vbnRoICgoayA+IDEpID8gIiAvICIgOiAiIikgXAoJCQkoKHBhcnRzW2tdIGluIE1vbnRoX2V4cGFuc2lvbikgPyBNb250aF9leHBhbnNpb25bcGFydHNba11dIDogcGFydHNba10pCn0KCgpmdW5jdGlvbiBkb19uZXdfaXNzdWUoKQp7CglMYXN0X251bWJlciA9IE51bWJlcgoJaWYgKEhUTUwpCgl7CgkJaWYgKExhc3Rfdm9sdW1lICE9IFZvbHVtZSkKCQl7CgkJCUxhc3Rfdm9sdW1lID0gVm9sdW1lCgkJCXByaW50X2xpbmUocHJlZml4KDIpICI8QlI+IikKCQl9CgkJaHRtbF9lbmRfdG9jKCkKCQlodG1sX2JlZ2luX2lzc3VlKCkKCQlwcmludF9saW5lKHByZWZpeCgyKSBKb3VybmFsICI8QlI+IikKCX0KCWVsc2UKCXsKCQlwcmludF9saW5lKCIiKQoJCXByaW50X2xpbmUoSm91cm5hbCkKCX0KCglwcmludF9saW5lKHN0cmlwX2h0bWwodm9sX25vX21vbnRoX3llYXIoKSkpCgoJaWYgKEhUTUwpCgl7CgkJaHRtbF9lbmRfaXNzdWUoKQoJCWh0bWxfdG9jX2VudHJ5KCkKCQlodG1sX2JlZ2luX3RvYygpCgl9CgllbHNlCgkJcHJpbnRfbGluZSgiIikKfQoKCmZ1bmN0aW9uIGRvX251bWJlcigpCnsKCU51bWJlciA9IGdldF92YWx1ZSgkMCkKfQoKCmZ1bmN0aW9uIGRvX090aGVyKCkKewoJSW5fQXJ0aWNsZSA9IDAKfQoKCmZ1bmN0aW9uIGRvX3BhZ2VzKCkKewoJUGFnZXMgPSBnZXRfdmFsdWUoJDApCglzdWIoLy0tWz9dWz9dLywiIixQYWdlcykKfQoKCmZ1bmN0aW9uIGRvX1N0cmluZygpCnsKCXN1YigvXlteXHtdKlx7LywiIiwkMCkJIyBkaXNjYXJkIHVwIHRvIGFuZCBpbmNsdWRpbmcgb3BlbiBicmFjZQoJc3ViKC9cfSAqJC8sIiIsJDApCSMgZGlzY2FyZCBmcm9tIG9wdGlvbmFsIHdoaXRlc3BhY2UgYW5kIHRyYWlsaW5nIGJyYWNlIHRvIGVuZCBvZiBsaW5lCglTdHJpbmdbZ2V0X2tleSgkMCldID0gZ2V0X3ZhbHVlKCQwKQp9CgoKZnVuY3Rpb24gZG9fdGl0bGUoKQp7CglUaXRsZSA9IFRlWF90b19IVE1MKGdldF92YWx1ZSgkMCkpCn0KCgpmdW5jdGlvbiBkb19VUkwoIHBhcnRzKQp7CglVcmwgPSBnZXRfdmFsdWUoJDApCglzcGxpdChVcmwscGFydHMsIlssO10iKQkJCSMgaW4gY2FzZSB3ZSBoYXZlIG11bHRpcGxlIFVSTHMKCVVybCA9IHRyaW0ocGFydHNbMV0pCn0KCgpmdW5jdGlvbiBkb192b2x1bWUoKQp7CglWb2x1bWUgPSBnZXRfdmFsdWUoJDApCn0KCgpmdW5jdGlvbiBkb195ZWFyKCkKewoJWWVhciA9IGdldF92YWx1ZSgkMCkKfQoKCmZ1bmN0aW9uIGdldF9hYmJyZXYocykKewkjIHJldHVybiBhYmJyZXYgZnJvbSBgYGtleSA9IGFiYnJldiwnJwoJc3ViKC9eW149XSo9ICovLCIiLHMpCSMgZGlzY2FyZCB0ZXh0IHVwIHRvIHN0YXJ0IG9mIG5vbi1ibGFuayB2YWx1ZQoJc3ViKC8gKiw/ICokLywiIixzKQkjIGRpc2NhcmQgdHJhaWxpbmcgb3B0aW9uYWwgd2hpdHNwYWNlLCBxdW90ZSwKCQkJCSMgb3B0aW9uYWwgY29tbWEsIGFuZCBvcHRpb25hbCBzcGFjZQoJcmV0dXJuIChzKQp9CgoKZnVuY3Rpb24gZ2V0X2tleShzKQp7CSMgcmV0dXJuIGtheSBmcm9tIGBga2V5ID0gInZhbHVlIiwnJwoJc3ViKC9eICovLCIiLHMpCQkjIGRpc2NhcmQgbGVhZGluZyBzcGFjZQoJc3ViKC8gKj0uKiQvLCIiLHMpCSMgZGlzY2FyZCBldmVydGhpbmcgYWZ0ZXIga2V5CgoJcmV0dXJuIChzKQp9CgoKZnVuY3Rpb24gZ2V0X3ZhbHVlKHMpCnsJIyByZXR1cm4gdmFsdWUgZnJvbSBgYGtleSA9ICJ2YWx1ZSIsJycKCXN1YigvXlteXCJdKlwiICovLCIiLHMpCSMgZGlzY2FyZCB0ZXh0IHVwIHRvIHN0YXJ0IG9mIG5vbi1ibGFuayB2YWx1ZQoJc3ViKC8gKlwiLD8gKiQvLCIiLHMpCSMgZGlzY2FyZCB0cmFpbGluZyBvcHRpb25hbCB3aGl0c3BhY2UsIHF1b3RlLAoJCQkJIyBvcHRpb25hbCBjb21tYSwgYW5kIG9wdGlvbmFsIHNwYWNlCglyZXR1cm4gKHMpCn0KCgpmdW5jdGlvbiBodG1sX2FjY2VudHMocykKewoJaWYgKGluZGV4KHMsIlxcIikgPiAwKQkJCSMgaW1wb3J0YW50IG9wdGltaXphdGlvbgoJewoJCSMgQ29udmVydCBjb21tb24gbG93ZXItY2FzZSBhY2NlbnRlZCBsZXR0ZXJzIGFjY29yZGluZyB0byB0aGUKCQkjIHRhYmxlIG9uIHAuIDE2OSBvZiBpbiBQZXRlciBGbHlubidzIGBgVGhlIFdvcmxkIFdpZGUgV2ViCgkJIyBIYW5kYm9vaycnLCBJbnRlcm5hdGlvbmFsIFRob21zb24gQ29tcHV0ZXIgUHJlc3MsIDE5OTUsIElTQk4KCQkjIDEtODUwMzItMjA1LTguICBUaGUgb2ZmaWNpYWwgdGFibGUgb2YgSVNPIExhdGluIDEgU0dNTAoJCSMgZW50aXRpZXMgdXNlZCBpbiBIVE1MIGNhbiBiZSBmb3VuZCBpbiB0aGUgZmlsZQoJCSMgL3Vzci9sb2NhbC9saWIvaHRtbC1jaGVjay9saWIvSVNPbGF0MS5zZ21sICh5b3VyIHBhdGgKCQkjIG1heSBkaWZmZXIpLgoKCQlnc3ViKC97XFxcYX0vLAkiXFwmYWdyYXZlOyIsCXMpCgkJZ3N1Yigve1xcJ2F9LywJIlxcJmFhY3V0ZTsiLAlzKQoJCWdzdWIoL3tcXFtcXl1hfS8sIlxcJmFjaXJjOyIsCXMpCgkJZ3N1Yigve1xcfmF9LywJIlxcJmF0aWxkZTsiLAlzKQoJCWdzdWIoL3tcXFwiYX0vLAkiXFwmYXVtbDsiLAlzKQoJCWdzdWIoL3tcXGFhfS8sCSJcXCZhcmluZzsiLAlzKQoJCWdzdWIoL3tcXGFlfS8sCSJcXCZhZWxpZzsiLAlzKQoKCQlnc3ViKC97XFxje2N9fS8sIlxcJmNjZWRpbDsiLAlzKQoKCQlnc3ViKC97XFxcZX0vLAkiXFwmZWdyYXZlOyIsCXMpCgkJZ3N1Yigve1xcJ2V9LywJIlxcJmVhY3V0ZTsiLAlzKQoJCWdzdWIoL3tcXFtcXl1lfS8sIlxcJmVjaXJjOyIsCXMpCgkJZ3N1Yigve1xcXCJlfS8sCSJcXCZldW1sOyIsCXMpCgoJCWdzdWIoL3tcXFxpfS8sCSJcXCZpZ3JhdmU7IiwJcykKCQlnc3ViKC97XFwnaX0vLAkiXFwmaWFjdXRlOyIsCXMpCgkJZ3N1Yigve1xcW1xeXWl9LywiXFwmaWNpcmM7IiwJcykKCQlnc3ViKC97XFxcIml9LywJIlxcJml1bWw7IiwJcykKCgkJIyBpZ25vcmUgZXRoIGFuZCB0aG9ybgoKCQlnc3ViKC97XFx+bn0vLAkiXFwmbnRpbGRlOyIsCXMpCgoJCWdzdWIoL3tcXFxvfS8sCSJcXCZvZ3JhdmU7IiwJcykKCQlnc3ViKC97XFwnb30vLAkiXFwmb2FjdXRlOyIsCXMpCgkJZ3N1Yigve1xcW1xeXW99LywgIlxcJm9jaXJjOyIsCXMpCgkJZ3N1Yigve1xcfm99LywJIlxcJm90aWxkZTsiLAlzKQoJCWdzdWIoL3tcXFwib30vLAkiXFwmb3VtbDsiLAlzKQoJCWdzdWIoL3tcXG99LywJIlxcJm9zbGFzaDsiLAlzKQoKCQlnc3ViKC97XFxcdX0vLAkiXFwmdWdyYXZlOyIsCXMpCgkJZ3N1Yigve1xcJ3V9LywJIlxcJnVhY3V0ZTsiLAlzKQoJCWdzdWIoL3tcXFtcXl11fS8sIlxcJnVjaXJjOyIsCXMpCgkJZ3N1Yigve1xcXCJ1fS8sCSJcXCZ1dW1sOyIsCXMpCgoJCWdzdWIoL3tcXCd5fS8sCSJcXCZ5YWN1dGU7IiwJcykKCQlnc3ViKC97XFxcInl9LywJIlxcJnl1bWw7IiwJcykKCgkJIyBOb3cgZG8gdGhlIHNhbWUgZm9yIHVwcGVyLWNhc2UgYWNjZW50cwoKCQlnc3ViKC97XFxcQX0vLAkiXFwmQWdyYXZlOyIsCXMpCgkJZ3N1Yigve1xcJ0F9LywJIlxcJkFhY3V0ZTsiLAlzKQoJCWdzdWIoL3tcXFtcXl1BfS8sCSJcXCZBY2lyYzsiLAlzKQoJCWdzdWIoL3tcXH5BfS8sCSJcXCZBdGlsZGU7IiwJcykKCQlnc3ViKC97XFxcIkF9LywJIlxcJkF1bWw7IiwJcykKCQlnc3ViKC97XFxBQX0vLAkiXFwmQXJpbmc7IiwJcykKCQlnc3ViKC97XFxBRX0vLAkiXFwmQUVsaWc7IiwJcykKCgkJZ3N1Yigve1xcY3tDfX0vLCJcXCZDY2VkaWw7IiwJcykKCgkJZ3N1Yigve1xcXGV9LywJIlxcJkVncmF2ZTsiLAlzKQoJCWdzdWIoL3tcXCdFfS8sCSJcXCZFYWN1dGU7IiwJcykKCQlnc3ViKC97XFxbXF5dRX0vLAkiXFwmRWNpcmM7IiwJcykKCQlnc3ViKC97XFxcIkV9LywJIlxcJkV1bWw7IiwJcykKCgkJZ3N1Yigve1xcXEl9LywJIlxcJklncmF2ZTsiLAlzKQoJCWdzdWIoL3tcXCdJfS8sCSJcXCZJYWN1dGU7IiwJcykKCQlnc3ViKC97XFxbXF5dSX0vLAkiXFwmSWNpcmM7IiwJcykKCQlnc3ViKC97XFxcIkl9LywJIlxcJkl1bWw7IiwJcykKCgkJIyBpZ25vcmUgZXRoIGFuZCB0aG9ybgoKCQlnc3ViKC97XFx+Tn0vLAkiXFwmTnRpbGRlOyIsCXMpCgoJCWdzdWIoL3tcXFxPfS8sCSJcXCZPZ3JhdmU7IiwJcykKCQlnc3ViKC97XFwnT30vLAkiXFwmT2FjdXRlOyIsCXMpCgkJZ3N1Yigve1xcW1xeXU99LywJIlxcJk9jaXJjOyIsCXMpCgkJZ3N1Yigve1xcfk99LywJIlxcJk90aWxkZTsiLAlzKQoJCWdzdWIoL3tcXFwiT30vLAkiXFwmT3VtbDsiLAlzKQoJCWdzdWIoL3tcXE99LywJIlxcJk9zbGFzaDsiLAlzKQoKCQlnc3ViKC97XFxcVX0vLAkiXFwmVWdyYXZlOyIsCXMpCgkJZ3N1Yigve1xcJ1V9LywJIlxcJlVhY3V0ZTsiLAlzKQoJCWdzdWIoL3tcXFtcXl1VfS8sCSJcXCZVY2lyYzsiLAlzKQoJCWdzdWIoL3tcXFwiVX0vLAkiXFwmVXVtbDsiLAlzKQoKCQlnc3ViKC97XFwnWX0vLAkiXFwmWWFjdXRlOyIsCXMpCgoJCWdzdWIoL3tcXHNzfS8sCSJcXCZzemxpZzsiLAlzKQoKCQkjIE90aGVycyBub3QgbWVudGlvbmVkIGluIEZseW5uJ3MgYm9vawoJCWdzdWIoL3tcXCdcXGl9LywiXFwmaWFjdXRlOyIsCXMpCgkJZ3N1Yigve1xcJ1xcan0vLCJqIiwJCXMpCgl9CglyZXR1cm4gKHMpCn0KCgpmdW5jdGlvbiBodG1sX2JlZ2luX2lzc3VlKCkKewoJcHJpbnRfbGluZSgiIikKCXByaW50X2xpbmUocHJlZml4KDIpICI8SFI+IikKCXByaW50X2xpbmUoIiIpCglwcmludF9saW5lKHByZWZpeCgyKSAiPEgxPiIpCglwcmludF9saW5lKHByZWZpeCgzKSAiPEEgTkFNRT1cIiIgaHRtbF9sYWJlbCgpICJcIj4iKQp9CgoKZnVuY3Rpb24gaHRtbF9iZWdpbl9wYWdlcygpCnsKCXJldHVybiAoKEhUTUwgJiYgKEJJQkZJTEVVUkwgIT0gIiIpKSA/ICgiPEEgSFJFRj1cIiIgQklCRklMRVVSTCAiIyIgQ2l0YXRpb25fbGFiZWwgIlwiPiIpIDogIiIpCn0KCgpmdW5jdGlvbiBodG1sX2JlZ2luX3ByZSgpCnsKCUluX1BSRSA9IDEKCXByaW50X2xpbmUoIjxQUkU+IikKfQoKCmZ1bmN0aW9uIGh0bWxfYmVnaW5fdGl0bGUoKQp7CglyZXR1cm4gKChIVE1MICYmIChVcmwgIT0gIiIpKSA/ICgiPEEgSFJFRj1cIiIgVXJsICJcIj4iKSA6ICIiKQp9CgoKZnVuY3Rpb24gaHRtbF9iZWdpbl90b2MoKQp7CglodG1sX2VuZF90b2MoKQoJaHRtbF9iZWdpbl9wcmUoKQp9CgoKZnVuY3Rpb24gaHRtbF9ib2R5KCBrKQp7Cglmb3IgKGsgPSAxOyBrIDw9IEJvZHlMaW5lczsgKytrKQoJCXByaW50IEJvZHlba10KfQoKZnVuY3Rpb24gaHRtbF9icmVha3BvaW50KHRpdGxlLG1heGxlbmd0aCwgYnJlYWtfYWZ0ZXIsaykKewoJIyBSZXR1cm4gdGhlIGxhcmdlc3QgY2hhcmFjdGVyIHBvc2l0aW9uIGluIHRpdGxlIEFGVEVSIHdoaWNoIHdlCgkjIGNhbiBicmVhayB0aGUgdGl0bGUgYWNyb3NzIGxpbmVzLCB3aXRob3V0IGV4Y2VlZGluZyBtYXhsZW5ndGgKCSMgdmlzaWJsZSBjaGFyYWN0ZXJzLgoJaWYgKGh0bWxfbGVuZ3RoKHRpdGxlKSA+IG1heGxlbmd0aCkJIyB0aGVuIG5lZWQgdG8gc3BsaXQgdGl0bGUgYWNyb3NzIGxpbmVzCgl7CgkJIyBJbiB0aGUgcHJlc2VuY2Ugb2YgSFRNTCBtYXJrdXAsIHRoZSBpbml0aWFsaXphdGlvbiBvZgoJCSMgayBoZXJlIGlzIGNvbXBsaWNhdGVkLCBiZWNhdXNlIHdlIG5lZWQgdG8gYWR2YW5jZSBpdAoJCSMgdW50aWwgaHRtbF9sZW5ndGgodGl0bGUpIGlzIGF0IGxlYXN0IG1heGxlbmd0aCwKCQkjIHdpdGhvdXQgaW52b2tpbmcgdGhlIGV4cGVuc2l2ZSBodG1sX2xlbmd0aCgpIGZ1bmN0aW9uCgkJIyB0b28gZnJlcXVlbnRseS4gIFRoZSBuZWVkIHRvIHNwbGl0IHRoZSB0aXRsZSBtYWtlcyB0aGUKCQkjIGFsdGVybmF0aXZlIG9mIGRlbGF5ZWQgaW5zZXJ0aW9uIG9mIEhUTUwgbWFya3VwIG11Y2gKCQkjIG1vcmUgY29tcGxpY2F0ZWQuCgkJYnJlYWtfYWZ0ZXIgPSAwCgkJZm9yIChrID0gbWluKG1heGxlbmd0aCxsZW5ndGgodGl0bGUpKTsgayA8IGxlbmd0aCh0aXRsZSk7ICsraykKCQl7CgkJCWlmIChzdWJzdHIodGl0bGUsaysxLDEpID09ICIgIikKCQkJewkJIyBjb3VsZCBicmVhayBhZnRlciBwb3NpdGlvbiBrCgkJCQlpZiAoaHRtbF9sZW5ndGgoc3Vic3RyKHRpdGxlLDEsaykpIDw9IG1heGxlbmd0aCkKCQkJCQlicmVha19hZnRlciA9IGsKCQkJCWVsc2UJIyBhZHZhbmNlZCB0b28gZmFyLCByZXRyZWF0IGJhY2sgdG8gbGFzdCBicmVha19hZnRlcgoJCQkJCWJyZWFrCgkJCX0KCQl9CgkJaWYgKGJyZWFrX2FmdGVyID09IDApCQkjIG5vIGJyZWFrcG9pbnQgZm91bmQgYnkgZm9yd2FyZCBzY2FuCgkJewkJCQkjIHNvIHN3aXRjaCB0byBiYWNrd2FyZCBzY2FuCgkJCWZvciAoayA9IG1pbihtYXhsZW5ndGgsbGVuZ3RoKHRpdGxlKSkgLSAxOyBcCgkJCQkoayA+IDApICYmIChzdWJzdHIodGl0bGUsaysxLDEpICE9ICIgIik7IC0taykKCQkJCTsJCSMgZmluZCBzcGFjZSBhdCB3aGljaCB0byBicmVhayB0aXRsZQoJCQlpZiAoayA8IDEpCQkjIG5vIGJyZWFrIHBvaW50IGZvdW5kCgkJCQlrID0gbGVuZ3RoKHRpdGxlKSAjIHNvIG11c3QgcHJpbnQgZW50aXJlIHN0cmluZwoJCX0KCQllbHNlCgkJCWsgPSBicmVha19hZnRlcgoJfQoJZWxzZQkJCQkJIyB0aXRsZSBmaXRzIG9uIG9uZSBsaW5lCgkJayA9IGxlbmd0aCh0aXRsZSkKCXJldHVybiAoaykKfQoKCgpmdW5jdGlvbiBodG1sX2VuZF9pc3N1ZSgpCnsKCXByaW50X2xpbmUocHJlZml4KDMpICI8L0E+IikKCXByaW50X2xpbmUocHJlZml4KDIpICI8L0gxPiIpCn0KCgpmdW5jdGlvbiBodG1sX2VuZF9wYWdlcygpCnsKCXJldHVybiAoKEhUTUwgJiYgKEJJQkZJTEVVUkwgIT0gIiIpKSA/ICI8L0E+IiA6ICIiKQp9CgoKZnVuY3Rpb24gaHRtbF9lbmRfcHJlKCkKewoJaWYgKEluX1BSRSkKCXsKCQlwcmludF9saW5lKCI8L1BSRT4iKQoJCUluX1BSRSA9IDAKCX0KfQoKCmZ1bmN0aW9uIGh0bWxfZW5kX3RpdGxlKCkKewoJcmV0dXJuICgoSFRNTCAmJiAoVXJsICE9ICIiKSkgPyAiPC9BPiIgOiAiIikKfQoKCmZ1bmN0aW9uIGh0bWxfZW5kX3RvYygpCnsKCWh0bWxfZW5kX3ByZSgpCn0KCgpmdW5jdGlvbiBodG1sX2ZvbnRzKHMsIGFyZyxjb250cm9sX3dvcmQsayxsZXZlbCxuLG9wZW5fYnJhY2UpCnsKCW9wZW5fYnJhY2UgPSBpbmRleChzLCJ7IikKCWlmIChvcGVuX2JyYWNlID4gMCkJCQkjIGltcG9ydGFudCBvcHRpbWl6YXRpb24KCXsKCQlsZXZlbCA9IDEKCQlmb3IgKGsgPSBvcGVuX2JyYWNlICsgMTsgKGxldmVsICE9IDApICYmIChrIDw9IGxlbmd0aChzKSk7ICsraykKCQl7CgkJCWlmIChzdWJzdHIocyxrLDEpID09ICJ7IikKCQkJCWxldmVsKysKCQkJZWxzZSBpZiAoc3Vic3RyKHMsaywxKSA9PSAifSIpCgkJCQlsZXZlbC0tCgkJfQoKCQkjIHsuLi59IGlzIG5vdyBmb3VuZCBhdCBvcGVuX2JyYWNlIC4uLiAoay0xKQoJCWZvciAoY29udHJvbF93b3JkIGluIEZvbnRfZGVjbF9tYXApCSMgbG9vayBmb3Ige1x4eHggLi4ufQoJCXsKCQkJaWYgKHN1YnN0cihzLG9wZW5fYnJhY2UrMSxsZW5ndGgoY29udHJvbF93b3JkKSsxKSB+IFwKCQkJCSgiXFwiIGNvbnRyb2xfd29yZCAiW15BLVphLXpdIikpCgkJCXsKCQkJCW4gPSBvcGVuX2JyYWNlICsgMSArIGxlbmd0aChjb250cm9sX3dvcmQpCgkJCQlhcmcgPSB0cmltKHN1YnN0cihzLG4sayAtIG4pKQoJCQkJaWYgKEZvbnRfZGVjbF9tYXBbY29udHJvbF93b3JkXSA9PSAidG91cHBlciIpICMgYXJnIC0+IEFSRwoJCQkJCWFyZyA9IHRvdXBwZXIoYXJnKQoJCQkJZWxzZSBpZiAoRm9udF9kZWNsX21hcFtjb250cm9sX3dvcmRdICE9ICIiKSAjIGFyZyAtPiA8VEFHPmFyZzwvVEFHPgoJCQkJCWFyZyA9ICI8IiBGb250X2RlY2xfbWFwW2NvbnRyb2xfd29yZF0gIj4iIGFyZyAiPC8iIEZvbnRfZGVjbF9tYXBbY29udHJvbF93b3JkXSAiPiIKCQkJCXJldHVybiAoc3Vic3RyKHMsMSxvcGVuX2JyYWNlLTEpIGFyZyBodG1sX2ZvbnRzKHN1YnN0cihzLGspKSkKCQkJfQoJCX0KCQlmb3IgKGNvbnRyb2xfd29yZCBpbiBGb250X2NtZF9tYXApCSMgbG9vayBmb3IgXHh4eHsuLi59CgkJewoJCQlpZiAoc3Vic3RyKHMsb3Blbl9icmFjZSAtIGxlbmd0aChjb250cm9sX3dvcmQpLGxlbmd0aChjb250cm9sX3dvcmQpKSB+IFwKCQkJCSgiXFwiIGNvbnRyb2xfd29yZCkpCgkJCXsKCQkJCW4gPSBvcGVuX2JyYWNlICsgMQoJCQkJYXJnID0gdHJpbShzdWJzdHIocyxuLGsgLSBuKSkKCQkJCWlmIChGb250X2NtZF9tYXBbY29udHJvbF93b3JkXSA9PSAidG91cHBlciIpICMgYXJnIC0+IEFSRwoJCQkJCWFyZyA9IHRvdXBwZXIoYXJnKQoJCQkJZWxzZSBpZiAoRm9udF9jbWRfbWFwW2NvbnRyb2xfd29yZF0gIT0gIiIpICMgYXJnIC0+IDxUQUc+YXJnPC9UQUc+CgkJCQkJYXJnID0gIjwiIEZvbnRfY21kX21hcFtjb250cm9sX3dvcmRdICI+IiBhcmcgIjwvIiBGb250X2NtZF9tYXBbY29udHJvbF93b3JkXSAiPiIKCQkJCW4gPSBvcGVuX2JyYWNlIC0gbGVuZ3RoKGNvbnRyb2xfd29yZCkgLSAxCgkJCQlyZXR1cm4gKHN1YnN0cihzLDEsbikgYXJnIGh0bWxfZm9udHMoc3Vic3RyKHMsaykpKQoJCQl9CgkJfQoJfQoJcmV0dXJuIChzKQp9CgoKZnVuY3Rpb24gaHRtbF9oZWFkZXIoKQp7CglVU0VSID0gRU5WSVJPTlsiVVNFUiJdCglpZiAoVVNFUiA9PSAiIikKCSAgICBVU0VSID0gRU5WSVJPTlsiTE9HTkFNRSJdCglpZiAoVVNFUiA9PSAiIikKCSAgICBVU0VSID0gIj8/Pz8iCgkiaG9zdG5hbWUiIHwgZ2V0bGluZSBIT1NUTkFNRQoJImRhdGUiIHwgZ2V0bGluZSBEQVRFCgkoInlwY2F0IHBhc3N3ZCB8IGdyZXAgJ14iIFVTRVIgIjonIHwgYXdrIC1GOiAne3ByaW50ICQ1fSciKSB8IGdldGxpbmUgUEVSU09OQUxfTkFNRQoJaWYgKFBFUlNPTkFMX05BTUUgPT0gIiIpCgkgICAgKCJncmVwICAnXiIgVVNFUiAiOicgL2V0Yy9wYXNzd2QgfCBhd2sgLUY6ICd7cHJpbnQgJDV9JyIpIHwgZ2V0bGluZSBQRVJTT05BTF9OQU1FCgoKCXByaW50ICI8IS0tIFdBUk5JTkc6IERvIE5PVCBlZGl0IHRoaXMgZmlsZS4gIEl0IHdhcyBjb252ZXJ0ZWQgZnJvbSAtLT4iCglwcmludCAiPCEtLSBCaWJUZVggZm9ybWF0IHRvIEhUTUwgYnkgam91cm5hbC10b2MuYXdrIHZlcnNpb24gIiBWRVJTSU9OX05VTUJFUiAiICIgVkVSU0lPTl9EQVRFICIgLS0+IgoJcHJpbnQgIjwhLS0gb24gIiBEQVRFICIgLS0+IgoJcHJpbnQgIjwhLS0gZm9yICIgUEVSU09OQUxfTkFNRSAiICgiIFVTRVIgIkAiIEhPU1ROQU1FICIpIC0tPiIKCXByaW50ICIiCglwcmludCAiIgoJcHJpbnQgIjwhRE9DVFlQRSBIVE1MIHB1YmxpYyBcIi0vL0lFVEYvL0RURCBIVE1MLy9FTlwiPiIKCXByaW50ICIiCglwcmludCAiPEhUTUw+IgoJcHJpbnQgcHJlZml4KDEpICI8SEVBRD4iCglwcmludCBwcmVmaXgoMikgIjxUSVRMRT4iCglwcmludCBwcmVmaXgoMykgIEpvdXJuYWwKCXByaW50IHByZWZpeCgyKSAiPC9USVRMRT4iCglwcmludCBwcmVmaXgoMikgIjxMSU5LIFJFVj1cIm1hZGVcIiBIUkVGPVwibWFpbHRvOiIgVVNFUiAiQCIgSE9TVE5BTUUgIlwiPiIKCXByaW50IHByZWZpeCgxKSAiPC9IRUFEPiIKCXByaW50ICIiCglwcmludCBwcmVmaXgoMSkgIjxCT0RZPiIKfQoKCmZ1bmN0aW9uIGh0bWxfbGFiZWwoIGxhYmVsKQp7CglsYWJlbCA9IFZvbHVtZSAiKCIgTnVtYmVyICIpOiIgTW9udGggIjoiIFllYXIKCWdzdWIoL1teQS1aYS16MC05KCk6LDsuXC9cLV0vLCIiLGxhYmVsKQoJcmV0dXJuIChsYWJlbCkKfQoKCmZ1bmN0aW9uIGh0bWxfbGVuZ3RoKHMpCnsJIyBSZXR1cm4gdmlzaWJsZSBsZW5ndGggb2YgcywgaWdub3JpbmcgYW55IEhUTUwgbWFya3VwCglpZiAoSFRNTCkKCXsKCQlnc3ViKC88XC8/W14+XSo+LywiIixzKQkJIyByZW1vdmUgU0dNTCB0YWdzCgkJZ3N1YigvJltBLVphLXowLTldKzsvLCIiLHMpCSMgcmVtb3ZlIFNHTUwgZW50aXRpZXMKCX0KCXJldHVybiAobGVuZ3RoKHMpKQp9CgoKZnVuY3Rpb24gaHRtbF90b2MoKQp7CglwcmludCBwcmVmaXgoMikgIjxIMT4iCglwcmludCBwcmVmaXgoMykgIlRhYmxlIG9mIGNvbnRlbnRzIGZvciBpc3N1ZXMgb2YgIiBKb3VybmFsCglwcmludCBwcmVmaXgoMikgIjwvSDE+IgoJcHJpbnQgSFRNTF9UT0MKfQoKCmZ1bmN0aW9uIGh0bWxfdG9jX2VudHJ5KCkKewoJSFRNTF9UT0MgPSBIVE1MX1RPQyAiICAgICAgICA8QSBIUkVGPVwiIyIgaHRtbF9sYWJlbCgpICJcIj4iCglIVE1MX1RPQyA9IEhUTUxfVE9DIHZvbF9ub19tb250aF95ZWFyKCkKCUhUTUxfVE9DID0gSFRNTF9UT0MgIjwvQT48QlI+IiAiXG4iCn0KCgpmdW5jdGlvbiBodG1sX3RyYWlsZXIoKQp7CglodG1sX2VuZF9wcmUoKQoJcHJpbnQgcHJlZml4KDEpICI8L0JPRFk+IgoJcHJpbnQgIjwvSFRNTD4iCn0KCgpmdW5jdGlvbiBpbml0aWFsaXplKCkKewoJIyBOQjogVXBkYXRlIHRoZXNlIHdoZW4gdGhlIHByb2dyYW0gY2hhbmdlcwoJVkVSU0lPTl9EQVRFID0gIlswOS1PY3QtMTk5Nl0iCglWRVJTSU9OX05VTUJFUiA9ICIxLjAwIgoKCUhUTUwgPSAoSFRNTCA9PSAiIikgPyAwIDogKDAgKyBIVE1MKQoKCWlmIChJTkRFTlQgPT0gIiIpCgkJSU5ERU5UID0gNAoKCWlmIChIVE1MID09IDApCgkJSU5ERU5UID0gMAkjIGluZGVudGF0aW9uIHN1cHByZXNzZWQgaW4gQVNDSUkgbW9kZQoKCUxFQURFUlMgPSAiIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiIKCglNQVhfVElUTEVfQ0hBUlMgPSAzNgkjIDM2IHByb2R1Y2VzIGEgNzktY2hhciBvdXRwdXQgbGluZSB3aGVuIHRoZXJlIGlzCgkJCQkjIGp1c3QgYW4gaW5pdGlhbCBwYWdlIG51bWJlci4gIElmIHRoaXMgaXMKCQkJCSMgaW5jcmVhc2VkLCB0aGUgTEVBREVSUyBzdHJpbmcgbWF5IG5lZWQgdG8gYmUKCQkJCSMgbGVuZ3RoZW5lZC4KCglNSU5fTEVBREVSUyA9IDQJCSMgTWluaW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyBmcm9tIExFQURFUlMKCQkJCSMgcmVxdWlyZWQgd2hlbiBsZWFkZXJzIGFyZSB1c2VkLiAgVGhlIHRvdGFsCgkJCQkjIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRoYXQgY2FuIGFwcGVhciBpbiBhCgkJCQkjIHRpdGxlIGxpbmUgaXMgTUFYX1RJVExFX0NIQVJTICsgTUlOX0xFQURFUlMuCgkJCQkjIExlYWRlcnMgYXJlIG9taXR0ZWQgd2hlbiB0aGUgdGl0bGUgbGVuZ3RoIGlzCgkJCQkjIGJldHdlZW4gTUFYX1RJVExFX0NIQVJTIGFuZCB0aGlzIHN1bS4KCglNSU5fTEVBREVSU19TUEFDRSA9ICIgICAgICAgICIJIyBtdXN0IGJlIGF0IGxlYXN0IE1JTl9MRUFERVJTIGNoYXJhY3RlcnMgbG9uZwoKCU1vbnRoX2V4cGFuc2lvblsiamFuIl0JPSAiSmFudWFyeSIKCU1vbnRoX2V4cGFuc2lvblsiZmViIl0JPSAiRmVicnVhcnkiCglNb250aF9leHBhbnNpb25bIm1hciJdCT0gIk1hcmNoIgoJTW9udGhfZXhwYW5zaW9uWyJhcHIiXQk9ICJBcHJpbCIKCU1vbnRoX2V4cGFuc2lvblsibWF5Il0JPSAiTWF5IgoJTW9udGhfZXhwYW5zaW9uWyJqdW4iXQk9ICJKdW5lIgoJTW9udGhfZXhwYW5zaW9uWyJqdWwiXQk9ICJKdWx5IgoJTW9udGhfZXhwYW5zaW9uWyJhdWciXQk9ICJBdWd1c3QiCglNb250aF9leHBhbnNpb25bInNlcCJdCT0gIlNlcHRlbWJlciIKCU1vbnRoX2V4cGFuc2lvblsib2N0Il0JPSAiT2N0b2JlciIKCU1vbnRoX2V4cGFuc2lvblsibm92Il0JPSAiTm92ZW1iZXIiCglNb250aF9leHBhbnNpb25bImRlYyJdCT0gIkRlY2VtYmVyIgoKCUZvbnRfY21kX21hcFsiXFxlbXBoIl0JCT0gIkVNIgoJRm9udF9jbWRfbWFwWyJcXHRleHRiZiJdCT0gIkIiCglGb250X2NtZF9tYXBbIlxcdGV4dGl0Il0JPSAiSSIKCUZvbnRfY21kX21hcFsiXFx0ZXh0bWQiXQk9ICIiCglGb250X2NtZF9tYXBbIlxcdGV4dHJtIl0JPSAiIgoJRm9udF9jbWRfbWFwWyJcXHRleHRzYyJdCT0gInRvdXBwZXIiCglGb250X2NtZF9tYXBbIlxcdGV4dHNsIl0JPSAiSSIKCUZvbnRfY21kX21hcFsiXFx0ZXh0dHQiXQk9ICJ0IgoJRm9udF9jbWRfbWFwWyJcXHRleHR1cCJdCT0gIiIKCglGb250X2RlY2xfbWFwWyJcXGJmIl0JCT0gIkIiCglGb250X2RlY2xfbWFwWyJcXGVtIl0JCT0gIkVNIgoJRm9udF9kZWNsX21hcFsiXFxpdCJdCQk9ICJJIgoJRm9udF9kZWNsX21hcFsiXFxybSJdCQk9ICIiCglGb250X2RlY2xfbWFwWyJcXHNjIl0JCT0gInRvdXBwZXIiCglGb250X2RlY2xfbWFwWyJcXHNmIl0JCT0gIiIKCUZvbnRfZGVjbF9tYXBbIlxcdHQiXQkJPSAiVFQiCglGb250X2RlY2xfbWFwWyJcXGl0c2hhcGUiXQk9ICJJIgoJRm9udF9kZWNsX21hcFsiXFx1cHNoYXBlIl0JPSAiIgoJRm9udF9kZWNsX21hcFsiXFxzbHNoYXBlIl0JPSAiSSIKCUZvbnRfZGVjbF9tYXBbIlxcc2NzaGFwZSJdCT0gInRvdXBwZXIiCglGb250X2RlY2xfbWFwWyJcXG1kc2VyaWVzIl0JPSAiIgoJRm9udF9kZWNsX21hcFsiXFxiZnNlcmllcyJdCT0gIkIiCglGb250X2RlY2xfbWFwWyJcXHJtZmFtaWx5Il0JPSAiIgoJRm9udF9kZWNsX21hcFsiXFxzZmZhbWlseSJdCT0gIiIKCUZvbnRfZGVjbF9tYXBbIlxcdHRmYW1pbHkiXQk9ICJUVCIKfQoKZnVuY3Rpb24gbWluKGEsYikKewoJcmV0dXJuIChhIDwgYikgPyBhIDogYgp9CgoKZnVuY3Rpb24gcHJlZml4KGxldmVsKQp7CgkjIFJldHVybiBhIHByZWZpeCBvZiB1cCB0byA2MCBibGFua3MKCglpZiAoSW5fUFJFKQoJCXJldHVybiAoIiIpCgllbHNlCgkJcmV0dXJuIChzdWJzdHIoIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIsIFwKCQkJMSwgSU5ERU5UICogbGV2ZWwpKQp9CgoKZnVuY3Rpb24gcHJpbnRfbGluZShsaW5lKQp7CglpZiAoSFRNTCkJCSMgbXVzdCBidWZmZXIgaW4gbWVtb3J5IHNvIHRoYXQgd2UgY2FuIGFjY3VtdWxhdGUgVE9DCgkJQm9keVsrK0JvZHlMaW5lc10gPSBsaW5lCgllbHNlCgkJcHJpbnQgbGluZQp9CgoKZnVuY3Rpb24gcHJpbnRfdG9jX2xpbmUoYXV0aG9yLHRpdGxlLHBhZ2VzLCBleHRyYSxsZWFkZXJzLG4sdCkKewoJIyBXaGVuIHdlIGhhdmUgYSBtdWx0aWxpbmUgdGl0bGUsIHRoZSBoeXBlcnRleHQgbGluayBnb2VzIG9ubHkKCSMgb24gdGhlIGZpcnN0IGxpbmUuICBBIG11bHRpbGluZSBoeXBlcnRleHQgbGluayBsb29rcyBhd2Z1bAoJIyBiZWNhdXNlIG9mIGxvbmcgdW5kZXJsaW5lcyB1bmRlciB0aGUgbGVhZGluZyBpbmRlbnRhdGlvbi4KCglpZiAocGFnZXMgPT0gIiIpCSMgdGhlbiBubyBsZWFkZXJzIG5lZWRlZCBpbiB0aXRsZSBsaW5lcyBvdGhlciB0aGFuIGxhc3Qgb25lCgkJdCA9IHNwcmludGYoIiUzMXMgICAlcyVzJXMiLCBhdXRob3IsIFRpdGxlX3ByZWZpeCwgdGl0bGUsIFRpdGxlX3N1ZmZpeCkKCWVsc2UJCQkJCSMgbGFzdCB0aXRsZSBsaW5lLCB3aXRoIHBhZ2UgbnVtYmVyCgl7CgkJbiA9IGh0bWxfbGVuZ3RoKHRpdGxlKQkJIyBwb3RlbnRpYWxseSBleHBlbnNpdmUKCQlleHRyYSA9IG4gJSAyCQkJIyBleHRyYSBzcGFjZSBmb3IgYWxpZ25lZCBsZWFkZXIgZG90cwoJCWlmIChuIDw9IE1BWF9USVRMRV9DSEFSUykgCSMgdGhlbiBuZWVkIGxlYWRlcnMKCQkJbGVhZGVycyA9IHN1YnN0cihMRUFERVJTLCAxLCBNQVhfVElUTEVfQ0hBUlMgKyBNSU5fTEVBREVSUyAtIGV4dHJhIC0gXAoJCQkJICAgbWluKE1BWF9USVRMRV9DSEFSUyxuKSkKCQllbHNlCQkJCSMgdGl0bGUgKGFsbW9zdCkgZmlsbHMgbGluZSwgc28gbm8gbGVhZGVycwoJCQlsZWFkZXJzID0gc3Vic3RyKE1JTl9MRUFERVJTX1NQQUNFLDEsIFwKCQkJCQkgKE1BWF9USVRMRV9DSEFSUyArIE1JTl9MRUFERVJTIC0gZXh0cmEgLSBuKSkKCQl0ID0gc3ByaW50ZigiJTMxcyAgICVzJXMlcyVzJXMgJTRzIiwgXAoJCQkgICAgYXV0aG9yLCBUaXRsZV9wcmVmaXgsIHRpdGxlLCBUaXRsZV9zdWZmaXgsIFwKCQkJICAgIChleHRyYSA/ICIgIiA6ICIiKSwgbGVhZGVycywgcGFnZXMpCgl9CgoJVGl0bGVfcHJlZml4ID0gIiIJIyBmb3JnZXQgYW55IGh5cGVydGV4dAoJVGl0bGVfc3VmZml4ID0gIiIJIyBsaW5rIG1hdGVyaWFsCgoJIyBFZmZpY2VuY3kgbm90ZTogYW4gZWFybGllciB2ZXJzaW9uIGFjY3VtdWxhdGVkIHRoZSBib2R5IGluIGEKCSMgc2luZ2xlIHNjYWxhciBsaWtlIHRoaXM6ICJCb2R5ID0gQm9keSB0Ii4gIFByb2ZpbGluZyByZXZlYWxlZAoJIyB0aGlzIHN0YXRlbWVudCBhcyB0aGUgbWFqb3IgaG90IHNwb3QsIGFuZCB0aGUgY2hhbmdlIHRvIGFycmF5CgkjIHN0b3JhZ2UgbWFkZSB0aGUgcHJvZ3JhbSBtb3JlIHRoYW4gdHdpY2UgYXMgZmFzdC4gIFRoaXMKCSMgc3VnZ2VzdHMgdGhhdCBhd2sgbWlnaHQgYmVuZWZpdCBmcm9tIGFuIG9wdGltaXphdGlvbiBvZgoJIyAicyA9IHMgdCIgdGhhdCB1c2VzIHJlYWxsb2MoKSBpbnN0ZWFkIG9mIG1hbGxvYygpLgoJaWYgKEhUTUwpCgkJQm9keVsrK0JvZHlMaW5lc10gPSB0CgllbHNlCgkJcHJpbnQgdAp9CgoKZnVuY3Rpb24gcHJvdGVjdF9TR01MX2NoYXJhY3RlcnMocykKewogICAgZ3N1YigvJi8sIlxcJmFtcDsiLHMpCSMgTkI6IHRoaXMgb25lIE1VU1QgYmUgZmlyc3QKICAgIGdzdWIoLzwvLCJcXCZsdDsiLHMpCiAgICBnc3ViKC8+LywiXFwmZ3Q7IixzKQogICAgZ3N1YigvXCIvLCJcXCZxdW90OyIscykKICAgIHJldHVybiAocykKfQoKCmZ1bmN0aW9uIHN0cmlwX2JyYWNlcyhzLCBrKQp7CSMgc3RyaXAgbm9uLWJhY2tzbGFzaGVkIGJyYWNlcyBmcm9tIHMgYW5kIHJldHVybiB0aGUgcmVzdWx0CgoJcmV0dXJuIChzdHJpcF9jaGFyKHN0cmlwX2NoYXIocywieyIpLCJ9IikpCn0KCgpmdW5jdGlvbiBzdHJpcF9jaGFyKHMsYywgaykKewkjIHN0cmlwIG5vbi1iYWNrc2xhc2hlZCBpbnN0YW5jZXMgb2YgYyBmcm9tIHMsIGFuZCByZXR1cm4gdGhlIHJlc3VsdAoJayA9IGluZGV4KHMsYykKCWlmIChrID4gMCkJCSMgdGhlbiBmb3VuZCB0aGUgY2hhcmFjdGVyCgl7CgkJaWYgKHN1YnN0cihzLGstMSwxKSAhPSAiXFwiKSAjIHRoZW4gbm90IGJhY2tzbGFzaGVkIGNoYXIKCQkJcyA9IHN1YnN0cihzLDEsay0xKSBzdHJpcF9jaGFyKHN1YnN0cihzLGsrMSksYykgIyBzbyByZW1vdmUgaXQgKHJlY3Vyc2l2ZWx5KQoJCWVsc2UJCSMgcHJlc2VydmUgYmFja3NsYXNoZWQgY2hhcgoJCQlzID0gc3Vic3RyKHMsMSxrKSBzdHJpcF9jaGFyKHMsaysxLGMpCgl9CglyZXR1cm4gKHMpCn0KCgpmdW5jdGlvbiBzdHJpcF9odG1sKHMpCnsKCWdzdWIoLzxcLz9bXj5dKj4vLCIiLHMpCglyZXR1cm4gKHMpCn0KCgpmdW5jdGlvbiB0ZXJtaW5hdGUoKQp7CglpZiAoSFRNTCkKCXsKCQlodG1sX2VuZF9wcmUoKQoKCQlIVE1MID0gMAkjIE5COiBzdG9wIGxpbmUgYnVmZmVyaW5nCgkJaHRtbF9oZWFkZXIoKQoJCWh0bWxfdG9jKCkKCQlodG1sX2JvZHkoKQoJCWh0bWxfdHJhaWxlcigpCgl9Cn0KCgpmdW5jdGlvbiBUZVhfdG9fSFRNTChzLCBrLG4scGFydHMpCnsKCSMgRmlyc3QgY29udmVydCB0aGUgZm91ciBTR01MIHJlc2VydmVkIGNoYXJhY3RlcnMgdG8gU0dNTCBlbnRpdGllcwoJaWYgKEhUTUwpCgl7CgkgICAgZ3N1YigvPi8sCSJcXCZndDsiLAlzKQoJICAgIGdzdWIoLzwvLAkiXFwmbHQ7IiwJcykKCSAgICBnc3ViKC8iLywJIlxcJnF1b3Q7IiwJcykKCX0KCglnc3ViKC9bJF1bJF0vLCIkJCIscykJIyBjaGFuZ2UgZGlzcGxheSBtYXRoIHRvIHRyaXBsZSBkb2xsYXJzIGZvciBzcGxpdAoJbiA9IHNwbGl0KHMscGFydHMsL1skXS8pIyBzcGxpdCBpbnRvIG5vbi1tYXRoIChvZGQpIGFuZCBtYXRoIChldmVuKSBwYXJ0cwoKCXMgPSAiIgoJZm9yIChrID0gMTsgayA8PSBuOyArK2spICMgdW5icmFjZSBub24tbWF0aCBwYXJ0LCBsZWF2aW5nIG1hdGggbW9kZSBpbnRhY3QKCQlzID0gcyAoKGsgPiAxKSA/ICIkIiA6ICIiKSBcCgkJCSgoayAlIDIpID8gc3RyaXBfYnJhY2VzKFRlWF90b19IVE1MX25vbm1hdGgocGFydHNba10pKSA6IFwKCQkJVGVYX3RvX0hUTUxfbWF0aChwYXJ0c1trXSkpCgoJZ3N1YigvWyRdWyRdWyRdLywiJCQiLHMpICMgcmVzdG9yZSBkaXNwbGF5IG1hdGgKCglyZXR1cm4gKHMpCn0KCgpmdW5jdGlvbiBUZVhfdG9fSFRNTF9tYXRoKHMpCnsKCSMgTW9zdGx5IGEgZHVtbXkgZm9yIG5vdywgYnV0IEhUTUwgMyBjb3VsZCBzdXBwb3J0IHNvbWUgbWF0aCB0cmFuc2xhdGlvbgoKCWdzdWIoL1xcJi8sIlxcJmFtcDsiLHMpCSMgcmVkdWNlIFRlWCBhbXBlcnNhbmRzIHRvIFNHTUwgZW50aXRpZXMKCglyZXR1cm4gKHMpCn0KCgpmdW5jdGlvbiBUZVhfdG9fSFRNTF9ub25tYXRoKHMpCnsKCWlmIChpbmRleChzLCJcXCIpID4gMCkJCQkjIGltcG9ydGFudCBvcHRpbWl6YXRpb24KCXsKCQlnc3ViKC9cXHNsYXNoICsvLCIvIixzKQkJIyByZXBsYWNlIFRlWCBzbGFzaGVzIHdpdGggY29udmVudGlvbmFsIG9uZXMKCQlnc3ViKC8gKlxcZW1kYXNoICsvLCIgLS0tICIscykJIyByZXBsYWNlIEJpYk5ldCBlbWRhc2hlcyB3aXRoIGNvbnZlbnRpb25hbCBvbmVzCgkJZ3N1YigvXFwlLywiJSIscykJCSMgcmVkdWNlIFRlWCBwZXJjZW50cyB0byBjb252ZW50aW9uYWwgb25lcwoJCWdzdWIoL1xcWyRdLywiJCIscykJCSMgcmVk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UmV0dXJuLVBhdGg6IDxoYW5rZWRyQG1hbmF0ZWUuZG1zLmF1YnVybi5lZHU+CiNSZWNlaXZlZDogZnJvbSBjc3N1bi5tYXRoY3MuZW1vcnkuZWR1IChjc3N1bi5tYXRoY3MuZW1vcnkuZWR1IFsxNzAuMTQwLjE1MC4xXSkKIwlieSBkbXgubmV0dmlzaW9uLm5ldC5pbCAoOC45LjAuQmV0YTUvOC44LjYpIHdpdGggRVNNVFAgaWQgUEFBMDM5MjQKIwlmb3IgPGFyb2JiaW5zQG5ldHZpc2lvbi5uZXQuaWw+OyBUdWUsIDEzIE9jdCAxOTk4IDE1OjMyOjEzICswMjAwIChJU1QpCiNSZWNlaXZlZDogZnJvbSBtZXNjYWxpbmUuZ251Lm9yZyAod2UtcmVmdXNlLXRvLXNweS1vbi1vdXItdXNlcnNAbWVzY2FsaW5lLmdudS5vcmcgWzE1OC4xMjEuMTA2LjIxXSkgYnkgY3NzdW4ubWF0aGNzLmVtb3J5LmVkdSAoOC43LjUvOC42LjktOTQwODE4LjAxY3NzdW4pIHdpdGggRVNNVFAgaWQgS0FBMTE2NDQgZm9yIDxhcm5vbGRAbWF0aGNzLmVtb3J5LmVkdT47IFR1ZSwgMTMgT2N0IDE5OTggMTA6MjI6MzIgLTA0MDAgKEVEVCkKI1JlY2VpdmVkOiBmcm9tIG1hbmF0ZWUuZG1zLmF1YnVybi5lZHUgKG1hbmF0ZWUuZG1zLmF1YnVybi5lZHUgWzEzMS4yMDQuNTMuMTA0XSkKIwlieSBtZXNjYWxpbmUuZ251Lm9yZyAoOC45LjFhLzguOS4xKSB3aXRoIEVTTVRQIGlkIEtBQTAzMjUwCiMJZm9yIDxhcm5vbGRAZ251Lm9yZz47IFR1ZSwgMTMgT2N0IDE5OTggMTA6MjU6MzIgLTA0MDAKI1JlY2VpdmVkOiAoZnJvbSBoYW5rZWRyQGxvY2FsaG9zdCkKIwlieSBtYW5hdGVlLmRtcy5hdWJ1cm4uZWR1ICg4LjkuMWEvOC45LjEpIGlkIEpBQTEzMzQ4OwojCVR1ZSwgMTMgT2N0IDE5OTggMDk6MjI6MjkgLTA1MDAgKENEVCkKI0RhdGU6IFR1ZSwgMTMgT2N0IDE5OTggMDk6MjI6MjkgLTA1MDAgKENEVCkKI01lc3NhZ2UtSWQ6IDwxOTk4MTAxMzE0MjIuSkFBMTMzNDhAbWFuYXRlZS5kbXMuYXVidXJuLmVkdT4KI0Zyb206IERhcnJlbCBIYW5rZXJzb24gPGhhbmtlZHJAZG1zLmF1YnVybi5lZHU+CiNUbzogYXJub2xkQGdudS5vcmcKI0luLXJlcGx5LXRvOiA8MTk5ODEwMTMxMzEzLlFBQTMxNzg0QGFscGhhLm5ldHZpc2lvbi5uZXQuaWw+IChtZXNzYWdlIGZyb20KIwlBaGFyb24gUm9iYmlucyBvbiBUdWUsIDEzIE9jdCAxOTk4IDE2OjEwOjM2ICswMjAwKQojU3ViamVjdDogUmU6IGZ1bGwgdGV4dCBvZiBidWcgcmVwb3J0PwojTWltZS1WZXJzaW9uOiAxLjAKI0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VUy1BU0NJSQojWC1VSURMOiBiZjNmY2U0OTJkYWQ0YWIwMzBjNTYxZTdiMmYyN2QwYQojU3RhdHVzOiBSTwojCiMgICBEbyB5b3UgaGF2ZSB0aGUgZnVsbCB0ZXh0IG9mIHRoZQlhID0gYSAiXG4iIGYoKSAJYnVnIHJlcG9ydD8KIyAgIEkgY2FuJ3QgZmluZCBpdC4uLi4gSSdtIG5vdCBzdXJlIHRoZXJlIHJlYWxseSBpcyBhIGJ1Zy4KIwojWWVzLCBzZWUgYmVsb3cuICAKIwojSGlzIGV4YW1wbGUgaGFzIHVubmVjZXNzYXJ5IGZyYWdtZW50cyAoaW4gcGFydGljdWxhciwgdGhlIHVzZSBvZgojZ2Vuc3ViIGlzIGlycmVsZXZhbnQpLiAgQXMgSSB3cm90ZSB0byB5b3UgZWFybGllciwgdGhlIGludGVyZXN0aW5nCiNxdWVzdGlvbiBmb3IgbWUgaXM6CiMKIyAgIElzIHRoZSBjb25jYXRlbmF0aW9uIHJlc3VsdCB1bmRlZmluZWQ/ICBJZiB0aGUgcmVzdWx0IGlzIGRlZmluZWQgb3IKIyAgIGltcGxlbWVudGF0aW9uLWRlcGVuZGVudCwgdGhlbiBnYXdrIGhhcyBhIGJ1Zy4KIwojCiM9PT0gT3JpZ2luYWwgcmVwb3J0ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiNGcm9tOiBBdHRpbGEgVG9yY3N2YXJpIDxhcmNkZXZAbWFpbC5tYXRhdi5odT4KI1RvOiAiJ2J1Zy1nbnUtdXRpbHNAcHJlcC5haS5taXQuZWR1JyIgPGJ1Zy1nbnUtdXRpbHNAZ251Lm9yZz4KI1N1YmplY3Q6IGdhd2sgMy4wLjMgYnVnCiNEYXRlOiBUaHUsIDE3IFNlcCAxOTk4IDE4OjEyOjEzICswMjAwCiNNSU1FLVZlcnNpb246IDEuMAojQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogN2JpdAojUmVzZW50LUZyb206IGJ1Zy1nbnUtdXRpbHNAZ251Lm9yZwojWC1NYWlsaW5nLUxpc3Q6IDxidWctZ251LXV0aWxzQGdudS5vcmc+IGFyY2hpdmUvbGF0ZXN0LzMzOTYKI1gtTG9vcDogYnVnLWdudS11dGlsc0BnbnUub3JnCiNQcmVjZWRlbmNlOiBsaXN0CiNSZXNlbnQtU2VuZGVyOiBidWctZ251LXV0aWxzLXJlcXVlc3RAZ251Lm9yZwojQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogN2JpdAojQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PSJ1cy1hc2NpaSIKI0NvbnRlbnQtTGVuZ3RoOiA2MTgKIwojQnVnLWdudWVycywKI3BsZWFzZSBwYXNzIGl0IHRvIHRoZSByZXNwb25zaWJsZS4KIwojVGhlIGZvbGxvd2luZyBnZW5lcmF0ZXMgc29tZXRoaW5nIGludGVyZXN0aW5nOgojCkJFR0lOewphPSJhYWFhYSIKYT1hIGEgIzEwCmE9YSBhICMyMAphPWEgYSAjNDAKYT1hIGEgIzgwCmE9YSBhICMxNjAKYT1hIGEgIyBpLmUuIGEgaXMgbG9uZyBlbm91Z2gKCmE9YSJcbiJmKCkgIyB0aGlzIGNhdXNlcyB0aGUgdHJvdWJsZQpwcmludCBhICMgZ3Vlc3MgdGhlIHJlc3VsdAp9CgpmdW5jdGlvbiBmKCkKewojcHJpbnQgImEgYmVmb3JlOiAiLCBhCiNhPWdlbnN1YigiYSIsIjEyMywiLCJnIixhKSAjICdhJyB3aWxsIGJlIGp1c3QgYSBiaXQgbG9uZ2VyICg0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ZWl2ZWQ6IGZyb20ga2hyb21lbGVxdWUuZG1hdC51ZXZvcmEucHQgKHZwQGxvY2FsaG9zdCBbMTI3LjAuMC4xXSkKIwlieSBraHJvbWVsZXF1ZS5kbWF0LnVldm9yYS5wdCAoOC44LjgvOC44LjgvRGViaWFuL0dOVSkgd2l0aCBFU01UUCBpZCBPQUExMTgxNwojCWZvciA8YXJub2xkQGdudS5haS5taXQuZWR1PjsgVGh1LCAxOCBKdW4gMTk5OCAxNDoxMzo1NyArMDEwMAojTWVzc2FnZS1JZDogPDE5OTgwNjE4MTMxMy5PQUExMTgxN0BraHJvbWVsZXF1ZS5kbWF0LnVldm9yYS5wdD4KI1RvOiBhcm5vbGRAZ251Lm9yZwojU3ViamVjdDogY29uY2F0ZW5hdGlvbiBidWcgaW4gZ2F3ayAzLjAuMwojRGF0ZTogVGh1LCAxOCBKdW4gMTk5OCAxNDoxMzo1NyArMDIwMAojRnJvbTogVmFzY28gUGVkcm8gPHZwQGRtYXQudWV2b3JhLnB0PgojQ29udGVudC1UeXBlOiB0ZXh0CiNDb250ZW50LUxlbmd0aDogMjI4NQojU3RhdHVzOiBSTwojCiNIaSwKIwojVGhlIGdhd2sgcHJvZ3JhbSAne3ByaW50IE5SICIgIiAxMC9OUn0nIHdpbGwgcHJpbnQ6CiMKIzEgMTAKIzUgNQojMyAzLjMzMzMzCiMyIDIuNQojMiAyCiMxIDEuNjY2NjcKIwojaW5zdGVhZCBvZiB0aGUgY29ycmVjdDoKIwojMSAxMAojMiA1CiMzIDMuMzMzMzMKIzQgMi41CiM1IDIKIzYgMS42NjY2NwojCiNZb3UnbGwgbm90aWNlLCBvbiB0aGUgaW5jb3JyZWN0IG91dHB1dCwgdGhhdCB0aGUgZmlyc3QgY29sdW1uIGlzCiN0aGUgZmlyc3QgZGlnaXQgb2YgdGhlIHNlY29uZC4KIwojSSB0aGluayB0aGUgcHJvYmxlbSBjb21lcyBmcm9tIHRoZSB3YXkgYnVpbHRpbiB2YXJpYWJsZXMgYXJlIGhhbmRsZWQuCiNTaW5jZSB0aGUgaXRlbXMgdG8gYmUgY29uY2F0ZW5hdGVkIGFyZSBwcm9jZXNzZWQgaW4gcmV2ZXJzZSBvcmRlciBhbmQKI3RoZSByZXR1cm4gdmFsdWUgb2YgdHJlZV9ldmFsKGBgTlInJykgaXMgYSBwb2ludGVyIHRvIHRoZSB2YWx1ZSBwYXJ0CiNvZiBgTlJfbm9kZScsIHRoZSBgdW5yZWYoKScgb2YgYE5SX25vZGUnIGR1ZSB0byBpdHMgc2Vjb25kIG9jY3VycmVuY2UKI3dpbGwgbGVhdmUgYSBkYW5nbGluZyBwb2ludGVyIGluIGBzdHJsaXN0Jy4gVGhlIHJlYXNvbiB0aGF0IGl0IGRvZXNuJ3QKI3JldXNlIHRoZSBmcmVlZCBzcGFjZSB3aXRoIG9iamVjdHMgb2YgdGhlIHNhbWUgdHlwZS4gKFVzaW5nIEVsZWN0cmljCiNGZW5jZSB3aXRoIEVGX1BST1RFQ1RfRlJFRSBzZXQgY29uZmlybXMgdGhhdCBmcmVlZCBzcGFjZSBpcyBiZWluZwojYWNjZXNzZWQuKQojCiNUaGUgZW5jbG9zZWQgcGF0Y2ggKGhhY2sgd291bGQgYmUgYSBiZXR0ZXIgd29yZCB0byBkZXNjcmliZSBpdCkgaXMKI2FsbCBJIGNvdWxkIGNvbWUgdXAgd2l0aC4gV2l0aCBpdCBpbnN0YWxsZWQsIHRoaW5ncyBzZWVtIHRvIHdvcmsgb2ssCiNidXQgSSBkb3VidCB0aGlzIGlzIHRoZSBjb3JyZWN0IHdheSB0byBkbyBpdC4gKElmIEkgdHJlYXRlZCB0aGUKI2Nhc2UgZm9yIGBOb2RlX2ZpZWxkX3NwZWMnIGFzIHRoZSBJIGRpZCBvdGhlcnMsIGBtYWtlIGNoZWNrJyB3b3VsZAojZmFpbCBpbiBzZXZlcmFsIHBsYWNlcy4pCiMKI1JlZ2FyZHMsCiN2YXNjbwojCiMqKiogZXZhbC5jfglUdWUgTWF5ICA2IDIxOjM5OjU1IDE5OTcKIy0tLSBldmFsLmMJVGh1IEp1biAxOCAxMzozOToyNSAxOTk4CiMqKioqKioqKioqKioqKioKIyoqKiA2ODUsNjk3ICoqKioKIyAgCQlyZXR1cm4gZnVuY19jYWxsKHRyZWUtPnJub2RlLCB0cmVlLT5sbm9kZSk7CiMgIAojICAJCS8qIHVuYXJ5IG9wZXJhdGlvbnMgKi8KIyAgCWNhc2UgTm9kZV9OUjoKIyAgCWNhc2UgTm9kZV9GTlI6CiMgIAljYXNlIE5vZGVfTkY6CiMgIAljYXNlIE5vZGVfRklFTERXSURUSFM6CiMgIAljYXNlIE5vZGVfRlM6CiMgIAljYXNlIE5vZGVfUlM6CiMtIAljYXNlIE5vZGVfZmllbGRfc3BlYzoKIyAgCWNhc2UgTm9kZV9zdWJzY3JpcHQ6CiMgIAljYXNlIE5vZGVfSUdOT1JFQ0FTRToKIyAgCWNhc2UgTm9kZV9PRlM6CiMtLS0gNjg1LDcwMCAtLS0tCiMgIAkJcmV0dXJuIGZ1bmNfY2FsbCh0cmVlLT5ybm9kZSwgdHJlZS0+bG5vZGUpOwojICAKIyAgCQkvKiB1bmFyeSBvcGVyYXRpb25zICovCiMrIAljYXNlIE5vZGVfZmllbGRfc3BlYzoKIysgCQlsaHMgPSBnZXRfbGhzKHRyZWUsIChGdW5jX3B0ciAqKSBOVUxMKTsKIysgCQlyZXR1cm4gKmxoczsKIysgCiMgIAljYXNlIE5vZGVfTlI6CiMgIAljYXNlIE5vZGVfRk5SOgojICAJY2FzZSBOb2RlX05GOgojICAJY2FzZSBOb2RlX0ZJRUxEV0lEVEhTOgojICAJY2FzZSBOb2RlX0ZTOgojICAJY2FzZSBOb2RlX1JTOgojICAJY2FzZSBOb2RlX3N1YnNjcmlwdDoKIyAgCWNhc2UgTm9kZV9JR05PUkVDQVNFOgojICAJY2FzZSBOb2RlX09GUzoKIyoqKioqKioqKioqKioqKgojKioqIDY5OSw3MDUgKioqKgojICAJY2FzZSBOb2RlX09GTVQ6CiMgIAljYXNlIE5vZGVfQ09OVkZNVDoKIyAgCQlsaHMgPSBnZXRfbGhzKHRyZWUsIChGdW5jX3B0ciAqKSBOVUxMKTsKIyEgCQlyZXR1cm4gKmxoczsKIyAgCiMgIAljYXNlIE5vZGVfdmFyX2FycmF5OgojICAJCWZhdGFsKCJhdHRlbXB0IHRvIHVzZSBhcnJheSBgJXMnIGluIGEgc2NhbGFyIGNvbnRleHQiLAojLS0tIDcwMiw3MTAgLS0tLQojICAJY2FzZSBOb2RlX09GTVQ6CiMgIAljYXNlIE5vZGVfQ09OVkZNVDoKIyAgCQlsaHMgPSBnZXRfbGhzKHRyZWUsIChGdW5jX3B0ciAqKSBOVUxMKTsKIyEg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MDAwMDAwMgAwNjYxNzYxMzE0NwAwMTM1MzUAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABiZWVi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ZGUgYW5kIHRyaWVkIHRvIHN0cmlwIGF3YXkgYW55dGhpbmcgdGhhdCBkaWRuJ3QgbWFrZSB0aGUgZXJyb3IKIyBtZXNzYWdlIGdvIGF3YXkuCiMgCiMgVGhlIGludGVyZXN0aW5nIHBhcnQgb2YgdGhlICd0cnVzcycgaXM6CiMgCiMgZnN0YXQoMywgMHhFRkZGRjI3OCkJCQkJPSAwCiMgbHNlZWsoMywgMCwgU0VFS19TRVQpCQkJCT0gMAojIHJlYWQoMywgIiByIG8gbyB0IDogeCA6IDAgOiAxIDogUyIuLiwgMjI5MSkJPSAyMjkxCiMgYnJrKDB4MDAwNTAwMjApCQkJCQk9IDAKIyBicmsoMHgwMDA1MjAyMCkJCQkJCT0gMAojIHJlYWQoMywgMHgwMDA0RjRCOCwgMjI5MSkJCQk9IDAKIyBjbG9zZSgzKQkJCQkJPSAwCiMgICAgIEluY3VycmVkIGZhdWx0ICM2LCBGTFRCT1VORFMgICVwYyA9IDB4MDAwMUI4MTAKIyAgICAgICBzaWdpbmZvOiBTSUdTRUdWIFNFR1ZfTUFQRVJSIGFkZHI9MHgwMDA1MzAwMAojICAgICBSZWNlaXZlZCBzaWduYWwgIzExLCBTSUdTRUdWIFtjYXVnaHRdCiMgICAgICAgc2lnaW5mbzogU0lHU0VHViBTRUdWX01BUEVSUiBhZGRyPTB4MDAwNTMwMDAKIyB3cml0ZSgyLCAiIGcgYSB3IGsiLCA0KQkJCQk9IDQKIyB3cml0ZSgyLCAiIDogICIsIDIpCQkJCT0gMgojIAojIC0tCiMgQ2hhcmxlcyBIb3dlcyAtLSBjaG93ZXNAZGlyZWN0LmNhICAgICAgICAgICAgICAgICBWb2ljZTogKDYwNCkgNjkxLTE2MDcKIyBTeXN0ZW0gQWRtaW5pc3RyYXRvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmF4OiAoNjA0KSA2OTEtMTYwNQojIEludGVybmV0IERpcmVjdCAtIDEwNTAgLSA1NTUgV2VzdCBIYXN0aW5ncyBTdCAtIFZhbmNvdXZlciwgQkMgVjZCIDRONgojIAojIEEgc3lzYWRtaW4ncyBsaWZlIGlzIGEgc29ycnkgb25lLiAgVGhlIG9ubHkgYWR2YW50YWdlIGhlIGhhcyBvdmVyIEVtZXJnZW5jeQojIFJvb20gZG9jdG9ycyBpcyB0aGF0IG1hbHByYWN0aWNlIHN1aXRzIGFyZSByYXJlLiAgT24gdGhlIG90aGVyIGhhbmQsIEVSCiMgZG9jdG9ycyBuZXZlciBoYXZlIHRvIGRlYWwgd2l0aCBwYXRpZW50cyBpbnN0YWxsaW5nIG5ldyB2ZXJzaW9ucyBvZiB0aGVpcgojIG93biBpbm5hcmRzISAgIC1NaWNoYWVsIE8nQnJpZW4KIyAKIyAgIkkgdGhpbmsgSSBrbm93IHdoYXQgbWF5IGhhdmUgZ29uZSB3cm9uZyBpbiB0aGUgb3JpZ2luYWwgcy93LgojICAgSXQncyBhIGJ1ZyBpbiB0aGUgd2F5IGl0IHdhcyB3cml0dGVuLiIgIC0gVmFndWVuZXNzKipuCgAAAAAAAAAAAAAAAAAAAAAAAGJlZWJlL2dzdWJ0ZXN0LmF3awAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDAwMDQ0MAAwNjQzMzYzMjA3MwAwMTQwMTAAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQkVHSU4gewoJc3RyID0gImFiYyI7IHByaW50IGdzdWIoImIrIiwgIkZPTyIsIHN0ciksIHN0cgoJc3RyID0gImFiYyI7IHByaW50IGdzdWIoIngqIiwgIlgiLCBzdHIpLCBzdHIKCXN0ciA9ICJhYmMiOyBwcmludCBnc3ViKCJiKiIsICJYIiwgc3RyKSwgc3RyCglzdHIgPSAiYWJjIjsgcHJpbnQgZ3N1YigiYyIsICJYIiwgc3RyKSwgc3RyCglzdHIgPSAiYWJjIjsgcHJpbnQgZ3N1YigiYysiLCAiWCIsIHN0ciksIHN0cgoJc3RyID0gImFiYyI7IHByaW50IGdzdWIoIngqJCIsICJYIiwgc3RyKSwgc3RyCn0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABiZWViZS9iYWNrZ3N1Yi5pbgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAxNzUwADAwMDE3NTAAMDAwMDAwMDAwMDcAMDYyNTQxNTIwNjcAMDEzNTU1ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFx4XHlcegoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYmVlYmUvc3ByaW50ZmMuaW4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NDQAMDAwMTc1MAAwMDAxNzUwADAwMDAwMDAwMDEyADA2MjU0MTUyMTEwADAxMzYwNQAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2NQo2Ngpmb28KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGJlZWJlL3R3ZWFrZmxkLmluAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDAwMTc0MgAwNjI1NDE1MjExMwAwMTM1NzQAIDAAAAAAAAAAAAAAAAAAAAAAAAAA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fCArMS4yN2UrMDF8ICAgICsxMi42OHwKICAlKyAwfCswMDQ1fDAwMDU1fDAwMDJkfCswMTIuNjh8KzAxLjI3ZSswMXwrMDAwMDEyLjY4fAogICUrICN8ICArNDV8ICAwNTV8IDB4MmR8ICsxMi42OHwgKzEuMjdlKzAxfCAgICArMTIuNjh8CiAlKyAjMHwrMDA0NXwwMDA1NXwweDAyZHwrMDEyLjY4fCswMS4yN2UrMDF8KzAwMDAxMi42OHwKICAgICUtfDQ1ICAgfDU1ICAgfDJkICAgfDEyLjY4ICB8MS4yN2UrMDEgIHwxMi42OCAgICAgfAogICAlLTB8NDUgICB8NTUgICB8MmQgICB8MTIuNjggIHwxLjI3ZSswMSAgfDEyLjY4ICAgICB8CiAgICUtI3w0NSAgIHwwNTUgIHwweDJkIHwxMi42OCAgfDEuMjdlKzAxICB8MTIuNjggICAgIHwKICAlLSMwfDQ1ICAgfDA1NSAgfDB4MmQgfDEyLjY4ICB8MS4yN2UrMDEgIHwxMi42OCAgICAgfAogICAlLSB8IDQ1ICB8NTUgICB8MmQgICB8IDEyLjY4IHwgMS4yN2UrMDEgfCAxMi42OCAgICB8CiAgJS0gMHwgNDUgIHw1NSAgIHwyZCAgIHwgMTIuNjggfCAxLjI3ZSswMSB8IDEyLjY4ICAgIHwKICAlLSAjfCA0NSAgfDA1NSAgfDB4MmQgfCAxMi42OCB8IDEuMjdlKzAxIHwgMTIuNjggICAgfAogJS0gIzB8IDQ1ICB8MDU1ICB8MHgyZCB8IDEyLjY4IHwgMS4yN2UrMDEgfCAxMi42OCAgICB8CiAgICUtK3wrNDUgIHw1NSAgIHwyZCAgIHwrMTIuNjggfCsxLjI3ZSswMSB8KzEyLjY4ICAgIHwKICAlLSswfCs0NSAgfDU1ICAgfDJkICAgfCsxMi42OCB8KzEuMjdlKzAxIHwrMTIuNjggICAgfAogICUtKyN8KzQ1ICB8MDU1ICB8MHgyZCB8KzEyLjY4IHwrMS4yN2UrMDEgfCsxMi42OCAgICB8CiAlLSsjMHwrNDUgIHwwNTUgIHwweDJkIHwrMTIuNjggfCsxLjI3ZSswMSB8KzEyLjY4ICAgIHwKICAlLSsgfCs0NSAgfDU1ICAgfDJkICAgfCsxMi42OCB8KzEuMjdlKzAxIHwrMTIuNjggICAgfAogJS0rIDB8KzQ1ICB8NTUgICB8MmQgICB8KzEyLjY4IHwrMS4yN2UrMDEgfCsxMi42OCAgICB8CiAlLSsgI3wrNDUgIHwwNTUgIHwweDJkIHwrMTIuNjggfCsxLjI3ZSswMSB8KzEyLjY4ICAgIHwKJS0rICMwfCs0NSAgfDA1NSAgfDB4MmQgfCsxMi42OCB8KzEuMjdlKzAxIHwrMTIuNjggICAgfAoKICAgICAlfCAgemFwfCAgICAqfCAgICAgLTN8ICAtMy40NnwgLTMuNDZlKzAwfCAgICAtMy40NTd8CiAgICAlMHwwMHphcHwwMDAwKnwtMDAwMDAzfC0wMDMuNDZ8LTAzLjQ2ZSswMHwtMDAwMDMuNDU3fAogICAgJSN8ICB6YXB8ICAgICp8ICAgIC0zLnwgIC0zLjQ2fCAtMy40NmUrMDB8ICAgIC0zLjQ1N3wKICAgJSMwfDAwemFwfDAwMDAqfC0wMDAwMy58LTAwMy40NnwtMDMuNDZlKzAwfC0wMDAwMy40NTd8CiAgICAlIHwgIHphcHwgICAgKnwgICAgIC0zfCAgLTMuNDZ8IC0zLjQ2ZSswMHwgICAgLTMuNDU3fAogICAlIDB8MDB6YXB8MDAwMCp8LTAwMDAwM3wtMDAzLjQ2fC0wMy40NmUrMDB8LTAwMDAzLjQ1N3wKICAgJSAjfCAgemFwfCAgICAqfCAgICAtMy58ICAtMy40NnwgLTMuNDZlKzAwfCAgICAtMy40NTd8CiAgJSAjMHwwMHphcHwwMDAwKnwtMDAwMDMufC0wMDMuNDZ8LTAzLjQ2ZSswMHwtMDAwMDMuNDU3fAogICAgJSt8ICB6YXB8ICAgICp8ICAgICAtM3wgIC0zLjQ2fCAtMy40NmUrMDB8ICAgIC0zLjQ1N3wKICAgJSswfDAwemFwfDAwMDAqfC0wMDAwMDN8LTAwMy40NnwtMDMuNDZlKzAwfC0wMDAwMy40NTd8CiAgICUrI3wgIHphcHwgICAgKnwgICAgLTMufCAgLTMuNDZ8IC0zLjQ2ZSswMHwgICAgLTMuNDU3fAogICUrIzB8MDB6YXB8MDAwMCp8LTAwMDAzLnwtMDAzLjQ2fC0wMy40NmUrMDB8LTAwMDAzLjQ1N3wKICAgJSsgfCAgemFwfCAgICAqfCAgICAgLTN8ICAtMy40NnwgLTMuNDZlKzAwfCAgICAtMy40NTd8CiAgJSsgMHwwMHphcHwwMDAwKnwtMDAwMDAzfC0wMDMuNDZ8LTAzLjQ2ZSswMHwtMDAwMDMuNDU3fAogICUrICN8ICB6YXB8ICAgICp8ICAgIC0zLnwgIC0zLjQ2fCAtMy40NmUrMDB8ICAgIC0zLjQ1N3wKICUrICMwfDAwemFwfDAwMDAqfC0wMDAwMy58LTAwMy40NnwtMDMuNDZlKzAwfC0wMDAwMy40NTd8CiAgICAlLXx6YXAgIHwqICAgIHwtMyAgICAgfC0zLjQ2ICB8LTMuNDZlKzAwIHwtMy40NTcgICAgfAogICAlLTB8emFwICB8KiAgICB8LTMgICAgIHwtMy40NiAgfC0zLjQ2ZSswMCB8LTMuNDU3ICAgIHwKICAgJS0jfHphcCAgfCogICAgfC0zLiAgICB8LTMuNDYgIHwtMy40NmUrMDAgfC0zLjQ1NyAgICB8CiAgJS0jMHx6YXAgIHwqICAgIHwtMy4gICAgfC0zLjQ2ICB8LTMuNDZlKzAwIHwtMy40NTcgICAgfAogICAlLSB8emFwICB8KiAgICB8LTMgICAgIHwtMy40NiAgfC0zLjQ2ZSswMCB8LTMuNDU3ICAgIHwKICAlLSAwfHphcCAgfCogICAgfC0zICAgICB8LTMuNDYgIHwtMy40NmUrMDAgfC0zLjQ1NyAgICB8CiAgJS0gI3x6YXAgIHwqICAgIHwtMy4gICAgfC0zLjQ2ICB8LTMuNDZlKzAwIHwtMy40NTcgICAgfAogJS0gIzB8emFwICB8KiAgICB8LTMuICAgIHwtMy40NiAgfC0zLjQ2ZSswMCB8LTMuNDU3ICAgIHwKICAgJS0rfHphcCAgfCogICAgfC0zICAgICB8LTMuNDYgIHwtMy40NmUrMDAgfC0zLjQ1NyAgICB8CiAgJS0rMHx6YXAgIHwqICAgIHwtMyAgICAgfC0zLjQ2ICB8LTMuNDZlKzAwIHwtMy40NTcgICAgfAogICUtKyN8emFwICB8KiAgICB8LTMuICAgIHwtMy40NiAgfC0zLjQ2ZSswMCB8LTMuNDU3ICAgIHwKICUtKyMwfHphcCAgfCogICAgfC0zLiAgICB8LTMuNDYgIHwtMy40NmUrMDAg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b3JnCiMgICAgICAgICAgCiMgICBTdGF0ZQojICAgICAgICAgIHN1c3BlbmRlZAojICAgICAgICAgIAojICAgQ2xhc3MKIyAgICAgICAgICBzdy1idWcKIyAgICAgICAgICAKIyAgIFN1Ym1pdHRlci1JZAojICAgICAgICAgIGN1cnJlbnQtdXNlcnMKIyAgICAgICAgICAKIyAgIEFycml2YWwtRGF0ZQojICAgICAgICAgIFRodSBTZXAgMyAxMDozMDowMCBQRFQgMTk5OAojICAgICAgICAgIAojICAgTGFzdC1Nb2RpZmllZAojICAgICAgICAgIFRodSBTZXAgMTcgMDI6MDQ6MjYgUERUIDE5OTgKIyAgICAgICAgICAKIyAgIE9yaWdpbmF0b3IKIyAgICAgICAgICBBbGV4YW5kZXIgTGl0dmluIGFyY2hlckBsdWNreS5uZXQKIyAgICAgICAgICAKIyAgIE9yZ2FuaXphdGlvbgojICAgICAgICAgIAojCiNMdWNreSBOZXQgbHRkLgojCiMgICBSZWxlYXNlCiMgICAgICAgICAgRnJlZUJTRCAzLjAtQ1VSUkVOVCBpMzg2CiMgICAgICAgICAgCiMgICBFbnZpcm9ubWVudAojICAgICAgICAgIAojCiNGcmVlQlNEIGdyYXBlLmNhcnJpZXIua2lldi51YSAzLjAtQ1VSUkVOVCBGcmVlQlNEIDMuMC1DVVJSRU5UICMxMjE6IFRodSBTZXAgIDMKIzEKIzE6MjE6NDQgRUVTVCAxOTk4ICAgICBhcmNoZXJAZ3JhcGUuY2Fycmllci5raWV2LnVhOi91c3Ivc3JjL3N5cy9jb21waWxlL0dSQVBFCiNpCiMzODYKIwojICAgRGVzY3JpcHRpb24KIyAgICAgICAgICAKIwojVGhlIHByb2JsZW0gZmlyc3QgYXBwZWFyZWQgd2hlbiBHTlUgYXdrIGluIDMuMC1DVVJSRU5UIHdhcyBhcGdyYWRlZCB0bwojMy4wLjMuIEkgcnVuIEMtTmV3cywgd2hpY2ggdXNlcyBhd2sgZXh0ZW5zaXZlbHkuIEFmdGVyIGF3ayBhcGdyYWRlIEMtTmV3cwojZXhwaXJlIHN0b3BwZWQgdG8gd29yay4gSXQgYXBwZWFyZWQgdGhhdCBzb21lIEdOVSBhd2sgMy4wLjMgcHJvZ3JhbW1zIHdoZW4KI2dpdmVuIGFic29sdXRlbHkgbGVnaXRpbWF0ZSBpbnB1dCBmYWlsLCBnaXZpbmcgb3V0IGEgbnVtYmVyIG9mIG1lc3NhZ2VzOgojCiNhd2sgaW4gZnJlZSgpOiB3YXJuaW5nOiBjaHVuayBpcyBhbHJlYWR5IGZyZWUuCiMKIyAgIEhvdy1Uby1SZXBlYXQKIyAgICAgICAgICAKIwojUnVuIHRoZSBmb2xsb3dpbmcgYXdrIHByb2dyYW0gKGl0IGlzIGN1dCBvdXQgb2YgQy1OZXdzIGV4cGlyZSBzY3JpcHRzKS4KI0kgd2FzIG5vdCBhYmxlIHRvIGN1dCBpdCBkb3duIG1vcmUgLS0gb21pdHRpbmcgc29tZSBwb3J0aW9ucyBvZiB0aGUKI2NvZGUgKGUuZy4gT0ZNVCBsaW5lKSwgbWFrZSBlcnJvciBnbyBhd2F5IGluIHRoaXMgY2FzZSwgdGhvdWdoIGl0CiNjZXJ0YWlubHkgZG9lcyBub3QgZml4IGF3ay4KIwojLS0tLS0tLS0tLS0tLS0tLWN1dC1oZXJlLS0tLS0tLS0tLS0tLS0tLQojIS91c3IvYmluL2F3ayAtZgpCRUdJTiB7CiAgICAgICAgT0ZNVCA9ICIlLjEyZyIKICAgICAgICBiaWcgPSA5OTk5OTk5OTk5OQogICAgICAgIGxvd2VzdCA9IGJpZwogICAgICAgIHNtYWxsID0gMAogICAgICAgIGhpZ2hlc3QgPSBzbWFsbAp9CgokMCB+IC9eWzAtOV0rJC8gewogICAgICAgIGlmICgkMSA8IGxvd2VzdCkKICAgICAgICAgICAgICAgIGxvd2VzdCA9ICQxCiAgICAgICAgaWYgKCQxID4gaGlnaGVzdCkKICAgICAgICAgICAgICAgIGhpZ2hlc3QgPSAkMQogICAgICAgIG5leHQKfQoKJDAgfiAvXlthLXpdKy8gewogICAgICAgIHByaW50IGRpciwgaGlnaGVzdCwgbG93ZXN0CiAgICAgICAgZGlyID0gJDAKICAgICAgICBsb3dlc3QgPSBiaWcKICAgICAgICBoaWdoZXN0ID0gc21hbGwKfQojLS0tLS0tLS0tLS0tLS0tLWN1dC1oZXJlLS0tLS0tLS0t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cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgR0FXSyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMKIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3LCBVU0EKClNIRUxMID0gL2Jpbi9zaApBV0sgPSAuLi9nYXdrCkFXSyA9IGF3awpBV0sgPSAuLi8uLi9hLm91dApDTVAgPSBjbXAKCnNyY2RpciA9IEBzcmNkaXJACnNyY2RpciA9IC4KVlBBVEggPSBAc3JjZGlyQApWUEFUSCA9ICQoc3JjZGlyKQoKYWxsOgliaWd0ZXN0CgojIGJpZ3Rlc3Q6CWJhc2ljIHVuaXgtdGVzdHMgZ2F3ay5leHRlbnNpb25zCmJpZ3Rlc3Q6CWJhc2ljIHVuaXgtdGVzdHMKCiMgVGVzdHMgaW4gYWxwaGFiZXRpY2FsIG9yZGVyIGZvciBwcm9ncmVzcyBmZWVkYmFjazoKIwojIFJlbW92ZSBiZWNhdXNlIG9mIHVuZXhwZWN0ZWQgZ2F3ayBleHRlbnNpb25zOgojCWF3a3BhdGggY2xzZmxuYW0gZm5hc2dubSBmbmFyeXNjbCBsaXRvY3QgdHJhZGFuY2gKIwojIFJlbW92ZSBiZWNhdXNlIG9mIGRpZmZlcmVuY2VzIGZyb20gZ2F3ayBvdXRwdXQ6CiMJYXJnYXJyYXkgYXJyYXlwYXJtIGNvbnZmbXQgZGVmcmVmIGZuYXJyYXkgZm5hcnlkZWwgZnNicyBnc3ViYXNnbgojCWhzcHJpbnQgbmFzdHkgbmZzZXQgbm9lZmZlY3Qgbm9mbXRjaCBub25sIG5vcGFybXMgcGFyYW1kdXAgcGFyc2VtZQojCXBybWFyc2NsIHBydG9ldmFsIHJhbmQgcmVpbmRvcHMgcmVzcGxpdCBzY2xmb3JpbiBzY2xpZmluCiMKIyBSZW1vdmUgYmVjYXVzZSBpdCBoYW5ncyBvbiBJbnRlbCBQZW50aXVtIEdOVS9MaW51eCB3aXRoIGxjYzoKIwljbG9iYmVyCgpiYXNpYzogICAgYW5jaGdzdWIgYXJyYXlyZWYgYXNnZXh0IGJhY2s4OSBiYWNrZ3N1YiBjaGlsZGluIGNvbXBhcmUgZGVsYXJwcm0gXAoJICBkeW5saiBlb2ZzcGxpdCBmbGRjaGcgZmxkY2hnbmYgZnNycyBmc3RhYnBsdXMgZnVuc3RhY2sgZ2V0bGluZSBcCgkgIGdldG5yMnRiIGdldG5yMnRtIGdzdWJ0ZXN0IGludGVzdCBpbnRwcmVjIGxvbmd3cmRzIG1hdGggbWVzc2FnZXMgXAoJICBtbWFwOGsgbXNnIG5lZ2V4cCBuZmxkc3RyIG5sZmxkc2VwIG5saW5zdHIgbm9ycyBudW1zdWJzdHIgb2ZtdCBcCgkgIG9mbXRiaWcgb2ZtdHMgcGNudHBsdXMgcHJkdXB2YWwgcHJtcmV1c2UgcHJ0MWV2YWwgcmVwYXJzZSBycyBcCgkgIHJzd2hpdGUgc3BsaXRhcmd2IHNwbGl0ZGVmIHNwbGl0dmFyIHNwbGl0d2h0IHNwcmludGZjIHN1YnN0ciBcCgkgIHN3YXBsbnMgdHdlYWtmbGQgemVyb2ZsYWcKCiMgdW5peC10ZXN0czogZmZsdXNoIGdldGxuaGQgcGlkIHBpcGVpbzEgcGlwZWlvMiBwb3VuZGJhbmcgc3RyZnRsbmcKIwojIFJlbW92ZSBiZWNhdXNlIG9mIGdhd2sgZXh0ZW5zaW9uczoKIwlwaXBlaW8xIHBpcGVpbzIgcG91bmRiYW5nIHN0cmZ0bG5nCiMKIyBSZW1vdmUgYmVjYXVzZSBvZiBkaWZmZXJlbmNlcyBmcm9tIGdhd2sgb3V0cHV0OgojCWZmbHVzaCBpbmZ0ZXN0IHBpZAoKdW5peC10ZXN0czogZ2V0bG5oZAoKZ2F3ay5leHRlbnNpb25zOiBmaWVsZHdkdGggaWducmNhc2UgcG9zaXggbWFueWZpbGVzIGlnbmNmcyBhcmd0ZXN0IFwKCQliYWRhcmdzIHN0cmZ0aW1lIGdlbnN1YiBnbnVyZW9wcyByZWludCBub25kZWMgZnNmd2ZzIFwKCQlsaW50IHByb2NpbmZzCgojIGV4dHJhOglyZWd0ZXN0IGluZnRlc3QKIwojIFJlbW92ZSBiZWNhdXNlIG9mIGRpZmZlcmVuY2VzIGZyb20gZ2F3ayBvdXRwdXQ6CiMJaW5mdGVzdApleHRyYToJcmVndGVzdAoKcG91bmRiYW5nOjoKCUBjcCAkKEFXSykgL3RtcC9nYXdrICYmICQoc3JjZGlyKS9wb3VuZGJhbmcgJChzcmNkaXIpL3BvdW5kYmFuZyA+X2BiYXNlbmFtZSAkQGAKCUBybSAtZiAvdG1wL2dhd2sKCSQoQ01QKSAkKHNyY2RpcikvcG91bmRiYW5nLm9rIF9gYmFzZW5hbWUgJEBgICYmIHJtIC1mIF9gYmFzZW5hbWUgJEBgCgptc2c6OgoJI0BlY2hvICdBbnkgb3V0cHV0IGZyb20gImNtcCIgaXMgYmFkIG5ld3MsIGV4Y2VwdCBmb3IgZnAgZGlmZmVyZW5jZXMnCgpzd2FwbG5zOjoKCUAkKEFXSykgLWYgJChzcmNkaXIpL3N3YXBsbnMuYXdrICQoc3JjZGlyKS9zd2FwbG5zLmluID5fJEAKCSQoQ01QKSAkKHNyY2Rpcikvc3dhcGxucy5vayBfJEAgJiYgcm0gLWYgXyRACgptZXNzYWdlczo6CglAJChBV0spIC1mICQoc3JjZGlyKS9tZXNzYWdlcy5hd2sgPm91dDIgMj5vdXQzCgkkKENNUCkgJChzcmNkaXIpL291dDEub2sgb3V0MSAmJiAkKENNUCkgJChzcmNkaXIpL291dDIub2sgb3V0MiAmJiAkKENNUCkgJChzcmNkaXIpL291dDMub2sgb3V0MyAmJiBybSAtZiBvdXQxIG91dDIgb3V0MwoKYXJnYXJyYXk6OgoJQGNhc2UgJChzcmNkaXIpIGluIFwKCS4pCTogOzsgXAoJKikJY3AgJChzcmNkaXIpL2FyZ2FycmF5LmluIC4gOzsgXAoJZXNhYwoJQFRFU1Q9dGVzdCBlY2hvIGp1c3QgYSB0ZXN0IHwgJChBV0spIC1mICQoc3JjZGlyKS9hcmdhcnJheS5hd2sgLi9hcmdhcnJheS5pbiAtID5fJEAKCSQoQ01QKSAkKHNyY2RpcikvYXJnYXJyYXkub2sgXyRAICYmIHJtIC1mIF8kQAoKZnN0YWJwbHVzOjoKCUBlY2hvICcxCQkyJyB8ICQoQVdLKSAtZiAkKHNyY2RpcikvZnN0YWJwbHVzLmF3ayA+XyRACgkkKENNUCkgJChzcmNkaXIpL2ZzdGFicGx1cy5vayBfJEAgJiYgcm0gLWYgXyRACgpmc3JzOjoKCUAkKEFXSykgLWYgJChzcmNkaXIpL2ZzcnMuYXdrICQoc3JjZGlyKS9mc3JzLmluID5fJEAKCSQoQ01QKSAkKHNyY2RpcikvZnNycy5vayBfJEAgJiYgcm0gLWYgXyRACgppZ25jZnM6OgoJQCQoQVdLKSAtZiAkKHNyY2RpcikvaWduY2ZzLmF3ayAkKHNyY2RpcikvaWduY2ZzLmluID5fJEAKCSQoQ01QKSAkKHNyY2RpcikvaWduY2ZzLm9rIF8kQCAmJiBybSAtZiBfJEAKCmxvbmd3cmRzOjoKCUAkKEFXSykgLWYgJChzcmNkaXIpL2xvbmd3cmRzLmF3ayAkKHNyY2RpcikvbWFucGFnZSB8IExDX0FMTD1DIHNvcnQgPl8kQAoJJChDTVApICQoc3JjZGlyKS9sb25nd3Jkcy5vayBfJEAgJiYgcm0gLWYgXyRACgpmaWVsZHdkdGg6OgoJQGVjaG8gJzEyMzQ1Njc4OScgfCAkKEFXSykgLXYgRklFTERXSURUSFM9IjIgMyA0IiAneyBwcmludCAkJDJ9JyA+XyRACgkkKENNUCkgJChzcmNkaXIpL2ZpZWxkd2R0aC5vayBfJEAgJiYgcm0gLWYgXyRACgppZ25yY2FzZTo6CglAZWNobyB4WXogfCAkKEFXSykgLXYgSUdOT1JFQ0FTRT0xICd7IHN1YigveS8sICIiKTsgcHJpbnR9JyA+XyRACgkkKENNUCkgJChzcmNkaXIpL2lnbnJjYXNlLm9rIF8kQCAmJiBybSAtZiBfJEAKCnJlZ3Rlc3Q6OgoJQGVjaG8gJ1NvbWUgb2YgdGhlIG91dHB1dCBmcm9tIHJlZ3Rlc3QgaXMgdmVyeSBzeXN0ZW0gc3BlY2lmaWMsIGRvIG5vdCcKCUBlY2hvICdiZSBkaXN0cmVzc2VkIGlmIHlvdXIgb3V0cHV0IGRpZmZlcnMgZnJvbSB0aGF0IGRpc3RyaWJ1dGVkLicKCUBlY2hvICdNYW51YWwgaW5zcGVjdGlvbiBpcyBjYWxsZWQgZm9yLicKCUFXSz1gcHdkYC8kKEFXSykgJChzcmNkaXIpL3JlZ3Rlc3QKCnBvc2l4OjoKCUBlY2hvICcxOjIsMyA0JyB8ICQoQVdLKSAtZiAkKHNyY2RpcikvcG9zaXguYXdrID5fJEAKCSQoQ01QKSAkKHNyY2RpcikvcG9zaXgub2sgXyRAICYmIHJtIC1mIF8kQAoKbWFueWZpbGVzOjoKCUBybSAtcmYganVuawoJQG1rZGlyIGp1bmsKCUAkKEFXSykgJ0JFR0lOIHsgZm9yIChpID0gMTsgaSA8PSAzMDA7IGkrKykgcHJpbnQgaSwgaX0nID5fJEAKCUAkKEFXSykgLWYgJChzcmNkaXIpL21hbnlmaWxlcy5hd2sgXyRAIF8kQAoJQGVjaG8gIlRoaXMgbnVtYmVyIGJldHRlciBiZSAxIC0+IiB8IHRyIC1kICdcMDEyJwoJQHdjIC1sIGp1bmsvKiB8ICQoQVdLKSAnJCQxICE9IDInIHwgd2MgLWwKCUBybSAtcmYganVuayBfJEAKCmNvbXBhcmU6OgoJQCQoQVdLKSAtZiAkKHNyY2RpcikvY29tcGFyZS5hd2sgMCAxICQoc3JjZGlyKS9jb21wYXJlLmluID5fJEAKCSQoQ01QKSAkKHNyY2RpcikvY29tcGFyZS5vayBfJEAgJiYgcm0gLWYgXyRACgphcnJheXJlZjo6CglAJChBV0spIC1mICQoc3JjZGlyKS9hcnJheXJlZi5hd2sgPl8kQAoJJChDTVApICQoc3JjZGlyKS9hcnJheXJlZi5vayBfJEAgJiYgcm0gLWYgXyRACgpyczo6CglAJChBV0spIC12IFJTPSIiICd7IHByaW50ICQkMSwgJCQyfScgJChzcmNkaXIpL3JzLmluID5fJEAKCSQoQ01QKSAkKHNyY2RpcikvcnMub2sgXyRAICYmIHJtIC1mIF8kQAoKZnNiczo6CglAJChBV0spIC12IEZTPSdcJyAneyBwcmludCAkJDEsICQkMiB9JyAkKHNyY2RpcikvZnNicy5pbiA+XyRACgkkKENNUCkgJChzcmNkaXIpL2ZzYnMub2sgXyRAICYmIHJtIC1mIF8kQAoKaW5mdGVzdDo6CglAZWNobyBUaGlzIHRlc3QgaXMgdmVyeSBtYWNoaW5lIHNwZWNpZmljLi4uCglAJChBV0spIC1mICQoc3JjZGlyKS9pbmZ0ZXN0LmF3ayA+XyRACgkkKENNUCkgJChzcmNkaXIpL2luZnRlc3Qub2sgXyRAICYmIHJtIC1mIF8kQAoKZ2V0bGluZTo6CglAJChBV0spIC1mICQoc3JjZGlyKS9nZXRsaW5lLmF3ayAkKHNyY2RpcikvZ2V0bGluZS5hd2sgJChzcmNkaXIpL2dldGxpbmUuYXdrID5fJEAKCSQoQ01QKSAkKHNyY2RpcikvZ2V0bGluZS5vayBfJEAgJiYgcm0gLWYgXyRACgpyYW5kOjoKCUAkKEFXSykgLWYgJChzcmNkaXIpL3JhbmQuYXdrID5fJEAKCSQoQ01QKSAkKHNyY2RpcikvcmFuZC5vayBfJEAgJiYgcm0gLWYgXyRACgpuZWdleHA6OgoJQCQoQVdLKSAnQkVHSU4geyBhID0gLTI7IHByaW50IDEwXmEgfScgPl8kQAoJJChDTVApICQoc3JjZGlyKS9uZWdleHAub2sgXyRAICYmIHJtIC1mIF8kQAoKYXNnZXh0OjoKCUAkKEFXSykgLWYgJChzcmNkaXIpL2FzZ2V4dC5hd2sgJChzcmNkaXIpL2FzZ2V4dC5pbiA+XyRACgkkKENNUCkgJChzcmNkaXIpL2FzZ2V4dC5vayBfJEAgJiYgcm0gLWYgXyRACgphbmNoZ3N1Yjo6CglAJChBV0spIC1mICQoc3JjZGlyKS9hbmNoZ3N1Yi5hd2sgJChzcmNkaXIpL2FuY2hnc3ViLmluID5fJEAKCSQoQ01QKSAkKHNyY2RpcikvYW5jaGdzdWIub2sgXyRAICYmIHJtIC1mIF8kQAoKc3BsaXRhcmd2OjoKCUAkKEFXSykgLWYgJChzcmNkaXIpL3NwbGl0YXJndi5hd2sgJChzcmNkaXIpL3NwbGl0YXJndi5pbiA+XyRACgkkKENNUCkgJChzcmNkaXIpL3NwbGl0YXJndi5vayBfJEAgJiYgcm0gLWYgXyRACgphd2twYXRoOjoKCUBBV0tQQVRIPSIkKHNyY2Rpcik6JChzcmNkaXIpL2xpYiIgJChBV0spIC1mIGF3a3BhdGguYXdrID5fJEAKCSQoQ01QKSAkKHNyY2RpcikvYXdrcGF0aC5vayBfJEAgJiYgcm0gLWYgXyRACgpuZnNldDo6CglAJChBV0spIC1mICQoc3JjZGlyKS9uZnNldC5hd2sgJChzcmNkaXIpL25mc2V0LmluID5fJEAKCSQoQ01QKSAkKHNyY2RpcikvbmZzZXQub2sgXyRAICYmIHJtIC1mIF8kQAoKcmVwYXJzZTo6CglAJChBV0spIC1mICQoc3JjZGlyKS9yZXBhcnNlLmF3ayAkKHNyY2RpcikvcmVwYXJzZS5pbiA+XyRACgkkKENNUCkgJChzcmNkaXIpL3JlcGFyc2Uub2sgXyRAICYmIHJtIC1mIF8kQAoKYXJndGVzdDo6CglAJChBV0spIC1mICQoc3JjZGlyKS9hcmd0ZXN0LmF3ayAteCAteSBhYmMgPl8kQAoJJChDTVApICQoc3JjZGlyKS9hcmd0ZXN0Lm9rIF8kQCAmJiBybSAtZiBfJEAKCmJhZGFyZ3M6OgoJQC0kKEFXSykgLWYgMj4mMSB8IGdyZXAgLXYgcGF0Y2hsZXZlbCA+XyRACgkkKENNUCkgJChzcmNkaXIpL2JhZGFyZ3Mub2sgXyRAICYmIHJtIC1mIF8kQAoKY29udmZtdDo6CglAJChBV0spIC1mICQoc3JjZGlyKS9jb252Zm10LmF3ayA+XyRACgkkKENNUCkgJChzcmNkaXIpL2NvbnZmbXQub2sgXyRAICYmIHJtIC1mIF8kQAoKYXJyYXlwYXJtOjoKCUAtQVdLUEFUSD0kKHNyY2RpcikgJChBV0spIC1mIGFycmF5cGFybS5hd2sgPl8kQCAyPiYxIHx8IGV4aXQgMAoJJChDTVApICQoc3JjZGlyKS9hcnJheXBhcm0ub2sgXyRAICYmIHJtIC1mIF8kQAoKcGFyYW1kdXA6OgoJQC1BV0tQQVRIPSQoc3JjZGlyKSAkKEFXSykgLWYgcGFyYW1kdXAuYXdrID5fJEAgMj4mMSB8fCBleGl0IDAKCSQoQ01QKSAkKHNyY2RpcikvcGFyYW1kdXAub2sgXyRAICYmIHJtIC1mIF8kQAoKbm9ubDo6CglALUFXS1BBVEg9JChzcmNkaXIpICQoQVdLKSAtLWxpbnQgLWYgbm9ubC5hd2sgL2Rldi9udWxsID5fJEAgMj4mMQoJJChDTVApICQoc3JjZGlyKS9ub25sLm9rIF8kQCAmJiBybSAtZiBfJEAKCmRlZnJlZjo6CglALUFXS1BBVEg9JChzcmNkaXIpICQoQVdLKSAtLWxpbnQgLWYgZGVmcmVmLmF3ayA+XyRAIDI+JjEgfHwgZXhpdCAwCgkkKENNUCkgJChzcmNkaXIpL2RlZnJlZi5vayBfJEAgJiYgcm0gLWYgXyRACgpub2ZtdGNoOjoKCUAtQVdLUEFUSD0kKHNyY2RpcikgJChBV0spIC0tbGludCAtZiBub2ZtdGNoLmF3ayA+XyRAIDI+JjEKCSQoQ01QKSAkKHNyY2Rpcikvbm9mbXRjaC5vayBfJEAgJiYgcm0gLWYgXyRACgpzdHJmdGltZTo6Cgk6IHRoaXMgdGVzdCBjb3VsZCBmYWlsIG9uIHNsb3cgbWFjaGluZXMgb3Igb24gYSBzZWNvbmQgYm91bmRhcnksCgk6IHNvIGlmIGl0IGRvZXMsIGRvdWJsZSBjaGVjayB0aGUgYWN0dWFsIHJlc3VsdHMKCUBMQ19BTEw9QzsgZXhwb3J0IExDX0FMTDsgTEFORz1DOyBleHBvcnQgTEFORzsgXAoJZGF0ZSB8ICQoQVdLKSAneyAkJDMgPSBzcHJpbnRmKCIlMDJkIiwgJCQzICsgMCkgOyBcCglwcmludCA+ICJzdHJmdGltZS5vayIgOyBcCglwcmludCBzdHJmdGltZSgpID4gIidfJEAnIiB9JwoJJChDTVApIHN0cmZ0aW1lLm9rIF8kQCAmJiBybSAtZiBfJEAgc3RyZnRpbWUub2sgfHwgZXhpdCAwCgpsaXRvY3Q6OgoJQGVjaG8gYWIgfCAkKEFXSykgLS10cmFkaXRpb25hbCAtZiAkKHNyY2RpcikvbGl0b2N0LmF3ayA+XyRACgkkKENNUCkgJChzcmNkaXIpL2xpdG9jdC5vayBfJEAgJiYgcm0gLWYgXyRACgpnZW5zdWI6OgoJQCQoQVdLKSAtZiAkKHNyY2RpcikvZ2Vuc3ViLmF3ayAkKHNyY2RpcikvZ2Vuc3ViLmluID5fJEAKCSQoQ01QKSAkKHNyY2RpcikvZ2Vuc3ViLm9rIF8kQCAmJiBybSAtZiBfJEAKCnJlc3BsaXQ6OgoJQGVjaG8gYTpiOmMgZDplOmYgfCAkKEFXSykgJ3sgRlMgPSAiOiI7ICQkMCA9ICQkMDsgcHJpbnQgJCQyIH0nID4gXyRACgkkKENNUCkgJChzcmNkaXIpL3Jlc3BsaXQub2sgXyRAICYmIHJtIC1mIF8kQAoKcnN3aGl0ZTo6CglAJChBV0spIC1mICQoc3JjZGlyKS9yc3doaXRlLmF3ayAkKHNyY2RpcikvcnN3aGl0ZS5pbiA+IF8kQAoJJChDTVApICQoc3JjZGlyKS9yc3doaXRlLm9rIF8kQCAmJiBybSAtZiBfJEAKCnBybWFyc2NsOjoKCUAtQVdLUEFUSD0kKHNyY2RpcikgJChBV0spIC1mIHBybWFyc2NsLmF3ayA+IF8kQCAyPiYxIHx8IGV4aXQgMAoJJChDTVApICQoc3JjZGlyKS9wcm1hcnNjbC5vayBfJEAgJiYgcm0gLWYgXyRACgpzY2xmb3Jpbjo6CglALUFXS1BBVEg9JChzcmNkaXIpICQoQVdLKSAtZiBzY2xmb3Jpbi5hd2sgPiBfJEAgMj4mMSB8fCBleGl0IDAKCSQoQ01QKSAkKHNyY2Rpcikvc2NsZm9yaW4ub2sgXyRAICYmIHJtIC1mIF8kQAoKc2NsaWZpbjo6CglALUFXS1BBVEg9JChzcmNkaXIpICQoQVdLKSAtZiBzY2xpZmluLmF3ayA+IF8kQCAyPiYxIHx8IGV4aXQgMAoJJChDTVApICQoc3JjZGlyKS9zY2xpZmluLm9rIF8kQCAmJiBybSAtZiBfJEAKCmludHByZWM6OgoJQC0kKEFXSykgLWYgJChzcmNkaXIpL2ludHByZWMuYXdrID4gXyRAIDI+JjEKCSQoQ01QKSAkKHNyY2RpcikvaW50cHJlYy5vayBfJEAgJiYgcm0gLWYgXyRACgpjaGlsZGluOjoKCUBlY2hvIGhpIHwgJChBV0spICdCRUdJTiB7ICJjYXQiIHwgZ2V0bGluZTsgcHJpbnQ7IGNsb3NlKCJjYXQiKSB9JyA+IF8kQAoJJChDTVApICQoc3JjZGlyKS9jaGlsZGluLm9rIF8kQCAmJiBybSAtZiBfJEAKCm5vZWZmZWN0OjoKCUAtQVdLUEFUSD0kKHNyY2RpcikgJChBV0spIC0tbGludCAtZiBub2VmZmVjdC5hd2sgPiBfJEAgMj4mMQoJJChDTVApICQoc3JjZGlyKS9ub2VmZmVjdC5vayBfJEAgJiYgcm0gLWYgXyRACgpudW1zdWJzdHI6OgoJQC1BV0tQQVRIPSQoc3JjZGlyKSAkKEFXSykgLWYgbnVtc3Vic3RyLmF3ayAkKHNyY2RpcikvbnVtc3Vic3RyLmluID5fJEAKCSQoQ01QKSAkKHNyY2RpcikvbnVtc3Vic3RyLm9rIF8kQCAmJiBybSAtZiBfJEAKCmdudXJlb3BzOjoKCUAkKEFXSykgLWYgJChzcmNkaXIpL2dudXJlb3BzLmF3ayA+XyRACgkkKENNUCkgJChzcmNkaXIpL2dudXJlb3BzLm9rIF8kQCAmJiBybSAtZiBfJEAKCnBjbnRwbHVzOjoKCUAkKEFXSykgLWYgJChzcmNkaXIpL3BjbnRwbHVzLmF3ayA+XyRACgkkKENNUCkgJChzcmNkaXIpL3BjbnRwbHVzLm9rIF8kQCAmJiBybSAtZiBfJEAKCnBybXJldXNlOjoKCUAkKEFXSykgLWYgJChzcmNkaXIpL3BybXJldXNlLmF3ayA+XyRACgkkKENNUCkgJChzcmNkaXIpL3BybXJldXNlLm9rIF8kQCAmJiBybSAtZiBfJEAKCm1hdGg6OgoJQCQoQVdLKSAtZiAkKHNyY2RpcikvbWF0aC5hd2sgPl8kQAoJJChDTVApICQoc3JjZGlyKS9tYXRoLm9rIF8kQCAmJiBybSAtZiBfJEAKCmZmbHVzaDo6CglAJChzcmNkaXIpL2ZmbHVzaC5zaCA+XyRACgkkKENNUCkgJChzcmNkaXIpL2ZmbHVzaC5vayBfJEAgJiYgcm0gLWYgXyRACgpmbGRjaGc6OgoJQCQoQVdLKSAtZiAkKHNyY2RpcikvZmxkY2hnLmF3ayAkKHNyY2RpcikvZmxkY2hnLmluID5fJEAKCSQoQ01QKSAkKHNyY2RpcikvZmxkY2hnLm9rIF8kQCAmJiBybSAtZiBfJEAKCmZsZGNoZ25mOjoKCUAkKEFXSykgLWYgJChzcmNkaXIpL2ZsZGNoZ25mLmF3ayAkKHNyY2RpcikvZmxkY2hnbmYuaW4gPl8kQAoJJChDTVApICQoc3JjZGlyKS9mbGRjaGduZi5vayBfJEAgJiYgcm0gLWYgXyRACgpyZWluZG9wczo6CglAJChBV0spIC1mICQoc3JjZGlyKS9yZWluZG9wcy5hd2sgJChzcmNkaXIpL3JlaW5kb3BzLmluID5fJEAKCSQoQ01QKSAkKHNyY2RpcikvcmVpbmRvcHMub2sgXyRAICYmIHJtIC1mIF8kQAoKc3ByaW50ZmM6OgoJQCQoQVdLKSAtZiAkKHNyY2Rpcikvc3ByaW50ZmMuYXdrICQoc3JjZGlyKS9zcHJpbnRmYy5pbiA+XyRACgkkKENNUCkgJChzcmNkaXIpL3NwcmludGZjLm9rIF8kQCAmJiBybSAtZiBfJEAKCmdldGxuaGQ6OgoJQCQoQVdLKSAtZiAkKHNyY2RpcikvZ2V0bG5oZC5hd2sgPl8kQAoJJChDTVApICQoc3JjZGlyKS9nZXRsbmhkLm9rIF8kQCAmJiBybSAtZiBfJEAKCmJhY2tnc3ViOjoKCUAkKEFXSykgLWYgJChzcmNkaXIpL2JhY2tnc3ViLmF3ayAkKHNyY2RpcikvYmFja2dzdWIuaW4gPl8kQAoJJChDTVApICQoc3JjZGlyKS9iYWNrZ3N1Yi5vayBfJEAgJiYgcm0gLWYgXyRACgp0d2Vha2ZsZDo6CglAJChBV0spIC1mICQoc3JjZGlyKS90d2Vha2ZsZC5hd2sgJChzcmNkaXIpL3R3ZWFrZmxkLmluID5fJEAKCUBybSAtZiBlcnJvcnMuY2xlYW51cAoJJChDTVApICQoc3JjZGlyKS90d2Vha2ZsZC5vayBfJEAgJiYgcm0gLWYgXyRACgpjbHNmbG5hbTo6CglAJChBV0spIC1mICQoc3JjZGlyKS9jbHNmbG5hbS5hd2sgJChzcmNkaXIpL2Nsc2ZsbmFtLmluID5fJEAKCSQoQ01QKSAkKHNyY2RpcikvY2xzZmxuYW0ub2sgXyRAICYmIHJtIC1mIF8kQAoKbW1hcDhrOjoKCUAkKEFXSykgJ3sgcHJpbnQgfScgJChzcmNkaXIpL21tYXA4ay5pbiA+XyRACgkkKENNUCkgJChzcmNkaXIpL21tYXA4ay5pbiBfJEAgJiYgcm0gLWYgXyRACgpmbmFycmF5OjoKCUAtQVdLUEFUSD0kKHNyY2RpcikgJChBV0spIC1mIGZuYXJyYXkuYXdrID5fJEAgMj4mMSB8fCBleGl0IDAKCSQoQ01QKSAkKHNyY2RpcikvZm5hcnJheS5vayBfJEAgJiYgcm0gLWYgXyRACgpkeW5sajo6CglAJChBV0spIC1mICQoc3JjZGlyKS9keW5sai5hd2sgPl8kQAoJJChDTVApICQoc3JjZGlyKS9keW5sai5vayBfJEAgJiYgcm0gLWYgXyRACgpzdWJzdHI6OgoJQCQoQVdLKSAtZiAkKHNyY2Rpcikvc3Vic3RyLmF3ayA+XyRACgkkKENNUCkgJChzcmNkaXIpL3N1YnN0ci5vayBfJEAgJiYgcm0gLWYgXyRACgplb2ZzcGxpdDo6CglAJChBV0spIC1mICQoc3JjZGlyKS9lb2ZzcGxpdC5hd2sgPl8kQAoJJChDTVApICQoc3JjZGlyKS9lb2ZzcGxpdC5vayBfJEAgJiYgcm0gLWYgXyRACgpwcnQxZXZhbDo6CglAJChBV0spIC1mICQoc3JjZGlyKS9wcnQxZXZhbC5hd2sgPl8kQAoJJChDTVApICQoc3JjZGlyKS9wcnQxZXZhbC5vayBfJEAgJiYgcm0gLWYgXyRACgpnc3ViYXNnbjo6CglALUFXS1BBVEg9JChzcmNkaXIpICQoQVdLKSAtZiBnc3ViYXNnbi5hd2sgPl8kQCAyPiYxIHx8IGV4aXQgMAoJJChDTVApICQoc3JjZGlyKS9nc3ViYXNnbi5vayBfJEAgJiYgcm0gLWYgXyRACgpwcnRvZXZhbDo6CglAJChBV0spIC1mICQoc3JjZGlyKS9wcnRvZXZhbC5hd2sgPl8kQAoJJChDTVApICQoc3JjZGlyKS9wcnRvZXZhbC5vayBfJEAgJiYgcm0gLWYgXyRACgpnc3VidGVzdDo6CglAJChBV0spIC1mICQoc3JjZGlyKS9nc3VidGVzdC5hd2sgPl8kQAoJJChDTVApICQoc3JjZGlyKS9nc3VidGVzdC5vayBfJEAgJiYgcm0gLWYgXyRACgpzcGxpdHdodDo6CglAJChBV0spIC1mICQoc3JjZGlyKS9zcGxpdHdodC5hd2sgPl8kQAoJJChDTVApICQoc3JjZGlyKS9zcGxpdHdodC5vayBfJEAgJiYgcm0gLWYgXyRACgpiYWNrODk6OgoJQCQoQVdLKSAnL2FcOGIvJyAkKHNyY2RpcikvYmFjazg5LmluID5fJEAKCSQoQ01QKSAkKHNyY2RpcikvYmFjazg5Lm9rIF8kQCAmJiBybSAtZiBfJEAKCnRyYWRhbmNoOjoKCUAkKEFXSykgLS10cmFkaXRpb25hbCAtZiAkKHNyY2RpcikvdHJhZGFuY2guYXdrICQoc3JjZGlyKS90cmFkYW5jaC5pbiA+XyRACgkkKENNUCkgJChzcmNkaXIpL3RyYWRhbmNoLm9rIF8kQCAmJiBybSAtZiBfJEAKCm5sZmxkc2VwOjoKCUAkKEFXSykgLWYgJChzcmNkaXIpL25sZmxkc2VwLmF3ayAkKHNyY2RpcikvbmxmbGRzZXAuaW4gPiBfJEAKCSQoQ01QKSAkKHNyY2RpcikvbmxmbGRzZXAub2sgXyRAICYmIHJtIC1mIF8kQAoKc3BsaXR2YXI6OgoJQCQoQVdLKSAtZiAkKHNyY2Rpcikvc3BsaXR2YXIuYXdrICQoc3JjZGlyKS9zcGxpdHZhci5pbiA+XyRACgkkKENNUCkgJChzcmNkaXIpL3NwbGl0dmFyLm9rIF8kQCAmJiBybSAtZiBfJEAKCmludGVzdDo6CglAJChBV0spIC1mICQoc3JjZGlyKS9pbnRlc3QuYXdrID5fJEAKCSQoQ01QKSAkKHNyY2RpcikvaW50ZXN0Lm9rIF8kQCAmJiBybSAtZiBfJEAKCiMgQUlYIC9iaW4vc2ggZXhlYydzIHRoZSBsYXN0IGNvbW1hbmQgaW4gYSBsaXN0LCB0aGVyZWZvcmUgaXNzdWUgYSAiOiIKIyBjb21tYW5kIHNvIHRoYXQgcGlkLnNoIGlzIGZvcmsnZWQgYXMgYSBjaGlsZCBiZWZvcmUgYmVpbmcgZXhlYydlZC4KcGlkOjoKCUBBV0tQQVRIPSQoc3JjZGlyKSBBV0s9JChBV0spICQoU0hFTEwpICQoc3JjZGlyKS9waWQuc2ggJCQkJCA+IF9gYmFzZW5hbWUgJEBgIDsgOgoJJChDTVApICQoc3JjZGlyKS9waWQub2sgX2BiYXNlbmFtZSAkQGAgJiYgcm0gLWYgX2BiYXNlbmFtZSAkQGAgX2BiYXNlbmFtZSAkQGAuaW4KCnN0cmZ0bG5nOjoKCUBUWj1VVEM7IGV4cG9ydCBUWjsgJChBV0spIC1mICQoc3JjZGlyKS9zdHJmdGxuZy5hd2sgPl8kQAoJQGlmICQoQ01QKSAtcyAkKHNyY2Rpcikvc3RyZnRsbmcub2sgXyRAIDsgdGhlbiA6IDsgZWxzZSBcCiAJVFo9VVRDMDsgZXhwb3J0IFRaOyAkKEFXSykgLWYgJChzcmNkaXIpL3N0cmZ0bG5nLmF3ayA+XyRAIDsgXAoJZmkKCSQoQ01QKSAkKHNyY2Rpcikvc3RyZnRsbmcub2sgXyRAICYmIHJtIC1mIF8kQAoKbmZsZHN0cjo6CglAZWNobyB8ICQoQVdLKSAnJCQxID09IDAgeyBwcmludCAiYnVnIiB9JyA+IF8kQAoJJChDTVApICQoc3JjZGlyKS9uZmxkc3RyLm9rIF8kQCAmJiBybSAtZiBfJEAKCm5vcnM6OgoJQGVjaG8gQSBCIEMgRCBFIHwgdHIgLWQgJ1wxMicgfCAkKEFXSykgJ3sgcHJpbnQgJCRORiB9JyAtICQoc3JjZGlyKS9ub3JzLmluID4gXyRACgkkKENNUCkgJChzcmNkaXIpL25vcnMub2sgXyRAICYmIHJtIC1mIF8kQAoKZm5hcnlkZWw6OgoJQCQoQVdLKSAtZiAkKHNyY2RpcikvZm5hcnlkZWwuYXdrID5fJEAKCSQoQ01QKSAkKHNyY2RpcikvZm5hcnlkZWwub2sgXyRAICYmIHJtIC1mIF8kQAoKcmVpbnQ6OgoJQCQoQVdLKSAtLXJlLWludGVydmFsIC1mICQoc3JjZGlyKS9yZWludC5hd2sgJChzcmNkaXIpL3JlaW50LmluID5fJEAKCSQoQ01QKSAkKHNyY2RpcikvcmVpbnQub2sgXyRAICYmIHJtIC1mIF8kQAoKbm9wYXJtczo6CglALUFXS1BBVEg9JChzcmNkaXIpICQoQVdLKSAtZiBub3Bhcm1zLmF3ayA+XyRAIDI+JjEgfHwgZXhpdCAwCgkkKENNUCkgJChzcmNkaXIpL25vcGFybXMub2sgXyRAICYmIHJtIC1mIF8kQAoKcGlwZWlvMTo6CglAJChBV0spIC1mICQoc3JjZGlyKS9waXBlaW8xLmF3ayA+XyRACglAcm0gLWYgdGVzdDEgdGVzdDIKCSQoQ01QKSAkKHNyY2RpcikvcGlwZWlvMS5vayBfJEAgJiYgcm0gLWYgXyRACgpwaXBlaW8yOjoKCUAkKEFXSykgLXYgU1JDRElSPSQoc3JjZGlyKSAtZiAkKHNyY2RpcikvcGlwZWlvMi5hd2sgPl8kQAoJJChDTVApICQoc3JjZGlyKS9waXBlaW8yLm9rIF8kQCAmJiBybSAtZiBfJEAKCmZ1bnN0YWNrOjoKCUAkKEFXSykgLWYgJChzcmNkaXIpL2Z1bnN0YWNrLmF3ayAkKHNyY2RpcikvZnVuc3RhY2suaW4gPl8kQAoJJChDTVApICQoc3JjZGlyKS9mdW5zdGFjay5vayBfJEAgJiYgcm0gLWYgXyRACgpjbG9iYmVyOjoKCUAkKEFXSykgLWYgJChzcmNkaXIpL2Nsb2JiZXIuYXdrID5fJEAKCSQoQ01QKSAkKHNyY2RpcikvY2xvYmJlci5vayBzZXEgJiYgJChDTVApICQoc3JjZGlyKS9jbG9iYmVyLm9rIF8kQCAmJiBybSAtZiBfJEAKCUBybSAtZiBzZXEKCmRlbGFycHJtOjoKCUAkKEFXSykgLWYgJChzcmNkaXIpL2RlbGFycHJtLmF3ayA+XyRACgkkKENNUCkgJChzcmNkaXIpL2RlbGFycHJtLm9rIF8kQCAmJiBybSAtZiBfJEAKCnByZHVwdmFsOjoKCUAkKEFXSykgLWYgJChzcmNkaXIpL3ByZHVwdmFsLmF3ayAkKHNyY2RpcikvcHJkdXB2YWwuaW4gPl8kQAoJJChDTVApICQoc3JjZGlyKS9wcmR1cHZhbC5vayBfJEAgJiYgcm0gLWYgXyRACgpub25kZWM6OgoJQGlmIGdyZXAgQklUT1AgLi4vY29uZmlnLmggfCBncmVwIGRlZmluZSA+IC9kZXYvbnVsbDsgXAoJdGhlbiBcCgkJJChBV0spIC1mICQoc3JjZGlyKS9ub25kZWMuYXdrID5fJEA7IFwKCWVsc2UgXAoJCWNwICQoc3JjZGlyKS9ub25kZWMub2sgXyRAOyBcCglmaQoJJChDTVApICQoc3JjZGlyKS9ub25kZWMub2sgXyRAICYmIHJtIC1mIF8kQAoKbmFzdHk6OgoJQCQoQVdLKSAtZiAkKHNyY2RpcikvbmFzdHkuYXdrID5fJEAKCSQoQ01QKSAkKHNyY2RpcikvbmFzdHkub2sgXyRAICYmIHJtIC1mIF8kQAoKemVyb2ZsYWc6OgoJQCQoQVdLKSAtZiAkKHNyY2RpcikvemVyb2ZsYWcuYXdrID5fJEAKCSQoQ01QKSAkKHNyY2RpcikvemVyb2ZsYWcub2sgXyRAICYmIHJtIC1mIF8kQAoKZ2V0bnIydG06OgoJQCQoQVdLKSAtZiAkKHNyY2RpcikvZ2V0bnIydG0uYXdrICQoc3JjZGlyKS9nZXRucjJ0bS5pbiA+XyRACgkkKENNUCkgJChzcmNkaXIpL2dldG5yMnRtLm9rIF8kQCAmJiBybSAtZiBfJEAKCmdldG5yMnRiOjoKCUAkKEFXSykgLWYgJChzcmNkaXIpL2dldG5yMnRiLmF3ayAkKHNyY2RpcikvZ2V0bnIydGIuaW4gPl8kQAoJJChDTVApICQoc3JjZGlyKS9nZXRucjJ0Yi5vayBfJEAgJiYgcm0gLWYgXyRACgpubGluc3RyOjoKCUAkKEFXSykgLWYgJChzcmNkaXIpL25saW5zdHIuYXdrICQoc3JjZGlyKS9ubGluc3RyLmluID5fJEAKCSQoQ01QKSAkKHNyY2RpcikvbmxpbnN0ci5vayBfJEAgJiYgcm0gLWYgXyRACgpvZm10OjoKCUAkKEFXSykgLWYgJChzcmNkaXIpL29mbXQuYXdrICQoc3JjZGlyKS9vZm10LmluID5fJEAKCSQoQ01QKSAkKHNyY2Rpcikvb2ZtdC5vayBfJEAgJiYgcm0gLWYgXyRACgpoc3ByaW50OjoKCUAkKEFXSykgLWYgJChzcmNkaXIpL2hzcHJpbnQuYXdrID5fJEAKCSQoQ01QKSAkKHNyY2RpcikvaHNwcmludC5vayBfJEAgJiYgcm0gLWYgXyRACgpmc2Z3ZnM6OgoJQCQoQVdLKSAtZiAkKHNyY2RpcikvZnNmd2ZzLmF3ayAkKHNyY2RpcikvZnNmd2ZzLmluID5fJEAKCSQoQ01QKSAkKHNyY2RpcikvZnNmd2ZzLm9rIF8kQCAmJiBybSAtZiBfJEAKCm9mbXRzOjoKCUAkKEFXSykgLWYgJChzcmNkaXIpL29mbXRzLmF3ayAkKHNyY2Rpcikvb2ZtdHMuaW4gPl8kQAoJJChDTVApICQoc3JjZGlyKS9vZm10cy5vayBfJEAgJiYgcm0gLWYgXyRACgpwYXJzZW1lOjoKCUAtQVdLUEFUSD0kKHNyY2RpcikgJChBV0spIC1mIHBhcnNlbWUuYXdrID5fJEAgMj4mMSB8fCBleGl0IDAKCSQoQ01QKSAkKHNyY2RpcikvcGFyc2VtZS5vayBfJEAgJiYgcm0gLWYgXyRACgpzcGxpdGRlZjo6CglAJChBV0spIC1mICQoc3JjZGlyKS9zcGxpdGRlZi5hd2sgPl8kQAoJJChDTVApICQoc3JjZGlyKS9zcGxpdGRlZi5vayBfJEAgJiYgcm0gLWYgXyRACgpmbmFyeXNjbDo6CglAJChBV0spIC1mICQoc3JjZGlyKS9mbmFyeXNjbC5hd2sgPl8kQCAyPiYxIHx8IGV4aXQgMAoJJChDTVApICQoc3JjZGlyKS9mbmFyeXNjbC5vayBfJEAgJiYgcm0gLWYgXyRACgpmbmFzZ25tOjoKCUAkKEFXSykgLWYgJChzcmNkaXIpL2ZuYXNnbm0uYXdrIGZuYXNnbm0uaW4gPl8kQCAyPiYxIHx8IGV4aXQgMAoJJChDTVApICQoc3JjZGlyKS9mbmFzZ25tLm9rIF8kQCAmJiBybSAtZiBfJEAKCmxpbnQ6OgoJQC1BV0tQQVRIPSQoc3JjZGlyKSAkKEFXSykgLWYgbGludC5hd2sgPiBfJEAgMj4mMQoJJChDTVApICQoc3JjZGlyKS9saW50Lm9rIF8kQCAmJiBybSAtZiBfJEAKCnByb2NpbmZzOjoKCUAtJChBV0spIC1mICQoc3JjZGlyKS9wcm9jaW5mcy5hd2sgPiBfJEAKCSQoQ01QKSAkKHNyY2RpcikvcHJvY2luZnMub2sgXyRAICYmIHJtIC1mIF8kQAoKb2ZtdGJpZzo6CglAJChBV0spIC1mICQoc3JjZGlyKS9vZm10YmlnLmF3ayBvZm10YmlnLmluID5fJEAgMj4mMSB8fCBleGl0IDAKCSQoQ01QKSAkKHNyY2Rpcikvb2ZtdGJpZy5vayBfJEAgJiYgcm0gLWYgXyRACgpjbGVhbjoKCXJtIC1mciBfKiBjb3JlIGp1bmsgb3V0MSBvdXQyIG91dDMgc3RyZnRpbWUub2sgdGVzdDEgdGVzdDIgc2VxICp+CgpkaXN0Y2xlYW46IGNsZWFuCiMJcm0gLWYgTWFrZWZpbGUKCm1haW50YWluZXItY2xlYW46IGRpc3RjbGVhbgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGJlZWJlL3BpcGVpbzIuYXdrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDAwMzczNQAwNjUzMjU3NzAzNwAwMTM1NDEAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIyBGcm9tOiBtZWdhYWRtQHJpbmEucXVhbnR1bS5kZQojIFN1YmplY3Q6IEJ1ZyByZXBvcnQgLSBjbG9zaW5nIGRvd24gcGlwZXMgd2hpY2ggcmVhZCBmcm9tIHNoZWxsIGNvbQojIFRvOiBidWctZ251LXV0aWxzQHByZXAuYWkubWl0LmVkdQojIERhdGU6IFRodSwgMjcgRmViIDE5OTcgMjM6MTk6MTYgKzAxMDAgKENFVCkKIyBDQzogYXJub2xkQGdudS5haS5taXQuZWR1CiMgCiMgSGVsbG8gcGVvcGxlLAojIAojIGkgdGhpbmsgaSBmb3VuZCBhIGJ1ZyBvciBzb21ldGhpbmcgbXlzdGVyaW91cyBiZWhhdmlvdXIgaW4KIyBnYXdrIFZlcnNpb24gMy4wIHBhdGNobGV2ZWwgMC4KIyAKIyBJIGFtIHJ1bm5pbmcgb24gbGludXggMi4wLjI1IHVuZGVyIGJhc2guCiMgCiMgQ291bGQgeW91IHBsZWFzZSBoYXZlIGEgbG9vayBhdCB0aGUgZm9sbG93aW5nIGF3ayBwcm9ncmFtCiMgYW4gbGV0IG1lIHBsZWFzZSBrbm93LCBpZiB0aGlzIGlzIHdoYXQgaSBleHBlY3QgaXQgdG8sCiMgbmFtZWx5IGEgYnVnLgojIAojIC0tLS0tLS0tLS0tIGN1dCBoZXJlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkJFR0lOCXsKCQkJIyBPUyBpcyBsaW51eCAyLjAuMjUKCQkJIyBzaGVsbCBpcyBiYXNoCgkJCSMgR251IEF3ayAoZ2F3aykgMy4wLCBwYXRjaGxldmVsIDAKCQkJIyBUaGUgY29tbWFuZCBpIHR5cGVkIG9uIHRoZSBzaGVsbCB3YXMgImdhd2sgLWYgPHRoaXNfcHJvZz4gLSIKCgkJCSNjb20gPSAiY2FsIDAxIDE5OTciCgkJCWNvbSA9ICgiY2F0ICIgU1JDRElSICIvcGlwZWlvMi5pbiIpCgoJCQl3aGlsZSAoKGNvbSB8IGdldGxpbmUgZm5hbSkgPiAwKSB7CgoJCQkJY29tX3RyID0gImVjaG8gIiBmbmFtICIgfCB0ciBbMC05XS4gLi4uLi4uLi4uLi4iCgkJCQkjIHByaW50ICJcJyIgY29tX3RyICJcJyIKCQkJCXByaW50ICInIiBjb21fdHIgIiciCgoJCQkJY29tX3RyIHwgZ2V0bGluZSBuYW0KCQkJCXByaW50IG5hbQoKCQkJCSMgcGxlYXNlIHJ1biB0aGF0IHByb2dyYW0gYW5kIHRha2UgYSBsb29rIGF0IHRoZQoJCQkJIyBvdXRwdXQuIEkgdGhpbmsgdGhpcyBpcyB3aGF0IHdhcyBleHBlY3RlZC4KCgkJCQkjIFRoZW4gY29tbWVudCBpbiB0aGUgZm9sbG93aW5nIDQgbGluZXMgYW5kIHNlZQoJCQkJIyB3aGF0IGhhcHBlbnMuIEkgZXhwZWN0IHRoZSBmaXJzdCBwaXBlICJjb20gfCBnZXRsaW5lIgoJCQkJIyBub3QgdG8gYmUgY2xvc2UsIGJ1dCBpIHRoaW5rIHRoaXMgaXMgZXhhY3RseSB3aGF0IGhhcHBlbnMKCQkJCSMgU28sIGlzIHRoaXMgb2sgPwoKCQkJCWlmIChjbG9zZShjb21fdHIpIDwgMCkgewoJCQkJCXByaW50IEVSUk5PCgkJCQkJYnJlYWsKCQkJCX0KCQkJfQoKCQkJY2xvc2UoY29tKQoJCX0KIyAtLS0tLS0tLS0tLSBjdXQgaGVyZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIAojIFRoZXJlIGlzIGFub3RoZXIgdGhpbmcgaSBkbyBub3QgdW5kZXJzdGFuZC4KIyBXaHkgZG9lc24ndCB0aGUgYXdrIC0gY29tbWFuZCAiY2xvc2UiIHJlcG9ydHMgYW4KIyBlcnJvciwgaWYgaSB3b3VsZCBzYXkgY2xvc2UoImFiYyIpIHdoaWNoIGkgaGFkIG5ldmVyCiMgb3BlbmVuZCA/CiMgCiMgUmVnYXJkcywKIyBVbHJpY2ggR3ZiZWwKIyAtLSAKIyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcCiMgKiAgICAgVWxyaWNoIEd2YmVsLCBnb2ViZWxAcXVhbnR1bS5kZSAgICAgICAgICAgICAgICAgICAgKgojICogICAgIFF1YW50dW0gR2VzZWxsc2NoYWZ0IGZ8ciBTb2Z0d2FyZSBtYkgsIERvcnRtdW5kICAgICoKIyAqICAgICBwaG9uZSAgOiArNDktMjMxLTk3NDktMjAxICBmYXg6ICs0OS0yMzEtOTc0OS0zICAgICAqCiMgKiAgICAgcHJpdmF0ZTogKzQ5LTIzMS04MDM5OTQgICAgZmF4OiArNDktMjMxLTgwMzk5NCAgICAgKgojIFwqKioqKioqKioqKioqKioqKioqKioqKioq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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxMDAwMDAgMTAwCjEwMDAwMDAwMCAxMDAwMDAKMWUrMTEgMTAwMDAwMDAwCjFlKzE0IDFlKzExCjFlKzE3IDFlKzE0CjFlKzIwIDFlKzE3CjFlKzIzIDFlKzIwCjFlKzI2IDFlKzIzCjFlKzI5IDFlKzI2CjFlKzMyIDFlKzI5CjFlKzM1IDFlKzMyCjFlKzM4IDFlKzM1CjFlKzQxIDFlKzM4CjFlKzQ0IDFlKzQxCjFlKzQ3IDFlKzQ0CjFlKzUwIDFlKzQ3CjFlKzUzIDFlKzUwCjFlKzU2IDFlKzUzCjFlKzU5IDFlKzU2CjFlKzYyIDFlKzU5CjFlKzY1IDFlKzYyCjFlKzY4IDFlKzY1CjFlKzcxIDFlKzY4CjFlKzc0IDFlKzcxCjFlKzc3IDFlKzc0CjFlKzgwIDFlKzc3CjFlKzgzIDFlKzgwCjFlKzg2IDFlKzgzCjFlKzg5IDFlKzg2CjFlKzkyIDFlKzg5CjFlKzk1IDFlKzkyCjFlKzk4IDFlKzk1CjFlKzEwMSAxZSs5OAoxZSsxMDQgMWUrMTAxCjFlKzEwNyAxZSsxMDQKMWUrMTEwIDFlKzEwNwoxZSsxMTMgMWUrMTEwCjFlKzExNiAxZSsxMTMKMWUrMTE5IDFlKzExNgoxZSsxMjIgMWUrMTE5CjFlKzEyNSAxZSsxMjIKMWUrMTI4IDFlKzEyNQoxZSsxMzEgMWUrMTI4CjFlKzEzNCAxZSsxMzEKMWUrMTM3IDFlKzEzNAoxZSsxNDAgMWUrMTM3CjFlKzE0MyAxZSsxNDAKMWUrMTQ2IDFlKzE0MwoxZSsxNDkgMWUrMTQ2CjFlKzE1MiAxZSsxNDkKMWUrMTU1IDFlKzE1MgoxZSsxNTggMWUrMTU1CjFlKzE2MSAxZSsxNTgKMWUrMTY0IDFlKzE2MQoxZSsxNjcgMWUrMTY0CjFlKzE3MCAxZSsx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V0sgdmVyc2lvbjogMi4xNSAoPykKIyBjb21waWxlcjogR0NDICg/KQojIAojIFRoZSBmb2xsb3dpbmcgZW5jbG9zZWQgc2NyaXB0IGRvZXMgbm90IHdhbnQgdG8gZnVsbHkgcHJvY2VzcyB0aGUgaW5wdXQgZGF0YQojIGZpbGUuIEl0IGNvcnJlY3RseSBleGVjdXRlcyB0aGUgb3BlcmF0aW9ucyBvbiB0aGUgZmlyc3QgcmVjb3JkLCBhbmQgdGhlbiBkaWVzCiMgb24gdGhlIHNlY29uZCBvbmUuIE15IHRydWUgZGF0YSBmaWxlIGlzIG11Y2ggbG9uZ2VyIGJ1dCB0aGlzIGlzCiMgcmVwcmVzZW50YXRpdmUgYW5kIGl0IGRvZXMgZmFpbCBvbiBhIGZpbGUgZXZlbiBhcyBzaG9ydCBhcyB0aGlzIG9uZS4KIyBUaGUgZmFpbHVyZSBhcHBlYXJzIHRvIG9jY3VyIGluIHRoZSBkZWNsYXJlZCBmdW5jdGlvbiBhZGQyb3V0cHV0LiBCZXR3ZWVuIHRoZQojIHN0ZXBzIG9mIGluY3JlbWVudGluZyBORiBieSBvbmUgYW5kIHNldHRpbmcgJE5GIHRvIHRoZSBwYXNzZWQgdmFyaWFibGUKIyB0aGUgcGFzc2VkIHZhcmlhYmxlIGFwcGVhcnMgdG8gdmFuaXNoIChpLmUuIE5GIGRvZXMgZ28gZnJvbSA2OCB0byA2OQojIGFuZCBiZWZvcmUgaW5jcmVtZW50aW5nIGl0ICJ2YXJpYWJsZSIgZXF1YWxzIHdoYXQgaXQgc2hvdWxkIGJ1dCBhZnRlcgojICJ2YXJpYWJsZSIgaGFzIG5vIHZhbHVlIGF0IGFsbC4pCiMgCiMgVGhlIHNjcmlwdHMgaGF2ZSBiZWVuIGRldmVsb3BlZCB1c2luZyBuYXdrIG9uIGEgU3VuICh3aGVyZSB0aGV5IHJ1biBmaW5lKQojIEkgaGF2ZSB0cmllZCBnYXdrIHRoZXJlIGJ1dCBnZXQgYSBkaWZmZXJlbnQgY3Jhc2ggd2hpY2ggSSBoYXZlIG5vdCB5ZXQgdHJhY2VkCiMgZG93bi4gSWRlYWxseSBJIHdvdWxkIGxpa2UgdG8ga2VlcCB0aGUgc2NyaXB0IHRoZSBzYW1lIHNvIHRoYXQgaXQgd291bGQgcnVuCiMgb24gZWl0aGVyIGdhd2sgb3IgbmF3ayAodGhhdCB3YXkgSSBjYW4gc3RlcCBiYWNrIGFuZCBmb3J0aCBiZXR3ZWVuIGxhcHRvcCBhbmQKIyB3b3Jrc3RhdGlvbi4KIyAKIyBBbnkgaWRlYXMgd2h5IHRoZSBsYXB0b3AgaW5zdGFsbGF0aW9uIGlzIGhhdmluZyBwcm9ibGVtcz8KIyBIYW5rIAojIAojIAojICMhL3Vzci9iaW4vZ2F3ayAtZgoKQkVHSU4gewoJIyBzZXQgYSBmZXcgdmFsdWVzCglGUyA9ICJcdCIKCU9GUyA9ICJcdCIKCXBpID0gYXRhbjIoMCwgLTEpCiMgZGlzdGFuY2UgZnJvbSBIUk1BIHRvIGZvY2FsIHBsYW5lIGluIG1tCglmdWxscmFkaXVzID0gMTAyNjAuNTQKCgkjIHNldCBsb2NhdGlvbnMgb2YgcGFyYW1ldGVycyBvbiBpbnB1dCBsaW5lCgluZl9ucmcgPSAxCgluZl9vcmRlciA9IDMKCW5mX2l0ZW0gPSA0CgluZl9zdWl0ZSA9IDUKCW5mX2dyYXRpbmcgPSA4CgluZl9zaHV0dGVyID0gOQoJbmZfdHlwZSA9IDEzCgluZl9zcmMgPSAxNAoJbmZfdGFyZ2V0ID0gMTUKCW5mX3ZvbHRhZ2UgPSAxNgoJbmZfZmx1eCA9IDE3CgluZl9maWx0MSA9IDIwCgluZl9maWx0MV90aCA9IDIxCgluZl9maWx0MiA9IDIyCgluZl9maWx0Ml90aCA9IDIzCgluZl9ibmQgPSAyNAoJbmZfaHJtYV9wb2xhciA9IDI3CgluZl9ocm1hX2F6ID0gMjgKCW5mX2RldGVjdG9yID0gMzAKCW5mX2FjaXNfcmVhZCA9IDMyCgluZl9hY2lzX3Byb2MgPSAzMwoJbmZfYWNpc19mcmFtZSA9IDM0CgluZl9oeGRhX2FwbGlzdCA9IDM2CgluZl9oeGRhX3lfcmFuZ2UgPSAzNwoJbmZfaHhkYV96X3JhbmdlID0gMzgKCW5mX2h4ZGFfeV9zdGVwID0gMzkKCW5mX2h4ZGFfel9zdGVwID0gNDAKCW5mX3NpbV96ID0gNDEKCW5mX2ZhbV9wb2xhciA9IDQzCgluZl9mYW1fYXogPSA0NAoJbmZfZmFtX2RpdGhlcl90eXBlID0gNDUKCW5mX21vbm9faW5pdCA9IDUxCgluZl9tb25vX3JhbmdlID0gNTIKCW5mX21vbm9fc3RlcCA9IDUzCgluZl9kZWZvY3VzID0gNTQKCW5mX2FjaXNfdGVtcCA9IDU1CgluZl90aWdodCA9IDU5CgluZl9vZmZzZXRfeSA9IDY0CgluZl9vZmZzZXRfeiA9IDY1CgoJd2hpbGUoIGdldGxpbmUgPCAieHJjZl9tbmVtb25pY3MuZGF0IiA+IDAgKSB7CgkJbW5lbW9uaWNbJDFdID0gJDIKCX0KCiMJImRhdGUiIHwgZ2V0bGluZSBkYXRlX2xpbmUKIyBBRFI6IHVzZSBhIGZpeGVkIGRhdGUgc28gdGhhdCB0ZXN0aW5nIHdpbGwgd29yawoJZGF0ZV9saW5lID0gIlN1biBNYXIgMTAgMjM6MDA6MjcgRVNUIDE5OTYiCiAgICAgICAgc3BsaXQoZGF0ZV9saW5lLCBpbl9kYXRlLCAiICIpCiAgICAgICAgb3V0X2RhdGUgPSBpbl9kYXRlWzJdICIgIiBpbl9kYXRlWzNdICIsICIgaW5fZGF0ZVs2XQp9CgpmdW5jdGlvbiBhZGQyb3V0cHV0KCB2YXJpYWJsZSApIHsKI3ByaW50KCJoaTEiKSA+PiAiZGVidWciCglORisrCiNwcmludCgiaGkyIikgPj4gImRlYnVnIgogCSRORiA9IHZhcmlhYmxlCiNwcmludCgiaGkzIikgPj4gImRlYnVnIgp9CgpmdW5jdGlvbiBlcnJvciggZWtleSwgbWVzc2FnZSApIHsKCXByaW50ICJFcnJvciBhdCBpbnB1dCBsaW5lICIgTlIgIiwgYW5vZGUgIiBla2V5ID4+ICJlcnJvcnMuY2xlYW51cCIKCXByaW50ICIgICAiIG1lc3NhZ2UgIi4iID4+ICJlcnJvcnMuY2xlYW51cCIKfQoKZnVuY3Rpb24gaHhkYV9uYSgpIHsKCSRuZl9oeGRhX2FwbGlzdCA9ICRuZl9oeGRhX3lfcmFuZ2UgPSAkbmZfaHhkYV96X3JhbmdlID0gIk4vQSIKCSRuZl9oeGRhX3lfc3RlcCA9ICRuZl9oeGRhX3pfc3RlcCA9ICJOL0EiCn0KCmZ1bmN0aW9uIGFjaXNfbmEoKSB7CgkkbmZfYWNpc19yZWFkID0gJG5mX2FjaXNfcHJvYyA9ICRuZl9hY2lzX2ZyYW1lID0gJG5mX2FjaXNfdGVtcCA9ICJOL0EiCn0KCmZ1bmN0aW9uIGhyY19uYSgpIHsKIyAgICAgICAgcHJpbnQgKCJoaSIpID4+ICJkZWJ1ZyIKfQoKZnVuY3Rpb24gZnBzaV9uYSgpIHsKCWFjaXNfbmEoKQoJaHJjX25hKCkKCSRuZl9zaW1feiA9ICRuZl9mYW1fcG9sYXIgPSAkbmZfZmFtX2F6ID0gJG5mX2ZhbV9kaXRoZXJfdHlwZSA9ICJOL0EiCn0KCmZ1bmN0aW9uIG1vbm9fbmEoKSB7CgkkbmZfbW9ub19pbml0ID0gJG5mX21vbm9fcmFuZ2UgPSAkbmZfbW9ub19zdGVwID0gIk4vQSIKfQoKIyB0aGlzIGdpdmVzIHRoZSBwaXRjaCBhbmQgeWF3IG9mIHRoZSBIUk1BIGFuZCBGQU0KIyBwb3NpdGl2ZSBwaXRjaCBpcyBmYWNpbmcgdGhlIHNvdXJjZSAibG9va2luZyBkb3duIgojIHBvc2l0aXZlIHlhdyBpcyBsb29raW5nIGxlZnQKIyAwIGF6IGlzIG5vcnRoIDkwIGlzIHVwCiMgdGhpcyBhbHNvIGFkZHMgaW4gdGhlIEZBTSBYLFksWiBwb3NpdGlvbnMgCgpmdW5jdGlvbiBwb2xhejJ5YXdwaXRjaChwb2xhciwgYXopIHsKCXRoZXRhID0gYXogKiBwaSAvIDE4MAoJcGhpID0gcG9sYXIgKiBwaSAvIDE4MCAvIDYwCgoKCWlmKCBwb2xhciA9PSAwICkgewoJCWFkZDJvdXRwdXQoIDAgKQoJCWFkZDJvdXRwdXQoIDAgKQoJfSBlbHNlIHsKCQlpZihheiA9PSAwIHx8IGF6ID09IDE4MCkKCQkJYWRkMm91dHB1dCggMCApCgkJZWxzZSAKCQkJYWRkMm91dHB1dCggLSBwb2xhciAqIHNpbih0aGV0YSkgKQoKCiMJCQl4ID0gY29zIChwaGkpCiMJCQl5ID0gc2luIChwaGkpICogY29zICh0aGV0YSkKIwkJCWFkZDJvdXRwdXQoIGF0YW4yKHkseCkqMTgwIC8gcGkgKiA2MCApCgkJCgkJaWYoYXogPT0gOTAgfHwgYXogPT0yNzAgKQoJCQlhZGQyb3V0cHV0KCAwICkKCQllbHNlIAoJCQlhZGQyb3V0cHV0KCAtIHBvbGFyICogY29zKHRoZXRhKSApCgoJfQojCQkJeCA9IGNvcyAocGhpKQojCQkJej0gc2luIChwaGkpICogc2luICh0aGV0YSkKIwkJCWFkZDJvdXRwdXQoIGF0YW4yKHoseCkqMTgwIC8gcGkgKiA2MCApCgoJaWYoY29uZmlnICF+IC9IWERBLykgewojIG5lZ2F0aXZlIHZhbHVlcyBvZiBkZWZvY3VzIG1vdmUgdXMgZmFydGhlciBmcm9tIHRoZSBzb3VyY2UgdGh1cwojIGluY3JlYXNpbmcgcmFkaXVzCgkJcmFkaXVzID0gZnVsbHJhZGl1cyAtIGRlZm9jdXMKCiMgRkFNX3g7IEZBTV95OyAgRkFNX3oKCSAgIAlpZigob2Zmc2V0X3kgPT0gMCkgJiYgKG9mZnNldF96ID09IDApKXsKCQkJYWRkMm91dHB1dCggZnVsbHJhZGl1cyAtIHJhZGl1cyAqIGNvcyAocGhpKSApCgkKCQkJaWYgKGF6ID09IDkwIHx8IGF6ID09MjcwKSAKCQkJCWFkZDJvdXRwdXQoIDAgKQoJCQllbHNlCgkJCQlhZGQyb3V0cHV0KCAgcmFkaXVzICogc2luIChwaGkpICogY29zICh0aGV0YSkgKQoJCQkKCQkJaWYgKGF6ID09IDAgfHwgYXogPT0gMTgwKQoJCQkJYWRkMm91dHB1dCggMCApCgkJCWVsc2UJCQoJCQkJYWRkMm91dHB1dCggLSByYWRpdXMgKiBzaW4gKHBoaSkgKiBzaW4gKHRoZXRhKSApCgkgICAJfSBlbHNlIHsKIyAqKioqKioqIFRISVMgU0VHTUVOVCBPRiBDT0RFIElTIE5PVCBNQVRIRU1BVElDQUxMWSBDT1JSRUNUIEZPUiAqKioqCiMgT0ZGIEFYSVMgQU5HTEVTIEFORCBJUyBTVVBQTElFRCBBUyBBIFdPUktBUk9VTkQgU0lOQ0UgSVQgV0lMTAojIFBST0JBQkxZIE9OTFkgQkUgVVNFRCBPTiBBWElTLgoJCQlhZGQyb3V0cHV0KCBkZWZvY3VzICkKCQkJYWRkMm91dHB1dCggb2Zmc2V0X3kgKQoJCQlhZGQyb3V0cHV0KCBvZmZzZXRfeiApCgkJfQoKCX0gZWxzZSB7CgkJYWRkMm91dHB1dCggIk4vQSIgKQoJCWFkZDJvdXRwdXQoICJOL0EiICkKCQlhZGQyb3V0cHV0KCAiTi9BIiApCgl9Cn0KCiMgc2V0IFRJR0hUL0xPT1NFIHRvIE4vQSBpZiBpdCBpcyBub3Qgb25lIG9mIHRoZSB0d28gYWxsb3dlZCB2YWx1ZXMKZnVuY3Rpb24gdGlnaHRfbmEoKSB7CglpZiggJG5mX3RpZ2h0ICF+IC9USUdIVHxMT09TRS8gKSB7CgkJJG5mX3RpZ2h0ID09ICJOL0EiCgl9Cn0KCiMgdGhpcyBlbnRyeSBpcyB1c2VkIHRvIGdpdmUgY2VydGFpbiBlbnRyaWVzIG5hbWVzCnsKCXR5cGUgPSAkbmZfdHlwZQoJaXRlbSA9ICRuZl9pdGVtCglzdWl0ZSA9ICRuZl9zdWl0ZQoJb3JkZXIgPSAkbmZfb3JkZXIKCWRldGVjdG9yID0gJG5mX2RldGVjdG9yCglncmF0aW5nID0gJG5mX2dyYXRpbmcKCW9mZnNldF95PSAkbmZfb2Zmc2V0X3kKCW9mZnNldF96PSAkbmZfb2Zmc2V0X3oKCWJuZCA9ICRuZl9ibmQKCWRlZm9jdXMgPSAkbmZfZGVmb2N1cwp9Cgp7CgkjIG1ha2UgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIKCSMgYXMgd2VsbCBhcyBzZXR0aW5nIGNvbmZpZ3VyYXRpb24tZGVwZW5kZW50IE4vQSB2YWx1ZXMKCglpZiggJG5mX2JuZCB+ICJTQ0FOIiApIHsKCQkjIEJORCBpcyBzY2FubmluZyBiZWFtCgkJY29uZmlnID0gIkJORCIKCQloeGRhX25hKCkKCQlmcHNpX25hKCkKCX0gZWxzZSB7CgkJaWYoIGdyYXRpbmcgPT0gIk5PTkUiICkgewoJCQljb25maWcgPSAiSFJNQSIKCQl9IGVsc2UgewoJCQlpZiggZ3JhdGluZyA9PSAiSEVURyIgKSB7CgkJCQlpZiggb3JkZXIgIT0gIkJvdGgiICkgewoJCQkJICAgICRuZl9zaHV0dGVyID0gb3JkZXIgc3Vic3RyKCRuZl9zaHV0dGVyLCBcCgkJCQkJaW5kZXgoJG5mX3NodXR0ZXIsICIsIikgKQoJCQkJfQoJCQl9IGVsc2UgewoJCQkJb3JkZXIgPSAiTi9BIgoJCQl9CgkJCWNvbmZpZyA9ICJIUk1BLyIgZ3JhdGluZwoJCX0KCQoJCWlmKCBkZXRlY3RvciB+IC9BQ0lTfEhSQy8gKSB7CgkJCWRldHN5cyA9IGRldGVjdG9yCgkJCW5zdWIgPSBzdWIoIi0iLCAiLCIsIGRldHN5cykKCQkJY29uZmlnID0gY29uZmlnICIvIiBkZXRzeXMKCQkJaHhkYV9uYSgpCgkJfSBlbHNlIHsKCQkJY29uZmlnID0gY29uZmlnICIvSFhEQSIKCQkJZnBzaV9uYSgpCgkJCWlmKCBkZXRlY3RvciA9PSAiSFNJIiApIHsKCQkJCWh4ZGFfbmEoKQoJCQl9CgkJfQoJfQoKCWFkZDJvdXRwdXQoIGNvbmZpZyApCgoJaWYoICRuZl9zcmMgfiAvRUlQU3xQZW5uaW5nLyApIG1vbm9fbmEoKQoKCWlmKCAkbmZfc3JjID09ICJQZW5uaW5nIiApICRuZl92b2x0YWdlID0gIk4vQSIKCglpdG0gPSBzcHJpbnRmKCIlMDNkIiwgaXRlbSkKCglpZihjb25maWcgaW4gbW5lbW9uaWMpIHsKCQlpZiggdHlwZSBpbiBtbmVtb25pYyApIHsKCQkgICAgSUQgPSBtbmVtb25pY1tjb25maWddICItIiBtbmVtb25pY1t0eXBlXSAiLSIgc3VpdGUgIi4iIGl0bQoJCSAgICBhZGQyb3V0cHV0KCBJRCApCgkJfSBlbHNlIHsKCQkJZXJyb3IodHlwZSwgIm1lYXN1cmVtZW50IHR5cGUgbm90IGluIGxpc3QiKQoJCX0KCX0gZWxzZSB7CgkJZXJyb3IoY29uZmlnLCAibWVhc3VyZW1lbnQgY29uZmlndXJhdGlvbiBub3QgaW4gbGlzdCIpCgl9CgoJIyBhZGQgZGF0ZSB0byBvdXRwdXQgbGluZQoJYWRkMm91dHB1dCggb3V0X2RhdGUgKQoKCSMgQ29udmVydCBIUk1BIHBvbGFyIGFuZCBhemltdXRoYWwgYW5nbGVzIHRvIHlhdyBhbmQgcGl0Y2gKCXBvbGF6Mnlhd3BpdGNoKCRuZl9ocm1hX3BvbGFyLCAkbmZfaHJtYV9heikKCgkjIHNldCBUSUdI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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABnYXdrIGlzIG9rCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGJlZWJlL3JlcGFyc2Uub2sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDAwMDAyMgAwNTQ2MTEwMDU0MQAwMTM0MjIAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMQoxIGEgYiBjIDIKMSBhIGIKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGJlZWJlL2VvZnNwbGl0Lm9rAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDAwMDAwMAAwNjI1NDE1MjEyMwAwMTM2MDYAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYmVlYmUvbGl0b2N0Lm9rAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NDQAMDAwMTc1MAAwMDAxNzUwADAwMDAwMDAwMDExADA2MDEzNzQzMjUyADAxMzI2MwAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABubyBtYXRjaAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGJlZWJlL29mbXRzLmluAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDAwMDAxMAAwNjQwNzEyNTEyMAAwMTMxMDQAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMS4yIDIuMgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABiZWViZS96ZXJvZmxhZy5vawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAxNzUwADAwMDE3NTAAMDAwMDAwMDAwMTAAMDY2MTcwNDE2MzUAMDEzNjAzACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAyLS0tIDIKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYmVlYmUvc2NsaWZpbi5vawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NDQAMDAwMTc1MAAwMDAxNzUwADAwMDAwMDAwMDc3ADA2NDQ0NTYwMzQ3ADAxMzQ0MgAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABnYXdrOiBzY2xpZmluLmF3azo3OiBmYXRhbDogYXR0ZW1wdCB0byB1c2Ugc2NhbGFyIGBqJyBhcyBhcnJheQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGJlZWJlL291dDMub2sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDAwMDAxNQAwNTQ2MTEwMDUzNQAwMTI2NjAAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWW91IGJsZXcgaXQhCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABiZWViZS9tbWFwOGsuaW4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAxNzUwADAwMDE3NTAAMDAwMDAwMjAwMDAAMDYyNTQxNTIxMDIAMDEzMTUyACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhYWFhYWFhYLmNvbSAgIEFMVEVSTkVUICAgIDkzMDUgOTMwNTI4ICAxNTAwLjAwIHN0YXJ0dXAKWFhYWFhYWFguY29tICAgQUxURVJORVQgICAgOTMwNSA5MzA2MjQgICAgOTQuMzggTGluZS05MzA1ClhYWFhYWFhYLmNvbSAgIEFMVEVSTkVUICAgIDkzMDYgOTMwNjI0ICAgMTA0LjQ5IExpbmUtOTMwNgpYWFhYWFhYWC5jb20gICBBTFRFUk5FVCAgICA5MzA2IDkzMDYyNCAgIDY0OS4xNiBMaW5lLWluc3RhbGwKWFhYWFhYWFguY29tICAgQUxURVJORVQgICAgOTMwNiA5MzA2MjQgICAxNjYuNjcgVENQLXNsaXAKWFhYWFhYWFguY29tICAgQUxURVJORVQgICAgOTMwNyA5MzA2MjQgICAxMDQuNDkgTGluZS05MzA3ClhYWFhYWFhYLmNvbSAgIEFMVEVSTkVUICAgIDkzMDcgOTMwNjI0ICAgMjUwLjAwIFRDUC1zbGlwClhYWFhYWFhYLmNvbSAgIEFMVEVSTkVUICAgIDkzMDggOTMwNzAxICAgMjUwLjAwIFRDUC1zbGlwClhYWFhYWFhYLmNvbSAgIEFMVEVSTkVUICAgIDkzMDggOTMwNzAxICAgMTA0LjQ5IGxpbmUtOTMwOApYWFhYWFhYWC5jb20gICBQQVlNRU5UICAgICA5MzA3IDkzMDczMSAgMTUwMC4wMCAxODcwClhYWFhYWFhYLmNvbSAgIEFMVEVSTkVUICAgIDkzMDkgOTMwODAxICAgMjUwLjAwIFRDUC1zbGlwClhYWFhYWFhYLmNvbSAgIEFMVEVSTkVUICAgIDkzMDkgOTMwODAxICAgMTA0LjQ5IGxpbmUtOTMwOQpYWFhYWFhYWC5jb20gICBJTlRFUkVTVCAgICA5MzA3IDkzMDgwMSAgICAyMi41MApYWFhYWFhYWC5jb20gICBDUkVEQURKICAgICA5MzA4IDkzMDgwNSAgICAyMi41MCB3YWl2ZSBpbnRlcmVzdApYWFhYWFhYWC5jb20gICBQQVlNRU5UICAgICA5MzA4IDkzMDgyMCAgMTcyMy42OCAxOTgyClhYWFhYWFhYLmNvbSAgIEFMVEVSTkVUICAgIDkzMTAgOTMwOTAxICAgMjUwLjAwIFRDUC1zbGlwClhYWFhYWFhYLmNvbSAgIEFMVEVSTkVUICAgIDkzMTAgOTMwOTAxICAgMTA0LjQ5IGxpbmUtOTMxMApYWFhYWFhYWC5jb20gICBQQVlNRU5UICAgICA5MzEwIDkzMTAwMSAgIDcwOC45OCAyMzEzClhYWFhYWFhYLmNvbSAgIEFMVEVSTkVUICAgIDkzMTEgOTMxMDAxICAgMjUwLjAwIFRDUC1zbGlwClhYWFhYWFhYLmNvbSAgIEFMVEVSTkVUICAgIDkzMTEgOTMxMDAxICAgMTA0LjQ5IGxpbmUtOTMxMQpYWFhYWFhYWC5jb20gICBJTlRFUkVTVCAgICA5MzA5IDkzMTAwMSAgICAgNS4zMgpYWFhYWFhYWC5jb20gICBDUkVEQURKICAgICA5MzEwIDkzMTAwNyAgICAgNS4zMiB3YWl2ZSBpbnQtOTMwOQpYWFhYWFhYWC5jb20gICBBTFRFUk5FVCAgICA5MzEyIDkzMTEwMSAgIDI1MC4wMCBUQ1Atc2xpcApYWFhYWFhYWC5jb20gICBBTFRFUk5FVCAgICA5MzEyIDkzMTEwMSAgIDEwNC40OSBsaW5lLTkzMTIKWFhYWFhYWFguY29tICAgUEFZTUVOVCAgICAgOTMxMSA5MzExMjAgICAzNTQuNDkgMDAyNzAxClhYWFhYWFhYLmNvbSAgIEFMVEVSTkVUICAgIDk0MDEgOTMxMjAxICAgMjUwLjAwIFRDUC1zbGlwClhYWFhYWFhYLmNvbSAgIEFMVEVSTkVUICAgIDk0MDEgOTMxMjAxICAgMTA0LjQ5IGxpbmUtOTQwMQpYWFhYWFhYWC5jb20gICBQQVlNRU5UICAgICA5MzEyIDkzMTIxOCAgIDM1NC40OSAyODg0ClhYWFhYWFhYLmNvbSAgIEFMVEVSTkVUICAgIDk0MDIgOTQwMTAxICAgMjUwLjAwIFRDUC1zbGlwClhYWFhYWFhYLmNvbSAgIEFMVEVSTkVUICAgIDk0MDIgOTQwMTAxICAgMTA0LjQ5IGxpbmUtOTQwMgpYWFhYWFhYWC5jb20gICBJTlRFUkVTVCAgICA5MzEyIDk0MDEwMSAgICAgNS4zMgpYWFhYWFhYWC5jb20gICBQQVlNRU5UICAgICA5NDAxIDk0MDEyMiAgIDM1NC40OSAzMDg0ClhYWFhYWFhYLmNvbSAgIEFMVEVSTkVUICAgIDk0MDMgOTQwMjAxICAgMjUwLjAwIFRDUC1zbGlwClhYWFhYWFhYLmNvbSAgIEFMVEVSTkVUICAgIDk0MDMgOTQwMjAxICAgMTA0LjQ5IGxpbmUtOTQwMwpYWFhYWFhYWC5jb20gICBJTlRFUkVTVCAgICA5NDAxIDk0MDIwMSAgICAgNS40MApYWFhYWFhYWC5jb20gICBQQVlNRU5UICAgICA5NDAyIDk0MDIwNyAgIDM1NC40OSAzMTQwClhYWFhYWFhYLmNvbSAgIENSRURBREogICAgIDk0MDIgOTQwMjExICAgICA1LjMyIGludGVyZXN0LTk0MDIKWFhYWFhYWFguY29tICAgQ1JFREFESiAgICAgOTQwMiA5NDAyMTEgICAgIDUuNDAgaW50ZXJlc3QtOTQwMwpYWFhYWFhYWC5jb20gICBBTFRFUk5FVCAgICA5NDA0IDk0MDMwMSAgIDI1MC4wMCBUQ1Atc2xpcApYWFhYWFhYWC5jb20gICBBTFRFUk5FVCAgICA5NDA0IDk0MDMwMSAgIDEwNC40OSBsaW5lLTk0MDQKWFhYWFhYWFguY29tICAgSU5URVJFU1QgICAgOTQwMiA5NDAzMDEgICAgIDUuMzIKWFhYWFhYWFguY29tICAgUEFZTUVOVCAgICAgOTQwMyA5NDAzMTAgICAzNTQuNDkgMDAzMzA3ClhYWFhYWFhYLmNvbSAgIFBBWU1FTlQgICAgIDk0MDMgOTQwMzI0ICAgMzU0LjQ5IDM0NDYKWFhYWFhYWFguY29tICAgQUxURVJORVQgICAgOTQwNSA5NDA0MDEgICAyNTAuMDAgVENQLXNsaXAKWFhYWFhYWFguY29tICAgQUxURVJORVQgICAgOTQwNSA5NDA0MDEgICAxMDQuNDkgbGluZS05NDA1ClhYWFhYWFhYLmNvbSAgIEFMVEVSTkVUICAgIDk0MDYgOTQwNTAxICAgMjUwLjAwIFRDUC1zbGlwClhYWFhYWFhYLmNvbSAgIEFMVEVSTkVUICAgIDk0MDYgOTQwNTAxICAgMTA0LjQ5IGxpbmUtOTQwNgpYWFhYWFhYWC5jb20gICBJTlRFUkVTVCAgICA5NDA0IDk0MDUwMSAgICAgNS40MApYWFhYWFhYWC5jb20gICBQQVlNRU5UICAgICA5NDA1IDk0MDUwOSAgIDM1OS44MSAwMDM4MTkKWFhYWFhYWFguY29tICAgQUxURVJORVQgICAgOTQwNyA5NDA2MDEgICAyNTAuMDAgVENQLXNsaXAKWFhYWFhYWFguY29tICAgQUxURVJORVQgICAgOTQwNyA5NDA2MDEgICAxMDQuNDkgbGluZS05NDA3ClhYWFhYWFhYLmNvbSAgIElOVEVSRVNUICAgIDk0MDUgOTQwNjAxICAgICA1LjQwClhYWFhYWFhYLmNvbSAgIFBBWU1FTlQgICAgIDk0MDYgOTQwNjAzICAgMzU0LjQ5IDAwNDAyNQpYWFhYWFhYWC5jb20gICBBTFRFUk5FVCAgICA5NDA4IDk0MDcwMSAgIDI1MC4wMCBUQ1Atc2xpcApYWFhYWFhYWC5jb20gICBBTFRFUk5FVCAgICA5NDA4IDk0MDcwMSAgIDEwNC40OSBsaW5lLTk0MDgKWFhYWFhYWFguY29tICAgSU5URVJFU1QgICAgOTQwNiA5NDA3MDEgICAgIDUuNDgKWFhYWFhYWFguY29tICAgUEFZTUVOVCAgICAgOTQwNyA5NDA3MjUgICAzNTQuNDkgMDA0MzUwClhYWFhYWFhYLmNvbSAgIEFMVEVSTkVUICAgIDk0MDkgOTQwODAxICAgMjUwLjAwIFRDUC1zbGlwClhYWFhYWFhYLmNvbSAgIEFMVEVSTkVUICAgIDk0MDkgOTQwODAxICAgMTA0LjQ5IGxpbmUtOTQwOQpYWFhYWFhYWC5jb20gICBJTlRFUkVTVCAgICA5NDA3IDk0MDgwMSAgICAgNS41NgpYWFhYWFhYWC5jb20gICBQQVlNRU5UICAgICA5NDA4IDk0MDgwOCAgIDM1NC40OSAwMDQ0NTQKWFhYWFhYWFguY29tICAgQUxURVJORVQgICAgOTQwOSA5NDA4MTEgICAgIDAuMDAgc3RhcnR1cApYWFhYWFhYWC5jb20gICBFUVVJUE1FTlQgICA5NDA4IDk0MDgzMSAgIDM5OS4wMCBBVEw2NDAyLTEKWFhYWFhYWFguY29tICAgRVFVSVBNRU5UICAgOTQwOCA5NDA4MzEgIDIyOTUuMDAgTkJDbGFzc2ljUGFjLTEKWFhYWFhYWFguY29tICAgRVFVSVBNRU5UICAgOTQwOCA5NDA4MzEgIDEwNjAuMDAgU3luMzUtMStzaGlwClhYWFhYWFhYLmNvbSAgIEFMVEVSTkVUICAgIDk0MTAgOTQwOTAxICAgMjUwLjAwIFRDUC1zbGlwClhYWFhYWFhYLmNvbSAgIEFMVEVSTkVUICAgIDk0MTAgOTQwOTAxICAgMTA0LjQ5IGxpbmUtOTQxMApYWFhYWFhYWC5jb20gICBJTlRFUkVTVCAgICA5NDA4IDk0MDkwMSAgICAgNS42NApYWFhYWFhYWC5jb20gICBQQVlNRU5UICAgICA5NDA5IDk0MDkwNiAgIDM1NC40OSAwMDQ2NzcKWFhYWFhYWFguY29tICAgQ1JFREFESiAgICAgOTQwOSA5NDA5MjEgICAxMjQuOTUgVENQLXNsaXAtOTQwOQpYWFhYWFhYWC5jb20gICBDUkVEQURKICAgICA5NDA5IDk0MDkyMSAgICA1Mi4yMCBsaW5lLTk0MDkKWFhYWFhYWFguY29tICAgQ1JFREFESiAgICAgOTQxMCA5NDA5MjEgICAyNTAuMDAgVENQLXNsaXAtOTQxMApYWFhYWFhYWC5jb20gICBDUkVEQURKICAgICA5NDEwIDk0MDkyMSAgIDEwNC40OSBsaW5lLTk0MTAKWFhYWFhYWFguY29tICAgQUxURVJORVQgICAgOTQwOSA5NDA5MjEgICAzOTcuNTAgVENQLTU2ay1sb2NhbCByZWNvbgpYWFhYWFhYWC5jb20gICBBTFRFUk5FVCAgICA5NDA5IDk0MDkyMSAgICA4Ny40NSBsaW5lLTk0MDkgcmVjb24KWFhYWFhYWFguY29tICAgQUxURVJORVQgICAgOTQxMCA5NDA5MjEgICA3OTUuMDAgVENQLTU2ay1sb2NhbCByZWNvbgpYWFhYWFhYWC5jb20gICBBTFRFUk5FVCAgICA5NDEwIDk0MDkyMSAgIDE3NC45MCBsaW5lLTk0MTAgcmVjb24KWFhYWFhYWFguY29tICAgQUxURVJORVQgICAgOTQxMSA5NDEwMDEgICA3OTUuMDAgVENQLTU2ay1sb2NhbApYWFhYWFhYWC5jb20gICBBTFRFUk5FVCAgICA5NDExIDk0MTAwMSAgIDE3NC45MCBsaW5lLTk0MTEKWFhYWFhYWFguY29tICAgSU5URVJFU1QgICAgOTQwOSA5NDEwMDEgICAgNTQuMDYKWFhYWFhYWFguY29tICAgUEFZTUVOVCAgICAgOTQxMCA5NDEwMTcgICAzNTQuNDkgNTAyNgpYWFhYWFhYWC5jb20gICBBTFRFUk5FVCAgICA5NDEyIDk0MTEwMSAgIDc5NS4wMCBUQ1AtNTZrLWxvY2FsClhYWFhYWFhYLmNvbSAgIEFMVEVSTkVUICAgIDk0MTIgOTQxMTAxICAgMTc0LjkwIGxpbmUtOTQxMgpYWFhYWFhYWC5jb20gICBJTlRFUkVTVCAgICA5NDEwIDk0MTEwMSAgICA4NS45MwpYWFhYWFhYWC5jb20gICBQQVlNRU5UICAgICA5NDExIDk0MTExNCAgIDk2OS45MCAwMDUyNzQKWFhYWFhYWFguY29tICAgQUxURVJORVQgICAgOTUwMSA5NDEyMDEgICA3OTUuMDAgVENQLTU2ay1sb2NhbApYWFhYWFhYWC5jb20gICBBTFRFUk5FVCAgICA5NTAxIDk0MTIwMSAgIDE3NC45MCBsaW5lLTk1MDEKWFhYWFhYWFguY29tICAgSU5URVJFU1QgICAgOTQxMSA5NDEyMDEgICAgODcuMjIKWFhYWFhYWFguY29tICAgUEFZTUVOVCAgICAgOTQxMiA5NDEyMTkgIDQ3MjMuOTAgNTU5MApYWFhYWFhYWC5jb20gICBBTFRFUk5FVCAgICA5NTAyIDk1MDEwMSAgIDc5NS4wMCBUQ1AtNTZrLWxvY2FsClhYWFhYWFhYLmNvbSAgIEFMVEVSTkVUICAgIDk1MDIgOTUwMTAxICAgMTc0LjkwIGxpbmUtOTUwMgpYWFhYWFhYWC5jb20gICBJTlRFUkVTVCAgICA5NDEyIDk1MDEwMSAgICAzMi4yMgpYWFhYWFhYWC5jb20gICBQQVlNRU5UICAgICA5NTAxIDk1MDEwMyAgMTg5My4xMSA1NzY2ClhYWFhYWFhYLmNvbSAgIEFMVEVSTkVUICAgIDk1MDMgOTUwMjAxICAgNzk1LjAwIFRDUC01NmstbG9jYWwtb2xkClhYWFhYWFhYLmNvbSAgIEFMVEVSTkVUICAgIDk1MDMgOTUwMjAxICAgMTc0LjkwIGxpbmUtOTUwMwpYWFhYWFhYWC5jb20gICBJTlRFUkVTVCAgICA5NTAxIDk1MDIwMSAgICAxOC44NQpYWFhYWFhYWC5jb20gICBQQVlNRU5UICAgICA5NTAyIDk1MDIwNyAgIDk2OS45MCA2MDQ0ClhYWFhYWFhYLmNvbSAgIEFMVEVSTkVUICAgIDk1MDQgOTUwMzAxICAgNzk1LjAwIFRDUC01NmstbG9jYWwtb2xkClhYWFhYWFhYLmNvbSAgIEFMVEVSTkVUICAgIDk1MDQgOTUwMzAxICAgMTc0LjkwIGxpbmUtOTUwNApYWFhYWFhYWC5jb20gICBJTlRFUkVTVCAgICA5NTAyIDk1MDMwMSAgICAxOS4xMwpYWFhYWFhYWC5jb20gICBQQVlNRU5UICAgICA5NTAzIDk1MDMwNyAgIDk2OS45MCA2NDA4ClhYWFhYWFhYLmNvbSAgIEFMVEVSTkVUICAgIDk1MDQgOTUwMzE2ICAzMDAwLjAwIHN0YXJ0dXAgVENQLWJ0MS0xMjhrJTUKWFhYWFhYWFguY29tICAgUEFZTUVOVCAgICAgOTUwMyA5NTAzMjcgICA5NjkuOTAgNjU5NApYWFhYWFhYWC5jb20gICBBTFRFUk5FVCAgICA5NTA1IDk1MDQwMSAgMTE4Ny41MCBUQ1AtYnQxLTEyOGslNS4wMApYWFhYWFhYWC5jb20gICBBTFRFUk5FVCAgICA5NTA1IDk1MDQwMSAgIDU1Ni42MCBsaW5lLTk1MDUKWFhYWFhYWFguY29tICAgRVFVSVBNRU5UICAgOTUwNCA5NTA0MTAgIDE1OTUuMDAgY2lzY28yNTAxLTEKWFhYWFhYWFguY29tICAgQ1JFREFESiAgICAgOTUwNCA5NTA0MTcgICA1MDMuNTAgVENQLTU2ay1sb2NhbApYWFhYWFhYWC5jb20gICBDUkVEQURKICAgICA5NTA0IDk1MDQxNyAgIDExNi42MCBsaW5lLTk1MDQKWFhYWFhYWFguY29tICAgQUxURVJORVQgICAgOTUwNCA5NTA0MTcgICA0NDguODAgbGluZS1pbnN0YWxsClhYWFhYWFhYLmNvbSAgIEFMVEVSTkVUICAgIDk1MDQgOTUwNDE3ICAgNzUyLjAyIFRDUC1idDEtMTI4ayU1IHJlY29uClhYWFhYWFhYLmNvbSAgIEFMVEVSTkVUICAgIDk1MDQgOTUwNDE3ICAgMzcxLjAwIGxpbmUtOTUwNCByZWNvbgpYWFhYWFhYWC5jb20gICBQQVlNRU5UICAgICA5NTA0IDk1MDQyNCAgMzAwMC4wMCA2ODQxClhYWFhYWFhYLmNvbSAgIEFMVEVSTkVUICAgIDk1MDYgOTUwNTAxICAxMTg3LjUwIFRDUC1idDEtMTI4ayU1LjAwClhYWFhYWFhYLmNvbSAgIEFMVEVSTkVUICAgIDk1MDYgOTUwNTAxICAgNTU2LjYwIGxpbmUtOTUwNgpYWFhYWFhYWC5jb20gICBQQVlNRU5UICAgICA5NTA1IDk1MDUwNSAgMjA0OS44NiA2OTg1ClhYWFhYWFhYLmNvbSAgIFBBWU1FTlQgICAgIDk1MDUgOTUwNTMxICAzOTI0LjIyIDcxNzkKWFhYWFhYWFguY29tICAgQUxURVJORVQgICAgOTUwNyA5NTA2MDEgIDExODcuNTAgVENQLWJ0MS0xMjhrJTUuMDAKWFhYWFhYWFguY29tICAgQUxURVJORVQgICAgOTUwNyA5NTA2MDEgICA1NTYuNjAgbGluZS05NTA3ClhYWFhYWFhYLmNvbSAgIFBBWU1FTlQgICAgIDk1MDYgOTUwNjA3ICAxNzQ0LjEwIDcyMzIKWFhYWFhYWFguY29tICAgQUxURVJORVQgICAgOTUwOCA5NTA3MDEgIDExODcuNTAgVENQLWJ0MS0xMjhrJTUuMDAKWFhYWFhYWFguY29tICAgQUxURVJORVQgICAgOTUwOCA5NTA3MDEgICA1NTYuNjAgbGluZS05NTA4ClhYWFhYWFhYLmNvbSAgIFBBWU1FTlQgICAgIDk1MDcgOTUwNzA1ICAxNzQ0LjEwIDc2NDEKWFhYWFhYWFguY29tICAgQUxURVJORVQgICAgOTUwOSA5NTA4MDEgIDExODcuNTAgVENQLWJ0MS0xMjhrJTUuMDAKWFhYWFhYWFguY29tICAgQUxURVJORVQgICAgOTUwOSA5NTA4MDEgICA1NTYuNjAgbGluZS05NTA5ClhYWFhYWFhYLmNvbSAgIFBBWU1FTlQgICAgIDk1MDggOTUwODAzICAxNzQ0LjEwIDc5MTQKWFhYWFhYWFguY29tICAgQUxURVJORVQgICAgOTUxMCA5NTA5MDEgIDExODcuNTAgVENQLWJ0MS0xMjhrJTUuMDAKWFhYWFhYWFguY29tICAgQUxURVJORVQgICAgOTUxMCA5NTA5MDEgICA1NTYuNjAgbGluZS05NTEwClhYWFhYWFhYLmNvbSAgIFBBWU1FTlQgICAgIDk1MDkgOTUwOTA1ICAxNzQ0LjEwIDgyMDMKWFhYWFhYWFguY29tICAgQUxURVJORVQgICAgOTUxMSA5NTEwMDEgIDExODcuNTAgVENQLWJ0MS0xMjhrJTUuMDAKWFhYWFhYWFguY29tICAgQUxURVJORVQgICAgOTUxMSA5NTEwMDEgICA1NTYuNjAgbGluZS05NTExClhYWFhYWFhYLmNvbSAgIFBBWU1FTlQgICAgIDk1MTAgOTUxMDAzICAxNzQ0LjEwIDg1MDgKWFhYWFhYWFguY29tICAgQUxURVJORVQgICAgOTUxMiA5NTExMDEgIDExODcuNTAgVENQLWJ0MS0xMjhr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MDIuNzZdKQojCWJ5IG1lc2NhbGluZS5nbnUub3JnICg4LjkuMWEvOC45LjEpIHdpdGggU01UUCBpZCBBQUEyMDY0NQojCWZvciA8YXJub2xkQGdudS5haS5taXQuZWR1PjsgU2F0LCAzMSBPY3QgMTk5OCAwMDoxNzo1NCAtMDUwMAojUmVjZWl2ZWQ6IGJ5IGdhbWdlZS5hY2FkLmVtaWNoLmVkdSAoU21haWwzLjEuMjkuMSAjNTcpCiMJaWQgbTB6WlVLWS0wMDBJRFNDOyBTYXQsIDMxIE9jdCA5OCAwMDoxNiBDU1QKI01lc3NhZ2UtSWQ6IDxtMHpaVUtZLTAwMElEU0NAZ2FtZ2VlLmFjYWQuZW1pY2guZWR1PgojRGF0ZTogU2F0LCAzMSBPY3QgOTggMDA6MTYgQ1NUCiNGcm9tOiBkaHdAZ2FtZ2VlLmFjYWQuZW1pY2guZWR1IChEYXZpZCBILiBXZXN0KQojVG86IGJ1Zy1nbnUtdXRpbHNAZ251Lm9yZwojU3ViamVjdDogZ2F3ayAzLjAuMyBidWcgcmVwb3J0CiNDYzogYXJub2xkQGdudS5vcmcKI1gtVUlETDogNzQ3NGI4MjVjZmY5ODlhZGYzOGYxMzg4M2Q4NGZkZDcKI1N0YXR1czogUk8KIwojZ2F3ayB2ZXJzaW9uOiAzLjAzCiNTeXN0ZW0gdXNlZDogTGludXgsIGtlcm5lbCAyLjAuMjgsIGxpYmMgNS40LjMzLCBBTUQgSzVQUjEzMyAoaTU4NiBjbG9uZSkKI1JlbWFyazogVGhlcmUgc2VlbXMgdG8gYmUgYXQgbGVhc3Qgb25lIGJ1ZyBzaG93biBieSB0aGUgZGVtbyBiZWxvdy4gCiMgICAgICAgIFRoZXJlIG1heSBhbHNvIGJlIGEgRGFyayBDb3JuZXIgaW52b2x2aW5nIHRoZSB2YWx1ZSBvZiBOUiBpbiBhbgojICAgICAgICBFTkQgYmxvY2ssIGEgdG9waWMgb24gd2hpY2ggdGhlIGluZm8gZmlsZSBpcyBzaWxlbnQuICBJbiBnYXdrCiMgICAgICAgIDMuMC4zLCBOUiBvZnRlbiBzZWVtcyB0byBoYXZlIHRoZSBsZWFzdC1zdXJwcmlzZSB2YWx1ZSBpbiBhbgojICAgICAgICBFTkQgYmxvY2ssIGJ1dCBzb21ldGltZXMgaXQgZG9lc24ndCAtIHNlZSBleGFtcGxlIGJlbG93LgojUHJvYmxlbSBkZXNjcjogdGhlIGxvZyBiZWxvdyBzaG93cyBhIGNhc2Ugd2hlcmU6CiMgICAgICAgIGEpICh0aGlzIG1heSBiZSBhIHJlZCBoZXJyaW5nKSB0aGUgb3V0cHV0IG9mIHRoZSBnYXdrIHNjcmlwdAojICAgICAgICAgICBpcyBkaWZmZXJlbnQgZGVwZW5kaW5nIG9uIHdoZXRoZXIgaXRzIGlucHV0IGZpbGUgaXMgbmFtZWQgb24KIyAgICAgICAgICAgdGhlIGNvbW1hbmQgbGluZSBvciBjYXR0ZWQgdG8gc3RkaW4sIHdpdGhvdXQgYW55IHVzZSBvZiB0aGUKIyAgICAgICAgICAgbGVnaXRpbWF0ZSBtZWFucyB3aGljaCBjb3VsZCBwcm9kdWNlIHRoaXMgZWZmZWN0LgojICAgICAgICBiKSBOUiBpcyBjbGVhcmx5IGdldHRpbmcgY2xvYmJlcmVkOyBJIGhhdmUgdHJpZWQgdG8gc2ltcGxpZnkKIyAgICAgICAgICAgdGhlIDE5LWxpbmUgc2NyaXB0ICJhd2tlcnIxIiBiZWxvdywgYnV0IHNlZW1pbmdseSB1bnJlbGF0ZWQKIyAgICAgICAgICAgY2hhbmdlcywgbGlrZSBzaG9ydGVuaW5nIGNvbnN0YW50IHN0cmluZ3Mgd2hpY2ggYXBwZWFyIG9ubHkgaW4KIyAgICAgICAgICAgcHJpbnQgc3RhdGVtZW50cywgb3IgcmVtb3ZpbmcgdW5leGVjdXRlZCBvciBpcnJlbGV2YW50IGNvZGUsCiMgICAgICAgICAgIGNhdXNlIHRoZSBjbG9iYmVyaW5nIHRvIGdvIGF3YXkuICBTb21lIHByZXZpb3VzIChsYXJnZXIpCiMgICAgICAgICAgIHZlcnNpb25zIG9mIHRoaXMgY29kZSB3b3VsZCBjbG9iYmVyIE5SIGFsc28gd2hlbiByZWFkaW5nIGZyb20KIyAgICAgICAgICAgc3RkaW4sIGJ1dCBJIHRob3VnaHQgeW91J2QgcHJlZmVyIGEgc2hvcnRlciBleGFtcGxlIDotKS4KI1JlcHJvZHVjZS1CeTogdXNpbmcgdGhlIGdhd2sgc2NyaXB0ICJhd2tlcnIxIiwgdGhlIGNvbnRlbnRzIG9mCiMgICAgICAgICAgICAgIHdoaWNoIGFwcGVhciBpbiB0aGUgdHJhbnNjcmlwdCBiZWxvdyBhcyB0aGUgb3V0cHV0IG9mIHRoZQojICAgICAgICAgICAgICBjb21tYW5kICJjYXQgYXdrZXJyMSIuICBDb21tZW50cyBmb2xsb3dpbmcgIyB3ZXJlIGFkZGVkCiMgICAgICAgICAgICAgIHRvIHRoZSB0cmFuc2NyaXB0IGxhdGVyIGFzIGV4cGxhbmF0aW9uLgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTY3JpcHQgc3RhcnRlZCBvbiBGcmkKI09jdCAzMCAyMDowNDoxNiAxOTk4IGNoaXBtdW5rOi9yYW0wIyBscyAtbCBhMSBhd2tlcnIxIC1ydy1yLS1yLS0gICAxCiNyb290ICAgICByb290ICAgICAgICAgICAgMiBPY3QgMzAgMTg6NDIgYTEgLXJ3eHIteHIteCAgIDEgcm9vdCAgICAgcm9vdAojMzg5IE9jdCAzMCAxOTo1NCBhd2tlcnIxIGNoaXBtdW5rOi9yYW0wIyBjYXQgYTEgICAgICAgICAgICAjYTEgY29udGFpbnMKI29uZSBwcmludGFibGUgY2hhciBhbmQgYSBuZXdsaW5lIGEgY2hpcG11bms6L3JhbTAjIG9kIC1jCCAIeGMgYTEKIzAwMDAwMDAgMGE2MQojICAgICAgICAgIGEgIFxuCiMwMDAwMDAyIGNoaXBtdW5rOi9yYW0wIyBjYXQgYTEgfCBhd2tlcnIxICAgICAgICAgICAjbm8gc3VycHJpc2VzIGhlcmUKIzEgbGluZXMgaW4gMSBzZWM6IDEgbGluZXMvc2VjOyAgbmxpbmVzPTEgY2hpcG11bms6L3JhbTAjIGF3a2VycjEgYTEgyAojbGluZXMgaW4gMSBzZWM6IDEgbGluZXMvc2VjOyAgbmxpbmVzPTEgICAgIz8hIGZpcnN0IGNoYXIgaXMgYW4gdXBwZXJjYXNlCiNFLWdyYXZlIGNoaXBtdW5rOi9yYW0wIyBhd2tlcnIxIGExIHwgb2QgLU4xIC14YyAwMDAwMDAwIDAwYzgKIyAgICAgICAgMzEwICBcMAojMDAwMDAwMSBjaGlwbXVuazovcmFtMCMgY2F0IGF3a2VycjEgICAjdGhlIGFwcGFyZW50IF5NJ3MgYXJlIG5vdAojYWN0dWFsbHkgaW4gdGhlIGZpbGUKIyEvdXNyL2Jpbi9hd2sgLWYKZnVuY3Rpb24gcHJvY2Vzcyh3KSB7CiAgIGlmKHcgaW4gd3MpIHsKICAgICAgcHJpbnRmICIgOiBmb3VuZFxuIjsgbGNbcCAiICIgd10rKzsgcmNbdyAiICIgbl0rKzsgfQogICB9CkJFR0lOIHtJR05PUkVDQVNFPTE7CiAgICAgIH0KL14vIHtpZihOUiAlIDEwID09MClwcmludCAicHJvY2Vzc2luZyBsaW5lICIgTlI7CiAgICAgcHJvY2VzcygkMSk7IG5saW5lcysrOwogICAgfQpFTkQge3A9dzsgdz1uOyBuPSIiOwogICAgIGlmKHcpcHJvY2Vzcyh3KTsgdD0xOyBwcmludCBOUiAiIGxpbmVzIGluICIgdCAiIHNlYzogIiBOUiswICIgbGluZXMvc2VjOyAgbmxpbmVzPSIgbmxpbmVzOwogICAgfQojY2hpcG11bms6L3JhbTAjIGV4aXQgU2NyaXB0IGRvbmUgb24gRnJpIE9jdCAzMCAyMDowNzozMSAxOTk4CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojLURhdmlkIFdlc3QgICAgIGRod0BnYW1nZWUuYWNhZC5lbWljaC5lZHUKIwoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYmVlYmUvcmVzcGxpdC5vawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NDQAMDAwMTc1MAAwMDAxNzUwADAwMDAwMDAwMDAyADA2MDEzNzY1MTE2ADAxMzQ1MgAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABiCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGJlZWJlL3Jzd2hpdGUub2sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDAwMDAxNgAwNjAxNDI3NjA0MwAwMTM0NTcAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPCAgICBhIGIKYyBkPgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0ZXN0ZGlyL3QuYnJlYWszAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0ZXN0ZGlyL3QuZ3N1YjQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY2NAAwMDAxNzUwADAwMDE3NTAAMDAwMDAwMDAxMzQAMTMzMzcxNzQ3MDMAMDEzMjc1ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGxlbmd0aCgkMSkgPT0gMCB7IG5leHQgfQoKe2dzdWIoIlsiICQxICJdIiwiKCYpIik7IHByaW50fQp7Z3N1YigiWyIgJDEgIl0iLCIoXFwmKSIpOyBwcmludH0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdGVzdGRpci90LmNhdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NjQAMDAwMTc1MAAwMDAxNzUwADAwMDAwMDAwMTYyADEzMzM3MTc0NzAzADAxMzAyMQAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7cHJpbnQgJDIgIiAiICQxfQp7cHJpbnQgJDEgIiAiICJpcyIsICQyfQp7cHJpbnQgJDIgRlMgImlzIiBGUyAkMX0Ke3ByaW50IGxlbmd0aCgkMSAkMiksIGxlbmd0aCgkMSkgKyBsZW5ndGgoJDIpfQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRlc3RkaXIvdC42YQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjY0ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDAwMDEwMAAxMzMzNzE3NDcwMwAwMTI1NTAAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL2F8YnxjLwl7CglwcmludAoJZm9yIChpID0gJDE7IGkgPj0gMTsgKQoJCXByaW50ICIgIiwgaSAvPSAxMAp9CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0ZXN0ZGlyL3QuNi54AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY2NAAwMDAxNzUwADAwMDE3NTAAMDAwMDAwMDAwMTYAMTMzMzcxNzQ3MDMAMDEyNjYzACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHtwcmludCBORiwkMH0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdGVzdGRpci9iaWIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NjQAMDAwMTc1MAAwMDAxNzUwADAwMDE3NjIzNTMyADEzMzM3MTc0NzAzADAxMjU3MAAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJbiB0aGUgYmVnaW5uaW5nIEdvZCBjcmVhdGVkIHRoZSBoZWF2ZW4gYW5kIHRoZSBlYXJ0aC4KQW5kIHRoZSBlYXJ0aCB3YXMgd2l0aG91dCBmb3JtLCBhbmQgdm9pZDsgYW5kIGRhcmtuZXNzIHdhcyB1cG9uIHRoZSBmYWNlIG9mIHRoZSBkZWVwLiBBbmQgdGhlIFNwaXJpdCBvZiBHb2QgbW92ZWQgdXBvbiB0aGUgZmFjZSBvZiB0aGUgd2F0ZXJzLgpBbmQgR29kIHNhaWQsIExldCB0aGVyZSBiZSBsaWdodDogYW5kIHRoZXJlIHdhcyBsaWdodC4KQW5kIEdvZCBzYXcgdGhlIGxpZ2h0LCB0aGF0IGl0IHdhcyBnb29kOiBhbmQgR29kIGRpdmlkZWQgdGhlIGxpZ2h0IGZyb20gdGhlIGRhcmtuZXNzLgpBbmQgR29kIGNhbGxlZCB0aGUgbGlnaHQgRGF5LCBhbmQgdGhlIGRhcmtuZXNzIGhlIGNhbGxlZCBOaWdodC4gQW5kIHRoZSBldmVuaW5nIGFuZCB0aGUgbW9ybmluZyB3ZXJlIHRoZSBmaXJzdCBkYXkuCkFuZCBHb2Qgc2FpZCwgTGV0IHRoZXJlIGJlIGEgZmlybWFtZW50IGluIHRoZSBtaWRzdCBvZiB0aGUgd2F0ZXJzLCBhbmQgbGV0IGl0IGRpdmlkZSB0aGUgd2F0ZXJzIGZyb20gdGhlIHdhdGVycy4KQW5kIEdvZCBtYWRlIHRoZSBmaXJtYW1lbnQsIGFuZCBkaXZpZGVkIHRoZSB3YXRlcnMgd2hpY2ggd2VyZSB1bmRlciB0aGUgZmlybWFtZW50IGZyb20gdGhlIHdhdGVycyB3aGljaCB3ZXJlIGFib3ZlIHRoZSBmaXJtYW1lbnQ6IGFuZCBpdCB3YXMgc28uCkFuZCBHb2QgY2FsbGVkIHRoZSBmaXJtYW1lbnQgSGVhdmVuLiBBbmQgdGhlIGV2ZW5pbmcgYW5kIHRoZSBtb3JuaW5nIHdlcmUgdGhlIHNlY29uZCBkYXkuCkFuZCBHb2Qgc2FpZCwgTGV0IHRoZSB3YXRlcnMgdW5kZXIgdGhlIGhlYXZlbiBiZSBnYXRoZXJlZCB0b2dldGhlciB1bnRvIG9uZSBwbGFjZSwgYW5kIGxldCB0aGUgZHJ5IGxhbmQgYXBwZWFyOiBhbmQgaXQgd2FzIHNvLgpBbmQgR29kIGNhbGxlZCB0aGUgZHJ5IGxhbmQgRWFydGg7IGFuZCB0aGUgZ2F0aGVyaW5nIHRvZ2V0aGVyIG9mIHRoZSB3YXRlcnMgY2FsbGVkIGhlIFNlYXM6IGFuZCBHb2Qgc2F3IHRoYXQgaXQgd2FzIGdvb2QuCkFuZCBHb2Qgc2FpZCwgTGV0IHRoZSBlYXJ0aCBicmluZyBmb3J0aCBncmFzcywgdGhlIGhlcmIgeWllbGRpbmcgc2VlZCwgYW5kIHRoZSBmcnVpdCB0cmVlIHlpZWxkaW5nIGZydWl0IGFmdGVyIGhpcyBraW5kLCB3aG9zZSBzZWVkIGlzIGluIGl0c2VsZiwgdXBvbiB0aGUgZWFydGg6IGFuZCBpdCB3YXMgc28uCkFuZCB0aGUgZWFydGggYnJvdWdodCBmb3J0aCBncmFzcywgYW5kIGhlcmIgeWllbGRpbmcgc2VlZCBhZnRlciBoaXMga2luZCwgYW5kIHRoZSB0cmVlIHlpZWxkaW5nIGZydWl0LCB3aG9zZSBzZWVkIHdhcyBpbiBpdHNlbGYsIGFmdGVyIGhpcyBraW5kOiBhbmQgR29kIHNhdyB0aGF0IGl0IHdhcyBnb29kLgpBbmQgdGhlIGV2ZW5pbmcgYW5kIHRoZSBtb3JuaW5nIHdlcmUgdGhlIHRoaXJkIGRheS4KQW5kIEdvZCBzYWlkLCBMZXQgdGhlcmUgYmUgbGlnaHRzIGluIHRoZSBmaXJtYW1lbnQgb2YgdGhlIGhlYXZlbiB0byBkaXZpZGUgdGhlIGRheSBmcm9tIHRoZSBuaWdodDsgYW5kIGxldCB0aGVtIGJlIGZvciBzaWducywgYW5kIGZvciBzZWFzb25zLCBhbmQgZm9yIGRheXMsIGFuZCB5ZWFyczoKQW5kIGxldCB0aGVtIGJlIGZvciBsaWdodHMgaW4gdGhlIGZpcm1hbWVudCBvZiB0aGUgaGVhdmVuIHRvIGdpdmUgbGlnaHQgdXBvbiB0aGUgZWFydGg6IGFuZCBpdCB3YXMgc28uCkFuZCBHb2QgbWFkZSB0d28gZ3JlYXQgbGlnaHRzOyB0aGUgZ3JlYXRlciBsaWdodCB0byBydWxlIHRoZSBkYXksIGFuZCB0aGUgbGVzc2VyIGxpZ2h0IHRvIHJ1bGUgdGhlIG5pZ2h0OiBoZSBtYWRlIHRoZSBzdGFycyBhbHNvLgpBbmQgR29kIHNldCB0aGVtIGluIHRoZSBmaXJtYW1lbnQgb2YgdGhlIGhlYXZlbiB0byBnaXZlIGxpZ2h0IHVwb24gdGhlIGVhcnRoLApBbmQgdG8gcnVsZSBvdmVyIHRoZSBkYXkgYW5kIG92ZXIgdGhlIG5pZ2h0LCBhbmQgdG8gZGl2aWRlIHRoZSBsaWdodCBmcm9tIHRoZSBkYXJrbmVzczogYW5kIEdvZCBzYXcgdGhhdCBpdCB3YXMgZ29vZC4KQW5kIHRoZSBldmVuaW5nIGFuZCB0aGUgbW9ybmluZyB3ZXJlIHRoZSBmb3VydGggZGF5LgpBbmQgR29kIHNhaWQsIExldCB0aGUgd2F0ZXJzIGJyaW5nIGZvcnRoIGFidW5kYW50bHkgdGhlIG1vdmluZyBjcmVhdHVyZSB0aGF0IGhhdGggbGlmZSwgYW5kIGZvd2wgdGhhdCBtYXkgZmx5IGFib3ZlIHRoZSBlYXJ0aCBpbiB0aGUgb3BlbiBmaXJtYW1lbnQgb2YgaGVhdmVuLgpBbmQgR29kIGNyZWF0ZWQgZ3JlYXQgd2hhbGVzLCBhbmQgZXZlcnkgbGl2aW5nIGNyZWF0dXJlIHRoYXQgbW92ZXRoLCB3aGljaCB0aGUgd2F0ZXJzIGJyb3VnaHQgZm9ydGggYWJ1bmRhbnRseSwgYWZ0ZXIgdGhlaXIga2luZCwgYW5kIGV2ZXJ5IHdpbmdlZCBmb3dsIGFmdGVyIGhpcyBraW5kOiBhbmQgR29kIHNhdyB0aGF0IGl0IHdhcyBnb29kLgpBbmQgR29kIGJsZXNzZWQgdGhlbSwgc2F5aW5nLCBCZSBmcnVpdGZ1bCwgYW5kIG11bHRpcGx5LCBhbmQgZmlsbCB0aGUgd2F0ZXJzIGluIHRoZSBzZWFzLCBhbmQgbGV0IGZvd2wgbXVsdGlwbHkgaW4gdGhlIGVhcnRoLgpBbmQgdGhlIGV2ZW5pbmcgYW5kIHRoZSBtb3JuaW5nIHdlcmUgdGhlIGZpZnRoIGRheS4KQW5kIEdvZCBzYWlkLCBMZXQgdGhlIGVhcnRoIGJyaW5nIGZvcnRoIHRoZSBsaXZpbmcgY3JlYXR1cmUgYWZ0ZXIgaGlzIGtpbmQsIGNhdHRsZSwgYW5kIGNyZWVwaW5nIHRoaW5nLCBhbmQgYmVhc3Qgb2YgdGhlIGVhcnRoIGFmdGVyIGhpcyBraW5kOiBhbmQgaXQgd2FzIHNvLgpBbmQgR29kIG1hZGUgdGhlIGJlYXN0IG9mIHRoZSBlYXJ0aCBhZnRlciBoaXMga2luZCwgYW5kIGNhdHRsZSBhZnRlciB0aGVpciBraW5kLCBhbmQgZXZlcnkgdGhpbmcgdGhhdCBjcmVlcGV0aCB1cG9uIHRoZSBlYXJ0aCBhZnRlciBoaXMga2luZDogYW5kIEdvZCBzYXcgdGhhdCBpdCB3YXMgZ29vZC4KQW5kIEdvZCBzYWlkLCBMZXQgdXMgbWFrZSBtYW4gaW4gb3VyIGltYWdlLCBhZnRlciBvdXIgbGlrZW5lc3M6IGFuZCBsZXQgdGhlbSBoYXZlIGRvbWluaW9uIG92ZXIgdGhlIGZpc2ggb2YgdGhlIHNlYSwgYW5kIG92ZXIgdGhlIGZvd2wgb2YgdGhlIGFpciwgYW5kIG92ZXIgdGhlIGNhdHRsZSwgYW5kIG92ZXIgYWxsIHRoZSBlYXJ0aCwgYW5kIG92ZXIgZXZlcnkgY3JlZXBpbmcgdGhpbmcgdGhhdCBjcmVlcGV0aCB1cG9uIHRoZSBlYXJ0aC4KU28gR29kIGNyZWF0ZWQgbWFuIGluIGhpcyBvd24gaW1hZ2UsIGluIHRoZSBpbWFnZSBvZiBHb2QgY3JlYXRlZCBoZSBoaW07IG1hbGUgYW5kIGZlbWFsZSBjcmVhdGVkIGhlIHRoZW0uCkFuZCBHb2QgYmxlc3NlZCB0aGVtLCBhbmQgR29kIHNhaWQgdW50byB0aGVtLCBCZSBmcnVpdGZ1bCwgYW5kIG11bHRpcGx5LCBhbmQgcmVwbGVuaXNoIHRoZSBlYXJ0aCwgYW5kIHN1YmR1ZSBpdDogYW5kIGhhdmUgZG9taW5pb24gb3ZlciB0aGUgZmlzaCBvZiB0aGUgc2VhLCBhbmQgb3ZlciB0aGUgZm93bCBvZiB0aGUgYWlyLCBhbmQgb3ZlciBldmVyeSBsaXZpbmcgdGhpbmcgdGhhdCBtb3ZldGggdXBvbiB0aGUgZWFydGguCkFuZCBHb2Qgc2FpZCwgQmVob2xkLCBJIGhhdmUgZ2l2ZW4geW91IGV2ZXJ5IGhlcmIgYmVhcmluZyBzZWVkLCB3aGljaCBpcyB1cG9uIHRoZSBmYWNlIG9mIGFsbCB0aGUgZWFydGgsIGFuZCBldmVyeSB0cmVlLCBpbiB0aGUgd2hpY2ggaXMgdGhlIGZydWl0IG9mIGEgdHJlZSB5aWVsZGluZyBzZWVkOyB0byB5b3UgaXQgc2hhbGwgYmUgZm9yIG1lYXQuCkFuZCB0byBldmVyeSBiZWFzdCBvZiB0aGUgZWFydGgsIGFuZCB0byBldmVyeSBmb3dsIG9mIHRoZSBhaXIsIGFuZCB0byBldmVyeSB0aGluZyB0aGF0IGNyZWVwZXRoIHVwb24gdGhlIGVhcnRoLCB3aGVyZWluIHRoZXJlIGlzIGxpZmUsIEkgaGF2ZSBnaXZlbiBldmVyeSBncmVlbiBoZXJiIGZvciBtZWF0OiBhbmQgaXQgd2FzIHNvLgpBbmQgR29kIHNhdyBldmVyeSB0aGluZyB0aGF0IGhlIGhhZCBtYWRlLCBhbmQsIGJlaG9sZCwgaXQgd2FzIHZlcnkgZ29vZC4gQW5kIHRoZSBldmVuaW5nIGFuZCB0aGUgbW9ybmluZyB3ZXJlIHRoZSBzaXh0aCBkYXkuClRodXMgdGhlIGhlYXZlbnMgYW5kIHRoZSBlYXJ0aCB3ZXJlIGZpbmlzaGVkLCBhbmQgYWxsIHRoZSBob3N0IG9mIHRoZW0uCkFuZCBvbiB0aGUgc2V2ZW50aCBkYXkgR29kIGVuZGVkIGhpcyB3b3JrIHdoaWNoIGhlIGhhZCBtYWRlOyBhbmQgaGUgcmVzdGVkIG9uIHRoZSBzZXZlbnRoIGRheSBmcm9tIGFsbCBoaXMgd29yayB3aGljaCBoZSBoYWQgbWFkZS4KQW5kIEdvZCBibGVzc2VkIHRoZSBzZXZlbnRoIGRheSwgYW5kIHNhbmN0aWZpZWQgaXQ6IGJlY2F1c2UgdGhhdCBpbiBpdCBoZSBoYWQgcmVzdGVkIGZyb20gYWxsIGhpcyB3b3JrIHdoaWNoIEdvZCBjcmVhdGVkIGFuZCBtYWRlLgpUaGVzZSBhcmUgdGhlIGdlbmVyYXRpb25zIG9mIHRoZSBoZWF2ZW5zIGFuZCBvZiB0aGUgZWFydGggd2hlbiB0aGV5IHdlcmUgY3JlYXRlZCwgaW4gdGhlIGRheSB0aGF0IHRoZSBMT1JEIEdvZCBtYWRlIHRoZSBlYXJ0aCBhbmQgdGhlIGhlYXZlbnMsCkFuZCBldmVyeSBwbGFudCBvZiB0aGUgZmllbGQgYmVmb3JlIGl0IHdhcyBpbiB0aGUgZWFydGgsIGFuZCBldmVyeSBoZXJiIG9mIHRoZSBmaWVsZCBiZWZvcmUgaXQgZ3JldzogZm9yIHRoZSBMT1JEIEdvZCBoYWQgbm90IGNhdXNlZCBpdCB0byByYWluIHVwb24gdGhlIGVhcnRoLCBhbmQgdGhlcmUgd2FzIG5vdCBhIG1hbiB0byB0aWxsIHRoZSBncm91bmQuCkJ1dCB0aGVyZSB3ZW50IHVwIGEgbWlzdCBmcm9tIHRoZSBlYXJ0aCwgYW5kIHdhdGVyZWQgdGhlIHdob2xlIGZhY2Ugb2YgdGhlIGdyb3VuZC4KQW5kIHRoZSBMT1JEIEdvZCBmb3JtZWQgbWFuIG9mIHRoZSBkdXN0IG9mIHRoZSBncm91bmQsIGFuZCBicmVhdGhlZCBpbnRvIGhpcyBub3N0cmlscyB0aGUgYnJlYXRoIG9mIGxpZmU7IGFuZCBtYW4gYmVjYW1lIGEgbGl2aW5nIHNvdWwuCkFuZCB0aGUgTE9SRCBHb2QgcGxhbnRlZCBhIGdhcmRlbiBlYXN0d2FyZCBpbiBFZGVuOyBhbmQgdGhlcmUgaGUgcHV0IHRoZSBtYW4gd2hvbSBoZSBoYWQgZm9ybWVkLgpBbmQgb3V0IG9mIHRoZSBncm91bmQgbWFkZSB0aGUgTE9SRCBHb2QgdG8gZ3JvdyBldmVyeSB0cmVlIHRoYXQgaXMgcGxlYXNhbnQgdG8gdGhlIHNpZ2h0LCBhbmQgZ29vZCBmb3IgZm9vZDsgdGhlIHRyZWUgb2YgbGlmZSBhbHNvIGluIHRoZSBtaWRzdCBvZiB0aGUgZ2FyZGVuLCBhbmQgdGhlIHRyZWUgb2Yga25vd2xlZGdlIG9mIGdvb2QgYW5kIGV2aWwuCkFuZCBhIHJpdmVyIHdlbnQgb3V0IG9mIEVkZW4gdG8gd2F0ZXIgdGhlIGdhcmRlbjsgYW5kIGZyb20gdGhlbmNlIGl0IHdhcyBwYXJ0ZWQsIGFuZCBiZWNhbWUgaW50byBmb3VyIGhlYWRzLgpUaGUgbmFtZSBvZiB0aGUgZmlyc3QgaXMgUGlzb246IHRoYXQgaXMgaXQgd2hpY2ggY29tcGFzc2V0aCB0aGUgd2hvbGUgbGFuZCBvZiBIYXZpbGFoLCB3aGVyZSB0aGVyZSBpcyBnb2xkOwpBbmQgdGhlIGdvbGQgb2YgdGhhdCBsYW5kIGlzIGdvb2Q6IHRoZXJlIGlzIGJkZWxsaXVtIGFuZCB0aGUgb255eCBzdG9uZS4KQW5kIHRoZSBuYW1lIG9mIHRoZSBzZWNvbmQgcml2ZXIgaXMgR2lob246IHRoZSBzYW1lIGlzIGl0IHRoYXQgY29tcGFzc2V0aCB0aGUgd2hvbGUgbGFuZCBvZiBFdGhpb3BpYS4KQW5kIHRoZSBuYW1lIG9mIHRoZSB0aGlyZCByaXZlciBpcyBIaWRkZWtlbDogdGhhdCBpcyBpdCB3aGljaCBnb2V0aCB0b3dhcmQgdGhlIGVhc3Qgb2YgQXNzeXJpYS4gQW5kIHRoZSBmb3VydGggcml2ZXIgaXMgRXVwaHJhdGVzLgpBbmQgdGhlIExPUkQgR29kIHRvb2sgdGhlIG1hbiwgYW5kIHB1dCBoaW0gaW50byB0aGUgZ2FyZGVuIG9mIEVkZW4gdG8gZHJlc3MgaXQgYW5kIHRvIGtlZXAgaXQuCkFuZCB0aGUgTE9SRCBHb2QgY29tbWFuZGVkIHRoZSBtYW4sIHNheWluZywgT2YgZXZlcnkgdHJlZSBvZiB0aGUgZ2FyZGVuIHRob3UgbWF5ZXN0IGZyZWVseSBlYXQ6CkJ1dCBvZiB0aGUgdHJlZSBvZiB0aGUga25vd2xlZGdlIG9mIGdvb2QgYW5kIGV2aWwsIHRob3Ugc2hhbHQgbm90IGVhdCBvZiBpdDogZm9yIGluIHRoZSBkYXkgdGhhdCB0aG91IGVhdGVzdCB0aGVyZW9mIHRob3Ugc2hhbHQgc3VyZWx5IGRpZS4KQW5kIHRoZSBMT1JEIEdvZCBzYWlkLCBJdCBpcyBub3QgZ29vZCB0aGF0IHRoZSBtYW4gc2hvdWxkIGJlIGFsb25lOyBJIHdpbGwgbWFrZSBoaW0gYW4gaGVscCBtZWV0IGZvciBoaW0uCkFuZCBvdXQgb2YgdGhlIGdyb3VuZCB0aGUgTE9SRCBHb2QgZm9ybWVkIGV2ZXJ5IGJlYXN0IG9mIHRoZSBmaWVsZCwgYW5kIGV2ZXJ5IGZvd2wgb2YgdGhlIGFpcjsgYW5kIGJyb3VnaHQgdGhlbSB1bnRvIEFkYW0gdG8gc2VlIHdoYXQgaGUgd291bGQgY2FsbCB0aGVtOiBhbmQgd2hhdHNvZXZlciBBZGFtIGNhbGxlZCBldmVyeSBsaXZpbmcgY3JlYXR1cmUsIHRoYXQgd2FzIHRoZSBuYW1lIHRoZXJlb2YuCkFuZCBBZGFtIGdhdmUgbmFtZXMgdG8gYWxsIGNhdHRsZSwgYW5kIHRvIHRoZSBmb3dsIG9mIHRoZSBhaXIsIGFuZCB0byBldmVyeSBiZWFzdCBvZiB0aGUgZmllbGQ7IGJ1dCBmb3IgQWRhbSB0aGVyZSB3YXMgbm90IGZvdW5kIGFuIGhlbHAgbWVldCBmb3IgaGltLgpBbmQgdGhlIExPUkQgR29kIGNhdXNlZCBhIGRlZXAgc2xlZXAgdG8gZmFsbCB1cG9uIEFkYW0sIGFuZCBoZSBzbGVwdDogYW5kIGhlIHRvb2sgb25lIG9mIGhpcyByaWJzLCBhbmQgY2xvc2VkIHVwIHRoZSBmbGVzaCBpbnN0ZWFkIHRoZXJlb2Y7CkFuZCB0aGUgcmliLCB3aGljaCB0aGUgTE9SRCBHb2QgaGFkIHRha2VuIGZyb20gbWFuLCBtYWRlIGhlIGEgd29tYW4sIGFuZCBicm91Z2h0IGhlciB1bnRvIHRoZSBtYW4uCkFuZCBBZGFtIHNhaWQsIFRoaXMgaXMgbm93IGJvbmUgb2YgbXkgYm9uZXMsIGFuZCBmbGVzaCBvZiBteSBmbGVzaDogc2hlIHNoYWxsIGJlIGNhbGxlZCBXb21hbiwgYmVjYXVzZSBzaGUgd2FzIHRha2VuIG91dCBvZiBNYW4uClRoZXJlZm9yZSBzaGFsbCBhIG1hbiBsZWF2ZSBoaXMgZmF0aGVyIGFuZCBoaXMgbW90aGVyLCBhbmQgc2hhbGwgY2xlYXZlIHVudG8gaGlzIHdpZmU6IGFuZCB0aGV5IHNoYWxsIGJlIG9uZSBmbGVzaC4KQW5kIHRoZXkgd2VyZSBib3RoIG5ha2VkLCB0aGUgbWFuIGFuZCBoaXMgd2lmZSwgYW5kIHdlcmUgbm90IGFzaGFtZWQuCk5vdyB0aGUgc2VycGVudCB3YXMgbW9yZSBzdWJ0aWwgdGhhbiBhbnkgYmVhc3Qgb2YgdGhlIGZpZWxkIHdoaWNoIHRoZSBMT1JEIEdvZCBoYWQgbWFkZS4gQW5kIGhlIHNhaWQgdW50byB0aGUgd29tYW4sIFllYSwgaGF0aCBHb2Qgc2FpZCwgWWUgc2hhbGwgbm90IGVhdCBvZiBldmVyeSB0cmVlIG9mIHRoZSBnYXJkZW4/CkFuZCB0aGUgd29tYW4gc2FpZCB1bnRvIHRoZSBzZXJwZW50LCBXZSBtYXkgZWF0IG9mIHRoZSBmcnVpdCBvZiB0aGUgdHJlZXMgb2YgdGhlIGdhcmRlbjoKQnV0IG9mIHRoZSBmcnVpdCBvZiB0aGUgdHJlZSB3aGljaCBpcyBpbiB0aGUgbWlkc3Qgb2YgdGhlIGdhcmRlbiwgR29kIGhhdGggc2FpZCwgWWUgc2hhbGwgbm90IGVhdCBvZiBpdCwgbmVpdGhlciBzaGFsbCB5ZSB0b3VjaCBpdCwgbGVzdCB5ZSBkaWUuCkFuZCB0aGUgc2VycGVudCBzYWlkIHVudG8gdGhlIHdvbWFuLCBZZSBzaGFsbCBub3Qgc3VyZWx5IGRpZToKRm9yIEdvZCBkb3RoIGtub3cgdGhhdCBpbiB0aGUgZGF5IHllIGVhdCB0aGVyZW9mLCB0aGVuIHlvdXIgZXllcyBzaGFsbCBiZSBvcGVuZWQsIGFuZCB5ZSBzaGFsbCBiZSBhcyBnb2RzLCBrbm93aW5nIGdvb2QgYW5kIGV2aWwuCkFuZCB3aGVuIHRoZSB3b21hbiBzYXcgdGhhdCB0aGUgdHJlZSB3YXMgZ29vZCBmb3IgZm9vZCwgYW5kIHRoYXQgaXQgd2FzIHBsZWFzYW50IHRvIHRoZSBleWVzLCBhbmQgYSB0cmVlIHRvIGJlIGRlc2lyZWQgdG8gbWFrZSBvbmUgd2lzZSwgc2hlIHRvb2sgb2YgdGhlIGZydWl0IHRoZXJlb2YsIGFuZCBkaWQgZWF0LCBhbmQgZ2F2ZSBhbHNvIHVudG8gaGVyIGh1c2JhbmQgd2l0aCBoZXI7IGFuZCBoZSBkaWQgZWF0LgpBbmQgdGhlIGV5ZXMgb2YgdGhlbSBib3RoIHdlcmUgb3BlbmVkLCBhbmQgdGhleSBrbmV3IHRoYXQgdGhleSB3ZXJlIG5ha2VkOyBhbmQgdGhleSBzZXdlZCBmaWcgbGVhdmVzIHRvZ2V0aGVyLCBhbmQgbWFkZSB0aGVtc2VsdmVzIGFwcm9ucy4KQW5kIHRoZXkgaGVhcmQgdGhlIHZvaWNlIG9mIHRoZSBMT1JEIEdvZCB3YWxraW5nIGluIHRoZSBnYXJkZW4gaW4gdGhlIGNvb2wgb2YgdGhlIGRheTogYW5kIEFkYW0gYW5kIGhpcyB3aWZlIGhpZCB0aGVtc2VsdmVzIGZyb20gdGhlIHByZXNlbmNlIG9mIHRoZSBMT1JEIEdvZCBhbW9uZ3N0IHRoZSB0cmVlcyBvZiB0aGUgZ2FyZGVuLgpBbmQgdGhlIExPUkQgR29kIGNhbGxlZCB1bnRvIEFkYW0sIGFuZCBzYWlkIHVudG8gaGltLCBXaGVyZSBhcnQgdGhvdT8KQW5kIGhlIHNhaWQsIEkgaGVhcmQgdGh5IHZvaWNlIGluIHRoZSBnYXJkZW4sIGFuZCBJIHdhcyBhZnJhaWQsIGJlY2F1c2UgSSB3YXMgbmFrZWQ7IGFuZCBJIGhpZCBteXNlbGYuCkFuZCBoZSBzYWlkLCBXaG8gdG9sZCB0aGVlIHRoYXQgdGhvdSB3YXN0IG5ha2VkPyBIYXN0IHRob3UgZWF0ZW4gb2YgdGhlIHRyZWUsIHdoZXJlb2YgSSBjb21tYW5kZWQgdGhlZSB0aGF0IHRob3Ugc2hvdWxkZXN0IG5vdCBlYXQ/CkFuZCB0aGUgbWFuIHNhaWQsIFRoZSB3b21hbiB3aG9tIHRob3UgZ2F2ZXN0IHRvIGJlIHdpdGggbWUsIHNoZSBnYXZlIG1lIG9mIHRoZSB0cmVlLCBhbmQgSSBkaWQgZWF0LgpBbmQgdGhlIExPUkQgR29kIHNhaWQgdW50byB0aGUgd29tYW4sIFdoYXQgaXMgdGhpcyB0aGF0IHRob3UgaGFzdCBkb25lPyBBbmQgdGhlIHdvbWFuIHNhaWQsIFRoZSBzZXJwZW50IGJlZ3VpbGVkIG1lLCBhbmQgSSBkaWQgZWF0LgpBbmQgdGhlIExPUkQgR29kIHNhaWQgdW50byB0aGUgc2VycGVudCwgQmVjYXVzZSB0aG91IGhhc3QgZG9uZSB0aGlzLCB0aG91IGFydCBjdXJzZWQgYWJvdmUgYWxsIGNhdHRsZSwgYW5kIGFib3ZlIGV2ZXJ5IGJlYXN0IG9mIHRoZSBmaWVsZDsgdXBvbiB0aHkgYmVsbHkgc2hhbHQgdGhvdSBnbywgYW5kIGR1c3Qgc2hhbHQgdGhvdSBlYXQgYWxsIHRoZSBkYXlzIG9mIHRoeSBsaWZlOgpBbmQgSSB3aWxsIHB1dCBlbm1pdHkgYmV0d2VlbiB0aGVlIGFuZCB0aGUgd29tYW4sIGFuZCBiZXR3ZWVuIHRoeSBzZWVkIGFuZCBoZXIgc2VlZDsgaXQgc2hhbGwgYnJ1aXNlIHRoeSBoZWFkLCBhbmQgdGhvdSBzaGFsdCBicnVpc2UgaGlzIGhlZWwuClVudG8gdGhlIHdvbWFuIGhlIHNhaWQsIEkgd2lsbCBncmVhdGx5IG11bHRpcGx5IHRoeSBzb3Jyb3cgYW5kIHRoeSBjb25jZXB0aW9uOyBpbiBzb3Jyb3cgdGhvdSBzaGFsdCBicmluZyBmb3J0aCBjaGlsZHJlbjsgYW5kIHRoeSBkZXNpcmUgc2hhbGwgYmUgdG8gdGh5IGh1c2JhbmQsIGFuZCBoZSBzaGFsbCBydWxlIG92ZXIgdGhlZS4KQW5kIHVudG8gQWRhbSBoZSBzYWlkLCBCZWNhdXNlIHRob3UgaGFzdCBoZWFya2VuZWQgdW50byB0aGUgdm9pY2Ugb2YgdGh5IHdpZmUsIGFuZCBoYXN0IGVhdGVuIG9mIHRoZSB0cmVlLCBvZiB3aGljaCBJIGNvbW1hbmRlZCB0aGVlLCBzYXlpbmcsIFRob3Ugc2hhbHQgbm90IGVhdCBvZiBpdDogY3Vyc2VkIGlzIHRoZSBncm91bmQgZm9yIHRoeSBzYWtlOyBpbiBzb3Jyb3cgc2hhbHQgdGhvdSBlYXQgb2YgaXQgYWxsIHRoZSBkYXlzIG9mIHRoeSBsaWZlOwpUaG9ybnMgYWxzbyBhbmQgdGhpc3RsZXMgc2hhbGwgaXQgYnJpbmcgZm9ydGggdG8gdGhlZTsgYW5kIHRob3Ugc2hhbHQgZWF0IHRoZSBoZXJiIG9mIHRoZSBmaWVsZDsKSW4gdGhlIHN3ZWF0IG9mIHRoeSBmYWNlIHNoYWx0IHRob3UgZWF0IGJyZWFkLCB0aWxsIHRob3UgcmV0dXJuIHVudG8gdGhlIGdyb3VuZDsgZm9yIG91dCBvZiBpdCB3YXN0IHRob3UgdGFrZW46IGZvciBkdXN0IHRob3UgYXJ0LCBhbmQgdW50byBkdXN0IHNoYWx0IHRob3UgcmV0dXJuLgpBbmQgQWRhbSBjYWxsZWQgaGlzIHdpZmUncyBuYW1lIEV2ZTsgYmVjYXVzZSBzaGUgd2FzIHRoZSBtb3RoZXIgb2YgYWxsIGxpdmluZy4KVW50byBBZGFtIGFsc28gYW5kIHRvIGhpcyB3aWZlIGRpZCB0aGUgTE9SRCBHb2QgbWFrZSBjb2F0cyBvZiBza2lucywgYW5kIGNsb3RoZWQgdGhlbS4KQW5kIHRoZSBMT1JEIEdvZCBzYWlkLCBCZWhvbGQsIHRoZSBtYW4gaXMgYmVjb21lIGFzIG9uZSBvZiB1cywgdG8ga25vdyBnb29kIGFuZCBldmlsOiBhbmQgbm93LCBsZXN0IGhlIHB1dCBmb3J0aCBoaXMgaGFuZCwgYW5kIHRha2UgYWxzbyBvZiB0aGUgdHJlZSBvZiBsaWZlLCBhbmQgZWF0LCBhbmQgbGl2ZSBmb3IgZXZlcjoKVGhlcmVmb3JlIHRoZSBMT1JEIEdvZCBzZW50IGhpbSBmb3J0aCBmcm9tIHRoZSBnYXJkZW4gb2YgRWRlbiwgdG8gdGlsbCB0aGUgZ3JvdW5kIGZyb20gd2hlbmNlIGhlIHdhcyB0YWtlbi4KU28gaGUgZHJvdmUgb3V0IHRoZSBtYW47IGFuZCBoZSBwbGFjZWQgYXQgdGhlIGVhc3Qgb2YgdGhlIGdhcmRlbiBvZiBFZGVuIENoZXJ1YmltcywgYW5kIGEgZmxhbWluZyBzd29yZCB3aGljaCB0dXJuZWQgZXZlcnkgd2F5LCB0byBrZWVwIHRoZSB3YXkgb2YgdGhlIHRyZWUgb2YgbGlmZS4KQW5kIEFkYW0ga25ldyBFdmUgaGlzIHdpZmU7IGFuZCBzaGUgY29uY2VpdmVkLCBhbmQgYmFyZSBDYWluLCBhbmQgc2FpZCwgSSBoYXZlIGdvdHRlbiBhIG1hbiBmcm9tIHRoZSBMT1JELgpBbmQgc2hlIGFnYWluIGJhcmUgaGlzIGJyb3RoZXIgQWJlbC4gQW5kIEFiZWwgd2FzIGEga2VlcGVyIG9mIHNoZWVwLCBidXQgQ2FpbiB3YXMgYSB0aWxsZXIgb2YgdGhlIGdyb3VuZC4KQW5kIGluIHByb2Nlc3Mgb2YgdGltZSBpdCBjYW1lIHRvIHBhc3MsIHRoYXQgQ2FpbiBicm91Z2h0IG9mIHRoZSBmcnVpdCBvZiB0aGUgZ3JvdW5kIGFuIG9mZmVyaW5nIHVudG8gdGhlIExPUkQuCkFuZCBBYmVsLCBoZSBhbHNvIGJyb3VnaHQgb2YgdGhlIGZpcnN0bGluZ3Mgb2YgaGlzIGZsb2NrIGFuZCBvZiB0aGUgZmF0IHRoZXJlb2YuIEFuZCB0aGUgTE9SRCBoYWQgcmVzcGVjdCB1bnRvIEFiZWwgYW5kIHRvIGhpcyBvZmZlcmluZzoKQnV0IHVudG8gQ2FpbiBhbmQgdG8gaGlzIG9mZmVyaW5nIGhlIGhhZCBub3QgcmVzcGVjdC4gQW5kIENhaW4gd2FzIHZlcnkgd3JvdGgsIGFuZCBoaXMgY291bnRlbmFuY2UgZmVsbC4KQW5kIHRoZSBMT1JEIHNhaWQgdW50byBDYWluLCBXaHkgYXJ0IHRob3Ugd3JvdGg/IGFuZCB3aHkgaXMgdGh5IGNvdW50ZW5hbmNlIGZhbGxlbj8KSWYgdGhvdSBkb2VzdCB3ZWxsLCBzaGFsdCB0aG91IG5vdCBiZSBhY2NlcHRlZD8gYW5kIGlmIHRob3UgZG9lc3Qgbm90IHdlbGwsIHNpbiBsaWV0aCBhdCB0aGUgZG9vci4gQW5kIHVudG8gdGhlZSBzaGFsbCBiZSBoaXMgZGVzaXJlLCBhbmQgdGhvdSBzaGFsdCBydWxlIG92ZXIgaGltLgpBbmQgQ2FpbiB0YWxrZWQgd2l0aCBBYmVsIGhpcyBicm90aGVyOiBhbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIHRoZXkgd2VyZSBpbiB0aGUgZmllbGQsIHRoYXQgQ2FpbiByb3NlIHVwIGFnYWluc3QgQWJlbCBoaXMgYnJvdGhlciwgYW5kIHNsZXcgaGltLgpBbmQgdGhlIExPUkQgc2FpZCB1bnRvIENhaW4sIFdoZXJlIGlzIEFiZWwgdGh5IGJyb3RoZXI/IEFuZCBoZSBzYWlkLCBJIGtub3cgbm90OiBBbSBJIG15IGJyb3RoZXIncyBrZWVwZXI/CkFuZCBoZSBzYWlkLCBXaGF0IGhhc3QgdGhvdSBkb25lPyB0aGUgdm9pY2Ugb2YgdGh5IGJyb3RoZXIncyBibG9vZCBjcmlldGggdW50byBtZSBmcm9tIHRoZSBncm91bmQuCkFuZCBub3cgYXJ0IHRob3UgY3Vyc2VkIGZyb20gdGhlIGVhcnRoLCB3aGljaCBoYXRoIG9wZW5lZCBoZXIgbW91dGggdG8gcmVjZWl2ZSB0aHkgYnJvdGhlcidzIGJsb29kIGZyb20gdGh5IGhhbmQ7CldoZW4gdGhvdSB0aWxsZXN0IHRoZSBncm91bmQsIGl0IHNoYWxsIG5vdCBoZW5jZWZvcnRoIHlpZWxkIHVudG8gdGhlZSBoZXIgc3RyZW5ndGg7IGEgZnVnaXRpdmUgYW5kIGEgdmFnYWJvbmQgc2hhbHQgdGhvdSBiZSBpbiB0aGUgZWFydGguCkFuZCBDYWluIHNhaWQgdW50byB0aGUgTE9SRCwgTXkgcHVuaXNobWVudCBpcyBncmVhdGVyIHRoYW4gSSBjYW4gYmVhci4KQmVob2xkLCB0aG91IGhhc3QgZHJpdmVuIG1lIG91dCB0aGlzIGRheSBmcm9tIHRoZSBmYWNlIG9mIHRoZSBlYXJ0aDsgYW5kIGZyb20gdGh5IGZhY2Ugc2hhbGwgSSBiZSBoaWQ7IGFuZCBJIHNoYWxsIGJlIGEgZnVnaXRpdmUgYW5kIGEgdmFnYWJvbmQgaW4gdGhlIGVhcnRoOyBhbmQgaXQgc2hhbGwgY29tZSB0byBwYXNzLCB0aGF0IGV2ZXJ5IG9uZSB0aGF0IGZpbmRldGggbWUgc2hhbGwgc2xheSBtZS4KQW5kIHRoZSBMT1JEIHNhaWQgdW50byBoaW0sIFRoZXJlZm9yZSB3aG9zb2V2ZXIgc2xheWV0aCBDYWluLCB2ZW5nZWFuY2Ugc2hhbGwgYmUgdGFrZW4gb24gaGltIHNldmVuZm9sZC4gQW5kIHRoZSBMT1JEIHNldCBhIG1hcmsgdXBvbiBDYWluLCBsZXN0IGFueSBmaW5kaW5nIGhpbSBzaG91bGQga2lsbCBoaW0uCkFuZCBDYWluIHdlbnQgb3V0IGZyb20gdGhlIHByZXNlbmNlIG9mIHRoZSBMT1JELCBhbmQgZHdlbHQgaW4gdGhlIGxhbmQgb2YgTm9kLCBvbiB0aGUgZWFzdCBvZiBFZGVuLgpBbmQgQ2FpbiBrbmV3IGhpcyB3aWZlOyBhbmQgc2hlIGNvbmNlaXZlZCwgYW5kIGJhcmUgRW5vY2g6IGFuZCBoZSBidWlsZGVkIGEgY2l0eSwgYW5kIGNhbGxlZCB0aGUgbmFtZSBvZiB0aGUgY2l0eSwgYWZ0ZXIgdGhlIG5hbWUgb2YgaGlzIHNvbiwgRW5vY2guCkFuZCB1bnRvIEVub2NoIHdhcyBib3JuIElyYWQ6IGFuZCBJcmFkIGJlZ2F0IE1laHVqYWVsOiBhbmQgTWVodWphZWwgYmVnYXQgTWV0aHVzYWVsOiBhbmQgTWV0aHVzYWVsIGJlZ2F0IExhbWVjaC4KQW5kIExhbWVjaCB0b29rIHVudG8gaGltIHR3byB3aXZlczogdGhlIG5hbWUgb2YgdGhlIG9uZSB3YXMgQWRhaCwgYW5kIHRoZSBuYW1lIG9mIHRoZSBvdGhlciBaaWxsYWguCkFuZCBBZGFoIGJhcmUgSmFiYWw6IGhlIHdhcyB0aGUgZmF0aGVyIG9mIHN1Y2ggYXMgZHdlbGwgaW4gdGVudHMsIGFuZCBvZiBzdWNoIGFzIGhhdmUgY2F0dGxlLgpBbmQgaGlzIGJyb3RoZXIncyBuYW1lIHdhcyBKdWJhbDogaGUgd2FzIHRoZSBmYXRoZXIgb2YgYWxsIHN1Y2ggYXMgaGFuZGxlIHRoZSBoYXJwIGFuZCBvcmdhbi4KQW5kIFppbGxhaCwgc2hlIGFsc28gYmFyZSBUdWJhbGNhaW4sIGFuIGluc3RydWN0ZXIgb2YgZXZlcnkgYXJ0aWZpY2VyIGluIGJyYXNzIGFuZCBpcm9uOiBhbmQgdGhlIHNpc3RlciBvZiBUdWJhbGNhaW4gd2FzIE5hYW1haC4KQW5kIExhbWVjaCBzYWlkIHVudG8gaGlzIHdpdmVzLCBBZGFoIGFuZCBaaWxsYWgsIEhlYXIgbXkgdm9pY2U7IHllIHdpdmVzIG9mIExhbWVjaCwgaGVhcmtlbiB1bnRvIG15IHNwZWVjaDogZm9yIEkgaGF2ZSBzbGFpbiBhIG1hbiB0byBteSB3b3VuZGluZywgYW5kIGEgeW91bmcgbWFuIHRvIG15IGh1cnQuCklmIENhaW4gc2hhbGwgYmUgYXZlbmdlZCBzZXZlbmZvbGQsIHRydWx5IExhbWVjaCBzZXZlbnR5IGFuZCBzZXZlbmZvbGQuCkFuZCBBZGFtIGtuZXcgaGlzIHdpZmUgYWdhaW47IGFuZCBzaGUgYmFyZSBhIHNvbiwgYW5kIGNhbGxlZCBoaXMgbmFtZSBTZXRoOiBGb3IgR29kLCBzYWlkIHNoZSwgaGF0aCBhcHBvaW50ZWQgbWUgYW5vdGhlciBzZWVkIGluc3RlYWQgb2YgQWJlbCwgd2hvbSBDYWluIHNsZXcuCkFuZCB0byBTZXRoLCB0byBoaW0gYWxzbyB0aGVyZSB3YXMgYm9ybiBhIHNvbjsgYW5kIGhlIGNhbGxlZCBoaXMgbmFtZSBFbm9zOiB0aGVuIGJlZ2FuIG1lbiB0byBjYWxsIHVwb24gdGhlIG5hbWUgb2YgdGhlIExPUkQuClRoaXMgaXMgdGhlIGJvb2sgb2YgdGhlIGdlbmVyYXRpb25zIG9mIEFkYW0uIEluIHRoZSBkYXkgdGhhdCBHb2QgY3JlYXRlZCBtYW4sIGluIHRoZSBsaWtlbmVzcyBvZiBHb2QgbWFkZSBoZSBoaW07Ck1hbGUgYW5kIGZlbWFsZSBjcmVhdGVkIGhlIHRoZW07IGFuZCBibGVzc2VkIHRoZW0sIGFuZCBjYWxsZWQgdGhlaXIgbmFtZSBBZGFtLCBpbiB0aGUgZGF5IHdoZW4gdGhleSB3ZXJlIGNyZWF0ZWQuCkFuZCBBZGFtIGxpdmVkIGFuIGh1bmRyZWQgYW5kIHRoaXJ0eSB5ZWFycywgYW5kIGJlZ2F0IGEgc29uIGluIGhpcyBvd24gbGlrZW5lc3MsIGFuZCBhZnRlciBoaXMgaW1hZ2U7IGFuZCBjYWxsZWQgaGlzIG5hbWUgU2V0aDoKQW5kIHRoZSBkYXlzIG9mIEFkYW0gYWZ0ZXIgaGUgaGFkIGJlZ290dGVuIFNldGggd2VyZSBlaWdodCBodW5kcmVkIHllYXJzOiBhbmQgaGUgYmVnYXQgc29ucyBhbmQgZGF1Z2h0ZXJzOgpBbmQgYWxsIHRoZSBkYXlzIHRoYXQgQWRhbSBsaXZlZCB3ZXJlIG5pbmUgaHVuZHJlZCBhbmQgdGhpcnR5IHllYXJzOiBhbmQgaGUgZGllZC4KQW5kIFNldGggbGl2ZWQgYW4gaHVuZHJlZCBhbmQgZml2ZSB5ZWFycywgYW5kIGJlZ2F0IEVub3M6CkFuZCBTZXRoIGxpdmVkIGFmdGVyIGhlIGJlZ2F0IEVub3MgZWlnaHQgaHVuZHJlZCBhbmQgc2V2ZW4geWVhcnMsIGFuZCBiZWdhdCBzb25zIGFuZCBkYXVnaHRlcnM6CkFuZCBhbGwgdGhlIGRheXMgb2YgU2V0aCB3ZXJlIG5pbmUgaHVuZHJlZCBhbmQgdHdlbHZlIHllYXJzOiBhbmQgaGUgZGllZC4KQW5kIEVub3MgbGl2ZWQgbmluZXR5IHllYXJzLCBhbmQgYmVnYXQgQ2FpbmFuOgpBbmQgRW5vcyBsaXZlZCBhZnRlciBoZSBiZWdhdCBDYWluYW4gZWlnaHQgaHVuZHJlZCBhbmQgZmlmdGVlbiB5ZWFycywgYW5kIGJlZ2F0IHNvbnMgYW5kIGRhdWdodGVyczoKQW5kIGFsbCB0aGUgZGF5cyBvZiBFbm9zIHdlcmUgbmluZSBodW5kcmVkIGFuZCBmaXZlIHllYXJzOiBhbmQgaGUgZGllZC4KQW5kIENhaW5hbiBsaXZlZCBzZXZlbnR5IHllYXJzIGFuZCBiZWdhdCBNYWhhbGFsZWVsOgpBbmQgQ2FpbmFuIGxpdmVkIGFmdGVyIGhlIGJlZ2F0IE1haGFsYWxlZWwgZWlnaHQgaHVuZHJlZCBhbmQgZm9ydHkgeWVhcnMsIGFuZCBiZWdhdCBzb25zIGFuZCBkYXVnaHRlcnM6CkFuZCBhbGwgdGhlIGRheXMgb2YgQ2FpbmFuIHdlcmUgbmluZSBodW5kcmVkIGFuZCB0ZW4geWVhcnM6IGFuZCBoZSBkaWVkLgpBbmQgTWFoYWxhbGVlbCBsaXZlZCBzaXh0eSBhbmQgZml2ZSB5ZWFycywgYW5kIGJlZ2F0IEphcmVkOgpBbmQgTWFoYWxhbGVlbCBsaXZlZCBhZnRlciBoZSBiZWdhdCBKYXJlZCBlaWdodCBodW5kcmVkIGFuZCB0aGlydHkgeWVhcnMsIGFuZCBiZWdhdCBzb25zIGFuZCBkYXVnaHRlcnM6CkFuZCBhbGwgdGhlIGRheXMgb2YgTWFoYWxhbGVlbCB3ZXJlIGVpZ2h0IGh1bmRyZWQgbmluZXR5IGFuZCBmaXZlIHllYXJzOiBhbmQgaGUgZGllZC4KQW5kIEphcmVkIGxpdmVkIGFuIGh1bmRyZWQgc2l4dHkgYW5kIHR3byB5ZWFycywgYW5kIGhlIGJlZ2F0IEVub2NoOgpBbmQgSmFyZWQgbGl2ZWQgYWZ0ZXIgaGUgYmVnYXQgRW5vY2ggZWlnaHQgaHVuZHJlZCB5ZWFycywgYW5kIGJlZ2F0IHNvbnMgYW5kIGRhdWdodGVyczoKQW5kIGFsbCB0aGUgZGF5cyBvZiBKYXJlZCB3ZXJlIG5pbmUgaHVuZHJlZCBzaXh0eSBhbmQgdHdvIHllYXJzOiBhbmQgaGUgZGllZC4KQW5kIEVub2NoIGxpdmVkIHNpeHR5IGFuZCBmaXZlIHllYXJzLCBhbmQgYmVnYXQgTWV0aHVzZWxhaDoKQW5kIEVub2NoIHdhbGtlZCB3aXRoIEdvZCBhZnRlciBoZSBiZWdhdCBNZXRodXNlbGFoIHRocmVlIGh1bmRyZWQgeWVhcnMsIGFuZCBiZWdhdCBzb25zIGFuZCBkYXVnaHRlcnM6CkFuZCBhbGwgdGhlIGRheXMgb2YgRW5vY2ggd2VyZSB0aHJlZSBodW5kcmVkIHNpeHR5IGFuZCBmaXZlIHllYXJzOgpBbmQgRW5vY2ggd2Fsa2VkIHdpdGggR29kOiBhbmQgaGUgd2FzIG5vdDsgZm9yIEdvZCB0b29rIGhpbS4KQW5kIE1ldGh1c2VsYWggbGl2ZWQgYW4gaHVuZHJlZCBlaWdodHkgYW5kIHNldmVuIHllYXJzLCBhbmQgYmVnYXQgTGFtZWNoLgpBbmQgTWV0aHVzZWxhaCBsaXZlZCBhZnRlciBoZSBiZWdhdCBMYW1lY2ggc2V2ZW4gaHVuZHJlZCBlaWdodHkgYW5kIHR3byB5ZWFycywgYW5kIGJlZ2F0IHNvbnMgYW5kIGRhdWdodGVyczoKQW5kIGFsbCB0aGUgZGF5cyBvZiBNZXRodXNlbGFoIHdlcmUgbmluZSBodW5kcmVkIHNpeHR5IGFuZCBuaW5lIHllYXJzOiBhbmQgaGUgZGllZC4KQW5kIExhbWVjaCBsaXZlZCBhbiBodW5kcmVkIGVpZ2h0eSBhbmQgdHdvIHllYXJzLCBhbmQgYmVnYXQgYSBzb246CkFuZCBoZSBjYWxsZWQgaGlzIG5hbWUgTm9haCwgc2F5aW5nLCBUaGlzIHNhbWUgc2hhbGwgY29tZm9ydCB1cyBjb25jZXJuaW5nIG91ciB3b3JrIGFuZCB0b2lsIG9mIG91ciBoYW5kcywgYmVjYXVzZSBvZiB0aGUgZ3JvdW5kIHdoaWNoIHRoZSBMT1JEIGhhdGggY3Vyc2VkLgpBbmQgTGFtZWNoIGxpdmVkIGFmdGVyIGhlIGJlZ2F0IE5vYWggZml2ZSBodW5kcmVkIG5pbmV0eSBhbmQgZml2ZSB5ZWFycywgYW5kIGJlZ2F0IHNvbnMgYW5kIGRhdWdodGVyczoKQW5kIGFsbCB0aGUgZGF5cyBvZiBMYW1lY2ggd2VyZSBzZXZlbiBodW5kcmVkIHNldmVudHkgYW5kIHNldmVuIHllYXJzOiBhbmQgaGUgZGllZC4KQW5kIE5vYWggd2FzIGZpdmUgaHVuZHJlZCB5ZWFycyBvbGQ6IGFuZCBOb2FoIGJlZ2F0IFNoZW0sIEhhbSwgYW5kIEphcGhldGguCkFuZCBpdCBjYW1lIHRvIHBhc3MsIHdoZW4gbWVuIGJlZ2FuIHRvIG11bHRpcGx5IG9uIHRoZSBmYWNlIG9mIHRoZSBlYXJ0aCwgYW5kIGRhdWdodGVycyB3ZXJlIGJvcm4gdW50byB0aGVtLApUaGF0IHRoZSBzb25zIG9mIEdvZCBzYXcgdGhlIGRhdWdodGVycyBvZiBtZW4gdGhhdCB0aGV5IHdlcmUgZmFpcjsgYW5kIHRoZXkgdG9vayB0aGVtIHdpdmVzIG9mIGFsbCB3aGljaCB0aGV5IGNob3NlLgpBbmQgdGhlIExPUkQgc2FpZCwgTXkgc3Bpcml0IHNoYWxsIG5vdCBhbHdheXMgc3RyaXZlIHdpdGggbWFuLCBmb3IgdGhhdCBoZSBhbHNvIGlzIGZsZXNoOiB5ZXQgaGlzIGRheXMgc2hhbGwgYmUgYW4gaHVuZHJlZCBhbmQgdHdlbnR5IHllYXJzLgpUaGVyZSB3ZXJlIGdpYW50cyBpbiB0aGUgZWFydGggaW4gdGhvc2UgZGF5czsgYW5kIGFsc28gYWZ0ZXIgdGhhdCwgd2hlbiB0aGUgc29ucyBvZiBHb2QgY2FtZSBpbiB1bnRvIHRoZSBkYXVnaHRlcnMgb2YgbWVuLCBhbmQgdGhleSBiYXJlIGNoaWxkcmVuIHRvIHRoZW0sIHRoZSBzYW1lIGJlY2FtZSBtaWdodHkgbWVuIHdoaWNoIHdlcmUgb2Ygb2xkLCBtZW4gb2YgcmVub3duLgpBbmQgR29kIHNhdyB0aGF0IHRoZSB3aWNrZWRuZXNzIG9mIG1hbiB3YXMgZ3JlYXQgaW4gdGhlIGVhcnRoLCBhbmQgdGhhdCBldmVyeSBpbWFnaW5hdGlvbiBvZiB0aGUgdGhvdWdodHMgb2YgaGlzIGhlYXJ0IHdhcyBvbmx5IGV2aWwgY29udGludWFsbHkuCkFuZCBpdCByZXBlbnRlZCB0aGUgTE9SRCB0aGF0IGhlIGhhZCBtYWRlIG1hbiBvbiB0aGUgZWFydGgsIGFuZCBpdCBncmlldmVkIGhpbSBhdCBoaXMgaGVhcnQuCkFuZCB0aGUgTE9SRCBzYWlkLCBJIHdpbGwgZGVzdHJveSBtYW4gd2hvbSBJIGhhdmUgY3JlYXRlZCBmcm9tIHRoZSBmYWNlIG9mIHRoZSBlYXJ0aDsgYm90aCBtYW4sIGFuZCBiZWFzdCwgYW5kIHRoZSBjcmVlcGluZyB0aGluZywgYW5kIHRoZSBmb3dscyBvZiB0aGUgYWlyOyBmb3IgaXQgcmVwZW50ZXRoIG1lIHRoYXQgSSBoYXZlIG1hZGUgdGhlbS4KQnV0IE5vYWggZm91bmQgZ3JhY2UgaW4gdGhlIGV5ZXMgb2YgdGhlIExPUkQuClRoZXNlIGFyZSB0aGUgZ2VuZXJhdGlvbnMgb2YgTm9haDogTm9haCB3YXMgYSBqdXN0IG1hbiBhbmQgcGVyZmVjdCBpbiBoaXMgZ2VuZXJhdGlvbnMsIGFuZCBOb2FoIHdhbGtlZCB3aXRoIEdvZC4KQW5kIE5vYWggYmVnYXQgdGhyZWUgc29ucywgU2hlbSwgSGFtLCBhbmQgSmFwaGV0aC4KVGhlIGVhcnRoIGFsc28gd2FzIGNvcnJ1cHQgYmVmb3JlIEdvZCwgYW5kIHRoZSBlYXJ0aCB3YXMgZmlsbGVkIHdpdGggdmlvbGVuY2UuCkFuZCBHb2QgbG9va2VkIHVwb24gdGhlIGVhcnRoLCBhbmQsIGJlaG9sZCwgaXQgd2FzIGNvcnJ1cHQ7IGZvciBhbGwgZmxlc2ggaGFkIGNvcnJ1cHRlZCBoaXMgd2F5IHVwb24gdGhlIGVhcnRoLgpBbmQgR29kIHNhaWQgdW50byBOb2FoLCBUaGUgZW5kIG9mIGFsbCBmbGVzaCBpcyBjb21lIGJlZm9yZSBtZTsgZm9yIHRoZSBlYXJ0aCBpcyBmaWxsZWQgd2l0aCB2aW9sZW5jZSB0aHJvdWdoIHRoZW07IGFuZCwgYmVob2xkLCBJIHdpbGwgZGVzdHJveSB0aGVtIHdpdGggdGhlIGVhcnRoLgpNYWtlIHRoZWUgYW4gYXJrIG9mIGdvcGhlciB3b29kOyByb29tcyBzaGFsdCB0aG91IG1ha2UgaW4gdGhlIGFyaywgYW5kIHNoYWx0IHBpdGNoIGl0IHdpdGhpbiBhbmQgd2l0aG91dCB3aXRoIHBpdGNoLgpBbmQgdGhpcyBpcyB0aGUgZmFzaGlvbiB3aGljaCB0aG91IHNoYWx0IG1ha2UgaXQgb2Y6IFRoZSBsZW5ndGggb2YgdGhlIGFyayBzaGFsbCBiZSB0aHJlZSBodW5kcmVkIGN1Yml0cywgdGhlIGJyZWFkdGggb2YgaXQgZmlmdHkgY3ViaXRzLCBhbmQgdGhlIGhlaWdodCBvZiBpdCB0aGlydHkgY3ViaXRzLgpBIHdpbmRvdyBzaGFsdCB0aG91IG1ha2UgdG8gdGhlIGFyaywgYW5kIGluIGEgY3ViaXQgc2hhbHQgdGhvdSBmaW5pc2ggaXQgYWJvdmU7IGFuZCB0aGUgZG9vciBvZiB0aGUgYXJrIHNoYWx0IHRob3Ugc2V0IGluIHRoZSBzaWRlIHRoZXJlb2Y7IHdpdGggbG93ZXIsIHNlY29uZCwgYW5kIHRoaXJkIHN0b3JpZXMgc2hhbHQgdGhvdSBtYWtlIGl0LgpBbmQsIGJlaG9sZCwgSSwgZXZlbiBJLCBkbyBicmluZyBhIGZsb29kIG9mIHdhdGVycyB1cG9uIHRoZSBlYXJ0aCwgdG8gZGVzdHJveSBhbGwgZmxlc2gsIHdoZXJlaW4gaXMgdGhlIGJyZWF0aCBvZiBsaWZlLCBmcm9tIHVuZGVyIGhlYXZlbjsgYW5kIGV2ZXJ5IHRoaW5nIHRoYXQgaXMgaW4gdGhlIGVhcnRoIHNoYWxsIGRpZS4KQnV0IHdpdGggdGhlZSB3aWxsIEkgZXN0YWJsaXNoIG15IGNvdmVuYW50OyBhbmQgdGhvdSBzaGFsdCBjb21lIGludG8gdGhlIGFyaywgdGhvdSwgYW5kIHRoeSBzb25zLCBhbmQgdGh5IHdpZmUsIGFuZCB0aHkgc29ucycgd2l2ZXMgd2l0aCB0aGVlLgpBbmQgb2YgZXZlcnkgbGl2aW5nIHRoaW5nIG9mIGFsbCBmbGVzaCwgdHdvIG9mIGV2ZXJ5IHNvcnQgc2hhbHQgdGhvdSBicmluZyBpbnRvIHRoZSBhcmssIHRvIGtlZXAgdGhlbSBhbGl2ZSB3aXRoIHRoZWU7IHRoZXkgc2hhbGwgYmUgbWFsZSBhbmQgZmVtYWxlLgpPZiBmb3dscyBhZnRlciB0aGVpciBraW5kLCBhbmQgb2YgY2F0dGxlIGFmdGVyIHRoZWlyIGtpbmQsIG9mIGV2ZXJ5IGNyZWVwaW5nIHRoaW5nIG9mIHRoZSBlYXJ0aCBhZnRlciBoaXMga2luZCwgdHdvIG9mIGV2ZXJ5IHNvcnQgc2hhbGwgY29tZSB1bnRvIHRoZWUsIHRvIGtlZXAgdGhlbSBhbGl2ZS4KQW5kIHRha2UgdGhvdSB1bnRvIHRoZWUgb2YgYWxsIGZvb2QgdGhhdCBpcyBlYXRlbiwgYW5kIHRob3Ugc2hhbHQgZ2F0aGVyIGl0IHRvIHRoZWU7IGFuZCBpdCBzaGFsbCBiZSBmb3IgZm9vZCBmb3IgdGhlZSwgYW5kIGZvciB0aGVtLgpUaHVzIGRpZCBOb2FoOyBhY2NvcmRpbmcgdG8gYWxsIHRoYXQgR29kIGNvbW1hbmRlZCBoaW0sIHNvIGRpZCBoZS4KQW5kIHRoZSBMT1JEIHNhaWQgdW50byBOb2FoLCBDb21lIHRob3UgYW5kIGFsbCB0aHkgaG91c2UgaW50byB0aGUgYXJrOyBmb3IgdGhlZSBoYXZlIEkgc2VlbiByaWdodGVvdXMgYmVmb3JlIG1lIGluIHRoaXMgZ2VuZXJhdGlvbi4KT2YgZXZlcnkgY2xlYW4gYmVhc3QgdGhvdSBzaGFsdCB0YWtlIHRvIHRoZWUgYnkgc2V2ZW5zLCB0aGUgbWFsZSBhbmQgaGlzIGZlbWFsZTogYW5kIG9mIGJlYXN0cyB0aGF0IGFyZSBub3QgY2xlYW4gYnkgdHdvLCB0aGUgbWFsZSBhbmQgaGlzIGZlbWFsZS4KT2YgZm93bHMgYWxzbyBvZiB0aGUgYWlyIGJ5IHNldmVucywgdGhlIG1hbGUgYW5kIHRoZSBmZW1hbGU7IHRvIGtlZXAgc2VlZCBhbGl2ZSB1cG9uIHRoZSBmYWNlIG9mIGFsbCB0aGUgZWFydGguCkZvciB5ZXQgc2V2ZW4gZGF5cywgYW5kIEkgd2lsbCBjYXVzZSBpdCB0byByYWluIHVwb24gdGhlIGVhcnRoIGZvcnR5IGRheXMgYW5kIGZvcnR5IG5pZ2h0czsgYW5kIGV2ZXJ5IGxpdmluZyBzdWJzdGFuY2UgdGhhdCBJIGhhdmUgbWFkZSB3aWxsIEkgZGVzdHJveSBmcm9tIG9mZiB0aGUgZmFjZSBvZiB0aGUgZWFydGguCkFuZCBOb2FoIGRpZCBhY2NvcmRpbmcgdW50byBhbGwgdGhhdCB0aGUgTE9SRCBjb21tYW5kZWQgaGltLgpBbmQgTm9haCB3YXMgc2l4IGh1bmRyZWQgeWVhcnMgb2xkIHdoZW4gdGhlIGZsb29kIG9mIHdhdGVycyB3YXMgdXBvbiB0aGUgZWFydGguCkFuZCBOb2FoIHdlbnQgaW4sIGFuZCBoaXMgc29ucywgYW5kIGhpcyB3aWZlLCBhbmQgaGlzIHNvbnMnIHdpdmVzIHdpdGggaGltLCBpbnRvIHRoZSBhcmssIGJlY2F1c2Ugb2YgdGhlIHdhdGVycyBvZiB0aGUgZmxvb2QuCk9mIGNsZWFuIGJlYXN0cywgYW5kIG9mIGJlYXN0cyB0aGF0IGFyZSBub3QgY2xlYW4sIGFuZCBvZiBmb3dscywgYW5kIG9mIGV2ZXJ5IHRoaW5nIHRoYXQgY3JlZXBldGggdXBvbiB0aGUgZWFydGgsClRoZXJlIHdlbnQgaW4gdHdvIGFuZCB0d28gdW50byBOb2FoIGludG8gdGhlIGFyaywgdGhlIG1hbGUgYW5kIHRoZSBmZW1hbGUsIGFzIEdvZCBoYWQgY29tbWFuZGVkIE5vYWguCkFuZCBpdCBjYW1lIHRvIHBhc3MgYWZ0ZXIgc2V2ZW4gZGF5cywgdGhhdCB0aGUgd2F0ZXJzIG9mIHRoZSBmbG9vZCB3ZXJlIHVwb24gdGhlIGVhcnRoLgpJbiB0aGUgc2l4IGh1bmRyZWR0aCB5ZWFyIG9mIE5vYWgncyBsaWZlLCBpbiB0aGUgc2Vjb25kIG1vbnRoLCB0aGUgc2V2ZW50ZWVudGggZGF5IG9mIHRoZSBtb250aCwgdGhlIHNhbWUgZGF5IHdlcmUgYWxsIHRoZSBmb3VudGFpbnMgb2YgdGhlIGdyZWF0IGRlZXAgYnJva2VuIHVwLCBhbmQgdGhlIHdpbmRvd3Mgb2YgaGVhdmVuIHdlcmUgb3BlbmVkLgpBbmQgdGhlIHJhaW4gd2FzIHVwb24gdGhlIGVhcnRoIGZvcnR5IGRheXMgYW5kIGZvcnR5IG5pZ2h0cy4KSW4gdGhlIHNlbGZzYW1lIGRheSBlbnRlcmVkIE5vYWgsIGFuZCBTaGVtLCBhbmQgSGFtLCBhbmQgSmFwaGV0aCwgdGhlIHNvbnMgb2YgTm9haCwgYW5kIE5vYWgncyB3aWZlLCBhbmQgdGhlIHRocmVlIHdpdmVzIG9mIGhpcyBzb25zIHdpdGggdGhlbSwgaW50byB0aGUgYXJrOwpUaGV5LCBhbmQgZXZlcnkgYmVhc3QgYWZ0ZXIgaGlzIGtpbmQsIGFuZCBhbGwgdGhlIGNhdHRsZSBhZnRlciB0aGVpciBraW5kLCBhbmQgZXZlcnkgY3JlZXBpbmcgdGhpbmcgdGhhdCBjcmVlcGV0aCB1cG9uIHRoZSBlYXJ0aCBhZnRlciBoaXMga2luZCwgYW5kIGV2ZXJ5IGZvd2wgYWZ0ZXIgaGlzIGtpbmQsIGV2ZXJ5IGJpcmQgb2YgZXZlcnkgc29ydC4KQW5kIHRoZXkgd2VudCBpbiB1bnRvIE5vYWggaW50byB0aGUgYXJrLCB0d28gYW5kIHR3byBvZiBhbGwgZmxlc2gsIHdoZXJlaW4gaXMgdGhlIGJyZWF0aCBvZiBsaWZlLgpBbmQgdGhleSB0aGF0IHdlbnQgaW4sIHdlbnQgaW4gbWFsZSBhbmQgZmVtYWxlIG9mIGFsbCBmbGVzaCwgYXMgR29kIGhhZCBjb21tYW5kZWQgaGltOiBhbmQgdGhlIExPUkQgc2h1dCBoaW0gaW4uCkFuZCB0aGUgZmxvb2Qgd2FzIGZvcnR5IGRheXMgdXBvbiB0aGUgZWFydGg7IGFuZCB0aGUgd2F0ZXJzIGluY3JlYXNlZCwgYW5kIGJhcmUgdXAgdGhlIGFyaywgYW5kIGl0IHdhcyBsaWZ0IHVwIGFib3ZlIHRoZSBlYXJ0aC4KQW5kIHRoZSB3YXRlcnMgcHJldmFpbGVkLCBhbmQgd2VyZSBpbmNyZWFzZWQgZ3JlYXRseSB1cG9uIHRoZSBlYXJ0aDsgYW5kIHRoZSBhcmsgd2VudCB1cG9uIHRoZSBmYWNlIG9mIHRoZSB3YXRlcnMuCkFuZCB0aGUgd2F0ZXJzIHByZXZhaWxlZCBleGNlZWRpbmdseSB1cG9uIHRoZSBlYXJ0aDsgYW5kIGFsbCB0aGUgaGlnaCBoaWxscywgdGhhdCB3ZXJlIHVuZGVyIHRoZSB3aG9sZSBoZWF2ZW4sIHdlcmUgY292ZXJlZC4KRmlmdGVlbiBjdWJpdHMgdXB3YXJkIGRpZCB0aGUgd2F0ZXJzIHByZXZhaWw7IGFuZCB0aGUgbW91bnRhaW5zIHdlcmUgY292ZXJlZC4KQW5kIGFsbCBmbGVzaCBkaWVkIHRoYXQgbW92ZWQgdXBvbiB0aGUgZWFydGgsIGJvdGggb2YgZm93bCwgYW5kIG9mIGNhdHRsZSwgYW5kIG9mIGJlYXN0LCBhbmQgb2YgZXZlcnkgY3JlZXBpbmcgdGhpbmcgdGhhdCBjcmVlcGV0aCB1cG9uIHRoZSBlYXJ0aCwgYW5kIGV2ZXJ5IG1hbjoKQWxsIGluIHdob3NlIG5vc3RyaWxzIHdhcyB0aGUgYnJlYXRoIG9mIGxpZmUsIG9mIGFsbCB0aGF0IHdhcyBpbiB0aGUgZHJ5IGxhbmQsIGRpZWQuCkFuZCBldmVyeSBsaXZpbmcgc3Vic3RhbmNlIHdhcyBkZXN0cm95ZWQgd2hpY2ggd2FzIHVwb24gdGhlIGZhY2Ugb2YgdGhlIGdyb3VuZCwgYm90aCBtYW4sIGFuZCBjYXR0bGUsIGFuZCB0aGUgY3JlZXBpbmcgdGhpbmdzLCBhbmQgdGhlIGZvd2wgb2YgdGhlIGhlYXZlbjsgYW5kIHRoZXkgd2VyZSBkZXN0cm95ZWQgZnJvbSB0aGUgZWFydGg6IGFuZCBOb2FoIG9ubHkgcmVtYWluZWQgYWxpdmUsIGFuZCB0aGV5IHRoYXQgd2VyZSB3aXRoIGhpbSBpbiB0aGUgYXJrLgpBbmQgdGhlIHdhdGVycyBwcmV2YWlsZWQgdXBvbiB0aGUgZWFydGggYW4gaHVuZHJlZCBhbmQgZmlmdHkgZGF5cy4KQW5kIEdvZCByZW1lbWJlcmVkIE5vYWgsIGFuZCBldmVyeSBsaXZpbmcgdGhpbmcsIGFuZCBhbGwgdGhlIGNhdHRsZSB0aGF0IHdhcyB3aXRoIGhpbSBpbiB0aGUgYXJrOiBhbmQgR29kIG1hZGUgYSB3aW5kIHRvIHBhc3Mgb3ZlciB0aGUgZWFydGgsIGFuZCB0aGUgd2F0ZXJzIGFzc3dhZ2VkOwpUaGUgZm91bnRhaW5zIGFsc28gb2YgdGhlIGRlZXAgYW5kIHRoZSB3aW5kb3dzIG9mIGhlYXZlbiB3ZXJlIHN0b3BwZWQsIGFuZCB0aGUgcmFpbiBmcm9tIGhlYXZlbiB3YXMgcmVzdHJhaW5lZDsKQW5kIHRoZSB3YXRlcnMgcmV0dXJuZWQgZnJvbSBvZmYgdGhlIGVhcnRoIGNvbnRpbnVhbGx5OiBhbmQgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgaHVuZHJlZCBhbmQgZmlmdHkgZGF5cyB0aGUgd2F0ZXJzIHdlcmUgYWJhdGVkLgpBbmQgdGhlIGFyayByZXN0ZWQgaW4gdGhlIHNldmVudGggbW9udGgsIG9uIHRoZSBzZXZlbnRlZW50aCBkYXkgb2YgdGhlIG1vbnRoLCB1cG9uIHRoZSBtb3VudGFpbnMgb2YgQXJhcmF0LgpBbmQgdGhlIHdhdGVycyBkZWNyZWFzZWQgY29udGludWFsbHkgdW50aWwgdGhlIHRlbnRoIG1vbnRoOiBpbiB0aGUgdGVudGggbW9udGgsIG9uIHRoZSBmaXJzdCBkYXkgb2YgdGhlIG1vbnRoLCB3ZXJlIHRoZSB0b3BzIG9mIHRoZSBtb3VudGFpbnMgc2Vlbi4KQW5kIGl0IGNhbWUgdG8gcGFzcyBhdCB0aGUgZW5kIG9mIGZvcnR5IGRheXMsIHRoYXQgTm9haCBvcGVuZWQgdGhlIHdpbmRvdyBvZiB0aGUgYXJrIHdoaWNoIGhlIGhhZCBtYWRlOgpBbmQgaGUgc2VudCBmb3J0aCBhIHJhdmVuLCB3aGljaCB3ZW50IGZvcnRoIHRvIGFuZCBmcm8sIHVudGlsIHRoZSB3YXRlcnMgd2VyZSBkcmllZCB1cCBmcm9tIG9mZiB0aGUgZWFydGguCkFsc28gaGUgc2VudCBmb3J0aCBhIGRvdmUgZnJvbSBoaW0sIHRvIHNlZSBpZiB0aGUgd2F0ZXJzIHdlcmUgYWJhdGVkIGZyb20gb2ZmIHRoZSBmYWNlIG9mIHRoZSBncm91bmQ7CkJ1dCB0aGUgZG92ZSBmb3VuZCBubyByZXN0IGZvciB0aGUgc29sZSBvZiBoZXIgZm9vdCwgYW5kIHNoZSByZXR1cm5lZCB1bnRvIGhpbSBpbnRvIHRoZSBhcmssIGZvciB0aGUgd2F0ZXJzIHdlcmUgb24gdGhlIGZhY2Ugb2YgdGhlIHdob2xlIGVhcnRoOiB0aGVuIGhlIHB1dCBmb3J0aCBoaXMgaGFuZCwgYW5kIHRvb2sgaGVyLCBhbmQgcHVsbGVkIGhlciBpbiB1bnRvIGhpbSBpbnRvIHRoZSBhcmsuCkFuZCBoZSBzdGF5ZWQgeWV0IG90aGVyIHNldmVuIGRheXM7IGFuZCBhZ2FpbiBoZSBzZW50IGZvcnRoIHRoZSBkb3ZlIG91dCBvZiB0aGUgYXJrOwpBbmQgdGhlIGRvdmUgY2FtZSBpbiB0byBoaW0gaW4gdGhlIGV2ZW5pbmc7IGFuZCwgbG8sIGluIGhlciBtb3V0aCB3YXMgYW4gb2xpdmUgbGVhZiBwbHVja3Qgb2ZmOiBzbyBOb2FoIGtuZXcgdGhhdCB0aGUgd2F0ZXJzIHdlcmUgYWJhdGVkIGZyb20gb2ZmIHRoZSBlYXJ0aC4KQW5kIGhlIHN0YXllZCB5ZXQgb3RoZXIgc2V2ZW4gZGF5czsgYW5kIHNlbnQgZm9ydGggdGhlIGRvdmU7IHdoaWNoIHJldHVybmVkIG5vdCBhZ2FpbiB1bnRvIGhpbSBhbnkgbW9yZS4KQW5kIGl0IGNhbWUgdG8gcGFzcyBpbiB0aGUgc2l4IGh1bmRyZWR0aCBhbmQgZmlyc3QgeWVhciwgaW4gdGhlIGZpcnN0IG1vbnRoLCB0aGUgZmlyc3QgZGF5IG9mIHRoZSBtb250aCwgdGhlIHdhdGVycyB3ZXJlIGRyaWVkIHVwIGZyb20gb2ZmIHRoZSBlYXJ0aDogYW5kIE5vYWggcmVtb3ZlZCB0aGUgY292ZXJpbmcgb2YgdGhlIGFyaywgYW5kIGxvb2tlZCwgYW5kLCBiZWhvbGQsIHRoZSBmYWNlIG9mIHRoZSBncm91bmQgd2FzIGRyeS4KQW5kIGluIHRoZSBzZWNvbmQgbW9udGgsIG9uIHRoZSBzZXZlbiBhbmQgdHdlbnRpZXRoIGRheSBvZiB0aGUgbW9udGgsIHdhcyB0aGUgZWFydGggZHJpZWQuCkFuZCBHb2Qgc3Bha2UgdW50byBOb2FoLCBzYXlpbmcsCkdvIGZvcnRoIG9mIHRoZSBhcmssIHRob3UsIGFuZCB0aHkgd2lmZSwgYW5kIHRoeSBzb25zLCBhbmQgdGh5IHNvbnMnIHdpdmVzIHdpdGggdGhlZS4KQnJpbmcgZm9ydGggd2l0aCB0aGVlIGV2ZXJ5IGxpdmluZyB0aGluZyB0aGF0IGlzIHdpdGggdGhlZSwgb2YgYWxsIGZsZXNoLCBib3RoIG9mIGZvd2wsIGFuZCBvZiBjYXR0bGUsIGFuZCBvZiBldmVyeSBjcmVlcGluZyB0aGluZyB0aGF0IGNyZWVwZXRoIHVwb24gdGhlIGVhcnRoOyB0aGF0IHRoZXkgbWF5IGJyZWVkIGFidW5kYW50bHkgaW4gdGhlIGVhcnRoLCBhbmQgYmUgZnJ1aXRmdWwsIGFuZCBtdWx0aXBseSB1cG9uIHRoZSBlYXJ0aC4KQW5kIE5vYWggd2VudCBmb3J0aCwgYW5kIGhpcyBzb25zLCBhbmQgaGlzIHdpZmUsIGFuZCBoaXMgc29ucycgd2l2ZXMgd2l0aCBoaW06CkV2ZXJ5IGJlYXN0LCBldmVyeSBjcmVlcGluZyB0aGluZywgYW5kIGV2ZXJ5IGZvd2wsIGFuZCB3aGF0c29ldmVyIGNyZWVwZXRoIHVwb24gdGhlIGVhcnRoLCBhZnRlciB0aGVpciBraW5kcywgd2VudCBmb3J0aCBvdXQgb2YgdGhlIGFyay4KQW5kIE5vYWggYnVpbGRlZCBhbiBhbHRhciB1bnRvIHRoZSBMT1JEOyBhbmQgdG9vayBvZiBldmVyeSBjbGVhbiBiZWFzdCwgYW5kIG9mIGV2ZXJ5IGNsZWFuIGZvd2wsIGFuZCBvZmZlcmVkIGJ1cm50IG9mZmVyaW5ncyBvbiB0aGUgYWx0YXIuCkFuZCB0aGUgTE9SRCBzbWVsbGVkIGEgc3dlZXQgc2F2b3VyOyBhbmQgdGhlIExPUkQgc2FpZCBpbiBoaXMgaGVhcnQsIEkgd2lsbCBub3QgYWdhaW4gY3Vyc2UgdGhlIGdyb3VuZCBhbnkgbW9yZSBmb3IgbWFuJ3Mgc2FrZTsgZm9yIHRoZSBpbWFnaW5hdGlvbiBvZiBtYW4ncyBoZWFydCBpcyBldmlsIGZyb20gaGlzIHlvdXRoOyBuZWl0aGVyIHdpbGwgSSBhZ2FpbiBzbWl0ZSBhbnkgbW9yZSBldmVyeSB0aGluZyBsaXZpbmcsIGFzIEkgaGF2ZSBkb25lLgpXaGlsZSB0aGUgZWFydGggcmVtYWluZXRoLCBzZWVkdGltZSBhbmQgaGFydmVzdCwgYW5kIGNvbGQgYW5kIGhlYXQsIGFuZCBzdW1tZXIgYW5kIHdpbnRlciwgYW5kIGRheSBhbmQgbmlnaHQgc2hhbGwgbm90IGNlYXNlLgpBbmQgR29kIGJsZXNzZWQgTm9haCBhbmQgaGlzIHNvbnMsIGFuZCBzYWlkIHVudG8gdGhlbSwgQmUgZnJ1aXRmdWwsIGFuZCBtdWx0aXBseSwgYW5kIHJlcGxlbmlzaCB0aGUgZWFydGguCkFuZCB0aGUgZmVhciBvZiB5b3UgYW5kIHRoZSBkcmVhZCBvZiB5b3Ugc2hhbGwgYmUgdXBvbiBldmVyeSBiZWFzdCBvZiB0aGUgZWFydGgsIGFuZCB1cG9uIGV2ZXJ5IGZvd2wgb2YgdGhlIGFpciwgdXBvbiBhbGwgdGhhdCBtb3ZldGggdXBvbiB0aGUgZWFydGgsIGFuZCB1cG9uIGFsbCB0aGUgZmlzaGVzIG9mIHRoZSBzZWE7IGludG8geW91ciBoYW5kIGFyZSB0aGV5IGRlbGl2ZXJlZC4KRXZlcnkgbW92aW5nIHRoaW5nIHRoYXQgbGl2ZXRoIHNoYWxsIGJlIG1lYXQgZm9yIHlvdTsgZXZlbiBhcyB0aGUgZ3JlZW4gaGVyYiBoYXZlIEkgZ2l2ZW4geW91IGFsbCB0aGluZ3MuCkJ1dCBmbGVzaCB3aXRoIHRoZSBsaWZlIHRoZXJlb2YsIHdoaWNoIGlzIHRoZSBibG9vZCB0aGVyZW9mLCBzaGFsbCB5ZSBub3QgZWF0LgpBbmQgc3VyZWx5IHlvdXIgYmxvb2Qgb2YgeW91ciBsaXZlcyB3aWxsIEkgcmVxdWlyZTsgYXQgdGhlIGhhbmQgb2YgZXZlcnkgYmVhc3Qgd2lsbCBJIHJlcXVpcmUgaXQsIGFuZCBhdCB0aGUgaGFuZCBvZiBtYW47IGF0IHRoZSBoYW5kIG9mIGV2ZXJ5IG1hbidzIGJyb3RoZXIgd2lsbCBJIHJlcXVpcmUgdGhlIGxpZmUgb2YgbWFuLgpXaG9zbyBzaGVkZGV0aCBtYW4ncyBibG9vZCwgYnkgbWFuIHNoYWxsIGhpcyBibG9vZCBiZSBzaGVkOiBmb3IgaW4gdGhlIGltYWdlIG9mIEdvZCBtYWRlIGhlIG1hbi4KQW5kIHlvdSwgYmUgeWUgZnJ1aXRmdWwsIGFuZCBtdWx0aXBseTsgYnJpbmcgZm9ydGggYWJ1bmRhbnRseSBpbiB0aGUgZWFydGgsIGFuZCBtdWx0aXBseSB0aGVyZWluLgpBbmQgR29kIHNwYWtlIHVudG8gTm9haCwgYW5kIHRvIGhpcyBzb25zIHdpdGggaGltLCBzYXlpbmcsCkFuZCBJLCBiZWhvbGQsIEkgZXN0YWJsaXNoIG15IGNvdmVuYW50IHdpdGggeW91LCBhbmQgd2l0aCB5b3VyIHNlZWQgYWZ0ZXIgeW91OwpBbmQgd2l0aCBldmVyeSBsaXZpbmcgY3JlYXR1cmUgdGhhdCBpcyB3aXRoIHlvdSwgb2YgdGhlIGZvd2wsIG9mIHRoZSBjYXR0bGUsIGFuZCBvZiBldmVyeSBiZWFzdCBvZiB0aGUgZWFydGggd2l0aCB5b3U7IGZyb20gYWxsIHRoYXQgZ28gb3V0IG9mIHRoZSBhcmssIHRvIGV2ZXJ5IGJlYXN0IG9mIHRoZSBlYXJ0aC4KQW5kIEkgd2lsbCBlc3RhYmxpc2ggbXkgY292ZW5hbnQgd2l0aCB5b3UsIG5laXRoZXIgc2hhbGwgYWxsIGZsZXNoIGJlIGN1dCBvZmYgYW55IG1vcmUgYnkgdGhlIHdhdGVycyBvZiBhIGZsb29kOyBuZWl0aGVyIHNoYWxsIHRoZXJlIGFueSBtb3JlIGJlIGEgZmxvb2QgdG8gZGVzdHJveSB0aGUgZWFydGguCkFuZCBHb2Qgc2FpZCwgVGhpcyBpcyB0aGUgdG9rZW4gb2YgdGhlIGNvdmVuYW50IHdoaWNoIEkgbWFrZSBiZXR3ZWVuIG1lIGFuZCB5b3UgYW5kIGV2ZXJ5IGxpdmluZyBjcmVhdHVyZSB0aGF0IGlzIHdpdGggeW91LCBmb3IgcGVycGV0dWFsIGdlbmVyYXRpb25zOgpJIGRvIHNldCBteSBib3cgaW4gdGhlIGNsb3VkLCBhbmQgaXQgc2hhbGwgYmUgZm9yIGEgdG9rZW4gb2YgYSBjb3ZlbmFudCBiZXR3ZWVuIG1lIGFuZCB0aGUgZWFydGguCkFuZCBpdCBzaGFsbCBjb21lIHRvIHBhc3MsIHdoZW4gSSBicmluZyBhIGNsb3VkIG92ZXIgdGhlIGVhcnRoLCB0aGF0IHRoZSBib3cgc2hhbGwgYmUgc2VlbiBpbiB0aGUgY2xvdWQ6CkFuZCBJIHdpbGwgcmVtZW1iZXIgbXkgY292ZW5hbnQsIHdoaWNoIGlzIGJldHdlZW4gbWUgYW5kIHlvdSBhbmQgZXZlcnkgbGl2aW5nIGNyZWF0dXJlIG9mIGFsbCBmbGVzaDsgYW5kIHRoZSB3YXRlcnMgc2hhbGwgbm8gbW9yZSBiZWNvbWUgYSBmbG9vZCB0byBkZXN0cm95IGFsbCBmbGVzaC4KQW5kIHRoZSBib3cgc2hhbGwgYmUgaW4gdGhlIGNsb3VkOyBhbmQgSSB3aWxsIGxvb2sgdXBvbiBpdCwgdGhhdCBJIG1heSByZW1lbWJlciB0aGUgZXZlcmxhc3RpbmcgY292ZW5hbnQgYmV0d2VlbiBHb2QgYW5kIGV2ZXJ5IGxpdmluZyBjcmVhdHVyZSBvZiBhbGwgZmxlc2ggdGhhdCBpcyB1cG9uIHRoZSBlYXJ0aC4KQW5kIEdvZCBzYWlkIHVudG8gTm9haCwgVGhpcyBpcyB0aGUgdG9rZW4gb2YgdGhlIGNvdmVuYW50LCB3aGljaCBJIGhhdmUgZXN0YWJsaXNoZWQgYmV0d2VlbiBtZSBhbmQgYWxsIGZsZXNoIHRoYXQgaXMgdXBvbiB0aGUgZWFydGguCkFuZCB0aGUgc29ucyBvZiBOb2FoLCB0aGF0IHdlbnQgZm9ydGggb2YgdGhlIGFyaywgd2VyZSBTaGVtLCBhbmQgSGFtLCBhbmQgSmFwaGV0aDogYW5kIEhhbSBpcyB0aGUgZmF0aGVyIG9mIENhbmFhbi4KVGhlc2UgYXJlIHRoZSB0aHJlZSBzb25zIG9mIE5vYWg6IGFuZCBvZiB0aGVtIHdhcyB0aGUgd2hvbGUgZWFydGggb3ZlcnNwcmVhZC4KQW5kIE5vYWggYmVnYW4gdG8gYmUgYW4gaHVzYmFuZG1hbiwgYW5kIGhlIHBsYW50ZWQgYSB2aW5leWFyZDoKQW5kIGhlIGRyYW5rIG9mIHRoZSB3aW5lLCBhbmQgd2FzIGRydW5rZW47IGFuZCBoZSB3YXMgdW5jb3ZlcmVkIHdpdGhpbiBoaXMgdGVudC4KQW5kIEhhbSwgdGhlIGZhdGhlciBvZiBDYW5hYW4sIHNhdyB0aGUgbmFrZWRuZXNzIG9mIGhpcyBmYXRoZXIsIGFuZCB0b2xkIGhpcyB0d28gYnJldGhyZW4gd2l0aG91dC4KQW5kIFNoZW0gYW5kIEphcGhldGggdG9vayBhIGdhcm1lbnQsIGFuZCBsYWlkIGl0IHVwb24gYm90aCB0aGVpciBzaG91bGRlcnMsIGFuZCB3ZW50IGJhY2t3YXJkLCBhbmQgY292ZXJlZCB0aGUgbmFrZWRuZXNzIG9mIHRoZWlyIGZhdGhlcjsgYW5kIHRoZWlyIGZhY2VzIHdlcmUgYmFja3dhcmQsIGFuZCB0aGV5IHNhdyBub3QgdGhlaXIgZmF0aGVyJ3MgbmFrZWRuZXNzLgpBbmQgTm9haCBhd29rZSBmcm9tIGhpcyB3aW5lLCBhbmQga25ldyB3aGF0IGhpcyB5b3VuZ2VyIHNvbiBoYWQgZG9uZSB1bnRvIGhpbS4KQW5kIGhlIHNhaWQsIEN1cnNlZCBiZSBDYW5hYW47IGEgc2VydmFudCBvZiBzZXJ2YW50cyBzaGFsbCBoZSBiZSB1bnRvIGhpcyBicmV0aHJlbi4KQW5kIGhlIHNhaWQsIEJsZXNzZWQgYmUgdGhlIExPUkQgR29kIG9mIFNoZW07IGFuZCBDYW5hYW4gc2hhbGwgYmUgaGlzIHNlcnZhbnQuCkdvZCBzaGFsbCBlbmxhcmdlIEphcGhldGgsIGFuZCBoZSBzaGFsbCBkd2VsbCBpbiB0aGUgdGVudHMgb2YgU2hlbTsgYW5kIENhbmFhbiBzaGFsbCBiZSBoaXMgc2VydmFudC4KQW5kIE5vYWggbGl2ZWQgYWZ0ZXIgdGhlIGZsb29kIHRocmVlIGh1bmRyZWQgYW5kIGZpZnR5IHllYXJzLgpBbmQgYWxsIHRoZSBkYXlzIG9mIE5vYWggd2VyZSBuaW5lIGh1bmRyZWQgYW5kIGZpZnR5IHllYXJzOiBhbmQgaGUgZGllZC4KTm93IHRoZXNlIGFyZSB0aGUgZ2VuZXJhdGlvbnMgb2YgdGhlIHNvbnMgb2YgTm9haCwgU2hlbSwgSGFtLCBhbmQgSmFwaGV0aDogYW5kIHVudG8gdGhlbSB3ZXJlIHNvbnMgYm9ybiBhZnRlciB0aGUgZmxvb2QuClRoZSBzb25zIG9mIEphcGhldGg7IEdvbWVyLCBhbmQgTWFnb2csIGFuZCBNYWRhaSwgYW5kIEphdmFuLCBhbmQgVHViYWwsIGFuZCBNZXNoZWNoLCBhbmQgVGlyYXMuCkFuZCB0aGUgc29ucyBvZiBHb21lcjsgQXNoa2VuYXosIGFuZCBSaXBoYXRoLCBhbmQgVG9nYXJtYWguCkFuZCB0aGUgc29ucyBvZiBKYXZhbjsgRWxpc2hhaCwgYW5kIFRhcnNoaXNoLCBLaXR0aW0sIGFuZCBEb2RhbmltLgpCeSB0aGVzZSB3ZXJlIHRoZSBpc2xlcyBvZiB0aGUgR2VudGlsZXMgZGl2aWRlZCBpbiB0aGVpciBsYW5kczsgZXZlcnkgb25lIGFmdGVyIGhpcyB0b25ndWUsIGFmdGVyIHRoZWlyIGZhbWlsaWVzLCBpbiB0aGVpciBuYXRpb25zLgpBbmQgdGhlIHNvbnMgb2YgSGFtOyBDdXNoLCBhbmQgTWl6cmFpbSwgYW5kIFBodXQsIGFuZCBDYW5hYW4uCkFuZCB0aGUgc29ucyBvZiBDdXNoOyBTZWJhLCBhbmQgSGF2aWxhaCwgYW5kIFNhYnRhaCwgYW5kIFJhYW1haCwgYW5kIFNhYnRlY2hhaDogYW5kIHRoZSBzb25zIG9mIFJhYW1haDsgU2hlYmEsIGFuZCBEZWRhbi4KQW5kIEN1c2ggYmVnYXQgTmltcm9kOiBoZSBiZWdhbiB0byBiZSBhIG1pZ2h0eSBvbmUgaW4gdGhlIGVhcnRoLgpIZSB3YXMgYSBtaWdodHkgaHVudGVyIGJlZm9yZSB0aGUgTE9SRDogd2hlcmVmb3JlIGl0IGlzIHNhaWQsIEV2ZW4gYXMgTmltcm9kIHRoZSBtaWdodHkgaHVudGVyIGJlZm9yZSB0aGUgTE9SRC4KQW5kIHRoZSBiZWdpbm5pbmcgb2YgaGlzIGtpbmdkb20gd2FzIEJhYmVsLCBhbmQgRXJlY2gsIGFuZCBBY2NhZCwgYW5kIENhbG5laCwgaW4gdGhlIGxhbmQgb2YgU2hpbmFyLgpPdXQgb2YgdGhhdCBsYW5kIHdlbnQgZm9ydGggQXNzaHVyLCBhbmQgYnVpbGRlZCBOaW5ldmVoLCBhbmQgdGhlIGNpdHkgUmVob2JvdGgsIGFuZCBDYWxhaCwKQW5kIFJlc2VuIGJldHdlZW4gTmluZXZlaCBhbmQgQ2FsYWg6IHRoZSBzYW1lIGlzIGEgZ3JlYXQgY2l0eS4KQW5kIE1penJhaW0gYmVnYXQgTHVkaW0sIGFuZCBBbmFtaW0sIGFuZCBMZWhhYmltLCBhbmQgTmFwaHR1aGltLApBbmQgUGF0aHJ1c2ltLCBhbmQgQ2FzbHVoaW0sIChvdXQgb2Ygd2hvbSBjYW1lIFBoaWxpc3RpbSwpIGFuZCBDYXBodG9yaW0uCkFuZCBDYW5hYW4gYmVnYXQgU2lkb24gaGlzIGZpcnN0IGJvcm4sIGFuZCBIZXRoLApBbmQgdGhlIEplYnVzaXRlLCBhbmQgdGhlIEFtb3JpdGUsIGFuZCB0aGUgR2lyZ2FzaXRlLApBbmQgdGhlIEhpdml0ZSwgYW5kIHRoZSBBcmtpdGUsIGFuZCB0aGUgU2luaXRlLApBbmQgdGhlIEFydmFkaXRlLCBhbmQgdGhlIFplbWFyaXRlLCBhbmQgdGhlIEhhbWF0aGl0ZTogYW5kIGFmdGVyd2FyZCB3ZXJlIHRoZSBmYW1pbGllcyBvZiB0aGUgQ2FuYWFuaXRlcyBzcHJlYWQgYWJyb2FkLgpBbmQgdGhlIGJvcmRlciBvZiB0aGUgQ2FuYWFuaXRlcyB3YXMgZnJvbSBTaWRvbiwgYXMgdGhvdSBjb21lc3QgdG8gR2VyYXIsIHVudG8gR2F6YTsgYXMgdGhvdSBnb2VzdCwgdW50byBTb2RvbSwgYW5kIEdvbW9ycmFoLCBhbmQgQWRtYWgsIGFuZCBaZWJvaW0sIGV2ZW4gdW50byBMYXNoYS4KVGhlc2UgYXJlIHRoZSBzb25zIG9mIEhhbSwgYWZ0ZXIgdGhlaXIgZmFtaWxpZXMsIGFmdGVyIHRoZWlyIHRvbmd1ZXMsIGluIHRoZWlyIGNvdW50cmllcywgYW5kIGluIHRoZWlyIG5hdGlvbnMuClVudG8gU2hlbSBhbHNvLCB0aGUgZmF0aGVyIG9mIGFsbCB0aGUgY2hpbGRyZW4gb2YgRWJlciwgdGhlIGJyb3RoZXIgb2YgSmFwaGV0aCB0aGUgZWxkZXIsIGV2ZW4gdG8gaGltIHdlcmUgY2hpbGRyZW4gYm9ybi4KVGhlIGNoaWxkcmVuIG9mIFNoZW07IEVsYW0sIGFuZCBBc3NodXIsIGFuZCBBcnBoYXhhZCwgYW5kIEx1ZCwgYW5kIEFyYW0uCkFuZCB0aGUgY2hpbGRyZW4gb2YgQXJhbTsgVXosIGFuZCBIdWwsIGFuZCBHZXRoZXIsIGFuZCBNYXNoLgpBbmQgQXJwaGF4YWQgYmVnYXQgU2FsYWg7IGFuZCBTYWxhaCBiZWdhdCBFYmVyLgpBbmQgdW50byBFYmVyIHdlcmUgYm9ybiB0d28gc29uczogdGhlIG5hbWUgb2Ygb25lIHdhcyBQZWxlZzsgZm9yIGluIGhpcyBkYXlzIHdhcyB0aGUgZWFydGggZGl2aWRlZDsgYW5kIGhpcyBicm90aGVyJ3MgbmFtZSB3YXMgSm9rdGFuLgpBbmQgSm9rdGFuIGJlZ2F0IEFsbW9kYWQsIGFuZCBTaGVsZXBoLCBhbmQgSGF6YXJtYXZldGgsIGFuZCBKZXJhaCwKQW5kIEhhZG9yYW0sIGFuZCBVemFsLCBhbmQgRGlrbGFoLApBbmQgT2JhbCwgYW5kIEFiaW1hZWwsIGFuZCBTaGViYSwKQW5kIE9waGlyLCBhbmQgSGF2aWxhaCwgYW5kIEpvYmFiOiBhbGwgdGhlc2Ugd2VyZSB0aGUgc29ucyBvZiBKb2t0YW4uCkFuZCB0aGVpciBkd2VsbGluZyB3YXMgZnJvbSBNZXNoYSwgYXMgdGhvdSBnb2VzdCB1bnRvIFNlcGhhciBhIG1vdW50IG9mIHRoZSBlYXN0LgpUaGVzZSBhcmUgdGhlIHNvbnMgb2YgU2hlbSwgYWZ0ZXIgdGhlaXIgZmFtaWxpZXMsIGFmdGVyIHRoZWlyIHRvbmd1ZXMsIGluIHRoZWlyIGxhbmRzLCBhZnRlciB0aGVpciBuYXRpb25zLgpUaGVzZSBhcmUgdGhlIGZhbWlsaWVzIG9mIHRoZSBzb25zIG9mIE5vYWgsIGFmdGVyIHRoZWlyIGdlbmVyYXRpb25zLCBpbiB0aGVpciBuYXRpb25zOiBhbmQgYnkgdGhlc2Ugd2VyZSB0aGUgbmF0aW9ucyBkaXZpZGVkIGluIHRoZSBlYXJ0aCBhZnRlciB0aGUgZmxvb2QuCkFuZCB0aGUgd2hvbGUgZWFydGggd2FzIG9mIG9uZSBsYW5ndWFnZSwgYW5kIG9mIG9uZSBzcGVlY2guCkFuZCBpdCBjYW1lIHRvIHBhc3MsIGFzIHRoZXkgam91cm5leWVkIGZyb20gdGhlIGVhc3QsIHRoYXQgdGhleSBmb3VuZCBhIHBsYWluIGluIHRoZSBsYW5kIG9mIFNoaW5hcjsgYW5kIHRoZXkgZHdlbHQgdGhlcmUuCkFuZCB0aGV5IHNhaWQgb25lIHRvIGFub3RoZXIsIEdvIHRvLCBsZXQgdXMgbWFrZSBicmljaywgYW5kIGJ1cm4gdGhlbSB0aG9yb3VnaGx5LiBBbmQgdGhleSBoYWQgYnJpY2sgZm9yIHN0b25lLCBhbmQgc2xpbWUgaGFkIHRoZXkgZm9yIG1vcnRlci4KQW5kIHRoZXkgc2FpZCwgR28gdG8sIGxldCB1cyBidWlsZCB1cyBhIGNpdHkgYW5kIGEgdG93ZXIsIHdob3NlIHRvcCBtYXkgcmVhY2ggdW50byBoZWF2ZW47IGFuZCBsZXQgdXMgbWFrZSB1cyBhIG5hbWUsIGxlc3Qgd2UgYmUgc2NhdHRlcmVkIGFicm9hZCB1cG9uIHRoZSBmYWNlIG9mIHRoZSB3aG9sZSBlYXJ0aC4KQW5kIHRoZSBMT1JEIGNhbWUgZG93biB0byBzZWUgdGhlIGNpdHkgYW5kIHRoZSB0b3dlciwgd2hpY2ggdGhlIGNoaWxkcmVuIG9mIG1lbiBidWlsZGVkLgpBbmQgdGhlIExPUkQgc2FpZCwgQmVob2xkLCB0aGUgcGVvcGxlIGlzIG9uZSwgYW5kIHRoZXkgaGF2ZSBhbGwgb25lIGxhbmd1YWdlOyBhbmQgdGhpcyB0aGV5IGJlZ2luIHRvIGRvOiBhbmQgbm93IG5vdGhpbmcgd2lsbCBiZSByZXN0cmFpbmVkIGZyb20gdGhlbSwgd2hpY2ggdGhleSBoYXZlIGltYWdpbmVkIHRvIGRvLgpHbyB0bywgbGV0IHVzIGdvIGRvd24sIGFuZCB0aGVyZSBjb25mb3VuZCB0aGVpciBsYW5ndWFnZSwgdGhhdCB0aGV5IG1heSBub3QgdW5kZXJzdGFuZCBvbmUgYW5vdGhlcidzIHNwZWVjaC4KU28gdGhlIExPUkQgc2NhdHRlcmVkIHRoZW0gYWJyb2FkIGZyb20gdGhlbmNlIHVwb24gdGhlIGZhY2Ugb2YgYWxsIHRoZSBlYXJ0aDogYW5kIHRoZXkgbGVmdCBvZmYgdG8gYnVpbGQgdGhlIGNpdHkuClRoZXJlZm9yZSBpcyB0aGUgbmFtZSBvZiBpdCBjYWxsZWQgQmFiZWw7IGJlY2F1c2UgdGhlIExPUkQgZGlkIHRoZXJlIGNvbmZvdW5kIHRoZSBsYW5ndWFnZSBvZiBhbGwgdGhlIGVhcnRoOiBhbmQgZnJvbSB0aGVuY2UgZGlkIHRoZSBMT1JEIHNjYXR0ZXIgdGhlbSBhYnJvYWQgdXBvbiB0aGUgZmFjZSBvZiBhbGwgdGhlIGVhcnRoLgpUaGVzZSBhcmUgdGhlIGdlbmVyYXRpb25zIG9mIFNoZW06IFNoZW0gd2FzIGFuIGh1bmRyZWQgeWVhcnMgb2xkLCBhbmQgYmVnYXQgQXJwaGF4YWQgdHdvIHllYXJzIGFmdGVyIHRoZSBmbG9vZDoKQW5kIFNoZW0gbGl2ZWQgYWZ0ZXIgaGUgYmVnYXQgQXJwaGF4YWQgZml2ZSBodW5kcmVkIHllYXJzLCBhbmQgYmVnYXQgc29ucyBhbmQgZGF1Z2h0ZXJzLgpBbmQgQXJwaGF4YWQgbGl2ZWQgZml2ZSBhbmQgdGhpcnR5IHllYXJzLCBhbmQgYmVnYXQgU2FsYWg6CkFuZCBBcnBoYXhhZCBsaXZlZCBhZnRlciBoZSBiZWdhdCBTYWxhaCBmb3VyIGh1bmRyZWQgYW5kIHRocmVlIHllYXJzLCBhbmQgYmVnYXQgc29ucyBhbmQgZGF1Z2h0ZXJzLgpBbmQgU2FsYWggbGl2ZWQgdGhpcnR5IHllYXJzLCBhbmQgYmVnYXQgRWJlcjoKQW5kIFNhbGFoIGxpdmVkIGFmdGVyIGhlIGJlZ2F0IEViZXIgZm91ciBodW5kcmVkIGFuZCB0aHJlZSB5ZWFycywgYW5kIGJlZ2F0IHNvbnMgYW5kIGRhdWdodGVycy4KQW5kIEViZXIgbGl2ZWQgZm91ciBhbmQgdGhpcnR5IHllYXJzLCBhbmQgYmVnYXQgUGVsZWc6CkFuZCBFYmVyIGxpdmVkIGFmdGVyIGhlIGJlZ2F0IFBlbGVnIGZvdXIgaHVuZHJlZCBhbmQgdGhpcnR5IHllYXJzLCBhbmQgYmVnYXQgc29ucyBhbmQgZGF1Z2h0ZXJzLgpBbmQgUGVsZWcgbGl2ZWQgdGhpcnR5IHllYXJzLCBhbmQgYmVnYXQgUmV1OgpBbmQgUGVsZWcgbGl2ZWQgYWZ0ZXIgaGUgYmVnYXQgUmV1IHR3byBodW5kcmVkIGFuZCBuaW5lIHllYXJzLCBhbmQgYmVnYXQgc29ucyBhbmQgZGF1Z2h0ZXJzLgpBbmQgUmV1IGxpdmVkIHR3byBhbmQgdGhpcnR5IHllYXJzLCBhbmQgYmVnYXQgU2VydWc6CkFuZCBSZXUgbGl2ZWQgYWZ0ZXIgaGUgYmVnYXQgU2VydWcgdHdvIGh1bmRyZWQgYW5kIHNldmVuIHllYXJzLCBhbmQgYmVnYXQgc29ucyBhbmQgZGF1Z2h0ZXJzLgpBbmQgU2VydWcgbGl2ZWQgdGhpcnR5IHllYXJzLCBhbmQgYmVnYXQgTmFob3I6CkFuZCBTZXJ1ZyBsaXZlZCBhZnRlciBoZSBiZWdhdCBOYWhvciB0d28gaHVuZHJlZCB5ZWFycywgYW5kIGJlZ2F0IHNvbnMgYW5kIGRhdWdodGVycy4KQW5kIE5haG9yIGxpdmVkIG5pbmUgYW5kIHR3ZW50eSB5ZWFycywgYW5kIGJlZ2F0IFRlcmFoOgpBbmQgTmFob3IgbGl2ZWQgYWZ0ZXIgaGUgYmVnYXQgVGVyYWggYW4gaHVuZHJlZCBhbmQgbmluZXRlZW4geWVhcnMsIGFuZCBiZWdhdCBzb25zIGFuZCBkYXVnaHRlcnMuCkFuZCBUZXJhaCBsaXZlZCBzZXZlbnR5IHllYXJzLCBhbmQgYmVnYXQgQWJyYW0sIE5haG9yLCBhbmQgSGFyYW4uCk5vdyB0aGVzZSBhcmUgdGhlIGdlbmVyYXRpb25zIG9mIFRlcmFoOiBUZXJhaCBiZWdhdCBBYnJhbSwgTmFob3IsIGFuZCBIYXJhbjsgYW5kIEhhcmFuIGJlZ2F0IExvdC4KQW5kIEhhcmFuIGRpZWQgYmVmb3JlIGhpcyBmYXRoZXIgVGVyYWggaW4gdGhlIGxhbmQgb2YgaGlzIG5hdGl2aXR5LCBpbiBVciBvZiB0aGUgQ2hhbGRlZXMuCkFuZCBBYnJhbSBhbmQgTmFob3IgdG9vayB0aGVtIHdpdmVzOiB0aGUgbmFtZSBvZiBBYnJhbSdzIHdpZmUgd2FzIFNhcmFpOyBhbmQgdGhlIG5hbWUgb2YgTmFob3IncyB3aWZlLCBNaWxjYWgsIHRoZSBkYXVnaHRlciBvZiBIYXJhbiwgdGhlIGZhdGhlciBvZiBNaWxjYWgsIGFuZCB0aGUgZmF0aGVyIG9mIElzY2FoLgpCdXQgU2FyYWkgd2FzIGJhcnJlbjsgc2hlIGhhZCBubyBjaGlsZC4KQW5kIFRlcmFoIHRvb2sgQWJyYW0gaGlzIHNvbiwgYW5kIExvdCB0aGUgc29uIG9mIEhhcmFuIGhpcyBzb24ncyBzb24sIGFuZCBTYXJhaSBoaXMgZGF1Z2h0ZXIgaW4gbGF3LCBoaXMgc29uIEFicmFtJ3Mgd2lmZTsgYW5kIHRoZXkgd2VudCBmb3J0aCB3aXRoIHRoZW0gZnJvbSBVciBvZiB0aGUgQ2hhbGRlZXMsIHRvIGdvIGludG8gdGhlIGxhbmQgb2YgQ2FuYWFuOyBhbmQgdGhleSBjYW1lIHVudG8gSGFyYW4sIGFuZCBkd2VsdCB0aGVyZS4KQW5kIHRoZSBkYXlzIG9mIFRlcmFoIHdlcmUgdHdvIGh1bmRyZWQgYW5kIGZpdmUgeWVhcnM6IGFuZCBUZXJhaCBkaWVkIGluIEhhcmFuLgpOb3cgdGhlIExPUkQgaGFkIHNhaWQgdW50byBBYnJhbSwgR2V0IHRoZWUgb3V0IG9mIHRoeSBjb3VudHJ5LCBhbmQgZnJvbSB0aHkga2luZHJlZCwgYW5kIGZyb20gdGh5IGZhdGhlcidzIGhvdXNlLCB1bnRvIGEgbGFuZCB0aGF0IEkgd2lsbCBzaGV3IHRoZWU6CkFuZCBJIHdpbGwgbWFrZSBvZiB0aGVlIGEgZ3JlYXQgbmF0aW9uLCBhbmQgSSB3aWxsIGJsZXNzIHRoZWUsIGFuZCBtYWtlIHRoeSBuYW1lIGdyZWF0OyBhbmQgdGhvdSBzaGFsdCBiZSBhIGJsZXNzaW5nOgpBbmQgSSB3aWxsIGJsZXNzIHRoZW0gdGhhdCBibGVzcyB0aGVlLCBhbmQgY3Vyc2UgaGltIHRoYXQgY3Vyc2V0aCB0aGVlOiBhbmQgaW4gdGhlZSBzaGFsbCBhbGwgZmFtaWxpZXMgb2YgdGhlIGVhcnRoIGJlIGJsZXNzZWQuClNvIEFicmFtIGRlcGFydGVkLCBhcyB0aGUgTE9SRCBoYWQgc3Bva2VuIHVudG8gaGltOyBhbmQgTG90IHdlbnQgd2l0aCBoaW06IGFuZCBBYnJhbSB3YXMgc2V2ZW50eSBhbmQgZml2ZSB5ZWFycyBvbGQgd2hlbiBoZSBkZXBhcnRlZCBvdXQgb2YgSGFyYW4uCkFuZCBBYnJhbSB0b29rIFNhcmFpIGhpcyB3aWZlLCBhbmQgTG90IGhpcyBicm90aGVyJ3Mgc29uLCBhbmQgYWxsIHRoZWlyIHN1YnN0YW5jZSB0aGF0IHRoZXkgaGFkIGdhdGhlcmVkLCBhbmQgdGhlIHNvdWxzIHRoYXQgdGhleSBoYWQgZ290dGVuIGluIEhhcmFuOyBhbmQgdGhleSB3ZW50IGZvcnRoIHRvIGdvIGludG8gdGhlIGxhbmQgb2YgQ2FuYWFuOyBhbmQgaW50byB0aGUgbGFuZCBvZiBDYW5hYW4gdGhleSBjYW1lLgpBbmQgQWJyYW0gcGFzc2VkIHRocm91Z2ggdGhlIGxhbmQgdW50byB0aGUgcGxhY2Ugb2YgU2ljaGVtLCB1bnRvIHRoZSBwbGFpbiBvZiBNb3JlaC4gQW5kIHRoZSBDYW5hYW5pdGUgd2FzIHRoZW4gaW4gdGhlIGxhbmQuCkFuZCB0aGUgTE9SRCBhcHBlYXJlZCB1bnRvIEFicmFtLCBhbmQgc2FpZCwgVW50byB0aHkgc2VlZCB3aWxsIEkgZ2l2ZSB0aGlzIGxhbmQ6IGFuZCB0aGVyZSBidWlsZGVkIGhlIGFuIGFsdGFyIHVudG8gdGhlIExPUkQsIHdobyBhcHBlYXJlZCB1bnRvIGhpbS4KQW5kIGhlIHJlbW92ZWQgZnJvbSB0aGVuY2UgdW50byBhIG1vdW50YWluIG9uIHRoZSBlYXN0IG9mIEJldGhlbCwgYW5kIHBpdGNoZWQgaGlzIHRlbnQsIGhhdmluZyBCZXRoZWwgb24gdGhlIHdlc3QsIGFuZCBIYWkgb24gdGhlIGVhc3Q6IGFuZCB0aGVyZSBoZSBidWlsZGVkIGFuIGFsdGFyIHVudG8gdGhlIExPUkQsIGFuZCBjYWxsZWQgdXBvbiB0aGUgbmFtZSBvZiB0aGUgTE9SRC4KQW5kIEFicmFtIGpvdXJuZXllZCwgZ29pbmcgb24gc3RpbGwgdG93YXJkIHRoZSBzb3V0aC4KQW5kIHRoZXJlIHdhcyBhIGZhbWluZSBpbiB0aGUgbGFuZDogYW5kIEFicmFtIHdlbnQgZG93biBpbnRvIEVneXB0IHRvIHNvam91cm4gdGhlcmU7IGZvciB0aGUgZmFtaW5lIHdhcyBncmlldm91cyBpbiB0aGUgbGFuZC4KQW5kIGl0IGNhbWUgdG8gcGFzcywgd2hlbiBoZSB3YXMgY29tZSBuZWFyIHRvIGVudGVyIGludG8gRWd5cHQsIHRoYXQgaGUgc2FpZCB1bnRvIFNhcmFpIGhpcyB3aWZlLCBCZWhvbGQgbm93LCBJIGtub3cgdGhhdCB0aG91IGFydCBhIGZhaXIgd29tYW4gdG8gbG9vayB1cG9uOgpUaGVyZWZvcmUgaXQgc2hhbGwgY29tZSB0byBwYXNzLCB3aGVuIHRoZSBFZ3lwdGlhbnMgc2hhbGwgc2VlIHRoZWUsIHRoYXQgdGhleSBzaGFsbCBzYXksIFRoaXMgaXMgaGlzIHdpZmU6IGFuZCB0aGV5IHdpbGwga2lsbCBtZSwgYnV0IHRoZXkgd2lsbCBzYXZlIHRoZWUgYWxpdmUuClNheSwgSSBwcmF5IHRoZWUsIHRob3UgYXJ0IG15IHNpc3RlcjogdGhhdCBpdCBtYXkgYmUgd2VsbCB3aXRoIG1lIGZvciB0aHkgc2FrZTsgYW5kIG15IHNvdWwgc2hhbGwgbGl2ZSBiZWNhdXNlIG9mIHRoZWUuCkFuZCBpdCBjYW1lIHRvIHBhc3MsIHRoYXQsIHdoZW4gQWJyYW0gd2FzIGNvbWUgaW50byBFZ3lwdCwgdGhlIEVneXB0aWFucyBiZWhlbGQgdGhlIHdvbWFuIHRoYXQgc2hlIHdhcyB2ZXJ5IGZhaXIuClRoZSBwcmluY2VzIGFsc28gb2YgUGhhcmFvaCBzYXcgaGVyLCBhbmQgY29tbWVuZGVkIGhlciBiZWZvcmUgUGhhcmFvaDogYW5kIHRoZSB3b21hbiB3YXMgdGFrZW4gaW50byBQaGFyYW9oJ3MgaG91c2UuCkFuZCBoZSBlbnRyZWF0ZWQgQWJyYW0gd2VsbCBmb3IgaGVyIHNha2U6IGFuZCBoZSBoYWQgc2hlZXAsIGFuZCBveGVuLCBhbmQgaGUgYXNzZXMsIGFuZCBtZW5zZXJ2YW50cywgYW5kIG1haWRzZXJ2YW50cywgYW5kIHNoZSBhc3NlcywgYW5kIGNhbWVscy4KQW5kIHRoZSBMT1JEIHBsYWd1ZWQgUGhhcmFvaCBhbmQgaGlzIGhvdXNlIHdpdGggZ3JlYXQgcGxhZ3VlcyBiZWNhdXNlIG9mIFNhcmFpIEFicmFtJ3Mgd2lmZS4KQW5kIFBoYXJhb2ggY2FsbGVkIEFicmFtIGFuZCBzYWlkLCBXaGF0IGlzIHRoaXMgdGhhdCB0aG91IGhhc3QgZG9uZSB1bnRvIG1lPyB3aHkgZGlkc3QgdGhvdSBub3QgdGVsbCBtZSB0aGF0IHNoZSB3YXMgdGh5IHdpZmU/CldoeSBzYWlkc3QgdGhvdSwgU2hlIGlzIG15IHNpc3Rlcj8gc28gSSBtaWdodCBoYXZlIHRha2VuIGhlciB0byBtZSB0byB3aWZlOiBub3cgdGhlcmVmb3JlIGJlaG9sZCB0aHkgd2lmZSwgdGFrZSBoZXIsIGFuZCBnbyB0aHkgd2F5LgpBbmQgUGhhcmFvaCBjb21tYW5kZWQgaGlzIG1lbiBjb25jZXJuaW5nIGhpbTogYW5kIHRoZXkgc2VudCBoaW0gYXdheSwgYW5kIGhpcyB3aWZlLCBhbmQgYWxsIHRoYXQgaGUgaGFkLgpBbmQgQWJyYW0gd2VudCB1cCBvdXQgb2YgRWd5cHQsIGhlLCBhbmQgaGlzIHdpZmUsIGFuZCBhbGwgdGhhdCBoZSBoYWQsIGFuZCBMb3Qgd2l0aCBoaW0sIGludG8gdGhlIHNvdXRoLgpBbmQgQWJyYW0gd2FzIHZlcnkgcmljaCBpbiBjYXR0bGUsIGluIHNpbHZlciwgYW5kIGluIGdvbGQuCkFuZCBoZSB3ZW50IG9uIGhpcyBqb3VybmV5cyBmcm9tIHRoZSBzb3V0aCBldmVuIHRvIEJldGhlbCwgdW50byB0aGUgcGxhY2Ugd2hlcmUgaGlzIHRlbnQgaGFkIGJlZW4gYXQgdGhlIGJlZ2lubmluZywgYmV0d2VlbiBCZXRoZWwgYW5kIEhhaTsKVW50byB0aGUgcGxhY2Ugb2YgdGhlIGFsdGFyLCB3aGljaCBoZSBoYWQgbWFrZSB0aGVyZSBhdCB0aGUgZmlyc3Q6IGFuZCB0aGVyZSBBYnJhbSBjYWxsZWQgb24gdGhlIG5hbWUgb2YgdGhlIExPUkQuCkFuZCBMb3QgYWxzbywgd2hpY2ggd2VudCB3aXRoIEFicmFtLCBoYWQgZmxvY2tzLCBhbmQgaGVyZHMsIGFuZCB0ZW50cy4KQW5kIHRoZSBsYW5kIHdhcyBub3QgYWJsZSB0byBiZWFyIHRoZW0sIHRoYXQgdGhleSBtaWdodCBkd2VsbCB0b2dldGhlcjogZm9yIHRoZWlyIHN1YnN0YW5jZSB3YXMgZ3JlYXQsIHNvIHRoYXQgdGhleSBjb3VsZCBub3QgZHdlbGwgdG9nZXRoZXIuCkFuZCB0aGVyZSB3YXMgYSBzdHJpZmUgYmV0d2VlbiB0aGUgaGVyZG1lbiBvZiBBYnJhbSdzIGNhdHRsZSBhbmQgdGhlIGhlcmRtZW4gb2YgTG90J3MgY2F0dGxlOiBhbmQgdGhlIENhbmFhbml0ZSBhbmQgdGhlIFBlcml6eml0ZSBkd2VsbGVkIHRoZW4gaW4gdGhlIGxhbmQuCkFuZCBBYnJhbSBzYWlkIHVudG8gTG90LCBMZXQgdGhlcmUgYmUgbm8gc3RyaWZlLCBJIHByYXkgdGhlZSwgYmV0d2VlbiBtZSBhbmQgdGhlZSwgYW5kIGJldHdlZW4gbXkgaGVyZG1lbiBhbmQgdGh5IGhlcmRtZW47IGZvciB3ZSBiZSBicmV0aHJlbi4KSXMgbm90IHRoZSB3aG9sZSBsYW5kIGJlZm9yZSB0aGVlPyBzZXBhcmF0ZSB0aHlzZWxmLCBJIHByYXkgdGhlZSwgZnJvbSBtZTogaWYgdGhvdSB3aWx0IHRha2UgdGhlIGxlZnQgaGFuZCwgdGhlbiBJIHdpbGwgZ28gdG8gdGhlIHJpZ2h0OyBvciBpZiB0aG91IGRlcGFydCB0byB0aGUgcmlnaHQgaGFuZCwgdGhlbiBJIHdpbGwgZ28gdG8gdGhlIGxlZnQuCkFuZCBMb3QgbGlmdGVkIHVwIGhpcyBleWVzLCBhbmQgYmVoZWxkIGFsbCB0aGUgcGxhaW4gb2YgSm9yZGFuLCB0aGF0IGl0IHdhcyB3ZWxsIHdhdGVyZWQgZXZlcnkgd2hlcmUsIGJlZm9yZSB0aGUgTE9SRCBkZXN0cm95ZWQgU29kb20gYW5kIEdvbW9ycmFoLCBldmVuIGFzIHRoZSBnYXJkZW4gb2YgdGhlIExPUkQsIGxpa2UgdGhlIGxhbmQgb2YgRWd5cHQsIGFzIHRob3UgY29tZXN0IHVudG8gWm9hci4KVGhlbiBMb3QgY2hvc2UgaGltIGFsbCB0aGUgcGxhaW4gb2YgSm9yZGFuOyBhbmQgTG90IGpvdXJuZXllZCBlYXN0OiBhbmQgdGhleSBzZXBhcmF0ZWQgdGhlbXNlbHZlcyB0aGUgb25lIGZyb20gdGhlIG90aGVyLgpBYnJhbSBkd2VsbGVkIGluIHRoZSBsYW5kIG9mIENhbmFhbiwgYW5kIExvdCBkd2VsbGVkIGluIHRoZSBjaXRpZXMgb2YgdGhlIHBsYWluLCBhbmQgcGl0Y2hlZCBoaXMgdGVudCB0b3dhcmQgU29kb20uCkJ1dCB0aGUgbWVuIG9mIFNvZG9tIHdlcmUgd2lja2VkIGFuZCBzaW5uZXJzIGJlZm9yZSB0aGUgTE9SRCBleGNlZWRpbmdseS4KQW5kIHRoZSBMT1JEIHNhaWQgdW50byBBYnJhbSwgYWZ0ZXIgdGhhdCBMb3Qgd2FzIHNlcGFyYXRlZCBmcm9tIGhpbSwgTGlmdCB1cCBub3cgdGhpbmUgZXllcywgYW5kIGxvb2sgZnJvbSB0aGUgcGxhY2Ugd2hlcmUgdGhvdSBhcnQgbm9ydGh3YXJkLCBhbmQgc291dGh3YXJkLCBhbmQgZWFzdHdhcmQsIGFuZCB3ZXN0d2FyZDoKRm9yIGFsbCB0aGUgbGFuZCB3aGljaCB0aG91IHNlZXN0LCB0byB0aGVlIHdpbGwgSSBnaXZlIGl0LCBhbmQgdG8gdGh5IHNlZWQgZm9yIGV2ZXIuCkFuZCBJIHdpbGwgbWFrZSB0aHkgc2VlZCBhcyB0aGUgZHVzdCBvZiB0aGUgZWFydGg6IHNvIHRoYXQgaWYgYSBtYW4gY2FuIG51bWJlciB0aGUgZHVzdCBvZiB0aGUgZWFydGgsIHRoZW4gc2hhbGwgdGh5IHNlZWQgYWxzbyBiZSBudW1iZXJlZC4KQXJpc2UsIHdhbGsgdGhyb3VnaCB0aGUgbGFuZCBpbiB0aGUgbGVuZ3RoIG9mIGl0IGFuZCBpbiB0aGUgYnJlYWR0aCBvZiBpdDsgZm9yIEkgd2lsbCBnaXZlIGl0IHVudG8gdGhlZS4KVGhlbiBBYnJhbSByZW1vdmVkIGhpcyB0ZW50LCBhbmQgY2FtZSBhbmQgZHdlbHQgaW4gdGhlIHBsYWluIG9mIE1hbXJlLCB3aGljaCBpcyBpbiBIZWJyb24sIGFuZCBidWlsdCB0aGVyZSBhbiBhbHRhciB1bnRvIHRoZSBMT1JELgpBbmQgaXQgY2FtZSB0byBwYXNzIGluIHRoZSBkYXlzIG9mIEFtcmFwaGVsIGtpbmcgb2YgU2hpbmFyLCBBcmlvY2gga2luZyBvZiBFbGxhc2FyLCBDaGVkb3JsYW9tZXIga2luZyBvZiBFbGFtLCBhbmQgVGlkYWwga2luZyBvZiBuYXRpb25zOwpUaGF0IHRoZXNlIG1hZGUgd2FyIHdpdGggQmVyYSBraW5nIG9mIFNvZG9tLCBhbmQgd2l0aCBCaXJzaGEga2luZyBvZiBHb21vcnJhaCwgU2hpbmFiIGtpbmcgb2YgQWRtYWgsIGFuZCBTaGVtZWJlciBraW5nIG9mIFplYm9paW0sIGFuZCB0aGUga2luZyBvZiBCZWxhLCB3aGljaCBpcyBab2FyLgpBbGwgdGhlc2Ugd2VyZSBqb2luZWQgdG9nZXRoZXIgaW4gdGhlIHZhbGUgb2YgU2lkZGltLCB3aGljaCBpcyB0aGUgc2FsdCBzZWEuClR3ZWx2ZSB5ZWFycyB0aGV5IHNlcnZlZCBDaGVkb3JsYW9tZXIsIGFuZCBpbiB0aGUgdGhpcnRlZW50aCB5ZWFyIHRoZXkgcmViZWxsZWQuCkFuZCBpbiB0aGUgZm91cnRlZW50aCB5ZWFyIGNhbWUgQ2hlZG9ybGFvbWVyLCBhbmQgdGhlIGtpbmdzIHRoYXQgd2VyZSB3aXRoIGhpbSwgYW5kIHNtb3RlIHRoZSBSZXBoYWltcyBpbiBBc2h0ZXJvdGggS2FybmFpbSwgYW5kIHRoZSBadXppbXMgaW4gSGFtLCBhbmQgdGhlIEVtaW5zIGluIFNoYXZlaCBLaXJpYXRoYWltLApBbmQgdGhlIEhvcml0ZXMgaW4gdGhlaXIgbW91bnQgU2VpciwgdW50byBFbHBhcmFuLCB3aGljaCBpcyBieSB0aGUgd2lsZGVybmVzcy4KQW5kIHRoZXkgcmV0dXJuZWQsIGFuZCBjYW1lIHRvIEVubWlzaHBhdCwgd2hpY2ggaXMgS2FkZXNoLCBhbmQgc21vdGUgYWxsIHRoZSBjb3VudHJ5IG9mIHRoZSBBbWFsZWtpdGVzLCBhbmQgYWxzbyB0aGUgQW1vcml0ZXMsIHRoYXQgZHdlbHQgaW4gSGF6ZXpvbnRhbWFyLgpBbmQgdGhlcmUgd2VudCBvdXQgdGhlIGtpbmcgb2YgU29kb20sIGFuZCB0aGUga2luZyBvZiBHb21vcnJhaCwgYW5kIHRoZSBraW5nIG9mIEFkbWFoLCBhbmQgdGhlIGtpbmcgb2YgWmVib2lpbSwgYW5kIHRoZSBraW5nIG9mIEJlbGEgKHRoZSBzYW1lIGlzIFpvYXI7KSBhbmQgdGhleSBqb2luZWQgYmF0dGxlIHdpdGggdGhlbSBpbiB0aGUgdmFsZSBvZiBTaWRkaW07CldpdGggQ2hlZG9ybGFvbWVyIHRoZSBraW5nIG9mIEVsYW0sIGFuZCB3aXRoIFRpZGFsIGtpbmcgb2YgbmF0aW9ucywgYW5kIEFtcmFwaGVsIGtpbmcgb2YgU2hpbmFyLCBhbmQgQXJpb2NoIGtpbmcgb2YgRWxsYXNhcjsgZm91ciBraW5ncyB3aXRoIGZpdmUuCkFuZCB0aGUgdmFsZSBvZiBTaWRkaW0gd2FzIGZ1bGwgb2Ygc2xpbWVwaXRzOyBhbmQgdGhlIGtpbmdzIG9mIFNvZG9tIGFuZCBHb21vcnJhaCBmbGVkLCBhbmQgZmVsbCB0aGVyZTsgYW5kIHRoZXkgdGhhdCByZW1haW5lZCBmbGVkIHRvIHRoZSBtb3VudGFpbi4KQW5kIHRoZXkgdG9vayBhbGwgdGhlIGdvb2RzIG9mIFNvZG9tIGFuZCBHb21vcnJhaCwgYW5kIGFsbCB0aGVpciB2aWN0dWFscywgYW5kIHdlbnQgdGhlaXIgd2F5LgpBbmQgdGhleSB0b29rIExvdCwgQWJyYW0ncyBicm90aGVyJ3Mgc29uLCB3aG8gZHdlbHQgaW4gU29kb20sIGFuZCBoaXMgZ29vZHMsIGFuZCBkZXBhcnRlZC4KQW5kIHRoZXJlIGNhbWUgb25lIHRoYXQgaGFkIGVzY2FwZWQsIGFuZCB0b2xkIEFicmFtIHRoZSBIZWJyZXc7IGZvciBoZSBkd2VsdCBpbiB0aGUgcGxhaW4gb2YgTWFtcmUgdGhlIEFtb3JpdGUsIGJyb3RoZXIgb2YgRXNoY29sLCBhbmQgYnJvdGhlciBvZiBBbmVyOiBhbmQgdGhlc2Ugd2VyZSBjb25mZWRlcmF0ZSB3aXRoIEFicmFtLgpBbmQgd2hlbiBBYnJhbSBoZWFyZCB0aGF0IGhpcyBicm90aGVyIHdhcyB0YWtlbiBjYXB0aXZlLCBoZSBhcm1lZCBoaXMgdHJhaW5lZCBzZXJ2YW50cywgYm9ybiBpbiBoaXMgb3duIGhvdXNlLCB0aHJlZSBodW5kcmVkIGFuZCBlaWdodGVlbiwgYW5kIHB1cnN1ZWQgdGhlbSB1bnRvIERhbi4KQW5kIGhlIGRpdmlkZWQgaGltc2VsZiBhZ2FpbnN0IHRoZW0sIGhlIGFuZCBoaXMgc2VydmFudHMsIGJ5IG5pZ2h0LCBhbmQgc21vdGUgdGhlbSwgYW5kIHB1cnN1ZWQgdGhlbSB1bnRvIEhvYmFoLCB3aGljaCBpcyBvbiB0aGUgbGVmdCBoYW5kIG9mIERhbWFzY3VzLgpBbmQgaGUgYnJvdWdodCBiYWNrIGFsbCB0aGUgZ29vZHMsIGFuZCBhbHNvIGJyb3VnaHQgYWdhaW4gaGlzIGJyb3RoZXIgTG90LCBhbmQgaGlzIGdvb2RzLCBhbmQgdGhlIHdvbWVuIGFsc28sIGFuZCB0aGUgcGVvcGxlLgpBbmQgdGhlIGtpbmcgb2YgU29kb20gd2VudCBvdXQgdG8gbWVldCBoaW0gYWZ0ZXIgaGlzIHJldHVybiBmcm9tIHRoZSBzbGF1Z2h0ZXIgb2YgQ2hlZG9ybGFvbWVyLCBhbmQgb2YgdGhlIGtpbmdzIHRoYXQgd2VyZSB3aXRoIGhpbSwgYXQgdGhlIHZhbGxleSBvZiBTaGF2ZWgsIHdoaWNoIGlzIHRoZSBraW5nJ3MgZGFsZS4KQW5kIE1lbGNoaXplZGVrIGtpbmcgb2YgU2FsZW0gYnJvdWdodCBmb3J0aCBicmVhZCBhbmQgd2luZTogYW5kIGhlIHdhcyB0aGUgcHJpZXN0IG9mIHRoZSBtb3N0IGhpZ2ggR29kLgpBbmQgaGUgYmxlc3NlZCBoaW0sIGFuZCBzYWlkLCBCbGVzc2VkIGJlIEFicmFtIG9mIHRoZSBtb3N0IGhpZ2ggR29kLCBwb3NzZXNzb3Igb2YgaGVhdmVuIGFuZCBlYXJ0aDoKQW5kIGJsZXNzZWQgYmUgdGhlIG1vc3QgaGlnaCBHb2QsIHdoaWNoIGhhdGggZGVsaXZlcmVkIHRoaW5lIGVuZW1pZXMgaW50byB0aHkgaGFuZC4gQW5kIGhlIGdhdmUgaGltIHRpdGhlcyBvZiBhbGwuCkFuZCB0aGUga2luZyBvZiBTb2RvbSBzYWlkIHVudG8gQWJyYW0sIEdpdmUgbWUgdGhlIHBlcnNvbnMsIGFuZCB0YWtlIHRoZSBnb29kcyB0byB0aHlzZWxmLgpBbmQgQWJyYW0gc2FpZCB0byB0aGUga2luZyBvZiBTb2RvbSwgSSBoYXZlIGxpZnQgdXAgbWluZSBoYW5kIHVudG8gdGhlIExPUkQsIHRoZSBtb3N0IGhpZ2ggR29kLCB0aGUgcG9zc2Vzc29yIG9mIGhlYXZlbiBhbmQgZWFydGgsClRoYXQgSSB3aWxsIG5vdCB0YWtlIGZyb20gYSB0aHJlYWQgZXZlbiB0byBhIHNob2VsYXRjaGV0LCBhbmQgdGhhdCBJIHdpbGwgbm90IHRha2UgYW55IHRoaW5nIHRoYXQgaXMgdGhpbmUsIGxlc3QgdGhvdSBzaG91bGRlc3Qgc2F5LCBJIGhhdmUgbWFkZSBBYnJhbSByaWNoOgpTYXZlIG9ubHkgdGhhdCB3aGljaCB0aGUgeW91bmcgbWVuIGhhdmUgZWF0ZW4sIGFuZCB0aGUgcG9ydGlvbiBvZiB0aGUgbWVuIHdoaWNoIHdlbnQgd2l0aCBtZSwgQW5lciwgRXNoY29sLCBhbmQgTWFtcmU7IGxldCB0aGVtIHRha2UgdGhlaXIgcG9ydGlvbi4KQWZ0ZXIgdGhlc2UgdGhpbmdzIHRoZSB3b3JkIG9mIHRoZSBMT1JEIGNhbWUgdW50byBBYnJhbSBpbiBhIHZpc2lvbiwgc2F5aW5nLCBGZWFyIG5vdCwgQWJyYW06IEkgYW0gdGh5IHNoaWVsZCwgYW5kIHRoeSBleGNlZWRpbmcgZ3JlYXQgcmV3YXJkLgpBbmQgQWJyYW0gc2FpZCwgTE9SRCBHb2QsIHdoYXQgd2lsdCB0aG91IGdpdmUgbWUsIHNlZWluZyBJIGdvIGNoaWxkbGVzcywgYW5kIHRoZSBzdGV3YXJkIG9mIG15IGhvdXNlIGlzIHRoaXMgRWxpZXplciBvZiBEYW1hc2N1cz8KQW5kIEFicmFtIHNhaWQsIEJlaG9sZCwgdG8gbWUgdGhvdSBoYXN0IGdpdmVuIG5vIHNlZWQ6IGFuZCwgbG8sIG9uZSBib3JuIGluIG15IGhvdXNlIGlzIG1pbmUgaGVpci4KQW5kLCBiZWhvbGQsIHRoZSB3b3JkIG9mIHRoZSBMT1JEIGNhbWUgdW50byBoaW0sIHNheWluZywgVGhpcyBzaGFsbCBub3QgYmUgdGhpbmUgaGVpcjsgYnV0IGhlIHRoYXQgc2hhbGwgY29tZSBmb3J0aCBvdXQgb2YgdGhpbmUgb3duIGJvd2VscyBzaGFsbCBiZSB0aGluZSBoZWlyLgpBbmQgaGUgYnJvdWdodCBoaW0gZm9ydGggYWJyb2FkLCBhbmQgc2FpZCwgTG9vayBub3cgdG93YXJkIGhlYXZlbiwgYW5kIHRlbGwgdGhlIHN0YXJzLCBpZiB0aG91IGJlIGFibGUgdG8gbnVtYmVyIHRoZW06IGFuZCBoZSBzYWlkIHVudG8gaGltLCBTbyBzaGFsbCB0aHkgc2VlZCBiZS4KQW5kIGhlIGJlbGlldmVkIGluIHRoZSBMT1JEOyBhbmQgaGUgY291bnRlZCBpdCB0byBoaW0gZm9yIHJpZ2h0ZW91c25lc3MuCkFuZCBoZSBzYWlkIHVudG8gaGltLCBJIGFtIHRoZSBMT1JEIHRoYXQgYnJvdWdodCB0aGVlIG91dCBvZiBVciBvZiB0aGUgQ2hhbGRlZXMsIHRvIGdpdmUgdGhlZSB0aGlzIGxhbmQgdG8gaW5oZXJpdCBpdC4KQW5kIGhlIHNhaWQsIExPUkQgR29kLCB3aGVyZWJ5IHNoYWxsIEkga25vdyB0aGF0IEkgc2hhbGwgaW5oZXJpdCBpdD8KQW5kIGhlIHNhaWQgdW50byBoaW0sIFRha2UgbWUgYW4gaGVpZmVyIG9mIHRocmVlIHllYXJzIG9sZCwgYW5kIGEgc2hlIGdvYXQgb2YgdGhyZWUgeWVhcnMgb2xkLCBhbmQgYSByYW0gb2YgdGhyZWUgeWVhcnMgb2xkLCBhbmQgYSB0dXJ0bGVkb3ZlLCBhbmQgYSB5b3VuZyBwaWdlb24uCkFuZCBoZSB0b29rIHVudG8gaGltIGFsbCB0aGVzZSwgYW5kIGRpdmlkZWQgdGhlbSBpbiB0aGUgbWlkc3QsIGFuZCBsYWlkIGVhY2ggcGllY2Ugb25lIGFnYWluc3QgYW5vdGhlcjogYnV0IHRoZSBiaXJkcyBkaXZpZGVkIGhlIG5vdC4KQW5kIHdoZW4gdGhlIGZvd2xzIGNhbWUgZG93biB1cG9uIHRoZSBjYXJjYXNlcywgQWJyYW0gZHJvdmUgdGhlbSBhd2F5LgpBbmQgd2hlbiB0aGUgc3VuIHdhcyBnb2luZyBkb3duLCBhIGRlZXAgc2xlZXAgZmVsbCB1cG9uIEFicmFtOyBhbmQsIGxvLCBhbiBob3Jyb3Igb2YgZ3JlYXQgZGFya25lc3MgZmVsbCB1cG9uIGhpbS4KQW5kIGhlIHNhaWQgdW50byBBYnJhbSwgS25vdyBvZiBhIHN1cmV0eSB0aGF0IHRoeSBzZWVkIHNoYWxsIGJlIGEgc3RyYW5nZXIgaW4gYSBsYW5kIHRoYXQgaXMgbm90IHRoZWlyJ3MsIGFuZCBzaGFsbCBzZXJ2ZSB0aGVtOyBhbmQgdGhleSBzaGFsbCBhZmZsaWN0IHRoZW0gZm91ciBodW5kcmVkIHllYXJzOwpBbmQgYWxzbyB0aGF0IG5hdGlvbiwgd2hvbSB0aGV5IHNoYWxsIHNlcnZlLCB3aWxsIEkganVkZ2U6IGFuZCBhZnRlcndhcmQgc2hhbGwgdGhleSBjb21lIG91dCB3aXRoIGdyZWF0IHN1YnN0YW5jZS4KQW5kIHRob3Ugc2hhbHQgZ28gdG8gdGh5IGZhdGhlcnMgaW4gcGVhY2U7IHRob3Ugc2hhbHQgYmUgYnVyaWVkIGluIGEgZ29vZCBvbGQgYWdlLgpCdXQgaW4gdGhlIGZvdXJ0aCBnZW5lcmF0aW9uIHRoZXkgc2hhbGwgY29tZSBoaXRoZXIgYWdhaW46IGZvciB0aGUgaW5pcXVpdHkgb2YgdGhlIEFtb3JpdGVzIGlzIG5vdCB5ZXQgZnVsbC4KQW5kIGl0IGNhbWUgdG8gcGFzcywgdGhhdCwgd2hlbiB0aGUgc3VuIHdlbnQgZG93biwgYW5kIGl0IHdhcyBkYXJrLCBiZWhvbGQgYSBzbW9raW5nIGZ1cm5hY2UsIGFuZCBhIGJ1cm5pbmcgbGFtcCB0aGF0IHBhc3NlZCBiZXR3ZWVuIHRob3NlIHBpZWNlcy4KSW4gdGhlIHNhbWUgZGF5IHRoZSBMT1JEIG1hZGUgYSBjb3ZlbmFudCB3aXRoIEFicmFtLCBzYXlpbmcsIFVudG8gdGh5IHNlZWQgaGF2ZSBJIGdpdmVuIHRoaXMgbGFuZCwgZnJvbSB0aGUgcml2ZXIgb2YgRWd5cHQgdW50byB0aGUgZ3JlYXQgcml2ZXIsIHRoZSByaXZlciBFdXBocmF0ZXM6ClRoZSBLZW5pdGVzLCBhbmQgdGhlIEtlbml6eml0ZXMsIGFuZCB0aGUgS2FkbW9uaXRlcywKQW5kIHRoZSBIaXR0aXRlcywgYW5kIHRoZSBQZXJpenppdGVzLCBhbmQgdGhlIFJlcGhhaW1zLApBbmQgdGhlIEFtb3JpdGVzLCBhbmQgdGhlIENhbmFhbml0ZXMsIGFuZCB0aGUgR2lyZ2FzaGl0ZXMsIGFuZCB0aGUgSmVidXNpdGVzLgpOb3cgU2FyYWkgQWJyYW0ncyB3aWZlIGJhcmUgaGltIG5vIGNoaWxkcmVuOiBhbmQgc2hlIGhhZCBhbiBoYW5kbWFpZCwgYW4gRWd5cHRpYW4sIHdob3NlIG5hbWUgd2FzIEhhZ2FyLgpBbmQgU2FyYWkgc2FpZCB1bnRvIEFicmFtLCBCZWhvbGQgbm93LCB0aGUgTE9SRCBoYXRoIHJlc3RyYWluZWQgbWUgZnJvbSBiZWFyaW5nOiBJIHByYXkgdGhlZSwgZ28gaW4gdW50byBteSBtYWlkOyBpdCBtYXkgYmUgdGhhdCBJIG1heSBvYnRhaW4gY2hpbGRyZW4gYnkgaGVyLiBBbmQgQWJyYW0gaGVhcmtlbmVkIHRvIHRoZSB2b2ljZSBvZiBTYXJhaS4KQW5kIFNhcmFpIEFicmFtJ3Mgd2lmZSB0b29rIEhhZ2FyIGhlciBtYWlkIHRoZSBFZ3lwdGlhbiwgYWZ0ZXIgQWJyYW0gaGFkIGR3ZWx0IHRlbiB5ZWFycyBpbiB0aGUgbGFuZCBvZiBDYW5hYW4sIGFuZCBnYXZlIGhlciB0byBoZXIgaHVzYmFuZCBBYnJhbSB0byBiZSBoaXMgd2lmZS4KQW5kIGhlIHdlbnQgaW4gdW50byBIYWdhciwgYW5kIHNoZSBjb25jZWl2ZWQ6IGFuZCB3aGVuIHNoZSBzYXcgdGhhdCBzaGUgaGFkIGNvbmNlaXZlZCwgaGVyIG1pc3RyZXNzIHdhcyBkZXNwaXNlZCBpbiBoZXIgZXllcy4KQW5kIFNhcmFpIHNhaWQgdW50byBBYnJhbSwgTXkgd3JvbmcgYmUgdXBvbiB0aGVlOiBJIGhhdmUgZ2l2ZW4gbXkgbWFpZCBpbnRvIHRoeSBib3NvbTsgYW5kIHdoZW4gc2hlIHNhdyB0aGF0IHNoZSBoYWQgY29uY2VpdmVkLCBJIHdhcyBkZXNwaXNlZCBpbiBoZXIgZXllczogdGhlIExPUkQganVkZ2UgYmV0d2VlbiBtZSBhbmQgdGhlZS4KQnV0IEFicmFtIHNhaWQgdW50byBTYXJhaSwgQmVob2xkLCB0aHkgbWFpZCBpcyBpbiB0aGluZSBoYW5kOyBkbyB0byBoZXIgYXMgaXQgcGxlYXNldGggdGhlZS4gQW5kIHdoZW4gU2FyYWkgZGVhbHQgaGFyZGx5IHdpdGggaGVyLCBzaGUgZmxlZCBmcm9tIGhlciBmYWNlLgpBbmQgdGhlIGFuZ2VsIG9mIHRoZSBMT1JEIGZvdW5kIGhlciBieSBhIGZvdW50YWluIG9mIHdhdGVyIGluIHRoZSB3aWxkZXJuZXNzLCBieSB0aGUgZm91bnRhaW4gaW4gdGhlIHdheSB0byBTaHVyLgpBbmQgaGUgc2FpZCwgSGFnYXIsIFNhcmFpJ3MgbWFpZCwgd2hlbmNlIGNhbWVzdCB0aG91PyBhbmQgd2hpdGhlciB3aWx0IHRob3UgZ28/IEFuZCBzaGUgc2FpZCwgSSBmbGVlIGZyb20gdGhlIGZhY2Ugb2YgbXkgbWlzdHJlc3MgU2FyYWkuCkFuZCB0aGUgYW5nZWwgb2YgdGhlIExPUkQgc2FpZCB1bnRvIGhlciwgUmV0dXJuIHRvIHRoeSBtaXN0cmVzcywgYW5kIHN1Ym1pdCB0aHlzZWxmIHVuZGVyIGhlciBoYW5kcy4KQW5kIHRoZSBhbmdlbCBvZiB0aGUgTE9SRCBzYWlkIHVudG8gaGVyLCBJIHdpbGwgbXVsdGlwbHkgdGh5IHNlZWQgZXhjZWVkaW5nbHksIHRoYXQgaXQgc2hhbGwgbm90IGJlIG51bWJlcmVkIGZvciBtdWx0aXR1ZGUuCkFuZCB0aGUgYW5nZWwgb2YgdGhlIExPUkQgc2FpZCB1bnRvIGhlciwgQmVob2xkLCB0aG91IGFydCB3aXRoIGNoaWxkIGFuZCBzaGFsdCBiZWFyIGEgc29uLCBhbmQgc2hhbHQgY2FsbCBoaXMgbmFtZSBJc2htYWVsOyBiZWNhdXNlIHRoZSBMT1JEIGhhdGggaGVhcmQgdGh5IGFmZmxpY3Rpb24uCkFuZCBoZSB3aWxsIGJlIGEgd2lsZCBtYW47IGhpcyBoYW5kIHdpbGwgYmUgYWdhaW5zdCBldmVyeSBtYW4sIGFuZCBldmVyeSBtYW4ncyBoYW5kIGFnYWluc3QgaGltOyBhbmQgaGUgc2hhbGwgZHdlbGwgaW4gdGhlIHByZXNlbmNlIG9mIGFsbCBoaXMgYnJldGhyZW4uCkFuZCBzaGUgY2FsbGVkIHRoZSBuYW1lIG9mIHRoZSBMT1JEIHRoYXQgc3Bha2UgdW50byBoZXIsIFRob3UgR29kIHNlZXN0IG1lOiBmb3Igc2hlIHNhaWQsIEhhdmUgSSBhbHNvIGhlcmUgbG9va2VkIGFmdGVyIGhpbSB0aGF0IHNlZXRoIG1lPwpXaGVyZWZvcmUgdGhlIHdlbGwgd2FzIGNhbGxlZCBCZWVybGFoYWlyb2k7IGJlaG9sZCwgaXQgaXMgYmV0d2VlbiBLYWRlc2ggYW5kIEJlcmVkLgpBbmQgSGFnYXIgYmFyZSBBYnJhbSBhIHNvbjogYW5kIEFicmFtIGNhbGxlZCBoaXMgc29uJ3MgbmFtZSwgd2hpY2ggSGFnYXIgYmFyZSwgSXNobWFlbC4KQW5kIEFicmFtIHdhcyBmb3Vyc2NvcmUgYW5kIHNpeCB5ZWFycyBvbGQsIHdoZW4gSGFnYXIgYmFyZSBJc2htYWVsIHRvIEFicmFtLgpBbmQgd2hlbiBBYnJhbSB3YXMgbmluZXR5IHllYXJzIG9sZCBhbmQgbmluZSwgdGhlIExPUkQgYXBwZWFyZWQgdG8gQWJyYW0sIGFuZCBzYWlkIHVudG8gaGltLCBJIGFtIHRoZSBBbG1pZ2h0eSBHb2Q7IHdhbGsgYmVmb3JlIG1lLCBhbmQgYmUgdGhvdSBwZXJmZWN0LgpBbmQgSSB3aWxsIG1ha2UgbXkgY292ZW5hbnQgYmV0d2VlbiBtZSBhbmQgdGhlZSwgYW5kIHdpbGwgbXVsdGlwbHkgdGhlZSBleGNlZWRpbmdseS4KQW5kIEFicmFtIGZlbGwgb24gaGlzIGZhY2U6IGFuZCBHb2QgdGFsa2VkIHdpdGggaGltLCBzYXlpbmcsCkFzIGZvciBtZSwgYmVob2xkLCBteSBjb3ZlbmFudCBpcyB3aXRoIHRoZWUsIGFuZCB0aG91IHNoYWx0IGJlIGEgZmF0aGVyIG9mIG1hbnkgbmF0aW9ucy4KTmVpdGhlciBzaGFsbCB0aHkgbmFtZSBhbnkgbW9yZSBiZSBjYWxsZWQgQWJyYW0sIGJ1dCB0aHkgbmFtZSBzaGFsbCBiZSBBYnJhaGFtOyBmb3IgYSBmYXRoZXIgb2YgbWFueSBuYXRpb25zIGhhdmUgSSBtYWRlIHRoZWUuCkFuZCBJIHdpbGwgbWFrZSB0aGVlIGV4Y2VlZGluZyBmcnVpdGZ1bCwgYW5kIEkgd2lsbCBtYWtlIG5hdGlvbnMgb2YgdGhlZSwgYW5kIGtpbmdzIHNoYWxsIGNvbWUgb3V0IG9mIHRoZWUuCkFuZCBJIHdpbGwgZXN0YWJsaXNoIG15IGNvdmVuYW50IGJldHdlZW4gbWUgYW5kIHRoZWUgYW5kIHRoeSBzZWVkIGFmdGVyIHRoZWUgaW4gdGhlaXIgZ2VuZXJhdGlvbnMgZm9yIGFuIGV2ZXJsYXN0aW5nIGNvdmVuYW50LCB0byBiZSBhIEdvZCB1bnRvIHRoZWUsIGFuZCB0byB0aHkgc2VlZCBhZnRlciB0aGVlLgpBbmQgSSB3aWxsIGdpdmUgdW50byB0aGVlLCBhbmQgdG8gdGh5IHNlZWQgYWZ0ZXIgdGhlZSwgdGhlIGxhbmQgd2hlcmVpbiB0aG91IGFydCBhIHN0cmFuZ2VyLCBhbGwgdGhlIGxhbmQgb2YgQ2FuYWFuLCBmb3IgYW4gZXZlcmxhc3RpbmcgcG9zc2Vzc2lvbjsgYW5kIEkgd2lsbCBiZSB0aGVpciBHb2QuCkFuZCBHb2Qgc2FpZCB1bnRvIEFicmFoYW0sIFRob3Ugc2hhbHQga2VlcCBteSBjb3ZlbmFudCB0aGVyZWZvcmUsIHRob3UsIGFuZCB0aHkgc2VlZCBhZnRlciB0aGVlIGluIHRoZWlyIGdlbmVyYXRpb25zLgpUaGlzIGlzIG15IGNvdmVuYW50LCB3aGljaCB5ZSBzaGFsbCBrZWVwLCBiZXR3ZWVuIG1lIGFuZCB5b3UgYW5kIHRoeSBzZWVkIGFmdGVyIHRoZWU7IEV2ZXJ5IG1hbiBjaGlsZCBhbW9uZyB5b3Ugc2hhbGwgYmUgY2lyY3VtY2lzZWQuCkFuZCB5ZSBzaGFsbCBjaXJjdW1jaXNlIHRoZSBmbGVzaCBvZiB5b3VyIGZvcmVza2luOyBhbmQgaXQgc2hhbGwgYmUgYSB0b2tlbiBvZiB0aGUgY292ZW5hbnQgYmV0d2l4dCBtZSBhbmQgeW91LgpBbmQgaGUgdGhhdCBpcyBlaWdodCBkYXlzIG9sZCBzaGFsbCBiZSBjaXJjdW1jaXNlZCBhbW9uZyB5b3UsIGV2ZXJ5IG1hbiBjaGlsZCBpbiB5b3VyIGdlbmVyYXRpb25zLCBoZSB0aGF0IGlzIGJvcm4gaW4gdGhlIGhvdXNlLCBvciBib3VnaHQgd2l0aCBtb25leSBvZiBhbnkgc3RyYW5nZXIsIHdoaWNoIGlzIG5vdCBvZiB0aHkgc2VlZC4KSGUgdGhhdCBpcyBib3JuIGluIHRoeSBob3VzZSwgYW5kIGhlIHRoYXQgaXMgYm91Z2h0IHdpdGggdGh5IG1vbmV5LCBtdXN0IG5lZWRzIGJlIGNpcmN1bWNpc2VkOiBhbmQgbXkgY292ZW5hbnQgc2hhbGwgYmUgaW4geW91ciBmbGVzaCBmb3IgYW4gZXZlcmxhc3RpbmcgY292ZW5hbnQuCkFuZCB0aGUgdW5jaXJjdW1jaXNlZCBtYW4gY2hpbGQgd2hvc2UgZmxlc2ggb2YgaGlzIGZvcmVza2luIGlzIG5vdCBjaXJjdW1jaXNlZCwgdGhhdCBzb3VsIHNoYWxsIGJlIGN1dCBvZmYgZnJvbSBoaXMgcGVvcGxlOyBoZSBoYXRoIGJyb2tlbiBteSBjb3ZlbmFudC4KQW5kIEdvZCBzYWlkIHVudG8gQWJyYWhhbSwgQXMgZm9yIFNhcmFpIHRoeSB3aWZlLCB0aG91IHNoYWx0IG5vdCBjYWxsIGhlciBuYW1lIFNhcmFpLCBidXQgU2FyYWggc2hhbGwgaGVyIG5hbWUgYmUuCkFuZCBJIHdpbGwgYmxlc3MgaGVyLCBhbmQgZ2l2ZSB0aGVlIGEgc29uIGFsc28gb2YgaGVyOiB5ZWEsIEkgd2lsbCBibGVzcyBoZXIsIGFuZCBzaGUgc2hhbGwgYmUgYSBtb3RoZXIgb2YgbmF0aW9uczsga2luZ3Mgb2YgcGVvcGxlIHNoYWxsIGJlIG9mIGhlci4KVGhlbiBBYnJhaGFtIGZlbGwgdXBvbiBoaXMgZmFjZSwgYW5kIGxhdWdoZWQsIGFuZCBzYWlkIGluIGhpcyBoZWFydCwgU2hhbGwgYSBjaGlsZCBiZSBib3JuIHVudG8gaGltIHRoYXQgaXMgYW4gaHVuZHJlZCB5ZWFycyBvbGQ/IGFuZCBzaGFsbCBTYXJhaCwgdGhhdCBpcyBuaW5ldHkgeWVhcnMgb2xkLCBiZWFyPwpBbmQgQWJyYWhhbSBzYWlkIHVudG8gR29kLCBPIHRoYXQgSXNobWFlbCBtaWdodCBsaXZlIGJlZm9yZSB0aGVlIQpBbmQgR29kIHNhaWQsIFNhcmFoIHRoeSB3aWZlIHNoYWxsIGJlYXIgdGhlZSBhIHNvbiBpbmRlZWQ7IGFuZCB0aG91IHNoYWx0IGNhbGwgaGlzIG5hbWUgSXNhYWM6IGFuZCBJIHdpbGwgZXN0YWJsaXNoIG15IGNvdmVuYW50IHdpdGggaGltIGZvciBhbiBldmVybGFzdGluZyBjb3ZlbmFudCwgYW5kIHdpdGggaGlzIHNlZWQgYWZ0ZXIgaGltLgpBbmQgYXMgZm9yIElzaG1hZWwsIEkgaGF2ZSBoZWFyZCB0aGVlOiBCZWhvbGQsIEkgaGF2ZSBibGVzc2VkIGhpbSwgYW5kIHdpbGwgbWFrZSBoaW0gZnJ1aXRmdWwsIGFuZCB3aWxsIG11bHRpcGx5IGhpbSBleGNlZWRpbmdseTsgdHdlbHZlIHByaW5jZXMgc2hhbGwgaGUgYmVnZXQsIGFuZCBJIHdpbGwgbWFrZSBoaW0gYSBncmVhdCBuYXRpb24uCkJ1dCBteSBjb3ZlbmFudCB3aWxsIEkgZXN0YWJsaXNoIHdpdGggSXNhYWMsIHdoaWNoIFNhcmFoIHNoYWxsIGJlYXIgdW50byB0aGVlIGF0IHRoaXMgc2V0IHRpbWUgaW4gdGhlIG5leHQgeWVhci4KQW5kIGhlIGxlZnQgb2ZmIHRhbGtpbmcgd2l0aCBoaW0sIGFuZCBHb2Qgd2VudCB1cCBmcm9tIEFicmFoYW0uCkFuZCBBYnJhaGFtIHRvb2sgSXNobWFlbCBoaXMgc29uLCBhbmQgYWxsIHRoYXQgd2VyZSBib3JuIGluIGhpcyBob3VzZSwgYW5kIGFsbCB0aGF0IHdlcmUgYm91Z2h0IHdpdGggaGlzIG1vbmV5LCBldmVyeSBtYWxlIGFtb25nIHRoZSBtZW4gb2YgQWJyYWhhbSdzIGhvdXNlOyBhbmQgY2lyY3VtY2lzZWQgdGhlIGZsZXNoIG9mIHRoZWlyIGZvcmVza2luIGluIHRoZSBzZWxmc2FtZSBkYXksIGFzIEdvZCBoYWQgc2FpZCB1bnRvIGhpbS4KQW5kIEFicmFoYW0gd2FzIG5pbmV0eSB5ZWFycyBvbGQgYW5kIG5pbmUsIHdoZW4gaGUgd2FzIGNpcmN1bWNpc2VkIGluIHRoZSBmbGVzaCBvZiBoaXMgZm9yZXNraW4uCkFuZCBJc2htYWVsIGhpcyBzb24gd2FzIHRoaXJ0ZWVuIHllYXJzIG9sZCwgd2hlbiBoZSB3YXMgY2lyY3VtY2lzZWQgaW4gdGhlIGZsZXNoIG9mIGhpcyBmb3Jlc2tpbi4KSW4gdGhlIHNlbGZzYW1lIGRheSB3YXMgQWJyYWhhbSBjaXJjdW1jaXNlZCwgYW5kIElzaG1hZWwgaGlzIHNvbi4KQW5kIGFsbCB0aGUgbWVuIG9mIGhpcyBob3VzZSwgYm9ybiBpbiB0aGUgaG91c2UsIGFuZCBib3VnaHQgd2l0aCBtb25leSBvZiB0aGUgc3RyYW5nZXIsIHdlcmUgY2lyY3VtY2lzZWQgd2l0aCBoaW0uCkFuZCB0aGUgTE9SRCBhcHBlYXJlZCB1bnRvIGhpbSBpbiB0aGUgcGxhaW5zIG9mIE1hbXJlOiBhbmQgaGUgc2F0IGluIHRoZSB0ZW50IGRvb3IgaW4gdGhlIGhlYXQgb2YgdGhlIGRheTsKQW5kIGhlIGxpZnQgdXAgaGlzIGV5ZXMgYW5kIGxvb2tlZCwgYW5kLCBsbywgdGhyZWUgbWVuIHN0b29kIGJ5IGhpbTogYW5kIHdoZW4gaGUgc2F3IHRoZW0sIGhlIHJhbiB0byBtZWV0IHRoZW0gZnJvbSB0aGUgdGVudCBkb29yLCBhbmQgYm93ZWQgaGltc2VsZiB0b3dhcmQgdGhlIGdyb3VuZCwKQW5kIHNhaWQsIE15IExPUkQsIGlmIG5vdyBJIGhhdmUgZm91bmQgZmF2b3VyIGluIHRoeSBzaWdodCwgcGFzcyBub3QgYXdheSwgSSBwcmF5IHRoZWUsIGZyb20gdGh5IHNlcnZhbnQ6CkxldCBhIGxpdHRsZSB3YXRlciwgSSBwcmF5IHlvdSwgYmUgZmV0Y2hlZCwgYW5kIHdhc2ggeW91ciBmZWV0LCBhbmQgcmVzdCB5b3Vyc2VsdmVzIHVuZGVyIHRoZSB0cmVlOgpBbmQgSSB3aWxsIGZldGNoIGEgbW9yc2VsIG9mIGJyZWFkLCBhbmQgY29tZm9ydCB5ZSB5b3VyIGhlYXJ0czsgYWZ0ZXIgdGhhdCB5ZSBzaGFsbCBwYXNzIG9uOiBmb3IgdGhlcmVmb3JlIGFyZSB5ZSBjb21lIHRvIHlvdXIgc2VydmFudC4gQW5kIHRoZXkgc2FpZCwgU28gZG8sIGFzIHRob3UgaGFzdCBzYWlkLgpBbmQgQWJyYWhhbSBoYXN0ZW5lZCBpbnRvIHRoZSB0ZW50IHVudG8gU2FyYWgsIGFuZCBzYWlkLCBNYWtlIHJlYWR5IHF1aWNrbHkgdGhyZWUgbWVhc3VyZXMgb2YgZmluZSBtZWFsLCBrbmVhZCBpdCwgYW5kIG1ha2UgY2FrZXMgdXBvbiB0aGUgaGVhcnRoLgpBbmQgQWJyYWhhbSByYW4gdW50byB0aGUgaGVyZCwgYW5kIGZldGNodCBhIGNhbGYgdGVuZGVyIGFuZCBnb29kLCBhbmQgZ2F2ZSBpdCB1bnRvIGEgeW91bmcgbWFuOyBhbmQgaGUgaGFzdGVkIHRvIGRyZXNzIGl0LgpBbmQgaGUgdG9vayBidXR0ZXIsIGFuZCBtaWxrLCBhbmQgdGhlIGNhbGYgd2hpY2ggaGUgaGFkIGRyZXNzZWQsIGFuZCBzZXQgaXQgYmVmb3JlIHRoZW07IGFuZCBoZSBzdG9vZCBieSB0aGVtIHVuZGVyIHRoZSB0cmVlLCBhbmQgdGhleSBkaWQgZWF0LgpBbmQgdGhleSBzYWlkIHVudG8gaGltLCBXaGVyZSBpcyBTYXJhaCB0aHkgd2lmZT8gQW5kIGhlIHNhaWQsIEJlaG9sZCwgaW4gdGhlIHRlbnQuCkFuZCBoZSBzYWlkLCBJIHdpbGwgY2VydGFpbmx5IHJldHVybiB1bnRvIHRoZWUgYWNjb3JkaW5nIHRvIHRoZSB0aW1lIG9mIGxpZmU7IGFuZCwgbG8sIFNhcmFoIHRoeSB3aWZlIHNoYWxsIGhhdmUgYSBzb24uIEFuZCBTYXJhaCBoZWFyZCBpdCBpbiB0aGUgdGVudCBkb29yLCB3aGljaCB3YXMgYmVoaW5kIGhpbS4KTm93IEFicmFoYW0gYW5kIFNhcmFoIHdlcmUgb2xkIGFuZCB3ZWxsIHN0cmlja2VuIGluIGFnZTsgYW5kIGl0IGNlYXNlZCB0byBiZSB3aXRoIFNhcmFoIGFmdGVyIHRoZSBtYW5uZXIgb2Ygd29tZW4uClRoZXJlZm9yZSBTYXJhaCBsYXVnaGVkIHdpdGhpbiBoZXJzZWxmLCBzYXlpbmcsIEFmdGVyIEkgYW0gd2F4ZWQgb2xkIHNoYWxsIEkgaGF2ZSBwbGVhc3VyZSwgbXkgbG9yZCBiZWluZyBvbGQgYWxzbz8KQW5kIHRoZSBMT1JEIHNhaWQgdW50byBBYnJhaGFtLCBXaGVyZWZvcmUgZGlkIFNhcmFoIGxhdWdoLCBzYXlpbmcsIFNoYWxsIEkgb2YgYSBzdXJldHkgYmVhciBhIGNoaWxkLCB3aGljaCBhbSBvbGQ/CklzIGFueSB0aGluZyB0b28gaGFyZCBmb3IgdGhlIExPUkQ/IEF0IHRoZSB0aW1lIGFwcG9pbnRlZCBJIHdpbGwgcmV0dXJuIHVudG8gdGhlZSwgYWNjb3JkaW5nIHRvIHRoZSB0aW1lIG9mIGxpZmUsIGFuZCBTYXJhaCBzaGFsbCBoYXZlIGEgc29uLgpUaGVuIFNhcmFoIGRlbmllZCwgc2F5aW5nLCBJIGxhdWdoZWQgbm90OyBmb3Igc2hlIHdhcyBhZnJhaWQuIEFuZCBoZSBzYWlkLCBOYXk7IGJ1dCB0aG91IGRpZHN0IGxhdWdoLgpBbmQgdGhlIG1lbiByb3NlIHVwIGZyb20gdGhlbmNlLCBhbmQgbG9va2VkIHRvd2FyZCBTb2RvbTogYW5kIEFicmFoYW0gd2VudCB3aXRoIHRoZW0gdG8gYnJpbmcgdGhlbSBvbiB0aGUgd2F5LgpBbmQgdGhlIExPUkQgc2FpZCwgU2hhbGwgSSBoaWRlIGZyb20gQWJyYWhhbSB0aGF0IHRoaW5nIHdoaWNoIEkgZG87ClNlZWluZyB0aGF0IEFicmFoYW0gc2hhbGwgc3VyZWx5IGJlY29tZSBhIGdyZWF0IGFuZCBtaWdodHkgbmF0aW9uLCBhbmQgYWxsIHRoZSBuYXRpb25zIG9mIHRoZSBlYXJ0aCBzaGFsbCBiZSBibGVzc2VkIGluIGhpbT8KRm9yIEkga25vdyBoaW0sIHRoYXQgaGUgd2lsbCBjb21tYW5kIGhpcyBjaGlsZHJlbiBhbmQgaGlzIGhvdXNlaG9sZCBhZnRlciBoaW0sIGFuZCB0aGV5IHNoYWxsIGtlZXAgdGhlIHdheSBvZiB0aGUgTE9SRCwgdG8gZG8ganVzdGljZSBhbmQganVkZ21lbnQ7IHRoYXQgdGhlIExPUkQgbWF5IGJyaW5nIHVwb24gQWJyYWhhbSB0aGF0IHdoaWNoIGhlIGhhdGggc3Bva2VuIG9mIGhpbS4KQW5kIHRoZSBMT1JEIHNhaWQsIEJlY2F1c2UgdGhlIGNyeSBvZiBTb2RvbSBhbmQgR29tb3JyYWggaXMgZ3JlYXQsIGFuZCBiZWNhdXNlIHRoZWlyIHNpbiBpcyB2ZXJ5IGdyaWV2b3VzOwpJIHdpbGwgZ28gZG93biBub3csIGFuZCBzZWUgd2hldGhlciB0aGV5IGhhdmUgZG9uZSBhbHRvZ2V0aGVyIGFjY29yZGluZyB0byB0aGUgY3J5IG9mIGl0LCB3aGljaCBpcyBjb21lIHVudG8gbWU7IGFuZCBpZiBub3QsIEkgd2lsbCBrbm93LgpBbmQgdGhlIG1lbiB0dXJuZWQgdGhlaXIgZmFjZXMgZnJvbSB0aGVuY2UsIGFuZCB3ZW50IHRvd2FyZCBTb2RvbTogYnV0IEFicmFoYW0gc3Rvb2QgeWV0IGJlZm9yZSB0aGUgTE9SRC4KQW5kIEFicmFoYW0gZHJldyBuZWFyLCBhbmQgc2FpZCwgV2lsdCB0aG91IGFsc28gZGVzdHJveSB0aGUgcmlnaHRlb3VzIHdpdGggdGhlIHdpY2tlZD8KUGVyYWR2ZW50dXJlIHRoZXJlIGJlIGZpZnR5IHJpZ2h0ZW91cyB3aXRoaW4gdGhlIGNpdHk6IHdpbHQgdGhvdSBhbHNvIGRlc3Ryb3kgYW5kIG5vdCBzcGFyZSB0aGUgcGxhY2UgZm9yIHRoZSBmaWZ0eSByaWdodGVvdXMgdGhhdCBhcmUgdGhlcmVpbj8KVGhhdCBiZSBmYXIgZnJvbSB0aGVlIHRvIGRvIGFmdGVyIHRoaXMgbWFubmVyLCB0byBzbGF5IHRoZSByaWdodGVvdXMgd2l0aCB0aGUgd2lja2VkOiBhbmQgdGhhdCB0aGUgcmlnaHRlb3VzIHNob3VsZCBiZSBhcyB0aGUgd2lja2VkLCB0aGF0IGJlIGZhciBmcm9tIHRoZWU6IFNoYWxsIG5vdCB0aGUgSnVkZ2Ugb2YgYWxsIHRoZSBlYXJ0aCBkbyByaWdodD8KQW5kIHRoZSBMT1JEIHNhaWQsIElmIEkgZmluZCBpbiBTb2RvbSBmaWZ0eSByaWdodGVvdXMgd2l0aGluIHRoZSBjaXR5LCB0aGVuIEkgd2lsbCBzcGFyZSBhbGwgdGhlIHBsYWNlIGZvciB0aGVpciBzYWtlcy4KQW5kIEFicmFoYW0gYW5zd2VyZWQgYW5kIHNhaWQsIEJlaG9sZCBub3csIEkgaGF2ZSB0YWtlbiB1cG9uIG1lIHRvIHNwZWFrIHVudG8gdGhlIExPUkQsIHdoaWNoIGFtIGJ1dCBkdXN0IGFuZCBhc2hlczoKUGVyYWR2ZW50dXJlIHRoZXJlIHNoYWxsIGxhY2sgZml2ZSBvZiB0aGUgZmlmdHkgcmlnaHRlb3VzOiB3aWx0IHRob3UgZGVzdHJveSBhbGwgdGhlIGNpdHkgZm9yIGxhY2sgb2YgZml2ZT8gQW5kIGhlIHNhaWQsIElmIEkgZmluZCB0aGVyZSBmb3J0eSBhbmQgZml2ZSwgSSB3aWxsIG5vdCBkZXN0cm95IGl0LgpBbmQgaGUgc3Bha2UgdW50byBoaW0geWV0IGFnYWluLCBhbmQgc2FpZCwgUGVyYWR2ZW50dXJlIHRoZXJlIHNoYWxsIGJlIGZvcnR5IGZvdW5kIHRoZXJlLiBBbmQgaGUgc2FpZCwgSSB3aWxsIG5vdCBkbyBpdCBmb3IgZm9ydHkncyBzYWtlLgpBbmQgaGUgc2FpZCB1bnRvIGhpbSwgT2ggbGV0IG5vdCB0aGUgTE9SRCBiZSBhbmdyeSwgYW5kIEkgd2lsbCBzcGVhazogUGVyYWR2ZW50dXJlIHRoZXJlIHNoYWxsIHRoaXJ0eSBiZSBmb3VuZCB0aGVyZS4gQW5kIGhlIHNhaWQsIEkgd2lsbCBub3QgZG8gaXQsIGlmIEkgZmluZCB0aGlydHkgdGhlcmUuCkFuZCBoZSBzYWlkLCBCZWhvbGQgbm93LCBJIGhhdmUgdGFrZW4gdXBvbiBtZSB0byBzcGVhayB1bnRvIHRoZSBMT1JEOiBQZXJhZHZlbnR1cmUgdGhlcmUgc2hhbGwgYmUgdHdlbnR5IGZvdW5kIHRoZXJlLiBBbmQgaGUgc2FpZCwgSSB3aWxsIG5vdCBkZXN0cm95IGl0IGZvciB0d2VudHkncyBzYWtlLgpBbmQgaGUgc2FpZCwgT2ggbGV0IG5vdCB0aGUgTE9SRCBiZSBhbmdyeSwgYW5kIEkgd2lsbCBzcGVhayB5ZXQgYnV0IHRoaXMgb25jZTogUGVyYWR2ZW50dXJlIHRlbiBzaGFsbCBiZSBmb3VuZCB0aGVyZS4gQW5kIGhlIHNhaWQsIEkgd2lsbCBub3QgZGVzdHJveSBpdCBmb3IgdGVuJ3Mgc2FrZS4KQW5kIHRoZSBMT1JEIHdlbnQgaGlzIHdheSwgYXMgc29vbiBhcyBoZSBoYWQgbGVmdCBjb21tdW5pbmcgd2l0aCBBYnJhaGFtOiBhbmQgQWJyYWhhbSByZXR1cm5lZCB1bnRvIGhpcyBwbGFjZS4KQW5kIHRoZXJlIGNhbWUgdHdvIGFuZ2VscyB0byBTb2RvbSBhdCBldmVuOyBhbmQgTG90IHNhdCBpbiB0aGUgZ2F0ZSBvZiBTb2RvbTogYW5kIExvdCBzZWVpbmcgdGhlbSByb3NlIHVwIHRvIG1lZXQgdGhlbTsgYW5kIGhlIGJvd2VkIGhpbXNlbGYgd2l0aCBoaXMgZmFjZSB0b3dhcmQgdGhlIGdyb3VuZDsKQW5kIGhlIHNhaWQsIEJlaG9sZCBub3csIG15IGxvcmRzLCB0dXJuIGluLCBJIHByYXkgeW91LCBpbnRvIHlvdXIgc2VydmFudCdzIGhvdXNlLCBhbmQgdGFycnkgYWxsIG5pZ2h0LCBhbmQgd2FzaCB5b3VyIGZlZXQsIGFuZCB5ZSBzaGFsbCByaXNlIHVwIGVhcmx5LCBhbmQgZ28gb24geW91ciB3YXlzLiBBbmQgdGhleSBzYWlkLCBOYXk7IGJ1dCB3ZSB3aWxsIGFiaWRlIGluIHRoZSBzdHJlZXQgYWxsIG5pZ2h0LgpBbmQgaGUgcHJlc3NlZCB1cG9uIHRoZW0gZ3JlYXRseTsgYW5kIHRoZXkgdHVybmVkIGluIHVudG8gaGltLCBhbmQgZW50ZXJlZCBpbnRvIGhpcyBob3VzZTsgYW5kIGhlIG1hZGUgdGhlbSBhIGZlYXN0LCBhbmQgZGlkIGJha2UgdW5sZWF2ZW5lZCBicmVhZCwgYW5kIHRoZXkgZGlkIGVhdC4KQnV0IGJlZm9yZSB0aGV5IGxheSBkb3duLCB0aGUgbWVuIG9mIHRoZSBjaXR5LCBldmVuIHRoZSBtZW4gb2YgU29kb20sIGNvbXBhc3NlZCB0aGUgaG91c2Ugcm91bmQsIGJvdGggb2xkIGFuZCB5b3VuZywgYWxsIHRoZSBwZW9wbGUgZnJvbSBldmVyeSBxdWFydGVyOgpBbmQgdGhleSBjYWxsZWQgdW50byBMb3QsIGFuZCBzYWlkIHVudG8gaGltLCBXaGVyZSBhcmUgdGhlIG1lbiB3aGljaCBjYW1lIGluIHRvIHRoZWUgdGhpcyBuaWdodD8gYnJpbmcgdGhlbSBvdXQgdW50byB1cywgdGhhdCB3ZSBtYXkga25vdyB0aGVtLgpBbmQgTG90IHdlbnQgb3V0IGF0IHRoZSBkb29yIHVudG8gdGhlbSwgYW5kIHNodXQgdGhlIGRvb3IgYWZ0ZXIgaGltLApBbmQgc2FpZCwgSSBwcmF5IHlvdSwgYnJldGhyZW4sIGRvIG5vdCBzbyB3aWNrZWRseS4KQmVob2xkIG5vdywgSSBoYXZlIHR3byBkYXVnaHRlcnMgd2hpY2ggaGF2ZSBub3Qga25vd24gbWFuOyBsZXQgbWUsIEkgcHJheSB5b3UsIGJyaW5nIHRoZW0gb3V0IHVudG8geW91LCBhbmQgZG8geWUgdG8gdGhlbSBhcyBpcyBnb29kIGluIHlvdXIgZXllczogb25seSB1bnRvIHRoZXNlIG1lbiBkbyBub3RoaW5nOyBmb3IgdGhlcmVmb3JlIGNhbWUgdGhleSB1bmRlciB0aGUgc2hhZG93IG9mIG15IHJvb2YuCkFuZCB0aGV5IHNhaWQsIFN0YW5kIGJhY2suIEFuZCB0aGV5IHNhaWQgYWdhaW4sIFRoaXMgb25lIGZlbGxvdyBjYW1lIGluIHRvIHNvam91cm4sIGFuZCBoZSB3aWxsIG5lZWRzIGJlIGEganVkZ2U6IG5vdyB3aWxsIHdlIGRlYWwgd29yc2Ugd2l0aCB0aGVlLCB0aGFuIHdpdGggdGhlbS4gQW5kIHRoZXkgcHJlc3NlZCBzb3JlIHVwb24gdGhlIG1hbiwgZXZlbiBMb3QsIGFuZCBjYW1lIG5lYXIgdG8gYnJlYWsgdGhlIGRvb3IuCkJ1dCB0aGUgbWVuIHB1dCBmb3J0aCB0aGVpciBoYW5kLCBhbmQgcHVsbGVkIExvdCBpbnRvIHRoZSBob3VzZSB0byB0aGVtLCBhbmQgc2h1dCB0byB0aGUgZG9vci4KQW5kIHRoZXkgc21vdGUgdGhlIG1lbiB0aGF0IHdlcmUgYXQgdGhlIGRvb3Igb2YgdGhlIGhvdXNlIHdpdGggYmxpbmRuZXNzLCBib3RoIHNtYWxsIGFuZCBncmVhdDogc28gdGhhdCB0aGV5IHdlYXJpZWQgdGhlbXNlbHZlcyB0byBmaW5kIHRoZSBkb29yLgpBbmQgdGhlIG1lbiBzYWlkIHVudG8gTG90LCBIYXN0IHRob3UgaGVyZSBhbnkgYmVzaWRlcz8gc29uIGluIGxhdywgYW5kIHRoeSBzb25zLCBhbmQgdGh5IGRhdWdodGVycywgYW5kIHdoYXRzb2V2ZXIgdGhvdSBoYXN0IGluIHRoZSBjaXR5LCBicmluZyB0aGVtIG91dCBvZiB0aGlzIHBsYWNlOgpGb3Igd2Ugd2lsbCBkZXN0cm95IHRoaXMgcGxhY2UsIGJlY2F1c2UgdGhlIGNyeSBvZiB0aGVtIGlzIHdheGVuIGdyZWF0IGJlZm9yZSB0aGUgZmFjZSBvZiB0aGUgTE9SRDsgYW5kIHRoZSBMT1JEIGhhdGggc2VudCB1cyB0byBkZXN0cm95IGl0LgpBbmQgTG90IHdlbnQgb3V0LCBhbmQgc3Bha2UgdW50byBoaXMgc29ucyBpbiBsYXcsIHdoaWNoIG1hcnJpZWQgaGlzIGRhdWdodGVycywgYW5kIHNhaWQsIFVwLCBnZXQgeW91IG91dCBvZiB0aGlzIHBsYWNlOyBmb3IgdGhlIExPUkQgd2lsbCBkZXN0cm95IHRoaXMgY2l0eS4gQnV0IGhlIHNlZW1lZCBhcyBvbmUgdGhhdCBtb2NrZWQgdW50byBoaXMgc29ucyBpbiBsYXcuCkFuZCB3aGVuIHRoZSBtb3JuaW5nIGFyb3NlLCB0aGVuIHRoZSBhbmdlbHMgaGFzdGVuZWQgTG90LCBzYXlpbmcsIEFyaXNlLCB0YWtlIHRoeSB3aWZlLCBhbmQgdGh5IHR3byBkYXVnaHRlcnMsIHdoaWNoIGFyZSBoZXJlOyBsZXN0IHRob3UgYmUgY29uc3VtZWQgaW4gdGhlIGluaXF1aXR5IG9mIHRoZSBjaXR5LgpBbmQgd2hpbGUgaGUgbGluZ2VyZWQsIHRoZSBtZW4gbGFpZCBob2xkIHVwb24gaGlzIGhhbmQsIGFuZCB1cG9uIHRoZSBoYW5kIG9mIGhpcyB3aWZlLCBhbmQgdXBvbiB0aGUgaGFuZCBvZiBoaXMgdHdvIGRhdWdodGVyczsgdGhlIExPUkQgYmVpbmcgbWVyY2lmdWwgdW50byBoaW06IGFuZCB0aGV5IGJyb3VnaHQgaGltIGZvcnRoLCBhbmQgc2V0IGhpbSB3aXRob3V0IHRoZSBjaXR5LgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIHRoZXkgaGFkIGJyb3VnaHQgdGhlbSBmb3J0aCBhYnJvYWQsIHRoYXQgaGUgc2FpZCwgRXNjYXBlIGZvciB0aHkgbGlmZTsgbG9vayBub3QgYmVoaW5kIHRoZWUsIG5laXRoZXIgc3RheSB0aG91IGluIGFsbCB0aGUgcGxhaW47IGVzY2FwZSB0byB0aGUgbW91bnRhaW4sIGxlc3QgdGhvdSBiZSBjb25zdW1lZC4KQW5kIExvdCBzYWlkIHVudG8gdGhlbSwgT2gsIG5vdCBzbywgbXkgTE9SRDoKQmVob2xkIG5vdywgdGh5IHNlcnZhbnQgaGF0aCBmb3VuZCBncmFjZSBpbiB0aHkgc2lnaHQsIGFuZCB0aG91IGhhc3QgbWFnbmlmaWVkIHRoeSBtZXJjeSwgd2hpY2ggdGhvdSBoYXN0IHNoZXdlZCB1bnRvIG1lIGluIHNhdmluZyBteSBsaWZlOyBhbmQgSSBjYW5ub3QgZXNjYXBlIHRvIHRoZSBtb3VudGFpbiwgbGVzdCBzb21lIGV2aWwgdGFrZSBtZSwgYW5kIEkgZGllOgpCZWhvbGQgbm93LCB0aGlzIGNpdHkgaXMgbmVhciB0byBmbGVlIHVudG8sIGFuZCBpdCBpcyBhIGxpdHRsZSBvbmU6IE9oLCBsZXQgbWUgZXNjYXBlIHRoaXRoZXIsIChpcyBpdCBub3QgYSBsaXR0bGUgb25lPykgYW5kIG15IHNvdWwgc2hhbGwgbGl2ZS4KQW5kIGhlIHNhaWQgdW50byBoaW0sIFNlZSwgSSBoYXZlIGFjY2VwdGVkIHRoZWUgY29uY2VybmluZyB0aGlzIHRoaW5nIGFsc28sIHRoYXQgSSB3aWxsIG5vdCBvdmVydGhyb3cgdGhpcyBjaXR5LCBmb3IgdGhlIHdoaWNoIHRob3UgaGFzdCBzcG9rZW4uCkhhc3RlIHRoZWUsIGVzY2FwZSB0aGl0aGVyOyBmb3IgSSBjYW5ub3QgZG8gYW55dGhpbmcgdGlsbCB0aG91IGJlIGNvbWUgdGhpdGhlci4gVGhlcmVmb3JlIHRoZSBuYW1lIG9mIHRoZSBjaXR5IHdhcyBjYWxsZWQgWm9hci4KVGhlIHN1biB3YXMgcmlzZW4gdXBvbiB0aGUgZWFydGggd2hlbiBMb3QgZW50ZXJlZCBpbnRvIFpvYXIuClRoZW4gdGhlIExPUkQgcmFpbmVkIHVwb24gU29kb20gYW5kIHVwb24gR29tb3JyYWggYnJpbXN0b25lIGFuZCBmaXJlIGZyb20gdGhlIExPUkQgb3V0IG9mIGhlYXZlbjsKQW5kIGhlIG92ZXJ0aHJldyB0aG9zZSBjaXRpZXMsIGFuZCBhbGwgdGhlIHBsYWluLCBhbmQgYWxsIHRoZSBpbmhhYml0YW50cyBvZiB0aGUgY2l0aWVzLCBhbmQgdGhhdCB3aGljaCBncmV3IHVwb24gdGhlIGdyb3VuZC4KQnV0IGhpcyB3aWZlIGxvb2tlZCBiYWNrIGZyb20gYmVoaW5kIGhpbSwgYW5kIHNoZSBiZWNhbWUgYSBwaWxsYXIgb2Ygc2FsdC4KQW5kIEFicmFoYW0gZ2F0IHVwIGVhcmx5IGluIHRoZSBtb3JuaW5nIHRvIHRoZSBwbGFjZSB3aGVyZSBoZSBzdG9vZCBiZWZvcmUgdGhlIExPUkQ6CkFuZCBoZSBsb29rZWQgdG93YXJkIFNvZG9tIGFuZCBHb21vcnJhaCwgYW5kIHRvd2FyZCBhbGwgdGhlIGxhbmQgb2YgdGhlIHBsYWluLCBhbmQgYmVoZWxkLCBhbmQsIGxvLCB0aGUgc21va2Ugb2YgdGhlIGNvdW50cnkgd2VudCB1cCBhcyB0aGUgc21va2Ugb2YgYSBmdXJuYWNlLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIEdvZCBkZXN0cm95ZWQgdGhlIGNpdGllcyBvZiB0aGUgcGxhaW4sIHRoYXQgR29kIHJlbWVtYmVyZWQgQWJyYWhhbSwgYW5kIHNlbnQgTG90IG91dCBvZiB0aGUgbWlkc3Qgb2YgdGhlIG92ZXJ0aHJvdywgd2hlbiBoZSBvdmVydGhyZXcgdGhlIGNpdGllcyBpbiB0aGUgd2hpY2ggTG90IGR3ZWx0LgpBbmQgTG90IHdlbnQgdXAgb3V0IG9mIFpvYXIsIGFuZCBkd2VsdCBpbiB0aGUgbW91bnRhaW4sIGFuZCBoaXMgdHdvIGRhdWdodGVycyB3aXRoIGhpbTsgZm9yIGhlIGZlYXJlZCB0byBkd2VsbCBpbiBab2FyOiBhbmQgaGUgZHdlbHQgaW4gYSBjYXZlLCBoZSBhbmQgaGlzIHR3byBkYXVnaHRlcnMuCkFuZCB0aGUgZmlyc3Rib3JuIHNhaWQgdW50byB0aGUgeW91bmdlciwgT3VyIGZhdGhlciBpcyBvbGQsIGFuZCB0aGVyZSBpcyBub3QgYSBtYW4gaW4gdGhlIGVhcnRoIHRvIGNvbWUgaW4gdW50byB1cyBhZnRlciB0aGUgbWFubmVyIG9mIGFsbCB0aGUgZWFydGg6CkNvbWUsIGxldCB1cyBtYWtlIG91ciBmYXRoZXIgZHJpbmsgd2luZSwgYW5kIHdlIHdpbGwgbGllIHdpdGggaGltLCB0aGF0IHdlIG1heSBwcmVzZXJ2ZSBzZWVkIG9mIG91ciBmYXRoZXIuCkFuZCB0aGV5IG1hZGUgdGhlaXIgZmF0aGVyIGRyaW5rIHdpbmUgdGhhdCBuaWdodDogYW5kIHRoZSBmaXJzdGJvcm4gd2VudCBpbiwgYW5kIGxheSB3aXRoIGhlciBmYXRoZXI7IGFuZCBoZSBwZXJjZWl2ZWQgbm90IHdoZW4gc2hlIGxheSBkb3duLCBub3Igd2hlbiBzaGUgYXJvc2UuCkFuZCBpdCBjYW1lIHRvIHBhc3Mgb24gdGhlIG1vcnJvdywgdGhhdCB0aGUgZmlyc3Rib3JuIHNhaWQgdW50byB0aGUgeW91bmdlciwgQmVob2xkLCBJIGxheSB5ZXN0ZXJuaWdodCB3aXRoIG15IGZhdGhlcjogbGV0IHVzIG1ha2UgaGltIGRyaW5rIHdpbmUgdGhpcyBuaWdodCBhbHNvOyBhbmQgZ28gdGhvdSBpbiwgYW5kIGxpZSB3aXRoIGhpbSwgdGhhdCB3ZSBtYXkgcHJlc2VydmUgc2VlZCBvZiBvdXIgZmF0aGVyLgpBbmQgdGhleSBtYWRlIHRoZWlyIGZhdGhlciBkcmluayB3aW5lIHRoYXQgbmlnaHQgYWxzbzogYW5kIHRoZSB5b3VuZ2VyIGFyb3NlLCBhbmQgbGF5IHdpdGggaGltOyBhbmQgaGUgcGVyY2VpdmVkIG5vdCB3aGVuIHNoZSBsYXkgZG93biwgbm9yIHdoZW4gc2hlIGFyb3NlLgpUaHVzIHdlcmUgYm90aCB0aGUgZGF1Z2h0ZXJzIG9mIExvdCB3aXRoIGNoaWxkIGJ5IHRoZWlyIGZhdGhlci4KQW5kIHRoZSBmaXJzdCBib3JuIGJhcmUgYSBzb24sIGFuZCBjYWxsZWQgaGlzIG5hbWUgTW9hYjogdGhlIHNhbWUgaXMgdGhlIGZhdGhlciBvZiB0aGUgTW9hYml0ZXMgdW50byB0aGlzIGRheS4KQW5kIHRoZSB5b3VuZ2VyLCBzaGUgYWxzbyBiYXJlIGEgc29uLCBhbmQgY2FsbGVkIGhpcyBuYW1lIEJlbmFtbWk6IHRoZSBzYW1lIGlzIHRoZSBmYXRoZXIgb2YgdGhlIGNoaWxkcmVuIG9mIEFtbW9uIHVudG8gdGhpcyBkYXkuCkFuZCBBYnJhaGFtIGpvdXJuZXllZCBmcm9tIHRoZW5jZSB0b3dhcmQgdGhlIHNvdXRoIGNvdW50cnksIGFuZCBkd2VsbGVkIGJldHdlZW4gS2FkZXNoIGFuZCBTaHVyLCBhbmQgc29qb3VybmVkIGluIEdlcmFyLgpBbmQgQWJyYWhhbSBzYWlkIG9mIFNhcmFoIGhpcyB3aWZlLCBTaGUgaXMgbXkgc2lzdGVyOiBhbmQgQWJpbWVsZWNoIGtpbmcgb2YgR2VyYXIgc2VudCwgYW5kIHRvb2sgU2FyYWguCkJ1dCBHb2QgY2FtZSB0byBBYmltZWxlY2ggaW4gYSBkcmVhbSBieSBuaWdodCwgYW5kIHNhaWQgdG8gaGltLCBCZWhvbGQsIHRob3UgYXJ0IGJ1dCBhIGRlYWQgbWFuLCBmb3IgdGhlIHdvbWFuIHdoaWNoIHRob3UgaGFzdCB0YWtlbjsgZm9yIHNoZSBpcyBhIG1hbidzIHdpZmUuCkJ1dCBBYmltZWxlY2ggaGFkIG5vdCBjb21lIG5lYXIgaGVyOiBhbmQgaGUgc2FpZCwgTE9SRCwgd2lsdCB0aG91IHNsYXkgYWxzbyBhIHJpZ2h0ZW91cyBuYXRpb24/ClNhaWQgaGUgbm90IHVudG8gbWUsIFNoZSBpcyBteSBzaXN0ZXI/IGFuZCBzaGUsIGV2ZW4gc2hlIGhlcnNlbGYgc2FpZCwgSGUgaXMgbXkgYnJvdGhlcjogaW4gdGhlIGludGVncml0eSBvZiBteSBoZWFydCBhbmQgaW5ub2NlbmN5IG9mIG15IGhhbmRzIGhhdmUgSSBkb25lIHRoaXMuCkFuZCBHb2Qgc2FpZCB1bnRvIGhpbSBpbiBhIGRyZWFtLCBZZWEsIEkga25vdyB0aGF0IHRob3UgZGlkc3QgdGhpcyBpbiB0aGUgaW50ZWdyaXR5IG9mIHRoeSBoZWFydDsgZm9yIEkgYWxzbyB3aXRoaGVsZCB0aGVlIGZyb20gc2lubmluZyBhZ2FpbnN0IG1lOiB0aGVyZWZvcmUgc3VmZmVyZWQgSSB0aGVlIG5vdCB0byB0b3VjaCBoZXIuCk5vdyB0aGVyZWZvcmUgcmVzdG9yZSB0aGUgbWFuIGhpcyB3aWZlOyBmb3IgaGUgaXMgYSBwcm9waGV0LCBhbmQgaGUgc2hhbGwgcHJheSBmb3IgdGhlZSwgYW5kIHRob3Ugc2hhbHQgbGl2ZTogYW5kIGlmIHRob3UgcmVzdG9yZSBoZXIgbm90LCBrbm93IHRob3UgdGhhdCB0aG91IHNoYWx0IHN1cmVseSBkaWUsIHRob3UsIGFuZCBhbGwgdGhhdCBhcmUgdGhpbmUuClRoZXJlZm9yZSBBYmltZWxlY2ggcm9zZSBlYXJseSBpbiB0aGUgbW9ybmluZywgYW5kIGNhbGxlZCBhbGwgaGlzIHNlcnZhbnRzLCBhbmQgdG9sZCBhbGwgdGhlc2UgdGhpbmdzIGluIHRoZWlyIGVhcnM6IGFuZCB0aGUgbWVuIHdlcmUgc29yZSBhZnJhaWQuClRoZW4gQWJpbWVsZWNoIGNhbGxlZCBBYnJhaGFtLCBhbmQgc2FpZCB1bnRvIGhpbSwgV2hhdCBoYXN0IHRob3UgZG9uZSB1bnRvIHVzPyBhbmQgd2hhdCBoYXZlIEkgb2ZmZW5kZWQgdGhlZSwgdGhhdCB0aG91IGhhc3QgYnJvdWdodCBvbiBtZSBhbmQgb24gbXkga2luZ2RvbSBhIGdyZWF0IHNpbj8gdGhvdSBoYXN0IGRvbmUgZGVlZHMgdW50byBtZSB0aGF0IG91Z2h0IG5vdCB0byBiZSBkb25lLgpBbmQgQWJpbWVsZWNoIHNhaWQgdW50byBBYnJhaGFtLCBXaGF0IHNhd2VzdCB0aG91LCB0aGF0IHRob3UgaGFzdCBkb25lIHRoaXMgdGhpbmc/CkFuZCBBYnJhaGFtIHNhaWQsIEJlY2F1c2UgSSB0aG91Z2h0LCBTdXJlbHkgdGhlIGZlYXIgb2YgR29kIGlzIG5vdCBpbiB0aGlzIHBsYWNlOyBhbmQgdGhleSB3aWxsIHNsYXkgbWUgZm9yIG15IHdpZmUncyBzYWtlLgpBbmQgeWV0IGluZGVlZCBzaGUgaXMgbXkgc2lzdGVyOyBzaGUgaXMgdGhlIGRhdWdodGVyIG9mIG15IGZhdGhlciwgYnV0IG5vdCB0aGUgZGF1Z2h0ZXIgb2YgbXkgbW90aGVyOyBhbmQgc2hlIGJlY2FtZSBteSB3aWZlLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIEdvZCBjYXVzZWQgbWUgdG8gd2FuZGVyIGZyb20gbXkgZmF0aGVyJ3MgaG91c2UsIHRoYXQgSSBzYWlkIHVudG8gaGVyLCBUaGlzIGlzIHRoeSBraW5kbmVzcyB3aGljaCB0aG91IHNoYWx0IHNoZXcgdW50byBtZTsgYXQgZXZlcnkgcGxhY2Ugd2hpdGhlciB3ZSBzaGFsbCBjb21lLCBzYXkgb2YgbWUsIEhlIGlzIG15IGJyb3RoZXIuCkFuZCBBYmltZWxlY2ggdG9vayBzaGVlcCwgYW5kIG94ZW4sIGFuZCBtZW5zZXJ2YW50cywgYW5kIHdvbWVuc2VydmFudHMsIGFuZCBnYXZlIHRoZW0gdW50byBBYnJhaGFtLCBhbmQgcmVzdG9yZWQgaGltIFNhcmFoIGhpcyB3aWZlLgpBbmQgQWJpbWVsZWNoIHNhaWQsIEJlaG9sZCwgbXkgbGFuZCBpcyBiZWZvcmUgdGhlZTogZHdlbGwgd2hlcmUgaXQgcGxlYXNldGggdGhlZS4KQW5kIHVudG8gU2FyYWggaGUgc2FpZCwgQmVob2xkLCBJIGhhdmUgZ2l2ZW4gdGh5IGJyb3RoZXIgYSB0aG91c2FuZCBwaWVjZXMgb2Ygc2lsdmVyOiBiZWhvbGQsIGhlIGlzIHRvIHRoZWUgYSBjb3ZlcmluZyBvZiB0aGUgZXllcywgdW50byBhbGwgdGhhdCBhcmUgd2l0aCB0aGVlLCBhbmQgd2l0aCBhbGwgb3RoZXI6IHRodXMgc2hlIHdhcyByZXByb3ZlZC4KU28gQWJyYWhhbSBwcmF5ZWQgdW50byBHb2Q6IGFuZCBHb2QgaGVhbGVkIEFiaW1lbGVjaCwgYW5kIGhpcyB3aWZlLCBhbmQgaGlzIG1haWRzZXJ2YW50czsgYW5kIHRoZXkgYmFyZSBjaGlsZHJlbi4KRm9yIHRoZSBMT1JEIGhhZCBmYXN0IGNsb3NlZCB1cCBhbGwgdGhlIHdvbWJzIG9mIHRoZSBob3VzZSBvZiBBYmltZWxlY2gsIGJlY2F1c2Ugb2YgU2FyYWggQWJyYWhhbSdzIHdpZmUuCkFuZCB0aGUgTE9SRCB2aXNpdGVkIFNhcmFoIGFzIGhlIGhhZCBzYWlkLCBhbmQgdGhlIExPUkQgZGlkIHVudG8gU2FyYWggYXMgaGUgaGFkIHNwb2tlbi4KRm9yIFNhcmFoIGNvbmNlaXZlZCwgYW5kIGJhcmUgQWJyYWhhbSBhIHNvbiBpbiBoaXMgb2xkIGFnZSwgYXQgdGhlIHNldCB0aW1lIG9mIHdoaWNoIEdvZCBoYWQgc3Bva2VuIHRvIGhpbS4KQW5kIEFicmFoYW0gY2FsbGVkIHRoZSBuYW1lIG9mIGhpcyBzb24gdGhhdCB3YXMgYm9ybiB1bnRvIGhpbSwgd2hvbSBTYXJhaCBiYXJlIHRvIGhpbSwgSXNhYWMuCkFuZCBBYnJhaGFtIGNpcmN1bWNpc2VkIGhpcyBzb24gSXNhYWMgYmVpbmcgZWlnaHQgZGF5cyBvbGQsIGFzIEdvZCBoYWQgY29tbWFuZGVkIGhpbS4KQW5kIEFicmFoYW0gd2FzIGFuIGh1bmRyZWQgeWVhcnMgb2xkLCB3aGVuIGhpcyBzb24gSXNhYWMgd2FzIGJvcm4gdW50byBoaW0uCkFuZCBTYXJhaCBzYWlkLCBHb2QgaGF0aCBtYWRlIG1lIHRvIGxhdWdoLCBzbyB0aGF0IGFsbCB0aGF0IGhlYXIgd2lsbCBsYXVnaCB3aXRoIG1lLgpBbmQgc2hlIHNhaWQsIFdobyB3b3VsZCBoYXZlIHNhaWQgdW50byBBYnJhaGFtLCB0aGF0IFNhcmFoIHNob3VsZCBoYXZlIGdpdmVuIGNoaWxkcmVuIHN1Y2s/IGZvciBJIGhhdmUgYm9ybiBoaW0gYSBzb24gaW4gaGlzIG9sZCBhZ2UuCkFuZCB0aGUgY2hpbGQgZ3JldywgYW5kIHdhcyB3ZWFuZWQ6IGFuZCBBYnJhaGFtIG1hZGUgYSBncmVhdCBmZWFzdCB0aGUgc2FtZSBkYXkgdGhhdCBJc2FhYyB3YXMgd2VhbmVkLgpBbmQgU2FyYWggc2F3IHRoZSBzb24gb2YgSGFnYXIgdGhlIEVneXB0aWFuLCB3aGljaCBzaGUgaGFkIGJvcm4gdW50byBBYnJhaGFtLCBtb2NraW5nLgpXaGVyZWZvcmUgc2hlIHNhaWQgdW50byBBYnJhaGFtLCBDYXN0IG91dCB0aGlzIGJvbmR3b21hbiBhbmQgaGVyIHNvbjogZm9yIHRoZSBzb24gb2YgdGhpcyBib25kd29tYW4gc2hhbGwgbm90IGJlIGhlaXIgd2l0aCBteSBzb24sIGV2ZW4gd2l0aCBJc2FhYy4KQW5kIHRoZSB0aGluZyB3YXMgdmVyeSBncmlldm91cyBpbiBBYnJhaGFtJ3Mgc2lnaHQgYmVjYXVzZSBvZiBoaXMgc29uLgpBbmQgR29kIHNhaWQgdW50byBBYnJhaGFtLCBMZXQgaXQgbm90IGJlIGdyaWV2b3VzIGluIHRoeSBzaWdodCBiZWNhdXNlIG9mIHRoZSBsYWQsIGFuZCBiZWNhdXNlIG9mIHRoeSBib25kd29tYW47IGluIGFsbCB0aGF0IFNhcmFoIGhhdGggc2FpZCB1bnRvIHRoZWUsIGhlYXJrZW4gdW50byBoZXIgdm9pY2U7IGZvciBpbiBJc2FhYyBzaGFsbCB0aHkgc2VlZCBiZSBjYWxsZWQuCkFuZCBhbHNvIG9mIHRoZSBzb24gb2YgdGhlIGJvbmR3b21hbiB3aWxsIEkgbWFrZSBhIG5hdGlvbiwgYmVjYXVzZSBoZSBpcyB0aHkgc2VlZC4KQW5kIEFicmFoYW0gcm9zZSB1cCBlYXJseSBpbiB0aGUgbW9ybmluZywgYW5kIHRvb2sgYnJlYWQsIGFuZCBhIGJvdHRsZSBvZiB3YXRlciwgYW5kIGdhdmUgaXQgdW50byBIYWdhciwgcHV0dGluZyBpdCBvbiBoZXIgc2hvdWxkZXIsIGFuZCB0aGUgY2hpbGQsIGFuZCBzZW50IGhlciBhd2F5OiBhbmQgc2hlIGRlcGFydGVkLCBhbmQgd2FuZGVyZWQgaW4gdGhlIHdpbGRlcm5lc3Mgb2YgQmVlcnNoZWJhLgpBbmQgdGhlIHdhdGVyIHdhcyBzcGVudCBpbiB0aGUgYm90dGxlLCBhbmQgc2hlIGNhc3QgdGhlIGNoaWxkIHVuZGVyIG9uZSBvZiB0aGUgc2hydWJzLgpBbmQgc2hlIHdlbnQsIGFuZCBzYXQgaGVyIGRvd24gb3ZlciBhZ2FpbnN0IGhpbSBhIGdvb2Qgd2F5IG9mZiwgYXMgaXQgd2VyZSBhIGJvdyBzaG90OiBmb3Igc2hlIHNhaWQsIExldCBtZSBub3Qgc2VlIHRoZSBkZWF0aCBvZiB0aGUgY2hpbGQuIEFuZCBzaGUgc2F0IG92ZXIgYWdhaW5zdCBoaW0sIGFuZCBsaWZ0IHVwIGhlciB2b2ljZSwgYW5kIHdlcHQuCkFuZCBHb2QgaGVhcmQgdGhlIHZvaWNlIG9mIHRoZSBsYWQ7IGFuZCB0aGUgYW5nZWwgb2YgR29kIGNhbGxlZCB0byBIYWdhciBvdXQgb2YgaGVhdmVuLCBhbmQgc2FpZCB1bnRvIGhlciwgV2hhdCBhaWxldGggdGhlZSwgSGFnYXI/IGZlYXIgbm90OyBmb3IgR29kIGhhdGggaGVhcmQgdGhlIHZvaWNlIG9mIHRoZSBsYWQgd2hlcmUgaGUgaXMuCkFyaXNlLCBsaWZ0IHVwIHRoZSBsYWQsIGFuZCBob2xkIGhpbSBpbiB0aGluZSBoYW5kOyBmb3IgSSB3aWxsIG1ha2UgaGltIGEgZ3JlYXQgbmF0aW9uLgpBbmQgR29kIG9wZW5lZCBoZXIgZXllcywgYW5kIHNoZSBzYXcgYSB3ZWxsIG9mIHdhdGVyOyBhbmQgc2hlIHdlbnQsIGFuZCBmaWxsZWQgdGhlIGJvdHRsZSB3aXRoIHdhdGVyLCBhbmQgZ2F2ZSB0aGUgbGFkIGRyaW5rLgpBbmQgR29kIHdhcyB3aXRoIHRoZSBsYWQ7IGFuZCBoZSBncmV3LCBhbmQgZHdlbHQgaW4gdGhlIHdpbGRlcm5lc3MsIGFuZCBiZWNhbWUgYW4gYXJjaGVyLgpBbmQgaGUgZHdlbHQgaW4gdGhlIHdpbGRlcm5lc3Mgb2YgUGFyYW46IGFuZCBoaXMgbW90aGVyIHRvb2sgaGltIGEgd2lmZSBvdXQgb2YgdGhlIGxhbmQgb2YgRWd5cHQuCkFuZCBpdCBjYW1lIHRvIHBhc3MgYXQgdGhhdCB0aW1lLCB0aGF0IEFiaW1lbGVjaCBhbmQgUGhpY2hvbCB0aGUgY2hpZWYgY2FwdGFpbiBvZiBoaXMgaG9zdCBzcGFrZSB1bnRvIEFicmFoYW0sIHNheWluZywgR29kIGlzIHdpdGggdGhlZSBpbiBhbGwgdGhhdCB0aG91IGRvZXN0OgpOb3cgdGhlcmVmb3JlIHN3ZWFyIHVudG8gbWUgaGVyZSBieSBHb2QgdGhhdCB0aG91IHdpbHQgbm90IGRlYWwgZmFsc2VseSB3aXRoIG1lLCBub3Igd2l0aCBteSBzb24sIG5vciB3aXRoIG15IHNvbidzIHNvbjogYnV0IGFjY29yZGluZyB0byB0aGUga2luZG5lc3MgdGhhdCBJIGhhdmUgZG9uZSB1bnRvIHRoZWUsIHRob3Ugc2hhbHQgZG8gdW50byBtZSwgYW5kIHRvIHRoZSBsYW5kIHdoZXJlaW4gdGhvdSBoYXN0IHNvam91cm5lZC4KQW5kIEFicmFoYW0gc2FpZCwgSSB3aWxsIHN3ZWFyLgpBbmQgQWJyYWhhbSByZXByb3ZlZCBBYmltZWxlY2ggYmVjYXVzZSBvZiBhIHdlbGwgb2Ygd2F0ZXIsIHdoaWNoIEFiaW1lbGVjaCdzIHNlcnZhbnRzIGhhZCB2aW9sZW50bHkgdGFrZW4gYXdheS4KQW5kIEFiaW1lbGVjaCBzYWlkLCBJIHdvdCBub3Qgd2hvIGhhdGggZG9uZSB0aGlzIHRoaW5nOyBuZWl0aGVyIGRpZHN0IHRob3UgdGVsbCBtZSwgbmVpdGhlciB5ZXQgaGVhcmQgSSBvZiBpdCwgYnV0IHRvIGRheS4KQW5kIEFicmFoYW0gdG9vayBzaGVlcCBhbmQgb3hlbiwgYW5kIGdhdmUgdGhlbSB1bnRvIEFiaW1lbGVjaDsgYW5kIGJvdGggb2YgdGhlbSBtYWRlIGEgY292ZW5hbnQuCkFuZCBBYnJhaGFtIHNldCBzZXZlbiBld2UgbGFtYnMgb2YgdGhlIGZsb2NrIGJ5IHRoZW1zZWx2ZXMuCkFuZCBBYmltZWxlY2ggc2FpZCB1bnRvIEFicmFoYW0sIFdoYXQgbWVhbiB0aGVzZSBzZXZlbiBld2UgbGFtYnMgd2hpY2ggdGhvdSBoYXN0IHNldCBieSB0aGVtc2VsdmVzPwpBbmQgaGUgc2FpZCwgRm9yIHRoZXNlIHNldmVuIGV3ZSBsYW1icyBzaGFsdCB0aG91IHRha2Ugb2YgbXkgaGFuZCwgdGhhdCB0aGV5IG1heSBiZSBhIHdpdG5lc3MgdW50byBtZSwgdGhhdCBJIGhhdmUgZGlnZ2VkIHRoaXMgd2VsbC4KV2hlcmVmb3JlIGhlIGNhbGxlZCB0aGF0IHBsYWNlIEJlZXJzaGViYTsgYmVjYXVzZSB0aGVyZSB0aGV5IHN3YXJlIGJvdGggb2YgdGhlbS4KVGh1cyB0aGV5IG1hZGUgYSBjb3ZlbmFudCBhdCBCZWVyc2hlYmE6IHRoZW4gQWJpbWVsZWNoIHJvc2UgdXAsIGFuZCBQaGljaG9sIHRoZSBjaGllZiBjYXB0YWluIG9mIGhpcyBob3N0LCBhbmQgdGhleSByZXR1cm5lZCBpbnRvIHRoZSBsYW5kIG9mIHRoZSBQaGlsaXN0aW5lcy4KQW5kIEFicmFoYW0gcGxhbnRlZCBhIGdyb3ZlIGluIEJlZXJzaGViYSwgYW5kIGNhbGxlZCB0aGVyZSBvbiB0aGUgbmFtZSBvZiB0aGUgTE9SRCwgdGhlIGV2ZXJsYXN0aW5nIEdvZC4KQW5kIEFicmFoYW0gc29qb3VybmVkIGluIHRoZSBQaGlsaXN0aW5lcycgbGFuZCBtYW55IGRheXMuCkFuZCBpdCBjYW1lIHRvIHBhc3MgYWZ0ZXIgdGhlc2UgdGhpbmdzLCB0aGF0IEdvZCBkaWQgdGVtcHQgQWJyYWhhbSwgYW5kIHNhaWQgdW50byBoaW0sIEFicmFoYW06IGFuZCBoZSBzYWlkLCBCZWhvbGQsIGhlcmUgSSBhbS4KQW5kIGhlIHNhaWQsIFRha2Ugbm93IHRoeSBzb24sIHRoaW5lIG9ubHkgc29uIElzYWFjLCB3aG9tIHRob3UgbG92ZXN0LCBhbmQgZ2V0IHRoZWUgaW50byB0aGUgbGFuZCBvZiBNb3JpYWg7IGFuZCBvZmZlciBoaW0gdGhlcmUgZm9yIGEgYnVybnQgb2ZmZXJpbmcgdXBvbiBvbmUgb2YgdGhlIG1vdW50YWlucyB3aGljaCBJIHdpbGwgdGVsbCB0aGVlIG9mLgpBbmQgQWJyYWhhbSByb3NlIHVwIGVhcmx5IGluIHRoZSBtb3JuaW5nLCBhbmQgc2FkZGxlZCBoaXMgYXNzLCBhbmQgdG9vayB0d28gb2YgaGlzIHlvdW5nIG1lbiB3aXRoIGhpbSwgYW5kIElzYWFjIGhpcyBzb24sIGFuZCBjbGF2ZSB0aGUgd29vZCBmb3IgdGhlIGJ1cm50IG9mZmVyaW5nLCBhbmQgcm9zZSB1cCwgYW5kIHdlbnQgdW50byB0aGUgcGxhY2Ugb2Ygd2hpY2ggR29kIGhhZCB0b2xkIGhpbS4KVGhlbiBvbiB0aGUgdGhpcmQgZGF5IEFicmFoYW0gbGlmdGVkIHVwIGhpcyBleWVzLCBhbmQgc2F3IHRoZSBwbGFjZSBhZmFyIG9mZi4KQW5kIEFicmFoYW0gc2FpZCB1bnRvIGhpcyB5b3VuZyBtZW4sIEFiaWRlIHllIGhlcmUgd2l0aCB0aGUgYXNzOyBhbmQgSSBhbmQgdGhlIGxhZCB3aWxsIGdvIHlvbmRlciBhbmQgd29yc2hpcCwgYW5kIGNvbWUgYWdhaW4gdG8geW91LgpBbmQgQWJyYWhhbSB0b29rIHRoZSB3b29kIG9mIHRoZSBidXJudCBvZmZlcmluZywgYW5kIGxhaWQgaXQgdXBvbiBJc2FhYyBoaXMgc29uOyBhbmQgaGUgdG9vayB0aGUgZmlyZSBpbiBoaXMgaGFuZCwgYW5kIGEga25pZmU7IGFuZCB0aGV5IHdlbnQgYm90aCBvZiB0aGVtIHRvZ2V0aGVyLgpBbmQgSXNhYWMgc3Bha2UgdW50byBBYnJhaGFtIGhpcyBmYXRoZXIsIGFuZCBzYWlkLCBNeSBmYXRoZXI6IGFuZCBoZSBzYWlkLCBIZXJlIGFtIEksIG15IHNvbi4gQW5kIGhlIHNhaWQsIEJlaG9sZCB0aGUgZmlyZSBhbmQgdGhlIHdvb2Q6IGJ1dCB3aGVyZSBpcyB0aGUgbGFtYiBmb3IgYSBidXJudCBvZmZlcmluZz8KQW5kIEFicmFoYW0gc2FpZCwgTXkgc29uLCBHb2Qgd2lsbCBwcm92aWRlIGhpbXNlbGYgYSBsYW1iIGZvciBhIGJ1cm50IG9mZmVyaW5nOiBzbyB0aGV5IHdlbnQgYm90aCBvZiB0aGVtIHRvZ2V0aGVyLgpBbmQgdGhleSBjYW1lIHRvIHRoZSBwbGFjZSB3aGljaCBHb2QgaGFkIHRvbGQgaGltIG9mOyBhbmQgQWJyYWhhbSBidWlsdCBhbiBhbHRhciB0aGVyZSwgYW5kIGxhaWQgdGhlIHdvb2QgaW4gb3JkZXIsIGFuZCBib3VuZCBJc2FhYyBoaXMgc29uLCBhbmQgbGFpZCBoaW0gb24gdGhlIGFsdGFyIHVwb24gdGhlIHdvb2QuCkFuZCBBYnJhaGFtIHN0cmV0Y2hlZCBmb3J0aCBoaXMgaGFuZCwgYW5kIHRvb2sgdGhlIGtuaWZlIHRvIHNsYXkgaGlzIHNvbi4KQW5kIHRoZSBhbmdlbCBvZiB0aGUgTE9SRCBjYWxsZWQgdW50byBoaW0gb3V0IG9mIGhlYXZlbiwgYW5kIHNhaWQsIEFicmFoYW0sIEFicmFoYW06IGFuZCBoZSBzYWlkLCBIZXJlIGFtIEkuCkFuZCBoZSBzYWlkLCBMYXkgbm90IHRoaW5lIGhhbmQgdXBvbiB0aGUgbGFkLCBuZWl0aGVyIGRvIHRob3UgYW55IHRoaW5nIHVudG8gaGltOiBmb3Igbm93IEkga25vdyB0aGF0IHRob3UgZmVhcmVzdCBHb2QsIHNlZWluZyB0aG91IGhhc3Qgbm90IHdpdGhoZWxkIHRoeSBzb24sIHRoaW5lIG9ubHkgc29uIGZyb20gbWUuCkFuZCBBYnJhaGFtIGxpZnRlZCB1cCBoaXMgZXllcywgYW5kIGxvb2tlZCwgYW5kIGJlaG9sZCBiZWhpbmQgaGltIGEgcmFtIGNhdWdodCBpbiBhIHRoaWNrZXQgYnkgaGlzIGhvcm5zOiBhbmQgQWJyYWhhbSB3ZW50IGFuZCB0b29rIHRoZSByYW0sIGFuZCBvZmZlcmVkIGhpbSB1cCBmb3IgYSBidXJudCBvZmZlcmluZyBpbiB0aGUgc3RlYWQgb2YgaGlzIHNvbi4KQW5kIEFicmFoYW0gY2FsbGVkIHRoZSBuYW1lIG9mIHRoYXQgcGxhY2UgSmVob3ZhaGppcmVoOiBhcyBpdCBpcyBzYWlkIHRvIHRoaXMgZGF5LCBJbiB0aGUgbW91bnQgb2YgdGhlIExPUkQgaXQgc2hhbGwgYmUgc2Vlbi4KQW5kIHRoZSBhbmdlbCBvZiB0aGUgTE9SRCBjYWxsZWQgdW50byBBYnJhaGFtIG91dCBvZiBoZWF2ZW4gdGhlIHNlY29uZCB0aW1lLApBbmQgc2FpZCwgQnkgbXlzZWxmIGhhdmUgSSBzd29ybiwgc2FpdGggdGhlIExPUkQsIGZvciBiZWNhdXNlIHRob3UgaGFzdCBkb25lIHRoaXMgdGhpbmcsIGFuZCBoYXN0IG5vdCB3aXRoaGVsZCB0aHkgc29uLCB0aGluZSBvbmx5IHNvbjoKVGhhdCBpbiBibGVzc2luZyBJIHdpbGwgYmxlc3MgdGhlZSwgYW5kIGluIG11bHRpcGx5aW5nIEkgd2lsbCBtdWx0aXBseSB0aHkgc2VlZCBhcyB0aGUgc3RhcnMgb2YgdGhlIGhlYXZlbiwgYW5kIGFzIHRoZSBzYW5kIHdoaWNoIGlzIHVwb24gdGhlIHNlYSBzaG9yZTsgYW5kIHRoeSBzZWVkIHNoYWxsIHBvc3Nlc3MgdGhlIGdhdGUgb2YgaGlzIGVuZW1pZXM7CkFuZCBpbiB0aHkgc2VlZCBzaGFsbCBhbGwgdGhlIG5hdGlvbnMgb2YgdGhlIGVhcnRoIGJlIGJsZXNzZWQ7IGJlY2F1c2UgdGhvdSBoYXN0IG9iZXllZCBteSB2b2ljZS4KU28gQWJyYWhhbSByZXR1cm5lZCB1bnRvIGhpcyB5b3VuZyBtZW4sIGFuZCB0aGV5IHJvc2UgdXAgYW5kIHdlbnQgdG9nZXRoZXIgdG8gQmVlcnNoZWJhOyBhbmQgQWJyYWhhbSBkd2VsdCBhdCBCZWVyc2hlYmEuCkFuZCBpdCBjYW1lIHRvIHBhc3MgYWZ0ZXIgdGhlc2UgdGhpbmdzLCB0aGF0IGl0IHdhcyB0b2xkIEFicmFoYW0sIHNheWluZywgQmVob2xkLCBNaWxjYWgsIHNoZSBoYXRoIGFsc28gYm9ybiBjaGlsZHJlbiB1bnRvIHRoeSBicm90aGVyIE5haG9yOwpIdXogaGlzIGZpcnN0Ym9ybiwgYW5kIEJ1eiBoaXMgYnJvdGhlciwgYW5kIEtlbXVlbCB0aGUgZmF0aGVyIG9mIEFyYW0sCkFuZCBDaGVzZWQsIGFuZCBIYXpvLCBhbmQgUGlsZGFzaCwgYW5kIEppZGxhcGgsIGFuZCBCZXRodWVsLgpBbmQgQmV0aHVlbCBiZWdhdCBSZWJla2FoOiB0aGVzZSBlaWdodCBNaWxjYWggZGlkIGJlYXIgdG8gTmFob3IsIEFicmFoYW0ncyBicm90aGVyLgpBbmQgaGlzIGNvbmN1YmluZSwgd2hvc2UgbmFtZSB3YXMgUmV1bWFoLCBzaGUgYmFyZSBhbHNvIFRlYmFoLCBhbmQgR2FoYW0sIGFuZCBUaGFoYXNoLCBhbmQgTWFhY2hhaC4KQW5kIFNhcmFoIHdhcyBhbiBodW5kcmVkIGFuZCBzZXZlbiBhbmQgdHdlbnR5IHllYXJzIG9sZDogdGhlc2Ugd2VyZSB0aGUgeWVhcnMgb2YgdGhlIGxpZmUgb2YgU2FyYWguCkFuZCBTYXJhaCBkaWVkIGluIEtpcmphdGhhcmJhOyB0aGUgc2FtZSBpcyBIZWJyb24gaW4gdGhlIGxhbmQgb2YgQ2FuYWFuOiBhbmQgQWJyYWhhbSBjYW1lIHRvIG1vdXJuIGZvciBTYXJhaCwgYW5kIHRvIHdlZXAgZm9yIGhlci4KQW5kIEFicmFoYW0gc3Rvb2QgdXAgZnJvbSBiZWZvcmUgaGlzIGRlYWQsIGFuZCBzcGFrZSB1bnRvIHRoZSBzb25zIG9mIEhldGgsIHNheWluZywKSSBhbSBhIHN0cmFuZ2VyIGFuZCBhIHNvam91cm5lciB3aXRoIHlvdTogZ2l2ZSBtZSBhIHBvc3Nlc3Npb24gb2YgYSBidXJ5aW5ncGxhY2Ugd2l0aCB5b3UsIHRoYXQgSSBtYXkgYnVyeSBteSBkZWFkIG91dCBvZiBteSBzaWdodC4KQW5kIHRoZSBjaGlsZHJlbiBvZiBIZXRoIGFuc3dlcmVkIEFicmFoYW0sIHNheWluZyB1bnRvIGhpbSwKSGVhciB1cywgbXkgbG9yZDogdGhvdSBhcnQgYSBtaWdodHkgcHJpbmNlIGFtb25nIHVzOiBpbiB0aGUgY2hvaWNlIG9mIG91ciBzZXB1bGNocmVzIGJ1cnkgdGh5IGRlYWQ7IG5vbmUgb2YgdXMgc2hhbGwgd2l0aGhvbGQgZnJvbSB0aGVlIGhpcyBzZXB1bGNocmUsIGJ1dCB0aGF0IHRob3UgbWF5ZXN0IGJ1cnkgdGh5IGRlYWQuCkFuZCBBYnJhaGFtIHN0b29kIHVwLCBhbmQgYm93ZWQgaGltc2VsZiB0byB0aGUgcGVvcGxlIG9mIHRoZSBsYW5kLCBldmVuIHRvIHRoZSBjaGlsZHJlbiBvZiBIZXRoLgpBbmQgaGUgY29tbXVuZWQgd2l0aCB0aGVtLCBzYXlpbmcsIElmIGl0IGJlIHlvdXIgbWluZCB0aGF0IEkgc2hvdWxkIGJ1cnkgbXkgZGVhZCBvdXQgb2YgbXkgc2lnaHQ7IGhlYXIgbWUsIGFuZCBpbnRyZWF0IGZvciBtZSB0byBFcGhyb24gdGhlIHNvbiBvZiBab2hhciwKVGhhdCBoZSBtYXkgZ2l2ZSBtZSB0aGUgY2F2ZSBvZiBNYWNocGVsYWgsIHdoaWNoIGhlIGhhdGgsIHdoaWNoIGlzIGluIHRoZSBlbmQgb2YgaGlzIGZpZWxkOyBmb3IgYXMgbXVjaCBtb25leSBhcyBpdCBpcyB3b3J0aCBoZSBzaGFsbCBnaXZlIGl0IG1lIGZvciBhIHBvc3Nlc3Npb24gb2YgYSBidXJ5aW5ncGxhY2UgYW1vbmdzdCB5b3UuCkFuZCBFcGhyb24gZHdlbHQgYW1vbmcgdGhlIGNoaWxkcmVuIG9mIEhldGg6IGFuZCBFcGhyb24gdGhlIEhpdHRpdGUgYW5zd2VyZWQgQWJyYWhhbSBpbiB0aGUgYXVkaWVuY2Ugb2YgdGhlIGNoaWxkcmVuIG9mIEhldGgsIGV2ZW4gb2YgYWxsIHRoYXQgd2VudCBpbiBhdCB0aGUgZ2F0ZSBvZiBoaXMgY2l0eSwgc2F5aW5nLApOYXksIG15IGxvcmQsIGhlYXIgbWU6IHRoZSBmaWVsZCBnaXZlIEkgdGhlZSwgYW5kIHRoZSBjYXZlIHRoYXQgaXMgdGhlcmVpbiwgSSBnaXZlIGl0IHRoZWU7IGluIHRoZSBwcmVzZW5jZSBvZiB0aGUgc29ucyBvZiBteSBwZW9wbGUgZ2l2ZSBJIGl0IHRoZWU6IGJ1cnkgdGh5IGRlYWQuCkFuZCBBYnJhaGFtIGJvd2VkIGRvd24gaGltc2VsZiBiZWZvcmUgdGhlIHBlb3BsZSBvZiB0aGUgbGFuZC4KQW5kIGhlIHNwYWtlIHVudG8gRXBocm9uIGluIHRoZSBhdWRpZW5jZSBvZiB0aGUgcGVvcGxlIG9mIHRoZSBsYW5kLCBzYXlpbmcsIEJ1dCBpZiB0aG91IHdpbHQgZ2l2ZSBpdCwgSSBwcmF5IHRoZWUsIGhlYXIgbWU6IEkgd2lsbCBnaXZlIHRoZWUgbW9uZXkgZm9yIHRoZSBmaWVsZDsgdGFrZSBpdCBvZiBtZSwgYW5kIEkgd2lsbCBidXJ5IG15IGRlYWQgdGhlcmUuCkFuZCBFcGhyb24gYW5zd2VyZWQgQWJyYWhhbSwgc2F5aW5nIHVudG8gaGltLApNeSBsb3JkLCBoZWFya2VuIHVudG8gbWU6IHRoZSBsYW5kIGlzIHdvcnRoIGZvdXIgaHVuZHJlZCBzaGVrZWxzIG9mIHNpbHZlcjsgd2hhdCBpcyB0aGF0IGJldHdpeHQgbWUgYW5kIHRoZWU/IGJ1cnkgdGhlcmVmb3JlIHRoeSBkZWFkLgpBbmQgQWJyYWhhbSBoZWFya2VuZWQgdW50byBFcGhyb247IGFuZCBBYnJhaGFtIHdlaWdoZWQgdG8gRXBocm9uIHRoZSBzaWx2ZXIsIHdoaWNoIGhlIGhhZCBuYW1lZCBpbiB0aGUgYXVkaWVuY2Ugb2YgdGhlIHNvbnMgb2YgSGV0aCwgZm91ciBodW5kcmVkIHNoZWtlbHMgb2Ygc2lsdmVyLCBjdXJyZW50IG1vbmV5IHdpdGggdGhlIG1lcmNoYW50LgpBbmQgdGhlIGZpZWxkIG9mIEVwaHJvbiB3aGljaCB3YXMgaW4gTWFjaHBlbGFoLCB3aGljaCB3YXMgYmVmb3JlIE1hbXJlLCB0aGUgZmllbGQsIGFuZCB0aGUgY2F2ZSB3aGljaCB3YXMgdGhlcmVpbiwgYW5kIGFsbCB0aGUgdHJlZXMgdGhhdCB3ZXJlIGluIHRoZSBmaWVsZCwgdGhhdCB3ZXJlIGluIGFsbCB0aGUgYm9yZGVycyByb3VuZCBhYm91dCwgd2VyZSBtYWRlIHN1cmUKVW50byBBYnJhaGFtIGZvciBhIHBvc3Nlc3Npb24gaW4gdGhlIHByZXNlbmNlIG9mIHRoZSBjaGlsZHJlbiBvZiBIZXRoLCBiZWZvcmUgYWxsIHRoYXQgd2VudCBpbiBhdCB0aGUgZ2F0ZSBvZiBoaXMgY2l0eS4KQW5kIGFmdGVyIHRoaXMsIEFicmFoYW0gYnVyaWVkIFNhcmFoIGhpcyB3aWZlIGluIHRoZSBjYXZlIG9mIHRoZSBmaWVsZCBvZiBNYWNocGVsYWggYmVmb3JlIE1hbXJlOiB0aGUgc2FtZSBpcyBIZWJyb24gaW4gdGhlIGxhbmQgb2YgQ2FuYWFuLgpBbmQgdGhlIGZpZWxkLCBhbmQgdGhlIGNhdmUgdGhhdCBpcyB0aGVyZWluLCB3ZXJlIG1hZGUgc3VyZSB1bnRvIEFicmFoYW0gZm9yIGEgcG9zc2Vzc2lvbiBvZiBhIGJ1cnlpbmdwbGFjZSBieSB0aGUgc29ucyBvZiBIZXRoLgpBbmQgQWJyYWhhbSB3YXMgb2xkLCBhbmQgd2VsbCBzdHJpY2tlbiBpbiBhZ2U6IGFuZCB0aGUgTE9SRCBoYWQgYmxlc3NlZCBBYnJhaGFtIGluIGFsbCB0aGluZ3MuCkFuZCBBYnJhaGFtIHNhaWQgdW50byBoaXMgZWxkZXN0IHNlcnZhbnQgb2YgaGlzIGhvdXNlLCB0aGF0IHJ1bGVkIG92ZXIgYWxsIHRoYXQgaGUgaGFkLCBQdXQsIEkgcHJheSB0aGVlLCB0aHkgaGFuZCB1bmRlciBteSB0aGlnaDoKQW5kIEkgd2lsbCBtYWtlIHRoZWUgc3dlYXIgYnkgdGhlIExPUkQsIHRoZSBHb2Qgb2YgaGVhdmVuLCBhbmQgdGhlIEdvZCBvZiB0aGUgZWFydGgsIHRoYXQgdGhvdSBzaGFsdCBub3QgdGFrZSBhIHdpZmUgdW50byBteSBzb24gb2YgdGhlIGRhdWdodGVycyBvZiB0aGUgQ2FuYWFuaXRlcywgYW1vbmcgd2hvbSBJIGR3ZWxsOgpCdXQgdGhvdSBzaGFsdCBnbyB1bnRvIG15IGNvdW50cnksIGFuZCB0byBteSBraW5kcmVkLCBhbmQgdGFrZSBhIHdpZmUgdW50byBteSBzb24gSXNhYWMuCkFuZCB0aGUgc2VydmFudCBzYWlkIHVudG8gaGltLCBQZXJhZHZlbnR1cmUgdGhlIHdvbWFuIHdpbGwgbm90IGJlIHdpbGxpbmcgdG8gZm9sbG93IG1lIHVudG8gdGhpcyBsYW5kOiBtdXN0IEkgbmVlZHMgYnJpbmcgdGh5IHNvbiBhZ2FpbiB1bnRvIHRoZSBsYW5kIGZyb20gd2hlbmNlIHRob3UgY2FtZXN0PwpBbmQgQWJyYWhhbSBzYWlkIHVudG8gaGltLCBCZXdhcmUgdGhvdSB0aGF0IHRob3UgYnJpbmcgbm90IG15IHNvbiB0aGl0aGVyIGFnYWluLgpUaGUgTE9SRCBHb2Qgb2YgaGVhdmVuLCB3aGljaCB0b29rIG1lIGZyb20gbXkgZmF0aGVyJ3MgaG91c2UsIGFuZCBmcm9tIHRoZSBsYW5kIG9mIG15IGtpbmRyZWQsIGFuZCB3aGljaCBzcGFrZSB1bnRvIG1lLCBhbmQgdGhhdCBzd2FyZSB1bnRvIG1lLCBzYXlpbmcsIFVudG8gdGh5IHNlZWQgd2lsbCBJIGdpdmUgdGhpcyBsYW5kOyBoZSBzaGFsbCBzZW5kIGhpcyBhbmdlbCBiZWZvcmUgdGhlZSwgYW5kIHRob3Ugc2hhbHQgdGFrZSBhIHdpZmUgdW50byBteSBzb24gZnJvbSB0aGVuY2UuCkFuZCBpZiB0aGUgd29tYW4gd2lsbCBub3QgYmUgd2lsbGluZyB0byBmb2xsb3cgdGhlZSwgdGhlbiB0aG91IHNoYWx0IGJlIGNsZWFyIGZyb20gdGhpcyBteSBvYXRoOiBvbmx5IGJyaW5nIG5vdCBteSBzb24gdGhpdGhlciBhZ2Fpbi4KQW5kIHRoZSBzZXJ2YW50IHB1dCBoaXMgaGFuZCB1bmRlciB0aGUgdGhpZ2ggb2YgQWJyYWhhbSBoaXMgbWFzdGVyLCBhbmQgc3dhcmUgdG8gaGltIGNvbmNlcm5pbmcgdGhhdCBtYXR0ZXIuCkFuZCB0aGUgc2VydmFudCB0b29rIHRlbiBjYW1lbHMgb2YgdGhlIGNhbWVscyBvZiBoaXMgbWFzdGVyLCBhbmQgZGVwYXJ0ZWQ7IGZvciBhbGwgdGhlIGdvb2RzIG9mIGhpcyBtYXN0ZXIgd2VyZSBpbiBoaXMgaGFuZDogYW5kIGhlIGFyb3NlLCBhbmQgd2VudCB0byBNZXNvcG90YW1pYSwgdW50byB0aGUgY2l0eSBvZiBOYWhvci4KQW5kIGhlIG1hZGUgaGlzIGNhbWVscyB0byBrbmVlbCBkb3duIHdpdGhvdXQgdGhlIGNpdHkgYnkgYSB3ZWxsIG9mIHdhdGVyIGF0IHRoZSB0aW1lIG9mIHRoZSBldmVuaW5nLCBldmVuIHRoZSB0aW1lIHRoYXQgd29tZW4gZ28gb3V0IHRvIGRyYXcgd2F0ZXIuCkFuZCBoZSBzYWlkIE8gTE9SRCBHb2Qgb2YgbXkgbWFzdGVyIEFicmFoYW0sIEkgcHJheSB0aGVlLCBzZW5kIG1lIGdvb2Qgc3BlZWQgdGhpcyBkYXksIGFuZCBzaGV3IGtpbmRuZXNzIHVudG8gbXkgbWFzdGVyIEFicmFoYW0uCkJlaG9sZCwgSSBzdGFuZCBoZXJlIGJ5IHRoZSB3ZWxsIG9mIHdhdGVyOyBhbmQgdGhlIGRhdWdodGVycyBvZiB0aGUgbWVuIG9mIHRoZSBjaXR5IGNvbWUgb3V0IHRvIGRyYXcgd2F0ZXI6CkFuZCBsZXQgaXQgY29tZSB0byBwYXNzLCB0aGF0IHRoZSBkYW1zZWwgdG8gd2hvbSBJIHNoYWxsIHNheSwgTGV0IGRvd24gdGh5IHBpdGNoZXIsIEkgcHJheSB0aGVlLCB0aGF0IEkgbWF5IGRyaW5rOyBhbmQgc2hlIHNoYWxsIHNheSwgRHJpbmssIGFuZCBJIHdpbGwgZ2l2ZSB0aHkgY2FtZWxzIGRyaW5rIGFsc286IGxldCB0aGUgc2FtZSBiZSBzaGUgdGhhdCB0aG91IGhhc3QgYXBwb2ludGVkIGZvciB0aHkgc2VydmFudCBJc2FhYzsgYW5kIHRoZXJlYnkgc2hhbGwgSSBrbm93IHRoYXQgdGhvdSBoYXN0IHNoZXdlZCBraW5kbmVzcyB1bnRvIG15IG1hc3Rlci4KQW5kIGl0IGNhbWUgdG8gcGFzcywgYmVmb3JlIGhlIGhhZCBkb25lIHNwZWFraW5nLCB0aGF0LCBiZWhvbGQsIFJlYmVrYWggY2FtZSBvdXQsIHdobyB3YXMgYm9ybiB0byBCZXRodWVsLCBzb24gb2YgTWlsY2FoLCB0aGUgd2lmZSBvZiBOYWhvciwgQWJyYWhhbSdzIGJyb3RoZXIsIHdpdGggaGVyIHBpdGNoZXIgdXBvbiBoZXIgc2hvdWxkZXIuCkFuZCB0aGUgZGFtc2VsIHdhcyB2ZXJ5IGZhaXIgdG8gbG9vayB1cG9uLCBhIHZpcmdpbiwgbmVpdGhlciBoYWQgYW55IG1hbiBrbm93biBoZXI6IGFuZCBzaGUgd2VudCBkb3duIHRvIHRoZSB3ZWxsLCBhbmQgZmlsbGVkIGhlciBwaXRjaGVyLCBhbmQgY2FtZSB1cC4KQW5kIHRoZSBzZXJ2YW50IHJhbiB0byBtZWV0IGhlciwgYW5kIHNhaWQsIExldCBtZSwgSSBwcmF5IHRoZWUsIGRyaW5rIGEgbGl0dGxlIHdhdGVyIG9mIHRoeSBwaXRjaGVyLgpBbmQgc2hlIHNhaWQsIERyaW5rLCBteSBsb3JkOiBhbmQgc2hlIGhhc3RlZCwgYW5kIGxldCBkb3duIGhlciBwaXRjaGVyIHVwb24gaGVyIGhhbmQsIGFuZCBnYXZlIGhpbSBkcmluay4KQW5kIHdoZW4gc2hlIGhhZCBkb25lIGdpdmluZyBoaW0gZHJpbmssIHNoZSBzYWlkLCBJIHdpbGwgZHJhdyB3YXRlciBmb3IgdGh5IGNhbWVscyBhbHNvLCB1bnRpbCB0aGV5IGhhdmUgZG9uZSBkcmlua2luZy4KQW5kIHNoZSBoYXN0ZWQsIGFuZCBlbXB0aWVkIGhlciBwaXRjaGVyIGludG8gdGhlIHRyb3VnaCwgYW5kIHJhbiBhZ2FpbiB1bnRvIHRoZSB3ZWxsIHRvIGRyYXcgd2F0ZXIsIGFuZCBkcmV3IGZvciBhbGwgaGlzIGNhbWVscy4KQW5kIHRoZSBtYW4gd29uZGVyaW5nIGF0IGhlciBoZWxkIGhpcyBwZWFjZSwgdG8gd2l0IHdoZXRoZXIgdGhlIExPUkQgaGFkIG1hZGUgaGlzIGpvdXJuZXkgcHJvc3Blcm91cyBvciBub3QuCkFuZCBpdCBjYW1lIHRvIHBhc3MsIGFzIHRoZSBjYW1lbHMgaGFkIGRvbmUgZHJpbmtpbmcsIHRoYXQgdGhlIG1hbiB0b29rIGEgZ29sZGVuIGVhcnJpbmcgb2YgaGFsZiBhIHNoZWtlbCB3ZWlnaHQsIGFuZCB0d28gYnJhY2VsZXRzIGZvciBoZXIgaGFuZHMgb2YgdGVuIHNoZWtlbHMgd2VpZ2h0IG9mIGdvbGQ7CkFuZCBzYWlkLCBXaG9zZSBkYXVnaHRlciBhcnQgdGhvdT8gdGVsbCBtZSwgSSBwcmF5IHRoZWU6IGlzIHRoZXJlIHJvb20gaW4gdGh5IGZhdGhlcidzIGhvdXNlIGZvciB1cyB0byBsb2RnZSBpbj8KQW5kIHNoZSBzYWlkIHVudG8gaGltLCBJIGFtIHRoZSBkYXVnaHRlciBvZiBCZXRodWVsIHRoZSBzb24gb2YgTWlsY2FoLCB3aGljaCBzaGUgYmFyZSB1bnRvIE5haG9yLgpTaGUgc2FpZCBtb3Jlb3ZlciB1bnRvIGhpbSwgV2UgaGF2ZSBib3RoIHN0cmF3IGFuZCBwcm92ZW5kZXIgZW5vdWdoLCBhbmQgcm9vbSB0byBsb2RnZSBpbi4KQW5kIHRoZSBtYW4gYm93ZWQgZG93biBoaXMgaGVhZCwgYW5kIHdvcnNoaXBwZWQgdGhlIExPUkQuCkFuZCBoZSBzYWlkLCBCbGVzc2VkIGJlIHRoZSBMT1JEIEdvZCBvZiBteSBtYXN0ZXIgQWJyYWhhbSwgd2hvIGhhdGggbm90IGxlZnQgZGVzdGl0dXRlIG15IG1hc3RlciBvZiBoaXMgbWVyY3kgYW5kIGhpcyB0cnV0aDogSSBiZWluZyBpbiB0aGUgd2F5LCB0aGUgTE9SRCBsZWQgbWUgdG8gdGhlIGhvdXNlIG9mIG15IG1hc3RlcidzIGJyZXRocmVuLgpBbmQgdGhlIGRhbXNlbCByYW4sIGFuZCB0b2xkIHRoZW0gb2YgaGVyIG1vdGhlcidzIGhvdXNlIHRoZXNlIHRoaW5ncy4KQW5kIFJlYmVrYWggaGFkIGEgYnJvdGhlciwgYW5kIGhpcyBuYW1lIHdhcyBMYWJhbjogYW5kIExhYmFuIHJhbiBvdXQgdW50byB0aGUgbWFuLCB1bnRvIHRoZSB3ZWxsLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIGhlIHNhdyB0aGUgZWFycmluZyBhbmQgYnJhY2VsZXRzIHVwb24gaGlzIHNpc3RlcidzIGhhbmRzLCBhbmQgd2hlbiBoZSBoZWFyZCB0aGUgd29yZHMgb2YgUmViZWthaCBoaXMgc2lzdGVyLCBzYXlpbmcsIFRodXMgc3Bha2UgdGhlIG1hbiB1bnRvIG1lOyB0aGF0IGhlIGNhbWUgdW50byB0aGUgbWFuOyBhbmQsIGJlaG9sZCwgaGUgc3Rvb2QgYnkgdGhlIGNhbWVscyBhdCB0aGUgd2VsbC4KQW5kIGhlIHNhaWQsIENvbWUgaW4sIHRob3UgYmxlc3NlZCBvZiB0aGUgTE9SRDsgd2hlcmVmb3JlIHN0YW5kZXN0IHRob3Ugd2l0aG91dD8gZm9yIEkgaGF2ZSBwcmVwYXJlZCB0aGUgaG91c2UsIGFuZCByb29tIGZvciB0aGUgY2FtZWxzLgpBbmQgdGhlIG1hbiBjYW1lIGludG8gdGhlIGhvdXNlOiBhbmQgaGUgdW5naXJkZWQgaGlzIGNhbWVscywgYW5kIGdhdmUgc3RyYXcgYW5kIHByb3ZlbmRlciBmb3IgdGhlIGNhbWVscywgYW5kIHdhdGVyIHRvIHdhc2ggaGlzIGZlZXQsIGFuZCB0aGUgbWVuJ3MgZmVldCB0aGF0IHdlcmUgd2l0aCBoaW0uCkFuZCB0aGVyZSB3YXMgc2V0IG1lYXQgYmVmb3JlIGhpbSB0byBlYXQ6IGJ1dCBoZSBzYWlkLCBJIHdpbGwgbm90IGVhdCwgdW50aWwgSSBoYXZlIHRvbGQgbWluZSBlcnJhbmQuIEFuZCBoZSBzYWlkLCBTcGVhayBvbi4KQW5kIGhlIHNhaWQsIEkgYW0gQWJyYWhhbSdzIHNlcnZhbnQuCkFuZCB0aGUgTE9SRCBoYXRoIGJsZXNzZWQgbXkgbWFzdGVyIGdyZWF0bHk7IGFuZCBoZSBpcyBiZWNvbWUgZ3JlYXQ6IGFuZCBoZSBoYXRoIGdpdmVuIGhpbSBmbG9ja3MsIGFuZCBoZXJkcywgYW5kIHNpbHZlciwgYW5kIGdvbGQsIGFuZCBtZW5zZXJ2YW50cywgYW5kIG1haWRzZXJ2YW50cywgYW5kIGNhbWVscywgYW5kIGFzc2VzLgpBbmQgU2FyYWggbXkgbWFzdGVyJ3Mgd2lmZSBiYXJlIGEgc29uIHRvIG15IG1hc3RlciB3aGVuIHNoZSB3YXMgb2xkOiBhbmQgdW50byBoaW0gaGF0aCBoZSBnaXZlbiBhbGwgdGhhdCBoZSBoYXRoLgpBbmQgbXkgbWFzdGVyIG1hZGUgbWUgc3dlYXIsIHNheWluZywgVGhvdSBzaGFsdCBub3QgdGFrZSBhIHdpZmUgdG8gbXkgc29uIG9mIHRoZSBkYXVnaHRlcnMgb2YgdGhlIENhbmFhbml0ZXMsIGluIHdob3NlIGxhbmQgSSBkd2VsbDoKQnV0IHRob3Ugc2hhbHQgZ28gdW50byBteSBmYXRoZXIncyBob3VzZSwgYW5kIHRvIG15IGtpbmRyZWQsIGFuZCB0YWtlIGEgd2lmZSB1bnRvIG15IHNvbi4KQW5kIEkgc2FpZCB1bnRvIG15IG1hc3RlciwgUGVyYWR2ZW50dXJlIHRoZSB3b21hbiB3aWxsIG5vdCBmb2xsb3cgbWUuCkFuZCBoZSBzYWlkIHVudG8gbWUsIFRoZSBMT1JELCBiZWZvcmUgd2hvbSBJIHdhbGssIHdpbGwgc2VuZCBoaXMgYW5nZWwgd2l0aCB0aGVlLCBhbmQgcHJvc3BlciB0aHkgd2F5OyBhbmQgdGhvdSBzaGFsdCB0YWtlIGEgd2lmZSBmb3IgbXkgc29uIG9mIG15IGtpbmRyZWQsIGFuZCBvZiBteSBmYXRoZXIncyBob3VzZToKVGhlbiBzaGFsdCB0aG91IGJlIGNsZWFyIGZyb20gdGhpcyBteSBvYXRoLCB3aGVuIHRob3UgY29tZXN0IHRvIG15IGtpbmRyZWQ7IGFuZCBpZiB0aGV5IGdpdmUgbm90IHRoZWUgb25lLCB0aG91IHNoYWx0IGJlIGNsZWFyIGZyb20gbXkgb2F0aC4KQW5kIEkgY2FtZSB0aGlzIGRheSB1bnRvIHRoZSB3ZWxsLCBhbmQgc2FpZCwgTyBMT1JEIEdvZCBvZiBteSBtYXN0ZXIgQWJyYWhhbSwgaWYgbm93IHRob3UgZG8gcHJvc3BlciBteSB3YXkgd2hpY2ggSSBnbzoKQmVob2xkLCBJIHN0YW5kIGJ5IHRoZSB3ZWxsIG9mIHdhdGVyOyBhbmQgaXQgc2hhbGwgY29tZSB0byBwYXNzLCB0aGF0IHdoZW4gdGhlIHZpcmdpbiBjb21ldGggZm9ydGggdG8gZHJhdyB3YXRlciwgYW5kIEkgc2F5IHRvIGhlciwgR2l2ZSBtZSwgSSBwcmF5IHRoZWUsIGEgbGl0dGxlIHdhdGVyIG9mIHRoeSBwaXRjaGVyIHRvIGRyaW5rOwpBbmQgc2hlIHNheSB0byBtZSwgQm90aCBkcmluayB0aG91LCBhbmQgSSB3aWxsIGFsc28gZHJhdyBmb3IgdGh5IGNhbWVsczogbGV0IHRoZSBzYW1lIGJlIHRoZSB3b21hbiB3aG9tIHRoZSBMT1JEIGhhdGggYXBwb2ludGVkIG91dCBmb3IgbXkgbWFzdGVyJ3Mgc29uLgpBbmQgYmVmb3JlIEkgaGFkIGRvbmUgc3BlYWtpbmcgaW4gbWluZSBoZWFydCwgYmVob2xkLCBSZWJla2FoIGNhbWUgZm9ydGggd2l0aCBoZXIgcGl0Y2hlciBvbiBoZXIgc2hvdWxkZXI7IGFuZCBzaGUgd2VudCBkb3duIHVudG8gdGhlIHdlbGwsIGFuZCBkcmV3IHdhdGVyOiBhbmQgSSBzYWlkIHVudG8gaGVyLCBMZXQgbWUgZHJpbmssIEkgcHJheSB0aGVlLgpBbmQgc2hlIG1hZGUgaGFzdGUsIGFuZCBsZXQgZG93biBoZXIgcGl0Y2hlciBmcm9tIGhlciBzaG91bGRlciwgYW5kIHNhaWQsIERyaW5rLCBhbmQgSSB3aWxsIGdpdmUgdGh5IGNhbWVscyBkcmluayBhbHNvOiBzbyBJIGRyYW5rLCBhbmQgc2hlIG1hZGUgdGhlIGNhbWVscyBkcmluayBhbHNvLgpBbmQgSSBhc2tlZCBoZXIsIGFuZCBzYWlkLCBXaG9zZSBkYXVnaHRlciBhcnQgdGhvdT8gQW5kIHNoZSBzYWlkLCB0aGUgZGF1Z2h0ZXIgb2YgQmV0aHVlbCwgTmFob3IncyBzb24sIHdob20gTWlsY2FoIGJhcmUgdW50byBoaW06IGFuZCBJIHB1dCB0aGUgZWFycmluZyB1cG9uIGhlciBmYWNlLCBhbmQgdGhlIGJyYWNlbGV0cyB1cG9uIGhlciBoYW5kcy4KQW5kIEkgYm93ZWQgZG93biBteSBoZWFkLCBhbmQgd29yc2hpcHBlZCB0aGUgTE9SRCwgYW5kIGJsZXNzZWQgdGhlIExPUkQgR29kIG9mIG15IG1hc3RlciBBYnJhaGFtLCB3aGljaCBoYWQgbGVkIG1lIGluIHRoZSByaWdodCB3YXkgdG8gdGFrZSBteSBtYXN0ZXIncyBicm90aGVyJ3MgZGF1Z2h0ZXIgdW50byBoaXMgc29uLgpBbmQgbm93IGlmIHllIHdpbGwgZGVhbCBraW5kbHkgYW5kIHRydWx5IHdpdGggbXkgbWFzdGVyLCB0ZWxsIG1lOiBhbmQgaWYgbm90LCB0ZWxsIG1lOyB0aGF0IEkgbWF5IHR1cm4gdG8gdGhlIHJpZ2h0IGhhbmQsIG9yIHRvIHRoZSBsZWZ0LgpUaGVuIExhYmFuIGFuZCBCZXRodWVsIGFuc3dlcmVkIGFuZCBzYWlkLCBUaGUgdGhpbmcgcHJvY2VlZGV0aCBmcm9tIHRoZSBMT1JEOiB3ZSBjYW5ub3Qgc3BlYWsgdW50byB0aGVlIGJhZCBvciBnb29kLgpCZWhvbGQsIFJlYmVrYWggaXMgYmVmb3JlIHRoZWUsIHRha2UgaGVyLCBhbmQgZ28sIGFuZCBsZXQgaGVyIGJlIHRoeSBtYXN0ZXIncyBzb24ncyB3aWZlLCBhcyB0aGUgTE9SRCBoYXRoIHNwb2tlbi4KQW5kIGl0IGNhbWUgdG8gcGFzcywgdGhhdCwgd2hlbiBBYnJhaGFtJ3Mgc2VydmFudCBoZWFyZCB0aGVpciB3b3JkcywgaGUgd29yc2hpcHBlZCB0aGUgTE9SRCwgYm93aW5nIGhpbXNlbGYgdG8gdGhlIGVhcnRoLgpBbmQgdGhlIHNlcnZhbnQgYnJvdWdodCBmb3J0aCBqZXdlbHMgb2Ygc2lsdmVyLCBhbmQgamV3ZWxzIG9mIGdvbGQsIGFuZCByYWltZW50LCBhbmQgZ2F2ZSB0aGVtIHRvIFJlYmVrYWg6IGhlIGdhdmUgYWxzbyB0byBoZXIgYnJvdGhlciBhbmQgdG8gaGVyIG1vdGhlciBwcmVjaW91cyB0aGluZ3MuCkFuZCB0aGV5IGRpZCBlYXQgYW5kIGRyaW5rLCBoZSBhbmQgdGhlIG1lbiB0aGF0IHdlcmUgd2l0aCBoaW0sIGFuZCB0YXJyaWVkIGFsbCBuaWdodDsgYW5kIHRoZXkgcm9zZSB1cCBpbiB0aGUgbW9ybmluZywgYW5kIGhlIHNhaWQsIFNlbmQgbWUgYXdheSB1bnRvIG15IG1hc3Rlci4KQW5kIGhlciBicm90aGVyIGFuZCBoZXIgbW90aGVyIHNhaWQsIExldCB0aGUgZGFtc2VsIGFiaWRlIHdpdGggdXMgYSBmZXcgZGF5cywgYXQgdGhlIGxlYXN0IHRlbjsgYWZ0ZXIgdGhhdCBzaGUgc2hhbGwgZ28uCkFuZCBoZSBzYWlkIHVudG8gdGhlbSwgSGluZGVyIG1lIG5vdCwgc2VlaW5nIHRoZSBMT1JEIGhhdGggcHJvc3BlcmVkIG15IHdheTsgc2VuZCBtZSBhd2F5IHRoYXQgSSBtYXkgZ28gdG8gbXkgbWFzdGVyLgpBbmQgdGhleSBzYWlkLCBXZSB3aWxsIGNhbGwgdGhlIGRhbXNlbCwgYW5kIGVucXVpcmUgYXQgaGVyIG1vdXRoLgpBbmQgdGhleSBjYWxsZWQgUmViZWthaCwgYW5kIHNhaWQgdW50byBoZXIsIFdpbHQgdGhvdSBnbyB3aXRoIHRoaXMgbWFuPyBBbmQgc2hlIHNhaWQsIEkgd2lsbCBnby4KQW5kIHRoZXkgc2VudCBhd2F5IFJlYmVrYWggdGhlaXIgc2lzdGVyLCBhbmQgaGVyIG51cnNlLCBhbmQgQWJyYWhhbSdzIHNlcnZhbnQsIGFuZCBoaXMgbWVuLgpBbmQgdGhleSBibGVzc2VkIFJlYmVrYWgsIGFuZCBzYWlkIHVudG8gaGVyLCBUaG91IGFydCBvdXIgc2lzdGVyLCBiZSB0aG91IHRoZSBtb3RoZXIgb2YgdGhvdXNhbmRzIG9mIG1pbGxpb25zLCBhbmQgbGV0IHRoeSBzZWVkIHBvc3Nlc3MgdGhlIGdhdGUgb2YgdGhvc2Ugd2hpY2ggaGF0ZSB0aGVtLgpBbmQgUmViZWthaCBhcm9zZSwgYW5kIGhlciBkYW1zZWxzLCBhbmQgdGhleSByb2RlIHVwb24gdGhlIGNhbWVscywgYW5kIGZvbGxvd2VkIHRoZSBtYW46IGFuZCB0aGUgc2VydmFudCB0b29rIFJlYmVrYWgsIGFuZCB3ZW50IGhpcyB3YXkuCkFuZCBJc2FhYyBjYW1lIGZyb20gdGhlIHdheSBvZiB0aGUgd2VsbCBMYWhhaXJvaTsgZm9yIGhlIGR3ZWx0IGluIHRoZSBzb3V0aCBjb3VudHJ5LgpBbmQgSXNhYWMgd2VudCBvdXQgdG8gbWVkaXRhdGUgaW4gdGhlIGZpZWxkIGF0IHRoZSBldmVudGlkZTogYW5kIGhlIGxpZnRlZCB1cCBoaXMgZXllcywgYW5kIHNhdywgYW5kLCBiZWhvbGQsIHRoZSBjYW1lbHMgd2VyZSBjb21pbmcuCkFuZCBSZWJla2FoIGxpZnRlZCB1cCBoZXIgZXllcywgYW5kIHdoZW4gc2hlIHNhdyBJc2FhYywgc2hlIGxpZ2h0ZWQgb2ZmIHRoZSBjYW1lbC4KRm9yIHNoZSBoYWQgc2FpZCB1bnRvIHRoZSBzZXJ2YW50LCBXaGF0IG1hbiBpcyB0aGlzIHRoYXQgd2Fsa2V0aCBpbiB0aGUgZmllbGQgdG8gbWVldCB1cz8gQW5kIHRoZSBzZXJ2YW50IGhhZCBzYWlkLCBJdCBpcyBteSBtYXN0ZXI6IHRoZXJlZm9yZSBzaGUgdG9vayBhIHZhaWwsIGFuZCBjb3ZlcmVkIGhlcnNlbGYuCkFuZCB0aGUgc2VydmFudCB0b2xkIElzYWFjIGFsbCB0aGluZ3MgdGhhdCBoZSBoYWQgZG9uZS4KQW5kIElzYWFjIGJyb3VnaHQgaGVyIGludG8gaGlzIG1vdGhlciBTYXJhaCdzIHRlbnQsIGFuZCB0b29rIFJlYmVrYWgsIGFuZCBzaGUgYmVjYW1lIGhpcyB3aWZlOyBhbmQgaGUgbG92ZWQgaGVyOiBhbmQgSXNhYWMgd2FzIGNvbWZvcnRlZCBhZnRlciBoaXMgbW90aGVyJ3MgZGVhdGguClRoZW4gYWdhaW4gQWJyYWhhbSB0b29rIGEgd2lmZSwgYW5kIGhlciBuYW1lIHdhcyBLZXR1cmFoLgpBbmQgc2hlIGJhcmUgaGltIFppbXJhbiwgYW5kIEpva3NoYW4sIGFuZCBNZWRhbiwgYW5kIE1pZGlhbiwgYW5kIElzaGJhaywgYW5kIFNodWFoLgpBbmQgSm9rc2hhbiBiZWdhdCBTaGViYSwgYW5kIERlZGFuLiBBbmQgdGhlIHNvbnMgb2YgRGVkYW4gd2VyZSBBc3NodXJpbSwgYW5kIExldHVzaGltLCBhbmQgTGV1bW1pbS4KQW5kIHRoZSBzb25zIG9mIE1pZGlhbjsgRXBoYWgsIGFuZCBFcGhlciwgYW5kIEhhbm9jaCwgYW5kIEFiaWRhaCwgYW5kIEVsZGFhaC4gQWxsIHRoZXNlIHdlcmUgdGhlIGNoaWxkcmVuIG9mIEtldHVyYWguCkFuZCBBYnJhaGFtIGdhdmUgYWxsIHRoYXQgaGUgaGFkIHVudG8gSXNhYWMuCkJ1dCB1bnRvIHRoZSBzb25zIG9mIHRoZSBjb25jdWJpbmVzLCB3aGljaCBBYnJhaGFtIGhhZCwgQWJyYWhhbSBnYXZlIGdpZnRzLCBhbmQgc2VudCB0aGVtIGF3YXkgZnJvbSBJc2FhYyBoaXMgc29uLCB3aGlsZSBoZSB5ZXQgbGl2ZWQsIGVhc3R3YXJkLCB1bnRvIHRoZSBlYXN0IGNvdW50cnkuCkFuZCB0aGVzZSBhcmUgdGhlIGRheXMgb2YgdGhlIHllYXJzIG9mIEFicmFoYW0ncyBsaWZlIHdoaWNoIGhlIGxpdmVkLCBhbiBodW5kcmVkIHRocmVlc2NvcmUgYW5kIGZpZnRlZW4geWVhcnMuClRoZW4gQWJyYWhhbSBnYXZlIHVwIHRoZSBnaG9zdCwgYW5kIGRpZWQgaW4gYSBnb29kIG9sZCBhZ2UsIGFuIG9sZCBtYW4sIGFuZCBmdWxsIG9mIHllYXJzOyBhbmQgd2FzIGdhdGhlcmVkIHRvIGhpcyBwZW9wbGUuCkFuZCBoaXMgc29ucyBJc2FhYyBhbmQgSXNobWFlbCBidXJpZWQgaGltIGluIHRoZSBjYXZlIG9mIE1hY2hwZWxhaCwgaW4gdGhlIGZpZWxkIG9mIEVwaHJvbiB0aGUgc29uIG9mIFpvaGFyIHRoZSBIaXR0aXRlLCB3aGljaCBpcyBiZWZvcmUgTWFtcmU7ClRoZSBmaWVsZCB3aGljaCBBYnJhaGFtIHB1cmNoYXNlZCBvZiB0aGUgc29ucyBvZiBIZXRoOiB0aGVyZSB3YXMgQWJyYWhhbSBidXJpZWQsIGFuZCBTYXJhaCBoaXMgd2lmZS4KQW5kIGl0IGNhbWUgdG8gcGFzcyBhZnRlciB0aGUgZGVhdGggb2YgQWJyYWhhbSwgdGhhdCBHb2QgYmxlc3NlZCBoaXMgc29uIElzYWFjOyBhbmQgSXNhYWMgZHdlbHQgYnkgdGhlIHdlbGwgTGFoYWlyb2kuCk5vdyB0aGVzZSBhcmUgdGhlIGdlbmVyYXRpb25zIG9mIElzaG1hZWwsIEFicmFoYW0ncyBzb24sIHdob20gSGFnYXIgdGhlIEVneXB0aWFuLCBTYXJhaCdzIGhhbmRtYWlkLCBiYXJlIHVudG8gQWJyYWhhbToKQW5kIHRoZXNlIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNvbnMgb2YgSXNobWFlbCwgYnkgdGhlaXIgbmFtZXMsIGFjY29yZGluZyB0byB0aGVpciBnZW5lcmF0aW9uczogdGhlIGZpcnN0Ym9ybiBvZiBJc2htYWVsLCBOZWJham90aDsgYW5kIEtlZGFyLCBhbmQgQWRiZWVsLCBhbmQgTWlic2FtLApBbmQgTWlzaG1hLCBhbmQgRHVtYWgsIGFuZCBNYXNzYSwKSGFkYXIsIGFuZCBUZW1hLCBKZXR1ciwgTmFwaGlzaCwgYW5kIEtlZGVtYWg6ClRoZXNlIGFyZSB0aGUgc29ucyBvZiBJc2htYWVsLCBhbmQgdGhlc2UgYXJlIHRoZWlyIG5hbWVzLCBieSB0aGVpciB0b3ducywgYW5kIGJ5IHRoZWlyIGNhc3RsZXM7IHR3ZWx2ZSBwcmluY2VzIGFjY29yZGluZyB0byB0aGVpciBuYXRpb25zLgpBbmQgdGhlc2UgYXJlIHRoZSB5ZWFycyBvZiB0aGUgbGlmZSBvZiBJc2htYWVsLCBhbiBodW5kcmVkIGFuZCB0aGlydHkgYW5kIHNldmVuIHllYXJzOiBhbmQgaGUgZ2F2ZSB1cCB0aGUgZ2hvc3QgYW5kIGRpZWQ7IGFuZCB3YXMgZ2F0aGVyZWQgdW50byBoaXMgcGVvcGxlLgpBbmQgdGhleSBkd2VsdCBmcm9tIEhhdmlsYWggdW50byBTaHVyLCB0aGF0IGlzIGJlZm9yZSBFZ3lwdCwgYXMgdGhvdSBnb2VzdCB0b3dhcmQgQXNzeXJpYTogYW5kIGhlIGRpZWQgaW4gdGhlIHByZXNlbmNlIG9mIGFsbCBoaXMgYnJldGhyZW4uCkFuZCB0aGVzZSBhcmUgdGhlIGdlbmVyYXRpb25zIG9mIElzYWFjLCBBYnJhaGFtJ3Mgc29uOiBBYnJhaGFtIGJlZ2F0IElzYWFjOgpBbmQgSXNhYWMgd2FzIGZvcnR5IHllYXJzIG9sZCB3aGVuIGhlIHRvb2sgUmViZWthaCB0byB3aWZlLCB0aGUgZGF1Z2h0ZXIgb2YgQmV0aHVlbCB0aGUgU3lyaWFuIG9mIFBhZGFuYXJhbSwgdGhlIHNpc3RlciB0byBMYWJhbiB0aGUgU3lyaWFuLgpBbmQgSXNhYWMgaW50cmVhdGVkIHRoZSBMT1JEIGZvciBoaXMgd2lmZSwgYmVjYXVzZSBzaGUgd2FzIGJhcnJlbjogYW5kIHRoZSBMT1JEIHdhcyBpbnRyZWF0ZWQgb2YgaGltLCBhbmQgUmViZWthaCBoaXMgd2lmZSBjb25jZWl2ZWQuCkFuZCB0aGUgY2hpbGRyZW4gc3RydWdnbGVkIHRvZ2V0aGVyIHdpdGhpbiBoZXI7IGFuZCBzaGUgc2FpZCwgSWYgaXQgYmUgc28sIHdoeSBhbSBJIHRodXM/IEFuZCBzaGUgd2VudCB0byBlbnF1aXJlIG9mIHRoZSBMT1JELgpBbmQgdGhlIExPUkQgc2FpZCB1bnRvIGhlciwgVHdvIG5hdGlvbnMgYXJlIGluIHRoeSB3b21iLCBhbmQgdHdvIG1hbm5lciBvZiBwZW9wbGUgc2hhbGwgYmUgc2VwYXJhdGVkIGZyb20gdGh5IGJvd2VsczsgYW5kIHRoZSBvbmUgcGVvcGxlIHNoYWxsIGJlIHN0cm9uZ2VyIHRoYW4gdGhlIG90aGVyIHBlb3BsZTsgYW5kIHRoZSBlbGRlciBzaGFsbCBzZXJ2ZSB0aGUgeW91bmdlci4KQW5kIHdoZW4gaGVyIGRheXMgdG8gYmUgZGVsaXZlcmVkIHdlcmUgZnVsZmlsbGVkLCBiZWhvbGQsIHRoZXJlIHdlcmUgdHdpbnMgaW4gaGVyIHdvbWIuCkFuZCB0aGUgZmlyc3QgY2FtZSBvdXQgcmVkLCBhbGwgb3ZlciBsaWtlIGFuIGhhaXJ5IGdhcm1lbnQ7IGFuZCB0aGV5IGNhbGxlZCBoaXMgbmFtZSBFc2F1LgpBbmQgYWZ0ZXIgdGhhdCBjYW1lIGhpcyBicm90aGVyIG91dCwgYW5kIGhpcyBoYW5kIHRvb2sgaG9sZCBvbiBFc2F1J3MgaGVlbDsgYW5kIGhpcyBuYW1lIHdhcyBjYWxsZWQgSmFjb2I6IGFuZCBJc2FhYyB3YXMgdGhyZWVzY29yZSB5ZWFycyBvbGQgd2hlbiBzaGUgYmFyZSB0aGVtLgpBbmQgdGhlIGJveXMgZ3JldzogYW5kIEVzYXUgd2FzIGEgY3VubmluZyBodW50ZXIsIGEgbWFuIG9mIHRoZSBmaWVsZDsgYW5kIEphY29iIHdhcyBhIHBsYWluIG1hbiwgZHdlbGxpbmcgaW4gdGVudHMuCkFuZCBJc2FhYyBsb3ZlZCBFc2F1LCBiZWNhdXNlIGhlIGRpZCBlYXQgb2YgaGlzIHZlbmlzb246IGJ1dCBSZWJla2FoIGxvdmVkIEphY29iLgpBbmQgSmFjb2Igc29kIHBvdHRhZ2U6IGFuZCBFc2F1IGNhbWUgZnJvbSB0aGUgZmllbGQsIGFuZCBoZSB3YXMgZmFpbnQ6CkFuZCBFc2F1IHNhaWQgdG8gSmFjb2IsIEZlZWQgbWUsIEkgcHJheSB0aGVlLCB3aXRoIHRoYXQgc2FtZSByZWQgcG90dGFnZTsgZm9yIEkgYW0gZmFpbnQ6IHRoZXJlZm9yZSB3YXMgaGlzIG5hbWUgY2FsbGVkIEVkb20uCkFuZCBKYWNvYiBzYWlkLCBTZWxsIG1lIHRoaXMgZGF5IHRoeSBiaXJ0aHJpZ2h0LgpBbmQgRXNhdSBzYWlkLCBCZWhvbGQsIEkgYW0gYXQgdGhlIHBvaW50IHRvIGRpZTogYW5kIHdoYXQgcHJvZml0IHNoYWxsIHRoaXMgYmlydGhyaWdodCBkbyB0byBtZT8KQW5kIEphY29iIHNhaWQsIFN3ZWFyIHRvIG1lIHRoaXMgZGF5OyBhbmQgaGUgc3dhcmUgdW50byBoaW06IGFuZCBoZSBzb2xkIGhpcyBiaXJ0aHJpZ2h0IHVudG8gSmFjb2IuClRoZW4gSmFjb2IgZ2F2ZSBFc2F1IGJyZWFkIGFuZCBwb3R0YWdlIG9mIGxlbnRpbGVzOyBhbmQgaGUgZGlkIGVhdCBhbmQgZHJpbmssIGFuZCByb3NlIHVwLCBhbmQgd2VudCBoaXMgd2F5OiB0aHVzIEVzYXUgZGVzcGlzZWQgaGlzIGJpcnRocmlnaHQuCkFuZCB0aGVyZSB3YXMgYSBmYW1pbmUgaW4gdGhlIGxhbmQsIGJlc2lkZSB0aGUgZmlyc3QgZmFtaW5lIHRoYXQgd2FzIGluIHRoZSBkYXlzIG9mIEFicmFoYW0uIEFuZCBJc2FhYyB3ZW50IHVudG8gQWJpbWVsZWNoIGtpbmcgb2YgdGhlIFBoaWxpc3RpbmVzIHVudG8gR2VyYXIuCkFuZCB0aGUgTE9SRCBhcHBlYXJlZCB1bnRvIGhpbSwgYW5kIHNhaWQsIEdvIG5vdCBkb3duIGludG8gRWd5cHQ7IGR3ZWxsIGluIHRoZSBsYW5kIHdoaWNoIEkgc2hhbGwgdGVsbCB0aGVlIG9mOgpTb2pvdXJuIGluIHRoaXMgbGFuZCwgYW5kIEkgd2lsbCBiZSB3aXRoIHRoZWUsIGFuZCB3aWxsIGJsZXNzIHRoZWU7IGZvciB1bnRvIHRoZWUsIGFuZCB1bnRvIHRoeSBzZWVkLCBJIHdpbGwgZ2l2ZSBhbGwgdGhlc2UgY291bnRyaWVzLCBhbmQgSSB3aWxsIHBlcmZvcm0gdGhlIG9hdGggd2hpY2ggSSBzd2FyZSB1bnRvIEFicmFoYW0gdGh5IGZhdGhlcjsKQW5kIEkgd2lsbCBtYWtlIHRoeSBzZWVkIHRvIG11bHRpcGx5IGFzIHRoZSBzdGFycyBvZiBoZWF2ZW4sIGFuZCB3aWxsIGdpdmUgdW50byB0aHkgc2VlZCBhbGwgdGhlc2UgY291bnRyaWVzOyBhbmQgaW4gdGh5IHNlZWQgc2hhbGwgYWxsIHRoZSBuYXRpb25zIG9mIHRoZSBlYXJ0aCBiZSBibGVzc2VkOwpCZWNhdXNlIHRoYXQgQWJyYWhhbSBvYmV5ZWQgbXkgdm9pY2UsIGFuZCBrZXB0IG15IGNoYXJnZSwgbXkgY29tbWFuZG1lbnRzLCBteSBzdGF0dXRlcywgYW5kIG15IGxhd3MuCkFuZCBJc2FhYyBkd2VsdCBpbiBHZXJhcjoKQW5kIHRoZSBtZW4gb2YgdGhlIHBsYWNlIGFza2VkIGhpbSBvZiBoaXMgd2lmZTsgYW5kIGhlIHNhaWQsIFNoZSBpcyBteSBzaXN0ZXI6IGZvciBoZSBmZWFyZWQgdG8gc2F5LCBTaGUgaXMgbXkgd2lmZTsgbGVzdCwgc2FpZCBoZSwgdGhlIG1lbiBvZiB0aGUgcGxhY2Ugc2hvdWxkIGtpbGwgbWUgZm9yIFJlYmVrYWg7IGJlY2F1c2Ugc2hlIHdhcyBmYWlyIHRvIGxvb2sgdXBvbi4KQW5kIGl0IGNhbWUgdG8gcGFzcywgd2hlbiBoZSBoYWQgYmVlbiB0aGVyZSBhIGxvbmcgdGltZSwgdGhhdCBBYmltZWxlY2gga2luZyBvZiB0aGUgUGhpbGlzdGluZXMgbG9va2VkIG91dCBhdCBhIHdpbmRvdywgYW5kIHNhdywgYW5kLCBiZWhvbGQsIElzYWFjIHdhcyBzcG9ydGluZyB3aXRoIFJlYmVrYWggaGlzIHdpZmUuCkFuZCBBYmltZWxlY2ggY2FsbGVkIElzYWFjLCBhbmQgc2FpZCwgQmVob2xkLCBvZiBhIHN1cmV0eSBzaGUgaXMgdGh5IHdpZmU7IGFuZCBob3cgc2FpZHN0IHRob3UsIFNoZSBpcyBteSBzaXN0ZXI/IEFuZCBJc2FhYyBzYWlkIHVudG8gaGltLCBCZWNhdXNlIEkgc2FpZCwgTGVzdCBJIGRpZSBmb3IgaGVyLgpBbmQgQWJpbWVsZWNoIHNhaWQsIFdoYXQgaXMgdGhpcyB0aG91IGhhc3QgZG9uZSB1bnRvIHVzPyBvbmUgb2YgdGhlIHBlb3BsZSBtaWdodCBsaWdodGx5IGhhdmUgbGllbiB3aXRoIHRoeSB3aWZlLCBhbmQgdGhvdSBzaG91bGRlc3QgaGF2ZSBicm91Z2h0IGd1aWx0aW5lc3MgdXBvbiB1cy4KQW5kIEFiaW1lbGVjaCBjaGFyZ2VkIGFsbCBoaXMgcGVvcGxlLCBzYXlpbmcsIEhlIHRoYXQgdG91Y2hldGggdGhpcyBtYW4gb3IgaGlzIHdpZmUgc2hhbGwgc3VyZWx5IGJlIHB1dCB0byBkZWF0aC4KVGhlbiBJc2FhYyBzb3dlZCBpbiB0aGF0IGxhbmQsIGFuZCByZWNlaXZlZCBpbiB0aGUgc2FtZSB5ZWFyIGFuIGh1bmRyZWRmb2xkOiBhbmQgdGhlIExPUkQgYmxlc3NlZCBoaW0uCkFuZCB0aGUgbWFuIHdheGVkIGdyZWF0LCBhbmQgd2VudCBmb3J3YXJkLCBhbmQgZ3JldyB1bnRpbCBoZSBiZWNhbWUgdmVyeSBncmVhdDoKRm9yIGhlIGhhZCBwb3NzZXNzaW9uIG9mIGZsb2NrcywgYW5kIHBvc3Nlc3Npb24gb2YgaGVyZHMsIGFuZCBncmVhdCBzdG9yZSBvZiBzZXJ2YW50czogYW5kIHRoZSBQaGlsaXN0aW5lcyBlbnZpZWQgaGltLgpGb3IgYWxsIHRoZSB3ZWxscyB3aGljaCBoaXMgZmF0aGVyJ3Mgc2VydmFudHMgaGFkIGRpZ2dlZCBpbiB0aGUgZGF5cyBvZiBBYnJhaGFtIGhpcyBmYXRoZXIsIHRoZSBQaGlsaXN0aW5lcyBoYWQgc3RvcHBlZCB0aGVtLCBhbmQgZmlsbGVkIHRoZW0gd2l0aCBlYXJ0aC4KQW5kIEFiaW1lbGVjaCBzYWlkIHVudG8gSXNhYWMsIEdvIGZyb20gdXM7IGZvciB0aG91IGFydCBtdWNoIG1pZ2h0aWVyIHRoYW4gd2UuCkFuZCBJc2FhYyBkZXBhcnRlZCB0aGVuY2UsIGFuZCBwaXRjaGVkIGhpcyB0ZW50IGluIHRoZSB2YWxsZXkgb2YgR2VyYXIsIGFuZCBkd2VsdCB0aGVyZS4KQW5kIElzYWFjIGRpZ2dlZCBhZ2FpbiB0aGUgd2VsbHMgb2Ygd2F0ZXIsIHdoaWNoIHRoZXkgaGFkIGRpZ2dlZCBpbiB0aGUgZGF5cyBvZiBBYnJhaGFtIGhpcyBmYXRoZXI7IGZvciB0aGUgUGhpbGlzdGluZXMgaGFkIHN0b3BwZWQgdGhlbSBhZnRlciB0aGUgZGVhdGggb2YgQWJyYWhhbTogYW5kIGhlIGNhbGxlZCB0aGVpciBuYW1lcyBhZnRlciB0aGUgbmFtZXMgYnkgd2hpY2ggaGlzIGZhdGhlciBoYWQgY2FsbGVkIHRoZW0uCkFuZCBJc2FhYydzIHNlcnZhbnRzIGRpZ2dlZCBpbiB0aGUgdmFsbGV5LCBhbmQgZm91bmQgdGhlcmUgYSB3ZWxsIG9mIHNwcmluZ2luZyB3YXRlci4KQW5kIHRoZSBoZXJkbWVuIG9mIEdlcmFyIGRpZCBzdHJpdmUgd2l0aCBJc2FhYydzIGhlcmRtZW4sIHNheWluZywgVGhlIHdhdGVyIGlzIG91cnM6IGFuZCBoZSBjYWxsZWQgdGhlIG5hbWUgb2YgdGhlIHdlbGwgRXNlazsgYmVjYXVzZSB0aGV5IHN0cm92ZSB3aXRoIGhpbS4KQW5kIHRoZXkgZGlnZ2VkIGFub3RoZXIgd2VsbCwgYW5kIHN0cm92ZSBmb3IgdGhhdCBhbHNvOiBhbmQgaGUgY2FsbGVkIHRoZSBuYW1lIG9mIGl0IFNpdG5haC4KQW5kIGhlIHJlbW92ZWQgZnJvbSB0aGVuY2UsIGFuZCBkaWdnZWQgYW5vdGhlciB3ZWxsOyBhbmQgZm9yIHRoYXQgdGhleSBzdHJvdmUgbm90OiBhbmQgaGUgY2FsbGVkIHRoZSBuYW1lIG9mIGl0IFJlaG9ib3RoOyBhbmQgaGUgc2FpZCwgRm9yIG5vdyB0aGUgTE9SRCBoYXRoIG1hZGUgcm9vbSBmb3IgdXMsIGFuZCB3ZSBzaGFsbCBiZSBmcnVpdGZ1bCBpbiB0aGUgbGFuZC4KQW5kIGhlIHdlbnQgdXAgZnJvbSB0aGVuY2UgdG8gQmVlcnNoZWJhLgpBbmQgdGhlIExPUkQgYXBwZWFyZWQgdW50byBoaW0gdGhlIHNhbWUgbmlnaHQsIGFuZCBzYWlkLCBJIGFtIHRoZSBHb2Qgb2YgQWJyYWhhbSB0aHkgZmF0aGVyOiBmZWFyIG5vdCwgZm9yIEkgYW0gd2l0aCB0aGVlLCBhbmQgd2lsbCBibGVzcyB0aGVlLCBhbmQgbXVsdGlwbHkgdGh5IHNlZWQgZm9yIG15IHNlcnZhbnQgQWJyYWhhbSdzIHNha2UuCkFuZCBoZSBidWlsZGVkIGFuIGFsdGFyIHRoZXJlLCBhbmQgY2FsbGVkIHVwb24gdGhlIG5hbWUgb2YgdGhlIExPUkQsIGFuZCBwaXRjaGVkIGhpcyB0ZW50IHRoZXJlOiBhbmQgdGhlcmUgSXNhYWMncyBzZXJ2YW50cyBkaWdnZWQgYSB3ZWxsLgpUaGVuIEFiaW1lbGVjaCB3ZW50IHRvIGhpbSBmcm9tIEdlcmFyLCBhbmQgQWh1enphdGggb25lIG9mIGhpcyBmcmllbmRzLCBhbmQgUGhpY2hvbCB0aGUgY2hpZWYgY2FwdGFpbiBvZiBoaXMgYXJteS4KQW5kIElzYWFjIHNhaWQgdW50byB0aGVtLCBXaGVyZWZvcmUgY29tZSB5ZSB0byBtZSwgc2VlaW5nIHllIGhhdGUgbWUsIGFuZCBoYXZlIHNlbnQgbWUgYXdheSBmcm9tIHlvdT8KQW5kIHRoZXkgc2FpZCwgV2Ugc2F3IGNlcnRhaW5seSB0aGF0IHRoZSBMT1JEIHdhcyB3aXRoIHRoZWU6IGFuZCB3ZSBzYWlkLCBMZXQgdGhlcmUgYmUgbm93IGFuIG9hdGggYmV0d2l4dCB1cywgZXZlbiBiZXR3aXh0IHVzIGFuZCB0aGVlLCBhbmQgbGV0IHVzIG1ha2UgYSBjb3ZlbmFudCB3aXRoIHRoZWU7ClRoYXQgdGhvdSB3aWx0IGRvIHVzIG5vIGh1cnQsIGFzIHdlIGhhdmUgbm90IHRvdWNoZWQgdGhlZSwgYW5kIGFzIHdlIGhhdmUgZG9uZSB1bnRvIHRoZWUgbm90aGluZyBidXQgZ29vZCwgYW5kIGhhdmUgc2VudCB0aGVlIGF3YXkgaW4gcGVhY2U6IHRob3UgYXJ0IG5vdyB0aGUgYmxlc3NlZCBvZiB0aGUgTE9SRC4KQW5kIGhlIG1hZGUgdGhlbSBhIGZlYXN0LCBhbmQgdGhleSBkaWQgZWF0IGFuZCBkcmluay4KQW5kIHRoZXkgcm9zZSB1cCBiZXRpbWVzIGluIHRoZSBtb3JuaW5nLCBhbmQgc3dhcmUgb25lIHRvIGFub3RoZXI6IGFuZCBJc2FhYyBzZW50IHRoZW0gYXdheSwgYW5kIHRoZXkgZGVwYXJ0ZWQgZnJvbSBoaW0gaW4gcGVhY2UuCkFuZCBpdCBjYW1lIHRvIHBhc3MgdGhlIHNhbWUgZGF5LCB0aGF0IElzYWFjJ3Mgc2VydmFudHMgY2FtZSwgYW5kIHRvbGQgaGltIGNvbmNlcm5pbmcgdGhlIHdlbGwgd2hpY2ggdGhleSBoYWQgZGlnZ2VkLCBhbmQgc2FpZCB1bnRvIGhpbSwgV2UgaGF2ZSBmb3VuZCB3YXRlci4KQW5kIGhlIGNhbGxlZCBpdCBTaGViYWg6IHRoZXJlZm9yZSB0aGUgbmFtZSBvZiB0aGUgY2l0eSBpcyBCZWVyc2hlYmEgdW50byB0aGlzIGRheS4KQW5kIEVzYXUgd2FzIGZvcnR5IHllYXJzIG9sZCB3aGVuIGhlIHRvb2sgdG8gd2lmZSBKdWRpdGggdGhlIGRhdWdodGVyIG9mIEJlZXJpIHRoZSBIaXR0aXRlLCBhbmQgQmFzaGVtYXRoIHRoZSBkYXVnaHRlciBvZiBFbG9uIHRoZSBIaXR0aXRlOgpXaGljaCB3ZXJlIGEgZ3JpZWYgb2YgbWluZCB1bnRvIElzYWFjIGFuZCB0byBSZWJla2FoLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB0aGF0IHdoZW4gSXNhYWMgd2FzIG9sZCwgYW5kIGhpcyBleWVzIHdlcmUgZGltLCBzbyB0aGF0IGhlIGNvdWxkIG5vdCBzZWUsIGhlIGNhbGxlZCBFc2F1IGhpcyBlbGRlc3Qgc29uLCBhbmQgc2FpZCB1bnRvIGhpbSwgTXkgc29uOiBhbmQgaGUgc2FpZCB1bnRvIGhpbSwgQmVob2xkLCBoZXJlIGFtIEkuCkFuZCBoZSBzYWlkLCBCZWhvbGQgbm93LCBJIGFtIG9sZCwgSSBrbm93IG5vdCB0aGUgZGF5IG9mIG15IGRlYXRoOgpOb3cgdGhlcmVmb3JlIHRha2UsIEkgcHJheSB0aGVlLCB0aHkgd2VhcG9ucywgdGh5IHF1aXZlciBhbmQgdGh5IGJvdywgYW5kIGdvIG91dCB0byB0aGUgZmllbGQsIGFuZCB0YWtlIG1lIHNvbWUgdmVuaXNvbjsKQW5kIG1ha2UgbWUgc2F2b3VyeSBtZWF0LCBzdWNoIGFzIEkgbG92ZSwgYW5kIGJyaW5nIGl0IHRvIG1lLCB0aGF0IEkgbWF5IGVhdDsgdGhhdCBteSBzb3VsIG1heSBibGVzcyB0aGVlIGJlZm9yZSBJIGRpZS4KQW5kIFJlYmVrYWggaGVhcmQgd2hlbiBJc2FhYyBzcGFrZSB0byBFc2F1IGhpcyBzb24uIEFuZCBFc2F1IHdlbnQgdG8gdGhlIGZpZWxkIHRvIGh1bnQgZm9yIHZlbmlzb24sIGFuZCB0byBicmluZyBpdC4KQW5kIFJlYmVrYWggc3Bha2UgdW50byBKYWNvYiBoZXIgc29uLCBzYXlpbmcsIEJlaG9sZCwgSSBoZWFyZCB0aHkgZmF0aGVyIHNwZWFrIHVudG8gRXNhdSB0aHkgYnJvdGhlciwgc2F5aW5nLApCcmluZyBtZSB2ZW5pc29uLCBhbmQgbWFrZSBtZSBzYXZvdXJ5IG1lYXQsIHRoYXQgSSBtYXkgZWF0LCBhbmQgYmxlc3MgdGhlZSBiZWZvcmUgdGhlIExPUkQgYmVmb3JlIG15IGRlYXRoLgpOb3cgdGhlcmVmb3JlLCBteSBzb24sIG9iZXkgbXkgdm9pY2UgYWNjb3JkaW5nIHRvIHRoYXQgd2hpY2ggSSBjb21tYW5kIHRoZWUuCkdvIG5vdyB0byB0aGUgZmxvY2ssIGFuZCBmZXRjaCBtZSBmcm9tIHRoZW5jZSB0d28gZ29vZCBraWRzIG9mIHRoZSBnb2F0czsgYW5kIEkgd2lsbCBtYWtlIHRoZW0gc2F2b3VyeSBtZWF0IGZvciB0aHkgZmF0aGVyLCBzdWNoIGFzIGhlIGxvdmV0aDoKQW5kIHRob3Ugc2hhbHQgYnJpbmcgaXQgdG8gdGh5IGZhdGhlciwgdGhhdCBoZSBtYXkgZWF0LCBhbmQgdGhhdCBoZSBtYXkgYmxlc3MgdGhlZSBiZWZvcmUgaGlzIGRlYXRoLgpBbmQgSmFjb2Igc2FpZCB0byBSZWJla2FoIGhpcyBtb3RoZXIsIEJlaG9sZCwgRXNhdSBteSBicm90aGVyIGlzIGEgaGFpcnkgbWFuLCBhbmQgSSBhbSBhIHNtb290aCBtYW46Ck15IGZhdGhlciBwZXJhZHZlbnR1cmUgd2lsbCBmZWVsIG1lLCBhbmQgSSBzaGFsbCBzZWVtIHRvIGhpbSBhcyBhIGRlY2VpdmVyOyBhbmQgSSBzaGFsbCBicmluZyBhIGN1cnNlIHVwb24gbWUsIGFuZCBub3QgYSBibGVzc2luZy4KQW5kIGhpcyBtb3RoZXIgc2FpZCB1bnRvIGhpbSwgVXBvbiBtZSBiZSB0aHkgY3Vyc2UsIG15IHNvbjogb25seSBvYmV5IG15IHZvaWNlLCBhbmQgZ28gZmV0Y2ggbWUgdGhlbS4KQW5kIGhlIHdlbnQsIGFuZCBmZXRjaGVkLCBhbmQgYnJvdWdodCB0aGVtIHRvIGhpcyBtb3RoZXI6IGFuZCBoaXMgbW90aGVyIG1hZGUgc2F2b3VyeSBtZWF0LCBzdWNoIGFzIGhpcyBmYXRoZXIgbG92ZWQuCkFuZCBSZWJla2FoIHRvb2sgZ29vZGx5IHJhaW1lbnQgb2YgaGVyIGVsZGVzdCBzb24gRXNhdSwgd2hpY2ggd2VyZSB3aXRoIGhlciBpbiB0aGUgaG91c2UsIGFuZCBwdXQgdGhlbSB1cG9uIEphY29iIGhlciB5b3VuZ2VyIHNvbjoKQW5kIHNoZSBwdXQgdGhlIHNraW5zIG9mIHRoZSBraWRzIG9mIHRoZSBnb2F0cyB1cG9uIGhpcyBoYW5kcywgYW5kIHVwb24gdGhlIHNtb290aCBvZiBoaXMgbmVjazoKQW5kIHNoZSBnYXZlIHRoZSBzYXZvdXJ5IG1lYXQgYW5kIHRoZSBicmVhZCwgd2hpY2ggc2hlIGhhZCBwcmVwYXJlZCwgaW50byB0aGUgaGFuZCBvZiBoZXIgc29uIEphY29iLgpBbmQgaGUgY2FtZSB1bnRvIGhpcyBmYXRoZXIsIGFuZCBzYWlkLCBNeSBmYXRoZXI6IGFuZCBoZSBzYWlkLCBIZXJlIGFtIEk7IHdobyBhcnQgdGhvdSwgbXkgc29uPwpBbmQgSmFjb2Igc2FpZCB1bnRvIGhpcyBmYXRoZXIsIEkgYW0gRXNhdSB0aHkgZmlyc3QgYm9ybjsgSSBoYXZlIGRvbmUgYWNjb3JkaW5nIGFzIHRob3UgYmFkZXN0IG1lOiBhcmlzZSwgSSBwcmF5IHRoZWUsIHNpdCBhbmQgZWF0IG9mIG15IHZlbmlzb24sIHRoYXQgdGh5IHNvdWwgbWF5IGJsZXNzIG1lLgpBbmQgSXNhYWMgc2FpZCB1bnRvIGhpcyBzb24sIEhvdyBpcyBpdCB0aGF0IHRob3UgaGFzdCBmb3VuZCBpdCBzbyBxdWlja2x5LCBteSBzb24/IEFuZCBoZSBzYWlkLCBCZWNhdXNlIHRoZSBMT1JEIHRoeSBHb2QgYnJvdWdodCBpdCB0byBtZS4KQW5kIElzYWFjIHNhaWQgdW50byBKYWNvYiwgQ29tZSBuZWFyLCBJIHByYXkgdGhlZSwgdGhhdCBJIG1heSBmZWVsIHRoZWUsIG15IHNvbiwgd2hldGhlciB0aG91IGJlIG15IHZlcnkgc29uIEVzYXUgb3Igbm90LgpBbmQgSmFjb2Igd2VudCBuZWFyIHVudG8gSXNhYWMgaGlzIGZhdGhlcjsgYW5kIGhlIGZlbHQgaGltLCBhbmQgc2FpZCwgVGhlIHZvaWNlIGlzIEphY29iJ3Mgdm9pY2UsIGJ1dCB0aGUgaGFuZHMgYXJlIHRoZSBoYW5kcyBvZiBFc2F1LgpBbmQgaGUgZGlzY2VybmVkIGhpbSBub3QsIGJlY2F1c2UgaGlzIGhhbmRzIHdlcmUgaGFpcnksIGFzIGhpcyBicm90aGVyIEVzYXUncyBoYW5kczogc28gaGUgYmxlc3NlZCBoaW0uCkFuZCBoZSBzYWlkLCBBcnQgdGhvdSBteSB2ZXJ5IHNvbiBFc2F1PyBBbmQgaGUgc2FpZCwgSSBhbS4KQW5kIGhlIHNhaWQsIEJyaW5nIGl0IG5lYXIgdG8gbWUsIGFuZCBJIHdpbGwgZWF0IG9mIG15IHNvbidzIHZlbmlzb24sIHRoYXQgbXkgc291bCBtYXkgYmxlc3MgdGhlZS4gQW5kIGhlIGJyb3VnaHQgaXQgbmVhciB0byBoaW0sIGFuZCBoZSBkaWQgZWF0OiBhbmQgaGUgYnJvdWdodCBoaW0gd2luZSBhbmQgaGUgZHJhbmsuCkFuZCBoaXMgZmF0aGVyIElzYWFjIHNhaWQgdW50byBoaW0sIENvbWUgbmVhciBub3csIGFuZCBraXNzIG1lLCBteSBzb24uCkFuZCBoZSBjYW1lIG5lYXIsIGFuZCBraXNzZWQgaGltOiBhbmQgaGUgc21lbGxlZCB0aGUgc21lbGwgb2YgaGlzIHJhaW1lbnQsIGFuZCBibGVzc2VkIGhpbSwgYW5kIHNhaWQsIFNlZSwgdGhlIHNtZWxsIG9mIG15IHNvbiBpcyBhcyB0aGUgc21lbGwgb2YgYSBmaWVsZCB3aGljaCB0aGUgTE9SRCBoYXRoIGJsZXNzZWQ6ClRoZXJlZm9yZSBHb2QgZ2l2ZSB0aGVlIG9mIHRoZSBkZXcgb2YgaGVhdmVuLCBhbmQgdGhlIGZhdG5lc3Mgb2YgdGhlIGVhcnRoLCBhbmQgcGxlbnR5IG9mIGNvcm4gYW5kIHdpbmU6CkxldCBwZW9wbGUgc2VydmUgdGhlZSwgYW5kIG5hdGlvbnMgYm93IGRvd24gdG8gdGhlZTogYmUgbG9yZCBvdmVyIHRoeSBicmV0aHJlbiwgYW5kIGxldCB0aHkgbW90aGVyJ3Mgc29ucyBib3cgZG93biB0byB0aGVlOiBjdXJzZWQgYmUgZXZlcnkgb25lIHRoYXQgY3Vyc2V0aCB0aGVlLCBhbmQgYmxlc3NlZCBiZSBoZSB0aGF0IGJsZXNzZXRoIHRoZWUuCkFuZCBpdCBjYW1lIHRvIHBhc3MsIGFzIHNvb24gYXMgSXNhYWMgaGFkIG1hZGUgYW4gZW5kIG9mIGJsZXNzaW5nIEphY29iLCBhbmQgSmFjb2Igd2FzIHlldCBzY2FyY2UgZ29uZSBvdXQgZnJvbSB0aGUgcHJlc2VuY2Ugb2YgSXNhYWMgaGlzIGZhdGhlciwgdGhhdCBFc2F1IGhpcyBicm90aGVyIGNhbWUgaW4gZnJvbSBoaXMgaHVudGluZy4KQW5kIGhlIGFsc28gaGFkIG1hZGUgc2F2b3VyeSBtZWF0LCBhbmQgYnJvdWdodCBpdCB1bnRvIGhpcyBmYXRoZXIsIGFuZCBzYWlkIHVudG8gaGlzIGZhdGhlciwgTGV0IG15IGZhdGhlciBhcmlzZSwgYW5kIGVhdCBvZiBoaXMgc29uJ3MgdmVuaXNvbiwgdGhhdCB0aHkgc291bCBtYXkgYmxlc3MgbWUuCkFuZCBJc2FhYyBoaXMgZmF0aGVyIHNhaWQgdW50byBoaW0sIFdobyBhcnQgdGhvdT8gQW5kIGhlIHNhaWQsIEkgYW0gdGh5IHNvbiwgdGh5IGZpcnN0Ym9ybiBFc2F1LgpBbmQgSXNhYWMgdHJlbWJsZWQgdmVyeSBleGNlZWRpbmdseSwgYW5kIHNhaWQsIFdobz8gd2hlcmUgaXMgaGUgdGhhdCBoYXRoIHRha2VuIHZlbmlzb24sIGFuZCBicm91Z2h0IGl0IG1lLCBhbmQgSSBoYXZlIGVhdGVuIG9mIGFsbCBiZWZvcmUgdGhvdSBjYW1lc3QsIGFuZCBoYXZlIGJsZXNzZWQgaGltPyB5ZWEsIGFuZCBoZSBzaGFsbCBiZSBibGVzc2VkLgpBbmQgd2hlbiBFc2F1IGhlYXJkIHRoZSB3b3JkcyBvZiBoaXMgZmF0aGVyLCBoZSBjcmllZCB3aXRoIGEgZ3JlYXQgYW5kIGV4Y2VlZGluZyBiaXR0ZXIgY3J5LCBhbmQgc2FpZCB1bnRvIGhpcyBmYXRoZXIsIEJsZXNzIG1lLCBldmVuIG1lIGFsc28sIE8gbXkgZmF0aGVyLgpBbmQgaGUgc2FpZCwgVGh5IGJyb3RoZXIgY2FtZSB3aXRoIHN1YnRpbHR5LCBhbmQgaGF0aCB0YWtlbiBhd2F5IHRoeSBibGVzc2luZy4KQW5kIGhlIHNhaWQsIElzIG5vdCBoZSByaWdodGx5IG5hbWVkIEphY29iPyBmb3IgaGUgaGF0aCBzdXBwbGFudGVkIG1lIHRoZXNlIHR3byB0aW1lczogaGUgdG9vayBhd2F5IG15IGJpcnRocmlnaHQ7IGFuZCwgYmVob2xkLCBub3cgaGUgaGF0aCB0YWtlbiBhd2F5IG15IGJsZXNzaW5nLiBBbmQgaGUgc2FpZCwgSGFzdCB0aG91IG5vdCByZXNlcnZlZCBhIGJsZXNzaW5nIGZvciBtZT8KQW5kIElzYWFjIGFuc3dlcmVkIGFuZCBzYWlkIHVudG8gRXNhdSwgQmVob2xkLCBJIGhhdmUgbWFkZSBoaW0gdGh5IGxvcmQsIGFuZCBhbGwgaGlzIGJyZXRocmVuIGhhdmUgSSBnaXZlbiB0byBoaW0gZm9yIHNlcnZhbnRzOyBhbmQgd2l0aCBjb3JuIGFuZCB3aW5lIGhhdmUgSSBzdXN0YWluZWQgaGltOiBhbmQgd2hhdCBzaGFsbCBJIGRvIG5vdyB1bnRvIHRoZWUsIG15IHNvbj8KQW5kIEVzYXUgc2FpZCB1bnRvIGhpcyBmYXRoZXIsIEhhc3QgdGhvdSBidXQgb25lIGJsZXNzaW5nLCBteSBmYXRoZXI/IGJsZXNzIG1lLCBldmVuIG1lIGFsc28sIE8gbXkgZmF0aGVyLiBBbmQgRXNhdSBsaWZ0ZWQgdXAgaGlzIHZvaWNlLCBhbmQgd2VwdC4KQW5kIElzYWFjIGhpcyBmYXRoZXIgYW5zd2VyZWQgYW5kIHNhaWQgdW50byBoaW0sIEJlaG9sZCwgdGh5IGR3ZWxsaW5nIHNoYWxsIGJlIHRoZSBmYXRuZXNzIG9mIHRoZSBlYXJ0aCwgYW5kIG9mIHRoZSBkZXcgb2YgaGVhdmVuIGZyb20gYWJvdmU7CkFuZCBieSB0aHkgc3dvcmQgc2hhbHQgdGhvdSBsaXZlLCBhbmQgc2hhbHQgc2VydmUgdGh5IGJyb3RoZXI7IGFuZCBpdCBzaGFsbCBjb21lIHRvIHBhc3Mgd2hlbiB0aG91IHNoYWx0IGhhdmUgdGhlIGRvbWluaW9uLCB0aGF0IHRob3Ugc2hhbHQgYnJlYWsgaGlzIHlva2UgZnJvbSBvZmYgdGh5IG5lY2suCkFuZCBFc2F1IGhhdGVkIEphY29iIGJlY2F1c2Ugb2YgdGhlIGJsZXNzaW5nIHdoZXJld2l0aCBoaXMgZmF0aGVyIGJsZXNzZWQgaGltOiBhbmQgRXNhdSBzYWlkIGluIGhpcyBoZWFydCwgVGhlIGRheXMgb2YgbW91cm5pbmcgZm9yIG15IGZhdGhlciBhcmUgYXQgaGFuZDsgdGhlbiB3aWxsIEkgc2xheSBteSBicm90aGVyIEphY29iLgpBbmQgdGhlc2Ugd29yZHMgb2YgRXNhdSBoZXIgZWxkZXIgc29uIHdlcmUgdG9sZCB0byBSZWJla2FoOiBhbmQgc2hlIHNlbnQgYW5kIGNhbGxlZCBKYWNvYiBoZXIgeW91bmdlciBzb24sIGFuZCBzYWlkIHVudG8gaGltLCBCZWhvbGQsIHRoeSBicm90aGVyIEVzYXUsIGFzIHRvdWNoaW5nIHRoZWUsIGRvdGggY29tZm9ydCBoaW1zZWxmLCBwdXJwb3NpbmcgdG8ga2lsbCB0aGVlLgpOb3cgdGhlcmVmb3JlLCBteSBzb24sIG9iZXkgbXkgdm9pY2U7IGFyaXNlLCBmbGVlIHRob3UgdG8gTGFiYW4gbXkgYnJvdGhlciB0byBIYXJhbjsKQW5kIHRhcnJ5IHdpdGggaGltIGEgZmV3IGRheXMsIHVudGlsIHRoeSBicm90aGVyJ3MgZnVyeSB0dXJuIGF3YXk7ClVudGlsIHRoeSBicm90aGVyJ3MgYW5nZXIgdHVybiBhd2F5IGZyb20gdGhlZSwgYW5kIGhlIGZvcmdldCB0aGF0IHdoaWNoIHRob3UgaGFzdCBkb25lIHRvIGhpbTogdGhlbiBJIHdpbGwgc2VuZCwgYW5kIGZldGNoIHRoZWUgZnJvbSB0aGVuY2U6IHdoeSBzaG91bGQgSSBiZSBkZXByaXZlZCBhbHNvIG9mIHlvdSBib3RoIGluIG9uZSBkYXk/CkFuZCBSZWJla2FoIHNhaWQgdG8gSXNhYWMsIEkgYW0gd2Vhcnkgb2YgbXkgbGlmZSBiZWNhdXNlIG9mIHRoZSBkYXVnaHRlcnMgb2YgSGV0aDogaWYgSmFjb2IgdGFrZSBhIHdpZmUgb2YgdGhlIGRhdWdodGVycyBvZiBIZXRoLCBzdWNoIGFzIHRoZXNlIHdoaWNoIGFyZSBvZiB0aGUgZGF1Z2h0ZXJzIG9mIHRoZSBsYW5kLCB3aGF0IGdvb2Qgc2hhbGwgbXkgbGlmZSBkbyBtZT8KQW5kIElzYWFjIGNhbGxlZCBKYWNvYiwgYW5kIGJsZXNzZWQgaGltLCBhbmQgY2hhcmdlZCBoaW0sIGFuZCBzYWlkIHVudG8gaGltLCBUaG91IHNoYWx0IG5vdCB0YWtlIGEgd2lmZSBvZiB0aGUgZGF1Z2h0ZXJzIG9mIENhbmFhbi4KQXJpc2UsIGdvIHRvIFBhZGFuYXJhbSwgdG8gdGhlIGhvdXNlIG9mIEJldGh1ZWwgdGh5IG1vdGhlcidzIGZhdGhlcjsgYW5kIHRha2UgdGhlZSBhIHdpZmUgZnJvbSB0aGVuY2Ugb2YgdGhlIGRhdWdoZXJzIG9mIExhYmFuIHRoeSBtb3RoZXIncyBicm90aGVyLgpBbmQgR29kIEFsbWlnaHR5IGJsZXNzIHRoZWUsIGFuZCBtYWtlIHRoZWUgZnJ1aXRmdWwsIGFuZCBtdWx0aXBseSB0aGVlLCB0aGF0IHRob3UgbWF5ZXN0IGJlIGEgbXVsdGl0dWRlIG9mIHBlb3BsZTsKQW5kIGdpdmUgdGhlZSB0aGUgYmxlc3Npbmcgb2YgQWJyYWhhbSwgdG8gdGhlZSwgYW5kIHRvIHRoeSBzZWVkIHdpdGggdGhlZTsgdGhhdCB0aG91IG1heWVzdCBpbmhlcml0IHRoZSBsYW5kIHdoZXJlaW4gdGhvdSBhcnQgYSBzdHJhbmdlciwgd2hpY2ggR29kIGdhdmUgdW50byBBYnJhaGFtLgpBbmQgSXNhYWMgc2VudCBhd2F5IEphY29iOiBhbmQgaGUgd2VudCB0byBQYWRhbmFyYW0gdW50byBMYWJhbiwgc29uIG9mIEJldGh1ZWwgdGhlIFN5cmlhbiwgdGhlIGJyb3RoZXIgb2YgUmViZWthaCwgSmFjb2IncyBhbmQgRXNhdSdzIG1vdGhlci4KV2hlbiBFc2F1IHNhdyB0aGF0IElzYWFjIGhhZCBibGVzc2VkIEphY29iLCBhbmQgc2VudCBoaW0gYXdheSB0byBQYWRhbmFyYW0sIHRvIHRha2UgaGltIGEgd2lmZSBmcm9tIHRoZW5jZTsgYW5kIHRoYXQgYXMgaGUgYmxlc3NlZCBoaW0gaGUgZ2F2ZSBoaW0gYSBjaGFyZ2UsIHNheWluZywgVGhvdSBzaGFsdCBub3QgdGFrZSBhIHdpZmUgb2YgdGhlIGRhdWdoZXJzIG9mIENhbmFhbjsKQW5kIHRoYXQgSmFjb2Igb2JleWVkIGhpcyBmYXRoZXIgYW5kIGhpcyBtb3RoZXIsIGFuZCB3YXMgZ29uZSB0byBQYWRhbmFyYW07CkFuZCBFc2F1IHNlZWluZyB0aGF0IHRoZSBkYXVnaHRlcnMgb2YgQ2FuYWFuIHBsZWFzZWQgbm90IElzYWFjIGhpcyBmYXRoZXI7ClRoZW4gd2VudCBFc2F1IHVudG8gSXNobWFlbCwgYW5kIHRvb2sgdW50byB0aGUgd2l2ZXMgd2hpY2ggaGUgaGFkIE1haGFsYXRoIHRoZSBkYXVnaHRlciBvZiBJc2htYWVsIEFicmFoYW0ncyBzb24sIHRoZSBzaXN0ZXIgb2YgTmViYWpvdGgsIHRvIGJlIGhpcyB3aWZlLgpBbmQgSmFjb2Igd2VudCBvdXQgZnJvbSBCZWVyc2hlYmEsIGFuZCB3ZW50IHRvd2FyZCBIYXJhbi4KQW5kIGhlIGxpZ2h0ZWQgdXBvbiBhIGNlcnRhaW4gcGxhY2UsIGFuZCB0YXJyaWVkIHRoZXJlIGFsbCBuaWdodCwgYmVjYXVzZSB0aGUgc3VuIHdhcyBzZXQ7IGFuZCBoZSB0b29rIG9mIHRoZSBzdG9uZXMgb2YgdGhhdCBwbGFjZSwgYW5kIHB1dCB0aGVtIGZvciBoaXMgcGlsbG93cywgYW5kIGxheSBkb3duIGluIHRoYXQgcGxhY2UgdG8gc2xlZXAuCkFuZCBoZSBkcmVhbWVkLCBhbmQgYmVob2xkIGEgbGFkZGVyIHNldCB1cCBvbiB0aGUgZWFydGgsIGFuZCB0aGUgdG9wIG9mIGl0IHJlYWNoZWQgdG8gaGVhdmVuOiBhbmQgYmVob2xkIHRoZSBhbmdlbHMgb2YgR29kIGFzY2VuZGluZyBhbmQgZGVzY2VuZGluZyBvbiBpdC4KQW5kLCBiZWhvbGQsIHRoZSBMT1JEIHN0b29kIGFib3ZlIGl0LCBhbmQgc2FpZCwgSSBhbSB0aGUgTE9SRCBHb2Qgb2YgQWJyYWhhbSB0aHkgZmF0aGVyLCBhbmQgdGhlIEdvZCBvZiBJc2FhYzogdGhlIGxhbmQgd2hlcmVvbiB0aG91IGxpZXN0LCB0byB0aGVlIHdpbGwgSSBnaXZlIGl0LCBhbmQgdG8gdGh5IHNlZWQ7CkFuZCB0aHkgc2VlZCBzaGFsbCBiZSBhcyB0aGUgZHVzdCBvZiB0aGUgZWFydGgsIGFuZCB0aG91IHNoYWx0IHNwcmVhZCBhYnJvYWQgdG8gdGhlIHdlc3QsIGFuZCB0byB0aGUgZWFzdCwgYW5kIHRvIHRoZSBub3J0aCwgYW5kIHRvIHRoZSBzb3V0aDogYW5kIGluIHRoZWUgYW5kIGluIHRoeSBzZWVkIHNoYWxsIGFsbCB0aGUgZmFtaWxpZXMgb2YgdGhlIGVhcnRoIGJlIGJsZXNzZWQuCkFuZCwgYmVob2xkLCBJIGFtIHdpdGggdGhlZSwgYW5kIHdpbGwga2VlcCB0aGVlIGluIGFsbCBwbGFjZXMgd2hpdGhlciB0aG91IGdvZXN0LCBhbmQgd2lsbCBicmluZyB0aGVlIGFnYWluIGludG8gdGhpcyBsYW5kOyBmb3IgSSB3aWxsIG5vdCBsZWF2ZSB0aGVlLCB1bnRpbCBJIGhhdmUgZG9uZSB0aGF0IHdoaWNoIEkgaGF2ZSBzcG9rZW4gdG8gdGhlZSBvZi4KQW5kIEphY29iIGF3YWtlZCBvdXQgb2YgaGlzIHNsZWVwLCBhbmQgaGUgc2FpZCwgU3VyZWx5IHRoZSBMT1JEIGlzIGluIHRoaXMgcGxhY2U7IGFuZCBJIGtuZXcgaXQgbm90LgpBbmQgaGUgd2FzIGFmcmFpZCwgYW5kIHNhaWQsIEhvdyBkcmVhZGZ1bCBpcyB0aGlzIHBsYWNlISB0aGlzIGlzIG5vbmUgb3RoZXIgYnV0IHRoZSBob3VzZSBvZiBHb2QsIGFuZCB0aGlzIGlzIHRoZSBnYXRlIG9mIGhlYXZlbi4KQW5kIEphY29iIHJvc2UgdXAgZWFybHkgaW4gdGhlIG1vcm5pbmcsIGFuZCB0b29rIHRoZSBzdG9uZSB0aGF0IGhlIGhhZCBwdXQgZm9yIGhpcyBwaWxsb3dzLCBhbmQgc2V0IGl0IHVwIGZvciBhIHBpbGxhciwgYW5kIHBvdXJlZCBvaWwgdXBvbiB0aGUgdG9wIG9mIGl0LgpBbmQgaGUgY2FsbGVkIHRoZSBuYW1lIG9mIHRoYXQgcGxhY2UgQmV0aGVsOiBidXQgdGhlIG5hbWUgb2YgdGhhdCBjaXR5IHdhcyBjYWxsZWQgTHV6IGF0IHRoZSBmaXJzdC4KQW5kIEphY29iIHZvd2VkIGEgdm93LCBzYXlpbmcsIElmIEdvZCB3aWxsIGJlIHdpdGggbWUsIGFuZCB3aWxsIGtlZXAgbWUgaW4gdGhpcyB3YXkgdGhhdCBJIGdvLCBhbmQgd2lsbCBnaXZlIG1lIGJyZWFkIHRvIGVhdCwgYW5kIHJhaW1lbnQgdG8gcHV0IG9uLApTbyB0aGF0IEkgY29tZSBhZ2FpbiB0byBteSBmYXRoZXIncyBob3VzZSBpbiBwZWFjZTsgdGhlbiBzaGFsbCB0aGUgTE9SRCBiZSBteSBHb2Q6CkFuZCB0aGlzIHN0b25lLCB3aGljaCBJIGhhdmUgc2V0IGZvciBhIHBpbGxhciwgc2hhbGwgYmUgR29kJ3MgaG91c2U6IGFuZCBvZiBhbGwgdGhhdCB0aG91IHNoYWx0IGdpdmUgbWUgSSB3aWxsIHN1cmVseSBnaXZlIHRoZSB0ZW50aCB1bnRvIHRoZWUuClRoZW4gSmFjb2Igd2VudCBvbiBoaXMgam91cm5leSwgYW5kIGNhbWUgaW50byB0aGUgbGFuZCBvZiB0aGUgcGVvcGxlIG9mIHRoZSBlYXN0LgpBbmQgaGUgbG9va2VkLCBhbmQgYmVob2xkIGEgd2VsbCBpbiB0aGUgZmllbGQsIGFuZCwgbG8sIHRoZXJlIHdlcmUgdGhyZWUgZmxvY2tzIG9mIHNoZWVwIGx5aW5nIGJ5IGl0OyBmb3Igb3V0IG9mIHRoYXQgd2VsbCB0aGV5IHdhdGVyZWQgdGhlIGZsb2NrczogYW5kIGEgZ3JlYXQgc3RvbmUgd2FzIHVwb24gdGhlIHdlbGwncyBtb3V0aC4KQW5kIHRoaXRoZXIgd2VyZSBhbGwgdGhlIGZsb2NrcyBnYXRoZXJlZDogYW5kIHRoZXkgcm9sbGVkIHRoZSBzdG9uZSBmcm9tIHRoZSB3ZWxsJ3MgbW91dGgsIGFuZCB3YXRlcmVkIHRoZSBzaGVlcCwgYW5kIHB1dCB0aGUgc3RvbmUgYWdhaW4gdXBvbiB0aGUgd2VsbCdzIG1vdXRoIGluIGhpcyBwbGFjZS4KQW5kIEphY29iIHNhaWQgdW50byB0aGVtLCBNeSBicmV0aHJlbiwgd2hlbmNlIGJlIHllPyBBbmQgdGhleSBzYWlkLCBPZiBIYXJhbiBhcmUgd2UuCkFuZCBoZSBzYWlkIHVudG8gdGhlbSwgS25vdyB5ZSBMYWJhbiB0aGUgc29uIG9mIE5haG9yPyBBbmQgdGhleSBzYWlkLCBXZSBrbm93IGhpbS4KQW5kIGhlIHNhaWQgdW50byB0aGVtLCBJcyBoZSB3ZWxsPyBBbmQgdGhleSBzYWlkLCBIZSBpcyB3ZWxsOiBhbmQsIGJlaG9sZCwgUmFjaGVsIGhpcyBkYXVnaHRlciBjb21ldGggd2l0aCB0aGUgc2hlZXAuCkFuZCBoZSBzYWlkLCBMbywgaXQgaXMgeWV0IGhpZ2ggZGF5LCBuZWl0aGVyIGlzIGl0IHRpbWUgdGhhdCB0aGUgY2F0dGxlIHNob3VsZCBiZSBnYXRoZXJlZCB0b2dldGhlcjogd2F0ZXIgeWUgdGhlIHNoZWVwLCBhbmQgZ28gYW5kIGZlZWQgdGhlbS4KQW5kIHRoZXkgc2FpZCwgV2UgY2Fubm90LCB1bnRpbCBhbGwgdGhlIGZsb2NrcyBiZSBnYXRoZXJlZCB0b2dldGhlciwgYW5kIHRpbGwgdGhleSByb2xsIHRoZSBzdG9uZSBmcm9tIHRoZSB3ZWxsJ3MgbW91dGg7IHRoZW4gd2Ugd2F0ZXIgdGhlIHNoZWVwLgpBbmQgd2hpbGUgaGUgeWV0IHNwYWtlIHdpdGggdGhlbSwgUmFjaGVsIGNhbWUgd2l0aCBoZXIgZmF0aGVyJ3Mgc2hlZXA7IGZvciBzaGUga2VwdCB0aGVtLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIEphY29iIHNhdyBSYWNoZWwgdGhlIGRhdWdodGVyIG9mIExhYmFuIGhpcyBtb3RoZXIncyBicm90aGVyLCBhbmQgdGhlIHNoZWVwIG9mIExhYmFuIGhpcyBtb3RoZXIncyBicm90aGVyLCB0aGF0IEphY29iIHdlbnQgbmVhciwgYW5kIHJvbGxlZCB0aGUgc3RvbmUgZnJvbSB0aGUgd2VsbCdzIG1vdXRoLCBhbmQgd2F0ZXJlZCB0aGUgZmxvY2sgb2YgTGFiYW4gaGlzIG1vdGhlcidzIGJyb3RoZXIuCkFuZCBKYWNvYiBraXNzZWQgUmFjaGVsLCBhbmQgbGlmdGVkIHVwIGhpcyB2b2ljZSwgYW5kIHdlcHQuCkFuZCBKYWNvYiB0b2xkIFJhY2hlbCB0aGF0IGhlIHdhcyBoZXIgZmF0aGVyJ3MgYnJvdGhlciwgYW5kIHRoYXQgaGUgd2FzIFJlYmVrYWgncyBzb246IGFuZCBzaGUgcmFuIGFuZCB0b2xkIGhlciBmYXRoZXIuCkFuZCBpdCBjYW1lIHRvIHBhc3MsIHdoZW4gTGFiYW4gaGVhcmQgdGhlIHRpZGluZ3Mgb2YgSmFjb2IgaGlzIHNpc3RlcidzIHNvbiwgdGhhdCBoZSByYW4gdG8gbWVldCBoaW0sIGFuZCBlbWJyYWNlZCBoaW0sIGFuZCBraXNzZWQgaGltLCBhbmQgYnJvdWdodCBoaW0gdG8gaGlzIGhvdXNlLiBBbmQgaGUgdG9sZCBMYWJhbiBhbGwgdGhlc2UgdGhpbmdzLgpBbmQgTGFiYW4gc2FpZCB0byBoaW0sIFN1cmVseSB0aG91IGFydCBteSBib25lIGFuZCBteSBmbGVzaC4gQW5kIGhlIGFib2RlIHdpdGggaGltIHRoZSBzcGFjZSBvZiBhIG1vbnRoLgpBbmQgTGFiYW4gc2FpZCB1bnRvIEphY29iLCBCZWNhdXNlIHRob3UgYXJ0IG15IGJyb3RoZXIsIHNob3VsZGVzdCB0aG91IHRoZXJlZm9yZSBzZXJ2ZSBtZSBmb3Igbm91Z2h0PyB0ZWxsIG1lLCB3aGF0IHNoYWxsIHRoeSB3YWdlcyBiZT8KQW5kIExhYmFuIGhhZCB0d28gZGF1Z2h0ZXJzOiB0aGUgbmFtZSBvZiB0aGUgZWxkZXIgd2FzIExlYWgsIGFuZCB0aGUgbmFtZSBvZiB0aGUgeW91bmdlciB3YXMgUmFjaGVsLgpMZWFoIHdhcyB0ZW5kZXIgZXllZDsgYnV0IFJhY2hlbCB3YXMgYmVhdXRpZnVsIGFuZCB3ZWxsIGZhdm91cmVkLgpBbmQgSmFjb2IgbG92ZWQgUmFjaGVsOyBhbmQgc2FpZCwgSSB3aWxsIHNlcnZlIHRoZWUgc2V2ZW4geWVhcnMgZm9yIFJhY2hlbCB0aHkgeW91bmdlciBkYXVnaHRlci4KQW5kIExhYmFuIHNhaWQsIEl0IGlzIGJldHRlciB0aGF0IEkgZ2l2ZSBoZXIgdG8gdGhlZSwgdGhhbiB0aGF0IEkgc2hvdWxkIGdpdmUgaGVyIHRvIGFub3RoZXIgbWFuOiBhYmlkZSB3aXRoIG1lLgpBbmQgSmFjb2Igc2VydmVkIHNldmVuIHllYXJzIGZvciBSYWNoZWw7IGFuZCB0aGV5IHNlZW1lZCB1bnRvIGhpbSBidXQgYSBmZXcgZGF5cywgZm9yIHRoZSBsb3ZlIGhlIGhhZCB0byBoZXIuCkFuZCBKYWNvYiBzYWlkIHVudG8gTGFiYW4sIEdpdmUgbWUgbXkgd2lmZSwgZm9yIG15IGRheXMgYXJlIGZ1bGZpbGxlZCwgdGhhdCBJIG1heSBnbyBpbiB1bnRvIGhlci4KQW5kIExhYmFuIGdhdGhlcmVkIHRvZ2V0aGVyIGFsbCB0aGUgbWVuIG9mIHRoZSBwbGFjZSwgYW5kIG1hZGUgYSBmZWFzdC4KQW5kIGl0IGNhbWUgdG8gcGFzcyBpbiB0aGUgZXZlbmluZywgdGhhdCBoZSB0b29rIExlYWggaGlzIGRhdWdodGVyLCBhbmQgYnJvdWdodCBoZXIgdG8gaGltOyBhbmQgaGUgd2VudCBpbiB1bnRvIGhlci4KQW5kIExhYmFuIGdhdmUgdW50byBoaXMgZGF1Z2h0ZXIgTGVhaCBaaWxwYWggaGlzIG1haWQgZm9yIGFuIGhhbmRtYWlkLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB0aGF0IGluIHRoZSBtb3JuaW5nLCBiZWhvbGQsIGl0IHdhcyBMZWFoOiBhbmQgaGUgc2FpZCB0byBMYWJhbiwgV2hhdCBpcyB0aGlzIHRob3UgaGFzdCBkb25lIHVudG8gbWU/IGRpZCBub3QgSSBzZXJ2ZSB3aXRoIHRoZWUgZm9yIFJhY2hlbD8gd2hlcmVmb3JlIHRoZW4gaGFzdCB0aG91IGJlZ3VpbGVkIG1lPwpBbmQgTGFiYW4gc2FpZCwgSXQgbXVzdCBub3QgYmUgc28gZG9uZSBpbiBvdXIgY291bnRyeSwgdG8gZ2l2ZSB0aGUgeW91bmdlciBiZWZvcmUgdGhlIGZpcnN0Ym9ybi4KRnVsZmlsIGhlciB3ZWVrLCBhbmQgd2Ugd2lsbCBnaXZlIHRoZWUgdGhpcyBhbHNvIGZvciB0aGUgc2VydmljZSB3aGljaCB0aG91IHNoYWx0IHNlcnZlIHdpdGggbWUgeWV0IHNldmVuIG90aGVyIHllYXJzLgpBbmQgSmFjb2IgZGlkIHNvLCBhbmQgZnVsZmlsbGVkIGhlciB3ZWVrOiBhbmQgaGUgZ2F2ZSBoaW0gUmFjaGVsIGhpcyBkYXVnaHRlciB0byB3aWZlIGFsc28uCkFuZCBMYWJhbiBnYXZlIHRvIFJhY2hlbCBoaXMgZGF1Z2h0ZXIgQmlsaGFoIGhpcyBoYW5kbWFpZCB0byBiZSBoZXIgbWFpZC4KQW5kIGhlIHdlbnQgaW4gYWxzbyB1bnRvIFJhY2hlbCwgYW5kIGhlIGxvdmVkIGFsc28gUmFjaGVsIG1vcmUgdGhhbiBMZWFoLCBhbmQgc2VydmVkIHdpdGggaGltIHlldCBzZXZlbiBvdGhlciB5ZWFycy4KQW5kIHdoZW4gdGhlIExPUkQgc2F3IHRoYXQgTGVhaCB3YXMgaGF0ZWQsIGhlIG9wZW5lZCBoZXIgd29tYjogYnV0IFJhY2hlbCB3YXMgYmFycmVuLgpBbmQgTGVhaCBjb25jZWl2ZWQsIGFuZCBiYXJlIGEgc29uLCBhbmQgc2hlIGNhbGxlZCBoaXMgbmFtZSBSZXViZW46IGZvciBzaGUgc2FpZCwgU3VyZWx5IHRoZSBMT1JEIGhhdGggbG9va2VkIHVwb24gbXkgYWZmbGljdGlvbjsgbm93IHRoZXJlZm9yZSBteSBodXNiYW5kIHdpbGwgbG92ZSBtZS4KQW5kIHNoZSBjb25jZWl2ZWQgYWdhaW4sIGFuZCBiYXJlIGEgc29uOyBhbmQgc2FpZCwgQmVjYXVzZSB0aGUgTE9SRCBoYXRoIGhlYXJkIEkgd2FzIGhhdGVkLCBoZSBoYXRoIHRoZXJlZm9yZSBnaXZlbiBtZSB0aGlzIHNvbiBhbHNvOiBhbmQgc2hlIGNhbGxlZCBoaXMgbmFtZSBTaW1lb24uCkFuZCBzaGUgY29uY2VpdmVkIGFnYWluLCBhbmQgYmFyZSBhIHNvbjsgYW5kIHNhaWQsIE5vdyB0aGlzIHRpbWUgd2lsbCBteSBodXNiYW5kIGJlIGpvaW5lZCB1bnRvIG1lLCBiZWNhdXNlIEkgaGF2ZSBib3JuIGhpbSB0aHJlZSBzb25zOiB0aGVyZWZvcmUgd2FzIGhpcyBuYW1lIGNhbGxlZCBMZXZpLgpBbmQgc2hlIGNvbmNlaXZlZCBhZ2FpbiwgYW5kIGJhcmUgYSBzb246IGFuZCBzaGUgc2FpZCwgTm93IHdpbGwgSSBwcmFpc2UgdGhlIExPUkQ6IHRoZXJlZm9yZSBzaGUgY2FsbGVkIGhpcyBuYW1lIEp1ZGFoOyBhbmQgbGVmdCBiZWFyaW5nLgpBbmQgd2hlbiBSYWNoZWwgc2F3IHRoYXQgc2hlIGJhcmUgSmFjb2Igbm8gY2hpbGRyZW4sIFJhY2hlbCBlbnZpZWQgaGVyIHNpc3RlcjsgYW5kIHNhaWQgdW50byBKYWNvYiwgR2l2ZSBtZSBjaGlsZHJlbiwgb3IgZWxzZSBJIGRpZS4KQW5kIEphY29iJ3MgYW5nZXIgd2FzIGtpbmRsZWQgYWdhaW5zdCBSYWNoZWw6IGFuZCBoZSBzYWlkLCBBbSBJIGluIEdvZCdzIHN0ZWFkLCB3aG8gaGF0aCB3aXRoaGVsZCBmcm9tIHRoZWUgdGhlIGZydWl0IG9mIHRoZSB3b21iPwpBbmQgc2hlIHNhaWQsIEJlaG9sZCBteSBtYWlkIEJpbGhhaCwgZ28gaW4gdW50byBoZXI7IGFuZCBzaGUgc2hhbGwgYmVhciB1cG9uIG15IGtuZWVzLCB0aGF0IEkgbWF5IGFsc28gaGF2ZSBjaGlsZHJlbiBieSBoZXIuCkFuZCBzaGUgZ2F2ZSBoaW0gQmlsaGFoIGhlciBoYW5kbWFpZCB0byB3aWZlOiBhbmQgSmFjb2Igd2VudCBpbiB1bnRvIGhlci4KQW5kIEJpbGhhaCBjb25jZWl2ZWQsIGFuZCBiYXJlIEphY29iIGEgc29uLgpBbmQgUmFjaGVsIHNhaWQsIEdvZCBoYXRoIGp1ZGdlZCBtZSwgYW5kIGhhdGggYWxzbyBoZWFyZCBteSB2b2ljZSwgYW5kIGhhdGggZ2l2ZW4gbWUgYSBzb246IHRoZXJlZm9yZSBjYWxsZWQgc2hlIGhpcyBuYW1lIERhbi4KQW5kIEJpbGhhaCBSYWNoZWwncyBtYWlkIGNvbmNlaXZlZCBhZ2FpbiwgYW5kIGJhcmUgSmFjb2IgYSBzZWNvbmQgc29uLgpBbmQgUmFjaGVsIHNhaWQsIFdpdGggZ3JlYXQgd3Jlc3RsaW5ncyBoYXZlIEkgd3Jlc3RsZWQgd2l0aCBteSBzaXN0ZXIsIGFuZCBJIGhhdmUgcHJldmFpbGVkOiBhbmQgc2hlIGNhbGxlZCBoaXMgbmFtZSBOYXBodGFsaS4KV2hlbiBMZWFoIHNhdyB0aGF0IHNoZSBoYWQgbGVmdCBiZWFyaW5nLCBzaGUgdG9vayBaaWxwYWggaGVyIG1haWQsIGFuZCBnYXZlIGhlciBKYWNvYiB0byB3aWZlLgpBbmQgWmlscGFoIExlYWgncyBtYWlkIGJhcmUgSmFjb2IgYSBzb24uCkFuZCBMZWFoIHNhaWQsIEEgdHJvb3AgY29tZXRoOiBhbmQgc2hlIGNhbGxlZCBoaXMgbmFtZSBHYWQuCkFuZCBaaWxwYWggTGVhaCdzIG1haWQgYmFyZSBKYWNvYiBhIHNlY29uZCBzb24uCkFuZCBMZWFoIHNhaWQsIEhhcHB5IGFtIEksIGZvciB0aGUgZGF1Z2h0ZXJzIHdpbGwgY2FsbCBtZSBibGVzc2VkOiBhbmQgc2hlIGNhbGxlZCBoaXMgbmFtZSBBc2hlci4KQW5kIFJldWJlbiB3ZW50IGluIHRoZSBkYXlzIG9mIHdoZWF0IGhhcnZlc3QsIGFuZCBmb3VuZCBtYW5kcmFrZXMgaW4gdGhlIGZpZWxkLCBhbmQgYnJvdWdodCB0aGVtIHVudG8gaGlzIG1vdGhlciBMZWFoLiBUaGVuIFJhY2hlbCBzYWlkIHRvIExlYWgsIEdpdmUgbWUsIEkgcHJheSB0aGVlLCBvZiB0aHkgc29uJ3MgbWFuZHJha2VzLgpBbmQgc2hlIHNhaWQgdW50byBoZXIsIElzIGl0IGEgc21hbGwgbWF0dGVyIHRoYXQgdGhvdSBoYXN0IHRha2VuIG15IGh1c2JhbmQ/IGFuZCB3b3VsZGVzdCB0aG91IHRha2UgYXdheSBteSBzb24ncyBtYW5kcmFrZXMgYWxzbz8gQW5kIFJhY2hlbCBzYWlkLCBUaGVyZWZvcmUgaGUgc2hhbGwgbGllIHdpdGggdGhlZSB0byBuaWdodCBmb3IgdGh5IHNvbidzIG1hbmRyYWtlcy4KQW5kIEphY29iIGNhbWUgb3V0IG9mIHRoZSBmaWVsZCBpbiB0aGUgZXZlbmluZywgYW5kIExlYWggd2VudCBvdXQgdG8gbWVldCBoaW0sIGFuZCBzYWlkLCBUaG91IG11c3QgY29tZSBpbiB1bnRvIG1lOyBmb3Igc3VyZWx5IEkgaGF2ZSBoaXJlZCB0aGVlIHdpdGggbXkgc29uJ3MgbWFuZHJha2VzLiBBbmQgaGUgbGF5IHdpdGggaGVyIHRoYXQgbmlnaHQuCkFuZCBHb2QgaGVhcmtlbmVkIHVudG8gTGVhaCwgYW5kIHNoZSBjb25jZWl2ZWQsIGFuZCBiYXJlIEphY29iIHRoZSBmaWZ0aCBzb24uCkFuZCBMZWFoIHNhaWQsIEdvZCBoYXRoIGdpdmVuIG1lIG15IGhpcmUsIGJlY2F1c2UgSSBoYXZlIGdpdmVuIG15IG1haWRlbiB0byBteSBodXNiYW5kOiBhbmQgc2hlIGNhbGxlZCBoaXMgbmFtZSBJc3NhY2hhci4KQW5kIExlYWggY29uY2VpdmVkIGFnYWluLCBhbmQgYmFyZSBKYWNvYiB0aGUgc2l4dGggc29uLgpBbmQgTGVhaCBzYWlkLCBHb2QgaGF0aCBlbmR1ZWQgbWUgd2l0aCBhIGdvb2QgZG93cnk7IG5vdyB3aWxsIG15IGh1c2JhbmQgZHdlbGwgd2l0aCBtZSwgYmVjYXVzZSBJIGhhdmUgYm9ybiBoaW0gc2l4IHNvbnM6IGFuZCBzaGUgY2FsbGVkIGhpcyBuYW1lIFplYnVsdW4uCkFuZCBhZnRlcndhcmRzIHNoZSBiYXJlIGEgZGF1Z2h0ZXIsIGFuZCBjYWxsZWQgaGVyIG5hbWUgRGluYWguCkFuZCBHb2QgcmVtZW1iZXJlZCBSYWNoZWwsIGFuZCBHb2QgaGVhcmtlbmVkIHRvIGhlciwgYW5kIG9wZW5lZCBoZXIgd29tYi4KQW5kIHNoZSBjb25jZWl2ZWQsIGFuZCBiYXJlIGEgc29uOyBhbmQgc2FpZCwgR29kIGhhdGggdGFrZW4gYXdheSBteSByZXByb2FjaDoKQW5kIHNoZSBjYWxsZWQgaGlzIG5hbWUgSm9zZXBoOyBhbmQgc2FpZCwgVGhlIExPUkQgc2hhbGwgYWRkIHRvIG1lIGFub3RoZXIgc29uLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIFJhY2hlbCBoYWQgYm9ybiBKb3NlcGgsIHRoYXQgSmFjb2Igc2FpZCB1bnRvIExhYmFuLCBTZW5kIG1lIGF3YXksIHRoYXQgSSBtYXkgZ28gdW50byBtaW5lIG93biBwbGFjZSwgYW5kIHRvIG15IGNvdW50cnkuCkdpdmUgbWUgbXkgd2l2ZXMgYW5kIG15IGNoaWxkcmVuLCBmb3Igd2hvbSBJIGhhdmUgc2VydmVkIHRoZWUsIGFuZCBsZXQgbWUgZ286IGZvciB0aG91IGtub3dlc3QgbXkgc2VydmljZSB3aGljaCBJIGhhdmUgZG9uZSB0aGVlLgpBbmQgTGFiYW4gc2FpZCB1bnRvIGhpbSwgSSBwcmF5IHRoZWUsIGlmIEkgaGF2ZSBmb3VuZCBmYXZvdXIgaW4gdGhpbmUgZXllcywgdGFycnk6IGZvciBJIGhhdmUgbGVhcm5lZCBieSBleHBlcmllbmNlIHRoYXQgdGhlIExPUkQgaGF0aCBibGVzc2VkIG1lIGZvciB0aHkgc2FrZS4KQW5kIGhlIHNhaWQsIEFwcG9pbnQgbWUgdGh5IHdhZ2VzLCBhbmQgSSB3aWxsIGdpdmUgaXQuCkFuZCBoZSBzYWlkIHVudG8gaGltLCBUaG91IGtub3dlc3QgaG93IEkgaGF2ZSBzZXJ2ZWQgdGhlZSwgYW5kIGhvdyB0aHkgY2F0dGxlIHdhcyB3aXRoIG1lLgpGb3IgaXQgd2FzIGxpdHRsZSB3aGljaCB0aG91IGhhZHN0IGJlZm9yZSBJIGNhbWUsIGFuZCBpdCBpcyBub3cgaW5jcmVhc2VkIHVudG8gYSBtdWx0aXR1ZGU7IGFuZCB0aGUgTE9SRCBoYXRoIGJsZXNzZWQgdGhlZSBzaW5jZSBteSBjb21pbmc6IGFuZCBub3cgd2hlbiBzaGFsbCBJIHByb3ZpZGUgZm9yIG1pbmUgb3duIGhvdXNlIGFsc28/CkFuZCBoZSBzYWlkLCBXaGF0IHNoYWxsIEkgZ2l2ZSB0aGVlPyBBbmQgSmFjb2Igc2FpZCwgVGhvdSBzaGFsdCBub3QgZ2l2ZSBtZSBhbnkgdGhpbmc6IGlmIHRob3Ugd2lsdCBkbyB0aGlzIHRoaW5nIGZvciBtZSwgSSB3aWxsIGFnYWluIGZlZWQgYW5kIGtlZXAgdGh5IGZsb2NrLgpJIHdpbGwgcGFzcyB0aHJvdWdoIGFsbCB0aHkgZmxvY2sgdG8gZGF5LCByZW1vdmluZyBmcm9tIHRoZW5jZSBhbGwgdGhlIHNwZWNrbGVkIGFuZCBzcG90dGVkIGNhdHRsZSwgYW5kIGFsbCB0aGUgYnJvd24gY2F0dGxlIGFtb25nIHRoZSBzaGVlcCwgYW5kIHRoZSBzcG90dGVkIGFuZCBzcGVja2xlZCBhbW9uZyB0aGUgZ29hdHM6IGFuZCBvZiBzdWNoIHNoYWxsIGJlIG15IGhpcmUuClNvIHNoYWxsIG15IHJpZ2h0ZW91c25lc3MgYW5zd2VyIGZvciBtZSBpbiB0aW1lIHRvIGNvbWUsIHdoZW4gaXQgc2hhbGwgY29tZSBmb3IgbXkgaGlyZSBiZWZvcmUgdGh5IGZhY2U6IGV2ZXJ5IG9uZSB0aGF0IGlzIG5vdCBzcGVja2xlZCBhbmQgc3BvdHRlZCBhbW9uZyB0aGUgZ29hdHMsIGFuZCBicm93biBhbW9uZyB0aGUgc2hlZXAsIHRoYXQgc2hhbGwgYmUgY291bnRlZCBzdG9sZW4gd2l0aCBtZS4KQW5kIExhYmFuIHNhaWQsIEJlaG9sZCwgSSB3b3VsZCBpdCBtaWdodCBiZSBhY2NvcmRpbmcgdG8gdGh5IHdvcmQuCkFuZCBoZSByZW1vdmVkIHRoYXQgZGF5IHRoZSBoZSBnb2F0cyB0aGF0IHdlcmUgcmluZ3N0cmFrZWQgYW5kIHNwb3R0ZWQsIGFuZCBhbGwgdGhlIHNoZSBnb2F0cyB0aGF0IHdlcmUgc3BlY2tsZWQgYW5kIHNwb3R0ZWQsIGFuZCBldmVyeSBvbmUgdGhhdCBoYWQgc29tZSB3aGl0ZSBpbiBpdCwgYW5kIGFsbCB0aGUgYnJvd24gYW1vbmcgdGhlIHNoZWVwLCBhbmQgZ2F2ZSB0aGVtIGludG8gdGhlIGhhbmQgb2YgaGlzIHNvbnMuCkFuZCBoZSBzZXQgdGhyZWUgZGF5cycgam91cm5leSBiZXR3aXh0IGhpbXNlbGYgYW5kIEphY29iOiBhbmQgSmFjb2IgZmVkIHRoZSByZXN0IG9mIExhYmFuJ3MgZmxvY2tzLgpBbmQgSmFjb2IgdG9vayBoaW0gcm9kcyBvZiBncmVlbiBwb3BsYXIsIGFuZCBvZiB0aGUgaGF6ZWwgYW5kIGNoZXNudXQgdHJlZTsgYW5kIHBpbGxlZCB3aGl0ZSBzdHJha2VzIGluIHRoZW0sIGFuZCBtYWRlIHRoZSB3aGl0ZSBhcHBlYXIgd2hpY2ggd2FzIGluIHRoZSByb2RzLgpBbmQgaGUgc2V0IHRoZSByb2RzIHdoaWNoIGhlIGhhZCBwaWxsZWQgYmVmb3JlIHRoZSBmbG9ja3MgaW4gdGhlIGd1dHRlcnMgaW4gdGhlIHdhdGVyaW5nIHRyb3VnaHMgd2hlbiB0aGUgZmxvY2tzIGNhbWUgdG8gZHJpbmssIHRoYXQgdGhleSBzaG91bGQgY29uY2VpdmUgd2hlbiB0aGV5IGNhbWUgdG8gZHJpbmsuCkFuZCB0aGUgZmxvY2tzIGNvbmNlaXZlZCBiZWZvcmUgdGhlIHJvZHMsIGFuZCBicm91Z2h0IGZvcnRoIGNhdHRsZSByaW5nc3RyYWtlZCwgc3BlY2tsZWQsIGFuZCBzcG90dGVkLgpBbmQgSmFjb2IgZGlkIHNlcGFyYXRlIHRoZSBsYW1icywgYW5kIHNldCB0aGUgZmFjZXMgb2YgdGhlIGZsb2NrcyB0b3dhcmQgdGhlIHJpbmdzdHJha2VkLCBhbmQgYWxsIHRoZSBicm93biBpbiB0aGUgZmxvY2sgb2YgTGFiYW47IGFuZCBoZSBwdXQgaGlzIG93biBmbG9ja3MgYnkgdGhlbXNlbHZlcywgYW5kIHB1dCB0aGVtIG5vdCB1bnRvIExhYmFuJ3MgY2F0dGxlLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuc29ldmVyIHRoZSBzdHJvbmdlciBjYXR0bGUgZGlkIGNvbmNlaXZlLCB0aGF0IEphY29iIGxhaWQgdGhlIHJvZHMgYmVmb3JlIHRoZSBleWVzIG9mIHRoZSBjYXR0bGUgaW4gdGhlIGd1dHRlcnMsIHRoYXQgdGhleSBtaWdodCBjb25jZWl2ZSBhbW9uZyB0aGUgcm9kcy4KQnV0IHdoZW4gdGhlIGNhdHRsZSB3ZXJlIGZlZWJsZSwgaGUgcHV0IHRoZW0gbm90IGluOiBzbyB0aGUgZmVlYmxlciB3ZXJlIExhYmFuJ3MsIGFuZCB0aGUgc3Ryb25nZXIgSmFjb2Incy4KQW5kIHRoZSBtYW4gaW5jcmVhc2VkIGV4Y2VlZGluZ2x5LCBhbmQgaGFkIG11Y2ggY2F0dGxlLCBhbmQgbWFpZHNlcnZhbnRzLCBhbmQgbWVuc2VydmFudHMsIGFuZCBjYW1lbHMsIGFuZCBhc3Nlcy4KQW5kIGhlIGhlYXJkIHRoZSB3b3JkcyBvZiBMYWJhbidzIHNvbnMsIHNheWluZywgSmFjb2IgaGF0aCB0YWtlbiBhd2F5IGFsbCB0aGF0IHdhcyBvdXIgZmF0aGVyJ3M7IGFuZCBvZiB0aGF0IHdoaWNoIHdhcyBvdXIgZmF0aGVyJ3MgaGF0aCBoZSBnb3R0ZW4gYWxsIHRoaXMgZ2xvcnkuCkFuZCBKYWNvYiBiZWhlbGQgdGhlIGNvdW50ZW5hbmNlIG9mIExhYmFuLCBhbmQsIGJlaG9sZCwgaXQgd2FzIG5vdCB0b3dhcmQgaGltIGFzIGJlZm9yZS4KQW5kIHRoZSBMT1JEIHNhaWQgdW50byBKYWNvYiwgUmV0dXJuIHVudG8gdGhlIGxhbmQgb2YgdGh5IGZhdGhlcnMsIGFuZCB0byB0aHkga2luZHJlZDsgYW5kIEkgd2lsbCBiZSB3aXRoIHRoZWUuCkFuZCBKYWNvYiBzZW50IGFuZCBjYWxsZWQgUmFjaGVsIGFuZCBMZWFoIHRvIHRoZSBmaWVsZCB1bnRvIGhpcyBmbG9jaywKQW5kIHNhaWQgdW50byB0aGVtLCBJIHNlZSB5b3VyIGZhdGhlcidzIGNvdW50ZW5hbmNlLCB0aGF0IGl0IGlzIG5vdCB0b3dhcmQgbWUgYXMgYmVmb3JlOyBidXQgdGhlIEdvZCBvZiBteSBmYXRoZXIgaGF0aCBiZWVuIHdpdGggbWUuCkFuZCB5ZSBrbm93IHRoYXQgd2l0aCBhbGwgbXkgcG93ZXIgSSBoYXZlIHNlcnZlZCB5b3VyIGZhdGhlci4KQW5kIHlvdXIgZmF0aGVyIGhhdGggZGVjZWl2ZWQgbWUsIGFuZCBjaGFuZ2VkIG15IHdhZ2VzIHRlbiB0aW1lczsgYnV0IEdvZCBzdWZmZXJlZCBoaW0gbm90IHRvIGh1cnQgbWUuCklmIGhlIHNhaWQgdGh1cywgVGhlIHNwZWNrbGVkIHNoYWxsIGJlIHRoeSB3YWdlczsgdGhlbiBhbGwgdGhlIGNhdHRsZSBiYXJlIHNwZWNrbGVkOiBhbmQgaWYgaGUgc2FpZCB0aHVzLCBUaGUgcmluZ3N0cmFrZWQgc2hhbGwgYmUgdGh5IGhpcmU7IHRoZW4gYmFyZSBhbGwgdGhlIGNhdHRsZSByaW5nc3RyYWtlZC4KVGh1cyBHb2QgaGF0aCB0YWtlbiBhd2F5IHRoZSBjYXR0bGUgb2YgeW91ciBmYXRoZXIsIGFuZCBnaXZlbiB0aGVtIHRvIG1lLgpBbmQgaXQgY2FtZSB0byBwYXNzIGF0IHRoZSB0aW1lIHRoYXQgdGhlIGNhdHRsZSBjb25jZWl2ZWQsIHRoYXQgSSBsaWZ0ZWQgdXAgbWluZSBleWVzLCBhbmQgc2F3IGluIGEgZHJlYW0sIGFuZCwgYmVob2xkLCB0aGUgcmFtcyB3aGljaCBsZWFwZWQgdXBvbiB0aGUgY2F0dGxlIHdlcmUgcmluZ3N0cmFrZWQsIHNwZWNrbGVkLCBhbmQgZ3Jpc2xlZC4KQW5kIHRoZSBhbmdlbCBvZiBHb2Qgc3Bha2UgdW50byBtZSBpbiBhIGRyZWFtLCBzYXlpbmcsIEphY29iOiBBbmQgSSBzYWlkLCBIZXJlIGFtIEkuCkFuZCBoZSBzYWlkLCBMaWZ0IHVwIG5vdyB0aGluZSBleWVzLCBhbmQgc2VlLCBhbGwgdGhlIHJhbXMgd2hpY2ggbGVhcCB1cG9uIHRoZSBjYXR0bGUgYXJlIHJpbmdzdHJha2VkLCBzcGVja2xlZCwgYW5kIGdyaXNsZWQ6IGZvciBJIGhhdmUgc2VlbiBhbGwgdGhhdCBMYWJhbiBkb2V0aCB1bnRvIHRoZWUuCkkgYW0gdGhlIEdvZCBvZiBCZXRoZWwsIHdoZXJlIHRob3UgYW5vaW50ZWRzdCB0aGUgcGlsbGFyLCBhbmQgd2hlcmUgdGhvdSB2b3dlZHN0IGEgdm93IHVudG8gbWU6IG5vdyBhcmlzZSwgZ2V0IHRoZWUgb3V0IGZyb20gdGhpcyBsYW5kLCBhbmQgcmV0dXJuIHVudG8gdGhlIGxhbmQgb2YgdGh5IGtpbmRyZWQuCkFuZCBSYWNoZWwgYW5kIExlYWggYW5zd2VyZWQgYW5kIHNhaWQgdW50byBoaW0sIElzIHRoZXJlIHlldCBhbnkgcG9ydGlvbiBvciBpbmhlcml0YW5jZSBmb3IgdXMgaW4gb3VyIGZhdGhlcidzIGhvdXNlPwpBcmUgd2Ugbm90IGNvdW50ZWQgb2YgaGltIHN0cmFuZ2Vycz8gZm9yIGhlIGhhdGggc29sZCB1cywgYW5kIGhhdGggcXVpdGUgZGV2b3VyZWQgYWxzbyBvdXIgbW9uZXkuCkZvciBhbGwgdGhlIHJpY2hlcyB3aGljaCBHb2QgaGF0aCB0YWtlbiBmcm9tIG91ciBmYXRoZXIsIHRoYXQgaXMgb3VycywgYW5kIG91ciBjaGlsZHJlbidzOiBub3cgdGhlbiwgd2hhdHNvZXZlciBHb2QgaGF0aCBzYWlkIHVudG8gdGhlZSwgZG8uClRoZW4gSmFjb2Igcm9zZSB1cCwgYW5kIHNldCBoaXMgc29ucyBhbmQgaGlzIHdpdmVzIHVwb24gY2FtZWxzOwpBbmQgaGUgY2FycmllZCBhd2F5IGFsbCBoaXMgY2F0dGxlLCBhbmQgYWxsIGhpcyBnb29kcyB3aGljaCBoZSBoYWQgZ290dGVuLCB0aGUgY2F0dGxlIG9mIGhpcyBnZXR0aW5nLCB3aGljaCBoZSBoYWQgZ290dGVuIGluIFBhZGFuYXJhbSwgZm9yIHRvIGdvIHRvIElzYWFjIGhpcyBmYXRoZXIgaW4gdGhlIGxhbmQgb2YgQ2FuYWFuLgpBbmQgTGFiYW4gd2VudCB0byBzaGVhciBoaXMgc2hlZXA6IGFuZCBSYWNoZWwgaGFkIHN0b2xlbiB0aGUgaW1hZ2VzIHRoYXQgd2VyZSBoZXIgZmF0aGVyJ3MuCkFuZCBKYWNvYiBzdG9sZSBhd2F5IHVuYXdhcmVzIHRvIExhYmFuIHRoZSBTeXJpYW4sIGluIHRoYXQgaGUgdG9sZCBoaW0gbm90IHRoYXQgaGUgZmxlZC4KU28gaGUgZmxlZCB3aXRoIGFsbCB0aGF0IGhlIGhhZDsgYW5kIGhlIHJvc2UgdXAsIGFuZCBwYXNzZWQgb3ZlciB0aGUgcml2ZXIsIGFuZCBzZXQgaGlzIGZhY2UgdG93YXJkIHRoZSBtb3VudCBHaWxlYWQuCkFuZCBpdCB3YXMgdG9sZCBMYWJhbiBvbiB0aGUgdGhpcmQgZGF5IHRoYXQgSmFjb2Igd2FzIGZsZWQuCkFuZCBoZSB0b29rIGhpcyBicmV0aHJlbiB3aXRoIGhpbSwgYW5kIHB1cnN1ZWQgYWZ0ZXIgaGltIHNldmVuIGRheXMnIGpvdXJuZXk7IGFuZCB0aGV5IG92ZXJ0b29rIGhpbSBpbiB0aGUgbW91bnQgR2lsZWFkLgpBbmQgR29kIGNhbWUgdG8gTGFiYW4gdGhlIFN5cmlhbiBpbiBhIGRyZWFtIGJ5IG5pZ2h0LCBhbmQgc2FpZCB1bnRvIGhpbSwgVGFrZSBoZWVkIHRoYXQgdGhvdSBzcGVhayBub3QgdG8gSmFjb2IgZWl0aGVyIGdvb2Qgb3IgYmFkLgpUaGVuIExhYmFuIG92ZXJ0b29rIEphY29iLiBOb3cgSmFjb2IgaGFkIHBpdGNoZWQgaGlzIHRlbnQgaW4gdGhlIG1vdW50OiBhbmQgTGFiYW4gd2l0aCBoaXMgYnJldGhyZW4gcGl0Y2hlZCBpbiB0aGUgbW91bnQgb2YgR2lsZWFkLgpBbmQgTGFiYW4gc2FpZCB0byBKYWNvYiwgV2hhdCBoYXN0IHRob3UgZG9uZSwgdGhhdCB0aG91IGhhc3Qgc3RvbGVuIGF3YXkgdW5hd2FyZXMgdG8gbWUsIGFuZCBjYXJyaWVkIGF3YXkgbXkgZGF1Z2h0ZXJzLCBhcyBjYXB0aXZlcyB0YWtlbiB3aXRoIHRoZSBzd29yZD8KV2hlcmVmb3JlIGRpZHN0IHRob3UgZmxlZSBhd2F5IHNlY3JldGx5LCBhbmQgc3RlYWwgYXdheSBmcm9tIG1lOyBhbmQgZGlkc3Qgbm90IHRlbGwgbWUsIHRoYXQgSSBtaWdodCBoYXZlIHNlbnQgdGhlZSBhd2F5IHdpdGggbWlydGgsIGFuZCB3aXRoIHNvbmdzLCB3aXRoIHRhYnJldCwgYW5kIHdpdGggaGFycD8KQW5kIGhhc3Qgbm90IHN1ZmZlcmVkIG1lIHRvIGtpc3MgbXkgc29ucyBhbmQgbXkgZGF1Z2h0ZXJzPyB0aG91IGhhc3Qgbm93IGRvbmUgZm9vbGlzaGx5IGluIHNvIGRvaW5nLgpJdCBpcyBpbiB0aGUgcG93ZXIgb2YgbXkgaGFuZCB0byBkbyB5b3UgaHVydDogYnV0IHRoZSBHb2Qgb2YgeW91ciBmYXRoZXIgc3Bha2UgdW50byBtZSB5ZXN0ZXJuaWdodCwgc2F5aW5nLCBUYWtlIHRob3UgaGVlZCB0aGF0IHRob3Ugc3BlYWsgbm90IHRvIEphY29iIGVpdGhlciBnb29kIG9yIGJhZC4KQW5kIG5vdywgdGhvdWdoIHRob3Ugd291bGRlc3QgbmVlZHMgYmUgZ29uZSwgYmVjYXVzZSB0aG91IHNvcmUgbG9uZ2Vkc3QgYWZ0ZXIgdGh5IGZhdGhlcidzIGhvdXNlLCB5ZXQgd2hlcmVmb3JlIGhhc3QgdGhvdSBzdG9sZW4gbXkgZ29kcz8KQW5kIEphY29iIGFuc3dlcmVkIGFuZCBzYWlkIHRvIExhYmFuLCBCZWNhdXNlIEkgd2FzIGFmcmFpZDogZm9yIEkgc2FpZCwgUGVyYWR2ZW50dXJlIHRob3Ugd291bGRlc3QgdGFrZSBieSBmb3JjZSB0aHkgZGF1Z2h0ZXJzIGZyb20gbWUuCldpdGggd2hvbXNvZXZlciB0aG91IGZpbmRlc3QgdGh5IGdvZHMsIGxldCBoaW0gbm90IGxpdmU6IGJlZm9yZSBvdXIgYnJldGhyZW4gZGlzY2VybiB0aG91IHdoYXQgaXMgdGhpbmUgd2l0aCBtZSwgYW5kIHRha2UgaXQgdG8gdGhlZS4gRm9yIEphY29iIGtuZXcgbm90IHRoYXQgUmFjaGVsIGhhZCBzdG9sZW4gdGhlbS4KQW5kIExhYmFuIHdlbnQgaW50byBKYWNvYidzIHRlbnQsIGFuZCBpbnRvIExlYWgncyB0ZW50LCBhbmQgaW50byB0aGUgdHdvIG1haWRzZXJ2YW50cycgdGVudHM7IGJ1dCBoZSBmb3VuZCB0aGVtIG5vdC4gVGhlbiB3ZW50IGhlIG91dCBvZiBMZWFoJ3MgdGVudCwgYW5kIGVudGVyZWQgaW50byBSYWNoZWwncyB0ZW50LgpOb3cgUmFjaGVsIGhhZCB0YWtlbiB0aGUgaW1hZ2VzLCBhbmQgcHV0IHRoZW0gaW4gdGhlIGNhbWVsJ3MgZnVybml0dXJlLCBhbmQgc2F0IHVwb24gdGhlbS4gQW5kIExhYmFuIHNlYXJjaGVkIGFsbCB0aGUgdGVudCwgYnV0IGZvdW5kIHRoZW0gbm90LgpBbmQgc2hlIHNhaWQgdG8gaGVyIGZhdGhlciwgTGV0IGl0IG5vdCBkaXNwbGVhc2UgbXkgbG9yZCB0aGF0IEkgY2Fubm90IHJpc2UgdXAgYmVmb3JlIHRoZWU7IGZvciB0aGUgY3VzdG9tIG9mIHdvbWVuIGlzIHVwb24gbWUuIEFuZCBoZSBzZWFyY2hlZCBidXQgZm91bmQgbm90IHRoZSBpbWFnZXMuCkFuZCBKYWNvYiB3YXMgd3JvdGgsIGFuZCBjaG9kZSB3aXRoIExhYmFuOiBhbmQgSmFjb2IgYW5zd2VyZWQgYW5kIHNhaWQgdG8gTGFiYW4sIFdoYXQgaXMgbXkgdHJlc3Bhc3M/IHdoYXQgaXMgbXkgc2luLCB0aGF0IHRob3UgaGFzdCBzbyBob3RseSBwdXJzdWVkIGFmdGVyIG1lPwpXaGVyZWFzIHRob3UgaGFzdCBzZWFyY2hlZCBhbGwgbXkgc3R1ZmYsIHdoYXQgaGFzdCB0aG91IGZvdW5kIG9mIGFsbCB0aHkgaG91c2Vob2xkIHN0dWZmPyBzZXQgaXQgaGVyZSBiZWZvcmUgbXkgYnJldGhyZW4gYW5kIHRoeSBicmV0aHJlbiwgdGhhdCB0aGV5IG1heSBqdWRnZSBiZXR3aXh0IHVzIGJvdGguClRoaXMgdHdlbnR5IHllYXJzIGhhdmUgSSBiZWVuIHdpdGggdGhlZTsgdGh5IGV3ZXMgYW5kIHRoeSBzaGUgZ29hdHMgaGF2ZSBub3QgY2FzdCB0aGVpciB5b3VuZywgYW5kIHRoZSByYW1zIG9mIHRoeSBmbG9jayBoYXZlIEkgbm90IGVhdGVuLgpUaGF0IHdoaWNoIHdhcyB0b3JuIG9mIGJlYXN0cyBJIGJyb3VnaHQgbm90IHVudG8gdGhlZTsgSSBiYXJlIHRoZSBsb3NzIG9mIGl0OyBvZiBteSBoYW5kIGRpZHN0IHRob3UgcmVxdWlyZSBpdCwgd2hldGhlciBzdG9sZW4gYnkgZGF5LCBvciBzdG9sZW4gYnkgbmlnaHQuClRodXMgSSB3YXM7IGluIHRoZSBkYXkgdGhlIGRyb3VnaHQgY29uc3VtZWQgbWUsIGFuZCB0aGUgZnJvc3QgYnkgbmlnaHQ7IGFuZCBteSBzbGVlcCBkZXBhcnRlZCBmcm9tIG1pbmUgZXllcy4KVGh1cyBoYXZlIEkgYmVlbiB0d2VudHkgeWVhcnMgaW4gdGh5IGhvdXNlOyBJIHNlcnZlZCB0aGVlIGZvdXJ0ZWVuIHllYXJzIGZvciB0aHkgdHdvIGRhdWdodGVycywgYW5kIHNpeCB5ZWFycyBmb3IgdGh5IGNhdHRsZTogYW5kIHRob3UgaGFzdCBjaGFuZ2VkIG15IHdhZ2VzIHRlbiB0aW1lcy4KRXhjZXB0IHRoZSBHb2Qgb2YgbXkgZmF0aGVyLCB0aGUgR29kIG9mIEFicmFoYW0sIGFuZCB0aGUgZmVhciBvZiBJc2FhYywgaGFkIGJlZW4gd2l0aCBtZSwgc3VyZWx5IHRob3UgaGFkc3Qgc2VudCBtZSBhd2F5IG5vdyBlbXB0eS4gR29kIGhhdGggc2VlbiBtaW5lIGFmZmxpY3Rpb24gYW5kIHRoZSBsYWJvdXIgb2YgbXkgaGFuZHMsIGFuZCByZWJ1a2VkIHRoZWUgeWVzdGVybmlnaHQuCkFuZCBMYWJhbiBhbnN3ZXJlZCBhbmQgc2FpZCB1bnRvIEphY29iLCBUaGVzZSBkYXVnaHRlcnMgYXJlIG15IGRhdWdodGVycywgYW5kIHRoZXNlIGNoaWxkcmVuIGFyZSBteSBjaGlsZHJlbiwgYW5kIHRoZXNlIGNhdHRsZSBhcmUgbXkgY2F0dGxlLCBhbmQgYWxsIHRoYXQgdGhvdSBzZWVzdCBpcyBtaW5lOiBhbmQgd2hhdCBjYW4gSSBkbyB0aGlzIGRheSB1bnRvIHRoZXNlIG15IGRhdWdodGVycywgb3IgdW50byB0aGVpciBjaGlsZHJlbiB3aGljaCB0aGV5IGhhdmUgYm9ybj8KTm93IHRoZXJlZm9yZSBjb21lIHRob3UsIGxldCB1cyBtYWtlIGEgY292ZW5hbnQsIEkgYW5kIHRob3U7IGFuZCBsZXQgaXQgYmUgZm9yIGEgd2l0bmVzcyBiZXR3ZWVuIG1lIGFuZCB0aGVlLgpBbmQgSmFjb2IgdG9vayBhIHN0b25lLCBhbmQgc2V0IGl0IHVwIGZvciBhIHBpbGxhci4KQW5kIEphY29iIHNhaWQgdW50byBoaXMgYnJldGhyZW4sIEdhdGhlciBzdG9uZXM7IGFuZCB0aGV5IHRvb2sgc3RvbmVzLCBhbmQgbWFkZSBhbiBoZWFwOiBhbmQgdGhleSBkaWQgZWF0IHRoZXJlIHVwb24gdGhlIGhlYXAuCkFuZCBMYWJhbiBjYWxsZWQgaXQgSmVnYXJzYWhhZHV0aGE6IGJ1dCBKYWNvYiBjYWxsZWQgaXQgR2FsZWVkLgpBbmQgTGFiYW4gc2FpZCwgVGhpcyBoZWFwIGlzIGEgd2l0bmVzcyBiZXR3ZWVuIG1lIGFuZCB0aGVlIHRoaXMgZGF5LiBUaGVyZWZvcmUgd2FzIHRoZSBuYW1lIG9mIGl0IGNhbGxlZCBHYWxlZWQ7CkFuZCBNaXpwYWg7IGZvciBoZSBzYWlkLCBUaGUgTE9SRCB3YXRjaCBiZXR3ZWVuIG1lIGFuZCB0aGVlLCB3aGVuIHdlIGFyZSBhYnNlbnQgb25lIGZyb20gYW5vdGhlci4KSWYgdGhvdSBzaGFsdCBhZmZsaWN0IG15IGRhdWdodGVycywgb3IgaWYgdGhvdSBzaGFsdCB0YWtlIG90aGVyIHdpdmVzIGJlc2lkZSBteSBkYXVnaHRlcnMsIG5vIG1hbiBpcyB3aXRoIHVzOyBzZWUsIEdvZCBpcyB3aXRuZXNzIGJldHdpeHQgbWUgYW5kIHRoZWUuCkFuZCBMYWJhbiBzYWlkIHRvIEphY29iLCBCZWhvbGQgdGhpcyBoZWFwLCBhbmQgYmVob2xkIHRoaXMgcGlsbGFyLCB3aGljaCBJIGhhdmUgY2FzdCBiZXR3aXh0IG1lIGFuZCB0aGVlOgpUaGlzIGhlYXAgYmUgd2l0bmVzcywgYW5kIHRoaXMgcGlsbGFyIGJlIHdpdG5lc3MsIHRoYXQgSSB3aWxsIG5vdCBwYXNzIG92ZXIgdGhpcyBoZWFwIHRvIHRoZWUsIGFuZCB0aGF0IHRob3Ugc2hhbHQgbm90IHBhc3Mgb3ZlciB0aGlzIGhlYXAgYW5kIHRoaXMgcGlsbGFyIHVudG8gbWUsIGZvciBoYXJtLgpUaGUgR29kIG9mIEFicmFoYW0sIGFuZCB0aGUgR29kIG9mIE5haG9yLCB0aGUgR29kIG9mIHRoZWlyIGZhdGhlciwganVkZ2UgYmV0d2l4dCB1cy4gQW5kIEphY29iIHN3YXJlIGJ5IHRoZSBmZWFyIG9mIGhpcyBmYXRoZXIgSXNhYWMuClRoZW4gSmFjb2Igb2ZmZXJlZCBzYWNyaWZpY2UgdXBvbiB0aGUgbW91bnQsIGFuZCBjYWxsZWQgaGlzIGJyZXRocmVuIHRvIGVhdCBicmVhZDogYW5kIHRoZXkgZGlkIGVhdCBicmVhZCwgYW5kIHRhcnJpZWQgYWxsIG5pZ2h0IGluIHRoZSBtb3VudC4KQW5kIGVhcmx5IGluIHRoZSBtb3JuaW5nIExhYmFuIHJvc2UgdXAsIGFuZCBraXNzZWQgaGlzIHNvbnMgYW5kIGhpcyBkYXVnaHRlcnMsIGFuZCBibGVzc2VkIHRoZW06IGFuZCBMYWJhbiBkZXBhcnRlZCwgYW5kIHJldHVybmVkIHVudG8gaGlzIHBsYWNlLgpBbmQgSmFjb2Igd2VudCBvbiBoaXMgd2F5LCBhbmQgdGhlIGFuZ2VscyBvZiBHb2QgbWV0IGhpbS4KQW5kIHdoZW4gSmFjb2Igc2F3IHRoZW0sIGhlIHNhaWQsIFRoaXMgaXMgR29kJ3MgaG9zdDogYW5kIGhlIGNhbGxlZCB0aGUgbmFtZSBvZiB0aGF0IHBsYWNlIE1haGFuYWltLgpBbmQgSmFjb2Igc2VudCBtZXNzZW5nZXJzIGJlZm9yZSBoaW0gdG8gRXNhdSBoaXMgYnJvdGhlciB1bnRvIHRoZSBsYW5kIG9mIFNlaXIsIHRoZSBjb3VudHJ5IG9mIEVkb20uCkFuZCBoZSBjb21tYW5kZWQgdGhlbSwgc2F5aW5nLCBUaHVzIHNoYWxsIHllIHNwZWFrIHVudG8gbXkgbG9yZCBFc2F1OyBUaHkgc2VydmFudCBKYWNvYiBzYWl0aCB0aHVzLCBJIGhhdmUgc29qb3VybmVkIHdpdGggTGFiYW4sIGFuZCBzdGF5ZWQgdGhlcmUgdW50aWwgbm93OgpBbmQgSSBoYXZlIG94ZW4sIGFuZCBhc3NlcywgZmxvY2tzLCBhbmQgbWVuc2VydmFudHMsIGFuZCB3b21lbnNlcnZhbnRzOiBhbmQgSSBoYXZlIHNlbnQgdG8gdGVsbCBteSBsb3JkLCB0aGF0IEkgbWF5IGZpbmQgZ3JhY2UgaW4gdGh5IHNpZ2h0LgpBbmQgdGhlIG1lc3NlbmdlcnMgcmV0dXJuZWQgdG8gSmFjb2IsIHNheWluZywgV2UgY2FtZSB0byB0aHkgYnJvdGhlciBFc2F1LCBhbmQgYWxzbyBoZSBjb21ldGggdG8gbWVldCB0aGVlLCBhbmQgZm91ciBodW5kcmVkIG1lbiB3aXRoIGhpbS4KVGhlbiBKYWNvYiB3YXMgZ3JlYXRseSBhZnJhaWQgYW5kIGRpc3RyZXNzZWQ6IGFuZCBoZSBkaXZpZGVkIHRoZSBwZW9wbGUgdGhhdCB3YXMgd2l0aCBoaW0sIGFuZCB0aGUgZmxvY2tzLCBhbmQgaGVyZHMsIGFuZCB0aGUgY2FtZWxzLCBpbnRvIHR3byBiYW5kczsKQW5kIHNhaWQsIElmIEVzYXUgY29tZSB0byB0aGUgb25lIGNvbXBhbnksIGFuZCBzbWl0ZSBpdCwgdGhlbiB0aGUgb3RoZXIgY29tcGFueSB3aGljaCBpcyBsZWZ0IHNoYWxsIGVzY2FwZS4KQW5kIEphY29iIHNhaWQsIE8gR29kIG9mIG15IGZhdGhlciBBYnJhaGFtLCBhbmQgR29kIG9mIG15IGZhdGhlciBJc2FhYywgdGhlIExPUkQgd2hpY2ggc2FpZHN0IHVudG8gbWUsIFJldHVybiB1bnRvIHRoeSBjb3VudHJ5LCBhbmQgdG8gdGh5IGtpbmRyZWQsIGFuZCBJIHdpbGwgZGVhbCB3ZWxsIHdpdGggdGhlZToKSSBhbSBub3Qgd29ydGh5IG9mIHRoZSBsZWFzdCBvZiBhbGwgdGhlIG1lcmNpZXMsIGFuZCBvZiBhbGwgdGhlIHRydXRoLCB3aGljaCB0aG91IGhhc3Qgc2hld2VkIHVudG8gdGh5IHNlcnZhbnQ7IGZvciB3aXRoIG15IHN0YWZmIEkgcGFzc2VkIG92ZXIgdGhpcyBKb3JkYW47IGFuZCBub3cgSSBhbSBiZWNvbWUgdHdvIGJhbmRzLgpEZWxpdmVyIG1lLCBJIHByYXkgdGhlZSwgZnJvbSB0aGUgaGFuZCBvZiBteSBicm90aGVyLCBmcm9tIHRoZSBoYW5kIG9mIEVzYXU6IGZvciBJIGZlYXIgaGltLCBsZXN0IGhlIHdpbGwgY29tZSBhbmQgc21pdGUgbWUsIGFuZCB0aGUgbW90aGVyIHdpdGggdGhlIGNoaWxkcmVuLgpBbmQgdGhvdSBzYWlkc3QsIEkgd2lsbCBzdXJlbHkgZG8gdGhlZSBnb29kLCBhbmQgbWFrZSB0aHkgc2VlZCBhcyB0aGUgc2FuZCBvZiB0aGUgc2VhLCB3aGljaCBjYW5ub3QgYmUgbnVtYmVyZWQgZm9yIG11bHRpdHVkZS4KQW5kIGhlIGxvZGdlZCB0aGVyZSB0aGF0IHNhbWUgbmlnaHQ7IGFuZCB0b29rIG9mIHRoYXQgd2hpY2ggY2FtZSB0byBoaXMgaGFuZCBhIHByZXNlbnQgZm9yIEVzYXUgaGlzIGJyb3RoZXI7ClR3byBodW5kcmVkIHNoZSBnb2F0cywgYW5kIHR3ZW50eSBoZSBnb2F0cywgdHdvIGh1bmRyZWQgZXdlcywgYW5kIHR3ZW50eSByYW1zLApUaGlydHkgbWlsY2ggY2FtZWxzIHdpdGggdGhlaXIgY29sdHMsIGZvcnR5IGtpbmUsIGFuZCB0ZW4gYnVsbHMsIHR3ZW50eSBzaGUgYXNzZXMsIGFuZCB0ZW4gZm9hbHMuCkFuZCBoZSBkZWxpdmVyZWQgdGhlbSBpbnRvIHRoZSBoYW5kIG9mIGhpcyBzZXJ2YW50cywgZXZlcnkgZHJvdmUgYnkgdGhlbXNlbHZlczsgYW5kIHNhaWQgdW50byBoaXMgc2VydmFudHMsIFBhc3Mgb3ZlciBiZWZvcmUgbWUsIGFuZCBwdXQgYSBzcGFjZSBiZXR3aXh0IGRyb3ZlIGFuZCBkcm92ZS4KQW5kIGhlIGNvbW1hbmRlZCB0aGUgZm9yZW1vc3QsIHNheWluZywgV2hlbiBFc2F1IG15IGJyb3RoZXIgbWVldGV0aCB0aGVlLCBhbmQgYXNrZXRoIHRoZWUsIHNheWluZywgV2hvc2UgYXJ0IHRob3U/IGFuZCB3aGl0aGVyIGdvZXN0IHRob3U/IGFuZCB3aG9zZSBhcmUgdGhlc2UgYmVmb3JlIHRoZWU/ClRoZW4gdGhvdSBzaGFsdCBzYXksIFRoZXkgYmUgdGh5IHNlcnZhbnQgSmFjb2InczsgaXQgaXMgYSBwcmVzZW50IHNlbnQgdW50byBteSBsb3JkIEVzYXU6IGFuZCwgYmVob2xkLCBhbHNvIGhlIGlzIGJlaGluZCB1cy4KQW5kIHNvIGNvbW1hbmRlZCBoZSB0aGUgc2Vjb25kLCBhbmQgdGhlIHRoaXJkLCBhbmQgYWxsIHRoYXQgZm9sbG93ZWQgdGhlIGRyb3Zlcywgc2F5aW5nLCBPbiB0aGlzIG1hbm5lciBzaGFsbCB5ZSBzcGVhayB1bnRvIEVzYXUsIHdoZW4geWUgZmluZCBoaW0uCkFuZCBzYXkgeWUgbW9yZW92ZXIsIEJlaG9sZCwgdGh5IHNlcnZhbnQgSmFjb2IgaXMgYmVoaW5kIHVzLiBGb3IgaGUgc2FpZCwgSSB3aWxsIGFwcGVhc2UgaGltIHdpdGggdGhlIHByZXNlbnQgdGhhdCBnb2V0aCBiZWZvcmUgbWUsIGFuZCBhZnRlcndhcmQgSSB3aWxsIHNlZSBoaXMgZmFjZTsgcGVyYWR2ZW50dXJlIGhlIHdpbGwgYWNjZXB0IG9mIG1lLgpTbyB3ZW50IHRoZSBwcmVzZW50IG92ZXIgYmVmb3JlIGhpbTogYW5kIGhpbXNlbGYgbG9kZ2VkIHRoYXQgbmlnaHQgaW4gdGhlIGNvbXBhbnkuCkFuZCBoZSByb3NlIHVwIHRoYXQgbmlnaHQsIGFuZCB0b29rIGhpcyB0d28gd2l2ZXMsIGFuZCBoaXMgdHdvIHdvbWVuc2VydmFudHMsIGFuZCBoaXMgZWxldmVuIHNvbnMsIGFuZCBwYXNzZWQgb3ZlciB0aGUgZm9yZCBKYWJib2suCkFuZCBoZSB0b29rIHRoZW0sIGFuZCBzZW50IHRoZW0gb3ZlciB0aGUgYnJvb2ssIGFuZCBzZW50IG92ZXIgdGhhdCBoZSBoYWQuCkFuZCBKYWNvYiB3YXMgbGVmdCBhbG9uZTsgYW5kIHRoZXJlIHdyZXN0bGVkIGEgbWFuIHdpdGggaGltIHVudGlsIHRoZSBicmVha2luZyBvZiB0aGUgZGF5LgpBbmQgd2hlbiBoZSBzYXcgdGhhdCBoZSBwcmV2YWlsZWQgbm90IGFnYWluc3QgaGltLCBoZSB0b3VjaGVkIHRoZSBob2xsb3cgb2YgaGlzIHRoaWdoOyBhbmQgdGhlIGhvbGxvdyBvZiBKYWNvYidzIHRoaWdoIHdhcyBvdXQgb2Ygam9pbnQsIGFzIGhlIHdyZXN0bGVkIHdpdGggaGltLgpBbmQgaGUgc2FpZCwgTGV0IG1lIGdvLCBmb3IgdGhlIGRheSBicmVha2V0aC4gQW5kIGhlIHNhaWQsIEkgd2lsbCBub3QgbGV0IHRoZWUgZ28sIGV4Y2VwdCB0aG91IGJsZXNzIG1lLgpBbmQgaGUgc2FpZCB1bnRvIGhpbSwgV2hhdCBpcyB0aHkgbmFtZT8gQW5kIGhlIHNhaWQsIEphY29iLgpBbmQgaGUgc2FpZCwgVGh5IG5hbWUgc2hhbGwgYmUgY2FsbGVkIG5vIG1vcmUgSmFjb2IsIGJ1dCBJc3JhZWw6IGZvciBhcyBhIHByaW5jZSBoYXN0IHRob3UgcG93ZXIgd2l0aCBHb2QgYW5kIHdpdGggbWVuLCBhbmQgaGFzdCBwcmV2YWlsZWQuCkFuZCBKYWNvYiBhc2tlZCBoaW0sIGFuZCBzYWlkLCBUZWxsIG1lLCBJIHByYXkgdGhlZSwgdGh5IG5hbWUuIEFuZCBoZSBzYWlkLCBXaGVyZWZvcmUgaXMgaXQgdGhhdCB0aG91IGRvc3QgYXNrIGFmdGVyIG15IG5hbWU/IEFuZCBoZSBibGVzc2VkIGhpbSB0aGVyZS4KQW5kIEphY29iIGNhbGxlZCB0aGUgbmFtZSBvZiB0aGUgcGxhY2UgUGVuaWVsOiBmb3IgSSBoYXZlIHNlZW4gR29kIGZhY2UgdG8gZmFjZSwgYW5kIG15IGxpZmUgaXMgcHJlc2VydmVkLgpBbmQgYXMgaGUgcGFzc2VkIG92ZXIgUGVudWVsIHRoZSBzdW4gcm9zZSB1cG9uIGhpbSwgYW5kIGhlIGhhbHRlZCB1cG9uIGhpcyB0aGlnaC4KVGhlcmVmb3JlIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgZWF0IG5vdCBvZiB0aGUgc2luZXcgd2hpY2ggc2hyYW5rLCB3aGljaCBpcyB1cG9uIHRoZSBob2xsb3cgb2YgdGhlIHRoaWdoLCB1bnRvIHRoaXMgZGF5OiBiZWNhdXNlIGhlIHRvdWNoZWQgdGhlIGhvbGxvdyBvZiBKYWNvYidzIHRoaWdoIGluIHRoZSBzaW5ldyB0aGF0IHNocmFuay4KQW5kIEphY29iIGxpZnRlZCB1cCBoaXMgZXllcywgYW5kIGxvb2tlZCwgYW5kLCBiZWhvbGQsIEVzYXUgY2FtZSwgYW5kIHdpdGggaGltIGZvdXIgaHVuZHJlZCBtZW4uIEFuZCBoZSBkaXZpZGVkIHRoZSBjaGlsZHJlbiB1bnRvIExlYWgsIGFuZCB1bnRvIFJhY2hlbCwgYW5kIHVudG8gdGhlIHR3byBoYW5kbWFpZHMuCkFuZCBoZSBwdXQgdGhlIGhhbmRtYWlkcyBhbmQgdGhlaXIgY2hpbGRyZW4gZm9yZW1vc3QsIGFuZCBMZWFoIGFuZCBoZXIgY2hpbGRyZW4gYWZ0ZXIsIGFuZCBSYWNoZWwgYW5kIEpvc2VwaCBoaW5kZXJtb3N0LgpBbmQgaGUgcGFzc2VkIG92ZXIgYmVmb3JlIHRoZW0sIGFuZCBib3dlZCBoaW1zZWxmIHRvIHRoZSBncm91bmQgc2V2ZW4gdGltZXMsIHVudGlsIGhlIGNhbWUgbmVhciB0byBoaXMgYnJvdGhlci4KQW5kIEVzYXUgcmFuIHRvIG1lZXQgaGltLCBhbmQgZW1icmFjZWQgaGltLCBhbmQgZmVsbCBvbiBoaXMgbmVjaywgYW5kIGtpc3NlZCBoaW06IGFuZCB0aGV5IHdlcHQuCkFuZCBoZSBsaWZ0ZWQgdXAgaGlzIGV5ZXMsIGFuZCBzYXcgdGhlIHdvbWVuIGFuZCB0aGUgY2hpbGRyZW47IGFuZCBzYWlkLCBXaG8gYXJlIHRob3NlIHdpdGggdGhlZT8gQW5kIGhlIHNhaWQsIFRoZSBjaGlsZHJlbiB3aGljaCBHb2QgaGF0aCBncmFjaW91c2x5IGdpdmVuIHRoeSBzZXJ2YW50LgpUaGVuIHRoZSBoYW5kbWFpZGVucyBjYW1lIG5lYXIsIHRoZXkgYW5kIHRoZWlyIGNoaWxkcmVuLCBhbmQgdGhleSBib3dlZCB0aGVtc2VsdmVzLgpBbmQgTGVhaCBhbHNvIHdpdGggaGVyIGNoaWxkcmVuIGNhbWUgbmVhciwgYW5kIGJvd2VkIHRoZW1zZWx2ZXM6IGFuZCBhZnRlciBjYW1lIEpvc2VwaCBuZWFyIGFuZCBSYWNoZWwsIGFuZCB0aGV5IGJvd2VkIHRoZW1zZWx2ZXMuCkFuZCBoZSBzYWlkLCBXaGF0IG1lYW5lc3QgdGhvdSBieSBhbGwgdGhpcyBkcm92ZSB3aGljaCBJIG1ldD8gQW5kIGhlIHNhaWQsIFRoZXNlIGFyZSB0byBmaW5kIGdyYWNlIGluIHRoZSBzaWdodCBvZiBteSBsb3JkLgpBbmQgRXNhdSBzYWlkLCBJIGhhdmUgZW5vdWdoLCBteSBicm90aGVyOyBrZWVwIHRoYXQgdGhvdSBoYXN0IHVudG8gdGh5c2VsZi4KQW5kIEphY29iIHNhaWQsIE5heSwgSSBwcmF5IHRoZWUsIGlmIG5vdyBJIGhhdmUgZm91bmQgZ3JhY2UgaW4gdGh5IHNpZ2h0LCB0aGVuIHJlY2VpdmUgbXkgcHJlc2VudCBhdCBteSBoYW5kOiBmb3IgdGhlcmVmb3JlIEkgaGF2ZSBzZWVuIHRoeSBmYWNlLCBhcyB0aG91Z2ggSSBoYWQgc2VlbiB0aGUgZmFjZSBvZiBHb2QsIGFuZCB0aG91IHdhc3QgcGxlYXNlZCB3aXRoIG1lLgpUYWtlLCBJIHByYXkgdGhlZSwgbXkgYmxlc3NpbmcgdGhhdCBpcyBicm91Z2h0IHRvIHRoZWU7IGJlY2F1c2UgR29kIGhhdGggZGVhbHQgZ3JhY2lvdXNseSB3aXRoIG1lLCBhbmQgYmVjYXVzZSBJIGhhdmUgZW5vdWdoLiBBbmQgaGUgdXJnZWQgaGltLCBhbmQgaGUgdG9vayBpdC4KQW5kIGhlIHNhaWQsIExldCB1cyB0YWtlIG91ciBqb3VybmV5LCBhbmQgbGV0IHVzIGdvLCBhbmQgSSB3aWxsIGdvIGJlZm9yZSB0aGVlLgpBbmQgaGUgc2FpZCB1bnRvIGhpbSwgTXkgbG9yZCBrbm93ZXRoIHRoYXQgdGhlIGNoaWxkcmVuIGFyZSB0ZW5kZXIsIGFuZCB0aGUgZmxvY2tzIGFuZCBoZXJkcyB3aXRoIHlvdW5nIGFyZSB3aXRoIG1lOiBhbmQgaWYgbWVuIHNob3VsZCBvdmVyZHJpdmUgdGhlbSBvbmUgZGF5LCBhbGwgdGhlIGZsb2NrIHdpbGwgZGllLgpMZXQgbXkgbG9yZCwgSSBwcmF5IHRoZWUsIHBhc3Mgb3ZlciBiZWZvcmUgaGlzIHNlcnZhbnQ6IGFuZCBJIHdpbGwgbGVhZCBvbiBzb2Z0bHksIGFjY29yZGluZyBhcyB0aGUgY2F0dGxlIHRoYXQgZ29ldGggYmVmb3JlIG1lIGFuZCB0aGUgY2hpbGRyZW4gYmUgYWJsZSB0byBlbmR1cmUsIHVudGlsIEkgY29tZSB1bnRvIG15IGxvcmQgdW50byBTZWlyLgpBbmQgRXNhdSBzYWlkLCBMZXQgbWUgbm93IGxlYXZlIHdpdGggdGhlZSBzb21lIG9mIHRoZSBmb2xrIHRoYXQgYXJlIHdpdGggbWUuIEFuZCBoZSBzYWlkLCBXaGF0IG5lZWRldGggaXQ/IGxldCBtZSBmaW5kIGdyYWNlIGluIHRoZSBzaWdodCBvZiBteSBsb3JkLgpTbyBFc2F1IHJldHVybmVkIHRoYXQgZGF5IG9uIGhpcyB3YXkgdW50byBTZWlyLgpBbmQgSmFjb2Igam91cm5leWVkIHRvIFN1Y2NvdGgsIGFuZCBidWlsdCBoaW0gYW4gaG91c2UsIGFuZCBtYWRlIGJvb3RocyBmb3IgaGlzIGNhdHRsZTogdGhlcmVmb3JlIHRoZSBuYW1lIG9mIHRoZSBwbGFjZSBpcyBjYWxsZWQgU3VjY290aC4KQW5kIEphY29iIGNhbWUgdG8gU2hhbGVtLCBhIGNpdHkgb2YgU2hlY2hlbSwgd2hpY2ggaXMgaW4gdGhlIGxhbmQgb2YgQ2FuYWFuLCB3aGVuIGhlIGNhbWUgZnJvbSBQYWRhbmFyYW07IGFuZCBwaXRjaGVkIGhpcyB0ZW50IGJlZm9yZSB0aGUgY2l0eS4KQW5kIGhlIGJvdWdodCBhIHBhcmNlbCBvZiBhIGZpZWxkLCB3aGVyZSBoZSBoYWQgc3ByZWFkIGhpcyB0ZW50LCBhdCB0aGUgaGFuZCBvZiB0aGUgY2hpbGRyZW4gb2YgSGFtb3IsIFNoZWNoZW0ncyBmYXRoZXIsIGZvciBhbiBodW5kcmVkIHBpZWNlcyBvZiBtb25leS4KQW5kIGhlIGVyZWN0ZWQgdGhlcmUgYW4gYWx0YXIsIGFuZCBjYWxsZWQgaXQgRWxlbG9oZUlzcmFlbC4KQW5kIERpbmFoIHRoZSBkYXVnaHRlciBvZiBMZWFoLCB3aGljaCBzaGUgYmFyZSB1bnRvIEphY29iLCB3ZW50IG91dCB0byBzZWUgdGhlIGRhdWdodGVycyBvZiB0aGUgbGFuZC4KQW5kIHdoZW4gU2hlY2hlbSB0aGUgc29uIG9mIEhhbW9yIHRoZSBIaXZpdGUsIHByaW5jZSBvZiB0aGUgY291bnRyeSwgc2F3IGhlciwgaGUgdG9vayBoZXIsIGFuZCBsYXkgd2l0aCBoZXIsIGFuZCBkZWZpbGVkIGhlci4KQW5kIGhpcyBzb3VsIGNsYXZlIHVudG8gRGluYWggdGhlIGRhdWdodGVyIG9mIEphY29iLCBhbmQgaGUgbG92ZWQgdGhlIGRhbXNlbCwgYW5kIHNwYWtlIGtpbmRseSB1bnRvIHRoZSBkYW1zZWwuCkFuZCBTaGVjaGVtIHNwYWtlIHVudG8gaGlzIGZhdGhlciBIYW1vciwgc2F5aW5nLCBHZXQgbWUgdGhpcyBkYW1zZWwgdG8gd2lmZS4KQW5kIEphY29iIGhlYXJkIHRoYXQgaGUgaGFkIGRlZmlsZWQgRGluYWggaGlzIGRhdWdodGVyOiBub3cgaGlzIHNvbnMgd2VyZSB3aXRoIGhpcyBjYXR0bGUgaW4gdGhlIGZpZWxkOiBhbmQgSmFjb2IgaGVsZCBoaXMgcGVhY2UgdW50aWwgdGhleSB3ZXJlIGNvbWUuCkFuZCBIYW1vciB0aGUgZmF0aGVyIG9mIFNoZWNoZW0gd2VudCBvdXQgdW50byBKYWNvYiB0byBjb21tdW5lIHdpdGggaGltLgpBbmQgdGhlIHNvbnMgb2YgSmFjb2IgY2FtZSBvdXQgb2YgdGhlIGZpZWxkIHdoZW4gdGhleSBoZWFyZCBpdDogYW5kIHRoZSBtZW4gd2VyZSBncmlldmVkLCBhbmQgdGhleSB3ZXJlIHZlcnkgd3JvdGgsIGJlY2F1c2UgaGUgaGFkIHdyb3VnaHQgZm9sbHkgaW4gSXNyYWVsIGluIGx5aW5nIHdpdGggSmFjb2IncyBkYXVnaHRlcjogd2hpY2ggdGhpbmcgb3VnaHQgbm90IHRvIGJlIGRvbmUuCkFuZCBIYW1vciBjb21tdW5lZCB3aXRoIHRoZW0sIHNheWluZywgVGhlIHNvdWwgb2YgbXkgc29uIFNoZWNoZW0gbG9uZ2V0aCBmb3IgeW91ciBkYXVnaHRlcjogSSBwcmF5IHlvdSBnaXZlIGhlciBoaW0gdG8gd2lmZS4KQW5kIG1ha2UgeWUgbWFycmlhZ2VzIHdpdGggdXMsIGFuZCBnaXZlIHlvdXIgZGF1Z2h0ZXJzIHVudG8gdXMsIGFuZCB0YWtlIG91ciBkYXVnaHRlcnMgdW50byB5b3UuCkFuZCB5ZSBzaGFsbCBkd2VsbCB3aXRoIHVzOiBhbmQgdGhlIGxhbmQgc2hhbGwgYmUgYmVmb3JlIHlvdTsgZHdlbGwgYW5kIHRyYWRlIHllIHRoZXJlaW4sIGFuZCBnZXQgeW91IHBvc3Nlc3Npb25zIHRoZXJlaW4uCkFuZCBTaGVjaGVtIHNhaWQgdW50byBoZXIgZmF0aGVyIGFuZCB1bnRvIGhlciBicmV0aHJlbiwgTGV0IG1lIGZpbmQgZ3JhY2UgaW4geW91ciBleWVzLCBhbmQgd2hhdCB5ZSBzaGFsbCBzYXkgdW50byBtZSBJIHdpbGwgZ2l2ZS4KQXNrIG1lIG5ldmVyIHNvIG11Y2ggZG93cnkgYW5kIGdpZnQsIGFuZCBJIHdpbGwgZ2l2ZSBhY2NvcmRpbmcgYXMgeWUgc2hhbGwgc2F5IHVudG8gbWU6IGJ1dCBnaXZlIG1lIHRoZSBkYW1zZWwgdG8gd2lmZS4KQW5kIHRoZSBzb25zIG9mIEphY29iIGFuc3dlcmVkIFNoZWNoZW0gYW5kIEhhbW9yIGhpcyBmYXRoZXIgZGVjZWl0ZnVsbHksIGFuZCBzYWlkLCBiZWNhdXNlIGhlIGhhZCBkZWZpbGVkIERpbmFoIHRoZWlyIHNpc3RlcjoKQW5kIHRoZXkgc2FpZCB1bnRvIHRoZW0sIFdlIGNhbm5vdCBkbyB0aGlzIHRoaW5nLCB0byBnaXZlIG91ciBzaXN0ZXIgdG8gb25lIHRoYXQgaXMgdW5jaXJjdW1jaXNlZDsgZm9yIHRoYXQgd2VyZSBhIHJlcHJvYWNoIHVudG8gdXM6CkJ1dCBpbiB0aGlzIHdpbGwgd2UgY29uc2VudCB1bnRvIHlvdTogSWYgeWUgd2lsbCBiZSBhcyB3ZSBiZSwgdGhhdCBldmVyeSBtYWxlIG9mIHlvdSBiZSBjaXJjdW1jaXNlZDsKVGhlbiB3aWxsIHdlIGdpdmUgb3VyIGRhdWdodGVycyB1bnRvIHlvdSwgYW5kIHdlIHdpbGwgdGFrZSB5b3VyIGRhdWdodGVycyB0byB1cywgYW5kIHdlIHdpbGwgZHdlbGwgd2l0aCB5b3UsIGFuZCB3ZSB3aWxsIGJlY29tZSBvbmUgcGVvcGxlLgpCdXQgaWYgeWUgd2lsbCBub3QgaGVhcmtlbiB1bnRvIHVzLCB0byBiZSBjaXJjdW1jaXNlZDsgdGhlbiB3aWxsIHdlIHRha2Ugb3VyIGRhdWdodGVyLCBhbmQgd2Ugd2lsbCBiZSBnb25lLgpBbmQgdGhlaXIgd29yZHMgcGxlYXNlZCBIYW1vciwgYW5kIFNoZWNoZW0gSGFtb3IncyBzb24uCkFuZCB0aGUgeW91bmcgbWFuIGRlZmVycmVkIG5vdCB0byBkbyB0aGUgdGhpbmcsIGJlY2F1c2UgaGUgaGFkIGRlbGlnaHQgaW4gSmFjb2IncyBkYXVnaHRlcjogYW5kIGhlIHdhcyBtb3JlIGhvbm91cmFibGUgdGhhbiBhbGwgdGhlIGhvdXNlIG9mIGhpcyBmYXRoZXIuCkFuZCBIYW1vciBhbmQgU2hlY2hlbSBoaXMgc29uIGNhbWUgdW50byB0aGUgZ2F0ZSBvZiB0aGVpciBjaXR5LCBhbmQgY29tbXVuZWQgd2l0aCB0aGUgbWVuIG9mIHRoZWlyIGNpdHksIHNheWluZywKVGhlc2UgbWVuIGFyZSBwZWFjZWFibGUgd2l0aCB1czsgdGhlcmVmb3JlIGxldCB0aGVtIGR3ZWxsIGluIHRoZSBsYW5kLCBhbmQgdHJhZGUgdGhlcmVpbjsgZm9yIHRoZSBsYW5kLCBiZWhvbGQsIGl0IGlzIGxhcmdlIGVub3VnaCBmb3IgdGhlbTsgbGV0IHVzIHRha2UgdGhlaXIgZGF1Z2h0ZXJzIHRvIHVzIGZvciB3aXZlcywgYW5kIGxldCB1cyBnaXZlIHRoZW0gb3VyIGRhdWdodGVycy4KT25seSBoZXJlaW4gd2lsbCB0aGUgbWVuIGNvbnNlbnQgdW50byB1cyBmb3IgdG8gZHdlbGwgd2l0aCB1cywgdG8gYmUgb25lIHBlb3BsZSwgaWYgZXZlcnkgbWFsZSBhbW9uZyB1cyBiZSBjaXJjdW1jaXNlZCwgYXMgdGhleSBhcmUgY2lyY3VtY2lzZWQuClNoYWxsIG5vdCB0aGVpciBjYXR0bGUgYW5kIHRoZWlyIHN1YnN0YW5jZSBhbmQgZXZlcnkgYmVhc3Qgb2YgdGhlaXIncyBiZSBvdXIncz8gb25seSBsZXQgdXMgY29uc2VudCB1bnRvIHRoZW0sIGFuZCB0aGV5IHdpbGwgZHdlbGwgd2l0aCB1cy4KQW5kIHVudG8gSGFtb3IgYW5kIHVudG8gU2hlY2hlbSBoaXMgc29uIGhlYXJrZW5lZCBhbGwgdGhhdCB3ZW50IG91dCBvZiB0aGUgZ2F0ZSBvZiBoaXMgY2l0eTsgYW5kIGV2ZXJ5IG1hbGUgd2FzIGNpcmN1bWNpc2VkLCBhbGwgdGhhdCB3ZW50IG91dCBvZiB0aGUgZ2F0ZSBvZiBoaXMgY2l0eS4KQW5kIGl0IGNhbWUgdG8gcGFzcyBvbiB0aGUgdGhpcmQgZGF5LCB3aGVuIHRoZXkgd2VyZSBzb3JlLCB0aGF0IHR3byBvZiB0aGUgc29ucyBvZiBKYWNvYiwgU2ltZW9uIGFuZCBMZXZpLCBEaW5haCdzIGJyZXRocmVuLCB0b29rIGVhY2ggbWFuIGhpcyBzd29yZCwgYW5kIGNhbWUgdXBvbiB0aGUgY2l0eSBib2xkbHksIGFuZCBzbGV3IGFsbCB0aGUgbWFsZXMuCkFuZCB0aGV5IHNsZXcgSGFtb3IgYW5kIFNoZWNoZW0gaGlzIHNvbiB3aXRoIHRoZSBlZGdlIG9mIHRoZSBzd29yZCwgYW5kIHRvb2sgRGluYWggb3V0IG9mIFNoZWNoZW0ncyBob3VzZSwgYW5kIHdlbnQgb3V0LgpUaGUgc29ucyBvZiBKYWNvYiBjYW1lIHVwb24gdGhlIHNsYWluLCBhbmQgc3BvaWxlZCB0aGUgY2l0eSwgYmVjYXVzZSB0aGV5IGhhZCBkZWZpbGVkIHRoZWlyIHNpc3Rlci4KVGhleSB0b29rIHRoZWlyIHNoZWVwLCBhbmQgdGhlaXIgb3hlbiwgYW5kIHRoZWlyIGFzc2VzLCBhbmQgdGhhdCB3aGljaCB3YXMgaW4gdGhlIGNpdHksIGFuZCB0aGF0IHdoaWNoIHdhcyBpbiB0aGUgZmllbGQsCkFuZCBhbGwgdGhlaXIgd2VhbHRoLCBhbmQgYWxsIHRoZWlyIGxpdHRsZSBvbmVzLCBhbmQgdGhlaXIgd2l2ZXMgdG9vayB0aGV5IGNhcHRpdmUsIGFuZCBzcG9pbGVkIGV2ZW4gYWxsIHRoYXQgd2FzIGluIHRoZSBob3VzZS4KQW5kIEphY29iIHNhaWQgdG8gU2ltZW9uIGFuZCBMZXZpLCBZZSBoYXZlIHRyb3VibGVkIG1lIHRvIG1ha2UgbWUgdG8gc3RpbmsgYW1vbmcgdGhlIGluaGFiaXRhbnRzIG9mIHRoZSBsYW5kLCBhbW9uZyB0aGUgQ2FuYWFuaXRlcyBhbmQgdGhlIFBlcml6eml0ZXM6IGFuZCBJIGJlaW5nIGZldyBpbiBudW1iZXIsIHRoZXkgc2hhbGwgZ2F0aGVyIHRoZW1zZWx2ZXMgdG9nZXRoZXIgYWdhaW5zdCBtZSwgYW5kIHNsYXkgbWU7IGFuZCBJIHNoYWxsIGJlIGRlc3Ryb3llZCwgSSBhbmQgbXkgaG91c2UuCkFuZCB0aGV5IHNhaWQsIFNob3VsZCBoZSBkZWFsIHdpdGggb3VyIHNpc3RlciBhcyB3aXRoIGFuIGhhcmxvdD8KQW5kIEdvZCBzYWlkIHVudG8gSmFjb2IsIEFyaXNlLCBnbyB1cCB0byBCZXRoZWwsIGFuZCBkd2VsbCB0aGVyZTogYW5kIG1ha2UgdGhlcmUgYW4gYWx0YXIgdW50byBHb2QsIHRoYXQgYXBwZWFyZWQgdW50byB0aGVlIHdoZW4gdGhvdSBmbGVkZGVzdCBmcm9tIHRoZSBmYWNlIG9mIEVzYXUgdGh5IGJyb3RoZXIuClRoZW4gSmFjb2Igc2FpZCB1bnRvIGhpcyBob3VzZWhvbGQsIGFuZCB0byBhbGwgdGhhdCB3ZXJlIHdpdGggaGltLCBQdXQgYXdheSB0aGUgc3RyYW5nZSBnb2RzIHRoYXQgYXJlIGFtb25nIHlvdSwgYW5kIGJlIGNsZWFuLCBhbmQgY2hhbmdlIHlvdXIgZ2FybWVudHM6CkFuZCBsZXQgdXMgYXJpc2UsIGFuZCBnbyB1cCB0byBCZXRoZWw7IGFuZCBJIHdpbGwgbWFrZSB0aGVyZSBhbiBhbHRhciB1bnRvIEdvZCwgd2hvIGFuc3dlcmVkIG1lIGluIHRoZSBkYXkgb2YgbXkgZGlzdHJlc3MsIGFuZCB3YXMgd2l0aCBtZSBpbiB0aGUgd2F5IHdoaWNoIEkgd2VudC4KQW5kIHRoZXkgZ2F2ZSB1bnRvIEphY29iIGFsbCB0aGUgc3RyYW5nZSBnb2RzIHdoaWNoIHdlcmUgaW4gdGhlaXIgaGFuZCwgYW5kIGFsbCB0aGVpciBlYXJyaW5ncyB3aGljaCB3ZXJlIGluIHRoZWlyIGVhcnM7IGFuZCBKYWNvYiBoaWQgdGhlbSB1bmRlciB0aGUgb2FrIHdoaWNoIHdhcyBieSBTaGVjaGVtLgpBbmQgdGhleSBqb3VybmV5ZWQ6IGFuZCB0aGUgdGVycm9yIG9mIEdvZCB3YXMgdXBvbiB0aGUgY2l0aWVzIHRoYXQgd2VyZSByb3VuZCBhYm91dCB0aGVtLCBhbmQgdGhleSBkaWQgbm90IHB1cnN1ZSBhZnRlciB0aGUgc29ucyBvZiBKYWNvYi4KU28gSmFjb2IgY2FtZSB0byBMdXosIHdoaWNoIGlzIGluIHRoZSBsYW5kIG9mIENhbmFhbiwgdGhhdCBpcywgQmV0aGVsLCBoZSBhbmQgYWxsIHRoZSBwZW9wbGUgdGhhdCB3ZXJlIHdpdGggaGltLgpBbmQgaGUgYnVpbHQgdGhlcmUgYW4gYWx0YXIsIGFuZCBjYWxsZWQgdGhlIHBsYWNlIEVsYmV0aGVsOiBiZWNhdXNlIHRoZXJlIEdvZCBhcHBlYXJlZCB1bnRvIGhpbSwgd2hlbiBoZSBmbGVkIGZyb20gdGhlIGZhY2Ugb2YgaGlzIGJyb3RoZXIuCkJ1dCBEZWJvcmFoIFJlYmVrYWgncyBudXJzZSBkaWVkLCBhbmQgc2hlIHdhcyBidXJpZWQgYmVuZWF0aCBCZXRoZWwgdW5kZXIgYW4gb2FrOiBhbmQgdGhlIG5hbWUgb2YgaXQgd2FzIGNhbGxlZCBBbGxvbmJhY2h1dGguCkFuZCBHb2QgYXBwZWFyZWQgdW50byBKYWNvYiBhZ2Fpbiwgd2hlbiBoZSBjYW1lIG91dCBvZiBQYWRhbmFyYW0sIGFuZCBibGVzc2VkIGhpbS4KQW5kIEdvZCBzYWlkIHVudG8gaGltLCBUaHkgbmFtZSBpcyBKYWNvYjogdGh5IG5hbWUgc2hhbGwgbm90IGJlIGNhbGxlZCBhbnkgbW9yZSBKYWNvYiwgYnV0IElzcmFlbCBzaGFsbCBiZSB0aHkgbmFtZTogYW5kIGhlIGNhbGxlZCBoaXMgbmFtZSBJc3JhZWwuCkFuZCBHb2Qgc2FpZCB1bnRvIGhpbSwgSSBhbSBHb2QgQWxtaWdodHk6IGJlIGZydWl0ZnVsIGFuZCBtdWx0aXBseTsgYSBuYXRpb24gYW5kIGEgY29tcGFueSBvZiBuYXRpb25zIHNoYWxsIGJlIG9mIHRoZWUsIGFuZCBraW5ncyBzaGFsbCBjb21lIG91dCBvZiB0aHkgbG9pbnM7CkFuZCB0aGUgbGFuZCB3aGljaCBJIGdhdmUgQWJyYWhhbSBhbmQgSXNhYWMsIHRvIHRoZWUgSSB3aWxsIGdpdmUgaXQsIGFuZCB0byB0aHkgc2VlZCBhZnRlciB0aGVlIHdpbGwgSSBnaXZlIHRoZSBsYW5kLgpBbmQgR29kIHdlbnQgdXAgZnJvbSBoaW0gaW4gdGhlIHBsYWNlIHdoZXJlIGhlIHRhbGtlZCB3aXRoIGhpbS4KQW5kIEphY29iIHNldCB1cCBhIHBpbGxhciBpbiB0aGUgcGxhY2Ugd2hlcmUgaGUgdGFsa2VkIHdpdGggaGltLCBldmVuIGEgcGlsbGFyIG9mIHN0b25lOiBhbmQgaGUgcG91cmVkIGEgZHJpbmsgb2ZmZXJpbmcgdGhlcmVvbiwgYW5kIGhlIHBvdXJlZCBvaWwgdGhlcmVvbi4KQW5kIEphY29iIGNhbGxlZCB0aGUgbmFtZSBvZiB0aGUgcGxhY2Ugd2hlcmUgR29kIHNwYWtlIHdpdGggaGltLCBCZXRoZWwuCkFuZCB0aGV5IGpvdXJuZXllZCBmcm9tIEJldGhlbDsgYW5kIHRoZXJlIHdhcyBidXQgYSBsaXR0bGUgd2F5IHRvIGNvbWUgdG8gRXBocmF0aDogYW5kIFJhY2hlbCB0cmF2YWlsZWQsIGFuZCBzaGUgaGFkIGhhcmQgbGFib3VyLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIHNoZSB3YXMgaW4gaGFyZCBsYWJvdXIsIHRoYXQgdGhlIG1pZHdpZmUgc2FpZCB1bnRvIGhlciwgRmVhciBub3Q7IHRob3Ugc2hhbHQgaGF2ZSB0aGlzIHNvbiBhbHNvLgpBbmQgaXQgY2FtZSB0byBwYXNzLCBhcyBoZXIgc291bCB3YXMgaW4gZGVwYXJ0aW5nLCAoZm9yIHNoZSBkaWVkKSB0aGF0IHNoZSBjYWxsZWQgaGlzIG5hbWUgQmVub25pOiBidXQgaGlzIGZhdGhlciBjYWxsZWQgaGltIEJlbmphbWluLgpBbmQgUmFjaGVsIGRpZWQsIGFuZCB3YXMgYnVyaWVkIGluIHRoZSB3YXkgdG8gRXBocmF0aCwgd2hpY2ggaXMgQmV0aGxlaGVtLgpBbmQgSmFjb2Igc2V0IGEgcGlsbGFyIHVwb24gaGVyIGdyYXZlOiB0aGF0IGlzIHRoZSBwaWxsYXIgb2YgUmFjaGVsJ3MgZ3JhdmUgdW50byB0aGlzIGRheS4KQW5kIElzcmFlbCBqb3VybmV5ZWQsIGFuZCBzcHJlYWQgaGlzIHRlbnQgYmV5b25kIHRoZSB0b3dlciBvZiBFZGFyLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIElzcmFlbCBkd2VsdCBpbiB0aGF0IGxhbmQsIHRoYXQgUmV1YmVuIHdlbnQgYW5kIGxheSB3aXRoIEJpbGhhaCBoaXMgZmF0aGVyJ3MgY29uY3ViaW5lOiBhbmQgSXNyYWVsIGhlYXJkIGl0LiBOb3cgdGhlIHNvbnMgb2YgSmFjb2Igd2VyZSB0d2VsdmU6ClRoZSBzb25zIG9mIExlYWg7IFJldWJlbiwgSmFjb2IncyBmaXJzdGJvcm4sIGFuZCBTaW1lb24sIGFuZCBMZXZpLCBhbmQgSnVkYWgsIGFuZCBJc3NhY2hhciwgYW5kIFplYnVsdW46ClRoZSBzb25zIG9mIFJhY2hlbDsgSm9zZXBoLCBhbmQgQmVuamFtaW46CkFuZCB0aGUgc29ucyBvZiBCaWxoYWgsIFJhY2hlbCdzIGhhbmRtYWlkOyBEYW4sIGFuZCBOYXBodGFsaToKQW5kIHRoZSBzb25zIG9mIFppbHBhaCwgTGVhaCdzIGhhbmRtYWlkOiBHYWQsIGFuZCBBc2hlcjogdGhlc2UgYXJlIHRoZSBzb25zIG9mIEphY29iLCB3aGljaCB3ZXJlIGJvcm4gdG8gaGltIGluIFBhZGFuYXJhbS4KQW5kIEphY29iIGNhbWUgdW50byBJc2FhYyBoaXMgZmF0aGVyIHVudG8gTWFtcmUsIHVudG8gdGhlIGNpdHkgb2YgQXJiYWgsIHdoaWNoIGlzIEhlYnJvbiwgd2hlcmUgQWJyYWhhbSBhbmQgSXNhYWMgc29qb3VybmVkLgpBbmQgdGhlIGRheXMgb2YgSXNhYWMgd2VyZSBhbiBodW5kcmVkIGFuZCBmb3Vyc2NvcmUgeWVhcnMuCkFuZCBJc2FhYyBnYXZlIHVwIHRoZSBnaG9zdCwgYW5kIGRpZWQsIGFuZCB3YXMgZ2F0aGVyZWQgdW50byBoaXMgcGVvcGxlLCBiZWluZyBvbGQgYW5kIGZ1bGwgb2YgZGF5czogYW5kIGhpcyBzb25zIEVzYXUgYW5kIEphY29iIGJ1cmllZCBoaW0uCk5vdyB0aGVzZSBhcmUgdGhlIGdlbmVyYXRpb25zIG9mIEVzYXUsIHdobyBpcyBFZG9tLgpFc2F1IHRvb2sgaGlzIHdpdmVzIG9mIHRoZSBkYXVnaHRlcnMgb2YgQ2FuYWFuOyBBZGFoIHRoZSBkYXVnaHRlciBvZiBFbG9uIHRoZSBIaXR0aXRlLCBhbmQgQWhvbGliYW1haCB0aGUgZGF1Z2h0ZXIgb2YgQW5haCB0aGUgZGF1Z2h0ZXIgb2YgWmliZW9uIHRoZSBIaXZpdGU7CkFuZCBCYXNoZW1hdGggSXNobWFlbCdzIGRhdWdodGVyLCBzaXN0ZXIgb2YgTmViYWpvdGguCkFuZCBBZGFoIGJhcmUgdG8gRXNhdSBFbGlwaGF6OyBhbmQgQmFzaGVtYXRoIGJhcmUgUmV1ZWw7CkFuZCBBaG9saWJhbWFoIGJhcmUgSmV1c2gsIGFuZCBKYWFsYW0sIGFuZCBLb3JhaDogdGhlc2UgYXJlIHRoZSBzb25zIG9mIEVzYXUsIHdoaWNoIHdlcmUgYm9ybiB1bnRvIGhpbSBpbiB0aGUgbGFuZCBvZiBDYW5hYW4uCkFuZCBFc2F1IHRvb2sgaGlzIHdpdmVzLCBhbmQgaGlzIHNvbnMsIGFuZCBoaXMgZGF1Z2h0ZXJzLCBhbmQgYWxsIHRoZSBwZXJzb25zIG9mIGhpcyBob3VzZSwgYW5kIGhpcyBjYXR0bGUsIGFuZCBhbGwgaGlzIGJlYXN0cywgYW5kIGFsbCBoaXMgc3Vic3RhbmNlLCB3aGljaCBoZSBoYWQgZ290IGluIHRoZSBsYW5kIG9mIENhbmFhbjsgYW5kIHdlbnQgaW50byB0aGUgY291bnRyeSBmcm9tIHRoZSBmYWNlIG9mIGhpcyBicm90aGVyIEphY29iLgpGb3IgdGhlaXIgcmljaGVzIHdlcmUgbW9yZSB0aGFuIHRoYXQgdGhleSBtaWdodCBkd2VsbCB0b2dldGhlcjsgYW5kIHRoZSBsYW5kIHdoZXJlaW4gdGhleSB3ZXJlIHN0cmFuZ2VycyBjb3VsZCBub3QgYmVhciB0aGVtIGJlY2F1c2Ugb2YgdGhlaXIgY2F0dGxlLgpUaHVzIGR3ZWx0IEVzYXUgaW4gbW91bnQgU2VpcjogRXNhdSBpcyBFZG9tLgpBbmQgdGhlc2UgYXJlIHRoZSBnZW5lcmF0aW9ucyBvZiBFc2F1IHRoZSBmYXRoZXIgb2YgdGhlIEVkb21pdGVzIGluIG1vdW50IFNlaXI6ClRoZXNlIGFyZSB0aGUgbmFtZXMgb2YgRXNhdSdzIHNvbnM7IEVsaXBoYXogdGhlIHNvbiBvZiBBZGFoIHRoZSB3aWZlIG9mIEVzYXUsIFJldWVsIHRoZSBzb24gb2YgQmFzaGVtYXRoIHRoZSB3aWZlIG9mIEVzYXUuCkFuZCB0aGUgc29ucyBvZiBFbGlwaGF6IHdlcmUgVGVtYW4sIE9tYXIsIFplcGhvLCBhbmQgR2F0YW0sIGFuZCBLZW5hei4KQW5kIFRpbW5hIHdhcyBjb25jdWJpbmUgdG8gRWxpcGhheiBFc2F1J3Mgc29uOyBhbmQgc2hlIGJhcmUgdG8gRWxpcGhheiBBbWFsZWs6IHRoZXNlIHdlcmUgdGhlIHNvbnMgb2YgQWRhaCBFc2F1J3Mgd2lmZS4KQW5kIHRoZXNlIGFyZSB0aGUgc29ucyBvZiBSZXVlbDsgTmFoYXRoLCBhbmQgWmVyYWgsIFNoYW1tYWgsIGFuZCBNaXp6YWg6IHRoZXNlIHdlcmUgdGhlIHNvbnMgb2YgQmFzaGVtYXRoIEVzYXUncyB3aWZlLgpBbmQgdGhlc2Ugd2VyZSB0aGUgc29ucyBvZiBBaG9saWJhbWFoLCB0aGUgZGF1Z2h0ZXIgb2YgQW5haCB0aGUgZGF1Z2h0ZXIgb2YgWmliZW9uLCBFc2F1J3Mgd2lmZTogYW5kIHNoZSBiYXJlIHRvIEVzYXUgSmV1c2gsIGFuZCBKYWFsYW0sIGFuZCBLb3JhaC4KVGhlc2Ugd2VyZSBkdWtlcyBvZiB0aGUgc29ucyBvZiBFc2F1OiB0aGUgc29ucyBvZiBFbGlwaGF6IHRoZSBmaXJzdGJvcm4gc29uIG9mIEVzYXU7IGR1a2UgVGVtYW4sIGR1a2UgT21hciwgZHVrZSBaZXBobywgZHVrZSBLZW5heiwKRHVrZSBLb3JhaCwgZHVrZSBHYXRhbSwgYW5kIGR1a2UgQW1hbGVrOiB0aGVzZSBhcmUgdGhlIGR1a2VzIHRoYXQgY2FtZSBvZiBFbGlwaGF6IGluIHRoZSBsYW5kIG9mIEVkb207IHRoZXNlIHdlcmUgdGhlIHNvbnMgb2YgQWRhaC4KQW5kIHRoZXNlIGFyZSB0aGUgc29ucyBvZiBSZXVlbCBFc2F1J3Mgc29uOyBkdWtlIE5haGF0aCwgZHVrZSBaZXJhaCwgZHVrZSBTaGFtbWFoLCBkdWtlIE1penphaDogdGhlc2UgYXJlIHRoZSBkdWtlcyB0aGF0IGNhbWUgb2YgUmV1ZWwgaW4gdGhlIGxhbmQgb2YgRWRvbTsgdGhlc2UgYXJlIHRoZSBzb25zIG9mIEJhc2hlbWF0aCBFc2F1J3Mgd2lmZS4KQW5kIHRoZXNlIGFyZSB0aGUgc29ucyBvZiBBaG9saWJhbWFoIEVzYXUncyB3aWZlOyBkdWtlIEpldXNoLCBkdWtlIEphYWxhbSwgZHVrZSBLb3JhaDogdGhlc2Ugd2VyZSB0aGUgZHVrZXMgdGhhdCBjYW1lIG9mIEFob2xpYmFtYWggdGhlIGRhdWdodGVyIG9mIEFuYWgsIEVzYXUncyB3aWZlLgpUaGVzZSBhcmUgdGhlIHNvbnMgb2YgRXNhdSwgd2hvIGlzIEVkb20sIGFuZCB0aGVzZSBhcmUgdGhlaXIgZHVrZXMuClRoZXNlIGFyZSB0aGUgc29ucyBvZiBTZWlyIHRoZSBIb3JpdGUsIHdobyBpbmhhYml0ZWQgdGhlIGxhbmQ7IExvdGFuLCBhbmQgU2hvYmFsLCBhbmQgWmliZW9uLCBhbmQgQW5haCwKQW5kIERpc2hvbiwgYW5kIEV6ZXIsIGFuZCBEaXNoYW46IHRoZXNlIGFyZSB0aGUgZHVrZXMgb2YgdGhlIEhvcml0ZXMsIHRoZSBjaGlsZHJlbiBvZiBTZWlyIGluIHRoZSBsYW5kIG9mIEVkb20uCkFuZCB0aGUgY2hpbGRyZW4gb2YgTG90YW4gd2VyZSBIb3JpIGFuZCBIZW1hbTsgYW5kIExvdGFuJ3Mgc2lzdGVyIHdhcyBUaW1uYS4KQW5kIHRoZSBjaGlsZHJlbiBvZiBTaG9iYWwgd2VyZSB0aGVzZTsgQWx2YW4sIGFuZCBNYW5haGF0aCwgYW5kIEViYWwsIFNoZXBobywgYW5kIE9uYW0uCkFuZCB0aGVzZSBhcmUgdGhlIGNoaWxkcmVuIG9mIFppYmVvbjsgYm90aCBBamFoLCBhbmQgQW5haDogdGhpcyB3YXMgdGhhdCBBbmFoIHRoYXQgZm91bmQgdGhlIG11bGVzIGluIHRoZSB3aWxkZXJuZXNzLCBhcyBoZSBmZWQgdGhlIGFzc2VzIG9mIFppYmVvbiBoaXMgZmF0aGVyLgpBbmQgdGhlIGNoaWxkcmVuIG9mIEFuYWggd2VyZSB0aGVzZTsgRGlzaG9uLCBhbmQgQWhvbGliYW1haCB0aGUgZGF1Z2h0ZXIgb2YgQW5haC4KQW5kIHRoZXNlIGFyZSB0aGUgY2hpbGRyZW4gb2YgRGlzaG9uOyBIZW1kYW4sIGFuZCBFc2hiYW4sIGFuZCBJdGhyYW4sIGFuZCBDaGVyYW4uClRoZSBjaGlsZHJlbiBvZiBFemVyIGFyZSB0aGVzZTsgQmlsaGFuLCBhbmQgWmFhdmFuLCBhbmQgQWthbi4KVGhlIGNoaWxkcmVuIG9mIERpc2hhbiBhcmUgdGhlc2U7IFV6LCBhbmQgQXJhbi4KVGhlc2UgYXJlIHRoZSBkdWtlcyB0aGF0IGNhbWUgb2YgdGhlIEhvcml0ZXM7IGR1a2UgTG90YW4sIGR1a2UgU2hvYmFsLCBkdWtlIFppYmVvbiwgZHVrZSBBbmFoLApEdWtlIERpc2hvbiwgZHVrZSBFemVyLCBkdWtlIERpc2hhbjogdGhlc2UgYXJlIHRoZSBkdWtlcyB0aGF0IGNhbWUgb2YgSG9yaSwgYW1vbmcgdGhlaXIgZHVrZXMgaW4gdGhlIGxhbmQgb2YgU2Vpci4KQW5kIHRoZXNlIGFyZSB0aGUga2luZ3MgdGhhdCByZWlnbmVkIGluIHRoZSBsYW5kIG9mIEVkb20sIGJlZm9yZSB0aGVyZSByZWlnbmVkIGFueSBraW5nIG92ZXIgdGhlIGNoaWxkcmVuIG9mIElzcmFlbC4KQW5kIEJlbGEgdGhlIHNvbiBvZiBCZW9yIHJlaWduZWQgaW4gRWRvbTogYW5kIHRoZSBuYW1lIG9mIGhpcyBjaXR5IHdhcyBEaW5oYWJhaC4KQW5kIEJlbGEgZGllZCwgYW5kIEpvYmFiIHRoZSBzb24gb2YgWmVyYWggb2YgQm96cmFoIHJlaWduZWQgaW4gaGlzIHN0ZWFkLgpBbmQgSm9iYWIgZGllZCwgYW5kIEh1c2hhbSBvZiB0aGUgbGFuZCBvZiBUZW1hbmkgcmVpZ25lZCBpbiBoaXMgc3RlYWQuCkFuZCBIdXNoYW0gZGllZCwgYW5kIEhhZGFkIHRoZSBzb24gb2YgQmVkYWQsIHdobyBzbW90ZSBNaWRpYW4gaW4gdGhlIGZpZWxkIG9mIE1vYWIsIHJlaWduZWQgaW4gaGlzIHN0ZWFkOiBhbmQgdGhlIG5hbWUgb2YgaGlzIGNpdHkgd2FzIEF2aXRoLgpBbmQgSGFkYWQgZGllZCwgYW5kIFNhbWxhaCBvZiBNYXNyZWthaCByZWlnbmVkIGluIGhpcyBzdGVhZC4KQW5kIFNhbWxhaCBkaWVkLCBhbmQgU2F1bCBvZiBSZWhvYm90aCBieSB0aGUgcml2ZXIgcmVpZ25lZCBpbiBoaXMgc3RlYWQuCkFuZCBTYXVsIGRpZWQsIGFuZCBCYWFsaGFuYW4gdGhlIHNvbiBvZiBBY2hib3IgcmVpZ25lZCBpbiBoaXMgc3RlYWQuCkFuZCBCYWFsaGFuYW4gdGhlIHNvbiBvZiBBY2hib3IgZGllZCwgYW5kIEhhZGFyIHJlaWduZWQgaW4gaGlzIHN0ZWFkOiBhbmQgdGhlIG5hbWUgb2YgaGlzIGNpdHkgd2FzIFBhdTsgYW5kIGhpcyB3aWZlJ3MgbmFtZSB3YXMgTWVoZXRhYmVsLCB0aGUgZGF1Z2h0ZXIgb2YgTWF0cmVkLCB0aGUgZGF1Z2h0ZXIgb2YgTWV6YWhhYi4KQW5kIHRoZXNlIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR1a2VzIHRoYXQgY2FtZSBvZiBFc2F1LCBhY2NvcmRpbmcgdG8gdGhlaXIgZmFtaWxpZXMsIGFmdGVyIHRoZWlyIHBsYWNlcywgYnkgdGhlaXIgbmFtZXM7IGR1a2UgVGltbmFoLCBkdWtlIEFsdmFoLCBkdWtlIEpldGhldGgsCkR1a2UgQWhvbGliYW1haCwgZHVrZSBFbGFoLCBkdWtlIFBpbm9uLApEdWtlIEtlbmF6LCBkdWtlIFRlbWFuLCBkdWtlIE1pYnphciwKRHVrZSBNYWdkaWVsLCBkdWtlIElyYW06IHRoZXNlIGJlIHRoZSBkdWtlcyBvZiBFZG9tLCBhY2NvcmRpbmcgdG8gdGhlaXIgaGFiaXRhdGlvbnMgaW4gdGhlIGxhbmQgb2YgdGhlaXIgcG9zc2Vzc2lvbjogaGUgaXMgRXNhdSB0aGUgZmF0aGVyIG9mIHRoZSBFZG9taXRlcy4KQW5kIEphY29iIGR3ZWx0IGluIHRoZSBsYW5kIHdoZXJlaW4gaGlzIGZhdGhlciB3YXMgYSBzdHJhbmdlciwgaW4gdGhlIGxhbmQgb2YgQ2FuYWFuLgpUaGVzZSBhcmUgdGhlIGdlbmVyYXRpb25zIG9mIEphY29iLiBKb3NlcGgsIGJlaW5nIHNldmVudGVlbiB5ZWFycyBvbGQsIHdhcyBmZWVkaW5nIHRoZSBmbG9jayB3aXRoIGhpcyBicmV0aHJlbjsgYW5kIHRoZSBsYWQgd2FzIHdpdGggdGhlIHNvbnMgb2YgQmlsaGFoLCBhbmQgd2l0aCB0aGUgc29ucyBvZiBaaWxwYWgsIGhpcyBmYXRoZXIncyB3aXZlczogYW5kIEpvc2VwaCBicm91Z2h0IHVudG8gaGlzIGZhdGhlciB0aGVpciBldmlsIHJlcG9ydC4KTm93IElzcmFlbCBsb3ZlZCBKb3NlcGggbW9yZSB0aGFuIGFsbCBoaXMgY2hpbGRyZW4sIGJlY2F1c2UgaGUgd2FzIHRoZSBzb24gb2YgaGlzIG9sZCBhZ2U6IGFuZCBoZSBtYWRlIGhpbSBhIGNvYXQgb2YgbWFueSBjb2xvdXJzLgpBbmQgd2hlbiBoaXMgYnJldGhyZW4gc2F3IHRoYXQgdGhlaXIgZmF0aGVyIGxvdmVkIGhpbSBtb3JlIHRoYW4gYWxsIGhpcyBicmV0aHJlbiwgdGhleSBoYXRlZCBoaW0sIGFuZCBjb3VsZCBub3Qgc3BlYWsgcGVhY2VhYmx5IHVudG8gaGltLgpBbmQgSm9zZXBoIGRyZWFtZWQgYSBkcmVhbSwgYW5kIGhlIHRvbGQgaXQgaGlzIGJyZXRocmVuOiBhbmQgdGhleSBoYXRlZCBoaW0geWV0IHRoZSBtb3JlLgpBbmQgaGUgc2FpZCB1bnRvIHRoZW0sIEhlYXIsIEkgcHJheSB5b3UsIHRoaXMgZHJlYW0gd2hpY2ggSSBoYXZlIGRyZWFtZWQ6CkZvciwgYmVob2xkLCB3ZSB3ZXJlIGJpbmRpbmcgc2hlYXZlcyBpbiB0aGUgZmllbGQsIGFuZCwgbG8sIG15IHNoZWFmIGFyb3NlLCBhbmQgYWxzbyBzdG9vZCB1cHJpZ2h0OyBhbmQsIGJlaG9sZCwgeW91ciBzaGVhdmVzIHN0b29kIHJvdW5kIGFib3V0LCBhbmQgbWFkZSBvYmVpc2FuY2UgdG8gbXkgc2hlYWYuCkFuZCBoaXMgYnJldGhyZW4gc2FpZCB0byBoaW0sIFNoYWx0IHRob3UgaW5kZWVkIHJlaWduIG92ZXIgdXM/IG9yIHNoYWx0IHRob3UgaW5kZWVkIGhhdmUgZG9taW5pb24gb3ZlciB1cz8gQW5kIHRoZXkgaGF0ZWQgaGltIHlldCB0aGUgbW9yZSBmb3IgaGlzIGRyZWFtcywgYW5kIGZvciBoaXMgd29yZHMuCkFuZCBoZSBkcmVhbWVkIHlldCBhbm90aGVyIGRyZWFtLCBhbmQgdG9sZCBpdCBoaXMgYnJldGhyZW4sIGFuZCBzYWlkLCBCZWhvbGQsIEkgaGF2ZSBkcmVhbWVkIGEgZHJlYW0gbW9yZTsgYW5kLCBiZWhvbGQsIHRoZSBzdW4gYW5kIHRoZSBtb29uIGFuZCB0aGUgZWxldmVuIHN0YXJzIG1hZGUgb2JlaXNhbmNlIHRvIG1lLgpBbmQgaGUgdG9sZCBpdCB0byBoaXMgZmF0aGVyLCBhbmQgdG8gaGlzIGJyZXRocmVuOiBhbmQgaGlzIGZhdGhlciByZWJ1a2VkIGhpbSwgYW5kIHNhaWQgdW50byBoaW0sIFdoYXQgaXMgdGhpcyBkcmVhbSB0aGF0IHRob3UgaGFzdCBkcmVhbWVkPyBTaGFsbCBJIGFuZCB0aHkgbW90aGVyIGFuZCB0aHkgYnJldGhyZW4gaW5kZWVkIGNvbWUgdG8gYm93IGRvd24gb3Vyc2VsdmVzIHRvIHRoZWUgdG8gdGhlIGVhcnRoPwpBbmQgaGlzIGJyZXRocmVuIGVudmllZCBoaW07IGJ1dCBoaXMgZmF0aGVyIG9ic2VydmVkIHRoZSBzYXlpbmcuCkFuZCBoaXMgYnJldGhyZW4gd2VudCB0byBmZWVkIHRoZWlyIGZhdGhlcidzIGZsb2NrIGluIFNoZWNoZW0uCkFuZCBJc3JhZWwgc2FpZCB1bnRvIEpvc2VwaCwgRG8gbm90IHRoeSBicmV0aHJlbiBmZWVkIHRoZSBmbG9jayBpbiBTaGVjaGVtPyBjb21lLCBhbmQgSSB3aWxsIHNlbmQgdGhlZSB1bnRvIHRoZW0uIEFuZCBoZSBzYWlkIHRvIGhpbSwgSGVyZSBhbSBJLgpBbmQgaGUgc2FpZCB0byBoaW0sIEdvLCBJIHByYXkgdGhlZSwgc2VlIHdoZXRoZXIgaXQgYmUgd2VsbCB3aXRoIHRoeSBicmV0aHJlbiwgYW5kIHdlbGwgd2l0aCB0aGUgZmxvY2tzOyBhbmQgYnJpbmcgbWUgd29yZCBhZ2Fpbi4gU28gaGUgc2VudCBoaW0gb3V0IG9mIHRoZSB2YWxlIG9mIEhlYnJvbiwgYW5kIGhlIGNhbWUgdG8gU2hlY2hlbS4KQW5kIGEgY2VydGFpbiBtYW4gZm91bmQgaGltLCBhbmQsIGJlaG9sZCwgaGUgd2FzIHdhbmRlcmluZyBpbiB0aGUgZmllbGQ6IGFuZCB0aGUgbWFuIGFza2VkIGhpbSwgc2F5aW5nLCBXaGF0IHNlZWtlc3QgdGhvdT8KQW5kIGhlIHNhaWQsIEkgc2VlayBteSBicmV0aHJlbjogdGVsbCBtZSwgSSBwcmF5IHRoZWUsIHdoZXJlIHRoZXkgZmVlZCB0aGVpciBmbG9ja3MuCkFuZCB0aGUgbWFuIHNhaWQsIFRoZXkgYXJlIGRlcGFydGVkIGhlbmNlOyBmb3IgSSBoZWFyZCB0aGVtIHNheSwgTGV0IHVzIGdvIHRvIERvdGhhbi4gQW5kIEpvc2VwaCB3ZW50IGFmdGVyIGhpcyBicmV0aHJlbiwgYW5kIGZvdW5kIHRoZW0gaW4gRG90aGFuLgpBbmQgd2hlbiB0aGV5IHNhdyBoaW0gYWZhciBvZmYsIGV2ZW4gYmVmb3JlIGhlIGNhbWUgbmVhciB1bnRvIHRoZW0sIHRoZXkgY29uc3BpcmVkIGFnYWluc3QgaGltIHRvIHNsYXkgaGltLgpBbmQgdGhleSBzYWlkIG9uZSB0byBhbm90aGVyLCBCZWhvbGQsIHRoaXMgZHJlYW1lciBjb21ldGguCkNvbWUgbm93IHRoZXJlZm9yZSwgYW5kIGxldCB1cyBzbGF5IGhpbSwgYW5kIGNhc3QgaGltIGludG8gc29tZSBwaXQsIGFuZCB3ZSB3aWxsIHNheSwgU29tZSBldmlsIGJlYXN0IGhhdGggZGV2b3VyZWQgaGltOiBhbmQgd2Ugc2hhbGwgc2VlIHdoYXQgd2lsbCBiZWNvbWUgb2YgaGlzIGRyZWFtcy4KQW5kIFJldWJlbiBoZWFyZCBpdCwgYW5kIGhlIGRlbGl2ZXJlZCBoaW0gb3V0IG9mIHRoZWlyIGhhbmRzOyBhbmQgc2FpZCwgTGV0IHVzIG5vdCBraWxsIGhpbS4KQW5kIFJldWJlbiBzYWlkIHVudG8gdGhlbSwgU2hlZCBubyBibG9vZCwgYnV0IGNhc3QgaGltIGludG8gdGhpcyBwaXQgdGhhdCBpcyBpbiB0aGUgd2lsZGVybmVzcywgYW5kIGxheSBubyBoYW5kIHVwb24gaGltOyB0aGF0IGhlIG1pZ2h0IHJpZCBoaW0gb3V0IG9mIHRoZWlyIGhhbmRzLCB0byBkZWxpdmVyIGhpbSB0byBoaXMgZmF0aGVyIGFnYWluLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIEpvc2VwaCB3YXMgY29tZSB1bnRvIGhpcyBicmV0aHJlbiwgdGhhdCB0aGV5IHN0cmlwdCBKb3NlcGggb3V0IG9mIGhpcyBjb2F0LCBoaXMgY29hdCBvZiBtYW55IGNvbG91cnMgdGhhdCB3YXMgb24gaGltOwpBbmQgdGhleSB0b29rIGhpbSwgYW5kIGNhc3QgaGltIGludG8gYSBwaXQ6IGFuZCB0aGUgcGl0IHdhcyBlbXB0eSwgdGhlcmUgd2FzIG5vIHdhdGVyIGluIGl0LgpBbmQgdGhleSBzYXQgZG93biB0byBlYXQgYnJlYWQ6IGFuZCB0aGV5IGxpZnRlZCB1cCB0aGVpciBleWVzIGFuZCBsb29rZWQsIGFuZCwgYmVob2xkLCBhIGNvbXBhbnkgb2YgSXNobWVlbGl0ZXMgY2FtZSBmcm9tIEdpbGVhZCB3aXRoIHRoZWlyIGNhbWVscyBiZWFyaW5nIHNwaWNlcnkgYW5kIGJhbG0gYW5kIG15cnJoLCBnb2luZyB0byBjYXJyeSBpdCBkb3duIHRvIEVneXB0LgpBbmQgSnVkYWggc2FpZCB1bnRvIGhpcyBicmV0aHJlbiwgV2hhdCBwcm9maXQgaXMgaXQgaWYgd2Ugc2xheSBvdXIgYnJvdGhlciwgYW5kIGNvbmNlYWwgaGlzIGJsb29kPwpDb21lLCBhbmQgbGV0IHVzIHNlbGwgaGltIHRvIHRoZSBJc2htZWVsaXRlcywgYW5kIGxldCBub3Qgb3VyIGhhbmQgYmUgdXBvbiBoaW07IGZvciBoZSBpcyBvdXIgYnJvdGhlciBhbmQgb3VyIGZsZXNoLiBBbmQgaGlzIGJyZXRocmVuIHdlcmUgY29udGVudC4KVGhlbiB0aGVyZSBwYXNzZWQgYnkgTWlkaWFuaXRlcyBtZXJjaGFudG1lbjsgYW5kIHRoZXkgZHJldyBhbmQgbGlmdGVkIHVwIEpvc2VwaCBvdXQgb2YgdGhlIHBpdCwgYW5kIHNvbGQgSm9zZXBoIHRvIHRoZSBJc2htZWVsaXRlcyBmb3IgdHdlbnR5IHBpZWNlcyBvZiBzaWx2ZXI6IGFuZCB0aGV5IGJyb3VnaHQgSm9zZXBoIGludG8gRWd5cHQuCkFuZCBSZXViZW4gcmV0dXJuZWQgdW50byB0aGUgcGl0OyBhbmQsIGJlaG9sZCwgSm9zZXBoIHdhcyBub3QgaW4gdGhlIHBpdDsgYW5kIGhlIHJlbnQgaGlzIGNsb3RoZXMuCkFuZCBoZSByZXR1cm5lZCB1bnRvIGhpcyBicmV0aHJlbiwgYW5kIHNhaWQsIFRoZSBjaGlsZCBpcyBub3Q7IGFuZCBJLCB3aGl0aGVyIHNoYWxsIEkgZ28/CkFuZCB0aGV5IHRvb2sgSm9zZXBoJ3MgY29hdCwgYW5kIGtpbGxlZCBhIGtpZCBvZiB0aGUgZ29hdHMsIGFuZCBkaXBwZWQgdGhlIGNvYXQgaW4gdGhlIGJsb29kOwpBbmQgdGhleSBzZW50IHRoZSBjb2F0IG9mIG1hbnkgY29sb3VycywgYW5kIHRoZXkgYnJvdWdodCBpdCB0byB0aGVpciBmYXRoZXI7IGFuZCBzYWlkLCBUaGlzIGhhdmUgd2UgZm91bmQ6IGtub3cgbm93IHdoZXRoZXIgaXQgYmUgdGh5IHNvbidzIGNvYXQgb3Igbm8uCkFuZCBoZSBrbmV3IGl0LCBhbmQgc2FpZCwgSXQgaXMgbXkgc29uJ3MgY29hdDsgYW4gZXZpbCBiZWFzdCBoYXRoIGRldm91cmVkIGhpbTsgSm9zZXBoIGlzIHdpdGhvdXQgZG91YnQgcmVudCBpbiBwaWVjZXMuCkFuZCBKYWNvYiByZW50IGhpcyBjbG90aGVzLCBhbmQgcHV0IHNhY2tjbG90aCB1cG9uIGhpcyBsb2lucywgYW5kIG1vdXJuZWQgZm9yIGhpcyBzb24gbWFueSBkYXlzLgpBbmQgYWxsIGhpcyBzb25zIGFuZCBhbGwgaGlzIGRhdWdodGVycyByb3NlIHVwIHRvIGNvbWZvcnQgaGltOyBidXQgaGUgcmVmdXNlZCB0byBiZSBjb21mb3J0ZWQ7IGFuZCBoZSBzYWlkLCBGb3IgSSB3aWxsIGdvIGRvd24gaW50byB0aGUgZ3JhdmUgdW50byBteSBzb24gbW91cm5pbmcuIFRodXMgaGlzIGZhdGhlciB3ZXB0IGZvciBoaW0uCkFuZCB0aGUgTWlkaWFuaXRlcyBzb2xkIGhpbSBpbnRvIEVneXB0IHVudG8gUG90aXBoYXIsIGFuIG9mZmljZXIgb2YgUGhhcmFvaCdzLCBhbmQgY2FwdGFpbiBvZiB0aGUgZ3VhcmQuCkFuZCBpdCBjYW1lIHRvIHBhc3MgYXQgdGhhdCB0aW1lLCB0aGF0IEp1ZGFoIHdlbnQgZG93biBmcm9tIGhpcyBicmV0aHJlbiwgYW5kIHR1cm5lZCBpbiB0byBhIGNlcnRhaW4gQWR1bGxhbWl0ZSwgd2hvc2UgbmFtZSB3YXMgSGlyYWguCkFuZCBKdWRhaCBzYXcgdGhlcmUgYSBkYXVnaHRlciBvZiBhIGNlcnRhaW4gQ2FuYWFuaXRlLCB3aG9zZSBuYW1lIHdhcyBTaHVhaDsgYW5kIGhlIHRvb2sgaGVyLCBhbmQgd2VudCBpbiB1bnRvIGhlci4KQW5kIHNoZSBjb25jZWl2ZWQsIGFuZCBiYXJlIGEgc29uOyBhbmQgaGUgY2FsbGVkIGhpcyBuYW1lIEVyLgpBbmQgc2hlIGNvbmNlaXZlZCBhZ2FpbiwgYW5kIGJhcmUgYSBzb247IGFuZCBzaGUgY2FsbGVkIGhpcyBuYW1lIE9uYW4uCkFuZCBzaGUgeWV0IGFnYWluIGNvbmNlaXZlZCwgYW5kIGJhcmUgYSBzb247IGFuZCBjYWxsZWQgaGlzIG5hbWUgU2hlbGFoOiBhbmQgaGUgd2FzIGF0IENoZXppYiwgd2hlbiBzaGUgYmFyZSBoaW0uCkFuZCBKdWRhaCB0b29rIGEgd2lmZSBmb3IgRXIgaGlzIGZpcnN0Ym9ybiwgd2hvc2UgbmFtZSB3YXMgVGFtYXIuCkFuZCBFciwgSnVkYWgncyBmaXJzdGJvcm4sIHdhcyB3aWNrZWQgaW4gdGhlIHNpZ2h0IG9mIHRoZSBMT1JEOyBhbmQgdGhlIExPUkQgc2xldyBoaW0uCkFuZCBKdWRhaCBzYWlkIHVudG8gT25hbiwgR28gaW4gdW50byB0aHkgYnJvdGhlcidzIHdpZmUsIGFuZCBtYXJyeSBoZXIsIGFuZCByYWlzZSB1cCBzZWVkIHRvIHRoeSBicm90aGVyLgpBbmQgT25hbiBrbmV3IHRoYXQgdGhlIHNlZWQgc2hvdWxkIG5vdCBiZSBoaXM7IGFuZCBpdCBjYW1lIHRvIHBhc3MsIHdoZW4gaGUgd2VudCBpbiB1bnRvIGhpcyBicm90aGVyJ3Mgd2lmZSwgdGhhdCBoZSBzcGlsbGVkIGl0IG9uIHRoZSBncm91bmQsIGxlc3QgdGhhdCBoZSBzaG91bGQgZ2l2ZSBzZWVkIHRvIGhpcyBicm90aGVyLgpBbmQgdGhlIHRoaW5nIHdoaWNoIGhlIGRpZCBkaXNwbGVhc2VkIHRoZSBMT1JEOiB3aGVyZWZvcmUgaGUgc2xldyBoaW0gYWxzby4KVGhlbiBzYWlkIEp1ZGFoIHRvIFRhbWFyIGhpcyBkYXVnaHRlciBpbiBsYXcsIFJlbWFpbiBhIHdpZG93IGF0IHRoeSBmYXRoZXIncyBob3VzZSwgdGlsbCBTaGVsYWggbXkgc29uIGJlIGdyb3duOiBmb3IgaGUgc2FpZCwgTGVzdCBwZXJhZHZlbnR1cmUgaGUgZGllIGFsc28sIGFzIGhpcyBicmV0aHJlbiBkaWQuIEFuZCBUYW1hciB3ZW50IGFuZCBkd2VsdCBpbiBoZXIgZmF0aGVyJ3MgaG91c2UuCkFuZCBpbiBwcm9jZXNzIG9mIHRpbWUgdGhlIGRhdWdodGVyIG9mIFNodWFoIEp1ZGFoJ3Mgd2lmZSBkaWVkOyBhbmQgSnVkYWggd2FzIGNvbWZvcnRlZCwgYW5kIHdlbnQgdXAgdW50byBoaXMgc2hlZXBzaGVhcmVycyB0byBUaW1uYXRoLCBoZSBhbmQgaGlzIGZyaWVuZCBIaXJhaCB0aGUgQWR1bGxhbWl0ZS4KQW5kIGl0IHdhcyB0b2xkIFRhbWFyLCBzYXlpbmcsIEJlaG9sZCB0aHkgZmF0aGVyIGluIGxhdyBnb2V0aCB1cCB0byBUaW1uYXRoIHRvIHNoZWFyIGhpcyBzaGVlcC4KQW5kIHNoZSBwdXQgaGVyIHdpZG93J3MgZ2FybWVudHMgb2ZmIGZyb20gaGVyLCBhbmQgY292ZXJlZCBoZXIgd2l0aCBhIHZhaWwsIGFuZCB3cmFwcGVkIGhlcnNlbGYsIGFuZCBzYXQgaW4gYW4gb3BlbiBwbGFjZSwgd2hpY2ggaXMgYnkgdGhlIHdheSB0byBUaW1uYXRoOyBmb3Igc2hlIHNhdyB0aGF0IFNoZWxhaCB3YXMgZ3Jvd24sIGFuZCBzaGUgd2FzIG5vdCBnaXZlbiB1bnRvIGhpbSB0byB3aWZlLgpXaGVuIEp1ZGFoIHNhdyBoZXIsIGhlIHRob3VnaHQgaGVyIHRvIGJlIGFuIGhhcmxvdDsgYmVjYXVzZSBzaGUgaGFkIGNvdmVyZWQgaGVyIGZhY2UuCkFuZCBoZSB0dXJuZWQgdW50byBoZXIgYnkgdGhlIHdheSwgYW5kIHNhaWQsIEdvIHRvLCBJIHByYXkgdGhlZSwgbGV0IG1lIGNvbWUgaW4gdW50byB0aGVlOyAoZm9yIGhlIGtuZXcgbm90IHRoYXQgc2hlIHdhcyBoaXMgZGF1Z2h0ZXIgaW4gbGF3LikgQW5kIHNoZSBzYWlkLCBXaGF0IHdpbHQgdGhvdSBnaXZlIG1lLCB0aGF0IHRob3UgbWF5ZXN0IGNvbWUgaW4gdW50byBtZT8KQW5kIGhlIHNhaWQsIEkgd2lsbCBzZW5kIHRoZWUgYSBraWQgZnJvbSB0aGUgZmxvY2suIEFuZCBzaGUgc2FpZCwgV2lsdCB0aG91IGdpdmUgbWUgYSBwbGVkZ2UsIHRpbGwgdGhvdSBzZW5kIGl0PwpBbmQgaGUgc2FpZCwgV2hhdCBwbGVkZ2Ugc2hhbGwgSSBnaXZlIHRoZWU/IEFuZCBzaGUgc2FpZCwgVGh5IHNpZ25ldCwgYW5kIHRoeSBicmFjZWxldHMsIGFuZCB0aHkgc3RhZmYgdGhhdCBpcyBpbiB0aGluZSBoYW5kLiBBbmQgaGUgZ2F2ZSBpdCBoZXIsIGFuZCBjYW1lIGluIHVudG8gaGVyLCBhbmQgc2hlIGNvbmNlaXZlZCBieSBoaW0uCkFuZCBzaGUgYXJvc2UsIGFuZCB3ZW50IGF3YXksIGFuZCBsYWlkIGJ5IGhlciB2YWlsIGZyb20gaGVyLCBhbmQgcHV0IG9uIHRoZSBnYXJtZW50cyBvZiBoZXIgd2lkb3dob29kLgpBbmQgSnVkYWggc2VudCB0aGUga2lkIGJ5IHRoZSBoYW5kIG9mIGhpcyBmcmllbmQgdGhlIEFkdWxsYW1pdGUsIHRvIHJlY2VpdmUgaGlzIHBsZWRnZSBmcm9tIHRoZSB3b21hbidzIGhhbmQ6IGJ1dCBoZSBmb3VuZCBoZXIgbm90LgpUaGVuIGhlIGFza2VkIHRoZSBtZW4gb2YgdGhhdCBwbGFjZSwgc2F5aW5nLCBXaGVyZSBpcyB0aGUgaGFybG90LCB0aGF0IHdhcyBvcGVubHkgYnkgdGhlIHdheSBzaWRlPyBBbmQgdGhleSBzYWlkLCBUaGVyZSB3YXMgbm8gaGFybG90IGluIHRoaXMgcGxhY2UuCkFuZCBoZSByZXR1cm5lZCB0byBKdWRhaCwgYW5kIHNhaWQsIEkgY2Fubm90IGZpbmQgaGVyOyBhbmQgYWxzbyB0aGUgbWVuIG9mIHRoZSBwbGFjZSBzYWlkLCB0aGF0IHRoZXJlIHdhcyBubyBoYXJsb3QgaW4gdGhpcyBwbGFjZS4KQW5kIEp1ZGFoIHNhaWQsIExldCBoZXIgdGFrZSBpdCB0byBoZXIsIGxlc3Qgd2UgYmUgc2hhbWVkOiBiZWhvbGQsIEkgc2VudCB0aGlzIGtpZCwgYW5kIHRob3UgaGFzdCBub3QgZm91bmQgaGVyLgpBbmQgaXQgY2FtZSB0byBwYXNzIGFib3V0IHRocmVlIG1vbnRocyBhZnRlciwgdGhhdCBpdCB3YXMgdG9sZCBKdWRhaCwgc2F5aW5nLCBUYW1hciB0aHkgZGF1Z2h0ZXIgaW4gbGF3IGhhdGggcGxheWVkIHRoZSBoYXJsb3Q7IGFuZCBhbHNvLCBiZWhvbGQsIHNoZSBpcyB3aXRoIGNoaWxkIGJ5IHdob3JlZG9tLiBBbmQgSnVkYWggc2FpZCwgQnJpbmcgaGVyIGZvcnRoLCBhbmQgbGV0IGhlciBiZSBidXJudC4KV2hlbiBzaGUgd2FzIGJyb3VnaHQgZm9ydGgsIHNoZSBzZW50IHRvIGhlciBmYXRoZXIgaW4gbGF3LCBzYXlpbmcsIEJ5IHRoZSBtYW4sIHdob3NlIHRoZXNlIGFyZSwgYW0gSSB3aXRoIGNoaWxkOiBhbmQgc2hlIHNhaWQsIERpc2Nlcm4sIEkgcHJheSB0aGVlLCB3aG9zZSBhcmUgdGhlc2UsIHRoZSBzaWduZXQsIGFuZCBicmFjZWxldHMsIGFuZCBzdGFmZi4KQW5kIEp1ZGFoIGFja25vd2xlZGdlZCB0aGVtLCBhbmQgc2FpZCwgU2hlIGhhdGggYmVlbiBtb3JlIHJpZ2h0ZW91cyB0aGFuIEk7IGJlY2F1c2UgdGhhdCBJIGdhdmUgaGVyIG5vdCB0byBTaGVsYWggbXkgc29uLiBBbmQgaGUga25ldyBoZXIgYWdhaW4gbm8gbW9yZS4KQW5kIGl0IGNhbWUgdG8gcGFzcyBpbiB0aGUgdGltZSBvZiBoZXIgdHJhdmFpbCwgdGhhdCwgYmVob2xkLCB0d2lucyB3ZXJlIGluIGhlciB3b21iLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIHNoZSB0cmF2YWlsZWQsIHRoYXQgdGhlIG9uZSBwdXQgb3V0IGhpcyBoYW5kOiBhbmQgdGhlIG1pZHdpZmUgdG9vayBhbmQgYm91bmQgdXBvbiBoaXMgaGFuZCBhIHNjYXJsZXQgdGhyZWFkLCBzYXlpbmcsIFRoaXMgY2FtZSBvdXQgZmlyc3QuCkFuZCBpdCBjYW1lIHRvIHBhc3MsIGFzIGhlIGRyZXcgYmFjayBoaXMgaGFuZCwgdGhhdCwgYmVob2xkLCBoaXMgYnJvdGhlciBjYW1lIG91dDogYW5kIHNoZSBzYWlkLCBIb3cgaGFzdCB0aG91IGJyb2tlbiBmb3J0aD8gdGhpcyBicmVhY2ggYmUgdXBvbiB0aGVlOiB0aGVyZWZvcmUgaGlzIG5hbWUgd2FzIGNhbGxlZCBQaGFyZXouCkFuZCBhZnRlcndhcmQgY2FtZSBvdXQgaGlzIGJyb3RoZXIsIHRoYXQgaGFkIHRoZSBzY2FybGV0IHRocmVhZCB1cG9uIGhpcyBoYW5kOiBhbmQgaGlzIG5hbWUgd2FzIGNhbGxlZCBaYXJhaC4KQW5kIEpvc2VwaCB3YXMgYnJvdWdodCBkb3duIHRvIEVneXB0OyBhbmQgUG90aXBoYXIsIGFuIG9mZmljZXIgb2YgUGhhcmFvaCwgY2FwdGFpbiBvZiB0aGUgZ3VhcmQsIGFuIEVneXB0aWFuLCBib3VnaHQgaGltIG9mIHRoZSBoYW5kcyBvZiB0aGUgSXNobWVlbGl0ZXMsIHdoaWNoIGhhZCBicm91Z2h0IGhpbSBkb3duIHRoaXRoZXIuCkFuZCB0aGUgTE9SRCB3YXMgd2l0aCBKb3NlcGgsIGFuZCBoZSB3YXMgYSBwcm9zcGVyb3VzIG1hbjsgYW5kIGhlIHdhcyBpbiB0aGUgaG91c2Ugb2YgaGlzIG1hc3RlciB0aGUgRWd5cHRpYW4uCkFuZCBoaXMgbWFzdGVyIHNhdyB0aGF0IHRoZSBMT1JEIHdhcyB3aXRoIGhpbSwgYW5kIHRoYXQgdGhlIExPUkQgbWFkZSBhbGwgdGhhdCBoZSBkaWQgdG8gcHJvc3BlciBpbiBoaXMgaGFuZC4KQW5kIEpvc2VwaCBmb3VuZCBncmFjZSBpbiBoaXMgc2lnaHQsIGFuZCBoZSBzZXJ2ZWQgaGltOiBhbmQgaGUgbWFkZSBoaW0gb3ZlcnNlZXIgb3ZlciBoaXMgaG91c2UsIGFuZCBhbGwgdGhhdCBoZSBoYWQgaGUgcHV0IGludG8gaGlzIGhhbmQuCkFuZCBpdCBjYW1lIHRvIHBhc3MgZnJvbSB0aGUgdGltZSB0aGF0IGhlIGhhZCBtYWRlIGhpbSBvdmVyc2VlciBpbiBoaXMgaG91c2UsIGFuZCBvdmVyIGFsbCB0aGF0IGhlIGhhZCwgdGhhdCB0aGUgTE9SRCBibGVzc2VkIHRoZSBFZ3lwdGlhbidzIGhvdXNlIGZvciBKb3NlcGgncyBzYWtlOyBhbmQgdGhlIGJsZXNzaW5nIG9mIHRoZSBMT1JEIHdhcyB1cG9uIGFsbCB0aGF0IGhlIGhhZCBpbiB0aGUgaG91c2UsIGFuZCBpbiB0aGUgZmllbGQuCkFuZCBoZSBsZWZ0IGFsbCB0aGF0IGhlIGhhZCBpbiBKb3NlcGgncyBoYW5kOyBhbmQgaGUga25ldyBub3Qgb3VnaHQgaGUgaGFkLCBzYXZlIHRoZSBicmVhZCB3aGljaCBoZSBkaWQgZWF0LiBBbmQgSm9zZXBoIHdhcyBhIGdvb2RseSBwZXJzb24sIGFuZCB3ZWxsIGZhdm91cmVkLgpBbmQgaXQgY2FtZSB0byBwYXNzIGFmdGVyIHRoZXNlIHRoaW5ncywgdGhhdCBoaXMgbWFzdGVyJ3Mgd2lmZSBjYXN0IGhlciBleWVzIHVwb24gSm9zZXBoOyBhbmQgc2hlIHNhaWQsIExpZSB3aXRoIG1lLgpCdXQgaGUgcmVmdXNlZCwgYW5kIHNhaWQgdW50byBoaXMgbWFzdGVyJ3Mgd2lmZSwgQmVob2xkLCBteSBtYXN0ZXIgd290dGV0aCBub3Qgd2hhdCBpcyB3aXRoIG1lIGluIHRoZSBob3VzZSwgYW5kIGhlIGhhdGggY29tbWl0dGVkIGFsbCB0aGF0IGhlIGhhdGggdG8gbXkgaGFuZDsKVGhlcmUgaXMgbm9uZSBncmVhdGVyIGluIHRoaXMgaG91c2UgdGhhbiBJOyBuZWl0aGVyIGhhdGggaGUga2VwdCBiYWNrIGFueSB0aGluZyBmcm9tIG1lIGJ1dCB0aGVlLCBiZWNhdXNlIHRob3UgYXJ0IGhpcyB3aWZlOiBob3cgdGhlbiBjYW4gSSBkbyB0aGlzIGdyZWF0IHdpY2tlZG5lc3MsIGFuZCBzaW4gYWdhaW5zdCBHb2Q/CkFuZCBpdCBjYW1lIHRvIHBhc3MsIGFzIHNoZSBzcGFrZSB0byBKb3NlcGggZGF5IGJ5IGRheSwgdGhhdCBoZSBoZWFya2VuZWQgbm90IHVudG8gaGVyLCB0byBsaWUgYnkgaGVyLCBvciB0byBiZSB3aXRoIGhlci4KQW5kIGl0IGNhbWUgdG8gcGFzcyBhYm91dCB0aGlzIHRpbWUsIHRoYXQgSm9zZXBoIHdlbnQgaW50byB0aGUgaG91c2UgdG8gZG8gaGlzIGJ1c2luZXNzOyBhbmQgdGhlcmUgd2FzIG5vbmUgb2YgdGhlIG1lbiBvZiB0aGUgaG91c2UgdGhlcmUgd2l0aGluLgpBbmQgc2hlIGNhdWdodCBoaW0gYnkgaGlzIGdhcm1lbnQsIHNheWluZywgTGllIHdpdGggbWU6IGFuZCBoZSBsZWZ0IGhpcyBnYXJtZW50IGluIGhlciBoYW5kLCBhbmQgZmxlZCwgYW5kIGdvdCBoaW0gb3V0LgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIHNoZSBzYXcgdGhhdCBoZSBoYWQgbGVmdCBoaXMgZ2FybWVudCBpbiBoZXIgaGFuZCwgYW5kIHdhcyBmbGVkIGZvcnRoLApUaGF0IHNoZSBjYWxsZWQgdW50byB0aGUgbWVuIG9mIGhlciBob3VzZSwgYW5kIHNwYWtlIHVudG8gdGhlbSwgc2F5aW5nLCBTZWUsIGhlIGhhdGggYnJvdWdodCBpbiBhbiBIZWJyZXcgdW50byB1cyB0byBtb2NrIHVzOyBoZSBjYW1lIGluIHVudG8gbWUgdG8gbGllIHdpdGggbWUsIGFuZCBJIGNyaWVkIHdpdGggYSBsb3VkIHZvaWNlOgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIGhlIGhlYXJkIHRoYXQgSSBsaWZ0ZWQgdXAgbXkgdm9pY2UgYW5kIGNyaWVkLCB0aGF0IGhlIGxlZnQgaGlzIGdhcm1lbnQgd2l0aCBtZSwgYW5kIGZsZWQsIGFuZCBnb3QgaGltIG91dC4KQW5kIHNoZSBsYWlkIHVwIGhpcyBnYXJtZW50IGJ5IGhlciwgdW50aWwgaGlzIGxvcmQgY2FtZSBob21lLgpBbmQgc2hlIHNwYWtlIHVudG8gaGltIGFjY29yZGluZyB0byB0aGVzZSB3b3Jkcywgc2F5aW5nLCBUaGUgSGVicmV3IHNlcnZhbnQsIHdoaWNoIHRob3UgaGFzdCBicm91Z2h0IHVudG8gdXMsIGNhbWUgaW4gdW50byBtZSB0byBtb2NrIG1lOgpBbmQgaXQgY2FtZSB0byBwYXNzLCBhcyBJIGxpZnRlZCB1cCBteSB2b2ljZSBhbmQgY3JpZWQsIHRoYXQgaGUgbGVmdCBoaXMgZ2FybWVudCB3aXRoIG1lLCBhbmQgZmxlZCBvdXQuCkFuZCBpdCBjYW1lIHRvIHBhc3MsIHdoZW4gaGlzIG1hc3RlciBoZWFyZCB0aGUgd29yZHMgb2YgaGlzIHdpZmUsIHdoaWNoIHNoZSBzcGFrZSB1bnRvIGhpbSwgc2F5aW5nLCBBZnRlciB0aGlzIG1hbm5lciBkaWQgdGh5IHNlcnZhbnQgdG8gbWU7IHRoYXQgaGlzIHdyYXRoIHdhcyBraW5kbGVkLgpBbmQgSm9zZXBoJ3MgbWFzdGVyIHRvb2sgaGltLCBhbmQgcHV0IGhpbSBpbnRvIHRoZSBwcmlzb24sIGEgcGxhY2Ugd2hlcmUgdGhlIGtpbmcncyBwcmlzb25lcnMgd2VyZSBib3VuZDogYW5kIGhlIHdhcyB0aGVyZSBpbiB0aGUgcHJpc29uLgpCdXQgdGhlIExPUkQgd2FzIHdpdGggSm9zZXBoLCBhbmQgc2hld2VkIGhpbSBtZXJjeSwgYW5kIGdhdmUgaGltIGZhdm91ciBpbiB0aGUgc2lnaHQgb2YgdGhlIGtlZXBlciBvZiB0aGUgcHJpc29uLgpBbmQgdGhlIGtlZXBlciBvZiB0aGUgcHJpc29uIGNvbW1pdHRlZCB0byBKb3NlcGgncyBoYW5kIGFsbCB0aGUgcHJpc29uZXJzIHRoYXQgd2VyZSBpbiB0aGUgcHJpc29uOyBhbmQgd2hhdHNvZXZlciB0aGV5IGRpZCB0aGVyZSwgaGUgd2FzIHRoZSBkb2VyIG9mIGl0LgpUaGUga2VlcGVyIG9mIHRoZSBwcmlzb24gbG9va2VkIG5vdCB0byBhbnkgdGhpbmcgdGhhdCB3YXMgdW5kZXIgaGlzIGhhbmQ7IGJlY2F1c2UgdGhlIExPUkQgd2FzIHdpdGggaGltLCBhbmQgdGhhdCB3aGljaCBoZSBkaWQsIHRoZSBMT1JEIG1hZGUgaXQgdG8gcHJvc3Blci4KQW5kIGl0IGNhbWUgdG8gcGFzcyBhZnRlciB0aGVzZSB0aGluZ3MsIHRoYXQgdGhlIGJ1dGxlciBvZiB0aGUga2luZyBvZiBFZ3lwdCBhbmQgaGlzIGJha2VyIGhhZCBvZmZlbmRlZCB0aGVpciBsb3JkIHRoZSBraW5nIG9mIEVneXB0LgpBbmQgUGhhcmFvaCB3YXMgd3JvdGggYWdhaW5zdCB0d28gb2YgaGlzIG9mZmljZXJzLCBhZ2FpbnN0IHRoZSBjaGllZiBvZiB0aGUgYnV0bGVycywgYW5kIGFnYWluc3QgdGhlIGNoaWVmIG9mIHRoZSBiYWtlcnMuCkFuZCBoZSBwdXQgdGhlbSBpbiB3YXJkIGluIHRoZSBob3VzZSBvZiB0aGUgY2FwdGFpbiBvZiB0aGUgZ3VhcmQsIGludG8gdGhlIHByaXNvbiwgdGhlIHBsYWNlIHdoZXJlIEpvc2VwaCB3YXMgYm91bmQuCkFuZCB0aGUgY2FwdGFpbiBvZiB0aGUgZ3VhcmQgY2hhcmdlZCBKb3NlcGggd2l0aCB0aGVtLCBhbmQgaGUgc2VydmVkIHRoZW06IGFuZCB0aGV5IGNvbnRpbnVlZCBhIHNlYXNvbiBpbiB3YXJkLgpBbmQgdGhleSBkcmVhbWVkIGEgZHJlYW0gYm90aCBvZiB0aGVtLCBlYWNoIG1hbiBoaXMgZHJlYW0gaW4gb25lIG5pZ2h0LCBlYWNoIG1hbiBhY2NvcmRpbmcgdG8gdGhlIGludGVycHJldGF0aW9uIG9mIGhpcyBkcmVhbSwgdGhlIGJ1dGxlciBhbmQgdGhlIGJha2VyIG9mIHRoZSBraW5nIG9mIEVneXB0LCB3aGljaCB3ZXJlIGJvdW5kIGluIHRoZSBwcmlzb24uCkFuZCBKb3NlcGggY2FtZSBpbiB1bnRvIHRoZW0gaW4gdGhlIG1vcm5pbmcsIGFuZCBsb29rZWQgdXBvbiB0aGVtLCBhbmQsIGJlaG9sZCwgdGhleSB3ZXJlIHNhZC4KQW5kIGhlIGFza2VkIFBoYXJhb2gncyBvZmZpY2VycyB0aGF0IHdlcmUgd2l0aCBoaW0gaW4gdGhlIHdhcmQgb2YgaGlzIGxvcmQncyBob3VzZSwgc2F5aW5nLCBXaGVyZWZvcmUgbG9vayB5ZSBzbyBzYWRseSB0byBkYXk/CkFuZCB0aGV5IHNhaWQgdW50byBoaW0sIFdlIGhhdmUgZHJlYW1lZCBhIGRyZWFtLCBhbmQgdGhlcmUgaXMgbm8gaW50ZXJwcmV0ZXIgb2YgaXQuIEFuZCBKb3NlcGggc2FpZCB1bnRvIHRoZW0sIERvIG5vdCBpbnRlcnByZXRhdGlvbnMgYmVsb25nIHRvIEdvZD8gdGVsbCBtZSB0aGVtLCBJIHByYXkgeW91LgpBbmQgdGhlIGNoaWVmIGJ1dGxlciB0b2xkIGhpcyBkcmVhbSB0byBKb3NlcGgsIGFuZCBzYWlkIHRvIGhpbSwgSW4gbXkgZHJlYW0sIGJlaG9sZCwgYSB2aW5lIHdhcyBiZWZvcmUgbWU7CkFuZCBpbiB0aGUgdmluZSB3ZXJlIHRocmVlIGJyYW5jaGVzOiBhbmQgaXQgd2FzIGFzIHRob3VnaCBpdCBidWRkZWQsIGFuZCBoZXIgYmxvc3NvbXMgc2hvdCBmb3J0aDsgYW5kIHRoZSBjbHVzdGVycyB0aGVyZW9mIGJyb3VnaHQgZm9ydGggcmlwZSBncmFwZXM6CkFuZCBQaGFyYW9oJ3MgY3VwIHdhcyBpbiBteSBoYW5kOiBhbmQgSSB0b29rIHRoZSBncmFwZXMsIGFuZCBwcmVzc2VkIHRoZW0gaW50byBQaGFyYW9oJ3MgY3VwLCBhbmQgSSBnYXZlIHRoZSBjdXAgaW50byBQaGFyYW9oJ3MgaGFuZC4KQW5kIEpvc2VwaCBzYWlkIHVudG8gaGltLCBUaGlzIGlzIHRoZSBpbnRlcnByZXRhdGlvbiBvZiBpdDogVGhlIHRocmVlIGJyYW5jaGVzIGFyZSB0aHJlZSBkYXlzOgpZZXQgd2l0aGluIHRocmVlIGRheXMgc2hhbGwgUGhhcmFvaCBsaWZ0IHVwIHRoaW5lIGhlYWQsIGFuZCByZXN0b3JlIHRoZWUgdW50byB0aHkgcGxhY2U6IGFuZCB0aG91IHNoYWx0IGRlbGl2ZXIgUGhhcmFvaCdzIGN1cCBpbnRvIGhpcyBoYW5kLCBhZnRlciB0aGUgZm9ybWVyIG1hbm5lciB3aGVuIHRob3Ugd2FzdCBoaXMgYnV0bGVyLgpCdXQgdGhpbmsgb24gbWUgd2hlbiBpdCBzaGFsbCBiZSB3ZWxsIHdpdGggdGhlZSwgYW5kIHNoZXcga2luZG5lc3MsIEkgcHJheSB0aGVlLCB1bnRvIG1lLCBhbmQgbWFrZSBtZW50aW9uIG9mIG1lIHVudG8gUGhhcmFvaCwgYW5kIGJyaW5nIG1lIG91dCBvZiB0aGlzIGhvdXNlOgpGb3IgaW5kZWVkIEkgd2FzIHN0b2xlbiBhd2F5IG91dCBvZiB0aGUgbGFuZCBvZiB0aGUgSGVicmV3czogYW5kIGhlcmUgYWxzbyBoYXZlIEkgZG9uZSBub3RoaW5nIHRoYXQgdGhleSBzaG91bGQgcHV0IG1lIGludG8gdGhlIGR1bmdlb24uCldoZW4gdGhlIGNoaWVmIGJha2VyIHNhdyB0aGF0IHRoZSBpbnRlcnByZXRhdGlvbiB3YXMgZ29vZCwgaGUgc2FpZCB1bnRvIEpvc2VwaCwgSSBhbHNvIHdhcyBpbiBteSBkcmVhbSwgYW5kLCBiZWhvbGQsIEkgaGFkIHRocmVlIHdoaXRlIGJhc2tldHMgb24gbXkgaGVhZDoKQW5kIGluIHRoZSB1cHBlcm1vc3QgYmFza2V0IHRoZXJlIHdhcyBvZiBhbGwgbWFubmVyIG9mIGJha2VtZWF0cyBmb3IgUGhhcmFvaDsgYW5kIHRoZSBiaXJkcyBkaWQgZWF0IHRoZW0gb3V0IG9mIHRoZSBiYXNrZXQgdXBvbiBteSBoZWFkLgpBbmQgSm9zZXBoIGFuc3dlcmVkIGFuZCBzYWlkLCBUaGlzIGlzIHRoZSBpbnRlcnByZXRhdGlvbiB0aGVyZW9mOiBUaGUgdGhyZWUgYmFza2V0cyBhcmUgdGhyZWUgZGF5czoKWWV0IHdpdGhpbiB0aHJlZSBkYXlzIHNoYWxsIFBoYXJhb2ggbGlmdCB1cCB0aHkgaGVhZCBmcm9tIG9mZiB0aGVlLCBhbmQgc2hhbGwgaGFuZyB0aGVlIG9uIGEgdHJlZTsgYW5kIHRoZSBiaXJkcyBzaGFsbCBlYXQgdGh5IGZsZXNoIGZyb20gb2ZmIHRoZWUuCkFuZCBpdCBjYW1lIHRvIHBhc3MgdGhlIHRoaXJkIGRheSwgd2hpY2ggd2FzIFBoYXJhb2gncyBiaXJ0aGRheSwgdGhhdCBoZSBtYWRlIGEgZmVhc3QgdW50byBhbGwgaGlzIHNlcnZhbnRzOiBhbmQgaGUgbGlmdGVkIHVwIHRoZSBoZWFkIG9mIHRoZSBjaGllZiBidXRsZXIgYW5kIG9mIHRoZSBjaGllZiBiYWtlciBhbW9uZyBoaXMgc2VydmFudHMuCkFuZCBoZSByZXN0b3JlZCB0aGUgY2hpZWYgYnV0bGVyIHVudG8gaGlzIGJ1dGxlcnNoaXAgYWdhaW47IGFuZCBoZSBnYXZlIHRoZSBjdXAgaW50byBQaGFyYW9oJ3MgaGFuZDoKQnV0IGhlIGhhbmdlZCB0aGUgY2hpZWYgYmFrZXI6IGFzIEpvc2VwaCBoYWQgaW50ZXJwcmV0ZWQgdG8gdGhlbS4KWWV0IGRpZCBub3QgdGhlIGNoaWVmIGJ1dGxlciByZW1lbWJlciBKb3NlcGgsIGJ1dCBmb3JnYXQgaGltLgpBbmQgaXQgY2FtZSB0byBwYXNzIGF0IHRoZSBlbmQgb2YgdHdvIGZ1bGwgeWVhcnMsIHRoYXQgUGhhcmFvaCBkcmVhbWVkOiBhbmQsIGJlaG9sZCwgaGUgc3Rvb2QgYnkgdGhlIHJpdmVyLgpBbmQsIGJlaG9sZCwgdGhlcmUgY2FtZSB1cCBvdXQgb2YgdGhlIHJpdmVyIHNldmVuIHdlbGwgZmF2b3VyZWQga2luZSBhbmQgZmF0Zmxlc2hlZDsgYW5kIHRoZXkgZmVkIGluIGEgbWVhZG93LgpBbmQsIGJlaG9sZCwgc2V2ZW4gb3RoZXIga2luZSBjYW1lIHVwIGFmdGVyIHRoZW0gb3V0IG9mIHRoZSByaXZlciwgaWxsIGZhdm91cmVkIGFuZCBsZWFuZmxlc2hlZDsgYW5kIHN0b29kIGJ5IHRoZSBvdGhlciBraW5lIHVwb24gdGhlIGJyaW5rIG9mIHRoZSByaXZlci4KQW5kIHRoZSBpbGwgZmF2b3VyZWQgYW5kIGxlYW5mbGVzaGVkIGtpbmUgZGlkIGVhdCB1cCB0aGUgc2V2ZW4gd2VsbCBmYXZvdXJlZCBhbmQgZmF0IGtpbmUuIFNvIFBoYXJhb2ggYXdva2UuCkFuZCBoZSBzbGVwdCBhbmQgZHJlYW1lZCB0aGUgc2Vjb25kIHRpbWU6IGFuZCwgYmVob2xkLCBzZXZlbiBlYXJzIG9mIGNvcm4gY2FtZSB1cCB1cG9uIG9uZSBzdGFsaywgcmFuayBhbmQgZ29vZC4KQW5kLCBiZWhvbGQsIHNldmVuIHRoaW4gZWFycyBhbmQgYmxhc3RlZCB3aXRoIHRoZSBlYXN0IHdpbmQgc3BydW5nIHVwIGFmdGVyIHRoZW0uCkFuZCB0aGUgc2V2ZW4gdGhpbiBlYXJzIGRldm91cmVkIHRoZSBzZXZlbiByYW5rIGFuZCBmdWxsIGVhcnMuIEFuZCBQaGFyYW9oIGF3b2tlLCBhbmQsIGJlaG9sZCwgaXQgd2FzIGEgZHJlYW0uCkFuZCBpdCBjYW1lIHRvIHBhc3MgaW4gdGhlIG1vcm5pbmcgdGhhdCBoaXMgc3Bpcml0IHdhcyB0cm91YmxlZDsgYW5kIGhlIHNlbnQgYW5kIGNhbGxlZCBmb3IgYWxsIHRoZSBtYWdpY2lhbnMgb2YgRWd5cHQsIGFuZCBhbGwgdGhlIHdpc2UgbWVuIHRoZXJlb2Y6IGFuZCBQaGFyYW9oIHRvbGQgdGhlbSBoaXMgZHJlYW07IGJ1dCB0aGVyZSB3YXMgbm9uZSB0aGF0IGNvdWxkIGludGVycHJldCB0aGVtIHVudG8gUGhhcmFvaC4KVGhlbiBzcGFrZSB0aGUgY2hpZWYgYnV0bGVyIHVudG8gUGhhcmFvaCwgc2F5aW5nLCBJIGRvIHJlbWVtYmVyIG15IGZhdWx0cyB0aGlzIGRheToKUGhhcmFvaCB3YXMgd3JvdGggd2l0aCBoaXMgc2VydmFudHMsIGFuZCBwdXQgbWUgaW4gd2FyZCBpbiB0aGUgY2FwdGFpbiBvZiB0aGUgZ3VhcmQncyBob3VzZSwgYm90aCBtZSBhbmQgdGhlIGNoaWVmIGJha2VyOgpBbmQgd2UgZHJlYW1lZCBhIGRyZWFtIGluIG9uZSBuaWdodCwgSSBhbmQgaGU7IHdlIGRyZWFtZWQgZWFjaCBtYW4gYWNjb3JkaW5nIHRvIHRoZSBpbnRlcnByZXRhdGlvbiBvZiBoaXMgZHJlYW0uCkFuZCB0aGVyZSB3YXMgdGhlcmUgd2l0aCB1cyBhIHlvdW5nIG1hbiwgYW4gSGVicmV3LCBzZXJ2YW50IHRvIHRoZSBjYXB0YWluIG9mIHRoZSBndWFyZDsgYW5kIHdlIHRvbGQgaGltLCBhbmQgaGUgaW50ZXJwcmV0ZWQgdG8gdXMgb3VyIGRyZWFtczsgdG8gZWFjaCBtYW4gYWNjb3JkaW5nIHRvIGhpcyBkcmVhbSBoZSBkaWQgaW50ZXJwcmV0LgpBbmQgaXQgY2FtZSB0byBwYXNzLCBhcyBoZSBpbnRlcnByZXRlZCB0byB1cywgc28gaXQgd2FzOyBtZSBoZSByZXN0b3JlZCB1bnRvIG1pbmUgb2ZmaWNlLCBhbmQgaGltIGhlIGhhbmdlZC4KVGhlbiBQaGFyYW9oIHNlbnQgYW5kIGNhbGxlZCBKb3NlcGgsIGFuZCB0aGV5IGJyb3VnaHQgaGltIGhhc3RpbHkgb3V0IG9mIHRoZSBkdW5nZW9uOiBhbmQgaGUgc2hhdmVkIGhpbXNlbGYsIGFuZCBjaGFuZ2VkIGhpcyByYWltZW50LCBhbmQgY2FtZSBpbiB1bnRvIFBoYXJhb2guCkFuZCBQaGFyYW9oIHNhaWQgdW50byBKb3NlcGgsIEkgaGF2ZSBkcmVhbWVkIGEgZHJlYW0sIGFuZCB0aGVyZSBpcyBub25lIHRoYXQgY2FuIGludGVycHJldCBpdDogYW5kIEkgaGF2ZSBoZWFyZCBzYXkgb2YgdGhlZSwgdGhhdCB0aG91IGNhbnN0IHVuZGVyc3RhbmQgYSBkcmVhbSB0byBpbnRlcnByZXQgaXQuCkFuZCBKb3NlcGggYW5zd2VyZWQgUGhhcmFvaCwgc2F5aW5nLCBJdCBpcyBub3QgaW4gbWU6IEdvZCBzaGFsbCBnaXZlIFBoYXJhb2ggYW4gYW5zd2VyIG9mIHBlYWNlLgpBbmQgUGhhcmFvaCBzYWlkIHVudG8gSm9zZXBoLCBJbiBteSBkcmVhbSwgYmVob2xkLCBJIHN0b29kIHVwb24gdGhlIGJhbmsgb2YgdGhlIHJpdmVyOgpBbmQsIGJlaG9sZCwgdGhlcmUgY2FtZSB1cCBvdXQgb2YgdGhlIHJpdmVyIHNldmVuIGtpbmUsIGZhdGZsZXNoZWQgYW5kIHdlbGwgZmF2b3VyZWQ7IGFuZCB0aGV5IGZlZCBpbiBhIG1lYWRvdzoKQW5kLCBiZWhvbGQsIHNldmVuIG90aGVyIGtpbmUgY2FtZSB1cCBhZnRlciB0aGVtLCBwb29yIGFuZCB2ZXJ5IGlsbCBmYXZvdXJlZCBhbmQgbGVhbmZsZXNoZWQsIHN1Y2ggYXMgSSBuZXZlciBzYXcgaW4gYWxsIHRoZSBsYW5kIG9mIEVneXB0IGZvciBiYWRuZXNzOgpBbmQgdGhlIGxlYW4gYW5kIHRoZSBpbGwgZmF2b3VyZWQga2luZSBkaWQgZWF0IHVwIHRoZSBmaXJzdCBzZXZlbiBmYXQga2luZToKQW5kIHdoZW4gdGhleSBoYWQgZWF0ZW4gdGhlbSB1cCwgaXQgY291bGQgbm90IGJlIGtub3duIHRoYXQgdGhleSBoYWQgZWF0ZW4gdGhlbTsgYnV0IHRoZXkgd2VyZSBzdGlsbCBpbGwgZmF2b3VyZWQsIGFzIGF0IHRoZSBiZWdpbm5pbmcuIFNvIEkgYXdva2UuCkFuZCBJIHNhdyBpbiBteSBkcmVhbSwgYW5kLCBiZWhvbGQsIHNldmVuIGVhcnMgY2FtZSB1cCBpbiBvbmUgc3RhbGssIGZ1bGwgYW5kIGdvb2Q6CkFuZCwgYmVob2xkLCBzZXZlbiBlYXJzLCB3aXRoZXJlZCwgdGhpbiwgYW5kIGJsYXN0ZWQgd2l0aCB0aGUgZWFzdCB3aW5kLCBzcHJ1bmcgdXAgYWZ0ZXIgdGhlbToKQW5kIHRoZSB0aGluIGVhcnMgZGV2b3VyZWQgdGhlIHNldmVuIGdvb2QgZWFyczogYW5kIEkgdG9sZCB0aGlzIHVudG8gdGhlIG1hZ2ljaWFuczsgYnV0IHRoZXJlIHdhcyBub25lIHRoYXQgY291bGQgZGVjbGFyZSBpdCB0byBtZS4KQW5kIEpvc2VwaCBzYWlkIHVudG8gUGhhcmFvaCwgVGhlIGRyZWFtIG9mIFBoYXJhb2ggaXMgb25lOiBHb2QgaGF0aCBzaGV3ZWQgUGhhcmFvaCB3aGF0IGhlIGlzIGFib3V0IHRvIGRvLgpUaGUgc2V2ZW4gZ29vZCBraW5lIGFyZSBzZXZlbiB5ZWFyczsgYW5kIHRoZSBzZXZlbiBnb29kIGVhcnMgYXJlIHNldmVuIHllYXJzOiB0aGUgZHJlYW0gaXMgb25lLgpBbmQgdGhlIHNldmVuIHRoaW4gYW5kIGlsbCBmYXZvdXJlZCBraW5lIHRoYXQgY2FtZSB1cCBhZnRlciB0aGVtIGFyZSBzZXZlbiB5ZWFyczsgYW5kIHRoZSBzZXZlbiBlbXB0eSBlYXJzIGJsYXN0ZWQgd2l0aCB0aGUgZWFzdCB3aW5kIHNoYWxsIGJlIHNldmVuIHllYXJzIG9mIGZhbWluZS4KVGhpcyBpcyB0aGUgdGhpbmcgd2hpY2ggSSBoYXZlIHNwb2tlbiB1bnRvIFBoYXJhb2g6IFdoYXQgR29kIGlzIGFib3V0IHRvIGRvIGhlIHNoZXdldGggdW50byBQaGFyYW9oLgpCZWhvbGQsIHRoZXJlIGNvbWUgc2V2ZW4geWVhcnMgb2YgZ3JlYXQgcGxlbnR5IHRocm91Z2hvdXQgYWxsIHRoZSBsYW5kIG9mIEVneXB0OgpBbmQgdGhlcmUgc2hhbGwgYXJpc2UgYWZ0ZXIgdGhlbSBzZXZlbiB5ZWFycyBvZiBmYW1pbmU7IGFuZCBhbGwgdGhlIHBsZW50eSBzaGFsbCBiZSBmb3Jnb3R0ZW4gaW4gdGhlIGxhbmQgb2YgRWd5cHQ7IGFuZCB0aGUgZmFtaW5lIHNoYWxsIGNvbnN1bWUgdGhlIGxhbmQ7CkFuZCB0aGUgcGxlbnR5IHNoYWxsIG5vdCBiZSBrbm93biBpbiB0aGUgbGFuZCBieSByZWFzb24gb2YgdGhhdCBmYW1pbmUgZm9sbG93aW5nOyBmb3IgaXQgc2hhbGwgYmUgdmVyeSBncmlldm91cy4KQW5kIGZvciB0aGF0IHRoZSBkcmVhbSB3YXMgZG91YmxlZCB1bnRvIFBoYXJhb2ggdHdpY2U7IGl0IGlzIGJlY2F1c2UgdGhlIHRoaW5nIGlzIGVzdGFibGlzaGVkIGJ5IEdvZCwgYW5kIEdvZCB3aWxsIHNob3J0bHkgYnJpbmcgaXQgdG8gcGFzcy4KTm93IHRoZXJlZm9yZSBsZXQgUGhhcmFvaCBsb29rIG91dCBhIG1hbiBkaXNjcmVldCBhbmQgd2lzZSwgYW5kIHNldCBoaW0gb3ZlciB0aGUgbGFuZCBvZiBFZ3lwdC4KTGV0IFBoYXJhb2ggZG8gdGhpcywgYW5kIGxldCBoaW0gYXBwb2ludCBvZmZpY2VycyBvdmVyIHRoZSBsYW5kLCBhbmQgdGFrZSB1cCB0aGUgZmlmdGggcGFydCBvZiB0aGUgbGFuZCBvZiBFZ3lwdCBpbiB0aGUgc2V2ZW4gcGxlbnRlb3VzIHllYXJzLgpBbmQgbGV0IHRoZW0gZ2F0aGVyIGFsbCB0aGUgZm9vZCBvZiB0aG9zZSBnb29kIHllYXJzIHRoYXQgY29tZSwgYW5kIGxheSB1cCBjb3JuIHVuZGVyIHRoZSBoYW5kIG9mIFBoYXJhb2gsIGFuZCBsZXQgdGhlbSBrZWVwIGZvb2QgaW4gdGhlIGNpdGllcy4KQW5kIHRoYXQgZm9vZCBzaGFsbCBiZSBmb3Igc3RvcmUgdG8gdGhlIGxhbmQgYWdhaW5zdCB0aGUgc2V2ZW4geWVhcnMgb2YgZmFtaW5lLCB3aGljaCBzaGFsbCBiZSBpbiB0aGUgbGFuZCBvZiBFZ3lwdDsgdGhhdCB0aGUgbGFuZCBwZXJpc2ggbm90IHRocm91Z2ggdGhlIGZhbWluZS4KQW5kIHRoZSB0aGluZyB3YXMgZ29vZCBpbiB0aGUgZXllcyBvZiBQaGFyYW9oLCBhbmQgaW4gdGhlIGV5ZXMgb2YgYWxsIGhpcyBzZXJ2YW50cy4KQW5kIFBoYXJhb2ggc2FpZCB1bnRvIGhpcyBzZXJ2YW50cywgQ2FuIHdlIGZpbmQgc3VjaCBhIG9uZSBhcyB0aGlzIGlzLCBhIG1hbiBpbiB3aG9tIHRoZSBTcGlyaXQgb2YgR29kIGlzPwpBbmQgUGhhcmFvaCBzYWlkIHVudG8gSm9zZXBoLCBGb3Jhc211Y2ggYXMgR29kIGhhdGggc2hld2VkIHRoZWUgYWxsIHRoaXMsIHRoZXJlIGlzIG5vbmUgc28gZGlzY3JlZXQgYW5kIHdpc2UgYXMgdGhvdSBhcnQ6ClRob3Ugc2hhbHQgYmUgb3ZlciBteSBob3VzZSwgYW5kIGFjY29yZGluZyB1bnRvIHRoeSB3b3JkIHNoYWxsIGFsbCBteSBwZW9wbGUgYmUgcnVsZWQ6IG9ubHkgaW4gdGhlIHRocm9uZSB3aWxsIEkgYmUgZ3JlYXRlciB0aGFuIHRob3UuCkFuZCBQaGFyYW9oIHNhaWQgdW50byBKb3NlcGgsIFNlZSwgSSBoYXZlIHNldCB0aGVlIG92ZXIgYWxsIHRoZSBsYW5kIG9mIEVneXB0LgpBbmQgUGhhcmFvaCB0b29rIG9mZiBoaXMgcmluZyBmcm9tIGhpcyBoYW5kLCBhbmQgcHV0IGl0IHVwb24gSm9zZXBoJ3MgaGFuZCwgYW5kIGFycmF5ZWQgaGltIGluIHZlc3R1cmVzIG9mIGZpbmUgbGluZW4sIGFuZCBwdXQgYSBnb2xkIGNoYWluIGFib3V0IGhpcyBuZWNrOwpBbmQgaGUgbWFkZSBoaW0gdG8gcmlkZSBpbiB0aGUgc2Vjb25kIGNoYXJpb3Qgd2hpY2ggaGUgaGFkOyBhbmQgdGhleSBjcmllZCBiZWZvcmUgaGltLCBCb3cgdGhlIGtuZWU6IGFuZCBoZSBtYWRlIGhpbSBydWxlciBvdmVyIGFsbCB0aGUgbGFuZCBvZiBFZ3lwdC4KQW5kIFBoYXJhb2ggc2FpZCB1bnRvIEpvc2VwaCwgSSBhbSBQaGFyYW9oLCBhbmQgd2l0aG91dCB0aGVlIHNoYWxsIG5vIG1hbiBsaWZ0IHVwIGhpcyBoYW5kIG9yIGZvb3QgaW4gYWxsIHRoZSBsYW5kIG9mIEVneXB0LgpBbmQgUGhhcmFvaCBjYWxsZWQgSm9zZXBoJ3MgbmFtZSBaYXBobmF0aHBhYW5lYWg7IGFuZCBoZSBnYXZlIGhpbSB0byB3aWZlIEFzZW5hdGggdGhlIGRhdWdodGVyIG9mIFBvdGlwaGVyYWggcHJpZXN0IG9mIE9uLiBBbmQgSm9zZXBoIHdlbnQgb3V0IG92ZXIgYWxsIHRoZSBsYW5kIG9mIEVneXB0LgpBbmQgSm9zZXBoIHdhcyB0aGlydHkgeWVhcnMgb2xkIHdoZW4gaGUgc3Rvb2QgYmVmb3JlIFBoYXJhb2gga2luZyBvZiBFZ3lwdC4gQW5kIEpvc2VwaCB3ZW50IG91dCBmcm9tIHRoZSBwcmVzZW5jZSBvZiBQaGFyYW9oLCBhbmQgd2VudCB0aHJvdWdob3V0IGFsbCB0aGUgbGFuZCBvZiBFZ3lwdC4KQW5kIGluIHRoZSBzZXZlbiBwbGVudGVvdXMgeWVhcnMgdGhlIGVhcnRoIGJyb3VnaHQgZm9ydGggYnkgaGFuZGZ1bHMuCkFuZCBoZSBnYXRoZXJlZCB1cCBhbGwgdGhlIGZvb2Qgb2YgdGhlIHNldmVuIHllYXJzLCB3aGljaCB3ZXJlIGluIHRoZSBsYW5kIG9mIEVneXB0LCBhbmQgbGFpZCB1cCB0aGUgZm9vZCBpbiB0aGUgY2l0aWVzOiB0aGUgZm9vZCBvZiB0aGUgZmllbGQsIHdoaWNoIHdhcyByb3VuZCBhYm91dCBldmVyeSBjaXR5LCBsYWlkIGhlIHVwIGluIHRoZSBzYW1lLgpBbmQgSm9zZXBoIGdhdGhlcmVkIGNvcm4gYXMgdGhlIHNhbmQgb2YgdGhlIHNlYSwgdmVyeSBtdWNoLCB1bnRpbCBoZSBsZWZ0IG51bWJlcmluZzsgZm9yIGl0IHdhcyB3aXRob3V0IG51bWJlci4KQW5kIHVudG8gSm9zZXBoIHdlcmUgYm9ybiB0d28gc29ucyBiZWZvcmUgdGhlIHllYXJzIG9mIGZhbWluZSBjYW1lLCB3aGljaCBBc2VuYXRoIHRoZSBkYXVnaHRlciBvZiBQb3RpcGhlcmFoIHByaWVzdCBvZiBPbiBiYXJlIHVudG8gaGltLgpBbmQgSm9zZXBoIGNhbGxlZCB0aGUgbmFtZSBvZiB0aGUgZmlyc3Rib3JuIE1hbmFzc2VoOiBGb3IgR29kLCBzYWlkIGhlLCBoYXRoIG1hZGUgbWUgZm9yZ2V0IGFsbCBteSB0b2lsLCBhbmQgYWxsIG15IGZhdGhlcidzIGhvdXNlLgpBbmQgdGhlIG5hbWUgb2YgdGhlIHNlY29uZCBjYWxsZWQgaGUgRXBocmFpbTogRm9yIEdvZCBoYXRoIGNhdXNlZCBtZSB0byBiZSBmcnVpdGZ1bCBpbiB0aGUgbGFuZCBvZiBteSBhZmZsaWN0aW9uLgpBbmQgdGhlIHNldmVuIHllYXJzIG9mIHBsZW50ZW91c25lc3MsIHRoYXQgd2FzIGluIHRoZSBsYW5kIG9mIEVneXB0LCB3ZXJlIGVuZGVkLgpBbmQgdGhlIHNldmVuIHllYXJzIG9mIGRlYXJ0aCBiZWdhbiB0byBjb21lLCBhY2NvcmRpbmcgYXMgSm9zZXBoIGhhZCBzYWlkOiBhbmQgdGhlIGRlYXJ0aCB3YXMgaW4gYWxsIGxhbmRzOyBidXQgaW4gYWxsIHRoZSBsYW5kIG9mIEVneXB0IHRoZXJlIHdhcyBicmVhZC4KQW5kIHdoZW4gYWxsIHRoZSBsYW5kIG9mIEVneXB0IHdhcyBmYW1pc2hlZCwgdGhlIHBlb3BsZSBjcmllZCB0byBQaGFyYW9oIGZvciBicmVhZDogYW5kIFBoYXJhb2ggc2FpZCB1bnRvIGFsbCB0aGUgRWd5cHRpYW5zLCBHbyB1bnRvIEpvc2VwaDsgd2hhdCBoZSBzYWl0aCB0byB5b3UsIGRvLgpBbmQgdGhlIGZhbWluZSB3YXMgb3ZlciBhbGwgdGhlIGZhY2Ugb2YgdGhlIGVhcnRoOiBhbmQgSm9zZXBoIG9wZW5lZCBhbGwgdGhlIHN0b3JlaG91c2VzLCBhbmQgc29sZCB1bnRvIHRoZSBFZ3lwdGlhbnM7IGFuZCB0aGUgZmFtaW5lIHdheGVkIHNvcmUgaW4gdGhlIGxhbmQgb2YgRWd5cHQuCkFuZCBhbGwgY291bnRyaWVzIGNhbWUgaW50byBFZ3lwdCB0byBKb3NlcGggZm9yIHRvIGJ1eSBjb3JuOyBiZWNhdXNlIHRoYXQgdGhlIGZhbWluZSB3YXMgc28gc29yZSBpbiBhbGwgbGFuZHMuCk5vdyB3aGVuIEphY29iIHNhdyB0aGF0IHRoZXJlIHdhcyBjb3JuIGluIEVneXB0LCBKYWNvYiBzYWlkIHVudG8gaGlzIHNvbnMsIFdoeSBkbyB5ZSBsb29rIG9uZSB1cG9uIGFub3RoZXI/CkFuZCBoZSBzYWlkLCBCZWhvbGQsIEkgaGF2ZSBoZWFyZCB0aGF0IHRoZXJlIGlzIGNvcm4gaW4gRWd5cHQ6IGdldCB5b3UgZG93biB0aGl0aGVyLCBhbmQgYnV5IGZvciB1cyBmcm9tIHRoZW5jZTsgdGhhdCB3ZSBtYXkgbGl2ZSwgYW5kIG5vdCBkaWUuCkFuZCBKb3NlcGgncyB0ZW4gYnJldGhyZW4gd2VudCBkb3duIHRvIGJ1eSBjb3JuIGluIEVneXB0LgpCdXQgQmVuamFtaW4sIEpvc2VwaCdzIGJyb3RoZXIsIEphY29iIHNlbnQgbm90IHdpdGggaGlzIGJyZXRocmVuOyBmb3IgaGUgc2FpZCwgTGVzdCBwZXJhZHZlbnR1cmUgbWlzY2hpZWYgYmVmYWxsIGhpbS4KQW5kIHRoZSBzb25zIG9mIElzcmFlbCBjYW1lIHRvIGJ1eSBjb3JuIGFtb25nIHRob3NlIHRoYXQgY2FtZTogZm9yIHRoZSBmYW1pbmUgd2FzIGluIHRoZSBsYW5kIG9mIENhbmFhbi4KQW5kIEpvc2VwaCB3YXMgdGhlIGdvdmVybm9yIG92ZXIgdGhlIGxhbmQsIGFuZCBoZSBpdCB3YXMgdGhhdCBzb2xkIHRvIGFsbCB0aGUgcGVvcGxlIG9mIHRoZSBsYW5kOiBhbmQgSm9zZXBoJ3MgYnJldGhyZW4gY2FtZSwgYW5kIGJvd2VkIGRvd24gdGhlbXNlbHZlcyBiZWZvcmUgaGltIHdpdGggdGhlaXIgZmFjZXMgdG8gdGhlIGVhcnRoLgpBbmQgSm9zZXBoIHNhdyBoaXMgYnJldGhyZW4sIGFuZCBoZSBrbmV3IHRoZW0sIGJ1dCBtYWRlIGhpbXNlbGYgc3RyYW5nZSB1bnRvIHRoZW0sIGFuZCBzcGFrZSByb3VnaGx5IHVudG8gdGhlbTsgYW5kIGhlIHNhaWQgdW50byB0aGVtLCBXaGVuY2UgY29tZSB5ZT8gQW5kIHRoZXkgc2FpZCwgRnJvbSB0aGUgbGFuZCBvZiBDYW5hYW4gdG8gYnV5IGZvb2QuCkFuZCBKb3NlcGgga25ldyBoaXMgYnJldGhyZW4sIGJ1dCB0aGV5IGtuZXcgbm90IGhpbS4KQW5kIEpvc2VwaCByZW1lbWJlcmVkIHRoZSBkcmVhbXMgd2hpY2ggaGUgZHJlYW1lZCBvZiB0aGVtLCBhbmQgc2FpZCB1bnRvIHRoZW0sIFllIGFyZSBzcGllczsgdG8gc2VlIHRoZSBuYWtlZG5lc3Mgb2YgdGhlIGxhbmQgeWUgYXJlIGNvbWUuCkFuZCB0aGV5IHNhaWQgdW50byBoaW0sIE5heSwgbXkgbG9yZCwgYnV0IHRvIGJ1eSBmb29kIGFyZSB0aHkgc2VydmFudHMgY29tZS4KV2UgYXJlIGFsbCBvbmUgbWFuJ3Mgc29uczsgd2UgYXJlIHRydWUgbWVuLCB0aHkgc2VydmFudHMgYXJlIG5vIHNwaWVzLgpBbmQgaGUgc2FpZCB1bnRvIHRoZW0sIE5heSwgYnV0IHRvIHNlZSB0aGUgbmFrZWRuZXNzIG9mIHRoZSBsYW5kIHllIGFyZSBjb21lLgpBbmQgdGhleSBzYWlkLCBUaHkgc2VydmFudHMgYXJlIHR3ZWx2ZSBicmV0aHJlbiwgdGhlIHNvbnMgb2Ygb25lIG1hbiBpbiB0aGUgbGFuZCBvZiBDYW5hYW47IGFuZCwgYmVob2xkLCB0aGUgeW91bmdlc3QgaXMgdGhpcyBkYXkgd2l0aCBvdXIgZmF0aGVyLCBhbmQgb25lIGlzIG5vdC4KQW5kIEpvc2VwaCBzYWlkIHVudG8gdGhlbSwgVGhhdCBpcyBpdCB0aGF0IEkgc3Bha2UgdW50byB5b3UsIHNheWluZywgWWUgYXJlIHNwaWVzOgpIZXJlYnkgeWUgc2hhbGwgYmUgcHJvdmVkOiBCeSB0aGUgbGlmZSBvZiBQaGFyYW9oIHllIHNoYWxsIG5vdCBnbyBmb3J0aCBoZW5jZSwgZXhjZXB0IHlvdXIgeW91bmdlc3QgYnJvdGhlciBjb21lIGhpdGhlci4KU2VuZCBvbmUgb2YgeW91LCBhbmQgbGV0IGhpbSBmZXRjaCB5b3VyIGJyb3RoZXIsIGFuZCB5ZSBzaGFsbCBiZSBrZXB0IGluIHByaXNvbiwgdGhhdCB5b3VyIHdvcmRzIG1heSBiZSBwcm92ZWQsIHdoZXRoZXIgdGhlcmUgYmUgYW55IHRydXRoIGluIHlvdTogb3IgZWxzZSBieSB0aGUgbGlmZSBvZiBQaGFyYW9oIHN1cmVseSB5ZSBhcmUgc3BpZXMuCkFuZCBoZSBwdXQgdGhlbSBhbGwgdG9nZXRoZXIgaW50byB3YXJkIHRocmVlIGRheXMuCkFuZCBKb3NlcGggc2FpZCB1bnRvIHRoZW0gdGhlIHRoaXJkIGRheSwgVGhpcyBkbywgYW5kIGxpdmU7IGZvciBJIGZlYXIgR29kOgpJZiB5ZSBiZSB0cnVlIG1lbiwgbGV0IG9uZSBvZiB5b3VyIGJyZXRocmVuIGJlIGJvdW5kIGluIHRoZSBob3VzZSBvZiB5b3VyIHByaXNvbjogZ28geWUsIGNhcnJ5IGNvcm4gZm9yIHRoZSBmYW1pbmUgb2YgeW91ciBob3VzZXM6CkJ1dCBicmluZyB5b3VyIHlvdW5nZXN0IGJyb3RoZXIgdW50byBtZTsgc28gc2hhbGwgeW91ciB3b3JkcyBiZSB2ZXJpZmllZCwgYW5kIHllIHNoYWxsIG5vdCBkaWUuIEFuZCB0aGV5IGRpZCBzby4KQW5kIHRoZXkgc2FpZCBvbmUgdG8gYW5vdGhlciwgV2UgYXJlIHZlcmlseSBndWlsdHkgY29uY2VybmluZyBvdXIgYnJvdGhlciwgaW4gdGhhdCB3ZSBzYXcgdGhlIGFuZ3Vpc2ggb2YgaGlzIHNvdWwsIHdoZW4gaGUgYmVzb3VnaHQgdXMsIGFuZCB3ZSB3b3VsZCBub3QgaGVhcjsgdGhlcmVmb3JlIGlzIHRoaXMgZGlzdHJlc3MgY29tZSB1cG9uIHVzLgpBbmQgUmV1YmVuIGFuc3dlcmVkIHRoZW0sIHNheWluZywgU3Bha2UgSSBub3QgdW50byB5b3UsIHNheWluZywgRG8gbm90IHNpbiBhZ2FpbnN0IHRoZSBjaGlsZDsgYW5kIHllIHdvdWxkIG5vdCBoZWFyPyB0aGVyZWZvcmUsIGJlaG9sZCwgYWxzbyBoaXMgYmxvb2QgaXMgcmVxdWlyZWQuCkFuZCB0aGV5IGtuZXcgbm90IHRoYXQgSm9zZXBoIHVuZGVyc3Rvb2QgdGhlbTsgZm9yIGhlIHNwYWtlIHVudG8gdGhlbSBieSBhbiBpbnRlcnByZXRlci4KQW5kIGhlIHR1cm5lZCBoaW1zZWxmIGFib3V0IGZyb20gdGhlbSwgYW5kIHdlcHQ7IGFuZCByZXR1cm5lZCB0byB0aGVtIGFnYWluLCBhbmQgY29tbXVuZWQgd2l0aCB0aGVtLCBhbmQgdG9vayBmcm9tIHRoZW0gU2ltZW9uLCBhbmQgYm91bmQgaGltIGJlZm9yZSB0aGVpciBleWVzLgpUaGVuIEpvc2VwaCBjb21tYW5kZWQgdG8gZmlsbCB0aGVpciBzYWNrcyB3aXRoIGNvcm4sIGFuZCB0byByZXN0b3JlIGV2ZXJ5IG1hbidzIG1vbmV5IGludG8gaGlzIHNhY2ssIGFuZCB0byBnaXZlIHRoZW0gcHJvdmlzaW9uIGZvciB0aGUgd2F5OiBhbmQgdGh1cyBkaWQgaGUgdW50byB0aGVtLgpBbmQgdGhleSBsYWRlZCB0aGVpciBhc3NlcyB3aXRoIHRoZSBjb3JuLCBhbmQgZGVwYXJ0ZWQgdGhlbmNlLgpBbmQgYXMgb25lIG9mIHRoZW0gb3BlbmVkIGhpcyBzYWNrIHRvIGdpdmUgaGlzIGFzcyBwcm92ZW5kZXIgaW4gdGhlIGlubiwgaGUgZXNwaWVkIGhpcyBtb25leTsgZm9yLCBiZWhvbGQsIGl0IHdhcyBpbiBoaXMgc2FjaydzIG1vdXRoLgpBbmQgaGUgc2FpZCB1bnRvIGhpcyBicmV0aHJlbiwgTXkgbW9uZXkgaXMgcmVzdG9yZWQ7IGFuZCwgbG8sIGl0IGlzIGV2ZW4gaW4gbXkgc2FjazogYW5kIHRoZWlyIGhlYXJ0IGZhaWxlZCB0aGVtLCBhbmQgdGhleSB3ZXJlIGFmcmFpZCwgc2F5aW5nIG9uZSB0byBhbm90aGVyLCBXaGF0IGlzIHRoaXMgdGhhdCBHb2QgaGF0aCBkb25lIHVudG8gdXM/CkFuZCB0aGV5IGNhbWUgdW50byBKYWNvYiB0aGVpciBmYXRoZXIgdW50byB0aGUgbGFuZCBvZiBDYW5hYW4sIGFuZCB0b2xkIGhpbSBhbGwgdGhhdCBiZWZlbGwgdW50byB0aGVtOyBzYXlpbmcsClRoZSBtYW4sIHdobyBpcyB0aGUgbG9yZCBvZiB0aGUgbGFuZCwgc3Bha2Ugcm91Z2hseSB0byB1cywgYW5kIHRvb2sgdXMgZm9yIHNwaWVzIG9mIHRoZSBjb3VudHJ5LgpBbmQgd2Ugc2FpZCB1bnRvIGhpbSwgV2UgYXJlIHRydWUgbWVuOyB3ZSBhcmUgbm8gc3BpZXM6CldlIGJlIHR3ZWx2ZSBicmV0aHJlbiwgc29ucyBvZiBvdXIgZmF0aGVyOyBvbmUgaXMgbm90LCBhbmQgdGhlIHlvdW5nZXN0IGlzIHRoaXMgZGF5IHdpdGggb3VyIGZhdGhlciBpbiB0aGUgbGFuZCBvZiBDYW5hYW4uCkFuZCB0aGUgbWFuLCB0aGUgbG9yZCBvZiB0aGUgY291bnRyeSwgc2FpZCB1bnRvIHVzLCBIZXJlYnkgc2hhbGwgSSBrbm93IHRoYXQgeWUgYXJlIHRydWUgbWVuOyBsZWF2ZSBvbmUgb2YgeW91ciBicmV0aHJlbiBoZXJlIHdpdGggbWUsIGFuZCB0YWtlIGZvb2QgZm9yIHRoZSBmYW1pbmUgb2YgeW91ciBob3VzZWhvbGRzLCBhbmQgYmUgZ29uZToKQW5kIGJyaW5nIHlvdXIgeW91bmdlc3QgYnJvdGhlciB1bnRvIG1lOiB0aGVuIHNoYWxsIEkga25vdyB0aGF0IHllIGFyZSBubyBzcGllcywgYnV0IHRoYXQgeWUgYXJlIHRydWUgbWVuOiBzbyB3aWxsIEkgZGVsaXZlciB5b3UgeW91ciBicm90aGVyLCBhbmQgeWUgc2hhbGwgdHJhZmZpY2sgaW4gdGhlIGxhbmQuCkFuZCBpdCBjYW1lIHRvIHBhc3MgYXMgdGhleSBlbXB0aWVkIHRoZWlyIHNhY2tzLCB0aGF0LCBiZWhvbGQsIGV2ZXJ5IG1hbidzIGJ1bmRsZSBvZiBtb25leSB3YXMgaW4gaGlzIHNhY2s6IGFuZCB3aGVuIGJvdGggdGhleSBhbmQgdGhlaXIgZmF0aGVyIHNhdyB0aGUgYnVuZGxlcyBvZiBtb25leSwgdGhleSB3ZXJlIGFmcmFpZC4KQW5kIEphY29iIHRoZWlyIGZhdGhlciBzYWlkIHVudG8gdGhlbSwgTWUgaGF2ZSB5ZSBiZXJlYXZlZCBvZiBteSBjaGlsZHJlbjogSm9zZXBoIGlzIG5vdCwgYW5kIFNpbWVvbiBpcyBub3QsIGFuZCB5ZSB3aWxsIHRha2UgQmVuamFtaW4gYXdheTogYWxsIHRoZXNlIHRoaW5ncyBhcmUgYWdhaW5zdCBtZS4KQW5kIFJldWJlbiBzcGFrZSB1bnRvIGhpcyBmYXRoZXIsIHNheWluZywgU2xheSBteSB0d28gc29ucywgaWYgSSBicmluZyBoaW0gbm90IHRvIHRoZWU6IGRlbGl2ZXIgaGltIGludG8gbXkgaGFuZCwgYW5kIEkgd2lsbCBicmluZyBoaW0gdG8gdGhlZSBhZ2Fpbi4KQW5kIGhlIHNhaWQsIE15IHNvbiBzaGFsbCBub3QgZ28gZG93biB3aXRoIHlvdTsgZm9yIGhpcyBicm90aGVyIGlzIGRlYWQsIGFuZCBoZSBpcyBsZWZ0IGFsb25lOiBpZiBtaXNjaGllZiBiZWZhbGwgaGltIGJ5IHRoZSB3YXkgaW4gdGhlIHdoaWNoIHllIGdvLCB0aGVuIHNoYWxsIHllIGJyaW5nIGRvd24gbXkgZ3JheSBoYWlycyB3aXRoIHNvcnJvdyB0byB0aGUgZ3JhdmUuCkFuZCB0aGUgZmFtaW5lIHdhcyBzb3JlIGluIHRoZSBsYW5kLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIHRoZXkgaGFkIGVhdGVuIHVwIHRoZSBjb3JuIHdoaWNoIHRoZXkgaGFkIGJyb3VnaHQgb3V0IG9mIEVneXB0LCB0aGVpciBmYXRoZXIgc2FpZCB1bnRvIHRoZW0sIEdvIGFnYWluLCBidXkgdXMgYSBsaXR0bGUgZm9vZC4KQW5kIEp1ZGFoIHNwYWtlIHVudG8gaGltLCBzYXlpbmcsIFRoZSBtYW4gZGlkIHNvbGVtbmx5IHByb3Rlc3QgdW50byB1cywgc2F5aW5nLCBZZSBzaGFsbCBub3Qgc2VlIG15IGZhY2UsIGV4Y2VwdCB5b3VyIGJyb3RoZXIgYmUgd2l0aCB5b3UuCklmIHRob3Ugd2lsdCBzZW5kIG91ciBicm90aGVyIHdpdGggdXMsIHdlIHdpbGwgZ28gZG93biBhbmQgYnV5IHRoZWUgZm9vZDoKQnV0IGlmIHRob3Ugd2lsdCBub3Qgc2VuZCBoaW0sIHdlIHdpbGwgbm90IGdvIGRvd246IGZvciB0aGUgbWFuIHNhaWQgdW50byB1cywgWWUgc2hhbGwgbm90IHNlZSBteSBmYWNlLCBleGNlcHQgeW91ciBicm90aGVyIGJlIHdpdGggeW91LgpBbmQgSXNyYWVsIHNhaWQsIFdoZXJlZm9yZSBkZWFsdCB5ZSBzbyBpbGwgd2l0aCBtZSwgYXMgdG8gdGVsbCB0aGUgbWFuIHdoZXRoZXIgeWUgaGFkIHlldCBhIGJyb3RoZXI/CkFuZCB0aGV5IHNhaWQsIFRoZSBtYW4gYXNrZWQgdXMgc3RyYWl0bHkgb2Ygb3VyIHN0YXRlLCBhbmQgb2Ygb3VyIGtpbmRyZWQsIHNheWluZywgSXMgeW91ciBmYXRoZXIgeWV0IGFsaXZlPyBoYXZlIHllIGFub3RoZXIgYnJvdGhlcj8gYW5kIHdlIHRvbGQgaGltIGFjY29yZGluZyB0byB0aGUgdGVub3Igb2YgdGhlc2Ugd29yZHM6IGNvdWxkIHdlIGNlcnRhaW5seSBrbm93IHRoYXQgaGUgd291bGQgc2F5LCBCcmluZyB5b3VyIGJyb3RoZXIgZG93bj8KQW5kIEp1ZGFoIHNhaWQgdW50byBJc3JhZWwgaGlzIGZhdGhlciwgU2VuZCB0aGUgbGFkIHdpdGggbWUsIGFuZCB3ZSB3aWxsIGFyaXNlIGFuZCBnbzsgdGhhdCB3ZSBtYXkgbGl2ZSwgYW5kIG5vdCBkaWUsIGJvdGggd2UsIGFuZCB0aG91LCBhbmQgYWxzbyBvdXIgbGl0dGxlIG9uZXMuCkkgd2lsbCBiZSBzdXJldHkgZm9yIGhpbTsgb2YgbXkgaGFuZCBzaGFsdCB0aG91IHJlcXVpcmUgaGltOiBpZiBJIGJyaW5nIGhpbSBub3QgdW50byB0aGVlLCBhbmQgc2V0IGhpbSBiZWZvcmUgdGhlZSwgdGhlbiBsZXQgbWUgYmVhciB0aGUgYmxhbWUgZm9yIGV2ZXI6CkZvciBleGNlcHQgd2UgaGFkIGxpbmdlcmVkLCBzdXJlbHkgbm93IHdlIGhhZCByZXR1cm5lZCB0aGlzIHNlY29uZCB0aW1lLgpBbmQgdGhlaXIgZmF0aGVyIElzcmFlbCBzYWlkIHVudG8gdGhlbSwgSWYgaXQgbXVzdCBiZSBzbyBub3csIGRvIHRoaXM7IHRha2Ugb2YgdGhlIGJlc3QgZnJ1aXRzIGluIHRoZSBsYW5kIGluIHlvdXIgdmVzc2VscywgYW5kIGNhcnJ5IGRvd24gdGhlIG1hbiBhIHByZXNlbnQsIGEgbGl0dGxlIGJhbG0sIGFuZCBhIGxpdHRsZSBob25leSwgc3BpY2VzLCBhbmQgbXlycmgsIG51dHMsIGFuZCBhbG1vbmRzOgpBbmQgdGFrZSBkb3VibGUgbW9uZXkgaW4geW91ciBoYW5kOyBhbmQgdGhlIG1vbmV5IHRoYXQgd2FzIGJyb3VnaHQgYWdhaW4gaW4gdGhlIG1vdXRoIG9mIHlvdXIgc2Fja3MsIGNhcnJ5IGl0IGFnYWluIGluIHlvdXIgaGFuZDsgcGVyYWR2ZW50dXJlIGl0IHdhcyBhbiBvdmVyc2lnaHQ6ClRha2UgYWxzbyB5b3VyIGJyb3RoZXIsIGFuZCBhcmlzZSwgZ28gYWdhaW4gdW50byB0aGUgbWFuOgpBbmQgR29kIEFsbWlnaHR5IGdpdmUgeW91IG1lcmN5IGJlZm9yZSB0aGUgbWFuLCB0aGF0IGhlIG1heSBzZW5kIGF3YXkgeW91ciBvdGhlciBicm90aGVyLCBhbmQgQmVuamFtaW4uIElmIEkgYmUgYmVyZWF2ZWQgb2YgbXkgY2hpbGRyZW4sIEkgYW0gYmVyZWF2ZWQuCkFuZCB0aGUgbWVuIHRvb2sgdGhhdCBwcmVzZW50LCBhbmQgdGhleSB0b29rIGRvdWJsZSBtb25leSBpbiB0aGVpciBoYW5kIGFuZCBCZW5qYW1pbjsgYW5kIHJvc2UgdXAsIGFuZCB3ZW50IGRvd24gdG8gRWd5cHQsIGFuZCBzdG9vZCBiZWZvcmUgSm9zZXBoLgpBbmQgd2hlbiBKb3NlcGggc2F3IEJlbmphbWluIHdpdGggdGhlbSwgaGUgc2FpZCB0byB0aGUgcnVsZXIgb2YgaGlzIGhvdXNlLCBCcmluZyB0aGVzZSBtZW4gaG9tZSwgYW5kIHNsYXksIGFuZCBtYWtlIHJlYWR5OyBmb3IgdGhlc2UgbWVuIHNoYWxsIGRpbmUgd2l0aCBtZSBhdCBub29uLgpBbmQgdGhlIG1hbiBkaWQgYXMgSm9zZXBoIGJhZGU7IGFuZCB0aGUgbWFuIGJyb3VnaHQgdGhlIG1lbiBpbnRvIEpvc2VwaCdzIGhvdXNlLgpBbmQgdGhlIG1lbiB3ZXJlIGFmcmFpZCwgYmVjYXVzZSB0aGV5IHdlcmUgYnJvdWdodCBpbnRvIEpvc2VwaCdzIGhvdXNlOyBhbmQgdGhleSBzYWlkLCBCZWNhdXNlIG9mIHRoZSBtb25leSB0aGF0IHdhcyByZXR1cm5lZCBpbiBvdXIgc2Fja3MgYXQgdGhlIGZpcnN0IHRpbWUgYXJlIHdlIGJyb3VnaHQgaW47IHRoYXQgaGUgbWF5IHNlZWsgb2NjYXNpb24gYWdhaW5zdCB1cywgYW5kIGZhbGwgdXBvbiB1cywgYW5kIHRha2UgdXMgZm9yIGJvbmRtZW4sIGFuZCBvdXIgYXNzZXMuCkFuZCB0aGV5IGNhbWUgbmVhciB0byB0aGUgc3Rld2FyZCBvZiBKb3NlcGgncyBob3VzZSwgYW5kIHRoZXkgY29tbXVuZWQgd2l0aCBoaW0gYXQgdGhlIGRvb3Igb2YgdGhlIGhvdXNlLApBbmQgc2FpZCwgTyBzaXIsIHdlIGNhbWUgaW5kZWVkIGRvd24gYXQgdGhlIGZpcnN0IHRpbWUgdG8gYnV5IGZvb2Q6CkFuZCBpdCBjYW1lIHRvIHBhc3MsIHdoZW4gd2UgY2FtZSB0byB0aGUgaW5uLCB0aGF0IHdlIG9wZW5lZCBvdXIgc2Fja3MsIGFuZCwgYmVob2xkLCBldmVyeSBtYW4ncyBtb25leSB3YXMgaW4gdGhlIG1vdXRoIG9mIGhpcyBzYWNrLCBvdXIgbW9uZXkgaW4gZnVsbCB3ZWlnaHQ6IGFuZCB3ZSBoYXZlIGJyb3VnaHQgaXQgYWdhaW4gaW4gb3VyIGhhbmQuCkFuZCBvdGhlciBtb25leSBoYXZlIHdlIGJyb3VnaHQgZG93biBpbiBvdXIgaGFuZHMgdG8gYnV5IGZvb2Q6IHdlIGNhbm5vdCB0ZWxsIHdobyBwdXQgb3VyIG1vbmV5IGluIG91ciBzYWNrcy4KQW5kIGhlIHNhaWQsIFBlYWNlIGJlIHRvIHlvdSwgZmVhciBub3Q6IHlvdXIgR29kLCBhbmQgdGhlIEdvZCBvZiB5b3VyIGZhdGhlciwgaGF0aCBnaXZlbiB5b3UgdHJlYXN1cmUgaW4geW91ciBzYWNrczogSSBoYWQgeW91ciBtb25leS4gQW5kIGhlIGJyb3VnaHQgU2ltZW9uIG91dCB1bnRvIHRoZW0uCkFuZCB0aGUgbWFuIGJyb3VnaHQgdGhlIG1lbiBpbnRvIEpvc2VwaCdzIGhvdXNlLCBhbmQgZ2F2ZSB0aGVtIHdhdGVyLCBhbmQgdGhleSB3YXNoZWQgdGhlaXIgZmVldDsgYW5kIGhlIGdhdmUgdGhlaXIgYXNzZXMgcHJvdmVuZGVyLgpBbmQgdGhleSBtYWRlIHJlYWR5IHRoZSBwcmVzZW50IGFnYWluc3QgSm9zZXBoIGNhbWUgYXQgbm9vbjogZm9yIHRoZXkgaGVhcmQgdGhhdCB0aGV5IHNob3VsZCBlYXQgYnJlYWQgdGhlcmUuCkFuZCB3aGVuIEpvc2VwaCBjYW1lIGhvbWUsIHRoZXkgYnJvdWdodCBoaW0gdGhlIHByZXNlbnQgd2hpY2ggd2FzIGluIHRoZWlyIGhhbmQgaW50byB0aGUgaG91c2UsIGFuZCBib3dlZCB0aGVtc2VsdmVzIHRvIGhpbSB0byB0aGUgZWFydGguCkFuZCBoZSBhc2tlZCB0aGVtIG9mIHRoZWlyIHdlbGZhcmUsIGFuZCBzYWlkLCBJcyB5b3VyIGZhdGhlciB3ZWxsLCB0aGUgb2xkIG1hbiBvZiB3aG9tIHllIHNwYWtlPyBJcyBoZSB5ZXQgYWxpdmU/CkFuZCB0aGV5IGFuc3dlcmVkLCBUaHkgc2VydmFudCBvdXIgZmF0aGVyIGlzIGluIGdvb2QgaGVhbHRoLCBoZSBpcyB5ZXQgYWxpdmUuIEFuZCB0aGV5IGJvd2VkIGRvd24gdGhlaXIgaGVhZHMsIGFuZCBtYWRlIG9iZWlzYW5jZS4KQW5kIGhlIGxpZnRlZCB1cCBoaXMgZXllcywgYW5kIHNhdyBoaXMgYnJvdGhlciBCZW5qYW1pbiwgaGlzIG1vdGhlcidzIHNvbiwgYW5kIHNhaWQsIElzIHRoaXMgeW91ciB5b3VuZ2VyIGJyb3RoZXIsIG9mIHdob20geWUgc3Bha2UgdW50byBtZT8gQW5kIGhlIHNhaWQsIEdvZCBiZSBncmFjaW91cyB1bnRvIHRoZWUsIG15IHNvbi4KQW5kIEpvc2VwaCBtYWRlIGhhc3RlOyBmb3IgaGlzIGJvd2VscyBkaWQgeWVhcm4gdXBvbiBoaXMgYnJvdGhlcjogYW5kIGhlIHNvdWdodCB3aGVyZSB0byB3ZWVwOyBhbmQgaGUgZW50ZXJlZCBpbnRvIGhpcyBjaGFtYmVyLCBhbmQgd2VwdCB0aGVyZS4KQW5kIGhlIHdhc2hlZCBoaXMgZmFjZSwgYW5kIHdlbnQgb3V0LCBhbmQgcmVmcmFpbmVkIGhpbXNlbGYsIGFuZCBzYWlkLCBTZXQgb24gYnJlYWQuCkFuZCB0aGV5IHNldCBvbiBmb3IgaGltIGJ5IGhpbXNlbGYsIGFuZCBmb3IgdGhlbSBieSB0aGVtc2VsdmVzLCBhbmQgZm9yIHRoZSBFZ3lwdGlhbnMsIHdoaWNoIGRpZCBlYXQgd2l0aCBoaW0sIGJ5IHRoZW1zZWx2ZXM6IGJlY2F1c2UgdGhlIEVneXB0aWFucyBtaWdodCBub3QgZWF0IGJyZWFkIHdpdGggdGhlIEhlYnJld3M7IGZvciB0aGF0IGlzIGFuIGFib21pbmF0aW9uIHVudG8gdGhlIEVneXB0aWFucy4KQW5kIHRoZXkgc2F0IGJlZm9yZSBoaW0sIHRoZSBmaXJzdGJvcm4gYWNjb3JkaW5nIHRvIGhpcyBiaXJ0aHJpZ2h0LCBhbmQgdGhlIHlvdW5nZXN0IGFjY29yZGluZyB0byBoaXMgeW91dGg6IGFuZCB0aGUgbWVuIG1hcnZlbGxlZCBvbmUgYXQgYW5vdGhlci4KQW5kIGhlIHRvb2sgYW5kIHNlbnQgbWVzc2VzIHVudG8gdGhlbSBmcm9tIGJlZm9yZSBoaW06IGJ1dCBCZW5qYW1pbidzIG1lc3Mgd2FzIGZpdmUgdGltZXMgc28gbXVjaCBhcyBhbnkgb2YgdGhlaXIncy4gQW5kIHRoZXkgZHJhbmssIGFuZCB3ZXJlIG1lcnJ5IHdpdGggaGltLgpBbmQgaGUgY29tbWFuZGVkIHRoZSBzdGV3YXJkIG9mIGhpcyBob3VzZSwgc2F5aW5nLCBGaWxsIHRoZSBtZW4ncyBzYWNrcyB3aXRoIGZvb2QsIGFzIG11Y2ggYXMgdGhleSBjYW4gY2FycnksIGFuZCBwdXQgZXZlcnkgbWFuJ3MgbW9uZXkgaW4gaGlzIHNhY2sncyBtb3V0aC4KQW5kIHB1dCBteSBjdXAsIHRoZSBzaWx2ZXIgY3VwLCBpbiB0aGUgc2FjaydzIG1vdXRoIG9mIHRoZSB5b3VuZ2VzdCwgYW5kIGhpcyBjb3JuIG1vbmV5LiBBbmQgaGUgZGlkIGFjY29yZGluZyB0byB0aGUgd29yZCB0aGF0IEpvc2VwaCBoYWQgc3Bva2VuLgpBcyBzb29uIGFzIHRoZSBtb3JuaW5nIHdhcyBsaWdodCwgdGhlIG1lbiB3ZXJlIHNlbnQgYXdheSwgdGhleSBhbmQgdGhlaXIgYXNzZXMuCkFuZCB3aGVuIHRoZXkgd2VyZSBnb25lIG91dCBvZiB0aGUgY2l0eSwgYW5kIG5vdCB5ZXQgZmFyIG9mZiwgSm9zZXBoIHNhaWQgdW50byBoaXMgc3Rld2FyZCwgVXAsIGZvbGxvdyBhZnRlciB0aGUgbWVuOyBhbmQgd2hlbiB0aG91IGRvc3Qgb3ZlcnRha2UgdGhlbSwgc2F5IHVudG8gdGhlbSwgV2hlcmVmb3JlIGhhdmUgeWUgcmV3YXJkZWQgZXZpbCBmb3IgZ29vZD8KSXMgbm90IHRoaXMgaXQgaW4gd2hpY2ggbXkgbG9yZCBkcmlua2V0aCwgYW5kIHdoZXJlYnkgaW5kZWVkIGhlIGRpdmluZXRoPyB5ZSBoYXZlIGRvbmUgZXZpbCBpbiBzbyBkb2luZy4KQW5kIGhlIG92ZXJ0b29rIHRoZW0sIGFuZCBoZSBzcGFrZSB1bnRvIHRoZW0gdGhlc2Ugc2FtZSB3b3Jkcy4KQW5kIHRoZXkgc2FpZCB1bnRvIGhpbSwgV2hlcmVmb3JlIHNhaXRoIG15IGxvcmQgdGhlc2Ugd29yZHM/IEdvZCBmb3JiaWQgdGhhdCB0aHkgc2VydmFudHMgc2hvdWxkIGRvIGFjY29yZGluZyB0byB0aGlzIHRoaW5nOgpCZWhvbGQsIHRoZSBtb25leSwgd2hpY2ggd2UgZm91bmQgaW4gb3VyIHNhY2tzJyBtb3V0aHMsIHdlIGJyb3VnaHQgYWdhaW4gdW50byB0aGVlIG91dCBvZiB0aGUgbGFuZCBvZiBDYW5hYW46IGhvdyB0aGVuIHNob3VsZCB3ZSBzdGVhbCBvdXQgb2YgdGh5IGxvcmQncyBob3VzZSBzaWx2ZXIgb3IgZ29sZD8KV2l0aCB3aG9tc29ldmVyIG9mIHRoeSBzZXJ2YW50cyBpdCBiZSBmb3VuZCwgYm90aCBsZXQgaGltIGRpZSwgYW5kIHdlIGFsc28gd2lsbCBiZSBteSBsb3JkJ3MgYm9uZG1lbi4KQW5kIGhlIHNhaWQsIE5vdyBhbHNvIGxldCBpdCBiZSBhY2NvcmRpbmcgdW50byB5b3VyIHdvcmRzOiBoZSB3aXRoIHdob20gaXQgaXMgZm91bmQgc2hhbGwgYmUgbXkgc2VydmFudDsgYW5kIHllIHNoYWxsIGJlIGJsYW1lbGVzcy4KVGhlbiB0aGV5IHNwZWVkaWx5IHRvb2sgZG93biBldmVyeSBtYW4gaGlzIHNhY2sgdG8gdGhlIGdyb3VuZCwgYW5kIG9wZW5lZCBldmVyeSBtYW4gaGlzIHNhY2suCkFuZCBoZSBzZWFyY2hlZCwgYW5kIGJlZ2FuIGF0IHRoZSBlbGRlc3QsIGFuZCBsZWZ0IGF0IHRoZSB5b3VuZ2VzdDogYW5kIHRoZSBjdXAgd2FzIGZvdW5kIGluIEJlbmphbWluJ3Mgc2Fjay4KVGhlbiB0aGV5IHJlbnQgdGhlaXIgY2xvdGhlcywgYW5kIGxhZGVkIGV2ZXJ5IG1hbiBoaXMgYXNzLCBhbmQgcmV0dXJuZWQgdG8gdGhlIGNpdHkuCkFuZCBKdWRhaCBhbmQgaGlzIGJyZXRocmVuIGNhbWUgdG8gSm9zZXBoJ3MgaG91c2U7IGZvciBoZSB3YXMgeWV0IHRoZXJlOiBhbmQgdGhleSBmZWxsIGJlZm9yZSBoaW0gb24gdGhlIGdyb3VuZC4KQW5kIEpvc2VwaCBzYWlkIHVudG8gdGhlbSwgV2hhdCBkZWVkIGlzIHRoaXMgdGhhdCB5ZSBoYXZlIGRvbmU/IHdvdCB5ZSBub3QgdGhhdCBzdWNoIGEgbWFuIGFzIEkgY2FuIGNlcnRhaW5seSBkaXZpbmU/CkFuZCBKdWRhaCBzYWlkLCBXaGF0IHNoYWxsIHdlIHNheSB1bnRvIG15IGxvcmQ/IHdoYXQgc2hhbGwgd2Ugc3BlYWs/IG9yIGhvdyBzaGFsbCB3ZSBjbGVhciBvdXJzZWx2ZXM/IEdvZCBoYXRoIGZvdW5kIG91dCB0aGUgaW5pcXVpdHkgb2YgdGh5IHNlcnZhbnRzOiBiZWhvbGQsIHdlIGFyZSBteSBsb3JkJ3Mgc2VydmFudHMsIGJvdGggd2UsIGFuZCBoZSBhbHNvIHdpdGggd2hvbSB0aGUgY3VwIGlzIGZvdW5kLgpBbmQgaGUgc2FpZCwgR29kIGZvcmJpZCB0aGF0IEkgc2hvdWxkIGRvIHNvOiBidXQgdGhlIG1hbiBpbiB3aG9zZSBoYW5kIHRoZSBjdXAgaXMgZm91bmQsIGhlIHNoYWxsIGJlIG15IHNlcnZhbnQ7IGFuZCBhcyBmb3IgeW91LCBnZXQgeW91IHVwIGluIHBlYWNlIHVudG8geW91ciBmYXRoZXIuClRoZW4gSnVkYWggY2FtZSBuZWFyIHVudG8gaGltLCBhbmQgc2FpZCwgT2ggbXkgbG9yZCwgbGV0IHRoeSBzZXJ2YW50LCBJIHByYXkgdGhlZSwgc3BlYWsgYSB3b3JkIGluIG15IGxvcmQncyBlYXJzLCBhbmQgbGV0IG5vdCB0aGluZSBhbmdlciBidXJuIGFnYWluc3QgdGh5IHNlcnZhbnQ6IGZvciB0aG91IGFydCBldmVuIGFzIFBoYXJhb2guCk15IGxvcmQgYXNrZWQgaGlzIHNlcnZhbnRzLCBzYXlpbmcsIEhhdmUgeWUgYSBmYXRoZXIsIG9yIGEgYnJvdGhlcj8KQW5kIHdlIHNhaWQgdW50byBteSBsb3JkLCBXZSBoYXZlIGEgZmF0aGVyLCBhbiBvbGQgbWFuLCBhbmQgYSBjaGlsZCBvZiBoaXMgb2xkIGFnZSwgYSBsaXR0bGUgb25lOyBhbmQgaGlzIGJyb3RoZXIgaXMgZGVhZCwgYW5kIGhlIGFsb25lIGlzIGxlZnQgb2YgaGlzIG1vdGhlciwgYW5kIGhpcyBmYXRoZXIgbG92ZXRoIGhpbS4KQW5kIHRob3Ugc2FpZHN0IHVudG8gdGh5IHNlcnZhbnRzLCBCcmluZyBoaW0gZG93biB1bnRvIG1lLCB0aGF0IEkgbWF5IHNldCBtaW5lIGV5ZXMgdXBvbiBoaW0uCkFuZCB3ZSBzYWlkIHVudG8gbXkgbG9yZCwgVGhlIGxhZCBjYW5ub3QgbGVhdmUgaGlzIGZhdGhlcjogZm9yIGlmIGhlIHNob3VsZCBsZWF2ZSBoaXMgZmF0aGVyLCBoaXMgZmF0aGVyIHdvdWxkIGRpZS4KQW5kIHRob3Ugc2FpZHN0IHVudG8gdGh5IHNlcnZhbnRzLCBFeGNlcHQgeW91ciB5b3VuZ2VzdCBicm90aGVyIGNvbWUgZG93biB3aXRoIHlvdSwgeWUgc2hhbGwgc2VlIG15IGZhY2Ugbm8gbW9yZS4KQW5kIGl0IGNhbWUgdG8gcGFzcyB3aGVuIHdlIGNhbWUgdXAgdW50byB0aHkgc2VydmFudCBteSBmYXRoZXIsIHdlIHRvbGQgaGltIHRoZSB3b3JkcyBvZiBteSBsb3JkLgpBbmQgb3VyIGZhdGhlciBzYWlkLCBHbyBhZ2FpbiwgYW5kIGJ1eSB1cyBhIGxpdHRsZSBmb29kLgpBbmQgd2Ugc2FpZCwgV2UgY2Fubm90IGdvIGRvd246IGlmIG91ciB5b3VuZ2VzdCBicm90aGVyIGJlIHdpdGggdXMsIHRoZW4gd2lsbCB3ZSBnbyBkb3duOiBmb3Igd2UgbWF5IG5vdCBzZWUgdGhlIG1hbidzIGZhY2UsIGV4Y2VwdCBvdXIgeW91bmdlc3QgYnJvdGhlciBiZSB3aXRoIHVzLgpBbmQgdGh5IHNlcnZhbnQgbXkgZmF0aGVyIHNhaWQgdW50byB1cywgWWUga25vdyB0aGF0IG15IHdpZmUgYmFyZSBtZSB0d28gc29uczoKQW5kIHRoZSBvbmUgd2VudCBvdXQgZnJvbSBtZSwgYW5kIEkgc2FpZCwgU3VyZWx5IGhlIGlzIHRvcm4gaW4gcGllY2VzOyBhbmQgSSBzYXcgaGltIG5vdCBzaW5jZToKQW5kIGlmIHllIHRha2UgdGhpcyBhbHNvIGZyb20gbWUsIGFuZCBtaXNjaGllZiBiZWZhbGwgaGltLCB5ZSBzaGFsbCBicmluZyBkb3duIG15IGdyYXkgaGFpcnMgd2l0aCBzb3Jyb3cgdG8gdGhlIGdyYXZlLgpOb3cgdGhlcmVmb3JlIHdoZW4gSSBjb21lIHRvIHRoeSBzZXJ2YW50IG15IGZhdGhlciwgYW5kIHRoZSBsYWQgYmUgbm90IHdpdGggdXM7IHNlZWluZyB0aGF0IGhpcyBsaWZlIGlzIGJvdW5kIHVwIGluIHRoZSBsYWQncyBsaWZlOwpJdCBzaGFsbCBjb21lIHRvIHBhc3MsIHdoZW4gaGUgc2VldGggdGhhdCB0aGUgbGFkIGlzIG5vdCB3aXRoIHVzLCB0aGF0IGhlIHdpbGwgZGllOiBhbmQgdGh5IHNlcnZhbnRzIHNoYWxsIGJyaW5nIGRvd24gdGhlIGdyYXkgaGFpcnMgb2YgdGh5IHNlcnZhbnQgb3VyIGZhdGhlciB3aXRoIHNvcnJvdyB0byB0aGUgZ3JhdmUuCkZvciB0aHkgc2VydmFudCBiZWNhbWUgc3VyZXR5IGZvciB0aGUgbGFkIHVudG8gbXkgZmF0aGVyLCBzYXlpbmcsIElmIEkgYnJpbmcgaGltIG5vdCB1bnRvIHRoZWUsIHRoZW4gSSBzaGFsbCBiZWFyIHRoZSBibGFtZSB0byBteSBmYXRoZXIgZm9yIGV2ZXIuCk5vdyB0aGVyZWZvcmUsIEkgcHJheSB0aGVlLCBsZXQgdGh5IHNlcnZhbnQgYWJpZGUgaW5zdGVhZCBvZiB0aGUgbGFkIGEgYm9uZG1hbiB0byBteSBsb3JkOyBhbmQgbGV0IHRoZSBsYWQgZ28gdXAgd2l0aCBoaXMgYnJldGhyZW4uCkZvciBob3cgc2hhbGwgSSBnbyB1cCB0byBteSBmYXRoZXIsIGFuZCB0aGUgbGFkIGJlIG5vdCB3aXRoIG1lPyBsZXN0IHBlcmFkdmVudHVyZSBJIHNlZSB0aGUgZXZpbCB0aGF0IHNoYWxsIGNvbWUgb24gbXkgZmF0aGVyLgpUaGVuIEpvc2VwaCBjb3VsZCBub3QgcmVmcmFpbiBoaW1zZWxmIGJlZm9yZSBhbGwgdGhlbSB0aGF0IHN0b29kIGJ5IGhpbTsgYW5kIGhlIGNyaWVkLCBDYXVzZSBldmVyeSBtYW4gdG8gZ28gb3V0IGZyb20gbWUuIEFuZCB0aGVyZSBzdG9vZCBubyBtYW4gd2l0aCBoaW0sIHdoaWxlIEpvc2VwaCBtYWRlIGhpbXNlbGYga25vd24gdW50byBoaXMgYnJldGhyZW4uCkFuZCBoZSB3ZXB0IGFsb3VkOiBhbmQgdGhlIEVneXB0aWFucyBhbmQgdGhlIGhvdXNlIG9mIFBoYXJhb2ggaGVhcmQuCkFuZCBKb3NlcGggc2FpZCB1bnRvIGhpcyBicmV0aHJlbiwgSSBhbSBKb3NlcGg7IGRvdGggbXkgZmF0aGVyIHlldCBsaXZlPyBBbmQgaGlzIGJyZXRocmVuIGNvdWxkIG5vdCBhbnN3ZXIgaGltOyBmb3IgdGhleSB3ZXJlIHRyb3VibGVkIGF0IGhpcyBwcmVzZW5jZS4KQW5kIEpvc2VwaCBzYWlkIHVudG8gaGlzIGJyZXRocmVuLCBDb21lIG5lYXIgdG8gbWUsIEkgcHJheSB5b3UuIEFuZCB0aGV5IGNhbWUgbmVhci4gQW5kIGhlIHNhaWQsIEkgYW0gSm9zZXBoIHlvdXIgYnJvdGhlciwgd2hvbSB5ZSBzb2xkIGludG8gRWd5cHQuCk5vdyB0aGVyZWZvcmUgYmUgbm90IGdyaWV2ZWQsIG5vciBhbmdyeSB3aXRoIHlvdXJzZWx2ZXMsIHRoYXQgeWUgc29sZCBtZSBoaXRoZXI6IGZvciBHb2QgZGlkIHNlbmQgbWUgYmVmb3JlIHlvdSB0byBwcmVzZXJ2ZSBsaWZlLgpGb3IgdGhlc2UgdHdvIHllYXJzIGhhdGggdGhlIGZhbWluZSBiZWVuIGluIHRoZSBsYW5kOiBhbmQgeWV0IHRoZXJlIGFyZSBmaXZlIHllYXJzLCBpbiB0aGUgd2hpY2ggdGhlcmUgc2hhbGwgbmVpdGhlciBiZSBlYXJpbmcgbm9yIGhhcnZlc3QuCkFuZCBHb2Qgc2VudCBtZSBiZWZvcmUgeW91IHRvIHByZXNlcnZlIHlvdSBhIHBvc3Rlcml0eSBpbiB0aGUgZWFydGgsIGFuZCB0byBzYXZlIHlvdXIgbGl2ZXMgYnkgYSBncmVhdCBkZWxpdmVyYW5jZS4KU28gbm93IGl0IHdhcyBub3QgeW91IHRoYXQgc2VudCBtZSBoaXRoZXIsIGJ1dCBHb2Q6IGFuZCBoZSBoYXRoIG1hZGUgbWUgYSBmYXRoZXIgdG8gUGhhcmFvaCwgYW5kIGxvcmQgb2YgYWxsIGhpcyBob3VzZSwgYW5kIGEgcnVsZXIgdGhyb3VnaG91dCBhbGwgdGhlIGxhbmQgb2YgRWd5cHQuCkhhc3RlIHllLCBhbmQgZ28gdXAgdG8gbXkgZmF0aGVyLCBhbmQgc2F5IHVudG8gaGltLCBUaHVzIHNhaXRoIHRoeSBzb24gSm9zZXBoLCBHb2QgaGF0aCBtYWRlIG1lIGxvcmQgb2YgYWxsIEVneXB0OiBjb21lIGRvd24gdW50byBtZSwgdGFycnkgbm90OgpBbmQgdGhvdSBzaGFsdCBkd2VsbCBpbiB0aGUgbGFuZCBvZiBHb3NoZW4sIGFuZCB0aG91IHNoYWx0IGJlIG5lYXIgdW50byBtZSwgdGhvdSwgYW5kIHRoeSBjaGlsZHJlbiwgYW5kIHRoeSBjaGlsZHJlbidzIGNoaWxkcmVuLCBhbmQgdGh5IGZsb2NrcywgYW5kIHRoeSBoZXJkcywgYW5kIGFsbCB0aGF0IHRob3UgaGFzdDoKQW5kIHRoZXJlIHdpbGwgSSBub3VyaXNoIHRoZWU7IGZvciB5ZXQgdGhlcmUgYXJlIGZpdmUgeWVhcnMgb2YgZmFtaW5lOyBsZXN0IHRob3UsIGFuZCB0aHkgaG91c2Vob2xkLCBhbmQgYWxsIHRoYXQgdGhvdSBoYXN0LCBjb21lIHRvIHBvdmVydHkuCkFuZCwgYmVob2xkLCB5b3VyIGV5ZXMgc2VlLCBhbmQgdGhlIGV5ZXMgb2YgbXkgYnJvdGhlciBCZW5qYW1pbiwgdGhhdCBpdCBpcyBteSBtb3V0aCB0aGF0IHNwZWFrZXRoIHVudG8geW91LgpBbmQgeWUgc2hhbGwgdGVsbCBteSBmYXRoZXIgb2YgYWxsIG15IGdsb3J5IGluIEVneXB0LCBhbmQgb2YgYWxsIHRoYXQgeWUgaGF2ZSBzZWVuOyBhbmQgeWUgc2hhbGwgaGFzdGUgYW5kIGJyaW5nIGRvd24gbXkgZmF0aGVyIGhpdGhlci4KQW5kIGhlIGZlbGwgdXBvbiBoaXMgYnJvdGhlciBCZW5qYW1pbidzIG5lY2ssIGFuZCB3ZXB0OyBhbmQgQmVuamFtaW4gd2VwdCB1cG9uIGhpcyBuZWNrLgpNb3Jlb3ZlciBoZSBraXNzZWQgYWxsIGhpcyBicmV0aHJlbiwgYW5kIHdlcHQgdXBvbiB0aGVtOiBhbmQgYWZ0ZXIgdGhhdCBoaXMgYnJldGhyZW4gdGFsa2VkIHdpdGggaGltLgpBbmQgdGhlIGZhbWUgdGhlcmVvZiB3YXMgaGVhcmQgaW4gUGhhcmFvaCdzIGhvdXNlLCBzYXlpbmcsIEpvc2VwaCdzIGJyZXRocmVuIGFyZSBjb21lOiBhbmQgaXQgcGxlYXNlZCBQaGFyYW9oIHdlbGwsIGFuZCBoaXMgc2VydmFudHMuCkFuZCBQaGFyYW9oIHNhaWQgdW50byBKb3NlcGgsIFNheSB1bnRvIHRoeSBicmV0aHJlbiwgVGhpcyBkbyB5ZTsgbGFkZSB5b3VyIGJlYXN0cywgYW5kIGdvLCBnZXQgeW91IHVudG8gdGhlIGxhbmQgb2YgQ2FuYWFuOwpBbmQgdGFrZSB5b3VyIGZhdGhlciBhbmQgeW91ciBob3VzZWhvbGRzLCBhbmQgY29tZSB1bnRvIG1lOiBhbmQgSSB3aWxsIGdpdmUgeW91IHRoZSBnb29kIG9mIHRoZSBsYW5kIG9mIEVneXB0LCBhbmQgeWUgc2hhbGwgZWF0IHRoZSBmYXQgb2YgdGhlIGxhbmQuCk5vdyB0aG91IGFydCBjb21tYW5kZWQsIHRoaXMgZG8geWU7IHRha2UgeW91IHdhZ29ucyBvdXQgb2YgdGhlIGxhbmQgb2YgRWd5cHQgZm9yIHlvdXIgbGl0dGxlIG9uZXMsIGFuZCBmb3IgeW91ciB3aXZlcywgYW5kIGJyaW5nIHlvdXIgZmF0aGVyLCBhbmQgY29tZS4KQWxzbyByZWdhcmQgbm90IHlvdXIgc3R1ZmY7IGZvciB0aGUgZ29vZCBvZiBhbGwgdGhlIGxhbmQgb2YgRWd5cHQgaXMgeW91cidzLgpBbmQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBkaWQgc286IGFuZCBKb3NlcGggZ2F2ZSB0aGVtIHdhZ29ucywgYWNjb3JkaW5nIHRvIHRoZSBjb21tYW5kbWVudCBvZiBQaGFyYW9oLCBhbmQgZ2F2ZSB0aGVtIHByb3Zpc2lvbiBmb3IgdGhlIHdheS4KVG8gYWxsIG9mIHRoZW0gaGUgZ2F2ZSBlYWNoIG1hbiBjaGFuZ2VzIG9mIHJhaW1lbnQ7IGJ1dCB0byBCZW5qYW1pbiBoZSBnYXZlIHRocmVlIGh1bmRyZWQgcGllY2VzIG9mIHNpbHZlciwgYW5kIGZpdmUgY2hhbmdlcyBvZiByYWltZW50LgpBbmQgdG8gaGlzIGZhdGhlciBoZSBzZW50IGFmdGVyIHRoaXMgbWFubmVyOyB0ZW4gYXNzZXMgbGFkZW4gd2l0aCB0aGUgZ29vZCB0aGluZ3Mgb2YgRWd5cHQsIGFuZCB0ZW4gc2hlIGFzc2VzIGxhZGVuIHdpdGggY29ybiBhbmQgYnJlYWQgYW5kIG1lYXQgZm9yIGhpcyBmYXRoZXIgYnkgdGhlIHdheS4KU28gaGUgc2VudCBoaXMgYnJldGhyZW4gYXdheSwgYW5kIHRoZXkgZGVwYXJ0ZWQ6IGFuZCBoZSBzYWlkIHVudG8gdGhlbSwgU2VlIHRoYXQgeWUgZmFsbCBub3Qgb3V0IGJ5IHRoZSB3YXkuCkFuZCB0aGV5IHdlbnQgdXAgb3V0IG9mIEVneXB0LCBhbmQgY2FtZSBpbnRvIHRoZSBsYW5kIG9mIENhbmFhbiB1bnRvIEphY29iIHRoZWlyIGZhdGhlciwKQW5kIHRvbGQgaGltLCBzYXlpbmcsIEpvc2VwaCBpcyB5ZXQgYWxpdmUsIGFuZCBoZSBpcyBnb3Zlcm5vciBvdmVyIGFsbCB0aGUgbGFuZCBvZiBFZ3lwdC4gQW5kIEphY29iJ3MgaGVhcnQgZmFpbnRlZCwgZm9yIGhlIGJlbGlldmVkIHRoZW0gbm90LgpBbmQgdGhleSB0b2xkIGhpbSBhbGwgdGhlIHdvcmRzIG9mIEpvc2VwaCwgd2hpY2ggaGUgaGFkIHNhaWQgdW50byB0aGVtOiBhbmQgd2hlbiBoZSBzYXcgdGhlIHdhZ29ucyB3aGljaCBKb3NlcGggaGFkIHNlbnQgdG8gY2FycnkgaGltLCB0aGUgc3Bpcml0IG9mIEphY29iIHRoZWlyIGZhdGhlciByZXZpdmVkOgpBbmQgSXNyYWVsIHNhaWQsIEl0IGlzIGVub3VnaDsgSm9zZXBoIG15IHNvbiBpcyB5ZXQgYWxpdmU6IEkgd2lsbCBnbyBhbmQgc2VlIGhpbSBiZWZvcmUgSSBkaWUuCkFuZCBJc3JhZWwgdG9vayBoaXMgam91cm5leSB3aXRoIGFsbCB0aGF0IGhlIGhhZCwgYW5kIGNhbWUgdG8gQmVlcnNoZWJhLCBhbmQgb2ZmZXJlZCBzYWNyaWZpY2VzIHVudG8gdGhlIEdvZCBvZiBoaXMgZmF0aGVyIElzYWFjLgpBbmQgR29kIHNwYWtlIHVudG8gSXNyYWVsIGluIHRoZSB2aXNpb25zIG9mIHRoZSBuaWdodCwgYW5kIHNhaWQsIEphY29iLCBKYWNvYi4gQW5kIGhlIHNhaWQsIEhlcmUgYW0gSS4KQW5kIGhlIHNhaWQsIEkgYW0gR29kLCB0aGUgR29kIG9mIHRoeSBmYXRoZXI6IGZlYXIgbm90IHRvIGdvIGRvd24gaW50byBFZ3lwdDsgZm9yIEkgd2lsbCB0aGVyZSBtYWtlIG9mIHRoZWUgYSBncmVhdCBuYXRpb246Ckkgd2lsbCBnbyBkb3duIHdpdGggdGhlZSBpbnRvIEVneXB0OyBhbmQgSSB3aWxsIGFsc28gc3VyZWx5IGJyaW5nIHRoZWUgdXAgYWdhaW46IGFuZCBKb3NlcGggc2hhbGwgcHV0IGhpcyBoYW5kIHVwb24gdGhpbmUgZXllcy4KQW5kIEphY29iIHJvc2UgdXAgZnJvbSBCZWVyc2hlYmE6IGFuZCB0aGUgc29ucyBvZiBJc3JhZWwgY2FycmllZCBKYWNvYiB0aGVpciBmYXRoZXIsIGFuZCB0aGVpciBsaXR0bGUgb25lcywgYW5kIHRoZWlyIHdpdmVzLCBpbiB0aGUgd2Fnb25zIHdoaWNoIFBoYXJhb2ggaGFkIHNlbnQgdG8gY2FycnkgaGltLgpBbmQgdGhleSB0b29rIHRoZWlyIGNhdHRsZSwgYW5kIHRoZWlyIGdvb2RzLCB3aGljaCB0aGV5IGhhZCBnb3R0ZW4gaW4gdGhlIGxhbmQgb2YgQ2FuYWFuLCBhbmQgY2FtZSBpbnRvIEVneXB0LCBKYWNvYiwgYW5kIGFsbCBoaXMgc2VlZCB3aXRoIGhpbToKSGlzIHNvbnMsIGFuZCBoaXMgc29ucycgc29ucyB3aXRoIGhpbSwgaGlzIGRhdWdodGVycywgYW5kIGhpcyBzb25zJyBkYXVnaHRlcnMsIGFuZCBhbGwgaGlzIHNlZWQgYnJvdWdodCBoZSB3aXRoIGhpbSBpbnRvIEVneXB0LgpBbmQgdGhlc2UgYXJlIHRoZSBuYW1lcyBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLCB3aGljaCBjYW1lIGludG8gRWd5cHQsIEphY29iIGFuZCBoaXMgc29uczogUmV1YmVuLCBKYWNvYidzIGZpcnN0Ym9ybi4KQW5kIHRoZSBzb25zIG9mIFJldWJlbjsgSGFub2NoLCBhbmQgUGhhbGx1LCBhbmQgSGV6cm9uLCBhbmQgQ2FybWkuCkFuZCB0aGUgc29ucyBvZiBTaW1lb247IEplbXVlbCwgYW5kIEphbWluLCBhbmQgT2hhZCwgYW5kIEphY2hpbiwgYW5kIFpvaGFyLCBhbmQgU2hhdWwgdGhlIHNvbiBvZiBhIENhbmFhbml0aXNoIHdvbWFuLgpBbmQgdGhlIHNvbnMgb2YgTGV2aTsgR2Vyc2hvbiwgS29oYXRoLCBhbmQgTWVyYXJpLgpBbmQgdGhlIHNvbnMgb2YgSnVkYWg7IEVyLCBhbmQgT25hbiwgYW5kIFNoZWxhaCwgYW5kIFBoYXJleiwgYW5kIFphcmFoOiBidXQgRXIgYW5kIE9uYW4gZGllZCBpbiB0aGUgbGFuZCBvZiBDYW5hYW4uIEFuZCB0aGUgc29ucyBvZiBQaGFyZXogd2VyZSBIZXpyb24gYW5kIEhhbXVsLgpBbmQgdGhlIHNvbnMgb2YgSXNzYWNoYXI7IFRvbGEsIGFuZCBQaHV2YWgsIGFuZCBKb2IsIGFuZCBTaGltcm9uLgpBbmQgdGhlIHNvbnMgb2YgWmVidWx1bjsgU2VyZWQsIGFuZCBFbG9uLCBhbmQgSmFobGVlbC4KVGhlc2UgYmUgdGhlIHNvbnMgb2YgTGVhaCwgd2hpY2ggc2hlIGJhcmUgdW50byBKYWNvYiBpbiBQYWRhbmFyYW0sIHdpdGggaGlzIGRhdWdodGVyIERpbmFoOiBhbGwgdGhlIHNvdWxzIG9mIGhpcyBzb25zIGFuZCBoaXMgZGF1Z2h0ZXJzIHdlcmUgdGhpcnR5IGFuZCB0aHJlZS4KQW5kIHRoZSBzb25zIG9mIEdhZDsgWmlwaGlvbiwgYW5kIEhhZ2dpLCBTaHVuaSwgYW5kIEV6Ym9uLCBFcmksIGFuZCBBcm9kaSwgYW5kIEFyZWxpLgpBbmQgdGhlIHNvbnMgb2YgQXNoZXI7IEppbW5haCwgYW5kIElzaHVhaCwgYW5kIElzdWksIGFuZCBCZXJpYWgsIGFuZCBTZXJhaCB0aGVpciBzaXN0ZXI6IGFuZCB0aGUgc29ucyBvZiBCZXJpYWg7IEhlYmVyLCBhbmQgTWFsY2hpZWwuClRoZXNlIGFyZSB0aGUgc29ucyBvZiBaaWxwYWgsIHdob20gTGFiYW4gZ2F2ZSB0byBMZWFoIGhpcyBkYXVnaHRlciwgYW5kIHRoZXNlIHNoZSBiYXJlIHVudG8gSmFjb2IsIGV2ZW4gc2l4dGVlbiBzb3Vscy4KVGhlIHNvbnMgb2YgUmFjaGVsIEphY29iJ3Mgd2lmZTsgSm9zZXBoLCBhbmQgQmVuamFtaW4uCkFuZCB1bnRvIEpvc2VwaCBpbiB0aGUgbGFuZCBvZiBFZ3lwdCB3ZXJlIGJvcm4gTWFuYXNzZWggYW5kIEVwaHJhaW0sIHdoaWNoIEFzZW5hdGggdGhlIGRhdWdodGVyIG9mIFBvdGlwaGVyYWggcHJpZXN0IG9mIE9uIGJhcmUgdW50byBoaW0uCkFuZCB0aGUgc29ucyBvZiBCZW5qYW1pbiB3ZXJlIEJlbGFoLCBhbmQgQmVjaGVyLCBhbmQgQXNoYmVsLCBHZXJhLCBhbmQgTmFhbWFuLCBFaGksIGFuZCBSb3NoLCBNdXBwaW0sIGFuZCBIdXBwaW0sIGFuZCBBcmQuClRoZXNlIGFyZSB0aGUgc29ucyBvZiBSYWNoZWwsIHdoaWNoIHdlcmUgYm9ybiB0byBKYWNvYjogYWxsIHRoZSBzb3VscyB3ZXJlIGZvdXJ0ZWVuLgpBbmQgdGhlIHNvbnMgb2YgRGFuOyBIdXNoaW0uCkFuZCB0aGUgc29ucyBvZiBOYXBodGFsaTsgSmFoemVlbCwgYW5kIEd1bmksIGFuZCBKZXplciwgYW5kIFNoaWxsZW0uClRoZXNlIGFyZSB0aGUgc29ucyBvZiBCaWxoYWgsIHdoaWNoIExhYmFuIGdhdmUgdW50byBSYWNoZWwgaGlzIGRhdWdodGVyLCBhbmQgc2hlIGJhcmUgdGhlc2UgdW50byBKYWNvYjogYWxsIHRoZSBzb3VscyB3ZXJlIHNldmVuLgpBbGwgdGhlIHNvdWxzIHRoYXQgY2FtZSB3aXRoIEphY29iIGludG8gRWd5cHQsIHdoaWNoIGNhbWUgb3V0IG9mIGhpcyBsb2lucywgYmVzaWRlcyBKYWNvYidzIHNvbnMnIHdpdmVzLCBhbGwgdGhlIHNvdWxzIHdlcmUgdGhyZWVzY29yZSBhbmQgc2l4OwpBbmQgdGhlIHNvbnMgb2YgSm9zZXBoLCB3aGljaCB3ZXJlIGJvcm4gaGltIGluIEVneXB0LCB3ZXJlIHR3byBzb3VsczogYWxsIHRoZSBzb3VscyBvZiB0aGUgaG91c2Ugb2YgSmFjb2IsIHdoaWNoIGNhbWUgaW50byBFZ3lwdCwgd2VyZSB0aHJlZXNjb3JlIGFuZCB0ZW4uCkFuZCBoZSBzZW50IEp1ZGFoIGJlZm9yZSBoaW0gdW50byBKb3NlcGgsIHRvIGRpcmVjdCBoaXMgZmFjZSB1bnRvIEdvc2hlbjsgYW5kIHRoZXkgY2FtZSBpbnRvIHRoZSBsYW5kIG9mIEdvc2hlbi4KQW5kIEpvc2VwaCBtYWRlIHJlYWR5IGhpcyBjaGFyaW90LCBhbmQgd2VudCB1cCB0byBtZWV0IElzcmFlbCBoaXMgZmF0aGVyLCB0byBHb3NoZW4sIGFuZCBwcmVzZW50ZWQgaGltc2VsZiB1bnRvIGhpbTsgYW5kIGhlIGZlbGwgb24gaGlzIG5lY2ssIGFuZCB3ZXB0IG9uIGhpcyBuZWNrIGEgZ29vZCB3aGlsZS4KQW5kIElzcmFlbCBzYWlkIHVudG8gSm9zZXBoLCBOb3cgbGV0IG1lIGRpZSwgc2luY2UgSSBoYXZlIHNlZW4gdGh5IGZhY2UsIGJlY2F1c2UgdGhvdSBhcnQgeWV0IGFsaXZlLgpBbmQgSm9zZXBoIHNhaWQgdW50byBoaXMgYnJldGhyZW4sIGFuZCB1bnRvIGhpcyBmYXRoZXIncyBob3VzZSwgSSB3aWxsIGdvIHVwLCBhbmQgc2hldyBQaGFyYW9oLCBhbmQgc2F5IHVudG8gaGltLCBNeSBicmV0aHJlbiwgYW5kIG15IGZhdGhlcidzIGhvdXNlLCB3aGljaCB3ZXJlIGluIHRoZSBsYW5kIG9mIENhbmFhbiwgYXJlIGNvbWUgdW50byBtZTsKQW5kIHRoZSBtZW4gYXJlIHNoZXBoZXJkcywgZm9yIHRoZWlyIHRyYWRlIGhhdGggYmVlbiB0byBmZWVkIGNhdHRsZTsgYW5kIHRoZXkgaGF2ZSBicm91Z2h0IHRoZWlyIGZsb2NrcywgYW5kIHRoZWlyIGhlcmRzLCBhbmQgYWxsIHRoYXQgdGhleSBoYXZlLgpBbmQgaXQgc2hhbGwgY29tZSB0byBwYXNzLCB3aGVuIFBoYXJhb2ggc2hhbGwgY2FsbCB5b3UsIGFuZCBzaGFsbCBzYXksIFdoYXQgaXMgeW91ciBvY2N1cGF0aW9uPwpUaGF0IHllIHNoYWxsIHNheSwgVGh5IHNlcnZhbnRzJyB0cmFkZSBoYXRoIGJlZW4gYWJvdXQgY2F0dGxlIGZyb20gb3VyIHlvdXRoIGV2ZW4gdW50aWwgbm93LCBib3RoIHdlLCBhbmQgYWxzbyBvdXIgZmF0aGVyczogdGhhdCB5ZSBtYXkgZHdlbGwgaW4gdGhlIGxhbmQgb2YgR29zaGVuOyBmb3IgZXZlcnkgc2hlcGhlcmQgaXMgYW4gYWJvbWluYXRpb24gdW50byB0aGUgRWd5cHRpYW5zLgpUaGVuIEpvc2VwaCBjYW1lIGFuZCB0b2xkIFBoYXJhb2gsIGFuZCBzYWlkLCBNeSBmYXRoZXIgYW5kIG15IGJyZXRocmVuLCBhbmQgdGhlaXIgZmxvY2tzLCBhbmQgdGhlaXIgaGVyZHMsIGFuZCBhbGwgdGhhdCB0aGV5IGhhdmUsIGFyZSBjb21lIG91dCBvZiB0aGUgbGFuZCBvZiBDYW5hYW47IGFuZCwgYmVob2xkLCB0aGV5IGFyZSBpbiB0aGUgbGFuZCBvZiBHb3NoZW4uCkFuZCBoZSB0b29rIHNvbWUgb2YgaGlzIGJyZXRocmVuLCBldmVuIGZpdmUgbWVuLCBhbmQgcHJlc2VudGVkIHRoZW0gdW50byBQaGFyYW9oLgpBbmQgUGhhcmFvaCBzYWlkIHVudG8gaGlzIGJyZXRocmVuLCBXaGF0IGlzIHlvdXIgb2NjdXBhdGlvbj8gQW5kIHRoZXkgc2FpZCB1bnRvIFBoYXJhb2gsIFRoeSBzZXJ2YW50cyBhcmUgc2hlcGhlcmRzLCBib3RoIHdlLCBhbmQgYWxzbyBvdXIgZmF0aGVycy4KVGhleSBzYWlkIG1vcmV2ZXIgdW50byBQaGFyYW9oLCBGb3IgdG8gc29qb3VybiBpbiB0aGUgbGFuZCBhcmUgd2UgY29tZTsgZm9yIHRoeSBzZXJ2YW50cyBoYXZlIG5vIHBhc3R1cmUgZm9yIHRoZWlyIGZsb2NrczsgZm9yIHRoZSBmYW1pbmUgaXMgc29yZSBpbiB0aGUgbGFuZCBvZiBDYW5hYW46IG5vdyB0aGVyZWZvcmUsIHdlIHByYXkgdGhlZSwgbGV0IHRoeSBzZXJ2YW50cyBkd2VsbCBpbiB0aGUgbGFuZCBvZiBHb3NoZW4uCkFuZCBQaGFyYW9oIHNwYWtlIHVudG8gSm9zZXBoLCBzYXlpbmcsIFRoeSBmYXRoZXIgYW5kIHRoeSBicmV0aHJlbiBhcmUgY29tZSB1bnRvIHRoZWU6ClRoZSBsYW5kIG9mIEVneXB0IGlzIGJlZm9yZSB0aGVlOyBpbiB0aGUgYmVzdCBvZiB0aGUgbGFuZCBtYWtlIHRoeSBmYXRoZXIgYW5kIGJyZXRocmVuIHRvIGR3ZWxsOyBpbiB0aGUgbGFuZCBvZiBHb3NoZW4gbGV0IHRoZW0gZHdlbGw6IGFuZCBpZiB0aG91IGtub3dlc3QgYW55IG1lbiBvZiBhY3Rpdml0eSBhbW9uZyB0aGVtLCB0aGVuIG1ha2UgdGhlbSBydWxlcnMgb3ZlciBteSBjYXR0bGUuCkFuZCBKb3NlcGggYnJvdWdodCBpbiBKYWNvYiBoaXMgZmF0aGVyLCBhbmQgc2V0IGhpbSBiZWZvcmUgUGhhcmFvaDogYW5kIEphY29iIGJsZXNzZWQgUGhhcmFvaC4KQW5kIFBoYXJhb2ggc2FpZCB1bnRvIEphY29iLCBIb3cgb2xkIGFydCB0aG91PwpBbmQgSmFjb2Igc2FpZCB1bnRvIFBoYXJhb2gsIFRoZSBkYXlzIG9mIHRoZSB5ZWFycyBvZiBteSBwaWxncmltYWdlIGFyZSBhbiBodW5kcmVkIGFuZCB0aGlydHkgeWVhcnM6IGZldyBhbmQgZXZpbCBoYXZlIHRoZSBkYXlzIG9mIHRoZSB5ZWFycyBvZiBteSBsaWZlIGJlZW4sIGFuZCBoYXZlIG5vdCBhdHRhaW5lZCB1bnRvIHRoZSBkYXlzIG9mIHRoZSB5ZWFycyBvZiB0aGUgbGlmZSBvZiBteSBmYXRoZXJzIGluIHRoZSBkYXlzIG9mIHRoZWlyIHBpbGdyaW1hZ2UuCkFuZCBKYWNvYiBibGVzc2VkIFBoYXJhb2gsIGFuZCB3ZW50IG91dCBmcm9tIGJlZm9yZSBQaGFyYW9oLgpBbmQgSm9zZXBoIHBsYWNlZCBoaXMgZmF0aGVyIGFuZCBoaXMgYnJldGhyZW4sIGFuZCBnYXZlIHRoZW0gYSBwb3NzZXNzaW9uIGluIHRoZSBsYW5kIG9mIEVneXB0LCBpbiB0aGUgYmVzdCBvZiB0aGUgbGFuZCwgaW4gdGhlIGxhbmQgb2YgUmFtZXNlcywgYXMgUGhhcmFvaCBoYWQgY29tbWFuZGVkLgpBbmQgSm9zZXBoIG5vdXJpc2hlZCBoaXMgZmF0aGVyLCBhbmQgaGlzIGJyZXRocmVuLCBhbmQgYWxsIGhpcyBmYXRoZXIncyBob3VzZWhvbGQsIHdpdGggYnJlYWQsIGFjY29yZGluZyB0byB0aGVpciBmYW1pbGllcy4KQW5kIHRoZXJlIHdhcyBubyBicmVhZCBpbiBhbGwgdGhlIGxhbmQ7IGZvciB0aGUgZmFtaW5lIHdhcyB2ZXJ5IHNvcmUsIHNvIHRoYXQgdGhlIGxhbmQgb2YgRWd5cHQgYW5kIGFsbCB0aGUgbGFuZCBvZiBDYW5hYW4gZmFpbnRlZCBieSByZWFzb24gb2YgdGhlIGZhbWluZS4KQW5kIEpvc2VwaCBnYXRoZXJlZCB1cCBhbGwgdGhlIG1vbmV5IHRoYXQgd2FzIGZvdW5kIGluIHRoZSBsYW5kIG9mIEVneXB0LCBhbmQgaW4gdGhlIGxhbmQgb2YgQ2FuYWFuLCBmb3IgdGhlIGNvcm4gd2hpY2ggdGhleSBib3VnaHQ6IGFuZCBKb3NlcGggYnJvdWdodCB0aGUgbW9uZXkgaW50byBQaGFyYW9oJ3MgaG91c2UuCkFuZCB3aGVuIG1vbmV5IGZhaWxlZCBpbiB0aGUgbGFuZCBvZiBFZ3lwdCwgYW5kIGluIHRoZSBsYW5kIG9mIENhbmFhbiwgYWxsIHRoZSBFZ3lwdGlhbnMgY2FtZSB1bnRvIEpvc2VwaCwgYW5kIHNhaWQsIEdpdmUgdXMgYnJlYWQ6IGZvciB3aHkgc2hvdWxkIHdlIGRpZSBpbiB0aHkgcHJlc2VuY2U/IGZvciB0aGUgbW9uZXkgZmFpbGV0aC4KQW5kIEpvc2VwaCBzYWlkLCBHaXZlIHlvdXIgY2F0dGxlOyBhbmQgSSB3aWxsIGdpdmUgeW91IGZvciB5b3VyIGNhdHRsZSwgaWYgbW9uZXkgZmFpbC4KQW5kIHRoZXkgYnJvdWdodCB0aGVpciBjYXR0bGUgdW50byBKb3NlcGg6IGFuZCBKb3NlcGggZ2F2ZSB0aGVtIGJyZWFkIGluIGV4Y2hhbmdlIGZvciBob3JzZXMsIGFuZCBmb3IgdGhlIGZsb2NrcywgYW5kIGZvciB0aGUgY2F0dGxlIG9mIHRoZSBoZXJkcywgYW5kIGZvciB0aGUgYXNzZXM6IGFuZCBoZSBmZWQgdGhlbSB3aXRoIGJyZWFkIGZvciBhbGwgdGhlaXIgY2F0dGxlIGZvciB0aGF0IHllYXIuCldoZW4gdGhhdCB5ZWFyIHdhcyBlbmRlZCwgdGhleSBjYW1lIHVudG8gaGltIHRoZSBzZWNvbmQgeWVhciwgYW5kIHNhaWQgdW50byBoaW0sIFdlIHdpbGwgbm90IGhpZGUgaXQgZnJvbSBteSBsb3JkLCBob3cgdGhhdCBvdXIgbW9uZXkgaXMgc3BlbnQ7IG15IGxvcmQgYWxzbyBoYXRoIG91ciBoZXJkcyBvZiBjYXR0bGU7IHRoZXJlIGlzIG5vdCBvdWdodCBsZWZ0IGluIHRoZSBzaWdodCBvZiBteSBsb3JkLCBidXQgb3VyIGJvZGllcywgYW5kIG91ciBsYW5kczoKV2hlcmVmb3JlIHNoYWxsIHdlIGRpZSBiZWZvcmUgdGhpbmUgZXllcywgYm90aCB3ZSBhbmQgb3VyIGxhbmQ/IGJ1eSB1cyBhbmQgb3VyIGxhbmQgZm9yIGJyZWFkLCBhbmQgd2UgYW5kIG91ciBsYW5kIHdpbGwgYmUgc2VydmFudHMgdW50byBQaGFyYW9oOiBhbmQgZ2l2ZSB1cyBzZWVkLCB0aGF0IHdlIG1heSBsaXZlLCBhbmQgbm90IGRpZSwgdGhhdCB0aGUgbGFuZCBiZSBub3QgZGVzb2xhdGUuCkFuZCBKb3NlcGggYm91Z2h0IGFsbCB0aGUgbGFuZCBvZiBFZ3lwdCBmb3IgUGhhcmFvaDsgZm9yIHRoZSBFZ3lwdGlhbnMgc29sZCBldmVyeSBtYW4gaGlzIGZpZWxkLCBiZWNhdXNlIHRoZSBmYW1pbmUgcHJldmFpbGVkIG92ZXIgdGhlbTogc28gdGhlIGxhbmQgYmVjYW1lIFBoYXJhb2gncy4KQW5kIGFzIGZvciB0aGUgcGVvcGxlLCBoZSByZW1vdmVkIHRoZW0gdG8gY2l0aWVzIGZyb20gb25lIGVuZCBvZiB0aGUgYm9yZGVycyBvZiBFZ3lwdCBldmVuIHRvIHRoZSBvdGhlciBlbmQgdGhlcmVvZi4KT25seSB0aGUgbGFuZCBvZiB0aGUgcHJpZXN0cyBib3VnaHQgaGUgbm90OyBmb3IgdGhlIHByaWVzdHMgaGFkIGEgcG9ydGlvbiBhc3NpZ25lZCB0aGVtIG9mIFBoYXJhb2gsIGFuZCBkaWQgZWF0IHRoZWlyIHBvcnRpb24gd2hpY2ggUGhhcmFvaCBnYXZlIHRoZW06IHdoZXJlZm9yZSB0aGV5IHNvbGQgbm90IHRoZWlyIGxhbmRzLgpUaGVuIEpvc2VwaCBzYWlkIHVudG8gdGhlIHBlb3BsZSwgQmVob2xkLCBJIGhhdmUgYm91Z2h0IHlvdSB0aGlzIGRheSBhbmQgeW91ciBsYW5kIGZvciBQaGFyYW9oOiBsbywgaGVyZSBpcyBzZWVkIGZvciB5b3UsIGFuZCB5ZSBzaGFsbCBzb3cgdGhlIGxhbmQuCkFuZCBpdCBzaGFsbCBjb21lIHRvIHBhc3MgaW4gdGhlIGluY3JlYXNlLCB0aGF0IHllIHNoYWxsIGdpdmUgdGhlIGZpZnRoIHBhcnQgdW50byBQaGFyYW9oLCBhbmQgZm91ciBwYXJ0cyBzaGFsbCBiZSB5b3VyIG93biwgZm9yIHNlZWQgb2YgdGhlIGZpZWxkLCBhbmQgZm9yIHlvdXIgZm9vZCwgYW5kIGZvciB0aGVtIG9mIHlvdXIgaG91c2Vob2xkcywgYW5kIGZvciBmb29kIGZvciB5b3VyIGxpdHRsZSBvbmVzLgpBbmQgdGhleSBzYWlkLCBUaG91IGhhc3Qgc2F2ZWQgb3VyIGxpdmVzOiBsZXQgdXMgZmluZCBncmFjZSBpbiB0aGUgc2lnaHQgb2YgbXkgbG9yZCwgYW5kIHdlIHdpbGwgYmUgUGhhcmFvaCdzIHNlcnZhbnRzLgpBbmQgSm9zZXBoIG1hZGUgaXQgYSBsYXcgb3ZlciB0aGUgbGFuZCBvZiBFZ3lwdCB1bnRvIHRoaXMgZGF5LCB0aGF0IFBoYXJhb2ggc2hvdWxkIGhhdmUgdGhlIGZpZnRoIHBhcnQsIGV4Y2VwdCB0aGUgbGFuZCBvZiB0aGUgcHJpZXN0cyBvbmx5LCB3aGljaCBiZWNhbWUgbm90IFBoYXJhb2gncy4KQW5kIElzcmFlbCBkd2VsdCBpbiB0aGUgbGFuZCBvZiBFZ3lwdCwgaW4gdGhlIGNvdW50cnkgb2YgR29zaGVuOyBhbmQgdGhleSBoYWQgcG9zc2Vzc2lvbnMgdGhlcmVpbiwgYW5kIGdyZXcsIGFuZCBtdWx0aXBsaWVkIGV4Y2VlZGluZ2x5LgpBbmQgSmFjb2IgbGl2ZWQgaW4gdGhlIGxhbmQgb2YgRWd5cHQgc2V2ZW50ZWVuIHllYXJzOiBzbyB0aGUgd2hvbGUgYWdlIG9mIEphY29iIHdhcyBhbiBodW5kcmVkIGZvcnR5IGFuZCBzZXZlbiB5ZWFycy4KQW5kIHRoZSB0aW1lIGRyZXcgbmlnaCB0aGF0IElzcmFlbCBtdXN0IGRpZTogYW5kIGhlIGNhbGxlZCBoaXMgc29uIEpvc2VwaCwgYW5kIHNhaWQgdW50byBoaW0sIElmIG5vdyBJIGhhdmUgZm91bmQgZ3JhY2UgaW4gdGh5IHNpZ2h0LCBwdXQsIEkgcHJheSB0aGVlLCB0aHkgaGFuZCB1bmRlciBteSB0aGlnaCwgYW5kIGRlYWwga2luZGx5IGFuZCB0cnVseSB3aXRoIG1lOyBidXJ5IG1lIG5vdCwgSSBwcmF5IHRoZWUsIGluIEVneXB0OgpCdXQgSSB3aWxsIGxpZSB3aXRoIG15IGZhdGhlcnMsIGFuZCB0aG91IHNoYWx0IGNhcnJ5IG1lIG91dCBvZiBFZ3lwdCwgYW5kIGJ1cnkgbWUgaW4gdGhlaXIgYnVyeWluZ3BsYWNlLiBBbmQgaGUgc2FpZCwgSSB3aWxsIGRvIGFzIHRob3UgaGFzdCBzYWlkLgpBbmQgaGUgc2FpZCwgU3dlYXIgdW50byBtZS4gQW5kIGhlIHN3YXJlIHVudG8gaGltLiBBbmQgSXNyYWVsIGJvd2VkIGhpbXNlbGYgdXBvbiB0aGUgYmVkJ3MgaGVhZC4KQW5kIGl0IGNhbWUgdG8gcGFzcyBhZnRlciB0aGVzZSB0aGluZ3MsIHRoYXQgb25lIHRvbGQgSm9zZXBoLCBCZWhvbGQsIHRoeSBmYXRoZXIgaXMgc2ljazogYW5kIGhlIHRvb2sgd2l0aCBoaW0gaGlzIHR3byBzb25zLCBNYW5hc3NlaCBhbmQgRXBocmFpbS4KQW5kIG9uZSB0b2xkIEphY29iLCBhbmQgc2FpZCwgQmVob2xkLCB0aHkgc29uIEpvc2VwaCBjb21ldGggdW50byB0aGVlOiBhbmQgSXNyYWVsIHN0cmVuZ3RoZW5lZCBoaW1zZWxmLCBhbmQgc2F0IHVwb24gdGhlIGJlZC4KQW5kIEphY29iIHNhaWQgdW50byBKb3NlcGgsIEdvZCBBbG1pZ2h0eSBhcHBlYXJlZCB1bnRvIG1lIGF0IEx1eiBpbiB0aGUgbGFuZCBvZiBDYW5hYW4sIGFuZCBibGVzc2VkIG1lLApBbmQgc2FpZCB1bnRvIG1lLCBCZWhvbGQsIEkgd2lsbCBtYWtlIHRoZWUgZnJ1aXRmdWwsIGFuZCBtdWx0aXBseSB0aGVlLCBhbmQgSSB3aWxsIG1ha2Ugb2YgdGhlZSBhIG11bHRpdHVkZSBvZiBwZW9wbGU7IGFuZCB3aWxsIGdpdmUgdGhpcyBsYW5kIHRvIHRoeSBzZWVkIGFmdGVyIHRoZWUgZm9yIGFuIGV2ZXJsYXN0aW5nIHBvc3Nlc3Npb24uCkFuZCBub3cgdGh5IHR3byBzb25zLCBFcGhyYWltIGFuZCBNYW5hc3NlaCwgd2hpY2ggd2VyZSBib3JuIHVudG8gdGhlZSBpbiB0aGUgbGFuZCBvZiBFZ3lwdCBiZWZvcmUgSSBjYW1lIHVudG8gdGhlZSBpbnRvIEVneXB0LCBhcmUgbWluZTsgYXMgUmV1YmVuIGFuZCBTaW1lb24sIHRoZXkgc2hhbGwgYmUgbWluZS4KQW5kIHRoeSBpc3N1ZSwgd2hpY2ggdGhvdSBiZWdldHRlc3QgYWZ0ZXIgdGhlbSwgc2hhbGwgYmUgdGhpbmUsIGFuZCBzaGFsbCBiZSBjYWxsZWQgYWZ0ZXIgdGhlIG5hbWUgb2YgdGhlaXIgYnJldGhyZW4gaW4gdGhlaXIgaW5oZXJpdGFuY2UuCkFuZCBhcyBmb3IgbWUsIHdoZW4gSSBjYW1lIGZyb20gUGFkYW4sIFJhY2hlbCBkaWVkIGJ5IG1lIGluIHRoZSBsYW5kIG9mIENhbmFhbiBpbiB0aGUgd2F5LCB3aGVuIHlldCB0aGVyZSB3YXMgYnV0IGEgbGl0dGxlIHdheSB0byBjb21lIHVudG8gRXBocmF0aDogYW5kIEkgYnVyaWVkIGhlciB0aGVyZSBpbiB0aGUgd2F5IG9mIEVwaHJhdGg7IHRoZSBzYW1lIGlzIEJldGhsZWhlbS4KQW5kIElzcmFlbCBiZWhlbGQgSm9zZXBoJ3Mgc29ucywgYW5kIHNhaWQsIFdobyBhcmUgdGhlc2U/CkFuZCBKb3NlcGggc2FpZCB1bnRvIGhpcyBmYXRoZXIsIFRoZXkgYXJlIG15IHNvbnMsIHdob20gR29kIGhhdGggZ2l2ZW4gbWUgaW4gdGhpcyBwbGFjZS4gQW5kIGhlIHNhaWQsIEJyaW5nIHRoZW0sIEkgcHJheSB0aGVlLCB1bnRvIG1lLCBhbmQgSSB3aWxsIGJsZXNzIHRoZW0uCk5vdyB0aGUgZXllcyBvZiBJc3JhZWwgd2VyZSBkaW0gZm9yIGFnZSwgc28gdGhhdCBoZSBjb3VsZCBub3Qgc2VlLiBBbmQgaGUgYnJvdWdodCB0aGVtIG5lYXIgdW50byBoaW07IGFuZCBoZSBraXNzZWQgdGhlbSwgYW5kIGVtYnJhY2VkIHRoZW0uCkFuZCBJc3JhZWwgc2FpZCB1bnRvIEpvc2VwaCwgSSBoYWQgbm90IHRob3VnaHQgdG8gc2VlIHRoeSBmYWNlOiBhbmQsIGxvLCBHb2QgaGF0aCBzaGV3ZWQgbWUgYWxzbyB0aHkgc2VlZC4KQW5kIEpvc2VwaCBicm91Z2h0IHRoZW0gb3V0IGZyb20gYmV0d2VlbiBoaXMga25lZXMsIGFuZCBoZSBib3dlZCBoaW1zZWxmIHdpdGggaGlzIGZhY2UgdG8gdGhlIGVhcnRoLgpBbmQgSm9zZXBoIHRvb2sgdGhlbSBib3RoLCBFcGhyYWltIGluIGhpcyByaWdodCBoYW5kIHRvd2FyZCBJc3JhZWwncyBsZWZ0IGhhbmQsIGFuZCBNYW5hc3NlaCBpbiBoaXMgbGVmdCBoYW5kIHRvd2FyZCBJc3JhZWwncyByaWdodCBoYW5kLCBhbmQgYnJvdWdodCB0aGVtIG5lYXIgdW50byBoaW0uCkFuZCBJc3JhZWwgc3RyZXRjaGVkIG91dCBoaXMgcmlnaHQgaGFuZCwgYW5kIGxhaWQgaXQgdXBvbiBFcGhyYWltJ3MgaGVhZCwgd2hvIHdhcyB0aGUgeW91bmdlciwgYW5kIGhpcyBsZWZ0IGhhbmQgdXBvbiBNYW5hc3NlaCdzIGhlYWQsIGd1aWRpbmcgaGlzIGhhbmRzIHdpdHRpbmdseTsgZm9yIE1hbmFzc2VoIHdhcyB0aGUgZmlyc3Rib3JuLgpBbmQgaGUgYmxlc3NlZCBKb3NlcGgsIGFuZCBzYWlkLCBHb2QsIGJlZm9yZSB3aG9tIG15IGZhdGhlcnMgQWJyYWhhbSBhbmQgSXNhYWMgZGlkIHdhbGssIHRoZSBHb2Qgd2hpY2ggZmVkIG1lIGFsbCBteSBsaWZlIGxvbmcgdW50byB0aGlzIGRheSwKVGhlIEFuZ2VsIHdoaWNoIHJlZGVlbWVkIG1lIGZyb20gYWxsIGV2aWwsIGJsZXNzIHRoZSBsYWRzOyBhbmQgbGV0IG15IG5hbWUgYmUgbmFtZWQgb24gdGhlbSwgYW5kIHRoZSBuYW1lIG9mIG15IGZhdGhlcnMgQWJyYWhhbSBhbmQgSXNhYWM7IGFuZCBsZXQgdGhlbSBncm93IGludG8gYSBtdWx0aXR1ZGUgaW4gdGhlIG1pZHN0IG9mIHRoZSBlYXJ0aC4KQW5kIHdoZW4gSm9zZXBoIHNhdyB0aGF0IGhpcyBmYXRoZXIgbGFpZCBoaXMgcmlnaHQgaGFuZCB1cG9uIHRoZSBoZWFkIG9mIEVwaHJhaW0sIGl0IGRpc3BsZWFzZWQgaGltOiBhbmQgaGUgaGVsZCB1cCBoaXMgZmF0aGVyJ3MgaGFuZCwgdG8gcmVtb3ZlIGl0IGZyb20gRXBocmFpbSdzIGhlYWQgdW50byBNYW5hc3NlaCdzIGhlYWQuCkFuZCBKb3NlcGggc2FpZCB1bnRvIGhpcyBmYXRoZXIsIE5vdCBzbywgbXkgZmF0aGVyOiBmb3IgdGhpcyBpcyB0aGUgZmlyc3Rib3JuOyBwdXQgdGh5IHJpZ2h0IGhhbmQgdXBvbiBoaXMgaGVhZC4KQW5kIGhpcyBmYXRoZXIgcmVmdXNlZCwgYW5kIHNhaWQsIEkga25vdyBpdCwgbXkgc29uLCBJIGtub3cgaXQ6IGhlIGFsc28gc2hhbGwgYmVjb21lIGEgcGVvcGxlLCBhbmQgaGUgYWxzbyBzaGFsbCBiZSBncmVhdDogYnV0IHRydWx5IGhpcyB5b3VuZ2VyIGJyb3RoZXIgc2hhbGwgYmUgZ3JlYXRlciB0aGFuIGhlLCBhbmQgaGlzIHNlZWQgc2hhbGwgYmVjb21lIGEgbXVsdGl0dWRlIG9mIG5hdGlvbnMuCkFuZCBoZSBibGVzc2VkIHRoZW0gdGhhdCBkYXksIHNheWluZywgSW4gdGhlZSBzaGFsbCBJc3JhZWwgYmxlc3MsIHNheWluZywgR29kIG1ha2UgdGhlZSBhcyBFcGhyYWltIGFuZCBhcyBNYW5hc3NlaDogYW5kIGhlIHNldCBFcGhyYWltIGJlZm9yZSBNYW5hc3NlaC4KQW5kIElzcmFlbCBzYWlkIHVudG8gSm9zZXBoLCBCZWhvbGQsIEkgZGllOiBidXQgR29kIHNoYWxsIGJlIHdpdGggeW91LCBhbmQgYnJpbmcgeW91IGFnYWluIHVudG8gdGhlIGxhbmQgb2YgeW91ciBmYXRoZXJzLgpNb3Jlb3ZlciBJIGhhdmUgZ2l2ZW4gdG8gdGhlZSBvbmUgcG9ydGlvbiBhYm92ZSB0aHkgYnJldGhyZW4sIHdoaWNoIEkgdG9vayBvdXQgb2YgdGhlIGhhbmQgb2YgdGhlIEFtb3JpdGUgd2l0aCBteSBzd29yZCBhbmQgd2l0aCBteSBib3cuCkFuZCBKYWNvYiBjYWxsZWQgdW50byBoaXMgc29ucywgYW5kIHNhaWQsIEdhdGhlciB5b3Vyc2VsdmVzIHRvZ2V0aGVyLCB0aGF0IEkgbWF5IHRlbGwgeW91IHRoYXQgd2hpY2ggc2hhbGwgYmVmYWxsIHlvdSBpbiB0aGUgbGFzdCBkYXlzLgpHYXRoZXIgeW91cnNlbHZlcyB0b2dldGhlciwgYW5kIGhlYXIsIHllIHNvbnMgb2YgSmFjb2I7IGFuZCBoZWFya2VuIHVudG8gSXNyYWVsIHlvdXIgZmF0aGVyLgpSZXViZW4sIHRob3UgYXJ0IG15IGZpcnN0Ym9ybiwgbXkgbWlnaHQsIGFuZCB0aGUgYmVnaW5uaW5nIG9mIG15IHN0cmVuZ3RoLCB0aGUgZXhjZWxsZW5jeSBvZiBkaWduaXR5LCBhbmQgdGhlIGV4Y2VsbGVuY3kgb2YgcG93ZXI6ClVuc3RhYmxlIGFzIHdhdGVyLCB0aG91IHNoYWx0IG5vdCBleGNlbDsgYmVjYXVzZSB0aG91IHdlbnRlc3QgdXAgdG8gdGh5IGZhdGhlcidzIGJlZDsgdGhlbiBkZWZpbGVkc3QgdGhvdSBpdDogaGUgd2VudCB1cCB0byBteSBjb3VjaC4KU2ltZW9uIGFuZCBMZXZpIGFyZSBicmV0aHJlbjsgaW5zdHJ1bWVudHMgb2YgY3J1ZWx0eSBhcmUgaW4gdGhlaXIgaGFiaXRhdGlvbnMuCk8gbXkgc291bCwgY29tZSBub3QgdGhvdSBpbnRvIHRoZWlyIHNlY3JldDsgdW50byB0aGVpciBhc3NlbWJseSwgbWluZSBob25vdXIsIGJlIG5vdCB0aG91IHVuaXRlZDogZm9yIGluIHRoZWlyIGFuZ2VyIHRoZXkgc2xldyBhIG1hbiwgYW5kIGluIHRoZWlyIHNlbGZ3aWxsIHRoZXkgZGlnZ2VkIGRvd24gYSB3YWxsLgpDdXJzZWQgYmUgdGhlaXIgYW5nZXIsIGZvciBpdCB3YXMgZmllcmNlOyBhbmQgdGhlaXIgd3JhdGgsIGZvciBpdCB3YXMgY3J1ZWw6IEkgd2lsbCBkaXZpZGUgdGhlbSBpbiBKYWNvYiwgYW5kIHNjYXR0ZXIgdGhlbSBpbiBJc3JhZWwuCkp1ZGFoLCB0aG91IGFydCBoZSB3aG9tIHRoeSBicmV0aHJlbiBzaGFsbCBwcmFpc2U6IHRoeSBoYW5kIHNoYWxsIGJlIGluIHRoZSBuZWNrIG9mIHRoaW5lIGVuZW1pZXM7IHRoeSBmYXRoZXIncyBjaGlsZHJlbiBzaGFsbCBib3cgZG93biBiZWZvcmUgdGhlZS4KSnVkYWggaXMgYSBsaW9uJ3Mgd2hlbHA6IGZyb20gdGhlIHByZXksIG15IHNvbiwgdGhvdSBhcnQgZ29uZSB1cDogaGUgc3Rvb3BlZCBkb3duLCBoZSBjb3VjaGVkIGFzIGEgbGlvbiwgYW5kIGFzIGFuIG9sZCBsaW9uOyB3aG8gc2hhbGwgcm91c2UgaGltIHVwPwpUaGUgc2NlcHRyZSBzaGFsbCBub3QgZGVwYXJ0IGZyb20gSnVkYWgsIG5vciBhIGxhd2dpdmVyIGZyb20gYmV0d2VlbiBoaXMgZmVldCwgdW50aWwgU2hpbG9oIGNvbWU7IGFuZCB1bnRvIGhpbSBzaGFsbCB0aGUgZ2F0aGVyaW5nIG9mIHRoZSBwZW9wbGUgYmUuCkJpbmRpbmcgaGlzIGZvYWwgdW50byB0aGUgdmluZSwgYW5kIGhpcyBhc3MncyBjb2x0IHVudG8gdGhlIGNob2ljZSB2aW5lOyBoZSB3YXNoZWQgaGlzIGdhcm1lbnRzIGluIHdpbmUsIGFuZCBoaXMgY2xvdGhlcyBpbiB0aGUgYmxvb2Qgb2YgZ3JhcGVzOgpIaXMgZXllcyBzaGFsbCBiZSByZWQgd2l0aCB3aW5lLCBhbmQgaGlzIHRlZXRoIHdoaXRlIHdpdGggbWlsay4KWmVidWx1biBzaGFsbCBkd2VsbCBhdCB0aGUgaGF2ZW4gb2YgdGhlIHNlYTsgYW5kIGhlIHNoYWxsIGJlIGZvciBhbiBoYXZlbiBvZiBzaGlwczsgYW5kIGhpcyBib3JkZXIgc2hhbGwgYmUgdW50byBaaWRvbi4KSXNzYWNoYXIgaXMgYSBzdHJvbmcgYXNzIGNvdWNoaW5nIGRvd24gYmV0d2VlbiB0d28gYnVyZGVuczoKQW5kIGhlIHNhdyB0aGF0IHJlc3Qgd2FzIGdvb2QsIGFuZCB0aGUgbGFuZCB0aGF0IGl0IHdhcyBwbGVhc2FudDsgYW5kIGJvd2VkIGhpcyBzaG91bGRlciB0byBiZWFyLCBhbmQgYmVjYW1lIGEgc2VydmFudCB1bnRvIHRyaWJ1dGUuCkRhbiBzaGFsbCBqdWRnZSBoaXMgcGVvcGxlLCBhcyBvbmUgb2YgdGhlIHRyaWJlcyBvZiBJc3JhZWwuCkRhbiBzaGFsbCBiZSBhIHNlcnBlbnQgYnkgdGhlIHdheSwgYW4gYWRkZXIgaW4gdGhlIHBhdGgsIHRoYXQgYml0ZXRoIHRoZSBob3JzZSBoZWVscywgc28gdGhhdCBoaXMgcmlkZXIgc2hhbGwgZmFsbCBiYWNrd2FyZC4KSSBoYXZlIHdhaXRlZCBmb3IgdGh5IHNhbHZhdGlvbiwgTyBMT1JELgpHYWQsIGEgdHJvb3Agc2hhbGwgb3ZlcmNvbWUgaGltOiBidXQgaGUgc2hhbGwgb3ZlcmNvbWUgYXQgdGhlIGxhc3QuCk91dCBvZiBBc2hlciBoaXMgYnJlYWQgc2hhbGwgYmUgZmF0LCBhbmQgaGUgc2hhbGwgeWllbGQgcm95YWwgZGFpbnRpZXMuCk5hcGh0YWxpIGlzIGEgaGluZCBsZXQgbG9vc2U6IGhlIGdpdmV0aCBnb29kbHkgd29yZHMuCkpvc2VwaCBpcyBhIGZydWl0ZnVsIGJvdWdoLCBldmVuIGEgZnJ1aXRmdWwgYm91Z2ggYnkgYSB3ZWxsOyB3aG9zZSBicmFuY2hlcyBydW4gb3ZlciB0aGUgd2FsbDoKVGhlIGFyY2hlcnMgaGF2ZSBzb3JlbHkgZ3JpZXZlZCBoaW0sIGFuZCBzaG90IGF0IGhpbSwgYW5kIGhhdGVkIGhpbToKQnV0IGhpcyBib3cgYWJvZGUgaW4gc3RyZW5ndGgsIGFuZCB0aGUgYXJtcyBvZiBoaXMgaGFuZHMgd2VyZSBtYWRlIHN0cm9uZyBieSB0aGUgaGFuZHMgb2YgdGhlIG1pZ2h0eSBHb2Qgb2YgSmFjb2I7IChmcm9tIHRoZW5jZSBpcyB0aGUgc2hlcGhlcmQsIHRoZSBzdG9uZSBvZiBJc3JhZWw6KQpFdmVuIGJ5IHRoZSBHb2Qgb2YgdGh5IGZhdGhlciwgd2hvIHNoYWxsIGhlbHAgdGhlZTsgYW5kIGJ5IHRoZSBBbG1pZ2h0eSwgd2hvIHNoYWxsIGJsZXNzIHRoZWUgd2l0aCBibGVzc2luZ3Mgb2YgaGVhdmVuIGFib3ZlLCBibGVzc2luZ3Mgb2YgdGhlIGRlZXAgdGhhdCBsaWV0aCB1bmRlciwgYmxlc3NpbmdzIG9mIHRoZSBicmVhc3RzLCBhbmQgb2YgdGhlIHdvbWI6ClRoZSBibGVzc2luZ3Mgb2YgdGh5IGZhdGhlciBoYXZlIHByZXZhaWxlZCBhYm92ZSB0aGUgYmxlc3NpbmdzIG9mIG15IHByb2dlbml0b3JzIHVudG8gdGhlIHV0bW9zdCBib3VuZCBvZiB0aGUgZXZlcmxhc3RpbmcgaGlsbHM6IHRoZXkgc2hhbGwgYmUgb24gdGhlIGhlYWQgb2YgSm9zZXBoLCBhbmQgb24gdGhlIGNyb3duIG9mIHRoZSBoZWFkIG9mIGhpbSB0aGF0IHdhcyBzZXBhcmF0ZSBmcm9tIGhpcyBicmV0aHJlbi4KQmVuamFtaW4gc2hhbGwgcmF2aW4gYXMgYSB3b2xmOiBpbiB0aGUgbW9ybmluZyBoZSBzaGFsbCBkZXZvdXIgdGhlIHByZXksIGFuZCBhdCBuaWdodCBoZSBzaGFsbCBkaXZpZGUgdGhlIHNwb2lsLgpBbGwgdGhlc2UgYXJlIHRoZSB0d2VsdmUgdHJpYmVzIG9mIElzcmFlbDogYW5kIHRoaXMgaXMgaXQgdGhhdCB0aGVpciBmYXRoZXIgc3Bha2UgdW50byB0aGVtLCBhbmQgYmxlc3NlZCB0aGVtOyBldmVyeSBvbmUgYWNjb3JkaW5nIHRvIGhpcyBibGVzc2luZyBoZSBibGVzc2VkIHRoZW0uCkFuZCBoZSBjaGFyZ2VkIHRoZW0sIGFuZCBzYWlkIHVudG8gdGhlbSwgSSBhbSB0byBiZSBnYXRoZXJlZCB1bnRvIG15IHBlb3BsZTogYnVyeSBtZSB3aXRoIG15IGZhdGhlcnMgaW4gdGhlIGNhdmUgdGhhdCBpcyBpbiB0aGUgZmllbGQgb2YgRXBocm9uIHRoZSBIaXR0aXRlLApJbiB0aGUgY2F2ZSB0aGF0IGlzIGluIHRoZSBmaWVsZCBvZiBNYWNocGVsYWgsIHdoaWNoIGlzIGJlZm9yZSBNYW1yZSwgaW4gdGhlIGxhbmQgb2YgQ2FuYWFuLCB3aGljaCBBYnJhaGFtIGJvdWdodCB3aXRoIHRoZSBmaWVsZCBvZiBFcGhyb24gdGhlIEhpdHRpdGUgZm9yIGEgcG9zc2Vzc2lvbiBvZiBhIGJ1cnlpbmdwbGFjZS4KVGhlcmUgdGhleSBidXJpZWQgQWJyYWhhbSBhbmQgU2FyYWggaGlzIHdpZmU7IHRoZXJlIHRoZXkgYnVyaWVkIElzYWFjIGFuZCBSZWJla2FoIGhpcyB3aWZlOyBhbmQgdGhlcmUgSSBidXJpZWQgTGVhaC4KVGhlIHB1cmNoYXNlIG9mIHRoZSBmaWVsZCBhbmQgb2YgdGhlIGNhdmUgdGhhdCBpcyB0aGVyZWluIHdhcyBmcm9tIHRoZSBjaGlsZHJlbiBvZiBIZXRoLgpBbmQgd2hlbiBKYWNvYiBoYWQgbWFkZSBhbiBlbmQgb2YgY29tbWFuZGluZyBoaXMgc29ucywgaGUgZ2F0aGVyZWQgdXAgaGlzIGZlZXQgaW50byB0aGUgYmVkLCBhbmQgeWllbGRlZCB1cCB0aGUgZ2hvc3QsIGFuZCB3YXMgZ2F0aGVyZWQgdW50byBoaXMgcGVvcGxlLgpBbmQgSm9zZXBoIGZlbGwgdXBvbiBoaXMgZmF0aGVyJ3MgZmFjZSwgYW5kIHdlcHQgdXBvbiBoaW0sIGFuZCBraXNzZWQgaGltLgpBbmQgSm9zZXBoIGNvbW1hbmRlZCBoaXMgc2VydmFudHMgdGhlIHBoeXNpY2lhbnMgdG8gZW1iYWxtIGhpcyBmYXRoZXI6IGFuZCB0aGUgcGh5c2ljaWFucyBlbWJhbG1lZCBJc3JhZWwuCkFuZCBmb3J0eSBkYXlzIHdlcmUgZnVsZmlsbGVkIGZvciBoaW07IGZvciBzbyBhcmUgZnVsZmlsbGVkIHRoZSBkYXlzIG9mIHRob3NlIHdoaWNoIGFyZSBlbWJhbG1lZDogYW5kIHRoZSBFZ3lwdGlhbnMgbW91cm5lZCBmb3IgaGltIHRocmVlc2NvcmUgYW5kIHRlbiBkYXlzLgpBbmQgd2hlbiB0aGUgZGF5cyBvZiBoaXMgbW91cm5pbmcgd2VyZSBwYXN0LCBKb3NlcGggc3Bha2UgdW50byB0aGUgaG91c2Ugb2YgUGhhcmFvaCwgc2F5aW5nLCBJZiBub3cgSSBoYXZlIGZvdW5kIGdyYWNlIGluIHlvdXIgZXllcywgc3BlYWssIEkgcHJheSB5b3UsIGluIHRoZSBlYXJzIG9mIFBoYXJhb2gsIHNheWluZywKTXkgZmF0aGVyIG1hZGUgbWUgc3dlYXIsIHNheWluZywgTG8sIEkgZGllOiBpbiBteSBncmF2ZSB3aGljaCBJIGhhdmUgZGlnZ2VkIGZvciBtZSBpbiB0aGUgbGFuZCBvZiBDYW5hYW4sIHRoZXJlIHNoYWx0IHRob3UgYnVyeSBtZS4gTm93IHRoZXJlZm9yZSBsZXQgbWUgZ28gdXAsIEkgcHJheSB0aGVlLCBhbmQgYnVyeSBteSBmYXRoZXIsIGFuZCBJIHdpbGwgY29tZSBhZ2Fpbi4KQW5kIFBoYXJhb2ggc2FpZCwgR28gdXAsIGFuZCBidXJ5IHRoeSBmYXRoZXIsIGFjY29yZGluZyBhcyBoZSBtYWRlIHRoZWUgc3dlYXIuCkFuZCBKb3NlcGggd2VudCB1cCB0byBidXJ5IGhpcyBmYXRoZXI6IGFuZCB3aXRoIGhpbSB3ZW50IHVwIGFsbCB0aGUgc2VydmFudHMgb2YgUGhhcmFvaCwgdGhlIGVsZGVycyBvZiBoaXMgaG91c2UsIGFuZCBhbGwgdGhlIGVsZGVycyBvZiB0aGUgbGFuZCBvZiBFZ3lwdCwKQW5kIGFsbCB0aGUgaG91c2Ugb2YgSm9zZXBoLCBhbmQgaGlzIGJyZXRocmVuLCBhbmQgaGlzIGZhdGhlcidzIGhvdXNlOiBvbmx5IHRoZWlyIGxpdHRsZSBvbmVzLCBhbmQgdGhlaXIgZmxvY2tzLCBhbmQgdGhlaXIgaGVyZHMsIHRoZXkgbGVmdCBpbiB0aGUgbGFuZCBvZiBHb3NoZW4uCkFuZCB0aGVyZSB3ZW50IHVwIHdpdGggaGltIGJvdGggY2hhcmlvdHMgYW5kIGhvcnNlbWVuOiBhbmQgaXQgd2FzIGEgdmVyeSBncmVhdCBjb21wYW55LgpBbmQgdGhleSBjYW1lIHRvIHRoZSB0aHJlc2hpbmdmbG9vciBvZiBBdGFkLCB3aGljaCBpcyBiZXlvbmQgSm9yZGFuLCBhbmQgdGhlcmUgdGhleSBtb3VybmVkIHdpdGggYSBncmVhdCBhbmQgdmVyeSBzb3JlIGxhbWVudGF0aW9uOiBhbmQgaGUgbWFkZSBhIG1vdXJuaW5nIGZvciBoaXMgZmF0aGVyIHNldmVuIGRheXMuCkFuZCB3aGVuIHRoZSBpbmhhYml0YW50cyBvZiB0aGUgbGFuZCwgdGhlIENhbmFhbml0ZXMsIHNhdyB0aGUgbW91cm5pbmcgaW4gdGhlIGZsb29yIG9mIEF0YWQsIHRoZXkgc2FpZCwgVGhpcyBpcyBhIGdyaWV2b3VzIG1vdXJuaW5nIHRvIHRoZSBFZ3lwdGlhbnM6IHdoZXJlZm9yZSB0aGUgbmFtZSBvZiBpdCB3YXMgY2FsbGVkIEFiZWxtaXpyYWltLCB3aGljaCBpcyBiZXlvbmQgSm9yZGFuLgpBbmQgaGlzIHNvbnMgZGlkIHVudG8gaGltIGFjY29yZGluZyBhcyBoZSBjb21tYW5kZWQgdGhlbToKRm9yIGhpcyBzb25zIGNhcnJpZWQgaGltIGludG8gdGhlIGxhbmQgb2YgQ2FuYWFuLCBhbmQgYnVyaWVkIGhpbSBpbiB0aGUgY2F2ZSBvZiB0aGUgZmllbGQgb2YgTWFjaHBlbGFoLCB3aGljaCBBYnJhaGFtIGJvdWdodCB3aXRoIHRoZSBmaWVsZCBmb3IgYSBwb3NzZXNzaW9uIG9mIGEgYnVyeWluZ3BsYWNlIG9mIEVwaHJvbiB0aGUgSGl0dGl0ZSwgYmVmb3JlIE1hbXJlLgpBbmQgSm9zZXBoIHJldHVybmVkIGludG8gRWd5cHQsIGhlLCBhbmQgaGlzIGJyZXRocmVuLCBhbmQgYWxsIHRoYXQgd2VudCB1cCB3aXRoIGhpbSB0byBidXJ5IGhpcyBmYXRoZXIsIGFmdGVyIGhlIGhhZCBidXJpZWQgaGlzIGZhdGhlci4KQW5kIHdoZW4gSm9zZXBoJ3MgYnJldGhyZW4gc2F3IHRoYXQgdGhlaXIgZmF0aGVyIHdhcyBkZWFkLCB0aGV5IHNhaWQsIEpvc2VwaCB3aWxsIHBlcmFkdmVudHVyZSBoYXRlIHVzLCBhbmQgd2lsbCBjZXJ0YWlubHkgcmVxdWl0ZSB1cyBhbGwgdGhlIGV2aWwgd2hpY2ggd2UgZGlkIHVudG8gaGltLgpBbmQgdGhleSBzZW50IGEgbWVzc2VuZ2VyIHVudG8gSm9zZXBoLCBzYXlpbmcsIFRoeSBmYXRoZXIgZGlkIGNvbW1hbmQgYmVmb3JlIGhlIGRpZWQsIHNheWluZywKU28gc2hhbGwgeWUgc2F5IHVudG8gSm9zZXBoLCBGb3JnaXZlLCBJIHByYXkgdGhlZSBub3csIHRoZSB0cmVzcGFzcyBvZiB0aHkgYnJldGhyZW4sIGFuZCB0aGVpciBzaW47IGZvciB0aGV5IGRpZCB1bnRvIHRoZWUgZXZpbDogYW5kIG5vdywgd2UgcHJheSB0aGVlLCBmb3JnaXZlIHRoZSB0cmVzcGFzcyBvZiB0aGUgc2VydmFudHMgb2YgdGhlIEdvZCBvZiB0aHkgZmF0aGVyLiBBbmQgSm9zZXBoIHdlcHQgd2hlbiB0aGV5IHNwYWtlIHVudG8gaGltLgpBbmQgaGlzIGJyZXRocmVuIGFsc28gd2VudCBhbmQgZmVsbCBkb3duIGJlZm9yZSBoaXMgZmFjZTsgYW5kIHRoZXkgc2FpZCwgQmVob2xkLCB3ZSBiZSB0aHkgc2VydmFudHMuCkFuZCBKb3NlcGggc2FpZCB1bnRvIHRoZW0sIEZlYXIgbm90OiBmb3IgYW0gSSBpbiB0aGUgcGxhY2Ugb2YgR29kPwpCdXQgYXMgZm9yIHlvdSwgeWUgdGhvdWdodCBldmlsIGFnYWluc3QgbWU7IGJ1dCBHb2QgbWVhbnQgaXQgdW50byBnb29kLCB0byBicmluZyB0byBwYXNzLCBhcyBpdCBpcyB0aGlzIGRheSwgdG8gc2F2ZSBtdWNoIHBlb3BsZSBhbGl2ZS4KTm93IHRoZXJlZm9yZSBmZWFyIHllIG5vdDogSSB3aWxsIG5vdXJpc2ggeW91LCBhbmQgeW91ciBsaXR0bGUgb25lcy4gQW5kIGhlIGNvbWZvcnRlZCB0aGVtLCBhbmQgc3Bha2Uga2luZGx5IHVudG8gdGhlbS4KQW5kIEpvc2VwaCBkd2VsdCBpbiBFZ3lwdCwgaGUsIGFuZCBoaXMgZmF0aGVyJ3MgaG91c2U6IGFuZCBKb3NlcGggbGl2ZWQgYW4gaHVuZHJlZCBhbmQgdGVuIHllYXJzLgpBbmQgSm9zZXBoIHNhdyBFcGhyYWltJ3MgY2hpbGRyZW4gb2YgdGhlIHRoaXJkIGdlbmVyYXRpb246IHRoZSBjaGlsZHJlbiBhbHNvIG9mIE1hY2hpciB0aGUgc29uIG9mIE1hbmFzc2VoIHdlcmUgYnJvdWdodCB1cCB1cG9uIEpvc2VwaCdzIGtuZWVzLgpBbmQgSm9zZXBoIHNhaWQgdW50byBoaXMgYnJldGhyZW4sIEkgZGllOiBhbmQgR29kIHdpbGwgc3VyZWx5IHZpc2l0IHlvdSwgYW5kIGJyaW5nIHlvdSBvdXQgb2YgdGhpcyBsYW5kIHVudG8gdGhlIGxhbmQgd2hpY2ggaGUgc3dhcmUgdG8gQWJyYWhhbSwgdG8gSXNhYWMsIGFuZCB0byBKYWNvYi4KQW5kIEpvc2VwaCB0b29rIGFuIG9hdGggb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgc2F5aW5nLCBHb2Qgd2lsbCBzdXJlbHkgdmlzaXQgeW91LCBhbmQgeWUgc2hhbGwgY2FycnkgdXAgbXkgYm9uZXMgZnJvbSBoZW5jZS4KU28gSm9zZXBoIGRpZWQsIGJlaW5nIGFuIGh1bmRyZWQgYW5kIHRlbiB5ZWFycyBvbGQ6IGFuZCB0aGV5IGVtYmFsbWVkIGhpbSwgYW5kIGhlIHdhcyBwdXQgaW4gYSBjb2ZmaW4gaW4gRWd5cHQuCk5vdyB0aGVzZSBhcmUgdGhlIG5hbWVzIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIHdoaWNoIGNhbWUgaW50byBFZ3lwdDsgZXZlcnkgbWFuIGFuZCBoaXMgaG91c2Vob2xkIGNhbWUgd2l0aCBKYWNvYi4KUmV1YmVuLCBTaW1lb24sIExldmksIGFuZCBKdWRhaCwKSXNzYWNoYXIsIFplYnVsdW4sIGFuZCBCZW5qYW1pbiwKRGFuLCBhbmQgTmFwaHRhbGksIEdhZCwgYW5kIEFzaGVyLgpBbmQgYWxsIHRoZSBzb3VscyB0aGF0IGNhbWUgb3V0IG9mIHRoZSBsb2lucyBvZiBKYWNvYiB3ZXJlIHNldmVudHkgc291bHM6IGZvciBKb3NlcGggd2FzIGluIEVneXB0IGFscmVhZHkuCkFuZCBKb3NlcGggZGllZCwgYW5kIGFsbCBoaXMgYnJldGhyZW4sIGFuZCBhbGwgdGhhdCBnZW5lcmF0aW9uLgpBbmQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCB3ZXJlIGZydWl0ZnVsLCBhbmQgaW5jcmVhc2VkIGFidW5kYW50bHksIGFuZCBtdWx0aXBsaWVkLCBhbmQgd2F4ZWQgZXhjZWVkaW5nIG1pZ2h0eTsgYW5kIHRoZSBsYW5kIHdhcyBmaWxsZWQgd2l0aCB0aGVtLgpOb3cgdGhlcmUgYXJvc2UgdXAgYSBuZXcga2luZyBvdmVyIEVneXB0LCB3aGljaCBrbmV3IG5vdCBKb3NlcGguCkFuZCBoZSBzYWlkIHVudG8gaGlzIHBlb3BsZSwgQmVob2xkLCB0aGUgcGVvcGxlIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgYXJlIG1vcmUgYW5kIG1pZ2h0aWVyIHRoYW4gd2U6CkNvbWUgb24sIGxldCB1cyBkZWFsIHdpc2VseSB3aXRoIHRoZW07IGxlc3QgdGhleSBtdWx0aXBseSwgYW5kIGl0IGNvbWUgdG8gcGFzcywgdGhhdCwgd2hlbiB0aGVyZSBmYWxsZXRoIG91dCBhbnkgd2FyLCB0aGV5IGpvaW4gYWxzbyB1bnRvIG91ciBlbmVtaWVzLCBhbmQgZmlnaHQgYWdhaW5zdCB1cywgYW5kIHNvIGdldCB0aGVtIHVwIG91dCBvZiB0aGUgbGFuZC4KVGhlcmVmb3JlIHRoZXkgZGlkIHNldCBvdmVyIHRoZW0gdGFza21hc3RlcnMgdG8gYWZmbGljdCB0aGVtIHdpdGggdGhlaXIgYnVyZGVucy4gQW5kIHRoZXkgYnVpbHQgZm9yIFBoYXJhb2ggdHJlYXN1cmUgY2l0aWVzLCBQaXRob20gYW5kIFJhYW1zZXMuCkJ1dCB0aGUgbW9yZSB0aGV5IGFmZmxpY3RlZCB0aGVtLCB0aGUgbW9yZSB0aGV5IG11bHRpcGxpZWQgYW5kIGdyZXcuIEFuZCB0aGV5IHdlcmUgZ3JpZXZlZCBiZWNhdXNlIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwuCkFuZCB0aGUgRWd5cHRpYW5zIG1hZGUgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCB0byBzZXJ2ZSB3aXRoIHJpZ291cjoKQW5kIHRoZXkgbWFkZSB0aGVpciBsaXZlcyBiaXR0ZXIgd2l0aCBoYXJkIGJvbmRhZ2UsIGluIG1vcnRlciwgYW5kIGluIGJyaWNrLCBhbmQgaW4gYWxsIG1hbm5lciBvZiBzZXJ2aWNlIGluIHRoZSBmaWVsZDogYWxsIHRoZWlyIHNlcnZpY2UsIHdoZXJlaW4gdGhleSBtYWRlIHRoZW0gc2VydmUsIHdhcyB3aXRoIHJpZ291ci4KQW5kIHRoZSBraW5nIG9mIEVneXB0IHNwYWtlIHRvIHRoZSBIZWJyZXcgbWlkd2l2ZXMsIG9mIHdoaWNoIHRoZSBuYW1lIG9mIHRoZSBvbmUgd2FzIFNoaXBocmFoLCBhbmQgdGhlIG5hbWUgb2YgdGhlIG90aGVyIFB1YWg6CkFuZCBoZSBzYWlkLCBXaGVuIHllIGRvIHRoZSBvZmZpY2Ugb2YgYSBtaWR3aWZlIHRvIHRoZSBIZWJyZXcgd29tZW4sIGFuZCBzZWUgdGhlbSB1cG9uIHRoZSBzdG9vbHM7IGlmIGl0IGJlIGEgc29uLCB0aGVuIHllIHNoYWxsIGtpbGwgaGltOiBidXQgaWYgaXQgYmUgYSBkYXVnaHRlciwgdGhlbiBzaGUgc2hhbGwgbGl2ZS4KQnV0IHRoZSBtaWR3aXZlcyBmZWFyZWQgR29kLCBhbmQgZGlkIG5vdCBhcyB0aGUga2luZyBvZiBFZ3lwdCBjb21tYW5kZWQgdGhlbSwgYnV0IHNhdmVkIHRoZSBtZW4gY2hpbGRyZW4gYWxpdmUuCkFuZCB0aGUga2luZyBvZiBFZ3lwdCBjYWxsZWQgZm9yIHRoZSBtaWR3aXZlcywgYW5kIHNhaWQgdW50byB0aGVtLCBXaHkgaGF2ZSB5ZSBkb25lIHRoaXMgdGhpbmcsIGFuZCBoYXZlIHNhdmVkIHRoZSBtZW4gY2hpbGRyZW4gYWxpdmU/CkFuZCB0aGUgbWlkd2l2ZXMgc2FpZCB1bnRvIFBoYXJhb2gsIEJlY2F1c2UgdGhlIEhlYnJldyB3b21lbiBhcmUgbm90IGFzIHRoZSBFZ3lwdGlhbiB3b21lbjsgZm9yIHRoZXkgYXJlIGxpdmVseSwgYW5kIGFyZSBkZWxpdmVyZWQgZXJlIHRoZSBtaWR3aXZlcyBjb21lIGluIHVudG8gdGhlbS4KVGhlcmVmb3JlIEdvZCBkZWFsdCB3ZWxsIHdpdGggdGhlIG1pZHdpdmVzOiBhbmQgdGhlIHBlb3BsZSBtdWx0aXBsaWVkLCBhbmQgd2F4ZWQgdmVyeSBtaWdodHkuCkFuZCBpdCBjYW1lIHRvIHBhc3MsIGJlY2F1c2UgdGhlIG1pZHdpdmVzIGZlYXJlZCBHb2QsIHRoYXQgaGUgbWFkZSB0aGVtIGhvdXNlcy4KQW5kIFBoYXJhb2ggY2hhcmdlZCBhbGwgaGlzIHBlb3BsZSwgc2F5aW5nLCBFdmVyeSBzb24gdGhhdCBpcyBib3JuIHllIHNoYWxsIGNhc3QgaW50byB0aGUgcml2ZXIsIGFuZCBldmVyeSBkYXVnaHRlciB5ZSBzaGFsbCBzYXZlIGFsaXZlLgpBbmQgdGhlcmUgd2VudCBhIG1hbiBvZiB0aGUgaG91c2Ugb2YgTGV2aSwgYW5kIHRvb2sgdG8gd2lmZSBhIGRhdWdodGVyIG9mIExldmkuCkFuZCB0aGUgd29tYW4gY29uY2VpdmVkLCBhbmQgYmFyZSBhIHNvbjogYW5kIHdoZW4gc2hlIHNhdyBoaW0gdGhhdCBoZSB3YXMgYSBnb29kbHkgY2hpbGQsIHNoZSBoaWQgaGltIHRocmVlIG1vbnRocy4KQW5kIHdoZW4gc2hlIGNvdWxkIG5vdCBsb25nZXIgaGlkZSBoaW0sIHNoZSB0b29rIGZvciBoaW0gYW4gYXJrIG9mIGJ1bHJ1c2hlcywgYW5kIGRhdWJlZCBpdCB3aXRoIHNsaW1lIGFuZCB3aXRoIHBpdGNoLCBhbmQgcHV0IHRoZSBjaGlsZCB0aGVyZWluOyBhbmQgc2hlIGxhaWQgaXQgaW4gdGhlIGZsYWdzIGJ5IHRoZSByaXZlcidzIGJyaW5rLgpBbmQgaGlzIHNpc3RlciBzdG9vZCBhZmFyIG9mZiwgdG8gd2l0IHdoYXQgd291bGQgYmUgZG9uZSB0byBoaW0uCkFuZCB0aGUgZGF1Z2h0ZXIgb2YgUGhhcmFvaCBjYW1lIGRvd24gdG8gd2FzaCBoZXJzZWxmIGF0IHRoZSByaXZlcjsgYW5kIGhlciBtYWlkZW5zIHdhbGtlZCBhbG9uZyBieSB0aGUgcml2ZXIncyBzaWRlOyBhbmQgd2hlbiBzaGUgc2F3IHRoZSBhcmsgYW1vbmcgdGhlIGZsYWdzLCBzaGUgc2VudCBoZXIgbWFpZCB0byBmZXRjaCBpdC4KQW5kIHdoZW4gc2hlIGhhZCBvcGVuZWQgaXQsIHNoZSBzYXcgdGhlIGNoaWxkOiBhbmQsIGJlaG9sZCwgdGhlIGJhYmUgd2VwdC4gQW5kIHNoZSBoYWQgY29tcGFzc2lvbiBvbiBoaW0sIGFuZCBzYWlkLCBUaGlzIGlzIG9uZSBvZiB0aGUgSGVicmV3cycgY2hpbGRyZW4uClRoZW4gc2FpZCBoaXMgc2lzdGVyIHRvIFBoYXJhb2gncyBkYXVnaHRlciwgU2hhbGwgSSBnbyBhbmQgY2FsbCB0byB0aGVlIGEgbnVyc2Ugb2YgdGhlIEhlYnJldyB3b21lbiwgdGhhdCBzaGUgbWF5IG51cnNlIHRoZSBjaGlsZCBmb3IgdGhlZT8KQW5kIFBoYXJhb2gncyBkYXVnaHRlciBzYWlkIHRvIGhlciwgR28uIEFuZCB0aGUgbWFpZCB3ZW50IGFuZCBjYWxsZWQgdGhlIGNoaWxkJ3MgbW90aGVyLgpBbmQgUGhhcmFvaCdzIGRhdWdodGVyIHNhaWQgdW50byBoZXIsIFRha2UgdGhpcyBjaGlsZCBhd2F5LCBhbmQgbnVyc2UgaXQgZm9yIG1lLCBhbmQgSSB3aWxsIGdpdmUgdGhlZSB0aHkgd2FnZXMuIEFuZCB0aGUgd29tZW4gdG9vayB0aGUgY2hpbGQsIGFuZCBudXJzZWQgaXQuCkFuZCB0aGUgY2hpbGQgZ3JldywgYW5kIHNoZSBicm91Z2h0IGhpbSB1bnRvIFBoYXJhb2gncyBkYXVnaHRlciwgYW5kIGhlIGJlY2FtZSBoZXIgc29uLiBBbmQgc2hlIGNhbGxlZCBoaXMgbmFtZSBNb3NlczogYW5kIHNoZSBzYWlkLCBCZWNhdXNlIEkgZHJldyBoaW0gb3V0IG9mIHRoZSB3YXRlci4KQW5kIGl0IGNhbWUgdG8gcGFzcyBpbiB0aG9zZSBkYXlzLCB3aGVuIE1vc2VzIHdhcyBncm93biwgdGhhdCBoZSB3ZW50IG91dCB1bnRvIGhpcyBicmV0aHJlbiwgYW5kIGxvb2tlZCBvbiB0aGVpciBidXJkZW5zOiBhbmQgaGUgc3BpZWQgYW4gRWd5cHRpYW4gc21pdGluZyBhbiBIZWJyZXcsIG9uZSBvZiBoaXMgYnJldGhyZW4uCkFuZCBoZSBsb29rZWQgdGhpcyB3YXkgYW5kIHRoYXQgd2F5LCBhbmQgd2hlbiBoZSBzYXcgdGhhdCB0aGVyZSB3YXMgbm8gbWFuLCBoZSBzbGV3IHRoZSBFZ3lwdGlhbiwgYW5kIGhpZCBoaW0gaW4gdGhlIHNhbmQuCkFuZCB3aGVuIGhlIHdlbnQgb3V0IHRoZSBzZWNvbmQgZGF5LCBiZWhvbGQsIHR3byBtZW4gb2YgdGhlIEhlYnJld3Mgc3Ryb3ZlIHRvZ2V0aGVyOiBhbmQgaGUgc2FpZCB0byBoaW0gdGhhdCBkaWQgdGhlIHdyb25nLCBXaGVyZWZvcmUgc21pdGVzdCB0aG91IHRoeSBmZWxsb3c/CkFuZCBoZSBzYWlkLCBXaG8gbWFkZSB0aGVlIGEgcHJpbmNlIGFuZCBhIGp1ZGdlIG92ZXIgdXM/IGludGVuZGVzdCB0aG91IHRvIGtpbGwgbWUsIGFzIHRob3Uga2lsbGVkc3QgdGhlIEVneXB0aWFuPyBBbmQgTW9zZXMgZmVhcmVkLCBhbmQgc2FpZCwgU3VyZWx5IHRoaXMgdGhpbmcgaXMga25vd24uCk5vdyB3aGVuIFBoYXJhb2ggaGVhcmQgdGhpcyB0aGluZywgaGUgc291Z2h0IHRvIHNsYXkgTW9zZXMuIEJ1dCBNb3NlcyBmbGVkIGZyb20gdGhlIGZhY2Ugb2YgUGhhcmFvaCwgYW5kIGR3ZWx0IGluIHRoZSBsYW5kIG9mIE1pZGlhbjogYW5kIGhlIHNhdCBkb3duIGJ5IGEgd2VsbC4KTm93IHRoZSBwcmllc3Qgb2YgTWlkaWFuIGhhZCBzZXZlbiBkYXVnaHRlcnM6IGFuZCB0aGV5IGNhbWUgYW5kIGRyZXcgd2F0ZXIsIGFuZCBmaWxsZWQgdGhlIHRyb3VnaHMgdG8gd2F0ZXIgdGhlaXIgZmF0aGVyJ3MgZmxvY2suCkFuZCB0aGUgc2hlcGhlcmRzIGNhbWUgYW5kIGRyb3ZlIHRoZW0gYXdheTogYnV0IE1vc2VzIHN0b29kIHVwIGFuZCBoZWxwZWQgdGhlbSwgYW5kIHdhdGVyZWQgdGhlaXIgZmxvY2suCkFuZCB3aGVuIHRoZXkgY2FtZSB0byBSZXVlbCB0aGVpciBmYXRoZXIsIGhlIHNhaWQsIEhvdyBpcyBpdCB0aGF0IHllIGFyZSBjb21lIHNvIHNvb24gdG8gZGF5PwpBbmQgdGhleSBzYWlkLCBBbiBFZ3lwdGlhbiBkZWxpdmVyZWQgdXMgb3V0IG9mIHRoZSBoYW5kIG9mIHRoZSBzaGVwaGVyZHMsIGFuZCBhbHNvIGRyZXcgd2F0ZXIgZW5vdWdoIGZvciB1cywgYW5kIHdhdGVyZWQgdGhlIGZsb2NrLgpBbmQgaGUgc2FpZCB1bnRvIGhpcyBkYXVnaHRlcnMsIEFuZCB3aGVyZSBpcyBoZT8gd2h5IGlzIGl0IHRoYXQgeWUgaGF2ZSBsZWZ0IHRoZSBtYW4/IGNhbGwgaGltLCB0aGF0IGhlIG1heSBlYXQgYnJlYWQuCkFuZCBNb3NlcyB3YXMgY29udGVudCB0byBkd2VsbCB3aXRoIHRoZSBtYW46IGFuZCBoZSBnYXZlIE1vc2VzIFppcHBvcmFoIGhpcyBkYXVnaHRlci4KQW5kIHNoZSBiYXJlIGhpbSBhIHNvbiwgYW5kIGhlIGNhbGxlZCBoaXMgbmFtZSBHZXJzaG9tOiBmb3IgaGUgc2FpZCwgSSBoYXZlIGJlZW4gYSBzdHJhbmdlciBpbiBhIHN0cmFuZ2UgbGFuZC4KQW5kIGl0IGNhbWUgdG8gcGFzcyBpbiBwcm9jZXNzIG9mIHRpbWUsIHRoYXQgdGhlIGtpbmcgb2YgRWd5cHQgZGllZDogYW5kIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgc2lnaGVkIGJ5IHJlYXNvbiBvZiB0aGUgYm9uZGFnZSwgYW5kIHRoZXkgY3JpZWQsIGFuZCB0aGVpciBjcnkgY2FtZSB1cCB1bnRvIEdvZCBieSByZWFzb24gb2YgdGhlIGJvbmRhZ2UuCkFuZCBHb2QgaGVhcmQgdGhlaXIgZ3JvYW5pbmcsIGFuZCBHb2QgcmVtZW1iZXJlZCBoaXMgY292ZW5hbnQgd2l0aCBBYnJhaGFtLCB3aXRoIElzYWFjLCBhbmQgd2l0aCBKYWNvYi4KQW5kIEdvZCBsb29rZWQgdXBvbiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLCBhbmQgR29kIGhhZCByZXNwZWN0IHVudG8gdGhlbS4KTm93IE1vc2VzIGtlcHQgdGhlIGZsb2NrIG9mIEpldGhybyBoaXMgZmF0aGVyIGluIGxhdywgdGhlIHByaWVzdCBvZiBNaWRpYW46IGFuZCBoZSBsZWQgdGhlIGZsb2NrIHRvIHRoZSBiYWNrc2lkZSBvZiB0aGUgZGVzZXJ0LCBhbmQgY2FtZSB0byB0aGUgbW91bnRhaW4gb2YgR29kLCBldmVuIHRvIEhvcmViLgpBbmQgdGhlIGFuZ2VsIG9mIHRoZSBMT1JEIGFwcGVhcmVkIHVudG8gaGltIGluIGEgZmxhbWUgb2YgZmlyZSBvdXQgb2YgdGhlIG1pZHN0IG9mIGEgYnVzaDogYW5kIGhlIGxvb2tlZCwgYW5kLCBiZWhvbGQsIHRoZSBidXNoIGJ1cm5lZCB3aXRoIGZpcmUsIGFuZCB0aGUgYnVzaCB3YXMgbm90IGNvbnN1bWVkLgpBbmQgTW9zZXMgc2FpZCwgSSB3aWxsIG5vdyB0dXJuIGFzaWRlLCBhbmQgc2VlIHRoaXMgZ3JlYXQgc2lnaHQsIHdoeSB0aGUgYnVzaCBpcyBub3QgYnVybnQuCkFuZCB3aGVuIHRoZSBMT1JEIHNhdyB0aGF0IGhlIHR1cm5lZCBhc2lkZSB0byBzZWUsIEdvZCBjYWxsZWQgdW50byBoaW0gb3V0IG9mIHRoZSBtaWRzdCBvZiB0aGUgYnVzaCwgYW5kIHNhaWQsIE1vc2VzLCBNb3Nlcy4gQW5kIGhlIHNhaWQsIEhlcmUgYW0gSS4KQW5kIGhlIHNhaWQsIERyYXcgbm90IG5pZ2ggaGl0aGVyOiBwdXQgb2ZmIHRoeSBzaG9lcyBmcm9tIG9mZiB0aHkgZmVldCwgZm9yIHRoZSBwbGFjZSB3aGVyZW9uIHRob3Ugc3RhbmRlc3QgaXMgaG9seSBncm91bmQuCk1vcmVvdmVyIGhlIHNhaWQsIEkgYW0gdGhlIEdvZCBvZiB0aHkgZmF0aGVyLCB0aGUgR29kIG9mIEFicmFoYW0sIHRoZSBHb2Qgb2YgSXNhYWMsIGFuZCB0aGUgR29kIG9mIEphY29iLiBBbmQgTW9zZXMgaGlkIGhpcyBmYWNlOyBmb3IgaGUgd2FzIGFmcmFpZCB0byBsb29rIHVwb24gR29kLgpBbmQgdGhlIExPUkQgc2FpZCwgSSBoYXZlIHN1cmVseSBzZWVuIHRoZSBhZmZsaWN0aW9uIG9mIG15IHBlb3BsZSB3aGljaCBhcmUgaW4gRWd5cHQsIGFuZCBoYXZlIGhlYXJkIHRoZWlyIGNyeSBieSByZWFzb24gb2YgdGhlaXIgdGFza21hc3RlcnM7IGZvciBJIGtub3cgdGhlaXIgc29ycm93czsKQW5kIEkgYW0gY29tZSBkb3duIHRvIGRlbGl2ZXIgdGhlbSBvdXQgb2YgdGhlIGhhbmQgb2YgdGhlIEVneXB0aWFucywgYW5kIHRvIGJyaW5nIHRoZW0gdXAgb3V0IG9mIHRoYXQgbGFuZCB1bnRvIGEgZ29vZCBsYW5kIGFuZCBhIGxhcmdlLCB1bnRvIGEgbGFuZCBmbG93aW5nIHdpdGggbWlsayBhbmQgaG9uZXk7IHVudG8gdGhlIHBsYWNlIG9mIHRoZSBDYW5hYW5pdGVzLCBhbmQgdGhlIEhpdHRpdGVzLCBhbmQgdGhlIEFtb3JpdGVzLCBhbmQgdGhlIFBlcml6eml0ZXMsIGFuZCB0aGUgSGl2aXRlcywgYW5kIHRoZSBKZWJ1c2l0ZXMuCk5vdyB0aGVyZWZvcmUsIGJlaG9sZCwgdGhlIGNyeSBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGlzIGNvbWUgdW50byBtZTogYW5kIEkgaGF2ZSBhbHNvIHNlZW4gdGhlIG9wcHJlc3Npb24gd2hlcmV3aXRoIHRoZSBFZ3lwdGlhbnMgb3BwcmVzcyB0aGVtLgpDb21lIG5vdyB0aGVyZWZvcmUsIGFuZCBJIHdpbGwgc2VuZCB0aGVlIHVudG8gUGhhcmFvaCwgdGhhdCB0aG91IG1heWVzdCBicmluZyBmb3J0aCBteSBwZW9wbGUgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBvdXQgb2YgRWd5cHQuCkFuZCBNb3NlcyBzYWlkIHVudG8gR29kLCBXaG8gYW0gSSwgdGhhdCBJIHNob3VsZCBnbyB1bnRvIFBoYXJhb2gsIGFuZCB0aGF0IEkgc2hvdWxkIGJyaW5nIGZvcnRoIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgb3V0IG9mIEVneXB0PwpBbmQgaGUgc2FpZCwgQ2VydGFpbmx5IEkgd2lsbCBiZSB3aXRoIHRoZWU7IGFuZCB0aGlzIHNoYWxsIGJlIGEgdG9rZW4gdW50byB0aGVlLCB0aGF0IEkgaGF2ZSBzZW50IHRoZWU6IFdoZW4gdGhvdSBoYXN0IGJyb3VnaHQgZm9ydGggdGhlIHBlb3BsZSBvdXQgb2YgRWd5cHQsIHllIHNoYWxsIHNlcnZlIEdvZCB1cG9uIHRoaXMgbW91bnRhaW4uCkFuZCBNb3NlcyBzYWlkIHVudG8gR29kLCBCZWhvbGQsIHdoZW4gSSBjb21lIHVudG8gdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgYW5kIHNoYWxsIHNheSB1bnRvIHRoZW0sIFRoZSBHb2Qgb2YgeW91ciBmYXRoZXJzIGhhdGggc2VudCBtZSB1bnRvIHlvdTsgYW5kIHRoZXkgc2hhbGwgc2F5IHRvIG1lLCBXaGF0IGlzIGhpcyBuYW1lPyB3aGF0IHNoYWxsIEkgc2F5IHVudG8gdGhlbT8KQW5kIEdvZCBzYWlkIHVudG8gTW9zZXMsIEkgQU0gVEhBVCBJIEFNOiBhbmQgaGUgc2FpZCwgVGh1cyBzaGFsdCB0aG91IHNheSB1bnRvIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIEkgQU0gaGF0aCBzZW50IG1lIHVudG8geW91LgpBbmQgR29kIHNhaWQgbW9yZW92ZXIgdW50byBNb3NlcywgVGh1cyBzaGFsdCB0aG91IHNheSB1bnRvIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIHRoZSBMT1JEIEdvZCBvZiB5b3VyIGZhdGhlcnMsIHRoZSBHb2Qgb2YgQWJyYWhhbSwgdGhlIEdvZCBvZiBJc2FhYywgYW5kIHRoZSBHb2Qgb2YgSmFjb2IsIGhhdGggc2VudCBtZSB1bnRvIHlvdTogdGhpcyBpcyBteSBuYW1lIGZvciBldmVyLCBhbmQgdGhpcyBpcyBteSBtZW1vcmlhbCB1bnRvIGFsbCBnZW5lcmF0aW9ucy4KR28sIGFuZCBnYXRoZXIgdGhlIGVsZGVycyBvZiBJc3JhZWwgdG9nZXRoZXIsIGFuZCBzYXkgdW50byB0aGVtLCBUaGUgTE9SRCBHb2Qgb2YgeW91ciBmYXRoZXJzLCB0aGUgR29kIG9mIEFicmFoYW0sIG9mIElzYWFjLCBhbmQgb2YgSmFjb2IsIGFwcGVhcmVkIHVudG8gbWUsIHNheWluZywgSSBoYXZlIHN1cmVseSB2aXNpdGVkIHlvdSwgYW5kIHNlZW4gdGhhdCB3aGljaCBpcyBkb25lIHRvIHlvdSBpbiBFZ3lwdDoKQW5kIEkgaGF2ZSBzYWlkLCBJIHdpbGwgYnJpbmcgeW91IHVwIG91dCBvZiB0aGUgYWZmbGljdGlvbiBvZiBFZ3lwdCB1bnRvIHRoZSBsYW5kIG9mIHRoZSBDYW5hYW5pdGVzLCBhbmQgdGhlIEhpdHRpdGVzLCBhbmQgdGhlIEFtb3JpdGVzLCBhbmQgdGhlIFBlcml6eml0ZXMsIGFuZCB0aGUgSGl2aXRlcywgYW5kIHRoZSBKZWJ1c2l0ZXMsIHVudG8gYSBsYW5kIGZsb3dpbmcgd2l0aCBtaWxrIGFuZCBob25leS4KQW5kIHRoZXkgc2hhbGwgaGVhcmtlbiB0byB0aHkgdm9pY2U6IGFuZCB0aG91IHNoYWx0IGNvbWUsIHRob3UgYW5kIHRoZSBlbGRlcnMgb2YgSXNyYWVsLCB1bnRvIHRoZSBraW5nIG9mIEVneXB0LCBhbmQgeWUgc2hhbGwgc2F5IHVudG8gaGltLCBUaGUgTE9SRCBHb2Qgb2YgdGhlIEhlYnJld3MgaGF0aCBtZXQgd2l0aCB1czogYW5kIG5vdyBsZXQgdXMgZ28sIHdlIGJlc2VlY2ggdGhlZSwgdGhyZWUgZGF5cycgam91cm5leSBpbnRvIHRoZSB3aWxkZXJuZXNzLCB0aGF0IHdlIG1heSBzYWNyaWZpY2UgdG8gdGhlIExPUkQgb3VyIEdvZC4KQW5kIEkgYW0gc3VyZSB0aGF0IHRoZSBraW5nIG9mIEVneXB0IHdpbGwgbm90IGxldCB5b3UgZ28sIG5vLCBub3QgYnkgYSBtaWdodHkgaGFuZC4KQW5kIEkgd2lsbCBzdHJldGNoIG91dCBteSBoYW5kLCBhbmQgc21pdGUgRWd5cHQgd2l0aCBhbGwgbXkgd29uZGVycyB3aGljaCBJIHdpbGwgZG8gaW4gdGhlIG1pZHN0IHRoZXJlb2Y6IGFuZCBhZnRlciB0aGF0IGhlIHdpbGwgbGV0IHlvdSBnby4KQW5kIEkgd2lsbCBnaXZlIHRoaXMgcGVvcGxlIGZhdm91ciBpbiB0aGUgc2lnaHQgb2YgdGhlIEVneXB0aWFuczogYW5kIGl0IHNoYWxsIGNvbWUgdG8gcGFzcywgdGhhdCwgd2hlbiB5ZSBnbywgeWUgc2hhbGwgbm90IGdvIGVtcHR5LgpCdXQgZXZlcnkgd29tYW4gc2hhbGwgYm9ycm93IG9mIGhlciBuZWlnaGJvdXIsIGFuZCBvZiBoZXIgdGhhdCBzb2pvdXJuZXRoIGluIGhlciBob3VzZSwgamV3ZWxzIG9mIHNpbHZlciwgYW5kIGpld2VscyBvZiBnb2xkLCBhbmQgcmFpbWVudDogYW5kIHllIHNoYWxsIHB1dCB0aGVtIHVwb24geW91ciBzb25zLCBhbmQgdXBvbiB5b3VyIGRhdWdodGVyczsgYW5kIHllIHNoYWxsIHNwb2lsIHRoZSBFZ3lwdGlhbnMuCkFuZCBNb3NlcyBhbnN3ZXJlZCBhbmQgc2FpZCwgQnV0LCBiZWhvbGQsIHRoZXkgd2lsbCBub3QgYmVsaWV2ZSBtZSwgbm9yIGhlYXJrZW4gdW50byBteSB2b2ljZTogZm9yIHRoZXkgd2lsbCBzYXksIFRoZSBMT1JEIGhhdGggbm90IGFwcGVhcmVkIHVudG8gdGhlZS4KQW5kIHRoZSBMT1JEIHNhaWQgdW50byBoaW0sIFdoYXQgaXMgdGhhdCBpbiB0aGluZSBoYW5kPyBBbmQgaGUgc2FpZCwgQSByb2QuCkFuZCBoZSBzYWlkLCBDYXN0IGl0IG9uIHRoZSBncm91bmQuIEFuZCBoZSBjYXN0IGl0IG9uIHRoZSBncm91bmQsIGFuZCBpdCBiZWNhbWUgYSBzZXJwZW50OyBhbmQgTW9zZXMgZmxlZCBmcm9tIGJlZm9yZSBpdC4KQW5kIHRoZSBMT1JEIHNhaWQgdW50byBNb3NlcywgUHV0IGZvcnRoIHRoaW5lIGhhbmQsIGFuZCB0YWtlIGl0IGJ5IHRoZSB0YWlsLiBBbmQgaGUgcHV0IGZvcnRoIGhpcyBoYW5kLCBhbmQgY2F1Z2h0IGl0LCBhbmQgaXQgYmVjYW1lIGEgcm9kIGluIGhpcyBoYW5kOgpUaGF0IHRoZXkgbWF5IGJlbGlldmUgdGhhdCB0aGUgTE9SRCBHb2Qgb2YgdGhlaXIgZmF0aGVycywgdGhlIEdvZCBvZiBBYnJhaGFtLCB0aGUgR29kIG9mIElzYWFjLCBhbmQgdGhlIEdvZCBvZiBKYWNvYiwgaGF0aCBhcHBlYXJlZCB1bnRvIHRoZWUuCkFuZCB0aGUgTE9SRCBzYWlkIGZ1cnRoZXJtb3JlIHVudG8gaGltLCBQdXQgbm93IHRoaW5lIGhhbmQgaW50byB0aHkgYm9zb20uIEFuZCBoZSBwdXQgaGlzIGhhbmQgaW50byBoaXMgYm9zb206IGFuZCB3aGVuIGhlIHRvb2sgaXQgb3V0LCBiZWhvbGQsIGhpcyBoYW5kIHdhcyBsZXByb3VzIGFzIHNub3cuCkFuZCBoZSBzYWlkLCBQdXQgdGhpbmUgaGFuZCBpbnRvIHRoeSBib3NvbSBhZ2Fpbi4gQW5kIGhlIHB1dCBoaXMgaGFuZCBpbnRvIGhpcyBib3NvbSBhZ2FpbjsgYW5kIHBsdWNrZWQgaXQgb3V0IG9mIGhpcyBib3NvbSwgYW5kLCBiZWhvbGQsIGl0IHdhcyB0dXJuZWQgYWdhaW4gYXMgaGlzIG90aGVyIGZsZXNoLgpBbmQgaXQgc2hhbGwgY29tZSB0byBwYXNzLCBpZiB0aGV5IHdpbGwgbm90IGJlbGlldmUgdGhlZSwgbmVpdGhlciBoZWFya2VuIHRvIHRoZSB2b2ljZSBvZiB0aGUgZmlyc3Qgc2lnbiwgdGhhdCB0aGV5IHdpbGwgYmVsaWV2ZSB0aGUgdm9pY2Ugb2YgdGhlIGxhdHRlciBzaWduLgpBbmQgaXQgc2hhbGwgY29tZSB0byBwYXNzLCBpZiB0aGV5IHdpbGwgbm90IGJlbGlldmUgYWxzbyB0aGVzZSB0d28gc2lnbnMsIG5laXRoZXIgaGVhcmtlbiB1bnRvIHRoeSB2b2ljZSwgdGhhdCB0aG91IHNoYWx0IHRha2Ugb2YgdGhlIHdhdGVyIG9mIHRoZSByaXZlciwgYW5kIHBvdXIgaXQgdXBvbiB0aGUgZHJ5IGxhbmQ6IGFuZCB0aGUgd2F0ZXIgd2hpY2ggdGhvdSB0YWtlc3Qgb3V0IG9mIHRoZSByaXZlciBzaGFsbCBiZWNvbWUgYmxvb2QgdXBvbiB0aGUgZHJ5IGxhbmQuCkFuZCBNb3NlcyBzYWlkIHVudG8gdGhlIExPUkQsIE8gbXkgTE9SRCwgSSBhbSBub3QgZWxvcXVlbnQsIG5laXRoZXIgaGVyZXRvZm9yZSwgbm9yIHNpbmNlIHRob3UgaGFzdCBzcG9rZW4gdW50byB0aHkgc2VydmFudDogYnV0IEkgYW0gc2xvdyBvZiBzcGVlY2gsIGFuZCBvZiBhIHNsb3cgdG9uZ3VlLgpBbmQgdGhlIExPUkQgc2FpZCB1bnRvIGhpbSwgV2hvIGhhdGggbWFkZSBtYW4ncyBtb3V0aD8gb3Igd2hvIG1ha2V0aCB0aGUgZHVtYiwgb3IgZGVhZiwgb3IgdGhlIHNlZWluZywgb3IgdGhlIGJsaW5kPyBoYXZlIG5vdCBJIHRoZSBMT1JEPwpOb3cgdGhlcmVmb3JlIGdvLCBhbmQgSSB3aWxsIGJlIHdpdGggdGh5IG1vdXRoLCBhbmQgdGVhY2ggdGhlZSB3aGF0IHRob3Ugc2hhbHQgc2F5LgpBbmQgaGUgc2FpZCwgTyBteSBMT1JELCBzZW5kLCBJIHByYXkgdGhlZSwgYnkgdGhlIGhhbmQgb2YgaGltIHdob20gdGhvdSB3aWx0IHNlbmQuCkFuZCB0aGUgYW5nZXIgb2YgdGhlIExPUkQgd2FzIGtpbmRsZWQgYWdhaW5zdCBNb3NlcywgYW5kIGhlIHNhaWQsIElzIG5vdCBBYXJvbiB0aGUgTGV2aXRlIHRoeSBicm90aGVyPyBJIGtub3cgdGhhdCBoZSBjYW4gc3BlYWsgd2VsbC4gQW5kIGFsc28sIGJlaG9sZCwgaGUgY29tZXRoIGZvcnRoIHRvIG1lZXQgdGhlZTogYW5kIHdoZW4gaGUgc2VldGggdGhlZSwgaGUgd2lsbCBiZSBnbGFkIGluIGhpcyBoZWFydC4KQW5kIHRob3Ugc2hhbHQgc3BlYWsgdW50byBoaW0sIGFuZCBwdXQgd29yZHMgaW4gaGlzIG1vdXRoOiBhbmQgSSB3aWxsIGJlIHdpdGggdGh5IG1vdXRoLCBhbmQgd2l0aCBoaXMgbW91dGgsIGFuZCB3aWxsIHRlYWNoIHlvdSB3aGF0IHllIHNoYWxsIGRvLgpBbmQgaGUgc2hhbGwgYmUgdGh5IHNwb2tlc21hbiB1bnRvIHRoZSBwZW9wbGU6IGFuZCBoZSBzaGFsbCBiZSwgZXZlbiBoZSBzaGFsbCBiZSB0byB0aGVlIGluc3RlYWQgb2YgYSBtb3V0aCwgYW5kIHRob3Ugc2hhbHQgYmUgdG8gaGltIGluc3RlYWQgb2YgR29kLgpBbmQgdGhvdSBzaGFsdCB0YWtlIHRoaXMgcm9kIGluIHRoaW5lIGhhbmQsIHdoZXJld2l0aCB0aG91IHNoYWx0IGRvIHNpZ25zLgpBbmQgTW9zZXMgd2VudCBhbmQgcmV0dXJuZWQgdG8gSmV0aHJvIGhpcyBmYXRoZXIgaW4gbGF3LCBhbmQgc2FpZCB1bnRvIGhpbSwgTGV0IG1lIGdvLCBJIHByYXkgdGhlZSwgYW5kIHJldHVybiB1bnRvIG15IGJyZXRocmVuIHdoaWNoIGFyZSBpbiBFZ3lwdCwgYW5kIHNlZSB3aGV0aGVyIHRoZXkgYmUgeWV0IGFsaXZlLiBBbmQgSmV0aHJvIHNhaWQgdG8gTW9zZXMsIEdvIGluIHBlYWNlLgpBbmQgdGhlIExPUkQgc2FpZCB1bnRvIE1vc2VzIGluIE1pZGlhbiwgR28sIHJldHVybiBpbnRvIEVneXB0OiBmb3IgYWxsIHRoZSBtZW4gYXJlIGRlYWQgd2hpY2ggc291Z2h0IHRoeSBsaWZlLgpBbmQgTW9zZXMgdG9vayBoaXMgd2lmZSBhbmQgaGlzIHNvbnMsIGFuZCBzZXQgdGhlbSB1cG9uIGFuIGFzcywgYW5kIGhlIHJldHVybmVkIHRvIHRoZSBsYW5kIG9mIEVneXB0OiBhbmQgTW9zZXMgdG9vayB0aGUgcm9kIG9mIEdvZCBpbiBoaXMgaGFuZC4KQW5kIHRoZSBMT1JEIHNhaWQgdW50byBNb3NlcywgV2hlbiB0aG91IGdvZXN0IHRvIHJldHVybiBpbnRvIEVneXB0LCBzZWUgdGhhdCB0aG91IGRvIGFsbCB0aG9zZSB3b25kZXJzIGJlZm9yZSBQaGFyYW9oLCB3aGljaCBJIGhhdmUgcHV0IGluIHRoaW5lIGhhbmQ6IGJ1dCBJIHdpbGwgaGFyZGVuIGhpcyBoZWFydCwgdGhhdCBoZSBzaGFsbCBub3QgbGV0IHRoZSBwZW9wbGUgZ28uCkFuZCB0aG91IHNoYWx0IHNheSB1bnRvIFBoYXJhb2gsIFRodXMgc2FpdGggdGhlIExPUkQsIElzcmFlbCBpcyBteSBzb24sIGV2ZW4gbXkgZmlyc3Rib3JuOgpBbmQgSSBzYXkgdW50byB0aGVlLCBMZXQgbXkgc29uIGdvLCB0aGF0IGhlIG1heSBzZXJ2ZSBtZTogYW5kIGlmIHRob3UgcmVmdXNlIHRvIGxldCBoaW0gZ28sIGJlaG9sZCwgSSB3aWxsIHNsYXkgdGh5IHNvbiwgZXZlbiB0aHkgZmlyc3Rib3JuLgpBbmQgaXQgY2FtZSB0byBwYXNzIGJ5IHRoZSB3YXkgaW4gdGhlIGlubiwgdGhhdCB0aGUgTE9SRCBtZXQgaGltLCBhbmQgc291Z2h0IHRvIGtpbGwgaGltLgpUaGVuIFppcHBvcmFoIHRvb2sgYSBzaGFycCBzdG9uZSwgYW5kIGN1dCBvZmYgdGhlIGZvcmVza2luIG9mIGhlciBzb24sIGFuZCBjYXN0IGl0IGF0IGhpcyBmZWV0LCBhbmQgc2FpZCwgU3VyZWx5IGEgYmxvb2R5IGh1c2JhbmQgYXJ0IHRob3UgdG8gbWUuClNvIGhlIGxldCBoaW0gZ286IHRoZW4gc2hlIHNhaWQsIEEgYmxvb2R5IGh1c2JhbmQgdGhvdSBhcnQsIGJlY2F1c2Ugb2YgdGhlIGNpcmN1bWNpc2lvbi4KQW5kIHRoZSBMT1JEIHNhaWQgdG8gQWFyb24sIEdvIGludG8gdGhlIHdpbGRlcm5lc3MgdG8gbWVldCBNb3Nlcy4gQW5kIGhlIHdlbnQsIGFuZCBtZXQgaGltIGluIHRoZSBtb3VudCBvZiBHb2QsIGFuZCBraXNzZWQgaGltLgpBbmQgTW9zZXMgdG9sZCBBYXJvbiBhbGwgdGhlIHdvcmRzIG9mIHRoZSBMT1JEIHdobyBoYWQgc2VudCBoaW0sIGFuZCBhbGwgdGhlIHNpZ25zIHdoaWNoIGhlIGhhZCBjb21tYW5kZWQgaGltLgpBbmQgTW9zZXMgYW5kIEFhcm9uIHdlbnQgYW5kIGdhdGhlcmVkIHRvZ2V0aGVyIGFsbCB0aGUgZWxkZXJzIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWw6CkFuZCBBYXJvbiBzcGFrZSBhbGwgdGhlIHdvcmRzIHdoaWNoIHRoZSBMT1JEIGhhZCBzcG9rZW4gdW50byBNb3NlcywgYW5kIGRpZCB0aGUgc2lnbnMgaW4gdGhlIHNpZ2h0IG9mIHRoZSBwZW9wbGUuCkFuZCB0aGUgcGVvcGxlIGJlbGlldmVkOiBhbmQgd2hlbiB0aGV5IGhlYXJkIHRoYXQgdGhlIExPUkQgaGFkIHZpc2l0ZWQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgYW5kIHRoYXQgaGUgaGFkIGxvb2tlZCB1cG9uIHRoZWlyIGFmZmxpY3Rpb24sIHRoZW4gdGhleSBib3dlZCB0aGVpciBoZWFkcyBhbmQgd29yc2hpcHBlZC4KQW5kIGFmdGVyd2FyZCBNb3NlcyBhbmQgQWFyb24gd2VudCBpbiwgYW5kIHRvbGQgUGhhcmFvaCwgVGh1cyBzYWl0aCB0aGUgTE9SRCBHb2Qgb2YgSXNyYWVsLCBMZXQgbXkgcGVvcGxlIGdvLCB0aGF0IHRoZXkgbWF5IGhvbGQgYSBmZWFzdCB1bnRvIG1lIGluIHRoZSB3aWxkZXJuZXNzLgpBbmQgUGhhcmFvaCBzYWlkLCBXaG8gaXMgdGhlIExPUkQsIHRoYXQgSSBzaG91bGQgb2JleSBoaXMgdm9pY2UgdG8gbGV0IElzcmFlbCBnbz8gSSBrbm93IG5vdCB0aGUgTE9SRCwgbmVpdGhlciB3aWxsIEkgbGV0IElzcmFlbCBnby4KQW5kIHRoZXkgc2FpZCwgVGhlIEdvZCBvZiB0aGUgSGVicmV3cyBoYXRoIG1ldCB3aXRoIHVzOiBsZXQgdXMgZ28sIHdlIHByYXkgdGhlZSwgdGhyZWUgZGF5cycgam91cm5leSBpbnRvIHRoZSBkZXNlcnQsIGFuZCBzYWNyaWZpY2UgdW50byB0aGUgTE9SRCBvdXIgR29kOyBsZXN0IGhlIGZhbGwgdXBvbiB1cyB3aXRoIHBlc3RpbGVuY2UsIG9yIHdpdGggdGhlIHN3b3JkLgpBbmQgdGhlIGtpbmcgb2YgRWd5cHQgc2FpZCB1bnRvIHRoZW0sIFdoZXJlZm9yZSBkbyB5ZSwgTW9zZXMgYW5kIEFhcm9uLCBsZXQgdGhlIHBlb3BsZSBmcm9tIHRoZWlyIHdvcmtzPyBnZXQgeW91IHVudG8geW91ciBidXJkZW5zLgpBbmQgUGhhcmFvaCBzYWlkLCBCZWhvbGQsIHRoZSBwZW9wbGUgb2YgdGhlIGxhbmQgbm93IGFyZSBtYW55LCBhbmQgeWUgbWFrZSB0aGVtIHJlc3QgZnJvbSB0aGVpciBidXJkZW5zLgpBbmQgUGhhcmFvaCBjb21tYW5kZWQgdGhlIHNhbWUgZGF5IHRoZSB0YXNrbWFzdGVycyBvZiB0aGUgcGVvcGxlLCBhbmQgdGhlaXIgb2ZmaWNlcnMsIHNheWluZywKWWUgc2hhbGwgbm8gbW9yZSBnaXZlIHRoZSBwZW9wbGUgc3RyYXcgdG8gbWFrZSBicmljaywgYXMgaGVyZXRvZm9yZTogbGV0IHRoZW0gZ28gYW5kIGdhdGhlciBzdHJhdyBmb3IgdGhlbXNlbHZlcy4KQW5kIHRoZSB0YWxlIG9mIHRoZSBicmlja3MsIHdoaWNoIHRoZXkgZGlkIG1ha2UgaGVyZXRvZm9yZSwgeWUgc2hhbGwgbGF5IHVwb24gdGhlbTsgeWUgc2hhbGwgbm90IGRpbWluaXNoIG91Z2h0IHRoZXJlb2Y6IGZvciB0aGV5IGJlIGlkbGU7IHRoZXJlZm9yZSB0aGV5IGNyeSwgc2F5aW5nLCBMZXQgdXMgZ28gYW5kIHNhY3JpZmljZSB0byBvdXIgR29kLgpMZXQgdGhlcmUgbW9yZSB3b3JrIGJlIGxhaWQgdXBvbiB0aGUgbWVuLCB0aGF0IHRoZXkgbWF5IGxhYm91ciB0aGVyZWluOyBhbmQgbGV0IHRoZW0gbm90IHJlZ2FyZCB2YWluIHdvcmRzLgpBbmQgdGhlIHRhc2ttYXN0ZXJzIG9mIHRoZSBwZW9wbGUgd2VudCBvdXQsIGFuZCB0aGVpciBvZmZpY2VycywgYW5kIHRoZXkgc3Bha2UgdG8gdGhlIHBlb3BsZSwgc2F5aW5nLCBUaHVzIHNhaXRoIFBoYXJhb2gsIEkgd2lsbCBub3QgZ2l2ZSB5b3Ugc3RyYXcuCkdvIHllLCBnZXQgeW91IHN0cmF3IHdoZXJlIHllIGNhbiBmaW5kIGl0OiB5ZXQgbm90IG91Z2h0IG9mIHlvdXIgd29yayBzaGFsbCBiZSBkaW1pbmlzaGVkLgpTbyB0aGUgcGVvcGxlIHdlcmUgc2NhdHRlcmVkIGFicm9hZCB0aHJvdWdob3V0IGFsbCB0aGUgbGFuZCBvZiBFZ3lwdCB0byBnYXRoZXIgc3R1YmJsZSBpbnN0ZWFkIG9mIHN0cmF3LgpBbmQgdGhlIHRhc2ttYXN0ZXJzIGhhc3RlZCB0aGVtLCBzYXlpbmcsIEZ1bGZpbCB5b3VyIHdvcmtzLCB5b3VyIGRhaWx5IHRhc2tzLCBhcyB3aGVuIHRoZXJlIHdhcyBzdHJhdy4KQW5kIHRoZSBvZmZpY2VycyBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLCB3aGljaCBQaGFyYW9oJ3MgdGFza21hc3RlcnMgaGFkIHNldCBvdmVyIHRoZW0sIHdlcmUgYmVhdGVuLCBhbmQgZGVtYW5kZWQsIFdoZXJlZm9yZSBoYXZlIHllIG5vdCBmdWxmaWxsZWQgeW91ciB0YXNrIGluIG1ha2luZyBicmljayBib3RoIHllc3RlcmRheSBhbmQgdG8gZGF5LCBhcyBoZXJldG9mb3JlPwpUaGVuIHRoZSBvZmZpY2VycyBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGNhbWUgYW5kIGNyaWVkIHVudG8gUGhhcmFvaCwgc2F5aW5nLCBXaGVyZWZvcmUgZGVhbGVzdCB0aG91IHRodXMgd2l0aCB0aHkgc2VydmFudHM/ClRoZXJlIGlzIG5vIHN0cmF3IGdpdmVuIHVudG8gdGh5IHNlcnZhbnRzLCBhbmQgdGhleSBzYXkgdG8gdXMsIE1ha2UgYnJpY2s6IGFuZCwgYmVob2xkLCB0aHkgc2VydmFudHMgYXJlIGJlYXRlbjsgYnV0IHRoZSBmYXVsdCBpcyBpbiB0aGluZSBvd24gcGVvcGxlLgpCdXQgaGUgc2FpZCwgWWUgYXJlIGlkbGUsIHllIGFyZSBpZGxlOiB0aGVyZWZvcmUgeWUgc2F5LCBMZXQgdXMgZ28gYW5kIGRvIHNhY3JpZmljZSB0byB0aGUgTE9SRC4KR28gdGhlcmVmb3JlIG5vdywgYW5kIHdvcms7IGZvciB0aGVyZSBzaGFsbCBubyBzdHJhdyBiZSBnaXZlbiB5b3UsIHlldCBzaGFsbCB5ZSBkZWxpdmVyIHRoZSB0YWxlIG9mIGJyaWNrcy4KQW5kIHRoZSBvZmZpY2VycyBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGRpZCBzZWUgdGhhdCB0aGV5IHdlcmUgaW4gZXZpbCBjYXNlLCBhZnRlciBpdCB3YXMgc2FpZCwgWWUgc2hhbGwgbm90IG1pbmlzaCBvdWdodCBmcm9tIHlvdXIgYnJpY2tzIG9mIHlvdXIgZGFpbHkgdGFzay4KQW5kIHRoZXkgbWV0IE1vc2VzIGFuZCBBYXJvbiwgd2hvIHN0b29kIGluIHRoZSB3YXksIGFzIHRoZXkgY2FtZSBmb3J0aCBmcm9tIFBoYXJhb2g6CkFuZCB0aGV5IHNhaWQgdW50byB0aGVtLCBUaGUgTE9SRCBsb29rIHVwb24geW91LCBhbmQganVkZ2U7IGJlY2F1c2UgeWUgaGF2ZSBtYWRlIG91ciBzYXZvdXIgdG8gYmUgYWJob3JyZWQgaW4gdGhlIGV5ZXMgb2YgUGhhcmFvaCwgYW5kIGluIHRoZSBleWVzIG9mIGhpcyBzZXJ2YW50cywgdG8gcHV0IGEgc3dvcmQgaW4gdGhlaXIgaGFuZCB0byBzbGF5IHVzLgpBbmQgTW9zZXMgcmV0dXJuZWQgdW50byB0aGUgTE9SRCwgYW5kIHNhaWQsIExPUkQsIHdoZXJlZm9yZSBoYXN0IHRob3Ugc28gZXZpbCBlbnRyZWF0ZWQgdGhpcyBwZW9wbGU/IHdoeSBpcyBpdCB0aGF0IHRob3UgaGFzdCBzZW50IG1lPwpGb3Igc2luY2UgSSBjYW1lIHRvIFBoYXJhb2ggdG8gc3BlYWsgaW4gdGh5IG5hbWUsIGhlIGhhdGggZG9uZSBldmlsIHRvIHRoaXMgcGVvcGxlOyBuZWl0aGVyIGhhc3QgdGhvdSBkZWxpdmVyZWQgdGh5IHBlb3BsZSBhdCBhbGwuClRoZW4gdGhlIExPUkQgc2FpZCB1bnRvIE1vc2VzLCBOb3cgc2hhbHQgdGhvdSBzZWUgd2hhdCBJIHdpbGwgZG8gdG8gUGhhcmFvaDogZm9yIHdpdGggYSBzdHJvbmcgaGFuZCBzaGFsbCBoZSBsZXQgdGhlbSBnbywgYW5kIHdpdGggYSBzdHJvbmcgaGFuZCBzaGFsbCBoZSBkcml2ZSB0aGVtIG91dCBvZiBoaXMgbGFuZC4KQW5kIEdvZCBzcGFrZSB1bnRvIE1vc2VzLCBhbmQgc2FpZCB1bnRvIGhpbSwgSSBhbSB0aGUgTE9SRDoKQW5kIEkgYXBwZWFyZWQgdW50byBBYnJhaGFtLCB1bnRvIElzYWFjLCBhbmQgdW50byBKYWNvYiwgYnkgdGhlIG5hbWUgb2YgR29kIEFsbWlnaHR5LCBidXQgYnkgbXkgbmFtZSBKRUhPVkFIIHdhcyBJIG5vdCBrbm93biB0byB0aGVtLgpBbmQgSSBoYXZlIGFsc28gZXN0YWJsaXNoZWQgbXkgY292ZW5hbnQgd2l0aCB0aGVtLCB0byBnaXZlIHRoZW0gdGhlIGxhbmQgb2YgQ2FuYWFuLCB0aGUgbGFuZCBvZiB0aGVpciBwaWxncmltYWdlLCB3aGVyZWluIHRoZXkgd2VyZSBzdHJhbmdlcnMuCkFuZCBJIGhhdmUgYWxzbyBoZWFyZCB0aGUgZ3JvYW5pbmcgb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgd2hvbSB0aGUgRWd5cHRpYW5zIGtlZXAgaW4gYm9uZGFnZTsgYW5kIEkgaGF2ZSByZW1lbWJlcmVkIG15IGNvdmVuYW50LgpXaGVyZWZvcmUgc2F5IHVudG8gdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgSSBhbSB0aGUgTE9SRCwgYW5kIEkgd2lsbCBicmluZyB5b3Ugb3V0IGZyb20gdW5kZXIgdGhlIGJ1cmRlbnMgb2YgdGhlIEVneXB0aWFucywgYW5kIEkgd2lsbCByaWQgeW91IG91dCBvZiB0aGVpciBib25kYWdlLCBhbmQgSSB3aWxsIHJlZGVlbSB5b3Ugd2l0aCBhIHN0cmV0Y2hlZCBvdXQgYXJtLCBhbmQgd2l0aCBncmVhdCBqdWRnbWVudHM6CkFuZCBJIHdpbGwgdGFrZSB5b3UgdG8gbWUgZm9yIGEgcGVvcGxlLCBhbmQgSSB3aWxsIGJlIHRvIHlvdSBhIEdvZDogYW5kIHllIHNoYWxsIGtub3cgdGhhdCBJIGFtIHRoZSBMT1JEIHlvdXIgR29kLCB3aGljaCBicmluZ2V0aCB5b3Ugb3V0IGZyb20gdW5kZXIgdGhlIGJ1cmRlbnMgb2YgdGhlIEVneXB0aWFucy4KQW5kIEkgd2lsbCBicmluZyB5b3UgaW4gdW50byB0aGUgbGFuZCwgY29uY2VybmluZyB0aGUgd2hpY2ggSSBkaWQgc3dlYXIgdG8gZ2l2ZSBpdCB0byBBYnJhaGFtLCB0byBJc2FhYywgYW5kIHRvIEphY29iOyBhbmQgSSB3aWxsIGdpdmUgaXQgeW91IGZvciBhbiBoZXJpdGFnZTogSSBhbSB0aGUgTE9SRC4KQW5kIE1vc2VzIHNwYWtlIHNvIHVudG8gdGhlIGNoaWxkcmVuIG9mIElzcmFlbDogYnV0IHRoZXkgaGVhcmtlbmVkIG5vdCB1bnRvIE1vc2VzIGZvciBhbmd1aXNoIG9mIHNwaXJpdCwgYW5kIGZvciBjcnVlbCBib25kYWdlLgpBbmQgdGhlIExPUkQgc3Bha2UgdW50byBNb3Nlcywgc2F5aW5nLApHbyBpbiwgc3BlYWsgdW50byBQaGFyYW9oIGtpbmcgb2YgRWd5cHQsIHRoYXQgaGUgbGV0IHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgZ28gb3V0IG9mIGhpcyBsYW5kLgpBbmQgTW9zZXMgc3Bha2UgYmVmb3JlIHRoZSBMT1JELCBzYXlpbmcsIEJlaG9sZCwgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBoYXZlIG5vdCBoZWFya2VuZWQgdW50byBtZTsgaG93IHRoZW4gc2hhbGwgUGhhcmFvaCBoZWFyIG1lLCB3aG8gYW0gb2YgdW5jaXJjdW1jaXNlZCBsaXBzPwpBbmQgdGhlIExPUkQgc3Bha2UgdW50byBNb3NlcyBhbmQgdW50byBBYXJvbiwgYW5kIGdhdmUgdGhlbSBhIGNoYXJnZSB1bnRvIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIGFuZCB1bnRvIFBoYXJhb2gga2luZyBvZiBFZ3lwdCwgdG8gYnJpbmcgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBvdXQgb2YgdGhlIGxhbmQgb2YgRWd5cHQuClRoZXNlIGJlIHRoZSBoZWFkcyBvZiB0aGVpciBmYXRoZXJzJyBob3VzZXM6IFRoZSBzb25zIG9mIFJldWJlbiB0aGUgZmlyc3Rib3JuIG9mIElzcmFlbDsgSGFub2NoLCBhbmQgUGFsbHUsIEhlenJvbiwgYW5kIENhcm1pOiB0aGVzZSBiZSB0aGUgZmFtaWxpZXMgb2YgUmV1YmVuLgpBbmQgdGhlIHNvbnMgb2YgU2ltZW9uOyBKZW11ZWwsIGFuZCBKYW1pbiwgYW5kIE9oYWQsIGFuZCBKYWNoaW4sIGFuZCBab2hhciwgYW5kIFNoYXVsIHRoZSBzb24gb2YgYSBDYW5hYW5pdGlzaCB3b21hbjogdGhlc2UgYXJlIHRoZSBmYW1pbGllcyBvZiBTaW1lb24uCkFuZCB0aGVzZSBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzb25zIG9mIExldmkgYWNjb3JkaW5nIHRvIHRoZWlyIGdlbmVyYXRpb25zOyBHZXJzaG9uLCBhbmQgS29oYXRoLCBhbmQgTWVyYXJpOiBhbmQgdGhlIHllYXJzIG9mIHRoZSBsaWZlIG9mIExldmkgd2VyZSBhbiBodW5kcmVkIHRoaXJ0eSBhbmQgc2V2ZW4geWVhcnMuClRoZSBzb25zIG9mIEdlcnNob247IExpYm5pLCBhbmQgU2hpbWksIGFjY29yZGluZyB0byB0aGVpciBmYW1pbGllcy4KQW5kIHRoZSBzb25zIG9mIEtvaGF0aDsgQW1yYW0sIGFuZCBJemhhciwgYW5kIEhlYnJvbiwgYW5kIFV6emllbDogYW5kIHRoZSB5ZWFycyBvZiB0aGUgbGlmZSBvZiBLb2hhdGggd2VyZSBhbiBodW5kcmVkIHRoaXJ0eSBhbmQgdGhyZWUgeWVhcnMuCkFuZCB0aGUgc29ucyBvZiBNZXJhcmk7IE1haGFsaSBhbmQgTXVzaGk6IHRoZXNlIGFyZSB0aGUgZmFtaWxpZXMgb2YgTGV2aSBhY2NvcmRpbmcgdG8gdGhlaXIgZ2VuZXJhdGlvbnMuCkFuZCBBbXJhbSB0b29rIGhpbSBKb2NoZWJlZCBoaXMgZmF0aGVyJ3Mgc2lzdGVyIHRvIHdpZmU7IGFuZCBzaGUgYmFyZSBoaW0gQWFyb24gYW5kIE1vc2VzOiBhbmQgdGhlIHllYXJzIG9mIHRoZSBsaWZlIG9mIEFtcmFtIHdlcmUgYW4gaHVuZHJlZCBhbmQgdGhpcnR5IGFuZCBzZXZlbiB5ZWFycy4KQW5kIHRoZSBzb25zIG9mIEl6aGFyOyBLb3JhaCwgYW5kIE5lcGhlZywgYW5kIFppY2hyaS4KQW5kIHRoZSBzb25zIG9mIFV6emllbDsgTWlzaGFlbCwgYW5kIEVsemFwaGFuLCBhbmQgWml0aHJpLgpBbmQgQWFyb24gdG9vayBoaW0gRWxpc2hlYmEsIGRhdWdodGVyIG9mIEFtbWluYWRhYiwgc2lzdGVyIG9mIE5hYXNob24sIHRvIHdpZmU7IGFuZCBzaGUgYmFyZSBoaW0gTmFkYWIsIGFuZCBBYmlodSwgRWxlYXphciwgYW5kIEl0aGFtYXIuCkFuZCB0aGUgc29ucyBvZiBLb3JhaDsgQXNzaXIsIGFuZCBFbGthbmFoLCBhbmQgQWJpYXNhcGg6IHRoZXNlIGFyZSB0aGUgZmFtaWxpZXMgb2YgdGhlIEtvcmhpdGVzLgpBbmQgRWxlYXphciBBYXJvbidzIHNvbiB0b29rIGhpbSBvbmUgb2YgdGhlIGRhdWdodGVycyBvZiBQdXRpZWwgdG8gd2lmZTsgYW5kIHNoZSBiYXJlIGhpbSBQaGluZWhhczogdGhlc2UgYXJlIHRoZSBoZWFkcyBvZiB0aGUgZmF0aGVycyBvZiB0aGUgTGV2aXRlcyBhY2NvcmRpbmcgdG8gdGhlaXIgZmFtaWxpZXMuClRoZXNlIGFyZSB0aGF0IEFhcm9uIGFuZCBNb3NlcywgdG8gd2hvbSB0aGUgTE9SRCBzYWlkLCBCcmluZyBvdXQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBmcm9tIHRoZSBsYW5kIG9mIEVneXB0IGFjY29yZGluZyB0byB0aGVpciBhcm1pZXMuClRoZXNlIGFyZSB0aGV5IHdoaWNoIHNwYWtlIHRvIFBoYXJhb2gga2luZyBvZiBFZ3lwdCwgdG8gYnJpbmcgb3V0IHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgZnJvbSBFZ3lwdDogdGhlc2UgYXJlIHRoYXQgTW9zZXMgYW5kIEFhcm9uLgpBbmQgaXQgY2FtZSB0byBwYXNzIG9uIHRoZSBkYXkgd2hlbiB0aGUgTE9SRCBzcGFrZSB1bnRvIE1vc2VzIGluIHRoZSBsYW5kIG9mIEVneXB0LApUaGF0IHRoZSBMT1JEIHNwYWtlIHVudG8gTW9zZXMsIHNheWluZywgSSBhbSB0aGUgTE9SRDogc3BlYWsgdGhvdSB1bnRvIFBoYXJhb2gga2luZyBvZiBFZ3lwdCBhbGwgdGhhdCBJIHNheSB1bnRvIHRoZWUuCkFuZCBNb3NlcyBzYWlkIGJlZm9yZSB0aGUgTE9SRCwgQmVob2xkLCBJIGFtIG9mIHVuY2lyY3VtY2lzZWQgbGlwcywgYW5kIGhvdyBzaGFsbCBQaGFyYW9oIGhlYXJrZW4gdW50byBtZT8KQW5kIHRoZSBMT1JEIHNhaWQgdW50byBNb3NlcywgU2VlLCBJIGhhdmUgbWFkZSB0aGVlIGEgZ29kIHRvIFBoYXJhb2g6IGFuZCBBYXJvbiB0aHkgYnJvdGhlciBzaGFsbCBiZSB0aHkgcHJvcGhldC4KVGhvdSBzaGFsdCBzcGVhayBhbGwgdGhhdCBJIGNvbW1hbmQgdGhlZTogYW5kIEFhcm9uIHRoeSBicm90aGVyIHNoYWxsIHNwZWFrIHVudG8gUGhhcmFvaCwgdGhhdCBoZSBzZW5kIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgb3V0IG9mIGhpcyBsYW5kLgpBbmQgSSB3aWxsIGhhcmRlbiBQaGFyYW9oJ3MgaGVhcnQsIGFuZCBtdWx0aXBseSBteSBzaWducyBhbmQgbXkgd29uZGVycyBpbiB0aGUgbGFuZCBvZiBFZ3lwdC4KQnV0IFBoYXJhb2ggc2hhbGwgbm90IGhlYXJrZW4gdW50byB5b3UsIHRoYXQgSSBtYXkgbGF5IG15IGhhbmQgdXBvbiBFZ3lwdCwgYW5kIGJyaW5nIGZvcnRoIG1pbmUgYXJtaWVzLCBhbmQgbXkgcGVvcGxlIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIG91dCBvZiB0aGUgbGFuZCBvZiBFZ3lwdCBieSBncmVhdCBqdWRnbWVudHMuCkFuZCB0aGUgRWd5cHRpYW5zIHNoYWxsIGtub3cgdGhhdCBJIGFtIHRoZSBMT1JELCB3aGVuIEkgc3RyZXRjaCBmb3J0aCBtaW5lIGhhbmQgdXBvbiBFZ3lwdCwgYW5kIGJyaW5nIG91dCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGZyb20gYW1vbmcgdGhlbS4KQW5kIE1vc2VzIGFuZCBBYXJvbiBkaWQgYXMgdGhlIExPUkQgY29tbWFuZGVkIHRoZW0sIHNvIGRpZCB0aGV5LgpBbmQgTW9zZXMgd2FzIGZvdXJzY29yZSB5ZWFycyBvbGQsIGFuZCBBYXJvbiBmb3Vyc2NvcmUgYW5kIHRocmVlIHllYXJzIG9sZCwgd2hlbiB0aGV5IHNwYWtlIHVudG8gUGhhcmFvaC4KQW5kIHRoZSBMT1JEIHNwYWtlIHVudG8gTW9zZXMgYW5kIHVudG8gQWFyb24sIHNheWluZywKV2hlbiBQaGFyYW9oIHNoYWxsIHNwZWFrIHVudG8geW91LCBzYXlpbmcsIFNoZXcgYSBtaXJhY2xlIGZvciB5b3U6IHRoZW4gdGhvdSBzaGFsdCBzYXkgdW50byBBYXJvbiwgVGFrZSB0aHkgcm9kLCBhbmQgY2FzdCBpdCBiZWZvcmUgUGhhcmFvaCwgYW5kIGl0IHNoYWxsIGJlY29tZSBhIHNlcnBlbnQuCkFuZCBNb3NlcyBhbmQgQWFyb24gd2VudCBpbiB1bnRvIFBoYXJhb2gsIGFuZCB0aGV5IGRpZCBzbyBhcyB0aGUgTE9SRCBoYWQgY29tbWFuZGVkOiBhbmQgQWFyb24gY2FzdCBkb3duIGhpcyByb2QgYmVmb3JlIFBoYXJhb2gsIGFuZCBiZWZvcmUgaGlzIHNlcnZhbnRzLCBhbmQgaXQgYmVjYW1lIGEgc2VycGVudC4KVGhlbiBQaGFyYW9oIGFsc28gY2FsbGVkIHRoZSB3aXNlIG1lbiBhbmQgdGhlIHNvcmNlcmVyczogbm93IHRoZSBtYWdpY2lhbnMgb2YgRWd5cHQsIHRoZXkgYWxzbyBkaWQgaW4gbGlrZSBtYW5uZXIgd2l0aCB0aGVpciBlbmNoYW50bWVudHMuCkZvciB0aGV5IGNhc3QgZG93biBldmVyeSBtYW4gaGlzIHJvZCwgYW5kIHRoZXkgYmVjYW1lIHNlcnBlbnRzOiBidXQgQWFyb24ncyByb2Qgc3dhbGxvd2VkIHVwIHRoZWlyIHJvZHMuCkFuZCBoZSBoYXJkZW5lZCBQaGFyYW9oJ3MgaGVhcnQsIHRoYXQgaGUgaGVhcmtlbmVkIG5vdCB1bnRvIHRoZW07IGFzIHRoZSBMT1JEIGhhZCBzYWlkLgpBbmQgdGhlIExPUkQgc2FpZCB1bnRvIE1vc2VzLCBQaGFyYW9oJ3MgaGVhcnQgaXMgaGFyZGVuZWQsIGhlIHJlZnVzZXRoIHRvIGxldCB0aGUgcGVvcGxlIGdvLgpHZXQgdGhlZSB1bnRvIFBoYXJhb2ggaW4gdGhlIG1vcm5pbmc7IGxvLCBoZSBnb2V0aCBvdXQgdW50byB0aGUgd2F0ZXI7IGFuZCB0aG91IHNoYWx0IHN0YW5kIGJ5IHRoZSByaXZlcidzIGJyaW5rIGFnYWluc3QgaGUgY29tZTsgYW5kIHRoZSByb2Qgd2hpY2ggd2FzIHR1cm5lZCB0byBhIHNlcnBlbnQgc2hhbHQgdGhvdSB0YWtlIGluIHRoaW5lIGhhbmQuCkFuZCB0aG91IHNoYWx0IHNheSB1bnRvIGhpbSwgVGhlIExPUkQgR29kIG9mIHRoZSBIZWJyZXdzIGhhdGggc2VudCBtZSB1bnRvIHRoZWUsIHNheWluZywgTGV0IG15IHBlb3BsZSBnbywgdGhhdCB0aGV5IG1heSBzZXJ2ZSBtZSBpbiB0aGUgd2lsZGVybmVzczogYW5kLCBiZWhvbGQsIGhpdGhlcnRvIHRob3Ugd291bGRlc3Qgbm90IGhlYXIuClRodXMgc2FpdGggdGhlIExPUkQsIEluIHRoaXMgdGhvdSBzaGFsdCBrbm93IHRoYXQgSSBhbSB0aGUgTE9SRDogYmVob2xkLCBJIHdpbGwgc21pdGUgd2l0aCB0aGUgcm9kIHRoYXQgaXMgaW4gbWluZSBoYW5kIHVwb24gdGhlIHdhdGVycyB3aGljaCBhcmUgaW4gdGhlIHJpdmVyLCBhbmQgdGhleSBzaGFsbCBiZSB0dXJuZWQgdG8gYmxvb2QuCkFuZCB0aGUgZmlzaCB0aGF0IGlzIGluIHRoZSByaXZlciBzaGFsbCBkaWUsIGFuZCB0aGUgcml2ZXIgc2hhbGwgc3Rpbms7IGFuZCB0aGUgRWd5cHRpYW5zIHNoYWxsIGxvdGhlIHRvIGRyaW5rIG9mIHRoZSB3YXRlciBvZiB0aGUgcml2ZXIuCkFuZCB0aGUgTE9SRCBzcGFrZSB1bnRvIE1vc2VzLCBTYXkgdW50byBBYXJvbiwgVGFrZSB0aHkgcm9kLCBhbmQgc3RyZXRjaCBvdXQgdGhpbmUgaGFuZCB1cG9uIHRoZSB3YXRlcnMgb2YgRWd5cHQsIHVwb24gdGhlaXIgc3RyZWFtcywgdXBvbiB0aGVpciByaXZlcnMsIGFuZCB1cG9uIHRoZWlyIHBvbmRzLCBhbmQgdXBvbiBhbGwgdGhlaXIgcG9vbHMgb2Ygd2F0ZXIsIHRoYXQgdGhleSBtYXkgYmVjb21lIGJsb29kOyBhbmQgdGhhdCB0aGVyZSBtYXkgYmUgYmxvb2QgdGhyb3VnaG91dCBhbGwgdGhlIGxhbmQgb2YgRWd5cHQsIGJvdGggaW4gdmVzc2VscyBvZiB3b29kLCBhbmQgaW4gdmVzc2VscyBvZiBzdG9uZS4KQW5kIE1vc2VzIGFuZCBBYXJvbiBkaWQgc28sIGFzIHRoZSBMT1JEIGNvbW1hbmRlZDsgYW5kIGhlIGxpZnRlZCB1cCB0aGUgcm9kLCBhbmQgc21vdGUgdGhlIHdhdGVycyB0aGF0IHdlcmUgaW4gdGhlIHJpdmVyLCBpbiB0aGUgc2lnaHQgb2YgUGhhcmFvaCwgYW5kIGluIHRoZSBzaWdodCBvZiBoaXMgc2VydmFudHM7IGFuZCBhbGwgdGhlIHdhdGVycyB0aGF0IHdlcmUgaW4gdGhlIHJpdmVyIHdlcmUgdHVybmVkIHRvIGJsb29kLgpBbmQgdGhlIGZpc2ggdGhhdCB3YXMgaW4gdGhlIHJpdmVyIGRpZWQ7IGFuZCB0aGUgcml2ZXIgc3RhbmssIGFuZCB0aGUgRWd5cHRpYW5zIGNvdWxkIG5vdCBkcmluayBvZiB0aGUgd2F0ZXIgb2YgdGhlIHJpdmVyOyBhbmQgdGhlcmUgd2FzIGJsb29kIHRocm91Z2hvdXQgYWxsIHRoZSBsYW5kIG9mIEVneXB0LgpBbmQgdGhlIG1hZ2ljaWFucyBvZiBFZ3lwdCBkaWQgc28gd2l0aCB0aGVpciBlbmNoYW50bWVudHM6IGFuZCBQaGFyYW9oJ3MgaGVhcnQgd2FzIGhhcmRlbmVkLCBuZWl0aGVyIGRpZCBoZSBoZWFya2VuIHVudG8gdGhlbTsgYXMgdGhlIExPUkQgaGFkIHNhaWQuCkFuZCBQaGFyYW9oIHR1cm5lZCBhbmQgd2VudCBpbnRvIGhpcyBob3VzZSwgbmVpdGhlciBkaWQgaGUgc2V0IGhpcyBoZWFydCB0byB0aGlzIGFsc28uCkFuZCBhbGwgdGhlIEVneXB0aWFucyBkaWdnZWQgcm91bmQgYWJvdXQgdGhlIHJpdmVyIGZvciB3YXRlciB0byBkcmluazsgZm9yIHRoZXkgY291bGQgbm90IGRyaW5rIG9mIHRoZSB3YXRlciBvZiB0aGUgcml2ZXIuCkFuZCBzZXZlbiBkYXlzIHdlcmUgZnVsZmlsbGVkLCBhZnRlciB0aGF0IHRoZSBMT1JEIGhhZCBzbWl0dGVuIHRoZSByaXZlci4KQW5kIHRoZSBMT1JEIHNwYWtlIHVudG8gTW9zZXMsIEdvIHVudG8gUGhhcmFvaCwgYW5kIHNheSB1bnRvIGhpbSwgVGh1cyBzYWl0aCB0aGUgTE9SRCwgTGV0IG15IHBlb3BsZSBnbywgdGhhdCB0aGV5IG1heSBzZXJ2ZSBtZS4KQW5kIGlmIHRob3UgcmVmdXNlIHRvIGxldCB0aGVtIGdvLCBiZWhvbGQsIEkgd2lsbCBzbWl0ZSBhbGwgdGh5IGJvcmRlcnMgd2l0aCBmcm9nczoKQW5kIHRoZSByaXZlciBzaGFsbCBicmluZyBmb3J0aCBmcm9ncyBhYnVuZGFudGx5LCB3aGljaCBzaGFsbCBnbyB1cCBhbmQgY29tZSBpbnRvIHRoaW5lIGhvdXNlLCBhbmQgaW50byB0aHkgYmVkY2hhbWJlciwgYW5kIHVwb24gdGh5IGJlZCwgYW5kIGludG8gdGhlIGhvdXNlIG9mIHRoeSBzZXJ2YW50cywgYW5kIHVwb24gdGh5IHBlb3BsZSwgYW5kIGludG8gdGhpbmUgb3ZlbnMsIGFuZCBpbnRvIHRoeSBrbmVhZGluZ3Ryb3VnaHM6CkFuZCB0aGUgZnJvZ3Mgc2hhbGwgY29tZSB1cCBib3RoIG9uIHRoZWUsIGFuZCB1cG9uIHRoeSBwZW9wbGUsIGFuZCB1cG9uIGFsbCB0aHkgc2VydmFudHMuCkFuZCB0aGUgTE9SRCBzcGFrZSB1bnRvIE1vc2VzLCBTYXkgdW50byBBYXJvbiwgU3RyZXRjaCBmb3J0aCB0aGluZSBoYW5kIHdpdGggdGh5IHJvZCBvdmVyIHRoZSBzdHJlYW1zLCBvdmVyIHRoZSByaXZlcnMsIGFuZCBvdmVyIHRoZSBwb25kcywgYW5kIGNhdXNlIGZyb2dzIHRvIGNvbWUgdXAgdXBvbiB0aGUgbGFuZCBvZiBFZ3lwdC4KQW5kIEFhcm9uIHN0cmV0Y2hlZCBvdXQgaGlzIGhhbmQgb3ZlciB0aGUgd2F0ZXJzIG9mIEVneXB0OyBhbmQgdGhlIGZyb2dzIGNhbWUgdXAsIGFuZCBjb3ZlcmVkIHRoZSBsYW5kIG9mIEVneXB0LgpBbmQgdGhlIG1hZ2ljaWFucyBkaWQgc28gd2l0aCB0aGVpciBlbmNoYW50bWVudHMsIGFuZCBicm91Z2h0IHVwIGZyb2dzIHVwb24gdGhlIGxhbmQgb2YgRWd5cHQuClRoZW4gUGhhcmFvaCBjYWxsZWQgZm9yIE1vc2VzIGFuZCBBYXJvbiwgYW5kIHNhaWQsIEludHJlYXQgdGhlIExPUkQsIHRoYXQgaGUgbWF5IHRha2UgYXdheSB0aGUgZnJvZ3MgZnJvbSBtZSwgYW5kIGZyb20gbXkgcGVvcGxlOyBhbmQgSSB3aWxsIGxldCB0aGUgcGVvcGxlIGdvLCB0aGF0IHRoZXkgbWF5IGRvIHNhY3JpZmljZSB1bnRvIHRoZSBMT1JELgpBbmQgTW9zZXMgc2FpZCB1bnRvIFBoYXJhb2gsIEdsb3J5IG92ZXIgbWU6IHdoZW4gc2hhbGwgSSBpbnRyZWF0IGZvciB0aGVlLCBhbmQgZm9yIHRoeSBzZXJ2YW50cywgYW5kIGZvciB0aHkgcGVvcGxlLCB0byBkZXN0cm95IHRoZSBmcm9ncyBmcm9tIHRoZWUgYW5kIHRoeSBob3VzZXMsIHRoYXQgdGhleSBtYXkgcmVtYWluIGluIHRoZSByaXZlciBvbmx5PwpBbmQgaGUgc2FpZCwgVG8gbW9ycm93LiBBbmQgaGUgc2FpZCwgQmUgaXQgYWNjb3JkaW5nIHRvIHRoeSB3b3JkOiB0aGF0IHRob3UgbWF5ZXN0IGtub3cgdGhhdCB0aGVyZSBpcyBub25lIGxpa2UgdW50byB0aGUgTE9SRCBvdXIgR29kLgpBbmQgdGhlIGZyb2dzIHNoYWxsIGRlcGFydCBmcm9tIHRoZWUsIGFuZCBmcm9tIHRoeSBob3VzZXMsIGFuZCBmcm9tIHRoeSBzZXJ2YW50cywgYW5kIGZyb20gdGh5IHBlb3BsZTsgdGhleSBzaGFsbCByZW1haW4gaW4gdGhlIHJpdmVyIG9ubHkuCkFuZCBNb3NlcyBhbmQgQWFyb24gd2VudCBvdXQgZnJvbSBQaGFyYW9oOiBhbmQgTW9zZXMgY3JpZWQgdW50byB0aGUgTE9SRCBiZWNhdXNlIG9mIHRoZSBmcm9ncyB3aGljaCBoZSBoYWQgYnJvdWdodCBhZ2FpbnN0IFBoYXJhb2guCkFuZCB0aGUgTE9SRCBkaWQgYWNjb3JkaW5nIHRvIHRoZSB3b3JkIG9mIE1vc2VzOyBhbmQgdGhlIGZyb2dzIGRpZWQgb3V0IG9mIHRoZSBob3VzZXMsIG91dCBvZiB0aGUgdmlsbGFnZXMsIGFuZCBvdXQgb2YgdGhlIGZpZWxkcy4KQW5kIHRoZXkgZ2F0aGVyZWQgdGhlbSB0b2dldGhlciB1cG9uIGhlYXBzOiBhbmQgdGhlIGxhbmQgc3RhbmsuCkJ1dCB3aGVuIFBoYXJhb2ggc2F3IHRoYXQgdGhlcmUgd2FzIHJlc3BpdGUsIGhlIGhhcmRlbmVkIGhpcyBoZWFydCwgYW5kIGhlYXJrZW5lZCBub3QgdW50byB0aGVtOyBhcyB0aGUgTE9SRCBoYWQgc2FpZC4KQW5kIHRoZSBMT1JEIHNhaWQgdW50byBNb3NlcywgU2F5IHVudG8gQWFyb24sIFN0cmV0Y2ggb3V0IHRoeSByb2QsIGFuZCBzbWl0ZSB0aGUgZHVzdCBvZiB0aGUgbGFuZCwgdGhhdCBpdCBtYXkgYmVjb21lIGxpY2UgdGhyb3VnaG91dCBhbGwgdGhlIGxhbmQgb2YgRWd5cHQuCkFuZCB0aGV5IGRpZCBzbzsgZm9yIEFhcm9uIHN0cmV0Y2hlZCBvdXQgaGlzIGhhbmQgd2l0aCBoaXMgcm9kLCBhbmQgc21vdGUgdGhlIGR1c3Qgb2YgdGhlIGVhcnRoLCBhbmQgaXQgYmVjYW1lIGxpY2UgaW4gbWFuLCBhbmQgaW4gYmVhc3Q7IGFsbCB0aGUgZHVzdCBvZiB0aGUgbGFuZCBiZWNhbWUgbGljZSB0aHJvdWdob3V0IGFsbCB0aGUgbGFuZCBvZiBFZ3lwdC4KQW5kIHRoZSBtYWdpY2lhbnMgZGlkIHNvIHdpdGggdGhlaXIgZW5jaGFudG1lbnRzIHRvIGJyaW5nIGZvcnRoIGxpY2UsIGJ1dCB0aGV5IGNvdWxkIG5vdDogc28gdGhlcmUgd2VyZSBsaWNlIHVwb24gbWFuLCBhbmQgdXBvbiBiZWFzdC4KVGhlbiB0aGUgbWFnaWNpYW5zIHNhaWQgdW50byBQaGFyYW9oLCBUaGlzIGlzIHRoZSBmaW5nZXIgb2YgR29kOiBhbmQgUGhhcmFvaCdzIGhlYXJ0IHdhcyBoYXJkZW5lZCwgYW5kIGhlIGhlYXJrZW5lZCBub3QgdW50byB0aGVtOyBhcyB0aGUgTE9SRCBoYWQgc2FpZC4KQW5kIHRoZSBMT1JEIHNhaWQgdW50byBNb3NlcywgUmlzZSB1cCBlYXJseSBpbiB0aGUgbW9ybmluZywgYW5kIHN0YW5kIGJlZm9yZSBQaGFyYW9oOyBsbywgaGUgY29tZXRoIGZvcnRoIHRvIHRoZSB3YXRlcjsgYW5kIHNheSB1bnRvIGhpbSwgVGh1cyBzYWl0aCB0aGUgTE9SRCwgTGV0IG15IHBlb3BsZSBnbywgdGhhdCB0aGV5IG1heSBzZXJ2ZSBtZS4KRWxzZSwgaWYgdGhvdSB3aWx0IG5vdCBsZXQgbXkgcGVvcGxlIGdvLCBiZWhvbGQsIEkgd2lsbCBzZW5kIHN3YXJtcyBvZiBmbGllcyB1cG9uIHRoZWUsIGFuZCB1cG9uIHRoeSBzZXJ2YW50cywgYW5kIHVwb24gdGh5IHBlb3BsZSwgYW5kIGludG8gdGh5IGhvdXNlczogYW5kIHRoZSBob3VzZXMgb2YgdGhlIEVneXB0aWFucyBzaGFsbCBiZSBmdWxsIG9mIHN3YXJtcyBvZiBmbGllcywgYW5kIGFsc28gdGhlIGdyb3VuZCB3aGVyZW9uIHRoZXkgYXJlLgpBbmQgSSB3aWxsIHNldmVyIGluIHRoYXQgZGF5IHRoZSBsYW5kIG9mIEdvc2hlbiwgaW4gd2hpY2ggbXkgcGVvcGxlIGR3ZWxsLCB0aGF0IG5vIHN3YXJtcyBvZiBmbGllcyBzaGFsbCBiZSB0aGVyZTsgdG8gdGhlIGVuZCB0aG91IG1heWVzdCBrbm93IHRoYXQgSSBhbSB0aGUgTE9SRCBpbiB0aGUgbWlkc3Qgb2YgdGhlIGVhcnRoLgpBbmQgSSB3aWxsIHB1dCBhIGRpdmlzaW9uIGJldHdlZW4gbXkgcGVvcGxlIGFuZCB0aHkgcGVvcGxlOiB0byBtb3Jyb3cgc2hhbGwgdGhpcyBzaWduIGJlLgpBbmQgdGhlIExPUkQgZGlkIHNvOyBhbmQgdGhlcmUgY2FtZSBhIGdyaWV2b3VzIHN3YXJtIG9mIGZsaWVzIGludG8gdGhlIGhvdXNlIG9mIFBoYXJhb2gsIGFuZCBpbnRvIGhpcyBzZXJ2YW50cycgaG91c2VzLCBhbmQgaW50byBhbGwgdGhlIGxhbmQgb2YgRWd5cHQ6IHRoZSBsYW5kIHdhcyBjb3JydXB0ZWQgYnkgcmVhc29uIG9mIHRoZSBzd2FybSBvZiBmbGllcy4KQW5kIFBoYXJhb2ggY2FsbGVkIGZvciBNb3NlcyBhbmQgZm9yIEFhcm9uLCBhbmQgc2FpZCwgR28geWUsIHNhY3JpZmljZSB0byB5b3VyIEdvZCBpbiB0aGUgbGFuZC4KQW5kIE1vc2VzIHNhaWQsIEl0IGlzIG5vdCBtZWV0IHNvIHRvIGRvOyBmb3Igd2Ugc2hhbGwgc2FjcmlmaWNlIHRoZSBhYm9taW5hdGlvbiBvZiB0aGUgRWd5cHRpYW5zIHRvIHRoZSBMT1JEIG91ciBHb2Q6IGxvLCBzaGFsbCB3ZSBzYWNyaWZpY2UgdGhlIGFib21pbmF0aW9uIG9mIHRoZSBFZ3lwdGlhbnMgYmVmb3JlIHRoZWlyIGV5ZXMsIGFuZCB3aWxsIHRoZXkgbm90IHN0b25lIHVzPwpXZSB3aWxsIGdvIHRocmVlIGRheXMnIGpvdXJuZXkgaW50byB0aGUgd2lsZGVybmVzcywgYW5kIHNhY3JpZmljZSB0byB0aGUgTE9SRCBvdXIgR29kLCBhcyBoZSBzaGFsbCBjb21tYW5kIHVzLgpBbmQgUGhhcmFvaCBzYWlkLCBJIHdpbGwgbGV0IHlvdSBnbywgdGhhdCB5ZSBtYXkgc2FjcmlmaWNlIHRvIHRoZSBMT1JEIHlvdXIgR29kIGluIHRoZSB3aWxkZXJuZXNzOyBvbmx5IHllIHNoYWxsIG5vdCBnbyB2ZXJ5IGZhciBhd2F5OiBpbnRyZWF0IGZvciBtZS4KQW5kIE1vc2VzIHNhaWQsIEJlaG9sZCwgSSBnbyBvdXQgZnJvbSB0aGVlLCBhbmQgSSB3aWxsIGludHJlYXQgdGhlIExPUkQgdGhhdCB0aGUgc3dhcm1zIG9mIGZsaWVzIG1heSBkZXBhcnQgZnJvbSBQaGFyYW9oLCBmcm9tIGhpcyBzZXJ2YW50cywgYW5kIGZyb20gaGlzIHBlb3BsZSwgdG8gbW9ycm93OiBidXQgbGV0IG5vdCBQaGFyYW9oIGRlYWwgZGVjZWl0ZnVsbHkgYW55IG1vcmUgaW4gbm90IGxldHRpbmcgdGhlIHBlb3BsZSBnbyB0byBzYWNyaWZpY2UgdG8gdGhlIExPUkQuCkFuZCBNb3NlcyB3ZW50IG91dCBmcm9tIFBoYXJhb2gsIGFuZCBpbnRyZWF0ZWQgdGhlIExPUkQuCkFuZCB0aGUgTE9SRCBkaWQgYWNjb3JkaW5nIHRvIHRoZSB3b3JkIG9mIE1vc2VzOyBhbmQgaGUgcmVtb3ZlZCB0aGUgc3dhcm1zIG9mIGZsaWVzIGZyb20gUGhhcmFvaCwgZnJvbSBoaXMgc2VydmFudHMsIGFuZCBmcm9tIGhpcyBwZW9wbGU7IHRoZXJlIHJlbWFpbmVkIG5vdCBvbmUuCkFuZCBQaGFyYW9oIGhhcmRlbmVkIGhpcyBoZWFydCBhdCB0aGlzIHRpbWUgYWxzbywgbmVpdGhlciB3b3VsZCBoZSBsZXQgdGhlIHBlb3BsZSBnby4KVGhlbiB0aGUgTE9SRCBzYWlkIHVudG8gTW9zZXMsIEdvIGluIHVudG8gUGhhcmFvaCwgYW5kIHRlbGwgaGltLCBUaHVzIHNhaXRoIHRoZSBMT1JEIEdvZCBvZiB0aGUgSGVicmV3cywgTGV0IG15IHBlb3BsZSBnbywgdGhhdCB0aGV5IG1heSBzZXJ2ZSBtZS4KRm9yIGlmIHRob3UgcmVmdXNlIHRvIGxldCB0aGVtIGdvLCBhbmQgd2lsdCBob2xkIHRoZW0gc3RpbGwsCkJlaG9sZCwgdGhlIGhhbmQgb2YgdGhlIExPUkQgaXMgdXBvbiB0aHkgY2F0dGxlIHdoaWNoIGlzIGluIHRoZSBmaWVsZCwgdXBvbiB0aGUgaG9yc2VzLCB1cG9uIHRoZSBhc3NlcywgdXBvbiB0aGUgY2FtZWxzLCB1cG9uIHRoZSBveGVuLCBhbmQgdXBvbiB0aGUgc2hlZXA6IHRoZXJlIHNoYWxsIGJlIGEgdmVyeSBncmlldm91cyBtdXJyYWluLgpBbmQgdGhlIExPUkQgc2hhbGwgc2V2ZXIgYmV0d2VlbiB0aGUgY2F0dGxlIG9mIElzcmFlbCBhbmQgdGhlIGNhdHRsZSBvZiBFZ3lwdDogYW5kIHRoZXJlIHNoYWxsIG5vdGhpbmcgZGllIG9mIGFsbCB0aGF0IGlzIHRoZSBjaGlsZHJlbidzIG9mIElzcmFlbC4KQW5kIHRoZSBMT1JEIGFwcG9pbnRlZCBhIHNldCB0aW1lLCBzYXlpbmcsIFRvIG1vcnJvdyB0aGUgTE9SRCBzaGFsbCBkbyB0aGlzIHRoaW5nIGluIHRoZSBsYW5kLgpBbmQgdGhlIExPUkQgZGlkIHRoYXQgdGhpbmcgb24gdGhlIG1vcnJvdywgYW5kIGFsbCB0aGUgY2F0dGxlIG9mIEVneXB0IGRpZWQ6IGJ1dCBvZiB0aGUgY2F0dGxlIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgZGllZCBub3Qgb25lLgpBbmQgUGhhcmFvaCBzZW50LCBhbmQsIGJlaG9sZCwgdGhlcmUgd2FzIG5vdCBvbmUgb2YgdGhlIGNhdHRsZSBvZiB0aGUgSXNyYWVsaXRlcyBkZWFkLiBBbmQgdGhlIGhlYXJ0IG9mIFBoYXJhb2ggd2FzIGhhcmRlbmVkLCBhbmQgaGUgZGlkIG5vdCBsZXQgdGhlIHBlb3BsZSBnby4KQW5kIHRoZSBMT1JEIHNhaWQgdW50byBNb3NlcyBhbmQgdW50byBBYXJvbiwgVGFrZSB0byB5b3UgaGFuZGZ1bHMgb2YgYXNoZXMgb2YgdGhlIGZ1cm5hY2UsIGFuZCBsZXQgTW9zZXMgc3ByaW5rbGUgaXQgdG93YXJkIHRoZSBoZWF2ZW4gaW4gdGhlIHNpZ2h0IG9mIFBoYXJhb2guCkFuZCBpdCBzaGFsbCBiZWNvbWUgc21hbGwgZHVzdCBpbiBhbGwgdGhlIGxhbmQgb2YgRWd5cHQsIGFuZCBzaGFsbCBiZSBhIGJvaWwgYnJlYWtpbmcgZm9ydGggd2l0aCBibGFpbnMgdXBvbiBtYW4sIGFuZCB1cG9uIGJlYXN0LCB0aHJvdWdob3V0IGFsbCB0aGUgbGFuZCBvZiBFZ3lwdC4KQW5kIHRoZXkgdG9vayBhc2hlcyBvZiB0aGUgZnVybmFjZSwgYW5kIHN0b29kIGJlZm9yZSBQaGFyYW9oOyBhbmQgTW9zZXMgc3ByaW5rbGVkIGl0IHVwIHRvd2FyZCBoZWF2ZW47IGFuZCBpdCBiZWNhbWUgYSBib2lsIGJyZWFraW5nIGZvcnRoIHdpdGggYmxhaW5zIHVwb24gbWFuLCBhbmQgdXBvbiBiZWFzdC4KQW5kIHRoZSBtYWdpY2lhbnMgY291bGQgbm90IHN0YW5kIGJlZm9yZSBNb3NlcyBiZWNhdXNlIG9mIHRoZSBib2lsczsgZm9yIHRoZSBib2lsIHdhcyB1cG9uIHRoZSBtYWdpY2lhbnMsIGFuZCB1cG9uIGFsbCB0aGUgRWd5cHRpYW5zLgpBbmQgdGhlIExPUkQgaGFyZGVuZWQgdGhlIGhlYXJ0IG9mIFBoYXJhb2gsIGFuZCBoZSBoZWFya2VuZWQgbm90IHVudG8gdGhlbTsgYXMgdGhlIExPUkQgaGFkIHNwb2tlbiB1bnRvIE1vc2VzLgpBbmQgdGhlIExPUkQgc2FpZCB1bnRvIE1vc2VzLCBSaXNlIHVwIGVhcmx5IGluIHRoZSBtb3JuaW5nLCBhbmQgc3RhbmQgYmVmb3JlIFBoYXJhb2gsIGFuZCBzYXkgdW50byBoaW0sIFRodXMgc2FpdGggdGhlIExPUkQgR29kIG9mIHRoZSBIZWJyZXdzLCBMZXQgbXkgcGVvcGxlIGdvLCB0aGF0IHRoZXkgbWF5IHNlcnZlIG1lLgpGb3IgSSB3aWxsIGF0IHRoaXMgdGltZSBzZW5kIGFsbCBteSBwbGFndWVzIHVwb24gdGhpbmUgaGVhcnQsIGFuZCB1cG9uIHRoeSBzZXJ2YW50cywgYW5kIHVwb24gdGh5IHBlb3BsZTsgdGhhdCB0aG91IG1heWVzdCBrbm93IHRoYXQgdGhlcmUgaXMgbm9uZSBsaWtlIG1lIGluIGFsbCB0aGUgZWFydGguCkZvciBub3cgSSB3aWxsIHN0cmV0Y2ggb3V0IG15IGhhbmQsIHRoYXQgSSBtYXkgc21pdGUgdGhlZSBhbmQgdGh5IHBlb3BsZSB3aXRoIHBlc3RpbGVuY2U7IGFuZCB0aG91IHNoYWx0IGJlIGN1dCBvZmYgZnJvbSB0aGUgZWFydGguCkFuZCBpbiB2ZXJ5IGRlZWQgZm9yIHRoaXMgY2F1c2UgaGF2ZSBJIHJhaXNlZCB0aGVlIHVwLCBmb3IgdG8gc2hldyBpbiB0aGVlIG15IHBvd2VyOyBhbmQgdGhhdCBteSBuYW1lIG1heSBiZSBkZWNsYXJlZCB0aHJvdWdob3V0IGFsbCB0aGUgZWFydGguCkFzIHlldCBleGFsdGVzdCB0aG91IHRoeXNlbGYgYWdhaW5zdCBteSBwZW9wbGUsIHRoYXQgdGhvdSB3aWx0IG5vdCBsZXQgdGhlbSBnbz8KQmVob2xkLCB0byBtb3Jyb3cgYWJvdXQgdGhpcyB0aW1lIEkgd2lsbCBjYXVzZSBpdCB0byByYWluIGEgdmVyeSBncmlldm91cyBoYWlsLCBzdWNoIGFzIGhhdGggbm90IGJlZW4gaW4gRWd5cHQgc2luY2UgdGhlIGZvdW5kYXRpb24gdGhlcmVvZiBldmVuIHVudGlsIG5vdy4KU2VuZCB0aGVyZWZvcmUgbm93LCBhbmQgZ2F0aGVyIHRoeSBjYXR0bGUsIGFuZCBhbGwgdGhhdCB0aG91IGhhc3QgaW4gdGhlIGZpZWxkOyBmb3IgdXBvbiBldmVyeSBtYW4gYW5kIGJlYXN0IHdoaWNoIHNoYWxsIGJlIGZvdW5kIGluIHRoZSBmaWVsZCwgYW5kIHNoYWxsIG5vdCBiZSBicm91Z2h0IGhvbWUsIHRoZSBoYWlsIHNoYWxsIGNvbWUgZG93biB1cG9uIHRoZW0sIGFuZCB0aGV5IHNoYWxsIGRpZS4KSGUgdGhhdCBmZWFyZWQgdGhlIHdvcmQgb2YgdGhlIExPUkQgYW1vbmcgdGhlIHNlcnZhbnRzIG9mIFBoYXJhb2ggbWFkZSBoaXMgc2VydmFudHMgYW5kIGhpcyBjYXR0bGUgZmxlZSBpbnRvIHRoZSBob3VzZXM6CkFuZCBoZSB0aGF0IHJlZ2FyZGVkIG5vdCB0aGUgd29yZCBvZiB0aGUgTE9SRCBsZWZ0IGhpcyBzZXJ2YW50cyBhbmQgaGlzIGNhdHRsZSBpbiB0aGUgZmllbGQuCkFuZCB0aGUgTE9SRCBzYWlkIHVudG8gTW9zZXMsIFN0cmV0Y2ggZm9ydGggdGhpbmUgaGFuZCB0b3dhcmQgaGVhdmVuLCB0aGF0IHRoZXJlIG1heSBiZSBoYWlsIGluIGFsbCB0aGUgbGFuZCBvZiBFZ3lwdCwgdXBvbiBtYW4sIGFuZCB1cG9uIGJlYXN0LCBhbmQgdXBvbiBldmVyeSBoZXJiIG9mIHRoZSBmaWVsZCwgdGhyb3VnaG91dCB0aGUgbGFuZCBvZiBFZ3lwdC4KQW5kIE1vc2VzIHN0cmV0Y2hlZCBmb3J0aCBoaXMgcm9kIHRvd2FyZCBoZWF2ZW46IGFuZCB0aGUgTE9SRCBzZW50IHRodW5kZXIgYW5kIGhhaWwsIGFuZCB0aGUgZmlyZSByYW4gYWxvbmcgdXBvbiB0aGUgZ3JvdW5kOyBhbmQgdGhlIExPUkQgcmFpbmVkIGhhaWwgdXBvbiB0aGUgbGFuZCBvZiBFZ3lwdC4KU28gdGhlcmUgd2FzIGhhaWwsIGFuZCBmaXJlIG1pbmdsZWQgd2l0aCB0aGUgaGFpbCwgdmVyeSBncmlldm91cywgc3VjaCBhcyB0aGVyZSB3YXMgbm9uZSBsaWtlIGl0IGluIGFsbCB0aGUgbGFuZCBvZiBFZ3lwdCBzaW5jZSBpdCBiZWNhbWUgYSBuYXRpb24uCkFuZCB0aGUgaGFpbCBzbW90ZSB0aHJvdWdob3V0IGFsbCB0aGUgbGFuZCBvZiBFZ3lwdCBhbGwgdGhhdCB3YXMgaW4gdGhlIGZpZWxkLCBib3RoIG1hbiBhbmQgYmVhc3Q7IGFuZCB0aGUgaGFpbCBzbW90ZSBldmVyeSBoZXJiIG9mIHRoZSBmaWVsZCwgYW5kIGJyYWtlIGV2ZXJ5IHRyZWUgb2YgdGhlIGZpZWxkLgpPbmx5IGluIHRoZSBsYW5kIG9mIEdvc2hlbiwgd2hlcmUgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCB3ZXJlLCB3YXMgdGhlcmUgbm8gaGFpbC4KQW5kIFBoYXJhb2ggc2VudCwgYW5kIGNhbGxlZCBmb3IgTW9zZXMgYW5kIEFhcm9uLCBhbmQgc2FpZCB1bnRvIHRoZW0sIEkgaGF2ZSBzaW5uZWQgdGhpcyB0aW1lOiB0aGUgTE9SRCBpcyByaWdodGVvdXMsIGFuZCBJIGFuZCBteSBwZW9wbGUgYXJlIHdpY2tlZC4KSW50cmVhdCB0aGUgTE9SRCAoZm9yIGl0IGlzIGVub3VnaCkgdGhhdCB0aGVyZSBiZSBubyBtb3JlIG1pZ2h0eSB0aHVuZGVyaW5ncyBhbmQgaGFpbDsgYW5kIEkgd2lsbCBsZXQgeW91IGdvLCBhbmQgeWUgc2hhbGwgc3RheSBubyBsb25nZXIuCkFuZCBNb3NlcyBzYWlkIHVudG8gaGltLCBBcyBzb29uIGFzIEkgYW0gZ29uZSBvdXQgb2YgdGhlIGNpdHksIEkgd2lsbCBzcHJlYWQgYWJyb2FkIG15IGhhbmRzIHVudG8gdGhlIExPUkQ7IGFuZCB0aGUgdGh1bmRlciBzaGFsbCBjZWFzZSwgbmVpdGhlciBzaGFsbCB0aGVyZSBiZSBhbnkgbW9yZSBoYWlsOyB0aGF0IHRob3UgbWF5ZXN0IGtub3cgaG93IHRoYXQgdGhlIGVhcnRoIGlzIHRoZSBMT1JEJ3MuCkJ1dCBhcyBmb3IgdGhlZSBhbmQgdGh5IHNlcnZhbnRzLCBJIGtub3cgdGhhdCB5ZSB3aWxsIG5vdCB5ZXQgZmVhciB0aGUgTE9SRCBHb2QuCkFuZCB0aGUgZmxheCBhbmQgdGhlIGJhcmxleSB3YXMgc21pdHRlbjogZm9yIHRoZSBiYXJsZXkgd2FzIGluIHRoZSBlYXIsIGFuZCB0aGUgZmxheCB3YXMgYm9sbGVkLgpCdXQgdGhlIHdoZWF0IGFuZCB0aGUgcmllIHdlcmUgbm90IHNtaXR0ZW46IGZvciB0aGV5IHdlcmUgbm90IGdyb3duIHVwLgpBbmQgTW9zZXMgd2VudCBvdXQgb2YgdGhlIGNpdHkgZnJvbSBQaGFyYW9oLCBhbmQgc3ByZWFkIGFicm9hZCBoaXMgaGFuZHMgdW50byB0aGUgTE9SRDogYW5kIHRoZSB0aHVuZGVycyBhbmQgaGFpbCBjZWFzZWQsIGFuZCB0aGUgcmFpbiB3YXMgbm90IHBvdXJlZCB1cG9uIHRoZSBlYXJ0aC4KQW5kIHdoZW4gUGhhcmFvaCBzYXcgdGhhdCB0aGUgcmFpbiBhbmQgdGhlIGhhaWwgYW5kIHRoZSB0aHVuZGVycyB3ZXJlIGNlYXNlZCwgaGUgc2lubmVkIHlldCBtb3JlLCBhbmQgaGFyZGVuZWQgaGlzIGhlYXJ0LCBoZSBhbmQgaGlzIHNlcnZhbnRzLgpBbmQgdGhlIGhlYXJ0IG9mIFBoYXJhb2ggd2FzIGhhcmRlbmVkLCBuZWl0aGVyIHdvdWxkIGhlIGxldCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGdvOyBhcyB0aGUgTE9SRCBoYWQgc3Bva2VuIGJ5IE1vc2VzLgpBbmQgdGhlIExPUkQgc2FpZCB1bnRvIE1vc2VzLCBHbyBpbiB1bnRvIFBoYXJhb2g6IGZvciBJIGhhdmUgaGFyZGVuZWQgaGlzIGhlYXJ0LCBhbmQgdGhlIGhlYXJ0IG9mIGhpcyBzZXJ2YW50cywgdGhhdCBJIG1pZ2h0IHNoZXcgdGhlc2UgbXkgc2lnbnMgYmVmb3JlIGhpbToKQW5kIHRoYXQgdGhvdSBtYXllc3QgdGVsbCBpbiB0aGUgZWFycyBvZiB0aHkgc29uLCBhbmQgb2YgdGh5IHNvbidzIHNvbiwgd2hhdCB0aGluZ3MgSSBoYXZlIHdyb3VnaHQgaW4gRWd5cHQsIGFuZCBteSBzaWducyB3aGljaCBJIGhhdmUgZG9uZSBhbW9uZyB0aGVtOyB0aGF0IHllIG1heSBrbm93IGhvdyB0aGF0IEkgYW0gdGhlIExPUkQuCkFuZCBNb3NlcyBhbmQgQWFyb24gY2FtZSBpbiB1bnRvIFBoYXJhb2gsIGFuZCBzYWlkIHVudG8gaGltLCBUaHVzIHNhaXRoIHRoZSBMT1JEIEdvZCBvZiB0aGUgSGVicmV3cywgSG93IGxvbmcgd2lsdCB0aG91IHJlZnVzZSB0byBodW1ibGUgdGh5c2VsZiBiZWZvcmUgbWU/IGxldCBteSBwZW9wbGUgZ28sIHRoYXQgdGhleSBtYXkgc2VydmUgbWUuCkVsc2UsIGlmIHRob3UgcmVmdXNlIHRvIGxldCBteSBwZW9wbGUgZ28sIGJlaG9sZCwgdG8gbW9ycm93IHdpbGwgSSBicmluZyB0aGUgbG9jdXN0cyBpbnRvIHRoeSBjb2FzdDoKQW5kIHRoZXkgc2hhbGwgY292ZXIgdGhlIGZhY2Ugb2YgdGhlIGVhcnRoLCB0aGF0IG9uZSBjYW5ub3QgYmUgYWJsZSB0byBzZWUgdGhlIGVhcnRoOiBhbmQgdGhleSBzaGFsbCBlYXQgdGhlIHJlc2lkdWUgb2YgdGhhdCB3aGljaCBpcyBlc2NhcGVkLCB3aGljaCByZW1haW5ldGggdW50byB5b3UgZnJvbSB0aGUgaGFpbCwgYW5kIHNoYWxsIGVhdCBldmVyeSB0cmVlIHdoaWNoIGdyb3dldGggZm9yIHlvdSBvdXQgb2YgdGhlIGZpZWxkOgpBbmQgdGhleSBzaGFsbCBmaWxsIHRoeSBob3VzZXMsIGFuZCB0aGUgaG91c2VzIG9mIGFsbCB0aHkgc2VydmFudHMsIGFuZCB0aGUgaG91c2VzIG9mIGFsbCB0aGUgRWd5cHRpYW5zOyB3aGljaCBuZWl0aGVyIHRoeSBmYXRoZXJzLCBub3IgdGh5IGZhdGhlcnMnIGZhdGhlcnMgaGF2ZSBzZWVuLCBzaW5jZSB0aGUgZGF5IHRoYXQgdGhleSB3ZXJlIHVwb24gdGhlIGVhcnRoIHVudG8gdGhpcyBkYXkuIEFuZCBoZSB0dXJuZWQgaGltc2VsZiwgYW5kIHdlbnQgb3V0IGZyb20gUGhhcmFvaC4KQW5kIFBoYXJhb2gncyBzZXJ2YW50cyBzYWlkIHVudG8gaGltLCBIb3cgbG9uZyBzaGFsbCB0aGlzIG1hbiBiZSBhIHNuYXJlIHVudG8gdXM/IGxldCB0aGUgbWVuIGdvLCB0aGF0IHRoZXkgbWF5IHNlcnZlIHRoZSBMT1JEIHRoZWlyIEdvZDoga25vd2VzdCB0aG91IG5vdCB5ZXQgdGhhdCBFZ3lwdCBpcyBkZXN0cm95ZWQ/CkFuZCBNb3NlcyBhbmQgQWFyb24gd2VyZSBicm91Z2h0IGFnYWluIHVudG8gUGhhcmFvaDogYW5kIGhlIHNhaWQgdW50byB0aGVtLCBHbywgc2VydmUgdGhlIExPUkQgeW91ciBHb2Q6IGJ1dCB3aG8gYXJlIHRoZXkgdGhhdCBzaGFsbCBnbz8KQW5kIE1vc2VzIHNhaWQsIFdlIHdpbGwgZ28gd2l0aCBvdXIgeW91bmcgYW5kIHdpdGggb3VyIG9sZCwgd2l0aCBvdXIgc29ucyBhbmQgd2l0aCBvdXIgZGF1Z2h0ZXJzLCB3aXRoIG91ciBmbG9ja3MgYW5kIHdpdGggb3VyIGhlcmRzIHdpbGwgd2UgZ287IGZvciB3ZSBtdXN0IGhvbGQgYSBmZWFzdCB1bnRvIHRoZSBMT1JELgpBbmQgaGUgc2FpZCB1bnRvIHRoZW0sIExldCB0aGUgTE9SRCBiZSBzbyB3aXRoIHlvdSwgYXMgSSB3aWxsIGxldCB5b3UgZ28sIGFuZCB5b3VyIGxpdHRsZSBvbmVzOiBsb29rIHRvIGl0OyBmb3IgZXZpbCBpcyBiZWZvcmUgeW91LgpOb3Qgc286IGdvIG5vdyB5ZSB0aGF0IGFyZSBtZW4sIGFuZCBzZXJ2ZSB0aGUgTE9SRDsgZm9yIHRoYXQgeWUgZGlkIGRlc2lyZS4gQW5kIHRoZXkgd2VyZSBkcml2ZW4gb3V0IGZyb20gUGhhcmFvaCdzIHByZXNlbmNlLgpBbmQgdGhlIExPUkQgc2FpZCB1bnRvIE1vc2VzLCBTdHJldGNoIG91dCB0aGluZSBoYW5kIG92ZXIgdGhlIGxhbmQgb2YgRWd5cHQgZm9yIHRoZSBsb2N1c3RzLCB0aGF0IHRoZXkgbWF5IGNvbWUgdXAgdXBvbiB0aGUgbGFuZCBvZiBFZ3lwdCwgYW5kIGVhdCBldmVyeSBoZXJiIG9mIHRoZSBsYW5kLCBldmVuIGFsbCB0aGF0IHRoZSBoYWlsIGhhdGggbGVmdC4KQW5kIE1vc2VzIHN0cmV0Y2hlZCBmb3J0aCBoaXMgcm9kIG92ZXIgdGhlIGxhbmQgb2YgRWd5cHQsIGFuZCB0aGUgTE9SRCBicm91Z2h0IGFuIGVhc3Qgd2luZCB1cG9uIHRoZSBsYW5kIGFsbCB0aGF0IGRheSwgYW5kIGFsbCB0aGF0IG5pZ2h0OyBhbmQgd2hlbiBpdCB3YXMgbW9ybmluZywgdGhlIGVhc3Qgd2luZCBicm91Z2h0IHRoZSBsb2N1c3RzLgpBbmQgdGhlIGxvY3VzdCB3ZW50IHVwIG92ZXIgYWxsIHRoZSBsYW5kIG9mIEVneXB0LCBhbmQgcmVzdGVkIGluIGFsbCB0aGUgY29hc3RzIG9mIEVneXB0OiB2ZXJ5IGdyaWV2b3VzIHdlcmUgdGhleTsgYmVmb3JlIHRoZW0gdGhlcmUgd2VyZSBubyBzdWNoIGxvY3VzdHMgYXMgdGhleSwgbmVpdGhlciBhZnRlciB0aGVtIHNoYWxsIGJlIHN1Y2guCkZvciB0aGV5IGNvdmVyZWQgdGhlIGZhY2Ugb2YgdGhlIHdob2xlIGVhcnRoLCBzbyB0aGF0IHRoZSBsYW5kIHdhcyBkYXJrZW5lZDsgYW5kIHRoZXkgZGlkIGVhdCBldmVyeSBoZXJiIG9mIHRoZSBsYW5kLCBhbmQgYWxsIHRoZSBmcnVpdCBvZiB0aGUgdHJlZXMgd2hpY2ggdGhlIGhhaWwgaGFkIGxlZnQ6IGFuZCB0aGVyZSByZW1haW5lZCBub3QgYW55IGdyZWVuIHRoaW5nIGluIHRoZSB0cmVlcywgb3IgaW4gdGhlIGhlcmJzIG9mIHRoZSBmaWVsZCwgdGhyb3VnaCBhbGwgdGhlIGxhbmQgb2YgRWd5cHQuClRoZW4gUGhhcmFvaCBjYWxsZWQgZm9yIE1vc2VzIGFuZCBBYXJvbiBpbiBoYXN0ZTsgYW5kIGhlIHNhaWQsIEkgaGF2ZSBzaW5uZWQgYWdhaW5zdCB0aGUgTE9SRCB5b3VyIEdvZCwgYW5kIGFnYWluc3QgeW91LgpOb3cgdGhlcmVmb3JlIGZvcmdpdmUsIEkgcHJheSB0aGVlLCBteSBzaW4gb25seSB0aGlzIG9uY2UsIGFuZCBpbnRyZWF0IHRoZSBMT1JEIHlvdXIgR29kLCB0aGF0IGhlIG1heSB0YWtlIGF3YXkgZnJvbSBtZSB0aGlzIGRlYXRoIG9ubHkuCkFuZCBoZSB3ZW50IG91dCBmcm9tIFBoYXJhb2gsIGFuZCBpbnRyZWF0ZWQgdGhlIExPUkQuCkFuZCB0aGUgTE9SRCB0dXJuZWQgYSBtaWdodHkgc3Ryb25nIHdlc3Qgd2luZCwgd2hpY2ggdG9vayBhd2F5IHRoZSBsb2N1c3RzLCBhbmQgY2FzdCB0aGVtIGludG8gdGhlIFJlZCBzZWE7IHRoZXJlIHJlbWFpbmVkIG5vdCBvbmUgbG9jdXN0IGluIGFsbCB0aGUgY29hc3RzIG9mIEVneXB0LgpCdXQgdGhlIExPUkQgaGFyZGVuZWQgUGhhcmFvaCdzIGhlYXJ0LCBzbyB0aGF0IGhlIHdvdWxkIG5vdCBsZXQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBnby4KQW5kIHRoZSBMT1JEIHNhaWQgdW50byBNb3NlcywgU3RyZXRjaCBvdXQgdGhpbmUgaGFuZCB0b3dhcmQgaGVhdmVuLCB0aGF0IHRoZXJlIG1heSBiZSBkYXJrbmVzcyBvdmVyIHRoZSBsYW5kIG9mIEVneXB0LCBldmVuIGRhcmtuZXNzIHdoaWNoIG1heSBiZSBmZWx0LgpBbmQgTW9zZXMgc3RyZXRjaGVkIGZvcnRoIGhpcyBoYW5kIHRvd2FyZCBoZWF2ZW47IGFuZCB0aGVyZSB3YXMgYSB0aGljayBkYXJrbmVzcyBpbiBhbGwgdGhlIGxhbmQgb2YgRWd5cHQgdGhyZWUgZGF5czoKVGhleSBzYXcgbm90IG9uZSBhbm90aGVyLCBuZWl0aGVyIHJvc2UgYW55IGZyb20gaGlzIHBsYWNlIGZvciB0aHJlZSBkYXlzOiBidXQgYWxsIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgaGFkIGxpZ2h0IGluIHRoZWlyIGR3ZWxsaW5ncy4KQW5kIFBoYXJhb2ggY2FsbGVkIHVudG8gTW9zZXMsIGFuZCBzYWlkLCBHbyB5ZSwgc2VydmUgdGhlIExPUkQ7IG9ubHkgbGV0IHlvdXIgZmxvY2tzIGFuZCB5b3VyIGhlcmRzIGJlIHN0YXllZDogbGV0IHlvdXIgbGl0dGxlIG9uZXMgYWxzbyBnbyB3aXRoIHlvdS4KQW5kIE1vc2VzIHNhaWQsIFRob3UgbXVzdCBnaXZlIHVzIGFsc28gc2FjcmlmaWNlcyBhbmQgYnVybnQgb2ZmZXJpbmdzLCB0aGF0IHdlIG1heSBzYWNyaWZpY2UgdW50byB0aGUgTE9SRCBvdXIgR29kLgpPdXIgY2F0dGxlIGFsc28gc2hhbGwgZ28gd2l0aCB1czsgdGhlcmUgc2hhbGwgbm90IGFuIGhvb2YgYmUgbGVmdCBiZWhpbmQ7IGZvciB0aGVyZW9mIG11c3Qgd2UgdGFrZSB0byBzZXJ2ZSB0aGUgTE9SRCBvdXIgR29kOyBhbmQgd2Uga25vdyBub3Qgd2l0aCB3aGF0IHdlIG11c3Qgc2VydmUgdGhlIExPUkQsIHVudGlsIHdlIGNvbWUgdGhpdGhlci4KQnV0IHRoZSBMT1JEIGhhcmRlbmVkIFBoYXJhb2gncyBoZWFydCwgYW5kIGhlIHdvdWxkIG5vdCBsZXQgdGhlbSBnby4KQW5kIFBoYXJhb2ggc2FpZCB1bnRvIGhpbSwgR2V0IHRoZWUgZnJvbSBtZSwgdGFrZSBoZWVkIHRvIHRoeXNlbGYsIHNlZSBteSBmYWNlIG5vIG1vcmU7IGZvciBpbiB0aGF0IGRheSB0aG91IHNlZXN0IG15IGZhY2UgdGhvdSBzaGFsdCBkaWUuCkFuZCBNb3NlcyBzYWlkLCBUaG91IGhhc3Qgc3Bva2VuIHdlbGwsIEkgd2lsbCBzZWUgdGh5IGZhY2UgYWdhaW4gbm8gbW9yZS4KQW5kIHRoZSBMT1JEIHNhaWQgdW50byBNb3NlcywgWWV0IHdpbGwgSSBicmluZyBvbmUgcGxhZ3VlIG1vcmUgdXBvbiBQaGFyYW9oLCBhbmQgdXBvbiBFZ3lwdDsgYWZ0ZXJ3YXJkcyBoZSB3aWxsIGxldCB5b3UgZ28gaGVuY2U6IHdoZW4gaGUgc2hhbGwgbGV0IHlvdSBnbywgaGUgc2hhbGwgc3VyZWx5IHRocnVzdCB5b3Ugb3V0IGhlbmNlIGFsdG9nZXRoZXIuClNwZWFrIG5vdyBpbiB0aGUgZWFycyBvZiB0aGUgcGVvcGxlLCBhbmQgbGV0IGV2ZXJ5IG1hbiBib3Jyb3cgb2YgaGlzIG5laWdoYm91ciwgYW5kIGV2ZXJ5IHdvbWFuIG9mIGhlciBuZWlnaGJvdXIsIGpld2VscyBvZiBzaWx2ZXIgYW5kIGpld2VscyBvZiBnb2xkLgpBbmQgdGhlIExPUkQgZ2F2ZSB0aGUgcGVvcGxlIGZhdm91ciBpbiB0aGUgc2lnaHQgb2YgdGhlIEVneXB0aWFucy4gTW9yZW92ZXIgdGhlIG1hbiBNb3NlcyB3YXMgdmVyeSBncmVhdCBpbiB0aGUgbGFuZCBvZiBFZ3lwdCwgaW4gdGhlIHNpZ2h0IG9mIFBoYXJhb2gncyBzZXJ2YW50cywgYW5kIGluIHRoZSBzaWdodCBvZiB0aGUgcGVvcGxlLgpBbmQgTW9zZXMgc2FpZCwgVGh1cyBzYWl0aCB0aGUgTE9SRCwgQWJvdXQgbWlkbmlnaHQgd2lsbCBJIGdvIG91dCBpbnRvIHRoZSBtaWRzdCBvZiBFZ3lwdDoKQW5kIGFsbCB0aGUgZmlyc3Rib3JuIGluIHRoZSBsYW5kIG9mIEVneXB0IHNoYWxsIGRpZSwgZnJvbSB0aGUgZmlyc3QgYm9ybiBvZiBQaGFyYW9oIHRoYXQgc2l0dGV0aCB1cG9uIGhpcyB0aHJvbmUsIGV2ZW4gdW50byB0aGUgZmlyc3Rib3JuIG9mIHRoZSBtYWlkc2VydmFudCB0aGF0IGlzIGJlaGluZCB0aGUgbWlsbDsgYW5kIGFsbCB0aGUgZmlyc3Rib3JuIG9mIGJlYXN0cy4KQW5kIHRoZXJlIHNoYWxsIGJlIGEgZ3JlYXQgY3J5IHRocm91Z2hvdXQgYWxsIHRoZSBsYW5kIG9mIEVneXB0LCBzdWNoIGFzIHRoZXJlIHdhcyBub25lIGxpa2UgaXQsIG5vciBzaGFsbCBiZSBsaWtlIGl0IGFueSBtb3JlLgpCdXQgYWdhaW5zdCBhbnkgb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBzaGFsbCBub3QgYSBkb2cgbW92ZSBoaXMgdG9uZ3VlLCBhZ2FpbnN0IG1hbiBvciBiZWFzdDogdGhhdCB5ZSBtYXkga25vdyBob3cgdGhhdCB0aGUgTE9SRCBkb3RoIHB1dCBhIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgRWd5cHRpYW5zIGFuZCBJc3JhZWwuCkFuZCBhbGwgdGhlc2UgdGh5IHNlcnZhbnRzIHNoYWxsIGNvbWUgZG93biB1bnRvIG1lLCBhbmQgYm93IGRvd24gdGhlbXNlbHZlcyB1bnRvIG1lLCBzYXlpbmcsIEdldCB0aGVlIG91dCwgYW5kIGFsbCB0aGUgcGVvcGxlIHRoYXQgZm9sbG93IHRoZWU6IGFuZCBhZnRlciB0aGF0IEkgd2lsbCBnbyBvdXQuIEFuZCBoZSB3ZW50IG91dCBmcm9tIFBoYXJhb2ggaW4gYSBncmVhdCBhbmdlci4KQW5kIHRoZSBMT1JEIHNhaWQgdW50byBNb3NlcywgUGhhcmFvaCBzaGFsbCBub3QgaGVhcmtlbiB1bnRvIHlvdTsgdGhhdCBteSB3b25kZXJzIG1heSBiZSBtdWx0aXBsaWVkIGluIHRoZSBsYW5kIG9mIEVneXB0LgpBbmQgTW9zZXMgYW5kIEFhcm9uIGRpZCBhbGwgdGhlc2Ugd29uZGVycyBiZWZvcmUgUGhhcmFvaDogYW5kIHRoZSBMT1JEIGhhcmRlbmVkIFBoYXJhb2gncyBoZWFydCwgc28gdGhhdCBoZSB3b3VsZCBub3QgbGV0IHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgZ28gb3V0IG9mIGhpcyBsYW5kLgpBbmQgdGhlIExPUkQgc3Bha2UgdW50byBNb3NlcyBhbmQgQWFyb24gaW4gdGhlIGxhbmQgb2YgRWd5cHQgc2F5aW5nLApUaGlzIG1vbnRoIHNoYWxsIGJlIHVudG8geW91IHRoZSBiZWdpbm5pbmcgb2YgbW9udGhzOiBpdCBzaGFsbCBiZSB0aGUgZmlyc3QgbW9udGggb2YgdGhlIHllYXIgdG8geW91LgpTcGVhayB5ZSB1bnRvIGFsbCB0aGUgY29uZ3JlZ2F0aW9uIG9mIElzcmFlbCwgc2F5aW5nLCBJbiB0aGUgdGVudGggZGF5IG9mIHRoaXMgbW9udGggdGhleSBzaGFsbCB0YWtlIHRvIHRoZW0gZXZlcnkgbWFuIGEgbGFtYiwgYWNjb3JkaW5nIHRvIHRoZSBob3VzZSBvZiB0aGVpciBmYXRoZXJzLCBhIGxhbWIgZm9yIGFuIGhvdXNlOgpBbmQgaWYgdGhlIGhvdXNlaG9sZCBiZSB0b28gbGl0dGxlIGZvciB0aGUgbGFtYiwgbGV0IGhpbSBhbmQgaGlzIG5laWdoYm91ciBuZXh0IHVudG8gaGlzIGhvdXNlIHRha2UgaXQgYWNjb3JkaW5nIHRvIHRoZSBudW1iZXIgb2YgdGhlIHNvdWxzOyBldmVyeSBtYW4gYWNjb3JkaW5nIHRvIGhpcyBlYXRpbmcgc2hhbGwgbWFrZSB5b3VyIGNvdW50IGZvciB0aGUgbGFtYi4KWW91ciBsYW1iIHNoYWxsIGJlIHdpdGhvdXQgYmxlbWlzaCwgYSBtYWxlIG9mIHRoZSBmaXJzdCB5ZWFyOiB5ZSBzaGFsbCB0YWtlIGl0IG91dCBmcm9tIHRoZSBzaGVlcCwgb3IgZnJvbSB0aGUgZ29hdHM6CkFuZCB5ZSBzaGFsbCBrZWVwIGl0IHVwIHVudGlsIHRoZSBmb3VydGVlbnRoIGRheSBvZiB0aGUgc2FtZSBtb250aDogYW5kIHRoZSB3aG9sZSBhc3NlbWJseSBvZiB0aGUgY29uZ3JlZ2F0aW9uIG9mIElzcmFlbCBzaGFsbCBraWxsIGl0IGluIHRoZSBldmVuaW5nLgpBbmQgdGhleSBzaGFsbCB0YWtlIG9mIHRoZSBibG9vZCwgYW5kIHN0cmlrZSBpdCBvbiB0aGUgdHdvIHNpZGUgcG9zdHMgYW5kIG9uIHRoZSB1cHBlciBkb29yIHBvc3Qgb2YgdGhlIGhvdXNlcywgd2hlcmVpbiB0aGV5IHNoYWxsIGVhdCBpdC4KQW5kIHRoZXkgc2hhbGwgZWF0IHRoZSBmbGVzaCBpbiB0aGF0IG5pZ2h0LCByb2FzdCB3aXRoIGZpcmUsIGFuZCB1bmxlYXZlbmVkIGJyZWFkOyBhbmQgd2l0aCBiaXR0ZXIgaGVyYnMgdGhleSBzaGFsbCBlYXQgaXQuCkVhdCBub3Qgb2YgaXQgcmF3LCBub3Igc29kZGVuIGF0IGFsbCB3aXRoIHdhdGVyLCBidXQgcm9hc3Qgd2l0aCBmaXJlOyBoaXMgaGVhZCB3aXRoIGhpcyBsZWdzLCBhbmQgd2l0aCB0aGUgcHVydGVuYW5jZSB0aGVyZW9mLgpBbmQgeWUgc2hhbGwgbGV0IG5vdGhpbmcgb2YgaXQgcmVtYWluIHVudGlsIHRoZSBtb3JuaW5nOyBhbmQgdGhhdCB3aGljaCByZW1haW5ldGggb2YgaXQgdW50aWwgdGhlIG1vcm5pbmcgeWUgc2hhbGwgYnVybiB3aXRoIGZpcmUuCkFuZCB0aHVzIHNoYWxsIHllIGVhdCBpdDsgd2l0aCB5b3VyIGxvaW5zIGdpcmRlZCwgeW91ciBzaG9lcyBvbiB5b3VyIGZlZXQsIGFuZCB5b3VyIHN0YWZmIGluIHlvdXIgaGFuZDsgYW5kIHllIHNoYWxsIGVhdCBpdCBpbiBoYXN0ZTogaXQgaXMgdGhlIExPUkQncyBwYXNzb3Zlci4KRm9yIEkgd2lsbCBwYXNzIHRocm91Z2ggdGhlIGxhbmQgb2YgRWd5cHQgdGhpcyBuaWdodCwgYW5kIHdpbGwgc21pdGUgYWxsIHRoZSBmaXJzdGJvcm4gaW4gdGhlIGxhbmQgb2YgRWd5cHQsIGJvdGggbWFuIGFuZCBiZWFzdDsgYW5kIGFnYWluc3QgYWxsIHRoZSBnb2RzIG9mIEVneXB0IEkgd2lsbCBleGVjdXRlIGp1ZGdtZW50OiBJIGFtIHRoZSBMT1JELgpBbmQgdGhlIGJsb29kIHNoYWxsIGJlIHRvIHlvdSBmb3IgYSB0b2tlbiB1cG9uIHRoZSBob3VzZXMgd2hlcmUgeWUgYXJlOiBhbmQgd2hlbiBJIHNlZSB0aGUgYmxvb2QsIEkgd2lsbCBwYXNzIG92ZXIgeW91LCBhbmQgdGhlIHBsYWd1ZSBzaGFsbCBub3QgYmUgdXBvbiB5b3UgdG8gZGVzdHJveSB5b3UsIHdoZW4gSSBzbWl0ZSB0aGUgbGFuZCBvZiBFZ3lwdC4KQW5kIHRoaXMgZGF5IHNoYWxsIGJlIHVudG8geW91IGZvciBhIG1lbW9yaWFsOyBhbmQgeWUgc2hhbGwga2VlcCBpdCBhIGZlYXN0IHRvIHRoZSBMT1JEIHRocm91Z2hvdXQgeW91ciBnZW5lcmF0aW9uczsgeWUgc2hhbGwga2VlcCBpdCBhIGZlYXN0IGJ5IGFuIG9yZGluYW5jZSBmb3IgZXZlci4KU2V2ZW4gZGF5cyBzaGFsbCB5ZSBlYXQgdW5sZWF2ZW5lZCBicmVhZDsgZXZlbiB0aGUgZmlyc3QgZGF5IHllIHNoYWxsIHB1dCBhd2F5IGxlYXZlbiBvdXQgb2YgeW91ciBob3VzZXM6IGZvciB3aG9zb2V2ZXIgZWF0ZXRoIGxlYXZlbmVkIGJyZWFkIGZyb20gdGhlIGZpcnN0IGRheSB1bnRpbCB0aGUgc2V2ZW50aCBkYXksIHRoYXQgc291bCBzaGFsbCBiZSBjdXQgb2ZmIGZyb20gSXNyYWVsLgpBbmQgaW4gdGhlIGZpcnN0IGRheSB0aGVyZSBzaGFsbCBiZSBhbiBob2x5IGNvbnZvY2F0aW9uLCBhbmQgaW4gdGhlIHNldmVudGggZGF5IHRoZXJlIHNoYWxsIGJlIGFuIGhvbHkgY29udm9jYXRpb24gdG8geW91OyBubyBtYW5uZXIgb2Ygd29yayBzaGFsbCBiZSBkb25lIGluIHRoZW0sIHNhdmUgdGhhdCB3aGljaCBldmVyeSBtYW4gbXVzdCBlYXQsIHRoYXQgb25seSBtYXkgYmUgZG9uZSBvZiB5b3UuCkFuZCB5ZSBzaGFsbCBvYnNlcnZlIHRoZSBmZWFzdCBvZiB1bmxlYXZlbmVkIGJyZWFkOyBmb3IgaW4gdGhpcyBzZWxmc2FtZSBkYXkgaGF2ZSBJIGJyb3VnaHQgeW91ciBhcm1pZXMgb3V0IG9mIHRoZSBsYW5kIG9mIEVneXB0OiB0aGVyZWZvcmUgc2hhbGwgeWUgb2JzZXJ2ZSB0aGlzIGRheSBpbiB5b3VyIGdlbmVyYXRpb25zIGJ5IGFuIG9yZGluYW5jZSBmb3IgZXZlci4KSW4gdGhlIGZpcnN0IG1vbnRoLCBvbiB0aGUgZm91cnRlZW50aCBkYXkgb2YgdGhlIG1vbnRoIGF0IGV2ZW4sIHllIHNoYWxsIGVhdCB1bmxlYXZlbmVkIGJyZWFkLCB1bnRpbCB0aGUgb25lIGFuZCB0d2VudGlldGggZGF5IG9mIHRoZSBtb250aCBhdCBldmVuLgpTZXZlbiBkYXlzIHNoYWxsIHRoZXJlIGJlIG5vIGxlYXZlbiBmb3VuZCBpbiB5b3VyIGhvdXNlczogZm9yIHdob3NvZXZlciBlYXRldGggdGhhdCB3aGljaCBpcyBsZWF2ZW5lZCwgZXZlbiB0aGF0IHNvdWwgc2hhbGwgYmUgY3V0IG9mZiBmcm9tIHRoZSBjb25ncmVnYXRpb24gb2YgSXNyYWVsLCB3aGV0aGVyIGhlIGJlIGEgc3RyYW5nZXIsIG9yIGJvcm4gaW4gdGhlIGxhbmQuClllIHNoYWxsIGVhdCBub3RoaW5nIGxlYXZlbmVkOyBpbiBhbGwgeW91ciBoYWJpdGF0aW9ucyBzaGFsbCB5ZSBlYXQgdW5sZWF2ZW5lZCBicmVhZC4KVGhlbiBNb3NlcyBjYWxsZWQgZm9yIGFsbCB0aGUgZWxkZXJzIG9mIElzcmFlbCwgYW5kIHNhaWQgdW50byB0aGVtLCBEcmF3IG91dCBhbmQgdGFrZSB5b3UgYSBsYW1iIGFjY29yZGluZyB0byB5b3VyIGZhbWlsaWVzLCBhbmQga2lsbCB0aGUgcGFzc292ZXIuCkFuZCB5ZSBzaGFsbCB0YWtlIGEgYnVuY2ggb2YgaHlzc29wLCBhbmQgZGlwIGl0IGluIHRoZSBibG9vZCB0aGF0IGlzIGluIHRoZSBiYXNvbiwgYW5kIHN0cmlrZSB0aGUgbGludGVsIGFuZCB0aGUgdHdvIHNpZGUgcG9zdHMgd2l0aCB0aGUgYmxvb2QgdGhhdCBpcyBpbiB0aGUgYmFzb247IGFuZCBub25lIG9mIHlvdSBzaGFsbCBnbyBvdXQgYXQgdGhlIGRvb3Igb2YgaGlzIGhvdXNlIHVudGlsIHRoZSBtb3JuaW5nLgpGb3IgdGhlIExPUkQgd2lsbCBwYXNzIHRocm91Z2ggdG8gc21pdGUgdGhlIEVneXB0aWFuczsgYW5kIHdoZW4gaGUgc2VldGggdGhlIGJsb29kIHVwb24gdGhlIGxpbnRlbCwgYW5kIG9uIHRoZSB0d28gc2lkZSBwb3N0cywgdGhlIExPUkQgd2lsbCBwYXNzIG92ZXIgdGhlIGRvb3IsIGFuZCB3aWxsIG5vdCBzdWZmZXIgdGhlIGRlc3Ryb3llciB0byBjb21lIGluIHVudG8geW91ciBob3VzZXMgdG8gc21pdGUgeW91LgpBbmQgeWUgc2hhbGwgb2JzZXJ2ZSB0aGlzIHRoaW5nIGZvciBhbiBvcmRpbmFuY2UgdG8gdGhlZSBhbmQgdG8gdGh5IHNvbnMgZm9yIGV2ZXIuCkFuZCBpdCBzaGFsbCBjb21lIHRvIHBhc3MsIHdoZW4geWUgYmUgY29tZSB0byB0aGUgbGFuZCB3aGljaCB0aGUgTE9SRCB3aWxsIGdpdmUgeW91LCBhY2NvcmRpbmcgYXMgaGUgaGF0aCBwcm9taXNlZCwgdGhhdCB5ZSBzaGFsbCBrZWVwIHRoaXMgc2VydmljZS4KQW5kIGl0IHNoYWxsIGNvbWUgdG8gcGFzcywgd2hlbiB5b3VyIGNoaWxkcmVuIHNoYWxsIHNheSB1bnRvIHlvdSwgV2hhdCBtZWFuIHllIGJ5IHRoaXMgc2VydmljZT8KVGhhdCB5ZSBzaGFsbCBzYXksIEl0IGlzIHRoZSBzYWNyaWZpY2Ugb2YgdGhlIExPUkQncyBwYXNzb3Zlciwgd2hvIHBhc3NlZCBvdmVyIHRoZSBob3VzZXMgb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBpbiBFZ3lwdCwgd2hlbiBoZSBzbW90ZSB0aGUgRWd5cHRpYW5zLCBhbmQgZGVsaXZlcmVkIG91ciBob3VzZXMuIEFuZCB0aGUgcGVvcGxlIGJvd2VkIHRoZSBoZWFkIGFuZCB3b3JzaGlwcGVkLgpBbmQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCB3ZW50IGF3YXksIGFuZCBkaWQgYXMgdGhlIExPUkQgaGFkIGNvbW1hbmRlZCBNb3NlcyBhbmQgQWFyb24sIHNvIGRpZCB0aGV5LgpBbmQgaXQgY2FtZSB0byBwYXNzLCB0aGF0IGF0IG1pZG5pZ2h0IHRoZSBMT1JEIHNtb3RlIGFsbCB0aGUgZmlyc3Rib3JuIGluIHRoZSBsYW5kIG9mIEVneXB0LCBmcm9tIHRoZSBmaXJzdGJvcm4gb2YgUGhhcmFvaCB0aGF0IHNhdCBvbiBoaXMgdGhyb25lIHVudG8gdGhlIGZpcnN0Ym9ybiBvZiB0aGUgY2FwdGl2ZSB0aGF0IHdhcyBpbiB0aGUgZHVuZ2VvbjsgYW5kIGFsbCB0aGUgZmlyc3Rib3JuIG9mIGNhdHRsZS4KQW5kIFBoYXJhb2ggcm9zZSB1cCBpbiB0aGUgbmlnaHQsIGhlLCBhbmQgYWxsIGhpcyBzZXJ2YW50cywgYW5kIGFsbCB0aGUgRWd5cHRpYW5zOyBhbmQgdGhlcmUgd2FzIGEgZ3JlYXQgY3J5IGluIEVneXB0OyBmb3IgdGhlcmUgd2FzIG5vdCBhIGhvdXNlIHdoZXJlIHRoZXJlIHdhcyBub3Qgb25lIGRlYWQuCkFuZCBoZSBjYWxsZWQgZm9yIE1vc2VzIGFuZCBBYXJvbiBieSBuaWdodCwgYW5kIHNhaWQsIFJpc2UgdXAsIGFuZCBnZXQgeW91IGZvcnRoIGZyb20gYW1vbmcgbXkgcGVvcGxlLCBib3RoIHllIGFuZCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsOyBhbmQgZ28sIHNlcnZlIHRoZSBMT1JELCBhcyB5ZSBoYXZlIHNhaWQuCkFsc28gdGFrZSB5b3VyIGZsb2NrcyBhbmQgeW91ciBoZXJkcywgYXMgeWUgaGF2ZSBzYWlkLCBhbmQgYmUgZ29uZTsgYW5kIGJsZXNzIG1lIGFsc28uCkFuZCB0aGUgRWd5cHRpYW5zIHdlcmUgdXJnZW50IHVwb24gdGhlIHBlb3BsZSwgdGhhdCB0aGV5IG1pZ2h0IHNlbmQgdGhlbSBvdXQgb2YgdGhlIGxhbmQgaW4gaGFzdGU7IGZvciB0aGV5IHNhaWQsIFdlIGJlIGFsbCBkZWFkIG1lbi4KQW5kIHRoZSBwZW9wbGUgdG9vayB0aGVpciBkb3VnaCBiZWZvcmUgaXQgd2FzIGxlYXZlbmVkLCB0aGVpciBrbmVhZGluZ3Ryb3VnaHMgYmVpbmcgYm91bmQgdXAgaW4gdGhlaXIgY2xvdGhlcyB1cG9uIHRoZWlyIHNob3VsZGVycy4KQW5kIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgZGlkIGFjY29yZGluZyB0byB0aGUgd29yZCBvZiBNb3NlczsgYW5kIHRoZXkgYm9ycm93ZWQgb2YgdGhlIEVneXB0aWFucyBqZXdlbHMgb2Ygc2lsdmVyLCBhbmQgamV3ZWxzIG9mIGdvbGQsIGFuZCByYWltZW50OgpBbmQgdGhlIExPUkQgZ2F2ZSB0aGUgcGVvcGxlIGZhdm91ciBpbiB0aGUgc2lnaHQgb2YgdGhlIEVneXB0aWFucywgc28gdGhhdCB0aGV5IGxlbnQgdW50byB0aGVtIHN1Y2ggdGhpbmdzIGFzIHRoZXkgcmVxdWlyZWQuIEFuZCB0aGV5IHNwb2lsZWQgdGhlIEVneXB0aWFucy4KQW5kIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgam91cm5leWVkIGZyb20gUmFtZXNlcyB0byBTdWNjb3RoLCBhYm91dCBzaXggaHVuZHJlZCB0aG91c2FuZCBvbiBmb290IHRoYXQgd2VyZSBtZW4sIGJlc2lkZSBjaGlsZHJlbi4KQW5kIGEgbWl4ZWQgbXVsdGl0dWRlIHdlbnQgdXAgYWxzbyB3aXRoIHRoZW07IGFuZCBmbG9ja3MsIGFuZCBoZXJkcywgZXZlbiB2ZXJ5IG11Y2ggY2F0dGxlLgpBbmQgdGhleSBiYWtlZCB1bmxlYXZlbmVkIGNha2VzIG9mIHRoZSBkb3VnaCB3aGljaCB0aGV5IGJyb3VnaHQgZm9ydGggb3V0IG9mIEVneXB0LCBmb3IgaXQgd2FzIG5vdCBsZWF2ZW5lZDsgYmVjYXVzZSB0aGV5IHdlcmUgdGhydXN0IG91dCBvZiBFZ3lwdCwgYW5kIGNvdWxkIG5vdCB0YXJyeSwgbmVpdGhlciBoYWQgdGhleSBwcmVwYXJlZCBmb3IgdGhlbXNlbHZlcyBhbnkgdmljdHVhbC4KTm93IHRoZSBzb2pvdXJuaW5nIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIHdobyBkd2VsdCBpbiBFZ3lwdCwgd2FzIGZvdXIgaHVuZHJlZCBhbmQgdGhpcnR5IHllYXJzLgpBbmQgaXQgY2FtZSB0byBwYXNzIGF0IHRoZSBlbmQgb2YgdGhlIGZvdXIgaHVuZHJlZCBhbmQgdGhpcnR5IHllYXJzLCBldmVuIHRoZSBzZWxmc2FtZSBkYXkgaXQgY2FtZSB0byBwYXNzLCB0aGF0IGFsbCB0aGUgaG9zdHMgb2YgdGhlIExPUkQgd2VudCBvdXQgZnJvbSB0aGUgbGFuZCBvZiBFZ3lwdC4KSXQgaXMgYSBuaWdodCB0byBiZSBtdWNoIG9ic2VydmVkIHVudG8gdGhlIExPUkQgZm9yIGJyaW5naW5nIHRoZW0gb3V0IGZyb20gdGhlIGxhbmQgb2YgRWd5cHQ6IHRoaXMgaXMgdGhhdCBuaWdodCBvZiB0aGUgTE9SRCB0byBiZSBvYnNlcnZlZCBvZiBhbGwgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBpbiB0aGVpciBnZW5lcmF0aW9ucy4KQW5kIHRoZSBMT1JEIHNhaWQgdW50byBNb3NlcyBhbmQgQWFyb24sIFRoaXMgaXMgdGhlIG9yZGluYW5jZSBvZiB0aGUgcGFzc292ZXI6IFRoZXJlIHNoYWxsIG5vIHN0cmFuZ2VyIGVhdCB0aGVyZW9mOgpCdXQgZXZlcnkgbWFuJ3Mgc2VydmFudCB0aGF0IGlzIGJvdWdodCBmb3IgbW9uZXksIHdoZW4gdGhvdSBoYXN0IGNpcmN1bWNpc2VkIGhpbSwgdGhlbiBzaGFsbCBoZSBlYXQgdGhlcmVvZi4KQSBmb3JlaWduZXIgYW5kIGFuIGhpcmVkIHNlcnZhbnQgc2hhbGwgbm90IGVhdCB0aGVyZW9mLgpJbiBvbmUgaG91c2Ugc2hhbGwgaXQgYmUgZWF0ZW47IHRob3Ugc2hhbHQgbm90IGNhcnJ5IGZvcnRoIG91Z2h0IG9mIHRoZSBmbGVzaCBhYnJvYWQgb3V0IG9mIHRoZSBob3VzZTsgbmVpdGhlciBzaGFsbCB5ZSBicmVhayBhIGJvbmUgdGhlcmVvZi4KQWxsIHRoZSBjb25ncmVnYXRpb24gb2YgSXNyYWVsIHNoYWxsIGtlZXAgaXQuCkFuZCB3aGVuIGEgc3RyYW5nZXIgc2hhbGwgc29qb3VybiB3aXRoIHRoZWUsIGFuZCB3aWxsIGtlZXAgdGhlIHBhc3NvdmVyIHRvIHRoZSBMT1JELCBsZXQgYWxsIGhpcyBtYWxlcyBiZSBjaXJjdW1jaXNlZCwgYW5kIHRoZW4gbGV0IGhpbSBjb21lIG5lYXIgYW5kIGtlZXAgaXQ7IGFuZCBoZSBzaGFsbCBiZSBhcyBvbmUgdGhhdCBpcyBib3JuIGluIHRoZSBsYW5kOiBmb3Igbm8gdW5jaXJjdW1jaXNlZCBwZXJzb24gc2hhbGwgZWF0IHRoZXJlb2YuCk9uZSBsYXcgc2hhbGwgYmUgdG8gaGltIHRoYXQgaXMgaG9tZWJvcm4sIGFuZCB1bnRvIHRoZSBzdHJhbmdlciB0aGF0IHNvam91cm5ldGggYW1vbmcgeW91LgpUaHVzIGRpZCBhbGwgdGhlIGNoaWxkcmVuIG9mIElzcmFlbDsgYXMgdGhlIExPUkQgY29tbWFuZGVkIE1vc2VzIGFuZCBBYXJvbiwgc28gZGlkIHRoZXkuCkFuZCBpdCBjYW1lIHRvIHBhc3MgdGhlIHNlbGZzYW1lIGRheSwgdGhhdCB0aGUgTE9SRCBkaWQgYnJpbmcgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBvdXQgb2YgdGhlIGxhbmQgb2YgRWd5cHQgYnkgdGhlaXIgYXJtaWVzLgpBbmQgdGhlIExPUkQgc3Bha2UgdW50byBNb3Nlcywgc2F5aW5nLApTYW5jdGlmeSB1bnRvIG1lIGFsbCB0aGUgZmlyc3Rib3JuLCB3aGF0c29ldmVyIG9wZW5ldGggdGhlIHdvbWIgYW1vbmcgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgYm90aCBvZiBtYW4gYW5kIG9mIGJlYXN0OiBpdCBpcyBtaW5lLgpBbmQgTW9zZXMgc2FpZCB1bnRvIHRoZSBwZW9wbGUsIFJlbWVtYmVyIHRoaXMgZGF5LCBpbiB3aGljaCB5ZSBjYW1lIG91dCBmcm9tIEVneXB0LCBvdXQgb2YgdGhlIGhvdXNlIG9mIGJvbmRhZ2U7IGZvciBieSBzdHJlbmd0aCBvZiBoYW5kIHRoZSBMT1JEIGJyb3VnaHQgeW91IG91dCBmcm9tIHRoaXMgcGxhY2U6IHRoZXJlIHNoYWxsIG5vIGxlYXZlbmVkIGJyZWFkIGJlIGVhdGVuLgpUaGlzIGRheSBjYW1lIHllIG91dCBpbiB0aGUgbW9udGggQWJpYi4KQW5kIGl0IHNoYWxsIGJlIHdoZW4gdGhlIExPUkQgc2hhbGwgYnJpbmcgdGhlZSBpbnRvIHRoZSBsYW5kIG9mIHRoZSBDYW5hYW5pdGVzLCBhbmQgdGhlIEhpdHRpdGVzLCBhbmQgdGhlIEFtb3JpdGVzLCBhbmQgdGhlIEhpdml0ZXMsIGFuZCB0aGUgSmVidXNpdGVzLCB3aGljaCBoZSBzd2FyZSB1bnRvIHRoeSBmYXRoZXJzIHRvIGdpdmUgdGhlZSwgYSBsYW5kIGZsb3dpbmcgd2l0aCBtaWxrIGFuZCBob25leSwgdGhhdCB0aG91IHNoYWx0IGtlZXAgdGhpcyBzZXJ2aWNlIGluIHRoaXMgbW9udGguClNldmVuIGRheXMgdGhvdSBzaGFsdCBlYXQgdW5sZWF2ZW5lZCBicmVhZCwgYW5kIGluIHRoZSBzZXZlbnRoIGRheSBzaGFsbCBiZSBhIGZlYXN0IHRvIHRoZSBMT1JELgpVbmxlYXZlbmVkIGJyZWFkIHNoYWxsIGJlIGVhdGVuIHNldmVuIGRheXM7IGFuZCB0aGVyZSBzaGFsbCBubyBsZWF2ZW5lZCBicmVhZCBiZSBzZWVuIHdpdGggdGhlZSwgbmVpdGhlciBzaGFsbCB0aGVyZSBiZSBsZWF2ZW4gc2VlbiB3aXRoIHRoZWUgaW4gYWxsIHRoeSBxdWFydGVycy4KQW5kIHRob3Ugc2hhbHQgc2hldyB0aHkgc29uIGluIHRoYXQgZGF5LCBzYXlpbmcsIFRoaXMgaXMgZG9uZSBiZWNhdXNlIG9mIHRoYXQgd2hpY2ggdGhlIExPUkQgZGlkIHVudG8gbWUgd2hlbiBJIGNhbWUgZm9ydGggb3V0IG9mIEVneXB0LgpBbmQgaXQgc2hhbGwgYmUgZm9yIGEgc2lnbiB1bnRvIHRoZWUgdXBvbiB0aGluZSBoYW5kLCBhbmQgZm9yIGEgbWVtb3JpYWwgYmV0d2VlbiB0aGluZSBleWVzLCB0aGF0IHRoZSBMT1JEJ3MgbGF3IG1heSBiZSBpbiB0aHkgbW91dGg6IGZvciB3aXRoIGEgc3Ryb25nIGhhbmQgaGF0aCB0aGUgTE9SRCBicm91Z2h0IHRoZWUgb3V0IG9mIEVneXB0LgpUaG91IHNoYWx0IHRoZXJlZm9yZSBrZWVwIHRoaXMgb3JkaW5hbmNlIGluIGhpcyBzZWFzb24gZnJvbSB5ZWFyIHRvIHllYXIuCkFuZCBpdCBzaGFsbCBiZSB3aGVuIHRoZSBMT1JEIHNoYWxsIGJyaW5nIHRoZWUgaW50byB0aGUgbGFuZCBvZiB0aGUgQ2FuYWFuaXRlcywgYXMgaGUgc3dhcmUgdW50byB0aGVlIGFuZCB0byB0aHkgZmF0aGVycywgYW5kIHNoYWxsIGdpdmUgaXQgdGhlZSwKVGhhdCB0aG91IHNoYWx0IHNldCBhcGFydCB1bnRvIHRoZSBMT1JEIGFsbCB0aGF0IG9wZW5ldGggdGhlIG1hdHJpeCwgYW5kIGV2ZXJ5IGZpcnN0bGluZyB0aGF0IGNvbWV0aCBvZiBhIGJlYXN0IHdoaWNoIHRob3UgaGFzdDsgdGhlIG1hbGVzIHNoYWxsIGJlIHRoZSBMT1JEJ3MuCkFuZCBldmVyeSBmaXJzdGxpbmcgb2YgYW4gYXNzIHRob3Ugc2hhbHQgcmVkZWVtIHdpdGggYSBsYW1iOyBhbmQgaWYgdGhvdSB3aWx0IG5vdCByZWRlZW0gaXQsIHRoZW4gdGhvdSBzaGFsdCBicmVhayBoaXMgbmVjazogYW5kIGFsbCB0aGUgZmlyc3Rib3JuIG9mIG1hbiBhbW9uZyB0aHkgY2hpbGRyZW4gc2hhbHQgdGhvdSByZWRlZW0uCkFuZCBpdCBzaGFsbCBiZSB3aGVuIHRoeSBzb24gYXNrZXRoIHRoZWUgaW4gdGltZSB0byBjb21lLCBzYXlpbmcsIFdoYXQgaXMgdGhpcz8gdGhhdCB0aG91IHNoYWx0IHNheSB1bnRvIGhpbSwgQnkgc3RyZW5ndGggb2YgaGFuZCB0aGUgTE9SRCBicm91Z2h0IHVzIG91dCBmcm9tIEVneXB0LCBmcm9tIHRoZSBob3VzZSBvZiBib25kYWdlOgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIFBoYXJhb2ggd291bGQgaGFyZGx5IGxldCB1cyBnbywgdGhhdCB0aGUgTE9SRCBzbGV3IGFsbCB0aGUgZmlyc3Rib3JuIGluIHRoZSBsYW5kIG9mIEVneXB0LCBib3RoIHRoZSBmaXJzdGJvcm4gb2YgbWFuLCBhbmQgdGhlIGZpcnN0Ym9ybiBvZiBiZWFzdDogdGhlcmVmb3JlIEkgc2FjcmlmaWNlIHRvIHRoZSBMT1JEIGFsbCB0aGF0IG9wZW5ldGggdGhlIG1hdHJpeCwgYmVpbmcgbWFsZXM7IGJ1dCBhbGwgdGhlIGZpcnN0Ym9ybiBvZiBteSBjaGlsZHJlbiBJIHJlZGVlbS4KQW5kIGl0IHNoYWxsIGJlIGZvciBhIHRva2VuIHVwb24gdGhpbmUgaGFuZCwgYW5kIGZvciBmcm9udGxldHMgYmV0d2VlbiB0aGluZSBleWVzOiBmb3IgYnkgc3RyZW5ndGggb2YgaGFuZCB0aGUgTE9SRCBicm91Z2h0IHVzIGZvcnRoIG91dCBvZiBFZ3lwdC4KQW5kIGl0IGNhbWUgdG8gcGFzcywgd2hlbiBQaGFyYW9oIGhhZCBsZXQgdGhlIHBlb3BsZSBnbywgdGhhdCBHb2QgbGVkIHRoZW0gbm90IHRocm91Z2ggdGhlIHdheSBvZiB0aGUgbGFuZCBvZiB0aGUgUGhpbGlzdGluZXMsIGFsdGhvdWdoIHRoYXQgd2FzIG5lYXI7IGZvciBHb2Qgc2FpZCwgTGVzdCBwZXJhZHZlbnR1cmUgdGhlIHBlb3BsZSByZXBlbnQgd2hlbiB0aGV5IHNlZSB3YXIsIGFuZCB0aGV5IHJldHVybiB0byBFZ3lwdDoKQnV0IEdvZCBsZWQgdGhlIHBlb3BsZSBhYm91dCwgdGhyb3VnaCB0aGUgd2F5IG9mIHRoZSB3aWxkZXJuZXNzIG9mIHRoZSBSZWQgc2VhOiBhbmQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCB3ZW50IHVwIGhhcm5lc3NlZCBvdXQgb2YgdGhlIGxhbmQgb2YgRWd5cHQuCkFuZCBNb3NlcyB0b29rIHRoZSBib25lcyBvZiBKb3NlcGggd2l0aCBoaW06IGZvciBoZSBoYWQgc3RyYWl0bHkgc3dvcm4gdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgc2F5aW5nLCBHb2Qgd2lsbCBzdXJlbHkgdmlzaXQgeW91OyBhbmQgeWUgc2hhbGwgY2FycnkgdXAgbXkgYm9uZXMgYXdheSBoZW5jZSB3aXRoIHlvdS4KQW5kIHRoZXkgdG9vayB0aGVpciBqb3VybmV5IGZyb20gU3VjY290aCwgYW5kIGVuY2FtcGVkIGluIEV0aGFtLCBpbiB0aGUgZWRnZSBvZiB0aGUgd2lsZGVybmVzcy4KQW5kIHRoZSBMT1JEIHdlbnQgYmVmb3JlIHRoZW0gYnkgZGF5IGluIGEgcGlsbGFyIG9mIGEgY2xvdWQsIHRvIGxlYWQgdGhlbSB0aGUgd2F5OyBhbmQgYnkgbmlnaHQgaW4gYSBwaWxsYXIgb2YgZmlyZSwgdG8gZ2l2ZSB0aGVtIGxpZ2h0OyB0byBnbyBieSBkYXkgYW5kIG5pZ2h0OgpIZSB0b29rIG5vdCBhd2F5IHRoZSBwaWxsYXIgb2YgdGhlIGNsb3VkIGJ5IGRheSwgbm9yIHRoZSBwaWxsYXIgb2YgZmlyZSBieSBuaWdodCwgZnJvbSBiZWZvcmUgdGhlIHBlb3BsZS4KQW5kIHRoZSBMT1JEIHNwYWtlIHVudG8gTW9zZXMsIHNheWluZywKU3BlYWsgdW50byB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLCB0aGF0IHRoZXkgdHVybiBhbmQgZW5jYW1wIGJlZm9yZSBQaWhhaGlyb3RoLCBiZXR3ZWVuIE1pZ2RvbCBhbmQgdGhlIHNlYSwgb3ZlciBhZ2FpbnN0IEJhYWx6ZXBob246IGJlZm9yZSBpdCBzaGFsbCB5ZSBlbmNhbXAgYnkgdGhlIHNlYS4KRm9yIFBoYXJhb2ggd2lsbCBzYXkgb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgVGhleSBhcmUgZW50YW5nbGVkIGluIHRoZSBsYW5kLCB0aGUgd2lsZGVybmVzcyBoYXRoIHNodXQgdGhlbSBpbi4KQW5kIEkgd2lsbCBoYXJkZW4gUGhhcmFvaCdzIGhlYXJ0LCB0aGF0IGhlIHNoYWxsIGZvbGxvdyBhZnRlciB0aGVtOyBhbmQgSSB3aWxsIGJlIGhvbm91cmVkIHVwb24gUGhhcmFvaCwgYW5kIHVwb24gYWxsIGhpcyBob3N0OyB0aGF0IHRoZSBFZ3lwdGlhbnMgbWF5IGtub3cgdGhhdCBJIGFtIHRoZSBMT1JELiBBbmQgdGhleSBkaWQgc28uCkFuZCBpdCB3YXMgdG9sZCB0aGUga2luZyBvZiBFZ3lwdCB0aGF0IHRoZSBwZW9wbGUgZmxlZDogYW5kIHRoZSBoZWFydCBvZiBQaGFyYW9oIGFuZCBvZiBoaXMgc2VydmFudHMgd2FzIHR1cm5lZCBhZ2FpbnN0IHRoZSBwZW9wbGUsIGFuZCB0aGV5IHNhaWQsIFdoeSBoYXZlIHdlIGRvbmUgdGhpcywgdGhhdCB3ZSBoYXZlIGxldCBJc3JhZWwgZ28gZnJvbSBzZXJ2aW5nIHVzPwpBbmQgaGUgbWFkZSByZWFkeSBoaXMgY2hhcmlvdCwgYW5kIHRvb2sgaGlzIHBlb3BsZSB3aXRoIGhpbToKQW5kIGhlIHRvb2sgc2l4IGh1bmRyZWQgY2hvc2VuIGNoYXJpb3RzLCBhbmQgYWxsIHRoZSBjaGFyaW90cyBvZiBFZ3lwdCwgYW5kIGNhcHRhaW5zIG92ZXIgZXZlcnkgb25lIG9mIHRoZW0uCkFuZCB0aGUgTE9SRCBoYXJkZW5lZCB0aGUgaGVhcnQgb2YgUGhhcmFvaCBraW5nIG9mIEVneXB0LCBhbmQgaGUgcHVyc3VlZCBhZnRlciB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsOiBhbmQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCB3ZW50IG91dCB3aXRoIGFuIGhpZ2ggaGFuZC4KQnV0IHRoZSBFZ3lwdGlhbnMgcHVyc3VlZCBhZnRlciB0aGVtLCBhbGwgdGhlIGhvcnNlcyBhbmQgY2hhcmlvdHMgb2YgUGhhcmFvaCwgYW5kIGhpcyBob3JzZW1lbiwgYW5kIGhpcyBhcm15LCBhbmQgb3ZlcnRvb2sgdGhlbSBlbmNhbXBpbmcgYnkgdGhlIHNlYSwgYmVzaWRlIFBpaGFoaXJvdGgsIGJlZm9yZSBCYWFsemVwaG9uLgpBbmQgd2hlbiBQaGFyYW9oIGRyZXcgbmlnaCwgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBsaWZ0ZWQgdXAgdGhlaXIgZXllcywgYW5kLCBiZWhvbGQsIHRoZSBFZ3lwdGlhbnMgbWFyY2hlZCBhZnRlciB0aGVtOyBhbmQgdGhleSB3ZXJlIHNvcmUgYWZyYWlkOiBhbmQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBjcmllZCBvdXQgdW50byB0aGUgTE9SRC4KQW5kIHRoZXkgc2FpZCB1bnRvIE1vc2VzLCBCZWNhdXNlIHRoZXJlIHdlcmUgbm8gZ3JhdmVzIGluIEVneXB0LCBoYXN0IHRob3UgdGFrZW4gdXMgYXdheSB0byBkaWUgaW4gdGhlIHdpbGRlcm5lc3M/IHdoZXJlZm9yZSBoYXN0IHRob3UgZGVhbHQgdGh1cyB3aXRoIHVzLCB0byBjYXJyeSB1cyBmb3J0aCBvdXQgb2YgRWd5cHQ/CklzIG5vdCB0aGlzIHRoZSB3b3JkIHRoYXQgd2UgZGlkIHRlbGwgdGhlZSBpbiBFZ3lwdCwgc2F5aW5nLCBMZXQgdXMgYWxvbmUsIHRoYXQgd2UgbWF5IHNlcnZlIHRoZSBFZ3lwdGlhbnM/IEZvciBpdCBoYWQgYmVlbiBiZXR0ZXIgZm9yIHVzIHRvIHNlcnZlIHRoZSBFZ3lwdGlhbnMsIHRoYW4gdGhhdCB3ZSBzaG91bGQgZGllIGluIHRoZSB3aWxkZXJuZXNzLgpBbmQgTW9zZXMgc2FpZCB1bnRvIHRoZSBwZW9wbGUsIEZlYXIgeWUgbm90LCBzdGFuZCBzdGlsbCwgYW5kIHNlZSB0aGUgc2FsdmF0aW9uIG9mIHRoZSBMT1JELCB3aGljaCBoZSB3aWxsIHNoZXcgdG8geW91IHRvIGRheTogZm9yIHRoZSBFZ3lwdGlhbnMgd2hvbSB5ZSBoYXZlIHNlZW4gdG8gZGF5LCB5ZSBzaGFsbCBzZWUgdGhlbSBhZ2FpbiBubyBtb3JlIGZvciBldmVyLgpUaGUgTE9SRCBzaGFsbCBmaWdodCBmb3IgeW91LCBhbmQgeWUgc2hhbGwgaG9sZCB5b3VyIHBlYWNlLgpBbmQgdGhlIExPUkQgc2FpZCB1bnRvIE1vc2VzLCBXaGVyZWZvcmUgY3JpZXN0IHRob3UgdW50byBtZT8gc3BlYWsgdW50byB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLCB0aGF0IHRoZXkgZ28gZm9yd2FyZDoKQnV0IGxpZnQgdGhvdSB1cCB0aHkgcm9kLCBhbmQgc3RyZXRjaCBvdXQgdGhpbmUgaGFuZCBvdmVyIHRoZSBzZWEsIGFuZCBkaXZpZGUgaXQ6IGFuZCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIHNoYWxsIGdvIG9uIGRyeSBncm91bmQgdGhyb3VnaCB0aGUgbWlkc3Qgb2YgdGhlIHNlYS4KQW5kIEksIGJlaG9sZCwgSSB3aWxsIGhhcmRlbiB0aGUgaGVhcnRzIG9mIHRoZSBFZ3lwdGlhbnMsIGFuZCB0aGV5IHNoYWxsIGZvbGxvdyB0aGVtOiBhbmQgSSB3aWxsIGdldCBtZSBob25vdXIgdXBvbiBQaGFyYW9oLCBhbmQgdXBvbiBhbGwgaGlzIGhvc3QsIHVwb24gaGlzIGNoYXJpb3RzLCBhbmQgdXBvbiBoaXMgaG9yc2VtZW4uCkFuZCB0aGUgRWd5cHRpYW5zIHNoYWxsIGtub3cgdGhhdCBJIGFtIHRoZSBMT1JELCB3aGVuIEkgaGF2ZSBnb3R0ZW4gbWUgaG9ub3VyIHVwb24gUGhhcmFvaCwgdXBvbiBoaXMgY2hhcmlvdHMsIGFuZCB1cG9uIGhpcyBob3JzZW1lbi4KQW5kIHRoZSBhbmdlbCBvZiBHb2QsIHdoaWNoIHdlbnQgYmVmb3JlIHRoZSBjYW1wIG9mIElzcmFlbCwgcmVtb3ZlZCBhbmQgd2VudCBiZWhpbmQgdGhlbTsgYW5kIHRoZSBwaWxsYXIgb2YgdGhlIGNsb3VkIHdlbnQgZnJvbSBiZWZvcmUgdGhlaXIgZmFjZSwgYW5kIHN0b29kIGJlaGluZCB0aGVtOgpBbmQgaXQgY2FtZSBiZXR3ZWVuIHRoZSBjYW1wIG9mIHRoZSBFZ3lwdGlhbnMgYW5kIHRoZSBjYW1wIG9mIElzcmFlbDsgYW5kIGl0IHdhcyBhIGNsb3VkIGFuZCBkYXJrbmVzcyB0byB0aGVtLCBidXQgaXQgZ2F2ZSBsaWdodCBieSBuaWdodCB0byB0aGVzZTogc28gdGhhdCB0aGUgb25lIGNhbWUgbm90IG5lYXIgdGhlIG90aGVyIGFsbCB0aGUgbmlnaHQuCkFuZCBNb3NlcyBzdHJldGNoZWQgb3V0IGhpcyBoYW5kIG92ZXIgdGhlIHNlYTsgYW5kIHRoZSBMT1JEIGNhdXNlZCB0aGUgc2VhIHRvIGdvIGJhY2sgYnkgYSBzdHJvbmcgZWFzdCB3aW5kIGFsbCB0aGF0IG5pZ2h0LCBhbmQgbWFkZSB0aGUgc2VhIGRyeSBsYW5kLCBhbmQgdGhlIHdhdGVycyB3ZXJlIGRpdmlkZWQuCkFuZCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIHdlbnQgaW50byB0aGUgbWlkc3Qgb2YgdGhlIHNlYSB1cG9uIHRoZSBkcnkgZ3JvdW5kOiBhbmQgdGhlIHdhdGVycyB3ZXJlIGEgd2FsbCB1bnRvIHRoZW0gb24gdGhlaXIgcmlnaHQgaGFuZCwgYW5kIG9uIHRoZWlyIGxlZnQuCkFuZCB0aGUgRWd5cHRpYW5zIHB1cnN1ZWQsIGFuZCB3ZW50IGluIGFmdGVyIHRoZW0gdG8gdGhlIG1pZHN0IG9mIHRoZSBzZWEsIGV2ZW4gYWxsIFBoYXJhb2gncyBob3JzZXMsIGhpcyBjaGFyaW90cywgYW5kIGhpcyBob3JzZW1lbi4KQW5kIGl0IGNhbWUgdG8gcGFzcywgdGhhdCBpbiB0aGUgbW9ybmluZyB3YXRjaCB0aGUgTE9SRCBsb29rZWQgdW50byB0aGUgaG9zdCBvZiB0aGUgRWd5cHRpYW5zIHRocm91Z2ggdGhlIHBpbGxhciBvZiBmaXJlIGFuZCBvZiB0aGUgY2xvdWQsIGFuZCB0cm91YmxlZCB0aGUgaG9zdCBvZiB0aGUgRWd5cHRpYW5zLApBbmQgdG9vayBvZmYgdGhlaXIgY2hhcmlvdCB3aGVlbHMsIHRoYXQgdGhleSBkcmF2ZSB0aGVtIGhlYXZpbHk6IHNvIHRoYXQgdGhlIEVneXB0aWFucyBzYWlkLCBMZXQgdXMgZmxlZSBmcm9tIHRoZSBmYWNlIG9mIElzcmFlbDsgZm9yIHRoZSBMT1JEIGZpZ2h0ZXRoIGZvciB0aGVtIGFnYWluc3QgdGhlIEVneXB0aWFucy4KQW5kIHRoZSBMT1JEIHNhaWQgdW50byBNb3NlcywgU3RyZXRjaCBvdXQgdGhpbmUgaGFuZCBvdmVyIHRoZSBzZWEsIHRoYXQgdGhlIHdhdGVycyBtYXkgY29tZSBhZ2FpbiB1cG9uIHRoZSBFZ3lwdGlhbnMsIHVwb24gdGhlaXIgY2hhcmlvdHMsIGFuZCB1cG9uIHRoZWlyIGhvcnNlbWVuLgpBbmQgTW9zZXMgc3RyZXRjaGVkIGZvcnRoIGhpcyBoYW5kIG92ZXIgdGhlIHNlYSwgYW5kIHRoZSBzZWEgcmV0dXJuZWQgdG8gaGlzIHN0cmVuZ3RoIHdoZW4gdGhlIG1vcm5pbmcgYXBwZWFyZWQ7IGFuZCB0aGUgRWd5cHRpYW5zIGZsZWQgYWdhaW5zdCBpdDsgYW5kIHRoZSBMT1JEIG92ZXJ0aHJldyB0aGUgRWd5cHRpYW5zIGluIHRoZSBtaWRzdCBvZiB0aGUgc2VhLgpBbmQgdGhlIHdhdGVycyByZXR1cm5lZCwgYW5kIGNvdmVyZWQgdGhlIGNoYXJpb3RzLCBhbmQgdGhlIGhvcnNlbWVuLCBhbmQgYWxsIHRoZSBob3N0IG9mIFBoYXJhb2ggdGhhdCBjYW1lIGludG8gdGhlIHNlYSBhZnRlciB0aGVtOyB0aGVyZSByZW1haW5lZCBub3Qgc28gbXVjaCBhcyBvbmUgb2YgdGhlbS4KQnV0IHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgd2Fsa2VkIHVwb24gZHJ5IGxhbmQgaW4gdGhlIG1pZHN0IG9mIHRoZSBzZWE7IGFuZCB0aGUgd2F0ZXJzIHdlcmUgYSB3YWxsIHVudG8gdGhlbSBvbiB0aGVpciByaWdodCBoYW5kLCBhbmQgb24gdGhlaXIgbGVmdC4KVGh1cyB0aGUgTE9SRCBzYXZlZCBJc3JhZWwgdGhhdCBkYXkgb3V0IG9mIHRoZSBoYW5kIG9mIHRoZSBFZ3lwdGlhbnM7IGFuZCBJc3JhZWwgc2F3IHRoZSBFZ3lwdGlhbnMgZGVhZCB1cG9uIHRoZSBzZWEgc2hvcmUuCkFuZCBJc3JhZWwgc2F3IHRoYXQgZ3JlYXQgd29yayB3aGljaCB0aGUgTE9SRCBkaWQgdXBvbiB0aGUgRWd5cHRpYW5zOiBhbmQgdGhlIHBlb3BsZSBmZWFyZWQgdGhlIExPUkQsIGFuZCBiZWxpZXZlZCB0aGUgTE9SRCwgYW5kIGhpcyBzZXJ2YW50IE1vc2VzLgpUaGVuIHNhbmcgTW9zZXMgYW5kIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgdGhpcyBzb25nIHVudG8gdGhlIExPUkQsIGFuZCBzcGFrZSwgc2F5aW5nLCBJIHdpbGwgc2luZyB1bnRvIHRoZSBMT1JELCBmb3IgaGUgaGF0aCB0cml1bXBoZWQgZ2xvcmlvdXNseTogdGhlIGhvcnNlIGFuZCBoaXMgcmlkZXIgaGF0aCBoZSB0aHJvd24gaW50byB0aGUgc2VhLgpUaGUgTE9SRCBpcyBteSBzdHJlbmd0aCBhbmQgc29uZywgYW5kIGhlIGlzIGJlY29tZSBteSBzYWx2YXRpb246IGhlIGlzIG15IEdvZCwgYW5kIEkgd2lsbCBwcmVwYXJlIGhpbSBhbiBoYWJpdGF0aW9uOyBteSBmYXRoZXIncyBHb2QsIGFuZCBJIHdpbGwgZXhhbHQgaGltLgpUaGUgTE9SRCBpcyBhIG1hbiBvZiB3YXI6IHRoZSBMT1JEIGlzIGhpcyBuYW1lLgpQaGFyYW9oJ3MgY2hhcmlvdHMgYW5kIGhpcyBob3N0IGhhdGggaGUgY2FzdCBpbnRvIHRoZSBzZWE6IGhpcyBjaG9zZW4gY2FwdGFpbnMgYWxzbyBhcmUgZHJvd25lZCBpbiB0aGUgUmVkIHNlYS4KVGhlIGRlcHRocyBoYXZlIGNvdmVyZWQgdGhlbTogdGhleSBzYW5rIGludG8gdGhlIGJvdHRvbSBhcyBhIHN0b25lLgpUaHkgcmlnaHQgaGFuZCwgTyBMT1JELCBpcyBiZWNvbWUgZ2xvcmlvdXMgaW4gcG93ZXI6IHRoeSByaWdodCBoYW5kLCBPIExPUkQsIGhhdGggZGFzaGVkIGluIHBpZWNlcyB0aGUgZW5lbXkuCkFuZCBpbiB0aGUgZ3JlYXRuZXNzIG9mIHRoaW5lIGV4Y2VsbGVuY3kgdGhvdSBoYXN0IG92ZXJ0aHJvd24gdGhlbSB0aGF0IHJvc2UgdXAgYWdhaW5zdCB0aGVlOiB0aG91IHNlbnRlc3QgZm9ydGggdGh5IHdyYXRoLCB3aGljaCBjb25zdW1lZCB0aGVtIGFzIHN0dWJibGUuCkFuZCB3aXRoIHRoZSBibGFzdCBvZiB0aHkgbm9zdHJpbHMgdGhlIHdhdGVycyB3ZXJlIGdhdGhlcmVkIHRvZ2V0aGVyLCB0aGUgZmxvb2RzIHN0b29kIHVwcmlnaHQgYXMgYW4gaGVhcCwgYW5kIHRoZSBkZXB0aHMgd2VyZSBjb25nZWFsZWQgaW4gdGhlIGhlYXJ0IG9mIHRoZSBzZWEuClRoZSBlbmVteSBzYWlkLCBJIHdpbGwgcHVyc3VlLCBJIHdpbGwgb3ZlcnRha2UsIEkgd2lsbCBkaXZpZGUgdGhlIHNwb2lsOyBteSBsdXN0IHNoYWxsIGJlIHNhdGlzZmllZCB1cG9uIHRoZW07IEkgd2lsbCBkcmF3IG15IHN3b3JkLCBteSBoYW5kIHNoYWxsIGRlc3Ryb3kgdGhlbS4KVGhvdSBkaWRzdCBibG93IHdpdGggdGh5IHdpbmQsIHRoZSBzZWEgY292ZXJlZCB0aGVtOiB0aGV5IHNhbmsgYXMgbGVhZCBpbiB0aGUgbWlnaHR5IHdhdGVycy4KV2hvIGlzIGxpa2UgdW50byB0aGVlLCBPIExPUkQsIGFtb25nIHRoZSBnb2RzPyB3aG8gaXMgbGlrZSB0aGVlLCBnbG9yaW91cyBpbiBob2xpbmVzcywgZmVhcmZ1bCBpbiBwcmFpc2VzLCBkb2luZyB3b25kZXJzPwpUaG91IHN0cmV0Y2hlZHN0IG91dCB0aHkgcmlnaHQgaGFuZCwgdGhlIGVhcnRoIHN3YWxsb3dlZCB0aGVtLgpUaG91IGluIHRoeSBtZXJjeSBoYXN0IGxlZCBmb3J0aCB0aGUgcGVvcGxlIHdoaWNoIHRob3UgaGFzdCByZWRlZW1lZDogdGhvdSBoYXN0IGd1aWRlZCB0aGVtIGluIHRoeSBzdHJlbmd0aCB1bnRvIHRoeSBob2x5IGhhYml0YXRpb24uClRoZSBwZW9wbGUgc2hhbGwgaGVhciwgYW5kIGJlIGFmcmFpZDogc29ycm93IHNoYWxsIHRha2UgaG9sZCBvbiB0aGUgaW5oYWJpdGFudHMgb2YgUGFsZXN0aW5hLgpUaGVuIHRoZSBkdWtlcyBvZiBFZG9tIHNoYWxsIGJlIGFtYXplZDsgdGhlIG1pZ2h0eSBtZW4gb2YgTW9hYiwgdHJlbWJsaW5nIHNoYWxsIHRha2UgaG9sZCB1cG9uIHRoZW07IGFsbCB0aGUgaW5oYWJpdGFudHMgb2YgQ2FuYWFuIHNoYWxsIG1lbHQgYXdheS4KRmVhciBhbmQgZHJlYWQgc2hhbGwgZmFsbCB1cG9uIHRoZW07IGJ5IHRoZSBncmVhdG5lc3Mgb2YgdGhpbmUgYXJtIHRoZXkgc2hhbGwgYmUgYXMgc3RpbGwgYXMgYSBzdG9uZTsgdGlsbCB0aHkgcGVvcGxlIHBhc3Mgb3ZlciwgTyBMT1JELCB0aWxsIHRoZSBwZW9wbGUgcGFzcyBvdmVyLCB3aGljaCB0aG91IGhhc3QgcHVyY2hhc2VkLgpUaG91IHNoYWx0IGJyaW5nIHRoZW0gaW4sIGFuZCBwbGFudCB0aGVtIGluIHRoZSBtb3VudGFpbiBvZiB0aGluZSBpbmhlcml0YW5jZSwgaW4gdGhlIHBsYWNlLCBPIExPUkQsIHdoaWNoIHRob3UgaGFzdCBtYWRlIGZvciB0aGVlIHRvIGR3ZWxsIGluLCBpbiB0aGUgU2FuY3R1YXJ5LCBPIExPUkQsIHdoaWNoIHRoeSBoYW5kcyBoYXZlIGVzdGFibGlzaGVkLgpUaGUgTE9SRCBzaGFsbCByZWlnbiBmb3IgZXZlciBhbmQgZXZlci4KRm9yIHRoZSBob3JzZSBvZiBQaGFyYW9oIHdlbnQgaW4gd2l0aCBoaXMgY2hhcmlvdHMgYW5kIHdpdGggaGlzIGhvcnNlbWVuIGludG8gdGhlIHNlYSwgYW5kIHRoZSBMT1JEIGJyb3VnaHQgYWdhaW4gdGhlIHdhdGVycyBvZiB0aGUgc2VhIHVwb24gdGhlbTsgYnV0IHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgd2VudCBvbiBkcnkgbGFuZCBpbiB0aGUgbWlkc3Qgb2YgdGhlIHNlYS4KQW5kIE1pcmlhbSB0aGUgcHJvcGhldGVzcywgdGhlIHNpc3RlciBvZiBBYXJvbiwgdG9vayBhIHRpbWJyZWwgaW4gaGVyIGhhbmQ7IGFuZCBhbGwgdGhlIHdvbWVuIHdlbnQgb3V0IGFmdGVyIGhlciB3aXRoIHRpbWJyZWxzIGFuZCB3aXRoIGRhbmNlcy4KQW5kIE1pcmlhbSBhbnN3ZXJlZCB0aGVtLCBTaW5nIHllIHRvIHRoZSBMT1JELCBmb3IgaGUgaGF0aCB0cml1bXBoZWQgZ2xvcmlvdXNseTsgdGhlIGhvcnNlIGFuZCBoaXMgcmlkZXIgaGF0aCBoZSB0aHJvd24gaW50byB0aGUgc2VhLgpTbyBNb3NlcyBicm91Z2h0IElzcmFlbCBmcm9tIHRoZSBSZWQgc2VhLCBhbmQgdGhleSB3ZW50IG91dCBpbnRvIHRoZSB3aWxkZXJuZXNzIG9mIFNodXI7IGFuZCB0aGV5IHdlbnQgdGhyZWUgZGF5cyBpbiB0aGUgd2lsZGVybmVzcywgYW5kIGZvdW5kIG5vIHdhdGVyLgpBbmQgd2hlbiB0aGV5IGNhbWUgdG8gTWFyYWgsIHRoZXkgY291bGQgbm90IGRyaW5rIG9mIHRoZSB3YXRlcnMgb2YgTWFyYWgsIGZvciB0aGV5IHdlcmUgYml0dGVyOiB0aGVyZWZvcmUgdGhlIG5hbWUgb2YgaXQgd2FzIGNhbGxlZCBNYXJhaC4KQW5kIHRoZSBwZW9wbGUgbXVybXVyZWQgYWdhaW5zdCBNb3Nlcywgc2F5aW5nLCBXaGF0IHNoYWxsIHdlIGRyaW5rPwpBbmQgaGUgY3JpZWQgdW50byB0aGUgTE9SRDsgYW5kIHRoZSBMT1JEIHNoZXdlZCBoaW0gYSB0cmVlLCB3aGljaCB3aGVuIGhlIGhhZCBjYXN0IGludG8gdGhlIHdhdGVycywgdGhlIHdhdGVycyB3ZXJlIG1hZGUgc3dlZXQ6IHRoZXJlIGhlIG1hZGUgZm9yIHRoZW0gYSBzdGF0dXRlIGFuZCBhbiBvcmRpbmFuY2UsIGFuZCB0aGVyZSBoZSBwcm92ZWQgdGhlbSwKQW5kIHNhaWQsIElmIHRob3Ugd2lsdCBkaWxpZ2VudGx5IGhlYXJrZW4gdG8gdGhlIHZvaWNlIG9mIHRoZSBMT1JEIHRoeSBHb2QsIGFuZCB3aWx0IGRvIHRoYXQgd2hpY2ggaXMgcmlnaHQgaW4gaGlzIHNpZ2h0LCBhbmQgd2lsdCBnaXZlIGVhciB0byBoaXMgY29tbWFuZG1lbnRzLCBhbmQga2VlcCBhbGwgaGlzIHN0YXR1dGVzLCBJIHdpbGwgcHV0IG5vbmUgb2YgdGhlc2UgZGlzZWFzZXMgdXBvbiB0aGVlLCB3aGljaCBJIGhhdmUgYnJvdWdodCB1cG9uIHRoZSBFZ3lwdGlhbnM6IGZvciBJIGFtIHRoZSBMT1JEIHRoYXQgaGVhbGV0aCB0aGVlLgpBbmQgdGhleSBjYW1lIHRvIEVsaW0sIHdoZXJlIHdlcmUgdHdlbHZlIHdlbGxzIG9mIHdhdGVyLCBhbmQgdGhyZWVzY29yZSBhbmQgdGVuIHBhbG0gdHJlZXM6IGFuZCB0aGV5IGVuY2FtcGVkIHRoZXJlIGJ5IHRoZSB3YXRlcnMuCkFuZCB0aGV5IHRvb2sgdGhlaXIgam91cm5leSBmcm9tIEVsaW0sIGFuZCBhbGwgdGhlIGNvbmdyZWdhdGlvbiBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGNhbWUgdW50byB0aGUgd2lsZGVybmVzcyBvZiBTaW4sIHdoaWNoIGlzIGJldHdlZW4gRWxpbSBhbmQgU2luYWksIG9uIHRoZSBmaWZ0ZWVudGggZGF5IG9mIHRoZSBzZWNvbmQgbW9udGggYWZ0ZXIgdGhlaXIgZGVwYXJ0aW5nIG91dCBvZiB0aGUgbGFuZCBvZiBFZ3lwdC4KQW5kIHRoZSB3aG9sZSBjb25ncmVnYXRpb24gb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBtdXJtdXJlZCBhZ2FpbnN0IE1vc2VzIGFuZCBBYXJvbiBpbiB0aGUgd2lsZGVybmVzczoKQW5kIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgc2FpZCB1bnRvIHRoZW0sIFdvdWxkIHRvIEdvZCB3ZSBoYWQgZGllZCBieSB0aGUgaGFuZCBvZiB0aGUgTE9SRCBpbiB0aGUgbGFuZCBvZiBFZ3lwdCwgd2hlbiB3ZSBzYXQgYnkgdGhlIGZsZXNoIHBvdHMsIGFuZCB3aGVuIHdlIGRpZCBlYXQgYnJlYWQgdG8gdGhlIGZ1bGw7IGZvciB5ZSBoYXZlIGJyb3VnaHQgdXMgZm9ydGggaW50byB0aGlzIHdpbGRlcm5lc3MsIHRvIGtpbGwgdGhpcyB3aG9sZSBhc3NlbWJseSB3aXRoIGh1bmdlci4KVGhlbiBzYWlkIHRoZSBMT1JEIHVudG8gTW9zZXMsIEJlaG9sZCwgSSB3aWxsIHJhaW4gYnJlYWQgZnJvbSBoZWF2ZW4gZm9yIHlvdTsgYW5kIHRoZSBwZW9wbGUgc2hhbGwgZ28gb3V0IGFuZCBnYXRoZXIgYSBjZXJ0YWluIHJhdGUgZXZlcnkgZGF5LCB0aGF0IEkgbWF5IHByb3ZlIHRoZW0sIHdoZXRoZXIgdGhleSB3aWxsIHdhbGsgaW4gbXkgbGF3LCBvciBuby4KQW5kIGl0IHNoYWxsIGNvbWUgdG8gcGFzcywgdGhhdCBvbiB0aGUgc2l4dGggZGF5IHRoZXkgc2hhbGwgcHJlcGFyZSB0aGF0IHdoaWNoIHRoZXkgYnJpbmcgaW47IGFuZCBpdCBzaGFsbCBiZSB0d2ljZSBhcyBtdWNoIGFzIHRoZXkgZ2F0aGVyIGRhaWx5LgpBbmQgTW9zZXMgYW5kIEFhcm9uIHNhaWQgdW50byBhbGwgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgQXQgZXZlbiwgdGhlbiB5ZSBzaGFsbCBrbm93IHRoYXQgdGhlIExPUkQgaGF0aCBicm91Z2h0IHlvdSBvdXQgZnJvbSB0aGUgbGFuZCBvZiBFZ3lwdDoKQW5kIGluIHRoZSBtb3JuaW5nLCB0aGVuIHllIHNoYWxsIHNlZSB0aGUgZ2xvcnkgb2YgdGhlIExPUkQ7IGZvciB0aGF0IGhlIGhlYXJldGggeW91ciBtdXJtdXJpbmdzIGFnYWluc3QgdGhlIExPUkQ6IGFuZCB3aGF0IGFyZSB3ZSwgdGhhdCB5ZSBtdXJtdXIgYWdhaW5zdCB1cz8KQW5kIE1vc2VzIHNhaWQsIFRoaXMgc2hhbGwgYmUsIHdoZW4gdGhlIExPUkQgc2hhbGwgZ2l2ZSB5b3UgaW4gdGhlIGV2ZW5pbmcgZmxlc2ggdG8gZWF0LCBhbmQgaW4gdGhlIG1vcm5pbmcgYnJlYWQgdG8gdGhlIGZ1bGw7IGZvciB0aGF0IHRoZSBMT1JEIGhlYXJldGggeW91ciBtdXJtdXJpbmdzIHdoaWNoIHllIG11cm11ciBhZ2FpbnN0IGhpbTogYW5kIHdoYXQgYXJlIHdlPyB5b3VyIG11cm11cmluZ3MgYXJlIG5vdCBhZ2FpbnN0IHVzLCBidXQgYWdhaW5zdCB0aGUgTE9SRC4KQW5kIE1vc2VzIHNwYWtlIHVudG8gQWFyb24sIFNheSB1bnRvIGFsbCB0aGUgY29uZ3JlZ2F0aW9uIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIENvbWUgbmVhciBiZWZvcmUgdGhlIExPUkQ6IGZvciBoZSBoYXRoIGhlYXJkIHlvdXIgbXVybXVyaW5ncy4KQW5kIGl0IGNhbWUgdG8gcGFzcywgYXMgQWFyb24gc3Bha2UgdW50byB0aGUgd2hvbGUgY29uZ3JlZ2F0aW9uIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIHRoYXQgdGhleSBsb29rZWQgdG93YXJkIHRoZSB3aWxkZXJuZXNzLCBhbmQsIGJlaG9sZCwgdGhlIGdsb3J5IG9mIHRoZSBMT1JEIGFwcGVhcmVkIGluIHRoZSBjbG91ZC4KQW5kIHRoZSBMT1JEIHNwYWtlIHVudG8gTW9zZXMsIHNheWluZywKSSBoYXZlIGhlYXJkIHRoZSBtdXJtdXJpbmdzIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWw6IHNwZWFrIHVudG8gdGhlbSwgc2F5aW5nLCBBdCBldmVuIHllIHNoYWxsIGVhdCBmbGVzaCwgYW5kIGluIHRoZSBtb3JuaW5nIHllIHNoYWxsIGJlIGZpbGxlZCB3aXRoIGJyZWFkOyBhbmQgeWUgc2hhbGwga25vdyB0aGF0IEkgYW0gdGhlIExPUkQgeW91ciBHb2QuCkFuZCBpdCBjYW1lIHRvIHBhc3MsIHRoYXQgYXQgZXZlbiB0aGUgcXVhaWxzIGNhbWUgdXAsIGFuZCBjb3ZlcmVkIHRoZSBjYW1wOiBhbmQgaW4gdGhlIG1vcm5pbmcgdGhlIGRldyBsYXkgcm91bmQgYWJvdXQgdGhlIGhvc3QuCkFuZCB3aGVuIHRoZSBkZXcgdGhhdCBsYXkgd2FzIGdvbmUgdXAsIGJlaG9sZCwgdXBvbiB0aGUgZmFjZSBvZiB0aGUgd2lsZGVybmVzcyB0aGVyZSBsYXkgYSBzbWFsbCByb3VuZCB0aGluZywgYXMgc21hbGwgYXMgdGhlIGhvYXIgZnJvc3Qgb24gdGhlIGdyb3VuZC4KQW5kIHdoZW4gdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBzYXcgaXQsIHRoZXkgc2FpZCBvbmUgdG8gYW5vdGhlciwgSXQgaXMgbWFubmE6IGZvciB0aGV5IHdpc3Qgbm90IHdoYXQgaXQgd2FzLiBBbmQgTW9zZXMgc2FpZCB1bnRvIHRoZW0sIFRoaXMgaXMgdGhlIGJyZWFkIHdoaWNoIHRoZSBMT1JEIGhhdGggZ2l2ZW4geW91IHRvIGVhdC4KVGhpcyBpcyB0aGUgdGhpbmcgd2hpY2ggdGhlIExPUkQgaGF0aCBjb21tYW5kZWQsIEdhdGhlciBvZiBpdCBldmVyeSBtYW4gYWNjb3JkaW5nIHRvIGhpcyBlYXRpbmcsIGFuIG9tZXIgZm9yIGV2ZXJ5IG1hbiwgYWNjb3JkaW5nIHRvIHRoZSBudW1iZXIgb2YgeW91ciBwZXJzb25zOyB0YWtlIHllIGV2ZXJ5IG1hbiBmb3IgdGhlbSB3aGljaCBhcmUgaW4gaGlzIHRlbnRzLgpBbmQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBkaWQgc28sIGFuZCBnYXRoZXJlZCwgc29tZSBtb3JlLCBzb21lIGxlc3MuCkFuZCB3aGVuIHRoZXkgZGlkIG1ldGUgaXQgd2l0aCBhbiBvbWVyLCBoZSB0aGF0IGdhdGhlcmVkIG11Y2ggaGFkIG5vdGhpbmcgb3ZlciwgYW5kIGhlIHRoYXQgZ2F0aGVyZWQgbGl0dGxlIGhhZCBubyBsYWNrOyB0aGV5IGdhdGhlcmVkIGV2ZXJ5IG1hbiBhY2NvcmRpbmcgdG8gaGlzIGVhdGluZy4KQW5kIE1vc2VzIHNhaWQsIExldCBubyBtYW4gbGVhdmUgb2YgaXQgdGlsbCB0aGUgbW9ybmluZy4KTm90d2l0aHN0YW5kaW5nIHRoZXkgaGVhcmtlbmVkIG5vdCB1bnRvIE1vc2VzOyBidXQgc29tZSBvZiB0aGVtIGxlZnQgb2YgaXQgdW50aWwgdGhlIG1vcm5pbmcsIGFuZCBpdCBicmVkIHdvcm1zLCBhbmQgc3Rhbms6IGFuZCBNb3NlcyB3YXMgd3JvdGggd2l0aCB0aGVtLgpBbmQgdGhleSBnYXRoZXJlZCBpdCBldmVyeSBtb3JuaW5nLCBldmVyeSBtYW4gYWNjb3JkaW5nIHRvIGhpcyBlYXRpbmc6IGFuZCB3aGVuIHRoZSBzdW4gd2F4ZWQgaG90LCBpdCBtZWx0ZWQuCkFuZCBpdCBjYW1lIHRvIHBhc3MsIHRoYXQgb24gdGhlIHNpeHRoIGRheSB0aGV5IGdhdGhlcmVkIHR3aWNlIGFzIG11Y2ggYnJlYWQsIHR3byBvbWVycyBmb3Igb25lIG1hbjogYW5kIGFsbCB0aGUgcnVsZXJzIG9mIHRoZSBjb25ncmVnYXRpb24gY2FtZSBhbmQgdG9sZCBNb3Nlcy4KQW5kIGhlIHNhaWQgdW50byB0aGVtLCBUaGlzIGlzIHRoYXQgd2hpY2ggdGhlIExPUkQgaGF0aCBzYWlkLCBUbyBtb3Jyb3cgaXMgdGhlIHJlc3Qgb2YgdGhlIGhvbHkgc2FiYmF0aCB1bnRvIHRoZSBMT1JEOiBiYWtlIHRoYXQgd2hpY2ggeWUgd2lsbCBiYWtlIHRvIGRheSwgYW5kIHNlZXRoZSB0aGF0IHllIHdpbGwgc2VldGhlOyBhbmQgdGhhdCB3aGljaCByZW1haW5ldGggb3ZlciBsYXkgdXAgZm9yIHlvdSB0byBiZSBrZXB0IHVudGlsIHRoZSBtb3JuaW5nLgpBbmQgdGhleSBsYWlkIGl0IHVwIHRpbGwgdGhlIG1vcm5pbmcsIGFzIE1vc2VzIGJhZGU6IGFuZCBpdCBkaWQgbm90IHN0aW5rLCBuZWl0aGVyIHdhcyB0aGVyZSBhbnkgd29ybSB0aGVyZWluLgpBbmQgTW9zZXMgc2FpZCwgRWF0IHRoYXQgdG8gZGF5OyBmb3IgdG8gZGF5IGlzIGEgc2FiYmF0aCB1bnRvIHRoZSBMT1JEOiB0byBkYXkgeWUgc2hhbGwgbm90IGZpbmQgaXQgaW4gdGhlIGZpZWxkLgpTaXggZGF5cyB5ZSBzaGFsbCBnYXRoZXIgaXQ7IGJ1dCBvbiB0aGUgc2V2ZW50aCBkYXksIHdoaWNoIGlzIHRoZSBzYWJiYXRoLCBpbiBpdCB0aGVyZSBzaGFsbCBiZSBub25lLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB0aGF0IHRoZXJlIHdlbnQgb3V0IHNvbWUgb2YgdGhlIHBlb3BsZSBvbiB0aGUgc2V2ZW50aCBkYXkgZm9yIHRvIGdhdGhlciwgYW5kIHRoZXkgZm91bmQgbm9uZS4KQW5kIHRoZSBMT1JEIHNhaWQgdW50byBNb3NlcywgSG93IGxvbmcgcmVmdXNlIHllIHRvIGtlZXAgbXkgY29tbWFuZG1lbnRzIGFuZCBteSBsYXdzPwpTZWUsIGZvciB0aGF0IHRoZSBMT1JEIGhhdGggZ2l2ZW4geW91IHRoZSBzYWJiYXRoLCB0aGVyZWZvcmUgaGUgZ2l2ZXRoIHlvdSBvbiB0aGUgc2l4dGggZGF5IHRoZSBicmVhZCBvZiB0d28gZGF5czsgYWJpZGUgeWUgZXZlcnkgbWFuIGluIGhpcyBwbGFjZSwgbGV0IG5vIG1hbiBnbyBvdXQgb2YgaGlzIHBsYWNlIG9uIHRoZSBzZXZlbnRoIGRheS4KU28gdGhlIHBlb3BsZSByZXN0ZWQgb24gdGhlIHNldmVudGggZGF5LgpBbmQgdGhlIGhvdXNlIG9mIElzcmFlbCBjYWxsZWQgdGhlIG5hbWUgdGhlcmVvZiBNYW5uYTogYW5kIGl0IHdhcyBsaWtlIGNvcmlhbmRlciBzZWVkLCB3aGl0ZTsgYW5kIHRoZSB0YXN0ZSBvZiBpdCB3YXMgbGlrZSB3YWZlcnMgbWFkZSB3aXRoIGhvbmV5LgpBbmQgTW9zZXMgc2FpZCwgVGhpcyBpcyB0aGUgdGhpbmcgd2hpY2ggdGhlIExPUkQgY29tbWFuZGV0aCwgRmlsbCBhbiBvbWVyIG9mIGl0IHRvIGJlIGtlcHQgZm9yIHlvdXIgZ2VuZXJhdGlvbnM7IHRoYXQgdGhleSBtYXkgc2VlIHRoZSBicmVhZCB3aGVyZXdpdGggSSBoYXZlIGZlZCB5b3UgaW4gdGhlIHdpbGRlcm5lc3MsIHdoZW4gSSBicm91Z2h0IHlvdSBmb3J0aCBmcm9tIHRoZSBsYW5kIG9mIEVneXB0LgpBbmQgTW9zZXMgc2FpZCB1bnRvIEFhcm9uLCBUYWtlIGEgcG90LCBhbmQgcHV0IGFuIG9tZXIgZnVsbCBvZiBtYW5uYSB0aGVyZWluLCBhbmQgbGF5IGl0IHVwIGJlZm9yZSB0aGUgTE9SRCwgdG8gYmUga2VwdCBmb3IgeW91ciBnZW5lcmF0aW9ucy4KQXMgdGhlIExPUkQgY29tbWFuZGVkIE1vc2VzLCBzbyBBYXJvbiBsYWlkIGl0IHVwIGJlZm9yZSB0aGUgVGVzdGltb255LCB0byBiZSBrZXB0LgpBbmQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBkaWQgZWF0IG1hbm5hIGZvcnR5IHllYXJzLCB1bnRpbCB0aGV5IGNhbWUgdG8gYSBsYW5kIGluaGFiaXRlZDsgdGhleSBkaWQgZWF0IG1hbm5hLCB1bnRpbCB0aGV5IGNhbWUgdW50byB0aGUgYm9yZGVycyBvZiB0aGUgbGFuZCBvZiBDYW5hYW4uCk5vdyBhbiBvbWVyIGlzIHRoZSB0ZW50aCBwYXJ0IG9mIGFuIGVwaGFoLgpBbmQgYWxsIHRoZSBjb25ncmVnYXRpb24gb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBqb3VybmV5ZWQgZnJvbSB0aGUgd2lsZGVybmVzcyBvZiBTaW4sIGFmdGVyIHRoZWlyIGpvdXJuZXlzLCBhY2NvcmRpbmcgdG8gdGhlIGNvbW1hbmRtZW50IG9mIHRoZSBMT1JELCBhbmQgcGl0Y2hlZCBpbiBSZXBoaWRpbTogYW5kIHRoZXJlIHdhcyBubyB3YXRlciBmb3IgdGhlIHBlb3BsZSB0byBkcmluay4KV2hlcmVmb3JlIHRoZSBwZW9wbGUgZGlkIGNoaWRlIHdpdGggTW9zZXMsIGFuZCBzYWlkLCBHaXZlIHVzIHdhdGVyIHRoYXQgd2UgbWF5IGRyaW5rLiBBbmQgTW9zZXMgc2FpZCB1bnRvIHRoZW0sIFdoeSBjaGlkZSB5ZSB3aXRoIG1lPyB3aGVyZWZvcmUgZG8geWUgdGVtcHQgdGhlIExPUkQ/CkFuZCB0aGUgcGVvcGxlIHRoaXJzdGVkIHRoZXJlIGZvciB3YXRlcjsgYW5kIHRoZSBwZW9wbGUgbXVybXVyZWQgYWdhaW5zdCBNb3NlcywgYW5kIHNhaWQsIFdoZXJlZm9yZSBpcyB0aGlzIHRoYXQgdGhvdSBoYXN0IGJyb3VnaHQgdXMgdXAgb3V0IG9mIEVneXB0LCB0byBraWxsIHVzIGFuZCBvdXIgY2hpbGRyZW4gYW5kIG91ciBjYXR0bGUgd2l0aCB0aGlyc3Q/CkFuZCBNb3NlcyBjcmllZCB1bnRvIHRoZSBMT1JELCBzYXlpbmcsIFdoYXQgc2hhbGwgSSBkbyB1bnRvIHRoaXMgcGVvcGxlPyB0aGV5IGJlIGFsbW9zdCByZWFkeSB0byBzdG9uZSBtZS4KQW5kIHRoZSBMT1JEIHNhaWQgdW50byBNb3NlcywgR28gb24gYmVmb3JlIHRoZSBwZW9wbGUsIGFuZCB0YWtlIHdpdGggdGhlZSBvZiB0aGUgZWxkZXJzIG9mIElzcmFlbDsgYW5kIHRoeSByb2QsIHdoZXJld2l0aCB0aG91IHNtb3Rlc3QgdGhlIHJpdmVyLCB0YWtlIGluIHRoaW5lIGhhbmQsIGFuZCBnby4KQmVob2xkLCBJIHdpbGwgc3RhbmQgYmVmb3JlIHRoZWUgdGhlcmUgdXBvbiB0aGUgcm9jayBpbiBIb3JlYjsgYW5kIHRob3Ugc2hhbHQgc21pdGUgdGhlIHJvY2ssIGFuZCB0aGVyZSBzaGFsbCBjb21lIHdhdGVyIG91dCBvZiBpdCwgdGhhdCB0aGUgcGVvcGxlIG1heSBkcmluay4gQW5kIE1vc2VzIGRpZCBzbyBpbiB0aGUgc2lnaHQgb2YgdGhlIGVsZGVycyBvZiBJc3JhZWwuCkFuZCBoZSBjYWxsZWQgdGhlIG5hbWUgb2YgdGhlIHBsYWNlIE1hc3NhaCwgYW5kIE1lcmliYWgsIGJlY2F1c2Ugb2YgdGhlIGNoaWRpbmcgb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgYW5kIGJlY2F1c2UgdGhleSB0ZW1wdGVkIHRoZSBMT1JELCBzYXlpbmcsIElzIHRoZSBMT1JEIGFtb25nIHVzLCBvciBub3Q/ClRoZW4gY2FtZSBBbWFsZWssIGFuZCBmb3VnaHQgd2l0aCBJc3JhZWwgaW4gUmVwaGlkaW0uCkFuZCBNb3NlcyBzYWlkIHVudG8gSm9zaHVhLCBDaG9vc2UgdXMgb3V0IG1lbiwgYW5kIGdvIG91dCwgZmlnaHQgd2l0aCBBbWFsZWs6IHRvIG1vcnJvdyBJIHdpbGwgc3RhbmQgb24gdGhlIHRvcCBvZiB0aGUgaGlsbCB3aXRoIHRoZSByb2Qgb2YgR29kIGluIG1pbmUgaGFuZC4KU28gSm9zaHVhIGRpZCBhcyBNb3NlcyBoYWQgc2FpZCB0byBoaW0sIGFuZCBmb3VnaHQgd2l0aCBBbWFsZWs6IGFuZCBNb3NlcywgQWFyb24sIGFuZCBIdXIgd2VudCB1cCB0byB0aGUgdG9wIG9mIHRoZSBoaWxsLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIE1vc2VzIGhlbGQgdXAgaGlzIGhhbmQsIHRoYXQgSXNyYWVsIHByZXZhaWxlZDogYW5kIHdoZW4gaGUgbGV0IGRvd24gaGlzIGhhbmQsIEFtYWxlayBwcmV2YWlsZWQuCkJ1dCBNb3NlcyBoYW5kcyB3ZXJlIGhlYXZ5OyBhbmQgdGhleSB0b29rIGEgc3RvbmUsIGFuZCBwdXQgaXQgdW5kZXIgaGltLCBhbmQgaGUgc2F0IHRoZXJlb247IGFuZCBBYXJvbiBhbmQgSHVyIHN0YXllZCB1cCBoaXMgaGFuZHMsIHRoZSBvbmUgb24gdGhlIG9uZSBzaWRlLCBhbmQgdGhlIG90aGVyIG9uIHRoZSBvdGhlciBzaWRlOyBhbmQgaGlzIGhhbmRzIHdlcmUgc3RlYWR5IHVudGlsIHRoZSBnb2luZyBkb3duIG9mIHRoZSBzdW4uCkFuZCBKb3NodWEgZGlzY29tZml0ZWQgQW1hbGVrIGFuZCBoaXMgcGVvcGxlIHdpdGggdGhlIGVkZ2Ugb2YgdGhlIHN3b3JkLgpBbmQgdGhlIExPUkQgc2FpZCB1bnRvIE1vc2VzLCBXcml0ZSB0aGlzIGZvciBhIG1lbW9yaWFsIGluIGEgYm9vaywgYW5kIHJlaGVhcnNlIGl0IGluIHRoZSBlYXJzIG9mIEpvc2h1YTogZm9yIEkgd2lsbCB1dHRlcmx5IHB1dCBvdXQgdGhlIHJlbWVtYnJhbmNlIG9mIEFtYWxlayBmcm9tIHVuZGVyIGhlYXZlbi4KQW5kIE1vc2VzIGJ1aWx0IGFuIGFsdGFyLCBhbmQgY2FsbGVkIHRoZSBuYW1lIG9mIGl0IEplaG92YWhuaXNzaToKRm9yIGhlIHNhaWQsIEJlY2F1c2UgdGhlIExPUkQgaGF0aCBzd29ybiB0aGF0IHRoZSBMT1JEIHdpbGwgaGF2ZSB3YXIgd2l0aCBBbWFsZWsgZnJvbSBnZW5lcmF0aW9uIHRvIGdlbmVyYXRpb24uCldoZW4gSmV0aHJvLCB0aGUgcHJpZXN0IG9mIE1pZGlhbiwgTW9zZXMnIGZhdGhlciBpbiBsYXcsIGhlYXJkIG9mIGFsbCB0aGF0IEdvZCBoYWQgZG9uZSBmb3IgTW9zZXMsIGFuZCBmb3IgSXNyYWVsIGhpcyBwZW9wbGUsIGFuZCB0aGF0IHRoZSBMT1JEIGhhZCBicm91Z2h0IElzcmFlbCBvdXQgb2YgRWd5cHQ7ClRoZW4gSmV0aHJvLCBNb3NlcycgZmF0aGVyIGluIGxhdywgdG9vayBaaXBwb3JhaCwgTW9zZXMnIHdpZmUsIGFmdGVyIGhlIGhhZCBzZW50IGhlciBiYWNrLApBbmQgaGVyIHR3byBzb25zOyBvZiB3aGljaCB0aGUgbmFtZSBvZiB0aGUgb25lIHdhcyBHZXJzaG9tOyBmb3IgaGUgc2FpZCwgSSBoYXZlIGJlZW4gYW4gYWxpZW4gaW4gYSBzdHJhbmdlIGxhbmQ6CkFuZCB0aGUgbmFtZSBvZiB0aGUgb3RoZXIgd2FzIEVsaWV6ZXI7IGZvciB0aGUgR29kIG9mIG15IGZhdGhlciwgc2FpZCBoZSwgd2FzIG1pbmUgaGVscCwgYW5kIGRlbGl2ZXJlZCBtZSBmcm9tIHRoZSBzd29yZCBvZiBQaGFyYW9oOgpBbmQgSmV0aHJvLCBNb3NlcycgZmF0aGVyIGluIGxhdywgY2FtZSB3aXRoIGhpcyBzb25zIGFuZCBoaXMgd2lmZSB1bnRvIE1vc2VzIGludG8gdGhlIHdpbGRlcm5lc3MsIHdoZXJlIGhlIGVuY2FtcGVkIGF0IHRoZSBtb3VudCBvZiBHb2Q6CkFuZCBoZSBzYWlkIHVudG8gTW9zZXMsIEkgdGh5IGZhdGhlciBpbiBsYXcgSmV0aHJvIGFtIGNvbWUgdW50byB0aGVlLCBhbmQgdGh5IHdpZmUsIGFuZCBoZXIgdHdvIHNvbnMgd2l0aCBoZXIuCkFuZCBNb3NlcyB3ZW50IG91dCB0byBtZWV0IGhpcyBmYXRoZXIgaW4gbGF3LCBhbmQgZGlkIG9iZWlzYW5jZSwgYW5kIGtpc3NlZCBoaW07IGFuZCB0aGV5IGFza2VkIGVhY2ggb3RoZXIgb2YgdGhlaXIgd2VsZmFyZTsgYW5kIHRoZXkgY2FtZSBpbnRvIHRoZSB0ZW50LgpBbmQgTW9zZXMgdG9sZCBoaXMgZmF0aGVyIGluIGxhdyBhbGwgdGhhdCB0aGUgTE9SRCBoYWQgZG9uZSB1bnRvIFBoYXJhb2ggYW5kIHRvIHRoZSBFZ3lwdGlhbnMgZm9yIElzcmFlbCdzIHNha2UsIGFuZCBhbGwgdGhlIHRyYXZhaWwgdGhhdCBoYWQgY29tZSB1cG9uIHRoZW0gYnkgdGhlIHdheSwgYW5kIGhvdyB0aGUgTE9SRCBkZWxpdmVyZWQgdGhlbS4KQW5kIEpldGhybyByZWpvaWNlZCBmb3IgYWxsIHRoZSBnb29kbmVzcyB3aGljaCB0aGUgTE9SRCBoYWQgZG9uZSB0byBJc3JhZWwsIHdob20gaGUgaGFkIGRlbGl2ZXJlZCBvdXQgb2YgdGhlIGhhbmQgb2YgdGhlIEVneXB0aWFucy4KQW5kIEpldGhybyBzYWlkLCBCbGVzc2VkIGJlIHRoZSBMT1JELCB3aG8gaGF0aCBkZWxpdmVyZWQgeW91IG91dCBvZiB0aGUgaGFuZCBvZiB0aGUgRWd5cHRpYW5zLCBhbmQgb3V0IG9mIHRoZSBoYW5kIG9mIFBoYXJhb2gsIHdobyBoYXRoIGRlbGl2ZXJlZCB0aGUgcGVvcGxlIGZyb20gdW5kZXIgdGhlIGhhbmQgb2YgdGhlIEVneXB0aWFucy4KTm93IEkga25vdyB0aGF0IHRoZSBMT1JEIGlzIGdyZWF0ZXIgdGhhbiBhbGwgZ29kczogZm9yIGluIHRoZSB0aGluZyB3aGVyZWluIHRoZXkgZGVhbHQgcHJvdWRseSBoZSB3YXMgYWJvdmUgdGhlbS4KQW5kIEpldGhybywgTW9zZXMnIGZhdGhlciBpbiBsYXcsIHRvb2sgYSBidXJudCBvZmZlcmluZyBhbmQgc2FjcmlmaWNlcyBmb3IgR29kOiBhbmQgQWFyb24gY2FtZSwgYW5kIGFsbCB0aGUgZWxkZXJzIG9mIElzcmFlbCwgdG8gZWF0IGJyZWFkIHdpdGggTW9zZXMnIGZhdGhlciBpbiBsYXcgYmVmb3JlIEdvZC4KQW5kIGl0IGNhbWUgdG8gcGFzcyBvbiB0aGUgbW9ycm93LCB0aGF0IE1vc2VzIHNhdCB0byBqdWRnZSB0aGUgcGVvcGxlOiBhbmQgdGhlIHBlb3BsZSBzdG9vZCBieSBNb3NlcyBmcm9tIHRoZSBtb3JuaW5nIHVudG8gdGhlIGV2ZW5pbmcuCkFuZCB3aGVuIE1vc2VzJyBmYXRoZXIgaW4gbGF3IHNhdyBhbGwgdGhhdCBoZSBkaWQgdG8gdGhlIHBlb3BsZSwgaGUgc2FpZCwgV2hhdCBpcyB0aGlzIHRoaW5nIHRoYXQgdGhvdSBkb2VzdCB0byB0aGUgcGVvcGxlPyB3aHkgc2l0dGVzdCB0aG91IHRoeXNlbGYgYWxvbmUsIGFuZCBhbGwgdGhlIHBlb3BsZSBzdGFuZCBieSB0aGVlIGZyb20gbW9ybmluZyB1bnRvIGV2ZW4/CkFuZCBNb3NlcyBzYWlkIHVudG8gaGlzIGZhdGhlciBpbiBsYXcsIEJlY2F1c2UgdGhlIHBlb3BsZSBjb21lIHVudG8gbWUgdG8gZW5xdWlyZSBvZiBHb2Q6CldoZW4gdGhleSBoYXZlIGEgbWF0dGVyLCB0aGV5IGNvbWUgdW50byBtZTsgYW5kIEkganVkZ2UgYmV0d2VlbiBvbmUgYW5kIGFub3RoZXIsIGFuZCBJIGRvIG1ha2UgdGhlbSBrbm93IHRoZSBzdGF0dXRlcyBvZiBHb2QsIGFuZCBoaXMgbGF3cy4KQW5kIE1vc2VzJyBmYXRoZXIgaW4gbGF3IHNhaWQgdW50byBoaW0sIFRoZSB0aGluZyB0aGF0IHRob3UgZG9lc3QgaXMgbm90IGdvb2QuClRob3Ugd2lsdCBzdXJlbHkgd2VhciBhd2F5LCBib3RoIHRob3UsIGFuZCB0aGlzIHBlb3BsZSB0aGF0IGlzIHdpdGggdGhlZTogZm9yIHRoaXMgdGhpbmcgaXMgdG9vIGhlYXZ5IGZvciB0aGVlOyB0aG91IGFydCBub3QgYWJsZSB0byBwZXJmb3JtIGl0IHRoeXNlbGYgYWxvbmUuCkhlYXJrZW4gbm93IHVudG8gbXkgdm9pY2UsIEkgd2lsbCBnaXZlIHRoZWUgY291bnNlbCwgYW5kIEdvZCBzaGFsbCBiZSB3aXRoIHRoZWU6IEJlIHRob3UgZm9yIHRoZSBwZW9wbGUgdG8gR29kLXdhcmQsIHRoYXQgdGhvdSBtYXllc3QgYnJpbmcgdGhlIGNhdXNlcyB1bnRvIEdvZDoKQW5kIHRob3Ugc2hhbHQgdGVhY2ggdGhlbSBvcmRpbmFuY2VzIGFuZCBsYXdzLCBhbmQgc2hhbHQgc2hldyB0aGVtIHRoZSB3YXkgd2hlcmVpbiB0aGV5IG11c3Qgd2FsaywgYW5kIHRoZSB3b3JrIHRoYXQgdGhleSBtdXN0IGRvLgpNb3Jlb3ZlciB0aG91IHNoYWx0IHByb3ZpZGUgb3V0IG9mIGFsbCB0aGUgcGVvcGxlIGFibGUgbWVuLCBzdWNoIGFzIGZlYXIgR29kLCBtZW4gb2YgdHJ1dGgsIGhhdGluZyBjb3ZldG91c25lc3M7IGFuZCBwbGFjZSBzdWNoIG92ZXIgdGhlbSwgdG8gYmUgcnVsZXJzIG9mIHRob3VzYW5kcywgYW5kIHJ1bGVycyBvZiBodW5kcmVkcywgcnVsZXJzIG9mIGZpZnRpZXMsIGFuZCBydWxlcnMgb2YgdGVuczoKQW5kIGxldCB0aGVtIGp1ZGdlIHRoZSBwZW9wbGUgYXQgYWxsIHNlYXNvbnM6IGFuZCBpdCBzaGFsbCBiZSwgdGhhdCBldmVyeSBncmVhdCBtYXR0ZXIgdGhleSBzaGFsbCBicmluZyB1bnRvIHRoZWUsIGJ1dCBldmVyeSBzbWFsbCBtYXR0ZXIgdGhleSBzaGFsbCBqdWRnZTogc28gc2hhbGwgaXQgYmUgZWFzaWVyIGZvciB0aHlzZWxmLCBhbmQgdGhleSBzaGFsbCBiZWFyIHRoZSBidXJkZW4gd2l0aCB0aGVlLgpJZiB0aG91IHNoYWx0IGRvIHRoaXMgdGhpbmcsIGFuZCBHb2QgY29tbWFuZCB0aGVlIHNvLCB0aGVuIHRob3Ugc2hhbHQgYmUgYWJsZSB0byBlbmR1cmUsIGFuZCBhbGwgdGhpcyBwZW9wbGUgc2hhbGwgYWxzbyBnbyB0byB0aGVpciBwbGFjZSBpbiBwZWFjZS4KU28gTW9zZXMgaGVhcmtlbmVkIHRvIHRoZSB2b2ljZSBvZiBoaXMgZmF0aGVyIGluIGxhdywgYW5kIGRpZCBhbGwgdGhhdCBoZSBoYWQgc2FpZC4KQW5kIE1vc2VzIGNob3NlIGFibGUgbWVuIG91dCBvZiBhbGwgSXNyYWVsLCBhbmQgbWFkZSB0aGVtIGhlYWRzIG92ZXIgdGhlIHBlb3BsZSwgcnVsZXJzIG9mIHRob3VzYW5kcywgcnVsZXJzIG9mIGh1bmRyZWRzLCBydWxlcnMgb2YgZmlmdGllcywgYW5kIHJ1bGVycyBvZiB0ZW5zLgpBbmQgdGhleSBqdWRnZWQgdGhlIHBlb3BsZSBhdCBhbGwgc2Vhc29uczogdGhlIGhhcmQgY2F1c2VzIHRoZXkgYnJvdWdodCB1bnRvIE1vc2VzLCBidXQgZXZlcnkgc21hbGwgbWF0dGVyIHRoZXkganVkZ2VkIHRoZW1zZWx2ZXMuCkFuZCBNb3NlcyBsZXQgaGlzIGZhdGhlciBpbiBsYXcgZGVwYXJ0OyBhbmQgaGUgd2VudCBoaXMgd2F5IGludG8gaGlzIG93biBsYW5kLgpJbiB0aGUgdGhpcmQgbW9udGgsIHdoZW4gdGhlIGNoaWxkcmVuIG9mIElzcmFlbCB3ZXJlIGdvbmUgZm9ydGggb3V0IG9mIHRoZSBsYW5kIG9mIEVneXB0LCB0aGUgc2FtZSBkYXkgY2FtZSB0aGV5IGludG8gdGhlIHdpbGRlcm5lc3Mgb2YgU2luYWkuCkZvciB0aGV5IHdlcmUgZGVwYXJ0ZWQgZnJvbSBSZXBoaWRpbSwgYW5kIHdlcmUgY29tZSB0byB0aGUgZGVzZXJ0IG9mIFNpbmFpLCBhbmQgaGFkIHBpdGNoZWQgaW4gdGhlIHdpbGRlcm5lc3M7IGFuZCB0aGVyZSBJc3JhZWwgY2FtcGVkIGJlZm9yZSB0aGUgbW91bnQuCkFuZCBNb3NlcyB3ZW50IHVwIHVudG8gR29kLCBhbmQgdGhlIExPUkQgY2FsbGVkIHVudG8gaGltIG91dCBvZiB0aGUgbW91bnRhaW4sIHNheWluZywgVGh1cyBzaGFsdCB0aG91IHNheSB0byB0aGUgaG91c2Ugb2YgSmFjb2IsIGFuZCB0ZWxsIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWw7ClllIGhhdmUgc2VlbiB3aGF0IEkgZGlkIHVudG8gdGhlIEVneXB0aWFucywgYW5kIGhvdyBJIGJhcmUgeW91IG9uIGVhZ2xlcycgd2luZ3MsIGFuZCBicm91Z2h0IHlvdSB1bnRvIG15c2VsZi4KTm93IHRoZXJlZm9yZSwgaWYgeWUgd2lsbCBvYmV5IG15IHZvaWNlIGluZGVlZCwgYW5kIGtlZXAgbXkgY292ZW5hbnQsIHRoZW4geWUgc2hhbGwgYmUgYSBwZWN1bGlhciB0cmVhc3VyZSB1bnRvIG1lIGFib3ZlIGFsbCBwZW9wbGU6IGZvciBhbGwgdGhlIGVhcnRoIGlzIG1pbmU6CkFuZCB5ZSBzaGFsbCBiZSB1bnRvIG1lIGEga2luZ2RvbSBvZiBwcmllc3RzLCBhbmQgYW4gaG9seSBuYXRpb24uIFRoZXNlIGFyZSB0aGUgd29yZHMgd2hpY2ggdGhvdSBzaGFsdCBzcGVhayB1bnRvIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwuCkFuZCBNb3NlcyBjYW1lIGFuZCBjYWxsZWQgZm9yIHRoZSBlbGRlcnMgb2YgdGhlIHBlb3BsZSwgYW5kIGxhaWQgYmVmb3JlIHRoZWlyIGZhY2VzIGFsbCB0aGVzZSB3b3JkcyB3aGljaCB0aGUgTE9SRCBjb21tYW5kZWQgaGltLgpBbmQgYWxsIHRoZSBwZW9wbGUgYW5zd2VyZWQgdG9nZXRoZXIsIGFuZCBzYWlkLCBBbGwgdGhhdCB0aGUgTE9SRCBoYXRoIHNwb2tlbiB3ZSB3aWxsIGRvLiBBbmQgTW9zZXMgcmV0dXJuZWQgdGhlIHdvcmRzIG9mIHRoZSBwZW9wbGUgdW50byB0aGUgTE9SRC4KQW5kIHRoZSBMT1JEIHNhaWQgdW50byBNb3NlcywgTG8sIEkgY29tZSB1bnRvIHRoZWUgaW4gYSB0aGljayBjbG91ZCwgdGhhdCB0aGUgcGVvcGxlIG1heSBoZWFyIHdoZW4gSSBzcGVhayB3aXRoIHRoZWUsIGFuZCBiZWxpZXZlIHRoZWUgZm9yIGV2ZXIuIEFuZCBNb3NlcyB0b2xkIHRoZSB3b3JkcyBvZiB0aGUgcGVvcGxlIHVudG8gdGhlIExPUkQuCkFuZCB0aGUgTE9SRCBzYWlkIHVudG8gTW9zZXMsIEdvIHVudG8gdGhlIHBlb3BsZSwgYW5kIHNhbmN0aWZ5IHRoZW0gdG8gZGF5IGFuZCB0byBtb3Jyb3csIGFuZCBsZXQgdGhlbSB3YXNoIHRoZWlyIGNsb3RoZXMsCkFuZCBiZSByZWFkeSBhZ2FpbnN0IHRoZSB0aGlyZCBkYXk6IGZvciB0aGUgdGhpcmQgZGF5IHRoZSBMT1JEIHdpbGwgY29tZSBkb3duIGluIHRoZSBzaWdodCBvZiBhbGwgdGhlIHBlb3BsZSB1cG9uIG1vdW50IFNpbmFpLgpBbmQgdGhvdSBzaGFsdCBzZXQgYm91bmRzIHVudG8gdGhlIHBlb3BsZSByb3VuZCBhYm91dCwgc2F5aW5nLCBUYWtlIGhlZWQgdG8geW91cnNlbHZlcywgdGhhdCB5ZSBnbyBub3QgdXAgaW50byB0aGUgbW91bnQsIG9yIHRvdWNoIHRoZSBib3JkZXIgb2YgaXQ6IHdob3NvZXZlciB0b3VjaGV0aCB0aGUgbW91bnQgc2hhbGwgYmUgc3VyZWx5IHB1dCB0byBkZWF0aDoKVGhlcmUgc2hhbGwgbm90IGFuIGhhbmQgdG91Y2ggaXQsIGJ1dCBoZSBzaGFsbCBzdXJlbHkgYmUgc3RvbmVkLCBvciBzaG90IHRocm91Z2g7IHdoZXRoZXIgaXQgYmUgYmVhc3Qgb3IgbWFuLCBpdCBzaGFsbCBub3QgbGl2ZTogd2hlbiB0aGUgdHJ1bXBldCBzb3VuZGV0aCBsb25nLCB0aGV5IHNoYWxsIGNvbWUgdXAgdG8gdGhlIG1vdW50LgpBbmQgTW9zZXMgd2VudCBkb3duIGZyb20gdGhlIG1vdW50IHVudG8gdGhlIHBlb3BsZSwgYW5kIHNhbmN0aWZpZWQgdGhlIHBlb3BsZTsgYW5kIHRoZXkgd2FzaGVkIHRoZWlyIGNsb3RoZXMuCkFuZCBoZSBzYWlkIHVudG8gdGhlIHBlb3BsZSwgQmUgcmVhZHkgYWdhaW5zdCB0aGUgdGhpcmQgZGF5OiBjb21lIG5vdCBhdCB5b3VyIHdpdmVzLgpBbmQgaXQgY2FtZSB0byBwYXNzIG9uIHRoZSB0aGlyZCBkYXkgaW4gdGhlIG1vcm5pbmcsIHRoYXQgdGhlcmUgd2VyZSB0aHVuZGVycyBhbmQgbGlnaHRuaW5ncywgYW5kIGEgdGhpY2sgY2xvdWQgdXBvbiB0aGUgbW91bnQsIGFuZCB0aGUgdm9pY2Ugb2YgdGhlIHRydW1wZXQgZXhjZWVkaW5nIGxvdWQ7IHNvIHRoYXQgYWxsIHRoZSBwZW9wbGUgdGhhdCB3YXMgaW4gdGhlIGNhbXAgdHJlbWJsZWQuCkFuZCBNb3NlcyBicm91Z2h0IGZvcnRoIHRoZSBwZW9wbGUgb3V0IG9mIHRoZSBjYW1wIHRvIG1lZXQgd2l0aCBHb2Q7IGFuZCB0aGV5IHN0b29kIGF0IHRoZSBuZXRoZXIgcGFydCBvZiB0aGUgbW91bnQuCkFuZCBtb3VudCBTaW5haSB3YXMgYWx0b2dldGhlciBvbiBhIHNtb2tlLCBiZWNhdXNlIHRoZSBMT1JEIGRlc2NlbmRlZCB1cG9uIGl0IGluIGZpcmU6IGFuZCB0aGUgc21va2UgdGhlcmVvZiBhc2NlbmRlZCBhcyB0aGUgc21va2Ugb2YgYSBmdXJuYWNlLCBhbmQgdGhlIHdob2xlIG1vdW50IHF1YWtlZCBncmVhdGx5LgpBbmQgd2hlbiB0aGUgdm9pY2Ugb2YgdGhlIHRydW1wZXQgc291bmRlZCBsb25nLCBhbmQgd2F4ZWQgbG91ZGVyIGFuZCBsb3VkZXIsIE1vc2VzIHNwYWtlLCBhbmQgR29kIGFuc3dlcmVkIGhpbSBieSBhIHZvaWNlLgpBbmQgdGhlIExPUkQgY2FtZSBkb3duIHVwb24gbW91bnQgU2luYWksIG9uIHRoZSB0b3Agb2YgdGhlIG1vdW50OiBhbmQgdGhlIExPUkQgY2FsbGVkIE1vc2VzIHVwIHRvIHRoZSB0b3Agb2YgdGhlIG1vdW50OyBhbmQgTW9zZXMgd2VudCB1cC4KQW5kIHRoZSBMT1JEIHNhaWQgdW50byBNb3NlcywgR28gZG93biwgY2hhcmdlIHRoZSBwZW9wbGUsIGxlc3QgdGhleSBicmVhayB0aHJvdWdoIHVudG8gdGhlIExPUkQgdG8gZ2F6ZSwgYW5kIG1hbnkgb2YgdGhlbSBwZXJpc2guCkFuZCBsZXQgdGhlIHByaWVzdHMgYWxzbywgd2hpY2ggY29tZSBuZWFyIHRvIHRoZSBMT1JELCBzYW5jdGlmeSB0aGVtc2VsdmVzLCBsZXN0IHRoZSBMT1JEIGJyZWFrIGZvcnRoIHVwb24gdGhlbS4KQW5kIE1vc2VzIHNhaWQgdW50byB0aGUgTE9SRCwgVGhlIHBlb3BsZSBjYW5ub3QgY29tZSB1cCB0byBtb3VudCBTaW5haTogZm9yIHRob3UgY2hhcmdlZHN0IHVzLCBzYXlpbmcsIFNldCBib3VuZHMgYWJvdXQgdGhlIG1vdW50LCBhbmQgc2FuY3RpZnkgaXQuCkFuZCB0aGUgTE9SRCBzYWlkIHVudG8gaGltLCBBd2F5LCBnZXQgdGhlZSBkb3duLCBhbmQgdGhvdSBzaGFsdCBjb21lIHVwLCB0aG91LCBhbmQgQWFyb24gd2l0aCB0aGVlOiBidXQgbGV0IG5vdCB0aGUgcHJpZXN0cyBhbmQgdGhlIHBlb3BsZSBicmVhayB0aHJvdWdoIHRvIGNvbWUgdXAgdW50byB0aGUgTE9SRCwgbGVzdCBoZSBicmVhayBmb3J0aCB1cG9uIHRoZW0uClNvIE1vc2VzIHdlbnQgZG93biB1bnRvIHRoZSBwZW9wbGUsIGFuZCBzcGFrZSB1bnRvIHRoZW0uCkFuZCBHb2Qgc3Bha2UgYWxsIHRoZXNlIHdvcmRzLCBzYXlpbmcsCkkgYW0gdGhlIExPUkQgdGh5IEdvZCwgd2hpY2ggaGF2ZSBicm91Z2h0IHRoZWUgb3V0IG9mIHRoZSBsYW5kIG9mIEVneXB0LCBvdXQgb2YgdGhlIGhvdXNlIG9mIGJvbmRhZ2UuClRob3Ugc2hhbHQgaGF2ZSBubyBvdGhlciBnb2RzIGJlZm9yZSBtZS4KVGhvdSBzaGFsdCBub3QgbWFrZSB1bnRvIHRoZWUgYW55IGdyYXZlbiBpbWFnZSwgb3IgYW55IGxpa2VuZXNzIG9mIGFueSB0aGluZyB0aGF0IGlzIGluIGhlYXZlbiBhYm92ZSwgb3IgdGhhdCBpcyBpbiB0aGUgZWFydGggYmVuZWF0aCwgb3IgdGhhdCBpcyBpbiB0aGUgd2F0ZXIgdW5kZXIgdGhlIGVhcnRoLgpUaG91IHNoYWx0IG5vdCBib3cgZG93biB0aHlzZWxmIHRvIHRoZW0sIG5vciBzZXJ2ZSB0aGVtOiBmb3IgSSB0aGUgTE9SRCB0aHkgR29kIGFtIGEgamVhbG91cyBHb2QsIHZpc2l0aW5nIHRoZSBpbmlxdWl0eSBvZiB0aGUgZmF0aGVycyB1cG9uIHRoZSBjaGlsZHJlbiB1bnRvIHRoZSB0aGlyZCBhbmQgZm91cnRoIGdlbmVyYXRpb24gb2YgdGhlbSB0aGF0IGhhdGUgbWU7CkFuZCBzaGV3aW5nIG1lcmN5IHVudG8gdGhvdXNhbmRzIG9mIHRoZW0gdGhhdCBsb3ZlIG1lLCBhbmQga2VlcCBteSBjb21tYW5kbWVudHMuClRob3Ugc2hhbHQgbm90IHRha2UgdGhlIG5hbWUgb2YgdGhlIExPUkQgdGh5IEdvZCBpbiB2YWluOyBmb3IgdGhlIExPUkQgd2lsbCBub3QgaG9sZCBoaW0gZ3VpbHRsZXNzIHRoYXQgdGFrZXRoIGhpcyBuYW1lIGluIHZhaW4uClJlbWVtYmVyIHRoZSBzYWJiYXRoIGRheSwgdG8ga2VlcCBpdCBob2x5LgpTaXggZGF5cyBzaGFsdCB0aG91IGxhYm91ciwgYW5kIGRvIGFsbCB0aHkgd29yazoKQnV0IHRoZSBzZXZlbnRoIGRheSBpcyB0aGUgc2FiYmF0aCBvZiB0aGUgTE9SRCB0aHkgR29kOiBpbiBpdCB0aG91IHNoYWx0IG5vdCBkbyBhbnkgd29yaywgdGhvdSwgbm9yIHRoeSBzb24sIG5vciB0aHkgZGF1Z2h0ZXIsIHRoeSBtYW5zZXJ2YW50LCBub3IgdGh5IG1haWRzZXJ2YW50LCBub3IgdGh5IGNhdHRsZSwgbm9yIHRoeSBzdHJhbmdlciB0aGF0IGlzIHdpdGhpbiB0aHkgZ2F0ZXM6CkZvciBpbiBzaXggZGF5cyB0aGUgTE9SRCBtYWRlIGhlYXZlbiBhbmQgZWFydGgsIHRoZSBzZWEsIGFuZCBhbGwgdGhhdCBpbiB0aGVtIGlzLCBhbmQgcmVzdGVkIHRoZSBzZXZlbnRoIGRheTogd2hlcmVmb3JlIHRoZSBMT1JEIGJsZXNzZWQgdGhlIHNhYmJhdGggZGF5LCBhbmQgaGFsbG93ZWQgaXQuCkhvbm91ciB0aHkgZmF0aGVyIGFuZCB0aHkgbW90aGVyOiB0aGF0IHRoeSBkYXlzIG1heSBiZSBsb25nIHVwb24gdGhlIGxhbmQgd2hpY2ggdGhlIExPUkQgdGh5IEdvZCBnaXZldGggdGhlZS4KVGhvdSBzaGFsdCBub3Qga2lsbC4KVGhvdSBzaGFsdCBub3QgY29tbWl0IGFkdWx0ZXJ5LgpUaG91IHNoYWx0IG5vdCBzdGVhbC4KVGhvdSBzaGFsdCBub3QgYmVhciBmYWxzZSB3aXRuZXNzIGFnYWluc3QgdGh5IG5laWdoYm91ci4KVGhvdSBzaGFsdCBub3QgY292ZXQgdGh5IG5laWdoYm91cidzIGhvdXNlLCB0aG91IHNoYWx0IG5vdCBjb3ZldCB0aHkgbmVpZ2hib3VyJ3Mgd2lmZSwgbm9yIGhpcyBtYW5zZXJ2YW50LCBub3IgaGlzIG1haWRzZXJ2YW50LCBub3IgaGlzIG94LCBub3IgaGlzIGFzcywgbm9yIGFueSB0aGluZyB0aGF0IGlzIHRoeSBuZWlnaGJvdXIncy4KQW5kIGFsbCB0aGUgcGVvcGxlIHNhdyB0aGUgdGh1bmRlcmluZ3MsIGFuZCB0aGUgbGlnaHRuaW5ncywgYW5kIHRoZSBub2lzZSBvZiB0aGUgdHJ1bXBldCwgYW5kIHRoZSBtb3VudGFpbiBzbW9raW5nOiBhbmQgd2hlbiB0aGUgcGVvcGxlIHNhdyBpdCwgdGhleSByZW1vdmVkLCBhbmQgc3Rvb2QgYWZhciBvZmYuCkFuZCB0aGV5IHNhaWQgdW50byBNb3NlcywgU3BlYWsgdGhvdSB3aXRoIHVzLCBhbmQgd2Ugd2lsbCBoZWFyOiBidXQgbGV0IG5vdCBHb2Qgc3BlYWsgd2l0aCB1cywgbGVzdCB3ZSBkaWUuCkFuZCBNb3NlcyBzYWlkIHVudG8gdGhlIHBlb3BsZSwgRmVhciBub3Q6IGZvciBHb2QgaXMgY29tZSB0byBwcm92ZSB5b3UsIGFuZCB0aGF0IGhpcyBmZWFyIG1heSBiZSBiZWZvcmUgeW91ciBmYWNlcywgdGhhdCB5ZSBzaW4gbm90LgpBbmQgdGhlIHBlb3BsZSBzdG9vZCBhZmFyIG9mZiwgYW5kIE1vc2VzIGRyZXcgbmVhciB1bnRvIHRoZSB0aGljayBkYXJrbmVzcyB3aGVyZSBHb2Qgd2FzLgpBbmQgdGhlIExPUkQgc2FpZCB1bnRvIE1vc2VzLCBUaHVzIHRob3Ugc2hhbHQgc2F5IHVudG8gdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgWWUgaGF2ZSBzZWVuIHRoYXQgSSBoYXZlIHRhbGtlZCB3aXRoIHlvdSBmcm9tIGhlYXZlbi4KWWUgc2hhbGwgbm90IG1ha2Ugd2l0aCBtZSBnb2RzIG9mIHNpbHZlciwgbmVpdGhlciBzaGFsbCB5ZSBtYWtlIHVudG8geW91IGdvZHMgb2YgZ29sZC4KQW4gYWx0YXIgb2YgZWFydGggdGhvdSBzaGFsdCBtYWtlIHVudG8gbWUsIGFuZCBzaGFsdCBzYWNyaWZpY2UgdGhlcmVvbiB0aHkgYnVybnQgb2ZmZXJpbmdzLCBhbmQgdGh5IHBlYWNlIG9mZmVyaW5ncywgdGh5IHNoZWVwLCBhbmQgdGhpbmUgb3hlbjogaW4gYWxsIHBsYWNlcyB3aGVyZSBJIHJlY29yZCBteSBuYW1lIEkgd2lsbCBjb21lIHVudG8gdGhlZSwgYW5kIEkgd2lsbCBibGVzcyB0aGVlLgpBbmQgaWYgdGhvdSB3aWx0IG1ha2UgbWUgYW4gYWx0YXIgb2Ygc3RvbmUsIHRob3Ugc2hhbHQgbm90IGJ1aWxkIGl0IG9mIGhld24gc3RvbmU6IGZvciBpZiB0aG91IGxpZnQgdXAgdGh5IHRvb2wgdXBvbiBpdCwgdGhvdSBoYXN0IHBvbGx1dGVkIGl0LgpOZWl0aGVyIHNoYWx0IHRob3UgZ28gdXAgYnkgc3RlcHMgdW50byBtaW5lIGFsdGFyLCB0aGF0IHRoeSBuYWtlZG5lc3MgYmUgbm90IGRpc2NvdmVyZWQgdGhlcmVvbi4KTm93IHRoZXNlIGFyZSB0aGUganVkZ21lbnRzIHdoaWNoIHRob3Ugc2hhbHQgc2V0IGJlZm9yZSB0aGVtLgpJZiB0aG91IGJ1eSBhbiBIZWJyZXcgc2VydmFudCwgc2l4IHllYXJzIGhlIHNoYWxsIHNlcnZlOiBhbmQgaW4gdGhlIHNldmVudGggaGUgc2hhbGwgZ28gb3V0IGZyZWUgZm9yIG5vdGhpbmcuCklmIGhlIGNhbWUgaW4gYnkgaGltc2VsZiwgaGUgc2hhbGwgZ28gb3V0IGJ5IGhpbXNlbGY6IGlmIGhlIHdlcmUgbWFycmllZCwgdGhlbiBoaXMgd2lmZSBzaGFsbCBnbyBvdXQgd2l0aCBoaW0uCklmIGhpcyBtYXN0ZXIgaGF2ZSBnaXZlbiBoaW0gYSB3aWZlLCBhbmQgc2hlIGhhdmUgYm9ybiBoaW0gc29ucyBvciBkYXVnaHRlcnM7IHRoZSB3aWZlIGFuZCBoZXIgY2hpbGRyZW4gc2hhbGwgYmUgaGVyIG1hc3RlcidzLCBhbmQgaGUgc2hhbGwgZ28gb3V0IGJ5IGhpbXNlbGYuCkFuZCBpZiB0aGUgc2VydmFudCBzaGFsbCBwbGFpbmx5IHNheSwgSSBsb3ZlIG15IG1hc3RlciwgbXkgd2lmZSwgYW5kIG15IGNoaWxkcmVuOyBJIHdpbGwgbm90IGdvIG91dCBmcmVlOgpUaGVuIGhpcyBtYXN0ZXIgc2hhbGwgYnJpbmcgaGltIHVudG8gdGhlIGp1ZGdlczsgaGUgc2hhbGwgYWxzbyBicmluZyBoaW0gdG8gdGhlIGRvb3IsIG9yIHVudG8gdGhlIGRvb3IgcG9zdDsgYW5kIGhpcyBtYXN0ZXIgc2hhbGwgYm9yZSBoaXMgZWFyIHRocm91Z2ggd2l0aCBhbiBhdWw7IGFuZCBoZSBzaGFsbCBzZXJ2ZSBoaW0gZm9yIGV2ZXIuCkFuZCBpZiBhIG1hbiBzZWxsIGhpcyBkYXVnaHRlciB0byBiZSBhIG1haWRzZXJ2YW50LCBzaGUgc2hhbGwgbm90IGdvIG91dCBhcyB0aGUgbWVuc2VydmFudHMgZG8uCklmIHNoZSBwbGVhc2Ugbm90IGhlciBtYXN0ZXIsIHdobyBoYXRoIGJldHJvdGhlZCBoZXIgdG8gaGltc2VsZiwgdGhlbiBzaGFsbCBoZSBsZXQgaGVyIGJlIHJlZGVlbWVkOiB0byBzZWxsIGhlciB1bnRvIGEgc3RyYW5nZSBuYXRpb24gaGUgc2hhbGwgaGF2ZSBubyBwb3dlciwgc2VlaW5nIGhlIGhhdGggZGVhbHQgZGVjZWl0ZnVsbHkgd2l0aCBoZXIuCkFuZCBpZiBoZSBoYXZlIGJldHJvdGhlZCBoZXIgdW50byBoaXMgc29uLCBoZSBzaGFsbCBkZWFsIHdpdGggaGVyIGFmdGVyIHRoZSBtYW5uZXIgb2YgZGF1Z2h0ZXJzLgpJZiBoZSB0YWtlIGhpbSBhbm90aGVyIHdpZmU7IGhlciBmb29kLCBoZXIgcmFpbWVudCwgYW5kIGhlciBkdXR5IG9mIG1hcnJpYWdlLCBzaGFsbCBoZSBub3QgZGltaW5pc2guCkFuZCBpZiBoZSBkbyBub3QgdGhlc2UgdGhyZWUgdW50byBoZXIsIHRoZW4gc2hhbGwgc2hlIGdvIG91dCBmcmVlIHdpdGhvdXQgbW9uZXkuCkhlIHRoYXQgc21pdGV0aCBhIG1hbiwgc28gdGhhdCBoZSBkaWUsIHNoYWxsIGJlIHN1cmVseSBwdXQgdG8gZGVhdGguCkFuZCBpZiBhIG1hbiBsaWUgbm90IGluIHdhaXQsIGJ1dCBHb2QgZGVsaXZlciBoaW0gaW50byBoaXMgaGFuZDsgdGhlbiBJIHdpbGwgYXBwb2ludCB0aGVlIGEgcGxhY2Ugd2hpdGhlciBoZSBzaGFsbCBmbGVlLgpCdXQgaWYgYSBtYW4gY29tZSBwcmVzdW1wdHVvdXNseSB1cG9uIGhpcyBuZWlnaGJvdXIsIHRvIHNsYXkgaGltIHdpdGggZ3VpbGU7IHRob3Ugc2hhbHQgdGFrZSBoaW0gZnJvbSBtaW5lIGFsdGFyLCB0aGF0IGhlIG1heSBkaWUuCkFuZCBoZSB0aGF0IHNtaXRldGggaGlzIGZhdGhlciwgb3IgaGlzIG1vdGhlciwgc2hhbGwgYmUgc3VyZWx5IHB1dCB0byBkZWF0aC4KQW5kIGhlIHRoYXQgc3RlYWxldGggYSBtYW4sIGFuZCBzZWxsZXRoIGhpbSwgb3IgaWYgaGUgYmUgZm91bmQgaW4gaGlzIGhhbmQsIGhlIHNoYWxsIHN1cmVseSBiZSBwdXQgdG8gZGVhdGguCkFuZCBoZSB0aGF0IGN1cnNldGggaGlzIGZhdGhlciwgb3IgaGlzIG1vdGhlciwgc2hhbGwgc3VyZWx5IGJlIHB1dCB0byBkZWF0aC4KQW5kIGlmIG1lbiBzdHJpdmUgdG9nZXRoZXIsIGFuZCBvbmUgc21pdGUgYW5vdGhlciB3aXRoIGEgc3RvbmUsIG9yIHdpdGggaGlzIGZpc3QsIGFuZCBoZSBkaWUgbm90LCBidXQga2VlcGV0aCBoaXMgYmVkOgpJZiBoZSByaXNlIGFnYWluLCBhbmQgd2FsayBhYnJvYWQgdXBvbiBoaXMgc3RhZmYsIHRoZW4gc2hhbGwgaGUgdGhhdCBzbW90ZSBoaW0gYmUgcXVpdDogb25seSBoZSBzaGFsbCBwYXkgZm9yIHRoZSBsb3NzIG9mIGhpcyB0aW1lLCBhbmQgc2hhbGwgY2F1c2UgaGltIHRvIGJlIHRob3JvdWdobHkgaGVhbGVkLgpBbmQgaWYgYSBtYW4gc21pdGUgaGlzIHNlcnZhbnQsIG9yIGhpcyBtYWlkLCB3aXRoIGEgcm9kLCBhbmQgaGUgZGllIHVuZGVyIGhpcyBoYW5kOyBoZSBzaGFsbCBiZSBzdXJlbHkgcHVuaXNoZWQuCk5vdHdpdGhzdGFuZGluZywgaWYgaGUgY29udGludWUgYSBkYXkgb3IgdHdvLCBoZSBzaGFsbCBub3QgYmUgcHVuaXNoZWQ6IGZvciBoZSBpcyBoaXMgbW9uZXkuCklmIG1lbiBzdHJpdmUsIGFuZCBodXJ0IGEgd29tYW4gd2l0aCBjaGlsZCwgc28gdGhhdCBoZXIgZnJ1aXQgZGVwYXJ0IGZyb20gaGVyLCBhbmQgeWV0IG5vIG1pc2NoaWVmIGZvbGxvdzogaGUgc2hhbGwgYmUgc3VyZWx5IHB1bmlzaGVkLCBhY2NvcmRpbmcgYXMgdGhlIHdvbWFuJ3MgaHVzYmFuZCB3aWxsIGxheSB1cG9uIGhpbTsgYW5kIGhlIHNoYWxsIHBheSBhcyB0aGUganVkZ2VzIGRldGVybWluZS4KQW5kIGlmIGFueSBtaXNjaGllZiBmb2xsb3csIHRoZW4gdGhvdSBzaGFsdCBnaXZlIGxpZmUgZm9yIGxpZmUsCkV5ZSBmb3IgZXllLCB0b290aCBmb3IgdG9vdGgsIGhhbmQgZm9yIGhhbmQsIGZvb3QgZm9yIGZvb3QsCkJ1cm5pbmcgZm9yIGJ1cm5pbmcsIHdvdW5kIGZvciB3b3VuZCwgc3RyaXBlIGZvciBzdHJpcGUuCkFuZCBpZiBhIG1hbiBzbWl0ZSB0aGUgZXllIG9mIGhpcyBzZXJ2YW50LCBvciB0aGUgZXllIG9mIGhpcyBtYWlkLCB0aGF0IGl0IHBlcmlzaDsgaGUgc2hhbGwgbGV0IGhpbSBnbyBmcmVlIGZvciBoaXMgZXllJ3Mgc2FrZS4KQW5kIGlmIGhlIHNtaXRlIG91dCBoaXMgbWFuc2VydmFudCdzIHRvb3RoLCBvciBoaXMgbWFpZHNlcnZhbnQncyB0b290aDsgaGUgc2hhbGwgbGV0IGhpbSBnbyBmcmVlIGZvciBoaXMgdG9vdGgncyBzYWtlLgpJZiBhbiBveCBnb3JlIGEgbWFuIG9yIGEgd29tYW4sIHRoYXQgdGhleSBkaWU6IHRoZW4gdGhlIG94IHNoYWxsIGJlIHN1cmVseSBzdG9uZWQsIGFuZCBoaXMgZmxlc2ggc2hhbGwgbm90IGJlIGVhdGVuOyBidXQgdGhlIG93bmVyIG9mIHRoZSBveCBzaGFsbCBiZSBxdWl0LgpCdXQgaWYgdGhlIG94IHdlcmUgd29udCB0byBwdXNoIHdpdGggaGlzIGhvcm4gaW4gdGltZSBwYXN0LCBhbmQgaXQgaGF0aCBiZWVuIHRlc3RpZmllZCB0byBoaXMgb3duZXIsIGFuZCBoZSBoYXRoIG5vdCBrZXB0IGhpbSBpbiwgYnV0IHRoYXQgaGUgaGF0aCBraWxsZWQgYSBtYW4gb3IgYSB3b21hbjsgdGhlIG94IHNoYWxsIGJlIHN0b25lZCwgYW5kIGhpcyBvd25lciBhbHNvIHNoYWxsIGJlIHB1dCB0byBkZWF0aC4KSWYgdGhlcmUgYmUgbGFpZCBvbiBoaW0gYSBzdW0gb2YgbW9uZXksIHRoZW4gaGUgc2hhbGwgZ2l2ZSBmb3IgdGhlIHJhbnNvbSBvZiBoaXMgbGlmZSB3aGF0c29ldmVyIGlzIGxhaWQgdXBvbiBoaW0uCldoZXRoZXIgaGUgaGF2ZSBnb3JlZCBhIHNvbiwgb3IgaGF2ZSBnb3JlZCBhIGRhdWdodGVyLCBhY2NvcmRpbmcgdG8gdGhpcyBqdWRnbWVudCBzaGFsbCBpdCBiZSBkb25lIHVudG8gaGltLgpJZiB0aGUgb3ggc2hhbGwgcHVzaCBhIG1hbnNlcnZhbnQgb3IgYSBtYWlkc2VydmFudDsgaGUgc2hhbGwgZ2l2ZSB1bnRvIHRoZWlyIG1hc3RlciB0aGlydHkgc2hla2VscyBvZiBzaWx2ZXIsIGFuZCB0aGUgb3ggc2hhbGwgYmUgc3RvbmVkLgpBbmQgaWYgYSBtYW4gc2hhbGwgb3BlbiBhIHBpdCwgb3IgaWYgYSBtYW4gc2hhbGwgZGlnIGEgcGl0LCBhbmQgbm90IGNvdmVyIGl0LCBhbmQgYW4gb3ggb3IgYW4gYXNzIGZhbGwgdGhlcmVpbjsKVGhlIG93bmVyIG9mIHRoZSBwaXQgc2hhbGwgbWFrZSBpdCBnb29kLCBhbmQgZ2l2ZSBtb25leSB1bnRvIHRoZSBvd25lciBvZiB0aGVtOyBhbmQgdGhlIGRlYWQgYmVhc3Qgc2hhbGwgYmUgaGlzLgpBbmQgaWYgb25lIG1hbidzIG94IGh1cnQgYW5vdGhlcidzLCB0aGF0IGhlIGRpZTsgdGhlbiB0aGV5IHNoYWxsIHNlbGwgdGhlIGxpdmUgb3gsIGFuZCBkaXZpZGUgdGhlIG1vbmV5IG9mIGl0OyBhbmQgdGhlIGRlYWQgb3ggYWxzbyB0aGV5IHNoYWxsIGRpdmlkZS4KT3IgaWYgaXQgYmUga25vd24gdGhhdCB0aGUgb3ggaGF0aCB1c2VkIHRvIHB1c2ggaW4gdGltZSBwYXN0LCBhbmQgaGlzIG93bmVyIGhhdGggbm90IGtlcHQgaGltIGluOyBoZSBzaGFsbCBzdXJlbHkgcGF5IG94IGZvciBveDsgYW5kIHRoZSBkZWFkIHNoYWxsIGJlIGhpcyBvd24uCklmIGEgbWFuIHNoYWxsIHN0ZWFsIGFuIG94LCBvciBhIHNoZWVwLCBhbmQga2lsbCBpdCwgb3Igc2VsbCBpdDsgaGUgc2hhbGwgcmVzdG9yZSBmaXZlIG94ZW4gZm9yIGFuIG94LCBhbmQgZm91ciBzaGVlcCBmb3IgYSBzaGVlcC4KSWYgYSB0aGllZiBiZSBmb3VuZCBicmVha2luZyB1cCwgYW5kIGJlIHNtaXR0ZW4gdGhhdCBoZSBkaWUsIHRoZXJlIHNoYWxsIG5vIGJsb29kIGJlIHNoZWQgZm9yIGhpbS4KSWYgdGhlIHN1biBiZSByaXNlbiB1cG9uIGhpbSwgdGhlcmUgc2hhbGwgYmUgYmxvb2Qgc2hlZCBmb3IgaGltOyBmb3IgaGUgc2hvdWxkIG1ha2UgZnVsbCByZXN0aXR1dGlvbjsgaWYgaGUgaGF2ZSBub3RoaW5nLCB0aGVuIGhlIHNoYWxsIGJlIHNvbGQgZm9yIGhpcyB0aGVmdC4KSWYgdGhlIHRoZWZ0IGJlIGNlcnRhaW5seSBmb3VuZCBpbiBoaXMgaGFuZCBhbGl2ZSwgd2hldGhlciBpdCBiZSBveCwgb3IgYXNzLCBvciBzaGVlcDsgaGUgc2hhbGwgcmVzdG9yZSBkb3VibGUuCklmIGEgbWFuIHNoYWxsIGNhdXNlIGEgZmllbGQgb3IgdmluZXlhcmQgdG8gYmUgZWF0ZW4sIGFuZCBzaGFsbCBwdXQgaW4gaGlzIGJlYXN0LCBhbmQgc2hhbGwgZmVlZCBpbiBhbm90aGVyIG1hbidzIGZpZWxkOyBvZiB0aGUgYmVzdCBvZiBoaXMgb3duIGZpZWxkLCBhbmQgb2YgdGhlIGJlc3Qgb2YgaGlzIG93biB2aW5leWFyZCwgc2hhbGwgaGUgbWFrZSByZXN0aXR1dGlvbi4KSWYgZmlyZSBicmVhayBvdXQsIGFuZCBjYXRjaCBpbiB0aG9ybnMsIHNvIHRoYXQgdGhlIHN0YWNrcyBvZiBjb3JuLCBvciB0aGUgc3RhbmRpbmcgY29ybiwgb3IgdGhlIGZpZWxkLCBiZSBjb25zdW1lZCB0aGVyZXdpdGg7IGhlIHRoYXQga2luZGxlZCB0aGUgZmlyZSBzaGFsbCBzdXJlbHkgbWFrZSByZXN0aXR1dGlvbi4KSWYgYSBtYW4gc2hhbGwgZGVsaXZlciB1bnRvIGhpcyBuZWlnaGJvdXIgbW9uZXkgb3Igc3R1ZmYgdG8ga2VlcCwgYW5kIGl0IGJlIHN0b2xlbiBvdXQgb2YgdGhlIG1hbidzIGhvdXNlOyBpZiB0aGUgdGhpZWYgYmUgZm91bmQsIGxldCBoaW0gcGF5IGRvdWJsZS4KSWYgdGhlIHRoaWVmIGJlIG5vdCBmb3VuZCwgdGhlbiB0aGUgbWFzdGVyIG9mIHRoZSBob3VzZSBzaGFsbCBiZSBicm91Z2h0IHVudG8gdGhlIGp1ZGdlcywgdG8gc2VlIHdoZXRoZXIgaGUgaGF2ZSBwdXQgaGlzIGhhbmQgdW50byBoaXMgbmVpZ2hib3VyJ3MgZ29vZHMuCkZvciBhbGwgbWFubmVyIG9mIHRyZXNwYXNzLCB3aGV0aGVyIGl0IGJlIGZvciBveCwgZm9yIGFzcywgZm9yIHNoZWVwLCBmb3IgcmFpbWVudCwgb3IgZm9yIGFueSBtYW5uZXIgb2YgbG9zdCB0aGluZyB3aGljaCBhbm90aGVyIGNoYWxsZW5nZXRoIHRvIGJlIGhpcywgdGhlIGNhdXNlIG9mIGJvdGggcGFydGllcyBzaGFsbCBjb21lIGJlZm9yZSB0aGUganVkZ2VzOyBhbmQgd2hvbSB0aGUganVkZ2VzIHNoYWxsIGNvbmRlbW4sIGhlIHNoYWxsIHBheSBkb3VibGUgdW50byBoaXMgbmVpZ2hib3VyLgpJZiBhIG1hbiBkZWxpdmVyIHVudG8gaGlzIG5laWdoYm91ciBhbiBhc3MsIG9yIGFuIG94LCBvciBhIHNoZWVwLCBvciBhbnkgYmVhc3QsIHRvIGtlZXA7IGFuZCBpdCBkaWUsIG9yIGJlIGh1cnQsIG9yIGRyaXZlbiBhd2F5LCBubyBtYW4gc2VlaW5nIGl0OgpUaGVuIHNoYWxsIGFuIG9hdGggb2YgdGhlIExPUkQgYmUgYmV0d2VlbiB0aGVtIGJvdGgsIHRoYXQgaGUgaGF0aCBub3QgcHV0IGhpcyBoYW5kIHVudG8gaGlzIG5laWdoYm91cidzIGdvb2RzOyBhbmQgdGhlIG93bmVyIG9mIGl0IHNoYWxsIGFjY2VwdCB0aGVyZW9mLCBhbmQgaGUgc2hhbGwgbm90IG1ha2UgaXQgZ29vZC4KQW5kIGlmIGl0IGJlIHN0b2xlbiBmcm9tIGhpbSwgaGUgc2hhbGwgbWFrZSByZXN0aXR1dGlvbiB1bnRvIHRoZSBvd25lciB0aGVyZW9mLgpJZiBpdCBiZSB0b3JuIGluIHBpZWNlcywgdGhlbiBsZXQgaGltIGJyaW5nIGl0IGZvciB3aXRuZXNzLCBhbmQgaGUgc2hhbGwgbm90IG1ha2UgZ29vZCB0aGF0IHdoaWNoIHdhcyB0b3JuLgpBbmQgaWYgYSBtYW4gYm9ycm93IG91Z2h0IG9mIGhpcyBuZWlnaGJvdXIsIGFuZCBpdCBiZSBodXJ0LCBvciBkaWUsIHRoZSBvd25lciB0aGVyZW9mIGJlaW5nIG5vdCB3aXRoIGl0LCBoZSBzaGFsbCBzdXJlbHkgbWFrZSBpdCBnb29kLgpCdXQgaWYgdGhlIG93bmVyIHRoZXJlb2YgYmUgd2l0aCBpdCwgaGUgc2hhbGwgbm90IG1ha2UgaXQgZ29vZDogaWYgaXQgYmUgYW4gaGlyZWQgdGhpbmcsIGl0IGNhbWUgZm9yIGhpcyBoaXJlLgpBbmQgaWYgYSBtYW4gZW50aWNlIGEgbWFpZCB0aGF0IGlzIG5vdCBiZXRyb3RoZWQsIGFuZCBsaWUgd2l0aCBoZXIsIGhlIHNoYWxsIHN1cmVseSBlbmRvdyBoZXIgdG8gYmUgaGlzIHdpZmUuCklmIGhlciBmYXRoZXIgdXR0ZXJseSByZWZ1c2UgdG8gZ2l2ZSBoZXIgdW50byBoaW0sIGhlIHNoYWxsIHBheSBtb25leSBhY2NvcmRpbmcgdG8gdGhlIGRvd3J5IG9mIHZpcmdpbnMuClRob3Ugc2hhbHQgbm90IHN1ZmZlciBhIHdpdGNoIHRvIGxpdmUuCldob3NvZXZlciBsaWV0aCB3aXRoIGEgYmVhc3Qgc2hhbGwgc3VyZWx5IGJlIHB1dCB0byBkZWF0aC4KSGUgdGhhdCBzYWNyaWZpY2V0aCB1bnRvIGFueSBnb2QsIHNhdmUgdW50byB0aGUgTE9SRCBvbmx5LCBoZSBzaGFsbCBiZSB1dHRlcmx5IGRlc3Ryb3llZC4KVGhvdSBzaGFsdCBuZWl0aGVyIHZleCBhIHN0cmFuZ2VyLCBub3Igb3BwcmVzcyBoaW06IGZvciB5ZSB3ZXJlIHN0cmFuZ2VycyBpbiB0aGUgbGFuZCBvZiBFZ3lwdC4KWWUgc2hhbGwgbm90IGFmZmxpY3QgYW55IHdpZG93LCBvciBmYXRoZXJsZXNzIGNoaWxkLgpJZiB0aG91IGFmZmxpY3QgdGhlbSBpbiBhbnkgd2lzZSwgYW5kIHRoZXkgY3J5IGF0IGFsbCB1bnRvIG1lLCBJIHdpbGwgc3VyZWx5IGhlYXIgdGhlaXIgY3J5OwpBbmQgbXkgd3JhdGggc2hhbGwgd2F4IGhvdCwgYW5kIEkgd2lsbCBraWxsIHlvdSB3aXRoIHRoZSBzd29yZDsgYW5kIHlvdXIgd2l2ZXMgc2hhbGwgYmUgd2lkb3dzLCBhbmQgeW91ciBjaGlsZHJlbiBmYXRoZXJsZXNzLgpJZiB0aG91IGxlbmQgbW9uZXkgdG8gYW55IG9mIG15IHBlb3BsZSB0aGF0IGlzIHBvb3IgYnkgdGhlZSwgdGhvdSBzaGFsdCBub3QgYmUgdG8gaGltIGFzIGFuIHVzdXJlciwgbmVpdGhlciBzaGFsdCB0aG91IGxheSB1cG9uIGhpbSB1c3VyeS4KSWYgdGhvdSBhdCBhbGwgdGFrZSB0aHkgbmVpZ2hib3VyJ3MgcmFpbWVudCB0byBwbGVkZ2UsIHRob3Ugc2hhbHQgZGVsaXZlciBpdCB1bnRvIGhpbSBieSB0aGF0IHRoZSBzdW4gZ29ldGggZG93bjoKRm9yIHRoYXQgaXMgaGlzIGNvdmVyaW5nIG9ubHksIGl0IGlzIGhpcyByYWltZW50IGZvciBoaXMgc2tpbjogd2hlcmVpbiBzaGFsbCBoZSBzbGVlcD8gYW5kIGl0IHNoYWxsIGNvbWUgdG8gcGFzcywgd2hlbiBoZSBjcmlldGggdW50byBtZSwgdGhhdCBJIHdpbGwgaGVhcjsgZm9yIEkgYW0gZ3JhY2lvdXMuClRob3Ugc2hhbHQgbm90IHJldmlsZSB0aGUgZ29kcywgbm9yIGN1cnNlIHRoZSBydWxlciBvZiB0aHkgcGVvcGxlLgpUaG91IHNoYWx0IG5vdCBkZWxheSB0byBvZmZlciB0aGUgZmlyc3Qgb2YgdGh5IHJpcGUgZnJ1aXRzLCBhbmQgb2YgdGh5IGxpcXVvcnM6IHRoZSBmaXJzdGJvcm4gb2YgdGh5IHNvbnMgc2hhbHQgdGhvdSBnaXZlIHVudG8gbWUuCkxpa2V3aXNlIHNoYWx0IHRob3UgZG8gd2l0aCB0aGluZSBveGVuLCBhbmQgd2l0aCB0aHkgc2hlZXA6IHNldmVuIGRheXMgaXQgc2hhbGwgYmUgd2l0aCBoaXMgZGFtOyBvbiB0aGUgZWlnaHRoIGRheSB0aG91IHNoYWx0IGdpdmUgaXQgbWUuCkFuZCB5ZSBzaGFsbCBiZSBob2x5IG1lbiB1bnRvIG1lOiBuZWl0aGVyIHNoYWxsIHllIGVhdCBhbnkgZmxlc2ggdGhhdCBpcyB0b3JuIG9mIGJlYXN0cyBpbiB0aGUgZmllbGQ7IHllIHNoYWxsIGNhc3QgaXQgdG8gdGhlIGRvZ3MuClRob3Ugc2hhbHQgbm90IHJhaXNlIGEgZmFsc2UgcmVwb3J0OiBwdXQgbm90IHRoaW5lIGhhbmQgd2l0aCB0aGUgd2lja2VkIHRvIGJlIGFuIHVucmlnaHRlb3VzIHdpdG5lc3MuClRob3Ugc2hhbHQgbm90IGZvbGxvdyBhIG11bHRpdHVkZSB0byBkbyBldmlsOyBuZWl0aGVyIHNoYWx0IHRob3Ugc3BlYWsgaW4gYSBjYXVzZSB0byBkZWNsaW5lIGFmdGVyIG1hbnkgdG8gd3Jlc3QganVkZ21lbnQ6Ck5laXRoZXIgc2hhbHQgdGhvdSBjb3VudGVuYW5jZSBhIHBvb3IgbWFuIGluIGhpcyBjYXVzZS4KSWYgdGhvdSBtZWV0IHRoaW5lIGVuZW15J3Mgb3ggb3IgaGlzIGFzcyBnb2luZyBhc3RyYXksIHRob3Ugc2hhbHQgc3VyZWx5IGJyaW5nIGl0IGJhY2sgdG8gaGltIGFnYWluLgpJZiB0aG91IHNlZSB0aGUgYXNzIG9mIGhpbSB0aGF0IGhhdGV0aCB0aGVlIGx5aW5nIHVuZGVyIGhpcyBidXJkZW4sIGFuZCB3b3VsZGVzdCBmb3JiZWFyIHRvIGhlbHAgaGltLCB0aG91IHNoYWx0IHN1cmVseSBoZWxwIHdpdGggaGltLgpUaG91IHNoYWx0IG5vdCB3cmVzdCB0aGUganVkZ21lbnQgb2YgdGh5IHBvb3IgaW4gaGlzIGNhdXNlLgpLZWVwIHRoZWUgZmFyIGZyb20gYSBmYWxzZSBtYXR0ZXI7IGFuZCB0aGUgaW5ub2NlbnQgYW5kIHJpZ2h0ZW91cyBzbGF5IHRob3Ugbm90OiBmb3IgSSB3aWxsIG5vdCBqdXN0aWZ5IHRoZSB3aWNrZWQuCkFuZCB0aG91IHNoYWx0IHRha2Ugbm8gZ2lmdDogZm9yIHRoZSBnaWZ0IGJsaW5kZXRoIHRoZSB3aXNlLCBhbmQgcGVydmVydGV0aCB0aGUgd29yZHMgb2YgdGhlIHJpZ2h0ZW91cy4KQWxzbyB0aG91IHNoYWx0IG5vdCBvcHByZXNzIGEgc3RyYW5nZXI6IGZvciB5ZSBrbm93IHRoZSBoZWFydCBvZiBhIHN0cmFuZ2VyLCBzZWVpbmcgeWUgd2VyZSBzdHJhbmdlcnMgaW4gdGhlIGxhbmQgb2YgRWd5cHQuCkFuZCBzaXggeWVhcnMgdGhvdSBzaGFsdCBzb3cgdGh5IGxhbmQsIGFuZCBzaGFsdCBnYXRoZXIgaW4gdGhlIGZydWl0cyB0aGVyZW9mOgpCdXQgdGhlIHNldmVudGggeWVhciB0aG91IHNoYWx0IGxldCBpdCByZXN0IGFuZCBsaWUgc3RpbGw7IHRoYXQgdGhlIHBvb3Igb2YgdGh5IHBlb3BsZSBtYXkgZWF0OiBhbmQgd2hhdCB0aGV5IGxlYXZlIHRoZSBiZWFzdHMgb2YgdGhlIGZpZWxkIHNoYWxsIGVhdC4gSW4gbGlrZSBtYW5uZXIgdGhvdSBzaGFsdCBkZWFsIHdpdGggdGh5IHZpbmV5YXJkLCBhbmQgd2l0aCB0aHkgb2xpdmV5YXJkLgpTaXggZGF5cyB0aG91IHNoYWx0IGRvIHRoeSB3b3JrLCBhbmQgb24gdGhlIHNldmVudGggZGF5IHRob3Ugc2hhbHQgcmVzdDogdGhhdCB0aGluZSBveCBhbmQgdGhpbmUgYXNzIG1heSByZXN0LCBhbmQgdGhlIHNvbiBvZiB0aHkgaGFuZG1haWQsIGFuZCB0aGUgc3RyYW5nZXIsIG1heSBiZSByZWZyZXNoZWQuCkFuZCBpbiBhbGwgdGhpbmdzIHRoYXQgSSBoYXZlIHNhaWQgdW50byB5b3UgYmUgY2lyY3Vtc3BlY3Q6IGFuZCBtYWtlIG5vIG1lbnRpb24gb2YgdGhlIG5hbWUgb2Ygb3RoZXIgZ29kcywgbmVpdGhlciBsZXQgaXQgYmUgaGVhcmQgb3V0IG9mIHRoeSBtb3V0aC4KVGhyZWUgdGltZXMgdGhvdSBzaGFsdCBrZWVwIGEgZmVhc3QgdW50byBtZSBpbiB0aGUgeWVhci4KVGhvdSBzaGFsdCBrZWVwIHRoZSBmZWFzdCBvZiB1bmxlYXZlbmVkIGJyZWFkOiAodGhvdSBzaGFsdCBlYXQgdW5sZWF2ZW5lZCBicmVhZCBzZXZlbiBkYXlzLCBhcyBJIGNvbW1hbmRlZCB0aGVlLCBpbiB0aGUgdGltZSBhcHBvaW50ZWQgb2YgdGhlIG1vbnRoIEFiaWI7IGZvciBpbiBpdCB0aG91IGNhbWVzdCBvdXQgZnJvbSBFZ3lwdDogYW5kIG5vbmUgc2hhbGwgYXBwZWFyIGJlZm9yZSBtZSBlbXB0eTopCkFuZCB0aGUgZmVhc3Qgb2YgaGFydmVzdCwgdGhlIGZpcnN0ZnJ1aXRzIG9mIHRoeSBsYWJvdXJzLCB3aGljaCB0aG91IGhhc3Qgc293biBpbiB0aGUgZmllbGQ6IGFuZCB0aGUgZmVhc3Qgb2YgaW5nYXRoZXJpbmcsIHdoaWNoIGlzIGluIHRoZSBlbmQgb2YgdGhlIHllYXIsIHdoZW4gdGhvdSBoYXN0IGdhdGhlcmVkIGluIHRoeSBsYWJvdXJzIG91dCBvZiB0aGUgZmllbGQuClRocmVlIGl0ZW1zIGluIHRoZSB5ZWFyIGFsbCB0aHkgbWFsZXMgc2hhbGwgYXBwZWFyIGJlZm9yZSB0aGUgTE9SRCBHb2QuClRob3Ugc2hhbHQgbm90IG9mZmVyIHRoZSBibG9vZCBvZiBteSBzYWNyaWZpY2Ugd2l0aCBsZWF2ZW5lZCBicmVhZDsgbmVpdGhlciBzaGFsbCB0aGUgZmF0IG9mIG15IHNhY3JpZmljZSByZW1haW4gdW50aWwgdGhlIG1vcm5pbmcuClRoZSBmaXJzdCBvZiB0aGUgZmlyc3RmcnVpdHMgb2YgdGh5IGxhbmQgdGhvdSBzaGFsdCBicmluZyBpbnRvIHRoZSBob3VzZSBvZiB0aGUgTE9SRCB0aHkgR29kLiBUaG91IHNoYWx0IG5vdCBzZWV0aGUgYSBraWQgaW4gaGlzIG1vdGhlcidzIG1pbGsuCkJlaG9sZCwgSSBzZW5kIGFuIEFuZ2VsIGJlZm9yZSB0aGVlLCB0byBrZWVwIHRoZWUgaW4gdGhlIHdheSwgYW5kIHRvIGJyaW5nIHRoZWUgaW50byB0aGUgcGxhY2Ugd2hpY2ggSSBoYXZlIHByZXBhcmVkLgpCZXdhcmUgb2YgaGltLCBhbmQgb2JleSBoaXMgdm9pY2UsIHByb3Zva2UgaGltIG5vdDsgZm9yIGhlIHdpbGwgbm90IHBhcmRvbiB5b3VyIHRyYW5zZ3Jlc3Npb25zOiBmb3IgbXkgbmFtZSBpcyBpbiBoaW0uCkJ1dCBpZiB0aG91IHNoYWx0IGluZGVlZCBvYmV5IGhpcyB2b2ljZSwgYW5kIGRvIGFsbCB0aGF0IEkgc3BlYWs7IHRoZW4gSSB3aWxsIGJlIGFuIGVuZW15IHVudG8gdGhpbmUgZW5lbWllcywgYW5kIGFuIGFkdmVyc2FyeSB1bnRvIHRoaW5lIGFkdmVyc2FyaWVzLgpGb3IgbWluZSBBbmdlbCBzaGFsbCBnbyBiZWZvcmUgdGhlZSwgYW5kIGJyaW5nIHRoZWUgaW4gdW50byB0aGUgQW1vcml0ZXMsIGFuZCB0aGUgSGl0dGl0ZXMsIGFuZCB0aGUgUGVyaXp6aXRlcywgYW5kIHRoZSBDYW5hYW5pdGVzLCB0aGUgSGl2aXRlcywgYW5kIHRoZSBKZWJ1c2l0ZXM6IGFuZCBJIHdpbGwgY3V0IHRoZW0gb2ZmLgpUaG91IHNoYWx0IG5vdCBib3cgZG93biB0byB0aGVpciBnb2RzLCBub3Igc2VydmUgdGhlbSwgbm9yIGRvIGFmdGVyIHRoZWlyIHdvcmtzOiBidXQgdGhvdSBzaGFsdCB1dHRlcmx5IG92ZXJ0aHJvdyB0aGVtLCBhbmQgcXVpdGUgYnJlYWsgZG93biB0aGVpciBpbWFnZXMuCkFuZCB5ZSBzaGFsbCBzZXJ2ZSB0aGUgTE9SRCB5b3VyIEdvZCwgYW5kIGhlIHNoYWxsIGJsZXNzIHRoeSBicmVhZCwgYW5kIHRoeSB3YXRlcjsgYW5kIEkgd2lsbCB0YWtlIHNpY2tuZXNzIGF3YXkgZnJvbSB0aGUgbWlkc3Qgb2YgdGhlZS4KVGhlcmUgc2hhbGwgbm90aGluZyBjYXN0IHRoZWlyIHlvdW5nLCBub3IgYmUgYmFycmVuLCBpbiB0aHkgbGFuZDogdGhlIG51bWJlciBvZiB0aHkgZGF5cyBJIHdpbGwgZnVsZmlsLgpJIHdpbGwgc2VuZCBteSBmZWFyIGJlZm9yZSB0aGVlLCBhbmQgd2lsbCBkZXN0cm95IGFsbCB0aGUgcGVvcGxlIHRvIHdob20gdGhvdSBzaGFsdCBjb21lLCBhbmQgSSB3aWxsIG1ha2UgYWxsIHRoaW5lIGVuZW1pZXMgdHVybiB0aGVpciBiYWNrcyB1bnRvIHRoZWUuCkFuZCBJIHdpbGwgc2VuZCBob3JuZXRzIGJlZm9yZSB0aGVlLCB3aGljaCBzaGFsbCBkcml2ZSBvdXQgdGhlIEhpdml0ZSwgdGhlIENhbmFhbml0ZSwgYW5kIHRoZSBIaXR0aXRlLCBmcm9tIGJlZm9yZSB0aGVlLgpJIHdpbGwgbm90IGRyaXZlIHRoZW0gb3V0IGZyb20gYmVmb3JlIHRoZWUgaW4gb25lIHllYXI7IGxlc3QgdGhlIGxhbmQgYmVjb21lIGRlc29sYXRlLCBhbmQgdGhlIGJlYXN0IG9mIHRoZSBmaWVsZCBtdWx0aXBseSBhZ2FpbnN0IHRoZWUuCkJ5IGxpdHRsZSBhbmQgbGl0dGxlIEkgd2lsbCBkcml2ZSB0aGVtIG91dCBmcm9tIGJlZm9yZSB0aGVlLCB1bnRpbCB0aG91IGJlIGluY3JlYXNlZCwgYW5kIGluaGVyaXQgdGhlIGxhbmQuCkFuZCBJIHdpbGwgc2V0IHRoeSBib3VuZHMgZnJvbSB0aGUgUmVkIHNlYSBldmVuIHVudG8gdGhlIHNlYSBvZiB0aGUgUGhpbGlzdGluZXMsIGFuZCBmcm9tIHRoZSBkZXNlcnQgdW50byB0aGUgcml2ZXI6IGZvciBJIHdpbGwgZGVsaXZlciB0aGUgaW5oYWJpdGFudHMgb2YgdGhlIGxhbmQgaW50byB5b3VyIGhhbmQ7IGFuZCB0aG91IHNoYWx0IGRyaXZlIHRoZW0gb3V0IGJlZm9yZSB0aGVlLgpUaG91IHNoYWx0IG1ha2Ugbm8gY292ZW5hbnQgd2l0aCB0aGVtLCBub3Igd2l0aCB0aGVpciBnb2RzLgpUaGV5IHNoYWxsIG5vdCBkd2VsbCBpbiB0aHkgbGFuZCwgbGVzdCB0aGV5IG1ha2UgdGhlZSBzaW4gYWdhaW5zdCBtZTogZm9yIGlmIHRob3Ugc2VydmUgdGhlaXIgZ29kcywgaXQgd2lsbCBzdXJlbHkgYmUgYSBzbmFyZSB1bnRvIHRoZWUuCkFuZCBoZSBzYWlkIHVudG8gTW9zZXMsIENvbWUgdXAgdW50byB0aGUgTE9SRCwgdGhvdSwgYW5kIEFhcm9uLCBOYWRhYiwgYW5kIEFiaWh1LCBhbmQgc2V2ZW50eSBvZiB0aGUgZWxkZXJzIG9mIElzcmFlbDsgYW5kIHdvcnNoaXAgeWUgYWZhciBvZmYuCkFuZCBNb3NlcyBhbG9uZSBzaGFsbCBjb21lIG5lYXIgdGhlIExPUkQ6IGJ1dCB0aGV5IHNoYWxsIG5vdCBjb21lIG5pZ2g7IG5laXRoZXIgc2hhbGwgdGhlIHBlb3BsZSBnbyB1cCB3aXRoIGhpbS4KQW5kIE1vc2VzIGNhbWUgYW5kIHRvbGQgdGhlIHBlb3BsZSBhbGwgdGhlIHdvcmRzIG9mIHRoZSBMT1JELCBhbmQgYWxsIHRoZSBqdWRnbWVudHM6IGFuZCBhbGwgdGhlIHBlb3BsZSBhbnN3ZXJlZCB3aXRoIG9uZSB2b2ljZSwgYW5kIHNhaWQsIEFsbCB0aGUgd29yZHMgd2hpY2ggdGhlIExPUkQgaGF0aCBzYWlkIHdpbGwgd2UgZG8uCkFuZCBNb3NlcyB3cm90ZSBhbGwgdGhlIHdvcmRzIG9mIHRoZSBMT1JELCBhbmQgcm9zZSB1cCBlYXJseSBpbiB0aGUgbW9ybmluZywgYW5kIGJ1aWxkZWQgYW4gYWx0YXIgdW5kZXIgdGhlIGhpbGwsIGFuZCB0d2VsdmUgcGlsbGFycywgYWNjb3JkaW5nIHRvIHRoZSB0d2VsdmUgdHJpYmVzIG9mIElzcmFlbC4KQW5kIGhlIHNlbnQgeW91bmcgbWVuIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIHdoaWNoIG9mZmVyZWQgYnVybnQgb2ZmZXJpbmdzLCBhbmQgc2FjcmlmaWNlZCBwZWFjZSBvZmZlcmluZ3Mgb2Ygb3hlbiB1bnRvIHRoZSBMT1JELgpBbmQgTW9zZXMgdG9vayBoYWxmIG9mIHRoZSBibG9vZCwgYW5kIHB1dCBpdCBpbiBiYXNvbnM7IGFuZCBoYWxmIG9mIHRoZSBibG9vZCBoZSBzcHJpbmtsZWQgb24gdGhlIGFsdGFyLgpBbmQgaGUgdG9vayB0aGUgYm9vayBvZiB0aGUgY292ZW5hbnQsIGFuZCByZWFkIGluIHRoZSBhdWRpZW5jZSBvZiB0aGUgcGVvcGxlOiBhbmQgdGhleSBzYWlkLCBBbGwgdGhhdCB0aGUgTE9SRCBoYXRoIHNhaWQgd2lsbCB3ZSBkbywgYW5kIGJlIG9iZWRpZW50LgpBbmQgTW9zZXMgdG9vayB0aGUgYmxvb2QsIGFuZCBzcHJpbmtsZWQgaXQgb24gdGhlIHBlb3BsZSwgYW5kIHNhaWQsIEJlaG9sZCB0aGUgYmxvb2Qgb2YgdGhlIGNvdmVuYW50LCB3aGljaCB0aGUgTE9SRCBoYXRoIG1hZGUgd2l0aCB5b3UgY29uY2VybmluZyBhbGwgdGhlc2Ugd29yZHMuClRoZW4gd2VudCB1cCBNb3NlcywgYW5kIEFhcm9uLCBOYWRhYiwgYW5kIEFiaWh1LCBhbmQgc2V2ZW50eSBvZiB0aGUgZWxkZXJzIG9mIElzcmFlbDoKQW5kIHRoZXkgc2F3IHRoZSBHb2Qgb2YgSXNyYWVsOiBhbmQgdGhlcmUgd2FzIHVuZGVyIGhpcyBmZWV0IGFzIGl0IHdlcmUgYSBwYXZlZCB3b3JrIG9mIGEgc2FwcGhpcmUgc3RvbmUsIGFuZCBhcyBpdCB3ZXJlIHRoZSBib2R5IG9mIGhlYXZlbiBpbiBoaXMgY2xlYXJuZXNzLgpBbmQgdXBvbiB0aGUgbm9ibGVzIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgaGUgbGFpZCBub3QgaGlzIGhhbmQ6IGFsc28gdGhleSBzYXcgR29kLCBhbmQgZGlkIGVhdCBhbmQgZHJpbmsuCkFuZCB0aGUgTE9SRCBzYWlkIHVudG8gTW9zZXMsIENvbWUgdXAgdG8gbWUgaW50byB0aGUgbW91bnQsIGFuZCBiZSB0aGVyZTogYW5kIEkgd2lsbCBnaXZlIHRoZWUgdGFibGVzIG9mIHN0b25lLCBhbmQgYSBsYXcsIGFuZCBjb21tYW5kbWVudHMgd2hpY2ggSSBoYXZlIHdyaXR0ZW47IHRoYXQgdGhvdSBtYXllc3QgdGVhY2ggdGhlbS4KQW5kIE1vc2VzIHJvc2UgdXAsIGFuZCBoaXMgbWluaXN0ZXIgSm9zaHVhOiBhbmQgTW9zZXMgd2VudCB1cCBpbnRvIHRoZSBtb3VudCBvZiBHb2QuCkFuZCBoZSBzYWlkIHVudG8gdGhlIGVsZGVycywgVGFycnkgeWUgaGVyZSBmb3IgdXMsIHVudGlsIHdlIGNvbWUgYWdhaW4gdW50byB5b3U6IGFuZCwgYmVob2xkLCBBYXJvbiBhbmQgSHVyIGFyZSB3aXRoIHlvdTogaWYgYW55IG1hbiBoYXZlIGFueSBtYXR0ZXJzIHRvIGRvLCBsZXQgaGltIGNvbWUgdW50byB0aGVtLgpBbmQgTW9zZXMgd2VudCB1cCBpbnRvIHRoZSBtb3VudCwgYW5kIGEgY2xvdWQgY292ZXJlZCB0aGUgbW91bnQuCkFuZCB0aGUgZ2xvcnkgb2YgdGhlIExPUkQgYWJvZGUgdXBvbiBtb3VudCBTaW5haSwgYW5kIHRoZSBjbG91ZCBjb3ZlcmVkIGl0IHNpeCBkYXlzOiBhbmQgdGhlIHNldmVudGggZGF5IGhlIGNhbGxlZCB1bnRvIE1vc2VzIG91dCBvZiB0aGUgbWlkc3Qgb2YgdGhlIGNsb3VkLgpBbmQgdGhlIHNpZ2h0IG9mIHRoZSBnbG9yeSBvZiB0aGUgTE9SRCB3YXMgbGlrZSBkZXZvdXJpbmcgZmlyZSBvbiB0aGUgdG9wIG9mIHRoZSBtb3VudCBpbiB0aGUgZXllcyBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLgpBbmQgTW9zZXMgd2VudCBpbnRvIHRoZSBtaWRzdCBvZiB0aGUgY2xvdWQsIGFuZCBnYXQgaGltIHVwIGludG8gdGhlIG1vdW50OiBhbmQgTW9zZXMgd2FzIGluIHRoZSBtb3VudCBmb3J0eSBkYXlzIGFuZCBmb3J0eSBuaWdodHMuCkFuZCB0aGUgTE9SRCBzcGFrZSB1bnRvIE1vc2VzLCBzYXlpbmcsClNwZWFrIHVudG8gdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgdGhhdCB0aGV5IGJyaW5nIG1lIGFuIG9mZmVyaW5nOiBvZiBldmVyeSBtYW4gdGhhdCBnaXZldGggaXQgd2lsbGluZ2x5IHdpdGggaGlzIGhlYXJ0IHllIHNoYWxsIHRha2UgbXkgb2ZmZXJpbmcuCkFuZCB0aGlzIGlzIHRoZSBvZmZlcmluZyB3aGljaCB5ZSBzaGFsbCB0YWtlIG9mIHRoZW07IGdvbGQsIGFuZCBzaWx2ZXIsIGFuZCBicmFzcywKQW5kIGJsdWUsIGFuZCBwdXJwbGUsIGFuZCBzY2FybGV0LCBhbmQgZmluZSBsaW5lbiwgYW5kIGdvYXRzJyBoYWlyLApBbmQgcmFtcycgc2tpbnMgZHllZCByZWQsIGFuZCBiYWRnZXJzJyBza2lucywgYW5kIHNoaXR0aW0gd29vZCwKT2lsIGZvciB0aGUgbGlnaHQsIHNwaWNlcyBmb3IgYW5vaW50aW5nIG9pbCwgYW5kIGZvciBzd2VldCBpbmNlbnNlLApPbnl4IHN0b25lcywgYW5kIHN0b25lcyB0byBiZSBzZXQgaW4gdGhlIGVwaG9kLCBhbmQgaW4gdGhlIGJyZWFzdHBsYXRlLgpBbmQgbGV0IHRoZW0gbWFrZSBtZSBhIHNhbmN0dWFyeTsgdGhhdCBJIG1heSBkd2VsbCBhbW9uZyB0aGVtLgpBY2NvcmRpbmcgdG8gYWxsIHRoYXQgSSBzaGV3IHRoZWUsIGFmdGVyIHRoZSBwYXR0ZXJuIG9mIHRoZSB0YWJlcm5hY2xlLCBhbmQgdGhlIHBhdHRlcm4gb2YgYWxsIHRoZSBpbnN0cnVtZW50cyB0aGVyZW9mLCBldmVuIHNvIHNoYWxsIHllIG1ha2UgaXQuCkFuZCB0aGV5IHNoYWxsIG1ha2UgYW4gYXJrIG9mIHNoaXR0aW0gd29vZDogdHdvIGN1Yml0cyBhbmQgYSBoYWxmIHNoYWxsIGJlIHRoZSBsZW5ndGggdGhlcmVvZiwgYW5kIGEgY3ViaXQgYW5kIGEgaGFsZiB0aGUgYnJlYWR0aCB0aGVyZW9mLCBhbmQgYSBjdWJpdCBhbmQgYSBoYWxmIHRoZSBoZWlnaHQgdGhlcmVvZi4KQW5kIHRob3Ugc2hhbHQgb3ZlcmxheSBpdCB3aXRoIHB1cmUgZ29sZCwgd2l0aGluIGFuZCB3aXRob3V0IHNoYWx0IHRob3Ugb3ZlcmxheSBpdCwgYW5kIHNoYWx0IG1ha2UgdXBvbiBpdCBhIGNyb3duIG9mIGdvbGQgcm91bmQgYWJvdXQuCkFuZCB0aG91IHNoYWx0IGNhc3QgZm91ciByaW5ncyBvZiBnb2xkIGZvciBpdCwgYW5kIHB1dCB0aGVtIGluIHRoZSBmb3VyIGNvcm5lcnMgdGhlcmVvZjsgYW5kIHR3byByaW5ncyBzaGFsbCBiZSBpbiB0aGUgb25lIHNpZGUgb2YgaXQsIGFuZCB0d28gcmluZ3MgaW4gdGhlIG90aGVyIHNpZGUgb2YgaXQuCkFuZCB0aG91IHNoYWx0IG1ha2Ugc3RhdmVzIG9mIHNoaXR0aW0gd29vZCwgYW5kIG92ZXJsYXkgdGhlbSB3aXRoIGdvbGQuCkFuZCB0aG91IHNoYWx0IHB1dCB0aGUgc3RhdmVzIGludG8gdGhlIHJpbmdzIGJ5IHRoZSBzaWRlcyBvZiB0aGUgYXJrLCB0aGF0IHRoZSBhcmsgbWF5IGJlIGJvcm5lIHdpdGggdGhlbS4KVGhlIHN0YXZlcyBzaGFsbCBiZSBpbiB0aGUgcmluZ3Mgb2YgdGhlIGFyazogdGhleSBzaGFsbCBub3QgYmUgdGFrZW4gZnJvbSBpdC4KQW5kIHRob3Ugc2hhbHQgcHV0IGludG8gdGhlIGFyayB0aGUgdGVzdGltb255IHdoaWNoIEkgc2hhbGwgZ2l2ZSB0aGVlLgpBbmQgdGhvdSBzaGFsdCBtYWtlIGEgbWVyY3kgc2VhdCBvZiBwdXJlIGdvbGQ6IHR3byBjdWJpdHMgYW5kIGEgaGFsZiBzaGFsbCBiZSB0aGUgbGVuZ3RoIHRoZXJlb2YsIGFuZCBhIGN1Yml0IGFuZCBhIGhhbGYgdGhlIGJyZWFkdGggdGhlcmVvZi4KQW5kIHRob3Ugc2hhbHQgbWFrZSB0d28gY2hlcnViaW1zIG9mIGdvbGQsIG9mIGJlYXRlbiB3b3JrIHNoYWx0IHRob3UgbWFrZSB0aGVtLCBpbiB0aGUgdHdvIGVuZHMgb2YgdGhlIG1lcmN5IHNlYXQuCkFuZCBtYWtlIG9uZSBjaGVydWIgb24gdGhlIG9uZSBlbmQsIGFuZCB0aGUgb3RoZXIgY2hlcnViIG9uIHRoZSBvdGhlciBlbmQ6IGV2ZW4gb2YgdGhlIG1lcmN5IHNlYXQgc2hhbGwgeWUgbWFrZSB0aGUgY2hlcnViaW1zIG9uIHRoZSB0d28gZW5kcyB0aGVyZW9mLgpBbmQgdGhlIGNoZXJ1YmltcyBzaGFsbCBzdHJldGNoIGZvcnRoIHRoZWlyIHdpbmdzIG9uIGhpZ2gsIGNvdmVyaW5nIHRoZSBtZXJjeSBzZWF0IHdpdGggdGhlaXIgd2luZ3MsIGFuZCB0aGVpciBmYWNlcyBzaGFsbCBsb29rIG9uZSB0byBhbm90aGVyOyB0b3dhcmQgdGhlIG1lcmN5IHNlYXQgc2hhbGwgdGhlIGZhY2VzIG9mIHRoZSBjaGVydWJpbXMgYmUuCkFuZCB0aG91IHNoYWx0IHB1dCB0aGUgbWVyY3kgc2VhdCBhYm92ZSB1cG9uIHRoZSBhcms7IGFuZCBpbiB0aGUgYXJrIHRob3Ugc2hhbHQgcHV0IHRoZSB0ZXN0aW1vbnkgdGhhdCBJIHNoYWxsIGdpdmUgdGhlZS4KQW5kIHRoZXJlIEkgd2lsbCBtZWV0IHdpdGggdGhlZSwgYW5kIEkgd2lsbCBjb21tdW5lIHdpdGggdGhlZSBmcm9tIGFib3ZlIHRoZSBtZXJjeSBzZWF0LCBmcm9tIGJldHdlZW4gdGhlIHR3byBjaGVydWJpbXMgd2hpY2ggYXJlIHVwb24gdGhlIGFyayBvZiB0aGUgdGVzdGltb255LCBvZiBhbGwgdGhpbmdzIHdoaWNoIEkgd2lsbCBnaXZlIHRoZWUgaW4gY29tbWFuZG1lbnQgdW50byB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLgpUaG91IHNoYWx0IGFsc28gbWFrZSBhIHRhYmxlIG9mIHNoaXR0aW0gd29vZDogdHdvIGN1Yml0cyBzaGFsbCBiZSB0aGUgbGVuZ3RoIHRoZXJlb2YsIGFuZCBhIGN1Yml0IHRoZSBicmVhZHRoIHRoZXJlb2YsIGFuZCBhIGN1Yml0IGFuZCBhIGhhbGYgdGhlIGhlaWdodCB0aGVyZW9mLgpBbmQgdGhvdSBzaGFsdCBvdmVybGF5IGl0IHdpdGggcHVyZSBnb2xkLCBhbmQgbWFrZSB0aGVyZXRvIGEgY3Jvd24gb2YgZ29sZCByb3VuZCBhYm91dC4KQW5kIHRob3Ugc2hhbHQgbWFrZSB1bnRvIGl0IGEgYm9yZGVyIG9mIGFuIGhhbmQgYnJlYWR0aCByb3VuZCBhYm91dCwgYW5kIHRob3Ugc2hhbHQgbWFrZSBhIGdvbGRlbiBjcm93biB0byB0aGUgYm9yZGVyIHRoZXJlb2Ygcm91bmQgYWJvdXQuCkFuZCB0aG91IHNoYWx0IG1ha2UgZm9yIGl0IGZvdXIgcmluZ3Mgb2YgZ29sZCwgYW5kIHB1dCB0aGUgcmluZ3MgaW4gdGhlIGZvdXIgY29ybmVycyB0aGF0IGFyZSBvbiB0aGUgZm91ciBmZWV0IHRoZXJlb2YuCk92ZXIgYWdhaW5zdCB0aGUgYm9yZGVyIHNoYWxsIHRoZSByaW5ncyBiZSBmb3IgcGxhY2VzIG9mIHRoZSBzdGF2ZXMgdG8gYmVhciB0aGUgdGFibGUuCkFuZCB0aG91IHNoYWx0IG1ha2UgdGhlIHN0YXZlcyBvZiBzaGl0dGltIHdvb2QsIGFuZCBvdmVybGF5IHRoZW0gd2l0aCBnb2xkLCB0aGF0IHRoZSB0YWJsZSBtYXkgYmUgYm9ybmUgd2l0aCB0aGVtLgpBbmQgdGhvdSBzaGFsdCBtYWtlIHRoZSBkaXNoZXMgdGhlcmVvZiwgYW5kIHNwb29ucyB0aGVyZW9mLCBhbmQgY292ZXJzIHRoZXJlb2YsIGFuZCBib3dscyB0aGVyZW9mLCB0byBjb3ZlciB3aXRoYWw6IG9mIHB1cmUgZ29sZCBzaGFsdCB0aG91IG1ha2UgdGhlbS4KQW5kIHRob3Ugc2hhbHQgc2V0IHVwb24gdGhlIHRhYmxlIHNoZXdicmVhZCBiZWZvcmUgbWUgYWx3YXkuCkFuZCB0aG91IHNoYWx0IG1ha2UgYSBjYW5kbGVzdGljayBvZiBwdXJlIGdvbGQ6IG9mIGJlYXRlbiB3b3JrIHNoYWxsIHRoZSBjYW5kbGVzdGljayBiZSBtYWRlOiBoaXMgc2hhZnQsIGFuZCBoaXMgYnJhbmNoZXMsIGhpcyBib3dscywgaGlzIGtub3BzLCBhbmQgaGlzIGZsb3dlcnMsIHNoYWxsIGJlIG9mIHRoZSBzYW1lLgpBbmQgc2l4IGJyYW5jaGVzIHNoYWxsIGNvbWUgb3V0IG9mIHRoZSBzaWRlcyBvZiBpdDsgdGhyZWUgYnJhbmNoZXMgb2YgdGhlIGNhbmRsZXN0aWNrIG91dCBvZiB0aGUgb25lIHNpZGUsIGFuZCB0aHJlZSBicmFuY2hlcyBvZiB0aGUgY2FuZGxlc3RpY2sgb3V0IG9mIHRoZSBvdGhlciBzaWRlOgpUaHJlZSBib3dscyBtYWRlIGxpa2UgdW50byBhbG1vbmRzLCB3aXRoIGEga25vcCBhbmQgYSBmbG93ZXIgaW4gb25lIGJyYW5jaDsgYW5kIHRocmVlIGJvd2xzIG1hZGUgbGlrZSBhbG1vbmRzIGluIHRoZSBvdGhlciBicmFuY2gsIHdpdGggYSBrbm9wIGFuZCBhIGZsb3dlcjogc28gaW4gdGhlIHNpeCBicmFuY2hlcyB0aGF0IGNvbWUgb3V0IG9mIHRoZSBjYW5kbGVzdGljay4KQW5kIGluIHRoZSBjYW5kbGVzdGlja3Mgc2hhbGwgYmUgZm91ciBib3dscyBtYWRlIGxpa2UgdW50byBhbG1vbmRzLCB3aXRoIHRoZWlyIGtub3BzIGFuZCB0aGVpciBmbG93ZXJzLgpBbmQgdGhlcmUgc2hhbGwgYmUgYSBrbm9wIHVuZGVyIHR3byBicmFuY2hlcyBvZiB0aGUgc2FtZSwgYW5kIGEga25vcCB1bmRlciB0d28gYnJhbmNoZXMgb2YgdGhlIHNhbWUsIGFuZCBhIGtub3AgdW5kZXIgdHdvIGJyYW5jaGVzIG9mIHRoZSBzYW1lLCBhY2NvcmRpbmcgdG8gdGhlIHNpeCBicmFuY2hlcyB0aGF0IHByb2NlZWQgb3V0IG9mIHRoZSBjYW5kbGVzdGljay4KVGhlaXIga25vcHMgYW5kIHRoZWlyIGJyYW5jaGVzIHNoYWxsIGJlIG9mIHRoZSBzYW1lOiBhbGwgaXQgc2hhbGwgYmUgb25lIGJlYXRlbiB3b3JrIG9mIHB1cmUgZ29sZC4KQW5kIHRob3Ugc2hhbHQgbWFrZSB0aGUgc2V2ZW4gbGFtcHMgdGhlcmVvZjogYW5kIHRoZXkgc2hhbGwgbGlnaHQgdGhlIGxhbXBzIHRoZXJlb2YsIHRoYXQgdGhleSBtYXkgZ2l2ZSBsaWdodCBvdmVyIGFnYWluc3QgaXQuCkFuZCB0aGUgdG9uZ3MgdGhlcmVvZiwgYW5kIHRoZSBzbnVmZmRpc2hlcyB0aGVyZW9mLCBzaGFsbCBiZSBvZiBwdXJlIGdvbGQuCk9mIGEgdGFsZW50IG9mIHB1cmUgZ29sZCBzaGFsbCBoZSBtYWtlIGl0LCB3aXRoIGFsbCB0aGVzZSB2ZXNzZWxzLgpBbmQgbG9vayB0aGF0IHRob3UgbWFrZSB0aGVtIGFmdGVyIHRoZWlyIHBhdHRlcm4sIHdoaWNoIHdhcyBzaGV3ZWQgdGhlZSBpbiB0aGUgbW91bnQuCk1vcmVvdmVyIHRob3Ugc2hhbHQgbWFrZSB0aGUgdGFiZXJuYWNsZSB3aXRoIHRlbiBjdXJ0YWlucyBvZiBmaW5lIHR3aW5lZCBsaW5lbiwgYW5kIGJsdWUsIGFuZCBwdXJwbGUsIGFuZCBzY2FybGV0OiB3aXRoIGNoZXJ1YmltcyBvZiBjdW5uaW5nIHdvcmsgc2hhbHQgdGhvdSBtYWtlIHRoZW0uClRoZSBsZW5ndGggb2Ygb25lIGN1cnRhaW4gc2hhbGwgYmUgZWlnaHQgYW5kIHR3ZW50eSBjdWJpdHMsIGFuZCB0aGUgYnJlYWR0aCBvZiBvbmUgY3VydGFpbiBmb3VyIGN1Yml0czogYW5kIGV2ZXJ5IG9uZSBvZiB0aGUgY3VydGFpbnMgc2hhbGwgaGF2ZSBvbmUgbWVhc3VyZS4KVGhlIGZpdmUgY3VydGFpbnMgc2hhbGwgYmUgY291cGxlZCB0b2dldGhlciBvbmUgdG8gYW5vdGhlcjsgYW5kIG90aGVyIGZpdmUgY3VydGFpbnMgc2hhbGwgYmUgY291cGxlZCBvbmUgdG8gYW5vdGhlci4KQW5kIHRob3Ugc2hhbHQgbWFrZSBsb29wcyBvZiBibHVlIHVwb24gdGhlIGVkZ2Ugb2YgdGhlIG9uZSBjdXJ0YWluIGZyb20gdGhlIHNlbHZlZGdlIGluIHRoZSBjb3VwbGluZzsgYW5kIGxpa2V3aXNlIHNoYWx0IHRob3UgbWFrZSBpbiB0aGUgdXR0ZXJtb3N0IGVkZ2Ugb2YgYW5vdGhlciBjdXJ0YWluLCBpbiB0aGUgY291cGxpbmcgb2YgdGhlIHNlY29uZC4KRmlmdHkgbG9vcHMgc2hhbHQgdGhvdSBtYWtlIGluIHRoZSBvbmUgY3VydGFpbiwgYW5kIGZpZnR5IGxvb3BzIHNoYWx0IHRob3UgbWFrZSBpbiB0aGUgZWRnZSBvZiB0aGUgY3VydGFpbiB0aGF0IGlzIGluIHRoZSBjb3VwbGluZyBvZiB0aGUgc2Vjb25kOyB0aGF0IHRoZSBsb29wcyBtYXkgdGFrZSBob2xkIG9uZSBvZiBhbm90aGVyLgpBbmQgdGhvdSBzaGFsdCBtYWtlIGZpZnR5IHRhY2hlcyBvZiBnb2xkLCBhbmQgY291cGxlIHRoZSBjdXJ0YWlucyB0b2dldGhlciB3aXRoIHRoZSB0YWNoZXM6IGFuZCBpdCBzaGFsbCBiZSBvbmUgdGFiZXJuYWNsZS4KQW5kIHRob3Ugc2hhbHQgbWFrZSBjdXJ0YWlucyBvZiBnb2F0cycgaGFpciB0byBiZSBhIGNvdmVyaW5nIHVwb24gdGhlIHRhYmVybmFjbGU6IGVsZXZlbiBjdXJ0YWlucyBzaGFsdCB0aG91IG1ha2UuClRoZSBsZW5ndGggb2Ygb25lIGN1cnRhaW4gc2hhbGwgYmUgdGhpcnR5IGN1Yml0cywgYW5kIHRoZSBicmVhZHRoIG9mIG9uZSBjdXJ0YWluIGZvdXIgY3ViaXRzOiBhbmQgdGhlIGVsZXZlbiBjdXJ0YWlucyBzaGFsbCBiZSBhbGwgb2Ygb25lIG1lYXN1cmUuCkFuZCB0aG91IHNoYWx0IGNvdXBsZSBmaXZlIGN1cnRhaW5zIGJ5IHRoZW1zZWx2ZXMsIGFuZCBzaXggY3VydGFpbnMgYnkgdGhlbXNlbHZlcywgYW5kIHNoYWx0IGRvdWJsZSB0aGUgc2l4dGggY3VydGFpbiBpbiB0aGUgZm9yZWZyb250IG9mIHRoZSB0YWJlcm5hY2xlLgpBbmQgdGhvdSBzaGFsdCBtYWtlIGZpZnR5IGxvb3BzIG9uIHRoZSBlZGdlIG9mIHRoZSBvbmUgY3VydGFpbiB0aGF0IGlzIG91dG1vc3QgaW4gdGhlIGNvdXBsaW5nLCBhbmQgZmlmdHkgbG9vcHMgaW4gdGhlIGVkZ2Ugb2YgdGhlIGN1cnRhaW4gd2hpY2ggY291cGxldGggdGhlIHNlY29uZC4KQW5kIHRob3Ugc2hhbHQgbWFrZSBmaWZ0eSB0YWNoZXMgb2YgYnJhc3MsIGFuZCBwdXQgdGhlIHRhY2hlcyBpbnRvIHRoZSBsb29wcywgYW5kIGNvdXBsZSB0aGUgdGVudCB0b2dldGhlciwgdGhhdCBpdCBtYXkgYmUgb25lLgpBbmQgdGhlIHJlbW5hbnQgdGhhdCByZW1haW5ldGggb2YgdGhlIGN1cnRhaW5zIG9mIHRoZSB0ZW50LCB0aGUgaGFsZiBjdXJ0YWluIHRoYXQgcmVtYWluZXRoLCBzaGFsbCBoYW5nIG92ZXIgdGhlIGJhY2tzaWRlIG9mIHRoZSB0YWJlcm5hY2xlLgpBbmQgYSBjdWJpdCBvbiB0aGUgb25lIHNpZGUsIGFuZCBhIGN1Yml0IG9uIHRoZSBvdGhlciBzaWRlIG9mIHRoYXQgd2hpY2ggcmVtYWluZXRoIGluIHRoZSBsZW5ndGggb2YgdGhlIGN1cnRhaW5zIG9mIHRoZSB0ZW50LCBpdCBzaGFsbCBoYW5nIG92ZXIgdGhlIHNpZGVzIG9mIHRoZSB0YWJlcm5hY2xlIG9uIHRoaXMgc2lkZSBhbmQgb24gdGhhdCBzaWRlLCB0byBjb3ZlciBpdC4KQW5kIHRob3Ugc2hhbHQgbWFrZSBhIGNvdmVyaW5nIGZvciB0aGUgdGVudCBvZiByYW1zJyBza2lucyBkeWVkIHJlZCwgYW5kIGEgY292ZXJpbmcgYWJvdmUgb2YgYmFkZ2Vycycgc2tpbnMuCkFuZCB0aG91IHNoYWx0IG1ha2UgYm9hcmRzIGZvciB0aGUgdGFiZXJuYWNsZSBvZiBzaGl0dGltIHdvb2Qgc3RhbmRpbmcgdXAuClRlbiBjdWJpdHMgc2hhbGwgYmUgdGhlIGxlbmd0aCBvZiBhIGJvYXJkLCBhbmQgYSBjdWJpdCBhbmQgYSBoYWxmIHNoYWxsIGJlIHRoZSBicmVhZHRoIG9mIG9uZSBib2FyZC4KVHdvIHRlbm9ucyBzaGFsbCB0aGVyZSBiZSBpbiBvbmUgYm9hcmQsIHNldCBpbiBvcmRlciBvbmUgYWdhaW5zdCBhbm90aGVyOiB0aHVzIHNoYWx0IHRob3UgbWFrZSBmb3IgYWxsIHRoZSBib2FyZHMgb2YgdGhlIHRhYmVybmFjbGUuCkFuZCB0aG91IHNoYWx0IG1ha2UgdGhlIGJvYXJkcyBmb3IgdGhlIHRhYmVybmFjbGUsIHR3ZW50eSBib2FyZHMgb24gdGhlIHNvdXRoIHNpZGUgc291dGh3YXJkLgpBbmQgdGhvdSBzaGFsdCBtYWtlIGZvcnR5IHNvY2tldHMgb2Ygc2lsdmVyIHVuZGVyIHRoZSB0d2VudHkgYm9hcmRzOyB0d28gc29ja2V0cyB1bmRlciBvbmUgYm9hcmQgZm9yIGhpcyB0d28gdGVub25zLCBhbmQgdHdvIHNvY2tldHMgdW5kZXIgYW5vdGhlciBib2FyZCBmb3IgaGlzIHR3byB0ZW5vbnMuCkFuZCBmb3IgdGhlIHNlY29uZCBzaWRlIG9mIHRoZSB0YWJlcm5hY2xlIG9uIHRoZSBub3J0aCBzaWRlIHRoZXJlIHNoYWxsIGJlIHR3ZW50eSBib2FyZHM6CkFuZCB0aGVpciBmb3J0eSBzb2NrZXRzIG9mIHNpbHZlcjsgdHdvIHNvY2tldHMgdW5kZXIgb25lIGJvYXJkLCBhbmQgdHdvIHNvY2tldHMgdW5kZXIgYW5vdGhlciBib2FyZC4KQW5kIGZvciB0aGUgc2lkZXMgb2YgdGhlIHRhYmVybmFjbGUgd2VzdHdhcmQgdGhvdSBzaGFsdCBtYWtlIHNpeCBib2FyZHMuCkFuZCB0d28gYm9hcmRzIHNoYWx0IHRob3UgbWFrZSBmb3IgdGhlIGNvcm5lcnMgb2YgdGhlIHRhYmVybmFjbGUgaW4gdGhlIHR3byBzaWRlcy4KQW5kIHRoZXkgc2hhbGwgYmUgY291cGxlZCB0b2dldGhlciBiZW5lYXRoLCBhbmQgdGhleSBzaGFsbCBiZSBjb3VwbGVkIHRvZ2V0aGVyIGFib3ZlIHRoZSBoZWFkIG9mIGl0IHVudG8gb25lIHJpbmc6IHRodXMgc2hhbGwgaXQgYmUgZm9yIHRoZW0gYm90aDsgdGhleSBzaGFsbCBiZSBmb3IgdGhlIHR3byBjb3JuZXJzLgpBbmQgdGhleSBzaGFsbCBiZSBlaWdodCBib2FyZHMsIGFuZCB0aGVpciBzb2NrZXRzIG9mIHNpbHZlciwgc2l4dGVlbiBzb2NrZXRzOyB0d28gc29ja2V0cyB1bmRlciBvbmUgYm9hcmQsIGFuZCB0d28gc29ja2V0cyB1bmRlciBhbm90aGVyIGJvYXJkLgpBbmQgdGhvdSBzaGFsdCBtYWtlIGJhcnMgb2Ygc2hpdHRpbSB3b29kOyBmaXZlIGZvciB0aGUgYm9hcmRzIG9mIHRoZSBvbmUgc2lkZSBvZiB0aGUgdGFiZXJuYWNsZSwKQW5kIGZpdmUgYmFycyBmb3IgdGhlIGJvYXJkcyBvZiB0aGUgb3RoZXIgc2lkZSBvZiB0aGUgdGFiZXJuYWNsZSwgYW5kIGZpdmUgYmFycyBmb3IgdGhlIGJvYXJkcyBvZiB0aGUgc2lkZSBvZiB0aGUgdGFiZXJuYWNsZSwgZm9yIHRoZSB0d28gc2lkZXMgd2VzdHdhcmQuCkFuZCB0aGUgbWlkZGxlIGJhciBpbiB0aGUgbWlkc3Qgb2YgdGhlIGJvYXJkcyBzaGFsbCByZWFjaCBmcm9tIGVuZCB0byBlbmQuCkFuZCB0aG91IHNoYWx0IG92ZXJsYXkgdGhlIGJvYXJkcyB3aXRoIGdvbGQsIGFuZCBtYWtlIHRoZWlyIHJpbmdzIG9mIGdvbGQgZm9yIHBsYWNlcyBmb3IgdGhlIGJhcnM6IGFuZCB0aG91IHNoYWx0IG92ZXJsYXkgdGhlIGJhcnMgd2l0aCBnb2xkLgpBbmQgdGhvdSBzaGFsdCByZWFyIHVwIHRoZSB0YWJlcm5hY2xlIGFjY29yZGluZyB0byB0aGUgZmFzaGlvbiB0aGVyZW9mIHdoaWNoIHdhcyBzaGV3ZWQgdGhlZSBpbiB0aGUgbW91bnQuCkFuZCB0aG91IHNoYWx0IG1ha2UgYSB2YWlsIG9mIGJsdWUsIGFuZCBwdXJwbGUsIGFuZCBzY2FybGV0LCBhbmQgZmluZSB0d2luZWQgbGluZW4gb2YgY3VubmluZyB3b3JrOiB3aXRoIGNoZXJ1YmltcyBzaGFsbCBpdCBiZSBtYWRlOgpBbmQgdGhvdSBzaGFsdCBoYW5nIGl0IHVwb24gZm91ciBwaWxsYXJzIG9mIHNoaXR0aW0gd29vZCBvdmVybGFpZCB3aXRoIGdvbGQ6IHRoZWlyIGhvb2tzIHNoYWxsIGJlIG9mIGdvbGQsIHVwb24gdGhlIGZvdXIgc29ja2V0cyBvZiBzaWx2ZXIuCkFuZCB0aG91IHNoYWx0IGhhbmcgdXAgdGhlIHZhaWwgdW5kZXIgdGhlIHRhY2hlcywgdGhhdCB0aG91IG1heWVzdCBicmluZyBpbiB0aGl0aGVyIHdpdGhpbiB0aGUgdmFpbCB0aGUgYXJrIG9mIHRoZSB0ZXN0aW1vbnk6IGFuZCB0aGUgdmFpbCBzaGFsbCBkaXZpZGUgdW50byB5b3UgYmV0d2VlbiB0aGUgaG9seSBwbGFjZSBhbmQgdGhlIG1vc3QgaG9seS4KQW5kIHRob3Ugc2hhbHQgcHV0IHRoZSBtZXJjeSBzZWF0IHVwb24gdGhlIGFyayBvZiB0aGUgdGVzdGltb255IGluIHRoZSBtb3N0IGhvbHkgcGxhY2UuCkFuZCB0aG91IHNoYWx0IHNldCB0aGUgdGFibGUgd2l0aG91dCB0aGUgdmFpbCwgYW5kIHRoZSBjYW5kbGVzdGljayBvdmVyIGFnYWluc3QgdGhlIHRhYmxlIG9uIHRoZSBzaWRlIG9mIHRoZSB0YWJlcm5hY2xlIHRvd2FyZCB0aGUgc291dGg6IGFuZCB0aG91IHNoYWx0IHB1dCB0aGUgdGFibGUgb24gdGhlIG5vcnRoIHNpZGUuCkFuZCB0aG91IHNoYWx0IG1ha2UgYW4gaGFuZ2luZyBmb3IgdGhlIGRvb3Igb2YgdGhlIHRlbnQsIG9mIGJsdWUsIGFuZCBwdXJwbGUsIGFuZCBzY2FybGV0LCBhbmQgZmluZSB0d2luZWQgbGluZW4sIHdyb3VnaHQgd2l0aCBuZWVkbGV3b3JrLgpBbmQgdGhvdSBzaGFsdCBtYWtlIGZvciB0aGUgaGFuZ2luZyBmaXZlIHBpbGxhcnMgb2Ygc2hpdHRpbSB3b29kLCBhbmQgb3ZlcmxheSB0aGVtIHdpdGggZ29sZCwgYW5kIHRoZWlyIGhvb2tzIHNoYWxsIGJlIG9mIGdvbGQ6IGFuZCB0aG91IHNoYWx0IGNhc3QgZml2ZSBzb2NrZXRzIG9mIGJyYXNzIGZvciB0aGVtLgpBbmQgdGhvdSBzaGFsdCBtYWtlIGFuIGFsdGFyIG9mIHNoaXR0aW0gd29vZCwgZml2ZSBjdWJpdHMgbG9uZywgYW5kIGZpdmUgY3ViaXRzIGJyb2FkOyB0aGUgYWx0YXIgc2hhbGwgYmUgZm91cnNxdWFyZTogYW5kIHRoZSBoZWlnaHQgdGhlcmVvZiBzaGFsbCBiZSB0aHJlZSBjdWJpdHMuCkFuZCB0aG91IHNoYWx0IG1ha2UgdGhlIGhvcm5zIG9mIGl0IHVwb24gdGhlIGZvdXIgY29ybmVycyB0aGVyZW9mOiBoaXMgaG9ybnMgc2hhbGwgYmUgb2YgdGhlIHNhbWU6IGFuZCB0aG91IHNoYWx0IG92ZXJsYXkgaXQgd2l0aCBicmFzcy4KQW5kIHRob3Ugc2hhbHQgbWFrZSBoaXMgcGFucyB0byByZWNlaXZlIGhpcyBhc2hlcywgYW5kIGhpcyBzaG92ZWxzLCBhbmQgaGlzIGJhc29ucywgYW5kIGhpcyBmbGVzaGhvb2tzLCBhbmQgaGlzIGZpcmVwYW5zOiBhbGwgdGhlIHZlc3NlbHMgdGhlcmVvZiB0aG91IHNoYWx0IG1ha2Ugb2YgYnJhc3MuCkFuZCB0aG91IHNoYWx0IG1ha2UgZm9yIGl0IGEgZ3JhdGUgb2YgbmV0d29yayBvZiBicmFzczsgYW5kIHVwb24gdGhlIG5ldCBzaGFsdCB0aG91IG1ha2UgZm91ciBicmFzZW4gcmluZ3MgaW4gdGhlIGZvdXIgY29ybmVycyB0aGVyZW9mLgpBbmQgdGhvdSBzaGFsdCBwdXQgaXQgdW5kZXIgdGhlIGNvbXBhc3Mgb2YgdGhlIGFsdGFyIGJlbmVhdGgsIHRoYXQgdGhlIG5ldCBtYXkgYmUgZXZlbiB0byB0aGUgbWlkc3Qgb2YgdGhlIGFsdGFyLgpBbmQgdGhvdSBzaGFsdCBtYWtlIHN0YXZlcyBmb3IgdGhlIGFsdGFyLCBzdGF2ZXMgb2Ygc2hpdHRpbSB3b29kLCBhbmQgb3ZlcmxheSB0aGVtIHdpdGggYnJhc3MuCkFuZCB0aGUgc3RhdmVzIHNoYWxsIGJlIHB1dCBpbnRvIHRoZSByaW5ncywgYW5kIHRoZSBzdGF2ZXMgc2hhbGwgYmUgdXBvbiB0aGUgdHdvIHNpZGVzIG9mIHRoZSBhbHRhciwgdG8gYmVhciBpdC4KSG9sbG93IHdpdGggYm9hcmRzIHNoYWx0IHRob3UgbWFrZSBpdDogYXMgaXQgd2FzIHNoZXdlZCB0aGVlIGluIHRoZSBtb3VudCwgc28gc2hhbGwgdGhleSBtYWtlIGl0LgpBbmQgdGhvdSBzaGFsdCBtYWtlIHRoZSBjb3VydCBvZiB0aGUgdGFiZXJuYWNsZTogZm9yIHRoZSBzb3V0aCBzaWRlIHNvdXRod2FyZCB0aGVyZSBzaGFsbCBiZSBoYW5naW5ncyBmb3IgdGhlIGNvdXJ0IG9mIGZpbmUgdHdpbmVkIGxpbmVuIG9mIGFuIGh1bmRyZWQgY3ViaXRzIGxvbmcgZm9yIG9uZSBzaWRlOgpBbmQgdGhlIHR3ZW50eSBwaWxsYXJzIHRoZXJlb2YgYW5kIHRoZWlyIHR3ZW50eSBzb2NrZXRzIHNoYWxsIGJlIG9mIGJyYXNzOyB0aGUgaG9va3Mgb2YgdGhlIHBpbGxhcnMgYW5kIHRoZWlyIGZpbGxldHMgc2hhbGwgYmUgb2Ygc2lsdmVyLgpBbmQgbGlrZXdpc2UgZm9yIHRoZSBub3J0aCBzaWRlIGluIGxlbmd0aCB0aGVyZSBzaGFsbCBiZSBoYW5naW5ncyBvZiBhbiBodW5kcmVkIGN1Yml0cyBsb25nLCBhbmQgaGlzIHR3ZW50eSBwaWxsYXJzIGFuZCB0aGVpciB0d2VudHkgc29ja2V0cyBvZiBicmFzczsgdGhlIGhvb2tzIG9mIHRoZSBwaWxsYXJzIGFuZCB0aGVpciBmaWxsZXRzIG9mIHNpbHZlci4KQW5kIGZvciB0aGUgYnJlYWR0aCBvZiB0aGUgY291cnQgb24gdGhlIHdlc3Qgc2lkZSBzaGFsbCBiZSBoYW5naW5ncyBvZiBmaWZ0eSBjdWJpdHM6IHRoZWlyIHBpbGxhcnMgdGVuLCBhbmQgdGhlaXIgc29ja2V0cyB0ZW4uCkFuZCB0aGUgYnJlYWR0aCBvZiB0aGUgY291cnQgb24gdGhlIGVhc3Qgc2lkZSBlYXN0d2FyZCBzaGFsbCBiZSBmaWZ0eSBjdWJpdHMuClRoZSBoYW5naW5ncyBvZiBvbmUgc2lkZSBvZiB0aGUgZ2F0ZSBzaGFsbCBiZSBmaWZ0ZWVuIGN1Yml0czogdGhlaXIgcGlsbGFycyB0aHJlZSwgYW5kIHRoZWlyIHNvY2tldHMgdGhyZWUuCkFuZCBvbiB0aGUgb3RoZXIgc2lkZSBzaGFsbCBiZSBoYW5naW5ncyBmaWZ0ZWVuIGN1Yml0czogdGhlaXIgcGlsbGFycyB0aHJlZSwgYW5kIHRoZWlyIHNvY2tldHMgdGhyZWUuCkFuZCBmb3IgdGhlIGdhdGUgb2YgdGhlIGNvdXJ0IHNoYWxsIGJlIGFuIGhhbmdpbmcgb2YgdHdlbnR5IGN1Yml0cywgb2YgYmx1ZSwgYW5kIHB1cnBsZSwgYW5kIHNjYXJsZXQsIGFuZCBmaW5lIHR3aW5lZCBsaW5lbiwgd3JvdWdodCB3aXRoIG5lZWRsZXdvcms6IGFuZCB0aGVpciBwaWxsYXJzIHNoYWxsIGJlIGZvdXIsIGFuZCB0aGVpciBzb2NrZXRzIGZvdXIuCkFsbCB0aGUgcGlsbGFycyByb3VuZCBhYm91dCB0aGUgY291cnQgc2hhbGwgYmUgZmlsbGV0ZWQgd2l0aCBzaWx2ZXI7IHRoZWlyIGhvb2tzIHNoYWxsIGJlIG9mIHNpbHZlciwgYW5kIHRoZWlyIHNvY2tldHMgb2YgYnJhc3MuClRoZSBsZW5ndGggb2YgdGhlIGNvdXJ0IHNoYWxsIGJlIGFuIGh1bmRyZWQgY3ViaXRzLCBhbmQgdGhlIGJyZWFkdGggZmlmdHkgZXZlcnkgd2hlcmUsIGFuZCB0aGUgaGVpZ2h0IGZpdmUgY3ViaXRzIG9mIGZpbmUgdHdpbmVkIGxpbmVuLCBhbmQgdGhlaXIgc29ja2V0cyBvZiBicmFzcy4KQWxsIHRoZSB2ZXNzZWxzIG9mIHRoZSB0YWJlcm5hY2xlIGluIGFsbCB0aGUgc2VydmljZSB0aGVyZW9mLCBhbmQgYWxsIHRoZSBwaW5zIHRoZXJlb2YsIGFuZCBhbGwgdGhlIHBpbnMgb2YgdGhlIGNvdXJ0LCBzaGFsbCBiZSBvZiBicmFzcy4KQW5kIHRob3Ugc2hhbHQgY29tbWFuZCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLCB0aGF0IHRoZXkgYnJpbmcgdGhlZSBwdXJlIG9pbCBvbGl2ZSBiZWF0ZW4gZm9yIHRoZSBsaWdodCwgdG8gY2F1c2UgdGhlIGxhbXAgdG8gYnVybiBhbHdheXMuCkluIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBjb25ncmVnYXRpb24gd2l0aG91dCB0aGUgdmFpbCwgd2hpY2ggaXMgYmVmb3JlIHRoZSB0ZXN0aW1vbnksIEFhcm9uIGFuZCBoaXMgc29ucyBzaGFsbCBvcmRlciBpdCBmcm9tIGV2ZW5pbmcgdG8gbW9ybmluZyBiZWZvcmUgdGhlIExPUkQ6IGl0IHNoYWxsIGJlIGEgc3RhdHV0ZSBmb3IgZXZlciB1bnRvIHRoZWlyIGdlbmVyYXRpb25zIG9uIHRoZSBiZWhhbGYgb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbC4KQW5kIHRha2UgdGhvdSB1bnRvIHRoZWUgQWFyb24gdGh5IGJyb3RoZXIsIGFuZCBoaXMgc29ucyB3aXRoIGhpbSwgZnJvbSBhbW9uZyB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLCB0aGF0IGhlIG1heSBtaW5pc3RlciB1bnRvIG1lIGluIHRoZSBwcmllc3QncyBvZmZpY2UsIGV2ZW4gQWFyb24sIE5hZGFiIGFuZCBBYmlodSwgRWxlYXphciBhbmQgSXRoYW1hciwgQWFyb24ncyBzb25zLgpBbmQgdGhvdSBzaGFsdCBtYWtlIGhvbHkgZ2FybWVudHMgZm9yIEFhcm9uIHRoeSBicm90aGVyIGZvciBnbG9yeSBhbmQgZm9yIGJlYXV0eS4KQW5kIHRob3Ugc2hhbHQgc3BlYWsgdW50byBhbGwgdGhhdCBhcmUgd2lzZSBoZWFydGVkLCB3aG9tIEkgaGF2ZSBmaWxsZWQgd2l0aCB0aGUgc3Bpcml0IG9mIHdpc2RvbSwgdGhhdCB0aGV5IG1heSBtYWtlIEFhcm9uJ3MgZ2FybWVudHMgdG8gY29uc2VjcmF0ZSBoaW0sIHRoYXQgaGUgbWF5IG1pbmlzdGVyIHVudG8gbWUgaW4gdGhlIHByaWVzdCdzIG9mZmljZS4KQW5kIHRoZXNlIGFyZSB0aGUgZ2FybWVudHMgd2hpY2ggdGhleSBzaGFsbCBtYWtlOyBhIGJyZWFzdHBsYXRlLCBhbmQgYW4gZXBob2QsIGFuZCBhIHJvYmUsIGFuZCBhIGJyb2lkZXJlZCBjb2F0LCBhIG1pdHJlLCBhbmQgYSBnaXJkbGU6IGFuZCB0aGV5IHNoYWxsIG1ha2UgaG9seSBnYXJtZW50cyBmb3IgQWFyb24gdGh5IGJyb3RoZXIsIGFuZCBoaXMgc29ucywgdGhhdCBoZSBtYXkgbWluaXN0ZXIgdW50byBtZSBpbiB0aGUgcHJpZXN0J3Mgb2ZmaWNlLgpBbmQgdGhleSBzaGFsbCB0YWtlIGdvbGQsIGFuZCBibHVlLCBhbmQgcHVycGxlLCBhbmQgc2NhcmxldCwgYW5kIGZpbmUgbGluZW4uCkFuZCB0aGV5IHNoYWxsIG1ha2UgdGhlIGVwaG9kIG9mIGdvbGQsIG9mIGJsdWUsIGFuZCBvZiBwdXJwbGUsIG9mIHNjYXJsZXQsIGFuZCBmaW5lIHR3aW5lZCBsaW5lbiwgd2l0aCBjdW5uaW5nIHdvcmsuCkl0IHNoYWxsIGhhdmUgdGhlIHR3byBzaG91bGRlcnBpZWNlcyB0aGVyZW9mIGpvaW5lZCBhdCB0aGUgdHdvIGVkZ2VzIHRoZXJlb2Y7IGFuZCBzbyBpdCBzaGFsbCBiZSBqb2luZWQgdG9nZXRoZXIuCkFuZCB0aGUgY3VyaW91cyBnaXJkbGUgb2YgdGhlIGVwaG9kLCB3aGljaCBpcyB1cG9uIGl0LCBzaGFsbCBiZSBvZiB0aGUgc2FtZSwgYWNjb3JkaW5nIHRvIHRoZSB3b3JrIHRoZXJlb2Y7IGV2ZW4gb2YgZ29sZCwgb2YgYmx1ZSwgYW5kIHB1cnBsZSwgYW5kIHNjYXJsZXQsIGFuZCBmaW5lIHR3aW5lZCBsaW5lbi4KQW5kIHRob3Ugc2hhbHQgdGFrZSB0d28gb255eCBzdG9uZXMsIGFuZCBncmF2ZSBvbiB0aGVtIHRoZSBuYW1lcyBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsOgpTaXggb2YgdGhlaXIgbmFtZXMgb24gb25lIHN0b25lLCBhbmQgdGhlIG90aGVyIHNpeCBuYW1lcyBvZiB0aGUgcmVzdCBvbiB0aGUgb3RoZXIgc3RvbmUsIGFjY29yZGluZyB0byB0aGVpciBiaXJ0aC4KV2l0aCB0aGUgd29yayBvZiBhbiBlbmdyYXZlciBpbiBzdG9uZSwgbGlrZSB0aGUgZW5ncmF2aW5ncyBvZiBhIHNpZ25ldCwgc2hhbHQgdGhvdSBlbmdyYXZlIHRoZSB0d28gc3RvbmVzIHdpdGggdGhlIG5hbWVzIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWw6IHRob3Ugc2hhbHQgbWFrZSB0aGVtIHRvIGJlIHNldCBpbiBvdWNoZXMgb2YgZ29sZC4KQW5kIHRob3Ugc2hhbHQgcHV0IHRoZSB0d28gc3RvbmVzIHVwb24gdGhlIHNob3VsZGVycyBvZiB0aGUgZXBob2QgZm9yIHN0b25lcyBvZiBtZW1vcmlhbCB1bnRvIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWw6IGFuZCBBYXJvbiBzaGFsbCBiZWFyIHRoZWlyIG5hbWVzIGJlZm9yZSB0aGUgTE9SRCB1cG9uIGhpcyB0d28gc2hvdWxkZXJzIGZvciBhIG1lbW9yaWFsLgpBbmQgdGhvdSBzaGFsdCBtYWtlIG91Y2hlcyBvZiBnb2xkOwpBbmQgdHdvIGNoYWlucyBvZiBwdXJlIGdvbGQgYXQgdGhlIGVuZHM7IG9mIHdyZWF0aGVuIHdvcmsgc2hhbHQgdGhvdSBtYWtlIHRoZW0sIGFuZCBmYXN0ZW4gdGhlIHdyZWF0aGVuIGNoYWlucyB0byB0aGUgb3VjaGVzLgpBbmQgdGhvdSBzaGFsdCBtYWtlIHRoZSBicmVhc3RwbGF0ZSBvZiBqdWRnbWVudCB3aXRoIGN1bm5pbmcgd29yazsgYWZ0ZXIgdGhlIHdvcmsgb2YgdGhlIGVwaG9kIHRob3Ugc2hhbHQgbWFrZSBpdDsgb2YgZ29sZCwgb2YgYmx1ZSwgYW5kIG9mIHB1cnBsZSwgYW5kIG9mIHNjYXJsZXQsIGFuZCBvZiBmaW5lIHR3aW5lZCBsaW5lbiwgc2hhbHQgdGhvdSBtYWtlIGl0LgpGb3Vyc3F1YXJlIGl0IHNoYWxsIGJlIGJlaW5nIGRvdWJsZWQ7IGEgc3BhbiBzaGFsbCBiZSB0aGUgbGVuZ3RoIHRoZXJlb2YsIGFuZCBhIHNwYW4gc2hhbGwgYmUgdGhlIGJyZWFkdGggdGhlcmVvZi4KQW5kIHRob3Ugc2hhbHQgc2V0IGluIGl0IHNldHRpbmdzIG9mIHN0b25lcywgZXZlbiBmb3VyIHJvd3Mgb2Ygc3RvbmVzOiB0aGUgZmlyc3Qgcm93IHNoYWxsIGJlIGEgc2FyZGl1cywgYSB0b3BheiwgYW5kIGEgY2FyYnVuY2xlOiB0aGlzIHNoYWxsIGJlIHRoZSBmaXJzdCByb3cuCkFuZCB0aGUgc2Vjb25kIHJvdyBzaGFsbCBiZSBhbiBlbWVyYWxkLCBhIHNhcHBoaXJlLCBhbmQgYSBkaWFtb25kLgpBbmQgdGhlIHRoaXJkIHJvdyBhIGxpZ3VyZSwgYW4gYWdhdGUsIGFuZCBhbiBhbWV0aHlzdC4KQW5kIHRoZSBmb3VydGggcm93IGEgYmVyeWwsIGFuZCBhbiBvbnl4LCBhbmQgYSBqYXNwZXI6IHRoZXkgc2hhbGwgYmUgc2V0IGluIGdvbGQgaW4gdGhlaXIgaW5jbG9zaW5ncy4KQW5kIHRoZSBzdG9uZXMgc2hhbGwgYmUgd2l0aCB0aGUgbmFtZXMgb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgdHdlbHZlLCBhY2NvcmRpbmcgdG8gdGhlaXIgbmFtZXMsIGxpa2UgdGhlIGVuZ3JhdmluZ3Mgb2YgYSBzaWduZXQ7IGV2ZXJ5IG9uZSB3aXRoIGhpcyBuYW1lIHNoYWxsIHRoZXkgYmUgYWNjb3JkaW5nIHRvIHRoZSB0d2VsdmUgdHJpYmVzLgpBbmQgdGhvdSBzaGFsdCBtYWtlIHVwb24gdGhlIGJyZWFzdHBsYXRlIGNoYWlucyBhdCB0aGUgZW5kcyBvZiB3cmVhdGhlbiB3b3JrIG9mIHB1cmUgZ29sZC4KQW5kIHRob3Ugc2hhbHQgbWFrZSB1cG9uIHRoZSBicmVhc3RwbGF0ZSB0d28gcmluZ3Mgb2YgZ29sZCwgYW5kIHNoYWx0IHB1dCB0aGUgdHdvIHJpbmdzIG9uIHRoZSB0d28gZW5kcyBvZiB0aGUgYnJlYXN0cGxhdGUuCkFuZCB0aG91IHNoYWx0IHB1dCB0aGUgdHdvIHdyZWF0aGVuIGNoYWlucyBvZiBnb2xkIGluIHRoZSB0d28gcmluZ3Mgd2hpY2ggYXJlIG9uIHRoZSBlbmRzIG9mIHRoZSBicmVhc3RwbGF0ZS4KQW5kIHRoZSBvdGhlciB0d28gZW5kcyBvZiB0aGUgdHdvIHdyZWF0aGVuIGNoYWlucyB0aG91IHNoYWx0IGZhc3RlbiBpbiB0aGUgdHdvIG91Y2hlcywgYW5kIHB1dCB0aGVtIG9uIHRoZSBzaG91bGRlcnBpZWNlcyBvZiB0aGUgZXBob2QgYmVmb3JlIGl0LgpBbmQgdGhvdSBzaGFsdCBtYWtlIHR3byByaW5ncyBvZiBnb2xkLCBhbmQgdGhvdSBzaGFsdCBwdXQgdGhlbSB1cG9uIHRoZSB0d28gZW5kcyBvZiB0aGUgYnJlYXN0cGxhdGUgaW4gdGhlIGJvcmRlciB0aGVyZW9mLCB3aGljaCBpcyBpbiB0aGUgc2lkZSBvZiB0aGUgZXBob2QgaW53YXJkLgpBbmQgdHdvIG90aGVyIHJpbmdzIG9mIGdvbGQgdGhvdSBzaGFsdCBtYWtlLCBhbmQgc2hhbHQgcHV0IHRoZW0gb24gdGhlIHR3byBzaWRlcyBvZiB0aGUgZXBob2QgdW5kZXJuZWF0aCwgdG93YXJkIHRoZSBmb3JlcGFydCB0aGVyZW9mLCBvdmVyIGFnYWluc3QgdGhlIG90aGVyIGNvdXBsaW5nIHRoZXJlb2YsIGFib3ZlIHRoZSBjdXJpb3VzIGdpcmRsZSBvZiB0aGUgZXBob2QuCkFuZCB0aGV5IHNoYWxsIGJpbmQgdGhlIGJyZWFzdHBsYXRlIGJ5IHRoZSByaW5ncyB0aGVyZW9mIHVudG8gdGhlIHJpbmdzIG9mIHRoZSBlcGhvZCB3aXRoIGEgbGFjZSBvZiBibHVlLCB0aGF0IGl0IG1heSBiZSBhYm92ZSB0aGUgY3VyaW91cyBnaXJkbGUgb2YgdGhlIGVwaG9kLCBhbmQgdGhhdCB0aGUgYnJlYXN0cGxhdGUgYmUgbm90IGxvb3NlZCBmcm9tIHRoZSBlcGhvZC4KQW5kIEFhcm9uIHNoYWxsIGJlYXIgdGhlIG5hbWVzIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgaW4gdGhlIGJyZWFzdHBsYXRlIG9mIGp1ZGdtZW50IHVwb24gaGlzIGhlYXJ0LCB3aGVuIGhlIGdvZXRoIGluIHVudG8gdGhlIGhvbHkgcGxhY2UsIGZvciBhIG1lbW9yaWFsIGJlZm9yZSB0aGUgTE9SRCBjb250aW51YWxseS4KQW5kIHRob3Ugc2hhbHQgcHV0IGluIHRoZSBicmVhc3RwbGF0ZSBvZiBqdWRnbWVudCB0aGUgVXJpbSBhbmQgdGhlIFRodW1taW07IGFuZCB0aGV5IHNoYWxsIGJlIHVwb24gQWFyb24ncyBoZWFydCwgd2hlbiBoZSBnb2V0aCBpbiBiZWZvcmUgdGhlIExPUkQ6IGFuZCBBYXJvbiBzaGFsbCBiZWFyIHRoZSBqdWRnbWVudCBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIHVwb24gaGlzIGhlYXJ0IGJlZm9yZSB0aGUgTE9SRCBjb250aW51YWxseS4KQW5kIHRob3Ugc2hhbHQgbWFrZSB0aGUgcm9iZSBvZiB0aGUgZXBob2QgYWxsIG9mIGJsdWUuCkFuZCB0aGVyZSBzaGFsbCBiZSBhbiBob2xlIGluIHRoZSB0b3Agb2YgaXQsIGluIHRoZSBtaWRzdCB0aGVyZW9mOiBpdCBzaGFsbCBoYXZlIGEgYmluZGluZyBvZiB3b3ZlbiB3b3JrIHJvdW5kIGFib3V0IHRoZSBob2xlIG9mIGl0LCBhcyBpdCB3ZXJlIHRoZSBob2xlIG9mIGFuIGhhYmVyZ2VvbiwgdGhhdCBpdCBiZSBub3QgcmVudC4KQW5kIGJlbmVhdGggdXBvbiB0aGUgaGVtIG9mIGl0IHRob3Ugc2hhbHQgbWFrZSBwb21lZ3JhbmF0ZXMgb2YgYmx1ZSwgYW5kIG9mIHB1cnBsZSwgYW5kIG9mIHNjYXJsZXQsIHJvdW5kIGFib3V0IHRoZSBoZW0gdGhlcmVvZjsgYW5kIGJlbGxzIG9mIGdvbGQgYmV0d2VlbiB0aGVtIHJvdW5kIGFib3V0OgpBIGdvbGRlbiBiZWxsIGFuZCBhIHBvbWVncmFuYXRlLCBhIGdvbGRlbiBiZWxsIGFuZCBhIHBvbWVncmFuYXRlLCB1cG9uIHRoZSBoZW0gb2YgdGhlIHJvYmUgcm91bmQgYWJvdXQuCkFuZCBpdCBzaGFsbCBiZSB1cG9uIEFhcm9uIHRvIG1pbmlzdGVyOiBhbmQgaGlzIHNvdW5kIHNoYWxsIGJlIGhlYXJkIHdoZW4gaGUgZ29ldGggaW4gdW50byB0aGUgaG9seSBwbGFjZSBiZWZvcmUgdGhlIExPUkQsIGFuZCB3aGVuIGhlIGNvbWV0aCBvdXQsIHRoYXQgaGUgZGllIG5vdC4KQW5kIHRob3Ugc2hhbHQgbWFrZSBhIHBsYXRlIG9mIHB1cmUgZ29sZCwgYW5kIGdyYXZlIHVwb24gaXQsIGxpa2UgdGhlIGVuZ3JhdmluZ3Mgb2YgYSBzaWduZXQsIEhPTElORVNTIFRPIFRIRSBMT1JELgpBbmQgdGhvdSBzaGFsdCBwdXQgaXQgb24gYSBibHVlIGxhY2UsIHRoYXQgaXQgbWF5IGJlIHVwb24gdGhlIG1pdHJlOyB1cG9uIHRoZSBmb3JlZnJvbnQgb2YgdGhlIG1pdHJlIGl0IHNoYWxsIGJlLgpBbmQgaXQgc2hhbGwgYmUgdXBvbiBBYXJvbidzIGZvcmVoZWFkLCB0aGF0IEFhcm9uIG1heSBiZWFyIHRoZSBpbmlxdWl0eSBvZiB0aGUgaG9seSB0aGluZ3MsIHdoaWNoIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgc2hhbGwgaGFsbG93IGluIGFsbCB0aGVpciBob2x5IGdpZnRzOyBhbmQgaXQgc2hhbGwgYmUgYWx3YXlzIHVwb24gaGlzIGZvcmVoZWFkLCB0aGF0IHRoZXkgbWF5IGJlIGFjY2VwdGVkIGJlZm9yZSB0aGUgTE9SRC4KQW5kIHRob3Ugc2hhbHQgZW1icm9pZGVyIHRoZSBjb2F0IG9mIGZpbmUgbGluZW4sIGFuZCB0aG91IHNoYWx0IG1ha2UgdGhlIG1pdHJlIG9mIGZpbmUgbGluZW4sIGFuZCB0aG91IHNoYWx0IG1ha2UgdGhlIGdpcmRsZSBvZiBuZWVkbGV3b3JrLgpBbmQgZm9yIEFhcm9uJ3Mgc29ucyB0aG91IHNoYWx0IG1ha2UgY29hdHMsIGFuZCB0aG91IHNoYWx0IG1ha2UgZm9yIHRoZW0gZ2lyZGxlcywgYW5kIGJvbm5ldHMgc2hhbHQgdGhvdSBtYWtlIGZvciB0aGVtLCBmb3IgZ2xvcnkgYW5kIGZvciBiZWF1dHkuCkFuZCB0aG91IHNoYWx0IHB1dCB0aGVtIHVwb24gQWFyb24gdGh5IGJyb3RoZXIsIGFuZCBoaXMgc29ucyB3aXRoIGhpbTsgYW5kIHNoYWx0IGFub2ludCB0aGVtLCBhbmQgY29uc2VjcmF0ZSB0aGVtLCBhbmQgc2FuY3RpZnkgdGhlbSwgdGhhdCB0aGV5IG1heSBtaW5pc3RlciB1bnRvIG1lIGluIHRoZSBwcmllc3QncyBvZmZpY2UuCkFuZCB0aG91IHNoYWx0IG1ha2UgdGhlbSBsaW5lbiBicmVlY2hlcyB0byBjb3ZlciB0aGVpciBuYWtlZG5lc3M7IGZyb20gdGhlIGxvaW5zIGV2ZW4gdW50byB0aGUgdGhpZ2hzIHRoZXkgc2hhbGwgcmVhY2g6CkFuZCB0aGV5IHNoYWxsIGJlIHVwb24gQWFyb24sIGFuZCB1cG9uIGhpcyBzb25zLCB3aGVuIHRoZXkgY29tZSBpbiB1bnRvIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBjb25ncmVnYXRpb24sIG9yIHdoZW4gdGhleSBjb21lIG5lYXIgdW50byB0aGUgYWx0YXIgdG8gbWluaXN0ZXIgaW4gdGhlIGhvbHkgcGxhY2U7IHRoYXQgdGhleSBiZWFyIG5vdCBpbmlxdWl0eSwgYW5kIGRpZTogaXQgc2hhbGwgYmUgYSBzdGF0dXRlIGZvciBldmVyIHVudG8gaGltIGFuZCBoaXMgc2VlZCBhZnRlciBoaW0uCkFuZCB0aGlzIGlzIHRoZSB0aGluZyB0aGF0IHRob3Ugc2hhbHQgZG8gdW50byB0aGVtIHRvIGhhbGxvdyB0aGVtLCB0byBtaW5pc3RlciB1bnRvIG1lIGluIHRoZSBwcmllc3QncyBvZmZpY2U6IFRha2Ugb25lIHlvdW5nIGJ1bGxvY2ssIGFuZCB0d28gcmFtcyB3aXRob3V0IGJsZW1pc2gsCkFuZCB1bmxlYXZlbmVkIGJyZWFkLCBhbmQgY2FrZXMgdW5sZWF2ZW5lZCB0ZW1wZXJlZCB3aXRoIG9pbCwgYW5kIHdhZmVycyB1bmxlYXZlbmVkIGFub2ludGVkIHdpdGggb2lsOiBvZiB3aGVhdGVuIGZsb3VyIHNoYWx0IHRob3UgbWFrZSB0aGVtLgpBbmQgdGhvdSBzaGFsdCBwdXQgdGhlbSBpbnRvIG9uZSBiYXNrZXQsIGFuZCBicmluZyB0aGVtIGluIHRoZSBiYXNrZXQsIHdpdGggdGhlIGJ1bGxvY2sgYW5kIHRoZSB0d28gcmFtcy4KQW5kIEFhcm9uIGFuZCBoaXMgc29ucyB0aG91IHNoYWx0IGJyaW5nIHVudG8gdGhlIGRvb3Igb2YgdGhlIHRhYmVybmFjbGUgb2YgdGhlIGNvbmdyZWdhdGlvbiwgYW5kIHNoYWx0IHdhc2ggdGhlbSB3aXRoIHdhdGVyLgpBbmQgdGhvdSBzaGFsdCB0YWtlIHRoZSBnYXJtZW50cywgYW5kIHB1dCB1cG9uIEFhcm9uIHRoZSBjb2F0LCBhbmQgdGhlIHJvYmUgb2YgdGhlIGVwaG9kLCBhbmQgdGhlIGVwaG9kLCBhbmQgdGhlIGJyZWFzdHBsYXRlLCBhbmQgZ2lyZCBoaW0gd2l0aCB0aGUgY3VyaW91cyBnaXJkbGUgb2YgdGhlIGVwaG9kOgpBbmQgdGhvdSBzaGFsdCBwdXQgdGhlIG1pdHJlIHVwb24gaGlzIGhlYWQsIGFuZCBwdXQgdGhlIGhvbHkgY3Jvd24gdXBvbiB0aGUgbWl0cmUuClRoZW4gc2hhbHQgdGhvdSB0YWtlIHRoZSBhbm9pbnRpbmcgb2lsLCBhbmQgcG91ciBpdCB1cG9uIGhpcyBoZWFkLCBhbmQgYW5vaW50IGhpbS4KQW5kIHRob3Ugc2hhbHQgYnJpbmcgaGlzIHNvbnMsIGFuZCBwdXQgY29hdHMgdXBvbiB0aGVtLgpBbmQgdGhvdSBzaGFsdCBnaXJkIHRoZW0gd2l0aCBnaXJkbGVzLCBBYXJvbiBhbmQgaGlzIHNvbnMsIGFuZCBwdXQgdGhlIGJvbm5ldHMgb24gdGhlbTogYW5kIHRoZSBwcmllc3QncyBvZmZpY2Ugc2hhbGwgYmUgdGhlaXJzIGZvciBhIHBlcnBldHVhbCBzdGF0dXRlOiBhbmQgdGhvdSBzaGFsdCBjb25zZWNyYXRlIEFhcm9uIGFuZCBoaXMgc29ucy4KQW5kIHRob3Ugc2hhbHQgY2F1c2UgYSBidWxsb2NrIHRvIGJlIGJyb3VnaHQgYmVmb3JlIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBjb25ncmVnYXRpb246IGFuZCBBYXJvbiBhbmQgaGlzIHNvbnMgc2hhbGwgcHV0IHRoZWlyIGhhbmRzIHVwb24gdGhlIGhlYWQgb2YgdGhlIGJ1bGxvY2suCkFuZCB0aG91IHNoYWx0IGtpbGwgdGhlIGJ1bGxvY2sgYmVmb3JlIHRoZSBMT1JELCBieSB0aGUgZG9vciBvZiB0aGUgdGFiZXJuYWNsZSBvZiB0aGUgY29uZ3JlZ2F0aW9uLgpBbmQgdGhvdSBzaGFsdCB0YWtlIG9mIHRoZSBibG9vZCBvZiB0aGUgYnVsbG9jaywgYW5kIHB1dCBpdCB1cG9uIHRoZSBob3JucyBvZiB0aGUgYWx0YXIgd2l0aCB0aHkgZmluZ2VyLCBhbmQgcG91ciBhbGwgdGhlIGJsb29kIGJlc2lkZSB0aGUgYm90dG9tIG9mIHRoZSBhbHRhci4KQW5kIHRob3Ugc2hhbHQgdGFrZSBhbGwgdGhlIGZhdCB0aGF0IGNvdmVyZXRoIHRoZSBpbndhcmRzLCBhbmQgdGhlIGNhdWwgdGhhdCBpcyBhYm92ZSB0aGUgbGl2ZXIsIGFuZCB0aGUgdHdvIGtpZG5leXMsIGFuZCB0aGUgZmF0IHRoYXQgaXMgdXBvbiB0aGVtLCBhbmQgYnVybiB0aGVtIHVwb24gdGhlIGFsdGFyLgpCdXQgdGhlIGZsZXNoIG9mIHRoZSBidWxsb2NrLCBhbmQgaGlzIHNraW4sIGFuZCBoaXMgZHVuZywgc2hhbHQgdGhvdSBidXJuIHdpdGggZmlyZSB3aXRob3V0IHRoZSBjYW1wOiBpdCBpcyBhIHNpbiBvZmZlcmluZy4KVGhvdSBzaGFsdCBhbHNvIHRha2Ugb25lIHJhbTsgYW5kIEFhcm9uIGFuZCBoaXMgc29ucyBzaGFsbCBwdXQgdGhlaXIgaGFuZHMgdXBvbiB0aGUgaGVhZCBvZiB0aGUgcmFtLgpBbmQgdGhvdSBzaGFsdCBzbGF5IHRoZSByYW0sIGFuZCB0aG91IHNoYWx0IHRha2UgaGlzIGJsb29kLCBhbmQgc3ByaW5rbGUgaXQgcm91bmQgYWJvdXQgdXBvbiB0aGUgYWx0YXIuCkFuZCB0aG91IHNoYWx0IGN1dCB0aGUgcmFtIGluIHBpZWNlcywgYW5kIHdhc2ggdGhlIGlud2FyZHMgb2YgaGltLCBhbmQgaGlzIGxlZ3MsIGFuZCBwdXQgdGhlbSB1bnRvIGhpcyBwaWVjZXMsIGFuZCB1bnRvIGhpcyBoZWFkLgpBbmQgdGhvdSBzaGFsdCBidXJuIHRoZSB3aG9sZSByYW0gdXBvbiB0aGUgYWx0YXI6IGl0IGlzIGEgYnVybnQgb2ZmZXJpbmcgdW50byB0aGUgTE9SRDogaXQgaXMgYSBzd2VldCBzYXZvdXIsIGFuIG9mZmVyaW5nIG1hZGUgYnkgZmlyZSB1bnRvIHRoZSBMT1JELgpBbmQgdGhvdSBzaGFsdCB0YWtlIHRoZSBvdGhlciByYW07IGFuZCBBYXJvbiBhbmQgaGlzIHNvbnMgc2hhbGwgcHV0IHRoZWlyIGhhbmRzIHVwb24gdGhlIGhlYWQgb2YgdGhlIHJhbS4KVGhlbiBzaGFsdCB0aG91IGtpbGwgdGhlIHJhbSwgYW5kIHRha2Ugb2YgaGlzIGJsb29kLCBhbmQgcHV0IGl0IHVwb24gdGhlIHRpcCBvZiB0aGUgcmlnaHQgZWFyIG9mIEFhcm9uLCBhbmQgdXBvbiB0aGUgdGlwIG9mIHRoZSByaWdodCBlYXIgb2YgaGlzIHNvbnMsIGFuZCB1cG9uIHRoZSB0aHVtYiBvZiB0aGVpciByaWdodCBoYW5kLCBhbmQgdXBvbiB0aGUgZ3JlYXQgdG9lIG9mIHRoZWlyIHJpZ2h0IGZvb3QsIGFuZCBzcHJpbmtsZSB0aGUgYmxvb2QgdXBvbiB0aGUgYWx0YXIgcm91bmQgYWJvdXQuCkFuZCB0aG91IHNoYWx0IHRha2Ugb2YgdGhlIGJsb29kIHRoYXQgaXMgdXBvbiB0aGUgYWx0YXIsIGFuZCBvZiB0aGUgYW5vaW50aW5nIG9pbCwgYW5kIHNwcmlua2xlIGl0IHVwb24gQWFyb24sIGFuZCB1cG9uIGhpcyBnYXJtZW50cywgYW5kIHVwb24gaGlzIHNvbnMsIGFuZCB1cG9uIHRoZSBnYXJtZW50cyBvZiBoaXMgc29ucyB3aXRoIGhpbTogYW5kIGhlIHNoYWxsIGJlIGhhbGxvd2VkLCBhbmQgaGlzIGdhcm1lbnRzLCBhbmQgaGlzIHNvbnMsIGFuZCBoaXMgc29ucycgZ2FybWVudHMgd2l0aCBoaW0uCkFsc28gdGhvdSBzaGFsdCB0YWtlIG9mIHRoZSByYW0gdGhlIGZhdCBhbmQgdGhlIHJ1bXAsIGFuZCB0aGUgZmF0IHRoYXQgY292ZXJldGggdGhlIGlud2FyZHMsIGFuZCB0aGUgY2F1bCBhYm92ZSB0aGUgbGl2ZXIsIGFuZCB0aGUgdHdvIGtpZG5leXMsIGFuZCB0aGUgZmF0IHRoYXQgaXMgdXBvbiB0aGVtLCBhbmQgdGhlIHJpZ2h0IHNob3VsZGVyOyBmb3IgaXQgaXMgYSByYW0gb2YgY29uc2VjcmF0aW9uOgpBbmQgb25lIGxvYWYgb2YgYnJlYWQsIGFuZCBvbmUgY2FrZSBvZiBvaWxlZCBicmVhZCwgYW5kIG9uZSB3YWZlciBvdXQgb2YgdGhlIGJhc2tldCBvZiB0aGUgdW5sZWF2ZW5lZCBicmVhZCB0aGF0IGlzIGJlZm9yZSB0aGUgTE9SRDoKQW5kIHRob3Ugc2hhbHQgcHV0IGFsbCBpbiB0aGUgaGFuZHMgb2YgQWFyb24sIGFuZCBpbiB0aGUgaGFuZHMgb2YgaGlzIHNvbnM7IGFuZCBzaGFsdCB3YXZlIHRoZW0gZm9yIGEgd2F2ZSBvZmZlcmluZyBiZWZvcmUgdGhlIExPUkQuCkFuZCB0aG91IHNoYWx0IHJlY2VpdmUgdGhlbSBvZiB0aGVpciBoYW5kcywgYW5kIGJ1cm4gdGhlbSB1cG9uIHRoZSBhbHRhciBmb3IgYSBidXJudCBvZmZlcmluZywgZm9yIGEgc3dlZXQgc2F2b3VyIGJlZm9yZSB0aGUgTE9SRDogaXQgaXMgYW4gb2ZmZXJpbmcgbWFkZSBieSBmaXJlIHVudG8gdGhlIExPUkQuCkFuZCB0aG91IHNoYWx0IHRha2UgdGhlIGJyZWFzdCBvZiB0aGUgcmFtIG9mIEFhcm9uJ3MgY29uc2VjcmF0aW9uLCBhbmQgd2F2ZSBpdCBmb3IgYSB3YXZlIG9mZmVyaW5nIGJlZm9yZSB0aGUgTE9SRDogYW5kIGl0IHNoYWxsIGJlIHRoeSBwYXJ0LgpBbmQgdGhvdSBzaGFsdCBzYW5jdGlmeSB0aGUgYnJlYXN0IG9mIHRoZSB3YXZlIG9mZmVyaW5nLCBhbmQgdGhlIHNob3VsZGVyIG9mIHRoZSBoZWF2ZSBvZmZlcmluZywgd2hpY2ggaXMgd2F2ZWQsIGFuZCB3aGljaCBpcyBoZWF2ZWQgdXAsIG9mIHRoZSByYW0gb2YgdGhlIGNvbnNlY3JhdGlvbiwgZXZlbiBvZiB0aGF0IHdoaWNoIGlzIGZvciBBYXJvbiwgYW5kIG9mIHRoYXQgd2hpY2ggaXMgZm9yIGhpcyBzb25zOgpBbmQgaXQgc2hhbGwgYmUgQWFyb24ncyBhbmQgaGlzIHNvbnMnIGJ5IGEgc3RhdHV0ZSBmb3IgZXZlciBmcm9tIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWw6IGZvciBpdCBpcyBhbiBoZWF2ZSBvZmZlcmluZzogYW5kIGl0IHNoYWxsIGJlIGFuIGhlYXZlIG9mZmVyaW5nIGZyb20gdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBvZiB0aGUgc2FjcmlmaWNlIG9mIHRoZWlyIHBlYWNlIG9mZmVyaW5ncywgZXZlbiB0aGVpciBoZWF2ZSBvZmZlcmluZyB1bnRvIHRoZSBMT1JELgpBbmQgdGhlIGhvbHkgZ2FybWVudHMgb2YgQWFyb24gc2hhbGwgYmUgaGlzIHNvbnMnIGFmdGVyIGhpbSwgdG8gYmUgYW5vaW50ZWQgdGhlcmVpbiwgYW5kIHRvIGJlIGNvbnNlY3JhdGVkIGluIHRoZW0uCkFuZCB0aGF0IHNvbiB0aGF0IGlzIHByaWVzdCBpbiBoaXMgc3RlYWQgc2hhbGwgcHV0IHRoZW0gb24gc2V2ZW4gZGF5cywgd2hlbiBoZSBjb21ldGggaW50byB0aGUgdGFiZXJuYWNsZSBvZiB0aGUgY29uZ3JlZ2F0aW9uIHRvIG1pbmlzdGVyIGluIHRoZSBob2x5IHBsYWNlLgpBbmQgdGhvdSBzaGFsdCB0YWtlIHRoZSByYW0gb2YgdGhlIGNvbnNlY3JhdGlvbiwgYW5kIHNlZXRoZSBoaXMgZmxlc2ggaW4gdGhlIGhvbHkgcGxhY2UuCkFuZCBBYXJvbiBhbmQgaGlzIHNvbnMgc2hhbGwgZWF0IHRoZSBmbGVzaCBvZiB0aGUgcmFtLCBhbmQgdGhlIGJyZWFkIHRoYXQgaXMgaW4gdGhlIGJhc2tldCBieSB0aGUgZG9vciBvZiB0aGUgdGFiZXJuYWNsZSBvZiB0aGUgY29uZ3JlZ2F0aW9uLgpBbmQgdGhleSBzaGFsbCBlYXQgdGhvc2UgdGhpbmdzIHdoZXJld2l0aCB0aGUgYXRvbmVtZW50IHdhcyBtYWRlLCB0byBjb25zZWNyYXRlIGFuZCB0byBzYW5jdGlmeSB0aGVtOiBidXQgYSBzdHJhbmdlciBzaGFsbCBub3QgZWF0IHRoZXJlb2YsIGJlY2F1c2UgdGhleSBhcmUgaG9seS4KQW5kIGlmIG91Z2h0IG9mIHRoZSBmbGVzaCBvZiB0aGUgY29uc2VjcmF0aW9ucywgb3Igb2YgdGhlIGJyZWFkLCByZW1haW4gdW50byB0aGUgbW9ybmluZywgdGhlbiB0aG91IHNoYWx0IGJ1cm4gdGhlIHJlbWFpbmRlciB3aXRoIGZpcmU6IGl0IHNoYWxsIG5vdCBiZSBlYXRlbiwgYmVjYXVzZSBpdCBpcyBob2x5LgpBbmQgdGh1cyBzaGFsdCB0aG91IGRvIHVudG8gQWFyb24sIGFuZCB0byBoaXMgc29ucywgYWNjb3JkaW5nIHRvIGFsbCB0aGluZ3Mgd2hpY2ggSSBoYXZlIGNvbW1hbmRlZCB0aGVlOiBzZXZlbiBkYXlzIHNoYWx0IHRob3UgY29uc2VjcmF0ZSB0aGVtLgpBbmQgdGhvdSBzaGFsdCBvZmZlciBldmVyeSBkYXkgYSBidWxsb2NrIGZvciBhIHNpbiBvZmZlcmluZyBmb3IgYXRvbmVtZW50OiBhbmQgdGhvdSBzaGFsdCBjbGVhbnNlIHRoZSBhbHRhciwgd2hlbiB0aG91IGhhc3QgbWFkZSBhbiBhdG9uZW1lbnQgZm9yIGl0LCBhbmQgdGhvdSBzaGFsdCBhbm9pbnQgaXQsIHRvIHNhbmN0aWZ5IGl0LgpTZXZlbiBkYXlzIHRob3Ugc2hhbHQgbWFrZSBhbiBhdG9uZW1lbnQgZm9yIHRoZSBhbHRhciwgYW5kIHNhbmN0aWZ5IGl0OyBhbmQgaXQgc2hhbGwgYmUgYW4gYWx0YXIgbW9zdCBob2x5OiB3aGF0c29ldmVyIHRvdWNoZXRoIHRoZSBhbHRhciBzaGFsbCBiZSBob2x5LgpOb3cgdGhpcyBpcyB0aGF0IHdoaWNoIHRob3Ugc2hhbHQgb2ZmZXIgdXBvbiB0aGUgYWx0YXI7IHR3byBsYW1icyBvZiB0aGUgZmlyc3QgeWVhciBkYXkgYnkgZGF5IGNvbnRpbnVhbGx5LgpUaGUgb25lIGxhbWIgdGhvdSBzaGFsdCBvZmZlciBpbiB0aGUgbW9ybmluZzsgYW5kIHRoZSBvdGhlciBsYW1iIHRob3Ugc2hhbHQgb2ZmZXIgYXQgZXZlbjoKQW5kIHdpdGggdGhlIG9uZSBsYW1iIGEgdGVudGggZGVhbCBvZiBmbG91ciBtaW5nbGVkIHdpdGggdGhlIGZvdXJ0aCBwYXJ0IG9mIGFuIGhpbiBvZiBiZWF0ZW4gb2lsOyBhbmQgdGhlIGZvdXJ0aCBwYXJ0IG9mIGFuIGhpbiBvZiB3aW5lIGZvciBhIGRyaW5rIG9mZmVyaW5nLgpBbmQgdGhlIG90aGVyIGxhbWIgdGhvdSBzaGFsdCBvZmZlciBhdCBldmVuLCBhbmQgc2hhbHQgZG8gdGhlcmV0byBhY2NvcmRpbmcgdG8gdGhlIG1lYXQgb2ZmZXJpbmcgb2YgdGhlIG1vcm5pbmcsIGFuZCBhY2NvcmRpbmcgdG8gdGhlIGRyaW5rIG9mZmVyaW5nIHRoZXJlb2YsIGZvciBhIHN3ZWV0IHNhdm91ciwgYW4gb2ZmZXJpbmcgbWFkZSBieSBmaXJlIHVudG8gdGhlIExPUkQuClRoaXMgc2hhbGwgYmUgYSBjb250aW51YWwgYnVybnQgb2ZmZXJpbmcgdGhyb3VnaG91dCB5b3VyIGdlbmVyYXRpb25zIGF0IHRoZSBkb29yIG9mIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBjb25ncmVnYXRpb24gYmVmb3JlIHRoZSBMT1JEOiB3aGVyZSBJIHdpbGwgbWVldCB5b3UsIHRvIHNwZWFrIHRoZXJlIHVudG8gdGhlZS4KQW5kIHRoZXJlIEkgd2lsbCBtZWV0IHdpdGggdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgYW5kIHRoZSB0YWJlcm5hY2xlIHNoYWxsIGJlIHNhbmN0aWZpZWQgYnkgbXkgZ2xvcnkuCkFuZCBJIHdpbGwgc2FuY3RpZnkgdGhlIHRhYmVybmFjbGUgb2YgdGhlIGNvbmdyZWdhdGlvbiwgYW5kIHRoZSBhbHRhcjogSSB3aWxsIHNhbmN0aWZ5IGFsc28gYm90aCBBYXJvbiBhbmQgaGlzIHNvbnMsIHRvIG1pbmlzdGVyIHRvIG1lIGluIHRoZSBwcmllc3QncyBvZmZpY2UuCkFuZCBJIHdpbGwgZHdlbGwgYW1vbmcgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgYW5kIHdpbGwgYmUgdGhlaXIgR29kLgpBbmQgdGhleSBzaGFsbCBrbm93IHRoYXQgSSBhbSB0aGUgTE9SRCB0aGVpciBHb2QsIHRoYXQgYnJvdWdodCB0aGVtIGZvcnRoIG91dCBvZiB0aGUgbGFuZCBvZiBFZ3lwdCwgdGhhdCBJIG1heSBkd2VsbCBhbW9uZyB0aGVtOiBJIGFtIHRoZSBMT1JEIHRoZWlyIEdvZC4KQW5kIHRob3Ugc2hhbHQgbWFrZSBhbiBhbHRhciB0byBidXJuIGluY2Vuc2UgdXBvbjogb2Ygc2hpdHRpbSB3b29kIHNoYWx0IHRob3UgbWFrZSBpdC4KQSBjdWJpdCBzaGFsbCBiZSB0aGUgbGVuZ3RoIHRoZXJlb2YsIGFuZCBhIGN1Yml0IHRoZSBicmVhZHRoIHRoZXJlb2Y7IGZvdXJzcXVhcmUgc2hhbGwgaXQgYmU6IGFuZCB0d28gY3ViaXRzIHNoYWxsIGJlIHRoZSBoZWlnaHQgdGhlcmVvZjogdGhlIGhvcm5zIHRoZXJlb2Ygc2hhbGwgYmUgb2YgdGhlIHNhbWUuCkFuZCB0aG91IHNoYWx0IG92ZXJsYXkgaXQgd2l0aCBwdXJlIGdvbGQsIHRoZSB0b3AgdGhlcmVvZiwgYW5kIHRoZSBzaWRlcyB0aGVyZW9mIHJvdW5kIGFib3V0LCBhbmQgdGhlIGhvcm5zIHRoZXJlb2Y7IGFuZCB0aG91IHNoYWx0IG1ha2UgdW50byBpdCBhIGNyb3duIG9mIGdvbGQgcm91bmQgYWJvdXQuCkFuZCB0d28gZ29sZGVuIHJpbmdzIHNoYWx0IHRob3UgbWFrZSB0byBpdCB1bmRlciB0aGUgY3Jvd24gb2YgaXQsIGJ5IHRoZSB0d28gY29ybmVycyB0aGVyZW9mLCB1cG9uIHRoZSB0d28gc2lkZXMgb2YgaXQgc2hhbHQgdGhvdSBtYWtlIGl0OyBhbmQgdGhleSBzaGFsbCBiZSBmb3IgcGxhY2VzIGZvciB0aGUgc3RhdmVzIHRvIGJlYXIgaXQgd2l0aGFsLgpBbmQgdGhvdSBzaGFsdCBtYWtlIHRoZSBzdGF2ZXMgb2Ygc2hpdHRpbSB3b29kLCBhbmQgb3ZlcmxheSB0aGVtIHdpdGggZ29sZC4KQW5kIHRob3Ugc2hhbHQgcHV0IGl0IGJlZm9yZSB0aGUgdmFpbCB0aGF0IGlzIGJ5IHRoZSBhcmsgb2YgdGhlIHRlc3RpbW9ueSwgYmVmb3JlIHRoZSBtZXJjeSBzZWF0IHRoYXQgaXMgb3ZlciB0aGUgdGVzdGltb255LCB3aGVyZSBJIHdpbGwgbWVldCB3aXRoIHRoZWUuCkFuZCBBYXJvbiBzaGFsbCBidXJuIHRoZXJlb24gc3dlZXQgaW5jZW5zZSBldmVyeSBtb3JuaW5nOiB3aGVuIGhlIGRyZXNzZXRoIHRoZSBsYW1wcywgaGUgc2hhbGwgYnVybiBpbmNlbnNlIHVwb24gaXQuCkFuZCB3aGVuIEFhcm9uIGxpZ2h0ZXRoIHRoZSBsYW1wcyBhdCBldmVuLCBoZSBzaGFsbCBidXJuIGluY2Vuc2UgdXBvbiBpdCwgYSBwZXJwZXR1YWwgaW5jZW5zZSBiZWZvcmUgdGhlIExPUkQgdGhyb3VnaG91dCB5b3VyIGdlbmVyYXRpb25zLgpZZSBzaGFsbCBvZmZlciBubyBzdHJhbmdlIGluY2Vuc2UgdGhlcmVvbiwgbm9yIGJ1cm50IHNhY3JpZmljZSwgbm9yIG1lYXQgb2ZmZXJpbmc7IG5laXRoZXIgc2hhbGwgeWUgcG91ciBkcmluayBvZmZlcmluZyB0aGVyZW9uLgpBbmQgQWFyb24gc2hhbGwgbWFrZSBhbiBhdG9uZW1lbnQgdXBvbiB0aGUgaG9ybnMgb2YgaXQgb25jZSBpbiBhIHllYXIgd2l0aCB0aGUgYmxvb2Qgb2YgdGhlIHNpbiBvZmZlcmluZyBvZiBhdG9uZW1lbnRzOiBvbmNlIGluIHRoZSB5ZWFyIHNoYWxsIGhlIG1ha2UgYXRvbmVtZW50IHVwb24gaXQgdGhyb3VnaG91dCB5b3VyIGdlbmVyYXRpb25zOiBpdCBpcyBtb3N0IGhvbHkgdW50byB0aGUgTE9SRC4KQW5kIHRoZSBMT1JEIHNwYWtlIHVudG8gTW9zZXMsIHNheWluZywKV2hlbiB0aG91IHRha2VzdCB0aGUgc3VtIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgYWZ0ZXIgdGhlaXIgbnVtYmVyLCB0aGVuIHNoYWxsIHRoZXkgZ2l2ZSBldmVyeSBtYW4gYSByYW5zb20gZm9yIGhpcyBzb3VsIHVudG8gdGhlIExPUkQsIHdoZW4gdGhvdSBudW1iZXJlc3QgdGhlbTsgdGhhdCB0aGVyZSBiZSBubyBwbGFndWUgYW1vbmcgdGhlbSwgd2hlbiB0aG91IG51bWJlcmVzdCB0aGVtLgpUaGlzIHRoZXkgc2hhbGwgZ2l2ZSwgZXZlcnkgb25lIHRoYXQgcGFzc2V0aCBhbW9uZyB0aGVtIHRoYXQgYXJlIG51bWJlcmVkLCBoYWxmIGEgc2hla2VsIGFmdGVyIHRoZSBzaGVrZWwgb2YgdGhlIHNhbmN0dWFyeTogKGEgc2hla2VsIGlzIHR3ZW50eSBnZXJhaHM6KSBhbiBoYWxmIHNoZWtlbCBzaGFsbCBiZSB0aGUgb2ZmZXJpbmcgb2YgdGhlIExPUkQuCkV2ZXJ5IG9uZSB0aGF0IHBhc3NldGggYW1vbmcgdGhlbSB0aGF0IGFyZSBudW1iZXJlZCwgZnJvbSB0d2VudHkgeWVhcnMgb2xkIGFuZCBhYm92ZSwgc2hhbGwgZ2l2ZSBhbiBvZmZlcmluZyB1bnRvIHRoZSBMT1JELgpUaGUgcmljaCBzaGFsbCBub3QgZ2l2ZSBtb3JlLCBhbmQgdGhlIHBvb3Igc2hhbGwgbm90IGdpdmUgbGVzcyB0aGFuIGhhbGYgYSBzaGVrZWwsIHdoZW4gdGhleSBnaXZlIGFuIG9mZmVyaW5nIHVudG8gdGhlIExPUkQsIHRvIG1ha2UgYW4gYXRvbmVtZW50IGZvciB5b3VyIHNvdWxzLgpBbmQgdGhvdSBzaGFsdCB0YWtlIHRoZSBhdG9uZW1lbnQgbW9uZXkgb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgYW5kIHNoYWx0IGFwcG9pbnQgaXQgZm9yIHRoZSBzZXJ2aWNlIG9mIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBjb25ncmVnYXRpb247IHRoYXQgaXQgbWF5IGJlIGEgbWVtb3JpYWwgdW50byB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGJlZm9yZSB0aGUgTE9SRCwgdG8gbWFrZSBhbiBhdG9uZW1lbnQgZm9yIHlvdXIgc291bHMuCkFuZCB0aGUgTE9SRCBzcGFrZSB1bnRvIE1vc2VzLCBzYXlpbmcsClRob3Ugc2hhbHQgYWxzbyBtYWtlIGEgbGF2ZXIgb2YgYnJhc3MsIGFuZCBoaXMgZm9vdCBhbHNvIG9mIGJyYXNzLCB0byB3YXNoIHdpdGhhbDogYW5kIHRob3Ugc2hhbHQgcHV0IGl0IGJldHdlZW4gdGhlIHRhYmVybmFjbGUgb2YgdGhlIGNvbmdyZWdhdGlvbiBhbmQgdGhlIGFsdGFyLCBhbmQgdGhvdSBzaGFsdCBwdXQgd2F0ZXIgdGhlcmVpbi4KRm9yIEFhcm9uIGFuZCBoaXMgc29ucyBzaGFsbCB3YXNoIHRoZWlyIGhhbmRzIGFuZCB0aGVpciBmZWV0IHRoZXJlYXQ6CldoZW4gdGhleSBnbyBpbnRvIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBjb25ncmVnYXRpb24sIHRoZXkgc2hhbGwgd2FzaCB3aXRoIHdhdGVyLCB0aGF0IHRoZXkgZGllIG5vdDsgb3Igd2hlbiB0aGV5IGNvbWUgbmVhciB0byB0aGUgYWx0YXIgdG8gbWluaXN0ZXIsIHRvIGJ1cm4gb2ZmZXJpbmcgbWFkZSBieSBmaXJlIHVudG8gdGhlIExPUkQ6ClNvIHRoZXkgc2hhbGwgd2FzaCB0aGVpciBoYW5kcyBhbmQgdGhlaXIgZmVldCwgdGhhdCB0aGV5IGRpZSBub3Q6IGFuZCBpdCBzaGFsbCBiZSBhIHN0YXR1dGUgZm9yIGV2ZXIgdG8gdGhlbSwgZXZlbiB0byBoaW0gYW5kIHRvIGhpcyBzZWVkIHRocm91Z2hvdXQgdGhlaXIgZ2VuZXJhdGlvbnMuCk1vcmVvdmVyIHRoZSBMT1JEIHNwYWtlIHVudG8gTW9zZXMsIHNheWluZywKVGFrZSB0aG91IGFsc28gdW50byB0aGVlIHByaW5jaXBhbCBzcGljZXMsIG9mIHB1cmUgbXlycmggZml2ZSBodW5kcmVkIHNoZWtlbHMsIGFuZCBvZiBzd2VldCBjaW5uYW1vbiBoYWxmIHNvIG11Y2gsIGV2ZW4gdHdvIGh1bmRyZWQgYW5kIGZpZnR5IHNoZWtlbHMsIGFuZCBvZiBzd2VldCBjYWxhbXVzIHR3byBodW5kcmVkIGFuZCBmaWZ0eSBzaGVrZWxzLApBbmQgb2YgY2Fzc2lhIGZpdmUgaHVuZHJlZCBzaGVrZWxzLCBhZnRlciB0aGUgc2hla2VsIG9mIHRoZSBzYW5jdHVhcnksIGFuZCBvZiBvaWwgb2xpdmUgYW4gaGluOgpBbmQgdGhvdSBzaGFsdCBtYWtlIGl0IGFuIG9pbCBvZiBob2x5IG9pbnRtZW50LCBhbiBvaW50bWVudCBjb21wb3VuZCBhZnRlciB0aGUgYXJ0IG9mIHRoZSBhcG90aGVjYXJ5OiBpdCBzaGFsbCBiZSBhbiBob2x5IGFub2ludGluZyBvaWwuCkFuZCB0aG91IHNoYWx0IGFub2ludCB0aGUgdGFiZXJuYWNsZSBvZiB0aGUgY29uZ3JlZ2F0aW9uIHRoZXJld2l0aCwgYW5kIHRoZSBhcmsgb2YgdGhlIHRlc3RpbW9ueSwKQW5kIHRoZSB0YWJsZSBhbmQgYWxsIGhpcyB2ZXNzZWxzLCBhbmQgdGhlIGNhbmRsZXN0aWNrIGFuZCBoaXMgdmVzc2VscywgYW5kIHRoZSBhbHRhciBvZiBpbmNlbnNlLApBbmQgdGhlIGFsdGFyIG9mIGJ1cm50IG9mZmVyaW5nIHdpdGggYWxsIGhpcyB2ZXNzZWxzLCBhbmQgdGhlIGxhdmVyIGFuZCBoaXMgZm9vdC4KQW5kIHRob3Ugc2hhbHQgc2FuY3RpZnkgdGhlbSwgdGhhdCB0aGV5IG1heSBiZSBtb3N0IGhvbHk6IHdoYXRzb2V2ZXIgdG91Y2hldGggdGhlbSBzaGFsbCBiZSBob2x5LgpBbmQgdGhvdSBzaGFsdCBhbm9pbnQgQWFyb24gYW5kIGhpcyBzb25zLCBhbmQgY29uc2VjcmF0ZSB0aGVtLCB0aGF0IHRoZXkgbWF5IG1pbmlzdGVyIHVudG8gbWUgaW4gdGhlIHByaWVzdCdzIG9mZmljZS4KQW5kIHRob3Ugc2hhbHQgc3BlYWsgdW50byB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLCBzYXlpbmcsIFRoaXMgc2hhbGwgYmUgYW4gaG9seSBhbm9pbnRpbmcgb2lsIHVudG8gbWUgdGhyb3VnaG91dCB5b3VyIGdlbmVyYXRpb25zLgpVcG9uIG1hbidzIGZsZXNoIHNoYWxsIGl0IG5vdCBiZSBwb3VyZWQsIG5laXRoZXIgc2hhbGwgeWUgbWFrZSBhbnkgb3RoZXIgbGlrZSBpdCwgYWZ0ZXIgdGhlIGNvbXBvc2l0aW9uIG9mIGl0OiBpdCBpcyBob2x5LCBhbmQgaXQgc2hhbGwgYmUgaG9seSB1bnRvIHlvdS4KV2hvc29ldmVyIGNvbXBvdW5kZXRoIGFueSBsaWtlIGl0LCBvciB3aG9zb2V2ZXIgcHV0dGV0aCBhbnkgb2YgaXQgdXBvbiBhIHN0cmFuZ2VyLCBzaGFsbCBldmVuIGJlIGN1dCBvZmYgZnJvbSBoaXMgcGVvcGxlLgpBbmQgdGhlIExPUkQgc2FpZCB1bnRvIE1vc2VzLCBUYWtlIHVudG8gdGhlZSBzd2VldCBzcGljZXMsIHN0YWN0ZSwgYW5kIG9ueWNoYSwgYW5kIGdhbGJhbnVtOyB0aGVzZSBzd2VldCBzcGljZXMgd2l0aCBwdXJlIGZyYW5raW5jZW5zZTogb2YgZWFjaCBzaGFsbCB0aGVyZSBiZSBhIGxpa2Ugd2VpZ2h0OgpBbmQgdGhvdSBzaGFsdCBtYWtlIGl0IGEgcGVyZnVtZSwgYSBjb25mZWN0aW9uIGFmdGVyIHRoZSBhcnQgb2YgdGhlIGFwb3RoZWNhcnksIHRlbXBlcmVkIHRvZ2V0aGVyLCBwdXJlIGFuZCBob2x5OgpBbmQgdGhvdSBzaGFsdCBiZWF0IHNvbWUgb2YgaXQgdmVyeSBzbWFsbCwgYW5kIHB1dCBvZiBpdCBiZWZvcmUgdGhlIHRlc3RpbW9ueSBpbiB0aGUgdGFiZXJuYWNsZSBvZiB0aGUgY29uZ3JlZ2F0aW9uLCB3aGVyZSBJIHdpbGwgbWVldCB3aXRoIHRoZWU6IGl0IHNoYWxsIGJlIHVudG8geW91IG1vc3QgaG9seS4KQW5kIGFzIGZvciB0aGUgcGVyZnVtZSB3aGljaCB0aG91IHNoYWx0IG1ha2UsIHllIHNoYWxsIG5vdCBtYWtlIHRvIHlvdXJzZWx2ZXMgYWNjb3JkaW5nIHRvIHRoZSBjb21wb3NpdGlvbiB0aGVyZW9mOiBpdCBzaGFsbCBiZSB1bnRvIHRoZWUgaG9seSBmb3IgdGhlIExPUkQuCldob3NvZXZlciBzaGFsbCBtYWtlIGxpa2UgdW50byB0aGF0LCB0byBzbWVsbCB0aGVyZXRvLCBzaGFsbCBldmVuIGJlIGN1dCBvZmYgZnJvbSBoaXMgcGVvcGxlLgpBbmQgdGhlIExPUkQgc3Bha2UgdW50byBNb3Nlcywgc2F5aW5nLApTZWUsIEkgaGF2ZSBjYWxsZWQgYnkgbmFtZSBCZXphbGVlbCB0aGUgc29uIG9mIFVyaSwgdGhlIHNvbiBvZiBIdXIsIG9mIHRoZSB0cmliZSBvZiBKdWRhaDoKQW5kIEkgaGF2ZSBmaWxsZWQgaGltIHdpdGggdGhlIHNwaXJpdCBvZiBHb2QsIGluIHdpc2RvbSwgYW5kIGluIHVuZGVyc3RhbmRpbmcsIGFuZCBpbiBrbm93bGVkZ2UsIGFuZCBpbiBhbGwgbWFubmVyIG9mIHdvcmttYW5zaGlwLApUbyBkZXZpc2UgY3VubmluZyB3b3JrcywgdG8gd29yayBpbiBnb2xkLCBhbmQgaW4gc2lsdmVyLCBhbmQgaW4gYnJhc3MsCkFuZCBpbiBjdXR0aW5nIG9mIHN0b25lcywgdG8gc2V0IHRoZW0sIGFuZCBpbiBjYXJ2aW5nIG9mIHRpbWJlciwgdG8gd29yayBpbiBhbGwgbWFubmVyIG9mIHdvcmttYW5zaGlwLgpBbmQgSSwgYmVob2xkLCBJIGhhdmUgZ2l2ZW4gd2l0aCBoaW0gQWhvbGlhYiwgdGhlIHNvbiBvZiBBaGlzYW1hY2gsIG9mIHRoZSB0cmliZSBvZiBEYW46IGFuZCBpbiB0aGUgaGVhcnRzIG9mIGFsbCB0aGF0IGFyZSB3aXNlIGhlYXJ0ZWQgSSBoYXZlIHB1dCB3aXNkb20sIHRoYXQgdGhleSBtYXkgbWFrZSBhbGwgdGhhdCBJIGhhdmUgY29tbWFuZGVkIHRoZWU7ClRoZSB0YWJlcm5hY2xlIG9mIHRoZSBjb25ncmVnYXRpb24sIGFuZCB0aGUgYXJrIG9mIHRoZSB0ZXN0aW1vbnksIGFuZCB0aGUgbWVyY3kgc2VhdCB0aGF0IGlzIHRoZXJldXBvbiwgYW5kIGFsbCB0aGUgZnVybml0dXJlIG9mIHRoZSB0YWJlcm5hY2xlLApBbmQgdGhlIHRhYmxlIGFuZCBoaXMgZnVybml0dXJlLCBhbmQgdGhlIHB1cmUgY2FuZGxlc3RpY2sgd2l0aCBhbGwgaGlzIGZ1cm5pdHVyZSwgYW5kIHRoZSBhbHRhciBvZiBpbmNlbnNlLApBbmQgdGhlIGFsdGFyIG9mIGJ1cm50IG9mZmVyaW5nIHdpdGggYWxsIGhpcyBmdXJuaXR1cmUsIGFuZCB0aGUgbGF2ZXIgYW5kIGhpcyBmb290LApBbmQgdGhlIGNsb3RocyBvZiBzZXJ2aWNlLCBhbmQgdGhlIGhvbHkgZ2FybWVudHMgZm9yIEFhcm9uIHRoZSBwcmllc3QsIGFuZCB0aGUgZ2FybWVudHMgb2YgaGlzIHNvbnMsIHRvIG1pbmlzdGVyIGluIHRoZSBwcmllc3QncyBvZmZpY2UsCkFuZCB0aGUgYW5vaW50aW5nIG9pbCwgYW5kIHN3ZWV0IGluY2Vuc2UgZm9yIHRoZSBob2x5IHBsYWNlOiBhY2NvcmRpbmcgdG8gYWxsIHRoYXQgSSBoYXZlIGNvbW1hbmRlZCB0aGVlIHNoYWxsIHRoZXkgZG8uCkFuZCB0aGUgTE9SRCBzcGFrZSB1bnRvIE1vc2VzLCBzYXlpbmcsClNwZWFrIHRob3UgYWxzbyB1bnRvIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIHNheWluZywgVmVyaWx5IG15IHNhYmJhdGhzIHllIHNoYWxsIGtlZXA6IGZvciBpdCBpcyBhIHNpZ24gYmV0d2VlbiBtZSBhbmQgeW91IHRocm91Z2hvdXQgeW91ciBnZW5lcmF0aW9uczsgdGhhdCB5ZSBtYXkga25vdyB0aGF0IEkgYW0gdGhlIExPUkQgdGhhdCBkb3RoIHNhbmN0aWZ5IHlvdS4KWWUgc2hhbGwga2VlcCB0aGUgc2FiYmF0aCB0aGVyZWZvcmU7IGZvciBpdCBpcyBob2x5IHVudG8geW91OiBldmVyeSBvbmUgdGhhdCBkZWZpbGV0aCBpdCBzaGFsbCBzdXJlbHkgYmUgcHV0IHRvIGRlYXRoOiBmb3Igd2hvc29ldmVyIGRvZXRoIGFueSB3b3JrIHRoZXJlaW4sIHRoYXQgc291bCBzaGFsbCBiZSBjdXQgb2ZmIGZyb20gYW1vbmcgaGlzIHBlb3BsZS4KU2l4IGRheXMgbWF5IHdvcmsgYmUgZG9uZTsgYnV0IGluIHRoZSBzZXZlbnRoIGlzIHRoZSBzYWJiYXRoIG9mIHJlc3QsIGhvbHkgdG8gdGhlIExPUkQ6IHdob3NvZXZlciBkb2V0aCBhbnkgd29yayBpbiB0aGUgc2FiYmF0aCBkYXksIGhlIHNoYWxsIHN1cmVseSBiZSBwdXQgdG8gZGVhdGguCldoZXJlZm9yZSB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIHNoYWxsIGtlZXAgdGhlIHNhYmJhdGgsIHRvIG9ic2VydmUgdGhlIHNhYmJhdGggdGhyb3VnaG91dCB0aGVpciBnZW5lcmF0aW9ucywgZm9yIGEgcGVycGV0dWFsIGNvdmVuYW50LgpJdCBpcyBhIHNpZ24gYmV0d2VlbiBtZSBhbmQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBmb3IgZXZlcjogZm9yIGluIHNpeCBkYXlzIHRoZSBMT1JEIG1hZGUgaGVhdmVuIGFuZCBlYXJ0aCwgYW5kIG9uIHRoZSBzZXZlbnRoIGRheSBoZSByZXN0ZWQsIGFuZCB3YXMgcmVmcmVzaGVkLgpBbmQgaGUgZ2F2ZSB1bnRvIE1vc2VzLCB3aGVuIGhlIGhhZCBtYWRlIGFuIGVuZCBvZiBjb21tdW5pbmcgd2l0aCBoaW0gdXBvbiBtb3VudCBTaW5haSwgdHdvIHRhYmxlcyBvZiB0ZXN0aW1vbnksIHRhYmxlcyBvZiBzdG9uZSwgd3JpdHRlbiB3aXRoIHRoZSBmaW5nZXIgb2YgR29kLgpBbmQgd2hlbiB0aGUgcGVvcGxlIHNhdyB0aGF0IE1vc2VzIGRlbGF5ZWQgdG8gY29tZSBkb3duIG91dCBvZiB0aGUgbW91bnQsIHRoZSBwZW9wbGUgZ2F0aGVyZWQgdGhlbXNlbHZlcyB0b2dldGhlciB1bnRvIEFhcm9uLCBhbmQgc2FpZCB1bnRvIGhpbSwgVXAsIG1ha2UgdXMgZ29kcywgd2hpY2ggc2hhbGwgZ28gYmVmb3JlIHVzOyBmb3IgYXMgZm9yIHRoaXMgTW9zZXMsIHRoZSBtYW4gdGhhdCBicm91Z2h0IHVzIHVwIG91dCBvZiB0aGUgbGFuZCBvZiBFZ3lwdCwgd2Ugd290IG5vdCB3aGF0IGlzIGJlY29tZSBvZiBoaW0uCkFuZCBBYXJvbiBzYWlkIHVudG8gdGhlbSwgQnJlYWsgb2ZmIHRoZSBnb2xkZW4gZWFycmluZ3MsIHdoaWNoIGFyZSBpbiB0aGUgZWFycyBvZiB5b3VyIHdpdmVzLCBvZiB5b3VyIHNvbnMsIGFuZCBvZiB5b3VyIGRhdWdodGVycywgYW5kIGJyaW5nIHRoZW0gdW50byBtZS4KQW5kIGFsbCB0aGUgcGVvcGxlIGJyYWtlIG9mZiB0aGUgZ29sZGVuIGVhcnJpbmdzIHdoaWNoIHdlcmUgaW4gdGhlaXIgZWFycywgYW5kIGJyb3VnaHQgdGhlbSB1bnRvIEFhcm9uLgpBbmQgaGUgcmVjZWl2ZWQgdGhlbSBhdCB0aGVpciBoYW5kLCBhbmQgZmFzaGlvbmVkIGl0IHdpdGggYSBncmF2aW5nIHRvb2wsIGFmdGVyIGhlIGhhZCBtYWRlIGl0IGEgbW9sdGVuIGNhbGY6IGFuZCB0aGV5IHNhaWQsIFRoZXNlIGJlIHRoeSBnb2RzLCBPIElzcmFlbCwgd2hpY2ggYnJvdWdodCB0aGVlIHVwIG91dCBvZiB0aGUgbGFuZCBvZiBFZ3lwdC4KQW5kIHdoZW4gQWFyb24gc2F3IGl0LCBoZSBidWlsdCBhbiBhbHRhciBiZWZvcmUgaXQ7IGFuZCBBYXJvbiBtYWRlIHByb2NsYW1hdGlvbiwgYW5kIHNhaWQsIFRvIG1vcnJvdyBpcyBhIGZlYXN0IHRvIHRoZSBMT1JELgpBbmQgdGhleSByb3NlIHVwIGVhcmx5IG9uIHRoZSBtb3Jyb3csIGFuZCBvZmZlcmVkIGJ1cm50IG9mZmVyaW5ncywgYW5kIGJyb3VnaHQgcGVhY2Ugb2ZmZXJpbmdzOyBhbmQgdGhlIHBlb3BsZSBzYXQgZG93biB0byBlYXQgYW5kIHRvIGRyaW5rLCBhbmQgcm9zZSB1cCB0byBwbGF5LgpBbmQgdGhlIExPUkQgc2FpZCB1bnRvIE1vc2VzLCBHbywgZ2V0IHRoZWUgZG93bjsgZm9yIHRoeSBwZW9wbGUsIHdoaWNoIHRob3UgYnJvdWdodGVzdCBvdXQgb2YgdGhlIGxhbmQgb2YgRWd5cHQsIGhhdmUgY29ycnVwdGVkIHRoZW1zZWx2ZXM6ClRoZXkgaGF2ZSB0dXJuZWQgYXNpZGUgcXVpY2tseSBvdXQgb2YgdGhlIHdheSB3aGljaCBJIGNvbW1hbmRlZCB0aGVtOiB0aGV5IGhhdmUgbWFkZSB0aGVtIGEgbW9sdGVuIGNhbGYsIGFuZCBoYXZlIHdvcnNoaXBwZWQgaXQsIGFuZCBoYXZlIHNhY3JpZmljZWQgdGhlcmV1bnRvLCBhbmQgc2FpZCwgVGhlc2UgYmUgdGh5IGdvZHMsIE8gSXNyYWVsLCB3aGljaCBoYXZlIGJyb3VnaHQgdGhlZSB1cCBvdXQgb2YgdGhlIGxhbmQgb2YgRWd5cHQuCkFuZCB0aGUgTE9SRCBzYWlkIHVudG8gTW9zZXMsIEkgaGF2ZSBzZWVuIHRoaXMgcGVvcGxlLCBhbmQsIGJlaG9sZCwgaXQgaXMgYSBzdGlmZm5lY2tlZCBwZW9wbGU6Ck5vdyB0aGVyZWZvcmUgbGV0IG1lIGFsb25lLCB0aGF0IG15IHdyYXRoIG1heSB3YXggaG90IGFnYWluc3QgdGhlbSwgYW5kIHRoYXQgSSBtYXkgY29uc3VtZSB0aGVtOiBhbmQgSSB3aWxsIG1ha2Ugb2YgdGhlZSBhIGdyZWF0IG5hdGlvbi4KQW5kIE1vc2VzIGJlc291Z2h0IHRoZSBMT1JEIGhpcyBHb2QsIGFuZCBzYWlkLCBMT1JELCB3aHkgZG90aCB0aHkgd3JhdGggd2F4IGhvdCBhZ2FpbnN0IHRoeSBwZW9wbGUsIHdoaWNoIHRob3UgaGFzdCBicm91Z2h0IGZvcnRoIG91dCBvZiB0aGUgbGFuZCBvZiBFZ3lwdCB3aXRoIGdyZWF0IHBvd2VyLCBhbmQgd2l0aCBhIG1pZ2h0eSBoYW5kPwpXaGVyZWZvcmUgc2hvdWxkIHRoZSBFZ3lwdGlhbnMgc3BlYWssIGFuZCBzYXksIEZvciBtaXNjaGllZiBkaWQgaGUgYnJpbmcgdGhlbSBvdXQsIHRvIHNsYXkgdGhlbSBpbiB0aGUgbW91bnRhaW5zLCBhbmQgdG8gY29uc3VtZSB0aGVtIGZyb20gdGhlIGZhY2Ugb2YgdGhlIGVhcnRoPyBUdXJuIGZyb20gdGh5IGZpZXJjZSB3cmF0aCwgYW5kIHJlcGVudCBvZiB0aGlzIGV2aWwgYWdhaW5zdCB0aHkgcGVvcGxlLgpSZW1lbWJlciBBYnJhaGFtLCBJc2FhYywgYW5kIElzcmFlbCwgdGh5IHNlcnZhbnRzLCB0byB3aG9tIHRob3Ugc3dhcmVzdCBieSB0aGluZSBvd24gc2VsZiwgYW5kIHNhaWRzdCB1bnRvIHRoZW0sIEkgd2lsbCBtdWx0aXBseSB5b3VyIHNlZWQgYXMgdGhlIHN0YXJzIG9mIGhlYXZlbiwgYW5kIGFsbCB0aGlzIGxhbmQgdGhhdCBJIGhhdmUgc3Bva2VuIG9mIHdpbGwgSSBnaXZlIHVudG8geW91ciBzZWVkLCBhbmQgdGhleSBzaGFsbCBpbmhlcml0IGl0IGZvciBldmVyLgpBbmQgdGhlIExPUkQgcmVwZW50ZWQgb2YgdGhlIGV2aWwgd2hpY2ggaGUgdGhvdWdodCB0byBkbyB1bnRvIGhpcyBwZW9wbGUuCkFuZCBNb3NlcyB0dXJuZWQsIGFuZCB3ZW50IGRvd24gZnJvbSB0aGUgbW91bnQsIGFuZCB0aGUgdHdvIHRhYmxlcyBvZiB0aGUgdGVzdGltb255IHdlcmUgaW4gaGlzIGhhbmQ6IHRoZSB0YWJsZXMgd2VyZSB3cml0dGVuIG9uIGJvdGggdGhlaXIgc2lkZXM7IG9uIHRoZSBvbmUgc2lkZSBhbmQgb24gdGhlIG90aGVyIHdlcmUgdGhleSB3cml0dGVuLgpBbmQgdGhlIHRhYmxlcyB3ZXJlIHRoZSB3b3JrIG9mIEdvZCwgYW5kIHRoZSB3cml0aW5nIHdhcyB0aGUgd3JpdGluZyBvZiBHb2QsIGdyYXZlbiB1cG9uIHRoZSB0YWJsZXMuCkFuZCB3aGVuIEpvc2h1YSBoZWFyZCB0aGUgbm9pc2Ugb2YgdGhlIHBlb3BsZSBhcyB0aGV5IHNob3V0ZWQsIGhlIHNhaWQgdW50byBNb3NlcywgVGhlcmUgaXMgYSBub2lzZSBvZiB3YXIgaW4gdGhlIGNhbXAuCkFuZCBoZSBzYWlkLCBJdCBpcyBub3QgdGhlIHZvaWNlIG9mIHRoZW0gdGhhdCBzaG91dCBmb3IgbWFzdGVyeSwgbmVpdGhlciBpcyBpdCB0aGUgdm9pY2Ugb2YgdGhlbSB0aGF0IGNyeSBmb3IgYmVpbmcgb3ZlcmNvbWU6IGJ1dCB0aGUgbm9pc2Ugb2YgdGhlbSB0aGF0IHNpbmcgZG8gSSBoZWFyLgpBbmQgaXQgY2FtZSB0byBwYXNzLCBhcyBzb29uIGFzIGhlIGNhbWUgbmlnaCB1bnRvIHRoZSBjYW1wLCB0aGF0IGhlIHNhdyB0aGUgY2FsZiwgYW5kIHRoZSBkYW5jaW5nOiBhbmQgTW9zZXMnIGFuZ2VyIHdheGVkIGhvdCwgYW5kIGhlIGNhc3QgdGhlIHRhYmxlcyBvdXQgb2YgaGlzIGhhbmRzLCBhbmQgYnJha2UgdGhlbSBiZW5lYXRoIHRoZSBtb3VudC4KQW5kIGhlIHRvb2sgdGhlIGNhbGYgd2hpY2ggdGhleSBoYWQgbWFkZSwgYW5kIGJ1cm50IGl0IGluIHRoZSBmaXJlLCBhbmQgZ3JvdW5kIGl0IHRvIHBvd2RlciwgYW5kIHN0cmF3ZWQgaXQgdXBvbiB0aGUgd2F0ZXIsIGFuZCBtYWRlIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgZHJpbmsgb2YgaXQuCkFuZCBNb3NlcyBzYWlkIHVudG8gQWFyb24sIFdoYXQgZGlkIHRoaXMgcGVvcGxlIHVudG8gdGhlZSwgdGhhdCB0aG91IGhhc3QgYnJvdWdodCBzbyBncmVhdCBhIHNpbiB1cG9uIHRoZW0/CkFuZCBBYXJvbiBzYWlkLCBMZXQgbm90IHRoZSBhbmdlciBvZiBteSBsb3JkIHdheCBob3Q6IHRob3Uga25vd2VzdCB0aGUgcGVvcGxlLCB0aGF0IHRoZXkgYXJlIHNldCBvbiBtaXNjaGllZi4KRm9yIHRoZXkgc2FpZCB1bnRvIG1lLCBNYWtlIHVzIGdvZHMsIHdoaWNoIHNoYWxsIGdvIGJlZm9yZSB1czogZm9yIGFzIGZvciB0aGlzIE1vc2VzLCB0aGUgbWFuIHRoYXQgYnJvdWdodCB1cyB1cCBvdXQgb2YgdGhlIGxhbmQgb2YgRWd5cHQsIHdlIHdvdCBub3Qgd2hhdCBpcyBiZWNvbWUgb2YgaGltLgpBbmQgSSBzYWlkIHVudG8gdGhlbSwgV2hvc29ldmVyIGhhdGggYW55IGdvbGQsIGxldCB0aGVtIGJyZWFrIGl0IG9mZi4gU28gdGhleSBnYXZlIGl0IG1lOiB0aGVuIEkgY2FzdCBpdCBpbnRvIHRoZSBmaXJlLCBhbmQgdGhlcmUgY2FtZSBvdXQgdGhpcyBjYWxmLgpBbmQgd2hlbiBNb3NlcyBzYXcgdGhhdCB0aGUgcGVvcGxlIHdlcmUgbmFrZWQ7IChmb3IgQWFyb24gaGFkIG1hZGUgdGhlbSBuYWtlZCB1bnRvIHRoZWlyIHNoYW1lIGFtb25nIHRoZWlyIGVuZW1pZXM6KQpUaGVuIE1vc2VzIHN0b29kIGluIHRoZSBnYXRlIG9mIHRoZSBjYW1wLCBhbmQgc2FpZCwgV2hvIGlzIG9uIHRoZSBMT1JEJ3Mgc2lkZT8gbGV0IGhpbSBjb21lIHVudG8gbWUuIEFuZCBhbGwgdGhlIHNvbnMgb2YgTGV2aSBnYXRoZXJlZCB0aGVtc2VsdmVzIHRvZ2V0aGVyIHVudG8gaGltLgpBbmQgaGUgc2FpZCB1bnRvIHRoZW0sIFRodXMgc2FpdGggdGhlIExPUkQgR29kIG9mIElzcmFlbCwgUHV0IGV2ZXJ5IG1hbiBoaXMgc3dvcmQgYnkgaGlzIHNpZGUsIGFuZCBnbyBpbiBhbmQgb3V0IGZyb20gZ2F0ZSB0byBnYXRlIHRocm91Z2hvdXQgdGhlIGNhbXAsIGFuZCBzbGF5IGV2ZXJ5IG1hbiBoaXMgYnJvdGhlciwgYW5kIGV2ZXJ5IG1hbiBoaXMgY29tcGFuaW9uLCBhbmQgZXZlcnkgbWFuIGhpcyBuZWlnaGJvdXIuCkFuZCB0aGUgY2hpbGRyZW4gb2YgTGV2aSBkaWQgYWNjb3JkaW5nIHRvIHRoZSB3b3JkIG9mIE1vc2VzOiBhbmQgdGhlcmUgZmVsbCBvZiB0aGUgcGVvcGxlIHRoYXQgZGF5IGFib3V0IHRocmVlIHRob3VzYW5kIG1lbi4KRm9yIE1vc2VzIGhhZCBzYWlkLCBDb25zZWNyYXRlIHlvdXJzZWx2ZXMgdG9kYXkgdG8gdGhlIExPUkQsIGV2ZW4gZXZlcnkgbWFuIHVwb24gaGlzIHNvbiwgYW5kIHVwb24gaGlzIGJyb3RoZXI7IHRoYXQgaGUgbWF5IGJlc3RvdyB1cG9uIHlvdSBhIGJsZXNzaW5nIHRoaXMgZGF5LgpBbmQgaXQgY2FtZSB0byBwYXNzIG9uIHRoZSBtb3Jyb3csIHRoYXQgTW9zZXMgc2FpZCB1bnRvIHRoZSBwZW9wbGUsIFllIGhhdmUgc2lubmVkIGEgZ3JlYXQgc2luOiBhbmQgbm93IEkgd2lsbCBnbyB1cCB1bnRvIHRoZSBMT1JEOyBwZXJhZHZlbnR1cmUgSSBzaGFsbCBtYWtlIGFuIGF0b25lbWVudCBmb3IgeW91ciBzaW4uCkFuZCBNb3NlcyByZXR1cm5lZCB1bnRvIHRoZSBMT1JELCBhbmQgc2FpZCwgT2gsIHRoaXMgcGVvcGxlIGhhdmUgc2lubmVkIGEgZ3JlYXQgc2luLCBhbmQgaGF2ZSBtYWRlIHRoZW0gZ29kcyBvZiBnb2xkLgpZZXQgbm93LCBpZiB0aG91IHdpbHQgZm9yZ2l2ZSB0aGVpciBzaW4tLTsgYW5kIGlmIG5vdCwgYmxvdCBtZSwgSSBwcmF5IHRoZWUsIG91dCBvZiB0aHkgYm9vayB3aGljaCB0aG91IGhhc3Qgd3JpdHRlbi4KQW5kIHRoZSBMT1JEIHNhaWQgdW50byBNb3NlcywgV2hvc29ldmVyIGhhdGggc2lubmVkIGFnYWluc3QgbWUsIGhpbSB3aWxsIEkgYmxvdCBvdXQgb2YgbXkgYm9vay4KVGhlcmVmb3JlIG5vdyBnbywgbGVhZCB0aGUgcGVvcGxlIHVudG8gdGhlIHBsYWNlIG9mIHdoaWNoIEkgaGF2ZSBzcG9rZW4gdW50byB0aGVlOiBiZWhvbGQsIG1pbmUgQW5nZWwgc2hhbGwgZ28gYmVmb3JlIHRoZWU6IG5ldmVydGhlbGVzcyBpbiB0aGUgZGF5IHdoZW4gSSB2aXNpdCBJIHdpbGwgdmlzaXQgdGhlaXIgc2luIHVwb24gdGhlbS4KQW5kIHRoZSBMT1JEIHBsYWd1ZWQgdGhlIHBlb3BsZSwgYmVjYXVzZSB0aGV5IG1hZGUgdGhlIGNhbGYsIHdoaWNoIEFhcm9uIG1hZGUuCkFuZCB0aGUgTE9SRCBzYWlkIHVudG8gTW9zZXMsIERlcGFydCwgYW5kIGdvIHVwIGhlbmNlLCB0aG91IGFuZCB0aGUgcGVvcGxlIHdoaWNoIHRob3UgaGFzdCBicm91Z2h0IHVwIG91dCBvZiB0aGUgbGFuZCBvZiBFZ3lwdCwgdW50byB0aGUgbGFuZCB3aGljaCBJIHN3YXJlIHVudG8gQWJyYWhhbSwgdG8gSXNhYWMsIGFuZCB0byBKYWNvYiwgc2F5aW5nLCBVbnRvIHRoeSBzZWVkIHdpbGwgSSBnaXZlIGl0OgpBbmQgSSB3aWxsIHNlbmQgYW4gYW5nZWwgYmVmb3JlIHRoZWU7IGFuZCBJIHdpbGwgZHJpdmUgb3V0IHRoZSBDYW5hYW5pdGUsIHRoZSBBbW9yaXRlLCBhbmQgdGhlIEhpdHRpdGUsIGFuZCB0aGUgUGVyaXp6aXRlLCB0aGUgSGl2aXRlLCBhbmQgdGhlIEplYnVzaXRlOgpVbnRvIGEgbGFuZCBmbG93aW5nIHdpdGggbWlsayBhbmQgaG9uZXk6IGZvciBJIHdpbGwgbm90IGdvIHVwIGluIHRoZSBtaWRzdCBvZiB0aGVlOyBmb3IgdGhvdSBhcnQgYSBzdGlmZm5lY2tlZCBwZW9wbGU6IGxlc3QgSSBjb25zdW1lIHRoZWUgaW4gdGhlIHdheS4KQW5kIHdoZW4gdGhlIHBlb3BsZSBoZWFyZCB0aGVzZSBldmlsIHRpZGluZ3MsIHRoZXkgbW91cm5lZDogYW5kIG5vIG1hbiBkaWQgcHV0IG9uIGhpbSBoaXMgb3JuYW1lbnRzLgpGb3IgdGhlIExPUkQgaGFkIHNhaWQgdW50byBNb3NlcywgU2F5IHVudG8gdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgWWUgYXJlIGEgc3RpZmZuZWNrZWQgcGVvcGxlOiBJIHdpbGwgY29tZSB1cCBpbnRvIHRoZSBtaWRzdCBvZiB0aGVlIGluIGEgbW9tZW50LCBhbmQgY29uc3VtZSB0aGVlOiB0aGVyZWZvcmUgbm93IHB1dCBvZmYgdGh5IG9ybmFtZW50cyBmcm9tIHRoZWUsIHRoYXQgSSBtYXkga25vdyB3aGF0IHRvIGRvIHVudG8gdGhlZS4KQW5kIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgc3RyaXBwZWQgdGhlbXNlbHZlcyBvZiB0aGVpciBvcm5hbWVudHMgYnkgdGhlIG1vdW50IEhvcmViLgpBbmQgTW9zZXMgdG9vayB0aGUgdGFiZXJuYWNsZSwgYW5kIHBpdGNoZWQgaXQgd2l0aG91dCB0aGUgY2FtcCwgYWZhciBvZmYgZnJvbSB0aGUgY2FtcCwgYW5kIGNhbGxlZCBpdCB0aGUgVGFiZXJuYWNsZSBvZiB0aGUgY29uZ3JlZ2F0aW9uLiBBbmQgaXQgY2FtZSB0byBwYXNzLCB0aGF0IGV2ZXJ5IG9uZSB3aGljaCBzb3VnaHQgdGhlIExPUkQgd2VudCBvdXQgdW50byB0aGUgdGFiZXJuYWNsZSBvZiB0aGUgY29uZ3JlZ2F0aW9uLCB3aGljaCB3YXMgd2l0aG91dCB0aGUgY2FtcC4KQW5kIGl0IGNhbWUgdG8gcGFzcywgd2hlbiBNb3NlcyB3ZW50IG91dCB1bnRvIHRoZSB0YWJlcm5hY2xlLCB0aGF0IGFsbCB0aGUgcGVvcGxlIHJvc2UgdXAsIGFuZCBzdG9vZCBldmVyeSBtYW4gYXQgaGlzIHRlbnQgZG9vciwgYW5kIGxvb2tlZCBhZnRlciBNb3NlcywgdW50aWwgaGUgd2FzIGdvbmUgaW50byB0aGUgdGFiZXJuYWNsZS4KQW5kIGl0IGNhbWUgdG8gcGFzcywgYXMgTW9zZXMgZW50ZXJlZCBpbnRvIHRoZSB0YWJlcm5hY2xlLCB0aGUgY2xvdWR5IHBpbGxhciBkZXNjZW5kZWQsIGFuZCBzdG9vZCBhdCB0aGUgZG9vciBvZiB0aGUgdGFiZXJuYWNsZSwgYW5kIHRoZSBMb3JkIHRhbGtlZCB3aXRoIE1vc2VzLgpBbmQgYWxsIHRoZSBwZW9wbGUgc2F3IHRoZSBjbG91ZHkgcGlsbGFyIHN0YW5kIGF0IHRoZSB0YWJlcm5hY2xlIGRvb3I6IGFuZCBhbGwgdGhlIHBlb3BsZSByb3NlIHVwIGFuZCB3b3JzaGlwcGVkLCBldmVyeSBtYW4gaW4gaGlzIHRlbnQgZG9vci4KQW5kIHRoZSBMT1JEIHNwYWtlIHVudG8gTW9zZXMgZmFjZSB0byBmYWNlLCBhcyBhIG1hbiBzcGVha2V0aCB1bnRvIGhpcyBmcmllbmQuIEFuZCBoZSB0dXJuZWQgYWdhaW4gaW50byB0aGUgY2FtcDogYnV0IGhpcyBzZXJ2YW50IEpvc2h1YSwgdGhlIHNvbiBvZiBOdW4sIGEgeW91bmcgbWFuLCBkZXBhcnRlZCBub3Qgb3V0IG9mIHRoZSB0YWJlcm5hY2xlLgpBbmQgTW9zZXMgc2FpZCB1bnRvIHRoZSBMT1JELCBTZWUsIHRob3Ugc2F5ZXN0IHVudG8gbWUsIEJyaW5nIHVwIHRoaXMgcGVvcGxlOiBhbmQgdGhvdSBoYXN0IG5vdCBsZXQgbWUga25vdyB3aG9tIHRob3Ugd2lsdCBzZW5kIHdpdGggbWUuIFlldCB0aG91IGhhc3Qgc2FpZCwgSSBrbm93IHRoZWUgYnkgbmFtZSwgYW5kIHRob3UgaGFzdCBhbHNvIGZvdW5kIGdyYWNlIGluIG15IHNpZ2h0LgpOb3cgdGhlcmVmb3JlLCBJIHByYXkgdGhlZSwgaWYgSSBoYXZlIGZvdW5kIGdyYWNlIGluIHRoeSBzaWdodCwgc2hldyBtZSBub3cgdGh5IHdheSwgdGhhdCBJIG1heSBrbm93IHRoZWUsIHRoYXQgSSBtYXkgZmluZCBncmFjZSBpbiB0aHkgc2lnaHQ6IGFuZCBjb25zaWRlciB0aGF0IHRoaXMgbmF0aW9uIGlzIHRoeSBwZW9wbGUuCkFuZCBoZSBzYWlkLCBNeSBwcmVzZW5jZSBzaGFsbCBnbyB3aXRoIHRoZWUsIGFuZCBJIHdpbGwgZ2l2ZSB0aGVlIHJlc3QuCkFuZCBoZSBzYWlkIHVudG8gaGltLCBJZiB0aHkgcHJlc2VuY2UgZ28gbm90IHdpdGggbWUsIGNhcnJ5IHVzIG5vdCB1cCBoZW5jZS4KRm9yIHdoZXJlaW4gc2hhbGwgaXQgYmUga25vd24gaGVyZSB0aGF0IEkgYW5kIHRoeSBwZW9wbGUgaGF2ZSBmb3VuZCBncmFjZSBpbiB0aHkgc2lnaHQ/IGlzIGl0IG5vdCBpbiB0aGF0IHRob3UgZ29lc3Qgd2l0aCB1cz8gc28gc2hhbGwgd2UgYmUgc2VwYXJhdGVkLCBJIGFuZCB0aHkgcGVvcGxlLCBmcm9tIGFsbCB0aGUgcGVvcGxlIHRoYXQgYXJlIHVwb24gdGhlIGZhY2Ugb2YgdGhlIGVhcnRoLgpBbmQgdGhlIExPUkQgc2FpZCB1bnRvIE1vc2VzLCBJIHdpbGwgZG8gdGhpcyB0aGluZyBhbHNvIHRoYXQgdGhvdSBoYXN0IHNwb2tlbjogZm9yIHRob3UgaGFzdCBmb3VuZCBncmFjZSBpbiBteSBzaWdodCwgYW5kIEkga25vdyB0aGVlIGJ5IG5hbWUuCkFuZCBoZSBzYWlkLCBJIGJlc2VlY2ggdGhlZSwgc2hldyBtZSB0aHkgZ2xvcnkuCkFuZCBoZSBzYWlkLCBJIHdpbGwgbWFrZSBhbGwgbXkgZ29vZG5lc3MgcGFzcyBiZWZvcmUgdGhlZSwgYW5kIEkgd2lsbCBwcm9jbGFpbSB0aGUgbmFtZSBvZiB0aGUgTE9SRCBiZWZvcmUgdGhlZTsgYW5kIHdpbGwgYmUgZ3JhY2lvdXMgdG8gd2hvbSBJIHdpbGwgYmUgZ3JhY2lvdXMsIGFuZCB3aWxsIHNoZXcgbWVyY3kgb24gd2hvbSBJIHdpbGwgc2hldyBtZXJjeS4KQW5kIGhlIHNhaWQsIFRob3UgY2Fuc3Qgbm90IHNlZSBteSBmYWNlOiBmb3IgdGhlcmUgc2hhbGwgbm8gbWFuIHNlZSBtZSwgYW5kIGxpdmUuCkFuZCB0aGUgTE9SRCBzYWlkLCBCZWhvbGQsIHRoZXJlIGlzIGEgcGxhY2UgYnkgbWUsIGFuZCB0aG91IHNoYWx0IHN0YW5kIHVwb24gYSByb2NrOgpBbmQgaXQgc2hhbGwgY29tZSB0byBwYXNzLCB3aGlsZSBteSBnbG9yeSBwYXNzZXRoIGJ5LCB0aGF0IEkgd2lsbCBwdXQgdGhlZSBpbiBhIGNsaWZ0IG9mIHRoZSByb2NrLCBhbmQgd2lsbCBjb3ZlciB0aGVlIHdpdGggbXkgaGFuZCB3aGlsZSBJIHBhc3MgYnk6CkFuZCBJIHdpbGwgdGFrZSBhd2F5IG1pbmUgaGFuZCwgYW5kIHRob3Ugc2hhbHQgc2VlIG15IGJhY2sgcGFydHM6IGJ1dCBteSBmYWNlIHNoYWxsIG5vdCBiZSBzZWVuLgpBbmQgdGhlIExPUkQgc2FpZCB1bnRvIE1vc2VzLCBIZXcgdGhlZSB0d28gdGFibGVzIG9mIHN0b25lIGxpa2UgdW50byB0aGUgZmlyc3Q6IGFuZCBJIHdpbGwgd3JpdGUgdXBvbiB0aGVzZSB0YWJsZXMgdGhlIHdvcmRzIHRoYXQgd2VyZSBpbiB0aGUgZmlyc3QgdGFibGVzLCB3aGljaCB0aG91IGJyYWtlc3QuCkFuZCBiZSByZWFkeSBpbiB0aGUgbW9ybmluZywgYW5kIGNvbWUgdXAgaW4gdGhlIG1vcm5pbmcgdW50byBtb3VudCBTaW5haSwgYW5kIHByZXNlbnQgdGh5c2VsZiB0aGVyZSB0byBtZSBpbiB0aGUgdG9wIG9mIHRoZSBtb3VudC4KQW5kIG5vIG1hbiBzaGFsbCBjb21lIHVwIHdpdGggdGhlZSwgbmVpdGhlciBsZXQgYW55IG1hbiBiZSBzZWVuIHRocm91Z2hvdXQgYWxsIHRoZSBtb3VudDsgbmVpdGhlciBsZXQgdGhlIGZsb2NrcyBub3IgaGVyZHMgZmVlZCBiZWZvcmUgdGhhdCBtb3VudC4KQW5kIGhlIGhld2VkIHR3byB0YWJsZXMgb2Ygc3RvbmUgbGlrZSB1bnRvIHRoZSBmaXJzdDsgYW5kIE1vc2VzIHJvc2UgdXAgZWFybHkgaW4gdGhlIG1vcm5pbmcsIGFuZCB3ZW50IHVwIHVudG8gbW91bnQgU2luYWksIGFzIHRoZSBMT1JEIGhhZCBjb21tYW5kZWQgaGltLCBhbmQgdG9vayBpbiBoaXMgaGFuZCB0aGUgdHdvIHRhYmxlcyBvZiBzdG9uZS4KQW5kIHRoZSBMT1JEIGRlc2NlbmRlZCBpbiB0aGUgY2xvdWQsIGFuZCBzdG9vZCB3aXRoIGhpbSB0aGVyZSwgYW5kIHByb2NsYWltZWQgdGhlIG5hbWUgb2YgdGhlIExPUkQuCkFuZCB0aGUgTE9SRCBwYXNzZWQgYnkgYmVmb3JlIGhpbSwgYW5kIHByb2NsYWltZWQsIFRoZSBMT1JELCBUaGUgTE9SRCBHb2QsIG1lcmNpZnVsIGFuZCBncmFjaW91cywgbG9uZ3N1ZmZlcmluZywgYW5kIGFidW5kYW50IGluIGdvb2RuZXNzIGFuZCB0cnV0aCwKS2VlcGluZyBtZXJjeSBmb3IgdGhvdXNhbmRzLCBmb3JnaXZpbmcgaW5pcXVpdHkgYW5kIHRyYW5zZ3Jlc3Npb24gYW5kIHNpbiwgYW5kIHRoYXQgd2lsbCBieSBubyBtZWFucyBjbGVhciB0aGUgZ3VpbHR5OyB2aXNpdGluZyB0aGUgaW5pcXVpdHkgb2YgdGhlIGZhdGhlcnMgdXBvbiB0aGUgY2hpbGRyZW4sIGFuZCB1cG9uIHRoZSBjaGlsZHJlbidzIGNoaWxkcmVuLCB1bnRvIHRoZSB0aGlyZCBhbmQgdG8gdGhlIGZvdXJ0aCBnZW5lcmF0aW9uLgpBbmQgTW9zZXMgbWFkZSBoYXN0ZSwgYW5kIGJvd2VkIGhpcyBoZWFkIHRvd2FyZCB0aGUgZWFydGgsIGFuZCB3b3JzaGlwcGVkLgpBbmQgaGUgc2FpZCwgSWYgbm93IEkgaGF2ZSBmb3VuZCBncmFjZSBpbiB0aHkgc2lnaHQsIE8gTE9SRCwgbGV0IG15IExPUkQsIEkgcHJheSB0aGVlLCBnbyBhbW9uZyB1czsgZm9yIGl0IGlzIGEgc3RpZmZuZWNrZWQgcGVvcGxlOyBhbmQgcGFyZG9uIG91ciBpbmlxdWl0eSBhbmQgb3VyIHNpbiwgYW5kIHRha2UgdXMgZm9yIHRoaW5lIGluaGVyaXRhbmNlLgpBbmQgaGUgc2FpZCwgQmVob2xkLCBJIG1ha2UgYSBjb3ZlbmFudDogYmVmb3JlIGFsbCB0aHkgcGVvcGxlIEkgd2lsbCBkbyBtYXJ2ZWxzLCBzdWNoIGFzIGhhdmUgbm90IGJlZW4gZG9uZSBpbiBhbGwgdGhlIGVhcnRoLCBub3IgaW4gYW55IG5hdGlvbjogYW5kIGFsbCB0aGUgcGVvcGxlIGFtb25nIHdoaWNoIHRob3UgYXJ0IHNoYWxsIHNlZSB0aGUgd29yayBvZiB0aGUgTE9SRDogZm9yIGl0IGlzIGEgdGVycmlibGUgdGhpbmcgdGhhdCBJIHdpbGwgZG8gd2l0aCB0aGVlLgpPYnNlcnZlIHRob3UgdGhhdCB3aGljaCBJIGNvbW1hbmQgdGhlZSB0aGlzIGRheTogYmVob2xkLCBJIGRyaXZlIG91dCBiZWZvcmUgdGhlZSB0aGUgQW1vcml0ZSwgYW5kIHRoZSBDYW5hYW5pdGUsIGFuZCB0aGUgSGl0dGl0ZSwgYW5kIHRoZSBQZXJpenppdGUsIGFuZCB0aGUgSGl2aXRlLCBhbmQgdGhlIEplYnVzaXRlLgpUYWtlIGhlZWQgdG8gdGh5c2VsZiwgbGVzdCB0aG91IG1ha2UgYSBjb3ZlbmFudCB3aXRoIHRoZSBpbmhhYml0YW50cyBvZiB0aGUgbGFuZCB3aGl0aGVyIHRob3UgZ29lc3QsIGxlc3QgaXQgYmUgZm9yIGEgc25hcmUgaW4gdGhlIG1pZHN0IG9mIHRoZWU6CkJ1dCB5ZSBzaGFsbCBkZXN0cm95IHRoZWlyIGFsdGFycywgYnJlYWsgdGhlaXIgaW1hZ2VzLCBhbmQgY3V0IGRvd24gdGhlaXIgZ3JvdmVzOgpGb3IgdGhvdSBzaGFsdCB3b3JzaGlwIG5vIG90aGVyIGdvZDogZm9yIHRoZSBMT1JELCB3aG9zZSBuYW1lIGlzIEplYWxvdXMsIGlzIGEgamVhbG91cyBHb2Q6Ckxlc3QgdGhvdSBtYWtlIGEgY292ZW5hbnQgd2l0aCB0aGUgaW5oYWJpdGFudHMgb2YgdGhlIGxhbmQsIGFuZCB0aGV5IGdvIGEgd2hvcmluZyBhZnRlciB0aGVpciBnb2RzLCBhbmQgZG8gc2FjcmlmaWNlIHVudG8gdGhlaXIgZ29kcywgYW5kIG9uZSBjYWxsIHRoZWUsIGFuZCB0aG91IGVhdCBvZiBoaXMgc2FjcmlmaWNlOwpBbmQgdGhvdSB0YWtlIG9mIHRoZWlyIGRhdWdodGVycyB1bnRvIHRoeSBzb25zLCBhbmQgdGhlaXIgZGF1Z2h0ZXJzIGdvIGEgd2hvcmluZyBhZnRlciB0aGVpciBnb2RzLCBhbmQgbWFrZSB0aHkgc29ucyBnbyBhIHdob3JpbmcgYWZ0ZXIgdGhlaXIgZ29kcy4KVGhvdSBzaGFsdCBtYWtlIHRoZWUgbm8gbW9sdGVuIGdvZHMuClRoZSBmZWFzdCBvZiB1bmxlYXZlbmVkIGJyZWFkIHNoYWx0IHRob3Uga2VlcC4gU2V2ZW4gZGF5cyB0aG91IHNoYWx0IGVhdCB1bmxlYXZlbmVkIGJyZWFkLCBhcyBJIGNvbW1hbmRlZCB0aGVlLCBpbiB0aGUgdGltZSBvZiB0aGUgbW9udGggQWJpYjogZm9yIGluIHRoZSBtb250aCBBYmliIHRob3UgY2FtZXN0IG91dCBmcm9tIEVneXB0LgpBbGwgdGhhdCBvcGVuZXRoIHRoZSBtYXRyaXggaXMgbWluZTsgYW5kIGV2ZXJ5IGZpcnN0bGluZyBhbW9uZyB0aHkgY2F0dGxlLCB3aGV0aGVyIG94IG9yIHNoZWVwLCB0aGF0IGlzIG1hbGUuCkJ1dCB0aGUgZmlyc3RsaW5nIG9mIGFuIGFzcyB0aG91IHNoYWx0IHJlZGVlbSB3aXRoIGEgbGFtYjogYW5kIGlmIHRob3UgcmVkZWVtIGhpbSBub3QsIHRoZW4gc2hhbHQgdGhvdSBicmVhayBoaXMgbmVjay4gQWxsIHRoZSBmaXJzdGJvcm4gb2YgdGh5IHNvbnMgdGhvdSBzaGFsdCByZWRlZW0uIEFuZCBub25lIHNoYWxsIGFwcGVhciBiZWZvcmUgbWUgZW1wdHkuClNpeCBkYXlzIHRob3Ugc2hhbHQgd29yaywgYnV0IG9uIHRoZSBzZXZlbnRoIGRheSB0aG91IHNoYWx0IHJlc3Q6IGluIGVhcmluZyB0aW1lIGFuZCBpbiBoYXJ2ZXN0IHRob3Ugc2hhbHQgcmVzdC4KQW5kIHRob3Ugc2hhbHQgb2JzZXJ2ZSB0aGUgZmVhc3Qgb2Ygd2Vla3MsIG9mIHRoZSBmaXJzdGZydWl0cyBvZiB3aGVhdCBoYXJ2ZXN0LCBhbmQgdGhlIGZlYXN0IG9mIGluZ2F0aGVyaW5nIGF0IHRoZSB5ZWFyJ3MgZW5kLgpUaHJpY2UgaW4gdGhlIHllYXIgc2hhbGwgYWxsIHlvdXIgbWVuY2hpbGRyZW4gYXBwZWFyIGJlZm9yZSB0aGUgTE9SRCBHb2QsIHRoZSBHb2Qgb2YgSXNyYWVsLgpGb3IgSSB3aWxsIGNhc3Qgb3V0IHRoZSBuYXRpb25zIGJlZm9yZSB0aGVlLCBhbmQgZW5sYXJnZSB0aHkgYm9yZGVyczogbmVpdGhlciBzaGFsbCBhbnkgbWFuIGRlc2lyZSB0aHkgbGFuZCwgd2hlbiB0aG91IHNoYWx0IGdvIHVwIHRvIGFwcGVhciBiZWZvcmUgdGhlIExPUkQgdGh5IEdvZCB0aHJpY2UgaW4gdGhlIHllYXIuClRob3Ugc2hhbHQgbm90IG9mZmVyIHRoZSBibG9vZCBvZiBteSBzYWNyaWZpY2Ugd2l0aCBsZWF2ZW47IG5laXRoZXIgc2hhbGwgdGhlIHNhY3JpZmljZSBvZiB0aGUgZmVhc3Qgb2YgdGhlIHBhc3NvdmVyIGJlIGxlZnQgdW50byB0aGUgbW9ybmluZy4KVGhlIGZpcnN0IG9mIHRoZSBmaXJzdGZydWl0cyBvZiB0aHkgbGFuZCB0aG91IHNoYWx0IGJyaW5nIHVudG8gdGhlIGhvdXNlIG9mIHRoZSBMT1JEIHRoeSBHb2QuIFRob3Ugc2hhbHQgbm90IHNlZXRoZSBhIGtpZCBpbiBoaXMgbW90aGVyJ3MgbWlsay4KQW5kIHRoZSBMT1JEIHNhaWQgdW50byBNb3NlcywgV3JpdGUgdGhvdSB0aGVzZSB3b3JkczogZm9yIGFmdGVyIHRoZSB0ZW5vciBvZiB0aGVzZSB3b3JkcyBJIGhhdmUgbWFkZSBhIGNvdmVuYW50IHdpdGggdGhlZSBhbmQgd2l0aCBJc3JhZWwuCkFuZCBoZSB3YXMgdGhlcmUgd2l0aCB0aGUgTE9SRCBmb3J0eSBkYXlzIGFuZCBmb3J0eSBuaWdodHM7IGhlIGRpZCBuZWl0aGVyIGVhdCBicmVhZCwgbm9yIGRyaW5rIHdhdGVyLiBBbmQgaGUgd3JvdGUgdXBvbiB0aGUgdGFibGVzIHRoZSB3b3JkcyBvZiB0aGUgY292ZW5hbnQsIHRoZSB0ZW4gY29tbWFuZG1lbnRzLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIE1vc2VzIGNhbWUgZG93biBmcm9tIG1vdW50IFNpbmFpIHdpdGggdGhlIHR3byB0YWJsZXMgb2YgdGVzdGltb255IGluIE1vc2VzJyBoYW5kLCB3aGVuIGhlIGNhbWUgZG93biBmcm9tIHRoZSBtb3VudCwgdGhhdCBNb3NlcyB3aXN0IG5vdCB0aGF0IHRoZSBza2luIG9mIGhpcyBmYWNlIHNob25lIHdoaWxlIGhlIHRhbGtlZCB3aXRoIGhpbS4KQW5kIHdoZW4gQWFyb24gYW5kIGFsbCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIHNhdyBNb3NlcywgYmVob2xkLCB0aGUgc2tpbiBvZiBoaXMgZmFjZSBzaG9uZTsgYW5kIHRoZXkgd2VyZSBhZnJhaWQgdG8gY29tZSBuaWdoIGhpbS4KQW5kIE1vc2VzIGNhbGxlZCB1bnRvIHRoZW07IGFuZCBBYXJvbiBhbmQgYWxsIHRoZSBydWxlcnMgb2YgdGhlIGNvbmdyZWdhdGlvbiByZXR1cm5lZCB1bnRvIGhpbTogYW5kIE1vc2VzIHRhbGtlZCB3aXRoIHRoZW0uCkFuZCBhZnRlcndhcmQgYWxsIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgY2FtZSBuaWdoOiBhbmQgaGUgZ2F2ZSB0aGVtIGluIGNvbW1hbmRtZW50IGFsbCB0aGF0IHRoZSBMT1JEIGhhZCBzcG9rZW4gd2l0aCBoaW0gaW4gbW91bnQgU2luYWkuCkFuZCB0aWxsIE1vc2VzIGhhZCBkb25lIHNwZWFraW5nIHdpdGggdGhlbSwgaGUgcHV0IGEgdmFpbCBvbiBoaXMgZmFjZS4KQnV0IHdoZW4gTW9zZXMgd2VudCBpbiBiZWZvcmUgdGhlIExPUkQgdG8gc3BlYWsgd2l0aCBoaW0sIGhlIHRvb2sgdGhlIHZhaWwgb2ZmLCB1bnRpbCBoZSBjYW1lIG91dC4gQW5kIGhlIGNhbWUgb3V0LCBhbmQgc3Bha2UgdW50byB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIHRoYXQgd2hpY2ggaGUgd2FzIGNvbW1hbmRlZC4KQW5kIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgc2F3IHRoZSBmYWNlIG9mIE1vc2VzLCB0aGF0IHRoZSBza2luIG9mIE1vc2VzJyBmYWNlIHNob25lOiBhbmQgTW9zZXMgcHV0IHRoZSB2YWlsIHVwb24gaGlzIGZhY2UgYWdhaW4sIHVudGlsIGhlIHdlbnQgaW4gdG8gc3BlYWsgd2l0aCBoaW0uCkFuZCBNb3NlcyBnYXRoZXJlZCBhbGwgdGhlIGNvbmdyZWdhdGlvbiBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIHRvZ2V0aGVyLCBhbmQgc2FpZCB1bnRvIHRoZW0sIFRoZXNlIGFyZSB0aGUgd29yZHMgd2hpY2ggdGhlIExPUkQgaGF0aCBjb21tYW5kZWQsIHRoYXQgeWUgc2hvdWxkIGRvIHRoZW0uClNpeCBkYXlzIHNoYWxsIHdvcmsgYmUgZG9uZSwgYnV0IG9uIHRoZSBzZXZlbnRoIGRheSB0aGVyZSBzaGFsbCBiZSB0byB5b3UgYW4gaG9seSBkYXksIGEgc2FiYmF0aCBvZiByZXN0IHRvIHRoZSBMT1JEOiB3aG9zb2V2ZXIgZG9ldGggd29yayB0aGVyZWluIHNoYWxsIGJlIHB1dCB0byBkZWF0aC4KWWUgc2hhbGwga2luZGxlIG5vIGZpcmUgdGhyb3VnaG91dCB5b3VyIGhhYml0YXRpb25zIHVwb24gdGhlIHNhYmJhdGggZGF5LgpBbmQgTW9zZXMgc3Bha2UgdW50byBhbGwgdGhlIGNvbmdyZWdhdGlvbiBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLCBzYXlpbmcsIFRoaXMgaXMgdGhlIHRoaW5nIHdoaWNoIHRoZSBMT1JEIGNvbW1hbmRlZCwgc2F5aW5nLApUYWtlIHllIGZyb20gYW1vbmcgeW91IGFuIG9mZmVyaW5nIHVudG8gdGhlIExPUkQ6IHdob3NvZXZlciBpcyBvZiBhIHdpbGxpbmcgaGVhcnQsIGxldCBoaW0gYnJpbmcgaXQsIGFuIG9mZmVyaW5nIG9mIHRoZSBMT1JEOyBnb2xkLCBhbmQgc2lsdmVyLCBhbmQgYnJhc3MsCkFuZCBibHVlLCBhbmQgcHVycGxlLCBhbmQgc2NhcmxldCwgYW5kIGZpbmUgbGluZW4sIGFuZCBnb2F0cycgaGFpciwKQW5kIHJhbXMnIHNraW5zIGR5ZWQgcmVkLCBhbmQgYmFkZ2Vycycgc2tpbnMsIGFuZCBzaGl0dGltIHdvb2QsCkFuZCBvaWwgZm9yIHRoZSBsaWdodCwgYW5kIHNwaWNlcyBmb3IgYW5vaW50aW5nIG9pbCwgYW5kIGZvciB0aGUgc3dlZXQgaW5jZW5zZSwKQW5kIG9ueXggc3RvbmVzLCBhbmQgc3RvbmVzIHRvIGJlIHNldCBmb3IgdGhlIGVwaG9kLCBhbmQgZm9yIHRoZSBicmVhc3RwbGF0ZS4KQW5kIGV2ZXJ5IHdpc2UgaGVhcnRlZCBhbW9uZyB5b3Ugc2hhbGwgY29tZSwgYW5kIG1ha2UgYWxsIHRoYXQgdGhlIExPUkQgaGF0aCBjb21tYW5kZWQ7ClRoZSB0YWJlcm5hY2xlLCBoaXMgdGVudCwgYW5kIGhpcyBjb3ZlcmluZywgaGlzIHRhY2hlcywgYW5kIGhpcyBib2FyZHMsIGhpcyBiYXJzLCBoaXMgcGlsbGFycywgYW5kIGhpcyBzb2NrZXRzLApUaGUgYXJrLCBhbmQgdGhlIHN0YXZlcyB0aGVyZW9mLCB3aXRoIHRoZSBtZXJjeSBzZWF0LCBhbmQgdGhlIHZhaWwgb2YgdGhlIGNvdmVyaW5nLApUaGUgdGFibGUsIGFuZCBoaXMgc3RhdmVzLCBhbmQgYWxsIGhpcyB2ZXNzZWxzLCBhbmQgdGhlIHNoZXdicmVhZCwKVGhlIGNhbmRsZXN0aWNrIGFsc28gZm9yIHRoZSBsaWdodCwgYW5kIGhpcyBmdXJuaXR1cmUsIGFuZCBoaXMgbGFtcHMsIHdpdGggdGhlIG9pbCBmb3IgdGhlIGxpZ2h0LApBbmQgdGhlIGluY2Vuc2UgYWx0YXIsIGFuZCBoaXMgc3RhdmVzLCBhbmQgdGhlIGFub2ludGluZyBvaWwsIGFuZCB0aGUgc3dlZXQgaW5jZW5zZSwgYW5kIHRoZSBoYW5naW5nIGZvciB0aGUgZG9vciBhdCB0aGUgZW50ZXJpbmcgaW4gb2YgdGhlIHRhYmVybmFjbGUsClRoZSBhbHRhciBvZiBidXJudCBvZmZlcmluZywgd2l0aCBoaXMgYnJhc2VuIGdyYXRlLCBoaXMgc3RhdmVzLCBhbmQgYWxsIGhpcyB2ZXNzZWxzLCB0aGUgbGF2ZXIgYW5kIGhpcyBmb290LApUaGUgaGFuZ2luZ3Mgb2YgdGhlIGNvdXJ0LCBoaXMgcGlsbGFycywgYW5kIHRoZWlyIHNvY2tldHMsIGFuZCB0aGUgaGFuZ2luZyBmb3IgdGhlIGRvb3Igb2YgdGhlIGNvdXJ0LApUaGUgcGlucyBvZiB0aGUgdGFiZXJuYWNsZSwgYW5kIHRoZSBwaW5zIG9mIHRoZSBjb3VydCwgYW5kIHRoZWlyIGNvcmRzLApUaGUgY2xvdGhzIG9mIHNlcnZpY2UsIHRvIGRvIHNlcnZpY2UgaW4gdGhlIGhvbHkgcGxhY2UsIHRoZSBob2x5IGdhcm1lbnRzIGZvciBBYXJvbiB0aGUgcHJpZXN0LCBhbmQgdGhlIGdhcm1lbnRzIG9mIGhpcyBzb25zLCB0byBtaW5pc3RlciBpbiB0aGUgcHJpZXN0J3Mgb2ZmaWNlLgpBbmQgYWxsIHRoZSBjb25ncmVnYXRpb24gb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBkZXBhcnRlZCBmcm9tIHRoZSBwcmVzZW5jZSBvZiBNb3Nlcy4KQW5kIHRoZXkgY2FtZSwgZXZlcnkgb25lIHdob3NlIGhlYXJ0IHN0aXJyZWQgaGltIHVwLCBhbmQgZXZlcnkgb25lIHdob20gaGlzIHNwaXJpdCBtYWRlIHdpbGxpbmcsIGFuZCB0aGV5IGJyb3VnaHQgdGhlIExPUkQncyBvZmZlcmluZyB0byB0aGUgd29yayBvZiB0aGUgdGFiZXJuYWNsZSBvZiB0aGUgY29uZ3JlZ2F0aW9uLCBhbmQgZm9yIGFsbCBoaXMgc2VydmljZSwgYW5kIGZvciB0aGUgaG9seSBnYXJtZW50cy4KQW5kIHRoZXkgY2FtZSwgYm90aCBtZW4gYW5kIHdvbWVuLCBhcyBtYW55IGFzIHdlcmUgd2lsbGluZyBoZWFydGVkLCBhbmQgYnJvdWdodCBicmFjZWxldHMsIGFuZCBlYXJyaW5ncywgYW5kIHJpbmdzLCBhbmQgdGFibGV0cywgYWxsIGpld2VscyBvZiBnb2xkOiBhbmQgZXZlcnkgbWFuIHRoYXQgb2ZmZXJlZCBvZmZlcmVkIGFuIG9mZmVyaW5nIG9mIGdvbGQgdW50byB0aGUgTE9SRC4KQW5kIGV2ZXJ5IG1hbiwgd2l0aCB3aG9tIHdhcyBmb3VuZCBibHVlLCBhbmQgcHVycGxlLCBhbmQgc2NhcmxldCwgYW5kIGZpbmUgbGluZW4sIGFuZCBnb2F0cycgaGFpciwgYW5kIHJlZCBza2lucyBvZiByYW1zLCBhbmQgYmFkZ2Vycycgc2tpbnMsIGJyb3VnaHQgdGhlbS4KRXZlcnkgb25lIHRoYXQgZGlkIG9mZmVyIGFuIG9mZmVyaW5nIG9mIHNpbHZlciBhbmQgYnJhc3MgYnJvdWdodCB0aGUgTE9SRCdzIG9mZmVyaW5nOiBhbmQgZXZlcnkgbWFuLCB3aXRoIHdob20gd2FzIGZvdW5kIHNoaXR0aW0gd29vZCBmb3IgYW55IHdvcmsgb2YgdGhlIHNlcnZpY2UsIGJyb3VnaHQgaXQuCkFuZCBhbGwgdGhlIHdvbWVuIHRoYXQgd2VyZSB3aXNlIGhlYXJ0ZWQgZGlkIHNwaW4gd2l0aCB0aGVpciBoYW5kcywgYW5kIGJyb3VnaHQgdGhhdCB3aGljaCB0aGV5IGhhZCBzcHVuLCBib3RoIG9mIGJsdWUsIGFuZCBvZiBwdXJwbGUsIGFuZCBvZiBzY2FybGV0LCBhbmQgb2YgZmluZSBsaW5lbi4KQW5kIGFsbCB0aGUgd29tZW4gd2hvc2UgaGVhcnQgc3RpcnJlZCB0aGVtIHVwIGluIHdpc2RvbSBzcHVuIGdvYXRzJyBoYWlyLgpBbmQgdGhlIHJ1bGVycyBicm91Z2h0IG9ueXggc3RvbmVzLCBhbmQgc3RvbmVzIHRvIGJlIHNldCwgZm9yIHRoZSBlcGhvZCwgYW5kIGZvciB0aGUgYnJlYXN0cGxhdGU7CkFuZCBzcGljZSwgYW5kIG9pbCBmb3IgdGhlIGxpZ2h0LCBhbmQgZm9yIHRoZSBhbm9pbnRpbmcgb2lsLCBhbmQgZm9yIHRoZSBzd2VldCBpbmNlbnNlLgpUaGUgY2hpbGRyZW4gb2YgSXNyYWVsIGJyb3VnaHQgYSB3aWxsaW5nIG9mZmVyaW5nIHVudG8gdGhlIExPUkQsIGV2ZXJ5IG1hbiBhbmQgd29tYW4sIHdob3NlIGhlYXJ0IG1hZGUgdGhlbSB3aWxsaW5nIHRvIGJyaW5nIGZvciBhbGwgbWFubmVyIG9mIHdvcmssIHdoaWNoIHRoZSBMT1JEIGhhZCBjb21tYW5kZWQgdG8gYmUgbWFkZSBieSB0aGUgaGFuZCBvZiBNb3Nlcy4KQW5kIE1vc2VzIHNhaWQgdW50byB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLCBTZWUsIHRoZSBMT1JEIGhhdGggY2FsbGVkIGJ5IG5hbWUgQmV6YWxlZWwgdGhlIHNvbiBvZiBVcmksIHRoZSBzb24gb2YgSHVyLCBvZiB0aGUgdHJpYmUgb2YgSnVkYWg7CkFuZCBoZSBoYXRoIGZpbGxlZCBoaW0gd2l0aCB0aGUgc3Bpcml0IG9mIEdvZCwgaW4gd2lzZG9tLCBpbiB1bmRlcnN0YW5kaW5nLCBhbmQgaW4ga25vd2xlZGdlLCBhbmQgaW4gYWxsIG1hbm5lciBvZiB3b3JrbWFuc2hpcDsKQW5kIHRvIGRldmlzZSBjdXJpb3VzIHdvcmtzLCB0byB3b3JrIGluIGdvbGQsIGFuZCBpbiBzaWx2ZXIsIGFuZCBpbiBicmFzcywKQW5kIGluIHRoZSBjdXR0aW5nIG9mIHN0b25lcywgdG8gc2V0IHRoZW0sIGFuZCBpbiBjYXJ2aW5nIG9mIHdvb2QsIHRvIG1ha2UgYW55IG1hbm5lciBvZiBjdW5uaW5nIHdvcmsuCkFuZCBoZSBoYXRoIHB1dCBpbiBoaXMgaGVhcnQgdGhhdCBoZSBtYXkgdGVhY2gsIGJvdGggaGUsIGFuZCBBaG9saWFiLCB0aGUgc29uIG9mIEFoaXNhbWFjaCwgb2YgdGhlIHRyaWJlIG9mIERhbi4KVGhlbSBoYXRoIGhlIGZpbGxlZCB3aXRoIHdpc2RvbSBvZiBoZWFydCwgdG8gd29yayBhbGwgbWFubmVyIG9mIHdvcmssIG9mIHRoZSBlbmdyYXZlciwgYW5kIG9mIHRoZSBjdW5uaW5nIHdvcmttYW4sIGFuZCBvZiB0aGUgZW1icm9pZGVyZXIsIGluIGJsdWUsIGFuZCBpbiBwdXJwbGUsIGluIHNjYXJsZXQsIGFuZCBpbiBmaW5lIGxpbmVuLCBhbmQgb2YgdGhlIHdlYXZlciwgZXZlbiBvZiB0aGVtIHRoYXQgZG8gYW55IHdvcmssIGFuZCBvZiB0aG9zZSB0aGF0IGRldmlzZSBjdW5uaW5nIHdvcmsuClRoZW4gd3JvdWdodCBCZXphbGVlbCBhbmQgQWhvbGlhYiwgYW5kIGV2ZXJ5IHdpc2UgaGVhcnRlZCBtYW4sIGluIHdob20gdGhlIExPUkQgcHV0IHdpc2RvbSBhbmQgdW5kZXJzdGFuZGluZyB0byBrbm93IGhvdyB0byB3b3JrIGFsbCBtYW5uZXIgb2Ygd29yayBmb3IgdGhlIHNlcnZpY2Ugb2YgdGhlIHNhbmN0dWFyeSwgYWNjb3JkaW5nIHRvIGFsbCB0aGF0IHRoZSBMT1JEIGhhZCBjb21tYW5kZWQuCkFuZCBNb3NlcyBjYWxsZWQgQmV6YWxlZWwgYW5kIEFob2xpYWIsIGFuZCBldmVyeSB3aXNlIGhlYXJ0ZWQgbWFuLCBpbiB3aG9zZSBoZWFydCB0aGUgTE9SRCBoYWQgcHV0IHdpc2RvbSwgZXZlbiBldmVyeSBvbmUgd2hvc2UgaGVhcnQgc3RpcnJlZCBoaW0gdXAgdG8gY29tZSB1bnRvIHRoZSB3b3JrIHRvIGRvIGl0OgpBbmQgdGhleSByZWNlaXZlZCBvZiBNb3NlcyBhbGwgdGhlIG9mZmVyaW5nLCB3aGljaCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGhhZCBicm91Z2h0IGZvciB0aGUgd29yayBvZiB0aGUgc2VydmljZSBvZiB0aGUgc2FuY3R1YXJ5LCB0byBtYWtlIGl0IHdpdGhhbC4gQW5kIHRoZXkgYnJvdWdodCB5ZXQgdW50byBoaW0gZnJlZSBvZmZlcmluZ3MgZXZlcnkgbW9ybmluZy4KQW5kIGFsbCB0aGUgd2lzZSBtZW4sIHRoYXQgd3JvdWdodCBhbGwgdGhlIHdvcmsgb2YgdGhlIHNhbmN0dWFyeSwgY2FtZSBldmVyeSBtYW4gZnJvbSBoaXMgd29yayB3aGljaCB0aGV5IG1hZGU7CkFuZCB0aGV5IHNwYWtlIHVudG8gTW9zZXMsIHNheWluZywgVGhlIHBlb3BsZSBicmluZyBtdWNoIG1vcmUgdGhhbiBlbm91Z2ggZm9yIHRoZSBzZXJ2aWNlIG9mIHRoZSB3b3JrLCB3aGljaCB0aGUgTE9SRCBjb21tYW5kZWQgdG8gbWFrZS4KQW5kIE1vc2VzIGdhdmUgY29tbWFuZG1lbnQsIGFuZCB0aGV5IGNhdXNlZCBpdCB0byBiZSBwcm9jbGFpbWVkIHRocm91Z2hvdXQgdGhlIGNhbXAsIHNheWluZywgTGV0IG5laXRoZXIgbWFuIG5vciB3b21hbiBtYWtlIGFueSBtb3JlIHdvcmsgZm9yIHRoZSBvZmZlcmluZyBvZiB0aGUgc2FuY3R1YXJ5LiBTbyB0aGUgcGVvcGxlIHdlcmUgcmVzdHJhaW5lZCBmcm9tIGJyaW5naW5nLgpGb3IgdGhlIHN0dWZmIHRoZXkgaGFkIHdhcyBzdWZmaWNpZW50IGZvciBhbGwgdGhlIHdvcmsgdG8gbWFrZSBpdCwgYW5kIHRvbyBtdWNoLgpBbmQgZXZlcnkgd2lzZSBoZWFydGVkIG1hbiBhbW9uZyB0aGVtIHRoYXQgd3JvdWdodCB0aGUgd29yayBvZiB0aGUgdGFiZXJuYWNsZSBtYWRlIHRlbiBjdXJ0YWlucyBvZiBmaW5lIHR3aW5lZCBsaW5lbiwgYW5kIGJsdWUsIGFuZCBwdXJwbGUsIGFuZCBzY2FybGV0OiB3aXRoIGNoZXJ1YmltcyBvZiBjdW5uaW5nIHdvcmsgbWFkZSBoZSB0aGVtLgpUaGUgbGVuZ3RoIG9mIG9uZSBjdXJ0YWluIHdhcyB0d2VudHkgYW5kIGVpZ2h0IGN1Yml0cywgYW5kIHRoZSBicmVhZHRoIG9mIG9uZSBjdXJ0YWluIGZvdXIgY3ViaXRzOiB0aGUgY3VydGFpbnMgd2VyZSBhbGwgb2Ygb25lIHNpemUuCkFuZCBoZSBjb3VwbGVkIHRoZSBmaXZlIGN1cnRhaW5zIG9uZSB1bnRvIGFub3RoZXI6IGFuZCB0aGUgb3RoZXIgZml2ZSBjdXJ0YWlucyBoZSBjb3VwbGVkIG9uZSB1bnRvIGFub3RoZXIuCkFuZCBoZSBtYWRlIGxvb3BzIG9mIGJsdWUgb24gdGhlIGVkZ2Ugb2Ygb25lIGN1cnRhaW4gZnJvbSB0aGUgc2VsdmVkZ2UgaW4gdGhlIGNvdXBsaW5nOiBsaWtld2lzZSBoZSBtYWRlIGluIHRoZSB1dHRlcm1vc3Qgc2lkZSBvZiBhbm90aGVyIGN1cnRhaW4sIGluIHRoZSBjb3VwbGluZyBvZiB0aGUgc2Vjb25kLgpGaWZ0eSBsb29wcyBtYWRlIGhlIGluIG9uZSBjdXJ0YWluLCBhbmQgZmlmdHkgbG9vcHMgbWFkZSBoZSBpbiB0aGUgZWRnZSBvZiB0aGUgY3VydGFpbiB3aGljaCB3YXMgaW4gdGhlIGNvdXBsaW5nIG9mIHRoZSBzZWNvbmQ6IHRoZSBsb29wcyBoZWxkIG9uZSBjdXJ0YWluIHRvIGFub3RoZXIuCkFuZCBoZSBtYWRlIGZpZnR5IHRhY2hlcyBvZiBnb2xkLCBhbmQgY291cGxlZCB0aGUgY3VydGFpbnMgb25lIHVudG8gYW5vdGhlciB3aXRoIHRoZSB0YWNoZXM6IHNvIGl0IGJlY2FtZSBvbmUgdGFiZXJuYWNsZS4KQW5kIGhlIG1hZGUgY3VydGFpbnMgb2YgZ29hdHMnIGhhaXIgZm9yIHRoZSB0ZW50IG92ZXIgdGhlIHRhYmVybmFjbGU6IGVsZXZlbiBjdXJ0YWlucyBoZSBtYWRlIHRoZW0uClRoZSBsZW5ndGggb2Ygb25lIGN1cnRhaW4gd2FzIHRoaXJ0eSBjdWJpdHMsIGFuZCBmb3VyIGN1Yml0cyB3YXMgdGhlIGJyZWFkdGggb2Ygb25lIGN1cnRhaW46IHRoZSBlbGV2ZW4gY3VydGFpbnMgd2VyZSBvZiBvbmUgc2l6ZS4KQW5kIGhlIGNvdXBsZWQgZml2ZSBjdXJ0YWlucyBieSB0aGVtc2VsdmVzLCBhbmQgc2l4IGN1cnRhaW5zIGJ5IHRoZW1zZWx2ZXMuCkFuZCBoZSBtYWRlIGZpZnR5IGxvb3BzIHVwb24gdGhlIHV0dGVybW9zdCBlZGdlIG9mIHRoZSBjdXJ0YWluIGluIHRoZSBjb3VwbGluZywgYW5kIGZpZnR5IGxvb3BzIG1hZGUgaGUgdXBvbiB0aGUgZWRnZSBvZiB0aGUgY3VydGFpbiB3aGljaCBjb3VwbGV0aCB0aGUgc2Vjb25kLgpBbmQgaGUgbWFkZSBmaWZ0eSB0YWNoZXMgb2YgYnJhc3MgdG8gY291cGxlIHRoZSB0ZW50IHRvZ2V0aGVyLCB0aGF0IGl0IG1pZ2h0IGJlIG9uZS4KQW5kIGhlIG1hZGUgYSBjb3ZlcmluZyBmb3IgdGhlIHRlbnQgb2YgcmFtcycgc2tpbnMgZHllZCByZWQsIGFuZCBhIGNvdmVyaW5nIG9mIGJhZGdlcnMnIHNraW5zIGFib3ZlIHRoYXQuCkFuZCBoZSBtYWRlIGJvYXJkcyBmb3IgdGhlIHRhYmVybmFjbGUgb2Ygc2hpdHRpbSB3b29kLCBzdGFuZGluZyB1cC4KVGhlIGxlbmd0aCBvZiBhIGJvYXJkIHdhcyB0ZW4gY3ViaXRzLCBhbmQgdGhlIGJyZWFkdGggb2YgYSBib2FyZCBvbmUgY3ViaXQgYW5kIGEgaGFsZi4KT25lIGJvYXJkIGhhZCB0d28gdGVub25zLCBlcXVhbGx5IGRpc3RhbnQgb25lIGZyb20gYW5vdGhlcjogdGh1cyBkaWQgaGUgbWFrZSBmb3IgYWxsIHRoZSBib2FyZHMgb2YgdGhlIHRhYmVybmFjbGUuCkFuZCBoZSBtYWRlIGJvYXJkcyBmb3IgdGhlIHRhYmVybmFjbGU7IHR3ZW50eSBib2FyZHMgZm9yIHRoZSBzb3V0aCBzaWRlIHNvdXRod2FyZDoKQW5kIGZvcnR5IHNvY2tldHMgb2Ygc2lsdmVyIGhlIG1hZGUgdW5kZXIgdGhlIHR3ZW50eSBib2FyZHM7IHR3byBzb2NrZXRzIHVuZGVyIG9uZSBib2FyZCBmb3IgaGlzIHR3byB0ZW5vbnMsIGFuZCB0d28gc29ja2V0cyB1bmRlciBhbm90aGVyIGJvYXJkIGZvciBoaXMgdHdvIHRlbm9ucy4KQW5kIGZvciB0aGUgb3RoZXIgc2lkZSBvZiB0aGUgdGFiZXJuYWNsZSwgd2hpY2ggaXMgdG93YXJkIHRoZSBub3J0aCBjb3JuZXIsIGhlIG1hZGUgdHdlbnR5IGJvYXJkcywKQW5kIHRoZWlyIGZvcnR5IHNvY2tldHMgb2Ygc2lsdmVyOyB0d28gc29ja2V0cyB1bmRlciBvbmUgYm9hcmQsIGFuZCB0d28gc29ja2V0cyB1bmRlciBhbm90aGVyIGJvYXJkLgpBbmQgZm9yIHRoZSBzaWRlcyBvZiB0aGUgdGFiZXJuYWNsZSB3ZXN0d2FyZCBoZSBtYWRlIHNpeCBib2FyZHMuCkFuZCB0d28gYm9hcmRzIG1hZGUgaGUgZm9yIHRoZSBjb3JuZXJzIG9mIHRoZSB0YWJlcm5hY2xlIGluIHRoZSB0d28gc2lkZXMuCkFuZCB0aGV5IHdlcmUgY291cGxlZCBiZW5lYXRoLCBhbmQgY291cGxlZCB0b2dldGhlciBhdCB0aGUgaGVhZCB0aGVyZW9mLCB0byBvbmUgcmluZzogdGh1cyBoZSBkaWQgdG8gYm90aCBvZiB0aGVtIGluIGJvdGggdGhlIGNvcm5lcnMuCkFuZCB0aGVyZSB3ZXJlIGVpZ2h0IGJvYXJkczsgYW5kIHRoZWlyIHNvY2tldHMgd2VyZSBzaXh0ZWVuIHNvY2tldHMgb2Ygc2lsdmVyLCB1bmRlciBldmVyeSBib2FyZCB0d28gc29ja2V0cy4KQW5kIGhlIG1hZGUgYmFycyBvZiBzaGl0dGltIHdvb2Q7IGZpdmUgZm9yIHRoZSBib2FyZHMgb2YgdGhlIG9uZSBzaWRlIG9mIHRoZSB0YWJlcm5hY2xlLApBbmQgZml2ZSBiYXJzIGZvciB0aGUgYm9hcmRzIG9mIHRoZSBvdGhlciBzaWRlIG9mIHRoZSB0YWJlcm5hY2xlLCBhbmQgZml2ZSBiYXJzIGZvciB0aGUgYm9hcmRzIG9mIHRoZSB0YWJlcm5hY2xlIGZvciB0aGUgc2lkZXMgd2VzdHdhcmQuCkFuZCBoZSBtYWRlIHRoZSBtaWRkbGUgYmFyIHRvIHNob290IHRocm91Z2ggdGhlIGJvYXJkcyBmcm9tIHRoZSBvbmUgZW5kIHRvIHRoZSBvdGhlci4KQW5kIGhlIG92ZXJsYWlkIHRoZSBib2FyZHMgd2l0aCBnb2xkLCBhbmQgbWFkZSB0aGVpciByaW5ncyBvZiBnb2xkIHRvIGJlIHBsYWNlcyBmb3IgdGhlIGJhcnMsIGFuZCBvdmVybGFpZCB0aGUgYmFycyB3aXRoIGdvbGQuCkFuZCBoZSBtYWRlIGEgdmFpbCBvZiBibHVlLCBhbmQgcHVycGxlLCBhbmQgc2NhcmxldCwgYW5kIGZpbmUgdHdpbmVkIGxpbmVuOiB3aXRoIGNoZXJ1YmltcyBtYWRlIGhlIGl0IG9mIGN1bm5pbmcgd29yay4KQW5kIGhlIG1hZGUgdGhlcmV1bnRvIGZvdXIgcGlsbGFycyBvZiBzaGl0dGltIHdvb2QsIGFuZCBvdmVybGFpZCB0aGVtIHdpdGggZ29sZDogdGhlaXIgaG9va3Mgd2VyZSBvZiBnb2xkOyBhbmQgaGUgY2FzdCBmb3IgdGhlbSBmb3VyIHNvY2tldHMgb2Ygc2lsdmVyLgpBbmQgaGUgbWFkZSBhbiBoYW5naW5nIGZvciB0aGUgdGFiZXJuYWNsZSBkb29yIG9mIGJsdWUsIGFuZCBwdXJwbGUsIGFuZCBzY2FybGV0LCBhbmQgZmluZSB0d2luZWQgbGluZW4sIG9mIG5lZWRsZXdvcms7CkFuZCB0aGUgZml2ZSBwaWxsYXJzIG9mIGl0IHdpdGggdGhlaXIgaG9va3M6IGFuZCBoZSBvdmVybGFpZCB0aGVpciBjaGFwaXRlcnMgYW5kIHRoZWlyIGZpbGxldHMgd2l0aCBnb2xkOiBidXQgdGhlaXIgZml2ZSBzb2NrZXRzIHdlcmUgb2YgYnJhc3MuCkFuZCBCZXphbGVlbCBtYWRlIHRoZSBhcmsgb2Ygc2hpdHRpbSB3b29kOiB0d28gY3ViaXRzIGFuZCBhIGhhbGYgd2FzIHRoZSBsZW5ndGggb2YgaXQsIGFuZCBhIGN1Yml0IGFuZCBhIGhhbGYgdGhlIGJyZWFkdGggb2YgaXQsIGFuZCBhIGN1Yml0IGFuZCBhIGhhbGYgdGhlIGhlaWdodCBvZiBpdDoKQW5kIGhlIG92ZXJsYWlkIGl0IHdpdGggcHVyZSBnb2xkIHdpdGhpbiBhbmQgd2l0aG91dCwgYW5kIG1hZGUgYSBjcm93biBvZiBnb2xkIHRvIGl0IHJvdW5kIGFib3V0LgpBbmQgaGUgY2FzdCBmb3IgaXQgZm91ciByaW5ncyBvZiBnb2xkLCB0byBiZSBzZXQgYnkgdGhlIGZvdXIgY29ybmVycyBvZiBpdDsgZXZlbiB0d28gcmluZ3MgdXBvbiB0aGUgb25lIHNpZGUgb2YgaXQsIGFuZCB0d28gcmluZ3MgdXBvbiB0aGUgb3RoZXIgc2lkZSBvZiBpdC4KQW5kIGhlIG1hZGUgc3RhdmVzIG9mIHNoaXR0aW0gd29vZCwgYW5kIG92ZXJsYWlkIHRoZW0gd2l0aCBnb2xkLgpBbmQgaGUgcHV0IHRoZSBzdGF2ZXMgaW50byB0aGUgcmluZ3MgYnkgdGhlIHNpZGVzIG9mIHRoZSBhcmssIHRvIGJlYXIgdGhlIGFyay4KQW5kIGhlIG1hZGUgdGhlIG1lcmN5IHNlYXQgb2YgcHVyZSBnb2xkOiB0d28gY3ViaXRzIGFuZCBhIGhhbGYgd2FzIHRoZSBsZW5ndGggdGhlcmVvZiwgYW5kIG9uZSBjdWJpdCBhbmQgYSBoYWxmIHRoZSBicmVhZHRoIHRoZXJlb2YuCkFuZCBoZSBtYWRlIHR3byBjaGVydWJpbXMgb2YgZ29sZCwgYmVhdGVuIG91dCBvZiBvbmUgcGllY2UgbWFkZSBoZSB0aGVtLCBvbiB0aGUgdHdvIGVuZHMgb2YgdGhlIG1lcmN5IHNlYXQ7Ck9uZSBjaGVydWIgb24gdGhlIGVuZCBvbiB0aGlzIHNpZGUsIGFuZCBhbm90aGVyIGNoZXJ1YiBvbiB0aGUgb3RoZXIgZW5kIG9uIHRoYXQgc2lkZTogb3V0IG9mIHRoZSBtZXJjeSBzZWF0IG1hZGUgaGUgdGhlIGNoZXJ1YmltcyBvbiB0aGUgdHdvIGVuZHMgdGhlcmVvZi4KQW5kIHRoZSBjaGVydWJpbXMgc3ByZWFkIG91dCB0aGVpciB3aW5ncyBvbiBoaWdoLCBhbmQgY292ZXJlZCB3aXRoIHRoZWlyIHdpbmdzIG92ZXIgdGhlIG1lcmN5IHNlYXQsIHdpdGggdGhlaXIgZmFjZXMgb25lIHRvIGFub3RoZXI7IGV2ZW4gdG8gdGhlIG1lcmN5IHNlYXR3YXJkIHdlcmUgdGhlIGZhY2VzIG9mIHRoZSBjaGVydWJpbXMuCkFuZCBoZSBtYWRlIHRoZSB0YWJsZSBvZiBzaGl0dGltIHdvb2Q6IHR3byBjdWJpdHMgd2FzIHRoZSBsZW5ndGggdGhlcmVvZiwgYW5kIGEgY3ViaXQgdGhlIGJyZWFkdGggdGhlcmVvZiwgYW5kIGEgY3ViaXQgYW5kIGEgaGFsZiB0aGUgaGVpZ2h0IHRoZXJlb2Y6CkFuZCBoZSBvdmVybGFpZCBpdCB3aXRoIHB1cmUgZ29sZCwgYW5kIG1hZGUgdGhlcmV1bnRvIGEgY3Jvd24gb2YgZ29sZCByb3VuZCBhYm91dC4KQWxzbyBoZSBtYWRlIHRoZXJldW50byBhIGJvcmRlciBvZiBhbiBoYW5kYnJlYWR0aCByb3VuZCBhYm91dDsgYW5kIG1hZGUgYSBjcm93biBvZiBnb2xkIGZvciB0aGUgYm9yZGVyIHRoZXJlb2Ygcm91bmQgYWJvdXQuCkFuZCBoZSBjYXN0IGZvciBpdCBmb3VyIHJpbmdzIG9mIGdvbGQsIGFuZCBwdXQgdGhlIHJpbmdzIHVwb24gdGhlIGZvdXIgY29ybmVycyB0aGF0IHdlcmUgaW4gdGhlIGZvdXIgZmVldCB0aGVyZW9mLgpPdmVyIGFnYWluc3QgdGhlIGJvcmRlciB3ZXJlIHRoZSByaW5ncywgdGhlIHBsYWNlcyBmb3IgdGhlIHN0YXZlcyB0byBiZWFyIHRoZSB0YWJsZS4KQW5kIGhlIG1hZGUgdGhlIHN0YXZlcyBvZiBzaGl0dGltIHdvb2QsIGFuZCBvdmVybGFpZCB0aGVtIHdpdGggZ29sZCwgdG8gYmVhciB0aGUgdGFibGUuCkFuZCBoZSBtYWRlIHRoZSB2ZXNzZWxzIHdoaWNoIHdlcmUgdXBvbiB0aGUgdGFibGUsIGhpcyBkaXNoZXMsIGFuZCBoaXMgc3Bvb25zLCBhbmQgaGlzIGJvd2xzLCBhbmQgaGlzIGNvdmVycyB0byBjb3ZlciB3aXRoYWwsIG9mIHB1cmUgZ29sZC4KQW5kIGhlIG1hZGUgdGhlIGNhbmRsZXN0aWNrIG9mIHB1cmUgZ29sZDogb2YgYmVhdGVuIHdvcmsgbWFkZSBoZSB0aGUgY2FuZGxlc3RpY2s7IGhpcyBzaGFmdCwgYW5kIGhpcyBicmFuY2gsIGhpcyBib3dscywgaGlzIGtub3BzLCBhbmQgaGlzIGZsb3dlcnMsIHdlcmUgb2YgdGhlIHNhbWU6CkFuZCBzaXggYnJhbmNoZXMgZ29pbmcgb3V0IG9mIHRoZSBzaWRlcyB0aGVyZW9mOyB0aHJlZSBicmFuY2hlcyBvZiB0aGUgY2FuZGxlc3RpY2sgb3V0IG9mIHRoZSBvbmUgc2lkZSB0aGVyZW9mLCBhbmQgdGhyZWUgYnJhbmNoZXMgb2YgdGhlIGNhbmRsZXN0aWNrIG91dCBvZiB0aGUgb3RoZXIgc2lkZSB0aGVyZW9mOgpUaHJlZSBib3dscyBtYWRlIGFmdGVyIHRoZSBmYXNoaW9uIG9mIGFsbW9uZHMgaW4gb25lIGJyYW5jaCwgYSBrbm9wIGFuZCBhIGZsb3dlcjsgYW5kIHRocmVlIGJvd2xzIG1hZGUgbGlrZSBhbG1vbmRzIGluIGFub3RoZXIgYnJhbmNoLCBhIGtub3AgYW5kIGEgZmxvd2VyOiBzbyB0aHJvdWdob3V0IHRoZSBzaXggYnJhbmNoZXMgZ29pbmcgb3V0IG9mIHRoZSBjYW5kbGVzdGljay4KQW5kIGluIHRoZSBjYW5kbGVzdGljayB3ZXJlIGZvdXIgYm93bHMgbWFkZSBsaWtlIGFsbW9uZHMsIGhpcyBrbm9wcywgYW5kIGhpcyBmbG93ZXJzOgpBbmQgYSBrbm9wIHVuZGVyIHR3byBicmFuY2hlcyBvZiB0aGUgc2FtZSwgYW5kIGEga25vcCB1bmRlciB0d28gYnJhbmNoZXMgb2YgdGhlIHNhbWUsIGFuZCBhIGtub3AgdW5kZXIgdHdvIGJyYW5jaGVzIG9mIHRoZSBzYW1lLCBhY2NvcmRpbmcgdG8gdGhlIHNpeCBicmFuY2hlcyBnb2luZyBvdXQgb2YgaXQuClRoZWlyIGtub3BzIGFuZCB0aGVpciBicmFuY2hlcyB3ZXJlIG9mIHRoZSBzYW1lOiBhbGwgb2YgaXQgd2FzIG9uZSBiZWF0ZW4gd29yayBvZiBwdXJlIGdvbGQuCkFuZCBoZSBtYWRlIGhpcyBzZXZlbiBsYW1wcywgYW5kIGhpcyBzbnVmZmVycywgYW5kIGhpcyBzbnVmZmRpc2hlcywgb2YgcHVyZSBnb2xkLgpPZiBhIHRhbGVudCBvZiBwdXJlIGdvbGQgbWFkZSBoZSBpdCwgYW5kIGFsbCB0aGUgdmVzc2VscyB0aGVyZW9mLgpBbmQgaGUgbWFkZSB0aGUgaW5jZW5zZSBhbHRhciBvZiBzaGl0dGltIHdvb2Q6IHRoZSBsZW5ndGggb2YgaXQgd2FzIGEgY3ViaXQsIGFuZCB0aGUgYnJlYWR0aCBvZiBpdCBhIGN1Yml0OyBpdCB3YXMgZm91cnNxdWFyZTsgYW5kIHR3byBjdWJpdHMgd2FzIHRoZSBoZWlnaHQgb2YgaXQ7IHRoZSBob3JucyB0aGVyZW9mIHdlcmUgb2YgdGhlIHNhbWUuCkFuZCBoZSBvdmVybGFpZCBpdCB3aXRoIHB1cmUgZ29sZCwgYm90aCB0aGUgdG9wIG9mIGl0LCBhbmQgdGhlIHNpZGVzIHRoZXJlb2Ygcm91bmQgYWJvdXQsIGFuZCB0aGUgaG9ybnMgb2YgaXQ6IGFsc28gaGUgbWFkZSB1bnRvIGl0IGEgY3Jvd24gb2YgZ29sZCByb3VuZCBhYm91dC4KQW5kIGhlIG1hZGUgdHdvIHJpbmdzIG9mIGdvbGQgZm9yIGl0IHVuZGVyIHRoZSBjcm93biB0aGVyZW9mLCBieSB0aGUgdHdvIGNvcm5lcnMgb2YgaXQsIHVwb24gdGhlIHR3byBzaWRlcyB0aGVyZW9mLCB0byBiZSBwbGFjZXMgZm9yIHRoZSBzdGF2ZXMgdG8gYmVhciBpdCB3aXRoYWwuCkFuZCBoZSBtYWRlIHRoZSBzdGF2ZXMgb2Ygc2hpdHRpbSB3b29kLCBhbmQgb3ZlcmxhaWQgdGhlbSB3aXRoIGdvbGQuCkFuZCBoZSBtYWRlIHRoZSBob2x5IGFub2ludGluZyBvaWwsIGFuZCB0aGUgcHVyZSBpbmNlbnNlIG9mIHN3ZWV0IHNwaWNlcywgYWNjb3JkaW5nIHRvIHRoZSB3b3JrIG9mIHRoZSBhcG90aGVjYXJ5LgpBbmQgaGUgbWFkZSB0aGUgYWx0YXIgb2YgYnVybnQgb2ZmZXJpbmcgb2Ygc2hpdHRpbSB3b29kOiBmaXZlIGN1Yml0cyB3YXMgdGhlIGxlbmd0aCB0aGVyZW9mLCBhbmQgZml2ZSBjdWJpdHMgdGhlIGJyZWFkdGggdGhlcmVvZjsgaXQgd2FzIGZvdXJzcXVhcmU7IGFuZCB0aHJlZSBjdWJpdHMgdGhlIGhlaWdodCB0aGVyZW9mLgpBbmQgaGUgbWFkZSB0aGUgaG9ybnMgdGhlcmVvZiBvbiB0aGUgZm91ciBjb3JuZXJzIG9mIGl0OyB0aGUgaG9ybnMgdGhlcmVvZiB3ZXJlIG9mIHRoZSBzYW1lOiBhbmQgaGUgb3ZlcmxhaWQgaXQgd2l0aCBicmFzcy4KQW5kIGhlIG1hZGUgYWxsIHRoZSB2ZXNzZWxzIG9mIHRoZSBhbHRhciwgdGhlIHBvdHMsIGFuZCB0aGUgc2hvdmVscywgYW5kIHRoZSBiYXNvbnMsIGFuZCB0aGUgZmxlc2hob29rcywgYW5kIHRoZSBmaXJlcGFuczogYWxsIHRoZSB2ZXNzZWxzIHRoZXJlb2YgbWFkZSBoZSBvZiBicmFzcy4KQW5kIGhlIG1hZGUgZm9yIHRoZSBhbHRhciBhIGJyYXNlbiBncmF0ZSBvZiBuZXR3b3JrIHVuZGVyIHRoZSBjb21wYXNzIHRoZXJlb2YgYmVuZWF0aCB1bnRvIHRoZSBtaWRzdCBvZiBpdC4KQW5kIGhlIGNhc3QgZm91ciByaW5ncyBmb3IgdGhlIGZvdXIgZW5kcyBvZiB0aGUgZ3JhdGUgb2YgYnJhc3MsIHRvIGJlIHBsYWNlcyBmb3IgdGhlIHN0YXZlcy4KQW5kIGhlIG1hZGUgdGhlIHN0YXZlcyBvZiBzaGl0dGltIHdvb2QsIGFuZCBvdmVybGFpZCB0aGVtIHdpdGggYnJhc3MuCkFuZCBoZSBwdXQgdGhlIHN0YXZlcyBpbnRvIHRoZSByaW5ncyBvbiB0aGUgc2lkZXMgb2YgdGhlIGFsdGFyLCB0byBiZWFyIGl0IHdpdGhhbDsgaGUgbWFkZSB0aGUgYWx0YXIgaG9sbG93IHdpdGggYm9hcmRzLgpBbmQgaGUgbWFkZSB0aGUgbGF2ZXIgb2YgYnJhc3MsIGFuZCB0aGUgZm9vdCBvZiBpdCBvZiBicmFzcywgb2YgdGhlIGxvb2tpbmdnbGFzc2VzIG9mIHRoZSB3b21lbiBhc3NlbWJsaW5nLCB3aGljaCBhc3NlbWJsZWQgYXQgdGhlIGRvb3Igb2YgdGhlIHRhYmVybmFjbGUgb2YgdGhlIGNvbmdyZWdhdGlvbi4KQW5kIGhlIG1hZGUgdGhlIGNvdXJ0OiBvbiB0aGUgc291dGggc2lkZSBzb3V0aHdhcmQgdGhlIGhhbmdpbmdzIG9mIHRoZSBjb3VydCB3ZXJlIG9mIGZpbmUgdHdpbmVkIGxpbmVuLCBhbiBodW5kcmVkIGN1Yml0czoKVGhlaXIgcGlsbGFycyB3ZXJlIHR3ZW50eSwgYW5kIHRoZWlyIGJyYXNlbiBzb2NrZXRzIHR3ZW50eTsgdGhlIGhvb2tzIG9mIHRoZSBwaWxsYXJzIGFuZCB0aGVpciBmaWxsZXRzIHdlcmUgb2Ygc2lsdmVyLgpBbmQgZm9yIHRoZSBub3J0aCBzaWRlIHRoZSBoYW5naW5ncyB3ZXJlIGFuIGh1bmRyZWQgY3ViaXRzLCB0aGVpciBwaWxsYXJzIHdlcmUgdHdlbnR5LCBhbmQgdGhlaXIgc29ja2V0cyBvZiBicmFzcyB0d2VudHk7IHRoZSBob29rcyBvZiB0aGUgcGlsbGFycyBhbmQgdGhlaXIgZmlsbGV0cyBvZiBzaWx2ZXIuCkFuZCBmb3IgdGhlIHdlc3Qgc2lkZSB3ZXJlIGhhbmdpbmdzIG9mIGZpZnR5IGN1Yml0cywgdGhlaXIgcGlsbGFycyB0ZW4sIGFuZCB0aGVpciBzb2NrZXRzIHRlbjsgdGhlIGhvb2tzIG9mIHRoZSBwaWxsYXJzIGFuZCB0aGVpciBmaWxsZXRzIG9mIHNpbHZlci4KQW5kIGZvciB0aGUgZWFzdCBzaWRlIGVhc3R3YXJkIGZpZnR5IGN1Yml0cy4KVGhlIGhhbmdpbmdzIG9mIHRoZSBvbmUgc2lkZSBvZiB0aGUgZ2F0ZSB3ZXJlIGZpZnRlZW4gY3ViaXRzOyB0aGVpciBwaWxsYXJzIHRocmVlLCBhbmQgdGhlaXIgc29ja2V0cyB0aHJlZS4KQW5kIGZvciB0aGUgb3RoZXIgc2lkZSBvZiB0aGUgY291cnQgZ2F0ZSwgb24gdGhpcyBoYW5kIGFuZCB0aGF0IGhhbmQsIHdlcmUgaGFuZ2luZ3Mgb2YgZmlmdGVlbiBjdWJpdHM7IHRoZWlyIHBpbGxhcnMgdGhyZWUsIGFuZCB0aGVpciBzb2NrZXRzIHRocmVlLgpBbGwgdGhlIGhhbmdpbmdzIG9mIHRoZSBjb3VydCByb3VuZCBhYm91dCB3ZXJlIG9mIGZpbmUgdHdpbmVkIGxpbmVuLgpBbmQgdGhlIHNvY2tldHMgZm9yIHRoZSBwaWxsYXJzIHdlcmUgb2YgYnJhc3M7IHRoZSBob29rcyBvZiB0aGUgcGlsbGFycyBhbmQgdGhlaXIgZmlsbGV0cyBvZiBzaWx2ZXI7IGFuZCB0aGUgb3ZlcmxheWluZyBvZiB0aGVpciBjaGFwaXRlcnMgb2Ygc2lsdmVyOyBhbmQgYWxsIHRoZSBwaWxsYXJzIG9mIHRoZSBjb3VydCB3ZXJlIGZpbGxldGVkIHdpdGggc2lsdmVyLgpBbmQgdGhlIGhhbmdpbmcgZm9yIHRoZSBnYXRlIG9mIHRoZSBjb3VydCB3YXMgbmVlZGxld29yaywgb2YgYmx1ZSwgYW5kIHB1cnBsZSwgYW5kIHNjYXJsZXQsIGFuZCBmaW5lIHR3aW5lZCBsaW5lbjogYW5kIHR3ZW50eSBjdWJpdHMgd2FzIHRoZSBsZW5ndGgsIGFuZCB0aGUgaGVpZ2h0IGluIHRoZSBicmVhZHRoIHdhcyBmaXZlIGN1Yml0cywgYW5zd2VyYWJsZSB0byB0aGUgaGFuZ2luZ3Mgb2YgdGhlIGNvdXJ0LgpBbmQgdGhlaXIgcGlsbGFycyB3ZXJlIGZvdXIsIGFuZCB0aGVpciBzb2NrZXRzIG9mIGJyYXNzIGZvdXI7IHRoZWlyIGhvb2tzIG9mIHNpbHZlciwgYW5kIHRoZSBvdmVybGF5aW5nIG9mIHRoZWlyIGNoYXBpdGVycyBhbmQgdGhlaXIgZmlsbGV0cyBvZiBzaWx2ZXIuCkFuZCBhbGwgdGhlIHBpbnMgb2YgdGhlIHRhYmVybmFjbGUsIGFuZCBvZiB0aGUgY291cnQgcm91bmQgYWJvdXQsIHdlcmUgb2YgYnJhc3MuClRoaXMgaXMgdGhlIHN1bSBvZiB0aGUgdGFiZXJuYWNsZSwgZXZlbiBvZiB0aGUgdGFiZXJuYWNsZSBvZiB0ZXN0aW1vbnksIGFzIGl0IHdhcyBjb3VudGVkLCBhY2NvcmRpbmcgdG8gdGhlIGNvbW1hbmRtZW50IG9mIE1vc2VzLCBmb3IgdGhlIHNlcnZpY2Ugb2YgdGhlIExldml0ZXMsIGJ5IHRoZSBoYW5kIG9mIEl0aGFtYXIsIHNvbiB0byBBYXJvbiB0aGUgcHJpZXN0LgpBbmQgQmV6YWxlZWwgdGhlIHNvbiBVcmksIHRoZSBzb24gb2YgSHVyLCBvZiB0aGUgdHJpYmUgb2YgSnVkYWgsIG1hZGUgYWxsIHRoYXQgdGhlIExPUkQgY29tbWFuZGVkIE1vc2VzLgpBbmQgd2l0aCBoaW0gd2FzIEFob2xpYWIsIHNvbiBvZiBBaGlzYW1hY2gsIG9mIHRoZSB0cmliZSBvZiBEYW4sIGFuIGVuZ3JhdmVyLCBhbmQgYSBjdW5uaW5nIHdvcmttYW4sIGFuZCBhbiBlbWJyb2lkZXJlciBpbiBibHVlLCBhbmQgaW4gcHVycGxlLCBhbmQgaW4gc2NhcmxldCwgYW5kIGZpbmUgbGluZW4uCkFsbCB0aGUgZ29sZCB0aGF0IHdhcyBvY2N1cGllZCBmb3IgdGhlIHdvcmsgaW4gYWxsIHRoZSB3b3JrIG9mIHRoZSBob2x5IHBsYWNlLCBldmVuIHRoZSBnb2xkIG9mIHRoZSBvZmZlcmluZywgd2FzIHR3ZW50eSBhbmQgbmluZSB0YWxlbnRzLCBhbmQgc2V2ZW4gaHVuZHJlZCBhbmQgdGhpcnR5IHNoZWtlbHMsIGFmdGVyIHRoZSBzaGVrZWwgb2YgdGhlIHNhbmN0dWFyeS4KQW5kIHRoZSBzaWx2ZXIgb2YgdGhlbSB0aGF0IHdlcmUgbnVtYmVyZWQgb2YgdGhlIGNvbmdyZWdhdGlvbiB3YXMgYW4gaHVuZHJlZCB0YWxlbnRzLCBhbmQgYSB0aG91c2FuZCBzZXZlbiBodW5kcmVkIGFuZCB0aHJlZXNjb3JlIGFuZCBmaWZ0ZWVuIHNoZWtlbHMsIGFmdGVyIHRoZSBzaGVrZWwgb2YgdGhlIHNhbmN0dWFyeToKQSBiZWthaCBmb3IgZXZlcnkgbWFuLCB0aGF0IGlzLCBoYWxmIGEgc2hla2VsLCBhZnRlciB0aGUgc2hla2VsIG9mIHRoZSBzYW5jdHVhcnksIGZvciBldmVyeSBvbmUgdGhhdCB3ZW50IHRvIGJlIG51bWJlcmVkLCBmcm9tIHR3ZW50eSB5ZWFycyBvbGQgYW5kIHVwd2FyZCwgZm9yIHNpeCBodW5kcmVkIHRob3VzYW5kIGFuZCB0aHJlZSB0aG91c2FuZCBhbmQgZml2ZSBodW5kcmVkIGFuZCBmaWZ0eSBtZW4uCkFuZCBvZiB0aGUgaHVuZHJlZCB0YWxlbnRzIG9mIHNpbHZlciB3ZXJlIGNhc3QgdGhlIHNvY2tldHMgb2YgdGhlIHNhbmN0dWFyeSwgYW5kIHRoZSBzb2NrZXRzIG9mIHRoZSB2YWlsOyBhbiBodW5kcmVkIHNvY2tldHMgb2YgdGhlIGh1bmRyZWQgdGFsZW50cywgYSB0YWxlbnQgZm9yIGEgc29ja2V0LgpBbmQgb2YgdGhlIHRob3VzYW5kIHNldmVuIGh1bmRyZWQgc2V2ZW50eSBhbmQgZml2ZSBzaGVrZWxzIGhlIG1hZGUgaG9va3MgZm9yIHRoZSBwaWxsYXJzLCBhbmQgb3ZlcmxhaWQgdGhlaXIgY2hhcGl0ZXJzLCBhbmQgZmlsbGV0ZWQgdGhlbS4KQW5kIHRoZSBicmFzcyBvZiB0aGUgb2ZmZXJpbmcgd2FzIHNldmVudHkgdGFsZW50cywgYW5kIHR3byB0aG91c2FuZCBhbmQgZm91ciBodW5kcmVkIHNoZWtlbHMuCkFuZCB0aGVyZXdpdGggaGUgbWFkZSB0aGUgc29ja2V0cyB0byB0aGUgZG9vciBvZiB0aGUgdGFiZXJuYWNsZSBvZiB0aGUgY29uZ3JlZ2F0aW9uLCBhbmQgdGhlIGJyYXNlbiBhbHRhciwgYW5kIHRoZSBicmFzZW4gZ3JhdGUgZm9yIGl0LCBhbmQgYWxsIHRoZSB2ZXNzZWxzIG9mIHRoZSBhbHRhciwKQW5kIHRoZSBzb2NrZXRzIG9mIHRoZSBjb3VydCByb3VuZCBhYm91dCwgYW5kIHRoZSBzb2NrZXRzIG9mIHRoZSBjb3VydCBnYXRlLCBhbmQgYWxsIHRoZSBwaW5zIG9mIHRoZSB0YWJlcm5hY2xlLCBhbmQgYWxsIHRoZSBwaW5zIG9mIHRoZSBjb3VydCByb3VuZCBhYm91dC4KQW5kIG9mIHRoZSBibHVlLCBhbmQgcHVycGxlLCBhbmQgc2NhcmxldCwgdGhleSBtYWRlIGNsb3RocyBvZiBzZXJ2aWNlLCB0byBkbyBzZXJ2aWNlIGluIHRoZSBob2x5IHBsYWNlLCBhbmQgbWFkZSB0aGUgaG9seSBnYXJtZW50cyBmb3IgQWFyb247IGFzIHRoZSBMT1JEIGNvbW1hbmRlZCBNb3Nlcy4KQW5kIGhlIG1hZGUgdGhlIGVwaG9kIG9mIGdvbGQsIGJsdWUsIGFuZCBwdXJwbGUsIGFuZCBzY2FybGV0LCBhbmQgZmluZSB0d2luZWQgbGluZW4uCkFuZCB0aGV5IGRpZCBiZWF0IHRoZSBnb2xkIGludG8gdGhpbiBwbGF0ZXMsIGFuZCBjdXQgaXQgaW50byB3aXJlcywgdG8gd29yayBpdCBpbiB0aGUgYmx1ZSwgYW5kIGluIHRoZSBwdXJwbGUsIGFuZCBpbiB0aGUgc2NhcmxldCwgYW5kIGluIHRoZSBmaW5lIGxpbmVuLCB3aXRoIGN1bm5pbmcgd29yay4KVGhleSBtYWRlIHNob3VsZGVycGllY2VzIGZvciBpdCwgdG8gY291cGxlIGl0IHRvZ2V0aGVyOiBieSB0aGUgdHdvIGVkZ2VzIHdhcyBpdCBjb3VwbGVkIHRvZ2V0aGVyLgpBbmQgdGhlIGN1cmlvdXMgZ2lyZGxlIG9mIGhpcyBlcGhvZCwgdGhhdCB3YXMgdXBvbiBpdCwgd2FzIG9mIHRoZSBzYW1lLCBhY2NvcmRpbmcgdG8gdGhlIHdvcmsgdGhlcmVvZjsgb2YgZ29sZCwgYmx1ZSwgYW5kIHB1cnBsZSwgYW5kIHNjYXJsZXQsIGFuZCBmaW5lIHR3aW5lZCBsaW5lbjsgYXMgdGhlIExPUkQgY29tbWFuZGVkIE1vc2VzLgpBbmQgdGhleSB3cm91Z2h0IG9ueXggc3RvbmVzIGluY2xvc2VkIGluIG91Y2hlcyBvZiBnb2xkLCBncmF2ZW4sIGFzIHNpZ25ldHMgYXJlIGdyYXZlbiwgd2l0aCB0aGUgbmFtZXMgb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbC4KQW5kIGhlIHB1dCB0aGVtIG9uIHRoZSBzaG91bGRlcnMgb2YgdGhlIGVwaG9kLCB0aGF0IHRoZXkgc2hvdWxkIGJlIHN0b25lcyBmb3IgYSBtZW1vcmlhbCB0byB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsOyBhcyB0aGUgTE9SRCBjb21tYW5kZWQgTW9zZXMuCkFuZCBoZSBtYWRlIHRoZSBicmVhc3RwbGF0ZSBvZiBjdW5uaW5nIHdvcmssIGxpa2UgdGhlIHdvcmsgb2YgdGhlIGVwaG9kOyBvZiBnb2xkLCBibHVlLCBhbmQgcHVycGxlLCBhbmQgc2NhcmxldCwgYW5kIGZpbmUgdHdpbmVkIGxpbmVuLgpJdCB3YXMgZm91cnNxdWFyZTsgdGhleSBtYWRlIHRoZSBicmVhc3RwbGF0ZSBkb3VibGU6IGEgc3BhbiB3YXMgdGhlIGxlbmd0aCB0aGVyZW9mLCBhbmQgYSBzcGFuIHRoZSBicmVhZHRoIHRoZXJlb2YsIGJlaW5nIGRvdWJsZWQuCkFuZCB0aGV5IHNldCBpbiBpdCBmb3VyIHJvd3Mgb2Ygc3RvbmVzOiB0aGUgZmlyc3Qgcm93IHdhcyBhIHNhcmRpdXMsIGEgdG9wYXosIGFuZCBhIGNhcmJ1bmNsZTogdGhpcyB3YXMgdGhlIGZpcnN0IHJvdy4KQW5kIHRoZSBzZWNvbmQgcm93LCBhbiBlbWVyYWxkLCBhIHNhcHBoaXJlLCBhbmQgYSBkaWFtb25kLgpBbmQgdGhlIHRoaXJkIHJvdywgYSBsaWd1cmUsIGFuIGFnYXRlLCBhbmQgYW4gYW1ldGh5c3QuCkFuZCB0aGUgZm91cnRoIHJvdywgYSBiZXJ5bCwgYW4gb255eCwgYW5kIGEgamFzcGVyOiB0aGV5IHdlcmUgaW5jbG9zZWQgaW4gb3VjaGVzIG9mIGdvbGQgaW4gdGhlaXIgaW5jbG9zaW5ncy4KQW5kIHRoZSBzdG9uZXMgd2VyZSBhY2NvcmRpbmcgdG8gdGhlIG5hbWVzIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIHR3ZWx2ZSwgYWNjb3JkaW5nIHRvIHRoZWlyIG5hbWVzLCBsaWtlIHRoZSBlbmdyYXZpbmdzIG9mIGEgc2lnbmV0LCBldmVyeSBvbmUgd2l0aCBoaXMgbmFtZSwgYWNjb3JkaW5nIHRvIHRoZSB0d2VsdmUgdHJpYmVzLgpBbmQgdGhleSBtYWRlIHVwb24gdGhlIGJyZWFzdHBsYXRlIGNoYWlucyBhdCB0aGUgZW5kcywgb2Ygd3JlYXRoZW4gd29yayBvZiBwdXJlIGdvbGQuCkFuZCB0aGV5IG1hZGUgdHdvIG91Y2hlcyBvZiBnb2xkLCBhbmQgdHdvIGdvbGQgcmluZ3M7IGFuZCBwdXQgdGhlIHR3byByaW5ncyBpbiB0aGUgdHdvIGVuZHMgb2YgdGhlIGJyZWFzdHBsYXRlLgpBbmQgdGhleSBwdXQgdGhlIHR3byB3cmVhdGhlbiBjaGFpbnMgb2YgZ29sZCBpbiB0aGUgdHdvIHJpbmdzIG9uIHRoZSBlbmRzIG9mIHRoZSBicmVhc3RwbGF0ZS4KQW5kIHRoZSB0d28gZW5kcyBvZiB0aGUgdHdvIHdyZWF0aGVuIGNoYWlucyB0aGV5IGZhc3RlbmVkIGluIHRoZSB0d28gb3VjaGVzLCBhbmQgcHV0IHRoZW0gb24gdGhlIHNob3VsZGVycGllY2VzIG9mIHRoZSBlcGhvZCwgYmVmb3JlIGl0LgpBbmQgdGhleSBtYWRlIHR3byByaW5ncyBvZiBnb2xkLCBhbmQgcHV0IHRoZW0gb24gdGhlIHR3byBlbmRzIG9mIHRoZSBicmVhc3RwbGF0ZSwgdXBvbiB0aGUgYm9yZGVyIG9mIGl0LCB3aGljaCB3YXMgb24gdGhlIHNpZGUgb2YgdGhlIGVwaG9kIGlud2FyZC4KQW5kIHRoZXkgbWFkZSB0d28gb3RoZXIgZ29sZGVuIHJpbmdzLCBhbmQgcHV0IHRoZW0gb24gdGhlIHR3byBzaWRlcyBvZiB0aGUgZXBob2QgdW5kZXJuZWF0aCwgdG93YXJkIHRoZSBmb3JlcGFydCBvZiBpdCwgb3ZlciBhZ2FpbnN0IHRoZSBvdGhlciBjb3VwbGluZyB0aGVyZW9mLCBhYm92ZSB0aGUgY3VyaW91cyBnaXJkbGUgb2YgdGhlIGVwaG9kLgpBbmQgdGhleSBkaWQgYmluZCB0aGUgYnJlYXN0cGxhdGUgYnkgaGlzIHJpbmdzIHVudG8gdGhlIHJpbmdzIG9mIHRoZSBlcGhvZCB3aXRoIGEgbGFjZSBvZiBibHVlLCB0aGF0IGl0IG1pZ2h0IGJlIGFib3ZlIHRoZSBjdXJpb3VzIGdpcmRsZSBvZiB0aGUgZXBob2QsIGFuZCB0aGF0IHRoZSBicmVhc3RwbGF0ZSBtaWdodCBub3QgYmUgbG9vc2VkIGZyb20gdGhlIGVwaG9kOyBhcyB0aGUgTE9SRCBjb21tYW5kZWQgTW9zZXMuCkFuZCBoZSBtYWRlIHRoZSByb2JlIG9mIHRoZSBlcGhvZCBvZiB3b3ZlbiB3b3JrLCBhbGwgb2YgYmx1ZS4KQW5kIHRoZXJlIHdhcyBhbiBob2xlIGluIHRoZSBtaWRzdCBvZiB0aGUgcm9iZSwgYXMgdGhlIGhvbGUgb2YgYW4gaGFiZXJnZW9uLCB3aXRoIGEgYmFuZCByb3VuZCBhYm91dCB0aGUgaG9sZSwgdGhhdCBpdCBzaG91bGQgbm90IHJlbmQuCkFuZCB0aGV5IG1hZGUgdXBvbiB0aGUgaGVtcyBvZiB0aGUgcm9iZSBwb21lZ3JhbmF0ZXMgb2YgYmx1ZSwgYW5kIHB1cnBsZSwgYW5kIHNjYXJsZXQsIGFuZCB0d2luZWQgbGluZW4uCkFuZCB0aGV5IG1hZGUgYmVsbHMgb2YgcHVyZSBnb2xkLCBhbmQgcHV0IHRoZSBiZWxscyBiZXR3ZWVuIHRoZSBwb21lZ3JhbmF0ZXMgdXBvbiB0aGUgaGVtIG9mIHRoZSByb2JlLCByb3VuZCBhYm91dCBiZXR3ZWVuIHRoZSBwb21lZ3JhbmF0ZXM7CkEgYmVsbCBhbmQgYSBwb21lZ3JhbmF0ZSwgYSBiZWxsIGFuZCBhIHBvbWVncmFuYXRlLCByb3VuZCBhYm91dCB0aGUgaGVtIG9mIHRoZSByb2JlIHRvIG1pbmlzdGVyIGluOyBhcyB0aGUgTE9SRCBjb21tYW5kZWQgTW9zZXMuCkFuZCB0aGV5IG1hZGUgY29hdHMgb2YgZmluZSBsaW5lbiBvZiB3b3ZlbiB3b3JrIGZvciBBYXJvbiwgYW5kIGZvciBoaXMgc29ucywKQW5kIGEgbWl0cmUgb2YgZmluZSBsaW5lbiwgYW5kIGdvb2RseSBib25uZXRzIG9mIGZpbmUgbGluZW4sIGFuZCBsaW5lbiBicmVlY2hlcyBvZiBmaW5lIHR3aW5lZCBsaW5lbiwKQW5kIGEgZ2lyZGxlIG9mIGZpbmUgdHdpbmVkIGxpbmVuLCBhbmQgYmx1ZSwgYW5kIHB1cnBsZSwgYW5kIHNjYXJsZXQsIG9mIG5lZWRsZXdvcms7IGFzIHRoZSBMT1JEIGNvbW1hbmRlZCBNb3Nlcy4KQW5kIHRoZXkgbWFkZSB0aGUgcGxhdGUgb2YgdGhlIGhvbHkgY3Jvd24gb2YgcHVyZSBnb2xkLCBhbmQgd3JvdGUgdXBvbiBpdCBhIHdyaXRpbmcsIGxpa2UgdG8gdGhlIGVuZ3JhdmluZ3Mgb2YgYSBzaWduZXQsIEhPTElORVNTIFRPIFRIRSBMT1JELgpBbmQgdGhleSB0aWVkIHVudG8gaXQgYSBsYWNlIG9mIGJsdWUsIHRvIGZhc3RlbiBpdCBvbiBoaWdoIHVwb24gdGhlIG1pdHJlOyBhcyB0aGUgTE9SRCBjb21tYW5kZWQgTW9zZXMuClRodXMgd2FzIGFsbCB0aGUgd29yayBvZiB0aGUgdGFiZXJuYWNsZSBvZiB0aGUgdGVudCBvZiB0aGUgY29uZ3JlZ2F0aW9uIGZpbmlzaGVkOiBhbmQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBkaWQgYWNjb3JkaW5nIHRvIGFsbCB0aGF0IHRoZSBMT1JEIGNvbW1hbmRlZCBNb3Nlcywgc28gZGlkIHRoZXkuCkFuZCB0aGV5IGJyb3VnaHQgdGhlIHRhYmVybmFjbGUgdW50byBNb3NlcywgdGhlIHRlbnQsIGFuZCBhbGwgaGlzIGZ1cm5pdHVyZSwgaGlzIHRhY2hlcywgaGlzIGJvYXJkcywgaGlzIGJhcnMsIGFuZCBoaXMgcGlsbGFycywgYW5kIGhpcyBzb2NrZXRzLApBbmQgdGhlIGNvdmVyaW5nIG9mIHJhbXMnIHNraW5zIGR5ZWQgcmVkLCBhbmQgdGhlIGNvdmVyaW5nIG9mIGJhZGdlcnMnIHNraW5zLCBhbmQgdGhlIHZhaWwgb2YgdGhlIGNvdmVyaW5nLApUaGUgYXJrIG9mIHRoZSB0ZXN0aW1vbnksIGFuZCB0aGUgc3RhdmVzIHRoZXJlb2YsIGFuZCB0aGUgbWVyY3kgc2VhdCwKVGhlIHRhYmxlLCBhbmQgYWxsIHRoZSB2ZXNzZWxzIHRoZXJlb2YsIGFuZCB0aGUgc2hld2JyZWFkLApUaGUgcHVyZSBjYW5kbGVzdGljaywgd2l0aCB0aGUgbGFtcHMgdGhlcmVvZiwgZXZlbiB3aXRoIHRoZSBsYW1wcyB0byBiZSBzZXQgaW4gb3JkZXIsIGFuZCBhbGwgdGhlIHZlc3NlbHMgdGhlcmVvZiwgYW5kIHRoZSBvaWwgZm9yIGxpZ2h0LApBbmQgdGhlIGdvbGRlbiBhbHRhciwgYW5kIHRoZSBhbm9pbnRpbmcgb2lsLCBhbmQgdGhlIHN3ZWV0IGluY2Vuc2UsIGFuZCB0aGUgaGFuZ2luZyBmb3IgdGhlIHRhYmVybmFjbGUgZG9vciwKVGhlIGJyYXNlbiBhbHRhciwgYW5kIGhpcyBncmF0ZSBvZiBicmFzcywgaGlzIHN0YXZlcywgYW5kIGFsbCBoaXMgdmVzc2VscywgdGhlIGxhdmVyIGFuZCBoaXMgZm9vdCwKVGhlIGhhbmdpbmdzIG9mIHRoZSBjb3VydCwgaGlzIHBpbGxhcnMsIGFuZCBoaXMgc29ja2V0cywgYW5kIHRoZSBoYW5naW5nIGZvciB0aGUgY291cnQgZ2F0ZSwgaGlzIGNvcmRzLCBhbmQgaGlzIHBpbnMsIGFuZCBhbGwgdGhlIHZlc3NlbHMgb2YgdGhlIHNlcnZpY2Ugb2YgdGhlIHRhYmVybmFjbGUsIGZvciB0aGUgdGVudCBvZiB0aGUgY29uZ3JlZ2F0aW9uLApUaGUgY2xvdGhzIG9mIHNlcnZpY2UgdG8gZG8gc2VydmljZSBpbiB0aGUgaG9seSBwbGFjZSwgYW5kIHRoZSBob2x5IGdhcm1lbnRzIGZvciBBYXJvbiB0aGUgcHJpZXN0LCBhbmQgaGlzIHNvbnMnIGdhcm1lbnRzLCB0byBtaW5pc3RlciBpbiB0aGUgcHJpZXN0J3Mgb2ZmaWNlLgpBY2NvcmRpbmcgdG8gYWxsIHRoYXQgdGhlIExPUkQgY29tbWFuZGVkIE1vc2VzLCBzbyB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIG1hZGUgYWxsIHRoZSB3b3JrLgpBbmQgTW9zZXMgZGlkIGxvb2sgdXBvbiBhbGwgdGhlIHdvcmssIGFuZCwgYmVob2xkLCB0aGV5IGhhZCBkb25lIGl0IGFzIHRoZSBMT1JEIGhhZCBjb21tYW5kZWQsIGV2ZW4gc28gaGFkIHRoZXkgZG9uZSBpdDogYW5kIE1vc2VzIGJsZXNzZWQgdGhlbS4KQW5kIHRoZSBMT1JEIHNwYWtlIHVudG8gTW9zZXMsIHNheWluZywKT24gdGhlIGZpcnN0IGRheSBvZiB0aGUgZmlyc3QgbW9udGggc2hhbHQgdGhvdSBzZXQgdXAgdGhlIHRhYmVybmFjbGUgb2YgdGhlIHRlbnQgb2YgdGhlIGNvbmdyZWdhdGlvbi4KQW5kIHRob3Ugc2hhbHQgcHV0IHRoZXJlaW4gdGhlIGFyayBvZiB0aGUgdGVzdGltb255LCBhbmQgY292ZXIgdGhlIGFyayB3aXRoIHRoZSB2YWlsLgpBbmQgdGhvdSBzaGFsdCBicmluZyBpbiB0aGUgdGFibGUsIGFuZCBzZXQgaW4gb3JkZXIgdGhlIHRoaW5ncyB0aGF0IGFyZSB0byBiZSBzZXQgaW4gb3JkZXIgdXBvbiBpdDsgYW5kIHRob3Ugc2hhbHQgYnJpbmcgaW4gdGhlIGNhbmRsZXN0aWNrLCBhbmQgbGlnaHQgdGhlIGxhbXBzIHRoZXJlb2YuCkFuZCB0aG91IHNoYWx0IHNldCB0aGUgYWx0YXIgb2YgZ29sZCBmb3IgdGhlIGluY2Vuc2UgYmVmb3JlIHRoZSBhcmsgb2YgdGhlIHRlc3RpbW9ueSwgYW5kIHB1dCB0aGUgaGFuZ2luZyBvZiB0aGUgZG9vciB0byB0aGUgdGFiZXJuYWNsZS4KQW5kIHRob3Ugc2hhbHQgc2V0IHRoZSBhbHRhciBvZiB0aGUgYnVybnQgb2ZmZXJpbmcgYmVmb3JlIHRoZSBkb29yIG9mIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSB0ZW50IG9mIHRoZSBjb25ncmVnYXRpb24uCkFuZCB0aG91IHNoYWx0IHNldCB0aGUgbGF2ZXIgYmV0d2VlbiB0aGUgdGVudCBvZiB0aGUgY29uZ3JlZ2F0aW9uIGFuZCB0aGUgYWx0YXIsIGFuZCBzaGFsdCBwdXQgd2F0ZXIgdGhlcmVpbi4KQW5kIHRob3Ugc2hhbHQgc2V0IHVwIHRoZSBjb3VydCByb3VuZCBhYm91dCwgYW5kIGhhbmcgdXAgdGhlIGhhbmdpbmcgYXQgdGhlIGNvdXJ0IGdhdGUuCkFuZCB0aG91IHNoYWx0IHRha2UgdGhlIGFub2ludGluZyBvaWwsIGFuZCBhbm9pbnQgdGhlIHRhYmVybmFjbGUsIGFuZCBhbGwgdGhhdCBpcyB0aGVyZWluLCBhbmQgc2hhbHQgaGFsbG93IGl0LCBhbmQgYWxsIHRoZSB2ZXNzZWxzIHRoZXJlb2Y6IGFuZCBpdCBzaGFsbCBiZSBob2x5LgpBbmQgdGhvdSBzaGFsdCBhbm9pbnQgdGhlIGFsdGFyIG9mIHRoZSBidXJudCBvZmZlcmluZywgYW5kIGFsbCBoaXMgdmVzc2VscywgYW5kIHNhbmN0aWZ5IHRoZSBhbHRhcjogYW5kIGl0IHNoYWxsIGJlIGFuIGFsdGFyIG1vc3QgaG9seS4KQW5kIHRob3Ugc2hhbHQgYW5vaW50IHRoZSBsYXZlciBhbmQgaGlzIGZvb3QsIGFuZCBzYW5jdGlmeSBpdC4KQW5kIHRob3Ugc2hhbHQgYnJpbmcgQWFyb24gYW5kIGhpcyBzb25zIHVudG8gdGhlIGRvb3Igb2YgdGhlIHRhYmVybmFjbGUgb2YgdGhlIGNvbmdyZWdhdGlvbiwgYW5kIHdhc2ggdGhlbSB3aXRoIHdhdGVyLgpBbmQgdGhvdSBzaGFsdCBwdXQgdXBvbiBBYXJvbiB0aGUgaG9seSBnYXJtZW50cywgYW5kIGFub2ludCBoaW0sIGFuZCBzYW5jdGlmeSBoaW07IHRoYXQgaGUgbWF5IG1pbmlzdGVyIHVudG8gbWUgaW4gdGhlIHByaWVzdCdzIG9mZmljZS4KQW5kIHRob3Ugc2hhbHQgYnJpbmcgaGlzIHNvbnMsIGFuZCBjbG90aGUgdGhlbSB3aXRoIGNvYXRzOgpBbmQgdGhvdSBzaGFsdCBhbm9pbnQgdGhlbSwgYXMgdGhvdSBkaWRzdCBhbm9pbnQgdGhlaXIgZmF0aGVyLCB0aGF0IHRoZXkgbWF5IG1pbmlzdGVyIHVudG8gbWUgaW4gdGhlIHByaWVzdCdzIG9mZmljZTogZm9yIHRoZWlyIGFub2ludGluZyBzaGFsbCBzdXJlbHkgYmUgYW4gZXZlcmxhc3RpbmcgcHJpZXN0aG9vZCB0aHJvdWdob3V0IHRoZWlyIGdlbmVyYXRpb25zLgpUaHVzIGRpZCBNb3NlczogYWNjb3JkaW5nIHRvIGFsbCB0aGF0IHRoZSBMT1JEIGNvbW1hbmRlZCBoaW0sIHNvIGRpZCBoZS4KQW5kIGl0IGNhbWUgdG8gcGFzcyBpbiB0aGUgZmlyc3QgbW9udGggaW4gdGhlIHNlY29uZCB5ZWFyLCBvbiB0aGUgZmlyc3QgZGF5IG9mIHRoZSBtb250aCwgdGhhdCB0aGUgdGFiZXJuYWNsZSB3YXMgcmVhcmVkIHVwLgpBbmQgTW9zZXMgcmVhcmVkIHVwIHRoZSB0YWJlcm5hY2xlLCBhbmQgZmFzdGVuZWQgaGlzIHNvY2tldHMsIGFuZCBzZXQgdXAgdGhlIGJvYXJkcyB0aGVyZW9mLCBhbmQgcHV0IGluIHRoZSBiYXJzIHRoZXJlb2YsIGFuZCByZWFyZWQgdXAgaGlzIHBpbGxhcnMuCkFuZCBoZSBzcHJlYWQgYWJyb2FkIHRoZSB0ZW50IG92ZXIgdGhlIHRhYmVybmFjbGUsIGFuZCBwdXQgdGhlIGNvdmVyaW5nIG9mIHRoZSB0ZW50IGFib3ZlIHVwb24gaXQ7IGFzIHRoZSBMT1JEIGNvbW1hbmRlZCBNb3Nlcy4KQW5kIGhlIHRvb2sgYW5kIHB1dCB0aGUgdGVzdGltb255IGludG8gdGhlIGFyaywgYW5kIHNldCB0aGUgc3RhdmVzIG9uIHRoZSBhcmssIGFuZCBwdXQgdGhlIG1lcmN5IHNlYXQgYWJvdmUgdXBvbiB0aGUgYXJrOgpBbmQgaGUgYnJvdWdodCB0aGUgYXJrIGludG8gdGhlIHRhYmVybmFjbGUsIGFuZCBzZXQgdXAgdGhlIHZhaWwgb2YgdGhlIGNvdmVyaW5nLCBhbmQgY292ZXJlZCB0aGUgYXJrIG9mIHRoZSB0ZXN0aW1vbnk7IGFzIHRoZSBMT1JEIGNvbW1hbmRlZCBNb3Nlcy4KQW5kIGhlIHB1dCB0aGUgdGFibGUgaW4gdGhlIHRlbnQgb2YgdGhlIGNvbmdyZWdhdGlvbiwgdXBvbiB0aGUgc2lkZSBvZiB0aGUgdGFiZXJuYWNsZSBub3J0aHdhcmQsIHdpdGhvdXQgdGhlIHZhaWwuCkFuZCBoZSBzZXQgdGhlIGJyZWFkIGluIG9yZGVyIHVwb24gaXQgYmVmb3JlIHRoZSBMT1JEOyBhcyB0aGUgTE9SRCBoYWQgY29tbWFuZGVkIE1vc2VzLgpBbmQgaGUgcHV0IHRoZSBjYW5kbGVzdGljayBpbiB0aGUgdGVudCBvZiB0aGUgY29uZ3JlZ2F0aW9uLCBvdmVyIGFnYWluc3QgdGhlIHRhYmxlLCBvbiB0aGUgc2lkZSBvZiB0aGUgdGFiZXJuYWNsZSBzb3V0aHdhcmQuCkFuZCBoZSBsaWdodGVkIHRoZSBsYW1wcyBiZWZvcmUgdGhlIExPUkQ7IGFzIHRoZSBMT1JEIGNvbW1hbmRlZCBNb3Nlcy4KQW5kIGhlIHB1dCB0aGUgZ29sZGVuIGFsdGFyIGluIHRoZSB0ZW50IG9mIHRoZSBjb25ncmVnYXRpb24gYmVmb3JlIHRoZSB2YWlsOgpBbmQgaGUgYnVybnQgc3dlZXQgaW5jZW5zZSB0aGVyZW9uOyBhcyB0aGUgTE9SRCBjb21tYW5kZWQgTW9zZXMuCkFuZCBoZSBzZXQgdXAgdGhlIGhhbmdpbmcgYXQgdGhlIGRvb3Igb2YgdGhlIHRhYmVybmFjbGUuCkFuZCBoZSBwdXQgdGhlIGFsdGFyIG9mIGJ1cm50IG9mZmVyaW5nIGJ5IHRoZSBkb29yIG9mIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSB0ZW50IG9mIHRoZSBjb25ncmVnYXRpb24sIGFuZCBvZmZlcmVkIHVwb24gaXQgdGhlIGJ1cm50IG9mZmVyaW5nIGFuZCB0aGUgbWVhdCBvZmZlcmluZzsgYXMgdGhlIExPUkQgY29tbWFuZGVkIE1vc2VzLgpBbmQgaGUgc2V0IHRoZSBsYXZlciBiZXR3ZWVuIHRoZSB0ZW50IG9mIHRoZSBjb25ncmVnYXRpb24gYW5kIHRoZSBhbHRhciwgYW5kIHB1dCB3YXRlciB0aGVyZSwgdG8gd2FzaCB3aXRoYWwuCkFuZCBNb3NlcyBhbmQgQWFyb24gYW5kIGhpcyBzb25zIHdhc2hlZCB0aGVpciBoYW5kcyBhbmQgdGhlaXIgZmVldCB0aGVyZWF0OgpXaGVuIHRoZXkgd2VudCBpbnRvIHRoZSB0ZW50IG9mIHRoZSBjb25ncmVnYXRpb24sIGFuZCB3aGVuIHRoZXkgY2FtZSBuZWFyIHVudG8gdGhlIGFsdGFyLCB0aGV5IHdhc2hlZDsgYXMgdGhlIExPUkQgY29tbWFuZGVkIE1vc2VzLgpBbmQgaGUgcmVhcmVkIHVwIHRoZSBjb3VydCByb3VuZCBhYm91dCB0aGUgdGFiZXJuYWNsZSBhbmQgdGhlIGFsdGFyLCBhbmQgc2V0IHVwIHRoZSBoYW5naW5nIG9mIHRoZSBjb3VydCBnYXRlLiBTbyBNb3NlcyBmaW5pc2hlZCB0aGUgd29yay4KVGhlbiBhIGNsb3VkIGNvdmVyZWQgdGhlIHRlbnQgb2YgdGhlIGNvbmdyZWdhdGlvbiwgYW5kIHRoZSBnbG9yeSBvZiB0aGUgTE9SRCBmaWxsZWQgdGhlIHRhYmVybmFjbGUuCkFuZCBNb3NlcyB3YXMgbm90IGFibGUgdG8gZW50ZXIgaW50byB0aGUgdGVudCBvZiB0aGUgY29uZ3JlZ2F0aW9uLCBiZWNhdXNlIHRoZSBjbG91ZCBhYm9kZSB0aGVyZW9uLCBhbmQgdGhlIGdsb3J5IG9mIHRoZSBMT1JEIGZpbGxlZCB0aGUgdGFiZXJuYWNsZS4KQW5kIHdoZW4gdGhlIGNsb3VkIHdhcyB0YWtlbiB1cCBmcm9tIG92ZXIgdGhlIHRhYmVybmFjbGUsIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgd2VudCBvbndhcmQgaW4gYWxsIHRoZWlyIGpvdXJuZXlzOgpCdXQgaWYgdGhlIGNsb3VkIHdlcmUgbm90IHRha2VuIHVwLCB0aGVuIHRoZXkgam91cm5leWVkIG5vdCB0aWxsIHRoZSBkYXkgdGhhdCBpdCB3YXMgdGFrZW4gdXAuCkZvciB0aGUgY2xvdWQgb2YgdGhlIExPUkQgd2FzIHVwb24gdGhlIHRhYmVybmFjbGUgYnkgZGF5LCBhbmQgZmlyZSB3YXMgb24gaXQgYnkgbmlnaHQsIGluIHRoZSBzaWdodCBvZiBhbGwgdGhlIGhvdXNlIG9mIElzcmFlbCwgdGhyb3VnaG91dCBhbGwgdGhlaXIgam91cm5leXMuCkFuZCB0aGUgTE9SRCBjYWxsZWQgdW50byBNb3NlcywgYW5kIHNwYWtlIHVudG8gaGltIG91dCBvZiB0aGUgdGFiZXJuYWNsZSBvZiB0aGUgY29uZ3JlZ2F0aW9uLCBzYXlpbmcsClNwZWFrIHVudG8gdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgYW5kIHNheSB1bnRvIHRoZW0sIElmIGFueSBtYW4gb2YgeW91IGJyaW5nIGFuIG9mZmVyaW5nIHVudG8gdGhlIExPUkQsIHllIHNoYWxsIGJyaW5nIHlvdXIgb2ZmZXJpbmcgb2YgdGhlIGNhdHRsZSwgZXZlbiBvZiB0aGUgaGVyZCwgYW5kIG9mIHRoZSBmbG9jay4KSWYgaGlzIG9mZmVyaW5nIGJlIGEgYnVybnQgc2FjcmlmaWNlIG9mIHRoZSBoZXJkLCBsZXQgaGltIG9mZmVyIGEgbWFsZSB3aXRob3V0IGJsZW1pc2g6IGhlIHNoYWxsIG9mZmVyIGl0IG9mIGhpcyBvd24gdm9sdW50YXJ5IHdpbGwgYXQgdGhlIGRvb3Igb2YgdGhlIHRhYmVybmFjbGUgb2YgdGhlIGNvbmdyZWdhdGlvbiBiZWZvcmUgdGhlIExPUkQuCkFuZCBoZSBzaGFsbCBwdXQgaGlzIGhhbmQgdXBvbiB0aGUgaGVhZCBvZiB0aGUgYnVybnQgb2ZmZXJpbmc7IGFuZCBpdCBzaGFsbCBiZSBhY2NlcHRlZCBmb3IgaGltIHRvIG1ha2UgYXRvbmVtZW50IGZvciBoaW0uCkFuZCBoZSBzaGFsbCBraWxsIHRoZSBidWxsb2NrIGJlZm9yZSB0aGUgTE9SRDogYW5kIHRoZSBwcmllc3RzLCBBYXJvbidzIHNvbnMsIHNoYWxsIGJyaW5nIHRoZSBibG9vZCwgYW5kIHNwcmlua2xlIHRoZSBibG9vZCByb3VuZCBhYm91dCB1cG9uIHRoZSBhbHRhciB0aGF0IGlzIGJ5IHRoZSBkb29yIG9mIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBjb25ncmVnYXRpb24uCkFuZCBoZSBzaGFsbCBmbGF5IHRoZSBidXJudCBvZmZlcmluZywgYW5kIGN1dCBpdCBpbnRvIGhpcyBwaWVjZXMuCkFuZCB0aGUgc29ucyBvZiBBYXJvbiB0aGUgcHJpZXN0IHNoYWxsIHB1dCBmaXJlIHVwb24gdGhlIGFsdGFyLCBhbmQgbGF5IHRoZSB3b29kIGluIG9yZGVyIHVwb24gdGhlIGZpcmU6CkFuZCB0aGUgcHJpZXN0cywgQWFyb24ncyBzb25zLCBzaGFsbCBsYXkgdGhlIHBhcnRzLCB0aGUgaGVhZCwgYW5kIHRoZSBmYXQsIGluIG9yZGVyIHVwb24gdGhlIHdvb2QgdGhhdCBpcyBvbiB0aGUgZmlyZSB3aGljaCBpcyB1cG9uIHRoZSBhbHRhcjoKQnV0IGhpcyBpbndhcmRzIGFuZCBoaXMgbGVncyBzaGFsbCBoZSB3YXNoIGluIHdhdGVyOiBhbmQgdGhlIHByaWVzdCBzaGFsbCBidXJuIGFsbCBvbiB0aGUgYWx0YXIsIHRvIGJlIGEgYnVybnQgc2FjcmlmaWNlLCBhbiBvZmZlcmluZyBtYWRlIGJ5IGZpcmUsIG9mIGEgc3dlZXQgc2F2b3VyIHVudG8gdGhlIExPUkQuCkFuZCBpZiBoaXMgb2ZmZXJpbmcgYmUgb2YgdGhlIGZsb2NrcywgbmFtZWx5LCBvZiB0aGUgc2hlZXAsIG9yIG9mIHRoZSBnb2F0cywgZm9yIGEgYnVybnQgc2FjcmlmaWNlOyBoZSBzaGFsbCBicmluZyBpdCBhIG1hbGUgd2l0aG91dCBibGVtaXNoLgpBbmQgaGUgc2hhbGwga2lsbCBpdCBvbiB0aGUgc2lkZSBvZiB0aGUgYWx0YXIgbm9ydGh3YXJkIGJlZm9yZSB0aGUgTE9SRDogYW5kIHRoZSBwcmllc3RzLCBBYXJvbidzIHNvbnMsIHNoYWxsIHNwcmlua2xlIGhpcyBibG9vZCByb3VuZCBhYm91dCB1cG9uIHRoZSBhbHRhci4KQW5kIGhlIHNoYWxsIGN1dCBpdCBpbnRvIGhpcyBwaWVjZXMsIHdpdGggaGlzIGhlYWQgYW5kIGhpcyBmYXQ6IGFuZCB0aGUgcHJpZXN0IHNoYWxsIGxheSB0aGVtIGluIG9yZGVyIG9uIHRoZSB3b29kIHRoYXQgaXMgb24gdGhlIGZpcmUgd2hpY2ggaXMgdXBvbiB0aGUgYWx0YXI6CkJ1dCBoZSBzaGFsbCB3YXNoIHRoZSBpbndhcmRzIGFuZCB0aGUgbGVncyB3aXRoIHdhdGVyOiBhbmQgdGhlIHByaWVzdCBzaGFsbCBicmluZyBpdCBhbGwsIGFuZCBidXJuIGl0IHVwb24gdGhlIGFsdGFyOiBpdCBpcyBhIGJ1cm50IHNhY3JpZmljZSwgYW4gb2ZmZXJpbmcgbWFkZSBieSBmaXJlLCBvZiBhIHN3ZWV0IHNhdm91ciB1bnRvIHRoZSBMT1JELgpBbmQgaWYgdGhlIGJ1cm50IHNhY3JpZmljZSBmb3IgaGlzIG9mZmVyaW5nIHRvIHRoZSBMT1JEIGJlIG9mIGZvd2xzLCB0aGVuIGhlIHNoYWxsIGJyaW5nIGhpcyBvZmZlcmluZyBvZiB0dXJ0bGVkb3Zlcywgb3Igb2YgeW91bmcgcGlnZW9ucy4KQW5kIHRoZSBwcmllc3Qgc2hhbGwgYnJpbmcgaXQgdW50byB0aGUgYWx0YXIsIGFuZCB3cmluZyBvZmYgaGlzIGhlYWQsIGFuZCBidXJuIGl0IG9uIHRoZSBhbHRhcjsgYW5kIHRoZSBibG9vZCB0aGVyZW9mIHNoYWxsIGJlIHdydW5nIG91dCBhdCB0aGUgc2lkZSBvZiB0aGUgYWx0YXI6CkFuZCBoZSBzaGFsbCBwbHVjayBhd2F5IGhpcyBjcm9wIHdpdGggaGlzIGZlYXRoZXJzLCBhbmQgY2FzdCBpdCBiZXNpZGUgdGhlIGFsdGFyIG9uIHRoZSBlYXN0IHBhcnQsIGJ5IHRoZSBwbGFjZSBvZiB0aGUgYXNoZXM6CkFuZCBoZSBzaGFsbCBjbGVhdmUgaXQgd2l0aCB0aGUgd2luZ3MgdGhlcmVvZiwgYnV0IHNoYWxsIG5vdCBkaXZpZGUgaXQgYXN1bmRlcjogYW5kIHRoZSBwcmllc3Qgc2hhbGwgYnVybiBpdCB1cG9uIHRoZSBhbHRhciwgdXBvbiB0aGUgd29vZCB0aGF0IGlzIHVwb24gdGhlIGZpcmU6IGl0IGlzIGEgYnVybnQgc2FjcmlmaWNlLCBhbiBvZmZlcmluZyBtYWRlIGJ5IGZpcmUsIG9mIGEgc3dlZXQgc2F2b3VyIHVudG8gdGhlIExPUkQuCkFuZCB3aGVuIGFueSB3aWxsIG9mZmVyIGEgbWVhdCBvZmZlcmluZyB1bnRvIHRoZSBMT1JELCBoaXMgb2ZmZXJpbmcgc2hhbGwgYmUgb2YgZmluZSBmbG91cjsgYW5kIGhlIHNoYWxsIHBvdXIgb2lsIHVwb24gaXQsIGFuZCBwdXQgZnJhbmtpbmNlbnNlIHRoZXJlb246CkFuZCBoZSBzaGFsbCBicmluZyBpdCB0byBBYXJvbidzIHNvbnMgdGhlIHByaWVzdHM6IGFuZCBoZSBzaGFsbCB0YWtlIHRoZXJlb3V0IGhpcyBoYW5kZnVsIG9mIHRoZSBmbG91ciB0aGVyZW9mLCBhbmQgb2YgdGhlIG9pbCB0aGVyZW9mLCB3aXRoIGFsbCB0aGUgZnJhbmtpbmNlbnNlIHRoZXJlb2Y7IGFuZCB0aGUgcHJpZXN0IHNoYWxsIGJ1cm4gdGhlIG1lbW9yaWFsIG9mIGl0IHVwb24gdGhlIGFsdGFyLCB0byBiZSBhbiBvZmZlcmluZyBtYWRlIGJ5IGZpcmUsIG9mIGEgc3dlZXQgc2F2b3VyIHVudG8gdGhlIExPUkQ6CkFuZCB0aGUgcmVtbmFudCBvZiB0aGUgbWVhdCBvZmZlcmluZyBzaGFsbCBiZSBBYXJvbidzIGFuZCBoaXMgc29ucyc6IGl0IGlzIGEgdGhpbmcgbW9zdCBob2x5IG9mIHRoZSBvZmZlcmluZ3Mgb2YgdGhlIExPUkQgbWFkZSBieSBmaXJlLgpBbmQgaWYgdGhvdSBicmluZyBhbiBvYmxhdGlvbiBvZiBhIG1lYXQgb2ZmZXJpbmcgYmFrZW4gaW4gdGhlIG92ZW4sIGl0IHNoYWxsIGJlIHVubGVhdmVuZWQgY2FrZXMgb2YgZmluZSBmbG91ciBtaW5nbGVkIHdpdGggb2lsLCBvciB1bmxlYXZlbmVkIHdhZmVycyBhbm9pbnRlZCB3aXRoIG9pbC4KQW5kIGlmIHRoeSBvYmxhdGlvbiBiZSBhIG1lYXQgb2ZmZXJpbmcgYmFrZW4gaW4gYSBwYW4sIGl0IHNoYWxsIGJlIG9mIGZpbmUgZmxvdXIgdW5sZWF2ZW5lZCwgbWluZ2xlZCB3aXRoIG9pbC4KVGhvdSBzaGFsdCBwYXJ0IGl0IGluIHBpZWNlcywgYW5kIHBvdXIgb2lsIHRoZXJlb246IGl0IGlzIGEgbWVhdCBvZmZlcmluZy4KQW5kIGlmIHRoeSBvYmxhdGlvbiBiZSBhIG1lYXQgb2ZmZXJpbmcgYmFrZW4gaW4gdGhlIGZyeWluZ3BhbiwgaXQgc2hhbGwgYmUgbWFkZSBvZiBmaW5lIGZsb3VyIHdpdGggb2lsLgpBbmQgdGhvdSBzaGFsdCBicmluZyB0aGUgbWVhdCBvZmZlcmluZyB0aGF0IGlzIG1hZGUgb2YgdGhlc2UgdGhpbmdzIHVudG8gdGhlIExPUkQ6IGFuZCB3aGVuIGl0IGlzIHByZXNlbnRlZCB1bnRvIHRoZSBwcmllc3QsIGhlIHNoYWxsIGJyaW5nIGl0IHVudG8gdGhlIGFsdGFyLgpBbmQgdGhlIHByaWVzdCBzaGFsbCB0YWtlIGZyb20gdGhlIG1lYXQgb2ZmZXJpbmcgYSBtZW1vcmlhbCB0aGVyZW9mLCBhbmQgc2hhbGwgYnVybiBpdCB1cG9uIHRoZSBhbHRhcjogaXQgaXMgYW4gb2ZmZXJpbmcgbWFkZSBieSBmaXJlLCBvZiBhIHN3ZWV0IHNhdm91ciB1bnRvIHRoZSBMT1JELgpBbmQgdGhhdCB3aGljaCBpcyBsZWZ0IG9mIHRoZSBtZWF0IG9mZmVyaW5nIHNoYWxsIGJlIEFhcm9uJ3MgYW5kIGhpcyBzb25zJzogaXQgaXMgYSB0aGluZyBtb3N0IGhvbHkgb2YgdGhlIG9mZmVyaW5ncyBvZiB0aGUgTE9SRCBtYWRlIGJ5IGZpcmUuCk5vIG1lYXQgb2ZmZXJpbmcsIHdoaWNoIHllIHNoYWxsIGJyaW5nIHVudG8gdGhlIExPUkQsIHNoYWxsIGJlIG1hZGUgd2l0aCBsZWF2ZW46IGZvciB5ZSBzaGFsbCBidXJuIG5vIGxlYXZlbiwgbm9yIGFueSBob25leSwgaW4gYW55IG9mZmVyaW5nIG9mIHRoZSBMT1JEIG1hZGUgYnkgZmlyZS4KQXMgZm9yIHRoZSBvYmxhdGlvbiBvZiB0aGUgZmlyc3RmcnVpdHMsIHllIHNoYWxsIG9mZmVyIHRoZW0gdW50byB0aGUgTE9SRDogYnV0IHRoZXkgc2hhbGwgbm90IGJlIGJ1cm50IG9uIHRoZSBhbHRhciBmb3IgYSBzd2VldCBzYXZvdXIuCkFuZCBldmVyeSBvYmxhdGlvbiBvZiB0aHkgbWVhdCBvZmZlcmluZyBzaGFsdCB0aG91IHNlYXNvbiB3aXRoIHNhbHQ7IG5laXRoZXIgc2hhbHQgdGhvdSBzdWZmZXIgdGhlIHNhbHQgb2YgdGhlIGNvdmVuYW50IG9mIHRoeSBHb2QgdG8gYmUgbGFja2luZyBmcm9tIHRoeSBtZWF0IG9mZmVyaW5nOiB3aXRoIGFsbCB0aGluZSBvZmZlcmluZ3MgdGhvdSBzaGFsdCBvZmZlciBzYWx0LgpBbmQgaWYgdGhvdSBvZmZlciBhIG1lYXQgb2ZmZXJpbmcgb2YgdGh5IGZpcnN0ZnJ1aXRzIHVudG8gdGhlIExPUkQsIHRob3Ugc2hhbHQgb2ZmZXIgZm9yIHRoZSBtZWF0IG9mZmVyaW5nIG9mIHRoeSBmaXJzdGZydWl0cyBncmVlbiBlYXJzIG9mIGNvcm4gZHJpZWQgYnkgdGhlIGZpcmUsIGV2ZW4gY29ybiBiZWF0ZW4gb3V0IG9mIGZ1bGwgZWFycy4KQW5kIHRob3Ugc2hhbHQgcHV0IG9pbCB1cG9uIGl0LCBhbmQgbGF5IGZyYW5raW5jZW5zZSB0aGVyZW9uOiBpdCBpcyBhIG1lYXQgb2ZmZXJpbmcuCkFuZCB0aGUgcHJpZXN0IHNoYWxsIGJ1cm4gdGhlIG1lbW9yaWFsIG9mIGl0LCBwYXJ0IG9mIHRoZSBiZWF0ZW4gY29ybiB0aGVyZW9mLCBhbmQgcGFydCBvZiB0aGUgb2lsIHRoZXJlb2YsIHdpdGggYWxsIHRoZSBmcmFua2luY2Vuc2UgdGhlcmVvZjogaXQgaXMgYW4gb2ZmZXJpbmcgbWFkZSBieSBmaXJlIHVudG8gdGhlIExPUkQuCkFuZCBpZiBoaXMgb2JsYXRpb24gYmUgYSBzYWNyaWZpY2Ugb2YgcGVhY2Ugb2ZmZXJpbmcsIGlmIGhlIG9mZmVyIGl0IG9mIHRoZSBoZXJkOyB3aGV0aGVyIGl0IGJlIGEgbWFsZSBvciBmZW1hbGUsIGhlIHNoYWxsIG9mZmVyIGl0IHdpdGhvdXQgYmxlbWlzaCBiZWZvcmUgdGhlIExPUkQuCkFuZCBoZSBzaGFsbCBsYXkgaGlzIGhhbmQgdXBvbiB0aGUgaGVhZCBvZiBoaXMgb2ZmZXJpbmcsIGFuZCBraWxsIGl0IGF0IHRoZSBkb29yIG9mIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBjb25ncmVnYXRpb246IGFuZCBBYXJvbidzIHNvbnMgdGhlIHByaWVzdHMgc2hhbGwgc3ByaW5rbGUgdGhlIGJsb29kIHVwb24gdGhlIGFsdGFyIHJvdW5kIGFib3V0LgpBbmQgaGUgc2hhbGwgb2ZmZXIgb2YgdGhlIHNhY3JpZmljZSBvZiB0aGUgcGVhY2Ugb2ZmZXJpbmcgYW4gb2ZmZXJpbmcgbWFkZSBieSBmaXJlIHVudG8gdGhlIExPUkQ7IHRoZSBmYXQgdGhhdCBjb3ZlcmV0aCB0aGUgaW53YXJkcywgYW5kIGFsbCB0aGUgZmF0IHRoYXQgaXMgdXBvbiB0aGUgaW53YXJkcywKQW5kIHRoZSB0d28ga2lkbmV5cywgYW5kIHRoZSBmYXQgdGhhdCBpcyBvbiB0aGVtLCB3aGljaCBpcyBieSB0aGUgZmxhbmtzLCBhbmQgdGhlIGNhdWwgYWJvdmUgdGhlIGxpdmVyLCB3aXRoIHRoZSBraWRuZXlzLCBpdCBzaGFsbCBoZSB0YWtlIGF3YXkuCkFuZCBBYXJvbidzIHNvbnMgc2hhbGwgYnVybiBpdCBvbiB0aGUgYWx0YXIgdXBvbiB0aGUgYnVybnQgc2FjcmlmaWNlLCB3aGljaCBpcyB1cG9uIHRoZSB3b29kIHRoYXQgaXMgb24gdGhlIGZpcmU6IGl0IGlzIGFuIG9mZmVyaW5nIG1hZGUgYnkgZmlyZSwgb2YgYSBzd2VldCBzYXZvdXIgdW50byB0aGUgTE9SRC4KQW5kIGlmIGhpcyBvZmZlcmluZyBmb3IgYSBzYWNyaWZpY2Ugb2YgcGVhY2Ugb2ZmZXJpbmcgdW50byB0aGUgTE9SRCBiZSBvZiB0aGUgZmxvY2s7IG1hbGUgb3IgZmVtYWxlLCBoZSBzaGFsbCBvZmZlciBpdCB3aXRob3V0IGJsZW1pc2guCklmIGhlIG9mZmVyIGEgbGFtYiBmb3IgaGlzIG9mZmVyaW5nLCB0aGVuIHNoYWxsIGhlIG9mZmVyIGl0IGJlZm9yZSB0aGUgTE9SRC4KQW5kIGhlIHNoYWxsIGxheSBoaXMgaGFuZCB1cG9uIHRoZSBoZWFkIG9mIGhpcyBvZmZlcmluZywgYW5kIGtpbGwgaXQgYmVmb3JlIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBjb25ncmVnYXRpb246IGFuZCBBYXJvbidzIHNvbnMgc2hhbGwgc3ByaW5rbGUgdGhlIGJsb29kIHRoZXJlb2Ygcm91bmQgYWJvdXQgdXBvbiB0aGUgYWx0YXIuCkFuZCBoZSBzaGFsbCBvZmZlciBvZiB0aGUgc2FjcmlmaWNlIG9mIHRoZSBwZWFjZSBvZmZlcmluZyBhbiBvZmZlcmluZyBtYWRlIGJ5IGZpcmUgdW50byB0aGUgTE9SRDsgdGhlIGZhdCB0aGVyZW9mLCBhbmQgdGhlIHdob2xlIHJ1bXAsIGl0IHNoYWxsIGhlIHRha2Ugb2ZmIGhhcmQgYnkgdGhlIGJhY2tib25lOyBhbmQgdGhlIGZhdCB0aGF0IGNvdmVyZXRoIHRoZSBpbndhcmRzLCBhbmQgYWxsIHRoZSBmYXQgdGhhdCBpcyB1cG9uIHRoZSBpbndhcmRzLApBbmQgdGhlIHR3byBraWRuZXlzLCBhbmQgdGhlIGZhdCB0aGF0IGlzIHVwb24gdGhlbSwgd2hpY2ggaXMgYnkgdGhlIGZsYW5rcywgYW5kIHRoZSBjYXVsIGFib3ZlIHRoZSBsaXZlciwgd2l0aCB0aGUga2lkbmV5cywgaXQgc2hhbGwgaGUgdGFrZSBhd2F5LgpBbmQgdGhlIHByaWVzdCBzaGFsbCBidXJuIGl0IHVwb24gdGhlIGFsdGFyOiBpdCBpcyB0aGUgZm9vZCBvZiB0aGUgb2ZmZXJpbmcgbWFkZSBieSBmaXJlIHVudG8gdGhlIExPUkQuCkFuZCBpZiBoaXMgb2ZmZXJpbmcgYmUgYSBnb2F0LCB0aGVuIGhlIHNoYWxsIG9mZmVyIGl0IGJlZm9yZSB0aGUgTE9SRC4KQW5kIGhlIHNoYWxsIGxheSBoaXMgaGFuZCB1cG9uIHRoZSBoZWFkIG9mIGl0LCBhbmQga2lsbCBpdCBiZWZvcmUgdGhlIHRhYmVybmFjbGUgb2YgdGhlIGNvbmdyZWdhdGlvbjogYW5kIHRoZSBzb25zIG9mIEFhcm9uIHNoYWxsIHNwcmlua2xlIHRoZSBibG9vZCB0aGVyZW9mIHVwb24gdGhlIGFsdGFyIHJvdW5kIGFib3V0LgpBbmQgaGUgc2hhbGwgb2ZmZXIgdGhlcmVvZiBoaXMgb2ZmZXJpbmcsIGV2ZW4gYW4gb2ZmZXJpbmcgbWFkZSBieSBmaXJlIHVudG8gdGhlIExPUkQ7IHRoZSBmYXQgdGhhdCBjb3ZlcmV0aCB0aGUgaW53YXJkcywgYW5kIGFsbCB0aGUgZmF0IHRoYXQgaXMgdXBvbiB0aGUgaW53YXJkcywKQW5kIHRoZSB0d28ga2lkbmV5cywgYW5kIHRoZSBmYXQgdGhhdCBpcyB1cG9uIHRoZW0sIHdoaWNoIGlzIGJ5IHRoZSBmbGFua3MsIGFuZCB0aGUgY2F1bCBhYm92ZSB0aGUgbGl2ZXIsIHdpdGggdGhlIGtpZG5leXMsIGl0IHNoYWxsIGhlIHRha2UgYXdheS4KQW5kIHRoZSBwcmllc3Qgc2hhbGwgYnVybiB0aGVtIHVwb24gdGhlIGFsdGFyOiBpdCBpcyB0aGUgZm9vZCBvZiB0aGUgb2ZmZXJpbmcgbWFkZSBieSBmaXJlIGZvciBhIHN3ZWV0IHNhdm91cjogYWxsIHRoZSBmYXQgaXMgdGhlIExPUkQncy4KSXQgc2hhbGwgYmUgYSBwZXJwZXR1YWwgc3RhdHV0ZSBmb3IgeW91ciBnZW5lcmF0aW9ucyB0aHJvdWdob3V0IGFsbCB5b3VyIGR3ZWxsaW5ncywgdGhhdCB5ZSBlYXQgbmVpdGhlciBmYXQgbm9yIGJsb29kLgpBbmQgdGhlIExPUkQgc3Bha2UgdW50byBNb3Nlcywgc2F5aW5nLApTcGVhayB1bnRvIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIHNheWluZywgSWYgYSBzb3VsIHNoYWxsIHNpbiB0aHJvdWdoIGlnbm9yYW5jZSBhZ2FpbnN0IGFueSBvZiB0aGUgY29tbWFuZG1lbnRzIG9mIHRoZSBMT1JEIGNvbmNlcm5pbmcgdGhpbmdzIHdoaWNoIG91Z2h0IG5vdCB0byBiZSBkb25lLCBhbmQgc2hhbGwgZG8gYWdhaW5zdCBhbnkgb2YgdGhlbToKSWYgdGhlIHByaWVzdCB0aGF0IGlzIGFub2ludGVkIGRvIHNpbiBhY2NvcmRpbmcgdG8gdGhlIHNpbiBvZiB0aGUgcGVvcGxlOyB0aGVuIGxldCBoaW0gYnJpbmcgZm9yIGhpcyBzaW4sIHdoaWNoIGhlIGhhdGggc2lubmVkLCBhIHlvdW5nIGJ1bGxvY2sgd2l0aG91dCBibGVtaXNoIHVudG8gdGhlIExPUkQgZm9yIGEgc2luIG9mZmVyaW5nLgpBbmQgaGUgc2hhbGwgYnJpbmcgdGhlIGJ1bGxvY2sgdW50byB0aGUgZG9vciBvZiB0aGUgdGFiZXJuYWNsZSBvZiB0aGUgY29uZ3JlZ2F0aW9uIGJlZm9yZSB0aGUgTE9SRDsgYW5kIHNoYWxsIGxheSBoaXMgaGFuZCB1cG9uIHRoZSBidWxsb2NrJ3MgaGVhZCwgYW5kIGtpbGwgdGhlIGJ1bGxvY2sgYmVmb3JlIHRoZSBMT1JELgpBbmQgdGhlIHByaWVzdCB0aGF0IGlzIGFub2ludGVkIHNoYWxsIHRha2Ugb2YgdGhlIGJ1bGxvY2sncyBibG9vZCwgYW5kIGJyaW5nIGl0IHRvIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBjb25ncmVnYXRpb246CkFuZCB0aGUgcHJpZXN0IHNoYWxsIGRpcCBoaXMgZmluZ2VyIGluIHRoZSBibG9vZCwgYW5kIHNwcmlua2xlIG9mIHRoZSBibG9vZCBzZXZlbiB0aW1lcyBiZWZvcmUgdGhlIExPUkQsIGJlZm9yZSB0aGUgdmFpbCBvZiB0aGUgc2FuY3R1YXJ5LgpBbmQgdGhlIHByaWVzdCBzaGFsbCBwdXQgc29tZSBvZiB0aGUgYmxvb2QgdXBvbiB0aGUgaG9ybnMgb2YgdGhlIGFsdGFyIG9mIHN3ZWV0IGluY2Vuc2UgYmVmb3JlIHRoZSBMT1JELCB3aGljaCBpcyBpbiB0aGUgdGFiZXJuYWNsZSBvZiB0aGUgY29uZ3JlZ2F0aW9uOyBhbmQgc2hhbGwgcG91ciBhbGwgdGhlIGJsb29kIG9mIHRoZSBidWxsb2NrIGF0IHRoZSBib3R0b20gb2YgdGhlIGFsdGFyIG9mIHRoZSBidXJudCBvZmZlcmluZywgd2hpY2ggaXMgYXQgdGhlIGRvb3Igb2YgdGhlIHRhYmVybmFjbGUgb2YgdGhlIGNvbmdyZWdhdGlvbi4KQW5kIGhlIHNoYWxsIHRha2Ugb2ZmIGZyb20gaXQgYWxsIHRoZSBmYXQgb2YgdGhlIGJ1bGxvY2sgZm9yIHRoZSBzaW4gb2ZmZXJpbmc7IHRoZSBmYXQgdGhhdCBjb3ZlcmV0aCB0aGUgaW53YXJkcywgYW5kIGFsbCB0aGUgZmF0IHRoYXQgaXMgdXBvbiB0aGUgaW53YXJkcywKQW5kIHRoZSB0d28ga2lkbmV5cywgYW5kIHRoZSBmYXQgdGhhdCBpcyB1cG9uIHRoZW0sIHdoaWNoIGlzIGJ5IHRoZSBmbGFua3MsIGFuZCB0aGUgY2F1bCBhYm92ZSB0aGUgbGl2ZXIsIHdpdGggdGhlIGtpZG5leXMsIGl0IHNoYWxsIGhlIHRha2UgYXdheSwKQXMgaXQgd2FzIHRha2VuIG9mZiBmcm9tIHRoZSBidWxsb2NrIG9mIHRoZSBzYWNyaWZpY2Ugb2YgcGVhY2Ugb2ZmZXJpbmdzOiBhbmQgdGhlIHByaWVzdCBzaGFsbCBidXJuIHRoZW0gdXBvbiB0aGUgYWx0YXIgb2YgdGhlIGJ1cm50IG9mZmVyaW5nLgpBbmQgdGhlIHNraW4gb2YgdGhlIGJ1bGxvY2ssIGFuZCBhbGwgaGlzIGZsZXNoLCB3aXRoIGhpcyBoZWFkLCBhbmQgd2l0aCBoaXMgbGVncywgYW5kIGhpcyBpbndhcmRzLCBhbmQgaGlzIGR1bmcsCkV2ZW4gdGhlIHdob2xlIGJ1bGxvY2sgc2hhbGwgaGUgY2FycnkgZm9ydGggd2l0aG91dCB0aGUgY2FtcCB1bnRvIGEgY2xlYW4gcGxhY2UsIHdoZXJlIHRoZSBhc2hlcyBhcmUgcG91cmVkIG91dCwgYW5kIGJ1cm4gaGltIG9uIHRoZSB3b29kIHdpdGggZmlyZTogd2hlcmUgdGhlIGFzaGVzIGFyZSBwb3VyZWQgb3V0IHNoYWxsIGhlIGJlIGJ1cm50LgpBbmQgaWYgdGhlIHdob2xlIGNvbmdyZWdhdGlvbiBvZiBJc3JhZWwgc2luIHRocm91Z2ggaWdub3JhbmNlLCBhbmQgdGhlIHRoaW5nIGJlIGhpZCBmcm9tIHRoZSBleWVzIG9mIHRoZSBhc3NlbWJseSwgYW5kIHRoZXkgaGF2ZSBkb25lIHNvbWV3aGF0IGFnYWluc3QgYW55IG9mIHRoZSBjb21tYW5kbWVudHMgb2YgdGhlIExPUkQgY29uY2VybmluZyB0aGluZ3Mgd2hpY2ggc2hvdWxkIG5vdCBiZSBkb25lLCBhbmQgYXJlIGd1aWx0eTsKV2hlbiB0aGUgc2luLCB3aGljaCB0aGV5IGhhdmUgc2lubmVkIGFnYWluc3QgaXQsIGlzIGtub3duLCB0aGVuIHRoZSBjb25ncmVnYXRpb24gc2hhbGwgb2ZmZXIgYSB5b3VuZyBidWxsb2NrIGZvciB0aGUgc2luLCBhbmQgYnJpbmcgaGltIGJlZm9yZSB0aGUgdGFiZXJuYWNsZSBvZiB0aGUgY29uZ3JlZ2F0aW9uLgpBbmQgdGhlIGVsZGVycyBvZiB0aGUgY29uZ3JlZ2F0aW9uIHNoYWxsIGxheSB0aGVpciBoYW5kcyB1cG9uIHRoZSBoZWFkIG9mIHRoZSBidWxsb2NrIGJlZm9yZSB0aGUgTE9SRDogYW5kIHRoZSBidWxsb2NrIHNoYWxsIGJlIGtpbGxlZCBiZWZvcmUgdGhlIExPUkQuCkFuZCB0aGUgcHJpZXN0IHRoYXQgaXMgYW5vaW50ZWQgc2hhbGwgYnJpbmcgb2YgdGhlIGJ1bGxvY2sncyBibG9vZCB0byB0aGUgdGFiZXJuYWNsZSBvZiB0aGUgY29uZ3JlZ2F0aW9uOgpBbmQgdGhlIHByaWVzdCBzaGFsbCBkaXAgaGlzIGZpbmdlciBpbiBzb21lIG9mIHRoZSBibG9vZCwgYW5kIHNwcmlua2xlIGl0IHNldmVuIHRpbWVzIGJlZm9yZSB0aGUgTE9SRCwgZXZlbiBiZWZvcmUgdGhlIHZhaWwuCkFuZCBoZSBzaGFsbCBwdXQgc29tZSBvZiB0aGUgYmxvb2QgdXBvbiB0aGUgaG9ybnMgb2YgdGhlIGFsdGFyIHdoaWNoIGlzIGJlZm9yZSB0aGUgTE9SRCwgdGhhdCBpcyBpbiB0aGUgdGFiZXJuYWNsZSBvZiB0aGUgY29uZ3JlZ2F0aW9uLCBhbmQgc2hhbGwgcG91ciBvdXQgYWxsIHRoZSBibG9vZCBhdCB0aGUgYm90dG9tIG9mIHRoZSBhbHRhciBvZiB0aGUgYnVybnQgb2ZmZXJpbmcsIHdoaWNoIGlzIGF0IHRoZSBkb29yIG9mIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBjb25ncmVnYXRpb24uCkFuZCBoZSBzaGFsbCB0YWtlIGFsbCBoaXMgZmF0IGZyb20gaGltLCBhbmQgYnVybiBpdCB1cG9uIHRoZSBhbHRhci4KQW5kIGhlIHNoYWxsIGRvIHdpdGggdGhlIGJ1bGxvY2sgYXMgaGUgZGlkIHdpdGggdGhlIGJ1bGxvY2sgZm9yIGEgc2luIG9mZmVyaW5nLCBzbyBzaGFsbCBoZSBkbyB3aXRoIHRoaXM6IGFuZCB0aGUgcHJpZXN0IHNoYWxsIG1ha2UgYW4gYXRvbmVtZW50IGZvciB0aGVtLCBhbmQgaXQgc2hhbGwgYmUgZm9yZ2l2ZW4gdGhlbS4KQW5kIGhlIHNoYWxsIGNhcnJ5IGZvcnRoIHRoZSBidWxsb2NrIHdpdGhvdXQgdGhlIGNhbXAsIGFuZCBidXJuIGhpbSBhcyBoZSBidXJuZWQgdGhlIGZpcnN0IGJ1bGxvY2s6IGl0IGlzIGEgc2luIG9mZmVyaW5nIGZvciB0aGUgY29uZ3JlZ2F0aW9uLgpXaGVuIGEgcnVsZXIgaGF0aCBzaW5uZWQsIGFuZCBkb25lIHNvbWV3aGF0IHRocm91Z2ggaWdub3JhbmNlIGFnYWluc3QgYW55IG9mIHRoZSBjb21tYW5kbWVudHMgb2YgdGhlIExPUkQgaGlzIEdvZCBjb25jZXJuaW5nIHRoaW5ncyB3aGljaCBzaG91bGQgbm90IGJlIGRvbmUsIGFuZCBpcyBndWlsdHk7Ck9yIGlmIGhpcyBzaW4sIHdoZXJlaW4gaGUgaGF0aCBzaW5uZWQsIGNvbWUgdG8gaGlzIGtub3dsZWRnZTsgaGUgc2hhbGwgYnJpbmcgaGlzIG9mZmVyaW5nLCBhIGtpZCBvZiB0aGUgZ29hdHMsIGEgbWFsZSB3aXRob3V0IGJsZW1pc2g6CkFuZCBoZSBzaGFsbCBsYXkgaGlzIGhhbmQgdXBvbiB0aGUgaGVhZCBvZiB0aGUgZ29hdCwgYW5kIGtpbGwgaXQgaW4gdGhlIHBsYWNlIHdoZXJlIHRoZXkga2lsbCB0aGUgYnVybnQgb2ZmZXJpbmcgYmVmb3JlIHRoZSBMT1JEOiBpdCBpcyBhIHNpbiBvZmZlcmluZy4KQW5kIHRoZSBwcmllc3Qgc2hhbGwgdGFrZSBvZiB0aGUgYmxvb2Qgb2YgdGhlIHNpbiBvZmZlcmluZyB3aXRoIGhpcyBmaW5nZXIsIGFuZCBwdXQgaXQgdXBvbiB0aGUgaG9ybnMgb2YgdGhlIGFsdGFyIG9mIGJ1cm50IG9mZmVyaW5nLCBhbmQgc2hhbGwgcG91ciBvdXQgaGlzIGJsb29kIGF0IHRoZSBib3R0b20gb2YgdGhlIGFsdGFyIG9mIGJ1cm50IG9mZmVyaW5nLgpBbmQgaGUgc2hhbGwgYnVybiBhbGwgaGlzIGZhdCB1cG9uIHRoZSBhbHRhciwgYXMgdGhlIGZhdCBvZiB0aGUgc2FjcmlmaWNlIG9mIHBlYWNlIG9mZmVyaW5nczogYW5kIHRoZSBwcmllc3Qgc2hhbGwgbWFrZSBhbiBhdG9uZW1lbnQgZm9yIGhpbSBhcyBjb25jZXJuaW5nIGhpcyBzaW4sIGFuZCBpdCBzaGFsbCBiZSBmb3JnaXZlbiBoaW0uCkFuZCBpZiBhbnkgb25lIG9mIHRoZSBjb21tb24gcGVvcGxlIHNpbiB0aHJvdWdoIGlnbm9yYW5jZSwgd2hpbGUgaGUgZG9ldGggc29tZXdoYXQgYWdhaW5zdCBhbnkgb2YgdGhlIGNvbW1hbmRtZW50cyBvZiB0aGUgTE9SRCBjb25jZXJuaW5nIHRoaW5ncyB3aGljaCBvdWdodCBub3QgdG8gYmUgZG9uZSwgYW5kIGJlIGd1aWx0eTsKT3IgaWYgaGlzIHNpbiwgd2hpY2ggaGUgaGF0aCBzaW5uZWQsIGNvbWUgdG8gaGlzIGtub3dsZWRnZTogdGhlbiBoZSBzaGFsbCBicmluZyBoaXMgb2ZmZXJpbmcsIGEga2lkIG9mIHRoZSBnb2F0cywgYSBmZW1hbGUgd2l0aG91dCBibGVtaXNoLCBmb3IgaGlzIHNpbiB3aGljaCBoZSBoYXRoIHNpbm5lZC4KQW5kIGhlIHNoYWxsIGxheSBoaXMgaGFuZCB1cG9uIHRoZSBoZWFkIG9mIHRoZSBzaW4gb2ZmZXJpbmcsIGFuZCBzbGF5IHRoZSBzaW4gb2ZmZXJpbmcgaW4gdGhlIHBsYWNlIG9mIHRoZSBidXJudCBvZmZlcmluZy4KQW5kIHRoZSBwcmllc3Qgc2hhbGwgdGFrZSBvZiB0aGUgYmxvb2QgdGhlcmVvZiB3aXRoIGhpcyBmaW5nZXIsIGFuZCBwdXQgaXQgdXBvbiB0aGUgaG9ybnMgb2YgdGhlIGFsdGFyIG9mIGJ1cm50IG9mZmVyaW5nLCBhbmQgc2hhbGwgcG91ciBvdXQgYWxsIHRoZSBibG9vZCB0aGVyZW9mIGF0IHRoZSBib3R0b20gb2YgdGhlIGFsdGFyLgpBbmQgaGUgc2hhbGwgdGFrZSBhd2F5IGFsbCB0aGUgZmF0IHRoZXJlb2YsIGFzIHRoZSBmYXQgaXMgdGFrZW4gYXdheSBmcm9tIG9mZiB0aGUgc2FjcmlmaWNlIG9mIHBlYWNlIG9mZmVyaW5nczsgYW5kIHRoZSBwcmllc3Qgc2hhbGwgYnVybiBpdCB1cG9uIHRoZSBhbHRhciBmb3IgYSBzd2VldCBzYXZvdXIgdW50byB0aGUgTE9SRDsgYW5kIHRoZSBwcmllc3Qgc2hhbGwgbWFrZSBhbiBhdG9uZW1lbnQgZm9yIGhpbSwgYW5kIGl0IHNoYWxsIGJlIGZvcmdpdmVuIGhpbS4KQW5kIGlmIGhlIGJyaW5nIGEgbGFtYiBmb3IgYSBzaW4gb2ZmZXJpbmcsIGhlIHNoYWxsIGJyaW5nIGl0IGEgZmVtYWxlIHdpdGhvdXQgYmxlbWlzaC4KQW5kIGhlIHNoYWxsIGxheSBoaXMgaGFuZCB1cG9uIHRoZSBoZWFkIG9mIHRoZSBzaW4gb2ZmZXJpbmcsIGFuZCBzbGF5IGl0IGZvciBhIHNpbiBvZmZlcmluZyBpbiB0aGUgcGxhY2Ugd2hlcmUgdGhleSBraWxsIHRoZSBidXJudCBvZmZlcmluZy4KQW5kIHRoZSBwcmllc3Qgc2hhbGwgdGFrZSBvZiB0aGUgYmxvb2Qgb2YgdGhlIHNpbiBvZmZlcmluZyB3aXRoIGhpcyBmaW5nZXIsIGFuZCBwdXQgaXQgdXBvbiB0aGUgaG9ybnMgb2YgdGhlIGFsdGFyIG9mIGJ1cm50IG9mZmVyaW5nLCBhbmQgc2hhbGwgcG91ciBvdXQgYWxsIHRoZSBibG9vZCB0aGVyZW9mIGF0IHRoZSBib3R0b20gb2YgdGhlIGFsdGFyOgpBbmQgaGUgc2hhbGwgdGFrZSBhd2F5IGFsbCB0aGUgZmF0IHRoZXJlb2YsIGFzIHRoZSBmYXQgb2YgdGhlIGxhbWIgaXMgdGFrZW4gYXdheSBmcm9tIHRoZSBzYWNyaWZpY2Ugb2YgdGhlIHBlYWNlIG9mZmVyaW5nczsgYW5kIHRoZSBwcmllc3Qgc2hhbGwgYnVybiB0aGVtIHVwb24gdGhlIGFsdGFyLCBhY2NvcmRpbmcgdG8gdGhlIG9mZmVyaW5ncyBtYWRlIGJ5IGZpcmUgdW50byB0aGUgTE9SRDogYW5kIHRoZSBwcmllc3Qgc2hhbGwgbWFrZSBhbiBhdG9uZW1lbnQgZm9yIGhpcyBzaW4gdGhhdCBoZSBoYXRoIGNvbW1pdHRlZCwgYW5kIGl0IHNoYWxsIGJlIGZvcmdpdmVuIGhpbS4KQW5kIGlmIGEgc291bCBzaW4sIGFuZCBoZWFyIHRoZSB2b2ljZSBvZiBzd2VhcmluZywgYW5kIGlzIGEgd2l0bmVzcywgd2hldGhlciBoZSBoYXRoIHNlZW4gb3Iga25vd24gb2YgaXQ7IGlmIGhlIGRvIG5vdCB1dHRlciBpdCwgdGhlbiBoZSBzaGFsbCBiZWFyIGhpcyBpbmlxdWl0eS4KT3IgaWYgYSBzb3VsIHRvdWNoIGFueSB1bmNsZWFuIHRoaW5nLCB3aGV0aGVyIGl0IGJlIGEgY2FyY2FzZSBvZiBhbiB1bmNsZWFuIGJlYXN0LCBvciBhIGNhcmNhc2Ugb2YgdW5jbGVhbiBjYXR0bGUsIG9yIHRoZSBjYXJjYXNlIG9mIHVuY2xlYW4gY3JlZXBpbmcgdGhpbmdzLCBhbmQgaWYgaXQgYmUgaGlkZGVuIGZyb20gaGltOyBoZSBhbHNvIHNoYWxsIGJlIHVuY2xlYW4sIGFuZCBndWlsdHkuCk9yIGlmIGhlIHRvdWNoIHRoZSB1bmNsZWFubmVzcyBvZiBtYW4sIHdoYXRzb2V2ZXIgdW5jbGVhbm5lc3MgaXQgYmUgdGhhdCBhIG1hbiBzaGFsbCBiZSBkZWZpbGVkIHdpdGhhbCwgYW5kIGl0IGJlIGhpZCBmcm9tIGhpbTsgd2hlbiBoZSBrbm93ZXRoIG9mIGl0LCB0aGVuIGhlIHNoYWxsIGJlIGd1aWx0eS4KT3IgaWYgYSBzb3VsIHN3ZWFyLCBwcm9ub3VuY2luZyB3aXRoIGhpcyBsaXBzIHRvIGRvIGV2aWwsIG9yIHRvIGRvIGdvb2QsIHdoYXRzb2V2ZXIgaXQgYmUgdGhhdCBhIG1hbiBzaGFsbCBwcm9ub3VuY2Ugd2l0aCBhbiBvYXRoLCBhbmQgaXQgYmUgaGlkIGZyb20gaGltOyB3aGVuIGhlIGtub3dldGggb2YgaXQsIHRoZW4gaGUgc2hhbGwgYmUgZ3VpbHR5IGluIG9uZSBvZiB0aGVzZS4KQW5kIGl0IHNoYWxsIGJlLCB3aGVuIGhlIHNoYWxsIGJlIGd1aWx0eSBpbiBvbmUgb2YgdGhlc2UgdGhpbmdzLCB0aGF0IGhlIHNoYWxsIGNvbmZlc3MgdGhhdCBoZSBoYXRoIHNpbm5lZCBpbiB0aGF0IHRoaW5nOgpBbmQgaGUgc2hhbGwgYnJpbmcgaGlzIHRyZXNwYXNzIG9mZmVyaW5nIHVudG8gdGhlIExPUkQgZm9yIGhpcyBzaW4gd2hpY2ggaGUgaGF0aCBzaW5uZWQsIGEgZmVtYWxlIGZyb20gdGhlIGZsb2NrLCBhIGxhbWIgb3IgYSBraWQgb2YgdGhlIGdvYXRzLCBmb3IgYSBzaW4gb2ZmZXJpbmc7IGFuZCB0aGUgcHJpZXN0IHNoYWxsIG1ha2UgYW4gYXRvbmVtZW50IGZvciBoaW0gY29uY2VybmluZyBoaXMgc2luLgpBbmQgaWYgaGUgYmUgbm90IGFibGUgdG8gYnJpbmcgYSBsYW1iLCB0aGVuIGhlIHNoYWxsIGJyaW5nIGZvciBoaXMgdHJlc3Bhc3MsIHdoaWNoIGhlIGhhdGggY29tbWl0dGVkLCB0d28gdHVydGxlZG92ZXMsIG9yIHR3byB5b3VuZyBwaWdlb25zLCB1bnRvIHRoZSBMT1JEOyBvbmUgZm9yIGEgc2luIG9mZmVyaW5nLCBhbmQgdGhlIG90aGVyIGZvciBhIGJ1cm50IG9mZmVyaW5nLgpBbmQgaGUgc2hhbGwgYnJpbmcgdGhlbSB1bnRvIHRoZSBwcmllc3QsIHdobyBzaGFsbCBvZmZlciB0aGF0IHdoaWNoIGlzIGZvciB0aGUgc2luIG9mZmVyaW5nIGZpcnN0LCBhbmQgd3Jpbmcgb2ZmIGhpcyBoZWFkIGZyb20gaGlzIG5lY2ssIGJ1dCBzaGFsbCBub3QgZGl2aWRlIGl0IGFzdW5kZXI6CkFuZCBoZSBzaGFsbCBzcHJpbmtsZSBvZiB0aGUgYmxvb2Qgb2YgdGhlIHNpbiBvZmZlcmluZyB1cG9uIHRoZSBzaWRlIG9mIHRoZSBhbHRhcjsgYW5kIHRoZSByZXN0IG9mIHRoZSBibG9vZCBzaGFsbCBiZSB3cnVuZyBvdXQgYXQgdGhlIGJvdHRvbSBvZiB0aGUgYWx0YXI6IGl0IGlzIGEgc2luIG9mZmVyaW5nLgpBbmQgaGUgc2hhbGwgb2ZmZXIgdGhlIHNlY29uZCBmb3IgYSBidXJudCBvZmZlcmluZywgYWNjb3JkaW5nIHRvIHRoZSBtYW5uZXI6IGFuZCB0aGUgcHJpZXN0IHNoYWxsIG1ha2UgYW4gYXRvbmVtZW50IGZvciBoaW0gZm9yIGhpcyBzaW4gd2hpY2ggaGUgaGF0aCBzaW5uZWQsIGFuZCBpdCBzaGFsbCBiZSBmb3JnaXZlbiBoaW0uCkJ1dCBpZiBoZSBiZSBub3QgYWJsZSB0byBicmluZyB0d28gdHVydGxlZG92ZXMsIG9yIHR3byB5b3VuZyBwaWdlb25zLCB0aGVuIGhlIHRoYXQgc2lubmVkIHNoYWxsIGJyaW5nIGZvciBoaXMgb2ZmZXJpbmcgdGhlIHRlbnRoIHBhcnQgb2YgYW4gZXBoYWggb2YgZmluZSBmbG91ciBmb3IgYSBzaW4gb2ZmZXJpbmc7IGhlIHNoYWxsIHB1dCBubyBvaWwgdXBvbiBpdCwgbmVpdGhlciBzaGFsbCBoZSBwdXQgYW55IGZyYW5raW5jZW5zZSB0aGVyZW9uOiBmb3IgaXQgaXMgYSBzaW4gb2ZmZXJpbmcuClRoZW4gc2hhbGwgaGUgYnJpbmcgaXQgdG8gdGhlIHByaWVzdCwgYW5kIHRoZSBwcmllc3Qgc2hhbGwgdGFrZSBoaXMgaGFuZGZ1bCBvZiBpdCwgZXZlbiBhIG1lbW9yaWFsIHRoZXJlb2YsIGFuZCBidXJuIGl0IG9uIHRoZSBhbHRhciwgYWNjb3JkaW5nIHRvIHRoZSBvZmZlcmluZ3MgbWFkZSBieSBmaXJlIHVudG8gdGhlIExPUkQ6IGl0IGlzIGEgc2luIG9mZmVyaW5nLgpBbmQgdGhlIHByaWVzdCBzaGFsbCBtYWtlIGFuIGF0b25lbWVudCBmb3IgaGltIGFzIHRvdWNoaW5nIGhpcyBzaW4gdGhhdCBoZSBoYXRoIHNpbm5lZCBpbiBvbmUgb2YgdGhlc2UsIGFuZCBpdCBzaGFsbCBiZSBmb3JnaXZlbiBoaW06IGFuZCB0aGUgcmVtbmFudCBzaGFsbCBiZSB0aGUgcHJpZXN0J3MsIGFzIGEgbWVhdCBvZmZlcmluZy4KQW5kIHRoZSBMT1JEIHNwYWtlIHVudG8gTW9zZXMsIHNheWluZywKSWYgYSBzb3VsIGNvbW1pdCBhIHRyZXNwYXNzLCBhbmQgc2luIHRocm91Z2ggaWdub3JhbmNlLCBpbiB0aGUgaG9seSB0aGluZ3Mgb2YgdGhlIExPUkQ7IHRoZW4gaGUgc2hhbGwgYnJpbmcgZm9yIGhpcyB0cmVzcGFzcyB1bnRvIHRoZSBMT1JEIGEgcmFtIHdpdGhvdXQgYmxlbWlzaCBvdXQgb2YgdGhlIGZsb2Nrcywgd2l0aCB0aHkgZXN0aW1hdGlvbiBieSBzaGVrZWxzIG9mIHNpbHZlciwgYWZ0ZXIgdGhlIHNoZWtlbCBvZiB0aGUgc2FuY3R1YXJ5LCBmb3IgYSB0cmVzcGFzcyBvZmZlcmluZy4KQW5kIGhlIHNoYWxsIG1ha2UgYW1lbmRzIGZvciB0aGUgaGFybSB0aGF0IGhlIGhhdGggZG9uZSBpbiB0aGUgaG9seSB0aGluZywgYW5kIHNoYWxsIGFkZCB0aGUgZmlmdGggcGFydCB0aGVyZXRvLCBhbmQgZ2l2ZSBpdCB1bnRvIHRoZSBwcmllc3Q6IGFuZCB0aGUgcHJpZXN0IHNoYWxsIG1ha2UgYW4gYXRvbmVtZW50IGZvciBoaW0gd2l0aCB0aGUgcmFtIG9mIHRoZSB0cmVzcGFzcyBvZmZlcmluZywgYW5kIGl0IHNoYWxsIGJlIGZvcmdpdmVuIGhpbS4KQW5kIGlmIGEgc291bCBzaW4sIGFuZCBjb21taXQgYW55IG9mIHRoZXNlIHRoaW5ncyB3aGljaCBhcmUgZm9yYmlkZGVuIHRvIGJlIGRvbmUgYnkgdGhlIGNvbW1hbmRtZW50cyBvZiB0aGUgTE9SRDsgdGhvdWdoIGhlIHdpc3QgaXQgbm90LCB5ZXQgaXMgaGUgZ3VpbHR5LCBhbmQgc2hhbGwgYmVhciBoaXMgaW5pcXVpdHkuCkFuZCBoZSBzaGFsbCBicmluZyBhIHJhbSB3aXRob3V0IGJsZW1pc2ggb3V0IG9mIHRoZSBmbG9jaywgd2l0aCB0aHkgZXN0aW1hdGlvbiwgZm9yIGEgdHJlc3Bhc3Mgb2ZmZXJpbmcsIHVudG8gdGhlIHByaWVzdDogYW5kIHRoZSBwcmllc3Qgc2hhbGwgbWFrZSBhbiBhdG9uZW1lbnQgZm9yIGhpbSBjb25jZXJuaW5nIGhpcyBpZ25vcmFuY2Ugd2hlcmVpbiBoZSBlcnJlZCBhbmQgd2lzdCBpdCBub3QsIGFuZCBpdCBzaGFsbCBiZSBmb3JnaXZlbiBoaW0uCkl0IGlzIGEgdHJlc3Bhc3Mgb2ZmZXJpbmc6IGhlIGhhdGggY2VydGFpbmx5IHRyZXNwYXNzZWQgYWdhaW5zdCB0aGUgTE9SRC4KQW5kIHRoZSBMT1JEIHNwYWtlIHVudG8gTW9zZXMsIHNheWluZywKSWYgYSBzb3VsIHNpbiwgYW5kIGNvbW1pdCBhIHRyZXNwYXNzIGFnYWluc3QgdGhlIExPUkQsIGFuZCBsaWUgdW50byBoaXMgbmVpZ2hib3VyIGluIHRoYXQgd2hpY2ggd2FzIGRlbGl2ZXJlZCBoaW0gdG8ga2VlcCwgb3IgaW4gZmVsbG93c2hpcCwgb3IgaW4gYSB0aGluZyB0YWtlbiBhd2F5IGJ5IHZpb2xlbmNlLCBvciBoYXRoIGRlY2VpdmVkIGhpcyBuZWlnaGJvdXI7Ck9yIGhhdmUgZm91bmQgdGhhdCB3aGljaCB3YXMgbG9zdCwgYW5kIGxpZXRoIGNvbmNlcm5pbmcgaXQsIGFuZCBzd2VhcmV0aCBmYWxzZWx5OyBpbiBhbnkgb2YgYWxsIHRoZXNlIHRoYXQgYSBtYW4gZG9ldGgsIHNpbm5pbmcgdGhlcmVpbjoKVGhlbiBpdCBzaGFsbCBiZSwgYmVjYXVzZSBoZSBoYXRoIHNpbm5lZCwgYW5kIGlzIGd1aWx0eSwgdGhhdCBoZSBzaGFsbCByZXN0b3JlIHRoYXQgd2hpY2ggaGUgdG9vayB2aW9sZW50bHkgYXdheSwgb3IgdGhlIHRoaW5nIHdoaWNoIGhlIGhhdGggZGVjZWl0ZnVsbHkgZ290dGVuLCBvciB0aGF0IHdoaWNoIHdhcyBkZWxpdmVyZWQgaGltIHRvIGtlZXAsIG9yIHRoZSBsb3N0IHRoaW5nIHdoaWNoIGhlIGZvdW5kLApPciBhbGwgdGhhdCBhYm91dCB3aGljaCBoZSBoYXRoIHN3b3JuIGZhbHNlbHk7IGhlIHNoYWxsIGV2ZW4gcmVzdG9yZSBpdCBpbiB0aGUgcHJpbmNpcGFsLCBhbmQgc2hhbGwgYWRkIHRoZSBmaWZ0aCBwYXJ0IG1vcmUgdGhlcmV0bywgYW5kIGdpdmUgaXQgdW50byBoaW0gdG8gd2hvbSBpdCBhcHBlcnRhaW5ldGgsIGluIHRoZSBkYXkgb2YgaGlzIHRyZXNwYXNzIG9mZmVyaW5nLgpBbmQgaGUgc2hhbGwgYnJpbmcgaGlzIHRyZXNwYXNzIG9mZmVyaW5nIHVudG8gdGhlIExPUkQsIGEgcmFtIHdpdGhvdXQgYmxlbWlzaCBvdXQgb2YgdGhlIGZsb2NrLCB3aXRoIHRoeSBlc3RpbWF0aW9uLCBmb3IgYSB0cmVzcGFzcyBvZmZlcmluZywgdW50byB0aGUgcHJpZXN0OgpBbmQgdGhlIHByaWVzdCBzaGFsbCBtYWtlIGFuIGF0b25lbWVudCBmb3IgaGltIGJlZm9yZSB0aGUgTE9SRDogYW5kIGl0IHNoYWxsIGJlIGZvcmdpdmVuIGhpbSBmb3IgYW55IHRoaW5nIG9mIGFsbCB0aGF0IGhlIGhhdGggZG9uZSBpbiB0cmVzcGFzc2luZyB0aGVyZWluLgpBbmQgdGhlIExPUkQgc3Bha2UgdW50byBNb3Nlcywgc2F5aW5nLApDb21tYW5kIEFhcm9uIGFuZCBoaXMgc29ucywgc2F5aW5nLCBUaGlzIGlzIHRoZSBsYXcgb2YgdGhlIGJ1cm50IG9mZmVyaW5nOiBJdCBpcyB0aGUgYnVybnQgb2ZmZXJpbmcsIGJlY2F1c2Ugb2YgdGhlIGJ1cm5pbmcgdXBvbiB0aGUgYWx0YXIgYWxsIG5pZ2h0IHVudG8gdGhlIG1vcm5pbmcsIGFuZCB0aGUgZmlyZSBvZiB0aGUgYWx0YXIgc2hhbGwgYmUgYnVybmluZyBpbiBpdC4KQW5kIHRoZSBwcmllc3Qgc2hhbGwgcHV0IG9uIGhpcyBsaW5lbiBnYXJtZW50LCBhbmQgaGlzIGxpbmVuIGJyZWVjaGVzIHNoYWxsIGhlIHB1dCB1cG9uIGhpcyBmbGVzaCwgYW5kIHRha2UgdXAgdGhlIGFzaGVzIHdoaWNoIHRoZSBmaXJlIGhhdGggY29uc3VtZWQgd2l0aCB0aGUgYnVybnQgb2ZmZXJpbmcgb24gdGhlIGFsdGFyLCBhbmQgaGUgc2hhbGwgcHV0IHRoZW0gYmVzaWRlIHRoZSBhbHRhci4KQW5kIGhlIHNoYWxsIHB1dCBvZmYgaGlzIGdhcm1lbnRzLCBhbmQgcHV0IG9uIG90aGVyIGdhcm1lbnRzLCBhbmQgY2FycnkgZm9ydGggdGhlIGFzaGVzIHdpdGhvdXQgdGhlIGNhbXAgdW50byBhIGNsZWFuIHBsYWNlLgpBbmQgdGhlIGZpcmUgdXBvbiB0aGUgYWx0YXIgc2hhbGwgYmUgYnVybmluZyBpbiBpdDsgaXQgc2hhbGwgbm90IGJlIHB1dCBvdXQ6IGFuZCB0aGUgcHJpZXN0IHNoYWxsIGJ1cm4gd29vZCBvbiBpdCBldmVyeSBtb3JuaW5nLCBhbmQgbGF5IHRoZSBidXJudCBvZmZlcmluZyBpbiBvcmRlciB1cG9uIGl0OyBhbmQgaGUgc2hhbGwgYnVybiB0aGVyZW9uIHRoZSBmYXQgb2YgdGhlIHBlYWNlIG9mZmVyaW5ncy4KVGhlIGZpcmUgc2hhbGwgZXZlciBiZSBidXJuaW5nIHVwb24gdGhlIGFsdGFyOyBpdCBzaGFsbCBuZXZlciBnbyBvdXQuCkFuZCB0aGlzIGlzIHRoZSBsYXcgb2YgdGhlIG1lYXQgb2ZmZXJpbmc6IHRoZSBzb25zIG9mIEFhcm9uIHNoYWxsIG9mZmVyIGl0IGJlZm9yZSB0aGUgTE9SRCwgYmVmb3JlIHRoZSBhbHRhci4KQW5kIGhlIHNoYWxsIHRha2Ugb2YgaXQgaGlzIGhhbmRmdWwsIG9mIHRoZSBmbG91ciBvZiB0aGUgbWVhdCBvZmZlcmluZywgYW5kIG9mIHRoZSBvaWwgdGhlcmVvZiwgYW5kIGFsbCB0aGUgZnJhbmtpbmNlbnNlIHdoaWNoIGlzIHVwb24gdGhlIG1lYXQgb2ZmZXJpbmcsIGFuZCBzaGFsbCBidXJuIGl0IHVwb24gdGhlIGFsdGFyIGZvciBhIHN3ZWV0IHNhdm91ciwgZXZlbiB0aGUgbWVtb3JpYWwgb2YgaXQsIHVudG8gdGhlIExPUkQuCkFuZCB0aGUgcmVtYWluZGVyIHRoZXJlb2Ygc2hhbGwgQWFyb24gYW5kIGhpcyBzb25zIGVhdDogd2l0aCB1bmxlYXZlbmVkIGJyZWFkIHNoYWxsIGl0IGJlIGVhdGVuIGluIHRoZSBob2x5IHBsYWNlOyBpbiB0aGUgY291cnQgb2YgdGhlIHRhYmVybmFjbGUgb2YgdGhlIGNvbmdyZWdhdGlvbiB0aGV5IHNoYWxsIGVhdCBpdC4KSXQgc2hhbGwgbm90IGJlIGJha2VuIHdpdGggbGVhdmVuLiBJIGhhdmUgZ2l2ZW4gaXQgdW50byB0aGVtIGZvciB0aGVpciBwb3J0aW9uIG9mIG15IG9mZmVyaW5ncyBtYWRlIGJ5IGZpcmU7IGl0IGlzIG1vc3QgaG9seSwgYXMgaXMgdGhlIHNpbiBvZmZlcmluZywgYW5kIGFzIHRoZSB0cmVzcGFzcyBvZmZlcmluZy4KQWxsIHRoZSBtYWxlcyBhbW9uZyB0aGUgY2hpbGRyZW4gb2YgQWFyb24gc2hhbGwgZWF0IG9mIGl0LiBJdCBzaGFsbCBiZSBhIHN0YXR1dGUgZm9yIGV2ZXIgaW4geW91ciBnZW5lcmF0aW9ucyBjb25jZXJuaW5nIHRoZSBvZmZlcmluZ3Mgb2YgdGhlIExPUkQgbWFkZSBieSBmaXJlOiBldmVyeSBvbmUgdGhhdCB0b3VjaGV0aCB0aGVtIHNoYWxsIGJlIGhvbHkuCkFuZCB0aGUgTE9SRCBzcGFrZSB1bnRvIE1vc2VzLCBzYXlpbmcsClRoaXMgaXMgdGhlIG9mZmVyaW5nIG9mIEFhcm9uIGFuZCBvZiBoaXMgc29ucywgd2hpY2ggdGhleSBzaGFsbCBvZmZlciB1bnRvIHRoZSBMT1JEIGluIHRoZSBkYXkgd2hlbiBoZSBpcyBhbm9pbnRlZDsgdGhlIHRlbnRoIHBhcnQgb2YgYW4gZXBoYWggb2YgZmluZSBmbG91ciBmb3IgYSBtZWF0IG9mZmVyaW5nIHBlcnBldHVhbCwgaGFsZiBvZiBpdCBpbiB0aGUgbW9ybmluZywgYW5kIGhhbGYgdGhlcmVvZiBhdCBuaWdodC4KSW4gYSBwYW4gaXQgc2hhbGwgYmUgbWFkZSB3aXRoIG9pbDsgYW5kIHdoZW4gaXQgaXMgYmFrZW4sIHRob3Ugc2hhbHQgYnJpbmcgaXQgaW46IGFuZCB0aGUgYmFrZW4gcGllY2VzIG9mIHRoZSBtZWF0IG9mZmVyaW5nIHNoYWx0IHRob3Ugb2ZmZXIgZm9yIGEgc3dlZXQgc2F2b3VyIHVudG8gdGhlIExPUkQuCkFuZCB0aGUgcHJpZXN0IG9mIGhpcyBzb25zIHRoYXQgaXMgYW5vaW50ZWQgaW4gaGlzIHN0ZWFkIHNoYWxsIG9mZmVyIGl0OiBpdCBpcyBhIHN0YXR1dGUgZm9yIGV2ZXIgdW50byB0aGUgTE9SRDsgaXQgc2hhbGwgYmUgd2hvbGx5IGJ1cm50LgpGb3IgZXZlcnkgbWVhdCBvZmZlcmluZyBmb3IgdGhlIHByaWVzdCBzaGFsbCBiZSB3aG9sbHkgYnVybnQ6IGl0IHNoYWxsIG5vdCBiZSBlYXRlbi4KQW5kIHRoZSBMT1JEIHNwYWtlIHVudG8gTW9zZXMsIHNheWluZywKU3BlYWsgdW50byBBYXJvbiBhbmQgdG8gaGlzIHNvbnMsIHNheWluZywgVGhpcyBpcyB0aGUgbGF3IG9mIHRoZSBzaW4gb2ZmZXJpbmc6IEluIHRoZSBwbGFjZSB3aGVyZSB0aGUgYnVybnQgb2ZmZXJpbmcgaXMga2lsbGVkIHNoYWxsIHRoZSBzaW4gb2ZmZXJpbmcgYmUga2lsbGVkIGJlZm9yZSB0aGUgTE9SRDogaXQgaXMgbW9zdCBob2x5LgpUaGUgcHJpZXN0IHRoYXQgb2ZmZXJldGggaXQgZm9yIHNpbiBzaGFsbCBlYXQgaXQ6IGluIHRoZSBob2x5IHBsYWNlIHNoYWxsIGl0IGJlIGVhdGVuLCBpbiB0aGUgY291cnQgb2YgdGhlIHRhYmVybmFjbGUgb2YgdGhlIGNvbmdyZWdhdGlvbi4KV2hhdHNvZXZlciBzaGFsbCB0b3VjaCB0aGUgZmxlc2ggdGhlcmVvZiBzaGFsbCBiZSBob2x5OiBhbmQgd2hlbiB0aGVyZSBpcyBzcHJpbmtsZWQgb2YgdGhlIGJsb29kIHRoZXJlb2YgdXBvbiBhbnkgZ2FybWVudCwgdGhvdSBzaGFsdCB3YXNoIHRoYXQgd2hlcmVvbiBpdCB3YXMgc3ByaW5rbGVkIGluIHRoZSBob2x5IHBsYWNlLgpCdXQgdGhlIGVhcnRoZW4gdmVzc2VsIHdoZXJlaW4gaXQgaXMgc29kZGVuIHNoYWxsIGJlIGJyb2tlbjogYW5kIGlmIGl0IGJlIHNvZGRlbiBpbiBhIGJyYXNlbiBwb3QsIGl0IHNoYWxsIGJlIGJvdGggc2NvdXJlZCwgYW5kIHJpbnNlZCBpbiB3YXRlci4KQWxsIHRoZSBtYWxlcyBhbW9uZyB0aGUgcHJpZXN0cyBzaGFsbCBlYXQgdGhlcmVvZjogaXQgaXMgbW9zdCBob2x5LgpBbmQgbm8gc2luIG9mZmVyaW5nLCB3aGVyZW9mIGFueSBvZiB0aGUgYmxvb2QgaXMgYnJvdWdodCBpbnRvIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBjb25ncmVnYXRpb24gdG8gcmVjb25jaWxlIHdpdGhhbCBpbiB0aGUgaG9seSBwbGFjZSwgc2hhbGwgYmUgZWF0ZW46IGl0IHNoYWxsIGJlIGJ1cm50IGluIHRoZSBmaXJlLgpMaWtld2lzZSB0aGlzIGlzIHRoZSBsYXcgb2YgdGhlIHRyZXNwYXNzIG9mZmVyaW5nOiBpdCBpcyBtb3N0IGhvbHkuCkluIHRoZSBwbGFjZSB3aGVyZSB0aGV5IGtpbGwgdGhlIGJ1cm50IG9mZmVyaW5nIHNoYWxsIHRoZXkga2lsbCB0aGUgdHJlc3Bhc3Mgb2ZmZXJpbmc6IGFuZCB0aGUgYmxvb2QgdGhlcmVvZiBzaGFsbCBoZSBzcHJpbmtsZSByb3VuZCBhYm91dCB1cG9uIHRoZSBhbHRhci4KQW5kIGhlIHNoYWxsIG9mZmVyIG9mIGl0IGFsbCB0aGUgZmF0IHRoZXJlb2Y7IHRoZSBydW1wLCBhbmQgdGhlIGZhdCB0aGF0IGNvdmVyZXRoIHRoZSBpbndhcmRzLApBbmQgdGhlIHR3byBraWRuZXlzLCBhbmQgdGhlIGZhdCB0aGF0IGlzIG9uIHRoZW0sIHdoaWNoIGlzIGJ5IHRoZSBmbGFua3MsIGFuZCB0aGUgY2F1bCB0aGF0IGlzIGFib3ZlIHRoZSBsaXZlciwgd2l0aCB0aGUga2lkbmV5cywgaXQgc2hhbGwgaGUgdGFrZSBhd2F5OgpBbmQgdGhlIHByaWVzdCBzaGFsbCBidXJuIHRoZW0gdXBvbiB0aGUgYWx0YXIgZm9yIGFuIG9mZmVyaW5nIG1hZGUgYnkgZmlyZSB1bnRvIHRoZSBMT1JEOiBpdCBpcyBhIHRyZXNwYXNzIG9mZmVyaW5nLgpFdmVyeSBtYWxlIGFtb25nIHRoZSBwcmllc3RzIHNoYWxsIGVhdCB0aGVyZW9mOiBpdCBzaGFsbCBiZSBlYXRlbiBpbiB0aGUgaG9seSBwbGFjZTogaXQgaXMgbW9zdCBob2x5LgpBcyB0aGUgc2luIG9mZmVyaW5nIGlzLCBzbyBpcyB0aGUgdHJlc3Bhc3Mgb2ZmZXJpbmc6IHRoZXJlIGlzIG9uZSBsYXcgZm9yIHRoZW06IHRoZSBwcmllc3QgdGhhdCBtYWtldGggYXRvbmVtZW50IHRoZXJld2l0aCBzaGFsbCBoYXZlIGl0LgpBbmQgdGhlIHByaWVzdCB0aGF0IG9mZmVyZXRoIGFueSBtYW4ncyBidXJudCBvZmZlcmluZywgZXZlbiB0aGUgcHJpZXN0IHNoYWxsIGhhdmUgdG8gaGltc2VsZiB0aGUgc2tpbiBvZiB0aGUgYnVybnQgb2ZmZXJpbmcgd2hpY2ggaGUgaGF0aCBvZmZlcmVkLgpBbmQgYWxsIHRoZSBtZWF0IG9mZmVyaW5nIHRoYXQgaXMgYmFrZW4gaW4gdGhlIG92ZW4sIGFuZCBhbGwgdGhhdCBpcyBkcmVzc2VkIGluIHRoZSBmcnlpbmdwYW4sIGFuZCBpbiB0aGUgcGFuLCBzaGFsbCBiZSB0aGUgcHJpZXN0J3MgdGhhdCBvZmZlcmV0aCBpdC4KQW5kIGV2ZXJ5IG1lYXQgb2ZmZXJpbmcsIG1pbmdsZWQgd2l0aCBvaWwsIGFuZCBkcnksIHNoYWxsIGFsbCB0aGUgc29ucyBvZiBBYXJvbiBoYXZlLCBvbmUgYXMgbXVjaCBhcyBhbm90aGVyLgpBbmQgdGhpcyBpcyB0aGUgbGF3IG9mIHRoZSBzYWNyaWZpY2Ugb2YgcGVhY2Ugb2ZmZXJpbmdzLCB3aGljaCBoZSBzaGFsbCBvZmZlciB1bnRvIHRoZSBMT1JELgpJZiBoZSBvZmZlciBpdCBmb3IgYSB0aGFua3NnaXZpbmcsIHRoZW4gaGUgc2hhbGwgb2ZmZXIgd2l0aCB0aGUgc2FjcmlmaWNlIG9mIHRoYW5rc2dpdmluZyB1bmxlYXZlbmVkIGNha2VzIG1pbmdsZWQgd2l0aCBvaWwsIGFuZCB1bmxlYXZlbmVkIHdhZmVycyBhbm9pbnRlZCB3aXRoIG9pbCwgYW5kIGNha2VzIG1pbmdsZWQgd2l0aCBvaWwsIG9mIGZpbmUgZmxvdXIsIGZyaWVkLgpCZXNpZGVzIHRoZSBjYWtlcywgaGUgc2hhbGwgb2ZmZXIgZm9yIGhpcyBvZmZlcmluZyBsZWF2ZW5lZCBicmVhZCB3aXRoIHRoZSBzYWNyaWZpY2Ugb2YgdGhhbmtzZ2l2aW5nIG9mIGhpcyBwZWFjZSBvZmZlcmluZ3MuCkFuZCBvZiBpdCBoZSBzaGFsbCBvZmZlciBvbmUgb3V0IG9mIHRoZSB3aG9sZSBvYmxhdGlvbiBmb3IgYW4gaGVhdmUgb2ZmZXJpbmcgdW50byB0aGUgTE9SRCwgYW5kIGl0IHNoYWxsIGJlIHRoZSBwcmllc3QncyB0aGF0IHNwcmlua2xldGggdGhlIGJsb29kIG9mIHRoZSBwZWFjZSBvZmZlcmluZ3MuCkFuZCB0aGUgZmxlc2ggb2YgdGhlIHNhY3JpZmljZSBvZiBoaXMgcGVhY2Ugb2ZmZXJpbmdzIGZvciB0aGFua3NnaXZpbmcgc2hhbGwgYmUgZWF0ZW4gdGhlIHNhbWUgZGF5IHRoYXQgaXQgaXMgb2ZmZXJlZDsgaGUgc2hhbGwgbm90IGxlYXZlIGFueSBvZiBpdCB1bnRpbCB0aGUgbW9ybmluZy4KQnV0IGlmIHRoZSBzYWNyaWZpY2Ugb2YgaGlzIG9mZmVyaW5nIGJlIGEgdm93LCBvciBhIHZvbHVudGFyeSBvZmZlcmluZywgaXQgc2hhbGwgYmUgZWF0ZW4gdGhlIHNhbWUgZGF5IHRoYXQgaGUgb2ZmZXJldGggaGlzIHNhY3JpZmljZTogYW5kIG9uIHRoZSBtb3Jyb3cgYWxzbyB0aGUgcmVtYWluZGVyIG9mIGl0IHNoYWxsIGJlIGVhdGVuOgpCdXQgdGhlIHJlbWFpbmRlciBvZiB0aGUgZmxlc2ggb2YgdGhlIHNhY3JpZmljZSBvbiB0aGUgdGhpcmQgZGF5IHNoYWxsIGJlIGJ1cm50IHdpdGggZmlyZS4KQW5kIGlmIGFueSBvZiB0aGUgZmxlc2ggb2YgdGhlIHNhY3JpZmljZSBvZiBoaXMgcGVhY2Ugb2ZmZXJpbmdzIGJlIGVhdGVuIGF0IGFsbCBvbiB0aGUgdGhpcmQgZGF5LCBpdCBzaGFsbCBub3QgYmUgYWNjZXB0ZWQsIG5laXRoZXIgc2hhbGwgaXQgYmUgaW1wdXRlZCB1bnRvIGhpbSB0aGF0IG9mZmVyZXRoIGl0OiBpdCBzaGFsbCBiZSBhbiBhYm9taW5hdGlvbiwgYW5kIHRoZSBzb3VsIHRoYXQgZWF0ZXRoIG9mIGl0IHNoYWxsIGJlYXIgaGlzIGluaXF1aXR5LgpBbmQgdGhlIGZsZXNoIHRoYXQgdG91Y2hldGggYW55IHVuY2xlYW4gdGhpbmcgc2hhbGwgbm90IGJlIGVhdGVuOyBpdCBzaGFsbCBiZSBidXJudCB3aXRoIGZpcmU6IGFuZCBhcyBmb3IgdGhlIGZsZXNoLCBhbGwgdGhhdCBiZSBjbGVhbiBzaGFsbCBlYXQgdGhlcmVvZi4KQnV0IHRoZSBzb3VsIHRoYXQgZWF0ZXRoIG9mIHRoZSBmbGVzaCBvZiB0aGUgc2FjcmlmaWNlIG9mIHBlYWNlIG9mZmVyaW5ncywgdGhhdCBwZXJ0YWluIHVudG8gdGhlIExPUkQsIGhhdmluZyBoaXMgdW5jbGVhbm5lc3MgdXBvbiBoaW0sIGV2ZW4gdGhhdCBzb3VsIHNoYWxsIGJlIGN1dCBvZmYgZnJvbSBoaXMgcGVvcGxlLgpNb3Jlb3ZlciB0aGUgc291bCB0aGF0IHNoYWxsIHRvdWNoIGFueSB1bmNsZWFuIHRoaW5nLCBhcyB0aGUgdW5jbGVhbm5lc3Mgb2YgbWFuLCBvciBhbnkgdW5jbGVhbiBiZWFzdCwgb3IgYW55IGFib21pbmFibGUgdW5jbGVhbiB0aGluZywgYW5kIGVhdCBvZiB0aGUgZmxlc2ggb2YgdGhlIHNhY3JpZmljZSBvZiBwZWFjZSBvZmZlcmluZ3MsIHdoaWNoIHBlcnRhaW4gdW50byB0aGUgTE9SRCwgZXZlbiB0aGF0IHNvdWwgc2hhbGwgYmUgY3V0IG9mZiBmcm9tIGhpcyBwZW9wbGUuCkFuZCB0aGUgTE9SRCBzcGFrZSB1bnRvIE1vc2VzLCBzYXlpbmcsClNwZWFrIHVudG8gdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgc2F5aW5nLCBZZSBzaGFsbCBlYXQgbm8gbWFubmVyIG9mIGZhdCwgb2Ygb3gsIG9yIG9mIHNoZWVwLCBvciBvZiBnb2F0LgpBbmQgdGhlIGZhdCBvZiB0aGUgYmVhc3QgdGhhdCBkaWV0aCBvZiBpdHNlbGYsIGFuZCB0aGUgZmF0IG9mIHRoYXQgd2hpY2ggaXMgdG9ybiB3aXRoIGJlYXN0cywgbWF5IGJlIHVzZWQgaW4gYW55IG90aGVyIHVzZTogYnV0IHllIHNoYWxsIGluIG5vIHdpc2UgZWF0IG9mIGl0LgpGb3Igd2hvc29ldmVyIGVhdGV0aCB0aGUgZmF0IG9mIHRoZSBiZWFzdCwgb2Ygd2hpY2ggbWVuIG9mZmVyIGFuIG9mZmVyaW5nIG1hZGUgYnkgZmlyZSB1bnRvIHRoZSBMT1JELCBldmVuIHRoZSBzb3VsIHRoYXQgZWF0ZXRoIGl0IHNoYWxsIGJlIGN1dCBvZmYgZnJvbSBoaXMgcGVvcGxlLgpNb3Jlb3ZlciB5ZSBzaGFsbCBlYXQgbm8gbWFubmVyIG9mIGJsb29kLCB3aGV0aGVyIGl0IGJlIG9mIGZvd2wgb3Igb2YgYmVhc3QsIGluIGFueSBvZiB5b3VyIGR3ZWxsaW5ncy4KV2hhdHNvZXZlciBzb3VsIGl0IGJlIHRoYXQgZWF0ZXRoIGFueSBtYW5uZXIgb2YgYmxvb2QsIGV2ZW4gdGhhdCBzb3VsIHNoYWxsIGJlIGN1dCBvZmYgZnJvbSBoaXMgcGVvcGxlLgpBbmQgdGhlIExPUkQgc3Bha2UgdW50byBNb3Nlcywgc2F5aW5nLApTcGVhayB1bnRvIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIHNheWluZywgSGUgdGhhdCBvZmZlcmV0aCB0aGUgc2FjcmlmaWNlIG9mIGhpcyBwZWFjZSBvZmZlcmluZ3MgdW50byB0aGUgTE9SRCBzaGFsbCBicmluZyBoaXMgb2JsYXRpb24gdW50byB0aGUgTE9SRCBvZiB0aGUgc2FjcmlmaWNlIG9mIGhpcyBwZWFjZSBvZmZlcmluZ3MuCkhpcyBvd24gaGFuZHMgc2hhbGwgYnJpbmcgdGhlIG9mZmVyaW5ncyBvZiB0aGUgTE9SRCBtYWRlIGJ5IGZpcmUsIHRoZSBmYXQgd2l0aCB0aGUgYnJlYXN0LCBpdCBzaGFsbCBoZSBicmluZywgdGhhdCB0aGUgYnJlYXN0IG1heSBiZSB3YXZlZCBmb3IgYSB3YXZlIG9mZmVyaW5nIGJlZm9yZSB0aGUgTE9SRC4KQW5kIHRoZSBwcmllc3Qgc2hhbGwgYnVybiB0aGUgZmF0IHVwb24gdGhlIGFsdGFyOiBidXQgdGhlIGJyZWFzdCBzaGFsbCBiZSBBYXJvbidzIGFuZCBoaXMgc29ucycuCkFuZCB0aGUgcmlnaHQgc2hvdWxkZXIgc2hhbGwgeWUgZ2l2ZSB1bnRvIHRoZSBwcmllc3QgZm9yIGFuIGhlYXZlIG9mZmVyaW5nIG9mIHRoZSBzYWNyaWZpY2VzIG9mIHlvdXIgcGVhY2Ugb2ZmZXJpbmdzLgpIZSBhbW9uZyB0aGUgc29ucyBvZiBBYXJvbiwgdGhhdCBvZmZlcmV0aCB0aGUgYmxvb2Qgb2YgdGhlIHBlYWNlIG9mZmVyaW5ncywgYW5kIHRoZSBmYXQsIHNoYWxsIGhhdmUgdGhlIHJpZ2h0IHNob3VsZGVyIGZvciBoaXMgcGFydC4KRm9yIHRoZSB3YXZlIGJyZWFzdCBhbmQgdGhlIGhlYXZlIHNob3VsZGVyIGhhdmUgSSB0YWtlbiBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGZyb20gb2ZmIHRoZSBzYWNyaWZpY2VzIG9mIHRoZWlyIHBlYWNlIG9mZmVyaW5ncywgYW5kIGhhdmUgZ2l2ZW4gdGhlbSB1bnRvIEFhcm9uIHRoZSBwcmllc3QgYW5kIHVudG8gaGlzIHNvbnMgYnkgYSBzdGF0dXRlIGZvciBldmVyIGZyb20gYW1vbmcgdGhlIGNoaWxkcmVuIG9mIElzcmFlbC4KVGhpcyBpcyB0aGUgcG9ydGlvbiBvZiB0aGUgYW5vaW50aW5nIG9mIEFhcm9uLCBhbmQgb2YgdGhlIGFub2ludGluZyBvZiBoaXMgc29ucywgb3V0IG9mIHRoZSBvZmZlcmluZ3Mgb2YgdGhlIExPUkQgbWFkZSBieSBmaXJlLCBpbiB0aGUgZGF5IHdoZW4gaGUgcHJlc2VudGVkIHRoZW0gdG8gbWluaXN0ZXIgdW50byB0aGUgTE9SRCBpbiB0aGUgcHJpZXN0J3Mgb2ZmaWNlOwpXaGljaCB0aGUgTE9SRCBjb21tYW5kZWQgdG8gYmUgZ2l2ZW4gdGhlbSBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLCBpbiB0aGUgZGF5IHRoYXQgaGUgYW5vaW50ZWQgdGhlbSwgYnkgYSBzdGF0dXRlIGZvciBldmVyIHRocm91Z2hvdXQgdGhlaXIgZ2VuZXJhdGlvbnMuClRoaXMgaXMgdGhlIGxhdyBvZiB0aGUgYnVybnQgb2ZmZXJpbmcsIG9mIHRoZSBtZWF0IG9mZmVyaW5nLCBhbmQgb2YgdGhlIHNpbiBvZmZlcmluZywgYW5kIG9mIHRoZSB0cmVzcGFzcyBvZmZlcmluZywgYW5kIG9mIHRoZSBjb25zZWNyYXRpb25zLCBhbmQgb2YgdGhlIHNhY3JpZmljZSBvZiB0aGUgcGVhY2Ugb2ZmZXJpbmdzOwpXaGljaCB0aGUgTE9SRCBjb21tYW5kZWQgTW9zZXMgaW4gbW91bnQgU2luYWksIGluIHRoZSBkYXkgdGhhdCBoZSBjb21tYW5kZWQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCB0byBvZmZlciB0aGVpciBvYmxhdGlvbnMgdW50byB0aGUgTE9SRCwgaW4gdGhlIHdpbGRlcm5lc3Mgb2YgU2luYWkuCkFuZCB0aGUgTE9SRCBzcGFrZSB1bnRvIE1vc2VzLCBzYXlpbmcsClRha2UgQWFyb24gYW5kIGhpcyBzb25zIHdpdGggaGltLCBhbmQgdGhlIGdhcm1lbnRzLCBhbmQgdGhlIGFub2ludGluZyBvaWwsIGFuZCBhIGJ1bGxvY2sgZm9yIHRoZSBzaW4gb2ZmZXJpbmcsIGFuZCB0d28gcmFtcywgYW5kIGEgYmFza2V0IG9mIHVubGVhdmVuZWQgYnJlYWQ7CkFuZCBnYXRoZXIgdGhvdSBhbGwgdGhlIGNvbmdyZWdhdGlvbiB0b2dldGhlciB1bnRvIHRoZSBkb29yIG9mIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBjb25ncmVnYXRpb24uCkFuZCBNb3NlcyBkaWQgYXMgdGhlIExPUkQgY29tbWFuZGVkIGhpbTsgYW5kIHRoZSBhc3NlbWJseSB3YXMgZ2F0aGVyZWQgdG9nZXRoZXIgdW50byB0aGUgZG9vciBvZiB0aGUgdGFiZXJuYWNsZSBvZiB0aGUgY29uZ3JlZ2F0aW9uLgpBbmQgTW9zZXMgc2FpZCB1bnRvIHRoZSBjb25ncmVnYXRpb24sIFRoaXMgaXMgdGhlIHRoaW5nIHdoaWNoIHRoZSBMT1JEIGNvbW1hbmRlZCB0byBiZSBkb25lLgpBbmQgTW9zZXMgYnJvdWdodCBBYXJvbiBhbmQgaGlzIHNvbnMsIGFuZCB3YXNoZWQgdGhlbSB3aXRoIHdhdGVyLgpBbmQgaGUgcHV0IHVwb24gaGltIHRoZSBjb2F0LCBhbmQgZ2lyZGVkIGhpbSB3aXRoIHRoZSBnaXJkbGUsIGFuZCBjbG90aGVkIGhpbSB3aXRoIHRoZSByb2JlLCBhbmQgcHV0IHRoZSBlcGhvZCB1cG9uIGhpbSwgYW5kIGhlIGdpcmRlZCBoaW0gd2l0aCB0aGUgY3VyaW91cyBnaXJkbGUgb2YgdGhlIGVwaG9kLCBhbmQgYm91bmQgaXQgdW50byBoaW0gdGhlcmV3aXRoLgpBbmQgaGUgcHV0IHRoZSBicmVhc3RwbGF0ZSB1cG9uIGhpbTogYWxzbyBoZSBwdXQgaW4gdGhlIGJyZWFzdHBsYXRlIHRoZSBVcmltIGFuZCB0aGUgVGh1bW1pbS4KQW5kIGhlIHB1dCB0aGUgbWl0cmUgdXBvbiBoaXMgaGVhZDsgYWxzbyB1cG9uIHRoZSBtaXRyZSwgZXZlbiB1cG9uIGhpcyBmb3JlZnJvbnQsIGRpZCBoZSBwdXQgdGhlIGdvbGRlbiBwbGF0ZSwgdGhlIGhvbHkgY3Jvd247IGFzIHRoZSBMT1JEIGNvbW1hbmRlZCBNb3Nlcy4KQW5kIE1vc2VzIHRvb2sgdGhlIGFub2ludGluZyBvaWwsIGFuZCBhbm9pbnRlZCB0aGUgdGFiZXJuYWNsZSBhbmQgYWxsIHRoYXQgd2FzIHRoZXJlaW4sIGFuZCBzYW5jdGlmaWVkIHRoZW0uCkFuZCBoZSBzcHJpbmtsZWQgdGhlcmVvZiB1cG9uIHRoZSBhbHRhciBzZXZlbiB0aW1lcywgYW5kIGFub2ludGVkIHRoZSBhbHRhciBhbmQgYWxsIGhpcyB2ZXNzZWxzLCBib3RoIHRoZSBsYXZlciBhbmQgaGlzIGZvb3QsIHRvIHNhbmN0aWZ5IHRoZW0uCkFuZCBoZSBwb3VyZWQgb2YgdGhlIGFub2ludGluZyBvaWwgdXBvbiBBYXJvbidzIGhlYWQsIGFuZCBhbm9pbnRlZCBoaW0sIHRvIHNhbmN0aWZ5IGhpbS4KQW5kIE1vc2VzIGJyb3VnaHQgQWFyb24ncyBzb25zLCBhbmQgcHV0IGNvYXRzIHVwb24gdGhlbSwgYW5kIGdpcmRlZCB0aGVtIHdpdGggZ2lyZGxlcywgYW5kIHB1dCBib25uZXRzIHVwb24gdGhlbTsgYXMgdGhlIExPUkQgY29tbWFuZGVkIE1vc2VzLgpBbmQgaGUgYnJvdWdodCB0aGUgYnVsbG9jayBmb3IgdGhlIHNpbiBvZmZlcmluZzogYW5kIEFhcm9uIGFuZCBoaXMgc29ucyBsYWlkIHRoZWlyIGhhbmRzIHVwb24gdGhlIGhlYWQgb2YgdGhlIGJ1bGxvY2sgZm9yIHRoZSBzaW4gb2ZmZXJpbmcuCkFuZCBoZSBzbGV3IGl0OyBhbmQgTW9zZXMgdG9vayB0aGUgYmxvb2QsIGFuZCBwdXQgaXQgdXBvbiB0aGUgaG9ybnMgb2YgdGhlIGFsdGFyIHJvdW5kIGFib3V0IHdpdGggaGlzIGZpbmdlciwgYW5kIHB1cmlmaWVkIHRoZSBhbHRhciwgYW5kIHBvdXJlZCB0aGUgYmxvb2QgYXQgdGhlIGJvdHRvbSBvZiB0aGUgYWx0YXIsIGFuZCBzYW5jdGlmaWVkIGl0LCB0byBtYWtlIHJlY29uY2lsaWF0aW9uIHVwb24gaXQuCkFuZCBoZSB0b29rIGFsbCB0aGUgZmF0IHRoYXQgd2FzIHVwb24gdGhlIGlud2FyZHMsIGFuZCB0aGUgY2F1bCBhYm92ZSB0aGUgbGl2ZXIsIGFuZCB0aGUgdHdvIGtpZG5leXMsIGFuZCB0aGVpciBmYXQsIGFuZCBNb3NlcyBidXJuZWQgaXQgdXBvbiB0aGUgYWx0YXIuCkJ1dCB0aGUgYnVsbG9jaywgYW5kIGhpcyBoaWRlLCBoaXMgZmxlc2gsIGFuZCBoaXMgZHVuZywgaGUgYnVybnQgd2l0aCBmaXJlIHdpdGhvdXQgdGhlIGNhbXA7IGFzIHRoZSBMT1JEIGNvbW1hbmRlZCBNb3Nlcy4KQW5kIGhlIGJyb3VnaHQgdGhlIHJhbSBmb3IgdGhlIGJ1cm50IG9mZmVyaW5nOiBhbmQgQWFyb24gYW5kIGhpcyBzb25zIGxhaWQgdGhlaXIgaGFuZHMgdXBvbiB0aGUgaGVhZCBvZiB0aGUgcmFtLgpBbmQgaGUga2lsbGVkIGl0OyBhbmQgTW9zZXMgc3ByaW5rbGVkIHRoZSBibG9vZCB1cG9uIHRoZSBhbHRhciByb3VuZCBhYm91dC4KQW5kIGhlIGN1dCB0aGUgcmFtIGludG8gcGllY2VzOyBhbmQgTW9zZXMgYnVybnQgdGhlIGhlYWQsIGFuZCB0aGUgcGllY2VzLCBhbmQgdGhlIGZhdC4KQW5kIGhlIHdhc2hlZCB0aGUgaW53YXJkcyBhbmQgdGhlIGxlZ3MgaW4gd2F0ZXI7IGFuZCBNb3NlcyBidXJudCB0aGUgd2hvbGUgcmFtIHVwb24gdGhlIGFsdGFyOiBpdCB3YXMgYSBidXJudCBzYWNyaWZpY2UgZm9yIGEgc3dlZXQgc2F2b3VyLCBhbmQgYW4gb2ZmZXJpbmcgbWFkZSBieSBmaXJlIHVudG8gdGhlIExPUkQ7IGFzIHRoZSBMT1JEIGNvbW1hbmRlZCBNb3Nlcy4KQW5kIGhlIGJyb3VnaHQgdGhlIG90aGVyIHJhbSwgdGhlIHJhbSBvZiBjb25zZWNyYXRpb246IGFuZCBBYXJvbiBhbmQgaGlzIHNvbnMgbGFpZCB0aGVpciBoYW5kcyB1cG9uIHRoZSBoZWFkIG9mIHRoZSByYW0uCkFuZCBoZSBzbGV3IGl0OyBhbmQgTW9zZXMgdG9vayBvZiB0aGUgYmxvb2Qgb2YgaXQsIGFuZCBwdXQgaXQgdXBvbiB0aGUgdGlwIG9mIEFhcm9uJ3MgcmlnaHQgZWFyLCBhbmQgdXBvbiB0aGUgdGh1bWIgb2YgaGlzIHJpZ2h0IGhhbmQsIGFuZCB1cG9uIHRoZSBncmVhdCB0b2Ugb2YgaGlzIHJpZ2h0IGZvb3QuCkFuZCBoZSBicm91Z2h0IEFhcm9uJ3Mgc29ucywgYW5kIE1vc2VzIHB1dCBvZiB0aGUgYmxvb2QgdXBvbiB0aGUgdGlwIG9mIHRoZWlyIHJpZ2h0IGVhciwgYW5kIHVwb24gdGhlIHRodW1icyBvZiB0aGVpciByaWdodCBoYW5kcywgYW5kIHVwb24gdGhlIGdyZWF0IHRvZXMgb2YgdGhlaXIgcmlnaHQgZmVldDogYW5kIE1vc2VzIHNwcmlua2xlZCB0aGUgYmxvb2QgdXBvbiB0aGUgYWx0YXIgcm91bmQgYWJvdXQuCkFuZCBoZSB0b29rIHRoZSBmYXQsIGFuZCB0aGUgcnVtcCwgYW5kIGFsbCB0aGUgZmF0IHRoYXQgd2FzIHVwb24gdGhlIGlud2FyZHMsIGFuZCB0aGUgY2F1bCBhYm92ZSB0aGUgbGl2ZXIsIGFuZCB0aGUgdHdvIGtpZG5leXMsIGFuZCB0aGVpciBmYXQsIGFuZCB0aGUgcmlnaHQgc2hvdWxkZXI6CkFuZCBvdXQgb2YgdGhlIGJhc2tldCBvZiB1bmxlYXZlbmVkIGJyZWFkLCB0aGF0IHdhcyBiZWZvcmUgdGhlIExPUkQsIGhlIHRvb2sgb25lIHVubGVhdmVuZWQgY2FrZSwgYW5kIGEgY2FrZSBvZiBvaWxlZCBicmVhZCwgYW5kIG9uZSB3YWZlciwgYW5kIHB1dCB0aGVtIG9uIHRoZSBmYXQsIGFuZCB1cG9uIHRoZSByaWdodCBzaG91bGRlcjoKQW5kIGhlIHB1dCBhbGwgdXBvbiBBYXJvbidzIGhhbmRzLCBhbmQgdXBvbiBoaXMgc29ucycgaGFuZHMsIGFuZCB3YXZlZCB0aGVtIGZvciBhIHdhdmUgb2ZmZXJpbmcgYmVmb3JlIHRoZSBMT1JELgpBbmQgTW9zZXMgdG9vayB0aGVtIGZyb20gb2ZmIHRoZWlyIGhhbmRzLCBhbmQgYnVybnQgdGhlbSBvbiB0aGUgYWx0YXIgdXBvbiB0aGUgYnVybnQgb2ZmZXJpbmc6IHRoZXkgd2VyZSBjb25zZWNyYXRpb25zIGZvciBhIHN3ZWV0IHNhdm91cjogaXQgaXMgYW4gb2ZmZXJpbmcgbWFkZSBieSBmaXJlIHVudG8gdGhlIExPUkQuCkFuZCBNb3NlcyB0b29rIHRoZSBicmVhc3QsIGFuZCB3YXZlZCBpdCBmb3IgYSB3YXZlIG9mZmVyaW5nIGJlZm9yZSB0aGUgTE9SRDogZm9yIG9mIHRoZSByYW0gb2YgY29uc2VjcmF0aW9uIGl0IHdhcyBNb3NlcycgcGFydDsgYXMgdGhlIExPUkQgY29tbWFuZGVkIE1vc2VzLgpBbmQgTW9zZXMgdG9vayBvZiB0aGUgYW5vaW50aW5nIG9pbCwgYW5kIG9mIHRoZSBibG9vZCB3aGljaCB3YXMgdXBvbiB0aGUgYWx0YXIsIGFuZCBzcHJpbmtsZWQgaXQgdXBvbiBBYXJvbiwgYW5kIHVwb24gaGlzIGdhcm1lbnRzLCBhbmQgdXBvbiBoaXMgc29ucywgYW5kIHVwb24gaGlzIHNvbnMnIGdhcm1lbnRzIHdpdGggaGltOyBhbmQgc2FuY3RpZmllZCBBYXJvbiwgYW5kIGhpcyBnYXJtZW50cywgYW5kIGhpcyBzb25zLCBhbmQgaGlzIHNvbnMnIGdhcm1lbnRzIHdpdGggaGltLgpBbmQgTW9zZXMgc2FpZCB1bnRvIEFhcm9uIGFuZCB0byBoaXMgc29ucywgQm9pbCB0aGUgZmxlc2ggYXQgdGhlIGRvb3Igb2YgdGhlIHRhYmVybmFjbGUgb2YgdGhlIGNvbmdyZWdhdGlvbjogYW5kIHRoZXJlIGVhdCBpdCB3aXRoIHRoZSBicmVhZCB0aGF0IGlzIGluIHRoZSBiYXNrZXQgb2YgY29uc2VjcmF0aW9ucywgYXMgSSBjb21tYW5kZWQsIHNheWluZywgQWFyb24gYW5kIGhpcyBzb25zIHNoYWxsIGVhdCBpdC4KQW5kIHRoYXQgd2hpY2ggcmVtYWluZXRoIG9mIHRoZSBmbGVzaCBhbmQgb2YgdGhlIGJyZWFkIHNoYWxsIHllIGJ1cm4gd2l0aCBmaXJlLgpBbmQgeWUgc2hhbGwgbm90IGdvIG91dCBvZiB0aGUgZG9vciBvZiB0aGUgdGFiZXJuYWNsZSBvZiB0aGUgY29uZ3JlZ2F0aW9uIGluIHNldmVuIGRheXMsIHVudGlsIHRoZSBkYXlzIG9mIHlvdXIgY29uc2VjcmF0aW9uIGJlIGF0IGFuIGVuZDogZm9yIHNldmVuIGRheXMgc2hhbGwgaGUgY29uc2VjcmF0ZSB5b3UuCkFzIGhlIGhhdGggZG9uZSB0aGlzIGRheSwgc28gdGhlIExPUkQgaGF0aCBjb21tYW5kZWQgdG8gZG8sIHRvIG1ha2UgYW4gYXRvbmVtZW50IGZvciB5b3UuClRoZXJlZm9yZSBzaGFsbCB5ZSBhYmlkZSBhdCB0aGUgZG9vciBvZiB0aGUgdGFiZXJuYWNsZSBvZiB0aGUgY29uZ3JlZ2F0aW9uIGRheSBhbmQgbmlnaHQgc2V2ZW4gZGF5cywgYW5kIGtlZXAgdGhlIGNoYXJnZSBvZiB0aGUgTE9SRCwgdGhhdCB5ZSBkaWUgbm90OiBmb3Igc28gSSBhbSBjb21tYW5kZWQuClNvIEFhcm9uIGFuZCBoaXMgc29ucyBkaWQgYWxsIHRoaW5ncyB3aGljaCB0aGUgTE9SRCBjb21tYW5kZWQgYnkgdGhlIGhhbmQgb2YgTW9zZXMuCkFuZCBpdCBjYW1lIHRvIHBhc3Mgb24gdGhlIGVpZ2h0aCBkYXksIHRoYXQgTW9zZXMgY2FsbGVkIEFhcm9uIGFuZCBoaXMgc29ucywgYW5kIHRoZSBlbGRlcnMgb2YgSXNyYWVsOwpBbmQgaGUgc2FpZCB1bnRvIEFhcm9uLCBUYWtlIHRoZWUgYSB5b3VuZyBjYWxmIGZvciBhIHNpbiBvZmZlcmluZywgYW5kIGEgcmFtIGZvciBhIGJ1cm50IG9mZmVyaW5nLCB3aXRob3V0IGJsZW1pc2gsIGFuZCBvZmZlciB0aGVtIGJlZm9yZSB0aGUgTE9SRC4KQW5kIHVudG8gdGhlIGNoaWxkcmVuIG9mIElzcmFlbCB0aG91IHNoYWx0IHNwZWFrLCBzYXlpbmcsIFRha2UgeWUgYSBraWQgb2YgdGhlIGdvYXRzIGZvciBhIHNpbiBvZmZlcmluZzsgYW5kIGEgY2FsZiBhbmQgYSBsYW1iLCBib3RoIG9mIHRoZSBmaXJzdCB5ZWFyLCB3aXRob3V0IGJsZW1pc2gsIGZvciBhIGJ1cm50IG9mZmVyaW5nOwpBbHNvIGEgYnVsbG9jayBhbmQgYSByYW0gZm9yIHBlYWNlIG9mZmVyaW5ncywgdG8gc2FjcmlmaWNlIGJlZm9yZSB0aGUgTE9SRDsgYW5kIGEgbWVhdCBvZmZlcmluZyBtaW5nbGVkIHdpdGggb2lsOiBmb3IgdG8gZGF5IHRoZSBMT1JEIHdpbGwgYXBwZWFyIHVudG8geW91LgpBbmQgdGhleSBicm91Z2h0IHRoYXQgd2hpY2ggTW9zZXMgY29tbWFuZGVkIGJlZm9yZSB0aGUgdGFiZXJuYWNsZSBvZiB0aGUgY29uZ3JlZ2F0aW9uOiBhbmQgYWxsIHRoZSBjb25ncmVnYXRpb24gZHJldyBuZWFyIGFuZCBzdG9vZCBiZWZvcmUgdGhlIExPUkQuCkFuZCBNb3NlcyBzYWlkLCBUaGlzIGlzIHRoZSB0aGluZyB3aGljaCB0aGUgTE9SRCBjb21tYW5kZWQgdGhhdCB5ZSBzaG91bGQgZG86IGFuZCB0aGUgZ2xvcnkgb2YgdGhlIExPUkQgc2hhbGwgYXBwZWFyIHVudG8geW91LgpBbmQgTW9zZXMgc2FpZCB1bnRvIEFhcm9uLCBHbyB1bnRvIHRoZSBhbHRhciwgYW5kIG9mZmVyIHRoeSBzaW4gb2ZmZXJpbmcsIGFuZCB0aHkgYnVybnQgb2ZmZXJpbmcsIGFuZCBtYWtlIGFuIGF0b25lbWVudCBmb3IgdGh5c2VsZiwgYW5kIGZvciB0aGUgcGVvcGxlOiBhbmQgb2ZmZXIgdGhlIG9mZmVyaW5nIG9mIHRoZSBwZW9wbGUsIGFuZCBtYWtlIGFuIGF0b25lbWVudCBmb3IgdGhlbTsgYXMgdGhlIExPUkQgY29tbWFuZGVkLgpBYXJvbiB0aGVyZWZvcmUgd2VudCB1bnRvIHRoZSBhbHRhciwgYW5kIHNsZXcgdGhlIGNhbGYgb2YgdGhlIHNpbiBvZmZlcmluZywgd2hpY2ggd2FzIGZvciBoaW1zZWxmLgpBbmQgdGhlIHNvbnMgb2YgQWFyb24gYnJvdWdodCB0aGUgYmxvb2QgdW50byBoaW06IGFuZCBoZSBkaXBwZWQgaGlzIGZpbmdlciBpbiB0aGUgYmxvb2QsIGFuZCBwdXQgaXQgdXBvbiB0aGUgaG9ybnMgb2YgdGhlIGFsdGFyLCBhbmQgcG91cmVkIG91dCB0aGUgYmxvb2QgYXQgdGhlIGJvdHRvbSBvZiB0aGUgYWx0YXI6CkJ1dCB0aGUgZmF0LCBhbmQgdGhlIGtpZG5leXMsIGFuZCB0aGUgY2F1bCBhYm92ZSB0aGUgbGl2ZXIgb2YgdGhlIHNpbiBvZmZlcmluZywgaGUgYnVybnQgdXBvbiB0aGUgYWx0YXI7IGFzIHRoZSBMT1JEIGNvbW1hbmRlZCBNb3Nlcy4KQW5kIHRoZSBmbGVzaCBhbmQgdGhlIGhpZGUgaGUgYnVybnQgd2l0aCBmaXJlIHdpdGhvdXQgdGhlIGNhbXAuCkFuZCBoZSBzbGV3IHRoZSBidXJudCBvZmZlcmluZzsgYW5kIEFhcm9uJ3Mgc29ucyBwcmVzZW50ZWQgdW50byBoaW0gdGhlIGJsb29kLCB3aGljaCBoZSBzcHJpbmtsZWQgcm91bmQgYWJvdXQgdXBvbiB0aGUgYWx0YXIuCkFuZCB0aGV5IHByZXNlbnRlZCB0aGUgYnVybnQgb2ZmZXJpbmcgdW50byBoaW0sIHdpdGggdGhlIHBpZWNlcyB0aGVyZW9mLCBhbmQgdGhlIGhlYWQ6IGFuZCBoZSBidXJudCB0aGVtIHVwb24gdGhlIGFsdGFyLgpBbmQgaGUgZGlkIHdhc2ggdGhlIGlud2FyZHMgYW5kIHRoZSBsZWdzLCBhbmQgYnVybnQgdGhlbSB1cG9uIHRoZSBidXJudCBvZmZlcmluZyBvbiB0aGUgYWx0YXIuCkFuZCBoZSBicm91Z2h0IHRoZSBwZW9wbGUncyBvZmZlcmluZywgYW5kIHRvb2sgdGhlIGdvYXQsIHdoaWNoIHdhcyB0aGUgc2luIG9mZmVyaW5nIGZvciB0aGUgcGVvcGxlLCBhbmQgc2xldyBpdCwgYW5kIG9mZmVyZWQgaXQgZm9yIHNpbiwgYXMgdGhlIGZpcnN0LgpBbmQgaGUgYnJvdWdodCB0aGUgYnVybnQgb2ZmZXJpbmcsIGFuZCBvZmZlcmVkIGl0IGFjY29yZGluZyB0byB0aGUgbWFubmVyLgpBbmQgaGUgYnJvdWdodCB0aGUgbWVhdCBvZmZlcmluZywgYW5kIHRvb2sgYW4gaGFuZGZ1bCB0aGVyZW9mLCBhbmQgYnVybnQgaXQgdXBvbiB0aGUgYWx0YXIsIGJlc2lkZSB0aGUgYnVybnQgc2FjcmlmaWNlIG9mIHRoZSBtb3JuaW5nLgpIZSBzbGV3IGFsc28gdGhlIGJ1bGxvY2sgYW5kIHRoZSByYW0gZm9yIGEgc2FjcmlmaWNlIG9mIHBlYWNlIG9mZmVyaW5ncywgd2hpY2ggd2FzIGZvciB0aGUgcGVvcGxlOiBhbmQgQWFyb24ncyBzb25zIHByZXNlbnRlZCB1bnRvIGhpbSB0aGUgYmxvb2QsIHdoaWNoIGhlIHNwcmlua2xlZCB1cG9uIHRoZSBhbHRhciByb3VuZCBhYm91dCwKQW5kIHRoZSBmYXQgb2YgdGhlIGJ1bGxvY2sgYW5kIG9mIHRoZSByYW0sIHRoZSBydW1wLCBhbmQgdGhhdCB3aGljaCBjb3ZlcmV0aCB0aGUgaW53YXJkcywgYW5kIHRoZSBraWRuZXlzLCBhbmQgdGhlIGNhdWwgYWJvdmUgdGhlIGxpdmVyOgpBbmQgdGhleSBwdXQgdGhlIGZhdCB1cG9uIHRoZSBicmVhc3RzLCBhbmQgaGUgYnVybnQgdGhlIGZhdCB1cG9uIHRoZSBhbHRhcjoKQW5kIHRoZSBicmVhc3RzIGFuZCB0aGUgcmlnaHQgc2hvdWxkZXIgQWFyb24gd2F2ZWQgZm9yIGEgd2F2ZSBvZmZlcmluZyBiZWZvcmUgdGhlIExPUkQ7IGFzIE1vc2VzIGNvbW1hbmRlZC4KQW5kIEFhcm9uIGxpZnRlZCB1cCBoaXMgaGFuZCB0b3dhcmQgdGhlIHBlb3BsZSwgYW5kIGJsZXNzZWQgdGhlbSwgYW5kIGNhbWUgZG93biBmcm9tIG9mZmVyaW5nIG9mIHRoZSBzaW4gb2ZmZXJpbmcsIGFuZCB0aGUgYnVybnQgb2ZmZXJpbmcsIGFuZCBwZWFjZSBvZmZlcmluZ3MuCkFuZCBNb3NlcyBhbmQgQWFyb24gd2VudCBpbnRvIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBjb25ncmVnYXRpb24sIGFuZCBjYW1lIG91dCwgYW5kIGJsZXNzZWQgdGhlIHBlb3BsZTogYW5kIHRoZSBnbG9yeSBvZiB0aGUgTE9SRCBhcHBlYXJlZCB1bnRvIGFsbCB0aGUgcGVvcGxlLgpBbmQgdGhlcmUgY2FtZSBhIGZpcmUgb3V0IGZyb20gYmVmb3JlIHRoZSBMT1JELCBhbmQgY29uc3VtZWQgdXBvbiB0aGUgYWx0YXIgdGhlIGJ1cm50IG9mZmVyaW5nIGFuZCB0aGUgZmF0OiB3aGljaCB3aGVuIGFsbCB0aGUgcGVvcGxlIHNhdywgdGhleSBzaG91dGVkLCBhbmQgZmVsbCBvbiB0aGVpciBmYWNlcy4KQW5kIE5hZGFiIGFuZCBBYmlodSwgdGhlIHNvbnMgb2YgQWFyb24sIHRvb2sgZWl0aGVyIG9mIHRoZW0gaGlzIGNlbnNlciwgYW5kIHB1dCBmaXJlIHRoZXJlaW4sIGFuZCBwdXQgaW5jZW5zZSB0aGVyZW9uLCBhbmQgb2ZmZXJlZCBzdHJhbmdlIGZpcmUgYmVmb3JlIHRoZSBMT1JELCB3aGljaCBoZSBjb21tYW5kZWQgdGhlbSBub3QuCkFuZCB0aGVyZSB3ZW50IG91dCBmaXJlIGZyb20gdGhlIExPUkQsIGFuZCBkZXZvdXJlZCB0aGVtLCBhbmQgdGhleSBkaWVkIGJlZm9yZSB0aGUgTE9SRC4KVGhlbiBNb3NlcyBzYWlkIHVudG8gQWFyb24sIFRoaXMgaXMgaXQgdGhhdCB0aGUgTE9SRCBzcGFrZSwgc2F5aW5nLCBJIHdpbGwgYmUgc2FuY3RpZmllZCBpbiB0aGVtIHRoYXQgY29tZSBuaWdoIG1lLCBhbmQgYmVmb3JlIGFsbCB0aGUgcGVvcGxlIEkgd2lsbCBiZSBnbG9yaWZpZWQuIEFuZCBBYXJvbiBoZWxkIGhpcyBwZWFjZS4KQW5kIE1vc2VzIGNhbGxlZCBNaXNoYWVsIGFuZCBFbHphcGhhbiwgdGhlIHNvbnMgb2YgVXp6aWVsIHRoZSB1bmNsZSBvZiBBYXJvbiwgYW5kIHNhaWQgdW50byB0aGVtLCBDb21lIG5lYXIsIGNhcnJ5IHlvdXIgYnJldGhyZW4gZnJvbSBiZWZvcmUgdGhlIHNhbmN0dWFyeSBvdXQgb2YgdGhlIGNhbXAuClNvIHRoZXkgd2VudCBuZWFyLCBhbmQgY2FycmllZCB0aGVtIGluIHRoZWlyIGNvYXRzIG91dCBvZiB0aGUgY2FtcDsgYXMgTW9zZXMgaGFkIHNhaWQuCkFuZCBNb3NlcyBzYWlkIHVudG8gQWFyb24sIGFuZCB1bnRvIEVsZWF6YXIgYW5kIHVudG8gSXRoYW1hciwgaGlzIHNvbnMsIFVuY292ZXIgbm90IHlvdXIgaGVhZHMsIG5laXRoZXIgcmVuZCB5b3VyIGNsb3RoZXM7IGxlc3QgeWUgZGllLCBhbmQgbGVzdCB3cmF0aCBjb21lIHVwb24gYWxsIHRoZSBwZW9wbGU6IGJ1dCBsZXQgeW91ciBicmV0aHJlbiwgdGhlIHdob2xlIGhvdXNlIG9mIElzcmFlbCwgYmV3YWlsIHRoZSBidXJuaW5nIHdoaWNoIHRoZSBMT1JEIGhhdGgga2luZGxlZC4KQW5kIHllIHNoYWxsIG5vdCBnbyBvdXQgZnJvbSB0aGUgZG9vciBvZiB0aGUgdGFiZXJuYWNsZSBvZiB0aGUgY29uZ3JlZ2F0aW9uLCBsZXN0IHllIGRpZTogZm9yIHRoZSBhbm9pbnRpbmcgb2lsIG9mIHRoZSBMT1JEIGlzIHVwb24geW91LiBBbmQgdGhleSBkaWQgYWNjb3JkaW5nIHRvIHRoZSB3b3JkIG9mIE1vc2VzLgpBbmQgdGhlIExPUkQgc3Bha2UgdW50byBBYXJvbiwgc2F5aW5nLApEbyBub3QgZHJpbmsgd2luZSBub3Igc3Ryb25nIGRyaW5rLCB0aG91LCBub3IgdGh5IHNvbnMgd2l0aCB0aGVlLCB3aGVuIHllIGdvIGludG8gdGhlIHRhYmVybmFjbGUgb2YgdGhlIGNvbmdyZWdhdGlvbiwgbGVzdCB5ZSBkaWU6IGl0IHNoYWxsIGJlIGEgc3RhdHV0ZSBmb3IgZXZlciB0aHJvdWdob3V0IHlvdXIgZ2VuZXJhdGlvbnM6CkFuZCB0aGF0IHllIG1heSBwdXQgZGlmZmVyZW5jZSBiZXR3ZWVuIGhvbHkgYW5kIHVuaG9seSwgYW5kIGJldHdlZW4gdW5jbGVhbiBhbmQgY2xlYW47CkFuZCB0aGF0IHllIG1heSB0ZWFjaCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGFsbCB0aGUgc3RhdHV0ZXMgd2hpY2ggdGhlIExPUkQgaGF0aCBzcG9rZW4gdW50byB0aGVtIGJ5IHRoZSBoYW5kIG9mIE1vc2VzLgpBbmQgTW9zZXMgc3Bha2UgdW50byBBYXJvbiwgYW5kIHVudG8gRWxlYXphciBhbmQgdW50byBJdGhhbWFyLCBoaXMgc29ucyB0aGF0IHdlcmUgbGVmdCwgVGFrZSB0aGUgbWVhdCBvZmZlcmluZyB0aGF0IHJlbWFpbmV0aCBvZiB0aGUgb2ZmZXJpbmdzIG9mIHRoZSBMT1JEIG1hZGUgYnkgZmlyZSwgYW5kIGVhdCBpdCB3aXRob3V0IGxlYXZlbiBiZXNpZGUgdGhlIGFsdGFyOiBmb3IgaXQgaXMgbW9zdCBob2x5OgpBbmQgeWUgc2hhbGwgZWF0IGl0IGluIHRoZSBob2x5IHBsYWNlLCBiZWNhdXNlIGl0IGlzIHRoeSBkdWUsIGFuZCB0aHkgc29ucycgZHVlLCBvZiB0aGUgc2FjcmlmaWNlcyBvZiB0aGUgTE9SRCBtYWRlIGJ5IGZpcmU6IGZvciBzbyBJIGFtIGNvbW1hbmRlZC4KQW5kIHRoZSB3YXZlIGJyZWFzdCBhbmQgaGVhdmUgc2hvdWxkZXIgc2hhbGwgeWUgZWF0IGluIGEgY2xlYW4gcGxhY2U7IHRob3UsIGFuZCB0aHkgc29ucywgYW5kIHRoeSBkYXVnaHRlcnMgd2l0aCB0aGVlOiBmb3IgdGhleSBiZSB0aHkgZHVlLCBhbmQgdGh5IHNvbnMnIGR1ZSwgd2hpY2ggYXJlIGdpdmVuIG91dCBvZiB0aGUgc2FjcmlmaWNlcyBvZiBwZWFjZSBvZmZlcmluZ3Mgb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbC4KVGhlIGhlYXZlIHNob3VsZGVyIGFuZCB0aGUgd2F2ZSBicmVhc3Qgc2hhbGwgdGhleSBicmluZyB3aXRoIHRoZSBvZmZlcmluZ3MgbWFkZSBieSBmaXJlIG9mIHRoZSBmYXQsIHRvIHdhdmUgaXQgZm9yIGEgd2F2ZSBvZmZlcmluZyBiZWZvcmUgdGhlIExPUkQ7IGFuZCBpdCBzaGFsbCBiZSB0aGluZSwgYW5kIHRoeSBzb25zJyB3aXRoIHRoZWUsIGJ5IGEgc3RhdHV0ZSBmb3IgZXZlcjsgYXMgdGhlIExPUkQgaGF0aCBjb21tYW5kZWQuCkFuZCBNb3NlcyBkaWxpZ2VudGx5IHNvdWdodCB0aGUgZ29hdCBvZiB0aGUgc2luIG9mZmVyaW5nLCBhbmQsIGJlaG9sZCwgaXQgd2FzIGJ1cm50OiBhbmQgaGUgd2FzIGFuZ3J5IHdpdGggRWxlYXphciBhbmQgSXRoYW1hciwgdGhlIHNvbnMgb2YgQWFyb24gd2hpY2ggd2VyZSBsZWZ0IGFsaXZlLCBzYXlpbmcsCldoZXJlZm9yZSBoYXZlIHllIG5vdCBlYXRlbiB0aGUgc2luIG9mZmVyaW5nIGluIHRoZSBob2x5IHBsYWNlLCBzZWVpbmcgaXQgaXMgbW9zdCBob2x5LCBhbmQgR29kIGhhdGggZ2l2ZW4gaXQgeW91IHRvIGJlYXIgdGhlIGluaXF1aXR5IG9mIHRoZSBjb25ncmVnYXRpb24sIHRvIG1ha2UgYXRvbmVtZW50IGZvciB0aGVtIGJlZm9yZSB0aGUgTE9SRD8KQmVob2xkLCB0aGUgYmxvb2Qgb2YgaXQgd2FzIG5vdCBicm91Z2h0IGluIHdpdGhpbiB0aGUgaG9seSBwbGFjZTogeWUgc2hvdWxkIGluZGVlZCBoYXZlIGVhdGVuIGl0IGluIHRoZSBob2x5IHBsYWNlLCBhcyBJIGNvbW1hbmRlZC4KQW5kIEFhcm9uIHNhaWQgdW50byBNb3NlcywgQmVob2xkLCB0aGlzIGRheSBoYXZlIHRoZXkgb2ZmZXJlZCB0aGVpciBzaW4gb2ZmZXJpbmcgYW5kIHRoZWlyIGJ1cm50IG9mZmVyaW5nIGJlZm9yZSB0aGUgTE9SRDsgYW5kIHN1Y2ggdGhpbmdzIGhhdmUgYmVmYWxsZW4gbWU6IGFuZCBpZiBJIGhhZCBlYXRlbiB0aGUgc2luIG9mZmVyaW5nIHRvIGRheSwgc2hvdWxkIGl0IGhhdmUgYmVlbiBhY2NlcHRlZCBpbiB0aGUgc2lnaHQgb2YgdGhlIExPUkQ/CkFuZCB3aGVuIE1vc2VzIGhlYXJkIHRoYXQsIGhlIHdhcyBjb250ZW50LgpBbmQgdGhlIExPUkQgc3Bha2UgdW50byBNb3NlcyBhbmQgdG8gQWFyb24sIHNheWluZyB1bnRvIHRoZW0sClNwZWFrIHVudG8gdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgc2F5aW5nLCBUaGVzZSBhcmUgdGhlIGJlYXN0cyB3aGljaCB5ZSBzaGFsbCBlYXQgYW1vbmcgYWxsIHRoZSBiZWFzdHMgdGhhdCBhcmUgb24gdGhlIGVhcnRoLgpXaGF0c29ldmVyIHBhcnRldGggdGhlIGhvb2YsIGFuZCBpcyBjbG92ZW5mb290ZWQsIGFuZCBjaGV3ZXRoIHRoZSBjdWQsIGFtb25nIHRoZSBiZWFzdHMsIHRoYXQgc2hhbGwgeWUgZWF0LgpOZXZlcnRoZWxlc3MgdGhlc2Ugc2hhbGwgeWUgbm90IGVhdCBvZiB0aGVtIHRoYXQgY2hldyB0aGUgY3VkLCBvciBvZiB0aGVtIHRoYXQgZGl2aWRlIHRoZSBob29mOiBhcyB0aGUgY2FtZWwsIGJlY2F1c2UgaGUgY2hld2V0aCB0aGUgY3VkLCBidXQgZGl2aWRldGggbm90IHRoZSBob29mOyBoZSBpcyB1bmNsZWFuIHVudG8geW91LgpBbmQgdGhlIGNvbmV5LCBiZWNhdXNlIGhlIGNoZXdldGggdGhlIGN1ZCwgYnV0IGRpdmlkZXRoIG5vdCB0aGUgaG9vZjsgaGUgaXMgdW5jbGVhbiB1bnRvIHlvdS4KQW5kIHRoZSBoYXJlLCBiZWNhdXNlIGhlIGNoZXdldGggdGhlIGN1ZCwgYnV0IGRpdmlkZXRoIG5vdCB0aGUgaG9vZjsgaGUgaXMgdW5jbGVhbiB1bnRvIHlvdS4KQW5kIHRoZSBzd2luZSwgdGhvdWdoIGhlIGRpdmlkZSB0aGUgaG9vZiwgYW5kIGJlIGNsb3ZlbmZvb3RlZCwgeWV0IGhlIGNoZXdldGggbm90IHRoZSBjdWQ7IGhlIGlzIHVuY2xlYW4gdG8geW91LgpPZiB0aGVpciBmbGVzaCBzaGFsbCB5ZSBub3QgZWF0LCBhbmQgdGhlaXIgY2FyY2FzZSBzaGFsbCB5ZSBub3QgdG91Y2g7IHRoZXkgYXJlIHVuY2xlYW4gdG8geW91LgpUaGVzZSBzaGFsbCB5ZSBlYXQgb2YgYWxsIHRoYXQgYXJlIGluIHRoZSB3YXRlcnM6IHdoYXRzb2V2ZXIgaGF0aCBmaW5zIGFuZCBzY2FsZXMgaW4gdGhlIHdhdGVycywgaW4gdGhlIHNlYXMsIGFuZCBpbiB0aGUgcml2ZXJzLCB0aGVtIHNoYWxsIHllIGVhdC4KQW5kIGFsbCB0aGF0IGhhdmUgbm90IGZpbnMgYW5kIHNjYWxlcyBpbiB0aGUgc2VhcywgYW5kIGluIHRoZSByaXZlcnMsIG9mIGFsbCB0aGF0IG1vdmUgaW4gdGhlIHdhdGVycywgYW5kIG9mIGFueSBsaXZpbmcgdGhpbmcgd2hpY2ggaXMgaW4gdGhlIHdhdGVycywgdGhleSBzaGFsbCBiZSBhbiBhYm9taW5hdGlvbiB1bnRvIHlvdToKVGhleSBzaGFsbCBiZSBldmVuIGFuIGFib21pbmF0aW9uIHVudG8geW91OyB5ZSBzaGFsbCBub3QgZWF0IG9mIHRoZWlyIGZsZXNoLCBidXQgeWUgc2hhbGwgaGF2ZSB0aGVpciBjYXJjYXNlcyBpbiBhYm9taW5hdGlvbi4KV2hhdHNvZXZlciBoYXRoIG5vIGZpbnMgbm9yIHNjYWxlcyBpbiB0aGUgd2F0ZXJzLCB0aGF0IHNoYWxsIGJlIGFuIGFib21pbmF0aW9uIHVudG8geW91LgpBbmQgdGhlc2UgYXJlIHRoZXkgd2hpY2ggeWUgc2hhbGwgaGF2ZSBpbiBhYm9taW5hdGlvbiBhbW9uZyB0aGUgZm93bHM7IHRoZXkgc2hhbGwgbm90IGJlIGVhdGVuLCB0aGV5IGFyZSBhbiBhYm9taW5hdGlvbjogdGhlIGVhZ2xlLCBhbmQgdGhlIG9zc2lmcmFnZSwgYW5kIHRoZSBvc3ByYXksCkFuZCB0aGUgdnVsdHVyZSwgYW5kIHRoZSBraXRlIGFmdGVyIGhpcyBraW5kOwpFdmVyeSByYXZlbiBhZnRlciBoaXMga2luZDsKQW5kIHRoZSBvd2wsIGFuZCB0aGUgbmlnaHQgaGF3aywgYW5kIHRoZSBjdWNrb3csIGFuZCB0aGUgaGF3ayBhZnRlciBoaXMga2luZCwKQW5kIHRoZSBsaXR0bGUgb3dsLCBhbmQgdGhlIGNvcm1vcmFudCwgYW5kIHRoZSBncmVhdCBvd2wsCkFuZCB0aGUgc3dhbiwgYW5kIHRoZSBwZWxpY2FuLCBhbmQgdGhlIGdpZXIgZWFnbGUsCkFuZCB0aGUgc3RvcmssIHRoZSBoZXJvbiBhZnRlciBoZXIga2luZCwgYW5kIHRoZSBsYXB3aW5nLCBhbmQgdGhlIGJhdC4KQWxsIGZvd2xzIHRoYXQgY3JlZXAsIGdvaW5nIHVwb24gYWxsIGZvdXIsIHNoYWxsIGJlIGFuIGFib21pbmF0aW9uIHVudG8geW91LgpZZXQgdGhlc2UgbWF5IHllIGVhdCBvZiBldmVyeSBmbHlpbmcgY3JlZXBpbmcgdGhpbmcgdGhhdCBnb2V0aCB1cG9uIGFsbCBmb3VyLCB3aGljaCBoYXZlIGxlZ3MgYWJvdmUgdGhlaXIgZmVldCwgdG8gbGVhcCB3aXRoYWwgdXBvbiB0aGUgZWFydGg7CkV2ZW4gdGhlc2Ugb2YgdGhlbSB5ZSBtYXkgZWF0OyB0aGUgbG9jdXN0IGFmdGVyIGhpcyBraW5kLCBhbmQgdGhlIGJhbGQgbG9jdXN0IGFmdGVyIGhpcyBraW5kLCBhbmQgdGhlIGJlZXRsZSBhZnRlciBoaXMga2luZCwgYW5kIHRoZSBncmFzc2hvcHBlciBhZnRlciBoaXMga2luZC4KQnV0IGFsbCBvdGhlciBmbHlpbmcgY3JlZXBpbmcgdGhpbmdzLCB3aGljaCBoYXZlIGZvdXIgZmVldCwgc2hhbGwgYmUgYW4gYWJvbWluYXRpb24gdW50byB5b3UuCkFuZCBmb3IgdGhlc2UgeWUgc2hhbGwgYmUgdW5jbGVhbjogd2hvc29ldmVyIHRvdWNoZXRoIHRoZSBjYXJjYXNlIG9mIHRoZW0gc2hhbGwgYmUgdW5jbGVhbiB1bnRpbCB0aGUgZXZlbi4KQW5kIHdob3NvZXZlciBiZWFyZXRoIG91Z2h0IG9mIHRoZSBjYXJjYXNlIG9mIHRoZW0gc2hhbGwgd2FzaCBoaXMgY2xvdGhlcywgYW5kIGJlIHVuY2xlYW4gdW50aWwgdGhlIGV2ZW4uClRoZSBjYXJjYXNlcyBvZiBldmVyeSBiZWFzdCB3aGljaCBkaXZpZGV0aCB0aGUgaG9vZiwgYW5kIGlzIG5vdCBjbG92ZW5mb290ZWQsIG5vciBjaGV3ZXRoIHRoZSBjdWQsIGFyZSB1bmNsZWFuIHVudG8geW91OiBldmVyeSBvbmUgdGhhdCB0b3VjaGV0aCB0aGVtIHNoYWxsIGJlIHVuY2xlYW4uCkFuZCB3aGF0c29ldmVyIGdvZXRoIHVwb24gaGlzIHBhd3MsIGFtb25nIGFsbCBtYW5uZXIgb2YgYmVhc3RzIHRoYXQgZ28gb24gYWxsIGZvdXIsIHRob3NlIGFyZSB1bmNsZWFuIHVudG8geW91OiB3aG9zbyB0b3VjaGV0aCB0aGVpciBjYXJjYXNlIHNoYWxsIGJlIHVuY2xlYW4gdW50aWwgdGhlIGV2ZW4uCkFuZCBoZSB0aGF0IGJlYXJldGggdGhlIGNhcmNhc2Ugb2YgdGhlbSBzaGFsbCB3YXNoIGhpcyBjbG90aGVzLCBhbmQgYmUgdW5jbGVhbiB1bnRpbCB0aGUgZXZlbjogdGhleSBhcmUgdW5jbGVhbiB1bnRvIHlvdS4KVGhlc2UgYWxzbyBzaGFsbCBiZSB1bmNsZWFuIHVudG8geW91IGFtb25nIHRoZSBjcmVlcGluZyB0aGluZ3MgdGhhdCBjcmVlcCB1cG9uIHRoZSBlYXJ0aDsgdGhlIHdlYXNlbCwgYW5kIHRoZSBtb3VzZSwgYW5kIHRoZSB0b3J0b2lzZSBhZnRlciBoaXMga2luZCwKQW5kIHRoZSBmZXJyZXQsIGFuZCB0aGUgY2hhbWVsZW9uLCBhbmQgdGhlIGxpemFyZCwgYW5kIHRoZSBzbmFpbCwgYW5kIHRoZSBtb2xlLgpUaGVzZSBhcmUgdW5jbGVhbiB0byB5b3UgYW1vbmcgYWxsIHRoYXQgY3JlZXA6IHdob3NvZXZlciBkb3RoIHRvdWNoIHRoZW0sIHdoZW4gdGhleSBiZSBkZWFkLCBzaGFsbCBiZSB1bmNsZWFuIHVudGlsIHRoZSBldmVuLgpBbmQgdXBvbiB3aGF0c29ldmVyIGFueSBvZiB0aGVtLCB3aGVuIHRoZXkgYXJlIGRlYWQsIGRvdGggZmFsbCwgaXQgc2hhbGwgYmUgdW5jbGVhbjsgd2hldGhlciBpdCBiZSBhbnkgdmVzc2VsIG9mIHdvb2QsIG9yIHJhaW1lbnQsIG9yIHNraW4sIG9yIHNhY2ssIHdoYXRzb2V2ZXIgdmVzc2VsIGl0IGJlLCB3aGVyZWluIGFueSB3b3JrIGlzIGRvbmUsIGl0IG11c3QgYmUgcHV0IGludG8gd2F0ZXIsIGFuZCBpdCBzaGFsbCBiZSB1bmNsZWFuIHVudGlsIHRoZSBldmVuOyBzbyBpdCBzaGFsbCBiZSBjbGVhbnNlZC4KQW5kIGV2ZXJ5IGVhcnRoZW4gdmVzc2VsLCB3aGVyZWludG8gYW55IG9mIHRoZW0gZmFsbGV0aCwgd2hhdHNvZXZlciBpcyBpbiBpdCBzaGFsbCBiZSB1bmNsZWFuOyBhbmQgeWUgc2hhbGwgYnJlYWsgaXQuCk9mIGFsbCBtZWF0IHdoaWNoIG1heSBiZSBlYXRlbiwgdGhhdCBvbiB3aGljaCBzdWNoIHdhdGVyIGNvbWV0aCBzaGFsbCBiZSB1bmNsZWFuOiBhbmQgYWxsIGRyaW5rIHRoYXQgbWF5IGJlIGRydW5rIGluIGV2ZXJ5IHN1Y2ggdmVzc2VsIHNoYWxsIGJlIHVuY2xlYW4uCkFuZCBldmVyeSB0aGluZyB3aGVyZXVwb24gYW55IHBhcnQgb2YgdGhlaXIgY2FyY2FzZSBmYWxsZXRoIHNoYWxsIGJlIHVuY2xlYW47IHdoZXRoZXIgaXQgYmUgb3Zlbiwgb3IgcmFuZ2VzIGZvciBwb3RzLCB0aGV5IHNoYWxsIGJlIGJyb2tlbiBkb3duOiBmb3IgdGhleSBhcmUgdW5jbGVhbiBhbmQgc2hhbGwgYmUgdW5jbGVhbiB1bnRvIHlvdS4KTmV2ZXJ0aGVsZXNzIGEgZm91bnRhaW4gb3IgcGl0LCB3aGVyZWluIHRoZXJlIGlzIHBsZW50eSBvZiB3YXRlciwgc2hhbGwgYmUgY2xlYW46IGJ1dCB0aGF0IHdoaWNoIHRvdWNoZXRoIHRoZWlyIGNhcmNhc2Ugc2hhbGwgYmUgdW5jbGVhbi4KQW5kIGlmIGFueSBwYXJ0IG9mIHRoZWlyIGNhcmNhc2UgZmFsbCB1cG9uIGFueSBzb3dpbmcgc2VlZCB3aGljaCBpcyB0byBiZSBzb3duLCBpdCBzaGFsbCBiZSBjbGVhbi4KQnV0IGlmIGFueSB3YXRlciBiZSBwdXQgdXBvbiB0aGUgc2VlZCwgYW5kIGFueSBwYXJ0IG9mIHRoZWlyIGNhcmNhc2UgZmFsbCB0aGVyZW9uLCBpdCBzaGFsbCBiZSB1bmNsZWFuIHVudG8geW91LgpBbmQgaWYgYW55IGJlYXN0LCBvZiB3aGljaCB5ZSBtYXkgZWF0LCBkaWU7IGhlIHRoYXQgdG91Y2hldGggdGhlIGNhcmNhc2UgdGhlcmVvZiBzaGFsbCBiZSB1bmNsZWFuIHVudGlsIHRoZSBldmVuLgpBbmQgaGUgdGhhdCBlYXRldGggb2YgdGhlIGNhcmNhc2Ugb2YgaXQgc2hhbGwgd2FzaCBoaXMgY2xvdGhlcywgYW5kIGJlIHVuY2xlYW4gdW50aWwgdGhlIGV2ZW46IGhlIGFsc28gdGhhdCBiZWFyZXRoIHRoZSBjYXJjYXNlIG9mIGl0IHNoYWxsIHdhc2ggaGlzIGNsb3RoZXMsIGFuZCBiZSB1bmNsZWFuIHVudGlsIHRoZSBldmVuLgpBbmQgZXZlcnkgY3JlZXBpbmcgdGhpbmcgdGhhdCBjcmVlcGV0aCB1cG9uIHRoZSBlYXJ0aCBzaGFsbCBiZSBhbiBhYm9taW5hdGlvbjsgaXQgc2hhbGwgbm90IGJlIGVhdGVuLgpXaGF0c29ldmVyIGdvZXRoIHVwb24gdGhlIGJlbGx5LCBhbmQgd2hhdHNvZXZlciBnb2V0aCB1cG9uIGFsbCBmb3VyLCBvciB3aGF0c29ldmVyIGhhdGggbW9yZSBmZWV0IGFtb25nIGFsbCBjcmVlcGluZyB0aGluZ3MgdGhhdCBjcmVlcCB1cG9uIHRoZSBlYXJ0aCwgdGhlbSB5ZSBzaGFsbCBub3QgZWF0OyBmb3IgdGhleSBhcmUgYW4gYWJvbWluYXRpb24uClllIHNoYWxsIG5vdCBtYWtlIHlvdXJzZWx2ZXMgYWJvbWluYWJsZSB3aXRoIGFueSBjcmVlcGluZyB0aGluZyB0aGF0IGNyZWVwZXRoLCBuZWl0aGVyIHNoYWxsIHllIG1ha2UgeW91cnNlbHZlcyB1bmNsZWFuIHdpdGggdGhlbSwgdGhhdCB5ZSBzaG91bGQgYmUgZGVmaWxlZCB0aGVyZWJ5LgpGb3IgSSBhbSB0aGUgTE9SRCB5b3VyIEdvZDogeWUgc2hhbGwgdGhlcmVmb3JlIHNhbmN0aWZ5IHlvdXJzZWx2ZXMsIGFuZCB5ZSBzaGFsbCBiZSBob2x5OyBmb3IgSSBhbSBob2x5OiBuZWl0aGVyIHNoYWxsIHllIGRlZmlsZSB5b3Vyc2VsdmVzIHdpdGggYW55IG1hbm5lciBvZiBjcmVlcGluZyB0aGluZyB0aGF0IGNyZWVwZXRoIHVwb24gdGhlIGVhcnRoLgpGb3IgSSBhbSB0aGUgTE9SRCB0aGF0IGJyaW5nZXRoIHlvdSB1cCBvdXQgb2YgdGhlIGxhbmQgb2YgRWd5cHQsIHRvIGJlIHlvdXIgR29kOiB5ZSBzaGFsbCB0aGVyZWZvcmUgYmUgaG9seSwgZm9yIEkgYW0gaG9seS4KVGhpcyBpcyB0aGUgbGF3IG9mIHRoZSBiZWFzdHMsIGFuZCBvZiB0aGUgZm93bCwgYW5kIG9mIGV2ZXJ5IGxpdmluZyBjcmVhdHVyZSB0aGF0IG1vdmV0aCBpbiB0aGUgd2F0ZXJzLCBhbmQgb2YgZXZlcnkgY3JlYXR1cmUgdGhhdCBjcmVlcGV0aCB1cG9uIHRoZSBlYXJ0aDoKVG8gbWFrZSBhIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdW5jbGVhbiBhbmQgdGhlIGNsZWFuLCBhbmQgYmV0d2VlbiB0aGUgYmVhc3QgdGhhdCBtYXkgYmUgZWF0ZW4gYW5kIHRoZSBiZWFzdCB0aGF0IG1heSBub3QgYmUgZWF0ZW4uCkFuZCB0aGUgTE9SRCBzcGFrZSB1bnRvIE1vc2VzLCBzYXlpbmcsClNwZWFrIHVudG8gdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgc2F5aW5nLCBJZiBhIHdvbWFuIGhhdmUgY29uY2VpdmVkIHNlZWQsIGFuZCBib3JuIGEgbWFuIGNoaWxkOiB0aGVuIHNoZSBzaGFsbCBiZSB1bmNsZWFuIHNldmVuIGRheXM7IGFjY29yZGluZyB0byB0aGUgZGF5cyBvZiB0aGUgc2VwYXJhdGlvbiBmb3IgaGVyIGluZmlybWl0eSBzaGFsbCBzaGUgYmUgdW5jbGVhbi4KQW5kIGluIHRoZSBlaWdodGggZGF5IHRoZSBmbGVzaCBvZiBoaXMgZm9yZXNraW4gc2hhbGwgYmUgY2lyY3VtY2lzZWQuCkFuZCBzaGUgc2hhbGwgdGhlbiBjb250aW51ZSBpbiB0aGUgYmxvb2Qgb2YgaGVyIHB1cmlmeWluZyB0aHJlZSBhbmQgdGhpcnR5IGRheXM7IHNoZSBzaGFsbCB0b3VjaCBubyBoYWxsb3dlZCB0aGluZywgbm9yIGNvbWUgaW50byB0aGUgc2FuY3R1YXJ5LCB1bnRpbCB0aGUgZGF5cyBvZiBoZXIgcHVyaWZ5aW5nIGJlIGZ1bGZpbGxlZC4KQnV0IGlmIHNoZSBiZWFyIGEgbWFpZCBjaGlsZCwgdGhlbiBzaGUgc2hhbGwgYmUgdW5jbGVhbiB0d28gd2Vla3MsIGFzIGluIGhlciBzZXBhcmF0aW9uOiBhbmQgc2hlIHNoYWxsIGNvbnRpbnVlIGluIHRoZSBibG9vZCBvZiBoZXIgcHVyaWZ5aW5nIHRocmVlc2NvcmUgYW5kIHNpeCBkYXlzLgpBbmQgd2hlbiB0aGUgZGF5cyBvZiBoZXIgcHVyaWZ5aW5nIGFyZSBmdWxmaWxsZWQsIGZvciBhIHNvbiwgb3IgZm9yIGEgZGF1Z2h0ZXIsIHNoZSBzaGFsbCBicmluZyBhIGxhbWIgb2YgdGhlIGZpcnN0IHllYXIgZm9yIGEgYnVybnQgb2ZmZXJpbmcsIGFuZCBhIHlvdW5nIHBpZ2Vvbiwgb3IgYSB0dXJ0bGVkb3ZlLCBmb3IgYSBzaW4gb2ZmZXJpbmcsIHVudG8gdGhlIGRvb3Igb2YgdGhlIHRhYmVybmFjbGUgb2YgdGhlIGNvbmdyZWdhdGlvbiwgdW50byB0aGUgcHJpZXN0OgpXaG8gc2hhbGwgb2ZmZXIgaXQgYmVmb3JlIHRoZSBMT1JELCBhbmQgbWFrZSBhbiBhdG9uZW1lbnQgZm9yIGhlcjsgYW5kIHNoZSBzaGFsbCBiZSBjbGVhbnNlZCBmcm9tIHRoZSBpc3N1ZSBvZiBoZXIgYmxvb2QuIFRoaXMgaXMgdGhlIGxhdyBmb3IgaGVyIHRoYXQgaGF0aCBib3JuIGEgbWFsZSBvciBhIGZlbWFsZS4KQW5kIGlmIHNoZSBiZSBub3QgYWJsZSB0byBicmluZyBhIGxhbWIsIHRoZW4gc2hlIHNoYWxsIGJyaW5nIHR3byB0dXJ0bGVzLCBvciB0d28geW91bmcgcGlnZW9uczsgdGhlIG9uZSBmb3IgdGhlIGJ1cm50IG9mZmVyaW5nLCBhbmQgdGhlIG90aGVyIGZvciBhIHNpbiBvZmZlcmluZzogYW5kIHRoZSBwcmllc3Qgc2hhbGwgbWFrZSBhbiBhdG9uZW1lbnQgZm9yIGhlciwgYW5kIHNoZSBzaGFsbCBiZSBjbGVhbi4KQW5kIHRoZSBMT1JEIHNwYWtlIHVudG8gTW9zZXMgYW5kIEFhcm9uLCBzYXlpbmcsCldoZW4gYSBtYW4gc2hhbGwgaGF2ZSBpbiB0aGUgc2tpbiBvZiBoaXMgZmxlc2ggYSByaXNpbmcsIGEgc2NhYiwgb3IgYnJpZ2h0IHNwb3QsIGFuZCBpdCBiZSBpbiB0aGUgc2tpbiBvZiBoaXMgZmxlc2ggbGlrZSB0aGUgcGxhZ3VlIG9mIGxlcHJvc3k7IHRoZW4gaGUgc2hhbGwgYmUgYnJvdWdodCB1bnRvIEFhcm9uIHRoZSBwcmllc3QsIG9yIHVudG8gb25lIG9mIGhpcyBzb25zIHRoZSBwcmllc3RzOgpBbmQgdGhlIHByaWVzdCBzaGFsbCBsb29rIG9uIHRoZSBwbGFndWUgaW4gdGhlIHNraW4gb2YgdGhlIGZsZXNoOiBhbmQgd2hlbiB0aGUgaGFpciBpbiB0aGUgcGxhZ3VlIGlzIHR1cm5lZCB3aGl0ZSwgYW5kIHRoZSBwbGFndWUgaW4gc2lnaHQgYmUgZGVlcGVyIHRoYW4gdGhlIHNraW4gb2YgaGlzIGZsZXNoLCBpdCBpcyBhIHBsYWd1ZSBvZiBsZXByb3N5OiBhbmQgdGhlIHByaWVzdCBzaGFsbCBsb29rIG9uIGhpbSwgYW5kIHByb25vdW5jZSBoaW0gdW5jbGVhbi4KSWYgdGhlIGJyaWdodCBzcG90IGJlIHdoaXRlIGluIHRoZSBza2luIG9mIGhpcyBmbGVzaCwgYW5kIGluIHNpZ2h0IGJlIG5vdCBkZWVwZXIgdGhhbiB0aGUgc2tpbiwgYW5kIHRoZSBoYWlyIHRoZXJlb2YgYmUgbm90IHR1cm5lZCB3aGl0ZTsgdGhlbiB0aGUgcHJpZXN0IHNoYWxsIHNodXQgdXAgaGltIHRoYXQgaGF0aCB0aGUgcGxhZ3VlIHNldmVuIGRheXM6CkFuZCB0aGUgcHJpZXN0IHNoYWxsIGxvb2sgb24gaGltIHRoZSBzZXZlbnRoIGRheTogYW5kLCBiZWhvbGQsIGlmIHRoZSBwbGFndWUgaW4gaGlzIHNpZ2h0IGJlIGF0IGEgc3RheSwgYW5kIHRoZSBwbGFndWUgc3ByZWFkIG5vdCBpbiB0aGUgc2tpbjsgdGhlbiB0aGUgcHJpZXN0IHNoYWxsIHNodXQgaGltIHVwIHNldmVuIGRheXMgbW9yZToKQW5kIHRoZSBwcmllc3Qgc2hhbGwgbG9vayBvbiBoaW0gYWdhaW4gdGhlIHNldmVudGggZGF5OiBhbmQsIGJlaG9sZCwgaWYgdGhlIHBsYWd1ZSBiZSBzb21ld2hhdCBkYXJrLCBhbmQgdGhlIHBsYWd1ZSBzcHJlYWQgbm90IGluIHRoZSBza2luLCB0aGUgcHJpZXN0IHNoYWxsIHByb25vdW5jZSBoaW0gY2xlYW46IGl0IGlzIGJ1dCBhIHNjYWI6IGFuZCBoZSBzaGFsbCB3YXNoIGhpcyBjbG90aGVzLCBhbmQgYmUgY2xlYW4uCkJ1dCBpZiB0aGUgc2NhYiBzcHJlYWQgbXVjaCBhYnJvYWQgaW4gdGhlIHNraW4sIGFmdGVyIHRoYXQgaGUgaGF0aCBiZWVuIHNlZW4gb2YgdGhlIHByaWVzdCBmb3IgaGlzIGNsZWFuc2luZywgaGUgc2hhbGwgYmUgc2VlbiBvZiB0aGUgcHJpZXN0IGFnYWluLgpBbmQgaWYgdGhlIHByaWVzdCBzZWUgdGhhdCwgYmVob2xkLCB0aGUgc2NhYiBzcHJlYWRldGggaW4gdGhlIHNraW4sIHRoZW4gdGhlIHByaWVzdCBzaGFsbCBwcm9ub3VuY2UgaGltIHVuY2xlYW46IGl0IGlzIGEgbGVwcm9zeS4KV2hlbiB0aGUgcGxhZ3VlIG9mIGxlcHJvc3kgaXMgaW4gYSBtYW4sIHRoZW4gaGUgc2hhbGwgYmUgYnJvdWdodCB1bnRvIHRoZSBwcmllc3Q7CkFuZCB0aGUgcHJpZXN0IHNoYWxsIHNlZSBoaW06IGFuZCwgYmVob2xkLCBpZiB0aGUgcmlzaW5nIGJlIHdoaXRlIGluIHRoZSBza2luLCBhbmQgaXQgaGF2ZSB0dXJuZWQgdGhlIGhhaXIgd2hpdGUsIGFuZCB0aGVyZSBiZSBxdWljayByYXcgZmxlc2ggaW4gdGhlIHJpc2luZzsKSXQgaXMgYW4gb2xkIGxlcHJvc3kgaW4gdGhlIHNraW4gb2YgaGlzIGZsZXNoLCBhbmQgdGhlIHByaWVzdCBzaGFsbCBwcm9ub3VuY2UgaGltIHVuY2xlYW4sIGFuZCBzaGFsbCBub3Qgc2h1dCBoaW0gdXA6IGZvciBoZSBpcyB1bmNsZWFuLgpBbmQgaWYgYSBsZXByb3N5IGJyZWFrIG91dCBhYnJvYWQgaW4gdGhlIHNraW4sIGFuZCB0aGUgbGVwcm9zeSBjb3ZlciBhbGwgdGhlIHNraW4gb2YgaGltIHRoYXQgaGF0aCB0aGUgcGxhZ3VlIGZyb20gaGlzIGhlYWQgZXZlbiB0byBoaXMgZm9vdCwgd2hlcmVzb2V2ZXIgdGhlIHByaWVzdCBsb29rZXRoOwpUaGVuIHRoZSBwcmllc3Qgc2hhbGwgY29uc2lkZXI6IGFuZCwgYmVob2xkLCBpZiB0aGUgbGVwcm9zeSBoYXZlIGNvdmVyZWQgYWxsIGhpcyBmbGVzaCwgaGUgc2hhbGwgcHJvbm91bmNlIGhpbSBjbGVhbiB0aGF0IGhhdGggdGhlIHBsYWd1ZTogaXQgaXMgYWxsIHR1cm5lZCB3aGl0ZTogaGUgaXMgY2xlYW4uCkJ1dCB3aGVuIHJhdyBmbGVzaCBhcHBlYXJldGggaW4gaGltLCBoZSBzaGFsbCBiZSB1bmNsZWFuLgpBbmQgdGhlIHByaWVzdCBzaGFsbCBzZWUgdGhlIHJhdyBmbGVzaCwgYW5kIHByb25vdW5jZSBoaW0gdG8gYmUgdW5jbGVhbjogZm9yIHRoZSByYXcgZmxlc2ggaXMgdW5jbGVhbjogaXQgaXMgYSBsZXByb3N5LgpPciBpZiB0aGUgcmF3IGZsZXNoIHR1cm4gYWdhaW4sIGFuZCBiZSBjaGFuZ2VkIHVudG8gd2hpdGUsIGhlIHNoYWxsIGNvbWUgdW50byB0aGUgcHJpZXN0OwpBbmQgdGhlIHByaWVzdCBzaGFsbCBzZWUgaGltOiBhbmQsIGJlaG9sZCwgaWYgdGhlIHBsYWd1ZSBiZSB0dXJuZWQgaW50byB3aGl0ZTsgdGhlbiB0aGUgcHJpZXN0IHNoYWxsIHByb25vdW5jZSBoaW0gY2xlYW4gdGhhdCBoYXRoIHRoZSBwbGFndWU6IGhlIGlzIGNsZWFuLgpUaGUgZmxlc2ggYWxzbywgaW4gd2hpY2gsIGV2ZW4gaW4gdGhlIHNraW4gdGhlcmVvZiwgd2FzIGEgYm9pbCwgYW5kIGlzIGhlYWxlZCwKQW5kIGluIHRoZSBwbGFjZSBvZiB0aGUgYm9pbCB0aGVyZSBiZSBhIHdoaXRlIHJpc2luZywgb3IgYSBicmlnaHQgc3BvdCwgd2hpdGUsIGFuZCBzb21ld2hhdCByZWRkaXNoLCBhbmQgaXQgYmUgc2hld2VkIHRvIHRoZSBwcmllc3Q7CkFuZCBpZiwgd2hlbiB0aGUgcHJpZXN0IHNlZXRoIGl0LCBiZWhvbGQsIGl0IGJlIGluIHNpZ2h0IGxvd2VyIHRoYW4gdGhlIHNraW4sIGFuZCB0aGUgaGFpciB0aGVyZW9mIGJlIHR1cm5lZCB3aGl0ZTsgdGhlIHByaWVzdCBzaGFsbCBwcm9ub3VuY2UgaGltIHVuY2xlYW46IGl0IGlzIGEgcGxhZ3VlIG9mIGxlcHJvc3kgYnJva2VuIG91dCBvZiB0aGUgYm9pbC4KQnV0IGlmIHRoZSBwcmllc3QgbG9vayBvbiBpdCwgYW5kLCBiZWhvbGQsIHRoZXJlIGJlIG5vIHdoaXRlIGhhaXJzIHRoZXJlaW4sIGFuZCBpZiBpdCBiZSBub3QgbG93ZXIgdGhhbiB0aGUgc2tpbiwgYnV0IGJlIHNvbWV3aGF0IGRhcms7IHRoZW4gdGhlIHByaWVzdCBzaGFsbCBzaHV0IGhpbSB1cCBzZXZlbiBkYXlzOgpBbmQgaWYgaXQgc3ByZWFkIG11Y2ggYWJyb2FkIGluIHRoZSBza2luLCB0aGVuIHRoZSBwcmllc3Qgc2hhbGwgcHJvbm91bmNlIGhpbSB1bmNsZWFuOiBpdCBpcyBhIHBsYWd1ZS4KQnV0IGlmIHRoZSBicmlnaHQgc3BvdCBzdGF5IGluIGhpcyBwbGFjZSwgYW5kIHNwcmVhZCBub3QsIGl0IGlzIGEgYnVybmluZyBib2lsOyBhbmQgdGhlIHByaWVzdCBzaGFsbCBwcm9ub3VuY2UgaGltIGNsZWFuLgpPciBpZiB0aGVyZSBiZSBhbnkgZmxlc2gsIGluIHRoZSBza2luIHdoZXJlb2YgdGhlcmUgaXMgYSBob3QgYnVybmluZywgYW5kIHRoZSBxdWljayBmbGVzaCB0aGF0IGJ1cm5ldGggaGF2ZSBhIHdoaXRlIGJyaWdodCBzcG90LCBzb21ld2hhdCByZWRkaXNoLCBvciB3aGl0ZTsKVGhlbiB0aGUgcHJpZXN0IHNoYWxsIGxvb2sgdXBvbiBpdDogYW5kLCBiZWhvbGQsIGlmIHRoZSBoYWlyIGluIHRoZSBicmlnaHQgc3BvdCBiZSB0dXJuZWQgd2hpdGUsIGFuZCBpdCBiZSBpbiBzaWdodCBkZWVwZXIgdGhhbiB0aGUgc2tpbjsgaXQgaXMgYSBsZXByb3N5IGJyb2tlbiBvdXQgb2YgdGhlIGJ1cm5pbmc6IHdoZXJlZm9yZSB0aGUgcHJpZXN0IHNoYWxsIHByb25vdW5jZSBoaW0gdW5jbGVhbjogaXQgaXMgdGhlIHBsYWd1ZSBvZiBsZXByb3N5LgpCdXQgaWYgdGhlIHByaWVzdCBsb29rIG9uIGl0LCBhbmQsIGJlaG9sZCwgdGhlcmUgYmUgbm8gd2hpdGUgaGFpciBpbiB0aGUgYnJpZ2h0IHNwb3QsIGFuZCBpdCBiZSBubyBsb3dlciB0aGFuIHRoZSBvdGhlciBza2luLCBidXQgYmUgc29tZXdoYXQgZGFyazsgdGhlbiB0aGUgcHJpZXN0IHNoYWxsIHNodXQgaGltIHVwIHNldmVuIGRheXM6CkFuZCB0aGUgcHJpZXN0IHNoYWxsIGxvb2sgdXBvbiBoaW0gdGhlIHNldmVudGggZGF5OiBhbmQgaWYgaXQgYmUgc3ByZWFkIG11Y2ggYWJyb2FkIGluIHRoZSBza2luLCB0aGVuIHRoZSBwcmllc3Qgc2hhbGwgcHJvbm91bmNlIGhpbSB1bmNsZWFuOiBpdCBpcyB0aGUgcGxhZ3VlIG9mIGxlcHJvc3kuCkFuZCBpZiB0aGUgYnJpZ2h0IHNwb3Qgc3RheSBpbiBoaXMgcGxhY2UsIGFuZCBzcHJlYWQgbm90IGluIHRoZSBza2luLCBidXQgaXQgYmUgc29tZXdoYXQgZGFyazsgaXQgaXMgYSByaXNpbmcgb2YgdGhlIGJ1cm5pbmcsIGFuZCB0aGUgcHJpZXN0IHNoYWxsIHByb25vdW5jZSBoaW0gY2xlYW46IGZvciBpdCBpcyBhbiBpbmZsYW1tYXRpb24gb2YgdGhlIGJ1cm5pbmcuCklmIGEgbWFuIG9yIHdvbWFuIGhhdmUgYSBwbGFndWUgdXBvbiB0aGUgaGVhZCBvciB0aGUgYmVhcmQ7ClRoZW4gdGhlIHByaWVzdCBzaGFsbCBzZWUgdGhlIHBsYWd1ZTogYW5kLCBiZWhvbGQsIGlmIGl0IGJlIGluIHNpZ2h0IGRlZXBlciB0aGFuIHRoZSBza2luOyBhbmQgdGhlcmUgYmUgaW4gaXQgYSB5ZWxsb3cgdGhpbiBoYWlyOyB0aGVuIHRoZSBwcmllc3Qgc2hhbGwgcHJvbm91bmNlIGhpbSB1bmNsZWFuOiBpdCBpcyBhIGRyeSBzY2FsbCwgZXZlbiBhIGxlcHJvc3kgdXBvbiB0aGUgaGVhZCBvciBiZWFyZC4KQW5kIGlmIHRoZSBwcmllc3QgbG9vayBvbiB0aGUgcGxhZ3VlIG9mIHRoZSBzY2FsbCwgYW5kLCBiZWhvbGQsIGl0IGJlIG5vdCBpbiBzaWdodCBkZWVwZXIgdGhhbiB0aGUgc2tpbiwgYW5kIHRoYXQgdGhlcmUgaXMgbm8gYmxhY2sgaGFpciBpbiBpdDsgdGhlbiB0aGUgcHJpZXN0IHNoYWxsIHNodXQgdXAgaGltIHRoYXQgaGF0aCB0aGUgcGxhZ3VlIG9mIHRoZSBzY2FsbCBzZXZlbiBkYXlzOgpBbmQgaW4gdGhlIHNldmVudGggZGF5IHRoZSBwcmllc3Qgc2hhbGwgbG9vayBvbiB0aGUgcGxhZ3VlOiBhbmQsIGJlaG9sZCwgaWYgdGhlIHNjYWxsIHNwcmVhZCBub3QsIGFuZCB0aGVyZSBiZSBpbiBpdCBubyB5ZWxsb3cgaGFpciwgYW5kIHRoZSBzY2FsbCBiZSBub3QgaW4gc2lnaHQgZGVlcGVyIHRoYW4gdGhlIHNraW47CkhlIHNoYWxsIGJlIHNoYXZlbiwgYnV0IHRoZSBzY2FsbCBzaGFsbCBoZSBub3Qgc2hhdmU7IGFuZCB0aGUgcHJpZXN0IHNoYWxsIHNodXQgdXAgaGltIHRoYXQgaGF0aCB0aGUgc2NhbGwgc2V2ZW4gZGF5cyBtb3JlOgpBbmQgaW4gdGhlIHNldmVudGggZGF5IHRoZSBwcmllc3Qgc2hhbGwgbG9vayBvbiB0aGUgc2NhbGw6IGFuZCwgYmVob2xkLCBpZiB0aGUgc2NhbGwgYmUgbm90IHNwcmVhZCBpbiB0aGUgc2tpbiwgbm9yIGJlIGluIHNpZ2h0IGRlZXBlciB0aGFuIHRoZSBza2luOyB0aGVuIHRoZSBwcmllc3Qgc2hhbGwgcHJvbm91bmNlIGhpbSBjbGVhbjogYW5kIGhlIHNoYWxsIHdhc2ggaGlzIGNsb3RoZXMsIGFuZCBiZSBjbGVhbi4KQnV0IGlmIHRoZSBzY2FsbCBzcHJlYWQgbXVjaCBpbiB0aGUgc2tpbiBhZnRlciBoaXMgY2xlYW5zaW5nOwpUaGVuIHRoZSBwcmllc3Qgc2hhbGwgbG9vayBvbiBoaW06IGFuZCwgYmVob2xkLCBpZiB0aGUgc2NhbGwgYmUgc3ByZWFkIGluIHRoZSBza2luLCB0aGUgcHJpZXN0IHNoYWxsIG5vdCBzZWVrIGZvciB5ZWxsb3cgaGFpcjsgaGUgaXMgdW5jbGVhbi4KQnV0IGlmIHRoZSBzY2FsbCBiZSBpbiBoaXMgc2lnaHQgYXQgYSBzdGF5LCBhbmQgdGhhdCB0aGVyZSBpcyBibGFjayBoYWlyIGdyb3duIHVwIHRoZXJlaW47IHRoZSBzY2FsbCBpcyBoZWFsZWQsIGhlIGlzIGNsZWFuOiBhbmQgdGhlIHByaWVzdCBzaGFsbCBwcm9ub3VuY2UgaGltIGNsZWFuLgpJZiBhIG1hbiBhbHNvIG9yIGEgd29tYW4gaGF2ZSBpbiB0aGUgc2tpbiBvZiB0aGVpciBmbGVzaCBicmlnaHQgc3BvdHMsIGV2ZW4gd2hpdGUgYnJpZ2h0IHNwb3RzOwpUaGVuIHRoZSBwcmllc3Qgc2hhbGwgbG9vazogYW5kLCBiZWhvbGQsIGlmIHRoZSBicmlnaHQgc3BvdHMgaW4gdGhlIHNraW4gb2YgdGhlaXIgZmxlc2ggYmUgZGFya2lzaCB3aGl0ZTsgaXQgaXMgYSBmcmVja2xlZCBzcG90IHRoYXQgZ3Jvd2V0aCBpbiB0aGUgc2tpbjsgaGUgaXMgY2xlYW4uCkFuZCB0aGUgbWFuIHdob3NlIGhhaXIgaXMgZmFsbGVuIG9mZiBoaXMgaGVhZCwgaGUgaXMgYmFsZDsgeWV0IGlzIGhlIGNsZWFuLgpBbmQgaGUgdGhhdCBoYXRoIGhpcyBoYWlyIGZhbGxlbiBvZmYgZnJvbSB0aGUgcGFydCBvZiBoaXMgaGVhZCB0b3dhcmQgaGlzIGZhY2UsIGhlIGlzIGZvcmVoZWFkIGJhbGQ6IHlldCBpcyBoZSBjbGVhbi4KQW5kIGlmIHRoZXJlIGJlIGluIHRoZSBiYWxkIGhlYWQsIG9yIGJhbGQgZm9yZWhlYWQsIGEgd2hpdGUgcmVkZGlzaCBzb3JlOyBpdCBpcyBhIGxlcHJvc3kgc3BydW5nIHVwIGluIGhpcyBiYWxkIGhlYWQsIG9yIGhpcyBiYWxkIGZvcmVoZWFkLgpUaGVuIHRoZSBwcmllc3Qgc2hhbGwgbG9vayB1cG9uIGl0OiBhbmQsIGJlaG9sZCwgaWYgdGhlIHJpc2luZyBvZiB0aGUgc29yZSBiZSB3aGl0ZSByZWRkaXNoIGluIGhpcyBiYWxkIGhlYWQsIG9yIGluIGhpcyBiYWxkIGZvcmVoZWFkLCBhcyB0aGUgbGVwcm9zeSBhcHBlYXJldGggaW4gdGhlIHNraW4gb2YgdGhlIGZsZXNoOwpIZSBpcyBhIGxlcHJvdXMgbWFuLCBoZSBpcyB1bmNsZWFuOiB0aGUgcHJpZXN0IHNoYWxsIHByb25vdW5jZSBoaW0gdXR0ZXJseSB1bmNsZWFuOyBoaXMgcGxhZ3VlIGlzIGluIGhpcyBoZWFkLgpBbmQgdGhlIGxlcGVyIGluIHdob20gdGhlIHBsYWd1ZSBpcywgaGlzIGNsb3RoZXMgc2hhbGwgYmUgcmVudCwgYW5kIGhpcyBoZWFkIGJhcmUsIGFuZCBoZSBzaGFsbCBwdXQgYSBjb3ZlcmluZyB1cG9uIGhpcyB1cHBlciBsaXAsIGFuZCBzaGFsbCBjcnksIFVuY2xlYW4sIHVuY2xlYW4uCkFsbCB0aGUgZGF5cyB3aGVyZWluIHRoZSBwbGFndWUgc2hhbGwgYmUgaW4gaGltIGhlIHNoYWxsIGJlIGRlZmlsZWQ7IGhlIGlzIHVuY2xlYW46IGhlIHNoYWxsIGR3ZWxsIGFsb25lOyB3aXRob3V0IHRoZSBjYW1wIHNoYWxsIGhpcyBoYWJpdGF0aW9uIGJlLgpUaGUgZ2FybWVudCBhbHNvIHRoYXQgdGhlIHBsYWd1ZSBvZiBsZXByb3N5IGlzIGluLCB3aGV0aGVyIGl0IGJlIGEgd29vbGxlbiBnYXJtZW50LCBvciBhIGxpbmVuIGdhcm1lbnQ7CldoZXRoZXIgaXQgYmUgaW4gdGhlIHdhcnAsIG9yIHdvb2Y7IG9mIGxpbmVuLCBvciBvZiB3b29sbGVuOyB3aGV0aGVyIGluIGEgc2tpbiwgb3IgaW4gYW55IHRoaW5nIG1hZGUgb2Ygc2tpbjsKQW5kIGlmIHRoZSBwbGFndWUgYmUgZ3JlZW5pc2ggb3IgcmVkZGlzaCBpbiB0aGUgZ2FybWVudCwgb3IgaW4gdGhlIHNraW4sIGVpdGhlciBpbiB0aGUgd2FycCwgb3IgaW4gdGhlIHdvb2YsIG9yIGluIGFueSB0aGluZyBvZiBza2luOyBpdCBpcyBhIHBsYWd1ZSBvZiBsZXByb3N5LCBhbmQgc2hhbGwgYmUgc2hld2VkIHVudG8gdGhlIHByaWVzdDoKQW5kIHRoZSBwcmllc3Qgc2hhbGwgbG9vayB1cG9uIHRoZSBwbGFndWUsIGFuZCBzaHV0IHVwIGl0IHRoYXQgaGF0aCB0aGUgcGxhZ3VlIHNldmVuIGRheXM6CkFuZCBoZSBzaGFsbCBsb29rIG9uIHRoZSBwbGFndWUgb24gdGhlIHNldmVudGggZGF5OiBpZiB0aGUgcGxhZ3VlIGJlIHNwcmVhZCBpbiB0aGUgZ2FybWVudCwgZWl0aGVyIGluIHRoZSB3YXJwLCBvciBpbiB0aGUgd29vZiwgb3IgaW4gYSBza2luLCBvciBpbiBhbnkgd29yayB0aGF0IGlzIG1hZGUgb2Ygc2tpbjsgdGhlIHBsYWd1ZSBpcyBhIGZyZXR0aW5nIGxlcHJvc3k7IGl0IGlzIHVuY2xlYW4uCkhlIHNoYWxsIHRoZXJlZm9yZSBidXJuIHRoYXQgZ2FybWVudCwgd2hldGhlciB3YXJwIG9yIHdvb2YsIGluIHdvb2xsZW4gb3IgaW4gbGluZW4sIG9yIGFueSB0aGluZyBvZiBza2luLCB3aGVyZWluIHRoZSBwbGFndWUgaXM6IGZvciBpdCBpcyBhIGZyZXR0aW5nIGxlcHJvc3k7IGl0IHNoYWxsIGJlIGJ1cm50IGluIHRoZSBmaXJlLgpBbmQgaWYgdGhlIHByaWVzdCBzaGFsbCBsb29rLCBhbmQsIGJlaG9sZCwgdGhlIHBsYWd1ZSBiZSBub3Qgc3ByZWFkIGluIHRoZSBnYXJtZW50LCBlaXRoZXIgaW4gdGhlIHdhcnAsIG9yIGluIHRoZSB3b29mLCBvciBpbiBhbnkgdGhpbmcgb2Ygc2tpbjsKVGhlbiB0aGUgcHJpZXN0IHNoYWxsIGNvbW1hbmQgdGhhdCB0aGV5IHdhc2ggdGhlIHRoaW5nIHdoZXJlaW4gdGhlIHBsYWd1ZSBpcywgYW5kIGhlIHNoYWxsIHNodXQgaXQgdXAgc2V2ZW4gZGF5cyBtb3JlOgpBbmQgdGhlIHByaWVzdCBzaGFsbCBsb29rIG9uIHRoZSBwbGFndWUsIGFmdGVyIHRoYXQgaXQgaXMgd2FzaGVkOiBhbmQsIGJlaG9sZCwgaWYgdGhlIHBsYWd1ZSBoYXZlIG5vdCBjaGFuZ2VkIGhpcyBjb2xvdXIsIGFuZCB0aGUgcGxhZ3VlIGJlIG5vdCBzcHJlYWQ7IGl0IGlzIHVuY2xlYW47IHRob3Ugc2hhbHQgYnVybiBpdCBpbiB0aGUgZmlyZTsgaXQgaXMgZnJldCBpbndhcmQsIHdoZXRoZXIgaXQgYmUgYmFyZSB3aXRoaW4gb3Igd2l0aG91dC4KQW5kIGlmIHRoZSBwcmllc3QgbG9vaywgYW5kLCBiZWhvbGQsIHRoZSBwbGFndWUgYmUgc29tZXdoYXQgZGFyayBhZnRlciB0aGUgd2FzaGluZyBvZiBpdDsgdGhlbiBoZSBzaGFsbCByZW5kIGl0IG91dCBvZiB0aGUgZ2FybWVudCwgb3Igb3V0IG9mIHRoZSBza2luLCBvciBvdXQgb2YgdGhlIHdhcnAsIG9yIG91dCBvZiB0aGUgd29vZjoKQW5kIGlmIGl0IGFwcGVhciBzdGlsbCBpbiB0aGUgZ2FybWVudCwgZWl0aGVyIGluIHRoZSB3YXJwLCBvciBpbiB0aGUgd29vZiwgb3IgaW4gYW55IHRoaW5nIG9mIHNraW47IGl0IGlzIGEgc3ByZWFkaW5nIHBsYWd1ZTogdGhvdSBzaGFsdCBidXJuIHRoYXQgd2hlcmVpbiB0aGUgcGxhZ3VlIGlzIHdpdGggZmlyZS4KQW5kIHRoZSBnYXJtZW50LCBlaXRoZXIgd2FycCwgb3Igd29vZiwgb3Igd2hhdHNvZXZlciB0aGluZyBvZiBza2luIGl0IGJlLCB3aGljaCB0aG91IHNoYWx0IHdhc2gsIGlmIHRoZSBwbGFndWUgYmUgZGVwYXJ0ZWQgZnJvbSB0aGVtLCB0aGVuIGl0IHNoYWxsIGJlIHdhc2hlZCB0aGUgc2Vjb25kIHRpbWUsIGFuZCBzaGFsbCBiZSBjbGVhbi4KVGhpcyBpcyB0aGUgbGF3IG9mIHRoZSBwbGFndWUgb2YgbGVwcm9zeSBpbiBhIGdhcm1lbnQgb2Ygd29vbGxlbiBvciBsaW5lbiwgZWl0aGVyIGluIHRoZSB3YXJwLCBvciB3b29mLCBvciBhbnkgdGhpbmcgb2Ygc2tpbnMsIHRvIHByb25vdW5jZSBpdCBjbGVhbiwgb3IgdG8gcHJvbm91bmNlIGl0IHVuY2xlYW4uCkFuZCB0aGUgTE9SRCBzcGFrZSB1bnRvIE1vc2VzLCBzYXlpbmcsClRoaXMgc2hhbGwgYmUgdGhlIGxhdyBvZiB0aGUgbGVwZXIgaW4gdGhlIGRheSBvZiBoaXMgY2xlYW5zaW5nOiBIZSBzaGFsbCBiZSBicm91Z2h0IHVudG8gdGhlIHByaWVzdDoKQW5kIHRoZSBwcmllc3Qgc2hhbGwgZ28gZm9ydGggb3V0IG9mIHRoZSBjYW1wOyBhbmQgdGhlIHByaWVzdCBzaGFsbCBsb29rLCBhbmQsIGJlaG9sZCwgaWYgdGhlIHBsYWd1ZSBvZiBsZXByb3N5IGJlIGhlYWxlZCBpbiB0aGUgbGVwZXI7ClRoZW4gc2hhbGwgdGhlIHByaWVzdCBjb21tYW5kIHRvIHRha2UgZm9yIGhpbSB0aGF0IGlzIHRvIGJlIGNsZWFuc2VkIHR3byBiaXJkcyBhbGl2ZSBhbmQgY2xlYW4sIGFuZCBjZWRhciB3b29kLCBhbmQgc2NhcmxldCwgYW5kIGh5c3NvcDoKQW5kIHRoZSBwcmllc3Qgc2hhbGwgY29tbWFuZCB0aGF0IG9uZSBvZiB0aGUgYmlyZHMgYmUga2lsbGVkIGluIGFuIGVhcnRoZW4gdmVzc2VsIG92ZXIgcnVubmluZyB3YXRlcjoKQXMgZm9yIHRoZSBsaXZpbmcgYmlyZCwgaGUgc2hhbGwgdGFrZSBpdCwgYW5kIHRoZSBjZWRhciB3b29kLCBhbmQgdGhlIHNjYXJsZXQsIGFuZCB0aGUgaHlzc29wLCBhbmQgc2hhbGwgZGlwIHRoZW0gYW5kIHRoZSBsaXZpbmcgYmlyZCBpbiB0aGUgYmxvb2Qgb2YgdGhlIGJpcmQgdGhhdCB3YXMga2lsbGVkIG92ZXIgdGhlIHJ1bm5pbmcgd2F0ZXI6CkFuZCBoZSBzaGFsbCBzcHJpbmtsZSB1cG9uIGhpbSB0aGF0IGlzIHRvIGJlIGNsZWFuc2VkIGZyb20gdGhlIGxlcHJvc3kgc2V2ZW4gdGltZXMsIGFuZCBzaGFsbCBwcm9ub3VuY2UgaGltIGNsZWFuLCBhbmQgc2hhbGwgbGV0IHRoZSBsaXZpbmcgYmlyZCBsb29zZSBpbnRvIHRoZSBvcGVuIGZpZWxkLgpBbmQgaGUgdGhhdCBpcyB0byBiZSBjbGVhbnNlZCBzaGFsbCB3YXNoIGhpcyBjbG90aGVzLCBhbmQgc2hhdmUgb2ZmIGFsbCBoaXMgaGFpciwgYW5kIHdhc2ggaGltc2VsZiBpbiB3YXRlciwgdGhhdCBoZSBtYXkgYmUgY2xlYW46IGFuZCBhZnRlciB0aGF0IGhlIHNoYWxsIGNvbWUgaW50byB0aGUgY2FtcCwgYW5kIHNoYWxsIHRhcnJ5IGFicm9hZCBvdXQgb2YgaGlzIHRlbnQgc2V2ZW4gZGF5cy4KQnV0IGl0IHNoYWxsIGJlIG9uIHRoZSBzZXZlbnRoIGRheSwgdGhhdCBoZSBzaGFsbCBzaGF2ZSBhbGwgaGlzIGhhaXIgb2ZmIGhpcyBoZWFkIGFuZCBoaXMgYmVhcmQgYW5kIGhpcyBleWVicm93cywgZXZlbiBhbGwgaGlzIGhhaXIgaGUgc2hhbGwgc2hhdmUgb2ZmOiBhbmQgaGUgc2hhbGwgd2FzaCBoaXMgY2xvdGhlcywgYWxzbyBoZSBzaGFsbCB3YXNoIGhpcyBmbGVzaCBpbiB3YXRlciwgYW5kIGhlIHNoYWxsIGJlIGNsZWFuLgpBbmQgb24gdGhlIGVpZ2h0aCBkYXkgaGUgc2hhbGwgdGFrZSB0d28gaGUgbGFtYnMgd2l0aG91dCBibGVtaXNoLCBhbmQgb25lIGV3ZSBsYW1iIG9mIHRoZSBmaXJzdCB5ZWFyIHdpdGhvdXQgYmxlbWlzaCwgYW5kIHRocmVlIHRlbnRoIGRlYWxzIG9mIGZpbmUgZmxvdXIgZm9yIGEgbWVhdCBvZmZlcmluZywgbWluZ2xlZCB3aXRoIG9pbCwgYW5kIG9uZSBsb2cgb2Ygb2lsLgpBbmQgdGhlIHByaWVzdCB0aGF0IG1ha2V0aCBoaW0gY2xlYW4gc2hhbGwgcHJlc2VudCB0aGUgbWFuIHRoYXQgaXMgdG8gYmUgbWFkZSBjbGVhbiwgYW5kIHRob3NlIHRoaW5ncywgYmVmb3JlIHRoZSBMT1JELCBhdCB0aGUgZG9vciBvZiB0aGUgdGFiZXJuYWNsZSBvZiB0aGUgY29uZ3JlZ2F0aW9uOgpBbmQgdGhlIHByaWVzdCBzaGFsbCB0YWtlIG9uZSBoZSBsYW1iLCBhbmQgb2ZmZXIgaGltIGZvciBhIHRyZXNwYXNzIG9mZmVyaW5nLCBhbmQgdGhlIGxvZyBvZiBvaWwsIGFuZCB3YXZlIHRoZW0gZm9yIGEgd2F2ZSBvZmZlcmluZyBiZWZvcmUgdGhlIExPUkQ6CkFuZCBoZSBzaGFsbCBzbGF5IHRoZSBsYW1iIGluIHRoZSBwbGFjZSB3aGVyZSBoZSBzaGFsbCBraWxsIHRoZSBzaW4gb2ZmZXJpbmcgYW5kIHRoZSBidXJudCBvZmZlcmluZywgaW4gdGhlIGhvbHkgcGxhY2U6IGZvciBhcyB0aGUgc2luIG9mZmVyaW5nIGlzIHRoZSBwcmllc3Qncywgc28gaXMgdGhlIHRyZXNwYXNzIG9mZmVyaW5nOiBpdCBpcyBtb3N0IGhvbHk6CkFuZCB0aGUgcHJpZXN0IHNoYWxsIHRha2Ugc29tZSBvZiB0aGUgYmxvb2Qgb2YgdGhlIHRyZXNwYXNzIG9mZmVyaW5nLCBhbmQgdGhlIHByaWVzdCBzaGFsbCBwdXQgaXQgdXBvbiB0aGUgdGlwIG9mIHRoZSByaWdodCBlYXIgb2YgaGltIHRoYXQgaXMgdG8gYmUgY2xlYW5zZWQsIGFuZCB1cG9uIHRoZSB0aHVtYiBvZiBoaXMgcmlnaHQgaGFuZCwgYW5kIHVwb24gdGhlIGdyZWF0IHRvZSBvZiBoaXMgcmlnaHQgZm9vdDoKQW5kIHRoZSBwcmllc3Qgc2hhbGwgdGFrZSBzb21lIG9mIHRoZSBsb2cgb2Ygb2lsLCBhbmQgcG91ciBpdCBpbnRvIHRoZSBwYWxtIG9mIGhpcyBvd24gbGVmdCBoYW5kOgpBbmQgdGhlIHByaWVzdCBzaGFsbCBkaXAgaGlzIHJpZ2h0IGZpbmdlciBpbiB0aGUgb2lsIHRoYXQgaXMgaW4gaGlzIGxlZnQgaGFuZCwgYW5kIHNoYWxsIHNwcmlua2xlIG9mIHRoZSBvaWwgd2l0aCBoaXMgZmluZ2VyIHNldmVuIHRpbWVzIGJlZm9yZSB0aGUgTE9SRDoKQW5kIG9mIHRoZSByZXN0IG9mIHRoZSBvaWwgdGhhdCBpcyBpbiBoaXMgaGFuZCBzaGFsbCB0aGUgcHJpZXN0IHB1dCB1cG9uIHRoZSB0aXAgb2YgdGhlIHJpZ2h0IGVhciBvZiBoaW0gdGhhdCBpcyB0byBiZSBjbGVhbnNlZCwgYW5kIHVwb24gdGhlIHRodW1iIG9mIGhpcyByaWdodCBoYW5kLCBhbmQgdXBvbiB0aGUgZ3JlYXQgdG9lIG9mIGhpcyByaWdodCBmb290LCB1cG9uIHRoZSBibG9vZCBvZiB0aGUgdHJlc3Bhc3Mgb2ZmZXJpbmc6CkFuZCB0aGUgcmVtbmFudCBvZiB0aGUgb2lsIHRoYXQgaXMgaW4gdGhlIHByaWVzdCdzIGhhbmQgaGUgc2hhbGwgcG91ciB1cG9uIHRoZSBoZWFkIG9mIGhpbSB0aGF0IGlzIHRvIGJlIGNsZWFuc2VkOiBhbmQgdGhlIHByaWVzdCBzaGFsbCBtYWtlIGFuIGF0b25lbWVudCBmb3IgaGltIGJlZm9yZSB0aGUgTE9SRC4KQW5kIHRoZSBwcmllc3Qgc2hhbGwgb2ZmZXIgdGhlIHNpbiBvZmZlcmluZywgYW5kIG1ha2UgYW4gYXRvbmVtZW50IGZvciBoaW0gdGhhdCBpcyB0byBiZSBjbGVhbnNlZCBmcm9tIGhpcyB1bmNsZWFubmVzczsgYW5kIGFmdGVyd2FyZCBoZSBzaGFsbCBraWxsIHRoZSBidXJudCBvZmZlcmluZzoKQW5kIHRoZSBwcmllc3Qgc2hhbGwgb2ZmZXIgdGhlIGJ1cm50IG9mZmVyaW5nIGFuZCB0aGUgbWVhdCBvZmZlcmluZyB1cG9uIHRoZSBhbHRhcjogYW5kIHRoZSBwcmllc3Qgc2hhbGwgbWFrZSBhbiBhdG9uZW1lbnQgZm9yIGhpbSwgYW5kIGhlIHNoYWxsIGJlIGNsZWFuLgpBbmQgaWYgaGUgYmUgcG9vciwgYW5kIGNhbm5vdCBnZXQgc28gbXVjaDsgdGhlbiBoZSBzaGFsbCB0YWtlIG9uZSBsYW1iIGZvciBhIHRyZXNwYXNzIG9mZmVyaW5nIHRvIGJlIHdhdmVkLCB0byBtYWtlIGFuIGF0b25lbWVudCBmb3IgaGltLCBhbmQgb25lIHRlbnRoIGRlYWwgb2YgZmluZSBmbG91ciBtaW5nbGVkIHdpdGggb2lsIGZvciBhIG1lYXQgb2ZmZXJpbmcsIGFuZCBhIGxvZyBvZiBvaWw7CkFuZCB0d28gdHVydGxlZG92ZXMsIG9yIHR3byB5b3VuZyBwaWdlb25zLCBzdWNoIGFzIGhlIGlzIGFibGUgdG8gZ2V0OyBhbmQgdGhlIG9uZSBzaGFsbCBiZSBhIHNpbiBvZmZlcmluZywgYW5kIHRoZSBvdGhlciBhIGJ1cm50IG9mZmVyaW5nLgpBbmQgaGUgc2hhbGwgYnJpbmcgdGhlbSBvbiB0aGUgZWlnaHRoIGRheSBmb3IgaGlzIGNsZWFuc2luZyB1bnRvIHRoZSBwcmllc3QsIHVudG8gdGhlIGRvb3Igb2YgdGhlIHRhYmVybmFjbGUgb2YgdGhlIGNvbmdyZWdhdGlvbiwgYmVmb3JlIHRoZSBMT1JELgpBbmQgdGhlIHByaWVzdCBzaGFsbCB0YWtlIHRoZSBsYW1iIG9mIHRoZSB0cmVzcGFzcyBvZmZlcmluZywgYW5kIHRoZSBsb2cgb2Ygb2lsLCBhbmQgdGhlIHByaWVzdCBzaGFsbCB3YXZlIHRoZW0gZm9yIGEgd2F2ZSBvZmZlcmluZyBiZWZvcmUgdGhlIExPUkQ6CkFuZCBoZSBzaGFsbCBraWxsIHRoZSBsYW1iIG9mIHRoZSB0cmVzcGFzcyBvZmZlcmluZywgYW5kIHRoZSBwcmllc3Qgc2hhbGwgdGFrZSBzb21lIG9mIHRoZSBibG9vZCBvZiB0aGUgdHJlc3Bhc3Mgb2ZmZXJpbmcsIGFuZCBwdXQgaXQgdXBvbiB0aGUgdGlwIG9mIHRoZSByaWdodCBlYXIgb2YgaGltIHRoYXQgaXMgdG8gYmUgY2xlYW5zZWQsIGFuZCB1cG9uIHRoZSB0aHVtYiBvZiBoaXMgcmlnaHQgaGFuZCwgYW5kIHVwb24gdGhlIGdyZWF0IHRvZSBvZiBoaXMgcmlnaHQgZm9vdDoKQW5kIHRoZSBwcmllc3Qgc2hhbGwgcG91ciBvZiB0aGUgb2lsIGludG8gdGhlIHBhbG0gb2YgaGlzIG93biBsZWZ0IGhhbmQ6CkFuZCB0aGUgcHJpZXN0IHNoYWxsIHNwcmlua2xlIHdpdGggaGlzIHJpZ2h0IGZpbmdlciBzb21lIG9mIHRoZSBvaWwgdGhhdCBpcyBpbiBoaXMgbGVmdCBoYW5kIHNldmVuIHRpbWVzIGJlZm9yZSB0aGUgTE9SRDoKQW5kIHRoZSBwcmllc3Qgc2hhbGwgcHV0IG9mIHRoZSBvaWwgdGhhdCBpcyBpbiBoaXMgaGFuZCB1cG9uIHRoZSB0aXAgb2YgdGhlIHJpZ2h0IGVhciBvZiBoaW0gdGhhdCBpcyB0byBiZSBjbGVhbnNlZCwgYW5kIHVwb24gdGhlIHRodW1iIG9mIGhpcyByaWdodCBoYW5kLCBhbmQgdXBvbiB0aGUgZ3JlYXQgdG9lIG9mIGhpcyByaWdodCBmb290LCB1cG9uIHRoZSBwbGFjZSBvZiB0aGUgYmxvb2Qgb2YgdGhlIHRyZXNwYXNzIG9mZmVyaW5nOgpBbmQgdGhlIHJlc3Qgb2YgdGhlIG9pbCB0aGF0IGlzIGluIHRoZSBwcmllc3QncyBoYW5kIGhlIHNoYWxsIHB1dCB1cG9uIHRoZSBoZWFkIG9mIGhpbSB0aGF0IGlzIHRvIGJlIGNsZWFuc2VkLCB0byBtYWtlIGFuIGF0b25lbWVudCBmb3IgaGltIGJlZm9yZSB0aGUgTE9SRC4KQW5kIGhlIHNoYWxsIG9mZmVyIHRoZSBvbmUgb2YgdGhlIHR1cnRsZWRvdmVzLCBvciBvZiB0aGUgeW91bmcgcGlnZW9ucywgc3VjaCBhcyBoZSBjYW4gZ2V0OwpFdmVuIHN1Y2ggYXMgaGUgaXMgYWJsZSB0byBnZXQsIHRoZSBvbmUgZm9yIGEgc2luIG9mZmVyaW5nLCBhbmQgdGhlIG90aGVyIGZvciBhIGJ1cm50IG9mZmVyaW5nLCB3aXRoIHRoZSBtZWF0IG9mZmVyaW5nOiBhbmQgdGhlIHByaWVzdCBzaGFsbCBtYWtlIGFuIGF0b25lbWVudCBmb3IgaGltIHRoYXQgaXMgdG8gYmUgY2xlYW5zZWQgYmVmb3JlIHRoZSBMT1JELgpUaGlzIGlzIHRoZSBsYXcgb2YgaGltIGluIHdob20gaXMgdGhlIHBsYWd1ZSBvZiBsZXByb3N5LCB3aG9zZSBoYW5kIGlzIG5vdCBhYmxlIHRvIGdldCB0aGF0IHdoaWNoIHBlcnRhaW5ldGggdG8gaGlzIGNsZWFuc2luZy4KQW5kIHRoZSBMT1JEIHNwYWtlIHVudG8gTW9zZXMgYW5kIHVudG8gQWFyb24sIHNheWluZywKV2hlbiB5ZSBiZSBjb21lIGludG8gdGhlIGxhbmQgb2YgQ2FuYWFuLCB3aGljaCBJIGdpdmUgdG8geW91IGZvciBhIHBvc3Nlc3Npb24sIGFuZCBJIHB1dCB0aGUgcGxhZ3VlIG9mIGxlcHJvc3kgaW4gYSBob3VzZSBvZiB0aGUgbGFuZCBvZiB5b3VyIHBvc3Nlc3Npb247CkFuZCBoZSB0aGF0IG93bmV0aCB0aGUgaG91c2Ugc2hhbGwgY29tZSBhbmQgdGVsbCB0aGUgcHJpZXN0LCBzYXlpbmcsIEl0IHNlZW1ldGggdG8gbWUgdGhlcmUgaXMgYXMgaXQgd2VyZSBhIHBsYWd1ZSBpbiB0aGUgaG91c2U6ClRoZW4gdGhlIHByaWVzdCBzaGFsbCBjb21tYW5kIHRoYXQgdGhleSBlbXB0eSB0aGUgaG91c2UsIGJlZm9yZSB0aGUgcHJpZXN0IGdvIGludG8gaXQgdG8gc2VlIHRoZSBwbGFndWUsIHRoYXQgYWxsIHRoYXQgaXMgaW4gdGhlIGhvdXNlIGJlIG5vdCBtYWRlIHVuY2xlYW46IGFuZCBhZnRlcndhcmQgdGhlIHByaWVzdCBzaGFsbCBnbyBpbiB0byBzZWUgdGhlIGhvdXNlOgpBbmQgaGUgc2hhbGwgbG9vayBvbiB0aGUgcGxhZ3VlLCBhbmQsIGJlaG9sZCwgaWYgdGhlIHBsYWd1ZSBiZSBpbiB0aGUgd2FsbHMgb2YgdGhlIGhvdXNlIHdpdGggaG9sbG93IHN0cmFrZXMsIGdyZWVuaXNoIG9yIHJlZGRpc2gsIHdoaWNoIGluIHNpZ2h0IGFyZSBsb3dlciB0aGFuIHRoZSB3YWxsOwpUaGVuIHRoZSBwcmllc3Qgc2hhbGwgZ28gb3V0IG9mIHRoZSBob3VzZSB0byB0aGUgZG9vciBvZiB0aGUgaG91c2UsIGFuZCBzaHV0IHVwIHRoZSBob3VzZSBzZXZlbiBkYXlzOgpBbmQgdGhlIHByaWVzdCBzaGFsbCBjb21lIGFnYWluIHRoZSBzZXZlbnRoIGRheSwgYW5kIHNoYWxsIGxvb2s6IGFuZCwgYmVob2xkLCBpZiB0aGUgcGxhZ3VlIGJlIHNwcmVhZCBpbiB0aGUgd2FsbHMgb2YgdGhlIGhvdXNlOwpUaGVuIHRoZSBwcmllc3Qgc2hhbGwgY29tbWFuZCB0aGF0IHRoZXkgdGFrZSBhd2F5IHRoZSBzdG9uZXMgaW4gd2hpY2ggdGhlIHBsYWd1ZSBpcywgYW5kIHRoZXkgc2hhbGwgY2FzdCB0aGVtIGludG8gYW4gdW5jbGVhbiBwbGFjZSB3aXRob3V0IHRoZSBjaXR5OgpBbmQgaGUgc2hhbGwgY2F1c2UgdGhlIGhvdXNlIHRvIGJlIHNjcmFwZWQgd2l0aGluIHJvdW5kIGFib3V0LCBhbmQgdGhleSBzaGFsbCBwb3VyIG91dCB0aGUgZHVzdCB0aGF0IHRoZXkgc2NyYXBlIG9mZiB3aXRob3V0IHRoZSBjaXR5IGludG8gYW4gdW5jbGVhbiBwbGFjZToKQW5kIHRoZXkgc2hhbGwgdGFrZSBvdGhlciBzdG9uZXMsIGFuZCBwdXQgdGhlbSBpbiB0aGUgcGxhY2Ugb2YgdGhvc2Ugc3RvbmVzOyBhbmQgaGUgc2hhbGwgdGFrZSBvdGhlciBtb3J0ZXIsIGFuZCBzaGFsbCBwbGFpc3RlciB0aGUgaG91c2UuCkFuZCBpZiB0aGUgcGxhZ3VlIGNvbWUgYWdhaW4sIGFuZCBicmVhayBvdXQgaW4gdGhlIGhvdXNlLCBhZnRlciB0aGF0IGhlIGhhdGggdGFrZW4gYXdheSB0aGUgc3RvbmVzLCBhbmQgYWZ0ZXIgaGUgaGF0aCBzY3JhcGVkIHRoZSBob3VzZSwgYW5kIGFmdGVyIGl0IGlzIHBsYWlzdGVyZWQ7ClRoZW4gdGhlIHByaWVzdCBzaGFsbCBjb21lIGFuZCBsb29rLCBhbmQsIGJlaG9sZCwgaWYgdGhlIHBsYWd1ZSBiZSBzcHJlYWQgaW4gdGhlIGhvdXNlLCBpdCBpcyBhIGZyZXR0aW5nIGxlcHJvc3kgaW4gdGhlIGhvdXNlOyBpdCBpcyB1bmNsZWFuLgpBbmQgaGUgc2hhbGwgYnJlYWsgZG93biB0aGUgaG91c2UsIHRoZSBzdG9uZXMgb2YgaXQsIGFuZCB0aGUgdGltYmVyIHRoZXJlb2YsIGFuZCBhbGwgdGhlIG1vcnRlciBvZiB0aGUgaG91c2U7IGFuZCBoZSBzaGFsbCBjYXJyeSB0aGVtIGZvcnRoIG91dCBvZiB0aGUgY2l0eSBpbnRvIGFuIHVuY2xlYW4gcGxhY2UuCk1vcmVvdmVyIGhlIHRoYXQgZ29ldGggaW50byB0aGUgaG91c2UgYWxsIHRoZSB3aGlsZSB0aGF0IGl0IGlzIHNodXQgdXAgc2hhbGwgYmUgdW5jbGVhbiB1bnRpbCB0aGUgZXZlbi4KQW5kIGhlIHRoYXQgbGlldGggaW4gdGhlIGhvdXNlIHNoYWxsIHdhc2ggaGlzIGNsb3RoZXM7IGFuZCBoZSB0aGF0IGVhdGV0aCBpbiB0aGUgaG91c2Ugc2hhbGwgd2FzaCBoaXMgY2xvdGhlcy4KQW5kIGlmIHRoZSBwcmllc3Qgc2hhbGwgY29tZSBpbiwgYW5kIGxvb2sgdXBvbiBpdCwgYW5kLCBiZWhvbGQsIHRoZSBwbGFndWUgaGF0aCBub3Qgc3ByZWFkIGluIHRoZSBob3VzZSwgYWZ0ZXIgdGhlIGhvdXNlIHdhcyBwbGFpc3RlcmVkOiB0aGVuIHRoZSBwcmllc3Qgc2hhbGwgcHJvbm91bmNlIHRoZSBob3VzZSBjbGVhbiwgYmVjYXVzZSB0aGUgcGxhZ3VlIGlzIGhlYWxlZC4KQW5kIGhlIHNoYWxsIHRha2UgdG8gY2xlYW5zZSB0aGUgaG91c2UgdHdvIGJpcmRzLCBhbmQgY2VkYXIgd29vZCwgYW5kIHNjYXJsZXQsIGFuZCBoeXNzb3A6CkFuZCBoZSBzaGFsbCBraWxsIHRoZSBvbmUgb2YgdGhlIGJpcmRzIGluIGFuIGVhcnRoZW4gdmVzc2VsIG92ZXIgcnVubmluZyB3YXRlcjoKQW5kIGhlIHNoYWxsIHRha2UgdGhlIGNlZGFyIHdvb2QsIGFuZCB0aGUgaHlzc29wLCBhbmQgdGhlIHNjYXJsZXQsIGFuZCB0aGUgbGl2aW5nIGJpcmQsIGFuZCBkaXAgdGhlbSBpbiB0aGUgYmxvb2Qgb2YgdGhlIHNsYWluIGJpcmQsIGFuZCBpbiB0aGUgcnVubmluZyB3YXRlciwgYW5kIHNwcmlua2xlIHRoZSBob3VzZSBzZXZlbiB0aW1lczoKQW5kIGhlIHNoYWxsIGNsZWFuc2UgdGhlIGhvdXNlIHdpdGggdGhlIGJsb29kIG9mIHRoZSBiaXJkLCBhbmQgd2l0aCB0aGUgcnVubmluZyB3YXRlciwgYW5kIHdpdGggdGhlIGxpdmluZyBiaXJkLCBhbmQgd2l0aCB0aGUgY2VkYXIgd29vZCwgYW5kIHdpdGggdGhlIGh5c3NvcCwgYW5kIHdpdGggdGhlIHNjYXJsZXQ6CkJ1dCBoZSBzaGFsbCBsZXQgZ28gdGhlIGxpdmluZyBiaXJkIG91dCBvZiB0aGUgY2l0eSBpbnRvIHRoZSBvcGVuIGZpZWxkcywgYW5kIG1ha2UgYW4gYXRvbmVtZW50IGZvciB0aGUgaG91c2U6IGFuZCBpdCBzaGFsbCBiZSBjbGVhbi4KVGhpcyBpcyB0aGUgbGF3IGZvciBhbGwgbWFubmVyIG9mIHBsYWd1ZSBvZiBsZXByb3N5LCBhbmQgc2NhbGwsCkFuZCBmb3IgdGhlIGxlcHJvc3kgb2YgYSBnYXJtZW50LCBhbmQgb2YgYSBob3VzZSwKQW5kIGZvciBhIHJpc2luZywgYW5kIGZvciBhIHNjYWIsIGFuZCBmb3IgYSBicmlnaHQgc3BvdDoKVG8gdGVhY2ggd2hlbiBpdCBpcyB1bmNsZWFuLCBhbmQgd2hlbiBpdCBpcyBjbGVhbjogdGhpcyBpcyB0aGUgbGF3IG9mIGxlcHJvc3kuCkFuZCB0aGUgTE9SRCBzcGFrZSB1bnRvIE1vc2VzIGFuZCB0byBBYXJvbiwgc2F5aW5nLApTcGVhayB1bnRvIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIGFuZCBzYXkgdW50byB0aGVtLCBXaGVuIGFueSBtYW4gaGF0aCBhIHJ1bm5pbmcgaXNzdWUgb3V0IG9mIGhpcyBmbGVzaCwgYmVjYXVzZSBvZiBoaXMgaXNzdWUgaGUgaXMgdW5jbGVhbi4KQW5kIHRoaXMgc2hhbGwgYmUgaGlzIHVuY2xlYW5uZXNzIGluIGhpcyBpc3N1ZTogd2hldGhlciBoaXMgZmxlc2ggcnVuIHdpdGggaGlzIGlzc3VlLCBvciBoaXMgZmxlc2ggYmUgc3RvcHBlZCBmcm9tIGhpcyBpc3N1ZSwgaXQgaXMgaGlzIHVuY2xlYW5uZXNzLgpFdmVyeSBiZWQsIHdoZXJlb24gaGUgbGlldGggdGhhdCBoYXRoIHRoZSBpc3N1ZSwgaXMgdW5jbGVhbjogYW5kIGV2ZXJ5IHRoaW5nLCB3aGVyZW9uIGhlIHNpdHRldGgsIHNoYWxsIGJlIHVuY2xlYW4uCkFuZCB3aG9zb2V2ZXIgdG91Y2hldGggaGlzIGJlZCBzaGFsbCB3YXNoIGhpcyBjbG90aGVzLCBhbmQgYmF0aGUgaGltc2VsZiBpbiB3YXRlciwgYW5kIGJlIHVuY2xlYW4gdW50aWwgdGhlIGV2ZW4uCkFuZCBoZSB0aGF0IHNpdHRldGggb24gYW55IHRoaW5nIHdoZXJlb24gaGUgc2F0IHRoYXQgaGF0aCB0aGUgaXNzdWUgc2hhbGwgd2FzaCBoaXMgY2xvdGhlcywgYW5kIGJhdGhlIGhpbXNlbGYgaW4gd2F0ZXIsIGFuZCBiZSB1bmNsZWFuIHVudGlsIHRoZSBldmVuLgpBbmQgaGUgdGhhdCB0b3VjaGV0aCB0aGUgZmxlc2ggb2YgaGltIHRoYXQgaGF0aCB0aGUgaXNzdWUgc2hhbGwgd2FzaCBoaXMgY2xvdGhlcywgYW5kIGJhdGhlIGhpbXNlbGYgaW4gd2F0ZXIsIGFuZCBiZSB1bmNsZWFuIHVudGlsIHRoZSBldmVuLgpBbmQgaWYgaGUgdGhhdCBoYXRoIHRoZSBpc3N1ZSBzcGl0IHVwb24gaGltIHRoYXQgaXMgY2xlYW47IHRoZW4gaGUgc2hhbGwgd2FzaCBoaXMgY2xvdGhlcywgYW5kIGJhdGhlIGhpbXNlbGYgaW4gd2F0ZXIsIGFuZCBiZSB1bmNsZWFuIHVudGlsIHRoZSBldmVuLgpBbmQgd2hhdCBzYWRkbGUgc29ldmVyIGhlIHJpZGV0aCB1cG9uIHRoYXQgaGF0aCB0aGUgaXNzdWUgc2hhbGwgYmUgdW5jbGVhbi4KQW5kIHdob3NvZXZlciB0b3VjaGV0aCBhbnkgdGhpbmcgdGhhdCB3YXMgdW5kZXIgaGltIHNoYWxsIGJlIHVuY2xlYW4gdW50aWwgdGhlIGV2ZW46IGFuZCBoZSB0aGF0IGJlYXJldGggYW55IG9mIHRob3NlIHRoaW5ncyBzaGFsbCB3YXNoIGhpcyBjbG90aGVzLCBhbmQgYmF0aGUgaGltc2VsZiBpbiB3YXRlciwgYW5kIGJlIHVuY2xlYW4gdW50aWwgdGhlIGV2ZW4uCkFuZCB3aG9tc29ldmVyIGhlIHRvdWNoZXRoIHRoYXQgaGF0aCB0aGUgaXNzdWUsIGFuZCBoYXRoIG5vdCByaW5zZWQgaGlzIGhhbmRzIGluIHdhdGVyLCBoZSBzaGFsbCB3YXNoIGhpcyBjbG90aGVzLCBhbmQgYmF0aGUgaGltc2VsZiBpbiB3YXRlciwgYW5kIGJlIHVuY2xlYW4gdW50aWwgdGhlIGV2ZW4uCkFuZCB0aGUgdmVzc2VsIG9mIGVhcnRoLCB0aGF0IGhlIHRvdWNoZXRoIHdoaWNoIGhhdGggdGhlIGlzc3VlLCBzaGFsbCBiZSBicm9rZW46IGFuZCBldmVyeSB2ZXNzZWwgb2Ygd29vZCBzaGFsbCBiZSByaW5zZWQgaW4gd2F0ZXIuCkFuZCB3aGVuIGhlIHRoYXQgaGF0aCBhbiBpc3N1ZSBpcyBjbGVhbnNlZCBvZiBoaXMgaXNzdWU7IHRoZW4gaGUgc2hhbGwgbnVtYmVyIHRvIGhpbXNlbGYgc2V2ZW4gZGF5cyBmb3IgaGlzIGNsZWFuc2luZywgYW5kIHdhc2ggaGlzIGNsb3RoZXMsIGFuZCBiYXRoZSBoaXMgZmxlc2ggaW4gcnVubmluZyB3YXRlciwgYW5kIHNoYWxsIGJlIGNsZWFuLgpBbmQgb24gdGhlIGVpZ2h0aCBkYXkgaGUgc2hhbGwgdGFrZSB0byBoaW0gdHdvIHR1cnRsZWRvdmVzLCBvciB0d28geW91bmcgcGlnZW9ucywgYW5kIGNvbWUgYmVmb3JlIHRoZSBMT1JEIHVudG8gdGhlIGRvb3Igb2YgdGhlIHRhYmVybmFjbGUgb2YgdGhlIGNvbmdyZWdhdGlvbiwgYW5kIGdpdmUgdGhlbSB1bnRvIHRoZSBwcmllc3Q6CkFuZCB0aGUgcHJpZXN0IHNoYWxsIG9mZmVyIHRoZW0sIHRoZSBvbmUgZm9yIGEgc2luIG9mZmVyaW5nLCBhbmQgdGhlIG90aGVyIGZvciBhIGJ1cm50IG9mZmVyaW5nOyBhbmQgdGhlIHByaWVzdCBzaGFsbCBtYWtlIGFuIGF0b25lbWVudCBmb3IgaGltIGJlZm9yZSB0aGUgTE9SRCBmb3IgaGlzIGlzc3VlLgpBbmQgaWYgYW55IG1hbidzIHNlZWQgb2YgY29wdWxhdGlvbiBnbyBvdXQgZnJvbSBoaW0sIHRoZW4gaGUgc2hhbGwgd2FzaCBhbGwgaGlzIGZsZXNoIGluIHdhdGVyLCBhbmQgYmUgdW5jbGVhbiB1bnRpbCB0aGUgZXZlbi4KQW5kIGV2ZXJ5IGdhcm1lbnQsIGFuZCBldmVyeSBza2luLCB3aGVyZW9uIGlzIHRoZSBzZWVkIG9mIGNvcHVsYXRpb24sIHNoYWxsIGJlIHdhc2hlZCB3aXRoIHdhdGVyLCBhbmQgYmUgdW5jbGVhbiB1bnRpbCB0aGUgZXZlbi4KVGhlIHdvbWFuIGFsc28gd2l0aCB3aG9tIG1hbiBzaGFsbCBsaWUgd2l0aCBzZWVkIG9mIGNvcHVsYXRpb24sIHRoZXkgc2hhbGwgYm90aCBiYXRoZSB0aGVtc2VsdmVzIGluIHdhdGVyLCBhbmQgYmUgdW5jbGVhbiB1bnRpbCB0aGUgZXZlbi4KQW5kIGlmIGEgd29tYW4gaGF2ZSBhbiBpc3N1ZSwgYW5kIGhlciBpc3N1ZSBpbiBoZXIgZmxlc2ggYmUgYmxvb2QsIHNoZSBzaGFsbCBiZSBwdXQgYXBhcnQgc2V2ZW4gZGF5czogYW5kIHdob3NvZXZlciB0b3VjaGV0aCBoZXIgc2hhbGwgYmUgdW5jbGVhbiB1bnRpbCB0aGUgZXZlbi4KQW5kIGV2ZXJ5IHRoaW5nIHRoYXQgc2hlIGxpZXRoIHVwb24gaW4gaGVyIHNlcGFyYXRpb24gc2hhbGwgYmUgdW5jbGVhbjogZXZlcnkgdGhpbmcgYWxzbyB0aGF0IHNoZSBzaXR0ZXRoIHVwb24gc2hhbGwgYmUgdW5jbGVhbi4KQW5kIHdob3NvZXZlciB0b3VjaGV0aCBoZXIgYmVkIHNoYWxsIHdhc2ggaGlzIGNsb3RoZXMsIGFuZCBiYXRoZSBoaW1zZWxmIGluIHdhdGVyLCBhbmQgYmUgdW5jbGVhbiB1bnRpbCB0aGUgZXZlbi4KQW5kIHdob3NvZXZlciB0b3VjaGV0aCBhbnkgdGhpbmcgdGhhdCBzaGUgc2F0IHVwb24gc2hhbGwgd2FzaCBoaXMgY2xvdGhlcywgYW5kIGJhdGhlIGhpbXNlbGYgaW4gd2F0ZXIsIGFuZCBiZSB1bmNsZWFuIHVudGlsIHRoZSBldmVuLgpBbmQgaWYgaXQgYmUgb24gaGVyIGJlZCwgb3Igb24gYW55IHRoaW5nIHdoZXJlb24gc2hlIHNpdHRldGgsIHdoZW4gaGUgdG91Y2hldGggaXQsIGhlIHNoYWxsIGJlIHVuY2xlYW4gdW50aWwgdGhlIGV2ZW4uCkFuZCBpZiBhbnkgbWFuIGxpZSB3aXRoIGhlciBhdCBhbGwsIGFuZCBoZXIgZmxvd2VycyBiZSB1cG9uIGhpbSwgaGUgc2hhbGwgYmUgdW5jbGVhbiBzZXZlbiBkYXlzOyBhbmQgYWxsIHRoZSBiZWQgd2hlcmVvbiBoZSBsaWV0aCBzaGFsbCBiZSB1bmNsZWFuLgpBbmQgaWYgYSB3b21hbiBoYXZlIGFuIGlzc3VlIG9mIGhlciBibG9vZCBtYW55IGRheXMgb3V0IG9mIHRoZSB0aW1lIG9mIGhlciBzZXBhcmF0aW9uLCBvciBpZiBpdCBydW4gYmV5b25kIHRoZSB0aW1lIG9mIGhlciBzZXBhcmF0aW9uOyBhbGwgdGhlIGRheXMgb2YgdGhlIGlzc3VlIG9mIGhlciB1bmNsZWFubmVzcyBzaGFsbCBiZSBhcyB0aGUgZGF5cyBvZiBoZXIgc2VwYXJhdGlvbjogc2hlIHNoYWxsIGJlIHVuY2xlYW4uCkV2ZXJ5IGJlZCB3aGVyZW9uIHNoZSBsaWV0aCBhbGwgdGhlIGRheXMgb2YgaGVyIGlzc3VlIHNoYWxsIGJlIHVudG8gaGVyIGFzIHRoZSBiZWQgb2YgaGVyIHNlcGFyYXRpb246IGFuZCB3aGF0c29ldmVyIHNoZSBzaXR0ZXRoIHVwb24gc2hhbGwgYmUgdW5jbGVhbiwgYXMgdGhlIHVuY2xlYW5uZXNzIG9mIGhlciBzZXBhcmF0aW9uLgpBbmQgd2hvc29ldmVyIHRvdWNoZXRoIHRob3NlIHRoaW5ncyBzaGFsbCBiZSB1bmNsZWFuLCBhbmQgc2hhbGwgd2FzaCBoaXMgY2xvdGhlcywgYW5kIGJhdGhlIGhpbXNlbGYgaW4gd2F0ZXIsIGFuZCBiZSB1bmNsZWFuIHVudGlsIHRoZSBldmVuLgpCdXQgaWYgc2hlIGJlIGNsZWFuc2VkIG9mIGhlciBpc3N1ZSwgdGhlbiBzaGUgc2hhbGwgbnVtYmVyIHRvIGhlcnNlbGYgc2V2ZW4gZGF5cywgYW5kIGFmdGVyIHRoYXQgc2hlIHNoYWxsIGJlIGNsZWFuLgpBbmQgb24gdGhlIGVpZ2h0aCBkYXkgc2hlIHNoYWxsIHRha2UgdW50byBoZXIgdHdvIHR1cnRsZXMsIG9yIHR3byB5b3VuZyBwaWdlb25zLCBhbmQgYnJpbmcgdGhlbSB1bnRvIHRoZSBwcmllc3QsIHRvIHRoZSBkb29yIG9mIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBjb25ncmVnYXRpb24uCkFuZCB0aGUgcHJpZXN0IHNoYWxsIG9mZmVyIHRoZSBvbmUgZm9yIGEgc2luIG9mZmVyaW5nLCBhbmQgdGhlIG90aGVyIGZvciBhIGJ1cm50IG9mZmVyaW5nOyBhbmQgdGhlIHByaWVzdCBzaGFsbCBtYWtlIGFuIGF0b25lbWVudCBmb3IgaGVyIGJlZm9yZSB0aGUgTE9SRCBmb3IgdGhlIGlzc3VlIG9mIGhlciB1bmNsZWFubmVzcy4KVGh1cyBzaGFsbCB5ZSBzZXBhcmF0ZSB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGZyb20gdGhlaXIgdW5jbGVhbm5lc3M7IHRoYXQgdGhleSBkaWUgbm90IGluIHRoZWlyIHVuY2xlYW5uZXNzLCB3aGVuIHRoZXkgZGVmaWxlIG15IHRhYmVybmFjbGUgdGhhdCBpcyBhbW9uZyB0aGVtLgpUaGlzIGlzIHRoZSBsYXcgb2YgaGltIHRoYXQgaGF0aCBhbiBpc3N1ZSwgYW5kIG9mIGhpbSB3aG9zZSBzZWVkIGdvZXRoIGZyb20gaGltLCBhbmQgaXMgZGVmaWxlZCB0aGVyZXdpdGg7CkFuZCBvZiBoZXIgdGhhdCBpcyBzaWNrIG9mIGhlciBmbG93ZXJzLCBhbmQgb2YgaGltIHRoYXQgaGF0aCBhbiBpc3N1ZSwgb2YgdGhlIG1hbiwgYW5kIG9mIHRoZSB3b21hbiwgYW5kIG9mIGhpbSB0aGF0IGxpZXRoIHdpdGggaGVyIHRoYXQgaXMgdW5jbGVhbi4KQW5kIHRoZSBMT1JEIHNwYWtlIHVudG8gTW9zZXMgYWZ0ZXIgdGhlIGRlYXRoIG9mIHRoZSB0d28gc29ucyBvZiBBYXJvbiwgd2hlbiB0aGV5IG9mZmVyZWQgYmVmb3JlIHRoZSBMT1JELCBhbmQgZGllZDsKQW5kIHRoZSBMT1JEIHNhaWQgdW50byBNb3NlcywgU3BlYWsgdW50byBBYXJvbiB0aHkgYnJvdGhlciwgdGhhdCBoZSBjb21lIG5vdCBhdCBhbGwgdGltZXMgaW50byB0aGUgaG9seSBwbGFjZSB3aXRoaW4gdGhlIHZhaWwgYmVmb3JlIHRoZSBtZXJjeSBzZWF0LCB3aGljaCBpcyB1cG9uIHRoZSBhcms7IHRoYXQgaGUgZGllIG5vdDogZm9yIEkgd2lsbCBhcHBlYXIgaW4gdGhlIGNsb3VkIHVwb24gdGhlIG1lcmN5IHNlYXQuClRodXMgc2hhbGwgQWFyb24gY29tZSBpbnRvIHRoZSBob2x5IHBsYWNlOiB3aXRoIGEgeW91bmcgYnVsbG9jayBmb3IgYSBzaW4gb2ZmZXJpbmcsIGFuZCBhIHJhbSBmb3IgYSBidXJudCBvZmZlcmluZy4KSGUgc2hhbGwgcHV0IG9uIHRoZSBob2x5IGxpbmVuIGNvYXQsIGFuZCBoZSBzaGFsbCBoYXZlIHRoZSBsaW5lbiBicmVlY2hlcyB1cG9uIGhpcyBmbGVzaCwgYW5kIHNoYWxsIGJlIGdpcmRlZCB3aXRoIGEgbGluZW4gZ2lyZGxlLCBhbmQgd2l0aCB0aGUgbGluZW4gbWl0cmUgc2hhbGwgaGUgYmUgYXR0aXJlZDogdGhlc2UgYXJlIGhvbHkgZ2FybWVudHM7IHRoZXJlZm9yZSBzaGFsbCBoZSB3YXNoIGhpcyBmbGVzaCBpbiB3YXRlciwgYW5kIHNvIHB1dCB0aGVtIG9uLgpBbmQgaGUgc2hhbGwgdGFrZSBvZiB0aGUgY29uZ3JlZ2F0aW9uIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgdHdvIGtpZHMgb2YgdGhlIGdvYXRzIGZvciBhIHNpbiBvZmZlcmluZywgYW5kIG9uZSByYW0gZm9yIGEgYnVybnQgb2ZmZXJpbmcuCkFuZCBBYXJvbiBzaGFsbCBvZmZlciBoaXMgYnVsbG9jayBvZiB0aGUgc2luIG9mZmVyaW5nLCB3aGljaCBpcyBmb3IgaGltc2VsZiwgYW5kIG1ha2UgYW4gYXRvbmVtZW50IGZvciBoaW1zZWxmLCBhbmQgZm9yIGhpcyBob3VzZS4KQW5kIGhlIHNoYWxsIHRha2UgdGhlIHR3byBnb2F0cywgYW5kIHByZXNlbnQgdGhlbSBiZWZvcmUgdGhlIExPUkQgYXQgdGhlIGRvb3Igb2YgdGhlIHRhYmVybmFjbGUgb2YgdGhlIGNvbmdyZWdhdGlvbi4KQW5kIEFhcm9uIHNoYWxsIGNhc3QgbG90cyB1cG9uIHRoZSB0d28gZ29hdHM7IG9uZSBsb3QgZm9yIHRoZSBMT1JELCBhbmQgdGhlIG90aGVyIGxvdCBmb3IgdGhlIHNjYXBlZ29hdC4KQW5kIEFhcm9uIHNoYWxsIGJyaW5nIHRoZSBnb2F0IHVwb24gd2hpY2ggdGhlIExPUkQncyBsb3QgZmVsbCwgYW5kIG9mZmVyIGhpbSBmb3IgYSBzaW4gb2ZmZXJpbmcuCkJ1dCB0aGUgZ29hdCwgb24gd2hpY2ggdGhlIGxvdCBmZWxsIHRvIGJlIHRoZSBzY2FwZWdvYXQsIHNoYWxsIGJlIHByZXNlbnRlZCBhbGl2ZSBiZWZvcmUgdGhlIExPUkQsIHRvIG1ha2UgYW4gYXRvbmVtZW50IHdpdGggaGltLCBhbmQgdG8gbGV0IGhpbSBnbyBmb3IgYSBzY2FwZWdvYXQgaW50byB0aGUgd2lsZGVybmVzcy4KQW5kIEFhcm9uIHNoYWxsIGJyaW5nIHRoZSBidWxsb2NrIG9mIHRoZSBzaW4gb2ZmZXJpbmcsIHdoaWNoIGlzIGZvciBoaW1zZWxmLCBhbmQgc2hhbGwgbWFrZSBhbiBhdG9uZW1lbnQgZm9yIGhpbXNlbGYsIGFuZCBmb3IgaGlzIGhvdXNlLCBhbmQgc2hhbGwga2lsbCB0aGUgYnVsbG9jayBvZiB0aGUgc2luIG9mZmVyaW5nIHdoaWNoIGlzIGZvciBoaW1zZWxmOgpBbmQgaGUgc2hhbGwgdGFrZSBhIGNlbnNlciBmdWxsIG9mIGJ1cm5pbmcgY29hbHMgb2YgZmlyZSBmcm9tIG9mZiB0aGUgYWx0YXIgYmVmb3JlIHRoZSBMT1JELCBhbmQgaGlzIGhhbmRzIGZ1bGwgb2Ygc3dlZXQgaW5jZW5zZSBiZWF0ZW4gc21hbGwsIGFuZCBicmluZyBpdCB3aXRoaW4gdGhlIHZhaWw6CkFuZCBoZSBzaGFsbCBwdXQgdGhlIGluY2Vuc2UgdXBvbiB0aGUgZmlyZSBiZWZvcmUgdGhlIExPUkQsIHRoYXQgdGhlIGNsb3VkIG9mIHRoZSBpbmNlbnNlIG1heSBjb3ZlciB0aGUgbWVyY3kgc2VhdCB0aGF0IGlzIHVwb24gdGhlIHRlc3RpbW9ueSwgdGhhdCBoZSBkaWUgbm90OgpBbmQgaGUgc2hhbGwgdGFrZSBvZiB0aGUgYmxvb2Qgb2YgdGhlIGJ1bGxvY2ssIGFuZCBzcHJpbmtsZSBpdCB3aXRoIGhpcyBmaW5nZXIgdXBvbiB0aGUgbWVyY3kgc2VhdCBlYXN0d2FyZDsgYW5kIGJlZm9yZSB0aGUgbWVyY3kgc2VhdCBzaGFsbCBoZSBzcHJpbmtsZSBvZiB0aGUgYmxvb2Qgd2l0aCBoaXMgZmluZ2VyIHNldmVuIHRpbWVzLgpUaGVuIHNoYWxsIGhlIGtpbGwgdGhlIGdvYXQgb2YgdGhlIHNpbiBvZmZlcmluZywgdGhhdCBpcyBmb3IgdGhlIHBlb3BsZSwgYW5kIGJyaW5nIGhpcyBibG9vZCB3aXRoaW4gdGhlIHZhaWwsIGFuZCBkbyB3aXRoIHRoYXQgYmxvb2QgYXMgaGUgZGlkIHdpdGggdGhlIGJsb29kIG9mIHRoZSBidWxsb2NrLCBhbmQgc3ByaW5rbGUgaXQgdXBvbiB0aGUgbWVyY3kgc2VhdCwgYW5kIGJlZm9yZSB0aGUgbWVyY3kgc2VhdDoKQW5kIGhlIHNoYWxsIG1ha2UgYW4gYXRvbmVtZW50IGZvciB0aGUgaG9seSBwbGFjZSwgYmVjYXVzZSBvZiB0aGUgdW5jbGVhbm5lc3Mgb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgYW5kIGJlY2F1c2Ugb2YgdGhlaXIgdHJhbnNncmVzc2lvbnMgaW4gYWxsIHRoZWlyIHNpbnM6IGFuZCBzbyBzaGFsbCBoZSBkbyBmb3IgdGhlIHRhYmVybmFjbGUgb2YgdGhlIGNvbmdyZWdhdGlvbiwgdGhhdCByZW1haW5ldGggYW1vbmcgdGhlbSBpbiB0aGUgbWlkc3Qgb2YgdGhlaXIgdW5jbGVhbm5lc3MuCkFuZCB0aGVyZSBzaGFsbCBiZSBubyBtYW4gaW4gdGhlIHRhYmVybmFjbGUgb2YgdGhlIGNvbmdyZWdhdGlvbiB3aGVuIGhlIGdvZXRoIGluIHRvIG1ha2UgYW4gYXRvbmVtZW50IGluIHRoZSBob2x5IHBsYWNlLCB1bnRpbCBoZSBjb21lIG91dCwgYW5kIGhhdmUgbWFkZSBhbiBhdG9uZW1lbnQgZm9yIGhpbXNlbGYsIGFuZCBmb3IgaGlzIGhvdXNlaG9sZCwgYW5kIGZvciBhbGwgdGhlIGNvbmdyZWdhdGlvbiBvZiBJc3JhZWwuCkFuZCBoZSBzaGFsbCBnbyBvdXQgdW50byB0aGUgYWx0YXIgdGhhdCBpcyBiZWZvcmUgdGhlIExPUkQsIGFuZCBtYWtlIGFuIGF0b25lbWVudCBmb3IgaXQ7IGFuZCBzaGFsbCB0YWtlIG9mIHRoZSBibG9vZCBvZiB0aGUgYnVsbG9jaywgYW5kIG9mIHRoZSBibG9vZCBvZiB0aGUgZ29hdCwgYW5kIHB1dCBpdCB1cG9uIHRoZSBob3JucyBvZiB0aGUgYWx0YXIgcm91bmQgYWJvdXQuCkFuZCBoZSBzaGFsbCBzcHJpbmtsZSBvZiB0aGUgYmxvb2QgdXBvbiBpdCB3aXRoIGhpcyBmaW5nZXIgc2V2ZW4gdGltZXMsIGFuZCBjbGVhbnNlIGl0LCBhbmQgaGFsbG93IGl0IGZyb20gdGhlIHVuY2xlYW5uZXNzIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwuCkFuZCB3aGVuIGhlIGhhdGggbWFkZSBhbiBlbmQgb2YgcmVjb25jaWxpbmcgdGhlIGhvbHkgcGxhY2UsIGFuZCB0aGUgdGFiZXJuYWNsZSBvZiB0aGUgY29uZ3JlZ2F0aW9uLCBhbmQgdGhlIGFsdGFyLCBoZSBzaGFsbCBicmluZyB0aGUgbGl2ZSBnb2F0OgpBbmQgQWFyb24gc2hhbGwgbGF5IGJvdGggaGlzIGhhbmRzIHVwb24gdGhlIGhlYWQgb2YgdGhlIGxpdmUgZ29hdCwgYW5kIGNvbmZlc3Mgb3ZlciBoaW0gYWxsIHRoZSBpbmlxdWl0aWVzIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIGFuZCBhbGwgdGhlaXIgdHJhbnNncmVzc2lvbnMgaW4gYWxsIHRoZWlyIHNpbnMsIHB1dHRpbmcgdGhlbSB1cG9uIHRoZSBoZWFkIG9mIHRoZSBnb2F0LCBhbmQgc2hhbGwgc2VuZCBoaW0gYXdheSBieSB0aGUgaGFuZCBvZiBhIGZpdCBtYW4gaW50byB0aGUgd2lsZGVybmVzczoKQW5kIHRoZSBnb2F0IHNoYWxsIGJlYXIgdXBvbiBoaW0gYWxsIHRoZWlyIGluaXF1aXRpZXMgdW50byBhIGxhbmQgbm90IGluaGFiaXRlZDogYW5kIGhlIHNoYWxsIGxldCBnbyB0aGUgZ29hdCBpbiB0aGUgd2lsZGVybmVzcy4KQW5kIEFhcm9uIHNoYWxsIGNvbWUgaW50byB0aGUgdGFiZXJuYWNsZSBvZiB0aGUgY29uZ3JlZ2F0aW9uLCBhbmQgc2hhbGwgcHV0IG9mZiB0aGUgbGluZW4gZ2FybWVudHMsIHdoaWNoIGhlIHB1dCBvbiB3aGVuIGhlIHdlbnQgaW50byB0aGUgaG9seSBwbGFjZSwgYW5kIHNoYWxsIGxlYXZlIHRoZW0gdGhlcmU6CkFuZCBoZSBzaGFsbCB3YXNoIGhpcyBmbGVzaCB3aXRoIHdhdGVyIGluIHRoZSBob2x5IHBsYWNlLCBhbmQgcHV0IG9uIGhpcyBnYXJtZW50cywgYW5kIGNvbWUgZm9ydGgsIGFuZCBvZmZlciBoaXMgYnVybnQgb2ZmZXJpbmcsIGFuZCB0aGUgYnVybnQgb2ZmZXJpbmcgb2YgdGhlIHBlb3BsZSwgYW5kIG1ha2UgYW4gYXRvbmVtZW50IGZvciBoaW1zZWxmLCBhbmQgZm9yIHRoZSBwZW9wbGUuCkFuZCB0aGUgZmF0IG9mIHRoZSBzaW4gb2ZmZXJpbmcgc2hhbGwgaGUgYnVybiB1cG9uIHRoZSBhbHRhci4KQW5kIGhlIHRoYXQgbGV0IGdvIHRoZSBnb2F0IGZvciB0aGUgc2NhcGVnb2F0IHNoYWxsIHdhc2ggaGlzIGNsb3RoZXMsIGFuZCBiYXRoZSBoaXMgZmxlc2ggaW4gd2F0ZXIsIGFuZCBhZnRlcndhcmQgY29tZSBpbnRvIHRoZSBjYW1wLgpBbmQgdGhlIGJ1bGxvY2sgZm9yIHRoZSBzaW4gb2ZmZXJpbmcsIGFuZCB0aGUgZ29hdCBmb3IgdGhlIHNpbiBvZmZlcmluZywgd2hvc2UgYmxvb2Qgd2FzIGJyb3VnaHQgaW4gdG8gbWFrZSBhdG9uZW1lbnQgaW4gdGhlIGhvbHkgcGxhY2UsIHNoYWxsIG9uZSBjYXJyeSBmb3J0aCB3aXRob3V0IHRoZSBjYW1wOyBhbmQgdGhleSBzaGFsbCBidXJuIGluIHRoZSBmaXJlIHRoZWlyIHNraW5zLCBhbmQgdGhlaXIgZmxlc2gsIGFuZCB0aGVpciBkdW5nLgpBbmQgaGUgdGhhdCBidXJuZXRoIHRoZW0gc2hhbGwgd2FzaCBoaXMgY2xvdGhlcywgYW5kIGJhdGhlIGhpcyBmbGVzaCBpbiB3YXRlciwgYW5kIGFmdGVyd2FyZCBoZSBzaGFsbCBjb21lIGludG8gdGhlIGNhbXAuCkFuZCB0aGlzIHNoYWxsIGJlIGEgc3RhdHV0ZSBmb3IgZXZlciB1bnRvIHlvdTogdGhhdCBpbiB0aGUgc2V2ZW50aCBtb250aCwgb24gdGhlIHRlbnRoIGRheSBvZiB0aGUgbW9udGgsIHllIHNoYWxsIGFmZmxpY3QgeW91ciBzb3VscywgYW5kIGRvIG5vIHdvcmsgYXQgYWxsLCB3aGV0aGVyIGl0IGJlIG9uZSBvZiB5b3VyIG93biBjb3VudHJ5LCBvciBhIHN0cmFuZ2VyIHRoYXQgc29qb3VybmV0aCBhbW9uZyB5b3U6CkZvciBvbiB0aGF0IGRheSBzaGFsbCB0aGUgcHJpZXN0IG1ha2UgYW4gYXRvbmVtZW50IGZvciB5b3UsIHRvIGNsZWFuc2UgeW91LCB0aGF0IHllIG1heSBiZSBjbGVhbiBmcm9tIGFsbCB5b3VyIHNpbnMgYmVmb3JlIHRoZSBMT1JELgpJdCBzaGFsbCBiZSBhIHNhYmJhdGggb2YgcmVzdCB1bnRvIHlvdSwgYW5kIHllIHNoYWxsIGFmZmxpY3QgeW91ciBzb3VscywgYnkgYSBzdGF0dXRlIGZvciBldmVyLgpBbmQgdGhlIHByaWVzdCwgd2hvbSBoZSBzaGFsbCBhbm9pbnQsIGFuZCB3aG9tIGhlIHNoYWxsIGNvbnNlY3JhdGUgdG8gbWluaXN0ZXIgaW4gdGhlIHByaWVzdCdzIG9mZmljZSBpbiBoaXMgZmF0aGVyJ3Mgc3RlYWQsIHNoYWxsIG1ha2UgdGhlIGF0b25lbWVudCwgYW5kIHNoYWxsIHB1dCBvbiB0aGUgbGluZW4gY2xvdGhlcywgZXZlbiB0aGUgaG9seSBnYXJtZW50czoKQW5kIGhlIHNoYWxsIG1ha2UgYW4gYXRvbmVtZW50IGZvciB0aGUgaG9seSBzYW5jdHVhcnksIGFuZCBoZSBzaGFsbCBtYWtlIGFuIGF0b25lbWVudCBmb3IgdGhlIHRhYmVybmFjbGUgb2YgdGhlIGNvbmdyZWdhdGlvbiwgYW5kIGZvciB0aGUgYWx0YXIsIGFuZCBoZSBzaGFsbCBtYWtlIGFuIGF0b25lbWVudCBmb3IgdGhlIHByaWVzdHMsIGFuZCBmb3IgYWxsIHRoZSBwZW9wbGUgb2YgdGhlIGNvbmdyZWdhdGlvbi4KQW5kIHRoaXMgc2hhbGwgYmUgYW4gZXZlcmxhc3Rpbmcgc3RhdHV0ZSB1bnRvIHlvdSwgdG8gbWFrZSBhbiBhdG9uZW1lbnQgZm9yIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgZm9yIGFsbCB0aGVpciBzaW5zIG9uY2UgYSB5ZWFyLiBBbmQgaGUgZGlkIGFzIHRoZSBMT1JEIGNvbW1hbmRlZCBNb3Nlcy4KQW5kIHRoZSBMT1JEIHNwYWtlIHVudG8gTW9zZXMsIHNheWluZywKU3BlYWsgdW50byBBYXJvbiwgYW5kIHVudG8gaGlzIHNvbnMsIGFuZCB1bnRvIGFsbCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLCBhbmQgc2F5IHVudG8gdGhlbTsgVGhpcyBpcyB0aGUgdGhpbmcgd2hpY2ggdGhlIExPUkQgaGF0aCBjb21tYW5kZWQsIHNheWluZywKV2hhdCBtYW4gc29ldmVyIHRoZXJlIGJlIG9mIHRoZSBob3VzZSBvZiBJc3JhZWwsIHRoYXQga2lsbGV0aCBhbiBveCwgb3IgbGFtYiwgb3IgZ29hdCwgaW4gdGhlIGNhbXAsIG9yIHRoYXQga2lsbGV0aCBpdCBvdXQgb2YgdGhlIGNhbXAsCkFuZCBicmluZ2V0aCBpdCBub3QgdW50byB0aGUgZG9vciBvZiB0aGUgdGFiZXJuYWNsZSBvZiB0aGUgY29uZ3JlZ2F0aW9uLCB0byBvZmZlciBhbiBvZmZlcmluZyB1bnRvIHRoZSBMT1JEIGJlZm9yZSB0aGUgdGFiZXJuYWNsZSBvZiB0aGUgTE9SRDsgYmxvb2Qgc2hhbGwgYmUgaW1wdXRlZCB1bnRvIHRoYXQgbWFuOyBoZSBoYXRoIHNoZWQgYmxvb2Q7IGFuZCB0aGF0IG1hbiBzaGFsbCBiZSBjdXQgb2ZmIGZyb20gYW1vbmcgaGlzIHBlb3BsZToKVG8gdGhlIGVuZCB0aGF0IHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgbWF5IGJyaW5nIHRoZWlyIHNhY3JpZmljZXMsIHdoaWNoIHRoZXkgb2ZmZXIgaW4gdGhlIG9wZW4gZmllbGQsIGV2ZW4gdGhhdCB0aGV5IG1heSBicmluZyB0aGVtIHVudG8gdGhlIExPUkQsIHVudG8gdGhlIGRvb3Igb2YgdGhlIHRhYmVybmFjbGUgb2YgdGhlIGNvbmdyZWdhdGlvbiwgdW50byB0aGUgcHJpZXN0LCBhbmQgb2ZmZXIgdGhlbSBmb3IgcGVhY2Ugb2ZmZXJpbmdzIHVudG8gdGhlIExPUkQuCkFuZCB0aGUgcHJpZXN0IHNoYWxsIHNwcmlua2xlIHRoZSBibG9vZCB1cG9uIHRoZSBhbHRhciBvZiB0aGUgTE9SRCBhdCB0aGUgZG9vciBvZiB0aGUgdGFiZXJuYWNsZSBvZiB0aGUgY29uZ3JlZ2F0aW9uLCBhbmQgYnVybiB0aGUgZmF0IGZvciBhIHN3ZWV0IHNhdm91ciB1bnRvIHRoZSBMT1JELgpBbmQgdGhleSBzaGFsbCBubyBtb3JlIG9mZmVyIHRoZWlyIHNhY3JpZmljZXMgdW50byBkZXZpbHMsIGFmdGVyIHdob20gdGhleSBoYXZlIGdvbmUgYSB3aG9yaW5nLiBUaGlzIHNoYWxsIGJlIGEgc3RhdHV0ZSBmb3IgZXZlciB1bnRvIHRoZW0gdGhyb3VnaG91dCB0aGVpciBnZW5lcmF0aW9ucy4KQW5kIHRob3Ugc2hhbHQgc2F5IHVudG8gdGhlbSwgV2hhdHNvZXZlciBtYW4gdGhlcmUgYmUgb2YgdGhlIGhvdXNlIG9mIElzcmFlbCwgb3Igb2YgdGhlIHN0cmFuZ2VycyB3aGljaCBzb2pvdXJuIGFtb25nIHlvdSwgdGhhdCBvZmZlcmV0aCBhIGJ1cm50IG9mZmVyaW5nIG9yIHNhY3JpZmljZSwKQW5kIGJyaW5nZXRoIGl0IG5vdCB1bnRvIHRoZSBkb29yIG9mIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBjb25ncmVnYXRpb24sIHRvIG9mZmVyIGl0IHVudG8gdGhlIExPUkQ7IGV2ZW4gdGhhdCBtYW4gc2hhbGwgYmUgY3V0IG9mZiBmcm9tIGFtb25nIGhpcyBwZW9wbGUuCkFuZCB3aGF0c29ldmVyIG1hbiB0aGVyZSBiZSBvZiB0aGUgaG91c2Ugb2YgSXNyYWVsLCBvciBvZiB0aGUgc3RyYW5nZXJzIHRoYXQgc29qb3VybiBhbW9uZyB5b3UsIHRoYXQgZWF0ZXRoIGFueSBtYW5uZXIgb2YgYmxvb2Q7IEkgd2lsbCBldmVuIHNldCBteSBmYWNlIGFnYWluc3QgdGhhdCBzb3VsIHRoYXQgZWF0ZXRoIGJsb29kLCBhbmQgd2lsbCBjdXQgaGltIG9mZiBmcm9tIGFtb25nIGhpcyBwZW9wbGUuCkZvciB0aGUgbGlmZSBvZiB0aGUgZmxlc2ggaXMgaW4gdGhlIGJsb29kOiBhbmQgSSBoYXZlIGdpdmVuIGl0IHRvIHlvdSB1cG9uIHRoZSBhbHRhciB0byBtYWtlIGFuIGF0b25lbWVudCBmb3IgeW91ciBzb3VsczogZm9yIGl0IGlzIHRoZSBibG9vZCB0aGF0IG1ha2V0aCBhbiBhdG9uZW1lbnQgZm9yIHRoZSBzb3VsLgpUaGVyZWZvcmUgSSBzYWlkIHVudG8gdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgTm8gc291bCBvZiB5b3Ugc2hhbGwgZWF0IGJsb29kLCBuZWl0aGVyIHNoYWxsIGFueSBzdHJhbmdlciB0aGF0IHNvam91cm5ldGggYW1vbmcgeW91IGVhdCBibG9vZC4KQW5kIHdoYXRzb2V2ZXIgbWFuIHRoZXJlIGJlIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIG9yIG9mIHRoZSBzdHJhbmdlcnMgdGhhdCBzb2pvdXJuIGFtb25nIHlvdSwgd2hpY2ggaHVudGV0aCBhbmQgY2F0Y2hldGggYW55IGJlYXN0IG9yIGZvd2wgdGhhdCBtYXkgYmUgZWF0ZW47IGhlIHNoYWxsIGV2ZW4gcG91ciBvdXQgdGhlIGJsb29kIHRoZXJlb2YsIGFuZCBjb3ZlciBpdCB3aXRoIGR1c3QuCkZvciBpdCBpcyB0aGUgbGlmZSBvZiBhbGwgZmxlc2g7IHRoZSBibG9vZCBvZiBpdCBpcyBmb3IgdGhlIGxpZmUgdGhlcmVvZjogdGhlcmVmb3JlIEkgc2FpZCB1bnRvIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIFllIHNoYWxsIGVhdCB0aGUgYmxvb2Qgb2Ygbm8gbWFubmVyIG9mIGZsZXNoOiBmb3IgdGhlIGxpZmUgb2YgYWxsIGZsZXNoIGlzIHRoZSBibG9vZCB0aGVyZW9mOiB3aG9zb2V2ZXIgZWF0ZXRoIGl0IHNoYWxsIGJlIGN1dCBvZmYuCkFuZCBldmVyeSBzb3VsIHRoYXQgZWF0ZXRoIHRoYXQgd2hpY2ggZGllZCBvZiBpdHNlbGYsIG9yIHRoYXQgd2hpY2ggd2FzIHRvcm4gd2l0aCBiZWFzdHMsIHdoZXRoZXIgaXQgYmUgb25lIG9mIHlvdXIgb3duIGNvdW50cnksIG9yIGEgc3RyYW5nZXIsIGhlIHNoYWxsIGJvdGggd2FzaCBoaXMgY2xvdGhlcywgYW5kIGJhdGhlIGhpbXNlbGYgaW4gd2F0ZXIsIGFuZCBiZSB1bmNsZWFuIHVudGlsIHRoZSBldmVuOiB0aGVuIHNoYWxsIGhlIGJlIGNsZWFuLgpCdXQgaWYgaGUgd2FzaCB0aGVtIG5vdCwgbm9yIGJhdGhlIGhpcyBmbGVzaDsgdGhlbiBoZSBzaGFsbCBiZWFyIGhpcyBpbmlxdWl0eS4KQW5kIHRoZSBMT1JEIHNwYWtlIHVudG8gTW9zZXMsIHNheWluZywKU3BlYWsgdW50byB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLCBhbmQgc2F5IHVudG8gdGhlbSwgSSBhbSB0aGUgTE9SRCB5b3VyIEdvZC4KQWZ0ZXIgdGhlIGRvaW5ncyBvZiB0aGUgbGFuZCBvZiBFZ3lwdCwgd2hlcmVpbiB5ZSBkd2VsdCwgc2hhbGwgeWUgbm90IGRvOiBhbmQgYWZ0ZXIgdGhlIGRvaW5ncyBvZiB0aGUgbGFuZCBvZiBDYW5hYW4sIHdoaXRoZXIgSSBicmluZyB5b3UsIHNoYWxsIHllIG5vdCBkbzogbmVpdGhlciBzaGFsbCB5ZSB3YWxrIGluIHRoZWlyIG9yZGluYW5jZXMuClllIHNoYWxsIGRvIG15IGp1ZGdtZW50cywgYW5kIGtlZXAgbWluZSBvcmRpbmFuY2VzLCB0byB3YWxrIHRoZXJlaW46IEkgYW0gdGhlIExPUkQgeW91ciBHb2QuClllIHNoYWxsIHRoZXJlZm9yZSBrZWVwIG15IHN0YXR1dGVzLCBhbmQgbXkganVkZ21lbnRzOiB3aGljaCBpZiBhIG1hbiBkbywgaGUgc2hhbGwgbGl2ZSBpbiB0aGVtOiBJIGFtIHRoZSBMT1JELgpOb25lIG9mIHlvdSBzaGFsbCBhcHByb2FjaCB0byBhbnkgdGhhdCBpcyBuZWFyIG9mIGtpbiB0byBoaW0sIHRvIHVuY292ZXIgdGhlaXIgbmFrZWRuZXNzOiBJIGFtIHRoZSBMT1JELgpUaGUgbmFrZWRuZXNzIG9mIHRoeSBmYXRoZXIsIG9yIHRoZSBuYWtlZG5lc3Mgb2YgdGh5IG1vdGhlciwgc2hhbHQgdGhvdSBub3QgdW5jb3Zlcjogc2hlIGlzIHRoeSBtb3RoZXI7IHRob3Ugc2hhbHQgbm90IHVuY292ZXIgaGVyIG5ha2VkbmVzcy4KVGhlIG5ha2VkbmVzcyBvZiB0aHkgZmF0aGVyJ3Mgd2lmZSBzaGFsdCB0aG91IG5vdCB1bmNvdmVyOiBpdCBpcyB0aHkgZmF0aGVyJ3MgbmFrZWRuZXNzLgpUaGUgbmFrZWRuZXNzIG9mIHRoeSBzaXN0ZXIsIHRoZSBkYXVnaHRlciBvZiB0aHkgZmF0aGVyLCBvciBkYXVnaHRlciBvZiB0aHkgbW90aGVyLCB3aGV0aGVyIHNoZSBiZSBib3JuIGF0IGhvbWUsIG9yIGJvcm4gYWJyb2FkLCBldmVuIHRoZWlyIG5ha2VkbmVzcyB0aG91IHNoYWx0IG5vdCB1bmNvdmVyLgpUaGUgbmFrZWRuZXNzIG9mIHRoeSBzb24ncyBkYXVnaHRlciwgb3Igb2YgdGh5IGRhdWdodGVyJ3MgZGF1Z2h0ZXIsIGV2ZW4gdGhlaXIgbmFrZWRuZXNzIHRob3Ugc2hhbHQgbm90IHVuY292ZXI6IGZvciB0aGVpcnMgaXMgdGhpbmUgb3duIG5ha2VkbmVzcy4KVGhlIG5ha2VkbmVzcyBvZiB0aHkgZmF0aGVyJ3Mgd2lmZSdzIGRhdWdodGVyLCBiZWdvdHRlbiBvZiB0aHkgZmF0aGVyLCBzaGUgaXMgdGh5IHNpc3RlciwgdGhvdSBzaGFsdCBub3QgdW5jb3ZlciBoZXIgbmFrZWRuZXNzLgpUaG91IHNoYWx0IG5vdCB1bmNvdmVyIHRoZSBuYWtlZG5lc3Mgb2YgdGh5IGZhdGhlcidzIHNpc3Rlcjogc2hlIGlzIHRoeSBmYXRoZXIncyBuZWFyIGtpbnN3b21hbi4KVGhvdSBzaGFsdCBub3QgdW5jb3ZlciB0aGUgbmFrZWRuZXNzIG9mIHRoeSBtb3RoZXIncyBzaXN0ZXI6IGZvciBzaGUgaXMgdGh5IG1vdGhlcidzIG5lYXIga2luc3dvbWFuLgpUaG91IHNoYWx0IG5vdCB1bmNvdmVyIHRoZSBuYWtlZG5lc3Mgb2YgdGh5IGZhdGhlcidzIGJyb3RoZXIsIHRob3Ugc2hhbHQgbm90IGFwcHJvYWNoIHRvIGhpcyB3aWZlOiBzaGUgaXMgdGhpbmUgYXVudC4KVGhvdSBzaGFsdCBub3QgdW5jb3ZlciB0aGUgbmFrZWRuZXNzIG9mIHRoeSBkYXVnaHRlciBpbiBsYXc6IHNoZSBpcyB0aHkgc29uJ3Mgd2lmZTsgdGhvdSBzaGFsdCBub3QgdW5jb3ZlciBoZXIgbmFrZWRuZXNzLgpUaG91IHNoYWx0IG5vdCB1bmNvdmVyIHRoZSBuYWtlZG5lc3Mgb2YgdGh5IGJyb3RoZXIncyB3aWZlOiBpdCBpcyB0aHkgYnJvdGhlcidzIG5ha2VkbmVzcy4KVGhvdSBzaGFsdCBub3QgdW5jb3ZlciB0aGUgbmFrZWRuZXNzIG9mIGEgd29tYW4gYW5kIGhlciBkYXVnaHRlciwgbmVpdGhlciBzaGFsdCB0aG91IHRha2UgaGVyIHNvbidzIGRhdWdodGVyLCBvciBoZXIgZGF1Z2h0ZXIncyBkYXVnaHRlciwgdG8gdW5jb3ZlciBoZXIgbmFrZWRuZXNzOyBmb3IgdGhleSBhcmUgaGVyIG5lYXIga2luc3dvbWVuOiBpdCBpcyB3aWNrZWRuZXNzLgpOZWl0aGVyIHNoYWx0IHRob3UgdGFrZSBhIHdpZmUgdG8gaGVyIHNpc3RlciwgdG8gdmV4IGhlciwgdG8gdW5jb3ZlciBoZXIgbmFrZWRuZXNzLCBiZXNpZGUgdGhlIG90aGVyIGluIGhlciBsaWZlIHRpbWUuCkFsc28gdGhvdSBzaGFsdCBub3QgYXBwcm9hY2ggdW50byBhIHdvbWFuIHRvIHVuY292ZXIgaGVyIG5ha2VkbmVzcywgYXMgbG9uZyBhcyBzaGUgaXMgcHV0IGFwYXJ0IGZvciBoZXIgdW5jbGVhbm5lc3MuCk1vcmVvdmVyIHRob3Ugc2hhbHQgbm90IGxpZSBjYXJuYWxseSB3aXRoIHRoeSBuZWlnaGJvdXIncyB3aWZlLCB0byBkZWZpbGUgdGh5c2VsZiB3aXRoIGhlci4KQW5kIHRob3Ugc2hhbHQgbm90IGxldCBhbnkgb2YgdGh5IHNlZWQgcGFzcyB0aHJvdWdoIHRoZSBmaXJlIHRvIE1vbGVjaCwgbmVpdGhlciBzaGFsdCB0aG91IHByb2ZhbmUgdGhlIG5hbWUgb2YgdGh5IEdvZDogSSBhbSB0aGUgTE9SRC4KVGhvdSBzaGFsdCBub3QgbGllIHdpdGggbWFua2luZCwgYXMgd2l0aCB3b21hbmtpbmQ6IGl0IGlzIGFib21pbmF0aW9uLgpOZWl0aGVyIHNoYWx0IHRob3UgbGllIHdpdGggYW55IGJlYXN0IHRvIGRlZmlsZSB0aHlzZWxmIHRoZXJld2l0aDogbmVpdGhlciBzaGFsbCBhbnkgd29tYW4gc3RhbmQgYmVmb3JlIGEgYmVhc3QgdG8gbGllIGRvd24gdGhlcmV0bzogaXQgaXMgY29uZnVzaW9uLgpEZWZpbGUgbm90IHllIHlvdXJzZWx2ZXMgaW4gYW55IG9mIHRoZXNlIHRoaW5nczogZm9yIGluIGFsbCB0aGVzZSB0aGUgbmF0aW9ucyBhcmUgZGVmaWxlZCB3aGljaCBJIGNhc3Qgb3V0IGJlZm9yZSB5b3U6CkFuZCB0aGUgbGFuZCBpcyBkZWZpbGVkOiB0aGVyZWZvcmUgSSBkbyB2aXNpdCB0aGUgaW5pcXVpdHkgdGhlcmVvZiB1cG9uIGl0LCBhbmQgdGhlIGxhbmQgaXRzZWxmIHZvbWl0ZXRoIG91dCBoZXIgaW5oYWJpdGFudHMuClllIHNoYWxsIHRoZXJlZm9yZSBrZWVwIG15IHN0YXR1dGVzIGFuZCBteSBqdWRnbWVudHMsIGFuZCBzaGFsbCBub3QgY29tbWl0IGFueSBvZiB0aGVzZSBhYm9taW5hdGlvbnM7IG5laXRoZXIgYW55IG9mIHlvdXIgb3duIG5hdGlvbiwgbm9yIGFueSBzdHJhbmdlciB0aGF0IHNvam91cm5ldGggYW1vbmcgeW91OgooRm9yIGFsbCB0aGVzZSBhYm9taW5hdGlvbnMgaGF2ZSB0aGUgbWVuIG9mIHRoZSBsYW5kIGRvbmUsIHdoaWNoIHdlcmUgYmVmb3JlIHlvdSwgYW5kIHRoZSBsYW5kIGlzIGRlZmlsZWQ7KQpUaGF0IHRoZSBsYW5kIHNwdWUgbm90IHlvdSBvdXQgYWxzbywgd2hlbiB5ZSBkZWZpbGUgaXQsIGFzIGl0IHNwdWVkIG91dCB0aGUgbmF0aW9ucyB0aGF0IHdlcmUgYmVmb3JlIHlvdS4KRm9yIHdob3NvZXZlciBzaGFsbCBjb21taXQgYW55IG9mIHRoZXNlIGFib21pbmF0aW9ucywgZXZlbiB0aGUgc291bHMgdGhhdCBjb21taXQgdGhlbSBzaGFsbCBiZSBjdXQgb2ZmIGZyb20gYW1vbmcgdGhlaXIgcGVvcGxlLgpUaGVyZWZvcmUgc2hhbGwgeWUga2VlcCBtaW5lIG9yZGluYW5jZSwgdGhhdCB5ZSBjb21taXQgbm90IGFueSBvbmUgb2YgdGhlc2UgYWJvbWluYWJsZSBjdXN0b21zLCB3aGljaCB3ZXJlIGNvbW1pdHRlZCBiZWZvcmUgeW91LCBhbmQgdGhhdCB5ZSBkZWZpbGUgbm90IHlvdXJzZWx2ZXMgdGhlcmVpbjogSSBhbSB0aGUgTE9SRCB5b3VyIEdvZC4KQW5kIHRoZSBMT1JEIHNwYWtlIHVudG8gTW9zZXMsIHNheWluZywKU3BlYWsgdW50byBhbGwgdGhlIGNvbmdyZWdhdGlvbiBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLCBhbmQgc2F5IHVudG8gdGhlbSwgWWUgc2hhbGwgYmUgaG9seTogZm9yIEkgdGhlIExPUkQgeW91ciBHb2QgYW0gaG9seS4KWWUgc2hhbGwgZmVhciBldmVyeSBtYW4gaGlzIG1vdGhlciwgYW5kIGhpcyBmYXRoZXIsIGFuZCBrZWVwIG15IHNhYmJhdGhzOiBJIGFtIHRoZSBMT1JEIHlvdXIgR29kLgpUdXJuIHllIG5vdCB1bnRvIGlkb2xzLCBub3IgbWFrZSB0byB5b3Vyc2VsdmVzIG1vbHRlbiBnb2RzOiBJIGFtIHRoZSBMT1JEIHlvdXIgR29kLgpBbmQgaWYgeWUgb2ZmZXIgYSBzYWNyaWZpY2Ugb2YgcGVhY2Ugb2ZmZXJpbmdzIHVudG8gdGhlIExPUkQsIHllIHNoYWxsIG9mZmVyIGl0IGF0IHlvdXIgb3duIHdpbGwuCkl0IHNoYWxsIGJlIGVhdGVuIHRoZSBzYW1lIGRheSB5ZSBvZmZlciBpdCwgYW5kIG9uIHRoZSBtb3Jyb3c6IGFuZCBpZiBvdWdodCByZW1haW4gdW50aWwgdGhlIHRoaXJkIGRheSwgaXQgc2hhbGwgYmUgYnVybnQgaW4gdGhlIGZpcmUuCkFuZCBpZiBpdCBiZSBlYXRlbiBhdCBhbGwgb24gdGhlIHRoaXJkIGRheSwgaXQgaXMgYWJvbWluYWJsZTsgaXQgc2hhbGwgbm90IGJlIGFjY2VwdGVkLgpUaGVyZWZvcmUgZXZlcnkgb25lIHRoYXQgZWF0ZXRoIGl0IHNoYWxsIGJlYXIgaGlzIGluaXF1aXR5LCBiZWNhdXNlIGhlIGhhdGggcHJvZmFuZWQgdGhlIGhhbGxvd2VkIHRoaW5nIG9mIHRoZSBMT1JEOiBhbmQgdGhhdCBzb3VsIHNoYWxsIGJlIGN1dCBvZmYgZnJvbSBhbW9uZyBoaXMgcGVvcGxlLgpBbmQgd2hlbiB5ZSByZWFwIHRoZSBoYXJ2ZXN0IG9mIHlvdXIgbGFuZCwgdGhvdSBzaGFsdCBub3Qgd2hvbGx5IHJlYXAgdGhlIGNvcm5lcnMgb2YgdGh5IGZpZWxkLCBuZWl0aGVyIHNoYWx0IHRob3UgZ2F0aGVyIHRoZSBnbGVhbmluZ3Mgb2YgdGh5IGhhcnZlc3QuCkFuZCB0aG91IHNoYWx0IG5vdCBnbGVhbiB0aHkgdmluZXlhcmQsIG5laXRoZXIgc2hhbHQgdGhvdSBnYXRoZXIgZXZlcnkgZ3JhcGUgb2YgdGh5IHZpbmV5YXJkOyB0aG91IHNoYWx0IGxlYXZlIHRoZW0gZm9yIHRoZSBwb29yIGFuZCBzdHJhbmdlcjogSSBhbSB0aGUgTE9SRCB5b3VyIEdvZC4KWWUgc2hhbGwgbm90IHN0ZWFsLCBuZWl0aGVyIGRlYWwgZmFsc2VseSwgbmVpdGhlciBsaWUgb25lIHRvIGFub3RoZXIuCkFuZCB5ZSBzaGFsbCBub3Qgc3dlYXIgYnkgbXkgbmFtZSBmYWxzZWx5LCBuZWl0aGVyIHNoYWx0IHRob3UgcHJvZmFuZSB0aGUgbmFtZSBvZiB0aHkgR29kOiBJIGFtIHRoZSBMT1JELgpUaG91IHNoYWx0IG5vdCBkZWZyYXVkIHRoeSBuZWlnaGJvdXIsIG5laXRoZXIgcm9iIGhpbTogdGhlIHdhZ2VzIG9mIGhpbSB0aGF0IGlzIGhpcmVkIHNoYWxsIG5vdCBhYmlkZSB3aXRoIHRoZWUgYWxsIG5pZ2h0IHVudGlsIHRoZSBtb3JuaW5nLgpUaG91IHNoYWx0IG5vdCBjdXJzZSB0aGUgZGVhZiwgbm9yIHB1dCBhIHN0dW1ibGluZ2Jsb2NrIGJlZm9yZSB0aGUgYmxpbmQsIGJ1dCBzaGFsdCBmZWFyIHRoeSBHb2Q6IEkgYW0gdGhlIExPUkQuClllIHNoYWxsIGRvIG5vIHVucmlnaHRlb3VzbmVzcyBpbiBqdWRnbWVudDogdGhvdSBzaGFsdCBub3QgcmVzcGVjdCB0aGUgcGVyc29uIG9mIHRoZSBwb29yLCBub3IgaG9ub3IgdGhlIHBlcnNvbiBvZiB0aGUgbWlnaHR5OiBidXQgaW4gcmlnaHRlb3VzbmVzcyBzaGFsdCB0aG91IGp1ZGdlIHRoeSBuZWlnaGJvdXIuClRob3Ugc2hhbHQgbm90IGdvIHVwIGFuZCBkb3duIGFzIGEgdGFsZWJlYXJlciBhbW9uZyB0aHkgcGVvcGxlOiBuZWl0aGVyIHNoYWx0IHRob3Ugc3RhbmQgYWdhaW5zdCB0aGUgYmxvb2Qgb2YgdGh5IG5laWdoYm91cjsgSSBhbSB0aGUgTE9SRC4KVGhvdSBzaGFsdCBub3QgaGF0ZSB0aHkgYnJvdGhlciBpbiB0aGluZSBoZWFydDogdGhvdSBzaGFsdCBpbiBhbnkgd2lzZSByZWJ1a2UgdGh5IG5laWdoYm91ciwgYW5kIG5vdCBzdWZmZXIgc2luIHVwb24gaGltLgpUaG91IHNoYWx0IG5vdCBhdmVuZ2UsIG5vciBiZWFyIGFueSBncnVkZ2UgYWdhaW5zdCB0aGUgY2hpbGRyZW4gb2YgdGh5IHBlb3BsZSwgYnV0IHRob3Ugc2hhbHQgbG92ZSB0aHkgbmVpZ2hib3VyIGFzIHRoeXNlbGY6IEkgYW0gdGhlIExPUkQuClllIHNoYWxsIGtlZXAgbXkgc3RhdHV0ZXMuIFRob3Ugc2hhbHQgbm90IGxldCB0aHkgY2F0dGxlIGdlbmRlciB3aXRoIGEgZGl2ZXJzZSBraW5kOiB0aG91IHNoYWx0IG5vdCBzb3cgdGh5IGZpZWxkIHdpdGggbWluZ2xlZCBzZWVkOiBuZWl0aGVyIHNoYWxsIGEgZ2FybWVudCBtaW5nbGVkIG9mIGxpbmVuIGFuZCB3b29sbGVuIGNvbWUgdXBvbiB0aGVlLgpBbmQgd2hvc29ldmVyIGxpZXRoIGNhcm5hbGx5IHdpdGggYSB3b21hbiwgdGhhdCBpcyBhIGJvbmRtYWlkLCBiZXRyb3RoZWQgdG8gYW4gaHVzYmFuZCwgYW5kIG5vdCBhdCBhbGwgcmVkZWVtZWQsIG5vciBmcmVlZG9tIGdpdmVuIGhlcjsgc2hlIHNoYWxsIGJlIHNjb3VyZ2VkOyB0aGV5IHNoYWxsIG5vdCBiZSBwdXQgdG8gZGVhdGgsIGJlY2F1c2Ugc2hlIHdhcyBub3QgZnJlZS4KQW5kIGhlIHNoYWxsIGJyaW5nIGhpcyB0cmVzcGFzcyBvZmZlcmluZyB1bnRvIHRoZSBMT1JELCB1bnRvIHRoZSBkb29yIG9mIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBjb25ncmVnYXRpb24sIGV2ZW4gYSByYW0gZm9yIGEgdHJlc3Bhc3Mgb2ZmZXJpbmcuCkFuZCB0aGUgcHJpZXN0IHNoYWxsIG1ha2UgYW4gYXRvbmVtZW50IGZvciBoaW0gd2l0aCB0aGUgcmFtIG9mIHRoZSB0cmVzcGFzcyBvZmZlcmluZyBiZWZvcmUgdGhlIExPUkQgZm9yIGhpcyBzaW4gd2hpY2ggaGUgaGF0aCBkb25lOiBhbmQgdGhlIHNpbiB3aGljaCBoZSBoYXRoIGRvbmUgc2hhbGwgYmUgZm9yZ2l2ZW4gaGltLgpBbmQgd2hlbiB5ZSBzaGFsbCBjb21lIGludG8gdGhlIGxhbmQsIGFuZCBzaGFsbCBoYXZlIHBsYW50ZWQgYWxsIG1hbm5lciBvZiB0cmVlcyBmb3IgZm9vZCwgdGhlbiB5ZSBzaGFsbCBjb3VudCB0aGUgZnJ1aXQgdGhlcmVvZiBhcyB1bmNpcmN1bWNpc2VkOiB0aHJlZSB5ZWFycyBzaGFsbCBpdCBiZSBhcyB1bmNpcmN1bWNpc2VkIHVudG8geW91OiBpdCBzaGFsbCBub3QgYmUgZWF0ZW4gb2YuCkJ1dCBpbiB0aGUgZm91cnRoIHllYXIgYWxsIHRoZSBmcnVpdCB0aGVyZW9mIHNoYWxsIGJlIGhvbHkgdG8gcHJhaXNlIHRoZSBMT1JEIHdpdGhhbC4KQW5kIGluIHRoZSBmaWZ0aCB5ZWFyIHNoYWxsIHllIGVhdCBvZiB0aGUgZnJ1aXQgdGhlcmVvZiwgdGhhdCBpdCBtYXkgeWllbGQgdW50byB5b3UgdGhlIGluY3JlYXNlIHRoZXJlb2Y6IEkgYW0gdGhlIExPUkQgeW91ciBHb2QuClllIHNoYWxsIG5vdCBlYXQgYW55IHRoaW5nIHdpdGggdGhlIGJsb29kOiBuZWl0aGVyIHNoYWxsIHllIHVzZSBlbmNoYW50bWVudCwgbm9yIG9ic2VydmUgdGltZXMuClllIHNoYWxsIG5vdCByb3VuZCB0aGUgY29ybmVycyBvZiB5b3VyIGhlYWRzLCBuZWl0aGVyIHNoYWx0IHRob3UgbWFyIHRoZSBjb3JuZXJzIG9mIHRoeSBiZWFyZC4KWWUgc2hhbGwgbm90IG1ha2UgYW55IGN1dHRpbmdzIGluIHlvdXIgZmxlc2ggZm9yIHRoZSBkZWFkLCBub3IgcHJpbnQgYW55IG1hcmtzIHVwb24geW91OiBJIGFtIHRoZSBMT1JELgpEbyBub3QgcHJvc3RpdHV0ZSB0aHkgZGF1Z2h0ZXIsIHRvIGNhdXNlIGhlciB0byBiZSBhIHdob3JlOyBsZXN0IHRoZSBsYW5kIGZhbGwgdG8gd2hvcmVkb20sIGFuZCB0aGUgbGFuZCBiZWNvbWUgZnVsbCBvZiB3aWNrZWRuZXNzLgpZZSBzaGFsbCBrZWVwIG15IHNhYmJhdGhzLCBhbmQgcmV2ZXJlbmNlIG15IHNhbmN0dWFyeTogSSBhbSB0aGUgTE9SRC4KUmVnYXJkIG5vdCB0aGVtIHRoYXQgaGF2ZSBmYW1pbGlhciBzcGlyaXRzLCBuZWl0aGVyIHNlZWsgYWZ0ZXIgd2l6YXJkcywgdG8gYmUgZGVmaWxlZCBieSB0aGVtOiBJIGFtIHRoZSBMT1JEIHlvdXIgR29kLgpUaG91IHNoYWx0IHJpc2UgdXAgYmVmb3JlIHRoZSBob2FyeSBoZWFkLCBhbmQgaG9ub3VyIHRoZSBmYWNlIG9mIHRoZSBvbGQgbWFuLCBhbmQgZmVhciB0aHkgR29kOiBJIGFtIHRoZSBMT1JELgpBbmQgaWYgYSBzdHJhbmdlciBzb2pvdXJuIHdpdGggdGhlZSBpbiB5b3VyIGxhbmQsIHllIHNoYWxsIG5vdCB2ZXggaGltLgpCdXQgdGhlIHN0cmFuZ2VyIHRoYXQgZHdlbGxldGggd2l0aCB5b3Ugc2hhbGwgYmUgdW50byB5b3UgYXMgb25lIGJvcm4gYW1vbmcgeW91LCBhbmQgdGhvdSBzaGFsdCBsb3ZlIGhpbSBhcyB0aHlzZWxmOyBmb3IgeWUgd2VyZSBzdHJhbmdlcnMgaW4gdGhlIGxhbmQgb2YgRWd5cHQ6IEkgYW0gdGhlIExPUkQgeW91ciBHb2QuClllIHNoYWxsIGRvIG5vIHVucmlnaHRlb3VzbmVzcyBpbiBqdWRnbWVudCwgaW4gbWV0ZXlhcmQsIGluIHdlaWdodCwgb3IgaW4gbWVhc3VyZS4KSnVzdCBiYWxhbmNlcywganVzdCB3ZWlnaHRzLCBhIGp1c3QgZXBoYWgsIGFuZCBhIGp1c3QgaGluLCBzaGFsbCB5ZSBoYXZlOiBJIGFtIHRoZSBMT1JEIHlvdXIgR29kLCB3aGljaCBicm91Z2h0IHlvdSBvdXQgb2YgdGhlIGxhbmQgb2YgRWd5cHQuClRoZXJlZm9yZSBzaGFsbCB5ZSBvYnNlcnZlIGFsbCBteSBzdGF0dXRlcywgYW5kIGFsbCBteSBqdWRnbWVudHMsIGFuZCBkbyB0aGVtOiBJIGFtIHRoZSBMT1JELgpBbmQgdGhlIExPUkQgc3Bha2UgdW50byBNb3Nlcywgc2F5aW5nLApBZ2FpbiwgdGhvdSBzaGFsdCBzYXkgdG8gdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgV2hvc29ldmVyIGhlIGJlIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIG9yIG9mIHRoZSBzdHJhbmdlcnMgdGhhdCBzb2pvdXJuIGluIElzcmFlbCwgdGhhdCBnaXZldGggYW55IG9mIGhpcyBzZWVkIHVudG8gTW9sZWNoOyBoZSBzaGFsbCBzdXJlbHkgYmUgcHV0IHRvIGRlYXRoOiB0aGUgcGVvcGxlIG9mIHRoZSBsYW5kIHNoYWxsIHN0b25lIGhpbSB3aXRoIHN0b25lcy4KQW5kIEkgd2lsbCBzZXQgbXkgZmFjZSBhZ2FpbnN0IHRoYXQgbWFuLCBhbmQgd2lsbCBjdXQgaGltIG9mZiBmcm9tIGFtb25nIGhpcyBwZW9wbGU7IGJlY2F1c2UgaGUgaGF0aCBnaXZlbiBvZiBoaXMgc2VlZCB1bnRvIE1vbGVjaCwgdG8gZGVmaWxlIG15IHNhbmN0dWFyeSwgYW5kIHRvIHByb2ZhbmUgbXkgaG9seSBuYW1lLgpBbmQgaWYgdGhlIHBlb3BsZSBvZiB0aGUgbGFuZCBkbyBhbnkgd2F5cyBoaWRlIHRoZWlyIGV5ZXMgZnJvbSB0aGUgbWFuLCB3aGVuIGhlIGdpdmV0aCBvZiBoaXMgc2VlZCB1bnRvIE1vbGVjaCwgYW5kIGtpbGwgaGltIG5vdDoKVGhlbiBJIHdpbGwgc2V0IG15IGZhY2UgYWdhaW5zdCB0aGF0IG1hbiwgYW5kIGFnYWluc3QgaGlzIGZhbWlseSwgYW5kIHdpbGwgY3V0IGhpbSBvZmYsIGFuZCBhbGwgdGhhdCBnbyBhIHdob3JpbmcgYWZ0ZXIgaGltLCB0byBjb21taXQgd2hvcmVkb20gd2l0aCBNb2xlY2gsIGZyb20gYW1vbmcgdGhlaXIgcGVvcGxlLgpBbmQgdGhlIHNvdWwgdGhhdCB0dXJuZXRoIGFmdGVyIHN1Y2ggYXMgaGF2ZSBmYW1pbGlhciBzcGlyaXRzLCBhbmQgYWZ0ZXIgd2l6YXJkcywgdG8gZ28gYSB3aG9yaW5nIGFmdGVyIHRoZW0sIEkgd2lsbCBldmVuIHNldCBteSBmYWNlIGFnYWluc3QgdGhhdCBzb3VsLCBhbmQgd2lsbCBjdXQgaGltIG9mZiBmcm9tIGFtb25nIGhpcyBwZW9wbGUuClNhbmN0aWZ5IHlvdXJzZWx2ZXMgdGhlcmVmb3JlLCBhbmQgYmUgeWUgaG9seTogZm9yIEkgYW0gdGhlIExPUkQgeW91ciBHb2QuCkFuZCB5ZSBzaGFsbCBrZWVwIG15IHN0YXR1dGVzLCBhbmQgZG8gdGhlbTogSSBhbSB0aGUgTE9SRCB3aGljaCBzYW5jdGlmeSB5b3UuCkZvciBldmVyeSBvbmUgdGhhdCBjdXJzZXRoIGhpcyBmYXRoZXIgb3IgaGlzIG1vdGhlciBzaGFsbCBiZSBzdXJlbHkgcHV0IHRvIGRlYXRoOiBoZSBoYXRoIGN1cnNlZCBoaXMgZmF0aGVyIG9yIGhpcyBtb3RoZXI7IGhpcyBibG9vZCBzaGFsbCBiZSB1cG9uIGhpbS4KQW5kIHRoZSBtYW4gdGhhdCBjb21taXR0ZXRoIGFkdWx0ZXJ5IHdpdGggYW5vdGhlciBtYW4ncyB3aWZlLCBldmVuIGhlIHRoYXQgY29tbWl0dGV0aCBhZHVsdGVyeSB3aXRoIGhpcyBuZWlnaGJvdXIncyB3aWZlLCB0aGUgYWR1bHRlcmVyIGFuZCB0aGUgYWR1bHRlcmVzcyBzaGFsbCBzdXJlbHkgYmUgcHV0IHRvIGRlYXRoLgpBbmQgdGhlIG1hbiB0aGF0IGxpZXRoIHdpdGggaGlzIGZhdGhlcidzIHdpZmUgaGF0aCB1bmNvdmVyZWQgaGlzIGZhdGhlcidzIG5ha2VkbmVzczogYm90aCBvZiB0aGVtIHNoYWxsIHN1cmVseSBiZSBwdXQgdG8gZGVhdGg7IHRoZWlyIGJsb29kIHNoYWxsIGJlIHVwb24gdGhlbS4KQW5kIGlmIGEgbWFuIGxpZSB3aXRoIGhpcyBkYXVnaHRlciBpbiBsYXcsIGJvdGggb2YgdGhlbSBzaGFsbCBzdXJlbHkgYmUgcHV0IHRvIGRlYXRoOiB0aGV5IGhhdmUgd3JvdWdodCBjb25mdXNpb247IHRoZWlyIGJsb29kIHNoYWxsIGJlIHVwb24gdGhlbS4KSWYgYSBtYW4gYWxzbyBsaWUgd2l0aCBtYW5raW5kLCBhcyBoZSBsaWV0aCB3aXRoIGEgd29tYW4sIGJvdGggb2YgdGhlbSBoYXZlIGNvbW1pdHRlZCBhbiBhYm9taW5hdGlvbjogdGhleSBzaGFsbCBzdXJlbHkgYmUgcHV0IHRvIGRlYXRoOyB0aGVpciBibG9vZCBzaGFsbCBiZSB1cG9uIHRoZW0uCkFuZCBpZiBhIG1hbiB0YWtlIGEgd2lmZSBhbmQgaGVyIG1vdGhlciwgaXQgaXMgd2lja2VkbmVzczogdGhleSBzaGFsbCBiZSBidXJudCB3aXRoIGZpcmUsIGJvdGggaGUgYW5kIHRoZXk7IHRoYXQgdGhlcmUgYmUgbm8gd2lja2VkbmVzcyBhbW9uZyB5b3UuCkFuZCBpZiBhIG1hbiBsaWUgd2l0aCBhIGJlYXN0LCBoZSBzaGFsbCBzdXJlbHkgYmUgcHV0IHRvIGRlYXRoOiBhbmQgeWUgc2hhbGwgc2xheSB0aGUgYmVhc3QuCkFuZCBpZiBhIHdvbWFuIGFwcHJvYWNoIHVudG8gYW55IGJlYXN0LCBhbmQgbGllIGRvd24gdGhlcmV0bywgdGhvdSBzaGFsdCBraWxsIHRoZSB3b21hbiwgYW5kIHRoZSBiZWFzdDogdGhleSBzaGFsbCBzdXJlbHkgYmUgcHV0IHRvIGRlYXRoOyB0aGVpciBibG9vZCBzaGFsbCBiZSB1cG9uIHRoZW0uCkFuZCBpZiBhIG1hbiBzaGFsbCB0YWtlIGhpcyBzaXN0ZXIsIGhpcyBmYXRoZXIncyBkYXVnaHRlciwgb3IgaGlzIG1vdGhlcidzIGRhdWdodGVyLCBhbmQgc2VlIGhlciBuYWtlZG5lc3MsIGFuZCBzaGUgc2VlIGhpcyBuYWtlZG5lc3M7IGl0IGlzIGEgd2lja2VkIHRoaW5nOyBhbmQgdGhleSBzaGFsbCBiZSBjdXQgb2ZmIGluIHRoZSBzaWdodCBvZiB0aGVpciBwZW9wbGU6IGhlIGhhdGggdW5jb3ZlcmVkIGhpcyBzaXN0ZXIncyBuYWtlZG5lc3M7IGhlIHNoYWxsIGJlYXIgaGlzIGluaXF1aXR5LgpBbmQgaWYgYSBtYW4gc2hhbGwgbGllIHdpdGggYSB3b21hbiBoYXZpbmcgaGVyIHNpY2tuZXNzLCBhbmQgc2hhbGwgdW5jb3ZlciBoZXIgbmFrZWRuZXNzOyBoZSBoYXRoIGRpc2NvdmVyZWQgaGVyIGZvdW50YWluLCBhbmQgc2hlIGhhdGggdW5jb3ZlcmVkIHRoZSBmb3VudGFpbiBvZiBoZXIgYmxvb2Q6IGFuZCBib3RoIG9mIHRoZW0gc2hhbGwgYmUgY3V0IG9mZiBmcm9tIGFtb25nIHRoZWlyIHBlb3BsZS4KQW5kIHRob3Ugc2hhbHQgbm90IHVuY292ZXIgdGhlIG5ha2VkbmVzcyBvZiB0aHkgbW90aGVyJ3Mgc2lzdGVyLCBub3Igb2YgdGh5IGZhdGhlcidzIHNpc3RlcjogZm9yIGhlIHVuY292ZXJldGggaGlzIG5lYXIga2luOiB0aGV5IHNoYWxsIGJlYXIgdGhlaXIgaW5pcXVpdHkuCkFuZCBpZiBhIG1hbiBzaGFsbCBsaWUgd2l0aCBoaXMgdW5jbGUncyB3aWZlLCBoZSBoYXRoIHVuY292ZXJlZCBoaXMgdW5jbGUncyBuYWtlZG5lc3M6IHRoZXkgc2hhbGwgYmVhciB0aGVpciBzaW47IHRoZXkgc2hhbGwgZGllIGNoaWxkbGVzcy4KQW5kIGlmIGEgbWFuIHNoYWxsIHRha2UgaGlzIGJyb3RoZXIncyB3aWZlLCBpdCBpcyBhbiB1bmNsZWFuIHRoaW5nOiBoZSBoYXRoIHVuY292ZXJlZCBoaXMgYnJvdGhlcidzIG5ha2VkbmVzczsgdGhleSBzaGFsbCBiZSBjaGlsZGxlc3MuClllIHNoYWxsIHRoZXJlZm9yZSBrZWVwIGFsbCBteSBzdGF0dXRlcywgYW5kIGFsbCBteSBqdWRnbWVudHMsIGFuZCBkbyB0aGVtOiB0aGF0IHRoZSBsYW5kLCB3aGl0aGVyIEkgYnJpbmcgeW91IHRvIGR3ZWxsIHRoZXJlaW4sIHNwdWUgeW91IG5vdCBvdXQuCkFuZCB5ZSBzaGFsbCBub3Qgd2FsayBpbiB0aGUgbWFubmVycyBvZiB0aGUgbmF0aW9uLCB3aGljaCBJIGNhc3Qgb3V0IGJlZm9yZSB5b3U6IGZvciB0aGV5IGNvbW1pdHRlZCBhbGwgdGhlc2UgdGhpbmdzLCBhbmQgdGhlcmVmb3JlIEkgYWJob3JyZWQgdGhlbS4KQnV0IEkgaGF2ZSBzYWlkIHVudG8geW91LCBZZSBzaGFsbCBpbmhlcml0IHRoZWlyIGxhbmQsIGFuZCBJIHdpbGwgZ2l2ZSBpdCB1bnRvIHlvdSB0byBwb3NzZXNzIGl0LCBhIGxhbmQgdGhhdCBmbG93ZXRoIHdpdGggbWlsayBhbmQgaG9uZXk6IEkgYW0gdGhlIExPUkQgeW91ciBHb2QsIHdoaWNoIGhhdmUgc2VwYXJhdGVkIHlvdSBmcm9tIG90aGVyIHBlb3BsZS4KWWUgc2hhbGwgdGhlcmVmb3JlIHB1dCBkaWZmZXJlbmNlIGJldHdlZW4gY2xlYW4gYmVhc3RzIGFuZCB1bmNsZWFuLCBhbmQgYmV0d2VlbiB1bmNsZWFuIGZvd2xzIGFuZCBjbGVhbjogYW5kIHllIHNoYWxsIG5vdCBtYWtlIHlvdXIgc291bHMgYWJvbWluYWJsZSBieSBiZWFzdCwgb3IgYnkgZm93bCwgb3IgYnkgYW55IG1hbm5lciBvZiBsaXZpbmcgdGhpbmcgdGhhdCBjcmVlcGV0aCBvbiB0aGUgZ3JvdW5kLCB3aGljaCBJIGhhdmUgc2VwYXJhdGVkIGZyb20geW91IGFzIHVuY2xlYW4uCkFuZCB5ZSBzaGFsbCBiZSBob2x5IHVudG8gbWU6IGZvciBJIHRoZSBMT1JEIGFtIGhvbHksIGFuZCBoYXZlIHNldmVyZWQgeW91IGZyb20gb3RoZXIgcGVvcGxlLCB0aGF0IHllIHNob3VsZCBiZSBtaW5lLgpBIG1hbiBhbHNvIG9yIHdvbWFuIHRoYXQgaGF0aCBhIGZhbWlsaWFyIHNwaXJpdCwgb3IgdGhhdCBpcyBhIHdpemFyZCwgc2hhbGwgc3VyZWx5IGJlIHB1dCB0byBkZWF0aDogdGhleSBzaGFsbCBzdG9uZSB0aGVtIHdpdGggc3RvbmVzOiB0aGVpciBibG9vZCBzaGFsbCBiZSB1cG9uIHRoZW0uCkFuZCB0aGUgTE9SRCBzYWlkIHVudG8gTW9zZXMsIFNwZWFrIHVudG8gdGhlIHByaWVzdHMgdGhlIHNvbnMgb2YgQWFyb24sIGFuZCBzYXkgdW50byB0aGVtLCBUaGVyZSBzaGFsbCBub25lIGJlIGRlZmlsZWQgZm9yIHRoZSBkZWFkIGFtb25nIGhpcyBwZW9wbGU6CkJ1dCBmb3IgaGlzIGtpbiwgdGhhdCBpcyBuZWFyIHVudG8gaGltLCB0aGF0IGlzLCBmb3IgaGlzIG1vdGhlciwgYW5kIGZvciBoaXMgZmF0aGVyLCBhbmQgZm9yIGhpcyBzb24sIGFuZCBmb3IgaGlzIGRhdWdodGVyLCBhbmQgZm9yIGhpcyBicm90aGVyLgpBbmQgZm9yIGhpcyBzaXN0ZXIgYSB2aXJnaW4sIHRoYXQgaXMgbmlnaCB1bnRvIGhpbSwgd2hpY2ggaGF0aCBoYWQgbm8gaHVzYmFuZDsgZm9yIGhlciBtYXkgaGUgYmUgZGVmaWxlZC4KQnV0IGhlIHNoYWxsIG5vdCBkZWZpbGUgaGltc2VsZiwgYmVpbmcgYSBjaGllZiBtYW4gYW1vbmcgaGlzIHBlb3BsZSwgdG8gcHJvZmFuZSBoaW1zZWxmLgpUaGV5IHNoYWxsIG5vdCBtYWtlIGJhbGRuZXNzIHVwb24gdGhlaXIgaGVhZCwgbmVpdGhlciBzaGFsbCB0aGV5IHNoYXZlIG9mZiB0aGUgY29ybmVyIG9mIHRoZWlyIGJlYXJkLCBub3IgbWFrZSBhbnkgY3V0dGluZ3MgaW4gdGhlaXIgZmxlc2guClRoZXkgc2hhbGwgYmUgaG9seSB1bnRvIHRoZWlyIEdvZCwgYW5kIG5vdCBwcm9mYW5lIHRoZSBuYW1lIG9mIHRoZWlyIEdvZDogZm9yIHRoZSBvZmZlcmluZ3Mgb2YgdGhlIExPUkQgbWFkZSBieSBmaXJlLCBhbmQgdGhlIGJyZWFkIG9mIHRoZWlyIEdvZCwgdGhleSBkbyBvZmZlcjogdGhlcmVmb3JlIHRoZXkgc2hhbGwgYmUgaG9seS4KVGhleSBzaGFsbCBub3QgdGFrZSBhIHdpZmUgdGhhdCBpcyBhIHdob3JlLCBvciBwcm9mYW5lOyBuZWl0aGVyIHNoYWxsIHRoZXkgdGFrZSBhIHdvbWFuIHB1dCBhd2F5IGZyb20gaGVyIGh1c2JhbmQ6IGZvciBoZSBpcyBob2x5IHVudG8gaGlzIEdvZC4KVGhvdSBzaGFsdCBzYW5jdGlmeSBoaW0gdGhlcmVmb3JlOyBmb3IgaGUgb2ZmZXJldGggdGhlIGJyZWFkIG9mIHRoeSBHb2Q6IGhlIHNoYWxsIGJlIGhvbHkgdW50byB0aGVlOiBmb3IgSSB0aGUgTE9SRCwgd2hpY2ggc2FuY3RpZnkgeW91LCBhbSBob2x5LgpBbmQgdGhlIGRhdWdodGVyIG9mIGFueSBwcmllc3QsIGlmIHNoZSBwcm9mYW5lIGhlcnNlbGYgYnkgcGxheWluZyB0aGUgd2hvcmUsIHNoZSBwcm9mYW5ldGggaGVyIGZhdGhlcjogc2hlIHNoYWxsIGJlIGJ1cm50IHdpdGggZmlyZS4KQW5kIGhlIHRoYXQgaXMgdGhlIGhpZ2ggcHJpZXN0IGFtb25nIGhpcyBicmV0aHJlbiwgdXBvbiB3aG9zZSBoZWFkIHRoZSBhbm9pbnRpbmcgb2lsIHdhcyBwb3VyZWQsIGFuZCB0aGF0IGlzIGNvbnNlY3JhdGVkIHRvIHB1dCBvbiB0aGUgZ2FybWVudHMsIHNoYWxsIG5vdCB1bmNvdmVyIGhpcyBoZWFkLCBub3IgcmVuZCBoaXMgY2xvdGhlczsKTmVpdGhlciBzaGFsbCBoZSBnbyBpbiB0byBhbnkgZGVhZCBib2R5LCBub3IgZGVmaWxlIGhpbXNlbGYgZm9yIGhpcyBmYXRoZXIsIG9yIGZvciBoaXMgbW90aGVyOwpOZWl0aGVyIHNoYWxsIGhlIGdvIG91dCBvZiB0aGUgc2FuY3R1YXJ5LCBub3IgcHJvZmFuZSB0aGUgc2FuY3R1YXJ5IG9mIGhpcyBHb2Q7IGZvciB0aGUgY3Jvd24gb2YgdGhlIGFub2ludGluZyBvaWwgb2YgaGlzIEdvZCBpcyB1cG9uIGhpbTogSSBhbSB0aGUgTE9SRC4KQW5kIGhlIHNoYWxsIHRha2UgYSB3aWZlIGluIGhlciB2aXJnaW5pdHkuCkEgd2lkb3csIG9yIGEgZGl2b3JjZWQgd29tYW4sIG9yIHByb2ZhbmUsIG9yIGFuIGhhcmxvdCwgdGhlc2Ugc2hhbGwgaGUgbm90IHRha2U6IGJ1dCBoZSBzaGFsbCB0YWtlIGEgdmlyZ2luIG9mIGhpcyBvd24gcGVvcGxlIHRvIHdpZmUuCk5laXRoZXIgc2hhbGwgaGUgcHJvZmFuZSBoaXMgc2VlZCBhbW9uZyBoaXMgcGVvcGxlOiBmb3IgSSB0aGUgTE9SRCBkbyBzYW5jdGlmeSBoaW0uCkFuZCB0aGUgTE9SRCBzcGFrZSB1bnRvIE1vc2VzLCBzYXlpbmcsClNwZWFrIHVudG8gQWFyb24sIHNheWluZywgV2hvc29ldmVyIGhlIGJlIG9mIHRoeSBzZWVkIGluIHRoZWlyIGdlbmVyYXRpb25zIHRoYXQgaGF0aCBhbnkgYmxlbWlzaCwgbGV0IGhpbSBub3QgYXBwcm9hY2ggdG8gb2ZmZXIgdGhlIGJyZWFkIG9mIGhpcyBHb2QuCkZvciB3aGF0c29ldmVyIG1hbiBoZSBiZSB0aGF0IGhhdGggYSBibGVtaXNoLCBoZSBzaGFsbCBub3QgYXBwcm9hY2g6IGEgYmxpbmQgbWFuLCBvciBhIGxhbWUsIG9yIGhlIHRoYXQgaGF0aCBhIGZsYXQgbm9zZSwgb3IgYW55IHRoaW5nIHN1cGVyZmx1b3VzLApPciBhIG1hbiB0aGF0IGlzIGJyb2tlbmZvb3RlZCwgb3IgYnJva2VuaGFuZGVkLApPciBjcm9va2JhY2t0LCBvciBhIGR3YXJmLCBvciB0aGF0IGhhdGggYSBibGVtaXNoIGluIGhpcyBleWUsIG9yIGJlIHNjdXJ2eSwgb3Igc2NhYmJlZCwgb3IgaGF0aCBoaXMgc3RvbmVzIGJyb2tlbjsKTm8gbWFuIHRoYXQgaGF0aCBhIGJsZW1pc2ggb2YgdGhlIHNlZWQgb2YgQWFyb24gdGhlIHByaWVzdCBzaGFsbCBjb21lIG5pZ2ggdG8gb2ZmZXIgdGhlIG9mZmVyaW5ncyBvZiB0aGUgTE9SRCBtYWRlIGJ5IGZpcmU6IGhlIGhhdGggYSBibGVtaXNoOyBoZSBzaGFsbCBub3QgY29tZSBuaWdoIHRvIG9mZmVyIHRoZSBicmVhZCBvZiBoaXMgR29kLgpIZSBzaGFsbCBlYXQgdGhlIGJyZWFkIG9mIGhpcyBHb2QsIGJvdGggb2YgdGhlIG1vc3QgaG9seSwgYW5kIG9mIHRoZSBob2x5LgpPbmx5IGhlIHNoYWxsIG5vdCBnbyBpbiB1bnRvIHRoZSB2YWlsLCBub3IgY29tZSBuaWdoIHVudG8gdGhlIGFsdGFyLCBiZWNhdXNlIGhlIGhhdGggYSBibGVtaXNoOyB0aGF0IGhlIHByb2ZhbmUgbm90IG15IHNhbmN0dWFyaWVzOiBmb3IgSSB0aGUgTE9SRCBkbyBzYW5jdGlmeSB0aGVtLgpBbmQgTW9zZXMgdG9sZCBpdCB1bnRvIEFhcm9uLCBhbmQgdG8gaGlzIHNvbnMsIGFuZCB1bnRvIGFsbCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLgpBbmQgdGhlIExPUkQgc3Bha2UgdW50byBNb3Nlcywgc2F5aW5nLApTcGVhayB1bnRvIEFhcm9uIGFuZCB0byBoaXMgc29ucywgdGhhdCB0aGV5IHNlcGFyYXRlIHRoZW1zZWx2ZXMgZnJvbSB0aGUgaG9seSB0aGluZ3Mgb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgYW5kIHRoYXQgdGhleSBwcm9mYW5lIG5vdCBteSBob2x5IG5hbWUgaW4gdGhvc2UgdGhpbmdzIHdoaWNoIHRoZXkgaGFsbG93IHVudG8gbWU6IEkgYW0gdGhlIExPUkQuClNheSB1bnRvIHRoZW0sIFdob3NvZXZlciBoZSBiZSBvZiBhbGwgeW91ciBzZWVkIGFtb25nIHlvdXIgZ2VuZXJhdGlvbnMsIHRoYXQgZ29ldGggdW50byB0aGUgaG9seSB0aGluZ3MsIHdoaWNoIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgaGFsbG93IHVudG8gdGhlIExPUkQsIGhhdmluZyBoaXMgdW5jbGVhbm5lc3MgdXBvbiBoaW0sIHRoYXQgc291bCBzaGFsbCBiZSBjdXQgb2ZmIGZyb20gbXkgcHJlc2VuY2U6IEkgYW0gdGhlIExPUkQuCldoYXQgbWFuIHNvZXZlciBvZiB0aGUgc2VlZCBvZiBBYXJvbiBpcyBhIGxlcGVyLCBvciBoYXRoIGEgcnVubmluZyBpc3N1ZTsgaGUgc2hhbGwgbm90IGVhdCBvZiB0aGUgaG9seSB0aGluZ3MsIHVudGlsIGhlIGJlIGNsZWFuLiBBbmQgd2hvc28gdG91Y2hldGggYW55IHRoaW5nIHRoYXQgaXMgdW5jbGVhbiBieSB0aGUgZGVhZCwgb3IgYSBtYW4gd2hvc2Ugc2VlZCBnb2V0aCBmcm9tIGhpbTsKT3Igd2hvc29ldmVyIHRvdWNoZXRoIGFueSBjcmVlcGluZyB0aGluZywgd2hlcmVieSBoZSBtYXkgYmUgbWFkZSB1bmNsZWFuLCBvciBhIG1hbiBvZiB3aG9tIGhlIG1heSB0YWtlIHVuY2xlYW5uZXNzLCB3aGF0c29ldmVyIHVuY2xlYW5uZXNzIGhlIGhhdGg7ClRoZSBzb3VsIHdoaWNoIGhhdGggdG91Y2hlZCBhbnkgc3VjaCBzaGFsbCBiZSB1bmNsZWFuIHVudGlsIGV2ZW4sIGFuZCBzaGFsbCBub3QgZWF0IG9mIHRoZSBob2x5IHRoaW5ncywgdW5sZXNzIGhlIHdhc2ggaGlzIGZsZXNoIHdpdGggd2F0ZXIuCkFuZCB3aGVuIHRoZSBzdW4gaXMgZG93biwgaGUgc2hhbGwgYmUgY2xlYW4sIGFuZCBzaGFsbCBhZnRlcndhcmQgZWF0IG9mIHRoZSBob2x5IHRoaW5nczsgYmVjYXVzZSBpdCBpcyBoaXMgZm9vZC4KVGhhdCB3aGljaCBkaWV0aCBvZiBpdHNlbGYsIG9yIGlzIHRvcm4gd2l0aCBiZWFzdHMsIGhlIHNoYWxsIG5vdCBlYXQgdG8gZGVmaWxlIGhpbXNlbGYgdGhlcmV3aXRoOyBJIGFtIHRoZSBMT1JELgpUaGV5IHNoYWxsIHRoZXJlZm9yZSBrZWVwIG1pbmUgb3JkaW5hbmNlLCBsZXN0IHRoZXkgYmVhciBzaW4gZm9yIGl0LCBhbmQgZGllIHRoZXJlZm9yZSwgaWYgdGhleSBwcm9mYW5lIGl0OiBJIHRoZSBMT1JEIGRvIHNhbmN0aWZ5IHRoZW0uClRoZXJlIHNoYWxsIG5vIHN0cmFuZ2VyIGVhdCBvZiB0aGUgaG9seSB0aGluZzogYSBzb2pvdXJuZXIgb2YgdGhlIHByaWVzdCwgb3IgYW4gaGlyZWQgc2VydmFudCwgc2hhbGwgbm90IGVhdCBvZiB0aGUgaG9seSB0aGluZy4KQnV0IGlmIHRoZSBwcmllc3QgYnV5IGFueSBzb3VsIHdpdGggaGlzIG1vbmV5LCBoZSBzaGFsbCBlYXQgb2YgaXQsIGFuZCBoZSB0aGF0IGlzIGJvcm4gaW4gaGlzIGhvdXNlOiB0aGV5IHNoYWxsIGVhdCBvZiBoaXMgbWVhdC4KSWYgdGhlIHByaWVzdCdzIGRhdWdodGVyIGFsc28gYmUgbWFycmllZCB1bnRvIGEgc3RyYW5nZXIsIHNoZSBtYXkgbm90IGVhdCBvZiBhbiBvZmZlcmluZyBvZiB0aGUgaG9seSB0aGluZ3MuCkJ1dCBpZiB0aGUgcHJpZXN0J3MgZGF1Z2h0ZXIgYmUgYSB3aWRvdywgb3IgZGl2b3JjZWQsIGFuZCBoYXZlIG5vIGNoaWxkLCBhbmQgaXMgcmV0dXJuZWQgdW50byBoZXIgZmF0aGVyJ3MgaG91c2UsIGFzIGluIGhlciB5b3V0aCwgc2hlIHNoYWxsIGVhdCBvZiBoZXIgZmF0aGVyJ3MgbWVhdDogYnV0IHRoZXJlIHNoYWxsIGJlIG5vIHN0cmFuZ2VyIGVhdCB0aGVyZW9mLgpBbmQgaWYgYSBtYW4gZWF0IG9mIHRoZSBob2x5IHRoaW5nIHVud2l0dGluZ2x5LCB0aGVuIGhlIHNoYWxsIHB1dCB0aGUgZmlmdGggcGFydCB0aGVyZW9mIHVudG8gaXQsIGFuZCBzaGFsbCBnaXZlIGl0IHVudG8gdGhlIHByaWVzdCB3aXRoIHRoZSBob2x5IHRoaW5nLgpBbmQgdGhleSBzaGFsbCBub3QgcHJvZmFuZSB0aGUgaG9seSB0aGluZ3Mgb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgd2hpY2ggdGhleSBvZmZlciB1bnRvIHRoZSBMT1JEOwpPciBzdWZmZXIgdGhlbSB0byBiZWFyIHRoZSBpbmlxdWl0eSBvZiB0cmVzcGFzcywgd2hlbiB0aGV5IGVhdCB0aGVpciBob2x5IHRoaW5nczogZm9yIEkgdGhlIExPUkQgZG8gc2FuY3RpZnkgdGhlbS4KQW5kIHRoZSBMT1JEIHNwYWtlIHVudG8gTW9zZXMsIHNheWluZywKU3BlYWsgdW50byBBYXJvbiwgYW5kIHRvIGhpcyBzb25zLCBhbmQgdW50byBhbGwgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgYW5kIHNheSB1bnRvIHRoZW0sIFdoYXRzb2V2ZXIgaGUgYmUgb2YgdGhlIGhvdXNlIG9mIElzcmFlbCwgb3Igb2YgdGhlIHN0cmFuZ2VycyBpbiBJc3JhZWwsIHRoYXQgd2lsbCBvZmZlciBoaXMgb2JsYXRpb24gZm9yIGFsbCBoaXMgdm93cywgYW5kIGZvciBhbGwgaGlzIGZyZWV3aWxsIG9mZmVyaW5ncywgd2hpY2ggdGhleSB3aWxsIG9mZmVyIHVudG8gdGhlIExPUkQgZm9yIGEgYnVybnQgb2ZmZXJpbmc7ClllIHNoYWxsIG9mZmVyIGF0IHlvdXIgb3duIHdpbGwgYSBtYWxlIHdpdGhvdXQgYmxlbWlzaCwgb2YgdGhlIGJlZXZlcywgb2YgdGhlIHNoZWVwLCBvciBvZiB0aGUgZ29hdHMuCkJ1dCB3aGF0c29ldmVyIGhhdGggYSBibGVtaXNoLCB0aGF0IHNoYWxsIHllIG5vdCBvZmZlcjogZm9yIGl0IHNoYWxsIG5vdCBiZSBhY2NlcHRhYmxlIGZvciB5b3UuCkFuZCB3aG9zb2V2ZXIgb2ZmZXJldGggYSBzYWNyaWZpY2Ugb2YgcGVhY2Ugb2ZmZXJpbmdzIHVudG8gdGhlIExPUkQgdG8gYWNjb21wbGlzaCBoaXMgdm93LCBvciBhIGZyZWV3aWxsIG9mZmVyaW5nIGluIGJlZXZlcyBvciBzaGVlcCwgaXQgc2hhbGwgYmUgcGVyZmVjdCB0byBiZSBhY2NlcHRlZDsgdGhlcmUgc2hhbGwgYmUgbm8gYmxlbWlzaCB0aGVyZWluLgpCbGluZCwgb3IgYnJva2VuLCBvciBtYWltZWQsIG9yIGhhdmluZyBhIHdlbiwgb3Igc2N1cnZ5LCBvciBzY2FiYmVkLCB5ZSBzaGFsbCBub3Qgb2ZmZXIgdGhlc2UgdW50byB0aGUgTE9SRCwgbm9yIG1ha2UgYW4gb2ZmZXJpbmcgYnkgZmlyZSBvZiB0aGVtIHVwb24gdGhlIGFsdGFyIHVudG8gdGhlIExPUkQuCkVpdGhlciBhIGJ1bGxvY2sgb3IgYSBsYW1iIHRoYXQgaGF0aCBhbnkgdGhpbmcgc3VwZXJmbHVvdXMgb3IgbGFja2luZyBpbiBoaXMgcGFydHMsIHRoYXQgbWF5ZXN0IHRob3Ugb2ZmZXIgZm9yIGEgZnJlZXdpbGwgb2ZmZXJpbmc7IGJ1dCBmb3IgYSB2b3cgaXQgc2hhbGwgbm90IGJlIGFjY2VwdGVkLgpZZSBzaGFsbCBub3Qgb2ZmZXIgdW50byB0aGUgTE9SRCB0aGF0IHdoaWNoIGlzIGJydWlzZWQsIG9yIGNydXNoZWQsIG9yIGJyb2tlbiwgb3IgY3V0OyBuZWl0aGVyIHNoYWxsIHllIG1ha2UgYW55IG9mZmVyaW5nIHRoZXJlb2YgaW4geW91ciBsYW5kLgpOZWl0aGVyIGZyb20gYSBzdHJhbmdlcidzIGhhbmQgc2hhbGwgeWUgb2ZmZXIgdGhlIGJyZWFkIG9mIHlvdXIgR29kIG9mIGFueSBvZiB0aGVzZTsgYmVjYXVzZSB0aGVpciBjb3JydXB0aW9uIGlzIGluIHRoZW0sIGFuZCBibGVtaXNoZXMgYmUgaW4gdGhlbTogdGhleSBzaGFsbCBub3QgYmUgYWNjZXB0ZWQgZm9yIHlvdS4KQW5kIHRoZSBMT1JEIHNwYWtlIHVudG8gTW9zZXMsIHNheWluZywKV2hlbiBhIGJ1bGxvY2ssIG9yIGEgc2hlZXAsIG9yIGEgZ29hdCwgaXMgYnJvdWdodCBmb3J0aCwgdGhlbiBpdCBzaGFsbCBiZSBzZXZlbiBkYXlzIHVuZGVyIHRoZSBkYW07IGFuZCBmcm9tIHRoZSBlaWdodGggZGF5IGFuZCB0aGVuY2Vmb3J0aCBpdCBzaGFsbCBiZSBhY2NlcHRlZCBmb3IgYW4gb2ZmZXJpbmcgbWFkZSBieSBmaXJlIHVudG8gdGhlIExPUkQuCkFuZCB3aGV0aGVyIGl0IGJlIGNvdywgb3IgZXdlLCB5ZSBzaGFsbCBub3Qga2lsbCBpdCBhbmQgaGVyIHlvdW5nIGJvdGggaW4gb25lIGRheS4KQW5kIHdoZW4geWUgd2lsbCBvZmZlciBhIHNhY3JpZmljZSBvZiB0aGFua3NnaXZpbmcgdW50byB0aGUgTE9SRCwgb2ZmZXIgaXQgYXQgeW91ciBvd24gd2lsbC4KT24gdGhlIHNhbWUgZGF5IGl0IHNoYWxsIGJlIGVhdGVuIHVwOyB5ZSBzaGFsbCBsZWF2ZSBub25lIG9mIGl0IHVudGlsIHRoZSBtb3Jyb3c6IEkgYW0gdGhlIExPUkQuClRoZXJlZm9yZSBzaGFsbCB5ZSBrZWVwIG15IGNvbW1hbmRtZW50cywgYW5kIGRvIHRoZW06IEkgYW0gdGhlIExPUkQuCk5laXRoZXIgc2hhbGwgeWUgcHJvZmFuZSBteSBob2x5IG5hbWU7IGJ1dCBJIHdpbGwgYmUgaGFsbG93ZWQgYW1vbmcgdGhlIGNoaWxkcmVuIG9mIElzcmFlbDogSSBhbSB0aGUgTE9SRCB3aGljaCBoYWxsb3cgeW91LApUaGF0IGJyb3VnaHQgeW91IG91dCBvZiB0aGUgbGFuZCBvZiBFZ3lwdCwgdG8gYmUgeW91ciBHb2Q6IEkgYW0gdGhlIExPUkQuCkFuZCB0aGUgTE9SRCBzcGFrZSB1bnRvIE1vc2VzLCBzYXlpbmcsClNwZWFrIHVudG8gdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgYW5kIHNheSB1bnRvIHRoZW0sIENvbmNlcm5pbmcgdGhlIGZlYXN0cyBvZiB0aGUgTE9SRCwgd2hpY2ggeWUgc2hhbGwgcHJvY2xhaW0gdG8gYmUgaG9seSBjb252b2NhdGlvbnMsIGV2ZW4gdGhlc2UgYXJlIG15IGZlYXN0cy4KU2l4IGRheXMgc2hhbGwgd29yayBiZSBkb25lOiBidXQgdGhlIHNldmVudGggZGF5IGlzIHRoZSBzYWJiYXRoIG9mIHJlc3QsIGFuIGhvbHkgY29udm9jYXRpb247IHllIHNoYWxsIGRvIG5vIHdvcmsgdGhlcmVpbjogaXQgaXMgdGhlIHNhYmJhdGggb2YgdGhlIExPUkQgaW4gYWxsIHlvdXIgZHdlbGxpbmdzLgpUaGVzZSBhcmUgdGhlIGZlYXN0cyBvZiB0aGUgTE9SRCwgZXZlbiBob2x5IGNvbnZvY2F0aW9ucywgd2hpY2ggeWUgc2hhbGwgcHJvY2xhaW0gaW4gdGhlaXIgc2Vhc29ucy4KSW4gdGhlIGZvdXJ0ZWVudGggZGF5IG9mIHRoZSBmaXJzdCBtb250aCBhdCBldmVuIGlzIHRoZSBMT1JEJ3MgcGFzc292ZXIuCkFuZCBvbiB0aGUgZmlmdGVlbnRoIGRheSBvZiB0aGUgc2FtZSBtb250aCBpcyB0aGUgZmVhc3Qgb2YgdW5sZWF2ZW5lZCBicmVhZCB1bnRvIHRoZSBMT1JEOiBzZXZlbiBkYXlzIHllIG11c3QgZWF0IHVubGVhdmVuZWQgYnJlYWQuCkluIHRoZSBmaXJzdCBkYXkgeWUgc2hhbGwgaGF2ZSBhbiBob2x5IGNvbnZvY2F0aW9uOiB5ZSBzaGFsbCBkbyBubyBzZXJ2aWxlIHdvcmsgdGhlcmVpbi4KQnV0IHllIHNoYWxsIG9mZmVyIGFuIG9mZmVyaW5nIG1hZGUgYnkgZmlyZSB1bnRvIHRoZSBMT1JEIHNldmVuIGRheXM6IGluIHRoZSBzZXZlbnRoIGRheSBpcyBhbiBob2x5IGNvbnZvY2F0aW9uOiB5ZSBzaGFsbCBkbyBubyBzZXJ2aWxlIHdvcmsgdGhlcmVpbi4KQW5kIHRoZSBMT1JEIHNwYWtlIHVudG8gTW9zZXMsIHNheWluZywKU3BlYWsgdW50byB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLCBhbmQgc2F5IHVudG8gdGhlbSwgV2hlbiB5ZSBiZSBjb21lIGludG8gdGhlIGxhbmQgd2hpY2ggSSBnaXZlIHVudG8geW91LCBhbmQgc2hhbGwgcmVhcCB0aGUgaGFydmVzdCB0aGVyZW9mLCB0aGVuIHllIHNoYWxsIGJyaW5nIGEgc2hlYWYgb2YgdGhlIGZpcnN0ZnJ1aXRzIG9mIHlvdXIgaGFydmVzdCB1bnRvIHRoZSBwcmllc3Q6CkFuZCBoZSBzaGFsbCB3YXZlIHRoZSBzaGVhZiBiZWZvcmUgdGhlIExPUkQsIHRvIGJlIGFjY2VwdGVkIGZvciB5b3U6IG9uIHRoZSBtb3Jyb3cgYWZ0ZXIgdGhlIHNhYmJhdGggdGhlIHByaWVzdCBzaGFsbCB3YXZlIGl0LgpBbmQgeWUgc2hhbGwgb2ZmZXIgdGhhdCBkYXkgd2hlbiB5ZSB3YXZlIHRoZSBzaGVhZiBhbiBoZSBsYW1iIHdpdGhvdXQgYmxlbWlzaCBvZiB0aGUgZmlyc3QgeWVhciBmb3IgYSBidXJudCBvZmZlcmluZyB1bnRvIHRoZSBMT1JELgpBbmQgdGhlIG1lYXQgb2ZmZXJpbmcgdGhlcmVvZiBzaGFsbCBiZSB0d28gdGVudGggZGVhbHMgb2YgZmluZSBmbG91ciBtaW5nbGVkIHdpdGggb2lsLCBhbiBvZmZlcmluZyBtYWRlIGJ5IGZpcmUgdW50byB0aGUgTE9SRCBmb3IgYSBzd2VldCBzYXZvdXI6IGFuZCB0aGUgZHJpbmsgb2ZmZXJpbmcgdGhlcmVvZiBzaGFsbCBiZSBvZiB3aW5lLCB0aGUgZm91cnRoIHBhcnQgb2YgYW4gaGluLgpBbmQgeWUgc2hhbGwgZWF0IG5laXRoZXIgYnJlYWQsIG5vciBwYXJjaGVkIGNvcm4sIG5vciBncmVlbiBlYXJzLCB1bnRpbCB0aGUgc2VsZnNhbWUgZGF5IHRoYXQgeWUgaGF2ZSBicm91Z2h0IGFuIG9mZmVyaW5nIHVudG8geW91ciBHb2Q6IGl0IHNoYWxsIGJlIGEgc3RhdHV0ZSBmb3IgZXZlciB0aHJvdWdob3V0IHlvdXIgZ2VuZXJhdGlvbnMgaW4gYWxsIHlvdXIgZHdlbGxpbmdzLgpBbmQgeWUgc2hhbGwgY291bnQgdW50byB5b3UgZnJvbSB0aGUgbW9ycm93IGFmdGVyIHRoZSBzYWJiYXRoLCBmcm9tIHRoZSBkYXkgdGhhdCB5ZSBicm91Z2h0IHRoZSBzaGVhZiBvZiB0aGUgd2F2ZSBvZmZlcmluZzsgc2V2ZW4gc2FiYmF0aHMgc2hhbGwgYmUgY29tcGxldGU6CkV2ZW4gdW50byB0aGUgbW9ycm93IGFmdGVyIHRoZSBzZXZlbnRoIHNhYmJhdGggc2hhbGwgeWUgbnVtYmVyIGZpZnR5IGRheXM7IGFuZCB5ZSBzaGFsbCBvZmZlciBhIG5ldyBtZWF0IG9mZmVyaW5nIHVudG8gdGhlIExPUkQuClllIHNoYWxsIGJyaW5nIG91dCBvZiB5b3VyIGhhYml0YXRpb25zIHR3byB3YXZlIGxvYXZlcyBvZiB0d28gdGVudGggZGVhbHM7IHRoZXkgc2hhbGwgYmUgb2YgZmluZSBmbG91cjsgdGhleSBzaGFsbCBiZSBiYWtlbiB3aXRoIGxlYXZlbjsgdGhleSBhcmUgdGhlIGZpcnN0ZnJ1aXRzIHVudG8gdGhlIExPUkQuCkFuZCB5ZSBzaGFsbCBvZmZlciB3aXRoIHRoZSBicmVhZCBzZXZlbiBsYW1icyB3aXRob3V0IGJsZW1pc2ggb2YgdGhlIGZpcnN0IHllYXIsIGFuZCBvbmUgeW91bmcgYnVsbG9jaywgYW5kIHR3byByYW1zOiB0aGV5IHNoYWxsIGJlIGZvciBhIGJ1cm50IG9mZmVyaW5nIHVudG8gdGhlIExPUkQsIHdpdGggdGhlaXIgbWVhdCBvZmZlcmluZywgYW5kIHRoZWlyIGRyaW5rIG9mZmVyaW5ncywgZXZlbiBhbiBvZmZlcmluZyBtYWRlIGJ5IGZpcmUsIG9mIHN3ZWV0IHNhdm91ciB1bnRvIHRoZSBMT1JELgpUaGVuIHllIHNoYWxsIHNhY3JpZmljZSBvbmUga2lkIG9mIHRoZSBnb2F0cyBmb3IgYSBzaW4gb2ZmZXJpbmcsIGFuZCB0d28gbGFtYnMgb2YgdGhlIGZpcnN0IHllYXIgZm9yIGEgc2FjcmlmaWNlIG9mIHBlYWNlIG9mZmVyaW5ncy4KQW5kIHRoZSBwcmllc3Qgc2hhbGwgd2F2ZSB0aGVtIHdpdGggdGhlIGJyZWFkIG9mIHRoZSBmaXJzdGZydWl0cyBmb3IgYSB3YXZlIG9mZmVyaW5nIGJlZm9yZSB0aGUgTE9SRCwgd2l0aCB0aGUgdHdvIGxhbWJzOiB0aGV5IHNoYWxsIGJlIGhvbHkgdG8gdGhlIExPUkQgZm9yIHRoZSBwcmllc3QuCkFuZCB5ZSBzaGFsbCBwcm9jbGFpbSBvbiB0aGUgc2VsZnNhbWUgZGF5LCB0aGF0IGl0IG1heSBiZSBhbiBob2x5IGNvbnZvY2F0aW9uIHVudG8geW91OiB5ZSBzaGFsbCBkbyBubyBzZXJ2aWxlIHdvcmsgdGhlcmVpbjogaXQgc2hhbGwgYmUgYSBzdGF0dXRlIGZvciBldmVyIGluIGFsbCB5b3VyIGR3ZWxsaW5ncyB0aHJvdWdob3V0IHlvdXIgZ2VuZXJhdGlvbnMuCkFuZCB3aGVuIHllIHJlYXAgdGhlIGhhcnZlc3Qgb2YgeW91ciBsYW5kLCB0aG91IHNoYWx0IG5vdCBtYWtlIGNsZWFuIHJpZGRhbmNlIG9mIHRoZSBjb3JuZXJzIG9mIHRoeSBmaWVsZCB3aGVuIHRob3UgcmVhcGVzdCwgbmVpdGhlciBzaGFsdCB0aG91IGdhdGhlciBhbnkgZ2xlYW5pbmcgb2YgdGh5IGhhcnZlc3Q6IHRob3Ugc2hhbHQgbGVhdmUgdGhlbSB1bnRvIHRoZSBwb29yLCBhbmQgdG8gdGhlIHN0cmFuZ2VyOiBJIGFtIHRoZSBMT1JEIHlvdXIgR29kLgpBbmQgdGhlIExPUkQgc3Bha2UgdW50byBNb3Nlcywgc2F5aW5nLApTcGVhayB1bnRvIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIHNheWluZywgSW4gdGhlIHNldmVudGggbW9udGgsIGluIHRoZSBmaXJzdCBkYXkgb2YgdGhlIG1vbnRoLCBzaGFsbCB5ZSBoYXZlIGEgc2FiYmF0aCwgYSBtZW1vcmlhbCBvZiBibG93aW5nIG9mIHRydW1wZXRzLCBhbiBob2x5IGNvbnZvY2F0aW9uLgpZZSBzaGFsbCBkbyBubyBzZXJ2aWxlIHdvcmsgdGhlcmVpbjogYnV0IHllIHNoYWxsIG9mZmVyIGFuIG9mZmVyaW5nIG1hZGUgYnkgZmlyZSB1bnRvIHRoZSBMT1JELgpBbmQgdGhlIExPUkQgc3Bha2UgdW50byBNb3Nlcywgc2F5aW5nLApBbHNvIG9uIHRoZSB0ZW50aCBkYXkgb2YgdGhpcyBzZXZlbnRoIG1vbnRoIHRoZXJlIHNoYWxsIGJlIGEgZGF5IG9mIGF0b25lbWVudDogaXQgc2hhbGwgYmUgYW4gaG9seSBjb252b2NhdGlvbiB1bnRvIHlvdTsgYW5kIHllIHNoYWxsIGFmZmxpY3QgeW91ciBzb3VscywgYW5kIG9mZmVyIGFuIG9mZmVyaW5nIG1hZGUgYnkgZmlyZSB1bnRvIHRoZSBMT1JELgpBbmQgeWUgc2hhbGwgZG8gbm8gd29yayBpbiB0aGF0IHNhbWUgZGF5OiBmb3IgaXQgaXMgYSBkYXkgb2YgYXRvbmVtZW50LCB0byBtYWtlIGFuIGF0b25lbWVudCBmb3IgeW91IGJlZm9yZSB0aGUgTE9SRCB5b3VyIEdvZC4KRm9yIHdoYXRzb2V2ZXIgc291bCBpdCBiZSB0aGF0IHNoYWxsIG5vdCBiZSBhZmZsaWN0ZWQgaW4gdGhhdCBzYW1lIGRheSwgaGUgc2hhbGwgYmUgY3V0IG9mZiBmcm9tIGFtb25nIGhpcyBwZW9wbGUuCkFuZCB3aGF0c29ldmVyIHNvdWwgaXQgYmUgdGhhdCBkb2V0aCBhbnkgd29yayBpbiB0aGF0IHNhbWUgZGF5LCB0aGUgc2FtZSBzb3VsIHdpbGwgSSBkZXN0cm95IGZyb20gYW1vbmcgaGlzIHBlb3BsZS4KWWUgc2hhbGwgZG8gbm8gbWFubmVyIG9mIHdvcms6IGl0IHNoYWxsIGJlIGEgc3RhdHV0ZSBmb3IgZXZlciB0aHJvdWdob3V0IHlvdXIgZ2VuZXJhdGlvbnMgaW4gYWxsIHlvdXIgZHdlbGxpbmdzLgpJdCBzaGFsbCBiZSB1bnRvIHlvdSBhIHNhYmJhdGggb2YgcmVzdCwgYW5kIHllIHNoYWxsIGFmZmxpY3QgeW91ciBzb3VsczogaW4gdGhlIG5pbnRoIGRheSBvZiB0aGUgbW9udGggYXQgZXZlbiwgZnJvbSBldmVuIHVudG8gZXZlbiwgc2hhbGwgeWUgY2VsZWJyYXRlIHlvdXIgc2FiYmF0aC4KQW5kIHRoZSBMT1JEIHNwYWtlIHVudG8gTW9zZXMsIHNheWluZywKU3BlYWsgdW50byB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLCBzYXlpbmcsIFRoZSBmaWZ0ZWVudGggZGF5IG9mIHRoaXMgc2V2ZW50aCBtb250aCBzaGFsbCBiZSB0aGUgZmVhc3Qgb2YgdGFiZXJuYWNsZXMgZm9yIHNldmVuIGRheXMgdW50byB0aGUgTE9SRC4KT24gdGhlIGZpcnN0IGRheSBzaGFsbCBiZSBhbiBob2x5IGNvbnZvY2F0aW9uOiB5ZSBzaGFsbCBkbyBubyBzZXJ2aWxlIHdvcmsgdGhlcmVpbi4KU2V2ZW4gZGF5cyB5ZSBzaGFsbCBvZmZlciBhbiBvZmZlcmluZyBtYWRlIGJ5IGZpcmUgdW50byB0aGUgTE9SRDogb24gdGhlIGVpZ2h0aCBkYXkgc2hhbGwgYmUgYW4gaG9seSBjb252b2NhdGlvbiB1bnRvIHlvdTsgYW5kIHllIHNoYWxsIG9mZmVyIGFuIG9mZmVyaW5nIG1hZGUgYnkgZmlyZSB1bnRvIHRoZSBMT1JEOiBpdCBpcyBhIHNvbGVtbiBhc3NlbWJseTsgYW5kIHllIHNoYWxsIGRvIG5vIHNlcnZpbGUgd29yayB0aGVyZWluLgpUaGVzZSBhcmUgdGhlIGZlYXN0cyBvZiB0aGUgTE9SRCwgd2hpY2ggeWUgc2hhbGwgcHJvY2xhaW0gdG8gYmUgaG9seSBjb252b2NhdGlvbnMsIHRvIG9mZmVyIGFuIG9mZmVyaW5nIG1hZGUgYnkgZmlyZSB1bnRvIHRoZSBMT1JELCBhIGJ1cm50IG9mZmVyaW5nLCBhbmQgYSBtZWF0IG9mZmVyaW5nLCBhIHNhY3JpZmljZSwgYW5kIGRyaW5rIG9mZmVyaW5ncywgZXZlcnkgdGhpbmcgdXBvbiBoaXMgZGF5OgpCZXNpZGUgdGhlIHNhYmJhdGhzIG9mIHRoZSBMT1JELCBhbmQgYmVzaWRlIHlvdXIgZ2lmdHMsIGFuZCBiZXNpZGUgYWxsIHlvdXIgdm93cywgYW5kIGJlc2lkZSBhbGwgeW91ciBmcmVld2lsbCBvZmZlcmluZ3MsIHdoaWNoIHllIGdpdmUgdW50byB0aGUgTE9SRC4KQWxzbyBpbiB0aGUgZmlmdGVlbnRoIGRheSBvZiB0aGUgc2V2ZW50aCBtb250aCwgd2hlbiB5ZSBoYXZlIGdhdGhlcmVkIGluIHRoZSBmcnVpdCBvZiB0aGUgbGFuZCwgeWUgc2hhbGwga2VlcCBhIGZlYXN0IHVudG8gdGhlIExPUkQgc2V2ZW4gZGF5czogb24gdGhlIGZpcnN0IGRheSBzaGFsbCBiZSBhIHNhYmJhdGgsIGFuZCBvbiB0aGUgZWlnaHRoIGRheSBzaGFsbCBiZSBhIHNhYmJhdGguCkFuZCB5ZSBzaGFsbCB0YWtlIHlvdSBvbiB0aGUgZmlyc3QgZGF5IHRoZSBib3VnaHMgb2YgZ29vZGx5IHRyZWVzLCBicmFuY2hlcyBvZiBwYWxtIHRyZWVzLCBhbmQgdGhlIGJvdWdocyBvZiB0aGljayB0cmVlcywgYW5kIHdpbGxvd3Mgb2YgdGhlIGJyb29rOyBhbmQgeWUgc2hhbGwgcmVqb2ljZSBiZWZvcmUgdGhlIExPUkQgeW91ciBHb2Qgc2V2ZW4gZGF5cy4KQW5kIHllIHNoYWxsIGtlZXAgaXQgYSBmZWFzdCB1bnRvIHRoZSBMT1JEIHNldmVuIGRheXMgaW4gdGhlIHllYXIuIEl0IHNoYWxsIGJlIGEgc3RhdHV0ZSBmb3IgZXZlciBpbiB5b3VyIGdlbmVyYXRpb25zOiB5ZSBzaGFsbCBjZWxlYnJhdGUgaXQgaW4gdGhlIHNldmVudGggbW9udGguClllIHNoYWxsIGR3ZWxsIGluIGJvb3RocyBzZXZlbiBkYXlzOyBhbGwgdGhhdCBhcmUgSXNyYWVsaXRlcyBib3JuIHNoYWxsIGR3ZWxsIGluIGJvb3RoczoKVGhhdCB5b3VyIGdlbmVyYXRpb25zIG1heSBrbm93IHRoYXQgSSBtYWRlIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgdG8gZHdlbGwgaW4gYm9vdGhzLCB3aGVuIEkgYnJvdWdodCB0aGVtIG91dCBvZiB0aGUgbGFuZCBvZiBFZ3lwdDogSSBhbSB0aGUgTE9SRCB5b3VyIEdvZC4KQW5kIE1vc2VzIGRlY2xhcmVkIHVudG8gdGhlIGNoaWxkcmVuIG9mIElzcmFlbCB0aGUgZmVhc3RzIG9mIHRoZSBMT1JELgpBbmQgdGhlIExPUkQgc3Bha2UgdW50byBNb3Nlcywgc2F5aW5nLApDb21tYW5kIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIHRoYXQgdGhleSBicmluZyB1bnRvIHRoZWUgcHVyZSBvaWwgb2xpdmUgYmVhdGVuIGZvciB0aGUgbGlnaHQsIHRvIGNhdXNlIHRoZSBsYW1wcyB0byBidXJuIGNvbnRpbnVhbGx5LgpXaXRob3V0IHRoZSB2YWlsIG9mIHRoZSB0ZXN0aW1vbnksIGluIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBjb25ncmVnYXRpb24sIHNoYWxsIEFhcm9uIG9yZGVyIGl0IGZyb20gdGhlIGV2ZW5pbmcgdW50byB0aGUgbW9ybmluZyBiZWZvcmUgdGhlIExPUkQgY29udGludWFsbHk6IGl0IHNoYWxsIGJlIGEgc3RhdHV0ZSBmb3IgZXZlciBpbiB5b3VyIGdlbmVyYXRpb25zLgpIZSBzaGFsbCBvcmRlciB0aGUgbGFtcHMgdXBvbiB0aGUgcHVyZSBjYW5kbGVzdGljayBiZWZvcmUgdGhlIExPUkQgY29udGludWFsbHkuCkFuZCB0aG91IHNoYWx0IHRha2UgZmluZSBmbG91ciwgYW5kIGJha2UgdHdlbHZlIGNha2VzIHRoZXJlb2Y6IHR3byB0ZW50aCBkZWFscyBzaGFsbCBiZSBpbiBvbmUgY2FrZS4KQW5kIHRob3Ugc2hhbHQgc2V0IHRoZW0gaW4gdHdvIHJvd3MsIHNpeCBvbiBhIHJvdywgdXBvbiB0aGUgcHVyZSB0YWJsZSBiZWZvcmUgdGhlIExPUkQuCkFuZCB0aG91IHNoYWx0IHB1dCBwdXJlIGZyYW5raW5jZW5zZSB1cG9uIGVhY2ggcm93LCB0aGF0IGl0IG1heSBiZSBvbiB0aGUgYnJlYWQgZm9yIGEgbWVtb3JpYWwsIGV2ZW4gYW4gb2ZmZXJpbmcgbWFkZSBieSBmaXJlIHVudG8gdGhlIExPUkQuCkV2ZXJ5IHNhYmJhdGggaGUgc2hhbGwgc2V0IGl0IGluIG9yZGVyIGJlZm9yZSB0aGUgTE9SRCBjb250aW51YWxseSwgYmVpbmcgdGFrZW4gZnJvbSB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGJ5IGFuIGV2ZXJsYXN0aW5nIGNvdmVuYW50LgpBbmQgaXQgc2hhbGwgYmUgQWFyb24ncyBhbmQgaGlzIHNvbnMnOyBhbmQgdGhleSBzaGFsbCBlYXQgaXQgaW4gdGhlIGhvbHkgcGxhY2U6IGZvciBpdCBpcyBtb3N0IGhvbHkgdW50byBoaW0gb2YgdGhlIG9mZmVyaW5ncyBvZiB0aGUgTE9SRCBtYWRlIGJ5IGZpcmUgYnkgYSBwZXJwZXR1YWwgc3RhdHV0ZS4KQW5kIHRoZSBzb24gb2YgYW4gSXNyYWVsaXRpc2ggd29tYW4sIHdob3NlIGZhdGhlciB3YXMgYW4gRWd5cHRpYW4sIHdlbnQgb3V0IGFtb25nIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWw6IGFuZCB0aGlzIHNvbiBvZiB0aGUgSXNyYWVsaXRpc2ggd29tYW4gYW5kIGEgbWFuIG9mIElzcmFlbCBzdHJvdmUgdG9nZXRoZXIgaW4gdGhlIGNhbXA7CkFuZCB0aGUgSXNyYWVsaXRpc2ggd29tYW4ncyBzb24gYmxhc3BoZW1lZCB0aGUgbmFtZSBvZiB0aGUgTG9yZCwgYW5kIGN1cnNlZC4gQW5kIHRoZXkgYnJvdWdodCBoaW0gdW50byBNb3NlczogKGFuZCBoaXMgbW90aGVyJ3MgbmFtZSB3YXMgU2hlbG9taXRoLCB0aGUgZGF1Z2h0ZXIgb2YgRGlicmksIG9mIHRoZSB0cmliZSBvZiBEYW46KQpBbmQgdGhleSBwdXQgaGltIGluIHdhcmQsIHRoYXQgdGhlIG1pbmQgb2YgdGhlIExPUkQgbWlnaHQgYmUgc2hld2VkIHRoZW0uCkFuZCB0aGUgTE9SRCBzcGFrZSB1bnRvIE1vc2VzLCBzYXlpbmcsCkJyaW5nIGZvcnRoIGhpbSB0aGF0IGhhdGggY3Vyc2VkIHdpdGhvdXQgdGhlIGNhbXA7IGFuZCBsZXQgYWxsIHRoYXQgaGVhcmQgaGltIGxheSB0aGVpciBoYW5kcyB1cG9uIGhpcyBoZWFkLCBhbmQgbGV0IGFsbCB0aGUgY29uZ3JlZ2F0aW9uIHN0b25lIGhpbS4KQW5kIHRob3Ugc2hhbHQgc3BlYWsgdW50byB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLCBzYXlpbmcsIFdob3NvZXZlciBjdXJzZXRoIGhpcyBHb2Qgc2hhbGwgYmVhciBoaXMgc2luLgpBbmQgaGUgdGhhdCBibGFzcGhlbWV0aCB0aGUgbmFtZSBvZiB0aGUgTE9SRCwgaGUgc2hhbGwgc3VyZWx5IGJlIHB1dCB0byBkZWF0aCwgYW5kIGFsbCB0aGUgY29uZ3JlZ2F0aW9uIHNoYWxsIGNlcnRhaW5seSBzdG9uZSBoaW06IGFzIHdlbGwgdGhlIHN0cmFuZ2VyLCBhcyBoZSB0aGF0IGlzIGJvcm4gaW4gdGhlIGxhbmQsIHdoZW4gaGUgYmxhc3BoZW1ldGggdGhlIG5hbWUgb2YgdGhlIExvcmQsIHNoYWxsIGJlIHB1dCB0byBkZWF0aC4KQW5kIGhlIHRoYXQga2lsbGV0aCBhbnkgbWFuIHNoYWxsIHN1cmVseSBiZSBwdXQgdG8gZGVhdGguCkFuZCBoZSB0aGF0IGtpbGxldGggYSBiZWFzdCBzaGFsbCBtYWtlIGl0IGdvb2Q7IGJlYXN0IGZvciBiZWFzdC4KQW5kIGlmIGEgbWFuIGNhdXNlIGEgYmxlbWlzaCBpbiBoaXMgbmVpZ2hib3VyOyBhcyBoZSBoYXRoIGRvbmUsIHNvIHNoYWxsIGl0IGJlIGRvbmUgdG8gaGltOwpCcmVhY2ggZm9yIGJyZWFjaCwgZXllIGZvciBleWUsIHRvb3RoIGZvciB0b290aDogYXMgaGUgaGF0aCBjYXVzZWQgYSBibGVtaXNoIGluIGEgbWFuLCBzbyBzaGFsbCBpdCBiZSBkb25lIHRvIGhpbSBhZ2Fpbi4KQW5kIGhlIHRoYXQga2lsbGV0aCBhIGJlYXN0LCBoZSBzaGFsbCByZXN0b3JlIGl0OiBhbmQgaGUgdGhhdCBraWxsZXRoIGEgbWFuLCBoZSBzaGFsbCBiZSBwdXQgdG8gZGVhdGguClllIHNoYWxsIGhhdmUgb25lIG1hbm5lciBvZiBsYXcsIGFzIHdlbGwgZm9yIHRoZSBzdHJhbmdlciwgYXMgZm9yIG9uZSBvZiB5b3VyIG93biBjb3VudHJ5OiBmb3IgSSBhbSB0aGUgTE9SRCB5b3VyIEdvZC4KQW5kIE1vc2VzIHNwYWtlIHRvIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIHRoYXQgdGhleSBzaG91bGQgYnJpbmcgZm9ydGggaGltIHRoYXQgaGFkIGN1cnNlZCBvdXQgb2YgdGhlIGNhbXAsIGFuZCBzdG9uZSBoaW0gd2l0aCBzdG9uZXMuIEFuZCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGRpZCBhcyB0aGUgTE9SRCBjb21tYW5kZWQgTW9zZXMuCkFuZCB0aGUgTE9SRCBzcGFrZSB1bnRvIE1vc2VzIGluIG1vdW50IFNpbmFpLCBzYXlpbmcsClNwZWFrIHVudG8gdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgYW5kIHNheSB1bnRvIHRoZW0sIFdoZW4geWUgY29tZSBpbnRvIHRoZSBsYW5kIHdoaWNoIEkgZ2l2ZSB5b3UsIHRoZW4gc2hhbGwgdGhlIGxhbmQga2VlcCBhIHNhYmJhdGggdW50byB0aGUgTE9SRC4KU2l4IHllYXJzIHRob3Ugc2hhbHQgc293IHRoeSBmaWVsZCwgYW5kIHNpeCB5ZWFycyB0aG91IHNoYWx0IHBydW5lIHRoeSB2aW5leWFyZCwgYW5kIGdhdGhlciBpbiB0aGUgZnJ1aXQgdGhlcmVvZjsKQnV0IGluIHRoZSBzZXZlbnRoIHllYXIgc2hhbGwgYmUgYSBzYWJiYXRoIG9mIHJlc3QgdW50byB0aGUgbGFuZCwgYSBzYWJiYXRoIGZvciB0aGUgTE9SRDogdGhvdSBzaGFsdCBuZWl0aGVyIHNvdyB0aHkgZmllbGQsIG5vciBwcnVuZSB0aHkgdmluZXlhcmQuClRoYXQgd2hpY2ggZ3Jvd2V0aCBvZiBpdHMgb3duIGFjY29yZCBvZiB0aHkgaGFydmVzdCB0aG91IHNoYWx0IG5vdCByZWFwLCBuZWl0aGVyIGdhdGhlciB0aGUgZ3JhcGVzIG9mIHRoeSB2aW5lIHVuZHJlc3NlZDogZm9yIGl0IGlzIGEgeWVhciBvZiByZXN0IHVudG8gdGhlIGxhbmQuCkFuZCB0aGUgc2FiYmF0aCBvZiB0aGUgbGFuZCBzaGFsbCBiZSBtZWF0IGZvciB5b3U7IGZvciB0aGVlLCBhbmQgZm9yIHRoeSBzZXJ2YW50LCBhbmQgZm9yIHRoeSBtYWlkLCBhbmQgZm9yIHRoeSBoaXJlZCBzZXJ2YW50LCBhbmQgZm9yIHRoeSBzdHJhbmdlciB0aGF0IHNvam91cm5ldGggd2l0aCB0aGVlLgpBbmQgZm9yIHRoeSBjYXR0bGUsIGFuZCBmb3IgdGhlIGJlYXN0IHRoYXQgYXJlIGluIHRoeSBsYW5kLCBzaGFsbCBhbGwgdGhlIGluY3JlYXNlIHRoZXJlb2YgYmUgbWVhdC4KQW5kIHRob3Ugc2hhbHQgbnVtYmVyIHNldmVuIHNhYmJhdGhzIG9mIHllYXJzIHVudG8gdGhlZSwgc2V2ZW4gdGltZXMgc2V2ZW4geWVhcnM7IGFuZCB0aGUgc3BhY2Ugb2YgdGhlIHNldmVuIHNhYmJhdGhzIG9mIHllYXJzIHNoYWxsIGJlIHVudG8gdGhlZSBmb3J0eSBhbmQgbmluZSB5ZWFycy4KVGhlbiBzaGFsdCB0aG91IGNhdXNlIHRoZSB0cnVtcGV0IG9mIHRoZSBqdWJpbGUgdG8gc291bmQgb24gdGhlIHRlbnRoIGRheSBvZiB0aGUgc2V2ZW50aCBtb250aCwgaW4gdGhlIGRheSBvZiBhdG9uZW1lbnQgc2hhbGwgeWUgbWFrZSB0aGUgdHJ1bXBldCBzb3VuZCB0aHJvdWdob3V0IGFsbCB5b3VyIGxhbmQuCkFuZCB5ZSBzaGFsbCBoYWxsb3cgdGhlIGZpZnRpZXRoIHllYXIsIGFuZCBwcm9jbGFpbSBsaWJlcnR5IHRocm91Z2hvdXQgYWxsIHRoZSBsYW5kIHVudG8gYWxsIHRoZSBpbmhhYml0YW50cyB0aGVyZW9mOiBpdCBzaGFsbCBiZSBhIGp1YmlsZSB1bnRvIHlvdTsgYW5kIHllIHNoYWxsIHJldHVybiBldmVyeSBtYW4gdW50byBoaXMgcG9zc2Vzc2lvbiwgYW5kIHllIHNoYWxsIHJldHVybiBldmVyeSBtYW4gdW50byBoaXMgZmFtaWx5LgpBIGp1YmlsZSBzaGFsbCB0aGF0IGZpZnRpZXRoIHllYXIgYmUgdW50byB5b3U6IHllIHNoYWxsIG5vdCBzb3csIG5laXRoZXIgcmVhcCB0aGF0IHdoaWNoIGdyb3dldGggb2YgaXRzZWxmIGluIGl0LCBub3IgZ2F0aGVyIHRoZSBncmFwZXMgaW4gaXQgb2YgdGh5IHZpbmUgdW5kcmVzc2VkLgpGb3IgaXQgaXMgdGhlIGp1YmlsZTsgaXQgc2hhbGwgYmUgaG9seSB1bnRvIHlvdTogeWUgc2hhbGwgZWF0IHRoZSBpbmNyZWFzZSB0aGVyZW9mIG91dCBvZiB0aGUgZmllbGQuCkluIHRoZSB5ZWFyIG9mIHRoaXMganViaWxlIHllIHNoYWxsIHJldHVybiBldmVyeSBtYW4gdW50byBoaXMgcG9zc2Vzc2lvbi4KQW5kIGlmIHRob3Ugc2VsbCBvdWdodCB1bnRvIHRoeSBuZWlnaGJvdXIsIG9yIGJ1eWVzdCBvdWdodCBvZiB0aHkgbmVpZ2hib3VyJ3MgaGFuZCwgeWUgc2hhbGwgbm90IG9wcHJlc3Mgb25lIGFub3RoZXI6CkFjY29yZGluZyB0byB0aGUgbnVtYmVyIG9mIHllYXJzIGFmdGVyIHRoZSBqdWJpbGUgdGhvdSBzaGFsdCBidXkgb2YgdGh5IG5laWdoYm91ciwgYW5kIGFjY29yZGluZyB1bnRvIHRoZSBudW1iZXIgb2YgeWVhcnMgb2YgdGhlIGZydWl0cyBoZSBzaGFsbCBzZWxsIHVudG8gdGhlZToKQWNjb3JkaW5nIHRvIHRoZSBtdWx0aXR1ZGUgb2YgeWVhcnMgdGhvdSBzaGFsdCBpbmNyZWFzZSB0aGUgcHJpY2UgdGhlcmVvZiwgYW5kIGFjY29yZGluZyB0byB0aGUgZmV3bmVzcyBvZiB5ZWFycyB0aG91IHNoYWx0IGRpbWluaXNoIHRoZSBwcmljZSBvZiBpdDogZm9yIGFjY29yZGluZyB0byB0aGUgbnVtYmVyIG9mIHRoZSB5ZWFycyBvZiB0aGUgZnJ1aXRzIGRvdGggaGUgc2VsbCB1bnRvIHRoZWUuClllIHNoYWxsIG5vdCB0aGVyZWZvcmUgb3BwcmVzcyBvbmUgYW5vdGhlcjsgYnV0IHRob3Ugc2hhbHQgZmVhciB0aHkgR29kOmZvciBJIGFtIHRoZSBMT1JEIHlvdXIgR29kLgpXaGVyZWZvcmUgeWUgc2hhbGwgZG8gbXkgc3RhdHV0ZXMsIGFuZCBrZWVwIG15IGp1ZGdtZW50cywgYW5kIGRvIHRoZW07IGFuZCB5ZSBzaGFsbCBkd2VsbCBpbiB0aGUgbGFuZCBpbiBzYWZldHkuCkFuZCB0aGUgbGFuZCBzaGFsbCB5aWVsZCBoZXIgZnJ1aXQsIGFuZCB5ZSBzaGFsbCBlYXQgeW91ciBmaWxsLCBhbmQgZHdlbGwgdGhlcmVpbiBpbiBzYWZldHkuCkFuZCBpZiB5ZSBzaGFsbCBzYXksIFdoYXQgc2hhbGwgd2UgZWF0IHRoZSBzZXZlbnRoIHllYXI/IGJlaG9sZCwgd2Ugc2hhbGwgbm90IHNvdywgbm9yIGdhdGhlciBpbiBvdXIgaW5jcmVhc2U6ClRoZW4gSSB3aWxsIGNvbW1hbmQgbXkgYmxlc3NpbmcgdXBvbiB5b3UgaW4gdGhlIHNpeHRoIHllYXIsIGFuZCBpdCBzaGFsbCBicmluZyBmb3J0aCBmcnVpdCBmb3IgdGhyZWUgeWVhcnMuCkFuZCB5ZSBzaGFsbCBzb3cgdGhlIGVpZ2h0aCB5ZWFyLCBhbmQgZWF0IHlldCBvZiBvbGQgZnJ1aXQgdW50aWwgdGhlIG5pbnRoIHllYXI7IHVudGlsIGhlciBmcnVpdHMgY29tZSBpbiB5ZSBzaGFsbCBlYXQgb2YgdGhlIG9sZCBzdG9yZS4KVGhlIGxhbmQgc2hhbGwgbm90IGJlIHNvbGQgZm9yIGV2ZXI6IGZvciB0aGUgbGFuZCBpcyBtaW5lLCBmb3IgeWUgYXJlIHN0cmFuZ2VycyBhbmQgc29qb3VybmVycyB3aXRoIG1lLgpBbmQgaW4gYWxsIHRoZSBsYW5kIG9mIHlvdXIgcG9zc2Vzc2lvbiB5ZSBzaGFsbCBncmFudCBhIHJlZGVtcHRpb24gZm9yIHRoZSBsYW5kLgpJZiB0aHkgYnJvdGhlciBiZSB3YXhlbiBwb29yLCBhbmQgaGF0aCBzb2xkIGF3YXkgc29tZSBvZiBoaXMgcG9zc2Vzc2lvbiwgYW5kIGlmIGFueSBvZiBoaXMga2luIGNvbWUgdG8gcmVkZWVtIGl0LCB0aGVuIHNoYWxsIGhlIHJlZGVlbSB0aGF0IHdoaWNoIGhpcyBicm90aGVyIHNvbGQuCkFuZCBpZiB0aGUgbWFuIGhhdmUgbm9uZSB0byByZWRlZW0gaXQsIGFuZCBoaW1zZWxmIGJlIGFibGUgdG8gcmVkZWVtIGl0OwpUaGVuIGxldCBoaW0gY291bnQgdGhlIHllYXJzIG9mIHRoZSBzYWxlIHRoZXJlb2YsIGFuZCByZXN0b3JlIHRoZSBvdmVycGx1cyB1bnRvIHRoZSBtYW4gdG8gd2hvbSBoZSBzb2xkIGl0OyB0aGF0IGhlIG1heSByZXR1cm4gdW50byBoaXMgcG9zc2Vzc2lvbi4KQnV0IGlmIGhlIGJlIG5vdCBhYmxlIHRvIHJlc3RvcmUgaXQgdG8gaGltLCB0aGVuIHRoYXQgd2hpY2ggaXMgc29sZCBzaGFsbCByZW1haW4gaW4gdGhlIGhhbmQgb2YgaGltIHRoYXQgaGF0aCBib3VnaHQgaXQgdW50aWwgdGhlIHllYXIgb2YganViaWxlOiBhbmQgaW4gdGhlIGp1YmlsZSBpdCBzaGFsbCBnbyBvdXQsIGFuZCBoZSBzaGFsbCByZXR1cm4gdW50byBoaXMgcG9zc2Vzc2lvbi4KQW5kIGlmIGEgbWFuIHNlbGwgYSBkd2VsbGluZyBob3VzZSBpbiBhIHdhbGxlZCBjaXR5LCB0aGVuIGhlIG1heSByZWRlZW0gaXQgd2l0aGluIGEgd2hvbGUgeWVhciBhZnRlciBpdCBpcyBzb2xkOyB3aXRoaW4gYSBmdWxsIHllYXIgbWF5IGhlIHJlZGVlbSBpdC4KQW5kIGlmIGl0IGJlIG5vdCByZWRlZW1lZCB3aXRoaW4gdGhlIHNwYWNlIG9mIGEgZnVsbCB5ZWFyLCB0aGVuIHRoZSBob3VzZSB0aGF0IGlzIGluIHRoZSB3YWxsZWQgY2l0eSBzaGFsbCBiZSBlc3RhYmxpc2hlZCBmb3IgZXZlciB0byBoaW0gdGhhdCBib3VnaHQgaXQgdGhyb3VnaG91dCBoaXMgZ2VuZXJhdGlvbnM6IGl0IHNoYWxsIG5vdCBnbyBvdXQgaW4gdGhlIGp1YmlsZS4KQnV0IHRoZSBob3VzZXMgb2YgdGhlIHZpbGxhZ2VzIHdoaWNoIGhhdmUgbm8gd2FsbCByb3VuZCBhYm91dCB0aGVtIHNoYWxsIGJlIGNvdW50ZWQgYXMgdGhlIGZpZWxkcyBvZiB0aGUgY291bnRyeTogdGhleSBtYXkgYmUgcmVkZWVtZWQsIGFuZCB0aGV5IHNoYWxsIGdvIG91dCBpbiB0aGUganViaWxlLgpOb3R3aXRoc3RhbmRpbmcgdGhlIGNpdGllcyBvZiB0aGUgTGV2aXRlcywgYW5kIHRoZSBob3VzZXMgb2YgdGhlIGNpdGllcyBvZiB0aGVpciBwb3NzZXNzaW9uLCBtYXkgdGhlIExldml0ZXMgcmVkZWVtIGF0IGFueSB0aW1lLgpBbmQgaWYgYSBtYW4gcHVyY2hhc2Ugb2YgdGhlIExldml0ZXMsIHRoZW4gdGhlIGhvdXNlIHRoYXQgd2FzIHNvbGQsIGFuZCB0aGUgY2l0eSBvZiBoaXMgcG9zc2Vzc2lvbiwgc2hhbGwgZ28gb3V0IGluIHRoZSB5ZWFyIG9mIGp1YmlsZTogZm9yIHRoZSBob3VzZXMgb2YgdGhlIGNpdGllcyBvZiB0aGUgTGV2aXRlcyBhcmUgdGhlaXIgcG9zc2Vzc2lvbiBhbW9uZyB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLgpCdXQgdGhlIGZpZWxkIG9mIHRoZSBzdWJ1cmJzIG9mIHRoZWlyIGNpdGllcyBtYXkgbm90IGJlIHNvbGQ7IGZvciBpdCBpcyB0aGVpciBwZXJwZXR1YWwgcG9zc2Vzc2lvbi4KQW5kIGlmIHRoeSBicm90aGVyIGJlIHdheGVuIHBvb3IsIGFuZCBmYWxsZW4gaW4gZGVjYXkgd2l0aCB0aGVlOyB0aGVuIHRob3Ugc2hhbHQgcmVsaWV2ZSBoaW06IHllYSwgdGhvdWdoIGhlIGJlIGEgc3RyYW5nZXIsIG9yIGEgc29qb3VybmVyOyB0aGF0IGhlIG1heSBsaXZlIHdpdGggdGhlZS4KVGFrZSB0aG91IG5vIHVzdXJ5IG9mIGhpbSwgb3IgaW5jcmVhc2U6IGJ1dCBmZWFyIHRoeSBHb2Q7IHRoYXQgdGh5IGJyb3RoZXIgbWF5IGxpdmUgd2l0aCB0aGVlLgpUaG91IHNoYWx0IG5vdCBnaXZlIGhpbSB0aHkgbW9uZXkgdXBvbiB1c3VyeSwgbm9yIGxlbmQgaGltIHRoeSB2aWN0dWFscyBmb3IgaW5jcmVhc2UuCkkgYW0gdGhlIExPUkQgeW91ciBHb2QsIHdoaWNoIGJyb3VnaHQgeW91IGZvcnRoIG91dCBvZiB0aGUgbGFuZCBvZiBFZ3lwdCwgdG8gZ2l2ZSB5b3UgdGhlIGxhbmQgb2YgQ2FuYWFuLCBhbmQgdG8gYmUgeW91ciBHb2QuCkFuZCBpZiB0aHkgYnJvdGhlciB0aGF0IGR3ZWxsZXRoIGJ5IHRoZWUgYmUgd2F4ZW4gcG9vciwgYW5kIGJlIHNvbGQgdW50byB0aGVlOyB0aG91IHNoYWx0IG5vdCBjb21wZWwgaGltIHRvIHNlcnZlIGFzIGEgYm9uZHNlcnZhbnQ6CkJ1dCBhcyBhbiBoaXJlZCBzZXJ2YW50LCBhbmQgYXMgYSBzb2pvdXJuZXIsIGhlIHNoYWxsIGJlIHdpdGggdGhlZSwgYW5kIHNoYWxsIHNlcnZlIHRoZWUgdW50byB0aGUgeWVhciBvZiBqdWJpbGUuCkFuZCB0aGVuIHNoYWxsIGhlIGRlcGFydCBmcm9tIHRoZWUsIGJvdGggaGUgYW5kIGhpcyBjaGlsZHJlbiB3aXRoIGhpbSwgYW5kIHNoYWxsIHJldHVybiB1bnRvIGhpcyBvd24gZmFtaWx5LCBhbmQgdW50byB0aGUgcG9zc2Vzc2lvbiBvZiBoaXMgZmF0aGVycyBzaGFsbCBoZSByZXR1cm4uCkZvciB0aGV5IGFyZSBteSBzZXJ2YW50cywgd2hpY2ggSSBicm91Z2h0IGZvcnRoIG91dCBvZiB0aGUgbGFuZCBvZiBFZ3lwdDogdGhleSBzaGFsbCBub3QgYmUgc29sZCBhcyBib25kbWVuLgpUaG91IHNoYWx0IG5vdCBydWxlIG92ZXIgaGltIHdpdGggcmlnb3VyOyBidXQgc2hhbHQgZmVhciB0aHkgR29kLgpCb3RoIHRoeSBib25kbWVuLCBhbmQgdGh5IGJvbmRtYWlkcywgd2hpY2ggdGhvdSBzaGFsdCBoYXZlLCBzaGFsbCBiZSBvZiB0aGUgaGVhdGhlbiB0aGF0IGFyZSByb3VuZCBhYm91dCB5b3U7IG9mIHRoZW0gc2hhbGwgeWUgYnV5IGJvbmRtZW4gYW5kIGJvbmRtYWlkcy4KTW9yZW92ZXIgb2YgdGhlIGNoaWxkcmVuIG9mIHRoZSBzdHJhbmdlcnMgdGhhdCBkbyBzb2pvdXJuIGFtb25nIHlvdSwgb2YgdGhlbSBzaGFsbCB5ZSBidXksIGFuZCBvZiB0aGVpciBmYW1pbGllcyB0aGF0IGFyZSB3aXRoIHlvdSwgd2hpY2ggdGhleSBiZWdhdCBpbiB5b3VyIGxhbmQ6IGFuZCB0aGV5IHNoYWxsIGJlIHlvdXIgcG9zc2Vzc2lvbi4KQW5kIHllIHNoYWxsIHRha2UgdGhlbSBhcyBhbiBpbmhlcml0YW5jZSBmb3IgeW91ciBjaGlsZHJlbiBhZnRlciB5b3UsIHRvIGluaGVyaXQgdGhlbSBmb3IgYSBwb3NzZXNzaW9uOyB0aGV5IHNoYWxsIGJlIHlvdXIgYm9uZG1lbiBmb3IgZXZlcjogYnV0IG92ZXIgeW91ciBicmV0aHJlbiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLCB5ZSBzaGFsbCBub3QgcnVsZSBvbmUgb3ZlciBhbm90aGVyIHdpdGggcmlnb3VyLgpBbmQgaWYgYSBzb2pvdXJuZXIgb3Igc3RyYW5nZXIgd2F4IHJpY2ggYnkgdGhlZSwgYW5kIHRoeSBicm90aGVyIHRoYXQgZHdlbGxldGggYnkgaGltIHdheCBwb29yLCBhbmQgc2VsbCBoaW1zZWxmIHVudG8gdGhlIHN0cmFuZ2VyIG9yIHNvam91cm5lciBieSB0aGVlLCBvciB0byB0aGUgc3RvY2sgb2YgdGhlIHN0cmFuZ2VyJ3MgZmFtaWx5OgpBZnRlciB0aGF0IGhlIGlzIHNvbGQgaGUgbWF5IGJlIHJlZGVlbWVkIGFnYWluOyBvbmUgb2YgaGlzIGJyZXRocmVuIG1heSByZWRlZW0gaGltOgpFaXRoZXIgaGlzIHVuY2xlLCBvciBoaXMgdW5jbGUncyBzb24sIG1heSByZWRlZW0gaGltLCBvciBhbnkgdGhhdCBpcyBuaWdoIG9mIGtpbiB1bnRvIGhpbSBvZiBoaXMgZmFtaWx5IG1heSByZWRlZW0gaGltOyBvciBpZiBoZSBiZSBhYmxlLCBoZSBtYXkgcmVkZWVtIGhpbXNlbGYuCkFuZCBoZSBzaGFsbCByZWNrb24gd2l0aCBoaW0gdGhhdCBib3VnaHQgaGltIGZyb20gdGhlIHllYXIgdGhhdCBoZSB3YXMgc29sZCB0byBoaW0gdW50byB0aGUgeWVhciBvZiBqdWJpbGU6IGFuZCB0aGUgcHJpY2Ugb2YgaGlzIHNhbGUgc2hhbGwgYmUgYWNjb3JkaW5nIHVudG8gdGhlIG51bWJlciBvZiB5ZWFycywgYWNjb3JkaW5nIHRvIHRoZSB0aW1lIG9mIGFuIGhpcmVkIHNlcnZhbnQgc2hhbGwgaXQgYmUgd2l0aCBoaW0uCklmIHRoZXJlIGJlIHlldCBtYW55IHllYXJzIGJlaGluZCwgYWNjb3JkaW5nIHVudG8gdGhlbSBoZSBzaGFsbCBnaXZlIGFnYWluIHRoZSBwcmljZSBvZiBoaXMgcmVkZW1wdGlvbiBvdXQgb2YgdGhlIG1vbmV5IHRoYXQgaGUgd2FzIGJvdWdodCBmb3IuCkFuZCBpZiB0aGVyZSByZW1haW4gYnV0IGZldyB5ZWFycyB1bnRvIHRoZSB5ZWFyIG9mIGp1YmlsZSwgdGhlbiBoZSBzaGFsbCBjb3VudCB3aXRoIGhpbSwgYW5kIGFjY29yZGluZyB1bnRvIGhpcyB5ZWFycyBzaGFsbCBoZSBnaXZlIGhpbSBhZ2FpbiB0aGUgcHJpY2Ugb2YgaGlzIHJlZGVtcHRpb24uCkFuZCBhcyBhIHllYXJseSBoaXJlZCBzZXJ2YW50IHNoYWxsIGhlIGJlIHdpdGggaGltOiBhbmQgdGhlIG90aGVyIHNoYWxsIG5vdCBydWxlIHdpdGggcmlnb3VyIG92ZXIgaGltIGluIHRoeSBzaWdodC4KQW5kIGlmIGhlIGJlIG5vdCByZWRlZW1lZCBpbiB0aGVzZSB5ZWFycywgdGhlbiBoZSBzaGFsbCBnbyBvdXQgaW4gdGhlIHllYXIgb2YganViaWxlLCBib3RoIGhlLCBhbmQgaGlzIGNoaWxkcmVuIHdpdGggaGltLgpGb3IgdW50byBtZSB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGFyZSBzZXJ2YW50czsgdGhleSBhcmUgbXkgc2VydmFudHMgd2hvbSBJIGJyb3VnaHQgZm9ydGggb3V0IG9mIHRoZSBsYW5kIG9mIEVneXB0OiBJIGFtIHRoZSBMT1JEIHlvdXIgR29kLgpZZSBzaGFsbCBtYWtlIHlvdSBubyBpZG9scyBub3IgZ3JhdmVuIGltYWdlLCBuZWl0aGVyIHJlYXIgeW91IHVwIGEgc3RhbmRpbmcgaW1hZ2UsIG5laXRoZXIgc2hhbGwgeWUgc2V0IHVwIGFueSBpbWFnZSBvZiBzdG9uZSBpbiB5b3VyIGxhbmQsIHRvIGJvdyBkb3duIHVudG8gaXQ6IGZvciBJIGFtIHRoZSBMT1JEIHlvdXIgR29kLgpZZSBzaGFsbCBrZWVwIG15IHNhYmJhdGhzLCBhbmQgcmV2ZXJlbmNlIG15IHNhbmN0dWFyeTogSSBhbSB0aGUgTE9SRC4KSWYgeWUgd2FsayBpbiBteSBzdGF0dXRlcywgYW5kIGtlZXAgbXkgY29tbWFuZG1lbnRzLCBhbmQgZG8gdGhlbTsKVGhlbiBJIHdpbGwgZ2l2ZSB5b3UgcmFpbiBpbiBkdWUgc2Vhc29uLCBhbmQgdGhlIGxhbmQgc2hhbGwgeWllbGQgaGVyIGluY3JlYXNlLCBhbmQgdGhlIHRyZWVzIG9mIHRoZSBmaWVsZCBzaGFsbCB5aWVsZCB0aGVpciBmcnVpdC4KQW5kIHlvdXIgdGhyZXNoaW5nIHNoYWxsIHJlYWNoIHVudG8gdGhlIHZpbnRhZ2UsIGFuZCB0aGUgdmludGFnZSBzaGFsbCByZWFjaCB1bnRvIHRoZSBzb3dpbmcgdGltZTogYW5kIHllIHNoYWxsIGVhdCB5b3VyIGJyZWFkIHRvIHRoZSBmdWxsLCBhbmQgZHdlbGwgaW4geW91ciBsYW5kIHNhZmVseS4KQW5kIEkgd2lsbCBnaXZlIHBlYWNlIGluIHRoZSBsYW5kLCBhbmQgeWUgc2hhbGwgbGllIGRvd24sIGFuZCBub25lIHNoYWxsIG1ha2UgeW91IGFmcmFpZDogYW5kIEkgd2lsbCByaWQgZXZpbCBiZWFzdHMgb3V0IG9mIHRoZSBsYW5kLCBuZWl0aGVyIHNoYWxsIHRoZSBzd29yZCBnbyB0aHJvdWdoIHlvdXIgbGFuZC4KQW5kIHllIHNoYWxsIGNoYXNlIHlvdXIgZW5lbWllcywgYW5kIHRoZXkgc2hhbGwgZmFsbCBiZWZvcmUgeW91IGJ5IHRoZSBzd29yZC4KQW5kIGZpdmUgb2YgeW91IHNoYWxsIGNoYXNlIGFuIGh1bmRyZWQsIGFuZCBhbiBodW5kcmVkIG9mIHlvdSBzaGFsbCBwdXQgdGVuIHRob3VzYW5kIHRvIGZsaWdodDogYW5kIHlvdXIgZW5lbWllcyBzaGFsbCBmYWxsIGJlZm9yZSB5b3UgYnkgdGhlIHN3b3JkLgpGb3IgSSB3aWxsIGhhdmUgcmVzcGVjdCB1bnRvIHlvdSwgYW5kIG1ha2UgeW91IGZydWl0ZnVsLCBhbmQgbXVsdGlwbHkgeW91LCBhbmQgZXN0YWJsaXNoIG15IGNvdmVuYW50IHdpdGggeW91LgpBbmQgeWUgc2hhbGwgZWF0IG9sZCBzdG9yZSwgYW5kIGJyaW5nIGZvcnRoIHRoZSBvbGQgYmVjYXVzZSBvZiB0aGUgbmV3LgpBbmQgSSBzZXQgbXkgdGFiZXJuYWNsZSBhbW9uZyB5b3U6IGFuZCBteSBzb3VsIHNoYWxsIG5vdCBhYmhvciB5b3UuCkFuZCBJIHdpbGwgd2FsayBhbW9uZyB5b3UsIGFuZCB3aWxsIGJlIHlvdXIgR29kLCBhbmQgeWUgc2hhbGwgYmUgbXkgcGVvcGxlLgpJIGFtIHRoZSBMT1JEIHlvdXIgR29kLCB3aGljaCBicm91Z2h0IHlvdSBmb3J0aCBvdXQgb2YgdGhlIGxhbmQgb2YgRWd5cHQsIHRoYXQgeWUgc2hvdWxkIG5vdCBiZSB0aGVpciBib25kbWVuOyBhbmQgSSBoYXZlIGJyb2tlbiB0aGUgYmFuZHMgb2YgeW91ciB5b2tlLCBhbmQgbWFkZSB5b3UgZ28gdXByaWdodC4KQnV0IGlmIHllIHdpbGwgbm90IGhlYXJrZW4gdW50byBtZSwgYW5kIHdpbGwgbm90IGRvIGFsbCB0aGVzZSBjb21tYW5kbWVudHM7CkFuZCBpZiB5ZSBzaGFsbCBkZXNwaXNlIG15IHN0YXR1dGVzLCBvciBpZiB5b3VyIHNvdWwgYWJob3IgbXkganVkZ21lbnRzLCBzbyB0aGF0IHllIHdpbGwgbm90IGRvIGFsbCBteSBjb21tYW5kbWVudHMsIGJ1dCB0aGF0IHllIGJyZWFrIG15IGNvdmVuYW50OgpJIGFsc28gd2lsbCBkbyB0aGlzIHVudG8geW91OyBJIHdpbGwgZXZlbiBhcHBvaW50IG92ZXIgeW91IHRlcnJvciwgY29uc3VtcHRpb24sIGFuZCB0aGUgYnVybmluZyBhZ3VlLCB0aGF0IHNoYWxsIGNvbnN1bWUgdGhlIGV5ZXMsIGFuZCBjYXVzZSBzb3Jyb3cgb2YgaGVhcnQ6IGFuZCB5ZSBzaGFsbCBzb3cgeW91ciBzZWVkIGluIHZhaW4sIGZvciB5b3VyIGVuZW1pZXMgc2hhbGwgZWF0IGl0LgpBbmQgSSB3aWxsIHNldCBteSBmYWNlIGFnYWluc3QgeW91LCBhbmQgeWUgc2hhbGwgYmUgc2xhaW4gYmVmb3JlIHlvdXIgZW5lbWllczogdGhleSB0aGF0IGhhdGUgeW91IHNoYWxsIHJlaWduIG92ZXIgeW91OyBhbmQgeWUgc2hhbGwgZmxlZSB3aGVuIG5vbmUgcHVyc3VldGggeW91LgpBbmQgaWYgeWUgd2lsbCBub3QgeWV0IGZvciBhbGwgdGhpcyBoZWFya2VuIHVudG8gbWUsIHRoZW4gSSB3aWxsIHB1bmlzaCB5b3Ugc2V2ZW4gdGltZXMgbW9yZSBmb3IgeW91ciBzaW5zLgpBbmQgSSB3aWxsIGJyZWFrIHRoZSBwcmlkZSBvZiB5b3VyIHBvd2VyOyBhbmQgSSB3aWxsIG1ha2UgeW91ciBoZWF2ZW4gYXMgaXJvbiwgYW5kIHlvdXIgZWFydGggYXMgYnJhc3M6CkFuZCB5b3VyIHN0cmVuZ3RoIHNoYWxsIGJlIHNwZW50IGluIHZhaW46IGZvciB5b3VyIGxhbmQgc2hhbGwgbm90IHlpZWxkIGhlciBpbmNyZWFzZSwgbmVpdGhlciBzaGFsbCB0aGUgdHJlZXMgb2YgdGhlIGxhbmQgeWllbGQgdGhlaXIgZnJ1aXRzLgpBbmQgaWYgeWUgd2FsayBjb250cmFyeSB1bnRvIG1lLCBhbmQgd2lsbCBub3QgaGVhcmtlbiB1bnRvIG1lOyBJIHdpbGwgYnJpbmcgc2V2ZW4gdGltZXMgbW9yZSBwbGFndWVzIHVwb24geW91IGFjY29yZGluZyB0byB5b3VyIHNpbnMuCkkgd2lsbCBhbHNvIHNlbmQgd2lsZCBiZWFzdHMgYW1vbmcgeW91LCB3aGljaCBzaGFsbCByb2IgeW91IG9mIHlvdXIgY2hpbGRyZW4sIGFuZCBkZXN0cm95IHlvdXIgY2F0dGxlLCBhbmQgbWFrZSB5b3UgZmV3IGluIG51bWJlcjsgYW5kIHlvdXIgaGlnaCB3YXlzIHNoYWxsIGJlIGRlc29sYXRlLgpBbmQgaWYgeWUgd2lsbCBub3QgYmUgcmVmb3JtZWQgYnkgbWUgYnkgdGhlc2UgdGhpbmdzLCBidXQgd2lsbCB3YWxrIGNvbnRyYXJ5IHVudG8gbWU7ClRoZW4gd2lsbCBJIGFsc28gd2FsayBjb250cmFyeSB1bnRvIHlvdSwgYW5kIHdpbGwgcHVuaXNoIHlvdSB5ZXQgc2V2ZW4gdGltZXMgZm9yIHlvdXIgc2lucy4KQW5kIEkgd2lsbCBicmluZyBhIHN3b3JkIHVwb24geW91LCB0aGF0IHNoYWxsIGF2ZW5nZSB0aGUgcXVhcnJlbCBvZiBteSBjb3ZlbmFudDogYW5kIHdoZW4geWUgYXJlIGdhdGhlcmVkIHRvZ2V0aGVyIHdpdGhpbiB5b3VyIGNpdGllcywgSSB3aWxsIHNlbmQgdGhlIHBlc3RpbGVuY2UgYW1vbmcgeW91OyBhbmQgeWUgc2hhbGwgYmUgZGVsaXZlcmVkIGludG8gdGhlIGhhbmQgb2YgdGhlIGVuZW15LgpBbmQgd2hlbiBJIGhhdmUgYnJva2VuIHRoZSBzdGFmZiBvZiB5b3VyIGJyZWFkLCB0ZW4gd29tZW4gc2hhbGwgYmFrZSB5b3VyIGJyZWFkIGluIG9uZSBvdmVuLCBhbmQgdGhleSBzaGFsbCBkZWxpdmVyIHlvdSB5b3VyIGJyZWFkIGFnYWluIGJ5IHdlaWdodDogYW5kIHllIHNoYWxsIGVhdCwgYW5kIG5vdCBiZSBzYXRpc2ZpZWQuCkFuZCBpZiB5ZSB3aWxsIG5vdCBmb3IgYWxsIHRoaXMgaGVhcmtlbiB1bnRvIG1lLCBidXQgd2FsayBjb250cmFyeSB1bnRvIG1lOwpUaGVuIEkgd2lsbCB3YWxrIGNvbnRyYXJ5IHVudG8geW91IGFsc28gaW4gZnVyeTsgYW5kIEksIGV2ZW4gSSwgd2lsbCBjaGFzdGlzZSB5b3Ugc2V2ZW4gdGltZXMgZm9yIHlvdXIgc2lucy4KQW5kIHllIHNoYWxsIGVhdCB0aGUgZmxlc2ggb2YgeW91ciBzb25zLCBhbmQgdGhlIGZsZXNoIG9mIHlvdXIgZGF1Z2h0ZXJzIHNoYWxsIHllIGVhdC4KQW5kIEkgd2lsbCBkZXN0cm95IHlvdXIgaGlnaCBwbGFjZXMsIGFuZCBjdXQgZG93biB5b3VyIGltYWdlcywgYW5kIGNhc3QgeW91ciBjYXJjYXNlcyB1cG9uIHRoZSBjYXJjYXNlcyBvZiB5b3VyIGlkb2xzLCBhbmQgbXkgc291bCBzaGFsbCBhYmhvciB5b3UuCkFuZCBJIHdpbGwgbWFrZSB5b3VyIGNpdGllcyB3YXN0ZSwgYW5kIGJyaW5nIHlvdXIgc2FuY3R1YXJpZXMgdW50byBkZXNvbGF0aW9uLCBhbmQgSSB3aWxsIG5vdCBzbWVsbCB0aGUgc2F2b3VyIG9mIHlvdXIgc3dlZXQgb2RvdXJzLgpBbmQgSSB3aWxsIGJyaW5nIHRoZSBsYW5kIGludG8gZGVzb2xhdGlvbjogYW5kIHlvdXIgZW5lbWllcyB3aGljaCBkd2VsbCB0aGVyZWluIHNoYWxsIGJlIGFzdG9uaXNoZWQgYXQgaXQuCkFuZCBJIHdpbGwgc2NhdHRlciB5b3UgYW1vbmcgdGhlIGhlYXRoZW4sIGFuZCB3aWxsIGRyYXcgb3V0IGEgc3dvcmQgYWZ0ZXIgeW91OiBhbmQgeW91ciBsYW5kIHNoYWxsIGJlIGRlc29sYXRlLCBhbmQgeW91ciBjaXRpZXMgd2FzdGUuClRoZW4gc2hhbGwgdGhlIGxhbmQgZW5qb3kgaGVyIHNhYmJhdGhzLCBhcyBsb25nIGFzIGl0IGxpZXRoIGRlc29sYXRlLCBhbmQgeWUgYmUgaW4geW91ciBlbmVtaWVzJyBsYW5kOyBldmVuIHRoZW4gc2hhbGwgdGhlIGxhbmQgcmVzdCwgYW5kIGVuam95IGhlciBzYWJiYXRocy4KQXMgbG9uZyBhcyBpdCBsaWV0aCBkZXNvbGF0ZSBpdCBzaGFsbCByZXN0OyBiZWNhdXNlIGl0IGRpZCBub3QgcmVzdCBpbiB5b3VyIHNhYmJhdGhzLCB3aGVuIHllIGR3ZWx0IHVwb24gaXQuCkFuZCB1cG9uIHRoZW0gdGhhdCBhcmUgbGVmdCBhbGl2ZSBvZiB5b3UgSSB3aWxsIHNlbmQgYSBmYWludG5lc3MgaW50byB0aGVpciBoZWFydHMgaW4gdGhlIGxhbmRzIG9mIHRoZWlyIGVuZW1pZXM7IGFuZCB0aGUgc291bmQgb2YgYSBzaGFrZW4gbGVhZiBzaGFsbCBjaGFzZSB0aGVtOyBhbmQgdGhleSBzaGFsbCBmbGVlLCBhcyBmbGVlaW5nIGZyb20gYSBzd29yZDsgYW5kIHRoZXkgc2hhbGwgZmFsbCB3aGVuIG5vbmUgcHVyc3VldGguCkFuZCB0aGV5IHNoYWxsIGZhbGwgb25lIHVwb24gYW5vdGhlciwgYXMgaXQgd2VyZSBiZWZvcmUgYSBzd29yZCwgd2hlbiBub25lIHB1cnN1ZXRoOiBhbmQgeWUgc2hhbGwgaGF2ZSBubyBwb3dlciB0byBzdGFuZCBiZWZvcmUgeW91ciBlbmVtaWVzLgpBbmQgeWUgc2hhbGwgcGVyaXNoIGFtb25nIHRoZSBoZWF0aGVuLCBhbmQgdGhlIGxhbmQgb2YgeW91ciBlbmVtaWVzIHNoYWxsIGVhdCB5b3UgdXAuCkFuZCB0aGV5IHRoYXQgYXJlIGxlZnQgb2YgeW91IHNoYWxsIHBpbmUgYXdheSBpbiB0aGVpciBpbmlxdWl0eSBpbiB5b3VyIGVuZW1pZXMnIGxhbmRzOyBhbmQgYWxzbyBpbiB0aGUgaW5pcXVpdGllcyBvZiB0aGVpciBmYXRoZXJzIHNoYWxsIHRoZXkgcGluZSBhd2F5IHdpdGggdGhlbS4KSWYgdGhleSBzaGFsbCBjb25mZXNzIHRoZWlyIGluaXF1aXR5LCBhbmQgdGhlIGluaXF1aXR5IG9mIHRoZWlyIGZhdGhlcnMsIHdpdGggdGhlaXIgdHJlc3Bhc3Mgd2hpY2ggdGhleSB0cmVzcGFzc2VkIGFnYWluc3QgbWUsIGFuZCB0aGF0IGFsc28gdGhleSBoYXZlIHdhbGtlZCBjb250cmFyeSB1bnRvIG1lOwpBbmQgdGhhdCBJIGFsc28gaGF2ZSB3YWxrZWQgY29udHJhcnkgdW50byB0aGVtLCBhbmQgaGF2ZSBicm91Z2h0IHRoZW0gaW50byB0aGUgbGFuZCBvZiB0aGVpciBlbmVtaWVzOyBpZiB0aGVuIHRoZWlyIHVuY2lyY3VtY2lzZWQgaGVhcnRzIGJlIGh1bWJsZWQsIGFuZCB0aGV5IHRoZW4gYWNjZXB0IG9mIHRoZSBwdW5pc2htZW50IG9mIHRoZWlyIGluaXF1aXR5OgpUaGVuIHdpbGwgSSByZW1lbWJlciBteSBjb3ZlbmFudCB3aXRoIEphY29iLCBhbmQgYWxzbyBteSBjb3ZlbmFudCB3aXRoIElzYWFjLCBhbmQgYWxzbyBteSBjb3ZlbmFudCB3aXRoIEFicmFoYW0gd2lsbCBJIHJlbWVtYmVyOyBhbmQgSSB3aWxsIHJlbWVtYmVyIHRoZSBsYW5kLgpUaGUgbGFuZCBhbHNvIHNoYWxsIGJlIGxlZnQgb2YgdGhlbSwgYW5kIHNoYWxsIGVuam95IGhlciBzYWJiYXRocywgd2hpbGUgc2hlIGxpZXRoIGRlc29sYXRlIHdpdGhvdXQgdGhlbTogYW5kIHRoZXkgc2hhbGwgYWNjZXB0IG9mIHRoZSBwdW5pc2htZW50IG9mIHRoZWlyIGluaXF1aXR5OiBiZWNhdXNlLCBldmVuIGJlY2F1c2UgdGhleSBkZXNwaXNlZCBteSBqdWRnbWVudHMsIGFuZCBiZWNhdXNlIHRoZWlyIHNvdWwgYWJob3JyZWQgbXkgc3RhdHV0ZXMuCkFuZCB5ZXQgZm9yIGFsbCB0aGF0LCB3aGVuIHRoZXkgYmUgaW4gdGhlIGxhbmQgb2YgdGhlaXIgZW5lbWllcywgSSB3aWxsIG5vdCBjYXN0IHRoZW0gYXdheSwgbmVpdGhlciB3aWxsIEkgYWJob3IgdGhlbSwgdG8gZGVzdHJveSB0aGVtIHV0dGVybHksIGFuZCB0byBicmVhayBteSBjb3ZlbmFudCB3aXRoIHRoZW06IGZvciBJIGFtIHRoZSBMT1JEIHRoZWlyIEdvZC4KQnV0IEkgd2lsbCBmb3IgdGhlaXIgc2FrZXMgcmVtZW1iZXIgdGhlIGNvdmVuYW50IG9mIHRoZWlyIGFuY2VzdG9ycywgd2hvbSBJIGJyb3VnaHQgZm9ydGggb3V0IG9mIHRoZSBsYW5kIG9mIEVneXB0IGluIHRoZSBzaWdodCBvZiB0aGUgaGVhdGhlbiwgdGhhdCBJIG1pZ2h0IGJlIHRoZWlyIEdvZDogSSBhbSB0aGUgTE9SRC4KVGhlc2UgYXJlIHRoZSBzdGF0dXRlcyBhbmQganVkZ21lbnRzIGFuZCBsYXdzLCB3aGljaCB0aGUgTE9SRCBtYWRlIGJldHdlZW4gaGltIGFuZCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGluIG1vdW50IFNpbmFpIGJ5IHRoZSBoYW5kIG9mIE1vc2VzLgpBbmQgdGhlIExPUkQgc3Bha2UgdW50byBNb3Nlcywgc2F5aW5nLApTcGVhayB1bnRvIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIGFuZCBzYXkgdW50byB0aGVtLCBXaGVuIGEgbWFuIHNoYWxsIG1ha2UgYSBzaW5ndWxhciB2b3csIHRoZSBwZXJzb25zIHNoYWxsIGJlIGZvciB0aGUgTE9SRCBieSB0aHkgZXN0aW1hdGlvbi4KQW5kIHRoeSBlc3RpbWF0aW9uIHNoYWxsIGJlIG9mIHRoZSBtYWxlIGZyb20gdHdlbnR5IHllYXJzIG9sZCBldmVuIHVudG8gc2l4dHkgeWVhcnMgb2xkLCBldmVuIHRoeSBlc3RpbWF0aW9uIHNoYWxsIGJlIGZpZnR5IHNoZWtlbHMgb2Ygc2lsdmVyLCBhZnRlciB0aGUgc2hla2VsIG9mIHRoZSBzYW5jdHVhcnkuCkFuZCBpZiBpdCBiZSBhIGZlbWFsZSwgdGhlbiB0aHkgZXN0aW1hdGlvbiBzaGFsbCBiZSB0aGlydHkgc2hla2Vscy4KQW5kIGlmIGl0IGJlIGZyb20gZml2ZSB5ZWFycyBvbGQgZXZlbiB1bnRvIHR3ZW50eSB5ZWFycyBvbGQsIHRoZW4gdGh5IGVzdGltYXRpb24gc2hhbGwgYmUgb2YgdGhlIG1hbGUgdHdlbnR5IHNoZWtlbHMsIGFuZCBmb3IgdGhlIGZlbWFsZSB0ZW4gc2hla2Vscy4KQW5kIGlmIGl0IGJlIGZyb20gYSBtb250aCBvbGQgZXZlbiB1bnRvIGZpdmUgeWVhcnMgb2xkLCB0aGVuIHRoeSBlc3RpbWF0aW9uIHNoYWxsIGJlIG9mIHRoZSBtYWxlIGZpdmUgc2hla2VscyBvZiBzaWx2ZXIsIGFuZCBmb3IgdGhlIGZlbWFsZSB0aHkgZXN0aW1hdGlvbiBzaGFsbCBiZSB0aHJlZSBzaGVrZWxzIG9mIHNpbHZlci4KQW5kIGlmIGl0IGJlIGZyb20gc2l4dHkgeWVhcnMgb2xkIGFuZCBhYm92ZTsgaWYgaXQgYmUgYSBtYWxlLCB0aGVuIHRoeSBlc3RpbWF0aW9uIHNoYWxsIGJlIGZpZnRlZW4gc2hla2VscywgYW5kIGZvciB0aGUgZmVtYWxlIHRlbiBzaGVrZWxzLgpCdXQgaWYgaGUgYmUgcG9vcmVyIHRoYW4gdGh5IGVzdGltYXRpb24sIHRoZW4gaGUgc2hhbGwgcHJlc2VudCBoaW1zZWxmIGJlZm9yZSB0aGUgcHJpZXN0LCBhbmQgdGhlIHByaWVzdCBzaGFsbCB2YWx1ZSBoaW07IGFjY29yZGluZyB0byBoaXMgYWJpbGl0eSB0aGF0IHZvd2VkIHNoYWxsIHRoZSBwcmllc3QgdmFsdWUgaGltLgpBbmQgaWYgaXQgYmUgYSBiZWFzdCwgd2hlcmVvZiBtZW4gYnJpbmcgYW4gb2ZmZXJpbmcgdW50byB0aGUgTE9SRCwgYWxsIHRoYXQgYW55IG1hbiBnaXZldGggb2Ygc3VjaCB1bnRvIHRoZSBMT1JEIHNoYWxsIGJlIGhvbHkuCkhlIHNoYWxsIG5vdCBhbHRlciBpdCwgbm9yIGNoYW5nZSBpdCwgYSBnb29kIGZvciBhIGJhZCwgb3IgYSBiYWQgZm9yIGEgZ29vZDogYW5kIGlmIGhlIHNoYWxsIGF0IGFsbCBjaGFuZ2UgYmVhc3QgZm9yIGJlYXN0LCB0aGVuIGl0IGFuZCB0aGUgZXhjaGFuZ2UgdGhlcmVvZiBzaGFsbCBiZSBob2x5LgpBbmQgaWYgaXQgYmUgYW55IHVuY2xlYW4gYmVhc3QsIG9mIHdoaWNoIHRoZXkgZG8gbm90IG9mZmVyIGEgc2FjcmlmaWNlIHVudG8gdGhlIExPUkQsIHRoZW4gaGUgc2hhbGwgcHJlc2VudCB0aGUgYmVhc3QgYmVmb3JlIHRoZSBwcmllc3Q6CkFuZCB0aGUgcHJpZXN0IHNoYWxsIHZhbHVlIGl0LCB3aGV0aGVyIGl0IGJlIGdvb2Qgb3IgYmFkOiBhcyB0aG91IHZhbHVlc3QgaXQsIHdobyBhcnQgdGhlIHByaWVzdCwgc28gc2hhbGwgaXQgYmUuCkJ1dCBpZiBoZSB3aWxsIGF0IGFsbCByZWRlZW0gaXQsIHRoZW4gaGUgc2hhbGwgYWRkIGEgZmlmdGggcGFydCB0aGVyZW9mIHVudG8gdGh5IGVzdGltYXRpb24uCkFuZCB3aGVuIGEgbWFuIHNoYWxsIHNhbmN0aWZ5IGhpcyBob3VzZSB0byBiZSBob2x5IHVudG8gdGhlIExPUkQsIHRoZW4gdGhlIHByaWVzdCBzaGFsbCBlc3RpbWF0ZSBpdCwgd2hldGhlciBpdCBiZSBnb29kIG9yIGJhZDogYXMgdGhlIHByaWVzdCBzaGFsbCBlc3RpbWF0ZSBpdCwgc28gc2hhbGwgaXQgc3RhbmQuCkFuZCBpZiBoZSB0aGF0IHNhbmN0aWZpZWQgaXQgd2lsbCByZWRlZW0gaGlzIGhvdXNlLCB0aGVuIGhlIHNoYWxsIGFkZCB0aGUgZmlmdGggcGFydCBvZiB0aGUgbW9uZXkgb2YgdGh5IGVzdGltYXRpb24gdW50byBpdCwgYW5kIGl0IHNoYWxsIGJlIGhpcy4KQW5kIGlmIGEgbWFuIHNoYWxsIHNhbmN0aWZ5IHVudG8gdGhlIExPUkQgc29tZSBwYXJ0IG9mIGEgZmllbGQgb2YgaGlzIHBvc3Nlc3Npb24sIHRoZW4gdGh5IGVzdGltYXRpb24gc2hhbGwgYmUgYWNjb3JkaW5nIHRvIHRoZSBzZWVkIHRoZXJlb2Y6IGFuIGhvbWVyIG9mIGJhcmxleSBzZWVkIHNoYWxsIGJlIHZhbHVlZCBhdCBmaWZ0eSBzaGVrZWxzIG9mIHNpbHZlci4KSWYgaGUgc2FuY3RpZnkgaGlzIGZpZWxkIGZyb20gdGhlIHllYXIgb2YganViaWxlLCBhY2NvcmRpbmcgdG8gdGh5IGVzdGltYXRpb24gaXQgc2hhbGwgc3RhbmQuCkJ1dCBpZiBoZSBzYW5jdGlmeSBoaXMgZmllbGQgYWZ0ZXIgdGhlIGp1YmlsZSwgdGhlbiB0aGUgcHJpZXN0IHNoYWxsIHJlY2tvbiB1bnRvIGhpbSB0aGUgbW9uZXkgYWNjb3JkaW5nIHRvIHRoZSB5ZWFycyB0aGF0IHJlbWFpbiwgZXZlbiB1bnRvIHRoZSB5ZWFyIG9mIHRoZSBqdWJpbGUsIGFuZCBpdCBzaGFsbCBiZSBhYmF0ZWQgZnJvbSB0aHkgZXN0aW1hdGlvbi4KQW5kIGlmIGhlIHRoYXQgc2FuY3RpZmllZCB0aGUgZmllbGQgd2lsbCBpbiBhbnkgd2lzZSByZWRlZW0gaXQsIHRoZW4gaGUgc2hhbGwgYWRkIHRoZSBmaWZ0aCBwYXJ0IG9mIHRoZSBtb25leSBvZiB0aHkgZXN0aW1hdGlvbiB1bnRvIGl0LCBhbmQgaXQgc2hhbGwgYmUgYXNzdXJlZCB0byBoaW0uCkFuZCBpZiBoZSB3aWxsIG5vdCByZWRlZW0gdGhlIGZpZWxkLCBvciBpZiBoZSBoYXZlIHNvbGQgdGhlIGZpZWxkIHRvIGFub3RoZXIgbWFuLCBpdCBzaGFsbCBub3QgYmUgcmVkZWVtZWQgYW55IG1vcmUuCkJ1dCB0aGUgZmllbGQsIHdoZW4gaXQgZ29ldGggb3V0IGluIHRoZSBqdWJpbGUsIHNoYWxsIGJlIGhvbHkgdW50byB0aGUgTE9SRCwgYXMgYSBmaWVsZCBkZXZvdGVkOyB0aGUgcG9zc2Vzc2lvbiB0aGVyZW9mIHNoYWxsIGJlIHRoZSBwcmllc3Qncy4KQW5kIGlmIGEgbWFuIHNhbmN0aWZ5IHVudG8gdGhlIExPUkQgYSBmaWVsZCB3aGljaCBoZSBoYXRoIGJvdWdodCwgd2hpY2ggaXMgbm90IG9mIHRoZSBmaWVsZHMgb2YgaGlzIHBvc3Nlc3Npb247ClRoZW4gdGhlIHByaWVzdCBzaGFsbCByZWNrb24gdW50byBoaW0gdGhlIHdvcnRoIG9mIHRoeSBlc3RpbWF0aW9uLCBldmVuIHVudG8gdGhlIHllYXIgb2YgdGhlIGp1YmlsZTogYW5kIGhlIHNoYWxsIGdpdmUgdGhpbmUgZXN0aW1hdGlvbiBpbiB0aGF0IGRheSwgYXMgYSBob2x5IHRoaW5nIHVudG8gdGhlIExPUkQuCkluIHRoZSB5ZWFyIG9mIHRoZSBqdWJpbGUgdGhlIGZpZWxkIHNoYWxsIHJldHVybiB1bnRvIGhpbSBvZiB3aG9tIGl0IHdhcyBib3VnaHQsIGV2ZW4gdG8gaGltIHRvIHdob20gdGhlIHBvc3Nlc3Npb24gb2YgdGhlIGxhbmQgZGlkIGJlbG9uZy4KQW5kIGFsbCB0aHkgZXN0aW1hdGlvbnMgc2hhbGwgYmUgYWNjb3JkaW5nIHRvIHRoZSBzaGVrZWwgb2YgdGhlIHNhbmN0dWFyeTogdHdlbnR5IGdlcmFocyBzaGFsbCBiZSB0aGUgc2hla2VsLgpPbmx5IHRoZSBmaXJzdGxpbmcgb2YgdGhlIGJlYXN0cywgd2hpY2ggc2hvdWxkIGJlIHRoZSBMT1JEJ3MgZmlyc3RsaW5nLCBubyBtYW4gc2hhbGwgc2FuY3RpZnkgaXQ7IHdoZXRoZXIgaXQgYmUgb3gsIG9yIHNoZWVwOiBpdCBpcyB0aGUgTE9SRCdzLgpBbmQgaWYgaXQgYmUgb2YgYW4gdW5jbGVhbiBiZWFzdCwgdGhlbiBoZSBzaGFsbCByZWRlZW0gaXQgYWNjb3JkaW5nIHRvIHRoaW5lIGVzdGltYXRpb24sIGFuZCBzaGFsbCBhZGQgYSBmaWZ0aCBwYXJ0IG9mIGl0IHRoZXJldG86IG9yIGlmIGl0IGJlIG5vdCByZWRlZW1lZCwgdGhlbiBpdCBzaGFsbCBiZSBzb2xkIGFjY29yZGluZyB0byB0aHkgZXN0aW1hdGlvbi4KTm90d2l0aHN0YW5kaW5nIG5vIGRldm90ZWQgdGhpbmcsIHRoYXQgYSBtYW4gc2hhbGwgZGV2b3RlIHVudG8gdGhlIExPUkQgb2YgYWxsIHRoYXQgaGUgaGF0aCwgYm90aCBvZiBtYW4gYW5kIGJlYXN0LCBhbmQgb2YgdGhlIGZpZWxkIG9mIGhpcyBwb3NzZXNzaW9uLCBzaGFsbCBiZSBzb2xkIG9yIHJlZGVlbWVkOiBldmVyeSBkZXZvdGVkIHRoaW5nIGlzIG1vc3QgaG9seSB1bnRvIHRoZSBMT1JELgpOb25lIGRldm90ZWQsIHdoaWNoIHNoYWxsIGJlIGRldm90ZWQgb2YgbWVuLCBzaGFsbCBiZSByZWRlZW1lZDsgYnV0IHNoYWxsIHN1cmVseSBiZSBwdXQgdG8gZGVhdGguCkFuZCBhbGwgdGhlIHRpdGhlIG9mIHRoZSBsYW5kLCB3aGV0aGVyIG9mIHRoZSBzZWVkIG9mIHRoZSBsYW5kLCBvciBvZiB0aGUgZnJ1aXQgb2YgdGhlIHRyZWUsIGlzIHRoZSBMT1JEJ3M6IGl0IGlzIGhvbHkgdW50byB0aGUgTE9SRC4KQW5kIGlmIGEgbWFuIHdpbGwgYXQgYWxsIHJlZGVlbSBvdWdodCBvZiBoaXMgdGl0aGVzLCBoZSBzaGFsbCBhZGQgdGhlcmV0byB0aGUgZmlmdGggcGFydCB0aGVyZW9mLgpBbmQgY29uY2VybmluZyB0aGUgdGl0aGUgb2YgdGhlIGhlcmQsIG9yIG9mIHRoZSBmbG9jaywgZXZlbiBvZiB3aGF0c29ldmVyIHBhc3NldGggdW5kZXIgdGhlIHJvZCwgdGhlIHRlbnRoIHNoYWxsIGJlIGhvbHkgdW50byB0aGUgTE9SRC4KSGUgc2hhbGwgbm90IHNlYXJjaCB3aGV0aGVyIGl0IGJlIGdvb2Qgb3IgYmFkLCBuZWl0aGVyIHNoYWxsIGhlIGNoYW5nZSBpdDogYW5kIGlmIGhlIGNoYW5nZSBpdCBhdCBhbGwsIHRoZW4gYm90aCBpdCBhbmQgdGhlIGNoYW5nZSB0aGVyZW9mIHNoYWxsIGJlIGhvbHk7IGl0IHNoYWxsIG5vdCBiZSByZWRlZW1lZC4KVGhlc2UgYXJlIHRoZSBjb21tYW5kbWVudHMsIHdoaWNoIHRoZSBMT1JEIGNvbW1hbmRlZCBNb3NlcyBmb3IgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBpbiBtb3VudCBTaW5haS4KQW5kIHRoZSBMT1JEIHNwYWtlIHVudG8gTW9zZXMgaW4gdGhlIHdpbGRlcm5lc3Mgb2YgU2luYWksIGluIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBjb25ncmVnYXRpb24sIG9uIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHNlY29uZCBtb250aCwgaW4gdGhlIHNlY29uZCB5ZWFyIGFmdGVyIHRoZXkgd2VyZSBjb21lIG91dCBvZiB0aGUgbGFuZCBvZiBFZ3lwdCwgc2F5aW5nLApUYWtlIHllIHRoZSBzdW0gb2YgYWxsIHRoZSBjb25ncmVnYXRpb24gb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgYWZ0ZXIgdGhlaXIgZmFtaWxpZXMsIGJ5IHRoZSBob3VzZSBvZiB0aGVpciBmYXRoZXJzLCB3aXRoIHRoZSBudW1iZXIgb2YgdGhlaXIgbmFtZXMsIGV2ZXJ5IG1hbGUgYnkgdGhlaXIgcG9sbHM7CkZyb20gdHdlbnR5IHllYXJzIG9sZCBhbmQgdXB3YXJkLCBhbGwgdGhhdCBhcmUgYWJsZSB0byBnbyBmb3J0aCB0byB3YXIgaW4gSXNyYWVsOiB0aG91IGFuZCBBYXJvbiBzaGFsbCBudW1iZXIgdGhlbSBieSB0aGVpciBhcm1pZXMuCkFuZCB3aXRoIHlvdSB0aGVyZSBzaGFsbCBiZSBhIG1hbiBvZiBldmVyeSB0cmliZTsgZXZlcnkgb25lIGhlYWQgb2YgdGhlIGhvdXNlIG9mIGhpcyBmYXRoZXJzLgpBbmQgdGhlc2UgYXJlIHRoZSBuYW1lcyBvZiB0aGUgbWVuIHRoYXQgc2hhbGwgc3RhbmQgd2l0aCB5b3U6IG9mIHRoZSB0cmliZSBvZiBSZXViZW47IEVsaXp1ciB0aGUgc29uIG9mIFNoZWRldXIuCk9mIFNpbWVvbjsgU2hlbHVtaWVsIHRoZSBzb24gb2YgWnVyaXNoYWRkYWkuCk9mIEp1ZGFoOyBOYWhzaG9uIHRoZSBzb24gb2YgQW1taW5hZGFiLgpPZiBJc3NhY2hhcjsgTmV0aGFuZWVsIHRoZSBzb24gb2YgWnVhci4KT2YgWmVidWx1bjsgRWxpYWIgdGhlIHNvbiBvZiBIZWxvbi4KT2YgdGhlIGNoaWxkcmVuIG9mIEpvc2VwaDogb2YgRXBocmFpbTsgRWxpc2hhbWEgdGhlIHNvbiBvZiBBbW1paHVkOiBvZiBNYW5hc3NlaDsgR2FtYWxpZWwgdGhlIHNvbiBvZiBQZWRhaHp1ci4KT2YgQmVuamFtaW47IEFiaWRhbiB0aGUgc29uIG9mIEdpZGVvbmkuCk9mIERhbjsgQWhpZXplciB0aGUgc29uIG9mIEFtbWlzaGFkZGFpLgpPZiBBc2hlcjsgUGFnaWVsIHRoZSBzb24gb2YgT2NyYW4uCk9mIEdhZDsgRWxpYXNhcGggdGhlIHNvbiBvZiBEZXVlbC4KT2YgTmFwaHRhbGk7IEFoaXJhIHRoZSBzb24gb2YgRW5hbi4KVGhlc2Ugd2VyZSB0aGUgcmVub3duZWQgb2YgdGhlIGNvbmdyZWdhdGlvbiwgcHJpbmNlcyBvZiB0aGUgdHJpYmVzIG9mIHRoZWlyIGZhdGhlcnMsIGhlYWRzIG9mIHRob3VzYW5kcyBpbiBJc3JhZWwuCkFuZCBNb3NlcyBhbmQgQWFyb24gdG9vayB0aGVzZSBtZW4gd2hpY2ggYXJlIGV4cHJlc3NlZCBieSB0aGVpciBuYW1lczoKQW5kIHRoZXkgYXNzZW1ibGVkIGFsbCB0aGUgY29uZ3JlZ2F0aW9uIHRvZ2V0aGVyIG9uIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHNlY29uZCBtb250aCwgYW5kIHRoZXkgZGVjbGFyZWQgdGhlaXIgcGVkaWdyZWVzIGFmdGVyIHRoZWlyIGZhbWlsaWVzLCBieSB0aGUgaG91c2Ugb2YgdGhlaXIgZmF0aGVycywgYWNjb3JkaW5nIHRvIHRoZSBudW1iZXIgb2YgdGhlIG5hbWVzLCBmcm9tIHR3ZW50eSB5ZWFycyBvbGQgYW5kIHVwd2FyZCwgYnkgdGhlaXIgcG9sbHMuCkFzIHRoZSBMT1JEIGNvbW1hbmRlZCBNb3Nlcywgc28gaGUgbnVtYmVyZWQgdGhlbSBpbiB0aGUgd2lsZGVybmVzcyBvZiBTaW5haS4KQW5kIHRoZSBjaGlsZHJlbiBvZiBSZXViZW4sIElzcmFlbCdzIGVsZGVzdCBzb24sIGJ5IHRoZWlyIGdlbmVyYXRpb25zLCBhZnRlciB0aGVpciBmYW1pbGllcywgYnkgdGhlIGhvdXNlIG9mIHRoZWlyIGZhdGhlcnMsIGFjY29yZGluZyB0byB0aGUgbnVtYmVyIG9mIHRoZSBuYW1lcywgYnkgdGhlaXIgcG9sbHMsIGV2ZXJ5IG1hbGUgZnJvbSB0d2VudHkgeWVhcnMgb2xkIGFuZCB1cHdhcmQsIGFsbCB0aGF0IHdlcmUgYWJsZSB0byBnbyBmb3J0aCB0byB3YXI7ClRob3NlIHRoYXQgd2VyZSBudW1iZXJlZCBvZiB0aGVtLCBldmVuIG9mIHRoZSB0cmliZSBvZiBSZXViZW4sIHdlcmUgZm9ydHkgYW5kIHNpeCB0aG91c2FuZCBhbmQgZml2ZSBodW5kcmVkLgpPZiB0aGUgY2hpbGRyZW4gb2YgU2ltZW9uLCBieSB0aGVpciBnZW5lcmF0aW9ucywgYWZ0ZXIgdGhlaXIgZmFtaWxpZXMsIGJ5IHRoZSBob3VzZSBvZiB0aGVpciBmYXRoZXJzLCB0aG9zZSB0aGF0IHdlcmUgbnVtYmVyZWQgb2YgdGhlbSwgYWNjb3JkaW5nIHRvIHRoZSBudW1iZXIgb2YgdGhlIG5hbWVzLCBieSB0aGVpciBwb2xscywgZXZlcnkgbWFsZSBmcm9tIHR3ZW50eSB5ZWFycyBvbGQgYW5kIHVwd2FyZCwgYWxsIHRoYXQgd2VyZSBhYmxlIHRvIGdvIGZvcnRoIHRvIHdhcjsKVGhvc2UgdGhhdCB3ZXJlIG51bWJlcmVkIG9mIHRoZW0sIGV2ZW4gb2YgdGhlIHRyaWJlIG9mIFNpbWVvbiwgd2VyZSBmaWZ0eSBhbmQgbmluZSB0aG91c2FuZCBhbmQgdGhyZWUgaHVuZHJlZC4KT2YgdGhlIGNoaWxkcmVuIG9mIEdhZCwgYnkgdGhlaXIgZ2VuZXJhdGlvbnMsIGFmdGVyIHRoZWlyIGZhbWlsaWVzLCBieSB0aGUgaG91c2Ugb2YgdGhlaXIgZmF0aGVycywgYWNjb3JkaW5nIHRvIHRoZSBudW1iZXIgb2YgdGhlIG5hbWVzLCBmcm9tIHR3ZW50eSB5ZWFycyBvbGQgYW5kIHVwd2FyZCwgYWxsIHRoYXQgd2VyZSBhYmxlIHRvIGdvIGZvcnRoIHRvIHdhcjsKVGhvc2UgdGhhdCB3ZXJlIG51bWJlcmVkIG9mIHRoZW0sIGV2ZW4gb2YgdGhlIHRyaWJlIG9mIEdhZCwgd2VyZSBmb3J0eSBhbmQgZml2ZSB0aG91c2FuZCBzaXggaHVuZHJlZCBhbmQgZmlmdHkuCk9mIHRoZSBjaGlsZHJlbiBvZiBKdWRhaCwgYnkgdGhlaXIgZ2VuZXJhdGlvbnMsIGFmdGVyIHRoZWlyIGZhbWlsaWVzLCBieSB0aGUgaG91c2Ugb2YgdGhlaXIgZmF0aGVycywgYWNjb3JkaW5nIHRvIHRoZSBudW1iZXIgb2YgdGhlIG5hbWVzLCBmcm9tIHR3ZW50eSB5ZWFycyBvbGQgYW5kIHVwd2FyZCwgYWxsIHRoYXQgd2VyZSBhYmxlIHRvIGdvIGZvcnRoIHRvIHdhcjsKVGhvc2UgdGhhdCB3ZXJlIG51bWJlcmVkIG9mIHRoZW0sIGV2ZW4gb2YgdGhlIHRyaWJlIG9mIEp1ZGFoLCB3ZXJlIHRocmVlc2NvcmUgYW5kIGZvdXJ0ZWVuIHRob3VzYW5kIGFuZCBzaXggaHVuZHJlZC4KT2YgdGhlIGNoaWxkcmVuIG9mIElzc2FjaGFyLCBieSB0aGVpciBnZW5lcmF0aW9ucywgYWZ0ZXIgdGhlaXIgZmFtaWxpZXMsIGJ5IHRoZSBob3VzZSBvZiB0aGVpciBmYXRoZXJzLCBhY2NvcmRpbmcgdG8gdGhlIG51bWJlciBvZiB0aGUgbmFtZXMsIGZyb20gdHdlbnR5IHllYXJzIG9sZCBhbmQgdXB3YXJkLCBhbGwgdGhhdCB3ZXJlIGFibGUgdG8gZ28gZm9ydGggdG8gd2FyOwpUaG9zZSB0aGF0IHdlcmUgbnVtYmVyZWQgb2YgdGhlbSwgZXZlbiBvZiB0aGUgdHJpYmUgb2YgSXNzYWNoYXIsIHdlcmUgZmlmdHkgYW5kIGZvdXIgdGhvdXNhbmQgYW5kIGZvdXIgaHVuZHJlZC4KT2YgdGhlIGNoaWxkcmVuIG9mIFplYnVsdW4sIGJ5IHRoZWlyIGdlbmVyYXRpb25zLCBhZnRlciB0aGVpciBmYW1pbGllcywgYnkgdGhlIGhvdXNlIG9mIHRoZWlyIGZhdGhlcnMsIGFjY29yZGluZyB0byB0aGUgbnVtYmVyIG9mIHRoZSBuYW1lcywgZnJvbSB0d2VudHkgeWVhcnMgb2xkIGFuZCB1cHdhcmQsIGFsbCB0aGF0IHdlcmUgYWJsZSB0byBnbyBmb3J0aCB0byB3YXI7ClRob3NlIHRoYXQgd2VyZSBudW1iZXJlZCBvZiB0aGVtLCBldmVuIG9mIHRoZSB0cmliZSBvZiBaZWJ1bHVuLCB3ZXJlIGZpZnR5IGFuZCBzZXZlbiB0aG91c2FuZCBhbmQgZm91ciBodW5kcmVkLgpPZiB0aGUgY2hpbGRyZW4gb2YgSm9zZXBoLCBuYW1lbHksIG9mIHRoZSBjaGlsZHJlbiBvZiBFcGhyYWltLCBieSB0aGVpciBnZW5lcmF0aW9ucywgYWZ0ZXIgdGhlaXIgZmFtaWxpZXMsIGJ5IHRoZSBob3VzZSBvZiB0aGVpciBmYXRoZXJzLCBhY2NvcmRpbmcgdG8gdGhlIG51bWJlciBvZiB0aGUgbmFtZXMsIGZyb20gdHdlbnR5IHllYXJzIG9sZCBhbmQgdXB3YXJkLCBhbGwgdGhhdCB3ZXJlIGFibGUgdG8gZ28gZm9ydGggdG8gd2FyOwpUaG9zZSB0aGF0IHdlcmUgbnVtYmVyZWQgb2YgdGhlbSwgZXZlbiBvZiB0aGUgdHJpYmUgb2YgRXBocmFpbSwgd2VyZSBmb3J0eSB0aG91c2FuZCBhbmQgZml2ZSBodW5kcmVkLgpPZiB0aGUgY2hpbGRyZW4gb2YgTWFuYXNzZWgsIGJ5IHRoZWlyIGdlbmVyYXRpb25zLCBhZnRlciB0aGVpciBmYW1pbGllcywgYnkgdGhlIGhvdXNlIG9mIHRoZWlyIGZhdGhlcnMsIGFjY29yZGluZyB0byB0aGUgbnVtYmVyIG9mIHRoZSBuYW1lcywgZnJvbSB0d2VudHkgeWVhcnMgb2xkIGFuZCB1cHdhcmQsIGFsbCB0aGF0IHdlcmUgYWJsZSB0byBnbyBmb3J0aCB0byB3YXI7ClRob3NlIHRoYXQgd2VyZSBudW1iZXJlZCBvZiB0aGVtLCBldmVuIG9mIHRoZSB0cmliZSBvZiBNYW5hc3NlaCwgd2VyZSB0aGlydHkgYW5kIHR3byB0aG91c2FuZCBhbmQgdHdvIGh1bmRyZWQuCk9mIHRoZSBjaGlsZHJlbiBvZiBCZW5qYW1pbiwgYnkgdGhlaXIgZ2VuZXJhdGlvbnMsIGFmdGVyIHRoZWlyIGZhbWlsaWVzLCBieSB0aGUgaG91c2Ugb2YgdGhlaXIgZmF0aGVycywgYWNjb3JkaW5nIHRvIHRoZSBudW1iZXIgb2YgdGhlIG5hbWVzLCBmcm9tIHR3ZW50eSB5ZWFycyBvbGQgYW5kIHVwd2FyZCwgYWxsIHRoYXQgd2VyZSBhYmxlIHRvIGdvIGZvcnRoIHRvIHdhcjsKVGhvc2UgdGhhdCB3ZXJlIG51bWJlcmVkIG9mIHRoZW0sIGV2ZW4gb2YgdGhlIHRyaWJlIG9mIEJlbmphbWluLCB3ZXJlIHRoaXJ0eSBhbmQgZml2ZSB0aG91c2FuZCBhbmQgZm91ciBodW5kcmVkLgpPZiB0aGUgY2hpbGRyZW4gb2YgRGFuLCBieSB0aGVpciBnZW5lcmF0aW9ucywgYWZ0ZXIgdGhlaXIgZmFtaWxpZXMsIGJ5IHRoZSBob3VzZSBvZiB0aGVpciBmYXRoZXJzLCBhY2NvcmRpbmcgdG8gdGhlIG51bWJlciBvZiB0aGUgbmFtZXMsIGZyb20gdHdlbnR5IHllYXJzIG9sZCBhbmQgdXB3YXJkLCBhbGwgdGhhdCB3ZXJlIGFibGUgdG8gZ28gZm9ydGggdG8gd2FyOwpUaG9zZSB0aGF0IHdlcmUgbnVtYmVyZWQgb2YgdGhlbSwgZXZlbiBvZiB0aGUgdHJpYmUgb2YgRGFuLCB3ZXJlIHRocmVlc2NvcmUgYW5kIHR3byB0aG91c2FuZCBhbmQgc2V2ZW4gaHVuZHJlZC4KT2YgdGhlIGNoaWxkcmVuIG9mIEFzaGVyLCBieSB0aGVpciBnZW5lcmF0aW9ucywgYWZ0ZXIgdGhlaXIgZmFtaWxpZXMsIGJ5IHRoZSBob3VzZSBvZiB0aGVpciBmYXRoZXJzLCBhY2NvcmRpbmcgdG8gdGhlIG51bWJlciBvZiB0aGUgbmFtZXMsIGZyb20gdHdlbnR5IHllYXJzIG9sZCBhbmQgdXB3YXJkLCBhbGwgdGhhdCB3ZXJlIGFibGUgdG8gZ28gZm9ydGggdG8gd2FyOwpUaG9zZSB0aGF0IHdlcmUgbnVtYmVyZWQgb2YgdGhlbSwgZXZlbiBvZiB0aGUgdHJpYmUgb2YgQXNoZXIsIHdlcmUgZm9ydHkgYW5kIG9uZSB0aG91c2FuZCBhbmQgZml2ZSBodW5kcmVkLgpPZiB0aGUgY2hpbGRyZW4gb2YgTmFwaHRhbGksIHRocm91Z2hvdXQgdGhlaXIgZ2VuZXJhdGlvbnMsIGFmdGVyIHRoZWlyIGZhbWlsaWVzLCBieSB0aGUgaG91c2Ugb2YgdGhlaXIgZmF0aGVycywgYWNjb3JkaW5nIHRvIHRoZSBudW1iZXIgb2YgdGhlIG5hbWVzLCBmcm9tIHR3ZW50eSB5ZWFycyBvbGQgYW5kIHVwd2FyZCwgYWxsIHRoYXQgd2VyZSBhYmxlIHRvIGdvIGZvcnRoIHRvIHdhcjsKVGhvc2UgdGhhdCB3ZXJlIG51bWJlcmVkIG9mIHRoZW0sIGV2ZW4gb2YgdGhlIHRyaWJlIG9mIE5hcGh0YWxpLCB3ZXJlIGZpZnR5IGFuZCB0aHJlZSB0aG91c2FuZCBhbmQgZm91ciBodW5kcmVkLgpUaGVzZSBhcmUgdGhvc2UgdGhhdCB3ZXJlIG51bWJlcmVkLCB3aGljaCBNb3NlcyBhbmQgQWFyb24gbnVtYmVyZWQsIGFuZCB0aGUgcHJpbmNlcyBvZiBJc3JhZWwsIGJlaW5nIHR3ZWx2ZSBtZW46IGVhY2ggb25lIHdhcyBmb3IgdGhlIGhvdXNlIG9mIGhpcyBmYXRoZXJzLgpTbyB3ZXJlIGFsbCB0aG9zZSB0aGF0IHdlcmUgbnVtYmVyZWQgb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgYnkgdGhlIGhvdXNlIG9mIHRoZWlyIGZhdGhlcnMsIGZyb20gdHdlbnR5IHllYXJzIG9sZCBhbmQgdXB3YXJkLCBhbGwgdGhhdCB3ZXJlIGFibGUgdG8gZ28gZm9ydGggdG8gd2FyIGluIElzcmFlbDsKRXZlbiBhbGwgdGhleSB0aGF0IHdlcmUgbnVtYmVyZWQgd2VyZSBzaXggaHVuZHJlZCB0aG91c2FuZCBhbmQgdGhyZWUgdGhvdXNhbmQgYW5kIGZpdmUgaHVuZHJlZCBhbmQgZmlmdHkuCkJ1dCB0aGUgTGV2aXRlcyBhZnRlciB0aGUgdHJpYmUgb2YgdGhlaXIgZmF0aGVycyB3ZXJlIG5vdCBudW1iZXJlZCBhbW9uZyB0aGVtLgpGb3IgdGhlIExPUkQgaGFkIHNwb2tlbiB1bnRvIE1vc2VzLCBzYXlpbmcsCk9ubHkgdGhvdSBzaGFsdCBub3QgbnVtYmVyIHRoZSB0cmliZSBvZiBMZXZpLCBuZWl0aGVyIHRha2UgdGhlIHN1bSBvZiB0aGVtIGFtb25nIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWw6CkJ1dCB0aG91IHNoYWx0IGFwcG9pbnQgdGhlIExldml0ZXMgb3ZlciB0aGUgdGFiZXJuYWNsZSBvZiB0ZXN0aW1vbnksIGFuZCBvdmVyIGFsbCB0aGUgdmVzc2VscyB0aGVyZW9mLCBhbmQgb3ZlciBhbGwgdGhpbmdzIHRoYXQgYmVsb25nIHRvIGl0OiB0aGV5IHNoYWxsIGJlYXIgdGhlIHRhYmVybmFjbGUsIGFuZCBhbGwgdGhlIHZlc3NlbHMgdGhlcmVvZjsgYW5kIHRoZXkgc2hhbGwgbWluaXN0ZXIgdW50byBpdCwgYW5kIHNoYWxsIGVuY2FtcCByb3VuZCBhYm91dCB0aGUgdGFiZXJuYWNsZS4KQW5kIHdoZW4gdGhlIHRhYmVybmFjbGUgc2V0dGV0aCBmb3J3YXJkLCB0aGUgTGV2aXRlcyBzaGFsbCB0YWtlIGl0IGRvd246IGFuZCB3aGVuIHRoZSB0YWJlcm5hY2xlIGlzIHRvIGJlIHBpdGNoZWQsIHRoZSBMZXZpdGVzIHNoYWxsIHNldCBpdCB1cDogYW5kIHRoZSBzdHJhbmdlciB0aGF0IGNvbWV0aCBuaWdoIHNoYWxsIGJlIHB1dCB0byBkZWF0aC4KQW5kIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgc2hhbGwgcGl0Y2ggdGhlaXIgdGVudHMsIGV2ZXJ5IG1hbiBieSBoaXMgb3duIGNhbXAsIGFuZCBldmVyeSBtYW4gYnkgaGlzIG93biBzdGFuZGFyZCwgdGhyb3VnaG91dCB0aGVpciBob3N0cy4KQnV0IHRoZSBMZXZpdGVzIHNoYWxsIHBpdGNoIHJvdW5kIGFib3V0IHRoZSB0YWJlcm5hY2xlIG9mIHRlc3RpbW9ueSwgdGhhdCB0aGVyZSBiZSBubyB3cmF0aCB1cG9uIHRoZSBjb25ncmVnYXRpb24gb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbDogYW5kIHRoZSBMZXZpdGVzIHNoYWxsIGtlZXAgdGhlIGNoYXJnZSBvZiB0aGUgdGFiZXJuYWNsZSBvZiB0ZXN0aW1vbnkuCkFuZCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGRpZCBhY2NvcmRpbmcgdG8gYWxsIHRoYXQgdGhlIExPUkQgY29tbWFuZGVkIE1vc2VzLCBzbyBkaWQgdGhleS4KQW5kIHRoZSBMT1JEIHNwYWtlIHVudG8gTW9zZXMgYW5kIHVudG8gQWFyb24sIHNheWluZywKRXZlcnkgbWFuIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgc2hhbGwgcGl0Y2ggYnkgaGlzIG93biBzdGFuZGFyZCwgd2l0aCB0aGUgZW5zaWduIG9mIHRoZWlyIGZhdGhlcidzIGhvdXNlOiBmYXIgb2ZmIGFib3V0IHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBjb25ncmVnYXRpb24gc2hhbGwgdGhleSBwaXRjaC4KQW5kIG9uIHRoZSBlYXN0IHNpZGUgdG93YXJkIHRoZSByaXNpbmcgb2YgdGhlIHN1biBzaGFsbCB0aGV5IG9mIHRoZSBzdGFuZGFyZCBvZiB0aGUgY2FtcCBvZiBKdWRhaCBwaXRjaCB0aHJvdWdob3V0IHRoZWlyIGFybWllczogYW5kIE5haHNob24gdGhlIHNvbiBvZiBBbW1pbmFkYWIgc2hhbGwgYmUgY2FwdGFpbiBvZiB0aGUgY2hpbGRyZW4gb2YgSnVkYWguCkFuZCBoaXMgaG9zdCwgYW5kIHRob3NlIHRoYXQgd2VyZSBudW1iZXJlZCBvZiB0aGVtLCB3ZXJlIHRocmVlc2NvcmUgYW5kIGZvdXJ0ZWVuIHRob3VzYW5kIGFuZCBzaXggaHVuZHJlZC4KQW5kIHRob3NlIHRoYXQgZG8gcGl0Y2ggbmV4dCB1bnRvIGhpbSBzaGFsbCBiZSB0aGUgdHJpYmUgb2YgSXNzYWNoYXI6IGFuZCBOZXRoYW5lZWwgdGhlIHNvbiBvZiBadWFyIHNoYWxsIGJlIGNhcHRhaW4gb2YgdGhlIGNoaWxkcmVuIG9mIElzc2FjaGFyLgpBbmQgaGlzIGhvc3QsIGFuZCB0aG9zZSB0aGF0IHdlcmUgbnVtYmVyZWQgdGhlcmVvZiwgd2VyZSBmaWZ0eSBhbmQgZm91ciB0aG91c2FuZCBhbmQgZm91ciBodW5kcmVkLgpUaGVuIHRoZSB0cmliZSBvZiBaZWJ1bHVuOiBhbmQgRWxpYWIgdGhlIHNvbiBvZiBIZWxvbiBzaGFsbCBiZSBjYXB0YWluIG9mIHRoZSBjaGlsZHJlbiBvZiBaZWJ1bHVuLgpBbmQgaGlzIGhvc3QsIGFuZCB0aG9zZSB0aGF0IHdlcmUgbnVtYmVyZWQgdGhlcmVvZiwgd2VyZSBmaWZ0eSBhbmQgc2V2ZW4gdGhvdXNhbmQgYW5kIGZvdXIgaHVuZHJlZC4KQWxsIHRoYXQgd2VyZSBudW1iZXJlZCBpbiB0aGUgY2FtcCBvZiBKdWRhaCB3ZXJlIGFuIGh1bmRyZWQgdGhvdXNhbmQgYW5kIGZvdXJzY29yZSB0aG91c2FuZCBhbmQgc2l4IHRob3VzYW5kIGFuZCBmb3VyIGh1bmRyZWQsIHRocm91Z2hvdXQgdGhlaXIgYXJtaWVzLiBUaGVzZSBzaGFsbCBmaXJzdCBzZXQgZm9ydGguCk9uIHRoZSBzb3V0aCBzaWRlIHNoYWxsIGJlIHRoZSBzdGFuZGFyZCBvZiB0aGUgY2FtcCBvZiBSZXViZW4gYWNjb3JkaW5nIHRvIHRoZWlyIGFybWllczogYW5kIHRoZSBjYXB0YWluIG9mIHRoZSBjaGlsZHJlbiBvZiBSZXViZW4gc2hhbGwgYmUgRWxpenVyIHRoZSBzb24gb2YgU2hlZGV1ci4KQW5kIGhpcyBob3N0LCBhbmQgdGhvc2UgdGhhdCB3ZXJlIG51bWJlcmVkIHRoZXJlb2YsIHdlcmUgZm9ydHkgYW5kIHNpeCB0aG91c2FuZCBhbmQgZml2ZSBodW5kcmVkLgpBbmQgdGhvc2Ugd2hpY2ggcGl0Y2ggYnkgaGltIHNoYWxsIGJlIHRoZSB0cmliZSBvZiBTaW1lb246IGFuZCB0aGUgY2FwdGFpbiBvZiB0aGUgY2hpbGRyZW4gb2YgU2ltZW9uIHNoYWxsIGJlIFNoZWx1bWllbCB0aGUgc29uIG9mIFp1cmlzaGFkZGFpLgpBbmQgaGlzIGhvc3QsIGFuZCB0aG9zZSB0aGF0IHdlcmUgbnVtYmVyZWQgb2YgdGhlbSwgd2VyZSBmaWZ0eSBhbmQgbmluZSB0aG91c2FuZCBhbmQgdGhyZWUgaHVuZHJlZC4KVGhlbiB0aGUgdHJpYmUgb2YgR2FkOiBhbmQgdGhlIGNhcHRhaW4gb2YgdGhlIHNvbnMgb2YgR2FkIHNoYWxsIGJlIEVsaWFzYXBoIHRoZSBzb24gb2YgUmV1ZWwuCkFuZCBoaXMgaG9zdCwgYW5kIHRob3NlIHRoYXQgd2VyZSBudW1iZXJlZCBvZiB0aGVtLCB3ZXJlIGZvcnR5IGFuZCBmaXZlIHRob3VzYW5kIGFuZCBzaXggaHVuZHJlZCBhbmQgZmlmdHkuCkFsbCB0aGF0IHdlcmUgbnVtYmVyZWQgaW4gdGhlIGNhbXAgb2YgUmV1YmVuIHdlcmUgYW4gaHVuZHJlZCB0aG91c2FuZCBhbmQgZmlmdHkgYW5kIG9uZSB0aG91c2FuZCBhbmQgZm91ciBodW5kcmVkIGFuZCBmaWZ0eSwgdGhyb3VnaG91dCB0aGVpciBhcm1pZXMuIEFuZCB0aGV5IHNoYWxsIHNldCBmb3J0aCBpbiB0aGUgc2Vjb25kIHJhbmsuClRoZW4gdGhlIHRhYmVybmFjbGUgb2YgdGhlIGNvbmdyZWdhdGlvbiBzaGFsbCBzZXQgZm9yd2FyZCB3aXRoIHRoZSBjYW1wIG9mIHRoZSBMZXZpdGVzIGluIHRoZSBtaWRzdCBvZiB0aGUgY2FtcDogYXMgdGhleSBlbmNhbXAsIHNvIHNoYWxsIHRoZXkgc2V0IGZvcndhcmQsIGV2ZXJ5IG1hbiBpbiBoaXMgcGxhY2UgYnkgdGhlaXIgc3RhbmRhcmRzLgpPbiB0aGUgd2VzdCBzaWRlIHNoYWxsIGJlIHRoZSBzdGFuZGFyZCBvZiB0aGUgY2FtcCBvZiBFcGhyYWltIGFjY29yZGluZyB0byB0aGVpciBhcm1pZXM6IGFuZCB0aGUgY2FwdGFpbiBvZiB0aGUgc29ucyBvZiBFcGhyYWltIHNoYWxsIGJlIEVsaXNoYW1hIHRoZSBzb24gb2YgQW1taWh1ZC4KQW5kIGhpcyBob3N0LCBhbmQgdGhvc2UgdGhhdCB3ZXJlIG51bWJlcmVkIG9mIHRoZW0sIHdlcmUgZm9ydHkgdGhvdXNhbmQgYW5kIGZpdmUgaHVuZHJlZC4KQW5kIGJ5IGhpbSBzaGFsbCBiZSB0aGUgdHJpYmUgb2YgTWFuYXNzZWg6IGFuZCB0aGUgY2FwdGFpbiBvZiB0aGUgY2hpbGRyZW4gb2YgTWFuYXNzZWggc2hhbGwgYmUgR2FtYWxpZWwgdGhlIHNvbiBvZiBQZWRhaHp1ci4KQW5kIGhpcyBob3N0LCBhbmQgdGhvc2UgdGhhdCB3ZXJlIG51bWJlcmVkIG9mIHRoZW0sIHdlcmUgdGhpcnR5IGFuZCB0d28gdGhvdXNhbmQgYW5kIHR3byBodW5kcmVkLgpUaGVuIHRoZSB0cmliZSBvZiBCZW5qYW1pbjogYW5kIHRoZSBjYXB0YWluIG9mIHRoZSBzb25zIG9mIEJlbmphbWluIHNoYWxsIGJlIEFiaWRhbiB0aGUgc29uIG9mIEdpZGVvbmkuCkFuZCBoaXMgaG9zdCwgYW5kIHRob3NlIHRoYXQgd2VyZSBudW1iZXJlZCBvZiB0aGVtLCB3ZXJlIHRoaXJ0eSBhbmQgZml2ZSB0aG91c2FuZCBhbmQgZm91ciBodW5kcmVkLgpBbGwgdGhhdCB3ZXJlIG51bWJlcmVkIG9mIHRoZSBjYW1wIG9mIEVwaHJhaW0gd2VyZSBhbiBodW5kcmVkIHRob3VzYW5kIGFuZCBlaWdodCB0aG91c2FuZCBhbmQgYW4gaHVuZHJlZCwgdGhyb3VnaG91dCB0aGVpciBhcm1pZXMuIEFuZCB0aGV5IHNoYWxsIGdvIGZvcndhcmQgaW4gdGhlIHRoaXJkIHJhbmsuClRoZSBzdGFuZGFyZCBvZiB0aGUgY2FtcCBvZiBEYW4gc2hhbGwgYmUgb24gdGhlIG5vcnRoIHNpZGUgYnkgdGhlaXIgYXJtaWVzOiBhbmQgdGhlIGNhcHRhaW4gb2YgdGhlIGNoaWxkcmVuIG9mIERhbiBzaGFsbCBiZSBBaGllemVyIHRoZSBzb24gb2YgQW1taXNoYWRkYWkuCkFuZCBoaXMgaG9zdCwgYW5kIHRob3NlIHRoYXQgd2VyZSBudW1iZXJlZCBvZiB0aGVtLCB3ZXJlIHRocmVlc2NvcmUgYW5kIHR3byB0aG91c2FuZCBhbmQgc2V2ZW4gaHVuZHJlZC4KQW5kIHRob3NlIHRoYXQgZW5jYW1wIGJ5IGhpbSBzaGFsbCBiZSB0aGUgdHJpYmUgb2YgQXNoZXI6IGFuZCB0aGUgY2FwdGFpbiBvZiB0aGUgY2hpbGRyZW4gb2YgQXNoZXIgc2hhbGwgYmUgUGFnaWVsIHRoZSBzb24gb2YgT2NyYW4uCkFuZCBoaXMgaG9zdCwgYW5kIHRob3NlIHRoYXQgd2VyZSBudW1iZXJlZCBvZiB0aGVtLCB3ZXJlIGZvcnR5IGFuZCBvbmUgdGhvdXNhbmQgYW5kIGZpdmUgaHVuZHJlZC4KVGhlbiB0aGUgdHJpYmUgb2YgTmFwaHRhbGk6IGFuZCB0aGUgY2FwdGFpbiBvZiB0aGUgY2hpbGRyZW4gb2YgTmFwaHRhbGkgc2hhbGwgYmUgQWhpcmEgdGhlIHNvbiBvZiBFbmFuLgpBbmQgaGlzIGhvc3QsIGFuZCB0aG9zZSB0aGF0IHdlcmUgbnVtYmVyZWQgb2YgdGhlbSwgd2VyZSBmaWZ0eSBhbmQgdGhyZWUgdGhvdXNhbmQgYW5kIGZvdXIgaHVuZHJlZC4KQWxsIHRoZXkgdGhhdCB3ZXJlIG51bWJlcmVkIGluIHRoZSBjYW1wIG9mIERhbiB3ZXJlIGFuIGh1bmRyZWQgdGhvdXNhbmQgYW5kIGZpZnR5IGFuZCBzZXZlbiB0aG91c2FuZCBhbmQgc2l4IGh1bmRyZWQuIFRoZXkgc2hhbGwgZ28gaGluZG1vc3Qgd2l0aCB0aGVpciBzdGFuZGFyZHMuClRoZXNlIGFyZSB0aG9zZSB3aGljaCB3ZXJlIG51bWJlcmVkIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgYnkgdGhlIGhvdXNlIG9mIHRoZWlyIGZhdGhlcnM6IGFsbCB0aG9zZSB0aGF0IHdlcmUgbnVtYmVyZWQgb2YgdGhlIGNhbXBzIHRocm91Z2hvdXQgdGhlaXIgaG9zdHMgd2VyZSBzaXggaHVuZHJlZCB0aG91c2FuZCBhbmQgdGhyZWUgdGhvdXNhbmQgYW5kIGZpdmUgaHVuZHJlZCBhbmQgZmlmdHkuCkJ1dCB0aGUgTGV2aXRlcyB3ZXJlIG5vdCBudW1iZXJlZCBhbW9uZyB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsOyBhcyB0aGUgTE9SRCBjb21tYW5kZWQgTW9zZXMuCkFuZCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGRpZCBhY2NvcmRpbmcgdG8gYWxsIHRoYXQgdGhlIExPUkQgY29tbWFuZGVkIE1vc2VzOiBzbyB0aGV5IHBpdGNoZWQgYnkgdGhlaXIgc3RhbmRhcmRzLCBhbmQgc28gdGhleSBzZXQgZm9yd2FyZCwgZXZlcnkgb25lIGFmdGVyIHRoZWlyIGZhbWlsaWVzLCBhY2NvcmRpbmcgdG8gdGhlIGhvdXNlIG9mIHRoZWlyIGZhdGhlcnMuClRoZXNlIGFsc28gYXJlIHRoZSBnZW5lcmF0aW9ucyBvZiBBYXJvbiBhbmQgTW9zZXMgaW4gdGhlIGRheSB0aGF0IHRoZSBMT1JEIHNwYWtlIHdpdGggTW9zZXMgaW4gbW91bnQgU2luYWkuCkFuZCB0aGVzZSBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzb25zIG9mIEFhcm9uOyBOYWRhYiB0aGUgZmlyc3Rib3JuLCBhbmQgQWJpaHUsIEVsZWF6YXIsIGFuZCBJdGhhbWFyLgpUaGVzZSBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzb25zIG9mIEFhcm9uLCB0aGUgcHJpZXN0cyB3aGljaCB3ZXJlIGFub2ludGVkLCB3aG9tIGhlIGNvbnNlY3JhdGVkIHRvIG1pbmlzdGVyIGluIHRoZSBwcmllc3QncyBvZmZpY2UuCkFuZCBOYWRhYiBhbmQgQWJpaHUgZGllZCBiZWZvcmUgdGhlIExPUkQsIHdoZW4gdGhleSBvZmZlcmVkIHN0cmFuZ2UgZmlyZSBiZWZvcmUgdGhlIExPUkQsIGluIHRoZSB3aWxkZXJuZXNzIG9mIFNpbmFpLCBhbmQgdGhleSBoYWQgbm8gY2hpbGRyZW46IGFuZCBFbGVhemFyIGFuZCBJdGhhbWFyIG1pbmlzdGVyZWQgaW4gdGhlIHByaWVzdCdzIG9mZmljZSBpbiB0aGUgc2lnaHQgb2YgQWFyb24gdGhlaXIgZmF0aGVyLgpBbmQgdGhlIExPUkQgc3Bha2UgdW50byBNb3Nlcywgc2F5aW5nLApCcmluZyB0aGUgdHJpYmUgb2YgTGV2aSBuZWFyLCBhbmQgcHJlc2VudCB0aGVtIGJlZm9yZSBBYXJvbiB0aGUgcHJpZXN0LCB0aGF0IHRoZXkgbWF5IG1pbmlzdGVyIHVudG8gaGltLgpBbmQgdGhleSBzaGFsbCBrZWVwIGhpcyBjaGFyZ2UsIGFuZCB0aGUgY2hhcmdlIG9mIHRoZSB3aG9sZSBjb25ncmVnYXRpb24gYmVmb3JlIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBjb25ncmVnYXRpb24sIHRvIGRvIHRoZSBzZXJ2aWNlIG9mIHRoZSB0YWJlcm5hY2xlLgpBbmQgdGhleSBzaGFsbCBrZWVwIGFsbCB0aGUgaW5zdHJ1bWVudHMgb2YgdGhlIHRhYmVybmFjbGUgb2YgdGhlIGNvbmdyZWdhdGlvbiwgYW5kIHRoZSBjaGFyZ2Ugb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgdG8gZG8gdGhlIHNlcnZpY2Ugb2YgdGhlIHRhYmVybmFjbGUuCkFuZCB0aG91IHNoYWx0IGdpdmUgdGhlIExldml0ZXMgdW50byBBYXJvbiBhbmQgdG8gaGlzIHNvbnM6IHRoZXkgYXJlIHdob2xseSBnaXZlbiB1bnRvIGhpbSBvdXQgb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbC4KQW5kIHRob3Ugc2hhbHQgYXBwb2ludCBBYXJvbiBhbmQgaGlzIHNvbnMsIGFuZCB0aGV5IHNoYWxsIHdhaXQgb24gdGhlaXIgcHJpZXN0J3Mgb2ZmaWNlOiBhbmQgdGhlIHN0cmFuZ2VyIHRoYXQgY29tZXRoIG5pZ2ggc2hhbGwgYmUgcHV0IHRvIGRlYXRoLgpBbmQgdGhlIExPUkQgc3Bha2UgdW50byBNb3Nlcywgc2F5aW5nLApBbmQgSSwgYmVob2xkLCBJIGhhdmUgdGFrZW4gdGhlIExldml0ZXMgZnJvbSBhbW9uZyB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGluc3RlYWQgb2YgYWxsIHRoZSBmaXJzdGJvcm4gdGhhdCBvcGVuZXRoIHRoZSBtYXRyaXggYW1vbmcgdGhlIGNoaWxkcmVuIG9mIElzcmFlbDogdGhlcmVmb3JlIHRoZSBMZXZpdGVzIHNoYWxsIGJlIG1pbmU7CkJlY2F1c2UgYWxsIHRoZSBmaXJzdGJvcm4gYXJlIG1pbmU7IGZvciBvbiB0aGUgZGF5IHRoYXQgSSBzbW90ZSBhbGwgdGhlIGZpcnN0Ym9ybiBpbiB0aGUgbGFuZCBvZiBFZ3lwdCBJIGhhbGxvd2VkIHVudG8gbWUgYWxsIHRoZSBmaXJzdGJvcm4gaW4gSXNyYWVsLCBib3RoIG1hbiBhbmQgYmVhc3Q6IG1pbmUgc2hhbGwgdGhleSBiZTogSSBhbSB0aGUgTE9SRC4KQW5kIHRoZSBMT1JEIHNwYWtlIHVudG8gTW9zZXMgaW4gdGhlIHdpbGRlcm5lc3Mgb2YgU2luYWksIHNheWluZywKTnVtYmVyIHRoZSBjaGlsZHJlbiBvZiBMZXZpIGFmdGVyIHRoZSBob3VzZSBvZiB0aGVpciBmYXRoZXJzLCBieSB0aGVpciBmYW1pbGllczogZXZlcnkgbWFsZSBmcm9tIGEgbW9udGggb2xkIGFuZCB1cHdhcmQgc2hhbHQgdGhvdSBudW1iZXIgdGhlbS4KQW5kIE1vc2VzIG51bWJlcmVkIHRoZW0gYWNjb3JkaW5nIHRvIHRoZSB3b3JkIG9mIHRoZSBMT1JELCBhcyBoZSB3YXMgY29tbWFuZGVkLgpBbmQgdGhlc2Ugd2VyZSB0aGUgc29ucyBvZiBMZXZpIGJ5IHRoZWlyIG5hbWVzOyBHZXJzaG9uLCBhbmQgS29oYXRoLCBhbmQgTWVyYXJpLgpBbmQgdGhlc2UgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc29ucyBvZiBHZXJzaG9uIGJ5IHRoZWlyIGZhbWlsaWVzOyBMaWJuaSwgYW5kIFNoaW1laS4KQW5kIHRoZSBzb25zIG9mIEtvaGF0aCBieSB0aGVpciBmYW1pbGllczsgQW1yYW0sIGFuZCBJemVoYXIsIEhlYnJvbiwgYW5kIFV6emllbC4KQW5kIHRoZSBzb25zIG9mIE1lcmFyaSBieSB0aGVpciBmYW1pbGllczsgTWFobGksIGFuZCBNdXNoaS4gVGhlc2UgYXJlIHRoZSBmYW1pbGllcyBvZiB0aGUgTGV2aXRlcyBhY2NvcmRpbmcgdG8gdGhlIGhvdXNlIG9mIHRoZWlyIGZhdGhlcnMuCk9mIEdlcnNob24gd2FzIHRoZSBmYW1pbHkgb2YgdGhlIExpYm5pdGVzLCBhbmQgdGhlIGZhbWlseSBvZiB0aGUgU2hpbWl0ZXM6IHRoZXNlIGFyZSB0aGUgZmFtaWxpZXMgb2YgdGhlIEdlcnNob25pdGVzLgpUaG9zZSB0aGF0IHdlcmUgbnVtYmVyZWQgb2YgdGhlbSwgYWNjb3JkaW5nIHRvIHRoZSBudW1iZXIgb2YgYWxsIHRoZSBtYWxlcywgZnJvbSBhIG1vbnRoIG9sZCBhbmQgdXB3YXJkLCBldmVuIHRob3NlIHRoYXQgd2VyZSBudW1iZXJlZCBvZiB0aGVtIHdlcmUgc2V2ZW4gdGhvdXNhbmQgYW5kIGZpdmUgaHVuZHJlZC4KVGhlIGZhbWlsaWVzIG9mIHRoZSBHZXJzaG9uaXRlcyBzaGFsbCBwaXRjaCBiZWhpbmQgdGhlIHRhYmVybmFjbGUgd2VzdHdhcmQuCkFuZCB0aGUgY2hpZWYgb2YgdGhlIGhvdXNlIG9mIHRoZSBmYXRoZXIgb2YgdGhlIEdlcnNob25pdGVzIHNoYWxsIGJlIEVsaWFzYXBoIHRoZSBzb24gb2YgTGFlbC4KQW5kIHRoZSBjaGFyZ2Ugb2YgdGhlIHNvbnMgb2YgR2Vyc2hvbiBpbiB0aGUgdGFiZXJuYWNsZSBvZiB0aGUgY29uZ3JlZ2F0aW9uIHNoYWxsIGJlIHRoZSB0YWJlcm5hY2xlLCBhbmQgdGhlIHRlbnQsIHRoZSBjb3ZlcmluZyB0aGVyZW9mLCBhbmQgdGhlIGhhbmdpbmcgZm9yIHRoZSBkb29yIG9mIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBjb25ncmVnYXRpb24sCkFuZCB0aGUgaGFuZ2luZ3Mgb2YgdGhlIGNvdXJ0LCBhbmQgdGhlIGN1cnRhaW4gZm9yIHRoZSBkb29yIG9mIHRoZSBjb3VydCwgd2hpY2ggaXMgYnkgdGhlIHRhYmVybmFjbGUsIGFuZCBieSB0aGUgYWx0YXIgcm91bmQgYWJvdXQsIGFuZCB0aGUgY29yZHMgb2YgaXQgZm9yIGFsbCB0aGUgc2VydmljZSB0aGVyZW9mLgpBbmQgb2YgS29oYXRoIHdhcyB0aGUgZmFtaWx5IG9mIHRoZSBBbXJhbWl0ZXMsIGFuZCB0aGUgZmFtaWx5IG9mIHRoZSBJemVoYXJpdGVzLCBhbmQgdGhlIGZhbWlseSBvZiB0aGUgSGVicm9uaXRlcywgYW5kIHRoZSBmYW1pbHkgb2YgdGhlIFV6emllbGl0ZXM6IHRoZXNlIGFyZSB0aGUgZmFtaWxpZXMgb2YgdGhlIEtvaGF0aGl0ZXMuCkluIHRoZSBudW1iZXIgb2YgYWxsIHRoZSBtYWxlcywgZnJvbSBhIG1vbnRoIG9sZCBhbmQgdXB3YXJkLCB3ZXJlIGVpZ2h0IHRob3VzYW5kIGFuZCBzaXggaHVuZHJlZCwga2VlcGluZyB0aGUgY2hhcmdlIG9mIHRoZSBzYW5jdHVhcnkuClRoZSBmYW1pbGllcyBvZiB0aGUgc29ucyBvZiBLb2hhdGggc2hhbGwgcGl0Y2ggb24gdGhlIHNpZGUgb2YgdGhlIHRhYmVybmFjbGUgc291dGh3YXJkLgpBbmQgdGhlIGNoaWVmIG9mIHRoZSBob3VzZSBvZiB0aGUgZmF0aGVyIG9mIHRoZSBmYW1pbGllcyBvZiB0aGUgS29oYXRoaXRlcyBzaGFsbCBiZSBFbGl6YXBoYW4gdGhlIHNvbiBvZiBVenppZWwuCkFuZCB0aGVpciBjaGFyZ2Ugc2hhbGwgYmUgdGhlIGFyaywgYW5kIHRoZSB0YWJsZSwgYW5kIHRoZSBjYW5kbGVzdGljaywgYW5kIHRoZSBhbHRhcnMsIGFuZCB0aGUgdmVzc2VscyBvZiB0aGUgc2FuY3R1YXJ5IHdoZXJld2l0aCB0aGV5IG1pbmlzdGVyLCBhbmQgdGhlIGhhbmdpbmcsIGFuZCBhbGwgdGhlIHNlcnZpY2UgdGhlcmVvZi4KQW5kIEVsZWF6YXIgdGhlIHNvbiBvZiBBYXJvbiB0aGUgcHJpZXN0IHNoYWxsIGJlIGNoaWVmIG92ZXIgdGhlIGNoaWVmIG9mIHRoZSBMZXZpdGVzLCBhbmQgaGF2ZSB0aGUgb3ZlcnNpZ2h0IG9mIHRoZW0gdGhhdCBrZWVwIHRoZSBjaGFyZ2Ugb2YgdGhlIHNhbmN0dWFyeS4KT2YgTWVyYXJpIHdhcyB0aGUgZmFtaWx5IG9mIHRoZSBNYWhsaXRlcywgYW5kIHRoZSBmYW1pbHkgb2YgdGhlIE11c2hpdGVzOiB0aGVzZSBhcmUgdGhlIGZhbWlsaWVzIG9mIE1lcmFyaS4KQW5kIHRob3NlIHRoYXQgd2VyZSBudW1iZXJlZCBvZiB0aGVtLCBhY2NvcmRpbmcgdG8gdGhlIG51bWJlciBvZiBhbGwgdGhlIG1hbGVzLCBmcm9tIGEgbW9udGggb2xkIGFuZCB1cHdhcmQsIHdlcmUgc2l4IHRob3VzYW5kIGFuZCB0d28gaHVuZHJlZC4KQW5kIHRoZSBjaGllZiBvZiB0aGUgaG91c2Ugb2YgdGhlIGZhdGhlciBvZiB0aGUgZmFtaWxpZXMgb2YgTWVyYXJpIHdhcyBadXJpZWwgdGhlIHNvbiBvZiBBYmloYWlsOiB0aGVzZSBzaGFsbCBwaXRjaCBvbiB0aGUgc2lkZSBvZiB0aGUgdGFiZXJuYWNsZSBub3J0aHdhcmQuCkFuZCB1bmRlciB0aGUgY3VzdG9keSBhbmQgY2hhcmdlIG9mIHRoZSBzb25zIG9mIE1lcmFyaSBzaGFsbCBiZSB0aGUgYm9hcmRzIG9mIHRoZSB0YWJlcm5hY2xlLCBhbmQgdGhlIGJhcnMgdGhlcmVvZiwgYW5kIHRoZSBwaWxsYXJzIHRoZXJlb2YsIGFuZCB0aGUgc29ja2V0cyB0aGVyZW9mLCBhbmQgYWxsIHRoZSB2ZXNzZWxzIHRoZXJlb2YsIGFuZCBhbGwgdGhhdCBzZXJ2ZXRoIHRoZXJldG8sCkFuZCB0aGUgcGlsbGFycyBvZiB0aGUgY291cnQgcm91bmQgYWJvdXQsIGFuZCB0aGVpciBzb2NrZXRzLCBhbmQgdGhlaXIgcGlucywgYW5kIHRoZWlyIGNvcmRzLgpCdXQgdGhvc2UgdGhhdCBlbmNhbXAgYmVmb3JlIHRoZSB0YWJlcm5hY2xlIHRvd2FyZCB0aGUgZWFzdCwgZXZlbiBiZWZvcmUgdGhlIHRhYmVybmFjbGUgb2YgdGhlIGNvbmdyZWdhdGlvbiBlYXN0d2FyZCwgc2hhbGwgYmUgTW9zZXMsIGFuZCBBYXJvbiBhbmQgaGlzIHNvbnMsIGtlZXBpbmcgdGhlIGNoYXJnZSBvZiB0aGUgc2FuY3R1YXJ5IGZvciB0aGUgY2hhcmdlIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWw7IGFuZCB0aGUgc3RyYW5nZXIgdGhhdCBjb21ldGggbmlnaCBzaGFsbCBiZSBwdXQgdG8gZGVhdGguCkFsbCB0aGF0IHdlcmUgbnVtYmVyZWQgb2YgdGhlIExldml0ZXMsIHdoaWNoIE1vc2VzIGFuZCBBYXJvbiBudW1iZXJlZCBhdCB0aGUgY29tbWFuZG1lbnQgb2YgdGhlIExPUkQsIHRocm91Z2hvdXQgdGhlaXIgZmFtaWxpZXMsIGFsbCB0aGUgbWFsZXMgZnJvbSBhIG1vbnRoIG9sZCBhbmQgdXB3YXJkLCB3ZXJlIHR3ZW50eSBhbmQgdHdvIHRob3VzYW5kLgpBbmQgdGhlIExPUkQgc2FpZCB1bnRvIE1vc2VzLCBOdW1iZXIgYWxsIHRoZSBmaXJzdGJvcm4gb2YgdGhlIG1hbGVzIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgZnJvbSBhIG1vbnRoIG9sZCBhbmQgdXB3YXJkLCBhbmQgdGFrZSB0aGUgbnVtYmVyIG9mIHRoZWlyIG5hbWVzLgpBbmQgdGhvdSBzaGFsdCB0YWtlIHRoZSBMZXZpdGVzIGZvciBtZSAoSSBhbSB0aGUgTE9SRCkgaW5zdGVhZCBvZiBhbGwgdGhlIGZpcnN0Ym9ybiBhbW9uZyB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsOyBhbmQgdGhlIGNhdHRsZSBvZiB0aGUgTGV2aXRlcyBpbnN0ZWFkIG9mIGFsbCB0aGUgZmlyc3RsaW5ncyBhbW9uZyB0aGUgY2F0dGxlIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwuCkFuZCBNb3NlcyBudW1iZXJlZCwgYXMgdGhlIExPUkQgY29tbWFuZGVkIGhpbSwgYWxsIHRoZSBmaXJzdGJvcm4gYW1vbmcgdGhlIGNoaWxkcmVuIG9mIElzcmFlbC4KQW5kIGFsbCB0aGUgZmlyc3Rib3JuIG1hbGVzIGJ5IHRoZSBudW1iZXIgb2YgbmFtZXMsIGZyb20gYSBtb250aCBvbGQgYW5kIHVwd2FyZCwgb2YgdGhvc2UgdGhhdCB3ZXJlIG51bWJlcmVkIG9mIHRoZW0sIHdlcmUgdHdlbnR5IGFuZCB0d28gdGhvdXNhbmQgdHdvIGh1bmRyZWQgYW5kIHRocmVlc2NvcmUgYW5kIHRoaXJ0ZWVuLgpBbmQgdGhlIExPUkQgc3Bha2UgdW50byBNb3Nlcywgc2F5aW5nLApUYWtlIHRoZSBMZXZpdGVzIGluc3RlYWQgb2YgYWxsIHRoZSBmaXJzdGJvcm4gYW1vbmcgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgYW5kIHRoZSBjYXR0bGUgb2YgdGhlIExldml0ZXMgaW5zdGVhZCBvZiB0aGVpciBjYXR0bGU7IGFuZCB0aGUgTGV2aXRlcyBzaGFsbCBiZSBtaW5lOiBJIGFtIHRoZSBMT1JELgpBbmQgZm9yIHRob3NlIHRoYXQgYXJlIHRvIGJlIHJlZGVlbWVkIG9mIHRoZSB0d28gaHVuZHJlZCBhbmQgdGhyZWVzY29yZSBhbmQgdGhpcnRlZW4gb2YgdGhlIGZpcnN0Ym9ybiBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLCB3aGljaCBhcmUgbW9yZSB0aGFuIHRoZSBMZXZpdGVzOwpUaG91IHNoYWx0IGV2ZW4gdGFrZSBmaXZlIHNoZWtlbHMgYXBpZWNlIGJ5IHRoZSBwb2xsLCBhZnRlciB0aGUgc2hla2VsIG9mIHRoZSBzYW5jdHVhcnkgc2hhbHQgdGhvdSB0YWtlIHRoZW06ICh0aGUgc2hla2VsIGlzIHR3ZW50eSBnZXJhaHM6KQpBbmQgdGhvdSBzaGFsdCBnaXZlIHRoZSBtb25leSwgd2hlcmV3aXRoIHRoZSBvZGQgbnVtYmVyIG9mIHRoZW0gaXMgdG8gYmUgcmVkZWVtZWQsIHVudG8gQWFyb24gYW5kIHRvIGhpcyBzb25zLgpBbmQgTW9zZXMgdG9vayB0aGUgcmVkZW1wdGlvbiBtb25leSBvZiB0aGVtIHRoYXQgd2VyZSBvdmVyIGFuZCBhYm92ZSB0aGVtIHRoYXQgd2VyZSByZWRlZW1lZCBieSB0aGUgTGV2aXRlczoKT2YgdGhlIGZpcnN0Ym9ybiBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIHRvb2sgaGUgdGhlIG1vbmV5OyBhIHRob3VzYW5kIHRocmVlIGh1bmRyZWQgYW5kIHRocmVlc2NvcmUgYW5kIGZpdmUgc2hla2VscywgYWZ0ZXIgdGhlIHNoZWtlbCBvZiB0aGUgc2FuY3R1YXJ5OgpBbmQgTW9zZXMgZ2F2ZSB0aGUgbW9uZXkgb2YgdGhlbSB0aGF0IHdlcmUgcmVkZWVtZWQgdW50byBBYXJvbiBhbmQgdG8gaGlzIHNvbnMsIGFjY29yZGluZyB0byB0aGUgd29yZCBvZiB0aGUgTE9SRCwgYXMgdGhlIExPUkQgY29tbWFuZGVkIE1vc2VzLgpBbmQgdGhlIExPUkQgc3Bha2UgdW50byBNb3NlcyBhbmQgdW50byBBYXJvbiwgc2F5aW5nLApUYWtlIHRoZSBzdW0gb2YgdGhlIHNvbnMgb2YgS29oYXRoIGZyb20gYW1vbmcgdGhlIHNvbnMgb2YgTGV2aSwgYWZ0ZXIgdGhlaXIgZmFtaWxpZXMsIGJ5IHRoZSBob3VzZSBvZiB0aGVpciBmYXRoZXJzLApGcm9tIHRoaXJ0eSB5ZWFycyBvbGQgYW5kIHVwd2FyZCBldmVuIHVudGlsIGZpZnR5IHllYXJzIG9sZCwgYWxsIHRoYXQgZW50ZXIgaW50byB0aGUgaG9zdCwgdG8gZG8gdGhlIHdvcmsgaW4gdGhlIHRhYmVybmFjbGUgb2YgdGhlIGNvbmdyZWdhdGlvbi4KVGhpcyBzaGFsbCBiZSB0aGUgc2VydmljZSBvZiB0aGUgc29ucyBvZiBLb2hhdGggaW4gdGhlIHRhYmVybmFjbGUgb2YgdGhlIGNvbmdyZWdhdGlvbiwgYWJvdXQgdGhlIG1vc3QgaG9seSB0aGluZ3M6CkFuZCB3aGVuIHRoZSBjYW1wIHNldHRldGggZm9yd2FyZCwgQWFyb24gc2hhbGwgY29tZSwgYW5kIGhpcyBzb25zLCBhbmQgdGhleSBzaGFsbCB0YWtlIGRvd24gdGhlIGNvdmVyaW5nIHZhaWwsIGFuZCBjb3ZlciB0aGUgYXJrIG9mIHRlc3RpbW9ueSB3aXRoIGl0OgpBbmQgc2hhbGwgcHV0IHRoZXJlb24gdGhlIGNvdmVyaW5nIG9mIGJhZGdlcnMnIHNraW5zLCBhbmQgc2hhbGwgc3ByZWFkIG92ZXIgaXQgYSBjbG90aCB3aG9sbHkgb2YgYmx1ZSwgYW5kIHNoYWxsIHB1dCBpbiB0aGUgc3RhdmVzIHRoZXJlb2YuCkFuZCB1cG9uIHRoZSB0YWJsZSBvZiBzaGV3YnJlYWQgdGhleSBzaGFsbCBzcHJlYWQgYSBjbG90aCBvZiBibHVlLCBhbmQgcHV0IHRoZXJlb24gdGhlIGRpc2hlcywgYW5kIHRoZSBzcG9vbnMsIGFuZCB0aGUgYm93bHMsIGFuZCBjb3ZlcnMgdG8gY292ZXIgd2l0aGFsOiBhbmQgdGhlIGNvbnRpbnVhbCBicmVhZCBzaGFsbCBiZSB0aGVyZW9uOgpBbmQgdGhleSBzaGFsbCBzcHJlYWQgdXBvbiB0aGVtIGEgY2xvdGggb2Ygc2NhcmxldCwgYW5kIGNvdmVyIHRoZSBzYW1lIHdpdGggYSBjb3ZlcmluZyBvZiBiYWRnZXJzJyBza2lucywgYW5kIHNoYWxsIHB1dCBpbiB0aGUgc3RhdmVzIHRoZXJlb2YuCkFuZCB0aGV5IHNoYWxsIHRha2UgYSBjbG90aCBvZiBibHVlLCBhbmQgY292ZXIgdGhlIGNhbmRsZXN0aWNrIG9mIHRoZSBsaWdodCwgYW5kIGhpcyBsYW1wcywgYW5kIGhpcyB0b25ncywgYW5kIGhpcyBzbnVmZmRpc2hlcywgYW5kIGFsbCB0aGUgb2lsIHZlc3NlbHMgdGhlcmVvZiwgd2hlcmV3aXRoIHRoZXkgbWluaXN0ZXIgdW50byBpdDoKQW5kIHRoZXkgc2hhbGwgcHV0IGl0IGFuZCBhbGwgdGhlIHZlc3NlbHMgdGhlcmVvZiB3aXRoaW4gYSBjb3ZlcmluZyBvZiBiYWRnZXJzJyBza2lucywgYW5kIHNoYWxsIHB1dCBpdCB1cG9uIGEgYmFyLgpBbmQgdXBvbiB0aGUgZ29sZGVuIGFsdGFyIHRoZXkgc2hhbGwgc3ByZWFkIGEgY2xvdGggb2YgYmx1ZSwgYW5kIGNvdmVyIGl0IHdpdGggYSBjb3ZlcmluZyBvZiBiYWRnZXJzJyBza2lucywgYW5kIHNoYWxsIHB1dCB0byB0aGUgc3RhdmVzIHRoZXJlb2Y6CkFuZCB0aGV5IHNoYWxsIHRha2UgYWxsIHRoZSBpbnN0cnVtZW50cyBvZiBtaW5pc3RyeSwgd2hlcmV3aXRoIHRoZXkgbWluaXN0ZXIgaW4gdGhlIHNhbmN0dWFyeSwgYW5kIHB1dCB0aGVtIGluIGEgY2xvdGggb2YgYmx1ZSwgYW5kIGNvdmVyIHRoZW0gd2l0aCBhIGNvdmVyaW5nIG9mIGJhZGdlcnMnIHNraW5zLCBhbmQgc2hhbGwgcHV0IHRoZW0gb24gYSBiYXI6CkFuZCB0aGV5IHNoYWxsIHRha2UgYXdheSB0aGUgYXNoZXMgZnJvbSB0aGUgYWx0YXIsIGFuZCBzcHJlYWQgYSBwdXJwbGUgY2xvdGggdGhlcmVvbjoKQW5kIHRoZXkgc2hhbGwgcHV0IHVwb24gaXQgYWxsIHRoZSB2ZXNzZWxzIHRoZXJlb2YsIHdoZXJld2l0aCB0aGV5IG1pbmlzdGVyIGFib3V0IGl0LCBldmVuIHRoZSBjZW5zZXJzLCB0aGUgZmxlc2hob29rcywgYW5kIHRoZSBzaG92ZWxzLCBhbmQgdGhlIGJhc29ucywgYWxsIHRoZSB2ZXNzZWxzIG9mIHRoZSBhbHRhcjsgYW5kIHRoZXkgc2hhbGwgc3ByZWFkIHVwb24gaXQgYSBjb3ZlcmluZyBvZiBiYWRnZXJzJyBza2lucywgYW5kIHB1dCB0byB0aGUgc3RhdmVzIG9mIGl0LgpBbmQgd2hlbiBBYXJvbiBhbmQgaGlzIHNvbnMgaGF2ZSBtYWRlIGFuIGVuZCBvZiBjb3ZlcmluZyB0aGUgc2FuY3R1YXJ5LCBhbmQgYWxsIHRoZSB2ZXNzZWxzIG9mIHRoZSBzYW5jdHVhcnksIGFzIHRoZSBjYW1wIGlzIHRvIHNldCBmb3J3YXJkOyBhZnRlciB0aGF0LCB0aGUgc29ucyBvZiBLb2hhdGggc2hhbGwgY29tZSB0byBiZWFyIGl0OiBidXQgdGhleSBzaGFsbCBub3QgdG91Y2ggYW55IGhvbHkgdGhpbmcsIGxlc3QgdGhleSBkaWUuIFRoZXNlIHRoaW5ncyBhcmUgdGhlIGJ1cmRlbiBvZiB0aGUgc29ucyBvZiBLb2hhdGggaW4gdGhlIHRhYmVybmFjbGUgb2YgdGhlIGNvbmdyZWdhdGlvbi4KQW5kIHRvIHRoZSBvZmZpY2Ugb2YgRWxlYXphciB0aGUgc29uIG9mIEFhcm9uIHRoZSBwcmllc3QgcGVydGFpbmV0aCB0aGUgb2lsIGZvciB0aGUgbGlnaHQsIGFuZCB0aGUgc3dlZXQgaW5jZW5zZSwgYW5kIHRoZSBkYWlseSBtZWF0IG9mZmVyaW5nLCBhbmQgdGhlIGFub2ludGluZyBvaWwsIGFuZCB0aGUgb3ZlcnNpZ2h0IG9mIGFsbCB0aGUgdGFiZXJuYWNsZSwgYW5kIG9mIGFsbCB0aGF0IHRoZXJlaW4gaXMsIGluIHRoZSBzYW5jdHVhcnksIGFuZCBpbiB0aGUgdmVzc2VscyB0aGVyZW9mLgpBbmQgdGhlIExPUkQgc3Bha2UgdW50byBNb3NlcyBhbmQgdW50byBBYXJvbiBzYXlpbmcsCkN1dCB5ZSBub3Qgb2ZmIHRoZSB0cmliZSBvZiB0aGUgZmFtaWxpZXMgb2YgdGhlIEtvaGF0aGl0ZXMgZnJvbSBhbW9uZyB0aGUgTGV2aXRlczoKQnV0IHRodXMgZG8gdW50byB0aGVtLCB0aGF0IHRoZXkgbWF5IGxpdmUsIGFuZCBub3QgZGllLCB3aGVuIHRoZXkgYXBwcm9hY2ggdW50byB0aGUgbW9zdCBob2x5IHRoaW5nczogQWFyb24gYW5kIGhpcyBzb25zIHNoYWxsIGdvIGluLCBhbmQgYXBwb2ludCB0aGVtIGV2ZXJ5IG9uZSB0byBoaXMgc2VydmljZSBhbmQgdG8gaGlzIGJ1cmRlbjoKQnV0IHRoZXkgc2hhbGwgbm90IGdvIGluIHRvIHNlZSB3aGVuIHRoZSBob2x5IHRoaW5ncyBhcmUgY292ZXJlZCwgbGVzdCB0aGV5IGRpZS4KQW5kIHRoZSBMT1JEIHNwYWtlIHVudG8gTW9zZXMsIHNheWluZywKVGFrZSBhbHNvIHRoZSBzdW0gb2YgdGhlIHNvbnMgb2YgR2Vyc2hvbiwgdGhyb3VnaG91dCB0aGUgaG91c2VzIG9mIHRoZWlyIGZhdGhlcnMsIGJ5IHRoZWlyIGZhbWlsaWVzOwpGcm9tIHRoaXJ0eSB5ZWFycyBvbGQgYW5kIHVwd2FyZCB1bnRpbCBmaWZ0eSB5ZWFycyBvbGQgc2hhbHQgdGhvdSBudW1iZXIgdGhlbTsgYWxsIHRoYXQgZW50ZXIgaW4gdG8gcGVyZm9ybSB0aGUgc2VydmljZSwgdG8gZG8gdGhlIHdvcmsgaW4gdGhlIHRhYmVybmFjbGUgb2YgdGhlIGNvbmdyZWdhdGlvbi4KVGhpcyBpcyB0aGUgc2VydmljZSBvZiB0aGUgZmFtaWxpZXMgb2YgdGhlIEdlcnNob25pdGVzLCB0byBzZXJ2ZSwgYW5kIGZvciBidXJkZW5zOgpBbmQgdGhleSBzaGFsbCBiZWFyIHRoZSBjdXJ0YWlucyBvZiB0aGUgdGFiZXJuYWNsZSwgYW5kIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBjb25ncmVnYXRpb24sIGhpcyBjb3ZlcmluZywgYW5kIHRoZSBjb3ZlcmluZyBvZiB0aGUgYmFkZ2Vycycgc2tpbnMgdGhhdCBpcyBhYm92ZSB1cG9uIGl0LCBhbmQgdGhlIGhhbmdpbmcgZm9yIHRoZSBkb29yIG9mIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBjb25ncmVnYXRpb24sCkFuZCB0aGUgaGFuZ2luZ3Mgb2YgdGhlIGNvdXJ0LCBhbmQgdGhlIGhhbmdpbmcgZm9yIHRoZSBkb29yIG9mIHRoZSBnYXRlIG9mIHRoZSBjb3VydCwgd2hpY2ggaXMgYnkgdGhlIHRhYmVybmFjbGUgYW5kIGJ5IHRoZSBhbHRhciByb3VuZCBhYm91dCwgYW5kIHRoZWlyIGNvcmRzLCBhbmQgYWxsIHRoZSBpbnN0cnVtZW50cyBvZiB0aGVpciBzZXJ2aWNlLCBhbmQgYWxsIHRoYXQgaXMgbWFkZSBmb3IgdGhlbTogc28gc2hhbGwgdGhleSBzZXJ2ZS4KQXQgdGhlIGFwcG9pbnRtZW50IG9mIEFhcm9uIGFuZCBoaXMgc29ucyBzaGFsbCBiZSBhbGwgdGhlIHNlcnZpY2Ugb2YgdGhlIHNvbnMgb2YgdGhlIEdlcnNob25pdGVzLCBpbiBhbGwgdGhlaXIgYnVyZGVucywgYW5kIGluIGFsbCB0aGVpciBzZXJ2aWNlOiBhbmQgeWUgc2hhbGwgYXBwb2ludCB1bnRvIHRoZW0gaW4gY2hhcmdlIGFsbCB0aGVpciBidXJkZW5zLgpUaGlzIGlzIHRoZSBzZXJ2aWNlIG9mIHRoZSBmYW1pbGllcyBvZiB0aGUgc29ucyBvZiBHZXJzaG9uIGluIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBjb25ncmVnYXRpb246IGFuZCB0aGVpciBjaGFyZ2Ugc2hhbGwgYmUgdW5kZXIgdGhlIGhhbmQgb2YgSXRoYW1hciB0aGUgc29uIG9mIEFhcm9uIHRoZSBwcmllc3QuCkFzIGZvciB0aGUgc29ucyBvZiBNZXJhcmksIHRob3Ugc2hhbHQgbnVtYmVyIHRoZW0gYWZ0ZXIgdGhlaXIgZmFtaWxpZXMsIGJ5IHRoZSBob3VzZSBvZiB0aGVpciBmYXRoZXJzOwpGcm9tIHRoaXJ0eSB5ZWFycyBvbGQgYW5kIHVwd2FyZCBldmVuIHVudG8gZmlmdHkgeWVhcnMgb2xkIHNoYWx0IHRob3UgbnVtYmVyIHRoZW0sIGV2ZXJ5IG9uZSB0aGF0IGVudGVyZXRoIGludG8gdGhlIHNlcnZpY2UsIHRvIGRvIHRoZSB3b3JrIG9mIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBjb25ncmVnYXRpb24uCkFuZCB0aGlzIGlzIHRoZSBjaGFyZ2Ugb2YgdGhlaXIgYnVyZGVuLCBhY2NvcmRpbmcgdG8gYWxsIHRoZWlyIHNlcnZpY2UgaW4gdGhlIHRhYmVybmFjbGUgb2YgdGhlIGNvbmdyZWdhdGlvbjsgdGhlIGJvYXJkcyBvZiB0aGUgdGFiZXJuYWNsZSwgYW5kIHRoZSBiYXJzIHRoZXJlb2YsIGFuZCB0aGUgcGlsbGFycyB0aGVyZW9mLCBhbmQgc29ja2V0cyB0aGVyZW9mLApBbmQgdGhlIHBpbGxhcnMgb2YgdGhlIGNvdXJ0IHJvdW5kIGFib3V0LCBhbmQgdGhlaXIgc29ja2V0cywgYW5kIHRoZWlyIHBpbnMsIGFuZCB0aGVpciBjb3Jkcywgd2l0aCBhbGwgdGhlaXIgaW5zdHJ1bWVudHMsIGFuZCB3aXRoIGFsbCB0aGVpciBzZXJ2aWNlOiBhbmQgYnkgbmFtZSB5ZSBzaGFsbCByZWNrb24gdGhlIGluc3RydW1lbnRzIG9mIHRoZSBjaGFyZ2Ugb2YgdGhlaXIgYnVyZGVuLgpUaGlzIGlzIHRoZSBzZXJ2aWNlIG9mIHRoZSBmYW1pbGllcyBvZiB0aGUgc29ucyBvZiBNZXJhcmksIGFjY29yZGluZyB0byBhbGwgdGhlaXIgc2VydmljZSwgaW4gdGhlIHRhYmVybmFjbGUgb2YgdGhlIGNvbmdyZWdhdGlvbiwgdW5kZXIgdGhlIGhhbmQgb2YgSXRoYW1hciB0aGUgc29uIG9mIEFhcm9uIHRoZSBwcmllc3QuCkFuZCBNb3NlcyBhbmQgQWFyb24gYW5kIHRoZSBjaGllZiBvZiB0aGUgY29uZ3JlZ2F0aW9uIG51bWJlcmVkIHRoZSBzb25zIG9mIHRoZSBLb2hhdGhpdGVzIGFmdGVyIHRoZWlyIGZhbWlsaWVzLCBhbmQgYWZ0ZXIgdGhlIGhvdXNlIG9mIHRoZWlyIGZhdGhlcnMsCkZyb20gdGhpcnR5IHllYXJzIG9sZCBhbmQgdXB3YXJkIGV2ZW4gdW50byBmaWZ0eSB5ZWFycyBvbGQsIGV2ZXJ5IG9uZSB0aGF0IGVudGVyZXRoIGludG8gdGhlIHNlcnZpY2UsIGZvciB0aGUgd29yayBpbiB0aGUgdGFiZXJuYWNsZSBvZiB0aGUgY29uZ3JlZ2F0aW9uOgpBbmQgdGhvc2UgdGhhdCB3ZXJlIG51bWJlcmVkIG9mIHRoZW0gYnkgdGhlaXIgZmFtaWxpZXMgd2VyZSB0d28gdGhvdXNhbmQgc2V2ZW4gaHVuZHJlZCBhbmQgZmlmdHkuClRoZXNlIHdlcmUgdGhleSB0aGF0IHdlcmUgbnVtYmVyZWQgb2YgdGhlIGZhbWlsaWVzIG9mIHRoZSBLb2hhdGhpdGVzLCBhbGwgdGhhdCBtaWdodCBkbyBzZXJ2aWNlIGluIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBjb25ncmVnYXRpb24sIHdoaWNoIE1vc2VzIGFuZCBBYXJvbiBkaWQgbnVtYmVyIGFjY29yZGluZyB0byB0aGUgY29tbWFuZG1lbnQgb2YgdGhlIExPUkQgYnkgdGhlIGhhbmQgb2YgTW9zZXMuCkFuZCB0aG9zZSB0aGF0IHdlcmUgbnVtYmVyZWQgb2YgdGhlIHNvbnMgb2YgR2Vyc2hvbiwgdGhyb3VnaG91dCB0aGVpciBmYW1pbGllcywgYW5kIGJ5IHRoZSBob3VzZSBvZiB0aGVpciBmYXRoZXJzLApGcm9tIHRoaXJ0eSB5ZWFycyBvbGQgYW5kIHVwd2FyZCBldmVuIHVudG8gZmlmdHkgeWVhcnMgb2xkLCBldmVyeSBvbmUgdGhhdCBlbnRlcmV0aCBpbnRvIHRoZSBzZXJ2aWNlLCBmb3IgdGhlIHdvcmsgaW4gdGhlIHRhYmVybmFjbGUgb2YgdGhlIGNvbmdyZWdhdGlvbiwKRXZlbiB0aG9zZSB0aGF0IHdlcmUgbnVtYmVyZWQgb2YgdGhlbSwgdGhyb3VnaG91dCB0aGVpciBmYW1pbGllcywgYnkgdGhlIGhvdXNlIG9mIHRoZWlyIGZhdGhlcnMsIHdlcmUgdHdvIHRob3VzYW5kIGFuZCBzaXggaHVuZHJlZCBhbmQgdGhpcnR5LgpUaGVzZSBhcmUgdGhleSB0aGF0IHdlcmUgbnVtYmVyZWQgb2YgdGhlIGZhbWlsaWVzIG9mIHRoZSBzb25zIG9mIEdlcnNob24sIG9mIGFsbCB0aGF0IG1pZ2h0IGRvIHNlcnZpY2UgaW4gdGhlIHRhYmVybmFjbGUgb2YgdGhlIGNvbmdyZWdhdGlvbiwgd2hvbSBNb3NlcyBhbmQgQWFyb24gZGlkIG51bWJlciBhY2NvcmRpbmcgdG8gdGhlIGNvbW1hbmRtZW50IG9mIHRoZSBMT1JELgpBbmQgdGhvc2UgdGhhdCB3ZXJlIG51bWJlcmVkIG9mIHRoZSBmYW1pbGllcyBvZiB0aGUgc29ucyBvZiBNZXJhcmksIHRocm91Z2hvdXQgdGhlaXIgZmFtaWxpZXMsIGJ5IHRoZSBob3VzZSBvZiB0aGVpciBmYXRoZXJzLApGcm9tIHRoaXJ0eSB5ZWFycyBvbGQgYW5kIHVwd2FyZCBldmVuIHVudG8gZmlmdHkgeWVhcnMgb2xkLCBldmVyeSBvbmUgdGhhdCBlbnRlcmV0aCBpbnRvIHRoZSBzZXJ2aWNlLCBmb3IgdGhlIHdvcmsgaW4gdGhlIHRhYmVybmFjbGUgb2YgdGhlIGNvbmdyZWdhdGlvbiwKRXZlbiB0aG9zZSB0aGF0IHdlcmUgbnVtYmVyZWQgb2YgdGhlbSBhZnRlciB0aGVpciBmYW1pbGllcywgd2VyZSB0aHJlZSB0aG91c2FuZCBhbmQgdHdvIGh1bmRyZWQuClRoZXNlIGJlIHRob3NlIHRoYXQgd2VyZSBudW1iZXJlZCBvZiB0aGUgZmFtaWxpZXMgb2YgdGhlIHNvbnMgb2YgTWVyYXJpLCB3aG9tIE1vc2VzIGFuZCBBYXJvbiBudW1iZXJlZCBhY2NvcmRpbmcgdG8gdGhlIHdvcmQgb2YgdGhlIExPUkQgYnkgdGhlIGhhbmQgb2YgTW9zZXMuCkFsbCB0aG9zZSB0aGF0IHdlcmUgbnVtYmVyZWQgb2YgdGhlIExldml0ZXMsIHdob20gTW9zZXMgYW5kIEFhcm9uIGFuZCB0aGUgY2hpZWYgb2YgSXNyYWVsIG51bWJlcmVkLCBhZnRlciB0aGVpciBmYW1pbGllcywgYW5kIGFmdGVyIHRoZSBob3VzZSBvZiB0aGVpciBmYXRoZXJzLApGcm9tIHRoaXJ0eSB5ZWFycyBvbGQgYW5kIHVwd2FyZCBldmVuIHVudG8gZmlmdHkgeWVhcnMgb2xkLCBldmVyeSBvbmUgdGhhdCBjYW1lIHRvIGRvIHRoZSBzZXJ2aWNlIG9mIHRoZSBtaW5pc3RyeSwgYW5kIHRoZSBzZXJ2aWNlIG9mIHRoZSBidXJkZW4gaW4gdGhlIHRhYmVybmFjbGUgb2YgdGhlIGNvbmdyZWdhdGlvbi4KRXZlbiB0aG9zZSB0aGF0IHdlcmUgbnVtYmVyZWQgb2YgdGhlbSwgd2VyZSBlaWdodCB0aG91c2FuZCBhbmQgZml2ZSBodW5kcmVkIGFuZCBmb3Vyc2NvcmUsCkFjY29yZGluZyB0byB0aGUgY29tbWFuZG1lbnQgb2YgdGhlIExPUkQgdGhleSB3ZXJlIG51bWJlcmVkIGJ5IHRoZSBoYW5kIG9mIE1vc2VzLCBldmVyeSBvbmUgYWNjb3JkaW5nIHRvIGhpcyBzZXJ2aWNlLCBhbmQgYWNjb3JkaW5nIHRvIGhpcyBidXJkZW46IHRodXMgd2VyZSB0aGV5IG51bWJlcmVkIG9mIGhpbSwgYXMgdGhlIExPUkQgY29tbWFuZGVkIE1vc2VzLgpBbmQgdGhlIExPUkQgc3Bha2UgdW50byBNb3Nlcywgc2F5aW5nLApDb21tYW5kIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIHRoYXQgdGhleSBwdXQgb3V0IG9mIHRoZSBjYW1wIGV2ZXJ5IGxlcGVyLCBhbmQgZXZlcnkgb25lIHRoYXQgaGF0aCBhbiBpc3N1ZSwgYW5kIHdob3NvZXZlciBpcyBkZWZpbGVkIGJ5IHRoZSBkZWFkOgpCb3RoIG1hbGUgYW5kIGZlbWFsZSBzaGFsbCB5ZSBwdXQgb3V0LCB3aXRob3V0IHRoZSBjYW1wIHNoYWxsIHllIHB1dCB0aGVtOyB0aGF0IHRoZXkgZGVmaWxlIG5vdCB0aGVpciBjYW1wcywgaW4gdGhlIG1pZHN0IHdoZXJlb2YgSSBkd2VsbC4KQW5kIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgZGlkIHNvLCBhbmQgcHV0IHRoZW0gb3V0IHdpdGhvdXQgdGhlIGNhbXA6IGFzIHRoZSBMT1JEIHNwYWtlIHVudG8gTW9zZXMsIHNvIGRpZCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLgpBbmQgdGhlIExPUkQgc3Bha2UgdW50byBNb3Nlcywgc2F5aW5nLApTcGVhayB1bnRvIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIFdoZW4gYSBtYW4gb3Igd29tYW4gc2hhbGwgY29tbWl0IGFueSBzaW4gdGhhdCBtZW4gY29tbWl0LCB0byBkbyBhIHRyZXNwYXNzIGFnYWluc3QgdGhlIExPUkQsIGFuZCB0aGF0IHBlcnNvbiBiZSBndWlsdHk7ClRoZW4gdGhleSBzaGFsbCBjb25mZXNzIHRoZWlyIHNpbiB3aGljaCB0aGV5IGhhdmUgZG9uZTogYW5kIGhlIHNoYWxsIHJlY29tcGVuc2UgaGlzIHRyZXNwYXNzIHdpdGggdGhlIHByaW5jaXBhbCB0aGVyZW9mLCBhbmQgYWRkIHVudG8gaXQgdGhlIGZpZnRoIHBhcnQgdGhlcmVvZiwgYW5kIGdpdmUgaXQgdW50byBoaW0gYWdhaW5zdCB3aG9tIGhlIGhhdGggdHJlc3Bhc3NlZC4KQnV0IGlmIHRoZSBtYW4gaGF2ZSBubyBraW5zbWFuIHRvIHJlY29tcGVuc2UgdGhlIHRyZXNwYXNzIHVudG8sIGxldCB0aGUgdHJlc3Bhc3MgYmUgcmVjb21wZW5zZWQgdW50byB0aGUgTE9SRCwgZXZlbiB0byB0aGUgcHJpZXN0OyBiZXNpZGUgdGhlIHJhbSBvZiB0aGUgYXRvbmVtZW50LCB3aGVyZWJ5IGFuIGF0b25lbWVudCBzaGFsbCBiZSBtYWRlIGZvciBoaW0uCkFuZCBldmVyeSBvZmZlcmluZyBvZiBhbGwgdGhlIGhvbHkgdGhpbmdzIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIHdoaWNoIHRoZXkgYnJpbmcgdW50byB0aGUgcHJpZXN0LCBzaGFsbCBiZSBoaXMuCkFuZCBldmVyeSBtYW4ncyBoYWxsb3dlZCB0aGluZ3Mgc2hhbGwgYmUgaGlzOiB3aGF0c29ldmVyIGFueSBtYW4gZ2l2ZXRoIHRoZSBwcmllc3QsIGl0IHNoYWxsIGJlIGhpcy4KQW5kIHRoZSBMT1JEIHNwYWtlIHVudG8gTW9zZXMsIHNheWluZywKU3BlYWsgdW50byB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLCBhbmQgc2F5IHVudG8gdGhlbSwgSWYgYW55IG1hbidzIHdpZmUgZ28gYXNpZGUsIGFuZCBjb21taXQgYSB0cmVzcGFzcyBhZ2FpbnN0IGhpbSwKQW5kIGEgbWFuIGxpZSB3aXRoIGhlciBjYXJuYWxseSwgYW5kIGl0IGJlIGhpZCBmcm9tIHRoZSBleWVzIG9mIGhlciBodXNiYW5kLCBhbmQgYmUga2VwdCBjbG9zZSwgYW5kIHNoZSBiZSBkZWZpbGVkLCBhbmQgdGhlcmUgYmUgbm8gd2l0bmVzcyBhZ2FpbnN0IGhlciwgbmVpdGhlciBzaGUgYmUgdGFrZW4gd2l0aCB0aGUgbWFubmVyOwpBbmQgdGhlIHNwaXJpdCBvZiBqZWFsb3VzeSBjb21lIHVwb24gaGltLCBhbmQgaGUgYmUgamVhbG91cyBvZiBoaXMgd2lmZSwgYW5kIHNoZSBiZSBkZWZpbGVkOiBvciBpZiB0aGUgc3Bpcml0IG9mIGplYWxvdXN5IGNvbWUgdXBvbiBoaW0sIGFuZCBoZSBiZSBqZWFsb3VzIG9mIGhpcyB3aWZlLCBhbmQgc2hlIGJlIG5vdCBkZWZpbGVkOgpUaGVuIHNoYWxsIHRoZSBtYW4gYnJpbmcgaGlzIHdpZmUgdW50byB0aGUgcHJpZXN0LCBhbmQgaGUgc2hhbGwgYnJpbmcgaGVyIG9mZmVyaW5nIGZvciBoZXIsIHRoZSB0ZW50aCBwYXJ0IG9mIGFuIGVwaGFoIG9mIGJhcmxleSBtZWFsOyBoZSBzaGFsbCBwb3VyIG5vIG9pbCB1cG9uIGl0LCBub3IgcHV0IGZyYW5raW5jZW5zZSB0aGVyZW9uOyBmb3IgaXQgaXMgYW4gb2ZmZXJpbmcgb2YgamVhbG91c3ksIGFuIG9mZmVyaW5nIG9mIG1lbW9yaWFsLCBicmluZ2luZyBpbmlxdWl0eSB0byByZW1lbWJyYW5jZS4KQW5kIHRoZSBwcmllc3Qgc2hhbGwgYnJpbmcgaGVyIG5lYXIsIGFuZCBzZXQgaGVyIGJlZm9yZSB0aGUgTE9SRDoKQW5kIHRoZSBwcmllc3Qgc2hhbGwgdGFrZSBob2x5IHdhdGVyIGluIGFuIGVhcnRoZW4gdmVzc2VsOyBhbmQgb2YgdGhlIGR1c3QgdGhhdCBpcyBpbiB0aGUgZmxvb3Igb2YgdGhlIHRhYmVybmFjbGUgdGhlIHByaWVzdCBzaGFsbCB0YWtlLCBhbmQgcHV0IGl0IGludG8gdGhlIHdhdGVyOgpBbmQgdGhlIHByaWVzdCBzaGFsbCBzZXQgdGhlIHdvbWFuIGJlZm9yZSB0aGUgTE9SRCwgYW5kIHVuY292ZXIgdGhlIHdvbWFuJ3MgaGVhZCwgYW5kIHB1dCB0aGUgb2ZmZXJpbmcgb2YgbWVtb3JpYWwgaW4gaGVyIGhhbmRzLCB3aGljaCBpcyB0aGUgamVhbG91c3kgb2ZmZXJpbmc6IGFuZCB0aGUgcHJpZXN0IHNoYWxsIGhhdmUgaW4gaGlzIGhhbmQgdGhlIGJpdHRlciB3YXRlciB0aGF0IGNhdXNldGggdGhlIGN1cnNlOgpBbmQgdGhlIHByaWVzdCBzaGFsbCBjaGFyZ2UgaGVyIGJ5IGFuIG9hdGgsIGFuZCBzYXkgdW50byB0aGUgd29tYW4sIElmIG5vIG1hbiBoYXZlIGxhaW4gd2l0aCB0aGVlLCBhbmQgaWYgdGhvdSBoYXN0IG5vdCBnb25lIGFzaWRlIHRvIHVuY2xlYW5uZXNzIHdpdGggYW5vdGhlciBpbnN0ZWFkIG9mIHRoeSBodXNiYW5kLCBiZSB0aG91IGZyZWUgZnJvbSB0aGlzIGJpdHRlciB3YXRlciB0aGF0IGNhdXNldGggdGhlIGN1cnNlOgpCdXQgaWYgdGhvdSBoYXN0IGdvbmUgYXNpZGUgdG8gYW5vdGhlciBpbnN0ZWFkIG9mIHRoeSBodXNiYW5kLCBhbmQgaWYgdGhvdSBiZSBkZWZpbGVkLCBhbmQgc29tZSBtYW4gaGF2ZSBsYWluIHdpdGggdGhlZSBiZXNpZGUgdGhpbmUgaHVzYmFuZDoKVGhlbiB0aGUgcHJpZXN0IHNoYWxsIGNoYXJnZSB0aGUgd29tYW4gd2l0aCBhbiBvYXRoIG9mIGN1cnNpbmcsIGFuZCB0aGUgcHJpZXN0IHNoYWxsIHNheSB1bnRvIHRoZSB3b21hbiwgVGhlIExPUkQgbWFrZSB0aGVlIGEgY3Vyc2UgYW5kIGFuIG9hdGggYW1vbmcgdGh5IHBlb3BsZSwgd2hlbiB0aGUgTE9SRCBkb3RoIG1ha2UgdGh5IHRoaWdoIHRvIHJvdCwgYW5kIHRoeSBiZWxseSB0byBzd2VsbDsKQW5kIHRoaXMgd2F0ZXIgdGhhdCBjYXVzZXRoIHRoZSBjdXJzZSBzaGFsbCBnbyBpbnRvIHRoeSBib3dlbHMsIHRvIG1ha2UgdGh5IGJlbGx5IHRvIHN3ZWxsLCBhbmQgdGh5IHRoaWdoIHRvIHJvdDogQW5kIHRoZSB3b21hbiBzaGFsbCBzYXksIEFtZW4sIGFtZW4uCkFuZCB0aGUgcHJpZXN0IHNoYWxsIHdyaXRlIHRoZXNlIGN1cnNlcyBpbiBhIGJvb2ssIGFuZCBoZSBzaGFsbCBibG90IHRoZW0gb3V0IHdpdGggdGhlIGJpdHRlciB3YXRlcjoKQW5kIGhlIHNoYWxsIGNhdXNlIHRoZSB3b21hbiB0byBkcmluayB0aGUgYml0dGVyIHdhdGVyIHRoYXQgY2F1c2V0aCB0aGUgY3Vyc2U6IGFuZCB0aGUgd2F0ZXIgdGhhdCBjYXVzZXRoIHRoZSBjdXJzZSBzaGFsbCBlbnRlciBpbnRvIGhlciwgYW5kIGJlY29tZSBiaXR0ZXIuClRoZW4gdGhlIHByaWVzdCBzaGFsbCB0YWtlIHRoZSBqZWFsb3VzeSBvZmZlcmluZyBvdXQgb2YgdGhlIHdvbWFuJ3MgaGFuZCwgYW5kIHNoYWxsIHdhdmUgdGhlIG9mZmVyaW5nIGJlZm9yZSB0aGUgTE9SRCwgYW5kIG9mZmVyIGl0IHVwb24gdGhlIGFsdGFyOgpBbmQgdGhlIHByaWVzdCBzaGFsbCB0YWtlIGFuIGhhbmRmdWwgb2YgdGhlIG9mZmVyaW5nLCBldmVuIHRoZSBtZW1vcmlhbCB0aGVyZW9mLCBhbmQgYnVybiBpdCB1cG9uIHRoZSBhbHRhciwgYW5kIGFmdGVyd2FyZCBzaGFsbCBjYXVzZSB0aGUgd29tYW4gdG8gZHJpbmsgdGhlIHdhdGVyLgpBbmQgd2hlbiBoZSBoYXRoIG1hZGUgaGVyIHRvIGRyaW5rIHRoZSB3YXRlciwgdGhlbiBpdCBzaGFsbCBjb21lIHRvIHBhc3MsIHRoYXQsIGlmIHNoZSBiZSBkZWZpbGVkLCBhbmQgaGF2ZSBkb25lIHRyZXNwYXNzIGFnYWluc3QgaGVyIGh1c2JhbmQsIHRoYXQgdGhlIHdhdGVyIHRoYXQgY2F1c2V0aCB0aGUgY3Vyc2Ugc2hhbGwgZW50ZXIgaW50byBoZXIsIGFuZCBiZWNvbWUgYml0dGVyLCBhbmQgaGVyIGJlbGx5IHNoYWxsIHN3ZWxsLCBhbmQgaGVyIHRoaWdoIHNoYWxsIHJvdDogYW5kIHRoZSB3b21hbiBzaGFsbCBiZSBhIGN1cnNlIGFtb25nIGhlciBwZW9wbGUuCkFuZCBpZiB0aGUgd29tYW4gYmUgbm90IGRlZmlsZWQsIGJ1dCBiZSBjbGVhbjsgdGhlbiBzaGUgc2hhbGwgYmUgZnJlZSwgYW5kIHNoYWxsIGNvbmNlaXZlIHNlZWQuClRoaXMgaXMgdGhlIGxhdyBvZiBqZWFsb3VzaWVzLCB3aGVuIGEgd2lmZSBnb2V0aCBhc2lkZSB0byBhbm90aGVyIGluc3RlYWQgb2YgaGVyIGh1c2JhbmQsIGFuZCBpcyBkZWZpbGVkOwpPciB3aGVuIHRoZSBzcGlyaXQgb2YgamVhbG91c3kgY29tZXRoIHVwb24gaGltLCBhbmQgaGUgYmUgamVhbG91cyBvdmVyIGhpcyB3aWZlLCBhbmQgc2hhbGwgc2V0IHRoZSB3b21hbiBiZWZvcmUgdGhlIExPUkQsIGFuZCB0aGUgcHJpZXN0IHNoYWxsIGV4ZWN1dGUgdXBvbiBoZXIgYWxsIHRoaXMgbGF3LgpUaGVuIHNoYWxsIHRoZSBtYW4gYmUgZ3VpbHRsZXNzIGZyb20gaW5pcXVpdHksIGFuZCB0aGlzIHdvbWFuIHNoYWxsIGJlYXIgaGVyIGluaXF1aXR5LgpBbmQgdGhlIExPUkQgc3Bha2UgdW50byBNb3Nlcywgc2F5aW5nLApTcGVhayB1bnRvIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIGFuZCBzYXkgdW50byB0aGVtLCBXaGVuIGVpdGhlciBtYW4gb3Igd29tYW4gc2hhbGwgc2VwYXJhdGUgdGhlbXNlbHZlcyB0byB2b3cgYSB2b3cgb2YgYSBOYXphcml0ZSwgdG8gc2VwYXJhdGUgdGhlbXNlbHZlcyB1bnRvIHRoZSBMT1JEOgpIZSBzaGFsbCBzZXBhcmF0ZSBoaW1zZWxmIGZyb20gd2luZSBhbmQgc3Ryb25nIGRyaW5rLCBhbmQgc2hhbGwgZHJpbmsgbm8gdmluZWdhciBvZiB3aW5lLCBvciB2aW5lZ2FyIG9mIHN0cm9uZyBkcmluaywgbmVpdGhlciBzaGFsbCBoZSBkcmluayBhbnkgbGlxdW9yIG9mIGdyYXBlcywgbm9yIGVhdCBtb2lzdCBncmFwZXMsIG9yIGRyaWVkLgpBbGwgdGhlIGRheXMgb2YgaGlzIHNlcGFyYXRpb24gc2hhbGwgaGUgZWF0IG5vdGhpbmcgdGhhdCBpcyBtYWRlIG9mIHRoZSB2aW5lIHRyZWUsIGZyb20gdGhlIGtlcm5lbHMgZXZlbiB0byB0aGUgaHVzay4KQWxsIHRoZSBkYXlzIG9mIHRoZSB2b3cgb2YgaGlzIHNlcGFyYXRpb24gdGhlcmUgc2hhbGwgbm8gcmF6b3IgY29tZSB1cG9uIGhpcyBoZWFkOiB1bnRpbCB0aGUgZGF5cyBiZSBmdWxmaWxsZWQsIGluIHRoZSB3aGljaCBoZSBzZXBhcmF0ZXRoIGhpbXNlbGYgdW50byB0aGUgTE9SRCwgaGUgc2hhbGwgYmUgaG9seSwgYW5kIHNoYWxsIGxldCB0aGUgbG9ja3Mgb2YgdGhlIGhhaXIgb2YgaGlzIGhlYWQgZ3Jvdy4KQWxsIHRoZSBkYXlzIHRoYXQgaGUgc2VwYXJhdGV0aCBoaW1zZWxmIHVudG8gdGhlIExPUkQgaGUgc2hhbGwgY29tZSBhdCBubyBkZWFkIGJvZHkuCkhlIHNoYWxsIG5vdCBtYWtlIGhpbXNlbGYgdW5jbGVhbiBmb3IgaGlzIGZhdGhlciwgb3IgZm9yIGhpcyBtb3RoZXIsIGZvciBoaXMgYnJvdGhlciwgb3IgZm9yIGhpcyBzaXN0ZXIsIHdoZW4gdGhleSBkaWU6IGJlY2F1c2UgdGhlIGNvbnNlY3JhdGlvbiBvZiBoaXMgR29kIGlzIHVwb24gaGlzIGhlYWQuCkFsbCB0aGUgZGF5cyBvZiBoaXMgc2VwYXJhdGlvbiBoZSBpcyBob2x5IHVudG8gdGhlIExPUkQuCkFuZCBpZiBhbnkgbWFuIGRpZSB2ZXJ5IHN1ZGRlbmx5IGJ5IGhpbSwgYW5kIGhlIGhhdGggZGVmaWxlZCB0aGUgaGVhZCBvZiBoaXMgY29uc2VjcmF0aW9uOyB0aGVuIGhlIHNoYWxsIHNoYXZlIGhpcyBoZWFkIGluIHRoZSBkYXkgb2YgaGlzIGNsZWFuc2luZywgb24gdGhlIHNldmVudGggZGF5IHNoYWxsIGhlIHNoYXZlIGl0LgpBbmQgb24gdGhlIGVpZ2h0aCBkYXkgaGUgc2hhbGwgYnJpbmcgdHdvIHR1cnRsZXMsIG9yIHR3byB5b3VuZyBwaWdlb25zLCB0byB0aGUgcHJpZXN0LCB0byB0aGUgZG9vciBvZiB0aGUgdGFiZXJuYWNsZSBvZiB0aGUgY29uZ3JlZ2F0aW9uOgpBbmQgdGhlIHByaWVzdCBzaGFsbCBvZmZlciB0aGUgb25lIGZvciBhIHNpbiBvZmZlcmluZywgYW5kIHRoZSBvdGhlciBmb3IgYSBidXJudCBvZmZlcmluZywgYW5kIG1ha2UgYW4gYXRvbmVtZW50IGZvciBoaW0sIGZvciB0aGF0IGhlIHNpbm5lZCBieSB0aGUgZGVhZCwgYW5kIHNoYWxsIGhhbGxvdyBoaXMgaGVhZCB0aGF0IHNhbWUgZGF5LgpBbmQgaGUgc2hhbGwgY29uc2VjcmF0ZSB1bnRvIHRoZSBMT1JEIHRoZSBkYXlzIG9mIGhpcyBzZXBhcmF0aW9uLCBhbmQgc2hhbGwgYnJpbmcgYSBsYW1iIG9mIHRoZSBmaXJzdCB5ZWFyIGZvciBhIHRyZXNwYXNzIG9mZmVyaW5nOiBidXQgdGhlIGRheXMgdGhhdCB3ZXJlIGJlZm9yZSBzaGFsbCBiZSBsb3N0LCBiZWNhdXNlIGhpcyBzZXBhcmF0aW9uIHdhcyBkZWZpbGVkLgpBbmQgdGhpcyBpcyB0aGUgbGF3IG9mIHRoZSBOYXphcml0ZSwgd2hlbiB0aGUgZGF5cyBvZiBoaXMgc2VwYXJhdGlvbiBhcmUgZnVsZmlsbGVkOiBoZSBzaGFsbCBiZSBicm91Z2h0IHVudG8gdGhlIGRvb3Igb2YgdGhlIHRhYmVybmFjbGUgb2YgdGhlIGNvbmdyZWdhdGlvbjoKQW5kIGhlIHNoYWxsIG9mZmVyIGhpcyBvZmZlcmluZyB1bnRvIHRoZSBMT1JELCBvbmUgaGUgbGFtYiBvZiB0aGUgZmlyc3QgeWVhciB3aXRob3V0IGJsZW1pc2ggZm9yIGEgYnVybnQgb2ZmZXJpbmcsIGFuZCBvbmUgZXdlIGxhbWIgb2YgdGhlIGZpcnN0IHllYXIgd2l0aG91dCBibGVtaXNoIGZvciBhIHNpbiBvZmZlcmluZywgYW5kIG9uZSByYW0gd2l0aG91dCBibGVtaXNoIGZvciBwZWFjZSBvZmZlcmluZ3MsCkFuZCBhIGJhc2tldCBvZiB1bmxlYXZlbmVkIGJyZWFkLCBjYWtlcyBvZiBmaW5lIGZsb3VyIG1pbmdsZWQgd2l0aCBvaWwsIGFuZCB3YWZlcnMgb2YgdW5sZWF2ZW5lZCBicmVhZCBhbm9pbnRlZCB3aXRoIG9pbCwgYW5kIHRoZWlyIG1lYXQgb2ZmZXJpbmcsIGFuZCB0aGVpciBkcmluayBvZmZlcmluZ3MuCkFuZCB0aGUgcHJpZXN0IHNoYWxsIGJyaW5nIHRoZW0gYmVmb3JlIHRoZSBMT1JELCBhbmQgc2hhbGwgb2ZmZXIgaGlzIHNpbiBvZmZlcmluZywgYW5kIGhpcyBidXJudCBvZmZlcmluZzoKQW5kIGhlIHNoYWxsIG9mZmVyIHRoZSByYW0gZm9yIGEgc2FjcmlmaWNlIG9mIHBlYWNlIG9mZmVyaW5ncyB1bnRvIHRoZSBMT1JELCB3aXRoIHRoZSBiYXNrZXQgb2YgdW5sZWF2ZW5lZCBicmVhZDogdGhlIHByaWVzdCBzaGFsbCBvZmZlciBhbHNvIGhpcyBtZWF0IG9mZmVyaW5nLCBhbmQgaGlzIGRyaW5rIG9mZmVyaW5nLgpBbmQgdGhlIE5hemFyaXRlIHNoYWxsIHNoYXZlIHRoZSBoZWFkIG9mIGhpcyBzZXBhcmF0aW9uIGF0IHRoZSBkb29yIG9mIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBjb25ncmVnYXRpb24sIGFuZCBzaGFsbCB0YWtlIHRoZSBoYWlyIG9mIHRoZSBoZWFkIG9mIGhpcyBzZXBhcmF0aW9uLCBhbmQgcHV0IGl0IGluIHRoZSBmaXJlIHdoaWNoIGlzIHVuZGVyIHRoZSBzYWNyaWZpY2Ugb2YgdGhlIHBlYWNlIG9mZmVyaW5ncy4KQW5kIHRoZSBwcmllc3Qgc2hhbGwgdGFrZSB0aGUgc29kZGVuIHNob3VsZGVyIG9mIHRoZSByYW0sIGFuZCBvbmUgdW5sZWF2ZW5lZCBjYWtlIG91dCBvZiB0aGUgYmFza2V0LCBhbmQgb25lIHVubGVhdmVuZWQgd2FmZXIsIGFuZCBzaGFsbCBwdXQgdGhlbSB1cG9uIHRoZSBoYW5kcyBvZiB0aGUgTmF6YXJpdGUsIGFmdGVyIHRoZSBoYWlyIG9mIGhpcyBzZXBhcmF0aW9uIGlzIHNoYXZlbjoKQW5kIHRoZSBwcmllc3Qgc2hhbGwgd2F2ZSB0aGVtIGZvciBhIHdhdmUgb2ZmZXJpbmcgYmVmb3JlIHRoZSBMT1JEOiB0aGlzIGlzIGhvbHkgZm9yIHRoZSBwcmllc3QsIHdpdGggdGhlIHdhdmUgYnJlYXN0IGFuZCBoZWF2ZSBzaG91bGRlcjogYW5kIGFmdGVyIHRoYXQgdGhlIE5hemFyaXRlIG1heSBkcmluayB3aW5lLgpUaGlzIGlzIHRoZSBsYXcgb2YgdGhlIE5hemFyaXRlIHdobyBoYXRoIHZvd2VkLCBhbmQgb2YgaGlzIG9mZmVyaW5nIHVudG8gdGhlIExPUkQgZm9yIGhpcyBzZXBhcmF0aW9uLCBiZXNpZGUgdGhhdCB0aGF0IGhpcyBoYW5kIHNoYWxsIGdldDogYWNjb3JkaW5nIHRvIHRoZSB2b3cgd2hpY2ggaGUgdm93ZWQsIHNvIGhlIG11c3QgZG8gYWZ0ZXIgdGhlIGxhdyBvZiBoaXMgc2VwYXJhdGlvbi4KQW5kIHRoZSBMT1JEIHNwYWtlIHVudG8gTW9zZXMsIHNheWluZywKU3BlYWsgdW50byBBYXJvbiBhbmQgdW50byBoaXMgc29ucywgc2F5aW5nLCBPbiB0aGlzIHdpc2UgeWUgc2hhbGwgYmxlc3MgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgc2F5aW5nIHVudG8gdGhlbSwKVGhlIExPUkQgYmxlc3MgdGhlZSwgYW5kIGtlZXAgdGhlZToKVGhlIExPUkQgbWFrZSBoaXMgZmFjZSBzaGluZSB1cG9uIHRoZWUsIGFuZCBiZSBncmFjaW91cyB1bnRvIHRoZWU6ClRoZSBMT1JEIGxpZnQgdXAgaGlzIGNvdW50ZW5hbmNlIHVwb24gdGhlZSwgYW5kIGdpdmUgdGhlZSBwZWFjZS4KQW5kIHRoZXkgc2hhbGwgcHV0IG15IG5hbWUgdXBvbiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLCBhbmQgSSB3aWxsIGJsZXNzIHRoZW0uCkFuZCBpdCBjYW1lIHRvIHBhc3Mgb24gdGhlIGRheSB0aGF0IE1vc2VzIGhhZCBmdWxseSBzZXQgdXAgdGhlIHRhYmVybmFjbGUsIGFuZCBoYWQgYW5vaW50ZWQgaXQsIGFuZCBzYW5jdGlmaWVkIGl0LCBhbmQgYWxsIHRoZSBpbnN0cnVtZW50cyB0aGVyZW9mLCBib3RoIHRoZSBhbHRhciBhbmQgYWxsIHRoZSB2ZXNzZWxzIHRoZXJlb2YsIGFuZCBoYWQgYW5vaW50ZWQgdGhlbSwgYW5kIHNhbmN0aWZpZWQgdGhlbTsKVGhhdCB0aGUgcHJpbmNlcyBvZiBJc3JhZWwsIGhlYWRzIG9mIHRoZSBob3VzZSBvZiB0aGVpciBmYXRoZXJzLCB3aG8gd2VyZSB0aGUgcHJpbmNlcyBvZiB0aGUgdHJpYmVzLCBhbmQgd2VyZSBvdmVyIHRoZW0gdGhhdCB3ZXJlIG51bWJlcmVkLCBvZmZlcmVkOgpBbmQgdGhleSBicm91Z2h0IHRoZWlyIG9mZmVyaW5nIGJlZm9yZSB0aGUgTE9SRCwgc2l4IGNvdmVyZWQgd2Fnb25zLCBhbmQgdHdlbHZlIG94ZW47IGEgd2Fnb24gZm9yIHR3byBvZiB0aGUgcHJpbmNlcywgYW5kIGZvciBlYWNoIG9uZSBhbiBveDogYW5kIHRoZXkgYnJvdWdodCB0aGVtIGJlZm9yZSB0aGUgdGFiZXJuYWNsZS4KQW5kIHRoZSBMT1JEIHNwYWtlIHVudG8gTW9zZXMsIHNheWluZywKVGFrZSBpdCBvZiB0aGVtLCB0aGF0IHRoZXkgbWF5IGJlIHRvIGRvIHRoZSBzZXJ2aWNlIG9mIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBjb25ncmVnYXRpb247IGFuZCB0aG91IHNoYWx0IGdpdmUgdGhlbSB1bnRvIHRoZSBMZXZpdGVzLCB0byBldmVyeSBtYW4gYWNjb3JkaW5nIHRvIGhpcyBzZXJ2aWNlLgpBbmQgTW9zZXMgdG9vayB0aGUgd2Fnb25zIGFuZCB0aGUgb3hlbiwgYW5kIGdhdmUgdGhlbSB1bnRvIHRoZSBMZXZpdGVzLgpUd28gd2Fnb25zIGFuZCBmb3VyIG94ZW4gaGUgZ2F2ZSB1bnRvIHRoZSBzb25zIG9mIEdlcnNob24sIGFjY29yZGluZyB0byB0aGVpciBzZXJ2aWNlOgpBbmQgZm91ciB3YWdvbnMgYW5kIGVpZ2h0IG94ZW4gaGUgZ2F2ZSB1bnRvIHRoZSBzb25zIG9mIE1lcmFyaSwgYWNjb3JkaW5nIHVudG8gdGhlaXIgc2VydmljZSwgdW5kZXIgdGhlIGhhbmQgb2YgSXRoYW1hciB0aGUgc29uIG9mIEFhcm9uIHRoZSBwcmllc3QuCkJ1dCB1bnRvIHRoZSBzb25zIG9mIEtvaGF0aCBoZSBnYXZlIG5vbmU6IGJlY2F1c2UgdGhlIHNlcnZpY2Ugb2YgdGhlIHNhbmN0dWFyeSBiZWxvbmdpbmcgdW50byB0aGVtIHdhcyB0aGF0IHRoZXkgc2hvdWxkIGJlYXIgdXBvbiB0aGVpciBzaG91bGRlcnMuCkFuZCB0aGUgcHJpbmNlcyBvZmZlcmVkIGZvciBkZWRpY2F0aW5nIG9mIHRoZSBhbHRhciBpbiB0aGUgZGF5IHRoYXQgaXQgd2FzIGFub2ludGVkLCBldmVuIHRoZSBwcmluY2VzIG9mZmVyZWQgdGhlaXIgb2ZmZXJpbmcgYmVmb3JlIHRoZSBhbHRhci4KQW5kIHRoZSBMT1JEIHNhaWQgdW50byBNb3NlcywgVGhleSBzaGFsbCBvZmZlciB0aGVpciBvZmZlcmluZywgZWFjaCBwcmluY2Ugb24gaGlzIGRheSwgZm9yIHRoZSBkZWRpY2F0aW5nIG9mIHRoZSBhbHRhci4KQW5kIGhlIHRoYXQgb2ZmZXJlZCBoaXMgb2ZmZXJpbmcgdGhlIGZpcnN0IGRheSB3YXMgTmFoc2hvbiB0aGUgc29uIG9mIEFtbWluYWRhYiwgb2YgdGhlIHRyaWJlIG9mIEp1ZGFoOgpBbmQgaGlzIG9mZmVyaW5nIHdhcyBvbmUgc2lsdmVyIGNoYXJnZXIsIHRoZSB3ZWlnaHQgdGhlcmVvZiB3YXMgYW4gaHVuZHJlZCBhbmQgdGhpcnR5IHNoZWtlbHMsIG9uZSBzaWx2ZXIgYm93bCBvZiBzZXZlbnR5IHNoZWtlbHMsIGFmdGVyIHRoZSBzaGVrZWwgb2YgdGhlIHNhbmN0dWFyeTsgYm90aCBvZiB0aGVtIHdlcmUgZnVsbCBvZiBmaW5lIGZsb3VyIG1pbmdsZWQgd2l0aCBvaWwgZm9yIGEgbWVhdCBvZmZlcmluZzoKT25lIHNwb29uIG9mIHRlbiBzaGVrZWxzIG9mIGdvbGQsIGZ1bGwgb2YgaW5jZW5zZToKT25lIHlvdW5nIGJ1bGxvY2ssIG9uZSByYW0sIG9uZSBsYW1iIG9mIHRoZSBmaXJzdCB5ZWFyLCBmb3IgYSBidXJudCBvZmZlcmluZzoKT25lIGtpZCBvZiB0aGUgZ29hdHMgZm9yIGEgc2luIG9mZmVyaW5nOgpBbmQgZm9yIGEgc2FjcmlmaWNlIG9mIHBlYWNlIG9mZmVyaW5ncywgdHdvIG94ZW4sIGZpdmUgcmFtcywgZml2ZSBoZSBnb2F0cywgZml2ZSBsYW1icyBvZiB0aGUgZmlyc3QgeWVhcjogdGhpcyB3YXMgdGhlIG9mZmVyaW5nIG9mIE5haHNob24gdGhlIHNvbiBvZiBBbW1pbmFkYWIuCk9uIHRoZSBzZWNvbmQgZGF5IE5ldGhhbmVlbCB0aGUgc29uIG9mIFp1YXIsIHByaW5jZSBvZiBJc3NhY2hhciwgZGlkIG9mZmVyOgpIZSBvZmZlcmVkIGZvciBoaXMgb2ZmZXJpbmcgb25lIHNpbHZlciBjaGFyZ2VyLCB0aGUgd2VpZ2h0IHdoZXJlb2Ygd2FzIGFuIGh1bmRyZWQgYW5kIHRoaXJ0eSBzaGVrZWxzLCBvbmUgc2lsdmVyIGJvd2wgb2Ygc2V2ZW50eSBzaGVrZWxzLCBhZnRlciB0aGUgc2hla2VsIG9mIHRoZSBzYW5jdHVhcnk7IGJvdGggb2YgdGhlbSBmdWxsIG9mIGZpbmUgZmxvdXIgbWluZ2xlZCB3aXRoIG9pbCBmb3IgYSBtZWF0IG9mZmVyaW5nOgpPbmUgc3Bvb24gb2YgZ29sZCBvZiB0ZW4gc2hla2VscywgZnVsbCBvZiBpbmNlbnNlOgpPbmUgeW91bmcgYnVsbG9jaywgb25lIHJhbSwgb25lIGxhbWIgb2YgdGhlIGZpcnN0IHllYXIsIGZvciBhIGJ1cm50IG9mZmVyaW5nOgpPbmUga2lkIG9mIHRoZSBnb2F0cyBmb3IgYSBzaW4gb2ZmZXJpbmc6CkFuZCBmb3IgYSBzYWNyaWZpY2Ugb2YgcGVhY2Ugb2ZmZXJpbmdzLCB0d28gb3hlbiwgZml2ZSByYW1zLCBmaXZlIGhlIGdvYXRzLCBmaXZlIGxhbWJzIG9mIHRoZSBmaXJzdCB5ZWFyOiB0aGlzIHdhcyB0aGUgb2ZmZXJpbmcgb2YgTmV0aGFuZWVsIHRoZSBzb24gb2YgWnVhci4KT24gdGhlIHRoaXJkIGRheSBFbGlhYiB0aGUgc29uIG9mIEhlbG9uLCBwcmluY2Ugb2YgdGhlIGNoaWxkcmVuIG9mIFplYnVsdW4sIGRpZCBvZmZlcjoKSGlzIG9mZmVyaW5nIHdhcyBvbmUgc2lsdmVyIGNoYXJnZXIsIHRoZSB3ZWlnaHQgd2hlcmVvZiB3YXMgYW4gaHVuZHJlZCBhbmQgdGhpcnR5IHNoZWtlbHMsIG9uZSBzaWx2ZXIgYm93bCBvZiBzZXZlbnR5IHNoZWtlbHMsIGFmdGVyIHRoZSBzaGVrZWwgb2YgdGhlIHNhbmN0dWFyeTsgYm90aCBvZiB0aGVtIGZ1bGwgb2YgZmluZSBmbG91ciBtaW5nbGVkIHdpdGggb2lsIGZvciBhIG1lYXQgb2ZmZXJpbmc6Ck9uZSBnb2xkZW4gc3Bvb24gb2YgdGVuIHNoZWtlbHMsIGZ1bGwgb2YgaW5jZW5zZToKT25lIHlvdW5nIGJ1bGxvY2ssIG9uZSByYW0sIG9uZSBsYW1iIG9mIHRoZSBmaXJzdCB5ZWFyLCBmb3IgYSBidXJudCBvZmZlcmluZzoKT25lIGtpZCBvZiB0aGUgZ29hdHMgZm9yIGEgc2luIG9mZmVyaW5nOgpBbmQgZm9yIGEgc2FjcmlmaWNlIG9mIHBlYWNlIG9mZmVyaW5ncywgdHdvIG94ZW4sIGZpdmUgcmFtcywgZml2ZSBoZSBnb2F0cywgZml2ZSBsYW1icyBvZiB0aGUgZmlyc3QgeWVhcjogdGhpcyB3YXMgdGhlIG9mZmVyaW5nIG9mIEVsaWFiIHRoZSBzb24gb2YgSGVsb24uCk9uIHRoZSBmb3VydGggZGF5IEVsaXp1ciB0aGUgc29uIG9mIFNoZWRldXIsIHByaW5jZSBvZiB0aGUgY2hpbGRyZW4gb2YgUmV1YmVuLCBkaWQgb2ZmZXI6CkhpcyBvZmZlcmluZyB3YXMgb25lIHNpbHZlciBjaGFyZ2VyIG9mIHRoZSB3ZWlnaHQgb2YgYW4gaHVuZHJlZCBhbmQgdGhpcnR5IHNoZWtlbHMsIG9uZSBzaWx2ZXIgYm93bCBvZiBzZXZlbnR5IHNoZWtlbHMsIGFmdGVyIHRoZSBzaGVrZWwgb2YgdGhlIHNhbmN0dWFyeTsgYm90aCBvZiB0aGVtIGZ1bGwgb2YgZmluZSBmbG91ciBtaW5nbGVkIHdpdGggb2lsIGZvciBhIG1lYXQgb2ZmZXJpbmc6Ck9uZSBnb2xkZW4gc3Bvb24gb2YgdGVuIHNoZWtlbHMsIGZ1bGwgb2YgaW5jZW5zZToKT25lIHlvdW5nIGJ1bGxvY2ssIG9uZSByYW0sIG9uZSBsYW1iIG9mIHRoZSBmaXJzdCB5ZWFyLCBmb3IgYSBidXJudCBvZmZlcmluZzoKT25lIGtpZCBvZiB0aGUgZ29hdHMgZm9yIGEgc2luIG9mZmVyaW5nOgpBbmQgZm9yIGEgc2FjcmlmaWNlIG9mIHBlYWNlIG9mZmVyaW5ncywgdHdvIG94ZW4sIGZpdmUgcmFtcywgZml2ZSBoZSBnb2F0cywgZml2ZSBsYW1icyBvZiB0aGUgZmlyc3QgeWVhcjogdGhpcyB3YXMgdGhlIG9mZmVyaW5nIG9mIEVsaXp1ciB0aGUgc29uIG9mIFNoZWRldXIuCk9uIHRoZSBmaWZ0aCBkYXkgU2hlbHVtaWVsIHRoZSBzb24gb2YgWnVyaXNoYWRkYWksIHByaW5jZSBvZiB0aGUgY2hpbGRyZW4gb2YgU2ltZW9uLCBkaWQgb2ZmZXI6CkhpcyBvZmZlcmluZyB3YXMgb25lIHNpbHZlciBjaGFyZ2VyLCB0aGUgd2VpZ2h0IHdoZXJlb2Ygd2FzIGFuIGh1bmRyZWQgYW5kIHRoaXJ0eSBzaGVrZWxzLCBvbmUgc2lsdmVyIGJvd2wgb2Ygc2V2ZW50eSBzaGVrZWxzLCBhZnRlciB0aGUgc2hla2VsIG9mIHRoZSBzYW5jdHVhcnk7IGJvdGggb2YgdGhlbSBmdWxsIG9mIGZpbmUgZmxvdXIgbWluZ2xlZCB3aXRoIG9pbCBmb3IgYSBtZWF0IG9mZmVyaW5nOgpPbmUgZ29sZGVuIHNwb29uIG9mIHRlbiBzaGVrZWxzLCBmdWxsIG9mIGluY2Vuc2U6Ck9uZSB5b3VuZyBidWxsb2NrLCBvbmUgcmFtLCBvbmUgbGFtYiBvZiB0aGUgZmlyc3QgeWVhciwgZm9yIGEgYnVybnQgb2ZmZXJpbmc6Ck9uZSBraWQgb2YgdGhlIGdvYXRzIGZvciBhIHNpbiBvZmZlcmluZzoKQW5kIGZvciBhIHNhY3JpZmljZSBvZiBwZWFjZSBvZmZlcmluZ3MsIHR3byBveGVuLCBmaXZlIHJhbXMsIGZpdmUgaGUgZ29hdHMsIGZpdmUgbGFtYnMgb2YgdGhlIGZpcnN0IHllYXI6IHRoaXMgd2FzIHRoZSBvZmZlcmluZyBvZiBTaGVsdW1pZWwgdGhlIHNvbiBvZiBadXJpc2hhZGRhaS4KT24gdGhlIHNpeHRoIGRheSBFbGlhc2FwaCB0aGUgc29uIG9mIERldWVsLCBwcmluY2Ugb2YgdGhlIGNoaWxkcmVuIG9mIEdhZCwgb2ZmZXJlZDoKSGlzIG9mZmVyaW5nIHdhcyBvbmUgc2lsdmVyIGNoYXJnZXIgb2YgdGhlIHdlaWdodCBvZiBhbiBodW5kcmVkIGFuZCB0aGlydHkgc2hla2VscywgYSBzaWx2ZXIgYm93bCBvZiBzZXZlbnR5IHNoZWtlbHMsIGFmdGVyIHRoZSBzaGVrZWwgb2YgdGhlIHNhbmN0dWFyeTsgYm90aCBvZiB0aGVtIGZ1bGwgb2YgZmluZSBmbG91ciBtaW5nbGVkIHdpdGggb2lsIGZvciBhIG1lYXQgb2ZmZXJpbmc6Ck9uZSBnb2xkZW4gc3Bvb24gb2YgdGVuIHNoZWtlbHMsIGZ1bGwgb2YgaW5jZW5zZToKT25lIHlvdW5nIGJ1bGxvY2ssIG9uZSByYW0sIG9uZSBsYW1iIG9mIHRoZSBmaXJzdCB5ZWFyLCBmb3IgYSBidXJudCBvZmZlcmluZzoKT25lIGtpZCBvZiB0aGUgZ29hdHMgZm9yIGEgc2luIG9mZmVyaW5nOgpBbmQgZm9yIGEgc2FjcmlmaWNlIG9mIHBlYWNlIG9mZmVyaW5ncywgdHdvIG94ZW4sIGZpdmUgcmFtcywgZml2ZSBoZSBnb2F0cywgZml2ZSBsYW1icyBvZiB0aGUgZmlyc3QgeWVhcjogdGhpcyB3YXMgdGhlIG9mZmVyaW5nIG9mIEVsaWFzYXBoIHRoZSBzb24gb2YgRGV1ZWwuCk9uIHRoZSBzZXZlbnRoIGRheSBFbGlzaGFtYSB0aGUgc29uIG9mIEFtbWlodWQsIHByaW5jZSBvZiB0aGUgY2hpbGRyZW4gb2YgRXBocmFpbSwgb2ZmZXJlZDoKSGlzIG9mZmVyaW5nIHdhcyBvbmUgc2lsdmVyIGNoYXJnZXIsIHRoZSB3ZWlnaHQgd2hlcmVvZiB3YXMgYW4gaHVuZHJlZCBhbmQgdGhpcnR5IHNoZWtlbHMsIG9uZSBzaWx2ZXIgYm93bCBvZiBzZXZlbnR5IHNoZWtlbHMsIGFmdGVyIHRoZSBzaGVrZWwgb2YgdGhlIHNhbmN0dWFyeTsgYm90aCBvZiB0aGVtIGZ1bGwgb2YgZmluZSBmbG91ciBtaW5nbGVkIHdpdGggb2lsIGZvciBhIG1lYXQgb2ZmZXJpbmc6Ck9uZSBnb2xkZW4gc3Bvb24gb2YgdGVuIHNoZWtlbHMsIGZ1bGwgb2YgaW5jZW5zZToKT25lIHlvdW5nIGJ1bGxvY2ssIG9uZSByYW0sIG9uZSBsYW1iIG9mIHRoZSBmaXJzdCB5ZWFyLCBmb3IgYSBidXJudCBvZmZlcmluZzoKT25lIGtpZCBvZiB0aGUgZ29hdHMgZm9yIGEgc2luIG9mZmVyaW5nOgpBbmQgZm9yIGEgc2FjcmlmaWNlIG9mIHBlYWNlIG9mZmVyaW5ncywgdHdvIG94ZW4sIGZpdmUgcmFtcywgZml2ZSBoZSBnb2F0cywgZml2ZSBsYW1icyBvZiB0aGUgZmlyc3QgeWVhcjogdGhpcyB3YXMgdGhlIG9mZmVyaW5nIG9mIEVsaXNoYW1hIHRoZSBzb24gb2YgQW1taWh1ZC4KT24gdGhlIGVpZ2h0aCBkYXkgb2ZmZXJlZCBHYW1hbGllbCB0aGUgc29uIG9mIFBlZGFoenVyLCBwcmluY2Ugb2YgdGhlIGNoaWxkcmVuIG9mIE1hbmFzc2VoOgpIaXMgb2ZmZXJpbmcgd2FzIG9uZSBzaWx2ZXIgY2hhcmdlciBvZiB0aGUgd2VpZ2h0IG9mIGFuIGh1bmRyZWQgYW5kIHRoaXJ0eSBzaGVrZWxzLCBvbmUgc2lsdmVyIGJvd2wgb2Ygc2V2ZW50eSBzaGVrZWxzLCBhZnRlciB0aGUgc2hla2VsIG9mIHRoZSBzYW5jdHVhcnk7IGJvdGggb2YgdGhlbSBmdWxsIG9mIGZpbmUgZmxvdXIgbWluZ2xlZCB3aXRoIG9pbCBmb3IgYSBtZWF0IG9mZmVyaW5nOgpPbmUgZ29sZGVuIHNwb29uIG9mIHRlbiBzaGVrZWxzLCBmdWxsIG9mIGluY2Vuc2U6Ck9uZSB5b3VuZyBidWxsb2NrLCBvbmUgcmFtLCBvbmUgbGFtYiBvZiB0aGUgZmlyc3QgeWVhciwgZm9yIGEgYnVybnQgb2ZmZXJpbmc6Ck9uZSBraWQgb2YgdGhlIGdvYXRzIGZvciBhIHNpbiBvZmZlcmluZzoKQW5kIGZvciBhIHNhY3JpZmljZSBvZiBwZWFjZSBvZmZlcmluZ3MsIHR3byBveGVuLCBmaXZlIHJhbXMsIGZpdmUgaGUgZ29hdHMsIGZpdmUgbGFtYnMgb2YgdGhlIGZpcnN0IHllYXI6IHRoaXMgd2FzIHRoZSBvZmZlcmluZyBvZiBHYW1hbGllbCB0aGUgc29uIG9mIFBlZGFoenVyLgpPbiB0aGUgbmludGggZGF5IEFiaWRhbiB0aGUgc29uIG9mIEdpZGVvbmksIHByaW5jZSBvZiB0aGUgY2hpbGRyZW4gb2YgQmVuamFtaW4sIG9mZmVyZWQ6CkhpcyBvZmZlcmluZyB3YXMgb25lIHNpbHZlciBjaGFyZ2VyLCB0aGUgd2VpZ2h0IHdoZXJlb2Ygd2FzIGFuIGh1bmRyZWQgYW5kIHRoaXJ0eSBzaGVrZWxzLCBvbmUgc2lsdmVyIGJvd2wgb2Ygc2V2ZW50eSBzaGVrZWxzLCBhZnRlciB0aGUgc2hla2VsIG9mIHRoZSBzYW5jdHVhcnk7IGJvdGggb2YgdGhlbSBmdWxsIG9mIGZpbmUgZmxvdXIgbWluZ2xlZCB3aXRoIG9pbCBmb3IgYSBtZWF0IG9mZmVyaW5nOgpPbmUgZ29sZGVuIHNwb29uIG9mIHRlbiBzaGVrZWxzLCBmdWxsIG9mIGluY2Vuc2U6Ck9uZSB5b3VuZyBidWxsb2NrLCBvbmUgcmFtLCBvbmUgbGFtYiBvZiB0aGUgZmlyc3QgeWVhciwgZm9yIGEgYnVybnQgb2ZmZXJpbmc6Ck9uZSBraWQgb2YgdGhlIGdvYXRzIGZvciBhIHNpbiBvZmZlcmluZzoKQW5kIGZvciBhIHNhY3JpZmljZSBvZiBwZWFjZSBvZmZlcmluZ3MsIHR3byBveGVuLCBmaXZlIHJhbXMsIGZpdmUgaGUgZ29hdHMsIGZpdmUgbGFtYnMgb2YgdGhlIGZpcnN0IHllYXI6IHRoaXMgd2FzIHRoZSBvZmZlcmluZyBvZiBBYmlkYW4gdGhlIHNvbiBvZiBHaWRlb25pLgpPbiB0aGUgdGVudGggZGF5IEFoaWV6ZXIgdGhlIHNvbiBvZiBBbW1pc2hhZGRhaSwgcHJpbmNlIG9mIHRoZSBjaGlsZHJlbiBvZiBEYW4sIG9mZmVyZWQ6CkhpcyBvZmZlcmluZyB3YXMgb25lIHNpbHZlciBjaGFyZ2VyLCB0aGUgd2VpZ2h0IHdoZXJlb2Ygd2FzIGFuIGh1bmRyZWQgYW5kIHRoaXJ0eSBzaGVrZWxzLCBvbmUgc2lsdmVyIGJvd2wgb2Ygc2V2ZW50eSBzaGVrZWxzLCBhZnRlciB0aGUgc2hla2VsIG9mIHRoZSBzYW5jdHVhcnk7IGJvdGggb2YgdGhlbSBmdWxsIG9mIGZpbmUgZmxvdXIgbWluZ2xlZCB3aXRoIG9pbCBmb3IgYSBtZWF0IG9mZmVyaW5nOgpPbmUgZ29sZGVuIHNwb29uIG9mIHRlbiBzaGVrZWxzLCBmdWxsIG9mIGluY2Vuc2U6Ck9uZSB5b3VuZyBidWxsb2NrLCBvbmUgcmFtLCBvbmUgbGFtYiBvZiB0aGUgZmlyc3QgeWVhciwgZm9yIGEgYnVybnQgb2ZmZXJpbmc6Ck9uZSBraWQgb2YgdGhlIGdvYXRzIGZvciBhIHNpbiBvZmZlcmluZzoKQW5kIGZvciBhIHNhY3JpZmljZSBvZiBwZWFjZSBvZmZlcmluZ3MsIHR3byBveGVuLCBmaXZlIHJhbXMsIGZpdmUgaGUgZ29hdHMsIGZpdmUgbGFtYnMgb2YgdGhlIGZpcnN0IHllYXI6IHRoaXMgd2FzIHRoZSBvZmZlcmluZyBvZiBBaGllemVyIHRoZSBzb24gb2YgQW1taXNoYWRkYWkuCk9uIHRoZSBlbGV2ZW50aCBkYXkgUGFnaWVsIHRoZSBzb24gb2YgT2NyYW4sIHByaW5jZSBvZiB0aGUgY2hpbGRyZW4gb2YgQXNoZXIsIG9mZmVyZWQ6CkhpcyBvZmZlcmluZyB3YXMgb25lIHNpbHZlciBjaGFyZ2VyLCB0aGUgd2VpZ2h0IHdoZXJlb2Ygd2FzIGFuIGh1bmRyZWQgYW5kIHRoaXJ0eSBzaGVrZWxzLCBvbmUgc2lsdmVyIGJvd2wgb2Ygc2V2ZW50eSBzaGVrZWxzLCBhZnRlciB0aGUgc2hla2VsIG9mIHRoZSBzYW5jdHVhcnk7IGJvdGggb2YgdGhlbSBmdWxsIG9mIGZpbmUgZmxvdXIgbWluZ2xlZCB3aXRoIG9pbCBmb3IgYSBtZWF0IG9mZmVyaW5nOgpPbmUgZ29sZGVuIHNwb29uIG9mIHRlbiBzaGVrZWxzLCBmdWxsIG9mIGluY2Vuc2U6Ck9uZSB5b3VuZyBidWxsb2NrLCBvbmUgcmFtLCBvbmUgbGFtYiBvZiB0aGUgZmlyc3QgeWVhciwgZm9yIGEgYnVybnQgb2ZmZXJpbmc6Ck9uZSBraWQgb2YgdGhlIGdvYXRzIGZvciBhIHNpbiBvZmZlcmluZzoKQW5kIGZvciBhIHNhY3JpZmljZSBvZiBwZWFjZSBvZmZlcmluZ3MsIHR3byBveGVuLCBmaXZlIHJhbXMsIGZpdmUgaGUgZ29hdHMsIGZpdmUgbGFtYnMgb2YgdGhlIGZpcnN0IHllYXI6IHRoaXMgd2FzIHRoZSBvZmZlcmluZyBvZiBQYWdpZWwgdGhlIHNvbiBvZiBPY3Jhbi4KT24gdGhlIHR3ZWxmdGggZGF5IEFoaXJhIHRoZSBzb24gb2YgRW5hbiwgcHJpbmNlIG9mIHRoZSBjaGlsZHJlbiBvZiBOYXBodGFsaSwgb2ZmZXJlZDoKSGlzIG9mZmVyaW5nIHdhcyBvbmUgc2lsdmVyIGNoYXJnZXIsIHRoZSB3ZWlnaHQgd2hlcmVvZiB3YXMgYW4gaHVuZHJlZCBhbmQgdGhpcnR5IHNoZWtlbHMsIG9uZSBzaWx2ZXIgYm93bCBvZiBzZXZlbnR5IHNoZWtlbHMsIGFmdGVyIHRoZSBzaGVrZWwgb2YgdGhlIHNhbmN0dWFyeTsgYm90aCBvZiB0aGVtIGZ1bGwgb2YgZmluZSBmbG91ciBtaW5nbGVkIHdpdGggb2lsIGZvciBhIG1lYXQgb2ZmZXJpbmc6Ck9uZSBnb2xkZW4gc3Bvb24gb2YgdGVuIHNoZWtlbHMsIGZ1bGwgb2YgaW5jZW5zZToKT25lIHlvdW5nIGJ1bGxvY2ssIG9uZSByYW0sIG9uZSBsYW1iIG9mIHRoZSBmaXJzdCB5ZWFyLCBmb3IgYSBidXJudCBvZmZlcmluZzoKT25lIGtpZCBvZiB0aGUgZ29hdHMgZm9yIGEgc2luIG9mZmVyaW5nOgpBbmQgZm9yIGEgc2FjcmlmaWNlIG9mIHBlYWNlIG9mZmVyaW5ncywgdHdvIG94ZW4sIGZpdmUgcmFtcywgZml2ZSBoZSBnb2F0cywgZml2ZSBsYW1icyBvZiB0aGUgZmlyc3QgeWVhcjogdGhpcyB3YXMgdGhlIG9mZmVyaW5nIG9mIEFoaXJhIHRoZSBzb24gb2YgRW5hbi4KVGhpcyB3YXMgdGhlIGRlZGljYXRpb24gb2YgdGhlIGFsdGFyLCBpbiB0aGUgZGF5IHdoZW4gaXQgd2FzIGFub2ludGVkLCBieSB0aGUgcHJpbmNlcyBvZiBJc3JhZWw6IHR3ZWx2ZSBjaGFyZ2VycyBvZiBzaWx2ZXIsIHR3ZWx2ZSBzaWx2ZXIgYm93bHMsIHR3ZWx2ZSBzcG9vbnMgb2YgZ29sZDoKRWFjaCBjaGFyZ2VyIG9mIHNpbHZlciB3ZWlnaGluZyBhbiBodW5kcmVkIGFuZCB0aGlydHkgc2hla2VscywgZWFjaCBib3dsIHNldmVudHk6IGFsbCB0aGUgc2lsdmVyIHZlc3NlbHMgd2VpZ2hlZCB0d28gdGhvdXNhbmQgYW5kIGZvdXIgaHVuZHJlZCBzaGVrZWxzLCBhZnRlciB0aGUgc2hla2VsIG9mIHRoZSBzYW5jdHVhcnk6ClRoZSBnb2xkZW4gc3Bvb25zIHdlcmUgdHdlbHZlLCBmdWxsIG9mIGluY2Vuc2UsIHdlaWdoaW5nIHRlbiBzaGVrZWxzIGFwaWVjZSwgYWZ0ZXIgdGhlIHNoZWtlbCBvZiB0aGUgc2FuY3R1YXJ5OiBhbGwgdGhlIGdvbGQgb2YgdGhlIHNwb29ucyB3YXMgYW4gaHVuZHJlZCBhbmQgdHdlbnR5IHNoZWtlbHMuCkFsbCB0aGUgb3hlbiBmb3IgdGhlIGJ1cm50IG9mZmVyaW5nIHdlcmUgdHdlbHZlIGJ1bGxvY2tzLCB0aGUgcmFtcyB0d2VsdmUsIHRoZSBsYW1icyBvZiB0aGUgZmlyc3QgeWVhciB0d2VsdmUsIHdpdGggdGhlaXIgbWVhdCBvZmZlcmluZzogYW5kIHRoZSBraWRzIG9mIHRoZSBnb2F0cyBmb3Igc2luIG9mZmVyaW5nIHR3ZWx2ZS4KQW5kIGFsbCB0aGUgb3hlbiBmb3IgdGhlIHNhY3JpZmljZSBvZiB0aGUgcGVhY2Ugb2ZmZXJpbmdzIHdlcmUgdHdlbnR5IGFuZCBmb3VyIGJ1bGxvY2tzLCB0aGUgcmFtcyBzaXh0eSwgdGhlIGhlIGdvYXRzIHNpeHR5LCB0aGUgbGFtYnMgb2YgdGhlIGZpcnN0IHllYXIgc2l4dHkuIFRoaXMgd2FzIHRoZSBkZWRpY2F0aW9uIG9mIHRoZSBhbHRhciwgYWZ0ZXIgdGhhdCBpdCB3YXMgYW5vaW50ZWQuCkFuZCB3aGVuIE1vc2VzIHdhcyBnb25lIGludG8gdGhlIHRhYmVybmFjbGUgb2YgdGhlIGNvbmdyZWdhdGlvbiB0byBzcGVhayB3aXRoIGhpbSwgdGhlbiBoZSBoZWFyZCB0aGUgdm9pY2Ugb2Ygb25lIHNwZWFraW5nIHVudG8gaGltIGZyb20gb2ZmIHRoZSBtZXJjeSBzZWF0IHRoYXQgd2FzIHVwb24gdGhlIGFyayBvZiB0ZXN0aW1vbnksIGZyb20gYmV0d2VlbiB0aGUgdHdvIGNoZXJ1YmltczogYW5kIGhlIHNwYWtlIHVudG8gaGltLgpBbmQgdGhlIExPUkQgc3Bha2UgdW50byBNb3Nlcywgc2F5aW5nLApTcGVhayB1bnRvIEFhcm9uIGFuZCBzYXkgdW50byBoaW0sIFdoZW4gdGhvdSBsaWdodGVzdCB0aGUgbGFtcHMsIHRoZSBzZXZlbiBsYW1wcyBzaGFsbCBnaXZlIGxpZ2h0IG92ZXIgYWdhaW5zdCB0aGUgY2FuZGxlc3RpY2suCkFuZCBBYXJvbiBkaWQgc287IGhlIGxpZ2h0ZWQgdGhlIGxhbXBzIHRoZXJlb2Ygb3ZlciBhZ2FpbnN0IHRoZSBjYW5kbGVzdGljaywgYXMgdGhlIExPUkQgY29tbWFuZGVkIE1vc2VzLgpBbmQgdGhpcyB3b3JrIG9mIHRoZSBjYW5kbGVzdGljayB3YXMgb2YgYmVhdGVuIGdvbGQsIHVudG8gdGhlIHNoYWZ0IHRoZXJlb2YsIHVudG8gdGhlIGZsb3dlcnMgdGhlcmVvZiwgd2FzIGJlYXRlbiB3b3JrOiBhY2NvcmRpbmcgdW50byB0aGUgcGF0dGVybiB3aGljaCB0aGUgTE9SRCBoYWQgc2hld2VkIE1vc2VzLCBzbyBoZSBtYWRlIHRoZSBjYW5kbGVzdGljay4KQW5kIHRoZSBMT1JEIHNwYWtlIHVudG8gTW9zZXMsIHNheWluZywKVGFrZSB0aGUgTGV2aXRlcyBmcm9tIGFtb25nIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIGFuZCBjbGVhbnNlIHRoZW0uCkFuZCB0aHVzIHNoYWx0IHRob3UgZG8gdW50byB0aGVtLCB0byBjbGVhbnNlIHRoZW06IFNwcmlua2xlIHdhdGVyIG9mIHB1cmlmeWluZyB1cG9uIHRoZW0sIGFuZCBsZXQgdGhlbSBzaGF2ZSBhbGwgdGhlaXIgZmxlc2gsIGFuZCBsZXQgdGhlbSB3YXNoIHRoZWlyIGNsb3RoZXMsIGFuZCBzbyBtYWtlIHRoZW1zZWx2ZXMgY2xlYW4uClRoZW4gbGV0IHRoZW0gdGFrZSBhIHlvdW5nIGJ1bGxvY2sgd2l0aCBoaXMgbWVhdCBvZmZlcmluZywgZXZlbiBmaW5lIGZsb3VyIG1pbmdsZWQgd2l0aCBvaWwsIGFuZCBhbm90aGVyIHlvdW5nIGJ1bGxvY2sgc2hhbHQgdGhvdSB0YWtlIGZvciBhIHNpbiBvZmZlcmluZy4KQW5kIHRob3Ugc2hhbHQgYnJpbmcgdGhlIExldml0ZXMgYmVmb3JlIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBjb25ncmVnYXRpb246IGFuZCB0aG91IHNoYWx0IGdhdGhlciB0aGUgd2hvbGUgYXNzZW1ibHkgb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCB0b2dldGhlcjoKQW5kIHRob3Ugc2hhbHQgYnJpbmcgdGhlIExldml0ZXMgYmVmb3JlIHRoZSBMT1JEOiBhbmQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBzaGFsbCBwdXQgdGhlaXIgaGFuZHMgdXBvbiB0aGUgTGV2aXRlczoKQW5kIEFhcm9uIHNoYWxsIG9mZmVyIHRoZSBMZXZpdGVzIGJlZm9yZSB0aGUgTE9SRCBmb3IgYW4gb2ZmZXJpbmcgb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgdGhhdCB0aGV5IG1heSBleGVjdXRlIHRoZSBzZXJ2aWNlIG9mIHRoZSBMT1JELgpBbmQgdGhlIExldml0ZXMgc2hhbGwgbGF5IHRoZWlyIGhhbmRzIHVwb24gdGhlIGhlYWRzIG9mIHRoZSBidWxsb2NrczogYW5kIHRob3Ugc2hhbHQgb2ZmZXIgdGhlIG9uZSBmb3IgYSBzaW4gb2ZmZXJpbmcsIGFuZCB0aGUgb3RoZXIgZm9yIGEgYnVybnQgb2ZmZXJpbmcsIHVudG8gdGhlIExPUkQsIHRvIG1ha2UgYW4gYXRvbmVtZW50IGZvciB0aGUgTGV2aXRlcy4KQW5kIHRob3Ugc2hhbHQgc2V0IHRoZSBMZXZpdGVzIGJlZm9yZSBBYXJvbiwgYW5kIGJlZm9yZSBoaXMgc29ucywgYW5kIG9mZmVyIHRoZW0gZm9yIGFuIG9mZmVyaW5nIHVudG8gdGhlIExPUkQuClRodXMgc2hhbHQgdGhvdSBzZXBhcmF0ZSB0aGUgTGV2aXRlcyBmcm9tIGFtb25nIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWw6IGFuZCB0aGUgTGV2aXRlcyBzaGFsbCBiZSBtaW5lLgpBbmQgYWZ0ZXIgdGhhdCBzaGFsbCB0aGUgTGV2aXRlcyBnbyBpbiB0byBkbyB0aGUgc2VydmljZSBvZiB0aGUgdGFiZXJuYWNsZSBvZiB0aGUgY29uZ3JlZ2F0aW9uOiBhbmQgdGhvdSBzaGFsdCBjbGVhbnNlIHRoZW0sIGFuZCBvZmZlciB0aGVtIGZvciBhbiBvZmZlcmluZy4KRm9yIHRoZXkgYXJlIHdob2xseSBnaXZlbiB1bnRvIG1lIGZyb20gYW1vbmcgdGhlIGNoaWxkcmVuIG9mIElzcmFlbDsgaW5zdGVhZCBvZiBzdWNoIGFzIG9wZW4gZXZlcnkgd29tYiwgZXZlbiBpbnN0ZWFkIG9mIHRoZSBmaXJzdGJvcm4gb2YgYWxsIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIGhhdmUgSSB0YWtlbiB0aGVtIHVudG8gbWUuCkZvciBhbGwgdGhlIGZpcnN0Ym9ybiBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGFyZSBtaW5lLCBib3RoIG1hbiBhbmQgYmVhc3Q6IG9uIHRoZSBkYXkgdGhhdCBJIHNtb3RlIGV2ZXJ5IGZpcnN0Ym9ybiBpbiB0aGUgbGFuZCBvZiBFZ3lwdCBJIHNhbmN0aWZpZWQgdGhlbSBmb3IgbXlzZWxmLgpBbmQgSSBoYXZlIHRha2VuIHRoZSBMZXZpdGVzIGZvciBhbGwgdGhlIGZpcnN0Ym9ybiBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLgpBbmQgSSBoYXZlIGdpdmVuIHRoZSBMZXZpdGVzIGFzIGEgZ2lmdCB0byBBYXJvbiBhbmQgdG8gaGlzIHNvbnMgZnJvbSBhbW9uZyB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLCB0byBkbyB0aGUgc2VydmljZSBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGluIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBjb25ncmVnYXRpb24sIGFuZCB0byBtYWtlIGFuIGF0b25lbWVudCBmb3IgdGhlIGNoaWxkcmVuIG9mIElzcmFlbDogdGhhdCB0aGVyZSBiZSBubyBwbGFndWUgYW1vbmcgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgd2hlbiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGNvbWUgbmlnaCB1bnRvIHRoZSBzYW5jdHVhcnkuCkFuZCBNb3NlcywgYW5kIEFhcm9uLCBhbmQgYWxsIHRoZSBjb25ncmVnYXRpb24gb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgZGlkIHRvIHRoZSBMZXZpdGVzIGFjY29yZGluZyB1bnRvIGFsbCB0aGF0IHRoZSBMT1JEIGNvbW1hbmRlZCBNb3NlcyBjb25jZXJuaW5nIHRoZSBMZXZpdGVzLCBzbyBkaWQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCB1bnRvIHRoZW0uCkFuZCB0aGUgTGV2aXRlcyB3ZXJlIHB1cmlmaWVkLCBhbmQgdGhleSB3YXNoZWQgdGhlaXIgY2xvdGhlczsgYW5kIEFhcm9uIG9mZmVyZWQgdGhlbSBhcyBhbiBvZmZlcmluZyBiZWZvcmUgdGhlIExPUkQ7IGFuZCBBYXJvbiBtYWRlIGFuIGF0b25lbWVudCBmb3IgdGhlbSB0byBjbGVhbnNlIHRoZW0uCkFuZCBhZnRlciB0aGF0IHdlbnQgdGhlIExldml0ZXMgaW4gdG8gZG8gdGhlaXIgc2VydmljZSBpbiB0aGUgdGFiZXJuYWNsZSBvZiB0aGUgY29uZ3JlZ2F0aW9uIGJlZm9yZSBBYXJvbiwgYW5kIGJlZm9yZSBoaXMgc29uczogYXMgdGhlIExPUkQgaGFkIGNvbW1hbmRlZCBNb3NlcyBjb25jZXJuaW5nIHRoZSBMZXZpdGVzLCBzbyBkaWQgdGhleSB1bnRvIHRoZW0uCkFuZCB0aGUgTE9SRCBzcGFrZSB1bnRvIE1vc2VzLCBzYXlpbmcsClRoaXMgaXMgaXQgdGhhdCBiZWxvbmdldGggdW50byB0aGUgTGV2aXRlczogZnJvbSB0d2VudHkgYW5kIGZpdmUgeWVhcnMgb2xkIGFuZCB1cHdhcmQgdGhleSBzaGFsbCBnbyBpbiB0byB3YWl0IHVwb24gdGhlIHNlcnZpY2Ugb2YgdGhlIHRhYmVybmFjbGUgb2YgdGhlIGNvbmdyZWdhdGlvbjoKQW5kIGZyb20gdGhlIGFnZSBvZiBmaWZ0eSB5ZWFycyB0aGV5IHNoYWxsIGNlYXNlIHdhaXRpbmcgdXBvbiB0aGUgc2VydmljZSB0aGVyZW9mLCBhbmQgc2hhbGwgc2VydmUgbm8gbW9yZToKQnV0IHNoYWxsIG1pbmlzdGVyIHdpdGggdGhlaXIgYnJldGhyZW4gaW4gdGhlIHRhYmVybmFjbGUgb2YgdGhlIGNvbmdyZWdhdGlvbiwgdG8ga2VlcCB0aGUgY2hhcmdlLCBhbmQgc2hhbGwgZG8gbm8gc2VydmljZS4gVGh1cyBzaGFsdCB0aG91IGRvIHVudG8gdGhlIExldml0ZXMgdG91Y2hpbmcgdGhlaXIgY2hhcmdlLgpBbmQgdGhlIExPUkQgc3Bha2UgdW50byBNb3NlcyBpbiB0aGUgd2lsZGVybmVzcyBvZiBTaW5haSwgaW4gdGhlIGZpcnN0IG1vbnRoIG9mIHRoZSBzZWNvbmQgeWVhciBhZnRlciB0aGV5IHdlcmUgY29tZSBvdXQgb2YgdGhlIGxhbmQgb2YgRWd5cHQsIHNheWluZywKTGV0IHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgYWxzbyBrZWVwIHRoZSBwYXNzb3ZlciBhdCBoaXMgYXBwb2ludGVkIHNlYXNvbi4KSW4gdGhlIGZvdXJ0ZWVudGggZGF5IG9mIHRoaXMgbW9udGgsIGF0IGV2ZW4sIHllIHNoYWxsIGtlZXAgaXQgaW4gaGlzIGFwcG9pbnRlZCBzZWFzb246IGFjY29yZGluZyB0byBhbGwgdGhlIHJpdGVzIG9mIGl0LCBhbmQgYWNjb3JkaW5nIHRvIGFsbCB0aGUgY2VyZW1vbmllcyB0aGVyZW9mLCBzaGFsbCB5ZSBrZWVwIGl0LgpBbmQgTW9zZXMgc3Bha2UgdW50byB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLCB0aGF0IHRoZXkgc2hvdWxkIGtlZXAgdGhlIHBhc3NvdmVyLgpBbmQgdGhleSBrZXB0IHRoZSBwYXNzb3ZlciBvbiB0aGUgZm91cnRlZW50aCBkYXkgb2YgdGhlIGZpcnN0IG1vbnRoIGF0IGV2ZW4gaW4gdGhlIHdpbGRlcm5lc3Mgb2YgU2luYWk6IGFjY29yZGluZyB0byBhbGwgdGhhdCB0aGUgTE9SRCBjb21tYW5kZWQgTW9zZXMsIHNvIGRpZCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLgpBbmQgdGhlcmUgd2VyZSBjZXJ0YWluIG1lbiwgd2hvIHdlcmUgZGVmaWxlZCBieSB0aGUgZGVhZCBib2R5IG9mIGEgbWFuLCB0aGF0IHRoZXkgY291bGQgbm90IGtlZXAgdGhlIHBhc3NvdmVyIG9uIHRoYXQgZGF5OiBhbmQgdGhleSBjYW1lIGJlZm9yZSBNb3NlcyBhbmQgYmVmb3JlIEFhcm9uIG9uIHRoYXQgZGF5OgpBbmQgdGhvc2UgbWVuIHNhaWQgdW50byBoaW0sIFdlIGFyZSBkZWZpbGVkIGJ5IHRoZSBkZWFkIGJvZHkgb2YgYSBtYW46IHdoZXJlZm9yZSBhcmUgd2Uga2VwdCBiYWNrLCB0aGF0IHdlIG1heSBub3Qgb2ZmZXIgYW4gb2ZmZXJpbmcgb2YgdGhlIExPUkQgaW4gaGlzIGFwcG9pbnRlZCBzZWFzb24gYW1vbmcgdGhlIGNoaWxkcmVuIG9mIElzcmFlbD8KQW5kIE1vc2VzIHNhaWQgdW50byB0aGVtLCBTdGFuZCBzdGlsbCwgYW5kIEkgd2lsbCBoZWFyIHdoYXQgdGhlIExPUkQgd2lsbCBjb21tYW5kIGNvbmNlcm5pbmcgeW91LgpBbmQgdGhlIExPUkQgc3Bha2UgdW50byBNb3Nlcywgc2F5aW5nLApTcGVhayB1bnRvIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIHNheWluZywgSWYgYW55IG1hbiBvZiB5b3Ugb3Igb2YgeW91ciBwb3N0ZXJpdHkgc2hhbGwgYmUgdW5jbGVhbiBieSByZWFzb24gb2YgYSBkZWFkIGJvZHksIG9yIGJlIGluIGEgam91cm5leSBhZmFyIG9mZiwgeWV0IGhlIHNoYWxsIGtlZXAgdGhlIHBhc3NvdmVyIHVudG8gdGhlIExPUkQuClRoZSBmb3VydGVlbnRoIGRheSBvZiB0aGUgc2Vjb25kIG1vbnRoIGF0IGV2ZW4gdGhleSBzaGFsbCBrZWVwIGl0LCBhbmQgZWF0IGl0IHdpdGggdW5sZWF2ZW5lZCBicmVhZCBhbmQgYml0dGVyIGhlcmJzLgpUaGV5IHNoYWxsIGxlYXZlIG5vbmUgb2YgaXQgdW50byB0aGUgbW9ybmluZywgbm9yIGJyZWFrIGFueSBib25lIG9mIGl0OiBhY2NvcmRpbmcgdG8gYWxsIHRoZSBvcmRpbmFuY2VzIG9mIHRoZSBwYXNzb3ZlciB0aGV5IHNoYWxsIGtlZXAgaXQuCkJ1dCB0aGUgbWFuIHRoYXQgaXMgY2xlYW4sIGFuZCBpcyBub3QgaW4gYSBqb3VybmV5LCBhbmQgZm9yYmVhcmV0aCB0byBrZWVwIHRoZSBwYXNzb3ZlciwgZXZlbiB0aGUgc2FtZSBzb3VsIHNoYWxsIGJlIGN1dCBvZmYgZnJvbSBhbW9uZyBoaXMgcGVvcGxlOiBiZWNhdXNlIGhlIGJyb3VnaHQgbm90IHRoZSBvZmZlcmluZyBvZiB0aGUgTE9SRCBpbiBoaXMgYXBwb2ludGVkIHNlYXNvbiwgdGhhdCBtYW4gc2hhbGwgYmVhciBoaXMgc2luLgpBbmQgaWYgYSBzdHJhbmdlciBzaGFsbCBzb2pvdXJuIGFtb25nIHlvdSwgYW5kIHdpbGwga2VlcCB0aGUgcGFzc292ZXIgdW50byB0aGUgTE9SRDsgYWNjb3JkaW5nIHRvIHRoZSBvcmRpbmFuY2Ugb2YgdGhlIHBhc3NvdmVyLCBhbmQgYWNjb3JkaW5nIHRvIHRoZSBtYW5uZXIgdGhlcmVvZiwgc28gc2hhbGwgaGUgZG86IHllIHNoYWxsIGhhdmUgb25lIG9yZGluYW5jZSwgYm90aCBmb3IgdGhlIHN0cmFuZ2VyLCBhbmQgZm9yIGhpbSB0aGF0IHdhcyBib3JuIGluIHRoZSBsYW5kLgpBbmQgb24gdGhlIGRheSB0aGF0IHRoZSB0YWJlcm5hY2xlIHdhcyByZWFyZWQgdXAgdGhlIGNsb3VkIGNvdmVyZWQgdGhlIHRhYmVybmFjbGUsIG5hbWVseSwgdGhlIHRlbnQgb2YgdGhlIHRlc3RpbW9ueTogYW5kIGF0IGV2ZW4gdGhlcmUgd2FzIHVwb24gdGhlIHRhYmVybmFjbGUgYXMgaXQgd2VyZSB0aGUgYXBwZWFyYW5jZSBvZiBmaXJlLCB1bnRpbCB0aGUgbW9ybmluZy4KU28gaXQgd2FzIGFsd2F5OiB0aGUgY2xvdWQgY292ZXJlZCBpdCBieSBkYXksIGFuZCB0aGUgYXBwZWFyYW5jZSBvZiBmaXJlIGJ5IG5pZ2h0LgpBbmQgd2hlbiB0aGUgY2xvdWQgd2FzIHRha2VuIHVwIGZyb20gdGhlIHRhYmVybmFjbGUsIHRoZW4gYWZ0ZXIgdGhhdCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGpvdXJuZXllZDogYW5kIGluIHRoZSBwbGFjZSB3aGVyZSB0aGUgY2xvdWQgYWJvZGUsIHRoZXJlIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgcGl0Y2hlZCB0aGVpciB0ZW50cy4KQXQgdGhlIGNvbW1hbmRtZW50IG9mIHRoZSBMT1JEIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgam91cm5leWVkLCBhbmQgYXQgdGhlIGNvbW1hbmRtZW50IG9mIHRoZSBMT1JEIHRoZXkgcGl0Y2hlZDogYXMgbG9uZyBhcyB0aGUgY2xvdWQgYWJvZGUgdXBvbiB0aGUgdGFiZXJuYWNsZSB0aGV5IHJlc3RlZCBpbiB0aGVpciB0ZW50cy4KQW5kIHdoZW4gdGhlIGNsb3VkIHRhcnJpZWQgbG9uZyB1cG9uIHRoZSB0YWJlcm5hY2xlIG1hbnkgZGF5cywgdGhlbiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGtlcHQgdGhlIGNoYXJnZSBvZiB0aGUgTE9SRCwgYW5kIGpvdXJuZXllZCBub3QuCkFuZCBzbyBpdCB3YXMsIHdoZW4gdGhlIGNsb3VkIHdhcyBhIGZldyBkYXlzIHVwb24gdGhlIHRhYmVybmFjbGU7IGFjY29yZGluZyB0byB0aGUgY29tbWFuZG1lbnQgb2YgdGhlIExPUkQgdGhleSBhYm9kZSBpbiB0aGVpciB0ZW50cywgYW5kIGFjY29yZGluZyB0byB0aGUgY29tbWFuZG1lbnQgb2YgdGhlIExPUkQgdGhleSBqb3VybmV5ZWQuCkFuZCBzbyBpdCB3YXMsIHdoZW4gdGhlIGNsb3VkIGFib2RlIGZyb20gZXZlbiB1bnRvIHRoZSBtb3JuaW5nLCBhbmQgdGhhdCB0aGUgY2xvdWQgd2FzIHRha2VuIHVwIGluIHRoZSBtb3JuaW5nLCB0aGVuIHRoZXkgam91cm5leWVkOiB3aGV0aGVyIGl0IHdhcyBieSBkYXkgb3IgYnkgbmlnaHQgdGhhdCB0aGUgY2xvdWQgd2FzIHRha2VuIHVwLCB0aGV5IGpvdXJuZXllZC4KT3Igd2hldGhlciBpdCB3ZXJlIHR3byBkYXlzLCBvciBhIG1vbnRoLCBvciBhIHllYXIsIHRoYXQgdGhlIGNsb3VkIHRhcnJpZWQgdXBvbiB0aGUgdGFiZXJuYWNsZSwgcmVtYWluaW5nIHRoZXJlb24sIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgYWJvZGUgaW4gdGhlaXIgdGVudHMsIGFuZCBqb3VybmV5ZWQgbm90OiBidXQgd2hlbiBpdCB3YXMgdGFrZW4gdXAsIHRoZXkgam91cm5leWVkLgpBdCB0aGUgY29tbWFuZG1lbnQgb2YgdGhlIExPUkQgdGhleSByZXN0ZWQgaW4gdGhlIHRlbnRzLCBhbmQgYXQgdGhlIGNvbW1hbmRtZW50IG9mIHRoZSBMT1JEIHRoZXkgam91cm5leWVkOiB0aGV5IGtlcHQgdGhlIGNoYXJnZSBvZiB0aGUgTE9SRCwgYXQgdGhlIGNvbW1hbmRtZW50IG9mIHRoZSBMT1JEIGJ5IHRoZSBoYW5kIG9mIE1vc2VzLgpBbmQgdGhlIExPUkQgc3Bha2UgdW50byBNb3Nlcywgc2F5aW5nLApNYWtlIHRoZWUgdHdvIHRydW1wZXRzIG9mIHNpbHZlcjsgb2YgYSB3aG9sZSBwaWVjZSBzaGFsdCB0aG91IG1ha2UgdGhlbTogdGhhdCB0aG91IG1heWVzdCB1c2UgdGhlbSBmb3IgdGhlIGNhbGxpbmcgb2YgdGhlIGFzc2VtYmx5LCBhbmQgZm9yIHRoZSBqb3VybmV5aW5nIG9mIHRoZSBjYW1wcy4KQW5kIHdoZW4gdGhleSBzaGFsbCBibG93IHdpdGggdGhlbSwgYWxsIHRoZSBhc3NlbWJseSBzaGFsbCBhc3NlbWJsZSB0aGVtc2VsdmVzIHRvIHRoZWUgYXQgdGhlIGRvb3Igb2YgdGhlIHRhYmVybmFjbGUgb2YgdGhlIGNvbmdyZWdhdGlvbi4KQW5kIGlmIHRoZXkgYmxvdyBidXQgd2l0aCBvbmUgdHJ1bXBldCwgdGhlbiB0aGUgcHJpbmNlcywgd2hpY2ggYXJlIGhlYWRzIG9mIHRoZSB0aG91c2FuZHMgb2YgSXNyYWVsLCBzaGFsbCBnYXRoZXIgdGhlbXNlbHZlcyB1bnRvIHRoZWUuCldoZW4geWUgYmxvdyBhbiBhbGFybSwgdGhlbiB0aGUgY2FtcHMgdGhhdCBsaWUgb24gdGhlIGVhc3QgcGFydHMgc2hhbGwgZ28gZm9yd2FyZC4KV2hlbiB5ZSBibG93IGFuIGFsYXJtIHRoZSBzZWNvbmQgdGltZSwgdGhlbiB0aGUgY2FtcHMgdGhhdCBsaWUgb24gdGhlIHNvdXRoIHNpZGUgc2hhbGwgdGFrZSB0aGVpciBqb3VybmV5OiB0aGV5IHNoYWxsIGJsb3cgYW4gYWxhcm0gZm9yIHRoZWlyIGpvdXJuZXlzLgpCdXQgd2hlbiB0aGUgY29uZ3JlZ2F0aW9uIGlzIHRvIGJlIGdhdGhlcmVkIHRvZ2V0aGVyLCB5ZSBzaGFsbCBibG93LCBidXQgeWUgc2hhbGwgbm90IHNvdW5kIGFuIGFsYXJtLgpBbmQgdGhlIHNvbnMgb2YgQWFyb24sIHRoZSBwcmllc3RzLCBzaGFsbCBibG93IHdpdGggdGhlIHRydW1wZXRzOyBhbmQgdGhleSBzaGFsbCBiZSB0byB5b3UgZm9yIGFuIG9yZGluYW5jZSBmb3IgZXZlciB0aHJvdWdob3V0IHlvdXIgZ2VuZXJhdGlvbnMuCkFuZCBpZiB5ZSBnbyB0byB3YXIgaW4geW91ciBsYW5kIGFnYWluc3QgdGhlIGVuZW15IHRoYXQgb3BwcmVzc2V0aCB5b3UsIHRoZW4geWUgc2hhbGwgYmxvdyBhbiBhbGFybSB3aXRoIHRoZSB0cnVtcGV0czsgYW5kIHllIHNoYWxsIGJlIHJlbWVtYmVyZWQgYmVmb3JlIHRoZSBMT1JEIHlvdXIgR29kLCBhbmQgeWUgc2hhbGwgYmUgc2F2ZWQgZnJvbSB5b3VyIGVuZW1pZXMuCkFsc28gaW4gdGhlIGRheSBvZiB5b3VyIGdsYWRuZXNzLCBhbmQgaW4geW91ciBzb2xlbW4gZGF5cywgYW5kIGluIHRoZSBiZWdpbm5pbmdzIG9mIHlvdXIgbW9udGhzLCB5ZSBzaGFsbCBibG93IHdpdGggdGhlIHRydW1wZXRzIG92ZXIgeW91ciBidXJudCBvZmZlcmluZ3MsIGFuZCBvdmVyIHRoZSBzYWNyaWZpY2VzIG9mIHlvdXIgcGVhY2Ugb2ZmZXJpbmdzOyB0aGF0IHRoZXkgbWF5IGJlIHRvIHlvdSBmb3IgYSBtZW1vcmlhbCBiZWZvcmUgeW91ciBHb2Q6IEkgYW0gdGhlIExPUkQgeW91ciBHb2QuCkFuZCBpdCBjYW1lIHRvIHBhc3Mgb24gdGhlIHR3ZW50aWV0aCBkYXkgb2YgdGhlIHNlY29uZCBtb250aCwgaW4gdGhlIHNlY29uZCB5ZWFyLCB0aGF0IHRoZSBjbG91ZCB3YXMgdGFrZW4gdXAgZnJvbSBvZmYgdGhlIHRhYmVybmFjbGUgb2YgdGhlIHRlc3RpbW9ueS4KQW5kIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgdG9vayB0aGVpciBqb3VybmV5cyBvdXQgb2YgdGhlIHdpbGRlcm5lc3Mgb2YgU2luYWk7IGFuZCB0aGUgY2xvdWQgcmVzdGVkIGluIHRoZSB3aWxkZXJuZXNzIG9mIFBhcmFuLgpBbmQgdGhleSBmaXJzdCB0b29rIHRoZWlyIGpvdXJuZXkgYWNjb3JkaW5nIHRvIHRoZSBjb21tYW5kbWVudCBvZiB0aGUgTE9SRCBieSB0aGUgaGFuZCBvZiBNb3Nlcy4KSW4gdGhlIGZpcnN0IHBsYWNlIHdlbnQgdGhlIHN0YW5kYXJkIG9mIHRoZSBjYW1wIG9mIHRoZSBjaGlsZHJlbiBvZiBKdWRhaCBhY2NvcmRpbmcgdG8gdGhlaXIgYXJtaWVzOiBhbmQgb3ZlciBoaXMgaG9zdCB3YXMgTmFoc2hvbiB0aGUgc29uIG9mIEFtbWluYWRhYi4KQW5kIG92ZXIgdGhlIGhvc3Qgb2YgdGhlIHRyaWJlIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3NhY2hhciB3YXMgTmV0aGFuZWVsIHRoZSBzb24gb2YgWnVhci4KQW5kIG92ZXIgdGhlIGhvc3Qgb2YgdGhlIHRyaWJlIG9mIHRoZSBjaGlsZHJlbiBvZiBaZWJ1bHVuIHdhcyBFbGlhYiB0aGUgc29uIG9mIEhlbG9uLgpBbmQgdGhlIHRhYmVybmFjbGUgd2FzIHRha2VuIGRvd247IGFuZCB0aGUgc29ucyBvZiBHZXJzaG9uIGFuZCB0aGUgc29ucyBvZiBNZXJhcmkgc2V0IGZvcndhcmQsIGJlYXJpbmcgdGhlIHRhYmVybmFjbGUuCkFuZCB0aGUgc3RhbmRhcmQgb2YgdGhlIGNhbXAgb2YgUmV1YmVuIHNldCBmb3J3YXJkIGFjY29yZGluZyB0byB0aGVpciBhcm1pZXM6IGFuZCBvdmVyIGhpcyBob3N0IHdhcyBFbGl6dXIgdGhlIHNvbiBvZiBTaGVkZXVyLgpBbmQgb3ZlciB0aGUgaG9zdCBvZiB0aGUgdHJpYmUgb2YgdGhlIGNoaWxkcmVuIG9mIFNpbWVvbiB3YXMgU2hlbHVtaWVsIHRoZSBzb24gb2YgWnVyaXNoYWRkYWkuCkFuZCBvdmVyIHRoZSBob3N0IG9mIHRoZSB0cmliZSBvZiB0aGUgY2hpbGRyZW4gb2YgR2FkIHdhcyBFbGlhc2FwaCB0aGUgc29uIG9mIERldWVsLgpBbmQgdGhlIEtvaGF0aGl0ZXMgc2V0IGZvcndhcmQsIGJlYXJpbmcgdGhlIHNhbmN0dWFyeTogYW5kIHRoZSBvdGhlciBkaWQgc2V0IHVwIHRoZSB0YWJlcm5hY2xlIGFnYWluc3QgdGhleSBjYW1lLgpBbmQgdGhlIHN0YW5kYXJkIG9mIHRoZSBjYW1wIG9mIHRoZSBjaGlsZHJlbiBvZiBFcGhyYWltIHNldCBmb3J3YXJkIGFjY29yZGluZyB0byB0aGVpciBhcm1pZXM6IGFuZCBvdmVyIGhpcyBob3N0IHdhcyBFbGlzaGFtYSB0aGUgc29uIG9mIEFtbWlodWQuCkFuZCBvdmVyIHRoZSBob3N0IG9mIHRoZSB0cmliZSBvZiB0aGUgY2hpbGRyZW4gb2YgTWFuYXNzZWggd2FzIEdhbWFsaWVsIHRoZSBzb24gb2YgUGVkYWh6dXIuCkFuZCBvdmVyIHRoZSBob3N0IG9mIHRoZSB0cmliZSBvZiB0aGUgY2hpbGRyZW4gb2YgQmVuamFtaW4gd2FzIEFiaWRhbiB0aGUgc29uIG9mIEdpZGVvbmkuCkFuZCB0aGUgc3RhbmRhcmQgb2YgdGhlIGNhbXAgb2YgdGhlIGNoaWxkcmVuIG9mIERhbiBzZXQgZm9yd2FyZCwgd2hpY2ggd2FzIHRoZSByZXJld2FyZCBvZiBhbGwgdGhlIGNhbXBzIHRocm91Z2hvdXQgdGhlaXIgaG9zdHM6IGFuZCBvdmVyIGhpcyBob3N0IHdhcyBBaGllemVyIHRoZSBzb24gb2YgQW1taXNoYWRkYWkuCkFuZCBvdmVyIHRoZSBob3N0IG9mIHRoZSB0cmliZSBvZiB0aGUgY2hpbGRyZW4gb2YgQXNoZXIgd2FzIFBhZ2llbCB0aGUgc29uIG9mIE9jcmFuLgpBbmQgb3ZlciB0aGUgaG9zdCBvZiB0aGUgdHJpYmUgb2YgdGhlIGNoaWxkcmVuIG9mIE5hcGh0YWxpIHdhcyBBaGlyYSB0aGUgc29uIG9mIEVuYW4uClRodXMgd2VyZSB0aGUgam91cm5leWluZ3Mgb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBhY2NvcmRpbmcgdG8gdGhlaXIgYXJtaWVzLCB3aGVuIHRoZXkgc2V0IGZvcndhcmQuCkFuZCBNb3NlcyBzYWlkIHVudG8gSG9iYWIsIHRoZSBzb24gb2YgUmFndWVsIHRoZSBNaWRpYW5pdGUsIE1vc2VzJyBmYXRoZXIgaW4gbGF3LCBXZSBhcmUgam91cm5leWluZyB1bnRvIHRoZSBwbGFjZSBvZiB3aGljaCB0aGUgTE9SRCBzYWlkLCBJIHdpbGwgZ2l2ZSBpdCB5b3U6IGNvbWUgdGhvdSB3aXRoIHVzLCBhbmQgd2Ugd2lsbCBkbyB0aGVlIGdvb2Q6IGZvciB0aGUgTE9SRCBoYXRoIHNwb2tlbiBnb29kIGNvbmNlcm5pbmcgSXNyYWVsLgpBbmQgaGUgc2FpZCB1bnRvIGhpbSwgSSB3aWxsIG5vdCBnbzsgYnV0IEkgd2lsbCBkZXBhcnQgdG8gbWluZSBvd24gbGFuZCwgYW5kIHRvIG15IGtpbmRyZWQuCkFuZCBoZSBzYWlkLCBMZWF2ZSB1cyBub3QsIEkgcHJheSB0aGVlOyBmb3Jhc211Y2ggYXMgdGhvdSBrbm93ZXN0IGhvdyB3ZSBhcmUgdG8gZW5jYW1wIGluIHRoZSB3aWxkZXJuZXNzLCBhbmQgdGhvdSBtYXllc3QgYmUgdG8gdXMgaW5zdGVhZCBvZiBleWVzLgpBbmQgaXQgc2hhbGwgYmUsIGlmIHRob3UgZ28gd2l0aCB1cywgeWVhLCBpdCBzaGFsbCBiZSwgdGhhdCB3aGF0IGdvb2RuZXNzIHRoZSBMT1JEIHNoYWxsIGRvIHVudG8gdXMsIHRoZSBzYW1lIHdpbGwgd2UgZG8gdW50byB0aGVlLgpBbmQgdGhleSBkZXBhcnRlZCBmcm9tIHRoZSBtb3VudCBvZiB0aGUgTE9SRCB0aHJlZSBkYXlzJyBqb3VybmV5OiBhbmQgdGhlIGFyayBvZiB0aGUgY292ZW5hbnQgb2YgdGhlIExPUkQgd2VudCBiZWZvcmUgdGhlbSBpbiB0aGUgdGhyZWUgZGF5cycgam91cm5leSwgdG8gc2VhcmNoIG91dCBhIHJlc3RpbmcgcGxhY2UgZm9yIHRoZW0uCkFuZCB0aGUgY2xvdWQgb2YgdGhlIExPUkQgd2FzIHVwb24gdGhlbSBieSBkYXksIHdoZW4gdGhleSB3ZW50IG91dCBvZiB0aGUgY2FtcC4KQW5kIGl0IGNhbWUgdG8gcGFzcywgd2hlbiB0aGUgYXJrIHNldCBmb3J3YXJkLCB0aGF0IE1vc2VzIHNhaWQsIFJpc2UgdXAsIExPUkQsIGFuZCBsZXQgdGhpbmUgZW5lbWllcyBiZSBzY2F0dGVyZWQ7IGFuZCBsZXQgdGhlbSB0aGF0IGhhdGUgdGhlZSBmbGVlIGJlZm9yZSB0aGVlLgpBbmQgd2hlbiBpdCByZXN0ZWQsIGhlIHNhaWQsIFJldHVybiwgTyBMT1JELCB1bnRvIHRoZSBtYW55IHRob3VzYW5kcyBvZiBJc3JhZWwuCkFuZCB3aGVuIHRoZSBwZW9wbGUgY29tcGxhaW5lZCwgaXQgZGlzcGxlYXNlZCB0aGUgTE9SRDogYW5kIHRoZSBMT1JEIGhlYXJkIGl0OyBhbmQgaGlzIGFuZ2VyIHdhcyBraW5kbGVkOyBhbmQgdGhlIGZpcmUgb2YgdGhlIExPUkQgYnVybnQgYW1vbmcgdGhlbSwgYW5kIGNvbnN1bWVkIHRoZW0gdGhhdCB3ZXJlIGluIHRoZSB1dHRlcm1vc3QgcGFydHMgb2YgdGhlIGNhbXAuCkFuZCB0aGUgcGVvcGxlIGNyaWVkIHVudG8gTW9zZXM7IGFuZCB3aGVuIE1vc2VzIHByYXllZCB1bnRvIHRoZSBMT1JELCB0aGUgZmlyZSB3YXMgcXVlbmNoZWQuCkFuZCBoZSBjYWxsZWQgdGhlIG5hbWUgb2YgdGhlIHBsYWNlIFRhYmVyYWg6IGJlY2F1c2UgdGhlIGZpcmUgb2YgdGhlIExPUkQgYnVybnQgYW1vbmcgdGhlbS4KQW5kIHRoZSBtaXh0IG11bHRpdHVkZSB0aGF0IHdhcyBhbW9uZyB0aGVtIGZlbGwgYSBsdXN0aW5nOiBhbmQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBhbHNvIHdlcHQgYWdhaW4sIGFuZCBzYWlkLCBXaG8gc2hhbGwgZ2l2ZSB1cyBmbGVzaCB0byBlYXQ/CldlIHJlbWVtYmVyIHRoZSBmaXNoLCB3aGljaCB3ZSBkaWQgZWF0IGluIEVneXB0IGZyZWVseTsgdGhlIGN1Y3VtYmVycywgYW5kIHRoZSBtZWxvbnMsIGFuZCB0aGUgbGVla3MsIGFuZCB0aGUgb25pb25zLCBhbmQgdGhlIGdhcmxpY2s6CkJ1dCBub3cgb3VyIHNvdWwgaXMgZHJpZWQgYXdheTogdGhlcmUgaXMgbm90aGluZyBhdCBhbGwsIGJlc2lkZSB0aGlzIG1hbm5hLCBiZWZvcmUgb3VyIGV5ZXMuCkFuZCB0aGUgbWFubmEgd2FzIGFzIGNvcmlhbmRlciBzZWVkLCBhbmQgdGhlIGNvbG91ciB0aGVyZW9mIGFzIHRoZSBjb2xvdXIgb2YgYmRlbGxpdW0uCkFuZCB0aGUgcGVvcGxlIHdlbnQgYWJvdXQsIGFuZCBnYXRoZXJlZCBpdCwgYW5kIGdyb3VuZCBpdCBpbiBtaWxscywgb3IgYmVhdCBpdCBpbiBhIG1vcnRhciwgYW5kIGJha2VkIGl0IGluIHBhbnMsIGFuZCBtYWRlIGNha2VzIG9mIGl0OiBhbmQgdGhlIHRhc3RlIG9mIGl0IHdhcyBhcyB0aGUgdGFzdGUgb2YgZnJlc2ggb2lsLgpBbmQgd2hlbiB0aGUgZGV3IGZlbGwgdXBvbiB0aGUgY2FtcCBpbiB0aGUgbmlnaHQsIHRoZSBtYW5uYSBmZWxsIHVwb24gaXQuClRoZW4gTW9zZXMgaGVhcmQgdGhlIHBlb3BsZSB3ZWVwIHRocm91Z2hvdXQgdGhlaXIgZmFtaWxpZXMsIGV2ZXJ5IG1hbiBpbiB0aGUgZG9vciBvZiBoaXMgdGVudDogYW5kIHRoZSBhbmdlciBvZiB0aGUgTE9SRCB3YXMga2luZGxlZCBncmVhdGx5OyBNb3NlcyBhbHNvIHdhcyBkaXNwbGVhc2VkLgpBbmQgTW9zZXMgc2FpZCB1bnRvIHRoZSBMT1JELCBXaGVyZWZvcmUgaGFzdCB0aG91IGFmZmxpY3RlZCB0aHkgc2VydmFudD8gYW5kIHdoZXJlZm9yZSBoYXZlIEkgbm90IGZvdW5kIGZhdm91ciBpbiB0aHkgc2lnaHQsIHRoYXQgdGhvdSBsYXllc3QgdGhlIGJ1cmRlbiBvZiBhbGwgdGhpcyBwZW9wbGUgdXBvbiBtZT8KSGF2ZSBJIGNvbmNlaXZlZCBhbGwgdGhpcyBwZW9wbGU/IGhhdmUgSSBiZWdvdHRlbiB0aGVtLCB0aGF0IHRob3Ugc2hvdWxkZXN0IHNheSB1bnRvIG1lLCBDYXJyeSB0aGVtIGluIHRoeSBib3NvbSwgYXMgYSBudXJzaW5nIGZhdGhlciBiZWFyZXRoIHRoZSBzdWNraW5nIGNoaWxkLCB1bnRvIHRoZSBsYW5kIHdoaWNoIHRob3Ugc3dhcmVzdCB1bnRvIHRoZWlyIGZhdGhlcnM/CldoZW5jZSBzaG91bGQgSSBoYXZlIGZsZXNoIHRvIGdpdmUgdW50byBhbGwgdGhpcyBwZW9wbGU/IGZvciB0aGV5IHdlZXAgdW50byBtZSwgc2F5aW5nLCBHaXZlIHVzIGZsZXNoLCB0aGF0IHdlIG1heSBlYXQuCkkgYW0gbm90IGFibGUgdG8gYmVhciBhbGwgdGhpcyBwZW9wbGUgYWxvbmUsIGJlY2F1c2UgaXQgaXMgdG9vIGhlYXZ5IGZvciBtZS4KQW5kIGlmIHRob3UgZGVhbCB0aHVzIHdpdGggbWUsIGtpbGwgbWUsIEkgcHJheSB0aGVlLCBvdXQgb2YgaGFuZCwgaWYgSSBoYXZlIGZvdW5kIGZhdm91ciBpbiB0aHkgc2lnaHQ7IGFuZCBsZXQgbWUgbm90IHNlZSBteSB3cmV0Y2hlZG5lc3MuCkFuZCB0aGUgTE9SRCBzYWlkIHVudG8gTW9zZXMsIEdhdGhlciB1bnRvIG1lIHNldmVudHkgbWVuIG9mIHRoZSBlbGRlcnMgb2YgSXNyYWVsLCB3aG9tIHRob3Uga25vd2VzdCB0byBiZSB0aGUgZWxkZXJzIG9mIHRoZSBwZW9wbGUsIGFuZCBvZmZpY2VycyBvdmVyIHRoZW07IGFuZCBicmluZyB0aGVtIHVudG8gdGhlIHRhYmVybmFjbGUgb2YgdGhlIGNvbmdyZWdhdGlvbiwgdGhhdCB0aGV5IG1heSBzdGFuZCB0aGVyZSB3aXRoIHRoZWUuCkFuZCBJIHdpbGwgY29tZSBkb3duIGFuZCB0YWxrIHdpdGggdGhlZSB0aGVyZTogYW5kIEkgd2lsbCB0YWtlIG9mIHRoZSBzcGlyaXQgd2hpY2ggaXMgdXBvbiB0aGVlLCBhbmQgd2lsbCBwdXQgaXQgdXBvbiB0aGVtOyBhbmQgdGhleSBzaGFsbCBiZWFyIHRoZSBidXJkZW4gb2YgdGhlIHBlb3BsZSB3aXRoIHRoZWUsIHRoYXQgdGhvdSBiZWFyIGl0IG5vdCB0aHlzZWxmIGFsb25lLgpBbmQgc2F5IHRob3UgdW50byB0aGUgcGVvcGxlLCBTYW5jdGlmeSB5b3Vyc2VsdmVzIGFnYWluc3QgdG8gbW9ycm93LCBhbmQgeWUgc2hhbGwgZWF0IGZsZXNoOiBmb3IgeWUgaGF2ZSB3ZXB0IGluIHRoZSBlYXJzIG9mIHRoZSBMT1JELCBzYXlpbmcsIFdobyBzaGFsbCBnaXZlIHVzIGZsZXNoIHRvIGVhdD8gZm9yIGl0IHdhcyB3ZWxsIHdpdGggdXMgaW4gRWd5cHQ6IHRoZXJlZm9yZSB0aGUgTE9SRCB3aWxsIGdpdmUgeW91IGZsZXNoLCBhbmQgeWUgc2hhbGwgZWF0LgpZZSBzaGFsbCBub3QgZWF0IG9uZSBkYXksIG5vciB0d28gZGF5cywgbm9yIGZpdmUgZGF5cywgbmVpdGhlciB0ZW4gZGF5cywgbm9yIHR3ZW50eSBkYXlzOwpCdXQgZXZlbiBhIHdob2xlIG1vbnRoLCB1bnRpbCBpdCBjb21lIG91dCBhdCB5b3VyIG5vc3RyaWxzLCBhbmQgaXQgYmUgbG9hdGhzb21lIHVudG8geW91OiBiZWNhdXNlIHRoYXQgeWUgaGF2ZSBkZXNwaXNlZCB0aGUgTE9SRCB3aGljaCBpcyBhbW9uZyB5b3UsIGFuZCBoYXZlIHdlcHQgYmVmb3JlIGhpbSwgc2F5aW5nLCBXaHkgY2FtZSB3ZSBmb3J0aCBvdXQgb2YgRWd5cHQ/CkFuZCBNb3NlcyBzYWlkLCBUaGUgcGVvcGxlLCBhbW9uZyB3aG9tIEkgYW0sIGFyZSBzaXggaHVuZHJlZCB0aG91c2FuZCBmb290bWVuOyBhbmQgdGhvdSBoYXN0IHNhaWQsIEkgd2lsbCBnaXZlIHRoZW0gZmxlc2gsIHRoYXQgdGhleSBtYXkgZWF0IGEgd2hvbGUgbW9udGguClNoYWxsIHRoZSBmbG9ja3MgYW5kIHRoZSBoZXJkcyBiZSBzbGFpbiBmb3IgdGhlbSwgdG8gc3VmZmljZSB0aGVtPyBvciBzaGFsbCBhbGwgdGhlIGZpc2ggb2YgdGhlIHNlYSBiZSBnYXRoZXJlZCB0b2dldGhlciBmb3IgdGhlbSwgdG8gc3VmZmljZSB0aGVtPwpBbmQgdGhlIExPUkQgc2FpZCB1bnRvIE1vc2VzLCBJcyB0aGUgTE9SRCdzIGhhbmQgd2F4ZWQgc2hvcnQ/IHRob3Ugc2hhbHQgc2VlIG5vdyB3aGV0aGVyIG15IHdvcmQgc2hhbGwgY29tZSB0byBwYXNzIHVudG8gdGhlZSBvciBub3QuCkFuZCBNb3NlcyB3ZW50IG91dCwgYW5kIHRvbGQgdGhlIHBlb3BsZSB0aGUgd29yZHMgb2YgdGhlIExPUkQsIGFuZCBnYXRoZXJlZCB0aGUgc2V2ZW50eSBtZW4gb2YgdGhlIGVsZGVycyBvZiB0aGUgcGVvcGxlLCBhbmQgc2V0IHRoZW0gcm91bmQgYWJvdXQgdGhlIHRhYmVybmFjbGUuCkFuZCB0aGUgTE9SRCBjYW1lIGRvd24gaW4gYSBjbG91ZCwgYW5kIHNwYWtlIHVudG8gaGltLCBhbmQgdG9vayBvZiB0aGUgc3Bpcml0IHRoYXQgd2FzIHVwb24gaGltLCBhbmQgZ2F2ZSBpdCB1bnRvIHRoZSBzZXZlbnR5IGVsZGVyczogYW5kIGl0IGNhbWUgdG8gcGFzcywgdGhhdCwgd2hlbiB0aGUgc3Bpcml0IHJlc3RlZCB1cG9uIHRoZW0sIHRoZXkgcHJvcGhlc2llZCwgYW5kIGRpZCBub3QgY2Vhc2UuCkJ1dCB0aGVyZSByZW1haW5lZCB0d28gb2YgdGhlIG1lbiBpbiB0aGUgY2FtcCwgdGhlIG5hbWUgb2YgdGhlIG9uZSB3YXMgRWxkYWQsIGFuZCB0aGUgbmFtZSBvZiB0aGUgb3RoZXIgTWVkYWQ6IGFuZCB0aGUgc3Bpcml0IHJlc3RlZCB1cG9uIHRoZW07IGFuZCB0aGV5IHdlcmUgb2YgdGhlbSB0aGF0IHdlcmUgd3JpdHRlbiwgYnV0IHdlbnQgbm90IG91dCB1bnRvIHRoZSB0YWJlcm5hY2xlOiBhbmQgdGhleSBwcm9waGVzaWVkIGluIHRoZSBjYW1wLgpBbmQgdGhlcmUgcmFuIGEgeW91bmcgbWFuLCBhbmQgdG9sZCBNb3NlcywgYW5kIHNhaWQsIEVsZGFkIGFuZCBNZWRhZCBkbyBwcm9waGVzeSBpbiB0aGUgY2FtcC4KQW5kIEpvc2h1YSB0aGUgc29uIG9mIE51biwgdGhlIHNlcnZhbnQgb2YgTW9zZXMsIG9uZSBvZiBoaXMgeW91bmcgbWVuLCBhbnN3ZXJlZCBhbmQgc2FpZCwgTXkgbG9yZCBNb3NlcywgZm9yYmlkIHRoZW0uCkFuZCBNb3NlcyBzYWlkIHVudG8gaGltLCBFbnZpZXN0IHRob3UgZm9yIG15IHNha2U/IHdvdWxkIEdvZCB0aGF0IGFsbCB0aGUgTE9SRCdzIHBlb3BsZSB3ZXJlIHByb3BoZXRzLCBhbmQgdGhhdCB0aGUgTE9SRCB3b3VsZCBwdXQgaGlzIHNwaXJpdCB1cG9uIHRoZW0hCkFuZCBNb3NlcyBnYXQgaGltIGludG8gdGhlIGNhbXAsIGhlIGFuZCB0aGUgZWxkZXJzIG9mIElzcmFlbC4KQW5kIHRoZXJlIHdlbnQgZm9ydGggYSB3aW5kIGZyb20gdGhlIExPUkQsIGFuZCBicm91Z2h0IHF1YWlscyBmcm9tIHRoZSBzZWEsIGFuZCBsZXQgdGhlbSBmYWxsIGJ5IHRoZSBjYW1wLCBhcyBpdCB3ZXJlIGEgZGF5J3Mgam91cm5leSBvbiB0aGlzIHNpZGUsIGFuZCBhcyBpdCB3ZXJlIGEgZGF5J3Mgam91cm5leSBvbiB0aGUgb3RoZXIgc2lkZSwgcm91bmQgYWJvdXQgdGhlIGNhbXAsIGFuZCBhcyBpdCB3ZXJlIHR3byBjdWJpdHMgaGlnaCB1cG9uIHRoZSBmYWNlIG9mIHRoZSBlYXJ0aC4KQW5kIHRoZSBwZW9wbGUgc3Rvb2QgdXAgYWxsIHRoYXQgZGF5LCBhbmQgYWxsIHRoYXQgbmlnaHQsIGFuZCBhbGwgdGhlIG5leHQgZGF5LCBhbmQgdGhleSBnYXRoZXJlZCB0aGUgcXVhaWxzOiBoZSB0aGF0IGdhdGhlcmVkIGxlYXN0IGdhdGhlcmVkIHRlbiBob21lcnM6IGFuZCB0aGV5IHNwcmVhZCB0aGVtIGFsbCBhYnJvYWQgZm9yIHRoZW1zZWx2ZXMgcm91bmQgYWJvdXQgdGhlIGNhbXAuCkFuZCB3aGlsZSB0aGUgZmxlc2ggd2FzIHlldCBiZXR3ZWVuIHRoZWlyIHRlZXRoLCBlcmUgaXQgd2FzIGNoZXdlZCwgdGhlIHdyYXRoIG9mIHRoZSBMT1JEIHdhcyBraW5kbGVkIGFnYWluc3QgdGhlIHBlb3BsZSwgYW5kIHRoZSBMT1JEIHNtb3RlIHRoZSBwZW9wbGUgd2l0aCBhIHZlcnkgZ3JlYXQgcGxhZ3VlLgpBbmQgaGUgY2FsbGVkIHRoZSBuYW1lIG9mIHRoYXQgcGxhY2UgS2licm90aGhhdHRhYXZhaDogYmVjYXVzZSB0aGVyZSB0aGV5IGJ1cmllZCB0aGUgcGVvcGxlIHRoYXQgbHVzdGVkLgpBbmQgdGhlIHBlb3BsZSBqb3VybmV5ZWQgZnJvbSBLaWJyb3RoaGF0dGFhdmFoIHVudG8gSGF6ZXJvdGg7IGFuZCBhYm9kZSBhdCBIYXplcm90aC4KQW5kIE1pcmlhbSBhbmQgQWFyb24gc3Bha2UgYWdhaW5zdCBNb3NlcyBiZWNhdXNlIG9mIHRoZSBFdGhpb3BpYW4gd29tYW4gd2hvbSBoZSBoYWQgbWFycmllZDogZm9yIGhlIGhhZCBtYXJyaWVkIGFuIEV0aGlvcGlhbiB3b21hbi4KQW5kIHRoZXkgc2FpZCwgSGF0aCB0aGUgTE9SRCBpbmRlZWQgc3Bva2VuIG9ubHkgYnkgTW9zZXM/IGhhdGggaGUgbm90IHNwb2tlbiBhbHNvIGJ5IHVzPyBBbmQgdGhlIExPUkQgaGVhcmQgaXQuCihOb3cgdGhlIG1hbiBNb3NlcyB3YXMgdmVyeSBtZWVrLCBhYm92ZSBhbGwgdGhlIG1lbiB3aGljaCB3ZXJlIHVwb24gdGhlIGZhY2Ugb2YgdGhlIGVhcnRoLikKQW5kIHRoZSBMT1JEIHNwYWtlIHN1ZGRlbmx5IHVudG8gTW9zZXMsIGFuZCB1bnRvIEFhcm9uLCBhbmQgdW50byBNaXJpYW0sIENvbWUgb3V0IHllIHRocmVlIHVudG8gdGhlIHRhYmVybmFjbGUgb2YgdGhlIGNvbmdyZWdhdGlvbi4gQW5kIHRoZXkgdGhyZWUgY2FtZSBvdXQuCkFuZCB0aGUgTE9SRCBjYW1lIGRvd24gaW4gdGhlIHBpbGxhciBvZiB0aGUgY2xvdWQsIGFuZCBzdG9vZCBpbiB0aGUgZG9vciBvZiB0aGUgdGFiZXJuYWNsZSwgYW5kIGNhbGxlZCBBYXJvbiBhbmQgTWlyaWFtOiBhbmQgdGhleSBib3RoIGNhbWUgZm9ydGguCkFuZCBoZSBzYWlkLCBIZWFyIG5vdyBteSB3b3JkczogSWYgdGhlcmUgYmUgYSBwcm9waGV0IGFtb25nIHlvdSwgSSB0aGUgTE9SRCB3aWxsIG1ha2UgbXlzZWxmIGtub3duIHVudG8gaGltIGluIGEgdmlzaW9uLCBhbmQgd2lsbCBzcGVhayB1bnRvIGhpbSBpbiBhIGRyZWFtLgpNeSBzZXJ2YW50IE1vc2VzIGlzIG5vdCBzbywgd2hvIGlzIGZhaXRoZnVsIGluIGFsbCBtaW5lIGhvdXNlLgpXaXRoIGhpbSB3aWxsIEkgc3BlYWsgbW91dGggdG8gbW91dGgsIGV2ZW4gYXBwYXJlbnRseSwgYW5kIG5vdCBpbiBkYXJrIHNwZWVjaGVzOyBhbmQgdGhlIHNpbWlsaXR1ZGUgb2YgdGhlIExPUkQgc2hhbGwgaGUgYmVob2xkOiB3aGVyZWZvcmUgdGhlbiB3ZXJlIHllIG5vdCBhZnJhaWQgdG8gc3BlYWsgYWdhaW5zdCBteSBzZXJ2YW50IE1vc2VzPwpBbmQgdGhlIGFuZ2VyIG9mIHRoZSBMT1JEIHdhcyBraW5kbGVkIGFnYWluc3QgdGhlbTsgYW5kIGhlIGRlcGFydGVkLgpBbmQgdGhlIGNsb3VkIGRlcGFydGVkIGZyb20gb2ZmIHRoZSB0YWJlcm5hY2xlOyBhbmQsIGJlaG9sZCwgTWlyaWFtIGJlY2FtZSBsZXByb3VzLCB3aGl0ZSBhcyBzbm93OiBhbmQgQWFyb24gbG9va2VkIHVwb24gTWlyaWFtLCBhbmQsIGJlaG9sZCwgc2hlIHdhcyBsZXByb3VzLgpBbmQgQWFyb24gc2FpZCB1bnRvIE1vc2VzLCBBbGFzLCBteSBsb3JkLCBJIGJlc2VlY2ggdGhlZSwgbGF5IG5vdCB0aGUgc2luIHVwb24gdXMsIHdoZXJlaW4gd2UgaGF2ZSBkb25lIGZvb2xpc2hseSwgYW5kIHdoZXJlaW4gd2UgaGF2ZSBzaW5uZWQuCkxldCBoZXIgbm90IGJlIGFzIG9uZSBkZWFkLCBvZiB3aG9tIHRoZSBmbGVzaCBpcyBoYWxmIGNvbnN1bWVkIHdoZW4gaGUgY29tZXRoIG91dCBvZiBoaXMgbW90aGVyJ3Mgd29tYi4KQW5kIE1vc2VzIGNyaWVkIHVudG8gdGhlIExPUkQsIHNheWluZywgSGVhbCBoZXIgbm93LCBPIEdvZCwgSSBiZXNlZWNoIHRoZWUuCkFuZCB0aGUgTE9SRCBzYWlkIHVudG8gTW9zZXMsIElmIGhlciBmYXRoZXIgaGFkIGJ1dCBzcGl0IGluIGhlciBmYWNlLCBzaG91bGQgc2hlIG5vdCBiZSBhc2hhbWVkIHNldmVuIGRheXM/IGxldCBoZXIgYmUgc2h1dCBvdXQgZnJvbSB0aGUgY2FtcCBzZXZlbiBkYXlzLCBhbmQgYWZ0ZXIgdGhhdCBsZXQgaGVyIGJlIHJlY2VpdmVkIGluIGFnYWluLgpBbmQgTWlyaWFtIHdhcyBzaHV0IG91dCBmcm9tIHRoZSBjYW1wIHNldmVuIGRheXM6IGFuZCB0aGUgcGVvcGxlIGpvdXJuZXllZCBub3QgdGlsbCBNaXJpYW0gd2FzIGJyb3VnaHQgaW4gYWdhaW4uCkFuZCBhZnRlcndhcmQgdGhlIHBlb3BsZSByZW1vdmVkIGZyb20gSGF6ZXJvdGgsIGFuZCBwaXRjaGVkIGluIHRoZSB3aWxkZXJuZXNzIG9mIFBhcmFuLgpBbmQgdGhlIExPUkQgc3Bha2UgdW50byBNb3Nlcywgc2F5aW5nLApTZW5kIHRob3UgbWVuLCB0aGF0IHRoZXkgbWF5IHNlYXJjaCB0aGUgbGFuZCBvZiBDYW5hYW4sIHdoaWNoIEkgZ2l2ZSB1bnRvIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWw6IG9mIGV2ZXJ5IHRyaWJlIG9mIHRoZWlyIGZhdGhlcnMgc2hhbGwgeWUgc2VuZCBhIG1hbiwgZXZlcnkgb25lIGEgcnVsZXIgYW1vbmcgdGhlbS4KQW5kIE1vc2VzIGJ5IHRoZSBjb21tYW5kbWVudCBvZiB0aGUgTE9SRCBzZW50IHRoZW0gZnJvbSB0aGUgd2lsZGVybmVzcyBvZiBQYXJhbjogYWxsIHRob3NlIG1lbiB3ZXJlIGhlYWRzIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwuCkFuZCB0aGVzZSB3ZXJlIHRoZWlyIG5hbWVzOiBvZiB0aGUgdHJpYmUgb2YgUmV1YmVuLCBTaGFtbXVhIHRoZSBzb24gb2YgWmFjY3VyLgpPZiB0aGUgdHJpYmUgb2YgU2ltZW9uLCBTaGFwaGF0IHRoZSBzb24gb2YgSG9yaS4KT2YgdGhlIHRyaWJlIG9mIEp1ZGFoLCBDYWxlYiB0aGUgc29uIG9mIEplcGh1bm5laC4KT2YgdGhlIHRyaWJlIG9mIElzc2FjaGFyLCBJZ2FsIHRoZSBzb24gb2YgSm9zZXBoLgpPZiB0aGUgdHJpYmUgb2YgRXBocmFpbSwgT3NoZWEgdGhlIHNvbiBvZiBOdW4uCk9mIHRoZSB0cmliZSBvZiBCZW5qYW1pbiwgUGFsdGkgdGhlIHNvbiBvZiBSYXBodS4KT2YgdGhlIHRyaWJlIG9mIFplYnVsdW4sIEdhZGRpZWwgdGhlIHNvbiBvZiBTb2RpLgpPZiB0aGUgdHJpYmUgb2YgSm9zZXBoLCBuYW1lbHksIG9mIHRoZSB0cmliZSBvZiBNYW5hc3NlaCwgR2FkZGkgdGhlIHNvbiBvZiBTdXNpLgpPZiB0aGUgdHJpYmUgb2YgRGFuLCBBbW1pZWwgdGhlIHNvbiBvZiBHZW1hbGxpLgpPZiB0aGUgdHJpYmUgb2YgQXNoZXIsIFNldGh1ciB0aGUgc29uIG9mIE1pY2hhZWwuCk9mIHRoZSB0cmliZSBvZiBOYXBodGFsaSwgTmFoYmkgdGhlIHNvbiBvZiBWb3Boc2kuCk9mIHRoZSB0cmliZSBvZiBHYWQsIEdldWVsIHRoZSBzb24gb2YgTWFjaGkuClRoZXNlIGFyZSB0aGUgbmFtZXMgb2YgdGhlIG1lbiB3aGljaCBNb3NlcyBzZW50IHRvIHNweSBvdXQgdGhlIGxhbmQuIEFuZCBNb3NlcyBjYWxsZWQgT3NoZWEgdGhlIHNvbiBvZiBOdW4gSmVob3NodWEuCkFuZCBNb3NlcyBzZW50IHRoZW0gdG8gc3B5IG91dCB0aGUgbGFuZCBvZiBDYW5hYW4sIGFuZCBzYWlkIHVudG8gdGhlbSwgR2V0IHlvdSB1cCB0aGlzIHdheSBzb3V0aHdhcmQsIGFuZCBnbyB1cCBpbnRvIHRoZSBtb3VudGFpbjoKQW5kIHNlZSB0aGUgbGFuZCwgd2hhdCBpdCBpcywgYW5kIHRoZSBwZW9wbGUgdGhhdCBkd2VsbGV0aCB0aGVyZWluLCB3aGV0aGVyIHRoZXkgYmUgc3Ryb25nIG9yIHdlYWssIGZldyBvciBtYW55OwpBbmQgd2hhdCB0aGUgbGFuZCBpcyB0aGF0IHRoZXkgZHdlbGwgaW4sIHdoZXRoZXIgaXQgYmUgZ29vZCBvciBiYWQ7IGFuZCB3aGF0IGNpdGllcyB0aGV5IGJlIHRoYXQgdGhleSBkd2VsbCBpbiwgd2hldGhlciBpbiB0ZW50cywgb3IgaW4gc3Ryb25nIGhvbGRzOwpBbmQgd2hhdCB0aGUgbGFuZCBpcywgd2hldGhlciBpdCBiZSBmYXQgb3IgbGVhbiwgd2hldGhlciB0aGVyZSBiZSB3b29kIHRoZXJlaW4sIG9yIG5vdC4gQW5kIGJlIHllIG9mIGdvb2QgY291cmFnZSwgYW5kIGJyaW5nIG9mIHRoZSBmcnVpdCBvZiB0aGUgbGFuZC4gTm93IHRoZSB0aW1lIHdhcyB0aGUgdGltZSBvZiB0aGUgZmlyc3RyaXBlIGdyYXBlcy4KU28gdGhleSB3ZW50IHVwLCBhbmQgc2VhcmNoZWQgdGhlIGxhbmQgZnJvbSB0aGUgd2lsZGVybmVzcyBvZiBaaW4gdW50byBSZWhvYiwgYXMgbWVuIGNvbWUgdG8gSGFtYXRoLgpBbmQgdGhleSBhc2NlbmRlZCBieSB0aGUgc291dGgsIGFuZCBjYW1lIHVudG8gSGVicm9uOyB3aGVyZSBBaGltYW4sIFNoZXNoYWksIGFuZCBUYWxtYWksIHRoZSBjaGlsZHJlbiBvZiBBbmFrLCB3ZXJlLiAoTm93IEhlYnJvbiB3YXMgYnVpbHQgc2V2ZW4geWVhcnMgYmVmb3JlIFpvYW4gaW4gRWd5cHQuKQpBbmQgdGhleSBjYW1lIHVudG8gdGhlIGJyb29rIG9mIEVzaGNvbCwgYW5kIGN1dCBkb3duIGZyb20gdGhlbmNlIGEgYnJhbmNoIHdpdGggb25lIGNsdXN0ZXIgb2YgZ3JhcGVzLCBhbmQgdGhleSBiYXJlIGl0IGJldHdlZW4gdHdvIHVwb24gYSBzdGFmZjsgYW5kIHRoZXkgYnJvdWdodCBvZiB0aGUgcG9tZWdyYW5hdGVzLCBhbmQgb2YgdGhlIGZpZ3MuClRoZSBwbGFjZSB3YXMgY2FsbGVkIHRoZSBicm9vayBFc2hjb2wsIGJlY2F1c2Ugb2YgdGhlIGNsdXN0ZXIgb2YgZ3JhcGVzIHdoaWNoIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgY3V0IGRvd24gZnJvbSB0aGVuY2UuCkFuZCB0aGV5IHJldHVybmVkIGZyb20gc2VhcmNoaW5nIG9mIHRoZSBsYW5kIGFmdGVyIGZvcnR5IGRheXMuCkFuZCB0aGV5IHdlbnQgYW5kIGNhbWUgdG8gTW9zZXMsIGFuZCB0byBBYXJvbiwgYW5kIHRvIGFsbCB0aGUgY29uZ3JlZ2F0aW9uIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIHVudG8gdGhlIHdpbGRlcm5lc3Mgb2YgUGFyYW4sIHRvIEthZGVzaDsgYW5kIGJyb3VnaHQgYmFjayB3b3JkIHVudG8gdGhlbSwgYW5kIHVudG8gYWxsIHRoZSBjb25ncmVnYXRpb24sIGFuZCBzaGV3ZWQgdGhlbSB0aGUgZnJ1aXQgb2YgdGhlIGxhbmQuCkFuZCB0aGV5IHRvbGQgaGltLCBhbmQgc2FpZCwgV2UgY2FtZSB1bnRvIHRoZSBsYW5kIHdoaXRoZXIgdGhvdSBzZW50ZXN0IHVzLCBhbmQgc3VyZWx5IGl0IGZsb3dldGggd2l0aCBtaWxrIGFuZCBob25leTsgYW5kIHRoaXMgaXMgdGhlIGZydWl0IG9mIGl0LgpOZXZlcnRoZWxlc3MgdGhlIHBlb3BsZSBiZSBzdHJvbmcgdGhhdCBkd2VsbCBpbiB0aGUgbGFuZCwgYW5kIHRoZSBjaXRpZXMgYXJlIHdhbGxlZCwgYW5kIHZlcnkgZ3JlYXQ6IGFuZCBtb3Jlb3ZlciB3ZSBzYXcgdGhlIGNoaWxkcmVuIG9mIEFuYWsgdGhlcmUuClRoZSBBbWFsZWtpdGVzIGR3ZWxsIGluIHRoZSBsYW5kIG9mIHRoZSBzb3V0aDogYW5kIHRoZSBIaXR0aXRlcywgYW5kIHRoZSBKZWJ1c2l0ZXMsIGFuZCB0aGUgQW1vcml0ZXMsIGR3ZWxsIGluIHRoZSBtb3VudGFpbnM6IGFuZCB0aGUgQ2FuYWFuaXRlcyBkd2VsbCBieSB0aGUgc2VhLCBhbmQgYnkgdGhlIGNvYXN0IG9mIEpvcmRhbi4KQW5kIENhbGViIHN0aWxsZWQgdGhlIHBlb3BsZSBiZWZvcmUgTW9zZXMsIGFuZCBzYWlkLCBMZXQgdXMgZ28gdXAgYXQgb25jZSwgYW5kIHBvc3Nlc3MgaXQ7IGZvciB3ZSBhcmUgd2VsbCBhYmxlIHRvIG92ZXJjb21lIGl0LgpCdXQgdGhlIG1lbiB0aGF0IHdlbnQgdXAgd2l0aCBoaW0gc2FpZCwgV2UgYmUgbm90IGFibGUgdG8gZ28gdXAgYWdhaW5zdCB0aGUgcGVvcGxlOyBmb3IgdGhleSBhcmUgc3Ryb25nZXIgdGhhbiB3ZS4KQW5kIHRoZXkgYnJvdWdodCB1cCBhbiBldmlsIHJlcG9ydCBvZiB0aGUgbGFuZCB3aGljaCB0aGV5IGhhZCBzZWFyY2hlZCB1bnRvIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIHNheWluZywgVGhlIGxhbmQsIHRocm91Z2ggd2hpY2ggd2UgaGF2ZSBnb25lIHRvIHNlYXJjaCBpdCwgaXMgYSBsYW5kIHRoYXQgZWF0ZXRoIHVwIHRoZSBpbmhhYml0YW50cyB0aGVyZW9mOyBhbmQgYWxsIHRoZSBwZW9wbGUgdGhhdCB3ZSBzYXcgaW4gaXQgYXJlIG1lbiBvZiBhIGdyZWF0IHN0YXR1cmUuCkFuZCB0aGVyZSB3ZSBzYXcgdGhlIGdpYW50cywgdGhlIHNvbnMgb2YgQW5haywgd2hpY2ggY29tZSBvZiB0aGUgZ2lhbnRzOiBhbmQgd2Ugd2VyZSBpbiBvdXIgb3duIHNpZ2h0IGFzIGdyYXNzaG9wcGVycywgYW5kIHNvIHdlIHdlcmUgaW4gdGhlaXIgc2lnaHQuCkFuZCBhbGwgdGhlIGNvbmdyZWdhdGlvbiBsaWZ0ZWQgdXAgdGhlaXIgdm9pY2UsIGFuZCBjcmllZDsgYW5kIHRoZSBwZW9wbGUgd2VwdCB0aGF0IG5pZ2h0LgpBbmQgYWxsIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgbXVybXVyZWQgYWdhaW5zdCBNb3NlcyBhbmQgYWdhaW5zdCBBYXJvbjogYW5kIHRoZSB3aG9sZSBjb25ncmVnYXRpb24gc2FpZCB1bnRvIHRoZW0sIFdvdWxkIEdvZCB0aGF0IHdlIGhhZCBkaWVkIGluIHRoZSBsYW5kIG9mIEVneXB0ISBvciB3b3VsZCBHb2Qgd2UgaGFkIGRpZWQgaW4gdGhpcyB3aWxkZXJuZXNzIQpBbmQgd2hlcmVmb3JlIGhhdGggdGhlIExPUkQgYnJvdWdodCB1cyB1bnRvIHRoaXMgbGFuZCwgdG8gZmFsbCBieSB0aGUgc3dvcmQsIHRoYXQgb3VyIHdpdmVzIGFuZCBvdXIgY2hpbGRyZW4gc2hvdWxkIGJlIGEgcHJleT8gd2VyZSBpdCBub3QgYmV0dGVyIGZvciB1cyB0byByZXR1cm4gaW50byBFZ3lwdD8KQW5kIHRoZXkgc2FpZCBvbmUgdG8gYW5vdGhlciwgTGV0IHVzIG1ha2UgYSBjYXB0YWluLCBhbmQgbGV0IHVzIHJldHVybiBpbnRvIEVneXB0LgpUaGVuIE1vc2VzIGFuZCBBYXJvbiBmZWxsIG9uIHRoZWlyIGZhY2VzIGJlZm9yZSBhbGwgdGhlIGFzc2VtYmx5IG9mIHRoZSBjb25ncmVnYXRpb24gb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbC4KQW5kIEpvc2h1YSB0aGUgc29uIG9mIE51biwgYW5kIENhbGViIHRoZSBzb24gb2YgSmVwaHVubmVoLCB3aGljaCB3ZXJlIG9mIHRoZW0gdGhhdCBzZWFyY2hlZCB0aGUgbGFuZCwgcmVudCB0aGVpciBjbG90aGVzOgpBbmQgdGhleSBzcGFrZSB1bnRvIGFsbCB0aGUgY29tcGFueSBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLCBzYXlpbmcsIFRoZSBsYW5kLCB3aGljaCB3ZSBwYXNzZWQgdGhyb3VnaCB0byBzZWFyY2ggaXQsIGlzIGFuIGV4Y2VlZGluZyBnb29kIGxhbmQuCklmIHRoZSBMT1JEIGRlbGlnaHQgaW4gdXMsIHRoZW4gaGUgd2lsbCBicmluZyB1cyBpbnRvIHRoaXMgbGFuZCwgYW5kIGdpdmUgaXQgdXM7IGEgbGFuZCB3aGljaCBmbG93ZXRoIHdpdGggbWlsayBhbmQgaG9uZXkuCk9ubHkgcmViZWwgbm90IHllIGFnYWluc3QgdGhlIExPUkQsIG5laXRoZXIgZmVhciB5ZSB0aGUgcGVvcGxlIG9mIHRoZSBsYW5kOyBmb3IgdGhleSBhcmUgYnJlYWQgZm9yIHVzOiB0aGVpciBkZWZlbmNlIGlzIGRlcGFydGVkIGZyb20gdGhlbSwgYW5kIHRoZSBMT1JEIGlzIHdpdGggdXM6IGZlYXIgdGhlbSBub3QuCkJ1dCBhbGwgdGhlIGNvbmdyZWdhdGlvbiBiYWRlIHN0b25lIHRoZW0gd2l0aCBzdG9uZXMuIEFuZCB0aGUgZ2xvcnkgb2YgdGhlIExPUkQgYXBwZWFyZWQgaW4gdGhlIHRhYmVybmFjbGUgb2YgdGhlIGNvbmdyZWdhdGlvbiBiZWZvcmUgYWxsIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwuCkFuZCB0aGUgTE9SRCBzYWlkIHVudG8gTW9zZXMsIEhvdyBsb25nIHdpbGwgdGhpcyBwZW9wbGUgcHJvdm9rZSBtZT8gYW5kIGhvdyBsb25nIHdpbGwgaXQgYmUgZXJlIHRoZXkgYmVsaWV2ZSBtZSwgZm9yIGFsbCB0aGUgc2lnbnMgd2hpY2ggSSBoYXZlIHNoZXdlZCBhbW9uZyB0aGVtPwpJIHdpbGwgc21pdGUgdGhlbSB3aXRoIHRoZSBwZXN0aWxlbmNlLCBhbmQgZGlzaW5oZXJpdCB0aGVtLCBhbmQgd2lsbCBtYWtlIG9mIHRoZWUgYSBncmVhdGVyIG5hdGlvbiBhbmQgbWlnaHRpZXIgdGhhbiB0aGV5LgpBbmQgTW9zZXMgc2FpZCB1bnRvIHRoZSBMT1JELCBUaGVuIHRoZSBFZ3lwdGlhbnMgc2hhbGwgaGVhciBpdCwgKGZvciB0aG91IGJyb3VnaHRlc3QgdXAgdGhpcyBwZW9wbGUgaW4gdGh5IG1pZ2h0IGZyb20gYW1vbmcgdGhlbTspCkFuZCB0aGV5IHdpbGwgdGVsbCBpdCB0byB0aGUgaW5oYWJpdGFudHMgb2YgdGhpcyBsYW5kOiBmb3IgdGhleSBoYXZlIGhlYXJkIHRoYXQgdGhvdSBMT1JEIGFydCBhbW9uZyB0aGlzIHBlb3BsZSwgdGhhdCB0aG91IExPUkQgYXJ0IHNlZW4gZmFjZSB0byBmYWNlLCBhbmQgdGhhdCB0aHkgY2xvdWQgc3RhbmRldGggb3ZlciB0aGVtLCBhbmQgdGhhdCB0aG91IGdvZXN0IGJlZm9yZSB0aGVtLCBieSBkYXkgdGltZSBpbiBhIHBpbGxhciBvZiBhIGNsb3VkLCBhbmQgaW4gYSBwaWxsYXIgb2YgZmlyZSBieSBuaWdodC4KTm93IGlmIHRob3Ugc2hhbHQga2lsbCBhbGwgdGhpcyBwZW9wbGUgYXMgb25lIG1hbiwgdGhlbiB0aGUgbmF0aW9ucyB3aGljaCBoYXZlIGhlYXJkIHRoZSBmYW1lIG9mIHRoZWUgd2lsbCBzcGVhaywgc2F5aW5nLApCZWNhdXNlIHRoZSBMT1JEIHdhcyBub3QgYWJsZSB0byBicmluZyB0aGlzIHBlb3BsZSBpbnRvIHRoZSBsYW5kIHdoaWNoIGhlIHN3YXJlIHVudG8gdGhlbSwgdGhlcmVmb3JlIGhlIGhhdGggc2xhaW4gdGhlbSBpbiB0aGUgd2lsZGVybmVzcy4KQW5kIG5vdywgSSBiZXNlZWNoIHRoZWUsIGxldCB0aGUgcG93ZXIgb2YgbXkgTE9SRCBiZSBncmVhdCwgYWNjb3JkaW5nIGFzIHRob3UgaGFzdCBzcG9rZW4sIHNheWluZywKVGhlIExPUkQgaXMgbG9uZ3N1ZmZlcmluZywgYW5kIG9mIGdyZWF0IG1lcmN5LCBmb3JnaXZpbmcgaW5pcXVpdHkgYW5kIHRyYW5zZ3Jlc3Npb24sIGFuZCBieSBubyBtZWFucyBjbGVhcmluZyB0aGUgZ3VpbHR5LCB2aXNpdGluZyB0aGUgaW5pcXVpdHkgb2YgdGhlIGZhdGhlcnMgdXBvbiB0aGUgY2hpbGRyZW4gdW50byB0aGUgdGhpcmQgYW5kIGZvdXJ0aCBnZW5lcmF0aW9uLgpQYXJkb24sIEkgYmVzZWVjaCB0aGVlLCB0aGUgaW5pcXVpdHkgb2YgdGhpcyBwZW9wbGUgYWNjb3JkaW5nIHVudG8gdGhlIGdyZWF0bmVzcyBvZiB0aHkgbWVyY3ksIGFuZCBhcyB0aG91IGhhc3QgZm9yZ2l2ZW4gdGhpcyBwZW9wbGUsIGZyb20gRWd5cHQgZXZlbiB1bnRpbCBub3cuCkFuZCB0aGUgTE9SRCBzYWlkLCBJIGhhdmUgcGFyZG9uZWQgYWNjb3JkaW5nIHRvIHRoeSB3b3JkOgpCdXQgYXMgdHJ1bHkgYXMgSSBsaXZlLCBhbGwgdGhlIGVhcnRoIHNoYWxsIGJlIGZpbGxlZCB3aXRoIHRoZSBnbG9yeSBvZiB0aGUgTE9SRC4KQmVjYXVzZSBhbGwgdGhvc2UgbWVuIHdoaWNoIGhhdmUgc2VlbiBteSBnbG9yeSwgYW5kIG15IG1pcmFjbGVzLCB3aGljaCBJIGRpZCBpbiBFZ3lwdCBhbmQgaW4gdGhlIHdpbGRlcm5lc3MsIGFuZCBoYXZlIHRlbXB0ZWQgbWUgbm93IHRoZXNlIHRlbiB0aW1lcywgYW5kIGhhdmUgbm90IGhlYXJrZW5lZCB0byBteSB2b2ljZTsKU3VyZWx5IHRoZXkgc2hhbGwgbm90IHNlZSB0aGUgbGFuZCB3aGljaCBJIHN3YXJlIHVudG8gdGhlaXIgZmF0aGVycywgbmVpdGhlciBzaGFsbCBhbnkgb2YgdGhlbSB0aGF0IHByb3Zva2VkIG1lIHNlZSBpdDoKQnV0IG15IHNlcnZhbnQgQ2FsZWIsIGJlY2F1c2UgaGUgaGFkIGFub3RoZXIgc3Bpcml0IHdpdGggaGltLCBhbmQgaGF0aCBmb2xsb3dlZCBtZSBmdWxseSwgaGltIHdpbGwgSSBicmluZyBpbnRvIHRoZSBsYW5kIHdoZXJlaW50byBoZSB3ZW50OyBhbmQgaGlzIHNlZWQgc2hhbGwgcG9zc2VzcyBpdC4KKE5vdyB0aGUgQW1hbGVraXRlcyBhbmQgdGhlIENhbmFhbml0ZXMgZHdlbHQgaW4gdGhlIHZhbGxleS4pIFRvbW9ycm93IHR1cm4geW91LCBhbmQgZ2V0IHlvdSBpbnRvIHRoZSB3aWxkZXJuZXNzIGJ5IHRoZSB3YXkgb2YgdGhlIFJlZCBzZWEuCkFuZCB0aGUgTE9SRCBzcGFrZSB1bnRvIE1vc2VzIGFuZCB1bnRvIEFhcm9uLCBzYXlpbmcsCkhvdyBsb25nIHNoYWxsIEkgYmVhciB3aXRoIHRoaXMgZXZpbCBjb25ncmVnYXRpb24sIHdoaWNoIG11cm11ciBhZ2FpbnN0IG1lPyBJIGhhdmUgaGVhcmQgdGhlIG11cm11cmluZ3Mgb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgd2hpY2ggdGhleSBtdXJtdXIgYWdhaW5zdCBtZS4KU2F5IHVudG8gdGhlbSwgQXMgdHJ1bHkgYXMgSSBsaXZlLCBzYWl0aCB0aGUgTE9SRCwgYXMgeWUgaGF2ZSBzcG9rZW4gaW4gbWluZSBlYXJzLCBzbyB3aWxsIEkgZG8gdG8geW91OgpZb3VyIGNhcmNhc2VzIHNoYWxsIGZhbGwgaW4gdGhpcyB3aWxkZXJuZXNzOyBhbmQgYWxsIHRoYXQgd2VyZSBudW1iZXJlZCBvZiB5b3UsIGFjY29yZGluZyB0byB5b3VyIHdob2xlIG51bWJlciwgZnJvbSB0d2VudHkgeWVhcnMgb2xkIGFuZCB1cHdhcmQgd2hpY2ggaGF2ZSBtdXJtdXJlZCBhZ2FpbnN0IG1lLgpEb3VidGxlc3MgeWUgc2hhbGwgbm90IGNvbWUgaW50byB0aGUgbGFuZCwgY29uY2VybmluZyB3aGljaCBJIHN3YXJlIHRvIG1ha2UgeW91IGR3ZWxsIHRoZXJlaW4sIHNhdmUgQ2FsZWIgdGhlIHNvbiBvZiBKZXBodW5uZWgsIGFuZCBKb3NodWEgdGhlIHNvbiBvZiBOdW4uCkJ1dCB5b3VyIGxpdHRsZSBvbmVzLCB3aGljaCB5ZSBzYWlkIHNob3VsZCBiZSBhIHByZXksIHRoZW0gd2lsbCBJIGJyaW5nIGluLCBhbmQgdGhleSBzaGFsbCBrbm93IHRoZSBsYW5kIHdoaWNoIHllIGhhdmUgZGVzcGlzZWQuCkJ1dCBhcyBmb3IgeW91LCB5b3VyIGNhcmNhc2VzLCB0aGV5IHNoYWxsIGZhbGwgaW4gdGhpcyB3aWxkZXJuZXNzLgpBbmQgeW91ciBjaGlsZHJlbiBzaGFsbCB3YW5kZXIgaW4gdGhlIHdpbGRlcm5lc3MgZm9ydHkgeWVhcnMsIGFuZCBiZWFyIHlvdXIgd2hvcmVkb21zLCB1bnRpbCB5b3VyIGNhcmNhc2VzIGJlIHdhc3RlZCBpbiB0aGUgd2lsZGVybmVzcy4KQWZ0ZXIgdGhlIG51bWJlciBvZiB0aGUgZGF5cyBpbiB3aGljaCB5ZSBzZWFyY2hlZCB0aGUgbGFuZCwgZXZlbiBmb3J0eSBkYXlzLCBlYWNoIGRheSBmb3IgYSB5ZWFyLCBzaGFsbCB5ZSBiZWFyIHlvdXIgaW5pcXVpdGllcywgZXZlbiBmb3J0eSB5ZWFycywgYW5kIHllIHNoYWxsIGtub3cgbXkgYnJlYWNoIG9mIHByb21pc2UuCkkgdGhlIExPUkQgaGF2ZSBzYWlkLCBJIHdpbGwgc3VyZWx5IGRvIGl0IHVudG8gYWxsIHRoaXMgZXZpbCBjb25ncmVnYXRpb24sIHRoYXQgYXJlIGdhdGhlcmVkIHRvZ2V0aGVyIGFnYWluc3QgbWU6IGluIHRoaXMgd2lsZGVybmVzcyB0aGV5IHNoYWxsIGJlIGNvbnN1bWVkLCBhbmQgdGhlcmUgdGhleSBzaGFsbCBkaWUuCkFuZCB0aGUgbWVuLCB3aGljaCBNb3NlcyBzZW50IHRvIHNlYXJjaCB0aGUgbGFuZCwgd2hvIHJldHVybmVkLCBhbmQgbWFkZSBhbGwgdGhlIGNvbmdyZWdhdGlvbiB0byBtdXJtdXIgYWdhaW5zdCBoaW0sIGJ5IGJyaW5naW5nIHVwIGEgc2xhbmRlciB1cG9uIHRoZSBsYW5kLApFdmVuIHRob3NlIG1lbiB0aGF0IGRpZCBicmluZyB1cCB0aGUgZXZpbCByZXBvcnQgdXBvbiB0aGUgbGFuZCwgZGllZCBieSB0aGUgcGxhZ3VlIGJlZm9yZSB0aGUgTE9SRC4KQnV0IEpvc2h1YSB0aGUgc29uIG9mIE51biwgYW5kIENhbGViIHRoZSBzb24gb2YgSmVwaHVubmVoLCB3aGljaCB3ZXJlIG9mIHRoZSBtZW4gdGhhdCB3ZW50IHRvIHNlYXJjaCB0aGUgbGFuZCwgbGl2ZWQgc3RpbGwuCkFuZCBNb3NlcyB0b2xkIHRoZXNlIHNheWluZ3MgdW50byBhbGwgdGhlIGNoaWxkcmVuIG9mIElzcmFlbDogYW5kIHRoZSBwZW9wbGUgbW91cm5lZCBncmVhdGx5LgpBbmQgdGhleSByb3NlIHVwIGVhcmx5IGluIHRoZSBtb3JuaW5nLCBhbmQgZ2F0IHRoZW0gdXAgaW50byB0aGUgdG9wIG9mIHRoZSBtb3VudGFpbiwgc2F5aW5nLCBMbywgd2UgYmUgaGVyZSwgYW5kIHdpbGwgZ28gdXAgdW50byB0aGUgcGxhY2Ugd2hpY2ggdGhlIExPUkQgaGF0aCBwcm9taXNlZDogZm9yIHdlIGhhdmUgc2lubmVkLgpBbmQgTW9zZXMgc2FpZCwgV2hlcmVmb3JlIG5vdyBkbyB5ZSB0cmFuc2dyZXNzIHRoZSBjb21tYW5kbWVudCBvZiB0aGUgTE9SRD8gYnV0IGl0IHNoYWxsIG5vdCBwcm9zcGVyLgpHbyBub3QgdXAsIGZvciB0aGUgTE9SRCBpcyBub3QgYW1vbmcgeW91OyB0aGF0IHllIGJlIG5vdCBzbWl0dGVuIGJlZm9yZSB5b3VyIGVuZW1pZXMuCkZvciB0aGUgQW1hbGVraXRlcyBhbmQgdGhlIENhbmFhbml0ZXMgYXJlIHRoZXJlIGJlZm9yZSB5b3UsIGFuZCB5ZSBzaGFsbCBmYWxsIGJ5IHRoZSBzd29yZDogYmVjYXVzZSB5ZSBhcmUgdHVybmVkIGF3YXkgZnJvbSB0aGUgTE9SRCwgdGhlcmVmb3JlIHRoZSBMT1JEIHdpbGwgbm90IGJlIHdpdGggeW91LgpCdXQgdGhleSBwcmVzdW1lZCB0byBnbyB1cCB1bnRvIHRoZSBoaWxsIHRvcDogbmV2ZXJ0aGVsZXNzIHRoZSBhcmsgb2YgdGhlIGNvdmVuYW50IG9mIHRoZSBMT1JELCBhbmQgTW9zZXMsIGRlcGFydGVkIG5vdCBvdXQgb2YgdGhlIGNhbXAuClRoZW4gdGhlIEFtYWxla2l0ZXMgY2FtZSBkb3duLCBhbmQgdGhlIENhbmFhbml0ZXMgd2hpY2ggZHdlbHQgaW4gdGhhdCBoaWxsLCBhbmQgc21vdGUgdGhlbSwgYW5kIGRpc2NvbWZpdGVkIHRoZW0sIGV2ZW4gdW50byBIb3JtYWguCkFuZCB0aGUgTE9SRCBzcGFrZSB1bnRvIE1vc2VzLCBzYXlpbmcsClNwZWFrIHVudG8gdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgYW5kIHNheSB1bnRvIHRoZW0sIFdoZW4geWUgYmUgY29tZSBpbnRvIHRoZSBsYW5kIG9mIHlvdXIgaGFiaXRhdGlvbnMsIHdoaWNoIEkgZ2l2ZSB1bnRvIHlvdSwKQW5kIHdpbGwgbWFrZSBhbiBvZmZlcmluZyBieSBmaXJlIHVudG8gdGhlIExPUkQsIGEgYnVybnQgb2ZmZXJpbmcsIG9yIGEgc2FjcmlmaWNlIGluIHBlcmZvcm1pbmcgYSB2b3csIG9yIGluIGEgZnJlZXdpbGwgb2ZmZXJpbmcsIG9yIGluIHlvdXIgc29sZW1uIGZlYXN0cywgdG8gbWFrZSBhIHN3ZWV0IHNhdm91ciB1bnRvIHRoZSBMT1JELCBvZiB0aGUgaGVyZCBvciBvZiB0aGUgZmxvY2s6ClRoZW4gc2hhbGwgaGUgdGhhdCBvZmZlcmV0aCBoaXMgb2ZmZXJpbmcgdW50byB0aGUgTE9SRCBicmluZyBhIG1lYXQgb2ZmZXJpbmcgb2YgYSB0ZW50aCBkZWFsIG9mIGZsb3VyIG1pbmdsZWQgd2l0aCB0aGUgZm91cnRoIHBhcnQgb2YgYW4gaGluIG9mIG9pbC4KQW5kIHRoZSBmb3VydGggcGFydCBvZiBhbiBoaW4gb2Ygd2luZSBmb3IgYSBkcmluayBvZmZlcmluZyBzaGFsdCB0aG91IHByZXBhcmUgd2l0aCB0aGUgYnVybnQgb2ZmZXJpbmcgb3Igc2FjcmlmaWNlLCBmb3Igb25lIGxhbWIuCk9yIGZvciBhIHJhbSwgdGhvdSBzaGFsdCBwcmVwYXJlIGZvciBhIG1lYXQgb2ZmZXJpbmcgdHdvIHRlbnRoIGRlYWxzIG9mIGZsb3VyIG1pbmdsZWQgd2l0aCB0aGUgdGhpcmQgcGFydCBvZiBhbiBoaW4gb2Ygb2lsLgpBbmQgZm9yIGEgZHJpbmsgb2ZmZXJpbmcgdGhvdSBzaGFsdCBvZmZlciB0aGUgdGhpcmQgcGFydCBvZiBhbiBoaW4gb2Ygd2luZSwgZm9yIGEgc3dlZXQgc2F2b3VyIHVudG8gdGhlIExPUkQuCkFuZCB3aGVuIHRob3UgcHJlcGFyZXN0IGEgYnVsbG9jayBmb3IgYSBidXJudCBvZmZlcmluZywgb3IgZm9yIGEgc2FjcmlmaWNlIGluIHBlcmZvcm1pbmcgYSB2b3csIG9yIHBlYWNlIG9mZmVyaW5ncyB1bnRvIHRoZSBMT1JEOgpUaGVuIHNoYWxsIGhlIGJyaW5nIHdpdGggYSBidWxsb2NrIGEgbWVhdCBvZmZlcmluZyBvZiB0aHJlZSB0ZW50aCBkZWFscyBvZiBmbG91ciBtaW5nbGVkIHdpdGggaGFsZiBhbiBoaW4gb2Ygb2lsLgpBbmQgdGhvdSBzaGFsdCBicmluZyBmb3IgYSBkcmluayBvZmZlcmluZyBoYWxmIGFuIGhpbiBvZiB3aW5lLCBmb3IgYW4gb2ZmZXJpbmcgbWFkZSBieSBmaXJlLCBvZiBhIHN3ZWV0IHNhdm91ciB1bnRvIHRoZSBMT1JELgpUaHVzIHNoYWxsIGl0IGJlIGRvbmUgZm9yIG9uZSBidWxsb2NrLCBvciBmb3Igb25lIHJhbSwgb3IgZm9yIGEgbGFtYiwgb3IgYSBraWQuCkFjY29yZGluZyB0byB0aGUgbnVtYmVyIHRoYXQgeWUgc2hhbGwgcHJlcGFyZSwgc28gc2hhbGwgeWUgZG8gdG8gZXZlcnkgb25lIGFjY29yZGluZyB0byB0aGVpciBudW1iZXIuCkFsbCB0aGF0IGFyZSBib3JuIG9mIHRoZSBjb3VudHJ5IHNoYWxsIGRvIHRoZXNlIHRoaW5ncyBhZnRlciB0aGlzIG1hbm5lciwgaW4gb2ZmZXJpbmcgYW4gb2ZmZXJpbmcgbWFkZSBieSBmaXJlLCBvZiBhIHN3ZWV0IHNhdm91ciB1bnRvIHRoZSBMT1JELgpBbmQgaWYgYSBzdHJhbmdlciBzb2pvdXJuIHdpdGggeW91LCBvciB3aG9zb2V2ZXIgYmUgYW1vbmcgeW91IGluIHlvdXIgZ2VuZXJhdGlvbnMsIGFuZCB3aWxsIG9mZmVyIGFuIG9mZmVyaW5nIG1hZGUgYnkgZmlyZSwgb2YgYSBzd2VldCBzYXZvdXIgdW50byB0aGUgTE9SRDsgYXMgeWUgZG8sIHNvIGhlIHNoYWxsIGRvLgpPbmUgb3JkaW5hbmNlIHNoYWxsIGJlIGJvdGggZm9yIHlvdSBvZiB0aGUgY29uZ3JlZ2F0aW9uLCBhbmQgYWxzbyBmb3IgdGhlIHN0cmFuZ2VyIHRoYXQgc29qb3VybmV0aCB3aXRoIHlvdSwgYW4gb3JkaW5hbmNlIGZvciBldmVyIGluIHlvdXIgZ2VuZXJhdGlvbnM6IGFzIHllIGFyZSwgc28gc2hhbGwgdGhlIHN0cmFuZ2VyIGJlIGJlZm9yZSB0aGUgTE9SRC4KT25lIGxhdyBhbmQgb25lIG1hbm5lciBzaGFsbCBiZSBmb3IgeW91LCBhbmQgZm9yIHRoZSBzdHJhbmdlciB0aGF0IHNvam91cm5ldGggd2l0aCB5b3UuCkFuZCB0aGUgTE9SRCBzcGFrZSB1bnRvIE1vc2VzLCBzYXlpbmcsClNwZWFrIHVudG8gdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgYW5kIHNheSB1bnRvIHRoZW0sIFdoZW4geWUgY29tZSBpbnRvIHRoZSBsYW5kIHdoaXRoZXIgSSBicmluZyB5b3UsClRoZW4gaXQgc2hhbGwgYmUsIHRoYXQsIHdoZW4geWUgZWF0IG9mIHRoZSBicmVhZCBvZiB0aGUgbGFuZCwgeWUgc2hhbGwgb2ZmZXIgdXAgYW4gaGVhdmUgb2ZmZXJpbmcgdW50byB0aGUgTE9SRC4KWWUgc2hhbGwgb2ZmZXIgdXAgYSBjYWtlIG9mIHRoZSBmaXJzdCBvZiB5b3VyIGRvdWdoIGZvciBhbiBoZWF2ZSBvZmZlcmluZzogYXMgeWUgZG8gdGhlIGhlYXZlIG9mZmVyaW5nIG9mIHRoZSB0aHJlc2hpbmdmbG9vciwgc28gc2hhbGwgeWUgaGVhdmUgaXQuCk9mIHRoZSBmaXJzdCBvZiB5b3VyIGRvdWdoIHllIHNoYWxsIGdpdmUgdW50byB0aGUgTE9SRCBhbiBoZWF2ZSBvZmZlcmluZyBpbiB5b3VyIGdlbmVyYXRpb25zLgpBbmQgaWYgeWUgaGF2ZSBlcnJlZCwgYW5kIG5vdCBvYnNlcnZlZCBhbGwgdGhlc2UgY29tbWFuZG1lbnRzLCB3aGljaCB0aGUgTE9SRCBoYXRoIHNwb2tlbiB1bnRvIE1vc2VzLApFdmVuIGFsbCB0aGF0IHRoZSBMT1JEIGhhdGggY29tbWFuZGVkIHlvdSBieSB0aGUgaGFuZCBvZiBNb3NlcywgZnJvbSB0aGUgZGF5IHRoYXQgdGhlIExPUkQgY29tbWFuZGVkIE1vc2VzLCBhbmQgaGVuY2Vmb3J3YXJkIGFtb25nIHlvdXIgZ2VuZXJhdGlvbnM7ClRoZW4gaXQgc2hhbGwgYmUsIGlmIG91Z2h0IGJlIGNvbW1pdHRlZCBieSBpZ25vcmFuY2Ugd2l0aG91dCB0aGUga25vd2xlZGdlIG9mIHRoZSBjb25ncmVnYXRpb24sIHRoYXQgYWxsIHRoZSBjb25ncmVnYXRpb24gc2hhbGwgb2ZmZXIgb25lIHlvdW5nIGJ1bGxvY2sgZm9yIGEgYnVybnQgb2ZmZXJpbmcsIGZvciBhIHN3ZWV0IHNhdm91ciB1bnRvIHRoZSBMT1JELCB3aXRoIGhpcyBtZWF0IG9mZmVyaW5nLCBhbmQgaGlzIGRyaW5rIG9mZmVyaW5nLCBhY2NvcmRpbmcgdG8gdGhlIG1hbm5lciwgYW5kIG9uZSBraWQgb2YgdGhlIGdvYXRzIGZvciBhIHNpbiBvZmZlcmluZy4KQW5kIHRoZSBwcmllc3Qgc2hhbGwgbWFrZSBhbiBhdG9uZW1lbnQgZm9yIGFsbCB0aGUgY29uZ3JlZ2F0aW9uIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIGFuZCBpdCBzaGFsbCBiZSBmb3JnaXZlbiB0aGVtOyBmb3IgaXQgaXMgaWdub3JhbmNlOiBhbmQgdGhleSBzaGFsbCBicmluZyB0aGVpciBvZmZlcmluZywgYSBzYWNyaWZpY2UgbWFkZSBieSBmaXJlIHVudG8gdGhlIExPUkQsIGFuZCB0aGVpciBzaW4gb2ZmZXJpbmcgYmVmb3JlIHRoZSBMT1JELCBmb3IgdGhlaXIgaWdub3JhbmNlOgpBbmQgaXQgc2hhbGwgYmUgZm9yZ2l2ZW4gYWxsIHRoZSBjb25ncmVnYXRpb24gb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgYW5kIHRoZSBzdHJhbmdlciB0aGF0IHNvam91cm5ldGggYW1vbmcgdGhlbTsgc2VlaW5nIGFsbCB0aGUgcGVvcGxlIHdlcmUgaW4gaWdub3JhbmNlLgpBbmQgaWYgYW55IHNvdWwgc2luIHRocm91Z2ggaWdub3JhbmNlLCB0aGVuIGhlIHNoYWxsIGJyaW5nIGEgc2hlIGdvYXQgb2YgdGhlIGZpcnN0IHllYXIgZm9yIGEgc2luIG9mZmVyaW5nLgpBbmQgdGhlIHByaWVzdCBzaGFsbCBtYWtlIGFuIGF0b25lbWVudCBmb3IgdGhlIHNvdWwgdGhhdCBzaW5uZXRoIGlnbm9yYW50bHksIHdoZW4gaGUgc2lubmV0aCBieSBpZ25vcmFuY2UgYmVmb3JlIHRoZSBMT1JELCB0byBtYWtlIGFuIGF0b25lbWVudCBmb3IgaGltOyBhbmQgaXQgc2hhbGwgYmUgZm9yZ2l2ZW4gaGltLgpZZSBzaGFsbCBoYXZlIG9uZSBsYXcgZm9yIGhpbSB0aGF0IHNpbm5ldGggdGhyb3VnaCBpZ25vcmFuY2UsIGJvdGggZm9yIGhpbSB0aGF0IGlzIGJvcm4gYW1vbmcgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgYW5kIGZvciB0aGUgc3RyYW5nZXIgdGhhdCBzb2pvdXJuZXRoIGFtb25nIHRoZW0uCkJ1dCB0aGUgc291bCB0aGF0IGRvZXRoIG91Z2h0IHByZXN1bXB0dW91c2x5LCB3aGV0aGVyIGhlIGJlIGJvcm4gaW4gdGhlIGxhbmQsIG9yIGEgc3RyYW5nZXIsIHRoZSBzYW1lIHJlcHJvYWNoZXRoIHRoZSBMT1JEOyBhbmQgdGhhdCBzb3VsIHNoYWxsIGJlIGN1dCBvZmYgZnJvbSBhbW9uZyBoaXMgcGVvcGxlLgpCZWNhdXNlIGhlIGhhdGggZGVzcGlzZWQgdGhlIHdvcmQgb2YgdGhlIExPUkQsIGFuZCBoYXRoIGJyb2tlbiBoaXMgY29tbWFuZG1lbnQsIHRoYXQgc291bCBzaGFsbCB1dHRlcmx5IGJlIGN1dCBvZmY7IGhpcyBpbmlxdWl0eSBzaGFsbCBiZSB1cG9uIGhpbS4KQW5kIHdoaWxlIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgd2VyZSBpbiB0aGUgd2lsZGVybmVzcywgdGhleSBmb3VuZCBhIG1hbiB0aGF0IGdhdGhlcmVkIHN0aWNrcyB1cG9uIHRoZSBzYWJiYXRoIGRheS4KQW5kIHRoZXkgdGhhdCBmb3VuZCBoaW0gZ2F0aGVyaW5nIHN0aWNrcyBicm91Z2h0IGhpbSB1bnRvIE1vc2VzIGFuZCBBYXJvbiwgYW5kIHVudG8gYWxsIHRoZSBjb25ncmVnYXRpb24uCkFuZCB0aGV5IHB1dCBoaW0gaW4gd2FyZCwgYmVjYXVzZSBpdCB3YXMgbm90IGRlY2xhcmVkIHdoYXQgc2hvdWxkIGJlIGRvbmUgdG8gaGltLgpBbmQgdGhlIExPUkQgc2FpZCB1bnRvIE1vc2VzLCBUaGUgbWFuIHNoYWxsIGJlIHN1cmVseSBwdXQgdG8gZGVhdGg6IGFsbCB0aGUgY29uZ3JlZ2F0aW9uIHNoYWxsIHN0b25lIGhpbSB3aXRoIHN0b25lcyB3aXRob3V0IHRoZSBjYW1wLgpBbmQgYWxsIHRoZSBjb25ncmVnYXRpb24gYnJvdWdodCBoaW0gd2l0aG91dCB0aGUgY2FtcCwgYW5kIHN0b25lZCBoaW0gd2l0aCBzdG9uZXMsIGFuZCBoZSBkaWVkOyBhcyB0aGUgTE9SRCBjb21tYW5kZWQgTW9zZXMuCkFuZCB0aGUgTE9SRCBzcGFrZSB1bnRvIE1vc2VzLCBzYXlpbmcsClNwZWFrIHVudG8gdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgYW5kIGJpZCB0aGVtIHRoYXQgdGhleSBtYWtlIHRoZW0gZnJpbmdlcyBpbiB0aGUgYm9yZGVycyBvZiB0aGVpciBnYXJtZW50cyB0aHJvdWdob3V0IHRoZWlyIGdlbmVyYXRpb25zLCBhbmQgdGhhdCB0aGV5IHB1dCB1cG9uIHRoZSBmcmluZ2Ugb2YgdGhlIGJvcmRlcnMgYSByaWJiYW5kIG9mIGJsdWU6CkFuZCBpdCBzaGFsbCBiZSB1bnRvIHlvdSBmb3IgYSBmcmluZ2UsIHRoYXQgeWUgbWF5IGxvb2sgdXBvbiBpdCwgYW5kIHJlbWVtYmVyIGFsbCB0aGUgY29tbWFuZG1lbnRzIG9mIHRoZSBMT1JELCBhbmQgZG8gdGhlbTsgYW5kIHRoYXQgeWUgc2VlayBub3QgYWZ0ZXIgeW91ciBvd24gaGVhcnQgYW5kIHlvdXIgb3duIGV5ZXMsIGFmdGVyIHdoaWNoIHllIHVzZSB0byBnbyBhIHdob3Jpbmc6ClRoYXQgeWUgbWF5IHJlbWVtYmVyLCBhbmQgZG8gYWxsIG15IGNvbW1hbmRtZW50cywgYW5kIGJlIGhvbHkgdW50byB5b3VyIEdvZC4KSSBhbSB0aGUgTE9SRCB5b3VyIEdvZCwgd2hpY2ggYnJvdWdodCB5b3Ugb3V0IG9mIHRoZSBsYW5kIG9mIEVneXB0LCB0byBiZSB5b3VyIEdvZDogSSBhbSB0aGUgTE9SRCB5b3VyIEdvZC4KTm93IEtvcmFoLCB0aGUgc29uIG9mIEl6aGFyLCB0aGUgc29uIG9mIEtvaGF0aCwgdGhlIHNvbiBvZiBMZXZpLCBhbmQgRGF0aGFuIGFuZCBBYmlyYW0sIHRoZSBzb25zIG9mIEVsaWFiLCBhbmQgT24sIHRoZSBzb24gb2YgUGVsZXRoLCBzb25zIG9mIFJldWJlbiwgdG9vayBtZW46CkFuZCB0aGV5IHJvc2UgdXAgYmVmb3JlIE1vc2VzLCB3aXRoIGNlcnRhaW4gb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgdHdvIGh1bmRyZWQgYW5kIGZpZnR5IHByaW5jZXMgb2YgdGhlIGFzc2VtYmx5LCBmYW1vdXMgaW4gdGhlIGNvbmdyZWdhdGlvbiwgbWVuIG9mIHJlbm93bjoKQW5kIHRoZXkgZ2F0aGVyZWQgdGhlbXNlbHZlcyB0b2dldGhlciBhZ2FpbnN0IE1vc2VzIGFuZCBhZ2FpbnN0IEFhcm9uLCBhbmQgc2FpZCB1bnRvIHRoZW0sIFllIHRha2UgdG9vIG11Y2ggdXBvbiB5b3UsIHNlZWluZyBhbGwgdGhlIGNvbmdyZWdhdGlvbiBhcmUgaG9seSwgZXZlcnkgb25lIG9mIHRoZW0sIGFuZCB0aGUgTE9SRCBpcyBhbW9uZyB0aGVtOiB3aGVyZWZvcmUgdGhlbiBsaWZ0IHllIHVwIHlvdXJzZWx2ZXMgYWJvdmUgdGhlIGNvbmdyZWdhdGlvbiBvZiB0aGUgTE9SRD8KQW5kIHdoZW4gTW9zZXMgaGVhcmQgaXQsIGhlIGZlbGwgdXBvbiBoaXMgZmFjZToKQW5kIGhlIHNwYWtlIHVudG8gS29yYWggYW5kIHVudG8gYWxsIGhpcyBjb21wYW55LCBzYXlpbmcsIEV2ZW4gdG8gbW9ycm93IHRoZSBMT1JEIHdpbGwgc2hldyB3aG8gYXJlIGhpcywgYW5kIHdobyBpcyBob2x5OyBhbmQgd2lsbCBjYXVzZSBoaW0gdG8gY29tZSBuZWFyIHVudG8gaGltOiBldmVuIGhpbSB3aG9tIGhlIGhhdGggY2hvc2VuIHdpbGwgaGUgY2F1c2UgdG8gY29tZSBuZWFyIHVudG8gaGltLgpUaGlzIGRvOyBUYWtlIHlvdSBjZW5zZXJzLCBLb3JhaCwgYW5kIGFsbCBoaXMgY29tcGFueTsKQW5kIHB1dCBmaXJlIHRoZXJlaW4sIGFuZCBwdXQgaW5jZW5zZSBpbiB0aGVtIGJlZm9yZSB0aGUgTE9SRCB0byBtb3Jyb3c6IGFuZCBpdCBzaGFsbCBiZSB0aGF0IHRoZSBtYW4gd2hvbSB0aGUgTE9SRCBkb3RoIGNob29zZSwgaGUgc2hhbGwgYmUgaG9seTogeWUgdGFrZSB0b28gbXVjaCB1cG9uIHlvdSwgeWUgc29ucyBvZiBMZXZpLgpBbmQgTW9zZXMgc2FpZCB1bnRvIEtvcmFoLCBIZWFyLCBJIHByYXkgeW91LCB5ZSBzb25zIG9mIExldmk6ClNlZW1ldGggaXQgYnV0IGEgc21hbGwgdGhpbmcgdW50byB5b3UsIHRoYXQgdGhlIEdvZCBvZiBJc3JhZWwgaGF0aCBzZXBhcmF0ZWQgeW91IGZyb20gdGhlIGNvbmdyZWdhdGlvbiBvZiBJc3JhZWwsIHRvIGJyaW5nIHlvdSBuZWFyIHRvIGhpbXNlbGYgdG8gZG8gdGhlIHNlcnZpY2Ugb2YgdGhlIHRhYmVybmFjbGUgb2YgdGhlIExPUkQsIGFuZCB0byBzdGFuZCBiZWZvcmUgdGhlIGNvbmdyZWdhdGlvbiB0byBtaW5pc3RlciB1bnRvIHRoZW0/CkFuZCBoZSBoYXRoIGJyb3VnaHQgdGhlZSBuZWFyIHRvIGhpbSwgYW5kIGFsbCB0aHkgYnJldGhyZW4gdGhlIHNvbnMgb2YgTGV2aSB3aXRoIHRoZWU6IGFuZCBzZWVrIHllIHRoZSBwcmllc3Rob29kIGFsc28/CkZvciB3aGljaCBjYXVzZSBib3RoIHRob3UgYW5kIGFsbCB0aHkgY29tcGFueSBhcmUgZ2F0aGVyZWQgdG9nZXRoZXIgYWdhaW5zdCB0aGUgTE9SRDogYW5kIHdoYXQgaXMgQWFyb24sIHRoYXQgeWUgbXVybXVyIGFnYWluc3QgaGltPwpBbmQgTW9zZXMgc2VudCB0byBjYWxsIERhdGhhbiBhbmQgQWJpcmFtLCB0aGUgc29ucyBvZiBFbGlhYjogd2hpY2ggc2FpZCwgV2Ugd2lsbCBub3QgY29tZSB1cDoKSXMgaXQgYSBzbWFsbCB0aGluZyB0aGF0IHRob3UgaGFzdCBicm91Z2h0IHVzIHVwIG91dCBvZiBhIGxhbmQgdGhhdCBmbG93ZXRoIHdpdGggbWlsayBhbmQgaG9uZXksIHRvIGtpbGwgdXMgaW4gdGhlIHdpbGRlcm5lc3MsIGV4Y2VwdCB0aG91IG1ha2UgdGh5c2VsZiBhbHRvZ2V0aGVyIGEgcHJpbmNlIG92ZXIgdXM/Ck1vcmVvdmVyIHRob3UgaGFzdCBub3QgYnJvdWdodCB1cyBpbnRvIGEgbGFuZCB0aGF0IGZsb3dldGggd2l0aCBtaWxrIGFuZCBob25leSwgb3IgZ2l2ZW4gdXMgaW5oZXJpdGFuY2Ugb2YgZmllbGRzIGFuZCB2aW5leWFyZHM6IHdpbHQgdGhvdSBwdXQgb3V0IHRoZSBleWVzIG9mIHRoZXNlIG1lbj8gd2Ugd2lsbCBub3QgY29tZSB1cC4KQW5kIE1vc2VzIHdhcyB2ZXJ5IHdyb3RoLCBhbmQgc2FpZCB1bnRvIHRoZSBMT1JELCBSZXNwZWN0IG5vdCB0aG91IHRoZWlyIG9mZmVyaW5nOiBJIGhhdmUgbm90IHRha2VuIG9uZSBhc3MgZnJvbSB0aGVtLCBuZWl0aGVyIGhhdmUgSSBodXJ0IG9uZSBvZiB0aGVtLgpBbmQgTW9zZXMgc2FpZCB1bnRvIEtvcmFoLCBCZSB0aG91IGFuZCBhbGwgdGh5IGNvbXBhbnkgYmVmb3JlIHRoZSBMT1JELCB0aG91LCBhbmQgdGhleSwgYW5kIEFhcm9uLCB0byBtb3Jyb3c6CkFuZCB0YWtlIGV2ZXJ5IG1hbiBoaXMgY2Vuc2VyLCBhbmQgcHV0IGluY2Vuc2UgaW4gdGhlbSwgYW5kIGJyaW5nIHllIGJlZm9yZSB0aGUgTE9SRCBldmVyeSBtYW4gaGlzIGNlbnNlciwgdHdvIGh1bmRyZWQgYW5kIGZpZnR5IGNlbnNlcnM7IHRob3UgYWxzbywgYW5kIEFhcm9uLCBlYWNoIG9mIHlvdSBoaXMgY2Vuc2VyLgpBbmQgdGhleSB0b29rIGV2ZXJ5IG1hbiBoaXMgY2Vuc2VyLCBhbmQgcHV0IGZpcmUgaW4gdGhlbSwgYW5kIGxhaWQgaW5jZW5zZSB0aGVyZW9uLCBhbmQgc3Rvb2QgaW4gdGhlIGRvb3Igb2YgdGhlIHRhYmVybmFjbGUgb2YgdGhlIGNvbmdyZWdhdGlvbiB3aXRoIE1vc2VzIGFuZCBBYXJvbi4KQW5kIEtvcmFoIGdhdGhlcmVkIGFsbCB0aGUgY29uZ3JlZ2F0aW9uIGFnYWluc3QgdGhlbSB1bnRvIHRoZSBkb29yIG9mIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBjb25ncmVnYXRpb246IGFuZCB0aGUgZ2xvcnkgb2YgdGhlIExPUkQgYXBwZWFyZWQgdW50byBhbGwgdGhlIGNvbmdyZWdhdGlvbi4KQW5kIHRoZSBMT1JEIHNwYWtlIHVudG8gTW9zZXMgYW5kIHVudG8gQWFyb24sIHNheWluZywKU2VwYXJhdGUgeW91cnNlbHZlcyBmcm9tIGFtb25nIHRoaXMgY29uZ3JlZ2F0aW9uLCB0aGF0IEkgbWF5IGNvbnN1bWUgdGhlbSBpbiBhIG1vbWVudC4KQW5kIHRoZXkgZmVsbCB1cG9uIHRoZWlyIGZhY2VzLCBhbmQgc2FpZCwgTyBHb2QsIHRoZSBHb2Qgb2YgdGhlIHNwaXJpdHMgb2YgYWxsIGZsZXNoLCBzaGFsbCBvbmUgbWFuIHNpbiwgYW5kIHdpbHQgdGhvdSBiZSB3cm90aCB3aXRoIGFsbCB0aGUgY29uZ3JlZ2F0aW9uPwpBbmQgdGhlIExPUkQgc3Bha2UgdW50byBNb3Nlcywgc2F5aW5nLApTcGVhayB1bnRvIHRoZSBjb25ncmVnYXRpb24sIHNheWluZywgR2V0IHlvdSB1cCBmcm9tIGFib3V0IHRoZSB0YWJlcm5hY2xlIG9mIEtvcmFoLCBEYXRoYW4sIGFuZCBBYmlyYW0uCkFuZCBNb3NlcyByb3NlIHVwIGFuZCB3ZW50IHVudG8gRGF0aGFuIGFuZCBBYmlyYW07IGFuZCB0aGUgZWxkZXJzIG9mIElzcmFlbCBmb2xsb3dlZCBoaW0uCkFuZCBoZSBzcGFrZSB1bnRvIHRoZSBjb25ncmVnYXRpb24sIHNheWluZywgRGVwYXJ0LCBJIHByYXkgeW91LCBmcm9tIHRoZSB0ZW50cyBvZiB0aGVzZSB3aWNrZWQgbWVuLCBhbmQgdG91Y2ggbm90aGluZyBvZiB0aGVpcidzLCBsZXN0IHllIGJlIGNvbnN1bWVkIGluIGFsbCB0aGVpciBzaW5zLgpTbyB0aGV5IGdhdCB1cCBmcm9tIHRoZSB0YWJlcm5hY2xlIG9mIEtvcmFoLCBEYXRoYW4sIGFuZCBBYmlyYW0sIG9uIGV2ZXJ5IHNpZGU6IGFuZCBEYXRoYW4gYW5kIEFiaXJhbSBjYW1lIG91dCwgYW5kIHN0b29kIGluIHRoZSBkb29yIG9mIHRoZWlyIHRlbnRzLCBhbmQgdGhlaXIgd2l2ZXMsIGFuZCB0aGVpciBzb25zLCBhbmQgdGhlaXIgbGl0dGxlIGNoaWxkcmVuLgpBbmQgTW9zZXMgc2FpZCwgSGVyZWJ5IHllIHNoYWxsIGtub3cgdGhhdCB0aGUgTE9SRCBoYXRoIHNlbnQgbWUgdG8gZG8gYWxsIHRoZXNlIHdvcmtzOyBmb3IgSSBoYXZlIG5vdCBkb25lIHRoZW0gb2YgbWluZSBvd24gbWluZC4KSWYgdGhlc2UgbWVuIGRpZSB0aGUgY29tbW9uIGRlYXRoIG9mIGFsbCBtZW4sIG9yIGlmIHRoZXkgYmUgdmlzaXRlZCBhZnRlciB0aGUgdmlzaXRhdGlvbiBvZiBhbGwgbWVuOyB0aGVuIHRoZSBMT1JEIGhhdGggbm90IHNlbnQgbWUuCkJ1dCBpZiB0aGUgTE9SRCBtYWtlIGEgbmV3IHRoaW5nLCBhbmQgdGhlIGVhcnRoIG9wZW4gaGVyIG1vdXRoLCBhbmQgc3dhbGxvdyB0aGVtIHVwLCB3aXRoIGFsbCB0aGF0IGFwcGVydGFpbiB1bnRvIHRoZW0sIGFuZCB0aGV5IGdvIGRvd24gcXVpY2sgaW50byB0aGUgcGl0OyB0aGVuIHllIHNoYWxsIHVuZGVyc3RhbmQgdGhhdCB0aGVzZSBtZW4gaGF2ZSBwcm92b2tlZCB0aGUgTE9SRC4KQW5kIGl0IGNhbWUgdG8gcGFzcywgYXMgaGUgaGFkIG1hZGUgYW4gZW5kIG9mIHNwZWFraW5nIGFsbCB0aGVzZSB3b3JkcywgdGhhdCB0aGUgZ3JvdW5kIGNsYXZlIGFzdW5kZXIgdGhhdCB3YXMgdW5kZXIgdGhlbToKQW5kIHRoZSBlYXJ0aCBvcGVuZWQgaGVyIG1vdXRoLCBhbmQgc3dhbGxvd2VkIHRoZW0gdXAsIGFuZCB0aGVpciBob3VzZXMsIGFuZCBhbGwgdGhlIG1lbiB0aGF0IGFwcGVydGFpbmVkIHVudG8gS29yYWgsIGFuZCBhbGwgdGhlaXIgZ29vZHMuClRoZXksIGFuZCBhbGwgdGhhdCBhcHBlcnRhaW5lZCB0byB0aGVtLCB3ZW50IGRvd24gYWxpdmUgaW50byB0aGUgcGl0LCBhbmQgdGhlIGVhcnRoIGNsb3NlZCB1cG9uIHRoZW06IGFuZCB0aGV5IHBlcmlzaGVkIGZyb20gYW1vbmcgdGhlIGNvbmdyZWdhdGlvbi4KQW5kIGFsbCBJc3JhZWwgdGhhdCB3ZXJlIHJvdW5kIGFib3V0IHRoZW0gZmxlZCBhdCB0aGUgY3J5IG9mIHRoZW06IGZvciB0aGV5IHNhaWQsIExlc3QgdGhlIGVhcnRoIHN3YWxsb3cgdXMgdXAgYWxzby4KQW5kIHRoZXJlIGNhbWUgb3V0IGEgZmlyZSBmcm9tIHRoZSBMT1JELCBhbmQgY29uc3VtZWQgdGhlIHR3byBodW5kcmVkIGFuZCBmaWZ0eSBtZW4gdGhhdCBvZmZlcmVkIGluY2Vuc2UuCkFuZCB0aGUgTE9SRCBzcGFrZSB1bnRvIE1vc2VzLCBzYXlpbmcsClNwZWFrIHVudG8gRWxlYXphciB0aGUgc29uIG9mIEFhcm9uIHRoZSBwcmllc3QsIHRoYXQgaGUgdGFrZSB1cCB0aGUgY2Vuc2VycyBvdXQgb2YgdGhlIGJ1cm5pbmcsIGFuZCBzY2F0dGVyIHRob3UgdGhlIGZpcmUgeW9uZGVyOyBmb3IgdGhleSBhcmUgaGFsbG93ZWQuClRoZSBjZW5zZXJzIG9mIHRoZXNlIHNpbm5lcnMgYWdhaW5zdCB0aGVpciBvd24gc291bHMsIGxldCB0aGVtIG1ha2UgdGhlbSBicm9hZCBwbGF0ZXMgZm9yIGEgY292ZXJpbmcgb2YgdGhlIGFsdGFyOiBmb3IgdGhleSBvZmZlcmVkIHRoZW0gYmVmb3JlIHRoZSBMT1JELCB0aGVyZWZvcmUgdGhleSBhcmUgaGFsbG93ZWQ6IGFuZCB0aGV5IHNoYWxsIGJlIGEgc2lnbiB1bnRvIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwuCkFuZCBFbGVhemFyIHRoZSBwcmllc3QgdG9vayB0aGUgYnJhc2VuIGNlbnNlcnMsIHdoZXJld2l0aCB0aGV5IHRoYXQgd2VyZSBidXJudCBoYWQgb2ZmZXJlZDsgYW5kIHRoZXkgd2VyZSBtYWRlIGJyb2FkIHBsYXRlcyBmb3IgYSBjb3ZlcmluZyBvZiB0aGUgYWx0YXI6ClRvIGJlIGEgbWVtb3JpYWwgdW50byB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLCB0aGF0IG5vIHN0cmFuZ2VyLCB3aGljaCBpcyBub3Qgb2YgdGhlIHNlZWQgb2YgQWFyb24sIGNvbWUgbmVhciB0byBvZmZlciBpbmNlbnNlIGJlZm9yZSB0aGUgTE9SRDsgdGhhdCBoZSBiZSBub3QgYXMgS29yYWgsIGFuZCBhcyBoaXMgY29tcGFueTogYXMgdGhlIExPUkQgc2FpZCB0byBoaW0gYnkgdGhlIGhhbmQgb2YgTW9zZXMuCkJ1dCBvbiB0aGUgbW9ycm93IGFsbCB0aGUgY29uZ3JlZ2F0aW9uIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgbXVybXVyZWQgYWdhaW5zdCBNb3NlcyBhbmQgYWdhaW5zdCBBYXJvbiwgc2F5aW5nLCBZZSBoYXZlIGtpbGxlZCB0aGUgcGVvcGxlIG9mIHRoZSBMT1JELgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIHRoZSBjb25ncmVnYXRpb24gd2FzIGdhdGhlcmVkIGFnYWluc3QgTW9zZXMgYW5kIGFnYWluc3QgQWFyb24sIHRoYXQgdGhleSBsb29rZWQgdG93YXJkIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBjb25ncmVnYXRpb246IGFuZCwgYmVob2xkLCB0aGUgY2xvdWQgY292ZXJlZCBpdCwgYW5kIHRoZSBnbG9yeSBvZiB0aGUgTE9SRCBhcHBlYXJlZC4KQW5kIE1vc2VzIGFuZCBBYXJvbiBjYW1lIGJlZm9yZSB0aGUgdGFiZXJuYWNsZSBvZiB0aGUgY29uZ3JlZ2F0aW9uLgpBbmQgdGhlIExPUkQgc3Bha2UgdW50byBNb3Nlcywgc2F5aW5nLApHZXQgeW91IHVwIGZyb20gYW1vbmcgdGhpcyBjb25ncmVnYXRpb24sIHRoYXQgSSBtYXkgY29uc3VtZSB0aGVtIGFzIGluIGEgbW9tZW50LiBBbmQgdGhleSBmZWxsIHVwb24gdGhlaXIgZmFjZXMuCkFuZCBNb3NlcyBzYWlkIHVudG8gQWFyb24sIFRha2UgYSBjZW5zZXIsIGFuZCBwdXQgZmlyZSB0aGVyZWluIGZyb20gb2ZmIHRoZSBhbHRhciwgYW5kIHB1dCBvbiBpbmNlbnNlLCBhbmQgZ28gcXVpY2tseSB1bnRvIHRoZSBjb25ncmVnYXRpb24sIGFuZCBtYWtlIGFuIGF0b25lbWVudCBmb3IgdGhlbTogZm9yIHRoZXJlIGlzIHdyYXRoIGdvbmUgb3V0IGZyb20gdGhlIExPUkQ7IHRoZSBwbGFndWUgaXMgYmVndW4uCkFuZCBBYXJvbiB0b29rIGFzIE1vc2VzIGNvbW1hbmRlZCwgYW5kIHJhbiBpbnRvIHRoZSBtaWRzdCBvZiB0aGUgY29uZ3JlZ2F0aW9uOyBhbmQsIGJlaG9sZCwgdGhlIHBsYWd1ZSB3YXMgYmVndW4gYW1vbmcgdGhlIHBlb3BsZTogYW5kIGhlIHB1dCBvbiBpbmNlbnNlLCBhbmQgbWFkZSBhbiBhdG9uZW1lbnQgZm9yIHRoZSBwZW9wbGUuCkFuZCBoZSBzdG9vZCBiZXR3ZWVuIHRoZSBkZWFkIGFuZCB0aGUgbGl2aW5nOyBhbmQgdGhlIHBsYWd1ZSB3YXMgc3RheWVkLgpOb3cgdGhleSB0aGF0IGRpZWQgaW4gdGhlIHBsYWd1ZSB3ZXJlIGZvdXJ0ZWVuIHRob3VzYW5kIGFuZCBzZXZlbiBodW5kcmVkLCBiZXNpZGUgdGhlbSB0aGF0IGRpZWQgYWJvdXQgdGhlIG1hdHRlciBvZiBLb3JhaC4KQW5kIEFhcm9uIHJldHVybmVkIHVudG8gTW9zZXMgdW50byB0aGUgZG9vciBvZiB0aGUgdGFiZXJuYWNsZSBvZiB0aGUgY29uZ3JlZ2F0aW9uOiBhbmQgdGhlIHBsYWd1ZSB3YXMgc3RheWVkLgpBbmQgdGhlIExPUkQgc3Bha2UgdW50byBNb3Nlcywgc2F5aW5nLApTcGVhayB1bnRvIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIGFuZCB0YWtlIG9mIGV2ZXJ5IG9uZSBvZiB0aGVtIGEgcm9kIGFjY29yZGluZyB0byB0aGUgaG91c2Ugb2YgdGhlaXIgZmF0aGVycywgb2YgYWxsIHRoZWlyIHByaW5jZXMgYWNjb3JkaW5nIHRvIHRoZSBob3VzZSBvZiB0aGVpciBmYXRoZXJzIHR3ZWx2ZSByb2RzOiB3cml0ZSB0aG91IGV2ZXJ5IG1hbidzIG5hbWUgdXBvbiBoaXMgcm9kLgpBbmQgdGhvdSBzaGFsdCB3cml0ZSBBYXJvbidzIG5hbWUgdXBvbiB0aGUgcm9kIG9mIExldmk6IGZvciBvbmUgcm9kIHNoYWxsIGJlIGZvciB0aGUgaGVhZCBvZiB0aGUgaG91c2Ugb2YgdGhlaXIgZmF0aGVycy4KQW5kIHRob3Ugc2hhbHQgbGF5IHRoZW0gdXAgaW4gdGhlIHRhYmVybmFjbGUgb2YgdGhlIGNvbmdyZWdhdGlvbiBiZWZvcmUgdGhlIHRlc3RpbW9ueSwgd2hlcmUgSSB3aWxsIG1lZXQgd2l0aCB5b3UuCkFuZCBpdCBzaGFsbCBjb21lIHRvIHBhc3MsIHRoYXQgdGhlIG1hbidzIHJvZCwgd2hvbSBJIHNoYWxsIGNob29zZSwgc2hhbGwgYmxvc3NvbTogYW5kIEkgd2lsbCBtYWtlIHRvIGNlYXNlIGZyb20gbWUgdGhlIG11cm11cmluZ3Mgb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgd2hlcmVieSB0aGV5IG11cm11ciBhZ2FpbnN0IHlvdS4KQW5kIE1vc2VzIHNwYWtlIHVudG8gdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgYW5kIGV2ZXJ5IG9uZSBvZiB0aGVpciBwcmluY2VzIGdhdmUgaGltIGEgcm9kIGFwaWVjZSwgZm9yIGVhY2ggcHJpbmNlIG9uZSwgYWNjb3JkaW5nIHRvIHRoZWlyIGZhdGhlcnMnIGhvdXNlcywgZXZlbiB0d2VsdmUgcm9kczogYW5kIHRoZSByb2Qgb2YgQWFyb24gd2FzIGFtb25nIHRoZWlyIHJvZHMuCkFuZCBNb3NlcyBsYWlkIHVwIHRoZSByb2RzIGJlZm9yZSB0aGUgTE9SRCBpbiB0aGUgdGFiZXJuYWNsZSBvZiB3aXRuZXNzLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB0aGF0IG9uIHRoZSBtb3Jyb3cgTW9zZXMgd2VudCBpbnRvIHRoZSB0YWJlcm5hY2xlIG9mIHdpdG5lc3M7IGFuZCwgYmVob2xkLCB0aGUgcm9kIG9mIEFhcm9uIGZvciB0aGUgaG91c2Ugb2YgTGV2aSB3YXMgYnVkZGVkLCBhbmQgYnJvdWdodCBmb3J0aCBidWRzLCBhbmQgYmxvb21lZCBibG9zc29tcywgYW5kIHlpZWxkZWQgYWxtb25kcy4KQW5kIE1vc2VzIGJyb3VnaHQgb3V0IGFsbCB0aGUgcm9kcyBmcm9tIGJlZm9yZSB0aGUgTE9SRCB1bnRvIGFsbCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsOiBhbmQgdGhleSBsb29rZWQsIGFuZCB0b29rIGV2ZXJ5IG1hbiBoaXMgcm9kLgpBbmQgdGhlIExPUkQgc2FpZCB1bnRvIE1vc2VzLCBCcmluZyBBYXJvbidzIHJvZCBhZ2FpbiBiZWZvcmUgdGhlIHRlc3RpbW9ueSwgdG8gYmUga2VwdCBmb3IgYSB0b2tlbiBhZ2FpbnN0IHRoZSByZWJlbHM7IGFuZCB0aG91IHNoYWx0IHF1aXRlIHRha2UgYXdheSB0aGVpciBtdXJtdXJpbmdzIGZyb20gbWUsIHRoYXQgdGhleSBkaWUgbm90LgpBbmQgTW9zZXMgZGlkIHNvOiBhcyB0aGUgTE9SRCBjb21tYW5kZWQgaGltLCBzbyBkaWQgaGUuCkFuZCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIHNwYWtlIHVudG8gTW9zZXMsIHNheWluZywgQmVob2xkLCB3ZSBkaWUsIHdlIHBlcmlzaCwgd2UgYWxsIHBlcmlzaC4KV2hvc29ldmVyIGNvbWV0aCBhbnkgdGhpbmcgbmVhciB1bnRvIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBMT1JEIHNoYWxsIGRpZTogc2hhbGwgd2UgYmUgY29uc3VtZWQgd2l0aCBkeWluZz8KQW5kIHRoZSBMT1JEIHNhaWQgdW50byBBYXJvbiwgVGhvdSBhbmQgdGh5IHNvbnMgYW5kIHRoeSBmYXRoZXIncyBob3VzZSB3aXRoIHRoZWUgc2hhbGwgYmVhciB0aGUgaW5pcXVpdHkgb2YgdGhlIHNhbmN0dWFyeTogYW5kIHRob3UgYW5kIHRoeSBzb25zIHdpdGggdGhlZSBzaGFsbCBiZWFyIHRoZSBpbmlxdWl0eSBvZiB5b3VyIHByaWVzdGhvb2QuCkFuZCB0aHkgYnJldGhyZW4gYWxzbyBvZiB0aGUgdHJpYmUgb2YgTGV2aSwgdGhlIHRyaWJlIG9mIHRoeSBmYXRoZXIsIGJyaW5nIHRob3Ugd2l0aCB0aGVlLCB0aGF0IHRoZXkgbWF5IGJlIGpvaW5lZCB1bnRvIHRoZWUsIGFuZCBtaW5pc3RlciB1bnRvIHRoZWU6IGJ1dCB0aG91IGFuZCB0aHkgc29ucyB3aXRoIHRoZWUgc2hhbGwgbWluaXN0ZXIgYmVmb3JlIHRoZSB0YWJlcm5hY2xlIG9mIHdpdG5lc3MuCkFuZCB0aGV5IHNoYWxsIGtlZXAgdGh5IGNoYXJnZSwgYW5kIHRoZSBjaGFyZ2Ugb2YgYWxsIHRoZSB0YWJlcm5hY2xlOiBvbmx5IHRoZXkgc2hhbGwgbm90IGNvbWUgbmlnaCB0aGUgdmVzc2VscyBvZiB0aGUgc2FuY3R1YXJ5IGFuZCB0aGUgYWx0YXIsIHRoYXQgbmVpdGhlciB0aGV5LCBub3IgeWUgYWxzbywgZGllLgpBbmQgdGhleSBzaGFsbCBiZSBqb2luZWQgdW50byB0aGVlLCBhbmQga2VlcCB0aGUgY2hhcmdlIG9mIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBjb25ncmVnYXRpb24sIGZvciBhbGwgdGhlIHNlcnZpY2Ugb2YgdGhlIHRhYmVybmFjbGU6IGFuZCBhIHN0cmFuZ2VyIHNoYWxsIG5vdCBjb21lIG5pZ2ggdW50byB5b3UuCkFuZCB5ZSBzaGFsbCBrZWVwIHRoZSBjaGFyZ2Ugb2YgdGhlIHNhbmN0dWFyeSwgYW5kIHRoZSBjaGFyZ2Ugb2YgdGhlIGFsdGFyOiB0aGF0IHRoZXJlIGJlIG5vIHdyYXRoIGFueSBtb3JlIHVwb24gdGhlIGNoaWxkcmVuIG9mIElzcmFlbC4KQW5kIEksIGJlaG9sZCwgSSBoYXZlIHRha2VuIHlvdXIgYnJldGhyZW4gdGhlIExldml0ZXMgZnJvbSBhbW9uZyB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsOiB0byB5b3UgdGhleSBhcmUgZ2l2ZW4gYXMgYSBnaWZ0IGZvciB0aGUgTE9SRCwgdG8gZG8gdGhlIHNlcnZpY2Ugb2YgdGhlIHRhYmVybmFjbGUgb2YgdGhlIGNvbmdyZWdhdGlvbi4KVGhlcmVmb3JlIHRob3UgYW5kIHRoeSBzb25zIHdpdGggdGhlZSBzaGFsbCBrZWVwIHlvdXIgcHJpZXN0J3Mgb2ZmaWNlIGZvciBldmVyeXRoaW5nIG9mIHRoZSBhbHRhciwgYW5kIHdpdGhpbiB0aGUgdmFpbDsgYW5kIHllIHNoYWxsIHNlcnZlOiBJIGhhdmUgZ2l2ZW4geW91ciBwcmllc3QncyBvZmZpY2UgdW50byB5b3UgYXMgYSBzZXJ2aWNlIG9mIGdpZnQ6IGFuZCB0aGUgc3RyYW5nZXIgdGhhdCBjb21ldGggbmlnaCBzaGFsbCBiZSBwdXQgdG8gZGVhdGguCkFuZCB0aGUgTE9SRCBzcGFrZSB1bnRvIEFhcm9uLCBCZWhvbGQsIEkgYWxzbyBoYXZlIGdpdmVuIHRoZWUgdGhlIGNoYXJnZSBvZiBtaW5lIGhlYXZlIG9mZmVyaW5ncyBvZiBhbGwgdGhlIGhhbGxvd2VkIHRoaW5ncyBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsOyB1bnRvIHRoZWUgaGF2ZSBJIGdpdmVuIHRoZW0gYnkgcmVhc29uIG9mIHRoZSBhbm9pbnRpbmcsIGFuZCB0byB0aHkgc29ucywgYnkgYW4gb3JkaW5hbmNlIGZvciBldmVyLgpUaGlzIHNoYWxsIGJlIHRoaW5lIG9mIHRoZSBtb3N0IGhvbHkgdGhpbmdzLCByZXNlcnZlZCBmcm9tIHRoZSBmaXJlOiBldmVyeSBvYmxhdGlvbiBvZiB0aGVpcnMsIGV2ZXJ5IG1lYXQgb2ZmZXJpbmcgb2YgdGhlaXJzLCBhbmQgZXZlcnkgc2luIG9mZmVyaW5nIG9mIHRoZWlycywgYW5kIGV2ZXJ5IHRyZXNwYXNzIG9mZmVyaW5nIG9mIHRoZWlycyB3aGljaCB0aGV5IHNoYWxsIHJlbmRlciB1bnRvIG1lLCBzaGFsbCBiZSBtb3N0IGhvbHkgZm9yIHRoZWUgYW5kIGZvciB0aHkgc29ucy4KSW4gdGhlIG1vc3QgaG9seSBwbGFjZSBzaGFsdCB0aG91IGVhdCBpdDsgZXZlcnkgbWFsZSBzaGFsbCBlYXQgaXQ6IGl0IHNoYWxsIGJlIGhvbHkgdW50byB0aGVlLgpBbmQgdGhpcyBpcyB0aGluZTsgdGhlIGhlYXZlIG9mZmVyaW5nIG9mIHRoZWlyIGdpZnQsIHdpdGggYWxsIHRoZSB3YXZlIG9mZmVyaW5ncyBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsOiBJIGhhdmUgZ2l2ZW4gdGhlbSB1bnRvIHRoZWUsIGFuZCB0byB0aHkgc29ucyBhbmQgdG8gdGh5IGRhdWdodGVycyB3aXRoIHRoZWUsIGJ5IGEgc3RhdHV0ZSBmb3IgZXZlcjogZXZlcnkgb25lIHRoYXQgaXMgY2xlYW4gaW4gdGh5IGhvdXNlIHNoYWxsIGVhdCBvZiBpdC4KQWxsIHRoZSBiZXN0IG9mIHRoZSBvaWwsIGFuZCBhbGwgdGhlIGJlc3Qgb2YgdGhlIHdpbmUsIGFuZCBvZiB0aGUgd2hlYXQsIHRoZSBmaXJzdGZydWl0cyBvZiB0aGVtIHdoaWNoIHRoZXkgc2hhbGwgb2ZmZXIgdW50byB0aGUgTE9SRCwgdGhlbSBoYXZlIEkgZ2l2ZW4gdGhlZS4KQW5kIHdoYXRzb2V2ZXIgaXMgZmlyc3QgcmlwZSBpbiB0aGUgbGFuZCwgd2hpY2ggdGhleSBzaGFsbCBicmluZyB1bnRvIHRoZSBMT1JELCBzaGFsbCBiZSB0aGluZTsgZXZlcnkgb25lIHRoYXQgaXMgY2xlYW4gaW4gdGhpbmUgaG91c2Ugc2hhbGwgZWF0IG9mIGl0LgpFdmVyeSB0aGluZyBkZXZvdGVkIGluIElzcmFlbCBzaGFsbCBiZSB0aGluZS4KRXZlcnkgdGhpbmcgdGhhdCBvcGVuZXRoIHRoZSBtYXRyaXggaW4gYWxsIGZsZXNoLCB3aGljaCB0aGV5IGJyaW5nIHVudG8gdGhlIExPUkQsIHdoZXRoZXIgaXQgYmUgb2YgbWVuIG9yIGJlYXN0cywgc2hhbGwgYmUgdGhpbmU6IG5ldmVydGhlbGVzcyB0aGUgZmlyc3Rib3JuIG9mIG1hbiBzaGFsdCB0aG91IHN1cmVseSByZWRlZW0sIGFuZCB0aGUgZmlyc3RsaW5nIG9mIHVuY2xlYW4gYmVhc3RzIHNoYWx0IHRob3UgcmVkZWVtLgpBbmQgdGhvc2UgdGhhdCBhcmUgdG8gYmUgcmVkZWVtZWQgZnJvbSBhIG1vbnRoIG9sZCBzaGFsdCB0aG91IHJlZGVlbSwgYWNjb3JkaW5nIHRvIHRoaW5lIGVzdGltYXRpb24sIGZvciB0aGUgbW9uZXkgb2YgZml2ZSBzaGVrZWxzLCBhZnRlciB0aGUgc2hla2VsIG9mIHRoZSBzYW5jdHVhcnksIHdoaWNoIGlzIHR3ZW50eSBnZXJhaHMuCkJ1dCB0aGUgZmlyc3RsaW5nIG9mIGEgY293LCBvciB0aGUgZmlyc3RsaW5nIG9mIGEgc2hlZXAsIG9yIHRoZSBmaXJzdGxpbmcgb2YgYSBnb2F0LCB0aG91IHNoYWx0IG5vdCByZWRlZW07IHRoZXkgYXJlIGhvbHk6IHRob3Ugc2hhbHQgc3ByaW5rbGUgdGhlaXIgYmxvb2QgdXBvbiB0aGUgYWx0YXIsIGFuZCBzaGFsdCBidXJuIHRoZWlyIGZhdCBmb3IgYW4gb2ZmZXJpbmcgbWFkZSBieSBmaXJlLCBmb3IgYSBzd2VldCBzYXZvdXIgdW50byB0aGUgTE9SRC4KQW5kIHRoZSBmbGVzaCBvZiB0aGVtIHNoYWxsIGJlIHRoaW5lLCBhcyB0aGUgd2F2ZSBicmVhc3QgYW5kIGFzIHRoZSByaWdodCBzaG91bGRlciBhcmUgdGhpbmUuCkFsbCB0aGUgaGVhdmUgb2ZmZXJpbmdzIG9mIHRoZSBob2x5IHRoaW5ncywgd2hpY2ggdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBvZmZlciB1bnRvIHRoZSBMT1JELCBoYXZlIEkgZ2l2ZW4gdGhlZSwgYW5kIHRoeSBzb25zIGFuZCB0aHkgZGF1Z2h0ZXJzIHdpdGggdGhlZSwgYnkgYSBzdGF0dXRlIGZvciBldmVyOiBpdCBpcyBhIGNvdmVuYW50IG9mIHNhbHQgZm9yIGV2ZXIgYmVmb3JlIHRoZSBMT1JEIHVudG8gdGhlZSBhbmQgdG8gdGh5IHNlZWQgd2l0aCB0aGVlLgpBbmQgdGhlIExPUkQgc3Bha2UgdW50byBBYXJvbiwgVGhvdSBzaGFsdCBoYXZlIG5vIGluaGVyaXRhbmNlIGluIHRoZWlyIGxhbmQsIG5laXRoZXIgc2hhbHQgdGhvdSBoYXZlIGFueSBwYXJ0IGFtb25nIHRoZW06IEkgYW0gdGh5IHBhcnQgYW5kIHRoaW5lIGluaGVyaXRhbmNlIGFtb25nIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwuCkFuZCwgYmVob2xkLCBJIGhhdmUgZ2l2ZW4gdGhlIGNoaWxkcmVuIG9mIExldmkgYWxsIHRoZSB0ZW50aCBpbiBJc3JhZWwgZm9yIGFuIGluaGVyaXRhbmNlLCBmb3IgdGhlaXIgc2VydmljZSB3aGljaCB0aGV5IHNlcnZlLCBldmVuIHRoZSBzZXJ2aWNlIG9mIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBjb25ncmVnYXRpb24uCk5laXRoZXIgbXVzdCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGhlbmNlZm9ydGggY29tZSBuaWdoIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBjb25ncmVnYXRpb24sIGxlc3QgdGhleSBiZWFyIHNpbiwgYW5kIGRpZS4KQnV0IHRoZSBMZXZpdGVzIHNoYWxsIGRvIHRoZSBzZXJ2aWNlIG9mIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBjb25ncmVnYXRpb24sIGFuZCB0aGV5IHNoYWxsIGJlYXIgdGhlaXIgaW5pcXVpdHk6IGl0IHNoYWxsIGJlIGEgc3RhdHV0ZSBmb3IgZXZlciB0aHJvdWdob3V0IHlvdXIgZ2VuZXJhdGlvbnMsIHRoYXQgYW1vbmcgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCB0aGV5IGhhdmUgbm8gaW5oZXJpdGFuY2UuCkJ1dCB0aGUgdGl0aGVzIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIHdoaWNoIHRoZXkgb2ZmZXIgYXMgYW4gaGVhdmUgb2ZmZXJpbmcgdW50byB0aGUgTE9SRCwgSSBoYXZlIGdpdmVuIHRvIHRoZSBMZXZpdGVzIHRvIGluaGVyaXQ6IHRoZXJlZm9yZSBJIGhhdmUgc2FpZCB1bnRvIHRoZW0sIEFtb25nIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgdGhleSBzaGFsbCBoYXZlIG5vIGluaGVyaXRhbmNlLgpBbmQgdGhlIExPUkQgc3Bha2UgdW50byBNb3Nlcywgc2F5aW5nLApUaHVzIHNwZWFrIHVudG8gdGhlIExldml0ZXMsIGFuZCBzYXkgdW50byB0aGVtLCBXaGVuIHllIHRha2Ugb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCB0aGUgdGl0aGVzIHdoaWNoIEkgaGF2ZSBnaXZlbiB5b3UgZnJvbSB0aGVtIGZvciB5b3VyIGluaGVyaXRhbmNlLCB0aGVuIHllIHNoYWxsIG9mZmVyIHVwIGFuIGhlYXZlIG9mZmVyaW5nIG9mIGl0IGZvciB0aGUgTE9SRCwgZXZlbiBhIHRlbnRoIHBhcnQgb2YgdGhlIHRpdGhlLgpBbmQgdGhpcyB5b3VyIGhlYXZlIG9mZmVyaW5nIHNoYWxsIGJlIHJlY2tvbmVkIHVudG8geW91LCBhcyB0aG91Z2ggaXQgd2VyZSB0aGUgY29ybiBvZiB0aGUgdGhyZXNoaW5nZmxvb3IsIGFuZCBhcyB0aGUgZnVsbmVzcyBvZiB0aGUgd2luZXByZXNzLgpUaHVzIHllIGFsc28gc2hhbGwgb2ZmZXIgYW4gaGVhdmUgb2ZmZXJpbmcgdW50byB0aGUgTE9SRCBvZiBhbGwgeW91ciB0aXRoZXMsIHdoaWNoIHllIHJlY2VpdmUgb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbDsgYW5kIHllIHNoYWxsIGdpdmUgdGhlcmVvZiB0aGUgTE9SRCdzIGhlYXZlIG9mZmVyaW5nIHRvIEFhcm9uIHRoZSBwcmllc3QuCk91dCBvZiBhbGwgeW91ciBnaWZ0cyB5ZSBzaGFsbCBvZmZlciBldmVyeSBoZWF2ZSBvZmZlcmluZyBvZiB0aGUgTE9SRCwgb2YgYWxsIHRoZSBiZXN0IHRoZXJlb2YsIGV2ZW4gdGhlIGhhbGxvd2VkIHBhcnQgdGhlcmVvZiBvdXQgb2YgaXQuClRoZXJlZm9yZSB0aG91IHNoYWx0IHNheSB1bnRvIHRoZW0sIFdoZW4geWUgaGF2ZSBoZWF2ZWQgdGhlIGJlc3QgdGhlcmVvZiBmcm9tIGl0LCB0aGVuIGl0IHNoYWxsIGJlIGNvdW50ZWQgdW50byB0aGUgTGV2aXRlcyBhcyB0aGUgaW5jcmVhc2Ugb2YgdGhlIHRocmVzaGluZ2Zsb29yLCBhbmQgYXMgdGhlIGluY3JlYXNlIG9mIHRoZSB3aW5lcHJlc3MuCkFuZCB5ZSBzaGFsbCBlYXQgaXQgaW4gZXZlcnkgcGxhY2UsIHllIGFuZCB5b3VyIGhvdXNlaG9sZHM6IGZvciBpdCBpcyB5b3VyIHJld2FyZCBmb3IgeW91ciBzZXJ2aWNlIGluIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBjb25ncmVnYXRpb24uCkFuZCB5ZSBzaGFsbCBiZWFyIG5vIHNpbiBieSByZWFzb24gb2YgaXQsIHdoZW4geWUgaGF2ZSBoZWF2ZWQgZnJvbSBpdCB0aGUgYmVzdCBvZiBpdDogbmVpdGhlciBzaGFsbCB5ZSBwb2xsdXRlIHRoZSBob2x5IHRoaW5ncyBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLCBsZXN0IHllIGRpZS4KQW5kIHRoZSBMT1JEIHNwYWtlIHVudG8gTW9zZXMgYW5kIHVudG8gQWFyb24sIHNheWluZywKVGhpcyBpcyB0aGUgb3JkaW5hbmNlIG9mIHRoZSBsYXcgd2hpY2ggdGhlIExPUkQgaGF0aCBjb21tYW5kZWQsIHNheWluZywgU3BlYWsgdW50byB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLCB0aGF0IHRoZXkgYnJpbmcgdGhlZSBhIHJlZCBoZWlmZXIgd2l0aG91dCBzcG90LCB3aGVyZWluIGlzIG5vIGJsZW1pc2gsIGFuZCB1cG9uIHdoaWNoIG5ldmVyIGNhbWUgeW9rZToKQW5kIHllIHNoYWxsIGdpdmUgaGVyIHVudG8gRWxlYXphciB0aGUgcHJpZXN0LCB0aGF0IGhlIG1heSBicmluZyBoZXIgZm9ydGggd2l0aG91dCB0aGUgY2FtcCwgYW5kIG9uZSBzaGFsbCBzbGF5IGhlciBiZWZvcmUgaGlzIGZhY2U6CkFuZCBFbGVhemFyIHRoZSBwcmllc3Qgc2hhbGwgdGFrZSBvZiBoZXIgYmxvb2Qgd2l0aCBoaXMgZmluZ2VyLCBhbmQgc3ByaW5rbGUgb2YgaGVyIGJsb29kIGRpcmVjdGx5IGJlZm9yZSB0aGUgdGFiZXJuYWNsZSBvZiB0aGUgY29uZ3JlZ2F0aW9uIHNldmVuIHRpbWVzOgpBbmQgb25lIHNoYWxsIGJ1cm4gdGhlIGhlaWZlciBpbiBoaXMgc2lnaHQ7IGhlciBza2luLCBhbmQgaGVyIGZsZXNoLCBhbmQgaGVyIGJsb29kLCB3aXRoIGhlciBkdW5nLCBzaGFsbCBoZSBidXJuOgpBbmQgdGhlIHByaWVzdCBzaGFsbCB0YWtlIGNlZGFyIHdvb2QsIGFuZCBoeXNzb3AsIGFuZCBzY2FybGV0LCBhbmQgY2FzdCBpdCBpbnRvIHRoZSBtaWRzdCBvZiB0aGUgYnVybmluZyBvZiB0aGUgaGVpZmVyLgpUaGVuIHRoZSBwcmllc3Qgc2hhbGwgd2FzaCBoaXMgY2xvdGhlcywgYW5kIGhlIHNoYWxsIGJhdGhlIGhpcyBmbGVzaCBpbiB3YXRlciwgYW5kIGFmdGVyd2FyZCBoZSBzaGFsbCBjb21lIGludG8gdGhlIGNhbXAsIGFuZCB0aGUgcHJpZXN0IHNoYWxsIGJlIHVuY2xlYW4gdW50aWwgdGhlIGV2ZW4uCkFuZCBoZSB0aGF0IGJ1cm5ldGggaGVyIHNoYWxsIHdhc2ggaGlzIGNsb3RoZXMgaW4gd2F0ZXIsIGFuZCBiYXRoZSBoaXMgZmxlc2ggaW4gd2F0ZXIsIGFuZCBzaGFsbCBiZSB1bmNsZWFuIHVudGlsIHRoZSBldmVuLgpBbmQgYSBtYW4gdGhhdCBpcyBjbGVhbiBzaGFsbCBnYXRoZXIgdXAgdGhlIGFzaGVzIG9mIHRoZSBoZWlmZXIsIGFuZCBsYXkgdGhlbSB1cCB3aXRob3V0IHRoZSBjYW1wIGluIGEgY2xlYW4gcGxhY2UsIGFuZCBpdCBzaGFsbCBiZSBrZXB0IGZvciB0aGUgY29uZ3JlZ2F0aW9uIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgZm9yIGEgd2F0ZXIgb2Ygc2VwYXJhdGlvbjogaXQgaXMgYSBwdXJpZmljYXRpb24gZm9yIHNpbi4KQW5kIGhlIHRoYXQgZ2F0aGVyZXRoIHRoZSBhc2hlcyBvZiB0aGUgaGVpZmVyIHNoYWxsIHdhc2ggaGlzIGNsb3RoZXMsIGFuZCBiZSB1bmNsZWFuIHVudGlsIHRoZSBldmVuOiBhbmQgaXQgc2hhbGwgYmUgdW50byB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLCBhbmQgdW50byB0aGUgc3RyYW5nZXIgdGhhdCBzb2pvdXJuZXRoIGFtb25nIHRoZW0sIGZvciBhIHN0YXR1dGUgZm9yIGV2ZXIuCkhlIHRoYXQgdG91Y2hldGggdGhlIGRlYWQgYm9keSBvZiBhbnkgbWFuIHNoYWxsIGJlIHVuY2xlYW4gc2V2ZW4gZGF5cy4KSGUgc2hhbGwgcHVyaWZ5IGhpbXNlbGYgd2l0aCBpdCBvbiB0aGUgdGhpcmQgZGF5LCBhbmQgb24gdGhlIHNldmVudGggZGF5IGhlIHNoYWxsIGJlIGNsZWFuOiBidXQgaWYgaGUgcHVyaWZ5IG5vdCBoaW1zZWxmIHRoZSB0aGlyZCBkYXksIHRoZW4gdGhlIHNldmVudGggZGF5IGhlIHNoYWxsIG5vdCBiZSBjbGVhbi4KV2hvc29ldmVyIHRvdWNoZXRoIHRoZSBkZWFkIGJvZHkgb2YgYW55IG1hbiB0aGF0IGlzIGRlYWQsIGFuZCBwdXJpZmlldGggbm90IGhpbXNlbGYsIGRlZmlsZXRoIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBMT1JEOyBhbmQgdGhhdCBzb3VsIHNoYWxsIGJlIGN1dCBvZmYgZnJvbSBJc3JhZWw6IGJlY2F1c2UgdGhlIHdhdGVyIG9mIHNlcGFyYXRpb24gd2FzIG5vdCBzcHJpbmtsZWQgdXBvbiBoaW0sIGhlIHNoYWxsIGJlIHVuY2xlYW47IGhpcyB1bmNsZWFubmVzcyBpcyB5ZXQgdXBvbiBoaW0uClRoaXMgaXMgdGhlIGxhdywgd2hlbiBhIG1hbiBkaWV0aCBpbiBhIHRlbnQ6IGFsbCB0aGF0IGNvbWUgaW50byB0aGUgdGVudCwgYW5kIGFsbCB0aGF0IGlzIGluIHRoZSB0ZW50LCBzaGFsbCBiZSB1bmNsZWFuIHNldmVuIGRheXMuCkFuZCBldmVyeSBvcGVuIHZlc3NlbCwgd2hpY2ggaGF0aCBubyBjb3ZlcmluZyBib3VuZCB1cG9uIGl0LCBpcyB1bmNsZWFuLgpBbmQgd2hvc29ldmVyIHRvdWNoZXRoIG9uZSB0aGF0IGlzIHNsYWluIHdpdGggYSBzd29yZCBpbiB0aGUgb3BlbiBmaWVsZHMsIG9yIGEgZGVhZCBib2R5LCBvciBhIGJvbmUgb2YgYSBtYW4sIG9yIGEgZ3JhdmUsIHNoYWxsIGJlIHVuY2xlYW4gc2V2ZW4gZGF5cy4KQW5kIGZvciBhbiB1bmNsZWFuIHBlcnNvbiB0aGV5IHNoYWxsIHRha2Ugb2YgdGhlIGFzaGVzIG9mIHRoZSBidXJudCBoZWlmZXIgb2YgcHVyaWZpY2F0aW9uIGZvciBzaW4sIGFuZCBydW5uaW5nIHdhdGVyIHNoYWxsIGJlIHB1dCB0aGVyZXRvIGluIGEgdmVzc2VsOgpBbmQgYSBjbGVhbiBwZXJzb24gc2hhbGwgdGFrZSBoeXNzb3AsIGFuZCBkaXAgaXQgaW4gdGhlIHdhdGVyLCBhbmQgc3ByaW5rbGUgaXQgdXBvbiB0aGUgdGVudCwgYW5kIHVwb24gYWxsIHRoZSB2ZXNzZWxzLCBhbmQgdXBvbiB0aGUgcGVyc29ucyB0aGF0IHdlcmUgdGhlcmUsIGFuZCB1cG9uIGhpbSB0aGF0IHRvdWNoZWQgYSBib25lLCBvciBvbmUgc2xhaW4sIG9yIG9uZSBkZWFkLCBvciBhIGdyYXZlOgpBbmQgdGhlIGNsZWFuIHBlcnNvbiBzaGFsbCBzcHJpbmtsZSB1cG9uIHRoZSB1bmNsZWFuIG9uIHRoZSB0aGlyZCBkYXksIGFuZCBvbiB0aGUgc2V2ZW50aCBkYXk6IGFuZCBvbiB0aGUgc2V2ZW50aCBkYXkgaGUgc2hhbGwgcHVyaWZ5IGhpbXNlbGYsIGFuZCB3YXNoIGhpcyBjbG90aGVzLCBhbmQgYmF0aGUgaGltc2VsZiBpbiB3YXRlciwgYW5kIHNoYWxsIGJlIGNsZWFuIGF0IGV2ZW4uCkJ1dCB0aGUgbWFuIHRoYXQgc2hhbGwgYmUgdW5jbGVhbiwgYW5kIHNoYWxsIG5vdCBwdXJpZnkgaGltc2VsZiwgdGhhdCBzb3VsIHNoYWxsIGJlIGN1dCBvZmYgZnJvbSBhbW9uZyB0aGUgY29uZ3JlZ2F0aW9uLCBiZWNhdXNlIGhlIGhhdGggZGVmaWxlZCB0aGUgc2FuY3R1YXJ5IG9mIHRoZSBMT1JEOiB0aGUgd2F0ZXIgb2Ygc2VwYXJhdGlvbiBoYXRoIG5vdCBiZWVuIHNwcmlua2xlZCB1cG9uIGhpbTsgaGUgaXMgdW5jbGVhbi4KQW5kIGl0IHNoYWxsIGJlIGEgcGVycGV0dWFsIHN0YXR1dGUgdW50byB0aGVtLCB0aGF0IGhlIHRoYXQgc3ByaW5rbGV0aCB0aGUgd2F0ZXIgb2Ygc2VwYXJhdGlvbiBzaGFsbCB3YXNoIGhpcyBjbG90aGVzOyBhbmQgaGUgdGhhdCB0b3VjaGV0aCB0aGUgd2F0ZXIgb2Ygc2VwYXJhdGlvbiBzaGFsbCBiZSB1bmNsZWFuIHVudGlsIGV2ZW4uCkFuZCB3aGF0c29ldmVyIHRoZSB1bmNsZWFuIHBlcnNvbiB0b3VjaGV0aCBzaGFsbCBiZSB1bmNsZWFuOyBhbmQgdGhlIHNvdWwgdGhhdCB0b3VjaGV0aCBpdCBzaGFsbCBiZSB1bmNsZWFuIHVudGlsIGV2ZW4uClRoZW4gY2FtZSB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLCBldmVuIHRoZSB3aG9sZSBjb25ncmVnYXRpb24sIGludG8gdGhlIGRlc2VydCBvZiBaaW4gaW4gdGhlIGZpcnN0IG1vbnRoOiBhbmQgdGhlIHBlb3BsZSBhYm9kZSBpbiBLYWRlc2g7IGFuZCBNaXJpYW0gZGllZCB0aGVyZSwgYW5kIHdhcyBidXJpZWQgdGhlcmUuCkFuZCB0aGVyZSB3YXMgbm8gd2F0ZXIgZm9yIHRoZSBjb25ncmVnYXRpb246IGFuZCB0aGV5IGdhdGhlcmVkIHRoZW1zZWx2ZXMgdG9nZXRoZXIgYWdhaW5zdCBNb3NlcyBhbmQgYWdhaW5zdCBBYXJvbi4KQW5kIHRoZSBwZW9wbGUgY2hvZGUgd2l0aCBNb3NlcywgYW5kIHNwYWtlLCBzYXlpbmcsIFdvdWxkIEdvZCB0aGF0IHdlIGhhZCBkaWVkIHdoZW4gb3VyIGJyZXRocmVuIGRpZWQgYmVmb3JlIHRoZSBMT1JEIQpBbmQgd2h5IGhhdmUgeWUgYnJvdWdodCB1cCB0aGUgY29uZ3JlZ2F0aW9uIG9mIHRoZSBMT1JEIGludG8gdGhpcyB3aWxkZXJuZXNzLCB0aGF0IHdlIGFuZCBvdXIgY2F0dGxlIHNob3VsZCBkaWUgdGhlcmU/CkFuZCB3aGVyZWZvcmUgaGF2ZSB5ZSBtYWRlIHVzIHRvIGNvbWUgdXAgb3V0IG9mIEVneXB0LCB0byBicmluZyB1cyBpbiB1bnRvIHRoaXMgZXZpbCBwbGFjZT8gaXQgaXMgbm8gcGxhY2Ugb2Ygc2VlZCwgb3Igb2YgZmlncywgb3Igb2YgdmluZXMsIG9yIG9mIHBvbWVncmFuYXRlczsgbmVpdGhlciBpcyB0aGVyZSBhbnkgd2F0ZXIgdG8gZHJpbmsuCkFuZCBNb3NlcyBhbmQgQWFyb24gd2VudCBmcm9tIHRoZSBwcmVzZW5jZSBvZiB0aGUgYXNzZW1ibHkgdW50byB0aGUgZG9vciBvZiB0aGUgdGFiZXJuYWNsZSBvZiB0aGUgY29uZ3JlZ2F0aW9uLCBhbmQgdGhleSBmZWxsIHVwb24gdGhlaXIgZmFjZXM6IGFuZCB0aGUgZ2xvcnkgb2YgdGhlIExPUkQgYXBwZWFyZWQgdW50byB0aGVtLgpBbmQgdGhlIExPUkQgc3Bha2UgdW50byBNb3Nlcywgc2F5aW5nLApUYWtlIHRoZSByb2QsIGFuZCBnYXRoZXIgdGhvdSB0aGUgYXNzZW1ibHkgdG9nZXRoZXIsIHRob3UsIGFuZCBBYXJvbiB0aHkgYnJvdGhlciwgYW5kIHNwZWFrIHllIHVudG8gdGhlIHJvY2sgYmVmb3JlIHRoZWlyIGV5ZXM7IGFuZCBpdCBzaGFsbCBnaXZlIGZvcnRoIGhpcyB3YXRlciwgYW5kIHRob3Ugc2hhbHQgYnJpbmcgZm9ydGggdG8gdGhlbSB3YXRlciBvdXQgb2YgdGhlIHJvY2s6IHNvIHRob3Ugc2hhbHQgZ2l2ZSB0aGUgY29uZ3JlZ2F0aW9uIGFuZCB0aGVpciBiZWFzdHMgZHJpbmsuCkFuZCBNb3NlcyB0b29rIHRoZSByb2QgZnJvbSBiZWZvcmUgdGhlIExPUkQsIGFzIGhlIGNvbW1hbmRlZCBoaW0uCkFuZCBNb3NlcyBhbmQgQWFyb24gZ2F0aGVyZWQgdGhlIGNvbmdyZWdhdGlvbiB0b2dldGhlciBiZWZvcmUgdGhlIHJvY2ssIGFuZCBoZSBzYWlkIHVudG8gdGhlbSwgSGVhciBub3csIHllIHJlYmVsczsgbXVzdCB3ZSBmZXRjaCB5b3Ugd2F0ZXIgb3V0IG9mIHRoaXMgcm9jaz8KQW5kIE1vc2VzIGxpZnRlZCB1cCBoaXMgaGFuZCwgYW5kIHdpdGggaGlzIHJvZCBoZSBzbW90ZSB0aGUgcm9jayB0d2ljZTogYW5kIHRoZSB3YXRlciBjYW1lIG91dCBhYnVuZGFudGx5LCBhbmQgdGhlIGNvbmdyZWdhdGlvbiBkcmFuaywgYW5kIHRoZWlyIGJlYXN0cyBhbHNvLgpBbmQgdGhlIExPUkQgc3Bha2UgdW50byBNb3NlcyBhbmQgQWFyb24sIEJlY2F1c2UgeWUgYmVsaWV2ZWQgbWUgbm90LCB0byBzYW5jdGlmeSBtZSBpbiB0aGUgZXllcyBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLCB0aGVyZWZvcmUgeWUgc2hhbGwgbm90IGJyaW5nIHRoaXMgY29uZ3JlZ2F0aW9uIGludG8gdGhlIGxhbmQgd2hpY2ggSSBoYXZlIGdpdmVuIHRoZW0uClRoaXMgaXMgdGhlIHdhdGVyIG9mIE1lcmliYWg7IGJlY2F1c2UgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBzdHJvdmUgd2l0aCB0aGUgTE9SRCwgYW5kIGhlIHdhcyBzYW5jdGlmaWVkIGluIHRoZW0uCkFuZCBNb3NlcyBzZW50IG1lc3NlbmdlcnMgZnJvbSBLYWRlc2ggdW50byB0aGUga2luZyBvZiBFZG9tLCBUaHVzIHNhaXRoIHRoeSBicm90aGVyIElzcmFlbCwgVGhvdSBrbm93ZXN0IGFsbCB0aGUgdHJhdmFpbCB0aGF0IGhhdGggYmVmYWxsZW4gdXM6CkhvdyBvdXIgZmF0aGVycyB3ZW50IGRvd24gaW50byBFZ3lwdCwgYW5kIHdlIGhhdmUgZHdlbHQgaW4gRWd5cHQgYSBsb25nIHRpbWU7IGFuZCB0aGUgRWd5cHRpYW5zIHZleGVkIHVzLCBhbmQgb3VyIGZhdGhlcnM6CkFuZCB3aGVuIHdlIGNyaWVkIHVudG8gdGhlIExPUkQsIGhlIGhlYXJkIG91ciB2b2ljZSwgYW5kIHNlbnQgYW4gYW5nZWwsIGFuZCBoYXRoIGJyb3VnaHQgdXMgZm9ydGggb3V0IG9mIEVneXB0OiBhbmQsIGJlaG9sZCwgd2UgYXJlIGluIEthZGVzaCwgYSBjaXR5IGluIHRoZSB1dHRlcm1vc3Qgb2YgdGh5IGJvcmRlcjoKTGV0IHVzIHBhc3MsIEkgcHJheSB0aGVlLCB0aHJvdWdoIHRoeSBjb3VudHJ5OiB3ZSB3aWxsIG5vdCBwYXNzIHRocm91Z2ggdGhlIGZpZWxkcywgb3IgdGhyb3VnaCB0aGUgdmluZXlhcmRzLCBuZWl0aGVyIHdpbGwgd2UgZHJpbmsgb2YgdGhlIHdhdGVyIG9mIHRoZSB3ZWxsczogd2Ugd2lsbCBnbyBieSB0aGUga2luZydzIGhpZ2ggd2F5LCB3ZSB3aWxsIG5vdCB0dXJuIHRvIHRoZSByaWdodCBoYW5kIG5vciB0byB0aGUgbGVmdCwgdW50aWwgd2UgaGF2ZSBwYXNzZWQgdGh5IGJvcmRlcnMuCkFuZCBFZG9tIHNhaWQgdW50byBoaW0sIFRob3Ugc2hhbHQgbm90IHBhc3MgYnkgbWUsIGxlc3QgSSBjb21lIG91dCBhZ2FpbnN0IHRoZWUgd2l0aCB0aGUgc3dvcmQuCkFuZCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIHNhaWQgdW50byBoaW0sIFdlIHdpbGwgZ28gYnkgdGhlIGhpZ2ggd2F5OiBhbmQgaWYgSSBhbmQgbXkgY2F0dGxlIGRyaW5rIG9mIHRoeSB3YXRlciwgdGhlbiBJIHdpbGwgcGF5IGZvciBpdDogSSB3aWxsIG9ubHksIHdpdGhvdXQgZG9pbmcgYW55dGhpbmcgZWxzZSwgZ28gdGhyb3VnaCBvbiBteSBmZWV0LgpBbmQgaGUgc2FpZCwgVGhvdSBzaGFsdCBub3QgZ28gdGhyb3VnaC4gQW5kIEVkb20gY2FtZSBvdXQgYWdhaW5zdCBoaW0gd2l0aCBtdWNoIHBlb3BsZSwgYW5kIHdpdGggYSBzdHJvbmcgaGFuZC4KVGh1cyBFZG9tIHJlZnVzZWQgdG8gZ2l2ZSBJc3JhZWwgcGFzc2FnZSB0aHJvdWdoIGhpcyBib3JkZXI6IHdoZXJlZm9yZSBJc3JhZWwgdHVybmVkIGF3YXkgZnJvbSBoaW0uCkFuZCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLCBldmVuIHRoZSB3aG9sZSBjb25ncmVnYXRpb24sIGpvdXJuZXllZCBmcm9tIEthZGVzaCwgYW5kIGNhbWUgdW50byBtb3VudCBIb3IuCkFuZCB0aGUgTE9SRCBzcGFrZSB1bnRvIE1vc2VzIGFuZCBBYXJvbiBpbiBtb3VudCBIb3IsIGJ5IHRoZSBjb2FzdCBvZiB0aGUgbGFuZCBvZiBFZG9tLCBzYXlpbmcsCkFhcm9uIHNoYWxsIGJlIGdhdGhlcmVkIHVudG8gaGlzIHBlb3BsZTogZm9yIGhlIHNoYWxsIG5vdCBlbnRlciBpbnRvIHRoZSBsYW5kIHdoaWNoIEkgaGF2ZSBnaXZlbiB1bnRvIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIGJlY2F1c2UgeWUgcmViZWxsZWQgYWdhaW5zdCBteSB3b3JkIGF0IHRoZSB3YXRlciBvZiBNZXJpYmFoLgpUYWtlIEFhcm9uIGFuZCBFbGVhemFyIGhpcyBzb24sIGFuZCBicmluZyB0aGVtIHVwIHVudG8gbW91bnQgSG9yOgpBbmQgc3RyaXAgQWFyb24gb2YgaGlzIGdhcm1lbnRzLCBhbmQgcHV0IHRoZW0gdXBvbiBFbGVhemFyIGhpcyBzb246IGFuZCBBYXJvbiBzaGFsbCBiZSBnYXRoZXJlZCB1bnRvIGhpcyBwZW9wbGUsIGFuZCBzaGFsbCBkaWUgdGhlcmUuCkFuZCBNb3NlcyBkaWQgYXMgdGhlIExPUkQgY29tbWFuZGVkOiBhbmQgdGhleSB3ZW50IHVwIGludG8gbW91bnQgSG9yIGluIHRoZSBzaWdodCBvZiBhbGwgdGhlIGNvbmdyZWdhdGlvbi4KQW5kIE1vc2VzIHN0cmlwcGVkIEFhcm9uIG9mIGhpcyBnYXJtZW50cywgYW5kIHB1dCB0aGVtIHVwb24gRWxlYXphciBoaXMgc29uOyBhbmQgQWFyb24gZGllZCB0aGVyZSBpbiB0aGUgdG9wIG9mIHRoZSBtb3VudDogYW5kIE1vc2VzIGFuZCBFbGVhemFyIGNhbWUgZG93biBmcm9tIHRoZSBtb3VudC4KQW5kIHdoZW4gYWxsIHRoZSBjb25ncmVnYXRpb24gc2F3IHRoYXQgQWFyb24gd2FzIGRlYWQsIHRoZXkgbW91cm5lZCBmb3IgQWFyb24gdGhpcnR5IGRheXMsIGV2ZW4gYWxsIHRoZSBob3VzZSBvZiBJc3JhZWwuCkFuZCB3aGVuIGtpbmcgQXJhZCB0aGUgQ2FuYWFuaXRlLCB3aGljaCBkd2VsdCBpbiB0aGUgc291dGgsIGhlYXJkIHRlbGwgdGhhdCBJc3JhZWwgY2FtZSBieSB0aGUgd2F5IG9mIHRoZSBzcGllczsgdGhlbiBoZSBmb3VnaHQgYWdhaW5zdCBJc3JhZWwsIGFuZCB0b29rIHNvbWUgb2YgdGhlbSBwcmlzb25lcnMuCkFuZCBJc3JhZWwgdm93ZWQgYSB2b3cgdW50byB0aGUgTE9SRCwgYW5kIHNhaWQsIElmIHRob3Ugd2lsdCBpbmRlZWQgZGVsaXZlciB0aGlzIHBlb3BsZSBpbnRvIG15IGhhbmQsIHRoZW4gSSB3aWxsIHV0dGVybHkgZGVzdHJveSB0aGVpciBjaXRpZXMuCkFuZCB0aGUgTE9SRCBoZWFya2VuZWQgdG8gdGhlIHZvaWNlIG9mIElzcmFlbCwgYW5kIGRlbGl2ZXJlZCB1cCB0aGUgQ2FuYWFuaXRlczsgYW5kIHRoZXkgdXR0ZXJseSBkZXN0cm95ZWQgdGhlbSBhbmQgdGhlaXIgY2l0aWVzOiBhbmQgaGUgY2FsbGVkIHRoZSBuYW1lIG9mIHRoZSBwbGFjZSBIb3JtYWguCkFuZCB0aGV5IGpvdXJuZXllZCBmcm9tIG1vdW50IEhvciBieSB0aGUgd2F5IG9mIHRoZSBSZWQgc2VhLCB0byBjb21wYXNzIHRoZSBsYW5kIG9mIEVkb206IGFuZCB0aGUgc291bCBvZiB0aGUgcGVvcGxlIHdhcyBtdWNoIGRpc2NvdXJhZ2VkIGJlY2F1c2Ugb2YgdGhlIHdheS4KQW5kIHRoZSBwZW9wbGUgc3Bha2UgYWdhaW5zdCBHb2QsIGFuZCBhZ2FpbnN0IE1vc2VzLCBXaGVyZWZvcmUgaGF2ZSB5ZSBicm91Z2h0IHVzIHVwIG91dCBvZiBFZ3lwdCB0byBkaWUgaW4gdGhlIHdpbGRlcm5lc3M/IGZvciB0aGVyZSBpcyBubyBicmVhZCwgbmVpdGhlciBpcyB0aGVyZSBhbnkgd2F0ZXI7IGFuZCBvdXIgc291bCBsb2F0aGV0aCB0aGlzIGxpZ2h0IGJyZWFkLgpBbmQgdGhlIExPUkQgc2VudCBmaWVyeSBzZXJwZW50cyBhbW9uZyB0aGUgcGVvcGxlLCBhbmQgdGhleSBiaXQgdGhlIHBlb3BsZTsgYW5kIG11Y2ggcGVvcGxlIG9mIElzcmFlbCBkaWVkLgpUaGVyZWZvcmUgdGhlIHBlb3BsZSBjYW1lIHRvIE1vc2VzLCBhbmQgc2FpZCwgV2UgaGF2ZSBzaW5uZWQsIGZvciB3ZSBoYXZlIHNwb2tlbiBhZ2FpbnN0IHRoZSBMT1JELCBhbmQgYWdhaW5zdCB0aGVlOyBwcmF5IHVudG8gdGhlIExPUkQsIHRoYXQgaGUgdGFrZSBhd2F5IHRoZSBzZXJwZW50cyBmcm9tIHVzLiBBbmQgTW9zZXMgcHJheWVkIGZvciB0aGUgcGVvcGxlLgpBbmQgdGhlIExPUkQgc2FpZCB1bnRvIE1vc2VzLCBNYWtlIHRoZWUgYSBmaWVyeSBzZXJwZW50LCBhbmQgc2V0IGl0IHVwb24gYSBwb2xlOiBhbmQgaXQgc2hhbGwgY29tZSB0byBwYXNzLCB0aGF0IGV2ZXJ5IG9uZSB0aGF0IGlzIGJpdHRlbiwgd2hlbiBoZSBsb29rZXRoIHVwb24gaXQsIHNoYWxsIGxpdmUuCkFuZCBNb3NlcyBtYWRlIGEgc2VycGVudCBvZiBicmFzcywgYW5kIHB1dCBpdCB1cG9uIGEgcG9sZSwgYW5kIGl0IGNhbWUgdG8gcGFzcywgdGhhdCBpZiBhIHNlcnBlbnQgaGFkIGJpdHRlbiBhbnkgbWFuLCB3aGVuIGhlIGJlaGVsZCB0aGUgc2VycGVudCBvZiBicmFzcywgaGUgbGl2ZWQuCkFuZCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIHNldCBmb3J3YXJkLCBhbmQgcGl0Y2hlZCBpbiBPYm90aC4KQW5kIHRoZXkgam91cm5leWVkIGZyb20gT2JvdGgsIGFuZCBwaXRjaGVkIGF0IElqZWFiYXJpbSwgaW4gdGhlIHdpbGRlcm5lc3Mgd2hpY2ggaXMgYmVmb3JlIE1vYWIsIHRvd2FyZCB0aGUgc3VucmlzaW5nLgpGcm9tIHRoZW5jZSB0aGV5IHJlbW92ZWQsIGFuZCBwaXRjaGVkIGluIHRoZSB2YWxsZXkgb2YgWmFyZWQuCkZyb20gdGhlbmNlIHRoZXkgcmVtb3ZlZCwgYW5kIHBpdGNoZWQgb24gdGhlIG90aGVyIHNpZGUgb2YgQXJub24sIHdoaWNoIGlzIGluIHRoZSB3aWxkZXJuZXNzIHRoYXQgY29tZXRoIG91dCBvZiB0aGUgY29hc3RzIG9mIHRoZSBBbW9yaXRlczogZm9yIEFybm9uIGlzIHRoZSBib3JkZXIgb2YgTW9hYiwgYmV0d2VlbiBNb2FiIGFuZCB0aGUgQW1vcml0ZXMuCldoZXJlZm9yZSBpdCBpcyBzYWlkIGluIHRoZSBib29rIG9mIHRoZSB3YXJzIG9mIHRoZSBMT1JELCBXaGF0IGhlIGRpZCBpbiB0aGUgUmVkIHNlYSwgYW5kIGluIHRoZSBicm9va3Mgb2YgQXJub24sCkFuZCBhdCB0aGUgc3RyZWFtIG9mIHRoZSBicm9va3MgdGhhdCBnb2V0aCBkb3duIHRvIHRoZSBkd2VsbGluZyBvZiBBciwgYW5kIGxpZXRoIHVwb24gdGhlIGJvcmRlciBvZiBNb2FiLgpBbmQgZnJvbSB0aGVuY2UgdGhleSB3ZW50IHRvIEJlZXI6IHRoYXQgaXMgdGhlIHdlbGwgd2hlcmVvZiB0aGUgTE9SRCBzcGFrZSB1bnRvIE1vc2VzLCBHYXRoZXIgdGhlIHBlb3BsZSB0b2dldGhlciwgYW5kIEkgd2lsbCBnaXZlIHRoZW0gd2F0ZXIuClRoZW4gSXNyYWVsIHNhbmcgdGhpcyBzb25nLCBTcHJpbmcgdXAsIE8gd2VsbDsgc2luZyB5ZSB1bnRvIGl0OgpUaGUgcHJpbmNlcyBkaWdnZWQgdGhlIHdlbGwsIHRoZSBub2JsZXMgb2YgdGhlIHBlb3BsZSBkaWdnZWQgaXQsIGJ5IHRoZSBkaXJlY3Rpb24gb2YgdGhlIGxhd2dpdmVyLCB3aXRoIHRoZWlyIHN0YXZlcy4gQW5kIGZyb20gdGhlIHdpbGRlcm5lc3MgdGhleSB3ZW50IHRvIE1hdHRhbmFoOgpBbmQgZnJvbSBNYXR0YW5haCB0byBOYWhhbGllbDogYW5kIGZyb20gTmFoYWxpZWwgdG8gQmFtb3RoOgpBbmQgZnJvbSBCYW1vdGggaW4gdGhlIHZhbGxleSwgdGhhdCBpcyBpbiB0aGUgY291bnRyeSBvZiBNb2FiLCB0byB0aGUgdG9wIG9mIFBpc2dhaCwgd2hpY2ggbG9va2V0aCB0b3dhcmQgSmVzaGltb24uCkFuZCBJc3JhZWwgc2VudCBtZXNzZW5nZXJzIHVudG8gU2lob24ga2luZyBvZiB0aGUgQW1vcml0ZXMsIHNheWluZywKTGV0IG1lIHBhc3MgdGhyb3VnaCB0aHkgbGFuZDogd2Ugd2lsbCBub3QgdHVybiBpbnRvIHRoZSBmaWVsZHMsIG9yIGludG8gdGhlIHZpbmV5YXJkczsgd2Ugd2lsbCBub3QgZHJpbmsgb2YgdGhlIHdhdGVycyBvZiB0aGUgd2VsbDogYnV0IHdlIHdpbGwgZ28gYWxvbmcgYnkgdGhlIGtpbmcncyBoaWdoIHdheSwgdW50aWwgd2UgYmUgcGFzdCB0aHkgYm9yZGVycy4KQW5kIFNpaG9uIHdvdWxkIG5vdCBzdWZmZXIgSXNyYWVsIHRvIHBhc3MgdGhyb3VnaCBoaXMgYm9yZGVyOiBidXQgU2lob24gZ2F0aGVyZWQgYWxsIGhpcyBwZW9wbGUgdG9nZXRoZXIsIGFuZCB3ZW50IG91dCBhZ2FpbnN0IElzcmFlbCBpbnRvIHRoZSB3aWxkZXJuZXNzOiBhbmQgaGUgY2FtZSB0byBKYWhheiwgYW5kIGZvdWdodCBhZ2FpbnN0IElzcmFlbC4KQW5kIElzcmFlbCBzbW90ZSBoaW0gd2l0aCB0aGUgZWRnZSBvZiB0aGUgc3dvcmQsIGFuZCBwb3NzZXNzZWQgaGlzIGxhbmQgZnJvbSBBcm5vbiB1bnRvIEphYmJvaywgZXZlbiB1bnRvIHRoZSBjaGlsZHJlbiBvZiBBbW1vbjogZm9yIHRoZSBib3JkZXIgb2YgdGhlIGNoaWxkcmVuIG9mIEFtbW9uIHdhcyBzdHJvbmcuCkFuZCBJc3JhZWwgdG9vayBhbGwgdGhlc2UgY2l0aWVzOiBhbmQgSXNyYWVsIGR3ZWx0IGluIGFsbCB0aGUgY2l0aWVzIG9mIHRoZSBBbW9yaXRlcywgaW4gSGVzaGJvbiwgYW5kIGluIGFsbCB0aGUgdmlsbGFnZXMgdGhlcmVvZi4KRm9yIEhlc2hib24gd2FzIHRoZSBjaXR5IG9mIFNpaG9uIHRoZSBraW5nIG9mIHRoZSBBbW9yaXRlcywgd2hvIGhhZCBmb3VnaHQgYWdhaW5zdCB0aGUgZm9ybWVyIGtpbmcgb2YgTW9hYiwgYW5kIHRha2VuIGFsbCBoaXMgbGFuZCBvdXQgb2YgaGlzIGhhbmQsIGV2ZW4gdW50byBBcm5vbi4KV2hlcmVmb3JlIHRoZXkgdGhhdCBzcGVhayBpbiBwcm92ZXJicyBzYXksIENvbWUgaW50byBIZXNoYm9uLCBsZXQgdGhlIGNpdHkgb2YgU2lob24gYmUgYnVpbHQgYW5kIHByZXBhcmVkOgpGb3IgdGhlcmUgaXMgYSBmaXJlIGdvbmUgb3V0IG9mIEhlc2hib24sIGEgZmxhbWUgZnJvbSB0aGUgY2l0eSBvZiBTaWhvbjogaXQgaGF0aCBjb25zdW1lZCBBciBvZiBNb2FiLCBhbmQgdGhlIGxvcmRzIG9mIHRoZSBoaWdoIHBsYWNlcyBvZiBBcm5vbi4KV29lIHRvIHRoZWUsIE1vYWIhIHRob3UgYXJ0IHVuZG9uZSwgTyBwZW9wbGUgb2YgQ2hlbW9zaDogaGUgaGF0aCBnaXZlbiBoaXMgc29ucyB0aGF0IGVzY2FwZWQsIGFuZCBoaXMgZGF1Z2h0ZXJzLCBpbnRvIGNhcHRpdml0eSB1bnRvIFNpaG9uIGtpbmcgb2YgdGhlIEFtb3JpdGVzLgpXZSBoYXZlIHNob3QgYXQgdGhlbTsgSGVzaGJvbiBpcyBwZXJpc2hlZCBldmVuIHVudG8gRGlib24sIGFuZCB3ZSBoYXZlIGxhaWQgdGhlbSB3YXN0ZSBldmVuIHVudG8gTm9waGFoLCB3aGljaCByZWFjaGV0aCB1bnRvIE1lZGViYS4KVGh1cyBJc3JhZWwgZHdlbHQgaW4gdGhlIGxhbmQgb2YgdGhlIEFtb3JpdGVzLgpBbmQgTW9zZXMgc2VudCB0byBzcHkgb3V0IEphYXplciwgYW5kIHRoZXkgdG9vayB0aGUgdmlsbGFnZXMgdGhlcmVvZiwgYW5kIGRyb3ZlIG91dCB0aGUgQW1vcml0ZXMgdGhhdCB3ZXJlIHRoZXJlLgpBbmQgdGhleSB0dXJuZWQgYW5kIHdlbnQgdXAgYnkgdGhlIHdheSBvZiBCYXNoYW46IGFuZCBPZyB0aGUga2luZyBvZiBCYXNoYW4gd2VudCBvdXQgYWdhaW5zdCB0aGVtLCBoZSwgYW5kIGFsbCBoaXMgcGVvcGxlLCB0byB0aGUgYmF0dGxlIGF0IEVkcmVpLgpBbmQgdGhlIExPUkQgc2FpZCB1bnRvIE1vc2VzLCBGZWFyIGhpbSBub3Q6IGZvciBJIGhhdmUgZGVsaXZlcmVkIGhpbSBpbnRvIHRoeSBoYW5kLCBhbmQgYWxsIGhpcyBwZW9wbGUsIGFuZCBoaXMgbGFuZDsgYW5kIHRob3Ugc2hhbHQgZG8gdG8gaGltIGFzIHRob3UgZGlkc3QgdW50byBTaWhvbiBraW5nIG9mIHRoZSBBbW9yaXRlcywgd2hpY2ggZHdlbHQgYXQgSGVzaGJvbi4KU28gdGhleSBzbW90ZSBoaW0sIGFuZCBoaXMgc29ucywgYW5kIGFsbCBoaXMgcGVvcGxlLCB1bnRpbCB0aGVyZSB3YXMgbm9uZSBsZWZ0IGhpbSBhbGl2ZTogYW5kIHRoZXkgcG9zc2Vzc2VkIGhpcyBsYW5kLgpBbmQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBzZXQgZm9yd2FyZCwgYW5kIHBpdGNoZWQgaW4gdGhlIHBsYWlucyBvZiBNb2FiIG9uIHRoaXMgc2lkZSBKb3JkYW4gYnkgSmVyaWNoby4KQW5kIEJhbGFrIHRoZSBzb24gb2YgWmlwcG9yIHNhdyBhbGwgdGhhdCBJc3JhZWwgaGFkIGRvbmUgdG8gdGhlIEFtb3JpdGVzLgpBbmQgTW9hYiB3YXMgc29yZSBhZnJhaWQgb2YgdGhlIHBlb3BsZSwgYmVjYXVzZSB0aGV5IHdlcmUgbWFueTogYW5kIE1vYWIgd2FzIGRpc3RyZXNzZWQgYmVjYXVzZSBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLgpBbmQgTW9hYiBzYWlkIHVudG8gdGhlIGVsZGVycyBvZiBNaWRpYW4sIE5vdyBzaGFsbCB0aGlzIGNvbXBhbnkgbGljayB1cCBhbGwgdGhhdCBhcmUgcm91bmQgYWJvdXQgdXMsIGFzIHRoZSBveCBsaWNrZXRoIHVwIHRoZSBncmFzcyBvZiB0aGUgZmllbGQuIEFuZCBCYWxhayB0aGUgc29uIG9mIFppcHBvciB3YXMga2luZyBvZiB0aGUgTW9hYml0ZXMgYXQgdGhhdCB0aW1lLgpIZSBzZW50IG1lc3NlbmdlcnMgdGhlcmVmb3JlIHVudG8gQmFsYWFtIHRoZSBzb24gb2YgQmVvciB0byBQZXRob3IsIHdoaWNoIGlzIGJ5IHRoZSByaXZlciBvZiB0aGUgbGFuZCBvZiB0aGUgY2hpbGRyZW4gb2YgaGlzIHBlb3BsZSwgdG8gY2FsbCBoaW0sIHNheWluZywgQmVob2xkLCB0aGVyZSBpcyBhIHBlb3BsZSBjb21lIG91dCBmcm9tIEVneXB0OiBiZWhvbGQsIHRoZXkgY292ZXIgdGhlIGZhY2Ugb2YgdGhlIGVhcnRoLCBhbmQgdGhleSBhYmlkZSBvdmVyIGFnYWluc3QgbWU6CkNvbWUgbm93IHRoZXJlZm9yZSwgSSBwcmF5IHRoZWUsIGN1cnNlIG1lIHRoaXMgcGVvcGxlOyBmb3IgdGhleSBhcmUgdG9vIG1pZ2h0eSBmb3IgbWU6IHBlcmFkdmVudHVyZSBJIHNoYWxsIHByZXZhaWwsIHRoYXQgd2UgbWF5IHNtaXRlIHRoZW0sIGFuZCB0aGF0IEkgbWF5IGRyaXZlIHRoZW0gb3V0IG9mIHRoZSBsYW5kOiBmb3IgSSB3b3QgdGhhdCBoZSB3aG9tIHRob3UgYmxlc3Nlc3QgaXMgYmxlc3NlZCwgYW5kIGhlIHdob20gdGhvdSBjdXJzZXN0IGlzIGN1cnNlZC4KQW5kIHRoZSBlbGRlcnMgb2YgTW9hYiBhbmQgdGhlIGVsZGVycyBvZiBNaWRpYW4gZGVwYXJ0ZWQgd2l0aCB0aGUgcmV3YXJkcyBvZiBkaXZpbmF0aW9uIGluIHRoZWlyIGhhbmQ7IGFuZCB0aGV5IGNhbWUgdW50byBCYWxhYW0sIGFuZCBzcGFrZSB1bnRvIGhpbSB0aGUgd29yZHMgb2YgQmFsYWsuCkFuZCBoZSBzYWlkIHVudG8gdGhlbSwgTG9kZ2UgaGVyZSB0aGlzIG5pZ2h0LCBhbmQgSSB3aWxsIGJyaW5nIHlvdSB3b3JkIGFnYWluLCBhcyB0aGUgTE9SRCBzaGFsbCBzcGVhayB1bnRvIG1lOiBhbmQgdGhlIHByaW5jZXMgb2YgTW9hYiBhYm9kZSB3aXRoIEJhbGFhbS4KQW5kIEdvZCBjYW1lIHVudG8gQmFsYWFtLCBhbmQgc2FpZCwgV2hhdCBtZW4gYXJlIHRoZXNlIHdpdGggdGhlZT8KQW5kIEJhbGFhbSBzYWlkIHVudG8gR29kLCBCYWxhayB0aGUgc29uIG9mIFppcHBvciwga2luZyBvZiBNb2FiLCBoYXRoIHNlbnQgdW50byBtZSwgc2F5aW5nLApCZWhvbGQsIHRoZXJlIGlzIGEgcGVvcGxlIGNvbWUgb3V0IG9mIEVneXB0LCB3aGljaCBjb3ZlcmV0aCB0aGUgZmFjZSBvZiB0aGUgZWFydGg6IGNvbWUgbm93LCBjdXJzZSBtZSB0aGVtOyBwZXJhZHZlbnR1cmUgSSBzaGFsbCBiZSBhYmxlIHRvIG92ZXJjb21lIHRoZW0sIGFuZCBkcml2ZSB0aGVtIG91dC4KQW5kIEdvZCBzYWlkIHVudG8gQmFsYWFtLCBUaG91IHNoYWx0IG5vdCBnbyB3aXRoIHRoZW07IHRob3Ugc2hhbHQgbm90IGN1cnNlIHRoZSBwZW9wbGU6IGZvciB0aGV5IGFyZSBibGVzc2VkLgpBbmQgQmFsYWFtIHJvc2UgdXAgaW4gdGhlIG1vcm5pbmcsIGFuZCBzYWlkIHVudG8gdGhlIHByaW5jZXMgb2YgQmFsYWssIEdldCB5b3UgaW50byB5b3VyIGxhbmQ6IGZvciB0aGUgTE9SRCByZWZ1c2V0aCB0byBnaXZlIG1lIGxlYXZlIHRvIGdvIHdpdGggeW91LgpBbmQgdGhlIHByaW5jZXMgb2YgTW9hYiByb3NlIHVwLCBhbmQgdGhleSB3ZW50IHVudG8gQmFsYWssIGFuZCBzYWlkLCBCYWxhYW0gcmVmdXNldGggdG8gY29tZSB3aXRoIHVzLgpBbmQgQmFsYWsgc2VudCB5ZXQgYWdhaW4gcHJpbmNlcywgbW9yZSwgYW5kIG1vcmUgaG9ub3VyYWJsZSB0aGFuIHRoZXkuCkFuZCB0aGV5IGNhbWUgdG8gQmFsYWFtLCBhbmQgc2FpZCB0byBoaW0sIFRodXMgc2FpdGggQmFsYWsgdGhlIHNvbiBvZiBaaXBwb3IsIExldCBub3RoaW5nLCBJIHByYXkgdGhlZSwgaGluZGVyIHRoZWUgZnJvbSBjb21pbmcgdW50byBtZToKRm9yIEkgd2lsbCBwcm9tb3RlIHRoZWUgdW50byB2ZXJ5IGdyZWF0IGhvbm91ciwgYW5kIEkgd2lsbCBkbyB3aGF0c29ldmVyIHRob3Ugc2F5ZXN0IHVudG8gbWU6IGNvbWUgdGhlcmVmb3JlLCBJIHByYXkgdGhlZSwgY3Vyc2UgbWUgdGhpcyBwZW9wbGUuCkFuZCBCYWxhYW0gYW5zd2VyZWQgYW5kIHNhaWQgdW50byB0aGUgc2VydmFudHMgb2YgQmFsYWssIElmIEJhbGFrIHdvdWxkIGdpdmUgbWUgaGlzIGhvdXNlIGZ1bGwgb2Ygc2lsdmVyIGFuZCBnb2xkLCBJIGNhbm5vdCBnbyBiZXlvbmQgdGhlIHdvcmQgb2YgdGhlIExPUkQgbXkgR29kLCB0byBkbyBsZXNzIG9yIG1vcmUuCk5vdyB0aGVyZWZvcmUsIEkgcHJheSB5b3UsIHRhcnJ5IHllIGFsc28gaGVyZSB0aGlzIG5pZ2h0LCB0aGF0IEkgbWF5IGtub3cgd2hhdCB0aGUgTE9SRCB3aWxsIHNheSB1bnRvIG1lIG1vcmUuCkFuZCBHb2QgY2FtZSB1bnRvIEJhbGFhbSBhdCBuaWdodCwgYW5kIHNhaWQgdW50byBoaW0sIElmIHRoZSBtZW4gY29tZSB0byBjYWxsIHRoZWUsIHJpc2UgdXAsIGFuZCBnbyB3aXRoIHRoZW07IGJ1dCB5ZXQgdGhlIHdvcmQgd2hpY2ggSSBzaGFsbCBzYXkgdW50byB0aGVlLCB0aGF0IHNoYWx0IHRob3UgZG8uCkFuZCBCYWxhYW0gcm9zZSB1cCBpbiB0aGUgbW9ybmluZywgYW5kIHNhZGRsZWQgaGlzIGFzcywgYW5kIHdlbnQgd2l0aCB0aGUgcHJpbmNlcyBvZiBNb2FiLgpBbmQgR29kJ3MgYW5nZXIgd2FzIGtpbmRsZWQgYmVjYXVzZSBoZSB3ZW50OiBhbmQgdGhlIGFuZ2VsIG9mIHRoZSBMT1JEIHN0b29kIGluIHRoZSB3YXkgZm9yIGFuIGFkdmVyc2FyeSBhZ2FpbnN0IGhpbS4gTm93IGhlIHdhcyByaWRpbmcgdXBvbiBoaXMgYXNzLCBhbmQgaGlzIHR3byBzZXJ2YW50cyB3ZXJlIHdpdGggaGltLgpBbmQgdGhlIGFzcyBzYXcgdGhlIGFuZ2VsIG9mIHRoZSBMT1JEIHN0YW5kaW5nIGluIHRoZSB3YXksIGFuZCBoaXMgc3dvcmQgZHJhd24gaW4gaGlzIGhhbmQ6IGFuZCB0aGUgYXNzIHR1cm5lZCBhc2lkZSBvdXQgb2YgdGhlIHdheSwgYW5kIHdlbnQgaW50byB0aGUgZmllbGQ6IGFuZCBCYWxhYW0gc21vdGUgdGhlIGFzcywgdG8gdHVybiBoZXIgaW50byB0aGUgd2F5LgpCdXQgdGhlIGFuZ2VsIG9mIHRoZSBMT1JEIHN0b29kIGluIGEgcGF0aCBvZiB0aGUgdmluZXlhcmRzLCBhIHdhbGwgYmVpbmcgb24gdGhpcyBzaWRlLCBhbmQgYSB3YWxsIG9uIHRoYXQgc2lkZS4KQW5kIHdoZW4gdGhlIGFzcyBzYXcgdGhlIGFuZ2VsIG9mIHRoZSBMT1JELCBzaGUgdGhydXN0IGhlcnNlbGYgdW50byB0aGUgd2FsbCwgYW5kIGNydXNoZWQgQmFsYWFtJ3MgZm9vdCBhZ2FpbnN0IHRoZSB3YWxsOiBhbmQgaGUgc21vdGUgaGVyIGFnYWluLgpBbmQgdGhlIGFuZ2VsIG9mIHRoZSBMT1JEIHdlbnQgZnVydGhlciwgYW5kIHN0b29kIGluIGEgbmFycm93IHBsYWNlLCB3aGVyZSB3YXMgbm8gd2F5IHRvIHR1cm4gZWl0aGVyIHRvIHRoZSByaWdodCBoYW5kIG9yIHRvIHRoZSBsZWZ0LgpBbmQgd2hlbiB0aGUgYXNzIHNhdyB0aGUgYW5nZWwgb2YgdGhlIExPUkQsIHNoZSBmZWxsIGRvd24gdW5kZXIgQmFsYWFtOiBhbmQgQmFsYWFtJ3MgYW5nZXIgd2FzIGtpbmRsZWQsIGFuZCBoZSBzbW90ZSB0aGUgYXNzIHdpdGggYSBzdGFmZi4KQW5kIHRoZSBMT1JEIG9wZW5lZCB0aGUgbW91dGggb2YgdGhlIGFzcywgYW5kIHNoZSBzYWlkIHVudG8gQmFsYWFtLCBXaGF0IGhhdmUgSSBkb25lIHVudG8gdGhlZSwgdGhhdCB0aG91IGhhc3Qgc21pdHRlbiBtZSB0aGVzZSB0aHJlZSB0aW1lcz8KQW5kIEJhbGFhbSBzYWlkIHVudG8gdGhlIGFzcywgQmVjYXVzZSB0aG91IGhhc3QgbW9ja2VkIG1lOiBJIHdvdWxkIHRoZXJlIHdlcmUgYSBzd29yZCBpbiBtaW5lIGhhbmQsIGZvciBub3cgd291bGQgSSBraWxsIHRoZWUuCkFuZCB0aGUgYXNzIHNhaWQgdW50byBCYWxhYW0sIEFtIG5vdCBJIHRoaW5lIGFzcywgdXBvbiB3aGljaCB0aG91IGhhc3QgcmlkZGVuIGV2ZXIgc2luY2UgSSB3YXMgdGhpbmUgdW50byB0aGlzIGRheT8gd2FzIEkgZXZlciB3b250IHRvIGRvIHNvIHVudG8gdGhlZT8gQW5kIGhlIHNhaWQsIE5heS4KVGhlbiB0aGUgTE9SRCBvcGVuZWQgdGhlIGV5ZXMgb2YgQmFsYWFtLCBhbmQgaGUgc2F3IHRoZSBhbmdlbCBvZiB0aGUgTE9SRCBzdGFuZGluZyBpbiB0aGUgd2F5LCBhbmQgaGlzIHN3b3JkIGRyYXduIGluIGhpcyBoYW5kOiBhbmQgaGUgYm93ZWQgZG93biBoaXMgaGVhZCwgYW5kIGZlbGwgZmxhdCBvbiBoaXMgZmFjZS4KQW5kIHRoZSBhbmdlbCBvZiB0aGUgTE9SRCBzYWlkIHVudG8gaGltLCBXaGVyZWZvcmUgaGFzdCB0aG91IHNtaXR0ZW4gdGhpbmUgYXNzIHRoZXNlIHRocmVlIHRpbWVzPyBiZWhvbGQsIEkgd2VudCBvdXQgdG8gd2l0aHN0YW5kIHRoZWUsIGJlY2F1c2UgdGh5IHdheSBpcyBwZXJ2ZXJzZSBiZWZvcmUgbWU6CkFuZCB0aGUgYXNzIHNhdyBtZSwgYW5kIHR1cm5lZCBmcm9tIG1lIHRoZXNlIHRocmVlIHRpbWVzOiB1bmxlc3Mgc2hlIGhhZCB0dXJuZWQgZnJvbSBtZSwgc3VyZWx5IG5vdyBhbHNvIEkgaGFkIHNsYWluIHRoZWUsIGFuZCBzYXZlZCBoZXIgYWxpdmUuCkFuZCBCYWxhYW0gc2FpZCB1bnRvIHRoZSBhbmdlbCBvZiB0aGUgTE9SRCwgSSBoYXZlIHNpbm5lZDsgZm9yIEkga25ldyBub3QgdGhhdCB0aG91IHN0b29kZXN0IGluIHRoZSB3YXkgYWdhaW5zdCBtZTogbm93IHRoZXJlZm9yZSwgaWYgaXQgZGlzcGxlYXNlIHRoZWUsIEkgd2lsbCBnZXQgbWUgYmFjayBhZ2Fpbi4KQW5kIHRoZSBhbmdlbCBvZiB0aGUgTE9SRCBzYWlkIHVudG8gQmFsYWFtLCBHbyB3aXRoIHRoZSBtZW46IGJ1dCBvbmx5IHRoZSB3b3JkIHRoYXQgSSBzaGFsbCBzcGVhayB1bnRvIHRoZWUsIHRoYXQgdGhvdSBzaGFsdCBzcGVhay4gU28gQmFsYWFtIHdlbnQgd2l0aCB0aGUgcHJpbmNlcyBvZiBCYWxhay4KQW5kIHdoZW4gQmFsYWsgaGVhcmQgdGhhdCBCYWxhYW0gd2FzIGNvbWUsIGhlIHdlbnQgb3V0IHRvIG1lZXQgaGltIHVudG8gYSBjaXR5IG9mIE1vYWIsIHdoaWNoIGlzIGluIHRoZSBib3JkZXIgb2YgQXJub24sIHdoaWNoIGlzIGluIHRoZSB1dG1vc3QgY29hc3QuCkFuZCBCYWxhayBzYWlkIHVudG8gQmFsYWFtLCBEaWQgSSBub3QgZWFybmVzdGx5IHNlbmQgdW50byB0aGVlIHRvIGNhbGwgdGhlZT8gd2hlcmVmb3JlIGNhbWVzdCB0aG91IG5vdCB1bnRvIG1lPyBhbSBJIG5vdCBhYmxlIGluZGVlZCB0byBwcm9tb3RlIHRoZWUgdG8gaG9ub3VyPwpBbmQgQmFsYWFtIHNhaWQgdW50byBCYWxhaywgTG8sIEkgYW0gY29tZSB1bnRvIHRoZWU6IGhhdmUgSSBub3cgYW55IHBvd2VyIGF0IGFsbCB0byBzYXkgYW55IHRoaW5nPyB0aGUgd29yZCB0aGF0IEdvZCBwdXR0ZXRoIGluIG15IG1vdXRoLCB0aGF0IHNoYWxsIEkgc3BlYWsuCkFuZCBCYWxhYW0gd2VudCB3aXRoIEJhbGFrLCBhbmQgdGhleSBjYW1lIHVudG8gS2lyamF0aGh1em90aC4KQW5kIEJhbGFrIG9mZmVyZWQgb3hlbiBhbmQgc2hlZXAsIGFuZCBzZW50IHRvIEJhbGFhbSwgYW5kIHRvIHRoZSBwcmluY2VzIHRoYXQgd2VyZSB3aXRoIGhpbS4KQW5kIGl0IGNhbWUgdG8gcGFzcyBvbiB0aGUgbW9ycm93LCB0aGF0IEJhbGFrIHRvb2sgQmFsYWFtLCBhbmQgYnJvdWdodCBoaW0gdXAgaW50byB0aGUgaGlnaCBwbGFjZXMgb2YgQmFhbCwgdGhhdCB0aGVuY2UgaGUgbWlnaHQgc2VlIHRoZSB1dG1vc3QgcGFydCBvZiB0aGUgcGVvcGxlLgpBbmQgQmFsYWFtIHNhaWQgdW50byBCYWxhaywgQnVpbGQgbWUgaGVyZSBzZXZlbiBhbHRhcnMsIGFuZCBwcmVwYXJlIG1lIGhlcmUgc2V2ZW4gb3hlbiBhbmQgc2V2ZW4gcmFtcy4KQW5kIEJhbGFrIGRpZCBhcyBCYWxhYW0gaGFkIHNwb2tlbjsgYW5kIEJhbGFrIGFuZCBCYWxhYW0gb2ZmZXJlZCBvbiBldmVyeSBhbHRhciBhIGJ1bGxvY2sgYW5kIGEgcmFtLgpBbmQgQmFsYWFtIHNhaWQgdW50byBCYWxhaywgU3RhbmQgYnkgdGh5IGJ1cm50IG9mZmVyaW5nLCBhbmQgSSB3aWxsIGdvOiBwZXJhZHZlbnR1cmUgdGhlIExPUkQgd2lsbCBjb21lIHRvIG1lZXQgbWU6IGFuZCB3aGF0c29ldmVyIGhlIHNoZXdldGggbWUgSSB3aWxsIHRlbGwgdGhlZS4gQW5kIGhlIHdlbnQgdG8gYW4gaGlnaCBwbGFjZS4KQW5kIEdvZCBtZXQgQmFsYWFtOiBhbmQgaGUgc2FpZCB1bnRvIGhpbSwgSSBoYXZlIHByZXBhcmVkIHNldmVuIGFsdGFycywgYW5kIEkgaGF2ZSBvZmZlcmVkIHVwb24gZXZlcnkgYWx0YXIgYSBidWxsb2NrIGFuZCBhIHJhbS4KQW5kIHRoZSBMT1JEIHB1dCBhIHdvcmQgaW4gQmFsYWFtJ3MgbW91dGgsIGFuZCBzYWlkLCBSZXR1cm4gdW50byBCYWxhaywgYW5kIHRodXMgdGhvdSBzaGFsdCBzcGVhay4KQW5kIGhlIHJldHVybmVkIHVudG8gaGltLCBhbmQsIGxvLCBoZSBzdG9vZCBieSBoaXMgYnVybnQgc2FjcmlmaWNlLCBoZSwgYW5kIGFsbCB0aGUgcHJpbmNlcyBvZiBNb2FiLgpBbmQgaGUgdG9vayB1cCBoaXMgcGFyYWJsZSwgYW5kIHNhaWQsIEJhbGFrIHRoZSBraW5nIG9mIE1vYWIgaGF0aCBicm91Z2h0IG1lIGZyb20gQXJhbSwgb3V0IG9mIHRoZSBtb3VudGFpbnMgb2YgdGhlIGVhc3QsIHNheWluZywgQ29tZSwgY3Vyc2UgbWUgSmFjb2IsIGFuZCBjb21lLCBkZWZ5IElzcmFlbC4KSG93IHNoYWxsIEkgY3Vyc2UsIHdob20gR29kIGhhdGggbm90IGN1cnNlZD8gb3IgaG93IHNoYWxsIEkgZGVmeSwgd2hvbSB0aGUgTE9SRCBoYXRoIG5vdCBkZWZpZWQ/CkZvciBmcm9tIHRoZSB0b3Agb2YgdGhlIHJvY2tzIEkgc2VlIGhpbSwgYW5kIGZyb20gdGhlIGhpbGxzIEkgYmVob2xkIGhpbTogbG8sIHRoZSBwZW9wbGUgc2hhbGwgZHdlbGwgYWxvbmUsIGFuZCBzaGFsbCBub3QgYmUgcmVja29uZWQgYW1vbmcgdGhlIG5hdGlvbnMuCldobyBjYW4gY291bnQgdGhlIGR1c3Qgb2YgSmFjb2IsIGFuZCB0aGUgbnVtYmVyIG9mIHRoZSBmb3VydGggcGFydCBvZiBJc3JhZWw/IExldCBtZSBkaWUgdGhlIGRlYXRoIG9mIHRoZSByaWdodGVvdXMsIGFuZCBsZXQgbXkgbGFzdCBlbmQgYmUgbGlrZSBoaXMhCkFuZCBCYWxhayBzYWlkIHVudG8gQmFsYWFtLCBXaGF0IGhhc3QgdGhvdSBkb25lIHVudG8gbWU/IEkgdG9vayB0aGVlIHRvIGN1cnNlIG1pbmUgZW5lbWllcywgYW5kLCBiZWhvbGQsIHRob3UgaGFzdCBibGVzc2VkIHRoZW0gYWx0b2dldGhlci4KQW5kIGhlIGFuc3dlcmVkIGFuZCBzYWlkLCBNdXN0IEkgbm90IHRha2UgaGVlZCB0byBzcGVhayB0aGF0IHdoaWNoIHRoZSBMT1JEIGhhdGggcHV0IGluIG15IG1vdXRoPwpBbmQgQmFsYWsgc2FpZCB1bnRvIGhpbSwgQ29tZSwgSSBwcmF5IHRoZWUsIHdpdGggbWUgdW50byBhbm90aGVyIHBsYWNlLCBmcm9tIHdoZW5jZSB0aG91IG1heWVzdCBzZWUgdGhlbTogdGhvdSBzaGFsdCBzZWUgYnV0IHRoZSB1dG1vc3QgcGFydCBvZiB0aGVtLCBhbmQgc2hhbHQgbm90IHNlZSB0aGVtIGFsbDogYW5kIGN1cnNlIG1lIHRoZW0gZnJvbSB0aGVuY2UuCkFuZCBoZSBicm91Z2h0IGhpbSBpbnRvIHRoZSBmaWVsZCBvZiBab3BoaW0sIHRvIHRoZSB0b3Agb2YgUGlzZ2FoLCBhbmQgYnVpbHQgc2V2ZW4gYWx0YXJzLCBhbmQgb2ZmZXJlZCBhIGJ1bGxvY2sgYW5kIGEgcmFtIG9uIGV2ZXJ5IGFsdGFyLgpBbmQgaGUgc2FpZCB1bnRvIEJhbGFrLCBTdGFuZCBoZXJlIGJ5IHRoeSBidXJudCBvZmZlcmluZywgd2hpbGUgSSBtZWV0IHRoZSBMT1JEIHlvbmRlci4KQW5kIHRoZSBMT1JEIG1ldCBCYWxhYW0sIGFuZCBwdXQgYSB3b3JkIGluIGhpcyBtb3V0aCwgYW5kIHNhaWQsIEdvIGFnYWluIHVudG8gQmFsYWssIGFuZCBzYXkgdGh1cy4KQW5kIHdoZW4gaGUgY2FtZSB0byBoaW0sIGJlaG9sZCwgaGUgc3Rvb2QgYnkgaGlzIGJ1cm50IG9mZmVyaW5nLCBhbmQgdGhlIHByaW5jZXMgb2YgTW9hYiB3aXRoIGhpbS4gQW5kIEJhbGFrIHNhaWQgdW50byBoaW0sIFdoYXQgaGF0aCB0aGUgTE9SRCBzcG9rZW4/CkFuZCBoZSB0b29rIHVwIGhpcyBwYXJhYmxlLCBhbmQgc2FpZCwgUmlzZSB1cCwgQmFsYWssIGFuZCBoZWFyOyBoZWFya2VuIHVudG8gbWUsIHRob3Ugc29uIG9mIFppcHBvcjoKR29kIGlzIG5vdCBhIG1hbiwgdGhhdCBoZSBzaG91bGQgbGllOyBuZWl0aGVyIHRoZSBzb24gb2YgbWFuLCB0aGF0IGhlIHNob3VsZCByZXBlbnQ6IGhhdGggaGUgc2FpZCwgYW5kIHNoYWxsIGhlIG5vdCBkbyBpdD8gb3IgaGF0aCBoZSBzcG9rZW4sIGFuZCBzaGFsbCBoZSBub3QgbWFrZSBpdCBnb29kPwpCZWhvbGQsIEkgaGF2ZSByZWNlaXZlZCBjb21tYW5kbWVudCB0byBibGVzczogYW5kIGhlIGhhdGggYmxlc3NlZDsgYW5kIEkgY2Fubm90IHJldmVyc2UgaXQuCkhlIGhhdGggbm90IGJlaGVsZCBpbmlxdWl0eSBpbiBKYWNvYiwgbmVpdGhlciBoYXRoIGhlIHNlZW4gcGVydmVyc2VuZXNzIGluIElzcmFlbDogdGhlIExPUkQgaGlzIEdvZCBpcyB3aXRoIGhpbSwgYW5kIHRoZSBzaG91dCBvZiBhIGtpbmcgaXMgYW1vbmcgdGhlbS4KR29kIGJyb3VnaHQgdGhlbSBvdXQgb2YgRWd5cHQ7IGhlIGhhdGggYXMgaXQgd2VyZSB0aGUgc3RyZW5ndGggb2YgYW4gdW5pY29ybi4KU3VyZWx5IHRoZXJlIGlzIG5vIGVuY2hhbnRtZW50IGFnYWluc3QgSmFjb2IsIG5laXRoZXIgaXMgdGhlcmUgYW55IGRpdmluYXRpb24gYWdhaW5zdCBJc3JhZWw6IGFjY29yZGluZyB0byB0aGlzIHRpbWUgaXQgc2hhbGwgYmUgc2FpZCBvZiBKYWNvYiBhbmQgb2YgSXNyYWVsLCBXaGF0IGhhdGggR29kIHdyb3VnaHQhCkJlaG9sZCwgdGhlIHBlb3BsZSBzaGFsbCByaXNlIHVwIGFzIGEgZ3JlYXQgbGlvbiwgYW5kIGxpZnQgdXAgaGltc2VsZiBhcyBhIHlvdW5nIGxpb246IGhlIHNoYWxsIG5vdCBsaWUgZG93biB1bnRpbCBoZSBlYXQgb2YgdGhlIHByZXksIGFuZCBkcmluayB0aGUgYmxvb2Qgb2YgdGhlIHNsYWluLgpBbmQgQmFsYWsgc2FpZCB1bnRvIEJhbGFhbSwgTmVpdGhlciBjdXJzZSB0aGVtIGF0IGFsbCwgbm9yIGJsZXNzIHRoZW0gYXQgYWxsLgpCdXQgQmFsYWFtIGFuc3dlcmVkIGFuZCBzYWlkIHVudG8gQmFsYWssIFRvbGQgbm90IEkgdGhlZSwgc2F5aW5nLCBBbGwgdGhhdCB0aGUgTE9SRCBzcGVha2V0aCwgdGhhdCBJIG11c3QgZG8/CkFuZCBCYWxhayBzYWlkIHVudG8gQmFsYWFtLCBDb21lLCBJIHByYXkgdGhlZSwgSSB3aWxsIGJyaW5nIHRoZWUgdW50byBhbm90aGVyIHBsYWNlOyBwZXJhZHZlbnR1cmUgaXQgd2lsbCBwbGVhc2UgR29kIHRoYXQgdGhvdSBtYXllc3QgY3Vyc2UgbWUgdGhlbSBmcm9tIHRoZW5jZS4KQW5kIEJhbGFrIGJyb3VnaHQgQmFsYWFtIHVudG8gdGhlIHRvcCBvZiBQZW9yLCB0aGF0IGxvb2tldGggdG93YXJkIEplc2hpbW9uLgpBbmQgQmFsYWFtIHNhaWQgdW50byBCYWxhaywgQnVpbGQgbWUgaGVyZSBzZXZlbiBhbHRhcnMsIGFuZCBwcmVwYXJlIG1lIGhlcmUgc2V2ZW4gYnVsbG9ja3MgYW5kIHNldmVuIHJhbXMuCkFuZCBCYWxhayBkaWQgYXMgQmFsYWFtIGhhZCBzYWlkLCBhbmQgb2ZmZXJlZCBhIGJ1bGxvY2sgYW5kIGEgcmFtIG9uIGV2ZXJ5IGFsdGFyLgpBbmQgd2hlbiBCYWxhYW0gc2F3IHRoYXQgaXQgcGxlYXNlZCB0aGUgTE9SRCB0byBibGVzcyBJc3JhZWwsIGhlIHdlbnQgbm90LCBhcyBhdCBvdGhlciB0aW1lcywgdG8gc2VlayBmb3IgZW5jaGFudG1lbnRzLCBidXQgaGUgc2V0IGhpcyBmYWNlIHRvd2FyZCB0aGUgd2lsZGVybmVzcy4KQW5kIEJhbGFhbSBsaWZ0ZWQgdXAgaGlzIGV5ZXMsIGFuZCBoZSBzYXcgSXNyYWVsIGFiaWRpbmcgaW4gaGlzIHRlbnRzIGFjY29yZGluZyB0byB0aGVpciB0cmliZXM7IGFuZCB0aGUgc3Bpcml0IG9mIEdvZCBjYW1lIHVwb24gaGltLgpBbmQgaGUgdG9vayB1cCBoaXMgcGFyYWJsZSwgYW5kIHNhaWQsIEJhbGFhbSB0aGUgc29uIG9mIEJlb3IgaGF0aCBzYWlkLCBhbmQgdGhlIG1hbiB3aG9zZSBleWVzIGFyZSBvcGVuIGhhdGggc2FpZDoKSGUgaGF0aCBzYWlkLCB3aGljaCBoZWFyZCB0aGUgd29yZHMgb2YgR29kLCB3aGljaCBzYXcgdGhlIHZpc2lvbiBvZiB0aGUgQWxtaWdodHksIGZhbGxpbmcgaW50byBhIHRyYW5jZSwgYnV0IGhhdmluZyBoaXMgZXllcyBvcGVuOgpIb3cgZ29vZGx5IGFyZSB0aHkgdGVudHMsIE8gSmFjb2IsIGFuZCB0aHkgdGFiZXJuYWNsZXMsIE8gSXNyYWVsIQpBcyB0aGUgdmFsbGV5cyBhcmUgdGhleSBzcHJlYWQgZm9ydGgsIGFzIGdhcmRlbnMgYnkgdGhlIHJpdmVyJ3Mgc2lkZSwgYXMgdGhlIHRyZWVzIG9mIGxpZ24gYWxvZXMgd2hpY2ggdGhlIExPUkQgaGF0aCBwbGFudGVkLCBhbmQgYXMgY2VkYXIgdHJlZXMgYmVzaWRlIHRoZSB3YXRlcnMuCkhlIHNoYWxsIHBvdXIgdGhlIHdhdGVyIG91dCBvZiBoaXMgYnVja2V0cywgYW5kIGhpcyBzZWVkIHNoYWxsIGJlIGluIG1hbnkgd2F0ZXJzLCBhbmQgaGlzIGtpbmcgc2hhbGwgYmUgaGlnaGVyIHRoYW4gQWdhZywgYW5kIGhpcyBraW5nZG9tIHNoYWxsIGJlIGV4YWx0ZWQuCkdvZCBicm91Z2h0IGhpbSBmb3J0aCBvdXQgb2YgRWd5cHQ7IGhlIGhhdGggYXMgaXQgd2VyZSB0aGUgc3RyZW5ndGggb2YgYW4gdW5pY29ybjogaGUgc2hhbGwgZWF0IHVwIHRoZSBuYXRpb25zIGhpcyBlbmVtaWVzLCBhbmQgc2hhbGwgYnJlYWsgdGhlaXIgYm9uZXMsIGFuZCBwaWVyY2UgdGhlbSB0aHJvdWdoIHdpdGggaGlzIGFycm93cy4KSGUgY291Y2hlZCwgaGUgbGF5IGRvd24gYXMgYSBsaW9uLCBhbmQgYXMgYSBncmVhdCBsaW9uOiB3aG8gc2hhbGwgc3RpciBoaW0gdXA/IEJsZXNzZWQgaXMgaGUgdGhhdCBibGVzc2V0aCB0aGVlLCBhbmQgY3Vyc2VkIGlzIGhlIHRoYXQgY3Vyc2V0aCB0aGVlLgpBbmQgQmFsYWsncyBhbmdlciB3YXMga2luZGxlZCBhZ2FpbnN0IEJhbGFhbSwgYW5kIGhlIHNtb3RlIGhpcyBoYW5kcyB0b2dldGhlcjogYW5kIEJhbGFrIHNhaWQgdW50byBCYWxhYW0sIEkgY2FsbGVkIHRoZWUgdG8gY3Vyc2UgbWluZSBlbmVtaWVzLCBhbmQsIGJlaG9sZCwgdGhvdSBoYXN0IGFsdG9nZXRoZXIgYmxlc3NlZCB0aGVtIHRoZXNlIHRocmVlIHRpbWVzLgpUaGVyZWZvcmUgbm93IGZsZWUgdGhvdSB0byB0aHkgcGxhY2U6IEkgdGhvdWdodCB0byBwcm9tb3RlIHRoZWUgdW50byBncmVhdCBob25vdXI7IGJ1dCwgbG8sIHRoZSBMT1JEIGhhdGgga2VwdCB0aGVlIGJhY2sgZnJvbSBob25vdXIuCkFuZCBCYWxhYW0gc2FpZCB1bnRvIEJhbGFrLCBTcGFrZSBJIG5vdCBhbHNvIHRvIHRoeSBtZXNzZW5nZXJzIHdoaWNoIHRob3Ugc2VudGVzdCB1bnRvIG1lLCBzYXlpbmcsCklmIEJhbGFrIHdvdWxkIGdpdmUgbWUgaGlzIGhvdXNlIGZ1bGwgb2Ygc2lsdmVyIGFuZCBnb2xkLCBJIGNhbm5vdCBnbyBiZXlvbmQgdGhlIGNvbW1hbmRtZW50IG9mIHRoZSBMT1JELCB0byBkbyBlaXRoZXIgZ29vZCBvciBiYWQgb2YgbWluZSBvd24gbWluZDsgYnV0IHdoYXQgdGhlIExPUkQgc2FpdGgsIHRoYXQgd2lsbCBJIHNwZWFrPwpBbmQgbm93LCBiZWhvbGQsIEkgZ28gdW50byBteSBwZW9wbGU6IGNvbWUgdGhlcmVmb3JlLCBhbmQgSSB3aWxsIGFkdmVydGlzZSB0aGVlIHdoYXQgdGhpcyBwZW9wbGUgc2hhbGwgZG8gdG8gdGh5IHBlb3BsZSBpbiB0aGUgbGF0dGVyIGRheXMuCkFuZCBoZSB0b29rIHVwIGhpcyBwYXJhYmxlLCBhbmQgc2FpZCwgQmFsYWFtIHRoZSBzb24gb2YgQmVvciBoYXRoIHNhaWQsIGFuZCB0aGUgbWFuIHdob3NlIGV5ZXMgYXJlIG9wZW4gaGF0aCBzYWlkOgpIZSBoYXRoIHNhaWQsIHdoaWNoIGhlYXJkIHRoZSB3b3JkcyBvZiBHb2QsIGFuZCBrbmV3IHRoZSBrbm93bGVkZ2Ugb2YgdGhlIG1vc3QgSGlnaCwgd2hpY2ggc2F3IHRoZSB2aXNpb24gb2YgdGhlIEFsbWlnaHR5LCBmYWxsaW5nIGludG8gYSB0cmFuY2UsIGJ1dCBoYXZpbmcgaGlzIGV5ZXMgb3BlbjoKSSBzaGFsbCBzZWUgaGltLCBidXQgbm90IG5vdzogSSBzaGFsbCBiZWhvbGQgaGltLCBidXQgbm90IG5pZ2g6IHRoZXJlIHNoYWxsIGNvbWUgYSBTdGFyIG91dCBvZiBKYWNvYiwgYW5kIGEgU2NlcHRyZSBzaGFsbCByaXNlIG91dCBvZiBJc3JhZWwsIGFuZCBzaGFsbCBzbWl0ZSB0aGUgY29ybmVycyBvZiBNb2FiLCBhbmQgZGVzdHJveSBhbGwgdGhlIGNoaWxkcmVuIG9mIFNoZXRoLgpBbmQgRWRvbSBzaGFsbCBiZSBhIHBvc3Nlc3Npb24sIFNlaXIgYWxzbyBzaGFsbCBiZSBhIHBvc3Nlc3Npb24gZm9yIGhpcyBlbmVtaWVzOyBhbmQgSXNyYWVsIHNoYWxsIGRvIHZhbGlhbnRseS4KT3V0IG9mIEphY29iIHNoYWxsIGNvbWUgaGUgdGhhdCBzaGFsbCBoYXZlIGRvbWluaW9uLCBhbmQgc2hhbGwgZGVzdHJveSBoaW0gdGhhdCByZW1haW5ldGggb2YgdGhlIGNpdHkuCkFuZCB3aGVuIGhlIGxvb2tlZCBvbiBBbWFsZWssIGhlIHRvb2sgdXAgaGlzIHBhcmFibGUsIGFuZCBzYWlkLCBBbWFsZWsgd2FzIHRoZSBmaXJzdCBvZiB0aGUgbmF0aW9uczsgYnV0IGhpcyBsYXR0ZXIgZW5kIHNoYWxsIGJlIHRoYXQgaGUgcGVyaXNoIGZvciBldmVyLgpBbmQgaGUgbG9va2VkIG9uIHRoZSBLZW5pdGVzLCBhbmQgdG9vayB1cCBoaXMgcGFyYWJsZSwgYW5kIHNhaWQsIFN0cm9uZyBpcyB0aHkgZHdlbGxpbmdwbGFjZSwgYW5kIHRob3UgcHV0dGVzdCB0aHkgbmVzdCBpbiBhIHJvY2suCk5ldmVydGhlbGVzcyB0aGUgS2VuaXRlIHNoYWxsIGJlIHdhc3RlZCwgdW50aWwgQXNzaHVyIHNoYWxsIGNhcnJ5IHRoZWUgYXdheSBjYXB0aXZlLgpBbmQgaGUgdG9vayB1cCBoaXMgcGFyYWJsZSwgYW5kIHNhaWQsIEFsYXMsIHdobyBzaGFsbCBsaXZlIHdoZW4gR29kIGRvZXRoIHRoaXMhCkFuZCBzaGlwcyBzaGFsbCBjb21lIGZyb20gdGhlIGNvYXN0IG9mIENoaXR0aW0sIGFuZCBzaGFsbCBhZmZsaWN0IEFzc2h1ciwgYW5kIHNoYWxsIGFmZmxpY3QgRWJlciwgYW5kIGhlIGFsc28gc2hhbGwgcGVyaXNoIGZvciBldmVyLgpBbmQgQmFsYWFtIHJvc2UgdXAsIGFuZCB3ZW50IGFuZCByZXR1cm5lZCB0byBoaXMgcGxhY2U6IGFuZCBCYWxhayBhbHNvIHdlbnQgaGlzIHdheS4KQW5kIElzcmFlbCBhYm9kZSBpbiBTaGl0dGltLCBhbmQgdGhlIHBlb3BsZSBiZWdhbiB0byBjb21taXQgd2hvcmVkb20gd2l0aCB0aGUgZGF1Z2h0ZXJzIG9mIE1vYWIuCkFuZCB0aGV5IGNhbGxlZCB0aGUgcGVvcGxlIHVudG8gdGhlIHNhY3JpZmljZXMgb2YgdGhlaXIgZ29kczogYW5kIHRoZSBwZW9wbGUgZGlkIGVhdCwgYW5kIGJvd2VkIGRvd24gdG8gdGhlaXIgZ29kcy4KQW5kIElzcmFlbCBqb2luZWQgaGltc2VsZiB1bnRvIEJhYWxwZW9yOiBhbmQgdGhlIGFuZ2VyIG9mIHRoZSBMT1JEIHdhcyBraW5kbGVkIGFnYWluc3QgSXNyYWVsLgpBbmQgdGhlIExPUkQgc2FpZCB1bnRvIE1vc2VzLCBUYWtlIGFsbCB0aGUgaGVhZHMgb2YgdGhlIHBlb3BsZSwgYW5kIGhhbmcgdGhlbSB1cCBiZWZvcmUgdGhlIExPUkQgYWdhaW5zdCB0aGUgc3VuLCB0aGF0IHRoZSBmaWVyY2UgYW5nZXIgb2YgdGhlIExPUkQgbWF5IGJlIHR1cm5lZCBhd2F5IGZyb20gSXNyYWVsLgpBbmQgTW9zZXMgc2FpZCB1bnRvIHRoZSBqdWRnZXMgb2YgSXNyYWVsLCBTbGF5IHllIGV2ZXJ5IG9uZSBoaXMgbWVuIHRoYXQgd2VyZSBqb2luZWQgdW50byBCYWFscGVvci4KQW5kLCBiZWhvbGQsIG9uZSBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGNhbWUgYW5kIGJyb3VnaHQgdW50byBoaXMgYnJldGhyZW4gYSBNaWRpYW5pdGlzaCB3b21hbiBpbiB0aGUgc2lnaHQgb2YgTW9zZXMsIGFuZCBpbiB0aGUgc2lnaHQgb2YgYWxsIHRoZSBjb25ncmVnYXRpb24gb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgd2hvIHdlcmUgd2VlcGluZyBiZWZvcmUgdGhlIGRvb3Igb2YgdGhlIHRhYmVybmFjbGUgb2YgdGhlIGNvbmdyZWdhdGlvbi4KQW5kIHdoZW4gUGhpbmVoYXMsIHRoZSBzb24gb2YgRWxlYXphciwgdGhlIHNvbiBvZiBBYXJvbiB0aGUgcHJpZXN0LCBzYXcgaXQsIGhlIHJvc2UgdXAgZnJvbSBhbW9uZyB0aGUgY29uZ3JlZ2F0aW9uLCBhbmQgdG9vayBhIGphdmVsaW4gaW4gaGlzIGhhbmQ7CkFuZCBoZSB3ZW50IGFmdGVyIHRoZSBtYW4gb2YgSXNyYWVsIGludG8gdGhlIHRlbnQsIGFuZCB0aHJ1c3QgYm90aCBvZiB0aGVtIHRocm91Z2gsIHRoZSBtYW4gb2YgSXNyYWVsLCBhbmQgdGhlIHdvbWFuIHRocm91Z2ggaGVyIGJlbGx5LiBTbyB0aGUgcGxhZ3VlIHdhcyBzdGF5ZWQgZnJvbSB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLgpBbmQgdGhvc2UgdGhhdCBkaWVkIGluIHRoZSBwbGFndWUgd2VyZSB0d2VudHkgYW5kIGZvdXIgdGhvdXNhbmQuCkFuZCB0aGUgTE9SRCBzcGFrZSB1bnRvIE1vc2VzLCBzYXlpbmcsClBoaW5laGFzLCB0aGUgc29uIG9mIEVsZWF6YXIsIHRoZSBzb24gb2YgQWFyb24gdGhlIHByaWVzdCwgaGF0aCB0dXJuZWQgbXkgd3JhdGggYXdheSBmcm9tIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIHdoaWxlIGhlIHdhcyB6ZWFsb3VzIGZvciBteSBzYWtlIGFtb25nIHRoZW0sIHRoYXQgSSBjb25zdW1lZCBub3QgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBpbiBteSBqZWFsb3VzeS4KV2hlcmVmb3JlIHNheSwgQmVob2xkLCBJIGdpdmUgdW50byBoaW0gbXkgY292ZW5hbnQgb2YgcGVhY2U6CkFuZCBoZSBzaGFsbCBoYXZlIGl0LCBhbmQgaGlzIHNlZWQgYWZ0ZXIgaGltLCBldmVuIHRoZSBjb3ZlbmFudCBvZiBhbiBldmVybGFzdGluZyBwcmllc3Rob29kOyBiZWNhdXNlIGhlIHdhcyB6ZWFsb3VzIGZvciBoaXMgR29kLCBhbmQgbWFkZSBhbiBhdG9uZW1lbnQgZm9yIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwuCk5vdyB0aGUgbmFtZSBvZiB0aGUgSXNyYWVsaXRlIHRoYXQgd2FzIHNsYWluLCBldmVuIHRoYXQgd2FzIHNsYWluIHdpdGggdGhlIE1pZGlhbml0aXNoIHdvbWFuLCB3YXMgWmltcmksIHRoZSBzb24gb2YgU2FsdSwgYSBwcmluY2Ugb2YgYSBjaGllZiBob3VzZSBhbW9uZyB0aGUgU2ltZW9uaXRlcy4KQW5kIHRoZSBuYW1lIG9mIHRoZSBNaWRpYW5pdGlzaCB3b21hbiB0aGF0IHdhcyBzbGFpbiB3YXMgQ296YmksIHRoZSBkYXVnaHRlciBvZiBadXI7IGhlIHdhcyBoZWFkIG92ZXIgYSBwZW9wbGUsIGFuZCBvZiBhIGNoaWVmIGhvdXNlIGluIE1pZGlhbi4KQW5kIHRoZSBMT1JEIHNwYWtlIHVudG8gTW9zZXMsIHNheWluZywKVmV4IHRoZSBNaWRpYW5pdGVzLCBhbmQgc21pdGUgdGhlbToKRm9yIHRoZXkgdmV4IHlvdSB3aXRoIHRoZWlyIHdpbGVzLCB3aGVyZXdpdGggdGhleSBoYXZlIGJlZ3VpbGVkIHlvdSBpbiB0aGUgbWF0dGVyIG9mIFBlb3IsIGFuZCBpbiB0aGUgbWF0dGVyIG9mIENvemJpLCB0aGUgZGF1Z2h0ZXIgb2YgYSBwcmluY2Ugb2YgTWlkaWFuLCB0aGVpciBzaXN0ZXIsIHdoaWNoIHdhcyBzbGFpbiBpbiB0aGUgZGF5IG9mIHRoZSBwbGFndWUgZm9yIFBlb3IncyBzYWtlLgpBbmQgaXQgY2FtZSB0byBwYXNzIGFmdGVyIHRoZSBwbGFndWUsIHRoYXQgdGhlIExPUkQgc3Bha2UgdW50byBNb3NlcyBhbmQgdW50byBFbGVhemFyIHRoZSBzb24gb2YgQWFyb24gdGhlIHByaWVzdCwgc2F5aW5nLApUYWtlIHRoZSBzdW0gb2YgYWxsIHRoZSBjb25ncmVnYXRpb24gb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgZnJvbSB0d2VudHkgeWVhcnMgb2xkIGFuZCB1cHdhcmQsIHRocm91Z2hvdXQgdGhlaXIgZmF0aGVycycgaG91c2UsIGFsbCB0aGF0IGFyZSBhYmxlIHRvIGdvIHRvIHdhciBpbiBJc3JhZWwuCkFuZCBNb3NlcyBhbmQgRWxlYXphciB0aGUgcHJpZXN0IHNwYWtlIHdpdGggdGhlbSBpbiB0aGUgcGxhaW5zIG9mIE1vYWIgYnkgSm9yZGFuIG5lYXIgSmVyaWNobywgc2F5aW5nLApUYWtlIHRoZSBzdW0gb2YgdGhlIHBlb3BsZSwgZnJvbSB0d2VudHkgeWVhcnMgb2xkIGFuZCB1cHdhcmQ7IGFzIHRoZSBMT1JEIGNvbW1hbmRlZCBNb3NlcyBhbmQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgd2hpY2ggd2VudCBmb3J0aCBvdXQgb2YgdGhlIGxhbmQgb2YgRWd5cHQuClJldWJlbiwgdGhlIGVsZGVzdCBzb24gb2YgSXNyYWVsOiB0aGUgY2hpbGRyZW4gb2YgUmV1YmVuOyBIYW5vY2gsIG9mIHdob20gY29tZXRoIHRoZSBmYW1pbHkgb2YgdGhlIEhhbm9jaGl0ZXM6IG9mIFBhbGx1LCB0aGUgZmFtaWx5IG9mIHRoZSBQYWxsdWl0ZXM6Ck9mIEhlenJvbiwgdGhlIGZhbWlseSBvZiB0aGUgSGV6cm9uaXRlczogb2YgQ2FybWksIHRoZSBmYW1pbHkgb2YgdGhlIENhcm1pdGVzLgpUaGVzZSBhcmUgdGhlIGZhbWlsaWVzIG9mIHRoZSBSZXViZW5pdGVzOiBhbmQgdGhleSB0aGF0IHdlcmUgbnVtYmVyZWQgb2YgdGhlbSB3ZXJlIGZvcnR5IGFuZCB0aHJlZSB0aG91c2FuZCBhbmQgc2V2ZW4gaHVuZHJlZCBhbmQgdGhpcnR5LgpBbmQgdGhlIHNvbnMgb2YgUGFsbHU7IEVsaWFiLgpBbmQgdGhlIHNvbnMgb2YgRWxpYWI7IE5lbXVlbCwgYW5kIERhdGhhbiwgYW5kIEFiaXJhbS4gVGhpcyBpcyB0aGF0IERhdGhhbiBhbmQgQWJpcmFtLCB3aGljaCB3ZXJlIGZhbW91cyBpbiB0aGUgY29uZ3JlZ2F0aW9uLCB3aG8gc3Ryb3ZlIGFnYWluc3QgTW9zZXMgYW5kIGFnYWluc3QgQWFyb24gaW4gdGhlIGNvbXBhbnkgb2YgS29yYWgsIHdoZW4gdGhleSBzdHJvdmUgYWdhaW5zdCB0aGUgTE9SRDoKQW5kIHRoZSBlYXJ0aCBvcGVuZWQgaGVyIG1vdXRoLCBhbmQgc3dhbGxvd2VkIHRoZW0gdXAgdG9nZXRoZXIgd2l0aCBLb3JhaCwgd2hlbiB0aGF0IGNvbXBhbnkgZGllZCwgd2hhdCB0aW1lIHRoZSBmaXJlIGRldm91cmVkIHR3byBodW5kcmVkIGFuZCBmaWZ0eSBtZW46IGFuZCB0aGV5IGJlY2FtZSBhIHNpZ24uCk5vdHdpdGhzdGFuZGluZyB0aGUgY2hpbGRyZW4gb2YgS29yYWggZGllZCBub3QuClRoZSBzb25zIG9mIFNpbWVvbiBhZnRlciB0aGVpciBmYW1pbGllczogb2YgTmVtdWVsLCB0aGUgZmFtaWx5IG9mIHRoZSBOZW11ZWxpdGVzOiBvZiBKYW1pbiwgdGhlIGZhbWlseSBvZiB0aGUgSmFtaW5pdGVzOiBvZiBKYWNoaW4sIHRoZSBmYW1pbHkgb2YgdGhlIEphY2hpbml0ZXM6Ck9mIFplcmFoLCB0aGUgZmFtaWx5IG9mIHRoZSBaYXJoaXRlczogb2YgU2hhdWwsIHRoZSBmYW1pbHkgb2YgdGhlIFNoYXVsaXRlcy4KVGhlc2UgYXJlIHRoZSBmYW1pbGllcyBvZiB0aGUgU2ltZW9uaXRlcywgdHdlbnR5IGFuZCB0d28gdGhvdXNhbmQgYW5kIHR3byBodW5kcmVkLgpUaGUgY2hpbGRyZW4gb2YgR2FkIGFmdGVyIHRoZWlyIGZhbWlsaWVzOiBvZiBaZXBob24sIHRoZSBmYW1pbHkgb2YgdGhlIFplcGhvbml0ZXM6IG9mIEhhZ2dpLCB0aGUgZmFtaWx5IG9mIHRoZSBIYWdnaXRlczogb2YgU2h1bmksIHRoZSBmYW1pbHkgb2YgdGhlIFNodW5pdGVzOgpPZiBPem5pLCB0aGUgZmFtaWx5IG9mIHRoZSBPem5pdGVzOiBvZiBFcmksIHRoZSBmYW1pbHkgb2YgdGhlIEVyaXRlczoKT2YgQXJvZCwgdGhlIGZhbWlseSBvZiB0aGUgQXJvZGl0ZXM6IG9mIEFyZWxpLCB0aGUgZmFtaWx5IG9mIHRoZSBBcmVsaXRlcy4KVGhlc2UgYXJlIHRoZSBmYW1pbGllcyBvZiB0aGUgY2hpbGRyZW4gb2YgR2FkIGFjY29yZGluZyB0byB0aG9zZSB0aGF0IHdlcmUgbnVtYmVyZWQgb2YgdGhlbSwgZm9ydHkgdGhvdXNhbmQgYW5kIGZpdmUgaHVuZHJlZC4KVGhlIHNvbnMgb2YgSnVkYWggd2VyZSBFciBhbmQgT25hbjogYW5kIEVyIGFuZCBPbmFuIGRpZWQgaW4gdGhlIGxhbmQgb2YgQ2FuYWFuLgpBbmQgdGhlIHNvbnMgb2YgSnVkYWggYWZ0ZXIgdGhlaXIgZmFtaWxpZXMgd2VyZTsgb2YgU2hlbGFoLCB0aGUgZmFtaWx5IG9mIHRoZSBTaGVsYW5pdGVzOiBvZiBQaGFyZXosIHRoZSBmYW1pbHkgb2YgdGhlIFBoYXJ6aXRlczogb2YgWmVyYWgsIHRoZSBmYW1pbHkgb2YgdGhlIFphcmhpdGVzLgpBbmQgdGhlIHNvbnMgb2YgUGhhcmV6IHdlcmU7IG9mIEhlenJvbiwgdGhlIGZhbWlseSBvZiB0aGUgSGV6cm9uaXRlczogb2YgSGFtdWwsIHRoZSBmYW1pbHkgb2YgdGhlIEhhbXVsaXRlcy4KVGhlc2UgYXJlIHRoZSBmYW1pbGllcyBvZiBKdWRhaCBhY2NvcmRpbmcgdG8gdGhvc2UgdGhhdCB3ZXJlIG51bWJlcmVkIG9mIHRoZW0sIHRocmVlc2NvcmUgYW5kIHNpeHRlZW4gdGhvdXNhbmQgYW5kIGZpdmUgaHVuZHJlZC4KT2YgdGhlIHNvbnMgb2YgSXNzYWNoYXIgYWZ0ZXIgdGhlaXIgZmFtaWxpZXM6IG9mIFRvbGEsIHRoZSBmYW1pbHkgb2YgdGhlIFRvbGFpdGVzOiBvZiBQdWEsIHRoZSBmYW1pbHkgb2YgdGhlIFB1bml0ZXM6Ck9mIEphc2h1YiwgdGhlIGZhbWlseSBvZiB0aGUgSmFzaHViaXRlczogb2YgU2hpbXJvbiwgdGhlIGZhbWlseSBvZiB0aGUgU2hpbXJvbml0ZXMuClRoZXNlIGFyZSB0aGUgZmFtaWxpZXMgb2YgSXNzYWNoYXIgYWNjb3JkaW5nIHRvIHRob3NlIHRoYXQgd2VyZSBudW1iZXJlZCBvZiB0aGVtLCB0aHJlZXNjb3JlIGFuZCBmb3VyIHRob3VzYW5kIGFuZCB0aHJlZSBodW5kcmVkLgpPZiB0aGUgc29ucyBvZiBaZWJ1bHVuIGFmdGVyIHRoZWlyIGZhbWlsaWVzOiBvZiBTZXJlZCwgdGhlIGZhbWlseSBvZiB0aGUgU2FyZGl0ZXM6IG9mIEVsb24sIHRoZSBmYW1pbHkgb2YgdGhlIEVsb25pdGVzOiBvZiBKYWhsZWVsLCB0aGUgZmFtaWx5IG9mIHRoZSBKYWhsZWVsaXRlcy4KVGhlc2UgYXJlIHRoZSBmYW1pbGllcyBvZiB0aGUgWmVidWx1bml0ZXMgYWNjb3JkaW5nIHRvIHRob3NlIHRoYXQgd2VyZSBudW1iZXJlZCBvZiB0aGVtLCB0aHJlZXNjb3JlIHRob3VzYW5kIGFuZCBmaXZlIGh1bmRyZWQuClRoZSBzb25zIG9mIEpvc2VwaCBhZnRlciB0aGVpciBmYW1pbGllcyB3ZXJlIE1hbmFzc2VoIGFuZCBFcGhyYWltLgpPZiB0aGUgc29ucyBvZiBNYW5hc3NlaDogb2YgTWFjaGlyLCB0aGUgZmFtaWx5IG9mIHRoZSBNYWNoaXJpdGVzOiBhbmQgTWFjaGlyIGJlZ2F0IEdpbGVhZDogb2YgR2lsZWFkIGNvbWUgdGhlIGZhbWlseSBvZiB0aGUgR2lsZWFkaXRlcy4KVGhlc2UgYXJlIHRoZSBzb25zIG9mIEdpbGVhZDogb2YgSmVlemVyLCB0aGUgZmFtaWx5IG9mIHRoZSBKZWV6ZXJpdGVzOiBvZiBIZWxlaywgdGhlIGZhbWlseSBvZiB0aGUgSGVsZWtpdGVzOgpBbmQgb2YgQXNyaWVsLCB0aGUgZmFtaWx5IG9mIHRoZSBBc3JpZWxpdGVzOiBhbmQgb2YgU2hlY2hlbSwgdGhlIGZhbWlseSBvZiB0aGUgU2hlY2hlbWl0ZXM6CkFuZCBvZiBTaGVtaWRhLCB0aGUgZmFtaWx5IG9mIHRoZSBTaGVtaWRhaXRlczogYW5kIG9mIEhlcGhlciwgdGhlIGZhbWlseSBvZiB0aGUgSGVwaGVyaXRlcy4KQW5kIFplbG9waGVoYWQgdGhlIHNvbiBvZiBIZXBoZXIgaGFkIG5vIHNvbnMsIGJ1dCBkYXVnaHRlcnM6IGFuZCB0aGUgbmFtZXMgb2YgdGhlIGRhdWdodGVycyBvZiBaZWxvcGhlaGFkIHdlcmUgTWFobGFoLCBhbmQgTm9haCwgSG9nbGFoLCBNaWxjYWgsIGFuZCBUaXJ6YWguClRoZXNlIGFyZSB0aGUgZmFtaWxpZXMgb2YgTWFuYXNzZWgsIGFuZCB0aG9zZSB0aGF0IHdlcmUgbnVtYmVyZWQgb2YgdGhlbSwgZmlmdHkgYW5kIHR3byB0aG91c2FuZCBhbmQgc2V2ZW4gaHVuZHJlZC4KVGhlc2UgYXJlIHRoZSBzb25zIG9mIEVwaHJhaW0gYWZ0ZXIgdGhlaXIgZmFtaWxpZXM6IG9mIFNodXRoZWxhaCwgdGhlIGZhbWlseSBvZiB0aGUgU2h1dGhhbGhpdGVzOiBvZiBCZWNoZXIsIHRoZSBmYW1pbHkgb2YgdGhlIEJhY2hyaXRlczogb2YgVGFoYW4sIHRoZSBmYW1pbHkgb2YgdGhlIFRhaGFuaXRlcy4KQW5kIHRoZXNlIGFyZSB0aGUgc29ucyBvZiBTaHV0aGVsYWg6IG9mIEVyYW4sIHRoZSBmYW1pbHkgb2YgdGhlIEVyYW5pdGVzLgpUaGVzZSBhcmUgdGhlIGZhbWlsaWVzIG9mIHRoZSBzb25zIG9mIEVwaHJhaW0gYWNjb3JkaW5nIHRvIHRob3NlIHRoYXQgd2VyZSBudW1iZXJlZCBvZiB0aGVtLCB0aGlydHkgYW5kIHR3byB0aG91c2FuZCBhbmQgZml2ZSBodW5kcmVkLiBUaGVzZSBhcmUgdGhlIHNvbnMgb2YgSm9zZXBoIGFmdGVyIHRoZWlyIGZhbWlsaWVzLgpUaGUgc29ucyBvZiBCZW5qYW1pbiBhZnRlciB0aGVpciBmYW1pbGllczogb2YgQmVsYSwgdGhlIGZhbWlseSBvZiB0aGUgQmVsYWl0ZXM6IG9mIEFzaGJlbCwgdGhlIGZhbWlseSBvZiB0aGUgQXNoYmVsaXRlczogb2YgQWhpcmFtLCB0aGUgZmFtaWx5IG9mIHRoZSBBaGlyYW1pdGVzOgpPZiBTaHVwaGFtLCB0aGUgZmFtaWx5IG9mIHRoZSBTaHVwaGFtaXRlczogb2YgSHVwaGFtLCB0aGUgZmFtaWx5IG9mIHRoZSBIdXBoYW1pdGVzLgpBbmQgdGhlIHNvbnMgb2YgQmVsYSB3ZXJlIEFyZCBhbmQgTmFhbWFuOiBvZiBBcmQsIHRoZSBmYW1pbHkgb2YgdGhlIEFyZGl0ZXM6IGFuZCBvZiBOYWFtYW4sIHRoZSBmYW1pbHkgb2YgdGhlIE5hYW1pdGVzLgpUaGVzZSBhcmUgdGhlIHNvbnMgb2YgQmVuamFtaW4gYWZ0ZXIgdGhlaXIgZmFtaWxpZXM6IGFuZCB0aGV5IHRoYXQgd2VyZSBudW1iZXJlZCBvZiB0aGVtIHdlcmUgZm9ydHkgYW5kIGZpdmUgdGhvdXNhbmQgYW5kIHNpeCBodW5kcmVkLgpUaGVzZSBhcmUgdGhlIHNvbnMgb2YgRGFuIGFmdGVyIHRoZWlyIGZhbWlsaWVzOiBvZiBTaHVoYW0sIHRoZSBmYW1pbHkgb2YgdGhlIFNodWhhbWl0ZXMuIFRoZXNlIGFyZSB0aGUgZmFtaWxpZXMgb2YgRGFuIGFmdGVyIHRoZWlyIGZhbWlsaWVzLgpBbGwgdGhlIGZhbWlsaWVzIG9mIHRoZSBTaHVoYW1pdGVzLCBhY2NvcmRpbmcgdG8gdGhvc2UgdGhhdCB3ZXJlIG51bWJlcmVkIG9mIHRoZW0sIHdlcmUgdGhyZWVzY29yZSBhbmQgZm91ciB0aG91c2FuZCBhbmQgZm91ciBodW5kcmVkLgpPZiB0aGUgY2hpbGRyZW4gb2YgQXNoZXIgYWZ0ZXIgdGhlaXIgZmFtaWxpZXM6IG9mIEppbW5hLCB0aGUgZmFtaWx5IG9mIHRoZSBKaW1uaXRlczogb2YgSmVzdWksIHRoZSBmYW1pbHkgb2YgdGhlIEplc3VpdGVzOiBvZiBCZXJpYWgsIHRoZSBmYW1pbHkgb2YgdGhlIEJlcmlpdGVzLgpPZiB0aGUgc29ucyBvZiBCZXJpYWg6IG9mIEhlYmVyLCB0aGUgZmFtaWx5IG9mIHRoZSBIZWJlcml0ZXM6IG9mIE1hbGNoaWVsLCB0aGUgZmFtaWx5IG9mIHRoZSBNYWxjaGllbGl0ZXMuCkFuZCB0aGUgbmFtZSBvZiB0aGUgZGF1Z2h0ZXIgb2YgQXNoZXIgd2FzIFNhcmFoLgpUaGVzZSBhcmUgdGhlIGZhbWlsaWVzIG9mIHRoZSBzb25zIG9mIEFzaGVyIGFjY29yZGluZyB0byB0aG9zZSB0aGF0IHdlcmUgbnVtYmVyZWQgb2YgdGhlbTsgd2hvIHdlcmUgZmlmdHkgYW5kIHRocmVlIHRob3VzYW5kIGFuZCBmb3VyIGh1bmRyZWQuCk9mIHRoZSBzb25zIG9mIE5hcGh0YWxpIGFmdGVyIHRoZWlyIGZhbWlsaWVzOiBvZiBKYWh6ZWVsLCB0aGUgZmFtaWx5IG9mIHRoZSBKYWh6ZWVsaXRlczogb2YgR3VuaSwgdGhlIGZhbWlseSBvZiB0aGUgR3VuaXRlczoKT2YgSmV6ZXIsIHRoZSBmYW1pbHkgb2YgdGhlIEplemVyaXRlczogb2YgU2hpbGxlbSwgdGhlIGZhbWlseSBvZiB0aGUgU2hpbGxlbWl0ZXMuClRoZXNlIGFyZSB0aGUgZmFtaWxpZXMgb2YgTmFwaHRhbGkgYWNjb3JkaW5nIHRvIHRoZWlyIGZhbWlsaWVzOiBhbmQgdGhleSB0aGF0IHdlcmUgbnVtYmVyZWQgb2YgdGhlbSB3ZXJlIGZvcnR5IGFuZCBmaXZlIHRob3VzYW5kIGFuZCBmb3VyIGh1bmRyZWQuClRoZXNlIHdlcmUgdGhlIG51bWJlcmVkIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIHNpeCBodW5kcmVkIHRob3VzYW5kIGFuZCBhIHRob3VzYW5kIHNldmVuIGh1bmRyZWQgYW5kIHRoaXJ0eS4KQW5kIHRoZSBMT1JEIHNwYWtlIHVudG8gTW9zZXMsIHNheWluZywKVW50byB0aGVzZSB0aGUgbGFuZCBzaGFsbCBiZSBkaXZpZGVkIGZvciBhbiBpbmhlcml0YW5jZSBhY2NvcmRpbmcgdG8gdGhlIG51bWJlciBvZiBuYW1lcy4KVG8gbWFueSB0aG91IHNoYWx0IGdpdmUgdGhlIG1vcmUgaW5oZXJpdGFuY2UsIGFuZCB0byBmZXcgdGhvdSBzaGFsdCBnaXZlIHRoZSBsZXNzIGluaGVyaXRhbmNlOiB0byBldmVyeSBvbmUgc2hhbGwgaGlzIGluaGVyaXRhbmNlIGJlIGdpdmVuIGFjY29yZGluZyB0byB0aG9zZSB0aGF0IHdlcmUgbnVtYmVyZWQgb2YgaGltLgpOb3R3aXRoc3RhbmRpbmcgdGhlIGxhbmQgc2hhbGwgYmUgZGl2aWRlZCBieSBsb3Q6IGFjY29yZGluZyB0byB0aGUgbmFtZXMgb2YgdGhlIHRyaWJlcyBvZiB0aGVpciBmYXRoZXJzIHRoZXkgc2hhbGwgaW5oZXJpdC4KQWNjb3JkaW5nIHRvIHRoZSBsb3Qgc2hhbGwgdGhlIHBvc3Nlc3Npb24gdGhlcmVvZiBiZSBkaXZpZGVkIGJldHdlZW4gbWFueSBhbmQgZmV3LgpBbmQgdGhlc2UgYXJlIHRoZXkgdGhhdCB3ZXJlIG51bWJlcmVkIG9mIHRoZSBMZXZpdGVzIGFmdGVyIHRoZWlyIGZhbWlsaWVzOiBvZiBHZXJzaG9uLCB0aGUgZmFtaWx5IG9mIHRoZSBHZXJzaG9uaXRlczogb2YgS29oYXRoLCB0aGUgZmFtaWx5IG9mIHRoZSBLb2hhdGhpdGVzOiBvZiBNZXJhcmksIHRoZSBmYW1pbHkgb2YgdGhlIE1lcmFyaXRlcy4KVGhlc2UgYXJlIHRoZSBmYW1pbGllcyBvZiB0aGUgTGV2aXRlczogdGhlIGZhbWlseSBvZiB0aGUgTGlibml0ZXMsIHRoZSBmYW1pbHkgb2YgdGhlIEhlYnJvbml0ZXMsIHRoZSBmYW1pbHkgb2YgdGhlIE1haGxpdGVzLCB0aGUgZmFtaWx5IG9mIHRoZSBNdXNoaXRlcywgdGhlIGZhbWlseSBvZiB0aGUgS29yYXRoaXRlcy4gQW5kIEtvaGF0aCBiZWdhdCBBbXJhbS4KQW5kIHRoZSBuYW1lIG9mIEFtcmFtJ3Mgd2lmZSB3YXMgSm9jaGViZWQsIHRoZSBkYXVnaHRlciBvZiBMZXZpLCB3aG9tIGhlciBtb3RoZXIgYmFyZSB0byBMZXZpIGluIEVneXB0OiBhbmQgc2hlIGJhcmUgdW50byBBbXJhbSBBYXJvbiBhbmQgTW9zZXMsIGFuZCBNaXJpYW0gdGhlaXIgc2lzdGVyLgpBbmQgdW50byBBYXJvbiB3YXMgYm9ybiBOYWRhYiwgYW5kIEFiaWh1LCBFbGVhemFyLCBhbmQgSXRoYW1hci4KQW5kIE5hZGFiIGFuZCBBYmlodSBkaWVkLCB3aGVuIHRoZXkgb2ZmZXJlZCBzdHJhbmdlIGZpcmUgYmVmb3JlIHRoZSBMT1JELgpBbmQgdGhvc2UgdGhhdCB3ZXJlIG51bWJlcmVkIG9mIHRoZW0gd2VyZSB0d2VudHkgYW5kIHRocmVlIHRob3VzYW5kLCBhbGwgbWFsZXMgZnJvbSBhIG1vbnRoIG9sZCBhbmQgdXB3YXJkOiBmb3IgdGhleSB3ZXJlIG5vdCBudW1iZXJlZCBhbW9uZyB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLCBiZWNhdXNlIHRoZXJlIHdhcyBubyBpbmhlcml0YW5jZSBnaXZlbiB0aGVtIGFtb25nIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwuClRoZXNlIGFyZSB0aGV5IHRoYXQgd2VyZSBudW1iZXJlZCBieSBNb3NlcyBhbmQgRWxlYXphciB0aGUgcHJpZXN0LCB3aG8gbnVtYmVyZWQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBpbiB0aGUgcGxhaW5zIG9mIE1vYWIgYnkgSm9yZGFuIG5lYXIgSmVyaWNoby4KQnV0IGFtb25nIHRoZXNlIHRoZXJlIHdhcyBub3QgYSBtYW4gb2YgdGhlbSB3aG9tIE1vc2VzIGFuZCBBYXJvbiB0aGUgcHJpZXN0IG51bWJlcmVkLCB3aGVuIHRoZXkgbnVtYmVyZWQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBpbiB0aGUgd2lsZGVybmVzcyBvZiBTaW5haS4KRm9yIHRoZSBMT1JEIGhhZCBzYWlkIG9mIHRoZW0sIFRoZXkgc2hhbGwgc3VyZWx5IGRpZSBpbiB0aGUgd2lsZGVybmVzcy4gQW5kIHRoZXJlIHdhcyBub3QgbGVmdCBhIG1hbiBvZiB0aGVtLCBzYXZlIENhbGViIHRoZSBzb24gb2YgSmVwaHVubmVoLCBhbmQgSm9zaHVhIHRoZSBzb24gb2YgTnVuLgpUaGVuIGNhbWUgdGhlIGRhdWdodGVycyBvZiBaZWxvcGhlaGFkLCB0aGUgc29uIG9mIEhlcGhlciwgdGhlIHNvbiBvZiBHaWxlYWQsIHRoZSBzb24gb2YgTWFjaGlyLCB0aGUgc29uIG9mIE1hbmFzc2VoLCBvZiB0aGUgZmFtaWxpZXMgb2YgTWFuYXNzZWggdGhlIHNvbiBvZiBKb3NlcGg6IGFuZCB0aGVzZSBhcmUgdGhlIG5hbWVzIG9mIGhpcyBkYXVnaHRlcnM7IE1haGxhaCwgTm9haCwgYW5kIEhvZ2xhaCwgYW5kIE1pbGNhaCwgYW5kIFRpcnphaC4KQW5kIHRoZXkgc3Rvb2QgYmVmb3JlIE1vc2VzLCBhbmQgYmVmb3JlIEVsZWF6YXIgdGhlIHByaWVzdCwgYW5kIGJlZm9yZSB0aGUgcHJpbmNlcyBhbmQgYWxsIHRoZSBjb25ncmVnYXRpb24sIGJ5IHRoZSBkb29yIG9mIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBjb25ncmVnYXRpb24sIHNheWluZywKT3VyIGZhdGhlciBkaWVkIGluIHRoZSB3aWxkZXJuZXNzLCBhbmQgaGUgd2FzIG5vdCBpbiB0aGUgY29tcGFueSBvZiB0aGVtIHRoYXQgZ2F0aGVyZWQgdGhlbXNlbHZlcyB0b2dldGhlciBhZ2FpbnN0IHRoZSBMT1JEIGluIHRoZSBjb21wYW55IG9mIEtvcmFoOyBidXQgZGllZCBpbiBoaXMgb3duIHNpbiwgYW5kIGhhZCBubyBzb25zLgpXaHkgc2hvdWxkIHRoZSBuYW1lIG9mIG91ciBmYXRoZXIgYmUgZG9uZSBhd2F5IGZyb20gYW1vbmcgaGlzIGZhbWlseSwgYmVjYXVzZSBoZSBoYXRoIG5vIHNvbj8gR2l2ZSB1bnRvIHVzIHRoZXJlZm9yZSBhIHBvc3Nlc3Npb24gYW1vbmcgdGhlIGJyZXRocmVuIG9mIG91ciBmYXRoZXIuCkFuZCBNb3NlcyBicm91Z2h0IHRoZWlyIGNhdXNlIGJlZm9yZSB0aGUgTE9SRC4KQW5kIHRoZSBMT1JEIHNwYWtlIHVudG8gTW9zZXMsIHNheWluZywKVGhlIGRhdWdodGVycyBvZiBaZWxvcGhlaGFkIHNwZWFrIHJpZ2h0OiB0aG91IHNoYWx0IHN1cmVseSBnaXZlIHRoZW0gYSBwb3NzZXNzaW9uIG9mIGFuIGluaGVyaXRhbmNlIGFtb25nIHRoZWlyIGZhdGhlcidzIGJyZXRocmVuOyBhbmQgdGhvdSBzaGFsdCBjYXVzZSB0aGUgaW5oZXJpdGFuY2Ugb2YgdGhlaXIgZmF0aGVyIHRvIHBhc3MgdW50byB0aGVtLgpBbmQgdGhvdSBzaGFsdCBzcGVhayB1bnRvIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIHNheWluZywgSWYgYSBtYW4gZGllLCBhbmQgaGF2ZSBubyBzb24sIHRoZW4geWUgc2hhbGwgY2F1c2UgaGlzIGluaGVyaXRhbmNlIHRvIHBhc3MgdW50byBoaXMgZGF1Z2h0ZXIuCkFuZCBpZiBoZSBoYXZlIG5vIGRhdWdodGVyLCB0aGVuIHllIHNoYWxsIGdpdmUgaGlzIGluaGVyaXRhbmNlIHVudG8gaGlzIGJyZXRocmVuLgpBbmQgaWYgaGUgaGF2ZSBubyBicmV0aHJlbiwgdGhlbiB5ZSBzaGFsbCBnaXZlIGhpcyBpbmhlcml0YW5jZSB1bnRvIGhpcyBmYXRoZXIncyBicmV0aHJlbi4KQW5kIGlmIGhpcyBmYXRoZXIgaGF2ZSBubyBicmV0aHJlbiwgdGhlbiB5ZSBzaGFsbCBnaXZlIGhpcyBpbmhlcml0YW5jZSB1bnRvIGhpcyBraW5zbWFuIHRoYXQgaXMgbmV4dCB0byBoaW0gb2YgaGlzIGZhbWlseSwgYW5kIGhlIHNoYWxsIHBvc3Nlc3MgaXQ6IGFuZCBpdCBzaGFsbCBiZSB1bnRvIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgYSBzdGF0dXRlIG9mIGp1ZGdtZW50LCBhcyB0aGUgTE9SRCBjb21tYW5kZWQgTW9zZXMuCkFuZCB0aGUgTE9SRCBzYWlkIHVudG8gTW9zZXMsIEdldCB0aGVlIHVwIGludG8gdGhpcyBtb3VudCBBYmFyaW0sIGFuZCBzZWUgdGhlIGxhbmQgd2hpY2ggSSBoYXZlIGdpdmVuIHVudG8gdGhlIGNoaWxkcmVuIG9mIElzcmFlbC4KQW5kIHdoZW4gdGhvdSBoYXN0IHNlZW4gaXQsIHRob3UgYWxzbyBzaGFsdCBiZSBnYXRoZXJlZCB1bnRvIHRoeSBwZW9wbGUsIGFzIEFhcm9uIHRoeSBicm90aGVyIHdhcyBnYXRoZXJlZC4KRm9yIHllIHJlYmVsbGVkIGFnYWluc3QgbXkgY29tbWFuZG1lbnQgaW4gdGhlIGRlc2VydCBvZiBaaW4sIGluIHRoZSBzdHJpZmUgb2YgdGhlIGNvbmdyZWdhdGlvbiwgdG8gc2FuY3RpZnkgbWUgYXQgdGhlIHdhdGVyIGJlZm9yZSB0aGVpciBleWVzOiB0aGF0IGlzIHRoZSB3YXRlciBvZiBNZXJpYmFoIGluIEthZGVzaCBpbiB0aGUgd2lsZGVybmVzcyBvZiBaaW4uCkFuZCBNb3NlcyBzcGFrZSB1bnRvIHRoZSBMT1JELCBzYXlpbmcsCkxldCB0aGUgTE9SRCwgdGhlIEdvZCBvZiB0aGUgc3Bpcml0cyBvZiBhbGwgZmxlc2gsIHNldCBhIG1hbiBvdmVyIHRoZSBjb25ncmVnYXRpb24sCldoaWNoIG1heSBnbyBvdXQgYmVmb3JlIHRoZW0sIGFuZCB3aGljaCBtYXkgZ28gaW4gYmVmb3JlIHRoZW0sIGFuZCB3aGljaCBtYXkgbGVhZCB0aGVtIG91dCwgYW5kIHdoaWNoIG1heSBicmluZyB0aGVtIGluOyB0aGF0IHRoZSBjb25ncmVnYXRpb24gb2YgdGhlIExPUkQgYmUgbm90IGFzIHNoZWVwIHdoaWNoIGhhdmUgbm8gc2hlcGhlcmQuCkFuZCB0aGUgTE9SRCBzYWlkIHVudG8gTW9zZXMsIFRha2UgdGhlZSBKb3NodWEgdGhlIHNvbiBvZiBOdW4sIGEgbWFuIGluIHdob20gaXMgdGhlIHNwaXJpdCwgYW5kIGxheSB0aGluZSBoYW5kIHVwb24gaGltOwpBbmQgc2V0IGhpbSBiZWZvcmUgRWxlYXphciB0aGUgcHJpZXN0LCBhbmQgYmVmb3JlIGFsbCB0aGUgY29uZ3JlZ2F0aW9uOyBhbmQgZ2l2ZSBoaW0gYSBjaGFyZ2UgaW4gdGhlaXIgc2lnaHQuCkFuZCB0aG91IHNoYWx0IHB1dCBzb21lIG9mIHRoaW5lIGhvbm91ciB1cG9uIGhpbSwgdGhhdCBhbGwgdGhlIGNvbmdyZWdhdGlvbiBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIG1heSBiZSBvYmVkaWVudC4KQW5kIGhlIHNoYWxsIHN0YW5kIGJlZm9yZSBFbGVhemFyIHRoZSBwcmllc3QsIHdobyBzaGFsbCBhc2sgY291bnNlbCBmb3IgaGltIGFmdGVyIHRoZSBqdWRnbWVudCBvZiBVcmltIGJlZm9yZSB0aGUgTE9SRDogYXQgaGlzIHdvcmQgc2hhbGwgdGhleSBnbyBvdXQsIGFuZCBhdCBoaXMgd29yZCB0aGV5IHNoYWxsIGNvbWUgaW4sIGJvdGggaGUsIGFuZCBhbGwgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCB3aXRoIGhpbSwgZXZlbiBhbGwgdGhlIGNvbmdyZWdhdGlvbi4KQW5kIE1vc2VzIGRpZCBhcyB0aGUgTE9SRCBjb21tYW5kZWQgaGltOiBhbmQgaGUgdG9vayBKb3NodWEsIGFuZCBzZXQgaGltIGJlZm9yZSBFbGVhemFyIHRoZSBwcmllc3QsIGFuZCBiZWZvcmUgYWxsIHRoZSBjb25ncmVnYXRpb246CkFuZCBoZSBsYWlkIGhpcyBoYW5kcyB1cG9uIGhpbSwgYW5kIGdhdmUgaGltIGEgY2hhcmdlLCBhcyB0aGUgTE9SRCBjb21tYW5kZWQgYnkgdGhlIGhhbmQgb2YgTW9zZXMuCkFuZCB0aGUgTE9SRCBzcGFrZSB1bnRvIE1vc2VzLCBzYXlpbmcsCkNvbW1hbmQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgYW5kIHNheSB1bnRvIHRoZW0sIE15IG9mZmVyaW5nLCBhbmQgbXkgYnJlYWQgZm9yIG15IHNhY3JpZmljZXMgbWFkZSBieSBmaXJlLCBmb3IgYSBzd2VldCBzYXZvdXIgdW50byBtZSwgc2hhbGwgeWUgb2JzZXJ2ZSB0byBvZmZlciB1bnRvIG1lIGluIHRoZWlyIGR1ZSBzZWFzb24uCkFuZCB0aG91IHNoYWx0IHNheSB1bnRvIHRoZW0sIFRoaXMgaXMgdGhlIG9mZmVyaW5nIG1hZGUgYnkgZmlyZSB3aGljaCB5ZSBzaGFsbCBvZmZlciB1bnRvIHRoZSBMT1JEOyB0d28gbGFtYnMgb2YgdGhlIGZpcnN0IHllYXIgd2l0aG91dCBzcG90IGRheSBieSBkYXksIGZvciBhIGNvbnRpbnVhbCBidXJudCBvZmZlcmluZy4KVGhlIG9uZSBsYW1iIHNoYWx0IHRob3Ugb2ZmZXIgaW4gdGhlIG1vcm5pbmcsIGFuZCB0aGUgb3RoZXIgbGFtYiBzaGFsdCB0aG91IG9mZmVyIGF0IGV2ZW47CkFuZCBhIHRlbnRoIHBhcnQgb2YgYW4gZXBoYWggb2YgZmxvdXIgZm9yIGEgbWVhdCBvZmZlcmluZywgbWluZ2xlZCB3aXRoIHRoZSBmb3VydGggcGFydCBvZiBhbiBoaW4gb2YgYmVhdGVuIG9pbC4KSXQgaXMgYSBjb250aW51YWwgYnVybnQgb2ZmZXJpbmcsIHdoaWNoIHdhcyBvcmRhaW5lZCBpbiBtb3VudCBTaW5haSBmb3IgYSBzd2VldCBzYXZvdXIsIGEgc2FjcmlmaWNlIG1hZGUgYnkgZmlyZSB1bnRvIHRoZSBMT1JELgpBbmQgdGhlIGRyaW5rIG9mZmVyaW5nIHRoZXJlb2Ygc2hhbGwgYmUgdGhlIGZvdXJ0aCBwYXJ0IG9mIGFuIGhpbiBmb3IgdGhlIG9uZSBsYW1iOiBpbiB0aGUgaG9seSBwbGFjZSBzaGFsdCB0aG91IGNhdXNlIHRoZSBzdHJvbmcgd2luZSB0byBiZSBwb3VyZWQgdW50byB0aGUgTE9SRCBmb3IgYSBkcmluayBvZmZlcmluZy4KQW5kIHRoZSBvdGhlciBsYW1iIHNoYWx0IHRob3Ugb2ZmZXIgYXQgZXZlbjogYXMgdGhlIG1lYXQgb2ZmZXJpbmcgb2YgdGhlIG1vcm5pbmcsIGFuZCBhcyB0aGUgZHJpbmsgb2ZmZXJpbmcgdGhlcmVvZiwgdGhvdSBzaGFsdCBvZmZlciBpdCwgYSBzYWNyaWZpY2UgbWFkZSBieSBmaXJlLCBvZiBhIHN3ZWV0IHNhdm91ciB1bnRvIHRoZSBMT1JELgpBbmQgb24gdGhlIHNhYmJhdGggZGF5IHR3byBsYW1icyBvZiB0aGUgZmlyc3QgeWVhciB3aXRob3V0IHNwb3QsIGFuZCB0d28gdGVudGggZGVhbHMgb2YgZmxvdXIgZm9yIGEgbWVhdCBvZmZlcmluZywgbWluZ2xlZCB3aXRoIG9pbCwgYW5kIHRoZSBkcmluayBvZmZlcmluZyB0aGVyZW9mOgpUaGlzIGlzIHRoZSBidXJudCBvZmZlcmluZyBvZiBldmVyeSBzYWJiYXRoLCBiZXNpZGUgdGhlIGNvbnRpbnVhbCBidXJudCBvZmZlcmluZywgYW5kIGhpcyBkcmluayBvZmZlcmluZy4KQW5kIGluIHRoZSBiZWdpbm5pbmdzIG9mIHlvdXIgbW9udGhzIHllIHNoYWxsIG9mZmVyIGEgYnVybnQgb2ZmZXJpbmcgdW50byB0aGUgTE9SRDsgdHdvIHlvdW5nIGJ1bGxvY2tzLCBhbmQgb25lIHJhbSwgc2V2ZW4gbGFtYnMgb2YgdGhlIGZpcnN0IHllYXIgd2l0aG91dCBzcG90OwpBbmQgdGhyZWUgdGVudGggZGVhbHMgb2YgZmxvdXIgZm9yIGEgbWVhdCBvZmZlcmluZywgbWluZ2xlZCB3aXRoIG9pbCwgZm9yIG9uZSBidWxsb2NrOyBhbmQgdHdvIHRlbnRoIGRlYWxzIG9mIGZsb3VyIGZvciBhIG1lYXQgb2ZmZXJpbmcsIG1pbmdsZWQgd2l0aCBvaWwsIGZvciBvbmUgcmFtOwpBbmQgYSBzZXZlcmFsIHRlbnRoIGRlYWwgb2YgZmxvdXIgbWluZ2xlZCB3aXRoIG9pbCBmb3IgYSBtZWF0IG9mZmVyaW5nIHVudG8gb25lIGxhbWI7IGZvciBhIGJ1cm50IG9mZmVyaW5nIG9mIGEgc3dlZXQgc2F2b3VyLCBhIHNhY3JpZmljZSBtYWRlIGJ5IGZpcmUgdW50byB0aGUgTE9SRC4KQW5kIHRoZWlyIGRyaW5rIG9mZmVyaW5ncyBzaGFsbCBiZSBoYWxmIGFuIGhpbiBvZiB3aW5lIHVudG8gYSBidWxsb2NrLCBhbmQgdGhlIHRoaXJkIHBhcnQgb2YgYW4gaGluIHVudG8gYSByYW0sIGFuZCBhIGZvdXJ0aCBwYXJ0IG9mIGFuIGhpbiB1bnRvIGEgbGFtYjogdGhpcyBpcyB0aGUgYnVybnQgb2ZmZXJpbmcgb2YgZXZlcnkgbW9udGggdGhyb3VnaG91dCB0aGUgbW9udGhzIG9mIHRoZSB5ZWFyLgpBbmQgb25lIGtpZCBvZiB0aGUgZ29hdHMgZm9yIGEgc2luIG9mZmVyaW5nIHVudG8gdGhlIExPUkQgc2hhbGwgYmUgb2ZmZXJlZCwgYmVzaWRlIHRoZSBjb250aW51YWwgYnVybnQgb2ZmZXJpbmcsIGFuZCBoaXMgZHJpbmsgb2ZmZXJpbmcuCkFuZCBpbiB0aGUgZm91cnRlZW50aCBkYXkgb2YgdGhlIGZpcnN0IG1vbnRoIGlzIHRoZSBwYXNzb3ZlciBvZiB0aGUgTE9SRC4KQW5kIGluIHRoZSBmaWZ0ZWVudGggZGF5IG9mIHRoaXMgbW9udGggaXMgdGhlIGZlYXN0OiBzZXZlbiBkYXlzIHNoYWxsIHVubGVhdmVuZWQgYnJlYWQgYmUgZWF0ZW4uCkluIHRoZSBmaXJzdCBkYXkgc2hhbGwgYmUgYW4gaG9seSBjb252b2NhdGlvbjsgeWUgc2hhbGwgZG8gbm8gbWFubmVyIG9mIHNlcnZpbGUgd29yayB0aGVyZWluOgpCdXQgeWUgc2hhbGwgb2ZmZXIgYSBzYWNyaWZpY2UgbWFkZSBieSBmaXJlIGZvciBhIGJ1cm50IG9mZmVyaW5nIHVudG8gdGhlIExPUkQ7IHR3byB5b3VuZyBidWxsb2NrcywgYW5kIG9uZSByYW0sIGFuZCBzZXZlbiBsYW1icyBvZiB0aGUgZmlyc3QgeWVhcjogdGhleSBzaGFsbCBiZSB1bnRvIHlvdSB3aXRob3V0IGJsZW1pc2g6CkFuZCB0aGVpciBtZWF0IG9mZmVyaW5nIHNoYWxsIGJlIG9mIGZsb3VyIG1pbmdsZWQgd2l0aCBvaWw6IHRocmVlIHRlbnRoIGRlYWxzIHNoYWxsIHllIG9mZmVyIGZvciBhIGJ1bGxvY2ssIGFuZCB0d28gdGVudGggZGVhbHMgZm9yIGEgcmFtOwpBIHNldmVyYWwgdGVudGggZGVhbCBzaGFsdCB0aG91IG9mZmVyIGZvciBldmVyeSBsYW1iLCB0aHJvdWdob3V0IHRoZSBzZXZlbiBsYW1iczoKQW5kIG9uZSBnb2F0IGZvciBhIHNpbiBvZmZlcmluZywgdG8gbWFrZSBhbiBhdG9uZW1lbnQgZm9yIHlvdS4KWWUgc2hhbGwgb2ZmZXIgdGhlc2UgYmVzaWRlIHRoZSBidXJudCBvZmZlcmluZyBpbiB0aGUgbW9ybmluZywgd2hpY2ggaXMgZm9yIGEgY29udGludWFsIGJ1cm50IG9mZmVyaW5nLgpBZnRlciB0aGlzIG1hbm5lciB5ZSBzaGFsbCBvZmZlciBkYWlseSwgdGhyb3VnaG91dCB0aGUgc2V2ZW4gZGF5cywgdGhlIG1lYXQgb2YgdGhlIHNhY3JpZmljZSBtYWRlIGJ5IGZpcmUsIG9mIGEgc3dlZXQgc2F2b3VyIHVudG8gdGhlIExPUkQ6IGl0IHNoYWxsIGJlIG9mZmVyZWQgYmVzaWRlIHRoZSBjb250aW51YWwgYnVybnQgb2ZmZXJpbmcsIGFuZCBoaXMgZHJpbmsgb2ZmZXJpbmcuCkFuZCBvbiB0aGUgc2V2ZW50aCBkYXkgeWUgc2hhbGwgaGF2ZSBhbiBob2x5IGNvbnZvY2F0aW9uOyB5ZSBzaGFsbCBkbyBubyBzZXJ2aWxlIHdvcmsuCkFsc28gaW4gdGhlIGRheSBvZiB0aGUgZmlyc3RmcnVpdHMsIHdoZW4geWUgYnJpbmcgYSBuZXcgbWVhdCBvZmZlcmluZyB1bnRvIHRoZSBMT1JELCBhZnRlciB5b3VyIHdlZWtzIGJlIG91dCwgeWUgc2hhbGwgaGF2ZSBhbiBob2x5IGNvbnZvY2F0aW9uOyB5ZSBzaGFsbCBkbyBubyBzZXJ2aWxlIHdvcms6CkJ1dCB5ZSBzaGFsbCBvZmZlciB0aGUgYnVybnQgb2ZmZXJpbmcgZm9yIGEgc3dlZXQgc2F2b3VyIHVudG8gdGhlIExPUkQ7IHR3byB5b3VuZyBidWxsb2Nrcywgb25lIHJhbSwgc2V2ZW4gbGFtYnMgb2YgdGhlIGZpcnN0IHllYXI7CkFuZCB0aGVpciBtZWF0IG9mZmVyaW5nIG9mIGZsb3VyIG1pbmdsZWQgd2l0aCBvaWwsIHRocmVlIHRlbnRoIGRlYWxzIHVudG8gb25lIGJ1bGxvY2ssIHR3byB0ZW50aCBkZWFscyB1bnRvIG9uZSByYW0sCkEgc2V2ZXJhbCB0ZW50aCBkZWFsIHVudG8gb25lIGxhbWIsIHRocm91Z2hvdXQgdGhlIHNldmVuIGxhbWJzOwpBbmQgb25lIGtpZCBvZiB0aGUgZ29hdHMsIHRvIG1ha2UgYW4gYXRvbmVtZW50IGZvciB5b3UuClllIHNoYWxsIG9mZmVyIHRoZW0gYmVzaWRlIHRoZSBjb250aW51YWwgYnVybnQgb2ZmZXJpbmcsIGFuZCBoaXMgbWVhdCBvZmZlcmluZywgKHRoZXkgc2hhbGwgYmUgdW50byB5b3Ugd2l0aG91dCBibGVtaXNoKSBhbmQgdGhlaXIgZHJpbmsgb2ZmZXJpbmdzLgpBbmQgaW4gdGhlIHNldmVudGggbW9udGgsIG9uIHRoZSBmaXJzdCBkYXkgb2YgdGhlIG1vbnRoLCB5ZSBzaGFsbCBoYXZlIGFuIGhvbHkgY29udm9jYXRpb247IHllIHNoYWxsIGRvIG5vIHNlcnZpbGUgd29yazogaXQgaXMgYSBkYXkgb2YgYmxvd2luZyB0aGUgdHJ1bXBldHMgdW50byB5b3UuCkFuZCB5ZSBzaGFsbCBvZmZlciBhIGJ1cm50IG9mZmVyaW5nIGZvciBhIHN3ZWV0IHNhdm91ciB1bnRvIHRoZSBMT1JEOyBvbmUgeW91bmcgYnVsbG9jaywgb25lIHJhbSwgYW5kIHNldmVuIGxhbWJzIG9mIHRoZSBmaXJzdCB5ZWFyIHdpdGhvdXQgYmxlbWlzaDoKQW5kIHRoZWlyIG1lYXQgb2ZmZXJpbmcgc2hhbGwgYmUgb2YgZmxvdXIgbWluZ2xlZCB3aXRoIG9pbCwgdGhyZWUgdGVudGggZGVhbHMgZm9yIGEgYnVsbG9jaywgYW5kIHR3byB0ZW50aCBkZWFscyBmb3IgYSByYW0sCkFuZCBvbmUgdGVudGggZGVhbCBmb3Igb25lIGxhbWIsIHRocm91Z2hvdXQgdGhlIHNldmVuIGxhbWJzOgpBbmQgb25lIGtpZCBvZiB0aGUgZ29hdHMgZm9yIGEgc2luIG9mZmVyaW5nLCB0byBtYWtlIGFuIGF0b25lbWVudCBmb3IgeW91OgpCZXNpZGUgdGhlIGJ1cm50IG9mZmVyaW5nIG9mIHRoZSBtb250aCwgYW5kIGhpcyBtZWF0IG9mZmVyaW5nLCBhbmQgdGhlIGRhaWx5IGJ1cm50IG9mZmVyaW5nLCBhbmQgaGlzIG1lYXQgb2ZmZXJpbmcsIGFuZCB0aGVpciBkcmluayBvZmZlcmluZ3MsIGFjY29yZGluZyB1bnRvIHRoZWlyIG1hbm5lciwgZm9yIGEgc3dlZXQgc2F2b3VyLCBhIHNhY3JpZmljZSBtYWRlIGJ5IGZpcmUgdW50byB0aGUgTE9SRC4KQW5kIHllIHNoYWxsIGhhdmUgb24gdGhlIHRlbnRoIGRheSBvZiB0aGlzIHNldmVudGggbW9udGggYW4gaG9seSBjb252b2NhdGlvbjsgYW5kIHllIHNoYWxsIGFmZmxpY3QgeW91ciBzb3VsczogeWUgc2hhbGwgbm90IGRvIGFueSB3b3JrIHRoZXJlaW46CkJ1dCB5ZSBzaGFsbCBvZmZlciBhIGJ1cm50IG9mZmVyaW5nIHVudG8gdGhlIExPUkQgZm9yIGEgc3dlZXQgc2F2b3VyOyBvbmUgeW91bmcgYnVsbG9jaywgb25lIHJhbSwgYW5kIHNldmVuIGxhbWJzIG9mIHRoZSBmaXJzdCB5ZWFyOyB0aGV5IHNoYWxsIGJlIHVudG8geW91IHdpdGhvdXQgYmxlbWlzaDoKQW5kIHRoZWlyIG1lYXQgb2ZmZXJpbmcgc2hhbGwgYmUgb2YgZmxvdXIgbWluZ2xlZCB3aXRoIG9pbCwgdGhyZWUgdGVudGggZGVhbHMgdG8gYSBidWxsb2NrLCBhbmQgdHdvIHRlbnRoIGRlYWxzIHRvIG9uZSByYW0sCkEgc2V2ZXJhbCB0ZW50aCBkZWFsIGZvciBvbmUgbGFtYiwgdGhyb3VnaG91dCB0aGUgc2V2ZW4gbGFtYnM6Ck9uZSBraWQgb2YgdGhlIGdvYXRzIGZvciBhIHNpbiBvZmZlcmluZzsgYmVzaWRlIHRoZSBzaW4gb2ZmZXJpbmcgb2YgYXRvbmVtZW50LCBhbmQgdGhlIGNvbnRpbnVhbCBidXJudCBvZmZlcmluZywgYW5kIHRoZSBtZWF0IG9mZmVyaW5nIG9mIGl0LCBhbmQgdGhlaXIgZHJpbmsgb2ZmZXJpbmdzLgpBbmQgb24gdGhlIGZpZnRlZW50aCBkYXkgb2YgdGhlIHNldmVudGggbW9udGggeWUgc2hhbGwgaGF2ZSBhbiBob2x5IGNvbnZvY2F0aW9uOyB5ZSBzaGFsbCBkbyBubyBzZXJ2aWxlIHdvcmssIGFuZCB5ZSBzaGFsbCBrZWVwIGEgZmVhc3QgdW50byB0aGUgTE9SRCBzZXZlbiBkYXlzOgpBbmQgeWUgc2hhbGwgb2ZmZXIgYSBidXJudCBvZmZlcmluZywgYSBzYWNyaWZpY2UgbWFkZSBieSBmaXJlLCBvZiBhIHN3ZWV0IHNhdm91ciB1bnRvIHRoZSBMT1JEOyB0aGlydGVlbiB5b3VuZyBidWxsb2NrcywgdHdvIHJhbXMsIGFuZCBmb3VydGVlbiBsYW1icyBvZiB0aGUgZmlyc3QgeWVhcjsgdGhleSBzaGFsbCBiZSB3aXRob3V0IGJsZW1pc2g6CkFuZCB0aGVpciBtZWF0IG9mZmVyaW5nIHNoYWxsIGJlIG9mIGZsb3VyIG1pbmdsZWQgd2l0aCBvaWwsIHRocmVlIHRlbnRoIGRlYWxzIHVudG8gZXZlcnkgYnVsbG9jayBvZiB0aGUgdGhpcnRlZW4gYnVsbG9ja3MsIHR3byB0ZW50aCBkZWFscyB0byBlYWNoIHJhbSBvZiB0aGUgdHdvIHJhbXMsCkFuZCBhIHNldmVyYWwgdGVudGggZGVhbCB0byBlYWNoIGxhbWIgb2YgdGhlIGZvdXJ0ZWVuIGxhbWJzOgpBbmQgb25lIGtpZCBvZiB0aGUgZ29hdHMgZm9yIGEgc2luIG9mZmVyaW5nOyBiZXNpZGUgdGhlIGNvbnRpbnVhbCBidXJudCBvZmZlcmluZywgaGlzIG1lYXQgb2ZmZXJpbmcsIGFuZCBoaXMgZHJpbmsgb2ZmZXJpbmcuCkFuZCBvbiB0aGUgc2Vjb25kIGRheSB5ZSBzaGFsbCBvZmZlciB0d2VsdmUgeW91bmcgYnVsbG9ja3MsIHR3byByYW1zLCBmb3VydGVlbiBsYW1icyBvZiB0aGUgZmlyc3QgeWVhciB3aXRob3V0IHNwb3Q6CkFuZCB0aGVpciBtZWF0IG9mZmVyaW5nIGFuZCB0aGVpciBkcmluayBvZmZlcmluZ3MgZm9yIHRoZSBidWxsb2NrcywgZm9yIHRoZSByYW1zLCBhbmQgZm9yIHRoZSBsYW1icywgc2hhbGwgYmUgYWNjb3JkaW5nIHRvIHRoZWlyIG51bWJlciwgYWZ0ZXIgdGhlIG1hbm5lcjoKQW5kIG9uZSBraWQgb2YgdGhlIGdvYXRzIGZvciBhIHNpbiBvZmZlcmluZzsgYmVzaWRlIHRoZSBjb250aW51YWwgYnVybnQgb2ZmZXJpbmcsIGFuZCB0aGUgbWVhdCBvZmZlcmluZyB0aGVyZW9mLCBhbmQgdGhlaXIgZHJpbmsgb2ZmZXJpbmdzLgpBbmQgb24gdGhlIHRoaXJkIGRheSBlbGV2ZW4gYnVsbG9ja3MsIHR3byByYW1zLCBmb3VydGVlbiBsYW1icyBvZiB0aGUgZmlyc3QgeWVhciB3aXRob3V0IGJsZW1pc2g7CkFuZCB0aGVpciBtZWF0IG9mZmVyaW5nIGFuZCB0aGVpciBkcmluayBvZmZlcmluZ3MgZm9yIHRoZSBidWxsb2NrcywgZm9yIHRoZSByYW1zLCBhbmQgZm9yIHRoZSBsYW1icywgc2hhbGwgYmUgYWNjb3JkaW5nIHRvIHRoZWlyIG51bWJlciwgYWZ0ZXIgdGhlIG1hbm5lcjoKQW5kIG9uZSBnb2F0IGZvciBhIHNpbiBvZmZlcmluZzsgYmVzaWRlIHRoZSBjb250aW51YWwgYnVybnQgb2ZmZXJpbmcsIGFuZCBoaXMgbWVhdCBvZmZlcmluZywgYW5kIGhpcyBkcmluayBvZmZlcmluZy4KQW5kIG9uIHRoZSBmb3VydGggZGF5IHRlbiBidWxsb2NrcywgdHdvIHJhbXMsIGFuZCBmb3VydGVlbiBsYW1icyBvZiB0aGUgZmlyc3QgeWVhciB3aXRob3V0IGJsZW1pc2g6ClRoZWlyIG1lYXQgb2ZmZXJpbmcgYW5kIHRoZWlyIGRyaW5rIG9mZmVyaW5ncyBmb3IgdGhlIGJ1bGxvY2tzLCBmb3IgdGhlIHJhbXMsIGFuZCBmb3IgdGhlIGxhbWJzLCBzaGFsbCBiZSBhY2NvcmRpbmcgdG8gdGhlaXIgbnVtYmVyLCBhZnRlciB0aGUgbWFubmVyOgpBbmQgb25lIGtpZCBvZiB0aGUgZ29hdHMgZm9yIGEgc2luIG9mZmVyaW5nOyBiZXNpZGUgdGhlIGNvbnRpbnVhbCBidXJudCBvZmZlcmluZywgaGlzIG1lYXQgb2ZmZXJpbmcsIGFuZCBoaXMgZHJpbmsgb2ZmZXJpbmcuCkFuZCBvbiB0aGUgZmlmdGggZGF5IG5pbmUgYnVsbG9ja3MsIHR3byByYW1zLCBhbmQgZm91cnRlZW4gbGFtYnMgb2YgdGhlIGZpcnN0IHllYXIgd2l0aG91dCBzcG90OgpBbmQgdGhlaXIgbWVhdCBvZmZlcmluZyBhbmQgdGhlaXIgZHJpbmsgb2ZmZXJpbmdzIGZvciB0aGUgYnVsbG9ja3MsIGZvciB0aGUgcmFtcywgYW5kIGZvciB0aGUgbGFtYnMsIHNoYWxsIGJlIGFjY29yZGluZyB0byB0aGVpciBudW1iZXIsIGFmdGVyIHRoZSBtYW5uZXI6CkFuZCBvbmUgZ29hdCBmb3IgYSBzaW4gb2ZmZXJpbmc7IGJlc2lkZSB0aGUgY29udGludWFsIGJ1cm50IG9mZmVyaW5nLCBhbmQgaGlzIG1lYXQgb2ZmZXJpbmcsIGFuZCBoaXMgZHJpbmsgb2ZmZXJpbmcuCkFuZCBvbiB0aGUgc2l4dGggZGF5IGVpZ2h0IGJ1bGxvY2tzLCB0d28gcmFtcywgYW5kIGZvdXJ0ZWVuIGxhbWJzIG9mIHRoZSBmaXJzdCB5ZWFyIHdpdGhvdXQgYmxlbWlzaDoKQW5kIHRoZWlyIG1lYXQgb2ZmZXJpbmcgYW5kIHRoZWlyIGRyaW5rIG9mZmVyaW5ncyBmb3IgdGhlIGJ1bGxvY2tzLCBmb3IgdGhlIHJhbXMsIGFuZCBmb3IgdGhlIGxhbWJzLCBzaGFsbCBiZSBhY2NvcmRpbmcgdG8gdGhlaXIgbnVtYmVyLCBhZnRlciB0aGUgbWFubmVyOgpBbmQgb25lIGdvYXQgZm9yIGEgc2luIG9mZmVyaW5nOyBiZXNpZGUgdGhlIGNvbnRpbnVhbCBidXJudCBvZmZlcmluZywgaGlzIG1lYXQgb2ZmZXJpbmcsIGFuZCBoaXMgZHJpbmsgb2ZmZXJpbmcuCkFuZCBvbiB0aGUgc2V2ZW50aCBkYXkgc2V2ZW4gYnVsbG9ja3MsIHR3byByYW1zLCBhbmQgZm91cnRlZW4gbGFtYnMgb2YgdGhlIGZpcnN0IHllYXIgd2l0aG91dCBibGVtaXNoOgpBbmQgdGhlaXIgbWVhdCBvZmZlcmluZyBhbmQgdGhlaXIgZHJpbmsgb2ZmZXJpbmdzIGZvciB0aGUgYnVsbG9ja3MsIGZvciB0aGUgcmFtcywgYW5kIGZvciB0aGUgbGFtYnMsIHNoYWxsIGJlIGFjY29yZGluZyB0byB0aGVpciBudW1iZXIsIGFmdGVyIHRoZSBtYW5uZXI6CkFuZCBvbmUgZ29hdCBmb3IgYSBzaW4gb2ZmZXJpbmc7IGJlc2lkZSB0aGUgY29udGludWFsIGJ1cm50IG9mZmVyaW5nLCBoaXMgbWVhdCBvZmZlcmluZywgYW5kIGhpcyBkcmluayBvZmZlcmluZy4KT24gdGhlIGVpZ2h0aCBkYXkgeWUgc2hhbGwgaGF2ZSBhIHNvbGVtbiBhc3NlbWJseTogeWUgc2hhbGwgZG8gbm8gc2VydmlsZSB3b3JrIHRoZXJlaW46CkJ1dCB5ZSBzaGFsbCBvZmZlciBhIGJ1cm50IG9mZmVyaW5nLCBhIHNhY3JpZmljZSBtYWRlIGJ5IGZpcmUsIG9mIGEgc3dlZXQgc2F2b3VyIHVudG8gdGhlIExPUkQ6IG9uZSBidWxsb2NrLCBvbmUgcmFtLCBzZXZlbiBsYW1icyBvZiB0aGUgZmlyc3QgeWVhciB3aXRob3V0IGJsZW1pc2g6ClRoZWlyIG1lYXQgb2ZmZXJpbmcgYW5kIHRoZWlyIGRyaW5rIG9mZmVyaW5ncyBmb3IgdGhlIGJ1bGxvY2ssIGZvciB0aGUgcmFtLCBhbmQgZm9yIHRoZSBsYW1icywgc2hhbGwgYmUgYWNjb3JkaW5nIHRvIHRoZWlyIG51bWJlciwgYWZ0ZXIgdGhlIG1hbm5lcjoKQW5kIG9uZSBnb2F0IGZvciBhIHNpbiBvZmZlcmluZzsgYmVzaWRlIHRoZSBjb250aW51YWwgYnVybnQgb2ZmZXJpbmcsIGFuZCBoaXMgbWVhdCBvZmZlcmluZywgYW5kIGhpcyBkcmluayBvZmZlcmluZy4KVGhlc2UgdGhpbmdzIHllIHNoYWxsIGRvIHVudG8gdGhlIExPUkQgaW4geW91ciBzZXQgZmVhc3RzLCBiZXNpZGUgeW91ciB2b3dzLCBhbmQgeW91ciBmcmVld2lsbCBvZmZlcmluZ3MsIGZvciB5b3VyIGJ1cm50IG9mZmVyaW5ncywgYW5kIGZvciB5b3VyIG1lYXQgb2ZmZXJpbmdzLCBhbmQgZm9yIHlvdXIgZHJpbmsgb2ZmZXJpbmdzLCBhbmQgZm9yIHlvdXIgcGVhY2Ugb2ZmZXJpbmdzLgpBbmQgTW9zZXMgdG9sZCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGFjY29yZGluZyB0byBhbGwgdGhhdCB0aGUgTE9SRCBjb21tYW5kZWQgTW9zZXMuCkFuZCBNb3NlcyBzcGFrZSB1bnRvIHRoZSBoZWFkcyBvZiB0aGUgdHJpYmVzIGNvbmNlcm5pbmcgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgc2F5aW5nLCBUaGlzIGlzIHRoZSB0aGluZyB3aGljaCB0aGUgTE9SRCBoYXRoIGNvbW1hbmRlZC4KSWYgYSBtYW4gdm93IGEgdm93IHVudG8gdGhlIExPUkQsIG9yIHN3ZWFyIGFuIG9hdGggdG8gYmluZCBoaXMgc291bCB3aXRoIGEgYm9uZDsgaGUgc2hhbGwgbm90IGJyZWFrIGhpcyB3b3JkLCBoZSBzaGFsbCBkbyBhY2NvcmRpbmcgdG8gYWxsIHRoYXQgcHJvY2VlZGV0aCBvdXQgb2YgaGlzIG1vdXRoLgpJZiBhIHdvbWFuIGFsc28gdm93IGEgdm93IHVudG8gdGhlIExPUkQsIGFuZCBiaW5kIGhlcnNlbGYgYnkgYSBib25kLCBiZWluZyBpbiBoZXIgZmF0aGVyJ3MgaG91c2UgaW4gaGVyIHlvdXRoOwpBbmQgaGVyIGZhdGhlciBoZWFyIGhlciB2b3csIGFuZCBoZXIgYm9uZCB3aGVyZXdpdGggc2hlIGhhdGggYm91bmQgaGVyIHNvdWwsIGFuZCBoZXIgZmF0aGVyIHNoYWxsIGhvbGQgaGlzIHBlYWNlIGF0IGhlcjsgdGhlbiBhbGwgaGVyIHZvd3Mgc2hhbGwgc3RhbmQsIGFuZCBldmVyeSBib25kIHdoZXJld2l0aCBzaGUgaGF0aCBib3VuZCBoZXIgc291bCBzaGFsbCBzdGFuZC4KQnV0IGlmIGhlciBmYXRoZXIgZGlzYWxsb3cgaGVyIGluIHRoZSBkYXkgdGhhdCBoZSBoZWFyZXRoOyBub3QgYW55IG9mIGhlciB2b3dzLCBvciBvZiBoZXIgYm9uZHMgd2hlcmV3aXRoIHNoZSBoYXRoIGJvdW5kIGhlciBzb3VsLCBzaGFsbCBzdGFuZDogYW5kIHRoZSBMT1JEIHNoYWxsIGZvcmdpdmUgaGVyLCBiZWNhdXNlIGhlciBmYXRoZXIgZGlzYWxsb3dlZCBoZXIuCkFuZCBpZiBzaGUgaGFkIGF0IGFsbCBhbiBodXNiYW5kLCB3aGVuIHNoZSB2b3dlZCwgb3IgdXR0ZXJlZCBvdWdodCBvdXQgb2YgaGVyIGxpcHMsIHdoZXJld2l0aCBzaGUgYm91bmQgaGVyIHNvdWw7CkFuZCBoZXIgaHVzYmFuZCBoZWFyZCBpdCwgYW5kIGhlbGQgaGlzIHBlYWNlIGF0IGhlciBpbiB0aGUgZGF5IHRoYXQgaGUgaGVhcmQgaXQ6IHRoZW4gaGVyIHZvd3Mgc2hhbGwgc3RhbmQsIGFuZCBoZXIgYm9uZHMgd2hlcmV3aXRoIHNoZSBib3VuZCBoZXIgc291bCBzaGFsbCBzdGFuZC4KQnV0IGlmIGhlciBodXNiYW5kIGRpc2FsbG93ZWQgaGVyIG9uIHRoZSBkYXkgdGhhdCBoZSBoZWFyZCBpdDsgdGhlbiBoZSBzaGFsbCBtYWtlIGhlciB2b3cgd2hpY2ggc2hlIHZvd2VkLCBhbmQgdGhhdCB3aGljaCBzaGUgdXR0ZXJlZCB3aXRoIGhlciBsaXBzLCB3aGVyZXdpdGggc2hlIGJvdW5kIGhlciBzb3VsLCBvZiBub25lIGVmZmVjdDogYW5kIHRoZSBMT1JEIHNoYWxsIGZvcmdpdmUgaGVyLgpCdXQgZXZlcnkgdm93IG9mIGEgd2lkb3csIGFuZCBvZiBoZXIgdGhhdCBpcyBkaXZvcmNlZCwgd2hlcmV3aXRoIHRoZXkgaGF2ZSBib3VuZCB0aGVpciBzb3Vscywgc2hhbGwgc3RhbmQgYWdhaW5zdCBoZXIuCkFuZCBpZiBzaGUgdm93ZWQgaW4gaGVyIGh1c2JhbmQncyBob3VzZSwgb3IgYm91bmQgaGVyIHNvdWwgYnkgYSBib25kIHdpdGggYW4gb2F0aDsKQW5kIGhlciBodXNiYW5kIGhlYXJkIGl0LCBhbmQgaGVsZCBoaXMgcGVhY2UgYXQgaGVyLCBhbmQgZGlzYWxsb3dlZCBoZXIgbm90OiB0aGVuIGFsbCBoZXIgdm93cyBzaGFsbCBzdGFuZCwgYW5kIGV2ZXJ5IGJvbmQgd2hlcmV3aXRoIHNoZSBib3VuZCBoZXIgc291bCBzaGFsbCBzdGFuZC4KQnV0IGlmIGhlciBodXNiYW5kIGhhdGggdXR0ZXJseSBtYWRlIHRoZW0gdm9pZCBvbiB0aGUgZGF5IGhlIGhlYXJkIHRoZW07IHRoZW4gd2hhdHNvZXZlciBwcm9jZWVkZWQgb3V0IG9mIGhlciBsaXBzIGNvbmNlcm5pbmcgaGVyIHZvd3MsIG9yIGNvbmNlcm5pbmcgdGhlIGJvbmQgb2YgaGVyIHNvdWwsIHNoYWxsIG5vdCBzdGFuZDogaGVyIGh1c2JhbmQgaGF0aCBtYWRlIHRoZW0gdm9pZDsgYW5kIHRoZSBMT1JEIHNoYWxsIGZvcmdpdmUgaGVyLgpFdmVyeSB2b3csIGFuZCBldmVyeSBiaW5kaW5nIG9hdGggdG8gYWZmbGljdCB0aGUgc291bCwgaGVyIGh1c2JhbmQgbWF5IGVzdGFibGlzaCBpdCwgb3IgaGVyIGh1c2JhbmQgbWF5IG1ha2UgaXQgdm9pZC4KQnV0IGlmIGhlciBodXNiYW5kIGFsdG9nZXRoZXIgaG9sZCBoaXMgcGVhY2UgYXQgaGVyIGZyb20gZGF5IHRvIGRheTsgdGhlbiBoZSBlc3RhYmxpc2hldGggYWxsIGhlciB2b3dzLCBvciBhbGwgaGVyIGJvbmRzLCB3aGljaCBhcmUgdXBvbiBoZXI6IGhlIGNvbmZpcm1ldGggdGhlbSwgYmVjYXVzZSBoZSBoZWxkIGhpcyBwZWFjZSBhdCBoZXIgaW4gdGhlIGRheSB0aGF0IGhlIGhlYXJkIHRoZW0uCkJ1dCBpZiBoZSBzaGFsbCBhbnkgd2F5cyBtYWtlIHRoZW0gdm9pZCBhZnRlciB0aGF0IGhlIGhhdGggaGVhcmQgdGhlbTsgdGhlbiBoZSBzaGFsbCBiZWFyIGhlciBpbmlxdWl0eS4KVGhlc2UgYXJlIHRoZSBzdGF0dXRlcywgd2hpY2ggdGhlIExPUkQgY29tbWFuZGVkIE1vc2VzLCBiZXR3ZWVuIGEgbWFuIGFuZCBoaXMgd2lmZSwgYmV0d2VlbiB0aGUgZmF0aGVyIGFuZCBoaXMgZGF1Z2h0ZXIsIGJlaW5nIHlldCBpbiBoZXIgeW91dGggaW4gaGVyIGZhdGhlcidzIGhvdXNlLgpBbmQgdGhlIExPUkQgc3Bha2UgdW50byBNb3Nlcywgc2F5aW5nLApBdmVuZ2UgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBvZiB0aGUgTWlkaWFuaXRlczogYWZ0ZXJ3YXJkIHNoYWx0IHRob3UgYmUgZ2F0aGVyZWQgdW50byB0aHkgcGVvcGxlLgpBbmQgTW9zZXMgc3Bha2UgdW50byB0aGUgcGVvcGxlLCBzYXlpbmcsIEFybSBzb21lIG9mIHlvdXJzZWx2ZXMgdW50byB0aGUgd2FyLCBhbmQgbGV0IHRoZW0gZ28gYWdhaW5zdCB0aGUgTWlkaWFuaXRlcywgYW5kIGF2ZW5nZSB0aGUgTE9SRCBvZiBNaWRpYW4uCk9mIGV2ZXJ5IHRyaWJlIGEgdGhvdXNhbmQsIHRocm91Z2hvdXQgYWxsIHRoZSB0cmliZXMgb2YgSXNyYWVsLCBzaGFsbCB5ZSBzZW5kIHRvIHRoZSB3YXIuClNvIHRoZXJlIHdlcmUgZGVsaXZlcmVkIG91dCBvZiB0aGUgdGhvdXNhbmRzIG9mIElzcmFlbCwgYSB0aG91c2FuZCBvZiBldmVyeSB0cmliZSwgdHdlbHZlIHRob3VzYW5kIGFybWVkIGZvciB3YXIuCkFuZCBNb3NlcyBzZW50IHRoZW0gdG8gdGhlIHdhciwgYSB0aG91c2FuZCBvZiBldmVyeSB0cmliZSwgdGhlbSBhbmQgUGhpbmVoYXMgdGhlIHNvbiBvZiBFbGVhemFyIHRoZSBwcmllc3QsIHRvIHRoZSB3YXIsIHdpdGggdGhlIGhvbHkgaW5zdHJ1bWVudHMsIGFuZCB0aGUgdHJ1bXBldHMgdG8gYmxvdyBpbiBoaXMgaGFuZC4KQW5kIHRoZXkgd2FycmVkIGFnYWluc3QgdGhlIE1pZGlhbml0ZXMsIGFzIHRoZSBMT1JEIGNvbW1hbmRlZCBNb3NlczsgYW5kIHRoZXkgc2xldyBhbGwgdGhlIG1hbGVzLgpBbmQgdGhleSBzbGV3IHRoZSBraW5ncyBvZiBNaWRpYW4sIGJlc2lkZSB0aGUgcmVzdCBvZiB0aGVtIHRoYXQgd2VyZSBzbGFpbjsgbmFtZWx5LCBFdmksIGFuZCBSZWtlbSwgYW5kIFp1ciwgYW5kIEh1ciwgYW5kIFJlYmEsIGZpdmUga2luZ3Mgb2YgTWlkaWFuOiBCYWxhYW0gYWxzbyB0aGUgc29uIG9mIEJlb3IgdGhleSBzbGV3IHdpdGggdGhlIHN3b3JkLgpBbmQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCB0b29rIGFsbCB0aGUgd29tZW4gb2YgTWlkaWFuIGNhcHRpdmVzLCBhbmQgdGhlaXIgbGl0dGxlIG9uZXMsIGFuZCB0b29rIHRoZSBzcG9pbCBvZiBhbGwgdGhlaXIgY2F0dGxlLCBhbmQgYWxsIHRoZWlyIGZsb2NrcywgYW5kIGFsbCB0aGVpciBnb29kcy4KQW5kIHRoZXkgYnVybnQgYWxsIHRoZWlyIGNpdGllcyB3aGVyZWluIHRoZXkgZHdlbHQsIGFuZCBhbGwgdGhlaXIgZ29vZGx5IGNhc3RsZXMsIHdpdGggZmlyZS4KQW5kIHRoZXkgdG9vayBhbGwgdGhlIHNwb2lsLCBhbmQgYWxsIHRoZSBwcmV5LCBib3RoIG9mIG1lbiBhbmQgb2YgYmVhc3RzLgpBbmQgdGhleSBicm91Z2h0IHRoZSBjYXB0aXZlcywgYW5kIHRoZSBwcmV5LCBhbmQgdGhlIHNwb2lsLCB1bnRvIE1vc2VzLCBhbmQgRWxlYXphciB0aGUgcHJpZXN0LCBhbmQgdW50byB0aGUgY29uZ3JlZ2F0aW9uIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIHVudG8gdGhlIGNhbXAgYXQgdGhlIHBsYWlucyBvZiBNb2FiLCB3aGljaCBhcmUgYnkgSm9yZGFuIG5lYXIgSmVyaWNoby4KQW5kIE1vc2VzLCBhbmQgRWxlYXphciB0aGUgcHJpZXN0LCBhbmQgYWxsIHRoZSBwcmluY2VzIG9mIHRoZSBjb25ncmVnYXRpb24sIHdlbnQgZm9ydGggdG8gbWVldCB0aGVtIHdpdGhvdXQgdGhlIGNhbXAuCkFuZCBNb3NlcyB3YXMgd3JvdGggd2l0aCB0aGUgb2ZmaWNlcnMgb2YgdGhlIGhvc3QsIHdpdGggdGhlIGNhcHRhaW5zIG92ZXIgdGhvdXNhbmRzLCBhbmQgY2FwdGFpbnMgb3ZlciBodW5kcmVkcywgd2hpY2ggY2FtZSBmcm9tIHRoZSBiYXR0bGUuCkFuZCBNb3NlcyBzYWlkIHVudG8gdGhlbSwgSGF2ZSB5ZSBzYXZlZCBhbGwgdGhlIHdvbWVuIGFsaXZlPwpCZWhvbGQsIHRoZXNlIGNhdXNlZCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLCB0aHJvdWdoIHRoZSBjb3Vuc2VsIG9mIEJhbGFhbSwgdG8gY29tbWl0IHRyZXNwYXNzIGFnYWluc3QgdGhlIExPUkQgaW4gdGhlIG1hdHRlciBvZiBQZW9yLCBhbmQgdGhlcmUgd2FzIGEgcGxhZ3VlIGFtb25nIHRoZSBjb25ncmVnYXRpb24gb2YgdGhlIExPUkQuCk5vdyB0aGVyZWZvcmUga2lsbCBldmVyeSBtYWxlIGFtb25nIHRoZSBsaXR0bGUgb25lcywgYW5kIGtpbGwgZXZlcnkgd29tYW4gdGhhdCBoYXRoIGtub3duIG1hbiBieSBseWluZyB3aXRoIGhpbS4KQnV0IGFsbCB0aGUgd29tZW4gY2hpbGRyZW4sIHRoYXQgaGF2ZSBub3Qga25vd24gYSBtYW4gYnkgbHlpbmcgd2l0aCBoaW0sIGtlZXAgYWxpdmUgZm9yIHlvdXJzZWx2ZXMuCkFuZCBkbyB5ZSBhYmlkZSB3aXRob3V0IHRoZSBjYW1wIHNldmVuIGRheXM6IHdob3NvZXZlciBoYXRoIGtpbGxlZCBhbnkgcGVyc29uLCBhbmQgd2hvc29ldmVyIGhhdGggdG91Y2hlZCBhbnkgc2xhaW4sIHB1cmlmeSBib3RoIHlvdXJzZWx2ZXMgYW5kIHlvdXIgY2FwdGl2ZXMgb24gdGhlIHRoaXJkIGRheSwgYW5kIG9uIHRoZSBzZXZlbnRoIGRheS4KQW5kIHB1cmlmeSBhbGwgeW91ciByYWltZW50LCBhbmQgYWxsIHRoYXQgaXMgbWFkZSBvZiBza2lucywgYW5kIGFsbCB3b3JrIG9mIGdvYXRzJyBoYWlyLCBhbmQgYWxsIHRoaW5ncyBtYWRlIG9mIHdvb2QuCkFuZCBFbGVhemFyIHRoZSBwcmllc3Qgc2FpZCB1bnRvIHRoZSBtZW4gb2Ygd2FyIHdoaWNoIHdlbnQgdG8gdGhlIGJhdHRsZSwgVGhpcyBpcyB0aGUgb3JkaW5hbmNlIG9mIHRoZSBsYXcgd2hpY2ggdGhlIExPUkQgY29tbWFuZGVkIE1vc2VzOwpPbmx5IHRoZSBnb2xkLCBhbmQgdGhlIHNpbHZlciwgdGhlIGJyYXNzLCB0aGUgaXJvbiwgdGhlIHRpbiwgYW5kIHRoZSBsZWFkLApFdmVyeSB0aGluZyB0aGF0IG1heSBhYmlkZSB0aGUgZmlyZSwgeWUgc2hhbGwgbWFrZSBpdCBnbyB0aHJvdWdoIHRoZSBmaXJlLCBhbmQgaXQgc2hhbGwgYmUgY2xlYW46IG5ldmVydGhlbGVzcyBpdCBzaGFsbCBiZSBwdXJpZmllZCB3aXRoIHRoZSB3YXRlciBvZiBzZXBhcmF0aW9uOiBhbmQgYWxsIHRoYXQgYWJpZGV0aCBub3QgdGhlIGZpcmUgeWUgc2hhbGwgbWFrZSBnbyB0aHJvdWdoIHRoZSB3YXRlci4KQW5kIHllIHNoYWxsIHdhc2ggeW91ciBjbG90aGVzIG9uIHRoZSBzZXZlbnRoIGRheSwgYW5kIHllIHNoYWxsIGJlIGNsZWFuLCBhbmQgYWZ0ZXJ3YXJkIHllIHNoYWxsIGNvbWUgaW50byB0aGUgY2FtcC4KQW5kIHRoZSBMT1JEIHNwYWtlIHVudG8gTW9zZXMsIHNheWluZywKVGFrZSB0aGUgc3VtIG9mIHRoZSBwcmV5IHRoYXQgd2FzIHRha2VuLCBib3RoIG9mIG1hbiBhbmQgb2YgYmVhc3QsIHRob3UsIGFuZCBFbGVhemFyIHRoZSBwcmllc3QsIGFuZCB0aGUgY2hpZWYgZmF0aGVycyBvZiB0aGUgY29uZ3JlZ2F0aW9uOgpBbmQgZGl2aWRlIHRoZSBwcmV5IGludG8gdHdvIHBhcnRzOyBiZXR3ZWVuIHRoZW0gdGhhdCB0b29rIHRoZSB3YXIgdXBvbiB0aGVtLCB3aG8gd2VudCBvdXQgdG8gYmF0dGxlLCBhbmQgYmV0d2VlbiBhbGwgdGhlIGNvbmdyZWdhdGlvbjoKQW5kIGxldnkgYSB0cmlidXRlIHVudG8gdGhlIExvcmQgb2YgdGhlIG1lbiBvZiB3YXIgd2hpY2ggd2VudCBvdXQgdG8gYmF0dGxlOiBvbmUgc291bCBvZiBmaXZlIGh1bmRyZWQsIGJvdGggb2YgdGhlIHBlcnNvbnMsIGFuZCBvZiB0aGUgYmVldmVzLCBhbmQgb2YgdGhlIGFzc2VzLCBhbmQgb2YgdGhlIHNoZWVwOgpUYWtlIGl0IG9mIHRoZWlyIGhhbGYsIGFuZCBnaXZlIGl0IHVudG8gRWxlYXphciB0aGUgcHJpZXN0LCBmb3IgYW4gaGVhdmUgb2ZmZXJpbmcgb2YgdGhlIExPUkQuCkFuZCBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsJ3MgaGFsZiwgdGhvdSBzaGFsdCB0YWtlIG9uZSBwb3J0aW9uIG9mIGZpZnR5LCBvZiB0aGUgcGVyc29ucywgb2YgdGhlIGJlZXZlcywgb2YgdGhlIGFzc2VzLCBhbmQgb2YgdGhlIGZsb2Nrcywgb2YgYWxsIG1hbm5lciBvZiBiZWFzdHMsIGFuZCBnaXZlIHRoZW0gdW50byB0aGUgTGV2aXRlcywgd2hpY2gga2VlcCB0aGUgY2hhcmdlIG9mIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBMT1JELgpBbmQgTW9zZXMgYW5kIEVsZWF6YXIgdGhlIHByaWVzdCBkaWQgYXMgdGhlIExPUkQgY29tbWFuZGVkIE1vc2VzLgpBbmQgdGhlIGJvb3R5LCBiZWluZyB0aGUgcmVzdCBvZiB0aGUgcHJleSB3aGljaCB0aGUgbWVuIG9mIHdhciBoYWQgY2F1Z2h0LCB3YXMgc2l4IGh1bmRyZWQgdGhvdXNhbmQgYW5kIHNldmVudHkgdGhvdXNhbmQgYW5kIGZpdmUgdGhvdXNhbmQgc2hlZXAsCkFuZCB0aHJlZXNjb3JlIGFuZCB0d2VsdmUgdGhvdXNhbmQgYmVldmVzLApBbmQgdGhyZWVzY29yZSBhbmQgb25lIHRob3VzYW5kIGFzc2VzLApBbmQgdGhpcnR5IGFuZCB0d28gdGhvdXNhbmQgcGVyc29ucyBpbiBhbGwsIG9mIHdvbWVuIHRoYXQgaGFkIG5vdCBrbm93biBtYW4gYnkgbHlpbmcgd2l0aCBoaW0uCkFuZCB0aGUgaGFsZiwgd2hpY2ggd2FzIHRoZSBwb3J0aW9uIG9mIHRoZW0gdGhhdCB3ZW50IG91dCB0byB3YXIsIHdhcyBpbiBudW1iZXIgdGhyZWUgaHVuZHJlZCB0aG91c2FuZCBhbmQgc2V2ZW4gYW5kIHRoaXJ0eSB0aG91c2FuZCBhbmQgZml2ZSBodW5kcmVkIHNoZWVwOgpBbmQgdGhlIExPUkQncyB0cmlidXRlIG9mIHRoZSBzaGVlcCB3YXMgc2l4IGh1bmRyZWQgYW5kIHRocmVlc2NvcmUgYW5kIGZpZnRlZW4uCkFuZCB0aGUgYmVldmVzIHdlcmUgdGhpcnR5IGFuZCBzaXggdGhvdXNhbmQ7IG9mIHdoaWNoIHRoZSBMT1JEJ3MgdHJpYnV0ZSB3YXMgdGhyZWVzY29yZSBhbmQgdHdlbHZlLgpBbmQgdGhlIGFzc2VzIHdlcmUgdGhpcnR5IHRob3VzYW5kIGFuZCBmaXZlIGh1bmRyZWQ7IG9mIHdoaWNoIHRoZSBMT1JEJ3MgdHJpYnV0ZSB3YXMgdGhyZWVzY29yZSBhbmQgb25lLgpBbmQgdGhlIHBlcnNvbnMgd2VyZSBzaXh0ZWVuIHRob3VzYW5kOyBvZiB3aGljaCB0aGUgTE9SRCdzIHRyaWJ1dGUgd2FzIHRoaXJ0eSBhbmQgdHdvIHBlcnNvbnMuCkFuZCBNb3NlcyBnYXZlIHRoZSB0cmlidXRlLCB3aGljaCB3YXMgdGhlIExPUkQncyBoZWF2ZSBvZmZlcmluZywgdW50byBFbGVhemFyIHRoZSBwcmllc3QsIGFzIHRoZSBMT1JEIGNvbW1hbmRlZCBNb3Nlcy4KQW5kIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwncyBoYWxmLCB3aGljaCBNb3NlcyBkaXZpZGVkIGZyb20gdGhlIG1lbiB0aGF0IHdhcnJlZCwKKE5vdyB0aGUgaGFsZiB0aGF0IHBlcnRhaW5lZCB1bnRvIHRoZSBjb25ncmVnYXRpb24gd2FzIHRocmVlIGh1bmRyZWQgdGhvdXNhbmQgYW5kIHRoaXJ0eSB0aG91c2FuZCBhbmQgc2V2ZW4gdGhvdXNhbmQgYW5kIGZpdmUgaHVuZHJlZCBzaGVlcCwKQW5kIHRoaXJ0eSBhbmQgc2l4IHRob3VzYW5kIGJlZXZlcywKQW5kIHRoaXJ0eSB0aG91c2FuZCBhc3NlcyBhbmQgZml2ZSBodW5kcmVkLApBbmQgc2l4dGVlbiB0aG91c2FuZCBwZXJzb25zOykKRXZlbiBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsJ3MgaGFsZiwgTW9zZXMgdG9vayBvbmUgcG9ydGlvbiBvZiBmaWZ0eSwgYm90aCBvZiBtYW4gYW5kIG9mIGJlYXN0LCBhbmQgZ2F2ZSB0aGVtIHVudG8gdGhlIExldml0ZXMsIHdoaWNoIGtlcHQgdGhlIGNoYXJnZSBvZiB0aGUgdGFiZXJuYWNsZSBvZiB0aGUgTE9SRDsgYXMgdGhlIExPUkQgY29tbWFuZGVkIE1vc2VzLgpBbmQgdGhlIG9mZmljZXJzIHdoaWNoIHdlcmUgb3ZlciB0aG91c2FuZHMgb2YgdGhlIGhvc3QsIHRoZSBjYXB0YWlucyBvZiB0aG91c2FuZHMsIGFuZCBjYXB0YWlucyBvZiBodW5kcmVkcywgY2FtZSBuZWFyIHVudG8gTW9zZXM6CkFuZCB0aGV5IHNhaWQgdW50byBNb3NlcywgVGh5IHNlcnZhbnRzIGhhdmUgdGFrZW4gdGhlIHN1bSBvZiB0aGUgbWVuIG9mIHdhciB3aGljaCBhcmUgdW5kZXIgb3VyIGNoYXJnZSwgYW5kIHRoZXJlIGxhY2tldGggbm90IG9uZSBtYW4gb2YgdXMuCldlIGhhdmUgdGhlcmVmb3JlIGJyb3VnaHQgYW4gb2JsYXRpb24gZm9yIHRoZSBMT1JELCB3aGF0IGV2ZXJ5IG1hbiBoYXRoIGdvdHRlbiwgb2YgamV3ZWxzIG9mIGdvbGQsIGNoYWlucywgYW5kIGJyYWNlbGV0cywgcmluZ3MsIGVhcnJpbmdzLCBhbmQgdGFibGV0cywgdG8gbWFrZSBhbiBhdG9uZW1lbnQgZm9yIG91ciBzb3VscyBiZWZvcmUgdGhlIExPUkQuCkFuZCBNb3NlcyBhbmQgRWxlYXphciB0aGUgcHJpZXN0IHRvb2sgdGhlIGdvbGQgb2YgdGhlbSwgZXZlbiBhbGwgd3JvdWdodCBqZXdlbHMuCkFuZCBhbGwgdGhlIGdvbGQgb2YgdGhlIG9mZmVyaW5nIHRoYXQgdGhleSBvZmZlcmVkIHVwIHRvIHRoZSBMT1JELCBvZiB0aGUgY2FwdGFpbnMgb2YgdGhvdXNhbmRzLCBhbmQgb2YgdGhlIGNhcHRhaW5zIG9mIGh1bmRyZWRzLCB3YXMgc2l4dGVlbiB0aG91c2FuZCBzZXZlbiBodW5kcmVkIGFuZCBmaWZ0eSBzaGVrZWxzLgooRm9yIHRoZSBtZW4gb2Ygd2FyIGhhZCB0YWtlbiBzcG9pbCwgZXZlcnkgbWFuIGZvciBoaW1zZWxmLikKQW5kIE1vc2VzIGFuZCBFbGVhemFyIHRoZSBwcmllc3QgdG9vayB0aGUgZ29sZCBvZiB0aGUgY2FwdGFpbnMgb2YgdGhvdXNhbmRzIGFuZCBvZiBodW5kcmVkcywgYW5kIGJyb3VnaHQgaXQgaW50byB0aGUgdGFiZXJuYWNsZSBvZiB0aGUgY29uZ3JlZ2F0aW9uLCBmb3IgYSBtZW1vcmlhbCBmb3IgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBiZWZvcmUgdGhlIExPUkQuCk5vdyB0aGUgY2hpbGRyZW4gb2YgUmV1YmVuIGFuZCB0aGUgY2hpbGRyZW4gb2YgR2FkIGhhZCBhIHZlcnkgZ3JlYXQgbXVsdGl0dWRlIG9mIGNhdHRsZTogYW5kIHdoZW4gdGhleSBzYXcgdGhlIGxhbmQgb2YgSmF6ZXIsIGFuZCB0aGUgbGFuZCBvZiBHaWxlYWQsIHRoYXQsIGJlaG9sZCwgdGhlIHBsYWNlIHdhcyBhIHBsYWNlIGZvciBjYXR0bGU7ClRoZSBjaGlsZHJlbiBvZiBHYWQgYW5kIHRoZSBjaGlsZHJlbiBvZiBSZXViZW4gY2FtZSBhbmQgc3Bha2UgdW50byBNb3NlcywgYW5kIHRvIEVsZWF6YXIgdGhlIHByaWVzdCwgYW5kIHVudG8gdGhlIHByaW5jZXMgb2YgdGhlIGNvbmdyZWdhdGlvbiwgc2F5aW5nLApBdGFyb3RoLCBhbmQgRGlib24sIGFuZCBKYXplciwgYW5kIE5pbXJhaCwgYW5kIEhlc2hib24sIGFuZCBFbGVhbGVoLCBhbmQgU2hlYmFtLCBhbmQgTmVibywgYW5kIEJlb24sCkV2ZW4gdGhlIGNvdW50cnkgd2hpY2ggdGhlIExPUkQgc21vdGUgYmVmb3JlIHRoZSBjb25ncmVnYXRpb24gb2YgSXNyYWVsLCBpcyBhIGxhbmQgZm9yIGNhdHRsZSwgYW5kIHRoeSBzZXJ2YW50cyBoYXZlIGNhdHRsZToKV2hlcmVmb3JlLCBzYWlkIHRoZXksIGlmIHdlIGhhdmUgZm91bmQgZ3JhY2UgaW4gdGh5IHNpZ2h0LCBsZXQgdGhpcyBsYW5kIGJlIGdpdmVuIHVudG8gdGh5IHNlcnZhbnRzIGZvciBhIHBvc3Nlc3Npb24sIGFuZCBicmluZyB1cyBub3Qgb3ZlciBKb3JkYW4uCkFuZCBNb3NlcyBzYWlkIHVudG8gdGhlIGNoaWxkcmVuIG9mIEdhZCBhbmQgdG8gdGhlIGNoaWxkcmVuIG9mIFJldWJlbiwgU2hhbGwgeW91ciBicmV0aHJlbiBnbyB0byB3YXIsIGFuZCBzaGFsbCB5ZSBzaXQgaGVyZT8KQW5kIHdoZXJlZm9yZSBkaXNjb3VyYWdlIHllIHRoZSBoZWFydCBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGZyb20gZ29pbmcgb3ZlciBpbnRvIHRoZSBsYW5kIHdoaWNoIHRoZSBMT1JEIGhhdGggZ2l2ZW4gdGhlbT8KVGh1cyBkaWQgeW91ciBmYXRoZXJzLCB3aGVuIEkgc2VudCB0aGVtIGZyb20gS2FkZXNoYmFybmVhIHRvIHNlZSB0aGUgbGFuZC4KRm9yIHdoZW4gdGhleSB3ZW50IHVwIHVudG8gdGhlIHZhbGxleSBvZiBFc2hjb2wsIGFuZCBzYXcgdGhlIGxhbmQsIHRoZXkgZGlzY291cmFnZWQgdGhlIGhlYXJ0IG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIHRoYXQgdGhleSBzaG91bGQgbm90IGdvIGludG8gdGhlIGxhbmQgd2hpY2ggdGhlIExPUkQgaGFkIGdpdmVuIHRoZW0uCkFuZCB0aGUgTE9SRCdzIGFuZ2VyIHdhcyBraW5kbGVkIHRoZSBzYW1lIHRpbWUsIGFuZCBoZSBzd2FyZSwgc2F5aW5nLApTdXJlbHkgbm9uZSBvZiB0aGUgbWVuIHRoYXQgY2FtZSB1cCBvdXQgb2YgRWd5cHQsIGZyb20gdHdlbnR5IHllYXJzIG9sZCBhbmQgdXB3YXJkLCBzaGFsbCBzZWUgdGhlIGxhbmQgd2hpY2ggSSBzd2FyZSB1bnRvIEFicmFoYW0sIHVudG8gSXNhYWMsIGFuZCB1bnRvIEphY29iOyBiZWNhdXNlIHRoZXkgaGF2ZSBub3Qgd2hvbGx5IGZvbGxvd2VkIG1lOgpTYXZlIENhbGViIHRoZSBzb24gb2YgSmVwaHVubmVoIHRoZSBLZW5leml0ZSwgYW5kIEpvc2h1YSB0aGUgc29uIG9mIE51bjogZm9yIHRoZXkgaGF2ZSB3aG9sbHkgZm9sbG93ZWQgdGhlIExPUkQuCkFuZCB0aGUgTE9SRCdzIGFuZ2VyIHdhcyBraW5kbGVkIGFnYWluc3QgSXNyYWVsLCBhbmQgaGUgbWFkZSB0aGVtIHdhbmRlciBpbiB0aGUgd2lsZGVybmVzcyBmb3J0eSB5ZWFycywgdW50aWwgYWxsIHRoZSBnZW5lcmF0aW9uLCB0aGF0IGhhZCBkb25lIGV2aWwgaW4gdGhlIHNpZ2h0IG9mIHRoZSBMT1JELCB3YXMgY29uc3VtZWQuCkFuZCwgYmVob2xkLCB5ZSBhcmUgcmlzZW4gdXAgaW4geW91ciBmYXRoZXJzJyBzdGVhZCwgYW4gaW5jcmVhc2Ugb2Ygc2luZnVsIG1lbiwgdG8gYXVnbWVudCB5ZXQgdGhlIGZpZXJjZSBhbmdlciBvZiB0aGUgTE9SRCB0b3dhcmQgSXNyYWVsLgpGb3IgaWYgeWUgdHVybiBhd2F5IGZyb20gYWZ0ZXIgaGltLCBoZSB3aWxsIHlldCBhZ2FpbiBsZWF2ZSB0aGVtIGluIHRoZSB3aWxkZXJuZXNzOyBhbmQgeWUgc2hhbGwgZGVzdHJveSBhbGwgdGhpcyBwZW9wbGUuCkFuZCB0aGV5IGNhbWUgbmVhciB1bnRvIGhpbSwgYW5kIHNhaWQsIFdlIHdpbGwgYnVpbGQgc2hlZXBmb2xkcyBoZXJlIGZvciBvdXIgY2F0dGxlLCBhbmQgY2l0aWVzIGZvciBvdXIgbGl0dGxlIG9uZXM6CkJ1dCB3ZSBvdXJzZWx2ZXMgd2lsbCBnbyByZWFkeSBhcm1lZCBiZWZvcmUgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgdW50aWwgd2UgaGF2ZSBicm91Z2h0IHRoZW0gdW50byB0aGVpciBwbGFjZTogYW5kIG91ciBsaXR0bGUgb25lcyBzaGFsbCBkd2VsbCBpbiB0aGUgZmVuY2VkIGNpdGllcyBiZWNhdXNlIG9mIHRoZSBpbmhhYml0YW50cyBvZiB0aGUgbGFuZC4KV2Ugd2lsbCBub3QgcmV0dXJuIHVudG8gb3VyIGhvdXNlcywgdW50aWwgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBoYXZlIGluaGVyaXRlZCBldmVyeSBtYW4gaGlzIGluaGVyaXRhbmNlLgpGb3Igd2Ugd2lsbCBub3QgaW5oZXJpdCB3aXRoIHRoZW0gb24geW9uZGVyIHNpZGUgSm9yZGFuLCBvciBmb3J3YXJkOyBiZWNhdXNlIG91ciBpbmhlcml0YW5jZSBpcyBmYWxsZW4gdG8gdXMgb24gdGhpcyBzaWRlIEpvcmRhbiBlYXN0d2FyZC4KQW5kIE1vc2VzIHNhaWQgdW50byB0aGVtLCBJZiB5ZSB3aWxsIGRvIHRoaXMgdGhpbmcsIGlmIHllIHdpbGwgZ28gYXJtZWQgYmVmb3JlIHRoZSBMT1JEIHRvIHdhciwKQW5kIHdpbGwgZ28gYWxsIG9mIHlvdSBhcm1lZCBvdmVyIEpvcmRhbiBiZWZvcmUgdGhlIExPUkQsIHVudGlsIGhlIGhhdGggZHJpdmVuIG91dCBoaXMgZW5lbWllcyBmcm9tIGJlZm9yZSBoaW0sCkFuZCB0aGUgbGFuZCBiZSBzdWJkdWVkIGJlZm9yZSB0aGUgTE9SRDogdGhlbiBhZnRlcndhcmQgeWUgc2hhbGwgcmV0dXJuLCBhbmQgYmUgZ3VpbHRsZXNzIGJlZm9yZSB0aGUgTE9SRCwgYW5kIGJlZm9yZSBJc3JhZWw7IGFuZCB0aGlzIGxhbmQgc2hhbGwgYmUgeW91ciBwb3NzZXNzaW9uIGJlZm9yZSB0aGUgTE9SRC4KQnV0IGlmIHllIHdpbGwgbm90IGRvIHNvLCBiZWhvbGQsIHllIGhhdmUgc2lubmVkIGFnYWluc3QgdGhlIExPUkQ6IGFuZCBiZSBzdXJlIHlvdXIgc2luIHdpbGwgZmluZCB5b3Ugb3V0LgpCdWlsZCB5b3UgY2l0aWVzIGZvciB5b3VyIGxpdHRsZSBvbmVzLCBhbmQgZm9sZHMgZm9yIHlvdXIgc2hlZXA7IGFuZCBkbyB0aGF0IHdoaWNoIGhhdGggcHJvY2VlZGVkIG91dCBvZiB5b3VyIG1vdXRoLgpBbmQgdGhlIGNoaWxkcmVuIG9mIEdhZCBhbmQgdGhlIGNoaWxkcmVuIG9mIFJldWJlbiBzcGFrZSB1bnRvIE1vc2VzLCBzYXlpbmcsIFRoeSBzZXJ2YW50cyB3aWxsIGRvIGFzIG15IGxvcmQgY29tbWFuZGV0aC4KT3VyIGxpdHRsZSBvbmVzLCBvdXIgd2l2ZXMsIG91ciBmbG9ja3MsIGFuZCBhbGwgb3VyIGNhdHRsZSwgc2hhbGwgYmUgdGhlcmUgaW4gdGhlIGNpdGllcyBvZiBHaWxlYWQ6CkJ1dCB0aHkgc2VydmFudHMgd2lsbCBwYXNzIG92ZXIsIGV2ZXJ5IG1hbiBhcm1lZCBmb3Igd2FyLCBiZWZvcmUgdGhlIExPUkQgdG8gYmF0dGxlLCBhcyBteSBsb3JkIHNhaXRoLgpTbyBjb25jZXJuaW5nIHRoZW0gTW9zZXMgY29tbWFuZGVkIEVsZWF6YXIgdGhlIHByaWVzdCwgYW5kIEpvc2h1YSB0aGUgc29uIG9mIE51biwgYW5kIHRoZSBjaGllZiBmYXRoZXJzIG9mIHRoZSB0cmliZXMgb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbDoKQW5kIE1vc2VzIHNhaWQgdW50byB0aGVtLCBJZiB0aGUgY2hpbGRyZW4gb2YgR2FkIGFuZCB0aGUgY2hpbGRyZW4gb2YgUmV1YmVuIHdpbGwgcGFzcyB3aXRoIHlvdSBvdmVyIEpvcmRhbiwgZXZlcnkgbWFuIGFybWVkIHRvIGJhdHRsZSwgYmVmb3JlIHRoZSBMT1JELCBhbmQgdGhlIGxhbmQgc2hhbGwgYmUgc3ViZHVlZCBiZWZvcmUgeW91OyB0aGVuIHllIHNoYWxsIGdpdmUgdGhlbSB0aGUgbGFuZCBvZiBHaWxlYWQgZm9yIGEgcG9zc2Vzc2lvbjoKQnV0IGlmIHRoZXkgd2lsbCBub3QgcGFzcyBvdmVyIHdpdGggeW91IGFybWVkLCB0aGV5IHNoYWxsIGhhdmUgcG9zc2Vzc2lvbnMgYW1vbmcgeW91IGluIHRoZSBsYW5kIG9mIENhbmFhbi4KQW5kIHRoZSBjaGlsZHJlbiBvZiBHYWQgYW5kIHRoZSBjaGlsZHJlbiBvZiBSZXViZW4gYW5zd2VyZWQsIHNheWluZywgQXMgdGhlIExPUkQgaGF0aCBzYWlkIHVudG8gdGh5IHNlcnZhbnRzLCBzbyB3aWxsIHdlIGRvLgpXZSB3aWxsIHBhc3Mgb3ZlciBhcm1lZCBiZWZvcmUgdGhlIExPUkQgaW50byB0aGUgbGFuZCBvZiBDYW5hYW4sIHRoYXQgdGhlIHBvc3Nlc3Npb24gb2Ygb3VyIGluaGVyaXRhbmNlIG9uIHRoaXMgc2lkZSBKb3JkYW4gbWF5IGJlIG91cnMuCkFuZCBNb3NlcyBnYXZlIHVudG8gdGhlbSwgZXZlbiB0byB0aGUgY2hpbGRyZW4gb2YgR2FkLCBhbmQgdG8gdGhlIGNoaWxkcmVuIG9mIFJldWJlbiwgYW5kIHVudG8gaGFsZiB0aGUgdHJpYmUgb2YgTWFuYXNzZWggdGhlIHNvbiBvZiBKb3NlcGgsIHRoZSBraW5nZG9tIG9mIFNpaG9uIGtpbmcgb2YgdGhlIEFtb3JpdGVzLCBhbmQgdGhlIGtpbmdkb20gb2YgT2cga2luZyBvZiBCYXNoYW4sIHRoZSBsYW5kLCB3aXRoIHRoZSBjaXRpZXMgdGhlcmVvZiBpbiB0aGUgY29hc3RzLCBldmVuIHRoZSBjaXRpZXMgb2YgdGhlIGNvdW50cnkgcm91bmQgYWJvdXQuCkFuZCB0aGUgY2hpbGRyZW4gb2YgR2FkIGJ1aWx0IERpYm9uLCBhbmQgQXRhcm90aCwgYW5kIEFyb2VyLApBbmQgQXRyb3RoLCBTaG9waGFuLCBhbmQgSmFhemVyLCBhbmQgSm9nYmVoYWgsCkFuZCBCZXRobmltcmFoLCBhbmQgQmV0aGhhcmFuLCBmZW5jZWQgY2l0aWVzOiBhbmQgZm9sZHMgZm9yIHNoZWVwLgpBbmQgdGhlIGNoaWxkcmVuIG9mIFJldWJlbiBidWlsdCBIZXNoYm9uLCBhbmQgRWxlYWxlaCwgYW5kIEtpcmphdGhhaW0sCkFuZCBOZWJvLCBhbmQgQmFhbG1lb24sICh0aGVpciBuYW1lcyBiZWluZyBjaGFuZ2VkLCkgYW5kIFNoaWJtYWg6IGFuZCBnYXZlIG90aGVyIG5hbWVzIHVudG8gdGhlIGNpdGllcyB3aGljaCB0aGV5IGJ1aWxkZWQuCkFuZCB0aGUgY2hpbGRyZW4gb2YgTWFjaGlyIHRoZSBzb24gb2YgTWFuYXNzZWggd2VudCB0byBHaWxlYWQsIGFuZCB0b29rIGl0LCBhbmQgZGlzcG9zc2Vzc2VkIHRoZSBBbW9yaXRlIHdoaWNoIHdhcyBpbiBpdC4KQW5kIE1vc2VzIGdhdmUgR2lsZWFkIHVudG8gTWFjaGlyIHRoZSBzb24gb2YgTWFuYXNzZWg7IGFuZCBoZSBkd2VsdCB0aGVyZWluLgpBbmQgSmFpciB0aGUgc29uIG9mIE1hbmFzc2VoIHdlbnQgYW5kIHRvb2sgdGhlIHNtYWxsIHRvd25zIHRoZXJlb2YsIGFuZCBjYWxsZWQgdGhlbSBIYXZvdGhqYWlyLgpBbmQgTm9iYWggd2VudCBhbmQgdG9vayBLZW5hdGgsIGFuZCB0aGUgdmlsbGFnZXMgdGhlcmVvZiwgYW5kIGNhbGxlZCBpdCBOb2JhaCwgYWZ0ZXIgaGlzIG93biBuYW1lLgpUaGVzZSBhcmUgdGhlIGpvdXJuZXlzIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIHdoaWNoIHdlbnQgZm9ydGggb3V0IG9mIHRoZSBsYW5kIG9mIEVneXB0IHdpdGggdGhlaXIgYXJtaWVzIHVuZGVyIHRoZSBoYW5kIG9mIE1vc2VzIGFuZCBBYXJvbi4KQW5kIE1vc2VzIHdyb3RlIHRoZWlyIGdvaW5ncyBvdXQgYWNjb3JkaW5nIHRvIHRoZWlyIGpvdXJuZXlzIGJ5IHRoZSBjb21tYW5kbWVudCBvZiB0aGUgTE9SRDogYW5kIHRoZXNlIGFyZSB0aGVpciBqb3VybmV5cyBhY2NvcmRpbmcgdG8gdGhlaXIgZ29pbmdzIG91dC4KQW5kIHRoZXkgZGVwYXJ0ZWQgZnJvbSBSYW1lc2VzIGluIHRoZSBmaXJzdCBtb250aCwgb24gdGhlIGZpZnRlZW50aCBkYXkgb2YgdGhlIGZpcnN0IG1vbnRoOyBvbiB0aGUgbW9ycm93IGFmdGVyIHRoZSBwYXNzb3ZlciB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIHdlbnQgb3V0IHdpdGggYW4gaGlnaCBoYW5kIGluIHRoZSBzaWdodCBvZiBhbGwgdGhlIEVneXB0aWFucy4KRm9yIHRoZSBFZ3lwdGlhbnMgYnVyaWVkIGFsbCB0aGVpciBmaXJzdGJvcm4sIHdoaWNoIHRoZSBMT1JEIGhhZCBzbWl0dGVuIGFtb25nIHRoZW06IHVwb24gdGhlaXIgZ29kcyBhbHNvIHRoZSBMT1JEIGV4ZWN1dGVkIGp1ZGdtZW50cy4KQW5kIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgcmVtb3ZlZCBmcm9tIFJhbWVzZXMsIGFuZCBwaXRjaGVkIGluIFN1Y2NvdGguCkFuZCB0aGV5IGRlcGFydGVkIGZyb20gU3VjY290aCwgYW5kIHBpdGNoZWQgaW4gRXRoYW0sIHdoaWNoIGlzIGluIHRoZSBlZGdlIG9mIHRoZSB3aWxkZXJuZXNzLgpBbmQgdGhleSByZW1vdmVkIGZyb20gRXRoYW0sIGFuZCB0dXJuZWQgYWdhaW4gdW50byBQaWhhaGlyb3RoLCB3aGljaCBpcyBiZWZvcmUgQmFhbHplcGhvbjogYW5kIHRoZXkgcGl0Y2hlZCBiZWZvcmUgTWlnZG9sLgpBbmQgdGhleSBkZXBhcnRlZCBmcm9tIGJlZm9yZSBQaWhhaGlyb3RoLCBhbmQgcGFzc2VkIHRocm91Z2ggdGhlIG1pZHN0IG9mIHRoZSBzZWEgaW50byB0aGUgd2lsZGVybmVzcywgYW5kIHdlbnQgdGhyZWUgZGF5cycgam91cm5leSBpbiB0aGUgd2lsZGVybmVzcyBvZiBFdGhhbSwgYW5kIHBpdGNoZWQgaW4gTWFyYWguCkFuZCB0aGV5IHJlbW92ZWQgZnJvbSBNYXJhaCwgYW5kIGNhbWUgdW50byBFbGltOiBhbmQgaW4gRWxpbSB3ZXJlIHR3ZWx2ZSBmb3VudGFpbnMgb2Ygd2F0ZXIsIGFuZCB0aHJlZXNjb3JlIGFuZCB0ZW4gcGFsbSB0cmVlczsgYW5kIHRoZXkgcGl0Y2hlZCB0aGVyZS4KQW5kIHRoZXkgcmVtb3ZlZCBmcm9tIEVsaW0sIGFuZCBlbmNhbXBlZCBieSB0aGUgUmVkIHNlYS4KQW5kIHRoZXkgcmVtb3ZlZCBmcm9tIHRoZSBSZWQgc2VhLCBhbmQgZW5jYW1wZWQgaW4gdGhlIHdpbGRlcm5lc3Mgb2YgU2luLgpBbmQgdGhleSB0b29rIHRoZWlyIGpvdXJuZXkgb3V0IG9mIHRoZSB3aWxkZXJuZXNzIG9mIFNpbiwgYW5kIGVuY2FtcGVkIGluIERvcGhrYWguCkFuZCB0aGV5IGRlcGFydGVkIGZyb20gRG9waGthaCwgYW5kIGVuY2FtcGVkIGluIEFsdXNoLgpBbmQgdGhleSByZW1vdmVkIGZyb20gQWx1c2gsIGFuZCBlbmNhbXBlZCBhdCBSZXBoaWRpbSwgd2hlcmUgd2FzIG5vIHdhdGVyIGZvciB0aGUgcGVvcGxlIHRvIGRyaW5rLgpBbmQgdGhleSBkZXBhcnRlZCBmcm9tIFJlcGhpZGltLCBhbmQgcGl0Y2hlZCBpbiB0aGUgd2lsZGVybmVzcyBvZiBTaW5haS4KQW5kIHRoZXkgcmVtb3ZlZCBmcm9tIHRoZSBkZXNlcnQgb2YgU2luYWksIGFuZCBwaXRjaGVkIGF0IEtpYnJvdGhoYXR0YWF2YWguCkFuZCB0aGV5IGRlcGFydGVkIGZyb20gS2licm90aGhhdHRhYXZhaCwgYW5kIGVuY2FtcGVkIGF0IEhhemVyb3RoLgpBbmQgdGhleSBkZXBhcnRlZCBmcm9tIEhhemVyb3RoLCBhbmQgcGl0Y2hlZCBpbiBSaXRobWFoLgpBbmQgdGhleSBkZXBhcnRlZCBmcm9tIFJpdGhtYWgsIGFuZCBwaXRjaGVkIGF0IFJpbW1vbnBhcmV6LgpBbmQgdGhleSBkZXBhcnRlZCBmcm9tIFJpbW1vbnBhcmV6LCBhbmQgcGl0Y2hlZCBpbiBMaWJuYWguCkFuZCB0aGV5IHJlbW92ZWQgZnJvbSBMaWJuYWgsIGFuZCBwaXRjaGVkIGF0IFJpc3NhaC4KQW5kIHRoZXkgam91cm5leWVkIGZyb20gUmlzc2FoLCBhbmQgcGl0Y2hlZCBpbiBLZWhlbGF0aGFoLgpBbmQgdGhleSB3ZW50IGZyb20gS2VoZWxhdGhhaCwgYW5kIHBpdGNoZWQgaW4gbW91bnQgU2hhcGhlci4KQW5kIHRoZXkgcmVtb3ZlZCBmcm9tIG1vdW50IFNoYXBoZXIsIGFuZCBlbmNhbXBlZCBpbiBIYXJhZGFoLgpBbmQgdGhleSByZW1vdmVkIGZyb20gSGFyYWRhaCwgYW5kIHBpdGNoZWQgaW4gTWFraGVsb3RoLgpBbmQgdGhleSByZW1vdmVkIGZyb20gTWFraGVsb3RoLCBhbmQgZW5jYW1wZWQgYXQgVGFoYXRoLgpBbmQgdGhleSBkZXBhcnRlZCBmcm9tIFRhaGF0aCwgYW5kIHBpdGNoZWQgYXQgVGFyYWguCkFuZCB0aGV5IHJlbW92ZWQgZnJvbSBUYXJhaCwgYW5kIHBpdGNoZWQgaW4gTWl0aGNhaC4KQW5kIHRoZXkgd2VudCBmcm9tIE1pdGhjYWgsIGFuZCBwaXRjaGVkIGluIEhhc2htb25haC4KQW5kIHRoZXkgZGVwYXJ0ZWQgZnJvbSBIYXNobW9uYWgsIGFuZCBlbmNhbXBlZCBhdCBNb3Nlcm90aC4KQW5kIHRoZXkgZGVwYXJ0ZWQgZnJvbSBNb3Nlcm90aCwgYW5kIHBpdGNoZWQgaW4gQmVuZWphYWthbi4KQW5kIHRoZXkgcmVtb3ZlZCBmcm9tIEJlbmVqYWFrYW4sIGFuZCBlbmNhbXBlZCBhdCBIb3JoYWdpZGdhZC4KQW5kIHRoZXkgd2VudCBmcm9tIEhvcmhhZ2lkZ2FkLCBhbmQgcGl0Y2hlZCBpbiBKb3RiYXRoYWguCkFuZCB0aGV5IHJlbW92ZWQgZnJvbSBKb3RiYXRoYWgsIGFuZCBlbmNhbXBlZCBhdCBFYnJvbmFoLgpBbmQgdGhleSBkZXBhcnRlZCBmcm9tIEVicm9uYWgsIGFuZCBlbmNhbXBlZCBhdCBFemlvbmdhYmVyLgpBbmQgdGhleSByZW1vdmVkIGZyb20gRXppb25nYWJlciwgYW5kIHBpdGNoZWQgaW4gdGhlIHdpbGRlcm5lc3Mgb2YgWmluLCB3aGljaCBpcyBLYWRlc2guCkFuZCB0aGV5IHJlbW92ZWQgZnJvbSBLYWRlc2gsIGFuZCBwaXRjaGVkIGluIG1vdW50IEhvciwgaW4gdGhlIGVkZ2Ugb2YgdGhlIGxhbmQgb2YgRWRvbS4KQW5kIEFhcm9uIHRoZSBwcmllc3Qgd2VudCB1cCBpbnRvIG1vdW50IEhvciBhdCB0aGUgY29tbWFuZG1lbnQgb2YgdGhlIExPUkQsIGFuZCBkaWVkIHRoZXJlLCBpbiB0aGUgZm9ydGlldGggeWVhciBhZnRlciB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIHdlcmUgY29tZSBvdXQgb2YgdGhlIGxhbmQgb2YgRWd5cHQsIGluIHRoZSBmaXJzdCBkYXkgb2YgdGhlIGZpZnRoIG1vbnRoLgpBbmQgQWFyb24gd2FzIGFuIGh1bmRyZWQgYW5kIHR3ZW50eSBhbmQgdGhyZWUgeWVhcnMgb2xkIHdoZW4gaGUgZGllZCBpbiBtb3VudCBIb3IuCkFuZCBraW5nIEFyYWQgdGhlIENhbmFhbml0ZSwgd2hpY2ggZHdlbHQgaW4gdGhlIHNvdXRoIGluIHRoZSBsYW5kIG9mIENhbmFhbiwgaGVhcmQgb2YgdGhlIGNvbWluZyBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLgpBbmQgdGhleSBkZXBhcnRlZCBmcm9tIG1vdW50IEhvciwgYW5kIHBpdGNoZWQgaW4gWmFsbW9uYWguCkFuZCB0aGV5IGRlcGFydGVkIGZyb20gWmFsbW9uYWgsIGFuZCBwaXRjaGVkIGluIFB1bm9uLgpBbmQgdGhleSBkZXBhcnRlZCBmcm9tIFB1bm9uLCBhbmQgcGl0Y2hlZCBpbiBPYm90aC4KQW5kIHRoZXkgZGVwYXJ0ZWQgZnJvbSBPYm90aCwgYW5kIHBpdGNoZWQgaW4gSWplYWJhcmltLCBpbiB0aGUgYm9yZGVyIG9mIE1vYWIuCkFuZCB0aGV5IGRlcGFydGVkIGZyb20gSWltLCBhbmQgcGl0Y2hlZCBpbiBEaWJvbmdhZC4KQW5kIHRoZXkgcmVtb3ZlZCBmcm9tIERpYm9uZ2FkLCBhbmQgZW5jYW1wZWQgaW4gQWxtb25kaWJsYXRoYWltLgpBbmQgdGhleSByZW1vdmVkIGZyb20gQWxtb25kaWJsYXRoYWltLCBhbmQgcGl0Y2hlZCBpbiB0aGUgbW91bnRhaW5zIG9mIEFiYXJpbSwgYmVmb3JlIE5lYm8uCkFuZCB0aGV5IGRlcGFydGVkIGZyb20gdGhlIG1vdW50YWlucyBvZiBBYmFyaW0sIGFuZCBwaXRjaGVkIGluIHRoZSBwbGFpbnMgb2YgTW9hYiBieSBKb3JkYW4gbmVhciBKZXJpY2hvLgpBbmQgdGhleSBwaXRjaGVkIGJ5IEpvcmRhbiwgZnJvbSBCZXRoamVzaW1vdGggZXZlbiB1bnRvIEFiZWxzaGl0dGltIGluIHRoZSBwbGFpbnMgb2YgTW9hYi4KQW5kIHRoZSBMT1JEIHNwYWtlIHVudG8gTW9zZXMgaW4gdGhlIHBsYWlucyBvZiBNb2FiIGJ5IEpvcmRhbiBuZWFyIEplcmljaG8sIHNheWluZywKU3BlYWsgdW50byB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLCBhbmQgc2F5IHVudG8gdGhlbSwgV2hlbiB5ZSBhcmUgcGFzc2VkIG92ZXIgSm9yZGFuIGludG8gdGhlIGxhbmQgb2YgQ2FuYWFuOwpUaGVuIHllIHNoYWxsIGRyaXZlIG91dCBhbGwgdGhlIGluaGFiaXRhbnRzIG9mIHRoZSBsYW5kIGZyb20gYmVmb3JlIHlvdSwgYW5kIGRlc3Ryb3kgYWxsIHRoZWlyIHBpY3R1cmVzLCBhbmQgZGVzdHJveSBhbGwgdGhlaXIgbW9sdGVuIGltYWdlcywgYW5kIHF1aXRlIHBsdWNrIGRvd24gYWxsIHRoZWlyIGhpZ2ggcGxhY2VzOgpBbmQgeWUgc2hhbGwgZGlzcG9zc2VzcyB0aGUgaW5oYWJpdGFudHMgb2YgdGhlIGxhbmQsIGFuZCBkd2VsbCB0aGVyZWluOiBmb3IgSSBoYXZlIGdpdmVuIHlvdSB0aGUgbGFuZCB0byBwb3NzZXNzIGl0LgpBbmQgeWUgc2hhbGwgZGl2aWRlIHRoZSBsYW5kIGJ5IGxvdCBmb3IgYW4gaW5oZXJpdGFuY2UgYW1vbmcgeW91ciBmYW1pbGllczogYW5kIHRvIHRoZSBtb3JlIHllIHNoYWxsIGdpdmUgdGhlIG1vcmUgaW5oZXJpdGFuY2UsIGFuZCB0byB0aGUgZmV3ZXIgeWUgc2hhbGwgZ2l2ZSB0aGUgbGVzcyBpbmhlcml0YW5jZTogZXZlcnkgbWFuJ3MgaW5oZXJpdGFuY2Ugc2hhbGwgYmUgaW4gdGhlIHBsYWNlIHdoZXJlIGhpcyBsb3QgZmFsbGV0aDsgYWNjb3JkaW5nIHRvIHRoZSB0cmliZXMgb2YgeW91ciBmYXRoZXJzIHllIHNoYWxsIGluaGVyaXQuCkJ1dCBpZiB5ZSB3aWxsIG5vdCBkcml2ZSBvdXQgdGhlIGluaGFiaXRhbnRzIG9mIHRoZSBsYW5kIGZyb20gYmVmb3JlIHlvdTsgdGhlbiBpdCBzaGFsbCBjb21lIHRvIHBhc3MsIHRoYXQgdGhvc2Ugd2hpY2ggeWUgbGV0IHJlbWFpbiBvZiB0aGVtIHNoYWxsIGJlIHByaWNrcyBpbiB5b3VyIGV5ZXMsIGFuZCB0aG9ybnMgaW4geW91ciBzaWRlcywgYW5kIHNoYWxsIHZleCB5b3UgaW4gdGhlIGxhbmQgd2hlcmVpbiB5ZSBkd2VsbC4KTW9yZW92ZXIgaXQgc2hhbGwgY29tZSB0byBwYXNzLCB0aGF0IEkgc2hhbGwgZG8gdW50byB5b3UsIGFzIEkgdGhvdWdodCB0byBkbyB1bnRvIHRoZW0uCkFuZCB0aGUgTE9SRCBzcGFrZSB1bnRvIE1vc2VzLCBzYXlpbmcsCkNvbW1hbmQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgYW5kIHNheSB1bnRvIHRoZW0sIFdoZW4geWUgY29tZSBpbnRvIHRoZSBsYW5kIG9mIENhbmFhbjsgKHRoaXMgaXMgdGhlIGxhbmQgdGhhdCBzaGFsbCBmYWxsIHVudG8geW91IGZvciBhbiBpbmhlcml0YW5jZSwgZXZlbiB0aGUgbGFuZCBvZiBDYW5hYW4gd2l0aCB0aGUgY29hc3RzIHRoZXJlb2Y6KQpUaGVuIHlvdXIgc291dGggcXVhcnRlciBzaGFsbCBiZSBmcm9tIHRoZSB3aWxkZXJuZXNzIG9mIFppbiBhbG9uZyBieSB0aGUgY29hc3Qgb2YgRWRvbSwgYW5kIHlvdXIgc291dGggYm9yZGVyIHNoYWxsIGJlIHRoZSBvdXRtb3N0IGNvYXN0IG9mIHRoZSBzYWx0IHNlYSBlYXN0d2FyZDoKQW5kIHlvdXIgYm9yZGVyIHNoYWxsIHR1cm4gZnJvbSB0aGUgc291dGggdG8gdGhlIGFzY2VudCBvZiBBa3JhYmJpbSwgYW5kIHBhc3Mgb24gdG8gWmluOiBhbmQgdGhlIGdvaW5nIGZvcnRoIHRoZXJlb2Ygc2hhbGwgYmUgZnJvbSB0aGUgc291dGggdG8gS2FkZXNoYmFybmVhLCBhbmQgc2hhbGwgZ28gb24gdG8gSGF6YXJhZGRhciwgYW5kIHBhc3Mgb24gdG8gQXptb246CkFuZCB0aGUgYm9yZGVyIHNoYWxsIGZldGNoIGEgY29tcGFzcyBmcm9tIEF6bW9uIHVudG8gdGhlIHJpdmVyIG9mIEVneXB0LCBhbmQgdGhlIGdvaW5ncyBvdXQgb2YgaXQgc2hhbGwgYmUgYXQgdGhlIHNlYS4KQW5kIGFzIGZvciB0aGUgd2VzdGVybiBib3JkZXIsIHllIHNoYWxsIGV2ZW4gaGF2ZSB0aGUgZ3JlYXQgc2VhIGZvciBhIGJvcmRlcjogdGhpcyBzaGFsbCBiZSB5b3VyIHdlc3QgYm9yZGVyLgpBbmQgdGhpcyBzaGFsbCBiZSB5b3VyIG5vcnRoIGJvcmRlcjogZnJvbSB0aGUgZ3JlYXQgc2VhIHllIHNoYWxsIHBvaW50IG91dCBmb3IgeW91IG1vdW50IEhvcjoKRnJvbSBtb3VudCBIb3IgeWUgc2hhbGwgcG9pbnQgb3V0IHlvdXIgYm9yZGVyIHVudG8gdGhlIGVudHJhbmNlIG9mIEhhbWF0aDsgYW5kIHRoZSBnb2luZ3MgZm9ydGggb2YgdGhlIGJvcmRlciBzaGFsbCBiZSB0byBaZWRhZDoKQW5kIHRoZSBib3JkZXIgc2hhbGwgZ28gb24gdG8gWmlwaHJvbiwgYW5kIHRoZSBnb2luZ3Mgb3V0IG9mIGl0IHNoYWxsIGJlIGF0IEhhemFyZW5hbjogdGhpcyBzaGFsbCBiZSB5b3VyIG5vcnRoIGJvcmRlci4KQW5kIHllIHNoYWxsIHBvaW50IG91dCB5b3VyIGVhc3QgYm9yZGVyIGZyb20gSGF6YXJlbmFuIHRvIFNoZXBoYW06CkFuZCB0aGUgY29hc3Qgc2hhbGwgZ28gZG93biBmcm9tIFNoZXBoYW0gdG8gUmlibGFoLCBvbiB0aGUgZWFzdCBzaWRlIG9mIEFpbjsgYW5kIHRoZSBib3JkZXIgc2hhbGwgZGVzY2VuZCwgYW5kIHNoYWxsIHJlYWNoIHVudG8gdGhlIHNpZGUgb2YgdGhlIHNlYSBvZiBDaGlubmVyZXRoIGVhc3R3YXJkOgpBbmQgdGhlIGJvcmRlciBzaGFsbCBnbyBkb3duIHRvIEpvcmRhbiwgYW5kIHRoZSBnb2luZ3Mgb3V0IG9mIGl0IHNoYWxsIGJlIGF0IHRoZSBzYWx0IHNlYTogdGhpcyBzaGFsbCBiZSB5b3VyIGxhbmQgd2l0aCB0aGUgY29hc3RzIHRoZXJlb2Ygcm91bmQgYWJvdXQuCkFuZCBNb3NlcyBjb21tYW5kZWQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgc2F5aW5nLCBUaGlzIGlzIHRoZSBsYW5kIHdoaWNoIHllIHNoYWxsIGluaGVyaXQgYnkgbG90LCB3aGljaCB0aGUgTE9SRCBjb21tYW5kZWQgdG8gZ2l2ZSB1bnRvIHRoZSBuaW5lIHRyaWJlcywgYW5kIHRvIHRoZSBoYWxmIHRyaWJlOgpGb3IgdGhlIHRyaWJlIG9mIHRoZSBjaGlsZHJlbiBvZiBSZXViZW4gYWNjb3JkaW5nIHRvIHRoZSBob3VzZSBvZiB0aGVpciBmYXRoZXJzLCBhbmQgdGhlIHRyaWJlIG9mIHRoZSBjaGlsZHJlbiBvZiBHYWQgYWNjb3JkaW5nIHRvIHRoZSBob3VzZSBvZiB0aGVpciBmYXRoZXJzLCBoYXZlIHJlY2VpdmVkIHRoZWlyIGluaGVyaXRhbmNlOyBhbmQgaGFsZiB0aGUgdHJpYmUgb2YgTWFuYXNzZWggaGF2ZSByZWNlaXZlZCB0aGVpciBpbmhlcml0YW5jZToKVGhlIHR3byB0cmliZXMgYW5kIHRoZSBoYWxmIHRyaWJlIGhhdmUgcmVjZWl2ZWQgdGhlaXIgaW5oZXJpdGFuY2Ugb24gdGhpcyBzaWRlIEpvcmRhbiBuZWFyIEplcmljaG8gZWFzdHdhcmQsIHRvd2FyZCB0aGUgc3VucmlzaW5nLgpBbmQgdGhlIExPUkQgc3Bha2UgdW50byBNb3Nlcywgc2F5aW5nLApUaGVzZSBhcmUgdGhlIG5hbWVzIG9mIHRoZSBtZW4gd2hpY2ggc2hhbGwgZGl2aWRlIHRoZSBsYW5kIHVudG8geW91OiBFbGVhemFyIHRoZSBwcmllc3QsIGFuZCBKb3NodWEgdGhlIHNvbiBvZiBOdW4uCkFuZCB5ZSBzaGFsbCB0YWtlIG9uZSBwcmluY2Ugb2YgZXZlcnkgdHJpYmUsIHRvIGRpdmlkZSB0aGUgbGFuZCBieSBpbmhlcml0YW5jZS4KQW5kIHRoZSBuYW1lcyBvZiB0aGUgbWVuIGFyZSB0aGVzZTogT2YgdGhlIHRyaWJlIG9mIEp1ZGFoLCBDYWxlYiB0aGUgc29uIG9mIEplcGh1bm5laC4KQW5kIG9mIHRoZSB0cmliZSBvZiB0aGUgY2hpbGRyZW4gb2YgU2ltZW9uLCBTaGVtdWVsIHRoZSBzb24gb2YgQW1taWh1ZC4KT2YgdGhlIHRyaWJlIG9mIEJlbmphbWluLCBFbGlkYWQgdGhlIHNvbiBvZiBDaGlzbG9uLgpBbmQgdGhlIHByaW5jZSBvZiB0aGUgdHJpYmUgb2YgdGhlIGNoaWxkcmVuIG9mIERhbiwgQnVra2kgdGhlIHNvbiBvZiBKb2dsaS4KVGhlIHByaW5jZSBvZiB0aGUgY2hpbGRyZW4gb2YgSm9zZXBoLCBmb3IgdGhlIHRyaWJlIG9mIHRoZSBjaGlsZHJlbiBvZiBNYW5hc3NlaCwgSGFubmllbCB0aGUgc29uIG9mIEVwaG9kLgpBbmQgdGhlIHByaW5jZSBvZiB0aGUgdHJpYmUgb2YgdGhlIGNoaWxkcmVuIG9mIEVwaHJhaW0sIEtlbXVlbCB0aGUgc29uIG9mIFNoaXBodGFuLgpBbmQgdGhlIHByaW5jZSBvZiB0aGUgdHJpYmUgb2YgdGhlIGNoaWxkcmVuIG9mIFplYnVsdW4sIEVsaXphcGhhbiB0aGUgc29uIG9mIFBhcm5hY2guCkFuZCB0aGUgcHJpbmNlIG9mIHRoZSB0cmliZSBvZiB0aGUgY2hpbGRyZW4gb2YgSXNzYWNoYXIsIFBhbHRpZWwgdGhlIHNvbiBvZiBBenphbi4KQW5kIHRoZSBwcmluY2Ugb2YgdGhlIHRyaWJlIG9mIHRoZSBjaGlsZHJlbiBvZiBBc2hlciwgQWhpaHVkIHRoZSBzb24gb2YgU2hlbG9taS4KQW5kIHRoZSBwcmluY2Ugb2YgdGhlIHRyaWJlIG9mIHRoZSBjaGlsZHJlbiBvZiBOYXBodGFsaSwgUGVkYWhlbCB0aGUgc29uIG9mIEFtbWlodWQuClRoZXNlIGFyZSB0aGV5IHdob20gdGhlIExPUkQgY29tbWFuZGVkIHRvIGRpdmlkZSB0aGUgaW5oZXJpdGFuY2UgdW50byB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGluIHRoZSBsYW5kIG9mIENhbmFhbi4KQW5kIHRoZSBMT1JEIHNwYWtlIHVudG8gTW9zZXMgaW4gdGhlIHBsYWlucyBvZiBNb2FiIGJ5IEpvcmRhbiBuZWFyIEplcmljaG8sIHNheWluZywKQ29tbWFuZCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLCB0aGF0IHRoZXkgZ2l2ZSB1bnRvIHRoZSBMZXZpdGVzIG9mIHRoZSBpbmhlcml0YW5jZSBvZiB0aGVpciBwb3NzZXNzaW9uIGNpdGllcyB0byBkd2VsbCBpbjsgYW5kIHllIHNoYWxsIGdpdmUgYWxzbyB1bnRvIHRoZSBMZXZpdGVzIHN1YnVyYnMgZm9yIHRoZSBjaXRpZXMgcm91bmQgYWJvdXQgdGhlbS4KQW5kIHRoZSBjaXRpZXMgc2hhbGwgdGhleSBoYXZlIHRvIGR3ZWxsIGluOyBhbmQgdGhlIHN1YnVyYnMgb2YgdGhlbSBzaGFsbCBiZSBmb3IgdGhlaXIgY2F0dGxlLCBhbmQgZm9yIHRoZWlyIGdvb2RzLCBhbmQgZm9yIGFsbCB0aGVpciBiZWFzdHMuCkFuZCB0aGUgc3VidXJicyBvZiB0aGUgY2l0aWVzLCB3aGljaCB5ZSBzaGFsbCBnaXZlIHVudG8gdGhlIExldml0ZXMsIHNoYWxsIHJlYWNoIGZyb20gdGhlIHdhbGwgb2YgdGhlIGNpdHkgYW5kIG91dHdhcmQgYSB0aG91c2FuZCBjdWJpdHMgcm91bmQgYWJvdXQuCkFuZCB5ZSBzaGFsbCBtZWFzdXJlIGZyb20gd2l0aG91dCB0aGUgY2l0eSBvbiB0aGUgZWFzdCBzaWRlIHR3byB0aG91c2FuZCBjdWJpdHMsIGFuZCBvbiB0aGUgc291dGggc2lkZSB0d28gdGhvdXNhbmQgY3ViaXRzLCBhbmQgb24gdGhlIHdlc3Qgc2lkZSB0d28gdGhvdXNhbmQgY3ViaXRzLCBhbmQgb24gdGhlIG5vcnRoIHNpZGUgdHdvIHRob3VzYW5kIGN1Yml0czsgYW5kIHRoZSBjaXR5IHNoYWxsIGJlIGluIHRoZSBtaWRzdDogdGhpcyBzaGFsbCBiZSB0byB0aGVtIHRoZSBzdWJ1cmJzIG9mIHRoZSBjaXRpZXMuCkFuZCBhbW9uZyB0aGUgY2l0aWVzIHdoaWNoIHllIHNoYWxsIGdpdmUgdW50byB0aGUgTGV2aXRlcyB0aGVyZSBzaGFsbCBiZSBzaXggY2l0aWVzIGZvciByZWZ1Z2UsIHdoaWNoIHllIHNoYWxsIGFwcG9pbnQgZm9yIHRoZSBtYW5zbGF5ZXIsIHRoYXQgaGUgbWF5IGZsZWUgdGhpdGhlcjogYW5kIHRvIHRoZW0geWUgc2hhbGwgYWRkIGZvcnR5IGFuZCB0d28gY2l0aWVzLgpTbyBhbGwgdGhlIGNpdGllcyB3aGljaCB5ZSBzaGFsbCBnaXZlIHRvIHRoZSBMZXZpdGVzIHNoYWxsIGJlIGZvcnR5IGFuZCBlaWdodCBjaXRpZXM6IHRoZW0gc2hhbGwgeWUgZ2l2ZSB3aXRoIHRoZWlyIHN1YnVyYnMuCkFuZCB0aGUgY2l0aWVzIHdoaWNoIHllIHNoYWxsIGdpdmUgc2hhbGwgYmUgb2YgdGhlIHBvc3Nlc3Npb24gb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbDogZnJvbSB0aGVtIHRoYXQgaGF2ZSBtYW55IHllIHNoYWxsIGdpdmUgbWFueTsgYnV0IGZyb20gdGhlbSB0aGF0IGhhdmUgZmV3IHllIHNoYWxsIGdpdmUgZmV3OiBldmVyeSBvbmUgc2hhbGwgZ2l2ZSBvZiBoaXMgY2l0aWVzIHVudG8gdGhlIExldml0ZXMgYWNjb3JkaW5nIHRvIGhpcyBpbmhlcml0YW5jZSB3aGljaCBoZSBpbmhlcml0ZXRoLgpBbmQgdGhlIExPUkQgc3Bha2UgdW50byBNb3Nlcywgc2F5aW5nLApTcGVhayB1bnRvIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIGFuZCBzYXkgdW50byB0aGVtLCBXaGVuIHllIGJlIGNvbWUgb3ZlciBKb3JkYW4gaW50byB0aGUgbGFuZCBvZiBDYW5hYW47ClRoZW4geWUgc2hhbGwgYXBwb2ludCB5b3UgY2l0aWVzIHRvIGJlIGNpdGllcyBvZiByZWZ1Z2UgZm9yIHlvdTsgdGhhdCB0aGUgc2xheWVyIG1heSBmbGVlIHRoaXRoZXIsIHdoaWNoIGtpbGxldGggYW55IHBlcnNvbiBhdCB1bmF3YXJlcy4KQW5kIHRoZXkgc2hhbGwgYmUgdW50byB5b3UgY2l0aWVzIGZvciByZWZ1Z2UgZnJvbSB0aGUgYXZlbmdlcjsgdGhhdCB0aGUgbWFuc2xheWVyIGRpZSBub3QsIHVudGlsIGhlIHN0YW5kIGJlZm9yZSB0aGUgY29uZ3JlZ2F0aW9uIGluIGp1ZGdtZW50LgpBbmQgb2YgdGhlc2UgY2l0aWVzIHdoaWNoIHllIHNoYWxsIGdpdmUgc2l4IGNpdGllcyBzaGFsbCB5ZSBoYXZlIGZvciByZWZ1Z2UuClllIHNoYWxsIGdpdmUgdGhyZWUgY2l0aWVzIG9uIHRoaXMgc2lkZSBKb3JkYW4sIGFuZCB0aHJlZSBjaXRpZXMgc2hhbGwgeWUgZ2l2ZSBpbiB0aGUgbGFuZCBvZiBDYW5hYW4sIHdoaWNoIHNoYWxsIGJlIGNpdGllcyBvZiByZWZ1Z2UuClRoZXNlIHNpeCBjaXRpZXMgc2hhbGwgYmUgYSByZWZ1Z2UsIGJvdGggZm9yIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIGFuZCBmb3IgdGhlIHN0cmFuZ2VyLCBhbmQgZm9yIHRoZSBzb2pvdXJuZXIgYW1vbmcgdGhlbTogdGhhdCBldmVyeSBvbmUgdGhhdCBraWxsZXRoIGFueSBwZXJzb24gdW5hd2FyZXMgbWF5IGZsZWUgdGhpdGhlci4KQW5kIGlmIGhlIHNtaXRlIGhpbSB3aXRoIGFuIGluc3RydW1lbnQgb2YgaXJvbiwgc28gdGhhdCBoZSBkaWUsIGhlIGlzIGEgbXVyZGVyZXI6IHRoZSBtdXJkZXJlciBzaGFsbCBzdXJlbHkgYmUgcHV0IHRvIGRlYXRoLgpBbmQgaWYgaGUgc21pdGUgaGltIHdpdGggdGhyb3dpbmcgYSBzdG9uZSwgd2hlcmV3aXRoIGhlIG1heSBkaWUsIGFuZCBoZSBkaWUsIGhlIGlzIGEgbXVyZGVyZXI6IHRoZSBtdXJkZXJlciBzaGFsbCBzdXJlbHkgYmUgcHV0IHRvIGRlYXRoLgpPciBpZiBoZSBzbWl0ZSBoaW0gd2l0aCBhbiBoYW5kIHdlYXBvbiBvZiB3b29kLCB3aGVyZXdpdGggaGUgbWF5IGRpZSwgYW5kIGhlIGRpZSwgaGUgaXMgYSBtdXJkZXJlcjogdGhlIG11cmRlcmVyIHNoYWxsIHN1cmVseSBiZSBwdXQgdG8gZGVhdGguClRoZSByZXZlbmdlciBvZiBibG9vZCBoaW1zZWxmIHNoYWxsIHNsYXkgdGhlIG11cmRlcmVyOiB3aGVuIGhlIG1lZXRldGggaGltLCBoZSBzaGFsbCBzbGF5IGhpbS4KQnV0IGlmIGhlIHRocnVzdCBoaW0gb2YgaGF0cmVkLCBvciBodXJsIGF0IGhpbSBieSBsYXlpbmcgb2Ygd2FpdCwgdGhhdCBoZSBkaWU7Ck9yIGluIGVubWl0eSBzbWl0ZSBoaW0gd2l0aCBoaXMgaGFuZCwgdGhhdCBoZSBkaWU6IGhlIHRoYXQgc21vdGUgaGltIHNoYWxsIHN1cmVseSBiZSBwdXQgdG8gZGVhdGg7IGZvciBoZSBpcyBhIG11cmRlcmVyOiB0aGUgcmV2ZW5nZXIgb2YgYmxvb2Qgc2hhbGwgc2xheSB0aGUgbXVyZGVyZXIsIHdoZW4gaGUgbWVldGV0aCBoaW0uCkJ1dCBpZiBoZSB0aHJ1c3QgaGltIHN1ZGRlbmx5IHdpdGhvdXQgZW5taXR5LCBvciBoYXZlIGNhc3QgdXBvbiBoaW0gYW55IHRoaW5nIHdpdGhvdXQgbGF5aW5nIG9mIHdhaXQsCk9yIHdpdGggYW55IHN0b25lLCB3aGVyZXdpdGggYSBtYW4gbWF5IGRpZSwgc2VlaW5nIGhpbSBub3QsIGFuZCBjYXN0IGl0IHVwb24gaGltLCB0aGF0IGhlIGRpZSwgYW5kIHdhcyBub3QgaGlzIGVuZW15LCBuZWl0aGVyIHNvdWdodCBoaXMgaGFybToKVGhlbiB0aGUgY29uZ3JlZ2F0aW9uIHNoYWxsIGp1ZGdlIGJldHdlZW4gdGhlIHNsYXllciBhbmQgdGhlIHJldmVuZ2VyIG9mIGJsb29kIGFjY29yZGluZyB0byB0aGVzZSBqdWRnbWVudHM6CkFuZCB0aGUgY29uZ3JlZ2F0aW9uIHNoYWxsIGRlbGl2ZXIgdGhlIHNsYXllciBvdXQgb2YgdGhlIGhhbmQgb2YgdGhlIHJldmVuZ2VyIG9mIGJsb29kLCBhbmQgdGhlIGNvbmdyZWdhdGlvbiBzaGFsbCByZXN0b3JlIGhpbSB0byB0aGUgY2l0eSBvZiBoaXMgcmVmdWdlLCB3aGl0aGVyIGhlIHdhcyBmbGVkOiBhbmQgaGUgc2hhbGwgYWJpZGUgaW4gaXQgdW50byB0aGUgZGVhdGggb2YgdGhlIGhpZ2ggcHJpZXN0LCB3aGljaCB3YXMgYW5vaW50ZWQgd2l0aCB0aGUgaG9seSBvaWwuCkJ1dCBpZiB0aGUgc2xheWVyIHNoYWxsIGF0IGFueSB0aW1lIGNvbWUgd2l0aG91dCB0aGUgYm9yZGVyIG9mIHRoZSBjaXR5IG9mIGhpcyByZWZ1Z2UsIHdoaXRoZXIgaGUgd2FzIGZsZWQ7CkFuZCB0aGUgcmV2ZW5nZXIgb2YgYmxvb2QgZmluZCBoaW0gd2l0aG91dCB0aGUgYm9yZGVycyBvZiB0aGUgY2l0eSBvZiBoaXMgcmVmdWdlLCBhbmQgdGhlIHJldmVuZ2VyIG9mIGJsb29kIGtpbGwgdGhlIHNsYXllcjsgaGUgc2hhbGwgbm90IGJlIGd1aWx0eSBvZiBibG9vZDoKQmVjYXVzZSBoZSBzaG91bGQgaGF2ZSByZW1haW5lZCBpbiB0aGUgY2l0eSBvZiBoaXMgcmVmdWdlIHVudGlsIHRoZSBkZWF0aCBvZiB0aGUgaGlnaCBwcmllc3Q6IGJ1dCBhZnRlciB0aGUgZGVhdGggb2YgdGhlIGhpZ2ggcHJpZXN0IHRoZSBzbGF5ZXIgc2hhbGwgcmV0dXJuIGludG8gdGhlIGxhbmQgb2YgaGlzIHBvc3Nlc3Npb24uClNvIHRoZXNlIHRoaW5ncyBzaGFsbCBiZSBmb3IgYSBzdGF0dXRlIG9mIGp1ZGdtZW50IHVudG8geW91IHRocm91Z2hvdXQgeW91ciBnZW5lcmF0aW9ucyBpbiBhbGwgeW91ciBkd2VsbGluZ3MuCldob3NvIGtpbGxldGggYW55IHBlcnNvbiwgdGhlIG11cmRlcmVyIHNoYWxsIGJlIHB1dCB0byBkZWF0aCBieSB0aGUgbW91dGggb2Ygd2l0bmVzc2VzOiBidXQgb25lIHdpdG5lc3Mgc2hhbGwgbm90IHRlc3RpZnkgYWdhaW5zdCBhbnkgcGVyc29uIHRvIGNhdXNlIGhpbSB0byBkaWUuCk1vcmVvdmVyIHllIHNoYWxsIHRha2Ugbm8gc2F0aXNmYWN0aW9uIGZvciB0aGUgbGlmZSBvZiBhIG11cmRlcmVyLCB3aGljaCBpcyBndWlsdHkgb2YgZGVhdGg6IGJ1dCBoZSBzaGFsbCBiZSBzdXJlbHkgcHV0IHRvIGRlYXRoLgpBbmQgeWUgc2hhbGwgdGFrZSBubyBzYXRpc2ZhY3Rpb24gZm9yIGhpbSB0aGF0IGlzIGZsZWQgdG8gdGhlIGNpdHkgb2YgaGlzIHJlZnVnZSwgdGhhdCBoZSBzaG91bGQgY29tZSBhZ2FpbiB0byBkd2VsbCBpbiB0aGUgbGFuZCwgdW50aWwgdGhlIGRlYXRoIG9mIHRoZSBwcmllc3QuClNvIHllIHNoYWxsIG5vdCBwb2xsdXRlIHRoZSBsYW5kIHdoZXJlaW4geWUgYXJlOiBmb3IgYmxvb2QgaXQgZGVmaWxldGggdGhlIGxhbmQ6IGFuZCB0aGUgbGFuZCBjYW5ub3QgYmUgY2xlYW5zZWQgb2YgdGhlIGJsb29kIHRoYXQgaXMgc2hlZCB0aGVyZWluLCBidXQgYnkgdGhlIGJsb29kIG9mIGhpbSB0aGF0IHNoZWQgaXQuCkRlZmlsZSBub3QgdGhlcmVmb3JlIHRoZSBsYW5kIHdoaWNoIHllIHNoYWxsIGluaGFiaXQsIHdoZXJlaW4gSSBkd2VsbDogZm9yIEkgdGhlIExPUkQgZHdlbGwgYW1vbmcgdGhlIGNoaWxkcmVuIG9mIElzcmFlbC4KQW5kIHRoZSBjaGllZiBmYXRoZXJzIG9mIHRoZSBmYW1pbGllcyBvZiB0aGUgY2hpbGRyZW4gb2YgR2lsZWFkLCB0aGUgc29uIG9mIE1hY2hpciwgdGhlIHNvbiBvZiBNYW5hc3NlaCwgb2YgdGhlIGZhbWlsaWVzIG9mIHRoZSBzb25zIG9mIEpvc2VwaCwgY2FtZSBuZWFyLCBhbmQgc3Bha2UgYmVmb3JlIE1vc2VzLCBhbmQgYmVmb3JlIHRoZSBwcmluY2VzLCB0aGUgY2hpZWYgZmF0aGVycyBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsOgpBbmQgdGhleSBzYWlkLCBUaGUgTE9SRCBjb21tYW5kZWQgbXkgbG9yZCB0byBnaXZlIHRoZSBsYW5kIGZvciBhbiBpbmhlcml0YW5jZSBieSBsb3QgdG8gdGhlIGNoaWxkcmVuIG9mIElzcmFlbDogYW5kIG15IGxvcmQgd2FzIGNvbW1hbmRlZCBieSB0aGUgTE9SRCB0byBnaXZlIHRoZSBpbmhlcml0YW5jZSBvZiBaZWxvcGhlaGFkIG91ciBicm90aGVyIHVudG8gaGlzIGRhdWdodGVycy4KQW5kIGlmIHRoZXkgYmUgbWFycmllZCB0byBhbnkgb2YgdGhlIHNvbnMgb2YgdGhlIG90aGVyIHRyaWJlcyBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLCB0aGVuIHNoYWxsIHRoZWlyIGluaGVyaXRhbmNlIGJlIHRha2VuIGZyb20gdGhlIGluaGVyaXRhbmNlIG9mIG91ciBmYXRoZXJzLCBhbmQgc2hhbGwgYmUgcHV0IHRvIHRoZSBpbmhlcml0YW5jZSBvZiB0aGUgdHJpYmUgd2hlcmV1bnRvIHRoZXkgYXJlIHJlY2VpdmVkOiBzbyBzaGFsbCBpdCBiZSB0YWtlbiBmcm9tIHRoZSBsb3Qgb2Ygb3VyIGluaGVyaXRhbmNlLgpBbmQgd2hlbiB0aGUganViaWxlIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgc2hhbGwgYmUsIHRoZW4gc2hhbGwgdGhlaXIgaW5oZXJpdGFuY2UgYmUgcHV0IHVudG8gdGhlIGluaGVyaXRhbmNlIG9mIHRoZSB0cmliZSB3aGVyZXVudG8gdGhleSBhcmUgcmVjZWl2ZWQ6IHNvIHNoYWxsIHRoZWlyIGluaGVyaXRhbmNlIGJlIHRha2VuIGF3YXkgZnJvbSB0aGUgaW5oZXJpdGFuY2Ugb2YgdGhlIHRyaWJlIG9mIG91ciBmYXRoZXJzLgpBbmQgTW9zZXMgY29tbWFuZGVkIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgYWNjb3JkaW5nIHRvIHRoZSB3b3JkIG9mIHRoZSBMT1JELCBzYXlpbmcsIFRoZSB0cmliZSBvZiB0aGUgc29ucyBvZiBKb3NlcGggaGF0aCBzYWlkIHdlbGwuClRoaXMgaXMgdGhlIHRoaW5nIHdoaWNoIHRoZSBMT1JEIGRvdGggY29tbWFuZCBjb25jZXJuaW5nIHRoZSBkYXVnaHRlcnMgb2YgWmVsb3BoZWhhZCwgc2F5aW5nLCBMZXQgdGhlbSBtYXJyeSB0byB3aG9tIHRoZXkgdGhpbmsgYmVzdDsgb25seSB0byB0aGUgZmFtaWx5IG9mIHRoZSB0cmliZSBvZiB0aGVpciBmYXRoZXIgc2hhbGwgdGhleSBtYXJyeS4KU28gc2hhbGwgbm90IHRoZSBpbmhlcml0YW5jZSBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIHJlbW92ZSBmcm9tIHRyaWJlIHRvIHRyaWJlOiBmb3IgZXZlcnkgb25lIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgc2hhbGwga2VlcCBoaW1zZWxmIHRvIHRoZSBpbmhlcml0YW5jZSBvZiB0aGUgdHJpYmUgb2YgaGlzIGZhdGhlcnMuCkFuZCBldmVyeSBkYXVnaHRlciwgdGhhdCBwb3NzZXNzZXRoIGFuIGluaGVyaXRhbmNlIGluIGFueSB0cmliZSBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLCBzaGFsbCBiZSB3aWZlIHVudG8gb25lIG9mIHRoZSBmYW1pbHkgb2YgdGhlIHRyaWJlIG9mIGhlciBmYXRoZXIsIHRoYXQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBtYXkgZW5qb3kgZXZlcnkgbWFuIHRoZSBpbmhlcml0YW5jZSBvZiBoaXMgZmF0aGVycy4KTmVpdGhlciBzaGFsbCB0aGUgaW5oZXJpdGFuY2UgcmVtb3ZlIGZyb20gb25lIHRyaWJlIHRvIGFub3RoZXIgdHJpYmU7IGJ1dCBldmVyeSBvbmUgb2YgdGhlIHRyaWJlcyBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIHNoYWxsIGtlZXAgaGltc2VsZiB0byBoaXMgb3duIGluaGVyaXRhbmNlLgpFdmVuIGFzIHRoZSBMT1JEIGNvbW1hbmRlZCBNb3Nlcywgc28gZGlkIHRoZSBkYXVnaHRlcnMgb2YgWmVsb3BoZWhhZDoKRm9yIE1haGxhaCwgVGlyemFoLCBhbmQgSG9nbGFoLCBhbmQgTWlsY2FoLCBhbmQgTm9haCwgdGhlIGRhdWdodGVycyBvZiBaZWxvcGhlaGFkLCB3ZXJlIG1hcnJpZWQgdW50byB0aGVpciBmYXRoZXIncyBicm90aGVycycgc29uczoKQW5kIHRoZXkgd2VyZSBtYXJyaWVkIGludG8gdGhlIGZhbWlsaWVzIG9mIHRoZSBzb25zIG9mIE1hbmFzc2VoIHRoZSBzb24gb2YgSm9zZXBoLCBhbmQgdGhlaXIgaW5oZXJpdGFuY2UgcmVtYWluZWQgaW4gdGhlIHRyaWJlIG9mIHRoZSBmYW1pbHkgb2YgdGhlaXIgZmF0aGVyLgpUaGVzZSBhcmUgdGhlIGNvbW1hbmRtZW50cyBhbmQgdGhlIGp1ZGdtZW50cywgd2hpY2ggdGhlIExPUkQgY29tbWFuZGVkIGJ5IHRoZSBoYW5kIG9mIE1vc2VzIHVudG8gdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBpbiB0aGUgcGxhaW5zIG9mIE1vYWIgYnkgSm9yZGFuIG5lYXIgSmVyaWNoby4KVGhlc2UgYmUgdGhlIHdvcmRzIHdoaWNoIE1vc2VzIHNwYWtlIHVudG8gYWxsIElzcmFlbCBvbiB0aGlzIHNpZGUgSm9yZGFuIGluIHRoZSB3aWxkZXJuZXNzLCBpbiB0aGUgcGxhaW4gb3ZlciBhZ2FpbnN0IHRoZSBSZWQgc2VhLCBiZXR3ZWVuIFBhcmFuLCBhbmQgVG9waGVsLCBhbmQgTGFiYW4sIGFuZCBIYXplcm90aCwgYW5kIERpemFoYWIuCihUaGVyZSBhcmUgZWxldmVuIGRheXMnIGpvdXJuZXkgZnJvbSBIb3JlYiBieSB0aGUgd2F5IG9mIG1vdW50IFNlaXIgdW50byBLYWRlc2hiYXJuZWEuKQpBbmQgaXQgY2FtZSB0byBwYXNzIGluIHRoZSBmb3J0aWV0aCB5ZWFyLCBpbiB0aGUgZWxldmVudGggbW9udGgsIG9uIHRoZSBmaXJzdCBkYXkgb2YgdGhlIG1vbnRoLCB0aGF0IE1vc2VzIHNwYWtlIHVudG8gdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgYWNjb3JkaW5nIHVudG8gYWxsIHRoYXQgdGhlIExPUkQgaGFkIGdpdmVuIGhpbSBpbiBjb21tYW5kbWVudCB1bnRvIHRoZW07CkFmdGVyIGhlIGhhZCBzbGFpbiBTaWhvbiB0aGUga2luZyBvZiB0aGUgQW1vcml0ZXMsIHdoaWNoIGR3ZWx0IGluIEhlc2hib24sIGFuZCBPZyB0aGUga2luZyBvZiBCYXNoYW4sIHdoaWNoIGR3ZWx0IGF0IEFzdGFyb3RoIGluIEVkcmVpOgpPbiB0aGlzIHNpZGUgSm9yZGFuLCBpbiB0aGUgbGFuZCBvZiBNb2FiLCBiZWdhbiBNb3NlcyB0byBkZWNsYXJlIHRoaXMgbGF3LCBzYXlpbmcsClRoZSBMT1JEIG91ciBHb2Qgc3Bha2UgdW50byB1cyBpbiBIb3JlYiwgc2F5aW5nLCBZZSBoYXZlIGR3ZWx0IGxvbmcgZW5vdWdoIGluIHRoaXMgbW91bnQ6ClR1cm4geW91LCBhbmQgdGFrZSB5b3VyIGpvdXJuZXksIGFuZCBnbyB0byB0aGUgbW91bnQgb2YgdGhlIEFtb3JpdGVzLCBhbmQgdW50byBhbGwgdGhlIHBsYWNlcyBuaWdoIHRoZXJldW50bywgaW4gdGhlIHBsYWluLCBpbiB0aGUgaGlsbHMsIGFuZCBpbiB0aGUgdmFsZSwgYW5kIGluIHRoZSBzb3V0aCwgYW5kIGJ5IHRoZSBzZWEgc2lkZSwgdG8gdGhlIGxhbmQgb2YgdGhlIENhbmFhbml0ZXMsIGFuZCB1bnRvIExlYmFub24sIHVudG8gdGhlIGdyZWF0IHJpdmVyLCB0aGUgcml2ZXIgRXVwaHJhdGVzLgpCZWhvbGQsIEkgaGF2ZSBzZXQgdGhlIGxhbmQgYmVmb3JlIHlvdTogZ28gaW4gYW5kIHBvc3Nlc3MgdGhlIGxhbmQgd2hpY2ggdGhlIExPUkQgc3dhcmUgdW50byB5b3VyIGZhdGhlcnMsIEFicmFoYW0sIElzYWFjLCBhbmQgSmFjb2IsIHRvIGdpdmUgdW50byB0aGVtIGFuZCB0byB0aGVpciBzZWVkIGFmdGVyIHRoZW0uCkFuZCBJIHNwYWtlIHVudG8geW91IGF0IHRoYXQgdGltZSwgc2F5aW5nLCBJIGFtIG5vdCBhYmxlIHRvIGJlYXIgeW91IG15c2VsZiBhbG9uZToKVGhlIExPUkQgeW91ciBHb2QgaGF0aCBtdWx0aXBsaWVkIHlvdSwgYW5kLCBiZWhvbGQsIHllIGFyZSB0aGlzIGRheSBhcyB0aGUgc3RhcnMgb2YgaGVhdmVuIGZvciBtdWx0aXR1ZGUuCihUaGUgTE9SRCBHb2Qgb2YgeW91ciBmYXRoZXJzIG1ha2UgeW91IGEgdGhvdXNhbmQgdGltZXMgc28gbWFueSBtb3JlIGFzIHllIGFyZSwgYW5kIGJsZXNzIHlvdSwgYXMgaGUgaGF0aCBwcm9taXNlZCB5b3UhKQpIb3cgY2FuIEkgbXlzZWxmIGFsb25lIGJlYXIgeW91ciBjdW1icmFuY2UsIGFuZCB5b3VyIGJ1cmRlbiwgYW5kIHlvdXIgc3RyaWZlPwpUYWtlIHlvdSB3aXNlIG1lbiwgYW5kIHVuZGVyc3RhbmRpbmcsIGFuZCBrbm93biBhbW9uZyB5b3VyIHRyaWJlcywgYW5kIEkgd2lsbCBtYWtlIHRoZW0gcnVsZXJzIG92ZXIgeW91LgpBbmQgeWUgYW5zd2VyZWQgbWUsIGFuZCBzYWlkLCBUaGUgdGhpbmcgd2hpY2ggdGhvdSBoYXN0IHNwb2tlbiBpcyBnb29kIGZvciB1cyB0byBkby4KU28gSSB0b29rIHRoZSBjaGllZiBvZiB5b3VyIHRyaWJlcywgd2lzZSBtZW4sIGFuZCBrbm93biwgYW5kIG1hZGUgdGhlbSBoZWFkcyBvdmVyIHlvdSwgY2FwdGFpbnMgb3ZlciB0aG91c2FuZHMsIGFuZCBjYXB0YWlucyBvdmVyIGh1bmRyZWRzLCBhbmQgY2FwdGFpbnMgb3ZlciBmaWZ0aWVzLCBhbmQgY2FwdGFpbnMgb3ZlciB0ZW5zLCBhbmQgb2ZmaWNlcnMgYW1vbmcgeW91ciB0cmliZXMuCkFuZCBJIGNoYXJnZWQgeW91ciBqdWRnZXMgYXQgdGhhdCB0aW1lLCBzYXlpbmcsIEhlYXIgdGhlIGNhdXNlcyBiZXR3ZWVuIHlvdXIgYnJldGhyZW4sIGFuZCBqdWRnZSByaWdodGVvdXNseSBiZXR3ZWVuIGV2ZXJ5IG1hbiBhbmQgaGlzIGJyb3RoZXIsIGFuZCB0aGUgc3RyYW5nZXIgdGhhdCBpcyB3aXRoIGhpbS4KWWUgc2hhbGwgbm90IHJlc3BlY3QgcGVyc29ucyBpbiBqdWRnbWVudDsgYnV0IHllIHNoYWxsIGhlYXIgdGhlIHNtYWxsIGFzIHdlbGwgYXMgdGhlIGdyZWF0OyB5ZSBzaGFsbCBub3QgYmUgYWZyYWlkIG9mIHRoZSBmYWNlIG9mIG1hbjsgZm9yIHRoZSBqdWRnbWVudCBpcyBHb2QnczogYW5kIHRoZSBjYXVzZSB0aGF0IGlzIHRvbyBoYXJkIGZvciB5b3UsIGJyaW5nIGl0IHVudG8gbWUsIGFuZCBJIHdpbGwgaGVhciBpdC4KQW5kIEkgY29tbWFuZGVkIHlvdSBhdCB0aGF0IHRpbWUgYWxsIHRoZSB0aGluZ3Mgd2hpY2ggeWUgc2hvdWxkIGRvLgpBbmQgd2hlbiB3ZSBkZXBhcnRlZCBmcm9tIEhvcmViLCB3ZSB3ZW50IHRocm91Z2ggYWxsIHRoYXQgZ3JlYXQgYW5kIHRlcnJpYmxlIHdpbGRlcm5lc3MsIHdoaWNoIHllIHNhdyBieSB0aGUgd2F5IG9mIHRoZSBtb3VudGFpbiBvZiB0aGUgQW1vcml0ZXMsIGFzIHRoZSBMT1JEIG91ciBHb2QgY29tbWFuZGVkIHVzOyBhbmQgd2UgY2FtZSB0byBLYWRlc2hiYXJuZWEuCkFuZCBJIHNhaWQgdW50byB5b3UsIFllIGFyZSBjb21lIHVudG8gdGhlIG1vdW50YWluIG9mIHRoZSBBbW9yaXRlcywgd2hpY2ggdGhlIExPUkQgb3VyIEdvZCBkb3RoIGdpdmUgdW50byB1cy4KQmVob2xkLCB0aGUgTE9SRCB0aHkgR29kIGhhdGggc2V0IHRoZSBsYW5kIGJlZm9yZSB0aGVlOiBnbyB1cCBhbmQgcG9zc2VzcyBpdCwgYXMgdGhlIExPUkQgR29kIG9mIHRoeSBmYXRoZXJzIGhhdGggc2FpZCB1bnRvIHRoZWU7IGZlYXIgbm90LCBuZWl0aGVyIGJlIGRpc2NvdXJhZ2VkLgpBbmQgeWUgY2FtZSBuZWFyIHVudG8gbWUgZXZlcnkgb25lIG9mIHlvdSwgYW5kIHNhaWQsIFdlIHdpbGwgc2VuZCBtZW4gYmVmb3JlIHVzLCBhbmQgdGhleSBzaGFsbCBzZWFyY2ggdXMgb3V0IHRoZSBsYW5kLCBhbmQgYnJpbmcgdXMgd29yZCBhZ2FpbiBieSB3aGF0IHdheSB3ZSBtdXN0IGdvIHVwLCBhbmQgaW50byB3aGF0IGNpdGllcyB3ZSBzaGFsbCBjb21lLgpBbmQgdGhlIHNheWluZyBwbGVhc2VkIG1lIHdlbGw6IGFuZCBJIHRvb2sgdHdlbHZlIG1lbiBvZiB5b3UsIG9uZSBvZiBhIHRyaWJlOgpBbmQgdGhleSB0dXJuZWQgYW5kIHdlbnQgdXAgaW50byB0aGUgbW91bnRhaW4sIGFuZCBjYW1lIHVudG8gdGhlIHZhbGxleSBvZiBFc2hjb2wsIGFuZCBzZWFyY2hlZCBpdCBvdXQuCkFuZCB0aGV5IHRvb2sgb2YgdGhlIGZydWl0IG9mIHRoZSBsYW5kIGluIHRoZWlyIGhhbmRzLCBhbmQgYnJvdWdodCBpdCBkb3duIHVudG8gdXMsIGFuZCBicm91Z2h0IHVzIHdvcmQgYWdhaW4sIGFuZCBzYWlkLCBJdCBpcyBhIGdvb2QgbGFuZCB3aGljaCB0aGUgTE9SRCBvdXIgR29kIGRvdGggZ2l2ZSB1cy4KTm90d2l0aHN0YW5kaW5nIHllIHdvdWxkIG5vdCBnbyB1cCwgYnV0IHJlYmVsbGVkIGFnYWluc3QgdGhlIGNvbW1hbmRtZW50IG9mIHRoZSBMT1JEIHlvdXIgR29kOgpBbmQgeWUgbXVybXVyZWQgaW4geW91ciB0ZW50cywgYW5kIHNhaWQsIEJlY2F1c2UgdGhlIExPUkQgaGF0ZWQgdXMsIGhlIGhhdGggYnJvdWdodCB1cyBmb3J0aCBvdXQgb2YgdGhlIGxhbmQgb2YgRWd5cHQsIHRvIGRlbGl2ZXIgdXMgaW50byB0aGUgaGFuZCBvZiB0aGUgQW1vcml0ZXMsIHRvIGRlc3Ryb3kgdXMuCldoaXRoZXIgc2hhbGwgd2UgZ28gdXA/IG91ciBicmV0aHJlbiBoYXZlIGRpc2NvdXJhZ2VkIG91ciBoZWFydCwgc2F5aW5nLCBUaGUgcGVvcGxlIGlzIGdyZWF0ZXIgYW5kIHRhbGxlciB0aGFuIHdlOyB0aGUgY2l0aWVzIGFyZSBncmVhdCBhbmQgd2FsbGVkIHVwIHRvIGhlYXZlbjsgYW5kIG1vcmVvdmVyIHdlIGhhdmUgc2VlbiB0aGUgc29ucyBvZiB0aGUgQW5ha2ltcyB0aGVyZS4KVGhlbiBJIHNhaWQgdW50byB5b3UsIERyZWFkIG5vdCwgbmVpdGhlciBiZSBhZnJhaWQgb2YgdGhlbS4KVGhlIExPUkQgeW91ciBHb2Qgd2hpY2ggZ29ldGggYmVmb3JlIHlvdSwgaGUgc2hhbGwgZmlnaHQgZm9yIHlvdSwgYWNjb3JkaW5nIHRvIGFsbCB0aGF0IGhlIGRpZCBmb3IgeW91IGluIEVneXB0IGJlZm9yZSB5b3VyIGV5ZXM7CkFuZCBpbiB0aGUgd2lsZGVybmVzcywgd2hlcmUgdGhvdSBoYXN0IHNlZW4gaG93IHRoYXQgdGhlIExPUkQgdGh5IEdvZCBiYXJlIHRoZWUsIGFzIGEgbWFuIGRvdGggYmVhciBoaXMgc29uLCBpbiBhbGwgdGhlIHdheSB0aGF0IHllIHdlbnQsIHVudGlsIHllIGNhbWUgaW50byB0aGlzIHBsYWNlLgpZZXQgaW4gdGhpcyB0aGluZyB5ZSBkaWQgbm90IGJlbGlldmUgdGhlIExPUkQgeW91ciBHb2QsCldobyB3ZW50IGluIHRoZSB3YXkgYmVmb3JlIHlvdSwgdG8gc2VhcmNoIHlvdSBvdXQgYSBwbGFjZSB0byBwaXRjaCB5b3VyIHRlbnRzIGluLCBpbiBmaXJlIGJ5IG5pZ2h0LCB0byBzaGV3IHlvdSBieSB3aGF0IHdheSB5ZSBzaG91bGQgZ28sIGFuZCBpbiBhIGNsb3VkIGJ5IGRheS4KQW5kIHRoZSBMT1JEIGhlYXJkIHRoZSB2b2ljZSBvZiB5b3VyIHdvcmRzLCBhbmQgd2FzIHdyb3RoLCBhbmQgc3dhcmUsIHNheWluZywKU3VyZWx5IHRoZXJlIHNoYWxsIG5vdCBvbmUgb2YgdGhlc2UgbWVuIG9mIHRoaXMgZXZpbCBnZW5lcmF0aW9uIHNlZSB0aGF0IGdvb2QgbGFuZCwgd2hpY2ggSSBzd2FyZSB0byBnaXZlIHVudG8geW91ciBmYXRoZXJzLgpTYXZlIENhbGViIHRoZSBzb24gb2YgSmVwaHVubmVoOyBoZSBzaGFsbCBzZWUgaXQsIGFuZCB0byBoaW0gd2lsbCBJIGdpdmUgdGhlIGxhbmQgdGhhdCBoZSBoYXRoIHRyb2RkZW4gdXBvbiwgYW5kIHRvIGhpcyBjaGlsZHJlbiwgYmVjYXVzZSBoZSBoYXRoIHdob2xseSBmb2xsb3dlZCB0aGUgTE9SRC4KQWxzbyB0aGUgTE9SRCB3YXMgYW5ncnkgd2l0aCBtZSBmb3IgeW91ciBzYWtlcywgc2F5aW5nLCBUaG91IGFsc28gc2hhbHQgbm90IGdvIGluIHRoaXRoZXIuCkJ1dCBKb3NodWEgdGhlIHNvbiBvZiBOdW4sIHdoaWNoIHN0YW5kZXRoIGJlZm9yZSB0aGVlLCBoZSBzaGFsbCBnbyBpbiB0aGl0aGVyOiBlbmNvdXJhZ2UgaGltOiBmb3IgaGUgc2hhbGwgY2F1c2UgSXNyYWVsIHRvIGluaGVyaXQgaXQuCk1vcmVvdmVyIHlvdXIgbGl0dGxlIG9uZXMsIHdoaWNoIHllIHNhaWQgc2hvdWxkIGJlIGEgcHJleSwgYW5kIHlvdXIgY2hpbGRyZW4sIHdoaWNoIGluIHRoYXQgZGF5IGhhZCBubyBrbm93bGVkZ2UgYmV0d2VlbiBnb29kIGFuZCBldmlsLCB0aGV5IHNoYWxsIGdvIGluIHRoaXRoZXIsIGFuZCB1bnRvIHRoZW0gd2lsbCBJIGdpdmUgaXQsIGFuZCB0aGV5IHNoYWxsIHBvc3Nlc3MgaXQuCkJ1dCBhcyBmb3IgeW91LCB0dXJuIHlvdSwgYW5kIHRha2UgeW91ciBqb3VybmV5IGludG8gdGhlIHdpbGRlcm5lc3MgYnkgdGhlIHdheSBvZiB0aGUgUmVkIHNlYS4KVGhlbiB5ZSBhbnN3ZXJlZCBhbmQgc2FpZCB1bnRvIG1lLCBXZSBoYXZlIHNpbm5lZCBhZ2FpbnN0IHRoZSBMT1JELCB3ZSB3aWxsIGdvIHVwIGFuZCBmaWdodCwgYWNjb3JkaW5nIHRvIGFsbCB0aGF0IHRoZSBMT1JEIG91ciBHb2QgY29tbWFuZGVkIHVzLiBBbmQgd2hlbiB5ZSBoYWQgZ2lyZGVkIG9uIGV2ZXJ5IG1hbiBoaXMgd2VhcG9ucyBvZiB3YXIsIHllIHdlcmUgcmVhZHkgdG8gZ28gdXAgaW50byB0aGUgaGlsbC4KQW5kIHRoZSBMT1JEIHNhaWQgdW50byBtZSwgU2F5IHVudG8gdGhlbS4gR28gbm90IHVwLCBuZWl0aGVyIGZpZ2h0OyBmb3IgSSBhbSBub3QgYW1vbmcgeW91OyBsZXN0IHllIGJlIHNtaXR0ZW4gYmVmb3JlIHlvdXIgZW5lbWllcy4KU28gSSBzcGFrZSB1bnRvIHlvdTsgYW5kIHllIHdvdWxkIG5vdCBoZWFyLCBidXQgcmViZWxsZWQgYWdhaW5zdCB0aGUgY29tbWFuZG1lbnQgb2YgdGhlIExPUkQsIGFuZCB3ZW50IHByZXN1bXB0dW91c2x5IHVwIGludG8gdGhlIGhpbGwuCkFuZCB0aGUgQW1vcml0ZXMsIHdoaWNoIGR3ZWx0IGluIHRoYXQgbW91bnRhaW4sIGNhbWUgb3V0IGFnYWluc3QgeW91LCBhbmQgY2hhc2VkIHlvdSwgYXMgYmVlcyBkbywgYW5kIGRlc3Ryb3llZCB5b3UgaW4gU2VpciwgZXZlbiB1bnRvIEhvcm1haC4KQW5kIHllIHJldHVybmVkIGFuZCB3ZXB0IGJlZm9yZSB0aGUgTE9SRDsgYnV0IHRoZSBMT1JEIHdvdWxkIG5vdCBoZWFya2VuIHRvIHlvdXIgdm9pY2UsIG5vciBnaXZlIGVhciB1bnRvIHlvdS4KU28geWUgYWJvZGUgaW4gS2FkZXNoIG1hbnkgZGF5cywgYWNjb3JkaW5nIHVudG8gdGhlIGRheXMgdGhhdCB5ZSBhYm9kZSB0aGVyZS4KVGhlbiB3ZSB0dXJuZWQsIGFuZCB0b29rIG91ciBqb3VybmV5IGludG8gdGhlIHdpbGRlcm5lc3MgYnkgdGhlIHdheSBvZiB0aGUgUmVkIHNlYSwgYXMgdGhlIExPUkQgc3Bha2UgdW50byBtZTogYW5kIHdlIGNvbXBhc3NlZCBtb3VudCBTZWlyIG1hbnkgZGF5cy4KQW5kIHRoZSBMT1JEIHNwYWtlIHVudG8gbWUsIHNheWluZywKWWUgaGF2ZSBjb21wYXNzZWQgdGhpcyBtb3VudGFpbiBsb25nIGVub3VnaDogdHVybiB5b3Ugbm9ydGh3YXJkLgpBbmQgY29tbWFuZCB0aG91IHRoZSBwZW9wbGUsIHNheWluZywgWWUgYXJlIHRvIHBhc3MgdGhyb3VnaCB0aGUgY29hc3Qgb2YgeW91ciBicmV0aHJlbiB0aGUgY2hpbGRyZW4gb2YgRXNhdSwgd2hpY2ggZHdlbGwgaW4gU2VpcjsgYW5kIHRoZXkgc2hhbGwgYmUgYWZyYWlkIG9mIHlvdTogdGFrZSB5ZSBnb29kIGhlZWQgdW50byB5b3Vyc2VsdmVzIHRoZXJlZm9yZToKTWVkZGxlIG5vdCB3aXRoIHRoZW07IGZvciBJIHdpbGwgbm90IGdpdmUgeW91IG9mIHRoZWlyIGxhbmQsIG5vLCBub3Qgc28gbXVjaCBhcyBhIGZvb3QgYnJlYWR0aDsgYmVjYXVzZSBJIGhhdmUgZ2l2ZW4gbW91bnQgU2VpciB1bnRvIEVzYXUgZm9yIGEgcG9zc2Vzc2lvbi4KWWUgc2hhbGwgYnV5IG1lYXQgb2YgdGhlbSBmb3IgbW9uZXksIHRoYXQgeWUgbWF5IGVhdDsgYW5kIHllIHNoYWxsIGFsc28gYnV5IHdhdGVyIG9mIHRoZW0gZm9yIG1vbmV5LCB0aGF0IHllIG1heSBkcmluay4KRm9yIHRoZSBMT1JEIHRoeSBHb2QgaGF0aCBibGVzc2VkIHRoZWUgaW4gYWxsIHRoZSB3b3JrcyBvZiB0aHkgaGFuZDogaGUga25vd2V0aCB0aHkgd2Fsa2luZyB0aHJvdWdoIHRoaXMgZ3JlYXQgd2lsZGVybmVzczogdGhlc2UgZm9ydHkgeWVhcnMgdGhlIExPUkQgdGh5IEdvZCBoYXRoIGJlZW4gd2l0aCB0aGVlOyB0aG91IGhhc3QgbGFja2VkIG5vdGhpbmcuCkFuZCB3aGVuIHdlIHBhc3NlZCBieSBmcm9tIG91ciBicmV0aHJlbiB0aGUgY2hpbGRyZW4gb2YgRXNhdSwgd2hpY2ggZHdlbHQgaW4gU2VpciwgdGhyb3VnaCB0aGUgd2F5IG9mIHRoZSBwbGFpbiBmcm9tIEVsYXRoLCBhbmQgZnJvbSBFemlvbmdhYmVyLCB3ZSB0dXJuZWQgYW5kIHBhc3NlZCBieSB0aGUgd2F5IG9mIHRoZSB3aWxkZXJuZXNzIG9mIE1vYWIuCkFuZCB0aGUgTE9SRCBzYWlkIHVudG8gbWUsIERpc3RyZXNzIG5vdCB0aGUgTW9hYml0ZXMsIG5laXRoZXIgY29udGVuZCB3aXRoIHRoZW0gaW4gYmF0dGxlOiBmb3IgSSB3aWxsIG5vdCBnaXZlIHRoZWUgb2YgdGhlaXIgbGFuZCBmb3IgYSBwb3NzZXNzaW9uOyBiZWNhdXNlIEkgaGF2ZSBnaXZlbiBBciB1bnRvIHRoZSBjaGlsZHJlbiBvZiBMb3QgZm9yIGEgcG9zc2Vzc2lvbi4KVGhlIEVtaW1zIGR3ZWx0IHRoZXJlaW4gaW4gdGltZXMgcGFzdCwgYSBwZW9wbGUgZ3JlYXQsIGFuZCBtYW55LCBhbmQgdGFsbCwgYXMgdGhlIEFuYWtpbXM7CldoaWNoIGFsc28gd2VyZSBhY2NvdW50ZWQgZ2lhbnRzLCBhcyB0aGUgQW5ha2ltczsgYnV0IHRoZSBNb2FiaXRlcyBjYWxsZWQgdGhlbSBFbWltcy4KVGhlIEhvcmltcyBhbHNvIGR3ZWx0IGluIFNlaXIgYmVmb3JldGltZTsgYnV0IHRoZSBjaGlsZHJlbiBvZiBFc2F1IHN1Y2NlZWRlZCB0aGVtLCB3aGVuIHRoZXkgaGFkIGRlc3Ryb3llZCB0aGVtIGZyb20gYmVmb3JlIHRoZW0sIGFuZCBkd2VsdCBpbiB0aGVpciBzdGVhZDsgYXMgSXNyYWVsIGRpZCB1bnRvIHRoZSBsYW5kIG9mIGhpcyBwb3NzZXNzaW9uLCB3aGljaCB0aGUgTE9SRCBnYXZlIHVudG8gdGhlbS4KTm93IHJpc2UgdXAsIHNhaWQgSSwgYW5kIGdldCB5b3Ugb3ZlciB0aGUgYnJvb2sgWmVyZWQuIEFuZCB3ZSB3ZW50IG92ZXIgdGhlIGJyb29rIFplcmVkLgpBbmQgdGhlIHNwYWNlIGluIHdoaWNoIHdlIGNhbWUgZnJvbSBLYWRlc2hiYXJuZWEsIHVudGlsIHdlIHdlcmUgY29tZSBvdmVyIHRoZSBicm9vayBaZXJlZCwgd2FzIHRoaXJ0eSBhbmQgZWlnaHQgeWVhcnM7IHVudGlsIGFsbCB0aGUgZ2VuZXJhdGlvbiBvZiB0aGUgbWVuIG9mIHdhciB3ZXJlIHdhc3RlZCBvdXQgZnJvbSBhbW9uZyB0aGUgaG9zdCwgYXMgdGhlIExPUkQgc3dhcmUgdW50byB0aGVtLgpGb3IgaW5kZWVkIHRoZSBoYW5kIG9mIHRoZSBMT1JEIHdhcyBhZ2FpbnN0IHRoZW0sIHRvIGRlc3Ryb3kgdGhlbSBmcm9tIGFtb25nIHRoZSBob3N0LCB1bnRpbCB0aGV5IHdlcmUgY29uc3VtZWQuClNvIGl0IGNhbWUgdG8gcGFzcywgd2hlbiBhbGwgdGhlIG1lbiBvZiB3YXIgd2VyZSBjb25zdW1lZCBhbmQgZGVhZCBmcm9tIGFtb25nIHRoZSBwZW9wbGUsClRoYXQgdGhlIExPUkQgc3Bha2UgdW50byBtZSwgc2F5aW5nLApUaG91IGFydCB0byBwYXNzIG92ZXIgdGhyb3VnaCBBciwgdGhlIGNvYXN0IG9mIE1vYWIsIHRoaXMgZGF5OgpBbmQgd2hlbiB0aG91IGNvbWVzdCBuaWdoIG92ZXIgYWdhaW5zdCB0aGUgY2hpbGRyZW4gb2YgQW1tb24sIGRpc3RyZXNzIHRoZW0gbm90LCBub3IgbWVkZGxlIHdpdGggdGhlbTogZm9yIEkgd2lsbCBub3QgZ2l2ZSB0aGVlIG9mIHRoZSBsYW5kIG9mIHRoZSBjaGlsZHJlbiBvZiBBbW1vbiBhbnkgcG9zc2Vzc2lvbjsgYmVjYXVzZSBJIGhhdmUgZ2l2ZW4gaXQgdW50byB0aGUgY2hpbGRyZW4gb2YgTG90IGZvciBhIHBvc3Nlc3Npb24uCihUaGF0IGFsc28gd2FzIGFjY291bnRlZCBhIGxhbmQgb2YgZ2lhbnRzOiBnaWFudHMgZHdlbHQgdGhlcmVpbiBpbiBvbGQgdGltZTsgYW5kIHRoZSBBbW1vbml0ZXMgY2FsbCB0aGVtIFphbXp1bW1pbXM7CkEgcGVvcGxlIGdyZWF0LCBhbmQgbWFueSwgYW5kIHRhbGwsIGFzIHRoZSBBbmFraW1zOyBidXQgdGhlIExPUkQgZGVzdHJveWVkIHRoZW0gYmVmb3JlIHRoZW07IGFuZCB0aGV5IHN1Y2NlZWRlZCB0aGVtLCBhbmQgZHdlbHQgaW4gdGhlaXIgc3RlYWQ6CkFzIGhlIGRpZCB0byB0aGUgY2hpbGRyZW4gb2YgRXNhdSwgd2hpY2ggZHdlbHQgaW4gU2Vpciwgd2hlbiBoZSBkZXN0cm95ZWQgdGhlIEhvcmltcyBmcm9tIGJlZm9yZSB0aGVtOyBhbmQgdGhleSBzdWNjZWVkZWQgdGhlbSwgYW5kIGR3ZWx0IGluIHRoZWlyIHN0ZWFkIGV2ZW4gdW50byB0aGlzIGRheToKQW5kIHRoZSBBdmltcyB3aGljaCBkd2VsdCBpbiBIYXplcmltLCBldmVuIHVudG8gQXp6YWgsIHRoZSBDYXBodG9yaW1zLCB3aGljaCBjYW1lIGZvcnRoIG91dCBvZiBDYXBodG9yLCBkZXN0cm95ZWQgdGhlbSwgYW5kIGR3ZWx0IGluIHRoZWlyIHN0ZWFkLikKUmlzZSB5ZSB1cCwgdGFrZSB5b3VyIGpvdXJuZXksIGFuZCBwYXNzIG92ZXIgdGhlIHJpdmVyIEFybm9uOiBiZWhvbGQsIEkgaGF2ZSBnaXZlbiBpbnRvIHRoaW5lIGhhbmQgU2lob24gdGhlIEFtb3JpdGUsIGtpbmcgb2YgSGVzaGJvbiwgYW5kIGhpcyBsYW5kOiBiZWdpbiB0byBwb3NzZXNzIGl0LCBhbmQgY29udGVuZCB3aXRoIGhpbSBpbiBiYXR0bGUuClRoaXMgZGF5IHdpbGwgSSBiZWdpbiB0byBwdXQgdGhlIGRyZWFkIG9mIHRoZWUgYW5kIHRoZSBmZWFyIG9mIHRoZWUgdXBvbiB0aGUgbmF0aW9ucyB0aGF0IGFyZSB1bmRlciB0aGUgd2hvbGUgaGVhdmVuLCB3aG8gc2hhbGwgaGVhciByZXBvcnQgb2YgdGhlZSwgYW5kIHNoYWxsIHRyZW1ibGUsIGFuZCBiZSBpbiBhbmd1aXNoIGJlY2F1c2Ugb2YgdGhlZS4KQW5kIEkgc2VudCBtZXNzZW5nZXJzIG91dCBvZiB0aGUgd2lsZGVybmVzcyBvZiBLZWRlbW90aCB1bnRvIFNpaG9uIGtpbmcgb2YgSGVzaGJvbiB3aXRoIHdvcmRzIG9mIHBlYWNlLCBzYXlpbmcsCkxldCBtZSBwYXNzIHRocm91Z2ggdGh5IGxhbmQ6IEkgd2lsbCBnbyBhbG9uZyBieSB0aGUgaGlnaCB3YXksIEkgd2lsbCBuZWl0aGVyIHR1cm4gdW50byB0aGUgcmlnaHQgaGFuZCBub3IgdG8gdGhlIGxlZnQuClRob3Ugc2hhbHQgc2VsbCBtZSBtZWF0IGZvciBtb25leSwgdGhhdCBJIG1heSBlYXQ7IGFuZCBnaXZlIG1lIHdhdGVyIGZvciBtb25leSwgdGhhdCBJIG1heSBkcmluazogb25seSBJIHdpbGwgcGFzcyB0aHJvdWdoIG9uIG15IGZlZXQ7CihBcyB0aGUgY2hpbGRyZW4gb2YgRXNhdSB3aGljaCBkd2VsbCBpbiBTZWlyLCBhbmQgdGhlIE1vYWJpdGVzIHdoaWNoIGR3ZWxsIGluIEFyLCBkaWQgdW50byBtZTspIHVudGlsIEkgc2hhbGwgcGFzcyBvdmVyIEpvcmRhbiBpbnRvIHRoZSBsYW5kIHdoaWNoIHRoZSBMT1JEIG91ciBHb2QgZ2l2ZXRoIHVzLgpCdXQgU2lob24ga2luZyBvZiBIZXNoYm9uIHdvdWxkIG5vdCBsZXQgdXMgcGFzcyBieSBoaW06IGZvciB0aGUgTE9SRCB0aHkgR29kIGhhcmRlbmVkIGhpcyBzcGlyaXQsIGFuZCBtYWRlIGhpcyBoZWFydCBvYnN0aW5hdGUsIHRoYXQgaGUgbWlnaHQgZGVsaXZlciBoaW0gaW50byB0aHkgaGFuZCwgYXMgYXBwZWFyZXRoIHRoaXMgZGF5LgpBbmQgdGhlIExPUkQgc2FpZCB1bnRvIG1lLCBCZWhvbGQsIEkgaGF2ZSBiZWd1biB0byBnaXZlIFNpaG9uIGFuZCBoaXMgbGFuZCBiZWZvcmUgdGhlZTogYmVnaW4gdG8gcG9zc2VzcywgdGhhdCB0aG91IG1heWVzdCBpbmhlcml0IGhpcyBsYW5kLgpUaGVuIFNpaG9uIGNhbWUgb3V0IGFnYWluc3QgdXMsIGhlIGFuZCBhbGwgaGlzIHBlb3BsZSwgdG8gZmlnaHQgYXQgSmFoYXouCkFuZCB0aGUgTE9SRCBvdXIgR29kIGRlbGl2ZXJlZCBoaW0gYmVmb3JlIHVzOyBhbmQgd2Ugc21vdGUgaGltLCBhbmQgaGlzIHNvbnMsIGFuZCBhbGwgaGlzIHBlb3BsZS4KQW5kIHdlIHRvb2sgYWxsIGhpcyBjaXRpZXMgYXQgdGhhdCB0aW1lLCBhbmQgdXR0ZXJseSBkZXN0cm95ZWQgdGhlIG1lbiwgYW5kIHRoZSB3b21lbiwgYW5kIHRoZSBsaXR0bGUgb25lcywgb2YgZXZlcnkgY2l0eSwgd2UgbGVmdCBub25lIHRvIHJlbWFpbjoKT25seSB0aGUgY2F0dGxlIHdlIHRvb2sgZm9yIGEgcHJleSB1bnRvIG91cnNlbHZlcywgYW5kIHRoZSBzcG9pbCBvZiB0aGUgY2l0aWVzIHdoaWNoIHdlIHRvb2suCkZyb20gQXJvZXIsIHdoaWNoIGlzIGJ5IHRoZSBicmluayBvZiB0aGUgcml2ZXIgb2YgQXJub24sIGFuZCBmcm9tIHRoZSBjaXR5IHRoYXQgaXMgYnkgdGhlIHJpdmVyLCBldmVuIHVudG8gR2lsZWFkLCB0aGVyZSB3YXMgbm90IG9uZSBjaXR5IHRvbyBzdHJvbmcgZm9yIHVzOiB0aGUgTE9SRCBvdXIgR29kIGRlbGl2ZXJlZCBhbGwgdW50byB1czoKT25seSB1bnRvIHRoZSBsYW5kIG9mIHRoZSBjaGlsZHJlbiBvZiBBbW1vbiB0aG91IGNhbWVzdCBub3QsIG5vciB1bnRvIGFueSBwbGFjZSBvZiB0aGUgcml2ZXIgSmFiYm9rLCBub3IgdW50byB0aGUgY2l0aWVzIGluIHRoZSBtb3VudGFpbnMsIG5vciB1bnRvIHdoYXRzb2V2ZXIgdGhlIExPUkQgb3VyIEdvZCBmb3JiYWQgdXMuClRoZW4gd2UgdHVybmVkLCBhbmQgd2VudCB1cCB0aGUgd2F5IHRvIEJhc2hhbjogYW5kIE9nIHRoZSBraW5nIG9mIEJhc2hhbiBjYW1lIG91dCBhZ2FpbnN0IHVzLCBoZSBhbmQgYWxsIGhpcyBwZW9wbGUsIHRvIGJhdHRsZSBhdCBFZHJlaS4KQW5kIHRoZSBMT1JEIHNhaWQgdW50byBtZSwgRmVhciBoaW0gbm90OiBmb3IgSSB3aWxsIGRlbGl2ZXIgaGltLCBhbmQgYWxsIGhpcyBwZW9wbGUsIGFuZCBoaXMgbGFuZCwgaW50byB0aHkgaGFuZDsgYW5kIHRob3Ugc2hhbHQgZG8gdW50byBoaW0gYXMgdGhvdSBkaWRzdCB1bnRvIFNpaG9uIGtpbmcgb2YgdGhlIEFtb3JpdGVzLCB3aGljaCBkd2VsdCBhdCBIZXNoYm9uLgpTbyB0aGUgTE9SRCBvdXIgR29kIGRlbGl2ZXJlZCBpbnRvIG91ciBoYW5kcyBPZyBhbHNvLCB0aGUga2luZyBvZiBCYXNoYW4sIGFuZCBhbGwgaGlzIHBlb3BsZTogYW5kIHdlIHNtb3RlIGhpbSB1bnRpbCBub25lIHdhcyBsZWZ0IHRvIGhpbSByZW1haW5pbmcuCkFuZCB3ZSB0b29rIGFsbCBoaXMgY2l0aWVzIGF0IHRoYXQgdGltZSwgdGhlcmUgd2FzIG5vdCBhIGNpdHkgd2hpY2ggd2UgdG9vayBub3QgZnJvbSB0aGVtLCB0aHJlZXNjb3JlIGNpdGllcywgYWxsIHRoZSByZWdpb24gb2YgQXJnb2IsIHRoZSBraW5nZG9tIG9mIE9nIGluIEJhc2hhbi4KQWxsIHRoZXNlIGNpdGllcyB3ZXJlIGZlbmNlZCB3aXRoIGhpZ2ggd2FsbHMsIGdhdGVzLCBhbmQgYmFyczsgYmVzaWRlIHVud2FsbGVkIHRvd25zIGEgZ3JlYXQgbWFueS4KQW5kIHdlIHV0dGVybHkgZGVzdHJveWVkIHRoZW0sIGFzIHdlIGRpZCB1bnRvIFNpaG9uIGtpbmcgb2YgSGVzaGJvbiwgdXR0ZXJseSBkZXN0cm95aW5nIHRoZSBtZW4sIHdvbWVuLCBhbmQgY2hpbGRyZW4sIG9mIGV2ZXJ5IGNpdHkuCkJ1dCBhbGwgdGhlIGNhdHRsZSwgYW5kIHRoZSBzcG9pbCBvZiB0aGUgY2l0aWVzLCB3ZSB0b29rIGZvciBhIHByZXkgdG8gb3Vyc2VsdmVzLgpBbmQgd2UgdG9vayBhdCB0aGF0IHRpbWUgb3V0IG9mIHRoZSBoYW5kIG9mIHRoZSB0d28ga2luZ3Mgb2YgdGhlIEFtb3JpdGVzIHRoZSBsYW5kIHRoYXQgd2FzIG9uIHRoaXMgc2lkZSBKb3JkYW4sIGZyb20gdGhlIHJpdmVyIG9mIEFybm9uIHVudG8gbW91bnQgSGVybW9uOwooV2hpY2ggSGVybW9uIHRoZSBTaWRvbmlhbnMgY2FsbCBTaXJpb247IGFuZCB0aGUgQW1vcml0ZXMgY2FsbCBpdCBTaGVuaXI7KQpBbGwgdGhlIGNpdGllcyBvZiB0aGUgcGxhaW4sIGFuZCBhbGwgR2lsZWFkLCBhbmQgYWxsIEJhc2hhbiwgdW50byBTYWxjaGFoIGFuZCBFZHJlaSwgY2l0aWVzIG9mIHRoZSBraW5nZG9tIG9mIE9nIGluIEJhc2hhbi4KRm9yIG9ubHkgT2cga2luZyBvZiBCYXNoYW4gcmVtYWluZWQgb2YgdGhlIHJlbW5hbnQgb2YgZ2lhbnRzOyBiZWhvbGQgaGlzIGJlZHN0ZWFkIHdhcyBhIGJlZHN0ZWFkIG9mIGlyb247IGlzIGl0IG5vdCBpbiBSYWJiYXRoIG9mIHRoZSBjaGlsZHJlbiBvZiBBbW1vbj8gbmluZSBjdWJpdHMgd2FzIHRoZSBsZW5ndGggdGhlcmVvZiwgYW5kIGZvdXIgY3ViaXRzIHRoZSBicmVhZHRoIG9mIGl0LCBhZnRlciB0aGUgY3ViaXQgb2YgYSBtYW4uCkFuZCB0aGlzIGxhbmQsIHdoaWNoIHdlIHBvc3Nlc3NlZCBhdCB0aGF0IHRpbWUsIGZyb20gQXJvZXIsIHdoaWNoIGlzIGJ5IHRoZSByaXZlciBBcm5vbiwgYW5kIGhhbGYgbW91bnQgR2lsZWFkLCBhbmQgdGhlIGNpdGllcyB0aGVyZW9mLCBnYXZlIEkgdW50byB0aGUgUmV1YmVuaXRlcyBhbmQgdG8gdGhlIEdhZGl0ZXMuCkFuZCB0aGUgcmVzdCBvZiBHaWxlYWQsIGFuZCBhbGwgQmFzaGFuLCBiZWluZyB0aGUga2luZ2RvbSBvZiBPZywgZ2F2ZSBJIHVudG8gdGhlIGhhbGYgdHJpYmUgb2YgTWFuYXNzZWg7IGFsbCB0aGUgcmVnaW9uIG9mIEFyZ29iLCB3aXRoIGFsbCBCYXNoYW4sIHdoaWNoIHdhcyBjYWxsZWQgdGhlIGxhbmQgb2YgZ2lhbnRzLgpKYWlyIHRoZSBzb24gb2YgTWFuYXNzZWggdG9vayBhbGwgdGhlIGNvdW50cnkgb2YgQXJnb2IgdW50byB0aGUgY29hc3RzIG9mIEdlc2h1cmkgYW5kIE1hYWNoYXRoaTsgYW5kIGNhbGxlZCB0aGVtIGFmdGVyIGhpcyBvd24gbmFtZSwgQmFzaGFuaGF2b3RoamFpciwgdW50byB0aGlzIGRheS4KQW5kIEkgZ2F2ZSBHaWxlYWQgdW50byBNYWNoaXIuCkFuZCB1bnRvIHRoZSBSZXViZW5pdGVzIGFuZCB1bnRvIHRoZSBHYWRpdGVzIEkgZ2F2ZSBmcm9tIEdpbGVhZCBldmVuIHVudG8gdGhlIHJpdmVyIEFybm9uIGhhbGYgdGhlIHZhbGxleSwgYW5kIHRoZSBib3JkZXIgZXZlbiB1bnRvIHRoZSByaXZlciBKYWJib2ssIHdoaWNoIGlzIHRoZSBib3JkZXIgb2YgdGhlIGNoaWxkcmVuIG9mIEFtbW9uOwpUaGUgcGxhaW4gYWxzbywgYW5kIEpvcmRhbiwgYW5kIHRoZSBjb2FzdCB0aGVyZW9mLCBmcm9tIENoaW5uZXJldGggZXZlbiB1bnRvIHRoZSBzZWEgb2YgdGhlIHBsYWluLCBldmVuIHRoZSBzYWx0IHNlYSwgdW5kZXIgQXNoZG90aHBpc2dhaCBlYXN0d2FyZC4KQW5kIEkgY29tbWFuZGVkIHlvdSBhdCB0aGF0IHRpbWUsIHNheWluZywgVGhlIExPUkQgeW91ciBHb2QgaGF0aCBnaXZlbiB5b3UgdGhpcyBsYW5kIHRvIHBvc3Nlc3MgaXQ6IHllIHNoYWxsIHBhc3Mgb3ZlciBhcm1lZCBiZWZvcmUgeW91ciBicmV0aHJlbiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLCBhbGwgdGhhdCBhcmUgbWVldCBmb3IgdGhlIHdhci4KQnV0IHlvdXIgd2l2ZXMsIGFuZCB5b3VyIGxpdHRsZSBvbmVzLCBhbmQgeW91ciBjYXR0bGUsIChmb3IgSSBrbm93IHRoYXQgeWUgaGF2ZSBtdWNoIGNhdHRsZSwpIHNoYWxsIGFiaWRlIGluIHlvdXIgY2l0aWVzIHdoaWNoIEkgaGF2ZSBnaXZlbiB5b3U7ClVudGlsIHRoZSBMT1JEIGhhdmUgZ2l2ZW4gcmVzdCB1bnRvIHlvdXIgYnJldGhyZW4sIGFzIHdlbGwgYXMgdW50byB5b3UsIGFuZCB1bnRpbCB0aGV5IGFsc28gcG9zc2VzcyB0aGUgbGFuZCB3aGljaCB0aGUgTE9SRCB5b3VyIEdvZCBoYXRoIGdpdmVuIHRoZW0gYmV5b25kIEpvcmRhbjogYW5kIHRoZW4gc2hhbGwgeWUgcmV0dXJuIGV2ZXJ5IG1hbiB1bnRvIGhpcyBwb3NzZXNzaW9uLCB3aGljaCBJIGhhdmUgZ2l2ZW4geW91LgpBbmQgSSBjb21tYW5kZWQgSm9zaHVhIGF0IHRoYXQgdGltZSwgc2F5aW5nLCBUaGluZSBleWVzIGhhdmUgc2VlbiBhbGwgdGhhdCB0aGUgTE9SRCB5b3VyIEdvZCBoYXRoIGRvbmUgdW50byB0aGVzZSB0d28ga2luZ3M6IHNvIHNoYWxsIHRoZSBMT1JEIGRvIHVudG8gYWxsIHRoZSBraW5nZG9tcyB3aGl0aGVyIHRob3UgcGFzc2VzdC4KWWUgc2hhbGwgbm90IGZlYXIgdGhlbTogZm9yIHRoZSBMT1JEIHlvdXIgR29kIGhlIHNoYWxsIGZpZ2h0IGZvciB5b3UuCkFuZCBJIGJlc291Z2h0IHRoZSBMT1JEIGF0IHRoYXQgdGltZSwgc2F5aW5nLApPIExvcmQgR09ELCB0aG91IGhhc3QgYmVndW4gdG8gc2hldyB0aHkgc2VydmFudCB0aHkgZ3JlYXRuZXNzLCBhbmQgdGh5IG1pZ2h0eSBoYW5kOiBmb3Igd2hhdCBHb2QgaXMgdGhlcmUgaW4gaGVhdmVuIG9yIGluIGVhcnRoLCB0aGF0IGNhbiBkbyBhY2NvcmRpbmcgdG8gdGh5IHdvcmtzLCBhbmQgYWNjb3JkaW5nIHRvIHRoeSBtaWdodD8KSSBwcmF5IHRoZWUsIGxldCBtZSBnbyBvdmVyLCBhbmQgc2VlIHRoZSBnb29kIGxhbmQgdGhhdCBpcyBiZXlvbmQgSm9yZGFuLCB0aGF0IGdvb2RseSBtb3VudGFpbiwgYW5kIExlYmFub24uCkJ1dCB0aGUgTE9SRCB3YXMgd3JvdGggd2l0aCBtZSBmb3IgeW91ciBzYWtlcywgYW5kIHdvdWxkIG5vdCBoZWFyIG1lOiBhbmQgdGhlIExPUkQgc2FpZCB1bnRvIG1lLCBMZXQgaXQgc3VmZmljZSB0aGVlOyBzcGVhayBubyBtb3JlIHVudG8gbWUgb2YgdGhpcyBtYXR0ZXIuCkdldCB0aGVlIHVwIGludG8gdGhlIHRvcCBvZiBQaXNnYWgsIGFuZCBsaWZ0IHVwIHRoaW5lIGV5ZXMgd2VzdHdhcmQsIGFuZCBub3J0aHdhcmQsIGFuZCBzb3V0aHdhcmQsIGFuZCBlYXN0d2FyZCwgYW5kIGJlaG9sZCBpdCB3aXRoIHRoaW5lIGV5ZXM6IGZvciB0aG91IHNoYWx0IG5vdCBnbyBvdmVyIHRoaXMgSm9yZGFuLgpCdXQgY2hhcmdlIEpvc2h1YSwgYW5kIGVuY291cmFnZSBoaW0sIGFuZCBzdHJlbmd0aGVuIGhpbTogZm9yIGhlIHNoYWxsIGdvIG92ZXIgYmVmb3JlIHRoaXMgcGVvcGxlLCBhbmQgaGUgc2hhbGwgY2F1c2UgdGhlbSB0byBpbmhlcml0IHRoZSBsYW5kIHdoaWNoIHRob3Ugc2hhbHQgc2VlLgpTbyB3ZSBhYm9kZSBpbiB0aGUgdmFsbGV5IG92ZXIgYWdhaW5zdCBCZXRocGVvci4KTm93IHRoZXJlZm9yZSBoZWFya2VuLCBPIElzcmFlbCwgdW50byB0aGUgc3RhdHV0ZXMgYW5kIHVudG8gdGhlIGp1ZGdtZW50cywgd2hpY2ggSSB0ZWFjaCB5b3UsIGZvciB0byBkbyB0aGVtLCB0aGF0IHllIG1heSBsaXZlLCBhbmQgZ28gaW4gYW5kIHBvc3Nlc3MgdGhlIGxhbmQgd2hpY2ggdGhlIExPUkQgR29kIG9mIHlvdXIgZmF0aGVycyBnaXZldGggeW91LgpZZSBzaGFsbCBub3QgYWRkIHVudG8gdGhlIHdvcmQgd2hpY2ggSSBjb21tYW5kIHlvdSwgbmVpdGhlciBzaGFsbCB5ZSBkaW1pbmlzaCBvdWdodCBmcm9tIGl0LCB0aGF0IHllIG1heSBrZWVwIHRoZSBjb21tYW5kbWVudHMgb2YgdGhlIExPUkQgeW91ciBHb2Qgd2hpY2ggSSBjb21tYW5kIHlvdS4KWW91ciBleWVzIGhhdmUgc2VlbiB3aGF0IHRoZSBMT1JEIGRpZCBiZWNhdXNlIG9mIEJhYWxwZW9yOiBmb3IgYWxsIHRoZSBtZW4gdGhhdCBmb2xsb3dlZCBCYWFscGVvciwgdGhlIExPUkQgdGh5IEdvZCBoYXRoIGRlc3Ryb3llZCB0aGVtIGZyb20gYW1vbmcgeW91LgpCdXQgeWUgdGhhdCBkaWQgY2xlYXZlIHVudG8gdGhlIExPUkQgeW91ciBHb2QgYXJlIGFsaXZlIGV2ZXJ5IG9uZSBvZiB5b3UgdGhpcyBkYXkuCkJlaG9sZCwgSSBoYXZlIHRhdWdodCB5b3Ugc3RhdHV0ZXMgYW5kIGp1ZGdtZW50cywgZXZlbiBhcyB0aGUgTE9SRCBteSBHb2QgY29tbWFuZGVkIG1lLCB0aGF0IHllIHNob3VsZCBkbyBzbyBpbiB0aGUgbGFuZCB3aGl0aGVyIHllIGdvIHRvIHBvc3Nlc3MgaXQuCktlZXAgdGhlcmVmb3JlIGFuZCBkbyB0aGVtOyBmb3IgdGhpcyBpcyB5b3VyIHdpc2RvbSBhbmQgeW91ciB1bmRlcnN0YW5kaW5nIGluIHRoZSBzaWdodCBvZiB0aGUgbmF0aW9ucywgd2hpY2ggc2hhbGwgaGVhciBhbGwgdGhlc2Ugc3RhdHV0ZXMsIGFuZCBzYXksIFN1cmVseSB0aGlzIGdyZWF0IG5hdGlvbiBpcyBhIHdpc2UgYW5kIHVuZGVyc3RhbmRpbmcgcGVvcGxlLgpGb3Igd2hhdCBuYXRpb24gaXMgdGhlcmUgc28gZ3JlYXQsIHdobyBoYXRoIEdvZCBzbyBuaWdoIHVudG8gdGhlbSwgYXMgdGhlIExPUkQgb3VyIEdvZCBpcyBpbiBhbGwgdGhpbmdzIHRoYXQgd2UgY2FsbCB1cG9uIGhpbSBmb3I/CkFuZCB3aGF0IG5hdGlvbiBpcyB0aGVyZSBzbyBncmVhdCwgdGhhdCBoYXRoIHN0YXR1dGVzIGFuZCBqdWRnbWVudHMgc28gcmlnaHRlb3VzIGFzIGFsbCB0aGlzIGxhdywgd2hpY2ggSSBzZXQgYmVmb3JlIHlvdSB0aGlzIGRheT8KT25seSB0YWtlIGhlZWQgdG8gdGh5c2VsZiwgYW5kIGtlZXAgdGh5IHNvdWwgZGlsaWdlbnRseSwgbGVzdCB0aG91IGZvcmdldCB0aGUgdGhpbmdzIHdoaWNoIHRoaW5lIGV5ZXMgaGF2ZSBzZWVuLCBhbmQgbGVzdCB0aGV5IGRlcGFydCBmcm9tIHRoeSBoZWFydCBhbGwgdGhlIGRheXMgb2YgdGh5IGxpZmU6IGJ1dCB0ZWFjaCB0aGVtIHRoeSBzb25zLCBhbmQgdGh5IHNvbnMnIHNvbnM7ClNwZWNpYWxseSB0aGUgZGF5IHRoYXQgdGhvdSBzdG9vZGVzdCBiZWZvcmUgdGhlIExPUkQgdGh5IEdvZCBpbiBIb3JlYiwgd2hlbiB0aGUgTE9SRCBzYWlkIHVudG8gbWUsIEdhdGhlciBtZSB0aGUgcGVvcGxlIHRvZ2V0aGVyLCBhbmQgSSB3aWxsIG1ha2UgdGhlbSBoZWFyIG15IHdvcmRzLCB0aGF0IHRoZXkgbWF5IGxlYXJuIHRvIGZlYXIgbWUgYWxsIHRoZSBkYXlzIHRoYXQgdGhleSBzaGFsbCBsaXZlIHVwb24gdGhlIGVhcnRoLCBhbmQgdGhhdCB0aGV5IG1heSB0ZWFjaCB0aGVpciBjaGlsZHJlbi4KQW5kIHllIGNhbWUgbmVhciBhbmQgc3Rvb2QgdW5kZXIgdGhlIG1vdW50YWluOyBhbmQgdGhlIG1vdW50YWluIGJ1cm5lZCB3aXRoIGZpcmUgdW50byB0aGUgbWlkc3Qgb2YgaGVhdmVuLCB3aXRoIGRhcmtuZXNzLCBjbG91ZHMsIGFuZCB0aGljayBkYXJrbmVzcy4KQW5kIHRoZSBMT1JEIHNwYWtlIHVudG8geW91IG91dCBvZiB0aGUgbWlkc3Qgb2YgdGhlIGZpcmU6IHllIGhlYXJkIHRoZSB2b2ljZSBvZiB0aGUgd29yZHMsIGJ1dCBzYXcgbm8gc2ltaWxpdHVkZTsgb25seSB5ZSBoZWFyZCBhIHZvaWNlLgpBbmQgaGUgZGVjbGFyZWQgdW50byB5b3UgaGlzIGNvdmVuYW50LCB3aGljaCBoZSBjb21tYW5kZWQgeW91IHRvIHBlcmZvcm0sIGV2ZW4gdGVuIGNvbW1hbmRtZW50czsgYW5kIGhlIHdyb3RlIHRoZW0gdXBvbiB0d28gdGFibGVzIG9mIHN0b25lLgpBbmQgdGhlIExPUkQgY29tbWFuZGVkIG1lIGF0IHRoYXQgdGltZSB0byB0ZWFjaCB5b3Ugc3RhdHV0ZXMgYW5kIGp1ZGdtZW50cywgdGhhdCB5ZSBtaWdodCBkbyB0aGVtIGluIHRoZSBsYW5kIHdoaXRoZXIgeWUgZ28gb3ZlciB0byBwb3NzZXNzIGl0LgpUYWtlIHllIHRoZXJlZm9yZSBnb29kIGhlZWQgdW50byB5b3Vyc2VsdmVzOyBmb3IgeWUgc2F3IG5vIG1hbm5lciBvZiBzaW1pbGl0dWRlIG9uIHRoZSBkYXkgdGhhdCB0aGUgTE9SRCBzcGFrZSB1bnRvIHlvdSBpbiBIb3JlYiBvdXQgb2YgdGhlIG1pZHN0IG9mIHRoZSBmaXJlOgpMZXN0IHllIGNvcnJ1cHQgeW91cnNlbHZlcywgYW5kIG1ha2UgeW91IGEgZ3JhdmVuIGltYWdlLCB0aGUgc2ltaWxpdHVkZSBvZiBhbnkgZmlndXJlLCB0aGUgbGlrZW5lc3Mgb2YgbWFsZSBvciBmZW1hbGUsClRoZSBsaWtlbmVzcyBvZiBhbnkgYmVhc3QgdGhhdCBpcyBvbiB0aGUgZWFydGgsIHRoZSBsaWtlbmVzcyBvZiBhbnkgd2luZ2VkIGZvd2wgdGhhdCBmbGlldGggaW4gdGhlIGFpciwKVGhlIGxpa2VuZXNzIG9mIGFueSB0aGluZyB0aGF0IGNyZWVwZXRoIG9uIHRoZSBncm91bmQsIHRoZSBsaWtlbmVzcyBvZiBhbnkgZmlzaCB0aGF0IGlzIGluIHRoZSB3YXRlcnMgYmVuZWF0aCB0aGUgZWFydGg6CkFuZCBsZXN0IHRob3UgbGlmdCB1cCB0aGluZSBleWVzIHVudG8gaGVhdmVuLCBhbmQgd2hlbiB0aG91IHNlZXN0IHRoZSBzdW4sIGFuZCB0aGUgbW9vbiwgYW5kIHRoZSBzdGFycywgZXZlbiBhbGwgdGhlIGhvc3Qgb2YgaGVhdmVuLCBzaG91bGRlc3QgYmUgZHJpdmVuIHRvIHdvcnNoaXAgdGhlbSwgYW5kIHNlcnZlIHRoZW0sIHdoaWNoIHRoZSBMT1JEIHRoeSBHb2QgaGF0aCBkaXZpZGVkIHVudG8gYWxsIG5hdGlvbnMgdW5kZXIgdGhlIHdob2xlIGhlYXZlbi4KQnV0IHRoZSBMT1JEIGhhdGggdGFrZW4geW91LCBhbmQgYnJvdWdodCB5b3UgZm9ydGggb3V0IG9mIHRoZSBpcm9uIGZ1cm5hY2UsIGV2ZW4gb3V0IG9mIEVneXB0LCB0byBiZSB1bnRvIGhpbSBhIHBlb3BsZSBvZiBpbmhlcml0YW5jZSwgYXMgeWUgYXJlIHRoaXMgZGF5LgpGdXJ0aGVybW9yZSB0aGUgTE9SRCB3YXMgYW5ncnkgd2l0aCBtZSBmb3IgeW91ciBzYWtlcywgYW5kIHN3YXJlIHRoYXQgSSBzaG91bGQgbm90IGdvIG92ZXIgSm9yZGFuLCBhbmQgdGhhdCBJIHNob3VsZCBub3QgZ28gaW4gdW50byB0aGF0IGdvb2QgbGFuZCwgd2hpY2ggdGhlIExPUkQgdGh5IEdvZCBnaXZldGggdGhlZSBmb3IgYW4gaW5oZXJpdGFuY2U6CkJ1dCBJIG11c3QgZGllIGluIHRoaXMgbGFuZCwgSSBtdXN0IG5vdCBnbyBvdmVyIEpvcmRhbjogYnV0IHllIHNoYWxsIGdvIG92ZXIsIGFuZCBwb3NzZXNzIHRoYXQgZ29vZCBsYW5kLgpUYWtlIGhlZWQgdW50byB5b3Vyc2VsdmVzLCBsZXN0IHllIGZvcmdldCB0aGUgY292ZW5hbnQgb2YgdGhlIExPUkQgeW91ciBHb2QsIHdoaWNoIGhlIG1hZGUgd2l0aCB5b3UsIGFuZCBtYWtlIHlvdSBhIGdyYXZlbiBpbWFnZSwgb3IgdGhlIGxpa2VuZXNzIG9mIGFueSB0aGluZywgd2hpY2ggdGhlIExPUkQgdGh5IEdvZCBoYXRoIGZvcmJpZGRlbiB0aGVlLgpGb3IgdGhlIExPUkQgdGh5IEdvZCBpcyBhIGNvbnN1bWluZyBmaXJlLCBldmVuIGEgamVhbG91cyBHb2QuCldoZW4gdGhvdSBzaGFsdCBiZWdldCBjaGlsZHJlbiwgYW5kIGNoaWxkcmVuJ3MgY2hpbGRyZW4sIGFuZCB5ZSBzaGFsbCBoYXZlIHJlbWFpbmVkIGxvbmcgaW4gdGhlIGxhbmQsIGFuZCBzaGFsbCBjb3JydXB0IHlvdXJzZWx2ZXMsIGFuZCBtYWtlIGEgZ3JhdmVuIGltYWdlLCBvciB0aGUgbGlrZW5lc3Mgb2YgYW55IHRoaW5nLCBhbmQgc2hhbGwgZG8gZXZpbCBpbiB0aGUgc2lnaHQgb2YgdGhlIExPUkQgdGh5IEdvZCwgdG8gcHJvdm9rZSBoaW0gdG8gYW5nZXI6CkkgY2FsbCBoZWF2ZW4gYW5kIGVhcnRoIHRvIHdpdG5lc3MgYWdhaW5zdCB5b3UgdGhpcyBkYXksIHRoYXQgeWUgc2hhbGwgc29vbiB1dHRlcmx5IHBlcmlzaCBmcm9tIG9mZiB0aGUgbGFuZCB3aGVyZXVudG8geWUgZ28gb3ZlciBKb3JkYW4gdG8gcG9zc2VzcyBpdDsgeWUgc2hhbGwgbm90IHByb2xvbmcgeW91ciBkYXlzIHVwb24gaXQsIGJ1dCBzaGFsbCB1dHRlcmx5IGJlIGRlc3Ryb3llZC4KQW5kIHRoZSBMT1JEIHNoYWxsIHNjYXR0ZXIgeW91IGFtb25nIHRoZSBuYXRpb25zLCBhbmQgeWUgc2hhbGwgYmUgbGVmdCBmZXcgaW4gbnVtYmVyIGFtb25nIHRoZSBoZWF0aGVuLCB3aGl0aGVyIHRoZSBMT1JEIHNoYWxsIGxlYWQgeW91LgpBbmQgdGhlcmUgeWUgc2hhbGwgc2VydmUgZ29kcywgdGhlIHdvcmsgb2YgbWVuJ3MgaGFuZHMsIHdvb2QgYW5kIHN0b25lLCB3aGljaCBuZWl0aGVyIHNlZSwgbm9yIGhlYXIsIG5vciBlYXQsIG5vciBzbWVsbC4KQnV0IGlmIGZyb20gdGhlbmNlIHRob3Ugc2hhbHQgc2VlayB0aGUgTE9SRCB0aHkgR29kLCB0aG91IHNoYWx0IGZpbmQgaGltLCBpZiB0aG91IHNlZWsgaGltIHdpdGggYWxsIHRoeSBoZWFydCBhbmQgd2l0aCBhbGwgdGh5IHNvdWwuCldoZW4gdGhvdSBhcnQgaW4gdHJpYnVsYXRpb24sIGFuZCBhbGwgdGhlc2UgdGhpbmdzIGFyZSBjb21lIHVwb24gdGhlZSwgZXZlbiBpbiB0aGUgbGF0dGVyIGRheXMsIGlmIHRob3UgdHVybiB0byB0aGUgTE9SRCB0aHkgR29kLCBhbmQgc2hhbHQgYmUgb2JlZGllbnQgdW50byBoaXMgdm9pY2U7CihGb3IgdGhlIExPUkQgdGh5IEdvZCBpcyBhIG1lcmNpZnVsIEdvZDspIGhlIHdpbGwgbm90IGZvcnNha2UgdGhlZSwgbmVpdGhlciBkZXN0cm95IHRoZWUsIG5vciBmb3JnZXQgdGhlIGNvdmVuYW50IG9mIHRoeSBmYXRoZXJzIHdoaWNoIGhlIHN3YXJlIHVudG8gdGhlbS4KRm9yIGFzayBub3cgb2YgdGhlIGRheXMgdGhhdCBhcmUgcGFzdCwgd2hpY2ggd2VyZSBiZWZvcmUgdGhlZSwgc2luY2UgdGhlIGRheSB0aGF0IEdvZCBjcmVhdGVkIG1hbiB1cG9uIHRoZSBlYXJ0aCwgYW5kIGFzayBmcm9tIHRoZSBvbmUgc2lkZSBvZiBoZWF2ZW4gdW50byB0aGUgb3RoZXIsIHdoZXRoZXIgdGhlcmUgaGF0aCBiZWVuIGFueSBzdWNoIHRoaW5nIGFzIHRoaXMgZ3JlYXQgdGhpbmcgaXMsIG9yIGhhdGggYmVlbiBoZWFyZCBsaWtlIGl0PwpEaWQgZXZlciBwZW9wbGUgaGVhciB0aGUgdm9pY2Ugb2YgR29kIHNwZWFraW5nIG91dCBvZiB0aGUgbWlkc3Qgb2YgdGhlIGZpcmUsIGFzIHRob3UgaGFzdCBoZWFyZCwgYW5kIGxpdmU/Ck9yIGhhdGggR29kIGFzc2F5ZWQgdG8gZ28gYW5kIHRha2UgaGltIGEgbmF0aW9uIGZyb20gdGhlIG1pZHN0IG9mIGFub3RoZXIgbmF0aW9uLCBieSB0ZW1wdGF0aW9ucywgYnkgc2lnbnMsIGFuZCBieSB3b25kZXJzLCBhbmQgYnkgd2FyLCBhbmQgYnkgYSBtaWdodHkgaGFuZCwgYW5kIGJ5IGEgc3RyZXRjaGVkIG91dCBhcm0sIGFuZCBieSBncmVhdCB0ZXJyb3JzLCBhY2NvcmRpbmcgdG8gYWxsIHRoYXQgdGhlIExPUkQgeW91ciBHb2QgZGlkIGZvciB5b3UgaW4gRWd5cHQgYmVmb3JlIHlvdXIgZXllcz8KVW50byB0aGVlIGl0IHdhcyBzaGV3ZWQsIHRoYXQgdGhvdSBtaWdodGVzdCBrbm93IHRoYXQgdGhlIExPUkQgaGUgaXMgR29kOyB0aGVyZSBpcyBub25lIGVsc2UgYmVzaWRlIGhpbS4KT3V0IG9mIGhlYXZlbiBoZSBtYWRlIHRoZWUgdG8gaGVhciBoaXMgdm9pY2UsIHRoYXQgaGUgbWlnaHQgaW5zdHJ1Y3QgdGhlZTogYW5kIHVwb24gZWFydGggaGUgc2hld2VkIHRoZWUgaGlzIGdyZWF0IGZpcmU7IGFuZCB0aG91IGhlYXJkZXN0IGhpcyB3b3JkcyBvdXQgb2YgdGhlIG1pZHN0IG9mIHRoZSBmaXJlLgpBbmQgYmVjYXVzZSBoZSBsb3ZlZCB0aHkgZmF0aGVycywgdGhlcmVmb3JlIGhlIGNob3NlIHRoZWlyIHNlZWQgYWZ0ZXIgdGhlbSwgYW5kIGJyb3VnaHQgdGhlZSBvdXQgaW4gaGlzIHNpZ2h0IHdpdGggaGlzIG1pZ2h0eSBwb3dlciBvdXQgb2YgRWd5cHQ7ClRvIGRyaXZlIG91dCBuYXRpb25zIGZyb20gYmVmb3JlIHRoZWUgZ3JlYXRlciBhbmQgbWlnaHRpZXIgdGhhbiB0aG91IGFydCwgdG8gYnJpbmcgdGhlZSBpbiwgdG8gZ2l2ZSB0aGVlIHRoZWlyIGxhbmQgZm9yIGFuIGluaGVyaXRhbmNlLCBhcyBpdCBpcyB0aGlzIGRheS4KS25vdyB0aGVyZWZvcmUgdGhpcyBkYXksIGFuZCBjb25zaWRlciBpdCBpbiB0aGluZSBoZWFydCwgdGhhdCB0aGUgTE9SRCBoZSBpcyBHb2QgaW4gaGVhdmVuIGFib3ZlLCBhbmQgdXBvbiB0aGUgZWFydGggYmVuZWF0aDogdGhlcmUgaXMgbm9uZSBlbHNlLgpUaG91IHNoYWx0IGtlZXAgdGhlcmVmb3JlIGhpcyBzdGF0dXRlcywgYW5kIGhpcyBjb21tYW5kbWVudHMsIHdoaWNoIEkgY29tbWFuZCB0aGVlIHRoaXMgZGF5LCB0aGF0IGl0IG1heSBnbyB3ZWxsIHdpdGggdGhlZSwgYW5kIHdpdGggdGh5IGNoaWxkcmVuIGFmdGVyIHRoZWUsIGFuZCB0aGF0IHRob3UgbWF5ZXN0IHByb2xvbmcgdGh5IGRheXMgdXBvbiB0aGUgZWFydGgsIHdoaWNoIHRoZSBMT1JEIHRoeSBHb2QgZ2l2ZXRoIHRoZWUsIGZvciBldmVyLgpUaGVuIE1vc2VzIHNldmVyZWQgdGhyZWUgY2l0aWVzIG9uIHRoaXMgc2lkZSBKb3JkYW4gdG93YXJkIHRoZSBzdW5yaXNpbmc7ClRoYXQgdGhlIHNsYXllciBtaWdodCBmbGVlIHRoaXRoZXIsIHdoaWNoIHNob3VsZCBraWxsIGhpcyBuZWlnaGJvdXIgdW5hd2FyZXMsIGFuZCBoYXRlZCBoaW0gbm90IGluIHRpbWVzIHBhc3Q7IGFuZCB0aGF0IGZsZWVpbmcgdW50byBvbmUgb2YgdGhlc2UgY2l0aWVzIGhlIG1pZ2h0IGxpdmU6Ck5hbWVseSwgQmV6ZXIgaW4gdGhlIHdpbGRlcm5lc3MsIGluIHRoZSBwbGFpbiBjb3VudHJ5LCBvZiB0aGUgUmV1YmVuaXRlczsgYW5kIFJhbW90aCBpbiBHaWxlYWQsIG9mIHRoZSBHYWRpdGVzOyBhbmQgR29sYW4gaW4gQmFzaGFuLCBvZiB0aGUgTWFuYXNzaXRlcy4KQW5kIHRoaXMgaXMgdGhlIGxhdyB3aGljaCBNb3NlcyBzZXQgYmVmb3JlIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWw6ClRoZXNlIGFyZSB0aGUgdGVzdGltb25pZXMsIGFuZCB0aGUgc3RhdHV0ZXMsIGFuZCB0aGUganVkZ21lbnRzLCB3aGljaCBNb3NlcyBzcGFrZSB1bnRvIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIGFmdGVyIHRoZXkgY2FtZSBmb3J0aCBvdXQgb2YgRWd5cHQuCk9uIHRoaXMgc2lkZSBKb3JkYW4sIGluIHRoZSB2YWxsZXkgb3ZlciBhZ2FpbnN0IEJldGhwZW9yLCBpbiB0aGUgbGFuZCBvZiBTaWhvbiBraW5nIG9mIHRoZSBBbW9yaXRlcywgd2hvIGR3ZWx0IGF0IEhlc2hib24sIHdob20gTW9zZXMgYW5kIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgc21vdGUsIGFmdGVyIHRoZXkgd2VyZSBjb21lIGZvcnRoIG91dCBvZiBFZ3lwdDoKQW5kIHRoZXkgcG9zc2Vzc2VkIGhpcyBsYW5kLCBhbmQgdGhlIGxhbmQgb2YgT2cga2luZyBvZiBCYXNoYW4sIHR3byBraW5ncyBvZiB0aGUgQW1vcml0ZXMsIHdoaWNoIHdlcmUgb24gdGhpcyBzaWRlIEpvcmRhbiB0b3dhcmQgdGhlIHN1bnJpc2luZzsKRnJvbSBBcm9lciwgd2hpY2ggaXMgYnkgdGhlIGJhbmsgb2YgdGhlIHJpdmVyIEFybm9uLCBldmVuIHVudG8gbW91bnQgU2lvbiwgd2hpY2ggaXMgSGVybW9uLApBbmQgYWxsIHRoZSBwbGFpbiBvbiB0aGlzIHNpZGUgSm9yZGFuIGVhc3R3YXJkLCBldmVuIHVudG8gdGhlIHNlYSBvZiB0aGUgcGxhaW4sIHVuZGVyIHRoZSBzcHJpbmdzIG9mIFBpc2dhaC4KQW5kIE1vc2VzIGNhbGxlZCBhbGwgSXNyYWVsLCBhbmQgc2FpZCB1bnRvIHRoZW0sIEhlYXIsIE8gSXNyYWVsLCB0aGUgc3RhdHV0ZXMgYW5kIGp1ZGdtZW50cyB3aGljaCBJIHNwZWFrIGluIHlvdXIgZWFycyB0aGlzIGRheSwgdGhhdCB5ZSBtYXkgbGVhcm4gdGhlbSwgYW5kIGtlZXAsIGFuZCBkbyB0aGVtLgpUaGUgTE9SRCBvdXIgR29kIG1hZGUgYSBjb3ZlbmFudCB3aXRoIHVzIGluIEhvcmViLgpUaGUgTE9SRCBtYWRlIG5vdCB0aGlzIGNvdmVuYW50IHdpdGggb3VyIGZhdGhlcnMsIGJ1dCB3aXRoIHVzLCBldmVuIHVzLCB3aG8gYXJlIGFsbCBvZiB1cyBoZXJlIGFsaXZlIHRoaXMgZGF5LgpUaGUgTE9SRCB0YWxrZWQgd2l0aCB5b3UgZmFjZSB0byBmYWNlIGluIHRoZSBtb3VudCBvdXQgb2YgdGhlIG1pZHN0IG9mIHRoZSBmaXJlLAooSSBzdG9vZCBiZXR3ZWVuIHRoZSBMT1JEIGFuZCB5b3UgYXQgdGhhdCB0aW1lLCB0byBzaGV3IHlvdSB0aGUgd29yZCBvZiB0aGUgTE9SRDogZm9yIHllIHdlcmUgYWZyYWlkIGJ5IHJlYXNvbiBvZiB0aGUgZmlyZSwgYW5kIHdlbnQgbm90IHVwIGludG8gdGhlIG1vdW50Oykgc2F5aW5nLApJIGFtIHRoZSBMT1JEIHRoeSBHb2QsIHdoaWNoIGJyb3VnaHQgdGhlZSBvdXQgb2YgdGhlIGxhbmQgb2YgRWd5cHQsIGZyb20gdGhlIGhvdXNlIG9mIGJvbmRhZ2UuClRob3Ugc2hhbHQgaGF2ZSBub25lIG90aGVyIGdvZHMgYmVmb3JlIG1lLgpUaG91IHNoYWx0IG5vdCBtYWtlIHRoZWUgYW55IGdyYXZlbiBpbWFnZSwgb3IgYW55IGxpa2VuZXNzIG9mIGFueSB0aGluZyB0aGF0IGlzIGluIGhlYXZlbiBhYm92ZSwgb3IgdGhhdCBpcyBpbiB0aGUgZWFydGggYmVuZWF0aCwgb3IgdGhhdCBpcyBpbiB0aGUgd2F0ZXJzIGJlbmVhdGggdGhlIGVhcnRoOgpUaG91IHNoYWx0IG5vdCBib3cgZG93biB0aHlzZWxmIHVudG8gdGhlbSwgbm9yIHNlcnZlIHRoZW06IGZvciBJIHRoZSBMT1JEIHRoeSBHb2QgYW0gYSBqZWFsb3VzIEdvZCwgdmlzaXRpbmcgdGhlIGluaXF1aXR5IG9mIHRoZSBmYXRoZXJzIHVwb24gdGhlIGNoaWxkcmVuIHVudG8gdGhlIHRoaXJkIGFuZCBmb3VydGggZ2VuZXJhdGlvbiBvZiB0aGVtIHRoYXQgaGF0ZSBtZSwKQW5kIHNoZXdpbmcgbWVyY3kgdW50byB0aG91c2FuZHMgb2YgdGhlbSB0aGF0IGxvdmUgbWUgYW5kIGtlZXAgbXkgY29tbWFuZG1lbnRzLgpUaG91IHNoYWx0IG5vdCB0YWtlIHRoZSBuYW1lIG9mIHRoZSBMT1JEIHRoeSBHb2QgaW4gdmFpbjogZm9yIHRoZSBMT1JEIHdpbGwgbm90IGhvbGQgaGltIGd1aWx0bGVzcyB0aGF0IHRha2V0aCBoaXMgbmFtZSBpbiB2YWluLgpLZWVwIHRoZSBzYWJiYXRoIGRheSB0byBzYW5jdGlmeSBpdCwgYXMgdGhlIExPUkQgdGh5IEdvZCBoYXRoIGNvbW1hbmRlZCB0aGVlLgpTaXggZGF5cyB0aG91IHNoYWx0IGxhYm91ciwgYW5kIGRvIGFsbCB0aHkgd29yazoKQnV0IHRoZSBzZXZlbnRoIGRheSBpcyB0aGUgc2FiYmF0aCBvZiB0aGUgTE9SRCB0aHkgR29kOiBpbiBpdCB0aG91IHNoYWx0IG5vdCBkbyBhbnkgd29yaywgdGhvdSwgbm9yIHRoeSBzb24sIG5vciB0aHkgZGF1Z2h0ZXIsIG5vciB0aHkgbWFuc2VydmFudCwgbm9yIHRoeSBtYWlkc2VydmFudCwgbm9yIHRoaW5lIG94LCBub3IgdGhpbmUgYXNzLCBub3IgYW55IG9mIHRoeSBjYXR0bGUsIG5vciB0aHkgc3RyYW5nZXIgdGhhdCBpcyB3aXRoaW4gdGh5IGdhdGVzOyB0aGF0IHRoeSBtYW5zZXJ2YW50IGFuZCB0aHkgbWFpZHNlcnZhbnQgbWF5IHJlc3QgYXMgd2VsbCBhcyB0aG91LgpBbmQgcmVtZW1iZXIgdGhhdCB0aG91IHdhc3QgYSBzZXJ2YW50IGluIHRoZSBsYW5kIG9mIEVneXB0LCBhbmQgdGhhdCB0aGUgTE9SRCB0aHkgR29kIGJyb3VnaHQgdGhlZSBvdXQgdGhlbmNlIHRocm91Z2ggYSBtaWdodHkgaGFuZCBhbmQgYnkgYSBzdHJldGNoZWQgb3V0IGFybTogdGhlcmVmb3JlIHRoZSBMT1JEIHRoeSBHb2QgY29tbWFuZGVkIHRoZWUgdG8ga2VlcCB0aGUgc2FiYmF0aCBkYXkuCkhvbm91ciB0aHkgZmF0aGVyIGFuZCB0aHkgbW90aGVyLCBhcyB0aGUgTE9SRCB0aHkgR29kIGhhdGggY29tbWFuZGVkIHRoZWU7IHRoYXQgdGh5IGRheXMgbWF5IGJlIHByb2xvbmdlZCwgYW5kIHRoYXQgaXQgbWF5IGdvIHdlbGwgd2l0aCB0aGVlLCBpbiB0aGUgbGFuZCB3aGljaCB0aGUgTE9SRCB0aHkgR29kIGdpdmV0aCB0aGVlLgpUaG91IHNoYWx0IG5vdCBraWxsLgpOZWl0aGVyIHNoYWx0IHRob3UgY29tbWl0IGFkdWx0ZXJ5LgpOZWl0aGVyIHNoYWx0IHRob3Ugc3RlYWwuCk5laXRoZXIgc2hhbHQgdGhvdSBiZWFyIGZhbHNlIHdpdG5lc3MgYWdhaW5zdCB0aHkgbmVpZ2hib3VyLgpOZWl0aGVyIHNoYWx0IHRob3UgZGVzaXJlIHRoeSBuZWlnaGJvdXIncyB3aWZlLCBuZWl0aGVyIHNoYWx0IHRob3UgY292ZXQgdGh5IG5laWdoYm91cidzIGhvdXNlLCBoaXMgZmllbGQsIG9yIGhpcyBtYW5zZXJ2YW50LCBvciBoaXMgbWFpZHNlcnZhbnQsIGhpcyBveCwgb3IgaGlzIGFzcywgb3IgYW55IHRoaW5nIHRoYXQgaXMgdGh5IG5laWdoYm91cidzLgpUaGVzZSB3b3JkcyB0aGUgTE9SRCBzcGFrZSB1bnRvIGFsbCB5b3VyIGFzc2VtYmx5IGluIHRoZSBtb3VudCBvdXQgb2YgdGhlIG1pZHN0IG9mIHRoZSBmaXJlLCBvZiB0aGUgY2xvdWQsIGFuZCBvZiB0aGUgdGhpY2sgZGFya25lc3MsIHdpdGggYSBncmVhdCB2b2ljZTogYW5kIGhlIGFkZGVkIG5vIG1vcmUuIEFuZCBoZSB3cm90ZSB0aGVtIGluIHR3byB0YWJsZXMgb2Ygc3RvbmUsIGFuZCBkZWxpdmVyZWQgdGhlbSB1bnRvIG1lLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIHllIGhlYXJkIHRoZSB2b2ljZSBvdXQgb2YgdGhlIG1pZHN0IG9mIHRoZSBkYXJrbmVzcywgKGZvciB0aGUgbW91bnRhaW4gZGlkIGJ1cm4gd2l0aCBmaXJlLCkgdGhhdCB5ZSBjYW1lIG5lYXIgdW50byBtZSwgZXZlbiBhbGwgdGhlIGhlYWRzIG9mIHlvdXIgdHJpYmVzLCBhbmQgeW91ciBlbGRlcnM7CkFuZCB5ZSBzYWlkLCBCZWhvbGQsIHRoZSBMT1JEIG91ciBHb2QgaGF0aCBzaGV3ZWQgdXMgaGlzIGdsb3J5IGFuZCBoaXMgZ3JlYXRuZXNzLCBhbmQgd2UgaGF2ZSBoZWFyZCBoaXMgdm9pY2Ugb3V0IG9mIHRoZSBtaWRzdCBvZiB0aGUgZmlyZTogd2UgaGF2ZSBzZWVuIHRoaXMgZGF5IHRoYXQgR29kIGRvdGggdGFsayB3aXRoIG1hbiwgYW5kIGhlIGxpdmV0aC4KTm93IHRoZXJlZm9yZSB3aHkgc2hvdWxkIHdlIGRpZT8gZm9yIHRoaXMgZ3JlYXQgZmlyZSB3aWxsIGNvbnN1bWUgdXM6IGlmIHdlIGhlYXIgdGhlIHZvaWNlIG9mIHRoZSBMT1JEIG91ciBHb2QgYW55IG1vcmUsIHRoZW4gd2Ugc2hhbGwgZGllLgpGb3Igd2hvIGlzIHRoZXJlIG9mIGFsbCBmbGVzaCwgdGhhdCBoYXRoIGhlYXJkIHRoZSB2b2ljZSBvZiB0aGUgbGl2aW5nIEdvZCBzcGVha2luZyBvdXQgb2YgdGhlIG1pZHN0IG9mIHRoZSBmaXJlLCBhcyB3ZSBoYXZlLCBhbmQgbGl2ZWQ/CkdvIHRob3UgbmVhciwgYW5kIGhlYXIgYWxsIHRoYXQgdGhlIExPUkQgb3VyIEdvZCBzaGFsbCBzYXk6IGFuZCBzcGVhayB0aG91IHVudG8gdXMgYWxsIHRoYXQgdGhlIExPUkQgb3VyIEdvZCBzaGFsbCBzcGVhayB1bnRvIHRoZWU7IGFuZCB3ZSB3aWxsIGhlYXIgaXQsIGFuZCBkbyBpdC4KQW5kIHRoZSBMT1JEIGhlYXJkIHRoZSB2b2ljZSBvZiB5b3VyIHdvcmRzLCB3aGVuIHllIHNwYWtlIHVudG8gbWU7IGFuZCB0aGUgTE9SRCBzYWlkIHVudG8gbWUsIEkgaGF2ZSBoZWFyZCB0aGUgdm9pY2Ugb2YgdGhlIHdvcmRzIG9mIHRoaXMgcGVvcGxlLCB3aGljaCB0aGV5IGhhdmUgc3Bva2VuIHVudG8gdGhlZTogdGhleSBoYXZlIHdlbGwgc2FpZCBhbGwgdGhhdCB0aGV5IGhhdmUgc3Bva2VuLgpPIHRoYXQgdGhlcmUgd2VyZSBzdWNoIGFuIGhlYXJ0IGluIHRoZW0sIHRoYXQgdGhleSB3b3VsZCBmZWFyIG1lLCBhbmQga2VlcCBhbGwgbXkgY29tbWFuZG1lbnRzIGFsd2F5cywgdGhhdCBpdCBtaWdodCBiZSB3ZWxsIHdpdGggdGhlbSwgYW5kIHdpdGggdGhlaXIgY2hpbGRyZW4gZm9yIGV2ZXIhCkdvIHNheSB0byB0aGVtLCBHZXQgeW91IGludG8geW91ciB0ZW50cyBhZ2Fpbi4KQnV0IGFzIGZvciB0aGVlLCBzdGFuZCB0aG91IGhlcmUgYnkgbWUsIGFuZCBJIHdpbGwgc3BlYWsgdW50byB0aGVlIGFsbCB0aGUgY29tbWFuZG1lbnRzLCBhbmQgdGhlIHN0YXR1dGVzLCBhbmQgdGhlIGp1ZGdtZW50cywgd2hpY2ggdGhvdSBzaGFsdCB0ZWFjaCB0aGVtLCB0aGF0IHRoZXkgbWF5IGRvIHRoZW0gaW4gdGhlIGxhbmQgd2hpY2ggSSBnaXZlIHRoZW0gdG8gcG9zc2VzcyBpdC4KWWUgc2hhbGwgb2JzZXJ2ZSB0byBkbyB0aGVyZWZvcmUgYXMgdGhlIExPUkQgeW91ciBHb2QgaGF0aCBjb21tYW5kZWQgeW91OiB5ZSBzaGFsbCBub3QgdHVybiBhc2lkZSB0byB0aGUgcmlnaHQgaGFuZCBvciB0byB0aGUgbGVmdC4KWWUgc2hhbGwgd2FsayBpbiBhbGwgdGhlIHdheXMgd2hpY2ggdGhlIExPUkQgeW91ciBHb2QgaGF0aCBjb21tYW5kZWQgeW91LCB0aGF0IHllIG1heSBsaXZlLCBhbmQgdGhhdCBpdCBtYXkgYmUgd2VsbCB3aXRoIHlvdSwgYW5kIHRoYXQgeWUgbWF5IHByb2xvbmcgeW91ciBkYXlzIGluIHRoZSBsYW5kIHdoaWNoIHllIHNoYWxsIHBvc3Nlc3MuCk5vdyB0aGVzZSBhcmUgdGhlIGNvbW1hbmRtZW50cywgdGhlIHN0YXR1dGVzLCBhbmQgdGhlIGp1ZGdtZW50cywgd2hpY2ggdGhlIExPUkQgeW91ciBHb2QgY29tbWFuZGVkIHRvIHRlYWNoIHlvdSwgdGhhdCB5ZSBtaWdodCBkbyB0aGVtIGluIHRoZSBsYW5kIHdoaXRoZXIgeWUgZ28gdG8gcG9zc2VzcyBpdDoKVGhhdCB0aG91IG1pZ2h0ZXN0IGZlYXIgdGhlIExPUkQgdGh5IEdvZCwgdG8ga2VlcCBhbGwgaGlzIHN0YXR1dGVzIGFuZCBoaXMgY29tbWFuZG1lbnRzLCB3aGljaCBJIGNvbW1hbmQgdGhlZSwgdGhvdSwgYW5kIHRoeSBzb24sIGFuZCB0aHkgc29uJ3Mgc29uLCBhbGwgdGhlIGRheXMgb2YgdGh5IGxpZmU7IGFuZCB0aGF0IHRoeSBkYXlzIG1heSBiZSBwcm9sb25nZWQuCkhlYXIgdGhlcmVmb3JlLCBPIElzcmFlbCwgYW5kIG9ic2VydmUgdG8gZG8gaXQ7IHRoYXQgaXQgbWF5IGJlIHdlbGwgd2l0aCB0aGVlLCBhbmQgdGhhdCB5ZSBtYXkgaW5jcmVhc2UgbWlnaHRpbHksIGFzIHRoZSBMT1JEIEdvZCBvZiB0aHkgZmF0aGVycyBoYXRoIHByb21pc2VkIHRoZWUsIGluIHRoZSBsYW5kIHRoYXQgZmxvd2V0aCB3aXRoIG1pbGsgYW5kIGhvbmV5LgpIZWFyLCBPIElzcmFlbDogVGhlIExPUkQgb3VyIEdvZCBpcyBvbmUgTE9SRDoKQW5kIHRob3Ugc2hhbHQgbG92ZSB0aGUgTE9SRCB0aHkgR29kIHdpdGggYWxsIHRoaW5lIGhlYXJ0LCBhbmQgd2l0aCBhbGwgdGh5IHNvdWwsIGFuZCB3aXRoIGFsbCB0aHkgbWlnaHQuCkFuZCB0aGVzZSB3b3Jkcywgd2hpY2ggSSBjb21tYW5kIHRoZWUgdGhpcyBkYXksIHNoYWxsIGJlIGluIHRoaW5lIGhlYXJ0OgpBbmQgdGhvdSBzaGFsdCB0ZWFjaCB0aGVtIGRpbGlnZW50bHkgdW50byB0aHkgY2hpbGRyZW4sIGFuZCBzaGFsdCB0YWxrIG9mIHRoZW0gd2hlbiB0aG91IHNpdHRlc3QgaW4gdGhpbmUgaG91c2UsIGFuZCB3aGVuIHRob3Ugd2Fsa2VzdCBieSB0aGUgd2F5LCBhbmQgd2hlbiB0aG91IGxpZXN0IGRvd24sIGFuZCB3aGVuIHRob3UgcmlzZXN0IHVwLgpBbmQgdGhvdSBzaGFsdCBiaW5kIHRoZW0gZm9yIGEgc2lnbiB1cG9uIHRoaW5lIGhhbmQsIGFuZCB0aGV5IHNoYWxsIGJlIGFzIGZyb250bGV0cyBiZXR3ZWVuIHRoaW5lIGV5ZXMuCkFuZCB0aG91IHNoYWx0IHdyaXRlIHRoZW0gdXBvbiB0aGUgcG9zdHMgb2YgdGh5IGhvdXNlLCBhbmQgb24gdGh5IGdhdGVzLgpBbmQgaXQgc2hhbGwgYmUsIHdoZW4gdGhlIExPUkQgdGh5IEdvZCBzaGFsbCBoYXZlIGJyb3VnaHQgdGhlZSBpbnRvIHRoZSBsYW5kIHdoaWNoIGhlIHN3YXJlIHVudG8gdGh5IGZhdGhlcnMsIHRvIEFicmFoYW0sIHRvIElzYWFjLCBhbmQgdG8gSmFjb2IsIHRvIGdpdmUgdGhlZSBncmVhdCBhbmQgZ29vZGx5IGNpdGllcywgd2hpY2ggdGhvdSBidWlsZGVkc3Qgbm90LApBbmQgaG91c2VzIGZ1bGwgb2YgYWxsIGdvb2QgdGhpbmdzLCB3aGljaCB0aG91IGZpbGxlZHN0IG5vdCwgYW5kIHdlbGxzIGRpZ2dlZCwgd2hpY2ggdGhvdSBkaWdnZWRzdCBub3QsIHZpbmV5YXJkcyBhbmQgb2xpdmUgdHJlZXMsIHdoaWNoIHRob3UgcGxhbnRlZHN0IG5vdDsgd2hlbiB0aG91IHNoYWx0IGhhdmUgZWF0ZW4gYW5kIGJlIGZ1bGw7ClRoZW4gYmV3YXJlIGxlc3QgdGhvdSBmb3JnZXQgdGhlIExPUkQsIHdoaWNoIGJyb3VnaHQgdGhlZSBmb3J0aCBvdXQgb2YgdGhlIGxhbmQgb2YgRWd5cHQsIGZyb20gdGhlIGhvdXNlIG9mIGJvbmRhZ2UuClRob3Ugc2hhbHQgZmVhciB0aGUgTE9SRCB0aHkgR29kLCBhbmQgc2VydmUgaGltLCBhbmQgc2hhbHQgc3dlYXIgYnkgaGlzIG5hbWUuClllIHNoYWxsIG5vdCBnbyBhZnRlciBvdGhlciBnb2RzLCBvZiB0aGUgZ29kcyBvZiB0aGUgcGVvcGxlIHdoaWNoIGFyZSByb3VuZCBhYm91dCB5b3U7CihGb3IgdGhlIExPUkQgdGh5IEdvZCBpcyBhIGplYWxvdXMgR29kIGFtb25nIHlvdSkgbGVzdCB0aGUgYW5nZXIgb2YgdGhlIExPUkQgdGh5IEdvZCBiZSBraW5kbGVkIGFnYWluc3QgdGhlZSwgYW5kIGRlc3Ryb3kgdGhlZSBmcm9tIG9mZiB0aGUgZmFjZSBvZiB0aGUgZWFydGguClllIHNoYWxsIG5vdCB0ZW1wdCB0aGUgTE9SRCB5b3VyIEdvZCwgYXMgeWUgdGVtcHRlZCBoaW0gaW4gTWFzc2FoLgpZZSBzaGFsbCBkaWxpZ2VudGx5IGtlZXAgdGhlIGNvbW1hbmRtZW50cyBvZiB0aGUgTE9SRCB5b3VyIEdvZCwgYW5kIGhpcyB0ZXN0aW1vbmllcywgYW5kIGhpcyBzdGF0dXRlcywgd2hpY2ggaGUgaGF0aCBjb21tYW5kZWQgdGhlZS4KQW5kIHRob3Ugc2hhbHQgZG8gdGhhdCB3aGljaCBpcyByaWdodCBhbmQgZ29vZCBpbiB0aGUgc2lnaHQgb2YgdGhlIExPUkQ6IHRoYXQgaXQgbWF5IGJlIHdlbGwgd2l0aCB0aGVlLCBhbmQgdGhhdCB0aG91IG1heWVzdCBnbyBpbiBhbmQgcG9zc2VzcyB0aGUgZ29vZCBsYW5kIHdoaWNoIHRoZSBMT1JEIHN3YXJlIHVudG8gdGh5IGZhdGhlcnMuClRvIGNhc3Qgb3V0IGFsbCB0aGluZSBlbmVtaWVzIGZyb20gYmVmb3JlIHRoZWUsIGFzIHRoZSBMT1JEIGhhdGggc3Bva2VuLgpBbmQgd2hlbiB0aHkgc29uIGFza2V0aCB0aGVlIGluIHRpbWUgdG8gY29tZSwgc2F5aW5nLCBXaGF0IG1lYW4gdGhlIHRlc3RpbW9uaWVzLCBhbmQgdGhlIHN0YXR1dGVzLCBhbmQgdGhlIGp1ZGdtZW50cywgd2hpY2ggdGhlIExPUkQgb3VyIEdvZCBoYXRoIGNvbW1hbmRlZCB5b3U/ClRoZW4gdGhvdSBzaGFsdCBzYXkgdW50byB0aHkgc29uLCBXZSB3ZXJlIFBoYXJhb2gncyBib25kbWVuIGluIEVneXB0OyBhbmQgdGhlIExPUkQgYnJvdWdodCB1cyBvdXQgb2YgRWd5cHQgd2l0aCBhIG1pZ2h0eSBoYW5kOgpBbmQgdGhlIExPUkQgc2hld2VkIHNpZ25zIGFuZCB3b25kZXJzLCBncmVhdCBhbmQgc29yZSwgdXBvbiBFZ3lwdCwgdXBvbiBQaGFyYW9oLCBhbmQgdXBvbiBhbGwgaGlzIGhvdXNlaG9sZCwgYmVmb3JlIG91ciBleWVzOgpBbmQgaGUgYnJvdWdodCB1cyBvdXQgZnJvbSB0aGVuY2UsIHRoYXQgaGUgbWlnaHQgYnJpbmcgdXMgaW4sIHRvIGdpdmUgdXMgdGhlIGxhbmQgd2hpY2ggaGUgc3dhcmUgdW50byBvdXIgZmF0aGVycy4KQW5kIHRoZSBMT1JEIGNvbW1hbmRlZCB1cyB0byBkbyBhbGwgdGhlc2Ugc3RhdHV0ZXMsIHRvIGZlYXIgdGhlIExPUkQgb3VyIEdvZCwgZm9yIG91ciBnb29kIGFsd2F5cywgdGhhdCBoZSBtaWdodCBwcmVzZXJ2ZSB1cyBhbGl2ZSwgYXMgaXQgaXMgYXQgdGhpcyBkYXkuCkFuZCBpdCBzaGFsbCBiZSBvdXIgcmlnaHRlb3VzbmVzcywgaWYgd2Ugb2JzZXJ2ZSB0byBkbyBhbGwgdGhlc2UgY29tbWFuZG1lbnRzIGJlZm9yZSB0aGUgTE9SRCBvdXIgR29kLCBhcyBoZSBoYXRoIGNvbW1hbmRlZCB1cy4KV2hlbiB0aGUgTE9SRCB0aHkgR29kIHNoYWxsIGJyaW5nIHRoZWUgaW50byB0aGUgbGFuZCB3aGl0aGVyIHRob3UgZ29lc3QgdG8gcG9zc2VzcyBpdCwgYW5kIGhhdGggY2FzdCBvdXQgbWFueSBuYXRpb25zIGJlZm9yZSB0aGVlLCB0aGUgSGl0dGl0ZXMsIGFuZCB0aGUgR2lyZ2FzaGl0ZXMsIGFuZCB0aGUgQW1vcml0ZXMsIGFuZCB0aGUgQ2FuYWFuaXRlcywgYW5kIHRoZSBQZXJpenppdGVzLCBhbmQgdGhlIEhpdml0ZXMsIGFuZCB0aGUgSmVidXNpdGVzLCBzZXZlbiBuYXRpb25zIGdyZWF0ZXIgYW5kIG1pZ2h0aWVyIHRoYW4gdGhvdTsKQW5kIHdoZW4gdGhlIExPUkQgdGh5IEdvZCBzaGFsbCBkZWxpdmVyIHRoZW0gYmVmb3JlIHRoZWU7IHRob3Ugc2hhbHQgc21pdGUgdGhlbSwgYW5kIHV0dGVybHkgZGVzdHJveSB0aGVtOyB0aG91IHNoYWx0IG1ha2Ugbm8gY292ZW5hbnQgd2l0aCB0aGVtLCBub3Igc2hldyBtZXJjeSB1bnRvIHRoZW06Ck5laXRoZXIgc2hhbHQgdGhvdSBtYWtlIG1hcnJpYWdlcyB3aXRoIHRoZW07IHRoeSBkYXVnaHRlciB0aG91IHNoYWx0IG5vdCBnaXZlIHVudG8gaGlzIHNvbiwgbm9yIGhpcyBkYXVnaHRlciBzaGFsdCB0aG91IHRha2UgdW50byB0aHkgc29uLgpGb3IgdGhleSB3aWxsIHR1cm4gYXdheSB0aHkgc29uIGZyb20gZm9sbG93aW5nIG1lLCB0aGF0IHRoZXkgbWF5IHNlcnZlIG90aGVyIGdvZHM6IHNvIHdpbGwgdGhlIGFuZ2VyIG9mIHRoZSBMT1JEIGJlIGtpbmRsZWQgYWdhaW5zdCB5b3UsIGFuZCBkZXN0cm95IHRoZWUgc3VkZGVubHkuCkJ1dCB0aHVzIHNoYWxsIHllIGRlYWwgd2l0aCB0aGVtOyB5ZSBzaGFsbCBkZXN0cm95IHRoZWlyIGFsdGFycywgYW5kIGJyZWFrIGRvd24gdGhlaXIgaW1hZ2VzLCBhbmQgY3V0IGRvd24gdGhlaXIgZ3JvdmVzLCBhbmQgYnVybiB0aGVpciBncmF2ZW4gaW1hZ2VzIHdpdGggZmlyZS4KRm9yIHRob3UgYXJ0IGFuIGhvbHkgcGVvcGxlIHVudG8gdGhlIExPUkQgdGh5IEdvZDogdGhlIExPUkQgdGh5IEdvZCBoYXRoIGNob3NlbiB0aGVlIHRvIGJlIGEgc3BlY2lhbCBwZW9wbGUgdW50byBoaW1zZWxmLCBhYm92ZSBhbGwgcGVvcGxlIHRoYXQgYXJlIHVwb24gdGhlIGZhY2Ugb2YgdGhlIGVhcnRoLgpUaGUgTE9SRCBkaWQgbm90IHNldCBoaXMgbG92ZSB1cG9uIHlvdSwgbm9yIGNob29zZSB5b3UsIGJlY2F1c2UgeWUgd2VyZSBtb3JlIGluIG51bWJlciB0aGFuIGFueSBwZW9wbGU7IGZvciB5ZSB3ZXJlIHRoZSBmZXdlc3Qgb2YgYWxsIHBlb3BsZToKQnV0IGJlY2F1c2UgdGhlIExPUkQgbG92ZWQgeW91LCBhbmQgYmVjYXVzZSBoZSB3b3VsZCBrZWVwIHRoZSBvYXRoIHdoaWNoIGhlIGhhZCBzd29ybiB1bnRvIHlvdXIgZmF0aGVycywgaGF0aCB0aGUgTE9SRCBicm91Z2h0IHlvdSBvdXQgd2l0aCBhIG1pZ2h0eSBoYW5kLCBhbmQgcmVkZWVtZWQgeW91IG91dCBvZiB0aGUgaG91c2Ugb2YgYm9uZG1lbiwgZnJvbSB0aGUgaGFuZCBvZiBQaGFyYW9oIGtpbmcgb2YgRWd5cHQuCktub3cgdGhlcmVmb3JlIHRoYXQgdGhlIExPUkQgdGh5IEdvZCwgaGUgaXMgR29kLCB0aGUgZmFpdGhmdWwgR29kLCB3aGljaCBrZWVwZXRoIGNvdmVuYW50IGFuZCBtZXJjeSB3aXRoIHRoZW0gdGhhdCBsb3ZlIGhpbSBhbmQga2VlcCBoaXMgY29tbWFuZG1lbnRzIHRvIGEgdGhvdXNhbmQgZ2VuZXJhdGlvbnM7CkFuZCByZXBheWV0aCB0aGVtIHRoYXQgaGF0ZSBoaW0gdG8gdGhlaXIgZmFjZSwgdG8gZGVzdHJveSB0aGVtOiBoZSB3aWxsIG5vdCBiZSBzbGFjayB0byBoaW0gdGhhdCBoYXRldGggaGltLCBoZSB3aWxsIHJlcGF5IGhpbSB0byBoaXMgZmFjZS4KVGhvdSBzaGFsdCB0aGVyZWZvcmUga2VlcCB0aGUgY29tbWFuZG1lbnRzLCBhbmQgdGhlIHN0YXR1dGVzLCBhbmQgdGhlIGp1ZGdtZW50cywgd2hpY2ggSSBjb21tYW5kIHRoZWUgdGhpcyBkYXksIHRvIGRvIHRoZW0uCldoZXJlZm9yZSBpdCBzaGFsbCBjb21lIHRvIHBhc3MsIGlmIHllIGhlYXJrZW4gdG8gdGhlc2UganVkZ21lbnRzLCBhbmQga2VlcCwgYW5kIGRvIHRoZW0sIHRoYXQgdGhlIExPUkQgdGh5IEdvZCBzaGFsbCBrZWVwIHVudG8gdGhlZSB0aGUgY292ZW5hbnQgYW5kIHRoZSBtZXJjeSB3aGljaCBoZSBzd2FyZSB1bnRvIHRoeSBmYXRoZXJzOgpBbmQgaGUgd2lsbCBsb3ZlIHRoZWUsIGFuZCBibGVzcyB0aGVlLCBhbmQgbXVsdGlwbHkgdGhlZTogaGUgd2lsbCBhbHNvIGJsZXNzIHRoZSBmcnVpdCBvZiB0aHkgd29tYiwgYW5kIHRoZSBmcnVpdCBvZiB0aHkgbGFuZCwgdGh5IGNvcm4sIGFuZCB0aHkgd2luZSwgYW5kIHRoaW5lIG9pbCwgdGhlIGluY3JlYXNlIG9mIHRoeSBraW5lLCBhbmQgdGhlIGZsb2NrcyBvZiB0aHkgc2hlZXAsIGluIHRoZSBsYW5kIHdoaWNoIGhlIHN3YXJlIHVudG8gdGh5IGZhdGhlcnMgdG8gZ2l2ZSB0aGVlLgpUaG91IHNoYWx0IGJlIGJsZXNzZWQgYWJvdmUgYWxsIHBlb3BsZTogdGhlcmUgc2hhbGwgbm90IGJlIG1hbGUgb3IgZmVtYWxlIGJhcnJlbiBhbW9uZyB5b3UsIG9yIGFtb25nIHlvdXIgY2F0dGxlLgpBbmQgdGhlIExPUkQgd2lsbCB0YWtlIGF3YXkgZnJvbSB0aGVlIGFsbCBzaWNrbmVzcywgYW5kIHdpbGwgcHV0IG5vbmUgb2YgdGhlIGV2aWwgZGlzZWFzZXMgb2YgRWd5cHQsIHdoaWNoIHRob3Uga25vd2VzdCwgdXBvbiB0aGVlOyBidXQgd2lsbCBsYXkgdGhlbSB1cG9uIGFsbCB0aGVtIHRoYXQgaGF0ZSB0aGVlLgpBbmQgdGhvdSBzaGFsdCBjb25zdW1lIGFsbCB0aGUgcGVvcGxlIHdoaWNoIHRoZSBMT1JEIHRoeSBHb2Qgc2hhbGwgZGVsaXZlciB0aGVlOyB0aGluZSBleWUgc2hhbGwgaGF2ZSBubyBwaXR5IHVwb24gdGhlbTogbmVpdGhlciBzaGFsdCB0aG91IHNlcnZlIHRoZWlyIGdvZHM7IGZvciB0aGF0IHdpbGwgYmUgYSBzbmFyZSB1bnRvIHRoZWUuCklmIHRob3Ugc2hhbHQgc2F5IGluIHRoaW5lIGhlYXJ0LCBUaGVzZSBuYXRpb25zIGFyZSBtb3JlIHRoYW4gSTsgaG93IGNhbiBJIGRpc3Bvc3Nlc3MgdGhlbT8KVGhvdSBzaGFsdCBub3QgYmUgYWZyYWlkIG9mIHRoZW06IGJ1dCBzaGFsdCB3ZWxsIHJlbWVtYmVyIHdoYXQgdGhlIExPUkQgdGh5IEdvZCBkaWQgdW50byBQaGFyYW9oLCBhbmQgdW50byBhbGwgRWd5cHQ7ClRoZSBncmVhdCB0ZW1wdGF0aW9ucyB3aGljaCB0aGluZSBleWVzIHNhdywgYW5kIHRoZSBzaWducywgYW5kIHRoZSB3b25kZXJzLCBhbmQgdGhlIG1pZ2h0eSBoYW5kLCBhbmQgdGhlIHN0cmV0Y2hlZCBvdXQgYXJtLCB3aGVyZWJ5IHRoZSBMT1JEIHRoeSBHb2QgYnJvdWdodCB0aGVlIG91dDogc28gc2hhbGwgdGhlIExPUkQgdGh5IEdvZCBkbyB1bnRvIGFsbCB0aGUgcGVvcGxlIG9mIHdob20gdGhvdSBhcnQgYWZyYWlkLgpNb3Jlb3ZlciB0aGUgTE9SRCB0aHkgR29kIHdpbGwgc2VuZCB0aGUgaG9ybmV0IGFtb25nIHRoZW0sIHVudGlsIHRoZXkgdGhhdCBhcmUgbGVmdCwgYW5kIGhpZGUgdGhlbXNlbHZlcyBmcm9tIHRoZWUsIGJlIGRlc3Ryb3llZC4KVGhvdSBzaGFsdCBub3QgYmUgYWZmcmlnaHRlZCBhdCB0aGVtOiBmb3IgdGhlIExPUkQgdGh5IEdvZCBpcyBhbW9uZyB5b3UsIGEgbWlnaHR5IEdvZCBhbmQgdGVycmlibGUuCkFuZCB0aGUgTE9SRCB0aHkgR29kIHdpbGwgcHV0IG91dCB0aG9zZSBuYXRpb25zIGJlZm9yZSB0aGVlIGJ5IGxpdHRsZSBhbmQgbGl0dGxlOiB0aG91IG1heWVzdCBub3QgY29uc3VtZSB0aGVtIGF0IG9uY2UsIGxlc3QgdGhlIGJlYXN0cyBvZiB0aGUgZmllbGQgaW5jcmVhc2UgdXBvbiB0aGVlLgpCdXQgdGhlIExPUkQgdGh5IEdvZCBzaGFsbCBkZWxpdmVyIHRoZW0gdW50byB0aGVlLCBhbmQgc2hhbGwgZGVzdHJveSB0aGVtIHdpdGggYSBtaWdodHkgZGVzdHJ1Y3Rpb24sIHVudGlsIHRoZXkgYmUgZGVzdHJveWVkLgpBbmQgaGUgc2hhbGwgZGVsaXZlciB0aGVpciBraW5ncyBpbnRvIHRoaW5lIGhhbmQsIGFuZCB0aG91IHNoYWx0IGRlc3Ryb3kgdGhlaXIgbmFtZSBmcm9tIHVuZGVyIGhlYXZlbjogdGhlcmUgc2hhbGwgbm8gbWFuIGJlIGFibGUgdG8gc3RhbmQgYmVmb3JlIHRoZWUsIHVudGlsIHRob3UgaGF2ZSBkZXN0cm95ZWQgdGhlbS4KVGhlIGdyYXZlbiBpbWFnZXMgb2YgdGhlaXIgZ29kcyBzaGFsbCB5ZSBidXJuIHdpdGggZmlyZTogdGhvdSBzaGFsdCBub3QgZGVzaXJlIHRoZSBzaWx2ZXIgb3IgZ29sZCB0aGF0IGlzIG9uIHRoZW0sIG5vciB0YWtlIGl0IHVudG8gdGhlZSwgbGVzdCB0aG91IGJlIHNuYXJlZCB0aGVyaW46IGZvciBpdCBpcyBhbiBhYm9taW5hdGlvbiB0byB0aGUgTE9SRCB0aHkgR29kLgpOZWl0aGVyIHNoYWx0IHRob3UgYnJpbmcgYW4gYWJvbWluYXRpb24gaW50byB0aGluZSBob3VzZSwgbGVzdCB0aG91IGJlIGEgY3Vyc2VkIHRoaW5nIGxpa2UgaXQ6IGJ1dCB0aG91IHNoYWx0IHV0dGVybHkgZGV0ZXN0IGl0LCBhbmQgdGhvdSBzaGFsdCB1dHRlcmx5IGFiaG9yIGl0OyBmb3IgaXQgaXMgYSBjdXJzZWQgdGhpbmcuCkFsbCB0aGUgY29tbWFuZG1lbnRzIHdoaWNoIEkgY29tbWFuZCB0aGVlIHRoaXMgZGF5IHNoYWxsIHllIG9ic2VydmUgdG8gZG8sIHRoYXQgeWUgbWF5IGxpdmUsIGFuZCBtdWx0aXBseSwgYW5kIGdvIGluIGFuZCBwb3NzZXNzIHRoZSBsYW5kIHdoaWNoIHRoZSBMT1JEIHN3YXJlIHVudG8geW91ciBmYXRoZXJzLgpBbmQgdGhvdSBzaGFsdCByZW1lbWJlciBhbGwgdGhlIHdheSB3aGljaCB0aGUgTE9SRCB0aHkgR29kIGxlZCB0aGVlIHRoZXNlIGZvcnR5IHllYXJzIGluIHRoZSB3aWxkZXJuZXNzLCB0byBodW1ibGUgdGhlZSwgYW5kIHRvIHByb3ZlIHRoZWUsIHRvIGtub3cgd2hhdCB3YXMgaW4gdGhpbmUgaGVhcnQsIHdoZXRoZXIgdGhvdSB3b3VsZGVzdCBrZWVwIGhpcyBjb21tYW5kbWVudHMsIG9yIG5vLgpBbmQgaGUgaHVtYmxlZCB0aGVlLCBhbmQgc3VmZmVyZWQgdGhlZSB0byBodW5nZXIsIGFuZCBmZWQgdGhlZSB3aXRoIG1hbm5hLCB3aGljaCB0aG91IGtuZXdlc3Qgbm90LCBuZWl0aGVyIGRpZCB0aHkgZmF0aGVycyBrbm93OyB0aGF0IGhlIG1pZ2h0IG1ha2UgdGhlZSBrbm93IHRoYXQgbWFuIGRvdGggbm90IGxpdmUgYnkgYnJlYWQgb25seSwgYnV0IGJ5IGV2ZXJ5IHdvcmQgdGhhdCBwcm9jZWVkZXRoIG91dCBvZiB0aGUgbW91dGggb2YgdGhlIExPUkQgZG90aCBtYW4gbGl2ZS4KVGh5IHJhaW1lbnQgd2F4ZWQgbm90IG9sZCB1cG9uIHRoZWUsIG5laXRoZXIgZGlkIHRoeSBmb290IHN3ZWxsLCB0aGVzZSBmb3J0eSB5ZWFycy4KVGhvdSBzaGFsdCBhbHNvIGNvbnNpZGVyIGluIHRoaW5lIGhlYXJ0LCB0aGF0LCBhcyBhIG1hbiBjaGFzdGVuZXRoIGhpcyBzb24sIHNvIHRoZSBMT1JEIHRoeSBHb2QgY2hhc3RlbmV0aCB0aGVlLgpUaGVyZWZvcmUgdGhvdSBzaGFsdCBrZWVwIHRoZSBjb21tYW5kbWVudHMgb2YgdGhlIExPUkQgdGh5IEdvZCwgdG8gd2FsayBpbiBoaXMgd2F5cywgYW5kIHRvIGZlYXIgaGltLgpGb3IgdGhlIExPUkQgdGh5IEdvZCBicmluZ2V0aCB0aGVlIGludG8gYSBnb29kIGxhbmQsIGEgbGFuZCBvZiBicm9va3Mgb2Ygd2F0ZXIsIG9mIGZvdW50YWlucyBhbmQgZGVwdGhzIHRoYXQgc3ByaW5nIG91dCBvZiB2YWxsZXlzIGFuZCBoaWxsczsKQSBsYW5kIG9mIHdoZWF0LCBhbmQgYmFybGV5LCBhbmQgdmluZXMsIGFuZCBmaWcgdHJlZXMsIGFuZCBwb21lZ3JhbmF0ZXM7IGEgbGFuZCBvZiBvaWwgb2xpdmUsIGFuZCBob25leTsKQSBsYW5kIHdoZXJlaW4gdGhvdSBzaGFsdCBlYXQgYnJlYWQgd2l0aG91dCBzY2FyY2VuZXNzLCB0aG91IHNoYWx0IG5vdCBsYWNrIGFueSB0aGluZyBpbiBpdDsgYSBsYW5kIHdob3NlIHN0b25lcyBhcmUgaXJvbiwgYW5kIG91dCBvZiB3aG9zZSBoaWxscyB0aG91IG1heWVzdCBkaWcgYnJhc3MuCldoZW4gdGhvdSBoYXN0IGVhdGVuIGFuZCBhcnQgZnVsbCwgdGhlbiB0aG91IHNoYWx0IGJsZXNzIHRoZSBMT1JEIHRoeSBHb2QgZm9yIHRoZSBnb29kIGxhbmQgd2hpY2ggaGUgaGF0aCBnaXZlbiB0aGVlLgpCZXdhcmUgdGhhdCB0aG91IGZvcmdldCBub3QgdGhlIExPUkQgdGh5IEdvZCwgaW4gbm90IGtlZXBpbmcgaGlzIGNvbW1hbmRtZW50cywgYW5kIGhpcyBqdWRnbWVudHMsIGFuZCBoaXMgc3RhdHV0ZXMsIHdoaWNoIEkgY29tbWFuZCB0aGVlIHRoaXMgZGF5OgpMZXN0IHdoZW4gdGhvdSBoYXN0IGVhdGVuIGFuZCBhcnQgZnVsbCwgYW5kIGhhc3QgYnVpbHQgZ29vZGx5IGhvdXNlcywgYW5kIGR3ZWx0IHRoZXJlaW47CkFuZCB3aGVuIHRoeSBoZXJkcyBhbmQgdGh5IGZsb2NrcyBtdWx0aXBseSwgYW5kIHRoeSBzaWx2ZXIgYW5kIHRoeSBnb2xkIGlzIG11bHRpcGxpZWQsIGFuZCBhbGwgdGhhdCB0aG91IGhhc3QgaXMgbXVsdGlwbGllZDsKVGhlbiB0aGluZSBoZWFydCBiZSBsaWZ0ZWQgdXAsIGFuZCB0aG91IGZvcmdldCB0aGUgTE9SRCB0aHkgR29kLCB3aGljaCBicm91Z2h0IHRoZWUgZm9ydGggb3V0IG9mIHRoZSBsYW5kIG9mIEVneXB0LCBmcm9tIHRoZSBob3VzZSBvZiBib25kYWdlOwpXaG8gbGVkIHRoZWUgdGhyb3VnaCB0aGF0IGdyZWF0IGFuZCB0ZXJyaWJsZSB3aWxkZXJuZXNzLCB3aGVyZWluIHdlcmUgZmllcnkgc2VycGVudHMsIGFuZCBzY29ycGlvbnMsIGFuZCBkcm91Z2h0LCB3aGVyZSB0aGVyZSB3YXMgbm8gd2F0ZXI7IHdobyBicm91Z2h0IHRoZWUgZm9ydGggd2F0ZXIgb3V0IG9mIHRoZSByb2NrIG9mIGZsaW50OwpXaG8gZmVkIHRoZWUgaW4gdGhlIHdpbGRlcm5lc3Mgd2l0aCBtYW5uYSwgd2hpY2ggdGh5IGZhdGhlcnMga25ldyBub3QsIHRoYXQgaGUgbWlnaHQgaHVtYmxlIHRoZWUsIGFuZCB0aGF0IGhlIG1pZ2h0IHByb3ZlIHRoZWUsIHRvIGRvIHRoZWUgZ29vZCBhdCB0aHkgbGF0dGVyIGVuZDsKQW5kIHRob3Ugc2F5IGluIHRoaW5lIGhlYXJ0LCBNeSBwb3dlciBhbmQgdGhlIG1pZ2h0IG9mIG1pbmUgaGFuZCBoYXRoIGdvdHRlbiBtZSB0aGlzIHdlYWx0aC4KQnV0IHRob3Ugc2hhbHQgcmVtZW1iZXIgdGhlIExPUkQgdGh5IEdvZDogZm9yIGl0IGlzIGhlIHRoYXQgZ2l2ZXRoIHRoZWUgcG93ZXIgdG8gZ2V0IHdlYWx0aCwgdGhhdCBoZSBtYXkgZXN0YWJsaXNoIGhpcyBjb3ZlbmFudCB3aGljaCBoZSBzd2FyZSB1bnRvIHRoeSBmYXRoZXJzLCBhcyBpdCBpcyB0aGlzIGRheS4KQW5kIGl0IHNoYWxsIGJlLCBpZiB0aG91IGRvIGF0IGFsbCBmb3JnZXQgdGhlIExPUkQgdGh5IEdvZCwgYW5kIHdhbGsgYWZ0ZXIgb3RoZXIgZ29kcywgYW5kIHNlcnZlIHRoZW0sIGFuZCB3b3JzaGlwIHRoZW0sIEkgdGVzdGlmeSBhZ2FpbnN0IHlvdSB0aGlzIGRheSB0aGF0IHllIHNoYWxsIHN1cmVseSBwZXJpc2guCkFzIHRoZSBuYXRpb25zIHdoaWNoIHRoZSBMT1JEIGRlc3Ryb3lldGggYmVmb3JlIHlvdXIgZmFjZSwgc28gc2hhbGwgeWUgcGVyaXNoOyBiZWNhdXNlIHllIHdvdWxkIG5vdCBiZSBvYmVkaWVudCB1bnRvIHRoZSB2b2ljZSBvZiB0aGUgTE9SRCB5b3VyIEdvZC4KSGVhciwgTyBJc3JhZWw6IFRob3UgYXJ0IHRvIHBhc3Mgb3ZlciBKb3JkYW4gdGhpcyBkYXksIHRvIGdvIGluIHRvIHBvc3Nlc3MgbmF0aW9ucyBncmVhdGVyIGFuZCBtaWdodGllciB0aGFuIHRoeXNlbGYsIGNpdGllcyBncmVhdCBhbmQgZmVuY2VkIHVwIHRvIGhlYXZlbiwKQSBwZW9wbGUgZ3JlYXQgYW5kIHRhbGwsIHRoZSBjaGlsZHJlbiBvZiB0aGUgQW5ha2ltcywgd2hvbSB0aG91IGtub3dlc3QsIGFuZCBvZiB3aG9tIHRob3UgaGFzdCBoZWFyZCBzYXksIFdobyBjYW4gc3RhbmQgYmVmb3JlIHRoZSBjaGlsZHJlbiBvZiBBbmFrIQpVbmRlcnN0YW5kIHRoZXJlZm9yZSB0aGlzIGRheSwgdGhhdCB0aGUgTE9SRCB0aHkgR29kIGlzIGhlIHdoaWNoIGdvZXRoIG92ZXIgYmVmb3JlIHRoZWU7IGFzIGEgY29uc3VtaW5nIGZpcmUgaGUgc2hhbGwgZGVzdHJveSB0aGVtLCBhbmQgaGUgc2hhbGwgYnJpbmcgdGhlbSBkb3duIGJlZm9yZSB0aHkgZmFjZTogc28gc2hhbHQgdGhvdSBkcml2ZSB0aGVtIG91dCwgYW5kIGRlc3Ryb3kgdGhlbSBxdWlja2x5LCBhcyB0aGUgTE9SRCBoYXRoIHNhaWQgdW50byB0aGVlLgpTcGVhayBub3QgdGhvdSBpbiB0aGluZSBoZWFydCwgYWZ0ZXIgdGhhdCB0aGUgTE9SRCB0aHkgR29kIGhhdGggY2FzdCB0aGVtIG91dCBmcm9tIGJlZm9yZSB0aGVlLCBzYXlpbmcsIEZvciBteSByaWdodGVvdXNuZXNzIHRoZSBMT1JEIGhhdGggYnJvdWdodCBtZSBpbiB0byBwb3NzZXNzIHRoaXMgbGFuZDogYnV0IGZvciB0aGUgd2lja2VkbmVzcyBvZiB0aGVzZSBuYXRpb25zIHRoZSBMT1JEIGRvdGggZHJpdmUgdGhlbSBvdXQgZnJvbSBiZWZvcmUgdGhlZS4KTm90IGZvciB0aHkgcmlnaHRlb3VzbmVzcywgb3IgZm9yIHRoZSB1cHJpZ2h0bmVzcyBvZiB0aGluZSBoZWFydCwgZG9zdCB0aG91IGdvIHRvIHBvc3Nlc3MgdGhlaXIgbGFuZDogYnV0IGZvciB0aGUgd2lja2VkbmVzcyBvZiB0aGVzZSBuYXRpb25zIHRoZSBMT1JEIHRoeSBHb2QgZG90aCBkcml2ZSB0aGVtIG91dCBmcm9tIGJlZm9yZSB0aGVlLCBhbmQgdGhhdCBoZSBtYXkgcGVyZm9ybSB0aGUgd29yZCB3aGljaCB0aGUgTE9SRCBzd2FyZSB1bnRvIHRoeSBmYXRoZXJzLCBBYnJhaGFtLCBJc2FhYywgYW5kIEphY29iLgpVbmRlcnN0YW5kIHRoZXJlZm9yZSwgdGhhdCB0aGUgTE9SRCB0aHkgR29kIGdpdmV0aCB0aGVlIG5vdCB0aGlzIGdvb2QgbGFuZCB0byBwb3NzZXNzIGl0IGZvciB0aHkgcmlnaHRlb3VzbmVzczsgZm9yIHRob3UgYXJ0IGEgc3RpZmZuZWNrZWQgcGVvcGxlLgpSZW1lbWJlciwgYW5kIGZvcmdldCBub3QsIGhvdyB0aG91IHByb3Zva2Vkc3QgdGhlIExPUkQgdGh5IEdvZCB0byB3cmF0aCBpbiB0aGUgd2lsZGVybmVzczogZnJvbSB0aGUgZGF5IHRoYXQgdGhvdSBkaWRzdCBkZXBhcnQgb3V0IG9mIHRoZSBsYW5kIG9mIEVneXB0LCB1bnRpbCB5ZSBjYW1lIHVudG8gdGhpcyBwbGFjZSwgeWUgaGF2ZSBiZWVuIHJlYmVsbGlvdXMgYWdhaW5zdCB0aGUgTE9SRC4KQWxzbyBpbiBIb3JlYiB5ZSBwcm92b2tlZCB0aGUgTE9SRCB0byB3cmF0aCwgc28gdGhhdCB0aGUgTE9SRCB3YXMgYW5ncnkgd2l0aCB5b3UgdG8gaGF2ZSBkZXN0cm95ZWQgeW91LgpXaGVuIEkgd2FzIGdvbmUgdXAgaW50byB0aGUgbW91bnQgdG8gcmVjZWl2ZSB0aGUgdGFibGVzIG9mIHN0b25lLCBldmVuIHRoZSB0YWJsZXMgb2YgdGhlIGNvdmVuYW50IHdoaWNoIHRoZSBMT1JEIG1hZGUgd2l0aCB5b3UsIHRoZW4gSSBhYm9kZSBpbiB0aGUgbW91bnQgZm9ydHkgZGF5cyBhbmQgZm9ydHkgbmlnaHRzLCBJIG5laXRoZXIgZGlkIGVhdCBicmVhZCBub3IgZHJpbmsgd2F0ZXI6CkFuZCB0aGUgTE9SRCBkZWxpdmVyZWQgdW50byBtZSB0d28gdGFibGVzIG9mIHN0b25lIHdyaXR0ZW4gd2l0aCB0aGUgZmluZ2VyIG9mIEdvZDsgYW5kIG9uIHRoZW0gd2FzIHdyaXR0ZW4gYWNjb3JkaW5nIHRvIGFsbCB0aGUgd29yZHMsIHdoaWNoIHRoZSBMT1JEIHNwYWtlIHdpdGggeW91IGluIHRoZSBtb3VudCBvdXQgb2YgdGhlIG1pZHN0IG9mIHRoZSBmaXJlIGluIHRoZSBkYXkgb2YgdGhlIGFzc2VtYmx5LgpBbmQgaXQgY2FtZSB0byBwYXNzIGF0IHRoZSBlbmQgb2YgZm9ydHkgZGF5cyBhbmQgZm9ydHkgbmlnaHRzLCB0aGF0IHRoZSBMT1JEIGdhdmUgbWUgdGhlIHR3byB0YWJsZXMgb2Ygc3RvbmUsIGV2ZW4gdGhlIHRhYmxlcyBvZiB0aGUgY292ZW5hbnQuCkFuZCB0aGUgTE9SRCBzYWlkIHVudG8gbWUsIEFyaXNlLCBnZXQgdGhlZSBkb3duIHF1aWNrbHkgZnJvbSBoZW5jZTsgZm9yIHRoeSBwZW9wbGUgd2hpY2ggdGhvdSBoYXN0IGJyb3VnaHQgZm9ydGggb3V0IG9mIEVneXB0IGhhdmUgY29ycnVwdGVkIHRoZW1zZWx2ZXM7IHRoZXkgYXJlIHF1aWNrbHkgdHVybmVkIGFzaWRlIG91dCBvZiB0aGUgd2F5IHdoaWNoIEkgY29tbWFuZGVkIHRoZW07IHRoZXkgaGF2ZSBtYWRlIHRoZW0gYSBtb2x0ZW4gaW1hZ2UuCkZ1cnRoZXJtb3JlIHRoZSBMT1JEIHNwYWtlIHVudG8gbWUsIHNheWluZywgSSBoYXZlIHNlZW4gdGhpcyBwZW9wbGUsIGFuZCwgYmVob2xkLCBpdCBpcyBhIHN0aWZmbmVja2VkIHBlb3BsZToKTGV0IG1lIGFsb25lLCB0aGF0IEkgbWF5IGRlc3Ryb3kgdGhlbSwgYW5kIGJsb3Qgb3V0IHRoZWlyIG5hbWUgZnJvbSB1bmRlciBoZWF2ZW46IGFuZCBJIHdpbGwgbWFrZSBvZiB0aGVlIGEgbmF0aW9uIG1pZ2h0aWVyIGFuZCBncmVhdGVyIHRoYW4gdGhleS4KU28gSSB0dXJuZWQgYW5kIGNhbWUgZG93biBmcm9tIHRoZSBtb3VudCwgYW5kIHRoZSBtb3VudCBidXJuZWQgd2l0aCBmaXJlOiBhbmQgdGhlIHR3byB0YWJsZXMgb2YgdGhlIGNvdmVuYW50IHdlcmUgaW4gbXkgdHdvIGhhbmRzLgpBbmQgSSBsb29rZWQsIGFuZCwgYmVob2xkLCB5ZSBoYWQgc2lubmVkIGFnYWluc3QgdGhlIExPUkQgeW91ciBHb2QsIGFuZCBoYWQgbWFkZSB5b3UgYSBtb2x0ZW4gY2FsZjogeWUgaGFkIHR1cm5lZCBhc2lkZSBxdWlja2x5IG91dCBvZiB0aGUgd2F5IHdoaWNoIHRoZSBMT1JEIGhhZCBjb21tYW5kZWQgeW91LgpBbmQgSSB0b29rIHRoZSB0d28gdGFibGVzLCBhbmQgY2FzdCB0aGVtIG91dCBvZiBteSB0d28gaGFuZHMsIGFuZCBicmFrZSB0aGVtIGJlZm9yZSB5b3VyIGV5ZXMuCkFuZCBJIGZlbGwgZG93biBiZWZvcmUgdGhlIExPUkQsIGFzIGF0IHRoZSBmaXJzdCwgZm9ydHkgZGF5cyBhbmQgZm9ydHkgbmlnaHRzOiBJIGRpZCBuZWl0aGVyIGVhdCBicmVhZCwgbm9yIGRyaW5rIHdhdGVyLCBiZWNhdXNlIG9mIGFsbCB5b3VyIHNpbnMgd2hpY2ggeWUgc2lubmVkLCBpbiBkb2luZyB3aWNrZWRseSBpbiB0aGUgc2lnaHQgb2YgdGhlIExPUkQsIHRvIHByb3Zva2UgaGltIHRvIGFuZ2VyLgpGb3IgSSB3YXMgYWZyYWlkIG9mIHRoZSBhbmdlciBhbmQgaG90IGRpc3BsZWFzdXJlLCB3aGVyZXdpdGggdGhlIExPUkQgd2FzIHdyb3RoIGFnYWluc3QgeW91IHRvIGRlc3Ryb3kgeW91LiBCdXQgdGhlIExPUkQgaGVhcmtlbmVkIHVudG8gbWUgYXQgdGhhdCB0aW1lIGFsc28uCkFuZCB0aGUgTE9SRCB3YXMgdmVyeSBhbmdyeSB3aXRoIEFhcm9uIHRvIGhhdmUgZGVzdHJveWVkIGhpbTogYW5kIEkgcHJheWVkIGZvciBBYXJvbiBhbHNvIHRoZSBzYW1lIHRpbWUuCkFuZCBJIHRvb2sgeW91ciBzaW4sIHRoZSBjYWxmIHdoaWNoIHllIGhhZCBtYWRlLCBhbmQgYnVybnQgaXQgd2l0aCBmaXJlLCBhbmQgc3RhbXBlZCBpdCwgYW5kIGdyb3VuZCBpdCB2ZXJ5IHNtYWxsLCBldmVuIHVudGlsIGl0IHdhcyBhcyBzbWFsbCBhcyBkdXN0OiBhbmQgSSBjYXN0IHRoZSBkdXN0IHRoZXJlb2YgaW50byB0aGUgYnJvb2sgdGhhdCBkZXNjZW5kZWQgb3V0IG9mIHRoZSBtb3VudC4KQW5kIGF0IFRhYmVyYWgsIGFuZCBhdCBNYXNzYWgsIGFuZCBhdCBLaWJyb3RoaGF0dGFhdmFoLCB5ZSBwcm92b2tlZCB0aGUgTE9SRCB0byB3cmF0aC4KTGlrZXdpc2Ugd2hlbiB0aGUgTE9SRCBzZW50IHlvdSBmcm9tIEthZGVzaGJhcm5lYSwgc2F5aW5nLCBHbyB1cCBhbmQgcG9zc2VzcyB0aGUgbGFuZCB3aGljaCBJIGhhdmUgZ2l2ZW4geW91OyB0aGVuIHllIHJlYmVsbGVkIGFnYWluc3QgdGhlIGNvbW1hbmRtZW50IG9mIHRoZSBMT1JEIHlvdXIgR29kLCBhbmQgeWUgYmVsaWV2ZWQgaGltIG5vdCwgbm9yIGhlYXJrZW5lZCB0byBoaXMgdm9pY2UuClllIGhhdmUgYmVlbiByZWJlbGxpb3VzIGFnYWluc3QgdGhlIExPUkQgZnJvbSB0aGUgZGF5IHRoYXQgSSBrbmV3IHlvdS4KVGh1cyBJIGZlbGwgZG93biBiZWZvcmUgdGhlIExPUkQgZm9ydHkgZGF5cyBhbmQgZm9ydHkgbmlnaHRzLCBhcyBJIGZlbGwgZG93biBhdCB0aGUgZmlyc3Q7IGJlY2F1c2UgdGhlIExPUkQgaGFkIHNhaWQgaGUgd291bGQgZGVzdHJveSB5b3UuCkkgcHJheWVkIHRoZXJlZm9yZSB1bnRvIHRoZSBMT1JELCBhbmQgc2FpZCwgTyBMb3JkIEdPRCwgZGVzdHJveSBub3QgdGh5IHBlb3BsZSBhbmQgdGhpbmUgaW5oZXJpdGFuY2UsIHdoaWNoIHRob3UgaGFzdCByZWRlZW1lZCB0aHJvdWdoIHRoeSBncmVhdG5lc3MsIHdoaWNoIHRob3UgaGFzdCBicm91Z2h0IGZvcnRoIG91dCBvZiBFZ3lwdCB3aXRoIGEgbWlnaHR5IGhhbmQuClJlbWVtYmVyIHRoeSBzZXJ2YW50cywgQWJyYWhhbSwgSXNhYWMsIGFuZCBKYWNvYjsgbG9vayBub3QgdW50byB0aGUgc3R1YmJvcm5uZXNzIG9mIHRoaXMgcGVvcGxlLCBub3IgdG8gdGhlaXIgd2lja2VkbmVzcywgbm9yIHRvIHRoZWlyIHNpbjoKTGVzdCB0aGUgbGFuZCB3aGVuY2UgdGhvdSBicm91Z2h0ZXN0IHVzIG91dCBzYXksIEJlY2F1c2UgdGhlIExPUkQgd2FzIG5vdCBhYmxlIHRvIGJyaW5nIHRoZW0gaW50byB0aGUgbGFuZCB3aGljaCBoZSBwcm9taXNlZCB0aGVtLCBhbmQgYmVjYXVzZSBoZSBoYXRlZCB0aGVtLCBoZSBoYXRoIGJyb3VnaHQgdGhlbSBvdXQgdG8gc2xheSB0aGVtIGluIHRoZSB3aWxkZXJuZXNzLgpZZXQgdGhleSBhcmUgdGh5IHBlb3BsZSBhbmQgdGhpbmUgaW5oZXJpdGFuY2UsIHdoaWNoIHRob3UgYnJvdWdodGVzdCBvdXQgYnkgdGh5IG1pZ2h0eSBwb3dlciBhbmQgYnkgdGh5IHN0cmV0Y2hlZCBvdXQgYXJtLgpBdCB0aGF0IHRpbWUgdGhlIExPUkQgc2FpZCB1bnRvIG1lLCBIZXcgdGhlZSB0d28gdGFibGVzIG9mIHN0b25lIGxpa2UgdW50byB0aGUgZmlyc3QsIGFuZCBjb21lIHVwIHVudG8gbWUgaW50byB0aGUgbW91bnQsIGFuZCBtYWtlIHRoZWUgYW4gYXJrIG9mIHdvb2QuCkFuZCBJIHdpbGwgd3JpdGUgb24gdGhlIHRhYmxlcyB0aGUgd29yZHMgdGhhdCB3ZXJlIGluIHRoZSBmaXJzdCB0YWJsZXMgd2hpY2ggdGhvdSBicmFrZXN0LCBhbmQgdGhvdSBzaGFsdCBwdXQgdGhlbSBpbiB0aGUgYXJrLgpBbmQgSSBtYWRlIGFuIGFyayBvZiBzaGl0dGltIHdvb2QsIGFuZCBoZXdlZCB0d28gdGFibGVzIG9mIHN0b25lIGxpa2UgdW50byB0aGUgZmlyc3QsIGFuZCB3ZW50IHVwIGludG8gdGhlIG1vdW50LCBoYXZpbmcgdGhlIHR3byB0YWJsZXMgaW4gbWluZSBoYW5kLgpBbmQgaGUgd3JvdGUgb24gdGhlIHRhYmxlcywgYWNjb3JkaW5nIHRvIHRoZSBmaXJzdCB3cml0aW5nLCB0aGUgdGVuIGNvbW1hbmRtZW50cywgd2hpY2ggdGhlIExPUkQgc3Bha2UgdW50byB5b3UgaW4gdGhlIG1vdW50IG91dCBvZiB0aGUgbWlkc3Qgb2YgdGhlIGZpcmUgaW4gdGhlIGRheSBvZiB0aGUgYXNzZW1ibHk6IGFuZCB0aGUgTE9SRCBnYXZlIHRoZW0gdW50byBtZS4KQW5kIEkgdHVybmVkIG15c2VsZiBhbmQgY2FtZSBkb3duIGZyb20gdGhlIG1vdW50LCBhbmQgcHV0IHRoZSB0YWJsZXMgaW4gdGhlIGFyayB3aGljaCBJIGhhZCBtYWRlOyBhbmQgdGhlcmUgdGhleSBiZSwgYXMgdGhlIExPUkQgY29tbWFuZGVkIG1lLgpBbmQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCB0b29rIHRoZWlyIGpvdXJuZXkgZnJvbSBCZWVyb3RoIG9mIHRoZSBjaGlsZHJlbiBvZiBKYWFrYW4gdG8gTW9zZXJhOiB0aGVyZSBBYXJvbiBkaWVkLCBhbmQgdGhlcmUgaGUgd2FzIGJ1cmllZDsgYW5kIEVsZWF6YXIgaGlzIHNvbiBtaW5pc3RlcmVkIGluIHRoZSBwcmllc3QncyBvZmZpY2UgaW4gaGlzIHN0ZWFkLgpGcm9tIHRoZW5jZSB0aGV5IGpvdXJuZXllZCB1bnRvIEd1ZGdvZGFoOyBhbmQgZnJvbSBHdWRnb2RhaCB0byBKb3RiYXRoLCBhIGxhbmQgb2Ygcml2ZXJzIG9mIHdhdGVycy4KQXQgdGhhdCB0aW1lIHRoZSBMT1JEIHNlcGFyYXRlZCB0aGUgdHJpYmUgb2YgTGV2aSwgdG8gYmVhciB0aGUgYXJrIG9mIHRoZSBjb3ZlbmFudCBvZiB0aGUgTE9SRCwgdG8gc3RhbmQgYmVmb3JlIHRoZSBMT1JEIHRvIG1pbmlzdGVyIHVudG8gaGltLCBhbmQgdG8gYmxlc3MgaW4gaGlzIG5hbWUsIHVudG8gdGhpcyBkYXkuCldoZXJlZm9yZSBMZXZpIGhhdGggbm8gcGFydCBub3IgaW5oZXJpdGFuY2Ugd2l0aCBoaXMgYnJldGhyZW47IHRoZSBMT1JEIGlzIGhpcyBpbmhlcml0YW5jZSwgYWNjb3JkaW5nIGFzIHRoZSBMT1JEIHRoeSBHb2QgcHJvbWlzZWQgaGltLgpBbmQgSSBzdGF5ZWQgaW4gdGhlIG1vdW50LCBhY2NvcmRpbmcgdG8gdGhlIGZpcnN0IHRpbWUsIGZvcnR5IGRheXMgYW5kIGZvcnR5IG5pZ2h0czsgYW5kIHRoZSBMT1JEIGhlYXJrZW5lZCB1bnRvIG1lIGF0IHRoYXQgdGltZSBhbHNvLCBhbmQgdGhlIExPUkQgd291bGQgbm90IGRlc3Ryb3kgdGhlZS4KQW5kIHRoZSBMT1JEIHNhaWQgdW50byBtZSwgQXJpc2UsIHRha2UgdGh5IGpvdXJuZXkgYmVmb3JlIHRoZSBwZW9wbGUsIHRoYXQgdGhleSBtYXkgZ28gaW4gYW5kIHBvc3Nlc3MgdGhlIGxhbmQsIHdoaWNoIEkgc3dhcmUgdW50byB0aGVpciBmYXRoZXJzIHRvIGdpdmUgdW50byB0aGVtLgpBbmQgbm93LCBJc3JhZWwsIHdoYXQgZG90aCB0aGUgTE9SRCB0aHkgR29kIHJlcXVpcmUgb2YgdGhlZSwgYnV0IHRvIGZlYXIgdGhlIExPUkQgdGh5IEdvZCwgdG8gd2FsayBpbiBhbGwgaGlzIHdheXMsIGFuZCB0byBsb3ZlIGhpbSwgYW5kIHRvIHNlcnZlIHRoZSBMT1JEIHRoeSBHb2Qgd2l0aCBhbGwgdGh5IGhlYXJ0IGFuZCB3aXRoIGFsbCB0aHkgc291bCwKVG8ga2VlcCB0aGUgY29tbWFuZG1lbnRzIG9mIHRoZSBMT1JELCBhbmQgaGlzIHN0YXR1dGVzLCB3aGljaCBJIGNvbW1hbmQgdGhlZSB0aGlzIGRheSBmb3IgdGh5IGdvb2Q/CkJlaG9sZCwgdGhlIGhlYXZlbiBhbmQgdGhlIGhlYXZlbiBvZiBoZWF2ZW5zIGlzIHRoZSBMT1JEJ3MgdGh5IEdvZCwgdGhlIGVhcnRoIGFsc28sIHdpdGggYWxsIHRoYXQgdGhlcmVpbiBpcy4KT25seSB0aGUgTE9SRCBoYWQgYSBkZWxpZ2h0IGluIHRoeSBmYXRoZXJzIHRvIGxvdmUgdGhlbSwgYW5kIGhlIGNob3NlIHRoZWlyIHNlZWQgYWZ0ZXIgdGhlbSwgZXZlbiB5b3UgYWJvdmUgYWxsIHBlb3BsZSwgYXMgaXQgaXMgdGhpcyBkYXkuCkNpcmN1bWNpc2UgdGhlcmVmb3JlIHRoZSBmb3Jlc2tpbiBvZiB5b3VyIGhlYXJ0LCBhbmQgYmUgbm8gbW9yZSBzdGlmZm5lY2tlZC4KRm9yIHRoZSBMT1JEIHlvdXIgR29kIGlzIEdvZCBvZiBnb2RzLCBhbmQgTG9yZCBvZiBsb3JkcywgYSBncmVhdCBHb2QsIGEgbWlnaHR5LCBhbmQgYSB0ZXJyaWJsZSwgd2hpY2ggcmVnYXJkZXRoIG5vdCBwZXJzb25zLCBub3IgdGFrZXRoIHJld2FyZDoKSGUgZG90aCBleGVjdXRlIHRoZSBqdWRnbWVudCBvZiB0aGUgZmF0aGVybGVzcyBhbmQgd2lkb3csIGFuZCBsb3ZldGggdGhlIHN0cmFuZ2VyLCBpbiBnaXZpbmcgaGltIGZvb2QgYW5kIHJhaW1lbnQuCkxvdmUgeWUgdGhlcmVmb3JlIHRoZSBzdHJhbmdlcjogZm9yIHllIHdlcmUgc3RyYW5nZXJzIGluIHRoZSBsYW5kIG9mIEVneXB0LgpUaG91IHNoYWx0IGZlYXIgdGhlIExPUkQgdGh5IEdvZDsgaGltIHNoYWx0IHRob3Ugc2VydmUsIGFuZCB0byBoaW0gc2hhbHQgdGhvdSBjbGVhdmUsIGFuZCBzd2VhciBieSBoaXMgbmFtZS4KSGUgaXMgdGh5IHByYWlzZSwgYW5kIGhlIGlzIHRoeSBHb2QsIHRoYXQgaGF0aCBkb25lIGZvciB0aGVlIHRoZXNlIGdyZWF0IGFuZCB0ZXJyaWJsZSB0aGluZ3MsIHdoaWNoIHRoaW5lIGV5ZXMgaGF2ZSBzZWVuLgpUaHkgZmF0aGVycyB3ZW50IGRvd24gaW50byBFZ3lwdCB3aXRoIHRocmVlc2NvcmUgYW5kIHRlbiBwZXJzb25zOyBhbmQgbm93IHRoZSBMT1JEIHRoeSBHb2QgaGF0aCBtYWRlIHRoZWUgYXMgdGhlIHN0YXJzIG9mIGhlYXZlbiBmb3IgbXVsdGl0dWRlLgpUaGVyZWZvcmUgdGhvdSBzaGFsdCBsb3ZlIHRoZSBMT1JEIHRoeSBHb2QsIGFuZCBrZWVwIGhpcyBjaGFyZ2UsIGFuZCBoaXMgc3RhdHV0ZXMsIGFuZCBoaXMganVkZ21lbnRzLCBhbmQgaGlzIGNvbW1hbmRtZW50cywgYWx3YXkuCkFuZCBrbm93IHllIHRoaXMgZGF5OiBmb3IgSSBzcGVhayBub3Qgd2l0aCB5b3VyIGNoaWxkcmVuIHdoaWNoIGhhdmUgbm90IGtub3duLCBhbmQgd2hpY2ggaGF2ZSBub3Qgc2VlbiB0aGUgY2hhc3Rpc2VtZW50IG9mIHRoZSBMT1JEIHlvdXIgR29kLCBoaXMgZ3JlYXRuZXNzLCBoaXMgbWlnaHR5IGhhbmQsIGFuZCBoaXMgc3RyZXRjaGVkIG91dCBhcm0sCkFuZCBoaXMgbWlyYWNsZXMsIGFuZCBoaXMgYWN0cywgd2hpY2ggaGUgZGlkIGluIHRoZSBtaWRzdCBvZiBFZ3lwdCB1bnRvIFBoYXJhb2ggdGhlIGtpbmcgb2YgRWd5cHQsIGFuZCB1bnRvIGFsbCBoaXMgbGFuZDsKQW5kIHdoYXQgaGUgZGlkIHVudG8gdGhlIGFybXkgb2YgRWd5cHQsIHVudG8gdGhlaXIgaG9yc2VzLCBhbmQgdG8gdGhlaXIgY2hhcmlvdHM7IGhvdyBoZSBtYWRlIHRoZSB3YXRlciBvZiB0aGUgUmVkIHNlYSB0byBvdmVyZmxvdyB0aGVtIGFzIHRoZXkgcHVyc3VlZCBhZnRlciB5b3UsIGFuZCBob3cgdGhlIExPUkQgaGF0aCBkZXN0cm95ZWQgdGhlbSB1bnRvIHRoaXMgZGF5OwpBbmQgd2hhdCBoZSBkaWQgdW50byB5b3UgaW4gdGhlIHdpbGRlcm5lc3MsIHVudGlsIHllIGNhbWUgaW50byB0aGlzIHBsYWNlOwpBbmQgd2hhdCBoZSBkaWQgdW50byBEYXRoYW4gYW5kIEFiaXJhbSwgdGhlIHNvbnMgb2YgRWxpYWIsIHRoZSBzb24gb2YgUmV1YmVuOiBob3cgdGhlIGVhcnRoIG9wZW5lZCBoZXIgbW91dGgsIGFuZCBzd2FsbG93ZWQgdGhlbSB1cCwgYW5kIHRoZWlyIGhvdXNlaG9sZHMsIGFuZCB0aGVpciB0ZW50cywgYW5kIGFsbCB0aGUgc3Vic3RhbmNlIHRoYXQgd2FzIGluIHRoZWlyIHBvc3Nlc3Npb24sIGluIHRoZSBtaWRzdCBvZiBhbGwgSXNyYWVsOgpCdXQgeW91ciBleWVzIGhhdmUgc2VlbiBhbGwgdGhlIGdyZWF0IGFjdHMgb2YgdGhlIExPUkQgd2hpY2ggaGUgZGlkLgpUaGVyZWZvcmUgc2hhbGwgeWUga2VlcCBhbGwgdGhlIGNvbW1hbmRtZW50cyB3aGljaCBJIGNvbW1hbmQgeW91IHRoaXMgZGF5LCB0aGF0IHllIG1heSBiZSBzdHJvbmcsIGFuZCBnbyBpbiBhbmQgcG9zc2VzcyB0aGUgbGFuZCwgd2hpdGhlciB5ZSBnbyB0byBwb3NzZXNzIGl0OwpBbmQgdGhhdCB5ZSBtYXkgcHJvbG9uZyB5b3VyIGRheXMgaW4gdGhlIGxhbmQsIHdoaWNoIHRoZSBMT1JEIHN3YXJlIHVudG8geW91ciBmYXRoZXJzIHRvIGdpdmUgdW50byB0aGVtIGFuZCB0byB0aGVpciBzZWVkLCBhIGxhbmQgdGhhdCBmbG93ZXRoIHdpdGggbWlsayBhbmQgaG9uZXkuCkZvciB0aGUgbGFuZCwgd2hpdGhlciB0aG91IGdvZXN0IGluIHRvIHBvc3Nlc3MgaXQsIGlzIG5vdCBhcyB0aGUgbGFuZCBvZiBFZ3lwdCwgZnJvbSB3aGVuY2UgeWUgY2FtZSBvdXQsIHdoZXJlIHRob3Ugc293ZWRzdCB0aHkgc2VlZCwgYW5kIHdhdGVyZWRzdCBpdCB3aXRoIHRoeSBmb290LCBhcyBhIGdhcmRlbiBvZiBoZXJiczoKQnV0IHRoZSBsYW5kLCB3aGl0aGVyIHllIGdvIHRvIHBvc3Nlc3MgaXQsIGlzIGEgbGFuZCBvZiBoaWxscyBhbmQgdmFsbGV5cywgYW5kIGRyaW5rZXRoIHdhdGVyIG9mIHRoZSByYWluIG9mIGhlYXZlbjoKQSBsYW5kIHdoaWNoIHRoZSBMT1JEIHRoeSBHb2QgY2FyZXRoIGZvcjogdGhlIGV5ZXMgb2YgdGhlIExPUkQgdGh5IEdvZCBhcmUgYWx3YXlzIHVwb24gaXQsIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgeWVhciBldmVuIHVudG8gdGhlIGVuZCBvZiB0aGUgeWVhci4KQW5kIGl0IHNoYWxsIGNvbWUgdG8gcGFzcywgaWYgeWUgc2hhbGwgaGVhcmtlbiBkaWxpZ2VudGx5IHVudG8gbXkgY29tbWFuZG1lbnRzIHdoaWNoIEkgY29tbWFuZCB5b3UgdGhpcyBkYXksIHRvIGxvdmUgdGhlIExPUkQgeW91ciBHb2QsIGFuZCB0byBzZXJ2ZSBoaW0gd2l0aCBhbGwgeW91ciBoZWFydCBhbmQgd2l0aCBhbGwgeW91ciBzb3VsLApUaGF0IEkgd2lsbCBnaXZlIHlvdSB0aGUgcmFpbiBvZiB5b3VyIGxhbmQgaW4gaGlzIGR1ZSBzZWFzb24sIHRoZSBmaXJzdCByYWluIGFuZCB0aGUgbGF0dGVyIHJhaW4sIHRoYXQgdGhvdSBtYXllc3QgZ2F0aGVyIGluIHRoeSBjb3JuLCBhbmQgdGh5IHdpbmUsIGFuZCB0aGluZSBvaWwuCkFuZCBJIHdpbGwgc2VuZCBncmFzcyBpbiB0aHkgZmllbGRzIGZvciB0aHkgY2F0dGxlLCB0aGF0IHRob3UgbWF5ZXN0IGVhdCBhbmQgYmUgZnVsbC4KVGFrZSBoZWVkIHRvIHlvdXJzZWx2ZXMsIHRoYXQgeW91ciBoZWFydCBiZSBub3QgZGVjZWl2ZWQsIGFuZCB5ZSB0dXJuIGFzaWRlLCBhbmQgc2VydmUgb3RoZXIgZ29kcywgYW5kIHdvcnNoaXAgdGhlbTsKQW5kIHRoZW4gdGhlIExPUkQncyB3cmF0aCBiZSBraW5kbGVkIGFnYWluc3QgeW91LCBhbmQgaGUgc2h1dCB1cCB0aGUgaGVhdmVuLCB0aGF0IHRoZXJlIGJlIG5vIHJhaW4sIGFuZCB0aGF0IHRoZSBsYW5kIHlpZWxkIG5vdCBoZXIgZnJ1aXQ7IGFuZCBsZXN0IHllIHBlcmlzaCBxdWlja2x5IGZyb20gb2ZmIHRoZSBnb29kIGxhbmQgd2hpY2ggdGhlIExPUkQgZ2l2ZXRoIHlvdS4KVGhlcmVmb3JlIHNoYWxsIHllIGxheSB1cCB0aGVzZSBteSB3b3JkcyBpbiB5b3VyIGhlYXJ0IGFuZCBpbiB5b3VyIHNvdWwsIGFuZCBiaW5kIHRoZW0gZm9yIGEgc2lnbiB1cG9uIHlvdXIgaGFuZCwgdGhhdCB0aGV5IG1heSBiZSBhcyBmcm9udGxldHMgYmV0d2VlbiB5b3VyIGV5ZXMuCkFuZCB5ZSBzaGFsbCB0ZWFjaCB0aGVtIHlvdXIgY2hpbGRyZW4sIHNwZWFraW5nIG9mIHRoZW0gd2hlbiB0aG91IHNpdHRlc3QgaW4gdGhpbmUgaG91c2UsIGFuZCB3aGVuIHRob3Ugd2Fsa2VzdCBieSB0aGUgd2F5LCB3aGVuIHRob3UgbGllc3QgZG93biwgYW5kIHdoZW4gdGhvdSByaXNlc3QgdXAuCkFuZCB0aG91IHNoYWx0IHdyaXRlIHRoZW0gdXBvbiB0aGUgZG9vciBwb3N0cyBvZiB0aGluZSBob3VzZSwgYW5kIHVwb24gdGh5IGdhdGVzOgpUaGF0IHlvdXIgZGF5cyBtYXkgYmUgbXVsdGlwbGllZCwgYW5kIHRoZSBkYXlzIG9mIHlvdXIgY2hpbGRyZW4sIGluIHRoZSBsYW5kIHdoaWNoIHRoZSBMT1JEIHN3YXJlIHVudG8geW91ciBmYXRoZXJzIHRvIGdpdmUgdGhlbSwgYXMgdGhlIGRheXMgb2YgaGVhdmVuIHVwb24gdGhlIGVhcnRoLgpGb3IgaWYgeWUgc2hhbGwgZGlsaWdlbnRseSBrZWVwIGFsbCB0aGVzZSBjb21tYW5kbWVudHMgd2hpY2ggSSBjb21tYW5kIHlvdSwgdG8gZG8gdGhlbSwgdG8gbG92ZSB0aGUgTE9SRCB5b3VyIEdvZCwgdG8gd2FsayBpbiBhbGwgaGlzIHdheXMsIGFuZCB0byBjbGVhdmUgdW50byBoaW07ClRoZW4gd2lsbCB0aGUgTE9SRCBkcml2ZSBvdXQgYWxsIHRoZXNlIG5hdGlvbnMgZnJvbSBiZWZvcmUgeW91LCBhbmQgeWUgc2hhbGwgcG9zc2VzcyBncmVhdGVyIG5hdGlvbnMgYW5kIG1pZ2h0aWVyIHRoYW4geW91cnNlbHZlcy4KRXZlcnkgcGxhY2Ugd2hlcmVvbiB0aGUgc29sZXMgb2YgeW91ciBmZWV0IHNoYWxsIHRyZWFkIHNoYWxsIGJlIHlvdXJzOiBmcm9tIHRoZSB3aWxkZXJuZXNzIGFuZCBMZWJhbm9uLCBmcm9tIHRoZSByaXZlciwgdGhlIHJpdmVyIEV1cGhyYXRlcywgZXZlbiB1bnRvIHRoZSB1dHRlcm1vc3Qgc2VhIHNoYWxsIHlvdXIgY29hc3QgYmUuClRoZXJlIHNoYWxsIG5vIG1hbiBiZSBhYmxlIHRvIHN0YW5kIGJlZm9yZSB5b3U6IGZvciB0aGUgTE9SRCB5b3VyIEdvZCBzaGFsbCBsYXkgdGhlIGZlYXIgb2YgeW91IGFuZCB0aGUgZHJlYWQgb2YgeW91IHVwb24gYWxsIHRoZSBsYW5kIHRoYXQgeWUgc2hhbGwgdHJlYWQgdXBvbiwgYXMgaGUgaGF0aCBzYWlkIHVudG8geW91LgpCZWhvbGQsIEkgc2V0IGJlZm9yZSB5b3UgdGhpcyBkYXkgYSBibGVzc2luZyBhbmQgYSBjdXJzZTsKQSBibGVzc2luZywgaWYgeWUgb2JleSB0aGUgY29tbWFuZG1lbnRzIG9mIHRoZSBMT1JEIHlvdXIgR29kLCB3aGljaCBJIGNvbW1hbmQgeW91IHRoaXMgZGF5OgpBbmQgYSBjdXJzZSwgaWYgeWUgd2lsbCBub3Qgb2JleSB0aGUgY29tbWFuZG1lbnRzIG9mIHRoZSBMT1JEIHlvdXIgR29kLCBidXQgdHVybiBhc2lkZSBvdXQgb2YgdGhlIHdheSB3aGljaCBJIGNvbW1hbmQgeW91IHRoaXMgZGF5LCB0byBnbyBhZnRlciBvdGhlciBnb2RzLCB3aGljaCB5ZSBoYXZlIG5vdCBrbm93bi4KQW5kIGl0IHNoYWxsIGNvbWUgdG8gcGFzcywgd2hlbiB0aGUgTE9SRCB0aHkgR29kIGhhdGggYnJvdWdodCB0aGVlIGluIHVudG8gdGhlIGxhbmQgd2hpdGhlciB0aG91IGdvZXN0IHRvIHBvc3Nlc3MgaXQsIHRoYXQgdGhvdSBzaGFsdCBwdXQgdGhlIGJsZXNzaW5nIHVwb24gbW91bnQgR2VyaXppbSwgYW5kIHRoZSBjdXJzZSB1cG9uIG1vdW50IEViYWwuCkFyZSB0aGV5IG5vdCBvbiB0aGUgb3RoZXIgc2lkZSBKb3JkYW4sIGJ5IHRoZSB3YXkgd2hlcmUgdGhlIHN1biBnb2V0aCBkb3duLCBpbiB0aGUgbGFuZCBvZiB0aGUgQ2FuYWFuaXRlcywgd2hpY2ggZHdlbGwgaW4gdGhlIGNoYW1wYWlnbiBvdmVyIGFnYWluc3QgR2lsZ2FsLCBiZXNpZGUgdGhlIHBsYWlucyBvZiBNb3JlaD8KRm9yIHllIHNoYWxsIHBhc3Mgb3ZlciBKb3JkYW4gdG8gZ28gaW4gdG8gcG9zc2VzcyB0aGUgbGFuZCB3aGljaCB0aGUgTE9SRCB5b3VyIEdvZCBnaXZldGggeW91LCBhbmQgeWUgc2hhbGwgcG9zc2VzcyBpdCwgYW5kIGR3ZWxsIHRoZXJlaW4uCkFuZCB5ZSBzaGFsbCBvYnNlcnZlIHRvIGRvIGFsbCB0aGUgc3RhdHV0ZXMgYW5kIGp1ZGdtZW50cyB3aGljaCBJIHNldCBiZWZvcmUgeW91IHRoaXMgZGF5LgpUaGVzZSBhcmUgdGhlIHN0YXR1dGVzIGFuZCBqdWRnbWVudHMsIHdoaWNoIHllIHNoYWxsIG9ic2VydmUgdG8gZG8gaW4gdGhlIGxhbmQsIHdoaWNoIHRoZSBMT1JEIEdvZCBvZiB0aHkgZmF0aGVycyBnaXZldGggdGhlZSB0byBwb3NzZXNzIGl0LCBhbGwgdGhlIGRheXMgdGhhdCB5ZSBsaXZlIHVwb24gdGhlIGVhcnRoLgpZZSBzaGFsbCB1dHRlcmx5IGRlc3Ryb3kgYWxsIHRoZSBwbGFjZXMsIHdoZXJlaW4gdGhlIG5hdGlvbnMgd2hpY2ggeWUgc2hhbGwgcG9zc2VzcyBzZXJ2ZWQgdGhlaXIgZ29kcywgdXBvbiB0aGUgaGlnaCBtb3VudGFpbnMsIGFuZCB1cG9uIHRoZSBoaWxscywgYW5kIHVuZGVyIGV2ZXJ5IGdyZWVuIHRyZWU6CkFuZCB5ZSBzaGFsbCBvdmVydGhyb3cgdGhlaXIgYWx0YXJzLCBhbmQgYnJlYWsgdGhlaXIgcGlsbGFycywgYW5kIGJ1cm4gdGhlaXIgZ3JvdmVzIHdpdGggZmlyZTsgYW5kIHllIHNoYWxsIGhldyBkb3duIHRoZSBncmF2ZW4gaW1hZ2VzIG9mIHRoZWlyIGdvZHMsIGFuZCBkZXN0cm95IHRoZSBuYW1lcyBvZiB0aGVtIG91dCBvZiB0aGF0IHBsYWNlLgpZZSBzaGFsbCBub3QgZG8gc28gdW50byB0aGUgTE9SRCB5b3VyIEdvZC4KQnV0IHVudG8gdGhlIHBsYWNlIHdoaWNoIHRoZSBMT1JEIHlvdXIgR29kIHNoYWxsIGNob29zZSBvdXQgb2YgYWxsIHlvdXIgdHJpYmVzIHRvIHB1dCBoaXMgbmFtZSB0aGVyZSwgZXZlbiB1bnRvIGhpcyBoYWJpdGF0aW9uIHNoYWxsIHllIHNlZWssIGFuZCB0aGl0aGVyIHRob3Ugc2hhbHQgY29tZToKQW5kIHRoaXRoZXIgeWUgc2hhbGwgYnJpbmcgeW91ciBidXJudCBvZmZlcmluZ3MsIGFuZCB5b3VyIHNhY3JpZmljZXMsIGFuZCB5b3VyIHRpdGhlcywgYW5kIGhlYXZlIG9mZmVyaW5ncyBvZiB5b3VyIGhhbmQsIGFuZCB5b3VyIHZvd3MsIGFuZCB5b3VyIGZyZWV3aWxsIG9mZmVyaW5ncywgYW5kIHRoZSBmaXJzdGxpbmdzIG9mIHlvdXIgaGVyZHMgYW5kIG9mIHlvdXIgZmxvY2tzOgpBbmQgdGhlcmUgeWUgc2hhbGwgZWF0IGJlZm9yZSB0aGUgTE9SRCB5b3VyIEdvZCwgYW5kIHllIHNoYWxsIHJlam9pY2UgaW4gYWxsIHRoYXQgeWUgcHV0IHlvdXIgaGFuZCB1bnRvLCB5ZSBhbmQgeW91ciBob3VzZWhvbGRzLCB3aGVyZWluIHRoZSBMT1JEIHRoeSBHb2QgaGF0aCBibGVzc2VkIHRoZWUuClllIHNoYWxsIG5vdCBkbyBhZnRlciBhbGwgdGhlIHRoaW5ncyB0aGF0IHdlIGRvIGhlcmUgdGhpcyBkYXksIGV2ZXJ5IG1hbiB3aGF0c29ldmVyIGlzIHJpZ2h0IGluIGhpcyBvd24gZXllcy4KRm9yIHllIGFyZSBub3QgYXMgeWV0IGNvbWUgdG8gdGhlIHJlc3QgYW5kIHRvIHRoZSBpbmhlcml0YW5jZSwgd2hpY2ggdGhlIExPUkQgeW91ciBHb2QgZ2l2ZXRoIHlvdS4KQnV0IHdoZW4geWUgZ28gb3ZlciBKb3JkYW4sIGFuZCBkd2VsbCBpbiB0aGUgbGFuZCB3aGljaCB0aGUgTE9SRCB5b3VyIEdvZCBnaXZldGggeW91IHRvIGluaGVyaXQsIGFuZCB3aGVuIGhlIGdpdmV0aCB5b3UgcmVzdCBmcm9tIGFsbCB5b3VyIGVuZW1pZXMgcm91bmQgYWJvdXQsIHNvIHRoYXQgeWUgZHdlbGwgaW4gc2FmZXR5OwpUaGVuIHRoZXJlIHNoYWxsIGJlIGEgcGxhY2Ugd2hpY2ggdGhlIExPUkQgeW91ciBHb2Qgc2hhbGwgY2hvb3NlIHRvIGNhdXNlIGhpcyBuYW1lIHRvIGR3ZWxsIHRoZXJlOyB0aGl0aGVyIHNoYWxsIHllIGJyaW5nIGFsbCB0aGF0IEkgY29tbWFuZCB5b3U7IHlvdXIgYnVybnQgb2ZmZXJpbmdzLCBhbmQgeW91ciBzYWNyaWZpY2VzLCB5b3VyIHRpdGhlcywgYW5kIHRoZSBoZWF2ZSBvZmZlcmluZyBvZiB5b3VyIGhhbmQsIGFuZCBhbGwgeW91ciBjaG9pY2Ugdm93cyB3aGljaCB5ZSB2b3cgdW50byB0aGUgTE9SRDoKQW5kIHllIHNoYWxsIHJlam9pY2UgYmVmb3JlIHRoZSBMT1JEIHlvdXIgR29kLCB5ZSwgYW5kIHlvdXIgc29ucywgYW5kIHlvdXIgZGF1Z2h0ZXJzLCBhbmQgeW91ciBtZW5zZXJ2YW50cywgYW5kIHlvdXIgbWFpZHNlcnZhbnRzLCBhbmQgdGhlIExldml0ZSB0aGF0IGlzIHdpdGhpbiB5b3VyIGdhdGVzOyBmb3Jhc211Y2ggYXMgaGUgaGF0aCBubyBwYXJ0IG5vciBpbmhlcml0YW5jZSB3aXRoIHlvdS4KVGFrZSBoZWVkIHRvIHRoeXNlbGYgdGhhdCB0aG91IG9mZmVyIG5vdCB0aHkgYnVybnQgb2ZmZXJpbmdzIGluIGV2ZXJ5IHBsYWNlIHRoYXQgdGhvdSBzZWVzdDoKQnV0IGluIHRoZSBwbGFjZSB3aGljaCB0aGUgTE9SRCBzaGFsbCBjaG9vc2UgaW4gb25lIG9mIHRoeSB0cmliZXMsIHRoZXJlIHRob3Ugc2hhbHQgb2ZmZXIgdGh5IGJ1cm50IG9mZmVyaW5ncywgYW5kIHRoZXJlIHRob3Ugc2hhbHQgZG8gYWxsIHRoYXQgSSBjb21tYW5kIHRoZWUuCk5vdHdpdGhzdGFuZGluZyB0aG91IG1heWVzdCBraWxsIGFuZCBlYXQgZmxlc2ggaW4gYWxsIHRoeSBnYXRlcywgd2hhdHNvZXZlciB0aHkgc291bCBsdXN0ZXRoIGFmdGVyLCBhY2NvcmRpbmcgdG8gdGhlIGJsZXNzaW5nIG9mIHRoZSBMT1JEIHRoeSBHb2Qgd2hpY2ggaGUgaGF0aCBnaXZlbiB0aGVlOiB0aGUgdW5jbGVhbiBhbmQgdGhlIGNsZWFuIG1heSBlYXQgdGhlcmVvZiwgYXMgb2YgdGhlIHJvZWJ1Y2ssIGFuZCBhcyBvZiB0aGUgaGFydC4KT25seSB5ZSBzaGFsbCBub3QgZWF0IHRoZSBibG9vZDsgeWUgc2hhbGwgcG91ciBpdCB1cG9uIHRoZSBlYXJ0aCBhcyB3YXRlci4KVGhvdSBtYXllc3Qgbm90IGVhdCB3aXRoaW4gdGh5IGdhdGVzIHRoZSB0aXRoZSBvZiB0aHkgY29ybiwgb3Igb2YgdGh5IHdpbmUsIG9yIG9mIHRoeSBvaWwsIG9yIHRoZSBmaXJzdGxpbmdzIG9mIHRoeSBoZXJkcyBvciBvZiB0aHkgZmxvY2ssIG5vciBhbnkgb2YgdGh5IHZvd3Mgd2hpY2ggdGhvdSB2b3dlc3QsIG5vciB0aHkgZnJlZXdpbGwgb2ZmZXJpbmdzLCBvciBoZWF2ZSBvZmZlcmluZyBvZiB0aGluZSBoYW5kOgpCdXQgdGhvdSBtdXN0IGVhdCB0aGVtIGJlZm9yZSB0aGUgTE9SRCB0aHkgR29kIGluIHRoZSBwbGFjZSB3aGljaCB0aGUgTE9SRCB0aHkgR29kIHNoYWxsIGNob29zZSwgdGhvdSwgYW5kIHRoeSBzb24sIGFuZCB0aHkgZGF1Z2h0ZXIsIGFuZCB0aHkgbWFuc2VydmFudCwgYW5kIHRoeSBtYWlkc2VydmFudCwgYW5kIHRoZSBMZXZpdGUgdGhhdCBpcyB3aXRoaW4gdGh5IGdhdGVzOiBhbmQgdGhvdSBzaGFsdCByZWpvaWNlIGJlZm9yZSB0aGUgTE9SRCB0aHkgR29kIGluIGFsbCB0aGF0IHRob3UgcHV0dGVzdCB0aGluZSBoYW5kcyB1bnRvLgpUYWtlIGhlZWQgdG8gdGh5c2VsZiB0aGF0IHRob3UgZm9yc2FrZSBub3QgdGhlIExldml0ZSBhcyBsb25nIGFzIHRob3UgbGl2ZXN0IHVwb24gdGhlIGVhcnRoLgpXaGVuIHRoZSBMT1JEIHRoeSBHb2Qgc2hhbGwgZW5sYXJnZSB0aHkgYm9yZGVyLCBhcyBoZSBoYXRoIHByb21pc2VkIHRoZWUsIGFuZCB0aG91IHNoYWx0IHNheSwgSSB3aWxsIGVhdCBmbGVzaCwgYmVjYXVzZSB0aHkgc291bCBsb25nZXRoIHRvIGVhdCBmbGVzaDsgdGhvdSBtYXllc3QgZWF0IGZsZXNoLCB3aGF0c29ldmVyIHRoeSBzb3VsIGx1c3RldGggYWZ0ZXIuCklmIHRoZSBwbGFjZSB3aGljaCB0aGUgTE9SRCB0aHkgR29kIGhhdGggY2hvc2VuIHRvIHB1dCBoaXMgbmFtZSB0aGVyZSBiZSB0b28gZmFyIGZyb20gdGhlZSwgdGhlbiB0aG91IHNoYWx0IGtpbGwgb2YgdGh5IGhlcmQgYW5kIG9mIHRoeSBmbG9jaywgd2hpY2ggdGhlIExPUkQgaGF0aCBnaXZlbiB0aGVlLCBhcyBJIGhhdmUgY29tbWFuZGVkIHRoZWUsIGFuZCB0aG91IHNoYWx0IGVhdCBpbiB0aHkgZ2F0ZXMgd2hhdHNvZXZlciB0aHkgc291bCBsdXN0ZXRoIGFmdGVyLgpFdmVuIGFzIHRoZSByb2VidWNrIGFuZCB0aGUgaGFydCBpcyBlYXRlbiwgc28gdGhvdSBzaGFsdCBlYXQgdGhlbTogdGhlIHVuY2xlYW4gYW5kIHRoZSBjbGVhbiBzaGFsbCBlYXQgb2YgdGhlbSBhbGlrZS4KT25seSBiZSBzdXJlIHRoYXQgdGhvdSBlYXQgbm90IHRoZSBibG9vZDogZm9yIHRoZSBibG9vZCBpcyB0aGUgbGlmZTsgYW5kIHRob3UgbWF5ZXN0IG5vdCBlYXQgdGhlIGxpZmUgd2l0aCB0aGUgZmxlc2guClRob3Ugc2hhbHQgbm90IGVhdCBpdDsgdGhvdSBzaGFsdCBwb3VyIGl0IHVwb24gdGhlIGVhcnRoIGFzIHdhdGVyLgpUaG91IHNoYWx0IG5vdCBlYXQgaXQ7IHRoYXQgaXQgbWF5IGdvIHdlbGwgd2l0aCB0aGVlLCBhbmQgd2l0aCB0aHkgY2hpbGRyZW4gYWZ0ZXIgdGhlZSwgd2hlbiB0aG91IHNoYWx0IGRvIHRoYXQgd2hpY2ggaXMgcmlnaHQgaW4gdGhlIHNpZ2h0IG9mIHRoZSBMT1JELgpPbmx5IHRoeSBob2x5IHRoaW5ncyB3aGljaCB0aG91IGhhc3QsIGFuZCB0aHkgdm93cywgdGhvdSBzaGFsdCB0YWtlLCBhbmQgZ28gdW50byB0aGUgcGxhY2Ugd2hpY2ggdGhlIExPUkQgc2hhbGwgY2hvb3NlOgpBbmQgdGhvdSBzaGFsdCBvZmZlciB0aHkgYnVybnQgb2ZmZXJpbmdzLCB0aGUgZmxlc2ggYW5kIHRoZSBibG9vZCwgdXBvbiB0aGUgYWx0YXIgb2YgdGhlIExPUkQgdGh5IEdvZDogYW5kIHRoZSBibG9vZCBvZiB0aHkgc2FjcmlmaWNlcyBzaGFsbCBiZSBwb3VyZWQgb3V0IHVwb24gdGhlIGFsdGFyIG9mIHRoZSBMT1JEIHRoeSBHb2QsIGFuZCB0aG91IHNoYWx0IGVhdCB0aGUgZmxlc2guCk9ic2VydmUgYW5kIGhlYXIgYWxsIHRoZXNlIHdvcmRzIHdoaWNoIEkgY29tbWFuZCB0aGVlLCB0aGF0IGl0IG1heSBnbyB3ZWxsIHdpdGggdGhlZSwgYW5kIHdpdGggdGh5IGNoaWxkcmVuIGFmdGVyIHRoZWUgZm9yIGV2ZXIsIHdoZW4gdGhvdSBkb2VzdCB0aGF0IHdoaWNoIGlzIGdvb2QgYW5kIHJpZ2h0IGluIHRoZSBzaWdodCBvZiB0aGUgTE9SRCB0aHkgR29kLgpXaGVuIHRoZSBMT1JEIHRoeSBHb2Qgc2hhbGwgY3V0IG9mZiB0aGUgbmF0aW9ucyBmcm9tIGJlZm9yZSB0aGVlLCB3aGl0aGVyIHRob3UgZ29lc3QgdG8gcG9zc2VzcyB0aGVtLCBhbmQgdGhvdSBzdWNjZWVkZXN0IHRoZW0sIGFuZCBkd2VsbGVzdCBpbiB0aGVpciBsYW5kOwpUYWtlIGhlZWQgdG8gdGh5c2VsZiB0aGF0IHRob3UgYmUgbm90IHNuYXJlZCBieSBmb2xsb3dpbmcgdGhlbSwgYWZ0ZXIgdGhhdCB0aGV5IGJlIGRlc3Ryb3llZCBmcm9tIGJlZm9yZSB0aGVlOyBhbmQgdGhhdCB0aG91IGVucXVpcmUgbm90IGFmdGVyIHRoZWlyIGdvZHMsIHNheWluZywgSG93IGRpZCB0aGVzZSBuYXRpb25zIHNlcnZlIHRoZWlyIGdvZHM/IGV2ZW4gc28gd2lsbCBJIGRvIGxpa2V3aXNlLgpUaG91IHNoYWx0IG5vdCBkbyBzbyB1bnRvIHRoZSBMT1JEIHRoeSBHb2Q6IGZvciBldmVyeSBhYm9taW5hdGlvbiB0byB0aGUgTE9SRCwgd2hpY2ggaGUgaGF0ZXRoLCBoYXZlIHRoZXkgZG9uZSB1bnRvIHRoZWlyIGdvZHM7IGZvciBldmVuIHRoZWlyIHNvbnMgYW5kIHRoZWlyIGRhdWdodGVycyB0aGV5IGhhdmUgYnVybnQgaW4gdGhlIGZpcmUgdG8gdGhlaXIgZ29kcy4KV2hhdCB0aGluZyBzb2V2ZXIgSSBjb21tYW5kIHlvdSwgb2JzZXJ2ZSB0byBkbyBpdDogdGhvdSBzaGFsdCBub3QgYWRkIHRoZXJldG8sIG5vciBkaW1pbmlzaCBmcm9tIGl0LgpJZiB0aGVyZSBhcmlzZSBhbW9uZyB5b3UgYSBwcm9waGV0LCBvciBhIGRyZWFtZXIgb2YgZHJlYW1zLCBhbmQgZ2l2ZXRoIHRoZWUgYSBzaWduIG9yIGEgd29uZGVyLApBbmQgdGhlIHNpZ24gb3IgdGhlIHdvbmRlciBjb21lIHRvIHBhc3MsIHdoZXJlb2YgaGUgc3Bha2UgdW50byB0aGVlLCBzYXlpbmcsIExldCB1cyBnbyBhZnRlciBvdGhlciBnb2RzLCB3aGljaCB0aG91IGhhc3Qgbm90IGtub3duLCBhbmQgbGV0IHVzIHNlcnZlIHRoZW07ClRob3Ugc2hhbHQgbm90IGhlYXJrZW4gdW50byB0aGUgd29yZHMgb2YgdGhhdCBwcm9waGV0LCBvciB0aGF0IGRyZWFtZXIgb2YgZHJlYW1zOiBmb3IgdGhlIExPUkQgeW91ciBHb2QgcHJvdmV0aCB5b3UsIHRvIGtub3cgd2hldGhlciB5ZSBsb3ZlIHRoZSBMT1JEIHlvdXIgR29kIHdpdGggYWxsIHlvdXIgaGVhcnQgYW5kIHdpdGggYWxsIHlvdXIgc291bC4KWWUgc2hhbGwgd2FsayBhZnRlciB0aGUgTE9SRCB5b3VyIEdvZCwgYW5kIGZlYXIgaGltLCBhbmQga2VlcCBoaXMgY29tbWFuZG1lbnRzLCBhbmQgb2JleSBoaXMgdm9pY2UsIGFuZCB5ZSBzaGFsbCBzZXJ2ZSBoaW0sIGFuZCBjbGVhdmUgdW50byBoaW0uCkFuZCB0aGF0IHByb3BoZXQsIG9yIHRoYXQgZHJlYW1lciBvZiBkcmVhbXMsIHNoYWxsIGJlIHB1dCB0byBkZWF0aDsgYmVjYXVzZSBoZSBoYXRoIHNwb2tlbiB0byB0dXJuIHlvdSBhd2F5IGZyb20gdGhlIExPUkQgeW91ciBHb2QsIHdoaWNoIGJyb3VnaHQgeW91IG91dCBvZiB0aGUgbGFuZCBvZiBFZ3lwdCwgYW5kIHJlZGVlbWVkIHlvdSBvdXQgb2YgdGhlIGhvdXNlIG9mIGJvbmRhZ2UsIHRvIHRocnVzdCB0aGVlIG91dCBvZiB0aGUgd2F5IHdoaWNoIHRoZSBMT1JEIHRoeSBHb2QgY29tbWFuZGVkIHRoZWUgdG8gd2FsayBpbi4gU28gc2hhbHQgdGhvdSBwdXQgdGhlIGV2aWwgYXdheSBmcm9tIHRoZSBtaWRzdCBvZiB0aGVlLgpJZiB0aHkgYnJvdGhlciwgdGhlIHNvbiBvZiB0aHkgbW90aGVyLCBvciB0aHkgc29uLCBvciB0aHkgZGF1Z2h0ZXIsIG9yIHRoZSB3aWZlIG9mIHRoeSBib3NvbSwgb3IgdGh5IGZyaWVuZCwgd2hpY2ggaXMgYXMgdGhpbmUgb3duIHNvdWwsIGVudGljZSB0aGVlIHNlY3JldGx5LCBzYXlpbmcsIExldCB1cyBnbyBhbmQgc2VydmUgb3RoZXIgZ29kcywgd2hpY2ggdGhvdSBoYXN0IG5vdCBrbm93biwgdGhvdSwgbm9yIHRoeSBmYXRoZXJzOwpOYW1lbHksIG9mIHRoZSBnb2RzIG9mIHRoZSBwZW9wbGUgd2hpY2ggYXJlIHJvdW5kIGFib3V0IHlvdSwgbmlnaCB1bnRvIHRoZWUsIG9yIGZhciBvZmYgZnJvbSB0aGVlLCBmcm9tIHRoZSBvbmUgZW5kIG9mIHRoZSBlYXJ0aCBldmVuIHVudG8gdGhlIG90aGVyIGVuZCBvZiB0aGUgZWFydGg7ClRob3Ugc2hhbHQgbm90IGNvbnNlbnQgdW50byBoaW0sIG5vciBoZWFya2VuIHVudG8gaGltOyBuZWl0aGVyIHNoYWxsIHRoaW5lIGV5ZSBwaXR5IGhpbSwgbmVpdGhlciBzaGFsdCB0aG91IHNwYXJlLCBuZWl0aGVyIHNoYWx0IHRob3UgY29uY2VhbCBoaW06CkJ1dCB0aG91IHNoYWx0IHN1cmVseSBraWxsIGhpbTsgdGhpbmUgaGFuZCBzaGFsbCBiZSBmaXJzdCB1cG9uIGhpbSB0byBwdXQgaGltIHRvIGRlYXRoLCBhbmQgYWZ0ZXJ3YXJkcyB0aGUgaGFuZCBvZiBhbGwgdGhlIHBlb3BsZS4KQW5kIHRob3Ugc2hhbHQgc3RvbmUgaGltIHdpdGggc3RvbmVzLCB0aGF0IGhlIGRpZTsgYmVjYXVzZSBoZSBoYXRoIHNvdWdodCB0byB0aHJ1c3QgdGhlZSBhd2F5IGZyb20gdGhlIExPUkQgdGh5IEdvZCwgd2hpY2ggYnJvdWdodCB0aGVlIG91dCBvZiB0aGUgbGFuZCBvZiBFZ3lwdCwgZnJvbSB0aGUgaG91c2Ugb2YgYm9uZGFnZS4KQW5kIGFsbCBJc3JhZWwgc2hhbGwgaGVhciwgYW5kIGZlYXIsIGFuZCBzaGFsbCBkbyBubyBtb3JlIGFueSBzdWNoIHdpY2tlZG5lc3MgYXMgdGhpcyBpcyBhbW9uZyB5b3UuCklmIHRob3Ugc2hhbHQgaGVhciBzYXkgaW4gb25lIG9mIHRoeSBjaXRpZXMsIHdoaWNoIHRoZSBMT1JEIHRoeSBHb2QgaGF0aCBnaXZlbiB0aGVlIHRvIGR3ZWxsIHRoZXJlLCBzYXlpbmcsCkNlcnRhaW4gbWVuLCB0aGUgY2hpbGRyZW4gb2YgQmVsaWFsLCBhcmUgZ29uZSBvdXQgZnJvbSBhbW9uZyB5b3UsIGFuZCBoYXZlIHdpdGhkcmF3biB0aGUgaW5oYWJpdGFudHMgb2YgdGhlaXIgY2l0eSwgc2F5aW5nLCBMZXQgdXMgZ28gYW5kIHNlcnZlIG90aGVyIGdvZHMsIHdoaWNoIHllIGhhdmUgbm90IGtub3duOwpUaGVuIHNoYWx0IHRob3UgZW5xdWlyZSwgYW5kIG1ha2Ugc2VhcmNoLCBhbmQgYXNrIGRpbGlnZW50bHk7IGFuZCwgYmVob2xkLCBpZiBpdCBiZSB0cnV0aCwgYW5kIHRoZSB0aGluZyBjZXJ0YWluLCB0aGF0IHN1Y2ggYWJvbWluYXRpb24gaXMgd3JvdWdodCBhbW9uZyB5b3U7ClRob3Ugc2hhbHQgc3VyZWx5IHNtaXRlIHRoZSBpbmhhYml0YW50cyBvZiB0aGF0IGNpdHkgd2l0aCB0aGUgZWRnZSBvZiB0aGUgc3dvcmQsIGRlc3Ryb3lpbmcgaXQgdXR0ZXJseSwgYW5kIGFsbCB0aGF0IGlzIHRoZXJlaW4sIGFuZCB0aGUgY2F0dGxlIHRoZXJlb2YsIHdpdGggdGhlIGVkZ2Ugb2YgdGhlIHN3b3JkLgpBbmQgdGhvdSBzaGFsdCBnYXRoZXIgYWxsIHRoZSBzcG9pbCBvZiBpdCBpbnRvIHRoZSBtaWRzdCBvZiB0aGUgc3RyZWV0IHRoZXJlb2YsIGFuZCBzaGFsdCBidXJuIHdpdGggZmlyZSB0aGUgY2l0eSwgYW5kIGFsbCB0aGUgc3BvaWwgdGhlcmVvZiBldmVyeSB3aGl0LCBmb3IgdGhlIExPUkQgdGh5IEdvZDogYW5kIGl0IHNoYWxsIGJlIGFuIGhlYXAgZm9yIGV2ZXI7IGl0IHNoYWxsIG5vdCBiZSBidWlsdCBhZ2Fpbi4KQW5kIHRoZXJlIHNoYWxsIGNsZWF2ZSBub3VnaHQgb2YgdGhlIGN1cnNlZCB0aGluZyB0byB0aGluZSBoYW5kOiB0aGF0IHRoZSBMT1JEIG1heSB0dXJuIGZyb20gdGhlIGZpZXJjZW5lc3Mgb2YgaGlzIGFuZ2VyLCBhbmQgc2hldyB0aGVlIG1lcmN5LCBhbmQgaGF2ZSBjb21wYXNzaW9uIHVwb24gdGhlZSwgYW5kIG11bHRpcGx5IHRoZWUsIGFzIGhlIGhhdGggc3dvcm4gdW50byB0aHkgZmF0aGVyczsKV2hlbiB0aG91IHNoYWx0IGhlYXJrZW4gdG8gdGhlIHZvaWNlIG9mIHRoZSBMT1JEIHRoeSBHb2QsIHRvIGtlZXAgYWxsIGhpcyBjb21tYW5kbWVudHMgd2hpY2ggSSBjb21tYW5kIHRoZWUgdGhpcyBkYXksIHRvIGRvIHRoYXQgd2hpY2ggaXMgcmlnaHQgaW4gdGhlIGV5ZXMgb2YgdGhlIExPUkQgdGh5IEdvZC4KWWUgYXJlIHRoZSBjaGlsZHJlbiBvZiB0aGUgTE9SRCB5b3VyIEdvZDogeWUgc2hhbGwgbm90IGN1dCB5b3Vyc2VsdmVzLCBub3IgbWFrZSBhbnkgYmFsZG5lc3MgYmV0d2VlbiB5b3VyIGV5ZXMgZm9yIHRoZSBkZWFkLgpGb3IgdGhvdSBhcnQgYW4gaG9seSBwZW9wbGUgdW50byB0aGUgTE9SRCB0aHkgR29kLCBhbmQgdGhlIExPUkQgaGF0aCBjaG9zZW4gdGhlZSB0byBiZSBhIHBlY3VsaWFyIHBlb3BsZSB1bnRvIGhpbXNlbGYsIGFib3ZlIGFsbCB0aGUgbmF0aW9ucyB0aGF0IGFyZSB1cG9uIHRoZSBlYXJ0aC4KVGhvdSBzaGFsdCBub3QgZWF0IGFueSBhYm9taW5hYmxlIHRoaW5nLgpUaGVzZSBhcmUgdGhlIGJlYXN0cyB3aGljaCB5ZSBzaGFsbCBlYXQ6IHRoZSBveCwgdGhlIHNoZWVwLCBhbmQgdGhlIGdvYXQsClRoZSBoYXJ0LCBhbmQgdGhlIHJvZWJ1Y2ssIGFuZCB0aGUgZmFsbG93IGRlZXIsIGFuZCB0aGUgd2lsZCBnb2F0LCBhbmQgdGhlIHB5Z2FyZywgYW5kIHRoZSB3aWxkIG94LCBhbmQgdGhlIGNoYW1vaXMuCkFuZCBldmVyeSBiZWFzdCB0aGF0IHBhcnRldGggdGhlIGhvb2YsIGFuZCBjbGVhdmV0aCB0aGUgY2xlZnQgaW50byB0d28gY2xhd3MsIGFuZCBjaGV3ZXRoIHRoZSBjdWQgYW1vbmcgdGhlIGJlYXN0cywgdGhhdCB5ZSBzaGFsbCBlYXQuCk5ldmVydGhlbGVzcyB0aGVzZSB5ZSBzaGFsbCBub3QgZWF0IG9mIHRoZW0gdGhhdCBjaGV3IHRoZSBjdWQsIG9yIG9mIHRoZW0gdGhhdCBkaXZpZGUgdGhlIGNsb3ZlbiBob29mOyBhcyB0aGUgY2FtZWwsIGFuZCB0aGUgaGFyZSwgYW5kIHRoZSBjb25leTogZm9yIHRoZXkgY2hldyB0aGUgY3VkLCBidXQgZGl2aWRlIG5vdCB0aGUgaG9vZjsgdGhlcmVmb3JlIHRoZXkgYXJlIHVuY2xlYW4gdW50byB5b3UuCkFuZCB0aGUgc3dpbmUsIGJlY2F1c2UgaXQgZGl2aWRldGggdGhlIGhvb2YsIHlldCBjaGV3ZXRoIG5vdCB0aGUgY3VkLCBpdCBpcyB1bmNsZWFuIHVudG8geW91OiB5ZSBzaGFsbCBub3QgZWF0IG9mIHRoZWlyIGZsZXNoLCBub3IgdG91Y2ggdGhlaXIgZGVhZCBjYXJjYXNlLgpUaGVzZSB5ZSBzaGFsbCBlYXQgb2YgYWxsIHRoYXQgYXJlIGluIHRoZSB3YXRlcnM6IGFsbCB0aGF0IGhhdmUgZmlucyBhbmQgc2NhbGVzIHNoYWxsIHllIGVhdDoKQW5kIHdoYXRzb2V2ZXIgaGF0aCBub3QgZmlucyBhbmQgc2NhbGVzIHllIG1heSBub3QgZWF0OyBpdCBpcyB1bmNsZWFuIHVudG8geW91LgpPZiBhbGwgY2xlYW4gYmlyZHMgeWUgc2hhbGwgZWF0LgpCdXQgdGhlc2UgYXJlIHRoZXkgb2Ygd2hpY2ggeWUgc2hhbGwgbm90IGVhdDogdGhlIGVhZ2xlLCBhbmQgdGhlIG9zc2lmcmFnZSwgYW5kIHRoZSBvc3ByYXksCkFuZCB0aGUgZ2xlZGUsIGFuZCB0aGUga2l0ZSwgYW5kIHRoZSB2dWx0dXJlIGFmdGVyIGhpcyBraW5kLApBbmQgZXZlcnkgcmF2ZW4gYWZ0ZXIgaGlzIGtpbmQsCkFuZCB0aGUgb3dsLCBhbmQgdGhlIG5pZ2h0IGhhd2ssIGFuZCB0aGUgY3Vja293LCBhbmQgdGhlIGhhd2sgYWZ0ZXIgaGlzIGtpbmQsClRoZSBsaXR0bGUgb3dsLCBhbmQgdGhlIGdyZWF0IG93bCwgYW5kIHRoZSBzd2FuLApBbmQgdGhlIHBlbGljYW4sIGFuZCB0aGUgZ2llciBlYWdsZSwgYW5kIHRoZSBjb3Jtb3JhbnQsCkFuZCB0aGUgc3RvcmssIGFuZCB0aGUgaGVyb24gYWZ0ZXIgaGVyIGtpbmQsIGFuZCB0aGUgbGFwd2luZywgYW5kIHRoZSBiYXQuCkFuZCBldmVyeSBjcmVlcGluZyB0aGluZyB0aGF0IGZsaWV0aCBpcyB1bmNsZWFuIHVudG8geW91OiB0aGV5IHNoYWxsIG5vdCBiZSBlYXRlbi4KQnV0IG9mIGFsbCBjbGVhbiBmb3dscyB5ZSBtYXkgZWF0LgpZZSBzaGFsbCBub3QgZWF0IG9mIGFueXRoaW5nIHRoYXQgZGlldGggb2YgaXRzZWxmOiB0aG91IHNoYWx0IGdpdmUgaXQgdW50byB0aGUgc3RyYW5nZXIgdGhhdCBpcyBpbiB0aHkgZ2F0ZXMsIHRoYXQgaGUgbWF5IGVhdCBpdDsgb3IgdGhvdSBtYXllc3Qgc2VsbCBpdCB1bnRvIGFuIGFsaWVuOiBmb3IgdGhvdSBhcnQgYW4gaG9seSBwZW9wbGUgdW50byB0aGUgTE9SRCB0aHkgR29kLiBUaG91IHNoYWx0IG5vdCBzZWV0aGUgYSBraWQgaW4gaGlzIG1vdGhlcidzIG1pbGsuClRob3Ugc2hhbHQgdHJ1bHkgdGl0aGUgYWxsIHRoZSBpbmNyZWFzZSBvZiB0aHkgc2VlZCwgdGhhdCB0aGUgZmllbGQgYnJpbmdldGggZm9ydGggeWVhciBieSB5ZWFyLgpBbmQgdGhvdSBzaGFsdCBlYXQgYmVmb3JlIHRoZSBMT1JEIHRoeSBHb2QsIGluIHRoZSBwbGFjZSB3aGljaCBoZSBzaGFsbCBjaG9vc2UgdG8gcGxhY2UgaGlzIG5hbWUgdGhlcmUsIHRoZSB0aXRoZSBvZiB0aHkgY29ybiwgb2YgdGh5IHdpbmUsIGFuZCBvZiB0aGluZSBvaWwsIGFuZCB0aGUgZmlyc3RsaW5ncyBvZiB0aHkgaGVyZHMgYW5kIG9mIHRoeSBmbG9ja3M7IHRoYXQgdGhvdSBtYXllc3QgbGVhcm4gdG8gZmVhciB0aGUgTE9SRCB0aHkgR29kIGFsd2F5cy4KQW5kIGlmIHRoZSB3YXkgYmUgdG9vIGxvbmcgZm9yIHRoZWUsIHNvIHRoYXQgdGhvdSBhcnQgbm90IGFibGUgdG8gY2FycnkgaXQ7IG9yIGlmIHRoZSBwbGFjZSBiZSB0b28gZmFyIGZyb20gdGhlZSwgd2hpY2ggdGhlIExPUkQgdGh5IEdvZCBzaGFsbCBjaG9vc2UgdG8gc2V0IGhpcyBuYW1lIHRoZXJlLCB3aGVuIHRoZSBMT1JEIHRoeSBHb2QgaGF0aCBibGVzc2VkIHRoZWU6ClRoZW4gc2hhbHQgdGhvdSB0dXJuIGl0IGludG8gbW9uZXksIGFuZCBiaW5kIHVwIHRoZSBtb25leSBpbiB0aGluZSBoYW5kLCBhbmQgc2hhbHQgZ28gdW50byB0aGUgcGxhY2Ugd2hpY2ggdGhlIExPUkQgdGh5IEdvZCBzaGFsbCBjaG9vc2U6CkFuZCB0aG91IHNoYWx0IGJlc3RvdyB0aGF0IG1vbmV5IGZvciB3aGF0c29ldmVyIHRoeSBzb3VsIGx1c3RldGggYWZ0ZXIsIGZvciBveGVuLCBvciBmb3Igc2hlZXAsIG9yIGZvciB3aW5lLCBvciBmb3Igc3Ryb25nIGRyaW5rLCBvciBmb3Igd2hhdHNvZXZlciB0aHkgc291bCBkZXNpcmV0aDogYW5kIHRob3Ugc2hhbHQgZWF0IHRoZXJlIGJlZm9yZSB0aGUgTE9SRCB0aHkgR29kLCBhbmQgdGhvdSBzaGFsdCByZWpvaWNlLCB0aG91LCBhbmQgdGhpbmUgaG91c2Vob2xkLApBbmQgdGhlIExldml0ZSB0aGF0IGlzIHdpdGhpbiB0aHkgZ2F0ZXM7IHRob3Ugc2hhbHQgbm90IGZvcnNha2UgaGltOyBmb3IgaGUgaGF0aCBubyBwYXJ0IG5vciBpbmhlcml0YW5jZSB3aXRoIHRoZWUuCkF0IHRoZSBlbmQgb2YgdGhyZWUgeWVhcnMgdGhvdSBzaGFsdCBicmluZyBmb3J0aCBhbGwgdGhlIHRpdGhlIG9mIHRoaW5lIGluY3JlYXNlIHRoZSBzYW1lIHllYXIsIGFuZCBzaGFsdCBsYXkgaXQgdXAgd2l0aGluIHRoeSBnYXRlczoKQW5kIHRoZSBMZXZpdGUsIChiZWNhdXNlIGhlIGhhdGggbm8gcGFydCBub3IgaW5oZXJpdGFuY2Ugd2l0aCB0aGVlLCkgYW5kIHRoZSBzdHJhbmdlciwgYW5kIHRoZSBmYXRoZXJsZXNzLCBhbmQgdGhlIHdpZG93LCB3aGljaCBhcmUgd2l0aGluIHRoeSBnYXRlcywgc2hhbGwgY29tZSwgYW5kIHNoYWxsIGVhdCBhbmQgYmUgc2F0aXNmaWVkOyB0aGF0IHRoZSBMT1JEIHRoeSBHb2QgbWF5IGJsZXNzIHRoZWUgaW4gYWxsIHRoZSB3b3JrIG9mIHRoaW5lIGhhbmQgd2hpY2ggdGhvdSBkb2VzdC4KQXQgdGhlIGVuZCBvZiBldmVyeSBzZXZlbiB5ZWFycyB0aG91IHNoYWx0IG1ha2UgYSByZWxlYXNlLgpBbmQgdGhpcyBpcyB0aGUgbWFubmVyIG9mIHRoZSByZWxlYXNlOiBFdmVyeSBjcmVkaXRvciB0aGF0IGxlbmRldGggb3VnaHQgdW50byBoaXMgbmVpZ2hib3VyIHNoYWxsIHJlbGVhc2UgaXQ7IGhlIHNoYWxsIG5vdCBleGFjdCBpdCBvZiBoaXMgbmVpZ2hib3VyLCBvciBvZiBoaXMgYnJvdGhlcjsgYmVjYXVzZSBpdCBpcyBjYWxsZWQgdGhlIExPUkQncyByZWxlYXNlLgpPZiBhIGZvcmVpZ25lciB0aG91IG1heWVzdCBleGFjdCBpdCBhZ2FpbjogYnV0IHRoYXQgd2hpY2ggaXMgdGhpbmUgd2l0aCB0aHkgYnJvdGhlciB0aGluZSBoYW5kIHNoYWxsIHJlbGVhc2U7ClNhdmUgd2hlbiB0aGVyZSBzaGFsbCBiZSBubyBwb29yIGFtb25nIHlvdTsgZm9yIHRoZSBMT1JEIHNoYWxsIGdyZWF0bHkgYmxlc3MgdGhlZSBpbiB0aGUgbGFuZCB3aGljaCB0aGUgTE9SRCB0aHkgR29kIGdpdmV0aCB0aGVlIGZvciBhbiBpbmhlcml0YW5jZSB0byBwb3NzZXNzIGl0OgpPbmx5IGlmIHRob3UgY2FyZWZ1bGx5IGhlYXJrZW4gdW50byB0aGUgdm9pY2Ugb2YgdGhlIExPUkQgdGh5IEdvZCwgdG8gb2JzZXJ2ZSB0byBkbyBhbGwgdGhlc2UgY29tbWFuZG1lbnRzIHdoaWNoIEkgY29tbWFuZCB0aGVlIHRoaXMgZGF5LgpGb3IgdGhlIExPUkQgdGh5IEdvZCBibGVzc2V0aCB0aGVlLCBhcyBoZSBwcm9taXNlZCB0aGVlOiBhbmQgdGhvdSBzaGFsdCBsZW5kIHVudG8gbWFueSBuYXRpb25zLCBidXQgdGhvdSBzaGFsdCBub3QgYm9ycm93OyBhbmQgdGhvdSBzaGFsdCByZWlnbiBvdmVyIG1hbnkgbmF0aW9ucywgYnV0IHRoZXkgc2hhbGwgbm90IHJlaWduIG92ZXIgdGhlZS4KSWYgdGhlcmUgYmUgYW1vbmcgeW91IGEgcG9vciBtYW4gb2Ygb25lIG9mIHRoeSBicmV0aHJlbiB3aXRoaW4gYW55IG9mIHRoeSBnYXRlcyBpbiB0aHkgbGFuZCB3aGljaCB0aGUgTE9SRCB0aHkgR29kIGdpdmV0aCB0aGVlLCB0aG91IHNoYWx0IG5vdCBoYXJkZW4gdGhpbmUgaGVhcnQsIG5vciBzaHV0IHRoaW5lIGhhbmQgZnJvbSB0aHkgcG9vciBicm90aGVyOgpCdXQgdGhvdSBzaGFsdCBvcGVuIHRoaW5lIGhhbmQgd2lkZSB1bnRvIGhpbSwgYW5kIHNoYWx0IHN1cmVseSBsZW5kIGhpbSBzdWZmaWNpZW50IGZvciBoaXMgbmVlZCwgaW4gdGhhdCB3aGljaCBoZSB3YW50ZXRoLgpCZXdhcmUgdGhhdCB0aGVyZSBiZSBub3QgYSB0aG91Z2h0IGluIHRoeSB3aWNrZWQgaGVhcnQsIHNheWluZywgVGhlIHNldmVudGggeWVhciwgdGhlIHllYXIgb2YgcmVsZWFzZSwgaXMgYXQgaGFuZDsgYW5kIHRoaW5lIGV5ZSBiZSBldmlsIGFnYWluc3QgdGh5IHBvb3IgYnJvdGhlciwgYW5kIHRob3UgZ2l2ZXN0IGhpbSBub3VnaHQ7IGFuZCBoZSBjcnkgdW50byB0aGUgTE9SRCBhZ2FpbnN0IHRoZWUsIGFuZCBpdCBiZSBzaW4gdW50byB0aGVlLgpUaG91IHNoYWx0IHN1cmVseSBnaXZlIGhpbSwgYW5kIHRoaW5lIGhlYXJ0IHNoYWxsIG5vdCBiZSBncmlldmVkIHdoZW4gdGhvdSBnaXZlc3QgdW50byBoaW06IGJlY2F1c2UgdGhhdCBmb3IgdGhpcyB0aGluZyB0aGUgTE9SRCB0aHkgR29kIHNoYWxsIGJsZXNzIHRoZWUgaW4gYWxsIHRoeSB3b3JrcywgYW5kIGluIGFsbCB0aGF0IHRob3UgcHV0dGVzdCB0aGluZSBoYW5kIHVudG8uCkZvciB0aGUgcG9vciBzaGFsbCBuZXZlciBjZWFzZSBvdXQgb2YgdGhlIGxhbmQ6IHRoZXJlZm9yZSBJIGNvbW1hbmQgdGhlZSwgc2F5aW5nLCBUaG91IHNoYWx0IG9wZW4gdGhpbmUgaGFuZCB3aWRlIHVudG8gdGh5IGJyb3RoZXIsIHRvIHRoeSBwb29yLCBhbmQgdG8gdGh5IG5lZWR5LCBpbiB0aHkgbGFuZC4KQW5kIGlmIHRoeSBicm90aGVyLCBhbiBIZWJyZXcgbWFuLCBvciBhbiBIZWJyZXcgd29tYW4sIGJlIHNvbGQgdW50byB0aGVlLCBhbmQgc2VydmUgdGhlZSBzaXggeWVhcnM7IHRoZW4gaW4gdGhlIHNldmVudGggeWVhciB0aG91IHNoYWx0IGxldCBoaW0gZ28gZnJlZSBmcm9tIHRoZWUuCkFuZCB3aGVuIHRob3Ugc2VuZGVzdCBoaW0gb3V0IGZyZWUgZnJvbSB0aGVlLCB0aG91IHNoYWx0IG5vdCBsZXQgaGltIGdvIGF3YXkgZW1wdHk6ClRob3Ugc2hhbHQgZnVybmlzaCBoaW0gbGliZXJhbGx5IG91dCBvZiB0aHkgZmxvY2ssIGFuZCBvdXQgb2YgdGh5IGZsb29yLCBhbmQgb3V0IG9mIHRoeSB3aW5lcHJlc3M6IG9mIHRoYXQgd2hlcmV3aXRoIHRoZSBMT1JEIHRoeSBHb2QgaGF0aCBibGVzc2VkIHRoZWUgdGhvdSBzaGFsdCBnaXZlIHVudG8gaGltLgpBbmQgdGhvdSBzaGFsdCByZW1lbWJlciB0aGF0IHRob3Ugd2FzdCBhIGJvbmRtYW4gaW4gdGhlIGxhbmQgb2YgRWd5cHQsIGFuZCB0aGUgTE9SRCB0aHkgR29kIHJlZGVlbWVkIHRoZWU6IHRoZXJlZm9yZSBJIGNvbW1hbmQgdGhlZSB0aGlzIHRoaW5nIHRvIGRheS4KQW5kIGl0IHNoYWxsIGJlLCBpZiBoZSBzYXkgdW50byB0aGVlLCBJIHdpbGwgbm90IGdvIGF3YXkgZnJvbSB0aGVlOyBiZWNhdXNlIGhlIGxvdmV0aCB0aGVlIGFuZCB0aGluZSBob3VzZSwgYmVjYXVzZSBoZSBpcyB3ZWxsIHdpdGggdGhlZTsKVGhlbiB0aG91IHNoYWx0IHRha2UgYW4gYXVsLCBhbmQgdGhydXN0IGl0IHRocm91Z2ggaGlzIGVhciB1bnRvIHRoZSBkb29yLCBhbmQgaGUgc2hhbGwgYmUgdGh5IHNlcnZhbnQgZm9yIGV2ZXIuIEFuZCBhbHNvIHVudG8gdGh5IG1haWRzZXJ2YW50IHRob3Ugc2hhbHQgZG8gbGlrZXdpc2UuCkl0IHNoYWxsIG5vdCBzZWVtIGhhcmQgdW50byB0aGVlLCB3aGVuIHRob3Ugc2VuZGVzdCBoaW0gYXdheSBmcmVlIGZyb20gdGhlZTsgZm9yIGhlIGhhdGggYmVlbiB3b3J0aCBhIGRvdWJsZSBoaXJlZCBzZXJ2YW50IHRvIHRoZWUsIGluIHNlcnZpbmcgdGhlZSBzaXggeWVhcnM6IGFuZCB0aGUgTE9SRCB0aHkgR29kIHNoYWxsIGJsZXNzIHRoZWUgaW4gYWxsIHRoYXQgdGhvdSBkb2VzdC4KQWxsIHRoZSBmaXJzdGxpbmcgbWFsZXMgdGhhdCBjb21lIG9mIHRoeSBoZXJkIGFuZCBvZiB0aHkgZmxvY2sgdGhvdSBzaGFsdCBzYW5jdGlmeSB1bnRvIHRoZSBMT1JEIHRoeSBHb2Q6IHRob3Ugc2hhbHQgZG8gbm8gd29yayB3aXRoIHRoZSBmaXJzdGxpbmcgb2YgdGh5IGJ1bGxvY2ssIG5vciBzaGVhciB0aGUgZmlyc3RsaW5nIG9mIHRoeSBzaGVlcC4KVGhvdSBzaGFsdCBlYXQgaXQgYmVmb3JlIHRoZSBMT1JEIHRoeSBHb2QgeWVhciBieSB5ZWFyIGluIHRoZSBwbGFjZSB3aGljaCB0aGUgTE9SRCBzaGFsbCBjaG9vc2UsIHRob3UgYW5kIHRoeSBob3VzZWhvbGQuCkFuZCBpZiB0aGVyZSBiZSBhbnkgYmxlbWlzaCB0aGVyZWluLCBhcyBpZiBpdCBiZSBsYW1lLCBvciBibGluZCwgb3IgaGF2ZSBhbnkgaWxsIGJsZW1pc2gsIHRob3Ugc2hhbHQgbm90IHNhY3JpZmljZSBpdCB1bnRvIHRoZSBMT1JEIHRoeSBHb2QuClRob3Ugc2hhbHQgZWF0IGl0IHdpdGhpbiB0aHkgZ2F0ZXM6IHRoZSB1bmNsZWFuIGFuZCB0aGUgY2xlYW4gcGVyc29uIHNoYWxsIGVhdCBpdCBhbGlrZSwgYXMgdGhlIHJvZWJ1Y2ssIGFuZCBhcyB0aGUgaGFydC4KT25seSB0aG91IHNoYWx0IG5vdCBlYXQgdGhlIGJsb29kIHRoZXJlb2Y7IHRob3Ugc2hhbHQgcG91ciBpdCB1cG9uIHRoZSBncm91bmQgYXMgd2F0ZXIuCk9ic2VydmUgdGhlIG1vbnRoIG9mIEFiaWIsIGFuZCBrZWVwIHRoZSBwYXNzb3ZlciB1bnRvIHRoZSBMT1JEIHRoeSBHb2Q6IGZvciBpbiB0aGUgbW9udGggb2YgQWJpYiB0aGUgTE9SRCB0aHkgR29kIGJyb3VnaHQgdGhlZSBmb3J0aCBvdXQgb2YgRWd5cHQgYnkgbmlnaHQuClRob3Ugc2hhbHQgdGhlcmVmb3JlIHNhY3JpZmljZSB0aGUgcGFzc292ZXIgdW50byB0aGUgTE9SRCB0aHkgR29kLCBvZiB0aGUgZmxvY2sgYW5kIHRoZSBoZXJkLCBpbiB0aGUgcGxhY2Ugd2hpY2ggdGhlIExPUkQgc2hhbGwgY2hvb3NlIHRvIHBsYWNlIGhpcyBuYW1lIHRoZXJlLgpUaG91IHNoYWx0IGVhdCBubyBsZWF2ZW5lZCBicmVhZCB3aXRoIGl0OyBzZXZlbiBkYXlzIHNoYWx0IHRob3UgZWF0IHVubGVhdmVuZWQgYnJlYWQgdGhlcmV3aXRoLCBldmVuIHRoZSBicmVhZCBvZiBhZmZsaWN0aW9uOyBmb3IgdGhvdSBjYW1lc3QgZm9ydGggb3V0IG9mIHRoZSBsYW5kIG9mIEVneXB0IGluIGhhc3RlOiB0aGF0IHRob3UgbWF5ZXN0IHJlbWVtYmVyIHRoZSBkYXkgd2hlbiB0aG91IGNhbWVzdCBmb3J0aCBvdXQgb2YgdGhlIGxhbmQgb2YgRWd5cHQgYWxsIHRoZSBkYXlzIG9mIHRoeSBsaWZlLgpBbmQgdGhlcmUgc2hhbGwgYmUgbm8gbGVhdmVuZWQgYnJlYWQgc2VlbiB3aXRoIHRoZWUgaW4gYWxsIHRoeSBjb2FzdCBzZXZlbiBkYXlzOyBuZWl0aGVyIHNoYWxsIHRoZXJlIGFueSB0aGluZyBvZiB0aGUgZmxlc2gsIHdoaWNoIHRob3Ugc2FjcmlmaWNlZHN0IHRoZSBmaXJzdCBkYXkgYXQgZXZlbiwgcmVtYWluIGFsbCBuaWdodCB1bnRpbCB0aGUgbW9ybmluZy4KVGhvdSBtYXllc3Qgbm90IHNhY3JpZmljZSB0aGUgcGFzc292ZXIgd2l0aGluIGFueSBvZiB0aHkgZ2F0ZXMsIHdoaWNoIHRoZSBMT1JEIHRoeSBHb2QgZ2l2ZXRoIHRoZWU6CkJ1dCBhdCB0aGUgcGxhY2Ugd2hpY2ggdGhlIExPUkQgdGh5IEdvZCBzaGFsbCBjaG9vc2UgdG8gcGxhY2UgaGlzIG5hbWUgaW4sIHRoZXJlIHRob3Ugc2hhbHQgc2FjcmlmaWNlIHRoZSBwYXNzb3ZlciBhdCBldmVuLCBhdCB0aGUgZ29pbmcgZG93biBvZiB0aGUgc3VuLCBhdCB0aGUgc2Vhc29uIHRoYXQgdGhvdSBjYW1lc3QgZm9ydGggb3V0IG9mIEVneXB0LgpBbmQgdGhvdSBzaGFsdCByb2FzdCBhbmQgZWF0IGl0IGluIHRoZSBwbGFjZSB3aGljaCB0aGUgTE9SRCB0aHkgR29kIHNoYWxsIGNob29zZTogYW5kIHRob3Ugc2hhbHQgdHVybiBpbiB0aGUgbW9ybmluZywgYW5kIGdvIHVudG8gdGh5IHRlbnRzLgpTaXggZGF5cyB0aG91IHNoYWx0IGVhdCB1bmxlYXZlbmVkIGJyZWFkOiBhbmQgb24gdGhlIHNldmVudGggZGF5IHNoYWxsIGJlIGEgc29sZW1uIGFzc2VtYmx5IHRvIHRoZSBMT1JEIHRoeSBHb2Q6IHRob3Ugc2hhbHQgZG8gbm8gd29yayB0aGVyZWluLgpTZXZlbiB3ZWVrcyBzaGFsdCB0aG91IG51bWJlciB1bnRvIHRoZWU6IGJlZ2luIHRvIG51bWJlciB0aGUgc2V2ZW4gd2Vla3MgZnJvbSBzdWNoIHRpbWUgYXMgdGhvdSBiZWdpbm5lc3QgdG8gcHV0IHRoZSBzaWNrbGUgdG8gdGhlIGNvcm4uCkFuZCB0aG91IHNoYWx0IGtlZXAgdGhlIGZlYXN0IG9mIHdlZWtzIHVudG8gdGhlIExPUkQgdGh5IEdvZCB3aXRoIGEgdHJpYnV0ZSBvZiBhIGZyZWV3aWxsIG9mZmVyaW5nIG9mIHRoaW5lIGhhbmQsIHdoaWNoIHRob3Ugc2hhbHQgZ2l2ZSB1bnRvIHRoZSBMT1JEIHRoeSBHb2QsIGFjY29yZGluZyBhcyB0aGUgTE9SRCB0aHkgR29kIGhhdGggYmxlc3NlZCB0aGVlOgpBbmQgdGhvdSBzaGFsdCByZWpvaWNlIGJlZm9yZSB0aGUgTE9SRCB0aHkgR29kLCB0aG91LCBhbmQgdGh5IHNvbiwgYW5kIHRoeSBkYXVnaHRlciwgYW5kIHRoeSBtYW5zZXJ2YW50LCBhbmQgdGh5IG1haWRzZXJ2YW50LCBhbmQgdGhlIExldml0ZSB0aGF0IGlzIHdpdGhpbiB0aHkgZ2F0ZXMsIGFuZCB0aGUgc3RyYW5nZXIsIGFuZCB0aGUgZmF0aGVybGVzcywgYW5kIHRoZSB3aWRvdywgdGhhdCBhcmUgYW1vbmcgeW91LCBpbiB0aGUgcGxhY2Ugd2hpY2ggdGhlIExPUkQgdGh5IEdvZCBoYXRoIGNob3NlbiB0byBwbGFjZSBoaXMgbmFtZSB0aGVyZS4KQW5kIHRob3Ugc2hhbHQgcmVtZW1iZXIgdGhhdCB0aG91IHdhc3QgYSBib25kbWFuIGluIEVneXB0OiBhbmQgdGhvdSBzaGFsdCBvYnNlcnZlIGFuZCBkbyB0aGVzZSBzdGF0dXRlcy4KVGhvdSBzaGFsdCBvYnNlcnZlIHRoZSBmZWFzdCBvZiB0YWJlcm5hY2xlcyBzZXZlbiBkYXlzLCBhZnRlciB0aGF0IHRob3UgaGFzdCBnYXRoZXJlZCBpbiB0aHkgY29ybiBhbmQgdGh5IHdpbmU6CkFuZCB0aG91IHNoYWx0IHJlam9pY2UgaW4gdGh5IGZlYXN0LCB0aG91LCBhbmQgdGh5IHNvbiwgYW5kIHRoeSBkYXVnaHRlciwgYW5kIHRoeSBtYW5zZXJ2YW50LCBhbmQgdGh5IG1haWRzZXJ2YW50LCBhbmQgdGhlIExldml0ZSwgdGhlIHN0cmFuZ2VyLCBhbmQgdGhlIGZhdGhlcmxlc3MsIGFuZCB0aGUgd2lkb3csIHRoYXQgYXJlIHdpdGhpbiB0aHkgZ2F0ZXMuClNldmVuIGRheXMgc2hhbHQgdGhvdSBrZWVwIGEgc29sZW1uIGZlYXN0IHVudG8gdGhlIExPUkQgdGh5IEdvZCBpbiB0aGUgcGxhY2Ugd2hpY2ggdGhlIExPUkQgc2hhbGwgY2hvb3NlOiBiZWNhdXNlIHRoZSBMT1JEIHRoeSBHb2Qgc2hhbGwgYmxlc3MgdGhlZSBpbiBhbGwgdGhpbmUgaW5jcmVhc2UsIGFuZCBpbiBhbGwgdGhlIHdvcmtzIG9mIHRoaW5lIGhhbmRzLCB0aGVyZWZvcmUgdGhvdSBzaGFsdCBzdXJlbHkgcmVqb2ljZS4KVGhyZWUgdGltZXMgaW4gYSB5ZWFyIHNoYWxsIGFsbCB0aHkgbWFsZXMgYXBwZWFyIGJlZm9yZSB0aGUgTE9SRCB0aHkgR29kIGluIHRoZSBwbGFjZSB3aGljaCBoZSBzaGFsbCBjaG9vc2U7IGluIHRoZSBmZWFzdCBvZiB1bmxlYXZlbmVkIGJyZWFkLCBhbmQgaW4gdGhlIGZlYXN0IG9mIHdlZWtzLCBhbmQgaW4gdGhlIGZlYXN0IG9mIHRhYmVybmFjbGVzOiBhbmQgdGhleSBzaGFsbCBub3QgYXBwZWFyIGJlZm9yZSB0aGUgTE9SRCBlbXB0eToKRXZlcnkgbWFuIHNoYWxsIGdpdmUgYXMgaGUgaXMgYWJsZSwgYWNjb3JkaW5nIHRvIHRoZSBibGVzc2luZyBvZiB0aGUgTE9SRCB0aHkgR29kIHdoaWNoIGhlIGhhdGggZ2l2ZW4gdGhlZS4KSnVkZ2VzIGFuZCBvZmZpY2VycyBzaGFsdCB0aG91IG1ha2UgdGhlZSBpbiBhbGwgdGh5IGdhdGVzLCB3aGljaCB0aGUgTE9SRCB0aHkgR29kIGdpdmV0aCB0aGVlLCB0aHJvdWdob3V0IHRoeSB0cmliZXM6IGFuZCB0aGV5IHNoYWxsIGp1ZGdlIHRoZSBwZW9wbGUgd2l0aCBqdXN0IGp1ZGdtZW50LgpUaG91IHNoYWx0IG5vdCB3cmVzdCBqdWRnbWVudDsgdGhvdSBzaGFsdCBub3QgcmVzcGVjdCBwZXJzb25zLCBuZWl0aGVyIHRha2UgYSBnaWZ0OiBmb3IgYSBnaWZ0IGRvdGggYmxpbmQgdGhlIGV5ZXMgb2YgdGhlIHdpc2UsIGFuZCBwZXJ2ZXJ0IHRoZSB3b3JkcyBvZiB0aGUgcmlnaHRlb3VzLgpUaGF0IHdoaWNoIGlzIGFsdG9nZXRoZXIganVzdCBzaGFsdCB0aG91IGZvbGxvdywgdGhhdCB0aG91IG1heWVzdCBsaXZlLCBhbmQgaW5oZXJpdCB0aGUgbGFuZCB3aGljaCB0aGUgTE9SRCB0aHkgR29kIGdpdmV0aCB0aGVlLgpUaG91IHNoYWx0IG5vdCBwbGFudCB0aGVlIGEgZ3JvdmUgb2YgYW55IHRyZWVzIG5lYXIgdW50byB0aGUgYWx0YXIgb2YgdGhlIExPUkQgdGh5IEdvZCwgd2hpY2ggdGhvdSBzaGFsdCBtYWtlIHRoZWUuCk5laXRoZXIgc2hhbHQgdGhvdSBzZXQgdGhlZSB1cCBhbnkgaW1hZ2U7IHdoaWNoIHRoZSBMT1JEIHRoeSBHb2QgaGF0ZXRoLgpUaG91IHNoYWx0IG5vdCBzYWNyaWZpY2UgdW50byB0aGUgTE9SRCB0aHkgR29kIGFueSBidWxsb2NrLCBvciBzaGVlcCwgd2hlcmVpbiBpcyBibGVtaXNoLCBvciBhbnkgZXZpbGZhdm91cmVkbmVzczogZm9yIHRoYXQgaXMgYW4gYWJvbWluYXRpb24gdW50byB0aGUgTE9SRCB0aHkgR29kLgpJZiB0aGVyZSBiZSBmb3VuZCBhbW9uZyB5b3UsIHdpdGhpbiBhbnkgb2YgdGh5IGdhdGVzIHdoaWNoIHRoZSBMT1JEIHRoeSBHb2QgZ2l2ZXRoIHRoZWUsIG1hbiBvciB3b21hbiwgdGhhdCBoYXRoIHdyb3VnaHQgd2lja2VkbmVzcyBpbiB0aGUgc2lnaHQgb2YgdGhlIExPUkQgdGh5IEdvZCwgaW4gdHJhbnNncmVzc2luZyBoaXMgY292ZW5hbnQsCkFuZCBoYXRoIGdvbmUgYW5kIHNlcnZlZCBvdGhlciBnb2RzLCBhbmQgd29yc2hpcHBlZCB0aGVtLCBlaXRoZXIgdGhlIHN1biwgb3IgbW9vbiwgb3IgYW55IG9mIHRoZSBob3N0IG9mIGhlYXZlbiwgd2hpY2ggSSBoYXZlIG5vdCBjb21tYW5kZWQ7CkFuZCBpdCBiZSB0b2xkIHRoZWUsIGFuZCB0aG91IGhhc3QgaGVhcmQgb2YgaXQsIGFuZCBlbnF1aXJlZCBkaWxpZ2VudGx5LCBhbmQsIGJlaG9sZCwgaXQgYmUgdHJ1ZSwgYW5kIHRoZSB0aGluZyBjZXJ0YWluLCB0aGF0IHN1Y2ggYWJvbWluYXRpb24gaXMgd3JvdWdodCBpbiBJc3JhZWw6ClRoZW4gc2hhbHQgdGhvdSBicmluZyBmb3J0aCB0aGF0IG1hbiBvciB0aGF0IHdvbWFuLCB3aGljaCBoYXZlIGNvbW1pdHRlZCB0aGF0IHdpY2tlZCB0aGluZywgdW50byB0aHkgZ2F0ZXMsIGV2ZW4gdGhhdCBtYW4gb3IgdGhhdCB3b21hbiwgYW5kIHNoYWx0IHN0b25lIHRoZW0gd2l0aCBzdG9uZXMsIHRpbGwgdGhleSBkaWUuCkF0IHRoZSBtb3V0aCBvZiB0d28gd2l0bmVzc2VzLCBvciB0aHJlZSB3aXRuZXNzZXMsIHNoYWxsIGhlIHRoYXQgaXMgd29ydGh5IG9mIGRlYXRoIGJlIHB1dCB0byBkZWF0aDsgYnV0IGF0IHRoZSBtb3V0aCBvZiBvbmUgd2l0bmVzcyBoZSBzaGFsbCBub3QgYmUgcHV0IHRvIGRlYXRoLgpUaGUgaGFuZHMgb2YgdGhlIHdpdG5lc3NlcyBzaGFsbCBiZSBmaXJzdCB1cG9uIGhpbSB0byBwdXQgaGltIHRvIGRlYXRoLCBhbmQgYWZ0ZXJ3YXJkIHRoZSBoYW5kcyBvZiBhbGwgdGhlIHBlb3BsZS4gU28gdGhvdSBzaGFsdCBwdXQgdGhlIGV2aWwgYXdheSBmcm9tIGFtb25nIHlvdS4KSWYgdGhlcmUgYXJpc2UgYSBtYXR0ZXIgdG9vIGhhcmQgZm9yIHRoZWUgaW4ganVkZ21lbnQsIGJldHdlZW4gYmxvb2QgYW5kIGJsb29kLCBiZXR3ZWVuIHBsZWEgYW5kIHBsZWEsIGFuZCBiZXR3ZWVuIHN0cm9rZSBhbmQgc3Ryb2tlLCBiZWluZyBtYXR0ZXJzIG9mIGNvbnRyb3ZlcnN5IHdpdGhpbiB0aHkgZ2F0ZXM6IHRoZW4gc2hhbHQgdGhvdSBhcmlzZSwgYW5kIGdldCB0aGVlIHVwIGludG8gdGhlIHBsYWNlIHdoaWNoIHRoZSBMT1JEIHRoeSBHb2Qgc2hhbGwgY2hvb3NlOwpBbmQgdGhvdSBzaGFsdCBjb21lIHVudG8gdGhlIHByaWVzdHMgdGhlIExldml0ZXMsIGFuZCB1bnRvIHRoZSBqdWRnZSB0aGF0IHNoYWxsIGJlIGluIHRob3NlIGRheXMsIGFuZCBlbnF1aXJlOyBhbmQgdGhleSBzaGFsbCBzaGV3IHRoZWUgdGhlIHNlbnRlbmNlIG9mIGp1ZGdtZW50OgpBbmQgdGhvdSBzaGFsdCBkbyBhY2NvcmRpbmcgdG8gdGhlIHNlbnRlbmNlLCB3aGljaCB0aGV5IG9mIHRoYXQgcGxhY2Ugd2hpY2ggdGhlIExPUkQgc2hhbGwgY2hvb3NlIHNoYWxsIHNoZXcgdGhlZTsgYW5kIHRob3Ugc2hhbHQgb2JzZXJ2ZSB0byBkbyBhY2NvcmRpbmcgdG8gYWxsIHRoYXQgdGhleSBpbmZvcm0gdGhlZToKQWNjb3JkaW5nIHRvIHRoZSBzZW50ZW5jZSBvZiB0aGUgbGF3IHdoaWNoIHRoZXkgc2hhbGwgdGVhY2ggdGhlZSwgYW5kIGFjY29yZGluZyB0byB0aGUganVkZ21lbnQgd2hpY2ggdGhleSBzaGFsbCB0ZWxsIHRoZWUsIHRob3Ugc2hhbHQgZG86IHRob3Ugc2hhbHQgbm90IGRlY2xpbmUgZnJvbSB0aGUgc2VudGVuY2Ugd2hpY2ggdGhleSBzaGFsbCBzaGV3IHRoZWUsIHRvIHRoZSByaWdodCBoYW5kLCBub3IgdG8gdGhlIGxlZnQuCkFuZCB0aGUgbWFuIHRoYXQgd2lsbCBkbyBwcmVzdW1wdHVvdXNseSwgYW5kIHdpbGwgbm90IGhlYXJrZW4gdW50byB0aGUgcHJpZXN0IHRoYXQgc3RhbmRldGggdG8gbWluaXN0ZXIgdGhlcmUgYmVmb3JlIHRoZSBMT1JEIHRoeSBHb2QsIG9yIHVudG8gdGhlIGp1ZGdlLCBldmVuIHRoYXQgbWFuIHNoYWxsIGRpZTogYW5kIHRob3Ugc2hhbHQgcHV0IGF3YXkgdGhlIGV2aWwgZnJvbSBJc3JhZWwuCkFuZCBhbGwgdGhlIHBlb3BsZSBzaGFsbCBoZWFyLCBhbmQgZmVhciwgYW5kIGRvIG5vIG1vcmUgcHJlc3VtcHR1b3VzbHkuCldoZW4gdGhvdSBhcnQgY29tZSB1bnRvIHRoZSBsYW5kIHdoaWNoIHRoZSBMT1JEIHRoeSBHb2QgZ2l2ZXRoIHRoZWUsIGFuZCBzaGFsdCBwb3NzZXNzIGl0LCBhbmQgc2hhbHQgZHdlbGwgdGhlcmVpbiwgYW5kIHNoYWx0IHNheSwgSSB3aWxsIHNldCBhIGtpbmcgb3ZlciBtZSwgbGlrZSBhcyBhbGwgdGhlIG5hdGlvbnMgdGhhdCBhcmUgYWJvdXQgbWU7ClRob3Ugc2hhbHQgaW4gYW55IHdpc2Ugc2V0IGhpbSBraW5nIG92ZXIgdGhlZSwgd2hvbSB0aGUgTE9SRCB0aHkgR29kIHNoYWxsIGNob29zZTogb25lIGZyb20gYW1vbmcgdGh5IGJyZXRocmVuIHNoYWx0IHRob3Ugc2V0IGtpbmcgb3ZlciB0aGVlOiB0aG91IG1heWVzdCBub3Qgc2V0IGEgc3RyYW5nZXIgb3ZlciB0aGVlLCB3aGljaCBpcyBub3QgdGh5IGJyb3RoZXIuCkJ1dCBoZSBzaGFsbCBub3QgbXVsdGlwbHkgaG9yc2VzIHRvIGhpbXNlbGYsIG5vciBjYXVzZSB0aGUgcGVvcGxlIHRvIHJldHVybiB0byBFZ3lwdCwgdG8gdGhlIGVuZCB0aGF0IGhlIHNob3VsZCBtdWx0aXBseSBob3JzZXM6IGZvcmFzbXVjaCBhcyB0aGUgTE9SRCBoYXRoIHNhaWQgdW50byB5b3UsIFllIHNoYWxsIGhlbmNlZm9ydGggcmV0dXJuIG5vIG1vcmUgdGhhdCB3YXkuCk5laXRoZXIgc2hhbGwgaGUgbXVsdGlwbHkgd2l2ZXMgdG8gaGltc2VsZiwgdGhhdCBoaXMgaGVhcnQgdHVybiBub3QgYXdheTogbmVpdGhlciBzaGFsbCBoZSBncmVhdGx5IG11bHRpcGx5IHRvIGhpbXNlbGYgc2lsdmVyIGFuZCBnb2xkLgpBbmQgaXQgc2hhbGwgYmUsIHdoZW4gaGUgc2l0dGV0aCB1cG9uIHRoZSB0aHJvbmUgb2YgaGlzIGtpbmdkb20sIHRoYXQgaGUgc2hhbGwgd3JpdGUgaGltIGEgY29weSBvZiB0aGlzIGxhdyBpbiBhIGJvb2sgb3V0IG9mIHRoYXQgd2hpY2ggaXMgYmVmb3JlIHRoZSBwcmllc3RzIHRoZSBMZXZpdGVzOgpBbmQgaXQgc2hhbGwgYmUgd2l0aCBoaW0sIGFuZCBoZSBzaGFsbCByZWFkIHRoZXJlaW4gYWxsIHRoZSBkYXlzIG9mIGhpcyBsaWZlOiB0aGF0IGhlIG1heSBsZWFybiB0byBmZWFyIHRoZSBMT1JEIGhpcyBHb2QsIHRvIGtlZXAgYWxsIHRoZSB3b3JkcyBvZiB0aGlzIGxhdyBhbmQgdGhlc2Ugc3RhdHV0ZXMsIHRvIGRvIHRoZW06ClRoYXQgaGlzIGhlYXJ0IGJlIG5vdCBsaWZ0ZWQgdXAgYWJvdmUgaGlzIGJyZXRocmVuLCBhbmQgdGhhdCBoZSB0dXJuIG5vdCBhc2lkZSBmcm9tIHRoZSBjb21tYW5kbWVudCwgdG8gdGhlIHJpZ2h0IGhhbmQsIG9yIHRvIHRoZSBsZWZ0OiB0byB0aGUgZW5kIHRoYXQgaGUgbWF5IHByb2xvbmcgaGlzIGRheXMgaW4gaGlzIGtpbmdkb20sIGhlLCBhbmQgaGlzIGNoaWxkcmVuLCBpbiB0aGUgbWlkc3Qgb2YgSXNyYWVsLgpUaGUgcHJpZXN0cyB0aGUgTGV2aXRlcywgYW5kIGFsbCB0aGUgdHJpYmUgb2YgTGV2aSwgc2hhbGwgaGF2ZSBubyBwYXJ0IG5vciBpbmhlcml0YW5jZSB3aXRoIElzcmFlbDogdGhleSBzaGFsbCBlYXQgdGhlIG9mZmVyaW5ncyBvZiB0aGUgTE9SRCBtYWRlIGJ5IGZpcmUsIGFuZCBoaXMgaW5oZXJpdGFuY2UuClRoZXJlZm9yZSBzaGFsbCB0aGV5IGhhdmUgbm8gaW5oZXJpdGFuY2UgYW1vbmcgdGhlaXIgYnJldGhyZW46IHRoZSBMT1JEIGlzIHRoZWlyIGluaGVyaXRhbmNlLCBhcyBoZSBoYXRoIHNhaWQgdW50byB0aGVtLgpBbmQgdGhpcyBzaGFsbCBiZSB0aGUgcHJpZXN0J3MgZHVlIGZyb20gdGhlIHBlb3BsZSwgZnJvbSB0aGVtIHRoYXQgb2ZmZXIgYSBzYWNyaWZpY2UsIHdoZXRoZXIgaXQgYmUgb3ggb3Igc2hlZXA7IGFuZCB0aGV5IHNoYWxsIGdpdmUgdW50byB0aGUgcHJpZXN0IHRoZSBzaG91bGRlciwgYW5kIHRoZSB0d28gY2hlZWtzLCBhbmQgdGhlIG1hdy4KVGhlIGZpcnN0ZnJ1aXQgYWxzbyBvZiB0aHkgY29ybiwgb2YgdGh5IHdpbmUsIGFuZCBvZiB0aGluZSBvaWwsIGFuZCB0aGUgZmlyc3Qgb2YgdGhlIGZsZWVjZSBvZiB0aHkgc2hlZXAsIHNoYWx0IHRob3UgZ2l2ZSBoaW0uCkZvciB0aGUgTE9SRCB0aHkgR29kIGhhdGggY2hvc2VuIGhpbSBvdXQgb2YgYWxsIHRoeSB0cmliZXMsIHRvIHN0YW5kIHRvIG1pbmlzdGVyIGluIHRoZSBuYW1lIG9mIHRoZSBMT1JELCBoaW0gYW5kIGhpcyBzb25zIGZvciBldmVyLgpBbmQgaWYgYSBMZXZpdGUgY29tZSBmcm9tIGFueSBvZiB0aHkgZ2F0ZXMgb3V0IG9mIGFsbCBJc3JhZWwsIHdoZXJlIGhlIHNvam91cm5lZCwgYW5kIGNvbWUgd2l0aCBhbGwgdGhlIGRlc2lyZSBvZiBoaXMgbWluZCB1bnRvIHRoZSBwbGFjZSB3aGljaCB0aGUgTE9SRCBzaGFsbCBjaG9vc2U7ClRoZW4gaGUgc2hhbGwgbWluaXN0ZXIgaW4gdGhlIG5hbWUgb2YgdGhlIExPUkQgaGlzIEdvZCwgYXMgYWxsIGhpcyBicmV0aHJlbiB0aGUgTGV2aXRlcyBkbywgd2hpY2ggc3RhbmQgdGhlcmUgYmVmb3JlIHRoZSBMT1JELgpUaGV5IHNoYWxsIGhhdmUgbGlrZSBwb3J0aW9ucyB0byBlYXQsIGJlc2lkZSB0aGF0IHdoaWNoIGNvbWV0aCBvZiB0aGUgc2FsZSBvZiBoaXMgcGF0cmltb255LgpXaGVuIHRob3UgYXJ0IGNvbWUgaW50byB0aGUgbGFuZCB3aGljaCB0aGUgTE9SRCB0aHkgR29kIGdpdmV0aCB0aGVlLCB0aG91IHNoYWx0IG5vdCBsZWFybiB0byBkbyBhZnRlciB0aGUgYWJvbWluYXRpb25zIG9mIHRob3NlIG5hdGlvbnMuClRoZXJlIHNoYWxsIG5vdCBiZSBmb3VuZCBhbW9uZyB5b3UgYW55IG9uZSB0aGF0IG1ha2V0aCBoaXMgc29uIG9yIGhpcyBkYXVnaHRlciB0byBwYXNzIHRocm91Z2ggdGhlIGZpcmUsIG9yIHRoYXQgdXNldGggZGl2aW5hdGlvbiwgb3IgYW4gb2JzZXJ2ZXIgb2YgdGltZXMsIG9yIGFuIGVuY2hhbnRlciwgb3IgYSB3aXRjaC4KT3IgYSBjaGFybWVyLCBvciBhIGNvbnN1bHRlciB3aXRoIGZhbWlsaWFyIHNwaXJpdHMsIG9yIGEgd2l6YXJkLCBvciBhIG5lY3JvbWFuY2VyLgpGb3IgYWxsIHRoYXQgZG8gdGhlc2UgdGhpbmdzIGFyZSBhbiBhYm9taW5hdGlvbiB1bnRvIHRoZSBMT1JEOiBhbmQgYmVjYXVzZSBvZiB0aGVzZSBhYm9taW5hdGlvbnMgdGhlIExPUkQgdGh5IEdvZCBkb3RoIGRyaXZlIHRoZW0gb3V0IGZyb20gYmVmb3JlIHRoZWUuClRob3Ugc2hhbHQgYmUgcGVyZmVjdCB3aXRoIHRoZSBMT1JEIHRoeSBHb2QuCkZvciB0aGVzZSBuYXRpb25zLCB3aGljaCB0aG91IHNoYWx0IHBvc3Nlc3MsIGhlYXJrZW5lZCB1bnRvIG9ic2VydmVycyBvZiB0aW1lcywgYW5kIHVudG8gZGl2aW5lcnM6IGJ1dCBhcyBmb3IgdGhlZSwgdGhlIExPUkQgdGh5IEdvZCBoYXRoIG5vdCBzdWZmZXJlZCB0aGVlIHNvIHRvIGRvLgpUaGUgTE9SRCB0aHkgR29kIHdpbGwgcmFpc2UgdXAgdW50byB0aGVlIGEgUHJvcGhldCBmcm9tIHRoZSBtaWRzdCBvZiB0aGVlLCBvZiB0aHkgYnJldGhyZW4sIGxpa2UgdW50byBtZTsgdW50byBoaW0geWUgc2hhbGwgaGVhcmtlbjsKQWNjb3JkaW5nIHRvIGFsbCB0aGF0IHRob3UgZGVzaXJlZHN0IG9mIHRoZSBMT1JEIHRoeSBHb2QgaW4gSG9yZWIgaW4gdGhlIGRheSBvZiB0aGUgYXNzZW1ibHksIHNheWluZywgTGV0IG1lIG5vdCBoZWFyIGFnYWluIHRoZSB2b2ljZSBvZiB0aGUgTE9SRCBteSBHb2QsIG5laXRoZXIgbGV0IG1lIHNlZSB0aGlzIGdyZWF0IGZpcmUgYW55IG1vcmUsIHRoYXQgSSBkaWUgbm90LgpBbmQgdGhlIExPUkQgc2FpZCB1bnRvIG1lLCBUaGV5IGhhdmUgd2VsbCBzcG9rZW4gdGhhdCB3aGljaCB0aGV5IGhhdmUgc3Bva2VuLgpJIHdpbGwgcmFpc2UgdGhlbSB1cCBhIFByb3BoZXQgZnJvbSBhbW9uZyB0aGVpciBicmV0aHJlbiwgbGlrZSB1bnRvIHRoZWUsIGFuZCB3aWxsIHB1dCBteSB3b3JkcyBpbiBoaXMgbW91dGg7IGFuZCBoZSBzaGFsbCBzcGVhayB1bnRvIHRoZW0gYWxsIHRoYXQgSSBzaGFsbCBjb21tYW5kIGhpbS4KQW5kIGl0IHNoYWxsIGNvbWUgdG8gcGFzcywgdGhhdCB3aG9zb2V2ZXIgd2lsbCBub3QgaGVhcmtlbiB1bnRvIG15IHdvcmRzIHdoaWNoIGhlIHNoYWxsIHNwZWFrIGluIG15IG5hbWUsIEkgd2lsbCByZXF1aXJlIGl0IG9mIGhpbS4KQnV0IHRoZSBwcm9waGV0LCB3aGljaCBzaGFsbCBwcmVzdW1lIHRvIHNwZWFrIGEgd29yZCBpbiBteSBuYW1lLCB3aGljaCBJIGhhdmUgbm90IGNvbW1hbmRlZCBoaW0gdG8gc3BlYWssIG9yIHRoYXQgc2hhbGwgc3BlYWsgaW4gdGhlIG5hbWUgb2Ygb3RoZXIgZ29kcywgZXZlbiB0aGF0IHByb3BoZXQgc2hhbGwgZGllLgpBbmQgaWYgdGhvdSBzYXkgaW4gdGhpbmUgaGVhcnQsIEhvdyBzaGFsbCB3ZSBrbm93IHRoZSB3b3JkIHdoaWNoIHRoZSBMT1JEIGhhdGggbm90IHNwb2tlbj8KV2hlbiBhIHByb3BoZXQgc3BlYWtldGggaW4gdGhlIG5hbWUgb2YgdGhlIExPUkQsIGlmIHRoZSB0aGluZyBmb2xsb3cgbm90LCBub3IgY29tZSB0byBwYXNzLCB0aGF0IGlzIHRoZSB0aGluZyB3aGljaCB0aGUgTE9SRCBoYXRoIG5vdCBzcG9rZW4sIGJ1dCB0aGUgcHJvcGhldCBoYXRoIHNwb2tlbiBpdCBwcmVzdW1wdHVvdXNseTogdGhvdSBzaGFsdCBub3QgYmUgYWZyYWlkIG9mIGhpbS4KV2hlbiB0aGUgTE9SRCB0aHkgR29kIGhhdGggY3V0IG9mZiB0aGUgbmF0aW9ucywgd2hvc2UgbGFuZCB0aGUgTE9SRCB0aHkgR29kIGdpdmV0aCB0aGVlLCBhbmQgdGhvdSBzdWNjZWVkZXN0IHRoZW0sIGFuZCBkd2VsbGVzdCBpbiB0aGVpciBjaXRpZXMsIGFuZCBpbiB0aGVpciBob3VzZXM7ClRob3Ugc2hhbHQgc2VwYXJhdGUgdGhyZWUgY2l0aWVzIGZvciB0aGVlIGluIHRoZSBtaWRzdCBvZiB0aHkgbGFuZCwgd2hpY2ggdGhlIExPUkQgdGh5IEdvZCBnaXZldGggdGhlZSB0byBwb3NzZXNzIGl0LgpUaG91IHNoYWx0IHByZXBhcmUgdGhlZSBhIHdheSwgYW5kIGRpdmlkZSB0aGUgY29hc3RzIG9mIHRoeSBsYW5kLCB3aGljaCB0aGUgTE9SRCB0aHkgR29kIGdpdmV0aCB0aGVlIHRvIGluaGVyaXQsIGludG8gdGhyZWUgcGFydHMsIHRoYXQgZXZlcnkgc2xheWVyIG1heSBmbGVlIHRoaXRoZXIuCkFuZCB0aGlzIGlzIHRoZSBjYXNlIG9mIHRoZSBzbGF5ZXIsIHdoaWNoIHNoYWxsIGZsZWUgdGhpdGhlciwgdGhhdCBoZSBtYXkgbGl2ZTogV2hvc28ga2lsbGV0aCBoaXMgbmVpZ2hib3VyIGlnbm9yYW50bHksIHdob20gaGUgaGF0ZWQgbm90IGluIHRpbWUgcGFzdDsKQXMgd2hlbiBhIG1hbiBnb2V0aCBpbnRvIHRoZSB3b29kIHdpdGggaGlzIG5laWdoYm91ciB0byBoZXcgd29vZCwgYW5kIGhpcyBoYW5kIGZldGNoZXRoIGEgc3Ryb2tlIHdpdGggdGhlIGF4ZSB0byBjdXQgZG93biB0aGUgdHJlZSwgYW5kIHRoZSBoZWFkIHNsaXBwZXRoIGZyb20gdGhlIGhlbHZlLCBhbmQgbGlnaHRldGggdXBvbiBoaXMgbmVpZ2hib3VyLCB0aGF0IGhlIGRpZTsgaGUgc2hhbGwgZmxlZSB1bnRvIG9uZSBvZiB0aG9zZSBjaXRpZXMsIGFuZCBsaXZlOgpMZXN0IHRoZSBhdmVuZ2VyIG9mIHRoZSBibG9vZCBwdXJzdWUgdGhlIHNsYXllciwgd2hpbGUgaGlzIGhlYXJ0IGlzIGhvdCwgYW5kIG92ZXJ0YWtlIGhpbSwgYmVjYXVzZSB0aGUgd2F5IGlzIGxvbmcsIGFuZCBzbGF5IGhpbTsgd2hlcmVhcyBoZSB3YXMgbm90IHdvcnRoeSBvZiBkZWF0aCwgaW5hc211Y2ggYXMgaGUgaGF0ZWQgaGltIG5vdCBpbiB0aW1lIHBhc3QuCldoZXJlZm9yZSBJIGNvbW1hbmQgdGhlZSwgc2F5aW5nLCBUaG91IHNoYWx0IHNlcGFyYXRlIHRocmVlIGNpdGllcyBmb3IgdGhlZS4KQW5kIGlmIHRoZSBMT1JEIHRoeSBHb2QgZW5sYXJnZSB0aHkgY29hc3QsIGFzIGhlIGhhdGggc3dvcm4gdW50byB0aHkgZmF0aGVycywgYW5kIGdpdmUgdGhlZSBhbGwgdGhlIGxhbmQgd2hpY2ggaGUgcHJvbWlzZWQgdG8gZ2l2ZSB1bnRvIHRoeSBmYXRoZXJzOwpJZiB0aG91IHNoYWx0IGtlZXAgYWxsIHRoZXNlIGNvbW1hbmRtZW50cyB0byBkbyB0aGVtLCB3aGljaCBJIGNvbW1hbmQgdGhlZSB0aGlzIGRheSwgdG8gbG92ZSB0aGUgTE9SRCB0aHkgR29kLCBhbmQgdG8gd2FsayBldmVyIGluIGhpcyB3YXlzOyB0aGVuIHNoYWx0IHRob3UgYWRkIHRocmVlIGNpdGllcyBtb3JlIGZvciB0aGVlLCBiZXNpZGUgdGhlc2UgdGhyZWU6ClRoYXQgaW5ub2NlbnQgYmxvb2QgYmUgbm90IHNoZWQgaW4gdGh5IGxhbmQsIHdoaWNoIHRoZSBMT1JEIHRoeSBHb2QgZ2l2ZXRoIHRoZWUgZm9yIGFuIGluaGVyaXRhbmNlLCBhbmQgc28gYmxvb2QgYmUgdXBvbiB0aGVlLgpCdXQgaWYgYW55IG1hbiBoYXRlIGhpcyBuZWlnaGJvdXIsIGFuZCBsaWUgaW4gd2FpdCBmb3IgaGltLCBhbmQgcmlzZSB1cCBhZ2FpbnN0IGhpbSwgYW5kIHNtaXRlIGhpbSBtb3J0YWxseSB0aGF0IGhlIGRpZSwgYW5kIGZsZWV0aCBpbnRvIG9uZSBvZiB0aGVzZSBjaXRpZXM6ClRoZW4gdGhlIGVsZGVycyBvZiBoaXMgY2l0eSBzaGFsbCBzZW5kIGFuZCBmZXRjaCBoaW0gdGhlbmNlLCBhbmQgZGVsaXZlciBoaW0gaW50byB0aGUgaGFuZCBvZiB0aGUgYXZlbmdlciBvZiBibG9vZCwgdGhhdCBoZSBtYXkgZGllLgpUaGluZSBleWUgc2hhbGwgbm90IHBpdHkgaGltLCBidXQgdGhvdSBzaGFsdCBwdXQgYXdheSB0aGUgZ3VpbHQgb2YgaW5ub2NlbnQgYmxvb2QgZnJvbSBJc3JhZWwsIHRoYXQgaXQgbWF5IGdvIHdlbGwgd2l0aCB0aGVlLgpUaG91IHNoYWx0IG5vdCByZW1vdmUgdGh5IG5laWdoYm91cidzIGxhbmRtYXJrLCB3aGljaCB0aGV5IG9mIG9sZCB0aW1lIGhhdmUgc2V0IGluIHRoaW5lIGluaGVyaXRhbmNlLCB3aGljaCB0aG91IHNoYWx0IGluaGVyaXQgaW4gdGhlIGxhbmQgdGhhdCB0aGUgTE9SRCB0aHkgR29kIGdpdmV0aCB0aGVlIHRvIHBvc3Nlc3MgaXQuCk9uZSB3aXRuZXNzIHNoYWxsIG5vdCByaXNlIHVwIGFnYWluc3QgYSBtYW4gZm9yIGFueSBpbmlxdWl0eSwgb3IgZm9yIGFueSBzaW4sIGluIGFueSBzaW4gdGhhdCBoZSBzaW5uZXRoOiBhdCB0aGUgbW91dGggb2YgdHdvIHdpdG5lc3Nlcywgb3IgYXQgdGhlIG1vdXRoIG9mIHRocmVlIHdpdG5lc3Nlcywgc2hhbGwgdGhlIG1hdHRlciBiZSBlc3RhYmxpc2hlZC4KSWYgYSBmYWxzZSB3aXRuZXNzIHJpc2UgdXAgYWdhaW5zdCBhbnkgbWFuIHRvIHRlc3RpZnkgYWdhaW5zdCBoaW0gdGhhdCB3aGljaCBpcyB3cm9uZzsKVGhlbiBib3RoIHRoZSBtZW4sIGJldHdlZW4gd2hvbSB0aGUgY29udHJvdmVyc3kgaXMsIHNoYWxsIHN0YW5kIGJlZm9yZSB0aGUgTE9SRCwgYmVmb3JlIHRoZSBwcmllc3RzIGFuZCB0aGUganVkZ2VzLCB3aGljaCBzaGFsbCBiZSBpbiB0aG9zZSBkYXlzOwpBbmQgdGhlIGp1ZGdlcyBzaGFsbCBtYWtlIGRpbGlnZW50IGlucXVpc2l0aW9uOiBhbmQsIGJlaG9sZCwgaWYgdGhlIHdpdG5lc3MgYmUgYSBmYWxzZSB3aXRuZXNzLCBhbmQgaGF0aCB0ZXN0aWZpZWQgZmFsc2VseSBhZ2FpbnN0IGhpcyBicm90aGVyOwpUaGVuIHNoYWxsIHllIGRvIHVudG8gaGltLCBhcyBoZSBoYWQgdGhvdWdodCB0byBoYXZlIGRvbmUgdW50byBoaXMgYnJvdGhlcjogc28gc2hhbHQgdGhvdSBwdXQgdGhlIGV2aWwgYXdheSBmcm9tIGFtb25nIHlvdS4KQW5kIHRob3NlIHdoaWNoIHJlbWFpbiBzaGFsbCBoZWFyLCBhbmQgZmVhciwgYW5kIHNoYWxsIGhlbmNlZm9ydGggY29tbWl0IG5vIG1vcmUgYW55IHN1Y2ggZXZpbCBhbW9uZyB5b3UuCkFuZCB0aGluZSBleWUgc2hhbGwgbm90IHBpdHk7IGJ1dCBsaWZlIHNoYWxsIGdvIGZvciBsaWZlLCBleWUgZm9yIGV5ZSwgdG9vdGggZm9yIHRvb3RoLCBoYW5kIGZvciBoYW5kLCBmb290IGZvciBmb290LgpXaGVuIHRob3UgZ29lc3Qgb3V0IHRvIGJhdHRsZSBhZ2FpbnN0IHRoaW5lIGVuZW1pZXMsIGFuZCBzZWVzdCBob3JzZXMsIGFuZCBjaGFyaW90cywgYW5kIGEgcGVvcGxlIG1vcmUgdGhhbiB0aG91LCBiZSBub3QgYWZyYWlkIG9mIHRoZW06IGZvciB0aGUgTE9SRCB0aHkgR29kIGlzIHdpdGggdGhlZSwgd2hpY2ggYnJvdWdodCB0aGVlIHVwIG91dCBvZiB0aGUgbGFuZCBvZiBFZ3lwdC4KQW5kIGl0IHNoYWxsIGJlLCB3aGVuIHllIGFyZSBjb21lIG5pZ2ggdW50byB0aGUgYmF0dGxlLCB0aGF0IHRoZSBwcmllc3Qgc2hhbGwgYXBwcm9hY2ggYW5kIHNwZWFrIHVudG8gdGhlIHBlb3BsZSwKQW5kIHNoYWxsIHNheSB1bnRvIHRoZW0sIEhlYXIsIE8gSXNyYWVsLCB5ZSBhcHByb2FjaCB0aGlzIGRheSB1bnRvIGJhdHRsZSBhZ2FpbnN0IHlvdXIgZW5lbWllczogbGV0IG5vdCB5b3VyIGhlYXJ0cyBmYWludCwgZmVhciBub3QsIGFuZCBkbyBub3QgdHJlbWJsZSwgbmVpdGhlciBiZSB5ZSB0ZXJyaWZpZWQgYmVjYXVzZSBvZiB0aGVtOwpGb3IgdGhlIExPUkQgeW91ciBHb2QgaXMgaGUgdGhhdCBnb2V0aCB3aXRoIHlvdSwgdG8gZmlnaHQgZm9yIHlvdSBhZ2FpbnN0IHlvdXIgZW5lbWllcywgdG8gc2F2ZSB5b3UuCkFuZCB0aGUgb2ZmaWNlcnMgc2hhbGwgc3BlYWsgdW50byB0aGUgcGVvcGxlLCBzYXlpbmcsIFdoYXQgbWFuIGlzIHRoZXJlIHRoYXQgaGF0aCBidWlsdCBhIG5ldyBob3VzZSwgYW5kIGhhdGggbm90IGRlZGljYXRlZCBpdD8gbGV0IGhpbSBnbyBhbmQgcmV0dXJuIHRvIGhpcyBob3VzZSwgbGVzdCBoZSBkaWUgaW4gdGhlIGJhdHRsZSwgYW5kIGFub3RoZXIgbWFuIGRlZGljYXRlIGl0LgpBbmQgd2hhdCBtYW4gaXMgaGUgdGhhdCBoYXRoIHBsYW50ZWQgYSB2aW5leWFyZCwgYW5kIGhhdGggbm90IHlldCBlYXRlbiBvZiBpdD8gbGV0IGhpbSBhbHNvIGdvIGFuZCByZXR1cm4gdW50byBoaXMgaG91c2UsIGxlc3QgaGUgZGllIGluIHRoZSBiYXR0bGUsIGFuZCBhbm90aGVyIG1hbiBlYXQgb2YgaXQuCkFuZCB3aGF0IG1hbiBpcyB0aGVyZSB0aGF0IGhhdGggYmV0cm90aGVkIGEgd2lmZSwgYW5kIGhhdGggbm90IHRha2VuIGhlcj8gbGV0IGhpbSBnbyBhbmQgcmV0dXJuIHVudG8gaGlzIGhvdXNlLCBsZXN0IGhlIGRpZSBpbiB0aGUgYmF0dGxlLCBhbmQgYW5vdGhlciBtYW4gdGFrZSBoZXIuCkFuZCB0aGUgb2ZmaWNlcnMgc2hhbGwgc3BlYWsgZnVydGhlciB1bnRvIHRoZSBwZW9wbGUsIGFuZCB0aGV5IHNoYWxsIHNheSwgV2hhdCBtYW4gaXMgdGhlcmUgdGhhdCBpcyBmZWFyZnVsIGFuZCBmYWludGhlYXJ0ZWQ/IGxldCBoaW0gZ28gYW5kIHJldHVybiB1bnRvIGhpcyBob3VzZSwgbGVzdCBoaXMgYnJldGhyZW4ncyBoZWFydCBmYWludCBhcyB3ZWxsIGFzIGhpcyBoZWFydC4KQW5kIGl0IHNoYWxsIGJlLCB3aGVuIHRoZSBvZmZpY2VycyBoYXZlIG1hZGUgYW4gZW5kIG9mIHNwZWFraW5nIHVudG8gdGhlIHBlb3BsZSB0aGF0IHRoZXkgc2hhbGwgbWFrZSBjYXB0YWlucyBvZiB0aGUgYXJtaWVzIHRvIGxlYWQgdGhlIHBlb3BsZS4KV2hlbiB0aG91IGNvbWVzdCBuaWdoIHVudG8gYSBjaXR5IHRvIGZpZ2h0IGFnYWluc3QgaXQsIHRoZW4gcHJvY2xhaW0gcGVhY2UgdW50byBpdC4KQW5kIGl0IHNoYWxsIGJlLCBpZiBpdCBtYWtlIHRoZWUgYW5zd2VyIG9mIHBlYWNlLCBhbmQgb3BlbiB1bnRvIHRoZWUsIHRoZW4gaXQgc2hhbGwgYmUsIHRoYXQgYWxsIHRoZSBwZW9wbGUgdGhhdCBpcyBmb3VuZCB0aGVyZWluIHNoYWxsIGJlIHRyaWJ1dGFyaWVzIHVudG8gdGhlZSwgYW5kIHRoZXkgc2hhbGwgc2VydmUgdGhlZS4KQW5kIGlmIGl0IHdpbGwgbWFrZSBubyBwZWFjZSB3aXRoIHRoZWUsIGJ1dCB3aWxsIG1ha2Ugd2FyIGFnYWluc3QgdGhlZSwgdGhlbiB0aG91IHNoYWx0IGJlc2llZ2UgaXQ6CkFuZCB3aGVuIHRoZSBMT1JEIHRoeSBHb2QgaGF0aCBkZWxpdmVyZWQgaXQgaW50byB0aGluZSBoYW5kcywgdGhvdSBzaGFsdCBzbWl0ZSBldmVyeSBtYWxlIHRoZXJlb2Ygd2l0aCB0aGUgZWRnZSBvZiB0aGUgc3dvcmQ6CkJ1dCB0aGUgd29tZW4sIGFuZCB0aGUgbGl0dGxlIG9uZXMsIGFuZCB0aGUgY2F0dGxlLCBhbmQgYWxsIHRoYXQgaXMgaW4gdGhlIGNpdHksIGV2ZW4gYWxsIHRoZSBzcG9pbCB0aGVyZW9mLCBzaGFsdCB0aG91IHRha2UgdW50byB0aHlzZWxmOyBhbmQgdGhvdSBzaGFsdCBlYXQgdGhlIHNwb2lsIG9mIHRoaW5lIGVuZW1pZXMsIHdoaWNoIHRoZSBMT1JEIHRoeSBHb2QgaGF0aCBnaXZlbiB0aGVlLgpUaHVzIHNoYWx0IHRob3UgZG8gdW50byBhbGwgdGhlIGNpdGllcyB3aGljaCBhcmUgdmVyeSBmYXIgb2ZmIGZyb20gdGhlZSwgd2hpY2ggYXJlIG5vdCBvZiB0aGUgY2l0aWVzIG9mIHRoZXNlIG5hdGlvbnMuCkJ1dCBvZiB0aGUgY2l0aWVzIG9mIHRoZXNlIHBlb3BsZSwgd2hpY2ggdGhlIExPUkQgdGh5IEdvZCBkb3RoIGdpdmUgdGhlZSBmb3IgYW4gaW5oZXJpdGFuY2UsIHRob3Ugc2hhbHQgc2F2ZSBhbGl2ZSBub3RoaW5nIHRoYXQgYnJlYXRoZXRoOgpCdXQgdGhvdSBzaGFsdCB1dHRlcmx5IGRlc3Ryb3kgdGhlbTsgbmFtZWx5LCB0aGUgSGl0dGl0ZXMsIGFuZCB0aGUgQW1vcml0ZXMsIHRoZSBDYW5hYW5pdGVzLCBhbmQgdGhlIFBlcml6eml0ZXMsIHRoZSBIaXZpdGVzLCBhbmQgdGhlIEplYnVzaXRlczsgYXMgdGhlIExPUkQgdGh5IEdvZCBoYXRoIGNvbW1hbmRlZCB0aGVlOgpUaGF0IHRoZXkgdGVhY2ggeW91IG5vdCB0byBkbyBhZnRlciBhbGwgdGhlaXIgYWJvbWluYXRpb25zLCB3aGljaCB0aGV5IGhhdmUgZG9uZSB1bnRvIHRoZWlyIGdvZHM7IHNvIHNob3VsZCB5ZSBzaW4gYWdhaW5zdCB0aGUgTE9SRCB5b3VyIEdvZC4KV2hlbiB0aG91IHNoYWx0IGJlc2llZ2UgYSBjaXR5IGEgbG9uZyB0aW1lLCBpbiBtYWtpbmcgd2FyIGFnYWluc3QgaXQgdG8gdGFrZSBpdCwgdGhvdSBzaGFsdCBub3QgZGVzdHJveSB0aGUgdHJlZXMgdGhlcmVvZiBieSBmb3JjaW5nIGFuIGF4ZSBhZ2FpbnN0IHRoZW06IGZvciB0aG91IG1heWVzdCBlYXQgb2YgdGhlbSwgYW5kIHRob3Ugc2hhbHQgbm90IGN1dCB0aGVtIGRvd24gKGZvciB0aGUgdHJlZSBvZiB0aGUgZmllbGQgaXMgbWFuJ3MgbGlmZSkgdG8gZW1wbG95IHRoZW0gaW4gdGhlIHNpZWdlOgpPbmx5IHRoZSB0cmVlcyB3aGljaCB0aG91IGtub3dlc3QgdGhhdCB0aGV5IGJlIG5vdCB0cmVlcyBmb3IgbWVhdCwgdGhvdSBzaGFsdCBkZXN0cm95IGFuZCBjdXQgdGhlbSBkb3duOyBhbmQgdGhvdSBzaGFsdCBidWlsZCBidWx3YXJrcyBhZ2FpbnN0IHRoZSBjaXR5IHRoYXQgbWFrZXRoIHdhciB3aXRoIHRoZWUsIHVudGlsIGl0IGJlIHN1YmR1ZWQuCklmIG9uZSBiZSBmb3VuZCBzbGFpbiBpbiB0aGUgbGFuZCB3aGljaCB0aGUgTE9SRCB0aHkgR29kIGdpdmV0aCB0aGVlIHRvIHBvc3Nlc3MgaXQsIGx5aW5nIGluIHRoZSBmaWVsZCwgYW5kIGl0IGJlIG5vdCBrbm93biB3aG8gaGF0aCBzbGFpbiBoaW06ClRoZW4gdGh5IGVsZGVycyBhbmQgdGh5IGp1ZGdlcyBzaGFsbCBjb21lIGZvcnRoLCBhbmQgdGhleSBzaGFsbCBtZWFzdXJlIHVudG8gdGhlIGNpdGllcyB3aGljaCBhcmUgcm91bmQgYWJvdXQgaGltIHRoYXQgaXMgc2xhaW46CkFuZCBpdCBzaGFsbCBiZSwgdGhhdCB0aGUgY2l0eSB3aGljaCBpcyBuZXh0IHVudG8gdGhlIHNsYWluIG1hbiwgZXZlbiB0aGUgZWxkZXJzIG9mIHRoYXQgY2l0eSBzaGFsbCB0YWtlIGFuIGhlaWZlciwgd2hpY2ggaGF0aCBub3QgYmVlbiB3cm91Z2h0IHdpdGgsIGFuZCB3aGljaCBoYXRoIG5vdCBkcmF3biBpbiB0aGUgeW9rZTsKQW5kIHRoZSBlbGRlcnMgb2YgdGhhdCBjaXR5IHNoYWxsIGJyaW5nIGRvd24gdGhlIGhlaWZlciB1bnRvIGEgcm91Z2ggdmFsbGV5LCB3aGljaCBpcyBuZWl0aGVyIGVhcmVkIG5vciBzb3duLCBhbmQgc2hhbGwgc3RyaWtlIG9mZiB0aGUgaGVpZmVyJ3MgbmVjayB0aGVyZSBpbiB0aGUgdmFsbGV5OgpBbmQgdGhlIHByaWVzdHMgdGhlIHNvbnMgb2YgTGV2aSBzaGFsbCBjb21lIG5lYXI7IGZvciB0aGVtIHRoZSBMT1JEIHRoeSBHb2QgaGF0aCBjaG9zZW4gdG8gbWluaXN0ZXIgdW50byBoaW0sIGFuZCB0byBibGVzcyBpbiB0aGUgbmFtZSBvZiB0aGUgTE9SRDsgYW5kIGJ5IHRoZWlyIHdvcmQgc2hhbGwgZXZlcnkgY29udHJvdmVyc3kgYW5kIGV2ZXJ5IHN0cm9rZSBiZSB0cmllZDoKQW5kIGFsbCB0aGUgZWxkZXJzIG9mIHRoYXQgY2l0eSwgdGhhdCBhcmUgbmV4dCB1bnRvIHRoZSBzbGFpbiBtYW4sIHNoYWxsIHdhc2ggdGhlaXIgaGFuZHMgb3ZlciB0aGUgaGVpZmVyIHRoYXQgaXMgYmVoZWFkZWQgaW4gdGhlIHZhbGxleToKQW5kIHRoZXkgc2hhbGwgYW5zd2VyIGFuZCBzYXksIE91ciBoYW5kcyBoYXZlIG5vdCBzaGVkIHRoaXMgYmxvb2QsIG5laXRoZXIgaGF2ZSBvdXIgZXllcyBzZWVuIGl0LgpCZSBtZXJjaWZ1bCwgTyBMT1JELCB1bnRvIHRoeSBwZW9wbGUgSXNyYWVsLCB3aG9tIHRob3UgaGFzdCByZWRlZW1lZCwgYW5kIGxheSBub3QgaW5ub2NlbnQgYmxvb2QgdW50byB0aHkgcGVvcGxlIG9mIElzcmFlbCdzIGNoYXJnZS4gQW5kIHRoZSBibG9vZCBzaGFsbCBiZSBmb3JnaXZlbiB0aGVtLgpTbyBzaGFsdCB0aG91IHB1dCBhd2F5IHRoZSBndWlsdCBvZiBpbm5vY2VudCBibG9vZCBmcm9tIGFtb25nIHlvdSwgd2hlbiB0aG91IHNoYWx0IGRvIHRoYXQgd2hpY2ggaXMgcmlnaHQgaW4gdGhlIHNpZ2h0IG9mIHRoZSBMT1JELgpXaGVuIHRob3UgZ29lc3QgZm9ydGggdG8gd2FyIGFnYWluc3QgdGhpbmUgZW5lbWllcywgYW5kIHRoZSBMT1JEIHRoeSBHb2QgaGF0aCBkZWxpdmVyZWQgdGhlbSBpbnRvIHRoaW5lIGhhbmRzLCBhbmQgdGhvdSBoYXN0IHRha2VuIHRoZW0gY2FwdGl2ZSwKQW5kIHNlZXN0IGFtb25nIHRoZSBjYXB0aXZlcyBhIGJlYXV0aWZ1bCB3b21hbiwgYW5kIGhhc3QgYSBkZXNpcmUgdW50byBoZXIsIHRoYXQgdGhvdSB3b3VsZGVzdCBoYXZlIGhlciB0byB0aHkgd2lmZTsKVGhlbiB0aG91IHNoYWx0IGJyaW5nIGhlciBob21lIHRvIHRoaW5lIGhvdXNlLCBhbmQgc2hlIHNoYWxsIHNoYXZlIGhlciBoZWFkLCBhbmQgcGFyZSBoZXIgbmFpbHM7CkFuZCBzaGUgc2hhbGwgcHV0IHRoZSByYWltZW50IG9mIGhlciBjYXB0aXZpdHkgZnJvbSBvZmYgaGVyLCBhbmQgc2hhbGwgcmVtYWluIGluIHRoaW5lIGhvdXNlLCBhbmQgYmV3YWlsIGhlciBmYXRoZXIgYW5kIGhlciBtb3RoZXIgYSBmdWxsIG1vbnRoOiBhbmQgYWZ0ZXIgdGhhdCB0aG91IHNoYWx0IGdvIGluIHVudG8gaGVyLCBhbmQgYmUgaGVyIGh1c2JhbmQsIGFuZCBzaGUgc2hhbGwgYmUgdGh5IHdpZmUuCkFuZCBpdCBzaGFsbCBiZSwgaWYgdGhvdSBoYXZlIG5vIGRlbGlnaHQgaW4gaGVyLCB0aGVuIHRob3Ugc2hhbHQgbGV0IGhlciBnbyB3aGl0aGVyIHNoZSB3aWxsOyBidXQgdGhvdSBzaGFsdCBub3Qgc2VsbCBoZXIgYXQgYWxsIGZvciBtb25leSwgdGhvdSBzaGFsdCBub3QgbWFrZSBtZXJjaGFuZGlzZSBvZiBoZXIsIGJlY2F1c2UgdGhvdSBoYXN0IGh1bWJsZWQgaGVyLgpJZiBhIG1hbiBoYXZlIHR3byB3aXZlcywgb25lIGJlbG92ZWQsIGFuZCBhbm90aGVyIGhhdGVkLCBhbmQgdGhleSBoYXZlIGJvcm4gaGltIGNoaWxkcmVuLCBib3RoIHRoZSBiZWxvdmVkIGFuZCB0aGUgaGF0ZWQ7IGFuZCBpZiB0aGUgZmlyc3Rib3JuIHNvbiBiZSBoZXJzIHRoYXQgd2FzIGhhdGVkOgpUaGVuIGl0IHNoYWxsIGJlLCB3aGVuIGhlIG1ha2V0aCBoaXMgc29ucyB0byBpbmhlcml0IHRoYXQgd2hpY2ggaGUgaGF0aCwgdGhhdCBoZSBtYXkgbm90IG1ha2UgdGhlIHNvbiBvZiB0aGUgYmVsb3ZlZCBmaXJzdGJvcm4gYmVmb3JlIHRoZSBzb24gb2YgdGhlIGhhdGVkLCB3aGljaCBpcyBpbmRlZWQgdGhlIGZpcnN0Ym9ybjoKQnV0IGhlIHNoYWxsIGFja25vd2xlZGdlIHRoZSBzb24gb2YgdGhlIGhhdGVkIGZvciB0aGUgZmlyc3Rib3JuLCBieSBnaXZpbmcgaGltIGEgZG91YmxlIHBvcnRpb24gb2YgYWxsIHRoYXQgaGUgaGF0aDogZm9yIGhlIGlzIHRoZSBiZWdpbm5pbmcgb2YgaGlzIHN0cmVuZ3RoOyB0aGUgcmlnaHQgb2YgdGhlIGZpcnN0Ym9ybiBpcyBoaXMuCklmIGEgbWFuIGhhdmUgYSBzdHViYm9ybiBhbmQgcmViZWxsaW91cyBzb24sIHdoaWNoIHdpbGwgbm90IG9iZXkgdGhlIHZvaWNlIG9mIGhpcyBmYXRoZXIsIG9yIHRoZSB2b2ljZSBvZiBoaXMgbW90aGVyLCBhbmQgdGhhdCwgd2hlbiB0aGV5IGhhdmUgY2hhc3RlbmVkIGhpbSwgd2lsbCBub3QgaGVhcmtlbiB1bnRvIHRoZW06ClRoZW4gc2hhbGwgaGlzIGZhdGhlciBhbmQgaGlzIG1vdGhlciBsYXkgaG9sZCBvbiBoaW0sIGFuZCBicmluZyBoaW0gb3V0IHVudG8gdGhlIGVsZGVycyBvZiBoaXMgY2l0eSwgYW5kIHVudG8gdGhlIGdhdGUgb2YgaGlzIHBsYWNlOwpBbmQgdGhleSBzaGFsbCBzYXkgdW50byB0aGUgZWxkZXJzIG9mIGhpcyBjaXR5LCBUaGlzIG91ciBzb24gaXMgc3R1YmJvcm4gYW5kIHJlYmVsbGlvdXMsIGhlIHdpbGwgbm90IG9iZXkgb3VyIHZvaWNlOyBoZSBpcyBhIGdsdXR0b24sIGFuZCBhIGRydW5rYXJkLgpBbmQgYWxsIHRoZSBtZW4gb2YgaGlzIGNpdHkgc2hhbGwgc3RvbmUgaGltIHdpdGggc3RvbmVzLCB0aGF0IGhlIGRpZTogc28gc2hhbHQgdGhvdSBwdXQgZXZpbCBhd2F5IGZyb20gYW1vbmcgeW91OyBhbmQgYWxsIElzcmFlbCBzaGFsbCBoZWFyLCBhbmQgZmVhci4KQW5kIGlmIGEgbWFuIGhhdmUgY29tbWl0dGVkIGEgc2luIHdvcnRoeSBvZiBkZWF0aCwgYW5kIGhlIGJlIHRvIGJlIHB1dCB0byBkZWF0aCwgYW5kIHRob3UgaGFuZyBoaW0gb24gYSB0cmVlOgpIaXMgYm9keSBzaGFsbCBub3QgcmVtYWluIGFsbCBuaWdodCB1cG9uIHRoZSB0cmVlLCBidXQgdGhvdSBzaGFsdCBpbiBhbnkgd2lzZSBidXJ5IGhpbSB0aGF0IGRheTsgKGZvciBoZSB0aGF0IGlzIGhhbmdlZCBpcyBhY2N1cnNlZCBvZiBHb2Q7KSB0aGF0IHRoeSBsYW5kIGJlIG5vdCBkZWZpbGVkLCB3aGljaCB0aGUgTE9SRCB0aHkgR29kIGdpdmV0aCB0aGVlIGZvciBhbiBpbmhlcml0YW5jZS4KVGhvdSBzaGFsdCBub3Qgc2VlIHRoeSBicm90aGVyJ3Mgb3ggb3IgaGlzIHNoZWVwIGdvIGFzdHJheSwgYW5kIGhpZGUgdGh5c2VsZiBmcm9tIHRoZW06IHRob3Ugc2hhbHQgaW4gYW55IGNhc2UgYnJpbmcgdGhlbSBhZ2FpbiB1bnRvIHRoeSBicm90aGVyLgpBbmQgaWYgdGh5IGJyb3RoZXIgYmUgbm90IG5pZ2ggdW50byB0aGVlLCBvciBpZiB0aG91IGtub3cgaGltIG5vdCwgdGhlbiB0aG91IHNoYWx0IGJyaW5nIGl0IHVudG8gdGhpbmUgb3duIGhvdXNlLCBhbmQgaXQgc2hhbGwgYmUgd2l0aCB0aGVlIHVudGlsIHRoeSBicm90aGVyIHNlZWsgYWZ0ZXIgaXQsIGFuZCB0aG91IHNoYWx0IHJlc3RvcmUgaXQgdG8gaGltIGFnYWluLgpJbiBsaWtlIG1hbm5lciBzaGFsdCB0aG91IGRvIHdpdGggaGlzIGFzczsgYW5kIHNvIHNoYWx0IHRob3UgZG8gd2l0aCBoaXMgcmFpbWVudDsgYW5kIHdpdGggYWxsIGxvc3QgdGhpbmcgb2YgdGh5IGJyb3RoZXIncywgd2hpY2ggaGUgaGF0aCBsb3N0LCBhbmQgdGhvdSBoYXN0IGZvdW5kLCBzaGFsdCB0aG91IGRvIGxpa2V3aXNlOiB0aG91IG1heWVzdCBub3QgaGlkZSB0aHlzZWxmLgpUaG91IHNoYWx0IG5vdCBzZWUgdGh5IGJyb3RoZXIncyBhc3Mgb3IgaGlzIG94IGZhbGwgZG93biBieSB0aGUgd2F5LCBhbmQgaGlkZSB0aHlzZWxmIGZyb20gdGhlbTogdGhvdSBzaGFsdCBzdXJlbHkgaGVscCBoaW0gdG8gbGlmdCB0aGVtIHVwIGFnYWluLgpUaGUgd29tYW4gc2hhbGwgbm90IHdlYXIgdGhhdCB3aGljaCBwZXJ0YWluZXRoIHVudG8gYSBtYW4sIG5laXRoZXIgc2hhbGwgYSBtYW4gcHV0IG9uIGEgd29tYW4ncyBnYXJtZW50OiBmb3IgYWxsIHRoYXQgZG8gc28gYXJlIGFib21pbmF0aW9uIHVudG8gdGhlIExPUkQgdGh5IEdvZC4KSWYgYSBiaXJkJ3MgbmVzdCBjaGFuY2UgdG8gYmUgYmVmb3JlIHRoZWUgaW4gdGhlIHdheSBpbiBhbnkgdHJlZSwgb3Igb24gdGhlIGdyb3VuZCwgd2hldGhlciB0aGV5IGJlIHlvdW5nIG9uZXMsIG9yIGVnZ3MsIGFuZCB0aGUgZGFtIHNpdHRpbmcgdXBvbiB0aGUgeW91bmcsIG9yIHVwb24gdGhlIGVnZ3MsIHRob3Ugc2hhbHQgbm90IHRha2UgdGhlIGRhbSB3aXRoIHRoZSB5b3VuZzoKQnV0IHRob3Ugc2hhbHQgaW4gYW55IHdpc2UgbGV0IHRoZSBkYW0gZ28sIGFuZCB0YWtlIHRoZSB5b3VuZyB0byB0aGVlOyB0aGF0IGl0IG1heSBiZSB3ZWxsIHdpdGggdGhlZSwgYW5kIHRoYXQgdGhvdSBtYXllc3QgcHJvbG9uZyB0aHkgZGF5cy4KV2hlbiB0aG91IGJ1aWxkZXN0IGEgbmV3IGhvdXNlLCB0aGVuIHRob3Ugc2hhbHQgbWFrZSBhIGJhdHRsZW1lbnQgZm9yIHRoeSByb29mLCB0aGF0IHRob3UgYnJpbmcgbm90IGJsb29kIHVwb24gdGhpbmUgaG91c2UsIGlmIGFueSBtYW4gZmFsbCBmcm9tIHRoZW5jZS4KVGhvdSBzaGFsdCBub3Qgc293IHRoeSB2aW5leWFyZCB3aXRoIGRpdmVycyBzZWVkczogbGVzdCB0aGUgZnJ1aXQgb2YgdGh5IHNlZWQgd2hpY2ggdGhvdSBoYXN0IHNvd24sIGFuZCB0aGUgZnJ1aXQgb2YgdGh5IHZpbmV5YXJkLCBiZSBkZWZpbGVkLgpUaG91IHNoYWx0IG5vdCBwbG93IHdpdGggYW4gb3ggYW5kIGFuIGFzcyB0b2dldGhlci4KVGhvdSBzaGFsdCBub3Qgd2VhciBhIGdhcm1lbnQgb2YgZGl2ZXJzIHNvcnRzLCBhcyBvZiB3b29sbGVuIGFuZCBsaW5lbiB0b2dldGhlci4KVGhvdSBzaGFsdCBtYWtlIHRoZWUgZnJpbmdlcyB1cG9uIHRoZSBmb3VyIHF1YXJ0ZXJzIG9mIHRoeSB2ZXN0dXJlLCB3aGVyZXdpdGggdGhvdSBjb3ZlcmVzdCB0aHlzZWxmLgpJZiBhbnkgbWFuIHRha2UgYSB3aWZlLCBhbmQgZ28gaW4gdW50byBoZXIsIGFuZCBoYXRlIGhlciwKQW5kIGdpdmUgb2NjYXNpb25zIG9mIHNwZWVjaCBhZ2FpbnN0IGhlciwgYW5kIGJyaW5nIHVwIGFuIGV2aWwgbmFtZSB1cG9uIGhlciwgYW5kIHNheSwgSSB0b29rIHRoaXMgd29tYW4sIGFuZCB3aGVuIEkgY2FtZSB0byBoZXIsIEkgZm91bmQgaGVyIG5vdCBhIG1haWQ6ClRoZW4gc2hhbGwgdGhlIGZhdGhlciBvZiB0aGUgZGFtc2VsLCBhbmQgaGVyIG1vdGhlciwgdGFrZSBhbmQgYnJpbmcgZm9ydGggdGhlIHRva2VucyBvZiB0aGUgZGFtc2VsJ3MgdmlyZ2luaXR5IHVudG8gdGhlIGVsZGVycyBvZiB0aGUgY2l0eSBpbiB0aGUgZ2F0ZToKQW5kIHRoZSBkYW1zZWwncyBmYXRoZXIgc2hhbGwgc2F5IHVudG8gdGhlIGVsZGVycywgSSBnYXZlIG15IGRhdWdodGVyIHVudG8gdGhpcyBtYW4gdG8gd2lmZSwgYW5kIGhlIGhhdGV0aCBoZXI7CkFuZCwgbG8sIGhlIGhhdGggZ2l2ZW4gb2NjYXNpb25zIG9mIHNwZWVjaCBhZ2FpbnN0IGhlciwgc2F5aW5nLCBJIGZvdW5kIG5vdCB0aHkgZGF1Z2h0ZXIgYSBtYWlkOyBhbmQgeWV0IHRoZXNlIGFyZSB0aGUgdG9rZW5zIG9mIG15IGRhdWdodGVyJ3MgdmlyZ2luaXR5LiBBbmQgdGhleSBzaGFsbCBzcHJlYWQgdGhlIGNsb3RoIGJlZm9yZSB0aGUgZWxkZXJzIG9mIHRoZSBjaXR5LgpBbmQgdGhlIGVsZGVycyBvZiB0aGF0IGNpdHkgc2hhbGwgdGFrZSB0aGF0IG1hbiBhbmQgY2hhc3Rpc2UgaGltOwpBbmQgdGhleSBzaGFsbCBhbWVyY2UgaGltIGluIGFuIGh1bmRyZWQgc2hla2VscyBvZiBzaWx2ZXIsIGFuZCBnaXZlIHRoZW0gdW50byB0aGUgZmF0aGVyIG9mIHRoZSBkYW1zZWwsIGJlY2F1c2UgaGUgaGF0aCBicm91Z2h0IHVwIGFuIGV2aWwgbmFtZSB1cG9uIGEgdmlyZ2luIG9mIElzcmFlbDogYW5kIHNoZSBzaGFsbCBiZSBoaXMgd2lmZTsgaGUgbWF5IG5vdCBwdXQgaGVyIGF3YXkgYWxsIGhpcyBkYXlzLgpCdXQgaWYgdGhpcyB0aGluZyBiZSB0cnVlLCBhbmQgdGhlIHRva2VucyBvZiB2aXJnaW5pdHkgYmUgbm90IGZvdW5kIGZvciB0aGUgZGFtc2VsOgpUaGVuIHRoZXkgc2hhbGwgYnJpbmcgb3V0IHRoZSBkYW1zZWwgdG8gdGhlIGRvb3Igb2YgaGVyIGZhdGhlcidzIGhvdXNlLCBhbmQgdGhlIG1lbiBvZiBoZXIgY2l0eSBzaGFsbCBzdG9uZSBoZXIgd2l0aCBzdG9uZXMgdGhhdCBzaGUgZGllOiBiZWNhdXNlIHNoZSBoYXRoIHdyb3VnaHQgZm9sbHkgaW4gSXNyYWVsLCB0byBwbGF5IHRoZSB3aG9yZSBpbiBoZXIgZmF0aGVyJ3MgaG91c2U6IHNvIHNoYWx0IHRob3UgcHV0IGV2aWwgYXdheSBmcm9tIGFtb25nIHlvdS4KSWYgYSBtYW4gYmUgZm91bmQgbHlpbmcgd2l0aCBhIHdvbWFuIG1hcnJpZWQgdG8gYW4gaHVzYmFuZCwgdGhlbiB0aGV5IHNoYWxsIGJvdGggb2YgdGhlbSBkaWUsIGJvdGggdGhlIG1hbiB0aGF0IGxheSB3aXRoIHRoZSB3b21hbiwgYW5kIHRoZSB3b21hbjogc28gc2hhbHQgdGhvdSBwdXQgYXdheSBldmlsIGZyb20gSXNyYWVsLgpJZiBhIGRhbXNlbCB0aGF0IGlzIGEgdmlyZ2luIGJlIGJldHJvdGhlZCB1bnRvIGFuIGh1c2JhbmQsIGFuZCBhIG1hbiBmaW5kIGhlciBpbiB0aGUgY2l0eSwgYW5kIGxpZSB3aXRoIGhlcjsKVGhlbiB5ZSBzaGFsbCBicmluZyB0aGVtIGJvdGggb3V0IHVudG8gdGhlIGdhdGUgb2YgdGhhdCBjaXR5LCBhbmQgeWUgc2hhbGwgc3RvbmUgdGhlbSB3aXRoIHN0b25lcyB0aGF0IHRoZXkgZGllOyB0aGUgZGFtc2VsLCBiZWNhdXNlIHNoZSBjcmllZCBub3QsIGJlaW5nIGluIHRoZSBjaXR5OyBhbmQgdGhlIG1hbiwgYmVjYXVzZSBoZSBoYXRoIGh1bWJsZWQgaGlzIG5laWdoYm91cidzIHdpZmU6IHNvIHRob3Ugc2hhbHQgcHV0IGF3YXkgZXZpbCBmcm9tIGFtb25nIHlvdS4KQnV0IGlmIGEgbWFuIGZpbmQgYSBiZXRyb3RoZWQgZGFtc2VsIGluIHRoZSBmaWVsZCwgYW5kIHRoZSBtYW4gZm9yY2UgaGVyLCBhbmQgbGllIHdpdGggaGVyOiB0aGVuIHRoZSBtYW4gb25seSB0aGF0IGxheSB3aXRoIGhlciBzaGFsbCBkaWUuCkJ1dCB1bnRvIHRoZSBkYW1zZWwgdGhvdSBzaGFsdCBkbyBub3RoaW5nOyB0aGVyZSBpcyBpbiB0aGUgZGFtc2VsIG5vIHNpbiB3b3J0aHkgb2YgZGVhdGg6IGZvciBhcyB3aGVuIGEgbWFuIHJpc2V0aCBhZ2FpbnN0IGhpcyBuZWlnaGJvdXIsIGFuZCBzbGF5ZXRoIGhpbSwgZXZlbiBzbyBpcyB0aGlzIG1hdHRlcjoKRm9yIGhlIGZvdW5kIGhlciBpbiB0aGUgZmllbGQsIGFuZCB0aGUgYmV0cm90aGVkIGRhbXNlbCBjcmllZCwgYW5kIHRoZXJlIHdhcyBub25lIHRvIHNhdmUgaGVyLgpJZiBhIG1hbiBmaW5kIGEgZGFtc2VsIHRoYXQgaXMgYSB2aXJnaW4sIHdoaWNoIGlzIG5vdCBiZXRyb3RoZWQsIGFuZCBsYXkgaG9sZCBvbiBoZXIsIGFuZCBsaWUgd2l0aCBoZXIsIGFuZCB0aGV5IGJlIGZvdW5kOwpUaGVuIHRoZSBtYW4gdGhhdCBsYXkgd2l0aCBoZXIgc2hhbGwgZ2l2ZSB1bnRvIHRoZSBkYW1zZWwncyBmYXRoZXIgZmlmdHkgc2hla2VscyBvZiBzaWx2ZXIsIGFuZCBzaGUgc2hhbGwgYmUgaGlzIHdpZmU7IGJlY2F1c2UgaGUgaGF0aCBodW1ibGVkIGhlciwgaGUgbWF5IG5vdCBwdXQgaGVyIGF3YXkgYWxsIGhpcyBkYXlzLgpBIG1hbiBzaGFsbCBub3QgdGFrZSBoaXMgZmF0aGVyJ3Mgd2lmZSwgbm9yIGRpc2NvdmVyIGhpcyBmYXRoZXIncyBza2lydC4KSGUgdGhhdCBpcyB3b3VuZGVkIGluIHRoZSBzdG9uZXMsIG9yIGhhdGggaGlzIHByaXZ5IG1lbWJlciBjdXQgb2ZmLCBzaGFsbCBub3QgZW50ZXIgaW50byB0aGUgY29uZ3JlZ2F0aW9uIG9mIHRoZSBMT1JELgpBIGJhc3RhcmQgc2hhbGwgbm90IGVudGVyIGludG8gdGhlIGNvbmdyZWdhdGlvbiBvZiB0aGUgTE9SRDsgZXZlbiB0byBoaXMgdGVudGggZ2VuZXJhdGlvbiBzaGFsbCBoZSBub3QgZW50ZXIgaW50byB0aGUgY29uZ3JlZ2F0aW9uIG9mIHRoZSBMT1JELgpBbiBBbW1vbml0ZSBvciBNb2FiaXRlIHNoYWxsIG5vdCBlbnRlciBpbnRvIHRoZSBjb25ncmVnYXRpb24gb2YgdGhlIExPUkQ7IGV2ZW4gdG8gdGhlaXIgdGVudGggZ2VuZXJhdGlvbiBzaGFsbCB0aGV5IG5vdCBlbnRlciBpbnRvIHRoZSBjb25ncmVnYXRpb24gb2YgdGhlIExPUkQgZm9yIGV2ZXI6CkJlY2F1c2UgdGhleSBtZXQgeW91IG5vdCB3aXRoIGJyZWFkIGFuZCB3aXRoIHdhdGVyIGluIHRoZSB3YXksIHdoZW4geWUgY2FtZSBmb3J0aCBvdXQgb2YgRWd5cHQ7IGFuZCBiZWNhdXNlIHRoZXkgaGlyZWQgYWdhaW5zdCB0aGVlIEJhbGFhbSB0aGUgc29uIG9mIEJlb3Igb2YgUGV0aG9yIG9mIE1lc29wb3RhbWlhLCB0byBjdXJzZSB0aGVlLgpOZXZlcnRoZWxlc3MgdGhlIExPUkQgdGh5IEdvZCB3b3VsZCBub3QgaGVhcmtlbiB1bnRvIEJhbGFhbTsgYnV0IHRoZSBMT1JEIHRoeSBHb2QgdHVybmVkIHRoZSBjdXJzZSBpbnRvIGEgYmxlc3NpbmcgdW50byB0aGVlLCBiZWNhdXNlIHRoZSBMT1JEIHRoeSBHb2QgbG92ZWQgdGhlZS4KVGhvdSBzaGFsdCBub3Qgc2VlayB0aGVpciBwZWFjZSBub3IgdGhlaXIgcHJvc3Blcml0eSBhbGwgdGh5IGRheXMgZm9yIGV2ZXIuClRob3Ugc2hhbHQgbm90IGFiaG9yIGFuIEVkb21pdGU7IGZvciBoZSBpcyB0aHkgYnJvdGhlcjogdGhvdSBzaGFsdCBub3QgYWJob3IgYW4gRWd5cHRpYW47IGJlY2F1c2UgdGhvdSB3YXN0IGEgc3RyYW5nZXIgaW4gaGlzIGxhbmQuClRoZSBjaGlsZHJlbiB0aGF0IGFyZSBiZWdvdHRlbiBvZiB0aGVtIHNoYWxsIGVudGVyIGludG8gdGhlIGNvbmdyZWdhdGlvbiBvZiB0aGUgTE9SRCBpbiB0aGVpciB0aGlyZCBnZW5lcmF0aW9uLgpXaGVuIHRoZSBob3N0IGdvZXRoIGZvcnRoIGFnYWluc3QgdGhpbmUgZW5lbWllcywgdGhlbiBrZWVwIHRoZWUgZnJvbSBldmVyeSB3aWNrZWQgdGhpbmcuCklmIHRoZXJlIGJlIGFtb25nIHlvdSBhbnkgbWFuLCB0aGF0IGlzIG5vdCBjbGVhbiBieSByZWFzb24gb2YgdW5jbGVhbm5lc3MgdGhhdCBjaGFuY2V0aCBoaW0gYnkgbmlnaHQsIHRoZW4gc2hhbGwgaGUgZ28gYWJyb2FkIG91dCBvZiB0aGUgY2FtcCwgaGUgc2hhbGwgbm90IGNvbWUgd2l0aGluIHRoZSBjYW1wOgpCdXQgaXQgc2hhbGwgYmUsIHdoZW4gZXZlbmluZyBjb21ldGggb24sIGhlIHNoYWxsIHdhc2ggaGltc2VsZiB3aXRoIHdhdGVyOiBhbmQgd2hlbiB0aGUgc3VuIGlzIGRvd24sIGhlIHNoYWxsIGNvbWUgaW50byB0aGUgY2FtcCBhZ2Fpbi4KVGhvdSBzaGFsdCBoYXZlIGEgcGxhY2UgYWxzbyB3aXRob3V0IHRoZSBjYW1wLCB3aGl0aGVyIHRob3Ugc2hhbHQgZ28gZm9ydGggYWJyb2FkOgpBbmQgdGhvdSBzaGFsdCBoYXZlIGEgcGFkZGxlIHVwb24gdGh5IHdlYXBvbjsgYW5kIGl0IHNoYWxsIGJlLCB3aGVuIHRob3Ugd2lsdCBlYXNlIHRoeXNlbGYgYWJyb2FkLCB0aG91IHNoYWx0IGRpZyB0aGVyZXdpdGgsIGFuZCBzaGFsdCB0dXJuIGJhY2sgYW5kIGNvdmVyIHRoYXQgd2hpY2ggY29tZXRoIGZyb20gdGhlZToKRm9yIHRoZSBMT1JEIHRoeSBHb2Qgd2Fsa2V0aCBpbiB0aGUgbWlkc3Qgb2YgdGh5IGNhbXAsIHRvIGRlbGl2ZXIgdGhlZSwgYW5kIHRvIGdpdmUgdXAgdGhpbmUgZW5lbWllcyBiZWZvcmUgdGhlZTsgdGhlcmVmb3JlIHNoYWxsIHRoeSBjYW1wIGJlIGhvbHk6IHRoYXQgaGUgc2VlIG5vIHVuY2xlYW4gdGhpbmcgaW4gdGhlZSwgYW5kIHR1cm4gYXdheSBmcm9tIHRoZWUuClRob3Ugc2hhbHQgbm90IGRlbGl2ZXIgdW50byBoaXMgbWFzdGVyIHRoZSBzZXJ2YW50IHdoaWNoIGlzIGVzY2FwZWQgZnJvbSBoaXMgbWFzdGVyIHVudG8gdGhlZToKSGUgc2hhbGwgZHdlbGwgd2l0aCB0aGVlLCBldmVuIGFtb25nIHlvdSwgaW4gdGhhdCBwbGFjZSB3aGljaCBoZSBzaGFsbCBjaG9vc2UgaW4gb25lIG9mIHRoeSBnYXRlcywgd2hlcmUgaXQgbGlrZXRoIGhpbSBiZXN0OiB0aG91IHNoYWx0IG5vdCBvcHByZXNzIGhpbS4KVGhlcmUgc2hhbGwgYmUgbm8gd2hvcmUgb2YgdGhlIGRhdWdodGVycyBvZiBJc3JhZWwsIG5vciBhIHNvZG9taXRlIG9mIHRoZSBzb25zIG9mIElzcmFlbC4KVGhvdSBzaGFsdCBub3QgYnJpbmcgdGhlIGhpcmUgb2YgYSB3aG9yZSwgb3IgdGhlIHByaWNlIG9mIGEgZG9nLCBpbnRvIHRoZSBob3VzZSBvZiB0aGUgTE9SRCB0aHkgR29kIGZvciBhbnkgdm93OiBmb3IgZXZlbiBib3RoIHRoZXNlIGFyZSBhYm9taW5hdGlvbiB1bnRvIHRoZSBMT1JEIHRoeSBHb2QuClRob3Ugc2hhbHQgbm90IGxlbmQgdXBvbiB1c3VyeSB0byB0aHkgYnJvdGhlcjsgdXN1cnkgb2YgbW9uZXksIHVzdXJ5IG9mIHZpY3R1YWxzLCB1c3VyeSBvZiBhbnkgdGhpbmcgdGhhdCBpcyBsZW50IHVwb24gdXN1cnk6ClVudG8gYSBzdHJhbmdlciB0aG91IG1heWVzdCBsZW5kIHVwb24gdXN1cnk7IGJ1dCB1bnRvIHRoeSBicm90aGVyIHRob3Ugc2hhbHQgbm90IGxlbmQgdXBvbiB1c3VyeTogdGhhdCB0aGUgTE9SRCB0aHkgR29kIG1heSBibGVzcyB0aGVlIGluIGFsbCB0aGF0IHRob3Ugc2V0dGVzdCB0aGluZSBoYW5kIHRvIGluIHRoZSBsYW5kIHdoaXRoZXIgdGhvdSBnb2VzdCB0byBwb3NzZXNzIGl0LgpXaGVuIHRob3Ugc2hhbHQgdm93IGEgdm93IHVudG8gdGhlIExPUkQgdGh5IEdvZCwgdGhvdSBzaGFsdCBub3Qgc2xhY2sgdG8gcGF5IGl0OiBmb3IgdGhlIExPUkQgdGh5IEdvZCB3aWxsIHN1cmVseSByZXF1aXJlIGl0IG9mIHRoZWU7IGFuZCBpdCB3b3VsZCBiZSBzaW4gaW4gdGhlZS4KQnV0IGlmIHRob3Ugc2hhbHQgZm9yYmVhciB0byB2b3csIGl0IHNoYWxsIGJlIG5vIHNpbiBpbiB0aGVlLgpUaGF0IHdoaWNoIGlzIGdvbmUgb3V0IG9mIHRoeSBsaXBzIHRob3Ugc2hhbHQga2VlcCBhbmQgcGVyZm9ybTsgZXZlbiBhIGZyZWV3aWxsIG9mZmVyaW5nLCBhY2NvcmRpbmcgYXMgdGhvdSBoYXN0IHZvd2VkIHVudG8gdGhlIExPUkQgdGh5IEdvZCwgd2hpY2ggdGhvdSBoYXN0IHByb21pc2VkIHdpdGggdGh5IG1vdXRoLgpXaGVuIHRob3UgY29tZXN0IGludG8gdGh5IG5laWdoYm91cidzIHZpbmV5YXJkLCB0aGVuIHRob3UgbWF5ZXN0IGVhdCBncmFwZXMgdGh5IGZpbGwgYXQgdGhpbmUgb3duIHBsZWFzdXJlOyBidXQgdGhvdSBzaGFsdCBub3QgcHV0IGFueSBpbiB0aHkgdmVzc2VsLgpXaGVuIHRob3UgY29tZXN0IGludG8gdGhlIHN0YW5kaW5nIGNvcm4gb2YgdGh5IG5laWdoYm91ciwgdGhlbiB0aG91IG1heWVzdCBwbHVjayB0aGUgZWFycyB3aXRoIHRoaW5lIGhhbmQ7IGJ1dCB0aG91IHNoYWx0IG5vdCBtb3ZlIGEgc2lja2xlIHVudG8gdGh5IG5laWdoYm91cidzIHN0YW5kaW5nIGNvcm4uCldoZW4gYSBtYW4gaGF0aCB0YWtlbiBhIHdpZmUsIGFuZCBtYXJyaWVkIGhlciwgYW5kIGl0IGNvbWUgdG8gcGFzcyB0aGF0IHNoZSBmaW5kIG5vIGZhdm91ciBpbiBoaXMgZXllcywgYmVjYXVzZSBoZSBoYXRoIGZvdW5kIHNvbWUgdW5jbGVhbm5lc3MgaW4gaGVyOiB0aGVuIGxldCBoaW0gd3JpdGUgaGVyIGEgYmlsbCBvZiBkaXZvcmNlbWVudCwgYW5kIGdpdmUgaXQgaW4gaGVyIGhhbmQsIGFuZCBzZW5kIGhlciBvdXQgb2YgaGlzIGhvdXNlLgpBbmQgd2hlbiBzaGUgaXMgZGVwYXJ0ZWQgb3V0IG9mIGhpcyBob3VzZSwgc2hlIG1heSBnbyBhbmQgYmUgYW5vdGhlciBtYW4ncyB3aWZlLgpBbmQgaWYgdGhlIGxhdHRlciBodXNiYW5kIGhhdGUgaGVyLCBhbmQgd3JpdGUgaGVyIGEgYmlsbCBvZiBkaXZvcmNlbWVudCwgYW5kIGdpdmV0aCBpdCBpbiBoZXIgaGFuZCwgYW5kIHNlbmRldGggaGVyIG91dCBvZiBoaXMgaG91c2U7IG9yIGlmIHRoZSBsYXR0ZXIgaHVzYmFuZCBkaWUsIHdoaWNoIHRvb2sgaGVyIHRvIGJlIGhpcyB3aWZlOwpIZXIgZm9ybWVyIGh1c2JhbmQsIHdoaWNoIHNlbnQgaGVyIGF3YXksIG1heSBub3QgdGFrZSBoZXIgYWdhaW4gdG8gYmUgaGlzIHdpZmUsIGFmdGVyIHRoYXQgc2hlIGlzIGRlZmlsZWQ7IGZvciB0aGF0IGlzIGFib21pbmF0aW9uIGJlZm9yZSB0aGUgTE9SRDogYW5kIHRob3Ugc2hhbHQgbm90IGNhdXNlIHRoZSBsYW5kIHRvIHNpbiwgd2hpY2ggdGhlIExPUkQgdGh5IEdvZCBnaXZldGggdGhlZSBmb3IgYW4gaW5oZXJpdGFuY2UuCldoZW4gYSBtYW4gaGF0aCB0YWtlbiBhIG5ldyB3aWZlLCBoZSBzaGFsbCBub3QgZ28gb3V0IHRvIHdhciwgbmVpdGhlciBzaGFsbCBoZSBiZSBjaGFyZ2VkIHdpdGggYW55IGJ1c2luZXNzOiBidXQgaGUgc2hhbGwgYmUgZnJlZSBhdCBob21lIG9uZSB5ZWFyLCBhbmQgc2hhbGwgY2hlZXIgdXAgaGlzIHdpZmUgd2hpY2ggaGUgaGF0aCB0YWtlbi4KTm8gbWFuIHNoYWxsIHRha2UgdGhlIG5ldGhlciBvciB0aGUgdXBwZXIgbWlsbHN0b25lIHRvIHBsZWRnZTogZm9yIGhlIHRha2V0aCBhIG1hbidzIGxpZmUgdG8gcGxlZGdlLgpJZiBhIG1hbiBiZSBmb3VuZCBzdGVhbGluZyBhbnkgb2YgaGlzIGJyZXRocmVuIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIGFuZCBtYWtldGggbWVyY2hhbmRpc2Ugb2YgaGltLCBvciBzZWxsZXRoIGhpbTsgdGhlbiB0aGF0IHRoaWVmIHNoYWxsIGRpZTsgYW5kIHRob3Ugc2hhbHQgcHV0IGV2aWwgYXdheSBmcm9tIGFtb25nIHlvdS4KVGFrZSBoZWVkIGluIHRoZSBwbGFndWUgb2YgbGVwcm9zeSwgdGhhdCB0aG91IG9ic2VydmUgZGlsaWdlbnRseSwgYW5kIGRvIGFjY29yZGluZyB0byBhbGwgdGhhdCB0aGUgcHJpZXN0cyB0aGUgTGV2aXRlcyBzaGFsbCB0ZWFjaCB5b3U6IGFzIEkgY29tbWFuZGVkIHRoZW0sIHNvIHllIHNoYWxsIG9ic2VydmUgdG8gZG8uClJlbWVtYmVyIHdoYXQgdGhlIExPUkQgdGh5IEdvZCBkaWQgdW50byBNaXJpYW0gYnkgdGhlIHdheSwgYWZ0ZXIgdGhhdCB5ZSB3ZXJlIGNvbWUgZm9ydGggb3V0IG9mIEVneXB0LgpXaGVuIHRob3UgZG9zdCBsZW5kIHRoeSBicm90aGVyIGFueSB0aGluZywgdGhvdSBzaGFsdCBub3QgZ28gaW50byBoaXMgaG91c2UgdG8gZmV0Y2ggaGlzIHBsZWRnZS4KVGhvdSBzaGFsdCBzdGFuZCBhYnJvYWQsIGFuZCB0aGUgbWFuIHRvIHdob20gdGhvdSBkb3N0IGxlbmQgc2hhbGwgYnJpbmcgb3V0IHRoZSBwbGVkZ2UgYWJyb2FkIHVudG8gdGhlZS4KQW5kIGlmIHRoZSBtYW4gYmUgcG9vciwgdGhvdSBzaGFsdCBub3Qgc2xlZXAgd2l0aCBoaXMgcGxlZGdlOgpJbiBhbnkgY2FzZSB0aG91IHNoYWx0IGRlbGl2ZXIgaGltIHRoZSBwbGVkZ2UgYWdhaW4gd2hlbiB0aGUgc3VuIGdvZXRoIGRvd24sIHRoYXQgaGUgbWF5IHNsZWVwIGluIGhpcyBvd24gcmFpbWVudCwgYW5kIGJsZXNzIHRoZWU6IGFuZCBpdCBzaGFsbCBiZSByaWdodGVvdXNuZXNzIHVudG8gdGhlZSBiZWZvcmUgdGhlIExPUkQgdGh5IEdvZC4KVGhvdSBzaGFsdCBub3Qgb3BwcmVzcyBhbiBoaXJlZCBzZXJ2YW50IHRoYXQgaXMgcG9vciBhbmQgbmVlZHksIHdoZXRoZXIgaGUgYmUgb2YgdGh5IGJyZXRocmVuLCBvciBvZiB0aHkgc3RyYW5nZXJzIHRoYXQgYXJlIGluIHRoeSBsYW5kIHdpdGhpbiB0aHkgZ2F0ZXM6CkF0IGhpcyBkYXkgdGhvdSBzaGFsdCBnaXZlIGhpbSBoaXMgaGlyZSwgbmVpdGhlciBzaGFsbCB0aGUgc3VuIGdvIGRvd24gdXBvbiBpdDsgZm9yIGhlIGlzIHBvb3IsIGFuZCBzZXR0ZXRoIGhpcyBoZWFydCB1cG9uIGl0OiBsZXN0IGhlIGNyeSBhZ2FpbnN0IHRoZWUgdW50byB0aGUgTE9SRCwgYW5kIGl0IGJlIHNpbiB1bnRvIHRoZWUuClRoZSBmYXRoZXJzIHNoYWxsIG5vdCBiZSBwdXQgdG8gZGVhdGggZm9yIHRoZSBjaGlsZHJlbiwgbmVpdGhlciBzaGFsbCB0aGUgY2hpbGRyZW4gYmUgcHV0IHRvIGRlYXRoIGZvciB0aGUgZmF0aGVyczogZXZlcnkgbWFuIHNoYWxsIGJlIHB1dCB0byBkZWF0aCBmb3IgaGlzIG93biBzaW4uClRob3Ugc2hhbHQgbm90IHBlcnZlcnQgdGhlIGp1ZGdtZW50IG9mIHRoZSBzdHJhbmdlciwgbm9yIG9mIHRoZSBmYXRoZXJsZXNzOyBub3IgdGFrZSBhIHdpZG93J3MgcmFpbWVudCB0byBwbGVkZ2U6CkJ1dCB0aG91IHNoYWx0IHJlbWVtYmVyIHRoYXQgdGhvdSB3YXN0IGEgYm9uZG1hbiBpbiBFZ3lwdCwgYW5kIHRoZSBMT1JEIHRoeSBHb2QgcmVkZWVtZWQgdGhlZSB0aGVuY2U6IHRoZXJlZm9yZSBJIGNvbW1hbmQgdGhlZSB0byBkbyB0aGlzIHRoaW5nLgpXaGVuIHRob3UgY3V0dGVzdCBkb3duIHRoaW5lIGhhcnZlc3QgaW4gdGh5IGZpZWxkLCBhbmQgaGFzdCBmb3Jnb3QgYSBzaGVhZiBpbiB0aGUgZmllbGQsIHRob3Ugc2hhbHQgbm90IGdvIGFnYWluIHRvIGZldGNoIGl0OiBpdCBzaGFsbCBiZSBmb3IgdGhlIHN0cmFuZ2VyLCBmb3IgdGhlIGZhdGhlcmxlc3MsIGFuZCBmb3IgdGhlIHdpZG93OiB0aGF0IHRoZSBMT1JEIHRoeSBHb2QgbWF5IGJsZXNzIHRoZWUgaW4gYWxsIHRoZSB3b3JrIG9mIHRoaW5lIGhhbmRzLgpXaGVuIHRob3UgYmVhdGVzdCB0aGluZSBvbGl2ZSB0cmVlLCB0aG91IHNoYWx0IG5vdCBnbyBvdmVyIHRoZSBib3VnaHMgYWdhaW46IGl0IHNoYWxsIGJlIGZvciB0aGUgc3RyYW5nZXIsIGZvciB0aGUgZmF0aGVybGVzcywgYW5kIGZvciB0aGUgd2lkb3cuCldoZW4gdGhvdSBnYXRoZXJlc3QgdGhlIGdyYXBlcyBvZiB0aHkgdmluZXlhcmQsIHRob3Ugc2hhbHQgbm90IGdsZWFuIGl0IGFmdGVyd2FyZDogaXQgc2hhbGwgYmUgZm9yIHRoZSBzdHJhbmdlciwgZm9yIHRoZSBmYXRoZXJsZXNzLCBhbmQgZm9yIHRoZSB3aWRvdy4KQW5kIHRob3Ugc2hhbHQgcmVtZW1iZXIgdGhhdCB0aG91IHdhc3QgYSBib25kbWFuIGluIHRoZSBsYW5kIG9mIEVneXB0OiB0aGVyZWZvcmUgSSBjb21tYW5kIHRoZWUgdG8gZG8gdGhpcyB0aGluZy4KSWYgdGhlcmUgYmUgYSBjb250cm92ZXJzeSBiZXR3ZWVuIG1lbiwgYW5kIHRoZXkgY29tZSB1bnRvIGp1ZGdtZW50LCB0aGF0IHRoZSBqdWRnZXMgbWF5IGp1ZGdlIHRoZW07IHRoZW4gdGhleSBzaGFsbCBqdXN0aWZ5IHRoZSByaWdodGVvdXMsIGFuZCBjb25kZW1uIHRoZSB3aWNrZWQuCkFuZCBpdCBzaGFsbCBiZSwgaWYgdGhlIHdpY2tlZCBtYW4gYmUgd29ydGh5IHRvIGJlIGJlYXRlbiwgdGhhdCB0aGUganVkZ2Ugc2hhbGwgY2F1c2UgaGltIHRvIGxpZSBkb3duLCBhbmQgdG8gYmUgYmVhdGVuIGJlZm9yZSBoaXMgZmFjZSwgYWNjb3JkaW5nIHRvIGhpcyBmYXVsdCwgYnkgYSBjZXJ0YWluIG51bWJlci4KRm9ydHkgc3RyaXBlcyBoZSBtYXkgZ2l2ZSBoaW0sIGFuZCBub3QgZXhjZWVkOiBsZXN0LCBpZiBoZSBzaG91bGQgZXhjZWVkLCBhbmQgYmVhdCBoaW0gYWJvdmUgdGhlc2Ugd2l0aCBtYW55IHN0cmlwZXMsIHRoZW4gdGh5IGJyb3RoZXIgc2hvdWxkIHNlZW0gdmlsZSB1bnRvIHRoZWUuClRob3Ugc2hhbHQgbm90IG11enpsZSB0aGUgb3ggd2hlbiBoZSB0cmVhZGV0aCBvdXQgdGhlIGNvcm4uCklmIGJyZXRocmVuIGR3ZWxsIHRvZ2V0aGVyLCBhbmQgb25lIG9mIHRoZW0gZGllLCBhbmQgaGF2ZSBubyBjaGlsZCwgdGhlIHdpZmUgb2YgdGhlIGRlYWQgc2hhbGwgbm90IG1hcnJ5IHdpdGhvdXQgdW50byBhIHN0cmFuZ2VyOiBoZXIgaHVzYmFuZCdzIGJyb3RoZXIgc2hhbGwgZ28gaW4gdW50byBoZXIsIGFuZCB0YWtlIGhlciB0byBoaW0gdG8gd2lmZSwgYW5kIHBlcmZvcm0gdGhlIGR1dHkgb2YgYW4gaHVzYmFuZCdzIGJyb3RoZXIgdW50byBoZXIuCkFuZCBpdCBzaGFsbCBiZSwgdGhhdCB0aGUgZmlyc3Rib3JuIHdoaWNoIHNoZSBiZWFyZXRoIHNoYWxsIHN1Y2NlZWQgaW4gdGhlIG5hbWUgb2YgaGlzIGJyb3RoZXIgd2hpY2ggaXMgZGVhZCwgdGhhdCBoaXMgbmFtZSBiZSBub3QgcHV0IG91dCBvZiBJc3JhZWwuCkFuZCBpZiB0aGUgbWFuIGxpa2Ugbm90IHRvIHRha2UgaGlzIGJyb3RoZXIncyB3aWZlLCB0aGVuIGxldCBoaXMgYnJvdGhlcidzIHdpZmUgZ28gdXAgdG8gdGhlIGdhdGUgdW50byB0aGUgZWxkZXJzLCBhbmQgc2F5LCBNeSBodXNiYW5kJ3MgYnJvdGhlciByZWZ1c2V0aCB0byByYWlzZSB1cCB1bnRvIGhpcyBicm90aGVyIGEgbmFtZSBpbiBJc3JhZWwsIGhlIHdpbGwgbm90IHBlcmZvcm0gdGhlIGR1dHkgb2YgbXkgaHVzYmFuZCdzIGJyb3RoZXIuClRoZW4gdGhlIGVsZGVycyBvZiBoaXMgY2l0eSBzaGFsbCBjYWxsIGhpbSwgYW5kIHNwZWFrIHVudG8gaGltOiBhbmQgaWYgaGUgc3RhbmQgdG8gaXQsIGFuZCBzYXksIEkgbGlrZSBub3QgdG8gdGFrZSBoZXI7ClRoZW4gc2hhbGwgaGlzIGJyb3RoZXIncyB3aWZlIGNvbWUgdW50byBoaW0gaW4gdGhlIHByZXNlbmNlIG9mIHRoZSBlbGRlcnMsIGFuZCBsb29zZSBoaXMgc2hvZSBmcm9tIG9mZiBoaXMgZm9vdCwgYW5kIHNwaXQgaW4gaGlzIGZhY2UsIGFuZCBzaGFsbCBhbnN3ZXIgYW5kIHNheSwgU28gc2hhbGwgaXQgYmUgZG9uZSB1bnRvIHRoYXQgbWFuIHRoYXQgd2lsbCBub3QgYnVpbGQgdXAgaGlzIGJyb3RoZXIncyBob3VzZS4KQW5kIGhpcyBuYW1lIHNoYWxsIGJlIGNhbGxlZCBpbiBJc3JhZWwsIFRoZSBob3VzZSBvZiBoaW0gdGhhdCBoYXRoIGhpcyBzaG9lIGxvb3NlZC4KV2hlbiBtZW4gc3RyaXZlIHRvZ2V0aGVyIG9uZSB3aXRoIGFub3RoZXIsIGFuZCB0aGUgd2lmZSBvZiB0aGUgb25lIGRyYXdldGggbmVhciBmb3IgdG8gZGVsaXZlciBoZXIgaHVzYmFuZCBvdXQgb2YgdGhlIGhhbmQgb2YgaGltIHRoYXQgc21pdGV0aCBoaW0sIGFuZCBwdXR0ZXRoIGZvcnRoIGhlciBoYW5kLCBhbmQgdGFrZXRoIGhpbSBieSB0aGUgc2VjcmV0czoKVGhlbiB0aG91IHNoYWx0IGN1dCBvZmYgaGVyIGhhbmQsIHRoaW5lIGV5ZSBzaGFsbCBub3QgcGl0eSBoZXIuClRob3Ugc2hhbHQgbm90IGhhdmUgaW4gdGh5IGJhZyBkaXZlcnMgd2VpZ2h0cywgYSBncmVhdCBhbmQgYSBzbWFsbC4KVGhvdSBzaGFsdCBub3QgaGF2ZSBpbiB0aGluZSBob3VzZSBkaXZlcnMgbWVhc3VyZXMsIGEgZ3JlYXQgYW5kIGEgc21hbGwuCkJ1dCB0aG91IHNoYWx0IGhhdmUgYSBwZXJmZWN0IGFuZCBqdXN0IHdlaWdodCwgYSBwZXJmZWN0IGFuZCBqdXN0IG1lYXN1cmUgc2hhbHQgdGhvdSBoYXZlOiB0aGF0IHRoeSBkYXlzIG1heSBiZSBsZW5ndGhlbmVkIGluIHRoZSBsYW5kIHdoaWNoIHRoZSBMT1JEIHRoeSBHb2QgZ2l2ZXRoIHRoZWUuCkZvciBhbGwgdGhhdCBkbyBzdWNoIHRoaW5ncywgYW5kIGFsbCB0aGF0IGRvIHVucmlnaHRlb3VzbHksIGFyZSBhbiBhYm9taW5hdGlvbiB1bnRvIHRoZSBMT1JEIHRoeSBHb2QuClJlbWVtYmVyIHdoYXQgQW1hbGVrIGRpZCB1bnRvIHRoZWUgYnkgdGhlIHdheSwgd2hlbiB5ZSB3ZXJlIGNvbWUgZm9ydGggb3V0IG9mIEVneXB0OwpIb3cgaGUgbWV0IHRoZWUgYnkgdGhlIHdheSwgYW5kIHNtb3RlIHRoZSBoaW5kbW9zdCBvZiB0aGVlLCBldmVuIGFsbCB0aGF0IHdlcmUgZmVlYmxlIGJlaGluZCB0aGVlLCB3aGVuIHRob3Ugd2FzdCBmYWludCBhbmQgd2Vhcnk7IGFuZCBoZSBmZWFyZWQgbm90IEdvZC4KVGhlcmVmb3JlIGl0IHNoYWxsIGJlLCB3aGVuIHRoZSBMT1JEIHRoeSBHb2QgaGF0aCBnaXZlbiB0aGVlIHJlc3QgZnJvbSBhbGwgdGhpbmUgZW5lbWllcyByb3VuZCBhYm91dCwgaW4gdGhlIGxhbmQgd2hpY2ggdGhlIExPUkQgdGh5IEdvZCBnaXZldGggdGhlZSBmb3IgYW4gaW5oZXJpdGFuY2UgdG8gcG9zc2VzcyBpdCwgdGhhdCB0aG91IHNoYWx0IGJsb3Qgb3V0IHRoZSByZW1lbWJyYW5jZSBvZiBBbWFsZWsgZnJvbSB1bmRlciBoZWF2ZW47IHRob3Ugc2hhbHQgbm90IGZvcmdldCBpdC4KQW5kIGl0IHNoYWxsIGJlLCB3aGVuIHRob3UgYXJ0IGNvbWUgaW4gdW50byB0aGUgbGFuZCB3aGljaCB0aGUgTE9SRCB0aHkgR29kIGdpdmV0aCB0aGVlIGZvciBhbiBpbmhlcml0YW5jZSwgYW5kIHBvc3Nlc3Nlc3QgaXQsIGFuZCBkd2VsbGVzdCB0aGVyZWluOwpUaGF0IHRob3Ugc2hhbHQgdGFrZSBvZiB0aGUgZmlyc3Qgb2YgYWxsIHRoZSBmcnVpdCBvZiB0aGUgZWFydGgsIHdoaWNoIHRob3Ugc2hhbHQgYnJpbmcgb2YgdGh5IGxhbmQgdGhhdCB0aGUgTE9SRCB0aHkgR29kIGdpdmV0aCB0aGVlLCBhbmQgc2hhbHQgcHV0IGl0IGluIGEgYmFza2V0LCBhbmQgc2hhbHQgZ28gdW50byB0aGUgcGxhY2Ugd2hpY2ggdGhlIExPUkQgdGh5IEdvZCBzaGFsbCBjaG9vc2UgdG8gcGxhY2UgaGlzIG5hbWUgdGhlcmUuCkFuZCB0aG91IHNoYWx0IGdvIHVudG8gdGhlIHByaWVzdCB0aGF0IHNoYWxsIGJlIGluIHRob3NlIGRheXMsIGFuZCBzYXkgdW50byBoaW0sIEkgcHJvZmVzcyB0aGlzIGRheSB1bnRvIHRoZSBMT1JEIHRoeSBHb2QsIHRoYXQgSSBhbSBjb21lIHVudG8gdGhlIGNvdW50cnkgd2hpY2ggdGhlIExPUkQgc3dhcmUgdW50byBvdXIgZmF0aGVycyBmb3IgdG8gZ2l2ZSB1cy4KQW5kIHRoZSBwcmllc3Qgc2hhbGwgdGFrZSB0aGUgYmFza2V0IG91dCBvZiB0aGluZSBoYW5kLCBhbmQgc2V0IGl0IGRvd24gYmVmb3JlIHRoZSBhbHRhciBvZiB0aGUgTE9SRCB0aHkgR29kLgpBbmQgdGhvdSBzaGFsdCBzcGVhayBhbmQgc2F5IGJlZm9yZSB0aGUgTE9SRCB0aHkgR29kLCBBIFN5cmlhbiByZWFkeSB0byBwZXJpc2ggd2FzIG15IGZhdGhlciwgYW5kIGhlIHdlbnQgZG93biBpbnRvIEVneXB0LCBhbmQgc29qb3VybmVkIHRoZXJlIHdpdGggYSBmZXcsIGFuZCBiZWNhbWUgdGhlcmUgYSBuYXRpb24sIGdyZWF0LCBtaWdodHksIGFuZCBwb3B1bG91czoKQW5kIHRoZSBFZ3lwdGlhbnMgZXZpbCBlbnRyZWF0ZWQgdXMsIGFuZCBhZmZsaWN0ZWQgdXMsIGFuZCBsYWlkIHVwb24gdXMgaGFyZCBib25kYWdlOgpBbmQgd2hlbiB3ZSBjcmllZCB1bnRvIHRoZSBMT1JEIEdvZCBvZiBvdXIgZmF0aGVycywgdGhlIExPUkQgaGVhcmQgb3VyIHZvaWNlLCBhbmQgbG9va2VkIG9uIG91ciBhZmZsaWN0aW9uLCBhbmQgb3VyIGxhYm91ciwgYW5kIG91ciBvcHByZXNzaW9uOgpBbmQgdGhlIExPUkQgYnJvdWdodCB1cyBmb3J0aCBvdXQgb2YgRWd5cHQgd2l0aCBhIG1pZ2h0eSBoYW5kLCBhbmQgd2l0aCBhbiBvdXRzdHJldGNoZWQgYXJtLCBhbmQgd2l0aCBncmVhdCB0ZXJyaWJsZW5lc3MsIGFuZCB3aXRoIHNpZ25zLCBhbmQgd2l0aCB3b25kZXJzOgpBbmQgaGUgaGF0aCBicm91Z2h0IHVzIGludG8gdGhpcyBwbGFjZSwgYW5kIGhhdGggZ2l2ZW4gdXMgdGhpcyBsYW5kLCBldmVuIGEgbGFuZCB0aGF0IGZsb3dldGggd2l0aCBtaWxrIGFuZCBob25leS4KQW5kIG5vdywgYmVob2xkLCBJIGhhdmUgYnJvdWdodCB0aGUgZmlyc3RmcnVpdHMgb2YgdGhlIGxhbmQsIHdoaWNoIHRob3UsIE8gTE9SRCwgaGFzdCBnaXZlbiBtZS4gQW5kIHRob3Ugc2hhbHQgc2V0IGl0IGJlZm9yZSB0aGUgTE9SRCB0aHkgR29kLCBhbmQgd29yc2hpcCBiZWZvcmUgdGhlIExPUkQgdGh5IEdvZDoKQW5kIHRob3Ugc2hhbHQgcmVqb2ljZSBpbiBldmVyeSBnb29kIHRoaW5nIHdoaWNoIHRoZSBMT1JEIHRoeSBHb2QgaGF0aCBnaXZlbiB1bnRvIHRoZWUsIGFuZCB1bnRvIHRoaW5lIGhvdXNlLCB0aG91LCBhbmQgdGhlIExldml0ZSwgYW5kIHRoZSBzdHJhbmdlciB0aGF0IGlzIGFtb25nIHlvdS4KV2hlbiB0aG91IGhhc3QgbWFkZSBhbiBlbmQgb2YgdGl0aGluZyBhbGwgdGhlIHRpdGhlcyBvZiB0aGluZSBpbmNyZWFzZSB0aGUgdGhpcmQgeWVhciwgd2hpY2ggaXMgdGhlIHllYXIgb2YgdGl0aGluZywgYW5kIGhhc3QgZ2l2ZW4gaXQgdW50byB0aGUgTGV2aXRlLCB0aGUgc3RyYW5nZXIsIHRoZSBmYXRoZXJsZXNzLCBhbmQgdGhlIHdpZG93LCB0aGF0IHRoZXkgbWF5IGVhdCB3aXRoaW4gdGh5IGdhdGVzLCBhbmQgYmUgZmlsbGVkOwpUaGVuIHRob3Ugc2hhbHQgc2F5IGJlZm9yZSB0aGUgTE9SRCB0aHkgR29kLCBJIGhhdmUgYnJvdWdodCBhd2F5IHRoZSBoYWxsb3dlZCB0aGluZ3Mgb3V0IG9mIG1pbmUgaG91c2UsIGFuZCBhbHNvIGhhdmUgZ2l2ZW4gdGhlbSB1bnRvIHRoZSBMZXZpdGUsIGFuZCB1bnRvIHRoZSBzdHJhbmdlciwgdG8gdGhlIGZhdGhlcmxlc3MsIGFuZCB0byB0aGUgd2lkb3csIGFjY29yZGluZyB0byBhbGwgdGh5IGNvbW1hbmRtZW50cyB3aGljaCB0aG91IGhhc3QgY29tbWFuZGVkIG1lOiBJIGhhdmUgbm90IHRyYW5zZ3Jlc3NlZCB0aHkgY29tbWFuZG1lbnRzLCBuZWl0aGVyIGhhdmUgSSBmb3Jnb3R0ZW4gdGhlbS4KSSBoYXZlIG5vdCBlYXRlbiB0aGVyZW9mIGluIG15IG1vdXJuaW5nLCBuZWl0aGVyIGhhdmUgSSB0YWtlbiBhd2F5IG91Z2h0IHRoZXJlb2YgZm9yIGFueSB1bmNsZWFuIHVzZSwgbm9yIGdpdmVuIG91Z2h0IHRoZXJlb2YgZm9yIHRoZSBkZWFkOiBidXQgSSBoYXZlIGhlYXJrZW5lZCB0byB0aGUgdm9pY2Ugb2YgdGhlIExPUkQgbXkgR29kLCBhbmQgaGF2ZSBkb25lIGFjY29yZGluZyB0byBhbGwgdGhhdCB0aG91IGhhc3QgY29tbWFuZGVkIG1lLgpMb29rIGRvd24gZnJvbSB0aHkgaG9seSBoYWJpdGF0aW9uLCBmcm9tIGhlYXZlbiwgYW5kIGJsZXNzIHRoeSBwZW9wbGUgSXNyYWVsLCBhbmQgdGhlIGxhbmQgd2hpY2ggdGhvdSBoYXN0IGdpdmVuIHVzLCBhcyB0aG91IHN3YXJlc3QgdW50byBvdXIgZmF0aGVycywgYSBsYW5kIHRoYXQgZmxvd2V0aCB3aXRoIG1pbGsgYW5kIGhvbmV5LgpUaGlzIGRheSB0aGUgTE9SRCB0aHkgR29kIGhhdGggY29tbWFuZGVkIHRoZWUgdG8gZG8gdGhlc2Ugc3RhdHV0ZXMgYW5kIGp1ZGdtZW50czogdGhvdSBzaGFsdCB0aGVyZWZvcmUga2VlcCBhbmQgZG8gdGhlbSB3aXRoIGFsbCB0aGluZSBoZWFydCwgYW5kIHdpdGggYWxsIHRoeSBzb3VsLgpUaG91IGhhc3QgYXZvdWNoZWQgdGhlIExPUkQgdGhpcyBkYXkgdG8gYmUgdGh5IEdvZCwgYW5kIHRvIHdhbGsgaW4gaGlzIHdheXMsIGFuZCB0byBrZWVwIGhpcyBzdGF0dXRlcywgYW5kIGhpcyBjb21tYW5kbWVudHMsIGFuZCBoaXMganVkZ21lbnRzLCBhbmQgdG8gaGVhcmtlbiB1bnRvIGhpcyB2b2ljZToKQW5kIHRoZSBMT1JEIGhhdGggYXZvdWNoZWQgdGhlZSB0aGlzIGRheSB0byBiZSBoaXMgcGVjdWxpYXIgcGVvcGxlLCBhcyBoZSBoYXRoIHByb21pc2VkIHRoZWUsIGFuZCB0aGF0IHRob3Ugc2hvdWxkZXN0IGtlZXAgYWxsIGhpcyBjb21tYW5kbWVudHM7CkFuZCB0byBtYWtlIHRoZWUgaGlnaCBhYm92ZSBhbGwgbmF0aW9ucyB3aGljaCBoZSBoYXRoIG1hZGUsIGluIHByYWlzZSwgYW5kIGluIG5hbWUsIGFuZCBpbiBob25vdXI7IGFuZCB0aGF0IHRob3UgbWF5ZXN0IGJlIGFuIGhvbHkgcGVvcGxlIHVudG8gdGhlIExPUkQgdGh5IEdvZCwgYXMgaGUgaGF0aCBzcG9rZW4uCkFuZCBNb3NlcyB3aXRoIHRoZSBlbGRlcnMgb2YgSXNyYWVsIGNvbW1hbmRlZCB0aGUgcGVvcGxlLCBzYXlpbmcsIEtlZXAgYWxsIHRoZSBjb21tYW5kbWVudHMgd2hpY2ggSSBjb21tYW5kIHlvdSB0aGlzIGRheS4KQW5kIGl0IHNoYWxsIGJlIG9uIHRoZSBkYXkgd2hlbiB5ZSBzaGFsbCBwYXNzIG92ZXIgSm9yZGFuIHVudG8gdGhlIGxhbmQgd2hpY2ggdGhlIExPUkQgdGh5IEdvZCBnaXZldGggdGhlZSwgdGhhdCB0aG91IHNoYWx0IHNldCB0aGVlIHVwIGdyZWF0IHN0b25lcywgYW5kIHBsYWlzdGVyIHRoZW0gd2l0aCBwbGFpc3RlcjoKQW5kIHRob3Ugc2hhbHQgd3JpdGUgdXBvbiB0aGVtIGFsbCB0aGUgd29yZHMgb2YgdGhpcyBsYXcsIHdoZW4gdGhvdSBhcnQgcGFzc2VkIG92ZXIsIHRoYXQgdGhvdSBtYXllc3QgZ28gaW4gdW50byB0aGUgbGFuZCB3aGljaCB0aGUgTE9SRCB0aHkgR29kIGdpdmV0aCB0aGVlLCBhIGxhbmQgdGhhdCBmbG93ZXRoIHdpdGggbWlsayBhbmQgaG9uZXk7IGFzIHRoZSBMT1JEIEdvZCBvZiB0aHkgZmF0aGVycyBoYXRoIHByb21pc2VkIHRoZWUuClRoZXJlZm9yZSBpdCBzaGFsbCBiZSB3aGVuIHllIGJlIGdvbmUgb3ZlciBKb3JkYW4sIHRoYXQgeWUgc2hhbGwgc2V0IHVwIHRoZXNlIHN0b25lcywgd2hpY2ggSSBjb21tYW5kIHlvdSB0aGlzIGRheSwgaW4gbW91bnQgRWJhbCwgYW5kIHRob3Ugc2hhbHQgcGxhaXN0ZXIgdGhlbSB3aXRoIHBsYWlzdGVyLgpBbmQgdGhlcmUgc2hhbHQgdGhvdSBidWlsZCBhbiBhbHRhciB1bnRvIHRoZSBMT1JEIHRoeSBHb2QsIGFuIGFsdGFyIG9mIHN0b25lczogdGhvdSBzaGFsdCBub3QgbGlmdCB1cCBhbnkgaXJvbiB0b29sIHVwb24gdGhlbS4KVGhvdSBzaGFsdCBidWlsZCB0aGUgYWx0YXIgb2YgdGhlIExPUkQgdGh5IEdvZCBvZiB3aG9sZSBzdG9uZXM6IGFuZCB0aG91IHNoYWx0IG9mZmVyIGJ1cm50IG9mZmVyaW5ncyB0aGVyZW9uIHVudG8gdGhlIExPUkQgdGh5IEdvZDoKQW5kIHRob3Ugc2hhbHQgb2ZmZXIgcGVhY2Ugb2ZmZXJpbmdzLCBhbmQgc2hhbHQgZWF0IHRoZXJlLCBhbmQgcmVqb2ljZSBiZWZvcmUgdGhlIExPUkQgdGh5IEdvZC4KQW5kIHRob3Ugc2hhbHQgd3JpdGUgdXBvbiB0aGUgc3RvbmVzIGFsbCB0aGUgd29yZHMgb2YgdGhpcyBsYXcgdmVyeSBwbGFpbmx5LgpBbmQgTW9zZXMgYW5kIHRoZSBwcmllc3RzIHRoZSBMZXZpdGVzIHNwYWtlIHVudG8gYWxsIElzcmFlbCwgc2F5aW5nLCBUYWtlIGhlZWQsIGFuZCBoZWFya2VuLCBPIElzcmFlbDsgdGhpcyBkYXkgdGhvdSBhcnQgYmVjb21lIHRoZSBwZW9wbGUgb2YgdGhlIExPUkQgdGh5IEdvZC4KVGhvdSBzaGFsdCB0aGVyZWZvcmUgb2JleSB0aGUgdm9pY2Ugb2YgdGhlIExPUkQgdGh5IEdvZCwgYW5kIGRvIGhpcyBjb21tYW5kbWVudHMgYW5kIGhpcyBzdGF0dXRlcywgd2hpY2ggSSBjb21tYW5kIHRoZWUgdGhpcyBkYXkuCkFuZCBNb3NlcyBjaGFyZ2VkIHRoZSBwZW9wbGUgdGhlIHNhbWUgZGF5LCBzYXlpbmcsClRoZXNlIHNoYWxsIHN0YW5kIHVwb24gbW91bnQgR2VyaXppbSB0byBibGVzcyB0aGUgcGVvcGxlLCB3aGVuIHllIGFyZSBjb21lIG92ZXIgSm9yZGFuOyBTaW1lb24sIGFuZCBMZXZpLCBhbmQgSnVkYWgsIGFuZCBJc3NhY2hhciwgYW5kIEpvc2VwaCwgYW5kIEJlbmphbWluOgpBbmQgdGhlc2Ugc2hhbGwgc3RhbmQgdXBvbiBtb3VudCBFYmFsIHRvIGN1cnNlOyBSZXViZW4sIEdhZCwgYW5kIEFzaGVyLCBhbmQgWmVidWx1biwgRGFuLCBhbmQgTmFwaHRhbGkuCkFuZCB0aGUgTGV2aXRlcyBzaGFsbCBzcGVhaywgYW5kIHNheSB1bnRvIGFsbCB0aGUgbWVuIG9mIElzcmFlbCB3aXRoIGEgbG91ZCB2b2ljZSwKQ3Vyc2VkIGJlIHRoZSBtYW4gdGhhdCBtYWtldGggYW55IGdyYXZlbiBvciBtb2x0ZW4gaW1hZ2UsIGFuIGFib21pbmF0aW9uIHVudG8gdGhlIExPUkQsIHRoZSB3b3JrIG9mIHRoZSBoYW5kcyBvZiB0aGUgY3JhZnRzbWFuLCBhbmQgcHV0dGV0aCBpdCBpbiBhIHNlY3JldCBwbGFjZS4gQW5kIGFsbCB0aGUgcGVvcGxlIHNoYWxsIGFuc3dlciBhbmQgc2F5LCBBbWVuLgpDdXJzZWQgYmUgaGUgdGhhdCBzZXR0ZXRoIGxpZ2h0IGJ5IGhpcyBmYXRoZXIgb3IgaGlzIG1vdGhlci4gQW5kIGFsbCB0aGUgcGVvcGxlIHNoYWxsIHNheSwgQW1lbi4KQ3Vyc2VkIGJlIGhlIHRoYXQgcmVtb3ZldGggaGlzIG5laWdoYm91cidzIGxhbmRtYXJrLiBBbmQgYWxsIHRoZSBwZW9wbGUgc2hhbGwgc2F5LCBBbWVuLgpDdXJzZWQgYmUgaGUgdGhhdCBtYWtldGggdGhlIGJsaW5kIHRvIHdhbmRlciBvdXQgb2YgdGhlIHdheS4gQW5kIGFsbCB0aGUgcGVvcGxlIHNoYWxsIHNheSwgQW1lbi4KQ3Vyc2VkIGJlIGhlIHRoYXQgcGVydmVydGV0aCB0aGUganVkZ21lbnQgb2YgdGhlIHN0cmFuZ2VyLCBmYXRoZXJsZXNzLCBhbmQgd2lkb3cuIEFuZCBhbGwgdGhlIHBlb3BsZSBzaGFsbCBzYXksIEFtZW4uCkN1cnNlZCBiZSBoZSB0aGF0IGxpZXRoIHdpdGggaGlzIGZhdGhlcidzIHdpZmU7IGJlY2F1c2UgaGUgdW5jb3ZlcmV0aCBoaXMgZmF0aGVyJ3Mgc2tpcnQuIEFuZCBhbGwgdGhlIHBlb3BsZSBzaGFsbCBzYXksIEFtZW4uCkN1cnNlZCBiZSBoZSB0aGF0IGxpZXRoIHdpdGggYW55IG1hbm5lciBvZiBiZWFzdC4gQW5kIGFsbCB0aGUgcGVvcGxlIHNoYWxsIHNheSwgQW1lbi4KQ3Vyc2VkIGJlIGhlIHRoYXQgbGlldGggd2l0aCBoaXMgc2lzdGVyLCB0aGUgZGF1Z2h0ZXIgb2YgaGlzIGZhdGhlciwgb3IgdGhlIGRhdWdodGVyIG9mIGhpcyBtb3RoZXIuIEFuZCBhbGwgdGhlIHBlb3BsZSBzaGFsbCBzYXksIEFtZW4uCkN1cnNlZCBiZSBoZSB0aGF0IGxpZXRoIHdpdGggaGlzIG1vdGhlciBpbiBsYXcuIEFuZCBhbGwgdGhlIHBlb3BsZSBzaGFsbCBzYXksIEFtZW4uCkN1cnNlZCBiZSBoZSB0aGF0IHNtaXRldGggaGlzIG5laWdoYm91ciBzZWNyZXRseS4gQW5kIGFsbCB0aGUgcGVvcGxlIHNoYWxsIHNheSwgQW1lbi4KQ3Vyc2VkIGJlIGhlIHRoYXQgdGFrZXRoIHJld2FyZCB0byBzbGF5IGFuIGlubm9jZW50IHBlcnNvbi4gQW5kIGFsbCB0aGUgcGVvcGxlIHNoYWxsIHNheSwgQW1lbi4KQ3Vyc2VkIGJlIGhlIHRoYXQgY29uZmlybWV0aCBub3QgYWxsIHRoZSB3b3JkcyBvZiB0aGlzIGxhdyB0byBkbyB0aGVtLiBBbmQgYWxsIHRoZSBwZW9wbGUgc2hhbGwgc2F5LCBBbWVuLgpBbmQgaXQgc2hhbGwgY29tZSB0byBwYXNzLCBpZiB0aG91IHNoYWx0IGhlYXJrZW4gZGlsaWdlbnRseSB1bnRvIHRoZSB2b2ljZSBvZiB0aGUgTE9SRCB0aHkgR29kLCB0byBvYnNlcnZlIGFuZCB0byBkbyBhbGwgaGlzIGNvbW1hbmRtZW50cyB3aGljaCBJIGNvbW1hbmQgdGhlZSB0aGlzIGRheSwgdGhhdCB0aGUgTE9SRCB0aHkgR29kIHdpbGwgc2V0IHRoZWUgb24gaGlnaCBhYm92ZSBhbGwgbmF0aW9ucyBvZiB0aGUgZWFydGg6CkFuZCBhbGwgdGhlc2UgYmxlc3NpbmdzIHNoYWxsIGNvbWUgb24gdGhlZSwgYW5kIG92ZXJ0YWtlIHRoZWUsIGlmIHRob3Ugc2hhbHQgaGVhcmtlbiB1bnRvIHRoZSB2b2ljZSBvZiB0aGUgTE9SRCB0aHkgR29kLgpCbGVzc2VkIHNoYWx0IHRob3UgYmUgaW4gdGhlIGNpdHksIGFuZCBibGVzc2VkIHNoYWx0IHRob3UgYmUgaW4gdGhlIGZpZWxkLgpCbGVzc2VkIHNoYWxsIGJlIHRoZSBmcnVpdCBvZiB0aHkgYm9keSwgYW5kIHRoZSBmcnVpdCBvZiB0aHkgZ3JvdW5kLCBhbmQgdGhlIGZydWl0IG9mIHRoeSBjYXR0bGUsIHRoZSBpbmNyZWFzZSBvZiB0aHkga2luZSwgYW5kIHRoZSBmbG9ja3Mgb2YgdGh5IHNoZWVwLgpCbGVzc2VkIHNoYWxsIGJlIHRoeSBiYXNrZXQgYW5kIHRoeSBzdG9yZS4KQmxlc3NlZCBzaGFsdCB0aG91IGJlIHdoZW4gdGhvdSBjb21lc3QgaW4sIGFuZCBibGVzc2VkIHNoYWx0IHRob3UgYmUgd2hlbiB0aG91IGdvZXN0IG91dC4KVGhlIExPUkQgc2hhbGwgY2F1c2UgdGhpbmUgZW5lbWllcyB0aGF0IHJpc2UgdXAgYWdhaW5zdCB0aGVlIHRvIGJlIHNtaXR0ZW4gYmVmb3JlIHRoeSBmYWNlOiB0aGV5IHNoYWxsIGNvbWUgb3V0IGFnYWluc3QgdGhlZSBvbmUgd2F5LCBhbmQgZmxlZSBiZWZvcmUgdGhlZSBzZXZlbiB3YXlzLgpUaGUgTE9SRCBzaGFsbCBjb21tYW5kIHRoZSBibGVzc2luZyB1cG9uIHRoZWUgaW4gdGh5IHN0b3JlaG91c2VzLCBhbmQgaW4gYWxsIHRoYXQgdGhvdSBzZXR0ZXN0IHRoaW5lIGhhbmQgdW50bzsgYW5kIGhlIHNoYWxsIGJsZXNzIHRoZWUgaW4gdGhlIGxhbmQgd2hpY2ggdGhlIExPUkQgdGh5IEdvZCBnaXZldGggdGhlZS4KVGhlIExPUkQgc2hhbGwgZXN0YWJsaXNoIHRoZWUgYW4gaG9seSBwZW9wbGUgdW50byBoaW1zZWxmLCBhcyBoZSBoYXRoIHN3b3JuIHVudG8gdGhlZSwgaWYgdGhvdSBzaGFsdCBrZWVwIHRoZSBjb21tYW5kbWVudHMgb2YgdGhlIExPUkQgdGh5IEdvZCwgYW5kIHdhbGsgaW4gaGlzIHdheXMuCkFuZCBhbGwgcGVvcGxlIG9mIHRoZSBlYXJ0aCBzaGFsbCBzZWUgdGhhdCB0aG91IGFydCBjYWxsZWQgYnkgdGhlIG5hbWUgb2YgdGhlIExPUkQ7IGFuZCB0aGV5IHNoYWxsIGJlIGFmcmFpZCBvZiB0aGVlLgpBbmQgdGhlIExPUkQgc2hhbGwgbWFrZSB0aGVlIHBsZW50ZW91cyBpbiBnb29kcywgaW4gdGhlIGZydWl0IG9mIHRoeSBib2R5LCBhbmQgaW4gdGhlIGZydWl0IG9mIHRoeSBjYXR0bGUsIGFuZCBpbiB0aGUgZnJ1aXQgb2YgdGh5IGdyb3VuZCwgaW4gdGhlIGxhbmQgd2hpY2ggdGhlIExPUkQgc3dhcmUgdW50byB0aHkgZmF0aGVycyB0byBnaXZlIHRoZWUuClRoZSBMT1JEIHNoYWxsIG9wZW4gdW50byB0aGVlIGhpcyBnb29kIHRyZWFzdXJlLCB0aGUgaGVhdmVuIHRvIGdpdmUgdGhlIHJhaW4gdW50byB0aHkgbGFuZCBpbiBoaXMgc2Vhc29uLCBhbmQgdG8gYmxlc3MgYWxsIHRoZSB3b3JrIG9mIHRoaW5lIGhhbmQ6IGFuZCB0aG91IHNoYWx0IGxlbmQgdW50byBtYW55IG5hdGlvbnMsIGFuZCB0aG91IHNoYWx0IG5vdCBib3Jyb3cuCkFuZCB0aGUgTE9SRCBzaGFsbCBtYWtlIHRoZWUgdGhlIGhlYWQsIGFuZCBub3QgdGhlIHRhaWw7IGFuZCB0aG91IHNoYWx0IGJlIGFib3ZlIG9ubHksIGFuZCB0aG91IHNoYWx0IG5vdCBiZSBiZW5lYXRoOyBpZiB0aGF0IHRob3UgaGVhcmtlbiB1bnRvIHRoZSBjb21tYW5kbWVudHMgb2YgdGhlIExPUkQgdGh5IEdvZCwgd2hpY2ggSSBjb21tYW5kIHRoZWUgdGhpcyBkYXksIHRvIG9ic2VydmUgYW5kIHRvIGRvIHRoZW06CkFuZCB0aG91IHNoYWx0IG5vdCBnbyBhc2lkZSBmcm9tIGFueSBvZiB0aGUgd29yZHMgd2hpY2ggSSBjb21tYW5kIHRoZWUgdGhpcyBkYXksIHRvIHRoZSByaWdodCBoYW5kLCBvciB0byB0aGUgbGVmdCwgdG8gZ28gYWZ0ZXIgb3RoZXIgZ29kcyB0byBzZXJ2ZSB0aGVtLgpCdXQgaXQgc2hhbGwgY29tZSB0byBwYXNzLCBpZiB0aG91IHdpbHQgbm90IGhlYXJrZW4gdW50byB0aGUgdm9pY2Ugb2YgdGhlIExPUkQgdGh5IEdvZCwgdG8gb2JzZXJ2ZSB0byBkbyBhbGwgaGlzIGNvbW1hbmRtZW50cyBhbmQgaGlzIHN0YXR1dGVzIHdoaWNoIEkgY29tbWFuZCB0aGVlIHRoaXMgZGF5OyB0aGF0IGFsbCB0aGVzZSBjdXJzZXMgc2hhbGwgY29tZSB1cG9uIHRoZWUsIGFuZCBvdmVydGFrZSB0aGVlOgpDdXJzZWQgc2hhbHQgdGhvdSBiZSBpbiB0aGUgY2l0eSwgYW5kIGN1cnNlZCBzaGFsdCB0aG91IGJlIGluIHRoZSBmaWVsZC4KQ3Vyc2VkIHNoYWxsIGJlIHRoeSBiYXNrZXQgYW5kIHRoeSBzdG9yZS4KQ3Vyc2VkIHNoYWxsIGJlIHRoZSBmcnVpdCBvZiB0aHkgYm9keSwgYW5kIHRoZSBmcnVpdCBvZiB0aHkgbGFuZCwgdGhlIGluY3JlYXNlIG9mIHRoeSBraW5lLCBhbmQgdGhlIGZsb2NrcyBvZiB0aHkgc2hlZXAuCkN1cnNlZCBzaGFsdCB0aG91IGJlIHdoZW4gdGhvdSBjb21lc3QgaW4sIGFuZCBjdXJzZWQgc2hhbHQgdGhvdSBiZSB3aGVuIHRob3UgZ29lc3Qgb3V0LgpUaGUgTE9SRCBzaGFsbCBzZW5kIHVwb24gdGhlZSBjdXJzaW5nLCB2ZXhhdGlvbiwgYW5kIHJlYnVrZSwgaW4gYWxsIHRoYXQgdGhvdSBzZXR0ZXN0IHRoaW5lIGhhbmQgdW50byBmb3IgdG8gZG8sIHVudGlsIHRob3UgYmUgZGVzdHJveWVkLCBhbmQgdW50aWwgdGhvdSBwZXJpc2ggcXVpY2tseTsgYmVjYXVzZSBvZiB0aGUgd2lja2VkbmVzcyBvZiB0aHkgZG9pbmdzLCB3aGVyZWJ5IHRob3UgaGFzdCBmb3JzYWtlbiBtZS4KVGhlIExPUkQgc2hhbGwgbWFrZSB0aGUgcGVzdGlsZW5jZSBjbGVhdmUgdW50byB0aGVlLCB1bnRpbCBoZSBoYXZlIGNvbnN1bWVkIHRoZWUgZnJvbSBvZmYgdGhlIGxhbmQsIHdoaXRoZXIgdGhvdSBnb2VzdCB0byBwb3NzZXNzIGl0LgpUaGUgTE9SRCBzaGFsbCBzbWl0ZSB0aGVlIHdpdGggYSBjb25zdW1wdGlvbiwgYW5kIHdpdGggYSBmZXZlciwgYW5kIHdpdGggYW4gaW5mbGFtbWF0aW9uLCBhbmQgd2l0aCBhbiBleHRyZW1lIGJ1cm5pbmcsIGFuZCB3aXRoIHRoZSBzd29yZCwgYW5kIHdpdGggYmxhc3RpbmcsIGFuZCB3aXRoIG1pbGRldzsgYW5kIHRoZXkgc2hhbGwgcHVyc3VlIHRoZWUgdW50aWwgdGhvdSBwZXJpc2guCkFuZCB0aHkgaGVhdmVuIHRoYXQgaXMgb3ZlciB0aHkgaGVhZCBzaGFsbCBiZSBicmFzcywgYW5kIHRoZSBlYXJ0aCB0aGF0IGlzIHVuZGVyIHRoZWUgc2hhbGwgYmUgaXJvbi4KVGhlIExPUkQgc2hhbGwgbWFrZSB0aGUgcmFpbiBvZiB0aHkgbGFuZCBwb3dkZXIgYW5kIGR1c3Q6IGZyb20gaGVhdmVuIHNoYWxsIGl0IGNvbWUgZG93biB1cG9uIHRoZWUsIHVudGlsIHRob3UgYmUgZGVzdHJveWVkLgpUaGUgTE9SRCBzaGFsbCBjYXVzZSB0aGVlIHRvIGJlIHNtaXR0ZW4gYmVmb3JlIHRoaW5lIGVuZW1pZXM6IHRob3Ugc2hhbHQgZ28gb3V0IG9uZSB3YXkgYWdhaW5zdCB0aGVtLCBhbmQgZmxlZSBzZXZlbiB3YXlzIGJlZm9yZSB0aGVtOiBhbmQgc2hhbHQgYmUgcmVtb3ZlZCBpbnRvIGFsbCB0aGUga2luZ2RvbXMgb2YgdGhlIGVhcnRoLgpBbmQgdGh5IGNhcmNhc2Ugc2hhbGwgYmUgbWVhdCB1bnRvIGFsbCBmb3dscyBvZiB0aGUgYWlyLCBhbmQgdW50byB0aGUgYmVhc3RzIG9mIHRoZSBlYXJ0aCwgYW5kIG5vIG1hbiBzaGFsbCBmcmF5IHRoZW0gYXdheS4KVGhlIExPUkQgd2lsbCBzbWl0ZSB0aGVlIHdpdGggdGhlIGJvdGNoIG9mIEVneXB0LCBhbmQgd2l0aCB0aGUgZW1lcm9kcywgYW5kIHdpdGggdGhlIHNjYWIsIGFuZCB3aXRoIHRoZSBpdGNoLCB3aGVyZW9mIHRob3UgY2Fuc3Qgbm90IGJlIGhlYWxlZC4KVGhlIExPUkQgc2hhbGwgc21pdGUgdGhlZSB3aXRoIG1hZG5lc3MsIGFuZCBibGluZG5lc3MsIGFuZCBhc3RvbmlzaG1lbnQgb2YgaGVhcnQ6CkFuZCB0aG91IHNoYWx0IGdyb3BlIGF0IG5vb25kYXksIGFzIHRoZSBibGluZCBncm9wZXRoIGluIGRhcmtuZXNzLCBhbmQgdGhvdSBzaGFsdCBub3QgcHJvc3BlciBpbiB0aHkgd2F5czogYW5kIHRob3Ugc2hhbHQgYmUgb25seSBvcHByZXNzZWQgYW5kIHNwb2lsZWQgZXZlcm1vcmUsIGFuZCBubyBtYW4gc2hhbGwgc2F2ZSB0aGVlLgpUaG91IHNoYWx0IGJldHJvdGggYSB3aWZlLCBhbmQgYW5vdGhlciBtYW4gc2hhbGwgbGllIHdpdGggaGVyOiB0aG91IHNoYWx0IGJ1aWxkIGFuIGhvdXNlLCBhbmQgdGhvdSBzaGFsdCBub3QgZHdlbGwgdGhlcmVpbjogdGhvdSBzaGFsdCBwbGFudCBhIHZpbmV5YXJkLCBhbmQgc2hhbHQgbm90IGdhdGhlciB0aGUgZ3JhcGVzIHRoZXJlb2YuClRoaW5lIG94IHNoYWxsIGJlIHNsYWluIGJlZm9yZSB0aGluZSBleWVzLCBhbmQgdGhvdSBzaGFsdCBub3QgZWF0IHRoZXJlb2Y6IHRoaW5lIGFzcyBzaGFsbCBiZSB2aW9sZW50bHkgdGFrZW4gYXdheSBmcm9tIGJlZm9yZSB0aHkgZmFjZSwgYW5kIHNoYWxsIG5vdCBiZSByZXN0b3JlZCB0byB0aGVlOiB0aHkgc2hlZXAgc2hhbGwgYmUgZ2l2ZW4gdW50byB0aGluZSBlbmVtaWVzLCBhbmQgdGhvdSBzaGFsdCBoYXZlIG5vbmUgdG8gcmVzY3VlIHRoZW0uClRoeSBzb25zIGFuZCB0aHkgZGF1Z2h0ZXJzIHNoYWxsIGJlIGdpdmVuIHVudG8gYW5vdGhlciBwZW9wbGUsIGFuZCB0aGluZSBleWVzIHNoYWxsIGxvb2ssIGFuZCBmYWlsIHdpdGggbG9uZ2luZyBmb3IgdGhlbSBhbGwgdGhlIGRheSBsb25nOyBhbmQgdGhlcmUgc2hhbGwgYmUgbm8gbWlnaHQgaW4gdGhpbmUgaGFuZC4KVGhlIGZydWl0IG9mIHRoeSBsYW5kLCBhbmQgYWxsIHRoeSBsYWJvdXJzLCBzaGFsbCBhIG5hdGlvbiB3aGljaCB0aG91IGtub3dlc3Qgbm90IGVhdCB1cDsgYW5kIHRob3Ugc2hhbHQgYmUgb25seSBvcHByZXNzZWQgYW5kIGNydXNoZWQgYWx3YXk6ClNvIHRoYXQgdGhvdSBzaGFsdCBiZSBtYWQgZm9yIHRoZSBzaWdodCBvZiB0aGluZSBleWVzIHdoaWNoIHRob3Ugc2hhbHQgc2VlLgpUaGUgTE9SRCBzaGFsbCBzbWl0ZSB0aGVlIGluIHRoZSBrbmVlcywgYW5kIGluIHRoZSBsZWdzLCB3aXRoIGEgc29yZSBib3RjaCB0aGF0IGNhbm5vdCBiZSBoZWFsZWQsIGZyb20gdGhlIHNvbGUgb2YgdGh5IGZvb3QgdW50byB0aGUgdG9wIG9mIHRoeSBoZWFkLgpUaGUgTE9SRCBzaGFsbCBicmluZyB0aGVlLCBhbmQgdGh5IGtpbmcgd2hpY2ggdGhvdSBzaGFsdCBzZXQgb3ZlciB0aGVlLCB1bnRvIGEgbmF0aW9uIHdoaWNoIG5laXRoZXIgdGhvdSBub3IgdGh5IGZhdGhlcnMgaGF2ZSBrbm93bjsgYW5kIHRoZXJlIHNoYWx0IHRob3Ugc2VydmUgb3RoZXIgZ29kcywgd29vZCBhbmQgc3RvbmUuCkFuZCB0aG91IHNoYWx0IGJlY29tZSBhbiBhc3RvbmlzaG1lbnQsIGEgcHJvdmVyYiwgYW5kIGEgYnl3b3JkLCBhbW9uZyBhbGwgbmF0aW9ucyB3aGl0aGVyIHRoZSBMT1JEIHNoYWxsIGxlYWQgdGhlZS4KVGhvdSBzaGFsdCBjYXJyeSBtdWNoIHNlZWQgb3V0IGludG8gdGhlIGZpZWxkLCBhbmQgc2hhbHQgZ2F0aGVyIGJ1dCBsaXR0bGUgaW47IGZvciB0aGUgbG9jdXN0IHNoYWxsIGNvbnN1bWUgaXQuClRob3Ugc2hhbHQgcGxhbnQgdmluZXlhcmRzLCBhbmQgZHJlc3MgdGhlbSwgYnV0IHNoYWx0IG5laXRoZXIgZHJpbmsgb2YgdGhlIHdpbmUsIG5vciBnYXRoZXIgdGhlIGdyYXBlczsgZm9yIHRoZSB3b3JtcyBzaGFsbCBlYXQgdGhlbS4KVGhvdSBzaGFsdCBoYXZlIG9saXZlIHRyZWVzIHRocm91Z2hvdXQgYWxsIHRoeSBjb2FzdHMsIGJ1dCB0aG91IHNoYWx0IG5vdCBhbm9pbnQgdGh5c2VsZiB3aXRoIHRoZSBvaWw7IGZvciB0aGluZSBvbGl2ZSBzaGFsbCBjYXN0IGhpcyBmcnVpdC4KVGhvdSBzaGFsdCBiZWdldCBzb25zIGFuZCBkYXVnaHRlcnMsIGJ1dCB0aG91IHNoYWx0IG5vdCBlbmpveSB0aGVtOyBmb3IgdGhleSBzaGFsbCBnbyBpbnRvIGNhcHRpdml0eS4KQWxsIHRoeSB0cmVlcyBhbmQgZnJ1aXQgb2YgdGh5IGxhbmQgc2hhbGwgdGhlIGxvY3VzdCBjb25zdW1lLgpUaGUgc3RyYW5nZXIgdGhhdCBpcyB3aXRoaW4gdGhlZSBzaGFsbCBnZXQgdXAgYWJvdmUgdGhlZSB2ZXJ5IGhpZ2g7IGFuZCB0aG91IHNoYWx0IGNvbWUgZG93biB2ZXJ5IGxvdy4KSGUgc2hhbGwgbGVuZCB0byB0aGVlLCBhbmQgdGhvdSBzaGFsdCBub3QgbGVuZCB0byBoaW06IGhlIHNoYWxsIGJlIHRoZSBoZWFkLCBhbmQgdGhvdSBzaGFsdCBiZSB0aGUgdGFpbC4KTW9yZW92ZXIgYWxsIHRoZXNlIGN1cnNlcyBzaGFsbCBjb21lIHVwb24gdGhlZSwgYW5kIHNoYWxsIHB1cnN1ZSB0aGVlLCBhbmQgb3ZlcnRha2UgdGhlZSwgdGlsbCB0aG91IGJlIGRlc3Ryb3llZDsgYmVjYXVzZSB0aG91IGhlYXJrZW5lZHN0IG5vdCB1bnRvIHRoZSB2b2ljZSBvZiB0aGUgTE9SRCB0aHkgR29kLCB0byBrZWVwIGhpcyBjb21tYW5kbWVudHMgYW5kIGhpcyBzdGF0dXRlcyB3aGljaCBoZSBjb21tYW5kZWQgdGhlZToKQW5kIHRoZXkgc2hhbGwgYmUgdXBvbiB0aGVlIGZvciBhIHNpZ24gYW5kIGZvciBhIHdvbmRlciwgYW5kIHVwb24gdGh5IHNlZWQgZm9yIGV2ZXIuCkJlY2F1c2UgdGhvdSBzZXJ2ZWRzdCBub3QgdGhlIExPUkQgdGh5IEdvZCB3aXRoIGpveWZ1bG5lc3MsIGFuZCB3aXRoIGdsYWRuZXNzIG9mIGhlYXJ0LCBmb3IgdGhlIGFidW5kYW5jZSBvZiBhbGwgdGhpbmdzOwpUaGVyZWZvcmUgc2hhbHQgdGhvdSBzZXJ2ZSB0aGluZSBlbmVtaWVzIHdoaWNoIHRoZSBMT1JEIHNoYWxsIHNlbmQgYWdhaW5zdCB0aGVlLCBpbiBodW5nZXIsIGFuZCBpbiB0aGlyc3QsIGFuZCBpbiBuYWtlZG5lc3MsIGFuZCBpbiB3YW50IG9mIGFsbCB0aGluZ3M6IGFuZCBoZSBzaGFsbCBwdXQgYSB5b2tlIG9mIGlyb24gdXBvbiB0aHkgbmVjaywgdW50aWwgaGUgaGF2ZSBkZXN0cm95ZWQgdGhlZS4KVGhlIExPUkQgc2hhbGwgYnJpbmcgYSBuYXRpb24gYWdhaW5zdCB0aGVlIGZyb20gZmFyLCBmcm9tIHRoZSBlbmQgb2YgdGhlIGVhcnRoLCBhcyBzd2lmdCBhcyB0aGUgZWFnbGUgZmxpZXRoOyBhIG5hdGlvbiB3aG9zZSB0b25ndWUgdGhvdSBzaGFsdCBub3QgdW5kZXJzdGFuZDsKQSBuYXRpb24gb2YgZmllcmNlIGNvdW50ZW5hbmNlLCB3aGljaCBzaGFsbCBub3QgcmVnYXJkIHRoZSBwZXJzb24gb2YgdGhlIG9sZCwgbm9yIHNoZXcgZmF2b3VyIHRvIHRoZSB5b3VuZzoKQW5kIGhlIHNoYWxsIGVhdCB0aGUgZnJ1aXQgb2YgdGh5IGNhdHRsZSwgYW5kIHRoZSBmcnVpdCBvZiB0aHkgbGFuZCwgdW50aWwgdGhvdSBiZSBkZXN0cm95ZWQ6IHdoaWNoIGFsc28gc2hhbGwgbm90IGxlYXZlIHRoZWUgZWl0aGVyIGNvcm4sIHdpbmUsIG9yIG9pbCwgb3IgdGhlIGluY3JlYXNlIG9mIHRoeSBraW5lLCBvciBmbG9ja3Mgb2YgdGh5IHNoZWVwLCB1bnRpbCBoZSBoYXZlIGRlc3Ryb3llZCB0aGVlLgpBbmQgaGUgc2hhbGwgYmVzaWVnZSB0aGVlIGluIGFsbCB0aHkgZ2F0ZXMsIHVudGlsIHRoeSBoaWdoIGFuZCBmZW5jZWQgd2FsbHMgY29tZSBkb3duLCB3aGVyZWluIHRob3UgdHJ1c3RlZHN0LCB0aHJvdWdob3V0IGFsbCB0aHkgbGFuZDogYW5kIGhlIHNoYWxsIGJlc2llZ2UgdGhlZSBpbiBhbGwgdGh5IGdhdGVzIHRocm91Z2hvdXQgYWxsIHRoeSBsYW5kLCB3aGljaCB0aGUgTE9SRCB0aHkgR29kIGhhdGggZ2l2ZW4gdGhlZS4KQW5kIHRob3Ugc2hhbHQgZWF0IHRoZSBmcnVpdCBvZiB0aGluZSBvd24gYm9keSwgdGhlIGZsZXNoIG9mIHRoeSBzb25zIGFuZCBvZiB0aHkgZGF1Z2h0ZXJzLCB3aGljaCB0aGUgTE9SRCB0aHkgR29kIGhhdGggZ2l2ZW4gdGhlZSwgaW4gdGhlIHNpZWdlLCBhbmQgaW4gdGhlIHN0cmFpdG5lc3MsIHdoZXJld2l0aCB0aGluZSBlbmVtaWVzIHNoYWxsIGRpc3RyZXNzIHRoZWU6ClNvIHRoYXQgdGhlIG1hbiB0aGF0IGlzIHRlbmRlciBhbW9uZyB5b3UsIGFuZCB2ZXJ5IGRlbGljYXRlLCBoaXMgZXllIHNoYWxsIGJlIGV2aWwgdG93YXJkIGhpcyBicm90aGVyLCBhbmQgdG93YXJkIHRoZSB3aWZlIG9mIGhpcyBib3NvbSwgYW5kIHRvd2FyZCB0aGUgcmVtbmFudCBvZiBoaXMgY2hpbGRyZW4gd2hpY2ggaGUgc2hhbGwgbGVhdmU6ClNvIHRoYXQgaGUgd2lsbCBub3QgZ2l2ZSB0byBhbnkgb2YgdGhlbSBvZiB0aGUgZmxlc2ggb2YgaGlzIGNoaWxkcmVuIHdob20gaGUgc2hhbGwgZWF0OiBiZWNhdXNlIGhlIGhhdGggbm90aGluZyBsZWZ0IGhpbSBpbiB0aGUgc2llZ2UsIGFuZCBpbiB0aGUgc3RyYWl0bmVzcywgd2hlcmV3aXRoIHRoaW5lIGVuZW1pZXMgc2hhbGwgZGlzdHJlc3MgdGhlZSBpbiBhbGwgdGh5IGdhdGVzLgpUaGUgdGVuZGVyIGFuZCBkZWxpY2F0ZSB3b21hbiBhbW9uZyB5b3UsIHdoaWNoIHdvdWxkIG5vdCBhZHZlbnR1cmUgdG8gc2V0IHRoZSBzb2xlIG9mIGhlciBmb290IHVwb24gdGhlIGdyb3VuZCBmb3IgZGVsaWNhdGVuZXNzIGFuZCB0ZW5kZXJuZXNzLCBoZXIgZXllIHNoYWxsIGJlIGV2aWwgdG93YXJkIHRoZSBodXNiYW5kIG9mIGhlciBib3NvbSwgYW5kIHRvd2FyZCBoZXIgc29uLCBhbmQgdG93YXJkIGhlciBkYXVnaHRlciwKQW5kIHRvd2FyZCBoZXIgeW91bmcgb25lIHRoYXQgY29tZXRoIG91dCBmcm9tIGJldHdlZW4gaGVyIGZlZXQsIGFuZCB0b3dhcmQgaGVyIGNoaWxkcmVuIHdoaWNoIHNoZSBzaGFsbCBiZWFyOiBmb3Igc2hlIHNoYWxsIGVhdCB0aGVtIGZvciB3YW50IG9mIGFsbCB0aGluZ3Mgc2VjcmV0bHkgaW4gdGhlIHNpZWdlIGFuZCBzdHJhaXRuZXNzLCB3aGVyZXdpdGggdGhpbmUgZW5lbXkgc2hhbGwgZGlzdHJlc3MgdGhlZSBpbiB0aHkgZ2F0ZXMuCklmIHRob3Ugd2lsdCBub3Qgb2JzZXJ2ZSB0byBkbyBhbGwgdGhlIHdvcmRzIG9mIHRoaXMgbGF3IHRoYXQgYXJlIHdyaXR0ZW4gaW4gdGhpcyBib29rLCB0aGF0IHRob3UgbWF5ZXN0IGZlYXIgdGhpcyBnbG9yaW91cyBhbmQgZmVhcmZ1bCBuYW1lLCBUSEUgTE9SRCBUSFkgR09EOwpUaGVuIHRoZSBMT1JEIHdpbGwgbWFrZSB0aHkgcGxhZ3VlcyB3b25kZXJmdWwsIGFuZCB0aGUgcGxhZ3VlcyBvZiB0aHkgc2VlZCwgZXZlbiBncmVhdCBwbGFndWVzLCBhbmQgb2YgbG9uZyBjb250aW51YW5jZSwgYW5kIHNvcmUgc2lja25lc3NlcywgYW5kIG9mIGxvbmcgY29udGludWFuY2UuCk1vcmVvdmVyIGhlIHdpbGwgYnJpbmcgdXBvbiB0aGVlIGFsbCB0aGUgZGlzZWFzZXMgb2YgRWd5cHQsIHdoaWNoIHRob3Ugd2FzdCBhZnJhaWQgb2Y7IGFuZCB0aGV5IHNoYWxsIGNsZWF2ZSB1bnRvIHRoZWUuCkFsc28gZXZlcnkgc2lja25lc3MsIGFuZCBldmVyeSBwbGFndWUsIHdoaWNoIGlzIG5vdCB3cml0dGVuIGluIHRoZSBib29rIG9mIHRoaXMgbGF3LCB0aGVtIHdpbGwgdGhlIExPUkQgYnJpbmcgdXBvbiB0aGVlLCB1bnRpbCB0aG91IGJlIGRlc3Ryb3llZC4KQW5kIHllIHNoYWxsIGJlIGxlZnQgZmV3IGluIG51bWJlciwgd2hlcmVhcyB5ZSB3ZXJlIGFzIHRoZSBzdGFycyBvZiBoZWF2ZW4gZm9yIG11bHRpdHVkZTsgYmVjYXVzZSB0aG91IHdvdWxkZXN0IG5vdCBvYmV5IHRoZSB2b2ljZSBvZiB0aGUgTE9SRCB0aHkgR29kLgpBbmQgaXQgc2hhbGwgY29tZSB0byBwYXNzLCB0aGF0IGFzIHRoZSBMT1JEIHJlam9pY2VkIG92ZXIgeW91IHRvIGRvIHlvdSBnb29kLCBhbmQgdG8gbXVsdGlwbHkgeW91OyBzbyB0aGUgTE9SRCB3aWxsIHJlam9pY2Ugb3ZlciB5b3UgdG8gZGVzdHJveSB5b3UsIGFuZCB0byBicmluZyB5b3UgdG8gbm91Z2h0OyBhbmQgeWUgc2hhbGwgYmUgcGx1Y2tlZCBmcm9tIG9mZiB0aGUgbGFuZCB3aGl0aGVyIHRob3UgZ29lc3QgdG8gcG9zc2VzcyBpdC4KQW5kIHRoZSBMT1JEIHNoYWxsIHNjYXR0ZXIgdGhlZSBhbW9uZyBhbGwgcGVvcGxlLCBmcm9tIHRoZSBvbmUgZW5kIG9mIHRoZSBlYXJ0aCBldmVuIHVudG8gdGhlIG90aGVyOyBhbmQgdGhlcmUgdGhvdSBzaGFsdCBzZXJ2ZSBvdGhlciBnb2RzLCB3aGljaCBuZWl0aGVyIHRob3Ugbm9yIHRoeSBmYXRoZXJzIGhhdmUga25vd24sIGV2ZW4gd29vZCBhbmQgc3RvbmUuCkFuZCBhbW9uZyB0aGVzZSBuYXRpb25zIHNoYWx0IHRob3UgZmluZCBubyBlYXNlLCBuZWl0aGVyIHNoYWxsIHRoZSBzb2xlIG9mIHRoeSBmb290IGhhdmUgcmVzdDogYnV0IHRoZSBMT1JEIHNoYWxsIGdpdmUgdGhlZSB0aGVyZSBhIHRyZW1ibGluZyBoZWFydCwgYW5kIGZhaWxpbmcgb2YgZXllcywgYW5kIHNvcnJvdyBvZiBtaW5kOgpBbmQgdGh5IGxpZmUgc2hhbGwgaGFuZyBpbiBkb3VidCBiZWZvcmUgdGhlZTsgYW5kIHRob3Ugc2hhbHQgZmVhciBkYXkgYW5kIG5pZ2h0LCBhbmQgc2hhbHQgaGF2ZSBub25lIGFzc3VyYW5jZSBvZiB0aHkgbGlmZToKSW4gdGhlIG1vcm5pbmcgdGhvdSBzaGFsdCBzYXksIFdvdWxkIEdvZCBpdCB3ZXJlIGV2ZW4hIGFuZCBhdCBldmVuIHRob3Ugc2hhbHQgc2F5LCBXb3VsZCBHb2QgaXQgd2VyZSBtb3JuaW5nISBmb3IgdGhlIGZlYXIgb2YgdGhpbmUgaGVhcnQgd2hlcmV3aXRoIHRob3Ugc2hhbHQgZmVhciwgYW5kIGZvciB0aGUgc2lnaHQgb2YgdGhpbmUgZXllcyB3aGljaCB0aG91IHNoYWx0IHNlZS4KQW5kIHRoZSBMT1JEIHNoYWxsIGJyaW5nIHRoZWUgaW50byBFZ3lwdCBhZ2FpbiB3aXRoIHNoaXBzLCBieSB0aGUgd2F5IHdoZXJlb2YgSSBzcGFrZSB1bnRvIHRoZWUsIFRob3Ugc2hhbHQgc2VlIGl0IG5vIG1vcmUgYWdhaW46IGFuZCB0aGVyZSB5ZSBzaGFsbCBiZSBzb2xkIHVudG8geW91ciBlbmVtaWVzIGZvciBib25kbWVuIGFuZCBib25kd29tZW4sIGFuZCBubyBtYW4gc2hhbGwgYnV5IHlvdS4KVGhlc2UgYXJlIHRoZSB3b3JkcyBvZiB0aGUgY292ZW5hbnQsIHdoaWNoIHRoZSBMT1JEIGNvbW1hbmRlZCBNb3NlcyB0byBtYWtlIHdpdGggdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBpbiB0aGUgbGFuZCBvZiBNb2FiLCBiZXNpZGUgdGhlIGNvdmVuYW50IHdoaWNoIGhlIG1hZGUgd2l0aCB0aGVtIGluIEhvcmViLgpBbmQgTW9zZXMgY2FsbGVkIHVudG8gYWxsIElzcmFlbCwgYW5kIHNhaWQgdW50byB0aGVtLCBZZSBoYXZlIHNlZW4gYWxsIHRoYXQgdGhlIExPUkQgZGlkIGJlZm9yZSB5b3VyIGV5ZXMgaW4gdGhlIGxhbmQgb2YgRWd5cHQgdW50byBQaGFyYW9oLCBhbmQgdW50byBhbGwgaGlzIHNlcnZhbnRzLCBhbmQgdW50byBhbGwgaGlzIGxhbmQ7ClRoZSBncmVhdCB0ZW1wdGF0aW9ucyB3aGljaCB0aGluZSBleWVzIGhhdmUgc2VlbiwgdGhlIHNpZ25zLCBhbmQgdGhvc2UgZ3JlYXQgbWlyYWNsZXM6CllldCB0aGUgTE9SRCBoYXRoIG5vdCBnaXZlbiB5b3UgYW4gaGVhcnQgdG8gcGVyY2VpdmUsIGFuZCBleWVzIHRvIHNlZSwgYW5kIGVhcnMgdG8gaGVhciwgdW50byB0aGlzIGRheS4KQW5kIEkgaGF2ZSBsZWQgeW91IGZvcnR5IHllYXJzIGluIHRoZSB3aWxkZXJuZXNzOiB5b3VyIGNsb3RoZXMgYXJlIG5vdCB3YXhlbiBvbGQgdXBvbiB5b3UsIGFuZCB0aHkgc2hvZSBpcyBub3Qgd2F4ZW4gb2xkIHVwb24gdGh5IGZvb3QuClllIGhhdmUgbm90IGVhdGVuIGJyZWFkLCBuZWl0aGVyIGhhdmUgeWUgZHJ1bmsgd2luZSBvciBzdHJvbmcgZHJpbms6IHRoYXQgeWUgbWlnaHQga25vdyB0aGF0IEkgYW0gdGhlIExPUkQgeW91ciBHb2QuCkFuZCB3aGVuIHllIGNhbWUgdW50byB0aGlzIHBsYWNlLCBTaWhvbiB0aGUga2luZyBvZiBIZXNoYm9uLCBhbmQgT2cgdGhlIGtpbmcgb2YgQmFzaGFuLCBjYW1lIG91dCBhZ2FpbnN0IHVzIHVudG8gYmF0dGxlLCBhbmQgd2Ugc21vdGUgdGhlbToKQW5kIHdlIHRvb2sgdGhlaXIgbGFuZCwgYW5kIGdhdmUgaXQgZm9yIGFuIGluaGVyaXRhbmNlIHVudG8gdGhlIFJldWJlbml0ZXMsIGFuZCB0byB0aGUgR2FkaXRlcywgYW5kIHRvIHRoZSBoYWxmIHRyaWJlIG9mIE1hbmFzc2VoLgpLZWVwIHRoZXJlZm9yZSB0aGUgd29yZHMgb2YgdGhpcyBjb3ZlbmFudCwgYW5kIGRvIHRoZW0sIHRoYXQgeWUgbWF5IHByb3NwZXIgaW4gYWxsIHRoYXQgeWUgZG8uClllIHN0YW5kIHRoaXMgZGF5IGFsbCBvZiB5b3UgYmVmb3JlIHRoZSBMT1JEIHlvdXIgR29kOyB5b3VyIGNhcHRhaW5zIG9mIHlvdXIgdHJpYmVzLCB5b3VyIGVsZGVycywgYW5kIHlvdXIgb2ZmaWNlcnMsIHdpdGggYWxsIHRoZSBtZW4gb2YgSXNyYWVsLApZb3VyIGxpdHRsZSBvbmVzLCB5b3VyIHdpdmVzLCBhbmQgdGh5IHN0cmFuZ2VyIHRoYXQgaXMgaW4gdGh5IGNhbXAsIGZyb20gdGhlIGhld2VyIG9mIHRoeSB3b29kIHVudG8gdGhlIGRyYXdlciBvZiB0aHkgd2F0ZXI6ClRoYXQgdGhvdSBzaG91bGRlc3QgZW50ZXIgaW50byBjb3ZlbmFudCB3aXRoIHRoZSBMT1JEIHRoeSBHb2QsIGFuZCBpbnRvIGhpcyBvYXRoLCB3aGljaCB0aGUgTE9SRCB0aHkgR29kIG1ha2V0aCB3aXRoIHRoZWUgdGhpcyBkYXk6ClRoYXQgaGUgbWF5IGVzdGFibGlzaCB0aGVlIHRvIGRheSBmb3IgYSBwZW9wbGUgdW50byBoaW1zZWxmLCBhbmQgdGhhdCBoZSBtYXkgYmUgdW50byB0aGVlIGEgR29kLCBhcyBoZSBoYXRoIHNhaWQgdW50byB0aGVlLCBhbmQgYXMgaGUgaGF0aCBzd29ybiB1bnRvIHRoeSBmYXRoZXJzLCB0byBBYnJhaGFtLCB0byBJc2FhYywgYW5kIHRvIEphY29iLgpOZWl0aGVyIHdpdGggeW91IG9ubHkgZG8gSSBtYWtlIHRoaXMgY292ZW5hbnQgYW5kIHRoaXMgb2F0aDsKQnV0IHdpdGggaGltIHRoYXQgc3RhbmRldGggaGVyZSB3aXRoIHVzIHRoaXMgZGF5IGJlZm9yZSB0aGUgTE9SRCBvdXIgR29kLCBhbmQgYWxzbyB3aXRoIGhpbSB0aGF0IGlzIG5vdCBoZXJlIHdpdGggdXMgdGhpcyBkYXk6CihGb3IgeWUga25vdyBob3cgd2UgaGF2ZSBkd2VsdCBpbiB0aGUgbGFuZCBvZiBFZ3lwdDsgYW5kIGhvdyB3ZSBjYW1lIHRocm91Z2ggdGhlIG5hdGlvbnMgd2hpY2ggeWUgcGFzc2VkIGJ5OwpBbmQgeWUgaGF2ZSBzZWVuIHRoZWlyIGFib21pbmF0aW9ucywgYW5kIHRoZWlyIGlkb2xzLCB3b29kIGFuZCBzdG9uZSwgc2lsdmVyIGFuZCBnb2xkLCB3aGljaCB3ZXJlIGFtb25nIHRoZW06KQpMZXN0IHRoZXJlIHNob3VsZCBiZSBhbW9uZyB5b3UgbWFuLCBvciB3b21hbiwgb3IgZmFtaWx5LCBvciB0cmliZSwgd2hvc2UgaGVhcnQgdHVybmV0aCBhd2F5IHRoaXMgZGF5IGZyb20gdGhlIExPUkQgb3VyIEdvZCwgdG8gZ28gYW5kIHNlcnZlIHRoZSBnb2RzIG9mIHRoZXNlIG5hdGlvbnM7IGxlc3QgdGhlcmUgc2hvdWxkIGJlIGFtb25nIHlvdSBhIHJvb3QgdGhhdCBiZWFyZXRoIGdhbGwgYW5kIHdvcm13b29kOwpBbmQgaXQgY29tZSB0byBwYXNzLCB3aGVuIGhlIGhlYXJldGggdGhlIHdvcmRzIG9mIHRoaXMgY3Vyc2UsIHRoYXQgaGUgYmxlc3MgaGltc2VsZiBpbiBoaXMgaGVhcnQsIHNheWluZywgSSBzaGFsbCBoYXZlIHBlYWNlLCB0aG91Z2ggSSB3YWxrIGluIHRoZSBpbWFnaW5hdGlvbiBvZiBtaW5lIGhlYXJ0LCB0byBhZGQgZHJ1bmtlbm5lc3MgdG8gdGhpcnN0OgpUaGUgTE9SRCB3aWxsIG5vdCBzcGFyZSBoaW0sIGJ1dCB0aGVuIHRoZSBhbmdlciBvZiB0aGUgTE9SRCBhbmQgaGlzIGplYWxvdXN5IHNoYWxsIHNtb2tlIGFnYWluc3QgdGhhdCBtYW4sIGFuZCBhbGwgdGhlIGN1cnNlcyB0aGF0IGFyZSB3cml0dGVuIGluIHRoaXMgYm9vayBzaGFsbCBsaWUgdXBvbiBoaW0sIGFuZCB0aGUgTE9SRCBzaGFsbCBibG90IG91dCBoaXMgbmFtZSBmcm9tIHVuZGVyIGhlYXZlbi4KQW5kIHRoZSBMT1JEIHNoYWxsIHNlcGFyYXRlIGhpbSB1bnRvIGV2aWwgb3V0IG9mIGFsbCB0aGUgdHJpYmVzIG9mIElzcmFlbCwgYWNjb3JkaW5nIHRvIGFsbCB0aGUgY3Vyc2VzIG9mIHRoZSBjb3ZlbmFudCB0aGF0IGFyZSB3cml0dGVuIGluIHRoaXMgYm9vayBvZiB0aGUgbGF3OgpTbyB0aGF0IHRoZSBnZW5lcmF0aW9uIHRvIGNvbWUgb2YgeW91ciBjaGlsZHJlbiB0aGF0IHNoYWxsIHJpc2UgdXAgYWZ0ZXIgeW91LCBhbmQgdGhlIHN0cmFuZ2VyIHRoYXQgc2hhbGwgY29tZSBmcm9tIGEgZmFyIGxhbmQsIHNoYWxsIHNheSwgd2hlbiB0aGV5IHNlZSB0aGUgcGxhZ3VlcyBvZiB0aGF0IGxhbmQsIGFuZCB0aGUgc2lja25lc3NlcyB3aGljaCB0aGUgTE9SRCBoYXRoIGxhaWQgdXBvbiBpdDsKQW5kIHRoYXQgdGhlIHdob2xlIGxhbmQgdGhlcmVvZiBpcyBicmltc3RvbmUsIGFuZCBzYWx0LCBhbmQgYnVybmluZywgdGhhdCBpdCBpcyBub3Qgc293biwgbm9yIGJlYXJldGgsIG5vciBhbnkgZ3Jhc3MgZ3Jvd2V0aCB0aGVyZWluLCBsaWtlIHRoZSBvdmVydGhyb3cgb2YgU29kb20sIGFuZCBHb21vcnJhaCwgQWRtYWgsIGFuZCBaZWJvaW0sIHdoaWNoIHRoZSBMT1JEIG92ZXJ0aHJldyBpbiBoaXMgYW5nZXIsIGFuZCBpbiBoaXMgd3JhdGg6CkV2ZW4gYWxsIG5hdGlvbnMgc2hhbGwgc2F5LCBXaGVyZWZvcmUgaGF0aCB0aGUgTE9SRCBkb25lIHRodXMgdW50byB0aGlzIGxhbmQ/IHdoYXQgbWVhbmV0aCB0aGUgaGVhdCBvZiB0aGlzIGdyZWF0IGFuZ2VyPwpUaGVuIG1lbiBzaGFsbCBzYXksIEJlY2F1c2UgdGhleSBoYXZlIGZvcnNha2VuIHRoZSBjb3ZlbmFudCBvZiB0aGUgTE9SRCBHb2Qgb2YgdGhlaXIgZmF0aGVycywgd2hpY2ggaGUgbWFkZSB3aXRoIHRoZW0gd2hlbiBoZSBicm91Z2h0IHRoZW0gZm9ydGggb3V0IG9mIHRoZSBsYW5kIG9mIEVneXB0OgpGb3IgdGhleSB3ZW50IGFuZCBzZXJ2ZWQgb3RoZXIgZ29kcywgYW5kIHdvcnNoaXBwZWQgdGhlbSwgZ29kcyB3aG9tIHRoZXkga25ldyBub3QsIGFuZCB3aG9tIGhlIGhhZCBub3QgZ2l2ZW4gdW50byB0aGVtOgpBbmQgdGhlIGFuZ2VyIG9mIHRoZSBMT1JEIHdhcyBraW5kbGVkIGFnYWluc3QgdGhpcyBsYW5kLCB0byBicmluZyB1cG9uIGl0IGFsbCB0aGUgY3Vyc2VzIHRoYXQgYXJlIHdyaXR0ZW4gaW4gdGhpcyBib29rOgpBbmQgdGhlIExPUkQgcm9vdGVkIHRoZW0gb3V0IG9mIHRoZWlyIGxhbmQgaW4gYW5nZXIsIGFuZCBpbiB3cmF0aCwgYW5kIGluIGdyZWF0IGluZGlnbmF0aW9uLCBhbmQgY2FzdCB0aGVtIGludG8gYW5vdGhlciBsYW5kLCBhcyBpdCBpcyB0aGlzIGRheS4KVGhlIHNlY3JldCB0aGluZ3MgYmVsb25nIHVudG8gdGhlIExPUkQgb3VyIEdvZDogYnV0IHRob3NlIHRoaW5ncyB3aGljaCBhcmUgcmV2ZWFsZWQgYmVsb25nIHVudG8gdXMgYW5kIHRvIG91ciBjaGlsZHJlbiBmb3IgZXZlciwgdGhhdCB3ZSBtYXkgZG8gYWxsIHRoZSB3b3JkcyBvZiB0aGlzIGxhdy4KQW5kIGl0IHNoYWxsIGNvbWUgdG8gcGFzcywgd2hlbiBhbGwgdGhlc2UgdGhpbmdzIGFyZSBjb21lIHVwb24gdGhlZSwgdGhlIGJsZXNzaW5nIGFuZCB0aGUgY3Vyc2UsIHdoaWNoIEkgaGF2ZSBzZXQgYmVmb3JlIHRoZWUsIGFuZCB0aG91IHNoYWx0IGNhbGwgdGhlbSB0byBtaW5kIGFtb25nIGFsbCB0aGUgbmF0aW9ucywgd2hpdGhlciB0aGUgTE9SRCB0aHkgR29kIGhhdGggZHJpdmVuIHRoZWUsCkFuZCBzaGFsdCByZXR1cm4gdW50byB0aGUgTE9SRCB0aHkgR29kLCBhbmQgc2hhbHQgb2JleSBoaXMgdm9pY2UgYWNjb3JkaW5nIHRvIGFsbCB0aGF0IEkgY29tbWFuZCB0aGVlIHRoaXMgZGF5LCB0aG91IGFuZCB0aHkgY2hpbGRyZW4sIHdpdGggYWxsIHRoaW5lIGhlYXJ0LCBhbmQgd2l0aCBhbGwgdGh5IHNvdWw7ClRoYXQgdGhlbiB0aGUgTE9SRCB0aHkgR29kIHdpbGwgdHVybiB0aHkgY2FwdGl2aXR5LCBhbmQgaGF2ZSBjb21wYXNzaW9uIHVwb24gdGhlZSwgYW5kIHdpbGwgcmV0dXJuIGFuZCBnYXRoZXIgdGhlZSBmcm9tIGFsbCB0aGUgbmF0aW9ucywgd2hpdGhlciB0aGUgTE9SRCB0aHkgR29kIGhhdGggc2NhdHRlcmVkIHRoZWUuCklmIGFueSBvZiB0aGluZSBiZSBkcml2ZW4gb3V0IHVudG8gdGhlIG91dG1vc3QgcGFydHMgb2YgaGVhdmVuLCBmcm9tIHRoZW5jZSB3aWxsIHRoZSBMT1JEIHRoeSBHb2QgZ2F0aGVyIHRoZWUsIGFuZCBmcm9tIHRoZW5jZSB3aWxsIGhlIGZldGNoIHRoZWU6CkFuZCB0aGUgTE9SRCB0aHkgR29kIHdpbGwgYnJpbmcgdGhlZSBpbnRvIHRoZSBsYW5kIHdoaWNoIHRoeSBmYXRoZXJzIHBvc3Nlc3NlZCwgYW5kIHRob3Ugc2hhbHQgcG9zc2VzcyBpdDsgYW5kIGhlIHdpbGwgZG8gdGhlZSBnb29kLCBhbmQgbXVsdGlwbHkgdGhlZSBhYm92ZSB0aHkgZmF0aGVycy4KQW5kIHRoZSBMT1JEIHRoeSBHb2Qgd2lsbCBjaXJjdW1jaXNlIHRoaW5lIGhlYXJ0LCBhbmQgdGhlIGhlYXJ0IG9mIHRoeSBzZWVkLCB0byBsb3ZlIHRoZSBMT1JEIHRoeSBHb2Qgd2l0aCBhbGwgdGhpbmUgaGVhcnQsIGFuZCB3aXRoIGFsbCB0aHkgc291bCwgdGhhdCB0aG91IG1heWVzdCBsaXZlLgpBbmQgdGhlIExPUkQgdGh5IEdvZCB3aWxsIHB1dCBhbGwgdGhlc2UgY3Vyc2VzIHVwb24gdGhpbmUgZW5lbWllcywgYW5kIG9uIHRoZW0gdGhhdCBoYXRlIHRoZWUsIHdoaWNoIHBlcnNlY3V0ZWQgdGhlZS4KQW5kIHRob3Ugc2hhbHQgcmV0dXJuIGFuZCBvYmV5IHRoZSB2b2ljZSBvZiB0aGUgTE9SRCwgYW5kIGRvIGFsbCBoaXMgY29tbWFuZG1lbnRzIHdoaWNoIEkgY29tbWFuZCB0aGVlIHRoaXMgZGF5LgpBbmQgdGhlIExPUkQgdGh5IEdvZCB3aWxsIG1ha2UgdGhlZSBwbGVudGVvdXMgaW4gZXZlcnkgd29yayBvZiB0aGluZSBoYW5kLCBpbiB0aGUgZnJ1aXQgb2YgdGh5IGJvZHksIGFuZCBpbiB0aGUgZnJ1aXQgb2YgdGh5IGNhdHRsZSwgYW5kIGluIHRoZSBmcnVpdCBvZiB0aHkgbGFuZCwgZm9yIGdvb2Q6IGZvciB0aGUgTE9SRCB3aWxsIGFnYWluIHJlam9pY2Ugb3ZlciB0aGVlIGZvciBnb29kLCBhcyBoZSByZWpvaWNlZCBvdmVyIHRoeSBmYXRoZXJzOgpJZiB0aG91IHNoYWx0IGhlYXJrZW4gdW50byB0aGUgdm9pY2Ugb2YgdGhlIExPUkQgdGh5IEdvZCwgdG8ga2VlcCBoaXMgY29tbWFuZG1lbnRzIGFuZCBoaXMgc3RhdHV0ZXMgd2hpY2ggYXJlIHdyaXR0ZW4gaW4gdGhpcyBib29rIG9mIHRoZSBsYXcsIGFuZCBpZiB0aG91IHR1cm4gdW50byB0aGUgTE9SRCB0aHkgR29kIHdpdGggYWxsIHRoaW5lIGhlYXJ0LCBhbmQgd2l0aCBhbGwgdGh5IHNvdWwuCkZvciB0aGlzIGNvbW1hbmRtZW50IHdoaWNoIEkgY29tbWFuZCB0aGVlIHRoaXMgZGF5LCBpdCBpcyBub3QgaGlkZGVuIGZyb20gdGhlZSwgbmVpdGhlciBpcyBpdCBmYXIgb2ZmLgpJdCBpcyBub3QgaW4gaGVhdmVuLCB0aGF0IHRob3Ugc2hvdWxkZXN0IHNheSwgV2hvIHNoYWxsIGdvIHVwIGZvciB1cyB0byBoZWF2ZW4sIGFuZCBicmluZyBpdCB1bnRvIHVzLCB0aGF0IHdlIG1heSBoZWFyIGl0LCBhbmQgZG8gaXQ/Ck5laXRoZXIgaXMgaXQgYmV5b25kIHRoZSBzZWEsIHRoYXQgdGhvdSBzaG91bGRlc3Qgc2F5LCBXaG8gc2hhbGwgZ28gb3ZlciB0aGUgc2VhIGZvciB1cywgYW5kIGJyaW5nIGl0IHVudG8gdXMsIHRoYXQgd2UgbWF5IGhlYXIgaXQsIGFuZCBkbyBpdD8KQnV0IHRoZSB3b3JkIGlzIHZlcnkgbmlnaCB1bnRvIHRoZWUsIGluIHRoeSBtb3V0aCwgYW5kIGluIHRoeSBoZWFydCwgdGhhdCB0aG91IG1heWVzdCBkbyBpdC4KU2VlLCBJIGhhdmUgc2V0IGJlZm9yZSB0aGVlIHRoaXMgZGF5IGxpZmUgYW5kIGdvb2QsIGFuZCBkZWF0aCBhbmQgZXZpbDsKSW4gdGhhdCBJIGNvbW1hbmQgdGhlZSB0aGlzIGRheSB0byBsb3ZlIHRoZSBMT1JEIHRoeSBHb2QsIHRvIHdhbGsgaW4gaGlzIHdheXMsIGFuZCB0byBrZWVwIGhpcyBjb21tYW5kbWVudHMgYW5kIGhpcyBzdGF0dXRlcyBhbmQgaGlzIGp1ZGdtZW50cywgdGhhdCB0aG91IG1heWVzdCBsaXZlIGFuZCBtdWx0aXBseTogYW5kIHRoZSBMT1JEIHRoeSBHb2Qgc2hhbGwgYmxlc3MgdGhlZSBpbiB0aGUgbGFuZCB3aGl0aGVyIHRob3UgZ29lc3QgdG8gcG9zc2VzcyBpdC4KQnV0IGlmIHRoaW5lIGhlYXJ0IHR1cm4gYXdheSwgc28gdGhhdCB0aG91IHdpbHQgbm90IGhlYXIsIGJ1dCBzaGFsdCBiZSBkcmF3biBhd2F5LCBhbmQgd29yc2hpcCBvdGhlciBnb2RzLCBhbmQgc2VydmUgdGhlbTsKSSBkZW5vdW5jZSB1bnRvIHlvdSB0aGlzIGRheSwgdGhhdCB5ZSBzaGFsbCBzdXJlbHkgcGVyaXNoLCBhbmQgdGhhdCB5ZSBzaGFsbCBub3QgcHJvbG9uZyB5b3VyIGRheXMgdXBvbiB0aGUgbGFuZCwgd2hpdGhlciB0aG91IHBhc3Nlc3Qgb3ZlciBKb3JkYW4gdG8gZ28gdG8gcG9zc2VzcyBpdC4KSSBjYWxsIGhlYXZlbiBhbmQgZWFydGggdG8gcmVjb3JkIHRoaXMgZGF5IGFnYWluc3QgeW91LCB0aGF0IEkgaGF2ZSBzZXQgYmVmb3JlIHlvdSBsaWZlIGFuZCBkZWF0aCwgYmxlc3NpbmcgYW5kIGN1cnNpbmc6IHRoZXJlZm9yZSBjaG9vc2UgbGlmZSwgdGhhdCBib3RoIHRob3UgYW5kIHRoeSBzZWVkIG1heSBsaXZlOgpUaGF0IHRob3UgbWF5ZXN0IGxvdmUgdGhlIExPUkQgdGh5IEdvZCwgYW5kIHRoYXQgdGhvdSBtYXllc3Qgb2JleSBoaXMgdm9pY2UsIGFuZCB0aGF0IHRob3UgbWF5ZXN0IGNsZWF2ZSB1bnRvIGhpbTogZm9yIGhlIGlzIHRoeSBsaWZlLCBhbmQgdGhlIGxlbmd0aCBvZiB0aHkgZGF5czogdGhhdCB0aG91IG1heWVzdCBkd2VsbCBpbiB0aGUgbGFuZCB3aGljaCB0aGUgTE9SRCBzd2FyZSB1bnRvIHRoeSBmYXRoZXJzLCB0byBBYnJhaGFtLCB0byBJc2FhYywgYW5kIHRvIEphY29iLCB0byBnaXZlIHRoZW0uCkFuZCBNb3NlcyB3ZW50IGFuZCBzcGFrZSB0aGVzZSB3b3JkcyB1bnRvIGFsbCBJc3JhZWwuCkFuZCBoZSBzYWlkIHVudG8gdGhlbSwgSSBhbSBhbiBodW5kcmVkIGFuZCB0d2VudHkgeWVhcnMgb2xkIHRoaXMgZGF5OyBJIGNhbiBubyBtb3JlIGdvIG91dCBhbmQgY29tZSBpbjogYWxzbyB0aGUgTE9SRCBoYXRoIHNhaWQgdW50byBtZSwgVGhvdSBzaGFsdCBub3QgZ28gb3ZlciB0aGlzIEpvcmRhbi4KVGhlIExPUkQgdGh5IEdvZCwgaGUgd2lsbCBnbyBvdmVyIGJlZm9yZSB0aGVlLCBhbmQgaGUgd2lsbCBkZXN0cm95IHRoZXNlIG5hdGlvbnMgZnJvbSBiZWZvcmUgdGhlZSwgYW5kIHRob3Ugc2hhbHQgcG9zc2VzcyB0aGVtOiBhbmQgSm9zaHVhLCBoZSBzaGFsbCBnbyBvdmVyIGJlZm9yZSB0aGVlLCBhcyB0aGUgTE9SRCBoYXRoIHNhaWQuCkFuZCB0aGUgTE9SRCBzaGFsbCBkbyB1bnRvIHRoZW0gYXMgaGUgZGlkIHRvIFNpaG9uIGFuZCB0byBPZywga2luZ3Mgb2YgdGhlIEFtb3JpdGVzLCBhbmQgdW50byB0aGUgbGFuZCBvZiB0aGVtLCB3aG9tIGhlIGRlc3Ryb3llZC4KQW5kIHRoZSBMT1JEIHNoYWxsIGdpdmUgdGhlbSB1cCBiZWZvcmUgeW91ciBmYWNlLCB0aGF0IHllIG1heSBkbyB1bnRvIHRoZW0gYWNjb3JkaW5nIHVudG8gYWxsIHRoZSBjb21tYW5kbWVudHMgd2hpY2ggSSBoYXZlIGNvbW1hbmRlZCB5b3UuCkJlIHN0cm9uZyBhbmQgb2YgYSBnb29kIGNvdXJhZ2UsIGZlYXIgbm90LCBub3IgYmUgYWZyYWlkIG9mIHRoZW06IGZvciB0aGUgTE9SRCB0aHkgR29kLCBoZSBpdCBpcyB0aGF0IGRvdGggZ28gd2l0aCB0aGVlOyBoZSB3aWxsIG5vdCBmYWlsIHRoZWUsIG5vciBmb3JzYWtlIHRoZWUuCkFuZCBNb3NlcyBjYWxsZWQgdW50byBKb3NodWEsIGFuZCBzYWlkIHVudG8gaGltIGluIHRoZSBzaWdodCBvZiBhbGwgSXNyYWVsLCBCZSBzdHJvbmcgYW5kIG9mIGEgZ29vZCBjb3VyYWdlOiBmb3IgdGhvdSBtdXN0IGdvIHdpdGggdGhpcyBwZW9wbGUgdW50byB0aGUgbGFuZCB3aGljaCB0aGUgTE9SRCBoYXRoIHN3b3JuIHVudG8gdGhlaXIgZmF0aGVycyB0byBnaXZlIHRoZW07IGFuZCB0aG91IHNoYWx0IGNhdXNlIHRoZW0gdG8gaW5oZXJpdCBpdC4KQW5kIHRoZSBMT1JELCBoZSBpdCBpcyB0aGF0IGRvdGggZ28gYmVmb3JlIHRoZWU7IGhlIHdpbGwgYmUgd2l0aCB0aGVlLCBoZSB3aWxsIG5vdCBmYWlsIHRoZWUsIG5laXRoZXIgZm9yc2FrZSB0aGVlOiBmZWFyIG5vdCwgbmVpdGhlciBiZSBkaXNtYXllZC4KQW5kIE1vc2VzIHdyb3RlIHRoaXMgbGF3LCBhbmQgZGVsaXZlcmVkIGl0IHVudG8gdGhlIHByaWVzdHMgdGhlIHNvbnMgb2YgTGV2aSwgd2hpY2ggYmFyZSB0aGUgYXJrIG9mIHRoZSBjb3ZlbmFudCBvZiB0aGUgTE9SRCwgYW5kIHVudG8gYWxsIHRoZSBlbGRlcnMgb2YgSXNyYWVsLgpBbmQgTW9zZXMgY29tbWFuZGVkIHRoZW0sIHNheWluZywgQXQgdGhlIGVuZCBvZiBldmVyeSBzZXZlbiB5ZWFycywgaW4gdGhlIHNvbGVtbml0eSBvZiB0aGUgeWVhciBvZiByZWxlYXNlLCBpbiB0aGUgZmVhc3Qgb2YgdGFiZXJuYWNsZXMsCldoZW4gYWxsIElzcmFlbCBpcyBjb21lIHRvIGFwcGVhciBiZWZvcmUgdGhlIExPUkQgdGh5IEdvZCBpbiB0aGUgcGxhY2Ugd2hpY2ggaGUgc2hhbGwgY2hvb3NlLCB0aG91IHNoYWx0IHJlYWQgdGhpcyBsYXcgYmVmb3JlIGFsbCBJc3JhZWwgaW4gdGhlaXIgaGVhcmluZy4KR2F0aGVyIHRoZSBwZW9wbGUgdG9nZXRoZXIsIG1lbiBhbmQgd29tZW4sIGFuZCBjaGlsZHJlbiwgYW5kIHRoeSBzdHJhbmdlciB0aGF0IGlzIHdpdGhpbiB0aHkgZ2F0ZXMsIHRoYXQgdGhleSBtYXkgaGVhciwgYW5kIHRoYXQgdGhleSBtYXkgbGVhcm4sIGFuZCBmZWFyIHRoZSBMT1JEIHlvdXIgR29kLCBhbmQgb2JzZXJ2ZSB0byBkbyBhbGwgdGhlIHdvcmRzIG9mIHRoaXMgbGF3OgpBbmQgdGhhdCB0aGVpciBjaGlsZHJlbiwgd2hpY2ggaGF2ZSBub3Qga25vd24gYW55IHRoaW5nLCBtYXkgaGVhciwgYW5kIGxlYXJuIHRvIGZlYXIgdGhlIExPUkQgeW91ciBHb2QsIGFzIGxvbmcgYXMgeWUgbGl2ZSBpbiB0aGUgbGFuZCB3aGl0aGVyIHllIGdvIG92ZXIgSm9yZGFuIHRvIHBvc3Nlc3MgaXQuCkFuZCB0aGUgTE9SRCBzYWlkIHVudG8gTW9zZXMsIEJlaG9sZCwgdGh5IGRheXMgYXBwcm9hY2ggdGhhdCB0aG91IG11c3QgZGllOiBjYWxsIEpvc2h1YSwgYW5kIHByZXNlbnQgeW91cnNlbHZlcyBpbiB0aGUgdGFiZXJuYWNsZSBvZiB0aGUgY29uZ3JlZ2F0aW9uLCB0aGF0IEkgbWF5IGdpdmUgaGltIGEgY2hhcmdlLiBBbmQgTW9zZXMgYW5kIEpvc2h1YSB3ZW50LCBhbmQgcHJlc2VudGVkIHRoZW1zZWx2ZXMgaW4gdGhlIHRhYmVybmFjbGUgb2YgdGhlIGNvbmdyZWdhdGlvbi4KQW5kIHRoZSBMT1JEIGFwcGVhcmVkIGluIHRoZSB0YWJlcm5hY2xlIGluIGEgcGlsbGFyIG9mIGEgY2xvdWQ6IGFuZCB0aGUgcGlsbGFyIG9mIHRoZSBjbG91ZCBzdG9vZCBvdmVyIHRoZSBkb29yIG9mIHRoZSB0YWJlcm5hY2xlLgpBbmQgdGhlIExPUkQgc2FpZCB1bnRvIE1vc2VzLCBCZWhvbGQsIHRob3Ugc2hhbHQgc2xlZXAgd2l0aCB0aHkgZmF0aGVyczsgYW5kIHRoaXMgcGVvcGxlIHdpbGwgcmlzZSB1cCwgYW5kIGdvIGEgd2hvcmluZyBhZnRlciB0aGUgZ29kcyBvZiB0aGUgc3RyYW5nZXJzIG9mIHRoZSBsYW5kLCB3aGl0aGVyIHRoZXkgZ28gdG8gYmUgYW1vbmcgdGhlbSwgYW5kIHdpbGwgZm9yc2FrZSBtZSwgYW5kIGJyZWFrIG15IGNvdmVuYW50IHdoaWNoIEkgaGF2ZSBtYWRlIHdpdGggdGhlbS4KVGhlbiBteSBhbmdlciBzaGFsbCBiZSBraW5kbGVkIGFnYWluc3QgdGhlbSBpbiB0aGF0IGRheSwgYW5kIEkgd2lsbCBmb3JzYWtlIHRoZW0sIGFuZCBJIHdpbGwgaGlkZSBteSBmYWNlIGZyb20gdGhlbSwgYW5kIHRoZXkgc2hhbGwgYmUgZGV2b3VyZWQsIGFuZCBtYW55IGV2aWxzIGFuZCB0cm91YmxlcyBzaGFsbCBiZWZhbGwgdGhlbTsgc28gdGhhdCB0aGV5IHdpbGwgc2F5IGluIHRoYXQgZGF5LCBBcmUgbm90IHRoZXNlIGV2aWxzIGNvbWUgdXBvbiB1cywgYmVjYXVzZSBvdXIgR29kIGlzIG5vdCBhbW9uZyB1cz8KQW5kIEkgd2lsbCBzdXJlbHkgaGlkZSBteSBmYWNlIGluIHRoYXQgZGF5IGZvciBhbGwgdGhlIGV2aWxzIHdoaWNoIHRoZXkgc2hhbGwgaGF2ZSB3cm91Z2h0LCBpbiB0aGF0IHRoZXkgYXJlIHR1cm5lZCB1bnRvIG90aGVyIGdvZHMuCk5vdyB0aGVyZWZvcmUgd3JpdGUgeWUgdGhpcyBzb25nIGZvciB5b3UsIGFuZCB0ZWFjaCBpdCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsOiBwdXQgaXQgaW4gdGhlaXIgbW91dGhzLCB0aGF0IHRoaXMgc29uZyBtYXkgYmUgYSB3aXRuZXNzIGZvciBtZSBhZ2FpbnN0IHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwuCkZvciB3aGVuIEkgc2hhbGwgaGF2ZSBicm91Z2h0IHRoZW0gaW50byB0aGUgbGFuZCB3aGljaCBJIHN3YXJlIHVudG8gdGhlaXIgZmF0aGVycywgdGhhdCBmbG93ZXRoIHdpdGggbWlsayBhbmQgaG9uZXk7IGFuZCB0aGV5IHNoYWxsIGhhdmUgZWF0ZW4gYW5kIGZpbGxlZCB0aGVtc2VsdmVzLCBhbmQgd2F4ZW4gZmF0OyB0aGVuIHdpbGwgdGhleSB0dXJuIHVudG8gb3RoZXIgZ29kcywgYW5kIHNlcnZlIHRoZW0sIGFuZCBwcm92b2tlIG1lLCBhbmQgYnJlYWsgbXkgY292ZW5hbnQuCkFuZCBpdCBzaGFsbCBjb21lIHRvIHBhc3MsIHdoZW4gbWFueSBldmlscyBhbmQgdHJvdWJsZXMgYXJlIGJlZmFsbGVuIHRoZW0sIHRoYXQgdGhpcyBzb25nIHNoYWxsIHRlc3RpZnkgYWdhaW5zdCB0aGVtIGFzIGEgd2l0bmVzczsgZm9yIGl0IHNoYWxsIG5vdCBiZSBmb3Jnb3R0ZW4gb3V0IG9mIHRoZSBtb3V0aHMgb2YgdGhlaXIgc2VlZDogZm9yIEkga25vdyB0aGVpciBpbWFnaW5hdGlvbiB3aGljaCB0aGV5IGdvIGFib3V0LCBldmVuIG5vdywgYmVmb3JlIEkgaGF2ZSBicm91Z2h0IHRoZW0gaW50byB0aGUgbGFuZCB3aGljaCBJIHN3YXJlLgpNb3NlcyB0aGVyZWZvcmUgd3JvdGUgdGhpcyBzb25nIHRoZSBzYW1lIGRheSwgYW5kIHRhdWdodCBpdCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLgpBbmQgaGUgZ2F2ZSBKb3NodWEgdGhlIHNvbiBvZiBOdW4gYSBjaGFyZ2UsIGFuZCBzYWlkLCBCZSBzdHJvbmcgYW5kIG9mIGEgZ29vZCBjb3VyYWdlOiBmb3IgdGhvdSBzaGFsdCBicmluZyB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGludG8gdGhlIGxhbmQgd2hpY2ggSSBzd2FyZSB1bnRvIHRoZW06IGFuZCBJIHdpbGwgYmUgd2l0aCB0aGVlLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIE1vc2VzIGhhZCBtYWRlIGFuIGVuZCBvZiB3cml0aW5nIHRoZSB3b3JkcyBvZiB0aGlzIGxhdyBpbiBhIGJvb2ssIHVudGlsIHRoZXkgd2VyZSBmaW5pc2hlZCwKVGhhdCBNb3NlcyBjb21tYW5kZWQgdGhlIExldml0ZXMsIHdoaWNoIGJhcmUgdGhlIGFyayBvZiB0aGUgY292ZW5hbnQgb2YgdGhlIExPUkQsIHNheWluZywKVGFrZSB0aGlzIGJvb2sgb2YgdGhlIGxhdywgYW5kIHB1dCBpdCBpbiB0aGUgc2lkZSBvZiB0aGUgYXJrIG9mIHRoZSBjb3ZlbmFudCBvZiB0aGUgTE9SRCB5b3VyIEdvZCwgdGhhdCBpdCBtYXkgYmUgdGhlcmUgZm9yIGEgd2l0bmVzcyBhZ2FpbnN0IHRoZWUuCkZvciBJIGtub3cgdGh5IHJlYmVsbGlvbiwgYW5kIHRoeSBzdGlmZiBuZWNrOiBiZWhvbGQsIHdoaWxlIEkgYW0geWV0IGFsaXZlIHdpdGggeW91IHRoaXMgZGF5LCB5ZSBoYXZlIGJlZW4gcmViZWxsaW91cyBhZ2FpbnN0IHRoZSBMT1JEOyBhbmQgaG93IG11Y2ggbW9yZSBhZnRlciBteSBkZWF0aD8KR2F0aGVyIHVudG8gbWUgYWxsIHRoZSBlbGRlcnMgb2YgeW91ciB0cmliZXMsIGFuZCB5b3VyIG9mZmljZXJzLCB0aGF0IEkgbWF5IHNwZWFrIHRoZXNlIHdvcmRzIGluIHRoZWlyIGVhcnMsIGFuZCBjYWxsIGhlYXZlbiBhbmQgZWFydGggdG8gcmVjb3JkIGFnYWluc3QgdGhlbS4KRm9yIEkga25vdyB0aGF0IGFmdGVyIG15IGRlYXRoIHllIHdpbGwgdXR0ZXJseSBjb3JydXB0IHlvdXJzZWx2ZXMsIGFuZCB0dXJuIGFzaWRlIGZyb20gdGhlIHdheSB3aGljaCBJIGhhdmUgY29tbWFuZGVkIHlvdTsgYW5kIGV2aWwgd2lsbCBiZWZhbGwgeW91IGluIHRoZSBsYXR0ZXIgZGF5czsgYmVjYXVzZSB5ZSB3aWxsIGRvIGV2aWwgaW4gdGhlIHNpZ2h0IG9mIHRoZSBMT1JELCB0byBwcm92b2tlIGhpbSB0byBhbmdlciB0aHJvdWdoIHRoZSB3b3JrIG9mIHlvdXIgaGFuZHMuCkFuZCBNb3NlcyBzcGFrZSBpbiB0aGUgZWFycyBvZiBhbGwgdGhlIGNvbmdyZWdhdGlvbiBvZiBJc3JhZWwgdGhlIHdvcmRzIG9mIHRoaXMgc29uZywgdW50aWwgdGhleSB3ZXJlIGVuZGVkLgpHaXZlIGVhciwgTyB5ZSBoZWF2ZW5zLCBhbmQgSSB3aWxsIHNwZWFrOyBhbmQgaGVhciwgTyBlYXJ0aCwgdGhlIHdvcmRzIG9mIG15IG1vdXRoLgpNeSBkb2N0cmluZSBzaGFsbCBkcm9wIGFzIHRoZSByYWluLCBteSBzcGVlY2ggc2hhbGwgZGlzdGlsIGFzIHRoZSBkZXcsIGFzIHRoZSBzbWFsbCByYWluIHVwb24gdGhlIHRlbmRlciBoZXJiLCBhbmQgYXMgdGhlIHNob3dlcnMgdXBvbiB0aGUgZ3Jhc3M6CkJlY2F1c2UgSSB3aWxsIHB1Ymxpc2ggdGhlIG5hbWUgb2YgdGhlIExPUkQ6IGFzY3JpYmUgeWUgZ3JlYXRuZXNzIHVudG8gb3VyIEdvZC4KSGUgaXMgdGhlIFJvY2ssIGhpcyB3b3JrIGlzIHBlcmZlY3Q6IGZvciBhbGwgaGlzIHdheXMgYXJlIGp1ZGdtZW50OiBhIEdvZCBvZiB0cnV0aCBhbmQgd2l0aG91dCBpbmlxdWl0eSwganVzdCBhbmQgcmlnaHQgaXMgaGUuClRoZXkgaGF2ZSBjb3JydXB0ZWQgdGhlbXNlbHZlcywgdGhlaXIgc3BvdCBpcyBub3QgdGhlIHNwb3Qgb2YgaGlzIGNoaWxkcmVuOiB0aGV5IGFyZSBhIHBlcnZlcnNlIGFuZCBjcm9va2VkIGdlbmVyYXRpb24uCkRvIHllIHRodXMgcmVxdWl0ZSB0aGUgTE9SRCwgTyBmb29saXNoIHBlb3BsZSBhbmQgdW53aXNlPyBpcyBub3QgaGUgdGh5IGZhdGhlciB0aGF0IGhhdGggYm91Z2h0IHRoZWU/IGhhdGggaGUgbm90IG1hZGUgdGhlZSwgYW5kIGVzdGFibGlzaGVkIHRoZWU/ClJlbWVtYmVyIHRoZSBkYXlzIG9mIG9sZCwgY29uc2lkZXIgdGhlIHllYXJzIG9mIG1hbnkgZ2VuZXJhdGlvbnM6IGFzayB0aHkgZmF0aGVyLCBhbmQgaGUgd2lsbCBzaGV3IHRoZWU7IHRoeSBlbGRlcnMsIGFuZCB0aGV5IHdpbGwgdGVsbCB0aGVlLgpXaGVuIHRoZSBNb3N0IEhpZ2ggZGl2aWRlZCB0byB0aGUgbmF0aW9ucyB0aGVpciBpbmhlcml0YW5jZSwgd2hlbiBoZSBzZXBhcmF0ZWQgdGhlIHNvbnMgb2YgQWRhbSwgaGUgc2V0IHRoZSBib3VuZHMgb2YgdGhlIHBlb3BsZSBhY2NvcmRpbmcgdG8gdGhlIG51bWJlciBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLgpGb3IgdGhlIExPUkQncyBwb3J0aW9uIGlzIGhpcyBwZW9wbGU7IEphY29iIGlzIHRoZSBsb3Qgb2YgaGlzIGluaGVyaXRhbmNlLgpIZSBmb3VuZCBoaW0gaW4gYSBkZXNlcnQgbGFuZCwgYW5kIGluIHRoZSB3YXN0ZSBob3dsaW5nIHdpbGRlcm5lc3M7IGhlIGxlZCBoaW0gYWJvdXQsIGhlIGluc3RydWN0ZWQgaGltLCBoZSBrZXB0IGhpbSBhcyB0aGUgYXBwbGUgb2YgaGlzIGV5ZS4KQXMgYW4gZWFnbGUgc3RpcnJldGggdXAgaGVyIG5lc3QsIGZsdXR0ZXJldGggb3ZlciBoZXIgeW91bmcsIHNwcmVhZGV0aCBhYnJvYWQgaGVyIHdpbmdzLCB0YWtldGggdGhlbSwgYmVhcmV0aCB0aGVtIG9uIGhlciB3aW5nczoKU28gdGhlIExPUkQgYWxvbmUgZGlkIGxlYWQgaGltLCBhbmQgdGhlcmUgd2FzIG5vIHN0cmFuZ2UgZ29kIHdpdGggaGltLgpIZSBtYWRlIGhpbSByaWRlIG9uIHRoZSBoaWdoIHBsYWNlcyBvZiB0aGUgZWFydGgsIHRoYXQgaGUgbWlnaHQgZWF0IHRoZSBpbmNyZWFzZSBvZiB0aGUgZmllbGRzOyBhbmQgaGUgbWFkZSBoaW0gdG8gc3VjayBob25leSBvdXQgb2YgdGhlIHJvY2ssIGFuZCBvaWwgb3V0IG9mIHRoZSBmbGludHkgcm9jazsKQnV0dGVyIG9mIGtpbmUsIGFuZCBtaWxrIG9mIHNoZWVwLCB3aXRoIGZhdCBvZiBsYW1icywgYW5kIHJhbXMgb2YgdGhlIGJyZWVkIG9mIEJhc2hhbiwgYW5kIGdvYXRzLCB3aXRoIHRoZSBmYXQgb2Yga2lkbmV5cyBvZiB3aGVhdDsgYW5kIHRob3UgZGlkc3QgZHJpbmsgdGhlIHB1cmUgYmxvb2Qgb2YgdGhlIGdyYXBlLgpCdXQgSmVzaHVydW4gd2F4ZWQgZmF0LCBhbmQga2lja2VkOiB0aG91IGFydCB3YXhlbiBmYXQsIHRob3UgYXJ0IGdyb3duIHRoaWNrLCB0aG91IGFydCBjb3ZlcmVkIHdpdGggZmF0bmVzczsgdGhlbiBoZSBmb3Jzb29rIEdvZCB3aGljaCBtYWRlIGhpbSwgYW5kIGxpZ2h0bHkgZXN0ZWVtZWQgdGhlIFJvY2sgb2YgaGlzIHNhbHZhdGlvbi4KVGhleSBwcm92b2tlZCBoaW0gdG8gamVhbG91c3kgd2l0aCBzdHJhbmdlIGdvZHMsIHdpdGggYWJvbWluYXRpb25zIHByb3Zva2VkIHRoZXkgaGltIHRvIGFuZ2VyLgpUaGV5IHNhY3JpZmljZWQgdW50byBkZXZpbHMsIG5vdCB0byBHb2Q7IHRvIGdvZHMgd2hvbSB0aGV5IGtuZXcgbm90LCB0byBuZXcgZ29kcyB0aGF0IGNhbWUgbmV3bHkgdXAsIHdob20geW91ciBmYXRoZXJzIGZlYXJlZCBub3QuCk9mIHRoZSBSb2NrIHRoYXQgYmVnYXQgdGhlZSB0aG91IGFydCB1bm1pbmRmdWwsIGFuZCBoYXN0IGZvcmdvdHRlbiBHb2QgdGhhdCBmb3JtZWQgdGhlZS4KQW5kIHdoZW4gdGhlIExPUkQgc2F3IGl0LCBoZSBhYmhvcnJlZCB0aGVtLCBiZWNhdXNlIG9mIHRoZSBwcm92b2tpbmcgb2YgaGlzIHNvbnMsIGFuZCBvZiBoaXMgZGF1Z2h0ZXJzLgpBbmQgaGUgc2FpZCwgSSB3aWxsIGhpZGUgbXkgZmFjZSBmcm9tIHRoZW0sIEkgd2lsbCBzZWUgd2hhdCB0aGVpciBlbmQgc2hhbGwgYmU6IGZvciB0aGV5IGFyZSBhIHZlcnkgZnJvd2FyZCBnZW5lcmF0aW9uLCBjaGlsZHJlbiBpbiB3aG9tIGlzIG5vIGZhaXRoLgpUaGV5IGhhdmUgbW92ZWQgbWUgdG8gamVhbG91c3kgd2l0aCB0aGF0IHdoaWNoIGlzIG5vdCBHb2Q7IHRoZXkgaGF2ZSBwcm92b2tlZCBtZSB0byBhbmdlciB3aXRoIHRoZWlyIHZhbml0aWVzOiBhbmQgSSB3aWxsIG1vdmUgdGhlbSB0byBqZWFsb3VzeSB3aXRoIHRob3NlIHdoaWNoIGFyZSBub3QgYSBwZW9wbGU7IEkgd2lsbCBwcm92b2tlIHRoZW0gdG8gYW5nZXIgd2l0aCBhIGZvb2xpc2ggbmF0aW9uLgpGb3IgYSBmaXJlIGlzIGtpbmRsZWQgaW4gbWluZSBhbmdlciwgYW5kIHNoYWxsIGJ1cm4gdW50byB0aGUgbG93ZXN0IGhlbGwsIGFuZCBzaGFsbCBjb25zdW1lIHRoZSBlYXJ0aCB3aXRoIGhlciBpbmNyZWFzZSwgYW5kIHNldCBvbiBmaXJlIHRoZSBmb3VuZGF0aW9ucyBvZiB0aGUgbW91bnRhaW5zLgpJIHdpbGwgaGVhcCBtaXNjaGllZnMgdXBvbiB0aGVtOyBJIHdpbGwgc3BlbmQgbWluZSBhcnJvd3MgdXBvbiB0aGVtLgpUaGV5IHNoYWxsIGJlIGJ1cm50IHdpdGggaHVuZ2VyLCBhbmQgZGV2b3VyZWQgd2l0aCBidXJuaW5nIGhlYXQsIGFuZCB3aXRoIGJpdHRlciBkZXN0cnVjdGlvbjogSSB3aWxsIGFsc28gc2VuZCB0aGUgdGVldGggb2YgYmVhc3RzIHVwb24gdGhlbSwgd2l0aCB0aGUgcG9pc29uIG9mIHNlcnBlbnRzIG9mIHRoZSBkdXN0LgpUaGUgc3dvcmQgd2l0aG91dCwgYW5kIHRlcnJvciB3aXRoaW4sIHNoYWxsIGRlc3Ryb3kgYm90aCB0aGUgeW91bmcgbWFuIGFuZCB0aGUgdmlyZ2luLCB0aGUgc3Vja2xpbmcgYWxzbyB3aXRoIHRoZSBtYW4gb2YgZ3JheSBoYWlycy4KSSBzYWlkLCBJIHdvdWxkIHNjYXR0ZXIgdGhlbSBpbnRvIGNvcm5lcnMsIEkgd291bGQgbWFrZSB0aGUgcmVtZW1icmFuY2Ugb2YgdGhlbSB0byBjZWFzZSBmcm9tIGFtb25nIG1lbjoKV2VyZSBpdCBub3QgdGhhdCBJIGZlYXJlZCB0aGUgd3JhdGggb2YgdGhlIGVuZW15LCBsZXN0IHRoZWlyIGFkdmVyc2FyaWVzIHNob3VsZCBiZWhhdmUgdGhlbXNlbHZlcyBzdHJhbmdlbHksIGFuZCBsZXN0IHRoZXkgc2hvdWxkIHNheSwgT3VyIGhhbmQgaXMgaGlnaCwgYW5kIHRoZSBMT1JEIGhhdGggbm90IGRvbmUgYWxsIHRoaXMuCkZvciB0aGV5IGFyZSBhIG5hdGlvbiB2b2lkIG9mIGNvdW5zZWwsIG5laXRoZXIgaXMgdGhlcmUgYW55IHVuZGVyc3RhbmRpbmcgaW4gdGhlbS4KTyB0aGF0IHRoZXkgd2VyZSB3aXNlLCB0aGF0IHRoZXkgdW5kZXJzdG9vZCB0aGlzLCB0aGF0IHRoZXkgd291bGQgY29uc2lkZXIgdGhlaXIgbGF0dGVyIGVuZCEKSG93IHNob3VsZCBvbmUgY2hhc2UgYSB0aG91c2FuZCwgYW5kIHR3byBwdXQgdGVuIHRob3VzYW5kIHRvIGZsaWdodCwgZXhjZXB0IHRoZWlyIFJvY2sgaGFkIHNvbGQgdGhlbSwgYW5kIHRoZSBMT1JEIGhhZCBzaHV0IHRoZW0gdXA/CkZvciB0aGVpciByb2NrIGlzIG5vdCBhcyBvdXIgUm9jaywgZXZlbiBvdXIgZW5lbWllcyB0aGVtc2VsdmVzIGJlaW5nIGp1ZGdlcy4KRm9yIHRoZWlyIHZpbmUgaXMgb2YgdGhlIHZpbmUgb2YgU29kb20sIGFuZCBvZiB0aGUgZmllbGRzIG9mIEdvbW9ycmFoOiB0aGVpciBncmFwZXMgYXJlIGdyYXBlcyBvZiBnYWxsLCB0aGVpciBjbHVzdGVycyBhcmUgYml0dGVyOgpUaGVpciB3aW5lIGlzIHRoZSBwb2lzb24gb2YgZHJhZ29ucywgYW5kIHRoZSBjcnVlbCB2ZW5vbSBvZiBhc3BzLgpJcyBub3QgdGhpcyBsYWlkIHVwIGluIHN0b3JlIHdpdGggbWUsIGFuZCBzZWFsZWQgdXAgYW1vbmcgbXkgdHJlYXN1cmVzPwpUbyBtZSBiZWxvbmdldGggdmVuZ2VhbmNlIGFuZCByZWNvbXBlbmNlOyB0aGVpciBmb290IHNoYWxsIHNsaWRlIGluIGR1ZSB0aW1lOiBmb3IgdGhlIGRheSBvZiB0aGVpciBjYWxhbWl0eSBpcyBhdCBoYW5kLCBhbmQgdGhlIHRoaW5ncyB0aGF0IHNoYWxsIGNvbWUgdXBvbiB0aGVtIG1ha2UgaGFzdGUuCkZvciB0aGUgTE9SRCBzaGFsbCBqdWRnZSBoaXMgcGVvcGxlLCBhbmQgcmVwZW50IGhpbXNlbGYgZm9yIGhpcyBzZXJ2YW50cywgd2hlbiBoZSBzZWV0aCB0aGF0IHRoZWlyIHBvd2VyIGlzIGdvbmUsIGFuZCB0aGVyZSBpcyBub25lIHNodXQgdXAsIG9yIGxlZnQuCkFuZCBoZSBzaGFsbCBzYXksIFdoZXJlIGFyZSB0aGVpciBnb2RzLCB0aGVpciByb2NrIGluIHdob20gdGhleSB0cnVzdGVkLApXaGljaCBkaWQgZWF0IHRoZSBmYXQgb2YgdGhlaXIgc2FjcmlmaWNlcywgYW5kIGRyYW5rIHRoZSB3aW5lIG9mIHRoZWlyIGRyaW5rIG9mZmVyaW5ncz8gbGV0IHRoZW0gcmlzZSB1cCBhbmQgaGVscCB5b3UsIGFuZCBiZSB5b3VyIHByb3RlY3Rpb24uClNlZSBub3cgdGhhdCBJLCBldmVuIEksIGFtIGhlLCBhbmQgdGhlcmUgaXMgbm8gZ29kIHdpdGggbWU6IEkga2lsbCwgYW5kIEkgbWFrZSBhbGl2ZTsgSSB3b3VuZCwgYW5kIEkgaGVhbDogbmVpdGhlciBpcyB0aGVyZSBhbnkgdGhhdCBjYW4gZGVsaXZlciBvdXQgb2YgbXkgaGFuZC4KRm9yIEkgbGlmdCB1cCBteSBoYW5kIHRvIGhlYXZlbiwgYW5kIHNheSwgSSBsaXZlIGZvciBldmVyLgpJZiBJIHdoZXQgbXkgZ2xpdHRlcmluZyBzd29yZCwgYW5kIG1pbmUgaGFuZCB0YWtlIGhvbGQgb24ganVkZ21lbnQ7IEkgd2lsbCByZW5kZXIgdmVuZ2VhbmNlIHRvIG1pbmUgZW5lbWllcywgYW5kIHdpbGwgcmV3YXJkIHRoZW0gdGhhdCBoYXRlIG1lLgpJIHdpbGwgbWFrZSBtaW5lIGFycm93cyBkcnVuayB3aXRoIGJsb29kLCBhbmQgbXkgc3dvcmQgc2hhbGwgZGV2b3VyIGZsZXNoOyBhbmQgdGhhdCB3aXRoIHRoZSBibG9vZCBvZiB0aGUgc2xhaW4gYW5kIG9mIHRoZSBjYXB0aXZlcywgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHJldmVuZ2VzIHVwb24gdGhlIGVuZW15LgpSZWpvaWNlLCBPIHllIG5hdGlvbnMsIHdpdGggaGlzIHBlb3BsZTogZm9yIGhlIHdpbGwgYXZlbmdlIHRoZSBibG9vZCBvZiBoaXMgc2VydmFudHMsIGFuZCB3aWxsIHJlbmRlciB2ZW5nZWFuY2UgdG8gaGlzIGFkdmVyc2FyaWVzLCBhbmQgd2lsbCBiZSBtZXJjaWZ1bCB1bnRvIGhpcyBsYW5kLCBhbmQgdG8gaGlzIHBlb3BsZS4KQW5kIE1vc2VzIGNhbWUgYW5kIHNwYWtlIGFsbCB0aGUgd29yZHMgb2YgdGhpcyBzb25nIGluIHRoZSBlYXJzIG9mIHRoZSBwZW9wbGUsIGhlLCBhbmQgSG9zaGVhIHRoZSBzb24gb2YgTnVuLgpBbmQgTW9zZXMgbWFkZSBhbiBlbmQgb2Ygc3BlYWtpbmcgYWxsIHRoZXNlIHdvcmRzIHRvIGFsbCBJc3JhZWw6CkFuZCBoZSBzYWlkIHVudG8gdGhlbSwgU2V0IHlvdXIgaGVhcnRzIHVudG8gYWxsIHRoZSB3b3JkcyB3aGljaCBJIHRlc3RpZnkgYW1vbmcgeW91IHRoaXMgZGF5LCB3aGljaCB5ZSBzaGFsbCBjb21tYW5kIHlvdXIgY2hpbGRyZW4gdG8gb2JzZXJ2ZSB0byBkbywgYWxsIHRoZSB3b3JkcyBvZiB0aGlzIGxhdy4KRm9yIGl0IGlzIG5vdCBhIHZhaW4gdGhpbmcgZm9yIHlvdTsgYmVjYXVzZSBpdCBpcyB5b3VyIGxpZmU6IGFuZCB0aHJvdWdoIHRoaXMgdGhpbmcgeWUgc2hhbGwgcHJvbG9uZyB5b3VyIGRheXMgaW4gdGhlIGxhbmQsIHdoaXRoZXIgeWUgZ28gb3ZlciBKb3JkYW4gdG8gcG9zc2VzcyBpdC4KQW5kIHRoZSBMT1JEIHNwYWtlIHVudG8gTW9zZXMgdGhhdCBzZWxmc2FtZSBkYXksIHNheWluZywKR2V0IHRoZWUgdXAgaW50byB0aGlzIG1vdW50YWluIEFiYXJpbSwgdW50byBtb3VudCBOZWJvLCB3aGljaCBpcyBpbiB0aGUgbGFuZCBvZiBNb2FiLCB0aGF0IGlzIG92ZXIgYWdhaW5zdCBKZXJpY2hvOyBhbmQgYmVob2xkIHRoZSBsYW5kIG9mIENhbmFhbiwgd2hpY2ggSSBnaXZlIHVudG8gdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBmb3IgYSBwb3NzZXNzaW9uOgpBbmQgZGllIGluIHRoZSBtb3VudCB3aGl0aGVyIHRob3UgZ29lc3QgdXAsIGFuZCBiZSBnYXRoZXJlZCB1bnRvIHRoeSBwZW9wbGU7IGFzIEFhcm9uIHRoeSBicm90aGVyIGRpZWQgaW4gbW91bnQgSG9yLCBhbmQgd2FzIGdhdGhlcmVkIHVudG8gaGlzIHBlb3BsZToKQmVjYXVzZSB5ZSB0cmVzcGFzc2VkIGFnYWluc3QgbWUgYW1vbmcgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBhdCB0aGUgd2F0ZXJzIG9mIE1lcmliYWhLYWRlc2gsIGluIHRoZSB3aWxkZXJuZXNzIG9mIFppbjsgYmVjYXVzZSB5ZSBzYW5jdGlmaWVkIG1lIG5vdCBpbiB0aGUgbWlkc3Qgb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbC4KWWV0IHRob3Ugc2hhbHQgc2VlIHRoZSBsYW5kIGJlZm9yZSB0aGVlOyBidXQgdGhvdSBzaGFsdCBub3QgZ28gdGhpdGhlciB1bnRvIHRoZSBsYW5kIHdoaWNoIEkgZ2l2ZSB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLgpBbmQgdGhpcyBpcyB0aGUgYmxlc3NpbmcsIHdoZXJld2l0aCBNb3NlcyB0aGUgbWFuIG9mIEdvZCBibGVzc2VkIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgYmVmb3JlIGhpcyBkZWF0aC4KQW5kIGhlIHNhaWQsIFRoZSBMT1JEIGNhbWUgZnJvbSBTaW5haSwgYW5kIHJvc2UgdXAgZnJvbSBTZWlyIHVudG8gdGhlbTsgaGUgc2hpbmVkIGZvcnRoIGZyb20gbW91bnQgUGFyYW4sIGFuZCBoZSBjYW1lIHdpdGggdGVuIHRob3VzYW5kcyBvZiBzYWludHM6IGZyb20gaGlzIHJpZ2h0IGhhbmQgd2VudCBhIGZpZXJ5IGxhdyBmb3IgdGhlbS4KWWVhLCBoZSBsb3ZlZCB0aGUgcGVvcGxlOyBhbGwgaGlzIHNhaW50cyBhcmUgaW4gdGh5IGhhbmQ6IGFuZCB0aGV5IHNhdCBkb3duIGF0IHRoeSBmZWV0OyBldmVyeSBvbmUgc2hhbGwgcmVjZWl2ZSBvZiB0aHkgd29yZHMuCk1vc2VzIGNvbW1hbmRlZCB1cyBhIGxhdywgZXZlbiB0aGUgaW5oZXJpdGFuY2Ugb2YgdGhlIGNvbmdyZWdhdGlvbiBvZiBKYWNvYi4KQW5kIGhlIHdhcyBraW5nIGluIEplc2h1cnVuLCB3aGVuIHRoZSBoZWFkcyBvZiB0aGUgcGVvcGxlIGFuZCB0aGUgdHJpYmVzIG9mIElzcmFlbCB3ZXJlIGdhdGhlcmVkIHRvZ2V0aGVyLgpMZXQgUmV1YmVuIGxpdmUsIGFuZCBub3QgZGllOyBhbmQgbGV0IG5vdCBoaXMgbWVuIGJlIGZldy4KQW5kIHRoaXMgaXMgdGhlIGJsZXNzaW5nIG9mIEp1ZGFoOiBhbmQgaGUgc2FpZCwgSGVhciwgTE9SRCwgdGhlIHZvaWNlIG9mIEp1ZGFoLCBhbmQgYnJpbmcgaGltIHVudG8gaGlzIHBlb3BsZTogbGV0IGhpcyBoYW5kcyBiZSBzdWZmaWNpZW50IGZvciBoaW07IGFuZCBiZSB0aG91IGFuIGhlbHAgdG8gaGltIGZyb20gaGlzIGVuZW1pZXMuCkFuZCBvZiBMZXZpIGhlIHNhaWQsIExldCB0aHkgVGh1bW1pbSBhbmQgdGh5IFVyaW0gYmUgd2l0aCB0aHkgaG9seSBvbmUsIHdob20gdGhvdSBkaWRzdCBwcm92ZSBhdCBNYXNzYWgsIGFuZCB3aXRoIHdob20gdGhvdSBkaWRzdCBzdHJpdmUgYXQgdGhlIHdhdGVycyBvZiBNZXJpYmFoOwpXaG8gc2FpZCB1bnRvIGhpcyBmYXRoZXIgYW5kIHRvIGhpcyBtb3RoZXIsIEkgaGF2ZSBub3Qgc2VlbiBoaW07IG5laXRoZXIgZGlkIGhlIGFja25vd2xlZGdlIGhpcyBicmV0aHJlbiwgbm9yIGtuZXcgaGlzIG93biBjaGlsZHJlbjogZm9yIHRoZXkgaGF2ZSBvYnNlcnZlZCB0aHkgd29yZCwgYW5kIGtlcHQgdGh5IGNvdmVuYW50LgpUaGV5IHNoYWxsIHRlYWNoIEphY29iIHRoeSBqdWRnbWVudHMsIGFuZCBJc3JhZWwgdGh5IGxhdzogdGhleSBzaGFsbCBwdXQgaW5jZW5zZSBiZWZvcmUgdGhlZSwgYW5kIHdob2xlIGJ1cm50IHNhY3JpZmljZSB1cG9uIHRoaW5lIGFsdGFyLgpCbGVzcywgTE9SRCwgaGlzIHN1YnN0YW5jZSwgYW5kIGFjY2VwdCB0aGUgd29yayBvZiBoaXMgaGFuZHM7IHNtaXRlIHRocm91Z2ggdGhlIGxvaW5zIG9mIHRoZW0gdGhhdCByaXNlIGFnYWluc3QgaGltLCBhbmQgb2YgdGhlbSB0aGF0IGhhdGUgaGltLCB0aGF0IHRoZXkgcmlzZSBub3QgYWdhaW4uCkFuZCBvZiBCZW5qYW1pbiBoZSBzYWlkLCBUaGUgYmVsb3ZlZCBvZiB0aGUgTE9SRCBzaGFsbCBkd2VsbCBpbiBzYWZldHkgYnkgaGltOyBhbmQgdGhlIExvcmQgc2hhbGwgY292ZXIgaGltIGFsbCB0aGUgZGF5IGxvbmcsIGFuZCBoZSBzaGFsbCBkd2VsbCBiZXR3ZWVuIGhpcyBzaG91bGRlcnMuCkFuZCBvZiBKb3NlcGggaGUgc2FpZCwgQmxlc3NlZCBvZiB0aGUgTE9SRCBiZSBoaXMgbGFuZCwgZm9yIHRoZSBwcmVjaW91cyB0aGluZ3Mgb2YgaGVhdmVuLCBmb3IgdGhlIGRldywgYW5kIGZvciB0aGUgZGVlcCB0aGF0IGNvdWNoZXRoIGJlbmVhdGgsCkFuZCBmb3IgdGhlIHByZWNpb3VzIGZydWl0cyBicm91Z2h0IGZvcnRoIGJ5IHRoZSBzdW4sIGFuZCBmb3IgdGhlIHByZWNpb3VzIHRoaW5ncyBwdXQgZm9ydGggYnkgdGhlIG1vb24sCkFuZCBmb3IgdGhlIGNoaWVmIHRoaW5ncyBvZiB0aGUgYW5jaWVudCBtb3VudGFpbnMsIGFuZCBmb3IgdGhlIHByZWNpb3VzIHRoaW5ncyBvZiB0aGUgbGFzdGluZyBoaWxscywKQW5kIGZvciB0aGUgcHJlY2lvdXMgdGhpbmdzIG9mIHRoZSBlYXJ0aCBhbmQgZnVsbmVzcyB0aGVyZW9mLCBhbmQgZm9yIHRoZSBnb29kIHdpbGwgb2YgaGltIHRoYXQgZHdlbHQgaW4gdGhlIGJ1c2g6IGxldCB0aGUgYmxlc3NpbmcgY29tZSB1cG9uIHRoZSBoZWFkIG9mIEpvc2VwaCwgYW5kIHVwb24gdGhlIHRvcCBvZiB0aGUgaGVhZCBvZiBoaW0gdGhhdCB3YXMgc2VwYXJhdGVkIGZyb20gaGlzIGJyZXRocmVuLgpIaXMgZ2xvcnkgaXMgbGlrZSB0aGUgZmlyc3RsaW5nIG9mIGhpcyBidWxsb2NrLCBhbmQgaGlzIGhvcm5zIGFyZSBsaWtlIHRoZSBob3JucyBvZiB1bmljb3Juczogd2l0aCB0aGVtIGhlIHNoYWxsIHB1c2ggdGhlIHBlb3BsZSB0b2dldGhlciB0byB0aGUgZW5kcyBvZiB0aGUgZWFydGg6IGFuZCB0aGV5IGFyZSB0aGUgdGVuIHRob3VzYW5kcyBvZiBFcGhyYWltLCBhbmQgdGhleSBhcmUgdGhlIHRob3VzYW5kcyBvZiBNYW5hc3NlaC4KQW5kIG9mIFplYnVsdW4gaGUgc2FpZCwgUmVqb2ljZSwgWmVidWx1biwgaW4gdGh5IGdvaW5nIG91dDsgYW5kLCBJc3NhY2hhciwgaW4gdGh5IHRlbnRzLgpUaGV5IHNoYWxsIGNhbGwgdGhlIHBlb3BsZSB1bnRvIHRoZSBtb3VudGFpbjsgdGhlcmUgdGhleSBzaGFsbCBvZmZlciBzYWNyaWZpY2VzIG9mIHJpZ2h0ZW91c25lc3M6IGZvciB0aGV5IHNoYWxsIHN1Y2sgb2YgdGhlIGFidW5kYW5jZSBvZiB0aGUgc2VhcywgYW5kIG9mIHRyZWFzdXJlcyBoaWQgaW4gdGhlIHNhbmQuCkFuZCBvZiBHYWQgaGUgc2FpZCwgQmxlc3NlZCBiZSBoZSB0aGF0IGVubGFyZ2V0aCBHYWQ6IGhlIGR3ZWxsZXRoIGFzIGEgbGlvbiwgYW5kIHRlYXJldGggdGhlIGFybSB3aXRoIHRoZSBjcm93biBvZiB0aGUgaGVhZC4KQW5kIGhlIHByb3ZpZGVkIHRoZSBmaXJzdCBwYXJ0IGZvciBoaW1zZWxmLCBiZWNhdXNlIHRoZXJlLCBpbiBhIHBvcnRpb24gb2YgdGhlIGxhd2dpdmVyLCB3YXMgaGUgc2VhdGVkOyBhbmQgaGUgY2FtZSB3aXRoIHRoZSBoZWFkcyBvZiB0aGUgcGVvcGxlLCBoZSBleGVjdXRlZCB0aGUganVzdGljZSBvZiB0aGUgTE9SRCwgYW5kIGhpcyBqdWRnbWVudHMgd2l0aCBJc3JhZWwuCkFuZCBvZiBEYW4gaGUgc2FpZCwgRGFuIGlzIGEgbGlvbidzIHdoZWxwOiBoZSBzaGFsbCBsZWFwIGZyb20gQmFzaGFuLgpBbmQgb2YgTmFwaHRhbGkgaGUgc2FpZCwgTyBOYXBodGFsaSwgc2F0aXNmaWVkIHdpdGggZmF2b3VyLCBhbmQgZnVsbCB3aXRoIHRoZSBibGVzc2luZyBvZiB0aGUgTE9SRDogcG9zc2VzcyB0aG91IHRoZSB3ZXN0IGFuZCB0aGUgc291dGguCkFuZCBvZiBBc2hlciBoZSBzYWlkLCBMZXQgQXNoZXIgYmUgYmxlc3NlZCB3aXRoIGNoaWxkcmVuOyBsZXQgaGltIGJlIGFjY2VwdGFibGUgdG8gaGlzIGJyZXRocmVuLCBhbmQgbGV0IGhpbSBkaXAgaGlzIGZvb3QgaW4gb2lsLgpUaHkgc2hvZXMgc2hhbGwgYmUgaXJvbiBhbmQgYnJhc3M7IGFuZCBhcyB0aHkgZGF5cywgc28gc2hhbGwgdGh5IHN0cmVuZ3RoIGJlLgpUaGVyZSBpcyBub25lIGxpa2UgdW50byB0aGUgR29kIG9mIEplc2h1cnVuLCB3aG8gcmlkZXRoIHVwb24gdGhlIGhlYXZlbiBpbiB0aHkgaGVscCwgYW5kIGluIGhpcyBleGNlbGxlbmN5IG9uIHRoZSBza3kuClRoZSBldGVybmFsIEdvZCBpcyB0aHkgcmVmdWdlLCBhbmQgdW5kZXJuZWF0aCBhcmUgdGhlIGV2ZXJsYXN0aW5nIGFybXM6IGFuZCBoZSBzaGFsbCB0aHJ1c3Qgb3V0IHRoZSBlbmVteSBmcm9tIGJlZm9yZSB0aGVlOyBhbmQgc2hhbGwgc2F5LCBEZXN0cm95IHRoZW0uCklzcmFlbCB0aGVuIHNoYWxsIGR3ZWxsIGluIHNhZmV0eSBhbG9uZTogdGhlIGZvdW50YWluIG9mIEphY29iIHNoYWxsIGJlIHVwb24gYSBsYW5kIG9mIGNvcm4gYW5kIHdpbmU7IGFsc28gaGlzIGhlYXZlbnMgc2hhbGwgZHJvcCBkb3duIGRldy4KSGFwcHkgYXJ0IHRob3UsIE8gSXNyYWVsOiB3aG8gaXMgbGlrZSB1bnRvIHRoZWUsIE8gcGVvcGxlIHNhdmVkIGJ5IHRoZSBMT1JELCB0aGUgc2hpZWxkIG9mIHRoeSBoZWxwLCBhbmQgd2hvIGlzIHRoZSBzd29yZCBvZiB0aHkgZXhjZWxsZW5jeSEgYW5kIHRoaW5lIGVuZW1pZXMgc2hhbGwgYmUgZm91bmQgbGlhcnMgdW50byB0aGVlOyBhbmQgdGhvdSBzaGFsdCB0cmVhZCB1cG9uIHRoZWlyIGhpZ2ggcGxhY2VzLgpBbmQgTW9zZXMgd2VudCB1cCBmcm9tIHRoZSBwbGFpbnMgb2YgTW9hYiB1bnRvIHRoZSBtb3VudGFpbiBvZiBOZWJvLCB0byB0aGUgdG9wIG9mIFBpc2dhaCwgdGhhdCBpcyBvdmVyIGFnYWluc3QgSmVyaWNoby4gQW5kIHRoZSBMT1JEIHNoZXdlZCBoaW0gYWxsIHRoZSBsYW5kIG9mIEdpbGVhZCwgdW50byBEYW4sCkFuZCBhbGwgTmFwaHRhbGksIGFuZCB0aGUgbGFuZCBvZiBFcGhyYWltLCBhbmQgTWFuYXNzZWgsIGFuZCBhbGwgdGhlIGxhbmQgb2YgSnVkYWgsIHVudG8gdGhlIHV0bW9zdCBzZWEsCkFuZCB0aGUgc291dGgsIGFuZCB0aGUgcGxhaW4gb2YgdGhlIHZhbGxleSBvZiBKZXJpY2hvLCB0aGUgY2l0eSBvZiBwYWxtIHRyZWVzLCB1bnRvIFpvYXIuCkFuZCB0aGUgTE9SRCBzYWlkIHVudG8gaGltLCBUaGlzIGlzIHRoZSBsYW5kIHdoaWNoIEkgc3dhcmUgdW50byBBYnJhaGFtLCB1bnRvIElzYWFjLCBhbmQgdW50byBKYWNvYiwgc2F5aW5nLCBJIHdpbGwgZ2l2ZSBpdCB1bnRvIHRoeSBzZWVkOiBJIGhhdmUgY2F1c2VkIHRoZWUgdG8gc2VlIGl0IHdpdGggdGhpbmUgZXllcywgYnV0IHRob3Ugc2hhbHQgbm90IGdvIG92ZXIgdGhpdGhlci4KU28gTW9zZXMgdGhlIHNlcnZhbnQgb2YgdGhlIExPUkQgZGllZCB0aGVyZSBpbiB0aGUgbGFuZCBvZiBNb2FiLCBhY2NvcmRpbmcgdG8gdGhlIHdvcmQgb2YgdGhlIExPUkQuCkFuZCBoZSBidXJpZWQgaGltIGluIGEgdmFsbGV5IGluIHRoZSBsYW5kIG9mIE1vYWIsIG92ZXIgYWdhaW5zdCBCZXRocGVvcjogYnV0IG5vIG1hbiBrbm93ZXRoIG9mIGhpcyBzZXB1bGNocmUgdW50byB0aGlzIGRheS4KQW5kIE1vc2VzIHdhcyBhbiBodW5kcmVkIGFuZCB0d2VudHkgeWVhcnMgb2xkIHdoZW4gaGUgZGllZDogaGlzIGV5ZSB3YXMgbm90IGRpbSwgbm9yIGhpcyBuYXR1cmFsIGZvcmNlIGFiYXRlZC4KQW5kIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgd2VwdCBmb3IgTW9zZXMgaW4gdGhlIHBsYWlucyBvZiBNb2FiIHRoaXJ0eSBkYXlzOiBzbyB0aGUgZGF5cyBvZiB3ZWVwaW5nIGFuZCBtb3VybmluZyBmb3IgTW9zZXMgd2VyZSBlbmRlZC4KQW5kIEpvc2h1YSB0aGUgc29uIG9mIE51biB3YXMgZnVsbCBvZiB0aGUgc3Bpcml0IG9mIHdpc2RvbTsgZm9yIE1vc2VzIGhhZCBsYWlkIGhpcyBoYW5kcyB1cG9uIGhpbTogYW5kIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgaGVhcmtlbmVkIHVudG8gaGltLCBhbmQgZGlkIGFzIHRoZSBMT1JEIGNvbW1hbmRlZCBNb3Nlcy4KQW5kIHRoZXJlIGFyb3NlIG5vdCBhIHByb3BoZXQgc2luY2UgaW4gSXNyYWVsIGxpa2UgdW50byBNb3Nlcywgd2hvbSB0aGUgTE9SRCBrbmV3IGZhY2UgdG8gZmFjZSwKSW4gYWxsIHRoZSBzaWducyBhbmQgdGhlIHdvbmRlcnMsIHdoaWNoIHRoZSBMT1JEIHNlbnQgaGltIHRvIGRvIGluIHRoZSBsYW5kIG9mIEVneXB0IHRvIFBoYXJhb2gsIGFuZCB0byBhbGwgaGlzIHNlcnZhbnRzLCBhbmQgdG8gYWxsIGhpcyBsYW5kLApBbmQgaW4gYWxsIHRoYXQgbWlnaHR5IGhhbmQsIGFuZCBpbiBhbGwgdGhlIGdyZWF0IHRlcnJvciB3aGljaCBNb3NlcyBzaGV3ZWQgaW4gdGhlIHNpZ2h0IG9mIGFsbCBJc3JhZWwuCk5vdyBhZnRlciB0aGUgZGVhdGggb2YgTW9zZXMgdGhlIHNlcnZhbnQgb2YgdGhlIExPUkQgaXQgY2FtZSB0byBwYXNzLCB0aGF0IHRoZSBMT1JEIHNwYWtlIHVudG8gSm9zaHVhIHRoZSBzb24gb2YgTnVuLCBNb3NlcycgbWluaXN0ZXIsIHNheWluZywKTW9zZXMgbXkgc2VydmFudCBpcyBkZWFkOyBub3cgdGhlcmVmb3JlIGFyaXNlLCBnbyBvdmVyIHRoaXMgSm9yZGFuLCB0aG91LCBhbmQgYWxsIHRoaXMgcGVvcGxlLCB1bnRvIHRoZSBsYW5kIHdoaWNoIEkgZG8gZ2l2ZSB0byB0aGVtLCBldmVuIHRvIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwuCkV2ZXJ5IHBsYWNlIHRoYXQgdGhlIHNvbGUgb2YgeW91ciBmb290IHNoYWxsIHRyZWFkIHVwb24sIHRoYXQgaGF2ZSBJIGdpdmVuIHVudG8geW91LCBhcyBJIHNhaWQgdW50byBNb3Nlcy4KRnJvbSB0aGUgd2lsZGVybmVzcyBhbmQgdGhpcyBMZWJhbm9uIGV2ZW4gdW50byB0aGUgZ3JlYXQgcml2ZXIsIHRoZSByaXZlciBFdXBocmF0ZXMsIGFsbCB0aGUgbGFuZCBvZiB0aGUgSGl0dGl0ZXMsIGFuZCB1bnRvIHRoZSBncmVhdCBzZWEgdG93YXJkIHRoZSBnb2luZyBkb3duIG9mIHRoZSBzdW4sIHNoYWxsIGJlIHlvdXIgY29hc3QuClRoZXJlIHNoYWxsIG5vdCBhbnkgbWFuIGJlIGFibGUgdG8gc3RhbmQgYmVmb3JlIHRoZWUgYWxsIHRoZSBkYXlzIG9mIHRoeSBsaWZlOiBhcyBJIHdhcyB3aXRoIE1vc2VzLCBzbyBJIHdpbGwgYmUgd2l0aCB0aGVlOiBJIHdpbGwgbm90IGZhaWwgdGhlZSwgbm9yIGZvcnNha2UgdGhlZS4KQmUgc3Ryb25nIGFuZCBvZiBhIGdvb2QgY291cmFnZTogZm9yIHVudG8gdGhpcyBwZW9wbGUgc2hhbHQgdGhvdSBkaXZpZGUgZm9yIGFuIGluaGVyaXRhbmNlIHRoZSBsYW5kLCB3aGljaCBJIHN3YXJlIHVudG8gdGhlaXIgZmF0aGVycyB0byBnaXZlIHRoZW0uCk9ubHkgYmUgdGhvdSBzdHJvbmcgYW5kIHZlcnkgY291cmFnZW91cywgdGhhdCB0aG91IG1heWVzdCBvYnNlcnZlIHRvIGRvIGFjY29yZGluZyB0byBhbGwgdGhlIGxhdywgd2hpY2ggTW9zZXMgbXkgc2VydmFudCBjb21tYW5kZWQgdGhlZTogdHVybiBub3QgZnJvbSBpdCB0byB0aGUgcmlnaHQgaGFuZCBvciB0byB0aGUgbGVmdCwgdGhhdCB0aG91IG1heWVzdCBwcm9zcGVyIHdpdGhlcnNvZXZlciB0aG91IGdvZXN0LgpUaGlzIGJvb2sgb2YgdGhlIGxhdyBzaGFsbCBub3QgZGVwYXJ0IG91dCBvZiB0aHkgbW91dGg7IGJ1dCB0aG91IHNoYWx0IG1lZGl0YXRlIHRoZXJlaW4gZGF5IGFuZCBuaWdodCwgdGhhdCB0aG91IG1heWVzdCBvYnNlcnZlIHRvIGRvIGFjY29yZGluZyB0byBhbGwgdGhhdCBpcyB3cml0dGVuIHRoZXJlaW46IGZvciB0aGVuIHRob3Ugc2hhbHQgbWFrZSB0aHkgd2F5IHByb3NwZXJvdXMsIGFuZCB0aGVuIHRob3Ugc2hhbHQgaGF2ZSBnb29kIHN1Y2Nlc3MuCkhhdmUgbm90IEkgY29tbWFuZGVkIHRoZWU/IEJlIHN0cm9uZyBhbmQgb2YgYSBnb29kIGNvdXJhZ2U7IGJlIG5vdCBhZnJhaWQsIG5laXRoZXIgYmUgdGhvdSBkaXNtYXllZDogZm9yIHRoZSBMT1JEIHRoeSBHb2QgaXMgd2l0aCB0aGVlIHdoaXRoZXJzb2V2ZXIgdGhvdSBnb2VzdC4KVGhlbiBKb3NodWEgY29tbWFuZGVkIHRoZSBvZmZpY2VycyBvZiB0aGUgcGVvcGxlLCBzYXlpbmcsClBhc3MgdGhyb3VnaCB0aGUgaG9zdCwgYW5kIGNvbW1hbmQgdGhlIHBlb3BsZSwgc2F5aW5nLCBQcmVwYXJlIHlvdSB2aWN0dWFsczsgZm9yIHdpdGhpbiB0aHJlZSBkYXlzIHllIHNoYWxsIHBhc3Mgb3ZlciB0aGlzIEpvcmRhbiwgdG8gZ28gaW4gdG8gcG9zc2VzcyB0aGUgbGFuZCwgd2hpY2ggdGhlIExPUkQgeW91ciBHb2QgZ2l2ZXRoIHlvdSB0byBwb3NzZXNzIGl0LgpBbmQgdG8gdGhlIFJldWJlbml0ZXMsIGFuZCB0byB0aGUgR2FkaXRlcywgYW5kIHRvIGhhbGYgdGhlIHRyaWJlIG9mIE1hbmFzc2VoLCBzcGFrZSBKb3NodWEsIHNheWluZywKUmVtZW1iZXIgdGhlIHdvcmQgd2hpY2ggTW9zZXMgdGhlIHNlcnZhbnQgb2YgdGhlIExPUkQgY29tbWFuZGVkIHlvdSwgc2F5aW5nLCBUaGUgTE9SRCB5b3VyIEdvZCBoYXRoIGdpdmVuIHlvdSByZXN0LCBhbmQgaGF0aCBnaXZlbiB5b3UgdGhpcyBsYW5kLgpZb3VyIHdpdmVzLCB5b3VyIGxpdHRsZSBvbmVzLCBhbmQgeW91ciBjYXR0bGUsIHNoYWxsIHJlbWFpbiBpbiB0aGUgbGFuZCB3aGljaCBNb3NlcyBnYXZlIHlvdSBvbiB0aGlzIHNpZGUgSm9yZGFuOyBidXQgeWUgc2hhbGwgcGFzcyBiZWZvcmUgeW91ciBicmV0aHJlbiBhcm1lZCwgYWxsIHRoZSBtaWdodHkgbWVuIG9mIHZhbG91ciwgYW5kIGhlbHAgdGhlbTsKVW50aWwgdGhlIExPUkQgaGF2ZSBnaXZlbiB5b3VyIGJyZXRocmVuIHJlc3QsIGFzIGhlIGhhdGggZ2l2ZW4geW91LCBhbmQgdGhleSBhbHNvIGhhdmUgcG9zc2Vzc2VkIHRoZSBsYW5kIHdoaWNoIHRoZSBMT1JEIHlvdXIgR29kIGdpdmV0aCB0aGVtOiB0aGVuIHllIHNoYWxsIHJldHVybiB1bnRvIHRoZSBsYW5kIG9mIHlvdXIgcG9zc2Vzc2lvbiwgYW5kIGVuam95IGl0LCB3aGljaCBNb3NlcyB0aGUgTE9SRCdzIHNlcnZhbnQgZ2F2ZSB5b3Ugb24gdGhpcyBzaWRlIEpvcmRhbiB0b3dhcmQgdGhlIHN1bnJpc2luZy4KQW5kIHRoZXkgYW5zd2VyZWQgSm9zaHVhLCBzYXlpbmcsIEFsbCB0aGF0IHRob3UgY29tbWFuZGVzdCB1cyB3ZSB3aWxsIGRvLCBhbmQgd2hpdGhlcnNvZXZlciB0aG91IHNlbmRlc3QgdXMsIHdlIHdpbGwgZ28uCkFjY29yZGluZyBhcyB3ZSBoZWFya2VuZWQgdW50byBNb3NlcyBpbiBhbGwgdGhpbmdzLCBzbyB3aWxsIHdlIGhlYXJrZW4gdW50byB0aGVlOiBvbmx5IHRoZSBMT1JEIHRoeSBHb2QgYmUgd2l0aCB0aGVlLCBhcyBoZSB3YXMgd2l0aCBNb3Nlcy4KV2hvc29ldmVyIGhlIGJlIHRoYXQgZG90aCByZWJlbCBhZ2FpbnN0IHRoeSBjb21tYW5kbWVudCwgYW5kIHdpbGwgbm90IGhlYXJrZW4gdW50byB0aHkgd29yZHMgaW4gYWxsIHRoYXQgdGhvdSBjb21tYW5kZXN0IGhpbSwgaGUgc2hhbGwgYmUgcHV0IHRvIGRlYXRoOiBvbmx5IGJlIHN0cm9uZyBhbmQgb2YgYSBnb29kIGNvdXJhZ2UuCkFuZCBKb3NodWEgdGhlIHNvbiBvZiBOdW4gc2VudCBvdXQgb2YgU2hpdHRpbSB0d28gbWVuIHRvIHNweSBzZWNyZXRseSwgc2F5aW5nLCBHbyB2aWV3IHRoZSBsYW5kLCBldmVuIEplcmljaG8uIEFuZCB0aGV5IHdlbnQsIGFuZCBjYW1lIGludG8gYW4gaGFybG90J3MgaG91c2UsIG5hbWVkIFJhaGFiLCBhbmQgbG9kZ2VkIHRoZXJlLgpBbmQgaXQgd2FzIHRvbGQgdGhlIGtpbmcgb2YgSmVyaWNobywgc2F5aW5nLCBCZWhvbGQsIHRoZXJlIGNhbWUgbWVuIGluIGhpdGhlciB0byBuaWdodCBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIHRvIHNlYXJjaCBvdXQgdGhlIGNvdW50cnkuCkFuZCB0aGUga2luZyBvZiBKZXJpY2hvIHNlbnQgdW50byBSYWhhYiwgc2F5aW5nLCBCcmluZyBmb3J0aCB0aGUgbWVuIHRoYXQgYXJlIGNvbWUgdG8gdGhlZSwgd2hpY2ggYXJlIGVudGVyZWQgaW50byB0aGluZSBob3VzZTogZm9yIHRoZXkgYmUgY29tZSB0byBzZWFyY2ggb3V0IGFsbCB0aGUgY291bnRyeS4KQW5kIHRoZSB3b21hbiB0b29rIHRoZSB0d28gbWVuLCBhbmQgaGlkIHRoZW0sIGFuZCBzYWlkIHRodXMsIFRoZXJlIGNhbWUgbWVuIHVudG8gbWUsIGJ1dCBJIHdpc3Qgbm90IHdoZW5jZSB0aGV5IHdlcmU6CkFuZCBpdCBjYW1lIHRvIHBhc3MgYWJvdXQgdGhlIHRpbWUgb2Ygc2h1dHRpbmcgb2YgdGhlIGdhdGUsIHdoZW4gaXQgd2FzIGRhcmssIHRoYXQgdGhlIG1lbiB3ZW50IG91dDogd2hpdGhlciB0aGUgbWVuIHdlbnQgSSB3b3Qgbm90OiBwdXJzdWUgYWZ0ZXIgdGhlbSBxdWlja2x5OyBmb3IgeWUgc2hhbGwgb3ZlcnRha2UgdGhlbS4KQnV0IHNoZSBoYWQgYnJvdWdodCB0aGVtIHVwIHRvIHRoZSByb29mIG9mIHRoZSBob3VzZSwgYW5kIGhpZCB0aGVtIHdpdGggdGhlIHN0YWxrcyBvZiBmbGF4LCB3aGljaCBzaGUgaGFkIGxhaWQgaW4gb3JkZXIgdXBvbiB0aGUgcm9vZi4KQW5kIHRoZSBtZW4gcHVyc3VlZCBhZnRlciB0aGVtIHRoZSB3YXkgdG8gSm9yZGFuIHVudG8gdGhlIGZvcmRzOiBhbmQgYXMgc29vbiBhcyB0aGV5IHdoaWNoIHB1cnN1ZWQgYWZ0ZXIgdGhlbSB3ZXJlIGdvbmUgb3V0LCB0aGV5IHNodXQgdGhlIGdhdGUuCkFuZCBiZWZvcmUgdGhleSB3ZXJlIGxhaWQgZG93biwgc2hlIGNhbWUgdXAgdW50byB0aGVtIHVwb24gdGhlIHJvb2Y7CkFuZCBzaGUgc2FpZCB1bnRvIHRoZSBtZW4sIEkga25vdyB0aGF0IHRoZSBMT1JEIGhhdGggZ2l2ZW4geW91IHRoZSBsYW5kLCBhbmQgdGhhdCB5b3VyIHRlcnJvciBpcyBmYWxsZW4gdXBvbiB1cywgYW5kIHRoYXQgYWxsIHRoZSBpbmhhYml0YW50cyBvZiB0aGUgbGFuZCBmYWludCBiZWNhdXNlIG9mIHlvdS4KRm9yIHdlIGhhdmUgaGVhcmQgaG93IHRoZSBMT1JEIGRyaWVkIHVwIHRoZSB3YXRlciBvZiB0aGUgUmVkIHNlYSBmb3IgeW91LCB3aGVuIHllIGNhbWUgb3V0IG9mIEVneXB0OyBhbmQgd2hhdCB5ZSBkaWQgdW50byB0aGUgdHdvIGtpbmdzIG9mIHRoZSBBbW9yaXRlcywgdGhhdCB3ZXJlIG9uIHRoZSBvdGhlciBzaWRlIEpvcmRhbiwgU2lob24gYW5kIE9nLCB3aG9tIHllIHV0dGVybHkgZGVzdHJveWVkLgpBbmQgYXMgc29vbiBhcyB3ZSBoYWQgaGVhcmQgdGhlc2UgdGhpbmdzLCBvdXIgaGVhcnRzIGRpZCBtZWx0LCBuZWl0aGVyIGRpZCB0aGVyZSByZW1haW4gYW55IG1vcmUgY291cmFnZSBpbiBhbnkgbWFuLCBiZWNhdXNlIG9mIHlvdTogZm9yIHRoZSBMT1JEIHlvdXIgR29kLCBoZSBpcyBHb2QgaW4gaGVhdmVuIGFib3ZlLCBhbmQgaW4gZWFydGggYmVuZWF0aC4KTm93IHRoZXJlZm9yZSwgSSBwcmF5IHlvdSwgc3dlYXIgdW50byBtZSBieSB0aGUgTE9SRCwgc2luY2UgSSBoYXZlIHNoZXdlZCB5b3Uga2luZG5lc3MsIHRoYXQgeWUgd2lsbCBhbHNvIHNoZXcga2luZG5lc3MgdW50byBteSBmYXRoZXIncyBob3VzZSwgYW5kIGdpdmUgbWUgYSB0cnVlIHRva2VuOgpBbmQgdGhhdCB5ZSB3aWxsIHNhdmUgYWxpdmUgbXkgZmF0aGVyLCBhbmQgbXkgbW90aGVyLCBhbmQgbXkgYnJldGhyZW4sIGFuZCBteSBzaXN0ZXJzLCBhbmQgYWxsIHRoYXQgdGhleSBoYXZlLCBhbmQgZGVsaXZlciBvdXIgbGl2ZXMgZnJvbSBkZWF0aC4KQW5kIHRoZSBtZW4gYW5zd2VyZWQgaGVyLCBPdXIgbGlmZSBmb3IgeW91cnMsIGlmIHllIHV0dGVyIG5vdCB0aGlzIG91ciBidXNpbmVzcy4gQW5kIGl0IHNoYWxsIGJlLCB3aGVuIHRoZSBMT1JEIGhhdGggZ2l2ZW4gdXMgdGhlIGxhbmQsIHRoYXQgd2Ugd2lsbCBkZWFsIGtpbmRseSBhbmQgdHJ1bHkgd2l0aCB0aGVlLgpUaGVuIHNoZSBsZXQgdGhlbSBkb3duIGJ5IGEgY29yZCB0aHJvdWdoIHRoZSB3aW5kb3c6IGZvciBoZXIgaG91c2Ugd2FzIHVwb24gdGhlIHRvd24gd2FsbCwgYW5kIHNoZSBkd2VsdCB1cG9uIHRoZSB3YWxsLgpBbmQgc2hlIHNhaWQgdW50byB0aGVtLCBHZXQgeW91IHRvIHRoZSBtb3VudGFpbiwgbGVzdCB0aGUgcHVyc3VlcnMgbWVldCB5b3U7IGFuZCBoaWRlIHlvdXJzZWx2ZXMgdGhlcmUgdGhyZWUgZGF5cywgdW50aWwgdGhlIHB1cnN1ZXJzIGJlIHJldHVybmVkOiBhbmQgYWZ0ZXJ3YXJkIG1heSB5ZSBnbyB5b3VyIHdheS4KQW5kIHRoZSBtZW4gc2FpZCB1bnRvIGhlciwgV2Ugd2lsbCBiZSBibGFtZWxlc3Mgb2YgdGhpcyB0aGluZSBvYXRoIHdoaWNoIHRob3UgaGFzdCBtYWRlIHVzIHN3ZWFyLgpCZWhvbGQsIHdoZW4gd2UgY29tZSBpbnRvIHRoZSBsYW5kLCB0aG91IHNoYWx0IGJpbmQgdGhpcyBsaW5lIG9mIHNjYXJsZXQgdGhyZWFkIGluIHRoZSB3aW5kb3cgd2hpY2ggdGhvdSBkaWRzdCBsZXQgdXMgZG93biBieTogYW5kIHRob3Ugc2hhbHQgYnJpbmcgdGh5IGZhdGhlciwgYW5kIHRoeSBtb3RoZXIsIGFuZCB0aHkgYnJldGhyZW4sIGFuZCBhbGwgdGh5IGZhdGhlcidzIGhvdXNlaG9sZCwgaG9tZSB1bnRvIHRoZWUuCkFuZCBpdCBzaGFsbCBiZSwgdGhhdCB3aG9zb2V2ZXIgc2hhbGwgZ28gb3V0IG9mIHRoZSBkb29ycyBvZiB0aHkgaG91c2UgaW50byB0aGUgc3RyZWV0LCBoaXMgYmxvb2Qgc2hhbGwgYmUgdXBvbiBoaXMgaGVhZCwgYW5kIHdlIHdpbGwgYmUgZ3VpbHRsZXNzOiBhbmQgd2hvc29ldmVyIHNoYWxsIGJlIHdpdGggdGhlZSBpbiB0aGUgaG91c2UsIGhpcyBibG9vZCBzaGFsbCBiZSBvbiBvdXIgaGVhZCwgaWYgYW55IGhhbmQgYmUgdXBvbiBoaW0uCkFuZCBpZiB0aG91IHV0dGVyIHRoaXMgb3VyIGJ1c2luZXNzLCB0aGVuIHdlIHdpbGwgYmUgcXVpdCBvZiB0aGluZSBvYXRoIHdoaWNoIHRob3UgaGFzdCBtYWRlIHVzIHRvIHN3ZWFyLgpBbmQgc2hlIHNhaWQsIEFjY29yZGluZyB1bnRvIHlvdXIgd29yZHMsIHNvIGJlIGl0LiBBbmQgc2hlIHNlbnQgdGhlbSBhd2F5LCBhbmQgdGhleSBkZXBhcnRlZDogYW5kIHNoZSBib3VuZCB0aGUgc2NhcmxldCBsaW5lIGluIHRoZSB3aW5kb3cuCkFuZCB0aGV5IHdlbnQsIGFuZCBjYW1lIHVudG8gdGhlIG1vdW50YWluLCBhbmQgYWJvZGUgdGhlcmUgdGhyZWUgZGF5cywgdW50aWwgdGhlIHB1cnN1ZXJzIHdlcmUgcmV0dXJuZWQ6IGFuZCB0aGUgcHVyc3VlcnMgc291Z2h0IHRoZW0gdGhyb3VnaG91dCBhbGwgdGhlIHdheSwgYnV0IGZvdW5kIHRoZW0gbm90LgpTbyB0aGUgdHdvIG1lbiByZXR1cm5lZCwgYW5kIGRlc2NlbmRlZCBmcm9tIHRoZSBtb3VudGFpbiwgYW5kIHBhc3NlZCBvdmVyLCBhbmQgY2FtZSB0byBKb3NodWEgdGhlIHNvbiBvZiBOdW4sIGFuZCB0b2xkIGhpbSBhbGwgdGhpbmdzIHRoYXQgYmVmZWxsIHRoZW06CkFuZCB0aGV5IHNhaWQgdW50byBKb3NodWEsIFRydWx5IHRoZSBMT1JEIGhhdGggZGVsaXZlcmVkIGludG8gb3VyIGhhbmRzIGFsbCB0aGUgbGFuZDsgZm9yIGV2ZW4gYWxsIHRoZSBpbmhhYml0YW50cyBvZiB0aGUgY291bnRyeSBkbyBmYWludCBiZWNhdXNlIG9mIHVzLgpBbmQgSm9zaHVhIHJvc2UgZWFybHkgaW4gdGhlIG1vcm5pbmc7IGFuZCB0aGV5IHJlbW92ZWQgZnJvbSBTaGl0dGltLCBhbmQgY2FtZSB0byBKb3JkYW4sIGhlIGFuZCBhbGwgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgYW5kIGxvZGdlZCB0aGVyZSBiZWZvcmUgdGhleSBwYXNzZWQgb3Zlci4KQW5kIGl0IGNhbWUgdG8gcGFzcyBhZnRlciB0aHJlZSBkYXlzLCB0aGF0IHRoZSBvZmZpY2VycyB3ZW50IHRocm91Z2ggdGhlIGhvc3Q7CkFuZCB0aGV5IGNvbW1hbmRlZCB0aGUgcGVvcGxlLCBzYXlpbmcsIFdoZW4geWUgc2VlIHRoZSBhcmsgb2YgdGhlIGNvdmVuYW50IG9mIHRoZSBMT1JEIHlvdXIgR29kLCBhbmQgdGhlIHByaWVzdHMgdGhlIExldml0ZXMgYmVhcmluZyBpdCwgdGhlbiB5ZSBzaGFsbCByZW1vdmUgZnJvbSB5b3VyIHBsYWNlLCBhbmQgZ28gYWZ0ZXIgaXQuCllldCB0aGVyZSBzaGFsbCBiZSBhIHNwYWNlIGJldHdlZW4geW91IGFuZCBpdCwgYWJvdXQgdHdvIHRob3VzYW5kIGN1Yml0cyBieSBtZWFzdXJlOiBjb21lIG5vdCBuZWFyIHVudG8gaXQsIHRoYXQgeWUgbWF5IGtub3cgdGhlIHdheSBieSB3aGljaCB5ZSBtdXN0IGdvOiBmb3IgeWUgaGF2ZSBub3QgcGFzc2VkIHRoaXMgd2F5IGhlcmV0b2ZvcmUuCkFuZCBKb3NodWEgc2FpZCB1bnRvIHRoZSBwZW9wbGUsIFNhbmN0aWZ5IHlvdXJzZWx2ZXM6IGZvciB0byBtb3Jyb3cgdGhlIExPUkQgd2lsbCBkbyB3b25kZXJzIGFtb25nIHlvdS4KQW5kIEpvc2h1YSBzcGFrZSB1bnRvIHRoZSBwcmllc3RzLCBzYXlpbmcsIFRha2UgdXAgdGhlIGFyayBvZiB0aGUgY292ZW5hbnQsIGFuZCBwYXNzIG92ZXIgYmVmb3JlIHRoZSBwZW9wbGUuIEFuZCB0aGV5IHRvb2sgdXAgdGhlIGFyayBvZiB0aGUgY292ZW5hbnQsIGFuZCB3ZW50IGJlZm9yZSB0aGUgcGVvcGxlLgpBbmQgdGhlIExPUkQgc2FpZCB1bnRvIEpvc2h1YSwgVGhpcyBkYXkgd2lsbCBJIGJlZ2luIHRvIG1hZ25pZnkgdGhlZSBpbiB0aGUgc2lnaHQgb2YgYWxsIElzcmFlbCwgdGhhdCB0aGV5IG1heSBrbm93IHRoYXQsIGFzIEkgd2FzIHdpdGggTW9zZXMsIHNvIEkgd2lsbCBiZSB3aXRoIHRoZWUuCkFuZCB0aG91IHNoYWx0IGNvbW1hbmQgdGhlIHByaWVzdHMgdGhhdCBiZWFyIHRoZSBhcmsgb2YgdGhlIGNvdmVuYW50LCBzYXlpbmcsIFdoZW4geWUgYXJlIGNvbWUgdG8gdGhlIGJyaW5rIG9mIHRoZSB3YXRlciBvZiBKb3JkYW4sIHllIHNoYWxsIHN0YW5kIHN0aWxsIGluIEpvcmRhbi4KQW5kIEpvc2h1YSBzYWlkIHVudG8gdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgQ29tZSBoaXRoZXIsIGFuZCBoZWFyIHRoZSB3b3JkcyBvZiB0aGUgTE9SRCB5b3VyIEdvZC4KQW5kIEpvc2h1YSBzYWlkLCBIZXJlYnkgeWUgc2hhbGwga25vdyB0aGF0IHRoZSBsaXZpbmcgR29kIGlzIGFtb25nIHlvdSwgYW5kIHRoYXQgaGUgd2lsbCB3aXRob3V0IGZhaWwgZHJpdmUgb3V0IGZyb20gYmVmb3JlIHlvdSB0aGUgQ2FuYWFuaXRlcywgYW5kIHRoZSBIaXR0aXRlcywgYW5kIHRoZSBIaXZpdGVzLCBhbmQgdGhlIFBlcml6eml0ZXMsIGFuZCB0aGUgR2lyZ2FzaGl0ZXMsIGFuZCB0aGUgQW1vcml0ZXMsIGFuZCB0aGUgSmVidXNpdGVzLgpCZWhvbGQsIHRoZSBhcmsgb2YgdGhlIGNvdmVuYW50IG9mIHRoZSBMT1JEIG9mIGFsbCB0aGUgZWFydGggcGFzc2V0aCBvdmVyIGJlZm9yZSB5b3UgaW50byBKb3JkYW4uCk5vdyB0aGVyZWZvcmUgdGFrZSB5b3UgdHdlbHZlIG1lbiBvdXQgb2YgdGhlIHRyaWJlcyBvZiBJc3JhZWwsIG91dCBvZiBldmVyeSB0cmliZSBhIG1hbi4KQW5kIGl0IHNoYWxsIGNvbWUgdG8gcGFzcywgYXMgc29vbiBhcyB0aGUgc29sZXMgb2YgdGhlIGZlZXQgb2YgdGhlIHByaWVzdHMgdGhhdCBiZWFyIHRoZSBhcmsgb2YgdGhlIExPUkQsIHRoZSBMT1JEIG9mIGFsbCB0aGUgZWFydGgsIHNoYWxsIHJlc3QgaW4gdGhlIHdhdGVycyBvZiBKb3JkYW4sIHRoYXQgdGhlIHdhdGVycyBvZiBKb3JkYW4gc2hhbGwgYmUgY3V0IG9mZiBmcm9tIHRoZSB3YXRlcnMgdGhhdCBjb21lIGRvd24gZnJvbSBhYm92ZTsgYW5kIHRoZXkgc2hhbGwgc3RhbmQgdXBvbiBhbiBoZWFwLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIHRoZSBwZW9wbGUgcmVtb3ZlZCBmcm9tIHRoZWlyIHRlbnRzLCB0byBwYXNzIG92ZXIgSm9yZGFuLCBhbmQgdGhlIHByaWVzdHMgYmVhcmluZyB0aGUgYXJrIG9mIHRoZSBjb3ZlbmFudCBiZWZvcmUgdGhlIHBlb3BsZTsKQW5kIGFzIHRoZXkgdGhhdCBiYXJlIHRoZSBhcmsgd2VyZSBjb21lIHVudG8gSm9yZGFuLCBhbmQgdGhlIGZlZXQgb2YgdGhlIHByaWVzdHMgdGhhdCBiYXJlIHRoZSBhcmsgd2VyZSBkaXBwZWQgaW4gdGhlIGJyaW0gb2YgdGhlIHdhdGVyLCAoZm9yIEpvcmRhbiBvdmVyZmxvd2V0aCBhbGwgaGlzIGJhbmtzIGFsbCB0aGUgdGltZSBvZiBoYXJ2ZXN0LCkKVGhhdCB0aGUgd2F0ZXJzIHdoaWNoIGNhbWUgZG93biBmcm9tIGFib3ZlIHN0b29kIGFuZCByb3NlIHVwIHVwb24gYW4gaGVhcCB2ZXJ5IGZhciBmcm9tIHRoZSBjaXR5IEFkYW0sIHRoYXQgaXMgYmVzaWRlIFphcmV0YW46IGFuZCB0aG9zZSB0aGF0IGNhbWUgZG93biB0b3dhcmQgdGhlIHNlYSBvZiB0aGUgcGxhaW4sIGV2ZW4gdGhlIHNhbHQgc2VhLCBmYWlsZWQsIGFuZCB3ZXJlIGN1dCBvZmY6IGFuZCB0aGUgcGVvcGxlIHBhc3NlZCBvdmVyIHJpZ2h0IGFnYWluc3QgSmVyaWNoby4KQW5kIHRoZSBwcmllc3RzIHRoYXQgYmFyZSB0aGUgYXJrIG9mIHRoZSBjb3ZlbmFudCBvZiB0aGUgTE9SRCBzdG9vZCBmaXJtIG9uIGRyeSBncm91bmQgaW4gdGhlIG1pZHN0IG9mIEpvcmRhbiwgYW5kIGFsbCB0aGUgSXNyYWVsaXRlcyBwYXNzZWQgb3ZlciBvbiBkcnkgZ3JvdW5kLCB1bnRpbCBhbGwgdGhlIHBlb3BsZSB3ZXJlIHBhc3NlZCBjbGVhbiBvdmVyIEpvcmRhbi4KQW5kIGl0IGNhbWUgdG8gcGFzcywgd2hlbiBhbGwgdGhlIHBlb3BsZSB3ZXJlIGNsZWFuIHBhc3NlZCBvdmVyIEpvcmRhbiwgdGhhdCB0aGUgTE9SRCBzcGFrZSB1bnRvIEpvc2h1YSwgc2F5aW5nLApUYWtlIHlvdSB0d2VsdmUgbWVuIG91dCBvZiB0aGUgcGVvcGxlLCBvdXQgb2YgZXZlcnkgdHJpYmUgYSBtYW4sCkFuZCBjb21tYW5kIHllIHRoZW0sIHNheWluZywgVGFrZSB5b3UgaGVuY2Ugb3V0IG9mIHRoZSBtaWRzdCBvZiBKb3JkYW4sIG91dCBvZiB0aGUgcGxhY2Ugd2hlcmUgdGhlIHByaWVzdHMnIGZlZXQgc3Rvb2QgZmlybSwgdHdlbHZlIHN0b25lcywgYW5kIHllIHNoYWxsIGNhcnJ5IHRoZW0gb3ZlciB3aXRoIHlvdSwgYW5kIGxlYXZlIHRoZW0gaW4gdGhlIGxvZGdpbmcgcGxhY2UsIHdoZXJlIHllIHNoYWxsIGxvZGdlIHRoaXMgbmlnaHQuClRoZW4gSm9zaHVhIGNhbGxlZCB0aGUgdHdlbHZlIG1lbiwgd2hvbSBoZSBoYWQgcHJlcGFyZWQgb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgb3V0IG9mIGV2ZXJ5IHRyaWJlIGEgbWFuOgpBbmQgSm9zaHVhIHNhaWQgdW50byB0aGVtLCBQYXNzIG92ZXIgYmVmb3JlIHRoZSBhcmsgb2YgdGhlIExPUkQgeW91ciBHb2QgaW50byB0aGUgbWlkc3Qgb2YgSm9yZGFuLCBhbmQgdGFrZSB5b3UgdXAgZXZlcnkgbWFuIG9mIHlvdSBhIHN0b25lIHVwb24gaGlzIHNob3VsZGVyLCBhY2NvcmRpbmcgdW50byB0aGUgbnVtYmVyIG9mIHRoZSB0cmliZXMgb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbDoKVGhhdCB0aGlzIG1heSBiZSBhIHNpZ24gYW1vbmcgeW91LCB0aGF0IHdoZW4geW91ciBjaGlsZHJlbiBhc2sgdGhlaXIgZmF0aGVycyBpbiB0aW1lIHRvIGNvbWUsIHNheWluZywgV2hhdCBtZWFuIHllIGJ5IHRoZXNlIHN0b25lcz8KVGhlbiB5ZSBzaGFsbCBhbnN3ZXIgdGhlbSwgVGhhdCB0aGUgd2F0ZXJzIG9mIEpvcmRhbiB3ZXJlIGN1dCBvZmYgYmVmb3JlIHRoZSBhcmsgb2YgdGhlIGNvdmVuYW50IG9mIHRoZSBMT1JEOyB3aGVuIGl0IHBhc3NlZCBvdmVyIEpvcmRhbiwgdGhlIHdhdGVycyBvZiBKb3JkYW4gd2VyZSBjdXQgb2ZmOiBhbmQgdGhlc2Ugc3RvbmVzIHNoYWxsIGJlIGZvciBhIG1lbW9yaWFsIHVudG8gdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBmb3IgZXZlci4KQW5kIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgZGlkIHNvIGFzIEpvc2h1YSBjb21tYW5kZWQsIGFuZCB0b29rIHVwIHR3ZWx2ZSBzdG9uZXMgb3V0IG9mIHRoZSBtaWRzdCBvZiBKb3JkYW4sIGFzIHRoZSBMT1JEIHNwYWtlIHVudG8gSm9zaHVhLCBhY2NvcmRpbmcgdG8gdGhlIG51bWJlciBvZiB0aGUgdHJpYmVzIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIGFuZCBjYXJyaWVkIHRoZW0gb3ZlciB3aXRoIHRoZW0gdW50byB0aGUgcGxhY2Ugd2hlcmUgdGhleSBsb2RnZWQsIGFuZCBsYWlkIHRoZW0gZG93biB0aGVyZS4KQW5kIEpvc2h1YSBzZXQgdXAgdHdlbHZlIHN0b25lcyBpbiB0aGUgbWlkc3Qgb2YgSm9yZGFuLCBpbiB0aGUgcGxhY2Ugd2hlcmUgdGhlIGZlZXQgb2YgdGhlIHByaWVzdHMgd2hpY2ggYmFyZSB0aGUgYXJrIG9mIHRoZSBjb3ZlbmFudCBzdG9vZDogYW5kIHRoZXkgYXJlIHRoZXJlIHVudG8gdGhpcyBkYXkuCkZvciB0aGUgcHJpZXN0cyB3aGljaCBiYXJlIHRoZSBhcmsgc3Rvb2QgaW4gdGhlIG1pZHN0IG9mIEpvcmRhbiwgdW50aWwgZXZlcnl0aGluZyB3YXMgZmluaXNoZWQgdGhhdCB0aGUgTE9SRCBjb21tYW5kZWQgSm9zaHVhIHRvIHNwZWFrIHVudG8gdGhlIHBlb3BsZSwgYWNjb3JkaW5nIHRvIGFsbCB0aGF0IE1vc2VzIGNvbW1hbmRlZCBKb3NodWE6IGFuZCB0aGUgcGVvcGxlIGhhc3RlZCBhbmQgcGFzc2VkIG92ZXIuCkFuZCBpdCBjYW1lIHRvIHBhc3MsIHdoZW4gYWxsIHRoZSBwZW9wbGUgd2VyZSBjbGVhbiBwYXNzZWQgb3ZlciwgdGhhdCB0aGUgYXJrIG9mIHRoZSBMT1JEIHBhc3NlZCBvdmVyLCBhbmQgdGhlIHByaWVzdHMsIGluIHRoZSBwcmVzZW5jZSBvZiB0aGUgcGVvcGxlLgpBbmQgdGhlIGNoaWxkcmVuIG9mIFJldWJlbiwgYW5kIHRoZSBjaGlsZHJlbiBvZiBHYWQsIGFuZCBoYWxmIHRoZSB0cmliZSBvZiBNYW5hc3NlaCwgcGFzc2VkIG92ZXIgYXJtZWQgYmVmb3JlIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIGFzIE1vc2VzIHNwYWtlIHVudG8gdGhlbToKQWJvdXQgZm9ydHkgdGhvdXNhbmQgcHJlcGFyZWQgZm9yIHdhciBwYXNzZWQgb3ZlciBiZWZvcmUgdGhlIExPUkQgdW50byBiYXR0bGUsIHRvIHRoZSBwbGFpbnMgb2YgSmVyaWNoby4KT24gdGhhdCBkYXkgdGhlIExPUkQgbWFnbmlmaWVkIEpvc2h1YSBpbiB0aGUgc2lnaHQgb2YgYWxsIElzcmFlbDsgYW5kIHRoZXkgZmVhcmVkIGhpbSwgYXMgdGhleSBmZWFyZWQgTW9zZXMsIGFsbCB0aGUgZGF5cyBvZiBoaXMgbGlmZS4KQW5kIHRoZSBMT1JEIHNwYWtlIHVudG8gSm9zaHVhLCBzYXlpbmcsCkNvbW1hbmQgdGhlIHByaWVzdHMgdGhhdCBiZWFyIHRoZSBhcmsgb2YgdGhlIHRlc3RpbW9ueSwgdGhhdCB0aGV5IGNvbWUgdXAgb3V0IG9mIEpvcmRhbi4KSm9zaHVhIHRoZXJlZm9yZSBjb21tYW5kZWQgdGhlIHByaWVzdHMsIHNheWluZywgQ29tZSB5ZSB1cCBvdXQgb2YgSm9yZGFuLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIHRoZSBwcmllc3RzIHRoYXQgYmFyZSB0aGUgYXJrIG9mIHRoZSBjb3ZlbmFudCBvZiB0aGUgTE9SRCB3ZXJlIGNvbWUgdXAgb3V0IG9mIHRoZSBtaWRzdCBvZiBKb3JkYW4sIGFuZCB0aGUgc29sZXMgb2YgdGhlIHByaWVzdHMnIGZlZXQgd2VyZSBsaWZ0ZWQgdXAgdW50byB0aGUgZHJ5IGxhbmQsIHRoYXQgdGhlIHdhdGVycyBvZiBKb3JkYW4gcmV0dXJuZWQgdW50byB0aGVpciBwbGFjZSwgYW5kIGZsb3dlZCBvdmVyIGFsbCBoaXMgYmFua3MsIGFzIHRoZXkgZGlkIGJlZm9yZS4KQW5kIHRoZSBwZW9wbGUgY2FtZSB1cCBvdXQgb2YgSm9yZGFuIG9uIHRoZSB0ZW50aCBkYXkgb2YgdGhlIGZpcnN0IG1vbnRoLCBhbmQgZW5jYW1wZWQgaW4gR2lsZ2FsLCBpbiB0aGUgZWFzdCBib3JkZXIgb2YgSmVyaWNoby4KQW5kIHRob3NlIHR3ZWx2ZSBzdG9uZXMsIHdoaWNoIHRoZXkgdG9vayBvdXQgb2YgSm9yZGFuLCBkaWQgSm9zaHVhIHBpdGNoIGluIEdpbGdhbC4KQW5kIGhlIHNwYWtlIHVudG8gdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgc2F5aW5nLCBXaGVuIHlvdXIgY2hpbGRyZW4gc2hhbGwgYXNrIHRoZWlyIGZhdGhlcnMgaW4gdGltZSB0byBjb21lLCBzYXlpbmcsIFdoYXQgbWVhbiB0aGVzZSBzdG9uZXM/ClRoZW4geWUgc2hhbGwgbGV0IHlvdXIgY2hpbGRyZW4ga25vdywgc2F5aW5nLCBJc3JhZWwgY2FtZSBvdmVyIHRoaXMgSm9yZGFuIG9uIGRyeSBsYW5kLgpGb3IgdGhlIExPUkQgeW91ciBHb2QgZHJpZWQgdXAgdGhlIHdhdGVycyBvZiBKb3JkYW4gZnJvbSBiZWZvcmUgeW91LCB1bnRpbCB5ZSB3ZXJlIHBhc3NlZCBvdmVyLCBhcyB0aGUgTE9SRCB5b3VyIEdvZCBkaWQgdG8gdGhlIFJlZCBzZWEsIHdoaWNoIGhlIGRyaWVkIHVwIGZyb20gYmVmb3JlIHVzLCB1bnRpbCB3ZSB3ZXJlIGdvbmUgb3ZlcjoKVGhhdCBhbGwgdGhlIHBlb3BsZSBvZiB0aGUgZWFydGggbWlnaHQga25vdyB0aGUgaGFuZCBvZiB0aGUgTE9SRCwgdGhhdCBpdCBpcyBtaWdodHk6IHRoYXQgeWUgbWlnaHQgZmVhciB0aGUgTE9SRCB5b3VyIEdvZCBmb3IgZXZlci4KQW5kIGl0IGNhbWUgdG8gcGFzcywgd2hlbiBhbGwgdGhlIGtpbmdzIG9mIHRoZSBBbW9yaXRlcywgd2hpY2ggd2VyZSBvbiB0aGUgc2lkZSBvZiBKb3JkYW4gd2VzdHdhcmQsIGFuZCBhbGwgdGhlIGtpbmdzIG9mIHRoZSBDYW5hYW5pdGVzLCB3aGljaCB3ZXJlIGJ5IHRoZSBzZWEsIGhlYXJkIHRoYXQgdGhlIExPUkQgaGFkIGRyaWVkIHVwIHRoZSB3YXRlcnMgb2YgSm9yZGFuIGZyb20gYmVmb3JlIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIHVudGlsIHdlIHdlcmUgcGFzc2VkIG92ZXIsIHRoYXQgdGhlaXIgaGVhcnQgbWVsdGVkLCBuZWl0aGVyIHdhcyB0aGVyZSBzcGlyaXQgaW4gdGhlbSBhbnkgbW9yZSwgYmVjYXVzZSBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLgpBdCB0aGF0IHRpbWUgdGhlIExPUkQgc2FpZCB1bnRvIEpvc2h1YSwgTWFrZSB0aGVlIHNoYXJwIGtuaXZlcywgYW5kIGNpcmN1bWNpc2UgYWdhaW4gdGhlIGNoaWxkcmVuIG9mIElzcmFlbCB0aGUgc2Vjb25kIHRpbWUuCkFuZCBKb3NodWEgbWFkZSBoaW0gc2hhcnAga25pdmVzLCBhbmQgY2lyY3VtY2lzZWQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBhdCB0aGUgaGlsbCBvZiB0aGUgZm9yZXNraW5zLgpBbmQgdGhpcyBpcyB0aGUgY2F1c2Ugd2h5IEpvc2h1YSBkaWQgY2lyY3VtY2lzZTogQWxsIHRoZSBwZW9wbGUgdGhhdCBjYW1lIG91dCBvZiBFZ3lwdCwgdGhhdCB3ZXJlIG1hbGVzLCBldmVuIGFsbCB0aGUgbWVuIG9mIHdhciwgZGllZCBpbiB0aGUgd2lsZGVybmVzcyBieSB0aGUgd2F5LCBhZnRlciB0aGV5IGNhbWUgb3V0IG9mIEVneXB0LgpOb3cgYWxsIHRoZSBwZW9wbGUgdGhhdCBjYW1lIG91dCB3ZXJlIGNpcmN1bWNpc2VkOiBidXQgYWxsIHRoZSBwZW9wbGUgdGhhdCB3ZXJlIGJvcm4gaW4gdGhlIHdpbGRlcm5lc3MgYnkgdGhlIHdheSBhcyB0aGV5IGNhbWUgZm9ydGggb3V0IG9mIEVneXB0LCB0aGVtIHRoZXkgaGFkIG5vdCBjaXJjdW1jaXNlZC4KRm9yIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgd2Fsa2VkIGZvcnR5IHllYXJzIGluIHRoZSB3aWxkZXJuZXNzLCB0aWxsIGFsbCB0aGUgcGVvcGxlIHRoYXQgd2VyZSBtZW4gb2Ygd2FyLCB3aGljaCBjYW1lIG91dCBvZiBFZ3lwdCwgd2VyZSBjb25zdW1lZCwgYmVjYXVzZSB0aGV5IG9iZXllZCBub3QgdGhlIHZvaWNlIG9mIHRoZSBMT1JEOiB1bnRvIHdob20gdGhlIExPUkQgc3dhcmUgdGhhdCBoZSB3b3VsZCBub3Qgc2hldyB0aGVtIHRoZSBsYW5kLCB3aGljaCB0aGUgTE9SRCBzd2FyZSB1bnRvIHRoZWlyIGZhdGhlcnMgdGhhdCBoZSB3b3VsZCBnaXZlIHVzLCBhIGxhbmQgdGhhdCBmbG93ZXRoIHdpdGggbWlsayBhbmQgaG9uZXkuCkFuZCB0aGVpciBjaGlsZHJlbiwgd2hvbSBoZSByYWlzZWQgdXAgaW4gdGhlaXIgc3RlYWQsIHRoZW0gSm9zaHVhIGNpcmN1bWNpc2VkOiBmb3IgdGhleSB3ZXJlIHVuY2lyY3VtY2lzZWQsIGJlY2F1c2UgdGhleSBoYWQgbm90IGNpcmN1bWNpc2VkIHRoZW0gYnkgdGhlIHdheS4KQW5kIGl0IGNhbWUgdG8gcGFzcywgd2hlbiB0aGV5IGhhZCBkb25lIGNpcmN1bWNpc2luZyBhbGwgdGhlIHBlb3BsZSwgdGhhdCB0aGV5IGFib2RlIGluIHRoZWlyIHBsYWNlcyBpbiB0aGUgY2FtcCwgdGlsbCB0aGV5IHdlcmUgd2hvbGUuCkFuZCB0aGUgTE9SRCBzYWlkIHVudG8gSm9zaHVhLCBUaGlzIGRheSBoYXZlIEkgcm9sbGVkIGF3YXkgdGhlIHJlcHJvYWNoIG9mIEVneXB0IGZyb20gb2ZmIHlvdS4gV2hlcmVmb3JlIHRoZSBuYW1lIG9mIHRoZSBwbGFjZSBpcyBjYWxsZWQgR2lsZ2FsIHVudG8gdGhpcyBkYXkuCkFuZCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGVuY2FtcGVkIGluIEdpbGdhbCwgYW5kIGtlcHQgdGhlIHBhc3NvdmVyIG9uIHRoZSBmb3VydGVlbnRoIGRheSBvZiB0aGUgbW9udGggYXQgZXZlbiBpbiB0aGUgcGxhaW5zIG9mIEplcmljaG8uCkFuZCB0aGV5IGRpZCBlYXQgb2YgdGhlIG9sZCBjb3JuIG9mIHRoZSBsYW5kIG9uIHRoZSBtb3Jyb3cgYWZ0ZXIgdGhlIHBhc3NvdmVyLCB1bmxlYXZlbmVkIGNha2VzLCBhbmQgcGFyY2hlZCBjb3JuIGluIHRoZSBzZWxmc2FtZSBkYXkuCkFuZCB0aGUgbWFubmEgY2Vhc2VkIG9uIHRoZSBtb3Jyb3cgYWZ0ZXIgdGhleSBoYWQgZWF0ZW4gb2YgdGhlIG9sZCBjb3JuIG9mIHRoZSBsYW5kOyBuZWl0aGVyIGhhZCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIG1hbm5hIGFueSBtb3JlOyBidXQgdGhleSBkaWQgZWF0IG9mIHRoZSBmcnVpdCBvZiB0aGUgbGFuZCBvZiBDYW5hYW4gdGhhdCB5ZWFyLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIEpvc2h1YSB3YXMgYnkgSmVyaWNobywgdGhhdCBoZSBsaWZ0ZWQgdXAgaGlzIGV5ZXMgYW5kIGxvb2tlZCwgYW5kLCBiZWhvbGQsIHRoZXJlIHN0b29kIGEgbWFuIG92ZXIgYWdhaW5zdCBoaW0gd2l0aCBoaXMgc3dvcmQgZHJhd24gaW4gaGlzIGhhbmQ6IGFuZCBKb3NodWEgd2VudCB1bnRvIGhpbSwgYW5kIHNhaWQgdW50byBoaW0sIEFydCB0aG91IGZvciB1cywgb3IgZm9yIG91ciBhZHZlcnNhcmllcz8KQW5kIGhlIHNhaWQsIE5heTsgYnV0IGFzIGNhcHRhaW4gb2YgdGhlIGhvc3Qgb2YgdGhlIExPUkQgYW0gSSBub3cgY29tZS4gQW5kIEpvc2h1YSBmZWxsIG9uIGhpcyBmYWNlIHRvIHRoZSBlYXJ0aCwgYW5kIGRpZCB3b3JzaGlwLCBhbmQgc2FpZCB1bnRvIGhpbSwgV2hhdCBzYWl0aCBteSBMb3JkIHVudG8gaGlzIHNlcnZhbnQ/CkFuZCB0aGUgY2FwdGFpbiBvZiB0aGUgTE9SRCdzIGhvc3Qgc2FpZCB1bnRvIEpvc2h1YSwgTG9vc2UgdGh5IHNob2UgZnJvbSBvZmYgdGh5IGZvb3Q7IGZvciB0aGUgcGxhY2Ugd2hlcmVvbiB0aG91IHN0YW5kZXN0IGlzIGhvbHkuIEFuZCBKb3NodWEgZGlkIHNvLgpOb3cgSmVyaWNobyB3YXMgc3RyYWl0bHkgc2h1dCB1cCBiZWNhdXNlIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWw6IG5vbmUgd2VudCBvdXQsIGFuZCBub25lIGNhbWUgaW4uCkFuZCB0aGUgTE9SRCBzYWlkIHVudG8gSm9zaHVhLCBTZWUsIEkgaGF2ZSBnaXZlbiBpbnRvIHRoaW5lIGhhbmQgSmVyaWNobywgYW5kIHRoZSBraW5nIHRoZXJlb2YsIGFuZCB0aGUgbWlnaHR5IG1lbiBvZiB2YWxvdXIuCkFuZCB5ZSBzaGFsbCBjb21wYXNzIHRoZSBjaXR5LCBhbGwgeWUgbWVuIG9mIHdhciwgYW5kIGdvIHJvdW5kIGFib3V0IHRoZSBjaXR5IG9uY2UuIFRodXMgc2hhbHQgdGhvdSBkbyBzaXggZGF5cy4KQW5kIHNldmVuIHByaWVzdHMgc2hhbGwgYmVhciBiZWZvcmUgdGhlIGFyayBzZXZlbiB0cnVtcGV0cyBvZiByYW1zJyBob3JuczogYW5kIHRoZSBzZXZlbnRoIGRheSB5ZSBzaGFsbCBjb21wYXNzIHRoZSBjaXR5IHNldmVuIHRpbWVzLCBhbmQgdGhlIHByaWVzdHMgc2hhbGwgYmxvdyB3aXRoIHRoZSB0cnVtcGV0cy4KQW5kIGl0IHNoYWxsIGNvbWUgdG8gcGFzcywgdGhhdCB3aGVuIHRoZXkgbWFrZSBhIGxvbmcgYmxhc3Qgd2l0aCB0aGUgcmFtJ3MgaG9ybiwgYW5kIHdoZW4geWUgaGVhciB0aGUgc291bmQgb2YgdGhlIHRydW1wZXQsIGFsbCB0aGUgcGVvcGxlIHNoYWxsIHNob3V0IHdpdGggYSBncmVhdCBzaG91dDsgYW5kIHRoZSB3YWxsIG9mIHRoZSBjaXR5IHNoYWxsIGZhbGwgZG93biBmbGF0LCBhbmQgdGhlIHBlb3BsZSBzaGFsbCBhc2NlbmQgdXAgZXZlcnkgbWFuIHN0cmFpZ2h0IGJlZm9yZSBoaW0uCkFuZCBKb3NodWEgdGhlIHNvbiBvZiBOdW4gY2FsbGVkIHRoZSBwcmllc3RzLCBhbmQgc2FpZCB1bnRvIHRoZW0sIFRha2UgdXAgdGhlIGFyayBvZiB0aGUgY292ZW5hbnQsIGFuZCBsZXQgc2V2ZW4gcHJpZXN0cyBiZWFyIHNldmVuIHRydW1wZXRzIG9mIHJhbXMnIGhvcm5zIGJlZm9yZSB0aGUgYXJrIG9mIHRoZSBMT1JELgpBbmQgaGUgc2FpZCB1bnRvIHRoZSBwZW9wbGUsIFBhc3Mgb24sIGFuZCBjb21wYXNzIHRoZSBjaXR5LCBhbmQgbGV0IGhpbSB0aGF0IGlzIGFybWVkIHBhc3Mgb24gYmVmb3JlIHRoZSBhcmsgb2YgdGhlIExPUkQuCkFuZCBpdCBjYW1lIHRvIHBhc3MsIHdoZW4gSm9zaHVhIGhhZCBzcG9rZW4gdW50byB0aGUgcGVvcGxlLCB0aGF0IHRoZSBzZXZlbiBwcmllc3RzIGJlYXJpbmcgdGhlIHNldmVuIHRydW1wZXRzIG9mIHJhbXMnIGhvcm5zIHBhc3NlZCBvbiBiZWZvcmUgdGhlIExPUkQsIGFuZCBibGV3IHdpdGggdGhlIHRydW1wZXRzOiBhbmQgdGhlIGFyayBvZiB0aGUgY292ZW5hbnQgb2YgdGhlIExPUkQgZm9sbG93ZWQgdGhlbS4KQW5kIHRoZSBhcm1lZCBtZW4gd2VudCBiZWZvcmUgdGhlIHByaWVzdHMgdGhhdCBibGV3IHdpdGggdGhlIHRydW1wZXRzLCBhbmQgdGhlIHJlcmV3YXJkIGNhbWUgYWZ0ZXIgdGhlIGFyaywgdGhlIHByaWVzdHMgZ29pbmcgb24sIGFuZCBibG93aW5nIHdpdGggdGhlIHRydW1wZXRzLgpBbmQgSm9zaHVhIGhhZCBjb21tYW5kZWQgdGhlIHBlb3BsZSwgc2F5aW5nLCBZZSBzaGFsbCBub3Qgc2hvdXQsIG5vciBtYWtlIGFueSBub2lzZSB3aXRoIHlvdXIgdm9pY2UsIG5laXRoZXIgc2hhbGwgYW55IHdvcmQgcHJvY2VlZCBvdXQgb2YgeW91ciBtb3V0aCwgdW50aWwgdGhlIGRheSBJIGJpZCB5b3Ugc2hvdXQ7IHRoZW4gc2hhbGwgeWUgc2hvdXQuClNvIHRoZSBhcmsgb2YgdGhlIExPUkQgY29tcGFzc2VkIHRoZSBjaXR5LCBnb2luZyBhYm91dCBpdCBvbmNlOiBhbmQgdGhleSBjYW1lIGludG8gdGhlIGNhbXAsIGFuZCBsb2RnZWQgaW4gdGhlIGNhbXAuCkFuZCBKb3NodWEgcm9zZSBlYXJseSBpbiB0aGUgbW9ybmluZywgYW5kIHRoZSBwcmllc3RzIHRvb2sgdXAgdGhlIGFyayBvZiB0aGUgTE9SRC4KQW5kIHNldmVuIHByaWVzdHMgYmVhcmluZyBzZXZlbiB0cnVtcGV0cyBvZiByYW1zJyBob3JucyBiZWZvcmUgdGhlIGFyayBvZiB0aGUgTE9SRCB3ZW50IG9uIGNvbnRpbnVhbGx5LCBhbmQgYmxldyB3aXRoIHRoZSB0cnVtcGV0czogYW5kIHRoZSBhcm1lZCBtZW4gd2VudCBiZWZvcmUgdGhlbTsgYnV0IHRoZSByZXJld2FyZCBjYW1lIGFmdGVyIHRoZSBhcmsgb2YgdGhlIExPUkQsIHRoZSBwcmllc3RzIGdvaW5nIG9uLCBhbmQgYmxvd2luZyB3aXRoIHRoZSB0cnVtcGV0cy4KQW5kIHRoZSBzZWNvbmQgZGF5IHRoZXkgY29tcGFzc2VkIHRoZSBjaXR5IG9uY2UsIGFuZCByZXR1cm5lZCBpbnRvIHRoZSBjYW1wOiBzbyB0aGV5IGRpZCBzaXggZGF5cy4KQW5kIGl0IGNhbWUgdG8gcGFzcyBvbiB0aGUgc2V2ZW50aCBkYXksIHRoYXQgdGhleSByb3NlIGVhcmx5IGFib3V0IHRoZSBkYXduaW5nIG9mIHRoZSBkYXksIGFuZCBjb21wYXNzZWQgdGhlIGNpdHkgYWZ0ZXIgdGhlIHNhbWUgbWFubmVyIHNldmVuIHRpbWVzOiBvbmx5IG9uIHRoYXQgZGF5IHRoZXkgY29tcGFzc2VkIHRoZSBjaXR5IHNldmVuIHRpbWVzLgpBbmQgaXQgY2FtZSB0byBwYXNzIGF0IHRoZSBzZXZlbnRoIHRpbWUsIHdoZW4gdGhlIHByaWVzdHMgYmxldyB3aXRoIHRoZSB0cnVtcGV0cywgSm9zaHVhIHNhaWQgdW50byB0aGUgcGVvcGxlLCBTaG91dDsgZm9yIHRoZSBMT1JEIGhhdGggZ2l2ZW4geW91IHRoZSBjaXR5LgpBbmQgdGhlIGNpdHkgc2hhbGwgYmUgYWNjdXJzZWQsIGV2ZW4gaXQsIGFuZCBhbGwgdGhhdCBhcmUgdGhlcmVpbiwgdG8gdGhlIExPUkQ6IG9ubHkgUmFoYWIgdGhlIGhhcmxvdCBzaGFsbCBsaXZlLCBzaGUgYW5kIGFsbCB0aGF0IGFyZSB3aXRoIGhlciBpbiB0aGUgaG91c2UsIGJlY2F1c2Ugc2hlIGhpZCB0aGUgbWVzc2VuZ2VycyB0aGF0IHdlIHNlbnQuCkFuZCB5ZSwgaW4gYW55IHdpc2Uga2VlcCB5b3Vyc2VsdmVzIGZyb20gdGhlIGFjY3Vyc2VkIHRoaW5nLCBsZXN0IHllIG1ha2UgeW91cnNlbHZlcyBhY2N1cnNlZCwgd2hlbiB5ZSB0YWtlIG9mIHRoZSBhY2N1cnNlZCB0aGluZywgYW5kIG1ha2UgdGhlIGNhbXAgb2YgSXNyYWVsIGEgY3Vyc2UsIGFuZCB0cm91YmxlIGl0LgpCdXQgYWxsIHRoZSBzaWx2ZXIsIGFuZCBnb2xkLCBhbmQgdmVzc2VscyBvZiBicmFzcyBhbmQgaXJvbiwgYXJlIGNvbnNlY3JhdGVkIHVudG8gdGhlIExPUkQ6IHRoZXkgc2hhbGwgY29tZSBpbnRvIHRoZSB0cmVhc3VyeSBvZiB0aGUgTE9SRC4KU28gdGhlIHBlb3BsZSBzaG91dGVkIHdoZW4gdGhlIHByaWVzdHMgYmxldyB3aXRoIHRoZSB0cnVtcGV0czogYW5kIGl0IGNhbWUgdG8gcGFzcywgd2hlbiB0aGUgcGVvcGxlIGhlYXJkIHRoZSBzb3VuZCBvZiB0aGUgdHJ1bXBldCwgYW5kIHRoZSBwZW9wbGUgc2hvdXRlZCB3aXRoIGEgZ3JlYXQgc2hvdXQsIHRoYXQgdGhlIHdhbGwgZmVsbCBkb3duIGZsYXQsIHNvIHRoYXQgdGhlIHBlb3BsZSB3ZW50IHVwIGludG8gdGhlIGNpdHksIGV2ZXJ5IG1hbiBzdHJhaWdodCBiZWZvcmUgaGltLCBhbmQgdGhleSB0b29rIHRoZSBjaXR5LgpBbmQgdGhleSB1dHRlcmx5IGRlc3Ryb3llZCBhbGwgdGhhdCB3YXMgaW4gdGhlIGNpdHksIGJvdGggbWFuIGFuZCB3b21hbiwgeW91bmcgYW5kIG9sZCwgYW5kIG94LCBhbmQgc2hlZXAsIGFuZCBhc3MsIHdpdGggdGhlIGVkZ2Ugb2YgdGhlIHN3b3JkLgpCdXQgSm9zaHVhIGhhZCBzYWlkIHVudG8gdGhlIHR3byBtZW4gdGhhdCBoYWQgc3BpZWQgb3V0IHRoZSBjb3VudHJ5LCBHbyBpbnRvIHRoZSBoYXJsb3QncyBob3VzZSwgYW5kIGJyaW5nIG91dCB0aGVuY2UgdGhlIHdvbWFuLCBhbmQgYWxsIHRoYXQgc2hlIGhhdGgsIGFzIHllIHN3YXJlIHVudG8gaGVyLgpBbmQgdGhlIHlvdW5nIG1lbiB0aGF0IHdlcmUgc3BpZXMgd2VudCBpbiwgYW5kIGJyb3VnaHQgb3V0IFJhaGFiLCBhbmQgaGVyIGZhdGhlciwgYW5kIGhlciBtb3RoZXIsIGFuZCBoZXIgYnJldGhyZW4sIGFuZCBhbGwgdGhhdCBzaGUgaGFkOyBhbmQgdGhleSBicm91Z2h0IG91dCBhbGwgaGVyIGtpbmRyZWQsIGFuZCBsZWZ0IHRoZW0gd2l0aG91dCB0aGUgY2FtcCBvZiBJc3JhZWwuCkFuZCB0aGV5IGJ1cm50IHRoZSBjaXR5IHdpdGggZmlyZSwgYW5kIGFsbCB0aGF0IHdhcyB0aGVyZWluOiBvbmx5IHRoZSBzaWx2ZXIsIGFuZCB0aGUgZ29sZCwgYW5kIHRoZSB2ZXNzZWxzIG9mIGJyYXNzIGFuZCBvZiBpcm9uLCB0aGV5IHB1dCBpbnRvIHRoZSB0cmVhc3VyeSBvZiB0aGUgaG91c2Ugb2YgdGhlIExPUkQuCkFuZCBKb3NodWEgc2F2ZWQgUmFoYWIgdGhlIGhhcmxvdCBhbGl2ZSwgYW5kIGhlciBmYXRoZXIncyBob3VzZWhvbGQsIGFuZCBhbGwgdGhhdCBzaGUgaGFkOyBhbmQgc2hlIGR3ZWxsZXRoIGluIElzcmFlbCBldmVuIHVudG8gdGhpcyBkYXk7IGJlY2F1c2Ugc2hlIGhpZCB0aGUgbWVzc2VuZ2Vycywgd2hpY2ggSm9zaHVhIHNlbnQgdG8gc3B5IG91dCBKZXJpY2hvLgpBbmQgSm9zaHVhIGFkanVyZWQgdGhlbSBhdCB0aGF0IHRpbWUsIHNheWluZywgQ3Vyc2VkIGJlIHRoZSBtYW4gYmVmb3JlIHRoZSBMT1JELCB0aGF0IHJpc2V0aCB1cCBhbmQgYnVpbGRldGggdGhpcyBjaXR5IEplcmljaG86IGhlIHNoYWxsIGxheSB0aGUgZm91bmRhdGlvbiB0aGVyZW9mIGluIGhpcyBmaXJzdGJvcm4sIGFuZCBpbiBoaXMgeW91bmdlc3Qgc29uIHNoYWxsIGhlIHNldCB1cCB0aGUgZ2F0ZXMgb2YgaXQuClNvIHRoZSBMT1JEIHdhcyB3aXRoIEpvc2h1YTsgYW5kIGhpcyBmYW1lIHdhcyBub2lzZWQgdGhyb3VnaG91dCBhbGwgdGhlIGNvdW50cnkuCkJ1dCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGNvbW1pdHRlZCBhIHRyZXNwYXNzIGluIHRoZSBhY2N1cnNlZCB0aGluZzogZm9yIEFjaGFuLCB0aGUgc29uIG9mIENhcm1pLCB0aGUgc29uIG9mIFphYmRpLCB0aGUgc29uIG9mIFplcmFoLCBvZiB0aGUgdHJpYmUgb2YgSnVkYWgsIHRvb2sgb2YgdGhlIGFjY3Vyc2VkIHRoaW5nOiBhbmQgdGhlIGFuZ2VyIG9mIHRoZSBMT1JEIHdhcyBraW5kbGVkIGFnYWluc3QgdGhlIGNoaWxkcmVuIG9mIElzcmFlbC4KQW5kIEpvc2h1YSBzZW50IG1lbiBmcm9tIEplcmljaG8gdG8gQWksIHdoaWNoIGlzIGJlc2lkZSBCZXRoYXZlbiwgb24gdGhlIGVhc3Qgb2YgQmV0aGVsLCBhbmQgc3Bha2UgdW50byB0aGVtLCBzYXlpbmcsIEdvIHVwIGFuZCB2aWV3IHRoZSBjb3VudHJ5LiBBbmQgdGhlIG1lbiB3ZW50IHVwIGFuZCB2aWV3ZWQgQWkuCkFuZCB0aGV5IHJldHVybmVkIHRvIEpvc2h1YSwgYW5kIHNhaWQgdW50byBoaW0sIExldCBub3QgYWxsIHRoZSBwZW9wbGUgZ28gdXA7IGJ1dCBsZXQgYWJvdXQgdHdvIG9yIHRocmVlIHRob3VzYW5kIG1lbiBnbyB1cCBhbmQgc21pdGUgQWk7IGFuZCBtYWtlIG5vdCBhbGwgdGhlIHBlb3BsZSB0byBsYWJvdXIgdGhpdGhlcjsgZm9yIHRoZXkgYXJlIGJ1dCBmZXcuClNvIHRoZXJlIHdlbnQgdXAgdGhpdGhlciBvZiB0aGUgcGVvcGxlIGFib3V0IHRocmVlIHRob3VzYW5kIG1lbjogYW5kIHRoZXkgZmxlZCBiZWZvcmUgdGhlIG1lbiBvZiBBaS4KQW5kIHRoZSBtZW4gb2YgQWkgc21vdGUgb2YgdGhlbSBhYm91dCB0aGlydHkgYW5kIHNpeCBtZW46IGZvciB0aGV5IGNoYXNlZCB0aGVtIGZyb20gYmVmb3JlIHRoZSBnYXRlIGV2ZW4gdW50byBTaGViYXJpbSwgYW5kIHNtb3RlIHRoZW0gaW4gdGhlIGdvaW5nIGRvd246IHdoZXJlZm9yZSB0aGUgaGVhcnRzIG9mIHRoZSBwZW9wbGUgbWVsdGVkLCBhbmQgYmVjYW1lIGFzIHdhdGVyLgpBbmQgSm9zaHVhIHJlbnQgaGlzIGNsb3RoZXMsIGFuZCBmZWxsIHRvIHRoZSBlYXJ0aCB1cG9uIGhpcyBmYWNlIGJlZm9yZSB0aGUgYXJrIG9mIHRoZSBMT1JEIHVudGlsIHRoZSBldmVudGlkZSwgaGUgYW5kIHRoZSBlbGRlcnMgb2YgSXNyYWVsLCBhbmQgcHV0IGR1c3QgdXBvbiB0aGVpciBoZWFkcy4KQW5kIEpvc2h1YSBzYWlkLCBBbGFzLCBPIExPUkQgR29kLCB3aGVyZWZvcmUgaGFzdCB0aG91IGF0IGFsbCBicm91Z2h0IHRoaXMgcGVvcGxlIG92ZXIgSm9yZGFuLCB0byBkZWxpdmVyIHVzIGludG8gdGhlIGhhbmQgb2YgdGhlIEFtb3JpdGVzLCB0byBkZXN0cm95IHVzPyB3b3VsZCB0byBHb2Qgd2UgaGFkIGJlZW4gY29udGVudCwgYW5kIGR3ZWx0IG9uIHRoZSBvdGhlciBzaWRlIEpvcmRhbiEKTyBMT1JELCB3aGF0IHNoYWxsIEkgc2F5LCB3aGVuIElzcmFlbCB0dXJuZXRoIHRoZWlyIGJhY2tzIGJlZm9yZSB0aGVpciBlbmVtaWVzIQpGb3IgdGhlIENhbmFhbml0ZXMgYW5kIGFsbCB0aGUgaW5oYWJpdGFudHMgb2YgdGhlIGxhbmQgc2hhbGwgaGVhciBvZiBpdCwgYW5kIHNoYWxsIGVudmlyb24gdXMgcm91bmQsIGFuZCBjdXQgb2ZmIG91ciBuYW1lIGZyb20gdGhlIGVhcnRoOiBhbmQgd2hhdCB3aWx0IHRob3UgZG8gdW50byB0aHkgZ3JlYXQgbmFtZT8KQW5kIHRoZSBMT1JEIHNhaWQgdW50byBKb3NodWEsIEdldCB0aGVlIHVwOyB3aGVyZWZvcmUgbGllc3QgdGhvdSB0aHVzIHVwb24gdGh5IGZhY2U/CklzcmFlbCBoYXRoIHNpbm5lZCwgYW5kIHRoZXkgaGF2ZSBhbHNvIHRyYW5zZ3Jlc3NlZCBteSBjb3ZlbmFudCB3aGljaCBJIGNvbW1hbmRlZCB0aGVtOiBmb3IgdGhleSBoYXZlIGV2ZW4gdGFrZW4gb2YgdGhlIGFjY3Vyc2VkIHRoaW5nLCBhbmQgaGF2ZSBhbHNvIHN0b2xlbiwgYW5kIGRpc3NlbWJsZWQgYWxzbywgYW5kIHRoZXkgaGF2ZSBwdXQgaXQgZXZlbiBhbW9uZyB0aGVpciBvd24gc3R1ZmYuClRoZXJlZm9yZSB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGNvdWxkIG5vdCBzdGFuZCBiZWZvcmUgdGhlaXIgZW5lbWllcywgYnV0IHR1cm5lZCB0aGVpciBiYWNrcyBiZWZvcmUgdGhlaXIgZW5lbWllcywgYmVjYXVzZSB0aGV5IHdlcmUgYWNjdXJzZWQ6IG5laXRoZXIgd2lsbCBJIGJlIHdpdGggeW91IGFueSBtb3JlLCBleGNlcHQgeWUgZGVzdHJveSB0aGUgYWNjdXJzZWQgZnJvbSBhbW9uZyB5b3UuClVwLCBzYW5jdGlmeSB0aGUgcGVvcGxlLCBhbmQgc2F5LCBTYW5jdGlmeSB5b3Vyc2VsdmVzIGFnYWluc3QgdG8gbW9ycm93OiBmb3IgdGh1cyBzYWl0aCB0aGUgTE9SRCBHb2Qgb2YgSXNyYWVsLCBUaGVyZSBpcyBhbiBhY2N1cnNlZCB0aGluZyBpbiB0aGUgbWlkc3Qgb2YgdGhlZSwgTyBJc3JhZWw6IHRob3UgY2Fuc3Qgbm90IHN0YW5kIGJlZm9yZSB0aGluZSBlbmVtaWVzLCB1bnRpbCB5ZSB0YWtlIGF3YXkgdGhlIGFjY3Vyc2VkIHRoaW5nIGZyb20gYW1vbmcgeW91LgpJbiB0aGUgbW9ybmluZyB0aGVyZWZvcmUgeWUgc2hhbGwgYmUgYnJvdWdodCBhY2NvcmRpbmcgdG8geW91ciB0cmliZXM6IGFuZCBpdCBzaGFsbCBiZSwgdGhhdCB0aGUgdHJpYmUgd2hpY2ggdGhlIExPUkQgdGFrZXRoIHNoYWxsIGNvbWUgYWNjb3JkaW5nIHRvIHRoZSBmYW1pbGllcyB0aGVyZW9mOyBhbmQgdGhlIGZhbWlseSB3aGljaCB0aGUgTE9SRCBzaGFsbCB0YWtlIHNoYWxsIGNvbWUgYnkgaG91c2Vob2xkczsgYW5kIHRoZSBob3VzZWhvbGQgd2hpY2ggdGhlIExPUkQgc2hhbGwgdGFrZSBzaGFsbCBjb21lIG1hbiBieSBtYW4uCkFuZCBpdCBzaGFsbCBiZSwgdGhhdCBoZSB0aGF0IGlzIHRha2VuIHdpdGggdGhlIGFjY3Vyc2VkIHRoaW5nIHNoYWxsIGJlIGJ1cm50IHdpdGggZmlyZSwgaGUgYW5kIGFsbCB0aGF0IGhlIGhhdGg6IGJlY2F1c2UgaGUgaGF0aCB0cmFuc2dyZXNzZWQgdGhlIGNvdmVuYW50IG9mIHRoZSBMT1JELCBhbmQgYmVjYXVzZSBoZSBoYXRoIHdyb3VnaHQgZm9sbHkgaW4gSXNyYWVsLgpTbyBKb3NodWEgcm9zZSB1cCBlYXJseSBpbiB0aGUgbW9ybmluZywgYW5kIGJyb3VnaHQgSXNyYWVsIGJ5IHRoZWlyIHRyaWJlczsgYW5kIHRoZSB0cmliZSBvZiBKdWRhaCB3YXMgdGFrZW46CkFuZCBoZSBicm91Z2h0IHRoZSBmYW1pbHkgb2YgSnVkYWg7IGFuZCBoZSB0b29rIHRoZSBmYW1pbHkgb2YgdGhlIFphcmhpdGVzOiBhbmQgaGUgYnJvdWdodCB0aGUgZmFtaWx5IG9mIHRoZSBaYXJoaXRlcyBtYW4gYnkgbWFuOyBhbmQgWmFiZGkgd2FzIHRha2VuOgpBbmQgaGUgYnJvdWdodCBoaXMgaG91c2Vob2xkIG1hbiBieSBtYW47IGFuZCBBY2hhbiwgdGhlIHNvbiBvZiBDYXJtaSwgdGhlIHNvbiBvZiBaYWJkaSwgdGhlIHNvbiBvZiBaZXJhaCwgb2YgdGhlIHRyaWJlIG9mIEp1ZGFoLCB3YXMgdGFrZW4uCkFuZCBKb3NodWEgc2FpZCB1bnRvIEFjaGFuLCBNeSBzb24sIGdpdmUsIEkgcHJheSB0aGVlLCBnbG9yeSB0byB0aGUgTE9SRCBHb2Qgb2YgSXNyYWVsLCBhbmQgbWFrZSBjb25mZXNzaW9uIHVudG8gaGltOyBhbmQgdGVsbCBtZSBub3cgd2hhdCB0aG91IGhhc3QgZG9uZTsgaGlkZSBpdCBub3QgZnJvbSBtZS4KQW5kIEFjaGFuIGFuc3dlcmVkIEpvc2h1YSwgYW5kIHNhaWQsIEluZGVlZCBJIGhhdmUgc2lubmVkIGFnYWluc3QgdGhlIExPUkQgR29kIG9mIElzcmFlbCwgYW5kIHRodXMgYW5kIHRodXMgaGF2ZSBJIGRvbmU6CldoZW4gSSBzYXcgYW1vbmcgdGhlIHNwb2lscyBhIGdvb2RseSBCYWJ5bG9uaXNoIGdhcm1lbnQsIGFuZCB0d28gaHVuZHJlZCBzaGVrZWxzIG9mIHNpbHZlciwgYW5kIGEgd2VkZ2Ugb2YgZ29sZCBvZiBmaWZ0eSBzaGVrZWxzIHdlaWdodCwgdGhlbiBJIGNvdmV0ZWQgdGhlbSwgYW5kIHRvb2sgdGhlbTsgYW5kLCBiZWhvbGQsIHRoZXkgYXJlIGhpZCBpbiB0aGUgZWFydGggaW4gdGhlIG1pZHN0IG9mIG15IHRlbnQsIGFuZCB0aGUgc2lsdmVyIHVuZGVyIGl0LgpTbyBKb3NodWEgc2VudCBtZXNzZW5nZXJzLCBhbmQgdGhleSByYW4gdW50byB0aGUgdGVudDsgYW5kLCBiZWhvbGQsIGl0IHdhcyBoaWQgaW4gaGlzIHRlbnQsIGFuZCB0aGUgc2lsdmVyIHVuZGVyIGl0LgpBbmQgdGhleSB0b29rIHRoZW0gb3V0IG9mIHRoZSBtaWRzdCBvZiB0aGUgdGVudCwgYW5kIGJyb3VnaHQgdGhlbSB1bnRvIEpvc2h1YSwgYW5kIHVudG8gYWxsIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIGFuZCBsYWlkIHRoZW0gb3V0IGJlZm9yZSB0aGUgTE9SRC4KQW5kIEpvc2h1YSwgYW5kIGFsbCBJc3JhZWwgd2l0aCBoaW0sIHRvb2sgQWNoYW4gdGhlIHNvbiBvZiBaZXJhaCwgYW5kIHRoZSBzaWx2ZXIsIGFuZCB0aGUgZ2FybWVudCwgYW5kIHRoZSB3ZWRnZSBvZiBnb2xkLCBhbmQgaGlzIHNvbnMsIGFuZCBoaXMgZGF1Z2h0ZXJzLCBhbmQgaGlzIG94ZW4sIGFuZCBoaXMgYXNzZXMsIGFuZCBoaXMgc2hlZXAsIGFuZCBoaXMgdGVudCwgYW5kIGFsbCB0aGF0IGhlIGhhZDogYW5kIHRoZXkgYnJvdWdodCB0aGVtIHVudG8gdGhlIHZhbGxleSBvZiBBY2hvci4KQW5kIEpvc2h1YSBzYWlkLCBXaHkgaGFzdCB0aG91IHRyb3VibGVkIHVzPyB0aGUgTE9SRCBzaGFsbCB0cm91YmxlIHRoZWUgdGhpcyBkYXkuIEFuZCBhbGwgSXNyYWVsIHN0b25lZCBoaW0gd2l0aCBzdG9uZXMsIGFuZCBidXJuZWQgdGhlbSB3aXRoIGZpcmUsIGFmdGVyIHRoZXkgaGFkIHN0b25lZCB0aGVtIHdpdGggc3RvbmVzLgpBbmQgdGhleSByYWlzZWQgb3ZlciBoaW0gYSBncmVhdCBoZWFwIG9mIHN0b25lcyB1bnRvIHRoaXMgZGF5LiBTbyB0aGUgTE9SRCB0dXJuZWQgZnJvbSB0aGUgZmllcmNlbmVzcyBvZiBoaXMgYW5nZXIuIFdoZXJlZm9yZSB0aGUgbmFtZSBvZiB0aGF0IHBsYWNlIHdhcyBjYWxsZWQsIFRoZSB2YWxsZXkgb2YgQWNob3IsIHVudG8gdGhpcyBkYXkuCkFuZCB0aGUgTE9SRCBzYWlkIHVudG8gSm9zaHVhLCBGZWFyIG5vdCwgbmVpdGhlciBiZSB0aG91IGRpc21heWVkOiB0YWtlIGFsbCB0aGUgcGVvcGxlIG9mIHdhciB3aXRoIHRoZWUsIGFuZCBhcmlzZSwgZ28gdXAgdG8gQWk6IHNlZSwgSSBoYXZlIGdpdmVuIGludG8gdGh5IGhhbmQgdGhlIGtpbmcgb2YgQWksIGFuZCBoaXMgcGVvcGxlLCBhbmQgaGlzIGNpdHksIGFuZCBoaXMgbGFuZDoKQW5kIHRob3Ugc2hhbHQgZG8gdG8gQWkgYW5kIGhlciBraW5nIGFzIHRob3UgZGlkc3QgdW50byBKZXJpY2hvIGFuZCBoZXIga2luZzogb25seSB0aGUgc3BvaWwgdGhlcmVvZiwgYW5kIHRoZSBjYXR0bGUgdGhlcmVvZiwgc2hhbGwgeWUgdGFrZSBmb3IgYSBwcmV5IHVudG8geW91cnNlbHZlczogbGF5IHRoZWUgYW4gYW1idXNoIGZvciB0aGUgY2l0eSBiZWhpbmQgaXQuClNvIEpvc2h1YSBhcm9zZSwgYW5kIGFsbCB0aGUgcGVvcGxlIG9mIHdhciwgdG8gZ28gdXAgYWdhaW5zdCBBaTogYW5kIEpvc2h1YSBjaG9zZSBvdXQgdGhpcnR5IHRob3VzYW5kIG1pZ2h0eSBtZW4gb2YgdmFsb3VyLCBhbmQgc2VudCB0aGVtIGF3YXkgYnkgbmlnaHQuCkFuZCBoZSBjb21tYW5kZWQgdGhlbSwgc2F5aW5nLCBCZWhvbGQsIHllIHNoYWxsIGxpZSBpbiB3YWl0IGFnYWluc3QgdGhlIGNpdHksIGV2ZW4gYmVoaW5kIHRoZSBjaXR5OiBnbyBub3QgdmVyeSBmYXIgZnJvbSB0aGUgY2l0eSwgYnV0IGJlIHllIGFsbCByZWFkeToKQW5kIEksIGFuZCBhbGwgdGhlIHBlb3BsZSB0aGF0IGFyZSB3aXRoIG1lLCB3aWxsIGFwcHJvYWNoIHVudG8gdGhlIGNpdHk6IGFuZCBpdCBzaGFsbCBjb21lIHRvIHBhc3MsIHdoZW4gdGhleSBjb21lIG91dCBhZ2FpbnN0IHVzLCBhcyBhdCB0aGUgZmlyc3QsIHRoYXQgd2Ugd2lsbCBmbGVlIGJlZm9yZSB0aGVtLAooRm9yIHRoZXkgd2lsbCBjb21lIG91dCBhZnRlciB1cykgdGlsbCB3ZSBoYXZlIGRyYXduIHRoZW0gZnJvbSB0aGUgY2l0eTsgZm9yIHRoZXkgd2lsbCBzYXksIFRoZXkgZmxlZSBiZWZvcmUgdXMsIGFzIGF0IHRoZSBmaXJzdDogdGhlcmVmb3JlIHdlIHdpbGwgZmxlZSBiZWZvcmUgdGhlbS4KVGhlbiB5ZSBzaGFsbCByaXNlIHVwIGZyb20gdGhlIGFtYnVzaCwgYW5kIHNlaXplIHVwb24gdGhlIGNpdHk6IGZvciB0aGUgTE9SRCB5b3VyIEdvZCB3aWxsIGRlbGl2ZXIgaXQgaW50byB5b3VyIGhhbmQuCkFuZCBpdCBzaGFsbCBiZSwgd2hlbiB5ZSBoYXZlIHRha2VuIHRoZSBjaXR5LCB0aGF0IHllIHNoYWxsIHNldCB0aGUgY2l0eSBvbiBmaXJlOiBhY2NvcmRpbmcgdG8gdGhlIGNvbW1hbmRtZW50IG9mIHRoZSBMT1JEIHNoYWxsIHllIGRvLiBTZWUsIEkgaGF2ZSBjb21tYW5kZWQgeW91LgpKb3NodWEgdGhlcmVmb3JlIHNlbnQgdGhlbSBmb3J0aDogYW5kIHRoZXkgd2VudCB0byBsaWUgaW4gYW1idXNoLCBhbmQgYWJvZGUgYmV0d2VlbiBCZXRoZWwgYW5kIEFpLCBvbiB0aGUgd2VzdCBzaWRlIG9mIEFpOiBidXQgSm9zaHVhIGxvZGdlZCB0aGF0IG5pZ2h0IGFtb25nIHRoZSBwZW9wbGUuCkFuZCBKb3NodWEgcm9zZSB1cCBlYXJseSBpbiB0aGUgbW9ybmluZywgYW5kIG51bWJlcmVkIHRoZSBwZW9wbGUsIGFuZCB3ZW50IHVwLCBoZSBhbmQgdGhlIGVsZGVycyBvZiBJc3JhZWwsIGJlZm9yZSB0aGUgcGVvcGxlIHRvIEFpLgpBbmQgYWxsIHRoZSBwZW9wbGUsIGV2ZW4gdGhlIHBlb3BsZSBvZiB3YXIgdGhhdCB3ZXJlIHdpdGggaGltLCB3ZW50IHVwLCBhbmQgZHJldyBuaWdoLCBhbmQgY2FtZSBiZWZvcmUgdGhlIGNpdHksIGFuZCBwaXRjaGVkIG9uIHRoZSBub3J0aCBzaWRlIG9mIEFpOiBub3cgdGhlcmUgd2FzIGEgdmFsbGV5IGJldHdlZW4gdGhlbSBhbmQgQWkuCkFuZCBoZSB0b29rIGFib3V0IGZpdmUgdGhvdXNhbmQgbWVuLCBhbmQgc2V0IHRoZW0gdG8gbGllIGluIGFtYnVzaCBiZXR3ZWVuIEJldGhlbCBhbmQgQWksIG9uIHRoZSB3ZXN0IHNpZGUgb2YgdGhlIGNpdHkuCkFuZCB3aGVuIHRoZXkgaGFkIHNldCB0aGUgcGVvcGxlLCBldmVuIGFsbCB0aGUgaG9zdCB0aGF0IHdhcyBvbiB0aGUgbm9ydGggb2YgdGhlIGNpdHksIGFuZCB0aGVpciBsaWVycyBpbiB3YWl0IG9uIHRoZSB3ZXN0IG9mIHRoZSBjaXR5LCBKb3NodWEgd2VudCB0aGF0IG5pZ2h0IGludG8gdGhlIG1pZHN0IG9mIHRoZSB2YWxsZXkuCkFuZCBpdCBjYW1lIHRvIHBhc3MsIHdoZW4gdGhlIGtpbmcgb2YgQWkgc2F3IGl0LCB0aGF0IHRoZXkgaGFzdGVkIGFuZCByb3NlIHVwIGVhcmx5LCBhbmQgdGhlIG1lbiBvZiB0aGUgY2l0eSB3ZW50IG91dCBhZ2FpbnN0IElzcmFlbCB0byBiYXR0bGUsIGhlIGFuZCBhbGwgaGlzIHBlb3BsZSwgYXQgYSB0aW1lIGFwcG9pbnRlZCwgYmVmb3JlIHRoZSBwbGFpbjsgYnV0IGhlIHdpc3Qgbm90IHRoYXQgdGhlcmUgd2VyZSBsaWVycyBpbiBhbWJ1c2ggYWdhaW5zdCBoaW0gYmVoaW5kIHRoZSBjaXR5LgpBbmQgSm9zaHVhIGFuZCBhbGwgSXNyYWVsIG1hZGUgYXMgaWYgdGhleSB3ZXJlIGJlYXRlbiBiZWZvcmUgdGhlbSwgYW5kIGZsZWQgYnkgdGhlIHdheSBvZiB0aGUgd2lsZGVybmVzcy4KQW5kIGFsbCB0aGUgcGVvcGxlIHRoYXQgd2VyZSBpbiBBaSB3ZXJlIGNhbGxlZCB0b2dldGhlciB0byBwdXJzdWUgYWZ0ZXIgdGhlbTogYW5kIHRoZXkgcHVyc3VlZCBhZnRlciBKb3NodWEsIGFuZCB3ZXJlIGRyYXduIGF3YXkgZnJvbSB0aGUgY2l0eS4KQW5kIHRoZXJlIHdhcyBub3QgYSBtYW4gbGVmdCBpbiBBaSBvciBCZXRoZWwsIHRoYXQgd2VudCBub3Qgb3V0IGFmdGVyIElzcmFlbDogYW5kIHRoZXkgbGVmdCB0aGUgY2l0eSBvcGVuLCBhbmQgcHVyc3VlZCBhZnRlciBJc3JhZWwuCkFuZCB0aGUgTE9SRCBzYWlkIHVudG8gSm9zaHVhLCBTdHJldGNoIG91dCB0aGUgc3BlYXIgdGhhdCBpcyBpbiB0aHkgaGFuZCB0b3dhcmQgQWk7IGZvciBJIHdpbGwgZ2l2ZSBpdCBpbnRvIHRoaW5lIGhhbmQuIEFuZCBKb3NodWEgc3RyZXRjaGVkIG91dCB0aGUgc3BlYXIgdGhhdCBoZSBoYWQgaW4gaGlzIGhhbmQgdG93YXJkIHRoZSBjaXR5LgpBbmQgdGhlIGFtYnVzaCBhcm9zZSBxdWlja2x5IG91dCBvZiB0aGVpciBwbGFjZSwgYW5kIHRoZXkgcmFuIGFzIHNvb24gYXMgaGUgaGFkIHN0cmV0Y2hlZCBvdXQgaGlzIGhhbmQ6IGFuZCB0aGV5IGVudGVyZWQgaW50byB0aGUgY2l0eSwgYW5kIHRvb2sgaXQsIGFuZCBoYXN0ZWQgYW5kIHNldCB0aGUgY2l0eSBvbiBmaXJlLgpBbmQgd2hlbiB0aGUgbWVuIG9mIEFpIGxvb2tlZCBiZWhpbmQgdGhlbSwgdGhleSBzYXcsIGFuZCwgYmVob2xkLCB0aGUgc21va2Ugb2YgdGhlIGNpdHkgYXNjZW5kZWQgdXAgdG8gaGVhdmVuLCBhbmQgdGhleSBoYWQgbm8gcG93ZXIgdG8gZmxlZSB0aGlzIHdheSBvciB0aGF0IHdheTogYW5kIHRoZSBwZW9wbGUgdGhhdCBmbGVkIHRvIHRoZSB3aWxkZXJuZXNzIHR1cm5lZCBiYWNrIHVwb24gdGhlIHB1cnN1ZXJzLgpBbmQgd2hlbiBKb3NodWEgYW5kIGFsbCBJc3JhZWwgc2F3IHRoYXQgdGhlIGFtYnVzaCBoYWQgdGFrZW4gdGhlIGNpdHksIGFuZCB0aGF0IHRoZSBzbW9rZSBvZiB0aGUgY2l0eSBhc2NlbmRlZCwgdGhlbiB0aGV5IHR1cm5lZCBhZ2FpbiwgYW5kIHNsZXcgdGhlIG1lbiBvZiBBaS4KQW5kIHRoZSBvdGhlciBpc3N1ZWQgb3V0IG9mIHRoZSBjaXR5IGFnYWluc3QgdGhlbTsgc28gdGhleSB3ZXJlIGluIHRoZSBtaWRzdCBvZiBJc3JhZWwsIHNvbWUgb24gdGhpcyBzaWRlLCBhbmQgc29tZSBvbiB0aGF0IHNpZGU6IGFuZCB0aGV5IHNtb3RlIHRoZW0sIHNvIHRoYXQgdGhleSBsZXQgbm9uZSBvZiB0aGVtIHJlbWFpbiBvciBlc2NhcGUuCkFuZCB0aGUga2luZyBvZiBBaSB0aGV5IHRvb2sgYWxpdmUsIGFuZCBicm91Z2h0IGhpbSB0byBKb3NodWEuCkFuZCBpdCBjYW1lIHRvIHBhc3MsIHdoZW4gSXNyYWVsIGhhZCBtYWRlIGFuIGVuZCBvZiBzbGF5aW5nIGFsbCB0aGUgaW5oYWJpdGFudHMgb2YgQWkgaW4gdGhlIGZpZWxkLCBpbiB0aGUgd2lsZGVybmVzcyB3aGVyZWluIHRoZXkgY2hhc2VkIHRoZW0sIGFuZCB3aGVuIHRoZXkgd2VyZSBhbGwgZmFsbGVuIG9uIHRoZSBlZGdlIG9mIHRoZSBzd29yZCwgdW50aWwgdGhleSB3ZXJlIGNvbnN1bWVkLCB0aGF0IGFsbCB0aGUgSXNyYWVsaXRlcyByZXR1cm5lZCB1bnRvIEFpLCBhbmQgc21vdGUgaXQgd2l0aCB0aGUgZWRnZSBvZiB0aGUgc3dvcmQuCkFuZCBzbyBpdCB3YXMsIHRoYXQgYWxsIHRoYXQgZmVsbCB0aGF0IGRheSwgYm90aCBvZiBtZW4gYW5kIHdvbWVuLCB3ZXJlIHR3ZWx2ZSB0aG91c2FuZCwgZXZlbiBhbGwgdGhlIG1lbiBvZiBBaS4KRm9yIEpvc2h1YSBkcmV3IG5vdCBoaXMgaGFuZCBiYWNrLCB3aGVyZXdpdGggaGUgc3RyZXRjaGVkIG91dCB0aGUgc3BlYXIsIHVudGlsIGhlIGhhZCB1dHRlcmx5IGRlc3Ryb3llZCBhbGwgdGhlIGluaGFiaXRhbnRzIG9mIEFpLgpPbmx5IHRoZSBjYXR0bGUgYW5kIHRoZSBzcG9pbCBvZiB0aGF0IGNpdHkgSXNyYWVsIHRvb2sgZm9yIGEgcHJleSB1bnRvIHRoZW1zZWx2ZXMsIGFjY29yZGluZyB1bnRvIHRoZSB3b3JkIG9mIHRoZSBMT1JEIHdoaWNoIGhlIGNvbW1hbmRlZCBKb3NodWEuCkFuZCBKb3NodWEgYnVybnQgQWksIGFuZCBtYWRlIGl0IGFuIGhlYXAgZm9yIGV2ZXIsIGV2ZW4gYSBkZXNvbGF0aW9uIHVudG8gdGhpcyBkYXkuCkFuZCB0aGUga2luZyBvZiBBaSBoZSBoYW5nZWQgb24gYSB0cmVlIHVudGlsIGV2ZW50aWRlOiBhbmQgYXMgc29vbiBhcyB0aGUgc3VuIHdhcyBkb3duLCBKb3NodWEgY29tbWFuZGVkIHRoYXQgdGhleSBzaG91bGQgdGFrZSBoaXMgY2FyY2FzZSBkb3duIGZyb20gdGhlIHRyZWUsIGFuZCBjYXN0IGl0IGF0IHRoZSBlbnRlcmluZyBvZiB0aGUgZ2F0ZSBvZiB0aGUgY2l0eSwgYW5kIHJhaXNlIHRoZXJlb24gYSBncmVhdCBoZWFwIG9mIHN0b25lcywgdGhhdCByZW1haW5ldGggdW50byB0aGlzIGRheS4KVGhlbiBKb3NodWEgYnVpbHQgYW4gYWx0YXIgdW50byB0aGUgTE9SRCBHb2Qgb2YgSXNyYWVsIGluIG1vdW50IEViYWwsCkFzIE1vc2VzIHRoZSBzZXJ2YW50IG9mIHRoZSBMT1JEIGNvbW1hbmRlZCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLCBhcyBpdCBpcyB3cml0dGVuIGluIHRoZSBib29rIG9mIHRoZSBsYXcgb2YgTW9zZXMsIGFuIGFsdGFyIG9mIHdob2xlIHN0b25lcywgb3ZlciB3aGljaCBubyBtYW4gaGF0aCBsaWZ0IHVwIGFueSBpcm9uOiBhbmQgdGhleSBvZmZlcmVkIHRoZXJlb24gYnVybnQgb2ZmZXJpbmdzIHVudG8gdGhlIExPUkQsIGFuZCBzYWNyaWZpY2VkIHBlYWNlIG9mZmVyaW5ncy4KQW5kIGhlIHdyb3RlIHRoZXJlIHVwb24gdGhlIHN0b25lcyBhIGNvcHkgb2YgdGhlIGxhdyBvZiBNb3Nlcywgd2hpY2ggaGUgd3JvdGUgaW4gdGhlIHByZXNlbmNlIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwuCkFuZCBhbGwgSXNyYWVsLCBhbmQgdGhlaXIgZWxkZXJzLCBhbmQgb2ZmaWNlcnMsIGFuZCB0aGVpciBqdWRnZXMsIHN0b29kIG9uIHRoaXMgc2lkZSB0aGUgYXJrIGFuZCBvbiB0aGF0IHNpZGUgYmVmb3JlIHRoZSBwcmllc3RzIHRoZSBMZXZpdGVzLCB3aGljaCBiYXJlIHRoZSBhcmsgb2YgdGhlIGNvdmVuYW50IG9mIHRoZSBMT1JELCBhcyB3ZWxsIHRoZSBzdHJhbmdlciwgYXMgaGUgdGhhdCB3YXMgYm9ybiBhbW9uZyB0aGVtOyBoYWxmIG9mIHRoZW0gb3ZlciBhZ2FpbnN0IG1vdW50IEdlcml6aW0sIGFuZCBoYWxmIG9mIHRoZW0gb3ZlciBhZ2FpbnN0IG1vdW50IEViYWw7IGFzIE1vc2VzIHRoZSBzZXJ2YW50IG9mIHRoZSBMT1JEIGhhZCBjb21tYW5kZWQgYmVmb3JlLCB0aGF0IHRoZXkgc2hvdWxkIGJsZXNzIHRoZSBwZW9wbGUgb2YgSXNyYWVsLgpBbmQgYWZ0ZXJ3YXJkIGhlIHJlYWQgYWxsIHRoZSB3b3JkcyBvZiB0aGUgbGF3LCB0aGUgYmxlc3NpbmdzIGFuZCBjdXJzaW5ncywgYWNjb3JkaW5nIHRvIGFsbCB0aGF0IGlzIHdyaXR0ZW4gaW4gdGhlIGJvb2sgb2YgdGhlIGxhdy4KVGhlcmUgd2FzIG5vdCBhIHdvcmQgb2YgYWxsIHRoYXQgTW9zZXMgY29tbWFuZGVkLCB3aGljaCBKb3NodWEgcmVhZCBub3QgYmVmb3JlIGFsbCB0aGUgY29uZ3JlZ2F0aW9uIG9mIElzcmFlbCwgd2l0aCB0aGUgd29tZW4sIGFuZCB0aGUgbGl0dGxlIG9uZXMsIGFuZCB0aGUgc3RyYW5nZXJzIHRoYXQgd2VyZSBjb252ZXJzYW50IGFtb25nIHRoZW0uCkFuZCBpdCBjYW1lIHRvIHBhc3MsIHdoZW4gYWxsIHRoZSBraW5ncyB3aGljaCB3ZXJlIG9uIHRoaXMgc2lkZSBKb3JkYW4sIGluIHRoZSBoaWxscywgYW5kIGluIHRoZSB2YWxsZXlzLCBhbmQgaW4gYWxsIHRoZSBjb2FzdHMgb2YgdGhlIGdyZWF0IHNlYSBvdmVyIGFnYWluc3QgTGViYW5vbiwgdGhlIEhpdHRpdGUsIGFuZCB0aGUgQW1vcml0ZSwgdGhlIENhbmFhbml0ZSwgdGhlIFBlcml6eml0ZSwgdGhlIEhpdml0ZSwgYW5kIHRoZSBKZWJ1c2l0ZSwgaGVhcmQgdGhlcmVvZjsKVGhhdCB0aGV5IGdhdGhlcmVkIHRoZW1zZWx2ZXMgdG9nZXRoZXIsIHRvIGZpZ2h0IHdpdGggSm9zaHVhIGFuZCB3aXRoIElzcmFlbCwgd2l0aCBvbmUgYWNjb3JkLgpBbmQgd2hlbiB0aGUgaW5oYWJpdGFudHMgb2YgR2liZW9uIGhlYXJkIHdoYXQgSm9zaHVhIGhhZCBkb25lIHVudG8gSmVyaWNobyBhbmQgdG8gQWksClRoZXkgZGlkIHdvcmsgd2lsaWx5LCBhbmQgd2VudCBhbmQgbWFkZSBhcyBpZiB0aGV5IGhhZCBiZWVuIGFtYmFzc2Fkb3JzLCBhbmQgdG9vayBvbGQgc2Fja3MgdXBvbiB0aGVpciBhc3NlcywgYW5kIHdpbmUgYm90dGxlcywgb2xkLCBhbmQgcmVudCwgYW5kIGJvdW5kIHVwOwpBbmQgb2xkIHNob2VzIGFuZCBjbG91dGVkIHVwb24gdGhlaXIgZmVldCwgYW5kIG9sZCBnYXJtZW50cyB1cG9uIHRoZW07IGFuZCBhbGwgdGhlIGJyZWFkIG9mIHRoZWlyIHByb3Zpc2lvbiB3YXMgZHJ5IGFuZCBtb3VsZHkuCkFuZCB0aGV5IHdlbnQgdG8gSm9zaHVhIHVudG8gdGhlIGNhbXAgYXQgR2lsZ2FsLCBhbmQgc2FpZCB1bnRvIGhpbSwgYW5kIHRvIHRoZSBtZW4gb2YgSXNyYWVsLCBXZSBiZSBjb21lIGZyb20gYSBmYXIgY291bnRyeTogbm93IHRoZXJlZm9yZSBtYWtlIHllIGEgbGVhZ3VlIHdpdGggdXMuCkFuZCB0aGUgbWVuIG9mIElzcmFlbCBzYWlkIHVudG8gdGhlIEhpdml0ZXMsIFBlcmFkdmVudHVyZSB5ZSBkd2VsbCBhbW9uZyB1czsgYW5kIGhvdyBzaGFsbCB3ZSBtYWtlIGEgbGVhZ3VlIHdpdGggeW91PwpBbmQgdGhleSBzYWlkIHVudG8gSm9zaHVhLCBXZSBhcmUgdGh5IHNlcnZhbnRzLiBBbmQgSm9zaHVhIHNhaWQgdW50byB0aGVtLCBXaG8gYXJlIHllPyBhbmQgZnJvbSB3aGVuY2UgY29tZSB5ZT8KQW5kIHRoZXkgc2FpZCB1bnRvIGhpbSwgRnJvbSBhIHZlcnkgZmFyIGNvdW50cnkgdGh5IHNlcnZhbnRzIGFyZSBjb21lIGJlY2F1c2Ugb2YgdGhlIG5hbWUgb2YgdGhlIExPUkQgdGh5IEdvZDogZm9yIHdlIGhhdmUgaGVhcmQgdGhlIGZhbWUgb2YgaGltLCBhbmQgYWxsIHRoYXQgaGUgZGlkIGluIEVneXB0LApBbmQgYWxsIHRoYXQgaGUgZGlkIHRvIHRoZSB0d28ga2luZ3Mgb2YgdGhlIEFtb3JpdGVzLCB0aGF0IHdlcmUgYmV5b25kIEpvcmRhbiwgdG8gU2lob24ga2luZyBvZiBIZXNoYm9uLCBhbmQgdG8gT2cga2luZyBvZiBCYXNoYW4sIHdoaWNoIHdhcyBhdCBBc2h0YXJvdGguCldoZXJlZm9yZSBvdXIgZWxkZXJzIGFuZCBhbGwgdGhlIGluaGFiaXRhbnRzIG9mIG91ciBjb3VudHJ5IHNwYWtlIHRvIHVzLCBzYXlpbmcsIFRha2UgdmljdHVhbHMgd2l0aCB5b3UgZm9yIHRoZSBqb3VybmV5LCBhbmQgZ28gdG8gbWVldCB0aGVtLCBhbmQgc2F5IHVudG8gdGhlbSwgV2UgYXJlIHlvdXIgc2VydmFudHM6IHRoZXJlZm9yZSBub3cgbWFrZSB5ZSBhIGxlYWd1ZSB3aXRoIHVzLgpUaGlzIG91ciBicmVhZCB3ZSB0b29rIGhvdCBmb3Igb3VyIHByb3Zpc2lvbiBvdXQgb2Ygb3VyIGhvdXNlcyBvbiB0aGUgZGF5IHdlIGNhbWUgZm9ydGggdG8gZ28gdW50byB5b3U7IGJ1dCBub3csIGJlaG9sZCwgaXQgaXMgZHJ5LCBhbmQgaXQgaXMgbW91bGR5OgpBbmQgdGhlc2UgYm90dGxlcyBvZiB3aW5lLCB3aGljaCB3ZSBmaWxsZWQsIHdlcmUgbmV3OyBhbmQsIGJlaG9sZCwgdGhleSBiZSByZW50OiBhbmQgdGhlc2Ugb3VyIGdhcm1lbnRzIGFuZCBvdXIgc2hvZXMgYXJlIGJlY29tZSBvbGQgYnkgcmVhc29uIG9mIHRoZSB2ZXJ5IGxvbmcgam91cm5leS4KQW5kIHRoZSBtZW4gdG9vayBvZiB0aGVpciB2aWN0dWFscywgYW5kIGFza2VkIG5vdCBjb3Vuc2VsIGF0IHRoZSBtb3V0aCBvZiB0aGUgTE9SRC4KQW5kIEpvc2h1YSBtYWRlIHBlYWNlIHdpdGggdGhlbSwgYW5kIG1hZGUgYSBsZWFndWUgd2l0aCB0aGVtLCB0byBsZXQgdGhlbSBsaXZlOiBhbmQgdGhlIHByaW5jZXMgb2YgdGhlIGNvbmdyZWdhdGlvbiBzd2FyZSB1bnRvIHRoZW0uCkFuZCBpdCBjYW1lIHRvIHBhc3MgYXQgdGhlIGVuZCBvZiB0aHJlZSBkYXlzIGFmdGVyIHRoZXkgaGFkIG1hZGUgYSBsZWFndWUgd2l0aCB0aGVtLCB0aGF0IHRoZXkgaGVhcmQgdGhhdCB0aGV5IHdlcmUgdGhlaXIgbmVpZ2hib3VycywgYW5kIHRoYXQgdGhleSBkd2VsdCBhbW9uZyB0aGVtLgpBbmQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBqb3VybmV5ZWQsIGFuZCBjYW1lIHVudG8gdGhlaXIgY2l0aWVzIG9uIHRoZSB0aGlyZCBkYXkuIE5vdyB0aGVpciBjaXRpZXMgd2VyZSBHaWJlb24sIGFuZCBDaGVwaGlyYWgsIGFuZCBCZWVyb3RoLCBhbmQgS2lyamF0aGplYXJpbS4KQW5kIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgc21vdGUgdGhlbSBub3QsIGJlY2F1c2UgdGhlIHByaW5jZXMgb2YgdGhlIGNvbmdyZWdhdGlvbiBoYWQgc3dvcm4gdW50byB0aGVtIGJ5IHRoZSBMT1JEIEdvZCBvZiBJc3JhZWwuIEFuZCBhbGwgdGhlIGNvbmdyZWdhdGlvbiBtdXJtdXJlZCBhZ2FpbnN0IHRoZSBwcmluY2VzLgpCdXQgYWxsIHRoZSBwcmluY2VzIHNhaWQgdW50byBhbGwgdGhlIGNvbmdyZWdhdGlvbiwgV2UgaGF2ZSBzd29ybiB1bnRvIHRoZW0gYnkgdGhlIExPUkQgR29kIG9mIElzcmFlbDogbm93IHRoZXJlZm9yZSB3ZSBtYXkgbm90IHRvdWNoIHRoZW0uClRoaXMgd2Ugd2lsbCBkbyB0byB0aGVtOyB3ZSB3aWxsIGV2ZW4gbGV0IHRoZW0gbGl2ZSwgbGVzdCB3cmF0aCBiZSB1cG9uIHVzLCBiZWNhdXNlIG9mIHRoZSBvYXRoIHdoaWNoIHdlIHN3YXJlIHVudG8gdGhlbS4KQW5kIHRoZSBwcmluY2VzIHNhaWQgdW50byB0aGVtLCBMZXQgdGhlbSBsaXZlOyBidXQgbGV0IHRoZW0gYmUgaGV3ZXJzIG9mIHdvb2QgYW5kIGRyYXdlcnMgb2Ygd2F0ZXIgdW50byBhbGwgdGhlIGNvbmdyZWdhdGlvbjsgYXMgdGhlIHByaW5jZXMgaGFkIHByb21pc2VkIHRoZW0uCkFuZCBKb3NodWEgY2FsbGVkIGZvciB0aGVtLCBhbmQgaGUgc3Bha2UgdW50byB0aGVtLCBzYXlpbmcsIFdoZXJlZm9yZSBoYXZlIHllIGJlZ3VpbGVkIHVzLCBzYXlpbmcsIFdlIGFyZSB2ZXJ5IGZhciBmcm9tIHlvdTsgd2hlbiB5ZSBkd2VsbCBhbW9uZyB1cz8KTm93IHRoZXJlZm9yZSB5ZSBhcmUgY3Vyc2VkLCBhbmQgdGhlcmUgc2hhbGwgbm9uZSBvZiB5b3UgYmUgZnJlZWQgZnJvbSBiZWluZyBib25kbWVuLCBhbmQgaGV3ZXJzIG9mIHdvb2QgYW5kIGRyYXdlcnMgb2Ygd2F0ZXIgZm9yIHRoZSBob3VzZSBvZiBteSBHb2QuCkFuZCB0aGV5IGFuc3dlcmVkIEpvc2h1YSwgYW5kIHNhaWQsIEJlY2F1c2UgaXQgd2FzIGNlcnRhaW5seSB0b2xkIHRoeSBzZXJ2YW50cywgaG93IHRoYXQgdGhlIExPUkQgdGh5IEdvZCBjb21tYW5kZWQgaGlzIHNlcnZhbnQgTW9zZXMgdG8gZ2l2ZSB5b3UgYWxsIHRoZSBsYW5kLCBhbmQgdG8gZGVzdHJveSBhbGwgdGhlIGluaGFiaXRhbnRzIG9mIHRoZSBsYW5kIGZyb20gYmVmb3JlIHlvdSwgdGhlcmVmb3JlIHdlIHdlcmUgc29yZSBhZnJhaWQgb2Ygb3VyIGxpdmVzIGJlY2F1c2Ugb2YgeW91LCBhbmQgaGF2ZSBkb25lIHRoaXMgdGhpbmcuCkFuZCBub3csIGJlaG9sZCwgd2UgYXJlIGluIHRoaW5lIGhhbmQ6IGFzIGl0IHNlZW1ldGggZ29vZCBhbmQgcmlnaHQgdW50byB0aGVlIHRvIGRvIHVudG8gdXMsIGRvLgpBbmQgc28gZGlkIGhlIHVudG8gdGhlbSwgYW5kIGRlbGl2ZXJlZCB0aGVtIG91dCBvZiB0aGUgaGFuZCBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLCB0aGF0IHRoZXkgc2xldyB0aGVtIG5vdC4KQW5kIEpvc2h1YSBtYWRlIHRoZW0gdGhhdCBkYXkgaGV3ZXJzIG9mIHdvb2QgYW5kIGRyYXdlcnMgb2Ygd2F0ZXIgZm9yIHRoZSBjb25ncmVnYXRpb24sIGFuZCBmb3IgdGhlIGFsdGFyIG9mIHRoZSBMT1JELCBldmVuIHVudG8gdGhpcyBkYXksIGluIHRoZSBwbGFjZSB3aGljaCBoZSBzaG91bGQgY2hvb3NlLgpOb3cgaXQgY2FtZSB0byBwYXNzLCB3aGVuIEFkb25pemVkZWMga2luZyBvZiBKZXJ1c2FsZW0gaGFkIGhlYXJkIGhvdyBKb3NodWEgaGFkIHRha2VuIEFpLCBhbmQgaGFkIHV0dGVybHkgZGVzdHJveWVkIGl0OyBhcyBoZSBoYWQgZG9uZSB0byBKZXJpY2hvIGFuZCBoZXIga2luZywgc28gaGUgaGFkIGRvbmUgdG8gQWkgYW5kIGhlciBraW5nOyBhbmQgaG93IHRoZSBpbmhhYml0YW50cyBvZiBHaWJlb24gaGFkIG1hZGUgcGVhY2Ugd2l0aCBJc3JhZWwsIGFuZCB3ZXJlIGFtb25nIHRoZW07ClRoYXQgdGhleSBmZWFyZWQgZ3JlYXRseSwgYmVjYXVzZSBHaWJlb24gd2FzIGEgZ3JlYXQgY2l0eSwgYXMgb25lIG9mIHRoZSByb3lhbCBjaXRpZXMsIGFuZCBiZWNhdXNlIGl0IHdhcyBncmVhdGVyIHRoYW4gQWksIGFuZCBhbGwgdGhlIG1lbiB0aGVyZW9mIHdlcmUgbWlnaHR5LgpXaGVyZWZvcmUgQWRvbml6ZWRlYyBraW5nIG9mIEplcnVzYWxlbSwgc2VudCB1bnRvIEhvaGFtIGtpbmcgb2YgSGVicm9uLCBhbmQgdW50byBQaXJhbSBraW5nIG9mIEphcm11dGgsIGFuZCB1bnRvIEphcGhpYSBraW5nIG9mIExhY2hpc2gsIGFuZCB1bnRvIERlYmlyIGtpbmcgb2YgRWdsb24sIHNheWluZywKQ29tZSB1cCB1bnRvIG1lLCBhbmQgaGVscCBtZSwgdGhhdCB3ZSBtYXkgc21pdGUgR2liZW9uOiBmb3IgaXQgaGF0aCBtYWRlIHBlYWNlIHdpdGggSm9zaHVhIGFuZCB3aXRoIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwuClRoZXJlZm9yZSB0aGUgZml2ZSBraW5ncyBvZiB0aGUgQW1vcml0ZXMsIHRoZSBraW5nIG9mIEplcnVzYWxlbSwgdGhlIGtpbmcgb2YgSGVicm9uLCB0aGUga2luZyBvZiBKYXJtdXRoLCB0aGUga2luZyBvZiBMYWNoaXNoLCB0aGUga2luZyBvZiBFZ2xvbiwgZ2F0aGVyZWQgdGhlbXNlbHZlcyB0b2dldGhlciwgYW5kIHdlbnQgdXAsIHRoZXkgYW5kIGFsbCB0aGVpciBob3N0cywgYW5kIGVuY2FtcGVkIGJlZm9yZSBHaWJlb24sIGFuZCBtYWRlIHdhciBhZ2FpbnN0IGl0LgpBbmQgdGhlIG1lbiBvZiBHaWJlb24gc2VudCB1bnRvIEpvc2h1YSB0byB0aGUgY2FtcCB0byBHaWxnYWwsIHNheWluZywgU2xhY2sgbm90IHRoeSBoYW5kIGZyb20gdGh5IHNlcnZhbnRzOyBjb21lIHVwIHRvIHVzIHF1aWNrbHksIGFuZCBzYXZlIHVzLCBhbmQgaGVscCB1czogZm9yIGFsbCB0aGUga2luZ3Mgb2YgdGhlIEFtb3JpdGVzIHRoYXQgZHdlbGwgaW4gdGhlIG1vdW50YWlucyBhcmUgZ2F0aGVyZWQgdG9nZXRoZXIgYWdhaW5zdCB1cy4KU28gSm9zaHVhIGFzY2VuZGVkIGZyb20gR2lsZ2FsLCBoZSwgYW5kIGFsbCB0aGUgcGVvcGxlIG9mIHdhciB3aXRoIGhpbSwgYW5kIGFsbCB0aGUgbWlnaHR5IG1lbiBvZiB2YWxvdXIuCkFuZCB0aGUgTE9SRCBzYWlkIHVudG8gSm9zaHVhLCBGZWFyIHRoZW0gbm90OiBmb3IgSSBoYXZlIGRlbGl2ZXJlZCB0aGVtIGludG8gdGhpbmUgaGFuZDsgdGhlcmUgc2hhbGwgbm90IGEgbWFuIG9mIHRoZW0gc3RhbmQgYmVmb3JlIHRoZWUuCkpvc2h1YSB0aGVyZWZvcmUgY2FtZSB1bnRvIHRoZW0gc3VkZGVubHksIGFuZCB3ZW50IHVwIGZyb20gR2lsZ2FsIGFsbCBuaWdodC4KQW5kIHRoZSBMT1JEIGRpc2NvbWZpdGVkIHRoZW0gYmVmb3JlIElzcmFlbCwgYW5kIHNsZXcgdGhlbSB3aXRoIGEgZ3JlYXQgc2xhdWdodGVyIGF0IEdpYmVvbiwgYW5kIGNoYXNlZCB0aGVtIGFsb25nIHRoZSB3YXkgdGhhdCBnb2V0aCB1cCB0byBCZXRoaG9yb24sIGFuZCBzbW90ZSB0aGVtIHRvIEF6ZWthaCwgYW5kIHVudG8gTWFra2VkYWguCkFuZCBpdCBjYW1lIHRvIHBhc3MsIGFzIHRoZXkgZmxlZCBmcm9tIGJlZm9yZSBJc3JhZWwsIGFuZCB3ZXJlIGluIHRoZSBnb2luZyBkb3duIHRvIEJldGhob3JvbiwgdGhhdCB0aGUgTE9SRCBjYXN0IGRvd24gZ3JlYXQgc3RvbmVzIGZyb20gaGVhdmVuIHVwb24gdGhlbSB1bnRvIEF6ZWthaCwgYW5kIHRoZXkgZGllZDogdGhleSB3ZXJlIG1vcmUgd2hpY2ggZGllZCB3aXRoIGhhaWxzdG9uZXMgdGhhbiB0aGV5IHdob20gdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBzbGV3IHdpdGggdGhlIHN3b3JkLgpUaGVuIHNwYWtlIEpvc2h1YSB0byB0aGUgTE9SRCBpbiB0aGUgZGF5IHdoZW4gdGhlIExPUkQgZGVsaXZlcmVkIHVwIHRoZSBBbW9yaXRlcyBiZWZvcmUgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgYW5kIGhlIHNhaWQgaW4gdGhlIHNpZ2h0IG9mIElzcmFlbCwgU3VuLCBzdGFuZCB0aG91IHN0aWxsIHVwb24gR2liZW9uOyBhbmQgdGhvdSwgTW9vbiwgaW4gdGhlIHZhbGxleSBvZiBBamFsb24uCkFuZCB0aGUgc3VuIHN0b29kIHN0aWxsLCBhbmQgdGhlIG1vb24gc3RheWVkLCB1bnRpbCB0aGUgcGVvcGxlIGhhZCBhdmVuZ2VkIHRoZW1zZWx2ZXMgdXBvbiB0aGVpciBlbmVtaWVzLiBJcyBub3QgdGhpcyB3cml0dGVuIGluIHRoZSBib29rIG9mIEphc2hlcj8gU28gdGhlIHN1biBzdG9vZCBzdGlsbCBpbiB0aGUgbWlkc3Qgb2YgaGVhdmVuLCBhbmQgaGFzdGVkIG5vdCB0byBnbyBkb3duIGFib3V0IGEgd2hvbGUgZGF5LgpBbmQgdGhlcmUgd2FzIG5vIGRheSBsaWtlIHRoYXQgYmVmb3JlIGl0IG9yIGFmdGVyIGl0LCB0aGF0IHRoZSBMT1JEIGhlYXJrZW5lZCB1bnRvIHRoZSB2b2ljZSBvZiBhIG1hbjogZm9yIHRoZSBMT1JEIGZvdWdodCBmb3IgSXNyYWVsLgpBbmQgSm9zaHVhIHJldHVybmVkLCBhbmQgYWxsIElzcmFlbCB3aXRoIGhpbSwgdW50byB0aGUgY2FtcCB0byBHaWxnYWwuCkJ1dCB0aGVzZSBmaXZlIGtpbmdzIGZsZWQsIGFuZCBoaWQgdGhlbXNlbHZlcyBpbiBhIGNhdmUgYXQgTWFra2VkYWguCkFuZCBpdCB3YXMgdG9sZCBKb3NodWEsIHNheWluZywgVGhlIGZpdmUga2luZ3MgYXJlIGZvdW5kIGhpZCBpbiBhIGNhdmUgYXQgTWFra2VkYWguCkFuZCBKb3NodWEgc2FpZCwgUm9sbCBncmVhdCBzdG9uZXMgdXBvbiB0aGUgbW91dGggb2YgdGhlIGNhdmUsIGFuZCBzZXQgbWVuIGJ5IGl0IGZvciB0byBrZWVwIHRoZW06CkFuZCBzdGF5IHllIG5vdCwgYnV0IHB1cnN1ZSBhZnRlciB5b3VyIGVuZW1pZXMsIGFuZCBzbWl0ZSB0aGUgaGluZG1vc3Qgb2YgdGhlbTsgc3VmZmVyIHRoZW0gbm90IHRvIGVudGVyIGludG8gdGhlaXIgY2l0aWVzOiBmb3IgdGhlIExPUkQgeW91ciBHb2QgaGF0aCBkZWxpdmVyZWQgdGhlbSBpbnRvIHlvdXIgaGFuZC4KQW5kIGl0IGNhbWUgdG8gcGFzcywgd2hlbiBKb3NodWEgYW5kIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgaGFkIG1hZGUgYW4gZW5kIG9mIHNsYXlpbmcgdGhlbSB3aXRoIGEgdmVyeSBncmVhdCBzbGF1Z2h0ZXIsIHRpbGwgdGhleSB3ZXJlIGNvbnN1bWVkLCB0aGF0IHRoZSByZXN0IHdoaWNoIHJlbWFpbmVkIG9mIHRoZW0gZW50ZXJlZCBpbnRvIGZlbmNlZCBjaXRpZXMuCkFuZCBhbGwgdGhlIHBlb3BsZSByZXR1cm5lZCB0byB0aGUgY2FtcCB0byBKb3NodWEgYXQgTWFra2VkYWggaW4gcGVhY2U6IG5vbmUgbW92ZWQgaGlzIHRvbmd1ZSBhZ2FpbnN0IGFueSBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLgpUaGVuIHNhaWQgSm9zaHVhLCBPcGVuIHRoZSBtb3V0aCBvZiB0aGUgY2F2ZSwgYW5kIGJyaW5nIG91dCB0aG9zZSBmaXZlIGtpbmdzIHVudG8gbWUgb3V0IG9mIHRoZSBjYXZlLgpBbmQgdGhleSBkaWQgc28sIGFuZCBicm91Z2h0IGZvcnRoIHRob3NlIGZpdmUga2luZ3MgdW50byBoaW0gb3V0IG9mIHRoZSBjYXZlLCB0aGUga2luZyBvZiBKZXJ1c2FsZW0sIHRoZSBraW5nIG9mIEhlYnJvbiwgdGhlIGtpbmcgb2YgSmFybXV0aCwgdGhlIGtpbmcgb2YgTGFjaGlzaCwgYW5kIHRoZSBraW5nIG9mIEVnbG9uLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIHRoZXkgYnJvdWdodCBvdXQgdGhvc2Uga2luZ3MgdW50byBKb3NodWEsIHRoYXQgSm9zaHVhIGNhbGxlZCBmb3IgYWxsIHRoZSBtZW4gb2YgSXNyYWVsLCBhbmQgc2FpZCB1bnRvIHRoZSBjYXB0YWlucyBvZiB0aGUgbWVuIG9mIHdhciB3aGljaCB3ZW50IHdpdGggaGltLCBDb21lIG5lYXIsIHB1dCB5b3VyIGZlZXQgdXBvbiB0aGUgbmVja3Mgb2YgdGhlc2Uga2luZ3MuIEFuZCB0aGV5IGNhbWUgbmVhciwgYW5kIHB1dCB0aGVpciBmZWV0IHVwb24gdGhlIG5lY2tzIG9mIHRoZW0uCkFuZCBKb3NodWEgc2FpZCB1bnRvIHRoZW0sIEZlYXIgbm90LCBub3IgYmUgZGlzbWF5ZWQsIGJlIHN0cm9uZyBhbmQgb2YgZ29vZCBjb3VyYWdlOiBmb3IgdGh1cyBzaGFsbCB0aGUgTE9SRCBkbyB0byBhbGwgeW91ciBlbmVtaWVzIGFnYWluc3Qgd2hvbSB5ZSBmaWdodC4KQW5kIGFmdGVyd2FyZCBKb3NodWEgc21vdGUgdGhlbSwgYW5kIHNsZXcgdGhlbSwgYW5kIGhhbmdlZCB0aGVtIG9uIGZpdmUgdHJlZXM6IGFuZCB0aGV5IHdlcmUgaGFuZ2luZyB1cG9uIHRoZSB0cmVlcyB1bnRpbCB0aGUgZXZlbmluZy4KQW5kIGl0IGNhbWUgdG8gcGFzcyBhdCB0aGUgdGltZSBvZiB0aGUgZ29pbmcgZG93biBvZiB0aGUgc3VuLCB0aGF0IEpvc2h1YSBjb21tYW5kZWQsIGFuZCB0aGV5IHRvb2sgdGhlbSBkb3duIG9mZiB0aGUgdHJlZXMsIGFuZCBjYXN0IHRoZW0gaW50byB0aGUgY2F2ZSB3aGVyZWluIHRoZXkgaGFkIGJlZW4gaGlkLCBhbmQgbGFpZCBncmVhdCBzdG9uZXMgaW4gdGhlIGNhdmUncyBtb3V0aCwgd2hpY2ggcmVtYWluIHVudGlsIHRoaXMgdmVyeSBkYXkuCkFuZCB0aGF0IGRheSBKb3NodWEgdG9vayBNYWtrZWRhaCwgYW5kIHNtb3RlIGl0IHdpdGggdGhlIGVkZ2Ugb2YgdGhlIHN3b3JkLCBhbmQgdGhlIGtpbmcgdGhlcmVvZiBoZSB1dHRlcmx5IGRlc3Ryb3llZCwgdGhlbSwgYW5kIGFsbCB0aGUgc291bHMgdGhhdCB3ZXJlIHRoZXJlaW47IGhlIGxldCBub25lIHJlbWFpbjogYW5kIGhlIGRpZCB0byB0aGUga2luZyBvZiBNYWtrZWRhaCBhcyBoZSBkaWQgdW50byB0aGUga2luZyBvZiBKZXJpY2hvLgpUaGVuIEpvc2h1YSBwYXNzZWQgZnJvbSBNYWtrZWRhaCwgYW5kIGFsbCBJc3JhZWwgd2l0aCBoaW0sIHVudG8gTGlibmFoLCBhbmQgZm91Z2h0IGFnYWluc3QgTGlibmFoOgpBbmQgdGhlIExPUkQgZGVsaXZlcmVkIGl0IGFsc28sIGFuZCB0aGUga2luZyB0aGVyZW9mLCBpbnRvIHRoZSBoYW5kIG9mIElzcmFlbDsgYW5kIGhlIHNtb3RlIGl0IHdpdGggdGhlIGVkZ2Ugb2YgdGhlIHN3b3JkLCBhbmQgYWxsIHRoZSBzb3VscyB0aGF0IHdlcmUgdGhlcmVpbjsgaGUgbGV0IG5vbmUgcmVtYWluIGluIGl0OyBidXQgZGlkIHVudG8gdGhlIGtpbmcgdGhlcmVvZiBhcyBoZSBkaWQgdW50byB0aGUga2luZyBvZiBKZXJpY2hvLgpBbmQgSm9zaHVhIHBhc3NlZCBmcm9tIExpYm5haCwgYW5kIGFsbCBJc3JhZWwgd2l0aCBoaW0sIHVudG8gTGFjaGlzaCwgYW5kIGVuY2FtcGVkIGFnYWluc3QgaXQsIGFuZCBmb3VnaHQgYWdhaW5zdCBpdDoKQW5kIHRoZSBMT1JEIGRlbGl2ZXJlZCBMYWNoaXNoIGludG8gdGhlIGhhbmQgb2YgSXNyYWVsLCB3aGljaCB0b29rIGl0IG9uIHRoZSBzZWNvbmQgZGF5LCBhbmQgc21vdGUgaXQgd2l0aCB0aGUgZWRnZSBvZiB0aGUgc3dvcmQsIGFuZCBhbGwgdGhlIHNvdWxzIHRoYXQgd2VyZSB0aGVyZWluLCBhY2NvcmRpbmcgdG8gYWxsIHRoYXQgaGUgaGFkIGRvbmUgdG8gTGlibmFoLgpUaGVuIEhvcmFtIGtpbmcgb2YgR2V6ZXIgY2FtZSB1cCB0byBoZWxwIExhY2hpc2g7IGFuZCBKb3NodWEgc21vdGUgaGltIGFuZCBoaXMgcGVvcGxlLCB1bnRpbCBoZSBoYWQgbGVmdCBoaW0gbm9uZSByZW1haW5pbmcuCkFuZCBmcm9tIExhY2hpc2ggSm9zaHVhIHBhc3NlZCB1bnRvIEVnbG9uLCBhbmQgYWxsIElzcmFlbCB3aXRoIGhpbTsgYW5kIHRoZXkgZW5jYW1wZWQgYWdhaW5zdCBpdCwgYW5kIGZvdWdodCBhZ2FpbnN0IGl0OgpBbmQgdGhleSB0b29rIGl0IG9uIHRoYXQgZGF5LCBhbmQgc21vdGUgaXQgd2l0aCB0aGUgZWRnZSBvZiB0aGUgc3dvcmQsIGFuZCBhbGwgdGhlIHNvdWxzIHRoYXQgd2VyZSB0aGVyZWluIGhlIHV0dGVybHkgZGVzdHJveWVkIHRoYXQgZGF5LCBhY2NvcmRpbmcgdG8gYWxsIHRoYXQgaGUgaGFkIGRvbmUgdG8gTGFjaGlzaC4KQW5kIEpvc2h1YSB3ZW50IHVwIGZyb20gRWdsb24sIGFuZCBhbGwgSXNyYWVsIHdpdGggaGltLCB1bnRvIEhlYnJvbjsgYW5kIHRoZXkgZm91Z2h0IGFnYWluc3QgaXQ6CkFuZCB0aGV5IHRvb2sgaXQsIGFuZCBzbW90ZSBpdCB3aXRoIHRoZSBlZGdlIG9mIHRoZSBzd29yZCwgYW5kIHRoZSBraW5nIHRoZXJlb2YsIGFuZCBhbGwgdGhlIGNpdGllcyB0aGVyZW9mLCBhbmQgYWxsIHRoZSBzb3VscyB0aGF0IHdlcmUgdGhlcmVpbjsgaGUgbGVmdCBub25lIHJlbWFpbmluZywgYWNjb3JkaW5nIHRvIGFsbCB0aGF0IGhlIGhhZCBkb25lIHRvIEVnbG9uOyBidXQgZGVzdHJveWVkIGl0IHV0dGVybHksIGFuZCBhbGwgdGhlIHNvdWxzIHRoYXQgd2VyZSB0aGVyZWluLgpBbmQgSm9zaHVhIHJldHVybmVkLCBhbmQgYWxsIElzcmFlbCB3aXRoIGhpbSwgdG8gRGViaXI7IGFuZCBmb3VnaHQgYWdhaW5zdCBpdDoKQW5kIGhlIHRvb2sgaXQsIGFuZCB0aGUga2luZyB0aGVyZW9mLCBhbmQgYWxsIHRoZSBjaXRpZXMgdGhlcmVvZjsgYW5kIHRoZXkgc21vdGUgdGhlbSB3aXRoIHRoZSBlZGdlIG9mIHRoZSBzd29yZCwgYW5kIHV0dGVybHkgZGVzdHJveWVkIGFsbCB0aGUgc291bHMgdGhhdCB3ZXJlIHRoZXJlaW47IGhlIGxlZnQgbm9uZSByZW1haW5pbmc6IGFzIGhlIGhhZCBkb25lIHRvIEhlYnJvbiwgc28gaGUgZGlkIHRvIERlYmlyLCBhbmQgdG8gdGhlIGtpbmcgdGhlcmVvZjsgYXMgaGUgaGFkIGRvbmUgYWxzbyB0byBMaWJuYWgsIGFuZCB0byBoZXIga2luZy4KU28gSm9zaHVhIHNtb3RlIGFsbCB0aGUgY291bnRyeSBvZiB0aGUgaGlsbHMsIGFuZCBvZiB0aGUgc291dGgsIGFuZCBvZiB0aGUgdmFsZSwgYW5kIG9mIHRoZSBzcHJpbmdzLCBhbmQgYWxsIHRoZWlyIGtpbmdzOiBoZSBsZWZ0IG5vbmUgcmVtYWluaW5nLCBidXQgdXR0ZXJseSBkZXN0cm95ZWQgYWxsIHRoYXQgYnJlYXRoZWQsIGFzIHRoZSBMT1JEIEdvZCBvZiBJc3JhZWwgY29tbWFuZGVkLgpBbmQgSm9zaHVhIHNtb3RlIHRoZW0gZnJvbSBLYWRlc2hiYXJuZWEgZXZlbiB1bnRvIEdhemEsIGFuZCBhbGwgdGhlIGNvdW50cnkgb2YgR29zaGVuLCBldmVuIHVudG8gR2liZW9uLgpBbmQgYWxsIHRoZXNlIGtpbmdzIGFuZCB0aGVpciBsYW5kIGRpZCBKb3NodWEgdGFrZSBhdCBvbmUgdGltZSwgYmVjYXVzZSB0aGUgTE9SRCBHb2Qgb2YgSXNyYWVsIGZvdWdodCBmb3IgSXNyYWVsLgpBbmQgSm9zaHVhIHJldHVybmVkLCBhbmQgYWxsIElzcmFlbCB3aXRoIGhpbSwgdW50byB0aGUgY2FtcCB0byBHaWxnYWwuCkFuZCBpdCBjYW1lIHRvIHBhc3MsIHdoZW4gSmFiaW4ga2luZyBvZiBIYXpvciBoYWQgaGVhcmQgdGhvc2UgdGhpbmdzLCB0aGF0IGhlIHNlbnQgdG8gSm9iYWIga2luZyBvZiBNYWRvbiwgYW5kIHRvIHRoZSBraW5nIG9mIFNoaW1yb24sIGFuZCB0byB0aGUga2luZyBvZiBBY2hzaGFwaCwKQW5kIHRvIHRoZSBraW5ncyB0aGF0IHdlcmUgb24gdGhlIG5vcnRoIG9mIHRoZSBtb3VudGFpbnMsIGFuZCBvZiB0aGUgcGxhaW5zIHNvdXRoIG9mIENoaW5uZXJvdGgsIGFuZCBpbiB0aGUgdmFsbGV5LCBhbmQgaW4gdGhlIGJvcmRlcnMgb2YgRG9yIG9uIHRoZSB3ZXN0LApBbmQgdG8gdGhlIENhbmFhbml0ZSBvbiB0aGUgZWFzdCBhbmQgb24gdGhlIHdlc3QsIGFuZCB0byB0aGUgQW1vcml0ZSwgYW5kIHRoZSBIaXR0aXRlLCBhbmQgdGhlIFBlcml6eml0ZSwgYW5kIHRoZSBKZWJ1c2l0ZSBpbiB0aGUgbW91bnRhaW5zLCBhbmQgdG8gdGhlIEhpdml0ZSB1bmRlciBIZXJtb24gaW4gdGhlIGxhbmQgb2YgTWl6cGVoLgpBbmQgdGhleSB3ZW50IG91dCwgdGhleSBhbmQgYWxsIHRoZWlyIGhvc3RzIHdpdGggdGhlbSwgbXVjaCBwZW9wbGUsIGV2ZW4gYXMgdGhlIHNhbmQgdGhhdCBpcyB1cG9uIHRoZSBzZWEgc2hvcmUgaW4gbXVsdGl0dWRlLCB3aXRoIGhvcnNlcyBhbmQgY2hhcmlvdHMgdmVyeSBtYW55LgpBbmQgd2hlbiBhbGwgdGhlc2Uga2luZ3Mgd2VyZSBtZXQgdG9nZXRoZXIsIHRoZXkgY2FtZSBhbmQgcGl0Y2hlZCB0b2dldGhlciBhdCB0aGUgd2F0ZXJzIG9mIE1lcm9tLCB0byBmaWdodCBhZ2FpbnN0IElzcmFlbC4KQW5kIHRoZSBMT1JEIHNhaWQgdW50byBKb3NodWEsIEJlIG5vdCBhZnJhaWQgYmVjYXVzZSBvZiB0aGVtOiBmb3IgdG8gbW9ycm93IGFib3V0IHRoaXMgdGltZSB3aWxsIEkgZGVsaXZlciB0aGVtIHVwIGFsbCBzbGFpbiBiZWZvcmUgSXNyYWVsOiB0aG91IHNoYWx0IGhvdWdoIHRoZWlyIGhvcnNlcywgYW5kIGJ1cm4gdGhlaXIgY2hhcmlvdHMgd2l0aCBmaXJlLgpTbyBKb3NodWEgY2FtZSwgYW5kIGFsbCB0aGUgcGVvcGxlIG9mIHdhciB3aXRoIGhpbSwgYWdhaW5zdCB0aGVtIGJ5IHRoZSB3YXRlcnMgb2YgTWVyb20gc3VkZGVubHk7IGFuZCB0aGV5IGZlbGwgdXBvbiB0aGVtLgpBbmQgdGhlIExPUkQgZGVsaXZlcmVkIHRoZW0gaW50byB0aGUgaGFuZCBvZiBJc3JhZWwsIHdobyBzbW90ZSB0aGVtLCBhbmQgY2hhc2VkIHRoZW0gdW50byBncmVhdCBaaWRvbiwgYW5kIHVudG8gTWlzcmVwaG90aG1haW0sIGFuZCB1bnRvIHRoZSB2YWxsZXkgb2YgTWl6cGVoIGVhc3R3YXJkOyBhbmQgdGhleSBzbW90ZSB0aGVtLCB1bnRpbCB0aGV5IGxlZnQgdGhlbSBub25lIHJlbWFpbmluZy4KQW5kIEpvc2h1YSBkaWQgdW50byB0aGVtIGFzIHRoZSBMT1JEIGJhZGUgaGltOiBoZSBob3VnaGVkIHRoZWlyIGhvcnNlcywgYW5kIGJ1cm50IHRoZWlyIGNoYXJpb3RzIHdpdGggZmlyZS4KQW5kIEpvc2h1YSBhdCB0aGF0IHRpbWUgdHVybmVkIGJhY2ssIGFuZCB0b29rIEhhem9yLCBhbmQgc21vdGUgdGhlIGtpbmcgdGhlcmVvZiB3aXRoIHRoZSBzd29yZDogZm9yIEhhem9yIGJlZm9yZXRpbWUgd2FzIHRoZSBoZWFkIG9mIGFsbCB0aG9zZSBraW5nZG9tcy4KQW5kIHRoZXkgc21vdGUgYWxsIHRoZSBzb3VscyB0aGF0IHdlcmUgdGhlcmVpbiB3aXRoIHRoZSBlZGdlIG9mIHRoZSBzd29yZCwgdXR0ZXJseSBkZXN0cm95aW5nIHRoZW06IHRoZXJlIHdhcyBub3QgYW55IGxlZnQgdG8gYnJlYXRoZTogYW5kIGhlIGJ1cm50IEhhem9yIHdpdGggZmlyZS4KQW5kIGFsbCB0aGUgY2l0aWVzIG9mIHRob3NlIGtpbmdzLCBhbmQgYWxsIHRoZSBraW5ncyBvZiB0aGVtLCBkaWQgSm9zaHVhIHRha2UsIGFuZCBzbW90ZSB0aGVtIHdpdGggdGhlIGVkZ2Ugb2YgdGhlIHN3b3JkLCBhbmQgaGUgdXR0ZXJseSBkZXN0cm95ZWQgdGhlbSwgYXMgTW9zZXMgdGhlIHNlcnZhbnQgb2YgdGhlIExPUkQgY29tbWFuZGVkLgpCdXQgYXMgZm9yIHRoZSBjaXRpZXMgdGhhdCBzdG9vZCBzdGlsbCBpbiB0aGVpciBzdHJlbmd0aCwgSXNyYWVsIGJ1cm5lZCBub25lIG9mIHRoZW0sIHNhdmUgSGF6b3Igb25seTsgdGhhdCBkaWQgSm9zaHVhIGJ1cm4uCkFuZCBhbGwgdGhlIHNwb2lsIG9mIHRoZXNlIGNpdGllcywgYW5kIHRoZSBjYXR0bGUsIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgdG9vayBmb3IgYSBwcmV5IHVudG8gdGhlbXNlbHZlczsgYnV0IGV2ZXJ5IG1hbiB0aGV5IHNtb3RlIHdpdGggdGhlIGVkZ2Ugb2YgdGhlIHN3b3JkLCB1bnRpbCB0aGV5IGhhZCBkZXN0cm95ZWQgdGhlbSwgbmVpdGhlciBsZWZ0IHRoZXkgYW55IHRvIGJyZWF0aGUuCkFzIHRoZSBMT1JEIGNvbW1hbmRlZCBNb3NlcyBoaXMgc2VydmFudCwgc28gZGlkIE1vc2VzIGNvbW1hbmQgSm9zaHVhLCBhbmQgc28gZGlkIEpvc2h1YTsgaGUgbGVmdCBub3RoaW5nIHVuZG9uZSBvZiBhbGwgdGhhdCB0aGUgTE9SRCBjb21tYW5kZWQgTW9zZXMuClNvIEpvc2h1YSB0b29rIGFsbCB0aGF0IGxhbmQsIHRoZSBoaWxscywgYW5kIGFsbCB0aGUgc291dGggY291bnRyeSwgYW5kIGFsbCB0aGUgbGFuZCBvZiBHb3NoZW4sIGFuZCB0aGUgdmFsbGV5LCBhbmQgdGhlIHBsYWluLCBhbmQgdGhlIG1vdW50YWluIG9mIElzcmFlbCwgYW5kIHRoZSB2YWxsZXkgb2YgdGhlIHNhbWU7CkV2ZW4gZnJvbSB0aGUgbW91bnQgSGFsYWssIHRoYXQgZ29ldGggdXAgdG8gU2VpciwgZXZlbiB1bnRvIEJhYWxnYWQgaW4gdGhlIHZhbGxleSBvZiBMZWJhbm9uIHVuZGVyIG1vdW50IEhlcm1vbjogYW5kIGFsbCB0aGVpciBraW5ncyBoZSB0b29rLCBhbmQgc21vdGUgdGhlbSwgYW5kIHNsZXcgdGhlbS4KSm9zaHVhIG1hZGUgd2FyIGEgbG9uZyB0aW1lIHdpdGggYWxsIHRob3NlIGtpbmdzLgpUaGVyZSB3YXMgbm90IGEgY2l0eSB0aGF0IG1hZGUgcGVhY2Ugd2l0aCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLCBzYXZlIHRoZSBIaXZpdGVzIHRoZSBpbmhhYml0YW50cyBvZiBHaWJlb246IGFsbCBvdGhlciB0aGV5IHRvb2sgaW4gYmF0dGxlLgpGb3IgaXQgd2FzIG9mIHRoZSBMT1JEIHRvIGhhcmRlbiB0aGVpciBoZWFydHMsIHRoYXQgdGhleSBzaG91bGQgY29tZSBhZ2FpbnN0IElzcmFlbCBpbiBiYXR0bGUsIHRoYXQgaGUgbWlnaHQgZGVzdHJveSB0aGVtIHV0dGVybHksIGFuZCB0aGF0IHRoZXkgbWlnaHQgaGF2ZSBubyBmYXZvdXIsIGJ1dCB0aGF0IGhlIG1pZ2h0IGRlc3Ryb3kgdGhlbSwgYXMgdGhlIExPUkQgY29tbWFuZGVkIE1vc2VzLgpBbmQgYXQgdGhhdCB0aW1lIGNhbWUgSm9zaHVhLCBhbmQgY3V0IG9mZiB0aGUgQW5ha2ltcyBmcm9tIHRoZSBtb3VudGFpbnMsIGZyb20gSGVicm9uLCBmcm9tIERlYmlyLCBmcm9tIEFuYWIsIGFuZCBmcm9tIGFsbCB0aGUgbW91bnRhaW5zIG9mIEp1ZGFoLCBhbmQgZnJvbSBhbGwgdGhlIG1vdW50YWlucyBvZiBJc3JhZWw6IEpvc2h1YSBkZXN0cm95ZWQgdGhlbSB1dHRlcmx5IHdpdGggdGhlaXIgY2l0aWVzLgpUaGVyZSB3YXMgbm9uZSBvZiB0aGUgQW5ha2ltcyBsZWZ0IGluIHRoZSBsYW5kIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWw6IG9ubHkgaW4gR2F6YSwgaW4gR2F0aCwgYW5kIGluIEFzaGRvZCwgdGhlcmUgcmVtYWluZWQuClNvIEpvc2h1YSB0b29rIHRoZSB3aG9sZSBsYW5kLCBhY2NvcmRpbmcgdG8gYWxsIHRoYXQgdGhlIExPUkQgc2FpZCB1bnRvIE1vc2VzOyBhbmQgSm9zaHVhIGdhdmUgaXQgZm9yIGFuIGluaGVyaXRhbmNlIHVudG8gSXNyYWVsIGFjY29yZGluZyB0byB0aGVpciBkaXZpc2lvbnMgYnkgdGhlaXIgdHJpYmVzLiBBbmQgdGhlIGxhbmQgcmVzdGVkIGZyb20gd2FyLgpOb3cgdGhlc2UgYXJlIHRoZSBraW5ncyBvZiB0aGUgbGFuZCwgd2hpY2ggdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBzbW90ZSwgYW5kIHBvc3Nlc3NlZCB0aGVpciBsYW5kIG9uIHRoZSBvdGhlciBzaWRlIEpvcmRhbiB0b3dhcmQgdGhlIHJpc2luZyBvZiB0aGUgc3VuLCBmcm9tIHRoZSByaXZlciBBcm5vbiB1bnRvIG1vdW50IEhlcm1vbiwgYW5kIGFsbCB0aGUgcGxhaW4gb24gdGhlIGVhc3Q6ClNpaG9uIGtpbmcgb2YgdGhlIEFtb3JpdGVzLCB3aG8gZHdlbHQgaW4gSGVzaGJvbiwgYW5kIHJ1bGVkIGZyb20gQXJvZXIsIHdoaWNoIGlzIHVwb24gdGhlIGJhbmsgb2YgdGhlIHJpdmVyIEFybm9uLCBhbmQgZnJvbSB0aGUgbWlkZGxlIG9mIHRoZSByaXZlciwgYW5kIGZyb20gaGFsZiBHaWxlYWQsIGV2ZW4gdW50byB0aGUgcml2ZXIgSmFiYm9rLCB3aGljaCBpcyB0aGUgYm9yZGVyIG9mIHRoZSBjaGlsZHJlbiBvZiBBbW1vbjsKQW5kIGZyb20gdGhlIHBsYWluIHRvIHRoZSBzZWEgb2YgQ2hpbm5lcm90aCBvbiB0aGUgZWFzdCwgYW5kIHVudG8gdGhlIHNlYSBvZiB0aGUgcGxhaW4sIGV2ZW4gdGhlIHNhbHQgc2VhIG9uIHRoZSBlYXN0LCB0aGUgd2F5IHRvIEJldGhqZXNoaW1vdGg7IGFuZCBmcm9tIHRoZSBzb3V0aCwgdW5kZXIgQXNoZG90aHBpc2dhaDoKQW5kIHRoZSBjb2FzdCBvZiBPZyBraW5nIG9mIEJhc2hhbiwgd2hpY2ggd2FzIG9mIHRoZSByZW1uYW50IG9mIHRoZSBnaWFudHMsIHRoYXQgZHdlbHQgYXQgQXNodGFyb3RoIGFuZCBhdCBFZHJlaSwKQW5kIHJlaWduZWQgaW4gbW91bnQgSGVybW9uLCBhbmQgaW4gU2FsY2FoLCBhbmQgaW4gYWxsIEJhc2hhbiwgdW50byB0aGUgYm9yZGVyIG9mIHRoZSBHZXNodXJpdGVzIGFuZCB0aGUgTWFhY2hhdGhpdGVzLCBhbmQgaGFsZiBHaWxlYWQsIHRoZSBib3JkZXIgb2YgU2lob24ga2luZyBvZiBIZXNoYm9uLgpUaGVtIGRpZCBNb3NlcyB0aGUgc2VydmFudCBvZiB0aGUgTE9SRCBhbmQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBzbWl0ZTogYW5kIE1vc2VzIHRoZSBzZXJ2YW50IG9mIHRoZSBMT1JEIGdhdmUgaXQgZm9yIGEgcG9zc2Vzc2lvbiB1bnRvIHRoZSBSZXViZW5pdGVzLCBhbmQgdGhlIEdhZGl0ZXMsIGFuZCB0aGUgaGFsZiB0cmliZSBvZiBNYW5hc3NlaC4KQW5kIHRoZXNlIGFyZSB0aGUga2luZ3Mgb2YgdGhlIGNvdW50cnkgd2hpY2ggSm9zaHVhIGFuZCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIHNtb3RlIG9uIHRoaXMgc2lkZSBKb3JkYW4gb24gdGhlIHdlc3QsIGZyb20gQmFhbGdhZCBpbiB0aGUgdmFsbGV5IG9mIExlYmFub24gZXZlbiB1bnRvIHRoZSBtb3VudCBIYWxhaywgdGhhdCBnb2V0aCB1cCB0byBTZWlyOyB3aGljaCBKb3NodWEgZ2F2ZSB1bnRvIHRoZSB0cmliZXMgb2YgSXNyYWVsIGZvciBhIHBvc3Nlc3Npb24gYWNjb3JkaW5nIHRvIHRoZWlyIGRpdmlzaW9uczsKSW4gdGhlIG1vdW50YWlucywgYW5kIGluIHRoZSB2YWxsZXlzLCBhbmQgaW4gdGhlIHBsYWlucywgYW5kIGluIHRoZSBzcHJpbmdzLCBhbmQgaW4gdGhlIHdpbGRlcm5lc3MsIGFuZCBpbiB0aGUgc291dGggY291bnRyeTsgdGhlIEhpdHRpdGVzLCB0aGUgQW1vcml0ZXMsIGFuZCB0aGUgQ2FuYWFuaXRlcywgdGhlIFBlcml6eml0ZXMsIHRoZSBIaXZpdGVzLCBhbmQgdGhlIEplYnVzaXRlczoKVGhlIGtpbmcgb2YgSmVyaWNobywgb25lOyB0aGUga2luZyBvZiBBaSwgd2hpY2ggaXMgYmVzaWRlIEJldGhlbCwgb25lOwpUaGUga2luZyBvZiBKZXJ1c2FsZW0sIG9uZTsgdGhlIGtpbmcgb2YgSGVicm9uLCBvbmU7ClRoZSBraW5nIG9mIEphcm11dGgsIG9uZTsgdGhlIGtpbmcgb2YgTGFjaGlzaCwgb25lOwpUaGUga2luZyBvZiBFZ2xvbiwgb25lOyB0aGUga2luZyBvZiBHZXplciwgb25lOwpUaGUga2luZyBvZiBEZWJpciwgb25lOyB0aGUga2luZyBvZiBHZWRlciwgb25lOwpUaGUga2luZyBvZiBIb3JtYWgsIG9uZTsgdGhlIGtpbmcgb2YgQXJhZCwgb25lOwpUaGUga2luZyBvZiBMaWJuYWgsIG9uZTsgdGhlIGtpbmcgb2YgQWR1bGxhbSwgb25lOwpUaGUga2luZyBvZiBNYWtrZWRhaCwgb25lOyB0aGUga2luZyBvZiBCZXRoZWwsIG9uZTsKVGhlIGtpbmcgb2YgVGFwcHVhaCwgb25lOyB0aGUga2luZyBvZiBIZXBoZXIsIG9uZTsKVGhlIGtpbmcgb2YgQXBoZWssIG9uZTsgdGhlIGtpbmcgb2YgTGFzaGFyb24sIG9uZTsKVGhlIGtpbmcgb2YgTWFkb24sIG9uZTsgdGhlIGtpbmcgb2YgSGF6b3IsIG9uZTsKVGhlIGtpbmcgb2YgU2hpbXJvbm1lcm9uLCBvbmU7IHRoZSBraW5nIG9mIEFjaHNoYXBoLCBvbmU7ClRoZSBraW5nIG9mIFRhYW5hY2gsIG9uZTsgdGhlIGtpbmcgb2YgTWVnaWRkbywgb25lOwpUaGUga2luZyBvZiBLZWRlc2gsIG9uZTsgdGhlIGtpbmcgb2YgSm9rbmVhbSBvZiBDYXJtZWwsIG9uZTsKVGhlIGtpbmcgb2YgRG9yIGluIHRoZSBjb2FzdCBvZiBEb3IsIG9uZTsgdGhlIGtpbmcgb2YgdGhlIG5hdGlvbnMgb2YgR2lsZ2FsLCBvbmU7ClRoZSBraW5nIG9mIFRpcnphaCwgb25lOiBhbGwgdGhlIGtpbmdzIHRoaXJ0eSBhbmQgb25lLgpOb3cgSm9zaHVhIHdhcyBvbGQgYW5kIHN0cmlja2VuIGluIHllYXJzOyBhbmQgdGhlIExPUkQgc2FpZCB1bnRvIGhpbSwgVGhvdSBhcnQgb2xkIGFuZCBzdHJpY2tlbiBpbiB5ZWFycywgYW5kIHRoZXJlIHJlbWFpbmV0aCB5ZXQgdmVyeSBtdWNoIGxhbmQgdG8gYmUgcG9zc2Vzc2VkLgpUaGlzIGlzIHRoZSBsYW5kIHRoYXQgeWV0IHJlbWFpbmV0aDogYWxsIHRoZSBib3JkZXJzIG9mIHRoZSBQaGlsaXN0aW5lcywgYW5kIGFsbCBHZXNodXJpLApGcm9tIFNpaG9yLCB3aGljaCBpcyBiZWZvcmUgRWd5cHQsIGV2ZW4gdW50byB0aGUgYm9yZGVycyBvZiBFa3JvbiBub3J0aHdhcmQsIHdoaWNoIGlzIGNvdW50ZWQgdG8gdGhlIENhbmFhbml0ZTogZml2ZSBsb3JkcyBvZiB0aGUgUGhpbGlzdGluZXM7IHRoZSBHYXphdGhpdGVzLCBhbmQgdGhlIEFzaGRvdGhpdGVzLCB0aGUgRXNoa2Fsb25pdGVzLCB0aGUgR2l0dGl0ZXMsIGFuZCB0aGUgRWtyb25pdGVzOyBhbHNvIHRoZSBBdml0ZXM6CkZyb20gdGhlIHNvdXRoLCBhbGwgdGhlIGxhbmQgb2YgdGhlIENhbmFhbml0ZXMsIGFuZCBNZWFyYWggdGhhdCBpcyBiZXNpZGUgdGhlIFNpZG9uaWFucyB1bnRvIEFwaGVrLCB0byB0aGUgYm9yZGVycyBvZiB0aGUgQW1vcml0ZXM6CkFuZCB0aGUgbGFuZCBvZiB0aGUgR2libGl0ZXMsIGFuZCBhbGwgTGViYW5vbiwgdG93YXJkIHRoZSBzdW5yaXNpbmcsIGZyb20gQmFhbGdhZCB1bmRlciBtb3VudCBIZXJtb24gdW50byB0aGUgZW50ZXJpbmcgaW50byBIYW1hdGguCkFsbCB0aGUgaW5oYWJpdGFudHMgb2YgdGhlIGhpbGwgY291bnRyeSBmcm9tIExlYmFub24gdW50byBNaXNyZXBob3RobWFpbSwgYW5kIGFsbCB0aGUgU2lkb25pYW5zLCB0aGVtIHdpbGwgSSBkcml2ZSBvdXQgZnJvbSBiZWZvcmUgdGhlIGNoaWxkcmVuIG9mIElzcmFlbDogb25seSBkaXZpZGUgdGhvdSBpdCBieSBsb3QgdW50byB0aGUgSXNyYWVsaXRlcyBmb3IgYW4gaW5oZXJpdGFuY2UsIGFzIEkgaGF2ZSBjb21tYW5kZWQgdGhlZS4KTm93IHRoZXJlZm9yZSBkaXZpZGUgdGhpcyBsYW5kIGZvciBhbiBpbmhlcml0YW5jZSB1bnRvIHRoZSBuaW5lIHRyaWJlcywgYW5kIHRoZSBoYWxmIHRyaWJlIG9mIE1hbmFzc2VoLApXaXRoIHdob20gdGhlIFJldWJlbml0ZXMgYW5kIHRoZSBHYWRpdGVzIGhhdmUgcmVjZWl2ZWQgdGhlaXIgaW5oZXJpdGFuY2UsIHdoaWNoIE1vc2VzIGdhdmUgdGhlbSwgYmV5b25kIEpvcmRhbiBlYXN0d2FyZCwgZXZlbiBhcyBNb3NlcyB0aGUgc2VydmFudCBvZiB0aGUgTE9SRCBnYXZlIHRoZW07CkZyb20gQXJvZXIsIHRoYXQgaXMgdXBvbiB0aGUgYmFuayBvZiB0aGUgcml2ZXIgQXJub24sIGFuZCB0aGUgY2l0eSB0aGF0IGlzIGluIHRoZSBtaWRzdCBvZiB0aGUgcml2ZXIsIGFuZCBhbGwgdGhlIHBsYWluIG9mIE1lZGViYSB1bnRvIERpYm9uOwpBbmQgYWxsIHRoZSBjaXRpZXMgb2YgU2lob24ga2luZyBvZiB0aGUgQW1vcml0ZXMsIHdoaWNoIHJlaWduZWQgaW4gSGVzaGJvbiwgdW50byB0aGUgYm9yZGVyIG9mIHRoZSBjaGlsZHJlbiBvZiBBbW1vbjsKQW5kIEdpbGVhZCwgYW5kIHRoZSBib3JkZXIgb2YgdGhlIEdlc2h1cml0ZXMgYW5kIE1hYWNoYXRoaXRlcywgYW5kIGFsbCBtb3VudCBIZXJtb24sIGFuZCBhbGwgQmFzaGFuIHVudG8gU2FsY2FoOwpBbGwgdGhlIGtpbmdkb20gb2YgT2cgaW4gQmFzaGFuLCB3aGljaCByZWlnbmVkIGluIEFzaHRhcm90aCBhbmQgaW4gRWRyZWksIHdobyByZW1haW5lZCBvZiB0aGUgcmVtbmFudCBvZiB0aGUgZ2lhbnRzOiBmb3IgdGhlc2UgZGlkIE1vc2VzIHNtaXRlLCBhbmQgY2FzdCB0aGVtIG91dC4KTmV2ZXJ0aGVsZXNzIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgZXhwZWxsZWQgbm90IHRoZSBHZXNodXJpdGVzLCBub3IgdGhlIE1hYWNoYXRoaXRlczogYnV0IHRoZSBHZXNodXJpdGVzIGFuZCB0aGUgTWFhY2hhdGhpdGVzIGR3ZWxsIGFtb25nIHRoZSBJc3JhZWxpdGVzIHVudGlsIHRoaXMgZGF5LgpPbmx5IHVudG8gdGhlIHRyaWJlcyBvZiBMZXZpIGhlIGdhdmUgbm9uZSBpbmhlcml0YW5jZTsgdGhlIHNhY3JpZmljZXMgb2YgdGhlIExPUkQgR29kIG9mIElzcmFlbCBtYWRlIGJ5IGZpcmUgYXJlIHRoZWlyIGluaGVyaXRhbmNlLCBhcyBoZSBzYWlkIHVudG8gdGhlbS4KQW5kIE1vc2VzIGdhdmUgdW50byB0aGUgdHJpYmUgb2YgdGhlIGNoaWxkcmVuIG9mIFJldWJlbiBpbmhlcml0YW5jZSBhY2NvcmRpbmcgdG8gdGhlaXIgZmFtaWxpZXMuCkFuZCB0aGVpciBjb2FzdCB3YXMgZnJvbSBBcm9lciwgdGhhdCBpcyBvbiB0aGUgYmFuayBvZiB0aGUgcml2ZXIgQXJub24sIGFuZCB0aGUgY2l0eSB0aGF0IGlzIGluIHRoZSBtaWRzdCBvZiB0aGUgcml2ZXIsIGFuZCBhbGwgdGhlIHBsYWluIGJ5IE1lZGViYTsKSGVzaGJvbiwgYW5kIGFsbCBoZXIgY2l0aWVzIHRoYXQgYXJlIGluIHRoZSBwbGFpbjsgRGlib24sIGFuZCBCYW1vdGhiYWFsLCBhbmQgQmV0aGJhYWxtZW9uLApBbmQgSmFoYXphLCBhbmQgS2VkZW1vdGgsIGFuZCBNZXBoYWF0aCwKQW5kIEtpcmphdGhhaW0sIGFuZCBTaWJtYWgsIGFuZCBaYXJldGhzaGFoYXIgaW4gdGhlIG1vdW50IG9mIHRoZSB2YWxsZXksCkFuZCBCZXRocGVvciwgYW5kIEFzaGRvdGhwaXNnYWgsIGFuZCBCZXRoamVzaGltb3RoLApBbmQgYWxsIHRoZSBjaXRpZXMgb2YgdGhlIHBsYWluLCBhbmQgYWxsIHRoZSBraW5nZG9tIG9mIFNpaG9uIGtpbmcgb2YgdGhlIEFtb3JpdGVzLCB3aGljaCByZWlnbmVkIGluIEhlc2hib24sIHdob20gTW9zZXMgc21vdGUgd2l0aCB0aGUgcHJpbmNlcyBvZiBNaWRpYW4sIEV2aSwgYW5kIFJla2VtLCBhbmQgWnVyLCBhbmQgSHVyLCBhbmQgUmViYSwgd2hpY2ggd2VyZSBkdWtlcyBvZiBTaWhvbiwgZHdlbGxpbmcgaW4gdGhlIGNvdW50cnkuCkJhbGFhbSBhbHNvIHRoZSBzb24gb2YgQmVvciwgdGhlIHNvb3Roc2F5ZXIsIGRpZCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIHNsYXkgd2l0aCB0aGUgc3dvcmQgYW1vbmcgdGhlbSB0aGF0IHdlcmUgc2xhaW4gYnkgdGhlbS4KQW5kIHRoZSBib3JkZXIgb2YgdGhlIGNoaWxkcmVuIG9mIFJldWJlbiB3YXMgSm9yZGFuLCBhbmQgdGhlIGJvcmRlciB0aGVyZW9mLiBUaGlzIHdhcyB0aGUgaW5oZXJpdGFuY2Ugb2YgdGhlIGNoaWxkcmVuIG9mIFJldWJlbiBhZnRlciB0aGVpciBmYW1pbGllcywgdGhlIGNpdGllcyBhbmQgdGhlIHZpbGxhZ2VzIHRoZXJlb2YuCkFuZCBNb3NlcyBnYXZlIGluaGVyaXRhbmNlIHVudG8gdGhlIHRyaWJlIG9mIEdhZCwgZXZlbiB1bnRvIHRoZSBjaGlsZHJlbiBvZiBHYWQgYWNjb3JkaW5nIHRvIHRoZWlyIGZhbWlsaWVzLgpBbmQgdGhlaXIgY29hc3Qgd2FzIEphemVyLCBhbmQgYWxsIHRoZSBjaXRpZXMgb2YgR2lsZWFkLCBhbmQgaGFsZiB0aGUgbGFuZCBvZiB0aGUgY2hpbGRyZW4gb2YgQW1tb24sIHVudG8gQXJvZXIgdGhhdCBpcyBiZWZvcmUgUmFiYmFoOwpBbmQgZnJvbSBIZXNoYm9uIHVudG8gUmFtYXRobWl6cGVoLCBhbmQgQmV0b25pbTsgYW5kIGZyb20gTWFoYW5haW0gdW50byB0aGUgYm9yZGVyIG9mIERlYmlyOwpBbmQgaW4gdGhlIHZhbGxleSwgQmV0aGFyYW0sIGFuZCBCZXRobmltcmFoLCBhbmQgU3VjY290aCwgYW5kIFphcGhvbiwgdGhlIHJlc3Qgb2YgdGhlIGtpbmdkb20gb2YgU2lob24ga2luZyBvZiBIZXNoYm9uLCBKb3JkYW4gYW5kIGhpcyBib3JkZXIsIGV2ZW4gdW50byB0aGUgZWRnZSBvZiB0aGUgc2VhIG9mIENoaW5uZXJldGggb24gdGhlIG90aGVyIHNpZGUgSm9yZGFuIGVhc3R3YXJkLgpUaGlzIGlzIHRoZSBpbmhlcml0YW5jZSBvZiB0aGUgY2hpbGRyZW4gb2YgR2FkIGFmdGVyIHRoZWlyIGZhbWlsaWVzLCB0aGUgY2l0aWVzLCBhbmQgdGhlaXIgdmlsbGFnZXMuCkFuZCBNb3NlcyBnYXZlIGluaGVyaXRhbmNlIHVudG8gdGhlIGhhbGYgdHJpYmUgb2YgTWFuYXNzZWg6IGFuZCB0aGlzIHdhcyB0aGUgcG9zc2Vzc2lvbiBvZiB0aGUgaGFsZiB0cmliZSBvZiB0aGUgY2hpbGRyZW4gb2YgTWFuYXNzZWggYnkgdGhlaXIgZmFtaWxpZXMuCkFuZCB0aGVpciBjb2FzdCB3YXMgZnJvbSBNYWhhbmFpbSwgYWxsIEJhc2hhbiwgYWxsIHRoZSBraW5nZG9tIG9mIE9nIGtpbmcgb2YgQmFzaGFuLCBhbmQgYWxsIHRoZSB0b3ducyBvZiBKYWlyLCB3aGljaCBhcmUgaW4gQmFzaGFuLCB0aHJlZXNjb3JlIGNpdGllczoKQW5kIGhhbGYgR2lsZWFkLCBhbmQgQXNodGFyb3RoLCBhbmQgRWRyZWksIGNpdGllcyBvZiB0aGUga2luZ2RvbSBvZiBPZyBpbiBCYXNoYW4sIHdlcmUgcGVydGFpbmluZyB1bnRvIHRoZSBjaGlsZHJlbiBvZiBNYWNoaXIgdGhlIHNvbiBvZiBNYW5hc3NlaCwgZXZlbiB0byB0aGUgb25lIGhhbGYgb2YgdGhlIGNoaWxkcmVuIG9mIE1hY2hpciBieSB0aGVpciBmYW1pbGllcy4KVGhlc2UgYXJlIHRoZSBjb3VudHJpZXMgd2hpY2ggTW9zZXMgZGlkIGRpc3RyaWJ1dGUgZm9yIGluaGVyaXRhbmNlIGluIHRoZSBwbGFpbnMgb2YgTW9hYiwgb24gdGhlIG90aGVyIHNpZGUgSm9yZGFuLCBieSBKZXJpY2hvLCBlYXN0d2FyZC4KQnV0IHVudG8gdGhlIHRyaWJlIG9mIExldmkgTW9zZXMgZ2F2ZSBub3QgYW55IGluaGVyaXRhbmNlOiB0aGUgTE9SRCBHb2Qgb2YgSXNyYWVsIHdhcyB0aGVpciBpbmhlcml0YW5jZSwgYXMgaGUgc2FpZCB1bnRvIHRoZW0uCkFuZCB0aGVzZSBhcmUgdGhlIGNvdW50cmllcyB3aGljaCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGluaGVyaXRlZCBpbiB0aGUgbGFuZCBvZiBDYW5hYW4sIHdoaWNoIEVsZWF6YXIgdGhlIHByaWVzdCwgYW5kIEpvc2h1YSB0aGUgc29uIG9mIE51biwgYW5kIHRoZSBoZWFkcyBvZiB0aGUgZmF0aGVycyBvZiB0aGUgdHJpYmVzIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIGRpc3RyaWJ1dGVkIGZvciBpbmhlcml0YW5jZSB0byB0aGVtLgpCeSBsb3Qgd2FzIHRoZWlyIGluaGVyaXRhbmNlLCBhcyB0aGUgTE9SRCBjb21tYW5kZWQgYnkgdGhlIGhhbmQgb2YgTW9zZXMsIGZvciB0aGUgbmluZSB0cmliZXMsIGFuZCBmb3IgdGhlIGhhbGYgdHJpYmUuCkZvciBNb3NlcyBoYWQgZ2l2ZW4gdGhlIGluaGVyaXRhbmNlIG9mIHR3byB0cmliZXMgYW5kIGFuIGhhbGYgdHJpYmUgb24gdGhlIG90aGVyIHNpZGUgSm9yZGFuOiBidXQgdW50byB0aGUgTGV2aXRlcyBoZSBnYXZlIG5vbmUgaW5oZXJpdGFuY2UgYW1vbmcgdGhlbS4KRm9yIHRoZSBjaGlsZHJlbiBvZiBKb3NlcGggd2VyZSB0d28gdHJpYmVzLCBNYW5hc3NlaCBhbmQgRXBocmFpbTogdGhlcmVmb3JlIHRoZXkgZ2F2ZSBubyBwYXJ0IHVudG8gdGhlIExldml0ZXMgaW4gdGhlIGxhbmQsIHNhdmUgY2l0aWVzIHRvIGR3ZWxsIGluLCB3aXRoIHRoZWlyIHN1YnVyYnMgZm9yIHRoZWlyIGNhdHRsZSBhbmQgZm9yIHRoZWlyIHN1YnN0YW5jZS4KQXMgdGhlIExPUkQgY29tbWFuZGVkIE1vc2VzLCBzbyB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGRpZCwgYW5kIHRoZXkgZGl2aWRlZCB0aGUgbGFuZC4KVGhlbiB0aGUgY2hpbGRyZW4gb2YgSnVkYWggY2FtZSB1bnRvIEpvc2h1YSBpbiBHaWxnYWw6IGFuZCBDYWxlYiB0aGUgc29uIG9mIEplcGh1bm5laCB0aGUgS2VuZXppdGUgc2FpZCB1bnRvIGhpbSwgVGhvdSBrbm93ZXN0IHRoZSB0aGluZyB0aGF0IHRoZSBMT1JEIHNhaWQgdW50byBNb3NlcyB0aGUgbWFuIG9mIEdvZCBjb25jZXJuaW5nIG1lIGFuZCB0aGVlIGluIEthZGVzaGJhcm5lYS4KRm9ydHkgeWVhcnMgb2xkIHdhcyBJIHdoZW4gTW9zZXMgdGhlIHNlcnZhbnQgb2YgdGhlIExPUkQgc2VudCBtZSBmcm9tIEthZGVzaGJhcm5lYSB0byBlc3B5IG91dCB0aGUgbGFuZDsgYW5kIEkgYnJvdWdodCBoaW0gd29yZCBhZ2FpbiBhcyBpdCB3YXMgaW4gbWluZSBoZWFydC4KTmV2ZXJ0aGVsZXNzIG15IGJyZXRocmVuIHRoYXQgd2VudCB1cCB3aXRoIG1lIG1hZGUgdGhlIGhlYXJ0IG9mIHRoZSBwZW9wbGUgbWVsdDogYnV0IEkgd2hvbGx5IGZvbGxvd2VkIHRoZSBMT1JEIG15IEdvZC4KQW5kIE1vc2VzIHN3YXJlIG9uIHRoYXQgZGF5LCBzYXlpbmcsIFN1cmVseSB0aGUgbGFuZCB3aGVyZW9uIHRoeSBmZWV0IGhhdmUgdHJvZGRlbiBzaGFsbCBiZSB0aGluZSBpbmhlcml0YW5jZSwgYW5kIHRoeSBjaGlsZHJlbidzIGZvciBldmVyLCBiZWNhdXNlIHRob3UgaGFzdCB3aG9sbHkgZm9sbG93ZWQgdGhlIExPUkQgbXkgR29kLgpBbmQgbm93LCBiZWhvbGQsIHRoZSBMT1JEIGhhdGgga2VwdCBtZSBhbGl2ZSwgYXMgaGUgc2FpZCwgdGhlc2UgZm9ydHkgYW5kIGZpdmUgeWVhcnMsIGV2ZW4gc2luY2UgdGhlIExPUkQgc3Bha2UgdGhpcyB3b3JkIHVudG8gTW9zZXMsIHdoaWxlIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgd2FuZGVyZWQgaW4gdGhlIHdpbGRlcm5lc3M6IGFuZCBub3csIGxvLCBJIGFtIHRoaXMgZGF5IGZvdXJzY29yZSBhbmQgZml2ZSB5ZWFycyBvbGQuCkFzIHlldCBJIGFtIGFzIHN0cm9uZyB0aGlzIGRheSBhcyBJIHdhcyBpbiB0aGUgZGF5IHRoYXQgTW9zZXMgc2VudCBtZTogYXMgbXkgc3RyZW5ndGggd2FzIHRoZW4sIGV2ZW4gc28gaXMgbXkgc3RyZW5ndGggbm93LCBmb3Igd2FyLCBib3RoIHRvIGdvIG91dCwgYW5kIHRvIGNvbWUgaW4uCk5vdyB0aGVyZWZvcmUgZ2l2ZSBtZSB0aGlzIG1vdW50YWluLCB3aGVyZW9mIHRoZSBMT1JEIHNwYWtlIGluIHRoYXQgZGF5OyBmb3IgdGhvdSBoZWFyZGVzdCBpbiB0aGF0IGRheSBob3cgdGhlIEFuYWtpbXMgd2VyZSB0aGVyZSwgYW5kIHRoYXQgdGhlIGNpdGllcyB3ZXJlIGdyZWF0IGFuZCBmZW5jZWQ6IGlmIHNvIGJlIHRoZSBMT1JEIHdpbGwgYmUgd2l0aCBtZSwgdGhlbiBJIHNoYWxsIGJlIGFibGUgdG8gZHJpdmUgdGhlbSBvdXQsIGFzIHRoZSBMT1JEIHNhaWQuCkFuZCBKb3NodWEgYmxlc3NlZCBoaW0sIGFuZCBnYXZlIHVudG8gQ2FsZWIgdGhlIHNvbiBvZiBKZXBodW5uZWggSGVicm9uIGZvciBhbiBpbmhlcml0YW5jZS4KSGVicm9uIHRoZXJlZm9yZSBiZWNhbWUgdGhlIGluaGVyaXRhbmNlIG9mIENhbGViIHRoZSBzb24gb2YgSmVwaHVubmVoIHRoZSBLZW5leml0ZSB1bnRvIHRoaXMgZGF5LCBiZWNhdXNlIHRoYXQgaGUgd2hvbGx5IGZvbGxvd2VkIHRoZSBMT1JEIEdvZCBvZiBJc3JhZWwuCkFuZCB0aGUgbmFtZSBvZiBIZWJyb24gYmVmb3JlIHdhcyBLaXJqYXRoYXJiYTsgd2hpY2ggQXJiYSB3YXMgYSBncmVhdCBtYW4gYW1vbmcgdGhlIEFuYWtpbXMuIEFuZCB0aGUgbGFuZCBoYWQgcmVzdCBmcm9tIHdhci4KVGhpcyB0aGVuIHdhcyB0aGUgbG90IG9mIHRoZSB0cmliZSBvZiB0aGUgY2hpbGRyZW4gb2YgSnVkYWggYnkgdGhlaXIgZmFtaWxpZXM7IGV2ZW4gdG8gdGhlIGJvcmRlciBvZiBFZG9tIHRoZSB3aWxkZXJuZXNzIG9mIFppbiBzb3V0aHdhcmQgd2FzIHRoZSB1dHRlcm1vc3QgcGFydCBvZiB0aGUgc291dGggY29hc3QuCkFuZCB0aGVpciBzb3V0aCBib3JkZXIgd2FzIGZyb20gdGhlIHNob3JlIG9mIHRoZSBzYWx0IHNlYSwgZnJvbSB0aGUgYmF5IHRoYXQgbG9va2V0aCBzb3V0aHdhcmQ6CkFuZCBpdCB3ZW50IG91dCB0byB0aGUgc291dGggc2lkZSB0byBNYWFsZWhhY3JhYmJpbSwgYW5kIHBhc3NlZCBhbG9uZyB0byBaaW4sIGFuZCBhc2NlbmRlZCB1cCBvbiB0aGUgc291dGggc2lkZSB1bnRvIEthZGVzaGJhcm5lYSwgYW5kIHBhc3NlZCBhbG9uZyB0byBIZXpyb24sIGFuZCB3ZW50IHVwIHRvIEFkYXIsIGFuZCBmZXRjaGVkIGEgY29tcGFzcyB0byBLYXJrYWE6CkZyb20gdGhlbmNlIGl0IHBhc3NlZCB0b3dhcmQgQXptb24sIGFuZCB3ZW50IG91dCB1bnRvIHRoZSByaXZlciBvZiBFZ3lwdDsgYW5kIHRoZSBnb2luZ3Mgb3V0IG9mIHRoYXQgY29hc3Qgd2VyZSBhdCB0aGUgc2VhOiB0aGlzIHNoYWxsIGJlIHlvdXIgc291dGggY29hc3QuCkFuZCB0aGUgZWFzdCBib3JkZXIgd2FzIHRoZSBzYWx0IHNlYSwgZXZlbiB1bnRvIHRoZSBlbmQgb2YgSm9yZGFuLiBBbmQgdGhlaXIgYm9yZGVyIGluIHRoZSBub3J0aCBxdWFydGVyIHdhcyBmcm9tIHRoZSBiYXkgb2YgdGhlIHNlYSBhdCB0aGUgdXR0ZXJtb3N0IHBhcnQgb2YgSm9yZGFuOgpBbmQgdGhlIGJvcmRlciB3ZW50IHVwIHRvIEJldGhob2dsYSwgYW5kIHBhc3NlZCBhbG9uZyBieSB0aGUgbm9ydGggb2YgQmV0aGFyYWJhaDsgYW5kIHRoZSBib3JkZXIgd2VudCB1cCB0byB0aGUgc3RvbmUgb2YgQm9oYW4gdGhlIHNvbiBvZiBSZXViZW46CkFuZCB0aGUgYm9yZGVyIHdlbnQgdXAgdG93YXJkIERlYmlyIGZyb20gdGhlIHZhbGxleSBvZiBBY2hvciwgYW5kIHNvIG5vcnRod2FyZCwgbG9va2luZyB0b3dhcmQgR2lsZ2FsLCB0aGF0IGlzIGJlZm9yZSB0aGUgZ29pbmcgdXAgdG8gQWR1bW1pbSwgd2hpY2ggaXMgb24gdGhlIHNvdXRoIHNpZGUgb2YgdGhlIHJpdmVyOiBhbmQgdGhlIGJvcmRlciBwYXNzZWQgdG93YXJkIHRoZSB3YXRlcnMgb2YgRW5zaGVtZXNoLCBhbmQgdGhlIGdvaW5ncyBvdXQgdGhlcmVvZiB3ZXJlIGF0IEVucm9nZWw6CkFuZCB0aGUgYm9yZGVyIHdlbnQgdXAgYnkgdGhlIHZhbGxleSBvZiB0aGUgc29uIG9mIEhpbm5vbSB1bnRvIHRoZSBzb3V0aCBzaWRlIG9mIHRoZSBKZWJ1c2l0ZTsgdGhlIHNhbWUgaXMgSmVydXNhbGVtOiBhbmQgdGhlIGJvcmRlciB3ZW50IHVwIHRvIHRoZSB0b3Agb2YgdGhlIG1vdW50YWluIHRoYXQgbGlldGggYmVmb3JlIHRoZSB2YWxsZXkgb2YgSGlubm9tIHdlc3R3YXJkLCB3aGljaCBpcyBhdCB0aGUgZW5kIG9mIHRoZSB2YWxsZXkgb2YgdGhlIGdpYW50cyBub3J0aHdhcmQ6CkFuZCB0aGUgYm9yZGVyIHdhcyBkcmF3biBmcm9tIHRoZSB0b3Agb2YgdGhlIGhpbGwgdW50byB0aGUgZm91bnRhaW4gb2YgdGhlIHdhdGVyIG9mIE5lcGh0b2FoLCBhbmQgd2VudCBvdXQgdG8gdGhlIGNpdGllcyBvZiBtb3VudCBFcGhyb247IGFuZCB0aGUgYm9yZGVyIHdhcyBkcmF3biB0byBCYWFsYWgsIHdoaWNoIGlzIEtpcmphdGhqZWFyaW06CkFuZCB0aGUgYm9yZGVyIGNvbXBhc3NlZCBmcm9tIEJhYWxhaCB3ZXN0d2FyZCB1bnRvIG1vdW50IFNlaXIsIGFuZCBwYXNzZWQgYWxvbmcgdW50byB0aGUgc2lkZSBvZiBtb3VudCBKZWFyaW0sIHdoaWNoIGlzIENoZXNhbG9uLCBvbiB0aGUgbm9ydGggc2lkZSwgYW5kIHdlbnQgZG93biB0byBCZXRoc2hlbWVzaCwgYW5kIHBhc3NlZCBvbiB0byBUaW1uYWg6CkFuZCB0aGUgYm9yZGVyIHdlbnQgb3V0IHVudG8gdGhlIHNpZGUgb2YgRWtyb24gbm9ydGh3YXJkOiBhbmQgdGhlIGJvcmRlciB3YXMgZHJhd24gdG8gU2hpY3JvbiwgYW5kIHBhc3NlZCBhbG9uZyB0byBtb3VudCBCYWFsYWgsIGFuZCB3ZW50IG91dCB1bnRvIEphYm5lZWw7IGFuZCB0aGUgZ29pbmdzIG91dCBvZiB0aGUgYm9yZGVyIHdlcmUgYXQgdGhlIHNlYS4KQW5kIHRoZSB3ZXN0IGJvcmRlciB3YXMgdG8gdGhlIGdyZWF0IHNlYSwgYW5kIHRoZSBjb2FzdCB0aGVyZW9mLiBUaGlzIGlzIHRoZSBjb2FzdCBvZiB0aGUgY2hpbGRyZW4gb2YgSnVkYWggcm91bmQgYWJvdXQgYWNjb3JkaW5nIHRvIHRoZWlyIGZhbWlsaWVzLgpBbmQgdW50byBDYWxlYiB0aGUgc29uIG9mIEplcGh1bm5laCBoZSBnYXZlIGEgcGFydCBhbW9uZyB0aGUgY2hpbGRyZW4gb2YgSnVkYWgsIGFjY29yZGluZyB0byB0aGUgY29tbWFuZG1lbnQgb2YgdGhlIExPUkQgdG8gSm9zaHVhLCBldmVuIHRoZSBjaXR5IG9mIEFyYmEgdGhlIGZhdGhlciBvZiBBbmFrLCB3aGljaCBjaXR5IGlzIEhlYnJvbi4KQW5kIENhbGViIGRyb3ZlIHRoZW5jZSB0aGUgdGhyZWUgc29ucyBvZiBBbmFrLCBTaGVzaGFpLCBhbmQgQWhpbWFuLCBhbmQgVGFsbWFpLCB0aGUgY2hpbGRyZW4gb2YgQW5hay4KQW5kIGhlIHdlbnQgdXAgdGhlbmNlIHRvIHRoZSBpbmhhYml0YW50cyBvZiBEZWJpcjogYW5kIHRoZSBuYW1lIG9mIERlYmlyIGJlZm9yZSB3YXMgS2lyamF0aHNlcGhlci4KQW5kIENhbGViIHNhaWQsIEhlIHRoYXQgc21pdGV0aCBLaXJqYXRoc2VwaGVyLCBhbmQgdGFrZXRoIGl0LCB0byBoaW0gd2lsbCBJIGdpdmUgQWNoc2FoIG15IGRhdWdodGVyIHRvIHdpZmUuCkFuZCBPdGhuaWVsIHRoZSBzb24gb2YgS2VuYXosIHRoZSBicm90aGVyIG9mIENhbGViLCB0b29rIGl0OiBhbmQgaGUgZ2F2ZSBoaW0gQWNoc2FoIGhpcyBkYXVnaHRlciB0byB3aWZlLgpBbmQgaXQgY2FtZSB0byBwYXNzLCBhcyBzaGUgY2FtZSB1bnRvIGhpbSwgdGhhdCBzaGUgbW92ZWQgaGltIHRvIGFzayBvZiBoZXIgZmF0aGVyIGEgZmllbGQ6IGFuZCBzaGUgbGlnaHRlZCBvZmYgaGVyIGFzczsgYW5kIENhbGViIHNhaWQgdW50byBoZXIsIFdoYXQgd291bGRlc3QgdGhvdT8KV2hvIGFuc3dlcmVkLCBHaXZlIG1lIGEgYmxlc3Npbmc7IGZvciB0aG91IGhhc3QgZ2l2ZW4gbWUgYSBzb3V0aCBsYW5kOyBnaXZlIG1lIGFsc28gc3ByaW5ncyBvZiB3YXRlci4gQW5kIGhlIGdhdmUgaGVyIHRoZSB1cHBlciBzcHJpbmdzLCBhbmQgdGhlIG5ldGhlciBzcHJpbmdzLgpUaGlzIGlzIHRoZSBpbmhlcml0YW5jZSBvZiB0aGUgdHJpYmUgb2YgdGhlIGNoaWxkcmVuIG9mIEp1ZGFoIGFjY29yZGluZyB0byB0aGVpciBmYW1pbGllcy4KQW5kIHRoZSB1dHRlcm1vc3QgY2l0aWVzIG9mIHRoZSB0cmliZSBvZiB0aGUgY2hpbGRyZW4gb2YgSnVkYWggdG93YXJkIHRoZSBjb2FzdCBvZiBFZG9tIHNvdXRod2FyZCB3ZXJlIEthYnplZWwsIGFuZCBFZGVyLCBhbmQgSmFndXIsCkFuZCBLaW5haCwgYW5kIERpbW9uYWgsIGFuZCBBZGFkYWgsCkFuZCBLZWRlc2gsIGFuZCBIYXpvciwgYW5kIEl0aG5hbiwKWmlwaCwgYW5kIFRlbGVtLCBhbmQgQmVhbG90aCwKQW5kIEhhem9yLCBIYWRhdHRhaCwgYW5kIEtlcmlvdGgsIGFuZCBIZXpyb24sIHdoaWNoIGlzIEhhem9yLApBbWFtLCBhbmQgU2hlbWEsIGFuZCBNb2xhZGFoLApBbmQgSGF6YXJnYWRkYWgsIGFuZCBIZXNobW9uLCBhbmQgQmV0aHBhbGV0LApBbmQgSGF6YXJzaHVhbCwgYW5kIEJlZXJzaGViYSwgYW5kIEJpempvdGhqYWgsCkJhYWxhaCwgYW5kIElpbSwgYW5kIEF6ZW0sCkFuZCBFbHRvbGFkLCBhbmQgQ2hlc2lsLCBhbmQgSG9ybWFoLApBbmQgWmlrbGFnLCBhbmQgTWFkbWFubmFoLCBhbmQgU2Fuc2FubmFoLApBbmQgTGViYW90aCwgYW5kIFNoaWxoaW0sIGFuZCBBaW4sIGFuZCBSaW1tb246IGFsbCB0aGUgY2l0aWVzIGFyZSB0d2VudHkgYW5kIG5pbmUsIHdpdGggdGhlaXIgdmlsbGFnZXM6CkFuZCBpbiB0aGUgdmFsbGV5LCBFc2h0YW9sLCBhbmQgWm9yZWFoLCBhbmQgQXNobmFoLApBbmQgWmFub2FoLCBhbmQgRW5nYW5uaW0sIFRhcHB1YWgsIGFuZCBFbmFtLApKYXJtdXRoLCBhbmQgQWR1bGxhbSwgU29jb2gsIGFuZCBBemVrYWgsCkFuZCBTaGFyYWltLCBhbmQgQWRpdGhhaW0sIGFuZCBHZWRlcmFoLCBhbmQgR2VkZXJvdGhhaW07IGZvdXJ0ZWVuIGNpdGllcyB3aXRoIHRoZWlyIHZpbGxhZ2VzOgpaZW5hbiwgYW5kIEhhZGFzaGFoLCBhbmQgTWlnZGFsZ2FkLApBbmQgRGlsZWFuLCBhbmQgTWl6cGVoLCBhbmQgSm9rdGhlZWwsCkxhY2hpc2gsIGFuZCBCb3prYXRoLCBhbmQgRWdsb24sCkFuZCBDYWJib24sIGFuZCBMYWhtYW0sIGFuZCBLaXRobGlzaCwKQW5kIEdlZGVyb3RoLCBCZXRoZGFnb24sIGFuZCBOYWFtYWgsIGFuZCBNYWtrZWRhaDsgc2l4dGVlbiBjaXRpZXMgd2l0aCB0aGVpciB2aWxsYWdlczoKTGlibmFoLCBhbmQgRXRoZXIsIGFuZCBBc2hhbiwKQW5kIEppcGh0YWgsIGFuZCBBc2huYWgsIGFuZCBOZXppYiwKQW5kIEtlaWxhaCwgYW5kIEFjaHppYiwgYW5kIE1hcmVzaGFoOyBuaW5lIGNpdGllcyB3aXRoIHRoZWlyIHZpbGxhZ2VzOgpFa3Jvbiwgd2l0aCBoZXIgdG93bnMgYW5kIGhlciB2aWxsYWdlczoKRnJvbSBFa3JvbiBldmVuIHVudG8gdGhlIHNlYSwgYWxsIHRoYXQgbGF5IG5lYXIgQXNoZG9kLCB3aXRoIHRoZWlyIHZpbGxhZ2VzOgpBc2hkb2Qgd2l0aCBoZXIgdG93bnMgYW5kIGhlciB2aWxsYWdlcywgR2F6YSB3aXRoIGhlciB0b3ducyBhbmQgaGVyIHZpbGxhZ2VzLCB1bnRvIHRoZSByaXZlciBvZiBFZ3lwdCwgYW5kIHRoZSBncmVhdCBzZWEsIGFuZCB0aGUgYm9yZGVyIHRoZXJlb2Y6CkFuZCBpbiB0aGUgbW91bnRhaW5zLCBTaGFtaXIsIGFuZCBKYXR0aXIsIGFuZCBTb2NvaCwKQW5kIERhbm5haCwgYW5kIEtpcmphdGhzYW5uYWgsIHdoaWNoIGlzIERlYmlyLApBbmQgQW5hYiwgYW5kIEVzaHRlbW9oLCBhbmQgQW5pbSwKQW5kIEdvc2hlbiwgYW5kIEhvbG9uLCBhbmQgR2lsb2g7IGVsZXZlbiBjaXRpZXMgd2l0aCB0aGVpciB2aWxsYWdlczoKQXJhYiwgYW5kIER1bWFoLCBhbmQgRXNoZWFuLApBbmQgSmFudW0sIGFuZCBCZXRodGFwcHVhaCwgYW5kIEFwaGVrYWgsCkFuZCBIdW10YWgsIGFuZCBLaXJqYXRoYXJiYSwgd2hpY2ggaXMgSGVicm9uLCBhbmQgWmlvcjsgbmluZSBjaXRpZXMgd2l0aCB0aGVpciB2aWxsYWdlczoKTWFvbiwgQ2FybWVsLCBhbmQgWmlwaCwgYW5kIEp1dHRhaCwKQW5kIEplenJlZWwsIGFuZCBKb2tkZWFtLCBhbmQgWmFub2FoLApDYWluLCBHaWJlYWgsIGFuZCBUaW1uYWg7IHRlbiBjaXRpZXMgd2l0aCB0aGVpciB2aWxsYWdlczoKSGFsaHVsLCBCZXRoenVyLCBhbmQgR2Vkb3IsCkFuZCBNYWFyYXRoLCBhbmQgQmV0aGFub3RoLCBhbmQgRWx0ZWtvbjsgc2l4IGNpdGllcyB3aXRoIHRoZWlyIHZpbGxhZ2VzOgpLaXJqYXRoYmFhbCwgd2hpY2ggaXMgS2lyamF0aGplYXJpbSwgYW5kIFJhYmJhaDsgdHdvIGNpdGllcyB3aXRoIHRoZWlyIHZpbGxhZ2VzOgpJbiB0aGUgd2lsZGVybmVzcywgQmV0aGFyYWJhaCwgTWlkZGluLCBhbmQgU2VjYWNhaCwKQW5kIE5pYnNoYW4sIGFuZCB0aGUgY2l0eSBvZiBTYWx0LCBhbmQgRW5nZWRpOyBzaXggY2l0aWVzIHdpdGggdGhlaXIgdmlsbGFnZXMuCkFzIGZvciB0aGUgSmVidXNpdGVzIHRoZSBpbmhhYml0YW50cyBvZiBKZXJ1c2FsZW0sIHRoZSBjaGlsZHJlbiBvZiBKdWRhaCBjb3VsZCBub3QgZHJpdmUgdGhlbSBvdXQ7IGJ1dCB0aGUgSmVidXNpdGVzIGR3ZWxsIHdpdGggdGhlIGNoaWxkcmVuIG9mIEp1ZGFoIGF0IEplcnVzYWxlbSB1bnRvIHRoaXMgZGF5LgpBbmQgdGhlIGxvdCBvZiB0aGUgY2hpbGRyZW4gb2YgSm9zZXBoIGZlbGwgZnJvbSBKb3JkYW4gYnkgSmVyaWNobywgdW50byB0aGUgd2F0ZXIgb2YgSmVyaWNobyBvbiB0aGUgZWFzdCwgdG8gdGhlIHdpbGRlcm5lc3MgdGhhdCBnb2V0aCB1cCBmcm9tIEplcmljaG8gdGhyb3VnaG91dCBtb3VudCBCZXRoZWwsCkFuZCBnb2V0aCBvdXQgZnJvbSBCZXRoZWwgdG8gTHV6LCBhbmQgcGFzc2V0aCBhbG9uZyB1bnRvIHRoZSBib3JkZXJzIG9mIEFyY2hpIHRvIEF0YXJvdGgsCkFuZCBnb2V0aCBkb3duIHdlc3R3YXJkIHRvIHRoZSBjb2FzdCBvZiBKYXBobGV0aSwgdW50byB0aGUgY29hc3Qgb2YgQmV0aGhvcm9uIHRoZSBuZXRoZXIsIGFuZCB0byBHZXplcjsgYW5kIHRoZSBnb2luZ3Mgb3V0IHRoZXJlb2YgYXJlIGF0IHRoZSBzZWEuClNvIHRoZSBjaGlsZHJlbiBvZiBKb3NlcGgsIE1hbmFzc2VoIGFuZCBFcGhyYWltLCB0b29rIHRoZWlyIGluaGVyaXRhbmNlLgpBbmQgdGhlIGJvcmRlciBvZiB0aGUgY2hpbGRyZW4gb2YgRXBocmFpbSBhY2NvcmRpbmcgdG8gdGhlaXIgZmFtaWxpZXMgd2FzIHRodXM6IGV2ZW4gdGhlIGJvcmRlciBvZiB0aGVpciBpbmhlcml0YW5jZSBvbiB0aGUgZWFzdCBzaWRlIHdhcyBBdGFyb3RoYWRkYXIsIHVudG8gQmV0aGhvcm9uIHRoZSB1cHBlcjsKQW5kIHRoZSBib3JkZXIgd2VudCBvdXQgdG93YXJkIHRoZSBzZWEgdG8gTWljaG1ldGhhaCBvbiB0aGUgbm9ydGggc2lkZTsgYW5kIHRoZSBib3JkZXIgd2VudCBhYm91dCBlYXN0d2FyZCB1bnRvIFRhYW5hdGhzaGlsb2gsIGFuZCBwYXNzZWQgYnkgaXQgb24gdGhlIGVhc3QgdG8gSmFub2hhaDsKQW5kIGl0IHdlbnQgZG93biBmcm9tIEphbm9oYWggdG8gQXRhcm90aCwgYW5kIHRvIE5hYXJhdGgsIGFuZCBjYW1lIHRvIEplcmljaG8sIGFuZCB3ZW50IG91dCBhdCBKb3JkYW4uClRoZSBib3JkZXIgd2VudCBvdXQgZnJvbSBUYXBwdWFoIHdlc3R3YXJkIHVudG8gdGhlIHJpdmVyIEthbmFoOyBhbmQgdGhlIGdvaW5ncyBvdXQgdGhlcmVvZiB3ZXJlIGF0IHRoZSBzZWEuIFRoaXMgaXMgdGhlIGluaGVyaXRhbmNlIG9mIHRoZSB0cmliZSBvZiB0aGUgY2hpbGRyZW4gb2YgRXBocmFpbSBieSB0aGVpciBmYW1pbGllcy4KQW5kIHRoZSBzZXBhcmF0ZSBjaXRpZXMgZm9yIHRoZSBjaGlsZHJlbiBvZiBFcGhyYWltIHdlcmUgYW1vbmcgdGhlIGluaGVyaXRhbmNlIG9mIHRoZSBjaGlsZHJlbiBvZiBNYW5hc3NlaCwgYWxsIHRoZSBjaXRpZXMgd2l0aCB0aGVpciB2aWxsYWdlcy4KQW5kIHRoZXkgZHJhdmUgbm90IG91dCB0aGUgQ2FuYWFuaXRlcyB0aGF0IGR3ZWx0IGluIEdlemVyOiBidXQgdGhlIENhbmFhbml0ZXMgZHdlbGwgYW1vbmcgdGhlIEVwaHJhaW1pdGVzIHVudG8gdGhpcyBkYXksIGFuZCBzZXJ2ZSB1bmRlciB0cmlidXRlLgpUaGVyZSB3YXMgYWxzbyBhIGxvdCBmb3IgdGhlIHRyaWJlIG9mIE1hbmFzc2VoOyBmb3IgaGUgd2FzIHRoZSBmaXJzdGJvcm4gb2YgSm9zZXBoOyB0byB3aXQsIGZvciBNYWNoaXIgdGhlIGZpcnN0Ym9ybiBvZiBNYW5hc3NlaCwgdGhlIGZhdGhlciBvZiBHaWxlYWQ6IGJlY2F1c2UgaGUgd2FzIGEgbWFuIG9mIHdhciwgdGhlcmVmb3JlIGhlIGhhZCBHaWxlYWQgYW5kIEJhc2hhbi4KVGhlcmUgd2FzIGFsc28gYSBsb3QgZm9yIHRoZSByZXN0IG9mIHRoZSBjaGlsZHJlbiBvZiBNYW5hc3NlaCBieSB0aGVpciBmYW1pbGllczsgZm9yIHRoZSBjaGlsZHJlbiBvZiBBYmllemVyLCBhbmQgZm9yIHRoZSBjaGlsZHJlbiBvZiBIZWxlaywgYW5kIGZvciB0aGUgY2hpbGRyZW4gb2YgQXNyaWVsLCBhbmQgZm9yIHRoZSBjaGlsZHJlbiBvZiBTaGVjaGVtLCBhbmQgZm9yIHRoZSBjaGlsZHJlbiBvZiBIZXBoZXIsIGFuZCBmb3IgdGhlIGNoaWxkcmVuIG9mIFNoZW1pZGE6IHRoZXNlIHdlcmUgdGhlIG1hbGUgY2hpbGRyZW4gb2YgTWFuYXNzZWggdGhlIHNvbiBvZiBKb3NlcGggYnkgdGhlaXIgZmFtaWxpZXMuCkJ1dCBaZWxvcGhlaGFkLCB0aGUgc29uIG9mIEhlcGhlciwgdGhlIHNvbiBvZiBHaWxlYWQsIHRoZSBzb24gb2YgTWFjaGlyLCB0aGUgc29uIG9mIE1hbmFzc2VoLCBoYWQgbm8gc29ucywgYnV0IGRhdWdodGVyczogYW5kIHRoZXNlIGFyZSB0aGUgbmFtZXMgb2YgaGlzIGRhdWdodGVycywgTWFobGFoLCBhbmQgTm9haCwgSG9nbGFoLCBNaWxjYWgsIGFuZCBUaXJ6YWguCkFuZCB0aGV5IGNhbWUgbmVhciBiZWZvcmUgRWxlYXphciB0aGUgcHJpZXN0LCBhbmQgYmVmb3JlIEpvc2h1YSB0aGUgc29uIG9mIE51biwgYW5kIGJlZm9yZSB0aGUgcHJpbmNlcywgc2F5aW5nLCBUaGUgTE9SRCBjb21tYW5kZWQgTW9zZXMgdG8gZ2l2ZSB1cyBhbiBpbmhlcml0YW5jZSBhbW9uZyBvdXIgYnJldGhyZW4uIFRoZXJlZm9yZSBhY2NvcmRpbmcgdG8gdGhlIGNvbW1hbmRtZW50IG9mIHRoZSBMT1JEIGhlIGdhdmUgdGhlbSBhbiBpbmhlcml0YW5jZSBhbW9uZyB0aGUgYnJldGhyZW4gb2YgdGhlaXIgZmF0aGVyLgpBbmQgdGhlcmUgZmVsbCB0ZW4gcG9ydGlvbnMgdG8gTWFuYXNzZWgsIGJlc2lkZSB0aGUgbGFuZCBvZiBHaWxlYWQgYW5kIEJhc2hhbiwgd2hpY2ggd2VyZSBvbiB0aGUgb3RoZXIgc2lkZSBKb3JkYW47CkJlY2F1c2UgdGhlIGRhdWdodGVycyBvZiBNYW5hc3NlaCBoYWQgYW4gaW5oZXJpdGFuY2UgYW1vbmcgaGlzIHNvbnM6IGFuZCB0aGUgcmVzdCBvZiBNYW5hc3NlaCdzIHNvbnMgaGFkIHRoZSBsYW5kIG9mIEdpbGVhZC4KQW5kIHRoZSBjb2FzdCBvZiBNYW5hc3NlaCB3YXMgZnJvbSBBc2hlciB0byBNaWNobWV0aGFoLCB0aGF0IGxpZXRoIGJlZm9yZSBTaGVjaGVtOyBhbmQgdGhlIGJvcmRlciB3ZW50IGFsb25nIG9uIHRoZSByaWdodCBoYW5kIHVudG8gdGhlIGluaGFiaXRhbnRzIG9mIEVudGFwcHVhaC4KTm93IE1hbmFzc2VoIGhhZCB0aGUgbGFuZCBvZiBUYXBwdWFoOiBidXQgVGFwcHVhaCBvbiB0aGUgYm9yZGVyIG9mIE1hbmFzc2VoIGJlbG9uZ2VkIHRvIHRoZSBjaGlsZHJlbiBvZiBFcGhyYWltOwpBbmQgdGhlIGNvYXN0IGRlc2NlbmRlZCB1bnRvIHRoZSByaXZlciBLYW5haCwgc291dGh3YXJkIG9mIHRoZSByaXZlcjogdGhlc2UgY2l0aWVzIG9mIEVwaHJhaW0gYXJlIGFtb25nIHRoZSBjaXRpZXMgb2YgTWFuYXNzZWg6IHRoZSBjb2FzdCBvZiBNYW5hc3NlaCBhbHNvIHdhcyBvbiB0aGUgbm9ydGggc2lkZSBvZiB0aGUgcml2ZXIsIGFuZCB0aGUgb3V0Z29pbmdzIG9mIGl0IHdlcmUgYXQgdGhlIHNlYToKU291dGh3YXJkIGl0IHdhcyBFcGhyYWltJ3MsIGFuZCBub3J0aHdhcmQgaXQgd2FzIE1hbmFzc2VoJ3MsIGFuZCB0aGUgc2VhIGlzIGhpcyBib3JkZXI7IGFuZCB0aGV5IG1ldCB0b2dldGhlciBpbiBBc2hlciBvbiB0aGUgbm9ydGgsIGFuZCBpbiBJc3NhY2hhciBvbiB0aGUgZWFzdC4KQW5kIE1hbmFzc2VoIGhhZCBpbiBJc3NhY2hhciBhbmQgaW4gQXNoZXIgQmV0aHNoZWFuIGFuZCBoZXIgdG93bnMsIGFuZCBJYmxlYW0gYW5kIGhlciB0b3ducywgYW5kIHRoZSBpbmhhYml0YW50cyBvZiBEb3IgYW5kIGhlciB0b3ducywgYW5kIHRoZSBpbmhhYml0YW50cyBvZiBFbmRvciBhbmQgaGVyIHRvd25zLCBhbmQgdGhlIGluaGFiaXRhbnRzIG9mIFRhYW5hY2ggYW5kIGhlciB0b3ducywgYW5kIHRoZSBpbmhhYml0YW50cyBvZiBNZWdpZGRvIGFuZCBoZXIgdG93bnMsIGV2ZW4gdGhyZWUgY291bnRyaWVzLgpZZXQgdGhlIGNoaWxkcmVuIG9mIE1hbmFzc2VoIGNvdWxkIG5vdCBkcml2ZSBvdXQgdGhlIGluaGFiaXRhbnRzIG9mIHRob3NlIGNpdGllczsgYnV0IHRoZSBDYW5hYW5pdGVzIHdvdWxkIGR3ZWxsIGluIHRoYXQgbGFuZC4KWWV0IGl0IGNhbWUgdG8gcGFzcywgd2hlbiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIHdlcmUgd2F4ZW4gc3Ryb25nLCB0aGF0IHRoZXkgcHV0IHRoZSBDYW5hYW5pdGVzIHRvIHRyaWJ1dGUsIGJ1dCBkaWQgbm90IHV0dGVybHkgZHJpdmUgdGhlbSBvdXQuCkFuZCB0aGUgY2hpbGRyZW4gb2YgSm9zZXBoIHNwYWtlIHVudG8gSm9zaHVhLCBzYXlpbmcsIFdoeSBoYXN0IHRob3UgZ2l2ZW4gbWUgYnV0IG9uZSBsb3QgYW5kIG9uZSBwb3J0aW9uIHRvIGluaGVyaXQsIHNlZWluZyBJIGFtIGEgZ3JlYXQgcGVvcGxlLCBmb3Jhc211Y2ggYXMgdGhlIExPUkQgaGF0aCBibGVzc2VkIG1lIGhpdGhlcnRvPwpBbmQgSm9zaHVhIGFuc3dlcmVkIHRoZW0sIElmIHRob3UgYmUgYSBncmVhdCBwZW9wbGUsIHRoZW4gZ2V0IHRoZWUgdXAgdG8gdGhlIHdvb2QgY291bnRyeSwgYW5kIGN1dCBkb3duIGZvciB0aHlzZWxmIHRoZXJlIGluIHRoZSBsYW5kIG9mIHRoZSBQZXJpenppdGVzIGFuZCBvZiB0aGUgZ2lhbnRzLCBpZiBtb3VudCBFcGhyYWltIGJlIHRvbyBuYXJyb3cgZm9yIHRoZWUuCkFuZCB0aGUgY2hpbGRyZW4gb2YgSm9zZXBoIHNhaWQsIFRoZSBoaWxsIGlzIG5vdCBlbm91Z2ggZm9yIHVzOiBhbmQgYWxsIHRoZSBDYW5hYW5pdGVzIHRoYXQgZHdlbGwgaW4gdGhlIGxhbmQgb2YgdGhlIHZhbGxleSBoYXZlIGNoYXJpb3RzIG9mIGlyb24sIGJvdGggdGhleSB3aG8gYXJlIG9mIEJldGhzaGVhbiBhbmQgaGVyIHRvd25zLCBhbmQgdGhleSB3aG8gYXJlIG9mIHRoZSB2YWxsZXkgb2YgSmV6cmVlbC4KQW5kIEpvc2h1YSBzcGFrZSB1bnRvIHRoZSBob3VzZSBvZiBKb3NlcGgsIGV2ZW4gdG8gRXBocmFpbSBhbmQgdG8gTWFuYXNzZWgsIHNheWluZywgVGhvdSBhcnQgYSBncmVhdCBwZW9wbGUsIGFuZCBoYXN0IGdyZWF0IHBvd2VyOiB0aG91IHNoYWx0IG5vdCBoYXZlIG9uZSBsb3Qgb25seToKQnV0IHRoZSBtb3VudGFpbiBzaGFsbCBiZSB0aGluZTsgZm9yIGl0IGlzIGEgd29vZCwgYW5kIHRob3Ugc2hhbHQgY3V0IGl0IGRvd246IGFuZCB0aGUgb3V0Z29pbmdzIG9mIGl0IHNoYWxsIGJlIHRoaW5lOiBmb3IgdGhvdSBzaGFsdCBkcml2ZSBvdXQgdGhlIENhbmFhbml0ZXMsIHRob3VnaCB0aGV5IGhhdmUgaXJvbiBjaGFyaW90cywgYW5kIHRob3VnaCB0aGV5IGJlIHN0cm9uZy4KQW5kIHRoZSB3aG9sZSBjb25ncmVnYXRpb24gb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBhc3NlbWJsZWQgdG9nZXRoZXIgYXQgU2hpbG9oLCBhbmQgc2V0IHVwIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBjb25ncmVnYXRpb24gdGhlcmUuIEFuZCB0aGUgbGFuZCB3YXMgc3ViZHVlZCBiZWZvcmUgdGhlbS4KQW5kIHRoZXJlIHJlbWFpbmVkIGFtb25nIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgc2V2ZW4gdHJpYmVzLCB3aGljaCBoYWQgbm90IHlldCByZWNlaXZlZCB0aGVpciBpbmhlcml0YW5jZS4KQW5kIEpvc2h1YSBzYWlkIHVudG8gdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgSG93IGxvbmcgYXJlIHllIHNsYWNrIHRvIGdvIHRvIHBvc3Nlc3MgdGhlIGxhbmQsIHdoaWNoIHRoZSBMT1JEIEdvZCBvZiB5b3VyIGZhdGhlcnMgaGF0aCBnaXZlbiB5b3U/CkdpdmUgb3V0IGZyb20gYW1vbmcgeW91IHRocmVlIG1lbiBmb3IgZWFjaCB0cmliZTogYW5kIEkgd2lsbCBzZW5kIHRoZW0sIGFuZCB0aGV5IHNoYWxsIHJpc2UsIGFuZCBnbyB0aHJvdWdoIHRoZSBsYW5kLCBhbmQgZGVzY3JpYmUgaXQgYWNjb3JkaW5nIHRvIHRoZSBpbmhlcml0YW5jZSBvZiB0aGVtOyBhbmQgdGhleSBzaGFsbCBjb21lIGFnYWluIHRvIG1lLgpBbmQgdGhleSBzaGFsbCBkaXZpZGUgaXQgaW50byBzZXZlbiBwYXJ0czogSnVkYWggc2hhbGwgYWJpZGUgaW4gdGhlaXIgY29hc3Qgb24gdGhlIHNvdXRoLCBhbmQgdGhlIGhvdXNlIG9mIEpvc2VwaCBzaGFsbCBhYmlkZSBpbiB0aGVpciBjb2FzdHMgb24gdGhlIG5vcnRoLgpZZSBzaGFsbCB0aGVyZWZvcmUgZGVzY3JpYmUgdGhlIGxhbmQgaW50byBzZXZlbiBwYXJ0cywgYW5kIGJyaW5nIHRoZSBkZXNjcmlwdGlvbiBoaXRoZXIgdG8gbWUsIHRoYXQgSSBtYXkgY2FzdCBsb3RzIGZvciB5b3UgaGVyZSBiZWZvcmUgdGhlIExPUkQgb3VyIEdvZC4KQnV0IHRoZSBMZXZpdGVzIGhhdmUgbm8gcGFydCBhbW9uZyB5b3U7IGZvciB0aGUgcHJpZXN0aG9vZCBvZiB0aGUgTE9SRCBpcyB0aGVpciBpbmhlcml0YW5jZTogYW5kIEdhZCwgYW5kIFJldWJlbiwgYW5kIGhhbGYgdGhlIHRyaWJlIG9mIE1hbmFzc2VoLCBoYXZlIHJlY2VpdmVkIHRoZWlyIGluaGVyaXRhbmNlIGJleW9uZCBKb3JkYW4gb24gdGhlIGVhc3QsIHdoaWNoIE1vc2VzIHRoZSBzZXJ2YW50IG9mIHRoZSBMT1JEIGdhdmUgdGhlbS4KQW5kIHRoZSBtZW4gYXJvc2UsIGFuZCB3ZW50IGF3YXk6IGFuZCBKb3NodWEgY2hhcmdlZCB0aGVtIHRoYXQgd2VudCB0byBkZXNjcmliZSB0aGUgbGFuZCwgc2F5aW5nLCBHbyBhbmQgd2FsayB0aHJvdWdoIHRoZSBsYW5kLCBhbmQgZGVzY3JpYmUgaXQsIGFuZCBjb21lIGFnYWluIHRvIG1lLCB0aGF0IEkgbWF5IGhlcmUgY2FzdCBsb3RzIGZvciB5b3UgYmVmb3JlIHRoZSBMT1JEIGluIFNoaWxvaC4KQW5kIHRoZSBtZW4gd2VudCBhbmQgcGFzc2VkIHRocm91Z2ggdGhlIGxhbmQsIGFuZCBkZXNjcmliZWQgaXQgYnkgY2l0aWVzIGludG8gc2V2ZW4gcGFydHMgaW4gYSBib29rLCBhbmQgY2FtZSBhZ2FpbiB0byBKb3NodWEgdG8gdGhlIGhvc3QgYXQgU2hpbG9oLgpBbmQgSm9zaHVhIGNhc3QgbG90cyBmb3IgdGhlbSBpbiBTaGlsb2ggYmVmb3JlIHRoZSBMT1JEOiBhbmQgdGhlcmUgSm9zaHVhIGRpdmlkZWQgdGhlIGxhbmQgdW50byB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGFjY29yZGluZyB0byB0aGVpciBkaXZpc2lvbnMuCkFuZCB0aGUgbG90IG9mIHRoZSB0cmliZSBvZiB0aGUgY2hpbGRyZW4gb2YgQmVuamFtaW4gY2FtZSB1cCBhY2NvcmRpbmcgdG8gdGhlaXIgZmFtaWxpZXM6IGFuZCB0aGUgY29hc3Qgb2YgdGhlaXIgbG90IGNhbWUgZm9ydGggYmV0d2VlbiB0aGUgY2hpbGRyZW4gb2YgSnVkYWggYW5kIHRoZSBjaGlsZHJlbiBvZiBKb3NlcGguCkFuZCB0aGVpciBib3JkZXIgb24gdGhlIG5vcnRoIHNpZGUgd2FzIGZyb20gSm9yZGFuOyBhbmQgdGhlIGJvcmRlciB3ZW50IHVwIHRvIHRoZSBzaWRlIG9mIEplcmljaG8gb24gdGhlIG5vcnRoIHNpZGUsIGFuZCB3ZW50IHVwIHRocm91Z2ggdGhlIG1vdW50YWlucyB3ZXN0d2FyZDsgYW5kIHRoZSBnb2luZ3Mgb3V0IHRoZXJlb2Ygd2VyZSBhdCB0aGUgd2lsZGVybmVzcyBvZiBCZXRoYXZlbi4KQW5kIHRoZSBib3JkZXIgd2VudCBvdmVyIGZyb20gdGhlbmNlIHRvd2FyZCBMdXosIHRvIHRoZSBzaWRlIG9mIEx1eiwgd2hpY2ggaXMgQmV0aGVsLCBzb3V0aHdhcmQ7IGFuZCB0aGUgYm9yZGVyIGRlc2NlbmRlZCB0byBBdGFyb3RoYWRhciwgbmVhciB0aGUgaGlsbCB0aGF0IGxpZXRoIG9uIHRoZSBzb3V0aCBzaWRlIG9mIHRoZSBuZXRoZXIgQmV0aGhvcm9uLgpBbmQgdGhlIGJvcmRlciB3YXMgZHJhd24gdGhlbmNlLCBhbmQgY29tcGFzc2VkIHRoZSBjb3JuZXIgb2YgdGhlIHNlYSBzb3V0aHdhcmQsIGZyb20gdGhlIGhpbGwgdGhhdCBsaWV0aCBiZWZvcmUgQmV0aGhvcm9uIHNvdXRod2FyZDsgYW5kIHRoZSBnb2luZ3Mgb3V0IHRoZXJlb2Ygd2VyZSBhdCBLaXJqYXRoYmFhbCwgd2hpY2ggaXMgS2lyamF0aGplYXJpbSwgYSBjaXR5IG9mIHRoZSBjaGlsZHJlbiBvZiBKdWRhaDogdGhpcyB3YXMgdGhlIHdlc3QgcXVhcnRlci4KQW5kIHRoZSBzb3V0aCBxdWFydGVyIHdhcyBmcm9tIHRoZSBlbmQgb2YgS2lyamF0aGplYXJpbSwgYW5kIHRoZSBib3JkZXIgd2VudCBvdXQgb24gdGhlIHdlc3QsIGFuZCB3ZW50IG91dCB0byB0aGUgd2VsbCBvZiB3YXRlcnMgb2YgTmVwaHRvYWg6CkFuZCB0aGUgYm9yZGVyIGNhbWUgZG93biB0byB0aGUgZW5kIG9mIHRoZSBtb3VudGFpbiB0aGF0IGxpZXRoIGJlZm9yZSB0aGUgdmFsbGV5IG9mIHRoZSBzb24gb2YgSGlubm9tLCBhbmQgd2hpY2ggaXMgaW4gdGhlIHZhbGxleSBvZiB0aGUgZ2lhbnRzIG9uIHRoZSBub3J0aCwgYW5kIGRlc2NlbmRlZCB0byB0aGUgdmFsbGV5IG9mIEhpbm5vbSwgdG8gdGhlIHNpZGUgb2YgSmVidXNpIG9uIHRoZSBzb3V0aCwgYW5kIGRlc2NlbmRlZCB0byBFbnJvZ2VsLApBbmQgd2FzIGRyYXduIGZyb20gdGhlIG5vcnRoLCBhbmQgd2VudCBmb3J0aCB0byBFbnNoZW1lc2gsIGFuZCB3ZW50IGZvcnRoIHRvd2FyZCBHZWxpbG90aCwgd2hpY2ggaXMgb3ZlciBhZ2FpbnN0IHRoZSBnb2luZyB1cCBvZiBBZHVtbWltLCBhbmQgZGVzY2VuZGVkIHRvIHRoZSBzdG9uZSBvZiBCb2hhbiB0aGUgc29uIG9mIFJldWJlbiwKQW5kIHBhc3NlZCBhbG9uZyB0b3dhcmQgdGhlIHNpZGUgb3ZlciBhZ2FpbnN0IEFyYWJhaCBub3J0aHdhcmQsIGFuZCB3ZW50IGRvd24gdW50byBBcmFiYWg6CkFuZCB0aGUgYm9yZGVyIHBhc3NlZCBhbG9uZyB0byB0aGUgc2lkZSBvZiBCZXRoaG9nbGFoIG5vcnRod2FyZDogYW5kIHRoZSBvdXRnb2luZ3Mgb2YgdGhlIGJvcmRlciB3ZXJlIGF0IHRoZSBub3J0aCBiYXkgb2YgdGhlIHNhbHQgc2VhIGF0IHRoZSBzb3V0aCBlbmQgb2YgSm9yZGFuOiB0aGlzIHdhcyB0aGUgc291dGggY29hc3QuCkFuZCBKb3JkYW4gd2FzIHRoZSBib3JkZXIgb2YgaXQgb24gdGhlIGVhc3Qgc2lkZS4gVGhpcyB3YXMgdGhlIGluaGVyaXRhbmNlIG9mIHRoZSBjaGlsZHJlbiBvZiBCZW5qYW1pbiwgYnkgdGhlIGNvYXN0cyB0aGVyZW9mIHJvdW5kIGFib3V0LCBhY2NvcmRpbmcgdG8gdGhlaXIgZmFtaWxpZXMuCk5vdyB0aGUgY2l0aWVzIG9mIHRoZSB0cmliZSBvZiB0aGUgY2hpbGRyZW4gb2YgQmVuamFtaW4gYWNjb3JkaW5nIHRvIHRoZWlyIGZhbWlsaWVzIHdlcmUgSmVyaWNobywgYW5kIEJldGhob2dsYWgsIGFuZCB0aGUgdmFsbGV5IG9mIEtleml6LApBbmQgQmV0aGFyYWJhaCwgYW5kIFplbWFyYWltLCBhbmQgQmV0aGVsLApBbmQgQXZpbSwgYW5kIFBoYXJhaCwgYW5kIE9waHJhaCwKQW5kIENoZXBoYXJoYWFtbW9uYWksIGFuZCBPcGhuaSwgYW5kIEdhYmE7IHR3ZWx2ZSBjaXRpZXMgd2l0aCB0aGVpciB2aWxsYWdlczoKR2liZW9uLCBhbmQgUmFtYWgsIGFuZCBCZWVyb3RoLApBbmQgTWl6cGVoLCBhbmQgQ2hlcGhpcmFoLCBhbmQgTW96YWgsCkFuZCBSZWtlbSwgYW5kIElycGVlbCwgYW5kIFRhcmFsYWgsCkFuZCBaZWxhaCwgRWxlcGgsIGFuZCBKZWJ1c2ksIHdoaWNoIGlzIEplcnVzYWxlbSwgR2liZWF0aCwgYW5kIEtpcmphdGg7IGZvdXJ0ZWVuIGNpdGllcyB3aXRoIHRoZWlyIHZpbGxhZ2VzLiBUaGlzIGlzIHRoZSBpbmhlcml0YW5jZSBvZiB0aGUgY2hpbGRyZW4gb2YgQmVuamFtaW4gYWNjb3JkaW5nIHRvIHRoZWlyIGZhbWlsaWVzLgpBbmQgdGhlIHNlY29uZCBsb3QgY2FtZSBmb3J0aCB0byBTaW1lb24sIGV2ZW4gZm9yIHRoZSB0cmliZSBvZiB0aGUgY2hpbGRyZW4gb2YgU2ltZW9uIGFjY29yZGluZyB0byB0aGVpciBmYW1pbGllczogYW5kIHRoZWlyIGluaGVyaXRhbmNlIHdhcyB3aXRoaW4gdGhlIGluaGVyaXRhbmNlIG9mIHRoZSBjaGlsZHJlbiBvZiBKdWRhaC4KQW5kIHRoZXkgaGFkIGluIHRoZWlyIGluaGVyaXRhbmNlIEJlZXJzaGViYSwgYW5kIFNoZWJhLCBhbmQgTW9sYWRhaCwKQW5kIEhhemFyc2h1YWwsIGFuZCBCYWxhaCwgYW5kIEF6ZW0sCkFuZCBFbHRvbGFkLCBhbmQgQmV0aHVsLCBhbmQgSG9ybWFoLApBbmQgWmlrbGFnLCBhbmQgQmV0aG1hcmNhYm90aCwgYW5kIEhhemFyc3VzYWgsCkFuZCBCZXRobGViYW90aCwgYW5kIFNoYXJ1aGVuOyB0aGlydGVlbiBjaXRpZXMgYW5kIHRoZWlyIHZpbGxhZ2VzOgpBaW4sIFJlbW1vbiwgYW5kIEV0aGVyLCBhbmQgQXNoYW47IGZvdXIgY2l0aWVzIGFuZCB0aGVpciB2aWxsYWdlczoKQW5kIGFsbCB0aGUgdmlsbGFnZXMgdGhhdCB3ZXJlIHJvdW5kIGFib3V0IHRoZXNlIGNpdGllcyB0byBCYWFsYXRoYmVlciwgUmFtYXRoIG9mIHRoZSBzb3V0aC4gVGhpcyBpcyB0aGUgaW5oZXJpdGFuY2Ugb2YgdGhlIHRyaWJlIG9mIHRoZSBjaGlsZHJlbiBvZiBTaW1lb24gYWNjb3JkaW5nIHRvIHRoZWlyIGZhbWlsaWVzLgpPdXQgb2YgdGhlIHBvcnRpb24gb2YgdGhlIGNoaWxkcmVuIG9mIEp1ZGFoIHdhcyB0aGUgaW5oZXJpdGFuY2Ugb2YgdGhlIGNoaWxkcmVuIG9mIFNpbWVvbjogZm9yIHRoZSBwYXJ0IG9mIHRoZSBjaGlsZHJlbiBvZiBKdWRhaCB3YXMgdG9vIG11Y2ggZm9yIHRoZW06IHRoZXJlZm9yZSB0aGUgY2hpbGRyZW4gb2YgU2ltZW9uIGhhZCB0aGVpciBpbmhlcml0YW5jZSB3aXRoaW4gdGhlIGluaGVyaXRhbmNlIG9mIHRoZW0uCkFuZCB0aGUgdGhpcmQgbG90IGNhbWUgdXAgZm9yIHRoZSBjaGlsZHJlbiBvZiBaZWJ1bHVuIGFjY29yZGluZyB0byB0aGVpciBmYW1pbGllczogYW5kIHRoZSBib3JkZXIgb2YgdGhlaXIgaW5oZXJpdGFuY2Ugd2FzIHVudG8gU2FyaWQ6CkFuZCB0aGVpciBib3JkZXIgd2VudCB1cCB0b3dhcmQgdGhlIHNlYSwgYW5kIE1hcmFsYWgsIGFuZCByZWFjaGVkIHRvIERhYmJhc2hldGgsIGFuZCByZWFjaGVkIHRvIHRoZSByaXZlciB0aGF0IGlzIGJlZm9yZSBKb2tuZWFtOwpBbmQgdHVybmVkIGZyb20gU2FyaWQgZWFzdHdhcmQgdG93YXJkIHRoZSBzdW5yaXNpbmcgdW50byB0aGUgYm9yZGVyIG9mIENoaXNsb3RodGFib3IsIGFuZCB0aGVuIGdvZXRoIG91dCB0byBEYWJlcmF0aCwgYW5kIGdvZXRoIHVwIHRvIEphcGhpYSwKQW5kIGZyb20gdGhlbmNlIHBhc3NldGggb24gYWxvbmcgb24gdGhlIGVhc3QgdG8gR2l0dGFoaGVwaGVyLCB0byBJdHRhaGthemluLCBhbmQgZ29ldGggb3V0IHRvIFJlbW1vbm1ldGhvYXIgdG8gTmVhaDsKQW5kIHRoZSBib3JkZXIgY29tcGFzc2V0aCBpdCBvbiB0aGUgbm9ydGggc2lkZSB0byBIYW5uYXRob246IGFuZCB0aGUgb3V0Z29pbmdzIHRoZXJlb2YgYXJlIGluIHRoZSB2YWxsZXkgb2YgSmlwaHRoYWhlbDoKQW5kIEthdHRhdGgsIGFuZCBOYWhhbGxhbCwgYW5kIFNoaW1yb24sIGFuZCBJZGFsYWgsIGFuZCBCZXRobGVoZW06IHR3ZWx2ZSBjaXRpZXMgd2l0aCB0aGVpciB2aWxsYWdlcy4KVGhpcyBpcyB0aGUgaW5oZXJpdGFuY2Ugb2YgdGhlIGNoaWxkcmVuIG9mIFplYnVsdW4gYWNjb3JkaW5nIHRvIHRoZWlyIGZhbWlsaWVzLCB0aGVzZSBjaXRpZXMgd2l0aCB0aGVpciB2aWxsYWdlcy4KQW5kIHRoZSBmb3VydGggbG90IGNhbWUgb3V0IHRvIElzc2FjaGFyLCBmb3IgdGhlIGNoaWxkcmVuIG9mIElzc2FjaGFyIGFjY29yZGluZyB0byB0aGVpciBmYW1pbGllcy4KQW5kIHRoZWlyIGJvcmRlciB3YXMgdG93YXJkIEplenJlZWwsIGFuZCBDaGVzdWxsb3RoLCBhbmQgU2h1bmVtLApBbmQgSGFwaHJhaW0sIGFuZCBTaGlob24sIGFuZCBBbmFoYXJhdGgsCkFuZCBSYWJiaXRoLCBhbmQgS2lzaGlvbiwgYW5kIEFiZXosCkFuZCBSZW1ldGgsIGFuZCBFbmdhbm5pbSwgYW5kIEVuaGFkZGFoLCBhbmQgQmV0aHBhenplejsKQW5kIHRoZSBjb2FzdCByZWFjaGV0aCB0byBUYWJvciwgYW5kIFNoYWhhemltYWgsIGFuZCBCZXRoc2hlbWVzaDsgYW5kIHRoZSBvdXRnb2luZ3Mgb2YgdGhlaXIgYm9yZGVyIHdlcmUgYXQgSm9yZGFuOiBzaXh0ZWVuIGNpdGllcyB3aXRoIHRoZWlyIHZpbGxhZ2VzLgpUaGlzIGlzIHRoZSBpbmhlcml0YW5jZSBvZiB0aGUgdHJpYmUgb2YgdGhlIGNoaWxkcmVuIG9mIElzc2FjaGFyIGFjY29yZGluZyB0byB0aGVpciBmYW1pbGllcywgdGhlIGNpdGllcyBhbmQgdGhlaXIgdmlsbGFnZXMuCkFuZCB0aGUgZmlmdGggbG90IGNhbWUgb3V0IGZvciB0aGUgdHJpYmUgb2YgdGhlIGNoaWxkcmVuIG9mIEFzaGVyIGFjY29yZGluZyB0byB0aGVpciBmYW1pbGllcy4KQW5kIHRoZWlyIGJvcmRlciB3YXMgSGVsa2F0aCwgYW5kIEhhbGksIGFuZCBCZXRlbiwgYW5kIEFjaHNoYXBoLApBbmQgQWxhbW1lbGVjaCwgYW5kIEFtYWQsIGFuZCBNaXNoZWFsOyBhbmQgcmVhY2hldGggdG8gQ2FybWVsIHdlc3R3YXJkLCBhbmQgdG8gU2hpaG9ybGlibmF0aDsKQW5kIHR1cm5ldGggdG93YXJkIHRoZSBzdW5yaXNpbmcgdG8gQmV0aGRhZ29uLCBhbmQgcmVhY2hldGggdG8gWmVidWx1biwgYW5kIHRvIHRoZSB2YWxsZXkgb2YgSmlwaHRoYWhlbCB0b3dhcmQgdGhlIG5vcnRoIHNpZGUgb2YgQmV0aGVtZWssIGFuZCBOZWllbCwgYW5kIGdvZXRoIG91dCB0byBDYWJ1bCBvbiB0aGUgbGVmdCBoYW5kLApBbmQgSGVicm9uLCBhbmQgUmVob2IsIGFuZCBIYW1tb24sIGFuZCBLYW5haCwgZXZlbiB1bnRvIGdyZWF0IFppZG9uOwpBbmQgdGhlbiB0aGUgY29hc3QgdHVybmV0aCB0byBSYW1haCwgYW5kIHRvIHRoZSBzdHJvbmcgY2l0eSBUeXJlOyBhbmQgdGhlIGNvYXN0IHR1cm5ldGggdG8gSG9zYWg7IGFuZCB0aGUgb3V0Z29pbmdzIHRoZXJlb2YgYXJlIGF0IHRoZSBzZWEgZnJvbSB0aGUgY29hc3QgdG8gQWNoemliOgpVbW1haCBhbHNvLCBhbmQgQXBoZWssIGFuZCBSZWhvYjogdHdlbnR5IGFuZCB0d28gY2l0aWVzIHdpdGggdGhlaXIgdmlsbGFnZXMuClRoaXMgaXMgdGhlIGluaGVyaXRhbmNlIG9mIHRoZSB0cmliZSBvZiB0aGUgY2hpbGRyZW4gb2YgQXNoZXIgYWNjb3JkaW5nIHRvIHRoZWlyIGZhbWlsaWVzLCB0aGVzZSBjaXRpZXMgd2l0aCB0aGVpciB2aWxsYWdlcy4KVGhlIHNpeHRoIGxvdCBjYW1lIG91dCB0byB0aGUgY2hpbGRyZW4gb2YgTmFwaHRhbGksIGV2ZW4gZm9yIHRoZSBjaGlsZHJlbiBvZiBOYXBodGFsaSBhY2NvcmRpbmcgdG8gdGhlaXIgZmFtaWxpZXMuCkFuZCB0aGVpciBjb2FzdCB3YXMgZnJvbSBIZWxlcGgsIGZyb20gQWxsb24gdG8gWmFhbmFubmltLCBhbmQgQWRhbWksIE5la2ViLCBhbmQgSmFibmVlbCwgdW50byBMYWt1bTsgYW5kIHRoZSBvdXRnb2luZ3MgdGhlcmVvZiB3ZXJlIGF0IEpvcmRhbjoKQW5kIHRoZW4gdGhlIGNvYXN0IHR1cm5ldGggd2VzdHdhcmQgdG8gQXpub3RodGFib3IsIGFuZCBnb2V0aCBvdXQgZnJvbSB0aGVuY2UgdG8gSHVra29rLCBhbmQgcmVhY2hldGggdG8gWmVidWx1biBvbiB0aGUgc291dGggc2lkZSwgYW5kIHJlYWNoZXRoIHRvIEFzaGVyIG9uIHRoZSB3ZXN0IHNpZGUsIGFuZCB0byBKdWRhaCB1cG9uIEpvcmRhbiB0b3dhcmQgdGhlIHN1bnJpc2luZy4KQW5kIHRoZSBmZW5jZWQgY2l0aWVzIGFyZSBaaWRkaW0sIFplciwgYW5kIEhhbW1hdGgsIFJha2thdGgsIGFuZCBDaGlubmVyZXRoLApBbmQgQWRhbWFoLCBhbmQgUmFtYWgsIGFuZCBIYXpvciwKQW5kIEtlZGVzaCwgYW5kIEVkcmVpLCBhbmQgRW5oYXpvciwKQW5kIElyb24sIGFuZCBNaWdkYWxlbCwgSG9yZW0sIGFuZCBCZXRoYW5hdGgsIGFuZCBCZXRoc2hlbWVzaDsgbmluZXRlZW4gY2l0aWVzIHdpdGggdGhlaXIgdmlsbGFnZXMuClRoaXMgaXMgdGhlIGluaGVyaXRhbmNlIG9mIHRoZSB0cmliZSBvZiB0aGUgY2hpbGRyZW4gb2YgTmFwaHRhbGkgYWNjb3JkaW5nIHRvIHRoZWlyIGZhbWlsaWVzLCB0aGUgY2l0aWVzIGFuZCB0aGVpciB2aWxsYWdlcy4KQW5kIHRoZSBzZXZlbnRoIGxvdCBjYW1lIG91dCBmb3IgdGhlIHRyaWJlIG9mIHRoZSBjaGlsZHJlbiBvZiBEYW4gYWNjb3JkaW5nIHRvIHRoZWlyIGZhbWlsaWVzLgpBbmQgdGhlIGNvYXN0IG9mIHRoZWlyIGluaGVyaXRhbmNlIHdhcyBab3JhaCwgYW5kIEVzaHRhb2wsIGFuZCBJcnNoZW1lc2gsCkFuZCBTaGFhbGFiYmluLCBhbmQgQWphbG9uLCBhbmQgSmV0aGxhaCwKQW5kIEVsb24sIGFuZCBUaGltbmF0aGFoLCBhbmQgRWtyb24sCkFuZCBFbHRla2VoLCBhbmQgR2liYmV0aG9uLCBhbmQgQmFhbGF0aCwKQW5kIEplaHVkLCBhbmQgQmVuZWJlcmFrLCBhbmQgR2F0aHJpbW1vbiwKQW5kIE1lamFya29uLCBhbmQgUmFra29uLCB3aXRoIHRoZSBib3JkZXIgYmVmb3JlIEphcGhvLgpBbmQgdGhlIGNvYXN0IG9mIHRoZSBjaGlsZHJlbiBvZiBEYW4gd2VudCBvdXQgdG9vIGxpdHRsZSBmb3IgdGhlbTogdGhlcmVmb3JlIHRoZSBjaGlsZHJlbiBvZiBEYW4gd2VudCB1cCB0byBmaWdodCBhZ2FpbnN0IExlc2hlbSwgYW5kIHRvb2sgaXQsIGFuZCBzbW90ZSBpdCB3aXRoIHRoZSBlZGdlIG9mIHRoZSBzd29yZCwgYW5kIHBvc3Nlc3NlZCBpdCwgYW5kIGR3ZWx0IHRoZXJlaW4sIGFuZCBjYWxsZWQgTGVzaGVtLCBEYW4sIGFmdGVyIHRoZSBuYW1lIG9mIERhbiB0aGVpciBmYXRoZXIuClRoaXMgaXMgdGhlIGluaGVyaXRhbmNlIG9mIHRoZSB0cmliZSBvZiB0aGUgY2hpbGRyZW4gb2YgRGFuIGFjY29yZGluZyB0byB0aGVpciBmYW1pbGllcywgdGhlc2UgY2l0aWVzIHdpdGggdGhlaXIgdmlsbGFnZXMuCldoZW4gdGhleSBoYWQgbWFkZSBhbiBlbmQgb2YgZGl2aWRpbmcgdGhlIGxhbmQgZm9yIGluaGVyaXRhbmNlIGJ5IHRoZWlyIGNvYXN0cywgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBnYXZlIGFuIGluaGVyaXRhbmNlIHRvIEpvc2h1YSB0aGUgc29uIG9mIE51biBhbW9uZyB0aGVtOgpBY2NvcmRpbmcgdG8gdGhlIHdvcmQgb2YgdGhlIExPUkQgdGhleSBnYXZlIGhpbSB0aGUgY2l0eSB3aGljaCBoZSBhc2tlZCwgZXZlbiBUaW1uYXRoc2VyYWggaW4gbW91bnQgRXBocmFpbTogYW5kIGhlIGJ1aWx0IHRoZSBjaXR5LCBhbmQgZHdlbHQgdGhlcmVpbi4KVGhlc2UgYXJlIHRoZSBpbmhlcml0YW5jZXMsIHdoaWNoIEVsZWF6YXIgdGhlIHByaWVzdCwgYW5kIEpvc2h1YSB0aGUgc29uIG9mIE51biwgYW5kIHRoZSBoZWFkcyBvZiB0aGUgZmF0aGVycyBvZiB0aGUgdHJpYmVzIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIGRpdmlkZWQgZm9yIGFuIGluaGVyaXRhbmNlIGJ5IGxvdCBpbiBTaGlsb2ggYmVmb3JlIHRoZSBMT1JELCBhdCB0aGUgZG9vciBvZiB0aGUgdGFiZXJuYWNsZSBvZiB0aGUgY29uZ3JlZ2F0aW9uLiBTbyB0aGV5IG1hZGUgYW4gZW5kIG9mIGRpdmlkaW5nIHRoZSBjb3VudHJ5LgpUaGUgTE9SRCBhbHNvIHNwYWtlIHVudG8gSm9zaHVhLCBzYXlpbmcsClNwZWFrIHRvIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIHNheWluZywgQXBwb2ludCBvdXQgZm9yIHlvdSBjaXRpZXMgb2YgcmVmdWdlLCB3aGVyZW9mIEkgc3Bha2UgdW50byB5b3UgYnkgdGhlIGhhbmQgb2YgTW9zZXM6ClRoYXQgdGhlIHNsYXllciB0aGF0IGtpbGxldGggYW55IHBlcnNvbiB1bmF3YXJlcyBhbmQgdW53aXR0aW5nbHkgbWF5IGZsZWUgdGhpdGhlcjogYW5kIHRoZXkgc2hhbGwgYmUgeW91ciByZWZ1Z2UgZnJvbSB0aGUgYXZlbmdlciBvZiBibG9vZC4KQW5kIHdoZW4gaGUgdGhhdCBkb3RoIGZsZWUgdW50byBvbmUgb2YgdGhvc2UgY2l0aWVzIHNoYWxsIHN0YW5kIGF0IHRoZSBlbnRlcmluZyBvZiB0aGUgZ2F0ZSBvZiB0aGUgY2l0eSwgYW5kIHNoYWxsIGRlY2xhcmUgaGlzIGNhdXNlIGluIHRoZSBlYXJzIG9mIHRoZSBlbGRlcnMgb2YgdGhhdCBjaXR5LCB0aGV5IHNoYWxsIHRha2UgaGltIGludG8gdGhlIGNpdHkgdW50byB0aGVtLCBhbmQgZ2l2ZSBoaW0gYSBwbGFjZSwgdGhhdCBoZSBtYXkgZHdlbGwgYW1vbmcgdGhlbS4KQW5kIGlmIHRoZSBhdmVuZ2VyIG9mIGJsb29kIHB1cnN1ZSBhZnRlciBoaW0sIHRoZW4gdGhleSBzaGFsbCBub3QgZGVsaXZlciB0aGUgc2xheWVyIHVwIGludG8gaGlzIGhhbmQ7IGJlY2F1c2UgaGUgc21vdGUgaGlzIG5laWdoYm91ciB1bndpdHRpbmdseSwgYW5kIGhhdGVkIGhpbSBub3QgYmVmb3JldGltZS4KQW5kIGhlIHNoYWxsIGR3ZWxsIGluIHRoYXQgY2l0eSwgdW50aWwgaGUgc3RhbmQgYmVmb3JlIHRoZSBjb25ncmVnYXRpb24gZm9yIGp1ZGdtZW50LCBhbmQgdW50aWwgdGhlIGRlYXRoIG9mIHRoZSBoaWdoIHByaWVzdCB0aGF0IHNoYWxsIGJlIGluIHRob3NlIGRheXM6IHRoZW4gc2hhbGwgdGhlIHNsYXllciByZXR1cm4sIGFuZCBjb21lIHVudG8gaGlzIG93biBjaXR5LCBhbmQgdW50byBoaXMgb3duIGhvdXNlLCB1bnRvIHRoZSBjaXR5IGZyb20gd2hlbmNlIGhlIGZsZWQuCkFuZCB0aGV5IGFwcG9pbnRlZCBLZWRlc2ggaW4gR2FsaWxlZSBpbiBtb3VudCBOYXBodGFsaSwgYW5kIFNoZWNoZW0gaW4gbW91bnQgRXBocmFpbSwgYW5kIEtpcmphdGhhcmJhLCB3aGljaCBpcyBIZWJyb24sIGluIHRoZSBtb3VudGFpbiBvZiBKdWRhaC4KQW5kIG9uIHRoZSBvdGhlciBzaWRlIEpvcmRhbiBieSBKZXJpY2hvIGVhc3R3YXJkLCB0aGV5IGFzc2lnbmVkIEJlemVyIGluIHRoZSB3aWxkZXJuZXNzIHVwb24gdGhlIHBsYWluIG91dCBvZiB0aGUgdHJpYmUgb2YgUmV1YmVuLCBhbmQgUmFtb3RoIGluIEdpbGVhZCBvdXQgb2YgdGhlIHRyaWJlIG9mIEdhZCwgYW5kIEdvbGFuIGluIEJhc2hhbiBvdXQgb2YgdGhlIHRyaWJlIG9mIE1hbmFzc2VoLgpUaGVzZSB3ZXJlIHRoZSBjaXRpZXMgYXBwb2ludGVkIGZvciBhbGwgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgYW5kIGZvciB0aGUgc3RyYW5nZXIgdGhhdCBzb2pvdXJuZXRoIGFtb25nIHRoZW0sIHRoYXQgd2hvc29ldmVyIGtpbGxldGggYW55IHBlcnNvbiBhdCB1bmF3YXJlcyBtaWdodCBmbGVlIHRoaXRoZXIsIGFuZCBub3QgZGllIGJ5IHRoZSBoYW5kIG9mIHRoZSBhdmVuZ2VyIG9mIGJsb29kLCB1bnRpbCBoZSBzdG9vZCBiZWZvcmUgdGhlIGNvbmdyZWdhdGlvbi4KVGhlbiBjYW1lIG5lYXIgdGhlIGhlYWRzIG9mIHRoZSBmYXRoZXJzIG9mIHRoZSBMZXZpdGVzIHVudG8gRWxlYXphciB0aGUgcHJpZXN0LCBhbmQgdW50byBKb3NodWEgdGhlIHNvbiBvZiBOdW4sIGFuZCB1bnRvIHRoZSBoZWFkcyBvZiB0aGUgZmF0aGVycyBvZiB0aGUgdHJpYmVzIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWw7CkFuZCB0aGV5IHNwYWtlIHVudG8gdGhlbSBhdCBTaGlsb2ggaW4gdGhlIGxhbmQgb2YgQ2FuYWFuLCBzYXlpbmcsIFRoZSBMT1JEIGNvbW1hbmRlZCBieSB0aGUgaGFuZCBvZiBNb3NlcyB0byBnaXZlIHVzIGNpdGllcyB0byBkd2VsbCBpbiwgd2l0aCB0aGUgc3VidXJicyB0aGVyZW9mIGZvciBvdXIgY2F0dGxlLgpBbmQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBnYXZlIHVudG8gdGhlIExldml0ZXMgb3V0IG9mIHRoZWlyIGluaGVyaXRhbmNlLCBhdCB0aGUgY29tbWFuZG1lbnQgb2YgdGhlIExPUkQsIHRoZXNlIGNpdGllcyBhbmQgdGhlaXIgc3VidXJicy4KQW5kIHRoZSBsb3QgY2FtZSBvdXQgZm9yIHRoZSBmYW1pbGllcyBvZiB0aGUgS29oYXRoaXRlczogYW5kIHRoZSBjaGlsZHJlbiBvZiBBYXJvbiB0aGUgcHJpZXN0LCB3aGljaCB3ZXJlIG9mIHRoZSBMZXZpdGVzLCBoYWQgYnkgbG90IG91dCBvZiB0aGUgdHJpYmUgb2YgSnVkYWgsIGFuZCBvdXQgb2YgdGhlIHRyaWJlIG9mIFNpbWVvbiwgYW5kIG91dCBvZiB0aGUgdHJpYmUgb2YgQmVuamFtaW4sIHRoaXJ0ZWVuIGNpdGllcy4KQW5kIHRoZSByZXN0IG9mIHRoZSBjaGlsZHJlbiBvZiBLb2hhdGggaGFkIGJ5IGxvdCBvdXQgb2YgdGhlIGZhbWlsaWVzIG9mIHRoZSB0cmliZSBvZiBFcGhyYWltLCBhbmQgb3V0IG9mIHRoZSB0cmliZSBvZiBEYW4sIGFuZCBvdXQgb2YgdGhlIGhhbGYgdHJpYmUgb2YgTWFuYXNzZWgsIHRlbiBjaXRpZXMuCkFuZCB0aGUgY2hpbGRyZW4gb2YgR2Vyc2hvbiBoYWQgYnkgbG90IG91dCBvZiB0aGUgZmFtaWxpZXMgb2YgdGhlIHRyaWJlIG9mIElzc2FjaGFyLCBhbmQgb3V0IG9mIHRoZSB0cmliZSBvZiBBc2hlciwgYW5kIG91dCBvZiB0aGUgdHJpYmUgb2YgTmFwaHRhbGksIGFuZCBvdXQgb2YgdGhlIGhhbGYgdHJpYmUgb2YgTWFuYXNzZWggaW4gQmFzaGFuLCB0aGlydGVlbiBjaXRpZXMuClRoZSBjaGlsZHJlbiBvZiBNZXJhcmkgYnkgdGhlaXIgZmFtaWxpZXMgaGFkIG91dCBvZiB0aGUgdHJpYmUgb2YgUmV1YmVuLCBhbmQgb3V0IG9mIHRoZSB0cmliZSBvZiBHYWQsIGFuZCBvdXQgb2YgdGhlIHRyaWJlIG9mIFplYnVsdW4sIHR3ZWx2ZSBjaXRpZXMuCkFuZCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGdhdmUgYnkgbG90IHVudG8gdGhlIExldml0ZXMgdGhlc2UgY2l0aWVzIHdpdGggdGhlaXIgc3VidXJicywgYXMgdGhlIExPUkQgY29tbWFuZGVkIGJ5IHRoZSBoYW5kIG9mIE1vc2VzLgpBbmQgdGhleSBnYXZlIG91dCBvZiB0aGUgdHJpYmUgb2YgdGhlIGNoaWxkcmVuIG9mIEp1ZGFoLCBhbmQgb3V0IG9mIHRoZSB0cmliZSBvZiB0aGUgY2hpbGRyZW4gb2YgU2ltZW9uLCB0aGVzZSBjaXRpZXMgd2hpY2ggYXJlIGhlcmUgbWVudGlvbmVkIGJ5IG5hbWUuCldoaWNoIHRoZSBjaGlsZHJlbiBvZiBBYXJvbiwgYmVpbmcgb2YgdGhlIGZhbWlsaWVzIG9mIHRoZSBLb2hhdGhpdGVzLCB3aG8gd2VyZSBvZiB0aGUgY2hpbGRyZW4gb2YgTGV2aSwgaGFkOiBmb3IgdGhlaXJzIHdhcyB0aGUgZmlyc3QgbG90LgpBbmQgdGhleSBnYXZlIHRoZW0gdGhlIGNpdHkgb2YgQXJiYSB0aGUgZmF0aGVyIG9mIEFuYWssIHdoaWNoIGNpdHkgaXMgSGVicm9uLCBpbiB0aGUgaGlsbCBjb3VudHJ5IG9mIEp1ZGFoLCB3aXRoIHRoZSBzdWJ1cmJzIHRoZXJlb2Ygcm91bmQgYWJvdXQgaXQuCkJ1dCB0aGUgZmllbGRzIG9mIHRoZSBjaXR5LCBhbmQgdGhlIHZpbGxhZ2VzIHRoZXJlb2YsIGdhdmUgdGhleSB0byBDYWxlYiB0aGUgc29uIG9mIEplcGh1bm5laCBmb3IgaGlzIHBvc3Nlc3Npb24uClRodXMgdGhleSBnYXZlIHRvIHRoZSBjaGlsZHJlbiBvZiBBYXJvbiB0aGUgcHJpZXN0IEhlYnJvbiB3aXRoIGhlciBzdWJ1cmJzLCB0byBiZSBhIGNpdHkgb2YgcmVmdWdlIGZvciB0aGUgc2xheWVyOyBhbmQgTGlibmFoIHdpdGggaGVyIHN1YnVyYnMsCkFuZCBKYXR0aXIgd2l0aCBoZXIgc3VidXJicywgYW5kIEVzaHRlbW9hIHdpdGggaGVyIHN1YnVyYnMsCkFuZCBIb2xvbiB3aXRoIGhlciBzdWJ1cmJzLCBhbmQgRGViaXIgd2l0aCBoZXIgc3VidXJicywKQW5kIEFpbiB3aXRoIGhlciBzdWJ1cmJzLCBhbmQgSnV0dGFoIHdpdGggaGVyIHN1YnVyYnMsIGFuZCBCZXRoc2hlbWVzaCB3aXRoIGhlciBzdWJ1cmJzOyBuaW5lIGNpdGllcyBvdXQgb2YgdGhvc2UgdHdvIHRyaWJlcy4KQW5kIG91dCBvZiB0aGUgdHJpYmUgb2YgQmVuamFtaW4sIEdpYmVvbiB3aXRoIGhlciBzdWJ1cmJzLCBHZWJhIHdpdGggaGVyIHN1YnVyYnMsCkFuYXRob3RoIHdpdGggaGVyIHN1YnVyYnMsIGFuZCBBbG1vbiB3aXRoIGhlciBzdWJ1cmJzOyBmb3VyIGNpdGllcy4KQWxsIHRoZSBjaXRpZXMgb2YgdGhlIGNoaWxkcmVuIG9mIEFhcm9uLCB0aGUgcHJpZXN0cywgd2VyZSB0aGlydGVlbiBjaXRpZXMgd2l0aCB0aGVpciBzdWJ1cmJzLgpBbmQgdGhlIGZhbWlsaWVzIG9mIHRoZSBjaGlsZHJlbiBvZiBLb2hhdGgsIHRoZSBMZXZpdGVzIHdoaWNoIHJlbWFpbmVkIG9mIHRoZSBjaGlsZHJlbiBvZiBLb2hhdGgsIGV2ZW4gdGhleSBoYWQgdGhlIGNpdGllcyBvZiB0aGVpciBsb3Qgb3V0IG9mIHRoZSB0cmliZSBvZiBFcGhyYWltLgpGb3IgdGhleSBnYXZlIHRoZW0gU2hlY2hlbSB3aXRoIGhlciBzdWJ1cmJzIGluIG1vdW50IEVwaHJhaW0sIHRvIGJlIGEgY2l0eSBvZiByZWZ1Z2UgZm9yIHRoZSBzbGF5ZXI7IGFuZCBHZXplciB3aXRoIGhlciBzdWJ1cmJzLApBbmQgS2liemFpbSB3aXRoIGhlciBzdWJ1cmJzLCBhbmQgQmV0aGhvcm9uIHdpdGggaGVyIHN1YnVyYnM7IGZvdXIgY2l0aWVzLgpBbmQgb3V0IG9mIHRoZSB0cmliZSBvZiBEYW4sIEVsdGVrZWggd2l0aCBoZXIgc3VidXJicywgR2liYmV0aG9uIHdpdGggaGVyIHN1YnVyYnMsCkFpamFsb24gd2l0aCBoZXIgc3VidXJicywgR2F0aHJpbW1vbiB3aXRoIGhlciBzdWJ1cmJzOyBmb3VyIGNpdGllcy4KQW5kIG91dCBvZiB0aGUgaGFsZiB0cmliZSBvZiBNYW5hc3NlaCwgVGFuYWNoIHdpdGggaGVyIHN1YnVyYnMsIGFuZCBHYXRocmltbW9uIHdpdGggaGVyIHN1YnVyYnM7IHR3byBjaXRpZXMuCkFsbCB0aGUgY2l0aWVzIHdlcmUgdGVuIHdpdGggdGhlaXIgc3VidXJicyBmb3IgdGhlIGZhbWlsaWVzIG9mIHRoZSBjaGlsZHJlbiBvZiBLb2hhdGggdGhhdCByZW1haW5lZC4KQW5kIHVudG8gdGhlIGNoaWxkcmVuIG9mIEdlcnNob24sIG9mIHRoZSBmYW1pbGllcyBvZiB0aGUgTGV2aXRlcywgb3V0IG9mIHRoZSBvdGhlciBoYWxmIHRyaWJlIG9mIE1hbmFzc2VoIHRoZXkgZ2F2ZSBHb2xhbiBpbiBCYXNoYW4gd2l0aCBoZXIgc3VidXJicywgdG8gYmUgYSBjaXR5IG9mIHJlZnVnZSBmb3IgdGhlIHNsYXllcjsgYW5kIEJlZXNodGVyYWggd2l0aCBoZXIgc3VidXJiczsgdHdvIGNpdGllcy4KQW5kIG91dCBvZiB0aGUgdHJpYmUgb2YgSXNzYWNoYXIsIEtpc2hvbiB3aXRoIGhlciBzdWJ1cmJzLCBEYWJhcmVoIHdpdGggaGVyIHN1YnVyYnMsCkphcm11dGggd2l0aCBoZXIgc3VidXJicywgRW5nYW5uaW0gd2l0aCBoZXIgc3VidXJiczsgZm91ciBjaXRpZXMuCkFuZCBvdXQgb2YgdGhlIHRyaWJlIG9mIEFzaGVyLCBNaXNoYWwgd2l0aCBoZXIgc3VidXJicywgQWJkb24gd2l0aCBoZXIgc3VidXJicywKSGVsa2F0aCB3aXRoIGhlciBzdWJ1cmJzLCBhbmQgUmVob2Igd2l0aCBoZXIgc3VidXJiczsgZm91ciBjaXRpZXMuCkFuZCBvdXQgb2YgdGhlIHRyaWJlIG9mIE5hcGh0YWxpLCBLZWRlc2ggaW4gR2FsaWxlZSB3aXRoIGhlciBzdWJ1cmJzLCB0byBiZSBhIGNpdHkgb2YgcmVmdWdlIGZvciB0aGUgc2xheWVyOyBhbmQgSGFtbW90aGRvciB3aXRoIGhlciBzdWJ1cmJzLCBhbmQgS2FydGFuIHdpdGggaGVyIHN1YnVyYnM7IHRocmVlIGNpdGllcy4KQWxsIHRoZSBjaXRpZXMgb2YgdGhlIEdlcnNob25pdGVzIGFjY29yZGluZyB0byB0aGVpciBmYW1pbGllcyB3ZXJlIHRoaXJ0ZWVuIGNpdGllcyB3aXRoIHRoZWlyIHN1YnVyYnMuCkFuZCB1bnRvIHRoZSBmYW1pbGllcyBvZiB0aGUgY2hpbGRyZW4gb2YgTWVyYXJpLCB0aGUgcmVzdCBvZiB0aGUgTGV2aXRlcywgb3V0IG9mIHRoZSB0cmliZSBvZiBaZWJ1bHVuLCBKb2tuZWFtIHdpdGggaGVyIHN1YnVyYnMsIGFuZCBLYXJ0YWggd2l0aCBoZXIgc3VidXJicywKRGltbmFoIHdpdGggaGVyIHN1YnVyYnMsIE5haGFsYWwgd2l0aCBoZXIgc3VidXJiczsgZm91ciBjaXRpZXMuCkFuZCBvdXQgb2YgdGhlIHRyaWJlIG9mIFJldWJlbiwgQmV6ZXIgd2l0aCBoZXIgc3VidXJicywgYW5kIEphaGF6YWggd2l0aCBoZXIgc3VidXJicywKS2VkZW1vdGggd2l0aCBoZXIgc3VidXJicywgYW5kIE1lcGhhYXRoIHdpdGggaGVyIHN1YnVyYnM7IGZvdXIgY2l0aWVzLgpBbmQgb3V0IG9mIHRoZSB0cmliZSBvZiBHYWQsIFJhbW90aCBpbiBHaWxlYWQgd2l0aCBoZXIgc3VidXJicywgdG8gYmUgYSBjaXR5IG9mIHJlZnVnZSBmb3IgdGhlIHNsYXllcjsgYW5kIE1haGFuYWltIHdpdGggaGVyIHN1YnVyYnMsCkhlc2hib24gd2l0aCBoZXIgc3VidXJicywgSmF6ZXIgd2l0aCBoZXIgc3VidXJiczsgZm91ciBjaXRpZXMgaW4gYWxsLgpTbyBhbGwgdGhlIGNpdGllcyBmb3IgdGhlIGNoaWxkcmVuIG9mIE1lcmFyaSBieSB0aGVpciBmYW1pbGllcywgd2hpY2ggd2VyZSByZW1haW5pbmcgb2YgdGhlIGZhbWlsaWVzIG9mIHRoZSBMZXZpdGVzLCB3ZXJlIGJ5IHRoZWlyIGxvdCB0d2VsdmUgY2l0aWVzLgpBbGwgdGhlIGNpdGllcyBvZiB0aGUgTGV2aXRlcyB3aXRoaW4gdGhlIHBvc3Nlc3Npb24gb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCB3ZXJlIGZvcnR5IGFuZCBlaWdodCBjaXRpZXMgd2l0aCB0aGVpciBzdWJ1cmJzLgpUaGVzZSBjaXRpZXMgd2VyZSBldmVyeSBvbmUgd2l0aCB0aGVpciBzdWJ1cmJzIHJvdW5kIGFib3V0IHRoZW06IHRodXMgd2VyZSBhbGwgdGhlc2UgY2l0aWVzLgpBbmQgdGhlIExPUkQgZ2F2ZSB1bnRvIElzcmFlbCBhbGwgdGhlIGxhbmQgd2hpY2ggaGUgc3dhcmUgdG8gZ2l2ZSB1bnRvIHRoZWlyIGZhdGhlcnM7IGFuZCB0aGV5IHBvc3Nlc3NlZCBpdCwgYW5kIGR3ZWx0IHRoZXJlaW4uCkFuZCB0aGUgTE9SRCBnYXZlIHRoZW0gcmVzdCByb3VuZCBhYm91dCwgYWNjb3JkaW5nIHRvIGFsbCB0aGF0IGhlIHN3YXJlIHVudG8gdGhlaXIgZmF0aGVyczogYW5kIHRoZXJlIHN0b29kIG5vdCBhIG1hbiBvZiBhbGwgdGhlaXIgZW5lbWllcyBiZWZvcmUgdGhlbTsgdGhlIExPUkQgZGVsaXZlcmVkIGFsbCB0aGVpciBlbmVtaWVzIGludG8gdGhlaXIgaGFuZC4KVGhlcmUgZmFpbGVkIG5vdCBvdWdodCBvZiBhbnkgZ29vZCB0aGluZyB3aGljaCB0aGUgTE9SRCBoYWQgc3Bva2VuIHVudG8gdGhlIGhvdXNlIG9mIElzcmFlbDsgYWxsIGNhbWUgdG8gcGFzcy4KVGhlbiBKb3NodWEgY2FsbGVkIHRoZSBSZXViZW5pdGVzLCBhbmQgdGhlIEdhZGl0ZXMsIGFuZCB0aGUgaGFsZiB0cmliZSBvZiBNYW5hc3NlaCwKQW5kIHNhaWQgdW50byB0aGVtLCBZZSBoYXZlIGtlcHQgYWxsIHRoYXQgTW9zZXMgdGhlIHNlcnZhbnQgb2YgdGhlIExPUkQgY29tbWFuZGVkIHlvdSwgYW5kIGhhdmUgb2JleWVkIG15IHZvaWNlIGluIGFsbCB0aGF0IEkgY29tbWFuZGVkIHlvdToKWWUgaGF2ZSBub3QgbGVmdCB5b3VyIGJyZXRocmVuIHRoZXNlIG1hbnkgZGF5cyB1bnRvIHRoaXMgZGF5LCBidXQgaGF2ZSBrZXB0IHRoZSBjaGFyZ2Ugb2YgdGhlIGNvbW1hbmRtZW50IG9mIHRoZSBMT1JEIHlvdXIgR29kLgpBbmQgbm93IHRoZSBMT1JEIHlvdXIgR29kIGhhdGggZ2l2ZW4gcmVzdCB1bnRvIHlvdXIgYnJldGhyZW4sIGFzIGhlIHByb21pc2VkIHRoZW06IHRoZXJlZm9yZSBub3cgcmV0dXJuIHllLCBhbmQgZ2V0IHlvdSB1bnRvIHlvdXIgdGVudHMsIGFuZCB1bnRvIHRoZSBsYW5kIG9mIHlvdXIgcG9zc2Vzc2lvbiwgd2hpY2ggTW9zZXMgdGhlIHNlcnZhbnQgb2YgdGhlIExPUkQgZ2F2ZSB5b3Ugb24gdGhlIG90aGVyIHNpZGUgSm9yZGFuLgpCdXQgdGFrZSBkaWxpZ2VudCBoZWVkIHRvIGRvIHRoZSBjb21tYW5kbWVudCBhbmQgdGhlIGxhdywgd2hpY2ggTW9zZXMgdGhlIHNlcnZhbnQgb2YgdGhlIExPUkQgY2hhcmdlZCB5b3UsIHRvIGxvdmUgdGhlIExPUkQgeW91ciBHb2QsIGFuZCB0byB3YWxrIGluIGFsbCBoaXMgd2F5cywgYW5kIHRvIGtlZXAgaGlzIGNvbW1hbmRtZW50cywgYW5kIHRvIGNsZWF2ZSB1bnRvIGhpbSwgYW5kIHRvIHNlcnZlIGhpbSB3aXRoIGFsbCB5b3VyIGhlYXJ0IGFuZCB3aXRoIGFsbCB5b3VyIHNvdWwuClNvIEpvc2h1YSBibGVzc2VkIHRoZW0sIGFuZCBzZW50IHRoZW0gYXdheTogYW5kIHRoZXkgd2VudCB1bnRvIHRoZWlyIHRlbnRzLgpOb3cgdG8gdGhlIG9uZSBoYWxmIG9mIHRoZSB0cmliZSBvZiBNYW5hc3NlaCBNb3NlcyBoYWQgZ2l2ZW4gcG9zc2Vzc2lvbiBpbiBCYXNoYW46IGJ1dCB1bnRvIHRoZSBvdGhlciBoYWxmIHRoZXJlb2YgZ2F2ZSBKb3NodWEgYW1vbmcgdGhlaXIgYnJldGhyZW4gb24gdGhpcyBzaWRlIEpvcmRhbiB3ZXN0d2FyZC4gQW5kIHdoZW4gSm9zaHVhIHNlbnQgdGhlbSBhd2F5IGFsc28gdW50byB0aGVpciB0ZW50cywgdGhlbiBoZSBibGVzc2VkIHRoZW0sCkFuZCBoZSBzcGFrZSB1bnRvIHRoZW0sIHNheWluZywgUmV0dXJuIHdpdGggbXVjaCByaWNoZXMgdW50byB5b3VyIHRlbnRzLCBhbmQgd2l0aCB2ZXJ5IG11Y2ggY2F0dGxlLCB3aXRoIHNpbHZlciwgYW5kIHdpdGggZ29sZCwgYW5kIHdpdGggYnJhc3MsIGFuZCB3aXRoIGlyb24sIGFuZCB3aXRoIHZlcnkgbXVjaCByYWltZW50OiBkaXZpZGUgdGhlIHNwb2lsIG9mIHlvdXIgZW5lbWllcyB3aXRoIHlvdXIgYnJldGhyZW4uCkFuZCB0aGUgY2hpbGRyZW4gb2YgUmV1YmVuIGFuZCB0aGUgY2hpbGRyZW4gb2YgR2FkIGFuZCB0aGUgaGFsZiB0cmliZSBvZiBNYW5hc3NlaCByZXR1cm5lZCwgYW5kIGRlcGFydGVkIGZyb20gdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBvdXQgb2YgU2hpbG9oLCB3aGljaCBpcyBpbiB0aGUgbGFuZCBvZiBDYW5hYW4sIHRvIGdvIHVudG8gdGhlIGNvdW50cnkgb2YgR2lsZWFkLCB0byB0aGUgbGFuZCBvZiB0aGVpciBwb3NzZXNzaW9uLCB3aGVyZW9mIHRoZXkgd2VyZSBwb3NzZXNzZWQsIGFjY29yZGluZyB0byB0aGUgd29yZCBvZiB0aGUgTE9SRCBieSB0aGUgaGFuZCBvZiBNb3Nlcy4KQW5kIHdoZW4gdGhleSBjYW1lIHVudG8gdGhlIGJvcmRlcnMgb2YgSm9yZGFuLCB0aGF0IGFyZSBpbiB0aGUgbGFuZCBvZiBDYW5hYW4sIHRoZSBjaGlsZHJlbiBvZiBSZXViZW4gYW5kIHRoZSBjaGlsZHJlbiBvZiBHYWQgYW5kIHRoZSBoYWxmIHRyaWJlIG9mIE1hbmFzc2VoIGJ1aWx0IHRoZXJlIGFuIGFsdGFyIGJ5IEpvcmRhbiwgYSBncmVhdCBhbHRhciB0byBzZWUgdG8uCkFuZCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGhlYXJkIHNheSwgQmVob2xkLCB0aGUgY2hpbGRyZW4gb2YgUmV1YmVuIGFuZCB0aGUgY2hpbGRyZW4gb2YgR2FkIGFuZCB0aGUgaGFsZiB0cmliZSBvZiBNYW5hc3NlaCBoYXZlIGJ1aWx0IGFuIGFsdGFyIG92ZXIgYWdhaW5zdCB0aGUgbGFuZCBvZiBDYW5hYW4sIGluIHRoZSBib3JkZXJzIG9mIEpvcmRhbiwgYXQgdGhlIHBhc3NhZ2Ugb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbC4KQW5kIHdoZW4gdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBoZWFyZCBvZiBpdCwgdGhlIHdob2xlIGNvbmdyZWdhdGlvbiBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGdhdGhlcmVkIHRoZW1zZWx2ZXMgdG9nZXRoZXIgYXQgU2hpbG9oLCB0byBnbyB1cCB0byB3YXIgYWdhaW5zdCB0aGVtLgpBbmQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBzZW50IHVudG8gdGhlIGNoaWxkcmVuIG9mIFJldWJlbiwgYW5kIHRvIHRoZSBjaGlsZHJlbiBvZiBHYWQsIGFuZCB0byB0aGUgaGFsZiB0cmliZSBvZiBNYW5hc3NlaCwgaW50byB0aGUgbGFuZCBvZiBHaWxlYWQsIFBoaW5laGFzIHRoZSBzb24gb2YgRWxlYXphciB0aGUgcHJpZXN0LApBbmQgd2l0aCBoaW0gdGVuIHByaW5jZXMsIG9mIGVhY2ggY2hpZWYgaG91c2UgYSBwcmluY2UgdGhyb3VnaG91dCBhbGwgdGhlIHRyaWJlcyBvZiBJc3JhZWw7IGFuZCBlYWNoIG9uZSB3YXMgYW4gaGVhZCBvZiB0aGUgaG91c2Ugb2YgdGhlaXIgZmF0aGVycyBhbW9uZyB0aGUgdGhvdXNhbmRzIG9mIElzcmFlbC4KQW5kIHRoZXkgY2FtZSB1bnRvIHRoZSBjaGlsZHJlbiBvZiBSZXViZW4sIGFuZCB0byB0aGUgY2hpbGRyZW4gb2YgR2FkLCBhbmQgdG8gdGhlIGhhbGYgdHJpYmUgb2YgTWFuYXNzZWgsIHVudG8gdGhlIGxhbmQgb2YgR2lsZWFkLCBhbmQgdGhleSBzcGFrZSB3aXRoIHRoZW0sIHNheWluZywKVGh1cyBzYWl0aCB0aGUgd2hvbGUgY29uZ3JlZ2F0aW9uIG9mIHRoZSBMT1JELCBXaGF0IHRyZXNwYXNzIGlzIHRoaXMgdGhhdCB5ZSBoYXZlIGNvbW1pdHRlZCBhZ2FpbnN0IHRoZSBHb2Qgb2YgSXNyYWVsLCB0byB0dXJuIGF3YXkgdGhpcyBkYXkgZnJvbSBmb2xsb3dpbmcgdGhlIExPUkQsIGluIHRoYXQgeWUgaGF2ZSBidWlsZGVkIHlvdSBhbiBhbHRhciwgdGhhdCB5ZSBtaWdodCByZWJlbCB0aGlzIGRheSBhZ2FpbnN0IHRoZSBMT1JEPwpJcyB0aGUgaW5pcXVpdHkgb2YgUGVvciB0b28gbGl0dGxlIGZvciB1cywgZnJvbSB3aGljaCB3ZSBhcmUgbm90IGNsZWFuc2VkIHVudGlsIHRoaXMgZGF5LCBhbHRob3VnaCB0aGVyZSB3YXMgYSBwbGFndWUgaW4gdGhlIGNvbmdyZWdhdGlvbiBvZiB0aGUgTE9SRCwKQnV0IHRoYXQgeWUgbXVzdCB0dXJuIGF3YXkgdGhpcyBkYXkgZnJvbSBmb2xsb3dpbmcgdGhlIExPUkQ/IGFuZCBpdCB3aWxsIGJlLCBzZWVpbmcgeWUgcmViZWwgdG8gZGF5IGFnYWluc3QgdGhlIExPUkQsIHRoYXQgdG8gbW9ycm93IGhlIHdpbGwgYmUgd3JvdGggd2l0aCB0aGUgd2hvbGUgY29uZ3JlZ2F0aW9uIG9mIElzcmFlbC4KTm90d2l0aHN0YW5kaW5nLCBpZiB0aGUgbGFuZCBvZiB5b3VyIHBvc3Nlc3Npb24gYmUgdW5jbGVhbiwgdGhlbiBwYXNzIHllIG92ZXIgdW50byB0aGUgbGFuZCBvZiB0aGUgcG9zc2Vzc2lvbiBvZiB0aGUgTE9SRCwgd2hlcmVpbiB0aGUgTE9SRCdzIHRhYmVybmFjbGUgZHdlbGxldGgsIGFuZCB0YWtlIHBvc3Nlc3Npb24gYW1vbmcgdXM6IGJ1dCByZWJlbCBub3QgYWdhaW5zdCB0aGUgTE9SRCwgbm9yIHJlYmVsIGFnYWluc3QgdXMsIGluIGJ1aWxkaW5nIHlvdSBhbiBhbHRhciBiZXNpZGUgdGhlIGFsdGFyIG9mIHRoZSBMT1JEIG91ciBHb2QuCkRpZCBub3QgQWNoYW4gdGhlIHNvbiBvZiBaZXJhaCBjb21taXQgYSB0cmVzcGFzcyBpbiB0aGUgYWNjdXJzZWQgdGhpbmcsIGFuZCB3cmF0aCBmZWxsIG9uIGFsbCB0aGUgY29uZ3JlZ2F0aW9uIG9mIElzcmFlbD8gYW5kIHRoYXQgbWFuIHBlcmlzaGVkIG5vdCBhbG9uZSBpbiBoaXMgaW5pcXVpdHkuClRoZW4gdGhlIGNoaWxkcmVuIG9mIFJldWJlbiBhbmQgdGhlIGNoaWxkcmVuIG9mIEdhZCBhbmQgdGhlIGhhbGYgdHJpYmUgb2YgTWFuYXNzZWggYW5zd2VyZWQsIGFuZCBzYWlkIHVudG8gdGhlIGhlYWRzIG9mIHRoZSB0aG91c2FuZHMgb2YgSXNyYWVsLApUaGUgTE9SRCBHb2Qgb2YgZ29kcywgdGhlIExPUkQgR29kIG9mIGdvZHMsIGhlIGtub3dldGgsIGFuZCBJc3JhZWwgaGUgc2hhbGwga25vdzsgaWYgaXQgYmUgaW4gcmViZWxsaW9uLCBvciBpZiBpbiB0cmFuc2dyZXNzaW9uIGFnYWluc3QgdGhlIExPUkQsIChzYXZlIHVzIG5vdCB0aGlzIGRheSwpClRoYXQgd2UgaGF2ZSBidWlsdCB1cyBhbiBhbHRhciB0byB0dXJuIGZyb20gZm9sbG93aW5nIHRoZSBMT1JELCBvciBpZiB0byBvZmZlciB0aGVyZW9uIGJ1cm50IG9mZmVyaW5nIG9yIG1lYXQgb2ZmZXJpbmcsIG9yIGlmIHRvIG9mZmVyIHBlYWNlIG9mZmVyaW5ncyB0aGVyZW9uLCBsZXQgdGhlIExPUkQgaGltc2VsZiByZXF1aXJlIGl0OwpBbmQgaWYgd2UgaGF2ZSBub3QgcmF0aGVyIGRvbmUgaXQgZm9yIGZlYXIgb2YgdGhpcyB0aGluZywgc2F5aW5nLCBJbiB0aW1lIHRvIGNvbWUgeW91ciBjaGlsZHJlbiBtaWdodCBzcGVhayB1bnRvIG91ciBjaGlsZHJlbiwgc2F5aW5nLCBXaGF0IGhhdmUgeWUgdG8gZG8gd2l0aCB0aGUgTE9SRCBHb2Qgb2YgSXNyYWVsPwpGb3IgdGhlIExPUkQgaGF0aCBtYWRlIEpvcmRhbiBhIGJvcmRlciBiZXR3ZWVuIHVzIGFuZCB5b3UsIHllIGNoaWxkcmVuIG9mIFJldWJlbiBhbmQgY2hpbGRyZW4gb2YgR2FkOyB5ZSBoYXZlIG5vIHBhcnQgaW4gdGhlIExPUkQ6IHNvIHNoYWxsIHlvdXIgY2hpbGRyZW4gbWFrZSBvdXIgY2hpbGRyZW4gY2Vhc2UgZnJvbSBmZWFyaW5nIHRoZSBMT1JELgpUaGVyZWZvcmUgd2Ugc2FpZCwgTGV0IHVzIG5vdyBwcmVwYXJlIHRvIGJ1aWxkIHVzIGFuIGFsdGFyLCBub3QgZm9yIGJ1cm50IG9mZmVyaW5nLCBub3IgZm9yIHNhY3JpZmljZToKQnV0IHRoYXQgaXQgbWF5IGJlIGEgd2l0bmVzcyBiZXR3ZWVuIHVzLCBhbmQgeW91LCBhbmQgb3VyIGdlbmVyYXRpb25zIGFmdGVyIHVzLCB0aGF0IHdlIG1pZ2h0IGRvIHRoZSBzZXJ2aWNlIG9mIHRoZSBMT1JEIGJlZm9yZSBoaW0gd2l0aCBvdXIgYnVybnQgb2ZmZXJpbmdzLCBhbmQgd2l0aCBvdXIgc2FjcmlmaWNlcywgYW5kIHdpdGggb3VyIHBlYWNlIG9mZmVyaW5nczsgdGhhdCB5b3VyIGNoaWxkcmVuIG1heSBub3Qgc2F5IHRvIG91ciBjaGlsZHJlbiBpbiB0aW1lIHRvIGNvbWUsIFllIGhhdmUgbm8gcGFydCBpbiB0aGUgTE9SRC4KVGhlcmVmb3JlIHNhaWQgd2UsIHRoYXQgaXQgc2hhbGwgYmUsIHdoZW4gdGhleSBzaG91bGQgc28gc2F5IHRvIHVzIG9yIHRvIG91ciBnZW5lcmF0aW9ucyBpbiB0aW1lIHRvIGNvbWUsIHRoYXQgd2UgbWF5IHNheSBhZ2FpbiwgQmVob2xkIHRoZSBwYXR0ZXJuIG9mIHRoZSBhbHRhciBvZiB0aGUgTE9SRCwgd2hpY2ggb3VyIGZhdGhlcnMgbWFkZSwgbm90IGZvciBidXJudCBvZmZlcmluZ3MsIG5vciBmb3Igc2FjcmlmaWNlczsgYnV0IGl0IGlzIGEgd2l0bmVzcyBiZXR3ZWVuIHVzIGFuZCB5b3UuCkdvZCBmb3JiaWQgdGhhdCB3ZSBzaG91bGQgcmViZWwgYWdhaW5zdCB0aGUgTE9SRCwgYW5kIHR1cm4gdGhpcyBkYXkgZnJvbSBmb2xsb3dpbmcgdGhlIExPUkQsIHRvIGJ1aWxkIGFuIGFsdGFyIGZvciBidXJudCBvZmZlcmluZ3MsIGZvciBtZWF0IG9mZmVyaW5ncywgb3IgZm9yIHNhY3JpZmljZXMsIGJlc2lkZSB0aGUgYWx0YXIgb2YgdGhlIExPUkQgb3VyIEdvZCB0aGF0IGlzIGJlZm9yZSBoaXMgdGFiZXJuYWNsZS4KQW5kIHdoZW4gUGhpbmVoYXMgdGhlIHByaWVzdCwgYW5kIHRoZSBwcmluY2VzIG9mIHRoZSBjb25ncmVnYXRpb24gYW5kIGhlYWRzIG9mIHRoZSB0aG91c2FuZHMgb2YgSXNyYWVsIHdoaWNoIHdlcmUgd2l0aCBoaW0sIGhlYXJkIHRoZSB3b3JkcyB0aGF0IHRoZSBjaGlsZHJlbiBvZiBSZXViZW4gYW5kIHRoZSBjaGlsZHJlbiBvZiBHYWQgYW5kIHRoZSBjaGlsZHJlbiBvZiBNYW5hc3NlaCBzcGFrZSwgaXQgcGxlYXNlZCB0aGVtLgpBbmQgUGhpbmVoYXMgdGhlIHNvbiBvZiBFbGVhemFyIHRoZSBwcmllc3Qgc2FpZCB1bnRvIHRoZSBjaGlsZHJlbiBvZiBSZXViZW4sIGFuZCB0byB0aGUgY2hpbGRyZW4gb2YgR2FkLCBhbmQgdG8gdGhlIGNoaWxkcmVuIG9mIE1hbmFzc2VoLCBUaGlzIGRheSB3ZSBwZXJjZWl2ZSB0aGF0IHRoZSBMT1JEIGlzIGFtb25nIHVzLCBiZWNhdXNlIHllIGhhdmUgbm90IGNvbW1pdHRlZCB0aGlzIHRyZXNwYXNzIGFnYWluc3QgdGhlIExPUkQ6IG5vdyB5ZSBoYXZlIGRlbGl2ZXJlZCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIG91dCBvZiB0aGUgaGFuZCBvZiB0aGUgTE9SRC4KQW5kIFBoaW5laGFzIHRoZSBzb24gb2YgRWxlYXphciB0aGUgcHJpZXN0LCBhbmQgdGhlIHByaW5jZXMsIHJldHVybmVkIGZyb20gdGhlIGNoaWxkcmVuIG9mIFJldWJlbiwgYW5kIGZyb20gdGhlIGNoaWxkcmVuIG9mIEdhZCwgb3V0IG9mIHRoZSBsYW5kIG9mIEdpbGVhZCwgdW50byB0aGUgbGFuZCBvZiBDYW5hYW4sIHRvIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIGFuZCBicm91Z2h0IHRoZW0gd29yZCBhZ2Fpbi4KQW5kIHRoZSB0aGluZyBwbGVhc2VkIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWw7IGFuZCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGJsZXNzZWQgR29kLCBhbmQgZGlkIG5vdCBpbnRlbmQgdG8gZ28gdXAgYWdhaW5zdCB0aGVtIGluIGJhdHRsZSwgdG8gZGVzdHJveSB0aGUgbGFuZCB3aGVyZWluIHRoZSBjaGlsZHJlbiBvZiBSZXViZW4gYW5kIEdhZCBkd2VsdC4KQW5kIHRoZSBjaGlsZHJlbiBvZiBSZXViZW4gYW5kIHRoZSBjaGlsZHJlbiBvZiBHYWQgY2FsbGVkIHRoZSBhbHRhciBFZDogZm9yIGl0IHNoYWxsIGJlIGEgd2l0bmVzcyBiZXR3ZWVuIHVzIHRoYXQgdGhlIExPUkQgaXMgR29kLgpBbmQgaXQgY2FtZSB0byBwYXNzIGEgbG9uZyB0aW1lIGFmdGVyIHRoYXQgdGhlIExPUkQgaGFkIGdpdmVuIHJlc3QgdW50byBJc3JhZWwgZnJvbSBhbGwgdGhlaXIgZW5lbWllcyByb3VuZCBhYm91dCwgdGhhdCBKb3NodWEgd2F4ZWQgb2xkIGFuZCBzdHJpY2tlbiBpbiBhZ2UuCkFuZCBKb3NodWEgY2FsbGVkIGZvciBhbGwgSXNyYWVsLCBhbmQgZm9yIHRoZWlyIGVsZGVycywgYW5kIGZvciB0aGVpciBoZWFkcywgYW5kIGZvciB0aGVpciBqdWRnZXMsIGFuZCBmb3IgdGhlaXIgb2ZmaWNlcnMsIGFuZCBzYWlkIHVudG8gdGhlbSwgSSBhbSBvbGQgYW5kIHN0cmlja2VuIGluIGFnZToKQW5kIHllIGhhdmUgc2VlbiBhbGwgdGhhdCB0aGUgTE9SRCB5b3VyIEdvZCBoYXRoIGRvbmUgdW50byBhbGwgdGhlc2UgbmF0aW9ucyBiZWNhdXNlIG9mIHlvdTsgZm9yIHRoZSBMT1JEIHlvdXIgR29kIGlzIGhlIHRoYXQgaGF0aCBmb3VnaHQgZm9yIHlvdS4KQmVob2xkLCBJIGhhdmUgZGl2aWRlZCB1bnRvIHlvdSBieSBsb3QgdGhlc2UgbmF0aW9ucyB0aGF0IHJlbWFpbiwgdG8gYmUgYW4gaW5oZXJpdGFuY2UgZm9yIHlvdXIgdHJpYmVzLCBmcm9tIEpvcmRhbiwgd2l0aCBhbGwgdGhlIG5hdGlvbnMgdGhhdCBJIGhhdmUgY3V0IG9mZiwgZXZlbiB1bnRvIHRoZSBncmVhdCBzZWEgd2VzdHdhcmQuCkFuZCB0aGUgTE9SRCB5b3VyIEdvZCwgaGUgc2hhbGwgZXhwZWwgdGhlbSBmcm9tIGJlZm9yZSB5b3UsIGFuZCBkcml2ZSB0aGVtIGZyb20gb3V0IG9mIHlvdXIgc2lnaHQ7IGFuZCB5ZSBzaGFsbCBwb3NzZXNzIHRoZWlyIGxhbmQsIGFzIHRoZSBMT1JEIHlvdXIgR29kIGhhdGggcHJvbWlzZWQgdW50byB5b3UuCkJlIHllIHRoZXJlZm9yZSB2ZXJ5IGNvdXJhZ2VvdXMgdG8ga2VlcCBhbmQgdG8gZG8gYWxsIHRoYXQgaXMgd3JpdHRlbiBpbiB0aGUgYm9vayBvZiB0aGUgbGF3IG9mIE1vc2VzLCB0aGF0IHllIHR1cm4gbm90IGFzaWRlIHRoZXJlZnJvbSB0byB0aGUgcmlnaHQgaGFuZCBvciB0byB0aGUgbGVmdDsKVGhhdCB5ZSBjb21lIG5vdCBhbW9uZyB0aGVzZSBuYXRpb25zLCB0aGVzZSB0aGF0IHJlbWFpbiBhbW9uZyB5b3U7IG5laXRoZXIgbWFrZSBtZW50aW9uIG9mIHRoZSBuYW1lIG9mIHRoZWlyIGdvZHMsIG5vciBjYXVzZSB0byBzd2VhciBieSB0aGVtLCBuZWl0aGVyIHNlcnZlIHRoZW0sIG5vciBib3cgeW91cnNlbHZlcyB1bnRvIHRoZW06CkJ1dCBjbGVhdmUgdW50byB0aGUgTE9SRCB5b3VyIEdvZCwgYXMgeWUgaGF2ZSBkb25lIHVudG8gdGhpcyBkYXkuCkZvciB0aGUgTE9SRCBoYXRoIGRyaXZlbiBvdXQgZnJvbSBiZWZvcmUgeW91IGdyZWF0IG5hdGlvbnMgYW5kIHN0cm9uZzogYnV0IGFzIGZvciB5b3UsIG5vIG1hbiBoYXRoIGJlZW4gYWJsZSB0byBzdGFuZCBiZWZvcmUgeW91IHVudG8gdGhpcyBkYXkuCk9uZSBtYW4gb2YgeW91IHNoYWxsIGNoYXNlIGEgdGhvdXNhbmQ6IGZvciB0aGUgTE9SRCB5b3VyIEdvZCwgaGUgaXQgaXMgdGhhdCBmaWdodGV0aCBmb3IgeW91LCBhcyBoZSBoYXRoIHByb21pc2VkIHlvdS4KVGFrZSBnb29kIGhlZWQgdGhlcmVmb3JlIHVudG8geW91cnNlbHZlcywgdGhhdCB5ZSBsb3ZlIHRoZSBMT1JEIHlvdXIgR29kLgpFbHNlIGlmIHllIGRvIGluIGFueSB3aXNlIGdvIGJhY2ssIGFuZCBjbGVhdmUgdW50byB0aGUgcmVtbmFudCBvZiB0aGVzZSBuYXRpb25zLCBldmVuIHRoZXNlIHRoYXQgcmVtYWluIGFtb25nIHlvdSwgYW5kIHNoYWxsIG1ha2UgbWFycmlhZ2VzIHdpdGggdGhlbSwgYW5kIGdvIGluIHVudG8gdGhlbSwgYW5kIHRoZXkgdG8geW91OgpLbm93IGZvciBhIGNlcnRhaW50eSB0aGF0IHRoZSBMT1JEIHlvdXIgR29kIHdpbGwgbm8gbW9yZSBkcml2ZSBvdXQgYW55IG9mIHRoZXNlIG5hdGlvbnMgZnJvbSBiZWZvcmUgeW91OyBidXQgdGhleSBzaGFsbCBiZSBzbmFyZXMgYW5kIHRyYXBzIHVudG8geW91LCBhbmQgc2NvdXJnZXMgaW4geW91ciBzaWRlcywgYW5kIHRob3JucyBpbiB5b3VyIGV5ZXMsIHVudGlsIHllIHBlcmlzaCBmcm9tIG9mZiB0aGlzIGdvb2QgbGFuZCB3aGljaCB0aGUgTE9SRCB5b3VyIEdvZCBoYXRoIGdpdmVuIHlvdS4KQW5kLCBiZWhvbGQsIHRoaXMgZGF5IEkgYW0gZ29pbmcgdGhlIHdheSBvZiBhbGwgdGhlIGVhcnRoOiBhbmQgeWUga25vdyBpbiBhbGwgeW91ciBoZWFydHMgYW5kIGluIGFsbCB5b3VyIHNvdWxzLCB0aGF0IG5vdCBvbmUgdGhpbmcgaGF0aCBmYWlsZWQgb2YgYWxsIHRoZSBnb29kIHRoaW5ncyB3aGljaCB0aGUgTE9SRCB5b3VyIEdvZCBzcGFrZSBjb25jZXJuaW5nIHlvdTsgYWxsIGFyZSBjb21lIHRvIHBhc3MgdW50byB5b3UsIGFuZCBub3Qgb25lIHRoaW5nIGhhdGggZmFpbGVkIHRoZXJlb2YuClRoZXJlZm9yZSBpdCBzaGFsbCBjb21lIHRvIHBhc3MsIHRoYXQgYXMgYWxsIGdvb2QgdGhpbmdzIGFyZSBjb21lIHVwb24geW91LCB3aGljaCB0aGUgTE9SRCB5b3VyIEdvZCBwcm9taXNlZCB5b3U7IHNvIHNoYWxsIHRoZSBMT1JEIGJyaW5nIHVwb24geW91IGFsbCBldmlsIHRoaW5ncywgdW50aWwgaGUgaGF2ZSBkZXN0cm95ZWQgeW91IGZyb20gb2ZmIHRoaXMgZ29vZCBsYW5kIHdoaWNoIHRoZSBMT1JEIHlvdXIgR29kIGhhdGggZ2l2ZW4geW91LgpXaGVuIHllIGhhdmUgdHJhbnNncmVzc2VkIHRoZSBjb3ZlbmFudCBvZiB0aGUgTE9SRCB5b3VyIEdvZCwgd2hpY2ggaGUgY29tbWFuZGVkIHlvdSwgYW5kIGhhdmUgZ29uZSBhbmQgc2VydmVkIG90aGVyIGdvZHMsIGFuZCBib3dlZCB5b3Vyc2VsdmVzIHRvIHRoZW07IHRoZW4gc2hhbGwgdGhlIGFuZ2VyIG9mIHRoZSBMT1JEIGJlIGtpbmRsZWQgYWdhaW5zdCB5b3UsIGFuZCB5ZSBzaGFsbCBwZXJpc2ggcXVpY2tseSBmcm9tIG9mZiB0aGUgZ29vZCBsYW5kIHdoaWNoIGhlIGhhdGggZ2l2ZW4gdW50byB5b3UuCkFuZCBKb3NodWEgZ2F0aGVyZWQgYWxsIHRoZSB0cmliZXMgb2YgSXNyYWVsIHRvIFNoZWNoZW0sIGFuZCBjYWxsZWQgZm9yIHRoZSBlbGRlcnMgb2YgSXNyYWVsLCBhbmQgZm9yIHRoZWlyIGhlYWRzLCBhbmQgZm9yIHRoZWlyIGp1ZGdlcywgYW5kIGZvciB0aGVpciBvZmZpY2VyczsgYW5kIHRoZXkgcHJlc2VudGVkIHRoZW1zZWx2ZXMgYmVmb3JlIEdvZC4KQW5kIEpvc2h1YSBzYWlkIHVudG8gYWxsIHRoZSBwZW9wbGUsIFRodXMgc2FpdGggdGhlIExPUkQgR29kIG9mIElzcmFlbCwgWW91ciBmYXRoZXJzIGR3ZWx0IG9uIHRoZSBvdGhlciBzaWRlIG9mIHRoZSBmbG9vZCBpbiBvbGQgdGltZSwgZXZlbiBUZXJhaCwgdGhlIGZhdGhlciBvZiBBYnJhaGFtLCBhbmQgdGhlIGZhdGhlciBvZiBOYWNob3I6IGFuZCB0aGV5IHNlcnZlZCBvdGhlciBnb2RzLgpBbmQgSSB0b29rIHlvdXIgZmF0aGVyIEFicmFoYW0gZnJvbSB0aGUgb3RoZXIgc2lkZSBvZiB0aGUgZmxvb2QsIGFuZCBsZWQgaGltIHRocm91Z2hvdXQgYWxsIHRoZSBsYW5kIG9mIENhbmFhbiwgYW5kIG11bHRpcGxpZWQgaGlzIHNlZWQsIGFuZCBnYXZlIGhpbSBJc2FhYy4KQW5kIEkgZ2F2ZSB1bnRvIElzYWFjIEphY29iIGFuZCBFc2F1OiBhbmQgSSBnYXZlIHVudG8gRXNhdSBtb3VudCBTZWlyLCB0byBwb3NzZXNzIGl0OyBidXQgSmFjb2IgYW5kIGhpcyBjaGlsZHJlbiB3ZW50IGRvd24gaW50byBFZ3lwdC4KSSBzZW50IE1vc2VzIGFsc28gYW5kIEFhcm9uLCBhbmQgSSBwbGFndWVkIEVneXB0LCBhY2NvcmRpbmcgdG8gdGhhdCB3aGljaCBJIGRpZCBhbW9uZyB0aGVtOiBhbmQgYWZ0ZXJ3YXJkIEkgYnJvdWdodCB5b3Ugb3V0LgpBbmQgSSBicm91Z2h0IHlvdXIgZmF0aGVycyBvdXQgb2YgRWd5cHQ6IGFuZCB5ZSBjYW1lIHVudG8gdGhlIHNlYTsgYW5kIHRoZSBFZ3lwdGlhbnMgcHVyc3VlZCBhZnRlciB5b3VyIGZhdGhlcnMgd2l0aCBjaGFyaW90cyBhbmQgaG9yc2VtZW4gdW50byB0aGUgUmVkIHNlYS4KQW5kIHdoZW4gdGhleSBjcmllZCB1bnRvIHRoZSBMT1JELCBoZSBwdXQgZGFya25lc3MgYmV0d2VlbiB5b3UgYW5kIHRoZSBFZ3lwdGlhbnMsIGFuZCBicm91Z2h0IHRoZSBzZWEgdXBvbiB0aGVtLCBhbmQgY292ZXJlZCB0aGVtOyBhbmQgeW91ciBleWVzIGhhdmUgc2VlbiB3aGF0IEkgaGF2ZSBkb25lIGluIEVneXB0OiBhbmQgeWUgZHdlbHQgaW4gdGhlIHdpbGRlcm5lc3MgYSBsb25nIHNlYXNvbi4KQW5kIEkgYnJvdWdodCB5b3UgaW50byB0aGUgbGFuZCBvZiB0aGUgQW1vcml0ZXMsIHdoaWNoIGR3ZWx0IG9uIHRoZSBvdGhlciBzaWRlIEpvcmRhbjsgYW5kIHRoZXkgZm91Z2h0IHdpdGggeW91OiBhbmQgSSBnYXZlIHRoZW0gaW50byB5b3VyIGhhbmQsIHRoYXQgeWUgbWlnaHQgcG9zc2VzcyB0aGVpciBsYW5kOyBhbmQgSSBkZXN0cm95ZWQgdGhlbSBmcm9tIGJlZm9yZSB5b3UuClRoZW4gQmFsYWsgdGhlIHNvbiBvZiBaaXBwb3IsIGtpbmcgb2YgTW9hYiwgYXJvc2UgYW5kIHdhcnJlZCBhZ2FpbnN0IElzcmFlbCwgYW5kIHNlbnQgYW5kIGNhbGxlZCBCYWxhYW0gdGhlIHNvbiBvZiBCZW9yIHRvIGN1cnNlIHlvdToKQnV0IEkgd291bGQgbm90IGhlYXJrZW4gdW50byBCYWxhYW07IHRoZXJlZm9yZSBoZSBibGVzc2VkIHlvdSBzdGlsbDogc28gSSBkZWxpdmVyZWQgeW91IG91dCBvZiBoaXMgaGFuZC4KQW5kIHlvdSB3ZW50IG92ZXIgSm9yZGFuLCBhbmQgY2FtZSB1bnRvIEplcmljaG86IGFuZCB0aGUgbWVuIG9mIEplcmljaG8gZm91Z2h0IGFnYWluc3QgeW91LCB0aGUgQW1vcml0ZXMsIGFuZCB0aGUgUGVyaXp6aXRlcywgYW5kIHRoZSBDYW5hYW5pdGVzLCBhbmQgdGhlIEhpdHRpdGVzLCBhbmQgdGhlIEdpcmdhc2hpdGVzLCB0aGUgSGl2aXRlcywgYW5kIHRoZSBKZWJ1c2l0ZXM7IGFuZCBJIGRlbGl2ZXJlZCB0aGVtIGludG8geW91ciBoYW5kLgpBbmQgSSBzZW50IHRoZSBob3JuZXQgYmVmb3JlIHlvdSwgd2hpY2ggZHJhdmUgdGhlbSBvdXQgZnJvbSBiZWZvcmUgeW91LCBldmVuIHRoZSB0d28ga2luZ3Mgb2YgdGhlIEFtb3JpdGVzOyBidXQgbm90IHdpdGggdGh5IHN3b3JkLCBub3Igd2l0aCB0aHkgYm93LgpBbmQgSSBoYXZlIGdpdmVuIHlvdSBhIGxhbmQgZm9yIHdoaWNoIHllIGRpZCBub3QgbGFib3VyLCBhbmQgY2l0aWVzIHdoaWNoIHllIGJ1aWx0IG5vdCwgYW5kIHllIGR3ZWxsIGluIHRoZW07IG9mIHRoZSB2aW5leWFyZHMgYW5kIG9saXZleWFyZHMgd2hpY2ggeWUgcGxhbnRlZCBub3QgZG8geWUgZWF0LgpOb3cgdGhlcmVmb3JlIGZlYXIgdGhlIExPUkQsIGFuZCBzZXJ2ZSBoaW0gaW4gc2luY2VyaXR5IGFuZCBpbiB0cnV0aDogYW5kIHB1dCBhd2F5IHRoZSBnb2RzIHdoaWNoIHlvdXIgZmF0aGVycyBzZXJ2ZWQgb24gdGhlIG90aGVyIHNpZGUgb2YgdGhlIGZsb29kLCBhbmQgaW4gRWd5cHQ7IGFuZCBzZXJ2ZSB5ZSB0aGUgTE9SRC4KQW5kIGlmIGl0IHNlZW0gZXZpbCB1bnRvIHlvdSB0byBzZXJ2ZSB0aGUgTE9SRCwgY2hvb3NlIHlvdSB0aGlzIGRheSB3aG9tIHllIHdpbGwgc2VydmU7IHdoZXRoZXIgdGhlIGdvZHMgd2hpY2ggeW91ciBmYXRoZXJzIHNlcnZlZCB0aGF0IHdlcmUgb24gdGhlIG90aGVyIHNpZGUgb2YgdGhlIGZsb29kLCBvciB0aGUgZ29kcyBvZiB0aGUgQW1vcml0ZXMsIGluIHdob3NlIGxhbmQgeWUgZHdlbGw6IGJ1dCBhcyBmb3IgbWUgYW5kIG15IGhvdXNlLCB3ZSB3aWxsIHNlcnZlIHRoZSBMT1JELgpBbmQgdGhlIHBlb3BsZSBhbnN3ZXJlZCBhbmQgc2FpZCwgR29kIGZvcmJpZCB0aGF0IHdlIHNob3VsZCBmb3JzYWtlIHRoZSBMT1JELCB0byBzZXJ2ZSBvdGhlciBnb2RzOwpGb3IgdGhlIExPUkQgb3VyIEdvZCwgaGUgaXQgaXMgdGhhdCBicm91Z2h0IHVzIHVwIGFuZCBvdXIgZmF0aGVycyBvdXQgb2YgdGhlIGxhbmQgb2YgRWd5cHQsIGZyb20gdGhlIGhvdXNlIG9mIGJvbmRhZ2UsIGFuZCB3aGljaCBkaWQgdGhvc2UgZ3JlYXQgc2lnbnMgaW4gb3VyIHNpZ2h0LCBhbmQgcHJlc2VydmVkIHVzIGluIGFsbCB0aGUgd2F5IHdoZXJlaW4gd2Ugd2VudCwgYW5kIGFtb25nIGFsbCB0aGUgcGVvcGxlIHRocm91Z2ggd2hvbSB3ZSBwYXNzZWQ6CkFuZCB0aGUgTE9SRCBkcmF2ZSBvdXQgZnJvbSBiZWZvcmUgdXMgYWxsIHRoZSBwZW9wbGUsIGV2ZW4gdGhlIEFtb3JpdGVzIHdoaWNoIGR3ZWx0IGluIHRoZSBsYW5kOiB0aGVyZWZvcmUgd2lsbCB3ZSBhbHNvIHNlcnZlIHRoZSBMT1JEOyBmb3IgaGUgaXMgb3VyIEdvZC4KQW5kIEpvc2h1YSBzYWlkIHVudG8gdGhlIHBlb3BsZSwgWWUgY2Fubm90IHNlcnZlIHRoZSBMT1JEOiBmb3IgaGUgaXMgYW4gaG9seSBHb2Q7IGhlIGlzIGEgamVhbG91cyBHb2Q7IGhlIHdpbGwgbm90IGZvcmdpdmUgeW91ciB0cmFuc2dyZXNzaW9ucyBub3IgeW91ciBzaW5zLgpJZiB5ZSBmb3JzYWtlIHRoZSBMT1JELCBhbmQgc2VydmUgc3RyYW5nZSBnb2RzLCB0aGVuIGhlIHdpbGwgdHVybiBhbmQgZG8geW91IGh1cnQsIGFuZCBjb25zdW1lIHlvdSwgYWZ0ZXIgdGhhdCBoZSBoYXRoIGRvbmUgeW91IGdvb2QuCkFuZCB0aGUgcGVvcGxlIHNhaWQgdW50byBKb3NodWEsIE5heTsgYnV0IHdlIHdpbGwgc2VydmUgdGhlIExPUkQuCkFuZCBKb3NodWEgc2FpZCB1bnRvIHRoZSBwZW9wbGUsIFllIGFyZSB3aXRuZXNzZXMgYWdhaW5zdCB5b3Vyc2VsdmVzIHRoYXQgeWUgaGF2ZSBjaG9zZW4geW91IHRoZSBMT1JELCB0byBzZXJ2ZSBoaW0uIEFuZCB0aGV5IHNhaWQsIFdlIGFyZSB3aXRuZXNzZXMuCk5vdyB0aGVyZWZvcmUgcHV0IGF3YXksIHNhaWQgaGUsIHRoZSBzdHJhbmdlIGdvZHMgd2hpY2ggYXJlIGFtb25nIHlvdSwgYW5kIGluY2xpbmUgeW91ciBoZWFydCB1bnRvIHRoZSBMT1JEIEdvZCBvZiBJc3JhZWwuCkFuZCB0aGUgcGVvcGxlIHNhaWQgdW50byBKb3NodWEsIFRoZSBMT1JEIG91ciBHb2Qgd2lsbCB3ZSBzZXJ2ZSwgYW5kIGhpcyB2b2ljZSB3aWxsIHdlIG9iZXkuClNvIEpvc2h1YSBtYWRlIGEgY292ZW5hbnQgd2l0aCB0aGUgcGVvcGxlIHRoYXQgZGF5LCBhbmQgc2V0IHRoZW0gYSBzdGF0dXRlIGFuZCBhbiBvcmRpbmFuY2UgaW4gU2hlY2hlbS4KQW5kIEpvc2h1YSB3cm90ZSB0aGVzZSB3b3JkcyBpbiB0aGUgYm9vayBvZiB0aGUgbGF3IG9mIEdvZCwgYW5kIHRvb2sgYSBncmVhdCBzdG9uZSwgYW5kIHNldCBpdCB1cCB0aGVyZSB1bmRlciBhbiBvYWssIHRoYXQgd2FzIGJ5IHRoZSBzYW5jdHVhcnkgb2YgdGhlIExPUkQuCkFuZCBKb3NodWEgc2FpZCB1bnRvIGFsbCB0aGUgcGVvcGxlLCBCZWhvbGQsIHRoaXMgc3RvbmUgc2hhbGwgYmUgYSB3aXRuZXNzIHVudG8gdXM7IGZvciBpdCBoYXRoIGhlYXJkIGFsbCB0aGUgd29yZHMgb2YgdGhlIExPUkQgd2hpY2ggaGUgc3Bha2UgdW50byB1czogaXQgc2hhbGwgYmUgdGhlcmVmb3JlIGEgd2l0bmVzcyB1bnRvIHlvdSwgbGVzdCB5ZSBkZW55IHlvdXIgR29kLgpTbyBKb3NodWEgbGV0IHRoZSBwZW9wbGUgZGVwYXJ0LCBldmVyeSBtYW4gdW50byBoaXMgaW5oZXJpdGFuY2UuCkFuZCBpdCBjYW1lIHRvIHBhc3MgYWZ0ZXIgdGhlc2UgdGhpbmdzLCB0aGF0IEpvc2h1YSB0aGUgc29uIG9mIE51biwgdGhlIHNlcnZhbnQgb2YgdGhlIExPUkQsIGRpZWQsIGJlaW5nIGFuIGh1bmRyZWQgYW5kIHRlbiB5ZWFycyBvbGQuCkFuZCB0aGV5IGJ1cmllZCBoaW0gaW4gdGhlIGJvcmRlciBvZiBoaXMgaW5oZXJpdGFuY2UgaW4gVGltbmF0aHNlcmFoLCB3aGljaCBpcyBpbiBtb3VudCBFcGhyYWltLCBvbiB0aGUgbm9ydGggc2lkZSBvZiB0aGUgaGlsbCBvZiBHYWFzaC4KQW5kIElzcmFlbCBzZXJ2ZWQgdGhlIExPUkQgYWxsIHRoZSBkYXlzIG9mIEpvc2h1YSwgYW5kIGFsbCB0aGUgZGF5cyBvZiB0aGUgZWxkZXJzIHRoYXQgb3ZlcmxpdmVkIEpvc2h1YSwgYW5kIHdoaWNoIGhhZCBrbm93biBhbGwgdGhlIHdvcmtzIG9mIHRoZSBMT1JELCB0aGF0IGhlIGhhZCBkb25lIGZvciBJc3JhZWwuCkFuZCB0aGUgYm9uZXMgb2YgSm9zZXBoLCB3aGljaCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGJyb3VnaHQgdXAgb3V0IG9mIEVneXB0LCBidXJpZWQgdGhleSBpbiBTaGVjaGVtLCBpbiBhIHBhcmNlbCBvZiBncm91bmQgd2hpY2ggSmFjb2IgYm91Z2h0IG9mIHRoZSBzb25zIG9mIEhhbW9yIHRoZSBmYXRoZXIgb2YgU2hlY2hlbSBmb3IgYW4gaHVuZHJlZCBwaWVjZXMgb2Ygc2lsdmVyOiBhbmQgaXQgYmVjYW1lIHRoZSBpbmhlcml0YW5jZSBvZiB0aGUgY2hpbGRyZW4gb2YgSm9zZXBoLgpBbmQgRWxlYXphciB0aGUgc29uIG9mIEFhcm9uIGRpZWQ7IGFuZCB0aGV5IGJ1cmllZCBoaW0gaW4gYSBoaWxsIHRoYXQgcGVydGFpbmVkIHRvIFBoaW5laGFzIGhpcyBzb24sIHdoaWNoIHdhcyBnaXZlbiBoaW0gaW4gbW91bnQgRXBocmFpbS4KTm93IGFmdGVyIHRoZSBkZWF0aCBvZiBKb3NodWEgaXQgY2FtZSB0byBwYXNzLCB0aGF0IHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgYXNrZWQgdGhlIExPUkQsIHNheWluZywgV2hvIHNoYWxsIGdvIHVwIGZvciB1cyBhZ2FpbnN0IHRoZSBDYW5hYW5pdGVzIGZpcnN0LCB0byBmaWdodCBhZ2FpbnN0IHRoZW0/CkFuZCB0aGUgTE9SRCBzYWlkLCBKdWRhaCBzaGFsbCBnbyB1cDogYmVob2xkLCBJIGhhdmUgZGVsaXZlcmVkIHRoZSBsYW5kIGludG8gaGlzIGhhbmQuCkFuZCBKdWRhaCBzYWlkIHVudG8gU2ltZW9uIGhpcyBicm90aGVyLCBDb21lIHVwIHdpdGggbWUgaW50byBteSBsb3QsIHRoYXQgd2UgbWF5IGZpZ2h0IGFnYWluc3QgdGhlIENhbmFhbml0ZXM7IGFuZCBJIGxpa2V3aXNlIHdpbGwgZ28gd2l0aCB0aGVlIGludG8gdGh5IGxvdC4gU28gU2ltZW9uIHdlbnQgd2l0aCBoaW0uCkFuZCBKdWRhaCB3ZW50IHVwOyBhbmQgdGhlIExPUkQgZGVsaXZlcmVkIHRoZSBDYW5hYW5pdGVzIGFuZCB0aGUgUGVyaXp6aXRlcyBpbnRvIHRoZWlyIGhhbmQ6IGFuZCB0aGV5IHNsZXcgb2YgdGhlbSBpbiBCZXplayB0ZW4gdGhvdXNhbmQgbWVuLgpBbmQgdGhleSBmb3VuZCBBZG9uaWJlemVrIGluIEJlemVrOiBhbmQgdGhleSBmb3VnaHQgYWdhaW5zdCBoaW0sIGFuZCB0aGV5IHNsZXcgdGhlIENhbmFhbml0ZXMgYW5kIHRoZSBQZXJpenppdGVzLgpCdXQgQWRvbmliZXplayBmbGVkOyBhbmQgdGhleSBwdXJzdWVkIGFmdGVyIGhpbSwgYW5kIGNhdWdodCBoaW0sIGFuZCBjdXQgb2ZmIGhpcyB0aHVtYnMgYW5kIGhpcyBncmVhdCB0b2VzLgpBbmQgQWRvbmliZXplayBzYWlkLCBUaHJlZXNjb3JlIGFuZCB0ZW4ga2luZ3MsIGhhdmluZyB0aGVpciB0aHVtYnMgYW5kIHRoZWlyIGdyZWF0IHRvZXMgY3V0IG9mZiwgZ2F0aGVyZWQgdGhlaXIgbWVhdCB1bmRlciBteSB0YWJsZTogYXMgSSBoYXZlIGRvbmUsIHNvIEdvZCBoYXRoIHJlcXVpdGVkIG1lLiBBbmQgdGhleSBicm91Z2h0IGhpbSB0byBKZXJ1c2FsZW0sIGFuZCB0aGVyZSBoZSBkaWVkLgpOb3cgdGhlIGNoaWxkcmVuIG9mIEp1ZGFoIGhhZCBmb3VnaHQgYWdhaW5zdCBKZXJ1c2FsZW0sIGFuZCBoYWQgdGFrZW4gaXQsIGFuZCBzbWl0dGVuIGl0IHdpdGggdGhlIGVkZ2Ugb2YgdGhlIHN3b3JkLCBhbmQgc2V0IHRoZSBjaXR5IG9uIGZpcmUuCkFuZCBhZnRlcndhcmQgdGhlIGNoaWxkcmVuIG9mIEp1ZGFoIHdlbnQgZG93biB0byBmaWdodCBhZ2FpbnN0IHRoZSBDYW5hYW5pdGVzLCB0aGF0IGR3ZWx0IGluIHRoZSBtb3VudGFpbiwgYW5kIGluIHRoZSBzb3V0aCwgYW5kIGluIHRoZSB2YWxsZXkuCkFuZCBKdWRhaCB3ZW50IGFnYWluc3QgdGhlIENhbmFhbml0ZXMgdGhhdCBkd2VsdCBpbiBIZWJyb246IChub3cgdGhlIG5hbWUgb2YgSGVicm9uIGJlZm9yZSB3YXMgS2lyamF0aGFyYmE6KSBhbmQgdGhleSBzbGV3IFNoZXNoYWksIGFuZCBBaGltYW4sIGFuZCBUYWxtYWkuCkFuZCBmcm9tIHRoZW5jZSBoZSB3ZW50IGFnYWluc3QgdGhlIGluaGFiaXRhbnRzIG9mIERlYmlyOiBhbmQgdGhlIG5hbWUgb2YgRGViaXIgYmVmb3JlIHdhcyBLaXJqYXRoc2VwaGVyOgpBbmQgQ2FsZWIgc2FpZCwgSGUgdGhhdCBzbWl0ZXRoIEtpcmphdGhzZXBoZXIsIGFuZCB0YWtldGggaXQsIHRvIGhpbSB3aWxsIEkgZ2l2ZSBBY2hzYWggbXkgZGF1Z2h0ZXIgdG8gd2lmZS4KQW5kIE90aG5pZWwgdGhlIHNvbiBvZiBLZW5heiwgQ2FsZWIncyB5b3VuZ2VyIGJyb3RoZXIsIHRvb2sgaXQ6IGFuZCBoZSBnYXZlIGhpbSBBY2hzYWggaGlzIGRhdWdodGVyIHRvIHdpZmUuCkFuZCBpdCBjYW1lIHRvIHBhc3MsIHdoZW4gc2hlIGNhbWUgdG8gaGltLCB0aGF0IHNoZSBtb3ZlZCBoaW0gdG8gYXNrIG9mIGhlciBmYXRoZXIgYSBmaWVsZDogYW5kIHNoZSBsaWdodGVkIGZyb20gb2ZmIGhlciBhc3M7IGFuZCBDYWxlYiBzYWlkIHVudG8gaGVyLCBXaGF0IHdpbHQgdGhvdT8KQW5kIHNoZSBzYWlkIHVudG8gaGltLCBHaXZlIG1lIGEgYmxlc3Npbmc6IGZvciB0aG91IGhhc3QgZ2l2ZW4gbWUgYSBzb3V0aCBsYW5kOyBnaXZlIG1lIGFsc28gc3ByaW5ncyBvZiB3YXRlci4gQW5kIENhbGViIGdhdmUgaGVyIHRoZSB1cHBlciBzcHJpbmdzIGFuZCB0aGUgbmV0aGVyIHNwcmluZ3MuCkFuZCB0aGUgY2hpbGRyZW4gb2YgdGhlIEtlbml0ZSwgTW9zZXMnIGZhdGhlciBpbiBsYXcsIHdlbnQgdXAgb3V0IG9mIHRoZSBjaXR5IG9mIHBhbG0gdHJlZXMgd2l0aCB0aGUgY2hpbGRyZW4gb2YgSnVkYWggaW50byB0aGUgd2lsZGVybmVzcyBvZiBKdWRhaCwgd2hpY2ggbGlldGggaW4gdGhlIHNvdXRoIG9mIEFyYWQ7IGFuZCB0aGV5IHdlbnQgYW5kIGR3ZWx0IGFtb25nIHRoZSBwZW9wbGUuCkFuZCBKdWRhaCB3ZW50IHdpdGggU2ltZW9uIGhpcyBicm90aGVyLCBhbmQgdGhleSBzbGV3IHRoZSBDYW5hYW5pdGVzIHRoYXQgaW5oYWJpdGVkIFplcGhhdGgsIGFuZCB1dHRlcmx5IGRlc3Ryb3llZCBpdC4gQW5kIHRoZSBuYW1lIG9mIHRoZSBjaXR5IHdhcyBjYWxsZWQgSG9ybWFoLgpBbHNvIEp1ZGFoIHRvb2sgR2F6YSB3aXRoIHRoZSBjb2FzdCB0aGVyZW9mLCBhbmQgQXNrZWxvbiB3aXRoIHRoZSBjb2FzdCB0aGVyZW9mLCBhbmQgRWtyb24gd2l0aCB0aGUgY29hc3QgdGhlcmVvZi4KQW5kIHRoZSBMT1JEIHdhcyB3aXRoIEp1ZGFoOyBhbmQgaGUgZHJhdmUgb3V0IHRoZSBpbmhhYml0YW50cyBvZiB0aGUgbW91bnRhaW47IGJ1dCBjb3VsZCBub3QgZHJpdmUgb3V0IHRoZSBpbmhhYml0YW50cyBvZiB0aGUgdmFsbGV5LCBiZWNhdXNlIHRoZXkgaGFkIGNoYXJpb3RzIG9mIGlyb24uCkFuZCB0aGV5IGdhdmUgSGVicm9uIHVudG8gQ2FsZWIsIGFzIE1vc2VzIHNhaWQ6IGFuZCBoZSBleHBlbGxlZCB0aGVuY2UgdGhlIHRocmVlIHNvbnMgb2YgQW5hay4KQW5kIHRoZSBjaGlsZHJlbiBvZiBCZW5qYW1pbiBkaWQgbm90IGRyaXZlIG91dCB0aGUgSmVidXNpdGVzIHRoYXQgaW5oYWJpdGVkIEplcnVzYWxlbTsgYnV0IHRoZSBKZWJ1c2l0ZXMgZHdlbGwgd2l0aCB0aGUgY2hpbGRyZW4gb2YgQmVuamFtaW4gaW4gSmVydXNhbGVtIHVudG8gdGhpcyBkYXkuCkFuZCB0aGUgaG91c2Ugb2YgSm9zZXBoLCB0aGV5IGFsc28gd2VudCB1cCBhZ2FpbnN0IEJldGhlbDogYW5kIHRoZSBMT1JEIHdhcyB3aXRoIHRoZW0uCkFuZCB0aGUgaG91c2Ugb2YgSm9zZXBoIHNlbnQgdG8gZGVzY3J5IEJldGhlbC4gKE5vdyB0aGUgbmFtZSBvZiB0aGUgY2l0eSBiZWZvcmUgd2FzIEx1ei4pCkFuZCB0aGUgc3BpZXMgc2F3IGEgbWFuIGNvbWUgZm9ydGggb3V0IG9mIHRoZSBjaXR5LCBhbmQgdGhleSBzYWlkIHVudG8gaGltLCBTaGV3IHVzLCB3ZSBwcmF5IHRoZWUsIHRoZSBlbnRyYW5jZSBpbnRvIHRoZSBjaXR5LCBhbmQgd2Ugd2lsbCBzaGV3IHRoZWUgbWVyY3kuCkFuZCB3aGVuIGhlIHNoZXdlZCB0aGVtIHRoZSBlbnRyYW5jZSBpbnRvIHRoZSBjaXR5LCB0aGV5IHNtb3RlIHRoZSBjaXR5IHdpdGggdGhlIGVkZ2Ugb2YgdGhlIHN3b3JkOyBidXQgdGhleSBsZXQgZ28gdGhlIG1hbiBhbmQgYWxsIGhpcyBmYW1pbHkuCkFuZCB0aGUgbWFuIHdlbnQgaW50byB0aGUgbGFuZCBvZiB0aGUgSGl0dGl0ZXMsIGFuZCBidWlsdCBhIGNpdHksIGFuZCBjYWxsZWQgdGhlIG5hbWUgdGhlcmVvZiBMdXo6IHdoaWNoIGlzIHRoZSBuYW1lIHRoZXJlb2YgdW50byB0aGlzIGRheS4KTmVpdGhlciBkaWQgTWFuYXNzZWggZHJpdmUgb3V0IHRoZSBpbmhhYml0YW50cyBvZiBCZXRoc2hlYW4gYW5kIGhlciB0b3ducywgbm9yIFRhYW5hY2ggYW5kIGhlciB0b3ducywgbm9yIHRoZSBpbmhhYml0YW50cyBvZiBEb3IgYW5kIGhlciB0b3ducywgbm9yIHRoZSBpbmhhYml0YW50cyBvZiBJYmxlYW0gYW5kIGhlciB0b3ducywgbm9yIHRoZSBpbmhhYml0YW50cyBvZiBNZWdpZGRvIGFuZCBoZXIgdG93bnM6IGJ1dCB0aGUgQ2FuYWFuaXRlcyB3b3VsZCBkd2VsbCBpbiB0aGF0IGxhbmQuCkFuZCBpdCBjYW1lIHRvIHBhc3MsIHdoZW4gSXNyYWVsIHdhcyBzdHJvbmcsIHRoYXQgdGhleSBwdXQgdGhlIENhbmFhbml0ZXMgdG8gdHJpYnV0ZSwgYW5kIGRpZCBub3QgdXR0ZXJseSBkcml2ZSB0aGVtIG91dC4KTmVpdGhlciBkaWQgRXBocmFpbSBkcml2ZSBvdXQgdGhlIENhbmFhbml0ZXMgdGhhdCBkd2VsdCBpbiBHZXplcjsgYnV0IHRoZSBDYW5hYW5pdGVzIGR3ZWx0IGluIEdlemVyIGFtb25nIHRoZW0uCk5laXRoZXIgZGlkIFplYnVsdW4gZHJpdmUgb3V0IHRoZSBpbmhhYml0YW50cyBvZiBLaXRyb24sIG5vciB0aGUgaW5oYWJpdGFudHMgb2YgTmFoYWxvbDsgYnV0IHRoZSBDYW5hYW5pdGVzIGR3ZWx0IGFtb25nIHRoZW0sIGFuZCBiZWNhbWUgdHJpYnV0YXJpZXMuCk5laXRoZXIgZGlkIEFzaGVyIGRyaXZlIG91dCB0aGUgaW5oYWJpdGFudHMgb2YgQWNjaG8sIG5vciB0aGUgaW5oYWJpdGFudHMgb2YgWmlkb24sIG5vciBvZiBBaGxhYiwgbm9yIG9mIEFjaHppYiwgbm9yIG9mIEhlbGJhaCwgbm9yIG9mIEFwaGlrLCBub3Igb2YgUmVob2I6CkJ1dCB0aGUgQXNoZXJpdGVzIGR3ZWx0IGFtb25nIHRoZSBDYW5hYW5pdGVzLCB0aGUgaW5oYWJpdGFudHMgb2YgdGhlIGxhbmQ6IGZvciB0aGV5IGRpZCBub3QgZHJpdmUgdGhlbSBvdXQuCk5laXRoZXIgZGlkIE5hcGh0YWxpIGRyaXZlIG91dCB0aGUgaW5oYWJpdGFudHMgb2YgQmV0aHNoZW1lc2gsIG5vciB0aGUgaW5oYWJpdGFudHMgb2YgQmV0aGFuYXRoOyBidXQgaGUgZHdlbHQgYW1vbmcgdGhlIENhbmFhbml0ZXMsIHRoZSBpbmhhYml0YW50cyBvZiB0aGUgbGFuZDogbmV2ZXJ0aGVsZXNzIHRoZSBpbmhhYml0YW50cyBvZiBCZXRoc2hlbWVzaCBhbmQgb2YgQmV0aGFuYXRoIGJlY2FtZSB0cmlidXRhcmllcyB1bnRvIHRoZW0uCkFuZCB0aGUgQW1vcml0ZXMgZm9yY2VkIHRoZSBjaGlsZHJlbiBvZiBEYW4gaW50byB0aGUgbW91bnRhaW46IGZvciB0aGV5IHdvdWxkIG5vdCBzdWZmZXIgdGhlbSB0byBjb21lIGRvd24gdG8gdGhlIHZhbGxleToKQnV0IHRoZSBBbW9yaXRlcyB3b3VsZCBkd2VsbCBpbiBtb3VudCBIZXJlcyBpbiBBaWphbG9uLCBhbmQgaW4gU2hhYWxiaW06IHlldCB0aGUgaGFuZCBvZiB0aGUgaG91c2Ugb2YgSm9zZXBoIHByZXZhaWxlZCwgc28gdGhhdCB0aGV5IGJlY2FtZSB0cmlidXRhcmllcy4KQW5kIHRoZSBjb2FzdCBvZiB0aGUgQW1vcml0ZXMgd2FzIGZyb20gdGhlIGdvaW5nIHVwIHRvIEFrcmFiYmltLCBmcm9tIHRoZSByb2NrLCBhbmQgdXB3YXJkLgpBbmQgYW4gYW5nZWwgb2YgdGhlIExPUkQgY2FtZSB1cCBmcm9tIEdpbGdhbCB0byBCb2NoaW0sIGFuZCBzYWlkLCBJIG1hZGUgeW91IHRvIGdvIHVwIG91dCBvZiBFZ3lwdCwgYW5kIGhhdmUgYnJvdWdodCB5b3UgdW50byB0aGUgbGFuZCB3aGljaCBJIHN3YXJlIHVudG8geW91ciBmYXRoZXJzOyBhbmQgSSBzYWlkLCBJIHdpbGwgbmV2ZXIgYnJlYWsgbXkgY292ZW5hbnQgd2l0aCB5b3UuCkFuZCB5ZSBzaGFsbCBtYWtlIG5vIGxlYWd1ZSB3aXRoIHRoZSBpbmhhYml0YW50cyBvZiB0aGlzIGxhbmQ7IHllIHNoYWxsIHRocm93IGRvd24gdGhlaXIgYWx0YXJzOiBidXQgeWUgaGF2ZSBub3Qgb2JleWVkIG15IHZvaWNlOiB3aHkgaGF2ZSB5ZSBkb25lIHRoaXM/CldoZXJlZm9yZSBJIGFsc28gc2FpZCwgSSB3aWxsIG5vdCBkcml2ZSB0aGVtIG91dCBmcm9tIGJlZm9yZSB5b3U7IGJ1dCB0aGV5IHNoYWxsIGJlIGFzIHRob3JucyBpbiB5b3VyIHNpZGVzLCBhbmQgdGhlaXIgZ29kcyBzaGFsbCBiZSBhIHNuYXJlIHVudG8geW91LgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIHRoZSBhbmdlbCBvZiB0aGUgTE9SRCBzcGFrZSB0aGVzZSB3b3JkcyB1bnRvIGFsbCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLCB0aGF0IHRoZSBwZW9wbGUgbGlmdGVkIHVwIHRoZWlyIHZvaWNlLCBhbmQgd2VwdC4KQW5kIHRoZXkgY2FsbGVkIHRoZSBuYW1lIG9mIHRoYXQgcGxhY2UgQm9jaGltOiBhbmQgdGhleSBzYWNyaWZpY2VkIHRoZXJlIHVudG8gdGhlIExPUkQuCkFuZCB3aGVuIEpvc2h1YSBoYWQgbGV0IHRoZSBwZW9wbGUgZ28sIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgd2VudCBldmVyeSBtYW4gdW50byBoaXMgaW5oZXJpdGFuY2UgdG8gcG9zc2VzcyB0aGUgbGFuZC4KQW5kIHRoZSBwZW9wbGUgc2VydmVkIHRoZSBMT1JEIGFsbCB0aGUgZGF5cyBvZiBKb3NodWEsIGFuZCBhbGwgdGhlIGRheXMgb2YgdGhlIGVsZGVycyB0aGF0IG91dGxpdmVkIEpvc2h1YSwgd2hvIGhhZCBzZWVuIGFsbCB0aGUgZ3JlYXQgd29ya3Mgb2YgdGhlIExPUkQsIHRoYXQgaGUgZGlkIGZvciBJc3JhZWwuCkFuZCBKb3NodWEgdGhlIHNvbiBvZiBOdW4sIHRoZSBzZXJ2YW50IG9mIHRoZSBMT1JELCBkaWVkLCBiZWluZyBhbiBodW5kcmVkIGFuZCB0ZW4geWVhcnMgb2xkLgpBbmQgdGhleSBidXJpZWQgaGltIGluIHRoZSBib3JkZXIgb2YgaGlzIGluaGVyaXRhbmNlIGluIFRpbW5hdGhoZXJlcywgaW4gdGhlIG1vdW50IG9mIEVwaHJhaW0sIG9uIHRoZSBub3J0aCBzaWRlIG9mIHRoZSBoaWxsIEdhYXNoLgpBbmQgYWxzbyBhbGwgdGhhdCBnZW5lcmF0aW9uIHdlcmUgZ2F0aGVyZWQgdW50byB0aGVpciBmYXRoZXJzOiBhbmQgdGhlcmUgYXJvc2UgYW5vdGhlciBnZW5lcmF0aW9uIGFmdGVyIHRoZW0sIHdoaWNoIGtuZXcgbm90IHRoZSBMT1JELCBub3IgeWV0IHRoZSB3b3JrcyB3aGljaCBoZSBoYWQgZG9uZSBmb3IgSXNyYWVsLgpBbmQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBkaWQgZXZpbCBpbiB0aGUgc2lnaHQgb2YgdGhlIExPUkQsIGFuZCBzZXJ2ZWQgQmFhbGltOgpBbmQgdGhleSBmb3Jzb29rIHRoZSBMT1JEIEdvZCBvZiB0aGVpciBmYXRoZXJzLCB3aGljaCBicm91Z2h0IHRoZW0gb3V0IG9mIHRoZSBsYW5kIG9mIEVneXB0LCBhbmQgZm9sbG93ZWQgb3RoZXIgZ29kcywgb2YgdGhlIGdvZHMgb2YgdGhlIHBlb3BsZSB0aGF0IHdlcmUgcm91bmQgYWJvdXQgdGhlbSwgYW5kIGJvd2VkIHRoZW1zZWx2ZXMgdW50byB0aGVtLCBhbmQgcHJvdm9rZWQgdGhlIExPUkQgdG8gYW5nZXIuCkFuZCB0aGV5IGZvcnNvb2sgdGhlIExPUkQsIGFuZCBzZXJ2ZWQgQmFhbCBhbmQgQXNodGFyb3RoLgpBbmQgdGhlIGFuZ2VyIG9mIHRoZSBMT1JEIHdhcyBob3QgYWdhaW5zdCBJc3JhZWwsIGFuZCBoZSBkZWxpdmVyZWQgdGhlbSBpbnRvIHRoZSBoYW5kcyBvZiBzcG9pbGVycyB0aGF0IHNwb2lsZWQgdGhlbSwgYW5kIGhlIHNvbGQgdGhlbSBpbnRvIHRoZSBoYW5kcyBvZiB0aGVpciBlbmVtaWVzIHJvdW5kIGFib3V0LCBzbyB0aGF0IHRoZXkgY291bGQgbm90IGFueSBsb25nZXIgc3RhbmQgYmVmb3JlIHRoZWlyIGVuZW1pZXMuCldoaXRoZXJzb2V2ZXIgdGhleSB3ZW50IG91dCwgdGhlIGhhbmQgb2YgdGhlIExPUkQgd2FzIGFnYWluc3QgdGhlbSBmb3IgZXZpbCwgYXMgdGhlIExPUkQgaGFkIHNhaWQsIGFuZCBhcyB0aGUgTE9SRCBoYWQgc3dvcm4gdW50byB0aGVtOiBhbmQgdGhleSB3ZXJlIGdyZWF0bHkgZGlzdHJlc3NlZC4KTmV2ZXJ0aGVsZXNzIHRoZSBMT1JEIHJhaXNlZCB1cCBqdWRnZXMsIHdoaWNoIGRlbGl2ZXJlZCB0aGVtIG91dCBvZiB0aGUgaGFuZCBvZiB0aG9zZSB0aGF0IHNwb2lsZWQgdGhlbS4KQW5kIHlldCB0aGV5IHdvdWxkIG5vdCBoZWFya2VuIHVudG8gdGhlaXIganVkZ2VzLCBidXQgdGhleSB3ZW50IGEgd2hvcmluZyBhZnRlciBvdGhlciBnb2RzLCBhbmQgYm93ZWQgdGhlbXNlbHZlcyB1bnRvIHRoZW06IHRoZXkgdHVybmVkIHF1aWNrbHkgb3V0IG9mIHRoZSB3YXkgd2hpY2ggdGhlaXIgZmF0aGVycyB3YWxrZWQgaW4sIG9iZXlpbmcgdGhlIGNvbW1hbmRtZW50cyBvZiB0aGUgTE9SRDsgYnV0IHRoZXkgZGlkIG5vdCBzby4KQW5kIHdoZW4gdGhlIExPUkQgcmFpc2VkIHRoZW0gdXAganVkZ2VzLCB0aGVuIHRoZSBMT1JEIHdhcyB3aXRoIHRoZSBqdWRnZSwgYW5kIGRlbGl2ZXJlZCB0aGVtIG91dCBvZiB0aGUgaGFuZCBvZiB0aGVpciBlbmVtaWVzIGFsbCB0aGUgZGF5cyBvZiB0aGUganVkZ2U6IGZvciBpdCByZXBlbnRlZCB0aGUgTE9SRCBiZWNhdXNlIG9mIHRoZWlyIGdyb2FuaW5ncyBieSByZWFzb24gb2YgdGhlbSB0aGF0IG9wcHJlc3NlZCB0aGVtIGFuZCB2ZXhlZCB0aGVtLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIHRoZSBqdWRnZSB3YXMgZGVhZCwgdGhhdCB0aGV5IHJldHVybmVkLCBhbmQgY29ycnVwdGVkIHRoZW1zZWx2ZXMgbW9yZSB0aGFuIHRoZWlyIGZhdGhlcnMsIGluIGZvbGxvd2luZyBvdGhlciBnb2RzIHRvIHNlcnZlIHRoZW0sIGFuZCB0byBib3cgZG93biB1bnRvIHRoZW07IHRoZXkgY2Vhc2VkIG5vdCBmcm9tIHRoZWlyIG93biBkb2luZ3MsIG5vciBmcm9tIHRoZWlyIHN0dWJib3JuIHdheS4KQW5kIHRoZSBhbmdlciBvZiB0aGUgTE9SRCB3YXMgaG90IGFnYWluc3QgSXNyYWVsOyBhbmQgaGUgc2FpZCwgQmVjYXVzZSB0aGF0IHRoaXMgcGVvcGxlIGhhdGggdHJhbnNncmVzc2VkIG15IGNvdmVuYW50IHdoaWNoIEkgY29tbWFuZGVkIHRoZWlyIGZhdGhlcnMsIGFuZCBoYXZlIG5vdCBoZWFya2VuZWQgdW50byBteSB2b2ljZTsKSSBhbHNvIHdpbGwgbm90IGhlbmNlZm9ydGggZHJpdmUgb3V0IGFueSBmcm9tIGJlZm9yZSB0aGVtIG9mIHRoZSBuYXRpb25zIHdoaWNoIEpvc2h1YSBsZWZ0IHdoZW4gaGUgZGllZDoKVGhhdCB0aHJvdWdoIHRoZW0gSSBtYXkgcHJvdmUgSXNyYWVsLCB3aGV0aGVyIHRoZXkgd2lsbCBrZWVwIHRoZSB3YXkgb2YgdGhlIExPUkQgdG8gd2FsayB0aGVyZWluLCBhcyB0aGVpciBmYXRoZXJzIGRpZCBrZWVwIGl0LCBvciBub3QuClRoZXJlZm9yZSB0aGUgTE9SRCBsZWZ0IHRob3NlIG5hdGlvbnMsIHdpdGhvdXQgZHJpdmluZyB0aGVtIG91dCBoYXN0aWx5OyBuZWl0aGVyIGRlbGl2ZXJlZCBoZSB0aGVtIGludG8gdGhlIGhhbmQgb2YgSm9zaHVhLgpOb3cgdGhlc2UgYXJlIHRoZSBuYXRpb25zIHdoaWNoIHRoZSBMT1JEIGxlZnQsIHRvIHByb3ZlIElzcmFlbCBieSB0aGVtLCBldmVuIGFzIG1hbnkgb2YgSXNyYWVsIGFzIGhhZCBub3Qga25vd24gYWxsIHRoZSB3YXJzIG9mIENhbmFhbjsKT25seSB0aGF0IHRoZSBnZW5lcmF0aW9ucyBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIG1pZ2h0IGtub3csIHRvIHRlYWNoIHRoZW0gd2FyLCBhdCB0aGUgbGVhc3Qgc3VjaCBhcyBiZWZvcmUga25ldyBub3RoaW5nIHRoZXJlb2Y7Ck5hbWVseSwgZml2ZSBsb3JkcyBvZiB0aGUgUGhpbGlzdGluZXMsIGFuZCBhbGwgdGhlIENhbmFhbml0ZXMsIGFuZCB0aGUgU2lkb25pYW5zLCBhbmQgdGhlIEhpdml0ZXMgdGhhdCBkd2VsdCBpbiBtb3VudCBMZWJhbm9uLCBmcm9tIG1vdW50IEJhYWxoZXJtb24gdW50byB0aGUgZW50ZXJpbmcgaW4gb2YgSGFtYXRoLgpBbmQgdGhleSB3ZXJlIHRvIHByb3ZlIElzcmFlbCBieSB0aGVtLCB0byBrbm93IHdoZXRoZXIgdGhleSB3b3VsZCBoZWFya2VuIHVudG8gdGhlIGNvbW1hbmRtZW50cyBvZiB0aGUgTE9SRCwgd2hpY2ggaGUgY29tbWFuZGVkIHRoZWlyIGZhdGhlcnMgYnkgdGhlIGhhbmQgb2YgTW9zZXMuCkFuZCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGR3ZWx0IGFtb25nIHRoZSBDYW5hYW5pdGVzLCBIaXR0aXRlcywgYW5kIEFtb3JpdGVzLCBhbmQgUGVyaXp6aXRlcywgYW5kIEhpdml0ZXMsIGFuZCBKZWJ1c2l0ZXM6CkFuZCB0aGV5IHRvb2sgdGhlaXIgZGF1Z2h0ZXJzIHRvIGJlIHRoZWlyIHdpdmVzLCBhbmQgZ2F2ZSB0aGVpciBkYXVnaHRlcnMgdG8gdGhlaXIgc29ucywgYW5kIHNlcnZlZCB0aGVpciBnb2RzLgpBbmQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBkaWQgZXZpbCBpbiB0aGUgc2lnaHQgb2YgdGhlIExPUkQsIGFuZCBmb3JnYXQgdGhlIExPUkQgdGhlaXIgR29kLCBhbmQgc2VydmVkIEJhYWxpbSBhbmQgdGhlIGdyb3Zlcy4KVGhlcmVmb3JlIHRoZSBhbmdlciBvZiB0aGUgTE9SRCB3YXMgaG90IGFnYWluc3QgSXNyYWVsLCBhbmQgaGUgc29sZCB0aGVtIGludG8gdGhlIGhhbmQgb2YgQ2h1c2hhbnJpc2hhdGhhaW0ga2luZyBvZiBNZXNvcG90YW1pYTogYW5kIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgc2VydmVkIENodXNoYW5yaXNoYXRoYWltIGVpZ2h0IHllYXJzLgpBbmQgd2hlbiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGNyaWVkIHVudG8gdGhlIExPUkQsIHRoZSBMT1JEIHJhaXNlZCB1cCBhIGRlbGl2ZXJlciB0byB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLCB3aG8gZGVsaXZlcmVkIHRoZW0sIGV2ZW4gT3RobmllbCB0aGUgc29uIG9mIEtlbmF6LCBDYWxlYidzIHlvdW5nZXIgYnJvdGhlci4KQW5kIHRoZSBTcGlyaXQgb2YgdGhlIExPUkQgY2FtZSB1cG9uIGhpbSwgYW5kIGhlIGp1ZGdlZCBJc3JhZWwsIGFuZCB3ZW50IG91dCB0byB3YXI6IGFuZCB0aGUgTE9SRCBkZWxpdmVyZWQgQ2h1c2hhbnJpc2hhdGhhaW0ga2luZyBvZiBNZXNvcG90YW1pYSBpbnRvIGhpcyBoYW5kOyBhbmQgaGlzIGhhbmQgcHJldmFpbGVkIGFnYWluc3QgQ2h1c2hhbnJpc2hhdGhhaW0uCkFuZCB0aGUgbGFuZCBoYWQgcmVzdCBmb3J0eSB5ZWFycy4gQW5kIE90aG5pZWwgdGhlIHNvbiBvZiBLZW5heiBkaWVkLgpBbmQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBkaWQgZXZpbCBhZ2FpbiBpbiB0aGUgc2lnaHQgb2YgdGhlIExPUkQ6IGFuZCB0aGUgTE9SRCBzdHJlbmd0aGVuZWQgRWdsb24gdGhlIGtpbmcgb2YgTW9hYiBhZ2FpbnN0IElzcmFlbCwgYmVjYXVzZSB0aGV5IGhhZCBkb25lIGV2aWwgaW4gdGhlIHNpZ2h0IG9mIHRoZSBMT1JELgpBbmQgaGUgZ2F0aGVyZWQgdW50byBoaW0gdGhlIGNoaWxkcmVuIG9mIEFtbW9uIGFuZCBBbWFsZWssIGFuZCB3ZW50IGFuZCBzbW90ZSBJc3JhZWwsIGFuZCBwb3NzZXNzZWQgdGhlIGNpdHkgb2YgcGFsbSB0cmVlcy4KU28gdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBzZXJ2ZWQgRWdsb24gdGhlIGtpbmcgb2YgTW9hYiBlaWdodGVlbiB5ZWFycy4KQnV0IHdoZW4gdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBjcmllZCB1bnRvIHRoZSBMT1JELCB0aGUgTE9SRCByYWlzZWQgdGhlbSB1cCBhIGRlbGl2ZXJlciwgRWh1ZCB0aGUgc29uIG9mIEdlcmEsIGEgQmVuamFtaXRlLCBhIG1hbiBsZWZ0aGFuZGVkOiBhbmQgYnkgaGltIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgc2VudCBhIHByZXNlbnQgdW50byBFZ2xvbiB0aGUga2luZyBvZiBNb2FiLgpCdXQgRWh1ZCBtYWRlIGhpbSBhIGRhZ2dlciB3aGljaCBoYWQgdHdvIGVkZ2VzLCBvZiBhIGN1Yml0IGxlbmd0aDsgYW5kIGhlIGRpZCBnaXJkIGl0IHVuZGVyIGhpcyByYWltZW50IHVwb24gaGlzIHJpZ2h0IHRoaWdoLgpBbmQgaGUgYnJvdWdodCB0aGUgcHJlc2VudCB1bnRvIEVnbG9uIGtpbmcgb2YgTW9hYjogYW5kIEVnbG9uIHdhcyBhIHZlcnkgZmF0IG1hbi4KQW5kIHdoZW4gaGUgaGFkIG1hZGUgYW4gZW5kIHRvIG9mZmVyIHRoZSBwcmVzZW50LCBoZSBzZW50IGF3YXkgdGhlIHBlb3BsZSB0aGF0IGJhcmUgdGhlIHByZXNlbnQuCkJ1dCBoZSBoaW1zZWxmIHR1cm5lZCBhZ2FpbiBmcm9tIHRoZSBxdWFycmllcyB0aGF0IHdlcmUgYnkgR2lsZ2FsLCBhbmQgc2FpZCwgSSBoYXZlIGEgc2VjcmV0IGVycmFuZCB1bnRvIHRoZWUsIE8ga2luZzogd2hvIHNhaWQsIEtlZXAgc2lsZW5jZS4gQW5kIGFsbCB0aGF0IHN0b29kIGJ5IGhpbSB3ZW50IG91dCBmcm9tIGhpbS4KQW5kIEVodWQgY2FtZSB1bnRvIGhpbTsgYW5kIGhlIHdhcyBzaXR0aW5nIGluIGEgc3VtbWVyIHBhcmxvdXIsIHdoaWNoIGhlIGhhZCBmb3IgaGltc2VsZiBhbG9uZS4gQW5kIEVodWQgc2FpZCwgSSBoYXZlIGEgbWVzc2FnZSBmcm9tIEdvZCB1bnRvIHRoZWUuIEFuZCBoZSBhcm9zZSBvdXQgb2YgaGlzIHNlYXQuCkFuZCBFaHVkIHB1dCBmb3J0aCBoaXMgbGVmdCBoYW5kLCBhbmQgdG9vayB0aGUgZGFnZ2VyIGZyb20gaGlzIHJpZ2h0IHRoaWdoLCBhbmQgdGhydXN0IGl0IGludG8gaGlzIGJlbGx5OgpBbmQgdGhlIGhhZnQgYWxzbyB3ZW50IGluIGFmdGVyIHRoZSBibGFkZTsgYW5kIHRoZSBmYXQgY2xvc2VkIHVwb24gdGhlIGJsYWRlLCBzbyB0aGF0IGhlIGNvdWxkIG5vdCBkcmF3IHRoZSBkYWdnZXIgb3V0IG9mIGhpcyBiZWxseTsgYW5kIHRoZSBkaXJ0IGNhbWUgb3V0LgpUaGVuIEVodWQgd2VudCBmb3J0aCB0aHJvdWdoIHRoZSBwb3JjaCwgYW5kIHNodXQgdGhlIGRvb3JzIG9mIHRoZSBwYXJsb3VyIHVwb24gaGltLCBhbmQgbG9ja2VkIHRoZW0uCldoZW4gaGUgd2FzIGdvbmUgb3V0LCBoaXMgc2VydmFudHMgY2FtZTsgYW5kIHdoZW4gdGhleSBzYXcgdGhhdCwgYmVob2xkLCB0aGUgZG9vcnMgb2YgdGhlIHBhcmxvdXIgd2VyZSBsb2NrZWQsIHRoZXkgc2FpZCwgU3VyZWx5IGhlIGNvdmVyZXRoIGhpcyBmZWV0IGluIGhpcyBzdW1tZXIgY2hhbWJlci4KQW5kIHRoZXkgdGFycmllZCB0aWxsIHRoZXkgd2VyZSBhc2hhbWVkOiBhbmQsIGJlaG9sZCwgaGUgb3BlbmVkIG5vdCB0aGUgZG9vcnMgb2YgdGhlIHBhcmxvdXI7IHRoZXJlZm9yZSB0aGV5IHRvb2sgYSBrZXksIGFuZCBvcGVuZWQgdGhlbTogYW5kLCBiZWhvbGQsIHRoZWlyIGxvcmQgd2FzIGZhbGxlbiBkb3duIGRlYWQgb24gdGhlIGVhcnRoLgpBbmQgRWh1ZCBlc2NhcGVkIHdoaWxlIHRoZXkgdGFycmllZCwgYW5kIHBhc3NlZCBiZXlvbmQgdGhlIHF1YXJyaWVzLCBhbmQgZXNjYXBlZCB1bnRvIFNlaXJhdGguCkFuZCBpdCBjYW1lIHRvIHBhc3MsIHdoZW4gaGUgd2FzIGNvbWUsIHRoYXQgaGUgYmxldyBhIHRydW1wZXQgaW4gdGhlIG1vdW50YWluIG9mIEVwaHJhaW0sIGFuZCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIHdlbnQgZG93biB3aXRoIGhpbSBmcm9tIHRoZSBtb3VudCwgYW5kIGhlIGJlZm9yZSB0aGVtLgpBbmQgaGUgc2FpZCB1bnRvIHRoZW0sIEZvbGxvdyBhZnRlciBtZTogZm9yIHRoZSBMT1JEIGhhdGggZGVsaXZlcmVkIHlvdXIgZW5lbWllcyB0aGUgTW9hYml0ZXMgaW50byB5b3VyIGhhbmQuIEFuZCB0aGV5IHdlbnQgZG93biBhZnRlciBoaW0sIGFuZCB0b29rIHRoZSBmb3JkcyBvZiBKb3JkYW4gdG93YXJkIE1vYWIsIGFuZCBzdWZmZXJlZCBub3QgYSBtYW4gdG8gcGFzcyBvdmVyLgpBbmQgdGhleSBzbGV3IG9mIE1vYWIgYXQgdGhhdCB0aW1lIGFib3V0IHRlbiB0aG91c2FuZCBtZW4sIGFsbCBsdXN0eSwgYW5kIGFsbCBtZW4gb2YgdmFsb3VyOyBhbmQgdGhlcmUgZXNjYXBlZCBub3QgYSBtYW4uClNvIE1vYWIgd2FzIHN1YmR1ZWQgdGhhdCBkYXkgdW5kZXIgdGhlIGhhbmQgb2YgSXNyYWVsLiBBbmQgdGhlIGxhbmQgaGFkIHJlc3QgZm91cnNjb3JlIHllYXJzLgpBbmQgYWZ0ZXIgaGltIHdhcyBTaGFtZ2FyIHRoZSBzb24gb2YgQW5hdGgsIHdoaWNoIHNsZXcgb2YgdGhlIFBoaWxpc3RpbmVzIHNpeCBodW5kcmVkIG1lbiB3aXRoIGFuIG94IGdvYWQ6IGFuZCBoZSBhbHNvIGRlbGl2ZXJlZCBJc3JhZWwuCkFuZCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGFnYWluIGRpZCBldmlsIGluIHRoZSBzaWdodCBvZiB0aGUgTE9SRCwgd2hlbiBFaHVkIHdhcyBkZWFkLgpBbmQgdGhlIExPUkQgc29sZCB0aGVtIGludG8gdGhlIGhhbmQgb2YgSmFiaW4ga2luZyBvZiBDYW5hYW4sIHRoYXQgcmVpZ25lZCBpbiBIYXpvcjsgdGhlIGNhcHRhaW4gb2Ygd2hvc2UgaG9zdCB3YXMgU2lzZXJhLCB3aGljaCBkd2VsdCBpbiBIYXJvc2hldGggb2YgdGhlIEdlbnRpbGVzLgpBbmQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBjcmllZCB1bnRvIHRoZSBMT1JEOiBmb3IgaGUgaGFkIG5pbmUgaHVuZHJlZCBjaGFyaW90cyBvZiBpcm9uOyBhbmQgdHdlbnR5IHllYXJzIGhlIG1pZ2h0aWx5IG9wcHJlc3NlZCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLgpBbmQgRGVib3JhaCwgYSBwcm9waGV0ZXNzLCB0aGUgd2lmZSBvZiBMYXBpZG90aCwgc2hlIGp1ZGdlZCBJc3JhZWwgYXQgdGhhdCB0aW1lLgpBbmQgc2hlIGR3ZWx0IHVuZGVyIHRoZSBwYWxtIHRyZWUgb2YgRGVib3JhaCBiZXR3ZWVuIFJhbWFoIGFuZCBCZXRoZWwgaW4gbW91bnQgRXBocmFpbTogYW5kIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgY2FtZSB1cCB0byBoZXIgZm9yIGp1ZGdtZW50LgpBbmQgc2hlIHNlbnQgYW5kIGNhbGxlZCBCYXJhayB0aGUgc29uIG9mIEFiaW5vYW0gb3V0IG9mIEtlZGVzaG5hcGh0YWxpLCBhbmQgc2FpZCB1bnRvIGhpbSwgSGF0aCBub3QgdGhlIExPUkQgR29kIG9mIElzcmFlbCBjb21tYW5kZWQsIHNheWluZywgR28gYW5kIGRyYXcgdG93YXJkIG1vdW50IFRhYm9yLCBhbmQgdGFrZSB3aXRoIHRoZWUgdGVuIHRob3VzYW5kIG1lbiBvZiB0aGUgY2hpbGRyZW4gb2YgTmFwaHRhbGkgYW5kIG9mIHRoZSBjaGlsZHJlbiBvZiBaZWJ1bHVuPwpBbmQgSSB3aWxsIGRyYXcgdW50byB0aGVlIHRvIHRoZSByaXZlciBLaXNob24gU2lzZXJhLCB0aGUgY2FwdGFpbiBvZiBKYWJpbidzIGFybXksIHdpdGggaGlzIGNoYXJpb3RzIGFuZCBoaXMgbXVsdGl0dWRlOyBhbmQgSSB3aWxsIGRlbGl2ZXIgaGltIGludG8gdGhpbmUgaGFuZC4KQW5kIEJhcmFrIHNhaWQgdW50byBoZXIsIElmIHRob3Ugd2lsdCBnbyB3aXRoIG1lLCB0aGVuIEkgd2lsbCBnbzogYnV0IGlmIHRob3Ugd2lsdCBub3QgZ28gd2l0aCBtZSwgdGhlbiBJIHdpbGwgbm90IGdvLgpBbmQgc2hlIHNhaWQsIEkgd2lsbCBzdXJlbHkgZ28gd2l0aCB0aGVlOiBub3R3aXRoc3RhbmRpbmcgdGhlIGpvdXJuZXkgdGhhdCB0aG91IHRha2VzdCBzaGFsbCBub3QgYmUgZm9yIHRoaW5lIGhvbm91cjsgZm9yIHRoZSBMT1JEIHNoYWxsIHNlbGwgU2lzZXJhIGludG8gdGhlIGhhbmQgb2YgYSB3b21hbi4gQW5kIERlYm9yYWggYXJvc2UsIGFuZCB3ZW50IHdpdGggQmFyYWsgdG8gS2VkZXNoLgpBbmQgQmFyYWsgY2FsbGVkIFplYnVsdW4gYW5kIE5hcGh0YWxpIHRvIEtlZGVzaDsgYW5kIGhlIHdlbnQgdXAgd2l0aCB0ZW4gdGhvdXNhbmQgbWVuIGF0IGhpcyBmZWV0OiBhbmQgRGVib3JhaCB3ZW50IHVwIHdpdGggaGltLgpOb3cgSGViZXIgdGhlIEtlbml0ZSwgd2hpY2ggd2FzIG9mIHRoZSBjaGlsZHJlbiBvZiBIb2JhYiB0aGUgZmF0aGVyIGluIGxhdyBvZiBNb3NlcywgaGFkIHNldmVyZWQgaGltc2VsZiBmcm9tIHRoZSBLZW5pdGVzLCBhbmQgcGl0Y2hlZCBoaXMgdGVudCB1bnRvIHRoZSBwbGFpbiBvZiBaYWFuYWltLCB3aGljaCBpcyBieSBLZWRlc2guCkFuZCB0aGV5IHNoZXdlZCBTaXNlcmEgdGhhdCBCYXJhayB0aGUgc29uIG9mIEFiaW5vYW0gd2FzIGdvbmUgdXAgdG8gbW91bnQgVGFib3IuCkFuZCBTaXNlcmEgZ2F0aGVyZWQgdG9nZXRoZXIgYWxsIGhpcyBjaGFyaW90cywgZXZlbiBuaW5lIGh1bmRyZWQgY2hhcmlvdHMgb2YgaXJvbiwgYW5kIGFsbCB0aGUgcGVvcGxlIHRoYXQgd2VyZSB3aXRoIGhpbSwgZnJvbSBIYXJvc2hldGggb2YgdGhlIEdlbnRpbGVzIHVudG8gdGhlIHJpdmVyIG9mIEtpc2hvbi4KQW5kIERlYm9yYWggc2FpZCB1bnRvIEJhcmFrLCBVcDsgZm9yIHRoaXMgaXMgdGhlIGRheSBpbiB3aGljaCB0aGUgTE9SRCBoYXRoIGRlbGl2ZXJlZCBTaXNlcmEgaW50byB0aGluZSBoYW5kOiBpcyBub3QgdGhlIExPUkQgZ29uZSBvdXQgYmVmb3JlIHRoZWU/IFNvIEJhcmFrIHdlbnQgZG93biBmcm9tIG1vdW50IFRhYm9yLCBhbmQgdGVuIHRob3VzYW5kIG1lbiBhZnRlciBoaW0uCkFuZCB0aGUgTE9SRCBkaXNjb21maXRlZCBTaXNlcmEsIGFuZCBhbGwgaGlzIGNoYXJpb3RzLCBhbmQgYWxsIGhpcyBob3N0LCB3aXRoIHRoZSBlZGdlIG9mIHRoZSBzd29yZCBiZWZvcmUgQmFyYWs7IHNvIHRoYXQgU2lzZXJhIGxpZ2h0ZWQgZG93biBvZmYgaGlzIGNoYXJpb3QsIGFuZCBmbGVkIGF3YXkgb24gaGlzIGZlZXQuCkJ1dCBCYXJhayBwdXJzdWVkIGFmdGVyIHRoZSBjaGFyaW90cywgYW5kIGFmdGVyIHRoZSBob3N0LCB1bnRvIEhhcm9zaGV0aCBvZiB0aGUgR2VudGlsZXM6IGFuZCBhbGwgdGhlIGhvc3Qgb2YgU2lzZXJhIGZlbGwgdXBvbiB0aGUgZWRnZSBvZiB0aGUgc3dvcmQ7IGFuZCB0aGVyZSB3YXMgbm90IGEgbWFuIGxlZnQuCkhvd2JlaXQgU2lzZXJhIGZsZWQgYXdheSBvbiBoaXMgZmVldCB0byB0aGUgdGVudCBvZiBKYWVsIHRoZSB3aWZlIG9mIEhlYmVyIHRoZSBLZW5pdGU6IGZvciB0aGVyZSB3YXMgcGVhY2UgYmV0d2VlbiBKYWJpbiB0aGUga2luZyBvZiBIYXpvciBhbmQgdGhlIGhvdXNlIG9mIEhlYmVyIHRoZSBLZW5pdGUuCkFuZCBKYWVsIHdlbnQgb3V0IHRvIG1lZXQgU2lzZXJhLCBhbmQgc2FpZCB1bnRvIGhpbSwgVHVybiBpbiwgbXkgbG9yZCwgdHVybiBpbiB0byBtZTsgZmVhciBub3QuIEFuZCB3aGVuIGhlIGhhZCB0dXJuZWQgaW4gdW50byBoZXIgaW50byB0aGUgdGVudCwgc2hlIGNvdmVyZWQgaGltIHdpdGggYSBtYW50bGUuCkFuZCBoZSBzYWlkIHVudG8gaGVyLCBHaXZlIG1lLCBJIHByYXkgdGhlZSwgYSBsaXR0bGUgd2F0ZXIgdG8gZHJpbms7IGZvciBJIGFtIHRoaXJzdHkuIEFuZCBzaGUgb3BlbmVkIGEgYm90dGxlIG9mIG1pbGssIGFuZCBnYXZlIGhpbSBkcmluaywgYW5kIGNvdmVyZWQgaGltLgpBZ2FpbiBoZSBzYWlkIHVudG8gaGVyLCBTdGFuZCBpbiB0aGUgZG9vciBvZiB0aGUgdGVudCwgYW5kIGl0IHNoYWxsIGJlLCB3aGVuIGFueSBtYW4gZG90aCBjb21lIGFuZCBlbnF1aXJlIG9mIHRoZWUsIGFuZCBzYXksIElzIHRoZXJlIGFueSBtYW4gaGVyZT8gdGhhdCB0aG91IHNoYWx0IHNheSwgTm8uClRoZW4gSmFlbCBIZWJlcidzIHdpZmUgdG9vayBhIG5haWwgb2YgdGhlIHRlbnQsIGFuZCB0b29rIGFuIGhhbW1lciBpbiBoZXIgaGFuZCwgYW5kIHdlbnQgc29mdGx5IHVudG8gaGltLCBhbmQgc21vdGUgdGhlIG5haWwgaW50byBoaXMgdGVtcGxlcywgYW5kIGZhc3RlbmVkIGl0IGludG8gdGhlIGdyb3VuZDogZm9yIGhlIHdhcyBmYXN0IGFzbGVlcCBhbmQgd2VhcnkuIFNvIGhlIGRpZWQuCkFuZCwgYmVob2xkLCBhcyBCYXJhayBwdXJzdWVkIFNpc2VyYSwgSmFlbCBjYW1lIG91dCB0byBtZWV0IGhpbSwgYW5kIHNhaWQgdW50byBoaW0sIENvbWUsIGFuZCBJIHdpbGwgc2hldyB0aGVlIHRoZSBtYW4gd2hvbSB0aG91IHNlZWtlc3QuIEFuZCB3aGVuIGhlIGNhbWUgaW50byBoZXIgdGVudCwgYmVob2xkLCBTaXNlcmEgbGF5IGRlYWQsIGFuZCB0aGUgbmFpbCB3YXMgaW4gaGlzIHRlbXBsZXMuClNvIEdvZCBzdWJkdWVkIG9uIHRoYXQgZGF5IEphYmluIHRoZSBraW5nIG9mIENhbmFhbiBiZWZvcmUgdGhlIGNoaWxkcmVuIG9mIElzcmFlbC4KQW5kIHRoZSBoYW5kIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgcHJvc3BlcmVkLCBhbmQgcHJldmFpbGVkIGFnYWluc3QgSmFiaW4gdGhlIGtpbmcgb2YgQ2FuYWFuLCB1bnRpbCB0aGV5IGhhZCBkZXN0cm95ZWQgSmFiaW4ga2luZyBvZiBDYW5hYW4uClRoZW4gc2FuZyBEZWJvcmFoIGFuZCBCYXJhayB0aGUgc29uIG9mIEFiaW5vYW0gb24gdGhhdCBkYXksIHNheWluZywKUHJhaXNlIHllIHRoZSBMT1JEIGZvciB0aGUgYXZlbmdpbmcgb2YgSXNyYWVsLCB3aGVuIHRoZSBwZW9wbGUgd2lsbGluZ2x5IG9mZmVyZWQgdGhlbXNlbHZlcy4KSGVhciwgTyB5ZSBraW5nczsgZ2l2ZSBlYXIsIE8geWUgcHJpbmNlczsgSSwgZXZlbiBJLCB3aWxsIHNpbmcgdW50byB0aGUgTE9SRDsgSSB3aWxsIHNpbmcgcHJhaXNlIHRvIHRoZSBMT1JEIEdvZCBvZiBJc3JhZWwuCkxPUkQsIHdoZW4gdGhvdSB3ZW50ZXN0IG91dCBvZiBTZWlyLCB3aGVuIHRob3UgbWFyY2hlZHN0IG91dCBvZiB0aGUgZmllbGQgb2YgRWRvbSwgdGhlIGVhcnRoIHRyZW1ibGVkLCBhbmQgdGhlIGhlYXZlbnMgZHJvcHBlZCwgdGhlIGNsb3VkcyBhbHNvIGRyb3BwZWQgd2F0ZXIuClRoZSBtb3VudGFpbnMgbWVsdGVkIGZyb20gYmVmb3JlIHRoZSBMT1JELCBldmVuIHRoYXQgU2luYWkgZnJvbSBiZWZvcmUgdGhlIExPUkQgR29kIG9mIElzcmFlbC4KSW4gdGhlIGRheXMgb2YgU2hhbWdhciB0aGUgc29uIG9mIEFuYXRoLCBpbiB0aGUgZGF5cyBvZiBKYWVsLCB0aGUgaGlnaHdheXMgd2VyZSB1bm9jY3VwaWVkLCBhbmQgdGhlIHRyYXZlbGxlcnMgd2Fsa2VkIHRocm91Z2ggYnl3YXlzLgpUaGUgaW5oYWJpdGFudHMgb2YgdGhlIHZpbGxhZ2VzIGNlYXNlZCwgdGhleSBjZWFzZWQgaW4gSXNyYWVsLCB1bnRpbCB0aGF0IEkgRGVib3JhaCBhcm9zZSwgdGhhdCBJIGFyb3NlIGEgbW90aGVyIGluIElzcmFlbC4KVGhleSBjaG9zZSBuZXcgZ29kczsgdGhlbiB3YXMgd2FyIGluIHRoZSBnYXRlczogd2FzIHRoZXJlIGEgc2hpZWxkIG9yIHNwZWFyIHNlZW4gYW1vbmcgZm9ydHkgdGhvdXNhbmQgaW4gSXNyYWVsPwpNeSBoZWFydCBpcyB0b3dhcmQgdGhlIGdvdmVybm9ycyBvZiBJc3JhZWwsIHRoYXQgb2ZmZXJlZCB0aGVtc2VsdmVzIHdpbGxpbmdseSBhbW9uZyB0aGUgcGVvcGxlLiBCbGVzcyB5ZSB0aGUgTE9SRC4KU3BlYWssIHllIHRoYXQgcmlkZSBvbiB3aGl0ZSBhc3NlcywgeWUgdGhhdCBzaXQgaW4ganVkZ21lbnQsIGFuZCB3YWxrIGJ5IHRoZSB3YXkuClRoZXkgdGhhdCBhcmUgZGVsaXZlcmVkIGZyb20gdGhlIG5vaXNlIG9mIGFyY2hlcnMgaW4gdGhlIHBsYWNlcyBvZiBkcmF3aW5nIHdhdGVyLCB0aGVyZSBzaGFsbCB0aGV5IHJlaGVhcnNlIHRoZSByaWdodGVvdXMgYWN0cyBvZiB0aGUgTE9SRCwgZXZlbiB0aGUgcmlnaHRlb3VzIGFjdHMgdG93YXJkIHRoZSBpbmhhYml0YW50cyBvZiBoaXMgdmlsbGFnZXMgaW4gSXNyYWVsOiB0aGVuIHNoYWxsIHRoZSBwZW9wbGUgb2YgdGhlIExPUkQgZ28gZG93biB0byB0aGUgZ2F0ZXMuCkF3YWtlLCBhd2FrZSwgRGVib3JhaDogYXdha2UsIGF3YWtlLCB1dHRlciBhIHNvbmc6IGFyaXNlLCBCYXJhaywgYW5kIGxlYWQgdGh5IGNhcHRpdml0eSBjYXB0aXZlLCB0aG91IHNvbiBvZiBBYmlub2FtLgpUaGVuIGhlIG1hZGUgaGltIHRoYXQgcmVtYWluZXRoIGhhdmUgZG9taW5pb24gb3ZlciB0aGUgbm9ibGVzIGFtb25nIHRoZSBwZW9wbGU6IHRoZSBMT1JEIG1hZGUgbWUgaGF2ZSBkb21pbmlvbiBvdmVyIHRoZSBtaWdodHkuCk91dCBvZiBFcGhyYWltIHdhcyB0aGVyZSBhIHJvb3Qgb2YgdGhlbSBhZ2FpbnN0IEFtYWxlazsgYWZ0ZXIgdGhlZSwgQmVuamFtaW4sIGFtb25nIHRoeSBwZW9wbGU7IG91dCBvZiBNYWNoaXIgY2FtZSBkb3duIGdvdmVybm9ycywgYW5kIG91dCBvZiBaZWJ1bHVuIHRoZXkgdGhhdCBoYW5kbGUgdGhlIHBlbiBvZiB0aGUgd3JpdGVyLgpBbmQgdGhlIHByaW5jZXMgb2YgSXNzYWNoYXIgd2VyZSB3aXRoIERlYm9yYWg7IGV2ZW4gSXNzYWNoYXIsIGFuZCBhbHNvIEJhcmFrOiBoZSB3YXMgc2VudCBvbiBmb290IGludG8gdGhlIHZhbGxleS4gRm9yIHRoZSBkaXZpc2lvbnMgb2YgUmV1YmVuIHRoZXJlIHdlcmUgZ3JlYXQgdGhvdWdodHMgb2YgaGVhcnQuCldoeSBhYm9kZXN0IHRob3UgYW1vbmcgdGhlIHNoZWVwZm9sZHMsIHRvIGhlYXIgdGhlIGJsZWF0aW5ncyBvZiB0aGUgZmxvY2tzPyBGb3IgdGhlIGRpdmlzaW9ucyBvZiBSZXViZW4gdGhlcmUgd2VyZSBncmVhdCBzZWFyY2hpbmdzIG9mIGhlYXJ0LgpHaWxlYWQgYWJvZGUgYmV5b25kIEpvcmRhbjogYW5kIHdoeSBkaWQgRGFuIHJlbWFpbiBpbiBzaGlwcz8gQXNoZXIgY29udGludWVkIG9uIHRoZSBzZWEgc2hvcmUsIGFuZCBhYm9kZSBpbiBoaXMgYnJlYWNoZXMuClplYnVsdW4gYW5kIE5hcGh0YWxpIHdlcmUgYSBwZW9wbGUgdGhhdCBqZW9wYXJkZWQgdGhlaXIgbGl2ZXMgdW50byB0aGUgZGVhdGggaW4gdGhlIGhpZ2ggcGxhY2VzIG9mIHRoZSBmaWVsZC4KVGhlIGtpbmdzIGNhbWUgYW5kIGZvdWdodCwgdGhlbiBmb3VnaHQgdGhlIGtpbmdzIG9mIENhbmFhbiBpbiBUYWFuYWNoIGJ5IHRoZSB3YXRlcnMgb2YgTWVnaWRkbzsgdGhleSB0b29rIG5vIGdhaW4gb2YgbW9uZXkuClRoZXkgZm91Z2h0IGZyb20gaGVhdmVuOyB0aGUgc3RhcnMgaW4gdGhlaXIgY291cnNlcyBmb3VnaHQgYWdhaW5zdCBTaXNlcmEuClRoZSByaXZlciBvZiBLaXNob24gc3dlcHQgdGhlbSBhd2F5LCB0aGF0IGFuY2llbnQgcml2ZXIsIHRoZSByaXZlciBLaXNob24uIE8gbXkgc291bCwgdGhvdSBoYXN0IHRyb2RkZW4gZG93biBzdHJlbmd0aC4KVGhlbiB3ZXJlIHRoZSBob3JzZWhvb2ZzIGJyb2tlbiBieSB0aGUgbWVhbnMgb2YgdGhlIHByYW5zaW5ncywgdGhlIHByYW5zaW5ncyBvZiB0aGVpciBtaWdodHkgb25lcy4KQ3Vyc2UgeWUgTWVyb3osIHNhaWQgdGhlIGFuZ2VsIG9mIHRoZSBMT1JELCBjdXJzZSB5ZSBiaXR0ZXJseSB0aGUgaW5oYWJpdGFudHMgdGhlcmVvZjsgYmVjYXVzZSB0aGV5IGNhbWUgbm90IHRvIHRoZSBoZWxwIG9mIHRoZSBMT1JELCB0byB0aGUgaGVscCBvZiB0aGUgTE9SRCBhZ2FpbnN0IHRoZSBtaWdodHkuCkJsZXNzZWQgYWJvdmUgd29tZW4gc2hhbGwgSmFlbCB0aGUgd2lmZSBvZiBIZWJlciB0aGUgS2VuaXRlIGJlLCBibGVzc2VkIHNoYWxsIHNoZSBiZSBhYm92ZSB3b21lbiBpbiB0aGUgdGVudC4KSGUgYXNrZWQgd2F0ZXIsIGFuZCBzaGUgZ2F2ZSBoaW0gbWlsazsgc2hlIGJyb3VnaHQgZm9ydGggYnV0dGVyIGluIGEgbG9yZGx5IGRpc2guClNoZSBwdXQgaGVyIGhhbmQgdG8gdGhlIG5haWwsIGFuZCBoZXIgcmlnaHQgaGFuZCB0byB0aGUgd29ya21lbidzIGhhbW1lcjsgYW5kIHdpdGggdGhlIGhhbW1lciBzaGUgc21vdGUgU2lzZXJhLCBzaGUgc21vdGUgb2ZmIGhpcyBoZWFkLCB3aGVuIHNoZSBoYWQgcGllcmNlZCBhbmQgc3RyaWNrZW4gdGhyb3VnaCBoaXMgdGVtcGxlcy4KQXQgaGVyIGZlZXQgaGUgYm93ZWQsIGhlIGZlbGwsIGhlIGxheSBkb3duOiBhdCBoZXIgZmVldCBoZSBib3dlZCwgaGUgZmVsbDogd2hlcmUgaGUgYm93ZWQsIHRoZXJlIGhlIGZlbGwgZG93biBkZWFkLgpUaGUgbW90aGVyIG9mIFNpc2VyYSBsb29rZWQgb3V0IGF0IGEgd2luZG93LCBhbmQgY3JpZWQgdGhyb3VnaCB0aGUgbGF0dGljZSwgV2h5IGlzIGhpcyBjaGFyaW90IHNvIGxvbmcgaW4gY29taW5nPyB3aHkgdGFycnkgdGhlIHdoZWVscyBvZiBoaXMgY2hhcmlvdHM/CkhlciB3aXNlIGxhZGllcyBhbnN3ZXJlZCBoZXIsIHllYSwgc2hlIHJldHVybmVkIGFuc3dlciB0byBoZXJzZWxmLApIYXZlIHRoZXkgbm90IHNwZWQ/IGhhdmUgdGhleSBub3QgZGl2aWRlZCB0aGUgcHJleTsgdG8gZXZlcnkgbWFuIGEgZGFtc2VsIG9yIHR3bzsgdG8gU2lzZXJhIGEgcHJleSBvZiBkaXZlcnMgY29sb3VycywgYSBwcmV5IG9mIGRpdmVycyBjb2xvdXJzIG9mIG5lZWRsZXdvcmssIG9mIGRpdmVycyBjb2xvdXJzIG9mIG5lZWRsZXdvcmsgb24gYm90aCBzaWRlcywgbWVldCBmb3IgdGhlIG5lY2tzIG9mIHRoZW0gdGhhdCB0YWtlIHRoZSBzcG9pbD8KU28gbGV0IGFsbCB0aGluZSBlbmVtaWVzIHBlcmlzaCwgTyBMT1JEOiBidXQgbGV0IHRoZW0gdGhhdCBsb3ZlIGhpbSBiZSBhcyB0aGUgc3VuIHdoZW4gaGUgZ29ldGggZm9ydGggaW4gaGlzIG1pZ2h0LiBBbmQgdGhlIGxhbmQgaGFkIHJlc3QgZm9ydHkgeWVhcnMuCkFuZCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGRpZCBldmlsIGluIHRoZSBzaWdodCBvZiB0aGUgTE9SRDogYW5kIHRoZSBMT1JEIGRlbGl2ZXJlZCB0aGVtIGludG8gdGhlIGhhbmQgb2YgTWlkaWFuIHNldmVuIHllYXJzLgpBbmQgdGhlIGhhbmQgb2YgTWlkaWFuIHByZXZhaWxlZCBhZ2FpbnN0IElzcmFlbDogYW5kIGJlY2F1c2Ugb2YgdGhlIE1pZGlhbml0ZXMgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBtYWRlIHRoZW0gdGhlIGRlbnMgd2hpY2ggYXJlIGluIHRoZSBtb3VudGFpbnMsIGFuZCBjYXZlcywgYW5kIHN0cm9uZyBob2xkcy4KQW5kIHNvIGl0IHdhcywgd2hlbiBJc3JhZWwgaGFkIHNvd24sIHRoYXQgdGhlIE1pZGlhbml0ZXMgY2FtZSB1cCwgYW5kIHRoZSBBbWFsZWtpdGVzLCBhbmQgdGhlIGNoaWxkcmVuIG9mIHRoZSBlYXN0LCBldmVuIHRoZXkgY2FtZSB1cCBhZ2FpbnN0IHRoZW07CkFuZCB0aGV5IGVuY2FtcGVkIGFnYWluc3QgdGhlbSwgYW5kIGRlc3Ryb3llZCB0aGUgaW5jcmVhc2Ugb2YgdGhlIGVhcnRoLCB0aWxsIHRob3UgY29tZSB1bnRvIEdhemEsIGFuZCBsZWZ0IG5vIHN1c3RlbmFuY2UgZm9yIElzcmFlbCwgbmVpdGhlciBzaGVlcCwgbm9yIG94LCBub3IgYXNzLgpGb3IgdGhleSBjYW1lIHVwIHdpdGggdGhlaXIgY2F0dGxlIGFuZCB0aGVpciB0ZW50cywgYW5kIHRoZXkgY2FtZSBhcyBncmFzc2hvcHBlcnMgZm9yIG11bHRpdHVkZTsgZm9yIGJvdGggdGhleSBhbmQgdGhlaXIgY2FtZWxzIHdlcmUgd2l0aG91dCBudW1iZXI6IGFuZCB0aGV5IGVudGVyZWQgaW50byB0aGUgbGFuZCB0byBkZXN0cm95IGl0LgpBbmQgSXNyYWVsIHdhcyBncmVhdGx5IGltcG92ZXJpc2hlZCBiZWNhdXNlIG9mIHRoZSBNaWRpYW5pdGVzOyBhbmQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBjcmllZCB1bnRvIHRoZSBMT1JELgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgY3JpZWQgdW50byB0aGUgTE9SRCBiZWNhdXNlIG9mIHRoZSBNaWRpYW5pdGVzLApUaGF0IHRoZSBMT1JEIHNlbnQgYSBwcm9waGV0IHVudG8gdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgd2hpY2ggc2FpZCB1bnRvIHRoZW0sIFRodXMgc2FpdGggdGhlIExPUkQgR29kIG9mIElzcmFlbCwgSSBicm91Z2h0IHlvdSB1cCBmcm9tIEVneXB0LCBhbmQgYnJvdWdodCB5b3UgZm9ydGggb3V0IG9mIHRoZSBob3VzZSBvZiBib25kYWdlOwpBbmQgSSBkZWxpdmVyZWQgeW91IG91dCBvZiB0aGUgaGFuZCBvZiB0aGUgRWd5cHRpYW5zLCBhbmQgb3V0IG9mIHRoZSBoYW5kIG9mIGFsbCB0aGF0IG9wcHJlc3NlZCB5b3UsIGFuZCBkcmF2ZSB0aGVtIG91dCBmcm9tIGJlZm9yZSB5b3UsIGFuZCBnYXZlIHlvdSB0aGVpciBsYW5kOwpBbmQgSSBzYWlkIHVudG8geW91LCBJIGFtIHRoZSBMT1JEIHlvdXIgR29kOyBmZWFyIG5vdCB0aGUgZ29kcyBvZiB0aGUgQW1vcml0ZXMsIGluIHdob3NlIGxhbmQgeWUgZHdlbGw6IGJ1dCB5ZSBoYXZlIG5vdCBvYmV5ZWQgbXkgdm9pY2UuCkFuZCB0aGVyZSBjYW1lIGFuIGFuZ2VsIG9mIHRoZSBMT1JELCBhbmQgc2F0IHVuZGVyIGFuIG9hayB3aGljaCB3YXMgaW4gT3BocmFoLCB0aGF0IHBlcnRhaW5lZCB1bnRvIEpvYXNoIHRoZSBBYmllenJpdGU6IGFuZCBoaXMgc29uIEdpZGVvbiB0aHJlc2hlZCB3aGVhdCBieSB0aGUgd2luZXByZXNzLCB0byBoaWRlIGl0IGZyb20gdGhlIE1pZGlhbml0ZXMuCkFuZCB0aGUgYW5nZWwgb2YgdGhlIExPUkQgYXBwZWFyZWQgdW50byBoaW0sIGFuZCBzYWlkIHVudG8gaGltLCBUaGUgTE9SRCBpcyB3aXRoIHRoZWUsIHRob3UgbWlnaHR5IG1hbiBvZiB2YWxvdXIuCkFuZCBHaWRlb24gc2FpZCB1bnRvIGhpbSwgT2ggbXkgTG9yZCwgaWYgdGhlIExPUkQgYmUgd2l0aCB1cywgd2h5IHRoZW4gaXMgYWxsIHRoaXMgYmVmYWxsZW4gdXM/IGFuZCB3aGVyZSBiZSBhbGwgaGlzIG1pcmFjbGVzIHdoaWNoIG91ciBmYXRoZXJzIHRvbGQgdXMgb2YsIHNheWluZywgRGlkIG5vdCB0aGUgTE9SRCBicmluZyB1cyB1cCBmcm9tIEVneXB0PyBidXQgbm93IHRoZSBMT1JEIGhhdGggZm9yc2FrZW4gdXMsIGFuZCBkZWxpdmVyZWQgdXMgaW50byB0aGUgaGFuZHMgb2YgdGhlIE1pZGlhbml0ZXMuCkFuZCB0aGUgTE9SRCBsb29rZWQgdXBvbiBoaW0sIGFuZCBzYWlkLCBHbyBpbiB0aGlzIHRoeSBtaWdodCwgYW5kIHRob3Ugc2hhbHQgc2F2ZSBJc3JhZWwgZnJvbSB0aGUgaGFuZCBvZiB0aGUgTWlkaWFuaXRlczogaGF2ZSBub3QgSSBzZW50IHRoZWU/CkFuZCBoZSBzYWlkIHVudG8gaGltLCBPaCBteSBMb3JkLCB3aGVyZXdpdGggc2hhbGwgSSBzYXZlIElzcmFlbD8gYmVob2xkLCBteSBmYW1pbHkgaXMgcG9vciBpbiBNYW5hc3NlaCwgYW5kIEkgYW0gdGhlIGxlYXN0IGluIG15IGZhdGhlcidzIGhvdXNlLgpBbmQgdGhlIExPUkQgc2FpZCB1bnRvIGhpbSwgU3VyZWx5IEkgd2lsbCBiZSB3aXRoIHRoZWUsIGFuZCB0aG91IHNoYWx0IHNtaXRlIHRoZSBNaWRpYW5pdGVzIGFzIG9uZSBtYW4uCkFuZCBoZSBzYWlkIHVudG8gaGltLCBJZiBub3cgSSBoYXZlIGZvdW5kIGdyYWNlIGluIHRoeSBzaWdodCwgdGhlbiBzaGV3IG1lIGEgc2lnbiB0aGF0IHRob3UgdGFsa2VzdCB3aXRoIG1lLgpEZXBhcnQgbm90IGhlbmNlLCBJIHByYXkgdGhlZSwgdW50aWwgSSBjb21lIHVudG8gdGhlZSwgYW5kIGJyaW5nIGZvcnRoIG15IHByZXNlbnQsIGFuZCBzZXQgaXQgYmVmb3JlIHRoZWUuIEFuZCBoZSBzYWlkLCBJIHdpbGwgdGFycnkgdW50aWwgdGhvdSBjb21lIGFnYWluLgpBbmQgR2lkZW9uIHdlbnQgaW4sIGFuZCBtYWRlIHJlYWR5IGEga2lkLCBhbmQgdW5sZWF2ZW5lZCBjYWtlcyBvZiBhbiBlcGhhaCBvZiBmbG91cjogdGhlIGZsZXNoIGhlIHB1dCBpbiBhIGJhc2tldCwgYW5kIGhlIHB1dCB0aGUgYnJvdGggaW4gYSBwb3QsIGFuZCBicm91Z2h0IGl0IG91dCB1bnRvIGhpbSB1bmRlciB0aGUgb2FrLCBhbmQgcHJlc2VudGVkIGl0LgpBbmQgdGhlIGFuZ2VsIG9mIEdvZCBzYWlkIHVudG8gaGltLCBUYWtlIHRoZSBmbGVzaCBhbmQgdGhlIHVubGVhdmVuZWQgY2FrZXMsIGFuZCBsYXkgdGhlbSB1cG9uIHRoaXMgcm9jaywgYW5kIHBvdXIgb3V0IHRoZSBicm90aC4gQW5kIGhlIGRpZCBzby4KVGhlbiB0aGUgYW5nZWwgb2YgdGhlIExPUkQgcHV0IGZvcnRoIHRoZSBlbmQgb2YgdGhlIHN0YWZmIHRoYXQgd2FzIGluIGhpcyBoYW5kLCBhbmQgdG91Y2hlZCB0aGUgZmxlc2ggYW5kIHRoZSB1bmxlYXZlbmVkIGNha2VzOyBhbmQgdGhlcmUgcm9zZSB1cCBmaXJlIG91dCBvZiB0aGUgcm9jaywgYW5kIGNvbnN1bWVkIHRoZSBmbGVzaCBhbmQgdGhlIHVubGVhdmVuZWQgY2FrZXMuIFRoZW4gdGhlIGFuZ2VsIG9mIHRoZSBMT1JEIGRlcGFydGVkIG91dCBvZiBoaXMgc2lnaHQuCkFuZCB3aGVuIEdpZGVvbiBwZXJjZWl2ZWQgdGhhdCBoZSB3YXMgYW4gYW5nZWwgb2YgdGhlIExPUkQsIEdpZGVvbiBzYWlkLCBBbGFzLCBPIExPUkQgR29kISBmb3IgYmVjYXVzZSBJIGhhdmUgc2VlbiBhbiBhbmdlbCBvZiB0aGUgTE9SRCBmYWNlIHRvIGZhY2UuCkFuZCB0aGUgTE9SRCBzYWlkIHVudG8gaGltLCBQZWFjZSBiZSB1bnRvIHRoZWU7IGZlYXIgbm90OiB0aG91IHNoYWx0IG5vdCBkaWUuClRoZW4gR2lkZW9uIGJ1aWx0IGFuIGFsdGFyIHRoZXJlIHVudG8gdGhlIExPUkQsIGFuZCBjYWxsZWQgaXQgSmVob3ZhaHNoYWxvbTogdW50byB0aGlzIGRheSBpdCBpcyB5ZXQgaW4gT3BocmFoIG9mIHRoZSBBYmllenJpdGVzLgpBbmQgaXQgY2FtZSB0byBwYXNzIHRoZSBzYW1lIG5pZ2h0LCB0aGF0IHRoZSBMT1JEIHNhaWQgdW50byBoaW0sIFRha2UgdGh5IGZhdGhlcidzIHlvdW5nIGJ1bGxvY2ssIGV2ZW4gdGhlIHNlY29uZCBidWxsb2NrIG9mIHNldmVuIHllYXJzIG9sZCwgYW5kIHRocm93IGRvd24gdGhlIGFsdGFyIG9mIEJhYWwgdGhhdCB0aHkgZmF0aGVyIGhhdGgsIGFuZCBjdXQgZG93biB0aGUgZ3JvdmUgdGhhdCBpcyBieSBpdDoKQW5kIGJ1aWxkIGFuIGFsdGFyIHVudG8gdGhlIExPUkQgdGh5IEdvZCB1cG9uIHRoZSB0b3Agb2YgdGhpcyByb2NrLCBpbiB0aGUgb3JkZXJlZCBwbGFjZSwgYW5kIHRha2UgdGhlIHNlY29uZCBidWxsb2NrLCBhbmQgb2ZmZXIgYSBidXJudCBzYWNyaWZpY2Ugd2l0aCB0aGUgd29vZCBvZiB0aGUgZ3JvdmUgd2hpY2ggdGhvdSBzaGFsdCBjdXQgZG93bi4KVGhlbiBHaWRlb24gdG9vayB0ZW4gbWVuIG9mIGhpcyBzZXJ2YW50cywgYW5kIGRpZCBhcyB0aGUgTE9SRCBoYWQgc2FpZCB1bnRvIGhpbTogYW5kIHNvIGl0IHdhcywgYmVjYXVzZSBoZSBmZWFyZWQgaGlzIGZhdGhlcidzIGhvdXNlaG9sZCwgYW5kIHRoZSBtZW4gb2YgdGhlIGNpdHksIHRoYXQgaGUgY291bGQgbm90IGRvIGl0IGJ5IGRheSwgdGhhdCBoZSBkaWQgaXQgYnkgbmlnaHQuCkFuZCB3aGVuIHRoZSBtZW4gb2YgdGhlIGNpdHkgYXJvc2UgZWFybHkgaW4gdGhlIG1vcm5pbmcsIGJlaG9sZCwgdGhlIGFsdGFyIG9mIEJhYWwgd2FzIGNhc3QgZG93biwgYW5kIHRoZSBncm92ZSB3YXMgY3V0IGRvd24gdGhhdCB3YXMgYnkgaXQsIGFuZCB0aGUgc2Vjb25kIGJ1bGxvY2sgd2FzIG9mZmVyZWQgdXBvbiB0aGUgYWx0YXIgdGhhdCB3YXMgYnVpbHQuCkFuZCB0aGV5IHNhaWQgb25lIHRvIGFub3RoZXIsIFdobyBoYXRoIGRvbmUgdGhpcyB0aGluZz8gQW5kIHdoZW4gdGhleSBlbnF1aXJlZCBhbmQgYXNrZWQsIHRoZXkgc2FpZCwgR2lkZW9uIHRoZSBzb24gb2YgSm9hc2ggaGF0aCBkb25lIHRoaXMgdGhpbmcuClRoZW4gdGhlIG1lbiBvZiB0aGUgY2l0eSBzYWlkIHVudG8gSm9hc2gsIEJyaW5nIG91dCB0aHkgc29uLCB0aGF0IGhlIG1heSBkaWU6IGJlY2F1c2UgaGUgaGF0aCBjYXN0IGRvd24gdGhlIGFsdGFyIG9mIEJhYWwsIGFuZCBiZWNhdXNlIGhlIGhhdGggY3V0IGRvd24gdGhlIGdyb3ZlIHRoYXQgd2FzIGJ5IGl0LgpBbmQgSm9hc2ggc2FpZCB1bnRvIGFsbCB0aGF0IHN0b29kIGFnYWluc3QgaGltLCBXaWxsIHllIHBsZWFkIGZvciBCYWFsPyB3aWxsIHllIHNhdmUgaGltPyBoZSB0aGF0IHdpbGwgcGxlYWQgZm9yIGhpbSwgbGV0IGhpbSBiZSBwdXQgdG8gZGVhdGggd2hpbHN0IGl0IGlzIHlldCBtb3JuaW5nOiBpZiBoZSBiZSBhIGdvZCwgbGV0IGhpbSBwbGVhZCBmb3IgaGltc2VsZiwgYmVjYXVzZSBvbmUgaGF0aCBjYXN0IGRvd24gaGlzIGFsdGFyLgpUaGVyZWZvcmUgb24gdGhhdCBkYXkgaGUgY2FsbGVkIGhpbSBKZXJ1YmJhYWwsIHNheWluZywgTGV0IEJhYWwgcGxlYWQgYWdhaW5zdCBoaW0sIGJlY2F1c2UgaGUgaGF0aCB0aHJvd24gZG93biBoaXMgYWx0YXIuClRoZW4gYWxsIHRoZSBNaWRpYW5pdGVzIGFuZCB0aGUgQW1hbGVraXRlcyBhbmQgdGhlIGNoaWxkcmVuIG9mIHRoZSBlYXN0IHdlcmUgZ2F0aGVyZWQgdG9nZXRoZXIsIGFuZCB3ZW50IG92ZXIsIGFuZCBwaXRjaGVkIGluIHRoZSB2YWxsZXkgb2YgSmV6cmVlbC4KQnV0IHRoZSBTcGlyaXQgb2YgdGhlIExPUkQgY2FtZSB1cG9uIEdpZGVvbiwgYW5kIGhlIGJsZXcgYSB0cnVtcGV0OyBhbmQgQWJpZXplciB3YXMgZ2F0aGVyZWQgYWZ0ZXIgaGltLgpBbmQgaGUgc2VudCBtZXNzZW5nZXJzIHRocm91Z2hvdXQgYWxsIE1hbmFzc2VoOyB3aG8gYWxzbyB3YXMgZ2F0aGVyZWQgYWZ0ZXIgaGltOiBhbmQgaGUgc2VudCBtZXNzZW5nZXJzIHVudG8gQXNoZXIsIGFuZCB1bnRvIFplYnVsdW4sIGFuZCB1bnRvIE5hcGh0YWxpOyBhbmQgdGhleSBjYW1lIHVwIHRvIG1lZXQgdGhlbS4KQW5kIEdpZGVvbiBzYWlkIHVudG8gR29kLCBJZiB0aG91IHdpbHQgc2F2ZSBJc3JhZWwgYnkgbWluZSBoYW5kLCBhcyB0aG91IGhhc3Qgc2FpZCwKQmVob2xkLCBJIHdpbGwgcHV0IGEgZmxlZWNlIG9mIHdvb2wgaW4gdGhlIGZsb29yOyBhbmQgaWYgdGhlIGRldyBiZSBvbiB0aGUgZmxlZWNlIG9ubHksIGFuZCBpdCBiZSBkcnkgdXBvbiBhbGwgdGhlIGVhcnRoIGJlc2lkZSwgdGhlbiBzaGFsbCBJIGtub3cgdGhhdCB0aG91IHdpbHQgc2F2ZSBJc3JhZWwgYnkgbWluZSBoYW5kLCBhcyB0aG91IGhhc3Qgc2FpZC4KQW5kIGl0IHdhcyBzbzogZm9yIGhlIHJvc2UgdXAgZWFybHkgb24gdGhlIG1vcnJvdywgYW5kIHRocnVzdCB0aGUgZmxlZWNlIHRvZ2V0aGVyLCBhbmQgd3JpbmdlZCB0aGUgZGV3IG91dCBvZiB0aGUgZmxlZWNlLCBhIGJvd2wgZnVsbCBvZiB3YXRlci4KQW5kIEdpZGVvbiBzYWlkIHVudG8gR29kLCBMZXQgbm90IHRoaW5lIGFuZ2VyIGJlIGhvdCBhZ2FpbnN0IG1lLCBhbmQgSSB3aWxsIHNwZWFrIGJ1dCB0aGlzIG9uY2U6IGxldCBtZSBwcm92ZSwgSSBwcmF5IHRoZWUsIGJ1dCB0aGlzIG9uY2Ugd2l0aCB0aGUgZmxlZWNlOyBsZXQgaXQgbm93IGJlIGRyeSBvbmx5IHVwb24gdGhlIGZsZWVjZSwgYW5kIHVwb24gYWxsIHRoZSBncm91bmQgbGV0IHRoZXJlIGJlIGRldy4KQW5kIEdvZCBkaWQgc28gdGhhdCBuaWdodDogZm9yIGl0IHdhcyBkcnkgdXBvbiB0aGUgZmxlZWNlIG9ubHksIGFuZCB0aGVyZSB3YXMgZGV3IG9uIGFsbCB0aGUgZ3JvdW5kLgpUaGVuIEplcnViYmFhbCwgd2hvIGlzIEdpZGVvbiwgYW5kIGFsbCB0aGUgcGVvcGxlIHRoYXQgd2VyZSB3aXRoIGhpbSwgcm9zZSB1cCBlYXJseSwgYW5kIHBpdGNoZWQgYmVzaWRlIHRoZSB3ZWxsIG9mIEhhcm9kOiBzbyB0aGF0IHRoZSBob3N0IG9mIHRoZSBNaWRpYW5pdGVzIHdlcmUgb24gdGhlIG5vcnRoIHNpZGUgb2YgdGhlbSwgYnkgdGhlIGhpbGwgb2YgTW9yZWgsIGluIHRoZSB2YWxsZXkuCkFuZCB0aGUgTE9SRCBzYWlkIHVudG8gR2lkZW9uLCBUaGUgcGVvcGxlIHRoYXQgYXJlIHdpdGggdGhlZSBhcmUgdG9vIG1hbnkgZm9yIG1lIHRvIGdpdmUgdGhlIE1pZGlhbml0ZXMgaW50byB0aGVpciBoYW5kcywgbGVzdCBJc3JhZWwgdmF1bnQgdGhlbXNlbHZlcyBhZ2FpbnN0IG1lLCBzYXlpbmcsIE1pbmUgb3duIGhhbmQgaGF0aCBzYXZlZCBtZS4KTm93IHRoZXJlZm9yZSBnbyB0bywgcHJvY2xhaW0gaW4gdGhlIGVhcnMgb2YgdGhlIHBlb3BsZSwgc2F5aW5nLCBXaG9zb2V2ZXIgaXMgZmVhcmZ1bCBhbmQgYWZyYWlkLCBsZXQgaGltIHJldHVybiBhbmQgZGVwYXJ0IGVhcmx5IGZyb20gbW91bnQgR2lsZWFkLiBBbmQgdGhlcmUgcmV0dXJuZWQgb2YgdGhlIHBlb3BsZSB0d2VudHkgYW5kIHR3byB0aG91c2FuZDsgYW5kIHRoZXJlIHJlbWFpbmVkIHRlbiB0aG91c2FuZC4KQW5kIHRoZSBMT1JEIHNhaWQgdW50byBHaWRlb24sIFRoZSBwZW9wbGUgYXJlIHlldCB0b28gbWFueTsgYnJpbmcgdGhlbSBkb3duIHVudG8gdGhlIHdhdGVyLCBhbmQgSSB3aWxsIHRyeSB0aGVtIGZvciB0aGVlIHRoZXJlOiBhbmQgaXQgc2hhbGwgYmUsIHRoYXQgb2Ygd2hvbSBJIHNheSB1bnRvIHRoZWUsIFRoaXMgc2hhbGwgZ28gd2l0aCB0aGVlLCB0aGUgc2FtZSBzaGFsbCBnbyB3aXRoIHRoZWU7IGFuZCBvZiB3aG9tc29ldmVyIEkgc2F5IHVudG8gdGhlZSwgVGhpcyBzaGFsbCBub3QgZ28gd2l0aCB0aGVlLCB0aGUgc2FtZSBzaGFsbCBub3QgZ28uClNvIGhlIGJyb3VnaHQgZG93biB0aGUgcGVvcGxlIHVudG8gdGhlIHdhdGVyOiBhbmQgdGhlIExPUkQgc2FpZCB1bnRvIEdpZGVvbiwgRXZlcnkgb25lIHRoYXQgbGFwcGV0aCBvZiB0aGUgd2F0ZXIgd2l0aCBoaXMgdG9uZ3VlLCBhcyBhIGRvZyBsYXBwZXRoLCBoaW0gc2hhbHQgdGhvdSBzZXQgYnkgaGltc2VsZjsgbGlrZXdpc2UgZXZlcnkgb25lIHRoYXQgYm93ZXRoIGRvd24gdXBvbiBoaXMga25lZXMgdG8gZHJpbmsuCkFuZCB0aGUgbnVtYmVyIG9mIHRoZW0gdGhhdCBsYXBwZWQsIHB1dHRpbmcgdGhlaXIgaGFuZCB0byB0aGVpciBtb3V0aCwgd2VyZSB0aHJlZSBodW5kcmVkIG1lbjogYnV0IGFsbCB0aGUgcmVzdCBvZiB0aGUgcGVvcGxlIGJvd2VkIGRvd24gdXBvbiB0aGVpciBrbmVlcyB0byBkcmluayB3YXRlci4KQW5kIHRoZSBMT1JEIHNhaWQgdW50byBHaWRlb24sIEJ5IHRoZSB0aHJlZSBodW5kcmVkIG1lbiB0aGF0IGxhcHBlZCB3aWxsIEkgc2F2ZSB5b3UsIGFuZCBkZWxpdmVyIHRoZSBNaWRpYW5pdGVzIGludG8gdGhpbmUgaGFuZDogYW5kIGxldCBhbGwgdGhlIG90aGVyIHBlb3BsZSBnbyBldmVyeSBtYW4gdW50byBoaXMgcGxhY2UuClNvIHRoZSBwZW9wbGUgdG9vayB2aWN0dWFscyBpbiB0aGVpciBoYW5kLCBhbmQgdGhlaXIgdHJ1bXBldHM6IGFuZCBoZSBzZW50IGFsbCB0aGUgcmVzdCBvZiBJc3JhZWwgZXZlcnkgbWFuIHVudG8gaGlzIHRlbnQsIGFuZCByZXRhaW5lZCB0aG9zZSB0aHJlZSBodW5kcmVkIG1lbjogYW5kIHRoZSBob3N0IG9mIE1pZGlhbiB3YXMgYmVuZWF0aCBoaW0gaW4gdGhlIHZhbGxleS4KQW5kIGl0IGNhbWUgdG8gcGFzcyB0aGUgc2FtZSBuaWdodCwgdGhhdCB0aGUgTE9SRCBzYWlkIHVudG8gaGltLCBBcmlzZSwgZ2V0IHRoZWUgZG93biB1bnRvIHRoZSBob3N0OyBmb3IgSSBoYXZlIGRlbGl2ZXJlZCBpdCBpbnRvIHRoaW5lIGhhbmQuCkJ1dCBpZiB0aG91IGZlYXIgdG8gZ28gZG93biwgZ28gdGhvdSB3aXRoIFBodXJhaCB0aHkgc2VydmFudCBkb3duIHRvIHRoZSBob3N0OgpBbmQgdGhvdSBzaGFsdCBoZWFyIHdoYXQgdGhleSBzYXk7IGFuZCBhZnRlcndhcmQgc2hhbGwgdGhpbmUgaGFuZHMgYmUgc3RyZW5ndGhlbmVkIHRvIGdvIGRvd24gdW50byB0aGUgaG9zdC4gVGhlbiB3ZW50IGhlIGRvd24gd2l0aCBQaHVyYWggaGlzIHNlcnZhbnQgdW50byB0aGUgb3V0c2lkZSBvZiB0aGUgYXJtZWQgbWVuIHRoYXQgd2VyZSBpbiB0aGUgaG9zdC4KQW5kIHRoZSBNaWRpYW5pdGVzIGFuZCB0aGUgQW1hbGVraXRlcyBhbmQgYWxsIHRoZSBjaGlsZHJlbiBvZiB0aGUgZWFzdCBsYXkgYWxvbmcgaW4gdGhlIHZhbGxleSBsaWtlIGdyYXNzaG9wcGVycyBmb3IgbXVsdGl0dWRlOyBhbmQgdGhlaXIgY2FtZWxzIHdlcmUgd2l0aG91dCBudW1iZXIsIGFzIHRoZSBzYW5kIGJ5IHRoZSBzZWEgc2lkZSBmb3IgbXVsdGl0dWRlLgpBbmQgd2hlbiBHaWRlb24gd2FzIGNvbWUsIGJlaG9sZCwgdGhlcmUgd2FzIGEgbWFuIHRoYXQgdG9sZCBhIGRyZWFtIHVudG8gaGlzIGZlbGxvdywgYW5kIHNhaWQsIEJlaG9sZCwgSSBkcmVhbWVkIGEgZHJlYW0sIGFuZCwgbG8sIGEgY2FrZSBvZiBiYXJsZXkgYnJlYWQgdHVtYmxlZCBpbnRvIHRoZSBob3N0IG9mIE1pZGlhbiwgYW5kIGNhbWUgdW50byBhIHRlbnQsIGFuZCBzbW90ZSBpdCB0aGF0IGl0IGZlbGwsIGFuZCBvdmVydHVybmVkIGl0LCB0aGF0IHRoZSB0ZW50IGxheSBhbG9uZy4KQW5kIGhpcyBmZWxsb3cgYW5zd2VyZWQgYW5kIHNhaWQsIFRoaXMgaXMgbm90aGluZyBlbHNlIHNhdmUgdGhlIHN3b3JkIG9mIEdpZGVvbiB0aGUgc29uIG9mIEpvYXNoLCBhIG1hbiBvZiBJc3JhZWw6IGZvciBpbnRvIGhpcyBoYW5kIGhhdGggR29kIGRlbGl2ZXJlZCBNaWRpYW4sIGFuZCBhbGwgdGhlIGhvc3QuCkFuZCBpdCB3YXMgc28sIHdoZW4gR2lkZW9uIGhlYXJkIHRoZSB0ZWxsaW5nIG9mIHRoZSBkcmVhbSwgYW5kIHRoZSBpbnRlcnByZXRhdGlvbiB0aGVyZW9mLCB0aGF0IGhlIHdvcnNoaXBwZWQsIGFuZCByZXR1cm5lZCBpbnRvIHRoZSBob3N0IG9mIElzcmFlbCwgYW5kIHNhaWQsIEFyaXNlOyBmb3IgdGhlIExPUkQgaGF0aCBkZWxpdmVyZWQgaW50byB5b3VyIGhhbmQgdGhlIGhvc3Qgb2YgTWlkaWFuLgpBbmQgaGUgZGl2aWRlZCB0aGUgdGhyZWUgaHVuZHJlZCBtZW4gaW50byB0aHJlZSBjb21wYW5pZXMsIGFuZCBoZSBwdXQgYSB0cnVtcGV0IGluIGV2ZXJ5IG1hbidzIGhhbmQsIHdpdGggZW1wdHkgcGl0Y2hlcnMsIGFuZCBsYW1wcyB3aXRoaW4gdGhlIHBpdGNoZXJzLgpBbmQgaGUgc2FpZCB1bnRvIHRoZW0sIExvb2sgb24gbWUsIGFuZCBkbyBsaWtld2lzZTogYW5kLCBiZWhvbGQsIHdoZW4gSSBjb21lIHRvIHRoZSBvdXRzaWRlIG9mIHRoZSBjYW1wLCBpdCBzaGFsbCBiZSB0aGF0LCBhcyBJIGRvLCBzbyBzaGFsbCB5ZSBkby4KV2hlbiBJIGJsb3cgd2l0aCBhIHRydW1wZXQsIEkgYW5kIGFsbCB0aGF0IGFyZSB3aXRoIG1lLCB0aGVuIGJsb3cgeWUgdGhlIHRydW1wZXRzIGFsc28gb24gZXZlcnkgc2lkZSBvZiBhbGwgdGhlIGNhbXAsIGFuZCBzYXksIFRoZSBzd29yZCBvZiB0aGUgTE9SRCwgYW5kIG9mIEdpZGVvbi4KU28gR2lkZW9uLCBhbmQgdGhlIGh1bmRyZWQgbWVuIHRoYXQgd2VyZSB3aXRoIGhpbSwgY2FtZSB1bnRvIHRoZSBvdXRzaWRlIG9mIHRoZSBjYW1wIGluIHRoZSBiZWdpbm5pbmcgb2YgdGhlIG1pZGRsZSB3YXRjaDsgYW5kIHRoZXkgaGFkIGJ1dCBuZXdseSBzZXQgdGhlIHdhdGNoOiBhbmQgdGhleSBibGV3IHRoZSB0cnVtcGV0cywgYW5kIGJyYWtlIHRoZSBwaXRjaGVycyB0aGF0IHdlcmUgaW4gdGhlaXIgaGFuZHMuCkFuZCB0aGUgdGhyZWUgY29tcGFuaWVzIGJsZXcgdGhlIHRydW1wZXRzLCBhbmQgYnJha2UgdGhlIHBpdGNoZXJzLCBhbmQgaGVsZCB0aGUgbGFtcHMgaW4gdGhlaXIgbGVmdCBoYW5kcywgYW5kIHRoZSB0cnVtcGV0cyBpbiB0aGVpciByaWdodCBoYW5kcyB0byBibG93IHdpdGhhbDogYW5kIHRoZXkgY3JpZWQsIFRoZSBzd29yZCBvZiB0aGUgTE9SRCwgYW5kIG9mIEdpZGVvbi4KQW5kIHRoZXkgc3Rvb2QgZXZlcnkgbWFuIGluIGhpcyBwbGFjZSByb3VuZCBhYm91dCB0aGUgY2FtcDsgYW5kIGFsbCB0aGUgaG9zdCByYW4sIGFuZCBjcmllZCwgYW5kIGZsZWQuCkFuZCB0aGUgdGhyZWUgaHVuZHJlZCBibGV3IHRoZSB0cnVtcGV0cywgYW5kIHRoZSBMT1JEIHNldCBldmVyeSBtYW4ncyBzd29yZCBhZ2FpbnN0IGhpcyBmZWxsb3csIGV2ZW4gdGhyb3VnaG91dCBhbGwgdGhlIGhvc3Q6IGFuZCB0aGUgaG9zdCBmbGVkIHRvIEJldGhzaGl0dGFoIGluIFplcmVyYXRoLCBhbmQgdG8gdGhlIGJvcmRlciBvZiBBYmVsbWVob2xhaCwgdW50byBUYWJiYXRoLgpBbmQgdGhlIG1lbiBvZiBJc3JhZWwgZ2F0aGVyZWQgdGhlbXNlbHZlcyB0b2dldGhlciBvdXQgb2YgTmFwaHRhbGksIGFuZCBvdXQgb2YgQXNoZXIsIGFuZCBvdXQgb2YgYWxsIE1hbmFzc2VoLCBhbmQgcHVyc3VlZCBhZnRlciB0aGUgTWlkaWFuaXRlcy4KQW5kIEdpZGVvbiBzZW50IG1lc3NlbmdlcnMgdGhyb3VnaG91dCBhbGwgbW91bnQgRXBocmFpbSwgc2F5aW5nLCBjb21lIGRvd24gYWdhaW5zdCB0aGUgTWlkaWFuaXRlcywgYW5kIHRha2UgYmVmb3JlIHRoZW0gdGhlIHdhdGVycyB1bnRvIEJldGhiYXJhaCBhbmQgSm9yZGFuLiBUaGVuIGFsbCB0aGUgbWVuIG9mIEVwaHJhaW0gZ2F0aGVyZWQgdGhlbXNlbHZlcyB0b2dldGhlciwgYW5kIHRvb2sgdGhlIHdhdGVycyB1bnRvIEJldGhiYXJhaCBhbmQgSm9yZGFuLgpBbmQgdGhleSB0b29rIHR3byBwcmluY2VzIG9mIHRoZSBNaWRpYW5pdGVzLCBPcmViIGFuZCBaZWViOyBhbmQgdGhleSBzbGV3IE9yZWIgdXBvbiB0aGUgcm9jayBPcmViLCBhbmQgWmVlYiB0aGV5IHNsZXcgYXQgdGhlIHdpbmVwcmVzcyBvZiBaZWViLCBhbmQgcHVyc3VlZCBNaWRpYW4sIGFuZCBicm91Z2h0IHRoZSBoZWFkcyBvZiBPcmViIGFuZCBaZWViIHRvIEdpZGVvbiBvbiB0aGUgb3RoZXIgc2lkZSBKb3JkYW4uCkFuZCB0aGUgbWVuIG9mIEVwaHJhaW0gc2FpZCB1bnRvIGhpbSwgV2h5IGhhc3QgdGhvdSBzZXJ2ZWQgdXMgdGh1cywgdGhhdCB0aG91IGNhbGxlZHN0IHVzIG5vdCwgd2hlbiB0aG91IHdlbnRlc3QgdG8gZmlnaHQgd2l0aCB0aGUgTWlkaWFuaXRlcz8gQW5kIHRoZXkgZGlkIGNoaWRlIHdpdGggaGltIHNoYXJwbHkuCkFuZCBoZSBzYWlkIHVudG8gdGhlbSwgV2hhdCBoYXZlIEkgZG9uZSBub3cgaW4gY29tcGFyaXNvbiBvZiB5b3U/IElzIG5vdCB0aGUgZ2xlYW5pbmcgb2YgdGhlIGdyYXBlcyBvZiBFcGhyYWltIGJldHRlciB0aGFuIHRoZSB2aW50YWdlIG9mIEFiaWV6ZXI/CkdvZCBoYXRoIGRlbGl2ZXJlZCBpbnRvIHlvdXIgaGFuZHMgdGhlIHByaW5jZXMgb2YgTWlkaWFuLCBPcmViIGFuZCBaZWViOiBhbmQgd2hhdCB3YXMgSSBhYmxlIHRvIGRvIGluIGNvbXBhcmlzb24gb2YgeW91PyBUaGVuIHRoZWlyIGFuZ2VyIHdhcyBhYmF0ZWQgdG93YXJkIGhpbSwgd2hlbiBoZSBoYWQgc2FpZCB0aGF0LgpBbmQgR2lkZW9uIGNhbWUgdG8gSm9yZGFuLCBhbmQgcGFzc2VkIG92ZXIsIGhlLCBhbmQgdGhlIHRocmVlIGh1bmRyZWQgbWVuIHRoYXQgd2VyZSB3aXRoIGhpbSwgZmFpbnQsIHlldCBwdXJzdWluZyB0aGVtLgpBbmQgaGUgc2FpZCB1bnRvIHRoZSBtZW4gb2YgU3VjY290aCwgR2l2ZSwgSSBwcmF5IHlvdSwgbG9hdmVzIG9mIGJyZWFkIHVudG8gdGhlIHBlb3BsZSB0aGF0IGZvbGxvdyBtZTsgZm9yIHRoZXkgYmUgZmFpbnQsIGFuZCBJIGFtIHB1cnN1aW5nIGFmdGVyIFplYmFoIGFuZCBaYWxtdW5uYSwga2luZ3Mgb2YgTWlkaWFuLgpBbmQgdGhlIHByaW5jZXMgb2YgU3VjY290aCBzYWlkLCBBcmUgdGhlIGhhbmRzIG9mIFplYmFoIGFuZCBaYWxtdW5uYSBub3cgaW4gdGhpbmUgaGFuZCwgdGhhdCB3ZSBzaG91bGQgZ2l2ZSBicmVhZCB1bnRvIHRoaW5lIGFybXk/CkFuZCBHaWRlb24gc2FpZCwgVGhlcmVmb3JlIHdoZW4gdGhlIExPUkQgaGF0aCBkZWxpdmVyZWQgWmViYWggYW5kIFphbG11bm5hIGludG8gbWluZSBoYW5kLCB0aGVuIEkgd2lsbCB0ZWFyIHlvdXIgZmxlc2ggd2l0aCB0aGUgdGhvcm5zIG9mIHRoZSB3aWxkZXJuZXNzIGFuZCB3aXRoIGJyaWVycy4KQW5kIGhlIHdlbnQgdXAgdGhlbmNlIHRvIFBlbnVlbCwgYW5kIHNwYWtlIHVudG8gdGhlbSBsaWtld2lzZTogYW5kIHRoZSBtZW4gb2YgUGVudWVsIGFuc3dlcmVkIGhpbSBhcyB0aGUgbWVuIG9mIFN1Y2NvdGggaGFkIGFuc3dlcmVkIGhpbS4KQW5kIGhlIHNwYWtlIGFsc28gdW50byB0aGUgbWVuIG9mIFBlbnVlbCwgc2F5aW5nLCBXaGVuIEkgY29tZSBhZ2FpbiBpbiBwZWFjZSwgSSB3aWxsIGJyZWFrIGRvd24gdGhpcyB0b3dlci4KTm93IFplYmFoIGFuZCBaYWxtdW5uYSB3ZXJlIGluIEthcmtvciwgYW5kIHRoZWlyIGhvc3RzIHdpdGggdGhlbSwgYWJvdXQgZmlmdGVlbiB0aG91c2FuZCBtZW4sIGFsbCB0aGF0IHdlcmUgbGVmdCBvZiBhbGwgdGhlIGhvc3RzIG9mIHRoZSBjaGlsZHJlbiBvZiB0aGUgZWFzdDogZm9yIHRoZXJlIGZlbGwgYW4gaHVuZHJlZCBhbmQgdHdlbnR5IHRob3VzYW5kIG1lbiB0aGF0IGRyZXcgc3dvcmQuCkFuZCBHaWRlb24gd2VudCB1cCBieSB0aGUgd2F5IG9mIHRoZW0gdGhhdCBkd2VsdCBpbiB0ZW50cyBvbiB0aGUgZWFzdCBvZiBOb2JhaCBhbmQgSm9nYmVoYWgsIGFuZCBzbW90ZSB0aGUgaG9zdDsgZm9yIHRoZSBob3N0IHdhcyBzZWN1cmUuCkFuZCB3aGVuIFplYmFoIGFuZCBaYWxtdW5uYSBmbGVkLCBoZSBwdXJzdWVkIGFmdGVyIHRoZW0sIGFuZCB0b29rIHRoZSB0d28ga2luZ3Mgb2YgTWlkaWFuLCBaZWJhaCBhbmQgWmFsbXVubmEsIGFuZCBkaXNjb21maXRlZCBhbGwgdGhlIGhvc3QuCkFuZCBHaWRlb24gdGhlIHNvbiBvZiBKb2FzaCByZXR1cm5lZCBmcm9tIGJhdHRsZSBiZWZvcmUgdGhlIHN1biB3YXMgdXAsCkFuZCBjYXVnaHQgYSB5b3VuZyBtYW4gb2YgdGhlIG1lbiBvZiBTdWNjb3RoLCBhbmQgZW5xdWlyZWQgb2YgaGltOiBhbmQgaGUgZGVzY3JpYmVkIHVudG8gaGltIHRoZSBwcmluY2VzIG9mIFN1Y2NvdGgsIGFuZCB0aGUgZWxkZXJzIHRoZXJlb2YsIGV2ZW4gdGhyZWVzY29yZSBhbmQgc2V2ZW50ZWVuIG1lbi4KQW5kIGhlIGNhbWUgdW50byB0aGUgbWVuIG9mIFN1Y2NvdGgsIGFuZCBzYWlkLCBCZWhvbGQgWmViYWggYW5kIFphbG11bm5hLCB3aXRoIHdob20geWUgZGlkIHVwYnJhaWQgbWUsIHNheWluZywgQXJlIHRoZSBoYW5kcyBvZiBaZWJhaCBhbmQgWmFsbXVubmEgbm93IGluIHRoaW5lIGhhbmQsIHRoYXQgd2Ugc2hvdWxkIGdpdmUgYnJlYWQgdW50byB0aHkgbWVuIHRoYXQgYXJlIHdlYXJ5PwpBbmQgaGUgdG9vayB0aGUgZWxkZXJzIG9mIHRoZSBjaXR5LCBhbmQgdGhvcm5zIG9mIHRoZSB3aWxkZXJuZXNzIGFuZCBicmllcnMsIGFuZCB3aXRoIHRoZW0gaGUgdGF1Z2h0IHRoZSBtZW4gb2YgU3VjY290aC4KQW5kIGhlIGJlYXQgZG93biB0aGUgdG93ZXIgb2YgUGVudWVsLCBhbmQgc2xldyB0aGUgbWVuIG9mIHRoZSBjaXR5LgpUaGVuIHNhaWQgaGUgdW50byBaZWJhaCBhbmQgWmFsbXVubmEsIFdoYXQgbWFubmVyIG9mIG1lbiB3ZXJlIHRoZXkgd2hvbSB5ZSBzbGV3IGF0IFRhYm9yPyBBbmQgdGhleSBhbnN3ZXJlZCwgQXMgdGhvdSBhcnQsIHNvIHdlcmUgdGhleTsgZWFjaCBvbmUgcmVzZW1ibGVkIHRoZSBjaGlsZHJlbiBvZiBhIGtpbmcuCkFuZCBoZSBzYWlkLCBUaGV5IHdlcmUgbXkgYnJldGhyZW4sIGV2ZW4gdGhlIHNvbnMgb2YgbXkgbW90aGVyOiBhcyB0aGUgTE9SRCBsaXZldGgsIGlmIHllIGhhZCBzYXZlZCB0aGVtIGFsaXZlLCBJIHdvdWxkIG5vdCBzbGF5IHlvdS4KQW5kIGhlIHNhaWQgdW50byBKZXRoZXIgaGlzIGZpcnN0Ym9ybiwgVXAsIGFuZCBzbGF5IHRoZW0uIEJ1dCB0aGUgeW91dGggZHJldyBub3QgaGlzIHN3b3JkOiBmb3IgaGUgZmVhcmVkLCBiZWNhdXNlIGhlIHdhcyB5ZXQgYSB5b3V0aC4KVGhlbiBaZWJhaCBhbmQgWmFsbXVubmEgc2FpZCwgUmlzZSB0aG91LCBhbmQgZmFsbCB1cG9uIHVzOiBmb3IgYXMgdGhlIG1hbiBpcywgc28gaXMgaGlzIHN0cmVuZ3RoLiBBbmQgR2lkZW9uIGFyb3NlLCBhbmQgc2xldyBaZWJhaCBhbmQgWmFsbXVubmEsIGFuZCB0b29rIGF3YXkgdGhlIG9ybmFtZW50cyB0aGF0IHdlcmUgb24gdGhlaXIgY2FtZWxzJyBuZWNrcy4KVGhlbiB0aGUgbWVuIG9mIElzcmFlbCBzYWlkIHVudG8gR2lkZW9uLCBSdWxlIHRob3Ugb3ZlciB1cywgYm90aCB0aG91LCBhbmQgdGh5IHNvbiwgYW5kIHRoeSBzb24ncyBzb24gYWxzbzogZm9yIHRob3UgaGFzdCBkZWxpdmVyZWQgdXMgZnJvbSB0aGUgaGFuZCBvZiBNaWRpYW4uCkFuZCBHaWRlb24gc2FpZCB1bnRvIHRoZW0sIEkgd2lsbCBub3QgcnVsZSBvdmVyIHlvdSwgbmVpdGhlciBzaGFsbCBteSBzb24gcnVsZSBvdmVyIHlvdTogdGhlIExPUkQgc2hhbGwgcnVsZSBvdmVyIHlvdS4KQW5kIEdpZGVvbiBzYWlkIHVudG8gdGhlbSwgSSB3b3VsZCBkZXNpcmUgYSByZXF1ZXN0IG9mIHlvdSwgdGhhdCB5ZSB3b3VsZCBnaXZlIG1lIGV2ZXJ5IG1hbiB0aGUgZWFycmluZ3Mgb2YgaGlzIHByZXkuIChGb3IgdGhleSBoYWQgZ29sZGVuIGVhcnJpbmdzLCBiZWNhdXNlIHRoZXkgd2VyZSBJc2htYWVsaXRlcy4pCkFuZCB0aGV5IGFuc3dlcmVkLCBXZSB3aWxsIHdpbGxpbmdseSBnaXZlIHRoZW0uIEFuZCB0aGV5IHNwcmVhZCBhIGdhcm1lbnQsIGFuZCBkaWQgY2FzdCB0aGVyZWluIGV2ZXJ5IG1hbiB0aGUgZWFycmluZ3Mgb2YgaGlzIHByZXkuCkFuZCB0aGUgd2VpZ2h0IG9mIHRoZSBnb2xkZW4gZWFycmluZ3MgdGhhdCBoZSByZXF1ZXN0ZWQgd2FzIGEgdGhvdXNhbmQgYW5kIHNldmVuIGh1bmRyZWQgc2hla2VscyBvZiBnb2xkOyBiZXNpZGUgb3JuYW1lbnRzLCBhbmQgY29sbGFycywgYW5kIHB1cnBsZSByYWltZW50IHRoYXQgd2FzIG9uIHRoZSBraW5ncyBvZiBNaWRpYW4sIGFuZCBiZXNpZGUgdGhlIGNoYWlucyB0aGF0IHdlcmUgYWJvdXQgdGhlaXIgY2FtZWxzJyBuZWNrcy4KQW5kIEdpZGVvbiBtYWRlIGFuIGVwaG9kIHRoZXJlb2YsIGFuZCBwdXQgaXQgaW4gaGlzIGNpdHksIGV2ZW4gaW4gT3BocmFoOiBhbmQgYWxsIElzcmFlbCB3ZW50IHRoaXRoZXIgYSB3aG9yaW5nIGFmdGVyIGl0OiB3aGljaCB0aGluZyBiZWNhbWUgYSBzbmFyZSB1bnRvIEdpZGVvbiwgYW5kIHRvIGhpcyBob3VzZS4KVGh1cyB3YXMgTWlkaWFuIHN1YmR1ZWQgYmVmb3JlIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIHNvIHRoYXQgdGhleSBsaWZ0ZWQgdXAgdGhlaXIgaGVhZHMgbm8gbW9yZS4gQW5kIHRoZSBjb3VudHJ5IHdhcyBpbiBxdWlldG5lc3MgZm9ydHkgeWVhcnMgaW4gdGhlIGRheXMgb2YgR2lkZW9uLgpBbmQgSmVydWJiYWFsIHRoZSBzb24gb2YgSm9hc2ggd2VudCBhbmQgZHdlbHQgaW4gaGlzIG93biBob3VzZS4KQW5kIEdpZGVvbiBoYWQgdGhyZWVzY29yZSBhbmQgdGVuIHNvbnMgb2YgaGlzIGJvZHkgYmVnb3R0ZW46IGZvciBoZSBoYWQgbWFueSB3aXZlcy4KQW5kIGhpcyBjb25jdWJpbmUgdGhhdCB3YXMgaW4gU2hlY2hlbSwgc2hlIGFsc28gYmFyZSBoaW0gYSBzb24sIHdob3NlIG5hbWUgaGUgY2FsbGVkIEFiaW1lbGVjaC4KQW5kIEdpZGVvbiB0aGUgc29uIG9mIEpvYXNoIGRpZWQgaW4gYSBnb29kIG9sZCBhZ2UsIGFuZCB3YXMgYnVyaWVkIGluIHRoZSBzZXB1bGNocmUgb2YgSm9hc2ggaGlzIGZhdGhlciwgaW4gT3BocmFoIG9mIHRoZSBBYmllenJpdGVzLgpBbmQgaXQgY2FtZSB0byBwYXNzLCBhcyBzb29uIGFzIEdpZGVvbiB3YXMgZGVhZCwgdGhhdCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIHR1cm5lZCBhZ2FpbiwgYW5kIHdlbnQgYSB3aG9yaW5nIGFmdGVyIEJhYWxpbSwgYW5kIG1hZGUgQmFhbGJlcml0aCB0aGVpciBnb2QuCkFuZCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIHJlbWVtYmVyZWQgbm90IHRoZSBMT1JEIHRoZWlyIEdvZCwgd2hvIGhhZCBkZWxpdmVyZWQgdGhlbSBvdXQgb2YgdGhlIGhhbmRzIG9mIGFsbCB0aGVpciBlbmVtaWVzIG9uIGV2ZXJ5IHNpZGU6Ck5laXRoZXIgc2hld2VkIHRoZXkga2luZG5lc3MgdG8gdGhlIGhvdXNlIG9mIEplcnViYmFhbCwgbmFtZWx5LCBHaWRlb24sIGFjY29yZGluZyB0byBhbGwgdGhlIGdvb2RuZXNzIHdoaWNoIGhlIGhhZCBzaGV3ZWQgdW50byBJc3JhZWwuCkFuZCBBYmltZWxlY2ggdGhlIHNvbiBvZiBKZXJ1YmJhYWwgd2VudCB0byBTaGVjaGVtIHVudG8gaGlzIG1vdGhlcidzIGJyZXRocmVuLCBhbmQgY29tbXVuZWQgd2l0aCB0aGVtLCBhbmQgd2l0aCBhbGwgdGhlIGZhbWlseSBvZiB0aGUgaG91c2Ugb2YgaGlzIG1vdGhlcidzIGZhdGhlciwgc2F5aW5nLApTcGVhaywgSSBwcmF5IHlvdSwgaW4gdGhlIGVhcnMgb2YgYWxsIHRoZSBtZW4gb2YgU2hlY2hlbSwgV2hldGhlciBpcyBiZXR0ZXIgZm9yIHlvdSwgZWl0aGVyIHRoYXQgYWxsIHRoZSBzb25zIG9mIEplcnViYmFhbCwgd2hpY2ggYXJlIHRocmVlc2NvcmUgYW5kIHRlbiBwZXJzb25zLCByZWlnbiBvdmVyIHlvdSwgb3IgdGhhdCBvbmUgcmVpZ24gb3ZlciB5b3U/IHJlbWVtYmVyIGFsc28gdGhhdCBJIGFtIHlvdXIgYm9uZSBhbmQgeW91ciBmbGVzaC4KQW5kIGhpcyBtb3RoZXIncyBicmV0aHJlbiBzcGFrZSBvZiBoaW0gaW4gdGhlIGVhcnMgb2YgYWxsIHRoZSBtZW4gb2YgU2hlY2hlbSBhbGwgdGhlc2Ugd29yZHM6IGFuZCB0aGVpciBoZWFydHMgaW5jbGluZWQgdG8gZm9sbG93IEFiaW1lbGVjaDsgZm9yIHRoZXkgc2FpZCwgSGUgaXMgb3VyIGJyb3RoZXIuCkFuZCB0aGV5IGdhdmUgaGltIHRocmVlc2NvcmUgYW5kIHRlbiBwaWVjZXMgb2Ygc2lsdmVyIG91dCBvZiB0aGUgaG91c2Ugb2YgQmFhbGJlcml0aCwgd2hlcmV3aXRoIEFiaW1lbGVjaCBoaXJlZCB2YWluIGFuZCBsaWdodCBwZXJzb25zLCB3aGljaCBmb2xsb3dlZCBoaW0uCkFuZCBoZSB3ZW50IHVudG8gaGlzIGZhdGhlcidzIGhvdXNlIGF0IE9waHJhaCwgYW5kIHNsZXcgaGlzIGJyZXRocmVuIHRoZSBzb25zIG9mIEplcnViYmFhbCwgYmVpbmcgdGhyZWVzY29yZSBhbmQgdGVuIHBlcnNvbnMsIHVwb24gb25lIHN0b25lOiBub3R3aXRoc3RhbmRpbmcgeWV0IEpvdGhhbSB0aGUgeW91bmdlc3Qgc29uIG9mIEplcnViYmFhbCB3YXMgbGVmdDsgZm9yIGhlIGhpZCBoaW1zZWxmLgpBbmQgYWxsIHRoZSBtZW4gb2YgU2hlY2hlbSBnYXRoZXJlZCB0b2dldGhlciwgYW5kIGFsbCB0aGUgaG91c2Ugb2YgTWlsbG8sIGFuZCB3ZW50LCBhbmQgbWFkZSBBYmltZWxlY2gga2luZywgYnkgdGhlIHBsYWluIG9mIHRoZSBwaWxsYXIgdGhhdCB3YXMgaW4gU2hlY2hlbS4KQW5kIHdoZW4gdGhleSB0b2xkIGl0IHRvIEpvdGhhbSwgaGUgd2VudCBhbmQgc3Rvb2QgaW4gdGhlIHRvcCBvZiBtb3VudCBHZXJpemltLCBhbmQgbGlmdGVkIHVwIGhpcyB2b2ljZSwgYW5kIGNyaWVkLCBhbmQgc2FpZCB1bnRvIHRoZW0sIEhlYXJrZW4gdW50byBtZSwgeWUgbWVuIG9mIFNoZWNoZW0sIHRoYXQgR29kIG1heSBoZWFya2VuIHVudG8geW91LgpUaGUgdHJlZXMgd2VudCBmb3J0aCBvbiBhIHRpbWUgdG8gYW5vaW50IGEga2luZyBvdmVyIHRoZW07IGFuZCB0aGV5IHNhaWQgdW50byB0aGUgb2xpdmUgdHJlZSwgUmVpZ24gdGhvdSBvdmVyIHVzLgpCdXQgdGhlIG9saXZlIHRyZWUgc2FpZCB1bnRvIHRoZW0sIFNob3VsZCBJIGxlYXZlIG15IGZhdG5lc3MsIHdoZXJld2l0aCBieSBtZSB0aGV5IGhvbm91ciBHb2QgYW5kIG1hbiwgYW5kIGdvIHRvIGJlIHByb21vdGVkIG92ZXIgdGhlIHRyZWVzPwpBbmQgdGhlIHRyZWVzIHNhaWQgdG8gdGhlIGZpZyB0cmVlLCBDb21lIHRob3UsIGFuZCByZWlnbiBvdmVyIHVzLgpCdXQgdGhlIGZpZyB0cmVlIHNhaWQgdW50byB0aGVtLCBTaG91bGQgSSBmb3JzYWtlIG15IHN3ZWV0bmVzcywgYW5kIG15IGdvb2QgZnJ1aXQsIGFuZCBnbyB0byBiZSBwcm9tb3RlZCBvdmVyIHRoZSB0cmVlcz8KVGhlbiBzYWlkIHRoZSB0cmVlcyB1bnRvIHRoZSB2aW5lLCBDb21lIHRob3UsIGFuZCByZWlnbiBvdmVyIHVzLgpBbmQgdGhlIHZpbmUgc2FpZCB1bnRvIHRoZW0sIFNob3VsZCBJIGxlYXZlIG15IHdpbmUsIHdoaWNoIGNoZWVyZXRoIEdvZCBhbmQgbWFuLCBhbmQgZ28gdG8gYmUgcHJvbW90ZWQgb3ZlciB0aGUgdHJlZXM/ClRoZW4gc2FpZCBhbGwgdGhlIHRyZWVzIHVudG8gdGhlIGJyYW1ibGUsIENvbWUgdGhvdSwgYW5kIHJlaWduIG92ZXIgdXMuCkFuZCB0aGUgYnJhbWJsZSBzYWlkIHVudG8gdGhlIHRyZWVzLCBJZiBpbiB0cnV0aCB5ZSBhbm9pbnQgbWUga2luZyBvdmVyIHlvdSwgdGhlbiBjb21lIGFuZCBwdXQgeW91ciB0cnVzdCBpbiBteSBzaGFkb3c6IGFuZCBpZiBub3QsIGxldCBmaXJlIGNvbWUgb3V0IG9mIHRoZSBicmFtYmxlLCBhbmQgZGV2b3VyIHRoZSBjZWRhcnMgb2YgTGViYW5vbi4KTm93IHRoZXJlZm9yZSwgaWYgeWUgaGF2ZSBkb25lIHRydWx5IGFuZCBzaW5jZXJlbHksIGluIHRoYXQgeWUgaGF2ZSBtYWRlIEFiaW1lbGVjaCBraW5nLCBhbmQgaWYgeWUgaGF2ZSBkZWFsdCB3ZWxsIHdpdGggSmVydWJiYWFsIGFuZCBoaXMgaG91c2UsIGFuZCBoYXZlIGRvbmUgdW50byBoaW0gYWNjb3JkaW5nIHRvIHRoZSBkZXNlcnZpbmcgb2YgaGlzIGhhbmRzOwooRm9yIG15IGZhdGhlciBmb3VnaHQgZm9yIHlvdSwgYW5kIGFkdmVudHVyZWQgaGlzIGxpZmUgZmFyLCBhbmQgZGVsaXZlcmVkIHlvdSBvdXQgb2YgdGhlIGhhbmQgb2YgTWlkaWFuOgpBbmQgeWUgYXJlIHJpc2VuIHVwIGFnYWluc3QgbXkgZmF0aGVyJ3MgaG91c2UgdGhpcyBkYXksIGFuZCBoYXZlIHNsYWluIGhpcyBzb25zLCB0aHJlZXNjb3JlIGFuZCB0ZW4gcGVyc29ucywgdXBvbiBvbmUgc3RvbmUsIGFuZCBoYXZlIG1hZGUgQWJpbWVsZWNoLCB0aGUgc29uIG9mIGhpcyBtYWlkc2VydmFudCwga2luZyBvdmVyIHRoZSBtZW4gb2YgU2hlY2hlbSwgYmVjYXVzZSBoZSBpcyB5b3VyIGJyb3RoZXI7KQpJZiB5ZSB0aGVuIGhhdmUgZGVhbHQgdHJ1bHkgYW5kIHNpbmNlcmVseSB3aXRoIEplcnViYmFhbCBhbmQgd2l0aCBoaXMgaG91c2UgdGhpcyBkYXksIHRoZW4gcmVqb2ljZSB5ZSBpbiBBYmltZWxlY2gsIGFuZCBsZXQgaGltIGFsc28gcmVqb2ljZSBpbiB5b3U6CkJ1dCBpZiBub3QsIGxldCBmaXJlIGNvbWUgb3V0IGZyb20gQWJpbWVsZWNoLCBhbmQgZGV2b3VyIHRoZSBtZW4gb2YgU2hlY2hlbSwgYW5kIHRoZSBob3VzZSBvZiBNaWxsbzsgYW5kIGxldCBmaXJlIGNvbWUgb3V0IGZyb20gdGhlIG1lbiBvZiBTaGVjaGVtLCBhbmQgZnJvbSB0aGUgaG91c2Ugb2YgTWlsbG8sIGFuZCBkZXZvdXIgQWJpbWVsZWNoLgpBbmQgSm90aGFtIHJhbiBhd2F5LCBhbmQgZmxlZCwgYW5kIHdlbnQgdG8gQmVlciwgYW5kIGR3ZWx0IHRoZXJlLCBmb3IgZmVhciBvZiBBYmltZWxlY2ggaGlzIGJyb3RoZXIuCldoZW4gQWJpbWVsZWNoIGhhZCByZWlnbmVkIHRocmVlIHllYXJzIG92ZXIgSXNyYWVsLApUaGVuIEdvZCBzZW50IGFuIGV2aWwgc3Bpcml0IGJldHdlZW4gQWJpbWVsZWNoIGFuZCB0aGUgbWVuIG9mIFNoZWNoZW07IGFuZCB0aGUgbWVuIG9mIFNoZWNoZW0gZGVhbHQgdHJlYWNoZXJvdXNseSB3aXRoIEFiaW1lbGVjaDoKVGhhdCB0aGUgY3J1ZWx0eSBkb25lIHRvIHRoZSB0aHJlZXNjb3JlIGFuZCB0ZW4gc29ucyBvZiBKZXJ1YmJhYWwgbWlnaHQgY29tZSwgYW5kIHRoZWlyIGJsb29kIGJlIGxhaWQgdXBvbiBBYmltZWxlY2ggdGhlaXIgYnJvdGhlciwgd2hpY2ggc2xldyB0aGVtOyBhbmQgdXBvbiB0aGUgbWVuIG9mIFNoZWNoZW0sIHdoaWNoIGFpZGVkIGhpbSBpbiB0aGUga2lsbGluZyBvZiBoaXMgYnJldGhyZW4uCkFuZCB0aGUgbWVuIG9mIFNoZWNoZW0gc2V0IGxpZXJzIGluIHdhaXQgZm9yIGhpbSBpbiB0aGUgdG9wIG9mIHRoZSBtb3VudGFpbnMsIGFuZCB0aGV5IHJvYmJlZCBhbGwgdGhhdCBjYW1lIGFsb25nIHRoYXQgd2F5IGJ5IHRoZW06IGFuZCBpdCB3YXMgdG9sZCBBYmltZWxlY2guCkFuZCBHYWFsIHRoZSBzb24gb2YgRWJlZCBjYW1lIHdpdGggaGlzIGJyZXRocmVuLCBhbmQgd2VudCBvdmVyIHRvIFNoZWNoZW06IGFuZCB0aGUgbWVuIG9mIFNoZWNoZW0gcHV0IHRoZWlyIGNvbmZpZGVuY2UgaW4gaGltLgpBbmQgdGhleSB3ZW50IG91dCBpbnRvIHRoZSBmaWVsZHMsIGFuZCBnYXRoZXJlZCB0aGVpciB2aW5leWFyZHMsIGFuZCB0cm9kZSB0aGUgZ3JhcGVzLCBhbmQgbWFkZSBtZXJyeSwgYW5kIHdlbnQgaW50byB0aGUgaG91c2Ugb2YgdGhlaXIgZ29kLCBhbmQgZGlkIGVhdCBhbmQgZHJpbmssIGFuZCBjdXJzZWQgQWJpbWVsZWNoLgpBbmQgR2FhbCB0aGUgc29uIG9mIEViZWQgc2FpZCwgV2hvIGlzIEFiaW1lbGVjaCwgYW5kIHdobyBpcyBTaGVjaGVtLCB0aGF0IHdlIHNob3VsZCBzZXJ2ZSBoaW0/IGlzIG5vdCBoZSB0aGUgc29uIG9mIEplcnViYmFhbD8gYW5kIFplYnVsIGhpcyBvZmZpY2VyPyBzZXJ2ZSB0aGUgbWVuIG9mIEhhbW9yIHRoZSBmYXRoZXIgb2YgU2hlY2hlbTogZm9yIHdoeSBzaG91bGQgd2Ugc2VydmUgaGltPwpBbmQgd291bGQgdG8gR29kIHRoaXMgcGVvcGxlIHdlcmUgdW5kZXIgbXkgaGFuZCEgdGhlbiB3b3VsZCBJIHJlbW92ZSBBYmltZWxlY2guIEFuZCBoZSBzYWlkIHRvIEFiaW1lbGVjaCwgSW5jcmVhc2UgdGhpbmUgYXJteSwgYW5kIGNvbWUgb3V0LgpBbmQgd2hlbiBaZWJ1bCB0aGUgcnVsZXIgb2YgdGhlIGNpdHkgaGVhcmQgdGhlIHdvcmRzIG9mIEdhYWwgdGhlIHNvbiBvZiBFYmVkLCBoaXMgYW5nZXIgd2FzIGtpbmRsZWQuCkFuZCBoZSBzZW50IG1lc3NlbmdlcnMgdW50byBBYmltZWxlY2ggcHJpdmlseSwgc2F5aW5nLCBCZWhvbGQsIEdhYWwgdGhlIHNvbiBvZiBFYmVkIGFuZCBoaXMgYnJldGhyZW4gYmUgY29tZSB0byBTaGVjaGVtOyBhbmQsIGJlaG9sZCwgdGhleSBmb3J0aWZ5IHRoZSBjaXR5IGFnYWluc3QgdGhlZS4KTm93IHRoZXJlZm9yZSB1cCBieSBuaWdodCwgdGhvdSBhbmQgdGhlIHBlb3BsZSB0aGF0IGlzIHdpdGggdGhlZSwgYW5kIGxpZSBpbiB3YWl0IGluIHRoZSBmaWVsZDoKQW5kIGl0IHNoYWxsIGJlLCB0aGF0IGluIHRoZSBtb3JuaW5nLCBhcyBzb29uIGFzIHRoZSBzdW4gaXMgdXAsIHRob3Ugc2hhbHQgcmlzZSBlYXJseSwgYW5kIHNldCB1cG9uIHRoZSBjaXR5OiBhbmQsIGJlaG9sZCwgd2hlbiBoZSBhbmQgdGhlIHBlb3BsZSB0aGF0IGlzIHdpdGggaGltIGNvbWUgb3V0IGFnYWluc3QgdGhlZSwgdGhlbiBtYXllc3QgdGhvdSBkbyB0byB0aGVtIGFzIHRob3Ugc2hhbHQgZmluZCBvY2Nhc2lvbi4KQW5kIEFiaW1lbGVjaCByb3NlIHVwLCBhbmQgYWxsIHRoZSBwZW9wbGUgdGhhdCB3ZXJlIHdpdGggaGltLCBieSBuaWdodCwgYW5kIHRoZXkgbGFpZCB3YWl0IGFnYWluc3QgU2hlY2hlbSBpbiBmb3VyIGNvbXBhbmllcy4KQW5kIEdhYWwgdGhlIHNvbiBvZiBFYmVkIHdlbnQgb3V0LCBhbmQgc3Rvb2QgaW4gdGhlIGVudGVyaW5nIG9mIHRoZSBnYXRlIG9mIHRoZSBjaXR5OiBhbmQgQWJpbWVsZWNoIHJvc2UgdXAsIGFuZCB0aGUgcGVvcGxlIHRoYXQgd2VyZSB3aXRoIGhpbSwgZnJvbSBseWluZyBpbiB3YWl0LgpBbmQgd2hlbiBHYWFsIHNhdyB0aGUgcGVvcGxlLCBoZSBzYWlkIHRvIFplYnVsLCBCZWhvbGQsIHRoZXJlIGNvbWUgcGVvcGxlIGRvd24gZnJvbSB0aGUgdG9wIG9mIHRoZSBtb3VudGFpbnMuIEFuZCBaZWJ1bCBzYWlkIHVudG8gaGltLCBUaG91IHNlZXN0IHRoZSBzaGFkb3cgb2YgdGhlIG1vdW50YWlucyBhcyBpZiB0aGV5IHdlcmUgbWVuLgpBbmQgR2FhbCBzcGFrZSBhZ2FpbiwgYW5kIHNhaWQsIFNlZSB0aGVyZSBjb21lIHBlb3BsZSBkb3duIGJ5IHRoZSBtaWRkbGUgb2YgdGhlIGxhbmQsIGFuZCBhbm90aGVyIGNvbXBhbnkgY29tZSBhbG9uZyBieSB0aGUgcGxhaW4gb2YgTWVvbmVuaW0uClRoZW4gc2FpZCBaZWJ1bCB1bnRvIGhpbSwgV2hlcmUgaXMgbm93IHRoeSBtb3V0aCwgd2hlcmV3aXRoIHRob3Ugc2FpZHN0LCBXaG8gaXMgQWJpbWVsZWNoLCB0aGF0IHdlIHNob3VsZCBzZXJ2ZSBoaW0/IGlzIG5vdCB0aGlzIHRoZSBwZW9wbGUgdGhhdCB0aG91IGhhc3QgZGVzcGlzZWQ/IGdvIG91dCwgSSBwcmF5IG5vdywgYW5kIGZpZ2h0IHdpdGggdGhlbS4KQW5kIEdhYWwgd2VudCBvdXQgYmVmb3JlIHRoZSBtZW4gb2YgU2hlY2hlbSwgYW5kIGZvdWdodCB3aXRoIEFiaW1lbGVjaC4KQW5kIEFiaW1lbGVjaCBjaGFzZWQgaGltLCBhbmQgaGUgZmxlZCBiZWZvcmUgaGltLCBhbmQgbWFueSB3ZXJlIG92ZXJ0aHJvd24gYW5kIHdvdW5kZWQsIGV2ZW4gdW50byB0aGUgZW50ZXJpbmcgb2YgdGhlIGdhdGUuCkFuZCBBYmltZWxlY2ggZHdlbHQgYXQgQXJ1bWFoOiBhbmQgWmVidWwgdGhydXN0IG91dCBHYWFsIGFuZCBoaXMgYnJldGhyZW4sIHRoYXQgdGhleSBzaG91bGQgbm90IGR3ZWxsIGluIFNoZWNoZW0uCkFuZCBpdCBjYW1lIHRvIHBhc3Mgb24gdGhlIG1vcnJvdywgdGhhdCB0aGUgcGVvcGxlIHdlbnQgb3V0IGludG8gdGhlIGZpZWxkOyBhbmQgdGhleSB0b2xkIEFiaW1lbGVjaC4KQW5kIGhlIHRvb2sgdGhlIHBlb3BsZSwgYW5kIGRpdmlkZWQgdGhlbSBpbnRvIHRocmVlIGNvbXBhbmllcywgYW5kIGxhaWQgd2FpdCBpbiB0aGUgZmllbGQsIGFuZCBsb29rZWQsIGFuZCwgYmVob2xkLCB0aGUgcGVvcGxlIHdlcmUgY29tZSBmb3J0aCBvdXQgb2YgdGhlIGNpdHk7IGFuZCBoZSByb3NlIHVwIGFnYWluc3QgdGhlbSwgYW5kIHNtb3RlIHRoZW0uCkFuZCBBYmltZWxlY2gsIGFuZCB0aGUgY29tcGFueSB0aGF0IHdhcyB3aXRoIGhpbSwgcnVzaGVkIGZvcndhcmQsIGFuZCBzdG9vZCBpbiB0aGUgZW50ZXJpbmcgb2YgdGhlIGdhdGUgb2YgdGhlIGNpdHk6IGFuZCB0aGUgdHdvIG90aGVyIGNvbXBhbmllcyByYW4gdXBvbiBhbGwgdGhlIHBlb3BsZSB0aGF0IHdlcmUgaW4gdGhlIGZpZWxkcywgYW5kIHNsZXcgdGhlbS4KQW5kIEFiaW1lbGVjaCBmb3VnaHQgYWdhaW5zdCB0aGUgY2l0eSBhbGwgdGhhdCBkYXk7IGFuZCBoZSB0b29rIHRoZSBjaXR5LCBhbmQgc2xldyB0aGUgcGVvcGxlIHRoYXQgd2FzIHRoZXJlaW4sIGFuZCBiZWF0IGRvd24gdGhlIGNpdHksIGFuZCBzb3dlZCBpdCB3aXRoIHNhbHQuCkFuZCB3aGVuIGFsbCB0aGUgbWVuIG9mIHRoZSB0b3dlciBvZiBTaGVjaGVtIGhlYXJkIHRoYXQsIHRoZXkgZW50ZXJlZCBpbnRvIGFuIGhvbGQgb2YgdGhlIGhvdXNlIG9mIHRoZSBnb2QgQmVyaXRoLgpBbmQgaXQgd2FzIHRvbGQgQWJpbWVsZWNoLCB0aGF0IGFsbCB0aGUgbWVuIG9mIHRoZSB0b3dlciBvZiBTaGVjaGVtIHdlcmUgZ2F0aGVyZWQgdG9nZXRoZXIuCkFuZCBBYmltZWxlY2ggZ2F0IGhpbSB1cCB0byBtb3VudCBaYWxtb24sIGhlIGFuZCBhbGwgdGhlIHBlb3BsZSB0aGF0IHdlcmUgd2l0aCBoaW07IGFuZCBBYmltZWxlY2ggdG9vayBhbiBheGUgaW4gaGlzIGhhbmQsIGFuZCBjdXQgZG93biBhIGJvdWdoIGZyb20gdGhlIHRyZWVzLCBhbmQgdG9vayBpdCwgYW5kIGxhaWQgaXQgb24gaGlzIHNob3VsZGVyLCBhbmQgc2FpZCB1bnRvIHRoZSBwZW9wbGUgdGhhdCB3ZXJlIHdpdGggaGltLCBXaGF0IHllIGhhdmUgc2VlbiBtZSBkbywgbWFrZSBoYXN0ZSwgYW5kIGRvIGFzIEkgaGF2ZSBkb25lLgpBbmQgYWxsIHRoZSBwZW9wbGUgbGlrZXdpc2UgY3V0IGRvd24gZXZlcnkgbWFuIGhpcyBib3VnaCwgYW5kIGZvbGxvd2VkIEFiaW1lbGVjaCwgYW5kIHB1dCB0aGVtIHRvIHRoZSBob2xkLCBhbmQgc2V0IHRoZSBob2xkIG9uIGZpcmUgdXBvbiB0aGVtOyBzbyB0aGF0IGFsbCB0aGUgbWVuIG9mIHRoZSB0b3dlciBvZiBTaGVjaGVtIGRpZWQgYWxzbywgYWJvdXQgYSB0aG91c2FuZCBtZW4gYW5kIHdvbWVuLgpUaGVuIHdlbnQgQWJpbWVsZWNoIHRvIFRoZWJleiwgYW5kIGVuY2FtcGVkIGFnYWluc3QgVGhlYmV6LCBhbmQgdG9vayBpdC4KQnV0IHRoZXJlIHdhcyBhIHN0cm9uZyB0b3dlciB3aXRoaW4gdGhlIGNpdHksIGFuZCB0aGl0aGVyIGZsZWQgYWxsIHRoZSBtZW4gYW5kIHdvbWVuLCBhbmQgYWxsIHRoZXkgb2YgdGhlIGNpdHksIGFuZCBzaHV0IGl0IHRvIHRoZW0sIGFuZCBnYXQgdGhlbSB1cCB0byB0aGUgdG9wIG9mIHRoZSB0b3dlci4KQW5kIEFiaW1lbGVjaCBjYW1lIHVudG8gdGhlIHRvd2VyLCBhbmQgZm91Z2h0IGFnYWluc3QgaXQsIGFuZCB3ZW50IGhhcmQgdW50byB0aGUgZG9vciBvZiB0aGUgdG93ZXIgdG8gYnVybiBpdCB3aXRoIGZpcmUuCkFuZCBhIGNlcnRhaW4gd29tYW4gY2FzdCBhIHBpZWNlIG9mIGEgbWlsbHN0b25lIHVwb24gQWJpbWVsZWNoJ3MgaGVhZCwgYW5kIGFsbCB0byBicmFrZSBoaXMgc2t1bGwuClRoZW4gaGUgY2FsbGVkIGhhc3RpbHkgdW50byB0aGUgeW91bmcgbWFuIGhpcyBhcm1vdXJiZWFyZXIsIGFuZCBzYWlkIHVudG8gaGltLCBEcmF3IHRoeSBzd29yZCwgYW5kIHNsYXkgbWUsIHRoYXQgbWVuIHNheSBub3Qgb2YgbWUsIEEgd29tZW4gc2xldyBoaW0uIEFuZCBoaXMgeW91bmcgbWFuIHRocnVzdCBoaW0gdGhyb3VnaCwgYW5kIGhlIGRpZWQuCkFuZCB3aGVuIHRoZSBtZW4gb2YgSXNyYWVsIHNhdyB0aGF0IEFiaW1lbGVjaCB3YXMgZGVhZCwgdGhleSBkZXBhcnRlZCBldmVyeSBtYW4gdW50byBoaXMgcGxhY2UuClRodXMgR29kIHJlbmRlcmVkIHRoZSB3aWNrZWRuZXNzIG9mIEFiaW1lbGVjaCwgd2hpY2ggaGUgZGlkIHVudG8gaGlzIGZhdGhlciwgaW4gc2xheWluZyBoaXMgc2V2ZW50eSBicmV0aHJlbjoKQW5kIGFsbCB0aGUgZXZpbCBvZiB0aGUgbWVuIG9mIFNoZWNoZW0gZGlkIEdvZCByZW5kZXIgdXBvbiB0aGVpciBoZWFkczogYW5kIHVwb24gdGhlbSBjYW1lIHRoZSBjdXJzZSBvZiBKb3RoYW0gdGhlIHNvbiBvZiBKZXJ1YmJhYWwuCkFuZCBhZnRlciBBYmltZWxlY2ggdGhlcmUgYXJvc2UgdG8gZGVmZW5kIElzcmFlbCBUb2xhIHRoZSBzb24gb2YgUHVhaCwgdGhlIHNvbiBvZiBEb2RvLCBhIG1hbiBvZiBJc3NhY2hhcjsgYW5kIGhlIGR3ZWx0IGluIFNoYW1pciBpbiBtb3VudCBFcGhyYWltLgpBbmQgaGUganVkZ2VkIElzcmFlbCB0d2VudHkgYW5kIHRocmVlIHllYXJzLCBhbmQgZGllZCwgYW5kIHdhcyBidXJpZWQgaW4gU2hhbWlyLgpBbmQgYWZ0ZXIgaGltIGFyb3NlIEphaXIsIGEgR2lsZWFkaXRlLCBhbmQganVkZ2VkIElzcmFlbCB0d2VudHkgYW5kIHR3byB5ZWFycy4KQW5kIGhlIGhhZCB0aGlydHkgc29ucyB0aGF0IHJvZGUgb24gdGhpcnR5IGFzcyBjb2x0cywgYW5kIHRoZXkgaGFkIHRoaXJ0eSBjaXRpZXMsIHdoaWNoIGFyZSBjYWxsZWQgSGF2b3RoamFpciB1bnRvIHRoaXMgZGF5LCB3aGljaCBhcmUgaW4gdGhlIGxhbmQgb2YgR2lsZWFkLgpBbmQgSmFpciBkaWVkLCBhbmQgd2FzIGJ1cmllZCBpbiBDYW1vbi4KQW5kIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgZGlkIGV2aWwgYWdhaW4gaW4gdGhlIHNpZ2h0IG9mIHRoZSBMT1JELCBhbmQgc2VydmVkIEJhYWxpbSwgYW5kIEFzaHRhcm90aCwgYW5kIHRoZSBnb2RzIG9mIFN5cmlhLCBhbmQgdGhlIGdvZHMgb2YgWmlkb24sIGFuZCB0aGUgZ29kcyBvZiBNb2FiLCBhbmQgdGhlIGdvZHMgb2YgdGhlIGNoaWxkcmVuIG9mIEFtbW9uLCBhbmQgdGhlIGdvZHMgb2YgdGhlIFBoaWxpc3RpbmVzLCBhbmQgZm9yc29vayB0aGUgTE9SRCwgYW5kIHNlcnZlZCBub3QgaGltLgpBbmQgdGhlIGFuZ2VyIG9mIHRoZSBMT1JEIHdhcyBob3QgYWdhaW5zdCBJc3JhZWwsIGFuZCBoZSBzb2xkIHRoZW0gaW50byB0aGUgaGFuZHMgb2YgdGhlIFBoaWxpc3RpbmVzLCBhbmQgaW50byB0aGUgaGFuZHMgb2YgdGhlIGNoaWxkcmVuIG9mIEFtbW9uLgpBbmQgdGhhdCB5ZWFyIHRoZXkgdmV4ZWQgYW5kIG9wcHJlc3NlZCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsOiBlaWdodGVlbiB5ZWFycywgYWxsIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgdGhhdCB3ZXJlIG9uIHRoZSBvdGhlciBzaWRlIEpvcmRhbiBpbiB0aGUgbGFuZCBvZiB0aGUgQW1vcml0ZXMsIHdoaWNoIGlzIGluIEdpbGVhZC4KTW9yZW92ZXIgdGhlIGNoaWxkcmVuIG9mIEFtbW9uIHBhc3NlZCBvdmVyIEpvcmRhbiB0byBmaWdodCBhbHNvIGFnYWluc3QgSnVkYWgsIGFuZCBhZ2FpbnN0IEJlbmphbWluLCBhbmQgYWdhaW5zdCB0aGUgaG91c2Ugb2YgRXBocmFpbTsgc28gdGhhdCBJc3JhZWwgd2FzIHNvcmUgZGlzdHJlc3NlZC4KQW5kIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgY3JpZWQgdW50byB0aGUgTE9SRCwgc2F5aW5nLCBXZSBoYXZlIHNpbm5lZCBhZ2FpbnN0IHRoZWUsIGJvdGggYmVjYXVzZSB3ZSBoYXZlIGZvcnNha2VuIG91ciBHb2QsIGFuZCBhbHNvIHNlcnZlZCBCYWFsaW0uCkFuZCB0aGUgTE9SRCBzYWlkIHVudG8gdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgRGlkIG5vdCBJIGRlbGl2ZXIgeW91IGZyb20gdGhlIEVneXB0aWFucywgYW5kIGZyb20gdGhlIEFtb3JpdGVzLCBmcm9tIHRoZSBjaGlsZHJlbiBvZiBBbW1vbiwgYW5kIGZyb20gdGhlIFBoaWxpc3RpbmVzPwpUaGUgWmlkb25pYW5zIGFsc28sIGFuZCB0aGUgQW1hbGVraXRlcywgYW5kIHRoZSBNYW9uaXRlcywgZGlkIG9wcHJlc3MgeW91OyBhbmQgeWUgY3JpZWQgdG8gbWUsIGFuZCBJIGRlbGl2ZXJlZCB5b3Ugb3V0IG9mIHRoZWlyIGhhbmQuCllldCB5ZSBoYXZlIGZvcnNha2VuIG1lLCBhbmQgc2VydmVkIG90aGVyIGdvZHM6IHdoZXJlZm9yZSBJIHdpbGwgZGVsaXZlciB5b3Ugbm8gbW9yZS4KR28gYW5kIGNyeSB1bnRvIHRoZSBnb2RzIHdoaWNoIHllIGhhdmUgY2hvc2VuOyBsZXQgdGhlbSBkZWxpdmVyIHlvdSBpbiB0aGUgdGltZSBvZiB5b3VyIHRyaWJ1bGF0aW9uLgpBbmQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBzYWlkIHVudG8gdGhlIExPUkQsIFdlIGhhdmUgc2lubmVkOiBkbyB0aG91IHVudG8gdXMgd2hhdHNvZXZlciBzZWVtZXRoIGdvb2QgdW50byB0aGVlOyBkZWxpdmVyIHVzIG9ubHksIHdlIHByYXkgdGhlZSwgdGhpcyBkYXkuCkFuZCB0aGV5IHB1dCBhd2F5IHRoZSBzdHJhbmdlIGdvZHMgZnJvbSBhbW9uZyB0aGVtLCBhbmQgc2VydmVkIHRoZSBMT1JEOiBhbmQgaGlzIHNvdWwgd2FzIGdyaWV2ZWQgZm9yIHRoZSBtaXNlcnkgb2YgSXNyYWVsLgpUaGVuIHRoZSBjaGlsZHJlbiBvZiBBbW1vbiB3ZXJlIGdhdGhlcmVkIHRvZ2V0aGVyLCBhbmQgZW5jYW1wZWQgaW4gR2lsZWFkLiBBbmQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBhc3NlbWJsZWQgdGhlbXNlbHZlcyB0b2dldGhlciwgYW5kIGVuY2FtcGVkIGluIE1penBlaC4KQW5kIHRoZSBwZW9wbGUgYW5kIHByaW5jZXMgb2YgR2lsZWFkIHNhaWQgb25lIHRvIGFub3RoZXIsIFdoYXQgbWFuIGlzIGhlIHRoYXQgd2lsbCBiZWdpbiB0byBmaWdodCBhZ2FpbnN0IHRoZSBjaGlsZHJlbiBvZiBBbW1vbj8gaGUgc2hhbGwgYmUgaGVhZCBvdmVyIGFsbCB0aGUgaW5oYWJpdGFudHMgb2YgR2lsZWFkLgpOb3cgSmVwaHRoYWggdGhlIEdpbGVhZGl0ZSB3YXMgYSBtaWdodHkgbWFuIG9mIHZhbG91ciwgYW5kIGhlIHdhcyB0aGUgc29uIG9mIGFuIGhhcmxvdDogYW5kIEdpbGVhZCBiZWdhdCBKZXBodGhhaC4KQW5kIEdpbGVhZCdzIHdpZmUgYmFyZSBoaW0gc29uczsgYW5kIGhpcyB3aWZlJ3Mgc29ucyBncmV3IHVwLCBhbmQgdGhleSB0aHJ1c3Qgb3V0IEplcGh0aGFoLCBhbmQgc2FpZCB1bnRvIGhpbSwgVGhvdSBzaGFsdCBub3QgaW5oZXJpdCBpbiBvdXIgZmF0aGVyJ3MgaG91c2U7IGZvciB0aG91IGFydCB0aGUgc29uIG9mIGEgc3RyYW5nZSB3b21hbi4KVGhlbiBKZXBodGhhaCBmbGVkIGZyb20gaGlzIGJyZXRocmVuLCBhbmQgZHdlbHQgaW4gdGhlIGxhbmQgb2YgVG9iOiBhbmQgdGhlcmUgd2VyZSBnYXRoZXJlZCB2YWluIG1lbiB0byBKZXBodGhhaCwgYW5kIHdlbnQgb3V0IHdpdGggaGltLgpBbmQgaXQgY2FtZSB0byBwYXNzIGluIHByb2Nlc3Mgb2YgdGltZSwgdGhhdCB0aGUgY2hpbGRyZW4gb2YgQW1tb24gbWFkZSB3YXIgYWdhaW5zdCBJc3JhZWwuCkFuZCBpdCB3YXMgc28sIHRoYXQgd2hlbiB0aGUgY2hpbGRyZW4gb2YgQW1tb24gbWFkZSB3YXIgYWdhaW5zdCBJc3JhZWwsIHRoZSBlbGRlcnMgb2YgR2lsZWFkIHdlbnQgdG8gZmV0Y2ggSmVwaHRoYWggb3V0IG9mIHRoZSBsYW5kIG9mIFRvYjoKQW5kIHRoZXkgc2FpZCB1bnRvIEplcGh0aGFoLCBDb21lLCBhbmQgYmUgb3VyIGNhcHRhaW4sIHRoYXQgd2UgbWF5IGZpZ2h0IHdpdGggdGhlIGNoaWxkcmVuIG9mIEFtbW9uLgpBbmQgSmVwaHRoYWggc2FpZCB1bnRvIHRoZSBlbGRlcnMgb2YgR2lsZWFkLCBEaWQgbm90IHllIGhhdGUgbWUsIGFuZCBleHBlbCBtZSBvdXQgb2YgbXkgZmF0aGVyJ3MgaG91c2U/IGFuZCB3aHkgYXJlIHllIGNvbWUgdW50byBtZSBub3cgd2hlbiB5ZSBhcmUgaW4gZGlzdHJlc3M/CkFuZCB0aGUgZWxkZXJzIG9mIEdpbGVhZCBzYWlkIHVudG8gSmVwaHRoYWgsIFRoZXJlZm9yZSB3ZSB0dXJuIGFnYWluIHRvIHRoZWUgbm93LCB0aGF0IHRob3UgbWF5ZXN0IGdvIHdpdGggdXMsIGFuZCBmaWdodCBhZ2FpbnN0IHRoZSBjaGlsZHJlbiBvZiBBbW1vbiwgYW5kIGJlIG91ciBoZWFkIG92ZXIgYWxsIHRoZSBpbmhhYml0YW50cyBvZiBHaWxlYWQuCkFuZCBKZXBodGhhaCBzYWlkIHVudG8gdGhlIGVsZGVycyBvZiBHaWxlYWQsIElmIHllIGJyaW5nIG1lIGhvbWUgYWdhaW4gdG8gZmlnaHQgYWdhaW5zdCB0aGUgY2hpbGRyZW4gb2YgQW1tb24sIGFuZCB0aGUgTE9SRCBkZWxpdmVyIHRoZW0gYmVmb3JlIG1lLCBzaGFsbCBJIGJlIHlvdXIgaGVhZD8KQW5kIHRoZSBlbGRlcnMgb2YgR2lsZWFkIHNhaWQgdW50byBKZXBodGhhaCwgVGhlIExPUkQgYmUgd2l0bmVzcyBiZXR3ZWVuIHVzLCBpZiB3ZSBkbyBub3Qgc28gYWNjb3JkaW5nIHRvIHRoeSB3b3Jkcy4KVGhlbiBKZXBodGhhaCB3ZW50IHdpdGggdGhlIGVsZGVycyBvZiBHaWxlYWQsIGFuZCB0aGUgcGVvcGxlIG1hZGUgaGltIGhlYWQgYW5kIGNhcHRhaW4gb3ZlciB0aGVtOiBhbmQgSmVwaHRoYWggdXR0ZXJlZCBhbGwgaGlzIHdvcmRzIGJlZm9yZSB0aGUgTE9SRCBpbiBNaXpwZWguCkFuZCBKZXBodGhhaCBzZW50IG1lc3NlbmdlcnMgdW50byB0aGUga2luZyBvZiB0aGUgY2hpbGRyZW4gb2YgQW1tb24sIHNheWluZywgV2hhdCBoYXN0IHRob3UgdG8gZG8gd2l0aCBtZSwgdGhhdCB0aG91IGFydCBjb21lIGFnYWluc3QgbWUgdG8gZmlnaHQgaW4gbXkgbGFuZD8KQW5kIHRoZSBraW5nIG9mIHRoZSBjaGlsZHJlbiBvZiBBbW1vbiBhbnN3ZXJlZCB1bnRvIHRoZSBtZXNzZW5nZXJzIG9mIEplcGh0aGFoLCBCZWNhdXNlIElzcmFlbCB0b29rIGF3YXkgbXkgbGFuZCwgd2hlbiB0aGV5IGNhbWUgdXAgb3V0IG9mIEVneXB0LCBmcm9tIEFybm9uIGV2ZW4gdW50byBKYWJib2ssIGFuZCB1bnRvIEpvcmRhbjogbm93IHRoZXJlZm9yZSByZXN0b3JlIHRob3NlIGxhbmRzIGFnYWluIHBlYWNlYWJseS4KQW5kIEplcGh0aGFoIHNlbnQgbWVzc2VuZ2VycyBhZ2FpbiB1bnRvIHRoZSBraW5nIG9mIHRoZSBjaGlsZHJlbiBvZiBBbW1vbjoKQW5kIHNhaWQgdW50byBoaW0sIFRodXMgc2FpdGggSmVwaHRoYWgsIElzcmFlbCB0b29rIG5vdCBhd2F5IHRoZSBsYW5kIG9mIE1vYWIsIG5vciB0aGUgbGFuZCBvZiB0aGUgY2hpbGRyZW4gb2YgQW1tb246CkJ1dCB3aGVuIElzcmFlbCBjYW1lIHVwIGZyb20gRWd5cHQsIGFuZCB3YWxrZWQgdGhyb3VnaCB0aGUgd2lsZGVybmVzcyB1bnRvIHRoZSBSZWQgc2VhLCBhbmQgY2FtZSB0byBLYWRlc2g7ClRoZW4gSXNyYWVsIHNlbnQgbWVzc2VuZ2VycyB1bnRvIHRoZSBraW5nIG9mIEVkb20sIHNheWluZywgTGV0IG1lLCBJIHByYXkgdGhlZSwgcGFzcyB0aHJvdWdoIHRoeSBsYW5kOiBidXQgdGhlIGtpbmcgb2YgRWRvbSB3b3VsZCBub3QgaGVhcmtlbiB0aGVyZXRvLiBBbmQgaW4gbGlrZSBtYW5uZXIgdGhleSBzZW50IHVudG8gdGhlIGtpbmcgb2YgTW9hYjogYnV0IGhlIHdvdWxkIG5vdCBjb25zZW50OiBhbmQgSXNyYWVsIGFib2RlIGluIEthZGVzaC4KVGhlbiB0aGV5IHdlbnQgYWxvbmcgdGhyb3VnaCB0aGUgd2lsZGVybmVzcywgYW5kIGNvbXBhc3NlZCB0aGUgbGFuZCBvZiBFZG9tLCBhbmQgdGhlIGxhbmQgb2YgTW9hYiwgYW5kIGNhbWUgYnkgdGhlIGVhc3Qgc2lkZSBvZiB0aGUgbGFuZCBvZiBNb2FiLCBhbmQgcGl0Y2hlZCBvbiB0aGUgb3RoZXIgc2lkZSBvZiBBcm5vbiwgYnV0IGNhbWUgbm90IHdpdGhpbiB0aGUgYm9yZGVyIG9mIE1vYWI6IGZvciBBcm5vbiB3YXMgdGhlIGJvcmRlciBvZiBNb2FiLgpBbmQgSXNyYWVsIHNlbnQgbWVzc2VuZ2VycyB1bnRvIFNpaG9uIGtpbmcgb2YgdGhlIEFtb3JpdGVzLCB0aGUga2luZyBvZiBIZXNoYm9uOyBhbmQgSXNyYWVsIHNhaWQgdW50byBoaW0sIExldCB1cyBwYXNzLCB3ZSBwcmF5IHRoZWUsIHRocm91Z2ggdGh5IGxhbmQgaW50byBteSBwbGFjZS4KQnV0IFNpaG9uIHRydXN0ZWQgbm90IElzcmFlbCB0byBwYXNzIHRocm91Z2ggaGlzIGNvYXN0OiBidXQgU2lob24gZ2F0aGVyZWQgYWxsIGhpcyBwZW9wbGUgdG9nZXRoZXIsIGFuZCBwaXRjaGVkIGluIEphaGF6LCBhbmQgZm91Z2h0IGFnYWluc3QgSXNyYWVsLgpBbmQgdGhlIExPUkQgR29kIG9mIElzcmFlbCBkZWxpdmVyZWQgU2lob24gYW5kIGFsbCBoaXMgcGVvcGxlIGludG8gdGhlIGhhbmQgb2YgSXNyYWVsLCBhbmQgdGhleSBzbW90ZSB0aGVtOiBzbyBJc3JhZWwgcG9zc2Vzc2VkIGFsbCB0aGUgbGFuZCBvZiB0aGUgQW1vcml0ZXMsIHRoZSBpbmhhYml0YW50cyBvZiB0aGF0IGNvdW50cnkuCkFuZCB0aGV5IHBvc3Nlc3NlZCBhbGwgdGhlIGNvYXN0cyBvZiB0aGUgQW1vcml0ZXMsIGZyb20gQXJub24gZXZlbiB1bnRvIEphYmJvaywgYW5kIGZyb20gdGhlIHdpbGRlcm5lc3MgZXZlbiB1bnRvIEpvcmRhbi4KU28gbm93IHRoZSBMT1JEIEdvZCBvZiBJc3JhZWwgaGF0aCBkaXNwb3NzZXNzZWQgdGhlIEFtb3JpdGVzIGZyb20gYmVmb3JlIGhpcyBwZW9wbGUgSXNyYWVsLCBhbmQgc2hvdWxkZXN0IHRob3UgcG9zc2VzcyBpdD8KV2lsdCBub3QgdGhvdSBwb3NzZXNzIHRoYXQgd2hpY2ggQ2hlbW9zaCB0aHkgZ29kIGdpdmV0aCB0aGVlIHRvIHBvc3Nlc3M/IFNvIHdob21zb2V2ZXIgdGhlIExPUkQgb3VyIEdvZCBzaGFsbCBkcml2ZSBvdXQgZnJvbSBiZWZvcmUgdXMsIHRoZW0gd2lsbCB3ZSBwb3NzZXNzLgpBbmQgbm93IGFydCB0aG91IGFueSB0aGluZyBiZXR0ZXIgdGhhbiBCYWxhayB0aGUgc29uIG9mIFppcHBvciwga2luZyBvZiBNb2FiPyBkaWQgaGUgZXZlciBzdHJpdmUgYWdhaW5zdCBJc3JhZWwsIG9yIGRpZCBoZSBldmVyIGZpZ2h0IGFnYWluc3QgdGhlbSwKV2hpbGUgSXNyYWVsIGR3ZWx0IGluIEhlc2hib24gYW5kIGhlciB0b3ducywgYW5kIGluIEFyb2VyIGFuZCBoZXIgdG93bnMsIGFuZCBpbiBhbGwgdGhlIGNpdGllcyB0aGF0IGJlIGFsb25nIGJ5IHRoZSBjb2FzdHMgb2YgQXJub24sIHRocmVlIGh1bmRyZWQgeWVhcnM/IHdoeSB0aGVyZWZvcmUgZGlkIHllIG5vdCByZWNvdmVyIHRoZW0gd2l0aGluIHRoYXQgdGltZT8KV2hlcmVmb3JlIEkgaGF2ZSBub3Qgc2lubmVkIGFnYWluc3QgdGhlZSwgYnV0IHRob3UgZG9lc3QgbWUgd3JvbmcgdG8gd2FyIGFnYWluc3QgbWU6IHRoZSBMT1JEIHRoZSBKdWRnZSBiZSBqdWRnZSB0aGlzIGRheSBiZXR3ZWVuIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgYW5kIHRoZSBjaGlsZHJlbiBvZiBBbW1vbi4KSG93YmVpdCB0aGUga2luZyBvZiB0aGUgY2hpbGRyZW4gb2YgQW1tb24gaGVhcmtlbmVkIG5vdCB1bnRvIHRoZSB3b3JkcyBvZiBKZXBodGhhaCB3aGljaCBoZSBzZW50IGhpbS4KVGhlbiB0aGUgU3Bpcml0IG9mIHRoZSBMT1JEIGNhbWUgdXBvbiBKZXBodGhhaCwgYW5kIGhlIHBhc3NlZCBvdmVyIEdpbGVhZCwgYW5kIE1hbmFzc2VoLCBhbmQgcGFzc2VkIG92ZXIgTWl6cGVoIG9mIEdpbGVhZCwgYW5kIGZyb20gTWl6cGVoIG9mIEdpbGVhZCBoZSBwYXNzZWQgb3ZlciB1bnRvIHRoZSBjaGlsZHJlbiBvZiBBbW1vbi4KQW5kIEplcGh0aGFoIHZvd2VkIGEgdm93IHVudG8gdGhlIExPUkQsIGFuZCBzYWlkLCBJZiB0aG91IHNoYWx0IHdpdGhvdXQgZmFpbCBkZWxpdmVyIHRoZSBjaGlsZHJlbiBvZiBBbW1vbiBpbnRvIG1pbmUgaGFuZHMsClRoZW4gaXQgc2hhbGwgYmUsIHRoYXQgd2hhdHNvZXZlciBjb21ldGggZm9ydGggb2YgdGhlIGRvb3JzIG9mIG15IGhvdXNlIHRvIG1lZXQgbWUsIHdoZW4gSSByZXR1cm4gaW4gcGVhY2UgZnJvbSB0aGUgY2hpbGRyZW4gb2YgQW1tb24sIHNoYWxsIHN1cmVseSBiZSB0aGUgTE9SRCdzLCBhbmQgSSB3aWxsIG9mZmVyIGl0IHVwIGZvciBhIGJ1cm50IG9mZmVyaW5nLgpTbyBKZXBodGhhaCBwYXNzZWQgb3ZlciB1bnRvIHRoZSBjaGlsZHJlbiBvZiBBbW1vbiB0byBmaWdodCBhZ2FpbnN0IHRoZW07IGFuZCB0aGUgTE9SRCBkZWxpdmVyZWQgdGhlbSBpbnRvIGhpcyBoYW5kcy4KQW5kIGhlIHNtb3RlIHRoZW0gZnJvbSBBcm9lciwgZXZlbiB0aWxsIHRob3UgY29tZSB0byBNaW5uaXRoLCBldmVuIHR3ZW50eSBjaXRpZXMsIGFuZCB1bnRvIHRoZSBwbGFpbiBvZiB0aGUgdmluZXlhcmRzLCB3aXRoIGEgdmVyeSBncmVhdCBzbGF1Z2h0ZXIuIFRodXMgdGhlIGNoaWxkcmVuIG9mIEFtbW9uIHdlcmUgc3ViZHVlZCBiZWZvcmUgdGhlIGNoaWxkcmVuIG9mIElzcmFlbC4KQW5kIEplcGh0aGFoIGNhbWUgdG8gTWl6cGVoIHVudG8gaGlzIGhvdXNlLCBhbmQsIGJlaG9sZCwgaGlzIGRhdWdodGVyIGNhbWUgb3V0IHRvIG1lZXQgaGltIHdpdGggdGltYnJlbHMgYW5kIHdpdGggZGFuY2VzOiBhbmQgc2hlIHdhcyBoaXMgb25seSBjaGlsZDsgYmVzaWRlIGhlciBoZSBoYWQgbmVpdGhlciBzb24gbm9yIGRhdWdodGVyLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIGhlIHNhdyBoZXIsIHRoYXQgaGUgcmVudCBoaXMgY2xvdGhlcywgYW5kIHNhaWQsIEFsYXMsIG15IGRhdWdodGVyISB0aG91IGhhc3QgYnJvdWdodCBtZSB2ZXJ5IGxvdywgYW5kIHRob3UgYXJ0IG9uZSBvZiB0aGVtIHRoYXQgdHJvdWJsZSBtZTogZm9yIEkgaGF2ZSBvcGVuZWQgbXkgbW91dGggdW50byB0aGUgTE9SRCwgYW5kIEkgY2Fubm90IGdvIGJhY2suCkFuZCBzaGUgc2FpZCB1bnRvIGhpbSwgTXkgZmF0aGVyLCBpZiB0aG91IGhhc3Qgb3BlbmVkIHRoeSBtb3V0aCB1bnRvIHRoZSBMT1JELCBkbyB0byBtZSBhY2NvcmRpbmcgdG8gdGhhdCB3aGljaCBoYXRoIHByb2NlZWRlZCBvdXQgb2YgdGh5IG1vdXRoOyBmb3Jhc211Y2ggYXMgdGhlIExPUkQgaGF0aCB0YWtlbiB2ZW5nZWFuY2UgZm9yIHRoZWUgb2YgdGhpbmUgZW5lbWllcywgZXZlbiBvZiB0aGUgY2hpbGRyZW4gb2YgQW1tb24uCkFuZCBzaGUgc2FpZCB1bnRvIGhlciBmYXRoZXIsIExldCB0aGlzIHRoaW5nIGJlIGRvbmUgZm9yIG1lOiBsZXQgbWUgYWxvbmUgdHdvIG1vbnRocywgdGhhdCBJIG1heSBnbyB1cCBhbmQgZG93biB1cG9uIHRoZSBtb3VudGFpbnMsIGFuZCBiZXdhaWwgbXkgdmlyZ2luaXR5LCBJIGFuZCBteSBmZWxsb3dzLgpBbmQgaGUgc2FpZCwgR28uIEFuZCBoZSBzZW50IGhlciBhd2F5IGZvciB0d28gbW9udGhzOiBhbmQgc2hlIHdlbnQgd2l0aCBoZXIgY29tcGFuaW9ucywgYW5kIGJld2FpbGVkIGhlciB2aXJnaW5pdHkgdXBvbiB0aGUgbW91bnRhaW5zLgpBbmQgaXQgY2FtZSB0byBwYXNzIGF0IHRoZSBlbmQgb2YgdHdvIG1vbnRocywgdGhhdCBzaGUgcmV0dXJuZWQgdW50byBoZXIgZmF0aGVyLCB3aG8gZGlkIHdpdGggaGVyIGFjY29yZGluZyB0byBoaXMgdm93IHdoaWNoIGhlIGhhZCB2b3dlZDogYW5kIHNoZSBrbmV3IG5vIG1hbi4gQW5kIGl0IHdhcyBhIGN1c3RvbSBpbiBJc3JhZWwsClRoYXQgdGhlIGRhdWdodGVycyBvZiBJc3JhZWwgd2VudCB5ZWFybHkgdG8gbGFtZW50IHRoZSBkYXVnaHRlciBvZiBKZXBodGhhaCB0aGUgR2lsZWFkaXRlIGZvdXIgZGF5cyBpbiBhIHllYXIuCkFuZCB0aGUgbWVuIG9mIEVwaHJhaW0gZ2F0aGVyZWQgdGhlbXNlbHZlcyB0b2dldGhlciwgYW5kIHdlbnQgbm9ydGh3YXJkLCBhbmQgc2FpZCB1bnRvIEplcGh0aGFoLCBXaGVyZWZvcmUgcGFzc2Vkc3QgdGhvdSBvdmVyIHRvIGZpZ2h0IGFnYWluc3QgdGhlIGNoaWxkcmVuIG9mIEFtbW9uLCBhbmQgZGlkc3Qgbm90IGNhbGwgdXMgdG8gZ28gd2l0aCB0aGVlPyB3ZSB3aWxsIGJ1cm4gdGhpbmUgaG91c2UgdXBvbiB0aGVlIHdpdGggZmlyZS4KQW5kIEplcGh0aGFoIHNhaWQgdW50byB0aGVtLCBJIGFuZCBteSBwZW9wbGUgd2VyZSBhdCBncmVhdCBzdHJpZmUgd2l0aCB0aGUgY2hpbGRyZW4gb2YgQW1tb247IGFuZCB3aGVuIEkgY2FsbGVkIHlvdSwgeWUgZGVsaXZlcmVkIG1lIG5vdCBvdXQgb2YgdGhlaXIgaGFuZHMuCkFuZCB3aGVuIEkgc2F3IHRoYXQgeWUgZGVsaXZlcmVkIG1lIG5vdCwgSSBwdXQgbXkgbGlmZSBpbiBteSBoYW5kcywgYW5kIHBhc3NlZCBvdmVyIGFnYWluc3QgdGhlIGNoaWxkcmVuIG9mIEFtbW9uLCBhbmQgdGhlIExPUkQgZGVsaXZlcmVkIHRoZW0gaW50byBteSBoYW5kOiB3aGVyZWZvcmUgdGhlbiBhcmUgeWUgY29tZSB1cCB1bnRvIG1lIHRoaXMgZGF5LCB0byBmaWdodCBhZ2FpbnN0IG1lPwpUaGVuIEplcGh0aGFoIGdhdGhlcmVkIHRvZ2V0aGVyIGFsbCB0aGUgbWVuIG9mIEdpbGVhZCwgYW5kIGZvdWdodCB3aXRoIEVwaHJhaW06IGFuZCB0aGUgbWVuIG9mIEdpbGVhZCBzbW90ZSBFcGhyYWltLCBiZWNhdXNlIHRoZXkgc2FpZCwgWWUgR2lsZWFkaXRlcyBhcmUgZnVnaXRpdmVzIG9mIEVwaHJhaW0gYW1vbmcgdGhlIEVwaHJhaW1pdGVzLCBhbmQgYW1vbmcgdGhlIE1hbmFzc2l0ZXMuCkFuZCB0aGUgR2lsZWFkaXRlcyB0b29rIHRoZSBwYXNzYWdlcyBvZiBKb3JkYW4gYmVmb3JlIHRoZSBFcGhyYWltaXRlczogYW5kIGl0IHdhcyBzbywgdGhhdCB3aGVuIHRob3NlIEVwaHJhaW1pdGVzIHdoaWNoIHdlcmUgZXNjYXBlZCBzYWlkLCBMZXQgbWUgZ28gb3ZlcjsgdGhhdCB0aGUgbWVuIG9mIEdpbGVhZCBzYWlkIHVudG8gaGltLCBBcnQgdGhvdSBhbiBFcGhyYWltaXRlPyBJZiBoZSBzYWlkLCBOYXk7ClRoZW4gc2FpZCB0aGV5IHVudG8gaGltLCBTYXkgbm93IFNoaWJib2xldGg6IGFuZCBoZSBzYWlkIFNpYmJvbGV0aDogZm9yIGhlIGNvdWxkIG5vdCBmcmFtZSB0byBwcm9ub3VuY2UgaXQgcmlnaHQuIFRoZW4gdGhleSB0b29rIGhpbSwgYW5kIHNsZXcgaGltIGF0IHRoZSBwYXNzYWdlcyBvZiBKb3JkYW46IGFuZCB0aGVyZSBmZWxsIGF0IHRoYXQgdGltZSBvZiB0aGUgRXBocmFpbWl0ZXMgZm9ydHkgYW5kIHR3byB0aG91c2FuZC4KQW5kIEplcGh0aGFoIGp1ZGdlZCBJc3JhZWwgc2l4IHllYXJzLiBUaGVuIGRpZWQgSmVwaHRoYWggdGhlIEdpbGVhZGl0ZSwgYW5kIHdhcyBidXJpZWQgaW4gb25lIG9mIHRoZSBjaXRpZXMgb2YgR2lsZWFkLgpBbmQgYWZ0ZXIgaGltIEliemFuIG9mIEJldGhsZWhlbSBqdWRnZWQgSXNyYWVsLgpBbmQgaGUgaGFkIHRoaXJ0eSBzb25zLCBhbmQgdGhpcnR5IGRhdWdodGVycywgd2hvbSBoZSBzZW50IGFicm9hZCwgYW5kIHRvb2sgaW4gdGhpcnR5IGRhdWdodGVycyBmcm9tIGFicm9hZCBmb3IgaGlzIHNvbnMuIEFuZCBoZSBqdWRnZWQgSXNyYWVsIHNldmVuIHllYXJzLgpUaGVuIGRpZWQgSWJ6YW4sIGFuZCB3YXMgYnVyaWVkIGF0IEJldGhsZWhlbS4KQW5kIGFmdGVyIGhpbSBFbG9uLCBhIFplYnVsb25pdGUsIGp1ZGdlZCBJc3JhZWw7IGFuZCBoZSBqdWRnZWQgSXNyYWVsIHRlbiB5ZWFycy4KQW5kIEVsb24gdGhlIFplYnVsb25pdGUgZGllZCwgYW5kIHdhcyBidXJpZWQgaW4gQWlqYWxvbiBpbiB0aGUgY291bnRyeSBvZiBaZWJ1bHVuLgpBbmQgYWZ0ZXIgaGltIEFiZG9uIHRoZSBzb24gb2YgSGlsbGVsLCBhIFBpcmF0aG9uaXRlLCBqdWRnZWQgSXNyYWVsLgpBbmQgaGUgaGFkIGZvcnR5IHNvbnMgYW5kIHRoaXJ0eSBuZXBoZXdzLCB0aGF0IHJvZGUgb24gdGhyZWVzY29yZSBhbmQgdGVuIGFzcyBjb2x0czogYW5kIGhlIGp1ZGdlZCBJc3JhZWwgZWlnaHQgeWVhcnMuCkFuZCBBYmRvbiB0aGUgc29uIG9mIEhpbGxlbCB0aGUgUGlyYXRob25pdGUgZGllZCwgYW5kIHdhcyBidXJpZWQgaW4gUGlyYXRob24gaW4gdGhlIGxhbmQgb2YgRXBocmFpbSwgaW4gdGhlIG1vdW50IG9mIHRoZSBBbWFsZWtpdGVzLgpBbmQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBkaWQgZXZpbCBhZ2FpbiBpbiB0aGUgc2lnaHQgb2YgdGhlIExPUkQ7IGFuZCB0aGUgTE9SRCBkZWxpdmVyZWQgdGhlbSBpbnRvIHRoZSBoYW5kIG9mIHRoZSBQaGlsaXN0aW5lcyBmb3J0eSB5ZWFycy4KQW5kIHRoZXJlIHdhcyBhIGNlcnRhaW4gbWFuIG9mIFpvcmFoLCBvZiB0aGUgZmFtaWx5IG9mIHRoZSBEYW5pdGVzLCB3aG9zZSBuYW1lIHdhcyBNYW5vYWg7IGFuZCBoaXMgd2lmZSB3YXMgYmFycmVuLCBhbmQgYmFyZSBub3QuCkFuZCB0aGUgYW5nZWwgb2YgdGhlIExPUkQgYXBwZWFyZWQgdW50byB0aGUgd29tYW4sIGFuZCBzYWlkIHVudG8gaGVyLCBCZWhvbGQgbm93LCB0aG91IGFydCBiYXJyZW4sIGFuZCBiZWFyZXN0IG5vdDogYnV0IHRob3Ugc2hhbHQgY29uY2VpdmUsIGFuZCBiZWFyIGEgc29uLgpOb3cgdGhlcmVmb3JlIGJld2FyZSwgSSBwcmF5IHRoZWUsIGFuZCBkcmluayBub3Qgd2luZSBub3Igc3Ryb25nIGRyaW5rLCBhbmQgZWF0IG5vdCBhbnkgdW5jbGVhbiB0aGluZzoKRm9yLCBsbywgdGhvdSBzaGFsdCBjb25jZWl2ZSwgYW5kIGJlYXIgYSBzb247IGFuZCBubyByYXpvciBzaGFsbCBjb21lIG9uIGhpcyBoZWFkOiBmb3IgdGhlIGNoaWxkIHNoYWxsIGJlIGEgTmF6YXJpdGUgdW50byBHb2QgZnJvbSB0aGUgd29tYjogYW5kIGhlIHNoYWxsIGJlZ2luIHRvIGRlbGl2ZXIgSXNyYWVsIG91dCBvZiB0aGUgaGFuZCBvZiB0aGUgUGhpbGlzdGluZXMuClRoZW4gdGhlIHdvbWFuIGNhbWUgYW5kIHRvbGQgaGVyIGh1c2JhbmQsIHNheWluZywgQSBtYW4gb2YgR29kIGNhbWUgdW50byBtZSwgYW5kIGhpcyBjb3VudGVuYW5jZSB3YXMgbGlrZSB0aGUgY291bnRlbmFuY2Ugb2YgYW4gYW5nZWwgb2YgR29kLCB2ZXJ5IHRlcnJpYmxlOiBidXQgSSBhc2tlZCBoaW0gbm90IHdoZW5jZSBoZSB3YXMsIG5laXRoZXIgdG9sZCBoZSBtZSBoaXMgbmFtZToKQnV0IGhlIHNhaWQgdW50byBtZSwgQmVob2xkLCB0aG91IHNoYWx0IGNvbmNlaXZlLCBhbmQgYmVhciBhIHNvbjsgYW5kIG5vdyBkcmluayBubyB3aW5lIG5vciBzdHJvbmcgZHJpbmssIG5laXRoZXIgZWF0IGFueSB1bmNsZWFuIHRoaW5nOiBmb3IgdGhlIGNoaWxkIHNoYWxsIGJlIGEgTmF6YXJpdGUgdG8gR29kIGZyb20gdGhlIHdvbWIgdG8gdGhlIGRheSBvZiBoaXMgZGVhdGguClRoZW4gTWFub2FoIGludHJlYXRlZCB0aGUgTE9SRCwgYW5kIHNhaWQsIE8gbXkgTG9yZCwgbGV0IHRoZSBtYW4gb2YgR29kIHdoaWNoIHRob3UgZGlkc3Qgc2VuZCBjb21lIGFnYWluIHVudG8gdXMsIGFuZCB0ZWFjaCB1cyB3aGF0IHdlIHNoYWxsIGRvIHVudG8gdGhlIGNoaWxkIHRoYXQgc2hhbGwgYmUgYm9ybi4KQW5kIEdvZCBoZWFya2VuZWQgdG8gdGhlIHZvaWNlIG9mIE1hbm9haDsgYW5kIHRoZSBhbmdlbCBvZiBHb2QgY2FtZSBhZ2FpbiB1bnRvIHRoZSB3b21hbiBhcyBzaGUgc2F0IGluIHRoZSBmaWVsZDogYnV0IE1hbm9haCBoZXIgaHVzYmFuZCB3YXMgbm90IHdpdGggaGVyLgpBbmQgdGhlIHdvbWFuIG1hZGUgaGFzdGUsIGFuZCByYW4sIGFuZCBzaGV3ZWQgaGVyIGh1c2JhbmQsIGFuZCBzYWlkIHVudG8gaGltLCBCZWhvbGQsIHRoZSBtYW4gaGF0aCBhcHBlYXJlZCB1bnRvIG1lLCB0aGF0IGNhbWUgdW50byBtZSB0aGUgb3RoZXIgZGF5LgpBbmQgTWFub2FoIGFyb3NlLCBhbmQgd2VudCBhZnRlciBoaXMgd2lmZSwgYW5kIGNhbWUgdG8gdGhlIG1hbiwgYW5kIHNhaWQgdW50byBoaW0sIEFydCB0aG91IHRoZSBtYW4gdGhhdCBzcGFrZXN0IHVudG8gdGhlIHdvbWFuPyBBbmQgaGUgc2FpZCwgSSBhbS4KQW5kIE1hbm9haCBzYWlkLCBOb3cgbGV0IHRoeSB3b3JkcyBjb21lIHRvIHBhc3MuIEhvdyBzaGFsbCB3ZSBvcmRlciB0aGUgY2hpbGQsIGFuZCBob3cgc2hhbGwgd2UgZG8gdW50byBoaW0/CkFuZCB0aGUgYW5nZWwgb2YgdGhlIExPUkQgc2FpZCB1bnRvIE1hbm9haCwgT2YgYWxsIHRoYXQgSSBzYWlkIHVudG8gdGhlIHdvbWFuIGxldCBoZXIgYmV3YXJlLgpTaGUgbWF5IG5vdCBlYXQgb2YgYW55IHRoaW5nIHRoYXQgY29tZXRoIG9mIHRoZSB2aW5lLCBuZWl0aGVyIGxldCBoZXIgZHJpbmsgd2luZSBvciBzdHJvbmcgZHJpbmssIG5vciBlYXQgYW55IHVuY2xlYW4gdGhpbmc6IGFsbCB0aGF0IEkgY29tbWFuZGVkIGhlciBsZXQgaGVyIG9ic2VydmUuCkFuZCBNYW5vYWggc2FpZCB1bnRvIHRoZSBhbmdlbCBvZiB0aGUgTE9SRCwgSSBwcmF5IHRoZWUsIGxldCB1cyBkZXRhaW4gdGhlZSwgdW50aWwgd2Ugc2hhbGwgaGF2ZSBtYWRlIHJlYWR5IGEga2lkIGZvciB0aGVlLgpBbmQgdGhlIGFuZ2VsIG9mIHRoZSBMT1JEIHNhaWQgdW50byBNYW5vYWgsIFRob3VnaCB0aG91IGRldGFpbiBtZSwgSSB3aWxsIG5vdCBlYXQgb2YgdGh5IGJyZWFkOiBhbmQgaWYgdGhvdSB3aWx0IG9mZmVyIGEgYnVybnQgb2ZmZXJpbmcsIHRob3UgbXVzdCBvZmZlciBpdCB1bnRvIHRoZSBMT1JELiBGb3IgTWFub2FoIGtuZXcgbm90IHRoYXQgaGUgd2FzIGFuIGFuZ2VsIG9mIHRoZSBMT1JELgpBbmQgTWFub2FoIHNhaWQgdW50byB0aGUgYW5nZWwgb2YgdGhlIExPUkQsIFdoYXQgaXMgdGh5IG5hbWUsIHRoYXQgd2hlbiB0aHkgc2F5aW5ncyBjb21lIHRvIHBhc3Mgd2UgbWF5IGRvIHRoZWUgaG9ub3VyPwpBbmQgdGhlIGFuZ2VsIG9mIHRoZSBMT1JEIHNhaWQgdW50byBoaW0sIFdoeSBhc2tlc3QgdGhvdSB0aHVzIGFmdGVyIG15IG5hbWUsIHNlZWluZyBpdCBpcyBzZWNyZXQ/ClNvIE1hbm9haCB0b29rIGEga2lkIHdpdGggYSBtZWF0IG9mZmVyaW5nLCBhbmQgb2ZmZXJlZCBpdCB1cG9uIGEgcm9jayB1bnRvIHRoZSBMT1JEOiBhbmQgdGhlIGFuZ2VsIGRpZCB3b25kZXJvdXNseTsgYW5kIE1hbm9haCBhbmQgaGlzIHdpZmUgbG9va2VkIG9uLgpGb3IgaXQgY2FtZSB0byBwYXNzLCB3aGVuIHRoZSBmbGFtZSB3ZW50IHVwIHRvd2FyZCBoZWF2ZW4gZnJvbSBvZmYgdGhlIGFsdGFyLCB0aGF0IHRoZSBhbmdlbCBvZiB0aGUgTE9SRCBhc2NlbmRlZCBpbiB0aGUgZmxhbWUgb2YgdGhlIGFsdGFyLiBBbmQgTWFub2FoIGFuZCBoaXMgd2lmZSBsb29rZWQgb24gaXQsIGFuZCBmZWxsIG9uIHRoZWlyIGZhY2VzIHRvIHRoZSBncm91bmQuCkJ1dCB0aGUgYW5nZWwgb2YgdGhlIExPUkQgZGlkIG5vIG1vcmUgYXBwZWFyIHRvIE1hbm9haCBhbmQgdG8gaGlzIHdpZmUuIFRoZW4gTWFub2FoIGtuZXcgdGhhdCBoZSB3YXMgYW4gYW5nZWwgb2YgdGhlIExPUkQuCkFuZCBNYW5vYWggc2FpZCB1bnRvIGhpcyB3aWZlLCBXZSBzaGFsbCBzdXJlbHkgZGllLCBiZWNhdXNlIHdlIGhhdmUgc2VlbiBHb2QuCkJ1dCBoaXMgd2lmZSBzYWlkIHVudG8gaGltLCBJZiB0aGUgTE9SRCB3ZXJlIHBsZWFzZWQgdG8ga2lsbCB1cywgaGUgd291bGQgbm90IGhhdmUgcmVjZWl2ZWQgYSBidXJudCBvZmZlcmluZyBhbmQgYSBtZWF0IG9mZmVyaW5nIGF0IG91ciBoYW5kcywgbmVpdGhlciB3b3VsZCBoZSBoYXZlIHNoZXdlZCB1cyBhbGwgdGhlc2UgdGhpbmdzLCBub3Igd291bGQgYXMgYXQgdGhpcyB0aW1lIGhhdmUgdG9sZCB1cyBzdWNoIHRoaW5ncyBhcyB0aGVzZS4KQW5kIHRoZSB3b21hbiBiYXJlIGEgc29uLCBhbmQgY2FsbGVkIGhpcyBuYW1lIFNhbXNvbjogYW5kIHRoZSBjaGlsZCBncmV3LCBhbmQgdGhlIExPUkQgYmxlc3NlZCBoaW0uCkFuZCB0aGUgU3Bpcml0IG9mIHRoZSBMT1JEIGJlZ2FuIHRvIG1vdmUgaGltIGF0IHRpbWVzIGluIHRoZSBjYW1wIG9mIERhbiBiZXR3ZWVuIFpvcmFoIGFuZCBFc2h0YW9sLgpBbmQgU2Ftc29uIHdlbnQgZG93biB0byBUaW1uYXRoLCBhbmQgc2F3IGEgd29tYW4gaW4gVGltbmF0aCBvZiB0aGUgZGF1Z2h0ZXJzIG9mIHRoZSBQaGlsaXN0aW5lcy4KQW5kIGhlIGNhbWUgdXAsIGFuZCB0b2xkIGhpcyBmYXRoZXIgYW5kIGhpcyBtb3RoZXIsIGFuZCBzYWlkLCBJIGhhdmUgc2VlbiBhIHdvbWFuIGluIFRpbW5hdGggb2YgdGhlIGRhdWdodGVycyBvZiB0aGUgUGhpbGlzdGluZXM6IG5vdyB0aGVyZWZvcmUgZ2V0IGhlciBmb3IgbWUgdG8gd2lmZS4KVGhlbiBoaXMgZmF0aGVyIGFuZCBoaXMgbW90aGVyIHNhaWQgdW50byBoaW0sIElzIHRoZXJlIG5ldmVyIGEgd29tYW4gYW1vbmcgdGhlIGRhdWdodGVycyBvZiB0aHkgYnJldGhyZW4sIG9yIGFtb25nIGFsbCBteSBwZW9wbGUsIHRoYXQgdGhvdSBnb2VzdCB0byB0YWtlIGEgd2lmZSBvZiB0aGUgdW5jaXJjdW1jaXNlZCBQaGlsaXN0aW5lcz8gQW5kIFNhbXNvbiBzYWlkIHVudG8gaGlzIGZhdGhlciwgR2V0IGhlciBmb3IgbWU7IGZvciBzaGUgcGxlYXNldGggbWUgd2VsbC4KQnV0IGhpcyBmYXRoZXIgYW5kIGhpcyBtb3RoZXIga25ldyBub3QgdGhhdCBpdCB3YXMgb2YgdGhlIExPUkQsIHRoYXQgaGUgc291Z2h0IGFuIG9jY2FzaW9uIGFnYWluc3QgdGhlIFBoaWxpc3RpbmVzOiBmb3IgYXQgdGhhdCB0aW1lIHRoZSBQaGlsaXN0aW5lcyBoYWQgZG9taW5pb24gb3ZlciBJc3JhZWwuClRoZW4gd2VudCBTYW1zb24gZG93biwgYW5kIGhpcyBmYXRoZXIgYW5kIGhpcyBtb3RoZXIsIHRvIFRpbW5hdGgsIGFuZCBjYW1lIHRvIHRoZSB2aW5leWFyZHMgb2YgVGltbmF0aDogYW5kLCBiZWhvbGQsIGEgeW91bmcgbGlvbiByb2FyZWQgYWdhaW5zdCBoaW0uCkFuZCB0aGUgU3Bpcml0IG9mIHRoZSBMT1JEIGNhbWUgbWlnaHRpbHkgdXBvbiBoaW0sIGFuZCBoZSByZW50IGhpbSBhcyBoZSB3b3VsZCBoYXZlIHJlbnQgYSBraWQsIGFuZCBoZSBoYWQgbm90aGluZyBpbiBoaXMgaGFuZDogYnV0IGhlIHRvbGQgbm90IGhpcyBmYXRoZXIgb3IgaGlzIG1vdGhlciB3aGF0IGhlIGhhZCBkb25lLgpBbmQgaGUgd2VudCBkb3duLCBhbmQgdGFsa2VkIHdpdGggdGhlIHdvbWFuOyBhbmQgc2hlIHBsZWFzZWQgU2Ftc29uIHdlbGwuCkFuZCBhZnRlciBhIHRpbWUgaGUgcmV0dXJuZWQgdG8gdGFrZSBoZXIsIGFuZCBoZSB0dXJuZWQgYXNpZGUgdG8gc2VlIHRoZSBjYXJjYXNlIG9mIHRoZSBsaW9uOiBhbmQsIGJlaG9sZCwgdGhlcmUgd2FzIGEgc3dhcm0gb2YgYmVlcyBhbmQgaG9uZXkgaW4gdGhlIGNhcmNhc2Ugb2YgdGhlIGxpb24uCkFuZCBoZSB0b29rIHRoZXJlb2YgaW4gaGlzIGhhbmRzLCBhbmQgd2VudCBvbiBlYXRpbmcsIGFuZCBjYW1lIHRvIGhpcyBmYXRoZXIgYW5kIG1vdGhlciwgYW5kIGhlIGdhdmUgdGhlbSwgYW5kIHRoZXkgZGlkIGVhdDogYnV0IGhlIHRvbGQgbm90IHRoZW0gdGhhdCBoZSBoYWQgdGFrZW4gdGhlIGhvbmV5IG91dCBvZiB0aGUgY2FyY2FzZSBvZiB0aGUgbGlvbi4KU28gaGlzIGZhdGhlciB3ZW50IGRvd24gdW50byB0aGUgd29tYW46IGFuZCBTYW1zb24gbWFkZSB0aGVyZSBhIGZlYXN0OyBmb3Igc28gdXNlZCB0aGUgeW91bmcgbWVuIHRvIGRvLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIHRoZXkgc2F3IGhpbSwgdGhhdCB0aGV5IGJyb3VnaHQgdGhpcnR5IGNvbXBhbmlvbnMgdG8gYmUgd2l0aCBoaW0uCkFuZCBTYW1zb24gc2FpZCB1bnRvIHRoZW0sIEkgd2lsbCBub3cgcHV0IGZvcnRoIGEgcmlkZGxlIHVudG8geW91OiBpZiB5ZSBjYW4gY2VydGFpbmx5IGRlY2xhcmUgaXQgbWUgd2l0aGluIHRoZSBzZXZlbiBkYXlzIG9mIHRoZSBmZWFzdCwgYW5kIGZpbmQgaXQgb3V0LCB0aGVuIEkgd2lsbCBnaXZlIHlvdSB0aGlydHkgc2hlZXRzIGFuZCB0aGlydHkgY2hhbmdlIG9mIGdhcm1lbnRzOgpCdXQgaWYgeWUgY2Fubm90IGRlY2xhcmUgaXQgbWUsIHRoZW4gc2hhbGwgeWUgZ2l2ZSBtZSB0aGlydHkgc2hlZXRzIGFuZCB0aGlydHkgY2hhbmdlIG9mIGdhcm1lbnRzLiBBbmQgdGhleSBzYWlkIHVudG8gaGltLCBQdXQgZm9ydGggdGh5IHJpZGRsZSwgdGhhdCB3ZSBtYXkgaGVhciBpdC4KQW5kIGhlIHNhaWQgdW50byB0aGVtLCBPdXQgb2YgdGhlIGVhdGVyIGNhbWUgZm9ydGggbWVhdCwgYW5kIG91dCBvZiB0aGUgc3Ryb25nIGNhbWUgZm9ydGggc3dlZXRuZXNzLiBBbmQgdGhleSBjb3VsZCBub3QgaW4gdGhyZWUgZGF5cyBleHBvdW5kIHRoZSByaWRkbGUuCkFuZCBpdCBjYW1lIHRvIHBhc3Mgb24gdGhlIHNldmVudGggZGF5LCB0aGF0IHRoZXkgc2FpZCB1bnRvIFNhbXNvbidzIHdpZmUsIEVudGljZSB0aHkgaHVzYmFuZCwgdGhhdCBoZSBtYXkgZGVjbGFyZSB1bnRvIHVzIHRoZSByaWRkbGUsIGxlc3Qgd2UgYnVybiB0aGVlIGFuZCB0aHkgZmF0aGVyJ3MgaG91c2Ugd2l0aCBmaXJlOiBoYXZlIHllIGNhbGxlZCB1cyB0byB0YWtlIHRoYXQgd2UgaGF2ZT8gaXMgaXQgbm90IHNvPwpBbmQgU2Ftc29uJ3Mgd2lmZSB3ZXB0IGJlZm9yZSBoaW0sIGFuZCBzYWlkLCBUaG91IGRvc3QgYnV0IGhhdGUgbWUsIGFuZCBsb3Zlc3QgbWUgbm90OiB0aG91IGhhc3QgcHV0IGZvcnRoIGEgcmlkZGxlIHVudG8gdGhlIGNoaWxkcmVuIG9mIG15IHBlb3BsZSwgYW5kIGhhc3Qgbm90IHRvbGQgaXQgbWUuIEFuZCBoZSBzYWlkIHVudG8gaGVyLCBCZWhvbGQsIEkgaGF2ZSBub3QgdG9sZCBpdCBteSBmYXRoZXIgbm9yIG15IG1vdGhlciwgYW5kIHNoYWxsIEkgdGVsbCBpdCB0aGVlPwpBbmQgc2hlIHdlcHQgYmVmb3JlIGhpbSB0aGUgc2V2ZW4gZGF5cywgd2hpbGUgdGhlaXIgZmVhc3QgbGFzdGVkOiBhbmQgaXQgY2FtZSB0byBwYXNzIG9uIHRoZSBzZXZlbnRoIGRheSwgdGhhdCBoZSB0b2xkIGhlciwgYmVjYXVzZSBzaGUgbGF5IHNvcmUgdXBvbiBoaW06IGFuZCBzaGUgdG9sZCB0aGUgcmlkZGxlIHRvIHRoZSBjaGlsZHJlbiBvZiBoZXIgcGVvcGxlLgpBbmQgdGhlIG1lbiBvZiB0aGUgY2l0eSBzYWlkIHVudG8gaGltIG9uIHRoZSBzZXZlbnRoIGRheSBiZWZvcmUgdGhlIHN1biB3ZW50IGRvd24sIFdoYXQgaXMgc3dlZXRlciB0aGFuIGhvbmV5PyBBbmQgd2hhdCBpcyBzdHJvbmdlciB0aGFuIGEgbGlvbj8gYW5kIGhlIHNhaWQgdW50byB0aGVtLCBJZiB5ZSBoYWQgbm90IHBsb3dlZCB3aXRoIG15IGhlaWZlciwgeWUgaGFkIG5vdCBmb3VuZCBvdXQgbXkgcmlkZGxlLgpBbmQgdGhlIFNwaXJpdCBvZiB0aGUgTE9SRCBjYW1lIHVwb24gaGltLCBhbmQgaGUgd2VudCBkb3duIHRvIEFzaGtlbG9uLCBhbmQgc2xldyB0aGlydHkgbWVuIG9mIHRoZW0sIGFuZCB0b29rIHRoZWlyIHNwb2lsLCBhbmQgZ2F2ZSBjaGFuZ2Ugb2YgZ2FybWVudHMgdW50byB0aGVtIHdoaWNoIGV4cG91bmRlZCB0aGUgcmlkZGxlLiBBbmQgaGlzIGFuZ2VyIHdhcyBraW5kbGVkLCBhbmQgaGUgd2VudCB1cCB0byBoaXMgZmF0aGVyJ3MgaG91c2UuCkJ1dCBTYW1zb24ncyB3aWZlIHdhcyBnaXZlbiB0byBoaXMgY29tcGFuaW9uLCB3aG9tIGhlIGhhZCB1c2VkIGFzIGhpcyBmcmllbmQuCkJ1dCBpdCBjYW1lIHRvIHBhc3Mgd2l0aGluIGEgd2hpbGUgYWZ0ZXIsIGluIHRoZSB0aW1lIG9mIHdoZWF0IGhhcnZlc3QsIHRoYXQgU2Ftc29uIHZpc2l0ZWQgaGlzIHdpZmUgd2l0aCBhIGtpZDsgYW5kIGhlIHNhaWQsIEkgd2lsbCBnbyBpbiB0byBteSB3aWZlIGludG8gdGhlIGNoYW1iZXIuIEJ1dCBoZXIgZmF0aGVyIHdvdWxkIG5vdCBzdWZmZXIgaGltIHRvIGdvIGluLgpBbmQgaGVyIGZhdGhlciBzYWlkLCBJIHZlcmlseSB0aG91Z2h0IHRoYXQgdGhvdSBoYWRzdCB1dHRlcmx5IGhhdGVkIGhlcjsgdGhlcmVmb3JlIEkgZ2F2ZSBoZXIgdG8gdGh5IGNvbXBhbmlvbjogaXMgbm90IGhlciB5b3VuZ2VyIHNpc3RlciBmYWlyZXIgdGhhbiBzaGU/IHRha2UgaGVyLCBJIHByYXkgdGhlZSwgaW5zdGVhZCBvZiBoZXIuCkFuZCBTYW1zb24gc2FpZCBjb25jZXJuaW5nIHRoZW0sIE5vdyBzaGFsbCBJIGJlIG1vcmUgYmxhbWVsZXNzIHRoYW4gdGhlIFBoaWxpc3RpbmVzLCB0aG91Z2ggSSBkbyB0aGVtIGEgZGlzcGxlYXN1cmUuCkFuZCBTYW1zb24gd2VudCBhbmQgY2F1Z2h0IHRocmVlIGh1bmRyZWQgZm94ZXMsIGFuZCB0b29rIGZpcmVicmFuZHMsIGFuZCB0dXJuZWQgdGFpbCB0byB0YWlsLCBhbmQgcHV0IGEgZmlyZWJyYW5kIGluIHRoZSBtaWRzdCBiZXR3ZWVuIHR3byB0YWlscy4KQW5kIHdoZW4gaGUgaGFkIHNldCB0aGUgYnJhbmRzIG9uIGZpcmUsIGhlIGxldCB0aGVtIGdvIGludG8gdGhlIHN0YW5kaW5nIGNvcm4gb2YgdGhlIFBoaWxpc3RpbmVzLCBhbmQgYnVybnQgdXAgYm90aCB0aGUgc2hvY2tzLCBhbmQgYWxzbyB0aGUgc3RhbmRpbmcgY29ybiwgd2l0aCB0aGUgdmluZXlhcmRzIGFuZCBvbGl2ZXMuClRoZW4gdGhlIFBoaWxpc3RpbmVzIHNhaWQsIFdobyBoYXRoIGRvbmUgdGhpcz8gQW5kIHRoZXkgYW5zd2VyZWQsIFNhbXNvbiwgdGhlIHNvbiBpbiBsYXcgb2YgdGhlIFRpbW5pdGUsIGJlY2F1c2UgaGUgaGFkIHRha2VuIGhpcyB3aWZlLCBhbmQgZ2l2ZW4gaGVyIHRvIGhpcyBjb21wYW5pb24uIEFuZCB0aGUgUGhpbGlzdGluZXMgY2FtZSB1cCwgYW5kIGJ1cm50IGhlciBhbmQgaGVyIGZhdGhlciB3aXRoIGZpcmUuCkFuZCBTYW1zb24gc2FpZCB1bnRvIHRoZW0sIFRob3VnaCB5ZSBoYXZlIGRvbmUgdGhpcywgeWV0IHdpbGwgSSBiZSBhdmVuZ2VkIG9mIHlvdSwgYW5kIGFmdGVyIHRoYXQgSSB3aWxsIGNlYXNlLgpBbmQgaGUgc21vdGUgdGhlbSBoaXAgYW5kIHRoaWdoIHdpdGggYSBncmVhdCBzbGF1Z2h0ZXI6IGFuZCBoZSB3ZW50IGRvd24gYW5kIGR3ZWx0IGluIHRoZSB0b3Agb2YgdGhlIHJvY2sgRXRhbS4KVGhlbiB0aGUgUGhpbGlzdGluZXMgd2VudCB1cCwgYW5kIHBpdGNoZWQgaW4gSnVkYWgsIGFuZCBzcHJlYWQgdGhlbXNlbHZlcyBpbiBMZWhpLgpBbmQgdGhlIG1lbiBvZiBKdWRhaCBzYWlkLCBXaHkgYXJlIHllIGNvbWUgdXAgYWdhaW5zdCB1cz8gQW5kIHRoZXkgYW5zd2VyZWQsIFRvIGJpbmQgU2Ftc29uIGFyZSB3ZSBjb21lIHVwLCB0byBkbyB0byBoaW0gYXMgaGUgaGF0aCBkb25lIHRvIHVzLgpUaGVuIHRocmVlIHRob3VzYW5kIG1lbiBvZiBKdWRhaCB3ZW50IHRvIHRoZSB0b3Agb2YgdGhlIHJvY2sgRXRhbSwgYW5kIHNhaWQgdG8gU2Ftc29uLCBLbm93ZXN0IHRob3Ugbm90IHRoYXQgdGhlIFBoaWxpc3RpbmVzIGFyZSBydWxlcnMgb3ZlciB1cz8gd2hhdCBpcyB0aGlzIHRoYXQgdGhvdSBoYXN0IGRvbmUgdW50byB1cz8gQW5kIGhlIHNhaWQgdW50byB0aGVtLCBBcyB0aGV5IGRpZCB1bnRvIG1lLCBzbyBoYXZlIEkgZG9uZSB1bnRvIHRoZW0uCkFuZCB0aGV5IHNhaWQgdW50byBoaW0sIFdlIGFyZSBjb21lIGRvd24gdG8gYmluZCB0aGVlLCB0aGF0IHdlIG1heSBkZWxpdmVyIHRoZWUgaW50byB0aGUgaGFuZCBvZiB0aGUgUGhpbGlzdGluZXMuIEFuZCBTYW1zb24gc2FpZCB1bnRvIHRoZW0sIFN3ZWFyIHVudG8gbWUsIHRoYXQgeWUgd2lsbCBub3QgZmFsbCB1cG9uIG1lIHlvdXJzZWx2ZXMuCkFuZCB0aGV5IHNwYWtlIHVudG8gaGltLCBzYXlpbmcsIE5vOyBidXQgd2Ugd2lsbCBiaW5kIHRoZWUgZmFzdCwgYW5kIGRlbGl2ZXIgdGhlZSBpbnRvIHRoZWlyIGhhbmQ6IGJ1dCBzdXJlbHkgd2Ugd2lsbCBub3Qga2lsbCB0aGVlLiBBbmQgdGhleSBib3VuZCBoaW0gd2l0aCB0d28gbmV3IGNvcmRzLCBhbmQgYnJvdWdodCBoaW0gdXAgZnJvbSB0aGUgcm9jay4KQW5kIHdoZW4gaGUgY2FtZSB1bnRvIExlaGksIHRoZSBQaGlsaXN0aW5lcyBzaG91dGVkIGFnYWluc3QgaGltOiBhbmQgdGhlIFNwaXJpdCBvZiB0aGUgTE9SRCBjYW1lIG1pZ2h0aWx5IHVwb24gaGltLCBhbmQgdGhlIGNvcmRzIHRoYXQgd2VyZSB1cG9uIGhpcyBhcm1zIGJlY2FtZSBhcyBmbGF4IHRoYXQgd2FzIGJ1cm50IHdpdGggZmlyZSwgYW5kIGhpcyBiYW5kcyBsb29zZWQgZnJvbSBvZmYgaGlzIGhhbmRzLgpBbmQgaGUgZm91bmQgYSBuZXcgamF3Ym9uZSBvZiBhbiBhc3MsIGFuZCBwdXQgZm9ydGggaGlzIGhhbmQsIGFuZCB0b29rIGl0LCBhbmQgc2xldyBhIHRob3VzYW5kIG1lbiB0aGVyZXdpdGguCkFuZCBTYW1zb24gc2FpZCwgV2l0aCB0aGUgamF3Ym9uZSBvZiBhbiBhc3MsIGhlYXBzIHVwb24gaGVhcHMsIHdpdGggdGhlIGphdyBvZiBhbiBhc3MgaGF2ZSBJIHNsYWluIGEgdGhvdXNhbmQgbWVuLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIGhlIGhhZCBtYWRlIGFuIGVuZCBvZiBzcGVha2luZywgdGhhdCBoZSBjYXN0IGF3YXkgdGhlIGphd2JvbmUgb3V0IG9mIGhpcyBoYW5kLCBhbmQgY2FsbGVkIHRoYXQgcGxhY2UgUmFtYXRobGVoaS4KQW5kIGhlIHdhcyBzb3JlIGF0aGlyc3QsIGFuZCBjYWxsZWQgb24gdGhlIExPUkQsIGFuZCBzYWlkLCBUaG91IGhhc3QgZ2l2ZW4gdGhpcyBncmVhdCBkZWxpdmVyYW5jZSBpbnRvIHRoZSBoYW5kIG9mIHRoeSBzZXJ2YW50OiBhbmQgbm93IHNoYWxsIEkgZGllIGZvciB0aGlyc3QsIGFuZCBmYWxsIGludG8gdGhlIGhhbmQgb2YgdGhlIHVuY2lyY3VtY2lzZWQ/CkJ1dCBHb2QgY2xhdmUgYW4gaG9sbG93IHBsYWNlIHRoYXQgd2FzIGluIHRoZSBqYXcsIGFuZCB0aGVyZSBjYW1lIHdhdGVyIHRoZXJlb3V0OyBhbmQgd2hlbiBoZSBoYWQgZHJ1bmssIGhpcyBzcGlyaXQgY2FtZSBhZ2FpbiwgYW5kIGhlIHJldml2ZWQ6IHdoZXJlZm9yZSBoZSBjYWxsZWQgdGhlIG5hbWUgdGhlcmVvZiBFbmhha2tvcmUsIHdoaWNoIGlzIGluIExlaGkgdW50byB0aGlzIGRheS4KQW5kIGhlIGp1ZGdlZCBJc3JhZWwgaW4gdGhlIGRheXMgb2YgdGhlIFBoaWxpc3RpbmVzIHR3ZW50eSB5ZWFycy4KVGhlbiB3ZW50IFNhbXNvbiB0byBHYXphLCBhbmQgc2F3IHRoZXJlIGFuIGhhcmxvdCwgYW5kIHdlbnQgaW4gdW50byBoZXIuCkFuZCBpdCB3YXMgdG9sZCB0aGUgR2F6aXRlcywgc2F5aW5nLCBTYW1zb24gaXMgY29tZSBoaXRoZXIuIEFuZCB0aGV5IGNvbXBhc3NlZCBoaW0gaW4sIGFuZCBsYWlkIHdhaXQgZm9yIGhpbSBhbGwgbmlnaHQgaW4gdGhlIGdhdGUgb2YgdGhlIGNpdHksIGFuZCB3ZXJlIHF1aWV0IGFsbCB0aGUgbmlnaHQsIHNheWluZywgSW4gdGhlIG1vcm5pbmcsIHdoZW4gaXQgaXMgZGF5LCB3ZSBzaGFsbCBraWxsIGhpbS4KQW5kIFNhbXNvbiBsYXkgdGlsbCBtaWRuaWdodCwgYW5kIGFyb3NlIGF0IG1pZG5pZ2h0LCBhbmQgdG9vayB0aGUgZG9vcnMgb2YgdGhlIGdhdGUgb2YgdGhlIGNpdHksIGFuZCB0aGUgdHdvIHBvc3RzLCBhbmQgd2VudCBhd2F5IHdpdGggdGhlbSwgYmFyIGFuZCBhbGwsIGFuZCBwdXQgdGhlbSB1cG9uIGhpcyBzaG91bGRlcnMsIGFuZCBjYXJyaWVkIHRoZW0gdXAgdG8gdGhlIHRvcCBvZiBhbiBoaWxsIHRoYXQgaXMgYmVmb3JlIEhlYnJvbi4KQW5kIGl0IGNhbWUgdG8gcGFzcyBhZnRlcndhcmQsIHRoYXQgaGUgbG92ZWQgYSB3b21hbiBpbiB0aGUgdmFsbGV5IG9mIFNvcmVrLCB3aG9zZSBuYW1lIHdhcyBEZWxpbGFoLgpBbmQgdGhlIGxvcmRzIG9mIHRoZSBQaGlsaXN0aW5lcyBjYW1lIHVwIHVudG8gaGVyLCBhbmQgc2FpZCB1bnRvIGhlciwgRW50aWNlIGhpbSwgYW5kIHNlZSB3aGVyZWluIGhpcyBncmVhdCBzdHJlbmd0aCBsaWV0aCwgYW5kIGJ5IHdoYXQgbWVhbnMgd2UgbWF5IHByZXZhaWwgYWdhaW5zdCBoaW0sIHRoYXQgd2UgbWF5IGJpbmQgaGltIHRvIGFmZmxpY3QgaGltOyBhbmQgd2Ugd2lsbCBnaXZlIHRoZWUgZXZlcnkgb25lIG9mIHVzIGVsZXZlbiBodW5kcmVkIHBpZWNlcyBvZiBzaWx2ZXIuCkFuZCBEZWxpbGFoIHNhaWQgdG8gU2Ftc29uLCBUZWxsIG1lLCBJIHByYXkgdGhlZSwgd2hlcmVpbiB0aHkgZ3JlYXQgc3RyZW5ndGggbGlldGgsIGFuZCB3aGVyZXdpdGggdGhvdSBtaWdodGVzdCBiZSBib3VuZCB0byBhZmZsaWN0IHRoZWUuCkFuZCBTYW1zb24gc2FpZCB1bnRvIGhlciwgSWYgdGhleSBiaW5kIG1lIHdpdGggc2V2ZW4gZ3JlZW4gd2l0aHMgdGhhdCB3ZXJlIG5ldmVyIGRyaWVkLCB0aGVuIHNoYWxsIEkgYmUgd2VhaywgYW5kIGJlIGFzIGFub3RoZXIgbWFuLgpUaGVuIHRoZSBsb3JkcyBvZiB0aGUgUGhpbGlzdGluZXMgYnJvdWdodCB1cCB0byBoZXIgc2V2ZW4gZ3JlZW4gd2l0aHMgd2hpY2ggaGFkIG5vdCBiZWVuIGRyaWVkLCBhbmQgc2hlIGJvdW5kIGhpbSB3aXRoIHRoZW0uCk5vdyB0aGVyZSB3ZXJlIG1lbiBseWluZyBpbiB3YWl0LCBhYmlkaW5nIHdpdGggaGVyIGluIHRoZSBjaGFtYmVyLiBBbmQgc2hlIHNhaWQgdW50byBoaW0sIFRoZSBQaGlsaXN0aW5lcyBiZSB1cG9uIHRoZWUsIFNhbXNvbi4gQW5kIGhlIGJyYWtlIHRoZSB3aXRocywgYXMgYSB0aHJlYWQgb2YgdG93IGlzIGJyb2tlbiB3aGVuIGl0IHRvdWNoZXRoIHRoZSBmaXJlLiBTbyBoaXMgc3RyZW5ndGggd2FzIG5vdCBrbm93bi4KQW5kIERlbGlsYWggc2FpZCB1bnRvIFNhbXNvbiwgQmVob2xkLCB0aG91IGhhc3QgbW9ja2VkIG1lLCBhbmQgdG9sZCBtZSBsaWVzOiBub3cgdGVsbCBtZSwgSSBwcmF5IHRoZWUsIHdoZXJld2l0aCB0aG91IG1pZ2h0ZXN0IGJlIGJvdW5kLgpBbmQgaGUgc2FpZCB1bnRvIGhlciwgSWYgdGhleSBiaW5kIG1lIGZhc3Qgd2l0aCBuZXcgcm9wZXMgdGhhdCBuZXZlciB3ZXJlIG9jY3VwaWVkLCB0aGVuIHNoYWxsIEkgYmUgd2VhaywgYW5kIGJlIGFzIGFub3RoZXIgbWFuLgpEZWxpbGFoIHRoZXJlZm9yZSB0b29rIG5ldyByb3BlcywgYW5kIGJvdW5kIGhpbSB0aGVyZXdpdGgsIGFuZCBzYWlkIHVudG8gaGltLCBUaGUgUGhpbGlzdGluZXMgYmUgdXBvbiB0aGVlLCBTYW1zb24uIEFuZCB0aGVyZSB3ZXJlIGxpZXJzIGluIHdhaXQgYWJpZGluZyBpbiB0aGUgY2hhbWJlci4gQW5kIGhlIGJyYWtlIHRoZW0gZnJvbSBvZmYgaGlzIGFybXMgbGlrZSBhIHRocmVhZC4KQW5kIERlbGlsYWggc2FpZCB1bnRvIFNhbXNvbiwgSGl0aGVydG8gdGhvdSBoYXN0IG1vY2tlZCBtZSwgYW5kIHRvbGQgbWUgbGllczogdGVsbCBtZSB3aGVyZXdpdGggdGhvdSBtaWdodGVzdCBiZSBib3VuZC4gQW5kIGhlIHNhaWQgdW50byBoZXIsIElmIHRob3Ugd2VhdmVzdCB0aGUgc2V2ZW4gbG9ja3Mgb2YgbXkgaGVhZCB3aXRoIHRoZSB3ZWIuCkFuZCBzaGUgZmFzdGVuZWQgaXQgd2l0aCB0aGUgcGluLCBhbmQgc2FpZCB1bnRvIGhpbSwgVGhlIFBoaWxpc3RpbmVzIGJlIHVwb24gdGhlZSwgU2Ftc29uLiBBbmQgaGUgYXdha2VkIG91dCBvZiBoaXMgc2xlZXAsIGFuZCB3ZW50IGF3YXkgd2l0aCB0aGUgcGluIG9mIHRoZSBiZWFtLCBhbmQgd2l0aCB0aGUgd2ViLgpBbmQgc2hlIHNhaWQgdW50byBoaW0sIEhvdyBjYW5zdCB0aG91IHNheSwgSSBsb3ZlIHRoZWUsIHdoZW4gdGhpbmUgaGVhcnQgaXMgbm90IHdpdGggbWU/IHRob3UgaGFzdCBtb2NrZWQgbWUgdGhlc2UgdGhyZWUgdGltZXMsIGFuZCBoYXN0IG5vdCB0b2xkIG1lIHdoZXJlaW4gdGh5IGdyZWF0IHN0cmVuZ3RoIGxpZXRoLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIHNoZSBwcmVzc2VkIGhpbSBkYWlseSB3aXRoIGhlciB3b3JkcywgYW5kIHVyZ2VkIGhpbSwgc28gdGhhdCBoaXMgc291bCB3YXMgdmV4ZWQgdW50byBkZWF0aDsKVGhhdCBoZSB0b2xkIGhlciBhbGwgaGlzIGhlYXJ0LCBhbmQgc2FpZCB1bnRvIGhlciwgVGhlcmUgaGF0aCBub3QgY29tZSBhIHJhem9yIHVwb24gbWluZSBoZWFkOyBmb3IgSSBoYXZlIGJlZW4gYSBOYXphcml0ZSB1bnRvIEdvZCBmcm9tIG15IG1vdGhlcidzIHdvbWI6IGlmIEkgYmUgc2hhdmVuLCB0aGVuIG15IHN0cmVuZ3RoIHdpbGwgZ28gZnJvbSBtZSwgYW5kIEkgc2hhbGwgYmVjb21lIHdlYWssIGFuZCBiZSBsaWtlIGFueSBvdGhlciBtYW4uCkFuZCB3aGVuIERlbGlsYWggc2F3IHRoYXQgaGUgaGFkIHRvbGQgaGVyIGFsbCBoaXMgaGVhcnQsIHNoZSBzZW50IGFuZCBjYWxsZWQgZm9yIHRoZSBsb3JkcyBvZiB0aGUgUGhpbGlzdGluZXMsIHNheWluZywgQ29tZSB1cCB0aGlzIG9uY2UsIGZvciBoZSBoYXRoIHNoZXdlZCBtZSBhbGwgaGlzIGhlYXJ0LiBUaGVuIHRoZSBsb3JkcyBvZiB0aGUgUGhpbGlzdGluZXMgY2FtZSB1cCB1bnRvIGhlciwgYW5kIGJyb3VnaHQgbW9uZXkgaW4gdGhlaXIgaGFuZC4KQW5kIHNoZSBtYWRlIGhpbSBzbGVlcCB1cG9uIGhlciBrbmVlczsgYW5kIHNoZSBjYWxsZWQgZm9yIGEgbWFuLCBhbmQgc2hlIGNhdXNlZCBoaW0gdG8gc2hhdmUgb2ZmIHRoZSBzZXZlbiBsb2NrcyBvZiBoaXMgaGVhZDsgYW5kIHNoZSBiZWdhbiB0byBhZmZsaWN0IGhpbSwgYW5kIGhpcyBzdHJlbmd0aCB3ZW50IGZyb20gaGltLgpBbmQgc2hlIHNhaWQsIFRoZSBQaGlsaXN0aW5lcyBiZSB1cG9uIHRoZWUsIFNhbXNvbi4gQW5kIGhlIGF3b2tlIG91dCBvZiBoaXMgc2xlZXAsIGFuZCBzYWlkLCBJIHdpbGwgZ28gb3V0IGFzIGF0IG90aGVyIHRpbWVzIGJlZm9yZSwgYW5kIHNoYWtlIG15c2VsZi4gQW5kIGhlIHdpc3Qgbm90IHRoYXQgdGhlIExPUkQgd2FzIGRlcGFydGVkIGZyb20gaGltLgpCdXQgdGhlIFBoaWxpc3RpbmVzIHRvb2sgaGltLCBhbmQgcHV0IG91dCBoaXMgZXllcywgYW5kIGJyb3VnaHQgaGltIGRvd24gdG8gR2F6YSwgYW5kIGJvdW5kIGhpbSB3aXRoIGZldHRlcnMgb2YgYnJhc3M7IGFuZCBoZSBkaWQgZ3JpbmQgaW4gdGhlIHByaXNvbiBob3VzZS4KSG93YmVpdCB0aGUgaGFpciBvZiBoaXMgaGVhZCBiZWdhbiB0byBncm93IGFnYWluIGFmdGVyIGhlIHdhcyBzaGF2ZW4uClRoZW4gdGhlIGxvcmRzIG9mIHRoZSBQaGlsaXN0aW5lcyBnYXRoZXJlZCB0aGVtIHRvZ2V0aGVyIGZvciB0byBvZmZlciBhIGdyZWF0IHNhY3JpZmljZSB1bnRvIERhZ29uIHRoZWlyIGdvZCwgYW5kIHRvIHJlam9pY2U6IGZvciB0aGV5IHNhaWQsIE91ciBnb2QgaGF0aCBkZWxpdmVyZWQgU2Ftc29uIG91ciBlbmVteSBpbnRvIG91ciBoYW5kLgpBbmQgd2hlbiB0aGUgcGVvcGxlIHNhdyBoaW0sIHRoZXkgcHJhaXNlZCB0aGVpciBnb2Q6IGZvciB0aGV5IHNhaWQsIE91ciBnb2QgaGF0aCBkZWxpdmVyZWQgaW50byBvdXIgaGFuZHMgb3VyIGVuZW15LCBhbmQgdGhlIGRlc3Ryb3llciBvZiBvdXIgY291bnRyeSwgd2hpY2ggc2xldyBtYW55IG9mIHVzLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIHRoZWlyIGhlYXJ0cyB3ZXJlIG1lcnJ5LCB0aGF0IHRoZXkgc2FpZCwgQ2FsbCBmb3IgU2Ftc29uLCB0aGF0IGhlIG1heSBtYWtlIHVzIHNwb3J0LiBBbmQgdGhleSBjYWxsZWQgZm9yIFNhbXNvbiBvdXQgb2YgdGhlIHByaXNvbiBob3VzZTsgYW5kIGhlIG1hZGUgdGhlbSBzcG9ydDogYW5kIHRoZXkgc2V0IGhpbSBiZXR3ZWVuIHRoZSBwaWxsYXJzLgpBbmQgU2Ftc29uIHNhaWQgdW50byB0aGUgbGFkIHRoYXQgaGVsZCBoaW0gYnkgdGhlIGhhbmQsIFN1ZmZlciBtZSB0aGF0IEkgbWF5IGZlZWwgdGhlIHBpbGxhcnMgd2hlcmV1cG9uIHRoZSBob3VzZSBzdGFuZGV0aCwgdGhhdCBJIG1heSBsZWFuIHVwb24gdGhlbS4KTm93IHRoZSBob3VzZSB3YXMgZnVsbCBvZiBtZW4gYW5kIHdvbWVuOyBhbmQgYWxsIHRoZSBsb3JkcyBvZiB0aGUgUGhpbGlzdGluZXMgd2VyZSB0aGVyZTsgYW5kIHRoZXJlIHdlcmUgdXBvbiB0aGUgcm9vZiBhYm91dCB0aHJlZSB0aG91c2FuZCBtZW4gYW5kIHdvbWVuLCB0aGF0IGJlaGVsZCB3aGlsZSBTYW1zb24gbWFkZSBzcG9ydC4KQW5kIFNhbXNvbiBjYWxsZWQgdW50byB0aGUgTE9SRCwgYW5kIHNhaWQsIE8gTG9yZCBHb2QsIHJlbWVtYmVyIG1lLCBJIHByYXkgdGhlZSwgYW5kIHN0cmVuZ3RoZW4gbWUsIEkgcHJheSB0aGVlLCBvbmx5IHRoaXMgb25jZSwgTyBHb2QsIHRoYXQgSSBtYXkgYmUgYXQgb25jZSBhdmVuZ2VkIG9mIHRoZSBQaGlsaXN0aW5lcyBmb3IgbXkgdHdvIGV5ZXMuCkFuZCBTYW1zb24gdG9vayBob2xkIG9mIHRoZSB0d28gbWlkZGxlIHBpbGxhcnMgdXBvbiB3aGljaCB0aGUgaG91c2Ugc3Rvb2QsIGFuZCBvbiB3aGljaCBpdCB3YXMgYm9ybmUgdXAsIG9mIHRoZSBvbmUgd2l0aCBoaXMgcmlnaHQgaGFuZCwgYW5kIG9mIHRoZSBvdGhlciB3aXRoIGhpcyBsZWZ0LgpBbmQgU2Ftc29uIHNhaWQsIExldCBtZSBkaWUgd2l0aCB0aGUgUGhpbGlzdGluZXMuIEFuZCBoZSBib3dlZCBoaW1zZWxmIHdpdGggYWxsIGhpcyBtaWdodDsgYW5kIHRoZSBob3VzZSBmZWxsIHVwb24gdGhlIGxvcmRzLCBhbmQgdXBvbiBhbGwgdGhlIHBlb3BsZSB0aGF0IHdlcmUgdGhlcmVpbi4gU28gdGhlIGRlYWQgd2hpY2ggaGUgc2xldyBhdCBoaXMgZGVhdGggd2VyZSBtb3JlIHRoYW4gdGhleSB3aGljaCBoZSBzbGV3IGluIGhpcyBsaWZlLgpUaGVuIGhpcyBicmV0aHJlbiBhbmQgYWxsIHRoZSBob3VzZSBvZiBoaXMgZmF0aGVyIGNhbWUgZG93biwgYW5kIHRvb2sgaGltLCBhbmQgYnJvdWdodCBoaW0gdXAsIGFuZCBidXJpZWQgaGltIGJldHdlZW4gWm9yYWggYW5kIEVzaHRhb2wgaW4gdGhlIGJ1cnlpbmdwbGFjZSBvZiBNYW5vYWggaGlzIGZhdGhlci4gQW5kIGhlIGp1ZGdlZCBJc3JhZWwgdHdlbnR5IHllYXJzLgpBbmQgdGhlcmUgd2FzIGEgbWFuIG9mIG1vdW50IEVwaHJhaW0sIHdob3NlIG5hbWUgd2FzIE1pY2FoLgpBbmQgaGUgc2FpZCB1bnRvIGhpcyBtb3RoZXIsIFRoZSBlbGV2ZW4gaHVuZHJlZCBzaGVrZWxzIG9mIHNpbHZlciB0aGF0IHdlcmUgdGFrZW4gZnJvbSB0aGVlLCBhYm91dCB3aGljaCB0aG91IGN1cnNlZHN0LCBhbmQgc3Bha2VzdCBvZiBhbHNvIGluIG1pbmUgZWFycywgYmVob2xkLCB0aGUgc2lsdmVyIGlzIHdpdGggbWU7IEkgdG9vayBpdC4gQW5kIGhpcyBtb3RoZXIgc2FpZCwgQmxlc3NlZCBiZSB0aG91IG9mIHRoZSBMT1JELCBteSBzb24uCkFuZCB3aGVuIGhlIGhhZCByZXN0b3JlZCB0aGUgZWxldmVuIGh1bmRyZWQgc2hla2VscyBvZiBzaWx2ZXIgdG8gaGlzIG1vdGhlciwgaGlzIG1vdGhlciBzYWlkLCBJIGhhZCB3aG9sbHkgZGVkaWNhdGVkIHRoZSBzaWx2ZXIgdW50byB0aGUgTE9SRCBmcm9tIG15IGhhbmQgZm9yIG15IHNvbiwgdG8gbWFrZSBhIGdyYXZlbiBpbWFnZSBhbmQgYSBtb2x0ZW4gaW1hZ2U6IG5vdyB0aGVyZWZvcmUgSSB3aWxsIHJlc3RvcmUgaXQgdW50byB0aGVlLgpZZXQgaGUgcmVzdG9yZWQgdGhlIG1vbmV5IHVudG8gaGlzIG1vdGhlcjsgYW5kIGhpcyBtb3RoZXIgdG9vayB0d28gaHVuZHJlZCBzaGVrZWxzIG9mIHNpbHZlciwgYW5kIGdhdmUgdGhlbSB0byB0aGUgZm91bmRlciwgd2hvIG1hZGUgdGhlcmVvZiBhIGdyYXZlbiBpbWFnZSBhbmQgYSBtb2x0ZW4gaW1hZ2U6IGFuZCB0aGV5IHdlcmUgaW4gdGhlIGhvdXNlIG9mIE1pY2FoLgpBbmQgdGhlIG1hbiBNaWNhaCBoYWQgYW4gaG91c2Ugb2YgZ29kcywgYW5kIG1hZGUgYW4gZXBob2QsIGFuZCB0ZXJhcGhpbSwgYW5kIGNvbnNlY3JhdGVkIG9uZSBvZiBoaXMgc29ucywgd2hvIGJlY2FtZSBoaXMgcHJpZXN0LgpJbiB0aG9zZSBkYXlzIHRoZXJlIHdhcyBubyBraW5nIGluIElzcmFlbCwgYnV0IGV2ZXJ5IG1hbiBkaWQgdGhhdCB3aGljaCB3YXMgcmlnaHQgaW4gaGlzIG93biBleWVzLgpBbmQgdGhlcmUgd2FzIGEgeW91bmcgbWFuIG91dCBvZiBCZXRobGVoZW1qdWRhaCBvZiB0aGUgZmFtaWx5IG9mIEp1ZGFoLCB3aG8gd2FzIGEgTGV2aXRlLCBhbmQgaGUgc29qb3VybmVkIHRoZXJlLgpBbmQgdGhlIG1hbiBkZXBhcnRlZCBvdXQgb2YgdGhlIGNpdHkgZnJvbSBCZXRobGVoZW1qdWRhaCB0byBzb2pvdXJuIHdoZXJlIGhlIGNvdWxkIGZpbmQgYSBwbGFjZTogYW5kIGhlIGNhbWUgdG8gbW91bnQgRXBocmFpbSB0byB0aGUgaG91c2Ugb2YgTWljYWgsIGFzIGhlIGpvdXJuZXllZC4KQW5kIE1pY2FoIHNhaWQgdW50byBoaW0sIFdoZW5jZSBjb21lc3QgdGhvdT8gQW5kIGhlIHNhaWQgdW50byBoaW0sIEkgYW0gYSBMZXZpdGUgb2YgQmV0aGxlaGVtanVkYWgsIGFuZCBJIGdvIHRvIHNvam91cm4gd2hlcmUgSSBtYXkgZmluZCBhIHBsYWNlLgpBbmQgTWljYWggc2FpZCB1bnRvIGhpbSwgRHdlbGwgd2l0aCBtZSwgYW5kIGJlIHVudG8gbWUgYSBmYXRoZXIgYW5kIGEgcHJpZXN0LCBhbmQgSSB3aWxsIGdpdmUgdGhlZSB0ZW4gc2hla2VscyBvZiBzaWx2ZXIgYnkgdGhlIHllYXIsIGFuZCBhIHN1aXQgb2YgYXBwYXJlbCwgYW5kIHRoeSB2aWN0dWFscy4gU28gdGhlIExldml0ZSB3ZW50IGluLgpBbmQgdGhlIExldml0ZSB3YXMgY29udGVudCB0byBkd2VsbCB3aXRoIHRoZSBtYW47IGFuZCB0aGUgeW91bmcgbWFuIHdhcyB1bnRvIGhpbSBhcyBvbmUgb2YgaGlzIHNvbnMuCkFuZCBNaWNhaCBjb25zZWNyYXRlZCB0aGUgTGV2aXRlOyBhbmQgdGhlIHlvdW5nIG1hbiBiZWNhbWUgaGlzIHByaWVzdCwgYW5kIHdhcyBpbiB0aGUgaG91c2Ugb2YgTWljYWguClRoZW4gc2FpZCBNaWNhaCwgTm93IGtub3cgSSB0aGF0IHRoZSBMT1JEIHdpbGwgZG8gbWUgZ29vZCwgc2VlaW5nIEkgaGF2ZSBhIExldml0ZSB0byBteSBwcmllc3QuCkluIHRob3NlIGRheXMgdGhlcmUgd2FzIG5vIGtpbmcgaW4gSXNyYWVsOiBhbmQgaW4gdGhvc2UgZGF5cyB0aGUgdHJpYmUgb2YgdGhlIERhbml0ZXMgc291Z2h0IHRoZW0gYW4gaW5oZXJpdGFuY2UgdG8gZHdlbGwgaW47IGZvciB1bnRvIHRoYXQgZGF5IGFsbCB0aGVpciBpbmhlcml0YW5jZSBoYWQgbm90IGZhbGxlbiB1bnRvIHRoZW0gYW1vbmcgdGhlIHRyaWJlcyBvZiBJc3JhZWwuCkFuZCB0aGUgY2hpbGRyZW4gb2YgRGFuIHNlbnQgb2YgdGhlaXIgZmFtaWx5IGZpdmUgbWVuIGZyb20gdGhlaXIgY29hc3RzLCBtZW4gb2YgdmFsb3VyLCBmcm9tIFpvcmFoLCBhbmQgZnJvbSBFc2h0YW9sLCB0byBzcHkgb3V0IHRoZSBsYW5kLCBhbmQgdG8gc2VhcmNoIGl0OyBhbmQgdGhleSBzYWlkIHVudG8gdGhlbSwgR28sIHNlYXJjaCB0aGUgbGFuZDogd2hvIHdoZW4gdGhleSBjYW1lIHRvIG1vdW50IEVwaHJhaW0sIHRvIHRoZSBob3VzZSBvZiBNaWNhaCwgdGhleSBsb2RnZWQgdGhlcmUuCldoZW4gdGhleSB3ZXJlIGJ5IHRoZSBob3VzZSBvZiBNaWNhaCwgdGhleSBrbmV3IHRoZSB2b2ljZSBvZiB0aGUgeW91bmcgbWFuIHRoZSBMZXZpdGU6IGFuZCB0aGV5IHR1cm5lZCBpbiB0aGl0aGVyLCBhbmQgc2FpZCB1bnRvIGhpbSwgV2hvIGJyb3VnaHQgdGhlZSBoaXRoZXI/IGFuZCB3aGF0IG1ha2VzdCB0aG91IGluIHRoaXMgcGxhY2U/IGFuZCB3aGF0IGhhc3QgdGhvdSBoZXJlPwpBbmQgaGUgc2FpZCB1bnRvIHRoZW0sIFRodXMgYW5kIHRodXMgZGVhbGV0aCBNaWNhaCB3aXRoIG1lLCBhbmQgaGF0aCBoaXJlZCBtZSwgYW5kIEkgYW0gaGlzIHByaWVzdC4KQW5kIHRoZXkgc2FpZCB1bnRvIGhpbSwgQXNrIGNvdW5zZWwsIHdlIHByYXkgdGhlZSwgb2YgR29kLCB0aGF0IHdlIG1heSBrbm93IHdoZXRoZXIgb3VyIHdheSB3aGljaCB3ZSBnbyBzaGFsbCBiZSBwcm9zcGVyb3VzLgpBbmQgdGhlIHByaWVzdCBzYWlkIHVudG8gdGhlbSwgR28gaW4gcGVhY2U6IGJlZm9yZSB0aGUgTE9SRCBpcyB5b3VyIHdheSB3aGVyZWluIHllIGdvLgpUaGVuIHRoZSBmaXZlIG1lbiBkZXBhcnRlZCwgYW5kIGNhbWUgdG8gTGFpc2gsIGFuZCBzYXcgdGhlIHBlb3BsZSB0aGF0IHdlcmUgdGhlcmVpbiwgaG93IHRoZXkgZHdlbHQgY2FyZWxlc3MsIGFmdGVyIHRoZSBtYW5uZXIgb2YgdGhlIFppZG9uaWFucywgcXVpZXQgYW5kIHNlY3VyZTsgYW5kIHRoZXJlIHdhcyBubyBtYWdpc3RyYXRlIGluIHRoZSBsYW5kLCB0aGF0IG1pZ2h0IHB1dCB0aGVtIHRvIHNoYW1lIGluIGFueSB0aGluZzsgYW5kIHRoZXkgd2VyZSBmYXIgZnJvbSB0aGUgWmlkb25pYW5zLCBhbmQgaGFkIG5vIGJ1c2luZXNzIHdpdGggYW55IG1hbi4KQW5kIHRoZXkgY2FtZSB1bnRvIHRoZWlyIGJyZXRocmVuIHRvIFpvcmFoIGFuZCBFc2h0YW9sOiBhbmQgdGhlaXIgYnJldGhyZW4gc2FpZCB1bnRvIHRoZW0sIFdoYXQgc2F5IHllPwpBbmQgdGhleSBzYWlkLCBBcmlzZSwgdGhhdCB3ZSBtYXkgZ28gdXAgYWdhaW5zdCB0aGVtOiBmb3Igd2UgaGF2ZSBzZWVuIHRoZSBsYW5kLCBhbmQsIGJlaG9sZCwgaXQgaXMgdmVyeSBnb29kOiBhbmQgYXJlIHllIHN0aWxsPyBiZSBub3Qgc2xvdGhmdWwgdG8gZ28sIGFuZCB0byBlbnRlciB0byBwb3NzZXNzIHRoZSBsYW5kLgpXaGVuIHllIGdvLCB5ZSBzaGFsbCBjb21lIHVudG8gYSBwZW9wbGUgc2VjdXJlLCBhbmQgdG8gYSBsYXJnZSBsYW5kOiBmb3IgR29kIGhhdGggZ2l2ZW4gaXQgaW50byB5b3VyIGhhbmRzOyBhIHBsYWNlIHdoZXJlIHRoZXJlIGlzIG5vIHdhbnQgb2YgYW55IHRoaW5nIHRoYXQgaXMgaW4gdGhlIGVhcnRoLgpBbmQgdGhlcmUgd2VudCBmcm9tIHRoZW5jZSBvZiB0aGUgZmFtaWx5IG9mIHRoZSBEYW5pdGVzLCBvdXQgb2YgWm9yYWggYW5kIG91dCBvZiBFc2h0YW9sLCBzaXggaHVuZHJlZCBtZW4gYXBwb2ludGVkIHdpdGggd2VhcG9ucyBvZiB3YXIuCkFuZCB0aGV5IHdlbnQgdXAsIGFuZCBwaXRjaGVkIGluIEtpcmphdGhqZWFyaW0sIGluIEp1ZGFoOiB3aGVyZWZvcmUgdGhleSBjYWxsZWQgdGhhdCBwbGFjZSBNYWhhbmVoZGFuIHVudG8gdGhpcyBkYXk6IGJlaG9sZCwgaXQgaXMgYmVoaW5kIEtpcmphdGhqZWFyaW0uCkFuZCB0aGV5IHBhc3NlZCB0aGVuY2UgdW50byBtb3VudCBFcGhyYWltLCBhbmQgY2FtZSB1bnRvIHRoZSBob3VzZSBvZiBNaWNhaC4KVGhlbiBhbnN3ZXJlZCB0aGUgZml2ZSBtZW4gdGhhdCB3ZW50IHRvIHNweSBvdXQgdGhlIGNvdW50cnkgb2YgTGFpc2gsIGFuZCBzYWlkIHVudG8gdGhlaXIgYnJldGhyZW4sIERvIHllIGtub3cgdGhhdCB0aGVyZSBpcyBpbiB0aGVzZSBob3VzZXMgYW4gZXBob2QsIGFuZCB0ZXJhcGhpbSwgYW5kIGEgZ3JhdmVuIGltYWdlLCBhbmQgYSBtb2x0ZW4gaW1hZ2U/IG5vdyB0aGVyZWZvcmUgY29uc2lkZXIgd2hhdCB5ZSBoYXZlIHRvIGRvLgpBbmQgdGhleSB0dXJuZWQgdGhpdGhlcndhcmQsIGFuZCBjYW1lIHRvIHRoZSBob3VzZSBvZiB0aGUgeW91bmcgbWFuIHRoZSBMZXZpdGUsIGV2ZW4gdW50byB0aGUgaG91c2Ugb2YgTWljYWgsIGFuZCBzYWx1dGVkIGhpbS4KQW5kIHRoZSBzaXggaHVuZHJlZCBtZW4gYXBwb2ludGVkIHdpdGggdGhlaXIgd2VhcG9ucyBvZiB3YXIsIHdoaWNoIHdlcmUgb2YgdGhlIGNoaWxkcmVuIG9mIERhbiwgc3Rvb2QgYnkgdGhlIGVudGVyaW5nIG9mIHRoZSBnYXRlLgpBbmQgdGhlIGZpdmUgbWVuIHRoYXQgd2VudCB0byBzcHkgb3V0IHRoZSBsYW5kIHdlbnQgdXAsIGFuZCBjYW1lIGluIHRoaXRoZXIsIGFuZCB0b29rIHRoZSBncmF2ZW4gaW1hZ2UsIGFuZCB0aGUgZXBob2QsIGFuZCB0aGUgdGVyYXBoaW0sIGFuZCB0aGUgbW9sdGVuIGltYWdlOiBhbmQgdGhlIHByaWVzdCBzdG9vZCBpbiB0aGUgZW50ZXJpbmcgb2YgdGhlIGdhdGUgd2l0aCB0aGUgc2l4IGh1bmRyZWQgbWVuIHRoYXQgd2VyZSBhcHBvaW50ZWQgd2l0aCB3ZWFwb25zIG9mIHdhci4KQW5kIHRoZXNlIHdlbnQgaW50byBNaWNhaCdzIGhvdXNlLCBhbmQgZmV0Y2hlZCB0aGUgY2FydmVkIGltYWdlLCB0aGUgZXBob2QsIGFuZCB0aGUgdGVyYXBoaW0sIGFuZCB0aGUgbW9sdGVuIGltYWdlLiBUaGVuIHNhaWQgdGhlIHByaWVzdCB1bnRvIHRoZW0sIFdoYXQgZG8geWU/CkFuZCB0aGV5IHNhaWQgdW50byBoaW0sIEhvbGQgdGh5IHBlYWNlLCBsYXkgdGhpbmUgaGFuZCB1cG9uIHRoeSBtb3V0aCwgYW5kIGdvIHdpdGggdXMsIGFuZCBiZSB0byB1cyBhIGZhdGhlciBhbmQgYSBwcmllc3Q6IGlzIGl0IGJldHRlciBmb3IgdGhlZSB0byBiZSBhIHByaWVzdCB1bnRvIHRoZSBob3VzZSBvZiBvbmUgbWFuLCBvciB0aGF0IHRob3UgYmUgYSBwcmllc3QgdW50byBhIHRyaWJlIGFuZCBhIGZhbWlseSBpbiBJc3JhZWw/CkFuZCB0aGUgcHJpZXN0J3MgaGVhcnQgd2FzIGdsYWQsIGFuZCBoZSB0b29rIHRoZSBlcGhvZCwgYW5kIHRoZSB0ZXJhcGhpbSwgYW5kIHRoZSBncmF2ZW4gaW1hZ2UsIGFuZCB3ZW50IGluIHRoZSBtaWRzdCBvZiB0aGUgcGVvcGxlLgpTbyB0aGV5IHR1cm5lZCBhbmQgZGVwYXJ0ZWQsIGFuZCBwdXQgdGhlIGxpdHRsZSBvbmVzIGFuZCB0aGUgY2F0dGxlIGFuZCB0aGUgY2FycmlhZ2UgYmVmb3JlIHRoZW0uCkFuZCB3aGVuIHRoZXkgd2VyZSBhIGdvb2Qgd2F5IGZyb20gdGhlIGhvdXNlIG9mIE1pY2FoLCB0aGUgbWVuIHRoYXQgd2VyZSBpbiB0aGUgaG91c2VzIG5lYXIgdG8gTWljYWgncyBob3VzZSB3ZXJlIGdhdGhlcmVkIHRvZ2V0aGVyLCBhbmQgb3ZlcnRvb2sgdGhlIGNoaWxkcmVuIG9mIERhbi4KQW5kIHRoZXkgY3JpZWQgdW50byB0aGUgY2hpbGRyZW4gb2YgRGFuLiBBbmQgdGhleSB0dXJuZWQgdGhlaXIgZmFjZXMsIGFuZCBzYWlkIHVudG8gTWljYWgsIFdoYXQgYWlsZXRoIHRoZWUsIHRoYXQgdGhvdSBjb21lc3Qgd2l0aCBzdWNoIGEgY29tcGFueT8KQW5kIGhlIHNhaWQsIFllIGhhdmUgdGFrZW4gYXdheSBteSBnb2RzIHdoaWNoIEkgbWFkZSwgYW5kIHRoZSBwcmllc3QsIGFuZCB5ZSBhcmUgZ29uZSBhd2F5OiBhbmQgd2hhdCBoYXZlIEkgbW9yZT8gYW5kIHdoYXQgaXMgdGhpcyB0aGF0IHllIHNheSB1bnRvIG1lLCBXaGF0IGFpbGV0aCB0aGVlPwpBbmQgdGhlIGNoaWxkcmVuIG9mIERhbiBzYWlkIHVudG8gaGltLCBMZXQgbm90IHRoeSB2b2ljZSBiZSBoZWFyZCBhbW9uZyB1cywgbGVzdCBhbmdyeSBmZWxsb3dzIHJ1biB1cG9uIHRoZWUsIGFuZCB0aG91IGxvc2UgdGh5IGxpZmUsIHdpdGggdGhlIGxpdmVzIG9mIHRoeSBob3VzZWhvbGQuCkFuZCB0aGUgY2hpbGRyZW4gb2YgRGFuIHdlbnQgdGhlaXIgd2F5OiBhbmQgd2hlbiBNaWNhaCBzYXcgdGhhdCB0aGV5IHdlcmUgdG9vIHN0cm9uZyBmb3IgaGltLCBoZSB0dXJuZWQgYW5kIHdlbnQgYmFjayB1bnRvIGhpcyBob3VzZS4KQW5kIHRoZXkgdG9vayB0aGUgdGhpbmdzIHdoaWNoIE1pY2FoIGhhZCBtYWRlLCBhbmQgdGhlIHByaWVzdCB3aGljaCBoZSBoYWQsIGFuZCBjYW1lIHVudG8gTGFpc2gsIHVudG8gYSBwZW9wbGUgdGhhdCB3ZXJlIGF0IHF1aWV0IGFuZCBzZWN1cmU6IGFuZCB0aGV5IHNtb3RlIHRoZW0gd2l0aCB0aGUgZWRnZSBvZiB0aGUgc3dvcmQsIGFuZCBidXJudCB0aGUgY2l0eSB3aXRoIGZpcmUuCkFuZCB0aGVyZSB3YXMgbm8gZGVsaXZlcmVyLCBiZWNhdXNlIGl0IHdhcyBmYXIgZnJvbSBaaWRvbiwgYW5kIHRoZXkgaGFkIG5vIGJ1c2luZXNzIHdpdGggYW55IG1hbjsgYW5kIGl0IHdhcyBpbiB0aGUgdmFsbGV5IHRoYXQgbGlldGggYnkgQmV0aHJlaG9iLiBBbmQgdGhleSBidWlsdCBhIGNpdHksIGFuZCBkd2VsdCB0aGVyZWluLgpBbmQgdGhleSBjYWxsZWQgdGhlIG5hbWUgb2YgdGhlIGNpdHkgRGFuLCBhZnRlciB0aGUgbmFtZSBvZiBEYW4gdGhlaXIgZmF0aGVyLCB3aG8gd2FzIGJvcm4gdW50byBJc3JhZWw6IGhvd2JlaXQgdGhlIG5hbWUgb2YgdGhlIGNpdHkgd2FzIExhaXNoIGF0IHRoZSBmaXJzdC4KQW5kIHRoZSBjaGlsZHJlbiBvZiBEYW4gc2V0IHVwIHRoZSBncmF2ZW4gaW1hZ2U6IGFuZCBKb25hdGhhbiwgdGhlIHNvbiBvZiBHZXJzaG9tLCB0aGUgc29uIG9mIE1hbmFzc2VoLCBoZSBhbmQgaGlzIHNvbnMgd2VyZSBwcmllc3RzIHRvIHRoZSB0cmliZSBvZiBEYW4gdW50aWwgdGhlIGRheSBvZiB0aGUgY2FwdGl2aXR5IG9mIHRoZSBsYW5kLgpBbmQgdGhleSBzZXQgdGhlbSB1cCBNaWNhaCdzIGdyYXZlbiBpbWFnZSwgd2hpY2ggaGUgbWFkZSwgYWxsIHRoZSB0aW1lIHRoYXQgdGhlIGhvdXNlIG9mIEdvZCB3YXMgaW4gU2hpbG9oLgpBbmQgaXQgY2FtZSB0byBwYXNzIGluIHRob3NlIGRheXMsIHdoZW4gdGhlcmUgd2FzIG5vIGtpbmcgaW4gSXNyYWVsLCB0aGF0IHRoZXJlIHdhcyBhIGNlcnRhaW4gTGV2aXRlIHNvam91cm5pbmcgb24gdGhlIHNpZGUgb2YgbW91bnQgRXBocmFpbSwgd2hvIHRvb2sgdG8gaGltIGEgY29uY3ViaW5lIG91dCBvZiBCZXRobGVoZW1qdWRhaC4KQW5kIGhpcyBjb25jdWJpbmUgcGxheWVkIHRoZSB3aG9yZSBhZ2FpbnN0IGhpbSwgYW5kIHdlbnQgYXdheSBmcm9tIGhpbSB1bnRvIGhlciBmYXRoZXIncyBob3VzZSB0byBCZXRobGVoZW1qdWRhaCwgYW5kIHdhcyB0aGVyZSBmb3VyIHdob2xlIG1vbnRocy4KQW5kIGhlciBodXNiYW5kIGFyb3NlLCBhbmQgd2VudCBhZnRlciBoZXIsIHRvIHNwZWFrIGZyaWVuZGx5IHVudG8gaGVyLCBhbmQgdG8gYnJpbmcgaGVyIGFnYWluLCBoYXZpbmcgaGlzIHNlcnZhbnQgd2l0aCBoaW0sIGFuZCBhIGNvdXBsZSBvZiBhc3NlczogYW5kIHNoZSBicm91Z2h0IGhpbSBpbnRvIGhlciBmYXRoZXIncyBob3VzZTogYW5kIHdoZW4gdGhlIGZhdGhlciBvZiB0aGUgZGFtc2VsIHNhdyBoaW0sIGhlIHJlam9pY2VkIHRvIG1lZXQgaGltLgpBbmQgaGlzIGZhdGhlciBpbiBsYXcsIHRoZSBkYW1zZWwncyBmYXRoZXIsIHJldGFpbmVkIGhpbTsgYW5kIGhlIGFib2RlIHdpdGggaGltIHRocmVlIGRheXM6IHNvIHRoZXkgZGlkIGVhdCBhbmQgZHJpbmssIGFuZCBsb2RnZWQgdGhlcmUuCkFuZCBpdCBjYW1lIHRvIHBhc3Mgb24gdGhlIGZvdXJ0aCBkYXksIHdoZW4gdGhleSBhcm9zZSBlYXJseSBpbiB0aGUgbW9ybmluZywgdGhhdCBoZSByb3NlIHVwIHRvIGRlcGFydDogYW5kIHRoZSBkYW1zZWwncyBmYXRoZXIgc2FpZCB1bnRvIGhpcyBzb24gaW4gbGF3LCBDb21mb3J0IHRoaW5lIGhlYXJ0IHdpdGggYSBtb3JzZWwgb2YgYnJlYWQsIGFuZCBhZnRlcndhcmQgZ28geW91ciB3YXkuCkFuZCB0aGV5IHNhdCBkb3duLCBhbmQgZGlkIGVhdCBhbmQgZHJpbmsgYm90aCBvZiB0aGVtIHRvZ2V0aGVyOiBmb3IgdGhlIGRhbXNlbCdzIGZhdGhlciBoYWQgc2FpZCB1bnRvIHRoZSBtYW4sIEJlIGNvbnRlbnQsIEkgcHJheSB0aGVlLCBhbmQgdGFycnkgYWxsIG5pZ2h0LCBhbmQgbGV0IHRoaW5lIGhlYXJ0IGJlIG1lcnJ5LgpBbmQgd2hlbiB0aGUgbWFuIHJvc2UgdXAgdG8gZGVwYXJ0LCBoaXMgZmF0aGVyIGluIGxhdyB1cmdlZCBoaW06IHRoZXJlZm9yZSBoZSBsb2RnZWQgdGhlcmUgYWdhaW4uCkFuZCBoZSBhcm9zZSBlYXJseSBpbiB0aGUgbW9ybmluZyBvbiB0aGUgZmlmdGggZGF5IHRvIGRlcGFydDsgYW5kIHRoZSBkYW1zZWwncyBmYXRoZXIgc2FpZCwgQ29tZm9ydCB0aGluZSBoZWFydCwgSSBwcmF5IHRoZWUuIEFuZCB0aGV5IHRhcnJpZWQgdW50aWwgYWZ0ZXJub29uLCBhbmQgdGhleSBkaWQgZWF0IGJvdGggb2YgdGhlbS4KQW5kIHdoZW4gdGhlIG1hbiByb3NlIHVwIHRvIGRlcGFydCwgaGUsIGFuZCBoaXMgY29uY3ViaW5lLCBhbmQgaGlzIHNlcnZhbnQsIGhpcyBmYXRoZXIgaW4gbGF3LCB0aGUgZGFtc2VsJ3MgZmF0aGVyLCBzYWlkIHVudG8gaGltLCBCZWhvbGQsIG5vdyB0aGUgZGF5IGRyYXdldGggdG93YXJkIGV2ZW5pbmcsIEkgcHJheSB5b3UgdGFycnkgYWxsIG5pZ2h0OiBiZWhvbGQsIHRoZSBkYXkgZ3Jvd2V0aCB0byBhbiBlbmQsIGxvZGdlIGhlcmUsIHRoYXQgdGhpbmUgaGVhcnQgbWF5IGJlIG1lcnJ5OyBhbmQgdG8gbW9ycm93IGdldCB5b3UgZWFybHkgb24geW91ciB3YXksIHRoYXQgdGhvdSBtYXllc3QgZ28gaG9tZS4KQnV0IHRoZSBtYW4gd291bGQgbm90IHRhcnJ5IHRoYXQgbmlnaHQsIGJ1dCBoZSByb3NlIHVwIGFuZCBkZXBhcnRlZCwgYW5kIGNhbWUgb3ZlciBhZ2FpbnN0IEplYnVzLCB3aGljaCBpcyBKZXJ1c2FsZW07IGFuZCB0aGVyZSB3ZXJlIHdpdGggaGltIHR3byBhc3NlcyBzYWRkbGVkLCBoaXMgY29uY3ViaW5lIGFsc28gd2FzIHdpdGggaGltLgpBbmQgd2hlbiB0aGV5IHdlcmUgYnkgSmVidXMsIHRoZSBkYXkgd2FzIGZhciBzcGVudDsgYW5kIHRoZSBzZXJ2YW50IHNhaWQgdW50byBoaXMgbWFzdGVyLCBDb21lLCBJIHByYXkgdGhlZSwgYW5kIGxldCB1cyB0dXJuIGluIGludG8gdGhpcyBjaXR5IG9mIHRoZSBKZWJ1c2l0ZXMsIGFuZCBsb2RnZSBpbiBpdC4KQW5kIGhpcyBtYXN0ZXIgc2FpZCB1bnRvIGhpbSwgV2Ugd2lsbCBub3QgdHVybiBhc2lkZSBoaXRoZXIgaW50byB0aGUgY2l0eSBvZiBhIHN0cmFuZ2VyLCB0aGF0IGlzIG5vdCBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsOyB3ZSB3aWxsIHBhc3Mgb3ZlciB0byBHaWJlYWguCkFuZCBoZSBzYWlkIHVudG8gaGlzIHNlcnZhbnQsIENvbWUsIGFuZCBsZXQgdXMgZHJhdyBuZWFyIHRvIG9uZSBvZiB0aGVzZSBwbGFjZXMgdG8gbG9kZ2UgYWxsIG5pZ2h0LCBpbiBHaWJlYWgsIG9yIGluIFJhbWFoLgpBbmQgdGhleSBwYXNzZWQgb24gYW5kIHdlbnQgdGhlaXIgd2F5OyBhbmQgdGhlIHN1biB3ZW50IGRvd24gdXBvbiB0aGVtIHdoZW4gdGhleSB3ZXJlIGJ5IEdpYmVhaCwgd2hpY2ggYmVsb25nZXRoIHRvIEJlbmphbWluLgpBbmQgdGhleSB0dXJuZWQgYXNpZGUgdGhpdGhlciwgdG8gZ28gaW4gYW5kIHRvIGxvZGdlIGluIEdpYmVhaDogYW5kIHdoZW4gaGUgd2VudCBpbiwgaGUgc2F0IGhpbSBkb3duIGluIGEgc3RyZWV0IG9mIHRoZSBjaXR5OiBmb3IgdGhlcmUgd2FzIG5vIG1hbiB0aGF0IHRvb2sgdGhlbSBpbnRvIGhpcyBob3VzZSB0byBsb2RnaW5nLgpBbmQsIGJlaG9sZCwgdGhlcmUgY2FtZSBhbiBvbGQgbWFuIGZyb20gaGlzIHdvcmsgb3V0IG9mIHRoZSBmaWVsZCBhdCBldmVuLCB3aGljaCB3YXMgYWxzbyBvZiBtb3VudCBFcGhyYWltOyBhbmQgaGUgc29qb3VybmVkIGluIEdpYmVhaDogYnV0IHRoZSBtZW4gb2YgdGhlIHBsYWNlIHdlcmUgQmVuamFtaXRlcy4KQW5kIHdoZW4gaGUgaGFkIGxpZnRlZCB1cCBoaXMgZXllcywgaGUgc2F3IGEgd2F5ZmFyaW5nIG1hbiBpbiB0aGUgc3RyZWV0IG9mIHRoZSBjaXR5OiBhbmQgdGhlIG9sZCBtYW4gc2FpZCwgV2hpdGhlciBnb2VzdCB0aG91PyBhbmQgd2hlbmNlIGNvbWVzdCB0aG91PwpBbmQgaGUgc2FpZCB1bnRvIGhpbSwgV2UgYXJlIHBhc3NpbmcgZnJvbSBCZXRobGVoZW1qdWRhaCB0b3dhcmQgdGhlIHNpZGUgb2YgbW91bnQgRXBocmFpbTsgZnJvbSB0aGVuY2UgYW0gSTogYW5kIEkgd2VudCB0byBCZXRobGVoZW1qdWRhaCwgYnV0IEkgYW0gbm93IGdvaW5nIHRvIHRoZSBob3VzZSBvZiB0aGUgTE9SRDsgYW5kIHRoZXJlIGlzIG5vIG1hbiB0aGF0IHJlY2VpdmV0aCBtZSB0byBob3VzZS4KWWV0IHRoZXJlIGlzIGJvdGggc3RyYXcgYW5kIHByb3ZlbmRlciBmb3Igb3VyIGFzc2VzOyBhbmQgdGhlcmUgaXMgYnJlYWQgYW5kIHdpbmUgYWxzbyBmb3IgbWUsIGFuZCBmb3IgdGh5IGhhbmRtYWlkLCBhbmQgZm9yIHRoZSB5b3VuZyBtYW4gd2hpY2ggaXMgd2l0aCB0aHkgc2VydmFudHM6IHRoZXJlIGlzIG5vIHdhbnQgb2YgYW55IHRoaW5nLgpBbmQgdGhlIG9sZCBtYW4gc2FpZCwgUGVhY2UgYmUgd2l0aCB0aGVlOyBob3dzb2V2ZXIgbGV0IGFsbCB0aHkgd2FudHMgbGllIHVwb24gbWU7IG9ubHkgbG9kZ2Ugbm90IGluIHRoZSBzdHJlZXQuClNvIGhlIGJyb3VnaHQgaGltIGludG8gaGlzIGhvdXNlLCBhbmQgZ2F2ZSBwcm92ZW5kZXIgdW50byB0aGUgYXNzZXM6IGFuZCB0aGV5IHdhc2hlZCB0aGVpciBmZWV0LCBhbmQgZGlkIGVhdCBhbmQgZHJpbmsuCk5vdyBhcyB0aGV5IHdlcmUgbWFraW5nIHRoZWlyIGhlYXJ0cyBtZXJyeSwgYmVob2xkLCB0aGUgbWVuIG9mIHRoZSBjaXR5LCBjZXJ0YWluIHNvbnMgb2YgQmVsaWFsLCBiZXNldCB0aGUgaG91c2Ugcm91bmQgYWJvdXQsIGFuZCBiZWF0IGF0IHRoZSBkb29yLCBhbmQgc3Bha2UgdG8gdGhlIG1hc3RlciBvZiB0aGUgaG91c2UsIHRoZSBvbGQgbWFuLCBzYXlpbmcsIEJyaW5nIGZvcnRoIHRoZSBtYW4gdGhhdCBjYW1lIGludG8gdGhpbmUgaG91c2UsIHRoYXQgd2UgbWF5IGtub3cgaGltLgpBbmQgdGhlIG1hbiwgdGhlIG1hc3RlciBvZiB0aGUgaG91c2UsIHdlbnQgb3V0IHVudG8gdGhlbSwgYW5kIHNhaWQgdW50byB0aGVtLCBOYXksIG15IGJyZXRocmVuLCBuYXksIEkgcHJheSB5b3UsIGRvIG5vdCBzbyB3aWNrZWRseTsgc2VlaW5nIHRoYXQgdGhpcyBtYW4gaXMgY29tZSBpbnRvIG1pbmUgaG91c2UsIGRvIG5vdCB0aGlzIGZvbGx5LgpCZWhvbGQsIGhlcmUgaXMgbXkgZGF1Z2h0ZXIgYSBtYWlkZW4sIGFuZCBoaXMgY29uY3ViaW5lOyB0aGVtIEkgd2lsbCBicmluZyBvdXQgbm93LCBhbmQgaHVtYmxlIHllIHRoZW0sIGFuZCBkbyB3aXRoIHRoZW0gd2hhdCBzZWVtZXRoIGdvb2QgdW50byB5b3U6IGJ1dCB1bnRvIHRoaXMgbWFuIGRvIG5vdCBzbyB2aWxlIGEgdGhpbmcuCkJ1dCB0aGUgbWVuIHdvdWxkIG5vdCBoZWFya2VuIHRvIGhpbTogc28gdGhlIG1hbiB0b29rIGhpcyBjb25jdWJpbmUsIGFuZCBicm91Z2h0IGhlciBmb3J0aCB1bnRvIHRoZW07IGFuZCB0aGV5IGtuZXcgaGVyLCBhbmQgYWJ1c2VkIGhlciBhbGwgdGhlIG5pZ2h0IHVudGlsIHRoZSBtb3JuaW5nOiBhbmQgd2hlbiB0aGUgZGF5IGJlZ2FuIHRvIHNwcmluZywgdGhleSBsZXQgaGVyIGdvLgpUaGVuIGNhbWUgdGhlIHdvbWFuIGluIHRoZSBkYXduaW5nIG9mIHRoZSBkYXksIGFuZCBmZWxsIGRvd24gYXQgdGhlIGRvb3Igb2YgdGhlIG1hbidzIGhvdXNlIHdoZXJlIGhlciBsb3JkIHdhcywgdGlsbCBpdCB3YXMgbGlnaHQuCkFuZCBoZXIgbG9yZCByb3NlIHVwIGluIHRoZSBtb3JuaW5nLCBhbmQgb3BlbmVkIHRoZSBkb29ycyBvZiB0aGUgaG91c2UsIGFuZCB3ZW50IG91dCB0byBnbyBoaXMgd2F5OiBhbmQsIGJlaG9sZCwgdGhlIHdvbWFuIGhpcyBjb25jdWJpbmUgd2FzIGZhbGxlbiBkb3duIGF0IHRoZSBkb29yIG9mIHRoZSBob3VzZSwgYW5kIGhlciBoYW5kcyB3ZXJlIHVwb24gdGhlIHRocmVzaG9sZC4KQW5kIGhlIHNhaWQgdW50byBoZXIsIFVwLCBhbmQgbGV0IHVzIGJlIGdvaW5nLiBCdXQgbm9uZSBhbnN3ZXJlZC4gVGhlbiB0aGUgbWFuIHRvb2sgaGVyIHVwIHVwb24gYW4gYXNzLCBhbmQgdGhlIG1hbiByb3NlIHVwLCBhbmQgZ2F0IGhpbSB1bnRvIGhpcyBwbGFjZS4KQW5kIHdoZW4gaGUgd2FzIGNvbWUgaW50byBoaXMgaG91c2UsIGhlIHRvb2sgYSBrbmlmZSwgYW5kIGxhaWQgaG9sZCBvbiBoaXMgY29uY3ViaW5lLCBhbmQgZGl2aWRlZCBoZXIsIHRvZ2V0aGVyIHdpdGggaGVyIGJvbmVzLCBpbnRvIHR3ZWx2ZSBwaWVjZXMsIGFuZCBzZW50IGhlciBpbnRvIGFsbCB0aGUgY29hc3RzIG9mIElzcmFlbC4KQW5kIGl0IHdhcyBzbywgdGhhdCBhbGwgdGhhdCBzYXcgaXQgc2FpZCwgVGhlcmUgd2FzIG5vIHN1Y2ggZGVlZCBkb25lIG5vciBzZWVuIGZyb20gdGhlIGRheSB0aGF0IHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgY2FtZSB1cCBvdXQgb2YgdGhlIGxhbmQgb2YgRWd5cHQgdW50byB0aGlzIGRheTogY29uc2lkZXIgb2YgaXQsIHRha2UgYWR2aWNlLCBhbmQgc3BlYWsgeW91ciBtaW5kcy4KVGhlbiBhbGwgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCB3ZW50IG91dCwgYW5kIHRoZSBjb25ncmVnYXRpb24gd2FzIGdhdGhlcmVkIHRvZ2V0aGVyIGFzIG9uZSBtYW4sIGZyb20gRGFuIGV2ZW4gdG8gQmVlcnNoZWJhLCB3aXRoIHRoZSBsYW5kIG9mIEdpbGVhZCwgdW50byB0aGUgTE9SRCBpbiBNaXpwZWguCkFuZCB0aGUgY2hpZWYgb2YgYWxsIHRoZSBwZW9wbGUsIGV2ZW4gb2YgYWxsIHRoZSB0cmliZXMgb2YgSXNyYWVsLCBwcmVzZW50ZWQgdGhlbXNlbHZlcyBpbiB0aGUgYXNzZW1ibHkgb2YgdGhlIHBlb3BsZSBvZiBHb2QsIGZvdXIgaHVuZHJlZCB0aG91c2FuZCBmb290bWVuIHRoYXQgZHJldyBzd29yZC4KKE5vdyB0aGUgY2hpbGRyZW4gb2YgQmVuamFtaW4gaGVhcmQgdGhhdCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIHdlcmUgZ29uZSB1cCB0byBNaXpwZWguKSBUaGVuIHNhaWQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgVGVsbCB1cywgaG93IHdhcyB0aGlzIHdpY2tlZG5lc3M/CkFuZCB0aGUgTGV2aXRlLCB0aGUgaHVzYmFuZCBvZiB0aGUgd29tYW4gdGhhdCB3YXMgc2xhaW4sIGFuc3dlcmVkIGFuZCBzYWlkLCBJIGNhbWUgaW50byBHaWJlYWggdGhhdCBiZWxvbmdldGggdG8gQmVuamFtaW4sIEkgYW5kIG15IGNvbmN1YmluZSwgdG8gbG9kZ2UuCkFuZCB0aGUgbWVuIG9mIEdpYmVhaCByb3NlIGFnYWluc3QgbWUsIGFuZCBiZXNldCB0aGUgaG91c2Ugcm91bmQgYWJvdXQgdXBvbiBtZSBieSBuaWdodCwgYW5kIHRob3VnaHQgdG8gaGF2ZSBzbGFpbiBtZTogYW5kIG15IGNvbmN1YmluZSBoYXZlIHRoZXkgZm9yY2VkLCB0aGF0IHNoZSBpcyBkZWFkLgpBbmQgSSB0b29rIG15IGNvbmN1YmluZSwgYW5kIGN1dCBoZXIgaW4gcGllY2VzLCBhbmQgc2VudCBoZXIgdGhyb3VnaG91dCBhbGwgdGhlIGNvdW50cnkgb2YgdGhlIGluaGVyaXRhbmNlIG9mIElzcmFlbDogZm9yIHRoZXkgaGF2ZSBjb21taXR0ZWQgbGV3ZG5lc3MgYW5kIGZvbGx5IGluIElzcmFlbC4KQmVob2xkLCB5ZSBhcmUgYWxsIGNoaWxkcmVuIG9mIElzcmFlbDsgZ2l2ZSBoZXJlIHlvdXIgYWR2aWNlIGFuZCBjb3Vuc2VsLgpBbmQgYWxsIHRoZSBwZW9wbGUgYXJvc2UgYXMgb25lIG1hbiwgc2F5aW5nLCBXZSB3aWxsIG5vdCBhbnkgb2YgdXMgZ28gdG8gaGlzIHRlbnQsIG5laXRoZXIgd2lsbCB3ZSBhbnkgb2YgdXMgdHVybiBpbnRvIGhpcyBob3VzZS4KQnV0IG5vdyB0aGlzIHNoYWxsIGJlIHRoZSB0aGluZyB3aGljaCB3ZSB3aWxsIGRvIHRvIEdpYmVhaDsgd2Ugd2lsbCBnbyB1cCBieSBsb3QgYWdhaW5zdCBpdDsKQW5kIHdlIHdpbGwgdGFrZSB0ZW4gbWVuIG9mIGFuIGh1bmRyZWQgdGhyb3VnaG91dCBhbGwgdGhlIHRyaWJlcyBvZiBJc3JhZWwsIGFuZCBhbiBodW5kcmVkIG9mIGEgdGhvdXNhbmQsIGFuZCBhIHRob3VzYW5kIG91dCBvZiB0ZW4gdGhvdXNhbmQsIHRvIGZldGNoIHZpY3R1YWwgZm9yIHRoZSBwZW9wbGUsIHRoYXQgdGhleSBtYXkgZG8sIHdoZW4gdGhleSBjb21lIHRvIEdpYmVhaCBvZiBCZW5qYW1pbiwgYWNjb3JkaW5nIHRvIGFsbCB0aGUgZm9sbHkgdGhhdCB0aGV5IGhhdmUgd3JvdWdodCBpbiBJc3JhZWwuClNvIGFsbCB0aGUgbWVuIG9mIElzcmFlbCB3ZXJlIGdhdGhlcmVkIGFnYWluc3QgdGhlIGNpdHksIGtuaXQgdG9nZXRoZXIgYXMgb25lIG1hbi4KQW5kIHRoZSB0cmliZXMgb2YgSXNyYWVsIHNlbnQgbWVuIHRocm91Z2ggYWxsIHRoZSB0cmliZSBvZiBCZW5qYW1pbiwgc2F5aW5nLCBXaGF0IHdpY2tlZG5lc3MgaXMgdGhpcyB0aGF0IGlzIGRvbmUgYW1vbmcgeW91PwpOb3cgdGhlcmVmb3JlIGRlbGl2ZXIgdXMgdGhlIG1lbiwgdGhlIGNoaWxkcmVuIG9mIEJlbGlhbCwgd2hpY2ggYXJlIGluIEdpYmVhaCwgdGhhdCB3ZSBtYXkgcHV0IHRoZW0gdG8gZGVhdGgsIGFuZCBwdXQgYXdheSBldmlsIGZyb20gSXNyYWVsLiBCdXQgdGhlIGNoaWxkcmVuIG9mIEJlbmphbWluIHdvdWxkIG5vdCBoZWFya2VuIHRvIHRoZSB2b2ljZSBvZiB0aGVpciBicmV0aHJlbiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLgpCdXQgdGhlIGNoaWxkcmVuIG9mIEJlbmphbWluIGdhdGhlcmVkIHRoZW1zZWx2ZXMgdG9nZXRoZXIgb3V0IG9mIHRoZSBjaXRpZXMgdW50byBHaWJlYWgsIHRvIGdvIG91dCB0byBiYXR0bGUgYWdhaW5zdCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLgpBbmQgdGhlIGNoaWxkcmVuIG9mIEJlbmphbWluIHdlcmUgbnVtYmVyZWQgYXQgdGhhdCB0aW1lIG91dCBvZiB0aGUgY2l0aWVzIHR3ZW50eSBhbmQgc2l4IHRob3VzYW5kIG1lbiB0aGF0IGRyZXcgc3dvcmQsIGJlc2lkZSB0aGUgaW5oYWJpdGFudHMgb2YgR2liZWFoLCB3aGljaCB3ZXJlIG51bWJlcmVkIHNldmVuIGh1bmRyZWQgY2hvc2VuIG1lbi4KQW1vbmcgYWxsIHRoaXMgcGVvcGxlIHRoZXJlIHdlcmUgc2V2ZW4gaHVuZHJlZCBjaG9zZW4gbWVuIGxlZnRoYW5kZWQ7IGV2ZXJ5IG9uZSBjb3VsZCBzbGluZyBzdG9uZXMgYXQgYW4gaGFpciBicmVhZHRoLCBhbmQgbm90IG1pc3MuCkFuZCB0aGUgbWVuIG9mIElzcmFlbCwgYmVzaWRlIEJlbmphbWluLCB3ZXJlIG51bWJlcmVkIGZvdXIgaHVuZHJlZCB0aG91c2FuZCBtZW4gdGhhdCBkcmV3IHN3b3JkOiBhbGwgdGhlc2Ugd2VyZSBtZW4gb2Ygd2FyLgpBbmQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBhcm9zZSwgYW5kIHdlbnQgdXAgdG8gdGhlIGhvdXNlIG9mIEdvZCwgYW5kIGFza2VkIGNvdW5zZWwgb2YgR29kLCBhbmQgc2FpZCwgV2hpY2ggb2YgdXMgc2hhbGwgZ28gdXAgZmlyc3QgdG8gdGhlIGJhdHRsZSBhZ2FpbnN0IHRoZSBjaGlsZHJlbiBvZiBCZW5qYW1pbj8gQW5kIHRoZSBMT1JEIHNhaWQsIEp1ZGFoIHNoYWxsIGdvIHVwIGZpcnN0LgpBbmQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCByb3NlIHVwIGluIHRoZSBtb3JuaW5nLCBhbmQgZW5jYW1wZWQgYWdhaW5zdCBHaWJlYWguCkFuZCB0aGUgbWVuIG9mIElzcmFlbCB3ZW50IG91dCB0byBiYXR0bGUgYWdhaW5zdCBCZW5qYW1pbjsgYW5kIHRoZSBtZW4gb2YgSXNyYWVsIHB1dCB0aGVtc2VsdmVzIGluIGFycmF5IHRvIGZpZ2h0IGFnYWluc3QgdGhlbSBhdCBHaWJlYWguCkFuZCB0aGUgY2hpbGRyZW4gb2YgQmVuamFtaW4gY2FtZSBmb3J0aCBvdXQgb2YgR2liZWFoLCBhbmQgZGVzdHJveWVkIGRvd24gdG8gdGhlIGdyb3VuZCBvZiB0aGUgSXNyYWVsaXRlcyB0aGF0IGRheSB0d2VudHkgYW5kIHR3byB0aG91c2FuZCBtZW4uCkFuZCB0aGUgcGVvcGxlIHRoZSBtZW4gb2YgSXNyYWVsIGVuY291cmFnZWQgdGhlbXNlbHZlcywgYW5kIHNldCB0aGVpciBiYXR0bGUgYWdhaW4gaW4gYXJyYXkgaW4gdGhlIHBsYWNlIHdoZXJlIHRoZXkgcHV0IHRoZW1zZWx2ZXMgaW4gYXJyYXkgdGhlIGZpcnN0IGRheS4KKEFuZCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIHdlbnQgdXAgYW5kIHdlcHQgYmVmb3JlIHRoZSBMT1JEIHVudGlsIGV2ZW4sIGFuZCBhc2tlZCBjb3Vuc2VsIG9mIHRoZSBMT1JELCBzYXlpbmcsIFNoYWxsIEkgZ28gdXAgYWdhaW4gdG8gYmF0dGxlIGFnYWluc3QgdGhlIGNoaWxkcmVuIG9mIEJlbmphbWluIG15IGJyb3RoZXI/IEFuZCB0aGUgTE9SRCBzYWlkLCBHbyB1cCBhZ2FpbnN0IGhpbS4pCkFuZCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGNhbWUgbmVhciBhZ2FpbnN0IHRoZSBjaGlsZHJlbiBvZiBCZW5qYW1pbiB0aGUgc2Vjb25kIGRheS4KQW5kIEJlbmphbWluIHdlbnQgZm9ydGggYWdhaW5zdCB0aGVtIG91dCBvZiBHaWJlYWggdGhlIHNlY29uZCBkYXksIGFuZCBkZXN0cm95ZWQgZG93biB0byB0aGUgZ3JvdW5kIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgYWdhaW4gZWlnaHRlZW4gdGhvdXNhbmQgbWVuOyBhbGwgdGhlc2UgZHJldyB0aGUgc3dvcmQuClRoZW4gYWxsIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIGFuZCBhbGwgdGhlIHBlb3BsZSwgd2VudCB1cCwgYW5kIGNhbWUgdW50byB0aGUgaG91c2Ugb2YgR29kLCBhbmQgd2VwdCwgYW5kIHNhdCB0aGVyZSBiZWZvcmUgdGhlIExPUkQsIGFuZCBmYXN0ZWQgdGhhdCBkYXkgdW50aWwgZXZlbiwgYW5kIG9mZmVyZWQgYnVybnQgb2ZmZXJpbmdzIGFuZCBwZWFjZSBvZmZlcmluZ3MgYmVmb3JlIHRoZSBMT1JELgpBbmQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBlbnF1aXJlZCBvZiB0aGUgTE9SRCwgKGZvciB0aGUgYXJrIG9mIHRoZSBjb3ZlbmFudCBvZiBHb2Qgd2FzIHRoZXJlIGluIHRob3NlIGRheXMsCkFuZCBQaGluZWhhcywgdGhlIHNvbiBvZiBFbGVhemFyLCB0aGUgc29uIG9mIEFhcm9uLCBzdG9vZCBiZWZvcmUgaXQgaW4gdGhvc2UgZGF5cywpIHNheWluZywgU2hhbGwgSSB5ZXQgYWdhaW4gZ28gb3V0IHRvIGJhdHRsZSBhZ2FpbnN0IHRoZSBjaGlsZHJlbiBvZiBCZW5qYW1pbiBteSBicm90aGVyLCBvciBzaGFsbCBJIGNlYXNlPyBBbmQgdGhlIExPUkQgc2FpZCwgR28gdXA7IGZvciB0byBtb3Jyb3cgSSB3aWxsIGRlbGl2ZXIgdGhlbSBpbnRvIHRoaW5lIGhhbmQuCkFuZCBJc3JhZWwgc2V0IGxpZXJzIGluIHdhaXQgcm91bmQgYWJvdXQgR2liZWFoLgpBbmQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCB3ZW50IHVwIGFnYWluc3QgdGhlIGNoaWxkcmVuIG9mIEJlbmphbWluIG9uIHRoZSB0aGlyZCBkYXksIGFuZCBwdXQgdGhlbXNlbHZlcyBpbiBhcnJheSBhZ2FpbnN0IEdpYmVhaCwgYXMgYXQgb3RoZXIgdGltZXMuCkFuZCB0aGUgY2hpbGRyZW4gb2YgQmVuamFtaW4gd2VudCBvdXQgYWdhaW5zdCB0aGUgcGVvcGxlLCBhbmQgd2VyZSBkcmF3biBhd2F5IGZyb20gdGhlIGNpdHk7IGFuZCB0aGV5IGJlZ2FuIHRvIHNtaXRlIG9mIHRoZSBwZW9wbGUsIGFuZCBraWxsLCBhcyBhdCBvdGhlciB0aW1lcywgaW4gdGhlIGhpZ2h3YXlzLCBvZiB3aGljaCBvbmUgZ29ldGggdXAgdG8gdGhlIGhvdXNlIG9mIEdvZCwgYW5kIHRoZSBvdGhlciB0byBHaWJlYWggaW4gdGhlIGZpZWxkLCBhYm91dCB0aGlydHkgbWVuIG9mIElzcmFlbC4KQW5kIHRoZSBjaGlsZHJlbiBvZiBCZW5qYW1pbiBzYWlkLCBUaGV5IGFyZSBzbWl0dGVuIGRvd24gYmVmb3JlIHVzLCBhcyBhdCB0aGUgZmlyc3QuIEJ1dCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIHNhaWQsIExldCB1cyBmbGVlLCBhbmQgZHJhdyB0aGVtIGZyb20gdGhlIGNpdHkgdW50byB0aGUgaGlnaHdheXMuCkFuZCBhbGwgdGhlIG1lbiBvZiBJc3JhZWwgcm9zZSB1cCBvdXQgb2YgdGhlaXIgcGxhY2UsIGFuZCBwdXQgdGhlbXNlbHZlcyBpbiBhcnJheSBhdCBCYWFsdGFtYXI6IGFuZCB0aGUgbGllcnMgaW4gd2FpdCBvZiBJc3JhZWwgY2FtZSBmb3J0aCBvdXQgb2YgdGhlaXIgcGxhY2VzLCBldmVuIG91dCBvZiB0aGUgbWVhZG93cyBvZiBHaWJlYWguCkFuZCB0aGVyZSBjYW1lIGFnYWluc3QgR2liZWFoIHRlbiB0aG91c2FuZCBjaG9zZW4gbWVuIG91dCBvZiBhbGwgSXNyYWVsLCBhbmQgdGhlIGJhdHRsZSB3YXMgc29yZTogYnV0IHRoZXkga25ldyBub3QgdGhhdCBldmlsIHdhcyBuZWFyIHRoZW0uCkFuZCB0aGUgTE9SRCBzbW90ZSBCZW5qYW1pbiBiZWZvcmUgSXNyYWVsOiBhbmQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBkZXN0cm95ZWQgb2YgdGhlIEJlbmphbWl0ZXMgdGhhdCBkYXkgdHdlbnR5IGFuZCBmaXZlIHRob3VzYW5kIGFuZCBhbiBodW5kcmVkIG1lbjogYWxsIHRoZXNlIGRyZXcgdGhlIHN3b3JkLgpTbyB0aGUgY2hpbGRyZW4gb2YgQmVuamFtaW4gc2F3IHRoYXQgdGhleSB3ZXJlIHNtaXR0ZW46IGZvciB0aGUgbWVuIG9mIElzcmFlbCBnYXZlIHBsYWNlIHRvIHRoZSBCZW5qYW1pdGVzLCBiZWNhdXNlIHRoZXkgdHJ1c3RlZCB1bnRvIHRoZSBsaWVycyBpbiB3YWl0IHdoaWNoIHRoZXkgaGFkIHNldCBiZXNpZGUgR2liZWFoLgpBbmQgdGhlIGxpZXJzIGluIHdhaXQgaGFzdGVkLCBhbmQgcnVzaGVkIHVwb24gR2liZWFoOyBhbmQgdGhlIGxpZXJzIGluIHdhaXQgZHJldyB0aGVtc2VsdmVzIGFsb25nLCBhbmQgc21vdGUgYWxsIHRoZSBjaXR5IHdpdGggdGhlIGVkZ2Ugb2YgdGhlIHN3b3JkLgpOb3cgdGhlcmUgd2FzIGFuIGFwcG9pbnRlZCBzaWduIGJldHdlZW4gdGhlIG1lbiBvZiBJc3JhZWwgYW5kIHRoZSBsaWVycyBpbiB3YWl0LCB0aGF0IHRoZXkgc2hvdWxkIG1ha2UgYSBncmVhdCBmbGFtZSB3aXRoIHNtb2tlIHJpc2UgdXAgb3V0IG9mIHRoZSBjaXR5LgpBbmQgd2hlbiB0aGUgbWVuIG9mIElzcmFlbCByZXRpcmVkIGluIHRoZSBiYXR0bGUsIEJlbmphbWluIGJlZ2FuIHRvIHNtaXRlIGFuZCBraWxsIG9mIHRoZSBtZW4gb2YgSXNyYWVsIGFib3V0IHRoaXJ0eSBwZXJzb25zOiBmb3IgdGhleSBzYWlkLCBTdXJlbHkgdGhleSBhcmUgc21pdHRlbiBkb3duIGJlZm9yZSB1cywgYXMgaW4gdGhlIGZpcnN0IGJhdHRsZS4KQnV0IHdoZW4gdGhlIGZsYW1lIGJlZ2FuIHRvIGFyaXNlIHVwIG91dCBvZiB0aGUgY2l0eSB3aXRoIGEgcGlsbGFyIG9mIHNtb2tlLCB0aGUgQmVuamFtaXRlcyBsb29rZWQgYmVoaW5kIHRoZW0sIGFuZCwgYmVob2xkLCB0aGUgZmxhbWUgb2YgdGhlIGNpdHkgYXNjZW5kZWQgdXAgdG8gaGVhdmVuLgpBbmQgd2hlbiB0aGUgbWVuIG9mIElzcmFlbCB0dXJuZWQgYWdhaW4sIHRoZSBtZW4gb2YgQmVuamFtaW4gd2VyZSBhbWF6ZWQ6IGZvciB0aGV5IHNhdyB0aGF0IGV2aWwgd2FzIGNvbWUgdXBvbiB0aGVtLgpUaGVyZWZvcmUgdGhleSB0dXJuZWQgdGhlaXIgYmFja3MgYmVmb3JlIHRoZSBtZW4gb2YgSXNyYWVsIHVudG8gdGhlIHdheSBvZiB0aGUgd2lsZGVybmVzczsgYnV0IHRoZSBiYXR0bGUgb3ZlcnRvb2sgdGhlbTsgYW5kIHRoZW0gd2hpY2ggY2FtZSBvdXQgb2YgdGhlIGNpdGllcyB0aGV5IGRlc3Ryb3llZCBpbiB0aGUgbWlkc3Qgb2YgdGhlbS4KVGh1cyB0aGV5IGluY2xvc2VkIHRoZSBCZW5qYW1pdGVzIHJvdW5kIGFib3V0LCBhbmQgY2hhc2VkIHRoZW0sIGFuZCB0cm9kZSB0aGVtIGRvd24gd2l0aCBlYXNlIG92ZXIgYWdhaW5zdCBHaWJlYWggdG93YXJkIHRoZSBzdW5yaXNpbmcuCkFuZCB0aGVyZSBmZWxsIG9mIEJlbmphbWluIGVpZ2h0ZWVuIHRob3VzYW5kIG1lbjsgYWxsIHRoZXNlIHdlcmUgbWVuIG9mIHZhbG91ci4KQW5kIHRoZXkgdHVybmVkIGFuZCBmbGVkIHRvd2FyZCB0aGUgd2lsZGVybmVzcyB1bnRvIHRoZSByb2NrIG9mIFJpbW1vbjogYW5kIHRoZXkgZ2xlYW5lZCBvZiB0aGVtIGluIHRoZSBoaWdod2F5cyBmaXZlIHRob3VzYW5kIG1lbjsgYW5kIHB1cnN1ZWQgaGFyZCBhZnRlciB0aGVtIHVudG8gR2lkb20sIGFuZCBzbGV3IHR3byB0aG91c2FuZCBtZW4gb2YgdGhlbS4KU28gdGhhdCBhbGwgd2hpY2ggZmVsbCB0aGF0IGRheSBvZiBCZW5qYW1pbiB3ZXJlIHR3ZW50eSBhbmQgZml2ZSB0aG91c2FuZCBtZW4gdGhhdCBkcmV3IHRoZSBzd29yZDsgYWxsIHRoZXNlIHdlcmUgbWVuIG9mIHZhbG91ci4KQnV0IHNpeCBodW5kcmVkIG1lbiB0dXJuZWQgYW5kIGZsZWQgdG8gdGhlIHdpbGRlcm5lc3MgdW50byB0aGUgcm9jayBSaW1tb24sIGFuZCBhYm9kZSBpbiB0aGUgcm9jayBSaW1tb24gZm91ciBtb250aHMuCkFuZCB0aGUgbWVuIG9mIElzcmFlbCB0dXJuZWQgYWdhaW4gdXBvbiB0aGUgY2hpbGRyZW4gb2YgQmVuamFtaW4sIGFuZCBzbW90ZSB0aGVtIHdpdGggdGhlIGVkZ2Ugb2YgdGhlIHN3b3JkLCBhcyB3ZWxsIHRoZSBtZW4gb2YgZXZlcnkgY2l0eSwgYXMgdGhlIGJlYXN0LCBhbmQgYWxsIHRoYXQgY2FtZSB0byBoYW5kOiBhbHNvIHRoZXkgc2V0IG9uIGZpcmUgYWxsIHRoZSBjaXRpZXMgdGhhdCB0aGV5IGNhbWUgdG8uCk5vdyB0aGUgbWVuIG9mIElzcmFlbCBoYWQgc3dvcm4gaW4gTWl6cGVoLCBzYXlpbmcsIFRoZXJlIHNoYWxsIG5vdCBhbnkgb2YgdXMgZ2l2ZSBoaXMgZGF1Z2h0ZXIgdW50byBCZW5qYW1pbiB0byB3aWZlLgpBbmQgdGhlIHBlb3BsZSBjYW1lIHRvIHRoZSBob3VzZSBvZiBHb2QsIGFuZCBhYm9kZSB0aGVyZSB0aWxsIGV2ZW4gYmVmb3JlIEdvZCwgYW5kIGxpZnRlZCB1cCB0aGVpciB2b2ljZXMsIGFuZCB3ZXB0IHNvcmU7CkFuZCBzYWlkLCBPIExPUkQgR29kIG9mIElzcmFlbCwgd2h5IGlzIHRoaXMgY29tZSB0byBwYXNzIGluIElzcmFlbCwgdGhhdCB0aGVyZSBzaG91bGQgYmUgdG8gZGF5IG9uZSB0cmliZSBsYWNraW5nIGluIElzcmFlbD8KQW5kIGl0IGNhbWUgdG8gcGFzcyBvbiB0aGUgbW9ycm93LCB0aGF0IHRoZSBwZW9wbGUgcm9zZSBlYXJseSwgYW5kIGJ1aWx0IHRoZXJlIGFuIGFsdGFyLCBhbmQgb2ZmZXJlZCBidXJudCBvZmZlcmluZ3MgYW5kIHBlYWNlIG9mZmVyaW5ncy4KQW5kIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgc2FpZCwgV2hvIGlzIHRoZXJlIGFtb25nIGFsbCB0aGUgdHJpYmVzIG9mIElzcmFlbCB0aGF0IGNhbWUgbm90IHVwIHdpdGggdGhlIGNvbmdyZWdhdGlvbiB1bnRvIHRoZSBMT1JEPyBGb3IgdGhleSBoYWQgbWFkZSBhIGdyZWF0IG9hdGggY29uY2VybmluZyBoaW0gdGhhdCBjYW1lIG5vdCB1cCB0byB0aGUgTE9SRCB0byBNaXpwZWgsIHNheWluZywgSGUgc2hhbGwgc3VyZWx5IGJlIHB1dCB0byBkZWF0aC4KQW5kIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgcmVwZW50ZWQgdGhlbSBmb3IgQmVuamFtaW4gdGhlaXIgYnJvdGhlciwgYW5kIHNhaWQsIFRoZXJlIGlzIG9uZSB0cmliZSBjdXQgb2ZmIGZyb20gSXNyYWVsIHRoaXMgZGF5LgpIb3cgc2hhbGwgd2UgZG8gZm9yIHdpdmVzIGZvciB0aGVtIHRoYXQgcmVtYWluLCBzZWVpbmcgd2UgaGF2ZSBzd29ybiBieSB0aGUgTE9SRCB0aGF0IHdlIHdpbGwgbm90IGdpdmUgdGhlbSBvZiBvdXIgZGF1Z2h0ZXJzIHRvIHdpdmVzPwpBbmQgdGhleSBzYWlkLCBXaGF0IG9uZSBpcyB0aGVyZSBvZiB0aGUgdHJpYmVzIG9mIElzcmFlbCB0aGF0IGNhbWUgbm90IHVwIHRvIE1penBlaCB0byB0aGUgTE9SRD8gQW5kLCBiZWhvbGQsIHRoZXJlIGNhbWUgbm9uZSB0byB0aGUgY2FtcCBmcm9tIEphYmVzaGdpbGVhZCB0byB0aGUgYXNzZW1ibHkuCkZvciB0aGUgcGVvcGxlIHdlcmUgbnVtYmVyZWQsIGFuZCwgYmVob2xkLCB0aGVyZSB3ZXJlIG5vbmUgb2YgdGhlIGluaGFiaXRhbnRzIG9mIEphYmVzaGdpbGVhZCB0aGVyZS4KQW5kIHRoZSBjb25ncmVnYXRpb24gc2VudCB0aGl0aGVyIHR3ZWx2ZSB0aG91c2FuZCBtZW4gb2YgdGhlIHZhbGlhbnRlc3QsIGFuZCBjb21tYW5kZWQgdGhlbSwgc2F5aW5nLCBHbyBhbmQgc21pdGUgdGhlIGluaGFiaXRhbnRzIG9mIEphYmVzaGdpbGVhZCB3aXRoIHRoZSBlZGdlIG9mIHRoZSBzd29yZCwgd2l0aCB0aGUgd29tZW4gYW5kIHRoZSBjaGlsZHJlbi4KQW5kIHRoaXMgaXMgdGhlIHRoaW5nIHRoYXQgeWUgc2hhbGwgZG8sIFllIHNoYWxsIHV0dGVybHkgZGVzdHJveSBldmVyeSBtYWxlLCBhbmQgZXZlcnkgd29tYW4gdGhhdCBoYXRoIGxhaW4gYnkgbWFuLgpBbmQgdGhleSBmb3VuZCBhbW9uZyB0aGUgaW5oYWJpdGFudHMgb2YgSmFiZXNoZ2lsZWFkIGZvdXIgaHVuZHJlZCB5b3VuZyB2aXJnaW5zLCB0aGF0IGhhZCBrbm93biBubyBtYW4gYnkgbHlpbmcgd2l0aCBhbnkgbWFsZTogYW5kIHRoZXkgYnJvdWdodCB0aGVtIHVudG8gdGhlIGNhbXAgdG8gU2hpbG9oLCB3aGljaCBpcyBpbiB0aGUgbGFuZCBvZiBDYW5hYW4uCkFuZCB0aGUgd2hvbGUgY29uZ3JlZ2F0aW9uIHNlbnQgc29tZSB0byBzcGVhayB0byB0aGUgY2hpbGRyZW4gb2YgQmVuamFtaW4gdGhhdCB3ZXJlIGluIHRoZSByb2NrIFJpbW1vbiwgYW5kIHRvIGNhbGwgcGVhY2VhYmx5IHVudG8gdGhlbS4KQW5kIEJlbmphbWluIGNhbWUgYWdhaW4gYXQgdGhhdCB0aW1lOyBhbmQgdGhleSBnYXZlIHRoZW0gd2l2ZXMgd2hpY2ggdGhleSBoYWQgc2F2ZWQgYWxpdmUgb2YgdGhlIHdvbWVuIG9mIEphYmVzaGdpbGVhZDogYW5kIHlldCBzbyB0aGV5IHN1ZmZpY2VkIHRoZW0gbm90LgpBbmQgdGhlIHBlb3BsZSByZXBlbnRlZCB0aGVtIGZvciBCZW5qYW1pbiwgYmVjYXVzZSB0aGF0IHRoZSBMT1JEIGhhZCBtYWRlIGEgYnJlYWNoIGluIHRoZSB0cmliZXMgb2YgSXNyYWVsLgpUaGVuIHRoZSBlbGRlcnMgb2YgdGhlIGNvbmdyZWdhdGlvbiBzYWlkLCBIb3cgc2hhbGwgd2UgZG8gZm9yIHdpdmVzIGZvciB0aGVtIHRoYXQgcmVtYWluLCBzZWVpbmcgdGhlIHdvbWVuIGFyZSBkZXN0cm95ZWQgb3V0IG9mIEJlbmphbWluPwpBbmQgdGhleSBzYWlkLCBUaGVyZSBtdXN0IGJlIGFuIGluaGVyaXRhbmNlIGZvciB0aGVtIHRoYXQgYmUgZXNjYXBlZCBvZiBCZW5qYW1pbiwgdGhhdCBhIHRyaWJlIGJlIG5vdCBkZXN0cm95ZWQgb3V0IG9mIElzcmFlbC4KSG93YmVpdCB3ZSBtYXkgbm90IGdpdmUgdGhlbSB3aXZlcyBvZiBvdXIgZGF1Z2h0ZXJzOiBmb3IgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBoYXZlIHN3b3JuLCBzYXlpbmcsIEN1cnNlZCBiZSBoZSB0aGF0IGdpdmV0aCBhIHdpZmUgdG8gQmVuamFtaW4uClRoZW4gdGhleSBzYWlkLCBCZWhvbGQsIHRoZXJlIGlzIGEgZmVhc3Qgb2YgdGhlIExPUkQgaW4gU2hpbG9oIHllYXJseSBpbiBhIHBsYWNlIHdoaWNoIGlzIG9uIHRoZSBub3J0aCBzaWRlIG9mIEJldGhlbCwgb24gdGhlIGVhc3Qgc2lkZSBvZiB0aGUgaGlnaHdheSB0aGF0IGdvZXRoIHVwIGZyb20gQmV0aGVsIHRvIFNoZWNoZW0sIGFuZCBvbiB0aGUgc291dGggb2YgTGVib25haC4KVGhlcmVmb3JlIHRoZXkgY29tbWFuZGVkIHRoZSBjaGlsZHJlbiBvZiBCZW5qYW1pbiwgc2F5aW5nLCBHbyBhbmQgbGllIGluIHdhaXQgaW4gdGhlIHZpbmV5YXJkczsKQW5kIHNlZSwgYW5kLCBiZWhvbGQsIGlmIHRoZSBkYXVnaHRlcnMgb2YgU2hpbG9oIGNvbWUgb3V0IHRvIGRhbmNlIGluIGRhbmNlcywgdGhlbiBjb21lIHllIG91dCBvZiB0aGUgdmluZXlhcmRzLCBhbmQgY2F0Y2ggeW91IGV2ZXJ5IG1hbiBoaXMgd2lmZSBvZiB0aGUgZGF1Z2h0ZXJzIG9mIFNoaWxvaCwgYW5kIGdvIHRvIHRoZSBsYW5kIG9mIEJlbmphbWluLgpBbmQgaXQgc2hhbGwgYmUsIHdoZW4gdGhlaXIgZmF0aGVycyBvciB0aGVpciBicmV0aHJlbiBjb21lIHVudG8gdXMgdG8gY29tcGxhaW4sIHRoYXQgd2Ugd2lsbCBzYXkgdW50byB0aGVtLCBCZSBmYXZvdXJhYmxlIHVudG8gdGhlbSBmb3Igb3VyIHNha2VzOiBiZWNhdXNlIHdlIHJlc2VydmVkIG5vdCB0byBlYWNoIG1hbiBoaXMgd2lmZSBpbiB0aGUgd2FyOiBmb3IgeWUgZGlkIG5vdCBnaXZlIHVudG8gdGhlbSBhdCB0aGlzIHRpbWUsIHRoYXQgeWUgc2hvdWxkIGJlIGd1aWx0eS4KQW5kIHRoZSBjaGlsZHJlbiBvZiBCZW5qYW1pbiBkaWQgc28sIGFuZCB0b29rIHRoZW0gd2l2ZXMsIGFjY29yZGluZyB0byB0aGVpciBudW1iZXIsIG9mIHRoZW0gdGhhdCBkYW5jZWQsIHdob20gdGhleSBjYXVnaHQ6IGFuZCB0aGV5IHdlbnQgYW5kIHJldHVybmVkIHVudG8gdGhlaXIgaW5oZXJpdGFuY2UsIGFuZCByZXBhaXJlZCB0aGUgY2l0aWVzLCBhbmQgZHdlbHQgaW4gdGhlbS4KQW5kIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgZGVwYXJ0ZWQgdGhlbmNlIGF0IHRoYXQgdGltZSwgZXZlcnkgbWFuIHRvIGhpcyB0cmliZSBhbmQgdG8gaGlzIGZhbWlseSwgYW5kIHRoZXkgd2VudCBvdXQgZnJvbSB0aGVuY2UgZXZlcnkgbWFuIHRvIGhpcyBpbmhlcml0YW5jZS4KSW4gdGhvc2UgZGF5cyB0aGVyZSB3YXMgbm8ga2luZyBpbiBJc3JhZWw6IGV2ZXJ5IG1hbiBkaWQgdGhhdCB3aGljaCB3YXMgcmlnaHQgaW4gaGlzIG93biBleWVzLgpOb3cgaXQgY2FtZSB0byBwYXNzIGluIHRoZSBkYXlzIHdoZW4gdGhlIGp1ZGdlcyBydWxlZCwgdGhhdCB0aGVyZSB3YXMgYSBmYW1pbmUgaW4gdGhlIGxhbmQuIEFuZCBhIGNlcnRhaW4gbWFuIG9mIEJldGhsZWhlbWp1ZGFoIHdlbnQgdG8gc29qb3VybiBpbiB0aGUgY291bnRyeSBvZiBNb2FiLCBoZSwgYW5kIGhpcyB3aWZlLCBhbmQgaGlzIHR3byBzb25zLgpBbmQgdGhlIG5hbWUgb2YgdGhlIG1hbiB3YXMgRWxpbWVsZWNoLCBhbmQgdGhlIG5hbWUgb2YgaGlzIHdpZmUgTmFvbWksIGFuZCB0aGUgbmFtZSBvZiBoaXMgdHdvIHNvbnMgTWFobG9uIGFuZCBDaGlsaW9uLCBFcGhyYXRoaXRlcyBvZiBCZXRobGVoZW1qdWRhaC4gQW5kIHRoZXkgY2FtZSBpbnRvIHRoZSBjb3VudHJ5IG9mIE1vYWIsIGFuZCBjb250aW51ZWQgdGhlcmUuCkFuZCBFbGltZWxlY2ggTmFvbWkncyBodXNiYW5kIGRpZWQ7IGFuZCBzaGUgd2FzIGxlZnQsIGFuZCBoZXIgdHdvIHNvbnMuCkFuZCB0aGV5IHRvb2sgdGhlbSB3aXZlcyBvZiB0aGUgd29tZW4gb2YgTW9hYjsgdGhlIG5hbWUgb2YgdGhlIG9uZSB3YXMgT3JwYWgsIGFuZCB0aGUgbmFtZSBvZiB0aGUgb3RoZXIgUnV0aDogYW5kIHRoZXkgZHdlbGxlZCB0aGVyZSBhYm91dCB0ZW4geWVhcnMuCkFuZCBNYWhsb24gYW5kIENoaWxpb24gZGllZCBhbHNvIGJvdGggb2YgdGhlbTsgYW5kIHRoZSB3b21hbiB3YXMgbGVmdCBvZiBoZXIgdHdvIHNvbnMgYW5kIGhlciBodXNiYW5kLgpUaGVuIHNoZSBhcm9zZSB3aXRoIGhlciBkYXVnaHRlcnMgaW4gbGF3LCB0aGF0IHNoZSBtaWdodCByZXR1cm4gZnJvbSB0aGUgY291bnRyeSBvZiBNb2FiOiBmb3Igc2hlIGhhZCBoZWFyZCBpbiB0aGUgY291bnRyeSBvZiBNb2FiIGhvdyB0aGF0IHRoZSBMT1JEIGhhZCB2aXNpdGVkIGhpcyBwZW9wbGUgaW4gZ2l2aW5nIHRoZW0gYnJlYWQuCldoZXJlZm9yZSBzaGUgd2VudCBmb3J0aCBvdXQgb2YgdGhlIHBsYWNlIHdoZXJlIHNoZSB3YXMsIGFuZCBoZXIgdHdvIGRhdWdodGVycyBpbiBsYXcgd2l0aCBoZXI7IGFuZCB0aGV5IHdlbnQgb24gdGhlIHdheSB0byByZXR1cm4gdW50byB0aGUgbGFuZCBvZiBKdWRhaC4KQW5kIE5hb21pIHNhaWQgdW50byBoZXIgdHdvIGRhdWdodGVycyBpbiBsYXcsIEdvLCByZXR1cm4gZWFjaCB0byBoZXIgbW90aGVyJ3MgaG91c2U6IHRoZSBMT1JEIGRlYWwga2luZGx5IHdpdGggeW91LCBhcyB5ZSBoYXZlIGRlYWx0IHdpdGggdGhlIGRlYWQsIGFuZCB3aXRoIG1lLgpUaGUgTE9SRCBncmFudCB5b3UgdGhhdCB5ZSBtYXkgZmluZCByZXN0LCBlYWNoIG9mIHlvdSBpbiB0aGUgaG91c2Ugb2YgaGVyIGh1c2JhbmQuIFRoZW4gc2hlIGtpc3NlZCB0aGVtOyBhbmQgdGhleSBsaWZ0ZWQgdXAgdGhlaXIgdm9pY2UsIGFuZCB3ZXB0LgpBbmQgdGhleSBzYWlkIHVudG8gaGVyLCBTdXJlbHkgd2Ugd2lsbCByZXR1cm4gd2l0aCB0aGVlIHVudG8gdGh5IHBlb3BsZS4KQW5kIE5hb21pIHNhaWQsIFR1cm4gYWdhaW4sIG15IGRhdWdodGVyczogd2h5IHdpbGwgeWUgZ28gd2l0aCBtZT8gYXJlIHRoZXJlIHlldCBhbnkgbW9yZSBzb25zIGluIG15IHdvbWIsIHRoYXQgdGhleSBtYXkgYmUgeW91ciBodXNiYW5kcz8KVHVybiBhZ2FpbiwgbXkgZGF1Z2h0ZXJzLCBnbyB5b3VyIHdheTsgZm9yIEkgYW0gdG9vIG9sZCB0byBoYXZlIGFuIGh1c2JhbmQuIElmIEkgc2hvdWxkIHNheSwgSSBoYXZlIGhvcGUsIGlmIEkgc2hvdWxkIGhhdmUgYW4gaHVzYmFuZCBhbHNvIHRvIG5pZ2h0LCBhbmQgc2hvdWxkIGFsc28gYmVhciBzb25zOwpXb3VsZCB5ZSB0YXJyeSBmb3IgdGhlbSB0aWxsIHRoZXkgd2VyZSBncm93bj8gd291bGQgeWUgc3RheSBmb3IgdGhlbSBmcm9tIGhhdmluZyBodXNiYW5kcz8gbmF5LCBteSBkYXVnaHRlcnM7IGZvciBpdCBncmlldmV0aCBtZSBtdWNoIGZvciB5b3VyIHNha2VzIHRoYXQgdGhlIGhhbmQgb2YgdGhlIExPUkQgaXMgZ29uZSBvdXQgYWdhaW5zdCBtZS4KQW5kIHRoZXkgbGlmdGVkIHVwIHRoZWlyIHZvaWNlLCBhbmQgd2VwdCBhZ2FpbjogYW5kIE9ycGFoIGtpc3NlZCBoZXIgbW90aGVyIGluIGxhdzsgYnV0IFJ1dGggY2xhdmUgdW50byBoZXIuCkFuZCBzaGUgc2FpZCwgQmVob2xkLCB0aHkgc2lzdGVyIGluIGxhdyBpcyBnb25lIGJhY2sgdW50byBoZXIgcGVvcGxlLCBhbmQgdW50byBoZXIgZ29kczogcmV0dXJuIHRob3UgYWZ0ZXIgdGh5IHNpc3RlciBpbiBsYXcuCkFuZCBSdXRoIHNhaWQsIEludHJlYXQgbWUgbm90IHRvIGxlYXZlIHRoZWUsIG9yIHRvIHJldHVybiBmcm9tIGZvbGxvd2luZyBhZnRlciB0aGVlOiBmb3Igd2hpdGhlciB0aG91IGdvZXN0LCBJIHdpbGwgZ287IGFuZCB3aGVyZSB0aG91IGxvZGdlc3QsIEkgd2lsbCBsb2RnZTogdGh5IHBlb3BsZSBzaGFsbCBiZSBteSBwZW9wbGUsIGFuZCB0aHkgR29kIG15IEdvZDoKV2hlcmUgdGhvdSBkaWVzdCwgd2lsbCBJIGRpZSwgYW5kIHRoZXJlIHdpbGwgSSBiZSBidXJpZWQ6IHRoZSBMT1JEIGRvIHNvIHRvIG1lLCBhbmQgbW9yZSBhbHNvLCBpZiBvdWdodCBidXQgZGVhdGggcGFydCB0aGVlIGFuZCBtZS4KV2hlbiBzaGUgc2F3IHRoYXQgc2hlIHdhcyBzdGVkZmFzdGx5IG1pbmRlZCB0byBnbyB3aXRoIGhlciwgdGhlbiBzaGUgbGVmdCBzcGVha2luZyB1bnRvIGhlci4KU28gdGhleSB0d28gd2VudCB1bnRpbCB0aGV5IGNhbWUgdG8gQmV0aGxlaGVtLiBBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIHRoZXkgd2VyZSBjb21lIHRvIEJldGhsZWhlbSwgdGhhdCBhbGwgdGhlIGNpdHkgd2FzIG1vdmVkIGFib3V0IHRoZW0sIGFuZCB0aGV5IHNhaWQsIElzIHRoaXMgTmFvbWk/CkFuZCBzaGUgc2FpZCB1bnRvIHRoZW0sIENhbGwgbWUgbm90IE5hb21pLCBjYWxsIG1lIE1hcmE6IGZvciB0aGUgQWxtaWdodHkgaGF0aCBkZWFsdCB2ZXJ5IGJpdHRlcmx5IHdpdGggbWUuCkkgd2VudCBvdXQgZnVsbCBhbmQgdGhlIExPUkQgaGF0aCBicm91Z2h0IG1lIGhvbWUgYWdhaW4gZW1wdHk6IHdoeSB0aGVuIGNhbGwgeWUgbWUgTmFvbWksIHNlZWluZyB0aGUgTE9SRCBoYXRoIHRlc3RpZmllZCBhZ2FpbnN0IG1lLCBhbmQgdGhlIEFsbWlnaHR5IGhhdGggYWZmbGljdGVkIG1lPwpTbyBOYW9taSByZXR1cm5lZCwgYW5kIFJ1dGggdGhlIE1vYWJpdGVzcywgaGVyIGRhdWdodGVyIGluIGxhdywgd2l0aCBoZXIsIHdoaWNoIHJldHVybmVkIG91dCBvZiB0aGUgY291bnRyeSBvZiBNb2FiOiBhbmQgdGhleSBjYW1lIHRvIEJldGhsZWhlbSBpbiB0aGUgYmVnaW5uaW5nIG9mIGJhcmxleSBoYXJ2ZXN0LgpBbmQgTmFvbWkgaGFkIGEga2luc21hbiBvZiBoZXIgaHVzYmFuZCdzLCBhIG1pZ2h0eSBtYW4gb2Ygd2VhbHRoLCBvZiB0aGUgZmFtaWx5IG9mIEVsaW1lbGVjaDsgYW5kIGhpcyBuYW1lIHdhcyBCb2F6LgpBbmQgUnV0aCB0aGUgTW9hYml0ZXNzIHNhaWQgdW50byBOYW9taSwgTGV0IG1lIG5vdyBnbyB0byB0aGUgZmllbGQsIGFuZCBnbGVhbiBlYXJzIG9mIGNvcm4gYWZ0ZXIgaGltIGluIHdob3NlIHNpZ2h0IEkgc2hhbGwgZmluZCBncmFjZS4gQW5kIHNoZSBzYWlkIHVudG8gaGVyLCBHbywgbXkgZGF1Z2h0ZXIuCkFuZCBzaGUgd2VudCwgYW5kIGNhbWUsIGFuZCBnbGVhbmVkIGluIHRoZSBmaWVsZCBhZnRlciB0aGUgcmVhcGVyczogYW5kIGhlciBoYXAgd2FzIHRvIGxpZ2h0IG9uIGEgcGFydCBvZiB0aGUgZmllbGQgYmVsb25naW5nIHVudG8gQm9heiwgd2hvIHdhcyBvZiB0aGUga2luZHJlZCBvZiBFbGltZWxlY2guCkFuZCwgYmVob2xkLCBCb2F6IGNhbWUgZnJvbSBCZXRobGVoZW0sIGFuZCBzYWlkIHVudG8gdGhlIHJlYXBlcnMsIFRoZSBMT1JEIGJlIHdpdGggeW91LiBBbmQgdGhleSBhbnN3ZXJlZCBoaW0sIFRoZSBMT1JEIGJsZXNzIHRoZWUuClRoZW4gc2FpZCBCb2F6IHVudG8gaGlzIHNlcnZhbnQgdGhhdCB3YXMgc2V0IG92ZXIgdGhlIHJlYXBlcnMsIFdob3NlIGRhbXNlbCBpcyB0aGlzPwpBbmQgdGhlIHNlcnZhbnQgdGhhdCB3YXMgc2V0IG92ZXIgdGhlIHJlYXBlcnMgYW5zd2VyZWQgYW5kIHNhaWQsIEl0IGlzIHRoZSBNb2FiaXRpc2ggZGFtc2VsIHRoYXQgY2FtZSBiYWNrIHdpdGggTmFvbWkgb3V0IG9mIHRoZSBjb3VudHJ5IG9mIE1vYWI6CkFuZCBzaGUgc2FpZCwgSSBwcmF5IHlvdSwgbGV0IG1lIGdsZWFuIGFuZCBnYXRoZXIgYWZ0ZXIgdGhlIHJlYXBlcnMgYW1vbmcgdGhlIHNoZWF2ZXM6IHNvIHNoZSBjYW1lLCBhbmQgaGF0aCBjb250aW51ZWQgZXZlbiBmcm9tIHRoZSBtb3JuaW5nIHVudGlsIG5vdywgdGhhdCBzaGUgdGFycmllZCBhIGxpdHRsZSBpbiB0aGUgaG91c2UuClRoZW4gc2FpZCBCb2F6IHVudG8gUnV0aCwgSGVhcmVzdCB0aG91IG5vdCwgbXkgZGF1Z2h0ZXI/IEdvIG5vdCB0byBnbGVhbiBpbiBhbm90aGVyIGZpZWxkLCBuZWl0aGVyIGdvIGZyb20gaGVuY2UsIGJ1dCBhYmlkZSBoZXJlIGZhc3QgYnkgbXkgbWFpZGVuczoKTGV0IHRoaW5lIGV5ZXMgYmUgb24gdGhlIGZpZWxkIHRoYXQgdGhleSBkbyByZWFwLCBhbmQgZ28gdGhvdSBhZnRlciB0aGVtOiBoYXZlIEkgbm90IGNoYXJnZWQgdGhlIHlvdW5nIG1lbiB0aGF0IHRoZXkgc2hhbGwgbm90IHRvdWNoIHRoZWU/IGFuZCB3aGVuIHRob3UgYXJ0IGF0aGlyc3QsIGdvIHVudG8gdGhlIHZlc3NlbHMsIGFuZCBkcmluayBvZiB0aGF0IHdoaWNoIHRoZSB5b3VuZyBtZW4gaGF2ZSBkcmF3bi4KVGhlbiBzaGUgZmVsbCBvbiBoZXIgZmFjZSwgYW5kIGJvd2VkIGhlcnNlbGYgdG8gdGhlIGdyb3VuZCwgYW5kIHNhaWQgdW50byBoaW0sIFdoeSBoYXZlIEkgZm91bmQgZ3JhY2UgaW4gdGhpbmUgZXllcywgdGhhdCB0aG91IHNob3VsZGVzdCB0YWtlIGtub3dsZWRnZSBvZiBtZSwgc2VlaW5nIEkgYW0gYSBzdHJhbmdlcj8KQW5kIEJvYXogYW5zd2VyZWQgYW5kIHNhaWQgdW50byBoZXIsIEl0IGhhdGggZnVsbHkgYmVlbiBzaGV3ZWQgbWUsIGFsbCB0aGF0IHRob3UgaGFzdCBkb25lIHVudG8gdGh5IG1vdGhlciBpbiBsYXcgc2luY2UgdGhlIGRlYXRoIG9mIHRoaW5lIGh1c2JhbmQ6IGFuZCBob3cgdGhvdSBoYXN0IGxlZnQgdGh5IGZhdGhlciBhbmQgdGh5IG1vdGhlciwgYW5kIHRoZSBsYW5kIG9mIHRoeSBuYXRpdml0eSwgYW5kIGFydCBjb21lIHVudG8gYSBwZW9wbGUgd2hpY2ggdGhvdSBrbmV3ZXN0IG5vdCBoZXJldG9mb3JlLgpUaGUgTE9SRCByZWNvbXBlbnNlIHRoeSB3b3JrLCBhbmQgYSBmdWxsIHJld2FyZCBiZSBnaXZlbiB0aGVlIG9mIHRoZSBMT1JEIEdvZCBvZiBJc3JhZWwsIHVuZGVyIHdob3NlIHdpbmdzIHRob3UgYXJ0IGNvbWUgdG8gdHJ1c3QuClRoZW4gc2hlIHNhaWQsIExldCBtZSBmaW5kIGZhdm91ciBpbiB0aHkgc2lnaHQsIG15IGxvcmQ7IGZvciB0aGF0IHRob3UgaGFzdCBjb21mb3J0ZWQgbWUsIGFuZCBmb3IgdGhhdCB0aG91IGhhc3Qgc3Bva2VuIGZyaWVuZGx5IHVudG8gdGhpbmUgaGFuZG1haWQsIHRob3VnaCBJIGJlIG5vdCBsaWtlIHVudG8gb25lIG9mIHRoaW5lIGhhbmRtYWlkZW5zLgpBbmQgQm9heiBzYWlkIHVudG8gaGVyLCBBdCBtZWFsdGltZSBjb21lIHRob3UgaGl0aGVyLCBhbmQgZWF0IG9mIHRoZSBicmVhZCwgYW5kIGRpcCB0aHkgbW9yc2VsIGluIHRoZSB2aW5lZ2FyLiBBbmQgc2hlIHNhdCBiZXNpZGUgdGhlIHJlYXBlcnM6IGFuZCBoZSByZWFjaGVkIGhlciBwYXJjaGVkIGNvcm4sIGFuZCBzaGUgZGlkIGVhdCwgYW5kIHdhcyBzdWZmaWNlZCwgYW5kIGxlZnQuCkFuZCB3aGVuIHNoZSB3YXMgcmlzZW4gdXAgdG8gZ2xlYW4sIEJvYXogY29tbWFuZGVkIGhpcyB5b3VuZyBtZW4sIHNheWluZywgTGV0IGhlciBnbGVhbiBldmVuIGFtb25nIHRoZSBzaGVhdmVzLCBhbmQgcmVwcm9hY2ggaGVyIG5vdDoKQW5kIGxldCBmYWxsIGFsc28gc29tZSBvZiB0aGUgaGFuZGZ1bHMgb2YgcHVycG9zZSBmb3IgaGVyLCBhbmQgbGVhdmUgdGhlbSwgdGhhdCBzaGUgbWF5IGdsZWFuIHRoZW0sIGFuZCByZWJ1a2UgaGVyIG5vdC4KU28gc2hlIGdsZWFuZWQgaW4gdGhlIGZpZWxkIHVudGlsIGV2ZW4sIGFuZCBiZWF0IG91dCB0aGF0IHNoZSBoYWQgZ2xlYW5lZDogYW5kIGl0IHdhcyBhYm91dCBhbiBlcGhhaCBvZiBiYXJsZXkuCkFuZCBzaGUgdG9vayBpdCB1cCwgYW5kIHdlbnQgaW50byB0aGUgY2l0eTogYW5kIGhlciBtb3RoZXIgaW4gbGF3IHNhdyB3aGF0IHNoZSBoYWQgZ2xlYW5lZDogYW5kIHNoZSBicm91Z2h0IGZvcnRoLCBhbmQgZ2F2ZSB0byBoZXIgdGhhdCBzaGUgaGFkIHJlc2VydmVkIGFmdGVyIHNoZSB3YXMgc3VmZmljZWQuCkFuZCBoZXIgbW90aGVyIGluIGxhdyBzYWlkIHVudG8gaGVyLCBXaGVyZSBoYXN0IHRob3UgZ2xlYW5lZCB0byBkYXk/IGFuZCB3aGVyZSB3cm91Z2h0ZXN0IHRob3U/IGJsZXNzZWQgYmUgaGUgdGhhdCBkaWQgdGFrZSBrbm93bGVkZ2Ugb2YgdGhlZS4gQW5kIHNoZSBzaGV3ZWQgaGVyIG1vdGhlciBpbiBsYXcgd2l0aCB3aG9tIHNoZSBoYWQgd3JvdWdodCwgYW5kIHNhaWQsIFRoZSBtYW4ncyBuYW1lIHdpdGggd2hvbSBJIHdyb3VnaHQgdG8gZGF5IGlzIEJvYXouCkFuZCBOYW9taSBzYWlkIHVudG8gaGVyIGRhdWdodGVyIGluIGxhdywgQmxlc3NlZCBiZSBoZSBvZiB0aGUgTE9SRCwgd2hvIGhhdGggbm90IGxlZnQgb2ZmIGhpcyBraW5kbmVzcyB0byB0aGUgbGl2aW5nIGFuZCB0byB0aGUgZGVhZC4gQW5kIE5hb21pIHNhaWQgdW50byBoZXIsIFRoZSBtYW4gaXMgbmVhciBvZiBraW4gdW50byB1cywgb25lIG9mIG91ciBuZXh0IGtpbnNtZW4uCkFuZCBSdXRoIHRoZSBNb2FiaXRlc3Mgc2FpZCwgSGUgc2FpZCB1bnRvIG1lIGFsc28sIFRob3Ugc2hhbHQga2VlcCBmYXN0IGJ5IG15IHlvdW5nIG1lbiwgdW50aWwgdGhleSBoYXZlIGVuZGVkIGFsbCBteSBoYXJ2ZXN0LgpBbmQgTmFvbWkgc2FpZCB1bnRvIFJ1dGggaGVyIGRhdWdodGVyIGluIGxhdywgSXQgaXMgZ29vZCwgbXkgZGF1Z2h0ZXIsIHRoYXQgdGhvdSBnbyBvdXQgd2l0aCBoaXMgbWFpZGVucywgdGhhdCB0aGV5IG1lZXQgdGhlZSBub3QgaW4gYW55IG90aGVyIGZpZWxkLgpTbyBzaGUga2VwdCBmYXN0IGJ5IHRoZSBtYWlkZW5zIG9mIEJvYXogdG8gZ2xlYW4gdW50byB0aGUgZW5kIG9mIGJhcmxleSBoYXJ2ZXN0IGFuZCBvZiB3aGVhdCBoYXJ2ZXN0OyBhbmQgZHdlbHQgd2l0aCBoZXIgbW90aGVyIGluIGxhdy4KVGhlbiBOYW9taSBoZXIgbW90aGVyIGluIGxhdyBzYWlkIHVudG8gaGVyLCBNeSBkYXVnaHRlciwgc2hhbGwgSSBub3Qgc2VlayByZXN0IGZvciB0aGVlLCB0aGF0IGl0IG1heSBiZSB3ZWxsIHdpdGggdGhlZT8KQW5kIG5vdyBpcyBub3QgQm9heiBvZiBvdXIga2luZHJlZCwgd2l0aCB3aG9zZSBtYWlkZW5zIHRob3Ugd2FzdD8gQmVob2xkLCBoZSB3aW5ub3dldGggYmFybGV5IHRvIG5pZ2h0IGluIHRoZSB0aHJlc2hpbmdmbG9vci4KV2FzaCB0aHlzZWxmIHRoZXJlZm9yZSwgYW5kIGFub2ludCB0aGVlLCBhbmQgcHV0IHRoeSByYWltZW50IHVwb24gdGhlZSwgYW5kIGdldCB0aGVlIGRvd24gdG8gdGhlIGZsb29yOiBidXQgbWFrZSBub3QgdGh5c2VsZiBrbm93biB1bnRvIHRoZSBtYW4sIHVudGlsIGhlIHNoYWxsIGhhdmUgZG9uZSBlYXRpbmcgYW5kIGRyaW5raW5nLgpBbmQgaXQgc2hhbGwgYmUsIHdoZW4gaGUgbGlldGggZG93biwgdGhhdCB0aG91IHNoYWx0IG1hcmsgdGhlIHBsYWNlIHdoZXJlIGhlIHNoYWxsIGxpZSwgYW5kIHRob3Ugc2hhbHQgZ28gaW4sIGFuZCB1bmNvdmVyIGhpcyBmZWV0LCBhbmQgbGF5IHRoZWUgZG93bjsgYW5kIGhlIHdpbGwgdGVsbCB0aGVlIHdoYXQgdGhvdSBzaGFsdCBkby4KQW5kIHNoZSBzYWlkIHVudG8gaGVyLCBBbGwgdGhhdCB0aG91IHNheWVzdCB1bnRvIG1lIEkgd2lsbCBkby4KQW5kIHNoZSB3ZW50IGRvd24gdW50byB0aGUgZmxvb3IsIGFuZCBkaWQgYWNjb3JkaW5nIHRvIGFsbCB0aGF0IGhlciBtb3RoZXIgaW4gbGF3IGJhZGUgaGVyLgpBbmQgd2hlbiBCb2F6IGhhZCBlYXRlbiBhbmQgZHJ1bmssIGFuZCBoaXMgaGVhcnQgd2FzIG1lcnJ5LCBoZSB3ZW50IHRvIGxpZSBkb3duIGF0IHRoZSBlbmQgb2YgdGhlIGhlYXAgb2YgY29ybjogYW5kIHNoZSBjYW1lIHNvZnRseSwgYW5kIHVuY292ZXJlZCBoaXMgZmVldCwgYW5kIGxhaWQgaGVyIGRvd24uCkFuZCBpdCBjYW1lIHRvIHBhc3MgYXQgbWlkbmlnaHQsIHRoYXQgdGhlIG1hbiB3YXMgYWZyYWlkLCBhbmQgdHVybmVkIGhpbXNlbGY6IGFuZCwgYmVob2xkLCBhIHdvbWFuIGxheSBhdCBoaXMgZmVldC4KQW5kIGhlIHNhaWQsIFdobyBhcnQgdGhvdT8gQW5kIHNoZSBhbnN3ZXJlZCwgSSBhbSBSdXRoIHRoaW5lIGhhbmRtYWlkOiBzcHJlYWQgdGhlcmVmb3JlIHRoeSBza2lydCBvdmVyIHRoaW5lIGhhbmRtYWlkOyBmb3IgdGhvdSBhcnQgYSBuZWFyIGtpbnNtYW4uCkFuZCBoZSBzYWlkLCBCbGVzc2VkIGJlIHRob3Ugb2YgdGhlIExPUkQsIG15IGRhdWdodGVyOiBmb3IgdGhvdSBoYXN0IHNoZXdlZCBtb3JlIGtpbmRuZXNzIGluIHRoZSBsYXR0ZXIgZW5kIHRoYW4gYXQgdGhlIGJlZ2lubmluZywgaW5hc211Y2ggYXMgdGhvdSBmb2xsb3dlZHN0IG5vdCB5b3VuZyBtZW4sIHdoZXRoZXIgcG9vciBvciByaWNoLgpBbmQgbm93LCBteSBkYXVnaHRlciwgZmVhciBub3Q7IEkgd2lsbCBkbyB0byB0aGVlIGFsbCB0aGF0IHRob3UgcmVxdWlyZXN0OiBmb3IgYWxsIHRoZSBjaXR5IG9mIG15IHBlb3BsZSBkb3RoIGtub3cgdGhhdCB0aG91IGFydCBhIHZpcnR1b3VzIHdvbWFuLgpBbmQgbm93IGl0IGlzIHRydWUgdGhhdCBJIGFtIHRoeSBuZWFyIGtpbnNtYW46IGhvd2JlaXQgdGhlcmUgaXMgYSBraW5zbWFuIG5lYXJlciB0aGFuIEkuClRhcnJ5IHRoaXMgbmlnaHQsIGFuZCBpdCBzaGFsbCBiZSBpbiB0aGUgbW9ybmluZywgdGhhdCBpZiBoZSB3aWxsIHBlcmZvcm0gdW50byB0aGVlIHRoZSBwYXJ0IG9mIGEga2luc21hbiwgd2VsbDsgbGV0IGhpbSBkbyB0aGUga2luc21hbidzIHBhcnQ6IGJ1dCBpZiBoZSB3aWxsIG5vdCBkbyB0aGUgcGFydCBvZiBhIGtpbnNtYW4gdG8gdGhlZSwgdGhlbiB3aWxsIEkgZG8gdGhlIHBhcnQgb2YgYSBraW5zbWFuIHRvIHRoZWUsIGFzIHRoZSBMT1JEIGxpdmV0aDogbGllIGRvd24gdW50aWwgdGhlIG1vcm5pbmcuCkFuZCBzaGUgbGF5IGF0IGhpcyBmZWV0IHVudGlsIHRoZSBtb3JuaW5nOiBhbmQgc2hlIHJvc2UgdXAgYmVmb3JlIG9uZSBjb3VsZCBrbm93IGFub3RoZXIuIEFuZCBoZSBzYWlkLCBMZXQgaXQgbm90IGJlIGtub3duIHRoYXQgYSB3b21hbiBjYW1lIGludG8gdGhlIGZsb29yLgpBbHNvIGhlIHNhaWQsIEJyaW5nIHRoZSB2YWlsIHRoYXQgdGhvdSBoYXN0IHVwb24gdGhlZSwgYW5kIGhvbGQgaXQuIEFuZCB3aGVuIHNoZSBoZWxkIGl0LCBoZSBtZWFzdXJlZCBzaXggbWVhc3VyZXMgb2YgYmFybGV5LCBhbmQgbGFpZCBpdCBvbiBoZXI6IGFuZCBzaGUgd2VudCBpbnRvIHRoZSBjaXR5LgpBbmQgd2hlbiBzaGUgY2FtZSB0byBoZXIgbW90aGVyIGluIGxhdywgc2hlIHNhaWQsIFdobyBhcnQgdGhvdSwgbXkgZGF1Z2h0ZXI/IEFuZCBzaGUgdG9sZCBoZXIgYWxsIHRoYXQgdGhlIG1hbiBoYWQgZG9uZSB0byBoZXIuCkFuZCBzaGUgc2FpZCwgVGhlc2Ugc2l4IG1lYXN1cmVzIG9mIGJhcmxleSBnYXZlIGhlIG1lOyBmb3IgaGUgc2FpZCB0byBtZSwgR28gbm90IGVtcHR5IHVudG8gdGh5IG1vdGhlciBpbiBsYXcuClRoZW4gc2FpZCBzaGUsIFNpdCBzdGlsbCwgbXkgZGF1Z2h0ZXIsIHVudGlsIHRob3Uga25vdyBob3cgdGhlIG1hdHRlciB3aWxsIGZhbGw6IGZvciB0aGUgbWFuIHdpbGwgbm90IGJlIGluIHJlc3QsIHVudGlsIGhlIGhhdmUgZmluaXNoZWQgdGhlIHRoaW5nIHRoaXMgZGF5LgpUaGVuIHdlbnQgQm9heiB1cCB0byB0aGUgZ2F0ZSwgYW5kIHNhdCBoaW0gZG93biB0aGVyZTogYW5kLCBiZWhvbGQsIHRoZSBraW5zbWFuIG9mIHdob20gQm9heiBzcGFrZSBjYW1lIGJ5OyB1bnRvIHdob20gaGUgc2FpZCwgSG8sIHN1Y2ggYSBvbmUhIHR1cm4gYXNpZGUsIHNpdCBkb3duIGhlcmUuIEFuZCBoZSB0dXJuZWQgYXNpZGUsIGFuZCBzYXQgZG93bi4KQW5kIGhlIHRvb2sgdGVuIG1lbiBvZiB0aGUgZWxkZXJzIG9mIHRoZSBjaXR5LCBhbmQgc2FpZCwgU2l0IHllIGRvd24gaGVyZS4gQW5kIHRoZXkgc2F0IGRvd24uCkFuZCBoZSBzYWlkIHVudG8gdGhlIGtpbnNtYW4sIE5hb21pLCB0aGF0IGlzIGNvbWUgYWdhaW4gb3V0IG9mIHRoZSBjb3VudHJ5IG9mIE1vYWIsIHNlbGxldGggYSBwYXJjZWwgb2YgbGFuZCwgd2hpY2ggd2FzIG91ciBicm90aGVyIEVsaW1lbGVjaCdzOgpBbmQgSSB0aG91Z2h0IHRvIGFkdmVydGlzZSB0aGVlLCBzYXlpbmcsIEJ1eSBpdCBiZWZvcmUgdGhlIGluaGFiaXRhbnRzLCBhbmQgYmVmb3JlIHRoZSBlbGRlcnMgb2YgbXkgcGVvcGxlLiBJZiB0aG91IHdpbHQgcmVkZWVtIGl0LCByZWRlZW0gaXQ6IGJ1dCBpZiB0aG91IHdpbHQgbm90IHJlZGVlbSBpdCwgdGhlbiB0ZWxsIG1lLCB0aGF0IEkgbWF5IGtub3c6IGZvciB0aGVyZSBpcyBub25lIHRvIHJlZGVlbSBpdCBiZXNpZGUgdGhlZTsgYW5kIEkgYW0gYWZ0ZXIgdGhlZS4gQW5kIGhlIHNhaWQsIEkgd2lsbCByZWRlZW0gaXQuClRoZW4gc2FpZCBCb2F6LCBXaGF0IGRheSB0aG91IGJ1eWVzdCB0aGUgZmllbGQgb2YgdGhlIGhhbmQgb2YgTmFvbWksIHRob3UgbXVzdCBidXkgaXQgYWxzbyBvZiBSdXRoIHRoZSBNb2FiaXRlc3MsIHRoZSB3aWZlIG9mIHRoZSBkZWFkLCB0byByYWlzZSB1cCB0aGUgbmFtZSBvZiB0aGUgZGVhZCB1cG9uIGhpcyBpbmhlcml0YW5jZS4KQW5kIHRoZSBraW5zbWFuIHNhaWQsIEkgY2Fubm90IHJlZGVlbSBpdCBmb3IgbXlzZWxmLCBsZXN0IEkgbWFyIG1pbmUgb3duIGluaGVyaXRhbmNlOiByZWRlZW0gdGhvdSBteSByaWdodCB0byB0aHlzZWxmOyBmb3IgSSBjYW5ub3QgcmVkZWVtIGl0LgpOb3cgdGhpcyB3YXMgdGhlIG1hbm5lciBpbiBmb3JtZXIgdGltZSBpbiBJc3JhZWwgY29uY2VybmluZyByZWRlZW1pbmcgYW5kIGNvbmNlcm5pbmcgY2hhbmdpbmcsIGZvciB0byBjb25maXJtIGFsbCB0aGluZ3M7IGEgbWFuIHBsdWNrZWQgb2ZmIGhpcyBzaG9lLCBhbmQgZ2F2ZSBpdCB0byBoaXMgbmVpZ2hib3VyOiBhbmQgdGhpcyB3YXMgYSB0ZXN0aW1vbnkgaW4gSXNyYWVsLgpUaGVyZWZvcmUgdGhlIGtpbnNtYW4gc2FpZCB1bnRvIEJvYXosIEJ1eSBpdCBmb3IgdGhlZS4gU28gaGUgZHJldyBvZmYgaGlzIHNob2UuCkFuZCBCb2F6IHNhaWQgdW50byB0aGUgZWxkZXJzLCBhbmQgdW50byBhbGwgdGhlIHBlb3BsZSwgWWUgYXJlIHdpdG5lc3NlcyB0aGlzIGRheSwgdGhhdCBJIGhhdmUgYm91Z2h0IGFsbCB0aGF0IHdhcyBFbGltZWxlY2gncywgYW5kIGFsbCB0aGF0IHdhcyBDaGlsaW9uJ3MgYW5kIE1haGxvbidzLCBvZiB0aGUgaGFuZCBvZiBOYW9taS4KTW9yZW92ZXIgUnV0aCB0aGUgTW9hYml0ZXNzLCB0aGUgd2lmZSBvZiBNYWhsb24sIGhhdmUgSSBwdXJjaGFzZWQgdG8gYmUgbXkgd2lmZSwgdG8gcmFpc2UgdXAgdGhlIG5hbWUgb2YgdGhlIGRlYWQgdXBvbiBoaXMgaW5oZXJpdGFuY2UsIHRoYXQgdGhlIG5hbWUgb2YgdGhlIGRlYWQgYmUgbm90IGN1dCBvZmYgZnJvbSBhbW9uZyBoaXMgYnJldGhyZW4sIGFuZCBmcm9tIHRoZSBnYXRlIG9mIGhpcyBwbGFjZTogeWUgYXJlIHdpdG5lc3NlcyB0aGlzIGRheS4KQW5kIGFsbCB0aGUgcGVvcGxlIHRoYXQgd2VyZSBpbiB0aGUgZ2F0ZSwgYW5kIHRoZSBlbGRlcnMsIHNhaWQsIFdlIGFyZSB3aXRuZXNzZXMuIFRoZSBMT1JEIG1ha2UgdGhlIHdvbWFuIHRoYXQgaXMgY29tZSBpbnRvIHRoaW5lIGhvdXNlIGxpa2UgUmFjaGVsIGFuZCBsaWtlIExlYWgsIHdoaWNoIHR3byBkaWQgYnVpbGQgdGhlIGhvdXNlIG9mIElzcmFlbDogYW5kIGRvIHRob3Ugd29ydGhpbHkgaW4gRXBocmF0YWgsIGFuZCBiZSBmYW1vdXMgaW4gQmV0aGxlaGVtOgpBbmQgbGV0IHRoeSBob3VzZSBiZSBsaWtlIHRoZSBob3VzZSBvZiBQaGFyZXosIHdob20gVGFtYXIgYmFyZSB1bnRvIEp1ZGFoLCBvZiB0aGUgc2VlZCB3aGljaCB0aGUgTE9SRCBzaGFsbCBnaXZlIHRoZWUgb2YgdGhpcyB5b3VuZyB3b21hbi4KU28gQm9heiB0b29rIFJ1dGgsIGFuZCBzaGUgd2FzIGhpcyB3aWZlOiBhbmQgd2hlbiBoZSB3ZW50IGluIHVudG8gaGVyLCB0aGUgTE9SRCBnYXZlIGhlciBjb25jZXB0aW9uLCBhbmQgc2hlIGJhcmUgYSBzb24uCkFuZCB0aGUgd29tZW4gc2FpZCB1bnRvIE5hb21pLCBCbGVzc2VkIGJlIHRoZSBMT1JELCB3aGljaCBoYXRoIG5vdCBsZWZ0IHRoZWUgdGhpcyBkYXkgd2l0aG91dCBhIGtpbnNtYW4sIHRoYXQgaGlzIG5hbWUgbWF5IGJlIGZhbW91cyBpbiBJc3JhZWwuCkFuZCBoZSBzaGFsbCBiZSB1bnRvIHRoZWUgYSByZXN0b3JlciBvZiB0aHkgbGlmZSwgYW5kIGEgbm91cmlzaGVyIG9mIHRoaW5lIG9sZCBhZ2U6IGZvciB0aHkgZGF1Z2h0ZXIgaW4gbGF3LCB3aGljaCBsb3ZldGggdGhlZSwgd2hpY2ggaXMgYmV0dGVyIHRvIHRoZWUgdGhhbiBzZXZlbiBzb25zLCBoYXRoIGJvcm4gaGltLgpBbmQgTmFvbWkgdG9vayB0aGUgY2hpbGQsIGFuZCBsYWlkIGl0IGluIGhlciBib3NvbSwgYW5kIGJlY2FtZSBudXJzZSB1bnRvIGl0LgpBbmQgdGhlIHdvbWVuIGhlciBuZWlnaGJvdXJzIGdhdmUgaXQgYSBuYW1lLCBzYXlpbmcsIFRoZXJlIGlzIGEgc29uIGJvcm4gdG8gTmFvbWk7IGFuZCB0aGV5IGNhbGxlZCBoaXMgbmFtZSBPYmVkOiBoZSBpcyB0aGUgZmF0aGVyIG9mIEplc3NlLCB0aGUgZmF0aGVyIG9mIERhdmlkLgpOb3cgdGhlc2UgYXJlIHRoZSBnZW5lcmF0aW9ucyBvZiBQaGFyZXo6IFBoYXJleiBiZWdhdCBIZXpyb24sCkFuZCBIZXpyb24gYmVnYXQgUmFtLCBhbmQgUmFtIGJlZ2F0IEFtbWluYWRhYiwKQW5kIEFtbWluYWRhYiBiZWdhdCBOYWhzaG9uLCBhbmQgTmFoc2hvbiBiZWdhdCBTYWxtb24sCkFuZCBTYWxtb24gYmVnYXQgQm9heiwgYW5kIEJvYXogYmVnYXQgT2JlZCwKQW5kIE9iZWQgYmVnYXQgSmVzc2UsIGFuZCBKZXNzZSBiZWdhdCBEYXZpZC4KTm93IHRoZXJlIHdhcyBhIGNlcnRhaW4gbWFuIG9mIFJhbWF0aGFpbXpvcGhpbSwgb2YgbW91bnQgRXBocmFpbSwgYW5kIGhpcyBuYW1lIHdhcyBFbGthbmFoLCB0aGUgc29uIG9mIEplcm9oYW0sIHRoZSBzb24gb2YgRWxpaHUsIHRoZSBzb24gb2YgVG9odSwgdGhlIHNvbiBvZiBadXBoLCBhbiBFcGhyYXRoaXRlOgpBbmQgaGUgaGFkIHR3byB3aXZlczsgdGhlIG5hbWUgb2YgdGhlIG9uZSB3YXMgSGFubmFoLCBhbmQgdGhlIG5hbWUgb2YgdGhlIG90aGVyIFBlbmlubmFoOiBhbmQgUGVuaW5uYWggaGFkIGNoaWxkcmVuLCBidXQgSGFubmFoIGhhZCBubyBjaGlsZHJlbi4KQW5kIHRoaXMgbWFuIHdlbnQgdXAgb3V0IG9mIGhpcyBjaXR5IHllYXJseSB0byB3b3JzaGlwIGFuZCB0byBzYWNyaWZpY2UgdW50byB0aGUgTE9SRCBvZiBob3N0cyBpbiBTaGlsb2guIEFuZCB0aGUgdHdvIHNvbnMgb2YgRWxpLCBIb3BobmkgYW5kIFBoaW5laGFzLCB0aGUgcHJpZXN0cyBvZiB0aGUgTE9SRCwgd2VyZSB0aGVyZS4KQW5kIHdoZW4gdGhlIHRpbWUgd2FzIHRoYXQgRWxrYW5haCBvZmZlcmVkLCBoZSBnYXZlIHRvIFBlbmlubmFoIGhpcyB3aWZlLCBhbmQgdG8gYWxsIGhlciBzb25zIGFuZCBoZXIgZGF1Z2h0ZXJzLCBwb3J0aW9uczoKQnV0IHVudG8gSGFubmFoIGhlIGdhdmUgYSB3b3J0aHkgcG9ydGlvbjsgZm9yIGhlIGxvdmVkIEhhbm5haDogYnV0IHRoZSBMT1JEIGhhZCBzaHV0IHVwIGhlciB3b21iLgpBbmQgaGVyIGFkdmVyc2FyeSBhbHNvIHByb3Zva2VkIGhlciBzb3JlLCBmb3IgdG8gbWFrZSBoZXIgZnJldCwgYmVjYXVzZSB0aGUgTE9SRCBoYWQgc2h1dCB1cCBoZXIgd29tYi4KQW5kIGFzIGhlIGRpZCBzbyB5ZWFyIGJ5IHllYXIsIHdoZW4gc2hlIHdlbnQgdXAgdG8gdGhlIGhvdXNlIG9mIHRoZSBMT1JELCBzbyBzaGUgcHJvdm9rZWQgaGVyOyB0aGVyZWZvcmUgc2hlIHdlcHQsIGFuZCBkaWQgbm90IGVhdC4KVGhlbiBzYWlkIEVsa2FuYWggaGVyIGh1c2JhbmQgdG8gaGVyLCBIYW5uYWgsIHdoeSB3ZWVwZXN0IHRob3U/IGFuZCB3aHkgZWF0ZXN0IHRob3Ugbm90PyBhbmQgd2h5IGlzIHRoeSBoZWFydCBncmlldmVkPyBhbSBub3QgSSBiZXR0ZXIgdG8gdGhlZSB0aGFuIHRlbiBzb25zPwpTbyBIYW5uYWggcm9zZSB1cCBhZnRlciB0aGV5IGhhZCBlYXRlbiBpbiBTaGlsb2gsIGFuZCBhZnRlciB0aGV5IGhhZCBkcnVuay4gTm93IEVsaSB0aGUgcHJpZXN0IHNhdCB1cG9uIGEgc2VhdCBieSBhIHBvc3Qgb2YgdGhlIHRlbXBsZSBvZiB0aGUgTE9SRC4KQW5kIHNoZSB3YXMgaW4gYml0dGVybmVzcyBvZiBzb3VsLCBhbmQgcHJheWVkIHVudG8gdGhlIExPUkQsIGFuZCB3ZXB0IHNvcmUuCkFuZCBzaGUgdm93ZWQgYSB2b3csIGFuZCBzYWlkLCBPIExPUkQgb2YgaG9zdHMsIGlmIHRob3Ugd2lsdCBpbmRlZWQgbG9vayBvbiB0aGUgYWZmbGljdGlvbiBvZiB0aGluZSBoYW5kbWFpZCwgYW5kIHJlbWVtYmVyIG1lLCBhbmQgbm90IGZvcmdldCB0aGluZSBoYW5kbWFpZCwgYnV0IHdpbHQgZ2l2ZSB1bnRvIHRoaW5lIGhhbmRtYWlkIGEgbWFuIGNoaWxkLCB0aGVuIEkgd2lsbCBnaXZlIGhpbSB1bnRvIHRoZSBMT1JEIGFsbCB0aGUgZGF5cyBvZiBoaXMgbGlmZSwgYW5kIHRoZXJlIHNoYWxsIG5vIHJhem9yIGNvbWUgdXBvbiBoaXMgaGVhZC4KQW5kIGl0IGNhbWUgdG8gcGFzcywgYXMgc2hlIGNvbnRpbnVlZCBwcmF5aW5nIGJlZm9yZSB0aGUgTE9SRCwgdGhhdCBFbGkgbWFya2VkIGhlciBtb3V0aC4KTm93IEhhbm5haCwgc2hlIHNwYWtlIGluIGhlciBoZWFydDsgb25seSBoZXIgbGlwcyBtb3ZlZCwgYnV0IGhlciB2b2ljZSB3YXMgbm90IGhlYXJkOiB0aGVyZWZvcmUgRWxpIHRob3VnaHQgc2hlIGhhZCBiZWVuIGRydW5rZW4uCkFuZCBFbGkgc2FpZCB1bnRvIGhlciwgSG93IGxvbmcgd2lsdCB0aG91IGJlIGRydW5rZW4/IHB1dCBhd2F5IHRoeSB3aW5lIGZyb20gdGhlZS4KQW5kIEhhbm5haCBhbnN3ZXJlZCBhbmQgc2FpZCwgTm8sIG15IGxvcmQsIEkgYW0gYSB3b21hbiBvZiBhIHNvcnJvd2Z1bCBzcGlyaXQ6IEkgaGF2ZSBkcnVuayBuZWl0aGVyIHdpbmUgbm9yIHN0cm9uZyBkcmluaywgYnV0IGhhdmUgcG91cmVkIG91dCBteSBzb3VsIGJlZm9yZSB0aGUgTE9SRC4KQ291bnQgbm90IHRoaW5lIGhhbmRtYWlkIGZvciBhIGRhdWdodGVyIG9mIEJlbGlhbDogZm9yIG91dCBvZiB0aGUgYWJ1bmRhbmNlIG9mIG15IGNvbXBsYWludCBhbmQgZ3JpZWYgaGF2ZSBJIHNwb2tlbiBoaXRoZXJ0by4KVGhlbiBFbGkgYW5zd2VyZWQgYW5kIHNhaWQsIEdvIGluIHBlYWNlOiBhbmQgdGhlIEdvZCBvZiBJc3JhZWwgZ3JhbnQgdGhlZSB0aHkgcGV0aXRpb24gdGhhdCB0aG91IGhhc3QgYXNrZWQgb2YgaGltLgpBbmQgc2hlIHNhaWQsIExldCB0aGluZSBoYW5kbWFpZCBmaW5kIGdyYWNlIGluIHRoeSBzaWdodC4gU28gdGhlIHdvbWFuIHdlbnQgaGVyIHdheSwgYW5kIGRpZCBlYXQsIGFuZCBoZXIgY291bnRlbmFuY2Ugd2FzIG5vIG1vcmUgc2FkLgpBbmQgdGhleSByb3NlIHVwIGluIHRoZSBtb3JuaW5nIGVhcmx5LCBhbmQgd29yc2hpcHBlZCBiZWZvcmUgdGhlIExPUkQsIGFuZCByZXR1cm5lZCwgYW5kIGNhbWUgdG8gdGhlaXIgaG91c2UgdG8gUmFtYWg6IGFuZCBFbGthbmFoIGtuZXcgSGFubmFoIGhpcyB3aWZlOyBhbmQgdGhlIExPUkQgcmVtZW1iZXJlZCBoZXIuCldoZXJlZm9yZSBpdCBjYW1lIHRvIHBhc3MsIHdoZW4gdGhlIHRpbWUgd2FzIGNvbWUgYWJvdXQgYWZ0ZXIgSGFubmFoIGhhZCBjb25jZWl2ZWQsIHRoYXQgc2hlIGJhcmUgYSBzb24sIGFuZCBjYWxsZWQgaGlzIG5hbWUgU2FtdWVsLCBzYXlpbmcsIEJlY2F1c2UgSSBoYXZlIGFza2VkIGhpbSBvZiB0aGUgTE9SRC4KQW5kIHRoZSBtYW4gRWxrYW5haCwgYW5kIGFsbCBoaXMgaG91c2UsIHdlbnQgdXAgdG8gb2ZmZXIgdW50byB0aGUgTE9SRCB0aGUgeWVhcmx5IHNhY3JpZmljZSwgYW5kIGhpcyB2b3cuCkJ1dCBIYW5uYWggd2VudCBub3QgdXA7IGZvciBzaGUgc2FpZCB1bnRvIGhlciBodXNiYW5kLCBJIHdpbGwgbm90IGdvIHVwIHVudGlsIHRoZSBjaGlsZCBiZSB3ZWFuZWQsIGFuZCB0aGVuIEkgd2lsbCBicmluZyBoaW0sIHRoYXQgaGUgbWF5IGFwcGVhciBiZWZvcmUgdGhlIExPUkQsIGFuZCB0aGVyZSBhYmlkZSBmb3IgZXZlci4KQW5kIEVsa2FuYWggaGVyIGh1c2JhbmQgc2FpZCB1bnRvIGhlciwgRG8gd2hhdCBzZWVtZXRoIHRoZWUgZ29vZDsgdGFycnkgdW50aWwgdGhvdSBoYXZlIHdlYW5lZCBoaW07IG9ubHkgdGhlIExPUkQgZXN0YWJsaXNoIGhpcyB3b3JkLiBTbyB0aGUgd29tYW4gYWJvZGUsIGFuZCBnYXZlIGhlciBzb24gc3VjayB1bnRpbCBzaGUgd2VhbmVkIGhpbS4KQW5kIHdoZW4gc2hlIGhhZCB3ZWFuZWQgaGltLCBzaGUgdG9vayBoaW0gdXAgd2l0aCBoZXIsIHdpdGggdGhyZWUgYnVsbG9ja3MsIGFuZCBvbmUgZXBoYWggb2YgZmxvdXIsIGFuZCBhIGJvdHRsZSBvZiB3aW5lLCBhbmQgYnJvdWdodCBoaW0gdW50byB0aGUgaG91c2Ugb2YgdGhlIExPUkQgaW4gU2hpbG9oOiBhbmQgdGhlIGNoaWxkIHdhcyB5b3VuZy4KQW5kIHRoZXkgc2xldyBhIGJ1bGxvY2ssIGFuZCBicm91Z2h0IHRoZSBjaGlsZCB0byBFbGkuCkFuZCBzaGUgc2FpZCwgT2ggbXkgbG9yZCwgYXMgdGh5IHNvdWwgbGl2ZXRoLCBteSBsb3JkLCBJIGFtIHRoZSB3b21hbiB0aGF0IHN0b29kIGJ5IHRoZWUgaGVyZSwgcHJheWluZyB1bnRvIHRoZSBMT1JELgpGb3IgdGhpcyBjaGlsZCBJIHByYXllZDsgYW5kIHRoZSBMT1JEIGhhdGggZ2l2ZW4gbWUgbXkgcGV0aXRpb24gd2hpY2ggSSBhc2tlZCBvZiBoaW06ClRoZXJlZm9yZSBhbHNvIEkgaGF2ZSBsZW50IGhpbSB0byB0aGUgTE9SRDsgYXMgbG9uZyBhcyBoZSBsaXZldGggaGUgc2hhbGwgYmUgbGVudCB0byB0aGUgTE9SRC4gQW5kIGhlIHdvcnNoaXBwZWQgdGhlIExPUkQgdGhlcmUuCkFuZCBIYW5uYWggcHJheWVkLCBhbmQgc2FpZCwgTXkgaGVhcnQgcmVqb2ljZXRoIGluIHRoZSBMT1JELCBtaW5lIGhvcm4gaXMgZXhhbHRlZCBpbiB0aGUgTE9SRDogbXkgbW91dGggaXMgZW5sYXJnZWQgb3ZlciBtaW5lIGVuZW1pZXM7IGJlY2F1c2UgSSByZWpvaWNlIGluIHRoeSBzYWx2YXRpb24uClRoZXJlIGlzIG5vbmUgaG9seSBhcyB0aGUgTE9SRDogZm9yIHRoZXJlIGlzIG5vbmUgYmVzaWRlIHRoZWU6IG5laXRoZXIgaXMgdGhlcmUgYW55IHJvY2sgbGlrZSBvdXIgR29kLgpUYWxrIG5vIG1vcmUgc28gZXhjZWVkaW5nIHByb3VkbHk7IGxldCBub3QgYXJyb2dhbmN5IGNvbWUgb3V0IG9mIHlvdXIgbW91dGg6IGZvciB0aGUgTE9SRCBpcyBhIEdvZCBvZiBrbm93bGVkZ2UsIGFuZCBieSBoaW0gYWN0aW9ucyBhcmUgd2VpZ2hlZC4KVGhlIGJvd3Mgb2YgdGhlIG1pZ2h0eSBtZW4gYXJlIGJyb2tlbiwgYW5kIHRoZXkgdGhhdCBzdHVtYmxlZCBhcmUgZ2lyZGVkIHdpdGggc3RyZW5ndGguClRoZXkgdGhhdCB3ZXJlIGZ1bGwgaGF2ZSBoaXJlZCBvdXQgdGhlbXNlbHZlcyBmb3IgYnJlYWQ7IGFuZCB0aGV5IHRoYXQgd2VyZSBodW5ncnkgY2Vhc2VkOiBzbyB0aGF0IHRoZSBiYXJyZW4gaGF0aCBib3JuIHNldmVuOyBhbmQgc2hlIHRoYXQgaGF0aCBtYW55IGNoaWxkcmVuIGlzIHdheGVkIGZlZWJsZS4KVGhlIExPUkQga2lsbGV0aCwgYW5kIG1ha2V0aCBhbGl2ZTogaGUgYnJpbmdldGggZG93biB0byB0aGUgZ3JhdmUsIGFuZCBicmluZ2V0aCB1cC4KVGhlIExPUkQgbWFrZXRoIHBvb3IsIGFuZCBtYWtldGggcmljaDogaGUgYnJpbmdldGggbG93LCBhbmQgbGlmdGV0aCB1cC4KSGUgcmFpc2V0aCB1cCB0aGUgcG9vciBvdXQgb2YgdGhlIGR1c3QsIGFuZCBsaWZ0ZXRoIHVwIHRoZSBiZWdnYXIgZnJvbSB0aGUgZHVuZ2hpbGwsIHRvIHNldCB0aGVtIGFtb25nIHByaW5jZXMsIGFuZCB0byBtYWtlIHRoZW0gaW5oZXJpdCB0aGUgdGhyb25lIG9mIGdsb3J5OiBmb3IgdGhlIHBpbGxhcnMgb2YgdGhlIGVhcnRoIGFyZSB0aGUgTE9SRCdzLCBhbmQgaGUgaGF0aCBzZXQgdGhlIHdvcmxkIHVwb24gdGhlbS4KSGUgd2lsbCBrZWVwIHRoZSBmZWV0IG9mIGhpcyBzYWludHMsIGFuZCB0aGUgd2lja2VkIHNoYWxsIGJlIHNpbGVudCBpbiBkYXJrbmVzczsgZm9yIGJ5IHN0cmVuZ3RoIHNoYWxsIG5vIG1hbiBwcmV2YWlsLgpUaGUgYWR2ZXJzYXJpZXMgb2YgdGhlIExPUkQgc2hhbGwgYmUgYnJva2VuIHRvIHBpZWNlczsgb3V0IG9mIGhlYXZlbiBzaGFsbCBoZSB0aHVuZGVyIHVwb24gdGhlbTogdGhlIExPUkQgc2hhbGwganVkZ2UgdGhlIGVuZHMgb2YgdGhlIGVhcnRoOyBhbmQgaGUgc2hhbGwgZ2l2ZSBzdHJlbmd0aCB1bnRvIGhpcyBraW5nLCBhbmQgZXhhbHQgdGhlIGhvcm4gb2YgaGlzIGFub2ludGVkLgpBbmQgRWxrYW5haCB3ZW50IHRvIFJhbWFoIHRvIGhpcyBob3VzZS4gQW5kIHRoZSBjaGlsZCBkaWQgbWluaXN0ZXIgdW50byB0aGUgTE9SRCBiZWZvcmUgRWxpIHRoZSBwcmllc3QuCk5vdyB0aGUgc29ucyBvZiBFbGkgd2VyZSBzb25zIG9mIEJlbGlhbDsgdGhleSBrbmV3IG5vdCB0aGUgTE9SRC4KQW5kIHRoZSBwcmllc3QncyBjdXN0b20gd2l0aCB0aGUgcGVvcGxlIHdhcywgdGhhdCwgd2hlbiBhbnkgbWFuIG9mZmVyZWQgc2FjcmlmaWNlLCB0aGUgcHJpZXN0J3Mgc2VydmFudCBjYW1lLCB3aGlsZSB0aGUgZmxlc2ggd2FzIGluIHNlZXRoaW5nLCB3aXRoIGEgZmxlc2hob29rIG9mIHRocmVlIHRlZXRoIGluIGhpcyBoYW5kOwpBbmQgaGUgc3RydWNrIGl0IGludG8gdGhlIHBhbiwgb3Iga2V0dGxlLCBvciBjYWxkcm9uLCBvciBwb3Q7IGFsbCB0aGF0IHRoZSBmbGVzaGhvb2sgYnJvdWdodCB1cCB0aGUgcHJpZXN0IHRvb2sgZm9yIGhpbXNlbGYuIFNvIHRoZXkgZGlkIGluIFNoaWxvaCB1bnRvIGFsbCB0aGUgSXNyYWVsaXRlcyB0aGF0IGNhbWUgdGhpdGhlci4KQWxzbyBiZWZvcmUgdGhleSBidXJudCB0aGUgZmF0LCB0aGUgcHJpZXN0J3Mgc2VydmFudCBjYW1lLCBhbmQgc2FpZCB0byB0aGUgbWFuIHRoYXQgc2FjcmlmaWNlZCwgR2l2ZSBmbGVzaCB0byByb2FzdCBmb3IgdGhlIHByaWVzdDsgZm9yIGhlIHdpbGwgbm90IGhhdmUgc29kZGVuIGZsZXNoIG9mIHRoZWUsIGJ1dCByYXcuCkFuZCBpZiBhbnkgbWFuIHNhaWQgdW50byBoaW0sIExldCB0aGVtIG5vdCBmYWlsIHRvIGJ1cm4gdGhlIGZhdCBwcmVzZW50bHksIGFuZCB0aGVuIHRha2UgYXMgbXVjaCBhcyB0aHkgc291bCBkZXNpcmV0aDsgdGhlbiBoZSB3b3VsZCBhbnN3ZXIgaGltLCBOYXk7IGJ1dCB0aG91IHNoYWx0IGdpdmUgaXQgbWUgbm93OiBhbmQgaWYgbm90LCBJIHdpbGwgdGFrZSBpdCBieSBmb3JjZS4KV2hlcmVmb3JlIHRoZSBzaW4gb2YgdGhlIHlvdW5nIG1lbiB3YXMgdmVyeSBncmVhdCBiZWZvcmUgdGhlIExPUkQ6IGZvciBtZW4gYWJob3JyZWQgdGhlIG9mZmVyaW5nIG9mIHRoZSBMT1JELgpCdXQgU2FtdWVsIG1pbmlzdGVyZWQgYmVmb3JlIHRoZSBMT1JELCBiZWluZyBhIGNoaWxkLCBnaXJkZWQgd2l0aCBhIGxpbmVuIGVwaG9kLgpNb3Jlb3ZlciBoaXMgbW90aGVyIG1hZGUgaGltIGEgbGl0dGxlIGNvYXQsIGFuZCBicm91Z2h0IGl0IHRvIGhpbSBmcm9tIHllYXIgdG8geWVhciwgd2hlbiBzaGUgY2FtZSB1cCB3aXRoIGhlciBodXNiYW5kIHRvIG9mZmVyIHRoZSB5ZWFybHkgc2FjcmlmaWNlLgpBbmQgRWxpIGJsZXNzZWQgRWxrYW5haCBhbmQgaGlzIHdpZmUsIGFuZCBzYWlkLCBUaGUgTE9SRCBnaXZlIHRoZWUgc2VlZCBvZiB0aGlzIHdvbWFuIGZvciB0aGUgbG9hbiB3aGljaCBpcyBsZW50IHRvIHRoZSBMT1JELiBBbmQgdGhleSB3ZW50IHVudG8gdGhlaXIgb3duIGhvbWUuCkFuZCB0aGUgTE9SRCB2aXNpdGVkIEhhbm5haCwgc28gdGhhdCBzaGUgY29uY2VpdmVkLCBhbmQgYmFyZSB0aHJlZSBzb25zIGFuZCB0d28gZGF1Z2h0ZXJzLiBBbmQgdGhlIGNoaWxkIFNhbXVlbCBncmV3IGJlZm9yZSB0aGUgTE9SRC4KTm93IEVsaSB3YXMgdmVyeSBvbGQsIGFuZCBoZWFyZCBhbGwgdGhhdCBoaXMgc29ucyBkaWQgdW50byBhbGwgSXNyYWVsOyBhbmQgaG93IHRoZXkgbGF5IHdpdGggdGhlIHdvbWVuIHRoYXQgYXNzZW1ibGVkIGF0IHRoZSBkb29yIG9mIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBjb25ncmVnYXRpb24uCkFuZCBoZSBzYWlkIHVudG8gdGhlbSwgV2h5IGRvIHllIHN1Y2ggdGhpbmdzPyBmb3IgSSBoZWFyIG9mIHlvdXIgZXZpbCBkZWFsaW5ncyBieSBhbGwgdGhpcyBwZW9wbGUuCk5heSwgbXkgc29uczsgZm9yIGl0IGlzIG5vIGdvb2QgcmVwb3J0IHRoYXQgSSBoZWFyOiB5ZSBtYWtlIHRoZSBMT1JEJ3MgcGVvcGxlIHRvIHRyYW5zZ3Jlc3MuCklmIG9uZSBtYW4gc2luIGFnYWluc3QgYW5vdGhlciwgdGhlIGp1ZGdlIHNoYWxsIGp1ZGdlIGhpbTogYnV0IGlmIGEgbWFuIHNpbiBhZ2FpbnN0IHRoZSBMT1JELCB3aG8gc2hhbGwgaW50cmVhdCBmb3IgaGltPyBOb3R3aXRoc3RhbmRpbmcgdGhleSBoZWFya2VuZWQgbm90IHVudG8gdGhlIHZvaWNlIG9mIHRoZWlyIGZhdGhlciwgYmVjYXVzZSB0aGUgTE9SRCB3b3VsZCBzbGF5IHRoZW0uCkFuZCB0aGUgY2hpbGQgU2FtdWVsIGdyZXcgb24sIGFuZCB3YXMgaW4gZmF2b3VyIGJvdGggd2l0aCB0aGUgTE9SRCwgYW5kIGFsc28gd2l0aCBtZW4uCkFuZCB0aGVyZSBjYW1lIGEgbWFuIG9mIEdvZCB1bnRvIEVsaSwgYW5kIHNhaWQgdW50byBoaW0sIFRodXMgc2FpdGggdGhlIExPUkQsIERpZCBJIHBsYWlubHkgYXBwZWFyIHVudG8gdGhlIGhvdXNlIG9mIHRoeSBmYXRoZXIsIHdoZW4gdGhleSB3ZXJlIGluIEVneXB0IGluIFBoYXJhb2gncyBob3VzZT8KQW5kIGRpZCBJIGNob29zZSBoaW0gb3V0IG9mIGFsbCB0aGUgdHJpYmVzIG9mIElzcmFlbCB0byBiZSBteSBwcmllc3QsIHRvIG9mZmVyIHVwb24gbWluZSBhbHRhciwgdG8gYnVybiBpbmNlbnNlLCB0byB3ZWFyIGFuIGVwaG9kIGJlZm9yZSBtZT8gYW5kIGRpZCBJIGdpdmUgdW50byB0aGUgaG91c2Ugb2YgdGh5IGZhdGhlciBhbGwgdGhlIG9mZmVyaW5ncyBtYWRlIGJ5IGZpcmUgb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbD8KV2hlcmVmb3JlIGtpY2sgeWUgYXQgbXkgc2FjcmlmaWNlIGFuZCBhdCBtaW5lIG9mZmVyaW5nLCB3aGljaCBJIGhhdmUgY29tbWFuZGVkIGluIG15IGhhYml0YXRpb247IGFuZCBob25vdXJlc3QgdGh5IHNvbnMgYWJvdmUgbWUsIHRvIG1ha2UgeW91cnNlbHZlcyBmYXQgd2l0aCB0aGUgY2hpZWZlc3Qgb2YgYWxsIHRoZSBvZmZlcmluZ3Mgb2YgSXNyYWVsIG15IHBlb3BsZT8KV2hlcmVmb3JlIHRoZSBMT1JEIEdvZCBvZiBJc3JhZWwgc2FpdGgsIEkgc2FpZCBpbmRlZWQgdGhhdCB0aHkgaG91c2UsIGFuZCB0aGUgaG91c2Ugb2YgdGh5IGZhdGhlciwgc2hvdWxkIHdhbGsgYmVmb3JlIG1lIGZvciBldmVyOiBidXQgbm93IHRoZSBMT1JEIHNhaXRoLCBCZSBpdCBmYXIgZnJvbSBtZTsgZm9yIHRoZW0gdGhhdCBob25vdXIgbWUgSSB3aWxsIGhvbm91ciwgYW5kIHRoZXkgdGhhdCBkZXNwaXNlIG1lIHNoYWxsIGJlIGxpZ2h0bHkgZXN0ZWVtZWQuCkJlaG9sZCwgdGhlIGRheXMgY29tZSwgdGhhdCBJIHdpbGwgY3V0IG9mZiB0aGluZSBhcm0sIGFuZCB0aGUgYXJtIG9mIHRoeSBmYXRoZXIncyBob3VzZSwgdGhhdCB0aGVyZSBzaGFsbCBub3QgYmUgYW4gb2xkIG1hbiBpbiB0aGluZSBob3VzZS4KQW5kIHRob3Ugc2hhbHQgc2VlIGFuIGVuZW15IGluIG15IGhhYml0YXRpb24sIGluIGFsbCB0aGUgd2VhbHRoIHdoaWNoIEdvZCBzaGFsbCBnaXZlIElzcmFlbDogYW5kIHRoZXJlIHNoYWxsIG5vdCBiZSBhbiBvbGQgbWFuIGluIHRoaW5lIGhvdXNlIGZvciBldmVyLgpBbmQgdGhlIG1hbiBvZiB0aGluZSwgd2hvbSBJIHNoYWxsIG5vdCBjdXQgb2ZmIGZyb20gbWluZSBhbHRhciwgc2hhbGwgYmUgdG8gY29uc3VtZSB0aGluZSBleWVzLCBhbmQgdG8gZ3JpZXZlIHRoaW5lIGhlYXJ0OiBhbmQgYWxsIHRoZSBpbmNyZWFzZSBvZiB0aGluZSBob3VzZSBzaGFsbCBkaWUgaW4gdGhlIGZsb3dlciBvZiB0aGVpciBhZ2UuCkFuZCB0aGlzIHNoYWxsIGJlIGEgc2lnbiB1bnRvIHRoZWUsIHRoYXQgc2hhbGwgY29tZSB1cG9uIHRoeSB0d28gc29ucywgb24gSG9waG5pIGFuZCBQaGluZWhhczsgaW4gb25lIGRheSB0aGV5IHNoYWxsIGRpZSBib3RoIG9mIHRoZW0uCkFuZCBJIHdpbGwgcmFpc2UgbWUgdXAgYSBmYWl0aGZ1bCBwcmllc3QsIHRoYXQgc2hhbGwgZG8gYWNjb3JkaW5nIHRvIHRoYXQgd2hpY2ggaXMgaW4gbWluZSBoZWFydCBhbmQgaW4gbXkgbWluZDogYW5kIEkgd2lsbCBidWlsZCBoaW0gYSBzdXJlIGhvdXNlOyBhbmQgaGUgc2hhbGwgd2FsayBiZWZvcmUgbWluZSBhbm9pbnRlZCBmb3IgZXZlci4KQW5kIGl0IHNoYWxsIGNvbWUgdG8gcGFzcywgdGhhdCBldmVyeSBvbmUgdGhhdCBpcyBsZWZ0IGluIHRoaW5lIGhvdXNlIHNoYWxsIGNvbWUgYW5kIGNyb3VjaCB0byBoaW0gZm9yIGEgcGllY2Ugb2Ygc2lsdmVyIGFuZCBhIG1vcnNlbCBvZiBicmVhZCwgYW5kIHNoYWxsIHNheSwgUHV0IG1lLCBJIHByYXkgdGhlZSwgaW50byBvbmUgb2YgdGhlIHByaWVzdHMnIG9mZmljZXMsIHRoYXQgSSBtYXkgZWF0IGEgcGllY2Ugb2YgYnJlYWQuCkFuZCB0aGUgY2hpbGQgU2FtdWVsIG1pbmlzdGVyZWQgdW50byB0aGUgTE9SRCBiZWZvcmUgRWxpLiBBbmQgdGhlIHdvcmQgb2YgdGhlIExPUkQgd2FzIHByZWNpb3VzIGluIHRob3NlIGRheXM7IHRoZXJlIHdhcyBubyBvcGVuIHZpc2lvbi4KQW5kIGl0IGNhbWUgdG8gcGFzcyBhdCB0aGF0IHRpbWUsIHdoZW4gRWxpIHdhcyBsYWlkIGRvd24gaW4gaGlzIHBsYWNlLCBhbmQgaGlzIGV5ZXMgYmVnYW4gdG8gd2F4IGRpbSwgdGhhdCBoZSBjb3VsZCBub3Qgc2VlOwpBbmQgZXJlIHRoZSBsYW1wIG9mIEdvZCB3ZW50IG91dCBpbiB0aGUgdGVtcGxlIG9mIHRoZSBMT1JELCB3aGVyZSB0aGUgYXJrIG9mIEdvZCB3YXMsIGFuZCBTYW11ZWwgd2FzIGxhaWQgZG93biB0byBzbGVlcDsKVGhhdCB0aGUgTE9SRCBjYWxsZWQgU2FtdWVsOiBhbmQgaGUgYW5zd2VyZWQsIEhlcmUgYW0gSS4KQW5kIGhlIHJhbiB1bnRvIEVsaSwgYW5kIHNhaWQsIEhlcmUgYW0gSTsgZm9yIHRob3UgY2FsbGVkc3QgbWUuIEFuZCBoZSBzYWlkLCBJIGNhbGxlZCBub3Q7IGxpZSBkb3duIGFnYWluLiBBbmQgaGUgd2VudCBhbmQgbGF5IGRvd24uCkFuZCB0aGUgTE9SRCBjYWxsZWQgeWV0IGFnYWluLCBTYW11ZWwuIEFuZCBTYW11ZWwgYXJvc2UgYW5kIHdlbnQgdG8gRWxpLCBhbmQgc2FpZCwgSGVyZSBhbSBJOyBmb3IgdGhvdSBkaWRzdCBjYWxsIG1lLiBBbmQgaGUgYW5zd2VyZWQsIEkgY2FsbGVkIG5vdCwgbXkgc29uOyBsaWUgZG93biBhZ2Fpbi4KTm93IFNhbXVlbCBkaWQgbm90IHlldCBrbm93IHRoZSBMT1JELCBuZWl0aGVyIHdhcyB0aGUgd29yZCBvZiB0aGUgTE9SRCB5ZXQgcmV2ZWFsZWQgdW50byBoaW0uCkFuZCB0aGUgTE9SRCBjYWxsZWQgU2FtdWVsIGFnYWluIHRoZSB0aGlyZCB0aW1lLiBBbmQgaGUgYXJvc2UgYW5kIHdlbnQgdG8gRWxpLCBhbmQgc2FpZCwgSGVyZSBhbSBJOyBmb3IgdGhvdSBkaWRzdCBjYWxsIG1lLiBBbmQgRWxpIHBlcmNlaXZlZCB0aGF0IHRoZSBMT1JEIGhhZCBjYWxsZWQgdGhlIGNoaWxkLgpUaGVyZWZvcmUgRWxpIHNhaWQgdW50byBTYW11ZWwsIEdvLCBsaWUgZG93bjogYW5kIGl0IHNoYWxsIGJlLCBpZiBoZSBjYWxsIHRoZWUsIHRoYXQgdGhvdSBzaGFsdCBzYXksIFNwZWFrLCBMT1JEOyBmb3IgdGh5IHNlcnZhbnQgaGVhcmV0aC4gU28gU2FtdWVsIHdlbnQgYW5kIGxheSBkb3duIGluIGhpcyBwbGFjZS4KQW5kIHRoZSBMT1JEIGNhbWUsIGFuZCBzdG9vZCwgYW5kIGNhbGxlZCBhcyBhdCBvdGhlciB0aW1lcywgU2FtdWVsLCBTYW11ZWwuIFRoZW4gU2FtdWVsIGFuc3dlcmVkLCBTcGVhazsgZm9yIHRoeSBzZXJ2YW50IGhlYXJldGguCkFuZCB0aGUgTE9SRCBzYWlkIHRvIFNhbXVlbCwgQmVob2xkLCBJIHdpbGwgZG8gYSB0aGluZyBpbiBJc3JhZWwsIGF0IHdoaWNoIGJvdGggdGhlIGVhcnMgb2YgZXZlcnkgb25lIHRoYXQgaGVhcmV0aCBpdCBzaGFsbCB0aW5nbGUuCkluIHRoYXQgZGF5IEkgd2lsbCBwZXJmb3JtIGFnYWluc3QgRWxpIGFsbCB0aGluZ3Mgd2hpY2ggSSBoYXZlIHNwb2tlbiBjb25jZXJuaW5nIGhpcyBob3VzZTogd2hlbiBJIGJlZ2luLCBJIHdpbGwgYWxzbyBtYWtlIGFuIGVuZC4KRm9yIEkgaGF2ZSB0b2xkIGhpbSB0aGF0IEkgd2lsbCBqdWRnZSBoaXMgaG91c2UgZm9yIGV2ZXIgZm9yIHRoZSBpbmlxdWl0eSB3aGljaCBoZSBrbm93ZXRoOyBiZWNhdXNlIGhpcyBzb25zIG1hZGUgdGhlbXNlbHZlcyB2aWxlLCBhbmQgaGUgcmVzdHJhaW5lZCB0aGVtIG5vdC4KQW5kIHRoZXJlZm9yZSBJIGhhdmUgc3dvcm4gdW50byB0aGUgaG91c2Ugb2YgRWxpLCB0aGF0IHRoZSBpbmlxdWl0eSBvZiBFbGkncyBob3VzZSBzaGFsbCBub3QgYmUgcHVyZ2VkIHdpdGggc2FjcmlmaWNlIG5vciBvZmZlcmluZyBmb3IgZXZlci4KQW5kIFNhbXVlbCBsYXkgdW50aWwgdGhlIG1vcm5pbmcsIGFuZCBvcGVuZWQgdGhlIGRvb3JzIG9mIHRoZSBob3VzZSBvZiB0aGUgTE9SRC4gQW5kIFNhbXVlbCBmZWFyZWQgdG8gc2hldyBFbGkgdGhlIHZpc2lvbi4KVGhlbiBFbGkgY2FsbGVkIFNhbXVlbCwgYW5kIHNhaWQsIFNhbXVlbCwgbXkgc29uLiBBbmQgaGUgYW5zd2VyZWQsIEhlcmUgYW0gSS4KQW5kIGhlIHNhaWQsIFdoYXQgaXMgdGhlIHRoaW5nIHRoYXQgdGhlIExPUkQgaGF0aCBzYWlkIHVudG8gdGhlZT8gSSBwcmF5IHRoZWUgaGlkZSBpdCBub3QgZnJvbSBtZTogR29kIGRvIHNvIHRvIHRoZWUsIGFuZCBtb3JlIGFsc28sIGlmIHRob3UgaGlkZSBhbnkgdGhpbmcgZnJvbSBtZSBvZiBhbGwgdGhlIHRoaW5ncyB0aGF0IGhlIHNhaWQgdW50byB0aGVlLgpBbmQgU2FtdWVsIHRvbGQgaGltIGV2ZXJ5IHdoaXQsIGFuZCBoaWQgbm90aGluZyBmcm9tIGhpbS4gQW5kIGhlIHNhaWQsIEl0IGlzIHRoZSBMT1JEOiBsZXQgaGltIGRvIHdoYXQgc2VlbWV0aCBoaW0gZ29vZC4KQW5kIFNhbXVlbCBncmV3LCBhbmQgdGhlIExPUkQgd2FzIHdpdGggaGltLCBhbmQgZGlkIGxldCBub25lIG9mIGhpcyB3b3JkcyBmYWxsIHRvIHRoZSBncm91bmQuCkFuZCBhbGwgSXNyYWVsIGZyb20gRGFuIGV2ZW4gdG8gQmVlcnNoZWJhIGtuZXcgdGhhdCBTYW11ZWwgd2FzIGVzdGFibGlzaGVkIHRvIGJlIGEgcHJvcGhldCBvZiB0aGUgTE9SRC4KQW5kIHRoZSBMT1JEIGFwcGVhcmVkIGFnYWluIGluIFNoaWxvaDogZm9yIHRoZSBMT1JEIHJldmVhbGVkIGhpbXNlbGYgdG8gU2FtdWVsIGluIFNoaWxvaCBieSB0aGUgd29yZCBvZiB0aGUgTE9SRC4KQW5kIHRoZSB3b3JkIG9mIFNhbXVlbCBjYW1lIHRvIGFsbCBJc3JhZWwuIE5vdyBJc3JhZWwgd2VudCBvdXQgYWdhaW5zdCB0aGUgUGhpbGlzdGluZXMgdG8gYmF0dGxlLCBhbmQgcGl0Y2hlZCBiZXNpZGUgRWJlbmV6ZXI6IGFuZCB0aGUgUGhpbGlzdGluZXMgcGl0Y2hlZCBpbiBBcGhlay4KQW5kIHRoZSBQaGlsaXN0aW5lcyBwdXQgdGhlbXNlbHZlcyBpbiBhcnJheSBhZ2FpbnN0IElzcmFlbDogYW5kIHdoZW4gdGhleSBqb2luZWQgYmF0dGxlLCBJc3JhZWwgd2FzIHNtaXR0ZW4gYmVmb3JlIHRoZSBQaGlsaXN0aW5lczogYW5kIHRoZXkgc2xldyBvZiB0aGUgYXJteSBpbiB0aGUgZmllbGQgYWJvdXQgZm91ciB0aG91c2FuZCBtZW4uCkFuZCB3aGVuIHRoZSBwZW9wbGUgd2VyZSBjb21lIGludG8gdGhlIGNhbXAsIHRoZSBlbGRlcnMgb2YgSXNyYWVsIHNhaWQsIFdoZXJlZm9yZSBoYXRoIHRoZSBMT1JEIHNtaXR0ZW4gdXMgdG8gZGF5IGJlZm9yZSB0aGUgUGhpbGlzdGluZXM/IExldCB1cyBmZXRjaCB0aGUgYXJrIG9mIHRoZSBjb3ZlbmFudCBvZiB0aGUgTE9SRCBvdXQgb2YgU2hpbG9oIHVudG8gdXMsIHRoYXQsIHdoZW4gaXQgY29tZXRoIGFtb25nIHVzLCBpdCBtYXkgc2F2ZSB1cyBvdXQgb2YgdGhlIGhhbmQgb2Ygb3VyIGVuZW1pZXMuClNvIHRoZSBwZW9wbGUgc2VudCB0byBTaGlsb2gsIHRoYXQgdGhleSBtaWdodCBicmluZyBmcm9tIHRoZW5jZSB0aGUgYXJrIG9mIHRoZSBjb3ZlbmFudCBvZiB0aGUgTE9SRCBvZiBob3N0cywgd2hpY2ggZHdlbGxldGggYmV0d2VlbiB0aGUgY2hlcnViaW1zOiBhbmQgdGhlIHR3byBzb25zIG9mIEVsaSwgSG9waG5pIGFuZCBQaGluZWhhcywgd2VyZSB0aGVyZSB3aXRoIHRoZSBhcmsgb2YgdGhlIGNvdmVuYW50IG9mIEdvZC4KQW5kIHdoZW4gdGhlIGFyayBvZiB0aGUgY292ZW5hbnQgb2YgdGhlIExPUkQgY2FtZSBpbnRvIHRoZSBjYW1wLCBhbGwgSXNyYWVsIHNob3V0ZWQgd2l0aCBhIGdyZWF0IHNob3V0LCBzbyB0aGF0IHRoZSBlYXJ0aCByYW5nIGFnYWluLgpBbmQgd2hlbiB0aGUgUGhpbGlzdGluZXMgaGVhcmQgdGhlIG5vaXNlIG9mIHRoZSBzaG91dCwgdGhleSBzYWlkLCBXaGF0IG1lYW5ldGggdGhlIG5vaXNlIG9mIHRoaXMgZ3JlYXQgc2hvdXQgaW4gdGhlIGNhbXAgb2YgdGhlIEhlYnJld3M/IEFuZCB0aGV5IHVuZGVyc3Rvb2QgdGhhdCB0aGUgYXJrIG9mIHRoZSBMT1JEIHdhcyBjb21lIGludG8gdGhlIGNhbXAuCkFuZCB0aGUgUGhpbGlzdGluZXMgd2VyZSBhZnJhaWQsIGZvciB0aGV5IHNhaWQsIEdvZCBpcyBjb21lIGludG8gdGhlIGNhbXAuIEFuZCB0aGV5IHNhaWQsIFdvZSB1bnRvIHVzISBmb3IgdGhlcmUgaGF0aCBub3QgYmVlbiBzdWNoIGEgdGhpbmcgaGVyZXRvZm9yZS4KV29lIHVudG8gdXMhIHdobyBzaGFsbCBkZWxpdmVyIHVzIG91dCBvZiB0aGUgaGFuZCBvZiB0aGVzZSBtaWdodHkgR29kcz8gdGhlc2UgYXJlIHRoZSBHb2RzIHRoYXQgc21vdGUgdGhlIEVneXB0aWFucyB3aXRoIGFsbCB0aGUgcGxhZ3VlcyBpbiB0aGUgd2lsZGVybmVzcy4KQmUgc3Ryb25nIGFuZCBxdWl0IHlvdXJzZWx2ZXMgbGlrZSBtZW4sIE8geWUgUGhpbGlzdGluZXMsIHRoYXQgeWUgYmUgbm90IHNlcnZhbnRzIHVudG8gdGhlIEhlYnJld3MsIGFzIHRoZXkgaGF2ZSBiZWVuIHRvIHlvdTogcXVpdCB5b3Vyc2VsdmVzIGxpa2UgbWVuLCBhbmQgZmlnaHQuCkFuZCB0aGUgUGhpbGlzdGluZXMgZm91Z2h0LCBhbmQgSXNyYWVsIHdhcyBzbWl0dGVuLCBhbmQgdGhleSBmbGVkIGV2ZXJ5IG1hbiBpbnRvIGhpcyB0ZW50OiBhbmQgdGhlcmUgd2FzIGEgdmVyeSBncmVhdCBzbGF1Z2h0ZXI7IGZvciB0aGVyZSBmZWxsIG9mIElzcmFlbCB0aGlydHkgdGhvdXNhbmQgZm9vdG1lbi4KQW5kIHRoZSBhcmsgb2YgR29kIHdhcyB0YWtlbjsgYW5kIHRoZSB0d28gc29ucyBvZiBFbGksIEhvcGhuaSBhbmQgUGhpbmVoYXMsIHdlcmUgc2xhaW4uCkFuZCB0aGVyZSByYW4gYSBtYW4gb2YgQmVuamFtaW4gb3V0IG9mIHRoZSBhcm15LCBhbmQgY2FtZSB0byBTaGlsb2ggdGhlIHNhbWUgZGF5IHdpdGggaGlzIGNsb3RoZXMgcmVudCwgYW5kIHdpdGggZWFydGggdXBvbiBoaXMgaGVhZC4KQW5kIHdoZW4gaGUgY2FtZSwgbG8sIEVsaSBzYXQgdXBvbiBhIHNlYXQgYnkgdGhlIHdheXNpZGUgd2F0Y2hpbmc6IGZvciBoaXMgaGVhcnQgdHJlbWJsZWQgZm9yIHRoZSBhcmsgb2YgR29kLiBBbmQgd2hlbiB0aGUgbWFuIGNhbWUgaW50byB0aGUgY2l0eSwgYW5kIHRvbGQgaXQsIGFsbCB0aGUgY2l0eSBjcmllZCBvdXQuCkFuZCB3aGVuIEVsaSBoZWFyZCB0aGUgbm9pc2Ugb2YgdGhlIGNyeWluZywgaGUgc2FpZCwgV2hhdCBtZWFuZXRoIHRoZSBub2lzZSBvZiB0aGlzIHR1bXVsdD8gQW5kIHRoZSBtYW4gY2FtZSBpbiBoYXN0aWx5LCBhbmQgdG9sZCBFbGkuCk5vdyBFbGkgd2FzIG5pbmV0eSBhbmQgZWlnaHQgeWVhcnMgb2xkOyBhbmQgaGlzIGV5ZXMgd2VyZSBkaW0sIHRoYXQgaGUgY291bGQgbm90IHNlZS4KQW5kIHRoZSBtYW4gc2FpZCB1bnRvIEVsaSwgSSBhbSBoZSB0aGF0IGNhbWUgb3V0IG9mIHRoZSBhcm15LCBhbmQgSSBmbGVkIHRvIGRheSBvdXQgb2YgdGhlIGFybXkuIEFuZCBoZSBzYWlkLCBXaGF0IGlzIHRoZXJlIGRvbmUsIG15IHNvbj8KQW5kIHRoZSBtZXNzZW5nZXIgYW5zd2VyZWQgYW5kIHNhaWQsIElzcmFlbCBpcyBmbGVkIGJlZm9yZSB0aGUgUGhpbGlzdGluZXMsIGFuZCB0aGVyZSBoYXRoIGJlZW4gYWxzbyBhIGdyZWF0IHNsYXVnaHRlciBhbW9uZyB0aGUgcGVvcGxlLCBhbmQgdGh5IHR3byBzb25zIGFsc28sIEhvcGhuaSBhbmQgUGhpbmVoYXMsIGFyZSBkZWFkLCBhbmQgdGhlIGFyayBvZiBHb2QgaXMgdGFrZW4uCkFuZCBpdCBjYW1lIHRvIHBhc3MsIHdoZW4gaGUgbWFkZSBtZW50aW9uIG9mIHRoZSBhcmsgb2YgR29kLCB0aGF0IGhlIGZlbGwgZnJvbSBvZmYgdGhlIHNlYXQgYmFja3dhcmQgYnkgdGhlIHNpZGUgb2YgdGhlIGdhdGUsIGFuZCBoaXMgbmVjayBicmFrZSwgYW5kIGhlIGRpZWQ6IGZvciBoZSB3YXMgYW4gb2xkIG1hbiwgYW5kIGhlYXZ5LiBBbmQgaGUgaGFkIGp1ZGdlZCBJc3JhZWwgZm9ydHkgeWVhcnMuCkFuZCBoaXMgZGF1Z2h0ZXIgaW4gbGF3LCBQaGluZWhhcycgd2lmZSwgd2FzIHdpdGggY2hpbGQsIG5lYXIgdG8gYmUgZGVsaXZlcmVkOiBhbmQgd2hlbiBzaGUgaGVhcmQgdGhlIHRpZGluZ3MgdGhhdCB0aGUgYXJrIG9mIEdvZCB3YXMgdGFrZW4sIGFuZCB0aGF0IGhlciBmYXRoZXIgaW4gbGF3IGFuZCBoZXIgaHVzYmFuZCB3ZXJlIGRlYWQsIHNoZSBib3dlZCBoZXJzZWxmIGFuZCB0cmF2YWlsZWQ7IGZvciBoZXIgcGFpbnMgY2FtZSB1cG9uIGhlci4KQW5kIGFib3V0IHRoZSB0aW1lIG9mIGhlciBkZWF0aCB0aGUgd29tZW4gdGhhdCBzdG9vZCBieSBoZXIgc2FpZCB1bnRvIGhlciwgRmVhciBub3Q7IGZvciB0aG91IGhhc3QgYm9ybiBhIHNvbi4gQnV0IHNoZSBhbnN3ZXJlZCBub3QsIG5laXRoZXIgZGlkIHNoZSByZWdhcmQgaXQuCkFuZCBzaGUgbmFtZWQgdGhlIGNoaWxkIEljaGFib2QsIHNheWluZywgVGhlIGdsb3J5IGlzIGRlcGFydGVkIGZyb20gSXNyYWVsOiBiZWNhdXNlIHRoZSBhcmsgb2YgR29kIHdhcyB0YWtlbiwgYW5kIGJlY2F1c2Ugb2YgaGVyIGZhdGhlciBpbiBsYXcgYW5kIGhlciBodXNiYW5kLgpBbmQgc2hlIHNhaWQsIFRoZSBnbG9yeSBpcyBkZXBhcnRlZCBmcm9tIElzcmFlbDogZm9yIHRoZSBhcmsgb2YgR29kIGlzIHRha2VuLgpBbmQgdGhlIFBoaWxpc3RpbmVzIHRvb2sgdGhlIGFyayBvZiBHb2QsIGFuZCBicm91Z2h0IGl0IGZyb20gRWJlbmV6ZXIgdW50byBBc2hkb2QuCldoZW4gdGhlIFBoaWxpc3RpbmVzIHRvb2sgdGhlIGFyayBvZiBHb2QsIHRoZXkgYnJvdWdodCBpdCBpbnRvIHRoZSBob3VzZSBvZiBEYWdvbiwgYW5kIHNldCBpdCBieSBEYWdvbi4KQW5kIHdoZW4gdGhleSBvZiBBc2hkb2QgYXJvc2UgZWFybHkgb24gdGhlIG1vcnJvdywgYmVob2xkLCBEYWdvbiB3YXMgZmFsbGVuIHVwb24gaGlzIGZhY2UgdG8gdGhlIGVhcnRoIGJlZm9yZSB0aGUgYXJrIG9mIHRoZSBMT1JELiBBbmQgdGhleSB0b29rIERhZ29uLCBhbmQgc2V0IGhpbSBpbiBoaXMgcGxhY2UgYWdhaW4uCkFuZCB3aGVuIHRoZXkgYXJvc2UgZWFybHkgb24gdGhlIG1vcnJvdyBtb3JuaW5nLCBiZWhvbGQsIERhZ29uIHdhcyBmYWxsZW4gdXBvbiBoaXMgZmFjZSB0byB0aGUgZ3JvdW5kIGJlZm9yZSB0aGUgYXJrIG9mIHRoZSBMT1JEOyBhbmQgdGhlIGhlYWQgb2YgRGFnb24gYW5kIGJvdGggdGhlIHBhbG1zIG9mIGhpcyBoYW5kcyB3ZXJlIGN1dCBvZmYgdXBvbiB0aGUgdGhyZXNob2xkOyBvbmx5IHRoZSBzdHVtcCBvZiBEYWdvbiB3YXMgbGVmdCB0byBoaW0uClRoZXJlZm9yZSBuZWl0aGVyIHRoZSBwcmllc3RzIG9mIERhZ29uLCBub3IgYW55IHRoYXQgY29tZSBpbnRvIERhZ29uJ3MgaG91c2UsIHRyZWFkIG9uIHRoZSB0aHJlc2hvbGQgb2YgRGFnb24gaW4gQXNoZG9kIHVudG8gdGhpcyBkYXkuCkJ1dCB0aGUgaGFuZCBvZiB0aGUgTE9SRCB3YXMgaGVhdnkgdXBvbiB0aGVtIG9mIEFzaGRvZCwgYW5kIGhlIGRlc3Ryb3llZCB0aGVtLCBhbmQgc21vdGUgdGhlbSB3aXRoIGVtZXJvZHMsIGV2ZW4gQXNoZG9kIGFuZCB0aGUgY29hc3RzIHRoZXJlb2YuCkFuZCB3aGVuIHRoZSBtZW4gb2YgQXNoZG9kIHNhdyB0aGF0IGl0IHdhcyBzbywgdGhleSBzYWlkLCBUaGUgYXJrIG9mIHRoZSBHb2Qgb2YgSXNyYWVsIHNoYWxsIG5vdCBhYmlkZSB3aXRoIHVzOiBmb3IgaGlzIGhhbmQgaXMgc29yZSB1cG9uIHVzLCBhbmQgdXBvbiBEYWdvbiBvdXIgZ29kLgpUaGV5IHNlbnQgdGhlcmVmb3JlIGFuZCBnYXRoZXJlZCBhbGwgdGhlIGxvcmRzIG9mIHRoZSBQaGlsaXN0aW5lcyB1bnRvIHRoZW0sIGFuZCBzYWlkLCBXaGF0IHNoYWxsIHdlIGRvIHdpdGggdGhlIGFyayBvZiB0aGUgR29kIG9mIElzcmFlbD8gQW5kIHRoZXkgYW5zd2VyZWQsIExldCB0aGUgYXJrIG9mIHRoZSBHb2Qgb2YgSXNyYWVsIGJlIGNhcnJpZWQgYWJvdXQgdW50byBHYXRoLiBBbmQgdGhleSBjYXJyaWVkIHRoZSBhcmsgb2YgdGhlIEdvZCBvZiBJc3JhZWwgYWJvdXQgdGhpdGhlci4KQW5kIGl0IHdhcyBzbywgdGhhdCwgYWZ0ZXIgdGhleSBoYWQgY2FycmllZCBpdCBhYm91dCwgdGhlIGhhbmQgb2YgdGhlIExPUkQgd2FzIGFnYWluc3QgdGhlIGNpdHkgd2l0aCBhIHZlcnkgZ3JlYXQgZGVzdHJ1Y3Rpb246IGFuZCBoZSBzbW90ZSB0aGUgbWVuIG9mIHRoZSBjaXR5LCBib3RoIHNtYWxsIGFuZCBncmVhdCwgYW5kIHRoZXkgaGFkIGVtZXJvZHMgaW4gdGhlaXIgc2VjcmV0IHBhcnRzLgpUaGVyZWZvcmUgdGhleSBzZW50IHRoZSBhcmsgb2YgR29kIHRvIEVrcm9uLiBBbmQgaXQgY2FtZSB0byBwYXNzLCBhcyB0aGUgYXJrIG9mIEdvZCBjYW1lIHRvIEVrcm9uLCB0aGF0IHRoZSBFa3Jvbml0ZXMgY3JpZWQgb3V0LCBzYXlpbmcsIFRoZXkgaGF2ZSBicm91Z2h0IGFib3V0IHRoZSBhcmsgb2YgdGhlIEdvZCBvZiBJc3JhZWwgdG8gdXMsIHRvIHNsYXkgdXMgYW5kIG91ciBwZW9wbGUuClNvIHRoZXkgc2VudCBhbmQgZ2F0aGVyZWQgdG9nZXRoZXIgYWxsIHRoZSBsb3JkcyBvZiB0aGUgUGhpbGlzdGluZXMsIGFuZCBzYWlkLCBTZW5kIGF3YXkgdGhlIGFyayBvZiB0aGUgR29kIG9mIElzcmFlbCwgYW5kIGxldCBpdCBnbyBhZ2FpbiB0byBoaXMgb3duIHBsYWNlLCB0aGF0IGl0IHNsYXkgdXMgbm90LCBhbmQgb3VyIHBlb3BsZTogZm9yIHRoZXJlIHdhcyBhIGRlYWRseSBkZXN0cnVjdGlvbiB0aHJvdWdob3V0IGFsbCB0aGUgY2l0eTsgdGhlIGhhbmQgb2YgR29kIHdhcyB2ZXJ5IGhlYXZ5IHRoZXJlLgpBbmQgdGhlIG1lbiB0aGF0IGRpZWQgbm90IHdlcmUgc21pdHRlbiB3aXRoIHRoZSBlbWVyb2RzOiBhbmQgdGhlIGNyeSBvZiB0aGUgY2l0eSB3ZW50IHVwIHRvIGhlYXZlbi4KQW5kIHRoZSBhcmsgb2YgdGhlIExPUkQgd2FzIGluIHRoZSBjb3VudHJ5IG9mIHRoZSBQaGlsaXN0aW5lcyBzZXZlbiBtb250aHMuCkFuZCB0aGUgUGhpbGlzdGluZXMgY2FsbGVkIGZvciB0aGUgcHJpZXN0cyBhbmQgdGhlIGRpdmluZXJzLCBzYXlpbmcsIFdoYXQgc2hhbGwgd2UgZG8gdG8gdGhlIGFyayBvZiB0aGUgTE9SRD8gdGVsbCB1cyB3aGVyZXdpdGggd2Ugc2hhbGwgc2VuZCBpdCB0byBoaXMgcGxhY2UuCkFuZCB0aGV5IHNhaWQsIElmIHllIHNlbmQgYXdheSB0aGUgYXJrIG9mIHRoZSBHb2Qgb2YgSXNyYWVsLCBzZW5kIGl0IG5vdCBlbXB0eTsgYnV0IGluIGFueSB3aXNlIHJldHVybiBoaW0gYSB0cmVzcGFzcyBvZmZlcmluZzogdGhlbiB5ZSBzaGFsbCBiZSBoZWFsZWQsIGFuZCBpdCBzaGFsbCBiZSBrbm93biB0byB5b3Ugd2h5IGhpcyBoYW5kIGlzIG5vdCByZW1vdmVkIGZyb20geW91LgpUaGVuIHNhaWQgdGhleSwgV2hhdCBzaGFsbCBiZSB0aGUgdHJlc3Bhc3Mgb2ZmZXJpbmcgd2hpY2ggd2Ugc2hhbGwgcmV0dXJuIHRvIGhpbT8gVGhleSBhbnN3ZXJlZCwgRml2ZSBnb2xkZW4gZW1lcm9kcywgYW5kIGZpdmUgZ29sZGVuIG1pY2UsIGFjY29yZGluZyB0byB0aGUgbnVtYmVyIG9mIHRoZSBsb3JkcyBvZiB0aGUgUGhpbGlzdGluZXM6IGZvciBvbmUgcGxhZ3VlIHdhcyBvbiB5b3UgYWxsLCBhbmQgb24geW91ciBsb3Jkcy4KV2hlcmVmb3JlIHllIHNoYWxsIG1ha2UgaW1hZ2VzIG9mIHlvdXIgZW1lcm9kcywgYW5kIGltYWdlcyBvZiB5b3VyIG1pY2UgdGhhdCBtYXIgdGhlIGxhbmQ7IGFuZCB5ZSBzaGFsbCBnaXZlIGdsb3J5IHVudG8gdGhlIEdvZCBvZiBJc3JhZWw6IHBlcmFkdmVudHVyZSBoZSB3aWxsIGxpZ2h0ZW4gaGlzIGhhbmQgZnJvbSBvZmYgeW91LCBhbmQgZnJvbSBvZmYgeW91ciBnb2RzLCBhbmQgZnJvbSBvZmYgeW91ciBsYW5kLgpXaGVyZWZvcmUgdGhlbiBkbyB5ZSBoYXJkZW4geW91ciBoZWFydHMsIGFzIHRoZSBFZ3lwdGlhbnMgYW5kIFBoYXJhb2ggaGFyZGVuZWQgdGhlaXIgaGVhcnRzPyB3aGVuIGhlIGhhZCB3cm91Z2h0IHdvbmRlcmZ1bGx5IGFtb25nIHRoZW0sIGRpZCB0aGV5IG5vdCBsZXQgdGhlIHBlb3BsZSBnbywgYW5kIHRoZXkgZGVwYXJ0ZWQ/Ck5vdyB0aGVyZWZvcmUgbWFrZSBhIG5ldyBjYXJ0LCBhbmQgdGFrZSB0d28gbWlsY2gga2luZSwgb24gd2hpY2ggdGhlcmUgaGF0aCBjb21lIG5vIHlva2UsIGFuZCB0aWUgdGhlIGtpbmUgdG8gdGhlIGNhcnQsIGFuZCBicmluZyB0aGVpciBjYWx2ZXMgaG9tZSBmcm9tIHRoZW06CkFuZCB0YWtlIHRoZSBhcmsgb2YgdGhlIExPUkQsIGFuZCBsYXkgaXQgdXBvbiB0aGUgY2FydDsgYW5kIHB1dCB0aGUgamV3ZWxzIG9mIGdvbGQsIHdoaWNoIHllIHJldHVybiBoaW0gZm9yIGEgdHJlc3Bhc3Mgb2ZmZXJpbmcsIGluIGEgY29mZmVyIGJ5IHRoZSBzaWRlIHRoZXJlb2Y7IGFuZCBzZW5kIGl0IGF3YXksIHRoYXQgaXQgbWF5IGdvLgpBbmQgc2VlLCBpZiBpdCBnb2V0aCB1cCBieSB0aGUgd2F5IG9mIGhpcyBvd24gY29hc3QgdG8gQmV0aHNoZW1lc2gsIHRoZW4gaGUgaGF0aCBkb25lIHVzIHRoaXMgZ3JlYXQgZXZpbDogYnV0IGlmIG5vdCwgdGhlbiB3ZSBzaGFsbCBrbm93IHRoYXQgaXQgaXMgbm90IGhpcyBoYW5kIHRoYXQgc21vdGUgdXM6IGl0IHdhcyBhIGNoYW5jZSB0aGF0IGhhcHBlbmVkIHRvIHVzLgpBbmQgdGhlIG1lbiBkaWQgc287IGFuZCB0b29rIHR3byBtaWxjaCBraW5lLCBhbmQgdGllZCB0aGVtIHRvIHRoZSBjYXJ0LCBhbmQgc2h1dCB1cCB0aGVpciBjYWx2ZXMgYXQgaG9tZToKQW5kIHRoZXkgbGFpZCB0aGUgYXJrIG9mIHRoZSBMT1JEIHVwb24gdGhlIGNhcnQsIGFuZCB0aGUgY29mZmVyIHdpdGggdGhlIG1pY2Ugb2YgZ29sZCBhbmQgdGhlIGltYWdlcyBvZiB0aGVpciBlbWVyb2RzLgpBbmQgdGhlIGtpbmUgdG9vayB0aGUgc3RyYWlnaHQgd2F5IHRvIHRoZSB3YXkgb2YgQmV0aHNoZW1lc2gsIGFuZCB3ZW50IGFsb25nIHRoZSBoaWdod2F5LCBsb3dpbmcgYXMgdGhleSB3ZW50LCBhbmQgdHVybmVkIG5vdCBhc2lkZSB0byB0aGUgcmlnaHQgaGFuZCBvciB0byB0aGUgbGVmdDsgYW5kIHRoZSBsb3JkcyBvZiB0aGUgUGhpbGlzdGluZXMgd2VudCBhZnRlciB0aGVtIHVudG8gdGhlIGJvcmRlciBvZiBCZXRoc2hlbWVzaC4KQW5kIHRoZXkgb2YgQmV0aHNoZW1lc2ggd2VyZSByZWFwaW5nIHRoZWlyIHdoZWF0IGhhcnZlc3QgaW4gdGhlIHZhbGxleTogYW5kIHRoZXkgbGlmdGVkIHVwIHRoZWlyIGV5ZXMsIGFuZCBzYXcgdGhlIGFyaywgYW5kIHJlam9pY2VkIHRvIHNlZSBpdC4KQW5kIHRoZSBjYXJ0IGNhbWUgaW50byB0aGUgZmllbGQgb2YgSm9zaHVhLCBhIEJldGhzaGVtaXRlLCBhbmQgc3Rvb2QgdGhlcmUsIHdoZXJlIHRoZXJlIHdhcyBhIGdyZWF0IHN0b25lOiBhbmQgdGhleSBjbGF2ZSB0aGUgd29vZCBvZiB0aGUgY2FydCwgYW5kIG9mZmVyZWQgdGhlIGtpbmUgYSBidXJudCBvZmZlcmluZyB1bnRvIHRoZSBMT1JELgpBbmQgdGhlIExldml0ZXMgdG9vayBkb3duIHRoZSBhcmsgb2YgdGhlIExPUkQsIGFuZCB0aGUgY29mZmVyIHRoYXQgd2FzIHdpdGggaXQsIHdoZXJlaW4gdGhlIGpld2VscyBvZiBnb2xkIHdlcmUsIGFuZCBwdXQgdGhlbSBvbiB0aGUgZ3JlYXQgc3RvbmU6IGFuZCB0aGUgbWVuIG9mIEJldGhzaGVtZXNoIG9mZmVyZWQgYnVybnQgb2ZmZXJpbmdzIGFuZCBzYWNyaWZpY2VkIHNhY3JpZmljZXMgdGhlIHNhbWUgZGF5IHVudG8gdGhlIExPUkQuCkFuZCB3aGVuIHRoZSBmaXZlIGxvcmRzIG9mIHRoZSBQaGlsaXN0aW5lcyBoYWQgc2VlbiBpdCwgdGhleSByZXR1cm5lZCB0byBFa3JvbiB0aGUgc2FtZSBkYXkuCkFuZCB0aGVzZSBhcmUgdGhlIGdvbGRlbiBlbWVyb2RzIHdoaWNoIHRoZSBQaGlsaXN0aW5lcyByZXR1cm5lZCBmb3IgYSB0cmVzcGFzcyBvZmZlcmluZyB1bnRvIHRoZSBMT1JEOyBmb3IgQXNoZG9kIG9uZSwgZm9yIEdhemEgb25lLCBmb3IgQXNrZWxvbiBvbmUsIGZvciBHYXRoIG9uZSwgZm9yIEVrcm9uIG9uZTsKQW5kIHRoZSBnb2xkZW4gbWljZSwgYWNjb3JkaW5nIHRvIHRoZSBudW1iZXIgb2YgYWxsIHRoZSBjaXRpZXMgb2YgdGhlIFBoaWxpc3RpbmVzIGJlbG9uZ2luZyB0byB0aGUgZml2ZSBsb3JkcywgYm90aCBvZiBmZW5jZWQgY2l0aWVzLCBhbmQgb2YgY291bnRyeSB2aWxsYWdlcywgZXZlbiB1bnRvIHRoZSBncmVhdCBzdG9uZSBvZiBBYmVsLCB3aGVyZW9uIHRoZXkgc2V0IGRvd24gdGhlIGFyayBvZiB0aGUgTE9SRDogd2hpY2ggc3RvbmUgcmVtYWluZXRoIHVudG8gdGhpcyBkYXkgaW4gdGhlIGZpZWxkIG9mIEpvc2h1YSwgdGhlIEJldGhzaGVtaXRlLgpBbmQgaGUgc21vdGUgdGhlIG1lbiBvZiBCZXRoc2hlbWVzaCwgYmVjYXVzZSB0aGV5IGhhZCBsb29rZWQgaW50byB0aGUgYXJrIG9mIHRoZSBMT1JELCBldmVuIGhlIHNtb3RlIG9mIHRoZSBwZW9wbGUgZmlmdHkgdGhvdXNhbmQgYW5kIHRocmVlc2NvcmUgYW5kIHRlbiBtZW46IGFuZCB0aGUgcGVvcGxlIGxhbWVudGVkLCBiZWNhdXNlIHRoZSBMT1JEIGhhZCBzbWl0dGVuIG1hbnkgb2YgdGhlIHBlb3BsZSB3aXRoIGEgZ3JlYXQgc2xhdWdodGVyLgpBbmQgdGhlIG1lbiBvZiBCZXRoc2hlbWVzaCBzYWlkLCBXaG8gaXMgYWJsZSB0byBzdGFuZCBiZWZvcmUgdGhpcyBob2x5IExPUkQgR29kPyBhbmQgdG8gd2hvbSBzaGFsbCBoZSBnbyB1cCBmcm9tIHVzPwpBbmQgdGhleSBzZW50IG1lc3NlbmdlcnMgdG8gdGhlIGluaGFiaXRhbnRzIG9mIEtpcmphdGhqZWFyaW0sIHNheWluZywgVGhlIFBoaWxpc3RpbmVzIGhhdmUgYnJvdWdodCBhZ2FpbiB0aGUgYXJrIG9mIHRoZSBMT1JEOyBjb21lIHllIGRvd24sIGFuZCBmZXRjaCBpdCB1cCB0byB5b3UuCkFuZCB0aGUgbWVuIG9mIEtpcmphdGhqZWFyaW0gY2FtZSwgYW5kIGZldGNoZWQgdXAgdGhlIGFyayBvZiB0aGUgTE9SRCwgYW5kIGJyb3VnaHQgaXQgaW50byB0aGUgaG91c2Ugb2YgQWJpbmFkYWIgaW4gdGhlIGhpbGwsIGFuZCBzYW5jdGlmaWVkIEVsZWF6YXIgaGlzIHNvbiB0byBrZWVwIHRoZSBhcmsgb2YgdGhlIExPUkQuCkFuZCBpdCBjYW1lIHRvIHBhc3MsIHdoaWxlIHRoZSBhcmsgYWJvZGUgaW4gS2lyamF0aGplYXJpbSwgdGhhdCB0aGUgdGltZSB3YXMgbG9uZzsgZm9yIGl0IHdhcyB0d2VudHkgeWVhcnM6IGFuZCBhbGwgdGhlIGhvdXNlIG9mIElzcmFlbCBsYW1lbnRlZCBhZnRlciB0aGUgTE9SRC4KQW5kIFNhbXVlbCBzcGFrZSB1bnRvIGFsbCB0aGUgaG91c2Ugb2YgSXNyYWVsLCBzYXlpbmcsIElmIHllIGRvIHJldHVybiB1bnRvIHRoZSBMT1JEIHdpdGggYWxsIHlvdXIgaGVhcnRzLCB0aGVuIHB1dCBhd2F5IHRoZSBzdHJhbmdlIGdvZHMgYW5kIEFzaHRhcm90aCBmcm9tIGFtb25nIHlvdSwgYW5kIHByZXBhcmUgeW91ciBoZWFydHMgdW50byB0aGUgTE9SRCwgYW5kIHNlcnZlIGhpbSBvbmx5OiBhbmQgaGUgd2lsbCBkZWxpdmVyIHlvdSBvdXQgb2YgdGhlIGhhbmQgb2YgdGhlIFBoaWxpc3RpbmVzLgpUaGVuIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgZGlkIHB1dCBhd2F5IEJhYWxpbSBhbmQgQXNodGFyb3RoLCBhbmQgc2VydmVkIHRoZSBMT1JEIG9ubHkuCkFuZCBTYW11ZWwgc2FpZCwgR2F0aGVyIGFsbCBJc3JhZWwgdG8gTWl6cGVoLCBhbmQgSSB3aWxsIHByYXkgZm9yIHlvdSB1bnRvIHRoZSBMT1JELgpBbmQgdGhleSBnYXRoZXJlZCB0b2dldGhlciB0byBNaXpwZWgsIGFuZCBkcmV3IHdhdGVyLCBhbmQgcG91cmVkIGl0IG91dCBiZWZvcmUgdGhlIExPUkQsIGFuZCBmYXN0ZWQgb24gdGhhdCBkYXksIGFuZCBzYWlkIHRoZXJlLCBXZSBoYXZlIHNpbm5lZCBhZ2FpbnN0IHRoZSBMT1JELiBBbmQgU2FtdWVsIGp1ZGdlZCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGluIE1penBlaC4KQW5kIHdoZW4gdGhlIFBoaWxpc3RpbmVzIGhlYXJkIHRoYXQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCB3ZXJlIGdhdGhlcmVkIHRvZ2V0aGVyIHRvIE1penBlaCwgdGhlIGxvcmRzIG9mIHRoZSBQaGlsaXN0aW5lcyB3ZW50IHVwIGFnYWluc3QgSXNyYWVsLiBBbmQgd2hlbiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGhlYXJkIGl0LCB0aGV5IHdlcmUgYWZyYWlkIG9mIHRoZSBQaGlsaXN0aW5lcy4KQW5kIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgc2FpZCB0byBTYW11ZWwsIENlYXNlIG5vdCB0byBjcnkgdW50byB0aGUgTE9SRCBvdXIgR29kIGZvciB1cywgdGhhdCBoZSB3aWxsIHNhdmUgdXMgb3V0IG9mIHRoZSBoYW5kIG9mIHRoZSBQaGlsaXN0aW5lcy4KQW5kIFNhbXVlbCB0b29rIGEgc3Vja2luZyBsYW1iLCBhbmQgb2ZmZXJlZCBpdCBmb3IgYSBidXJudCBvZmZlcmluZyB3aG9sbHkgdW50byB0aGUgTE9SRDogYW5kIFNhbXVlbCBjcmllZCB1bnRvIHRoZSBMT1JEIGZvciBJc3JhZWw7IGFuZCB0aGUgTE9SRCBoZWFyZCBoaW0uCkFuZCBhcyBTYW11ZWwgd2FzIG9mZmVyaW5nIHVwIHRoZSBidXJudCBvZmZlcmluZywgdGhlIFBoaWxpc3RpbmVzIGRyZXcgbmVhciB0byBiYXR0bGUgYWdhaW5zdCBJc3JhZWw6IGJ1dCB0aGUgTE9SRCB0aHVuZGVyZWQgd2l0aCBhIGdyZWF0IHRodW5kZXIgb24gdGhhdCBkYXkgdXBvbiB0aGUgUGhpbGlzdGluZXMsIGFuZCBkaXNjb21maXRlZCB0aGVtOyBhbmQgdGhleSB3ZXJlIHNtaXR0ZW4gYmVmb3JlIElzcmFlbC4KQW5kIHRoZSBtZW4gb2YgSXNyYWVsIHdlbnQgb3V0IG9mIE1penBlaCwgYW5kIHB1cnN1ZWQgdGhlIFBoaWxpc3RpbmVzLCBhbmQgc21vdGUgdGhlbSwgdW50aWwgdGhleSBjYW1lIHVuZGVyIEJldGhjYXIuClRoZW4gU2FtdWVsIHRvb2sgYSBzdG9uZSwgYW5kIHNldCBpdCBiZXR3ZWVuIE1penBlaCBhbmQgU2hlbiwgYW5kIGNhbGxlZCB0aGUgbmFtZSBvZiBpdCBFYmVuZXplciwgc2F5aW5nLCBIaXRoZXJ0byBoYXRoIHRoZSBMT1JEIGhlbHBlZCB1cy4KU28gdGhlIFBoaWxpc3RpbmVzIHdlcmUgc3ViZHVlZCwgYW5kIHRoZXkgY2FtZSBubyBtb3JlIGludG8gdGhlIGNvYXN0IG9mIElzcmFlbDogYW5kIHRoZSBoYW5kIG9mIHRoZSBMT1JEIHdhcyBhZ2FpbnN0IHRoZSBQaGlsaXN0aW5lcyBhbGwgdGhlIGRheXMgb2YgU2FtdWVsLgpBbmQgdGhlIGNpdGllcyB3aGljaCB0aGUgUGhpbGlzdGluZXMgaGFkIHRha2VuIGZyb20gSXNyYWVsIHdlcmUgcmVzdG9yZWQgdG8gSXNyYWVsLCBmcm9tIEVrcm9uIGV2ZW4gdW50byBHYXRoOyBhbmQgdGhlIGNvYXN0cyB0aGVyZW9mIGRpZCBJc3JhZWwgZGVsaXZlciBvdXQgb2YgdGhlIGhhbmRzIG9mIHRoZSBQaGlsaXN0aW5lcy4gQW5kIHRoZXJlIHdhcyBwZWFjZSBiZXR3ZWVuIElzcmFlbCBhbmQgdGhlIEFtb3JpdGVzLgpBbmQgU2FtdWVsIGp1ZGdlZCBJc3JhZWwgYWxsIHRoZSBkYXlzIG9mIGhpcyBsaWZlLgpBbmQgaGUgd2VudCBmcm9tIHllYXIgdG8geWVhciBpbiBjaXJjdWl0IHRvIEJldGhlbCwgYW5kIEdpbGdhbCwgYW5kIE1penBlaCwgYW5kIGp1ZGdlZCBJc3JhZWwgaW4gYWxsIHRob3NlIHBsYWNlcy4KQW5kIGhpcyByZXR1cm4gd2FzIHRvIFJhbWFoOyBmb3IgdGhlcmUgd2FzIGhpcyBob3VzZTsgYW5kIHRoZXJlIGhlIGp1ZGdlZCBJc3JhZWw7IGFuZCB0aGVyZSBoZSBidWlsdCBhbiBhbHRhciB1bnRvIHRoZSBMT1JELgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIFNhbXVlbCB3YXMgb2xkLCB0aGF0IGhlIG1hZGUgaGlzIHNvbnMganVkZ2VzIG92ZXIgSXNyYWVsLgpOb3cgdGhlIG5hbWUgb2YgaGlzIGZpcnN0Ym9ybiB3YXMgSm9lbDsgYW5kIHRoZSBuYW1lIG9mIGhpcyBzZWNvbmQsIEFiaWFoOiB0aGV5IHdlcmUganVkZ2VzIGluIEJlZXJzaGViYS4KQW5kIGhpcyBzb25zIHdhbGtlZCBub3QgaW4gaGlzIHdheXMsIGJ1dCB0dXJuZWQgYXNpZGUgYWZ0ZXIgbHVjcmUsIGFuZCB0b29rIGJyaWJlcywgYW5kIHBlcnZlcnRlZCBqdWRnbWVudC4KVGhlbiBhbGwgdGhlIGVsZGVycyBvZiBJc3JhZWwgZ2F0aGVyZWQgdGhlbXNlbHZlcyB0b2dldGhlciwgYW5kIGNhbWUgdG8gU2FtdWVsIHVudG8gUmFtYWgsCkFuZCBzYWlkIHVudG8gaGltLCBCZWhvbGQsIHRob3UgYXJ0IG9sZCwgYW5kIHRoeSBzb25zIHdhbGsgbm90IGluIHRoeSB3YXlzOiBub3cgbWFrZSB1cyBhIGtpbmcgdG8ganVkZ2UgdXMgbGlrZSBhbGwgdGhlIG5hdGlvbnMuCkJ1dCB0aGUgdGhpbmcgZGlzcGxlYXNlZCBTYW11ZWwsIHdoZW4gdGhleSBzYWlkLCBHaXZlIHVzIGEga2luZyB0byBqdWRnZSB1cy4gQW5kIFNhbXVlbCBwcmF5ZWQgdW50byB0aGUgTE9SRC4KQW5kIHRoZSBMT1JEIHNhaWQgdW50byBTYW11ZWwsIEhlYXJrZW4gdW50byB0aGUgdm9pY2Ugb2YgdGhlIHBlb3BsZSBpbiBhbGwgdGhhdCB0aGV5IHNheSB1bnRvIHRoZWU6IGZvciB0aGV5IGhhdmUgbm90IHJlamVjdGVkIHRoZWUsIGJ1dCB0aGV5IGhhdmUgcmVqZWN0ZWQgbWUsIHRoYXQgSSBzaG91bGQgbm90IHJlaWduIG92ZXIgdGhlbS4KQWNjb3JkaW5nIHRvIGFsbCB0aGUgd29ya3Mgd2hpY2ggdGhleSBoYXZlIGRvbmUgc2luY2UgdGhlIGRheSB0aGF0IEkgYnJvdWdodCB0aGVtIHVwIG91dCBvZiBFZ3lwdCBldmVuIHVudG8gdGhpcyBkYXksIHdoZXJld2l0aCB0aGV5IGhhdmUgZm9yc2FrZW4gbWUsIGFuZCBzZXJ2ZWQgb3RoZXIgZ29kcywgc28gZG8gdGhleSBhbHNvIHVudG8gdGhlZS4KTm93IHRoZXJlZm9yZSBoZWFya2VuIHVudG8gdGhlaXIgdm9pY2U6IGhvd2JlaXQgeWV0IHByb3Rlc3Qgc29sZW1ubHkgdW50byB0aGVtLCBhbmQgc2hldyB0aGVtIHRoZSBtYW5uZXIgb2YgdGhlIGtpbmcgdGhhdCBzaGFsbCByZWlnbiBvdmVyIHRoZW0uCkFuZCBTYW11ZWwgdG9sZCBhbGwgdGhlIHdvcmRzIG9mIHRoZSBMT1JEIHVudG8gdGhlIHBlb3BsZSB0aGF0IGFza2VkIG9mIGhpbSBhIGtpbmcuCkFuZCBoZSBzYWlkLCBUaGlzIHdpbGwgYmUgdGhlIG1hbm5lciBvZiB0aGUga2luZyB0aGF0IHNoYWxsIHJlaWduIG92ZXIgeW91OiBIZSB3aWxsIHRha2UgeW91ciBzb25zLCBhbmQgYXBwb2ludCB0aGVtIGZvciBoaW1zZWxmLCBmb3IgaGlzIGNoYXJpb3RzLCBhbmQgdG8gYmUgaGlzIGhvcnNlbWVuOyBhbmQgc29tZSBzaGFsbCBydW4gYmVmb3JlIGhpcyBjaGFyaW90cy4KQW5kIGhlIHdpbGwgYXBwb2ludCBoaW0gY2FwdGFpbnMgb3ZlciB0aG91c2FuZHMsIGFuZCBjYXB0YWlucyBvdmVyIGZpZnRpZXM7IGFuZCB3aWxsIHNldCB0aGVtIHRvIGVhciBoaXMgZ3JvdW5kLCBhbmQgdG8gcmVhcCBoaXMgaGFydmVzdCwgYW5kIHRvIG1ha2UgaGlzIGluc3RydW1lbnRzIG9mIHdhciwgYW5kIGluc3RydW1lbnRzIG9mIGhpcyBjaGFyaW90cy4KQW5kIGhlIHdpbGwgdGFrZSB5b3VyIGRhdWdodGVycyB0byBiZSBjb25mZWN0aW9uYXJpZXMsIGFuZCB0byBiZSBjb29rcywgYW5kIHRvIGJlIGJha2Vycy4KQW5kIGhlIHdpbGwgdGFrZSB5b3VyIGZpZWxkcywgYW5kIHlvdXIgdmluZXlhcmRzLCBhbmQgeW91ciBvbGl2ZXlhcmRzLCBldmVuIHRoZSBiZXN0IG9mIHRoZW0sIGFuZCBnaXZlIHRoZW0gdG8gaGlzIHNlcnZhbnRzLgpBbmQgaGUgd2lsbCB0YWtlIHRoZSB0ZW50aCBvZiB5b3VyIHNlZWQsIGFuZCBvZiB5b3VyIHZpbmV5YXJkcywgYW5kIGdpdmUgdG8gaGlzIG9mZmljZXJzLCBhbmQgdG8gaGlzIHNlcnZhbnRzLgpBbmQgaGUgd2lsbCB0YWtlIHlvdXIgbWVuc2VydmFudHMsIGFuZCB5b3VyIG1haWRzZXJ2YW50cywgYW5kIHlvdXIgZ29vZGxpZXN0IHlvdW5nIG1lbiwgYW5kIHlvdXIgYXNzZXMsIGFuZCBwdXQgdGhlbSB0byBoaXMgd29yay4KSGUgd2lsbCB0YWtlIHRoZSB0ZW50aCBvZiB5b3VyIHNoZWVwOiBhbmQgeWUgc2hhbGwgYmUgaGlzIHNlcnZhbnRzLgpBbmQgeWUgc2hhbGwgY3J5IG91dCBpbiB0aGF0IGRheSBiZWNhdXNlIG9mIHlvdXIga2luZyB3aGljaCB5ZSBzaGFsbCBoYXZlIGNob3NlbiB5b3U7IGFuZCB0aGUgTE9SRCB3aWxsIG5vdCBoZWFyIHlvdSBpbiB0aGF0IGRheS4KTmV2ZXJ0aGVsZXNzIHRoZSBwZW9wbGUgcmVmdXNlZCB0byBvYmV5IHRoZSB2b2ljZSBvZiBTYW11ZWw7IGFuZCB0aGV5IHNhaWQsIE5heTsgYnV0IHdlIHdpbGwgaGF2ZSBhIGtpbmcgb3ZlciB1czsKVGhhdCB3ZSBhbHNvIG1heSBiZSBsaWtlIGFsbCB0aGUgbmF0aW9uczsgYW5kIHRoYXQgb3VyIGtpbmcgbWF5IGp1ZGdlIHVzLCBhbmQgZ28gb3V0IGJlZm9yZSB1cywgYW5kIGZpZ2h0IG91ciBiYXR0bGVzLgpBbmQgU2FtdWVsIGhlYXJkIGFsbCB0aGUgd29yZHMgb2YgdGhlIHBlb3BsZSwgYW5kIGhlIHJlaGVhcnNlZCB0aGVtIGluIHRoZSBlYXJzIG9mIHRoZSBMT1JELgpBbmQgdGhlIExPUkQgc2FpZCB0byBTYW11ZWwsIEhlYXJrZW4gdW50byB0aGVpciB2b2ljZSwgYW5kIG1ha2UgdGhlbSBhIGtpbmcuIEFuZCBTYW11ZWwgc2FpZCB1bnRvIHRoZSBtZW4gb2YgSXNyYWVsLCBHbyB5ZSBldmVyeSBtYW4gdW50byBoaXMgY2l0eS4KTm93IHRoZXJlIHdhcyBhIG1hbiBvZiBCZW5qYW1pbiwgd2hvc2UgbmFtZSB3YXMgS2lzaCwgdGhlIHNvbiBvZiBBYmllbCwgdGhlIHNvbiBvZiBaZXJvciwgdGhlIHNvbiBvZiBCZWNob3JhdGgsIHRoZSBzb24gb2YgQXBoaWFoLCBhIEJlbmphbWl0ZSwgYSBtaWdodHkgbWFuIG9mIHBvd2VyLgpBbmQgaGUgaGFkIGEgc29uLCB3aG9zZSBuYW1lIHdhcyBTYXVsLCBhIGNob2ljZSB5b3VuZyBtYW4sIGFuZCBhIGdvb2RseTogYW5kIHRoZXJlIHdhcyBub3QgYW1vbmcgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBhIGdvb2RsaWVyIHBlcnNvbiB0aGFuIGhlOiBmcm9tIGhpcyBzaG91bGRlcnMgYW5kIHVwd2FyZCBoZSB3YXMgaGlnaGVyIHRoYW4gYW55IG9mIHRoZSBwZW9wbGUuCkFuZCB0aGUgYXNzZXMgb2YgS2lzaCBTYXVsJ3MgZmF0aGVyIHdlcmUgbG9zdC4gQW5kIEtpc2ggc2FpZCB0byBTYXVsIGhpcyBzb24sIFRha2Ugbm93IG9uZSBvZiB0aGUgc2VydmFudHMgd2l0aCB0aGVlLCBhbmQgYXJpc2UsIGdvIHNlZWsgdGhlIGFzc2VzLgpBbmQgaGUgcGFzc2VkIHRocm91Z2ggbW91bnQgRXBocmFpbSwgYW5kIHBhc3NlZCB0aHJvdWdoIHRoZSBsYW5kIG9mIFNoYWxpc2hhLCBidXQgdGhleSBmb3VuZCB0aGVtIG5vdDogdGhlbiB0aGV5IHBhc3NlZCB0aHJvdWdoIHRoZSBsYW5kIG9mIFNoYWxpbSwgYW5kIHRoZXJlIHRoZXkgd2VyZSBub3Q6IGFuZCBoZSBwYXNzZWQgdGhyb3VnaCB0aGUgbGFuZCBvZiB0aGUgQmVuamFtaXRlcywgYnV0IHRoZXkgZm91bmQgdGhlbSBub3QuCkFuZCB3aGVuIHRoZXkgd2VyZSBjb21lIHRvIHRoZSBsYW5kIG9mIFp1cGgsIFNhdWwgc2FpZCB0byBoaXMgc2VydmFudCB0aGF0IHdhcyB3aXRoIGhpbSwgQ29tZSwgYW5kIGxldCB1cyByZXR1cm47IGxlc3QgbXkgZmF0aGVyIGxlYXZlIGNhcmluZyBmb3IgdGhlIGFzc2VzLCBhbmQgdGFrZSB0aG91Z2h0IGZvciB1cy4KQW5kIGhlIHNhaWQgdW50byBoaW0sIEJlaG9sZCBub3csIHRoZXJlIGlzIGluIHRoaXMgY2l0eSBhIG1hbiBvZiBHb2QsIGFuZCBoZSBpcyBhbiBob25vdXJhYmxlIG1hbjsgYWxsIHRoYXQgaGUgc2FpdGggY29tZXRoIHN1cmVseSB0byBwYXNzOiBub3cgbGV0IHVzIGdvIHRoaXRoZXI7IHBlcmFkdmVudHVyZSBoZSBjYW4gc2hldyB1cyBvdXIgd2F5IHRoYXQgd2Ugc2hvdWxkIGdvLgpUaGVuIHNhaWQgU2F1bCB0byBoaXMgc2VydmFudCwgQnV0LCBiZWhvbGQsIGlmIHdlIGdvLCB3aGF0IHNoYWxsIHdlIGJyaW5nIHRoZSBtYW4/IGZvciB0aGUgYnJlYWQgaXMgc3BlbnQgaW4gb3VyIHZlc3NlbHMsIGFuZCB0aGVyZSBpcyBub3QgYSBwcmVzZW50IHRvIGJyaW5nIHRvIHRoZSBtYW4gb2YgR29kOiB3aGF0IGhhdmUgd2U/CkFuZCB0aGUgc2VydmFudCBhbnN3ZXJlZCBTYXVsIGFnYWluLCBhbmQgc2FpZCwgQmVob2xkLCBJIGhhdmUgaGVyZSBhdCBoYW5kIHRoZSBmb3VydGggcGFydCBvZiBhIHNoZWtlbCBvZiBzaWx2ZXI6IHRoYXQgd2lsbCBJIGdpdmUgdG8gdGhlIG1hbiBvZiBHb2QsIHRvIHRlbGwgdXMgb3VyIHdheS4KKEJlZm9yZXRpbWUgaW4gSXNyYWVsLCB3aGVuIGEgbWFuIHdlbnQgdG8gZW5xdWlyZSBvZiBHb2QsIHRodXMgaGUgc3Bha2UsIENvbWUsIGFuZCBsZXQgdXMgZ28gdG8gdGhlIHNlZXI6IGZvciBoZSB0aGF0IGlzIG5vdyBjYWxsZWQgYSBQcm9waGV0IHdhcyBiZWZvcmV0aW1lIGNhbGxlZCBhIFNlZXIuKQpUaGVuIHNhaWQgU2F1bCB0byBoaXMgc2VydmFudCwgV2VsbCBzYWlkOyBjb21lLCBsZXQgdXMgZ28uIFNvIHRoZXkgd2VudCB1bnRvIHRoZSBjaXR5IHdoZXJlIHRoZSBtYW4gb2YgR29kIHdhcy4KQW5kIGFzIHRoZXkgd2VudCB1cCB0aGUgaGlsbCB0byB0aGUgY2l0eSwgdGhleSBmb3VuZCB5b3VuZyBtYWlkZW5zIGdvaW5nIG91dCB0byBkcmF3IHdhdGVyLCBhbmQgc2FpZCB1bnRvIHRoZW0sIElzIHRoZSBzZWVyIGhlcmU/CkFuZCB0aGV5IGFuc3dlcmVkIHRoZW0sIGFuZCBzYWlkLCBIZSBpczsgYmVob2xkLCBoZSBpcyBiZWZvcmUgeW91OiBtYWtlIGhhc3RlIG5vdywgZm9yIGhlIGNhbWUgdG8gZGF5IHRvIHRoZSBjaXR5OyBmb3IgdGhlcmUgaXMgYSBzYWNyaWZpY2Ugb2YgdGhlIHBlb3BsZSB0byBkYXkgaW4gdGhlIGhpZ2ggcGxhY2U6CkFzIHNvb24gYXMgeWUgYmUgY29tZSBpbnRvIHRoZSBjaXR5LCB5ZSBzaGFsbCBzdHJhaWdodHdheSBmaW5kIGhpbSwgYmVmb3JlIGhlIGdvIHVwIHRvIHRoZSBoaWdoIHBsYWNlIHRvIGVhdDogZm9yIHRoZSBwZW9wbGUgd2lsbCBub3QgZWF0IHVudGlsIGhlIGNvbWUsIGJlY2F1c2UgaGUgZG90aCBibGVzcyB0aGUgc2FjcmlmaWNlOyBhbmQgYWZ0ZXJ3YXJkcyB0aGV5IGVhdCB0aGF0IGJlIGJpZGRlbi4gTm93IHRoZXJlZm9yZSBnZXQgeW91IHVwOyBmb3IgYWJvdXQgdGhpcyB0aW1lIHllIHNoYWxsIGZpbmQgaGltLgpBbmQgdGhleSB3ZW50IHVwIGludG8gdGhlIGNpdHk6IGFuZCB3aGVuIHRoZXkgd2VyZSBjb21lIGludG8gdGhlIGNpdHksIGJlaG9sZCwgU2FtdWVsIGNhbWUgb3V0IGFnYWluc3QgdGhlbSwgZm9yIHRvIGdvIHVwIHRvIHRoZSBoaWdoIHBsYWNlLgpOb3cgdGhlIExPUkQgaGFkIHRvbGQgU2FtdWVsIGluIGhpcyBlYXIgYSBkYXkgYmVmb3JlIFNhdWwgY2FtZSwgc2F5aW5nLApUbyBtb3Jyb3cgYWJvdXQgdGhpcyB0aW1lIEkgd2lsbCBzZW5kIHRoZWUgYSBtYW4gb3V0IG9mIHRoZSBsYW5kIG9mIEJlbmphbWluLCBhbmQgdGhvdSBzaGFsdCBhbm9pbnQgaGltIHRvIGJlIGNhcHRhaW4gb3ZlciBteSBwZW9wbGUgSXNyYWVsLCB0aGF0IGhlIG1heSBzYXZlIG15IHBlb3BsZSBvdXQgb2YgdGhlIGhhbmQgb2YgdGhlIFBoaWxpc3RpbmVzOiBmb3IgSSBoYXZlIGxvb2tlZCB1cG9uIG15IHBlb3BsZSwgYmVjYXVzZSB0aGVpciBjcnkgaXMgY29tZSB1bnRvIG1lLgpBbmQgd2hlbiBTYW11ZWwgc2F3IFNhdWwsIHRoZSBMT1JEIHNhaWQgdW50byBoaW0sIEJlaG9sZCB0aGUgbWFuIHdob20gSSBzcGFrZSB0byB0aGVlIG9mISB0aGlzIHNhbWUgc2hhbGwgcmVpZ24gb3ZlciBteSBwZW9wbGUuClRoZW4gU2F1bCBkcmV3IG5lYXIgdG8gU2FtdWVsIGluIHRoZSBnYXRlLCBhbmQgc2FpZCwgVGVsbCBtZSwgSSBwcmF5IHRoZWUsIHdoZXJlIHRoZSBzZWVyJ3MgaG91c2UgaXMuCkFuZCBTYW11ZWwgYW5zd2VyZWQgU2F1bCwgYW5kIHNhaWQsIEkgYW0gdGhlIHNlZXI6IGdvIHVwIGJlZm9yZSBtZSB1bnRvIHRoZSBoaWdoIHBsYWNlOyBmb3IgeWUgc2hhbGwgZWF0IHdpdGggbWUgdG8gZGF5LCBhbmQgdG8gbW9ycm93IEkgd2lsbCBsZXQgdGhlZSBnbywgYW5kIHdpbGwgdGVsbCB0aGVlIGFsbCB0aGF0IGlzIGluIHRoaW5lIGhlYXJ0LgpBbmQgYXMgZm9yIHRoaW5lIGFzc2VzIHRoYXQgd2VyZSBsb3N0IHRocmVlIGRheXMgYWdvLCBzZXQgbm90IHRoeSBtaW5kIG9uIHRoZW07IGZvciB0aGV5IGFyZSBmb3VuZC4gQW5kIG9uIHdob20gaXMgYWxsIHRoZSBkZXNpcmUgb2YgSXNyYWVsPyBJcyBpdCBub3Qgb24gdGhlZSwgYW5kIG9uIGFsbCB0aHkgZmF0aGVyJ3MgaG91c2U/CkFuZCBTYXVsIGFuc3dlcmVkIGFuZCBzYWlkLCBBbSBub3QgSSBhIEJlbmphbWl0ZSwgb2YgdGhlIHNtYWxsZXN0IG9mIHRoZSB0cmliZXMgb2YgSXNyYWVsPyBhbmQgbXkgZmFtaWx5IHRoZSBsZWFzdCBvZiBhbGwgdGhlIGZhbWlsaWVzIG9mIHRoZSB0cmliZSBvZiBCZW5qYW1pbj8gd2hlcmVmb3JlIHRoZW4gc3BlYWtlc3QgdGhvdSBzbyB0byBtZT8KQW5kIFNhbXVlbCB0b29rIFNhdWwgYW5kIGhpcyBzZXJ2YW50LCBhbmQgYnJvdWdodCB0aGVtIGludG8gdGhlIHBhcmxvdXIsIGFuZCBtYWRlIHRoZW0gc2l0IGluIHRoZSBjaGllZmVzdCBwbGFjZSBhbW9uZyB0aGVtIHRoYXQgd2VyZSBiaWRkZW4sIHdoaWNoIHdlcmUgYWJvdXQgdGhpcnR5IHBlcnNvbnMuCkFuZCBTYW11ZWwgc2FpZCB1bnRvIHRoZSBjb29rLCBCcmluZyB0aGUgcG9ydGlvbiB3aGljaCBJIGdhdmUgdGhlZSwgb2Ygd2hpY2ggSSBzYWlkIHVudG8gdGhlZSwgU2V0IGl0IGJ5IHRoZWUuCkFuZCB0aGUgY29vayB0b29rIHVwIHRoZSBzaG91bGRlciwgYW5kIHRoYXQgd2hpY2ggd2FzIHVwb24gaXQsIGFuZCBzZXQgaXQgYmVmb3JlIFNhdWwuIEFuZCBTYW11ZWwgc2FpZCwgQmVob2xkIHRoYXQgd2hpY2ggaXMgbGVmdCEgc2V0IGl0IGJlZm9yZSB0aGVlLCBhbmQgZWF0OiBmb3IgdW50byB0aGlzIHRpbWUgaGF0aCBpdCBiZWVuIGtlcHQgZm9yIHRoZWUgc2luY2UgSSBzYWlkLCBJIGhhdmUgaW52aXRlZCB0aGUgcGVvcGxlLiBTbyBTYXVsIGRpZCBlYXQgd2l0aCBTYW11ZWwgdGhhdCBkYXkuCkFuZCB3aGVuIHRoZXkgd2VyZSBjb21lIGRvd24gZnJvbSB0aGUgaGlnaCBwbGFjZSBpbnRvIHRoZSBjaXR5LCBTYW11ZWwgY29tbXVuZWQgd2l0aCBTYXVsIHVwb24gdGhlIHRvcCBvZiB0aGUgaG91c2UuCkFuZCB0aGV5IGFyb3NlIGVhcmx5OiBhbmQgaXQgY2FtZSB0byBwYXNzIGFib3V0IHRoZSBzcHJpbmcgb2YgdGhlIGRheSwgdGhhdCBTYW11ZWwgY2FsbGVkIFNhdWwgdG8gdGhlIHRvcCBvZiB0aGUgaG91c2UsIHNheWluZywgVXAsIHRoYXQgSSBtYXkgc2VuZCB0aGVlIGF3YXkuIEFuZCBTYXVsIGFyb3NlLCBhbmQgdGhleSB3ZW50IG91dCBib3RoIG9mIHRoZW0sIGhlIGFuZCBTYW11ZWwsIGFicm9hZC4KQW5kIGFzIHRoZXkgd2VyZSBnb2luZyBkb3duIHRvIHRoZSBlbmQgb2YgdGhlIGNpdHksIFNhbXVlbCBzYWlkIHRvIFNhdWwsIEJpZCB0aGUgc2VydmFudCBwYXNzIG9uIGJlZm9yZSB1cywgKGFuZCBoZSBwYXNzZWQgb24pLCBidXQgc3RhbmQgdGhvdSBzdGlsbCBhIHdoaWxlLCB0aGF0IEkgbWF5IHNoZXcgdGhlZSB0aGUgd29yZCBvZiBHb2QuClRoZW4gU2FtdWVsIHRvb2sgYSB2aWFsIG9mIG9pbCwgYW5kIHBvdXJlZCBpdCB1cG9uIGhpcyBoZWFkLCBhbmQga2lzc2VkIGhpbSwgYW5kIHNhaWQsIElzIGl0IG5vdCBiZWNhdXNlIHRoZSBMT1JEIGhhdGggYW5vaW50ZWQgdGhlZSB0byBiZSBjYXB0YWluIG92ZXIgaGlzIGluaGVyaXRhbmNlPwpXaGVuIHRob3UgYXJ0IGRlcGFydGVkIGZyb20gbWUgdG8gZGF5LCB0aGVuIHRob3Ugc2hhbHQgZmluZCB0d28gbWVuIGJ5IFJhY2hlbCdzIHNlcHVsY2hyZSBpbiB0aGUgYm9yZGVyIG9mIEJlbmphbWluIGF0IFplbHphaDsgYW5kIHRoZXkgd2lsbCBzYXkgdW50byB0aGVlLCBUaGUgYXNzZXMgd2hpY2ggdGhvdSB3ZW50ZXN0IHRvIHNlZWsgYXJlIGZvdW5kOiBhbmQsIGxvLCB0aHkgZmF0aGVyIGhhdGggbGVmdCB0aGUgY2FyZSBvZiB0aGUgYXNzZXMsIGFuZCBzb3Jyb3dldGggZm9yIHlvdSwgc2F5aW5nLCBXaGF0IHNoYWxsIEkgZG8gZm9yIG15IHNvbj8KVGhlbiBzaGFsdCB0aG91IGdvIG9uIGZvcndhcmQgZnJvbSB0aGVuY2UsIGFuZCB0aG91IHNoYWx0IGNvbWUgdG8gdGhlIHBsYWluIG9mIFRhYm9yLCBhbmQgdGhlcmUgc2hhbGwgbWVldCB0aGVlIHRocmVlIG1lbiBnb2luZyB1cCB0byBHb2QgdG8gQmV0aGVsLCBvbmUgY2FycnlpbmcgdGhyZWUga2lkcywgYW5kIGFub3RoZXIgY2FycnlpbmcgdGhyZWUgbG9hdmVzIG9mIGJyZWFkLCBhbmQgYW5vdGhlciBjYXJyeWluZyBhIGJvdHRsZSBvZiB3aW5lOgpBbmQgdGhleSB3aWxsIHNhbHV0ZSB0aGVlLCBhbmQgZ2l2ZSB0aGVlIHR3byBsb2F2ZXMgb2YgYnJlYWQ7IHdoaWNoIHRob3Ugc2hhbHQgcmVjZWl2ZSBvZiB0aGVpciBoYW5kcy4KQWZ0ZXIgdGhhdCB0aG91IHNoYWx0IGNvbWUgdG8gdGhlIGhpbGwgb2YgR29kLCB3aGVyZSBpcyB0aGUgZ2Fycmlzb24gb2YgdGhlIFBoaWxpc3RpbmVzOiBhbmQgaXQgc2hhbGwgY29tZSB0byBwYXNzLCB3aGVuIHRob3UgYXJ0IGNvbWUgdGhpdGhlciB0byB0aGUgY2l0eSwgdGhhdCB0aG91IHNoYWx0IG1lZXQgYSBjb21wYW55IG9mIHByb3BoZXRzIGNvbWluZyBkb3duIGZyb20gdGhlIGhpZ2ggcGxhY2Ugd2l0aCBhIHBzYWx0ZXJ5LCBhbmQgYSB0YWJyZXQsIGFuZCBhIHBpcGUsIGFuZCBhIGhhcnAsIGJlZm9yZSB0aGVtOyBhbmQgdGhleSBzaGFsbCBwcm9waGVzeToKQW5kIHRoZSBTcGlyaXQgb2YgdGhlIExPUkQgd2lsbCBjb21lIHVwb24gdGhlZSwgYW5kIHRob3Ugc2hhbHQgcHJvcGhlc3kgd2l0aCB0aGVtLCBhbmQgc2hhbHQgYmUgdHVybmVkIGludG8gYW5vdGhlciBtYW4uCkFuZCBsZXQgaXQgYmUsIHdoZW4gdGhlc2Ugc2lnbnMgYXJlIGNvbWUgdW50byB0aGVlLCB0aGF0IHRob3UgZG8gYXMgb2NjYXNpb24gc2VydmUgdGhlZTsgZm9yIEdvZCBpcyB3aXRoIHRoZWUuCkFuZCB0aG91IHNoYWx0IGdvIGRvd24gYmVmb3JlIG1lIHRvIEdpbGdhbDsgYW5kLCBiZWhvbGQsIEkgd2lsbCBjb21lIGRvd24gdW50byB0aGVlLCB0byBvZmZlciBidXJudCBvZmZlcmluZ3MsIGFuZCB0byBzYWNyaWZpY2Ugc2FjcmlmaWNlcyBvZiBwZWFjZSBvZmZlcmluZ3M6IHNldmVuIGRheXMgc2hhbHQgdGhvdSB0YXJyeSwgdGlsbCBJIGNvbWUgdG8gdGhlZSwgYW5kIHNoZXcgdGhlZSB3aGF0IHRob3Ugc2hhbHQgZG8uCkFuZCBpdCB3YXMgc28sIHRoYXQgd2hlbiBoZSBoYWQgdHVybmVkIGhpcyBiYWNrIHRvIGdvIGZyb20gU2FtdWVsLCBHb2QgZ2F2ZSBoaW0gYW5vdGhlciBoZWFydDogYW5kIGFsbCB0aG9zZSBzaWducyBjYW1lIHRvIHBhc3MgdGhhdCBkYXkuCkFuZCB3aGVuIHRoZXkgY2FtZSB0aGl0aGVyIHRvIHRoZSBoaWxsLCBiZWhvbGQsIGEgY29tcGFueSBvZiBwcm9waGV0cyBtZXQgaGltOyBhbmQgdGhlIFNwaXJpdCBvZiBHb2QgY2FtZSB1cG9uIGhpbSwgYW5kIGhlIHByb3BoZXNpZWQgYW1vbmcgdGhlbS4KQW5kIGl0IGNhbWUgdG8gcGFzcywgd2hlbiBhbGwgdGhhdCBrbmV3IGhpbSBiZWZvcmV0aW1lIHNhdyB0aGF0LCBiZWhvbGQsIGhlIHByb3BoZXNpZWQgYW1vbmcgdGhlIHByb3BoZXRzLCB0aGVuIHRoZSBwZW9wbGUgc2FpZCBvbmUgdG8gYW5vdGhlciwgV2hhdCBpcyB0aGlzIHRoYXQgaXMgY29tZSB1bnRvIHRoZSBzb24gb2YgS2lzaD8gSXMgU2F1bCBhbHNvIGFtb25nIHRoZSBwcm9waGV0cz8KQW5kIG9uZSBvZiB0aGUgc2FtZSBwbGFjZSBhbnN3ZXJlZCBhbmQgc2FpZCwgQnV0IHdobyBpcyB0aGVpciBmYXRoZXI/IFRoZXJlZm9yZSBpdCBiZWNhbWUgYSBwcm92ZXJiLCBJcyBTYXVsIGFsc28gYW1vbmcgdGhlIHByb3BoZXRzPwpBbmQgd2hlbiBoZSBoYWQgbWFkZSBhbiBlbmQgb2YgcHJvcGhlc3lpbmcsIGhlIGNhbWUgdG8gdGhlIGhpZ2ggcGxhY2UuCkFuZCBTYXVsJ3MgdW5jbGUgc2FpZCB1bnRvIGhpbSBhbmQgdG8gaGlzIHNlcnZhbnQsIFdoaXRoZXIgd2VudCB5ZT8gQW5kIGhlIHNhaWQsIFRvIHNlZWsgdGhlIGFzc2VzOiBhbmQgd2hlbiB3ZSBzYXcgdGhhdCB0aGV5IHdlcmUgbm8gd2hlcmUsIHdlIGNhbWUgdG8gU2FtdWVsLgpBbmQgU2F1bCdzIHVuY2xlIHNhaWQsIFRlbGwgbWUsIEkgcHJheSB0aGVlLCB3aGF0IFNhbXVlbCBzYWlkIHVudG8geW91LgpBbmQgU2F1bCBzYWlkIHVudG8gaGlzIHVuY2xlLCBIZSB0b2xkIHVzIHBsYWlubHkgdGhhdCB0aGUgYXNzZXMgd2VyZSBmb3VuZC4gQnV0IG9mIHRoZSBtYXR0ZXIgb2YgdGhlIGtpbmdkb20sIHdoZXJlb2YgU2FtdWVsIHNwYWtlLCBoZSB0b2xkIGhpbSBub3QuCkFuZCBTYW11ZWwgY2FsbGVkIHRoZSBwZW9wbGUgdG9nZXRoZXIgdW50byB0aGUgTE9SRCB0byBNaXpwZWg7CkFuZCBzYWlkIHVudG8gdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgVGh1cyBzYWl0aCB0aGUgTE9SRCBHb2Qgb2YgSXNyYWVsLCBJIGJyb3VnaHQgdXAgSXNyYWVsIG91dCBvZiBFZ3lwdCwgYW5kIGRlbGl2ZXJlZCB5b3Ugb3V0IG9mIHRoZSBoYW5kIG9mIHRoZSBFZ3lwdGlhbnMsIGFuZCBvdXQgb2YgdGhlIGhhbmQgb2YgYWxsIGtpbmdkb21zLCBhbmQgb2YgdGhlbSB0aGF0IG9wcHJlc3NlZCB5b3U6CkFuZCB5ZSBoYXZlIHRoaXMgZGF5IHJlamVjdGVkIHlvdXIgR29kLCB3aG8gaGltc2VsZiBzYXZlZCB5b3Ugb3V0IG9mIGFsbCB5b3VyIGFkdmVyc2l0aWVzIGFuZCB5b3VyIHRyaWJ1bGF0aW9uczsgYW5kIHllIGhhdmUgc2FpZCB1bnRvIGhpbSwgTmF5LCBidXQgc2V0IGEga2luZyBvdmVyIHVzLiBOb3cgdGhlcmVmb3JlIHByZXNlbnQgeW91cnNlbHZlcyBiZWZvcmUgdGhlIExPUkQgYnkgeW91ciB0cmliZXMsIGFuZCBieSB5b3VyIHRob3VzYW5kcy4KQW5kIHdoZW4gU2FtdWVsIGhhZCBjYXVzZWQgYWxsIHRoZSB0cmliZXMgb2YgSXNyYWVsIHRvIGNvbWUgbmVhciwgdGhlIHRyaWJlIG9mIEJlbmphbWluIHdhcyB0YWtlbi4KV2hlbiBoZSBoYWQgY2F1c2VkIHRoZSB0cmliZSBvZiBCZW5qYW1pbiB0byBjb21lIG5lYXIgYnkgdGhlaXIgZmFtaWxpZXMsIHRoZSBmYW1pbHkgb2YgTWF0cmkgd2FzIHRha2VuLCBhbmQgU2F1bCB0aGUgc29uIG9mIEtpc2ggd2FzIHRha2VuOiBhbmQgd2hlbiB0aGV5IHNvdWdodCBoaW0sIGhlIGNvdWxkIG5vdCBiZSBmb3VuZC4KVGhlcmVmb3JlIHRoZXkgZW5xdWlyZWQgb2YgdGhlIExPUkQgZnVydGhlciwgaWYgdGhlIG1hbiBzaG91bGQgeWV0IGNvbWUgdGhpdGhlci4gQW5kIHRoZSBMT1JEIGFuc3dlcmVkLCBCZWhvbGQgaGUgaGF0aCBoaWQgaGltc2VsZiBhbW9uZyB0aGUgc3R1ZmYuCkFuZCB0aGV5IHJhbiBhbmQgZmV0Y2hlZCBoaW0gdGhlbmNlOiBhbmQgd2hlbiBoZSBzdG9vZCBhbW9uZyB0aGUgcGVvcGxlLCBoZSB3YXMgaGlnaGVyIHRoYW4gYW55IG9mIHRoZSBwZW9wbGUgZnJvbSBoaXMgc2hvdWxkZXJzIGFuZCB1cHdhcmQuCkFuZCBTYW11ZWwgc2FpZCB0byBhbGwgdGhlIHBlb3BsZSwgU2VlIHllIGhpbSB3aG9tIHRoZSBMT1JEIGhhdGggY2hvc2VuLCB0aGF0IHRoZXJlIGlzIG5vbmUgbGlrZSBoaW0gYW1vbmcgYWxsIHRoZSBwZW9wbGU/IEFuZCBhbGwgdGhlIHBlb3BsZSBzaG91dGVkLCBhbmQgc2FpZCwgR29kIHNhdmUgdGhlIGtpbmcuClRoZW4gU2FtdWVsIHRvbGQgdGhlIHBlb3BsZSB0aGUgbWFubmVyIG9mIHRoZSBraW5nZG9tLCBhbmQgd3JvdGUgaXQgaW4gYSBib29rLCBhbmQgbGFpZCBpdCB1cCBiZWZvcmUgdGhlIExPUkQuIEFuZCBTYW11ZWwgc2VudCBhbGwgdGhlIHBlb3BsZSBhd2F5LCBldmVyeSBtYW4gdG8gaGlzIGhvdXNlLgpBbmQgU2F1bCBhbHNvIHdlbnQgaG9tZSB0byBHaWJlYWg7IGFuZCB0aGVyZSB3ZW50IHdpdGggaGltIGEgYmFuZCBvZiBtZW4sIHdob3NlIGhlYXJ0cyBHb2QgaGFkIHRvdWNoZWQuCkJ1dCB0aGUgY2hpbGRyZW4gb2YgQmVsaWFsIHNhaWQsIEhvdyBzaGFsbCB0aGlzIG1hbiBzYXZlIHVzPyBBbmQgdGhleSBkZXNwaXNlZCBoaW0sIGFuZCBicm91Z2h0IG5vIHByZXNlbnRzLiBCdXQgaGUgaGVsZCBoaXMgcGVhY2UuClRoZW4gTmFoYXNoIHRoZSBBbW1vbml0ZSBjYW1lIHVwLCBhbmQgZW5jYW1wZWQgYWdhaW5zdCBKYWJlc2hnaWxlYWQ6IGFuZCBhbGwgdGhlIG1lbiBvZiBKYWJlc2ggc2FpZCB1bnRvIE5haGFzaCwgTWFrZSBhIGNvdmVuYW50IHdpdGggdXMsIGFuZCB3ZSB3aWxsIHNlcnZlIHRoZWUuCkFuZCBOYWhhc2ggdGhlIEFtbW9uaXRlIGFuc3dlcmVkIHRoZW0sIE9uIHRoaXMgY29uZGl0aW9uIHdpbGwgSSBtYWtlIGEgY292ZW5hbnQgd2l0aCB5b3UsIHRoYXQgSSBtYXkgdGhydXN0IG91dCBhbGwgeW91ciByaWdodCBleWVzLCBhbmQgbGF5IGl0IGZvciBhIHJlcHJvYWNoIHVwb24gYWxsIElzcmFlbC4KQW5kIHRoZSBlbGRlcnMgb2YgSmFiZXNoIHNhaWQgdW50byBoaW0sIEdpdmUgdXMgc2V2ZW4gZGF5cycgcmVzcGl0ZSwgdGhhdCB3ZSBtYXkgc2VuZCBtZXNzZW5nZXJzIHVudG8gYWxsIHRoZSBjb2FzdHMgb2YgSXNyYWVsOiBhbmQgdGhlbiwgaWYgdGhlcmUgYmUgbm8gbWFuIHRvIHNhdmUgdXMsIHdlIHdpbGwgY29tZSBvdXQgdG8gdGhlZS4KVGhlbiBjYW1lIHRoZSBtZXNzZW5nZXJzIHRvIEdpYmVhaCBvZiBTYXVsLCBhbmQgdG9sZCB0aGUgdGlkaW5ncyBpbiB0aGUgZWFycyBvZiB0aGUgcGVvcGxlOiBhbmQgYWxsIHRoZSBwZW9wbGUgbGlmdGVkIHVwIHRoZWlyIHZvaWNlcywgYW5kIHdlcHQuCkFuZCwgYmVob2xkLCBTYXVsIGNhbWUgYWZ0ZXIgdGhlIGhlcmQgb3V0IG9mIHRoZSBmaWVsZDsgYW5kIFNhdWwgc2FpZCwgV2hhdCBhaWxldGggdGhlIHBlb3BsZSB0aGF0IHRoZXkgd2VlcD8gQW5kIHRoZXkgdG9sZCBoaW0gdGhlIHRpZGluZ3Mgb2YgdGhlIG1lbiBvZiBKYWJlc2guCkFuZCB0aGUgU3Bpcml0IG9mIEdvZCBjYW1lIHVwb24gU2F1bCB3aGVuIGhlIGhlYXJkIHRob3NlIHRpZGluZ3MsIGFuZCBoaXMgYW5nZXIgd2FzIGtpbmRsZWQgZ3JlYXRseS4KQW5kIGhlIHRvb2sgYSB5b2tlIG9mIG94ZW4sIGFuZCBoZXdlZCB0aGVtIGluIHBpZWNlcywgYW5kIHNlbnQgdGhlbSB0aHJvdWdob3V0IGFsbCB0aGUgY29hc3RzIG9mIElzcmFlbCBieSB0aGUgaGFuZHMgb2YgbWVzc2VuZ2Vycywgc2F5aW5nLCBXaG9zb2V2ZXIgY29tZXRoIG5vdCBmb3J0aCBhZnRlciBTYXVsIGFuZCBhZnRlciBTYW11ZWwsIHNvIHNoYWxsIGl0IGJlIGRvbmUgdW50byBoaXMgb3hlbi4gQW5kIHRoZSBmZWFyIG9mIHRoZSBMT1JEIGZlbGwgb24gdGhlIHBlb3BsZSwgYW5kIHRoZXkgY2FtZSBvdXQgd2l0aCBvbmUgY29uc2VudC4KQW5kIHdoZW4gaGUgbnVtYmVyZWQgdGhlbSBpbiBCZXplaywgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCB3ZXJlIHRocmVlIGh1bmRyZWQgdGhvdXNhbmQsIGFuZCB0aGUgbWVuIG9mIEp1ZGFoIHRoaXJ0eSB0aG91c2FuZC4KQW5kIHRoZXkgc2FpZCB1bnRvIHRoZSBtZXNzZW5nZXJzIHRoYXQgY2FtZSwgVGh1cyBzaGFsbCB5ZSBzYXkgdW50byB0aGUgbWVuIG9mIEphYmVzaGdpbGVhZCwgVG8gbW9ycm93LCBieSB0aGF0IHRpbWUgdGhlIHN1biBiZSBob3QsIHllIHNoYWxsIGhhdmUgaGVscC4gQW5kIHRoZSBtZXNzZW5nZXJzIGNhbWUgYW5kIHNoZXdlZCBpdCB0byB0aGUgbWVuIG9mIEphYmVzaDsgYW5kIHRoZXkgd2VyZSBnbGFkLgpUaGVyZWZvcmUgdGhlIG1lbiBvZiBKYWJlc2ggc2FpZCwgVG8gbW9ycm93IHdlIHdpbGwgY29tZSBvdXQgdW50byB5b3UsIGFuZCB5ZSBzaGFsbCBkbyB3aXRoIHVzIGFsbCB0aGF0IHNlZW1ldGggZ29vZCB1bnRvIHlvdS4KQW5kIGl0IHdhcyBzbyBvbiB0aGUgbW9ycm93LCB0aGF0IFNhdWwgcHV0IHRoZSBwZW9wbGUgaW4gdGhyZWUgY29tcGFuaWVzOyBhbmQgdGhleSBjYW1lIGludG8gdGhlIG1pZHN0IG9mIHRoZSBob3N0IGluIHRoZSBtb3JuaW5nIHdhdGNoLCBhbmQgc2xldyB0aGUgQW1tb25pdGVzIHVudGlsIHRoZSBoZWF0IG9mIHRoZSBkYXk6IGFuZCBpdCBjYW1lIHRvIHBhc3MsIHRoYXQgdGhleSB3aGljaCByZW1haW5lZCB3ZXJlIHNjYXR0ZXJlZCwgc28gdGhhdCB0d28gb2YgdGhlbSB3ZXJlIG5vdCBsZWZ0IHRvZ2V0aGVyLgpBbmQgdGhlIHBlb3BsZSBzYWlkIHVudG8gU2FtdWVsLCBXaG8gaXMgaGUgdGhhdCBzYWlkLCBTaGFsbCBTYXVsIHJlaWduIG92ZXIgdXM/IGJyaW5nIHRoZSBtZW4sIHRoYXQgd2UgbWF5IHB1dCB0aGVtIHRvIGRlYXRoLgpBbmQgU2F1bCBzYWlkLCBUaGVyZSBzaGFsbCBub3QgYSBtYW4gYmUgcHV0IHRvIGRlYXRoIHRoaXMgZGF5OiBmb3IgdG8gZGF5IHRoZSBMT1JEIGhhdGggd3JvdWdodCBzYWx2YXRpb24gaW4gSXNyYWVsLgpUaGVuIHNhaWQgU2FtdWVsIHRvIHRoZSBwZW9wbGUsIENvbWUsIGFuZCBsZXQgdXMgZ28gdG8gR2lsZ2FsLCBhbmQgcmVuZXcgdGhlIGtpbmdkb20gdGhlcmUuCkFuZCBhbGwgdGhlIHBlb3BsZSB3ZW50IHRvIEdpbGdhbDsgYW5kIHRoZXJlIHRoZXkgbWFkZSBTYXVsIGtpbmcgYmVmb3JlIHRoZSBMT1JEIGluIEdpbGdhbDsgYW5kIHRoZXJlIHRoZXkgc2FjcmlmaWNlZCBzYWNyaWZpY2VzIG9mIHBlYWNlIG9mZmVyaW5ncyBiZWZvcmUgdGhlIExPUkQ7IGFuZCB0aGVyZSBTYXVsIGFuZCBhbGwgdGhlIG1lbiBvZiBJc3JhZWwgcmVqb2ljZWQgZ3JlYXRseS4KQW5kIFNhbXVlbCBzYWlkIHVudG8gYWxsIElzcmFlbCwgQmVob2xkLCBJIGhhdmUgaGVhcmtlbmVkIHVudG8geW91ciB2b2ljZSBpbiBhbGwgdGhhdCB5ZSBzYWlkIHVudG8gbWUsIGFuZCBoYXZlIG1hZGUgYSBraW5nIG92ZXIgeW91LgpBbmQgbm93LCBiZWhvbGQsIHRoZSBraW5nIHdhbGtldGggYmVmb3JlIHlvdTogYW5kIEkgYW0gb2xkIGFuZCBncmF5aGVhZGVkOyBhbmQsIGJlaG9sZCwgbXkgc29ucyBhcmUgd2l0aCB5b3U6IGFuZCBJIGhhdmUgd2Fsa2VkIGJlZm9yZSB5b3UgZnJvbSBteSBjaGlsZGhvb2QgdW50byB0aGlzIGRheS4KQmVob2xkLCBoZXJlIEkgYW06IHdpdG5lc3MgYWdhaW5zdCBtZSBiZWZvcmUgdGhlIExPUkQsIGFuZCBiZWZvcmUgaGlzIGFub2ludGVkOiB3aG9zZSBveCBoYXZlIEkgdGFrZW4/IG9yIHdob3NlIGFzcyBoYXZlIEkgdGFrZW4/IG9yIHdob20gaGF2ZSBJIGRlZnJhdWRlZD8gd2hvbSBoYXZlIEkgb3BwcmVzc2VkPyBvciBvZiB3aG9zZSBoYW5kIGhhdmUgSSByZWNlaXZlZCBhbnkgYnJpYmUgdG8gYmxpbmQgbWluZSBleWVzIHRoZXJld2l0aD8gYW5kIEkgd2lsbCByZXN0b3JlIGl0IHlvdS4KQW5kIHRoZXkgc2FpZCwgVGhvdSBoYXN0IG5vdCBkZWZyYXVkZWQgdXMsIG5vciBvcHByZXNzZWQgdXMsIG5laXRoZXIgaGFzdCB0aG91IHRha2VuIG91Z2h0IG9mIGFueSBtYW4ncyBoYW5kLgpBbmQgaGUgc2FpZCB1bnRvIHRoZW0sIFRoZSBMT1JEIGlzIHdpdG5lc3MgYWdhaW5zdCB5b3UsIGFuZCBoaXMgYW5vaW50ZWQgaXMgd2l0bmVzcyB0aGlzIGRheSwgdGhhdCB5ZSBoYXZlIG5vdCBmb3VuZCBvdWdodCBpbiBteSBoYW5kLiBBbmQgdGhleSBhbnN3ZXJlZCwgSGUgaXMgd2l0bmVzcy4KQW5kIFNhbXVlbCBzYWlkIHVudG8gdGhlIHBlb3BsZSwgSXQgaXMgdGhlIExPUkQgdGhhdCBhZHZhbmNlZCBNb3NlcyBhbmQgQWFyb24sIGFuZCB0aGF0IGJyb3VnaHQgeW91ciBmYXRoZXJzIHVwIG91dCBvZiB0aGUgbGFuZCBvZiBFZ3lwdC4KTm93IHRoZXJlZm9yZSBzdGFuZCBzdGlsbCwgdGhhdCBJIG1heSByZWFzb24gd2l0aCB5b3UgYmVmb3JlIHRoZSBMT1JEIG9mIGFsbCB0aGUgcmlnaHRlb3VzIGFjdHMgb2YgdGhlIExPUkQsIHdoaWNoIGhlIGRpZCB0byB5b3UgYW5kIHRvIHlvdXIgZmF0aGVycy4KV2hlbiBKYWNvYiB3YXMgY29tZSBpbnRvIEVneXB0LCBhbmQgeW91ciBmYXRoZXJzIGNyaWVkIHVudG8gdGhlIExPUkQsIHRoZW4gdGhlIExPUkQgc2VudCBNb3NlcyBhbmQgQWFyb24sIHdoaWNoIGJyb3VnaHQgZm9ydGggeW91ciBmYXRoZXJzIG91dCBvZiBFZ3lwdCwgYW5kIG1hZGUgdGhlbSBkd2VsbCBpbiB0aGlzIHBsYWNlLgpBbmQgd2hlbiB0aGV5IGZvcmdhdCB0aGUgTE9SRCB0aGVpciBHb2QsIGhlIHNvbGQgdGhlbSBpbnRvIHRoZSBoYW5kIG9mIFNpc2VyYSwgY2FwdGFpbiBvZiB0aGUgaG9zdCBvZiBIYXpvciwgYW5kIGludG8gdGhlIGhhbmQgb2YgdGhlIFBoaWxpc3RpbmVzLCBhbmQgaW50byB0aGUgaGFuZCBvZiB0aGUga2luZyBvZiBNb2FiLCBhbmQgdGhleSBmb3VnaHQgYWdhaW5zdCB0aGVtLgpBbmQgdGhleSBjcmllZCB1bnRvIHRoZSBMT1JELCBhbmQgc2FpZCwgV2UgaGF2ZSBzaW5uZWQsIGJlY2F1c2Ugd2UgaGF2ZSBmb3JzYWtlbiB0aGUgTE9SRCwgYW5kIGhhdmUgc2VydmVkIEJhYWxpbSBhbmQgQXNodGFyb3RoOiBidXQgbm93IGRlbGl2ZXIgdXMgb3V0IG9mIHRoZSBoYW5kIG9mIG91ciBlbmVtaWVzLCBhbmQgd2Ugd2lsbCBzZXJ2ZSB0aGVlLgpBbmQgdGhlIExPUkQgc2VudCBKZXJ1YmJhYWwsIGFuZCBCZWRhbiwgYW5kIEplcGh0aGFoLCBhbmQgU2FtdWVsLCBhbmQgZGVsaXZlcmVkIHlvdSBvdXQgb2YgdGhlIGhhbmQgb2YgeW91ciBlbmVtaWVzIG9uIGV2ZXJ5IHNpZGUsIGFuZCB5ZSBkd2VsbGVkIHNhZmUuCkFuZCB3aGVuIHllIHNhdyB0aGF0IE5haGFzaCB0aGUga2luZyBvZiB0aGUgY2hpbGRyZW4gb2YgQW1tb24gY2FtZSBhZ2FpbnN0IHlvdSwgeWUgc2FpZCB1bnRvIG1lLCBOYXk7IGJ1dCBhIGtpbmcgc2hhbGwgcmVpZ24gb3ZlciB1czogd2hlbiB0aGUgTE9SRCB5b3VyIEdvZCB3YXMgeW91ciBraW5nLgpOb3cgdGhlcmVmb3JlIGJlaG9sZCB0aGUga2luZyB3aG9tIHllIGhhdmUgY2hvc2VuLCBhbmQgd2hvbSB5ZSBoYXZlIGRlc2lyZWQhIGFuZCwgYmVob2xkLCB0aGUgTE9SRCBoYXRoIHNldCBhIGtpbmcgb3ZlciB5b3UuCklmIHllIHdpbGwgZmVhciB0aGUgTE9SRCwgYW5kIHNlcnZlIGhpbSwgYW5kIG9iZXkgaGlzIHZvaWNlLCBhbmQgbm90IHJlYmVsIGFnYWluc3QgdGhlIGNvbW1hbmRtZW50IG9mIHRoZSBMT1JELCB0aGVuIHNoYWxsIGJvdGggeWUgYW5kIGFsc28gdGhlIGtpbmcgdGhhdCByZWlnbmV0aCBvdmVyIHlvdSBjb250aW51ZSBmb2xsb3dpbmcgdGhlIExPUkQgeW91ciBHb2Q6CkJ1dCBpZiB5ZSB3aWxsIG5vdCBvYmV5IHRoZSB2b2ljZSBvZiB0aGUgTE9SRCwgYnV0IHJlYmVsIGFnYWluc3QgdGhlIGNvbW1hbmRtZW50IG9mIHRoZSBMT1JELCB0aGVuIHNoYWxsIHRoZSBoYW5kIG9mIHRoZSBMT1JEIGJlIGFnYWluc3QgeW91LCBhcyBpdCB3YXMgYWdhaW5zdCB5b3VyIGZhdGhlcnMuCk5vdyB0aGVyZWZvcmUgc3RhbmQgYW5kIHNlZSB0aGlzIGdyZWF0IHRoaW5nLCB3aGljaCB0aGUgTE9SRCB3aWxsIGRvIGJlZm9yZSB5b3VyIGV5ZXMuCklzIGl0IG5vdCB3aGVhdCBoYXJ2ZXN0IHRvIGRheT8gSSB3aWxsIGNhbGwgdW50byB0aGUgTE9SRCwgYW5kIGhlIHNoYWxsIHNlbmQgdGh1bmRlciBhbmQgcmFpbjsgdGhhdCB5ZSBtYXkgcGVyY2VpdmUgYW5kIHNlZSB0aGF0IHlvdXIgd2lja2VkbmVzcyBpcyBncmVhdCwgd2hpY2ggeWUgaGF2ZSBkb25lIGluIHRoZSBzaWdodCBvZiB0aGUgTE9SRCwgaW4gYXNraW5nIHlvdSBhIGtpbmcuClNvIFNhbXVlbCBjYWxsZWQgdW50byB0aGUgTE9SRDsgYW5kIHRoZSBMT1JEIHNlbnQgdGh1bmRlciBhbmQgcmFpbiB0aGF0IGRheTogYW5kIGFsbCB0aGUgcGVvcGxlIGdyZWF0bHkgZmVhcmVkIHRoZSBMT1JEIGFuZCBTYW11ZWwuCkFuZCBhbGwgdGhlIHBlb3BsZSBzYWlkIHVudG8gU2FtdWVsLCBQcmF5IGZvciB0aHkgc2VydmFudHMgdW50byB0aGUgTE9SRCB0aHkgR29kLCB0aGF0IHdlIGRpZSBub3Q6IGZvciB3ZSBoYXZlIGFkZGVkIHVudG8gYWxsIG91ciBzaW5zIHRoaXMgZXZpbCwgdG8gYXNrIHVzIGEga2luZy4KQW5kIFNhbXVlbCBzYWlkIHVudG8gdGhlIHBlb3BsZSwgRmVhciBub3Q6IHllIGhhdmUgZG9uZSBhbGwgdGhpcyB3aWNrZWRuZXNzOiB5ZXQgdHVybiBub3QgYXNpZGUgZnJvbSBmb2xsb3dpbmcgdGhlIExPUkQsIGJ1dCBzZXJ2ZSB0aGUgTE9SRCB3aXRoIGFsbCB5b3VyIGhlYXJ0OwpBbmQgdHVybiB5ZSBub3QgYXNpZGU6IGZvciB0aGVuIHNob3VsZCB5ZSBnbyBhZnRlciB2YWluIHRoaW5ncywgd2hpY2ggY2Fubm90IHByb2ZpdCBub3IgZGVsaXZlcjsgZm9yIHRoZXkgYXJlIHZhaW4uCkZvciB0aGUgTE9SRCB3aWxsIG5vdCBmb3JzYWtlIGhpcyBwZW9wbGUgZm9yIGhpcyBncmVhdCBuYW1lJ3Mgc2FrZTogYmVjYXVzZSBpdCBoYXRoIHBsZWFzZWQgdGhlIExPUkQgdG8gbWFrZSB5b3UgaGlzIHBlb3BsZS4KTW9yZW92ZXIgYXMgZm9yIG1lLCBHb2QgZm9yYmlkIHRoYXQgSSBzaG91bGQgc2luIGFnYWluc3QgdGhlIExPUkQgaW4gY2Vhc2luZyB0byBwcmF5IGZvciB5b3U6IGJ1dCBJIHdpbGwgdGVhY2ggeW91IHRoZSBnb29kIGFuZCB0aGUgcmlnaHQgd2F5OgpPbmx5IGZlYXIgdGhlIExPUkQsIGFuZCBzZXJ2ZSBoaW0gaW4gdHJ1dGggd2l0aCBhbGwgeW91ciBoZWFydDogZm9yIGNvbnNpZGVyIGhvdyBncmVhdCB0aGluZ3MgaGUgaGF0aCBkb25lIGZvciB5b3UuCkJ1dCBpZiB5ZSBzaGFsbCBzdGlsbCBkbyB3aWNrZWRseSwgeWUgc2hhbGwgYmUgY29uc3VtZWQsIGJvdGggeWUgYW5kIHlvdXIga2luZy4KU2F1bCByZWlnbmVkIG9uZSB5ZWFyOyBhbmQgd2hlbiBoZSBoYWQgcmVpZ25lZCB0d28geWVhcnMgb3ZlciBJc3JhZWwsClNhdWwgY2hvc2UgaGltIHRocmVlIHRob3VzYW5kIG1lbiBvZiBJc3JhZWw7IHdoZXJlb2YgdHdvIHRob3VzYW5kIHdlcmUgd2l0aCBTYXVsIGluIE1pY2htYXNoIGFuZCBpbiBtb3VudCBCZXRoZWwsIGFuZCBhIHRob3VzYW5kIHdlcmUgd2l0aCBKb25hdGhhbiBpbiBHaWJlYWggb2YgQmVuamFtaW46IGFuZCB0aGUgcmVzdCBvZiB0aGUgcGVvcGxlIGhlIHNlbnQgZXZlcnkgbWFuIHRvIGhpcyB0ZW50LgpBbmQgSm9uYXRoYW4gc21vdGUgdGhlIGdhcnJpc29uIG9mIHRoZSBQaGlsaXN0aW5lcyB0aGF0IHdhcyBpbiBHZWJhLCBhbmQgdGhlIFBoaWxpc3RpbmVzIGhlYXJkIG9mIGl0LiBBbmQgU2F1bCBibGV3IHRoZSB0cnVtcGV0IHRocm91Z2hvdXQgYWxsIHRoZSBsYW5kLCBzYXlpbmcsIExldCB0aGUgSGVicmV3cyBoZWFyLgpBbmQgYWxsIElzcmFlbCBoZWFyZCBzYXkgdGhhdCBTYXVsIGhhZCBzbWl0dGVuIGEgZ2Fycmlzb24gb2YgdGhlIFBoaWxpc3RpbmVzLCBhbmQgdGhhdCBJc3JhZWwgYWxzbyB3YXMgaGFkIGluIGFib21pbmF0aW9uIHdpdGggdGhlIFBoaWxpc3RpbmVzLiBBbmQgdGhlIHBlb3BsZSB3ZXJlIGNhbGxlZCB0b2dldGhlciBhZnRlciBTYXVsIHRvIEdpbGdhbC4KQW5kIHRoZSBQaGlsaXN0aW5lcyBnYXRoZXJlZCB0aGVtc2VsdmVzIHRvZ2V0aGVyIHRvIGZpZ2h0IHdpdGggSXNyYWVsLCB0aGlydHkgdGhvdXNhbmQgY2hhcmlvdHMsIGFuZCBzaXggdGhvdXNhbmQgaG9yc2VtZW4sIGFuZCBwZW9wbGUgYXMgdGhlIHNhbmQgd2hpY2ggaXMgb24gdGhlIHNlYSBzaG9yZSBpbiBtdWx0aXR1ZGU6IGFuZCB0aGV5IGNhbWUgdXAsIGFuZCBwaXRjaGVkIGluIE1pY2htYXNoLCBlYXN0d2FyZCBmcm9tIEJldGhhdmVuLgpXaGVuIHRoZSBtZW4gb2YgSXNyYWVsIHNhdyB0aGF0IHRoZXkgd2VyZSBpbiBhIHN0cmFpdCwgKGZvciB0aGUgcGVvcGxlIHdlcmUgZGlzdHJlc3NlZCwpIHRoZW4gdGhlIHBlb3BsZSBkaWQgaGlkZSB0aGVtc2VsdmVzIGluIGNhdmVzLCBhbmQgaW4gdGhpY2tldHMsIGFuZCBpbiByb2NrcywgYW5kIGluIGhpZ2ggcGxhY2VzLCBhbmQgaW4gcGl0cy4KQW5kIHNvbWUgb2YgdGhlIEhlYnJld3Mgd2VudCBvdmVyIEpvcmRhbiB0byB0aGUgbGFuZCBvZiBHYWQgYW5kIEdpbGVhZC4gQXMgZm9yIFNhdWwsIGhlIHdhcyB5ZXQgaW4gR2lsZ2FsLCBhbmQgYWxsIHRoZSBwZW9wbGUgZm9sbG93ZWQgaGltIHRyZW1ibGluZy4KQW5kIGhlIHRhcnJpZWQgc2V2ZW4gZGF5cywgYWNjb3JkaW5nIHRvIHRoZSBzZXQgdGltZSB0aGF0IFNhbXVlbCBoYWQgYXBwb2ludGVkOiBidXQgU2FtdWVsIGNhbWUgbm90IHRvIEdpbGdhbDsgYW5kIHRoZSBwZW9wbGUgd2VyZSBzY2F0dGVyZWQgZnJvbSBoaW0uCkFuZCBTYXVsIHNhaWQsIEJyaW5nIGhpdGhlciBhIGJ1cm50IG9mZmVyaW5nIHRvIG1lLCBhbmQgcGVhY2Ugb2ZmZXJpbmdzLiBBbmQgaGUgb2ZmZXJlZCB0aGUgYnVybnQgb2ZmZXJpbmcuCkFuZCBpdCBjYW1lIHRvIHBhc3MsIHRoYXQgYXMgc29vbiBhcyBoZSBoYWQgbWFkZSBhbiBlbmQgb2Ygb2ZmZXJpbmcgdGhlIGJ1cm50IG9mZmVyaW5nLCBiZWhvbGQsIFNhbXVlbCBjYW1lOyBhbmQgU2F1bCB3ZW50IG91dCB0byBtZWV0IGhpbSwgdGhhdCBoZSBtaWdodCBzYWx1dGUgaGltLgpBbmQgU2FtdWVsIHNhaWQsIFdoYXQgaGFzdCB0aG91IGRvbmU/IEFuZCBTYXVsIHNhaWQsIEJlY2F1c2UgSSBzYXcgdGhhdCB0aGUgcGVvcGxlIHdlcmUgc2NhdHRlcmVkIGZyb20gbWUsIGFuZCB0aGF0IHRob3UgY2FtZXN0IG5vdCB3aXRoaW4gdGhlIGRheXMgYXBwb2ludGVkLCBhbmQgdGhhdCB0aGUgUGhpbGlzdGluZXMgZ2F0aGVyZWQgdGhlbXNlbHZlcyB0b2dldGhlciBhdCBNaWNobWFzaDsKVGhlcmVmb3JlIHNhaWQgSSwgVGhlIFBoaWxpc3RpbmVzIHdpbGwgY29tZSBkb3duIG5vdyB1cG9uIG1lIHRvIEdpbGdhbCwgYW5kIEkgaGF2ZSBub3QgbWFkZSBzdXBwbGljYXRpb24gdW50byB0aGUgTE9SRDogSSBmb3JjZWQgbXlzZWxmIHRoZXJlZm9yZSwgYW5kIG9mZmVyZWQgYSBidXJudCBvZmZlcmluZy4KQW5kIFNhbXVlbCBzYWlkIHRvIFNhdWwsIFRob3UgaGFzdCBkb25lIGZvb2xpc2hseTogdGhvdSBoYXN0IG5vdCBrZXB0IHRoZSBjb21tYW5kbWVudCBvZiB0aGUgTE9SRCB0aHkgR29kLCB3aGljaCBoZSBjb21tYW5kZWQgdGhlZTogZm9yIG5vdyB3b3VsZCB0aGUgTE9SRCBoYXZlIGVzdGFibGlzaGVkIHRoeSBraW5nZG9tIHVwb24gSXNyYWVsIGZvciBldmVyLgpCdXQgbm93IHRoeSBraW5nZG9tIHNoYWxsIG5vdCBjb250aW51ZTogdGhlIExPUkQgaGF0aCBzb3VnaHQgaGltIGEgbWFuIGFmdGVyIGhpcyBvd24gaGVhcnQsIGFuZCB0aGUgTE9SRCBoYXRoIGNvbW1hbmRlZCBoaW0gdG8gYmUgY2FwdGFpbiBvdmVyIGhpcyBwZW9wbGUsIGJlY2F1c2UgdGhvdSBoYXN0IG5vdCBrZXB0IHRoYXQgd2hpY2ggdGhlIExPUkQgY29tbWFuZGVkIHRoZWUuCkFuZCBTYW11ZWwgYXJvc2UsIGFuZCBnYXQgaGltIHVwIGZyb20gR2lsZ2FsIHVudG8gR2liZWFoIG9mIEJlbmphbWluLiBBbmQgU2F1bCBudW1iZXJlZCB0aGUgcGVvcGxlIHRoYXQgd2VyZSBwcmVzZW50IHdpdGggaGltLCBhYm91dCBzaXggaHVuZHJlZCBtZW4uCkFuZCBTYXVsLCBhbmQgSm9uYXRoYW4gaGlzIHNvbiwgYW5kIHRoZSBwZW9wbGUgdGhhdCB3ZXJlIHByZXNlbnQgd2l0aCB0aGVtLCBhYm9kZSBpbiBHaWJlYWggb2YgQmVuamFtaW46IGJ1dCB0aGUgUGhpbGlzdGluZXMgZW5jYW1wZWQgaW4gTWljaG1hc2guCkFuZCB0aGUgc3BvaWxlcnMgY2FtZSBvdXQgb2YgdGhlIGNhbXAgb2YgdGhlIFBoaWxpc3RpbmVzIGluIHRocmVlIGNvbXBhbmllczogb25lIGNvbXBhbnkgdHVybmVkIHVudG8gdGhlIHdheSB0aGF0IGxlYWRldGggdG8gT3BocmFoLCB1bnRvIHRoZSBsYW5kIG9mIFNodWFsOgpBbmQgYW5vdGhlciBjb21wYW55IHR1cm5lZCB0aGUgd2F5IHRvIEJldGhob3JvbjogYW5kIGFub3RoZXIgY29tcGFueSB0dXJuZWQgdG8gdGhlIHdheSBvZiB0aGUgYm9yZGVyIHRoYXQgbG9va2V0aCB0byB0aGUgdmFsbGV5IG9mIFplYm9pbSB0b3dhcmQgdGhlIHdpbGRlcm5lc3MuCk5vdyB0aGVyZSB3YXMgbm8gc21pdGggZm91bmQgdGhyb3VnaG91dCBhbGwgdGhlIGxhbmQgb2YgSXNyYWVsOiBmb3IgdGhlIFBoaWxpc3RpbmVzIHNhaWQsIExlc3QgdGhlIEhlYnJld3MgbWFrZSB0aGVtIHN3b3JkcyBvciBzcGVhcnM6CkJ1dCBhbGwgdGhlIElzcmFlbGl0ZXMgd2VudCBkb3duIHRvIHRoZSBQaGlsaXN0aW5lcywgdG8gc2hhcnBlbiBldmVyeSBtYW4gaGlzIHNoYXJlLCBhbmQgaGlzIGNvdWx0ZXIsIGFuZCBoaXMgYXhlLCBhbmQgaGlzIG1hdHRvY2suCllldCB0aGV5IGhhZCBhIGZpbGUgZm9yIHRoZSBtYXR0b2NrcywgYW5kIGZvciB0aGUgY291bHRlcnMsIGFuZCBmb3IgdGhlIGZvcmtzLCBhbmQgZm9yIHRoZSBheGVzLCBhbmQgdG8gc2hhcnBlbiB0aGUgZ29hZHMuClNvIGl0IGNhbWUgdG8gcGFzcyBpbiB0aGUgZGF5IG9mIGJhdHRsZSwgdGhhdCB0aGVyZSB3YXMgbmVpdGhlciBzd29yZCBub3Igc3BlYXIgZm91bmQgaW4gdGhlIGhhbmQgb2YgYW55IG9mIHRoZSBwZW9wbGUgdGhhdCB3ZXJlIHdpdGggU2F1bCBhbmQgSm9uYXRoYW46IGJ1dCB3aXRoIFNhdWwgYW5kIHdpdGggSm9uYXRoYW4gaGlzIHNvbiB3YXMgdGhlcmUgZm91bmQuCkFuZCB0aGUgZ2Fycmlzb24gb2YgdGhlIFBoaWxpc3RpbmVzIHdlbnQgb3V0IHRvIHRoZSBwYXNzYWdlIG9mIE1pY2htYXNoLgpOb3cgaXQgY2FtZSB0byBwYXNzIHVwb24gYSBkYXksIHRoYXQgSm9uYXRoYW4gdGhlIHNvbiBvZiBTYXVsIHNhaWQgdW50byB0aGUgeW91bmcgbWFuIHRoYXQgYmFyZSBoaXMgYXJtb3VyLCBDb21lLCBhbmQgbGV0IHVzIGdvIG92ZXIgdG8gdGhlIFBoaWxpc3RpbmVzJyBnYXJyaXNvbiwgdGhhdCBpcyBvbiB0aGUgb3RoZXIgc2lkZS4gQnV0IGhlIHRvbGQgbm90IGhpcyBmYXRoZXIuCkFuZCBTYXVsIHRhcnJpZWQgaW4gdGhlIHV0dGVybW9zdCBwYXJ0IG9mIEdpYmVhaCB1bmRlciBhIHBvbWVncmFuYXRlIHRyZWUgd2hpY2ggaXMgaW4gTWlncm9uOiBhbmQgdGhlIHBlb3BsZSB0aGF0IHdlcmUgd2l0aCBoaW0gd2VyZSBhYm91dCBzaXggaHVuZHJlZCBtZW47CkFuZCBBaGlhaCwgdGhlIHNvbiBvZiBBaGl0dWIsIEljaGFib2QncyBicm90aGVyLCB0aGUgc29uIG9mIFBoaW5laGFzLCB0aGUgc29uIG9mIEVsaSwgdGhlIExPUkQncyBwcmllc3QgaW4gU2hpbG9oLCB3ZWFyaW5nIGFuIGVwaG9kLiBBbmQgdGhlIHBlb3BsZSBrbmV3IG5vdCB0aGF0IEpvbmF0aGFuIHdhcyBnb25lLgpBbmQgYmV0d2VlbiB0aGUgcGFzc2FnZXMsIGJ5IHdoaWNoIEpvbmF0aGFuIHNvdWdodCB0byBnbyBvdmVyIHVudG8gdGhlIFBoaWxpc3RpbmVzJyBnYXJyaXNvbiwgdGhlcmUgd2FzIGEgc2hhcnAgcm9jayBvbiB0aGUgb25lIHNpZGUsIGFuZCBhIHNoYXJwIHJvY2sgb24gdGhlIG90aGVyIHNpZGU6IGFuZCB0aGUgbmFtZSBvZiB0aGUgb25lIHdhcyBCb3pleiwgYW5kIHRoZSBuYW1lIG9mIHRoZSBvdGhlciBTZW5laC4KVGhlIGZvcmVmcm9udCBvZiB0aGUgb25lIHdhcyBzaXR1YXRlIG5vcnRod2FyZCBvdmVyIGFnYWluc3QgTWljaG1hc2gsIGFuZCB0aGUgb3RoZXIgc291dGh3YXJkIG92ZXIgYWdhaW5zdCBHaWJlYWguCkFuZCBKb25hdGhhbiBzYWlkIHRvIHRoZSB5b3VuZyBtYW4gdGhhdCBiYXJlIGhpcyBhcm1vdXIsIENvbWUsIGFuZCBsZXQgdXMgZ28gb3ZlciB1bnRvIHRoZSBnYXJyaXNvbiBvZiB0aGVzZSB1bmNpcmN1bWNpc2VkOiBpdCBtYXkgYmUgdGhhdCB0aGUgTE9SRCB3aWxsIHdvcmsgZm9yIHVzOiBmb3IgdGhlcmUgaXMgbm8gcmVzdHJhaW50IHRvIHRoZSBMT1JEIHRvIHNhdmUgYnkgbWFueSBvciBieSBmZXcuCkFuZCBoaXMgYXJtb3VyYmVhcmVyIHNhaWQgdW50byBoaW0sIERvIGFsbCB0aGF0IGlzIGluIHRoaW5lIGhlYXJ0OiB0dXJuIHRoZWU7IGJlaG9sZCwgSSBhbSB3aXRoIHRoZWUgYWNjb3JkaW5nIHRvIHRoeSBoZWFydC4KVGhlbiBzYWlkIEpvbmF0aGFuLCBCZWhvbGQsIHdlIHdpbGwgcGFzcyBvdmVyIHVudG8gdGhlc2UgbWVuLCBhbmQgd2Ugd2lsbCBkaXNjb3ZlciBvdXJzZWx2ZXMgdW50byB0aGVtLgpJZiB0aGV5IHNheSB0aHVzIHVudG8gdXMsIFRhcnJ5IHVudGlsIHdlIGNvbWUgdG8geW91OyB0aGVuIHdlIHdpbGwgc3RhbmQgc3RpbGwgaW4gb3VyIHBsYWNlLCBhbmQgd2lsbCBub3QgZ28gdXAgdW50byB0aGVtLgpCdXQgaWYgdGhleSBzYXkgdGh1cywgQ29tZSB1cCB1bnRvIHVzOyB0aGVuIHdlIHdpbGwgZ28gdXA6IGZvciB0aGUgTE9SRCBoYXRoIGRlbGl2ZXJlZCB0aGVtIGludG8gb3VyIGhhbmQ6IGFuZCB0aGlzIHNoYWxsIGJlIGEgc2lnbiB1bnRvIHVzLgpBbmQgYm90aCBvZiB0aGVtIGRpc2NvdmVyZWQgdGhlbXNlbHZlcyB1bnRvIHRoZSBnYXJyaXNvbiBvZiB0aGUgUGhpbGlzdGluZXM6IGFuZCB0aGUgUGhpbGlzdGluZXMgc2FpZCwgQmVob2xkLCB0aGUgSGVicmV3cyBjb21lIGZvcnRoIG91dCBvZiB0aGUgaG9sZXMgd2hlcmUgdGhleSBoYWQgaGlkIHRoZW1zZWx2ZXMuCkFuZCB0aGUgbWVuIG9mIHRoZSBnYXJyaXNvbiBhbnN3ZXJlZCBKb25hdGhhbiBhbmQgaGlzIGFybW91cmJlYXJlciwgYW5kIHNhaWQsIENvbWUgdXAgdG8gdXMsIGFuZCB3ZSB3aWxsIHNoZXcgeW91IGEgdGhpbmcuIEFuZCBKb25hdGhhbiBzYWlkIHVudG8gaGlzIGFybW91cmJlYXJlciwgQ29tZSB1cCBhZnRlciBtZTogZm9yIHRoZSBMT1JEIGhhdGggZGVsaXZlcmVkIHRoZW0gaW50byB0aGUgaGFuZCBvZiBJc3JhZWwuCkFuZCBKb25hdGhhbiBjbGltYmVkIHVwIHVwb24gaGlzIGhhbmRzIGFuZCB1cG9uIGhpcyBmZWV0LCBhbmQgaGlzIGFybW91cmJlYXJlciBhZnRlciBoaW06IGFuZCB0aGV5IGZlbGwgYmVmb3JlIEpvbmF0aGFuOyBhbmQgaGlzIGFybW91cmJlYXJlciBzbGV3IGFmdGVyIGhpbS4KQW5kIHRoYXQgZmlyc3Qgc2xhdWdodGVyLCB3aGljaCBKb25hdGhhbiBhbmQgaGlzIGFybW91cmJlYXJlciBtYWRlLCB3YXMgYWJvdXQgdHdlbnR5IG1lbiwgd2l0aGluIGFzIGl0IHdlcmUgYW4gaGFsZiBhY3JlIG9mIGxhbmQsIHdoaWNoIGEgeW9rZSBvZiBveGVuIG1pZ2h0IHBsb3cuCkFuZCB0aGVyZSB3YXMgdHJlbWJsaW5nIGluIHRoZSBob3N0LCBpbiB0aGUgZmllbGQsIGFuZCBhbW9uZyBhbGwgdGhlIHBlb3BsZTogdGhlIGdhcnJpc29uLCBhbmQgdGhlIHNwb2lsZXJzLCB0aGV5IGFsc28gdHJlbWJsZWQsIGFuZCB0aGUgZWFydGggcXVha2VkOiBzbyBpdCB3YXMgYSB2ZXJ5IGdyZWF0IHRyZW1ibGluZy4KQW5kIHRoZSB3YXRjaG1lbiBvZiBTYXVsIGluIEdpYmVhaCBvZiBCZW5qYW1pbiBsb29rZWQ7IGFuZCwgYmVob2xkLCB0aGUgbXVsdGl0dWRlIG1lbHRlZCBhd2F5LCBhbmQgdGhleSB3ZW50IG9uIGJlYXRpbmcgZG93biBvbmUgYW5vdGhlci4KVGhlbiBzYWlkIFNhdWwgdW50byB0aGUgcGVvcGxlIHRoYXQgd2VyZSB3aXRoIGhpbSwgTnVtYmVyIG5vdywgYW5kIHNlZSB3aG8gaXMgZ29uZSBmcm9tIHVzLiBBbmQgd2hlbiB0aGV5IGhhZCBudW1iZXJlZCwgYmVob2xkLCBKb25hdGhhbiBhbmQgaGlzIGFybW91cmJlYXJlciB3ZXJlIG5vdCB0aGVyZS4KQW5kIFNhdWwgc2FpZCB1bnRvIEFoaWFoLCBCcmluZyBoaXRoZXIgdGhlIGFyayBvZiBHb2QuIEZvciB0aGUgYXJrIG9mIEdvZCB3YXMgYXQgdGhhdCB0aW1lIHdpdGggdGhlIGNoaWxkcmVuIG9mIElzcmFlbC4KQW5kIGl0IGNhbWUgdG8gcGFzcywgd2hpbGUgU2F1bCB0YWxrZWQgdW50byB0aGUgcHJpZXN0LCB0aGF0IHRoZSBub2lzZSB0aGF0IHdhcyBpbiB0aGUgaG9zdCBvZiB0aGUgUGhpbGlzdGluZXMgd2VudCBvbiBhbmQgaW5jcmVhc2VkOiBhbmQgU2F1bCBzYWlkIHVudG8gdGhlIHByaWVzdCwgV2l0aGRyYXcgdGhpbmUgaGFuZC4KQW5kIFNhdWwgYW5kIGFsbCB0aGUgcGVvcGxlIHRoYXQgd2VyZSB3aXRoIGhpbSBhc3NlbWJsZWQgdGhlbXNlbHZlcywgYW5kIHRoZXkgY2FtZSB0byB0aGUgYmF0dGxlOiBhbmQsIGJlaG9sZCwgZXZlcnkgbWFuJ3Mgc3dvcmQgd2FzIGFnYWluc3QgaGlzIGZlbGxvdywgYW5kIHRoZXJlIHdhcyBhIHZlcnkgZ3JlYXQgZGlzY29tZml0dXJlLgpNb3Jlb3ZlciB0aGUgSGVicmV3cyB0aGF0IHdlcmUgd2l0aCB0aGUgUGhpbGlzdGluZXMgYmVmb3JlIHRoYXQgdGltZSwgd2hpY2ggd2VudCB1cCB3aXRoIHRoZW0gaW50byB0aGUgY2FtcCBmcm9tIHRoZSBjb3VudHJ5IHJvdW5kIGFib3V0LCBldmVuIHRoZXkgYWxzbyB0dXJuZWQgdG8gYmUgd2l0aCB0aGUgSXNyYWVsaXRlcyB0aGF0IHdlcmUgd2l0aCBTYXVsIGFuZCBKb25hdGhhbi4KTGlrZXdpc2UgYWxsIHRoZSBtZW4gb2YgSXNyYWVsIHdoaWNoIGhhZCBoaWQgdGhlbXNlbHZlcyBpbiBtb3VudCBFcGhyYWltLCB3aGVuIHRoZXkgaGVhcmQgdGhhdCB0aGUgUGhpbGlzdGluZXMgZmxlZCwgZXZlbiB0aGV5IGFsc28gZm9sbG93ZWQgaGFyZCBhZnRlciB0aGVtIGluIHRoZSBiYXR0bGUuClNvIHRoZSBMT1JEIHNhdmVkIElzcmFlbCB0aGF0IGRheTogYW5kIHRoZSBiYXR0bGUgcGFzc2VkIG92ZXIgdW50byBCZXRoYXZlbi4KQW5kIHRoZSBtZW4gb2YgSXNyYWVsIHdlcmUgZGlzdHJlc3NlZCB0aGF0IGRheTogZm9yIFNhdWwgaGFkIGFkanVyZWQgdGhlIHBlb3BsZSwgc2F5aW5nLCBDdXJzZWQgYmUgdGhlIG1hbiB0aGF0IGVhdGV0aCBhbnkgZm9vZCB1bnRpbCBldmVuaW5nLCB0aGF0IEkgbWF5IGJlIGF2ZW5nZWQgb24gbWluZSBlbmVtaWVzLiBTbyBub25lIG9mIHRoZSBwZW9wbGUgdGFzdGVkIGFueSBmb29kLgpBbmQgYWxsIHRoZXkgb2YgdGhlIGxhbmQgY2FtZSB0byBhIHdvb2Q7IGFuZCB0aGVyZSB3YXMgaG9uZXkgdXBvbiB0aGUgZ3JvdW5kLgpBbmQgd2hlbiB0aGUgcGVvcGxlIHdlcmUgY29tZSBpbnRvIHRoZSB3b29kLCBiZWhvbGQsIHRoZSBob25leSBkcm9wcGVkOyBidXQgbm8gbWFuIHB1dCBoaXMgaGFuZCB0byBoaXMgbW91dGg6IGZvciB0aGUgcGVvcGxlIGZlYXJlZCB0aGUgb2F0aC4KQnV0IEpvbmF0aGFuIGhlYXJkIG5vdCB3aGVuIGhpcyBmYXRoZXIgY2hhcmdlZCB0aGUgcGVvcGxlIHdpdGggdGhlIG9hdGg6IHdoZXJlZm9yZSBoZSBwdXQgZm9ydGggdGhlIGVuZCBvZiB0aGUgcm9kIHRoYXQgd2FzIGluIGhpcyBoYW5kLCBhbmQgZGlwcGVkIGl0IGluIGFuIGhvbmV5Y29tYiwgYW5kIHB1dCBoaXMgaGFuZCB0byBoaXMgbW91dGg7IGFuZCBoaXMgZXllcyB3ZXJlIGVubGlnaHRlbmVkLgpUaGVuIGFuc3dlcmVkIG9uZSBvZiB0aGUgcGVvcGxlLCBhbmQgc2FpZCwgVGh5IGZhdGhlciBzdHJhaXRseSBjaGFyZ2VkIHRoZSBwZW9wbGUgd2l0aCBhbiBvYXRoLCBzYXlpbmcsIEN1cnNlZCBiZSB0aGUgbWFuIHRoYXQgZWF0ZXRoIGFueSBmb29kIHRoaXMgZGF5LiBBbmQgdGhlIHBlb3BsZSB3ZXJlIGZhaW50LgpUaGVuIHNhaWQgSm9uYXRoYW4sIE15IGZhdGhlciBoYXRoIHRyb3VibGVkIHRoZSBsYW5kOiBzZWUsIEkgcHJheSB5b3UsIGhvdyBtaW5lIGV5ZXMgaGF2ZSBiZWVuIGVubGlnaHRlbmVkLCBiZWNhdXNlIEkgdGFzdGVkIGEgbGl0dGxlIG9mIHRoaXMgaG9uZXkuCkhvdyBtdWNoIG1vcmUsIGlmIGhhcGx5IHRoZSBwZW9wbGUgaGFkIGVhdGVuIGZyZWVseSB0byBkYXkgb2YgdGhlIHNwb2lsIG9mIHRoZWlyIGVuZW1pZXMgd2hpY2ggdGhleSBmb3VuZD8gZm9yIGhhZCB0aGVyZSBub3QgYmVlbiBub3cgYSBtdWNoIGdyZWF0ZXIgc2xhdWdodGVyIGFtb25nIHRoZSBQaGlsaXN0aW5lcz8KQW5kIHRoZXkgc21vdGUgdGhlIFBoaWxpc3RpbmVzIHRoYXQgZGF5IGZyb20gTWljaG1hc2ggdG8gQWlqYWxvbjogYW5kIHRoZSBwZW9wbGUgd2VyZSB2ZXJ5IGZhaW50LgpBbmQgdGhlIHBlb3BsZSBmbGV3IHVwb24gdGhlIHNwb2lsLCBhbmQgdG9vayBzaGVlcCwgYW5kIG94ZW4sIGFuZCBjYWx2ZXMsIGFuZCBzbGV3IHRoZW0gb24gdGhlIGdyb3VuZDogYW5kIHRoZSBwZW9wbGUgZGlkIGVhdCB0aGVtIHdpdGggdGhlIGJsb29kLgpUaGVuIHRoZXkgdG9sZCBTYXVsLCBzYXlpbmcsIEJlaG9sZCwgdGhlIHBlb3BsZSBzaW4gYWdhaW5zdCB0aGUgTE9SRCwgaW4gdGhhdCB0aGV5IGVhdCB3aXRoIHRoZSBibG9vZC4gQW5kIGhlIHNhaWQsIFllIGhhdmUgdHJhbnNncmVzc2VkOiByb2xsIGEgZ3JlYXQgc3RvbmUgdW50byBtZSB0aGlzIGRheS4KQW5kIFNhdWwgc2FpZCwgRGlzcGVyc2UgeW91cnNlbHZlcyBhbW9uZyB0aGUgcGVvcGxlLCBhbmQgc2F5IHVudG8gdGhlbSwgQnJpbmcgbWUgaGl0aGVyIGV2ZXJ5IG1hbiBoaXMgb3gsIGFuZCBldmVyeSBtYW4gaGlzIHNoZWVwLCBhbmQgc2xheSB0aGVtIGhlcmUsIGFuZCBlYXQ7IGFuZCBzaW4gbm90IGFnYWluc3QgdGhlIExPUkQgaW4gZWF0aW5nIHdpdGggdGhlIGJsb29kLiBBbmQgYWxsIHRoZSBwZW9wbGUgYnJvdWdodCBldmVyeSBtYW4gaGlzIG94IHdpdGggaGltIHRoYXQgbmlnaHQsIGFuZCBzbGV3IHRoZW0gdGhlcmUuCkFuZCBTYXVsIGJ1aWx0IGFuIGFsdGFyIHVudG8gdGhlIExPUkQ6IHRoZSBzYW1lIHdhcyB0aGUgZmlyc3QgYWx0YXIgdGhhdCBoZSBidWlsdCB1bnRvIHRoZSBMT1JELgpBbmQgU2F1bCBzYWlkLCBMZXQgdXMgZ28gZG93biBhZnRlciB0aGUgUGhpbGlzdGluZXMgYnkgbmlnaHQsIGFuZCBzcG9pbCB0aGVtIHVudGlsIHRoZSBtb3JuaW5nIGxpZ2h0LCBhbmQgbGV0IHVzIG5vdCBsZWF2ZSBhIG1hbiBvZiB0aGVtLiBBbmQgdGhleSBzYWlkLCBEbyB3aGF0c29ldmVyIHNlZW1ldGggZ29vZCB1bnRvIHRoZWUuIFRoZW4gc2FpZCB0aGUgcHJpZXN0LCBMZXQgdXMgZHJhdyBuZWFyIGhpdGhlciB1bnRvIEdvZC4KQW5kIFNhdWwgYXNrZWQgY291bnNlbCBvZiBHb2QsIFNoYWxsIEkgZ28gZG93biBhZnRlciB0aGUgUGhpbGlzdGluZXM/IHdpbHQgdGhvdSBkZWxpdmVyIHRoZW0gaW50byB0aGUgaGFuZCBvZiBJc3JhZWw/IEJ1dCBoZSBhbnN3ZXJlZCBoaW0gbm90IHRoYXQgZGF5LgpBbmQgU2F1bCBzYWlkLCBEcmF3IHllIG5lYXIgaGl0aGVyLCBhbGwgdGhlIGNoaWVmIG9mIHRoZSBwZW9wbGU6IGFuZCBrbm93IGFuZCBzZWUgd2hlcmVpbiB0aGlzIHNpbiBoYXRoIGJlZW4gdGhpcyBkYXkuCkZvciwgYXMgdGhlIExPUkQgbGl2ZXRoLCB3aGljaCBzYXZldGggSXNyYWVsLCB0aG91Z2ggaXQgYmUgaW4gSm9uYXRoYW4gbXkgc29uLCBoZSBzaGFsbCBzdXJlbHkgZGllLiBCdXQgdGhlcmUgd2FzIG5vdCBhIG1hbiBhbW9uZyBhbGwgdGhlIHBlb3BsZSB0aGF0IGFuc3dlcmVkIGhpbS4KVGhlbiBzYWlkIGhlIHVudG8gYWxsIElzcmFlbCwgQmUgeWUgb24gb25lIHNpZGUsIGFuZCBJIGFuZCBKb25hdGhhbiBteSBzb24gd2lsbCBiZSBvbiB0aGUgb3RoZXIgc2lkZS4gQW5kIHRoZSBwZW9wbGUgc2FpZCB1bnRvIFNhdWwsIERvIHdoYXQgc2VlbWV0aCBnb29kIHVudG8gdGhlZS4KVGhlcmVmb3JlIFNhdWwgc2FpZCB1bnRvIHRoZSBMT1JEIEdvZCBvZiBJc3JhZWwsIEdpdmUgYSBwZXJmZWN0IGxvdC4gQW5kIFNhdWwgYW5kIEpvbmF0aGFuIHdlcmUgdGFrZW46IGJ1dCB0aGUgcGVvcGxlIGVzY2FwZWQuCkFuZCBTYXVsIHNhaWQsIENhc3QgbG90cyBiZXR3ZWVuIG1lIGFuZCBKb25hdGhhbiBteSBzb24uIEFuZCBKb25hdGhhbiB3YXMgdGFrZW4uClRoZW4gU2F1bCBzYWlkIHRvIEpvbmF0aGFuLCBUZWxsIG1lIHdoYXQgdGhvdSBoYXN0IGRvbmUuIEFuZCBKb25hdGhhbiB0b2xkIGhpbSwgYW5kIHNhaWQsIEkgZGlkIGJ1dCB0YXN0ZSBhIGxpdHRsZSBob25leSB3aXRoIHRoZSBlbmQgb2YgdGhlIHJvZCB0aGF0IHdhcyBpbiBtaW5lIGhhbmQsIGFuZCwgbG8sIEkgbXVzdCBkaWUuCkFuZCBTYXVsIGFuc3dlcmVkLCBHb2QgZG8gc28gYW5kIG1vcmUgYWxzbzogZm9yIHRob3Ugc2hhbHQgc3VyZWx5IGRpZSwgSm9uYXRoYW4uCkFuZCB0aGUgcGVvcGxlIHNhaWQgdW50byBTYXVsLCBTaGFsbCBKb25hdGhhbiBkaWUsIHdobyBoYXRoIHdyb3VnaHQgdGhpcyBncmVhdCBzYWx2YXRpb24gaW4gSXNyYWVsPyBHb2QgZm9yYmlkOiBhcyB0aGUgTE9SRCBsaXZldGgsIHRoZXJlIHNoYWxsIG5vdCBvbmUgaGFpciBvZiBoaXMgaGVhZCBmYWxsIHRvIHRoZSBncm91bmQ7IGZvciBoZSBoYXRoIHdyb3VnaHQgd2l0aCBHb2QgdGhpcyBkYXkuIFNvIHRoZSBwZW9wbGUgcmVzY3VlZCBKb25hdGhhbiwgdGhhdCBoZSBkaWVkIG5vdC4KVGhlbiBTYXVsIHdlbnQgdXAgZnJvbSBmb2xsb3dpbmcgdGhlIFBoaWxpc3RpbmVzOiBhbmQgdGhlIFBoaWxpc3RpbmVzIHdlbnQgdG8gdGhlaXIgb3duIHBsYWNlLgpTbyBTYXVsIHRvb2sgdGhlIGtpbmdkb20gb3ZlciBJc3JhZWwsIGFuZCBmb3VnaHQgYWdhaW5zdCBhbGwgaGlzIGVuZW1pZXMgb24gZXZlcnkgc2lkZSwgYWdhaW5zdCBNb2FiLCBhbmQgYWdhaW5zdCB0aGUgY2hpbGRyZW4gb2YgQW1tb24sIGFuZCBhZ2FpbnN0IEVkb20sIGFuZCBhZ2FpbnN0IHRoZSBraW5ncyBvZiBab2JhaCwgYW5kIGFnYWluc3QgdGhlIFBoaWxpc3RpbmVzOiBhbmQgd2hpdGhlcnNvZXZlciBoZSB0dXJuZWQgaGltc2VsZiwgaGUgdmV4ZWQgdGhlbS4KQW5kIGhlIGdhdGhlcmVkIGFuIGhvc3QsIGFuZCBzbW90ZSB0aGUgQW1hbGVraXRlcywgYW5kIGRlbGl2ZXJlZCBJc3JhZWwgb3V0IG9mIHRoZSBoYW5kcyBvZiB0aGVtIHRoYXQgc3BvaWxlZCB0aGVtLgpOb3cgdGhlIHNvbnMgb2YgU2F1bCB3ZXJlIEpvbmF0aGFuLCBhbmQgSXNodWksIGFuZCBNZWxjaGlzaHVhOiBhbmQgdGhlIG5hbWVzIG9mIGhpcyB0d28gZGF1Z2h0ZXJzIHdlcmUgdGhlc2U7IHRoZSBuYW1lIG9mIHRoZSBmaXJzdGJvcm4gTWVyYWIsIGFuZCB0aGUgbmFtZSBvZiB0aGUgeW91bmdlciBNaWNoYWw6CkFuZCB0aGUgbmFtZSBvZiBTYXVsJ3Mgd2lmZSB3YXMgQWhpbm9hbSwgdGhlIGRhdWdodGVyIG9mIEFoaW1hYXo6IGFuZCB0aGUgbmFtZSBvZiB0aGUgY2FwdGFpbiBvZiBoaXMgaG9zdCB3YXMgQWJuZXIsIHRoZSBzb24gb2YgTmVyLCBTYXVsJ3MgdW5jbGUuCkFuZCBLaXNoIHdhcyB0aGUgZmF0aGVyIG9mIFNhdWw7IGFuZCBOZXIgdGhlIGZhdGhlciBvZiBBYm5lciB3YXMgdGhlIHNvbiBvZiBBYmllbC4KQW5kIHRoZXJlIHdhcyBzb3JlIHdhciBhZ2FpbnN0IHRoZSBQaGlsaXN0aW5lcyBhbGwgdGhlIGRheXMgb2YgU2F1bDogYW5kIHdoZW4gU2F1bCBzYXcgYW55IHN0cm9uZyBtYW4sIG9yIGFueSB2YWxpYW50IG1hbiwgaGUgdG9vayBoaW0gdW50byBoaW0uClNhbXVlbCBhbHNvIHNhaWQgdW50byBTYXVsLCBUaGUgTE9SRCBzZW50IG1lIHRvIGFub2ludCB0aGVlIHRvIGJlIGtpbmcgb3ZlciBoaXMgcGVvcGxlLCBvdmVyIElzcmFlbDogbm93IHRoZXJlZm9yZSBoZWFya2VuIHRob3UgdW50byB0aGUgdm9pY2Ugb2YgdGhlIHdvcmRzIG9mIHRoZSBMT1JELgpUaHVzIHNhaXRoIHRoZSBMT1JEIG9mIGhvc3RzLCBJIHJlbWVtYmVyIHRoYXQgd2hpY2ggQW1hbGVrIGRpZCB0byBJc3JhZWwsIGhvdyBoZSBsYWlkIHdhaXQgZm9yIGhpbSBpbiB0aGUgd2F5LCB3aGVuIGhlIGNhbWUgdXAgZnJvbSBFZ3lwdC4KTm93IGdvIGFuZCBzbWl0ZSBBbWFsZWssIGFuZCB1dHRlcmx5IGRlc3Ryb3kgYWxsIHRoYXQgdGhleSBoYXZlLCBhbmQgc3BhcmUgdGhlbSBub3Q7IGJ1dCBzbGF5IGJvdGggbWFuIGFuZCB3b21hbiwgaW5mYW50IGFuZCBzdWNrbGluZywgb3ggYW5kIHNoZWVwLCBjYW1lbCBhbmQgYXNzLgpBbmQgU2F1bCBnYXRoZXJlZCB0aGUgcGVvcGxlIHRvZ2V0aGVyLCBhbmQgbnVtYmVyZWQgdGhlbSBpbiBUZWxhaW0sIHR3byBodW5kcmVkIHRob3VzYW5kIGZvb3RtZW4sIGFuZCB0ZW4gdGhvdXNhbmQgbWVuIG9mIEp1ZGFoLgpBbmQgU2F1bCBjYW1lIHRvIGEgY2l0eSBvZiBBbWFsZWssIGFuZCBsYWlkIHdhaXQgaW4gdGhlIHZhbGxleS4KQW5kIFNhdWwgc2FpZCB1bnRvIHRoZSBLZW5pdGVzLCBHbywgZGVwYXJ0LCBnZXQgeW91IGRvd24gZnJvbSBhbW9uZyB0aGUgQW1hbGVraXRlcywgbGVzdCBJIGRlc3Ryb3kgeW91IHdpdGggdGhlbTogZm9yIHllIHNoZXdlZCBraW5kbmVzcyB0byBhbGwgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgd2hlbiB0aGV5IGNhbWUgdXAgb3V0IG9mIEVneXB0LiBTbyB0aGUgS2VuaXRlcyBkZXBhcnRlZCBmcm9tIGFtb25nIHRoZSBBbWFsZWtpdGVzLgpBbmQgU2F1bCBzbW90ZSB0aGUgQW1hbGVraXRlcyBmcm9tIEhhdmlsYWggdW50aWwgdGhvdSBjb21lc3QgdG8gU2h1ciwgdGhhdCBpcyBvdmVyIGFnYWluc3QgRWd5cHQuCkFuZCBoZSB0b29rIEFnYWcgdGhlIGtpbmcgb2YgdGhlIEFtYWxla2l0ZXMgYWxpdmUsIGFuZCB1dHRlcmx5IGRlc3Ryb3llZCBhbGwgdGhlIHBlb3BsZSB3aXRoIHRoZSBlZGdlIG9mIHRoZSBzd29yZC4KQnV0IFNhdWwgYW5kIHRoZSBwZW9wbGUgc3BhcmVkIEFnYWcsIGFuZCB0aGUgYmVzdCBvZiB0aGUgc2hlZXAsIGFuZCBvZiB0aGUgb3hlbiwgYW5kIG9mIHRoZSBmYXRsaW5ncywgYW5kIHRoZSBsYW1icywgYW5kIGFsbCB0aGF0IHdhcyBnb29kLCBhbmQgd291bGQgbm90IHV0dGVybHkgZGVzdHJveSB0aGVtOiBidXQgZXZlcnkgdGhpbmcgdGhhdCB3YXMgdmlsZSBhbmQgcmVmdXNlLCB0aGF0IHRoZXkgZGVzdHJveWVkIHV0dGVybHkuClRoZW4gY2FtZSB0aGUgd29yZCBvZiB0aGUgTE9SRCB1bnRvIFNhbXVlbCwgc2F5aW5nLApJdCByZXBlbnRldGggbWUgdGhhdCBJIGhhdmUgc2V0IHVwIFNhdWwgdG8gYmUga2luZzogZm9yIGhlIGlzIHR1cm5lZCBiYWNrIGZyb20gZm9sbG93aW5nIG1lLCBhbmQgaGF0aCBub3QgcGVyZm9ybWVkIG15IGNvbW1hbmRtZW50cy4gQW5kIGl0IGdyaWV2ZWQgU2FtdWVsOyBhbmQgaGUgY3JpZWQgdW50byB0aGUgTE9SRCBhbGwgbmlnaHQuCkFuZCB3aGVuIFNhbXVlbCByb3NlIGVhcmx5IHRvIG1lZXQgU2F1bCBpbiB0aGUgbW9ybmluZywgaXQgd2FzIHRvbGQgU2FtdWVsLCBzYXlpbmcsIFNhdWwgY2FtZSB0byBDYXJtZWwsIGFuZCwgYmVob2xkLCBoZSBzZXQgaGltIHVwIGEgcGxhY2UsIGFuZCBpcyBnb25lIGFib3V0LCBhbmQgcGFzc2VkIG9uLCBhbmQgZ29uZSBkb3duIHRvIEdpbGdhbC4KQW5kIFNhbXVlbCBjYW1lIHRvIFNhdWw6IGFuZCBTYXVsIHNhaWQgdW50byBoaW0sIEJsZXNzZWQgYmUgdGhvdSBvZiB0aGUgTE9SRDogSSBoYXZlIHBlcmZvcm1lZCB0aGUgY29tbWFuZG1lbnQgb2YgdGhlIExPUkQuCkFuZCBTYW11ZWwgc2FpZCwgV2hhdCBtZWFuZXRoIHRoZW4gdGhpcyBibGVhdGluZyBvZiB0aGUgc2hlZXAgaW4gbWluZSBlYXJzLCBhbmQgdGhlIGxvd2luZyBvZiB0aGUgb3hlbiB3aGljaCBJIGhlYXI/CkFuZCBTYXVsIHNhaWQsIFRoZXkgaGF2ZSBicm91Z2h0IHRoZW0gZnJvbSB0aGUgQW1hbGVraXRlczogZm9yIHRoZSBwZW9wbGUgc3BhcmVkIHRoZSBiZXN0IG9mIHRoZSBzaGVlcCBhbmQgb2YgdGhlIG94ZW4sIHRvIHNhY3JpZmljZSB1bnRvIHRoZSBMT1JEIHRoeSBHb2Q7IGFuZCB0aGUgcmVzdCB3ZSBoYXZlIHV0dGVybHkgZGVzdHJveWVkLgpUaGVuIFNhbXVlbCBzYWlkIHVudG8gU2F1bCwgU3RheSwgYW5kIEkgd2lsbCB0ZWxsIHRoZWUgd2hhdCB0aGUgTE9SRCBoYXRoIHNhaWQgdG8gbWUgdGhpcyBuaWdodC4gQW5kIGhlIHNhaWQgdW50byBoaW0sIFNheSBvbi4KQW5kIFNhbXVlbCBzYWlkLCBXaGVuIHRob3Ugd2FzdCBsaXR0bGUgaW4gdGhpbmUgb3duIHNpZ2h0LCB3YXN0IHRob3Ugbm90IG1hZGUgdGhlIGhlYWQgb2YgdGhlIHRyaWJlcyBvZiBJc3JhZWwsIGFuZCB0aGUgTE9SRCBhbm9pbnRlZCB0aGVlIGtpbmcgb3ZlciBJc3JhZWw/CkFuZCB0aGUgTE9SRCBzZW50IHRoZWUgb24gYSBqb3VybmV5LCBhbmQgc2FpZCwgR28gYW5kIHV0dGVybHkgZGVzdHJveSB0aGUgc2lubmVycyB0aGUgQW1hbGVraXRlcywgYW5kIGZpZ2h0IGFnYWluc3QgdGhlbSB1bnRpbCB0aGV5IGJlIGNvbnN1bWVkLgpXaGVyZWZvcmUgdGhlbiBkaWRzdCB0aG91IG5vdCBvYmV5IHRoZSB2b2ljZSBvZiB0aGUgTE9SRCwgYnV0IGRpZHN0IGZseSB1cG9uIHRoZSBzcG9pbCwgYW5kIGRpZHN0IGV2aWwgaW4gdGhlIHNpZ2h0IG9mIHRoZSBMT1JEPwpBbmQgU2F1bCBzYWlkIHVudG8gU2FtdWVsLCBZZWEsIEkgaGF2ZSBvYmV5ZWQgdGhlIHZvaWNlIG9mIHRoZSBMT1JELCBhbmQgaGF2ZSBnb25lIHRoZSB3YXkgd2hpY2ggdGhlIExPUkQgc2VudCBtZSwgYW5kIGhhdmUgYnJvdWdodCBBZ2FnIHRoZSBraW5nIG9mIEFtYWxlaywgYW5kIGhhdmUgdXR0ZXJseSBkZXN0cm95ZWQgdGhlIEFtYWxla2l0ZXMuCkJ1dCB0aGUgcGVvcGxlIHRvb2sgb2YgdGhlIHNwb2lsLCBzaGVlcCBhbmQgb3hlbiwgdGhlIGNoaWVmIG9mIHRoZSB0aGluZ3Mgd2hpY2ggc2hvdWxkIGhhdmUgYmVlbiB1dHRlcmx5IGRlc3Ryb3llZCwgdG8gc2FjcmlmaWNlIHVudG8gdGhlIExPUkQgdGh5IEdvZCBpbiBHaWxnYWwuCkFuZCBTYW11ZWwgc2FpZCwgSGF0aCB0aGUgTE9SRCBhcyBncmVhdCBkZWxpZ2h0IGluIGJ1cm50IG9mZmVyaW5ncyBhbmQgc2FjcmlmaWNlcywgYXMgaW4gb2JleWluZyB0aGUgdm9pY2Ugb2YgdGhlIExPUkQ/IEJlaG9sZCwgdG8gb2JleSBpcyBiZXR0ZXIgdGhhbiBzYWNyaWZpY2UsIGFuZCB0byBoZWFya2VuIHRoYW4gdGhlIGZhdCBvZiByYW1zLgpGb3IgcmViZWxsaW9uIGlzIGFzIHRoZSBzaW4gb2Ygd2l0Y2hjcmFmdCwgYW5kIHN0dWJib3JubmVzcyBpcyBhcyBpbmlxdWl0eSBhbmQgaWRvbGF0cnkuIEJlY2F1c2UgdGhvdSBoYXN0IHJlamVjdGVkIHRoZSB3b3JkIG9mIHRoZSBMT1JELCBoZSBoYXRoIGFsc28gcmVqZWN0ZWQgdGhlZSBmcm9tIGJlaW5nIGtpbmcuCkFuZCBTYXVsIHNhaWQgdW50byBTYW11ZWwsIEkgaGF2ZSBzaW5uZWQ6IGZvciBJIGhhdmUgdHJhbnNncmVzc2VkIHRoZSBjb21tYW5kbWVudCBvZiB0aGUgTE9SRCwgYW5kIHRoeSB3b3JkczogYmVjYXVzZSBJIGZlYXJlZCB0aGUgcGVvcGxlLCBhbmQgb2JleWVkIHRoZWlyIHZvaWNlLgpOb3cgdGhlcmVmb3JlLCBJIHByYXkgdGhlZSwgcGFyZG9uIG15IHNpbiwgYW5kIHR1cm4gYWdhaW4gd2l0aCBtZSwgdGhhdCBJIG1heSB3b3JzaGlwIHRoZSBMT1JELgpBbmQgU2FtdWVsIHNhaWQgdW50byBTYXVsLCBJIHdpbGwgbm90IHJldHVybiB3aXRoIHRoZWU6IGZvciB0aG91IGhhc3QgcmVqZWN0ZWQgdGhlIHdvcmQgb2YgdGhlIExPUkQsIGFuZCB0aGUgTE9SRCBoYXRoIHJlamVjdGVkIHRoZWUgZnJvbSBiZWluZyBraW5nIG92ZXIgSXNyYWVsLgpBbmQgYXMgU2FtdWVsIHR1cm5lZCBhYm91dCB0byBnbyBhd2F5LCBoZSBsYWlkIGhvbGQgdXBvbiB0aGUgc2tpcnQgb2YgaGlzIG1hbnRsZSwgYW5kIGl0IHJlbnQuCkFuZCBTYW11ZWwgc2FpZCB1bnRvIGhpbSwgVGhlIExPUkQgaGF0aCByZW50IHRoZSBraW5nZG9tIG9mIElzcmFlbCBmcm9tIHRoZWUgdGhpcyBkYXksIGFuZCBoYXRoIGdpdmVuIGl0IHRvIGEgbmVpZ2hib3VyIG9mIHRoaW5lLCB0aGF0IGlzIGJldHRlciB0aGFuIHRob3UuCkFuZCBhbHNvIHRoZSBTdHJlbmd0aCBvZiBJc3JhZWwgd2lsbCBub3QgbGllIG5vciByZXBlbnQ6IGZvciBoZSBpcyBub3QgYSBtYW4sIHRoYXQgaGUgc2hvdWxkIHJlcGVudC4KVGhlbiBoZSBzYWlkLCBJIGhhdmUgc2lubmVkOiB5ZXQgaG9ub3VyIG1lIG5vdywgSSBwcmF5IHRoZWUsIGJlZm9yZSB0aGUgZWxkZXJzIG9mIG15IHBlb3BsZSwgYW5kIGJlZm9yZSBJc3JhZWwsIGFuZCB0dXJuIGFnYWluIHdpdGggbWUsIHRoYXQgSSBtYXkgd29yc2hpcCB0aGUgTE9SRCB0aHkgR29kLgpTbyBTYW11ZWwgdHVybmVkIGFnYWluIGFmdGVyIFNhdWw7IGFuZCBTYXVsIHdvcnNoaXBwZWQgdGhlIExPUkQuClRoZW4gc2FpZCBTYW11ZWwsIEJyaW5nIHllIGhpdGhlciB0byBtZSBBZ2FnIHRoZSBraW5nIG9mIHRoZSBBbWFsZWtpdGVzLiBBbmQgQWdhZyBjYW1lIHVudG8gaGltIGRlbGljYXRlbHkuIEFuZCBBZ2FnIHNhaWQsIFN1cmVseSB0aGUgYml0dGVybmVzcyBvZiBkZWF0aCBpcyBwYXN0LgpBbmQgU2FtdWVsIHNhaWQsIEFzIHRoZSBzd29yZCBoYXRoIG1hZGUgd29tZW4gY2hpbGRsZXNzLCBzbyBzaGFsbCB0aHkgbW90aGVyIGJlIGNoaWxkbGVzcyBhbW9uZyB3b21lbi4gQW5kIFNhbXVlbCBoZXdlZCBBZ2FnIGluIHBpZWNlcyBiZWZvcmUgdGhlIExPUkQgaW4gR2lsZ2FsLgpUaGVuIFNhbXVlbCB3ZW50IHRvIFJhbWFoOyBhbmQgU2F1bCB3ZW50IHVwIHRvIGhpcyBob3VzZSB0byBHaWJlYWggb2YgU2F1bC4KQW5kIFNhbXVlbCBjYW1lIG5vIG1vcmUgdG8gc2VlIFNhdWwgdW50aWwgdGhlIGRheSBvZiBoaXMgZGVhdGg6IG5ldmVydGhlbGVzcyBTYW11ZWwgbW91cm5lZCBmb3IgU2F1bDogYW5kIHRoZSBMT1JEIHJlcGVudGVkIHRoYXQgaGUgaGFkIG1hZGUgU2F1bCBraW5nIG92ZXIgSXNyYWVsLgpBbmQgdGhlIExPUkQgc2FpZCB1bnRvIFNhbXVlbCwgSG93IGxvbmcgd2lsdCB0aG91IG1vdXJuIGZvciBTYXVsLCBzZWVpbmcgSSBoYXZlIHJlamVjdGVkIGhpbSBmcm9tIHJlaWduaW5nIG92ZXIgSXNyYWVsPyBmaWxsIHRoaW5lIGhvcm4gd2l0aCBvaWwsIGFuZCBnbywgSSB3aWxsIHNlbmQgdGhlZSB0byBKZXNzZSB0aGUgQmV0aGxlaGVtaXRlOiBmb3IgSSBoYXZlIHByb3ZpZGVkIG1lIGEga2luZyBhbW9uZyBoaXMgc29ucy4KQW5kIFNhbXVlbCBzYWlkLCBIb3cgY2FuIEkgZ28/IGlmIFNhdWwgaGVhciBpdCwgaGUgd2lsbCBraWxsIG1lLiBBbmQgdGhlIExPUkQgc2FpZCwgVGFrZSBhbiBoZWlmZXIgd2l0aCB0aGVlLCBhbmQgc2F5LCBJIGFtIGNvbWUgdG8gc2FjcmlmaWNlIHRvIHRoZSBMT1JELgpBbmQgY2FsbCBKZXNzZSB0byB0aGUgc2FjcmlmaWNlLCBhbmQgSSB3aWxsIHNoZXcgdGhlZSB3aGF0IHRob3Ugc2hhbHQgZG86IGFuZCB0aG91IHNoYWx0IGFub2ludCB1bnRvIG1lIGhpbSB3aG9tIEkgbmFtZSB1bnRvIHRoZWUuCkFuZCBTYW11ZWwgZGlkIHRoYXQgd2hpY2ggdGhlIExPUkQgc3Bha2UsIGFuZCBjYW1lIHRvIEJldGhsZWhlbS4gQW5kIHRoZSBlbGRlcnMgb2YgdGhlIHRvd24gdHJlbWJsZWQgYXQgaGlzIGNvbWluZywgYW5kIHNhaWQsIENvbWVzdCB0aG91IHBlYWNlYWJseT8KQW5kIGhlIHNhaWQsIFBlYWNlYWJseTogSSBhbSBjb21lIHRvIHNhY3JpZmljZSB1bnRvIHRoZSBMT1JEOiBzYW5jdGlmeSB5b3Vyc2VsdmVzLCBhbmQgY29tZSB3aXRoIG1lIHRvIHRoZSBzYWNyaWZpY2UuIEFuZCBoZSBzYW5jdGlmaWVkIEplc3NlIGFuZCBoaXMgc29ucywgYW5kIGNhbGxlZCB0aGVtIHRvIHRoZSBzYWNyaWZpY2UuCkFuZCBpdCBjYW1lIHRvIHBhc3MsIHdoZW4gdGhleSB3ZXJlIGNvbWUsIHRoYXQgaGUgbG9va2VkIG9uIEVsaWFiLCBhbmQgc2FpZCwgU3VyZWx5IHRoZSBMT1JEJ3MgYW5vaW50ZWQgaXMgYmVmb3JlIGhpbS4KQnV0IHRoZSBMT1JEIHNhaWQgdW50byBTYW11ZWwsIExvb2sgbm90IG9uIGhpcyBjb3VudGVuYW5jZSwgb3Igb24gdGhlIGhlaWdodCBvZiBoaXMgc3RhdHVyZTsgYmVjYXVzZSBJIGhhdmUgcmVmdXNlZCBoaW06IGZvciB0aGUgTE9SRCBzZWV0aCBub3QgYXMgbWFuIHNlZXRoOyBmb3IgbWFuIGxvb2tldGggb24gdGhlIG91dHdhcmQgYXBwZWFyYW5jZSwgYnV0IHRoZSBMT1JEIGxvb2tldGggb24gdGhlIGhlYXJ0LgpUaGVuIEplc3NlIGNhbGxlZCBBYmluYWRhYiwgYW5kIG1hZGUgaGltIHBhc3MgYmVmb3JlIFNhbXVlbC4gQW5kIGhlIHNhaWQsIE5laXRoZXIgaGF0aCB0aGUgTE9SRCBjaG9zZW4gdGhpcy4KVGhlbiBKZXNzZSBtYWRlIFNoYW1tYWggdG8gcGFzcyBieS4gQW5kIGhlIHNhaWQsIE5laXRoZXIgaGF0aCB0aGUgTE9SRCBjaG9zZW4gdGhpcy4KQWdhaW4sIEplc3NlIG1hZGUgc2V2ZW4gb2YgaGlzIHNvbnMgdG8gcGFzcyBiZWZvcmUgU2FtdWVsLiBBbmQgU2FtdWVsIHNhaWQgdW50byBKZXNzZSwgVGhlIExPUkQgaGF0aCBub3QgY2hvc2VuIHRoZXNlLgpBbmQgU2FtdWVsIHNhaWQgdW50byBKZXNzZSwgQXJlIGhlcmUgYWxsIHRoeSBjaGlsZHJlbj8gQW5kIGhlIHNhaWQsIFRoZXJlIHJlbWFpbmV0aCB5ZXQgdGhlIHlvdW5nZXN0LCBhbmQsIGJlaG9sZCwgaGUga2VlcGV0aCB0aGUgc2hlZXAuIEFuZCBTYW11ZWwgc2FpZCB1bnRvIEplc3NlLCBTZW5kIGFuZCBmZXRjaCBoaW06IGZvciB3ZSB3aWxsIG5vdCBzaXQgZG93biB0aWxsIGhlIGNvbWUgaGl0aGVyLgpBbmQgaGUgc2VudCwgYW5kIGJyb3VnaHQgaGltIGluLiBOb3cgaGUgd2FzIHJ1ZGR5LCBhbmQgd2l0aGFsIG9mIGEgYmVhdXRpZnVsIGNvdW50ZW5hbmNlLCBhbmQgZ29vZGx5IHRvIGxvb2sgdG8uIEFuZCB0aGUgTE9SRCBzYWlkLCBBcmlzZSwgYW5vaW50IGhpbTogZm9yIHRoaXMgaXMgaGUuClRoZW4gU2FtdWVsIHRvb2sgdGhlIGhvcm4gb2Ygb2lsLCBhbmQgYW5vaW50ZWQgaGltIGluIHRoZSBtaWRzdCBvZiBoaXMgYnJldGhyZW46IGFuZCB0aGUgU3Bpcml0IG9mIHRoZSBMT1JEIGNhbWUgdXBvbiBEYXZpZCBmcm9tIHRoYXQgZGF5IGZvcndhcmQuIFNvIFNhbXVlbCByb3NlIHVwLCBhbmQgd2VudCB0byBSYW1haC4KQnV0IHRoZSBTcGlyaXQgb2YgdGhlIExPUkQgZGVwYXJ0ZWQgZnJvbSBTYXVsLCBhbmQgYW4gZXZpbCBzcGlyaXQgZnJvbSB0aGUgTE9SRCB0cm91YmxlZCBoaW0uCkFuZCBTYXVsJ3Mgc2VydmFudHMgc2FpZCB1bnRvIGhpbSwgQmVob2xkIG5vdywgYW4gZXZpbCBzcGlyaXQgZnJvbSBHb2QgdHJvdWJsZXRoIHRoZWUuCkxldCBvdXIgbG9yZCBub3cgY29tbWFuZCB0aHkgc2VydmFudHMsIHdoaWNoIGFyZSBiZWZvcmUgdGhlZSwgdG8gc2VlayBvdXQgYSBtYW4sIHdobyBpcyBhIGN1bm5pbmcgcGxheWVyIG9uIGFuIGhhcnA6IGFuZCBpdCBzaGFsbCBjb21lIHRvIHBhc3MsIHdoZW4gdGhlIGV2aWwgc3Bpcml0IGZyb20gR29kIGlzIHVwb24gdGhlZSwgdGhhdCBoZSBzaGFsbCBwbGF5IHdpdGggaGlzIGhhbmQsIGFuZCB0aG91IHNoYWx0IGJlIHdlbGwuCkFuZCBTYXVsIHNhaWQgdW50byBoaXMgc2VydmFudHMsIFByb3ZpZGUgbWUgbm93IGEgbWFuIHRoYXQgY2FuIHBsYXkgd2VsbCwgYW5kIGJyaW5nIGhpbSB0byBtZS4KVGhlbiBhbnN3ZXJlZCBvbmUgb2YgdGhlIHNlcnZhbnRzLCBhbmQgc2FpZCwgQmVob2xkLCBJIGhhdmUgc2VlbiBhIHNvbiBvZiBKZXNzZSB0aGUgQmV0aGxlaGVtaXRlLCB0aGF0IGlzIGN1bm5pbmcgaW4gcGxheWluZywgYW5kIGEgbWlnaHR5IHZhbGlhbnQgbWFuLCBhbmQgYSBtYW4gb2Ygd2FyLCBhbmQgcHJ1ZGVudCBpbiBtYXR0ZXJzLCBhbmQgYSBjb21lbHkgcGVyc29uLCBhbmQgdGhlIExPUkQgaXMgd2l0aCBoaW0uCldoZXJlZm9yZSBTYXVsIHNlbnQgbWVzc2VuZ2VycyB1bnRvIEplc3NlLCBhbmQgc2FpZCwgU2VuZCBtZSBEYXZpZCB0aHkgc29uLCB3aGljaCBpcyB3aXRoIHRoZSBzaGVlcC4KQW5kIEplc3NlIHRvb2sgYW4gYXNzIGxhZGVuIHdpdGggYnJlYWQsIGFuZCBhIGJvdHRsZSBvZiB3aW5lLCBhbmQgYSBraWQsIGFuZCBzZW50IHRoZW0gYnkgRGF2aWQgaGlzIHNvbiB1bnRvIFNhdWwuCkFuZCBEYXZpZCBjYW1lIHRvIFNhdWwsIGFuZCBzdG9vZCBiZWZvcmUgaGltOiBhbmQgaGUgbG92ZWQgaGltIGdyZWF0bHk7IGFuZCBoZSBiZWNhbWUgaGlzIGFybW91cmJlYXJlci4KQW5kIFNhdWwgc2VudCB0byBKZXNzZSwgc2F5aW5nLCBMZXQgRGF2aWQsIEkgcHJheSB0aGVlLCBzdGFuZCBiZWZvcmUgbWU7IGZvciBoZSBoYXRoIGZvdW5kIGZhdm91ciBpbiBteSBzaWdodC4KQW5kIGl0IGNhbWUgdG8gcGFzcywgd2hlbiB0aGUgZXZpbCBzcGlyaXQgZnJvbSBHb2Qgd2FzIHVwb24gU2F1bCwgdGhhdCBEYXZpZCB0b29rIGFuIGhhcnAsIGFuZCBwbGF5ZWQgd2l0aCBoaXMgaGFuZDogc28gU2F1bCB3YXMgcmVmcmVzaGVkLCBhbmQgd2FzIHdlbGwsIGFuZCB0aGUgZXZpbCBzcGlyaXQgZGVwYXJ0ZWQgZnJvbSBoaW0uCk5vdyB0aGUgUGhpbGlzdGluZXMgZ2F0aGVyZWQgdG9nZXRoZXIgdGhlaXIgYXJtaWVzIHRvIGJhdHRsZSwgYW5kIHdlcmUgZ2F0aGVyZWQgdG9nZXRoZXIgYXQgU2hvY2hvaCwgd2hpY2ggYmVsb25nZXRoIHRvIEp1ZGFoLCBhbmQgcGl0Y2hlZCBiZXR3ZWVuIFNob2Nob2ggYW5kIEF6ZWthaCwgaW4gRXBoZXNkYW1taW0uCkFuZCBTYXVsIGFuZCB0aGUgbWVuIG9mIElzcmFlbCB3ZXJlIGdhdGhlcmVkIHRvZ2V0aGVyLCBhbmQgcGl0Y2hlZCBieSB0aGUgdmFsbGV5IG9mIEVsYWgsIGFuZCBzZXQgdGhlIGJhdHRsZSBpbiBhcnJheSBhZ2FpbnN0IHRoZSBQaGlsaXN0aW5lcy4KQW5kIHRoZSBQaGlsaXN0aW5lcyBzdG9vZCBvbiBhIG1vdW50YWluIG9uIHRoZSBvbmUgc2lkZSwgYW5kIElzcmFlbCBzdG9vZCBvbiBhIG1vdW50YWluIG9uIHRoZSBvdGhlciBzaWRlOiBhbmQgdGhlcmUgd2FzIGEgdmFsbGV5IGJldHdlZW4gdGhlbS4KQW5kIHRoZXJlIHdlbnQgb3V0IGEgY2hhbXBpb24gb3V0IG9mIHRoZSBjYW1wIG9mIHRoZSBQaGlsaXN0aW5lcywgbmFtZWQgR29saWF0aCwgb2YgR2F0aCwgd2hvc2UgaGVpZ2h0IHdhcyBzaXggY3ViaXRzIGFuZCBhIHNwYW4uCkFuZCBoZSBoYWQgYW4gaGVsbWV0IG9mIGJyYXNzIHVwb24gaGlzIGhlYWQsIGFuZCBoZSB3YXMgYXJtZWQgd2l0aCBhIGNvYXQgb2YgbWFpbDsgYW5kIHRoZSB3ZWlnaHQgb2YgdGhlIGNvYXQgd2FzIGZpdmUgdGhvdXNhbmQgc2hla2VscyBvZiBicmFzcy4KQW5kIGhlIGhhZCBncmVhdmVzIG9mIGJyYXNzIHVwb24gaGlzIGxlZ3MsIGFuZCBhIHRhcmdldCBvZiBicmFzcyBiZXR3ZWVuIGhpcyBzaG91bGRlcnMuCkFuZCB0aGUgc3RhZmYgb2YgaGlzIHNwZWFyIHdhcyBsaWtlIGEgd2VhdmVyJ3MgYmVhbTsgYW5kIGhpcyBzcGVhcidzIGhlYWQgd2VpZ2hlZCBzaXggaHVuZHJlZCBzaGVrZWxzIG9mIGlyb246IGFuZCBvbmUgYmVhcmluZyBhIHNoaWVsZCB3ZW50IGJlZm9yZSBoaW0uCkFuZCBoZSBzdG9vZCBhbmQgY3JpZWQgdW50byB0aGUgYXJtaWVzIG9mIElzcmFlbCwgYW5kIHNhaWQgdW50byB0aGVtLCBXaHkgYXJlIHllIGNvbWUgb3V0IHRvIHNldCB5b3VyIGJhdHRsZSBpbiBhcnJheT8gYW0gbm90IEkgYSBQaGlsaXN0aW5lLCBhbmQgeWUgc2VydmFudHMgdG8gU2F1bD8gY2hvb3NlIHlvdSBhIG1hbiBmb3IgeW91LCBhbmQgbGV0IGhpbSBjb21lIGRvd24gdG8gbWUuCklmIGhlIGJlIGFibGUgdG8gZmlnaHQgd2l0aCBtZSwgYW5kIHRvIGtpbGwgbWUsIHRoZW4gd2lsbCB3ZSBiZSB5b3VyIHNlcnZhbnRzOiBidXQgaWYgSSBwcmV2YWlsIGFnYWluc3QgaGltLCBhbmQga2lsbCBoaW0sIHRoZW4gc2hhbGwgeWUgYmUgb3VyIHNlcnZhbnRzLCBhbmQgc2VydmUgdXMuCkFuZCB0aGUgUGhpbGlzdGluZSBzYWlkLCBJIGRlZnkgdGhlIGFybWllcyBvZiBJc3JhZWwgdGhpcyBkYXk7IGdpdmUgbWUgYSBtYW4sIHRoYXQgd2UgbWF5IGZpZ2h0IHRvZ2V0aGVyLgpXaGVuIFNhdWwgYW5kIGFsbCBJc3JhZWwgaGVhcmQgdGhvc2Ugd29yZHMgb2YgdGhlIFBoaWxpc3RpbmUsIHRoZXkgd2VyZSBkaXNtYXllZCwgYW5kIGdyZWF0bHkgYWZyYWlkLgpOb3cgRGF2aWQgd2FzIHRoZSBzb24gb2YgdGhhdCBFcGhyYXRoaXRlIG9mIEJldGhsZWhlbWp1ZGFoLCB3aG9zZSBuYW1lIHdhcyBKZXNzZTsgYW5kIGhlIGhhZCBlaWdodCBzb25zOiBhbmQgdGhlIG1hbiB3ZW50IGFtb25nIG1lbiBmb3IgYW4gb2xkIG1hbiBpbiB0aGUgZGF5cyBvZiBTYXVsLgpBbmQgdGhlIHRocmVlIGVsZGVzdCBzb25zIG9mIEplc3NlIHdlbnQgYW5kIGZvbGxvd2VkIFNhdWwgdG8gdGhlIGJhdHRsZTogYW5kIHRoZSBuYW1lcyBvZiBoaXMgdGhyZWUgc29ucyB0aGF0IHdlbnQgdG8gdGhlIGJhdHRsZSB3ZXJlIEVsaWFiIHRoZSBmaXJzdGJvcm4sIGFuZCBuZXh0IHVudG8gaGltIEFiaW5hZGFiLCBhbmQgdGhlIHRoaXJkIFNoYW1tYWguCkFuZCBEYXZpZCB3YXMgdGhlIHlvdW5nZXN0OiBhbmQgdGhlIHRocmVlIGVsZGVzdCBmb2xsb3dlZCBTYXVsLgpCdXQgRGF2aWQgd2VudCBhbmQgcmV0dXJuZWQgZnJvbSBTYXVsIHRvIGZlZWQgaGlzIGZhdGhlcidzIHNoZWVwIGF0IEJldGhsZWhlbS4KQW5kIHRoZSBQaGlsaXN0aW5lIGRyZXcgbmVhciBtb3JuaW5nIGFuZCBldmVuaW5nLCBhbmQgcHJlc2VudGVkIGhpbXNlbGYgZm9ydHkgZGF5cy4KQW5kIEplc3NlIHNhaWQgdW50byBEYXZpZCBoaXMgc29uLCBUYWtlIG5vdyBmb3IgdGh5IGJyZXRocmVuIGFuIGVwaGFoIG9mIHRoaXMgcGFyY2hlZCBjb3JuLCBhbmQgdGhlc2UgdGVuIGxvYXZlcywgYW5kIHJ1biB0byB0aGUgY2FtcCBvZiB0aHkgYnJldGhyZW47CkFuZCBjYXJyeSB0aGVzZSB0ZW4gY2hlZXNlcyB1bnRvIHRoZSBjYXB0YWluIG9mIHRoZWlyIHRob3VzYW5kLCBhbmQgbG9vayBob3cgdGh5IGJyZXRocmVuIGZhcmUsIGFuZCB0YWtlIHRoZWlyIHBsZWRnZS4KTm93IFNhdWwsIGFuZCB0aGV5LCBhbmQgYWxsIHRoZSBtZW4gb2YgSXNyYWVsLCB3ZXJlIGluIHRoZSB2YWxsZXkgb2YgRWxhaCwgZmlnaHRpbmcgd2l0aCB0aGUgUGhpbGlzdGluZXMuCkFuZCBEYXZpZCByb3NlIHVwIGVhcmx5IGluIHRoZSBtb3JuaW5nLCBhbmQgbGVmdCB0aGUgc2hlZXAgd2l0aCBhIGtlZXBlciwgYW5kIHRvb2ssIGFuZCB3ZW50LCBhcyBKZXNzZSBoYWQgY29tbWFuZGVkIGhpbTsgYW5kIGhlIGNhbWUgdG8gdGhlIHRyZW5jaCwgYXMgdGhlIGhvc3Qgd2FzIGdvaW5nIGZvcnRoIHRvIHRoZSBmaWdodCwgYW5kIHNob3V0ZWQgZm9yIHRoZSBiYXR0bGUuCkZvciBJc3JhZWwgYW5kIHRoZSBQaGlsaXN0aW5lcyBoYWQgcHV0IHRoZSBiYXR0bGUgaW4gYXJyYXksIGFybXkgYWdhaW5zdCBhcm15LgpBbmQgRGF2aWQgbGVmdCBoaXMgY2FycmlhZ2UgaW4gdGhlIGhhbmQgb2YgdGhlIGtlZXBlciBvZiB0aGUgY2FycmlhZ2UsIGFuZCByYW4gaW50byB0aGUgYXJteSwgYW5kIGNhbWUgYW5kIHNhbHV0ZWQgaGlzIGJyZXRocmVuLgpBbmQgYXMgaGUgdGFsa2VkIHdpdGggdGhlbSwgYmVob2xkLCB0aGVyZSBjYW1lIHVwIHRoZSBjaGFtcGlvbiwgdGhlIFBoaWxpc3RpbmUgb2YgR2F0aCwgR29saWF0aCBieSBuYW1lLCBvdXQgb2YgdGhlIGFybWllcyBvZiB0aGUgUGhpbGlzdGluZXMsIGFuZCBzcGFrZSBhY2NvcmRpbmcgdG8gdGhlIHNhbWUgd29yZHM6IGFuZCBEYXZpZCBoZWFyZCB0aGVtLgpBbmQgYWxsIHRoZSBtZW4gb2YgSXNyYWVsLCB3aGVuIHRoZXkgc2F3IHRoZSBtYW4sIGZsZWQgZnJvbSBoaW0sIGFuZCB3ZXJlIHNvcmUgYWZyYWlkLgpBbmQgdGhlIG1lbiBvZiBJc3JhZWwgc2FpZCwgSGF2ZSB5ZSBzZWVuIHRoaXMgbWFuIHRoYXQgaXMgY29tZSB1cD8gc3VyZWx5IHRvIGRlZnkgSXNyYWVsIGlzIGhlIGNvbWUgdXA6IGFuZCBpdCBzaGFsbCBiZSwgdGhhdCB0aGUgbWFuIHdobyBraWxsZXRoIGhpbSwgdGhlIGtpbmcgd2lsbCBlbnJpY2ggaGltIHdpdGggZ3JlYXQgcmljaGVzLCBhbmQgd2lsbCBnaXZlIGhpbSBoaXMgZGF1Z2h0ZXIsIGFuZCBtYWtlIGhpcyBmYXRoZXIncyBob3VzZSBmcmVlIGluIElzcmFlbC4KQW5kIERhdmlkIHNwYWtlIHRvIHRoZSBtZW4gdGhhdCBzdG9vZCBieSBoaW0sIHNheWluZywgV2hhdCBzaGFsbCBiZSBkb25lIHRvIHRoZSBtYW4gdGhhdCBraWxsZXRoIHRoaXMgUGhpbGlzdGluZSwgYW5kIHRha2V0aCBhd2F5IHRoZSByZXByb2FjaCBmcm9tIElzcmFlbD8gZm9yIHdobyBpcyB0aGlzIHVuY2lyY3VtY2lzZWQgUGhpbGlzdGluZSwgdGhhdCBoZSBzaG91bGQgZGVmeSB0aGUgYXJtaWVzIG9mIHRoZSBsaXZpbmcgR29kPwpBbmQgdGhlIHBlb3BsZSBhbnN3ZXJlZCBoaW0gYWZ0ZXIgdGhpcyBtYW5uZXIsIHNheWluZywgU28gc2hhbGwgaXQgYmUgZG9uZSB0byB0aGUgbWFuIHRoYXQga2lsbGV0aCBoaW0uCkFuZCBFbGlhYiBoaXMgZWxkZXN0IGJyb3RoZXIgaGVhcmQgd2hlbiBoZSBzcGFrZSB1bnRvIHRoZSBtZW47IGFuZCBFbGlhYidzIGFuZ2VyIHdhcyBraW5kbGVkIGFnYWluc3QgRGF2aWQsIGFuZCBoZSBzYWlkLCBXaHkgY2FtZXN0IHRob3UgZG93biBoaXRoZXI/IGFuZCB3aXRoIHdob20gaGFzdCB0aG91IGxlZnQgdGhvc2UgZmV3IHNoZWVwIGluIHRoZSB3aWxkZXJuZXNzPyBJIGtub3cgdGh5IHByaWRlLCBhbmQgdGhlIG5hdWdodGluZXNzIG9mIHRoaW5lIGhlYXJ0OyBmb3IgdGhvdSBhcnQgY29tZSBkb3duIHRoYXQgdGhvdSBtaWdodGVzdCBzZWUgdGhlIGJhdHRsZS4KQW5kIERhdmlkIHNhaWQsIFdoYXQgaGF2ZSBJIG5vdyBkb25lPyBJcyB0aGVyZSBub3QgYSBjYXVzZT8KQW5kIGhlIHR1cm5lZCBmcm9tIGhpbSB0b3dhcmQgYW5vdGhlciwgYW5kIHNwYWtlIGFmdGVyIHRoZSBzYW1lIG1hbm5lcjogYW5kIHRoZSBwZW9wbGUgYW5zd2VyZWQgaGltIGFnYWluIGFmdGVyIHRoZSBmb3JtZXIgbWFubmVyLgpBbmQgd2hlbiB0aGUgd29yZHMgd2VyZSBoZWFyZCB3aGljaCBEYXZpZCBzcGFrZSwgdGhleSByZWhlYXJzZWQgdGhlbSBiZWZvcmUgU2F1bDogYW5kIGhlIHNlbnQgZm9yIGhpbS4KQW5kIERhdmlkIHNhaWQgdG8gU2F1bCwgTGV0IG5vIG1hbidzIGhlYXJ0IGZhaWwgYmVjYXVzZSBvZiBoaW07IHRoeSBzZXJ2YW50IHdpbGwgZ28gYW5kIGZpZ2h0IHdpdGggdGhpcyBQaGlsaXN0aW5lLgpBbmQgU2F1bCBzYWlkIHRvIERhdmlkLCBUaG91IGFydCBub3QgYWJsZSB0byBnbyBhZ2FpbnN0IHRoaXMgUGhpbGlzdGluZSB0byBmaWdodCB3aXRoIGhpbTogZm9yIHRob3UgYXJ0IGJ1dCBhIHlvdXRoLCBhbmQgaGUgYSBtYW4gb2Ygd2FyIGZyb20gaGlzIHlvdXRoLgpBbmQgRGF2aWQgc2FpZCB1bnRvIFNhdWwsIFRoeSBzZXJ2YW50IGtlcHQgaGlzIGZhdGhlcidzIHNoZWVwLCBhbmQgdGhlcmUgY2FtZSBhIGxpb24sIGFuZCBhIGJlYXIsIGFuZCB0b29rIGEgbGFtYiBvdXQgb2YgdGhlIGZsb2NrOgpBbmQgSSB3ZW50IG91dCBhZnRlciBoaW0sIGFuZCBzbW90ZSBoaW0sIGFuZCBkZWxpdmVyZWQgaXQgb3V0IG9mIGhpcyBtb3V0aDogYW5kIHdoZW4gaGUgYXJvc2UgYWdhaW5zdCBtZSwgSSBjYXVnaHQgaGltIGJ5IGhpcyBiZWFyZCwgYW5kIHNtb3RlIGhpbSwgYW5kIHNsZXcgaGltLgpUaHkgc2VydmFudCBzbGV3IGJvdGggdGhlIGxpb24gYW5kIHRoZSBiZWFyOiBhbmQgdGhpcyB1bmNpcmN1bWNpc2VkIFBoaWxpc3RpbmUgc2hhbGwgYmUgYXMgb25lIG9mIHRoZW0sIHNlZWluZyBoZSBoYXRoIGRlZmllZCB0aGUgYXJtaWVzIG9mIHRoZSBsaXZpbmcgR29kLgpEYXZpZCBzYWlkIG1vcmVvdmVyLCBUaGUgTE9SRCB0aGF0IGRlbGl2ZXJlZCBtZSBvdXQgb2YgdGhlIHBhdyBvZiB0aGUgbGlvbiwgYW5kIG91dCBvZiB0aGUgcGF3IG9mIHRoZSBiZWFyLCBoZSB3aWxsIGRlbGl2ZXIgbWUgb3V0IG9mIHRoZSBoYW5kIG9mIHRoaXMgUGhpbGlzdGluZS4gQW5kIFNhdWwgc2FpZCB1bnRvIERhdmlkLCBHbywgYW5kIHRoZSBMT1JEIGJlIHdpdGggdGhlZS4KQW5kIFNhdWwgYXJtZWQgRGF2aWQgd2l0aCBoaXMgYXJtb3VyLCBhbmQgaGUgcHV0IGFuIGhlbG1ldCBvZiBicmFzcyB1cG9uIGhpcyBoZWFkOyBhbHNvIGhlIGFybWVkIGhpbSB3aXRoIGEgY29hdCBvZiBtYWlsLgpBbmQgRGF2aWQgZ2lyZGVkIGhpcyBzd29yZCB1cG9uIGhpcyBhcm1vdXIsIGFuZCBoZSBhc3NheWVkIHRvIGdvOyBmb3IgaGUgaGFkIG5vdCBwcm92ZWQgaXQuIEFuZCBEYXZpZCBzYWlkIHVudG8gU2F1bCwgSSBjYW5ub3QgZ28gd2l0aCB0aGVzZTsgZm9yIEkgaGF2ZSBub3QgcHJvdmVkIHRoZW0uIEFuZCBEYXZpZCBwdXQgdGhlbSBvZmYgaGltLgpBbmQgaGUgdG9vayBoaXMgc3RhZmYgaW4gaGlzIGhhbmQsIGFuZCBjaG9zZSBoaW0gZml2ZSBzbW9vdGggc3RvbmVzIG91dCBvZiB0aGUgYnJvb2ssIGFuZCBwdXQgdGhlbSBpbiBhIHNoZXBoZXJkJ3MgYmFnIHdoaWNoIGhlIGhhZCwgZXZlbiBpbiBhIHNjcmlwOyBhbmQgaGlzIHNsaW5nIHdhcyBpbiBoaXMgaGFuZDogYW5kIGhlIGRyZXcgbmVhciB0byB0aGUgUGhpbGlzdGluZS4KQW5kIHRoZSBQaGlsaXN0aW5lIGNhbWUgb24gYW5kIGRyZXcgbmVhciB1bnRvIERhdmlkOyBhbmQgdGhlIG1hbiB0aGF0IGJhcmUgdGhlIHNoaWVsZCB3ZW50IGJlZm9yZSBoaW0uCkFuZCB3aGVuIHRoZSBQaGlsaXN0aW5lIGxvb2tlZCBhYm91dCwgYW5kIHNhdyBEYXZpZCwgaGUgZGlzZGFpbmVkIGhpbTogZm9yIGhlIHdhcyBidXQgYSB5b3V0aCwgYW5kIHJ1ZGR5LCBhbmQgb2YgYSBmYWlyIGNvdW50ZW5hbmNlLgpBbmQgdGhlIFBoaWxpc3RpbmUgc2FpZCB1bnRvIERhdmlkLCBBbSBJIGEgZG9nLCB0aGF0IHRob3UgY29tZXN0IHRvIG1lIHdpdGggc3RhdmVzPyBBbmQgdGhlIFBoaWxpc3RpbmUgY3Vyc2VkIERhdmlkIGJ5IGhpcyBnb2RzLgpBbmQgdGhlIFBoaWxpc3RpbmUgc2FpZCB0byBEYXZpZCwgQ29tZSB0byBtZSwgYW5kIEkgd2lsbCBnaXZlIHRoeSBmbGVzaCB1bnRvIHRoZSBmb3dscyBvZiB0aGUgYWlyLCBhbmQgdG8gdGhlIGJlYXN0cyBvZiB0aGUgZmllbGQuClRoZW4gc2FpZCBEYXZpZCB0byB0aGUgUGhpbGlzdGluZSwgVGhvdSBjb21lc3QgdG8gbWUgd2l0aCBhIHN3b3JkLCBhbmQgd2l0aCBhIHNwZWFyLCBhbmQgd2l0aCBhIHNoaWVsZDogYnV0IEkgY29tZSB0byB0aGVlIGluIHRoZSBuYW1lIG9mIHRoZSBMT1JEIG9mIGhvc3RzLCB0aGUgR29kIG9mIHRoZSBhcm1pZXMgb2YgSXNyYWVsLCB3aG9tIHRob3UgaGFzdCBkZWZpZWQuClRoaXMgZGF5IHdpbGwgdGhlIExPUkQgZGVsaXZlciB0aGVlIGludG8gbWluZSBoYW5kOyBhbmQgSSB3aWxsIHNtaXRlIHRoZWUsIGFuZCB0YWtlIHRoaW5lIGhlYWQgZnJvbSB0aGVlOyBhbmQgSSB3aWxsIGdpdmUgdGhlIGNhcmNhc2VzIG9mIHRoZSBob3N0IG9mIHRoZSBQaGlsaXN0aW5lcyB0aGlzIGRheSB1bnRvIHRoZSBmb3dscyBvZiB0aGUgYWlyLCBhbmQgdG8gdGhlIHdpbGQgYmVhc3RzIG9mIHRoZSBlYXJ0aDsgdGhhdCBhbGwgdGhlIGVhcnRoIG1heSBrbm93IHRoYXQgdGhlcmUgaXMgYSBHb2QgaW4gSXNyYWVsLgpBbmQgYWxsIHRoaXMgYXNzZW1ibHkgc2hhbGwga25vdyB0aGF0IHRoZSBMT1JEIHNhdmV0aCBub3Qgd2l0aCBzd29yZCBhbmQgc3BlYXI6IGZvciB0aGUgYmF0dGxlIGlzIHRoZSBMT1JEJ3MsIGFuZCBoZSB3aWxsIGdpdmUgeW91IGludG8gb3VyIGhhbmRzLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIHRoZSBQaGlsaXN0aW5lIGFyb3NlLCBhbmQgY2FtZSwgYW5kIGRyZXcgbmlnaCB0byBtZWV0IERhdmlkLCB0aGF0IERhdmlkIGhhc3RlbmVkLCBhbmQgcmFuIHRvd2FyZCB0aGUgYXJteSB0byBtZWV0IHRoZSBQaGlsaXN0aW5lLgpBbmQgRGF2aWQgcHV0IGhpcyBoYW5kIGluIGhpcyBiYWcsIGFuZCB0b29rIHRoZW5jZSBhIHN0b25lLCBhbmQgc2xhbmcgaXQsIGFuZCBzbW90ZSB0aGUgUGhpbGlzdGluZSBpbiBoaXMgZm9yZWhlYWQsIHRoYXQgdGhlIHN0b25lIHN1bmsgaW50byBoaXMgZm9yZWhlYWQ7IGFuZCBoZSBmZWxsIHVwb24gaGlzIGZhY2UgdG8gdGhlIGVhcnRoLgpTbyBEYXZpZCBwcmV2YWlsZWQgb3ZlciB0aGUgUGhpbGlzdGluZSB3aXRoIGEgc2xpbmcgYW5kIHdpdGggYSBzdG9uZSwgYW5kIHNtb3RlIHRoZSBQaGlsaXN0aW5lLCBhbmQgc2xldyBoaW07IGJ1dCB0aGVyZSB3YXMgbm8gc3dvcmQgaW4gdGhlIGhhbmQgb2YgRGF2aWQuClRoZXJlZm9yZSBEYXZpZCByYW4sIGFuZCBzdG9vZCB1cG9uIHRoZSBQaGlsaXN0aW5lLCBhbmQgdG9vayBoaXMgc3dvcmQsIGFuZCBkcmV3IGl0IG91dCBvZiB0aGUgc2hlYXRoIHRoZXJlb2YsIGFuZCBzbGV3IGhpbSwgYW5kIGN1dCBvZmYgaGlzIGhlYWQgdGhlcmV3aXRoLiBBbmQgd2hlbiB0aGUgUGhpbGlzdGluZXMgc2F3IHRoZWlyIGNoYW1waW9uIHdhcyBkZWFkLCB0aGV5IGZsZWQuCkFuZCB0aGUgbWVuIG9mIElzcmFlbCBhbmQgb2YgSnVkYWggYXJvc2UsIGFuZCBzaG91dGVkLCBhbmQgcHVyc3VlZCB0aGUgUGhpbGlzdGluZXMsIHVudGlsIHRob3UgY29tZSB0byB0aGUgdmFsbGV5LCBhbmQgdG8gdGhlIGdhdGVzIG9mIEVrcm9uLiBBbmQgdGhlIHdvdW5kZWQgb2YgdGhlIFBoaWxpc3RpbmVzIGZlbGwgZG93biBieSB0aGUgd2F5IHRvIFNoYWFyYWltLCBldmVuIHVudG8gR2F0aCwgYW5kIHVudG8gRWtyb24uCkFuZCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIHJldHVybmVkIGZyb20gY2hhc2luZyBhZnRlciB0aGUgUGhpbGlzdGluZXMsIGFuZCB0aGV5IHNwb2lsZWQgdGhlaXIgdGVudHMuCkFuZCBEYXZpZCB0b29rIHRoZSBoZWFkIG9mIHRoZSBQaGlsaXN0aW5lLCBhbmQgYnJvdWdodCBpdCB0byBKZXJ1c2FsZW07IGJ1dCBoZSBwdXQgaGlzIGFybW91ciBpbiBoaXMgdGVudC4KQW5kIHdoZW4gU2F1bCBzYXcgRGF2aWQgZ28gZm9ydGggYWdhaW5zdCB0aGUgUGhpbGlzdGluZSwgaGUgc2FpZCB1bnRvIEFibmVyLCB0aGUgY2FwdGFpbiBvZiB0aGUgaG9zdCwgQWJuZXIsIHdob3NlIHNvbiBpcyB0aGlzIHlvdXRoPyBBbmQgQWJuZXIgc2FpZCwgQXMgdGh5IHNvdWwgbGl2ZXRoLCBPIGtpbmcsIEkgY2Fubm90IHRlbGwuCkFuZCB0aGUga2luZyBzYWlkLCBFbnF1aXJlIHRob3Ugd2hvc2Ugc29uIHRoZSBzdHJpcGxpbmcgaXMuCkFuZCBhcyBEYXZpZCByZXR1cm5lZCBmcm9tIHRoZSBzbGF1Z2h0ZXIgb2YgdGhlIFBoaWxpc3RpbmUsIEFibmVyIHRvb2sgaGltLCBhbmQgYnJvdWdodCBoaW0gYmVmb3JlIFNhdWwgd2l0aCB0aGUgaGVhZCBvZiB0aGUgUGhpbGlzdGluZSBpbiBoaXMgaGFuZC4KQW5kIFNhdWwgc2FpZCB0byBoaW0sIFdob3NlIHNvbiBhcnQgdGhvdSwgdGhvdSB5b3VuZyBtYW4/IEFuZCBEYXZpZCBhbnN3ZXJlZCwgSSBhbSB0aGUgc29uIG9mIHRoeSBzZXJ2YW50IEplc3NlIHRoZSBCZXRobGVoZW1pdGUuCkFuZCBpdCBjYW1lIHRvIHBhc3MsIHdoZW4gaGUgaGFkIG1hZGUgYW4gZW5kIG9mIHNwZWFraW5nIHVudG8gU2F1bCwgdGhhdCB0aGUgc291bCBvZiBKb25hdGhhbiB3YXMga25pdCB3aXRoIHRoZSBzb3VsIG9mIERhdmlkLCBhbmQgSm9uYXRoYW4gbG92ZWQgaGltIGFzIGhpcyBvd24gc291bC4KQW5kIFNhdWwgdG9vayBoaW0gdGhhdCBkYXksIGFuZCB3b3VsZCBsZXQgaGltIGdvIG5vIG1vcmUgaG9tZSB0byBoaXMgZmF0aGVyJ3MgaG91c2UuClRoZW4gSm9uYXRoYW4gYW5kIERhdmlkIG1hZGUgYSBjb3ZlbmFudCwgYmVjYXVzZSBoZSBsb3ZlZCBoaW0gYXMgaGlzIG93biBzb3VsLgpBbmQgSm9uYXRoYW4gc3RyaXBwZWQgaGltc2VsZiBvZiB0aGUgcm9iZSB0aGF0IHdhcyB1cG9uIGhpbSwgYW5kIGdhdmUgaXQgdG8gRGF2aWQsIGFuZCBoaXMgZ2FybWVudHMsIGV2ZW4gdG8gaGlzIHN3b3JkLCBhbmQgdG8gaGlzIGJvdywgYW5kIHRvIGhpcyBnaXJkbGUuCkFuZCBEYXZpZCB3ZW50IG91dCB3aGl0aGVyc29ldmVyIFNhdWwgc2VudCBoaW0sIGFuZCBiZWhhdmVkIGhpbXNlbGYgd2lzZWx5OiBhbmQgU2F1bCBzZXQgaGltIG92ZXIgdGhlIG1lbiBvZiB3YXIsIGFuZCBoZSB3YXMgYWNjZXB0ZWQgaW4gdGhlIHNpZ2h0IG9mIGFsbCB0aGUgcGVvcGxlLCBhbmQgYWxzbyBpbiB0aGUgc2lnaHQgb2YgU2F1bCdzIHNlcnZhbnRzLgpBbmQgaXQgY2FtZSB0byBwYXNzIGFzIHRoZXkgY2FtZSwgd2hlbiBEYXZpZCB3YXMgcmV0dXJuZWQgZnJvbSB0aGUgc2xhdWdodGVyIG9mIHRoZSBQaGlsaXN0aW5lLCB0aGF0IHRoZSB3b21lbiBjYW1lIG91dCBvZiBhbGwgY2l0aWVzIG9mIElzcmFlbCwgc2luZ2luZyBhbmQgZGFuY2luZywgdG8gbWVldCBraW5nIFNhdWwsIHdpdGggdGFicmV0cywgd2l0aCBqb3ksIGFuZCB3aXRoIGluc3RydW1lbnRzIG9mIG11c2ljay4KQW5kIHRoZSB3b21lbiBhbnN3ZXJlZCBvbmUgYW5vdGhlciBhcyB0aGV5IHBsYXllZCwgYW5kIHNhaWQsIFNhdWwgaGF0aCBzbGFpbiBoaXMgdGhvdXNhbmRzLCBhbmQgRGF2aWQgaGlzIHRlbiB0aG91c2FuZHMuCkFuZCBTYXVsIHdhcyB2ZXJ5IHdyb3RoLCBhbmQgdGhlIHNheWluZyBkaXNwbGVhc2VkIGhpbTsgYW5kIGhlIHNhaWQsIFRoZXkgaGF2ZSBhc2NyaWJlZCB1bnRvIERhdmlkIHRlbiB0aG91c2FuZHMsIGFuZCB0byBtZSB0aGV5IGhhdmUgYXNjcmliZWQgYnV0IHRob3VzYW5kczogYW5kIHdoYXQgY2FuIGhlIGhhdmUgbW9yZSBidXQgdGhlIGtpbmdkb20/CkFuZCBTYXVsIGV5ZWQgRGF2aWQgZnJvbSB0aGF0IGRheSBhbmQgZm9yd2FyZC4KQW5kIGl0IGNhbWUgdG8gcGFzcyBvbiB0aGUgbW9ycm93LCB0aGF0IHRoZSBldmlsIHNwaXJpdCBmcm9tIEdvZCBjYW1lIHVwb24gU2F1bCwgYW5kIGhlIHByb3BoZXNpZWQgaW4gdGhlIG1pZHN0IG9mIHRoZSBob3VzZTogYW5kIERhdmlkIHBsYXllZCB3aXRoIGhpcyBoYW5kLCBhcyBhdCBvdGhlciB0aW1lczogYW5kIHRoZXJlIHdhcyBhIGphdmVsaW4gaW4gU2F1bCdzIGhhbmQuCkFuZCBTYXVsIGNhc3QgdGhlIGphdmVsaW47IGZvciBoZSBzYWlkLCBJIHdpbGwgc21pdGUgRGF2aWQgZXZlbiB0byB0aGUgd2FsbCB3aXRoIGl0LiBBbmQgRGF2aWQgYXZvaWRlZCBvdXQgb2YgaGlzIHByZXNlbmNlIHR3aWNlLgpBbmQgU2F1bCB3YXMgYWZyYWlkIG9mIERhdmlkLCBiZWNhdXNlIHRoZSBMT1JEIHdhcyB3aXRoIGhpbSwgYW5kIHdhcyBkZXBhcnRlZCBmcm9tIFNhdWwuClRoZXJlZm9yZSBTYXVsIHJlbW92ZWQgaGltIGZyb20gaGltLCBhbmQgbWFkZSBoaW0gaGlzIGNhcHRhaW4gb3ZlciBhIHRob3VzYW5kOyBhbmQgaGUgd2VudCBvdXQgYW5kIGNhbWUgaW4gYmVmb3JlIHRoZSBwZW9wbGUuCkFuZCBEYXZpZCBiZWhhdmVkIGhpbXNlbGYgd2lzZWx5IGluIGFsbCBoaXMgd2F5czsgYW5kIHRoZSBMT1JEIHdhcyB3aXRoIGhpbS4KV2hlcmVmb3JlIHdoZW4gU2F1bCBzYXcgdGhhdCBoZSBiZWhhdmVkIGhpbXNlbGYgdmVyeSB3aXNlbHksIGhlIHdhcyBhZnJhaWQgb2YgaGltLgpCdXQgYWxsIElzcmFlbCBhbmQgSnVkYWggbG92ZWQgRGF2aWQsIGJlY2F1c2UgaGUgd2VudCBvdXQgYW5kIGNhbWUgaW4gYmVmb3JlIHRoZW0uCkFuZCBTYXVsIHNhaWQgdG8gRGF2aWQsIEJlaG9sZCBteSBlbGRlciBkYXVnaHRlciBNZXJhYiwgaGVyIHdpbGwgSSBnaXZlIHRoZWUgdG8gd2lmZTogb25seSBiZSB0aG91IHZhbGlhbnQgZm9yIG1lLCBhbmQgZmlnaHQgdGhlIExPUkQncyBiYXR0bGVzLiBGb3IgU2F1bCBzYWlkLCBMZXQgbm90IG1pbmUgaGFuZCBiZSB1cG9uIGhpbSwgYnV0IGxldCB0aGUgaGFuZCBvZiB0aGUgUGhpbGlzdGluZXMgYmUgdXBvbiBoaW0uCkFuZCBEYXZpZCBzYWlkIHVudG8gU2F1bCwgV2hvIGFtIEk/IGFuZCB3aGF0IGlzIG15IGxpZmUsIG9yIG15IGZhdGhlcidzIGZhbWlseSBpbiBJc3JhZWwsIHRoYXQgSSBzaG91bGQgYmUgc29uIGluIGxhdyB0byB0aGUga2luZz8KQnV0IGl0IGNhbWUgdG8gcGFzcyBhdCB0aGUgdGltZSB3aGVuIE1lcmFiIFNhdWwncyBkYXVnaHRlciBzaG91bGQgaGF2ZSBiZWVuIGdpdmVuIHRvIERhdmlkLCB0aGF0IHNoZSB3YXMgZ2l2ZW4gdW50byBBZHJpZWwgdGhlIE1laG9sYXRoaXRlIHRvIHdpZmUuCkFuZCBNaWNoYWwgU2F1bCdzIGRhdWdodGVyIGxvdmVkIERhdmlkOiBhbmQgdGhleSB0b2xkIFNhdWwsIGFuZCB0aGUgdGhpbmcgcGxlYXNlZCBoaW0uCkFuZCBTYXVsIHNhaWQsIEkgd2lsbCBnaXZlIGhpbSBoZXIsIHRoYXQgc2hlIG1heSBiZSBhIHNuYXJlIHRvIGhpbSwgYW5kIHRoYXQgdGhlIGhhbmQgb2YgdGhlIFBoaWxpc3RpbmVzIG1heSBiZSBhZ2FpbnN0IGhpbS4gV2hlcmVmb3JlIFNhdWwgc2FpZCB0byBEYXZpZCwgVGhvdSBzaGFsdCB0aGlzIGRheSBiZSBteSBzb24gaW4gbGF3IGluIHRoZSBvbmUgb2YgdGhlIHR3YWluLgpBbmQgU2F1bCBjb21tYW5kZWQgaGlzIHNlcnZhbnRzLCBzYXlpbmcsIENvbW11bmUgd2l0aCBEYXZpZCBzZWNyZXRseSwgYW5kIHNheSwgQmVob2xkLCB0aGUga2luZyBoYXRoIGRlbGlnaHQgaW4gdGhlZSwgYW5kIGFsbCBoaXMgc2VydmFudHMgbG92ZSB0aGVlOiBub3cgdGhlcmVmb3JlIGJlIHRoZSBraW5nJ3Mgc29uIGluIGxhdy4KQW5kIFNhdWwncyBzZXJ2YW50cyBzcGFrZSB0aG9zZSB3b3JkcyBpbiB0aGUgZWFycyBvZiBEYXZpZC4gQW5kIERhdmlkIHNhaWQsIFNlZW1ldGggaXQgdG8geW91IGEgbGlnaHQgdGhpbmcgdG8gYmUgYSBraW5nJ3Mgc29uIGluIGxhdywgc2VlaW5nIHRoYXQgSSBhbSBhIHBvb3IgbWFuLCBhbmQgbGlnaHRseSBlc3RlZW1lZD8KQW5kIHRoZSBzZXJ2YW50cyBvZiBTYXVsIHRvbGQgaGltLCBzYXlpbmcsIE9uIHRoaXMgbWFubmVyIHNwYWtlIERhdmlkLgpBbmQgU2F1bCBzYWlkLCBUaHVzIHNoYWxsIHllIHNheSB0byBEYXZpZCwgVGhlIGtpbmcgZGVzaXJldGggbm90IGFueSBkb3dyeSwgYnV0IGFuIGh1bmRyZWQgZm9yZXNraW5zIG9mIHRoZSBQaGlsaXN0aW5lcywgdG8gYmUgYXZlbmdlZCBvZiB0aGUga2luZydzIGVuZW1pZXMuIEJ1dCBTYXVsIHRob3VnaHQgdG8gbWFrZSBEYXZpZCBmYWxsIGJ5IHRoZSBoYW5kIG9mIHRoZSBQaGlsaXN0aW5lcy4KQW5kIHdoZW4gaGlzIHNlcnZhbnRzIHRvbGQgRGF2aWQgdGhlc2Ugd29yZHMsIGl0IHBsZWFzZWQgRGF2aWQgd2VsbCB0byBiZSB0aGUga2luZydzIHNvbiBpbiBsYXc6IGFuZCB0aGUgZGF5cyB3ZXJlIG5vdCBleHBpcmVkLgpXaGVyZWZvcmUgRGF2aWQgYXJvc2UgYW5kIHdlbnQsIGhlIGFuZCBoaXMgbWVuLCBhbmQgc2xldyBvZiB0aGUgUGhpbGlzdGluZXMgdHdvIGh1bmRyZWQgbWVuOyBhbmQgRGF2aWQgYnJvdWdodCB0aGVpciBmb3Jlc2tpbnMsIGFuZCB0aGV5IGdhdmUgdGhlbSBpbiBmdWxsIHRhbGUgdG8gdGhlIGtpbmcsIHRoYXQgaGUgbWlnaHQgYmUgdGhlIGtpbmcncyBzb24gaW4gbGF3LiBBbmQgU2F1bCBnYXZlIGhpbSBNaWNoYWwgaGlzIGRhdWdodGVyIHRvIHdpZmUuCkFuZCBTYXVsIHNhdyBhbmQga25ldyB0aGF0IHRoZSBMT1JEIHdhcyB3aXRoIERhdmlkLCBhbmQgdGhhdCBNaWNoYWwgU2F1bCdzIGRhdWdodGVyIGxvdmVkIGhpbS4KQW5kIFNhdWwgd2FzIHlldCB0aGUgbW9yZSBhZnJhaWQgb2YgRGF2aWQ7IGFuZCBTYXVsIGJlY2FtZSBEYXZpZCdzIGVuZW15IGNvbnRpbnVhbGx5LgpUaGVuIHRoZSBwcmluY2VzIG9mIHRoZSBQaGlsaXN0aW5lcyB3ZW50IGZvcnRoOiBhbmQgaXQgY2FtZSB0byBwYXNzLCBhZnRlciB0aGV5IHdlbnQgZm9ydGgsIHRoYXQgRGF2aWQgYmVoYXZlZCBoaW1zZWxmIG1vcmUgd2lzZWx5IHRoYW4gYWxsIHRoZSBzZXJ2YW50cyBvZiBTYXVsOyBzbyB0aGF0IGhpcyBuYW1lIHdhcyBtdWNoIHNldCBieS4KQW5kIFNhdWwgc3Bha2UgdG8gSm9uYXRoYW4gaGlzIHNvbiwgYW5kIHRvIGFsbCBoaXMgc2VydmFudHMsIHRoYXQgdGhleSBzaG91bGQga2lsbCBEYXZpZC4KQnV0IEpvbmF0aGFuIFNhdWwncyBzb24gZGVsaWdodGVkIG11Y2ggaW4gRGF2aWQ6IGFuZCBKb25hdGhhbiB0b2xkIERhdmlkLCBzYXlpbmcsIFNhdWwgbXkgZmF0aGVyIHNlZWtldGggdG8ga2lsbCB0aGVlOiBub3cgdGhlcmVmb3JlLCBJIHByYXkgdGhlZSwgdGFrZSBoZWVkIHRvIHRoeXNlbGYgdW50aWwgdGhlIG1vcm5pbmcsIGFuZCBhYmlkZSBpbiBhIHNlY3JldCBwbGFjZSwgYW5kIGhpZGUgdGh5c2VsZjoKQW5kIEkgd2lsbCBnbyBvdXQgYW5kIHN0YW5kIGJlc2lkZSBteSBmYXRoZXIgaW4gdGhlIGZpZWxkIHdoZXJlIHRob3UgYXJ0LCBhbmQgSSB3aWxsIGNvbW11bmUgd2l0aCBteSBmYXRoZXIgb2YgdGhlZTsgYW5kIHdoYXQgSSBzZWUsIHRoYXQgSSB3aWxsIHRlbGwgdGhlZS4KQW5kIEpvbmF0aGFuIHNwYWtlIGdvb2Qgb2YgRGF2aWQgdW50byBTYXVsIGhpcyBmYXRoZXIsIGFuZCBzYWlkIHVudG8gaGltLCBMZXQgbm90IHRoZSBraW5nIHNpbiBhZ2FpbnN0IGhpcyBzZXJ2YW50LCBhZ2FpbnN0IERhdmlkOyBiZWNhdXNlIGhlIGhhdGggbm90IHNpbm5lZCBhZ2FpbnN0IHRoZWUsIGFuZCBiZWNhdXNlIGhpcyB3b3JrcyBoYXZlIGJlZW4gdG8gdGhlZS13YXJkIHZlcnkgZ29vZDoKRm9yIGhlIGRpZCBwdXQgaGlzIGxpZmUgaW4gaGlzIGhhbmQsIGFuZCBzbGV3IHRoZSBQaGlsaXN0aW5lLCBhbmQgdGhlIExPUkQgd3JvdWdodCBhIGdyZWF0IHNhbHZhdGlvbiBmb3IgYWxsIElzcmFlbDogdGhvdSBzYXdlc3QgaXQsIGFuZCBkaWRzdCByZWpvaWNlOiB3aGVyZWZvcmUgdGhlbiB3aWx0IHRob3Ugc2luIGFnYWluc3QgaW5ub2NlbnQgYmxvb2QsIHRvIHNsYXkgRGF2aWQgd2l0aG91dCBhIGNhdXNlPwpBbmQgU2F1bCBoZWFya2VuZWQgdW50byB0aGUgdm9pY2Ugb2YgSm9uYXRoYW46IGFuZCBTYXVsIHN3YXJlLCBBcyB0aGUgTE9SRCBsaXZldGgsIGhlIHNoYWxsIG5vdCBiZSBzbGFpbi4KQW5kIEpvbmF0aGFuIGNhbGxlZCBEYXZpZCwgYW5kIEpvbmF0aGFuIHNoZXdlZCBoaW0gYWxsIHRob3NlIHRoaW5ncy4gQW5kIEpvbmF0aGFuIGJyb3VnaHQgRGF2aWQgdG8gU2F1bCwgYW5kIGhlIHdhcyBpbiBoaXMgcHJlc2VuY2UsIGFzIGluIHRpbWVzIHBhc3QuCkFuZCB0aGVyZSB3YXMgd2FyIGFnYWluOiBhbmQgRGF2aWQgd2VudCBvdXQsIGFuZCBmb3VnaHQgd2l0aCB0aGUgUGhpbGlzdGluZXMsIGFuZCBzbGV3IHRoZW0gd2l0aCBhIGdyZWF0IHNsYXVnaHRlcjsgYW5kIHRoZXkgZmxlZCBmcm9tIGhpbS4KQW5kIHRoZSBldmlsIHNwaXJpdCBmcm9tIHRoZSBMT1JEIHdhcyB1cG9uIFNhdWwsIGFzIGhlIHNhdCBpbiBoaXMgaG91c2Ugd2l0aCBoaXMgamF2ZWxpbiBpbiBoaXMgaGFuZDogYW5kIERhdmlkIHBsYXllZCB3aXRoIGhpcyBoYW5kLgpBbmQgU2F1bCBzb3VnaHQgdG8gc21pdGUgRGF2aWQgZXZlbiB0byB0aGUgd2FsbCB3aXRoIHRoZSBqYXZlbGluOiBidXQgaGUgc2xpcHBlZCBhd2F5IG91dCBvZiBTYXVsJ3MgcHJlc2VuY2UsIGFuZCBoZSBzbW90ZSB0aGUgamF2ZWxpbiBpbnRvIHRoZSB3YWxsOiBhbmQgRGF2aWQgZmxlZCwgYW5kIGVzY2FwZWQgdGhhdCBuaWdodC4KU2F1bCBhbHNvIHNlbnQgbWVzc2VuZ2VycyB1bnRvIERhdmlkJ3MgaG91c2UsIHRvIHdhdGNoIGhpbSwgYW5kIHRvIHNsYXkgaGltIGluIHRoZSBtb3JuaW5nOiBhbmQgTWljaGFsIERhdmlkJ3Mgd2lmZSB0b2xkIGhpbSwgc2F5aW5nLCBJZiB0aG91IHNhdmUgbm90IHRoeSBsaWZlIHRvIG5pZ2h0LCB0byBtb3Jyb3cgdGhvdSBzaGFsdCBiZSBzbGFpbi4KU28gTWljaGFsIGxldCBEYXZpZCBkb3duIHRocm91Z2ggYSB3aW5kb3c6IGFuZCBoZSB3ZW50LCBhbmQgZmxlZCwgYW5kIGVzY2FwZWQuCkFuZCBNaWNoYWwgdG9vayBhbiBpbWFnZSwgYW5kIGxhaWQgaXQgaW4gdGhlIGJlZCwgYW5kIHB1dCBhIHBpbGxvdyBvZiBnb2F0cycgaGFpciBmb3IgaGlzIGJvbHN0ZXIsIGFuZCBjb3ZlcmVkIGl0IHdpdGggYSBjbG90aC4KQW5kIHdoZW4gU2F1bCBzZW50IG1lc3NlbmdlcnMgdG8gdGFrZSBEYXZpZCwgc2hlIHNhaWQsIEhlIGlzIHNpY2suCkFuZCBTYXVsIHNlbnQgdGhlIG1lc3NlbmdlcnMgYWdhaW4gdG8gc2VlIERhdmlkLCBzYXlpbmcsIEJyaW5nIGhpbSB1cCB0byBtZSBpbiB0aGUgYmVkLCB0aGF0IEkgbWF5IHNsYXkgaGltLgpBbmQgd2hlbiB0aGUgbWVzc2VuZ2VycyB3ZXJlIGNvbWUgaW4sIGJlaG9sZCwgdGhlcmUgd2FzIGFuIGltYWdlIGluIHRoZSBiZWQsIHdpdGggYSBwaWxsb3cgb2YgZ29hdHMnIGhhaXIgZm9yIGhpcyBib2xzdGVyLgpBbmQgU2F1bCBzYWlkIHVudG8gTWljaGFsLCBXaHkgaGFzdCB0aG91IGRlY2VpdmVkIG1lIHNvLCBhbmQgc2VudCBhd2F5IG1pbmUgZW5lbXksIHRoYXQgaGUgaXMgZXNjYXBlZD8gQW5kIE1pY2hhbCBhbnN3ZXJlZCBTYXVsLCBIZSBzYWlkIHVudG8gbWUsIExldCBtZSBnbzsgd2h5IHNob3VsZCBJIGtpbGwgdGhlZT8KU28gRGF2aWQgZmxlZCwgYW5kIGVzY2FwZWQsIGFuZCBjYW1lIHRvIFNhbXVlbCB0byBSYW1haCwgYW5kIHRvbGQgaGltIGFsbCB0aGF0IFNhdWwgaGFkIGRvbmUgdG8gaGltLiBBbmQgaGUgYW5kIFNhbXVlbCB3ZW50IGFuZCBkd2VsdCBpbiBOYWlvdGguCkFuZCBpdCB3YXMgdG9sZCBTYXVsLCBzYXlpbmcsIEJlaG9sZCwgRGF2aWQgaXMgYXQgTmFpb3RoIGluIFJhbWFoLgpBbmQgU2F1bCBzZW50IG1lc3NlbmdlcnMgdG8gdGFrZSBEYXZpZDogYW5kIHdoZW4gdGhleSBzYXcgdGhlIGNvbXBhbnkgb2YgdGhlIHByb3BoZXRzIHByb3BoZXN5aW5nLCBhbmQgU2FtdWVsIHN0YW5kaW5nIGFzIGFwcG9pbnRlZCBvdmVyIHRoZW0sIHRoZSBTcGlyaXQgb2YgR29kIHdhcyB1cG9uIHRoZSBtZXNzZW5nZXJzIG9mIFNhdWwsIGFuZCB0aGV5IGFsc28gcHJvcGhlc2llZC4KQW5kIHdoZW4gaXQgd2FzIHRvbGQgU2F1bCwgaGUgc2VudCBvdGhlciBtZXNzZW5nZXJzLCBhbmQgdGhleSBwcm9waGVzaWVkIGxpa2V3aXNlLiBBbmQgU2F1bCBzZW50IG1lc3NlbmdlcnMgYWdhaW4gdGhlIHRoaXJkIHRpbWUsIGFuZCB0aGV5IHByb3BoZXNpZWQgYWxzby4KVGhlbiB3ZW50IGhlIGFsc28gdG8gUmFtYWgsIGFuZCBjYW1lIHRvIGEgZ3JlYXQgd2VsbCB0aGF0IGlzIGluIFNlY2h1OiBhbmQgaGUgYXNrZWQgYW5kIHNhaWQsIFdoZXJlIGFyZSBTYW11ZWwgYW5kIERhdmlkPyBBbmQgb25lIHNhaWQsIEJlaG9sZCwgdGhleSBiZSBhdCBOYWlvdGggaW4gUmFtYWguCkFuZCBoZSB3ZW50IHRoaXRoZXIgdG8gTmFpb3RoIGluIFJhbWFoOiBhbmQgdGhlIFNwaXJpdCBvZiBHb2Qgd2FzIHVwb24gaGltIGFsc28sIGFuZCBoZSB3ZW50IG9uLCBhbmQgcHJvcGhlc2llZCwgdW50aWwgaGUgY2FtZSB0byBOYWlvdGggaW4gUmFtYWguCkFuZCBoZSBzdHJpcHBlZCBvZmYgaGlzIGNsb3RoZXMgYWxzbywgYW5kIHByb3BoZXNpZWQgYmVmb3JlIFNhbXVlbCBpbiBsaWtlIG1hbm5lciwgYW5kIGxheSBkb3duIG5ha2VkIGFsbCB0aGF0IGRheSBhbmQgYWxsIHRoYXQgbmlnaHQuIFdoZXJlZm9yZSB0aGV5IHNheSwgSXMgU2F1bCBhbHNvIGFtb25nIHRoZSBwcm9waGV0cz8KQW5kIERhdmlkIGZsZWQgZnJvbSBOYWlvdGggaW4gUmFtYWgsIGFuZCBjYW1lIGFuZCBzYWlkIGJlZm9yZSBKb25hdGhhbiwgV2hhdCBoYXZlIEkgZG9uZT8gd2hhdCBpcyBtaW5lIGluaXF1aXR5PyBhbmQgd2hhdCBpcyBteSBzaW4gYmVmb3JlIHRoeSBmYXRoZXIsIHRoYXQgaGUgc2Vla2V0aCBteSBsaWZlPwpBbmQgaGUgc2FpZCB1bnRvIGhpbSwgR29kIGZvcmJpZDsgdGhvdSBzaGFsdCBub3QgZGllOiBiZWhvbGQsIG15IGZhdGhlciB3aWxsIGRvIG5vdGhpbmcgZWl0aGVyIGdyZWF0IG9yIHNtYWxsLCBidXQgdGhhdCBoZSB3aWxsIHNoZXcgaXQgbWU6IGFuZCB3aHkgc2hvdWxkIG15IGZhdGhlciBoaWRlIHRoaXMgdGhpbmcgZnJvbSBtZT8gaXQgaXMgbm90IHNvLgpBbmQgRGF2aWQgc3dhcmUgbW9yZW92ZXIsIGFuZCBzYWlkLCBUaHkgZmF0aGVyIGNlcnRhaW5seSBrbm93ZXRoIHRoYXQgSSBoYXZlIGZvdW5kIGdyYWNlIGluIHRoaW5lIGV5ZXM7IGFuZCBoZSBzYWl0aCwgTGV0IG5vdCBKb25hdGhhbiBrbm93IHRoaXMsIGxlc3QgaGUgYmUgZ3JpZXZlZDogYnV0IHRydWx5IGFzIHRoZSBMT1JEIGxpdmV0aCwgYW5kIGFzIHRoeSBzb3VsIGxpdmV0aCwgdGhlcmUgaXMgYnV0IGEgc3RlcCBiZXR3ZWVuIG1lIGFuZCBkZWF0aC4KVGhlbiBzYWlkIEpvbmF0aGFuIHVudG8gRGF2aWQsIFdoYXRzb2V2ZXIgdGh5IHNvdWwgZGVzaXJldGgsIEkgd2lsbCBldmVuIGRvIGl0IGZvciB0aGVlLgpBbmQgRGF2aWQgc2FpZCB1bnRvIEpvbmF0aGFuLCBCZWhvbGQsIHRvIG1vcnJvdyBpcyB0aGUgbmV3IG1vb24sIGFuZCBJIHNob3VsZCBub3QgZmFpbCB0byBzaXQgd2l0aCB0aGUga2luZyBhdCBtZWF0OiBidXQgbGV0IG1lIGdvLCB0aGF0IEkgbWF5IGhpZGUgbXlzZWxmIGluIHRoZSBmaWVsZCB1bnRvIHRoZSB0aGlyZCBkYXkgYXQgZXZlbi4KSWYgdGh5IGZhdGhlciBhdCBhbGwgbWlzcyBtZSwgdGhlbiBzYXksIERhdmlkIGVhcm5lc3RseSBhc2tlZCBsZWF2ZSBvZiBtZSB0aGF0IGhlIG1pZ2h0IHJ1biB0byBCZXRobGVoZW0gaGlzIGNpdHk6IGZvciB0aGVyZSBpcyBhIHllYXJseSBzYWNyaWZpY2UgdGhlcmUgZm9yIGFsbCB0aGUgZmFtaWx5LgpJZiBoZSBzYXkgdGh1cywgSXQgaXMgd2VsbDsgdGh5IHNlcnZhbnQgc2hhbGwgaGF2ZSBwZWFjZTogYnV0IGlmIGhlIGJlIHZlcnkgd3JvdGgsIHRoZW4gYmUgc3VyZSB0aGF0IGV2aWwgaXMgZGV0ZXJtaW5lZCBieSBoaW0uClRoZXJlZm9yZSB0aG91IHNoYWx0IGRlYWwga2luZGx5IHdpdGggdGh5IHNlcnZhbnQ7IGZvciB0aG91IGhhc3QgYnJvdWdodCB0aHkgc2VydmFudCBpbnRvIGEgY292ZW5hbnQgb2YgdGhlIExPUkQgd2l0aCB0aGVlOiBub3R3aXRoc3RhbmRpbmcsIGlmIHRoZXJlIGJlIGluIG1lIGluaXF1aXR5LCBzbGF5IG1lIHRoeXNlbGY7IGZvciB3aHkgc2hvdWxkZXN0IHRob3UgYnJpbmcgbWUgdG8gdGh5IGZhdGhlcj8KQW5kIEpvbmF0aGFuIHNhaWQsIEZhciBiZSBpdCBmcm9tIHRoZWU6IGZvciBpZiBJIGtuZXcgY2VydGFpbmx5IHRoYXQgZXZpbCB3ZXJlIGRldGVybWluZWQgYnkgbXkgZmF0aGVyIHRvIGNvbWUgdXBvbiB0aGVlLCB0aGVuIHdvdWxkIG5vdCBJIHRlbGwgaXQgdGhlZT8KVGhlbiBzYWlkIERhdmlkIHRvIEpvbmF0aGFuLCBXaG8gc2hhbGwgdGVsbCBtZT8gb3Igd2hhdCBpZiB0aHkgZmF0aGVyIGFuc3dlciB0aGVlIHJvdWdobHk/CkFuZCBKb25hdGhhbiBzYWlkIHVudG8gRGF2aWQsIENvbWUsIGFuZCBsZXQgdXMgZ28gb3V0IGludG8gdGhlIGZpZWxkLiBBbmQgdGhleSB3ZW50IG91dCBib3RoIG9mIHRoZW0gaW50byB0aGUgZmllbGQuCkFuZCBKb25hdGhhbiBzYWlkIHVudG8gRGF2aWQsIE8gTE9SRCBHb2Qgb2YgSXNyYWVsLCB3aGVuIEkgaGF2ZSBzb3VuZGVkIG15IGZhdGhlciBhYm91dCB0byBtb3Jyb3cgYW55IHRpbWUsIG9yIHRoZSB0aGlyZCBkYXksIGFuZCwgYmVob2xkLCBpZiB0aGVyZSBiZSBnb29kIHRvd2FyZCBEYXZpZCwgYW5kIEkgdGhlbiBzZW5kIG5vdCB1bnRvIHRoZWUsIGFuZCBzaGV3IGl0IHRoZWU7ClRoZSBMT1JEIGRvIHNvIGFuZCBtdWNoIG1vcmUgdG8gSm9uYXRoYW46IGJ1dCBpZiBpdCBwbGVhc2UgbXkgZmF0aGVyIHRvIGRvIHRoZWUgZXZpbCwgdGhlbiBJIHdpbGwgc2hldyBpdCB0aGVlLCBhbmQgc2VuZCB0aGVlIGF3YXksIHRoYXQgdGhvdSBtYXllc3QgZ28gaW4gcGVhY2U6IGFuZCB0aGUgTE9SRCBiZSB3aXRoIHRoZWUsIGFzIGhlIGhhdGggYmVlbiB3aXRoIG15IGZhdGhlci4KQW5kIHRob3Ugc2hhbHQgbm90IG9ubHkgd2hpbGUgeWV0IEkgbGl2ZSBzaGV3IG1lIHRoZSBraW5kbmVzcyBvZiB0aGUgTE9SRCwgdGhhdCBJIGRpZSBub3Q6CkJ1dCBhbHNvIHRob3Ugc2hhbHQgbm90IGN1dCBvZmYgdGh5IGtpbmRuZXNzIGZyb20gbXkgaG91c2UgZm9yIGV2ZXI6IG5vLCBub3Qgd2hlbiB0aGUgTE9SRCBoYXRoIGN1dCBvZmYgdGhlIGVuZW1pZXMgb2YgRGF2aWQgZXZlcnkgb25lIGZyb20gdGhlIGZhY2Ugb2YgdGhlIGVhcnRoLgpTbyBKb25hdGhhbiBtYWRlIGEgY292ZW5hbnQgd2l0aCB0aGUgaG91c2Ugb2YgRGF2aWQsIHNheWluZywgTGV0IHRoZSBMT1JEIGV2ZW4gcmVxdWlyZSBpdCBhdCB0aGUgaGFuZCBvZiBEYXZpZCdzIGVuZW1pZXMuCkFuZCBKb25hdGhhbiBjYXVzZWQgRGF2aWQgdG8gc3dlYXIgYWdhaW4sIGJlY2F1c2UgaGUgbG92ZWQgaGltOiBmb3IgaGUgbG92ZWQgaGltIGFzIGhlIGxvdmVkIGhpcyBvd24gc291bC4KVGhlbiBKb25hdGhhbiBzYWlkIHRvIERhdmlkLCBUbyBtb3Jyb3cgaXMgdGhlIG5ldyBtb29uOiBhbmQgdGhvdSBzaGFsdCBiZSBtaXNzZWQsIGJlY2F1c2UgdGh5IHNlYXQgd2lsbCBiZSBlbXB0eS4KQW5kIHdoZW4gdGhvdSBoYXN0IHN0YXllZCB0aHJlZSBkYXlzLCB0aGVuIHRob3Ugc2hhbHQgZ28gZG93biBxdWlja2x5LCBhbmQgY29tZSB0byB0aGUgcGxhY2Ugd2hlcmUgdGhvdSBkaWRzdCBoaWRlIHRoeXNlbGYgd2hlbiB0aGUgYnVzaW5lc3Mgd2FzIGluIGhhbmQsIGFuZCBzaGFsdCByZW1haW4gYnkgdGhlIHN0b25lIEV6ZWwuCkFuZCBJIHdpbGwgc2hvb3QgdGhyZWUgYXJyb3dzIG9uIHRoZSBzaWRlIHRoZXJlb2YsIGFzIHRob3VnaCBJIHNob3QgYXQgYSBtYXJrLgpBbmQsIGJlaG9sZCwgSSB3aWxsIHNlbmQgYSBsYWQsIHNheWluZywgR28sIGZpbmQgb3V0IHRoZSBhcnJvd3MuIElmIEkgZXhwcmVzc2x5IHNheSB1bnRvIHRoZSBsYWQsIEJlaG9sZCwgdGhlIGFycm93cyBhcmUgb24gdGhpcyBzaWRlIG9mIHRoZWUsIHRha2UgdGhlbTsgdGhlbiBjb21lIHRob3U6IGZvciB0aGVyZSBpcyBwZWFjZSB0byB0aGVlLCBhbmQgbm8gaHVydDsgYXMgdGhlIExPUkQgbGl2ZXRoLgpCdXQgaWYgSSBzYXkgdGh1cyB1bnRvIHRoZSB5b3VuZyBtYW4sIEJlaG9sZCwgdGhlIGFycm93cyBhcmUgYmV5b25kIHRoZWU7IGdvIHRoeSB3YXk6IGZvciB0aGUgTE9SRCBoYXRoIHNlbnQgdGhlZSBhd2F5LgpBbmQgYXMgdG91Y2hpbmcgdGhlIG1hdHRlciB3aGljaCB0aG91IGFuZCBJIGhhdmUgc3Bva2VuIG9mLCBiZWhvbGQsIHRoZSBMT1JEIGJlIGJldHdlZW4gdGhlZSBhbmQgbWUgZm9yIGV2ZXIuClNvIERhdmlkIGhpZCBoaW1zZWxmIGluIHRoZSBmaWVsZDogYW5kIHdoZW4gdGhlIG5ldyBtb29uIHdhcyBjb21lLCB0aGUga2luZyBzYXQgaGltIGRvd24gdG8gZWF0IG1lYXQuCkFuZCB0aGUga2luZyBzYXQgdXBvbiBoaXMgc2VhdCwgYXMgYXQgb3RoZXIgdGltZXMsIGV2ZW4gdXBvbiBhIHNlYXQgYnkgdGhlIHdhbGw6IGFuZCBKb25hdGhhbiBhcm9zZSwgYW5kIEFibmVyIHNhdCBieSBTYXVsJ3Mgc2lkZSwgYW5kIERhdmlkJ3MgcGxhY2Ugd2FzIGVtcHR5LgpOZXZlcnRoZWxlc3MgU2F1bCBzcGFrZSBub3QgYW55IHRoaW5nIHRoYXQgZGF5OiBmb3IgaGUgdGhvdWdodCwgU29tZXRoaW5nIGhhdGggYmVmYWxsZW4gaGltLCBoZSBpcyBub3QgY2xlYW47IHN1cmVseSBoZSBpcyBub3QgY2xlYW4uCkFuZCBpdCBjYW1lIHRvIHBhc3Mgb24gdGhlIG1vcnJvdywgd2hpY2ggd2FzIHRoZSBzZWNvbmQgZGF5IG9mIHRoZSBtb250aCwgdGhhdCBEYXZpZCdzIHBsYWNlIHdhcyBlbXB0eTogYW5kIFNhdWwgc2FpZCB1bnRvIEpvbmF0aGFuIGhpcyBzb24sIFdoZXJlZm9yZSBjb21ldGggbm90IHRoZSBzb24gb2YgSmVzc2UgdG8gbWVhdCwgbmVpdGhlciB5ZXN0ZXJkYXksIG5vciB0byBkYXk/CkFuZCBKb25hdGhhbiBhbnN3ZXJlZCBTYXVsLCBEYXZpZCBlYXJuZXN0bHkgYXNrZWQgbGVhdmUgb2YgbWUgdG8gZ28gdG8gQmV0aGxlaGVtOgpBbmQgaGUgc2FpZCwgTGV0IG1lIGdvLCBJIHByYXkgdGhlZTsgZm9yIG91ciBmYW1pbHkgaGF0aCBhIHNhY3JpZmljZSBpbiB0aGUgY2l0eTsgYW5kIG15IGJyb3RoZXIsIGhlIGhhdGggY29tbWFuZGVkIG1lIHRvIGJlIHRoZXJlOiBhbmQgbm93LCBpZiBJIGhhdmUgZm91bmQgZmF2b3VyIGluIHRoaW5lIGV5ZXMsIGxldCBtZSBnZXQgYXdheSwgSSBwcmF5IHRoZWUsIGFuZCBzZWUgbXkgYnJldGhyZW4uIFRoZXJlZm9yZSBoZSBjb21ldGggbm90IHVudG8gdGhlIGtpbmcncyB0YWJsZS4KVGhlbiBTYXVsJ3MgYW5nZXIgd2FzIGtpbmRsZWQgYWdhaW5zdCBKb25hdGhhbiwgYW5kIGhlIHNhaWQgdW50byBoaW0sIFRob3Ugc29uIG9mIHRoZSBwZXJ2ZXJzZSByZWJlbGxpb3VzIHdvbWFuLCBkbyBub3QgSSBrbm93IHRoYXQgdGhvdSBoYXN0IGNob3NlbiB0aGUgc29uIG9mIEplc3NlIHRvIHRoaW5lIG93biBjb25mdXNpb24sIGFuZCB1bnRvIHRoZSBjb25mdXNpb24gb2YgdGh5IG1vdGhlcidzIG5ha2VkbmVzcz8KRm9yIGFzIGxvbmcgYXMgdGhlIHNvbiBvZiBKZXNzZSBsaXZldGggdXBvbiB0aGUgZ3JvdW5kLCB0aG91IHNoYWx0IG5vdCBiZSBlc3RhYmxpc2hlZCwgbm9yIHRoeSBraW5nZG9tLiBXaGVyZWZvcmUgbm93IHNlbmQgYW5kIGZldGNoIGhpbSB1bnRvIG1lLCBmb3IgaGUgc2hhbGwgc3VyZWx5IGRpZS4KQW5kIEpvbmF0aGFuIGFuc3dlcmVkIFNhdWwgaGlzIGZhdGhlciwgYW5kIHNhaWQgdW50byBoaW0sIFdoZXJlZm9yZSBzaGFsbCBoZSBiZSBzbGFpbj8gd2hhdCBoYXRoIGhlIGRvbmU/CkFuZCBTYXVsIGNhc3QgYSBqYXZlbGluIGF0IGhpbSB0byBzbWl0ZSBoaW06IHdoZXJlYnkgSm9uYXRoYW4ga25ldyB0aGF0IGl0IHdhcyBkZXRlcm1pbmVkIG9mIGhpcyBmYXRoZXIgdG8gc2xheSBEYXZpZC4KU28gSm9uYXRoYW4gYXJvc2UgZnJvbSB0aGUgdGFibGUgaW4gZmllcmNlIGFuZ2VyLCBhbmQgZGlkIGVhdCBubyBtZWF0IHRoZSBzZWNvbmQgZGF5IG9mIHRoZSBtb250aDogZm9yIGhlIHdhcyBncmlldmVkIGZvciBEYXZpZCwgYmVjYXVzZSBoaXMgZmF0aGVyIGhhZCBkb25lIGhpbSBzaGFtZS4KQW5kIGl0IGNhbWUgdG8gcGFzcyBpbiB0aGUgbW9ybmluZywgdGhhdCBKb25hdGhhbiB3ZW50IG91dCBpbnRvIHRoZSBmaWVsZCBhdCB0aGUgdGltZSBhcHBvaW50ZWQgd2l0aCBEYXZpZCwgYW5kIGEgbGl0dGxlIGxhZCB3aXRoIGhpbS4KQW5kIGhlIHNhaWQgdW50byBoaXMgbGFkLCBSdW4sIGZpbmQgb3V0IG5vdyB0aGUgYXJyb3dzIHdoaWNoIEkgc2hvb3QuIEFuZCBhcyB0aGUgbGFkIHJhbiwgaGUgc2hvdCBhbiBhcnJvdyBiZXlvbmQgaGltLgpBbmQgd2hlbiB0aGUgbGFkIHdhcyBjb21lIHRvIHRoZSBwbGFjZSBvZiB0aGUgYXJyb3cgd2hpY2ggSm9uYXRoYW4gaGFkIHNob3QsIEpvbmF0aGFuIGNyaWVkIGFmdGVyIHRoZSBsYWQsIGFuZCBzYWlkLCBJcyBub3QgdGhlIGFycm93IGJleW9uZCB0aGVlPwpBbmQgSm9uYXRoYW4gY3JpZWQgYWZ0ZXIgdGhlIGxhZCwgTWFrZSBzcGVlZCwgaGFzdGUsIHN0YXkgbm90LiBBbmQgSm9uYXRoYW4ncyBsYWQgZ2F0aGVyZWQgdXAgdGhlIGFycm93cywgYW5kIGNhbWUgdG8gaGlzIG1hc3Rlci4KQnV0IHRoZSBsYWQga25ldyBub3QgYW55IHRoaW5nOiBvbmx5IEpvbmF0aGFuIGFuZCBEYXZpZCBrbmV3IHRoZSBtYXR0ZXIuCkFuZCBKb25hdGhhbiBnYXZlIGhpcyBhcnRpbGxlcnkgdW50byBoaXMgbGFkLCBhbmQgc2FpZCB1bnRvIGhpbSwgR28sIGNhcnJ5IHRoZW0gdG8gdGhlIGNpdHkuCkFuZCBhcyBzb29uIGFzIHRoZSBsYWQgd2FzIGdvbmUsIERhdmlkIGFyb3NlIG91dCBvZiBhIHBsYWNlIHRvd2FyZCB0aGUgc291dGgsIGFuZCBmZWxsIG9uIGhpcyBmYWNlIHRvIHRoZSBncm91bmQsIGFuZCBib3dlZCBoaW1zZWxmIHRocmVlIHRpbWVzOiBhbmQgdGhleSBraXNzZWQgb25lIGFub3RoZXIsIGFuZCB3ZXB0IG9uZSB3aXRoIGFub3RoZXIsIHVudGlsIERhdmlkIGV4Y2VlZGVkLgpBbmQgSm9uYXRoYW4gc2FpZCB0byBEYXZpZCwgR28gaW4gcGVhY2UsIGZvcmFzbXVjaCBhcyB3ZSBoYXZlIHN3b3JuIGJvdGggb2YgdXMgaW4gdGhlIG5hbWUgb2YgdGhlIExPUkQsIHNheWluZywgVGhlIExPUkQgYmUgYmV0d2VlbiBtZSBhbmQgdGhlZSwgYW5kIGJldHdlZW4gbXkgc2VlZCBhbmQgdGh5IHNlZWQgZm9yIGV2ZXIuIEFuZCBoZSBhcm9zZSBhbmQgZGVwYXJ0ZWQ6IGFuZCBKb25hdGhhbiB3ZW50IGludG8gdGhlIGNpdHkuClRoZW4gY2FtZSBEYXZpZCB0byBOb2IgdG8gQWhpbWVsZWNoIHRoZSBwcmllc3Q6IGFuZCBBaGltZWxlY2ggd2FzIGFmcmFpZCBhdCB0aGUgbWVldGluZyBvZiBEYXZpZCwgYW5kIHNhaWQgdW50byBoaW0sIFdoeSBhcnQgdGhvdSBhbG9uZSwgYW5kIG5vIG1hbiB3aXRoIHRoZWU/CkFuZCBEYXZpZCBzYWlkIHVudG8gQWhpbWVsZWNoIHRoZSBwcmllc3QsIFRoZSBraW5nIGhhdGggY29tbWFuZGVkIG1lIGEgYnVzaW5lc3MsIGFuZCBoYXRoIHNhaWQgdW50byBtZSwgTGV0IG5vIG1hbiBrbm93IGFueSB0aGluZyBvZiB0aGUgYnVzaW5lc3Mgd2hlcmVhYm91dCBJIHNlbmQgdGhlZSwgYW5kIHdoYXQgSSBoYXZlIGNvbW1hbmRlZCB0aGVlOiBhbmQgSSBoYXZlIGFwcG9pbnRlZCBteSBzZXJ2YW50cyB0byBzdWNoIGFuZCBzdWNoIGEgcGxhY2UuCk5vdyB0aGVyZWZvcmUgd2hhdCBpcyB1bmRlciB0aGluZSBoYW5kPyBnaXZlIG1lIGZpdmUgbG9hdmVzIG9mIGJyZWFkIGluIG1pbmUgaGFuZCwgb3Igd2hhdCB0aGVyZSBpcyBwcmVzZW50LgpBbmQgdGhlIHByaWVzdCBhbnN3ZXJlZCBEYXZpZCwgYW5kIHNhaWQsIFRoZXJlIGlzIG5vIGNvbW1vbiBicmVhZCB1bmRlciBtaW5lIGhhbmQsIGJ1dCB0aGVyZSBpcyBoYWxsb3dlZCBicmVhZDsgaWYgdGhlIHlvdW5nIG1lbiBoYXZlIGtlcHQgdGhlbXNlbHZlcyBhdCBsZWFzdCBmcm9tIHdvbWVuLgpBbmQgRGF2aWQgYW5zd2VyZWQgdGhlIHByaWVzdCwgYW5kIHNhaWQgdW50byBoaW0sIE9mIGEgdHJ1dGggd29tZW4gaGF2ZSBiZWVuIGtlcHQgZnJvbSB1cyBhYm91dCB0aGVzZSB0aHJlZSBkYXlzLCBzaW5jZSBJIGNhbWUgb3V0LCBhbmQgdGhlIHZlc3NlbHMgb2YgdGhlIHlvdW5nIG1lbiBhcmUgaG9seSwgYW5kIHRoZSBicmVhZCBpcyBpbiBhIG1hbm5lciBjb21tb24sIHllYSwgdGhvdWdoIGl0IHdlcmUgc2FuY3RpZmllZCB0aGlzIGRheSBpbiB0aGUgdmVzc2VsLgpTbyB0aGUgcHJpZXN0IGdhdmUgaGltIGhhbGxvd2VkIGJyZWFkOiBmb3IgdGhlcmUgd2FzIG5vIGJyZWFkIHRoZXJlIGJ1dCB0aGUgc2hld2JyZWFkLCB0aGF0IHdhcyB0YWtlbiBmcm9tIGJlZm9yZSB0aGUgTE9SRCwgdG8gcHV0IGhvdCBicmVhZCBpbiB0aGUgZGF5IHdoZW4gaXQgd2FzIHRha2VuIGF3YXkuCk5vdyBhIGNlcnRhaW4gbWFuIG9mIHRoZSBzZXJ2YW50cyBvZiBTYXVsIHdhcyB0aGVyZSB0aGF0IGRheSwgZGV0YWluZWQgYmVmb3JlIHRoZSBMT1JEOyBhbmQgaGlzIG5hbWUgd2FzIERvZWcsIGFuIEVkb21pdGUsIHRoZSBjaGllZmVzdCBvZiB0aGUgaGVyZG1lbiB0aGF0IGJlbG9uZ2VkIHRvIFNhdWwuCkFuZCBEYXZpZCBzYWlkIHVudG8gQWhpbWVsZWNoLCBBbmQgaXMgdGhlcmUgbm90IGhlcmUgdW5kZXIgdGhpbmUgaGFuZCBzcGVhciBvciBzd29yZD8gZm9yIEkgaGF2ZSBuZWl0aGVyIGJyb3VnaHQgbXkgc3dvcmQgbm9yIG15IHdlYXBvbnMgd2l0aCBtZSwgYmVjYXVzZSB0aGUga2luZydzIGJ1c2luZXNzIHJlcXVpcmVkIGhhc3RlLgpBbmQgdGhlIHByaWVzdCBzYWlkLCBUaGUgc3dvcmQgb2YgR29saWF0aCB0aGUgUGhpbGlzdGluZSwgd2hvbSB0aG91IHNsZXdlc3QgaW4gdGhlIHZhbGxleSBvZiBFbGFoLCBiZWhvbGQsIGl0IGlzIGhlcmUgd3JhcHBlZCBpbiBhIGNsb3RoIGJlaGluZCB0aGUgZXBob2Q6IGlmIHRob3Ugd2lsdCB0YWtlIHRoYXQsIHRha2UgaXQ6IGZvciB0aGVyZSBpcyBubyBvdGhlciBzYXZlIHRoYXQgaGVyZS4gQW5kIERhdmlkIHNhaWQsIFRoZXJlIGlzIG5vbmUgbGlrZSB0aGF0OyBnaXZlIGl0IG1lLgpBbmQgRGF2aWQgYXJvc2UgYW5kIGZsZWQgdGhhdCBkYXkgZm9yIGZlYXIgb2YgU2F1bCwgYW5kIHdlbnQgdG8gQWNoaXNoIHRoZSBraW5nIG9mIEdhdGguCkFuZCB0aGUgc2VydmFudHMgb2YgQWNoaXNoIHNhaWQgdW50byBoaW0sIElzIG5vdCB0aGlzIERhdmlkIHRoZSBraW5nIG9mIHRoZSBsYW5kPyBkaWQgdGhleSBub3Qgc2luZyBvbmUgdG8gYW5vdGhlciBvZiBoaW0gaW4gZGFuY2VzLCBzYXlpbmcsIFNhdWwgaGF0aCBzbGFpbiBoaXMgdGhvdXNhbmRzLCBhbmQgRGF2aWQgaGlzIHRlbiB0aG91c2FuZHM/CkFuZCBEYXZpZCBsYWlkIHVwIHRoZXNlIHdvcmRzIGluIGhpcyBoZWFydCwgYW5kIHdhcyBzb3JlIGFmcmFpZCBvZiBBY2hpc2ggdGhlIGtpbmcgb2YgR2F0aC4KQW5kIGhlIGNoYW5nZWQgaGlzIGJlaGF2aW91ciBiZWZvcmUgdGhlbSwgYW5kIGZlaWduZWQgaGltc2VsZiBtYWQgaW4gdGhlaXIgaGFuZHMsIGFuZCBzY3JhYmJsZWQgb24gdGhlIGRvb3JzIG9mIHRoZSBnYXRlLCBhbmQgbGV0IGhpcyBzcGl0dGxlIGZhbGwgZG93biB1cG9uIGhpcyBiZWFyZC4KVGhlbiBzYWlkIEFjaGlzaCB1bnRvIGhpcyBzZXJ2YW50cywgTG8sIHllIHNlZSB0aGUgbWFuIGlzIG1hZDogd2hlcmVmb3JlIHRoZW4gaGF2ZSB5ZSBicm91Z2h0IGhpbSB0byBtZT8KSGF2ZSBJIG5lZWQgb2YgbWFkIG1lbiwgdGhhdCB5ZSBoYXZlIGJyb3VnaHQgdGhpcyBmZWxsb3cgdG8gcGxheSB0aGUgbWFkIG1hbiBpbiBteSBwcmVzZW5jZT8gc2hhbGwgdGhpcyBmZWxsb3cgY29tZSBpbnRvIG15IGhvdXNlPwpEYXZpZCB0aGVyZWZvcmUgZGVwYXJ0ZWQgdGhlbmNlLCBhbmQgZXNjYXBlZCB0byB0aGUgY2F2ZSBBZHVsbGFtOiBhbmQgd2hlbiBoaXMgYnJldGhyZW4gYW5kIGFsbCBoaXMgZmF0aGVyJ3MgaG91c2UgaGVhcmQgaXQsIHRoZXkgd2VudCBkb3duIHRoaXRoZXIgdG8gaGltLgpBbmQgZXZlcnkgb25lIHRoYXQgd2FzIGluIGRpc3RyZXNzLCBhbmQgZXZlcnkgb25lIHRoYXQgd2FzIGluIGRlYnQsIGFuZCBldmVyeSBvbmUgdGhhdCB3YXMgZGlzY29udGVudGVkLCBnYXRoZXJlZCB0aGVtc2VsdmVzIHVudG8gaGltOyBhbmQgaGUgYmVjYW1lIGEgY2FwdGFpbiBvdmVyIHRoZW06IGFuZCB0aGVyZSB3ZXJlIHdpdGggaGltIGFib3V0IGZvdXIgaHVuZHJlZCBtZW4uCkFuZCBEYXZpZCB3ZW50IHRoZW5jZSB0byBNaXpwZWggb2YgTW9hYjogYW5kIGhlIHNhaWQgdW50byB0aGUga2luZyBvZiBNb2FiLCBMZXQgbXkgZmF0aGVyIGFuZCBteSBtb3RoZXIsIEkgcHJheSB0aGVlLCBjb21lIGZvcnRoLCBhbmQgYmUgd2l0aCB5b3UsIHRpbGwgSSBrbm93IHdoYXQgR29kIHdpbGwgZG8gZm9yIG1lLgpBbmQgaGUgYnJvdWdodCB0aGVtIGJlZm9yZSB0aGUga2luZyBvZiBNb2FiOiBhbmQgdGhleSBkd2VsdCB3aXRoIGhpbSBhbGwgdGhlIHdoaWxlIHRoYXQgRGF2aWQgd2FzIGluIHRoZSBob2xkLgpBbmQgdGhlIHByb3BoZXQgR2FkIHNhaWQgdW50byBEYXZpZCwgQWJpZGUgbm90IGluIHRoZSBob2xkOyBkZXBhcnQsIGFuZCBnZXQgdGhlZSBpbnRvIHRoZSBsYW5kIG9mIEp1ZGFoLiBUaGVuIERhdmlkIGRlcGFydGVkLCBhbmQgY2FtZSBpbnRvIHRoZSBmb3Jlc3Qgb2YgSGFyZXRoLgpXaGVuIFNhdWwgaGVhcmQgdGhhdCBEYXZpZCB3YXMgZGlzY292ZXJlZCwgYW5kIHRoZSBtZW4gdGhhdCB3ZXJlIHdpdGggaGltLCAobm93IFNhdWwgYWJvZGUgaW4gR2liZWFoIHVuZGVyIGEgdHJlZSBpbiBSYW1haCwgaGF2aW5nIGhpcyBzcGVhciBpbiBoaXMgaGFuZCwgYW5kIGFsbCBoaXMgc2VydmFudHMgd2VyZSBzdGFuZGluZyBhYm91dCBoaW07KQpUaGVuIFNhdWwgc2FpZCB1bnRvIGhpcyBzZXJ2YW50cyB0aGF0IHN0b29kIGFib3V0IGhpbSwgSGVhciBub3csIHllIEJlbmphbWl0ZXM7IHdpbGwgdGhlIHNvbiBvZiBKZXNzZSBnaXZlIGV2ZXJ5IG9uZSBvZiB5b3UgZmllbGRzIGFuZCB2aW5leWFyZHMsIGFuZCBtYWtlIHlvdSBhbGwgY2FwdGFpbnMgb2YgdGhvdXNhbmRzLCBhbmQgY2FwdGFpbnMgb2YgaHVuZHJlZHM7ClRoYXQgYWxsIG9mIHlvdSBoYXZlIGNvbnNwaXJlZCBhZ2FpbnN0IG1lLCBhbmQgdGhlcmUgaXMgbm9uZSB0aGF0IHNoZXdldGggbWUgdGhhdCBteSBzb24gaGF0aCBtYWRlIGEgbGVhZ3VlIHdpdGggdGhlIHNvbiBvZiBKZXNzZSwgYW5kIHRoZXJlIGlzIG5vbmUgb2YgeW91IHRoYXQgaXMgc29ycnkgZm9yIG1lLCBvciBzaGV3ZXRoIHVudG8gbWUgdGhhdCBteSBzb24gaGF0aCBzdGlycmVkIHVwIG15IHNlcnZhbnQgYWdhaW5zdCBtZSwgdG8gbGllIGluIHdhaXQsIGFzIGF0IHRoaXMgZGF5PwpUaGVuIGFuc3dlcmVkIERvZWcgdGhlIEVkb21pdGUsIHdoaWNoIHdhcyBzZXQgb3ZlciB0aGUgc2VydmFudHMgb2YgU2F1bCwgYW5kIHNhaWQsIEkgc2F3IHRoZSBzb24gb2YgSmVzc2UgY29taW5nIHRvIE5vYiwgdG8gQWhpbWVsZWNoIHRoZSBzb24gb2YgQWhpdHViLgpBbmQgaGUgZW5xdWlyZWQgb2YgdGhlIExPUkQgZm9yIGhpbSwgYW5kIGdhdmUgaGltIHZpY3R1YWxzLCBhbmQgZ2F2ZSBoaW0gdGhlIHN3b3JkIG9mIEdvbGlhdGggdGhlIFBoaWxpc3RpbmUuClRoZW4gdGhlIGtpbmcgc2VudCB0byBjYWxsIEFoaW1lbGVjaCB0aGUgcHJpZXN0LCB0aGUgc29uIG9mIEFoaXR1YiwgYW5kIGFsbCBoaXMgZmF0aGVyJ3MgaG91c2UsIHRoZSBwcmllc3RzIHRoYXQgd2VyZSBpbiBOb2I6IGFuZCB0aGV5IGNhbWUgYWxsIG9mIHRoZW0gdG8gdGhlIGtpbmcuCkFuZCBTYXVsIHNhaWQsIEhlYXIgbm93LCB0aG91IHNvbiBvZiBBaGl0dWIuIEFuZCBoZSBhbnN3ZXJlZCwgSGVyZSBJIGFtLCBteSBsb3JkLgpBbmQgU2F1bCBzYWlkIHVudG8gaGltLCBXaHkgaGF2ZSB5ZSBjb25zcGlyZWQgYWdhaW5zdCBtZSwgdGhvdSBhbmQgdGhlIHNvbiBvZiBKZXNzZSwgaW4gdGhhdCB0aG91IGhhc3QgZ2l2ZW4gaGltIGJyZWFkLCBhbmQgYSBzd29yZCwgYW5kIGhhc3QgZW5xdWlyZWQgb2YgR29kIGZvciBoaW0sIHRoYXQgaGUgc2hvdWxkIHJpc2UgYWdhaW5zdCBtZSwgdG8gbGllIGluIHdhaXQsIGFzIGF0IHRoaXMgZGF5PwpUaGVuIEFoaW1lbGVjaCBhbnN3ZXJlZCB0aGUga2luZywgYW5kIHNhaWQsIEFuZCB3aG8gaXMgc28gZmFpdGhmdWwgYW1vbmcgYWxsIHRoeSBzZXJ2YW50cyBhcyBEYXZpZCwgd2hpY2ggaXMgdGhlIGtpbmcncyBzb24gaW4gbGF3LCBhbmQgZ29ldGggYXQgdGh5IGJpZGRpbmcsIGFuZCBpcyBob25vdXJhYmxlIGluIHRoaW5lIGhvdXNlPwpEaWQgSSB0aGVuIGJlZ2luIHRvIGVucXVpcmUgb2YgR29kIGZvciBoaW0/IGJlIGl0IGZhciBmcm9tIG1lOiBsZXQgbm90IHRoZSBraW5nIGltcHV0ZSBhbnkgdGhpbmcgdW50byBoaXMgc2VydmFudCwgbm9yIHRvIGFsbCB0aGUgaG91c2Ugb2YgbXkgZmF0aGVyOiBmb3IgdGh5IHNlcnZhbnQga25ldyBub3RoaW5nIG9mIGFsbCB0aGlzLCBsZXNzIG9yIG1vcmUuCkFuZCB0aGUga2luZyBzYWlkLCBUaG91IHNoYWx0IHN1cmVseSBkaWUsIEFoaW1lbGVjaCwgdGhvdSwgYW5kIGFsbCB0aHkgZmF0aGVyJ3MgaG91c2UuCkFuZCB0aGUga2luZyBzYWlkIHVudG8gdGhlIGZvb3RtZW4gdGhhdCBzdG9vZCBhYm91dCBoaW0sIFR1cm4sIGFuZCBzbGF5IHRoZSBwcmllc3RzIG9mIHRoZSBMT1JEOiBiZWNhdXNlIHRoZWlyIGhhbmQgYWxzbyBpcyB3aXRoIERhdmlkLCBhbmQgYmVjYXVzZSB0aGV5IGtuZXcgd2hlbiBoZSBmbGVkLCBhbmQgZGlkIG5vdCBzaGV3IGl0IHRvIG1lLiBCdXQgdGhlIHNlcnZhbnRzIG9mIHRoZSBraW5nIHdvdWxkIG5vdCBwdXQgZm9ydGggdGhlaXIgaGFuZCB0byBmYWxsIHVwb24gdGhlIHByaWVzdHMgb2YgdGhlIExPUkQuCkFuZCB0aGUga2luZyBzYWlkIHRvIERvZWcsIFR1cm4gdGhvdSwgYW5kIGZhbGwgdXBvbiB0aGUgcHJpZXN0cy4gQW5kIERvZWcgdGhlIEVkb21pdGUgdHVybmVkLCBhbmQgaGUgZmVsbCB1cG9uIHRoZSBwcmllc3RzLCBhbmQgc2xldyBvbiB0aGF0IGRheSBmb3Vyc2NvcmUgYW5kIGZpdmUgcGVyc29ucyB0aGF0IGRpZCB3ZWFyIGEgbGluZW4gZXBob2QuCkFuZCBOb2IsIHRoZSBjaXR5IG9mIHRoZSBwcmllc3RzLCBzbW90ZSBoZSB3aXRoIHRoZSBlZGdlIG9mIHRoZSBzd29yZCwgYm90aCBtZW4gYW5kIHdvbWVuLCBjaGlsZHJlbiBhbmQgc3Vja2xpbmdzLCBhbmQgb3hlbiwgYW5kIGFzc2VzLCBhbmQgc2hlZXAsIHdpdGggdGhlIGVkZ2Ugb2YgdGhlIHN3b3JkLgpBbmQgb25lIG9mIHRoZSBzb25zIG9mIEFoaW1lbGVjaCB0aGUgc29uIG9mIEFoaXR1YiwgbmFtZWQgQWJpYXRoYXIsIGVzY2FwZWQsIGFuZCBmbGVkIGFmdGVyIERhdmlkLgpBbmQgQWJpYXRoYXIgc2hld2VkIERhdmlkIHRoYXQgU2F1bCBoYWQgc2xhaW4gdGhlIExPUkQncyBwcmllc3RzLgpBbmQgRGF2aWQgc2FpZCB1bnRvIEFiaWF0aGFyLCBJIGtuZXcgaXQgdGhhdCBkYXksIHdoZW4gRG9lZyB0aGUgRWRvbWl0ZSB3YXMgdGhlcmUsIHRoYXQgaGUgd291bGQgc3VyZWx5IHRlbGwgU2F1bDogSSBoYXZlIG9jY2FzaW9uZWQgdGhlIGRlYXRoIG9mIGFsbCB0aGUgcGVyc29ucyBvZiB0aHkgZmF0aGVyJ3MgaG91c2UuCkFiaWRlIHRob3Ugd2l0aCBtZSwgZmVhciBub3Q6IGZvciBoZSB0aGF0IHNlZWtldGggbXkgbGlmZSBzZWVrZXRoIHRoeSBsaWZlOiBidXQgd2l0aCBtZSB0aG91IHNoYWx0IGJlIGluIHNhZmVndWFyZC4KVGhlbiB0aGV5IHRvbGQgRGF2aWQsIHNheWluZywgQmVob2xkLCB0aGUgUGhpbGlzdGluZXMgZmlnaHQgYWdhaW5zdCBLZWlsYWgsIGFuZCB0aGV5IHJvYiB0aGUgdGhyZXNoaW5nZmxvb3JzLgpUaGVyZWZvcmUgRGF2aWQgZW5xdWlyZWQgb2YgdGhlIExPUkQsIHNheWluZywgU2hhbGwgSSBnbyBhbmQgc21pdGUgdGhlc2UgUGhpbGlzdGluZXM/IEFuZCB0aGUgTE9SRCBzYWlkIHVudG8gRGF2aWQsIEdvLCBhbmQgc21pdGUgdGhlIFBoaWxpc3RpbmVzLCBhbmQgc2F2ZSBLZWlsYWguCkFuZCBEYXZpZCdzIG1lbiBzYWlkIHVudG8gaGltLCBCZWhvbGQsIHdlIGJlIGFmcmFpZCBoZXJlIGluIEp1ZGFoOiBob3cgbXVjaCBtb3JlIHRoZW4gaWYgd2UgY29tZSB0byBLZWlsYWggYWdhaW5zdCB0aGUgYXJtaWVzIG9mIHRoZSBQaGlsaXN0aW5lcz8KVGhlbiBEYXZpZCBlbnF1aXJlZCBvZiB0aGUgTE9SRCB5ZXQgYWdhaW4uIEFuZCB0aGUgTE9SRCBhbnN3ZXJlZCBoaW0gYW5kIHNhaWQsIEFyaXNlLCBnbyBkb3duIHRvIEtlaWxhaDsgZm9yIEkgd2lsbCBkZWxpdmVyIHRoZSBQaGlsaXN0aW5lcyBpbnRvIHRoaW5lIGhhbmQuClNvIERhdmlkIGFuZCBoaXMgbWVuIHdlbnQgdG8gS2VpbGFoLCBhbmQgZm91Z2h0IHdpdGggdGhlIFBoaWxpc3RpbmVzLCBhbmQgYnJvdWdodCBhd2F5IHRoZWlyIGNhdHRsZSwgYW5kIHNtb3RlIHRoZW0gd2l0aCBhIGdyZWF0IHNsYXVnaHRlci4gU28gRGF2aWQgc2F2ZWQgdGhlIGluaGFiaXRhbnRzIG9mIEtlaWxhaC4KQW5kIGl0IGNhbWUgdG8gcGFzcywgd2hlbiBBYmlhdGhhciB0aGUgc29uIG9mIEFoaW1lbGVjaCBmbGVkIHRvIERhdmlkIHRvIEtlaWxhaCwgdGhhdCBoZSBjYW1lIGRvd24gd2l0aCBhbiBlcGhvZCBpbiBoaXMgaGFuZC4KQW5kIGl0IHdhcyB0b2xkIFNhdWwgdGhhdCBEYXZpZCB3YXMgY29tZSB0byBLZWlsYWguIEFuZCBTYXVsIHNhaWQsIEdvZCBoYXRoIGRlbGl2ZXJlZCBoaW0gaW50byBtaW5lIGhhbmQ7IGZvciBoZSBpcyBzaHV0IGluLCBieSBlbnRlcmluZyBpbnRvIGEgdG93biB0aGF0IGhhdGggZ2F0ZXMgYW5kIGJhcnMuCkFuZCBTYXVsIGNhbGxlZCBhbGwgdGhlIHBlb3BsZSB0b2dldGhlciB0byB3YXIsIHRvIGdvIGRvd24gdG8gS2VpbGFoLCB0byBiZXNpZWdlIERhdmlkIGFuZCBoaXMgbWVuLgpBbmQgRGF2aWQga25ldyB0aGF0IFNhdWwgc2VjcmV0bHkgcHJhY3Rpc2VkIG1pc2NoaWVmIGFnYWluc3QgaGltOyBhbmQgaGUgc2FpZCB0byBBYmlhdGhhciB0aGUgcHJpZXN0LCBCcmluZyBoaXRoZXIgdGhlIGVwaG9kLgpUaGVuIHNhaWQgRGF2aWQsIE8gTE9SRCBHb2Qgb2YgSXNyYWVsLCB0aHkgc2VydmFudCBoYXRoIGNlcnRhaW5seSBoZWFyZCB0aGF0IFNhdWwgc2Vla2V0aCB0byBjb21lIHRvIEtlaWxhaCwgdG8gZGVzdHJveSB0aGUgY2l0eSBmb3IgbXkgc2FrZS4KV2lsbCB0aGUgbWVuIG9mIEtlaWxhaCBkZWxpdmVyIG1lIHVwIGludG8gaGlzIGhhbmQ/IHdpbGwgU2F1bCBjb21lIGRvd24sIGFzIHRoeSBzZXJ2YW50IGhhdGggaGVhcmQ/IE8gTE9SRCBHb2Qgb2YgSXNyYWVsLCBJIGJlc2VlY2ggdGhlZSwgdGVsbCB0aHkgc2VydmFudC4gQW5kIHRoZSBMT1JEIHNhaWQsIEhlIHdpbGwgY29tZSBkb3duLgpUaGVuIHNhaWQgRGF2aWQsIFdpbGwgdGhlIG1lbiBvZiBLZWlsYWggZGVsaXZlciBtZSBhbmQgbXkgbWVuIGludG8gdGhlIGhhbmQgb2YgU2F1bD8gQW5kIHRoZSBMT1JEIHNhaWQsIFRoZXkgd2lsbCBkZWxpdmVyIHRoZWUgdXAuClRoZW4gRGF2aWQgYW5kIGhpcyBtZW4sIHdoaWNoIHdlcmUgYWJvdXQgc2l4IGh1bmRyZWQsIGFyb3NlIGFuZCBkZXBhcnRlZCBvdXQgb2YgS2VpbGFoLCBhbmQgd2VudCB3aGl0aGVyc29ldmVyIHRoZXkgY291bGQgZ28uIEFuZCBpdCB3YXMgdG9sZCBTYXVsIHRoYXQgRGF2aWQgd2FzIGVzY2FwZWQgZnJvbSBLZWlsYWg7IGFuZCBoZSBmb3JiYXJlIHRvIGdvIGZvcnRoLgpBbmQgRGF2aWQgYWJvZGUgaW4gdGhlIHdpbGRlcm5lc3MgaW4gc3Ryb25nIGhvbGRzLCBhbmQgcmVtYWluZWQgaW4gYSBtb3VudGFpbiBpbiB0aGUgd2lsZGVybmVzcyBvZiBaaXBoLiBBbmQgU2F1bCBzb3VnaHQgaGltIGV2ZXJ5IGRheSwgYnV0IEdvZCBkZWxpdmVyZWQgaGltIG5vdCBpbnRvIGhpcyBoYW5kLgpBbmQgRGF2aWQgc2F3IHRoYXQgU2F1bCB3YXMgY29tZSBvdXQgdG8gc2VlayBoaXMgbGlmZTogYW5kIERhdmlkIHdhcyBpbiB0aGUgd2lsZGVybmVzcyBvZiBaaXBoIGluIGEgd29vZC4KQW5kIEpvbmF0aGFuIFNhdWwncyBzb24gYXJvc2UsIGFuZCB3ZW50IHRvIERhdmlkIGludG8gdGhlIHdvb2QsIGFuZCBzdHJlbmd0aGVuZWQgaGlzIGhhbmQgaW4gR29kLgpBbmQgaGUgc2FpZCB1bnRvIGhpbSwgRmVhciBub3Q6IGZvciB0aGUgaGFuZCBvZiBTYXVsIG15IGZhdGhlciBzaGFsbCBub3QgZmluZCB0aGVlOyBhbmQgdGhvdSBzaGFsdCBiZSBraW5nIG92ZXIgSXNyYWVsLCBhbmQgSSBzaGFsbCBiZSBuZXh0IHVudG8gdGhlZTsgYW5kIHRoYXQgYWxzbyBTYXVsIG15IGZhdGhlciBrbm93ZXRoLgpBbmQgdGhleSB0d28gbWFkZSBhIGNvdmVuYW50IGJlZm9yZSB0aGUgTE9SRDogYW5kIERhdmlkIGFib2RlIGluIHRoZSB3b29kLCBhbmQgSm9uYXRoYW4gd2VudCB0byBoaXMgaG91c2UuClRoZW4gY2FtZSB1cCB0aGUgWmlwaGl0ZXMgdG8gU2F1bCB0byBHaWJlYWgsIHNheWluZywgRG90aCBub3QgRGF2aWQgaGlkZSBoaW1zZWxmIHdpdGggdXMgaW4gc3Ryb25nIGhvbGRzIGluIHRoZSB3b29kLCBpbiB0aGUgaGlsbCBvZiBIYWNoaWxhaCwgd2hpY2ggaXMgb24gdGhlIHNvdXRoIG9mIEplc2hpbW9uPwpOb3cgdGhlcmVmb3JlLCBPIGtpbmcsIGNvbWUgZG93biBhY2NvcmRpbmcgdG8gYWxsIHRoZSBkZXNpcmUgb2YgdGh5IHNvdWwgdG8gY29tZSBkb3duOyBhbmQgb3VyIHBhcnQgc2hhbGwgYmUgdG8gZGVsaXZlciBoaW0gaW50byB0aGUga2luZydzIGhhbmQuCkFuZCBTYXVsIHNhaWQsIEJsZXNzZWQgYmUgeWUgb2YgdGhlIExPUkQ7IGZvciB5ZSBoYXZlIGNvbXBhc3Npb24gb24gbWUuCkdvLCBJIHByYXkgeW91LCBwcmVwYXJlIHlldCwgYW5kIGtub3cgYW5kIHNlZSBoaXMgcGxhY2Ugd2hlcmUgaGlzIGhhdW50IGlzLCBhbmQgd2hvIGhhdGggc2VlbiBoaW0gdGhlcmU6IGZvciBpdCBpcyB0b2xkIG1lIHRoYXQgaGUgZGVhbGV0aCB2ZXJ5IHN1YnRpbGx5LgpTZWUgdGhlcmVmb3JlLCBhbmQgdGFrZSBrbm93bGVkZ2Ugb2YgYWxsIHRoZSBsdXJraW5nIHBsYWNlcyB3aGVyZSBoZSBoaWRldGggaGltc2VsZiwgYW5kIGNvbWUgeWUgYWdhaW4gdG8gbWUgd2l0aCB0aGUgY2VydGFpbnR5LCBhbmQgSSB3aWxsIGdvIHdpdGggeW91OiBhbmQgaXQgc2hhbGwgY29tZSB0byBwYXNzLCBpZiBoZSBiZSBpbiB0aGUgbGFuZCwgdGhhdCBJIHdpbGwgc2VhcmNoIGhpbSBvdXQgdGhyb3VnaG91dCBhbGwgdGhlIHRob3VzYW5kcyBvZiBKdWRhaC4KQW5kIHRoZXkgYXJvc2UsIGFuZCB3ZW50IHRvIFppcGggYmVmb3JlIFNhdWw6IGJ1dCBEYXZpZCBhbmQgaGlzIG1lbiB3ZXJlIGluIHRoZSB3aWxkZXJuZXNzIG9mIE1hb24sIGluIHRoZSBwbGFpbiBvbiB0aGUgc291dGggb2YgSmVzaGltb24uClNhdWwgYWxzbyBhbmQgaGlzIG1lbiB3ZW50IHRvIHNlZWsgaGltLiBBbmQgdGhleSB0b2xkIERhdmlkOyB3aGVyZWZvcmUgaGUgY2FtZSBkb3duIGludG8gYSByb2NrLCBhbmQgYWJvZGUgaW4gdGhlIHdpbGRlcm5lc3Mgb2YgTWFvbi4gQW5kIHdoZW4gU2F1bCBoZWFyZCB0aGF0LCBoZSBwdXJzdWVkIGFmdGVyIERhdmlkIGluIHRoZSB3aWxkZXJuZXNzIG9mIE1hb24uCkFuZCBTYXVsIHdlbnQgb24gdGhpcyBzaWRlIG9mIHRoZSBtb3VudGFpbiwgYW5kIERhdmlkIGFuZCBoaXMgbWVuIG9uIHRoYXQgc2lkZSBvZiB0aGUgbW91bnRhaW46IGFuZCBEYXZpZCBtYWRlIGhhc3RlIHRvIGdldCBhd2F5IGZvciBmZWFyIG9mIFNhdWw7IGZvciBTYXVsIGFuZCBoaXMgbWVuIGNvbXBhc3NlZCBEYXZpZCBhbmQgaGlzIG1lbiByb3VuZCBhYm91dCB0byB0YWtlIHRoZW0uCkJ1dCB0aGVyZSBjYW1lIGEgbWVzc2VuZ2VyIHVudG8gU2F1bCwgc2F5aW5nLCBIYXN0ZSB0aGVlLCBhbmQgY29tZTsgZm9yIHRoZSBQaGlsaXN0aW5lcyBoYXZlIGludmFkZWQgdGhlIGxhbmQuCldoZXJlZm9yZSBTYXVsIHJldHVybmVkIGZyb20gcHVyc3VpbmcgYWZ0ZXIgRGF2aWQsIGFuZCB3ZW50IGFnYWluc3QgdGhlIFBoaWxpc3RpbmVzOiB0aGVyZWZvcmUgdGhleSBjYWxsZWQgdGhhdCBwbGFjZSBTZWxhaGFtbWFobGVrb3RoLgpBbmQgRGF2aWQgd2VudCB1cCBmcm9tIHRoZW5jZSwgYW5kIGR3ZWx0IGluIHN0cm9uZyBob2xkcyBhdCBFbmdlZGkuCkFuZCBpdCBjYW1lIHRvIHBhc3MsIHdoZW4gU2F1bCB3YXMgcmV0dXJuZWQgZnJvbSBmb2xsb3dpbmcgdGhlIFBoaWxpc3RpbmVzLCB0aGF0IGl0IHdhcyB0b2xkIGhpbSwgc2F5aW5nLCBCZWhvbGQsIERhdmlkIGlzIGluIHRoZSB3aWxkZXJuZXNzIG9mIEVuZ2VkaS4KVGhlbiBTYXVsIHRvb2sgdGhyZWUgdGhvdXNhbmQgY2hvc2VuIG1lbiBvdXQgb2YgYWxsIElzcmFlbCwgYW5kIHdlbnQgdG8gc2VlayBEYXZpZCBhbmQgaGlzIG1lbiB1cG9uIHRoZSByb2NrcyBvZiB0aGUgd2lsZCBnb2F0cy4KQW5kIGhlIGNhbWUgdG8gdGhlIHNoZWVwY290ZXMgYnkgdGhlIHdheSwgd2hlcmUgd2FzIGEgY2F2ZTsgYW5kIFNhdWwgd2VudCBpbiB0byBjb3ZlciBoaXMgZmVldDogYW5kIERhdmlkIGFuZCBoaXMgbWVuIHJlbWFpbmVkIGluIHRoZSBzaWRlcyBvZiB0aGUgY2F2ZS4KQW5kIHRoZSBtZW4gb2YgRGF2aWQgc2FpZCB1bnRvIGhpbSwgQmVob2xkIHRoZSBkYXkgb2Ygd2hpY2ggdGhlIExPUkQgc2FpZCB1bnRvIHRoZWUsIEJlaG9sZCwgSSB3aWxsIGRlbGl2ZXIgdGhpbmUgZW5lbXkgaW50byB0aGluZSBoYW5kLCB0aGF0IHRob3UgbWF5ZXN0IGRvIHRvIGhpbSBhcyBpdCBzaGFsbCBzZWVtIGdvb2QgdW50byB0aGVlLiBUaGVuIERhdmlkIGFyb3NlLCBhbmQgY3V0IG9mZiB0aGUgc2tpcnQgb2YgU2F1bCdzIHJvYmUgcHJpdmlseS4KQW5kIGl0IGNhbWUgdG8gcGFzcyBhZnRlcndhcmQsIHRoYXQgRGF2aWQncyBoZWFydCBzbW90ZSBoaW0sIGJlY2F1c2UgaGUgaGFkIGN1dCBvZmYgU2F1bCdzIHNraXJ0LgpBbmQgaGUgc2FpZCB1bnRvIGhpcyBtZW4sIFRoZSBMT1JEIGZvcmJpZCB0aGF0IEkgc2hvdWxkIGRvIHRoaXMgdGhpbmcgdW50byBteSBtYXN0ZXIsIHRoZSBMT1JEJ3MgYW5vaW50ZWQsIHRvIHN0cmV0Y2ggZm9ydGggbWluZSBoYW5kIGFnYWluc3QgaGltLCBzZWVpbmcgaGUgaXMgdGhlIGFub2ludGVkIG9mIHRoZSBMT1JELgpTbyBEYXZpZCBzdGF5ZWQgaGlzIHNlcnZhbnRzIHdpdGggdGhlc2Ugd29yZHMsIGFuZCBzdWZmZXJlZCB0aGVtIG5vdCB0byByaXNlIGFnYWluc3QgU2F1bC4gQnV0IFNhdWwgcm9zZSB1cCBvdXQgb2YgdGhlIGNhdmUsIGFuZCB3ZW50IG9uIGhpcyB3YXkuCkRhdmlkIGFsc28gYXJvc2UgYWZ0ZXJ3YXJkLCBhbmQgd2VudCBvdXQgb2YgdGhlIGNhdmUsIGFuZCBjcmllZCBhZnRlciBTYXVsLCBzYXlpbmcsIE15IGxvcmQgdGhlIGtpbmcuIEFuZCB3aGVuIFNhdWwgbG9va2VkIGJlaGluZCBoaW0sIERhdmlkIHN0b29wZWQgd2l0aCBoaXMgZmFjZSB0byB0aGUgZWFydGgsIGFuZCBib3dlZCBoaW1zZWxmLgpBbmQgRGF2aWQgc2FpZCB0byBTYXVsLCBXaGVyZWZvcmUgaGVhcmVzdCB0aG91IG1lbidzIHdvcmRzLCBzYXlpbmcsIEJlaG9sZCwgRGF2aWQgc2Vla2V0aCB0aHkgaHVydD8KQmVob2xkLCB0aGlzIGRheSB0aGluZSBleWVzIGhhdmUgc2VlbiBob3cgdGhhdCB0aGUgTE9SRCBoYWQgZGVsaXZlcmVkIHRoZWUgdG8gZGF5IGludG8gbWluZSBoYW5kIGluIHRoZSBjYXZlOiBhbmQgc29tZSBiYWRlIG1lIGtpbGwgdGhlZTogYnV0IG1pbmUgZXllIHNwYXJlZCB0aGVlOyBhbmQgSSBzYWlkLCBJIHdpbGwgbm90IHB1dCBmb3J0aCBtaW5lIGhhbmQgYWdhaW5zdCBteSBsb3JkOyBmb3IgaGUgaXMgdGhlIExPUkQncyBhbm9pbnRlZC4KTW9yZW92ZXIsIG15IGZhdGhlciwgc2VlLCB5ZWEsIHNlZSB0aGUgc2tpcnQgb2YgdGh5IHJvYmUgaW4gbXkgaGFuZDogZm9yIGluIHRoYXQgSSBjdXQgb2ZmIHRoZSBza2lydCBvZiB0aHkgcm9iZSwgYW5kIGtpbGxlZCB0aGVlIG5vdCwga25vdyB0aG91IGFuZCBzZWUgdGhhdCB0aGVyZSBpcyBuZWl0aGVyIGV2aWwgbm9yIHRyYW5zZ3Jlc3Npb24gaW4gbWluZSBoYW5kLCBhbmQgSSBoYXZlIG5vdCBzaW5uZWQgYWdhaW5zdCB0aGVlOyB5ZXQgdGhvdSBodW50ZXN0IG15IHNvdWwgdG8gdGFrZSBpdC4KVGhlIExPUkQganVkZ2UgYmV0d2VlbiBtZSBhbmQgdGhlZSwgYW5kIHRoZSBMT1JEIGF2ZW5nZSBtZSBvZiB0aGVlOiBidXQgbWluZSBoYW5kIHNoYWxsIG5vdCBiZSB1cG9uIHRoZWUuCkFzIHNhaXRoIHRoZSBwcm92ZXJiIG9mIHRoZSBhbmNpZW50cywgV2lja2VkbmVzcyBwcm9jZWVkZXRoIGZyb20gdGhlIHdpY2tlZDogYnV0IG1pbmUgaGFuZCBzaGFsbCBub3QgYmUgdXBvbiB0aGVlLgpBZnRlciB3aG9tIGlzIHRoZSBraW5nIG9mIElzcmFlbCBjb21lIG91dD8gYWZ0ZXIgd2hvbSBkb3N0IHRob3UgcHVyc3VlPyBhZnRlciBhIGRlYWQgZG9nLCBhZnRlciBhIGZsZWEuClRoZSBMT1JEIHRoZXJlZm9yZSBiZSBqdWRnZSwgYW5kIGp1ZGdlIGJldHdlZW4gbWUgYW5kIHRoZWUsIGFuZCBzZWUsIGFuZCBwbGVhZCBteSBjYXVzZSwgYW5kIGRlbGl2ZXIgbWUgb3V0IG9mIHRoaW5lIGhhbmQuCkFuZCBpdCBjYW1lIHRvIHBhc3MsIHdoZW4gRGF2aWQgaGFkIG1hZGUgYW4gZW5kIG9mIHNwZWFraW5nIHRoZXNlIHdvcmRzIHVudG8gU2F1bCwgdGhhdCBTYXVsIHNhaWQsIElzIHRoaXMgdGh5IHZvaWNlLCBteSBzb24gRGF2aWQ/IEFuZCBTYXVsIGxpZnRlZCB1cCBoaXMgdm9pY2UsIGFuZCB3ZXB0LgpBbmQgaGUgc2FpZCB0byBEYXZpZCwgVGhvdSBhcnQgbW9yZSByaWdodGVvdXMgdGhhbiBJOiBmb3IgdGhvdSBoYXN0IHJld2FyZGVkIG1lIGdvb2QsIHdoZXJlYXMgSSBoYXZlIHJld2FyZGVkIHRoZWUgZXZpbC4KQW5kIHRob3UgaGFzdCBzaGV3ZWQgdGhpcyBkYXkgaG93IHRoYXQgdGhvdSBoYXN0IGRlYWx0IHdlbGwgd2l0aCBtZTogZm9yYXNtdWNoIGFzIHdoZW4gdGhlIExPUkQgaGFkIGRlbGl2ZXJlZCBtZSBpbnRvIHRoaW5lIGhhbmQsIHRob3Uga2lsbGVkc3QgbWUgbm90LgpGb3IgaWYgYSBtYW4gZmluZCBoaXMgZW5lbXksIHdpbGwgaGUgbGV0IGhpbSBnbyB3ZWxsIGF3YXk/IHdoZXJlZm9yZSB0aGUgTE9SRCByZXdhcmQgdGhlZSBnb29kIGZvciB0aGF0IHRob3UgaGFzdCBkb25lIHVudG8gbWUgdGhpcyBkYXkuCkFuZCBub3csIGJlaG9sZCwgSSBrbm93IHdlbGwgdGhhdCB0aG91IHNoYWx0IHN1cmVseSBiZSBraW5nLCBhbmQgdGhhdCB0aGUga2luZ2RvbSBvZiBJc3JhZWwgc2hhbGwgYmUgZXN0YWJsaXNoZWQgaW4gdGhpbmUgaGFuZC4KU3dlYXIgbm93IHRoZXJlZm9yZSB1bnRvIG1lIGJ5IHRoZSBMT1JELCB0aGF0IHRob3Ugd2lsdCBub3QgY3V0IG9mZiBteSBzZWVkIGFmdGVyIG1lLCBhbmQgdGhhdCB0aG91IHdpbHQgbm90IGRlc3Ryb3kgbXkgbmFtZSBvdXQgb2YgbXkgZmF0aGVyJ3MgaG91c2UuCkFuZCBEYXZpZCBzd2FyZSB1bnRvIFNhdWwuIEFuZCBTYXVsIHdlbnQgaG9tZTsgYnV0IERhdmlkIGFuZCBoaXMgbWVuIGdhdCB0aGVtIHVwIHVudG8gdGhlIGhvbGQuCkFuZCBTYW11ZWwgZGllZDsgYW5kIGFsbCB0aGUgSXNyYWVsaXRlcyB3ZXJlIGdhdGhlcmVkIHRvZ2V0aGVyLCBhbmQgbGFtZW50ZWQgaGltLCBhbmQgYnVyaWVkIGhpbSBpbiBoaXMgaG91c2UgYXQgUmFtYWguIEFuZCBEYXZpZCBhcm9zZSwgYW5kIHdlbnQgZG93biB0byB0aGUgd2lsZGVybmVzcyBvZiBQYXJhbi4KQW5kIHRoZXJlIHdhcyBhIG1hbiBpbiBNYW9uLCB3aG9zZSBwb3NzZXNzaW9ucyB3ZXJlIGluIENhcm1lbDsgYW5kIHRoZSBtYW4gd2FzIHZlcnkgZ3JlYXQsIGFuZCBoZSBoYWQgdGhyZWUgdGhvdXNhbmQgc2hlZXAsIGFuZCBhIHRob3VzYW5kIGdvYXRzOiBhbmQgaGUgd2FzIHNoZWFyaW5nIGhpcyBzaGVlcCBpbiBDYXJtZWwuCk5vdyB0aGUgbmFtZSBvZiB0aGUgbWFuIHdhcyBOYWJhbDsgYW5kIHRoZSBuYW1lIG9mIGhpcyB3aWZlIEFiaWdhaWw6IGFuZCBzaGUgd2FzIGEgd29tYW4gb2YgZ29vZCB1bmRlcnN0YW5kaW5nLCBhbmQgb2YgYSBiZWF1dGlmdWwgY291bnRlbmFuY2U6IGJ1dCB0aGUgbWFuIHdhcyBjaHVybGlzaCBhbmQgZXZpbCBpbiBoaXMgZG9pbmdzOyBhbmQgaGUgd2FzIG9mIHRoZSBob3VzZSBvZiBDYWxlYi4KQW5kIERhdmlkIGhlYXJkIGluIHRoZSB3aWxkZXJuZXNzIHRoYXQgTmFiYWwgZGlkIHNoZWFyIGhpcyBzaGVlcC4KQW5kIERhdmlkIHNlbnQgb3V0IHRlbiB5b3VuZyBtZW4sIGFuZCBEYXZpZCBzYWlkIHVudG8gdGhlIHlvdW5nIG1lbiwgR2V0IHlvdSB1cCB0byBDYXJtZWwsIGFuZCBnbyB0byBOYWJhbCwgYW5kIGdyZWV0IGhpbSBpbiBteSBuYW1lOgpBbmQgdGh1cyBzaGFsbCB5ZSBzYXkgdG8gaGltIHRoYXQgbGl2ZXRoIGluIHByb3NwZXJpdHksIFBlYWNlIGJlIGJvdGggdG8gdGhlZSwgYW5kIHBlYWNlIGJlIHRvIHRoaW5lIGhvdXNlLCBhbmQgcGVhY2UgYmUgdW50byBhbGwgdGhhdCB0aG91IGhhc3QuCkFuZCBub3cgSSBoYXZlIGhlYXJkIHRoYXQgdGhvdSBoYXN0IHNoZWFyZXJzOiBub3cgdGh5IHNoZXBoZXJkcyB3aGljaCB3ZXJlIHdpdGggdXMsIHdlIGh1cnQgdGhlbSBub3QsIG5laXRoZXIgd2FzIHRoZXJlIG91Z2h0IG1pc3NpbmcgdW50byB0aGVtLCBhbGwgdGhlIHdoaWxlIHRoZXkgd2VyZSBpbiBDYXJtZWwuCkFzayB0aHkgeW91bmcgbWVuLCBhbmQgdGhleSB3aWxsIHNoZXcgdGhlZS4gV2hlcmVmb3JlIGxldCB0aGUgeW91bmcgbWVuIGZpbmQgZmF2b3VyIGluIHRoaW5lIGV5ZXM6IGZvciB3ZSBjb21lIGluIGEgZ29vZCBkYXk6IGdpdmUsIEkgcHJheSB0aGVlLCB3aGF0c29ldmVyIGNvbWV0aCB0byB0aGluZSBoYW5kIHVudG8gdGh5IHNlcnZhbnRzLCBhbmQgdG8gdGh5IHNvbiBEYXZpZC4KQW5kIHdoZW4gRGF2aWQncyB5b3VuZyBtZW4gY2FtZSwgdGhleSBzcGFrZSB0byBOYWJhbCBhY2NvcmRpbmcgdG8gYWxsIHRob3NlIHdvcmRzIGluIHRoZSBuYW1lIG9mIERhdmlkLCBhbmQgY2Vhc2VkLgpBbmQgTmFiYWwgYW5zd2VyZWQgRGF2aWQncyBzZXJ2YW50cywgYW5kIHNhaWQsIFdobyBpcyBEYXZpZD8gYW5kIHdobyBpcyB0aGUgc29uIG9mIEplc3NlPyB0aGVyZSBiZSBtYW55IHNlcnZhbnRzIG5vdyBhIGRheXMgdGhhdCBicmVhayBhd2F5IGV2ZXJ5IG1hbiBmcm9tIGhpcyBtYXN0ZXIuClNoYWxsIEkgdGhlbiB0YWtlIG15IGJyZWFkLCBhbmQgbXkgd2F0ZXIsIGFuZCBteSBmbGVzaCB0aGF0IEkgaGF2ZSBraWxsZWQgZm9yIG15IHNoZWFyZXJzLCBhbmQgZ2l2ZSBpdCB1bnRvIG1lbiwgd2hvbSBJIGtub3cgbm90IHdoZW5jZSB0aGV5IGJlPwpTbyBEYXZpZCdzIHlvdW5nIG1lbiB0dXJuZWQgdGhlaXIgd2F5LCBhbmQgd2VudCBhZ2FpbiwgYW5kIGNhbWUgYW5kIHRvbGQgaGltIGFsbCB0aG9zZSBzYXlpbmdzLgpBbmQgRGF2aWQgc2FpZCB1bnRvIGhpcyBtZW4sIEdpcmQgeWUgb24gZXZlcnkgbWFuIGhpcyBzd29yZC4gQW5kIHRoZXkgZ2lyZGVkIG9uIGV2ZXJ5IG1hbiBoaXMgc3dvcmQ7IGFuZCBEYXZpZCBhbHNvIGdpcmRlZCBvbiBoaXMgc3dvcmQ6IGFuZCB0aGVyZSB3ZW50IHVwIGFmdGVyIERhdmlkIGFib3V0IGZvdXIgaHVuZHJlZCBtZW47IGFuZCB0d28gaHVuZHJlZCBhYm9kZSBieSB0aGUgc3R1ZmYuCkJ1dCBvbmUgb2YgdGhlIHlvdW5nIG1lbiB0b2xkIEFiaWdhaWwsIE5hYmFsJ3Mgd2lmZSwgc2F5aW5nLCBCZWhvbGQsIERhdmlkIHNlbnQgbWVzc2VuZ2VycyBvdXQgb2YgdGhlIHdpbGRlcm5lc3MgdG8gc2FsdXRlIG91ciBtYXN0ZXI7IGFuZCBoZSByYWlsZWQgb24gdGhlbS4KQnV0IHRoZSBtZW4gd2VyZSB2ZXJ5IGdvb2QgdW50byB1cywgYW5kIHdlIHdlcmUgbm90IGh1cnQsIG5laXRoZXIgbWlzc2VkIHdlIGFueSB0aGluZywgYXMgbG9uZyBhcyB3ZSB3ZXJlIGNvbnZlcnNhbnQgd2l0aCB0aGVtLCB3aGVuIHdlIHdlcmUgaW4gdGhlIGZpZWxkczoKVGhleSB3ZXJlIGEgd2FsbCB1bnRvIHVzIGJvdGggYnkgbmlnaHQgYW5kIGRheSwgYWxsIHRoZSB3aGlsZSB3ZSB3ZXJlIHdpdGggdGhlbSBrZWVwaW5nIHRoZSBzaGVlcC4KTm93IHRoZXJlZm9yZSBrbm93IGFuZCBjb25zaWRlciB3aGF0IHRob3Ugd2lsdCBkbzsgZm9yIGV2aWwgaXMgZGV0ZXJtaW5lZCBhZ2FpbnN0IG91ciBtYXN0ZXIsIGFuZCBhZ2FpbnN0IGFsbCBoaXMgaG91c2Vob2xkOiBmb3IgaGUgaXMgc3VjaCBhIHNvbiBvZiBCZWxpYWwsIHRoYXQgYSBtYW4gY2Fubm90IHNwZWFrIHRvIGhpbS4KVGhlbiBBYmlnYWlsIG1hZGUgaGFzdGUsIGFuZCB0b29rIHR3byBodW5kcmVkIGxvYXZlcywgYW5kIHR3byBib3R0bGVzIG9mIHdpbmUsIGFuZCBmaXZlIHNoZWVwIHJlYWR5IGRyZXNzZWQsIGFuZCBmaXZlIG1lYXN1cmVzIG9mIHBhcmNoZWQgY29ybiwgYW5kIGFuIGh1bmRyZWQgY2x1c3RlcnMgb2YgcmFpc2lucywgYW5kIHR3byBodW5kcmVkIGNha2VzIG9mIGZpZ3MsIGFuZCBsYWlkIHRoZW0gb24gYXNzZXMuCkFuZCBzaGUgc2FpZCB1bnRvIGhlciBzZXJ2YW50cywgR28gb24gYmVmb3JlIG1lOyBiZWhvbGQsIEkgY29tZSBhZnRlciB5b3UuIEJ1dCBzaGUgdG9sZCBub3QgaGVyIGh1c2JhbmQgTmFiYWwuCkFuZCBpdCB3YXMgc28sIGFzIHNoZSByb2RlIG9uIHRoZSBhc3MsIHRoYXQgc2hlIGNhbWUgZG93biBieSB0aGUgY292ZXJ0IG9uIHRoZSBoaWxsLCBhbmQsIGJlaG9sZCwgRGF2aWQgYW5kIGhpcyBtZW4gY2FtZSBkb3duIGFnYWluc3QgaGVyOyBhbmQgc2hlIG1ldCB0aGVtLgpOb3cgRGF2aWQgaGFkIHNhaWQsIFN1cmVseSBpbiB2YWluIGhhdmUgSSBrZXB0IGFsbCB0aGF0IHRoaXMgZmVsbG93IGhhdGggaW4gdGhlIHdpbGRlcm5lc3MsIHNvIHRoYXQgbm90aGluZyB3YXMgbWlzc2VkIG9mIGFsbCB0aGF0IHBlcnRhaW5lZCB1bnRvIGhpbTogYW5kIGhlIGhhdGggcmVxdWl0ZWQgbWUgZXZpbCBmb3IgZ29vZC4KU28gYW5kIG1vcmUgYWxzbyBkbyBHb2QgdW50byB0aGUgZW5lbWllcyBvZiBEYXZpZCwgaWYgSSBsZWF2ZSBvZiBhbGwgdGhhdCBwZXJ0YWluIHRvIGhpbSBieSB0aGUgbW9ybmluZyBsaWdodCBhbnkgdGhhdCBwaXNzZXRoIGFnYWluc3QgdGhlIHdhbGwuCkFuZCB3aGVuIEFiaWdhaWwgc2F3IERhdmlkLCBzaGUgaGFzdGVkLCBhbmQgbGlnaHRlZCBvZmYgdGhlIGFzcywgYW5kIGZlbGwgYmVmb3JlIERhdmlkIG9uIGhlciBmYWNlLCBhbmQgYm93ZWQgaGVyc2VsZiB0byB0aGUgZ3JvdW5kLApBbmQgZmVsbCBhdCBoaXMgZmVldCwgYW5kIHNhaWQsIFVwb24gbWUsIG15IGxvcmQsIHVwb24gbWUgbGV0IHRoaXMgaW5pcXVpdHkgYmU6IGFuZCBsZXQgdGhpbmUgaGFuZG1haWQsIEkgcHJheSB0aGVlLCBzcGVhayBpbiB0aGluZSBhdWRpZW5jZSwgYW5kIGhlYXIgdGhlIHdvcmRzIG9mIHRoaW5lIGhhbmRtYWlkLgpMZXQgbm90IG15IGxvcmQsIEkgcHJheSB0aGVlLCByZWdhcmQgdGhpcyBtYW4gb2YgQmVsaWFsLCBldmVuIE5hYmFsOiBmb3IgYXMgaGlzIG5hbWUgaXMsIHNvIGlzIGhlOyBOYWJhbCBpcyBoaXMgbmFtZSwgYW5kIGZvbGx5IGlzIHdpdGggaGltOiBidXQgSSB0aGluZSBoYW5kbWFpZCBzYXcgbm90IHRoZSB5b3VuZyBtZW4gb2YgbXkgbG9yZCwgd2hvbSB0aG91IGRpZHN0IHNlbmQuCk5vdyB0aGVyZWZvcmUsIG15IGxvcmQsIGFzIHRoZSBMT1JEIGxpdmV0aCwgYW5kIGFzIHRoeSBzb3VsIGxpdmV0aCwgc2VlaW5nIHRoZSBMT1JEIGhhdGggd2l0aGhvbGRlbiB0aGVlIGZyb20gY29taW5nIHRvIHNoZWQgYmxvb2QsIGFuZCBmcm9tIGF2ZW5naW5nIHRoeXNlbGYgd2l0aCB0aGluZSBvd24gaGFuZCwgbm93IGxldCB0aGluZSBlbmVtaWVzLCBhbmQgdGhleSB0aGF0IHNlZWsgZXZpbCB0byBteSBsb3JkLCBiZSBhcyBOYWJhbC4KQW5kIG5vdyB0aGlzIGJsZXNzaW5nIHdoaWNoIHRoaW5lIGhhbmRtYWlkIGhhdGggYnJvdWdodCB1bnRvIG15IGxvcmQsIGxldCBpdCBldmVuIGJlIGdpdmVuIHVudG8gdGhlIHlvdW5nIG1lbiB0aGF0IGZvbGxvdyBteSBsb3JkLgpJIHByYXkgdGhlZSwgZm9yZ2l2ZSB0aGUgdHJlc3Bhc3Mgb2YgdGhpbmUgaGFuZG1haWQ6IGZvciB0aGUgTE9SRCB3aWxsIGNlcnRhaW5seSBtYWtlIG15IGxvcmQgYSBzdXJlIGhvdXNlOyBiZWNhdXNlIG15IGxvcmQgZmlnaHRldGggdGhlIGJhdHRsZXMgb2YgdGhlIExPUkQsIGFuZCBldmlsIGhhdGggbm90IGJlZW4gZm91bmQgaW4gdGhlZSBhbGwgdGh5IGRheXMuCllldCBhIG1hbiBpcyByaXNlbiB0byBwdXJzdWUgdGhlZSwgYW5kIHRvIHNlZWsgdGh5IHNvdWw6IGJ1dCB0aGUgc291bCBvZiBteSBsb3JkIHNoYWxsIGJlIGJvdW5kIGluIHRoZSBidW5kbGUgb2YgbGlmZSB3aXRoIHRoZSBMT1JEIHRoeSBHb2Q7IGFuZCB0aGUgc291bHMgb2YgdGhpbmUgZW5lbWllcywgdGhlbSBzaGFsbCBoZSBzbGluZyBvdXQsIGFzIG91dCBvZiB0aGUgbWlkZGxlIG9mIGEgc2xpbmcuCkFuZCBpdCBzaGFsbCBjb21lIHRvIHBhc3MsIHdoZW4gdGhlIExPUkQgc2hhbGwgaGF2ZSBkb25lIHRvIG15IGxvcmQgYWNjb3JkaW5nIHRvIGFsbCB0aGUgZ29vZCB0aGF0IGhlIGhhdGggc3Bva2VuIGNvbmNlcm5pbmcgdGhlZSwgYW5kIHNoYWxsIGhhdmUgYXBwb2ludGVkIHRoZWUgcnVsZXIgb3ZlciBJc3JhZWw7ClRoYXQgdGhpcyBzaGFsbCBiZSBubyBncmllZiB1bnRvIHRoZWUsIG5vciBvZmZlbmNlIG9mIGhlYXJ0IHVudG8gbXkgbG9yZCwgZWl0aGVyIHRoYXQgdGhvdSBoYXN0IHNoZWQgYmxvb2QgY2F1c2VsZXNzLCBvciB0aGF0IG15IGxvcmQgaGF0aCBhdmVuZ2VkIGhpbXNlbGY6IGJ1dCB3aGVuIHRoZSBMT1JEIHNoYWxsIGhhdmUgZGVhbHQgd2VsbCB3aXRoIG15IGxvcmQsIHRoZW4gcmVtZW1iZXIgdGhpbmUgaGFuZG1haWQuCkFuZCBEYXZpZCBzYWlkIHRvIEFiaWdhaWwsIEJsZXNzZWQgYmUgdGhlIExPUkQgR29kIG9mIElzcmFlbCwgd2hpY2ggc2VudCB0aGVlIHRoaXMgZGF5IHRvIG1lZXQgbWU6CkFuZCBibGVzc2VkIGJlIHRoeSBhZHZpY2UsIGFuZCBibGVzc2VkIGJlIHRob3UsIHdoaWNoIGhhc3Qga2VwdCBtZSB0aGlzIGRheSBmcm9tIGNvbWluZyB0byBzaGVkIGJsb29kLCBhbmQgZnJvbSBhdmVuZ2luZyBteXNlbGYgd2l0aCBtaW5lIG93biBoYW5kLgpGb3IgaW4gdmVyeSBkZWVkLCBhcyB0aGUgTE9SRCBHb2Qgb2YgSXNyYWVsIGxpdmV0aCwgd2hpY2ggaGF0aCBrZXB0IG1lIGJhY2sgZnJvbSBodXJ0aW5nIHRoZWUsIGV4Y2VwdCB0aG91IGhhZHN0IGhhc3RlZCBhbmQgY29tZSB0byBtZWV0IG1lLCBzdXJlbHkgdGhlcmUgaGFkIG5vdCBiZWVuIGxlZnQgdW50byBOYWJhbCBieSB0aGUgbW9ybmluZyBsaWdodCBhbnkgdGhhdCBwaXNzZXRoIGFnYWluc3QgdGhlIHdhbGwuClNvIERhdmlkIHJlY2VpdmVkIG9mIGhlciBoYW5kIHRoYXQgd2hpY2ggc2hlIGhhZCBicm91Z2h0IGhpbSwgYW5kIHNhaWQgdW50byBoZXIsIEdvIHVwIGluIHBlYWNlIHRvIHRoaW5lIGhvdXNlOyBzZWUsIEkgaGF2ZSBoZWFya2VuZWQgdG8gdGh5IHZvaWNlLCBhbmQgaGF2ZSBhY2NlcHRlZCB0aHkgcGVyc29uLgpBbmQgQWJpZ2FpbCBjYW1lIHRvIE5hYmFsOyBhbmQsIGJlaG9sZCwgaGUgaGVsZCBhIGZlYXN0IGluIGhpcyBob3VzZSwgbGlrZSB0aGUgZmVhc3Qgb2YgYSBraW5nOyBhbmQgTmFiYWwncyBoZWFydCB3YXMgbWVycnkgd2l0aGluIGhpbSwgZm9yIGhlIHdhcyB2ZXJ5IGRydW5rZW46IHdoZXJlZm9yZSBzaGUgdG9sZCBoaW0gbm90aGluZywgbGVzcyBvciBtb3JlLCB1bnRpbCB0aGUgbW9ybmluZyBsaWdodC4KQnV0IGl0IGNhbWUgdG8gcGFzcyBpbiB0aGUgbW9ybmluZywgd2hlbiB0aGUgd2luZSB3YXMgZ29uZSBvdXQgb2YgTmFiYWwsIGFuZCBoaXMgd2lmZSBoYWQgdG9sZCBoaW0gdGhlc2UgdGhpbmdzLCB0aGF0IGhpcyBoZWFydCBkaWVkIHdpdGhpbiBoaW0sIGFuZCBoZSBiZWNhbWUgYXMgYSBzdG9uZS4KQW5kIGl0IGNhbWUgdG8gcGFzcyBhYm91dCB0ZW4gZGF5cyBhZnRlciwgdGhhdCB0aGUgTE9SRCBzbW90ZSBOYWJhbCwgdGhhdCBoZSBkaWVkLgpBbmQgd2hlbiBEYXZpZCBoZWFyZCB0aGF0IE5hYmFsIHdhcyBkZWFkLCBoZSBzYWlkLCBCbGVzc2VkIGJlIHRoZSBMT1JELCB0aGF0IGhhdGggcGxlYWRlZCB0aGUgY2F1c2Ugb2YgbXkgcmVwcm9hY2ggZnJvbSB0aGUgaGFuZCBvZiBOYWJhbCwgYW5kIGhhdGgga2VwdCBoaXMgc2VydmFudCBmcm9tIGV2aWw6IGZvciB0aGUgTE9SRCBoYXRoIHJldHVybmVkIHRoZSB3aWNrZWRuZXNzIG9mIE5hYmFsIHVwb24gaGlzIG93biBoZWFkLiBBbmQgRGF2aWQgc2VudCBhbmQgY29tbXVuZWQgd2l0aCBBYmlnYWlsLCB0byB0YWtlIGhlciB0byBoaW0gdG8gd2lmZS4KQW5kIHdoZW4gdGhlIHNlcnZhbnRzIG9mIERhdmlkIHdlcmUgY29tZSB0byBBYmlnYWlsIHRvIENhcm1lbCwgdGhleSBzcGFrZSB1bnRvIGhlciwgc2F5aW5nLCBEYXZpZCBzZW50IHVzIHVudG8gdGhlZSwgdG8gdGFrZSB0aGVlIHRvIGhpbSB0byB3aWZlLgpBbmQgc2hlIGFyb3NlLCBhbmQgYm93ZWQgaGVyc2VsZiBvbiBoZXIgZmFjZSB0byB0aGUgZWFydGgsIGFuZCBzYWlkLCBCZWhvbGQsIGxldCB0aGluZSBoYW5kbWFpZCBiZSBhIHNlcnZhbnQgdG8gd2FzaCB0aGUgZmVldCBvZiB0aGUgc2VydmFudHMgb2YgbXkgbG9yZC4KQW5kIEFiaWdhaWwgaGFzdGVkLCBhbmQgYXJvc2UgYW5kIHJvZGUgdXBvbiBhbiBhc3MsIHdpdGggZml2ZSBkYW1zZWxzIG9mIGhlcnMgdGhhdCB3ZW50IGFmdGVyIGhlcjsgYW5kIHNoZSB3ZW50IGFmdGVyIHRoZSBtZXNzZW5nZXJzIG9mIERhdmlkLCBhbmQgYmVjYW1lIGhpcyB3aWZlLgpEYXZpZCBhbHNvIHRvb2sgQWhpbm9hbSBvZiBKZXpyZWVsOyBhbmQgdGhleSB3ZXJlIGFsc28gYm90aCBvZiB0aGVtIGhpcyB3aXZlcy4KQnV0IFNhdWwgaGFkIGdpdmVuIE1pY2hhbCBoaXMgZGF1Z2h0ZXIsIERhdmlkJ3Mgd2lmZSwgdG8gUGhhbHRpIHRoZSBzb24gb2YgTGFpc2gsIHdoaWNoIHdhcyBvZiBHYWxsaW0uCkFuZCB0aGUgWmlwaGl0ZXMgY2FtZSB1bnRvIFNhdWwgdG8gR2liZWFoLCBzYXlpbmcsIERvdGggbm90IERhdmlkIGhpZGUgaGltc2VsZiBpbiB0aGUgaGlsbCBvZiBIYWNoaWxhaCwgd2hpY2ggaXMgYmVmb3JlIEplc2hpbW9uPwpUaGVuIFNhdWwgYXJvc2UsIGFuZCB3ZW50IGRvd24gdG8gdGhlIHdpbGRlcm5lc3Mgb2YgWmlwaCwgaGF2aW5nIHRocmVlIHRob3VzYW5kIGNob3NlbiBtZW4gb2YgSXNyYWVsIHdpdGggaGltLCB0byBzZWVrIERhdmlkIGluIHRoZSB3aWxkZXJuZXNzIG9mIFppcGguCkFuZCBTYXVsIHBpdGNoZWQgaW4gdGhlIGhpbGwgb2YgSGFjaGlsYWgsIHdoaWNoIGlzIGJlZm9yZSBKZXNoaW1vbiwgYnkgdGhlIHdheS4gQnV0IERhdmlkIGFib2RlIGluIHRoZSB3aWxkZXJuZXNzLCBhbmQgaGUgc2F3IHRoYXQgU2F1bCBjYW1lIGFmdGVyIGhpbSBpbnRvIHRoZSB3aWxkZXJuZXNzLgpEYXZpZCB0aGVyZWZvcmUgc2VudCBvdXQgc3BpZXMsIGFuZCB1bmRlcnN0b29kIHRoYXQgU2F1bCB3YXMgY29tZSBpbiB2ZXJ5IGRlZWQuCkFuZCBEYXZpZCBhcm9zZSwgYW5kIGNhbWUgdG8gdGhlIHBsYWNlIHdoZXJlIFNhdWwgaGFkIHBpdGNoZWQ6IGFuZCBEYXZpZCBiZWhlbGQgdGhlIHBsYWNlIHdoZXJlIFNhdWwgbGF5LCBhbmQgQWJuZXIgdGhlIHNvbiBvZiBOZXIsIHRoZSBjYXB0YWluIG9mIGhpcyBob3N0OiBhbmQgU2F1bCBsYXkgaW4gdGhlIHRyZW5jaCwgYW5kIHRoZSBwZW9wbGUgcGl0Y2hlZCByb3VuZCBhYm91dCBoaW0uClRoZW4gYW5zd2VyZWQgRGF2aWQgYW5kIHNhaWQgdG8gQWhpbWVsZWNoIHRoZSBIaXR0aXRlLCBhbmQgdG8gQWJpc2hhaSB0aGUgc29uIG9mIFplcnVpYWgsIGJyb3RoZXIgdG8gSm9hYiwgc2F5aW5nLCBXaG8gd2lsbCBnbyBkb3duIHdpdGggbWUgdG8gU2F1bCB0byB0aGUgY2FtcD8gQW5kIEFiaXNoYWkgc2FpZCwgSSB3aWxsIGdvIGRvd24gd2l0aCB0aGVlLgpTbyBEYXZpZCBhbmQgQWJpc2hhaSBjYW1lIHRvIHRoZSBwZW9wbGUgYnkgbmlnaHQ6IGFuZCwgYmVob2xkLCBTYXVsIGxheSBzbGVlcGluZyB3aXRoaW4gdGhlIHRyZW5jaCwgYW5kIGhpcyBzcGVhciBzdHVjayBpbiB0aGUgZ3JvdW5kIGF0IGhpcyBib2xzdGVyOiBidXQgQWJuZXIgYW5kIHRoZSBwZW9wbGUgbGF5IHJvdW5kIGFib3V0IGhpbS4KVGhlbiBzYWlkIEFiaXNoYWkgdG8gRGF2aWQsIEdvZCBoYXRoIGRlbGl2ZXJlZCB0aGluZSBlbmVteSBpbnRvIHRoaW5lIGhhbmQgdGhpcyBkYXk6IG5vdyB0aGVyZWZvcmUgbGV0IG1lIHNtaXRlIGhpbSwgSSBwcmF5IHRoZWUsIHdpdGggdGhlIHNwZWFyIGV2ZW4gdG8gdGhlIGVhcnRoIGF0IG9uY2UsIGFuZCBJIHdpbGwgbm90IHNtaXRlIGhpbSB0aGUgc2Vjb25kIHRpbWUuCkFuZCBEYXZpZCBzYWlkIHRvIEFiaXNoYWksIERlc3Ryb3kgaGltIG5vdDogZm9yIHdobyBjYW4gc3RyZXRjaCBmb3J0aCBoaXMgaGFuZCBhZ2FpbnN0IHRoZSBMT1JEJ3MgYW5vaW50ZWQsIGFuZCBiZSBndWlsdGxlc3M/CkRhdmlkIHNhaWQgZnVydGhlcm1vcmUsIEFzIHRoZSBMT1JEIGxpdmV0aCwgdGhlIExPUkQgc2hhbGwgc21pdGUgaGltOyBvciBoaXMgZGF5IHNoYWxsIGNvbWUgdG8gZGllOyBvciBoZSBzaGFsbCBkZXNjZW5kIGludG8gYmF0dGxlLCBhbmQgcGVyaXNoLgpUaGUgTE9SRCBmb3JiaWQgdGhhdCBJIHNob3VsZCBzdHJldGNoIGZvcnRoIG1pbmUgaGFuZCBhZ2FpbnN0IHRoZSBMT1JEJ3MgYW5vaW50ZWQ6IGJ1dCwgSSBwcmF5IHRoZWUsIHRha2UgdGhvdSBub3cgdGhlIHNwZWFyIHRoYXQgaXMgYXQgaGlzIGJvbHN0ZXIsIGFuZCB0aGUgY3J1c2Ugb2Ygd2F0ZXIsIGFuZCBsZXQgdXMgZ28uClNvIERhdmlkIHRvb2sgdGhlIHNwZWFyIGFuZCB0aGUgY3J1c2Ugb2Ygd2F0ZXIgZnJvbSBTYXVsJ3MgYm9sc3RlcjsgYW5kIHRoZXkgZ2F0IHRoZW0gYXdheSwgYW5kIG5vIG1hbiBzYXcgaXQsIG5vciBrbmV3IGl0LCBuZWl0aGVyIGF3YWtlZDogZm9yIHRoZXkgd2VyZSBhbGwgYXNsZWVwOyBiZWNhdXNlIGEgZGVlcCBzbGVlcCBmcm9tIHRoZSBMT1JEIHdhcyBmYWxsZW4gdXBvbiB0aGVtLgpUaGVuIERhdmlkIHdlbnQgb3ZlciB0byB0aGUgb3RoZXIgc2lkZSwgYW5kIHN0b29kIG9uIHRoZSB0b3Agb2YgYW4gaGlsbCBhZmFyIG9mZjsgYSBncmVhdCBzcGFjZSBiZWluZyBiZXR3ZWVuIHRoZW06CkFuZCBEYXZpZCBjcmllZCB0byB0aGUgcGVvcGxlLCBhbmQgdG8gQWJuZXIgdGhlIHNvbiBvZiBOZXIsIHNheWluZywgQW5zd2VyZXN0IHRob3Ugbm90LCBBYm5lcj8gVGhlbiBBYm5lciBhbnN3ZXJlZCBhbmQgc2FpZCwgV2hvIGFydCB0aG91IHRoYXQgY3JpZXN0IHRvIHRoZSBraW5nPwpBbmQgRGF2aWQgc2FpZCB0byBBYm5lciwgQXJ0IG5vdCB0aG91IGEgdmFsaWFudCBtYW4/IGFuZCB3aG8gaXMgbGlrZSB0byB0aGVlIGluIElzcmFlbD8gd2hlcmVmb3JlIHRoZW4gaGFzdCB0aG91IG5vdCBrZXB0IHRoeSBsb3JkIHRoZSBraW5nPyBmb3IgdGhlcmUgY2FtZSBvbmUgb2YgdGhlIHBlb3BsZSBpbiB0byBkZXN0cm95IHRoZSBraW5nIHRoeSBsb3JkLgpUaGlzIHRoaW5nIGlzIG5vdCBnb29kIHRoYXQgdGhvdSBoYXN0IGRvbmUuIEFzIHRoZSBMT1JEIGxpdmV0aCwgeWUgYXJlIHdvcnRoeSB0byBkaWUsIGJlY2F1c2UgeWUgaGF2ZSBub3Qga2VwdCB5b3VyIG1hc3RlciwgdGhlIExPUkQncyBhbm9pbnRlZC4gQW5kIG5vdyBzZWUgd2hlcmUgdGhlIGtpbmcncyBzcGVhciBpcywgYW5kIHRoZSBjcnVzZSBvZiB3YXRlciB0aGF0IHdhcyBhdCBoaXMgYm9sc3Rlci4KQW5kIFNhdWwga25ldyBEYXZpZCdzIHZvaWNlLCBhbmQgc2FpZCwgSXMgdGhpcyB0aHkgdm9pY2UsIG15IHNvbiBEYXZpZD8gQW5kIERhdmlkIHNhaWQsIEl0IGlzIG15IHZvaWNlLCBteSBsb3JkLCBPIGtpbmcuCkFuZCBoZSBzYWlkLCBXaGVyZWZvcmUgZG90aCBteSBsb3JkIHRodXMgcHVyc3VlIGFmdGVyIGhpcyBzZXJ2YW50PyBmb3Igd2hhdCBoYXZlIEkgZG9uZT8gb3Igd2hhdCBldmlsIGlzIGluIG1pbmUgaGFuZD8KTm93IHRoZXJlZm9yZSwgSSBwcmF5IHRoZWUsIGxldCBteSBsb3JkIHRoZSBraW5nIGhlYXIgdGhlIHdvcmRzIG9mIGhpcyBzZXJ2YW50LiBJZiB0aGUgTE9SRCBoYXZlIHN0aXJyZWQgdGhlZSB1cCBhZ2FpbnN0IG1lLCBsZXQgaGltIGFjY2VwdCBhbiBvZmZlcmluZzogYnV0IGlmIHRoZXkgYmUgdGhlIGNoaWxkcmVuIG9mIG1lbiwgY3Vyc2VkIGJlIHRoZXkgYmVmb3JlIHRoZSBMT1JEOyBmb3IgdGhleSBoYXZlIGRyaXZlbiBtZSBvdXQgdGhpcyBkYXkgZnJvbSBhYmlkaW5nIGluIHRoZSBpbmhlcml0YW5jZSBvZiB0aGUgTE9SRCwgc2F5aW5nLCBHbywgc2VydmUgb3RoZXIgZ29kcy4KTm93IHRoZXJlZm9yZSwgbGV0IG5vdCBteSBibG9vZCBmYWxsIHRvIHRoZSBlYXJ0aCBiZWZvcmUgdGhlIGZhY2Ugb2YgdGhlIExPUkQ6IGZvciB0aGUga2luZyBvZiBJc3JhZWwgaXMgY29tZSBvdXQgdG8gc2VlayBhIGZsZWEsIGFzIHdoZW4gb25lIGRvdGggaHVudCBhIHBhcnRyaWRnZSBpbiB0aGUgbW91bnRhaW5zLgpUaGVuIHNhaWQgU2F1bCwgSSBoYXZlIHNpbm5lZDogcmV0dXJuLCBteSBzb24gRGF2aWQ6IGZvciBJIHdpbGwgbm8gbW9yZSBkbyB0aGVlIGhhcm0sIGJlY2F1c2UgbXkgc291bCB3YXMgcHJlY2lvdXMgaW4gdGhpbmUgZXllcyB0aGlzIGRheTogYmVob2xkLCBJIGhhdmUgcGxheWVkIHRoZSBmb29sLCBhbmQgaGF2ZSBlcnJlZCBleGNlZWRpbmdseS4KQW5kIERhdmlkIGFuc3dlcmVkIGFuZCBzYWlkLCBCZWhvbGQgdGhlIGtpbmcncyBzcGVhciEgYW5kIGxldCBvbmUgb2YgdGhlIHlvdW5nIG1lbiBjb21lIG92ZXIgYW5kIGZldGNoIGl0LgpUaGUgTE9SRCByZW5kZXIgdG8gZXZlcnkgbWFuIGhpcyByaWdodGVvdXNuZXNzIGFuZCBoaXMgZmFpdGhmdWxuZXNzOyBmb3IgdGhlIExPUkQgZGVsaXZlcmVkIHRoZWUgaW50byBteSBoYW5kIHRvIGRheSwgYnV0IEkgd291bGQgbm90IHN0cmV0Y2ggZm9ydGggbWluZSBoYW5kIGFnYWluc3QgdGhlIExPUkQncyBhbm9pbnRlZC4KQW5kLCBiZWhvbGQsIGFzIHRoeSBsaWZlIHdhcyBtdWNoIHNldCBieSB0aGlzIGRheSBpbiBtaW5lIGV5ZXMsIHNvIGxldCBteSBsaWZlIGJlIG11Y2ggc2V0IGJ5IGluIHRoZSBleWVzIG9mIHRoZSBMT1JELCBhbmQgbGV0IGhpbSBkZWxpdmVyIG1lIG91dCBvZiBhbGwgdHJpYnVsYXRpb24uClRoZW4gU2F1bCBzYWlkIHRvIERhdmlkLCBCbGVzc2VkIGJlIHRob3UsIG15IHNvbiBEYXZpZDogdGhvdSBzaGFsdCBib3RoIGRvIGdyZWF0IHRoaW5ncywgYW5kIGFsc28gc2hhbHQgc3RpbGwgcHJldmFpbC4gU28gRGF2aWQgd2VudCBvbiBoaXMgd2F5LCBhbmQgU2F1bCByZXR1cm5lZCB0byBoaXMgcGxhY2UuCkFuZCBEYXZpZCBzYWlkIGluIGhpcyBoZWFydCwgSSBzaGFsbCBub3cgcGVyaXNoIG9uZSBkYXkgYnkgdGhlIGhhbmQgb2YgU2F1bDogdGhlcmUgaXMgbm90aGluZyBiZXR0ZXIgZm9yIG1lIHRoYW4gdGhhdCBJIHNob3VsZCBzcGVlZGlseSBlc2NhcGUgaW50byB0aGUgbGFuZCBvZiB0aGUgUGhpbGlzdGluZXM7IGFuZCBTYXVsIHNoYWxsIGRlc3BhaXIgb2YgbWUsIHRvIHNlZWsgbWUgYW55IG1vcmUgaW4gYW55IGNvYXN0IG9mIElzcmFlbDogc28gc2hhbGwgSSBlc2NhcGUgb3V0IG9mIGhpcyBoYW5kLgpBbmQgRGF2aWQgYXJvc2UsIGFuZCBoZSBwYXNzZWQgb3ZlciB3aXRoIHRoZSBzaXggaHVuZHJlZCBtZW4gdGhhdCB3ZXJlIHdpdGggaGltIHVudG8gQWNoaXNoLCB0aGUgc29uIG9mIE1hb2NoLCBraW5nIG9mIEdhdGguCkFuZCBEYXZpZCBkd2VsdCB3aXRoIEFjaGlzaCBhdCBHYXRoLCBoZSBhbmQgaGlzIG1lbiwgZXZlcnkgbWFuIHdpdGggaGlzIGhvdXNlaG9sZCwgZXZlbiBEYXZpZCB3aXRoIGhpcyB0d28gd2l2ZXMsIEFoaW5vYW0gdGhlIEplenJlZWxpdGVzcywgYW5kIEFiaWdhaWwgdGhlIENhcm1lbGl0ZXNzLCBOYWJhbCdzIHdpZmUuCkFuZCBpdCB3YXMgdG9sZCBTYXVsIHRoYXQgRGF2aWQgd2FzIGZsZWQgdG8gR2F0aDogYW5kIGhlIHNvdWdodCBubyBtb3JlIGFnYWluIGZvciBoaW0uCkFuZCBEYXZpZCBzYWlkIHVudG8gQWNoaXNoLCBJZiBJIGhhdmUgbm93IGZvdW5kIGdyYWNlIGluIHRoaW5lIGV5ZXMsIGxldCB0aGVtIGdpdmUgbWUgYSBwbGFjZSBpbiBzb21lIHRvd24gaW4gdGhlIGNvdW50cnksIHRoYXQgSSBtYXkgZHdlbGwgdGhlcmU6IGZvciB3aHkgc2hvdWxkIHRoeSBzZXJ2YW50IGR3ZWxsIGluIHRoZSByb3lhbCBjaXR5IHdpdGggdGhlZT8KVGhlbiBBY2hpc2ggZ2F2ZSBoaW0gWmlrbGFnIHRoYXQgZGF5OiB3aGVyZWZvcmUgWmlrbGFnIHBlcnRhaW5ldGggdW50byB0aGUga2luZ3Mgb2YgSnVkYWggdW50byB0aGlzIGRheS4KQW5kIHRoZSB0aW1lIHRoYXQgRGF2aWQgZHdlbHQgaW4gdGhlIGNvdW50cnkgb2YgdGhlIFBoaWxpc3RpbmVzIHdhcyBhIGZ1bGwgeWVhciBhbmQgZm91ciBtb250aHMuCkFuZCBEYXZpZCBhbmQgaGlzIG1lbiB3ZW50IHVwLCBhbmQgaW52YWRlZCB0aGUgR2VzaHVyaXRlcywgYW5kIHRoZSBHZXpyaXRlcywgYW5kIHRoZSBBbWFsZWtpdGVzOiBmb3IgdGhvc2UgbmF0aW9ucyB3ZXJlIG9mIG9sZCB0aGUgaW5oYWJpdGFudHMgb2YgdGhlIGxhbmQsIGFzIHRob3UgZ29lc3QgdG8gU2h1ciwgZXZlbiB1bnRvIHRoZSBsYW5kIG9mIEVneXB0LgpBbmQgRGF2aWQgc21vdGUgdGhlIGxhbmQsIGFuZCBsZWZ0IG5laXRoZXIgbWFuIG5vciB3b21hbiBhbGl2ZSwgYW5kIHRvb2sgYXdheSB0aGUgc2hlZXAsIGFuZCB0aGUgb3hlbiwgYW5kIHRoZSBhc3NlcywgYW5kIHRoZSBjYW1lbHMsIGFuZCB0aGUgYXBwYXJlbCwgYW5kIHJldHVybmVkLCBhbmQgY2FtZSB0byBBY2hpc2guCkFuZCBBY2hpc2ggc2FpZCwgV2hpdGhlciBoYXZlIHllIG1hZGUgYSByb2FkIHRvIGRheT8gQW5kIERhdmlkIHNhaWQsIEFnYWluc3QgdGhlIHNvdXRoIG9mIEp1ZGFoLCBhbmQgYWdhaW5zdCB0aGUgc291dGggb2YgdGhlIEplcmFobWVlbGl0ZXMsIGFuZCBhZ2FpbnN0IHRoZSBzb3V0aCBvZiB0aGUgS2VuaXRlcy4KQW5kIERhdmlkIHNhdmVkIG5laXRoZXIgbWFuIG5vciB3b21hbiBhbGl2ZSwgdG8gYnJpbmcgdGlkaW5ncyB0byBHYXRoLCBzYXlpbmcsIExlc3QgdGhleSBzaG91bGQgdGVsbCBvbiB1cywgc2F5aW5nLCBTbyBkaWQgRGF2aWQsIGFuZCBzbyB3aWxsIGJlIGhpcyBtYW5uZXIgYWxsIHRoZSB3aGlsZSBoZSBkd2VsbGV0aCBpbiB0aGUgY291bnRyeSBvZiB0aGUgUGhpbGlzdGluZXMuCkFuZCBBY2hpc2ggYmVsaWV2ZWQgRGF2aWQsIHNheWluZywgSGUgaGF0aCBtYWRlIGhpcyBwZW9wbGUgSXNyYWVsIHV0dGVybHkgdG8gYWJob3IgaGltOyB0aGVyZWZvcmUgaGUgc2hhbGwgYmUgbXkgc2VydmFudCBmb3IgZXZlci4KQW5kIGl0IGNhbWUgdG8gcGFzcyBpbiB0aG9zZSBkYXlzLCB0aGF0IHRoZSBQaGlsaXN0aW5lcyBnYXRoZXJlZCB0aGVpciBhcm1pZXMgdG9nZXRoZXIgZm9yIHdhcmZhcmUsIHRvIGZpZ2h0IHdpdGggSXNyYWVsLiBBbmQgQWNoaXNoIHNhaWQgdW50byBEYXZpZCwgS25vdyB0aG91IGFzc3VyZWRseSwgdGhhdCB0aG91IHNoYWx0IGdvIG91dCB3aXRoIG1lIHRvIGJhdHRsZSwgdGhvdSBhbmQgdGh5IG1lbi4KQW5kIERhdmlkIHNhaWQgdG8gQWNoaXNoLCBTdXJlbHkgdGhvdSBzaGFsdCBrbm93IHdoYXQgdGh5IHNlcnZhbnQgY2FuIGRvLiBBbmQgQWNoaXNoIHNhaWQgdG8gRGF2aWQsIFRoZXJlZm9yZSB3aWxsIEkgbWFrZSB0aGVlIGtlZXBlciBvZiBtaW5lIGhlYWQgZm9yIGV2ZXIuCk5vdyBTYW11ZWwgd2FzIGRlYWQsIGFuZCBhbGwgSXNyYWVsIGhhZCBsYW1lbnRlZCBoaW0sIGFuZCBidXJpZWQgaGltIGluIFJhbWFoLCBldmVuIGluIGhpcyBvd24gY2l0eS4gQW5kIFNhdWwgaGFkIHB1dCBhd2F5IHRob3NlIHRoYXQgaGFkIGZhbWlsaWFyIHNwaXJpdHMsIGFuZCB0aGUgd2l6YXJkcywgb3V0IG9mIHRoZSBsYW5kLgpBbmQgdGhlIFBoaWxpc3RpbmVzIGdhdGhlcmVkIHRoZW1zZWx2ZXMgdG9nZXRoZXIsIGFuZCBjYW1lIGFuZCBwaXRjaGVkIGluIFNodW5lbTogYW5kIFNhdWwgZ2F0aGVyZWQgYWxsIElzcmFlbCB0b2dldGhlciwgYW5kIHRoZXkgcGl0Y2hlZCBpbiBHaWxib2EuCkFuZCB3aGVuIFNhdWwgc2F3IHRoZSBob3N0IG9mIHRoZSBQaGlsaXN0aW5lcywgaGUgd2FzIGFmcmFpZCwgYW5kIGhpcyBoZWFydCBncmVhdGx5IHRyZW1ibGVkLgpBbmQgd2hlbiBTYXVsIGVucXVpcmVkIG9mIHRoZSBMT1JELCB0aGUgTE9SRCBhbnN3ZXJlZCBoaW0gbm90LCBuZWl0aGVyIGJ5IGRyZWFtcywgbm9yIGJ5IFVyaW0sIG5vciBieSBwcm9waGV0cy4KVGhlbiBzYWlkIFNhdWwgdW50byBoaXMgc2VydmFudHMsIFNlZWsgbWUgYSB3b21hbiB0aGF0IGhhdGggYSBmYW1pbGlhciBzcGlyaXQsIHRoYXQgSSBtYXkgZ28gdG8gaGVyLCBhbmQgZW5xdWlyZSBvZiBoZXIuIEFuZCBoaXMgc2VydmFudHMgc2FpZCB0byBoaW0sIEJlaG9sZCwgdGhlcmUgaXMgYSB3b21hbiB0aGF0IGhhdGggYSBmYW1pbGlhciBzcGlyaXQgYXQgRW5kb3IuCkFuZCBTYXVsIGRpc2d1aXNlZCBoaW1zZWxmLCBhbmQgcHV0IG9uIG90aGVyIHJhaW1lbnQsIGFuZCBoZSB3ZW50LCBhbmQgdHdvIG1lbiB3aXRoIGhpbSwgYW5kIHRoZXkgY2FtZSB0byB0aGUgd29tYW4gYnkgbmlnaHQ6IGFuZCBoZSBzYWlkLCBJIHByYXkgdGhlZSwgZGl2aW5lIHVudG8gbWUgYnkgdGhlIGZhbWlsaWFyIHNwaXJpdCwgYW5kIGJyaW5nIG1lIGhpbSB1cCwgd2hvbSBJIHNoYWxsIG5hbWUgdW50byB0aGVlLgpBbmQgdGhlIHdvbWFuIHNhaWQgdW50byBoaW0sIEJlaG9sZCwgdGhvdSBrbm93ZXN0IHdoYXQgU2F1bCBoYXRoIGRvbmUsIGhvdyBoZSBoYXRoIGN1dCBvZmYgdGhvc2UgdGhhdCBoYXZlIGZhbWlsaWFyIHNwaXJpdHMsIGFuZCB0aGUgd2l6YXJkcywgb3V0IG9mIHRoZSBsYW5kOiB3aGVyZWZvcmUgdGhlbiBsYXllc3QgdGhvdSBhIHNuYXJlIGZvciBteSBsaWZlLCB0byBjYXVzZSBtZSB0byBkaWU/CkFuZCBTYXVsIHN3YXJlIHRvIGhlciBieSB0aGUgTE9SRCwgc2F5aW5nLCBBcyB0aGUgTE9SRCBsaXZldGgsIHRoZXJlIHNoYWxsIG5vIHB1bmlzaG1lbnQgaGFwcGVuIHRvIHRoZWUgZm9yIHRoaXMgdGhpbmcuClRoZW4gc2FpZCB0aGUgd29tYW4sIFdob20gc2hhbGwgSSBicmluZyB1cCB1bnRvIHRoZWU/IEFuZCBoZSBzYWlkLCBCcmluZyBtZSB1cCBTYW11ZWwuCkFuZCB3aGVuIHRoZSB3b21hbiBzYXcgU2FtdWVsLCBzaGUgY3JpZWQgd2l0aCBhIGxvdWQgdm9pY2U6IGFuZCB0aGUgd29tYW4gc3Bha2UgdG8gU2F1bCwgc2F5aW5nLCBXaHkgaGFzdCB0aG91IGRlY2VpdmVkIG1lPyBmb3IgdGhvdSBhcnQgU2F1bC4KQW5kIHRoZSBraW5nIHNhaWQgdW50byBoZXIsIEJlIG5vdCBhZnJhaWQ6IGZvciB3aGF0IHNhd2VzdCB0aG91PyBBbmQgdGhlIHdvbWFuIHNhaWQgdW50byBTYXVsLCBJIHNhdyBnb2RzIGFzY2VuZGluZyBvdXQgb2YgdGhlIGVhcnRoLgpBbmQgaGUgc2FpZCB1bnRvIGhlciwgV2hhdCBmb3JtIGlzIGhlIG9mPyBBbmQgc2hlIHNhaWQsIEFuIG9sZCBtYW4gY29tZXRoIHVwOyBhbmQgaGUgaXMgY292ZXJlZCB3aXRoIGEgbWFudGxlLiBBbmQgU2F1bCBwZXJjZWl2ZWQgdGhhdCBpdCB3YXMgU2FtdWVsLCBhbmQgaGUgc3Rvb3BlZCB3aXRoIGhpcyBmYWNlIHRvIHRoZSBncm91bmQsIGFuZCBib3dlZCBoaW1zZWxmLgpBbmQgU2FtdWVsIHNhaWQgdG8gU2F1bCwgV2h5IGhhc3QgdGhvdSBkaXNxdWlldGVkIG1lLCB0byBicmluZyBtZSB1cD8gQW5kIFNhdWwgYW5zd2VyZWQsIEkgYW0gc29yZSBkaXN0cmVzc2VkOyBmb3IgdGhlIFBoaWxpc3RpbmVzIG1ha2Ugd2FyIGFnYWluc3QgbWUsIGFuZCBHb2QgaXMgZGVwYXJ0ZWQgZnJvbSBtZSwgYW5kIGFuc3dlcmV0aCBtZSBubyBtb3JlLCBuZWl0aGVyIGJ5IHByb3BoZXRzLCBub3IgYnkgZHJlYW1zOiB0aGVyZWZvcmUgSSBoYXZlIGNhbGxlZCB0aGVlLCB0aGF0IHRob3UgbWF5ZXN0IG1ha2Uga25vd24gdW50byBtZSB3aGF0IEkgc2hhbGwgZG8uClRoZW4gc2FpZCBTYW11ZWwsIFdoZXJlZm9yZSB0aGVuIGRvc3QgdGhvdSBhc2sgb2YgbWUsIHNlZWluZyB0aGUgTE9SRCBpcyBkZXBhcnRlZCBmcm9tIHRoZWUsIGFuZCBpcyBiZWNvbWUgdGhpbmUgZW5lbXk/CkFuZCB0aGUgTE9SRCBoYXRoIGRvbmUgdG8gaGltLCBhcyBoZSBzcGFrZSBieSBtZTogZm9yIHRoZSBMT1JEIGhhdGggcmVudCB0aGUga2luZ2RvbSBvdXQgb2YgdGhpbmUgaGFuZCwgYW5kIGdpdmVuIGl0IHRvIHRoeSBuZWlnaGJvdXIsIGV2ZW4gdG8gRGF2aWQ6CkJlY2F1c2UgdGhvdSBvYmV5ZWRzdCBub3QgdGhlIHZvaWNlIG9mIHRoZSBMT1JELCBub3IgZXhlY3V0ZWRzdCBoaXMgZmllcmNlIHdyYXRoIHVwb24gQW1hbGVrLCB0aGVyZWZvcmUgaGF0aCB0aGUgTE9SRCBkb25lIHRoaXMgdGhpbmcgdW50byB0aGVlIHRoaXMgZGF5LgpNb3Jlb3ZlciB0aGUgTE9SRCB3aWxsIGFsc28gZGVsaXZlciBJc3JhZWwgd2l0aCB0aGVlIGludG8gdGhlIGhhbmQgb2YgdGhlIFBoaWxpc3RpbmVzOiBhbmQgdG8gbW9ycm93IHNoYWx0IHRob3UgYW5kIHRoeSBzb25zIGJlIHdpdGggbWU6IHRoZSBMT1JEIGFsc28gc2hhbGwgZGVsaXZlciB0aGUgaG9zdCBvZiBJc3JhZWwgaW50byB0aGUgaGFuZCBvZiB0aGUgUGhpbGlzdGluZXMuClRoZW4gU2F1bCBmZWxsIHN0cmFpZ2h0d2F5IGFsbCBhbG9uZyBvbiB0aGUgZWFydGgsIGFuZCB3YXMgc29yZSBhZnJhaWQsIGJlY2F1c2Ugb2YgdGhlIHdvcmRzIG9mIFNhbXVlbDogYW5kIHRoZXJlIHdhcyBubyBzdHJlbmd0aCBpbiBoaW07IGZvciBoZSBoYWQgZWF0ZW4gbm8gYnJlYWQgYWxsIHRoZSBkYXksIG5vciBhbGwgdGhlIG5pZ2h0LgpBbmQgdGhlIHdvbWFuIGNhbWUgdW50byBTYXVsLCBhbmQgc2F3IHRoYXQgaGUgd2FzIHNvcmUgdHJvdWJsZWQsIGFuZCBzYWlkIHVudG8gaGltLCBCZWhvbGQsIHRoaW5lIGhhbmRtYWlkIGhhdGggb2JleWVkIHRoeSB2b2ljZSwgYW5kIEkgaGF2ZSBwdXQgbXkgbGlmZSBpbiBteSBoYW5kLCBhbmQgaGF2ZSBoZWFya2VuZWQgdW50byB0aHkgd29yZHMgd2hpY2ggdGhvdSBzcGFrZXN0IHVudG8gbWUuCk5vdyB0aGVyZWZvcmUsIEkgcHJheSB0aGVlLCBoZWFya2VuIHRob3UgYWxzbyB1bnRvIHRoZSB2b2ljZSBvZiB0aGluZSBoYW5kbWFpZCwgYW5kIGxldCBtZSBzZXQgYSBtb3JzZWwgb2YgYnJlYWQgYmVmb3JlIHRoZWU7IGFuZCBlYXQsIHRoYXQgdGhvdSBtYXllc3QgaGF2ZSBzdHJlbmd0aCwgd2hlbiB0aG91IGdvZXN0IG9uIHRoeSB3YXkuCkJ1dCBoZSByZWZ1c2VkLCBhbmQgc2FpZCwgSSB3aWxsIG5vdCBlYXQuIEJ1dCBoaXMgc2VydmFudHMsIHRvZ2V0aGVyIHdpdGggdGhlIHdvbWFuLCBjb21wZWxsZWQgaGltOyBhbmQgaGUgaGVhcmtlbmVkIHVudG8gdGhlaXIgdm9pY2UuIFNvIGhlIGFyb3NlIGZyb20gdGhlIGVhcnRoLCBhbmQgc2F0IHVwb24gdGhlIGJlZC4KQW5kIHRoZSB3b21hbiBoYWQgYSBmYXQgY2FsZiBpbiB0aGUgaG91c2U7IGFuZCBzaGUgaGFzdGVkLCBhbmQga2lsbGVkIGl0LCBhbmQgdG9vayBmbG91ciwgYW5kIGtuZWFkZWQgaXQsIGFuZCBkaWQgYmFrZSB1bmxlYXZlbmVkIGJyZWFkIHRoZXJlb2Y6CkFuZCBzaGUgYnJvdWdodCBpdCBiZWZvcmUgU2F1bCwgYW5kIGJlZm9yZSBoaXMgc2VydmFudHM7IGFuZCB0aGV5IGRpZCBlYXQuIFRoZW4gdGhleSByb3NlIHVwLCBhbmQgd2VudCBhd2F5IHRoYXQgbmlnaHQuCk5vdyB0aGUgUGhpbGlzdGluZXMgZ2F0aGVyZWQgdG9nZXRoZXIgYWxsIHRoZWlyIGFybWllcyB0byBBcGhlazogYW5kIHRoZSBJc3JhZWxpdGVzIHBpdGNoZWQgYnkgYSBmb3VudGFpbiB3aGljaCBpcyBpbiBKZXpyZWVsLgpBbmQgdGhlIGxvcmRzIG9mIHRoZSBQaGlsaXN0aW5lcyBwYXNzZWQgb24gYnkgaHVuZHJlZHMsIGFuZCBieSB0aG91c2FuZHM6IGJ1dCBEYXZpZCBhbmQgaGlzIG1lbiBwYXNzZWQgb24gaW4gdGhlIHJlcmV3YXJkIHdpdGggQWNoaXNoLgpUaGVuIHNhaWQgdGhlIHByaW5jZXMgb2YgdGhlIFBoaWxpc3RpbmVzLCBXaGF0IGRvIHRoZXNlIEhlYnJld3MgaGVyZT8gQW5kIEFjaGlzaCBzYWlkIHVudG8gdGhlIHByaW5jZXMgb2YgdGhlIFBoaWxpc3RpbmVzLCBJcyBub3QgdGhpcyBEYXZpZCwgdGhlIHNlcnZhbnQgb2YgU2F1bCB0aGUga2luZyBvZiBJc3JhZWwsIHdoaWNoIGhhdGggYmVlbiB3aXRoIG1lIHRoZXNlIGRheXMsIG9yIHRoZXNlIHllYXJzLCBhbmQgSSBoYXZlIGZvdW5kIG5vIGZhdWx0IGluIGhpbSBzaW5jZSBoZSBmZWxsIHVudG8gbWUgdW50byB0aGlzIGRheT8KQW5kIHRoZSBwcmluY2VzIG9mIHRoZSBQaGlsaXN0aW5lcyB3ZXJlIHdyb3RoIHdpdGggaGltOyBhbmQgdGhlIHByaW5jZXMgb2YgdGhlIFBoaWxpc3RpbmVzIHNhaWQgdW50byBoaW0sIE1ha2UgdGhpcyBmZWxsb3cgcmV0dXJuLCB0aGF0IGhlIG1heSBnbyBhZ2FpbiB0byBoaXMgcGxhY2Ugd2hpY2ggdGhvdSBoYXN0IGFwcG9pbnRlZCBoaW0sIGFuZCBsZXQgaGltIG5vdCBnbyBkb3duIHdpdGggdXMgdG8gYmF0dGxlLCBsZXN0IGluIHRoZSBiYXR0bGUgaGUgYmUgYW4gYWR2ZXJzYXJ5IHRvIHVzOiBmb3Igd2hlcmV3aXRoIHNob3VsZCBoZSByZWNvbmNpbGUgaGltc2VsZiB1bnRvIGhpcyBtYXN0ZXI/IHNob3VsZCBpdCBub3QgYmUgd2l0aCB0aGUgaGVhZHMgb2YgdGhlc2UgbWVuPwpJcyBub3QgdGhpcyBEYXZpZCwgb2Ygd2hvbSB0aGV5IHNhbmcgb25lIHRvIGFub3RoZXIgaW4gZGFuY2VzLCBzYXlpbmcsIFNhdWwgc2xldyBoaXMgdGhvdXNhbmRzLCBhbmQgRGF2aWQgaGlzIHRlbiB0aG91c2FuZHM/ClRoZW4gQWNoaXNoIGNhbGxlZCBEYXZpZCwgYW5kIHNhaWQgdW50byBoaW0sIFN1cmVseSwgYXMgdGhlIExPUkQgbGl2ZXRoLCB0aG91IGhhc3QgYmVlbiB1cHJpZ2h0LCBhbmQgdGh5IGdvaW5nIG91dCBhbmQgdGh5IGNvbWluZyBpbiB3aXRoIG1lIGluIHRoZSBob3N0IGlzIGdvb2QgaW4gbXkgc2lnaHQ6IGZvciBJIGhhdmUgbm90IGZvdW5kIGV2aWwgaW4gdGhlZSBzaW5jZSB0aGUgZGF5IG9mIHRoeSBjb21pbmcgdW50byBtZSB1bnRvIHRoaXMgZGF5OiBuZXZlcnRoZWxlc3MgdGhlIGxvcmRzIGZhdm91ciB0aGVlIG5vdC4KV2hlcmVmb3JlIG5vdyByZXR1cm4sIGFuZCBnbyBpbiBwZWFjZSwgdGhhdCB0aG91IGRpc3BsZWFzZSBub3QgdGhlIGxvcmRzIG9mIHRoZSBQaGlsaXN0aW5lcy4KQW5kIERhdmlkIHNhaWQgdW50byBBY2hpc2gsIEJ1dCB3aGF0IGhhdmUgSSBkb25lPyBhbmQgd2hhdCBoYXN0IHRob3UgZm91bmQgaW4gdGh5IHNlcnZhbnQgc28gbG9uZyBhcyBJIGhhdmUgYmVlbiB3aXRoIHRoZWUgdW50byB0aGlzIGRheSwgdGhhdCBJIG1heSBub3QgZ28gZmlnaHQgYWdhaW5zdCB0aGUgZW5lbWllcyBvZiBteSBsb3JkIHRoZSBraW5nPwpBbmQgQWNoaXNoIGFuc3dlcmVkIGFuZCBzYWlkIHRvIERhdmlkLCBJIGtub3cgdGhhdCB0aG91IGFydCBnb29kIGluIG15IHNpZ2h0LCBhcyBhbiBhbmdlbCBvZiBHb2Q6IG5vdHdpdGhzdGFuZGluZyB0aGUgcHJpbmNlcyBvZiB0aGUgUGhpbGlzdGluZXMgaGF2ZSBzYWlkLCBIZSBzaGFsbCBub3QgZ28gdXAgd2l0aCB1cyB0byB0aGUgYmF0dGxlLgpXaGVyZWZvcmUgbm93IHJpc2UgdXAgZWFybHkgaW4gdGhlIG1vcm5pbmcgd2l0aCB0aHkgbWFzdGVyJ3Mgc2VydmFudHMgdGhhdCBhcmUgY29tZSB3aXRoIHRoZWU6IGFuZCBhcyBzb29uIGFzIHllIGJlIHVwIGVhcmx5IGluIHRoZSBtb3JuaW5nLCBhbmQgaGF2ZSBsaWdodCwgZGVwYXJ0LgpTbyBEYXZpZCBhbmQgaGlzIG1lbiByb3NlIHVwIGVhcmx5IHRvIGRlcGFydCBpbiB0aGUgbW9ybmluZywgdG8gcmV0dXJuIGludG8gdGhlIGxhbmQgb2YgdGhlIFBoaWxpc3RpbmVzLiBBbmQgdGhlIFBoaWxpc3RpbmVzIHdlbnQgdXAgdG8gSmV6cmVlbC4KQW5kIGl0IGNhbWUgdG8gcGFzcywgd2hlbiBEYXZpZCBhbmQgaGlzIG1lbiB3ZXJlIGNvbWUgdG8gWmlrbGFnIG9uIHRoZSB0aGlyZCBkYXksIHRoYXQgdGhlIEFtYWxla2l0ZXMgaGFkIGludmFkZWQgdGhlIHNvdXRoLCBhbmQgWmlrbGFnLCBhbmQgc21pdHRlbiBaaWtsYWcsIGFuZCBidXJuZWQgaXQgd2l0aCBmaXJlOwpBbmQgaGFkIHRha2VuIHRoZSB3b21lbiBjYXB0aXZlcywgdGhhdCB3ZXJlIHRoZXJlaW46IHRoZXkgc2xldyBub3QgYW55LCBlaXRoZXIgZ3JlYXQgb3Igc21hbGwsIGJ1dCBjYXJyaWVkIHRoZW0gYXdheSwgYW5kIHdlbnQgb24gdGhlaXIgd2F5LgpTbyBEYXZpZCBhbmQgaGlzIG1lbiBjYW1lIHRvIHRoZSBjaXR5LCBhbmQsIGJlaG9sZCwgaXQgd2FzIGJ1cm5lZCB3aXRoIGZpcmU7IGFuZCB0aGVpciB3aXZlcywgYW5kIHRoZWlyIHNvbnMsIGFuZCB0aGVpciBkYXVnaHRlcnMsIHdlcmUgdGFrZW4gY2FwdGl2ZXMuClRoZW4gRGF2aWQgYW5kIHRoZSBwZW9wbGUgdGhhdCB3ZXJlIHdpdGggaGltIGxpZnRlZCB1cCB0aGVpciB2b2ljZSBhbmQgd2VwdCwgdW50aWwgdGhleSBoYWQgbm8gbW9yZSBwb3dlciB0byB3ZWVwLgpBbmQgRGF2aWQncyB0d28gd2l2ZXMgd2VyZSB0YWtlbiBjYXB0aXZlcywgQWhpbm9hbSB0aGUgSmV6cmVlbGl0ZXNzLCBhbmQgQWJpZ2FpbCB0aGUgd2lmZSBvZiBOYWJhbCB0aGUgQ2FybWVsaXRlLgpBbmQgRGF2aWQgd2FzIGdyZWF0bHkgZGlzdHJlc3NlZDsgZm9yIHRoZSBwZW9wbGUgc3Bha2Ugb2Ygc3RvbmluZyBoaW0sIGJlY2F1c2UgdGhlIHNvdWwgb2YgYWxsIHRoZSBwZW9wbGUgd2FzIGdyaWV2ZWQsIGV2ZXJ5IG1hbiBmb3IgaGlzIHNvbnMgYW5kIGZvciBoaXMgZGF1Z2h0ZXJzOiBidXQgRGF2aWQgZW5jb3VyYWdlZCBoaW1zZWxmIGluIHRoZSBMT1JEIGhpcyBHb2QuCkFuZCBEYXZpZCBzYWlkIHRvIEFiaWF0aGFyIHRoZSBwcmllc3QsIEFoaW1lbGVjaCdzIHNvbiwgSSBwcmF5IHRoZWUsIGJyaW5nIG1lIGhpdGhlciB0aGUgZXBob2QuIEFuZCBBYmlhdGhhciBicm91Z2h0IHRoaXRoZXIgdGhlIGVwaG9kIHRvIERhdmlkLgpBbmQgRGF2aWQgZW5xdWlyZWQgYXQgdGhlIExPUkQsIHNheWluZywgU2hhbGwgSSBwdXJzdWUgYWZ0ZXIgdGhpcyB0cm9vcD8gc2hhbGwgSSBvdmVydGFrZSB0aGVtPyBBbmQgaGUgYW5zd2VyZWQgaGltLCBQdXJzdWU6IGZvciB0aG91IHNoYWx0IHN1cmVseSBvdmVydGFrZSB0aGVtLCBhbmQgd2l0aG91dCBmYWlsIHJlY292ZXIgYWxsLgpTbyBEYXZpZCB3ZW50LCBoZSBhbmQgdGhlIHNpeCBodW5kcmVkIG1lbiB0aGF0IHdlcmUgd2l0aCBoaW0sIGFuZCBjYW1lIHRvIHRoZSBicm9vayBCZXNvciwgd2hlcmUgdGhvc2UgdGhhdCB3ZXJlIGxlZnQgYmVoaW5kIHN0YXllZC4KQnV0IERhdmlkIHB1cnN1ZWQsIGhlIGFuZCBmb3VyIGh1bmRyZWQgbWVuOiBmb3IgdHdvIGh1bmRyZWQgYWJvZGUgYmVoaW5kLCB3aGljaCB3ZXJlIHNvIGZhaW50IHRoYXQgdGhleSBjb3VsZCBub3QgZ28gb3ZlciB0aGUgYnJvb2sgQmVzb3IuCkFuZCB0aGV5IGZvdW5kIGFuIEVneXB0aWFuIGluIHRoZSBmaWVsZCwgYW5kIGJyb3VnaHQgaGltIHRvIERhdmlkLCBhbmQgZ2F2ZSBoaW0gYnJlYWQsIGFuZCBoZSBkaWQgZWF0OyBhbmQgdGhleSBtYWRlIGhpbSBkcmluayB3YXRlcjsKQW5kIHRoZXkgZ2F2ZSBoaW0gYSBwaWVjZSBvZiBhIGNha2Ugb2YgZmlncywgYW5kIHR3byBjbHVzdGVycyBvZiByYWlzaW5zOiBhbmQgd2hlbiBoZSBoYWQgZWF0ZW4sIGhpcyBzcGlyaXQgY2FtZSBhZ2FpbiB0byBoaW06IGZvciBoZSBoYWQgZWF0ZW4gbm8gYnJlYWQsIG5vciBkcnVuayBhbnkgd2F0ZXIsIHRocmVlIGRheXMgYW5kIHRocmVlIG5pZ2h0cy4KQW5kIERhdmlkIHNhaWQgdW50byBoaW0sIFRvIHdob20gYmVsb25nZXN0IHRob3U/IGFuZCB3aGVuY2UgYXJ0IHRob3U/IEFuZCBoZSBzYWlkLCBJIGFtIGEgeW91bmcgbWFuIG9mIEVneXB0LCBzZXJ2YW50IHRvIGFuIEFtYWxla2l0ZTsgYW5kIG15IG1hc3RlciBsZWZ0IG1lLCBiZWNhdXNlIHRocmVlIGRheXMgYWdvbmUgSSBmZWxsIHNpY2suCldlIG1hZGUgYW4gaW52YXNpb24gdXBvbiB0aGUgc291dGggb2YgdGhlIENoZXJldGhpdGVzLCBhbmQgdXBvbiB0aGUgY29hc3Qgd2hpY2ggYmVsb25nZXRoIHRvIEp1ZGFoLCBhbmQgdXBvbiB0aGUgc291dGggb2YgQ2FsZWI7IGFuZCB3ZSBidXJuZWQgWmlrbGFnIHdpdGggZmlyZS4KQW5kIERhdmlkIHNhaWQgdG8gaGltLCBDYW5zdCB0aG91IGJyaW5nIG1lIGRvd24gdG8gdGhpcyBjb21wYW55PyBBbmQgaGUgc2FpZCwgU3dlYXIgdW50byBtZSBieSBHb2QsIHRoYXQgdGhvdSB3aWx0IG5laXRoZXIga2lsbCBtZSwgbm9yIGRlbGl2ZXIgbWUgaW50byB0aGUgaGFuZHMgb2YgbXkgbWFzdGVyLCBhbmQgSSB3aWxsIGJyaW5nIHRoZWUgZG93biB0byB0aGlzIGNvbXBhbnkuCkFuZCB3aGVuIGhlIGhhZCBicm91Z2h0IGhpbSBkb3duLCBiZWhvbGQsIHRoZXkgd2VyZSBzcHJlYWQgYWJyb2FkIHVwb24gYWxsIHRoZSBlYXJ0aCwgZWF0aW5nIGFuZCBkcmlua2luZywgYW5kIGRhbmNpbmcsIGJlY2F1c2Ugb2YgYWxsIHRoZSBncmVhdCBzcG9pbCB0aGF0IHRoZXkgaGFkIHRha2VuIG91dCBvZiB0aGUgbGFuZCBvZiB0aGUgUGhpbGlzdGluZXMsIGFuZCBvdXQgb2YgdGhlIGxhbmQgb2YgSnVkYWguCkFuZCBEYXZpZCBzbW90ZSB0aGVtIGZyb20gdGhlIHR3aWxpZ2h0IGV2ZW4gdW50byB0aGUgZXZlbmluZyBvZiB0aGUgbmV4dCBkYXk6IGFuZCB0aGVyZSBlc2NhcGVkIG5vdCBhIG1hbiBvZiB0aGVtLCBzYXZlIGZvdXIgaHVuZHJlZCB5b3VuZyBtZW4sIHdoaWNoIHJvZGUgdXBvbiBjYW1lbHMsIGFuZCBmbGVkLgpBbmQgRGF2aWQgcmVjb3ZlcmVkIGFsbCB0aGF0IHRoZSBBbWFsZWtpdGVzIGhhZCBjYXJyaWVkIGF3YXk6IGFuZCBEYXZpZCByZXNjdWVkIGhpcyB0d28gd2l2ZXMuCkFuZCB0aGVyZSB3YXMgbm90aGluZyBsYWNraW5nIHRvIHRoZW0sIG5laXRoZXIgc21hbGwgbm9yIGdyZWF0LCBuZWl0aGVyIHNvbnMgbm9yIGRhdWdodGVycywgbmVpdGhlciBzcG9pbCwgbm9yIGFueSB0aGluZyB0aGF0IHRoZXkgaGFkIHRha2VuIHRvIHRoZW06IERhdmlkIHJlY292ZXJlZCBhbGwuCkFuZCBEYXZpZCB0b29rIGFsbCB0aGUgZmxvY2tzIGFuZCB0aGUgaGVyZHMsIHdoaWNoIHRoZXkgZHJhdmUgYmVmb3JlIHRob3NlIG90aGVyIGNhdHRsZSwgYW5kIHNhaWQsIFRoaXMgaXMgRGF2aWQncyBzcG9pbC4KQW5kIERhdmlkIGNhbWUgdG8gdGhlIHR3byBodW5kcmVkIG1lbiwgd2hpY2ggd2VyZSBzbyBmYWludCB0aGF0IHRoZXkgY291bGQgbm90IGZvbGxvdyBEYXZpZCwgd2hvbSB0aGV5IGhhZCBtYWRlIGFsc28gdG8gYWJpZGUgYXQgdGhlIGJyb29rIEJlc29yOiBhbmQgdGhleSB3ZW50IGZvcnRoIHRvIG1lZXQgRGF2aWQsIGFuZCB0byBtZWV0IHRoZSBwZW9wbGUgdGhhdCB3ZXJlIHdpdGggaGltOiBhbmQgd2hlbiBEYXZpZCBjYW1lIG5lYXIgdG8gdGhlIHBlb3BsZSwgaGUgc2FsdXRlZCB0aGVtLgpUaGVuIGFuc3dlcmVkIGFsbCB0aGUgd2lja2VkIG1lbiBhbmQgbWVuIG9mIEJlbGlhbCwgb2YgdGhvc2UgdGhhdCB3ZW50IHdpdGggRGF2aWQsIGFuZCBzYWlkLCBCZWNhdXNlIHRoZXkgd2VudCBub3Qgd2l0aCB1cywgd2Ugd2lsbCBub3QgZ2l2ZSB0aGVtIG91Z2h0IG9mIHRoZSBzcG9pbCB0aGF0IHdlIGhhdmUgcmVjb3ZlcmVkLCBzYXZlIHRvIGV2ZXJ5IG1hbiBoaXMgd2lmZSBhbmQgaGlzIGNoaWxkcmVuLCB0aGF0IHRoZXkgbWF5IGxlYWQgdGhlbSBhd2F5LCBhbmQgZGVwYXJ0LgpUaGVuIHNhaWQgRGF2aWQsIFllIHNoYWxsIG5vdCBkbyBzbywgbXkgYnJldGhyZW4sIHdpdGggdGhhdCB3aGljaCB0aGUgTE9SRCBoYXRoIGdpdmVuIHVzLCB3aG8gaGF0aCBwcmVzZXJ2ZWQgdXMsIGFuZCBkZWxpdmVyZWQgdGhlIGNvbXBhbnkgdGhhdCBjYW1lIGFnYWluc3QgdXMgaW50byBvdXIgaGFuZC4KRm9yIHdobyB3aWxsIGhlYXJrZW4gdW50byB5b3UgaW4gdGhpcyBtYXR0ZXI/IGJ1dCBhcyBoaXMgcGFydCBpcyB0aGF0IGdvZXRoIGRvd24gdG8gdGhlIGJhdHRsZSwgc28gc2hhbGwgaGlzIHBhcnQgYmUgdGhhdCB0YXJyaWV0aCBieSB0aGUgc3R1ZmY6IHRoZXkgc2hhbGwgcGFydCBhbGlrZS4KQW5kIGl0IHdhcyBzbyBmcm9tIHRoYXQgZGF5IGZvcndhcmQsIHRoYXQgaGUgbWFkZSBpdCBhIHN0YXR1dGUgYW5kIGFuIG9yZGluYW5jZSBmb3IgSXNyYWVsIHVudG8gdGhpcyBkYXkuCkFuZCB3aGVuIERhdmlkIGNhbWUgdG8gWmlrbGFnLCBoZSBzZW50IG9mIHRoZSBzcG9pbCB1bnRvIHRoZSBlbGRlcnMgb2YgSnVkYWgsIGV2ZW4gdG8gaGlzIGZyaWVuZHMsIHNheWluZywgQmVob2xkIGEgcHJlc2VudCBmb3IgeW91IG9mIHRoZSBzcG9pbCBvZiB0aGUgZW5lbWllcyBvZiB0aGUgTE9SRDsKVG8gdGhlbSB3aGljaCB3ZXJlIGluIEJldGhlbCwgYW5kIHRvIHRoZW0gd2hpY2ggd2VyZSBpbiBzb3V0aCBSYW1vdGgsIGFuZCB0byB0aGVtIHdoaWNoIHdlcmUgaW4gSmF0dGlyLApBbmQgdG8gdGhlbSB3aGljaCB3ZXJlIGluIEFyb2VyLCBhbmQgdG8gdGhlbSB3aGljaCB3ZXJlIGluIFNpcGhtb3RoLCBhbmQgdG8gdGhlbSB3aGljaCB3ZXJlIGluIEVzaHRlbW9hLApBbmQgdG8gdGhlbSB3aGljaCB3ZXJlIGluIFJhY2hhbCwgYW5kIHRvIHRoZW0gd2hpY2ggd2VyZSBpbiB0aGUgY2l0aWVzIG9mIHRoZSBKZXJhaG1lZWxpdGVzLCBhbmQgdG8gdGhlbSB3aGljaCB3ZXJlIGluIHRoZSBjaXRpZXMgb2YgdGhlIEtlbml0ZXMsCkFuZCB0byB0aGVtIHdoaWNoIHdlcmUgaW4gSG9ybWFoLCBhbmQgdG8gdGhlbSB3aGljaCB3ZXJlIGluIENob3Jhc2hhbiwgYW5kIHRvIHRoZW0gd2hpY2ggd2VyZSBpbiBBdGhhY2gsCkFuZCB0byB0aGVtIHdoaWNoIHdlcmUgaW4gSGVicm9uLCBhbmQgdG8gYWxsIHRoZSBwbGFjZXMgd2hlcmUgRGF2aWQgaGltc2VsZiBhbmQgaGlzIG1lbiB3ZXJlIHdvbnQgdG8gaGF1bnQuCk5vdyB0aGUgUGhpbGlzdGluZXMgZm91Z2h0IGFnYWluc3QgSXNyYWVsOiBhbmQgdGhlIG1lbiBvZiBJc3JhZWwgZmxlZCBmcm9tIGJlZm9yZSB0aGUgUGhpbGlzdGluZXMsIGFuZCBmZWxsIGRvd24gc2xhaW4gaW4gbW91bnQgR2lsYm9hLgpBbmQgdGhlIFBoaWxpc3RpbmVzIGZvbGxvd2VkIGhhcmQgdXBvbiBTYXVsIGFuZCB1cG9uIGhpcyBzb25zOyBhbmQgdGhlIFBoaWxpc3RpbmVzIHNsZXcgSm9uYXRoYW4sIGFuZCBBYmluYWRhYiwgYW5kIE1lbGNoaXNodWEsIFNhdWwncyBzb25zLgpBbmQgdGhlIGJhdHRsZSB3ZW50IHNvcmUgYWdhaW5zdCBTYXVsLCBhbmQgdGhlIGFyY2hlcnMgaGl0IGhpbTsgYW5kIGhlIHdhcyBzb3JlIHdvdW5kZWQgb2YgdGhlIGFyY2hlcnMuClRoZW4gc2FpZCBTYXVsIHVudG8gaGlzIGFybW91cmJlYXJlciwgRHJhdyB0aHkgc3dvcmQsIGFuZCB0aHJ1c3QgbWUgdGhyb3VnaCB0aGVyZXdpdGg7IGxlc3QgdGhlc2UgdW5jaXJjdW1jaXNlZCBjb21lIGFuZCB0aHJ1c3QgbWUgdGhyb3VnaCwgYW5kIGFidXNlIG1lLiBCdXQgaGlzIGFybW91cmJlYXJlciB3b3VsZCBub3Q7IGZvciBoZSB3YXMgc29yZSBhZnJhaWQuIFRoZXJlZm9yZSBTYXVsIHRvb2sgYSBzd29yZCwgYW5kIGZlbGwgdXBvbiBpdC4KQW5kIHdoZW4gaGlzIGFybW91cmJlYXJlciBzYXcgdGhhdCBTYXVsIHdhcyBkZWFkLCBoZSBmZWxsIGxpa2V3aXNlIHVwb24gaGlzIHN3b3JkLCBhbmQgZGllZCB3aXRoIGhpbS4KU28gU2F1bCBkaWVkLCBhbmQgaGlzIHRocmVlIHNvbnMsIGFuZCBoaXMgYXJtb3VyYmVhcmVyLCBhbmQgYWxsIGhpcyBtZW4sIHRoYXQgc2FtZSBkYXkgdG9nZXRoZXIuCkFuZCB3aGVuIHRoZSBtZW4gb2YgSXNyYWVsIHRoYXQgd2VyZSBvbiB0aGUgb3RoZXIgc2lkZSBvZiB0aGUgdmFsbGV5LCBhbmQgdGhleSB0aGF0IHdlcmUgb24gdGhlIG90aGVyIHNpZGUgSm9yZGFuLCBzYXcgdGhhdCB0aGUgbWVuIG9mIElzcmFlbCBmbGVkLCBhbmQgdGhhdCBTYXVsIGFuZCBoaXMgc29ucyB3ZXJlIGRlYWQsIHRoZXkgZm9yc29vayB0aGUgY2l0aWVzLCBhbmQgZmxlZDsgYW5kIHRoZSBQaGlsaXN0aW5lcyBjYW1lIGFuZCBkd2VsdCBpbiB0aGVtLgpBbmQgaXQgY2FtZSB0byBwYXNzIG9uIHRoZSBtb3Jyb3csIHdoZW4gdGhlIFBoaWxpc3RpbmVzIGNhbWUgdG8gc3RyaXAgdGhlIHNsYWluLCB0aGF0IHRoZXkgZm91bmQgU2F1bCBhbmQgaGlzIHRocmVlIHNvbnMgZmFsbGVuIGluIG1vdW50IEdpbGJvYS4KQW5kIHRoZXkgY3V0IG9mZiBoaXMgaGVhZCwgYW5kIHN0cmlwcGVkIG9mZiBoaXMgYXJtb3VyLCBhbmQgc2VudCBpbnRvIHRoZSBsYW5kIG9mIHRoZSBQaGlsaXN0aW5lcyByb3VuZCBhYm91dCwgdG8gcHVibGlzaCBpdCBpbiB0aGUgaG91c2Ugb2YgdGhlaXIgaWRvbHMsIGFuZCBhbW9uZyB0aGUgcGVvcGxlLgpBbmQgdGhleSBwdXQgaGlzIGFybW91ciBpbiB0aGUgaG91c2Ugb2YgQXNodGFyb3RoOiBhbmQgdGhleSBmYXN0ZW5lZCBoaXMgYm9keSB0byB0aGUgd2FsbCBvZiBCZXRoc2hhbi4KQW5kIHdoZW4gdGhlIGluaGFiaXRhbnRzIG9mIEphYmVzaGdpbGVhZCBoZWFyZCBvZiB0aGF0IHdoaWNoIHRoZSBQaGlsaXN0aW5lcyBoYWQgZG9uZSB0byBTYXVsOwpBbGwgdGhlIHZhbGlhbnQgbWVuIGFyb3NlLCBhbmQgd2VudCBhbGwgbmlnaHQsIGFuZCB0b29rIHRoZSBib2R5IG9mIFNhdWwgYW5kIHRoZSBib2RpZXMgb2YgaGlzIHNvbnMgZnJvbSB0aGUgd2FsbCBvZiBCZXRoc2hhbiwgYW5kIGNhbWUgdG8gSmFiZXNoLCBhbmQgYnVybnQgdGhlbSB0aGVyZS4KQW5kIHRoZXkgdG9vayB0aGVpciBib25lcywgYW5kIGJ1cmllZCB0aGVtIHVuZGVyIGEgdHJlZSBhdCBKYWJlc2gsIGFuZCBmYXN0ZWQgc2V2ZW4gZGF5cy4KTm93IGl0IGNhbWUgdG8gcGFzcyBhZnRlciB0aGUgZGVhdGggb2YgU2F1bCwgd2hlbiBEYXZpZCB3YXMgcmV0dXJuZWQgZnJvbSB0aGUgc2xhdWdodGVyIG9mIHRoZSBBbWFsZWtpdGVzLCBhbmQgRGF2aWQgaGFkIGFib2RlIHR3byBkYXlzIGluIFppa2xhZzsKSXQgY2FtZSBldmVuIHRvIHBhc3Mgb24gdGhlIHRoaXJkIGRheSwgdGhhdCwgYmVob2xkLCBhIG1hbiBjYW1lIG91dCBvZiB0aGUgY2FtcCBmcm9tIFNhdWwgd2l0aCBoaXMgY2xvdGhlcyByZW50LCBhbmQgZWFydGggdXBvbiBoaXMgaGVhZDogYW5kIHNvIGl0IHdhcywgd2hlbiBoZSBjYW1lIHRvIERhdmlkLCB0aGF0IGhlIGZlbGwgdG8gdGhlIGVhcnRoLCBhbmQgZGlkIG9iZWlzYW5jZS4KQW5kIERhdmlkIHNhaWQgdW50byBoaW0sIEZyb20gd2hlbmNlIGNvbWVzdCB0aG91PyBBbmQgaGUgc2FpZCB1bnRvIGhpbSwgT3V0IG9mIHRoZSBjYW1wIG9mIElzcmFlbCBhbSBJIGVzY2FwZWQuCkFuZCBEYXZpZCBzYWlkIHVudG8gaGltLCBIb3cgd2VudCB0aGUgbWF0dGVyPyBJIHByYXkgdGhlZSwgdGVsbCBtZS4gQW5kIGhlIGFuc3dlcmVkLCBUaGF0IHRoZSBwZW9wbGUgYXJlIGZsZWQgZnJvbSB0aGUgYmF0dGxlLCBhbmQgbWFueSBvZiB0aGUgcGVvcGxlIGFsc28gYXJlIGZhbGxlbiBhbmQgZGVhZDsgYW5kIFNhdWwgYW5kIEpvbmF0aGFuIGhpcyBzb24gYXJlIGRlYWQgYWxzby4KQW5kIERhdmlkIHNhaWQgdW50byB0aGUgeW91bmcgbWFuIHRoYXQgdG9sZCBoaW0sIEhvdyBrbm93ZXN0IHRob3UgdGhhdCBTYXVsIGFuZCBKb25hdGhhbiBoaXMgc29uIGJlIGRlYWQ/CkFuZCB0aGUgeW91bmcgbWFuIHRoYXQgdG9sZCBoaW0gc2FpZCwgQXMgSSBoYXBwZW5lZCBieSBjaGFuY2UgdXBvbiBtb3VudCBHaWxib2EsIGJlaG9sZCwgU2F1bCBsZWFuZWQgdXBvbiBoaXMgc3BlYXI7IGFuZCwgbG8sIHRoZSBjaGFyaW90cyBhbmQgaG9yc2VtZW4gZm9sbG93ZWQgaGFyZCBhZnRlciBoaW0uCkFuZCB3aGVuIGhlIGxvb2tlZCBiZWhpbmQgaGltLCBoZSBzYXcgbWUsIGFuZCBjYWxsZWQgdW50byBtZS4gQW5kIEkgYW5zd2VyZWQsIEhlcmUgYW0gSS4KQW5kIGhlIHNhaWQgdW50byBtZSwgV2hvIGFydCB0aG91PyBBbmQgSSBhbnN3ZXJlZCBoaW0sIEkgYW0gYW4gQW1hbGVraXRlLgpIZSBzYWlkIHVudG8gbWUgYWdhaW4sIFN0YW5kLCBJIHByYXkgdGhlZSwgdXBvbiBtZSwgYW5kIHNsYXkgbWU6IGZvciBhbmd1aXNoIGlzIGNvbWUgdXBvbiBtZSwgYmVjYXVzZSBteSBsaWZlIGlzIHlldCB3aG9sZSBpbiBtZS4KU28gSSBzdG9vZCB1cG9uIGhpbSwgYW5kIHNsZXcgaGltLCBiZWNhdXNlIEkgd2FzIHN1cmUgdGhhdCBoZSBjb3VsZCBub3QgbGl2ZSBhZnRlciB0aGF0IGhlIHdhcyBmYWxsZW46IGFuZCBJIHRvb2sgdGhlIGNyb3duIHRoYXQgd2FzIHVwb24gaGlzIGhlYWQsIGFuZCB0aGUgYnJhY2VsZXQgdGhhdCB3YXMgb24gaGlzIGFybSwgYW5kIGhhdmUgYnJvdWdodCB0aGVtIGhpdGhlciB1bnRvIG15IGxvcmQuClRoZW4gRGF2aWQgdG9vayBob2xkIG9uIGhpcyBjbG90aGVzLCBhbmQgcmVudCB0aGVtOyBhbmQgbGlrZXdpc2UgYWxsIHRoZSBtZW4gdGhhdCB3ZXJlIHdpdGggaGltOgpBbmQgdGhleSBtb3VybmVkLCBhbmQgd2VwdCwgYW5kIGZhc3RlZCB1bnRpbCBldmVuLCBmb3IgU2F1bCwgYW5kIGZvciBKb25hdGhhbiBoaXMgc29uLCBhbmQgZm9yIHRoZSBwZW9wbGUgb2YgdGhlIExPUkQsIGFuZCBmb3IgdGhlIGhvdXNlIG9mIElzcmFlbDsgYmVjYXVzZSB0aGV5IHdlcmUgZmFsbGVuIGJ5IHRoZSBzd29yZC4KQW5kIERhdmlkIHNhaWQgdW50byB0aGUgeW91bmcgbWFuIHRoYXQgdG9sZCBoaW0sIFdoZW5jZSBhcnQgdGhvdT8gQW5kIGhlIGFuc3dlcmVkLCBJIGFtIHRoZSBzb24gb2YgYSBzdHJhbmdlciwgYW4gQW1hbGVraXRlLgpBbmQgRGF2aWQgc2FpZCB1bnRvIGhpbSwgSG93IHdhc3QgdGhvdSBub3QgYWZyYWlkIHRvIHN0cmV0Y2ggZm9ydGggdGhpbmUgaGFuZCB0byBkZXN0cm95IHRoZSBMT1JEJ3MgYW5vaW50ZWQ/CkFuZCBEYXZpZCBjYWxsZWQgb25lIG9mIHRoZSB5b3VuZyBtZW4sIGFuZCBzYWlkLCBHbyBuZWFyLCBhbmQgZmFsbCB1cG9uIGhpbS4gQW5kIGhlIHNtb3RlIGhpbSB0aGF0IGhlIGRpZWQuCkFuZCBEYXZpZCBzYWlkIHVudG8gaGltLCBUaHkgYmxvb2QgYmUgdXBvbiB0aHkgaGVhZDsgZm9yIHRoeSBtb3V0aCBoYXRoIHRlc3RpZmllZCBhZ2FpbnN0IHRoZWUsIHNheWluZywgSSBoYXZlIHNsYWluIHRoZSBMT1JEJ3MgYW5vaW50ZWQuCkFuZCBEYXZpZCBsYW1lbnRlZCB3aXRoIHRoaXMgbGFtZW50YXRpb24gb3ZlciBTYXVsIGFuZCBvdmVyIEpvbmF0aGFuIGhpcyBzb246CihBbHNvIGhlIGJhZGUgdGhlbSB0ZWFjaCB0aGUgY2hpbGRyZW4gb2YgSnVkYWggdGhlIHVzZSBvZiB0aGUgYm93OiBiZWhvbGQsIGl0IGlzIHdyaXR0ZW4gaW4gdGhlIGJvb2sgb2YgSmFzaGVyLikKVGhlIGJlYXV0eSBvZiBJc3JhZWwgaXMgc2xhaW4gdXBvbiB0aHkgaGlnaCBwbGFjZXM6IGhvdyBhcmUgdGhlIG1pZ2h0eSBmYWxsZW4hClRlbGwgaXQgbm90IGluIEdhdGgsIHB1Ymxpc2ggaXQgbm90IGluIHRoZSBzdHJlZXRzIG9mIEFza2Vsb247IGxlc3QgdGhlIGRhdWdodGVycyBvZiB0aGUgUGhpbGlzdGluZXMgcmVqb2ljZSwgbGVzdCB0aGUgZGF1Z2h0ZXJzIG9mIHRoZSB1bmNpcmN1bWNpc2VkIHRyaXVtcGguClllIG1vdW50YWlucyBvZiBHaWxib2EsIGxldCB0aGVyZSBiZSBubyBkZXcsIG5laXRoZXIgbGV0IHRoZXJlIGJlIHJhaW4sIHVwb24geW91LCBub3IgZmllbGRzIG9mIG9mZmVyaW5nczogZm9yIHRoZXJlIHRoZSBzaGllbGQgb2YgdGhlIG1pZ2h0eSBpcyB2aWxlbHkgY2FzdCBhd2F5LCB0aGUgc2hpZWxkIG9mIFNhdWwsIGFzIHRob3VnaCBoZSBoYWQgbm90IGJlZW4gYW5vaW50ZWQgd2l0aCBvaWwuCkZyb20gdGhlIGJsb29kIG9mIHRoZSBzbGFpbiwgZnJvbSB0aGUgZmF0IG9mIHRoZSBtaWdodHksIHRoZSBib3cgb2YgSm9uYXRoYW4gdHVybmVkIG5vdCBiYWNrLCBhbmQgdGhlIHN3b3JkIG9mIFNhdWwgcmV0dXJuZWQgbm90IGVtcHR5LgpTYXVsIGFuZCBKb25hdGhhbiB3ZXJlIGxvdmVseSBhbmQgcGxlYXNhbnQgaW4gdGhlaXIgbGl2ZXMsIGFuZCBpbiB0aGVpciBkZWF0aCB0aGV5IHdlcmUgbm90IGRpdmlkZWQ6IHRoZXkgd2VyZSBzd2lmdGVyIHRoYW4gZWFnbGVzLCB0aGV5IHdlcmUgc3Ryb25nZXIgdGhhbiBsaW9ucy4KWWUgZGF1Z2h0ZXJzIG9mIElzcmFlbCwgd2VlcCBvdmVyIFNhdWwsIHdobyBjbG90aGVkIHlvdSBpbiBzY2FybGV0LCB3aXRoIG90aGVyIGRlbGlnaHRzLCB3aG8gcHV0IG9uIG9ybmFtZW50cyBvZiBnb2xkIHVwb24geW91ciBhcHBhcmVsLgpIb3cgYXJlIHRoZSBtaWdodHkgZmFsbGVuIGluIHRoZSBtaWRzdCBvZiB0aGUgYmF0dGxlISBPIEpvbmF0aGFuLCB0aG91IHdhc3Qgc2xhaW4gaW4gdGhpbmUgaGlnaCBwbGFjZXMuCkkgYW0gZGlzdHJlc3NlZCBmb3IgdGhlZSwgbXkgYnJvdGhlciBKb25hdGhhbjogdmVyeSBwbGVhc2FudCBoYXN0IHRob3UgYmVlbiB1bnRvIG1lOiB0aHkgbG92ZSB0byBtZSB3YXMgd29uZGVyZnVsLCBwYXNzaW5nIHRoZSBsb3ZlIG9mIHdvbWVuLgpIb3cgYXJlIHRoZSBtaWdodHkgZmFsbGVuLCBhbmQgdGhlIHdlYXBvbnMgb2Ygd2FyIHBlcmlzaGVkIQpBbmQgaXQgY2FtZSB0byBwYXNzIGFmdGVyIHRoaXMsIHRoYXQgRGF2aWQgZW5xdWlyZWQgb2YgdGhlIExPUkQsIHNheWluZywgU2hhbGwgSSBnbyB1cCBpbnRvIGFueSBvZiB0aGUgY2l0aWVzIG9mIEp1ZGFoPyBBbmQgdGhlIExPUkQgc2FpZCB1bnRvIGhpbSwgR28gdXAuIEFuZCBEYXZpZCBzYWlkLCBXaGl0aGVyIHNoYWxsIEkgZ28gdXA/IEFuZCBoZSBzYWlkLCBVbnRvIEhlYnJvbi4KU28gRGF2aWQgd2VudCB1cCB0aGl0aGVyLCBhbmQgaGlzIHR3byB3aXZlcyBhbHNvLCBBaGlub2FtIHRoZSBKZXpyZWVsaXRlc3MsIGFuZCBBYmlnYWlsIE5hYmFsJ3Mgd2lmZSB0aGUgQ2FybWVsaXRlLgpBbmQgaGlzIG1lbiB0aGF0IHdlcmUgd2l0aCBoaW0gZGlkIERhdmlkIGJyaW5nIHVwLCBldmVyeSBtYW4gd2l0aCBoaXMgaG91c2Vob2xkOiBhbmQgdGhleSBkd2VsdCBpbiB0aGUgY2l0aWVzIG9mIEhlYnJvbi4KQW5kIHRoZSBtZW4gb2YgSnVkYWggY2FtZSwgYW5kIHRoZXJlIHRoZXkgYW5vaW50ZWQgRGF2aWQga2luZyBvdmVyIHRoZSBob3VzZSBvZiBKdWRhaC4gQW5kIHRoZXkgdG9sZCBEYXZpZCwgc2F5aW5nLCBUaGF0IHRoZSBtZW4gb2YgSmFiZXNoZ2lsZWFkIHdlcmUgdGhleSB0aGF0IGJ1cmllZCBTYXVsLgpBbmQgRGF2aWQgc2VudCBtZXNzZW5nZXJzIHVudG8gdGhlIG1lbiBvZiBKYWJlc2hnaWxlYWQsIGFuZCBzYWlkIHVudG8gdGhlbSwgQmxlc3NlZCBiZSB5ZSBvZiB0aGUgTE9SRCwgdGhhdCB5ZSBoYXZlIHNoZXdlZCB0aGlzIGtpbmRuZXNzIHVudG8geW91ciBsb3JkLCBldmVuIHVudG8gU2F1bCwgYW5kIGhhdmUgYnVyaWVkIGhpbS4KQW5kIG5vdyB0aGUgTE9SRCBzaGV3IGtpbmRuZXNzIGFuZCB0cnV0aCB1bnRvIHlvdTogYW5kIEkgYWxzbyB3aWxsIHJlcXVpdGUgeW91IHRoaXMga2luZG5lc3MsIGJlY2F1c2UgeWUgaGF2ZSBkb25lIHRoaXMgdGhpbmcuClRoZXJlZm9yZSBub3cgbGV0IHlvdXIgaGFuZHMgYmUgc3RyZW5ndGhlbmVkLCBhbmQgYmUgeWUgdmFsaWFudDogZm9yIHlvdXIgbWFzdGVyIFNhdWwgaXMgZGVhZCwgYW5kIGFsc28gdGhlIGhvdXNlIG9mIEp1ZGFoIGhhdmUgYW5vaW50ZWQgbWUga2luZyBvdmVyIHRoZW0uCkJ1dCBBYm5lciB0aGUgc29uIG9mIE5lciwgY2FwdGFpbiBvZiBTYXVsJ3MgaG9zdCwgdG9vayBJc2hib3NoZXRoIHRoZSBzb24gb2YgU2F1bCwgYW5kIGJyb3VnaHQgaGltIG92ZXIgdG8gTWFoYW5haW07CkFuZCBtYWRlIGhpbSBraW5nIG92ZXIgR2lsZWFkLCBhbmQgb3ZlciB0aGUgQXNodXJpdGVzLCBhbmQgb3ZlciBKZXpyZWVsLCBhbmQgb3ZlciBFcGhyYWltLCBhbmQgb3ZlciBCZW5qYW1pbiwgYW5kIG92ZXIgYWxsIElzcmFlbC4KSXNoYm9zaGV0aCBTYXVsJ3Mgc29uIHdhcyBmb3J0eSB5ZWFycyBvbGQgd2hlbiBoZSBiZWdhbiB0byByZWlnbiBvdmVyIElzcmFlbCwgYW5kIHJlaWduZWQgdHdvIHllYXJzLiBCdXQgdGhlIGhvdXNlIG9mIEp1ZGFoIGZvbGxvd2VkIERhdmlkLgpBbmQgdGhlIHRpbWUgdGhhdCBEYXZpZCB3YXMga2luZyBpbiBIZWJyb24gb3ZlciB0aGUgaG91c2Ugb2YgSnVkYWggd2FzIHNldmVuIHllYXJzIGFuZCBzaXggbW9udGhzLgpBbmQgQWJuZXIgdGhlIHNvbiBvZiBOZXIsIGFuZCB0aGUgc2VydmFudHMgb2YgSXNoYm9zaGV0aCB0aGUgc29uIG9mIFNhdWwsIHdlbnQgb3V0IGZyb20gTWFoYW5haW0gdG8gR2liZW9uLgpBbmQgSm9hYiB0aGUgc29uIG9mIFplcnVpYWgsIGFuZCB0aGUgc2VydmFudHMgb2YgRGF2aWQsIHdlbnQgb3V0LCBhbmQgbWV0IHRvZ2V0aGVyIGJ5IHRoZSBwb29sIG9mIEdpYmVvbjogYW5kIHRoZXkgc2F0IGRvd24sIHRoZSBvbmUgb24gdGhlIG9uZSBzaWRlIG9mIHRoZSBwb29sLCBhbmQgdGhlIG90aGVyIG9uIHRoZSBvdGhlciBzaWRlIG9mIHRoZSBwb29sLgpBbmQgQWJuZXIgc2FpZCB0byBKb2FiLCBMZXQgdGhlIHlvdW5nIG1lbiBub3cgYXJpc2UsIGFuZCBwbGF5IGJlZm9yZSB1cy4gQW5kIEpvYWIgc2FpZCwgTGV0IHRoZW0gYXJpc2UuClRoZW4gdGhlcmUgYXJvc2UgYW5kIHdlbnQgb3ZlciBieSBudW1iZXIgdHdlbHZlIG9mIEJlbmphbWluLCB3aGljaCBwZXJ0YWluZWQgdG8gSXNoYm9zaGV0aCB0aGUgc29uIG9mIFNhdWwsIGFuZCB0d2VsdmUgb2YgdGhlIHNlcnZhbnRzIG9mIERhdmlkLgpBbmQgdGhleSBjYXVnaHQgZXZlcnkgb25lIGhpcyBmZWxsb3cgYnkgdGhlIGhlYWQsIGFuZCB0aHJ1c3QgaGlzIHN3b3JkIGluIGhpcyBmZWxsb3cncyBzaWRlOyBzbyB0aGV5IGZlbGwgZG93biB0b2dldGhlcjogd2hlcmVmb3JlIHRoYXQgcGxhY2Ugd2FzIGNhbGxlZCBIZWxrYXRoaGF6enVyaW0sIHdoaWNoIGlzIGluIEdpYmVvbi4KQW5kIHRoZXJlIHdhcyBhIHZlcnkgc29yZSBiYXR0bGUgdGhhdCBkYXk7IGFuZCBBYm5lciB3YXMgYmVhdGVuLCBhbmQgdGhlIG1lbiBvZiBJc3JhZWwsIGJlZm9yZSB0aGUgc2VydmFudHMgb2YgRGF2aWQuCkFuZCB0aGVyZSB3ZXJlIHRocmVlIHNvbnMgb2YgWmVydWlhaCB0aGVyZSwgSm9hYiwgYW5kIEFiaXNoYWksIGFuZCBBc2FoZWw6IGFuZCBBc2FoZWwgd2FzIGFzIGxpZ2h0IG9mIGZvb3QgYXMgYSB3aWxkIHJvZS4KQW5kIEFzYWhlbCBwdXJzdWVkIGFmdGVyIEFibmVyOyBhbmQgaW4gZ29pbmcgaGUgdHVybmVkIG5vdCB0byB0aGUgcmlnaHQgaGFuZCBub3IgdG8gdGhlIGxlZnQgZnJvbSBmb2xsb3dpbmcgQWJuZXIuClRoZW4gQWJuZXIgbG9va2VkIGJlaGluZCBoaW0sIGFuZCBzYWlkLCBBcnQgdGhvdSBBc2FoZWw/IEFuZCBoZSBhbnN3ZXJlZCwgSSBhbS4KQW5kIEFibmVyIHNhaWQgdG8gaGltLCBUdXJuIHRoZWUgYXNpZGUgdG8gdGh5IHJpZ2h0IGhhbmQgb3IgdG8gdGh5IGxlZnQsIGFuZCBsYXkgdGhlZSBob2xkIG9uIG9uZSBvZiB0aGUgeW91bmcgbWVuLCBhbmQgdGFrZSB0aGVlIGhpcyBhcm1vdXIuIEJ1dCBBc2FoZWwgd291bGQgbm90IHR1cm4gYXNpZGUgZnJvbSBmb2xsb3dpbmcgb2YgaGltLgpBbmQgQWJuZXIgc2FpZCBhZ2FpbiB0byBBc2FoZWwsIFR1cm4gdGhlZSBhc2lkZSBmcm9tIGZvbGxvd2luZyBtZTogd2hlcmVmb3JlIHNob3VsZCBJIHNtaXRlIHRoZWUgdG8gdGhlIGdyb3VuZD8gaG93IHRoZW4gc2hvdWxkIEkgaG9sZCB1cCBteSBmYWNlIHRvIEpvYWIgdGh5IGJyb3RoZXI/Ckhvd2JlaXQgaGUgcmVmdXNlZCB0byB0dXJuIGFzaWRlOiB3aGVyZWZvcmUgQWJuZXIgd2l0aCB0aGUgaGluZGVyIGVuZCBvZiB0aGUgc3BlYXIgc21vdGUgaGltIHVuZGVyIHRoZSBmaWZ0aCByaWIsIHRoYXQgdGhlIHNwZWFyIGNhbWUgb3V0IGJlaGluZCBoaW07IGFuZCBoZSBmZWxsIGRvd24gdGhlcmUsIGFuZCBkaWVkIGluIHRoZSBzYW1lIHBsYWNlOiBhbmQgaXQgY2FtZSB0byBwYXNzLCB0aGF0IGFzIG1hbnkgYXMgY2FtZSB0byB0aGUgcGxhY2Ugd2hlcmUgQXNhaGVsIGZlbGwgZG93biBhbmQgZGllZCBzdG9vZCBzdGlsbC4KSm9hYiBhbHNvIGFuZCBBYmlzaGFpIHB1cnN1ZWQgYWZ0ZXIgQWJuZXI6IGFuZCB0aGUgc3VuIHdlbnQgZG93biB3aGVuIHRoZXkgd2VyZSBjb21lIHRvIHRoZSBoaWxsIG9mIEFtbWFoLCB0aGF0IGxpZXRoIGJlZm9yZSBHaWFoIGJ5IHRoZSB3YXkgb2YgdGhlIHdpbGRlcm5lc3Mgb2YgR2liZW9uLgpBbmQgdGhlIGNoaWxkcmVuIG9mIEJlbmphbWluIGdhdGhlcmVkIHRoZW1zZWx2ZXMgdG9nZXRoZXIgYWZ0ZXIgQWJuZXIsIGFuZCBiZWNhbWUgb25lIHRyb29wLCBhbmQgc3Rvb2Qgb24gdGhlIHRvcCBvZiBhbiBoaWxsLgpUaGVuIEFibmVyIGNhbGxlZCB0byBKb2FiLCBhbmQgc2FpZCwgU2hhbGwgdGhlIHN3b3JkIGRldm91ciBmb3IgZXZlcj8ga25vd2VzdCB0aG91IG5vdCB0aGF0IGl0IHdpbGwgYmUgYml0dGVybmVzcyBpbiB0aGUgbGF0dGVyIGVuZD8gaG93IGxvbmcgc2hhbGwgaXQgYmUgdGhlbiwgZXJlIHRob3UgYmlkIHRoZSBwZW9wbGUgcmV0dXJuIGZyb20gZm9sbG93aW5nIHRoZWlyIGJyZXRocmVuPwpBbmQgSm9hYiBzYWlkLCBBcyBHb2QgbGl2ZXRoLCB1bmxlc3MgdGhvdSBoYWRzdCBzcG9rZW4sIHN1cmVseSB0aGVuIGluIHRoZSBtb3JuaW5nIHRoZSBwZW9wbGUgaGFkIGdvbmUgdXAgZXZlcnkgb25lIGZyb20gZm9sbG93aW5nIGhpcyBicm90aGVyLgpTbyBKb2FiIGJsZXcgYSB0cnVtcGV0LCBhbmQgYWxsIHRoZSBwZW9wbGUgc3Rvb2Qgc3RpbGwsIGFuZCBwdXJzdWVkIGFmdGVyIElzcmFlbCBubyBtb3JlLCBuZWl0aGVyIGZvdWdodCB0aGV5IGFueSBtb3JlLgpBbmQgQWJuZXIgYW5kIGhpcyBtZW4gd2Fsa2VkIGFsbCB0aGF0IG5pZ2h0IHRocm91Z2ggdGhlIHBsYWluLCBhbmQgcGFzc2VkIG92ZXIgSm9yZGFuLCBhbmQgd2VudCB0aHJvdWdoIGFsbCBCaXRocm9uLCBhbmQgdGhleSBjYW1lIHRvIE1haGFuYWltLgpBbmQgSm9hYiByZXR1cm5lZCBmcm9tIGZvbGxvd2luZyBBYm5lcjogYW5kIHdoZW4gaGUgaGFkIGdhdGhlcmVkIGFsbCB0aGUgcGVvcGxlIHRvZ2V0aGVyLCB0aGVyZSBsYWNrZWQgb2YgRGF2aWQncyBzZXJ2YW50cyBuaW5ldGVlbiBtZW4gYW5kIEFzYWhlbC4KQnV0IHRoZSBzZXJ2YW50cyBvZiBEYXZpZCBoYWQgc21pdHRlbiBvZiBCZW5qYW1pbiwgYW5kIG9mIEFibmVyJ3MgbWVuLCBzbyB0aGF0IHRocmVlIGh1bmRyZWQgYW5kIHRocmVlc2NvcmUgbWVuIGRpZWQuCkFuZCB0aGV5IHRvb2sgdXAgQXNhaGVsLCBhbmQgYnVyaWVkIGhpbSBpbiB0aGUgc2VwdWxjaHJlIG9mIGhpcyBmYXRoZXIsIHdoaWNoIHdhcyBpbiBCZXRobGVoZW0uIEFuZCBKb2FiIGFuZCBoaXMgbWVuIHdlbnQgYWxsIG5pZ2h0LCBhbmQgdGhleSBjYW1lIHRvIEhlYnJvbiBhdCBicmVhayBvZiBkYXkuCk5vdyB0aGVyZSB3YXMgbG9uZyB3YXIgYmV0d2VlbiB0aGUgaG91c2Ugb2YgU2F1bCBhbmQgdGhlIGhvdXNlIG9mIERhdmlkOiBidXQgRGF2aWQgd2F4ZWQgc3Ryb25nZXIgYW5kIHN0cm9uZ2VyLCBhbmQgdGhlIGhvdXNlIG9mIFNhdWwgd2F4ZWQgd2Vha2VyIGFuZCB3ZWFrZXIuCkFuZCB1bnRvIERhdmlkIHdlcmUgc29ucyBib3JuIGluIEhlYnJvbjogYW5kIGhpcyBmaXJzdGJvcm4gd2FzIEFtbm9uLCBvZiBBaGlub2FtIHRoZSBKZXpyZWVsaXRlc3M7CkFuZCBoaXMgc2Vjb25kLCBDaGlsZWFiLCBvZiBBYmlnYWlsIHRoZSB3aWZlIG9mIE5hYmFsIHRoZSBDYXJtZWxpdGU7IGFuZCB0aGUgdGhpcmQsIEFic2Fsb20gdGhlIHNvbiBvZiBNYWFjYWggdGhlIGRhdWdodGVyIG9mIFRhbG1haSBraW5nIG9mIEdlc2h1cjsKQW5kIHRoZSBmb3VydGgsIEFkb25pamFoIHRoZSBzb24gb2YgSGFnZ2l0aDsgYW5kIHRoZSBmaWZ0aCwgU2hlcGhhdGlhaCB0aGUgc29uIG9mIEFiaXRhbDsKQW5kIHRoZSBzaXh0aCwgSXRocmVhbSwgYnkgRWdsYWggRGF2aWQncyB3aWZlLiBUaGVzZSB3ZXJlIGJvcm4gdG8gRGF2aWQgaW4gSGVicm9uLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGlsZSB0aGVyZSB3YXMgd2FyIGJldHdlZW4gdGhlIGhvdXNlIG9mIFNhdWwgYW5kIHRoZSBob3VzZSBvZiBEYXZpZCwgdGhhdCBBYm5lciBtYWRlIGhpbXNlbGYgc3Ryb25nIGZvciB0aGUgaG91c2Ugb2YgU2F1bC4KQW5kIFNhdWwgaGFkIGEgY29uY3ViaW5lLCB3aG9zZSBuYW1lIHdhcyBSaXpwYWgsIHRoZSBkYXVnaHRlciBvZiBBaWFoOiBhbmQgSXNoYm9zaGV0aCBzYWlkIHRvIEFibmVyLCBXaGVyZWZvcmUgaGFzdCB0aG91IGdvbmUgaW4gdW50byBteSBmYXRoZXIncyBjb25jdWJpbmU/ClRoZW4gd2FzIEFibmVyIHZlcnkgd3JvdGggZm9yIHRoZSB3b3JkcyBvZiBJc2hib3NoZXRoLCBhbmQgc2FpZCwgQW0gSSBhIGRvZydzIGhlYWQsIHdoaWNoIGFnYWluc3QgSnVkYWggZG8gc2hldyBraW5kbmVzcyB0aGlzIGRheSB1bnRvIHRoZSBob3VzZSBvZiBTYXVsIHRoeSBmYXRoZXIsIHRvIGhpcyBicmV0aHJlbiwgYW5kIHRvIGhpcyBmcmllbmRzLCBhbmQgaGF2ZSBub3QgZGVsaXZlcmVkIHRoZWUgaW50byB0aGUgaGFuZCBvZiBEYXZpZCwgdGhhdCB0aG91IGNoYXJnZXN0IG1lIHRvIGRheSB3aXRoIGEgZmF1bHQgY29uY2VybmluZyB0aGlzIHdvbWFuPwpTbyBkbyBHb2QgdG8gQWJuZXIsIGFuZCBtb3JlIGFsc28sIGV4Y2VwdCwgYXMgdGhlIExPUkQgaGF0aCBzd29ybiB0byBEYXZpZCwgZXZlbiBzbyBJIGRvIHRvIGhpbTsKVG8gdHJhbnNsYXRlIHRoZSBraW5nZG9tIGZyb20gdGhlIGhvdXNlIG9mIFNhdWwsIGFuZCB0byBzZXQgdXAgdGhlIHRocm9uZSBvZiBEYXZpZCBvdmVyIElzcmFlbCBhbmQgb3ZlciBKdWRhaCwgZnJvbSBEYW4gZXZlbiB0byBCZWVyc2hlYmEuCkFuZCBoZSBjb3VsZCBub3QgYW5zd2VyIEFibmVyIGEgd29yZCBhZ2FpbiwgYmVjYXVzZSBoZSBmZWFyZWQgaGltLgpBbmQgQWJuZXIgc2VudCBtZXNzZW5nZXJzIHRvIERhdmlkIG9uIGhpcyBiZWhhbGYsIHNheWluZywgV2hvc2UgaXMgdGhlIGxhbmQ/IHNheWluZyBhbHNvLCBNYWtlIHRoeSBsZWFndWUgd2l0aCBtZSwgYW5kLCBiZWhvbGQsIG15IGhhbmQgc2hhbGwgYmUgd2l0aCB0aGVlLCB0byBicmluZyBhYm91dCBhbGwgSXNyYWVsIHVudG8gdGhlZS4KQW5kIGhlIHNhaWQsIFdlbGw7IEkgd2lsbCBtYWtlIGEgbGVhZ3VlIHdpdGggdGhlZTogYnV0IG9uZSB0aGluZyBJIHJlcXVpcmUgb2YgdGhlZSwgdGhhdCBpcywgVGhvdSBzaGFsdCBub3Qgc2VlIG15IGZhY2UsIGV4Y2VwdCB0aG91IGZpcnN0IGJyaW5nIE1pY2hhbCBTYXVsJ3MgZGF1Z2h0ZXIsIHdoZW4gdGhvdSBjb21lc3QgdG8gc2VlIG15IGZhY2UuCkFuZCBEYXZpZCBzZW50IG1lc3NlbmdlcnMgdG8gSXNoYm9zaGV0aCBTYXVsJ3Mgc29uLCBzYXlpbmcsIERlbGl2ZXIgbWUgbXkgd2lmZSBNaWNoYWwsIHdoaWNoIEkgZXNwb3VzZWQgdG8gbWUgZm9yIGFuIGh1bmRyZWQgZm9yZXNraW5zIG9mIHRoZSBQaGlsaXN0aW5lcy4KQW5kIElzaGJvc2hldGggc2VudCwgYW5kIHRvb2sgaGVyIGZyb20gaGVyIGh1c2JhbmQsIGV2ZW4gZnJvbSBQaGFsdGllbCB0aGUgc29uIG9mIExhaXNoLgpBbmQgaGVyIGh1c2JhbmQgd2VudCB3aXRoIGhlciBhbG9uZyB3ZWVwaW5nIGJlaGluZCBoZXIgdG8gQmFodXJpbS4gVGhlbiBzYWlkIEFibmVyIHVudG8gaGltLCBHbywgcmV0dXJuLiBBbmQgaGUgcmV0dXJuZWQuCkFuZCBBYm5lciBoYWQgY29tbXVuaWNhdGlvbiB3aXRoIHRoZSBlbGRlcnMgb2YgSXNyYWVsLCBzYXlpbmcsIFllIHNvdWdodCBmb3IgRGF2aWQgaW4gdGltZXMgcGFzdCB0byBiZSBraW5nIG92ZXIgeW91OgpOb3cgdGhlbiBkbyBpdDogZm9yIHRoZSBMT1JEIGhhdGggc3Bva2VuIG9mIERhdmlkLCBzYXlpbmcsIEJ5IHRoZSBoYW5kIG9mIG15IHNlcnZhbnQgRGF2aWQgSSB3aWxsIHNhdmUgbXkgcGVvcGxlIElzcmFlbCBvdXQgb2YgdGhlIGhhbmQgb2YgdGhlIFBoaWxpc3RpbmVzLCBhbmQgb3V0IG9mIHRoZSBoYW5kIG9mIGFsbCB0aGVpciBlbmVtaWVzLgpBbmQgQWJuZXIgYWxzbyBzcGFrZSBpbiB0aGUgZWFycyBvZiBCZW5qYW1pbjogYW5kIEFibmVyIHdlbnQgYWxzbyB0byBzcGVhayBpbiB0aGUgZWFycyBvZiBEYXZpZCBpbiBIZWJyb24gYWxsIHRoYXQgc2VlbWVkIGdvb2QgdG8gSXNyYWVsLCBhbmQgdGhhdCBzZWVtZWQgZ29vZCB0byB0aGUgd2hvbGUgaG91c2Ugb2YgQmVuamFtaW4uClNvIEFibmVyIGNhbWUgdG8gRGF2aWQgdG8gSGVicm9uLCBhbmQgdHdlbnR5IG1lbiB3aXRoIGhpbS4gQW5kIERhdmlkIG1hZGUgQWJuZXIgYW5kIHRoZSBtZW4gdGhhdCB3ZXJlIHdpdGggaGltIGEgZmVhc3QuCkFuZCBBYm5lciBzYWlkIHVudG8gRGF2aWQsIEkgd2lsbCBhcmlzZSBhbmQgZ28sIGFuZCB3aWxsIGdhdGhlciBhbGwgSXNyYWVsIHVudG8gbXkgbG9yZCB0aGUga2luZywgdGhhdCB0aGV5IG1heSBtYWtlIGEgbGVhZ3VlIHdpdGggdGhlZSwgYW5kIHRoYXQgdGhvdSBtYXllc3QgcmVpZ24gb3ZlciBhbGwgdGhhdCB0aGluZSBoZWFydCBkZXNpcmV0aC4gQW5kIERhdmlkIHNlbnQgQWJuZXIgYXdheTsgYW5kIGhlIHdlbnQgaW4gcGVhY2UuCkFuZCwgYmVob2xkLCB0aGUgc2VydmFudHMgb2YgRGF2aWQgYW5kIEpvYWIgY2FtZSBmcm9tIHB1cnN1aW5nIGEgdHJvb3AsIGFuZCBicm91Z2h0IGluIGEgZ3JlYXQgc3BvaWwgd2l0aCB0aGVtOiBidXQgQWJuZXIgd2FzIG5vdCB3aXRoIERhdmlkIGluIEhlYnJvbjsgZm9yIGhlIGhhZCBzZW50IGhpbSBhd2F5LCBhbmQgaGUgd2FzIGdvbmUgaW4gcGVhY2UuCldoZW4gSm9hYiBhbmQgYWxsIHRoZSBob3N0IHRoYXQgd2FzIHdpdGggaGltIHdlcmUgY29tZSwgdGhleSB0b2xkIEpvYWIsIHNheWluZywgQWJuZXIgdGhlIHNvbiBvZiBOZXIgY2FtZSB0byB0aGUga2luZywgYW5kIGhlIGhhdGggc2VudCBoaW0gYXdheSwgYW5kIGhlIGlzIGdvbmUgaW4gcGVhY2UuClRoZW4gSm9hYiBjYW1lIHRvIHRoZSBraW5nLCBhbmQgc2FpZCwgV2hhdCBoYXN0IHRob3UgZG9uZT8gYmVob2xkLCBBYm5lciBjYW1lIHVudG8gdGhlZTsgd2h5IGlzIGl0IHRoYXQgdGhvdSBoYXN0IHNlbnQgaGltIGF3YXksIGFuZCBoZSBpcyBxdWl0ZSBnb25lPwpUaG91IGtub3dlc3QgQWJuZXIgdGhlIHNvbiBvZiBOZXIsIHRoYXQgaGUgY2FtZSB0byBkZWNlaXZlIHRoZWUsIGFuZCB0byBrbm93IHRoeSBnb2luZyBvdXQgYW5kIHRoeSBjb21pbmcgaW4sIGFuZCB0byBrbm93IGFsbCB0aGF0IHRob3UgZG9lc3QuCkFuZCB3aGVuIEpvYWIgd2FzIGNvbWUgb3V0IGZyb20gRGF2aWQsIGhlIHNlbnQgbWVzc2VuZ2VycyBhZnRlciBBYm5lciwgd2hpY2ggYnJvdWdodCBoaW0gYWdhaW4gZnJvbSB0aGUgd2VsbCBvZiBTaXJhaDogYnV0IERhdmlkIGtuZXcgaXQgbm90LgpBbmQgd2hlbiBBYm5lciB3YXMgcmV0dXJuZWQgdG8gSGVicm9uLCBKb2FiIHRvb2sgaGltIGFzaWRlIGluIHRoZSBnYXRlIHRvIHNwZWFrIHdpdGggaGltIHF1aWV0bHksIGFuZCBzbW90ZSBoaW0gdGhlcmUgdW5kZXIgdGhlIGZpZnRoIHJpYiwgdGhhdCBoZSBkaWVkLCBmb3IgdGhlIGJsb29kIG9mIEFzYWhlbCBoaXMgYnJvdGhlci4KQW5kIGFmdGVyd2FyZCB3aGVuIERhdmlkIGhlYXJkIGl0LCBoZSBzYWlkLCBJIGFuZCBteSBraW5nZG9tIGFyZSBndWlsdGxlc3MgYmVmb3JlIHRoZSBMT1JEIGZvciBldmVyIGZyb20gdGhlIGJsb29kIG9mIEFibmVyIHRoZSBzb24gb2YgTmVyOgpMZXQgaXQgcmVzdCBvbiB0aGUgaGVhZCBvZiBKb2FiLCBhbmQgb24gYWxsIGhpcyBmYXRoZXIncyBob3VzZTsgYW5kIGxldCB0aGVyZSBub3QgZmFpbCBmcm9tIHRoZSBob3VzZSBvZiBKb2FiIG9uZSB0aGF0IGhhdGggYW4gaXNzdWUsIG9yIHRoYXQgaXMgYSBsZXBlciwgb3IgdGhhdCBsZWFuZXRoIG9uIGEgc3RhZmYsIG9yIHRoYXQgZmFsbGV0aCBvbiB0aGUgc3dvcmQsIG9yIHRoYXQgbGFja2V0aCBicmVhZC4KU28gSm9hYiwgYW5kIEFiaXNoYWkgaGlzIGJyb3RoZXIgc2xldyBBYm5lciwgYmVjYXVzZSBoZSBoYWQgc2xhaW4gdGhlaXIgYnJvdGhlciBBc2FoZWwgYXQgR2liZW9uIGluIHRoZSBiYXR0bGUuCkFuZCBEYXZpZCBzYWlkIHRvIEpvYWIsIGFuZCB0byBhbGwgdGhlIHBlb3BsZSB0aGF0IHdlcmUgd2l0aCBoaW0sIFJlbmQgeW91ciBjbG90aGVzLCBhbmQgZ2lyZCB5b3Ugd2l0aCBzYWNrY2xvdGgsIGFuZCBtb3VybiBiZWZvcmUgQWJuZXIuIEFuZCBraW5nIERhdmlkIGhpbXNlbGYgZm9sbG93ZWQgdGhlIGJpZXIuCkFuZCB0aGV5IGJ1cmllZCBBYm5lciBpbiBIZWJyb246IGFuZCB0aGUga2luZyBsaWZ0ZWQgdXAgaGlzIHZvaWNlLCBhbmQgd2VwdCBhdCB0aGUgZ3JhdmUgb2YgQWJuZXI7IGFuZCBhbGwgdGhlIHBlb3BsZSB3ZXB0LgpBbmQgdGhlIGtpbmcgbGFtZW50ZWQgb3ZlciBBYm5lciwgYW5kIHNhaWQsIERpZWQgQWJuZXIgYXMgYSBmb29sIGRpZXRoPwpUaHkgaGFuZHMgd2VyZSBub3QgYm91bmQsIG5vciB0aHkgZmVldCBwdXQgaW50byBmZXR0ZXJzOiBhcyBhIG1hbiBmYWxsZXRoIGJlZm9yZSB3aWNrZWQgbWVuLCBzbyBmZWxsZXN0IHRob3UuIEFuZCBhbGwgdGhlIHBlb3BsZSB3ZXB0IGFnYWluIG92ZXIgaGltLgpBbmQgd2hlbiBhbGwgdGhlIHBlb3BsZSBjYW1lIHRvIGNhdXNlIERhdmlkIHRvIGVhdCBtZWF0IHdoaWxlIGl0IHdhcyB5ZXQgZGF5LCBEYXZpZCBzd2FyZSwgc2F5aW5nLCBTbyBkbyBHb2QgdG8gbWUsIGFuZCBtb3JlIGFsc28sIGlmIEkgdGFzdGUgYnJlYWQsIG9yIG91Z2h0IGVsc2UsIHRpbGwgdGhlIHN1biBiZSBkb3duLgpBbmQgYWxsIHRoZSBwZW9wbGUgdG9vayBub3RpY2Ugb2YgaXQsIGFuZCBpdCBwbGVhc2VkIHRoZW06IGFzIHdoYXRzb2V2ZXIgdGhlIGtpbmcgZGlkIHBsZWFzZWQgYWxsIHRoZSBwZW9wbGUuCkZvciBhbGwgdGhlIHBlb3BsZSBhbmQgYWxsIElzcmFlbCB1bmRlcnN0b29kIHRoYXQgZGF5IHRoYXQgaXQgd2FzIG5vdCBvZiB0aGUga2luZyB0byBzbGF5IEFibmVyIHRoZSBzb24gb2YgTmVyLgpBbmQgdGhlIGtpbmcgc2FpZCB1bnRvIGhpcyBzZXJ2YW50cywgS25vdyB5ZSBub3QgdGhhdCB0aGVyZSBpcyBhIHByaW5jZSBhbmQgYSBncmVhdCBtYW4gZmFsbGVuIHRoaXMgZGF5IGluIElzcmFlbD8KQW5kIEkgYW0gdGhpcyBkYXkgd2VhaywgdGhvdWdoIGFub2ludGVkIGtpbmc7IGFuZCB0aGVzZSBtZW4gdGhlIHNvbnMgb2YgWmVydWlhaCBiZSB0b28gaGFyZCBmb3IgbWU6IHRoZSBMT1JEIHNoYWxsIHJld2FyZCB0aGUgZG9lciBvZiBldmlsIGFjY29yZGluZyB0byBoaXMgd2lja2VkbmVzcy4KQW5kIHdoZW4gU2F1bCdzIHNvbiBoZWFyZCB0aGF0IEFibmVyIHdhcyBkZWFkIGluIEhlYnJvbiwgaGlzIGhhbmRzIHdlcmUgZmVlYmxlLCBhbmQgYWxsIHRoZSBJc3JhZWxpdGVzIHdlcmUgdHJvdWJsZWQuCkFuZCBTYXVsJ3Mgc29uIGhhZCB0d28gbWVuIHRoYXQgd2VyZSBjYXB0YWlucyBvZiBiYW5kczogdGhlIG5hbWUgb2YgdGhlIG9uZSB3YXMgQmFhbmFoLCBhbmQgdGhlIG5hbWUgb2YgdGhlIG90aGVyIFJlY2hhYiwgdGhlIHNvbnMgb2YgUmltbW9uIGEgQmVlcm90aGl0ZSwgb2YgdGhlIGNoaWxkcmVuIG9mIEJlbmphbWluOiAoZm9yIEJlZXJvdGggYWxzbyB3YXMgcmVja29uZWQgdG8gQmVuamFtaW4uCkFuZCB0aGUgQmVlcm90aGl0ZXMgZmxlZCB0byBHaXR0YWltLCBhbmQgd2VyZSBzb2pvdXJuZXJzIHRoZXJlIHVudGlsIHRoaXMgZGF5LikKQW5kIEpvbmF0aGFuLCBTYXVsJ3Mgc29uLCBoYWQgYSBzb24gdGhhdCB3YXMgbGFtZSBvZiBoaXMgZmVldC4gSGUgd2FzIGZpdmUgeWVhcnMgb2xkIHdoZW4gdGhlIHRpZGluZ3MgY2FtZSBvZiBTYXVsIGFuZCBKb25hdGhhbiBvdXQgb2YgSmV6cmVlbCwgYW5kIGhpcyBudXJzZSB0b29rIGhpbSB1cCwgYW5kIGZsZWQ6IGFuZCBpdCBjYW1lIHRvIHBhc3MsIGFzIHNoZSBtYWRlIGhhc3RlIHRvIGZsZWUsIHRoYXQgaGUgZmVsbCwgYW5kIGJlY2FtZSBsYW1lLiBBbmQgaGlzIG5hbWUgd2FzIE1lcGhpYm9zaGV0aC4KQW5kIHRoZSBzb25zIG9mIFJpbW1vbiB0aGUgQmVlcm90aGl0ZSwgUmVjaGFiIGFuZCBCYWFuYWgsIHdlbnQsIGFuZCBjYW1lIGFib3V0IHRoZSBoZWF0IG9mIHRoZSBkYXkgdG8gdGhlIGhvdXNlIG9mIElzaGJvc2hldGgsIHdobyBsYXkgb24gYSBiZWQgYXQgbm9vbi4KQW5kIHRoZXkgY2FtZSB0aGl0aGVyIGludG8gdGhlIG1pZHN0IG9mIHRoZSBob3VzZSwgYXMgdGhvdWdoIHRoZXkgd291bGQgaGF2ZSBmZXRjaGVkIHdoZWF0OyBhbmQgdGhleSBzbW90ZSBoaW0gdW5kZXIgdGhlIGZpZnRoIHJpYjogYW5kIFJlY2hhYiBhbmQgQmFhbmFoIGhpcyBicm90aGVyIGVzY2FwZWQuCkZvciB3aGVuIHRoZXkgY2FtZSBpbnRvIHRoZSBob3VzZSwgaGUgbGF5IG9uIGhpcyBiZWQgaW4gaGlzIGJlZGNoYW1iZXIsIGFuZCB0aGV5IHNtb3RlIGhpbSwgYW5kIHNsZXcgaGltLCBhbmQgYmVoZWFkZWQgaGltLCBhbmQgdG9vayBoaXMgaGVhZCwgYW5kIGdhdCB0aGVtIGF3YXkgdGhyb3VnaCB0aGUgcGxhaW4gYWxsIG5pZ2h0LgpBbmQgdGhleSBicm91Z2h0IHRoZSBoZWFkIG9mIElzaGJvc2hldGggdW50byBEYXZpZCB0byBIZWJyb24sIGFuZCBzYWlkIHRvIHRoZSBraW5nLCBCZWhvbGQgdGhlIGhlYWQgb2YgSXNoYm9zaGV0aCB0aGUgc29uIG9mIFNhdWwgdGhpbmUgZW5lbXksIHdoaWNoIHNvdWdodCB0aHkgbGlmZTsgYW5kIHRoZSBMT1JEIGhhdGggYXZlbmdlZCBteSBsb3JkIHRoZSBraW5nIHRoaXMgZGF5IG9mIFNhdWwsIGFuZCBvZiBoaXMgc2VlZC4KQW5kIERhdmlkIGFuc3dlcmVkIFJlY2hhYiBhbmQgQmFhbmFoIGhpcyBicm90aGVyLCB0aGUgc29ucyBvZiBSaW1tb24gdGhlIEJlZXJvdGhpdGUsIGFuZCBzYWlkIHVudG8gdGhlbSwgQXMgdGhlIExPUkQgbGl2ZXRoLCB3aG8gaGF0aCByZWRlZW1lZCBteSBzb3VsIG91dCBvZiBhbGwgYWR2ZXJzaXR5LApXaGVuIG9uZSB0b2xkIG1lLCBzYXlpbmcsIEJlaG9sZCwgU2F1bCBpcyBkZWFkLCB0aGlua2luZyB0byBoYXZlIGJyb3VnaHQgZ29vZCB0aWRpbmdzLCBJIHRvb2sgaG9sZCBvZiBoaW0sIGFuZCBzbGV3IGhpbSBpbiBaaWtsYWcsIHdobyB0aG91Z2h0IHRoYXQgSSB3b3VsZCBoYXZlIGdpdmVuIGhpbSBhIHJld2FyZCBmb3IgaGlzIHRpZGluZ3M6CkhvdyBtdWNoIG1vcmUsIHdoZW4gd2lja2VkIG1lbiBoYXZlIHNsYWluIGEgcmlnaHRlb3VzIHBlcnNvbiBpbiBoaXMgb3duIGhvdXNlIHVwb24gaGlzIGJlZD8gc2hhbGwgSSBub3QgdGhlcmVmb3JlIG5vdyByZXF1aXJlIGhpcyBibG9vZCBvZiB5b3VyIGhhbmQsIGFuZCB0YWtlIHlvdSBhd2F5IGZyb20gdGhlIGVhcnRoPwpBbmQgRGF2aWQgY29tbWFuZGVkIGhpcyB5b3VuZyBtZW4sIGFuZCB0aGV5IHNsZXcgdGhlbSwgYW5kIGN1dCBvZmYgdGhlaXIgaGFuZHMgYW5kIHRoZWlyIGZlZXQsIGFuZCBoYW5nZWQgdGhlbSB1cCBvdmVyIHRoZSBwb29sIGluIEhlYnJvbi4gQnV0IHRoZXkgdG9vayB0aGUgaGVhZCBvZiBJc2hib3NoZXRoLCBhbmQgYnVyaWVkIGl0IGluIHRoZSBzZXB1bGNocmUgb2YgQWJuZXIgaW4gSGVicm9uLgpUaGVuIGNhbWUgYWxsIHRoZSB0cmliZXMgb2YgSXNyYWVsIHRvIERhdmlkIHVudG8gSGVicm9uLCBhbmQgc3Bha2UsIHNheWluZywgQmVob2xkLCB3ZSBhcmUgdGh5IGJvbmUgYW5kIHRoeSBmbGVzaC4KQWxzbyBpbiB0aW1lIHBhc3QsIHdoZW4gU2F1bCB3YXMga2luZyBvdmVyIHVzLCB0aG91IHdhc3QgaGUgdGhhdCBsZWRkZXN0IG91dCBhbmQgYnJvdWdodGVzdCBpbiBJc3JhZWw6IGFuZCB0aGUgTE9SRCBzYWlkIHRvIHRoZWUsIFRob3Ugc2hhbHQgZmVlZCBteSBwZW9wbGUgSXNyYWVsLCBhbmQgdGhvdSBzaGFsdCBiZSBhIGNhcHRhaW4gb3ZlciBJc3JhZWwuClNvIGFsbCB0aGUgZWxkZXJzIG9mIElzcmFlbCBjYW1lIHRvIHRoZSBraW5nIHRvIEhlYnJvbjsgYW5kIGtpbmcgRGF2aWQgbWFkZSBhIGxlYWd1ZSB3aXRoIHRoZW0gaW4gSGVicm9uIGJlZm9yZSB0aGUgTE9SRDogYW5kIHRoZXkgYW5vaW50ZWQgRGF2aWQga2luZyBvdmVyIElzcmFlbC4KRGF2aWQgd2FzIHRoaXJ0eSB5ZWFycyBvbGQgd2hlbiBoZSBiZWdhbiB0byByZWlnbiwgYW5kIGhlIHJlaWduZWQgZm9ydHkgeWVhcnMuCkluIEhlYnJvbiBoZSByZWlnbmVkIG92ZXIgSnVkYWggc2V2ZW4geWVhcnMgYW5kIHNpeCBtb250aHM6IGFuZCBpbiBKZXJ1c2FsZW0gaGUgcmVpZ25lZCB0aGlydHkgYW5kIHRocmVlIHllYXJzIG92ZXIgYWxsIElzcmFlbCBhbmQgSnVkYWguCkFuZCB0aGUga2luZyBhbmQgaGlzIG1lbiB3ZW50IHRvIEplcnVzYWxlbSB1bnRvIHRoZSBKZWJ1c2l0ZXMsIHRoZSBpbmhhYml0YW50cyBvZiB0aGUgbGFuZDogd2hpY2ggc3Bha2UgdW50byBEYXZpZCwgc2F5aW5nLCBFeGNlcHQgdGhvdSB0YWtlIGF3YXkgdGhlIGJsaW5kIGFuZCB0aGUgbGFtZSwgdGhvdSBzaGFsdCBub3QgY29tZSBpbiBoaXRoZXI6IHRoaW5raW5nLCBEYXZpZCBjYW5ub3QgY29tZSBpbiBoaXRoZXIuCk5ldmVydGhlbGVzcyBEYXZpZCB0b29rIHRoZSBzdHJvbmcgaG9sZCBvZiBaaW9uOiB0aGUgc2FtZSBpcyB0aGUgY2l0eSBvZiBEYXZpZC4KQW5kIERhdmlkIHNhaWQgb24gdGhhdCBkYXksIFdob3NvZXZlciBnZXR0ZXRoIHVwIHRvIHRoZSBndXR0ZXIsIGFuZCBzbWl0ZXRoIHRoZSBKZWJ1c2l0ZXMsIGFuZCB0aGUgbGFtZSBhbmQgdGhlIGJsaW5kIHRoYXQgYXJlIGhhdGVkIG9mIERhdmlkJ3Mgc291bCwgaGUgc2hhbGwgYmUgY2hpZWYgYW5kIGNhcHRhaW4uIFdoZXJlZm9yZSB0aGV5IHNhaWQsIFRoZSBibGluZCBhbmQgdGhlIGxhbWUgc2hhbGwgbm90IGNvbWUgaW50byB0aGUgaG91c2UuClNvIERhdmlkIGR3ZWx0IGluIHRoZSBmb3J0LCBhbmQgY2FsbGVkIGl0IHRoZSBjaXR5IG9mIERhdmlkLiBBbmQgRGF2aWQgYnVpbHQgcm91bmQgYWJvdXQgZnJvbSBNaWxsbyBhbmQgaW53YXJkLgpBbmQgRGF2aWQgd2VudCBvbiwgYW5kIGdyZXcgZ3JlYXQsIGFuZCB0aGUgTE9SRCBHb2Qgb2YgaG9zdHMgd2FzIHdpdGggaGltLgpBbmQgSGlyYW0ga2luZyBvZiBUeXJlIHNlbnQgbWVzc2VuZ2VycyB0byBEYXZpZCwgYW5kIGNlZGFyIHRyZWVzLCBhbmQgY2FycGVudGVycywgYW5kIG1hc29uczogYW5kIHRoZXkgYnVpbHQgRGF2aWQgYW4gaG91c2UuCkFuZCBEYXZpZCBwZXJjZWl2ZWQgdGhhdCB0aGUgTE9SRCBoYWQgZXN0YWJsaXNoZWQgaGltIGtpbmcgb3ZlciBJc3JhZWwsIGFuZCB0aGF0IGhlIGhhZCBleGFsdGVkIGhpcyBraW5nZG9tIGZvciBoaXMgcGVvcGxlIElzcmFlbCdzIHNha2UuCkFuZCBEYXZpZCB0b29rIGhpbSBtb3JlIGNvbmN1YmluZXMgYW5kIHdpdmVzIG91dCBvZiBKZXJ1c2FsZW0sIGFmdGVyIGhlIHdhcyBjb21lIGZyb20gSGVicm9uOiBhbmQgdGhlcmUgd2VyZSB5ZXQgc29ucyBhbmQgZGF1Z2h0ZXJzIGJvcm4gdG8gRGF2aWQuCkFuZCB0aGVzZSBiZSB0aGUgbmFtZXMgb2YgdGhvc2UgdGhhdCB3ZXJlIGJvcm4gdW50byBoaW0gaW4gSmVydXNhbGVtOyBTaGFtbXVhaCwgYW5kIFNob2JhYiwgYW5kIE5hdGhhbiwgYW5kIFNvbG9tb24sCkliaGFyIGFsc28sIGFuZCBFbGlzaHVhLCBhbmQgTmVwaGVnLCBhbmQgSmFwaGlhLApBbmQgRWxpc2hhbWEsIGFuZCBFbGlhZGEsIGFuZCBFbGlwaGFsZXQuCkJ1dCB3aGVuIHRoZSBQaGlsaXN0aW5lcyBoZWFyZCB0aGF0IHRoZXkgaGFkIGFub2ludGVkIERhdmlkIGtpbmcgb3ZlciBJc3JhZWwsIGFsbCB0aGUgUGhpbGlzdGluZXMgY2FtZSB1cCB0byBzZWVrIERhdmlkOyBhbmQgRGF2aWQgaGVhcmQgb2YgaXQsIGFuZCB3ZW50IGRvd24gdG8gdGhlIGhvbGQuClRoZSBQaGlsaXN0aW5lcyBhbHNvIGNhbWUgYW5kIHNwcmVhZCB0aGVtc2VsdmVzIGluIHRoZSB2YWxsZXkgb2YgUmVwaGFpbS4KQW5kIERhdmlkIGVucXVpcmVkIG9mIHRoZSBMT1JELCBzYXlpbmcsIFNoYWxsIEkgZ28gdXAgdG8gdGhlIFBoaWxpc3RpbmVzPyB3aWx0IHRob3UgZGVsaXZlciB0aGVtIGludG8gbWluZSBoYW5kPyBBbmQgdGhlIExPUkQgc2FpZCB1bnRvIERhdmlkLCBHbyB1cDogZm9yIEkgd2lsbCBkb3VidGxlc3MgZGVsaXZlciB0aGUgUGhpbGlzdGluZXMgaW50byB0aGluZSBoYW5kLgpBbmQgRGF2aWQgY2FtZSB0byBCYWFscGVyYXppbSwgYW5kIERhdmlkIHNtb3RlIHRoZW0gdGhlcmUsIGFuZCBzYWlkLCBUaGUgTE9SRCBoYXRoIGJyb2tlbiBmb3J0aCB1cG9uIG1pbmUgZW5lbWllcyBiZWZvcmUgbWUsIGFzIHRoZSBicmVhY2ggb2Ygd2F0ZXJzLiBUaGVyZWZvcmUgaGUgY2FsbGVkIHRoZSBuYW1lIG9mIHRoYXQgcGxhY2UgQmFhbHBlcmF6aW0uCkFuZCB0aGVyZSB0aGV5IGxlZnQgdGhlaXIgaW1hZ2VzLCBhbmQgRGF2aWQgYW5kIGhpcyBtZW4gYnVybmVkIHRoZW0uCkFuZCB0aGUgUGhpbGlzdGluZXMgY2FtZSB1cCB5ZXQgYWdhaW4sIGFuZCBzcHJlYWQgdGhlbXNlbHZlcyBpbiB0aGUgdmFsbGV5IG9mIFJlcGhhaW0uCkFuZCB3aGVuIERhdmlkIGVucXVpcmVkIG9mIHRoZSBMT1JELCBoZSBzYWlkLCBUaG91IHNoYWx0IG5vdCBnbyB1cDsgYnV0IGZldGNoIGEgY29tcGFzcyBiZWhpbmQgdGhlbSwgYW5kIGNvbWUgdXBvbiB0aGVtIG92ZXIgYWdhaW5zdCB0aGUgbXVsYmVycnkgdHJlZXMuCkFuZCBsZXQgaXQgYmUsIHdoZW4gdGhvdSBoZWFyZXN0IHRoZSBzb3VuZCBvZiBhIGdvaW5nIGluIHRoZSB0b3BzIG9mIHRoZSBtdWxiZXJyeSB0cmVlcywgdGhhdCB0aGVuIHRob3Ugc2hhbHQgYmVzdGlyIHRoeXNlbGY6IGZvciB0aGVuIHNoYWxsIHRoZSBMT1JEIGdvIG91dCBiZWZvcmUgdGhlZSwgdG8gc21pdGUgdGhlIGhvc3Qgb2YgdGhlIFBoaWxpc3RpbmVzLgpBbmQgRGF2aWQgZGlkIHNvLCBhcyB0aGUgTE9SRCBoYWQgY29tbWFuZGVkIGhpbTsgYW5kIHNtb3RlIHRoZSBQaGlsaXN0aW5lcyBmcm9tIEdlYmEgdW50aWwgdGhvdSBjb21lIHRvIEdhemVyLgpBZ2FpbiwgRGF2aWQgZ2F0aGVyZWQgdG9nZXRoZXIgYWxsIHRoZSBjaG9zZW4gbWVuIG9mIElzcmFlbCwgdGhpcnR5IHRob3VzYW5kLgpBbmQgRGF2aWQgYXJvc2UsIGFuZCB3ZW50IHdpdGggYWxsIHRoZSBwZW9wbGUgdGhhdCB3ZXJlIHdpdGggaGltIGZyb20gQmFhbGUgb2YgSnVkYWgsIHRvIGJyaW5nIHVwIGZyb20gdGhlbmNlIHRoZSBhcmsgb2YgR29kLCB3aG9zZSBuYW1lIGlzIGNhbGxlZCBieSB0aGUgbmFtZSBvZiB0aGUgTE9SRCBvZiBob3N0cyB0aGF0IGR3ZWxsZXRoIGJldHdlZW4gdGhlIGNoZXJ1Ymltcy4KQW5kIHRoZXkgc2V0IHRoZSBhcmsgb2YgR29kIHVwb24gYSBuZXcgY2FydCwgYW5kIGJyb3VnaHQgaXQgb3V0IG9mIHRoZSBob3VzZSBvZiBBYmluYWRhYiB0aGF0IHdhcyBpbiBHaWJlYWg6IGFuZCBVenphaCBhbmQgQWhpbywgdGhlIHNvbnMgb2YgQWJpbmFkYWIsIGRyYXZlIHRoZSBuZXcgY2FydC4KQW5kIHRoZXkgYnJvdWdodCBpdCBvdXQgb2YgdGhlIGhvdXNlIG9mIEFiaW5hZGFiIHdoaWNoIHdhcyBhdCBHaWJlYWgsIGFjY29tcGFueWluZyB0aGUgYXJrIG9mIEdvZDogYW5kIEFoaW8gd2VudCBiZWZvcmUgdGhlIGFyay4KQW5kIERhdmlkIGFuZCBhbGwgdGhlIGhvdXNlIG9mIElzcmFlbCBwbGF5ZWQgYmVmb3JlIHRoZSBMT1JEIG9uIGFsbCBtYW5uZXIgb2YgaW5zdHJ1bWVudHMgbWFkZSBvZiBmaXIgd29vZCwgZXZlbiBvbiBoYXJwcywgYW5kIG9uIHBzYWx0ZXJpZXMsIGFuZCBvbiB0aW1icmVscywgYW5kIG9uIGNvcm5ldHMsIGFuZCBvbiBjeW1iYWxzLgpBbmQgd2hlbiB0aGV5IGNhbWUgdG8gTmFjaG9uJ3MgdGhyZXNoaW5nZmxvb3IsIFV6emFoIHB1dCBmb3J0aCBoaXMgaGFuZCB0byB0aGUgYXJrIG9mIEdvZCwgYW5kIHRvb2sgaG9sZCBvZiBpdDsgZm9yIHRoZSBveGVuIHNob29rIGl0LgpBbmQgdGhlIGFuZ2VyIG9mIHRoZSBMT1JEIHdhcyBraW5kbGVkIGFnYWluc3QgVXp6YWg7IGFuZCBHb2Qgc21vdGUgaGltIHRoZXJlIGZvciBoaXMgZXJyb3I7IGFuZCB0aGVyZSBoZSBkaWVkIGJ5IHRoZSBhcmsgb2YgR29kLgpBbmQgRGF2aWQgd2FzIGRpc3BsZWFzZWQsIGJlY2F1c2UgdGhlIExPUkQgaGFkIG1hZGUgYSBicmVhY2ggdXBvbiBVenphaDogYW5kIGhlIGNhbGxlZCB0aGUgbmFtZSBvZiB0aGUgcGxhY2UgUGVyZXp1enphaCB0byB0aGlzIGRheS4KQW5kIERhdmlkIHdhcyBhZnJhaWQgb2YgdGhlIExPUkQgdGhhdCBkYXksIGFuZCBzYWlkLCBIb3cgc2hhbGwgdGhlIGFyayBvZiB0aGUgTE9SRCBjb21lIHRvIG1lPwpTbyBEYXZpZCB3b3VsZCBub3QgcmVtb3ZlIHRoZSBhcmsgb2YgdGhlIExPUkQgdW50byBoaW0gaW50byB0aGUgY2l0eSBvZiBEYXZpZDogYnV0IERhdmlkIGNhcnJpZWQgaXQgYXNpZGUgaW50byB0aGUgaG91c2Ugb2YgT2JlZGVkb20gdGhlIEdpdHRpdGUuCkFuZCB0aGUgYXJrIG9mIHRoZSBMT1JEIGNvbnRpbnVlZCBpbiB0aGUgaG91c2Ugb2YgT2JlZGVkb20gdGhlIEdpdHRpdGUgdGhyZWUgbW9udGhzOiBhbmQgdGhlIExPUkQgYmxlc3NlZCBPYmVkZWRvbSwgYW5kIGFsbCBoaXMgaG91c2Vob2xkLgpBbmQgaXQgd2FzIHRvbGQga2luZyBEYXZpZCwgc2F5aW5nLCBUaGUgTE9SRCBoYXRoIGJsZXNzZWQgdGhlIGhvdXNlIG9mIE9iZWRlZG9tLCBhbmQgYWxsIHRoYXQgcGVydGFpbmV0aCB1bnRvIGhpbSwgYmVjYXVzZSBvZiB0aGUgYXJrIG9mIEdvZC4gU28gRGF2aWQgd2VudCBhbmQgYnJvdWdodCB1cCB0aGUgYXJrIG9mIEdvZCBmcm9tIHRoZSBob3VzZSBvZiBPYmVkZWRvbSBpbnRvIHRoZSBjaXR5IG9mIERhdmlkIHdpdGggZ2xhZG5lc3MuCkFuZCBpdCB3YXMgc28sIHRoYXQgd2hlbiB0aGV5IHRoYXQgYmFyZSB0aGUgYXJrIG9mIHRoZSBMT1JEIGhhZCBnb25lIHNpeCBwYWNlcywgaGUgc2FjcmlmaWNlZCBveGVuIGFuZCBmYXRsaW5ncy4KQW5kIERhdmlkIGRhbmNlZCBiZWZvcmUgdGhlIExPUkQgd2l0aCBhbGwgaGlzIG1pZ2h0OyBhbmQgRGF2aWQgd2FzIGdpcmRlZCB3aXRoIGEgbGluZW4gZXBob2QuClNvIERhdmlkIGFuZCBhbGwgdGhlIGhvdXNlIG9mIElzcmFlbCBicm91Z2h0IHVwIHRoZSBhcmsgb2YgdGhlIExPUkQgd2l0aCBzaG91dGluZywgYW5kIHdpdGggdGhlIHNvdW5kIG9mIHRoZSB0cnVtcGV0LgpBbmQgYXMgdGhlIGFyayBvZiB0aGUgTE9SRCBjYW1lIGludG8gdGhlIGNpdHkgb2YgRGF2aWQsIE1pY2hhbCBTYXVsJ3MgZGF1Z2h0ZXIgbG9va2VkIHRocm91Z2ggYSB3aW5kb3csIGFuZCBzYXcga2luZyBEYXZpZCBsZWFwaW5nIGFuZCBkYW5jaW5nIGJlZm9yZSB0aGUgTE9SRDsgYW5kIHNoZSBkZXNwaXNlZCBoaW0gaW4gaGVyIGhlYXJ0LgpBbmQgdGhleSBicm91Z2h0IGluIHRoZSBhcmsgb2YgdGhlIExPUkQsIGFuZCBzZXQgaXQgaW4gaGlzIHBsYWNlLCBpbiB0aGUgbWlkc3Qgb2YgdGhlIHRhYmVybmFjbGUgdGhhdCBEYXZpZCBoYWQgcGl0Y2hlZCBmb3IgaXQ6IGFuZCBEYXZpZCBvZmZlcmVkIGJ1cm50IG9mZmVyaW5ncyBhbmQgcGVhY2Ugb2ZmZXJpbmdzIGJlZm9yZSB0aGUgTE9SRC4KQW5kIGFzIHNvb24gYXMgRGF2aWQgaGFkIG1hZGUgYW4gZW5kIG9mIG9mZmVyaW5nIGJ1cm50IG9mZmVyaW5ncyBhbmQgcGVhY2Ugb2ZmZXJpbmdzLCBoZSBibGVzc2VkIHRoZSBwZW9wbGUgaW4gdGhlIG5hbWUgb2YgdGhlIExPUkQgb2YgaG9zdHMuCkFuZCBoZSBkZWFsdCBhbW9uZyBhbGwgdGhlIHBlb3BsZSwgZXZlbiBhbW9uZyB0aGUgd2hvbGUgbXVsdGl0dWRlIG9mIElzcmFlbCwgYXMgd2VsbCB0byB0aGUgd29tZW4gYXMgbWVuLCB0byBldmVyeSBvbmUgYSBjYWtlIG9mIGJyZWFkLCBhbmQgYSBnb29kIHBpZWNlIG9mIGZsZXNoLCBhbmQgYSBmbGFnb24gb2Ygd2luZS4gU28gYWxsIHRoZSBwZW9wbGUgZGVwYXJ0ZWQgZXZlcnkgb25lIHRvIGhpcyBob3VzZS4KVGhlbiBEYXZpZCByZXR1cm5lZCB0byBibGVzcyBoaXMgaG91c2Vob2xkLiBBbmQgTWljaGFsIHRoZSBkYXVnaHRlciBvZiBTYXVsIGNhbWUgb3V0IHRvIG1lZXQgRGF2aWQsIGFuZCBzYWlkLCBIb3cgZ2xvcmlvdXMgd2FzIHRoZSBraW5nIG9mIElzcmFlbCB0byBkYXksIHdobyB1bmNvdmVyZWQgaGltc2VsZiB0byBkYXkgaW4gdGhlIGV5ZXMgb2YgdGhlIGhhbmRtYWlkcyBvZiBoaXMgc2VydmFudHMsIGFzIG9uZSBvZiB0aGUgdmFpbiBmZWxsb3dzIHNoYW1lbGVzc2x5IHVuY292ZXJldGggaGltc2VsZiEKQW5kIERhdmlkIHNhaWQgdW50byBNaWNoYWwsIEl0IHdhcyBiZWZvcmUgdGhlIExPUkQsIHdoaWNoIGNob3NlIG1lIGJlZm9yZSB0aHkgZmF0aGVyLCBhbmQgYmVmb3JlIGFsbCBoaXMgaG91c2UsIHRvIGFwcG9pbnQgbWUgcnVsZXIgb3ZlciB0aGUgcGVvcGxlIG9mIHRoZSBMT1JELCBvdmVyIElzcmFlbDogdGhlcmVmb3JlIHdpbGwgSSBwbGF5IGJlZm9yZSB0aGUgTE9SRC4KQW5kIEkgd2lsbCB5ZXQgYmUgbW9yZSB2aWxlIHRoYW4gdGh1cywgYW5kIHdpbGwgYmUgYmFzZSBpbiBtaW5lIG93biBzaWdodDogYW5kIG9mIHRoZSBtYWlkc2VydmFudHMgd2hpY2ggdGhvdSBoYXN0IHNwb2tlbiBvZiwgb2YgdGhlbSBzaGFsbCBJIGJlIGhhZCBpbiBob25vdXIuClRoZXJlZm9yZSBNaWNoYWwgdGhlIGRhdWdodGVyIG9mIFNhdWwgaGFkIG5vIGNoaWxkIHVudG8gdGhlIGRheSBvZiBoZXIgZGVhdGguCkFuZCBpdCBjYW1lIHRvIHBhc3MsIHdoZW4gdGhlIGtpbmcgc2F0IGluIGhpcyBob3VzZSwgYW5kIHRoZSBMT1JEIGhhZCBnaXZlbiBoaW0gcmVzdCByb3VuZCBhYm91dCBmcm9tIGFsbCBoaXMgZW5lbWllczsKVGhhdCB0aGUga2luZyBzYWlkIHVudG8gTmF0aGFuIHRoZSBwcm9waGV0LCBTZWUgbm93LCBJIGR3ZWxsIGluIGFuIGhvdXNlIG9mIGNlZGFyLCBidXQgdGhlIGFyayBvZiBHb2QgZHdlbGxldGggd2l0aGluIGN1cnRhaW5zLgpBbmQgTmF0aGFuIHNhaWQgdG8gdGhlIGtpbmcsIEdvLCBkbyBhbGwgdGhhdCBpcyBpbiB0aGluZSBoZWFydDsgZm9yIHRoZSBMT1JEIGlzIHdpdGggdGhlZS4KQW5kIGl0IGNhbWUgdG8gcGFzcyB0aGF0IG5pZ2h0LCB0aGF0IHRoZSB3b3JkIG9mIHRoZSBMT1JEIGNhbWUgdW50byBOYXRoYW4sIHNheWluZywKR28gYW5kIHRlbGwgbXkgc2VydmFudCBEYXZpZCwgVGh1cyBzYWl0aCB0aGUgTE9SRCwgU2hhbHQgdGhvdSBidWlsZCBtZSBhbiBob3VzZSBmb3IgbWUgdG8gZHdlbGwgaW4/CldoZXJlYXMgSSBoYXZlIG5vdCBkd2VsdCBpbiBhbnkgaG91c2Ugc2luY2UgdGhlIHRpbWUgdGhhdCBJIGJyb3VnaHQgdXAgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBvdXQgb2YgRWd5cHQsIGV2ZW4gdG8gdGhpcyBkYXksIGJ1dCBoYXZlIHdhbGtlZCBpbiBhIHRlbnQgYW5kIGluIGEgdGFiZXJuYWNsZS4KSW4gYWxsIHRoZSBwbGFjZXMgd2hlcmVpbiBJIGhhdmUgd2Fsa2VkIHdpdGggYWxsIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgc3Bha2UgSSBhIHdvcmQgd2l0aCBhbnkgb2YgdGhlIHRyaWJlcyBvZiBJc3JhZWwsIHdob20gSSBjb21tYW5kZWQgdG8gZmVlZCBteSBwZW9wbGUgSXNyYWVsLCBzYXlpbmcsIFdoeSBidWlsZCB5ZSBub3QgbWUgYW4gaG91c2Ugb2YgY2VkYXI/Ck5vdyB0aGVyZWZvcmUgc28gc2hhbHQgdGhvdSBzYXkgdW50byBteSBzZXJ2YW50IERhdmlkLCBUaHVzIHNhaXRoIHRoZSBMT1JEIG9mIGhvc3RzLCBJIHRvb2sgdGhlZSBmcm9tIHRoZSBzaGVlcGNvdGUsIGZyb20gZm9sbG93aW5nIHRoZSBzaGVlcCwgdG8gYmUgcnVsZXIgb3ZlciBteSBwZW9wbGUsIG92ZXIgSXNyYWVsOgpBbmQgSSB3YXMgd2l0aCB0aGVlIHdoaXRoZXJzb2V2ZXIgdGhvdSB3ZW50ZXN0LCBhbmQgaGF2ZSBjdXQgb2ZmIGFsbCB0aGluZSBlbmVtaWVzIG91dCBvZiB0aHkgc2lnaHQsIGFuZCBoYXZlIG1hZGUgdGhlZSBhIGdyZWF0IG5hbWUsIGxpa2UgdW50byB0aGUgbmFtZSBvZiB0aGUgZ3JlYXQgbWVuIHRoYXQgYXJlIGluIHRoZSBlYXJ0aC4KTW9yZW92ZXIgSSB3aWxsIGFwcG9pbnQgYSBwbGFjZSBmb3IgbXkgcGVvcGxlIElzcmFlbCwgYW5kIHdpbGwgcGxhbnQgdGhlbSwgdGhhdCB0aGV5IG1heSBkd2VsbCBpbiBhIHBsYWNlIG9mIHRoZWlyIG93biwgYW5kIG1vdmUgbm8gbW9yZTsgbmVpdGhlciBzaGFsbCB0aGUgY2hpbGRyZW4gb2Ygd2lja2VkbmVzcyBhZmZsaWN0IHRoZW0gYW55IG1vcmUsIGFzIGJlZm9yZXRpbWUsCkFuZCBhcyBzaW5jZSB0aGUgdGltZSB0aGF0IEkgY29tbWFuZGVkIGp1ZGdlcyB0byBiZSBvdmVyIG15IHBlb3BsZSBJc3JhZWwsIGFuZCBoYXZlIGNhdXNlZCB0aGVlIHRvIHJlc3QgZnJvbSBhbGwgdGhpbmUgZW5lbWllcy4gQWxzbyB0aGUgTE9SRCB0ZWxsZXRoIHRoZWUgdGhhdCBoZSB3aWxsIG1ha2UgdGhlZSBhbiBob3VzZS4KQW5kIHdoZW4gdGh5IGRheXMgYmUgZnVsZmlsbGVkLCBhbmQgdGhvdSBzaGFsdCBzbGVlcCB3aXRoIHRoeSBmYXRoZXJzLCBJIHdpbGwgc2V0IHVwIHRoeSBzZWVkIGFmdGVyIHRoZWUsIHdoaWNoIHNoYWxsIHByb2NlZWQgb3V0IG9mIHRoeSBib3dlbHMsIGFuZCBJIHdpbGwgZXN0YWJsaXNoIGhpcyBraW5nZG9tLgpIZSBzaGFsbCBidWlsZCBhbiBob3VzZSBmb3IgbXkgbmFtZSwgYW5kIEkgd2lsbCBzdGFibGlzaCB0aGUgdGhyb25lIG9mIGhpcyBraW5nZG9tIGZvciBldmVyLgpJIHdpbGwgYmUgaGlzIGZhdGhlciwgYW5kIGhlIHNoYWxsIGJlIG15IHNvbi4gSWYgaGUgY29tbWl0IGluaXF1aXR5LCBJIHdpbGwgY2hhc3RlbiBoaW0gd2l0aCB0aGUgcm9kIG9mIG1lbiwgYW5kIHdpdGggdGhlIHN0cmlwZXMgb2YgdGhlIGNoaWxkcmVuIG9mIG1lbjoKQnV0IG15IG1lcmN5IHNoYWxsIG5vdCBkZXBhcnQgYXdheSBmcm9tIGhpbSwgYXMgSSB0b29rIGl0IGZyb20gU2F1bCwgd2hvbSBJIHB1dCBhd2F5IGJlZm9yZSB0aGVlLgpBbmQgdGhpbmUgaG91c2UgYW5kIHRoeSBraW5nZG9tIHNoYWxsIGJlIGVzdGFibGlzaGVkIGZvciBldmVyIGJlZm9yZSB0aGVlOiB0aHkgdGhyb25lIHNoYWxsIGJlIGVzdGFibGlzaGVkIGZvciBldmVyLgpBY2NvcmRpbmcgdG8gYWxsIHRoZXNlIHdvcmRzLCBhbmQgYWNjb3JkaW5nIHRvIGFsbCB0aGlzIHZpc2lvbiwgc28gZGlkIE5hdGhhbiBzcGVhayB1bnRvIERhdmlkLgpUaGVuIHdlbnQga2luZyBEYXZpZCBpbiwgYW5kIHNhdCBiZWZvcmUgdGhlIExPUkQsIGFuZCBoZSBzYWlkLCBXaG8gYW0gSSwgTyBMb3JkIEdPRD8gYW5kIHdoYXQgaXMgbXkgaG91c2UsIHRoYXQgdGhvdSBoYXN0IGJyb3VnaHQgbWUgaGl0aGVydG8/CkFuZCB0aGlzIHdhcyB5ZXQgYSBzbWFsbCB0aGluZyBpbiB0aHkgc2lnaHQsIE8gTG9yZCBHT0Q7IGJ1dCB0aG91IGhhc3Qgc3Bva2VuIGFsc28gb2YgdGh5IHNlcnZhbnQncyBob3VzZSBmb3IgYSBncmVhdCB3aGlsZSB0byBjb21lLiBBbmQgaXMgdGhpcyB0aGUgbWFubmVyIG9mIG1hbiwgTyBMb3JkIEdPRD8KQW5kIHdoYXQgY2FuIERhdmlkIHNheSBtb3JlIHVudG8gdGhlZT8gZm9yIHRob3UsIExvcmQgR09ELCBrbm93ZXN0IHRoeSBzZXJ2YW50LgpGb3IgdGh5IHdvcmQncyBzYWtlLCBhbmQgYWNjb3JkaW5nIHRvIHRoaW5lIG93biBoZWFydCwgaGFzdCB0aG91IGRvbmUgYWxsIHRoZXNlIGdyZWF0IHRoaW5ncywgdG8gbWFrZSB0aHkgc2VydmFudCBrbm93IHRoZW0uCldoZXJlZm9yZSB0aG91IGFydCBncmVhdCwgTyBMT1JEIEdvZDogZm9yIHRoZXJlIGlzIG5vbmUgbGlrZSB0aGVlLCBuZWl0aGVyIGlzIHRoZXJlIGFueSBHb2QgYmVzaWRlIHRoZWUsIGFjY29yZGluZyB0byBhbGwgdGhhdCB3ZSBoYXZlIGhlYXJkIHdpdGggb3VyIGVhcnMuCkFuZCB3aGF0IG9uZSBuYXRpb24gaW4gdGhlIGVhcnRoIGlzIGxpa2UgdGh5IHBlb3BsZSwgZXZlbiBsaWtlIElzcmFlbCwgd2hvbSBHb2Qgd2VudCB0byByZWRlZW0gZm9yIGEgcGVvcGxlIHRvIGhpbXNlbGYsIGFuZCB0byBtYWtlIGhpbSBhIG5hbWUsIGFuZCB0byBkbyBmb3IgeW91IGdyZWF0IHRoaW5ncyBhbmQgdGVycmlibGUsIGZvciB0aHkgbGFuZCwgYmVmb3JlIHRoeSBwZW9wbGUsIHdoaWNoIHRob3UgcmVkZWVtZWRzdCB0byB0aGVlIGZyb20gRWd5cHQsIGZyb20gdGhlIG5hdGlvbnMgYW5kIHRoZWlyIGdvZHM/CkZvciB0aG91IGhhc3QgY29uZmlybWVkIHRvIHRoeXNlbGYgdGh5IHBlb3BsZSBJc3JhZWwgdG8gYmUgYSBwZW9wbGUgdW50byB0aGVlIGZvciBldmVyOiBhbmQgdGhvdSwgTE9SRCwgYXJ0IGJlY29tZSB0aGVpciBHb2QuCkFuZCBub3csIE8gTE9SRCBHb2QsIHRoZSB3b3JkIHRoYXQgdGhvdSBoYXN0IHNwb2tlbiBjb25jZXJuaW5nIHRoeSBzZXJ2YW50LCBhbmQgY29uY2VybmluZyBoaXMgaG91c2UsIGVzdGFibGlzaCBpdCBmb3IgZXZlciwgYW5kIGRvIGFzIHRob3UgaGFzdCBzYWlkLgpBbmQgbGV0IHRoeSBuYW1lIGJlIG1hZ25pZmllZCBmb3IgZXZlciwgc2F5aW5nLCBUaGUgTE9SRCBvZiBob3N0cyBpcyB0aGUgR29kIG92ZXIgSXNyYWVsOiBhbmQgbGV0IHRoZSBob3VzZSBvZiB0aHkgc2VydmFudCBEYXZpZCBiZSBlc3RhYmxpc2hlZCBiZWZvcmUgdGhlZS4KRm9yIHRob3UsIE8gTE9SRCBvZiBob3N0cywgR29kIG9mIElzcmFlbCwgaGFzdCByZXZlYWxlZCB0byB0aHkgc2VydmFudCwgc2F5aW5nLCBJIHdpbGwgYnVpbGQgdGhlZSBhbiBob3VzZTogdGhlcmVmb3JlIGhhdGggdGh5IHNlcnZhbnQgZm91bmQgaW4gaGlzIGhlYXJ0IHRvIHByYXkgdGhpcyBwcmF5ZXIgdW50byB0aGVlLgpBbmQgbm93LCBPIExvcmQgR09ELCB0aG91IGFydCB0aGF0IEdvZCwgYW5kIHRoeSB3b3JkcyBiZSB0cnVlLCBhbmQgdGhvdSBoYXN0IHByb21pc2VkIHRoaXMgZ29vZG5lc3MgdW50byB0aHkgc2VydmFudDoKVGhlcmVmb3JlIG5vdyBsZXQgaXQgcGxlYXNlIHRoZWUgdG8gYmxlc3MgdGhlIGhvdXNlIG9mIHRoeSBzZXJ2YW50LCB0aGF0IGl0IG1heSBjb250aW51ZSBmb3IgZXZlciBiZWZvcmUgdGhlZTogZm9yIHRob3UsIE8gTG9yZCBHT0QsIGhhc3Qgc3Bva2VuIGl0OiBhbmQgd2l0aCB0aHkgYmxlc3NpbmcgbGV0IHRoZSBob3VzZSBvZiB0aHkgc2VydmFudCBiZSBibGVzc2VkIGZvciBldmVyLgpBbmQgYWZ0ZXIgdGhpcyBpdCBjYW1lIHRvIHBhc3MgdGhhdCBEYXZpZCBzbW90ZSB0aGUgUGhpbGlzdGluZXMsIGFuZCBzdWJkdWVkIHRoZW06IGFuZCBEYXZpZCB0b29rIE1ldGhlZ2FtbWFoIG91dCBvZiB0aGUgaGFuZCBvZiB0aGUgUGhpbGlzdGluZXMuCkFuZCBoZSBzbW90ZSBNb2FiLCBhbmQgbWVhc3VyZWQgdGhlbSB3aXRoIGEgbGluZSwgY2FzdGluZyB0aGVtIGRvd24gdG8gdGhlIGdyb3VuZDsgZXZlbiB3aXRoIHR3byBsaW5lcyBtZWFzdXJlZCBoZSB0byBwdXQgdG8gZGVhdGgsIGFuZCB3aXRoIG9uZSBmdWxsIGxpbmUgdG8ga2VlcCBhbGl2ZS4gQW5kIHNvIHRoZSBNb2FiaXRlcyBiZWNhbWUgRGF2aWQncyBzZXJ2YW50cywgYW5kIGJyb3VnaHQgZ2lmdHMuCkRhdmlkIHNtb3RlIGFsc28gSGFkYWRlemVyLCB0aGUgc29uIG9mIFJlaG9iLCBraW5nIG9mIFpvYmFoLCBhcyBoZSB3ZW50IHRvIHJlY292ZXIgaGlzIGJvcmRlciBhdCB0aGUgcml2ZXIgRXVwaHJhdGVzLgpBbmQgRGF2aWQgdG9vayBmcm9tIGhpbSBhIHRob3VzYW5kIGNoYXJpb3RzLCBhbmQgc2V2ZW4gaHVuZHJlZCBob3JzZW1lbiwgYW5kIHR3ZW50eSB0aG91c2FuZCBmb290bWVuOiBhbmQgRGF2aWQgaG91Z2hlZCBhbGwgdGhlIGNoYXJpb3QgaG9yc2VzLCBidXQgcmVzZXJ2ZWQgb2YgdGhlbSBmb3IgYW4gaHVuZHJlZCBjaGFyaW90cy4KQW5kIHdoZW4gdGhlIFN5cmlhbnMgb2YgRGFtYXNjdXMgY2FtZSB0byBzdWNjb3VyIEhhZGFkZXplciBraW5nIG9mIFpvYmFoLCBEYXZpZCBzbGV3IG9mIHRoZSBTeXJpYW5zIHR3byBhbmQgdHdlbnR5IHRob3VzYW5kIG1lbi4KVGhlbiBEYXZpZCBwdXQgZ2Fycmlzb25zIGluIFN5cmlhIG9mIERhbWFzY3VzOiBhbmQgdGhlIFN5cmlhbnMgYmVjYW1lIHNlcnZhbnRzIHRvIERhdmlkLCBhbmQgYnJvdWdodCBnaWZ0cy4gQW5kIHRoZSBMT1JEIHByZXNlcnZlZCBEYXZpZCB3aGl0aGVyc29ldmVyIGhlIHdlbnQuCkFuZCBEYXZpZCB0b29rIHRoZSBzaGllbGRzIG9mIGdvbGQgdGhhdCB3ZXJlIG9uIHRoZSBzZXJ2YW50cyBvZiBIYWRhZGV6ZXIsIGFuZCBicm91Z2h0IHRoZW0gdG8gSmVydXNhbGVtLgpBbmQgZnJvbSBCZXRhaCwgYW5kIGZyb20gQmVyb3RoYWksIGNpdGllcyBvZiBIYWRhZGV6ZXIsIGtpbmcgRGF2aWQgdG9vayBleGNlZWRpbmcgbXVjaCBicmFzcy4KV2hlbiBUb2kga2luZyBvZiBIYW1hdGggaGVhcmQgdGhhdCBEYXZpZCBoYWQgc21pdHRlbiBhbGwgdGhlIGhvc3Qgb2YgSGFkYWRlemVyLApUaGVuIFRvaSBzZW50IEpvcmFtIGhpcyBzb24gdW50byBraW5nIERhdmlkLCB0byBzYWx1dGUgaGltLCBhbmQgdG8gYmxlc3MgaGltLCBiZWNhdXNlIGhlIGhhZCBmb3VnaHQgYWdhaW5zdCBIYWRhZGV6ZXIsIGFuZCBzbWl0dGVuIGhpbTogZm9yIEhhZGFkZXplciBoYWQgd2FycyB3aXRoIFRvaS4gQW5kIEpvcmFtIGJyb3VnaHQgd2l0aCBoaW0gdmVzc2VscyBvZiBzaWx2ZXIsIGFuZCB2ZXNzZWxzIG9mIGdvbGQsIGFuZCB2ZXNzZWxzIG9mIGJyYXNzOgpXaGljaCBhbHNvIGtpbmcgRGF2aWQgZGlkIGRlZGljYXRlIHVudG8gdGhlIExPUkQsIHdpdGggdGhlIHNpbHZlciBhbmQgZ29sZCB0aGF0IGhlIGhhZCBkZWRpY2F0ZWQgb2YgYWxsIG5hdGlvbnMgd2hpY2ggaGUgc3ViZHVlZDsKT2YgU3lyaWEsIGFuZCBvZiBNb2FiLCBhbmQgb2YgdGhlIGNoaWxkcmVuIG9mIEFtbW9uLCBhbmQgb2YgdGhlIFBoaWxpc3RpbmVzLCBhbmQgb2YgQW1hbGVrLCBhbmQgb2YgdGhlIHNwb2lsIG9mIEhhZGFkZXplciwgc29uIG9mIFJlaG9iLCBraW5nIG9mIFpvYmFoLgpBbmQgRGF2aWQgZ2F0IGhpbSBhIG5hbWUgd2hlbiBoZSByZXR1cm5lZCBmcm9tIHNtaXRpbmcgb2YgdGhlIFN5cmlhbnMgaW4gdGhlIHZhbGxleSBvZiBzYWx0LCBiZWluZyBlaWdodGVlbiB0aG91c2FuZCBtZW4uCkFuZCBoZSBwdXQgZ2Fycmlzb25zIGluIEVkb207IHRocm91Z2hvdXQgYWxsIEVkb20gcHV0IGhlIGdhcnJpc29ucywgYW5kIGFsbCB0aGV5IG9mIEVkb20gYmVjYW1lIERhdmlkJ3Mgc2VydmFudHMuIEFuZCB0aGUgTE9SRCBwcmVzZXJ2ZWQgRGF2aWQgd2hpdGhlcnNvZXZlciBoZSB3ZW50LgpBbmQgRGF2aWQgcmVpZ25lZCBvdmVyIGFsbCBJc3JhZWw7IGFuZCBEYXZpZCBleGVjdXRlZCBqdWRnbWVudCBhbmQganVzdGljZSB1bnRvIGFsbCBoaXMgcGVvcGxlLgpBbmQgSm9hYiB0aGUgc29uIG9mIFplcnVpYWggd2FzIG92ZXIgdGhlIGhvc3Q7IGFuZCBKZWhvc2hhcGhhdCB0aGUgc29uIG9mIEFoaWx1ZCB3YXMgcmVjb3JkZXI7CkFuZCBaYWRvayB0aGUgc29uIG9mIEFoaXR1YiwgYW5kIEFoaW1lbGVjaCB0aGUgc29uIG9mIEFiaWF0aGFyLCB3ZXJlIHRoZSBwcmllc3RzOyBhbmQgU2VyYWlhaCB3YXMgdGhlIHNjcmliZTsKQW5kIEJlbmFpYWggdGhlIHNvbiBvZiBKZWhvaWFkYSB3YXMgb3ZlciBib3RoIHRoZSBDaGVyZXRoaXRlcyBhbmQgdGhlIFBlbGV0aGl0ZXM7IGFuZCBEYXZpZCdzIHNvbnMgd2VyZSBjaGllZiBydWxlcnMuCkFuZCBEYXZpZCBzYWlkLCBJcyB0aGVyZSB5ZXQgYW55IHRoYXQgaXMgbGVmdCBvZiB0aGUgaG91c2Ugb2YgU2F1bCwgdGhhdCBJIG1heSBzaGV3IGhpbSBraW5kbmVzcyBmb3IgSm9uYXRoYW4ncyBzYWtlPwpBbmQgdGhlcmUgd2FzIG9mIHRoZSBob3VzZSBvZiBTYXVsIGEgc2VydmFudCB3aG9zZSBuYW1lIHdhcyBaaWJhLiBBbmQgd2hlbiB0aGV5IGhhZCBjYWxsZWQgaGltIHVudG8gRGF2aWQsIHRoZSBraW5nIHNhaWQgdW50byBoaW0sIEFydCB0aG91IFppYmE/IEFuZCBoZSBzYWlkLCBUaHkgc2VydmFudCBpcyBoZS4KQW5kIHRoZSBraW5nIHNhaWQsIElzIHRoZXJlIG5vdCB5ZXQgYW55IG9mIHRoZSBob3VzZSBvZiBTYXVsLCB0aGF0IEkgbWF5IHNoZXcgdGhlIGtpbmRuZXNzIG9mIEdvZCB1bnRvIGhpbT8gQW5kIFppYmEgc2FpZCB1bnRvIHRoZSBraW5nLCBKb25hdGhhbiBoYXRoIHlldCBhIHNvbiwgd2hpY2ggaXMgbGFtZSBvbiBoaXMgZmVldC4KQW5kIHRoZSBraW5nIHNhaWQgdW50byBoaW0sIFdoZXJlIGlzIGhlPyBBbmQgWmliYSBzYWlkIHVudG8gdGhlIGtpbmcsIEJlaG9sZCwgaGUgaXMgaW4gdGhlIGhvdXNlIG9mIE1hY2hpciwgdGhlIHNvbiBvZiBBbW1pZWwsIGluIExvZGViYXIuClRoZW4ga2luZyBEYXZpZCBzZW50LCBhbmQgZmV0Y2hlZCBoaW0gb3V0IG9mIHRoZSBob3VzZSBvZiBNYWNoaXIsIHRoZSBzb24gb2YgQW1taWVsLCBmcm9tIExvZGViYXIuCk5vdyB3aGVuIE1lcGhpYm9zaGV0aCwgdGhlIHNvbiBvZiBKb25hdGhhbiwgdGhlIHNvbiBvZiBTYXVsLCB3YXMgY29tZSB1bnRvIERhdmlkLCBoZSBmZWxsIG9uIGhpcyBmYWNlLCBhbmQgZGlkIHJldmVyZW5jZS4gQW5kIERhdmlkIHNhaWQsIE1lcGhpYm9zaGV0aC4gQW5kIGhlIGFuc3dlcmVkLCBCZWhvbGQgdGh5IHNlcnZhbnQhCkFuZCBEYXZpZCBzYWlkIHVudG8gaGltLCBGZWFyIG5vdDogZm9yIEkgd2lsbCBzdXJlbHkgc2hldyB0aGVlIGtpbmRuZXNzIGZvciBKb25hdGhhbiB0aHkgZmF0aGVyJ3Mgc2FrZSwgYW5kIHdpbGwgcmVzdG9yZSB0aGVlIGFsbCB0aGUgbGFuZCBvZiBTYXVsIHRoeSBmYXRoZXI7IGFuZCB0aG91IHNoYWx0IGVhdCBicmVhZCBhdCBteSB0YWJsZSBjb250aW51YWxseS4KQW5kIGhlIGJvd2VkIGhpbXNlbGYsIGFuZCBzYWlkLCBXaGF0IGlzIHRoeSBzZXJ2YW50LCB0aGF0IHRob3Ugc2hvdWxkZXN0IGxvb2sgdXBvbiBzdWNoIGEgZGVhZCBkb2cgYXMgSSBhbT8KVGhlbiB0aGUga2luZyBjYWxsZWQgdG8gWmliYSwgU2F1bCdzIHNlcnZhbnQsIGFuZCBzYWlkIHVudG8gaGltLCBJIGhhdmUgZ2l2ZW4gdW50byB0aHkgbWFzdGVyJ3Mgc29uIGFsbCB0aGF0IHBlcnRhaW5lZCB0byBTYXVsIGFuZCB0byBhbGwgaGlzIGhvdXNlLgpUaG91IHRoZXJlZm9yZSwgYW5kIHRoeSBzb25zLCBhbmQgdGh5IHNlcnZhbnRzLCBzaGFsbCB0aWxsIHRoZSBsYW5kIGZvciBoaW0sIGFuZCB0aG91IHNoYWx0IGJyaW5nIGluIHRoZSBmcnVpdHMsIHRoYXQgdGh5IG1hc3RlcidzIHNvbiBtYXkgaGF2ZSBmb29kIHRvIGVhdDogYnV0IE1lcGhpYm9zaGV0aCB0aHkgbWFzdGVyJ3Mgc29uIHNoYWxsIGVhdCBicmVhZCBhbHdheSBhdCBteSB0YWJsZS4gTm93IFppYmEgaGFkIGZpZnRlZW4gc29ucyBhbmQgdHdlbnR5IHNlcnZhbnRzLgpUaGVuIHNhaWQgWmliYSB1bnRvIHRoZSBraW5nLCBBY2NvcmRpbmcgdG8gYWxsIHRoYXQgbXkgbG9yZCB0aGUga2luZyBoYXRoIGNvbW1hbmRlZCBoaXMgc2VydmFudCwgc28gc2hhbGwgdGh5IHNlcnZhbnQgZG8uIEFzIGZvciBNZXBoaWJvc2hldGgsIHNhaWQgdGhlIGtpbmcsIGhlIHNoYWxsIGVhdCBhdCBteSB0YWJsZSwgYXMgb25lIG9mIHRoZSBraW5nJ3Mgc29ucy4KQW5kIE1lcGhpYm9zaGV0aCBoYWQgYSB5b3VuZyBzb24sIHdob3NlIG5hbWUgd2FzIE1pY2hhLiBBbmQgYWxsIHRoYXQgZHdlbHQgaW4gdGhlIGhvdXNlIG9mIFppYmEgd2VyZSBzZXJ2YW50cyB1bnRvIE1lcGhpYm9zaGV0aC4KU28gTWVwaGlib3NoZXRoIGR3ZWx0IGluIEplcnVzYWxlbTogZm9yIGhlIGRpZCBlYXQgY29udGludWFsbHkgYXQgdGhlIGtpbmcncyB0YWJsZTsgYW5kIHdhcyBsYW1lIG9uIGJvdGggaGlzIGZlZXQuCkFuZCBpdCBjYW1lIHRvIHBhc3MgYWZ0ZXIgdGhpcywgdGhhdCB0aGUga2luZyBvZiB0aGUgY2hpbGRyZW4gb2YgQW1tb24gZGllZCwgYW5kIEhhbnVuIGhpcyBzb24gcmVpZ25lZCBpbiBoaXMgc3RlYWQuClRoZW4gc2FpZCBEYXZpZCwgSSB3aWxsIHNoZXcga2luZG5lc3MgdW50byBIYW51biB0aGUgc29uIG9mIE5haGFzaCwgYXMgaGlzIGZhdGhlciBzaGV3ZWQga2luZG5lc3MgdW50byBtZS4gQW5kIERhdmlkIHNlbnQgdG8gY29tZm9ydCBoaW0gYnkgdGhlIGhhbmQgb2YgaGlzIHNlcnZhbnRzIGZvciBoaXMgZmF0aGVyLiBBbmQgRGF2aWQncyBzZXJ2YW50cyBjYW1lIGludG8gdGhlIGxhbmQgb2YgdGhlIGNoaWxkcmVuIG9mIEFtbW9uLgpBbmQgdGhlIHByaW5jZXMgb2YgdGhlIGNoaWxkcmVuIG9mIEFtbW9uIHNhaWQgdW50byBIYW51biB0aGVpciBsb3JkLCBUaGlua2VzdCB0aG91IHRoYXQgRGF2aWQgZG90aCBob25vdXIgdGh5IGZhdGhlciwgdGhhdCBoZSBoYXRoIHNlbnQgY29tZm9ydGVycyB1bnRvIHRoZWU/IGhhdGggbm90IERhdmlkIHJhdGhlciBzZW50IGhpcyBzZXJ2YW50cyB1bnRvIHRoZWUsIHRvIHNlYXJjaCB0aGUgY2l0eSwgYW5kIHRvIHNweSBpdCBvdXQsIGFuZCB0byBvdmVydGhyb3cgaXQ/CldoZXJlZm9yZSBIYW51biB0b29rIERhdmlkJ3Mgc2VydmFudHMsIGFuZCBzaGF2ZWQgb2ZmIHRoZSBvbmUgaGFsZiBvZiB0aGVpciBiZWFyZHMsIGFuZCBjdXQgb2ZmIHRoZWlyIGdhcm1lbnRzIGluIHRoZSBtaWRkbGUsIGV2ZW4gdG8gdGhlaXIgYnV0dG9ja3MsIGFuZCBzZW50IHRoZW0gYXdheS4KV2hlbiB0aGV5IHRvbGQgaXQgdW50byBEYXZpZCwgaGUgc2VudCB0byBtZWV0IHRoZW0sIGJlY2F1c2UgdGhlIG1lbiB3ZXJlIGdyZWF0bHkgYXNoYW1lZDogYW5kIHRoZSBraW5nIHNhaWQsIFRhcnJ5IGF0IEplcmljaG8gdW50aWwgeW91ciBiZWFyZHMgYmUgZ3Jvd24sIGFuZCB0aGVuIHJldHVybi4KQW5kIHdoZW4gdGhlIGNoaWxkcmVuIG9mIEFtbW9uIHNhdyB0aGF0IHRoZXkgc3RhbmsgYmVmb3JlIERhdmlkLCB0aGUgY2hpbGRyZW4gb2YgQW1tb24gc2VudCBhbmQgaGlyZWQgdGhlIFN5cmlhbnMgb2YgQmV0aHJlaG9iIGFuZCB0aGUgU3lyaWFucyBvZiBab2JhLCB0d2VudHkgdGhvdXNhbmQgZm9vdG1lbiwgYW5kIG9mIGtpbmcgTWFhY2FoIGEgdGhvdXNhbmQgbWVuLCBhbmQgb2YgSXNodG9iIHR3ZWx2ZSB0aG91c2FuZCBtZW4uCkFuZCB3aGVuIERhdmlkIGhlYXJkIG9mIGl0LCBoZSBzZW50IEpvYWIsIGFuZCBhbGwgdGhlIGhvc3Qgb2YgdGhlIG1pZ2h0eSBtZW4uCkFuZCB0aGUgY2hpbGRyZW4gb2YgQW1tb24gY2FtZSBvdXQsIGFuZCBwdXQgdGhlIGJhdHRsZSBpbiBhcnJheSBhdCB0aGUgZW50ZXJpbmcgaW4gb2YgdGhlIGdhdGU6IGFuZCB0aGUgU3lyaWFucyBvZiBab2JhLCBhbmQgb2YgUmVob2IsIGFuZCBJc2h0b2IsIGFuZCBNYWFjYWgsIHdlcmUgYnkgdGhlbXNlbHZlcyBpbiB0aGUgZmllbGQuCldoZW4gSm9hYiBzYXcgdGhhdCB0aGUgZnJvbnQgb2YgdGhlIGJhdHRsZSB3YXMgYWdhaW5zdCBoaW0gYmVmb3JlIGFuZCBiZWhpbmQsIGhlIGNob3NlIG9mIGFsbCB0aGUgY2hvaWNlIG1lbiBvZiBJc3JhZWwsIGFuZCBwdXQgdGhlbSBpbiBhcnJheSBhZ2FpbnN0IHRoZSBTeXJpYW5zOgpBbmQgdGhlIHJlc3Qgb2YgdGhlIHBlb3BsZSBoZSBkZWxpdmVyZWQgaW50byB0aGUgaGFuZCBvZiBBYmlzaGFpIGhpcyBicm90aGVyLCB0aGF0IGhlIG1pZ2h0IHB1dCB0aGVtIGluIGFycmF5IGFnYWluc3QgdGhlIGNoaWxkcmVuIG9mIEFtbW9uLgpBbmQgaGUgc2FpZCwgSWYgdGhlIFN5cmlhbnMgYmUgdG9vIHN0cm9uZyBmb3IgbWUsIHRoZW4gdGhvdSBzaGFsdCBoZWxwIG1lOiBidXQgaWYgdGhlIGNoaWxkcmVuIG9mIEFtbW9uIGJlIHRvbyBzdHJvbmcgZm9yIHRoZWUsIHRoZW4gSSB3aWxsIGNvbWUgYW5kIGhlbHAgdGhlZS4KQmUgb2YgZ29vZCBjb3VyYWdlLCBhbmQgbGV0IHVzIHBsYXkgdGhlIG1lbiBmb3Igb3VyIHBlb3BsZSwgYW5kIGZvciB0aGUgY2l0aWVzIG9mIG91ciBHb2Q6IGFuZCB0aGUgTE9SRCBkbyB0aGF0IHdoaWNoIHNlZW1ldGggaGltIGdvb2QuCkFuZCBKb2FiIGRyZXcgbmlnaCwgYW5kIHRoZSBwZW9wbGUgdGhhdCB3ZXJlIHdpdGggaGltLCB1bnRvIHRoZSBiYXR0bGUgYWdhaW5zdCB0aGUgU3lyaWFuczogYW5kIHRoZXkgZmxlZCBiZWZvcmUgaGltLgpBbmQgd2hlbiB0aGUgY2hpbGRyZW4gb2YgQW1tb24gc2F3IHRoYXQgdGhlIFN5cmlhbnMgd2VyZSBmbGVkLCB0aGVuIGZsZWQgdGhleSBhbHNvIGJlZm9yZSBBYmlzaGFpLCBhbmQgZW50ZXJlZCBpbnRvIHRoZSBjaXR5LiBTbyBKb2FiIHJldHVybmVkIGZyb20gdGhlIGNoaWxkcmVuIG9mIEFtbW9uLCBhbmQgY2FtZSB0byBKZXJ1c2FsZW0uCkFuZCB3aGVuIHRoZSBTeXJpYW5zIHNhdyB0aGF0IHRoZXkgd2VyZSBzbWl0dGVuIGJlZm9yZSBJc3JhZWwsIHRoZXkgZ2F0aGVyZWQgdGhlbXNlbHZlcyB0b2dldGhlci4KQW5kIEhhZGFyZXplciBzZW50LCBhbmQgYnJvdWdodCBvdXQgdGhlIFN5cmlhbnMgdGhhdCB3ZXJlIGJleW9uZCB0aGUgcml2ZXI6IGFuZCB0aGV5IGNhbWUgdG8gSGVsYW07IGFuZCBTaG9iYWNoIHRoZSBjYXB0YWluIG9mIHRoZSBob3N0IG9mIEhhZGFyZXplciB3ZW50IGJlZm9yZSB0aGVtLgpBbmQgd2hlbiBpdCB3YXMgdG9sZCBEYXZpZCwgaGUgZ2F0aGVyZWQgYWxsIElzcmFlbCB0b2dldGhlciwgYW5kIHBhc3NlZCBvdmVyIEpvcmRhbiwgYW5kIGNhbWUgdG8gSGVsYW0uIEFuZCB0aGUgU3lyaWFucyBzZXQgdGhlbXNlbHZlcyBpbiBhcnJheSBhZ2FpbnN0IERhdmlkLCBhbmQgZm91Z2h0IHdpdGggaGltLgpBbmQgdGhlIFN5cmlhbnMgZmxlZCBiZWZvcmUgSXNyYWVsOyBhbmQgRGF2aWQgc2xldyB0aGUgbWVuIG9mIHNldmVuIGh1bmRyZWQgY2hhcmlvdHMgb2YgdGhlIFN5cmlhbnMsIGFuZCBmb3J0eSB0aG91c2FuZCBob3JzZW1lbiwgYW5kIHNtb3RlIFNob2JhY2ggdGhlIGNhcHRhaW4gb2YgdGhlaXIgaG9zdCwgd2hvIGRpZWQgdGhlcmUuCkFuZCB3aGVuIGFsbCB0aGUga2luZ3MgdGhhdCB3ZXJlIHNlcnZhbnRzIHRvIEhhZGFyZXplciBzYXcgdGhhdCB0aGV5IHdlcmUgc21pdHRlbiBiZWZvcmUgSXNyYWVsLCB0aGV5IG1hZGUgcGVhY2Ugd2l0aCBJc3JhZWwsIGFuZCBzZXJ2ZWQgdGhlbS4gU28gdGhlIFN5cmlhbnMgZmVhcmVkIHRvIGhlbHAgdGhlIGNoaWxkcmVuIG9mIEFtbW9uIGFueSBtb3JlLgpBbmQgaXQgY2FtZSB0byBwYXNzLCBhZnRlciB0aGUgeWVhciB3YXMgZXhwaXJlZCwgYXQgdGhlIHRpbWUgd2hlbiBraW5ncyBnbyBmb3J0aCB0byBiYXR0bGUsIHRoYXQgRGF2aWQgc2VudCBKb2FiLCBhbmQgaGlzIHNlcnZhbnRzIHdpdGggaGltLCBhbmQgYWxsIElzcmFlbDsgYW5kIHRoZXkgZGVzdHJveWVkIHRoZSBjaGlsZHJlbiBvZiBBbW1vbiwgYW5kIGJlc2llZ2VkIFJhYmJhaC4gQnV0IERhdmlkIHRhcnJpZWQgc3RpbGwgYXQgSmVydXNhbGVtLgpBbmQgaXQgY2FtZSB0byBwYXNzIGluIGFuIGV2ZW5pbmd0aWRlLCB0aGF0IERhdmlkIGFyb3NlIGZyb20gb2ZmIGhpcyBiZWQsIGFuZCB3YWxrZWQgdXBvbiB0aGUgcm9vZiBvZiB0aGUga2luZydzIGhvdXNlOiBhbmQgZnJvbSB0aGUgcm9vZiBoZSBzYXcgYSB3b21hbiB3YXNoaW5nIGhlcnNlbGY7IGFuZCB0aGUgd29tYW4gd2FzIHZlcnkgYmVhdXRpZnVsIHRvIGxvb2sgdXBvbi4KQW5kIERhdmlkIHNlbnQgYW5kIGVucXVpcmVkIGFmdGVyIHRoZSB3b21hbi4gQW5kIG9uZSBzYWlkLCBJcyBub3QgdGhpcyBCYXRoc2hlYmEsIHRoZSBkYXVnaHRlciBvZiBFbGlhbSwgdGhlIHdpZmUgb2YgVXJpYWggdGhlIEhpdHRpdGU/CkFuZCBEYXZpZCBzZW50IG1lc3NlbmdlcnMsIGFuZCB0b29rIGhlcjsgYW5kIHNoZSBjYW1lIGluIHVudG8gaGltLCBhbmQgaGUgbGF5IHdpdGggaGVyOyBmb3Igc2hlIHdhcyBwdXJpZmllZCBmcm9tIGhlciB1bmNsZWFubmVzczogYW5kIHNoZSByZXR1cm5lZCB1bnRvIGhlciBob3VzZS4KQW5kIHRoZSB3b21hbiBjb25jZWl2ZWQsIGFuZCBzZW50IGFuZCB0b2xkIERhdmlkLCBhbmQgc2FpZCwgSSBhbSB3aXRoIGNoaWxkLgpBbmQgRGF2aWQgc2VudCB0byBKb2FiLCBzYXlpbmcsIFNlbmQgbWUgVXJpYWggdGhlIEhpdHRpdGUuIEFuZCBKb2FiIHNlbnQgVXJpYWggdG8gRGF2aWQuCkFuZCB3aGVuIFVyaWFoIHdhcyBjb21lIHVudG8gaGltLCBEYXZpZCBkZW1hbmRlZCBvZiBoaW0gaG93IEpvYWIgZGlkLCBhbmQgaG93IHRoZSBwZW9wbGUgZGlkLCBhbmQgaG93IHRoZSB3YXIgcHJvc3BlcmVkLgpBbmQgRGF2aWQgc2FpZCB0byBVcmlhaCwgR28gZG93biB0byB0aHkgaG91c2UsIGFuZCB3YXNoIHRoeSBmZWV0LiBBbmQgVXJpYWggZGVwYXJ0ZWQgb3V0IG9mIHRoZSBraW5nJ3MgaG91c2UsIGFuZCB0aGVyZSBmb2xsb3dlZCBoaW0gYSBtZXNzIG9mIG1lYXQgZnJvbSB0aGUga2luZy4KQnV0IFVyaWFoIHNsZXB0IGF0IHRoZSBkb29yIG9mIHRoZSBraW5nJ3MgaG91c2Ugd2l0aCBhbGwgdGhlIHNlcnZhbnRzIG9mIGhpcyBsb3JkLCBhbmQgd2VudCBub3QgZG93biB0byBoaXMgaG91c2UuCkFuZCB3aGVuIHRoZXkgaGFkIHRvbGQgRGF2aWQsIHNheWluZywgVXJpYWggd2VudCBub3QgZG93biB1bnRvIGhpcyBob3VzZSwgRGF2aWQgc2FpZCB1bnRvIFVyaWFoLCBDYW1lc3QgdGhvdSBub3QgZnJvbSB0aHkgam91cm5leT8gd2h5IHRoZW4gZGlkc3QgdGhvdSBub3QgZ28gZG93biB1bnRvIHRoaW5lIGhvdXNlPwpBbmQgVXJpYWggc2FpZCB1bnRvIERhdmlkLCBUaGUgYXJrLCBhbmQgSXNyYWVsLCBhbmQgSnVkYWgsIGFiaWRlIGluIHRlbnRzOyBhbmQgbXkgbG9yZCBKb2FiLCBhbmQgdGhlIHNlcnZhbnRzIG9mIG15IGxvcmQsIGFyZSBlbmNhbXBlZCBpbiB0aGUgb3BlbiBmaWVsZHM7IHNoYWxsIEkgdGhlbiBnbyBpbnRvIG1pbmUgaG91c2UsIHRvIGVhdCBhbmQgdG8gZHJpbmssIGFuZCB0byBsaWUgd2l0aCBteSB3aWZlPyBhcyB0aG91IGxpdmVzdCwgYW5kIGFzIHRoeSBzb3VsIGxpdmV0aCwgSSB3aWxsIG5vdCBkbyB0aGlzIHRoaW5nLgpBbmQgRGF2aWQgc2FpZCB0byBVcmlhaCwgVGFycnkgaGVyZSB0byBkYXkgYWxzbywgYW5kIHRvIG1vcnJvdyBJIHdpbGwgbGV0IHRoZWUgZGVwYXJ0LiBTbyBVcmlhaCBhYm9kZSBpbiBKZXJ1c2FsZW0gdGhhdCBkYXksIGFuZCB0aGUgbW9ycm93LgpBbmQgd2hlbiBEYXZpZCBoYWQgY2FsbGVkIGhpbSwgaGUgZGlkIGVhdCBhbmQgZHJpbmsgYmVmb3JlIGhpbTsgYW5kIGhlIG1hZGUgaGltIGRydW5rOiBhbmQgYXQgZXZlbiBoZSB3ZW50IG91dCB0byBsaWUgb24gaGlzIGJlZCB3aXRoIHRoZSBzZXJ2YW50cyBvZiBoaXMgbG9yZCwgYnV0IHdlbnQgbm90IGRvd24gdG8gaGlzIGhvdXNlLgpBbmQgaXQgY2FtZSB0byBwYXNzIGluIHRoZSBtb3JuaW5nLCB0aGF0IERhdmlkIHdyb3RlIGEgbGV0dGVyIHRvIEpvYWIsIGFuZCBzZW50IGl0IGJ5IHRoZSBoYW5kIG9mIFVyaWFoLgpBbmQgaGUgd3JvdGUgaW4gdGhlIGxldHRlciwgc2F5aW5nLCBTZXQgeWUgVXJpYWggaW4gdGhlIGZvcmVmcm9udCBvZiB0aGUgaG90dGVzdCBiYXR0bGUsIGFuZCByZXRpcmUgeWUgZnJvbSBoaW0sIHRoYXQgaGUgbWF5IGJlIHNtaXR0ZW4sIGFuZCBkaWUuCkFuZCBpdCBjYW1lIHRvIHBhc3MsIHdoZW4gSm9hYiBvYnNlcnZlZCB0aGUgY2l0eSwgdGhhdCBoZSBhc3NpZ25lZCBVcmlhaCB1bnRvIGEgcGxhY2Ugd2hlcmUgaGUga25ldyB0aGF0IHZhbGlhbnQgbWVuIHdlcmUuCkFuZCB0aGUgbWVuIG9mIHRoZSBjaXR5IHdlbnQgb3V0LCBhbmQgZm91Z2h0IHdpdGggSm9hYjogYW5kIHRoZXJlIGZlbGwgc29tZSBvZiB0aGUgcGVvcGxlIG9mIHRoZSBzZXJ2YW50cyBvZiBEYXZpZDsgYW5kIFVyaWFoIHRoZSBIaXR0aXRlIGRpZWQgYWxzby4KVGhlbiBKb2FiIHNlbnQgYW5kIHRvbGQgRGF2aWQgYWxsIHRoZSB0aGluZ3MgY29uY2VybmluZyB0aGUgd2FyOwpBbmQgY2hhcmdlZCB0aGUgbWVzc2VuZ2VyLCBzYXlpbmcsIFdoZW4gdGhvdSBoYXN0IG1hZGUgYW4gZW5kIG9mIHRlbGxpbmcgdGhlIG1hdHRlcnMgb2YgdGhlIHdhciB1bnRvIHRoZSBraW5nLApBbmQgaWYgc28gYmUgdGhhdCB0aGUga2luZydzIHdyYXRoIGFyaXNlLCBhbmQgaGUgc2F5IHVudG8gdGhlZSwgV2hlcmVmb3JlIGFwcHJvYWNoZWQgeWUgc28gbmlnaCB1bnRvIHRoZSBjaXR5IHdoZW4geWUgZGlkIGZpZ2h0PyBrbmV3IHllIG5vdCB0aGF0IHRoZXkgd291bGQgc2hvb3QgZnJvbSB0aGUgd2FsbD8KV2hvIHNtb3RlIEFiaW1lbGVjaCB0aGUgc29uIG9mIEplcnViYmVzaGV0aD8gZGlkIG5vdCBhIHdvbWFuIGNhc3QgYSBwaWVjZSBvZiBhIG1pbGxzdG9uZSB1cG9uIGhpbSBmcm9tIHRoZSB3YWxsLCB0aGF0IGhlIGRpZWQgaW4gVGhlYmV6PyB3aHkgd2VudCB5ZSBuaWdoIHRoZSB3YWxsPyB0aGVuIHNheSB0aG91LCBUaHkgc2VydmFudCBVcmlhaCB0aGUgSGl0dGl0ZSBpcyBkZWFkIGFsc28uClNvIHRoZSBtZXNzZW5nZXIgd2VudCwgYW5kIGNhbWUgYW5kIHNoZXdlZCBEYXZpZCBhbGwgdGhhdCBKb2FiIGhhZCBzZW50IGhpbSBmb3IuCkFuZCB0aGUgbWVzc2VuZ2VyIHNhaWQgdW50byBEYXZpZCwgU3VyZWx5IHRoZSBtZW4gcHJldmFpbGVkIGFnYWluc3QgdXMsIGFuZCBjYW1lIG91dCB1bnRvIHVzIGludG8gdGhlIGZpZWxkLCBhbmQgd2Ugd2VyZSB1cG9uIHRoZW0gZXZlbiB1bnRvIHRoZSBlbnRlcmluZyBvZiB0aGUgZ2F0ZS4KQW5kIHRoZSBzaG9vdGVycyBzaG90IGZyb20gb2ZmIHRoZSB3YWxsIHVwb24gdGh5IHNlcnZhbnRzOyBhbmQgc29tZSBvZiB0aGUga2luZydzIHNlcnZhbnRzIGJlIGRlYWQsIGFuZCB0aHkgc2VydmFudCBVcmlhaCB0aGUgSGl0dGl0ZSBpcyBkZWFkIGFsc28uClRoZW4gRGF2aWQgc2FpZCB1bnRvIHRoZSBtZXNzZW5nZXIsIFRodXMgc2hhbHQgdGhvdSBzYXkgdW50byBKb2FiLCBMZXQgbm90IHRoaXMgdGhpbmcgZGlzcGxlYXNlIHRoZWUsIGZvciB0aGUgc3dvcmQgZGV2b3VyZXRoIG9uZSBhcyB3ZWxsIGFzIGFub3RoZXI6IG1ha2UgdGh5IGJhdHRsZSBtb3JlIHN0cm9uZyBhZ2FpbnN0IHRoZSBjaXR5LCBhbmQgb3ZlcnRocm93IGl0OiBhbmQgZW5jb3VyYWdlIHRob3UgaGltLgpBbmQgd2hlbiB0aGUgd2lmZSBvZiBVcmlhaCBoZWFyZCB0aGF0IFVyaWFoIGhlciBodXNiYW5kIHdhcyBkZWFkLCBzaGUgbW91cm5lZCBmb3IgaGVyIGh1c2JhbmQuCkFuZCB3aGVuIHRoZSBtb3VybmluZyB3YXMgcGFzdCwgRGF2aWQgc2VudCBhbmQgZmV0Y2hlZCBoZXIgdG8gaGlzIGhvdXNlLCBhbmQgc2hlIGJlY2FtZSBoaXMgd2lmZSwgYW5kIGJhcmUgaGltIGEgc29uLiBCdXQgdGhlIHRoaW5nIHRoYXQgRGF2aWQgaGFkIGRvbmUgZGlzcGxlYXNlZCB0aGUgTE9SRC4KQW5kIHRoZSBMT1JEIHNlbnQgTmF0aGFuIHVudG8gRGF2aWQuIEFuZCBoZSBjYW1lIHVudG8gaGltLCBhbmQgc2FpZCB1bnRvIGhpbSwgVGhlcmUgd2VyZSB0d28gbWVuIGluIG9uZSBjaXR5OyB0aGUgb25lIHJpY2gsIGFuZCB0aGUgb3RoZXIgcG9vci4KVGhlIHJpY2ggbWFuIGhhZCBleGNlZWRpbmcgbWFueSBmbG9ja3MgYW5kIGhlcmRzOgpCdXQgdGhlIHBvb3IgbWFuIGhhZCBub3RoaW5nLCBzYXZlIG9uZSBsaXR0bGUgZXdlIGxhbWIsIHdoaWNoIGhlIGhhZCBib3VnaHQgYW5kIG5vdXJpc2hlZCB1cDogYW5kIGl0IGdyZXcgdXAgdG9nZXRoZXIgd2l0aCBoaW0sIGFuZCB3aXRoIGhpcyBjaGlsZHJlbjsgaXQgZGlkIGVhdCBvZiBoaXMgb3duIG1lYXQsIGFuZCBkcmFuayBvZiBoaXMgb3duIGN1cCwgYW5kIGxheSBpbiBoaXMgYm9zb20sIGFuZCB3YXMgdW50byBoaW0gYXMgYSBkYXVnaHRlci4KQW5kIHRoZXJlIGNhbWUgYSB0cmF2ZWxsZXIgdW50byB0aGUgcmljaCBtYW4sIGFuZCBoZSBzcGFyZWQgdG8gdGFrZSBvZiBoaXMgb3duIGZsb2NrIGFuZCBvZiBoaXMgb3duIGhlcmQsIHRvIGRyZXNzIGZvciB0aGUgd2F5ZmFyaW5nIG1hbiB0aGF0IHdhcyBjb21lIHVudG8gaGltOyBidXQgdG9vayB0aGUgcG9vciBtYW4ncyBsYW1iLCBhbmQgZHJlc3NlZCBpdCBmb3IgdGhlIG1hbiB0aGF0IHdhcyBjb21lIHRvIGhpbS4KQW5kIERhdmlkJ3MgYW5nZXIgd2FzIGdyZWF0bHkga2luZGxlZCBhZ2FpbnN0IHRoZSBtYW47IGFuZCBoZSBzYWlkIHRvIE5hdGhhbiwgQXMgdGhlIExPUkQgbGl2ZXRoLCB0aGUgbWFuIHRoYXQgaGF0aCBkb25lIHRoaXMgdGhpbmcgc2hhbGwgc3VyZWx5IGRpZToKQW5kIGhlIHNoYWxsIHJlc3RvcmUgdGhlIGxhbWIgZm91cmZvbGQsIGJlY2F1c2UgaGUgZGlkIHRoaXMgdGhpbmcsIGFuZCBiZWNhdXNlIGhlIGhhZCBubyBwaXR5LgpBbmQgTmF0aGFuIHNhaWQgdG8gRGF2aWQsIFRob3UgYXJ0IHRoZSBtYW4uIFRodXMgc2FpdGggdGhlIExPUkQgR29kIG9mIElzcmFlbCwgSSBhbm9pbnRlZCB0aGVlIGtpbmcgb3ZlciBJc3JhZWwsIGFuZCBJIGRlbGl2ZXJlZCB0aGVlIG91dCBvZiB0aGUgaGFuZCBvZiBTYXVsOwpBbmQgSSBnYXZlIHRoZWUgdGh5IG1hc3RlcidzIGhvdXNlLCBhbmQgdGh5IG1hc3RlcidzIHdpdmVzIGludG8gdGh5IGJvc29tLCBhbmQgZ2F2ZSB0aGVlIHRoZSBob3VzZSBvZiBJc3JhZWwgYW5kIG9mIEp1ZGFoOyBhbmQgaWYgdGhhdCBoYWQgYmVlbiB0b28gbGl0dGxlLCBJIHdvdWxkIG1vcmVvdmVyIGhhdmUgZ2l2ZW4gdW50byB0aGVlIHN1Y2ggYW5kIHN1Y2ggdGhpbmdzLgpXaGVyZWZvcmUgaGFzdCB0aG91IGRlc3Bpc2VkIHRoZSBjb21tYW5kbWVudCBvZiB0aGUgTE9SRCwgdG8gZG8gZXZpbCBpbiBoaXMgc2lnaHQ/IHRob3UgaGFzdCBraWxsZWQgVXJpYWggdGhlIEhpdHRpdGUgd2l0aCB0aGUgc3dvcmQsIGFuZCBoYXN0IHRha2VuIGhpcyB3aWZlIHRvIGJlIHRoeSB3aWZlLCBhbmQgaGFzdCBzbGFpbiBoaW0gd2l0aCB0aGUgc3dvcmQgb2YgdGhlIGNoaWxkcmVuIG9mIEFtbW9uLgpOb3cgdGhlcmVmb3JlIHRoZSBzd29yZCBzaGFsbCBuZXZlciBkZXBhcnQgZnJvbSB0aGluZSBob3VzZTsgYmVjYXVzZSB0aG91IGhhc3QgZGVzcGlzZWQgbWUsIGFuZCBoYXN0IHRha2VuIHRoZSB3aWZlIG9mIFVyaWFoIHRoZSBIaXR0aXRlIHRvIGJlIHRoeSB3aWZlLgpUaHVzIHNhaXRoIHRoZSBMT1JELCBCZWhvbGQsIEkgd2lsbCByYWlzZSB1cCBldmlsIGFnYWluc3QgdGhlZSBvdXQgb2YgdGhpbmUgb3duIGhvdXNlLCBhbmQgSSB3aWxsIHRha2UgdGh5IHdpdmVzIGJlZm9yZSB0aGluZSBleWVzLCBhbmQgZ2l2ZSB0aGVtIHVudG8gdGh5IG5laWdoYm91ciwgYW5kIGhlIHNoYWxsIGxpZSB3aXRoIHRoeSB3aXZlcyBpbiB0aGUgc2lnaHQgb2YgdGhpcyBzdW4uCkZvciB0aG91IGRpZHN0IGl0IHNlY3JldGx5OiBidXQgSSB3aWxsIGRvIHRoaXMgdGhpbmcgYmVmb3JlIGFsbCBJc3JhZWwsIGFuZCBiZWZvcmUgdGhlIHN1bi4KQW5kIERhdmlkIHNhaWQgdW50byBOYXRoYW4sIEkgaGF2ZSBzaW5uZWQgYWdhaW5zdCB0aGUgTE9SRC4gQW5kIE5hdGhhbiBzYWlkIHVudG8gRGF2aWQsIFRoZSBMT1JEIGFsc28gaGF0aCBwdXQgYXdheSB0aHkgc2luOyB0aG91IHNoYWx0IG5vdCBkaWUuCkhvd2JlaXQsIGJlY2F1c2UgYnkgdGhpcyBkZWVkIHRob3UgaGFzdCBnaXZlbiBncmVhdCBvY2Nhc2lvbiB0byB0aGUgZW5lbWllcyBvZiB0aGUgTE9SRCB0byBibGFzcGhlbWUsIHRoZSBjaGlsZCBhbHNvIHRoYXQgaXMgYm9ybiB1bnRvIHRoZWUgc2hhbGwgc3VyZWx5IGRpZS4KQW5kIE5hdGhhbiBkZXBhcnRlZCB1bnRvIGhpcyBob3VzZS4gQW5kIHRoZSBMT1JEIHN0cnVjayB0aGUgY2hpbGQgdGhhdCBVcmlhaCdzIHdpZmUgYmFyZSB1bnRvIERhdmlkLCBhbmQgaXQgd2FzIHZlcnkgc2ljay4KRGF2aWQgdGhlcmVmb3JlIGJlc291Z2h0IEdvZCBmb3IgdGhlIGNoaWxkOyBhbmQgRGF2aWQgZmFzdGVkLCBhbmQgd2VudCBpbiwgYW5kIGxheSBhbGwgbmlnaHQgdXBvbiB0aGUgZWFydGguCkFuZCB0aGUgZWxkZXJzIG9mIGhpcyBob3VzZSBhcm9zZSwgYW5kIHdlbnQgdG8gaGltLCB0byByYWlzZSBoaW0gdXAgZnJvbSB0aGUgZWFydGg6IGJ1dCBoZSB3b3VsZCBub3QsIG5laXRoZXIgZGlkIGhlIGVhdCBicmVhZCB3aXRoIHRoZW0uCkFuZCBpdCBjYW1lIHRvIHBhc3Mgb24gdGhlIHNldmVudGggZGF5LCB0aGF0IHRoZSBjaGlsZCBkaWVkLiBBbmQgdGhlIHNlcnZhbnRzIG9mIERhdmlkIGZlYXJlZCB0byB0ZWxsIGhpbSB0aGF0IHRoZSBjaGlsZCB3YXMgZGVhZDogZm9yIHRoZXkgc2FpZCwgQmVob2xkLCB3aGlsZSB0aGUgY2hpbGQgd2FzIHlldCBhbGl2ZSwgd2Ugc3Bha2UgdW50byBoaW0sIGFuZCBoZSB3b3VsZCBub3QgaGVhcmtlbiB1bnRvIG91ciB2b2ljZTogaG93IHdpbGwgaGUgdGhlbiB2ZXggaGltc2VsZiwgaWYgd2UgdGVsbCBoaW0gdGhhdCB0aGUgY2hpbGQgaXMgZGVhZD8KQnV0IHdoZW4gRGF2aWQgc2F3IHRoYXQgaGlzIHNlcnZhbnRzIHdoaXNwZXJlZCwgRGF2aWQgcGVyY2VpdmVkIHRoYXQgdGhlIGNoaWxkIHdhcyBkZWFkOiB0aGVyZWZvcmUgRGF2aWQgc2FpZCB1bnRvIGhpcyBzZXJ2YW50cywgSXMgdGhlIGNoaWxkIGRlYWQ/IEFuZCB0aGV5IHNhaWQsIEhlIGlzIGRlYWQuClRoZW4gRGF2aWQgYXJvc2UgZnJvbSB0aGUgZWFydGgsIGFuZCB3YXNoZWQsIGFuZCBhbm9pbnRlZCBoaW1zZWxmLCBhbmQgY2hhbmdlZCBoaXMgYXBwYXJlbCwgYW5kIGNhbWUgaW50byB0aGUgaG91c2Ugb2YgdGhlIExPUkQsIGFuZCB3b3JzaGlwcGVkOiB0aGVuIGhlIGNhbWUgdG8gaGlzIG93biBob3VzZTsgYW5kIHdoZW4gaGUgcmVxdWlyZWQsIHRoZXkgc2V0IGJyZWFkIGJlZm9yZSBoaW0sIGFuZCBoZSBkaWQgZWF0LgpUaGVuIHNhaWQgaGlzIHNlcnZhbnRzIHVudG8gaGltLCBXaGF0IHRoaW5nIGlzIHRoaXMgdGhhdCB0aG91IGhhc3QgZG9uZT8gdGhvdSBkaWRzdCBmYXN0IGFuZCB3ZWVwIGZvciB0aGUgY2hpbGQsIHdoaWxlIGl0IHdhcyBhbGl2ZTsgYnV0IHdoZW4gdGhlIGNoaWxkIHdhcyBkZWFkLCB0aG91IGRpZHN0IHJpc2UgYW5kIGVhdCBicmVhZC4KQW5kIGhlIHNhaWQsIFdoaWxlIHRoZSBjaGlsZCB3YXMgeWV0IGFsaXZlLCBJIGZhc3RlZCBhbmQgd2VwdDogZm9yIEkgc2FpZCwgV2hvIGNhbiB0ZWxsIHdoZXRoZXIgR09EIHdpbGwgYmUgZ3JhY2lvdXMgdG8gbWUsIHRoYXQgdGhlIGNoaWxkIG1heSBsaXZlPwpCdXQgbm93IGhlIGlzIGRlYWQsIHdoZXJlZm9yZSBzaG91bGQgSSBmYXN0PyBjYW4gSSBicmluZyBoaW0gYmFjayBhZ2Fpbj8gSSBzaGFsbCBnbyB0byBoaW0sIGJ1dCBoZSBzaGFsbCBub3QgcmV0dXJuIHRvIG1lLgpBbmQgRGF2aWQgY29tZm9ydGVkIEJhdGhzaGViYSBoaXMgd2lmZSwgYW5kIHdlbnQgaW4gdW50byBoZXIsIGFuZCBsYXkgd2l0aCBoZXI6IGFuZCBzaGUgYmFyZSBhIHNvbiwgYW5kIGhlIGNhbGxlZCBoaXMgbmFtZSBTb2xvbW9uOiBhbmQgdGhlIExPUkQgbG92ZWQgaGltLgpBbmQgaGUgc2VudCBieSB0aGUgaGFuZCBvZiBOYXRoYW4gdGhlIHByb3BoZXQ7IGFuZCBoZSBjYWxsZWQgaGlzIG5hbWUgSmVkaWRpYWgsIGJlY2F1c2Ugb2YgdGhlIExPUkQuCkFuZCBKb2FiIGZvdWdodCBhZ2FpbnN0IFJhYmJhaCBvZiB0aGUgY2hpbGRyZW4gb2YgQW1tb24sIGFuZCB0b29rIHRoZSByb3lhbCBjaXR5LgpBbmQgSm9hYiBzZW50IG1lc3NlbmdlcnMgdG8gRGF2aWQsIGFuZCBzYWlkLCBJIGhhdmUgZm91Z2h0IGFnYWluc3QgUmFiYmFoLCBhbmQgaGF2ZSB0YWtlbiB0aGUgY2l0eSBvZiB3YXRlcnMuCk5vdyB0aGVyZWZvcmUgZ2F0aGVyIHRoZSByZXN0IG9mIHRoZSBwZW9wbGUgdG9nZXRoZXIsIGFuZCBlbmNhbXAgYWdhaW5zdCB0aGUgY2l0eSwgYW5kIHRha2UgaXQ6IGxlc3QgSSB0YWtlIHRoZSBjaXR5LCBhbmQgaXQgYmUgY2FsbGVkIGFmdGVyIG15IG5hbWUuCkFuZCBEYXZpZCBnYXRoZXJlZCBhbGwgdGhlIHBlb3BsZSB0b2dldGhlciwgYW5kIHdlbnQgdG8gUmFiYmFoLCBhbmQgZm91Z2h0IGFnYWluc3QgaXQsIGFuZCB0b29rIGl0LgpBbmQgaGUgdG9vayB0aGVpciBraW5nJ3MgY3Jvd24gZnJvbSBvZmYgaGlzIGhlYWQsIHRoZSB3ZWlnaHQgd2hlcmVvZiB3YXMgYSB0YWxlbnQgb2YgZ29sZCB3aXRoIHRoZSBwcmVjaW91cyBzdG9uZXM6IGFuZCBpdCB3YXMgc2V0IG9uIERhdmlkJ3MgaGVhZC4gQW5kIGhlIGJyb3VnaHQgZm9ydGggdGhlIHNwb2lsIG9mIHRoZSBjaXR5IGluIGdyZWF0IGFidW5kYW5jZS4KQW5kIGhlIGJyb3VnaHQgZm9ydGggdGhlIHBlb3BsZSB0aGF0IHdlcmUgdGhlcmVpbiwgYW5kIHB1dCB0aGVtIHVuZGVyIHNhd3MsIGFuZCB1bmRlciBoYXJyb3dzIG9mIGlyb24sIGFuZCB1bmRlciBheGVzIG9mIGlyb24sIGFuZCBtYWRlIHRoZW0gcGFzcyB0aHJvdWdoIHRoZSBicmljay1raWxuOiBhbmQgdGh1cyBkaWQgaGUgdW50byBhbGwgdGhlIGNpdGllcyBvZiB0aGUgY2hpbGRyZW4gb2YgQW1tb24uIFNvIERhdmlkIGFuZCBhbGwgdGhlIHBlb3BsZSByZXR1cm5lZCB1bnRvIEplcnVzYWxlbS4KQW5kIGl0IGNhbWUgdG8gcGFzcyBhZnRlciB0aGlzLCB0aGF0IEFic2Fsb20gdGhlIHNvbiBvZiBEYXZpZCBoYWQgYSBmYWlyIHNpc3Rlciwgd2hvc2UgbmFtZSB3YXMgVGFtYXI7IGFuZCBBbW5vbiB0aGUgc29uIG9mIERhdmlkIGxvdmVkIGhlci4KQW5kIEFtbm9uIHdhcyBzbyB2ZXhlZCwgdGhhdCBoZSBmZWxsIHNpY2sgZm9yIGhpcyBzaXN0ZXIgVGFtYXI7IGZvciBzaGUgd2FzIGEgdmlyZ2luOyBhbmQgQW1ub24gdGhvdWdodCBpdCBoYXJkIGZvciBoaW0gdG8gZG8gYW55dGhpbmcgdG8gaGVyLgpCdXQgQW1ub24gaGFkIGEgZnJpZW5kLCB3aG9zZSBuYW1lIHdhcyBKb25hZGFiLCB0aGUgc29uIG9mIFNoaW1lYWggRGF2aWQncyBicm90aGVyOiBhbmQgSm9uYWRhYiB3YXMgYSB2ZXJ5IHN1YnRpbCBtYW4uCkFuZCBoZSBzYWlkIHVudG8gaGltLCBXaHkgYXJ0IHRob3UsIGJlaW5nIHRoZSBraW5nJ3Mgc29uLCBsZWFuIGZyb20gZGF5IHRvIGRheT8gd2lsdCB0aG91IG5vdCB0ZWxsIG1lPyBBbmQgQW1ub24gc2FpZCB1bnRvIGhpbSwgSSBsb3ZlIFRhbWFyLCBteSBicm90aGVyIEFic2Fsb20ncyBzaXN0ZXIuCkFuZCBKb25hZGFiIHNhaWQgdW50byBoaW0sIExheSB0aGVlIGRvd24gb24gdGh5IGJlZCwgYW5kIG1ha2UgdGh5c2VsZiBzaWNrOiBhbmQgd2hlbiB0aHkgZmF0aGVyIGNvbWV0aCB0byBzZWUgdGhlZSwgc2F5IHVudG8gaGltLCBJIHByYXkgdGhlZSwgbGV0IG15IHNpc3RlciBUYW1hciBjb21lLCBhbmQgZ2l2ZSBtZSBtZWF0LCBhbmQgZHJlc3MgdGhlIG1lYXQgaW4gbXkgc2lnaHQsIHRoYXQgSSBtYXkgc2VlIGl0LCBhbmQgZWF0IGl0IGF0IGhlciBoYW5kLgpTbyBBbW5vbiBsYXkgZG93biwgYW5kIG1hZGUgaGltc2VsZiBzaWNrOiBhbmQgd2hlbiB0aGUga2luZyB3YXMgY29tZSB0byBzZWUgaGltLCBBbW5vbiBzYWlkIHVudG8gdGhlIGtpbmcsIEkgcHJheSB0aGVlLCBsZXQgVGFtYXIgbXkgc2lzdGVyIGNvbWUsIGFuZCBtYWtlIG1lIGEgY291cGxlIG9mIGNha2VzIGluIG15IHNpZ2h0LCB0aGF0IEkgbWF5IGVhdCBhdCBoZXIgaGFuZC4KVGhlbiBEYXZpZCBzZW50IGhvbWUgdG8gVGFtYXIsIHNheWluZywgR28gbm93IHRvIHRoeSBicm90aGVyIEFtbm9uJ3MgaG91c2UsIGFuZCBkcmVzcyBoaW0gbWVhdC4KU28gVGFtYXIgd2VudCB0byBoZXIgYnJvdGhlciBBbW5vbidzIGhvdXNlOyBhbmQgaGUgd2FzIGxhaWQgZG93bi4gQW5kIHNoZSB0b29rIGZsb3VyLCBhbmQga25lYWRlZCBpdCwgYW5kIG1hZGUgY2FrZXMgaW4gaGlzIHNpZ2h0LCBhbmQgZGlkIGJha2UgdGhlIGNha2VzLgpBbmQgc2hlIHRvb2sgYSBwYW4sIGFuZCBwb3VyZWQgdGhlbSBvdXQgYmVmb3JlIGhpbTsgYnV0IGhlIHJlZnVzZWQgdG8gZWF0LiBBbmQgQW1ub24gc2FpZCwgSGF2ZSBvdXQgYWxsIG1lbiBmcm9tIG1lLiBBbmQgdGhleSB3ZW50IG91dCBldmVyeSBtYW4gZnJvbSBoaW0uCkFuZCBBbW5vbiBzYWlkIHVudG8gVGFtYXIsIEJyaW5nIHRoZSBtZWF0IGludG8gdGhlIGNoYW1iZXIsIHRoYXQgSSBtYXkgZWF0IG9mIHRoaW5lIGhhbmQuIEFuZCBUYW1hciB0b29rIHRoZSBjYWtlcyB3aGljaCBzaGUgaGFkIG1hZGUsIGFuZCBicm91Z2h0IHRoZW0gaW50byB0aGUgY2hhbWJlciB0byBBbW5vbiBoZXIgYnJvdGhlci4KQW5kIHdoZW4gc2hlIGhhZCBicm91Z2h0IHRoZW0gdW50byBoaW0gdG8gZWF0LCBoZSB0b29rIGhvbGQgb2YgaGVyLCBhbmQgc2FpZCB1bnRvIGhlciwgQ29tZSBsaWUgd2l0aCBtZSwgbXkgc2lzdGVyLgpBbmQgc2hlIGFuc3dlcmVkIGhpbSwgTmF5LCBteSBicm90aGVyLCBkbyBub3QgZm9yY2UgbWU7IGZvciBubyBzdWNoIHRoaW5nIG91Z2h0IHRvIGJlIGRvbmUgaW4gSXNyYWVsOiBkbyBub3QgdGhvdSB0aGlzIGZvbGx5LgpBbmQgSSwgd2hpdGhlciBzaGFsbCBJIGNhdXNlIG15IHNoYW1lIHRvIGdvPyBhbmQgYXMgZm9yIHRoZWUsIHRob3Ugc2hhbHQgYmUgYXMgb25lIG9mIHRoZSBmb29scyBpbiBJc3JhZWwuIE5vdyB0aGVyZWZvcmUsIEkgcHJheSB0aGVlLCBzcGVhayB1bnRvIHRoZSBraW5nOyBmb3IgaGUgd2lsbCBub3Qgd2l0aGhvbGQgbWUgZnJvbSB0aGVlLgpIb3diZWl0IGhlIHdvdWxkIG5vdCBoZWFya2VuIHVudG8gaGVyIHZvaWNlOiBidXQsIGJlaW5nIHN0cm9uZ2VyIHRoYW4gc2hlLCBmb3JjZWQgaGVyLCBhbmQgbGF5IHdpdGggaGVyLgpUaGVuIEFtbm9uIGhhdGVkIGhlciBleGNlZWRpbmdseTsgc28gdGhhdCB0aGUgaGF0cmVkIHdoZXJld2l0aCBoZSBoYXRlZCBoZXIgd2FzIGdyZWF0ZXIgdGhhbiB0aGUgbG92ZSB3aGVyZXdpdGggaGUgaGFkIGxvdmVkIGhlci4gQW5kIEFtbm9uIHNhaWQgdW50byBoZXIsIEFyaXNlLCBiZSBnb25lLgpBbmQgc2hlIHNhaWQgdW50byBoaW0sIFRoZXJlIGlzIG5vIGNhdXNlOiB0aGlzIGV2aWwgaW4gc2VuZGluZyBtZSBhd2F5IGlzIGdyZWF0ZXIgdGhhbiB0aGUgb3RoZXIgdGhhdCB0aG91IGRpZHN0IHVudG8gbWUuIEJ1dCBoZSB3b3VsZCBub3QgaGVhcmtlbiB1bnRvIGhlci4KVGhlbiBoZSBjYWxsZWQgaGlzIHNlcnZhbnQgdGhhdCBtaW5pc3RlcmVkIHVudG8gaGltLCBhbmQgc2FpZCwgUHV0IG5vdyB0aGlzIHdvbWFuIG91dCBmcm9tIG1lLCBhbmQgYm9sdCB0aGUgZG9vciBhZnRlciBoZXIuCkFuZCBzaGUgaGFkIGEgZ2FybWVudCBvZiBkaXZlcnMgY29sb3VycyB1cG9uIGhlcjogZm9yIHdpdGggc3VjaCByb2JlcyB3ZXJlIHRoZSBraW5nJ3MgZGF1Z2h0ZXJzIHRoYXQgd2VyZSB2aXJnaW5zIGFwcGFyZWxsZWQuIFRoZW4gaGlzIHNlcnZhbnQgYnJvdWdodCBoZXIgb3V0LCBhbmQgYm9sdGVkIHRoZSBkb29yIGFmdGVyIGhlci4KQW5kIFRhbWFyIHB1dCBhc2hlcyBvbiBoZXIgaGVhZCwgYW5kIHJlbnQgaGVyIGdhcm1lbnQgb2YgZGl2ZXJzIGNvbG91cnMgdGhhdCB3YXMgb24gaGVyLCBhbmQgbGFpZCBoZXIgaGFuZCBvbiBoZXIgaGVhZCwgYW5kIHdlbnQgb24gY3J5aW5nLgpBbmQgQWJzYWxvbSBoZXIgYnJvdGhlciBzYWlkIHVudG8gaGVyLCBIYXRoIEFtbm9uIHRoeSBicm90aGVyIGJlZW4gd2l0aCB0aGVlPyBidXQgaG9sZCBub3cgdGh5IHBlYWNlLCBteSBzaXN0ZXI6IGhlIGlzIHRoeSBicm90aGVyOyByZWdhcmQgbm90IHRoaXMgdGhpbmcuIFNvIFRhbWFyIHJlbWFpbmVkIGRlc29sYXRlIGluIGhlciBicm90aGVyIEFic2Fsb20ncyBob3VzZS4KQnV0IHdoZW4ga2luZyBEYXZpZCBoZWFyZCBvZiBhbGwgdGhlc2UgdGhpbmdzLCBoZSB3YXMgdmVyeSB3cm90aC4KQW5kIEFic2Fsb20gc3Bha2UgdW50byBoaXMgYnJvdGhlciBBbW5vbiBuZWl0aGVyIGdvb2Qgbm9yIGJhZDogZm9yIEFic2Fsb20gaGF0ZWQgQW1ub24sIGJlY2F1c2UgaGUgaGFkIGZvcmNlZCBoaXMgc2lzdGVyIFRhbWFyLgpBbmQgaXQgY2FtZSB0byBwYXNzIGFmdGVyIHR3byBmdWxsIHllYXJzLCB0aGF0IEFic2Fsb20gaGFkIHNoZWVwc2hlYXJlcnMgaW4gQmFhbGhhem9yLCB3aGljaCBpcyBiZXNpZGUgRXBocmFpbTogYW5kIEFic2Fsb20gaW52aXRlZCBhbGwgdGhlIGtpbmcncyBzb25zLgpBbmQgQWJzYWxvbSBjYW1lIHRvIHRoZSBraW5nLCBhbmQgc2FpZCwgQmVob2xkIG5vdywgdGh5IHNlcnZhbnQgaGF0aCBzaGVlcHNoZWFyZXJzOyBsZXQgdGhlIGtpbmcsIEkgYmVzZWVjaCB0aGVlLCBhbmQgaGlzIHNlcnZhbnRzIGdvIHdpdGggdGh5IHNlcnZhbnQuCkFuZCB0aGUga2luZyBzYWlkIHRvIEFic2Fsb20sIE5heSwgbXkgc29uLCBsZXQgdXMgbm90IGFsbCBub3cgZ28sIGxlc3Qgd2UgYmUgY2hhcmdlYWJsZSB1bnRvIHRoZWUuIEFuZCBoZSBwcmVzc2VkIGhpbTogaG93YmVpdCBoZSB3b3VsZCBub3QgZ28sIGJ1dCBibGVzc2VkIGhpbS4KVGhlbiBzYWlkIEFic2Fsb20sIElmIG5vdCwgSSBwcmF5IHRoZWUsIGxldCBteSBicm90aGVyIEFtbm9uIGdvIHdpdGggdXMuIEFuZCB0aGUga2luZyBzYWlkIHVudG8gaGltLCBXaHkgc2hvdWxkIGhlIGdvIHdpdGggdGhlZT8KQnV0IEFic2Fsb20gcHJlc3NlZCBoaW0sIHRoYXQgaGUgbGV0IEFtbm9uIGFuZCBhbGwgdGhlIGtpbmcncyBzb25zIGdvIHdpdGggaGltLgpOb3cgQWJzYWxvbSBoYWQgY29tbWFuZGVkIGhpcyBzZXJ2YW50cywgc2F5aW5nLCBNYXJrIHllIG5vdyB3aGVuIEFtbm9uJ3MgaGVhcnQgaXMgbWVycnkgd2l0aCB3aW5lLCBhbmQgd2hlbiBJIHNheSB1bnRvIHlvdSwgU21pdGUgQW1ub247IHRoZW4ga2lsbCBoaW0sIGZlYXIgbm90OiBoYXZlIG5vdCBJIGNvbW1hbmRlZCB5b3U/IGJlIGNvdXJhZ2VvdXMsIGFuZCBiZSB2YWxpYW50LgpBbmQgdGhlIHNlcnZhbnRzIG9mIEFic2Fsb20gZGlkIHVudG8gQW1ub24gYXMgQWJzYWxvbSBoYWQgY29tbWFuZGVkLiBUaGVuIGFsbCB0aGUga2luZydzIHNvbnMgYXJvc2UsIGFuZCBldmVyeSBtYW4gZ2F0IGhpbSB1cCB1cG9uIGhpcyBtdWxlLCBhbmQgZmxlZC4KQW5kIGl0IGNhbWUgdG8gcGFzcywgd2hpbGUgdGhleSB3ZXJlIGluIHRoZSB3YXksIHRoYXQgdGlkaW5ncyBjYW1lIHRvIERhdmlkLCBzYXlpbmcsIEFic2Fsb20gaGF0aCBzbGFpbiBhbGwgdGhlIGtpbmcncyBzb25zLCBhbmQgdGhlcmUgaXMgbm90IG9uZSBvZiB0aGVtIGxlZnQuClRoZW4gdGhlIGtpbmcgYXJvc2UsIGFuZCB0YXJlIGhpcyBnYXJtZW50cywgYW5kIGxheSBvbiB0aGUgZWFydGg7IGFuZCBhbGwgaGlzIHNlcnZhbnRzIHN0b29kIGJ5IHdpdGggdGhlaXIgY2xvdGhlcyByZW50LgpBbmQgSm9uYWRhYiwgdGhlIHNvbiBvZiBTaGltZWFoIERhdmlkJ3MgYnJvdGhlciwgYW5zd2VyZWQgYW5kIHNhaWQsIExldCBub3QgbXkgbG9yZCBzdXBwb3NlIHRoYXQgdGhleSBoYXZlIHNsYWluIGFsbCB0aGUgeW91bmcgbWVuIHRoZSBraW5nJ3Mgc29uczsgZm9yIEFtbm9uIG9ubHkgaXMgZGVhZDogZm9yIGJ5IHRoZSBhcHBvaW50bWVudCBvZiBBYnNhbG9tIHRoaXMgaGF0aCBiZWVuIGRldGVybWluZWQgZnJvbSB0aGUgZGF5IHRoYXQgaGUgZm9yY2VkIGhpcyBzaXN0ZXIgVGFtYXIuCk5vdyB0aGVyZWZvcmUgbGV0IG5vdCBteSBsb3JkIHRoZSBraW5nIHRha2UgdGhlIHRoaW5nIHRvIGhpcyBoZWFydCwgdG8gdGhpbmsgdGhhdCBhbGwgdGhlIGtpbmcncyBzb25zIGFyZSBkZWFkOiBmb3IgQW1ub24gb25seSBpcyBkZWFkLgpCdXQgQWJzYWxvbSBmbGVkLiBBbmQgdGhlIHlvdW5nIG1hbiB0aGF0IGtlcHQgdGhlIHdhdGNoIGxpZnRlZCB1cCBoaXMgZXllcywgYW5kIGxvb2tlZCwgYW5kLCBiZWhvbGQsIHRoZXJlIGNhbWUgbXVjaCBwZW9wbGUgYnkgdGhlIHdheSBvZiB0aGUgaGlsbCBzaWRlIGJlaGluZCBoaW0uCkFuZCBKb25hZGFiIHNhaWQgdW50byB0aGUga2luZywgQmVob2xkLCB0aGUga2luZydzIHNvbnMgY29tZTogYXMgdGh5IHNlcnZhbnQgc2FpZCwgc28gaXQgaXMuCkFuZCBpdCBjYW1lIHRvIHBhc3MsIGFzIHNvb24gYXMgaGUgaGFkIG1hZGUgYW4gZW5kIG9mIHNwZWFraW5nLCB0aGF0LCBiZWhvbGQsIHRoZSBraW5nJ3Mgc29ucyBjYW1lLCBhbmQgbGlmdGVkIHVwIHRoZWlyIHZvaWNlIGFuZCB3ZXB0OiBhbmQgdGhlIGtpbmcgYWxzbyBhbmQgYWxsIGhpcyBzZXJ2YW50cyB3ZXB0IHZlcnkgc29yZS4KQnV0IEFic2Fsb20gZmxlZCwgYW5kIHdlbnQgdG8gVGFsbWFpLCB0aGUgc29uIG9mIEFtbWlodWQsIGtpbmcgb2YgR2VzaHVyLiBBbmQgRGF2aWQgbW91cm5lZCBmb3IgaGlzIHNvbiBldmVyeSBkYXkuClNvIEFic2Fsb20gZmxlZCwgYW5kIHdlbnQgdG8gR2VzaHVyLCBhbmQgd2FzIHRoZXJlIHRocmVlIHllYXJzLgpBbmQgdGhlIHNvdWwgb2Yga2luZyBEYXZpZCBsb25nZWQgdG8gZ28gZm9ydGggdW50byBBYnNhbG9tOiBmb3IgaGUgd2FzIGNvbWZvcnRlZCBjb25jZXJuaW5nIEFtbm9uLCBzZWVpbmcgaGUgd2FzIGRlYWQuCk5vdyBKb2FiIHRoZSBzb24gb2YgWmVydWlhaCBwZXJjZWl2ZWQgdGhhdCB0aGUga2luZydzIGhlYXJ0IHdhcyB0b3dhcmQgQWJzYWxvbS4KQW5kIEpvYWIgc2VudCB0byBUZWtvYWgsIGFuZCBmZXRjaGVkIHRoZW5jZSBhIHdpc2Ugd29tYW4sIGFuZCBzYWlkIHVudG8gaGVyLCBJIHByYXkgdGhlZSwgZmVpZ24gdGh5c2VsZiB0byBiZSBhIG1vdXJuZXIsIGFuZCBwdXQgb24gbm93IG1vdXJuaW5nIGFwcGFyZWwsIGFuZCBhbm9pbnQgbm90IHRoeXNlbGYgd2l0aCBvaWwsIGJ1dCBiZSBhcyBhIHdvbWFuIHRoYXQgaGFkIGEgbG9uZyB0aW1lIG1vdXJuZWQgZm9yIHRoZSBkZWFkOgpBbmQgY29tZSB0byB0aGUga2luZywgYW5kIHNwZWFrIG9uIHRoaXMgbWFubmVyIHVudG8gaGltLiBTbyBKb2FiIHB1dCB0aGUgd29yZHMgaW4gaGVyIG1vdXRoLgpBbmQgd2hlbiB0aGUgd29tYW4gb2YgVGVrb2FoIHNwYWtlIHRvIHRoZSBraW5nLCBzaGUgZmVsbCBvbiBoZXIgZmFjZSB0byB0aGUgZ3JvdW5kLCBhbmQgZGlkIG9iZWlzYW5jZSwgYW5kIHNhaWQsIEhlbHAsIE8ga2luZy4KQW5kIHRoZSBraW5nIHNhaWQgdW50byBoZXIsIFdoYXQgYWlsZXRoIHRoZWU/IEFuZCBzaGUgYW5zd2VyZWQsIEkgYW0gaW5kZWVkIGEgd2lkb3cgd29tYW4sIGFuZCBtaW5lIGh1c2JhbmQgaXMgZGVhZC4KQW5kIHRoeSBoYW5kbWFpZCBoYWQgdHdvIHNvbnMsIGFuZCB0aGV5IHR3byBzdHJvdmUgdG9nZXRoZXIgaW4gdGhlIGZpZWxkLCBhbmQgdGhlcmUgd2FzIG5vbmUgdG8gcGFydCB0aGVtLCBidXQgdGhlIG9uZSBzbW90ZSB0aGUgb3RoZXIsIGFuZCBzbGV3IGhpbS4KQW5kLCBiZWhvbGQsIHRoZSB3aG9sZSBmYW1pbHkgaXMgcmlzZW4gYWdhaW5zdCB0aGluZSBoYW5kbWFpZCwgYW5kIHRoZXkgc2FpZCwgRGVsaXZlciBoaW0gdGhhdCBzbW90ZSBoaXMgYnJvdGhlciwgdGhhdCB3ZSBtYXkga2lsbCBoaW0sIGZvciB0aGUgbGlmZSBvZiBoaXMgYnJvdGhlciB3aG9tIGhlIHNsZXc7IGFuZCB3ZSB3aWxsIGRlc3Ryb3kgdGhlIGhlaXIgYWxzbzogYW5kIHNvIHRoZXkgc2hhbGwgcXVlbmNoIG15IGNvYWwgd2hpY2ggaXMgbGVmdCwgYW5kIHNoYWxsIG5vdCBsZWF2ZSB0byBteSBodXNiYW5kIG5laXRoZXIgbmFtZSBub3IgcmVtYWluZGVyIHVwb24gdGhlIGVhcnRoLgpBbmQgdGhlIGtpbmcgc2FpZCB1bnRvIHRoZSB3b21hbiwgR28gdG8gdGhpbmUgaG91c2UsIGFuZCBJIHdpbGwgZ2l2ZSBjaGFyZ2UgY29uY2VybmluZyB0aGVlLgpBbmQgdGhlIHdvbWFuIG9mIFRla29haCBzYWlkIHVudG8gdGhlIGtpbmcsIE15IGxvcmQsIE8ga2luZywgdGhlIGluaXF1aXR5IGJlIG9uIG1lLCBhbmQgb24gbXkgZmF0aGVyJ3MgaG91c2U6IGFuZCB0aGUga2luZyBhbmQgaGlzIHRocm9uZSBiZSBndWlsdGxlc3MuCkFuZCB0aGUga2luZyBzYWlkLCBXaG9ldmVyIHNhaXRoIG91Z2h0IHVudG8gdGhlZSwgYnJpbmcgaGltIHRvIG1lLCBhbmQgaGUgc2hhbGwgbm90IHRvdWNoIHRoZWUgYW55IG1vcmUuClRoZW4gc2FpZCBzaGUsIEkgcHJheSB0aGVlLCBsZXQgdGhlIGtpbmcgcmVtZW1iZXIgdGhlIExPUkQgdGh5IEdvZCwgdGhhdCB0aG91IHdvdWxkZXN0IG5vdCBzdWZmZXIgdGhlIHJldmVuZ2VycyBvZiBibG9vZCB0byBkZXN0cm95IGFueSBtb3JlLCBsZXN0IHRoZXkgZGVzdHJveSBteSBzb24uIEFuZCBoZSBzYWlkLCBBcyB0aGUgTE9SRCBsaXZldGgsIHRoZXJlIHNoYWxsIG5vdCBvbmUgaGFpciBvZiB0aHkgc29uIGZhbGwgdG8gdGhlIGVhcnRoLgpUaGVuIHRoZSB3b21hbiBzYWlkLCBMZXQgdGhpbmUgaGFuZG1haWQsIEkgcHJheSB0aGVlLCBzcGVhayBvbmUgd29yZCB1bnRvIG15IGxvcmQgdGhlIGtpbmcuIEFuZCBoZSBzYWlkLCBTYXkgb24uCkFuZCB0aGUgd29tYW4gc2FpZCwgV2hlcmVmb3JlIHRoZW4gaGFzdCB0aG91IHRob3VnaHQgc3VjaCBhIHRoaW5nIGFnYWluc3QgdGhlIHBlb3BsZSBvZiBHb2Q/IGZvciB0aGUga2luZyBkb3RoIHNwZWFrIHRoaXMgdGhpbmcgYXMgb25lIHdoaWNoIGlzIGZhdWx0eSwgaW4gdGhhdCB0aGUga2luZyBkb3RoIG5vdCBmZXRjaCBob21lIGFnYWluIGhpcyBiYW5pc2hlZC4KRm9yIHdlIG11c3QgbmVlZHMgZGllLCBhbmQgYXJlIGFzIHdhdGVyIHNwaWx0IG9uIHRoZSBncm91bmQsIHdoaWNoIGNhbm5vdCBiZSBnYXRoZXJlZCB1cCBhZ2FpbjsgbmVpdGhlciBkb3RoIEdvZCByZXNwZWN0IGFueSBwZXJzb246IHlldCBkb3RoIGhlIGRldmlzZSBtZWFucywgdGhhdCBoaXMgYmFuaXNoZWQgYmUgbm90IGV4cGVsbGVkIGZyb20gaGltLgpOb3cgdGhlcmVmb3JlIHRoYXQgSSBhbSBjb21lIHRvIHNwZWFrIG9mIHRoaXMgdGhpbmcgdW50byBteSBsb3JkIHRoZSBraW5nLCBpdCBpcyBiZWNhdXNlIHRoZSBwZW9wbGUgaGF2ZSBtYWRlIG1lIGFmcmFpZDogYW5kIHRoeSBoYW5kbWFpZCBzYWlkLCBJIHdpbGwgbm93IHNwZWFrIHVudG8gdGhlIGtpbmc7IGl0IG1heSBiZSB0aGF0IHRoZSBraW5nIHdpbGwgcGVyZm9ybSB0aGUgcmVxdWVzdCBvZiBoaXMgaGFuZG1haWQuCkZvciB0aGUga2luZyB3aWxsIGhlYXIsIHRvIGRlbGl2ZXIgaGlzIGhhbmRtYWlkIG91dCBvZiB0aGUgaGFuZCBvZiB0aGUgbWFuIHRoYXQgd291bGQgZGVzdHJveSBtZSBhbmQgbXkgc29uIHRvZ2V0aGVyIG91dCBvZiB0aGUgaW5oZXJpdGFuY2Ugb2YgR29kLgpUaGVuIHRoaW5lIGhhbmRtYWlkIHNhaWQsIFRoZSB3b3JkIG9mIG15IGxvcmQgdGhlIGtpbmcgc2hhbGwgbm93IGJlIGNvbWZvcnRhYmxlOiBmb3IgYXMgYW4gYW5nZWwgb2YgR29kLCBzbyBpcyBteSBsb3JkIHRoZSBraW5nIHRvIGRpc2Nlcm4gZ29vZCBhbmQgYmFkOiB0aGVyZWZvcmUgdGhlIExPUkQgdGh5IEdvZCB3aWxsIGJlIHdpdGggdGhlZS4KVGhlbiB0aGUga2luZyBhbnN3ZXJlZCBhbmQgc2FpZCB1bnRvIHRoZSB3b21hbiwgSGlkZSBub3QgZnJvbSBtZSwgSSBwcmF5IHRoZWUsIHRoZSB0aGluZyB0aGF0IEkgc2hhbGwgYXNrIHRoZWUuIEFuZCB0aGUgd29tYW4gc2FpZCwgTGV0IG15IGxvcmQgdGhlIGtpbmcgbm93IHNwZWFrLgpBbmQgdGhlIGtpbmcgc2FpZCwgSXMgbm90IHRoZSBoYW5kIG9mIEpvYWIgd2l0aCB0aGVlIGluIGFsbCB0aGlzPyBBbmQgdGhlIHdvbWFuIGFuc3dlcmVkIGFuZCBzYWlkLCBBcyB0aHkgc291bCBsaXZldGgsIG15IGxvcmQgdGhlIGtpbmcsIG5vbmUgY2FuIHR1cm4gdG8gdGhlIHJpZ2h0IGhhbmQgb3IgdG8gdGhlIGxlZnQgZnJvbSBvdWdodCB0aGF0IG15IGxvcmQgdGhlIGtpbmcgaGF0aCBzcG9rZW46IGZvciB0aHkgc2VydmFudCBKb2FiLCBoZSBiYWRlIG1lLCBhbmQgaGUgcHV0IGFsbCB0aGVzZSB3b3JkcyBpbiB0aGUgbW91dGggb2YgdGhpbmUgaGFuZG1haWQ6ClRvIGZldGNoIGFib3V0IHRoaXMgZm9ybSBvZiBzcGVlY2ggaGF0aCB0aHkgc2VydmFudCBKb2FiIGRvbmUgdGhpcyB0aGluZzogYW5kIG15IGxvcmQgaXMgd2lzZSwgYWNjb3JkaW5nIHRvIHRoZSB3aXNkb20gb2YgYW4gYW5nZWwgb2YgR29kLCB0byBrbm93IGFsbCB0aGluZ3MgdGhhdCBhcmUgaW4gdGhlIGVhcnRoLgpBbmQgdGhlIGtpbmcgc2FpZCB1bnRvIEpvYWIsIEJlaG9sZCBub3csIEkgaGF2ZSBkb25lIHRoaXMgdGhpbmc6IGdvIHRoZXJlZm9yZSwgYnJpbmcgdGhlIHlvdW5nIG1hbiBBYnNhbG9tIGFnYWluLgpBbmQgSm9hYiBmZWxsIHRvIHRoZSBncm91bmQgb24gaGlzIGZhY2UsIGFuZCBib3dlZCBoaW1zZWxmLCBhbmQgdGhhbmtlZCB0aGUga2luZzogYW5kIEpvYWIgc2FpZCwgVG8gZGF5IHRoeSBzZXJ2YW50IGtub3dldGggdGhhdCBJIGhhdmUgZm91bmQgZ3JhY2UgaW4gdGh5IHNpZ2h0LCBteSBsb3JkLCBPIGtpbmcsIGluIHRoYXQgdGhlIGtpbmcgaGF0aCBmdWxmaWxsZWQgdGhlIHJlcXVlc3Qgb2YgaGlzIHNlcnZhbnQuClNvIEpvYWIgYXJvc2UgYW5kIHdlbnQgdG8gR2VzaHVyLCBhbmQgYnJvdWdodCBBYnNhbG9tIHRvIEplcnVzYWxlbS4KQW5kIHRoZSBraW5nIHNhaWQsIExldCBoaW0gdHVybiB0byBoaXMgb3duIGhvdXNlLCBhbmQgbGV0IGhpbSBub3Qgc2VlIG15IGZhY2UuIFNvIEFic2Fsb20gcmV0dXJuZWQgdG8gaGlzIG93biBob3VzZSwgYW5kIHNhdyBub3QgdGhlIGtpbmcncyBmYWNlLgpCdXQgaW4gYWxsIElzcmFlbCB0aGVyZSB3YXMgbm9uZSB0byBiZSBzbyBtdWNoIHByYWlzZWQgYXMgQWJzYWxvbSBmb3IgaGlzIGJlYXV0eTogZnJvbSB0aGUgc29sZSBvZiBoaXMgZm9vdCBldmVuIHRvIHRoZSBjcm93biBvZiBoaXMgaGVhZCB0aGVyZSB3YXMgbm8gYmxlbWlzaCBpbiBoaW0uCkFuZCB3aGVuIGhlIHBvbGxlZCBoaXMgaGVhZCwgKGZvciBpdCB3YXMgYXQgZXZlcnkgeWVhcidzIGVuZCB0aGF0IGhlIHBvbGxlZCBpdDogYmVjYXVzZSB0aGUgaGFpciB3YXMgaGVhdnkgb24gaGltLCB0aGVyZWZvcmUgaGUgcG9sbGVkIGl0OikgaGUgd2VpZ2hlZCB0aGUgaGFpciBvZiBoaXMgaGVhZCBhdCB0d28gaHVuZHJlZCBzaGVrZWxzIGFmdGVyIHRoZSBraW5nJ3Mgd2VpZ2h0LgpBbmQgdW50byBBYnNhbG9tIHRoZXJlIHdlcmUgYm9ybiB0aHJlZSBzb25zLCBhbmQgb25lIGRhdWdodGVyLCB3aG9zZSBuYW1lIHdhcyBUYW1hcjogc2hlIHdhcyBhIHdvbWFuIG9mIGEgZmFpciBjb3VudGVuYW5jZS4KU28gQWJzYWxvbSBkd2VsdCB0d28gZnVsbCB5ZWFycyBpbiBKZXJ1c2FsZW0sIGFuZCBzYXcgbm90IHRoZSBraW5nJ3MgZmFjZS4KVGhlcmVmb3JlIEFic2Fsb20gc2VudCBmb3IgSm9hYiwgdG8gaGF2ZSBzZW50IGhpbSB0byB0aGUga2luZzsgYnV0IGhlIHdvdWxkIG5vdCBjb21lIHRvIGhpbTogYW5kIHdoZW4gaGUgc2VudCBhZ2FpbiB0aGUgc2Vjb25kIHRpbWUsIGhlIHdvdWxkIG5vdCBjb21lLgpUaGVyZWZvcmUgaGUgc2FpZCB1bnRvIGhpcyBzZXJ2YW50cywgU2VlLCBKb2FiJ3MgZmllbGQgaXMgbmVhciBtaW5lLCBhbmQgaGUgaGF0aCBiYXJsZXkgdGhlcmU7IGdvIGFuZCBzZXQgaXQgb24gZmlyZS4gQW5kIEFic2Fsb20ncyBzZXJ2YW50cyBzZXQgdGhlIGZpZWxkIG9uIGZpcmUuClRoZW4gSm9hYiBhcm9zZSwgYW5kIGNhbWUgdG8gQWJzYWxvbSB1bnRvIGhpcyBob3VzZSwgYW5kIHNhaWQgdW50byBoaW0sIFdoZXJlZm9yZSBoYXZlIHRoeSBzZXJ2YW50cyBzZXQgbXkgZmllbGQgb24gZmlyZT8KQW5kIEFic2Fsb20gYW5zd2VyZWQgSm9hYiwgQmVob2xkLCBJIHNlbnQgdW50byB0aGVlLCBzYXlpbmcsIENvbWUgaGl0aGVyLCB0aGF0IEkgbWF5IHNlbmQgdGhlZSB0byB0aGUga2luZywgdG8gc2F5LCBXaGVyZWZvcmUgYW0gSSBjb21lIGZyb20gR2VzaHVyPyBpdCBoYWQgYmVlbiBnb29kIGZvciBtZSB0byBoYXZlIGJlZW4gdGhlcmUgc3RpbGw6IG5vdyB0aGVyZWZvcmUgbGV0IG1lIHNlZSB0aGUga2luZydzIGZhY2U7IGFuZCBpZiB0aGVyZSBiZSBhbnkgaW5pcXVpdHkgaW4gbWUsIGxldCBoaW0ga2lsbCBtZS4KU28gSm9hYiBjYW1lIHRvIHRoZSBraW5nLCBhbmQgdG9sZCBoaW06IGFuZCB3aGVuIGhlIGhhZCBjYWxsZWQgZm9yIEFic2Fsb20sIGhlIGNhbWUgdG8gdGhlIGtpbmcsIGFuZCBib3dlZCBoaW1zZWxmIG9uIGhpcyBmYWNlIHRvIHRoZSBncm91bmQgYmVmb3JlIHRoZSBraW5nOiBhbmQgdGhlIGtpbmcga2lzc2VkIEFic2Fsb20uCkFuZCBpdCBjYW1lIHRvIHBhc3MgYWZ0ZXIgdGhpcywgdGhhdCBBYnNhbG9tIHByZXBhcmVkIGhpbSBjaGFyaW90cyBhbmQgaG9yc2VzLCBhbmQgZmlmdHkgbWVuIHRvIHJ1biBiZWZvcmUgaGltLgpBbmQgQWJzYWxvbSByb3NlIHVwIGVhcmx5LCBhbmQgc3Rvb2QgYmVzaWRlIHRoZSB3YXkgb2YgdGhlIGdhdGU6IGFuZCBpdCB3YXMgc28sIHRoYXQgd2hlbiBhbnkgbWFuIHRoYXQgaGFkIGEgY29udHJvdmVyc3kgY2FtZSB0byB0aGUga2luZyBmb3IganVkZ21lbnQsIHRoZW4gQWJzYWxvbSBjYWxsZWQgdW50byBoaW0sIGFuZCBzYWlkLCBPZiB3aGF0IGNpdHkgYXJ0IHRob3U/IEFuZCBoZSBzYWlkLCBUaHkgc2VydmFudCBpcyBvZiBvbmUgb2YgdGhlIHRyaWJlcyBvZiBJc3JhZWwuCkFuZCBBYnNhbG9tIHNhaWQgdW50byBoaW0sIFNlZSwgdGh5IG1hdHRlcnMgYXJlIGdvb2QgYW5kIHJpZ2h0OyBidXQgdGhlcmUgaXMgbm8gbWFuIGRlcHV0ZWQgb2YgdGhlIGtpbmcgdG8gaGVhciB0aGVlLgpBYnNhbG9tIHNhaWQgbW9yZW92ZXIsIE9oIHRoYXQgSSB3ZXJlIG1hZGUganVkZ2UgaW4gdGhlIGxhbmQsIHRoYXQgZXZlcnkgbWFuIHdoaWNoIGhhdGggYW55IHN1aXQgb3IgY2F1c2UgbWlnaHQgY29tZSB1bnRvIG1lLCBhbmQgSSB3b3VsZCBkbyBoaW0ganVzdGljZSEKQW5kIGl0IHdhcyBzbywgdGhhdCB3aGVuIGFueSBtYW4gY2FtZSBuaWdoIHRvIGhpbSB0byBkbyBoaW0gb2JlaXNhbmNlLCBoZSBwdXQgZm9ydGggaGlzIGhhbmQsIGFuZCB0b29rIGhpbSwgYW5kIGtpc3NlZCBoaW0uCkFuZCBvbiB0aGlzIG1hbm5lciBkaWQgQWJzYWxvbSB0byBhbGwgSXNyYWVsIHRoYXQgY2FtZSB0byB0aGUga2luZyBmb3IganVkZ21lbnQ6IHNvIEFic2Fsb20gc3RvbGUgdGhlIGhlYXJ0cyBvZiB0aGUgbWVuIG9mIElzcmFlbC4KQW5kIGl0IGNhbWUgdG8gcGFzcyBhZnRlciBmb3J0eSB5ZWFycywgdGhhdCBBYnNhbG9tIHNhaWQgdW50byB0aGUga2luZywgSSBwcmF5IHRoZWUsIGxldCBtZSBnbyBhbmQgcGF5IG15IHZvdywgd2hpY2ggSSBoYXZlIHZvd2VkIHVudG8gdGhlIExPUkQsIGluIEhlYnJvbi4KRm9yIHRoeSBzZXJ2YW50IHZvd2VkIGEgdm93IHdoaWxlIEkgYWJvZGUgYXQgR2VzaHVyIGluIFN5cmlhLCBzYXlpbmcsIElmIHRoZSBMT1JEIHNoYWxsIGJyaW5nIG1lIGFnYWluIGluZGVlZCB0byBKZXJ1c2FsZW0sIHRoZW4gSSB3aWxsIHNlcnZlIHRoZSBMT1JELgpBbmQgdGhlIGtpbmcgc2FpZCB1bnRvIGhpbSwgR28gaW4gcGVhY2UuIFNvIGhlIGFyb3NlLCBhbmQgd2VudCB0byBIZWJyb24uCkJ1dCBBYnNhbG9tIHNlbnQgc3BpZXMgdGhyb3VnaG91dCBhbGwgdGhlIHRyaWJlcyBvZiBJc3JhZWwsIHNheWluZywgQXMgc29vbiBhcyB5ZSBoZWFyIHRoZSBzb3VuZCBvZiB0aGUgdHJ1bXBldCwgdGhlbiB5ZSBzaGFsbCBzYXksIEFic2Fsb20gcmVpZ25ldGggaW4gSGVicm9uLgpBbmQgd2l0aCBBYnNhbG9tIHdlbnQgdHdvIGh1bmRyZWQgbWVuIG91dCBvZiBKZXJ1c2FsZW0sIHRoYXQgd2VyZSBjYWxsZWQ7IGFuZCB0aGV5IHdlbnQgaW4gdGhlaXIgc2ltcGxpY2l0eSwgYW5kIHRoZXkga25ldyBub3QgYW55IHRoaW5nLgpBbmQgQWJzYWxvbSBzZW50IGZvciBBaGl0aG9waGVsIHRoZSBHaWxvbml0ZSwgRGF2aWQncyBjb3Vuc2VsbG9yLCBmcm9tIGhpcyBjaXR5LCBldmVuIGZyb20gR2lsb2gsIHdoaWxlIGhlIG9mZmVyZWQgc2FjcmlmaWNlcy4gQW5kIHRoZSBjb25zcGlyYWN5IHdhcyBzdHJvbmc7IGZvciB0aGUgcGVvcGxlIGluY3JlYXNlZCBjb250aW51YWxseSB3aXRoIEFic2Fsb20uCkFuZCB0aGVyZSBjYW1lIGEgbWVzc2VuZ2VyIHRvIERhdmlkLCBzYXlpbmcsIFRoZSBoZWFydHMgb2YgdGhlIG1lbiBvZiBJc3JhZWwgYXJlIGFmdGVyIEFic2Fsb20uCkFuZCBEYXZpZCBzYWlkIHVudG8gYWxsIGhpcyBzZXJ2YW50cyB0aGF0IHdlcmUgd2l0aCBoaW0gYXQgSmVydXNhbGVtLCBBcmlzZSwgYW5kIGxldCB1cyBmbGVlOyBmb3Igd2Ugc2hhbGwgbm90IGVsc2UgZXNjYXBlIGZyb20gQWJzYWxvbTogbWFrZSBzcGVlZCB0byBkZXBhcnQsIGxlc3QgaGUgb3ZlcnRha2UgdXMgc3VkZGVubHksIGFuZCBicmluZyBldmlsIHVwb24gdXMsIGFuZCBzbWl0ZSB0aGUgY2l0eSB3aXRoIHRoZSBlZGdlIG9mIHRoZSBzd29yZC4KQW5kIHRoZSBraW5nJ3Mgc2VydmFudHMgc2FpZCB1bnRvIHRoZSBraW5nLCBCZWhvbGQsIHRoeSBzZXJ2YW50cyBhcmUgcmVhZHkgdG8gZG8gd2hhdHNvZXZlciBteSBsb3JkIHRoZSBraW5nIHNoYWxsIGFwcG9pbnQuCkFuZCB0aGUga2luZyB3ZW50IGZvcnRoLCBhbmQgYWxsIGhpcyBob3VzZWhvbGQgYWZ0ZXIgaGltLiBBbmQgdGhlIGtpbmcgbGVmdCB0ZW4gd29tZW4sIHdoaWNoIHdlcmUgY29uY3ViaW5lcywgdG8ga2VlcCB0aGUgaG91c2UuCkFuZCB0aGUga2luZyB3ZW50IGZvcnRoLCBhbmQgYWxsIHRoZSBwZW9wbGUgYWZ0ZXIgaGltLCBhbmQgdGFycmllZCBpbiBhIHBsYWNlIHRoYXQgd2FzIGZhciBvZmYuCkFuZCBhbGwgaGlzIHNlcnZhbnRzIHBhc3NlZCBvbiBiZXNpZGUgaGltOyBhbmQgYWxsIHRoZSBDaGVyZXRoaXRlcywgYW5kIGFsbCB0aGUgUGVsZXRoaXRlcywgYW5kIGFsbCB0aGUgR2l0dGl0ZXMsIHNpeCBodW5kcmVkIG1lbiB3aGljaCBjYW1lIGFmdGVyIGhpbSBmcm9tIEdhdGgsIHBhc3NlZCBvbiBiZWZvcmUgdGhlIGtpbmcuClRoZW4gc2FpZCB0aGUga2luZyB0byBJdHRhaSB0aGUgR2l0dGl0ZSwgV2hlcmVmb3JlIGdvZXN0IHRob3UgYWxzbyB3aXRoIHVzPyByZXR1cm4gdG8gdGh5IHBsYWNlLCBhbmQgYWJpZGUgd2l0aCB0aGUga2luZzogZm9yIHRob3UgYXJ0IGEgc3RyYW5nZXIsIGFuZCBhbHNvIGFuIGV4aWxlLgpXaGVyZWFzIHRob3UgY2FtZXN0IGJ1dCB5ZXN0ZXJkYXksIHNob3VsZCBJIHRoaXMgZGF5IG1ha2UgdGhlZSBnbyB1cCBhbmQgZG93biB3aXRoIHVzPyBzZWVpbmcgSSBnbyB3aGl0aGVyIEkgbWF5LCByZXR1cm4gdGhvdSwgYW5kIHRha2UgYmFjayB0aHkgYnJldGhyZW46IG1lcmN5IGFuZCB0cnV0aCBiZSB3aXRoIHRoZWUuCkFuZCBJdHRhaSBhbnN3ZXJlZCB0aGUga2luZywgYW5kIHNhaWQsIEFzIHRoZSBMT1JEIGxpdmV0aCwgYW5kIGFzIG15IGxvcmQgdGhlIGtpbmcgbGl2ZXRoLCBzdXJlbHkgaW4gd2hhdCBwbGFjZSBteSBsb3JkIHRoZSBraW5nIHNoYWxsIGJlLCB3aGV0aGVyIGluIGRlYXRoIG9yIGxpZmUsIGV2ZW4gdGhlcmUgYWxzbyB3aWxsIHRoeSBzZXJ2YW50IGJlLgpBbmQgRGF2aWQgc2FpZCB0byBJdHRhaSwgR28gYW5kIHBhc3Mgb3Zlci4gQW5kIEl0dGFpIHRoZSBHaXR0aXRlIHBhc3NlZCBvdmVyLCBhbmQgYWxsIGhpcyBtZW4sIGFuZCBhbGwgdGhlIGxpdHRsZSBvbmVzIHRoYXQgd2VyZSB3aXRoIGhpbS4KQW5kIGFsbCB0aGUgY291bnRyeSB3ZXB0IHdpdGggYSBsb3VkIHZvaWNlLCBhbmQgYWxsIHRoZSBwZW9wbGUgcGFzc2VkIG92ZXI6IHRoZSBraW5nIGFsc28gaGltc2VsZiBwYXNzZWQgb3ZlciB0aGUgYnJvb2sgS2lkcm9uLCBhbmQgYWxsIHRoZSBwZW9wbGUgcGFzc2VkIG92ZXIsIHRvd2FyZCB0aGUgd2F5IG9mIHRoZSB3aWxkZXJuZXNzLgpBbmQgbG8gWmFkb2sgYWxzbywgYW5kIGFsbCB0aGUgTGV2aXRlcyB3ZXJlIHdpdGggaGltLCBiZWFyaW5nIHRoZSBhcmsgb2YgdGhlIGNvdmVuYW50IG9mIEdvZDogYW5kIHRoZXkgc2V0IGRvd24gdGhlIGFyayBvZiBHb2Q7IGFuZCBBYmlhdGhhciB3ZW50IHVwLCB1bnRpbCBhbGwgdGhlIHBlb3BsZSBoYWQgZG9uZSBwYXNzaW5nIG91dCBvZiB0aGUgY2l0eS4KQW5kIHRoZSBraW5nIHNhaWQgdW50byBaYWRvaywgQ2FycnkgYmFjayB0aGUgYXJrIG9mIEdvZCBpbnRvIHRoZSBjaXR5OiBpZiBJIHNoYWxsIGZpbmQgZmF2b3VyIGluIHRoZSBleWVzIG9mIHRoZSBMT1JELCBoZSB3aWxsIGJyaW5nIG1lIGFnYWluLCBhbmQgc2hldyBtZSBib3RoIGl0LCBhbmQgaGlzIGhhYml0YXRpb246CkJ1dCBpZiBoZSB0aHVzIHNheSwgSSBoYXZlIG5vIGRlbGlnaHQgaW4gdGhlZTsgYmVob2xkLCBoZXJlIGFtIEksIGxldCBoaW0gZG8gdG8gbWUgYXMgc2VlbWV0aCBnb29kIHVudG8gaGltLgpUaGUga2luZyBzYWlkIGFsc28gdW50byBaYWRvayB0aGUgcHJpZXN0LCBBcnQgbm90IHRob3UgYSBzZWVyPyByZXR1cm4gaW50byB0aGUgY2l0eSBpbiBwZWFjZSwgYW5kIHlvdXIgdHdvIHNvbnMgd2l0aCB5b3UsIEFoaW1hYXogdGh5IHNvbiwgYW5kIEpvbmF0aGFuIHRoZSBzb24gb2YgQWJpYXRoYXIuClNlZSwgSSB3aWxsIHRhcnJ5IGluIHRoZSBwbGFpbiBvZiB0aGUgd2lsZGVybmVzcywgdW50aWwgdGhlcmUgY29tZSB3b3JkIGZyb20geW91IHRvIGNlcnRpZnkgbWUuClphZG9rIHRoZXJlZm9yZSBhbmQgQWJpYXRoYXIgY2FycmllZCB0aGUgYXJrIG9mIEdvZCBhZ2FpbiB0byBKZXJ1c2FsZW06IGFuZCB0aGV5IHRhcnJpZWQgdGhlcmUuCkFuZCBEYXZpZCB3ZW50IHVwIGJ5IHRoZSBhc2NlbnQgb2YgbW91bnQgT2xpdmV0LCBhbmQgd2VwdCBhcyBoZSB3ZW50IHVwLCBhbmQgaGFkIGhpcyBoZWFkIGNvdmVyZWQsIGFuZCBoZSB3ZW50IGJhcmVmb290OiBhbmQgYWxsIHRoZSBwZW9wbGUgdGhhdCB3YXMgd2l0aCBoaW0gY292ZXJlZCBldmVyeSBtYW4gaGlzIGhlYWQsIGFuZCB0aGV5IHdlbnQgdXAsIHdlZXBpbmcgYXMgdGhleSB3ZW50IHVwLgpBbmQgb25lIHRvbGQgRGF2aWQsIHNheWluZywgQWhpdGhvcGhlbCBpcyBhbW9uZyB0aGUgY29uc3BpcmF0b3JzIHdpdGggQWJzYWxvbS4gQW5kIERhdmlkIHNhaWQsIE8gTE9SRCwgSSBwcmF5IHRoZWUsIHR1cm4gdGhlIGNvdW5zZWwgb2YgQWhpdGhvcGhlbCBpbnRvIGZvb2xpc2huZXNzLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB0aGF0IHdoZW4gRGF2aWQgd2FzIGNvbWUgdG8gdGhlIHRvcCBvZiB0aGUgbW91bnQsIHdoZXJlIGhlIHdvcnNoaXBwZWQgR29kLCBiZWhvbGQsIEh1c2hhaSB0aGUgQXJjaGl0ZSBjYW1lIHRvIG1lZXQgaGltIHdpdGggaGlzIGNvYXQgcmVudCwgYW5kIGVhcnRoIHVwb24gaGlzIGhlYWQ6ClVudG8gd2hvbSBEYXZpZCBzYWlkLCBJZiB0aG91IHBhc3Nlc3Qgb24gd2l0aCBtZSwgdGhlbiB0aG91IHNoYWx0IGJlIGEgYnVyZGVuIHVudG8gbWU6CkJ1dCBpZiB0aG91IHJldHVybiB0byB0aGUgY2l0eSwgYW5kIHNheSB1bnRvIEFic2Fsb20sIEkgd2lsbCBiZSB0aHkgc2VydmFudCwgTyBraW5nOyBhcyBJIGhhdmUgYmVlbiB0aHkgZmF0aGVyJ3Mgc2VydmFudCBoaXRoZXJ0bywgc28gd2lsbCBJIG5vdyBhbHNvIGJlIHRoeSBzZXJ2YW50OiB0aGVuIG1heWVzdCB0aG91IGZvciBtZSBkZWZlYXQgdGhlIGNvdW5zZWwgb2YgQWhpdGhvcGhlbC4KQW5kIGhhc3QgdGhvdSBub3QgdGhlcmUgd2l0aCB0aGVlIFphZG9rIGFuZCBBYmlhdGhhciB0aGUgcHJpZXN0cz8gdGhlcmVmb3JlIGl0IHNoYWxsIGJlLCB0aGF0IHdoYXQgdGhpbmcgc29ldmVyIHRob3Ugc2hhbHQgaGVhciBvdXQgb2YgdGhlIGtpbmcncyBob3VzZSwgdGhvdSBzaGFsdCB0ZWxsIGl0IHRvIFphZG9rIGFuZCBBYmlhdGhhciB0aGUgcHJpZXN0cy4KQmVob2xkLCB0aGV5IGhhdmUgdGhlcmUgd2l0aCB0aGVtIHRoZWlyIHR3byBzb25zLCBBaGltYWF6IFphZG9rJ3Mgc29uLCBhbmQgSm9uYXRoYW4gQWJpYXRoYXIncyBzb247IGFuZCBieSB0aGVtIHllIHNoYWxsIHNlbmQgdW50byBtZSBldmVyeSB0aGluZyB0aGF0IHllIGNhbiBoZWFyLgpTbyBIdXNoYWkgRGF2aWQncyBmcmllbmQgY2FtZSBpbnRvIHRoZSBjaXR5LCBhbmQgQWJzYWxvbSBjYW1lIGludG8gSmVydXNhbGVtLgpBbmQgd2hlbiBEYXZpZCB3YXMgYSBsaXR0bGUgcGFzdCB0aGUgdG9wIG9mIHRoZSBoaWxsLCBiZWhvbGQsIFppYmEgdGhlIHNlcnZhbnQgb2YgTWVwaGlib3NoZXRoIG1ldCBoaW0sIHdpdGggYSBjb3VwbGUgb2YgYXNzZXMgc2FkZGxlZCwgYW5kIHVwb24gdGhlbSB0d28gaHVuZHJlZCBsb2F2ZXMgb2YgYnJlYWQsIGFuZCBhbiBodW5kcmVkIGJ1bmNoZXMgb2YgcmFpc2lucywgYW5kIGFuIGh1bmRyZWQgb2Ygc3VtbWVyIGZydWl0cywgYW5kIGEgYm90dGxlIG9mIHdpbmUuCkFuZCB0aGUga2luZyBzYWlkIHVudG8gWmliYSwgV2hhdCBtZWFuZXN0IHRob3UgYnkgdGhlc2U/IEFuZCBaaWJhIHNhaWQsIFRoZSBhc3NlcyBiZSBmb3IgdGhlIGtpbmcncyBob3VzZWhvbGQgdG8gcmlkZSBvbjsgYW5kIHRoZSBicmVhZCBhbmQgc3VtbWVyIGZydWl0IGZvciB0aGUgeW91bmcgbWVuIHRvIGVhdDsgYW5kIHRoZSB3aW5lLCB0aGF0IHN1Y2ggYXMgYmUgZmFpbnQgaW4gdGhlIHdpbGRlcm5lc3MgbWF5IGRyaW5rLgpBbmQgdGhlIGtpbmcgc2FpZCwgQW5kIHdoZXJlIGlzIHRoeSBtYXN0ZXIncyBzb24/IEFuZCBaaWJhIHNhaWQgdW50byB0aGUga2luZywgQmVob2xkLCBoZSBhYmlkZXRoIGF0IEplcnVzYWxlbTogZm9yIGhlIHNhaWQsIFRvIGRheSBzaGFsbCB0aGUgaG91c2Ugb2YgSXNyYWVsIHJlc3RvcmUgbWUgdGhlIGtpbmdkb20gb2YgbXkgZmF0aGVyLgpUaGVuIHNhaWQgdGhlIGtpbmcgdG8gWmliYSwgQmVob2xkLCB0aGluZSBhcmUgYWxsIHRoYXQgcGVydGFpbmVkIHVudG8gTWVwaGlib3NoZXRoLiBBbmQgWmliYSBzYWlkLCBJIGh1bWJseSBiZXNlZWNoIHRoZWUgdGhhdCBJIG1heSBmaW5kIGdyYWNlIGluIHRoeSBzaWdodCwgbXkgbG9yZCwgTyBraW5nLgpBbmQgd2hlbiBraW5nIERhdmlkIGNhbWUgdG8gQmFodXJpbSwgYmVob2xkLCB0aGVuY2UgY2FtZSBvdXQgYSBtYW4gb2YgdGhlIGZhbWlseSBvZiB0aGUgaG91c2Ugb2YgU2F1bCwgd2hvc2UgbmFtZSB3YXMgU2hpbWVpLCB0aGUgc29uIG9mIEdlcmE6IGhlIGNhbWUgZm9ydGgsIGFuZCBjdXJzZWQgc3RpbGwgYXMgaGUgY2FtZS4KQW5kIGhlIGNhc3Qgc3RvbmVzIGF0IERhdmlkLCBhbmQgYXQgYWxsIHRoZSBzZXJ2YW50cyBvZiBraW5nIERhdmlkOiBhbmQgYWxsIHRoZSBwZW9wbGUgYW5kIGFsbCB0aGUgbWlnaHR5IG1lbiB3ZXJlIG9uIGhpcyByaWdodCBoYW5kIGFuZCBvbiBoaXMgbGVmdC4KQW5kIHRodXMgc2FpZCBTaGltZWkgd2hlbiBoZSBjdXJzZWQsIENvbWUgb3V0LCBjb21lIG91dCwgdGhvdSBibG9vZHkgbWFuLCBhbmQgdGhvdSBtYW4gb2YgQmVsaWFsOgpUaGUgTE9SRCBoYXRoIHJldHVybmVkIHVwb24gdGhlZSBhbGwgdGhlIGJsb29kIG9mIHRoZSBob3VzZSBvZiBTYXVsLCBpbiB3aG9zZSBzdGVhZCB0aG91IGhhc3QgcmVpZ25lZDsgYW5kIHRoZSBMT1JEIGhhdGggZGVsaXZlcmVkIHRoZSBraW5nZG9tIGludG8gdGhlIGhhbmQgb2YgQWJzYWxvbSB0aHkgc29uOiBhbmQsIGJlaG9sZCwgdGhvdSBhcnQgdGFrZW4gaW4gdGh5IG1pc2NoaWVmLCBiZWNhdXNlIHRob3UgYXJ0IGEgYmxvb2R5IG1hbi4KVGhlbiBzYWlkIEFiaXNoYWkgdGhlIHNvbiBvZiBaZXJ1aWFoIHVudG8gdGhlIGtpbmcsIFdoeSBzaG91bGQgdGhpcyBkZWFkIGRvZyBjdXJzZSBteSBsb3JkIHRoZSBraW5nPyBsZXQgbWUgZ28gb3ZlciwgSSBwcmF5IHRoZWUsIGFuZCB0YWtlIG9mZiBoaXMgaGVhZC4KQW5kIHRoZSBraW5nIHNhaWQsIFdoYXQgaGF2ZSBJIHRvIGRvIHdpdGggeW91LCB5ZSBzb25zIG9mIFplcnVpYWg/IHNvIGxldCBoaW0gY3Vyc2UsIGJlY2F1c2UgdGhlIExPUkQgaGF0aCBzYWlkIHVudG8gaGltLCBDdXJzZSBEYXZpZC4gV2hvIHNoYWxsIHRoZW4gc2F5LCBXaGVyZWZvcmUgaGFzdCB0aG91IGRvbmUgc28/CkFuZCBEYXZpZCBzYWlkIHRvIEFiaXNoYWksIGFuZCB0byBhbGwgaGlzIHNlcnZhbnRzLCBCZWhvbGQsIG15IHNvbiwgd2hpY2ggY2FtZSBmb3J0aCBvZiBteSBib3dlbHMsIHNlZWtldGggbXkgbGlmZTogaG93IG11Y2ggbW9yZSBub3cgbWF5IHRoaXMgQmVuamFtaXRlIGRvIGl0PyBsZXQgaGltIGFsb25lLCBhbmQgbGV0IGhpbSBjdXJzZTsgZm9yIHRoZSBMT1JEIGhhdGggYmlkZGVuIGhpbS4KSXQgbWF5IGJlIHRoYXQgdGhlIExPUkQgd2lsbCBsb29rIG9uIG1pbmUgYWZmbGljdGlvbiwgYW5kIHRoYXQgdGhlIExPUkQgd2lsbCByZXF1aXRlIG1lIGdvb2QgZm9yIGhpcyBjdXJzaW5nIHRoaXMgZGF5LgpBbmQgYXMgRGF2aWQgYW5kIGhpcyBtZW4gd2VudCBieSB0aGUgd2F5LCBTaGltZWkgd2VudCBhbG9uZyBvbiB0aGUgaGlsbCdzIHNpZGUgb3ZlciBhZ2FpbnN0IGhpbSwgYW5kIGN1cnNlZCBhcyBoZSB3ZW50LCBhbmQgdGhyZXcgc3RvbmVzIGF0IGhpbSwgYW5kIGNhc3QgZHVzdC4KQW5kIHRoZSBraW5nLCBhbmQgYWxsIHRoZSBwZW9wbGUgdGhhdCB3ZXJlIHdpdGggaGltLCBjYW1lIHdlYXJ5LCBhbmQgcmVmcmVzaGVkIHRoZW1zZWx2ZXMgdGhlcmUuCkFuZCBBYnNhbG9tLCBhbmQgYWxsIHRoZSBwZW9wbGUgdGhlIG1lbiBvZiBJc3JhZWwsIGNhbWUgdG8gSmVydXNhbGVtLCBhbmQgQWhpdGhvcGhlbCB3aXRoIGhpbS4KQW5kIGl0IGNhbWUgdG8gcGFzcywgd2hlbiBIdXNoYWkgdGhlIEFyY2hpdGUsIERhdmlkJ3MgZnJpZW5kLCB3YXMgY29tZSB1bnRvIEFic2Fsb20sIHRoYXQgSHVzaGFpIHNhaWQgdW50byBBYnNhbG9tLCBHb2Qgc2F2ZSB0aGUga2luZywgR29kIHNhdmUgdGhlIGtpbmcuCkFuZCBBYnNhbG9tIHNhaWQgdG8gSHVzaGFpLCBJcyB0aGlzIHRoeSBraW5kbmVzcyB0byB0aHkgZnJpZW5kPyB3aHkgd2VudGVzdCB0aG91IG5vdCB3aXRoIHRoeSBmcmllbmQ/CkFuZCBIdXNoYWkgc2FpZCB1bnRvIEFic2Fsb20sIE5heTsgYnV0IHdob20gdGhlIExPUkQsIGFuZCB0aGlzIHBlb3BsZSwgYW5kIGFsbCB0aGUgbWVuIG9mIElzcmFlbCwgY2hvb3NlLCBoaXMgd2lsbCBJIGJlLCBhbmQgd2l0aCBoaW0gd2lsbCBJIGFiaWRlLgpBbmQgYWdhaW4sIHdob20gc2hvdWxkIEkgc2VydmU/IHNob3VsZCBJIG5vdCBzZXJ2ZSBpbiB0aGUgcHJlc2VuY2Ugb2YgaGlzIHNvbj8gYXMgSSBoYXZlIHNlcnZlZCBpbiB0aHkgZmF0aGVyJ3MgcHJlc2VuY2UsIHNvIHdpbGwgSSBiZSBpbiB0aHkgcHJlc2VuY2UuClRoZW4gc2FpZCBBYnNhbG9tIHRvIEFoaXRob3BoZWwsIEdpdmUgY291bnNlbCBhbW9uZyB5b3Ugd2hhdCB3ZSBzaGFsbCBkby4KQW5kIEFoaXRob3BoZWwgc2FpZCB1bnRvIEFic2Fsb20sIEdvIGluIHVudG8gdGh5IGZhdGhlcidzIGNvbmN1YmluZXMsIHdoaWNoIGhlIGhhdGggbGVmdCB0byBrZWVwIHRoZSBob3VzZTsgYW5kIGFsbCBJc3JhZWwgc2hhbGwgaGVhciB0aGF0IHRob3UgYXJ0IGFiaG9ycmVkIG9mIHRoeSBmYXRoZXI6IHRoZW4gc2hhbGwgdGhlIGhhbmRzIG9mIGFsbCB0aGF0IGFyZSB3aXRoIHRoZWUgYmUgc3Ryb25nLgpTbyB0aGV5IHNwcmVhZCBBYnNhbG9tIGEgdGVudCB1cG9uIHRoZSB0b3Agb2YgdGhlIGhvdXNlOyBhbmQgQWJzYWxvbSB3ZW50IGluIHVudG8gaGlzIGZhdGhlcidzIGNvbmN1YmluZXMgaW4gdGhlIHNpZ2h0IG9mIGFsbCBJc3JhZWwuCkFuZCB0aGUgY291bnNlbCBvZiBBaGl0aG9waGVsLCB3aGljaCBoZSBjb3Vuc2VsbGVkIGluIHRob3NlIGRheXMsIHdhcyBhcyBpZiBhIG1hbiBoYWQgZW5xdWlyZWQgYXQgdGhlIG9yYWNsZSBvZiBHb2Q6IHNvIHdhcyBhbGwgdGhlIGNvdW5zZWwgb2YgQWhpdGhvcGhlbCBib3RoIHdpdGggRGF2aWQgYW5kIHdpdGggQWJzYWxvbS4KTW9yZW92ZXIgQWhpdGhvcGhlbCBzYWlkIHVudG8gQWJzYWxvbSwgTGV0IG1lIG5vdyBjaG9vc2Ugb3V0IHR3ZWx2ZSB0aG91c2FuZCBtZW4sIGFuZCBJIHdpbGwgYXJpc2UgYW5kIHB1cnN1ZSBhZnRlciBEYXZpZCB0aGlzIG5pZ2h0OgpBbmQgSSB3aWxsIGNvbWUgdXBvbiBoaW0gd2hpbGUgaGUgaXMgd2VhcnkgYW5kIHdlYWsgaGFuZGVkLCBhbmQgd2lsbCBtYWtlIGhpbSBhZnJhaWQ6IGFuZCBhbGwgdGhlIHBlb3BsZSB0aGF0IGFyZSB3aXRoIGhpbSBzaGFsbCBmbGVlOyBhbmQgSSB3aWxsIHNtaXRlIHRoZSBraW5nIG9ubHk6CkFuZCBJIHdpbGwgYnJpbmcgYmFjayBhbGwgdGhlIHBlb3BsZSB1bnRvIHRoZWU6IHRoZSBtYW4gd2hvbSB0aG91IHNlZWtlc3QgaXMgYXMgaWYgYWxsIHJldHVybmVkOiBzbyBhbGwgdGhlIHBlb3BsZSBzaGFsbCBiZSBpbiBwZWFjZS4KQW5kIHRoZSBzYXlpbmcgcGxlYXNlZCBBYnNhbG9tIHdlbGwsIGFuZCBhbGwgdGhlIGVsZGVycyBvZiBJc3JhZWwuClRoZW4gc2FpZCBBYnNhbG9tLCBDYWxsIG5vdyBIdXNoYWkgdGhlIEFyY2hpdGUgYWxzbywgYW5kIGxldCB1cyBoZWFyIGxpa2V3aXNlIHdoYXQgaGUgc2FpdGguCkFuZCB3aGVuIEh1c2hhaSB3YXMgY29tZSB0byBBYnNhbG9tLCBBYnNhbG9tIHNwYWtlIHVudG8gaGltLCBzYXlpbmcsIEFoaXRob3BoZWwgaGF0aCBzcG9rZW4gYWZ0ZXIgdGhpcyBtYW5uZXI6IHNoYWxsIHdlIGRvIGFmdGVyIGhpcyBzYXlpbmc/IGlmIG5vdDsgc3BlYWsgdGhvdS4KQW5kIEh1c2hhaSBzYWlkIHVudG8gQWJzYWxvbSwgVGhlIGNvdW5zZWwgdGhhdCBBaGl0aG9waGVsIGhhdGggZ2l2ZW4gaXMgbm90IGdvb2QgYXQgdGhpcyB0aW1lLgpGb3IsIHNhaWQgSHVzaGFpLCB0aG91IGtub3dlc3QgdGh5IGZhdGhlciBhbmQgaGlzIG1lbiwgdGhhdCB0aGV5IGJlIG1pZ2h0eSBtZW4sIGFuZCB0aGV5IGJlIGNoYWZlZCBpbiB0aGVpciBtaW5kcywgYXMgYSBiZWFyIHJvYmJlZCBvZiBoZXIgd2hlbHBzIGluIHRoZSBmaWVsZDogYW5kIHRoeSBmYXRoZXIgaXMgYSBtYW4gb2Ygd2FyLCBhbmQgd2lsbCBub3QgbG9kZ2Ugd2l0aCB0aGUgcGVvcGxlLgpCZWhvbGQsIGhlIGlzIGhpZCBub3cgaW4gc29tZSBwaXQsIG9yIGluIHNvbWUgb3RoZXIgcGxhY2U6IGFuZCBpdCB3aWxsIGNvbWUgdG8gcGFzcywgd2hlbiBzb21lIG9mIHRoZW0gYmUgb3ZlcnRocm93biBhdCB0aGUgZmlyc3QsIHRoYXQgd2hvc29ldmVyIGhlYXJldGggaXQgd2lsbCBzYXksIFRoZXJlIGlzIGEgc2xhdWdodGVyIGFtb25nIHRoZSBwZW9wbGUgdGhhdCBmb2xsb3cgQWJzYWxvbS4KQW5kIGhlIGFsc28gdGhhdCBpcyB2YWxpYW50LCB3aG9zZSBoZWFydCBpcyBhcyB0aGUgaGVhcnQgb2YgYSBsaW9uLCBzaGFsbCB1dHRlcmx5IG1lbHQ6IGZvciBhbGwgSXNyYWVsIGtub3dldGggdGhhdCB0aHkgZmF0aGVyIGlzIGEgbWlnaHR5IG1hbiwgYW5kIHRoZXkgd2hpY2ggYmUgd2l0aCBoaW0gYXJlIHZhbGlhbnQgbWVuLgpUaGVyZWZvcmUgSSBjb3Vuc2VsIHRoYXQgYWxsIElzcmFlbCBiZSBnZW5lcmFsbHkgZ2F0aGVyZWQgdW50byB0aGVlLCBmcm9tIERhbiBldmVuIHRvIEJlZXJzaGViYSwgYXMgdGhlIHNhbmQgdGhhdCBpcyBieSB0aGUgc2VhIGZvciBtdWx0aXR1ZGU7IGFuZCB0aGF0IHRob3UgZ28gdG8gYmF0dGxlIGluIHRoaW5lIG93biBwZXJzb24uClNvIHNoYWxsIHdlIGNvbWUgdXBvbiBoaW0gaW4gc29tZSBwbGFjZSB3aGVyZSBoZSBzaGFsbCBiZSBmb3VuZCwgYW5kIHdlIHdpbGwgbGlnaHQgdXBvbiBoaW0gYXMgdGhlIGRldyBmYWxsZXRoIG9uIHRoZSBncm91bmQ6IGFuZCBvZiBoaW0gYW5kIG9mIGFsbCB0aGUgbWVuIHRoYXQgYXJlIHdpdGggaGltIHRoZXJlIHNoYWxsIG5vdCBiZSBsZWZ0IHNvIG11Y2ggYXMgb25lLgpNb3Jlb3ZlciwgaWYgaGUgYmUgZ290dGVuIGludG8gYSBjaXR5LCB0aGVuIHNoYWxsIGFsbCBJc3JhZWwgYnJpbmcgcm9wZXMgdG8gdGhhdCBjaXR5LCBhbmQgd2Ugd2lsbCBkcmF3IGl0IGludG8gdGhlIHJpdmVyLCB1bnRpbCB0aGVyZSBiZSBub3Qgb25lIHNtYWxsIHN0b25lIGZvdW5kIHRoZXJlLgpBbmQgQWJzYWxvbSBhbmQgYWxsIHRoZSBtZW4gb2YgSXNyYWVsIHNhaWQsIFRoZSBjb3Vuc2VsIG9mIEh1c2hhaSB0aGUgQXJjaGl0ZSBpcyBiZXR0ZXIgdGhhbiB0aGUgY291bnNlbCBvZiBBaGl0aG9waGVsLiBGb3IgdGhlIExPUkQgaGFkIGFwcG9pbnRlZCB0byBkZWZlYXQgdGhlIGdvb2QgY291bnNlbCBvZiBBaGl0aG9waGVsLCB0byB0aGUgaW50ZW50IHRoYXQgdGhlIExPUkQgbWlnaHQgYnJpbmcgZXZpbCB1cG9uIEFic2Fsb20uClRoZW4gc2FpZCBIdXNoYWkgdW50byBaYWRvayBhbmQgdG8gQWJpYXRoYXIgdGhlIHByaWVzdHMsIFRodXMgYW5kIHRodXMgZGlkIEFoaXRob3BoZWwgY291bnNlbCBBYnNhbG9tIGFuZCB0aGUgZWxkZXJzIG9mIElzcmFlbDsgYW5kIHRodXMgYW5kIHRodXMgaGF2ZSBJIGNvdW5zZWxsZWQuCk5vdyB0aGVyZWZvcmUgc2VuZCBxdWlja2x5LCBhbmQgdGVsbCBEYXZpZCwgc2F5aW5nLCBMb2RnZSBub3QgdGhpcyBuaWdodCBpbiB0aGUgcGxhaW5zIG9mIHRoZSB3aWxkZXJuZXNzLCBidXQgc3BlZWRpbHkgcGFzcyBvdmVyOyBsZXN0IHRoZSBraW5nIGJlIHN3YWxsb3dlZCB1cCwgYW5kIGFsbCB0aGUgcGVvcGxlIHRoYXQgYXJlIHdpdGggaGltLgpOb3cgSm9uYXRoYW4gYW5kIEFoaW1hYXogc3RheWVkIGJ5IEVucm9nZWw7IGZvciB0aGV5IG1pZ2h0IG5vdCBiZSBzZWVuIHRvIGNvbWUgaW50byB0aGUgY2l0eTogYW5kIGEgd2VuY2ggd2VudCBhbmQgdG9sZCB0aGVtOyBhbmQgdGhleSB3ZW50IGFuZCB0b2xkIGtpbmcgRGF2aWQuCk5ldmVydGhlbGVzcyBhIGxhZCBzYXcgdGhlbSwgYW5kIHRvbGQgQWJzYWxvbTogYnV0IHRoZXkgd2VudCBib3RoIG9mIHRoZW0gYXdheSBxdWlja2x5LCBhbmQgY2FtZSB0byBhIG1hbidzIGhvdXNlIGluIEJhaHVyaW0sIHdoaWNoIGhhZCBhIHdlbGwgaW4gaGlzIGNvdXJ0OyB3aGl0aGVyIHRoZXkgd2VudCBkb3duLgpBbmQgdGhlIHdvbWFuIHRvb2sgYW5kIHNwcmVhZCBhIGNvdmVyaW5nIG92ZXIgdGhlIHdlbGwncyBtb3V0aCwgYW5kIHNwcmVhZCBncm91bmQgY29ybiB0aGVyZW9uOyBhbmQgdGhlIHRoaW5nIHdhcyBub3Qga25vd24uCkFuZCB3aGVuIEFic2Fsb20ncyBzZXJ2YW50cyBjYW1lIHRvIHRoZSB3b21hbiB0byB0aGUgaG91c2UsIHRoZXkgc2FpZCwgV2hlcmUgaXMgQWhpbWFheiBhbmQgSm9uYXRoYW4/IEFuZCB0aGUgd29tYW4gc2FpZCB1bnRvIHRoZW0sIFRoZXkgYmUgZ29uZSBvdmVyIHRoZSBicm9vayBvZiB3YXRlci4gQW5kIHdoZW4gdGhleSBoYWQgc291Z2h0IGFuZCBjb3VsZCBub3QgZmluZCB0aGVtLCB0aGV5IHJldHVybmVkIHRvIEplcnVzYWxlbS4KQW5kIGl0IGNhbWUgdG8gcGFzcywgYWZ0ZXIgdGhleSB3ZXJlIGRlcGFydGVkLCB0aGF0IHRoZXkgY2FtZSB1cCBvdXQgb2YgdGhlIHdlbGwsIGFuZCB3ZW50IGFuZCB0b2xkIGtpbmcgRGF2aWQsIGFuZCBzYWlkIHVudG8gRGF2aWQsIEFyaXNlLCBhbmQgcGFzcyBxdWlja2x5IG92ZXIgdGhlIHdhdGVyOiBmb3IgdGh1cyBoYXRoIEFoaXRob3BoZWwgY291bnNlbGxlZCBhZ2FpbnN0IHlvdS4KVGhlbiBEYXZpZCBhcm9zZSwgYW5kIGFsbCB0aGUgcGVvcGxlIHRoYXQgd2VyZSB3aXRoIGhpbSwgYW5kIHRoZXkgcGFzc2VkIG92ZXIgSm9yZGFuOiBieSB0aGUgbW9ybmluZyBsaWdodCB0aGVyZSBsYWNrZWQgbm90IG9uZSBvZiB0aGVtIHRoYXQgd2FzIG5vdCBnb25lIG92ZXIgSm9yZGFuLgpBbmQgd2hlbiBBaGl0aG9waGVsIHNhdyB0aGF0IGhpcyBjb3Vuc2VsIHdhcyBub3QgZm9sbG93ZWQsIGhlIHNhZGRsZWQgaGlzIGFzcywgYW5kIGFyb3NlLCBhbmQgZ2F0IGhpbSBob21lIHRvIGhpcyBob3VzZSwgdG8gaGlzIGNpdHksIGFuZCBwdXQgaGlzIGhvdXNlaG9sZCBpbiBvcmRlciwgYW5kIGhhbmdlZCBoaW1zZWxmLCBhbmQgZGllZCwgYW5kIHdhcyBidXJpZWQgaW4gdGhlIHNlcHVsY2hyZSBvZiBoaXMgZmF0aGVyLgpUaGVuIERhdmlkIGNhbWUgdG8gTWFoYW5haW0uIEFuZCBBYnNhbG9tIHBhc3NlZCBvdmVyIEpvcmRhbiwgaGUgYW5kIGFsbCB0aGUgbWVuIG9mIElzcmFlbCB3aXRoIGhpbS4KQW5kIEFic2Fsb20gbWFkZSBBbWFzYSBjYXB0YWluIG9mIHRoZSBob3N0IGluc3RlYWQgb2YgSm9hYjogd2hpY2ggQW1hc2Egd2FzIGEgbWFuJ3Mgc29uLCB3aG9zZSBuYW1lIHdhcyBJdGhyYSBhbiBJc3JhZWxpdGUsIHRoYXQgd2VudCBpbiB0byBBYmlnYWlsIHRoZSBkYXVnaHRlciBvZiBOYWhhc2gsIHNpc3RlciB0byBaZXJ1aWFoIEpvYWIncyBtb3RoZXIuClNvIElzcmFlbCBhbmQgQWJzYWxvbSBwaXRjaGVkIGluIHRoZSBsYW5kIG9mIEdpbGVhZC4KQW5kIGl0IGNhbWUgdG8gcGFzcywgd2hlbiBEYXZpZCB3YXMgY29tZSB0byBNYWhhbmFpbSwgdGhhdCBTaG9iaSB0aGUgc29uIG9mIE5haGFzaCBvZiBSYWJiYWggb2YgdGhlIGNoaWxkcmVuIG9mIEFtbW9uLCBhbmQgTWFjaGlyIHRoZSBzb24gb2YgQW1taWVsIG9mIExvZGViYXIsIGFuZCBCYXJ6aWxsYWkgdGhlIEdpbGVhZGl0ZSBvZiBSb2dlbGltLApCcm91Z2h0IGJlZHMsIGFuZCBiYXNvbnMsIGFuZCBlYXJ0aGVuIHZlc3NlbHMsIGFuZCB3aGVhdCwgYW5kIGJhcmxleSwgYW5kIGZsb3VyLCBhbmQgcGFyY2hlZCBjb3JuLCBhbmQgYmVhbnMsIGFuZCBsZW50aWxlcywgYW5kIHBhcmNoZWQgcHVsc2UsCkFuZCBob25leSwgYW5kIGJ1dHRlciwgYW5kIHNoZWVwLCBhbmQgY2hlZXNlIG9mIGtpbmUsIGZvciBEYXZpZCwgYW5kIGZvciB0aGUgcGVvcGxlIHRoYXQgd2VyZSB3aXRoIGhpbSwgdG8gZWF0OiBmb3IgdGhleSBzYWlkLCBUaGUgcGVvcGxlIGlzIGh1bmdyeSwgYW5kIHdlYXJ5LCBhbmQgdGhpcnN0eSwgaW4gdGhlIHdpbGRlcm5lc3MuCkFuZCBEYXZpZCBudW1iZXJlZCB0aGUgcGVvcGxlIHRoYXQgd2VyZSB3aXRoIGhpbSwgYW5kIHNldCBjYXB0YWlucyBvZiB0aG91c2FuZHMsIGFuZCBjYXB0YWlucyBvZiBodW5kcmVkcyBvdmVyIHRoZW0uCkFuZCBEYXZpZCBzZW50IGZvcnRoIGEgdGhpcmQgcGFydCBvZiB0aGUgcGVvcGxlIHVuZGVyIHRoZSBoYW5kIG9mIEpvYWIsIGFuZCBhIHRoaXJkIHBhcnQgdW5kZXIgdGhlIGhhbmQgb2YgQWJpc2hhaSB0aGUgc29uIG9mIFplcnVpYWgsIEpvYWIncyBicm90aGVyLCBhbmQgYSB0aGlyZCBwYXJ0IHVuZGVyIHRoZSBoYW5kIG9mIEl0dGFpIHRoZSBHaXR0aXRlLiBBbmQgdGhlIGtpbmcgc2FpZCB1bnRvIHRoZSBwZW9wbGUsIEkgd2lsbCBzdXJlbHkgZ28gZm9ydGggd2l0aCB5b3UgbXlzZWxmIGFsc28uCkJ1dCB0aGUgcGVvcGxlIGFuc3dlcmVkLCBUaG91IHNoYWx0IG5vdCBnbyBmb3J0aDogZm9yIGlmIHdlIGZsZWUgYXdheSwgdGhleSB3aWxsIG5vdCBjYXJlIGZvciB1czsgbmVpdGhlciBpZiBoYWxmIG9mIHVzIGRpZSwgd2lsbCB0aGV5IGNhcmUgZm9yIHVzOiBidXQgbm93IHRob3UgYXJ0IHdvcnRoIHRlbiB0aG91c2FuZCBvZiB1czogdGhlcmVmb3JlIG5vdyBpdCBpcyBiZXR0ZXIgdGhhdCB0aG91IHN1Y2NvdXIgdXMgb3V0IG9mIHRoZSBjaXR5LgpBbmQgdGhlIGtpbmcgc2FpZCB1bnRvIHRoZW0sIFdoYXQgc2VlbWV0aCB5b3UgYmVzdCBJIHdpbGwgZG8uIEFuZCB0aGUga2luZyBzdG9vZCBieSB0aGUgZ2F0ZSBzaWRlLCBhbmQgYWxsIHRoZSBwZW9wbGUgY2FtZSBvdXQgYnkgaHVuZHJlZHMgYW5kIGJ5IHRob3VzYW5kcy4KQW5kIHRoZSBraW5nIGNvbW1hbmRlZCBKb2FiIGFuZCBBYmlzaGFpIGFuZCBJdHRhaSwgc2F5aW5nLCBEZWFsIGdlbnRseSBmb3IgbXkgc2FrZSB3aXRoIHRoZSB5b3VuZyBtYW4sIGV2ZW4gd2l0aCBBYnNhbG9tLiBBbmQgYWxsIHRoZSBwZW9wbGUgaGVhcmQgd2hlbiB0aGUga2luZyBnYXZlIGFsbCB0aGUgY2FwdGFpbnMgY2hhcmdlIGNvbmNlcm5pbmcgQWJzYWxvbS4KU28gdGhlIHBlb3BsZSB3ZW50IG91dCBpbnRvIHRoZSBmaWVsZCBhZ2FpbnN0IElzcmFlbDogYW5kIHRoZSBiYXR0bGUgd2FzIGluIHRoZSB3b29kIG9mIEVwaHJhaW07CldoZXJlIHRoZSBwZW9wbGUgb2YgSXNyYWVsIHdlcmUgc2xhaW4gYmVmb3JlIHRoZSBzZXJ2YW50cyBvZiBEYXZpZCwgYW5kIHRoZXJlIHdhcyB0aGVyZSBhIGdyZWF0IHNsYXVnaHRlciB0aGF0IGRheSBvZiB0d2VudHkgdGhvdXNhbmQgbWVuLgpGb3IgdGhlIGJhdHRsZSB3YXMgdGhlcmUgc2NhdHRlcmVkIG92ZXIgdGhlIGZhY2Ugb2YgYWxsIHRoZSBjb3VudHJ5OiBhbmQgdGhlIHdvb2QgZGV2b3VyZWQgbW9yZSBwZW9wbGUgdGhhdCBkYXkgdGhhbiB0aGUgc3dvcmQgZGV2b3VyZWQuCkFuZCBBYnNhbG9tIG1ldCB0aGUgc2VydmFudHMgb2YgRGF2aWQuIEFuZCBBYnNhbG9tIHJvZGUgdXBvbiBhIG11bGUsIGFuZCB0aGUgbXVsZSB3ZW50IHVuZGVyIHRoZSB0aGljayBib3VnaHMgb2YgYSBncmVhdCBvYWssIGFuZCBoaXMgaGVhZCBjYXVnaHQgaG9sZCBvZiB0aGUgb2FrLCBhbmQgaGUgd2FzIHRha2VuIHVwIGJldHdlZW4gdGhlIGhlYXZlbiBhbmQgdGhlIGVhcnRoOyBhbmQgdGhlIG11bGUgdGhhdCB3YXMgdW5kZXIgaGltIHdlbnQgYXdheS4KQW5kIGEgY2VydGFpbiBtYW4gc2F3IGl0LCBhbmQgdG9sZCBKb2FiLCBhbmQgc2FpZCwgQmVob2xkLCBJIHNhdyBBYnNhbG9tIGhhbmdlZCBpbiBhbiBvYWsuCkFuZCBKb2FiIHNhaWQgdW50byB0aGUgbWFuIHRoYXQgdG9sZCBoaW0sIEFuZCwgYmVob2xkLCB0aG91IHNhd2VzdCBoaW0sIGFuZCB3aHkgZGlkc3QgdGhvdSBub3Qgc21pdGUgaGltIHRoZXJlIHRvIHRoZSBncm91bmQ/IGFuZCBJIHdvdWxkIGhhdmUgZ2l2ZW4gdGhlZSB0ZW4gc2hla2VscyBvZiBzaWx2ZXIsIGFuZCBhIGdpcmRsZS4KQW5kIHRoZSBtYW4gc2FpZCB1bnRvIEpvYWIsIFRob3VnaCBJIHNob3VsZCByZWNlaXZlIGEgdGhvdXNhbmQgc2hla2VscyBvZiBzaWx2ZXIgaW4gbWluZSBoYW5kLCB5ZXQgd291bGQgSSBub3QgcHV0IGZvcnRoIG1pbmUgaGFuZCBhZ2FpbnN0IHRoZSBraW5nJ3Mgc29uOiBmb3IgaW4gb3VyIGhlYXJpbmcgdGhlIGtpbmcgY2hhcmdlZCB0aGVlIGFuZCBBYmlzaGFpIGFuZCBJdHRhaSwgc2F5aW5nLCBCZXdhcmUgdGhhdCBub25lIHRvdWNoIHRoZSB5b3VuZyBtYW4gQWJzYWxvbS4KT3RoZXJ3aXNlIEkgc2hvdWxkIGhhdmUgd3JvdWdodCBmYWxzZWhvb2QgYWdhaW5zdCBtaW5lIG93biBsaWZlOiBmb3IgdGhlcmUgaXMgbm8gbWF0dGVyIGhpZCBmcm9tIHRoZSBraW5nLCBhbmQgdGhvdSB0aHlzZWxmIHdvdWxkZXN0IGhhdmUgc2V0IHRoeXNlbGYgYWdhaW5zdCBtZS4KVGhlbiBzYWlkIEpvYWIsIEkgbWF5IG5vdCB0YXJyeSB0aHVzIHdpdGggdGhlZS4gQW5kIGhlIHRvb2sgdGhyZWUgZGFydHMgaW4gaGlzIGhhbmQsIGFuZCB0aHJ1c3QgdGhlbSB0aHJvdWdoIHRoZSBoZWFydCBvZiBBYnNhbG9tLCB3aGlsZSBoZSB3YXMgeWV0IGFsaXZlIGluIHRoZSBtaWRzdCBvZiB0aGUgb2FrLgpBbmQgdGVuIHlvdW5nIG1lbiB0aGF0IGJhcmUgSm9hYidzIGFybW91ciBjb21wYXNzZWQgYWJvdXQgYW5kIHNtb3RlIEFic2Fsb20sIGFuZCBzbGV3IGhpbS4KQW5kIEpvYWIgYmxldyB0aGUgdHJ1bXBldCwgYW5kIHRoZSBwZW9wbGUgcmV0dXJuZWQgZnJvbSBwdXJzdWluZyBhZnRlciBJc3JhZWw6IGZvciBKb2FiIGhlbGQgYmFjayB0aGUgcGVvcGxlLgpBbmQgdGhleSB0b29rIEFic2Fsb20sIGFuZCBjYXN0IGhpbSBpbnRvIGEgZ3JlYXQgcGl0IGluIHRoZSB3b29kLCBhbmQgbGFpZCBhIHZlcnkgZ3JlYXQgaGVhcCBvZiBzdG9uZXMgdXBvbiBoaW06IGFuZCBhbGwgSXNyYWVsIGZsZWQgZXZlcnkgb25lIHRvIGhpcyB0ZW50LgpOb3cgQWJzYWxvbSBpbiBoaXMgbGlmZXRpbWUgaGFkIHRha2VuIGFuZCByZWFyZWQgdXAgZm9yIGhpbXNlbGYgYSBwaWxsYXIsIHdoaWNoIGlzIGluIHRoZSBraW5nJ3MgZGFsZTogZm9yIGhlIHNhaWQsIEkgaGF2ZSBubyBzb24gdG8ga2VlcCBteSBuYW1lIGluIHJlbWVtYnJhbmNlOiBhbmQgaGUgY2FsbGVkIHRoZSBwaWxsYXIgYWZ0ZXIgaGlzIG93biBuYW1lOiBhbmQgaXQgaXMgY2FsbGVkIHVudG8gdGhpcyBkYXksIEFic2Fsb20ncyBwbGFjZS4KVGhlbiBzYWlkIEFoaW1hYXogdGhlIHNvbiBvZiBaYWRvaywgTGV0IG1lIG5vdyBydW4sIGFuZCBiZWFyIHRoZSBraW5nIHRpZGluZ3MsIGhvdyB0aGF0IHRoZSBMT1JEIGhhdGggYXZlbmdlZCBoaW0gb2YgaGlzIGVuZW1pZXMuCkFuZCBKb2FiIHNhaWQgdW50byBoaW0sIFRob3Ugc2hhbHQgbm90IGJlYXIgdGlkaW5ncyB0aGlzIGRheSwgYnV0IHRob3Ugc2hhbHQgYmVhciB0aWRpbmdzIGFub3RoZXIgZGF5OiBidXQgdGhpcyBkYXkgdGhvdSBzaGFsdCBiZWFyIG5vIHRpZGluZ3MsIGJlY2F1c2UgdGhlIGtpbmcncyBzb24gaXMgZGVhZC4KVGhlbiBzYWlkIEpvYWIgdG8gQ3VzaGksIEdvIHRlbGwgdGhlIGtpbmcgd2hhdCB0aG91IGhhc3Qgc2Vlbi4gQW5kIEN1c2hpIGJvd2VkIGhpbXNlbGYgdW50byBKb2FiLCBhbmQgcmFuLgpUaGVuIHNhaWQgQWhpbWFheiB0aGUgc29uIG9mIFphZG9rIHlldCBhZ2FpbiB0byBKb2FiLCBCdXQgaG93c29ldmVyLCBsZXQgbWUsIEkgcHJheSB0aGVlLCBhbHNvIHJ1biBhZnRlciBDdXNoaS4gQW5kIEpvYWIgc2FpZCwgV2hlcmVmb3JlIHdpbHQgdGhvdSBydW4sIG15IHNvbiwgc2VlaW5nIHRoYXQgdGhvdSBoYXN0IG5vIHRpZGluZ3MgcmVhZHk/CkJ1dCBob3dzb2V2ZXIsIHNhaWQgaGUsIGxldCBtZSBydW4uIEFuZCBoZSBzYWlkIHVudG8gaGltLCBSdW4uIFRoZW4gQWhpbWFheiByYW4gYnkgdGhlIHdheSBvZiB0aGUgcGxhaW4sIGFuZCBvdmVycmFuIEN1c2hpLgpBbmQgRGF2aWQgc2F0IGJldHdlZW4gdGhlIHR3byBnYXRlczogYW5kIHRoZSB3YXRjaG1hbiB3ZW50IHVwIHRvIHRoZSByb29mIG92ZXIgdGhlIGdhdGUgdW50byB0aGUgd2FsbCwgYW5kIGxpZnRlZCB1cCBoaXMgZXllcywgYW5kIGxvb2tlZCwgYW5kIGJlaG9sZCBhIG1hbiBydW5uaW5nIGFsb25lLgpBbmQgdGhlIHdhdGNobWFuIGNyaWVkLCBhbmQgdG9sZCB0aGUga2luZy4gQW5kIHRoZSBraW5nIHNhaWQsIElmIGhlIGJlIGFsb25lLCB0aGVyZSBpcyB0aWRpbmdzIGluIGhpcyBtb3V0aC4gQW5kIGhlIGNhbWUgYXBhY2UsIGFuZCBkcmV3IG5lYXIuCkFuZCB0aGUgd2F0Y2htYW4gc2F3IGFub3RoZXIgbWFuIHJ1bm5pbmc6IGFuZCB0aGUgd2F0Y2htYW4gY2FsbGVkIHVudG8gdGhlIHBvcnRlciwgYW5kIHNhaWQsIEJlaG9sZCBhbm90aGVyIG1hbiBydW5uaW5nIGFsb25lLiBBbmQgdGhlIGtpbmcgc2FpZCwgSGUgYWxzbyBicmluZ2V0aCB0aWRpbmdzLgpBbmQgdGhlIHdhdGNobWFuIHNhaWQsIE1lIHRoaW5rZXRoIHRoZSBydW5uaW5nIG9mIHRoZSBmb3JlbW9zdCBpcyBsaWtlIHRoZSBydW5uaW5nIG9mIEFoaW1hYXogdGhlIHNvbiBvZiBaYWRvay4gQW5kIHRoZSBraW5nIHNhaWQsIEhlIGlzIGEgZ29vZCBtYW4sIGFuZCBjb21ldGggd2l0aCBnb29kIHRpZGluZ3MuCkFuZCBBaGltYWF6IGNhbGxlZCwgYW5kIHNhaWQgdW50byB0aGUga2luZywgQWxsIGlzIHdlbGwuIEFuZCBoZSBmZWxsIGRvd24gdG8gdGhlIGVhcnRoIHVwb24gaGlzIGZhY2UgYmVmb3JlIHRoZSBraW5nLCBhbmQgc2FpZCwgQmxlc3NlZCBiZSB0aGUgTE9SRCB0aHkgR29kLCB3aGljaCBoYXRoIGRlbGl2ZXJlZCB1cCB0aGUgbWVuIHRoYXQgbGlmdGVkIHVwIHRoZWlyIGhhbmQgYWdhaW5zdCBteSBsb3JkIHRoZSBraW5nLgpBbmQgdGhlIGtpbmcgc2FpZCwgSXMgdGhlIHlvdW5nIG1hbiBBYnNhbG9tIHNhZmU/IEFuZCBBaGltYWF6IGFuc3dlcmVkLCBXaGVuIEpvYWIgc2VudCB0aGUga2luZydzIHNlcnZhbnQsIGFuZCBtZSB0aHkgc2VydmFudCwgSSBzYXcgYSBncmVhdCB0dW11bHQsIGJ1dCBJIGtuZXcgbm90IHdoYXQgaXQgd2FzLgpBbmQgdGhlIGtpbmcgc2FpZCB1bnRvIGhpbSwgVHVybiBhc2lkZSwgYW5kIHN0YW5kIGhlcmUuIEFuZCBoZSB0dXJuZWQgYXNpZGUsIGFuZCBzdG9vZCBzdGlsbC4KQW5kLCBiZWhvbGQsIEN1c2hpIGNhbWU7IGFuZCBDdXNoaSBzYWlkLCBUaWRpbmdzLCBteSBsb3JkIHRoZSBraW5nOiBmb3IgdGhlIExPUkQgaGF0aCBhdmVuZ2VkIHRoZWUgdGhpcyBkYXkgb2YgYWxsIHRoZW0gdGhhdCByb3NlIHVwIGFnYWluc3QgdGhlZS4KQW5kIHRoZSBraW5nIHNhaWQgdW50byBDdXNoaSwgSXMgdGhlIHlvdW5nIG1hbiBBYnNhbG9tIHNhZmU/IEFuZCBDdXNoaSBhbnN3ZXJlZCwgVGhlIGVuZW1pZXMgb2YgbXkgbG9yZCB0aGUga2luZywgYW5kIGFsbCB0aGF0IHJpc2UgYWdhaW5zdCB0aGVlIHRvIGRvIHRoZWUgaHVydCwgYmUgYXMgdGhhdCB5b3VuZyBtYW4gaXMuCkFuZCB0aGUga2luZyB3YXMgbXVjaCBtb3ZlZCwgYW5kIHdlbnQgdXAgdG8gdGhlIGNoYW1iZXIgb3ZlciB0aGUgZ2F0ZSwgYW5kIHdlcHQ6IGFuZCBhcyBoZSB3ZW50LCB0aHVzIGhlIHNhaWQsIE8gbXkgc29uIEFic2Fsb20sIG15IHNvbiwgbXkgc29uIEFic2Fsb20hIHdvdWxkIEdvZCBJIGhhZCBkaWVkIGZvciB0aGVlLCBPIEFic2Fsb20sIG15IHNvbiwgbXkgc29uIQpBbmQgaXQgd2FzIHRvbGQgSm9hYiwgQmVob2xkLCB0aGUga2luZyB3ZWVwZXRoIGFuZCBtb3VybmV0aCBmb3IgQWJzYWxvbS4KQW5kIHRoZSB2aWN0b3J5IHRoYXQgZGF5IHdhcyB0dXJuZWQgaW50byBtb3VybmluZyB1bnRvIGFsbCB0aGUgcGVvcGxlOiBmb3IgdGhlIHBlb3BsZSBoZWFyZCBzYXkgdGhhdCBkYXkgaG93IHRoZSBraW5nIHdhcyBncmlldmVkIGZvciBoaXMgc29uLgpBbmQgdGhlIHBlb3BsZSBnYXQgdGhlbSBieSBzdGVhbHRoIHRoYXQgZGF5IGludG8gdGhlIGNpdHksIGFzIHBlb3BsZSBiZWluZyBhc2hhbWVkIHN0ZWFsIGF3YXkgd2hlbiB0aGV5IGZsZWUgaW4gYmF0dGxlLgpCdXQgdGhlIGtpbmcgY292ZXJlZCBoaXMgZmFjZSwgYW5kIHRoZSBraW5nIGNyaWVkIHdpdGggYSBsb3VkIHZvaWNlLCBPIG15IHNvbiBBYnNhbG9tLCBPIEFic2Fsb20sIG15IHNvbiwgbXkgc29uIQpBbmQgSm9hYiBjYW1lIGludG8gdGhlIGhvdXNlIHRvIHRoZSBraW5nLCBhbmQgc2FpZCwgVGhvdSBoYXN0IHNoYW1lZCB0aGlzIGRheSB0aGUgZmFjZXMgb2YgYWxsIHRoeSBzZXJ2YW50cywgd2hpY2ggdGhpcyBkYXkgaGF2ZSBzYXZlZCB0aHkgbGlmZSwgYW5kIHRoZSBsaXZlcyBvZiB0aHkgc29ucyBhbmQgb2YgdGh5IGRhdWdodGVycywgYW5kIHRoZSBsaXZlcyBvZiB0aHkgd2l2ZXMsIGFuZCB0aGUgbGl2ZXMgb2YgdGh5IGNvbmN1YmluZXM7CkluIHRoYXQgdGhvdSBsb3Zlc3QgdGhpbmUgZW5lbWllcywgYW5kIGhhdGVzdCB0aHkgZnJpZW5kcy4gRm9yIHRob3UgaGFzdCBkZWNsYXJlZCB0aGlzIGRheSwgdGhhdCB0aG91IHJlZ2FyZGVzdCBuZWl0aGVyIHByaW5jZXMgbm9yIHNlcnZhbnRzOiBmb3IgdGhpcyBkYXkgSSBwZXJjZWl2ZSwgdGhhdCBpZiBBYnNhbG9tIGhhZCBsaXZlZCwgYW5kIGFsbCB3ZSBoYWQgZGllZCB0aGlzIGRheSwgdGhlbiBpdCBoYWQgcGxlYXNlZCB0aGVlIHdlbGwuCk5vdyB0aGVyZWZvcmUgYXJpc2UsIGdvIGZvcnRoLCBhbmQgc3BlYWsgY29tZm9ydGFibHkgdW50byB0aHkgc2VydmFudHM6IGZvciBJIHN3ZWFyIGJ5IHRoZSBMT1JELCBpZiB0aG91IGdvIG5vdCBmb3J0aCwgdGhlcmUgd2lsbCBub3QgdGFycnkgb25lIHdpdGggdGhlZSB0aGlzIG5pZ2h0OiBhbmQgdGhhdCB3aWxsIGJlIHdvcnNlIHVudG8gdGhlZSB0aGFuIGFsbCB0aGUgZXZpbCB0aGF0IGJlZmVsbCB0aGVlIGZyb20gdGh5IHlvdXRoIHVudGlsIG5vdy4KVGhlbiB0aGUga2luZyBhcm9zZSwgYW5kIHNhdCBpbiB0aGUgZ2F0ZS4gQW5kIHRoZXkgdG9sZCB1bnRvIGFsbCB0aGUgcGVvcGxlLCBzYXlpbmcsIEJlaG9sZCwgdGhlIGtpbmcgZG90aCBzaXQgaW4gdGhlIGdhdGUuIEFuZCBhbGwgdGhlIHBlb3BsZSBjYW1lIGJlZm9yZSB0aGUga2luZzogZm9yIElzcmFlbCBoYWQgZmxlZCBldmVyeSBtYW4gdG8gaGlzIHRlbnQuCkFuZCBhbGwgdGhlIHBlb3BsZSB3ZXJlIGF0IHN0cmlmZSB0aHJvdWdob3V0IGFsbCB0aGUgdHJpYmVzIG9mIElzcmFlbCwgc2F5aW5nLCBUaGUga2luZyBzYXZlZCB1cyBvdXQgb2YgdGhlIGhhbmQgb2Ygb3VyIGVuZW1pZXMsIGFuZCBoZSBkZWxpdmVyZWQgdXMgb3V0IG9mIHRoZSBoYW5kIG9mIHRoZSBQaGlsaXN0aW5lczsgYW5kIG5vdyBoZSBpcyBmbGVkIG91dCBvZiB0aGUgbGFuZCBmb3IgQWJzYWxvbS4KQW5kIEFic2Fsb20sIHdob20gd2UgYW5vaW50ZWQgb3ZlciB1cywgaXMgZGVhZCBpbiBiYXR0bGUuIE5vdyB0aGVyZWZvcmUgd2h5IHNwZWFrIHllIG5vdCBhIHdvcmQgb2YgYnJpbmdpbmcgdGhlIGtpbmcgYmFjaz8KQW5kIGtpbmcgRGF2aWQgc2VudCB0byBaYWRvayBhbmQgdG8gQWJpYXRoYXIgdGhlIHByaWVzdHMsIHNheWluZywgU3BlYWsgdW50byB0aGUgZWxkZXJzIG9mIEp1ZGFoLCBzYXlpbmcsIFdoeSBhcmUgeWUgdGhlIGxhc3QgdG8gYnJpbmcgdGhlIGtpbmcgYmFjayB0byBoaXMgaG91c2U/IHNlZWluZyB0aGUgc3BlZWNoIG9mIGFsbCBJc3JhZWwgaXMgY29tZSB0byB0aGUga2luZywgZXZlbiB0byBoaXMgaG91c2UuClllIGFyZSBteSBicmV0aHJlbiwgeWUgYXJlIG15IGJvbmVzIGFuZCBteSBmbGVzaDogd2hlcmVmb3JlIHRoZW4gYXJlIHllIHRoZSBsYXN0IHRvIGJyaW5nIGJhY2sgdGhlIGtpbmc/CkFuZCBzYXkgeWUgdG8gQW1hc2EsIEFydCB0aG91IG5vdCBvZiBteSBib25lLCBhbmQgb2YgbXkgZmxlc2g/IEdvZCBkbyBzbyB0byBtZSwgYW5kIG1vcmUgYWxzbywgaWYgdGhvdSBiZSBub3QgY2FwdGFpbiBvZiB0aGUgaG9zdCBiZWZvcmUgbWUgY29udGludWFsbHkgaW4gdGhlIHJvb20gb2YgSm9hYi4KQW5kIGhlIGJvd2VkIHRoZSBoZWFydCBvZiBhbGwgdGhlIG1lbiBvZiBKdWRhaCwgZXZlbiBhcyB0aGUgaGVhcnQgb2Ygb25lIG1hbjsgc28gdGhhdCB0aGV5IHNlbnQgdGhpcyB3b3JkIHVudG8gdGhlIGtpbmcsIFJldHVybiB0aG91LCBhbmQgYWxsIHRoeSBzZXJ2YW50cy4KU28gdGhlIGtpbmcgcmV0dXJuZWQsIGFuZCBjYW1lIHRvIEpvcmRhbi4gQW5kIEp1ZGFoIGNhbWUgdG8gR2lsZ2FsLCB0byBnbyB0byBtZWV0IHRoZSBraW5nLCB0byBjb25kdWN0IHRoZSBraW5nIG92ZXIgSm9yZGFuLgpBbmQgU2hpbWVpIHRoZSBzb24gb2YgR2VyYSwgYSBCZW5qYW1pdGUsIHdoaWNoIHdhcyBvZiBCYWh1cmltLCBoYXN0ZWQgYW5kIGNhbWUgZG93biB3aXRoIHRoZSBtZW4gb2YgSnVkYWggdG8gbWVldCBraW5nIERhdmlkLgpBbmQgdGhlcmUgd2VyZSBhIHRob3VzYW5kIG1lbiBvZiBCZW5qYW1pbiB3aXRoIGhpbSwgYW5kIFppYmEgdGhlIHNlcnZhbnQgb2YgdGhlIGhvdXNlIG9mIFNhdWwsIGFuZCBoaXMgZmlmdGVlbiBzb25zIGFuZCBoaXMgdHdlbnR5IHNlcnZhbnRzIHdpdGggaGltOyBhbmQgdGhleSB3ZW50IG92ZXIgSm9yZGFuIGJlZm9yZSB0aGUga2luZy4KQW5kIHRoZXJlIHdlbnQgb3ZlciBhIGZlcnJ5IGJvYXQgdG8gY2Fycnkgb3ZlciB0aGUga2luZydzIGhvdXNlaG9sZCwgYW5kIHRvIGRvIHdoYXQgaGUgdGhvdWdodCBnb29kLiBBbmQgU2hpbWVpIHRoZSBzb24gb2YgR2VyYSBmZWxsIGRvd24gYmVmb3JlIHRoZSBraW5nLCBhcyBoZSB3YXMgY29tZSBvdmVyIEpvcmRhbjsKQW5kIHNhaWQgdW50byB0aGUga2luZywgTGV0IG5vdCBteSBsb3JkIGltcHV0ZSBpbmlxdWl0eSB1bnRvIG1lLCBuZWl0aGVyIGRvIHRob3UgcmVtZW1iZXIgdGhhdCB3aGljaCB0aHkgc2VydmFudCBkaWQgcGVydmVyc2VseSB0aGUgZGF5IHRoYXQgbXkgbG9yZCB0aGUga2luZyB3ZW50IG91dCBvZiBKZXJ1c2FsZW0sIHRoYXQgdGhlIGtpbmcgc2hvdWxkIHRha2UgaXQgdG8gaGlzIGhlYXJ0LgpGb3IgdGh5IHNlcnZhbnQgZG90aCBrbm93IHRoYXQgSSBoYXZlIHNpbm5lZDogdGhlcmVmb3JlLCBiZWhvbGQsIEkgYW0gY29tZSB0aGUgZmlyc3QgdGhpcyBkYXkgb2YgYWxsIHRoZSBob3VzZSBvZiBKb3NlcGggdG8gZ28gZG93biB0byBtZWV0IG15IGxvcmQgdGhlIGtpbmcuCkJ1dCBBYmlzaGFpIHRoZSBzb24gb2YgWmVydWlhaCBhbnN3ZXJlZCBhbmQgc2FpZCwgU2hhbGwgbm90IFNoaW1laSBiZSBwdXQgdG8gZGVhdGggZm9yIHRoaXMsIGJlY2F1c2UgaGUgY3Vyc2VkIHRoZSBMT1JEJ3MgYW5vaW50ZWQ/CkFuZCBEYXZpZCBzYWlkLCBXaGF0IGhhdmUgSSB0byBkbyB3aXRoIHlvdSwgeWUgc29ucyBvZiBaZXJ1aWFoLCB0aGF0IHllIHNob3VsZCB0aGlzIGRheSBiZSBhZHZlcnNhcmllcyB1bnRvIG1lPyBzaGFsbCB0aGVyZSBhbnkgbWFuIGJlIHB1dCB0byBkZWF0aCB0aGlzIGRheSBpbiBJc3JhZWw/IGZvciBkbyBub3QgSSBrbm93IHRoYXQgSSBhbSB0aGlzIGRheSBraW5nIG92ZXIgSXNyYWVsPwpUaGVyZWZvcmUgdGhlIGtpbmcgc2FpZCB1bnRvIFNoaW1laSwgVGhvdSBzaGFsdCBub3QgZGllLiBBbmQgdGhlIGtpbmcgc3dhcmUgdW50byBoaW0uCkFuZCBNZXBoaWJvc2hldGggdGhlIHNvbiBvZiBTYXVsIGNhbWUgZG93biB0byBtZWV0IHRoZSBraW5nLCBhbmQgaGFkIG5laXRoZXIgZHJlc3NlZCBoaXMgZmVldCwgbm9yIHRyaW1tZWQgaGlzIGJlYXJkLCBub3Igd2FzaGVkIGhpcyBjbG90aGVzLCBmcm9tIHRoZSBkYXkgdGhlIGtpbmcgZGVwYXJ0ZWQgdW50aWwgdGhlIGRheSBoZSBjYW1lIGFnYWluIGluIHBlYWNlLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIGhlIHdhcyBjb21lIHRvIEplcnVzYWxlbSB0byBtZWV0IHRoZSBraW5nLCB0aGF0IHRoZSBraW5nIHNhaWQgdW50byBoaW0sIFdoZXJlZm9yZSB3ZW50ZXN0IG5vdCB0aG91IHdpdGggbWUsIE1lcGhpYm9zaGV0aD8KQW5kIGhlIGFuc3dlcmVkLCBNeSBsb3JkLCBPIGtpbmcsIG15IHNlcnZhbnQgZGVjZWl2ZWQgbWU6IGZvciB0aHkgc2VydmFudCBzYWlkLCBJIHdpbGwgc2FkZGxlIG1lIGFuIGFzcywgdGhhdCBJIG1heSByaWRlIHRoZXJlb24sIGFuZCBnbyB0byB0aGUga2luZzsgYmVjYXVzZSB0aHkgc2VydmFudCBpcyBsYW1lLgpBbmQgaGUgaGF0aCBzbGFuZGVyZWQgdGh5IHNlcnZhbnQgdW50byBteSBsb3JkIHRoZSBraW5nOyBidXQgbXkgbG9yZCB0aGUga2luZyBpcyBhcyBhbiBhbmdlbCBvZiBHb2Q6IGRvIHRoZXJlZm9yZSB3aGF0IGlzIGdvb2QgaW4gdGhpbmUgZXllcy4KRm9yIGFsbCBvZiBteSBmYXRoZXIncyBob3VzZSB3ZXJlIGJ1dCBkZWFkIG1lbiBiZWZvcmUgbXkgbG9yZCB0aGUga2luZzogeWV0IGRpZHN0IHRob3Ugc2V0IHRoeSBzZXJ2YW50IGFtb25nIHRoZW0gdGhhdCBkaWQgZWF0IGF0IHRoaW5lIG93biB0YWJsZS4gV2hhdCByaWdodCB0aGVyZWZvcmUgaGF2ZSBJIHlldCB0byBjcnkgYW55IG1vcmUgdW50byB0aGUga2luZz8KQW5kIHRoZSBraW5nIHNhaWQgdW50byBoaW0sIFdoeSBzcGVha2VzdCB0aG91IGFueSBtb3JlIG9mIHRoeSBtYXR0ZXJzPyBJIGhhdmUgc2FpZCwgVGhvdSBhbmQgWmliYSBkaXZpZGUgdGhlIGxhbmQuCkFuZCBNZXBoaWJvc2hldGggc2FpZCB1bnRvIHRoZSBraW5nLCBZZWEsIGxldCBoaW0gdGFrZSBhbGwsIGZvcmFzbXVjaCBhcyBteSBsb3JkIHRoZSBraW5nIGlzIGNvbWUgYWdhaW4gaW4gcGVhY2UgdW50byBoaXMgb3duIGhvdXNlLgpBbmQgQmFyemlsbGFpIHRoZSBHaWxlYWRpdGUgY2FtZSBkb3duIGZyb20gUm9nZWxpbSwgYW5kIHdlbnQgb3ZlciBKb3JkYW4gd2l0aCB0aGUga2luZywgdG8gY29uZHVjdCBoaW0gb3ZlciBKb3JkYW4uCk5vdyBCYXJ6aWxsYWkgd2FzIGEgdmVyeSBhZ2VkIG1hbiwgZXZlbiBmb3Vyc2NvcmUgeWVhcnMgb2xkOiBhbmQgaGUgaGFkIHByb3ZpZGVkIHRoZSBraW5nIG9mIHN1c3RlbmFuY2Ugd2hpbGUgaGUgbGF5IGF0IE1haGFuYWltOyBmb3IgaGUgd2FzIGEgdmVyeSBncmVhdCBtYW4uCkFuZCB0aGUga2luZyBzYWlkIHVudG8gQmFyemlsbGFpLCBDb21lIHRob3Ugb3ZlciB3aXRoIG1lLCBhbmQgSSB3aWxsIGZlZWQgdGhlZSB3aXRoIG1lIGluIEplcnVzYWxlbS4KQW5kIEJhcnppbGxhaSBzYWlkIHVudG8gdGhlIGtpbmcsIEhvdyBsb25nIGhhdmUgSSB0byBsaXZlLCB0aGF0IEkgc2hvdWxkIGdvIHVwIHdpdGggdGhlIGtpbmcgdW50byBKZXJ1c2FsZW0/CkkgYW0gdGhpcyBkYXkgZm91cnNjb3JlIHllYXJzIG9sZDogYW5kIGNhbiBJIGRpc2Nlcm4gYmV0d2VlbiBnb29kIGFuZCBldmlsPyBjYW4gdGh5IHNlcnZhbnQgdGFzdGUgd2hhdCBJIGVhdCBvciB3aGF0IEkgZHJpbms/IGNhbiBJIGhlYXIgYW55IG1vcmUgdGhlIHZvaWNlIG9mIHNpbmdpbmcgbWVuIGFuZCBzaW5naW5nIHdvbWVuPyB3aGVyZWZvcmUgdGhlbiBzaG91bGQgdGh5IHNlcnZhbnQgYmUgeWV0IGEgYnVyZGVuIHVudG8gbXkgbG9yZCB0aGUga2luZz8KVGh5IHNlcnZhbnQgd2lsbCBnbyBhIGxpdHRsZSB3YXkgb3ZlciBKb3JkYW4gd2l0aCB0aGUga2luZzogYW5kIHdoeSBzaG91bGQgdGhlIGtpbmcgcmVjb21wZW5zZSBpdCBtZSB3aXRoIHN1Y2ggYSByZXdhcmQ/CkxldCB0aHkgc2VydmFudCwgSSBwcmF5IHRoZWUsIHR1cm4gYmFjayBhZ2FpbiwgdGhhdCBJIG1heSBkaWUgaW4gbWluZSBvd24gY2l0eSwgYW5kIGJlIGJ1cmllZCBieSB0aGUgZ3JhdmUgb2YgbXkgZmF0aGVyIGFuZCBvZiBteSBtb3RoZXIuIEJ1dCBiZWhvbGQgdGh5IHNlcnZhbnQgQ2hpbWhhbTsgbGV0IGhpbSBnbyBvdmVyIHdpdGggbXkgbG9yZCB0aGUga2luZzsgYW5kIGRvIHRvIGhpbSB3aGF0IHNoYWxsIHNlZW0gZ29vZCB1bnRvIHRoZWUuCkFuZCB0aGUga2luZyBhbnN3ZXJlZCwgQ2hpbWhhbSBzaGFsbCBnbyBvdmVyIHdpdGggbWUsIGFuZCBJIHdpbGwgZG8gdG8gaGltIHRoYXQgd2hpY2ggc2hhbGwgc2VlbSBnb29kIHVudG8gdGhlZTogYW5kIHdoYXRzb2V2ZXIgdGhvdSBzaGFsdCByZXF1aXJlIG9mIG1lLCB0aGF0IHdpbGwgSSBkbyBmb3IgdGhlZS4KQW5kIGFsbCB0aGUgcGVvcGxlIHdlbnQgb3ZlciBKb3JkYW4uIEFuZCB3aGVuIHRoZSBraW5nIHdhcyBjb21lIG92ZXIsIHRoZSBraW5nIGtpc3NlZCBCYXJ6aWxsYWksIGFuZCBibGVzc2VkIGhpbTsgYW5kIGhlIHJldHVybmVkIHVudG8gaGlzIG93biBwbGFjZS4KVGhlbiB0aGUga2luZyB3ZW50IG9uIHRvIEdpbGdhbCwgYW5kIENoaW1oYW0gd2VudCBvbiB3aXRoIGhpbTogYW5kIGFsbCB0aGUgcGVvcGxlIG9mIEp1ZGFoIGNvbmR1Y3RlZCB0aGUga2luZywgYW5kIGFsc28gaGFsZiB0aGUgcGVvcGxlIG9mIElzcmFlbC4KQW5kLCBiZWhvbGQsIGFsbCB0aGUgbWVuIG9mIElzcmFlbCBjYW1lIHRvIHRoZSBraW5nLCBhbmQgc2FpZCB1bnRvIHRoZSBraW5nLCBXaHkgaGF2ZSBvdXIgYnJldGhyZW4gdGhlIG1lbiBvZiBKdWRhaCBzdG9sZW4gdGhlZSBhd2F5LCBhbmQgaGF2ZSBicm91Z2h0IHRoZSBraW5nLCBhbmQgaGlzIGhvdXNlaG9sZCwgYW5kIGFsbCBEYXZpZCdzIG1lbiB3aXRoIGhpbSwgb3ZlciBKb3JkYW4/CkFuZCBhbGwgdGhlIG1lbiBvZiBKdWRhaCBhbnN3ZXJlZCB0aGUgbWVuIG9mIElzcmFlbCwgQmVjYXVzZSB0aGUga2luZyBpcyBuZWFyIG9mIGtpbiB0byB1czogd2hlcmVmb3JlIHRoZW4gYmUgeWUgYW5ncnkgZm9yIHRoaXMgbWF0dGVyPyBoYXZlIHdlIGVhdGVuIGF0IGFsbCBvZiB0aGUga2luZydzIGNvc3Q/IG9yIGhhdGggaGUgZ2l2ZW4gdXMgYW55IGdpZnQ/CkFuZCB0aGUgbWVuIG9mIElzcmFlbCBhbnN3ZXJlZCB0aGUgbWVuIG9mIEp1ZGFoLCBhbmQgc2FpZCwgV2UgaGF2ZSB0ZW4gcGFydHMgaW4gdGhlIGtpbmcsIGFuZCB3ZSBoYXZlIGFsc28gbW9yZSByaWdodCBpbiBEYXZpZCB0aGFuIHllOiB3aHkgdGhlbiBkaWQgeWUgZGVzcGlzZSB1cywgdGhhdCBvdXIgYWR2aWNlIHNob3VsZCBub3QgYmUgZmlyc3QgaGFkIGluIGJyaW5naW5nIGJhY2sgb3VyIGtpbmc/IEFuZCB0aGUgd29yZHMgb2YgdGhlIG1lbiBvZiBKdWRhaCB3ZXJlIGZpZXJjZXIgdGhhbiB0aGUgd29yZHMgb2YgdGhlIG1lbiBvZiBJc3JhZWwuCkFuZCB0aGVyZSBoYXBwZW5lZCB0byBiZSB0aGVyZSBhIG1hbiBvZiBCZWxpYWwsIHdob3NlIG5hbWUgd2FzIFNoZWJhLCB0aGUgc29uIG9mIEJpY2hyaSwgYSBCZW5qYW1pdGU6IGFuZCBoZSBibGV3IGEgdHJ1bXBldCwgYW5kIHNhaWQsIFdlIGhhdmUgbm8gcGFydCBpbiBEYXZpZCwgbmVpdGhlciBoYXZlIHdlIGluaGVyaXRhbmNlIGluIHRoZSBzb24gb2YgSmVzc2U6IGV2ZXJ5IG1hbiB0byBoaXMgdGVudHMsIE8gSXNyYWVsLgpTbyBldmVyeSBtYW4gb2YgSXNyYWVsIHdlbnQgdXAgZnJvbSBhZnRlciBEYXZpZCwgYW5kIGZvbGxvd2VkIFNoZWJhIHRoZSBzb24gb2YgQmljaHJpOiBidXQgdGhlIG1lbiBvZiBKdWRhaCBjbGF2ZSB1bnRvIHRoZWlyIGtpbmcsIGZyb20gSm9yZGFuIGV2ZW4gdG8gSmVydXNhbGVtLgpBbmQgRGF2aWQgY2FtZSB0byBoaXMgaG91c2UgYXQgSmVydXNhbGVtOyBhbmQgdGhlIGtpbmcgdG9vayB0aGUgdGVuIHdvbWVuIGhpcyBjb25jdWJpbmVzLCB3aG9tIGhlIGhhZCBsZWZ0IHRvIGtlZXAgdGhlIGhvdXNlLCBhbmQgcHV0IHRoZW0gaW4gd2FyZCwgYW5kIGZlZCB0aGVtLCBidXQgd2VudCBub3QgaW4gdW50byB0aGVtLiBTbyB0aGV5IHdlcmUgc2h1dCB1cCB1bnRvIHRoZSBkYXkgb2YgdGhlaXIgZGVhdGgsIGxpdmluZyBpbiB3aWRvd2hvb2QuClRoZW4gc2FpZCB0aGUga2luZyB0byBBbWFzYSwgQXNzZW1ibGUgbWUgdGhlIG1lbiBvZiBKdWRhaCB3aXRoaW4gdGhyZWUgZGF5cywgYW5kIGJlIHRob3UgaGVyZSBwcmVzZW50LgpTbyBBbWFzYSB3ZW50IHRvIGFzc2VtYmxlIHRoZSBtZW4gb2YgSnVkYWg6IGJ1dCBoZSB0YXJyaWVkIGxvbmdlciB0aGFuIHRoZSBzZXQgdGltZSB3aGljaCBoZSBoYWQgYXBwb2ludGVkIGhpbS4KQW5kIERhdmlkIHNhaWQgdG8gQWJpc2hhaSwgTm93IHNoYWxsIFNoZWJhIHRoZSBzb24gb2YgQmljaHJpIGRvIHVzIG1vcmUgaGFybSB0aGFuIGRpZCBBYnNhbG9tOiB0YWtlIHRob3UgdGh5IGxvcmQncyBzZXJ2YW50cywgYW5kIHB1cnN1ZSBhZnRlciBoaW0sIGxlc3QgaGUgZ2V0IGhpbSBmZW5jZWQgY2l0aWVzLCBhbmQgZXNjYXBlIHVzLgpBbmQgdGhlcmUgd2VudCBvdXQgYWZ0ZXIgaGltIEpvYWIncyBtZW4sIGFuZCB0aGUgQ2hlcmV0aGl0ZXMsIGFuZCB0aGUgUGVsZXRoaXRlcywgYW5kIGFsbCB0aGUgbWlnaHR5IG1lbjogYW5kIHRoZXkgd2VudCBvdXQgb2YgSmVydXNhbGVtLCB0byBwdXJzdWUgYWZ0ZXIgU2hlYmEgdGhlIHNvbiBvZiBCaWNocmkuCldoZW4gdGhleSB3ZXJlIGF0IHRoZSBncmVhdCBzdG9uZSB3aGljaCBpcyBpbiBHaWJlb24sIEFtYXNhIHdlbnQgYmVmb3JlIHRoZW0uIEFuZCBKb2FiJ3MgZ2FybWVudCB0aGF0IGhlIGhhZCBwdXQgb24gd2FzIGdpcmRlZCB1bnRvIGhpbSwgYW5kIHVwb24gaXQgYSBnaXJkbGUgd2l0aCBhIHN3b3JkIGZhc3RlbmVkIHVwb24gaGlzIGxvaW5zIGluIHRoZSBzaGVhdGggdGhlcmVvZjsgYW5kIGFzIGhlIHdlbnQgZm9ydGggaXQgZmVsbCBvdXQuCkFuZCBKb2FiIHNhaWQgdG8gQW1hc2EsIEFydCB0aG91IGluIGhlYWx0aCwgbXkgYnJvdGhlcj8gQW5kIEpvYWIgdG9vayBBbWFzYSBieSB0aGUgYmVhcmQgd2l0aCB0aGUgcmlnaHQgaGFuZCB0byBraXNzIGhpbS4KQnV0IEFtYXNhIHRvb2sgbm8gaGVlZCB0byB0aGUgc3dvcmQgdGhhdCB3YXMgaW4gSm9hYidzIGhhbmQ6IHNvIGhlIHNtb3RlIGhpbSB0aGVyZXdpdGggaW4gdGhlIGZpZnRoIHJpYiwgYW5kIHNoZWQgb3V0IGhpcyBib3dlbHMgdG8gdGhlIGdyb3VuZCwgYW5kIHN0cnVjayBoaW0gbm90IGFnYWluOyBhbmQgaGUgZGllZC4gU28gSm9hYiBhbmQgQWJpc2hhaSBoaXMgYnJvdGhlciBwdXJzdWVkIGFmdGVyIFNoZWJhIHRoZSBzb24gb2YgQmljaHJpLgpBbmQgb25lIG9mIEpvYWIncyBtZW4gc3Rvb2QgYnkgaGltLCBhbmQgc2FpZCwgSGUgdGhhdCBmYXZvdXJldGggSm9hYiwgYW5kIGhlIHRoYXQgaXMgZm9yIERhdmlkLCBsZXQgaGltIGdvIGFmdGVyIEpvYWIuCkFuZCBBbWFzYSB3YWxsb3dlZCBpbiBibG9vZCBpbiB0aGUgbWlkc3Qgb2YgdGhlIGhpZ2h3YXkuIEFuZCB3aGVuIHRoZSBtYW4gc2F3IHRoYXQgYWxsIHRoZSBwZW9wbGUgc3Rvb2Qgc3RpbGwsIGhlIHJlbW92ZWQgQW1hc2Egb3V0IG9mIHRoZSBoaWdod2F5IGludG8gdGhlIGZpZWxkLCBhbmQgY2FzdCBhIGNsb3RoIHVwb24gaGltLCB3aGVuIGhlIHNhdyB0aGF0IGV2ZXJ5IG9uZSB0aGF0IGNhbWUgYnkgaGltIHN0b29kIHN0aWxsLgpXaGVuIGhlIHdhcyByZW1vdmVkIG91dCBvZiB0aGUgaGlnaHdheSwgYWxsIHRoZSBwZW9wbGUgd2VudCBvbiBhZnRlciBKb2FiLCB0byBwdXJzdWUgYWZ0ZXIgU2hlYmEgdGhlIHNvbiBvZiBCaWNocmkuCkFuZCBoZSB3ZW50IHRocm91Z2ggYWxsIHRoZSB0cmliZXMgb2YgSXNyYWVsIHVudG8gQWJlbCwgYW5kIHRvIEJldGhtYWFjaGFoLCBhbmQgYWxsIHRoZSBCZXJpdGVzOiBhbmQgdGhleSB3ZXJlIGdhdGhlcmVkIHRvZ2V0aGVyLCBhbmQgd2VudCBhbHNvIGFmdGVyIGhpbS4KQW5kIHRoZXkgY2FtZSBhbmQgYmVzaWVnZWQgaGltIGluIEFiZWwgb2YgQmV0aG1hYWNoYWgsIGFuZCB0aGV5IGNhc3QgdXAgYSBiYW5rIGFnYWluc3QgdGhlIGNpdHksIGFuZCBpdCBzdG9vZCBpbiB0aGUgdHJlbmNoOiBhbmQgYWxsIHRoZSBwZW9wbGUgdGhhdCB3ZXJlIHdpdGggSm9hYiBiYXR0ZXJlZCB0aGUgd2FsbCwgdG8gdGhyb3cgaXQgZG93bi4KVGhlbiBjcmllZCBhIHdpc2Ugd29tYW4gb3V0IG9mIHRoZSBjaXR5LCBIZWFyLCBoZWFyOyBzYXksIEkgcHJheSB5b3UsIHVudG8gSm9hYiwgQ29tZSBuZWFyIGhpdGhlciwgdGhhdCBJIG1heSBzcGVhayB3aXRoIHRoZWUuCkFuZCB3aGVuIGhlIHdhcyBjb21lIG5lYXIgdW50byBoZXIsIHRoZSB3b21hbiBzYWlkLCBBcnQgdGhvdSBKb2FiPyBBbmQgaGUgYW5zd2VyZWQsIEkgYW0gaGUuIFRoZW4gc2hlIHNhaWQgdW50byBoaW0sIEhlYXIgdGhlIHdvcmRzIG9mIHRoaW5lIGhhbmRtYWlkLiBBbmQgaGUgYW5zd2VyZWQsIEkgZG8gaGVhci4KVGhlbiBzaGUgc3Bha2UsIHNheWluZywgVGhleSB3ZXJlIHdvbnQgdG8gc3BlYWsgaW4gb2xkIHRpbWUsIHNheWluZywgVGhleSBzaGFsbCBzdXJlbHkgYXNrIGNvdW5zZWwgYXQgQWJlbDogYW5kIHNvIHRoZXkgZW5kZWQgdGhlIG1hdHRlci4KSSBhbSBvbmUgb2YgdGhlbSB0aGF0IGFyZSBwZWFjZWFibGUgYW5kIGZhaXRoZnVsIGluIElzcmFlbDogdGhvdSBzZWVrZXN0IHRvIGRlc3Ryb3kgYSBjaXR5IGFuZCBhIG1vdGhlciBpbiBJc3JhZWw6IHdoeSB3aWx0IHRob3Ugc3dhbGxvdyB1cCB0aGUgaW5oZXJpdGFuY2Ugb2YgdGhlIExPUkQ/CkFuZCBKb2FiIGFuc3dlcmVkIGFuZCBzYWlkLCBGYXIgYmUgaXQsIGZhciBiZSBpdCBmcm9tIG1lLCB0aGF0IEkgc2hvdWxkIHN3YWxsb3cgdXAgb3IgZGVzdHJveS4KVGhlIG1hdHRlciBpcyBub3Qgc286IGJ1dCBhIG1hbiBvZiBtb3VudCBFcGhyYWltLCBTaGViYSB0aGUgc29uIG9mIEJpY2hyaSBieSBuYW1lLCBoYXRoIGxpZnRlZCB1cCBoaXMgaGFuZCBhZ2FpbnN0IHRoZSBraW5nLCBldmVuIGFnYWluc3QgRGF2aWQ6IGRlbGl2ZXIgaGltIG9ubHksIGFuZCBJIHdpbGwgZGVwYXJ0IGZyb20gdGhlIGNpdHkuIEFuZCB0aGUgd29tYW4gc2FpZCB1bnRvIEpvYWIsIEJlaG9sZCwgaGlzIGhlYWQgc2hhbGwgYmUgdGhyb3duIHRvIHRoZWUgb3ZlciB0aGUgd2FsbC4KVGhlbiB0aGUgd29tYW4gd2VudCB1bnRvIGFsbCB0aGUgcGVvcGxlIGluIGhlciB3aXNkb20uIEFuZCB0aGV5IGN1dCBvZmYgdGhlIGhlYWQgb2YgU2hlYmEgdGhlIHNvbiBvZiBCaWNocmksIGFuZCBjYXN0IGl0IG91dCB0byBKb2FiLiBBbmQgaGUgYmxldyBhIHRydW1wZXQsIGFuZCB0aGV5IHJldGlyZWQgZnJvbSB0aGUgY2l0eSwgZXZlcnkgbWFuIHRvIGhpcyB0ZW50LiBBbmQgSm9hYiByZXR1cm5lZCB0byBKZXJ1c2FsZW0gdW50byB0aGUga2luZy4KTm93IEpvYWIgd2FzIG92ZXIgYWxsIHRoZSBob3N0IG9mIElzcmFlbDogYW5kIEJlbmFpYWggdGhlIHNvbiBvZiBKZWhvaWFkYSB3YXMgb3ZlciB0aGUgQ2hlcmV0aGl0ZXMgYW5kIG92ZXIgdGhlIFBlbGV0aGl0ZXM6CkFuZCBBZG9yYW0gd2FzIG92ZXIgdGhlIHRyaWJ1dGU6IGFuZCBKZWhvc2hhcGhhdCB0aGUgc29uIG9mIEFoaWx1ZCB3YXMgcmVjb3JkZXI6CkFuZCBTaGV2YSB3YXMgc2NyaWJlOiBhbmQgWmFkb2sgYW5kIEFiaWF0aGFyIHdlcmUgdGhlIHByaWVzdHM6CkFuZCBJcmEgYWxzbyB0aGUgSmFpcml0ZSB3YXMgYSBjaGllZiBydWxlciBhYm91dCBEYXZpZC4KVGhlbiB0aGVyZSB3YXMgYSBmYW1pbmUgaW4gdGhlIGRheXMgb2YgRGF2aWQgdGhyZWUgeWVhcnMsIHllYXIgYWZ0ZXIgeWVhcjsgYW5kIERhdmlkIGVucXVpcmVkIG9mIHRoZSBMT1JELiBBbmQgdGhlIExPUkQgYW5zd2VyZWQsIEl0IGlzIGZvciBTYXVsLCBhbmQgZm9yIGhpcyBibG9vZHkgaG91c2UsIGJlY2F1c2UgaGUgc2xldyB0aGUgR2liZW9uaXRlcy4KQW5kIHRoZSBraW5nIGNhbGxlZCB0aGUgR2liZW9uaXRlcywgYW5kIHNhaWQgdW50byB0aGVtOyAobm93IHRoZSBHaWJlb25pdGVzIHdlcmUgbm90IG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIGJ1dCBvZiB0aGUgcmVtbmFudCBvZiB0aGUgQW1vcml0ZXM7IGFuZCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGhhZCBzd29ybiB1bnRvIHRoZW06IGFuZCBTYXVsIHNvdWdodCB0byBzbGF5IHRoZW0gaW4gaGlzIHplYWwgdG8gdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBhbmQgSnVkYWguKQpXaGVyZWZvcmUgRGF2aWQgc2FpZCB1bnRvIHRoZSBHaWJlb25pdGVzLCBXaGF0IHNoYWxsIEkgZG8gZm9yIHlvdT8gYW5kIHdoZXJld2l0aCBzaGFsbCBJIG1ha2UgdGhlIGF0b25lbWVudCwgdGhhdCB5ZSBtYXkgYmxlc3MgdGhlIGluaGVyaXRhbmNlIG9mIHRoZSBMT1JEPwpBbmQgdGhlIEdpYmVvbml0ZXMgc2FpZCB1bnRvIGhpbSwgV2Ugd2lsbCBoYXZlIG5vIHNpbHZlciBub3IgZ29sZCBvZiBTYXVsLCBub3Igb2YgaGlzIGhvdXNlOyBuZWl0aGVyIGZvciB1cyBzaGFsdCB0aG91IGtpbGwgYW55IG1hbiBpbiBJc3JhZWwuIEFuZCBoZSBzYWlkLCBXaGF0IHllIHNoYWxsIHNheSwgdGhhdCB3aWxsIEkgZG8gZm9yIHlvdS4KQW5kIHRoZXkgYW5zd2VyZWQgdGhlIGtpbmcsIFRoZSBtYW4gdGhhdCBjb25zdW1lZCB1cywgYW5kIHRoYXQgZGV2aXNlZCBhZ2FpbnN0IHVzIHRoYXQgd2Ugc2hvdWxkIGJlIGRlc3Ryb3llZCBmcm9tIHJlbWFpbmluZyBpbiBhbnkgb2YgdGhlIGNvYXN0cyBvZiBJc3JhZWwsCkxldCBzZXZlbiBtZW4gb2YgaGlzIHNvbnMgYmUgZGVsaXZlcmVkIHVudG8gdXMsIGFuZCB3ZSB3aWxsIGhhbmcgdGhlbSB1cCB1bnRvIHRoZSBMT1JEIGluIEdpYmVhaCBvZiBTYXVsLCB3aG9tIHRoZSBMT1JEIGRpZCBjaG9vc2UuIEFuZCB0aGUga2luZyBzYWlkLCBJIHdpbGwgZ2l2ZSB0aGVtLgpCdXQgdGhlIGtpbmcgc3BhcmVkIE1lcGhpYm9zaGV0aCwgdGhlIHNvbiBvZiBKb25hdGhhbiB0aGUgc29uIG9mIFNhdWwsIGJlY2F1c2Ugb2YgdGhlIExPUkQncyBvYXRoIHRoYXQgd2FzIGJldHdlZW4gdGhlbSwgYmV0d2VlbiBEYXZpZCBhbmQgSm9uYXRoYW4gdGhlIHNvbiBvZiBTYXVsLgpCdXQgdGhlIGtpbmcgdG9vayB0aGUgdHdvIHNvbnMgb2YgUml6cGFoIHRoZSBkYXVnaHRlciBvZiBBaWFoLCB3aG9tIHNoZSBiYXJlIHVudG8gU2F1bCwgQXJtb25pIGFuZCBNZXBoaWJvc2hldGg7IGFuZCB0aGUgZml2ZSBzb25zIG9mIE1pY2hhbCB0aGUgZGF1Z2h0ZXIgb2YgU2F1bCwgd2hvbSBzaGUgYnJvdWdodCB1cCBmb3IgQWRyaWVsIHRoZSBzb24gb2YgQmFyemlsbGFpIHRoZSBNZWhvbGF0aGl0ZToKQW5kIGhlIGRlbGl2ZXJlZCB0aGVtIGludG8gdGhlIGhhbmRzIG9mIHRoZSBHaWJlb25pdGVzLCBhbmQgdGhleSBoYW5nZWQgdGhlbSBpbiB0aGUgaGlsbCBiZWZvcmUgdGhlIExPUkQ6IGFuZCB0aGV5IGZlbGwgYWxsIHNldmVuIHRvZ2V0aGVyLCBhbmQgd2VyZSBwdXQgdG8gZGVhdGggaW4gdGhlIGRheXMgb2YgaGFydmVzdCwgaW4gdGhlIGZpcnN0IGRheXMsIGluIHRoZSBiZWdpbm5pbmcgb2YgYmFybGV5IGhhcnZlc3QuCkFuZCBSaXpwYWggdGhlIGRhdWdodGVyIG9mIEFpYWggdG9vayBzYWNrY2xvdGgsIGFuZCBzcHJlYWQgaXQgZm9yIGhlciB1cG9uIHRoZSByb2NrLCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgaGFydmVzdCB1bnRpbCB3YXRlciBkcm9wcGVkIHVwb24gdGhlbSBvdXQgb2YgaGVhdmVuLCBhbmQgc3VmZmVyZWQgbmVpdGhlciB0aGUgYmlyZHMgb2YgdGhlIGFpciB0byByZXN0IG9uIHRoZW0gYnkgZGF5LCBub3IgdGhlIGJlYXN0cyBvZiB0aGUgZmllbGQgYnkgbmlnaHQuCkFuZCBpdCB3YXMgdG9sZCBEYXZpZCB3aGF0IFJpenBhaCB0aGUgZGF1Z2h0ZXIgb2YgQWlhaCwgdGhlIGNvbmN1YmluZSBvZiBTYXVsLCBoYWQgZG9uZS4KQW5kIERhdmlkIHdlbnQgYW5kIHRvb2sgdGhlIGJvbmVzIG9mIFNhdWwgYW5kIHRoZSBib25lcyBvZiBKb25hdGhhbiBoaXMgc29uIGZyb20gdGhlIG1lbiBvZiBKYWJlc2hnaWxlYWQsIHdoaWNoIGhhZCBzdG9sZW4gdGhlbSBmcm9tIHRoZSBzdHJlZXQgb2YgQmV0aHNoYW4sIHdoZXJlIHRoZSBQaGlsaXN0aW5lcyBoYWQgaGFuZ2VkIHRoZW0sIHdoZW4gdGhlIFBoaWxpc3RpbmVzIGhhZCBzbGFpbiBTYXVsIGluIEdpbGJvYToKQW5kIGhlIGJyb3VnaHQgdXAgZnJvbSB0aGVuY2UgdGhlIGJvbmVzIG9mIFNhdWwgYW5kIHRoZSBib25lcyBvZiBKb25hdGhhbiBoaXMgc29uOyBhbmQgdGhleSBnYXRoZXJlZCB0aGUgYm9uZXMgb2YgdGhlbSB0aGF0IHdlcmUgaGFuZ2VkLgpBbmQgdGhlIGJvbmVzIG9mIFNhdWwgYW5kIEpvbmF0aGFuIGhpcyBzb24gYnVyaWVkIHRoZXkgaW4gdGhlIGNvdW50cnkgb2YgQmVuamFtaW4gaW4gWmVsYWgsIGluIHRoZSBzZXB1bGNocmUgb2YgS2lzaCBoaXMgZmF0aGVyOiBhbmQgdGhleSBwZXJmb3JtZWQgYWxsIHRoYXQgdGhlIGtpbmcgY29tbWFuZGVkLiBBbmQgYWZ0ZXIgdGhhdCBHb2Qgd2FzIGludHJlYXRlZCBmb3IgdGhlIGxhbmQuCk1vcmVvdmVyIHRoZSBQaGlsaXN0aW5lcyBoYWQgeWV0IHdhciBhZ2FpbiB3aXRoIElzcmFlbDsgYW5kIERhdmlkIHdlbnQgZG93biwgYW5kIGhpcyBzZXJ2YW50cyB3aXRoIGhpbSwgYW5kIGZvdWdodCBhZ2FpbnN0IHRoZSBQaGlsaXN0aW5lczogYW5kIERhdmlkIHdheGVkIGZhaW50LgpBbmQgSXNoYmliZW5vYiwgd2hpY2ggd2FzIG9mIHRoZSBzb25zIG9mIHRoZSBnaWFudCwgdGhlIHdlaWdodCBvZiB3aG9zZSBzcGVhciB3ZWlnaGVkIHRocmVlIGh1bmRyZWQgc2hla2VscyBvZiBicmFzcyBpbiB3ZWlnaHQsIGhlIGJlaW5nIGdpcmRlZCB3aXRoIGEgbmV3IHN3b3JkLCB0aG91Z2h0IHRvIGhhdmUgc2xhaW4gRGF2aWQuCkJ1dCBBYmlzaGFpIHRoZSBzb24gb2YgWmVydWlhaCBzdWNjb3VyZWQgaGltLCBhbmQgc21vdGUgdGhlIFBoaWxpc3RpbmUsIGFuZCBraWxsZWQgaGltLiBUaGVuIHRoZSBtZW4gb2YgRGF2aWQgc3dhcmUgdW50byBoaW0sIHNheWluZywgVGhvdSBzaGFsdCBnbyBubyBtb3JlIG91dCB3aXRoIHVzIHRvIGJhdHRsZSwgdGhhdCB0aG91IHF1ZW5jaCBub3QgdGhlIGxpZ2h0IG9mIElzcmFlbC4KQW5kIGl0IGNhbWUgdG8gcGFzcyBhZnRlciB0aGlzLCB0aGF0IHRoZXJlIHdhcyBhZ2FpbiBhIGJhdHRsZSB3aXRoIHRoZSBQaGlsaXN0aW5lcyBhdCBHb2I6IHRoZW4gU2liYmVjaGFpIHRoZSBIdXNoYXRoaXRlIHNsZXcgU2FwaCwgd2hpY2ggd2FzIG9mIHRoZSBzb25zIG9mIHRoZSBnaWFudC4KQW5kIHRoZXJlIHdhcyBhZ2FpbiBhIGJhdHRsZSBpbiBHb2Igd2l0aCB0aGUgUGhpbGlzdGluZXMsIHdoZXJlIEVsaGFuYW4gdGhlIHNvbiBvZiBKYWFyZW9yZWdpbSwgYSBCZXRobGVoZW1pdGUsIHNsZXcgdGhlIGJyb3RoZXIgb2YgR29saWF0aCB0aGUgR2l0dGl0ZSwgdGhlIHN0YWZmIG9mIHdob3NlIHNwZWFyIHdhcyBsaWtlIGEgd2VhdmVyJ3MgYmVhbS4KQW5kIHRoZXJlIHdhcyB5ZXQgYSBiYXR0bGUgaW4gR2F0aCwgd2hlcmUgd2FzIGEgbWFuIG9mIGdyZWF0IHN0YXR1cmUsIHRoYXQgaGFkIG9uIGV2ZXJ5IGhhbmQgc2l4IGZpbmdlcnMsIGFuZCBvbiBldmVyeSBmb290IHNpeCB0b2VzLCBmb3VyIGFuZCB0d2VudHkgaW4gbnVtYmVyOyBhbmQgaGUgYWxzbyB3YXMgYm9ybiB0byB0aGUgZ2lhbnQuCkFuZCB3aGVuIGhlIGRlZmllZCBJc3JhZWwsIEpvbmF0aGFuIHRoZSBzb24gb2YgU2hpbWVhaCB0aGUgYnJvdGhlciBvZiBEYXZpZCBzbGV3IGhpbS4KVGhlc2UgZm91ciB3ZXJlIGJvcm4gdG8gdGhlIGdpYW50IGluIEdhdGgsIGFuZCBmZWxsIGJ5IHRoZSBoYW5kIG9mIERhdmlkLCBhbmQgYnkgdGhlIGhhbmQgb2YgaGlzIHNlcnZhbnRzLgpBbmQgRGF2aWQgc3Bha2UgdW50byB0aGUgTE9SRCB0aGUgd29yZHMgb2YgdGhpcyBzb25nIGluIHRoZSBkYXkgdGhhdCB0aGUgTE9SRCBoYWQgZGVsaXZlcmVkIGhpbSBvdXQgb2YgdGhlIGhhbmQgb2YgYWxsIGhpcyBlbmVtaWVzLCBhbmQgb3V0IG9mIHRoZSBoYW5kIG9mIFNhdWw6CkFuZCBoZSBzYWlkLCBUaGUgTE9SRCBpcyBteSByb2NrLCBhbmQgbXkgZm9ydHJlc3MsIGFuZCBteSBkZWxpdmVyZXI7ClRoZSBHb2Qgb2YgbXkgcm9jazsgaW4gaGltIHdpbGwgSSB0cnVzdDogaGUgaXMgbXkgc2hpZWxkLCBhbmQgdGhlIGhvcm4gb2YgbXkgc2FsdmF0aW9uLCBteSBoaWdoIHRvd2VyLCBhbmQgbXkgcmVmdWdlLCBteSBzYXZpb3VyOyB0aG91IHNhdmVzdCBtZSBmcm9tIHZpb2xlbmNlLgpJIHdpbGwgY2FsbCBvbiB0aGUgTE9SRCwgd2hvIGlzIHdvcnRoeSB0byBiZSBwcmFpc2VkOiBzbyBzaGFsbCBJIGJlIHNhdmVkIGZyb20gbWluZSBlbmVtaWVzLgpXaGVuIHRoZSB3YXZlcyBvZiBkZWF0aCBjb21wYXNzZWQgbWUsIHRoZSBmbG9vZHMgb2YgdW5nb2RseSBtZW4gbWFkZSBtZSBhZnJhaWQ7ClRoZSBzb3Jyb3dzIG9mIGhlbGwgY29tcGFzc2VkIG1lIGFib3V0OyB0aGUgc25hcmVzIG9mIGRlYXRoIHByZXZlbnRlZCBtZTsKSW4gbXkgZGlzdHJlc3MgSSBjYWxsZWQgdXBvbiB0aGUgTE9SRCwgYW5kIGNyaWVkIHRvIG15IEdvZDogYW5kIGhlIGRpZCBoZWFyIG15IHZvaWNlIG91dCBvZiBoaXMgdGVtcGxlLCBhbmQgbXkgY3J5IGRpZCBlbnRlciBpbnRvIGhpcyBlYXJzLgpUaGVuIHRoZSBlYXJ0aCBzaG9vayBhbmQgdHJlbWJsZWQ7IHRoZSBmb3VuZGF0aW9ucyBvZiBoZWF2ZW4gbW92ZWQgYW5kIHNob29rLCBiZWNhdXNlIGhlIHdhcyB3cm90aC4KVGhlcmUgd2VudCB1cCBhIHNtb2tlIG91dCBvZiBoaXMgbm9zdHJpbHMsIGFuZCBmaXJlIG91dCBvZiBoaXMgbW91dGggZGV2b3VyZWQ6IGNvYWxzIHdlcmUga2luZGxlZCBieSBpdC4KSGUgYm93ZWQgdGhlIGhlYXZlbnMgYWxzbywgYW5kIGNhbWUgZG93bjsgYW5kIGRhcmtuZXNzIHdhcyB1bmRlciBoaXMgZmVldC4KQW5kIGhlIHJvZGUgdXBvbiBhIGNoZXJ1YiwgYW5kIGRpZCBmbHk6IGFuZCBoZSB3YXMgc2VlbiB1cG9uIHRoZSB3aW5ncyBvZiB0aGUgd2luZC4KQW5kIGhlIG1hZGUgZGFya25lc3MgcGF2aWxpb25zIHJvdW5kIGFib3V0IGhpbSwgZGFyayB3YXRlcnMsIGFuZCB0aGljayBjbG91ZHMgb2YgdGhlIHNraWVzLgpUaHJvdWdoIHRoZSBicmlnaHRuZXNzIGJlZm9yZSBoaW0gd2VyZSBjb2FscyBvZiBmaXJlIGtpbmRsZWQuClRoZSBMT1JEIHRodW5kZXJlZCBmcm9tIGhlYXZlbiwgYW5kIHRoZSBtb3N0IEhpZ2ggdXR0ZXJlZCBoaXMgdm9pY2UuCkFuZCBoZSBzZW50IG91dCBhcnJvd3MsIGFuZCBzY2F0dGVyZWQgdGhlbTsgbGlnaHRuaW5nLCBhbmQgZGlzY29tZml0ZWQgdGhlbS4KQW5kIHRoZSBjaGFubmVscyBvZiB0aGUgc2VhIGFwcGVhcmVkLCB0aGUgZm91bmRhdGlvbnMgb2YgdGhlIHdvcmxkIHdlcmUgZGlzY292ZXJlZCwgYXQgdGhlIHJlYnVraW5nIG9mIHRoZSBMT1JELCBhdCB0aGUgYmxhc3Qgb2YgdGhlIGJyZWF0aCBvZiBoaXMgbm9zdHJpbHMuCkhlIHNlbnQgZnJvbSBhYm92ZSwgaGUgdG9vayBtZTsgaGUgZHJldyBtZSBvdXQgb2YgbWFueSB3YXRlcnM7CkhlIGRlbGl2ZXJlZCBtZSBmcm9tIG15IHN0cm9uZyBlbmVteSwgYW5kIGZyb20gdGhlbSB0aGF0IGhhdGVkIG1lOiBmb3IgdGhleSB3ZXJlIHRvbyBzdHJvbmcgZm9yIG1lLgpUaGV5IHByZXZlbnRlZCBtZSBpbiB0aGUgZGF5IG9mIG15IGNhbGFtaXR5OiBidXQgdGhlIExPUkQgd2FzIG15IHN0YXkuCkhlIGJyb3VnaHQgbWUgZm9ydGggYWxzbyBpbnRvIGEgbGFyZ2UgcGxhY2U6IGhlIGRlbGl2ZXJlZCBtZSwgYmVjYXVzZSBoZSBkZWxpZ2h0ZWQgaW4gbWUuClRoZSBMT1JEIHJld2FyZGVkIG1lIGFjY29yZGluZyB0byBteSByaWdodGVvdXNuZXNzOiBhY2NvcmRpbmcgdG8gdGhlIGNsZWFubmVzcyBvZiBteSBoYW5kcyBoYXRoIGhlIHJlY29tcGVuc2VkIG1lLgpGb3IgSSBoYXZlIGtlcHQgdGhlIHdheXMgb2YgdGhlIExPUkQsIGFuZCBoYXZlIG5vdCB3aWNrZWRseSBkZXBhcnRlZCBmcm9tIG15IEdvZC4KRm9yIGFsbCBoaXMganVkZ21lbnRzIHdlcmUgYmVmb3JlIG1lOiBhbmQgYXMgZm9yIGhpcyBzdGF0dXRlcywgSSBkaWQgbm90IGRlcGFydCBmcm9tIHRoZW0uCkkgd2FzIGFsc28gdXByaWdodCBiZWZvcmUgaGltLCBhbmQgaGF2ZSBrZXB0IG15c2VsZiBmcm9tIG1pbmUgaW5pcXVpdHkuClRoZXJlZm9yZSB0aGUgTE9SRCBoYXRoIHJlY29tcGVuc2VkIG1lIGFjY29yZGluZyB0byBteSByaWdodGVvdXNuZXNzOyBhY2NvcmRpbmcgdG8gbXkgY2xlYW5uZXNzIGluIGhpcyBleWUgc2lnaHQuCldpdGggdGhlIG1lcmNpZnVsIHRob3Ugd2lsdCBzaGV3IHRoeXNlbGYgbWVyY2lmdWwsIGFuZCB3aXRoIHRoZSB1cHJpZ2h0IG1hbiB0aG91IHdpbHQgc2hldyB0aHlzZWxmIHVwcmlnaHQuCldpdGggdGhlIHB1cmUgdGhvdSB3aWx0IHNoZXcgdGh5c2VsZiBwdXJlOyBhbmQgd2l0aCB0aGUgZnJvd2FyZCB0aG91IHdpbHQgc2hldyB0aHlzZWxmIHVuc2F2b3VyeS4KQW5kIHRoZSBhZmZsaWN0ZWQgcGVvcGxlIHRob3Ugd2lsdCBzYXZlOiBidXQgdGhpbmUgZXllcyBhcmUgdXBvbiB0aGUgaGF1Z2h0eSwgdGhhdCB0aG91IG1heWVzdCBicmluZyB0aGVtIGRvd24uCkZvciB0aG91IGFydCBteSBsYW1wLCBPIExPUkQ6IGFuZCB0aGUgTE9SRCB3aWxsIGxpZ2h0ZW4gbXkgZGFya25lc3MuCkZvciBieSB0aGVlIEkgaGF2ZSBydW4gdGhyb3VnaCBhIHRyb29wOiBieSBteSBHb2QgaGF2ZSBJIGxlYXBlZCBvdmVyIGEgd2FsbC4KQXMgZm9yIEdvZCwgaGlzIHdheSBpcyBwZXJmZWN0OyB0aGUgd29yZCBvZiB0aGUgTE9SRCBpcyB0cmllZDogaGUgaXMgYSBidWNrbGVyIHRvIGFsbCB0aGVtIHRoYXQgdHJ1c3QgaW4gaGltLgpGb3Igd2hvIGlzIEdvZCwgc2F2ZSB0aGUgTE9SRD8gYW5kIHdobyBpcyBhIHJvY2ssIHNhdmUgb3VyIEdvZD8KR29kIGlzIG15IHN0cmVuZ3RoIGFuZCBwb3dlcjogYW5kIGhlIG1ha2V0aCBteSB3YXkgcGVyZmVjdC4KSGUgbWFrZXRoIG15IGZlZXQgbGlrZSBoaW5kcycgZmVldDogYW5kIHNldHRldGggbWUgdXBvbiBteSBoaWdoIHBsYWNlcy4KSGUgdGVhY2hldGggbXkgaGFuZHMgdG8gd2FyOyBzbyB0aGF0IGEgYm93IG9mIHN0ZWVsIGlzIGJyb2tlbiBieSBtaW5lIGFybXMuClRob3UgaGFzdCBhbHNvIGdpdmVuIG1lIHRoZSBzaGllbGQgb2YgdGh5IHNhbHZhdGlvbjogYW5kIHRoeSBnZW50bGVuZXNzIGhhdGggbWFkZSBtZSBncmVhdC4KVGhvdSBoYXN0IGVubGFyZ2VkIG15IHN0ZXBzIHVuZGVyIG1lOyBzbyB0aGF0IG15IGZlZXQgZGlkIG5vdCBzbGlwLgpJIGhhdmUgcHVyc3VlZCBtaW5lIGVuZW1pZXMsIGFuZCBkZXN0cm95ZWQgdGhlbTsgYW5kIHR1cm5lZCBub3QgYWdhaW4gdW50aWwgSSBoYWQgY29uc3VtZWQgdGhlbS4KQW5kIEkgaGF2ZSBjb25zdW1lZCB0aGVtLCBhbmQgd291bmRlZCB0aGVtLCB0aGF0IHRoZXkgY291bGQgbm90IGFyaXNlOiB5ZWEsIHRoZXkgYXJlIGZhbGxlbiB1bmRlciBteSBmZWV0LgpGb3IgdGhvdSBoYXN0IGdpcmRlZCBtZSB3aXRoIHN0cmVuZ3RoIHRvIGJhdHRsZTogdGhlbSB0aGF0IHJvc2UgdXAgYWdhaW5zdCBtZSBoYXN0IHRob3Ugc3ViZHVlZCB1bmRlciBtZS4KVGhvdSBoYXN0IGFsc28gZ2l2ZW4gbWUgdGhlIG5lY2tzIG9mIG1pbmUgZW5lbWllcywgdGhhdCBJIG1pZ2h0IGRlc3Ryb3kgdGhlbSB0aGF0IGhhdGUgbWUuClRoZXkgbG9va2VkLCBidXQgdGhlcmUgd2FzIG5vbmUgdG8gc2F2ZTsgZXZlbiB1bnRvIHRoZSBMT1JELCBidXQgaGUgYW5zd2VyZWQgdGhlbSBub3QuClRoZW4gZGlkIEkgYmVhdCB0aGVtIGFzIHNtYWxsIGFzIHRoZSBkdXN0IG9mIHRoZSBlYXJ0aCwgSSBkaWQgc3RhbXAgdGhlbSBhcyB0aGUgbWlyZSBvZiB0aGUgc3RyZWV0LCBhbmQgZGlkIHNwcmVhZCB0aGVtIGFicm9hZC4KVGhvdSBhbHNvIGhhc3QgZGVsaXZlcmVkIG1lIGZyb20gdGhlIHN0cml2aW5ncyBvZiBteSBwZW9wbGUsIHRob3UgaGFzdCBrZXB0IG1lIHRvIGJlIGhlYWQgb2YgdGhlIGhlYXRoZW46IGEgcGVvcGxlIHdoaWNoIEkga25ldyBub3Qgc2hhbGwgc2VydmUgbWUuClN0cmFuZ2VycyBzaGFsbCBzdWJtaXQgdGhlbXNlbHZlcyB1bnRvIG1lOiBhcyBzb29uIGFzIHRoZXkgaGVhciwgdGhleSBzaGFsbCBiZSBvYmVkaWVudCB1bnRvIG1lLgpTdHJhbmdlcnMgc2hhbGwgZmFkZSBhd2F5LCBhbmQgdGhleSBzaGFsbCBiZSBhZnJhaWQgb3V0IG9mIHRoZWlyIGNsb3NlIHBsYWNlcy4KVGhlIExPUkQgbGl2ZXRoOyBhbmQgYmxlc3NlZCBiZSBteSByb2NrOyBhbmQgZXhhbHRlZCBiZSB0aGUgR29kIG9mIHRoZSByb2NrIG9mIG15IHNhbHZhdGlvbi4KSXQgaXMgR29kIHRoYXQgYXZlbmdldGggbWUsIGFuZCB0aGF0IGJyaW5nZXRoIGRvd24gdGhlIHBlb3BsZSB1bmRlciBtZS4KQW5kIHRoYXQgYnJpbmdldGggbWUgZm9ydGggZnJvbSBtaW5lIGVuZW1pZXM6IHRob3UgYWxzbyBoYXN0IGxpZnRlZCBtZSB1cCBvbiBoaWdoIGFib3ZlIHRoZW0gdGhhdCByb3NlIHVwIGFnYWluc3QgbWU6IHRob3UgaGFzdCBkZWxpdmVyZWQgbWUgZnJvbSB0aGUgdmlvbGVudCBtYW4uClRoZXJlZm9yZSBJIHdpbGwgZ2l2ZSB0aGFua3MgdW50byB0aGVlLCBPIExPUkQsIGFtb25nIHRoZSBoZWF0aGVuLCBhbmQgSSB3aWxsIHNpbmcgcHJhaXNlcyB1bnRvIHRoeSBuYW1lLgpIZSBpcyB0aGUgdG93ZXIgb2Ygc2FsdmF0aW9uIGZvciBoaXMga2luZzogYW5kIHNoZXdldGggbWVyY3kgdG8gaGlzIGFub2ludGVkLCB1bnRvIERhdmlkLCBhbmQgdG8gaGlzIHNlZWQgZm9yIGV2ZXJtb3JlLgpOb3cgdGhlc2UgYmUgdGhlIGxhc3Qgd29yZHMgb2YgRGF2aWQuIERhdmlkIHRoZSBzb24gb2YgSmVzc2Ugc2FpZCwgYW5kIHRoZSBtYW4gd2hvIHdhcyByYWlzZWQgdXAgb24gaGlnaCwgdGhlIGFub2ludGVkIG9mIHRoZSBHb2Qgb2YgSmFjb2IsIGFuZCB0aGUgc3dlZXQgcHNhbG1pc3Qgb2YgSXNyYWVsLCBzYWlkLApUaGUgU3Bpcml0IG9mIHRoZSBMT1JEIHNwYWtlIGJ5IG1lLCBhbmQgaGlzIHdvcmQgd2FzIGluIG15IHRvbmd1ZS4KVGhlIEdvZCBvZiBJc3JhZWwgc2FpZCwgdGhlIFJvY2sgb2YgSXNyYWVsIHNwYWtlIHRvIG1lLCBIZSB0aGF0IHJ1bGV0aCBvdmVyIG1lbiBtdXN0IGJlIGp1c3QsIHJ1bGluZyBpbiB0aGUgZmVhciBvZiBHb2QuCkFuZCBoZSBzaGFsbCBiZSBhcyB0aGUgbGlnaHQgb2YgdGhlIG1vcm5pbmcsIHdoZW4gdGhlIHN1biByaXNldGgsIGV2ZW4gYSBtb3JuaW5nIHdpdGhvdXQgY2xvdWRzOyBhcyB0aGUgdGVuZGVyIGdyYXNzIHNwcmluZ2luZyBvdXQgb2YgdGhlIGVhcnRoIGJ5IGNsZWFyIHNoaW5pbmcgYWZ0ZXIgcmFpbi4KQWx0aG91Z2ggbXkgaG91c2UgYmUgbm90IHNvIHdpdGggR29kOyB5ZXQgaGUgaGF0aCBtYWRlIHdpdGggbWUgYW4gZXZlcmxhc3RpbmcgY292ZW5hbnQsIG9yZGVyZWQgaW4gYWxsIHRoaW5ncywgYW5kIHN1cmU6IGZvciB0aGlzIGlzIGFsbCBteSBzYWx2YXRpb24sIGFuZCBhbGwgbXkgZGVzaXJlLCBhbHRob3VnaCBoZSBtYWtlIGl0IG5vdCB0byBncm93LgpCdXQgdGhlIHNvbnMgb2YgQmVsaWFsIHNoYWxsIGJlIGFsbCBvZiB0aGVtIGFzIHRob3JucyB0aHJ1c3QgYXdheSwgYmVjYXVzZSB0aGV5IGNhbm5vdCBiZSB0YWtlbiB3aXRoIGhhbmRzOgpCdXQgdGhlIG1hbiB0aGF0IHNoYWxsIHRvdWNoIHRoZW0gbXVzdCBiZSBmZW5jZWQgd2l0aCBpcm9uIGFuZCB0aGUgc3RhZmYgb2YgYSBzcGVhcjsgYW5kIHRoZXkgc2hhbGwgYmUgdXR0ZXJseSBidXJuZWQgd2l0aCBmaXJlIGluIHRoZSBzYW1lIHBsYWNlLgpUaGVzZSBiZSB0aGUgbmFtZXMgb2YgdGhlIG1pZ2h0eSBtZW4gd2hvbSBEYXZpZCBoYWQ6IFRoZSBUYWNobW9uaXRlIHRoYXQgc2F0IGluIHRoZSBzZWF0LCBjaGllZiBhbW9uZyB0aGUgY2FwdGFpbnM7IHRoZSBzYW1lIHdhcyBBZGlubyB0aGUgRXpuaXRlOiBoZSBsaWZ0IHVwIGhpcyBzcGVhciBhZ2FpbnN0IGVpZ2h0IGh1bmRyZWQsIHdob20gaGUgc2xldyBhdCBvbmUgdGltZS4KQW5kIGFmdGVyIGhpbSB3YXMgRWxlYXphciB0aGUgc29uIG9mIERvZG8gdGhlIEFob2hpdGUsIG9uZSBvZiB0aGUgdGhyZWUgbWlnaHR5IG1lbiB3aXRoIERhdmlkLCB3aGVuIHRoZXkgZGVmaWVkIHRoZSBQaGlsaXN0aW5lcyB0aGF0IHdlcmUgdGhlcmUgZ2F0aGVyZWQgdG9nZXRoZXIgdG8gYmF0dGxlLCBhbmQgdGhlIG1lbiBvZiBJc3JhZWwgd2VyZSBnb25lIGF3YXk6CkhlIGFyb3NlLCBhbmQgc21vdGUgdGhlIFBoaWxpc3RpbmVzIHVudGlsIGhpcyBoYW5kIHdhcyB3ZWFyeSwgYW5kIGhpcyBoYW5kIGNsYXZlIHVudG8gdGhlIHN3b3JkOiBhbmQgdGhlIExPUkQgd3JvdWdodCBhIGdyZWF0IHZpY3RvcnkgdGhhdCBkYXk7IGFuZCB0aGUgcGVvcGxlIHJldHVybmVkIGFmdGVyIGhpbSBvbmx5IHRvIHNwb2lsLgpBbmQgYWZ0ZXIgaGltIHdhcyBTaGFtbWFoIHRoZSBzb24gb2YgQWdlZSB0aGUgSGFyYXJpdGUuIEFuZCB0aGUgUGhpbGlzdGluZXMgd2VyZSBnYXRoZXJlZCB0b2dldGhlciBpbnRvIGEgdHJvb3AsIHdoZXJlIHdhcyBhIHBpZWNlIG9mIGdyb3VuZCBmdWxsIG9mIGxlbnRpbGVzOiBhbmQgdGhlIHBlb3BsZSBmbGVkIGZyb20gdGhlIFBoaWxpc3RpbmVzLgpCdXQgaGUgc3Rvb2QgaW4gdGhlIG1pZHN0IG9mIHRoZSBncm91bmQsIGFuZCBkZWZlbmRlZCBpdCwgYW5kIHNsZXcgdGhlIFBoaWxpc3RpbmVzOiBhbmQgdGhlIExPUkQgd3JvdWdodCBhIGdyZWF0IHZpY3RvcnkuCkFuZCB0aHJlZSBvZiB0aGUgdGhpcnR5IGNoaWVmIHdlbnQgZG93biwgYW5kIGNhbWUgdG8gRGF2aWQgaW4gdGhlIGhhcnZlc3QgdGltZSB1bnRvIHRoZSBjYXZlIG9mIEFkdWxsYW06IGFuZCB0aGUgdHJvb3Agb2YgdGhlIFBoaWxpc3RpbmVzIHBpdGNoZWQgaW4gdGhlIHZhbGxleSBvZiBSZXBoYWltLgpBbmQgRGF2aWQgd2FzIHRoZW4gaW4gYW4gaG9sZCwgYW5kIHRoZSBnYXJyaXNvbiBvZiB0aGUgUGhpbGlzdGluZXMgd2FzIHRoZW4gaW4gQmV0aGxlaGVtLgpBbmQgRGF2aWQgbG9uZ2VkLCBhbmQgc2FpZCwgT2ggdGhhdCBvbmUgd291bGQgZ2l2ZSBtZSBkcmluayBvZiB0aGUgd2F0ZXIgb2YgdGhlIHdlbGwgb2YgQmV0aGxlaGVtLCB3aGljaCBpcyBieSB0aGUgZ2F0ZSEKQW5kIHRoZSB0aHJlZSBtaWdodHkgbWVuIGJyYWtlIHRocm91Z2ggdGhlIGhvc3Qgb2YgdGhlIFBoaWxpc3RpbmVzLCBhbmQgZHJldyB3YXRlciBvdXQgb2YgdGhlIHdlbGwgb2YgQmV0aGxlaGVtLCB0aGF0IHdhcyBieSB0aGUgZ2F0ZSwgYW5kIHRvb2sgaXQsIGFuZCBicm91Z2h0IGl0IHRvIERhdmlkOiBuZXZlcnRoZWxlc3MgaGUgd291bGQgbm90IGRyaW5rIHRoZXJlb2YsIGJ1dCBwb3VyZWQgaXQgb3V0IHVudG8gdGhlIExPUkQuCkFuZCBoZSBzYWlkLCBCZSBpdCBmYXIgZnJvbSBtZSwgTyBMT1JELCB0aGF0IEkgc2hvdWxkIGRvIHRoaXM6IGlzIG5vdCB0aGlzIHRoZSBibG9vZCBvZiB0aGUgbWVuIHRoYXQgd2VudCBpbiBqZW9wYXJkeSBvZiB0aGVpciBsaXZlcz8gdGhlcmVmb3JlIGhlIHdvdWxkIG5vdCBkcmluayBpdC4gVGhlc2UgdGhpbmdzIGRpZCB0aGVzZSB0aHJlZSBtaWdodHkgbWVuLgpBbmQgQWJpc2hhaSwgdGhlIGJyb3RoZXIgb2YgSm9hYiwgdGhlIHNvbiBvZiBaZXJ1aWFoLCB3YXMgY2hpZWYgYW1vbmcgdGhyZWUuIEFuZCBoZSBsaWZ0ZWQgdXAgaGlzIHNwZWFyIGFnYWluc3QgdGhyZWUgaHVuZHJlZCwgYW5kIHNsZXcgdGhlbSwgYW5kIGhhZCB0aGUgbmFtZSBhbW9uZyB0aHJlZS4KV2FzIGhlIG5vdCBtb3N0IGhvbm91cmFibGUgb2YgdGhyZWU/IHRoZXJlZm9yZSBoZSB3YXMgdGhlaXIgY2FwdGFpbjogaG93YmVpdCBoZSBhdHRhaW5lZCBub3QgdW50byB0aGUgZmlyc3QgdGhyZWUuCkFuZCBCZW5haWFoIHRoZSBzb24gb2YgSmVob2lhZGEsIHRoZSBzb24gb2YgYSB2YWxpYW50IG1hbiwgb2YgS2FiemVlbCwgd2hvIGhhZCBkb25lIG1hbnkgYWN0cywgaGUgc2xldyB0d28gbGlvbmxpa2UgbWVuIG9mIE1vYWI6IGhlIHdlbnQgZG93biBhbHNvIGFuZCBzbGV3IGEgbGlvbiBpbiB0aGUgbWlkc3Qgb2YgYSBwaXQgaW4gdGltZSBvZiBzbm93OgpBbmQgaGUgc2xldyBhbiBFZ3lwdGlhbiwgYSBnb29kbHkgbWFuOiBhbmQgdGhlIEVneXB0aWFuIGhhZCBhIHNwZWFyIGluIGhpcyBoYW5kOyBidXQgaGUgd2VudCBkb3duIHRvIGhpbSB3aXRoIGEgc3RhZmYsIGFuZCBwbHVja2VkIHRoZSBzcGVhciBvdXQgb2YgdGhlIEVneXB0aWFuJ3MgaGFuZCwgYW5kIHNsZXcgaGltIHdpdGggaGlzIG93biBzcGVhci4KVGhlc2UgdGhpbmdzIGRpZCBCZW5haWFoIHRoZSBzb24gb2YgSmVob2lhZGEsIGFuZCBoYWQgdGhlIG5hbWUgYW1vbmcgdGhyZWUgbWlnaHR5IG1lbi4KSGUgd2FzIG1vcmUgaG9ub3VyYWJsZSB0aGFuIHRoZSB0aGlydHksIGJ1dCBoZSBhdHRhaW5lZCBub3QgdG8gdGhlIGZpcnN0IHRocmVlLiBBbmQgRGF2aWQgc2V0IGhpbSBvdmVyIGhpcyBndWFyZC4KQXNhaGVsIHRoZSBicm90aGVyIG9mIEpvYWIgd2FzIG9uZSBvZiB0aGUgdGhpcnR5OyBFbGhhbmFuIHRoZSBzb24gb2YgRG9kbyBvZiBCZXRobGVoZW0sClNoYW1tYWggdGhlIEhhcm9kaXRlLCBFbGlrYSB0aGUgSGFyb2RpdGUsCkhlbGV6IHRoZSBQYWx0aXRlLCBJcmEgdGhlIHNvbiBvZiBJa2tlc2ggdGhlIFRla29pdGUsCkFiaWV6ZXIgdGhlIEFuZXRob3RoaXRlLCBNZWJ1bm5haSB0aGUgSHVzaGF0aGl0ZSwKWmFsbW9uIHRoZSBBaG9oaXRlLCBNYWhhcmFpIHRoZSBOZXRvcGhhdGhpdGUsCkhlbGViIHRoZSBzb24gb2YgQmFhbmFoLCBhIE5ldG9waGF0aGl0ZSwgSXR0YWkgdGhlIHNvbiBvZiBSaWJhaSBvdXQgb2YgR2liZWFoIG9mIHRoZSBjaGlsZHJlbiBvZiBCZW5qYW1pbiwKQmVuYWlhaCB0aGUgUGlyYXRob25pdGUsIEhpZGRhaSBvZiB0aGUgYnJvb2tzIG9mIEdhYXNoLApBYmlhbGJvbiB0aGUgQXJiYXRoaXRlLCBBem1hdmV0aCB0aGUgQmFyaHVtaXRlLApFbGlhaGJhIHRoZSBTaGFhbGJvbml0ZSwgb2YgdGhlIHNvbnMgb2YgSmFzaGVuLCBKb25hdGhhbiwKU2hhbW1haCB0aGUgSGFyYXJpdGUsIEFoaWFtIHRoZSBzb24gb2YgU2hhcmFyIHRoZSBIYXJhcml0ZSwKRWxpcGhlbGV0IHRoZSBzb24gb2YgQWhhc2JhaSwgdGhlIHNvbiBvZiB0aGUgTWFhY2hhdGhpdGUsIEVsaWFtIHRoZSBzb24gb2YgQWhpdGhvcGhlbCB0aGUgR2lsb25pdGUsCkhlenJhaSB0aGUgQ2FybWVsaXRlLCBQYWFyYWkgdGhlIEFyYml0ZSwKSWdhbCB0aGUgc29uIG9mIE5hdGhhbiBvZiBab2JhaCwgQmFuaSB0aGUgR2FkaXRlLApaZWxlayB0aGUgQW1tb25pdGUsIE5haGFyaSB0aGUgQmVlcm90aGl0ZSwgYXJtb3VyYmVhcmVyIHRvIEpvYWIgdGhlIHNvbiBvZiBaZXJ1aWFoLApJcmEgYW4gSXRocml0ZSwgR2FyZWIgYW4gSXRocml0ZSwKVXJpYWggdGhlIEhpdHRpdGU6IHRoaXJ0eSBhbmQgc2V2ZW4gaW4gYWxsLgpBbmQgYWdhaW4gdGhlIGFuZ2VyIG9mIHRoZSBMT1JEIHdhcyBraW5kbGVkIGFnYWluc3QgSXNyYWVsLCBhbmQgaGUgbW92ZWQgRGF2aWQgYWdhaW5zdCB0aGVtIHRvIHNheSwgR28sIG51bWJlciBJc3JhZWwgYW5kIEp1ZGFoLgpGb3IgdGhlIGtpbmcgc2FpZCB0byBKb2FiIHRoZSBjYXB0YWluIG9mIHRoZSBob3N0LCB3aGljaCB3YXMgd2l0aCBoaW0sIEdvIG5vdyB0aHJvdWdoIGFsbCB0aGUgdHJpYmVzIG9mIElzcmFlbCwgZnJvbSBEYW4gZXZlbiB0byBCZWVyc2hlYmEsIGFuZCBudW1iZXIgeWUgdGhlIHBlb3BsZSwgdGhhdCBJIG1heSBrbm93IHRoZSBudW1iZXIgb2YgdGhlIHBlb3BsZS4KQW5kIEpvYWIgc2FpZCB1bnRvIHRoZSBraW5nLCBOb3cgdGhlIExPUkQgdGh5IEdvZCBhZGQgdW50byB0aGUgcGVvcGxlLCBob3cgbWFueSBzb2V2ZXIgdGhleSBiZSwgYW4gaHVuZHJlZGZvbGQsIGFuZCB0aGF0IHRoZSBleWVzIG9mIG15IGxvcmQgdGhlIGtpbmcgbWF5IHNlZSBpdDogYnV0IHdoeSBkb3RoIG15IGxvcmQgdGhlIGtpbmcgZGVsaWdodCBpbiB0aGlzIHRoaW5nPwpOb3R3aXRoc3RhbmRpbmcgdGhlIGtpbmcncyB3b3JkIHByZXZhaWxlZCBhZ2FpbnN0IEpvYWIsIGFuZCBhZ2FpbnN0IHRoZSBjYXB0YWlucyBvZiB0aGUgaG9zdC4gQW5kIEpvYWIgYW5kIHRoZSBjYXB0YWlucyBvZiB0aGUgaG9zdCB3ZW50IG91dCBmcm9tIHRoZSBwcmVzZW5jZSBvZiB0aGUga2luZywgdG8gbnVtYmVyIHRoZSBwZW9wbGUgb2YgSXNyYWVsLgpBbmQgdGhleSBwYXNzZWQgb3ZlciBKb3JkYW4sIGFuZCBwaXRjaGVkIGluIEFyb2VyLCBvbiB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgY2l0eSB0aGF0IGxpZXRoIGluIHRoZSBtaWRzdCBvZiB0aGUgcml2ZXIgb2YgR2FkLCBhbmQgdG93YXJkIEphemVyOgpUaGVuIHRoZXkgY2FtZSB0byBHaWxlYWQsIGFuZCB0byB0aGUgbGFuZCBvZiBUYWh0aW1ob2RzaGk7IGFuZCB0aGV5IGNhbWUgdG8gRGFuamFhbiwgYW5kIGFib3V0IHRvIFppZG9uLApBbmQgY2FtZSB0byB0aGUgc3Ryb25nIGhvbGQgb2YgVHlyZSwgYW5kIHRvIGFsbCB0aGUgY2l0aWVzIG9mIHRoZSBIaXZpdGVzLCBhbmQgb2YgdGhlIENhbmFhbml0ZXM6IGFuZCB0aGV5IHdlbnQgb3V0IHRvIHRoZSBzb3V0aCBvZiBKdWRhaCwgZXZlbiB0byBCZWVyc2hlYmEuClNvIHdoZW4gdGhleSBoYWQgZ29uZSB0aHJvdWdoIGFsbCB0aGUgbGFuZCwgdGhleSBjYW1lIHRvIEplcnVzYWxlbSBhdCB0aGUgZW5kIG9mIG5pbmUgbW9udGhzIGFuZCB0d2VudHkgZGF5cy4KQW5kIEpvYWIgZ2F2ZSB1cCB0aGUgc3VtIG9mIHRoZSBudW1iZXIgb2YgdGhlIHBlb3BsZSB1bnRvIHRoZSBraW5nOiBhbmQgdGhlcmUgd2VyZSBpbiBJc3JhZWwgZWlnaHQgaHVuZHJlZCB0aG91c2FuZCB2YWxpYW50IG1lbiB0aGF0IGRyZXcgdGhlIHN3b3JkOyBhbmQgdGhlIG1lbiBvZiBKdWRhaCB3ZXJlIGZpdmUgaHVuZHJlZCB0aG91c2FuZCBtZW4uCkFuZCBEYXZpZCdzIGhlYXJ0IHNtb3RlIGhpbSBhZnRlciB0aGF0IGhlIGhhZCBudW1iZXJlZCB0aGUgcGVvcGxlLiBBbmQgRGF2aWQgc2FpZCB1bnRvIHRoZSBMT1JELCBJIGhhdmUgc2lubmVkIGdyZWF0bHkgaW4gdGhhdCBJIGhhdmUgZG9uZTogYW5kIG5vdywgSSBiZXNlZWNoIHRoZWUsIE8gTE9SRCwgdGFrZSBhd2F5IHRoZSBpbmlxdWl0eSBvZiB0aHkgc2VydmFudDsgZm9yIEkgaGF2ZSBkb25lIHZlcnkgZm9vbGlzaGx5LgpGb3Igd2hlbiBEYXZpZCB3YXMgdXAgaW4gdGhlIG1vcm5pbmcsIHRoZSB3b3JkIG9mIHRoZSBMT1JEIGNhbWUgdW50byB0aGUgcHJvcGhldCBHYWQsIERhdmlkJ3Mgc2Vlciwgc2F5aW5nLApHbyBhbmQgc2F5IHVudG8gRGF2aWQsIFRodXMgc2FpdGggdGhlIExPUkQsIEkgb2ZmZXIgdGhlZSB0aHJlZSB0aGluZ3M7IGNob29zZSB0aGVlIG9uZSBvZiB0aGVtLCB0aGF0IEkgbWF5IGRvIGl0IHVudG8gdGhlZS4KU28gR2FkIGNhbWUgdG8gRGF2aWQsIGFuZCB0b2xkIGhpbSwgYW5kIHNhaWQgdW50byBoaW0sIFNoYWxsIHNldmVuIHllYXJzIG9mIGZhbWluZSBjb21lIHVudG8gdGhlZSBpbiB0aHkgbGFuZD8gb3Igd2lsdCB0aG91IGZsZWUgdGhyZWUgbW9udGhzIGJlZm9yZSB0aGluZSBlbmVtaWVzLCB3aGlsZSB0aGV5IHB1cnN1ZSB0aGVlPyBvciB0aGF0IHRoZXJlIGJlIHRocmVlIGRheXMnIHBlc3RpbGVuY2UgaW4gdGh5IGxhbmQ/IG5vdyBhZHZpc2UsIGFuZCBzZWUgd2hhdCBhbnN3ZXIgSSBzaGFsbCByZXR1cm4gdG8gaGltIHRoYXQgc2VudCBtZS4KQW5kIERhdmlkIHNhaWQgdW50byBHYWQsIEkgYW0gaW4gYSBncmVhdCBzdHJhaXQ6IGxldCB1cyBmYWxsIG5vdyBpbnRvIHRoZSBoYW5kIG9mIHRoZSBMT1JEOyBmb3IgaGlzIG1lcmNpZXMgYXJlIGdyZWF0OiBhbmQgbGV0IG1lIG5vdCBmYWxsIGludG8gdGhlIGhhbmQgb2YgbWFuLgpTbyB0aGUgTE9SRCBzZW50IGEgcGVzdGlsZW5jZSB1cG9uIElzcmFlbCBmcm9tIHRoZSBtb3JuaW5nIGV2ZW4gdG8gdGhlIHRpbWUgYXBwb2ludGVkOiBhbmQgdGhlcmUgZGllZCBvZiB0aGUgcGVvcGxlIGZyb20gRGFuIGV2ZW4gdG8gQmVlcnNoZWJhIHNldmVudHkgdGhvdXNhbmQgbWVuLgpBbmQgd2hlbiB0aGUgYW5nZWwgc3RyZXRjaGVkIG91dCBoaXMgaGFuZCB1cG9uIEplcnVzYWxlbSB0byBkZXN0cm95IGl0LCB0aGUgTE9SRCByZXBlbnRlZCBoaW0gb2YgdGhlIGV2aWwsIGFuZCBzYWlkIHRvIHRoZSBhbmdlbCB0aGF0IGRlc3Ryb3llZCB0aGUgcGVvcGxlLCBJdCBpcyBlbm91Z2g6IHN0YXkgbm93IHRoaW5lIGhhbmQuIEFuZCB0aGUgYW5nZWwgb2YgdGhlIExPUkQgd2FzIGJ5IHRoZSB0aHJlc2hpbmdwbGFjZSBvZiBBcmF1bmFoIHRoZSBKZWJ1c2l0ZS4KQW5kIERhdmlkIHNwYWtlIHVudG8gdGhlIExPUkQgd2hlbiBoZSBzYXcgdGhlIGFuZ2VsIHRoYXQgc21vdGUgdGhlIHBlb3BsZSwgYW5kIHNhaWQsIExvLCBJIGhhdmUgc2lubmVkLCBhbmQgSSBoYXZlIGRvbmUgd2lja2VkbHk6IGJ1dCB0aGVzZSBzaGVlcCwgd2hhdCBoYXZlIHRoZXkgZG9uZT8gbGV0IHRoaW5lIGhhbmQsIEkgcHJheSB0aGVlLCBiZSBhZ2FpbnN0IG1lLCBhbmQgYWdhaW5zdCBteSBmYXRoZXIncyBob3VzZS4KQW5kIEdhZCBjYW1lIHRoYXQgZGF5IHRvIERhdmlkLCBhbmQgc2FpZCB1bnRvIGhpbSwgR28gdXAsIHJlYXIgYW4gYWx0YXIgdW50byB0aGUgTE9SRCBpbiB0aGUgdGhyZXNoaW5nZmxvb3Igb2YgQXJhdW5haCB0aGUgSmVidXNpdGUuCkFuZCBEYXZpZCwgYWNjb3JkaW5nIHRvIHRoZSBzYXlpbmcgb2YgR2FkLCB3ZW50IHVwIGFzIHRoZSBMT1JEIGNvbW1hbmRlZC4KQW5kIEFyYXVuYWggbG9va2VkLCBhbmQgc2F3IHRoZSBraW5nIGFuZCBoaXMgc2VydmFudHMgY29taW5nIG9uIHRvd2FyZCBoaW06IGFuZCBBcmF1bmFoIHdlbnQgb3V0LCBhbmQgYm93ZWQgaGltc2VsZiBiZWZvcmUgdGhlIGtpbmcgb24gaGlzIGZhY2UgdXBvbiB0aGUgZ3JvdW5kLgpBbmQgQXJhdW5haCBzYWlkLCBXaGVyZWZvcmUgaXMgbXkgbG9yZCB0aGUga2luZyBjb21lIHRvIGhpcyBzZXJ2YW50PyBBbmQgRGF2aWQgc2FpZCwgVG8gYnV5IHRoZSB0aHJlc2hpbmdmbG9vciBvZiB0aGVlLCB0byBidWlsZCBhbiBhbHRhciB1bnRvIHRoZSBMT1JELCB0aGF0IHRoZSBwbGFndWUgbWF5IGJlIHN0YXllZCBmcm9tIHRoZSBwZW9wbGUuCkFuZCBBcmF1bmFoIHNhaWQgdW50byBEYXZpZCwgTGV0IG15IGxvcmQgdGhlIGtpbmcgdGFrZSBhbmQgb2ZmZXIgdXAgd2hhdCBzZWVtZXRoIGdvb2QgdW50byBoaW06IGJlaG9sZCwgaGVyZSBiZSBveGVuIGZvciBidXJudCBzYWNyaWZpY2UsIGFuZCB0aHJlc2hpbmcgaW5zdHJ1bWVudHMgYW5kIG90aGVyIGluc3RydW1lbnRzIG9mIHRoZSBveGVuIGZvciB3b29kLgpBbGwgdGhlc2UgdGhpbmdzIGRpZCBBcmF1bmFoLCBhcyBhIGtpbmcsIGdpdmUgdW50byB0aGUga2luZy4gQW5kIEFyYXVuYWggc2FpZCB1bnRvIHRoZSBraW5nLCBUaGUgTE9SRCB0aHkgR29kIGFjY2VwdCB0aGVlLgpBbmQgdGhlIGtpbmcgc2FpZCB1bnRvIEFyYXVuYWgsIE5heTsgYnV0IEkgd2lsbCBzdXJlbHkgYnV5IGl0IG9mIHRoZWUgYXQgYSBwcmljZTogbmVpdGhlciB3aWxsIEkgb2ZmZXIgYnVybnQgb2ZmZXJpbmdzIHVudG8gdGhlIExPUkQgbXkgR29kIG9mIHRoYXQgd2hpY2ggZG90aCBjb3N0IG1lIG5vdGhpbmcuIFNvIERhdmlkIGJvdWdodCB0aGUgdGhyZXNoaW5nZmxvb3IgYW5kIHRoZSBveGVuIGZvciBmaWZ0eSBzaGVrZWxzIG9mIHNpbHZlci4KQW5kIERhdmlkIGJ1aWx0IHRoZXJlIGFuIGFsdGFyIHVudG8gdGhlIExPUkQsIGFuZCBvZmZlcmVkIGJ1cm50IG9mZmVyaW5ncyBhbmQgcGVhY2Ugb2ZmZXJpbmdzLiBTbyB0aGUgTE9SRCB3YXMgaW50cmVhdGVkIGZvciB0aGUgbGFuZCwgYW5kIHRoZSBwbGFndWUgd2FzIHN0YXllZCBmcm9tIElzcmFlbC4KTm93IGtpbmcgRGF2aWQgd2FzIG9sZCBhbmQgc3RyaWNrZW4gaW4geWVhcnM7IGFuZCB0aGV5IGNvdmVyZWQgaGltIHdpdGggY2xvdGhlcywgYnV0IGhlIGdhdCBubyBoZWF0LgpXaGVyZWZvcmUgaGlzIHNlcnZhbnRzIHNhaWQgdW50byBoaW0sIExldCB0aGVyZSBiZSBzb3VnaHQgZm9yIG15IGxvcmQgdGhlIGtpbmcgYSB5b3VuZyB2aXJnaW46IGFuZCBsZXQgaGVyIHN0YW5kIGJlZm9yZSB0aGUga2luZywgYW5kIGxldCBoZXIgY2hlcmlzaCBoaW0sIGFuZCBsZXQgaGVyIGxpZSBpbiB0aHkgYm9zb20sIHRoYXQgbXkgbG9yZCB0aGUga2luZyBtYXkgZ2V0IGhlYXQuClNvIHRoZXkgc291Z2h0IGZvciBhIGZhaXIgZGFtc2VsIHRocm91Z2hvdXQgYWxsIHRoZSBjb2FzdHMgb2YgSXNyYWVsLCBhbmQgZm91bmQgQWJpc2hhZyBhIFNodW5hbW1pdGUsIGFuZCBicm91Z2h0IGhlciB0byB0aGUga2luZy4KQW5kIHRoZSBkYW1zZWwgd2FzIHZlcnkgZmFpciwgYW5kIGNoZXJpc2hlZCB0aGUga2luZywgYW5kIG1pbmlzdGVyZWQgdG8gaGltOiBidXQgdGhlIGtpbmcga25ldyBoZXIgbm90LgpUaGVuIEFkb25pamFoIHRoZSBzb24gb2YgSGFnZ2l0aCBleGFsdGVkIGhpbXNlbGYsIHNheWluZywgSSB3aWxsIGJlIGtpbmc6IGFuZCBoZSBwcmVwYXJlZCBoaW0gY2hhcmlvdHMgYW5kIGhvcnNlbWVuLCBhbmQgZmlmdHkgbWVuIHRvIHJ1biBiZWZvcmUgaGltLgpBbmQgaGlzIGZhdGhlciBoYWQgbm90IGRpc3BsZWFzZWQgaGltIGF0IGFueSB0aW1lIGluIHNheWluZywgV2h5IGhhc3QgdGhvdSBkb25lIHNvPyBhbmQgaGUgYWxzbyB3YXMgYSB2ZXJ5IGdvb2RseSBtYW47IGFuZCBoaXMgbW90aGVyIGJhcmUgaGltIGFmdGVyIEFic2Fsb20uCkFuZCBoZSBjb25mZXJyZWQgd2l0aCBKb2FiIHRoZSBzb24gb2YgWmVydWlhaCwgYW5kIHdpdGggQWJpYXRoYXIgdGhlIHByaWVzdDogYW5kIHRoZXkgZm9sbG93aW5nIEFkb25pamFoIGhlbHBlZCBoaW0uCkJ1dCBaYWRvayB0aGUgcHJpZXN0LCBhbmQgQmVuYWlhaCB0aGUgc29uIG9mIEplaG9pYWRhLCBhbmQgTmF0aGFuIHRoZSBwcm9waGV0LCBhbmQgU2hpbWVpLCBhbmQgUmVpLCBhbmQgdGhlIG1pZ2h0eSBtZW4gd2hpY2ggYmVsb25nZWQgdG8gRGF2aWQsIHdlcmUgbm90IHdpdGggQWRvbmlqYWguCkFuZCBBZG9uaWphaCBzbGV3IHNoZWVwIGFuZCBveGVuIGFuZCBmYXQgY2F0dGxlIGJ5IHRoZSBzdG9uZSBvZiBab2hlbGV0aCwgd2hpY2ggaXMgYnkgRW5yb2dlbCwgYW5kIGNhbGxlZCBhbGwgaGlzIGJyZXRocmVuIHRoZSBraW5nJ3Mgc29ucywgYW5kIGFsbCB0aGUgbWVuIG9mIEp1ZGFoIHRoZSBraW5nJ3Mgc2VydmFudHM6CkJ1dCBOYXRoYW4gdGhlIHByb3BoZXQsIGFuZCBCZW5haWFoLCBhbmQgdGhlIG1pZ2h0eSBtZW4sIGFuZCBTb2xvbW9uIGhpcyBicm90aGVyLCBoZSBjYWxsZWQgbm90LgpXaGVyZWZvcmUgTmF0aGFuIHNwYWtlIHVudG8gQmF0aHNoZWJhIHRoZSBtb3RoZXIgb2YgU29sb21vbiwgc2F5aW5nLCBIYXN0IHRob3Ugbm90IGhlYXJkIHRoYXQgQWRvbmlqYWggdGhlIHNvbiBvZiBIYWdnaXRoIGRvdGggcmVpZ24sIGFuZCBEYXZpZCBvdXIgbG9yZCBrbm93ZXRoIGl0IG5vdD8KTm93IHRoZXJlZm9yZSBjb21lLCBsZXQgbWUsIEkgcHJheSB0aGVlLCBnaXZlIHRoZWUgY291bnNlbCwgdGhhdCB0aG91IG1heWVzdCBzYXZlIHRoaW5lIG93biBsaWZlLCBhbmQgdGhlIGxpZmUgb2YgdGh5IHNvbiBTb2xvbW9uLgpHbyBhbmQgZ2V0IHRoZWUgaW4gdW50byBraW5nIERhdmlkLCBhbmQgc2F5IHVudG8gaGltLCBEaWRzdCBub3QgdGhvdSwgbXkgbG9yZCwgTyBraW5nLCBzd2VhciB1bnRvIHRoaW5lIGhhbmRtYWlkLCBzYXlpbmcsIEFzc3VyZWRseSBTb2xvbW9uIHRoeSBzb24gc2hhbGwgcmVpZ24gYWZ0ZXIgbWUsIGFuZCBoZSBzaGFsbCBzaXQgdXBvbiBteSB0aHJvbmU/IHdoeSB0aGVuIGRvdGggQWRvbmlqYWggcmVpZ24/CkJlaG9sZCwgd2hpbGUgdGhvdSB5ZXQgdGFsa2VzdCB0aGVyZSB3aXRoIHRoZSBraW5nLCBJIGFsc28gd2lsbCBjb21lIGluIGFmdGVyIHRoZWUsIGFuZCBjb25maXJtIHRoeSB3b3Jkcy4KQW5kIEJhdGhzaGViYSB3ZW50IGluIHVudG8gdGhlIGtpbmcgaW50byB0aGUgY2hhbWJlcjogYW5kIHRoZSBraW5nIHdhcyB2ZXJ5IG9sZDsgYW5kIEFiaXNoYWcgdGhlIFNodW5hbW1pdGUgbWluaXN0ZXJlZCB1bnRvIHRoZSBraW5nLgpBbmQgQmF0aHNoZWJhIGJvd2VkLCBhbmQgZGlkIG9iZWlzYW5jZSB1bnRvIHRoZSBraW5nLiBBbmQgdGhlIGtpbmcgc2FpZCwgV2hhdCB3b3VsZGVzdCB0aG91PwpBbmQgc2hlIHNhaWQgdW50byBoaW0sIE15IGxvcmQsIHRob3Ugc3dhcmVzdCBieSB0aGUgTE9SRCB0aHkgR29kIHVudG8gdGhpbmUgaGFuZG1haWQsIHNheWluZywgQXNzdXJlZGx5IFNvbG9tb24gdGh5IHNvbiBzaGFsbCByZWlnbiBhZnRlciBtZSwgYW5kIGhlIHNoYWxsIHNpdCB1cG9uIG15IHRocm9uZS4KQW5kIG5vdywgYmVob2xkLCBBZG9uaWphaCByZWlnbmV0aDsgYW5kIG5vdywgbXkgbG9yZCB0aGUga2luZywgdGhvdSBrbm93ZXN0IGl0IG5vdDoKQW5kIGhlIGhhdGggc2xhaW4gb3hlbiBhbmQgZmF0IGNhdHRsZSBhbmQgc2hlZXAgaW4gYWJ1bmRhbmNlLCBhbmQgaGF0aCBjYWxsZWQgYWxsIHRoZSBzb25zIG9mIHRoZSBraW5nLCBhbmQgQWJpYXRoYXIgdGhlIHByaWVzdCwgYW5kIEpvYWIgdGhlIGNhcHRhaW4gb2YgdGhlIGhvc3Q6IGJ1dCBTb2xvbW9uIHRoeSBzZXJ2YW50IGhhdGggaGUgbm90IGNhbGxlZC4KQW5kIHRob3UsIG15IGxvcmQsIE8ga2luZywgdGhlIGV5ZXMgb2YgYWxsIElzcmFlbCBhcmUgdXBvbiB0aGVlLCB0aGF0IHRob3Ugc2hvdWxkZXN0IHRlbGwgdGhlbSB3aG8gc2hhbGwgc2l0IG9uIHRoZSB0aHJvbmUgb2YgbXkgbG9yZCB0aGUga2luZyBhZnRlciBoaW0uCk90aGVyd2lzZSBpdCBzaGFsbCBjb21lIHRvIHBhc3MsIHdoZW4gbXkgbG9yZCB0aGUga2luZyBzaGFsbCBzbGVlcCB3aXRoIGhpcyBmYXRoZXJzLCB0aGF0IEkgYW5kIG15IHNvbiBTb2xvbW9uIHNoYWxsIGJlIGNvdW50ZWQgb2ZmZW5kZXJzLgpBbmQsIGxvLCB3aGlsZSBzaGUgeWV0IHRhbGtlZCB3aXRoIHRoZSBraW5nLCBOYXRoYW4gdGhlIHByb3BoZXQgYWxzbyBjYW1lIGluLgpBbmQgdGhleSB0b2xkIHRoZSBraW5nLCBzYXlpbmcsIEJlaG9sZCBOYXRoYW4gdGhlIHByb3BoZXQuIEFuZCB3aGVuIGhlIHdhcyBjb21lIGluIGJlZm9yZSB0aGUga2luZywgaGUgYm93ZWQgaGltc2VsZiBiZWZvcmUgdGhlIGtpbmcgd2l0aCBoaXMgZmFjZSB0byB0aGUgZ3JvdW5kLgpBbmQgTmF0aGFuIHNhaWQsIE15IGxvcmQsIE8ga2luZywgaGFzdCB0aG91IHNhaWQsIEFkb25pamFoIHNoYWxsIHJlaWduIGFmdGVyIG1lLCBhbmQgaGUgc2hhbGwgc2l0IHVwb24gbXkgdGhyb25lPwpGb3IgaGUgaXMgZ29uZSBkb3duIHRoaXMgZGF5LCBhbmQgaGF0aCBzbGFpbiBveGVuIGFuZCBmYXQgY2F0dGxlIGFuZCBzaGVlcCBpbiBhYnVuZGFuY2UsIGFuZCBoYXRoIGNhbGxlZCBhbGwgdGhlIGtpbmcncyBzb25zLCBhbmQgdGhlIGNhcHRhaW5zIG9mIHRoZSBob3N0LCBhbmQgQWJpYXRoYXIgdGhlIHByaWVzdDsgYW5kLCBiZWhvbGQsIHRoZXkgZWF0IGFuZCBkcmluayBiZWZvcmUgaGltLCBhbmQgc2F5LCBHb2Qgc2F2ZSBraW5nIEFkb25pamFoLgpCdXQgbWUsIGV2ZW4gbWUgdGh5IHNlcnZhbnQsIGFuZCBaYWRvayB0aGUgcHJpZXN0LCBhbmQgQmVuYWlhaCB0aGUgc29uIG9mIEplaG9pYWRhLCBhbmQgdGh5IHNlcnZhbnQgU29sb21vbiwgaGF0aCBoZSBub3QgY2FsbGVkLgpJcyB0aGlzIHRoaW5nIGRvbmUgYnkgbXkgbG9yZCB0aGUga2luZywgYW5kIHRob3UgaGFzdCBub3Qgc2hld2VkIGl0IHVudG8gdGh5IHNlcnZhbnQsIHdobyBzaG91bGQgc2l0IG9uIHRoZSB0aHJvbmUgb2YgbXkgbG9yZCB0aGUga2luZyBhZnRlciBoaW0/ClRoZW4ga2luZyBEYXZpZCBhbnN3ZXJlZCBhbmQgc2FpZCwgQ2FsbCBtZSBCYXRoc2hlYmEuIEFuZCBzaGUgY2FtZSBpbnRvIHRoZSBraW5nJ3MgcHJlc2VuY2UsIGFuZCBzdG9vZCBiZWZvcmUgdGhlIGtpbmcuCkFuZCB0aGUga2luZyBzd2FyZSwgYW5kIHNhaWQsIEFzIHRoZSBMT1JEIGxpdmV0aCwgdGhhdCBoYXRoIHJlZGVlbWVkIG15IHNvdWwgb3V0IG9mIGFsbCBkaXN0cmVzcywKRXZlbiBhcyBJIHN3YXJlIHVudG8gdGhlZSBieSB0aGUgTE9SRCBHb2Qgb2YgSXNyYWVsLCBzYXlpbmcsIEFzc3VyZWRseSBTb2xvbW9uIHRoeSBzb24gc2hhbGwgcmVpZ24gYWZ0ZXIgbWUsIGFuZCBoZSBzaGFsbCBzaXQgdXBvbiBteSB0aHJvbmUgaW4gbXkgc3RlYWQ7IGV2ZW4gc28gd2lsbCBJIGNlcnRhaW5seSBkbyB0aGlzIGRheS4KVGhlbiBCYXRoc2hlYmEgYm93ZWQgd2l0aCBoZXIgZmFjZSB0byB0aGUgZWFydGgsIGFuZCBkaWQgcmV2ZXJlbmNlIHRvIHRoZSBraW5nLCBhbmQgc2FpZCwgTGV0IG15IGxvcmQga2luZyBEYXZpZCBsaXZlIGZvciBldmVyLgpBbmQga2luZyBEYXZpZCBzYWlkLCBDYWxsIG1lIFphZG9rIHRoZSBwcmllc3QsIGFuZCBOYXRoYW4gdGhlIHByb3BoZXQsIGFuZCBCZW5haWFoIHRoZSBzb24gb2YgSmVob2lhZGEuIEFuZCB0aGV5IGNhbWUgYmVmb3JlIHRoZSBraW5nLgpUaGUga2luZyBhbHNvIHNhaWQgdW50byB0aGVtLCBUYWtlIHdpdGggeW91IHRoZSBzZXJ2YW50cyBvZiB5b3VyIGxvcmQsIGFuZCBjYXVzZSBTb2xvbW9uIG15IHNvbiB0byByaWRlIHVwb24gbWluZSBvd24gbXVsZSwgYW5kIGJyaW5nIGhpbSBkb3duIHRvIEdpaG9uOgpBbmQgbGV0IFphZG9rIHRoZSBwcmllc3QgYW5kIE5hdGhhbiB0aGUgcHJvcGhldCBhbm9pbnQgaGltIHRoZXJlIGtpbmcgb3ZlciBJc3JhZWw6IGFuZCBibG93IHllIHdpdGggdGhlIHRydW1wZXQsIGFuZCBzYXksIEdvZCBzYXZlIGtpbmcgU29sb21vbi4KVGhlbiB5ZSBzaGFsbCBjb21lIHVwIGFmdGVyIGhpbSwgdGhhdCBoZSBtYXkgY29tZSBhbmQgc2l0IHVwb24gbXkgdGhyb25lOyBmb3IgaGUgc2hhbGwgYmUga2luZyBpbiBteSBzdGVhZDogYW5kIEkgaGF2ZSBhcHBvaW50ZWQgaGltIHRvIGJlIHJ1bGVyIG92ZXIgSXNyYWVsIGFuZCBvdmVyIEp1ZGFoLgpBbmQgQmVuYWlhaCB0aGUgc29uIG9mIEplaG9pYWRhIGFuc3dlcmVkIHRoZSBraW5nLCBhbmQgc2FpZCwgQW1lbjogdGhlIExPUkQgR29kIG9mIG15IGxvcmQgdGhlIGtpbmcgc2F5IHNvIHRvby4KQXMgdGhlIExPUkQgaGF0aCBiZWVuIHdpdGggbXkgbG9yZCB0aGUga2luZywgZXZlbiBzbyBiZSBoZSB3aXRoIFNvbG9tb24sIGFuZCBtYWtlIGhpcyB0aHJvbmUgZ3JlYXRlciB0aGFuIHRoZSB0aHJvbmUgb2YgbXkgbG9yZCBraW5nIERhdmlkLgpTbyBaYWRvayB0aGUgcHJpZXN0LCBhbmQgTmF0aGFuIHRoZSBwcm9waGV0LCBhbmQgQmVuYWlhaCB0aGUgc29uIG9mIEplaG9pYWRhLCBhbmQgdGhlIENoZXJldGhpdGVzLCBhbmQgdGhlIFBlbGV0aGl0ZXMsIHdlbnQgZG93biwgYW5kIGNhdXNlZCBTb2xvbW9uIHRvIHJpZGUgdXBvbiBraW5nIERhdmlkJ3MgbXVsZSwgYW5kIGJyb3VnaHQgaGltIHRvIEdpaG9uLgpBbmQgWmFkb2sgdGhlIHByaWVzdCB0b29rIGFuIGhvcm4gb2Ygb2lsIG91dCBvZiB0aGUgdGFiZXJuYWNsZSwgYW5kIGFub2ludGVkIFNvbG9tb24uIEFuZCB0aGV5IGJsZXcgdGhlIHRydW1wZXQ7IGFuZCBhbGwgdGhlIHBlb3BsZSBzYWlkLCBHb2Qgc2F2ZSBraW5nIFNvbG9tb24uCkFuZCBhbGwgdGhlIHBlb3BsZSBjYW1lIHVwIGFmdGVyIGhpbSwgYW5kIHRoZSBwZW9wbGUgcGlwZWQgd2l0aCBwaXBlcywgYW5kIHJlam9pY2VkIHdpdGggZ3JlYXQgam95LCBzbyB0aGF0IHRoZSBlYXJ0aCByZW50IHdpdGggdGhlIHNvdW5kIG9mIHRoZW0uCkFuZCBBZG9uaWphaCBhbmQgYWxsIHRoZSBndWVzdHMgdGhhdCB3ZXJlIHdpdGggaGltIGhlYXJkIGl0IGFzIHRoZXkgaGFkIG1hZGUgYW4gZW5kIG9mIGVhdGluZy4gQW5kIHdoZW4gSm9hYiBoZWFyZCB0aGUgc291bmQgb2YgdGhlIHRydW1wZXQsIGhlIHNhaWQsIFdoZXJlZm9yZSBpcyB0aGlzIG5vaXNlIG9mIHRoZSBjaXR5IGJlaW5nIGluIGFuIHVwcm9hcj8KQW5kIHdoaWxlIGhlIHlldCBzcGFrZSwgYmVob2xkLCBKb25hdGhhbiB0aGUgc29uIG9mIEFiaWF0aGFyIHRoZSBwcmllc3QgY2FtZTsgYW5kIEFkb25pamFoIHNhaWQgdW50byBoaW0sIENvbWUgaW47IGZvciB0aG91IGFydCBhIHZhbGlhbnQgbWFuLCBhbmQgYnJpbmdlc3QgZ29vZCB0aWRpbmdzLgpBbmQgSm9uYXRoYW4gYW5zd2VyZWQgYW5kIHNhaWQgdG8gQWRvbmlqYWgsIFZlcmlseSBvdXIgbG9yZCBraW5nIERhdmlkIGhhdGggbWFkZSBTb2xvbW9uIGtpbmcuCkFuZCB0aGUga2luZyBoYXRoIHNlbnQgd2l0aCBoaW0gWmFkb2sgdGhlIHByaWVzdCwgYW5kIE5hdGhhbiB0aGUgcHJvcGhldCwgYW5kIEJlbmFpYWggdGhlIHNvbiBvZiBKZWhvaWFkYSwgYW5kIHRoZSBDaGVyZXRoaXRlcywgYW5kIHRoZSBQZWxldGhpdGVzLCBhbmQgdGhleSBoYXZlIGNhdXNlZCBoaW0gdG8gcmlkZSB1cG9uIHRoZSBraW5nJ3MgbXVsZToKQW5kIFphZG9rIHRoZSBwcmllc3QgYW5kIE5hdGhhbiB0aGUgcHJvcGhldCBoYXZlIGFub2ludGVkIGhpbSBraW5nIGluIEdpaG9uOiBhbmQgdGhleSBhcmUgY29tZSB1cCBmcm9tIHRoZW5jZSByZWpvaWNpbmcsIHNvIHRoYXQgdGhlIGNpdHkgcmFuZyBhZ2Fpbi4gVGhpcyBpcyB0aGUgbm9pc2UgdGhhdCB5ZSBoYXZlIGhlYXJkLgpBbmQgYWxzbyBTb2xvbW9uIHNpdHRldGggb24gdGhlIHRocm9uZSBvZiB0aGUga2luZ2RvbS4KQW5kIG1vcmVvdmVyIHRoZSBraW5nJ3Mgc2VydmFudHMgY2FtZSB0byBibGVzcyBvdXIgbG9yZCBraW5nIERhdmlkLCBzYXlpbmcsIEdvZCBtYWtlIHRoZSBuYW1lIG9mIFNvbG9tb24gYmV0dGVyIHRoYW4gdGh5IG5hbWUsIGFuZCBtYWtlIGhpcyB0aHJvbmUgZ3JlYXRlciB0aGFuIHRoeSB0aHJvbmUuIEFuZCB0aGUga2luZyBib3dlZCBoaW1zZWxmIHVwb24gdGhlIGJlZC4KQW5kIGFsc28gdGh1cyBzYWlkIHRoZSBraW5nLCBCbGVzc2VkIGJlIHRoZSBMT1JEIEdvZCBvZiBJc3JhZWwsIHdoaWNoIGhhdGggZ2l2ZW4gb25lIHRvIHNpdCBvbiBteSB0aHJvbmUgdGhpcyBkYXksIG1pbmUgZXllcyBldmVuIHNlZWluZyBpdC4KQW5kIGFsbCB0aGUgZ3Vlc3RzIHRoYXQgd2VyZSB3aXRoIEFkb25pamFoIHdlcmUgYWZyYWlkLCBhbmQgcm9zZSB1cCwgYW5kIHdlbnQgZXZlcnkgbWFuIGhpcyB3YXkuCkFuZCBBZG9uaWphaCBmZWFyZWQgYmVjYXVzZSBvZiBTb2xvbW9uLCBhbmQgYXJvc2UsIGFuZCB3ZW50LCBhbmQgY2F1Z2h0IGhvbGQgb24gdGhlIGhvcm5zIG9mIHRoZSBhbHRhci4KQW5kIGl0IHdhcyB0b2xkIFNvbG9tb24sIHNheWluZywgQmVob2xkLCBBZG9uaWphaCBmZWFyZXRoIGtpbmcgU29sb21vbjogZm9yLCBsbywgaGUgaGF0aCBjYXVnaHQgaG9sZCBvbiB0aGUgaG9ybnMgb2YgdGhlIGFsdGFyLCBzYXlpbmcsIExldCBraW5nIFNvbG9tb24gc3dlYXIgdW50byBtZSB0b2RheSB0aGF0IGhlIHdpbGwgbm90IHNsYXkgaGlzIHNlcnZhbnQgd2l0aCB0aGUgc3dvcmQuCkFuZCBTb2xvbW9uIHNhaWQsIElmIGhlIHdpbGwgc2hldyBoaW1zZWxmIGEgd29ydGh5IG1hbiwgdGhlcmUgc2hhbGwgbm90IGFuIGhhaXIgb2YgaGltIGZhbGwgdG8gdGhlIGVhcnRoOiBidXQgaWYgd2lja2VkbmVzcyBzaGFsbCBiZSBmb3VuZCBpbiBoaW0sIGhlIHNoYWxsIGRpZS4KU28ga2luZyBTb2xvbW9uIHNlbnQsIGFuZCB0aGV5IGJyb3VnaHQgaGltIGRvd24gZnJvbSB0aGUgYWx0YXIuIEFuZCBoZSBjYW1lIGFuZCBib3dlZCBoaW1zZWxmIHRvIGtpbmcgU29sb21vbjogYW5kIFNvbG9tb24gc2FpZCB1bnRvIGhpbSwgR28gdG8gdGhpbmUgaG91c2UuCk5vdyB0aGUgZGF5cyBvZiBEYXZpZCBkcmV3IG5pZ2ggdGhhdCBoZSBzaG91bGQgZGllOyBhbmQgaGUgY2hhcmdlZCBTb2xvbW9uIGhpcyBzb24sIHNheWluZywKSSBnbyB0aGUgd2F5IG9mIGFsbCB0aGUgZWFydGg6IGJlIHRob3Ugc3Ryb25nIHRoZXJlZm9yZSwgYW5kIHNoZXcgdGh5c2VsZiBhIG1hbjsKQW5kIGtlZXAgdGhlIGNoYXJnZSBvZiB0aGUgTE9SRCB0aHkgR29kLCB0byB3YWxrIGluIGhpcyB3YXlzLCB0byBrZWVwIGhpcyBzdGF0dXRlcywgYW5kIGhpcyBjb21tYW5kbWVudHMsIGFuZCBoaXMganVkZ21lbnRzLCBhbmQgaGlzIHRlc3RpbW9uaWVzLCBhcyBpdCBpcyB3cml0dGVuIGluIHRoZSBsYXcgb2YgTW9zZXMsIHRoYXQgdGhvdSBtYXllc3QgcHJvc3BlciBpbiBhbGwgdGhhdCB0aG91IGRvZXN0LCBhbmQgd2hpdGhlcnNvZXZlciB0aG91IHR1cm5lc3QgdGh5c2VsZjoKVGhhdCB0aGUgTE9SRCBtYXkgY29udGludWUgaGlzIHdvcmQgd2hpY2ggaGUgc3Bha2UgY29uY2VybmluZyBtZSwgc2F5aW5nLCBJZiB0aHkgY2hpbGRyZW4gdGFrZSBoZWVkIHRvIHRoZWlyIHdheSwgdG8gd2FsayBiZWZvcmUgbWUgaW4gdHJ1dGggd2l0aCBhbGwgdGhlaXIgaGVhcnQgYW5kIHdpdGggYWxsIHRoZWlyIHNvdWwsIHRoZXJlIHNoYWxsIG5vdCBmYWlsIHRoZWUgKHNhaWQgaGUpIGEgbWFuIG9uIHRoZSB0aHJvbmUgb2YgSXNyYWVsLgpNb3Jlb3ZlciB0aG91IGtub3dlc3QgYWxzbyB3aGF0IEpvYWIgdGhlIHNvbiBvZiBaZXJ1aWFoIGRpZCB0byBtZSwgYW5kIHdoYXQgaGUgZGlkIHRvIHRoZSB0d28gY2FwdGFpbnMgb2YgdGhlIGhvc3RzIG9mIElzcmFlbCwgdW50byBBYm5lciB0aGUgc29uIG9mIE5lciwgYW5kIHVudG8gQW1hc2EgdGhlIHNvbiBvZiBKZXRoZXIsIHdob20gaGUgc2xldywgYW5kIHNoZWQgdGhlIGJsb29kIG9mIHdhciBpbiBwZWFjZSwgYW5kIHB1dCB0aGUgYmxvb2Qgb2Ygd2FyIHVwb24gaGlzIGdpcmRsZSB0aGF0IHdhcyBhYm91dCBoaXMgbG9pbnMsIGFuZCBpbiBoaXMgc2hvZXMgdGhhdCB3ZXJlIG9uIGhpcyBmZWV0LgpEbyB0aGVyZWZvcmUgYWNjb3JkaW5nIHRvIHRoeSB3aXNkb20sIGFuZCBsZXQgbm90IGhpcyBob2FyIGhlYWQgZ28gZG93biB0byB0aGUgZ3JhdmUgaW4gcGVhY2UuCkJ1dCBzaGV3IGtpbmRuZXNzIHVudG8gdGhlIHNvbnMgb2YgQmFyemlsbGFpIHRoZSBHaWxlYWRpdGUsIGFuZCBsZXQgdGhlbSBiZSBvZiB0aG9zZSB0aGF0IGVhdCBhdCB0aHkgdGFibGU6IGZvciBzbyB0aGV5IGNhbWUgdG8gbWUgd2hlbiBJIGZsZWQgYmVjYXVzZSBvZiBBYnNhbG9tIHRoeSBicm90aGVyLgpBbmQsIGJlaG9sZCwgdGhvdSBoYXN0IHdpdGggdGhlZSBTaGltZWkgdGhlIHNvbiBvZiBHZXJhLCBhIEJlbmphbWl0ZSBvZiBCYWh1cmltLCB3aGljaCBjdXJzZWQgbWUgd2l0aCBhIGdyaWV2b3VzIGN1cnNlIGluIHRoZSBkYXkgd2hlbiBJIHdlbnQgdG8gTWFoYW5haW06IGJ1dCBoZSBjYW1lIGRvd24gdG8gbWVldCBtZSBhdCBKb3JkYW4sIGFuZCBJIHN3YXJlIHRvIGhpbSBieSB0aGUgTE9SRCwgc2F5aW5nLCBJIHdpbGwgbm90IHB1dCB0aGVlIHRvIGRlYXRoIHdpdGggdGhlIHN3b3JkLgpOb3cgdGhlcmVmb3JlIGhvbGQgaGltIG5vdCBndWlsdGxlc3M6IGZvciB0aG91IGFydCBhIHdpc2UgbWFuLCBhbmQga25vd2VzdCB3aGF0IHRob3Ugb3VnaHRlc3QgdG8gZG8gdW50byBoaW07IGJ1dCBoaXMgaG9hciBoZWFkIGJyaW5nIHRob3UgZG93biB0byB0aGUgZ3JhdmUgd2l0aCBibG9vZC4KU28gRGF2aWQgc2xlcHQgd2l0aCBoaXMgZmF0aGVycywgYW5kIHdhcyBidXJpZWQgaW4gdGhlIGNpdHkgb2YgRGF2aWQuCkFuZCB0aGUgZGF5cyB0aGF0IERhdmlkIHJlaWduZWQgb3ZlciBJc3JhZWwgd2VyZSBmb3J0eSB5ZWFyczogc2V2ZW4geWVhcnMgcmVpZ25lZCBoZSBpbiBIZWJyb24sIGFuZCB0aGlydHkgYW5kIHRocmVlIHllYXJzIHJlaWduZWQgaGUgaW4gSmVydXNhbGVtLgpUaGVuIHNhdCBTb2xvbW9uIHVwb24gdGhlIHRocm9uZSBvZiBEYXZpZCBoaXMgZmF0aGVyOyBhbmQgaGlzIGtpbmdkb20gd2FzIGVzdGFibGlzaGVkIGdyZWF0bHkuCkFuZCBBZG9uaWphaCB0aGUgc29uIG9mIEhhZ2dpdGggY2FtZSB0byBCYXRoc2hlYmEgdGhlIG1vdGhlciBvZiBTb2xvbW9uLiBBbmQgc2hlIHNhaWQsIENvbWVzdCB0aG91IHBlYWNlYWJseT8gQW5kIGhlIHNhaWQsIFBlYWNlYWJseS4KSGUgc2FpZCBtb3Jlb3ZlciwgSSBoYXZlIHNvbWV3aGF0IHRvIHNheSB1bnRvIHRoZWUuIEFuZCBzaGUgc2FpZCwgU2F5IG9uLgpBbmQgaGUgc2FpZCwgVGhvdSBrbm93ZXN0IHRoYXQgdGhlIGtpbmdkb20gd2FzIG1pbmUsIGFuZCB0aGF0IGFsbCBJc3JhZWwgc2V0IHRoZWlyIGZhY2VzIG9uIG1lLCB0aGF0IEkgc2hvdWxkIHJlaWduOiBob3diZWl0IHRoZSBraW5nZG9tIGlzIHR1cm5lZCBhYm91dCwgYW5kIGlzIGJlY29tZSBteSBicm90aGVyJ3M6IGZvciBpdCB3YXMgaGlzIGZyb20gdGhlIExPUkQuCkFuZCBub3cgSSBhc2sgb25lIHBldGl0aW9uIG9mIHRoZWUsIGRlbnkgbWUgbm90LiBBbmQgc2hlIHNhaWQgdW50byBoaW0sIFNheSBvbi4KQW5kIGhlIHNhaWQsIFNwZWFrLCBJIHByYXkgdGhlZSwgdW50byBTb2xvbW9uIHRoZSBraW5nLCAoZm9yIGhlIHdpbGwgbm90IHNheSB0aGVlIG5heSwpIHRoYXQgaGUgZ2l2ZSBtZSBBYmlzaGFnIHRoZSBTaHVuYW1taXRlIHRvIHdpZmUuCkFuZCBCYXRoc2hlYmEgc2FpZCwgV2VsbDsgSSB3aWxsIHNwZWFrIGZvciB0aGVlIHVudG8gdGhlIGtpbmcuCkJhdGhzaGViYSB0aGVyZWZvcmUgd2VudCB1bnRvIGtpbmcgU29sb21vbiwgdG8gc3BlYWsgdW50byBoaW0gZm9yIEFkb25pamFoLiBBbmQgdGhlIGtpbmcgcm9zZSB1cCB0byBtZWV0IGhlciwgYW5kIGJvd2VkIGhpbXNlbGYgdW50byBoZXIsIGFuZCBzYXQgZG93biBvbiBoaXMgdGhyb25lLCBhbmQgY2F1c2VkIGEgc2VhdCB0byBiZSBzZXQgZm9yIHRoZSBraW5nJ3MgbW90aGVyOyBhbmQgc2hlIHNhdCBvbiBoaXMgcmlnaHQgaGFuZC4KVGhlbiBzaGUgc2FpZCwgSSBkZXNpcmUgb25lIHNtYWxsIHBldGl0aW9uIG9mIHRoZWU7IEkgcHJheSB0aGVlLCBzYXkgbWUgbm90IG5heS4gQW5kIHRoZSBraW5nIHNhaWQgdW50byBoZXIsIEFzayBvbiwgbXkgbW90aGVyOiBmb3IgSSB3aWxsIG5vdCBzYXkgdGhlZSBuYXkuCkFuZCBzaGUgc2FpZCwgTGV0IEFiaXNoYWcgdGhlIFNodW5hbW1pdGUgYmUgZ2l2ZW4gdG8gQWRvbmlqYWggdGh5IGJyb3RoZXIgdG8gd2lmZS4KQW5kIGtpbmcgU29sb21vbiBhbnN3ZXJlZCBhbmQgc2FpZCB1bnRvIGhpcyBtb3RoZXIsIEFuZCB3aHkgZG9zdCB0aG91IGFzayBBYmlzaGFnIHRoZSBTaHVuYW1taXRlIGZvciBBZG9uaWphaD8gYXNrIGZvciBoaW0gdGhlIGtpbmdkb20gYWxzbzsgZm9yIGhlIGlzIG1pbmUgZWxkZXIgYnJvdGhlcjsgZXZlbiBmb3IgaGltLCBhbmQgZm9yIEFiaWF0aGFyIHRoZSBwcmllc3QsIGFuZCBmb3IgSm9hYiB0aGUgc29uIG9mIFplcnVpYWguClRoZW4ga2luZyBTb2xvbW9uIHN3YXJlIGJ5IHRoZSBMT1JELCBzYXlpbmcsIEdvZCBkbyBzbyB0byBtZSwgYW5kIG1vcmUgYWxzbywgaWYgQWRvbmlqYWggaGF2ZSBub3Qgc3Bva2VuIHRoaXMgd29yZCBhZ2FpbnN0IGhpcyBvd24gbGlmZS4KTm93IHRoZXJlZm9yZSwgYXMgdGhlIExPUkQgbGl2ZXRoLCB3aGljaCBoYXRoIGVzdGFibGlzaGVkIG1lLCBhbmQgc2V0IG1lIG9uIHRoZSB0aHJvbmUgb2YgRGF2aWQgbXkgZmF0aGVyLCBhbmQgd2hvIGhhdGggbWFkZSBtZSBhbiBob3VzZSwgYXMgaGUgcHJvbWlzZWQsIEFkb25pamFoIHNoYWxsIGJlIHB1dCB0byBkZWF0aCB0aGlzIGRheS4KQW5kIGtpbmcgU29sb21vbiBzZW50IGJ5IHRoZSBoYW5kIG9mIEJlbmFpYWggdGhlIHNvbiBvZiBKZWhvaWFkYTsgYW5kIGhlIGZlbGwgdXBvbiBoaW0gdGhhdCBoZSBkaWVkLgpBbmQgdW50byBBYmlhdGhhciB0aGUgcHJpZXN0IHNhaWQgdGhlIGtpbmcsIEdldCB0aGVlIHRvIEFuYXRob3RoLCB1bnRvIHRoaW5lIG93biBmaWVsZHM7IGZvciB0aG91IGFydCB3b3J0aHkgb2YgZGVhdGg6IGJ1dCBJIHdpbGwgbm90IGF0IHRoaXMgdGltZSBwdXQgdGhlZSB0byBkZWF0aCwgYmVjYXVzZSB0aG91IGJhcmVzdCB0aGUgYXJrIG9mIHRoZSBMT1JEIEdvZCBiZWZvcmUgRGF2aWQgbXkgZmF0aGVyLCBhbmQgYmVjYXVzZSB0aG91IGhhc3QgYmVlbiBhZmZsaWN0ZWQgaW4gYWxsIHdoZXJlaW4gbXkgZmF0aGVyIHdhcyBhZmZsaWN0ZWQuClNvIFNvbG9tb24gdGhydXN0IG91dCBBYmlhdGhhciBmcm9tIGJlaW5nIHByaWVzdCB1bnRvIHRoZSBMT1JEOyB0aGF0IGhlIG1pZ2h0IGZ1bGZpbCB0aGUgd29yZCBvZiB0aGUgTE9SRCwgd2hpY2ggaGUgc3Bha2UgY29uY2VybmluZyB0aGUgaG91c2Ugb2YgRWxpIGluIFNoaWxvaC4KVGhlbiB0aWRpbmdzIGNhbWUgdG8gSm9hYjogZm9yIEpvYWIgaGFkIHR1cm5lZCBhZnRlciBBZG9uaWphaCwgdGhvdWdoIGhlIHR1cm5lZCBub3QgYWZ0ZXIgQWJzYWxvbS4gQW5kIEpvYWIgZmxlZCB1bnRvIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBMT1JELCBhbmQgY2F1Z2h0IGhvbGQgb24gdGhlIGhvcm5zIG9mIHRoZSBhbHRhci4KQW5kIGl0IHdhcyB0b2xkIGtpbmcgU29sb21vbiB0aGF0IEpvYWIgd2FzIGZsZWQgdW50byB0aGUgdGFiZXJuYWNsZSBvZiB0aGUgTE9SRDsgYW5kLCBiZWhvbGQsIGhlIGlzIGJ5IHRoZSBhbHRhci4gVGhlbiBTb2xvbW9uIHNlbnQgQmVuYWlhaCB0aGUgc29uIG9mIEplaG9pYWRhLCBzYXlpbmcsIEdvLCBmYWxsIHVwb24gaGltLgpBbmQgQmVuYWlhaCBjYW1lIHRvIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBMT1JELCBhbmQgc2FpZCB1bnRvIGhpbSwgVGh1cyBzYWl0aCB0aGUga2luZywgQ29tZSBmb3J0aC4gQW5kIGhlIHNhaWQsIE5heTsgYnV0IEkgd2lsbCBkaWUgaGVyZS4gQW5kIEJlbmFpYWggYnJvdWdodCB0aGUga2luZyB3b3JkIGFnYWluLCBzYXlpbmcsIFRodXMgc2FpZCBKb2FiLCBhbmQgdGh1cyBoZSBhbnN3ZXJlZCBtZS4KQW5kIHRoZSBraW5nIHNhaWQgdW50byBoaW0sIERvIGFzIGhlIGhhdGggc2FpZCwgYW5kIGZhbGwgdXBvbiBoaW0sIGFuZCBidXJ5IGhpbTsgdGhhdCB0aG91IG1heWVzdCB0YWtlIGF3YXkgdGhlIGlubm9jZW50IGJsb29kLCB3aGljaCBKb2FiIHNoZWQsIGZyb20gbWUsIGFuZCBmcm9tIHRoZSBob3VzZSBvZiBteSBmYXRoZXIuCkFuZCB0aGUgTE9SRCBzaGFsbCByZXR1cm4gaGlzIGJsb29kIHVwb24gaGlzIG93biBoZWFkLCB3aG8gZmVsbCB1cG9uIHR3byBtZW4gbW9yZSByaWdodGVvdXMgYW5kIGJldHRlciB0aGFuIGhlLCBhbmQgc2xldyB0aGVtIHdpdGggdGhlIHN3b3JkLCBteSBmYXRoZXIgRGF2aWQgbm90IGtub3dpbmcgdGhlcmVvZiwgdG8gd2l0LCBBYm5lciB0aGUgc29uIG9mIE5lciwgY2FwdGFpbiBvZiB0aGUgaG9zdCBvZiBJc3JhZWwsIGFuZCBBbWFzYSB0aGUgc29uIG9mIEpldGhlciwgY2FwdGFpbiBvZiB0aGUgaG9zdCBvZiBKdWRhaC4KVGhlaXIgYmxvb2Qgc2hhbGwgdGhlcmVmb3JlIHJldHVybiB1cG9uIHRoZSBoZWFkIG9mIEpvYWIsIGFuZCB1cG9uIHRoZSBoZWFkIG9mIGhpcyBzZWVkIGZvciBldmVyOiBidXQgdXBvbiBEYXZpZCwgYW5kIHVwb24gaGlzIHNlZWQsIGFuZCB1cG9uIGhpcyBob3VzZSwgYW5kIHVwb24gaGlzIHRocm9uZSwgc2hhbGwgdGhlcmUgYmUgcGVhY2UgZm9yIGV2ZXIgZnJvbSB0aGUgTE9SRC4KU28gQmVuYWlhaCB0aGUgc29uIG9mIEplaG9pYWRhIHdlbnQgdXAsIGFuZCBmZWxsIHVwb24gaGltLCBhbmQgc2xldyBoaW06IGFuZCBoZSB3YXMgYnVyaWVkIGluIGhpcyBvd24gaG91c2UgaW4gdGhlIHdpbGRlcm5lc3MuCkFuZCB0aGUga2luZyBwdXQgQmVuYWlhaCB0aGUgc29uIG9mIEplaG9pYWRhIGluIGhpcyByb29tIG92ZXIgdGhlIGhvc3Q6IGFuZCBaYWRvayB0aGUgcHJpZXN0IGRpZCB0aGUga2luZyBwdXQgaW4gdGhlIHJvb20gb2YgQWJpYXRoYXIuCkFuZCB0aGUga2luZyBzZW50IGFuZCBjYWxsZWQgZm9yIFNoaW1laSwgYW5kIHNhaWQgdW50byBoaW0sIEJ1aWxkIHRoZWUgYW4gaG91c2UgaW4gSmVydXNhbGVtLCBhbmQgZHdlbGwgdGhlcmUsIGFuZCBnbyBub3QgZm9ydGggdGhlbmNlIGFueSB3aGl0aGVyLgpGb3IgaXQgc2hhbGwgYmUsIHRoYXQgb24gdGhlIGRheSB0aG91IGdvZXN0IG91dCwgYW5kIHBhc3Nlc3Qgb3ZlciB0aGUgYnJvb2sgS2lkcm9uLCB0aG91IHNoYWx0IGtub3cgZm9yIGNlcnRhaW4gdGhhdCB0aG91IHNoYWx0IHN1cmVseSBkaWU6IHRoeSBibG9vZCBzaGFsbCBiZSB1cG9uIHRoaW5lIG93biBoZWFkLgpBbmQgU2hpbWVpIHNhaWQgdW50byB0aGUga2luZywgVGhlIHNheWluZyBpcyBnb29kOiBhcyBteSBsb3JkIHRoZSBraW5nIGhhdGggc2FpZCwgc28gd2lsbCB0aHkgc2VydmFudCBkby4gQW5kIFNoaW1laSBkd2VsdCBpbiBKZXJ1c2FsZW0gbWFueSBkYXlzLgpBbmQgaXQgY2FtZSB0byBwYXNzIGF0IHRoZSBlbmQgb2YgdGhyZWUgeWVhcnMsIHRoYXQgdHdvIG9mIHRoZSBzZXJ2YW50cyBvZiBTaGltZWkgcmFuIGF3YXkgdW50byBBY2hpc2ggc29uIG9mIE1hYWNoYWgga2luZyBvZiBHYXRoLiBBbmQgdGhleSB0b2xkIFNoaW1laSwgc2F5aW5nLCBCZWhvbGQsIHRoeSBzZXJ2YW50cyBiZSBpbiBHYXRoLgpBbmQgU2hpbWVpIGFyb3NlLCBhbmQgc2FkZGxlZCBoaXMgYXNzLCBhbmQgd2VudCB0byBHYXRoIHRvIEFjaGlzaCB0byBzZWVrIGhpcyBzZXJ2YW50czogYW5kIFNoaW1laSB3ZW50LCBhbmQgYnJvdWdodCBoaXMgc2VydmFudHMgZnJvbSBHYXRoLgpBbmQgaXQgd2FzIHRvbGQgU29sb21vbiB0aGF0IFNoaW1laSBoYWQgZ29uZSBmcm9tIEplcnVzYWxlbSB0byBHYXRoLCBhbmQgd2FzIGNvbWUgYWdhaW4uCkFuZCB0aGUga2luZyBzZW50IGFuZCBjYWxsZWQgZm9yIFNoaW1laSwgYW5kIHNhaWQgdW50byBoaW0sIERpZCBJIG5vdCBtYWtlIHRoZWUgdG8gc3dlYXIgYnkgdGhlIExPUkQsIGFuZCBwcm90ZXN0ZWQgdW50byB0aGVlLCBzYXlpbmcsIEtub3cgZm9yIGEgY2VydGFpbiwgb24gdGhlIGRheSB0aG91IGdvZXN0IG91dCwgYW5kIHdhbGtlc3QgYWJyb2FkIGFueSB3aGl0aGVyLCB0aGF0IHRob3Ugc2hhbHQgc3VyZWx5IGRpZT8gYW5kIHRob3Ugc2FpZHN0IHVudG8gbWUsIFRoZSB3b3JkIHRoYXQgSSBoYXZlIGhlYXJkIGlzIGdvb2QuCldoeSB0aGVuIGhhc3QgdGhvdSBub3Qga2VwdCB0aGUgb2F0aCBvZiB0aGUgTE9SRCwgYW5kIHRoZSBjb21tYW5kbWVudCB0aGF0IEkgaGF2ZSBjaGFyZ2VkIHRoZWUgd2l0aD8KVGhlIGtpbmcgc2FpZCBtb3Jlb3ZlciB0byBTaGltZWksIFRob3Uga25vd2VzdCBhbGwgdGhlIHdpY2tlZG5lc3Mgd2hpY2ggdGhpbmUgaGVhcnQgaXMgcHJpdnkgdG8sIHRoYXQgdGhvdSBkaWRzdCB0byBEYXZpZCBteSBmYXRoZXI6IHRoZXJlZm9yZSB0aGUgTE9SRCBzaGFsbCByZXR1cm4gdGh5IHdpY2tlZG5lc3MgdXBvbiB0aGluZSBvd24gaGVhZDsKQW5kIGtpbmcgU29sb21vbiBzaGFsbCBiZSBibGVzc2VkLCBhbmQgdGhlIHRocm9uZSBvZiBEYXZpZCBzaGFsbCBiZSBlc3RhYmxpc2hlZCBiZWZvcmUgdGhlIExPUkQgZm9yIGV2ZXIuClNvIHRoZSBraW5nIGNvbW1hbmRlZCBCZW5haWFoIHRoZSBzb24gb2YgSmVob2lhZGE7IHdoaWNoIHdlbnQgb3V0LCBhbmQgZmVsbCB1cG9uIGhpbSwgdGhhdCBoZSBkaWVkLiBBbmQgdGhlIGtpbmdkb20gd2FzIGVzdGFibGlzaGVkIGluIHRoZSBoYW5kIG9mIFNvbG9tb24uCkFuZCBTb2xvbW9uIG1hZGUgYWZmaW5pdHkgd2l0aCBQaGFyYW9oIGtpbmcgb2YgRWd5cHQsIGFuZCB0b29rIFBoYXJhb2gncyBkYXVnaHRlciwgYW5kIGJyb3VnaHQgaGVyIGludG8gdGhlIGNpdHkgb2YgRGF2aWQsIHVudGlsIGhlIGhhZCBtYWRlIGFuIGVuZCBvZiBidWlsZGluZyBoaXMgb3duIGhvdXNlLCBhbmQgdGhlIGhvdXNlIG9mIHRoZSBMT1JELCBhbmQgdGhlIHdhbGwgb2YgSmVydXNhbGVtIHJvdW5kIGFib3V0LgpPbmx5IHRoZSBwZW9wbGUgc2FjcmlmaWNlZCBpbiBoaWdoIHBsYWNlcywgYmVjYXVzZSB0aGVyZSB3YXMgbm8gaG91c2UgYnVpbHQgdW50byB0aGUgbmFtZSBvZiB0aGUgTE9SRCwgdW50aWwgdGhvc2UgZGF5cy4KQW5kIFNvbG9tb24gbG92ZWQgdGhlIExPUkQsIHdhbGtpbmcgaW4gdGhlIHN0YXR1dGVzIG9mIERhdmlkIGhpcyBmYXRoZXI6IG9ubHkgaGUgc2FjcmlmaWNlZCBhbmQgYnVybnQgaW5jZW5zZSBpbiBoaWdoIHBsYWNlcy4KQW5kIHRoZSBraW5nIHdlbnQgdG8gR2liZW9uIHRvIHNhY3JpZmljZSB0aGVyZTsgZm9yIHRoYXQgd2FzIHRoZSBncmVhdCBoaWdoIHBsYWNlOiBhIHRob3VzYW5kIGJ1cm50IG9mZmVyaW5ncyBkaWQgU29sb21vbiBvZmZlciB1cG9uIHRoYXQgYWx0YXIuCkluIEdpYmVvbiB0aGUgTE9SRCBhcHBlYXJlZCB0byBTb2xvbW9uIGluIGEgZHJlYW0gYnkgbmlnaHQ6IGFuZCBHb2Qgc2FpZCwgQXNrIHdoYXQgSSBzaGFsbCBnaXZlIHRoZWUuCkFuZCBTb2xvbW9uIHNhaWQsIFRob3UgaGFzdCBzaGV3ZWQgdW50byB0aHkgc2VydmFudCBEYXZpZCBteSBmYXRoZXIgZ3JlYXQgbWVyY3ksIGFjY29yZGluZyBhcyBoZSB3YWxrZWQgYmVmb3JlIHRoZWUgaW4gdHJ1dGgsIGFuZCBpbiByaWdodGVvdXNuZXNzLCBhbmQgaW4gdXByaWdodG5lc3Mgb2YgaGVhcnQgd2l0aCB0aGVlOyBhbmQgdGhvdSBoYXN0IGtlcHQgZm9yIGhpbSB0aGlzIGdyZWF0IGtpbmRuZXNzLCB0aGF0IHRob3UgaGFzdCBnaXZlbiBoaW0gYSBzb24gdG8gc2l0IG9uIGhpcyB0aHJvbmUsIGFzIGl0IGlzIHRoaXMgZGF5LgpBbmQgbm93LCBPIExPUkQgbXkgR29kLCB0aG91IGhhc3QgbWFkZSB0aHkgc2VydmFudCBraW5nIGluc3RlYWQgb2YgRGF2aWQgbXkgZmF0aGVyOiBhbmQgSSBhbSBidXQgYSBsaXR0bGUgY2hpbGQ6IEkga25vdyBub3QgaG93IHRvIGdvIG91dCBvciBjb21lIGluLgpBbmQgdGh5IHNlcnZhbnQgaXMgaW4gdGhlIG1pZHN0IG9mIHRoeSBwZW9wbGUgd2hpY2ggdGhvdSBoYXN0IGNob3NlbiwgYSBncmVhdCBwZW9wbGUsIHRoYXQgY2Fubm90IGJlIG51bWJlcmVkIG5vciBjb3VudGVkIGZvciBtdWx0aXR1ZGUuCkdpdmUgdGhlcmVmb3JlIHRoeSBzZXJ2YW50IGFuIHVuZGVyc3RhbmRpbmcgaGVhcnQgdG8ganVkZ2UgdGh5IHBlb3BsZSwgdGhhdCBJIG1heSBkaXNjZXJuIGJldHdlZW4gZ29vZCBhbmQgYmFkOiBmb3Igd2hvIGlzIGFibGUgdG8ganVkZ2UgdGhpcyB0aHkgc28gZ3JlYXQgYSBwZW9wbGU/CkFuZCB0aGUgc3BlZWNoIHBsZWFzZWQgdGhlIExPUkQsIHRoYXQgU29sb21vbiBoYWQgYXNrZWQgdGhpcyB0aGluZy4KQW5kIEdvZCBzYWlkIHVudG8gaGltLCBCZWNhdXNlIHRob3UgaGFzdCBhc2tlZCB0aGlzIHRoaW5nLCBhbmQgaGFzdCBub3QgYXNrZWQgZm9yIHRoeXNlbGYgbG9uZyBsaWZlOyBuZWl0aGVyIGhhc3QgYXNrZWQgcmljaGVzIGZvciB0aHlzZWxmLCBub3IgaGFzdCBhc2tlZCB0aGUgbGlmZSBvZiB0aGluZSBlbmVtaWVzOyBidXQgaGFzdCBhc2tlZCBmb3IgdGh5c2VsZiB1bmRlcnN0YW5kaW5nIHRvIGRpc2Nlcm4ganVkZ21lbnQ7CkJlaG9sZCwgSSBoYXZlIGRvbmUgYWNjb3JkaW5nIHRvIHRoeSB3b3JkczogbG8sIEkgaGF2ZSBnaXZlbiB0aGVlIGEgd2lzZSBhbmQgYW4gdW5kZXJzdGFuZGluZyBoZWFydDsgc28gdGhhdCB0aGVyZSB3YXMgbm9uZSBsaWtlIHRoZWUgYmVmb3JlIHRoZWUsIG5laXRoZXIgYWZ0ZXIgdGhlZSBzaGFsbCBhbnkgYXJpc2UgbGlrZSB1bnRvIHRoZWUuCkFuZCBJIGhhdmUgYWxzbyBnaXZlbiB0aGVlIHRoYXQgd2hpY2ggdGhvdSBoYXN0IG5vdCBhc2tlZCwgYm90aCByaWNoZXMsIGFuZCBob25vdXI6IHNvIHRoYXQgdGhlcmUgc2hhbGwgbm90IGJlIGFueSBhbW9uZyB0aGUga2luZ3MgbGlrZSB1bnRvIHRoZWUgYWxsIHRoeSBkYXlzLgpBbmQgaWYgdGhvdSB3aWx0IHdhbGsgaW4gbXkgd2F5cywgdG8ga2VlcCBteSBzdGF0dXRlcyBhbmQgbXkgY29tbWFuZG1lbnRzLCBhcyB0aHkgZmF0aGVyIERhdmlkIGRpZCB3YWxrLCB0aGVuIEkgd2lsbCBsZW5ndGhlbiB0aHkgZGF5cy4KQW5kIFNvbG9tb24gYXdva2U7IGFuZCwgYmVob2xkLCBpdCB3YXMgYSBkcmVhbS4gQW5kIGhlIGNhbWUgdG8gSmVydXNhbGVtLCBhbmQgc3Rvb2QgYmVmb3JlIHRoZSBhcmsgb2YgdGhlIGNvdmVuYW50IG9mIHRoZSBMT1JELCBhbmQgb2ZmZXJlZCB1cCBidXJudCBvZmZlcmluZ3MsIGFuZCBvZmZlcmVkIHBlYWNlIG9mZmVyaW5ncywgYW5kIG1hZGUgYSBmZWFzdCB0byBhbGwgaGlzIHNlcnZhbnRzLgpUaGVuIGNhbWUgdGhlcmUgdHdvIHdvbWVuLCB0aGF0IHdlcmUgaGFybG90cywgdW50byB0aGUga2luZywgYW5kIHN0b29kIGJlZm9yZSBoaW0uCkFuZCB0aGUgb25lIHdvbWFuIHNhaWQsIE8gbXkgbG9yZCwgSSBhbmQgdGhpcyB3b21hbiBkd2VsbCBpbiBvbmUgaG91c2U7IGFuZCBJIHdhcyBkZWxpdmVyZWQgb2YgYSBjaGlsZCB3aXRoIGhlciBpbiB0aGUgaG91c2UuCkFuZCBpdCBjYW1lIHRvIHBhc3MgdGhlIHRoaXJkIGRheSBhZnRlciB0aGF0IEkgd2FzIGRlbGl2ZXJlZCwgdGhhdCB0aGlzIHdvbWFuIHdhcyBkZWxpdmVyZWQgYWxzbzogYW5kIHdlIHdlcmUgdG9nZXRoZXI7IHRoZXJlIHdhcyBubyBzdHJhbmdlciB3aXRoIHVzIGluIHRoZSBob3VzZSwgc2F2ZSB3ZSB0d28gaW4gdGhlIGhvdXNlLgpBbmQgdGhpcyB3b21hbidzIGNoaWxkIGRpZWQgaW4gdGhlIG5pZ2h0OyBiZWNhdXNlIHNoZSBvdmVybGFpZCBpdC4KQW5kIHNoZSBhcm9zZSBhdCBtaWRuaWdodCwgYW5kIHRvb2sgbXkgc29uIGZyb20gYmVzaWRlIG1lLCB3aGlsZSB0aGluZSBoYW5kbWFpZCBzbGVwdCwgYW5kIGxhaWQgaXQgaW4gaGVyIGJvc29tLCBhbmQgbGFpZCBoZXIgZGVhZCBjaGlsZCBpbiBteSBib3NvbS4KQW5kIHdoZW4gSSByb3NlIGluIHRoZSBtb3JuaW5nIHRvIGdpdmUgbXkgY2hpbGQgc3VjaywgYmVob2xkLCBpdCB3YXMgZGVhZDogYnV0IHdoZW4gSSBoYWQgY29uc2lkZXJlZCBpdCBpbiB0aGUgbW9ybmluZywgYmVob2xkLCBpdCB3YXMgbm90IG15IHNvbiwgd2hpY2ggSSBkaWQgYmVhci4KQW5kIHRoZSBvdGhlciB3b21hbiBzYWlkLCBOYXk7IGJ1dCB0aGUgbGl2aW5nIGlzIG15IHNvbiwgYW5kIHRoZSBkZWFkIGlzIHRoeSBzb24uIEFuZCB0aGlzIHNhaWQsIE5vOyBidXQgdGhlIGRlYWQgaXMgdGh5IHNvbiwgYW5kIHRoZSBsaXZpbmcgaXMgbXkgc29uLiBUaHVzIHRoZXkgc3Bha2UgYmVmb3JlIHRoZSBraW5nLgpUaGVuIHNhaWQgdGhlIGtpbmcsIFRoZSBvbmUgc2FpdGgsIFRoaXMgaXMgbXkgc29uIHRoYXQgbGl2ZXRoLCBhbmQgdGh5IHNvbiBpcyB0aGUgZGVhZDogYW5kIHRoZSBvdGhlciBzYWl0aCwgTmF5OyBidXQgdGh5IHNvbiBpcyB0aGUgZGVhZCwgYW5kIG15IHNvbiBpcyB0aGUgbGl2aW5nLgpBbmQgdGhlIGtpbmcgc2FpZCwgQnJpbmcgbWUgYSBzd29yZC4gQW5kIHRoZXkgYnJvdWdodCBhIHN3b3JkIGJlZm9yZSB0aGUga2luZy4KQW5kIHRoZSBraW5nIHNhaWQsIERpdmlkZSB0aGUgbGl2aW5nIGNoaWxkIGluIHR3bywgYW5kIGdpdmUgaGFsZiB0byB0aGUgb25lLCBhbmQgaGFsZiB0byB0aGUgb3RoZXIuClRoZW4gc3Bha2UgdGhlIHdvbWFuIHdob3NlIHRoZSBsaXZpbmcgY2hpbGQgd2FzIHVudG8gdGhlIGtpbmcsIGZvciBoZXIgYm93ZWxzIHllYXJuZWQgdXBvbiBoZXIgc29uLCBhbmQgc2hlIHNhaWQsIE8gbXkgbG9yZCwgZ2l2ZSBoZXIgdGhlIGxpdmluZyBjaGlsZCwgYW5kIGluIG5vIHdpc2Ugc2xheSBpdC4gQnV0IHRoZSBvdGhlciBzYWlkLCBMZXQgaXQgYmUgbmVpdGhlciBtaW5lIG5vciB0aGluZSwgYnV0IGRpdmlkZSBpdC4KVGhlbiB0aGUga2luZyBhbnN3ZXJlZCBhbmQgc2FpZCwgR2l2ZSBoZXIgdGhlIGxpdmluZyBjaGlsZCwgYW5kIGluIG5vIHdpc2Ugc2xheSBpdDogc2hlIGlzIHRoZSBtb3RoZXIgdGhlcmVvZi4KQW5kIGFsbCBJc3JhZWwgaGVhcmQgb2YgdGhlIGp1ZGdtZW50IHdoaWNoIHRoZSBraW5nIGhhZCBqdWRnZWQ7IGFuZCB0aGV5IGZlYXJlZCB0aGUga2luZzogZm9yIHRoZXkgc2F3IHRoYXQgdGhlIHdpc2RvbSBvZiBHb2Qgd2FzIGluIGhpbSwgdG8gZG8ganVkZ21lbnQuClNvIGtpbmcgU29sb21vbiB3YXMga2luZyBvdmVyIGFsbCBJc3JhZWwuCkFuZCB0aGVzZSB3ZXJlIHRoZSBwcmluY2VzIHdoaWNoIGhlIGhhZDsgQXphcmlhaCB0aGUgc29uIG9mIFphZG9rIHRoZSBwcmllc3QsCkVsaWhvcmVwaCBhbmQgQWhpYWgsIHRoZSBzb25zIG9mIFNoaXNoYSwgc2NyaWJlczsgSmVob3NoYXBoYXQgdGhlIHNvbiBvZiBBaGlsdWQsIHRoZSByZWNvcmRlci4KQW5kIEJlbmFpYWggdGhlIHNvbiBvZiBKZWhvaWFkYSB3YXMgb3ZlciB0aGUgaG9zdDogYW5kIFphZG9rIGFuZCBBYmlhdGhhciB3ZXJlIHRoZSBwcmllc3RzOgpBbmQgQXphcmlhaCB0aGUgc29uIG9mIE5hdGhhbiB3YXMgb3ZlciB0aGUgb2ZmaWNlcnM6IGFuZCBaYWJ1ZCB0aGUgc29uIG9mIE5hdGhhbiB3YXMgcHJpbmNpcGFsIG9mZmljZXIsIGFuZCB0aGUga2luZydzIGZyaWVuZDoKQW5kIEFoaXNoYXIgd2FzIG92ZXIgdGhlIGhvdXNlaG9sZDogYW5kIEFkb25pcmFtIHRoZSBzb24gb2YgQWJkYSB3YXMgb3ZlciB0aGUgdHJpYnV0ZS4KQW5kIFNvbG9tb24gaGFkIHR3ZWx2ZSBvZmZpY2VycyBvdmVyIGFsbCBJc3JhZWwsIHdoaWNoIHByb3ZpZGVkIHZpY3R1YWxzIGZvciB0aGUga2luZyBhbmQgaGlzIGhvdXNlaG9sZDogZWFjaCBtYW4gaGlzIG1vbnRoIGluIGEgeWVhciBtYWRlIHByb3Zpc2lvbi4KQW5kIHRoZXNlIGFyZSB0aGVpciBuYW1lczogVGhlIHNvbiBvZiBIdXIsIGluIG1vdW50IEVwaHJhaW06ClRoZSBzb24gb2YgRGVrYXIsIGluIE1ha2F6LCBhbmQgaW4gU2hhYWxiaW0sIGFuZCBCZXRoc2hlbWVzaCwgYW5kIEVsb25iZXRoaGFuYW46ClRoZSBzb24gb2YgSGVzZWQsIGluIEFydWJvdGg7IHRvIGhpbSBwZXJ0YWluZWQgU29jaG9oLCBhbmQgYWxsIHRoZSBsYW5kIG9mIEhlcGhlcjoKVGhlIHNvbiBvZiBBYmluYWRhYiwgaW4gYWxsIHRoZSByZWdpb24gb2YgRG9yOyB3aGljaCBoYWQgVGFwaGF0aCB0aGUgZGF1Z2h0ZXIgb2YgU29sb21vbiB0byB3aWZlOgpCYWFuYSB0aGUgc29uIG9mIEFoaWx1ZDsgdG8gaGltIHBlcnRhaW5lZCBUYWFuYWNoIGFuZCBNZWdpZGRvLCBhbmQgYWxsIEJldGhzaGVhbiwgd2hpY2ggaXMgYnkgWmFydGFuYWggYmVuZWF0aCBKZXpyZWVsLCBmcm9tIEJldGhzaGVhbiB0byBBYmVsbWVob2xhaCwgZXZlbiB1bnRvIHRoZSBwbGFjZSB0aGF0IGlzIGJleW9uZCBKb2tuZWFtOgpUaGUgc29uIG9mIEdlYmVyLCBpbiBSYW1vdGhnaWxlYWQ7IHRvIGhpbSBwZXJ0YWluZWQgdGhlIHRvd25zIG9mIEphaXIgdGhlIHNvbiBvZiBNYW5hc3NlaCwgd2hpY2ggYXJlIGluIEdpbGVhZDsgdG8gaGltIGFsc28gcGVydGFpbmVkIHRoZSByZWdpb24gb2YgQXJnb2IsIHdoaWNoIGlzIGluIEJhc2hhbiwgdGhyZWVzY29yZSBncmVhdCBjaXRpZXMgd2l0aCB3YWxscyBhbmQgYnJhc2VuIGJhcnM6CkFoaW5hZGFiIHRoZSBzb24gb2YgSWRkbyBoYWQgTWFoYW5haW06CkFoaW1hYXogd2FzIGluIE5hcGh0YWxpOyBoZSBhbHNvIHRvb2sgQmFzbWF0aCB0aGUgZGF1Z2h0ZXIgb2YgU29sb21vbiB0byB3aWZlOgpCYWFuYWggdGhlIHNvbiBvZiBIdXNoYWkgd2FzIGluIEFzaGVyIGFuZCBpbiBBbG90aDoKSmVob3NoYXBoYXQgdGhlIHNvbiBvZiBQYXJ1YWgsIGluIElzc2FjaGFyOgpTaGltZWkgdGhlIHNvbiBvZiBFbGFoLCBpbiBCZW5qYW1pbjoKR2ViZXIgdGhlIHNvbiBvZiBVcmkgd2FzIGluIHRoZSBjb3VudHJ5IG9mIEdpbGVhZCwgaW4gdGhlIGNvdW50cnkgb2YgU2lob24ga2luZyBvZiB0aGUgQW1vcml0ZXMsIGFuZCBvZiBPZyBraW5nIG9mIEJhc2hhbjsgYW5kIGhlIHdhcyB0aGUgb25seSBvZmZpY2VyIHdoaWNoIHdhcyBpbiB0aGUgbGFuZC4KSnVkYWggYW5kIElzcmFlbCB3ZXJlIG1hbnksIGFzIHRoZSBzYW5kIHdoaWNoIGlzIGJ5IHRoZSBzZWEgaW4gbXVsdGl0dWRlLCBlYXRpbmcgYW5kIGRyaW5raW5nLCBhbmQgbWFraW5nIG1lcnJ5LgpBbmQgU29sb21vbiByZWlnbmVkIG92ZXIgYWxsIGtpbmdkb21zIGZyb20gdGhlIHJpdmVyIHVudG8gdGhlIGxhbmQgb2YgdGhlIFBoaWxpc3RpbmVzLCBhbmQgdW50byB0aGUgYm9yZGVyIG9mIEVneXB0OiB0aGV5IGJyb3VnaHQgcHJlc2VudHMsIGFuZCBzZXJ2ZWQgU29sb21vbiBhbGwgdGhlIGRheXMgb2YgaGlzIGxpZmUuCkFuZCBTb2xvbW9uJ3MgcHJvdmlzaW9uIGZvciBvbmUgZGF5IHdhcyB0aGlydHkgbWVhc3VyZXMgb2YgZmluZSBmbG91ciwgYW5kIHRocmVlc2NvcmUgbWVhc3VyZXMgb2YgbWVhbCwKVGVuIGZhdCBveGVuLCBhbmQgdHdlbnR5IG94ZW4gb3V0IG9mIHRoZSBwYXN0dXJlcywgYW5kIGFuIGh1bmRyZWQgc2hlZXAsIGJlc2lkZSBoYXJ0cywgYW5kIHJvZWJ1Y2tzLCBhbmQgZmFsbG93ZGVlciwgYW5kIGZhdHRlZCBmb3dsLgpGb3IgaGUgaGFkIGRvbWluaW9uIG92ZXIgYWxsIHRoZSByZWdpb24gb24gdGhpcyBzaWRlIHRoZSByaXZlciwgZnJvbSBUaXBoc2FoIGV2ZW4gdG8gQXp6YWgsIG92ZXIgYWxsIHRoZSBraW5ncyBvbiB0aGlzIHNpZGUgdGhlIHJpdmVyOiBhbmQgaGUgaGFkIHBlYWNlIG9uIGFsbCBzaWRlcyByb3VuZCBhYm91dCBoaW0uCkFuZCBKdWRhaCBhbmQgSXNyYWVsIGR3ZWx0IHNhZmVseSwgZXZlcnkgbWFuIHVuZGVyIGhpcyB2aW5lIGFuZCB1bmRlciBoaXMgZmlnIHRyZWUsIGZyb20gRGFuIGV2ZW4gdG8gQmVlcnNoZWJhLCBhbGwgdGhlIGRheXMgb2YgU29sb21vbi4KQW5kIFNvbG9tb24gaGFkIGZvcnR5IHRob3VzYW5kIHN0YWxscyBvZiBob3JzZXMgZm9yIGhpcyBjaGFyaW90cywgYW5kIHR3ZWx2ZSB0aG91c2FuZCBob3JzZW1lbi4KQW5kIHRob3NlIG9mZmljZXJzIHByb3ZpZGVkIHZpY3R1YWwgZm9yIGtpbmcgU29sb21vbiwgYW5kIGZvciBhbGwgdGhhdCBjYW1lIHVudG8ga2luZyBTb2xvbW9uJ3MgdGFibGUsIGV2ZXJ5IG1hbiBpbiBoaXMgbW9udGg6IHRoZXkgbGFja2VkIG5vdGhpbmcuCkJhcmxleSBhbHNvIGFuZCBzdHJhdyBmb3IgdGhlIGhvcnNlcyBhbmQgZHJvbWVkYXJpZXMgYnJvdWdodCB0aGV5IHVudG8gdGhlIHBsYWNlIHdoZXJlIHRoZSBvZmZpY2VycyB3ZXJlLCBldmVyeSBtYW4gYWNjb3JkaW5nIHRvIGhpcyBjaGFyZ2UuCkFuZCBHb2QgZ2F2ZSBTb2xvbW9uIHdpc2RvbSBhbmQgdW5kZXJzdGFuZGluZyBleGNlZWRpbmcgbXVjaCwgYW5kIGxhcmdlbmVzcyBvZiBoZWFydCwgZXZlbiBhcyB0aGUgc2FuZCB0aGF0IGlzIG9uIHRoZSBzZWEgc2hvcmUuCkFuZCBTb2xvbW9uJ3Mgd2lzZG9tIGV4Y2VsbGVkIHRoZSB3aXNkb20gb2YgYWxsIHRoZSBjaGlsZHJlbiBvZiB0aGUgZWFzdCBjb3VudHJ5LCBhbmQgYWxsIHRoZSB3aXNkb20gb2YgRWd5cHQuCkZvciBoZSB3YXMgd2lzZXIgdGhhbiBhbGwgbWVuOyB0aGFuIEV0aGFuIHRoZSBFenJhaGl0ZSwgYW5kIEhlbWFuLCBhbmQgQ2hhbGNvbCwgYW5kIERhcmRhLCB0aGUgc29ucyBvZiBNYWhvbDogYW5kIGhpcyBmYW1lIHdhcyBpbiBhbGwgbmF0aW9ucyByb3VuZCBhYm91dC4KQW5kIGhlIHNwYWtlIHRocmVlIHRob3VzYW5kIHByb3ZlcmJzOiBhbmQgaGlzIHNvbmdzIHdlcmUgYSB0aG91c2FuZCBhbmQgZml2ZS4KQW5kIGhlIHNwYWtlIG9mIHRyZWVzLCBmcm9tIHRoZSBjZWRhciB0cmVlIHRoYXQgaXMgaW4gTGViYW5vbiBldmVuIHVudG8gdGhlIGh5c3NvcCB0aGF0IHNwcmluZ2V0aCBvdXQgb2YgdGhlIHdhbGw6IGhlIHNwYWtlIGFsc28gb2YgYmVhc3RzLCBhbmQgb2YgZm93bCwgYW5kIG9mIGNyZWVwaW5nIHRoaW5ncywgYW5kIG9mIGZpc2hlcy4KQW5kIHRoZXJlIGNhbWUgb2YgYWxsIHBlb3BsZSB0byBoZWFyIHRoZSB3aXNkb20gb2YgU29sb21vbiwgZnJvbSBhbGwga2luZ3Mgb2YgdGhlIGVhcnRoLCB3aGljaCBoYWQgaGVhcmQgb2YgaGlzIHdpc2RvbS4KQW5kIEhpcmFtIGtpbmcgb2YgVHlyZSBzZW50IGhpcyBzZXJ2YW50cyB1bnRvIFNvbG9tb247IGZvciBoZSBoYWQgaGVhcmQgdGhhdCB0aGV5IGhhZCBhbm9pbnRlZCBoaW0ga2luZyBpbiB0aGUgcm9vbSBvZiBoaXMgZmF0aGVyOiBmb3IgSGlyYW0gd2FzIGV2ZXIgYSBsb3ZlciBvZiBEYXZpZC4KQW5kIFNvbG9tb24gc2VudCB0byBIaXJhbSwgc2F5aW5nLApUaG91IGtub3dlc3QgaG93IHRoYXQgRGF2aWQgbXkgZmF0aGVyIGNvdWxkIG5vdCBidWlsZCBhbiBob3VzZSB1bnRvIHRoZSBuYW1lIG9mIHRoZSBMT1JEIGhpcyBHb2QgZm9yIHRoZSB3YXJzIHdoaWNoIHdlcmUgYWJvdXQgaGltIG9uIGV2ZXJ5IHNpZGUsIHVudGlsIHRoZSBMT1JEIHB1dCB0aGVtIHVuZGVyIHRoZSBzb2xlcyBvZiBoaXMgZmVldC4KQnV0IG5vdyB0aGUgTE9SRCBteSBHb2QgaGF0aCBnaXZlbiBtZSByZXN0IG9uIGV2ZXJ5IHNpZGUsIHNvIHRoYXQgdGhlcmUgaXMgbmVpdGhlciBhZHZlcnNhcnkgbm9yIGV2aWwgb2NjdXJyZW50LgpBbmQsIGJlaG9sZCwgSSBwdXJwb3NlIHRvIGJ1aWxkIGFuIGhvdXNlIHVudG8gdGhlIG5hbWUgb2YgdGhlIExPUkQgbXkgR29kLCBhcyB0aGUgTE9SRCBzcGFrZSB1bnRvIERhdmlkIG15IGZhdGhlciwgc2F5aW5nLCBUaHkgc29uLCB3aG9tIEkgd2lsbCBzZXQgdXBvbiB0aHkgdGhyb25lIGluIHRoeSByb29tLCBoZSBzaGFsbCBidWlsZCBhbiBob3VzZSB1bnRvIG15IG5hbWUuCk5vdyB0aGVyZWZvcmUgY29tbWFuZCB0aG91IHRoYXQgdGhleSBoZXcgbWUgY2VkYXIgdHJlZXMgb3V0IG9mIExlYmFub247IGFuZCBteSBzZXJ2YW50cyBzaGFsbCBiZSB3aXRoIHRoeSBzZXJ2YW50czogYW5kIHVudG8gdGhlZSB3aWxsIEkgZ2l2ZSBoaXJlIGZvciB0aHkgc2VydmFudHMgYWNjb3JkaW5nIHRvIGFsbCB0aGF0IHRob3Ugc2hhbHQgYXBwb2ludDogZm9yIHRob3Uga25vd2VzdCB0aGF0IHRoZXJlIGlzIG5vdCBhbW9uZyB1cyBhbnkgdGhhdCBjYW4gc2tpbGwgdG8gaGV3IHRpbWJlciBsaWtlIHVudG8gdGhlIFNpZG9uaWFucy4KQW5kIGl0IGNhbWUgdG8gcGFzcywgd2hlbiBIaXJhbSBoZWFyZCB0aGUgd29yZHMgb2YgU29sb21vbiwgdGhhdCBoZSByZWpvaWNlZCBncmVhdGx5LCBhbmQgc2FpZCwgQmxlc3NlZCBiZSB0aGUgTE9SRCB0aGlzIGRheSwgd2hpY2ggaGF0aCBnaXZlbiB1bnRvIERhdmlkIGEgd2lzZSBzb24gb3ZlciB0aGlzIGdyZWF0IHBlb3BsZS4KQW5kIEhpcmFtIHNlbnQgdG8gU29sb21vbiwgc2F5aW5nLCBJIGhhdmUgY29uc2lkZXJlZCB0aGUgdGhpbmdzIHdoaWNoIHRob3Ugc2VudGVzdCB0byBtZSBmb3I6IGFuZCBJIHdpbGwgZG8gYWxsIHRoeSBkZXNpcmUgY29uY2VybmluZyB0aW1iZXIgb2YgY2VkYXIsIGFuZCBjb25jZXJuaW5nIHRpbWJlciBvZiBmaXIuCk15IHNlcnZhbnRzIHNoYWxsIGJyaW5nIHRoZW0gZG93biBmcm9tIExlYmFub24gdW50byB0aGUgc2VhOiBhbmQgSSB3aWxsIGNvbnZleSB0aGVtIGJ5IHNlYSBpbiBmbG9hdHMgdW50byB0aGUgcGxhY2UgdGhhdCB0aG91IHNoYWx0IGFwcG9pbnQgbWUsIGFuZCB3aWxsIGNhdXNlIHRoZW0gdG8gYmUgZGlzY2hhcmdlZCB0aGVyZSwgYW5kIHRob3Ugc2hhbHQgcmVjZWl2ZSB0aGVtOiBhbmQgdGhvdSBzaGFsdCBhY2NvbXBsaXNoIG15IGRlc2lyZSwgaW4gZ2l2aW5nIGZvb2QgZm9yIG15IGhvdXNlaG9sZC4KU28gSGlyYW0gZ2F2ZSBTb2xvbW9uIGNlZGFyIHRyZWVzIGFuZCBmaXIgdHJlZXMgYWNjb3JkaW5nIHRvIGFsbCBoaXMgZGVzaXJlLgpBbmQgU29sb21vbiBnYXZlIEhpcmFtIHR3ZW50eSB0aG91c2FuZCBtZWFzdXJlcyBvZiB3aGVhdCBmb3IgZm9vZCB0byBoaXMgaG91c2Vob2xkLCBhbmQgdHdlbnR5IG1lYXN1cmVzIG9mIHB1cmUgb2lsOiB0aHVzIGdhdmUgU29sb21vbiB0byBIaXJhbSB5ZWFyIGJ5IHllYXIuCkFuZCB0aGUgTE9SRCBnYXZlIFNvbG9tb24gd2lzZG9tLCBhcyBoZSBwcm9taXNlZCBoaW06IGFuZCB0aGVyZSB3YXMgcGVhY2UgYmV0d2VlbiBIaXJhbSBhbmQgU29sb21vbjsgYW5kIHRoZXkgdHdvIG1hZGUgYSBsZWFndWUgdG9nZXRoZXIuCkFuZCBraW5nIFNvbG9tb24gcmFpc2VkIGEgbGV2eSBvdXQgb2YgYWxsIElzcmFlbDsgYW5kIHRoZSBsZXZ5IHdhcyB0aGlydHkgdGhvdXNhbmQgbWVuLgpBbmQgaGUgc2VudCB0aGVtIHRvIExlYmFub24sIHRlbiB0aG91c2FuZCBhIG1vbnRoIGJ5IGNvdXJzZXM6IGEgbW9udGggdGhleSB3ZXJlIGluIExlYmFub24sIGFuZCB0d28gbW9udGhzIGF0IGhvbWU6IGFuZCBBZG9uaXJhbSB3YXMgb3ZlciB0aGUgbGV2eS4KQW5kIFNvbG9tb24gaGFkIHRocmVlc2NvcmUgYW5kIHRlbiB0aG91c2FuZCB0aGF0IGJhcmUgYnVyZGVucywgYW5kIGZvdXJzY29yZSB0aG91c2FuZCBoZXdlcnMgaW4gdGhlIG1vdW50YWluczsKQmVzaWRlIHRoZSBjaGllZiBvZiBTb2xvbW9uJ3Mgb2ZmaWNlcnMgd2hpY2ggd2VyZSBvdmVyIHRoZSB3b3JrLCB0aHJlZSB0aG91c2FuZCBhbmQgdGhyZWUgaHVuZHJlZCwgd2hpY2ggcnVsZWQgb3ZlciB0aGUgcGVvcGxlIHRoYXQgd3JvdWdodCBpbiB0aGUgd29yay4KQW5kIHRoZSBraW5nIGNvbW1hbmRlZCwgYW5kIHRoZXkgYnJvdWdodCBncmVhdCBzdG9uZXMsIGNvc3RseSBzdG9uZXMsIGFuZCBoZXdlZCBzdG9uZXMsIHRvIGxheSB0aGUgZm91bmRhdGlvbiBvZiB0aGUgaG91c2UuCkFuZCBTb2xvbW9uJ3MgYnVpbGRlcnMgYW5kIEhpcmFtJ3MgYnVpbGRlcnMgZGlkIGhldyB0aGVtLCBhbmQgdGhlIHN0b25lc3F1YXJlcnM6IHNvIHRoZXkgcHJlcGFyZWQgdGltYmVyIGFuZCBzdG9uZXMgdG8gYnVpbGQgdGhlIGhvdXNlLgpBbmQgaXQgY2FtZSB0byBwYXNzIGluIHRoZSBmb3VyIGh1bmRyZWQgYW5kIGVpZ2h0aWV0aCB5ZWFyIGFmdGVyIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgd2VyZSBjb21lIG91dCBvZiB0aGUgbGFuZCBvZiBFZ3lwdCwgaW4gdGhlIGZvdXJ0aCB5ZWFyIG9mIFNvbG9tb24ncyByZWlnbiBvdmVyIElzcmFlbCwgaW4gdGhlIG1vbnRoIFppZiwgd2hpY2ggaXMgdGhlIHNlY29uZCBtb250aCwgdGhhdCBoZSBiZWdhbiB0byBidWlsZCB0aGUgaG91c2Ugb2YgdGhlIExPUkQuCkFuZCB0aGUgaG91c2Ugd2hpY2gga2luZyBTb2xvbW9uIGJ1aWx0IGZvciB0aGUgTE9SRCwgdGhlIGxlbmd0aCB0aGVyZW9mIHdhcyB0aHJlZXNjb3JlIGN1Yml0cywgYW5kIHRoZSBicmVhZHRoIHRoZXJlb2YgdHdlbnR5IGN1Yml0cywgYW5kIHRoZSBoZWlnaHQgdGhlcmVvZiB0aGlydHkgY3ViaXRzLgpBbmQgdGhlIHBvcmNoIGJlZm9yZSB0aGUgdGVtcGxlIG9mIHRoZSBob3VzZSwgdHdlbnR5IGN1Yml0cyB3YXMgdGhlIGxlbmd0aCB0aGVyZW9mLCBhY2NvcmRpbmcgdG8gdGhlIGJyZWFkdGggb2YgdGhlIGhvdXNlOyBhbmQgdGVuIGN1Yml0cyB3YXMgdGhlIGJyZWFkdGggdGhlcmVvZiBiZWZvcmUgdGhlIGhvdXNlLgpBbmQgZm9yIHRoZSBob3VzZSBoZSBtYWRlIHdpbmRvd3Mgb2YgbmFycm93IGxpZ2h0cy4KQW5kIGFnYWluc3QgdGhlIHdhbGwgb2YgdGhlIGhvdXNlIGhlIGJ1aWx0IGNoYW1iZXJzIHJvdW5kIGFib3V0LCBhZ2FpbnN0IHRoZSB3YWxscyBvZiB0aGUgaG91c2Ugcm91bmQgYWJvdXQsIGJvdGggb2YgdGhlIHRlbXBsZSBhbmQgb2YgdGhlIG9yYWNsZTogYW5kIGhlIG1hZGUgY2hhbWJlcnMgcm91bmQgYWJvdXQ6ClRoZSBuZXRoZXJtb3N0IGNoYW1iZXIgd2FzIGZpdmUgY3ViaXRzIGJyb2FkLCBhbmQgdGhlIG1pZGRsZSB3YXMgc2l4IGN1Yml0cyBicm9hZCwgYW5kIHRoZSB0aGlyZCB3YXMgc2V2ZW4gY3ViaXRzIGJyb2FkOiBmb3Igd2l0aG91dCBpbiB0aGUgd2FsbCBvZiB0aGUgaG91c2UgaGUgbWFkZSBuYXJyb3dlZCByZXN0cyByb3VuZCBhYm91dCwgdGhhdCB0aGUgYmVhbXMgc2hvdWxkIG5vdCBiZSBmYXN0ZW5lZCBpbiB0aGUgd2FsbHMgb2YgdGhlIGhvdXNlLgpBbmQgdGhlIGhvdXNlLCB3aGVuIGl0IHdhcyBpbiBidWlsZGluZywgd2FzIGJ1aWx0IG9mIHN0b25lIG1hZGUgcmVhZHkgYmVmb3JlIGl0IHdhcyBicm91Z2h0IHRoaXRoZXI6IHNvIHRoYXQgdGhlcmUgd2FzIG5laXRoZXIgaGFtbWVyIG5vciBheGUgbm9yIGFueSB0b29sIG9mIGlyb24gaGVhcmQgaW4gdGhlIGhvdXNlLCB3aGlsZSBpdCB3YXMgaW4gYnVpbGRpbmcuClRoZSBkb29yIGZvciB0aGUgbWlkZGxlIGNoYW1iZXIgd2FzIGluIHRoZSByaWdodCBzaWRlIG9mIHRoZSBob3VzZTogYW5kIHRoZXkgd2VudCB1cCB3aXRoIHdpbmRpbmcgc3RhaXJzIGludG8gdGhlIG1pZGRsZSBjaGFtYmVyLCBhbmQgb3V0IG9mIHRoZSBtaWRkbGUgaW50byB0aGUgdGhpcmQuClNvIGhlIGJ1aWx0IHRoZSBob3VzZSwgYW5kIGZpbmlzaGVkIGl0OyBhbmQgY292ZXJlZCB0aGUgaG91c2Ugd2l0aCBiZWFtcyBhbmQgYm9hcmRzIG9mIGNlZGFyLgpBbmQgdGhlbiBoZSBidWlsdCBjaGFtYmVycyBhZ2FpbnN0IGFsbCB0aGUgaG91c2UsIGZpdmUgY3ViaXRzIGhpZ2g6IGFuZCB0aGV5IHJlc3RlZCBvbiB0aGUgaG91c2Ugd2l0aCB0aW1iZXIgb2YgY2VkYXIuCkFuZCB0aGUgd29yZCBvZiB0aGUgTE9SRCBjYW1lIHRvIFNvbG9tb24sIHNheWluZywKQ29uY2VybmluZyB0aGlzIGhvdXNlIHdoaWNoIHRob3UgYXJ0IGluIGJ1aWxkaW5nLCBpZiB0aG91IHdpbHQgd2FsayBpbiBteSBzdGF0dXRlcywgYW5kIGV4ZWN1dGUgbXkganVkZ21lbnRzLCBhbmQga2VlcCBhbGwgbXkgY29tbWFuZG1lbnRzIHRvIHdhbGsgaW4gdGhlbTsgdGhlbiB3aWxsIEkgcGVyZm9ybSBteSB3b3JkIHdpdGggdGhlZSwgd2hpY2ggSSBzcGFrZSB1bnRvIERhdmlkIHRoeSBmYXRoZXI6CkFuZCBJIHdpbGwgZHdlbGwgYW1vbmcgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgYW5kIHdpbGwgbm90IGZvcnNha2UgbXkgcGVvcGxlIElzcmFlbC4KU28gU29sb21vbiBidWlsdCB0aGUgaG91c2UsIGFuZCBmaW5pc2hlZCBpdC4KQW5kIGhlIGJ1aWx0IHRoZSB3YWxscyBvZiB0aGUgaG91c2Ugd2l0aGluIHdpdGggYm9hcmRzIG9mIGNlZGFyLCBib3RoIHRoZSBmbG9vciBvZiB0aGUgaG91c2UsIGFuZCB0aGUgd2FsbHMgb2YgdGhlIGNlaWxpbmc6IGFuZCBoZSBjb3ZlcmVkIHRoZW0gb24gdGhlIGluc2lkZSB3aXRoIHdvb2QsIGFuZCBjb3ZlcmVkIHRoZSBmbG9vciBvZiB0aGUgaG91c2Ugd2l0aCBwbGFua3Mgb2YgZmlyLgpBbmQgaGUgYnVpbHQgdHdlbnR5IGN1Yml0cyBvbiB0aGUgc2lkZXMgb2YgdGhlIGhvdXNlLCBib3RoIHRoZSBmbG9vciBhbmQgdGhlIHdhbGxzIHdpdGggYm9hcmRzIG9mIGNlZGFyOiBoZSBldmVuIGJ1aWx0IHRoZW0gZm9yIGl0IHdpdGhpbiwgZXZlbiBmb3IgdGhlIG9yYWNsZSwgZXZlbiBmb3IgdGhlIG1vc3QgaG9seSBwbGFjZS4KQW5kIHRoZSBob3VzZSwgdGhhdCBpcywgdGhlIHRlbXBsZSBiZWZvcmUgaXQsIHdhcyBmb3J0eSBjdWJpdHMgbG9uZy4KQW5kIHRoZSBjZWRhciBvZiB0aGUgaG91c2Ugd2l0aGluIHdhcyBjYXJ2ZWQgd2l0aCBrbm9wcyBhbmQgb3BlbiBmbG93ZXJzOiBhbGwgd2FzIGNlZGFyOyB0aGVyZSB3YXMgbm8gc3RvbmUgc2Vlbi4KQW5kIHRoZSBvcmFjbGUgaGUgcHJlcGFyZWQgaW4gdGhlIGhvdXNlIHdpdGhpbiwgdG8gc2V0IHRoZXJlIHRoZSBhcmsgb2YgdGhlIGNvdmVuYW50IG9mIHRoZSBMT1JELgpBbmQgdGhlIG9yYWNsZSBpbiB0aGUgZm9yZXBhcnQgd2FzIHR3ZW50eSBjdWJpdHMgaW4gbGVuZ3RoLCBhbmQgdHdlbnR5IGN1Yml0cyBpbiBicmVhZHRoLCBhbmQgdHdlbnR5IGN1Yml0cyBpbiB0aGUgaGVpZ2h0IHRoZXJlb2Y6IGFuZCBoZSBvdmVybGFpZCBpdCB3aXRoIHB1cmUgZ29sZDsgYW5kIHNvIGNvdmVyZWQgdGhlIGFsdGFyIHdoaWNoIHdhcyBvZiBjZWRhci4KU28gU29sb21vbiBvdmVybGFpZCB0aGUgaG91c2Ugd2l0aGluIHdpdGggcHVyZSBnb2xkOiBhbmQgaGUgbWFkZSBhIHBhcnRpdGlvbiBieSB0aGUgY2hhaW5zIG9mIGdvbGQgYmVmb3JlIHRoZSBvcmFjbGU7IGFuZCBoZSBvdmVybGFpZCBpdCB3aXRoIGdvbGQuCkFuZCB0aGUgd2hvbGUgaG91c2UgaGUgb3ZlcmxhaWQgd2l0aCBnb2xkLCB1bnRpbCBoZSBoYWQgZmluaXNoZWQgYWxsIHRoZSBob3VzZTogYWxzbyB0aGUgd2hvbGUgYWx0YXIgdGhhdCB3YXMgYnkgdGhlIG9yYWNsZSBoZSBvdmVybGFpZCB3aXRoIGdvbGQuCkFuZCB3aXRoaW4gdGhlIG9yYWNsZSBoZSBtYWRlIHR3byBjaGVydWJpbXMgb2Ygb2xpdmUgdHJlZSwgZWFjaCB0ZW4gY3ViaXRzIGhpZ2guCkFuZCBmaXZlIGN1Yml0cyB3YXMgdGhlIG9uZSB3aW5nIG9mIHRoZSBjaGVydWIsIGFuZCBmaXZlIGN1Yml0cyB0aGUgb3RoZXIgd2luZyBvZiB0aGUgY2hlcnViOiBmcm9tIHRoZSB1dHRlcm1vc3QgcGFydCBvZiB0aGUgb25lIHdpbmcgdW50byB0aGUgdXR0ZXJtb3N0IHBhcnQgb2YgdGhlIG90aGVyIHdlcmUgdGVuIGN1Yml0cy4KQW5kIHRoZSBvdGhlciBjaGVydWIgd2FzIHRlbiBjdWJpdHM6IGJvdGggdGhlIGNoZXJ1YmltcyB3ZXJlIG9mIG9uZSBtZWFzdXJlIGFuZCBvbmUgc2l6ZS4KVGhlIGhlaWdodCBvZiB0aGUgb25lIGNoZXJ1YiB3YXMgdGVuIGN1Yml0cywgYW5kIHNvIHdhcyBpdCBvZiB0aGUgb3RoZXIgY2hlcnViLgpBbmQgaGUgc2V0IHRoZSBjaGVydWJpbXMgd2l0aGluIHRoZSBpbm5lciBob3VzZTogYW5kIHRoZXkgc3RyZXRjaGVkIGZvcnRoIHRoZSB3aW5ncyBvZiB0aGUgY2hlcnViaW1zLCBzbyB0aGF0IHRoZSB3aW5nIG9mIHRoZSBvbmUgdG91Y2hlZCB0aGUgb25lIHdhbGwsIGFuZCB0aGUgd2luZyBvZiB0aGUgb3RoZXIgY2hlcnViIHRvdWNoZWQgdGhlIG90aGVyIHdhbGw7IGFuZCB0aGVpciB3aW5ncyB0b3VjaGVkIG9uZSBhbm90aGVyIGluIHRoZSBtaWRzdCBvZiB0aGUgaG91c2UuCkFuZCBoZSBvdmVybGFpZCB0aGUgY2hlcnViaW1zIHdpdGggZ29sZC4KQW5kIGhlIGNhcnZlZCBhbGwgdGhlIHdhbGxzIG9mIHRoZSBob3VzZSByb3VuZCBhYm91dCB3aXRoIGNhcnZlZCBmaWd1cmVzIG9mIGNoZXJ1YmltcyBhbmQgcGFsbSB0cmVlcyBhbmQgb3BlbiBmbG93ZXJzLCB3aXRoaW4gYW5kIHdpdGhvdXQuCkFuZCB0aGUgZmxvb3JzIG9mIHRoZSBob3VzZSBoZSBvdmVybGFpZCB3aXRoIGdvbGQsIHdpdGhpbiBhbmQgd2l0aG91dC4KQW5kIGZvciB0aGUgZW50ZXJpbmcgb2YgdGhlIG9yYWNsZSBoZSBtYWRlIGRvb3JzIG9mIG9saXZlIHRyZWU6IHRoZSBsaW50ZWwgYW5kIHNpZGUgcG9zdHMgd2VyZSBhIGZpZnRoIHBhcnQgb2YgdGhlIHdhbGwuClRoZSB0d28gZG9vcnMgYWxzbyB3ZXJlIG9mIG9saXZlIHRyZWU7IGFuZCBoZSBjYXJ2ZWQgdXBvbiB0aGVtIGNhcnZpbmdzIG9mIGNoZXJ1YmltcyBhbmQgcGFsbSB0cmVlcyBhbmQgb3BlbiBmbG93ZXJzLCBhbmQgb3ZlcmxhaWQgdGhlbSB3aXRoIGdvbGQsIGFuZCBzcHJlYWQgZ29sZCB1cG9uIHRoZSBjaGVydWJpbXMsIGFuZCB1cG9uIHRoZSBwYWxtIHRyZWVzLgpTbyBhbHNvIG1hZGUgaGUgZm9yIHRoZSBkb29yIG9mIHRoZSB0ZW1wbGUgcG9zdHMgb2Ygb2xpdmUgdHJlZSwgYSBmb3VydGggcGFydCBvZiB0aGUgd2FsbC4KQW5kIHRoZSB0d28gZG9vcnMgd2VyZSBvZiBmaXIgdHJlZTogdGhlIHR3byBsZWF2ZXMgb2YgdGhlIG9uZSBkb29yIHdlcmUgZm9sZGluZywgYW5kIHRoZSB0d28gbGVhdmVzIG9mIHRoZSBvdGhlciBkb29yIHdlcmUgZm9sZGluZy4KQW5kIGhlIGNhcnZlZCB0aGVyZW9uIGNoZXJ1YmltcyBhbmQgcGFsbSB0cmVlcyBhbmQgb3BlbiBmbG93ZXJzOiBhbmQgY292ZXJlZCB0aGVtIHdpdGggZ29sZCBmaXR0ZWQgdXBvbiB0aGUgY2FydmVkIHdvcmsuCkFuZCBoZSBidWlsdCB0aGUgaW5uZXIgY291cnQgd2l0aCB0aHJlZSByb3dzIG9mIGhld2VkIHN0b25lLCBhbmQgYSByb3cgb2YgY2VkYXIgYmVhbXMuCkluIHRoZSBmb3VydGggeWVhciB3YXMgdGhlIGZvdW5kYXRpb24gb2YgdGhlIGhvdXNlIG9mIHRoZSBMT1JEIGxhaWQsIGluIHRoZSBtb250aCBaaWY6CkFuZCBpbiB0aGUgZWxldmVudGggeWVhciwgaW4gdGhlIG1vbnRoIEJ1bCwgd2hpY2ggaXMgdGhlIGVpZ2h0aCBtb250aCwgd2FzIHRoZSBob3VzZSBmaW5pc2hlZCB0aHJvdWdob3V0IGFsbCB0aGUgcGFydHMgdGhlcmVvZiwgYW5kIGFjY29yZGluZyB0byBhbGwgdGhlIGZhc2hpb24gb2YgaXQuIFNvIHdhcyBoZSBzZXZlbiB5ZWFycyBpbiBidWlsZGluZyBpdC4KQnV0IFNvbG9tb24gd2FzIGJ1aWxkaW5nIGhpcyBvd24gaG91c2UgdGhpcnRlZW4geWVhcnMsIGFuZCBoZSBmaW5pc2hlZCBhbGwgaGlzIGhvdXNlLgpIZSBidWlsdCBhbHNvIHRoZSBob3VzZSBvZiB0aGUgZm9yZXN0IG9mIExlYmFub247IHRoZSBsZW5ndGggdGhlcmVvZiB3YXMgYW4gaHVuZHJlZCBjdWJpdHMsIGFuZCB0aGUgYnJlYWR0aCB0aGVyZW9mIGZpZnR5IGN1Yml0cywgYW5kIHRoZSBoZWlnaHQgdGhlcmVvZiB0aGlydHkgY3ViaXRzLCB1cG9uIGZvdXIgcm93cyBvZiBjZWRhciBwaWxsYXJzLCB3aXRoIGNlZGFyIGJlYW1zIHVwb24gdGhlIHBpbGxhcnMuCkFuZCBpdCB3YXMgY292ZXJlZCB3aXRoIGNlZGFyIGFib3ZlIHVwb24gdGhlIGJlYW1zLCB0aGF0IGxheSBvbiBmb3J0eSBmaXZlIHBpbGxhcnMsIGZpZnRlZW4gaW4gYSByb3cuCkFuZCB0aGVyZSB3ZXJlIHdpbmRvd3MgaW4gdGhyZWUgcm93cywgYW5kIGxpZ2h0IHdhcyBhZ2FpbnN0IGxpZ2h0IGluIHRocmVlIHJhbmtzLgpBbmQgYWxsIHRoZSBkb29ycyBhbmQgcG9zdHMgd2VyZSBzcXVhcmUsIHdpdGggdGhlIHdpbmRvd3M6IGFuZCBsaWdodCB3YXMgYWdhaW5zdCBsaWdodCBpbiB0aHJlZSByYW5rcy4KQW5kIGhlIG1hZGUgYSBwb3JjaCBvZiBwaWxsYXJzOyB0aGUgbGVuZ3RoIHRoZXJlb2Ygd2FzIGZpZnR5IGN1Yml0cywgYW5kIHRoZSBicmVhZHRoIHRoZXJlb2YgdGhpcnR5IGN1Yml0czogYW5kIHRoZSBwb3JjaCB3YXMgYmVmb3JlIHRoZW06IGFuZCB0aGUgb3RoZXIgcGlsbGFycyBhbmQgdGhlIHRoaWNrIGJlYW0gd2VyZSBiZWZvcmUgdGhlbS4KVGhlbiBoZSBtYWRlIGEgcG9yY2ggZm9yIHRoZSB0aHJvbmUgd2hlcmUgaGUgbWlnaHQganVkZ2UsIGV2ZW4gdGhlIHBvcmNoIG9mIGp1ZGdtZW50OiBhbmQgaXQgd2FzIGNvdmVyZWQgd2l0aCBjZWRhciBmcm9tIG9uZSBzaWRlIG9mIHRoZSBmbG9vciB0byB0aGUgb3RoZXIuCkFuZCBoaXMgaG91c2Ugd2hlcmUgaGUgZHdlbHQgaGFkIGFub3RoZXIgY291cnQgd2l0aGluIHRoZSBwb3JjaCwgd2hpY2ggd2FzIG9mIHRoZSBsaWtlIHdvcmsuIFNvbG9tb24gbWFkZSBhbHNvIGFuIGhvdXNlIGZvciBQaGFyYW9oJ3MgZGF1Z2h0ZXIsIHdob20gaGUgaGFkIHRha2VuIHRvIHdpZmUsIGxpa2UgdW50byB0aGlzIHBvcmNoLgpBbGwgdGhlc2Ugd2VyZSBvZiBjb3N0bHkgc3RvbmVzLCBhY2NvcmRpbmcgdG8gdGhlIG1lYXN1cmVzIG9mIGhld2VkIHN0b25lcywgc2F3ZWQgd2l0aCBzYXdzLCB3aXRoaW4gYW5kIHdpdGhvdXQsIGV2ZW4gZnJvbSB0aGUgZm91bmRhdGlvbiB1bnRvIHRoZSBjb3BpbmcsIGFuZCBzbyBvbiB0aGUgb3V0c2lkZSB0b3dhcmQgdGhlIGdyZWF0IGNvdXJ0LgpBbmQgdGhlIGZvdW5kYXRpb24gd2FzIG9mIGNvc3RseSBzdG9uZXMsIGV2ZW4gZ3JlYXQgc3RvbmVzLCBzdG9uZXMgb2YgdGVuIGN1Yml0cywgYW5kIHN0b25lcyBvZiBlaWdodCBjdWJpdHMuCkFuZCBhYm92ZSB3ZXJlIGNvc3RseSBzdG9uZXMsIGFmdGVyIHRoZSBtZWFzdXJlcyBvZiBoZXdlZCBzdG9uZXMsIGFuZCBjZWRhcnMuCkFuZCB0aGUgZ3JlYXQgY291cnQgcm91bmQgYWJvdXQgd2FzIHdpdGggdGhyZWUgcm93cyBvZiBoZXdlZCBzdG9uZXMsIGFuZCBhIHJvdyBvZiBjZWRhciBiZWFtcywgYm90aCBmb3IgdGhlIGlubmVyIGNvdXJ0IG9mIHRoZSBob3VzZSBvZiB0aGUgTE9SRCwgYW5kIGZvciB0aGUgcG9yY2ggb2YgdGhlIGhvdXNlLgpBbmQga2luZyBTb2xvbW9uIHNlbnQgYW5kIGZldGNoZWQgSGlyYW0gb3V0IG9mIFR5cmUuCkhlIHdhcyBhIHdpZG93J3Mgc29uIG9mIHRoZSB0cmliZSBvZiBOYXBodGFsaSwgYW5kIGhpcyBmYXRoZXIgd2FzIGEgbWFuIG9mIFR5cmUsIGEgd29ya2VyIGluIGJyYXNzOiBhbmQgaGUgd2FzIGZpbGxlZCB3aXRoIHdpc2RvbSwgYW5kIHVuZGVyc3RhbmRpbmcsIGFuZCBjdW5uaW5nIHRvIHdvcmsgYWxsIHdvcmtzIGluIGJyYXNzLiBBbmQgaGUgY2FtZSB0byBraW5nIFNvbG9tb24sIGFuZCB3cm91Z2h0IGFsbCBoaXMgd29yay4KRm9yIGhlIGNhc3QgdHdvIHBpbGxhcnMgb2YgYnJhc3MsIG9mIGVpZ2h0ZWVuIGN1Yml0cyBoaWdoIGFwaWVjZTogYW5kIGEgbGluZSBvZiB0d2VsdmUgY3ViaXRzIGRpZCBjb21wYXNzIGVpdGhlciBvZiB0aGVtIGFib3V0LgpBbmQgaGUgbWFkZSB0d28gY2hhcGl0ZXJzIG9mIG1vbHRlbiBicmFzcywgdG8gc2V0IHVwb24gdGhlIHRvcHMgb2YgdGhlIHBpbGxhcnM6IHRoZSBoZWlnaHQgb2YgdGhlIG9uZSBjaGFwaXRlciB3YXMgZml2ZSBjdWJpdHMsIGFuZCB0aGUgaGVpZ2h0IG9mIHRoZSBvdGhlciBjaGFwaXRlciB3YXMgZml2ZSBjdWJpdHM6CkFuZCBuZXRzIG9mIGNoZWNrZXIgd29yaywgYW5kIHdyZWF0aHMgb2YgY2hhaW4gd29yaywgZm9yIHRoZSBjaGFwaXRlcnMgd2hpY2ggd2VyZSB1cG9uIHRoZSB0b3Agb2YgdGhlIHBpbGxhcnM7IHNldmVuIGZvciB0aGUgb25lIGNoYXBpdGVyLCBhbmQgc2V2ZW4gZm9yIHRoZSBvdGhlciBjaGFwaXRlci4KQW5kIGhlIG1hZGUgdGhlIHBpbGxhcnMsIGFuZCB0d28gcm93cyByb3VuZCBhYm91dCB1cG9uIHRoZSBvbmUgbmV0d29yaywgdG8gY292ZXIgdGhlIGNoYXBpdGVycyB0aGF0IHdlcmUgdXBvbiB0aGUgdG9wLCB3aXRoIHBvbWVncmFuYXRlczogYW5kIHNvIGRpZCBoZSBmb3IgdGhlIG90aGVyIGNoYXBpdGVyLgpBbmQgdGhlIGNoYXBpdGVycyB0aGF0IHdlcmUgdXBvbiB0aGUgdG9wIG9mIHRoZSBwaWxsYXJzIHdlcmUgb2YgbGlseSB3b3JrIGluIHRoZSBwb3JjaCwgZm91ciBjdWJpdHMuCkFuZCB0aGUgY2hhcGl0ZXJzIHVwb24gdGhlIHR3byBwaWxsYXJzIGhhZCBwb21lZ3JhbmF0ZXMgYWxzbyBhYm92ZSwgb3ZlciBhZ2FpbnN0IHRoZSBiZWxseSB3aGljaCB3YXMgYnkgdGhlIG5ldHdvcms6IGFuZCB0aGUgcG9tZWdyYW5hdGVzIHdlcmUgdHdvIGh1bmRyZWQgaW4gcm93cyByb3VuZCBhYm91dCB1cG9uIHRoZSBvdGhlciBjaGFwaXRlci4KQW5kIGhlIHNldCB1cCB0aGUgcGlsbGFycyBpbiB0aGUgcG9yY2ggb2YgdGhlIHRlbXBsZTogYW5kIGhlIHNldCB1cCB0aGUgcmlnaHQgcGlsbGFyLCBhbmQgY2FsbGVkIHRoZSBuYW1lIHRoZXJlb2YgSmFjaGluOiBhbmQgaGUgc2V0IHVwIHRoZSBsZWZ0IHBpbGxhciwgYW5kIGNhbGxlZCB0aGUgbmFtZSB0aGVyZW9mIEJvYXouCkFuZCB1cG9uIHRoZSB0b3Agb2YgdGhlIHBpbGxhcnMgd2FzIGxpbHkgd29yazogc28gd2FzIHRoZSB3b3JrIG9mIHRoZSBwaWxsYXJzIGZpbmlzaGVkLgpBbmQgaGUgbWFkZSBhIG1vbHRlbiBzZWEsIHRlbiBjdWJpdHMgZnJvbSB0aGUgb25lIGJyaW0gdG8gdGhlIG90aGVyOiBpdCB3YXMgcm91bmQgYWxsIGFib3V0LCBhbmQgaGlzIGhlaWdodCB3YXMgZml2ZSBjdWJpdHM6IGFuZCBhIGxpbmUgb2YgdGhpcnR5IGN1Yml0cyBkaWQgY29tcGFzcyBpdCByb3VuZCBhYm91dC4KQW5kIHVuZGVyIHRoZSBicmltIG9mIGl0IHJvdW5kIGFib3V0IHRoZXJlIHdlcmUga25vcHMgY29tcGFzc2luZyBpdCwgdGVuIGluIGEgY3ViaXQsIGNvbXBhc3NpbmcgdGhlIHNlYSByb3VuZCBhYm91dDogdGhlIGtub3BzIHdlcmUgY2FzdCBpbiB0d28gcm93cywgd2hlbiBpdCB3YXMgY2FzdC4KSXQgc3Rvb2QgdXBvbiB0d2VsdmUgb3hlbiwgdGhyZWUgbG9va2luZyB0b3dhcmQgdGhlIG5vcnRoLCBhbmQgdGhyZWUgbG9va2luZyB0b3dhcmQgdGhlIHdlc3QsIGFuZCB0aHJlZSBsb29raW5nIHRvd2FyZCB0aGUgc291dGgsIGFuZCB0aHJlZSBsb29raW5nIHRvd2FyZCB0aGUgZWFzdDogYW5kIHRoZSBzZWEgd2FzIHNldCBhYm92ZSB1cG9uIHRoZW0sIGFuZCBhbGwgdGhlaXIgaGluZGVyIHBhcnRzIHdlcmUgaW53YXJkLgpBbmQgaXQgd2FzIGFuIGhhbmQgYnJlYWR0aCB0aGljaywgYW5kIHRoZSBicmltIHRoZXJlb2Ygd2FzIHdyb3VnaHQgbGlrZSB0aGUgYnJpbSBvZiBhIGN1cCwgd2l0aCBmbG93ZXJzIG9mIGxpbGllczogaXQgY29udGFpbmVkIHR3byB0aG91c2FuZCBiYXRocy4KQW5kIGhlIG1hZGUgdGVuIGJhc2VzIG9mIGJyYXNzOyBmb3VyIGN1Yml0cyB3YXMgdGhlIGxlbmd0aCBvZiBvbmUgYmFzZSwgYW5kIGZvdXIgY3ViaXRzIHRoZSBicmVhZHRoIHRoZXJlb2YsIGFuZCB0aHJlZSBjdWJpdHMgdGhlIGhlaWdodCBvZiBpdC4KQW5kIHRoZSB3b3JrIG9mIHRoZSBiYXNlcyB3YXMgb24gdGhpcyBtYW5uZXI6IHRoZXkgaGFkIGJvcmRlcnMsIGFuZCB0aGUgYm9yZGVycyB3ZXJlIGJldHdlZW4gdGhlIGxlZGdlczoKQW5kIG9uIHRoZSBib3JkZXJzIHRoYXQgd2VyZSBiZXR3ZWVuIHRoZSBsZWRnZXMgd2VyZSBsaW9ucywgb3hlbiwgYW5kIGNoZXJ1YmltczogYW5kIHVwb24gdGhlIGxlZGdlcyB0aGVyZSB3YXMgYSBiYXNlIGFib3ZlOiBhbmQgYmVuZWF0aCB0aGUgbGlvbnMgYW5kIG94ZW4gd2VyZSBjZXJ0YWluIGFkZGl0aW9ucyBtYWRlIG9mIHRoaW4gd29yay4KQW5kIGV2ZXJ5IGJhc2UgaGFkIGZvdXIgYnJhc2VuIHdoZWVscywgYW5kIHBsYXRlcyBvZiBicmFzczogYW5kIHRoZSBmb3VyIGNvcm5lcnMgdGhlcmVvZiBoYWQgdW5kZXJzZXR0ZXJzOiB1bmRlciB0aGUgbGF2ZXIgd2VyZSB1bmRlcnNldHRlcnMgbW9sdGVuLCBhdCB0aGUgc2lkZSBvZiBldmVyeSBhZGRpdGlvbi4KQW5kIHRoZSBtb3V0aCBvZiBpdCB3aXRoaW4gdGhlIGNoYXBpdGVyIGFuZCBhYm92ZSB3YXMgYSBjdWJpdDogYnV0IHRoZSBtb3V0aCB0aGVyZW9mIHdhcyByb3VuZCBhZnRlciB0aGUgd29yayBvZiB0aGUgYmFzZSwgYSBjdWJpdCBhbmQgYW4gaGFsZjogYW5kIGFsc28gdXBvbiB0aGUgbW91dGggb2YgaXQgd2VyZSBncmF2aW5ncyB3aXRoIHRoZWlyIGJvcmRlcnMsIGZvdXJzcXVhcmUsIG5vdCByb3VuZC4KQW5kIHVuZGVyIHRoZSBib3JkZXJzIHdlcmUgZm91ciB3aGVlbHM7IGFuZCB0aGUgYXhsZXRyZWVzIG9mIHRoZSB3aGVlbHMgd2VyZSBqb2luZWQgdG8gdGhlIGJhc2U6IGFuZCB0aGUgaGVpZ2h0IG9mIGEgd2hlZWwgd2FzIGEgY3ViaXQgYW5kIGhhbGYgYSBjdWJpdC4KQW5kIHRoZSB3b3JrIG9mIHRoZSB3aGVlbHMgd2FzIGxpa2UgdGhlIHdvcmsgb2YgYSBjaGFyaW90IHdoZWVsOiB0aGVpciBheGxldHJlZXMsIGFuZCB0aGVpciBuYXZlcywgYW5kIHRoZWlyIGZlbGxvZXMsIGFuZCB0aGVpciBzcG9rZXMsIHdlcmUgYWxsIG1vbHRlbi4KQW5kIHRoZXJlIHdlcmUgZm91ciB1bmRlcnNldHRlcnMgdG8gdGhlIGZvdXIgY29ybmVycyBvZiBvbmUgYmFzZTogYW5kIHRoZSB1bmRlcnNldHRlcnMgd2VyZSBvZiB0aGUgdmVyeSBiYXNlIGl0c2VsZi4KQW5kIGluIHRoZSB0b3Agb2YgdGhlIGJhc2Ugd2FzIHRoZXJlIGEgcm91bmQgY29tcGFzcyBvZiBoYWxmIGEgY3ViaXQgaGlnaDogYW5kIG9uIHRoZSB0b3Agb2YgdGhlIGJhc2UgdGhlIGxlZGdlcyB0aGVyZW9mIGFuZCB0aGUgYm9yZGVycyB0aGVyZW9mIHdlcmUgb2YgdGhlIHNhbWUuCkZvciBvbiB0aGUgcGxhdGVzIG9mIHRoZSBsZWRnZXMgdGhlcmVvZiwgYW5kIG9uIHRoZSBib3JkZXJzIHRoZXJlb2YsIGhlIGdyYXZlZCBjaGVydWJpbXMsIGxpb25zLCBhbmQgcGFsbSB0cmVlcywgYWNjb3JkaW5nIHRvIHRoZSBwcm9wb3J0aW9uIG9mIGV2ZXJ5IG9uZSwgYW5kIGFkZGl0aW9ucyByb3VuZCBhYm91dC4KQWZ0ZXIgdGhpcyBtYW5uZXIgaGUgbWFkZSB0aGUgdGVuIGJhc2VzOiBhbGwgb2YgdGhlbSBoYWQgb25lIGNhc3RpbmcsIG9uZSBtZWFzdXJlLCBhbmQgb25lIHNpemUuClRoZW4gbWFkZSBoZSB0ZW4gbGF2ZXJzIG9mIGJyYXNzOiBvbmUgbGF2ZXIgY29udGFpbmVkIGZvcnR5IGJhdGhzOiBhbmQgZXZlcnkgbGF2ZXIgd2FzIGZvdXIgY3ViaXRzOiBhbmQgdXBvbiBldmVyeSBvbmUgb2YgdGhlIHRlbiBiYXNlcyBvbmUgbGF2ZXIuCkFuZCBoZSBwdXQgZml2ZSBiYXNlcyBvbiB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgaG91c2UsIGFuZCBmaXZlIG9uIHRoZSBsZWZ0IHNpZGUgb2YgdGhlIGhvdXNlOiBhbmQgaGUgc2V0IHRoZSBzZWEgb24gdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIGhvdXNlIGVhc3R3YXJkIG92ZXIgYWdhaW5zdCB0aGUgc291dGguCkFuZCBIaXJhbSBtYWRlIHRoZSBsYXZlcnMsIGFuZCB0aGUgc2hvdmVscywgYW5kIHRoZSBiYXNvbnMuIFNvIEhpcmFtIG1hZGUgYW4gZW5kIG9mIGRvaW5nIGFsbCB0aGUgd29yayB0aGF0IGhlIG1hZGUga2luZyBTb2xvbW9uIGZvciB0aGUgaG91c2Ugb2YgdGhlIExPUkQ6ClRoZSB0d28gcGlsbGFycywgYW5kIHRoZSB0d28gYm93bHMgb2YgdGhlIGNoYXBpdGVycyB0aGF0IHdlcmUgb24gdGhlIHRvcCBvZiB0aGUgdHdvIHBpbGxhcnM7IGFuZCB0aGUgdHdvIG5ldHdvcmtzLCB0byBjb3ZlciB0aGUgdHdvIGJvd2xzIG9mIHRoZSBjaGFwaXRlcnMgd2hpY2ggd2VyZSB1cG9uIHRoZSB0b3Agb2YgdGhlIHBpbGxhcnM7CkFuZCBmb3VyIGh1bmRyZWQgcG9tZWdyYW5hdGVzIGZvciB0aGUgdHdvIG5ldHdvcmtzLCBldmVuIHR3byByb3dzIG9mIHBvbWVncmFuYXRlcyBmb3Igb25lIG5ldHdvcmssIHRvIGNvdmVyIHRoZSB0d28gYm93bHMgb2YgdGhlIGNoYXBpdGVycyB0aGF0IHdlcmUgdXBvbiB0aGUgcGlsbGFyczsKQW5kIHRoZSB0ZW4gYmFzZXMsIGFuZCB0ZW4gbGF2ZXJzIG9uIHRoZSBiYXNlczsKQW5kIG9uZSBzZWEsIGFuZCB0d2VsdmUgb3hlbiB1bmRlciB0aGUgc2VhOwpBbmQgdGhlIHBvdHMsIGFuZCB0aGUgc2hvdmVscywgYW5kIHRoZSBiYXNvbnM6IGFuZCBhbGwgdGhlc2UgdmVzc2Vscywgd2hpY2ggSGlyYW0gbWFkZSB0byBraW5nIFNvbG9tb24gZm9yIHRoZSBob3VzZSBvZiB0aGUgTE9SRCwgd2VyZSBvZiBicmlnaHQgYnJhc3MuCkluIHRoZSBwbGFpbiBvZiBKb3JkYW4gZGlkIHRoZSBraW5nIGNhc3QgdGhlbSwgaW4gdGhlIGNsYXkgZ3JvdW5kIGJldHdlZW4gU3VjY290aCBhbmQgWmFydGhhbi4KQW5kIFNvbG9tb24gbGVmdCBhbGwgdGhlIHZlc3NlbHMgdW53ZWlnaGVkLCBiZWNhdXNlIHRoZXkgd2VyZSBleGNlZWRpbmcgbWFueTogbmVpdGhlciB3YXMgdGhlIHdlaWdodCBvZiB0aGUgYnJhc3MgZm91bmQgb3V0LgpBbmQgU29sb21vbiBtYWRlIGFsbCB0aGUgdmVzc2VscyB0aGF0IHBlcnRhaW5lZCB1bnRvIHRoZSBob3VzZSBvZiB0aGUgTE9SRDogdGhlIGFsdGFyIG9mIGdvbGQsIGFuZCB0aGUgdGFibGUgb2YgZ29sZCwgd2hlcmV1cG9uIHRoZSBzaGV3YnJlYWQgd2FzLApBbmQgdGhlIGNhbmRsZXN0aWNrcyBvZiBwdXJlIGdvbGQsIGZpdmUgb24gdGhlIHJpZ2h0IHNpZGUsIGFuZCBmaXZlIG9uIHRoZSBsZWZ0LCBiZWZvcmUgdGhlIG9yYWNsZSwgd2l0aCB0aGUgZmxvd2VycywgYW5kIHRoZSBsYW1wcywgYW5kIHRoZSB0b25ncyBvZiBnb2xkLApBbmQgdGhlIGJvd2xzLCBhbmQgdGhlIHNudWZmZXJzLCBhbmQgdGhlIGJhc29ucywgYW5kIHRoZSBzcG9vbnMsIGFuZCB0aGUgY2Vuc2VycyBvZiBwdXJlIGdvbGQ7IGFuZCB0aGUgaGluZ2VzIG9mIGdvbGQsIGJvdGggZm9yIHRoZSBkb29ycyBvZiB0aGUgaW5uZXIgaG91c2UsIHRoZSBtb3N0IGhvbHkgcGxhY2UsIGFuZCBmb3IgdGhlIGRvb3JzIG9mIHRoZSBob3VzZSwgdG8gd2l0LCBvZiB0aGUgdGVtcGxlLgpTbyB3YXMgZW5kZWQgYWxsIHRoZSB3b3JrIHRoYXQga2luZyBTb2xvbW9uIG1hZGUgZm9yIHRoZSBob3VzZSBvZiB0aGUgTE9SRC4gQW5kIFNvbG9tb24gYnJvdWdodCBpbiB0aGUgdGhpbmdzIHdoaWNoIERhdmlkIGhpcyBmYXRoZXIgaGFkIGRlZGljYXRlZDsgZXZlbiB0aGUgc2lsdmVyLCBhbmQgdGhlIGdvbGQsIGFuZCB0aGUgdmVzc2VscywgZGlkIGhlIHB1dCBhbW9uZyB0aGUgdHJlYXN1cmVzIG9mIHRoZSBob3VzZSBvZiB0aGUgTE9SRC4KVGhlbiBTb2xvbW9uIGFzc2VtYmxlZCB0aGUgZWxkZXJzIG9mIElzcmFlbCwgYW5kIGFsbCB0aGUgaGVhZHMgb2YgdGhlIHRyaWJlcywgdGhlIGNoaWVmIG9mIHRoZSBmYXRoZXJzIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIHVudG8ga2luZyBTb2xvbW9uIGluIEplcnVzYWxlbSwgdGhhdCB0aGV5IG1pZ2h0IGJyaW5nIHVwIHRoZSBhcmsgb2YgdGhlIGNvdmVuYW50IG9mIHRoZSBMT1JEIG91dCBvZiB0aGUgY2l0eSBvZiBEYXZpZCwgd2hpY2ggaXMgWmlvbi4KQW5kIGFsbCB0aGUgbWVuIG9mIElzcmFlbCBhc3NlbWJsZWQgdGhlbXNlbHZlcyB1bnRvIGtpbmcgU29sb21vbiBhdCB0aGUgZmVhc3QgaW4gdGhlIG1vbnRoIEV0aGFuaW0sIHdoaWNoIGlzIHRoZSBzZXZlbnRoIG1vbnRoLgpBbmQgYWxsIHRoZSBlbGRlcnMgb2YgSXNyYWVsIGNhbWUsIGFuZCB0aGUgcHJpZXN0cyB0b29rIHVwIHRoZSBhcmsuCkFuZCB0aGV5IGJyb3VnaHQgdXAgdGhlIGFyayBvZiB0aGUgTE9SRCwgYW5kIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBjb25ncmVnYXRpb24sIGFuZCBhbGwgdGhlIGhvbHkgdmVzc2VscyB0aGF0IHdlcmUgaW4gdGhlIHRhYmVybmFjbGUsIGV2ZW4gdGhvc2UgZGlkIHRoZSBwcmllc3RzIGFuZCB0aGUgTGV2aXRlcyBicmluZyB1cC4KQW5kIGtpbmcgU29sb21vbiwgYW5kIGFsbCB0aGUgY29uZ3JlZ2F0aW9uIG9mIElzcmFlbCwgdGhhdCB3ZXJlIGFzc2VtYmxlZCB1bnRvIGhpbSwgd2VyZSB3aXRoIGhpbSBiZWZvcmUgdGhlIGFyaywgc2FjcmlmaWNpbmcgc2hlZXAgYW5kIG94ZW4sIHRoYXQgY291bGQgbm90IGJlIHRvbGQgbm9yIG51bWJlcmVkIGZvciBtdWx0aXR1ZGUuCkFuZCB0aGUgcHJpZXN0cyBicm91Z2h0IGluIHRoZSBhcmsgb2YgdGhlIGNvdmVuYW50IG9mIHRoZSBMT1JEIHVudG8gaGlzIHBsYWNlLCBpbnRvIHRoZSBvcmFjbGUgb2YgdGhlIGhvdXNlLCB0byB0aGUgbW9zdCBob2x5IHBsYWNlLCBldmVuIHVuZGVyIHRoZSB3aW5ncyBvZiB0aGUgY2hlcnViaW1zLgpGb3IgdGhlIGNoZXJ1YmltcyBzcHJlYWQgZm9ydGggdGhlaXIgdHdvIHdpbmdzIG92ZXIgdGhlIHBsYWNlIG9mIHRoZSBhcmssIGFuZCB0aGUgY2hlcnViaW1zIGNvdmVyZWQgdGhlIGFyayBhbmQgdGhlIHN0YXZlcyB0aGVyZW9mIGFib3ZlLgpBbmQgdGhleSBkcmV3IG91dCB0aGUgc3RhdmVzLCB0aGF0IHRoZSBlbmRzIG9mIHRoZSBzdGF2ZXMgd2VyZSBzZWVuIG91dCBpbiB0aGUgaG9seSBwbGFjZSBiZWZvcmUgdGhlIG9yYWNsZSwgYW5kIHRoZXkgd2VyZSBub3Qgc2VlbiB3aXRob3V0OiBhbmQgdGhlcmUgdGhleSBhcmUgdW50byB0aGlzIGRheS4KVGhlcmUgd2FzIG5vdGhpbmcgaW4gdGhlIGFyayBzYXZlIHRoZSB0d28gdGFibGVzIG9mIHN0b25lLCB3aGljaCBNb3NlcyBwdXQgdGhlcmUgYXQgSG9yZWIsIHdoZW4gdGhlIExPUkQgbWFkZSBhIGNvdmVuYW50IHdpdGggdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgd2hlbiB0aGV5IGNhbWUgb3V0IG9mIHRoZSBsYW5kIG9mIEVneXB0LgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIHRoZSBwcmllc3RzIHdlcmUgY29tZSBvdXQgb2YgdGhlIGhvbHkgcGxhY2UsIHRoYXQgdGhlIGNsb3VkIGZpbGxlZCB0aGUgaG91c2Ugb2YgdGhlIExPUkQsClNvIHRoYXQgdGhlIHByaWVzdHMgY291bGQgbm90IHN0YW5kIHRvIG1pbmlzdGVyIGJlY2F1c2Ugb2YgdGhlIGNsb3VkOiBmb3IgdGhlIGdsb3J5IG9mIHRoZSBMT1JEIGhhZCBmaWxsZWQgdGhlIGhvdXNlIG9mIHRoZSBMT1JELgpUaGVuIHNwYWtlIFNvbG9tb24sIFRoZSBMT1JEIHNhaWQgdGhhdCBoZSB3b3VsZCBkd2VsbCBpbiB0aGUgdGhpY2sgZGFya25lc3MuCkkgaGF2ZSBzdXJlbHkgYnVpbHQgdGhlZSBhbiBob3VzZSB0byBkd2VsbCBpbiwgYSBzZXR0bGVkIHBsYWNlIGZvciB0aGVlIHRvIGFiaWRlIGluIGZvciBldmVyLgpBbmQgdGhlIGtpbmcgdHVybmVkIGhpcyBmYWNlIGFib3V0LCBhbmQgYmxlc3NlZCBhbGwgdGhlIGNvbmdyZWdhdGlvbiBvZiBJc3JhZWw6IChhbmQgYWxsIHRoZSBjb25ncmVnYXRpb24gb2YgSXNyYWVsIHN0b29kOykKQW5kIGhlIHNhaWQsIEJsZXNzZWQgYmUgdGhlIExPUkQgR29kIG9mIElzcmFlbCwgd2hpY2ggc3Bha2Ugd2l0aCBoaXMgbW91dGggdW50byBEYXZpZCBteSBmYXRoZXIsIGFuZCBoYXRoIHdpdGggaGlzIGhhbmQgZnVsZmlsbGVkIGl0LCBzYXlpbmcsClNpbmNlIHRoZSBkYXkgdGhhdCBJIGJyb3VnaHQgZm9ydGggbXkgcGVvcGxlIElzcmFlbCBvdXQgb2YgRWd5cHQsIEkgY2hvc2Ugbm8gY2l0eSBvdXQgb2YgYWxsIHRoZSB0cmliZXMgb2YgSXNyYWVsIHRvIGJ1aWxkIGFuIGhvdXNlLCB0aGF0IG15IG5hbWUgbWlnaHQgYmUgdGhlcmVpbjsgYnV0IEkgY2hvc2UgRGF2aWQgdG8gYmUgb3ZlciBteSBwZW9wbGUgSXNyYWVsLgpBbmQgaXQgd2FzIGluIHRoZSBoZWFydCBvZiBEYXZpZCBteSBmYXRoZXIgdG8gYnVpbGQgYW4gaG91c2UgZm9yIHRoZSBuYW1lIG9mIHRoZSBMT1JEIEdvZCBvZiBJc3JhZWwuCkFuZCB0aGUgTE9SRCBzYWlkIHVudG8gRGF2aWQgbXkgZmF0aGVyLCBXaGVyZWFzIGl0IHdhcyBpbiB0aGluZSBoZWFydCB0byBidWlsZCBhbiBob3VzZSB1bnRvIG15IG5hbWUsIHRob3UgZGlkc3Qgd2VsbCB0aGF0IGl0IHdhcyBpbiB0aGluZSBoZWFydC4KTmV2ZXJ0aGVsZXNzIHRob3Ugc2hhbHQgbm90IGJ1aWxkIHRoZSBob3VzZTsgYnV0IHRoeSBzb24gdGhhdCBzaGFsbCBjb21lIGZvcnRoIG91dCBvZiB0aHkgbG9pbnMsIGhlIHNoYWxsIGJ1aWxkIHRoZSBob3VzZSB1bnRvIG15IG5hbWUuCkFuZCB0aGUgTE9SRCBoYXRoIHBlcmZvcm1lZCBoaXMgd29yZCB0aGF0IGhlIHNwYWtlLCBhbmQgSSBhbSByaXNlbiB1cCBpbiB0aGUgcm9vbSBvZiBEYXZpZCBteSBmYXRoZXIsIGFuZCBzaXQgb24gdGhlIHRocm9uZSBvZiBJc3JhZWwsIGFzIHRoZSBMT1JEIHByb21pc2VkLCBhbmQgaGF2ZSBidWlsdCBhbiBob3VzZSBmb3IgdGhlIG5hbWUgb2YgdGhlIExPUkQgR29kIG9mIElzcmFlbC4KQW5kIEkgaGF2ZSBzZXQgdGhlcmUgYSBwbGFjZSBmb3IgdGhlIGFyaywgd2hlcmVpbiBpcyB0aGUgY292ZW5hbnQgb2YgdGhlIExPUkQsIHdoaWNoIGhlIG1hZGUgd2l0aCBvdXIgZmF0aGVycywgd2hlbiBoZSBicm91Z2h0IHRoZW0gb3V0IG9mIHRoZSBsYW5kIG9mIEVneXB0LgpBbmQgU29sb21vbiBzdG9vZCBiZWZvcmUgdGhlIGFsdGFyIG9mIHRoZSBMT1JEIGluIHRoZSBwcmVzZW5jZSBvZiBhbGwgdGhlIGNvbmdyZWdhdGlvbiBvZiBJc3JhZWwsIGFuZCBzcHJlYWQgZm9ydGggaGlzIGhhbmRzIHRvd2FyZCBoZWF2ZW46CkFuZCBoZSBzYWlkLCBMT1JEIEdvZCBvZiBJc3JhZWwsIHRoZXJlIGlzIG5vIEdvZCBsaWtlIHRoZWUsIGluIGhlYXZlbiBhYm92ZSwgb3Igb24gZWFydGggYmVuZWF0aCwgd2hvIGtlZXBlc3QgY292ZW5hbnQgYW5kIG1lcmN5IHdpdGggdGh5IHNlcnZhbnRzIHRoYXQgd2FsayBiZWZvcmUgdGhlZSB3aXRoIGFsbCB0aGVpciBoZWFydDoKV2hvIGhhc3Qga2VwdCB3aXRoIHRoeSBzZXJ2YW50IERhdmlkIG15IGZhdGhlciB0aGF0IHRob3UgcHJvbWlzZWRzdCBoaW06IHRob3Ugc3Bha2VzdCBhbHNvIHdpdGggdGh5IG1vdXRoLCBhbmQgaGFzdCBmdWxmaWxsZWQgaXQgd2l0aCB0aGluZSBoYW5kLCBhcyBpdCBpcyB0aGlzIGRheS4KVGhlcmVmb3JlIG5vdywgTE9SRCBHb2Qgb2YgSXNyYWVsLCBrZWVwIHdpdGggdGh5IHNlcnZhbnQgRGF2aWQgbXkgZmF0aGVyIHRoYXQgdGhvdSBwcm9taXNlZHN0IGhpbSwgc2F5aW5nLCBUaGVyZSBzaGFsbCBub3QgZmFpbCB0aGVlIGEgbWFuIGluIG15IHNpZ2h0IHRvIHNpdCBvbiB0aGUgdGhyb25lIG9mIElzcmFlbDsgc28gdGhhdCB0aHkgY2hpbGRyZW4gdGFrZSBoZWVkIHRvIHRoZWlyIHdheSwgdGhhdCB0aGV5IHdhbGsgYmVmb3JlIG1lIGFzIHRob3UgaGFzdCB3YWxrZWQgYmVmb3JlIG1lLgpBbmQgbm93LCBPIEdvZCBvZiBJc3JhZWwsIGxldCB0aHkgd29yZCwgSSBwcmF5IHRoZWUsIGJlIHZlcmlmaWVkLCB3aGljaCB0aG91IHNwYWtlc3QgdW50byB0aHkgc2VydmFudCBEYXZpZCBteSBmYXRoZXIuCkJ1dCB3aWxsIEdvZCBpbmRlZWQgZHdlbGwgb24gdGhlIGVhcnRoPyBiZWhvbGQsIHRoZSBoZWF2ZW4gYW5kIGhlYXZlbiBvZiBoZWF2ZW5zIGNhbm5vdCBjb250YWluIHRoZWU7IGhvdyBtdWNoIGxlc3MgdGhpcyBob3VzZSB0aGF0IEkgaGF2ZSBidWlsZGVkPwpZZXQgaGF2ZSB0aG91IHJlc3BlY3QgdW50byB0aGUgcHJheWVyIG9mIHRoeSBzZXJ2YW50LCBhbmQgdG8gaGlzIHN1cHBsaWNhdGlvbiwgTyBMT1JEIG15IEdvZCwgdG8gaGVhcmtlbiB1bnRvIHRoZSBjcnkgYW5kIHRvIHRoZSBwcmF5ZXIsIHdoaWNoIHRoeSBzZXJ2YW50IHByYXlldGggYmVmb3JlIHRoZWUgdG8gZGF5OgpUaGF0IHRoaW5lIGV5ZXMgbWF5IGJlIG9wZW4gdG93YXJkIHRoaXMgaG91c2UgbmlnaHQgYW5kIGRheSwgZXZlbiB0b3dhcmQgdGhlIHBsYWNlIG9mIHdoaWNoIHRob3UgaGFzdCBzYWlkLCBNeSBuYW1lIHNoYWxsIGJlIHRoZXJlOiB0aGF0IHRob3UgbWF5ZXN0IGhlYXJrZW4gdW50byB0aGUgcHJheWVyIHdoaWNoIHRoeSBzZXJ2YW50IHNoYWxsIG1ha2UgdG93YXJkIHRoaXMgcGxhY2UuCkFuZCBoZWFya2VuIHRob3UgdG8gdGhlIHN1cHBsaWNhdGlvbiBvZiB0aHkgc2VydmFudCwgYW5kIG9mIHRoeSBwZW9wbGUgSXNyYWVsLCB3aGVuIHRoZXkgc2hhbGwgcHJheSB0b3dhcmQgdGhpcyBwbGFjZTogYW5kIGhlYXIgdGhvdSBpbiBoZWF2ZW4gdGh5IGR3ZWxsaW5nIHBsYWNlOiBhbmQgd2hlbiB0aG91IGhlYXJlc3QsIGZvcmdpdmUuCklmIGFueSBtYW4gdHJlc3Bhc3MgYWdhaW5zdCBoaXMgbmVpZ2hib3VyLCBhbmQgYW4gb2F0aCBiZSBsYWlkIHVwb24gaGltIHRvIGNhdXNlIGhpbSB0byBzd2VhciwgYW5kIHRoZSBvYXRoIGNvbWUgYmVmb3JlIHRoaW5lIGFsdGFyIGluIHRoaXMgaG91c2U6ClRoZW4gaGVhciB0aG91IGluIGhlYXZlbiwgYW5kIGRvLCBhbmQganVkZ2UgdGh5IHNlcnZhbnRzLCBjb25kZW1uaW5nIHRoZSB3aWNrZWQsIHRvIGJyaW5nIGhpcyB3YXkgdXBvbiBoaXMgaGVhZDsgYW5kIGp1c3RpZnlpbmcgdGhlIHJpZ2h0ZW91cywgdG8gZ2l2ZSBoaW0gYWNjb3JkaW5nIHRvIGhpcyByaWdodGVvdXNuZXNzLgpXaGVuIHRoeSBwZW9wbGUgSXNyYWVsIGJlIHNtaXR0ZW4gZG93biBiZWZvcmUgdGhlIGVuZW15LCBiZWNhdXNlIHRoZXkgaGF2ZSBzaW5uZWQgYWdhaW5zdCB0aGVlLCBhbmQgc2hhbGwgdHVybiBhZ2FpbiB0byB0aGVlLCBhbmQgY29uZmVzcyB0aHkgbmFtZSwgYW5kIHByYXksIGFuZCBtYWtlIHN1cHBsaWNhdGlvbiB1bnRvIHRoZWUgaW4gdGhpcyBob3VzZToKVGhlbiBoZWFyIHRob3UgaW4gaGVhdmVuLCBhbmQgZm9yZ2l2ZSB0aGUgc2luIG9mIHRoeSBwZW9wbGUgSXNyYWVsLCBhbmQgYnJpbmcgdGhlbSBhZ2FpbiB1bnRvIHRoZSBsYW5kIHdoaWNoIHRob3UgZ2F2ZXN0IHVudG8gdGhlaXIgZmF0aGVycy4KV2hlbiBoZWF2ZW4gaXMgc2h1dCB1cCwgYW5kIHRoZXJlIGlzIG5vIHJhaW4sIGJlY2F1c2UgdGhleSBoYXZlIHNpbm5lZCBhZ2FpbnN0IHRoZWU7IGlmIHRoZXkgcHJheSB0b3dhcmQgdGhpcyBwbGFjZSwgYW5kIGNvbmZlc3MgdGh5IG5hbWUsIGFuZCB0dXJuIGZyb20gdGhlaXIgc2luLCB3aGVuIHRob3UgYWZmbGljdGVzdCB0aGVtOgpUaGVuIGhlYXIgdGhvdSBpbiBoZWF2ZW4sIGFuZCBmb3JnaXZlIHRoZSBzaW4gb2YgdGh5IHNlcnZhbnRzLCBhbmQgb2YgdGh5IHBlb3BsZSBJc3JhZWwsIHRoYXQgdGhvdSB0ZWFjaCB0aGVtIHRoZSBnb29kIHdheSB3aGVyZWluIHRoZXkgc2hvdWxkIHdhbGssIGFuZCBnaXZlIHJhaW4gdXBvbiB0aHkgbGFuZCwgd2hpY2ggdGhvdSBoYXN0IGdpdmVuIHRvIHRoeSBwZW9wbGUgZm9yIGFuIGluaGVyaXRhbmNlLgpJZiB0aGVyZSBiZSBpbiB0aGUgbGFuZCBmYW1pbmUsIGlmIHRoZXJlIGJlIHBlc3RpbGVuY2UsIGJsYXN0aW5nLCBtaWxkZXcsIGxvY3VzdCwgb3IgaWYgdGhlcmUgYmUgY2F0ZXJwaWxsZXI7IGlmIHRoZWlyIGVuZW15IGJlc2llZ2UgdGhlbSBpbiB0aGUgbGFuZCBvZiB0aGVpciBjaXRpZXM7IHdoYXRzb2V2ZXIgcGxhZ3VlLCB3aGF0c29ldmVyIHNpY2tuZXNzIHRoZXJlIGJlOwpXaGF0IHByYXllciBhbmQgc3VwcGxpY2F0aW9uIHNvZXZlciBiZSBtYWRlIGJ5IGFueSBtYW4sIG9yIGJ5IGFsbCB0aHkgcGVvcGxlIElzcmFlbCwgd2hpY2ggc2hhbGwga25vdyBldmVyeSBtYW4gdGhlIHBsYWd1ZSBvZiBoaXMgb3duIGhlYXJ0LCBhbmQgc3ByZWFkIGZvcnRoIGhpcyBoYW5kcyB0b3dhcmQgdGhpcyBob3VzZToKVGhlbiBoZWFyIHRob3UgaW4gaGVhdmVuIHRoeSBkd2VsbGluZyBwbGFjZSwgYW5kIGZvcmdpdmUsIGFuZCBkbywgYW5kIGdpdmUgdG8gZXZlcnkgbWFuIGFjY29yZGluZyB0byBoaXMgd2F5cywgd2hvc2UgaGVhcnQgdGhvdSBrbm93ZXN0OyAoZm9yIHRob3UsIGV2ZW4gdGhvdSBvbmx5LCBrbm93ZXN0IHRoZSBoZWFydHMgb2YgYWxsIHRoZSBjaGlsZHJlbiBvZiBtZW47KQpUaGF0IHRoZXkgbWF5IGZlYXIgdGhlZSBhbGwgdGhlIGRheXMgdGhhdCB0aGV5IGxpdmUgaW4gdGhlIGxhbmQgd2hpY2ggdGhvdSBnYXZlc3QgdW50byBvdXIgZmF0aGVycy4KTW9yZW92ZXIgY29uY2VybmluZyBhIHN0cmFuZ2VyLCB0aGF0IGlzIG5vdCBvZiB0aHkgcGVvcGxlIElzcmFlbCwgYnV0IGNvbWV0aCBvdXQgb2YgYSBmYXIgY291bnRyeSBmb3IgdGh5IG5hbWUncyBzYWtlOwooRm9yIHRoZXkgc2hhbGwgaGVhciBvZiB0aHkgZ3JlYXQgbmFtZSwgYW5kIG9mIHRoeSBzdHJvbmcgaGFuZCwgYW5kIG9mIHRoeSBzdHJldGNoZWQgb3V0IGFybTspIHdoZW4gaGUgc2hhbGwgY29tZSBhbmQgcHJheSB0b3dhcmQgdGhpcyBob3VzZTsKSGVhciB0aG91IGluIGhlYXZlbiB0aHkgZHdlbGxpbmcgcGxhY2UsIGFuZCBkbyBhY2NvcmRpbmcgdG8gYWxsIHRoYXQgdGhlIHN0cmFuZ2VyIGNhbGxldGggdG8gdGhlZSBmb3I6IHRoYXQgYWxsIHBlb3BsZSBvZiB0aGUgZWFydGggbWF5IGtub3cgdGh5IG5hbWUsIHRvIGZlYXIgdGhlZSwgYXMgZG8gdGh5IHBlb3BsZSBJc3JhZWw7IGFuZCB0aGF0IHRoZXkgbWF5IGtub3cgdGhhdCB0aGlzIGhvdXNlLCB3aGljaCBJIGhhdmUgYnVpbGRlZCwgaXMgY2FsbGVkIGJ5IHRoeSBuYW1lLgpJZiB0aHkgcGVvcGxlIGdvIG91dCB0byBiYXR0bGUgYWdhaW5zdCB0aGVpciBlbmVteSwgd2hpdGhlcnNvZXZlciB0aG91IHNoYWx0IHNlbmQgdGhlbSwgYW5kIHNoYWxsIHByYXkgdW50byB0aGUgTE9SRCB0b3dhcmQgdGhlIGNpdHkgd2hpY2ggdGhvdSBoYXN0IGNob3NlbiwgYW5kIHRvd2FyZCB0aGUgaG91c2UgdGhhdCBJIGhhdmUgYnVpbHQgZm9yIHRoeSBuYW1lOgpUaGVuIGhlYXIgdGhvdSBpbiBoZWF2ZW4gdGhlaXIgcHJheWVyIGFuZCB0aGVpciBzdXBwbGljYXRpb24sIGFuZCBtYWludGFpbiB0aGVpciBjYXVzZS4KSWYgdGhleSBzaW4gYWdhaW5zdCB0aGVlLCAoZm9yIHRoZXJlIGlzIG5vIG1hbiB0aGF0IHNpbm5ldGggbm90LCkgYW5kIHRob3UgYmUgYW5ncnkgd2l0aCB0aGVtLCBhbmQgZGVsaXZlciB0aGVtIHRvIHRoZSBlbmVteSwgc28gdGhhdCB0aGV5IGNhcnJ5IHRoZW0gYXdheSBjYXB0aXZlcyB1bnRvIHRoZSBsYW5kIG9mIHRoZSBlbmVteSwgZmFyIG9yIG5lYXI7CllldCBpZiB0aGV5IHNoYWxsIGJldGhpbmsgdGhlbXNlbHZlcyBpbiB0aGUgbGFuZCB3aGl0aGVyIHRoZXkgd2VyZSBjYXJyaWVkIGNhcHRpdmVzLCBhbmQgcmVwZW50LCBhbmQgbWFrZSBzdXBwbGljYXRpb24gdW50byB0aGVlIGluIHRoZSBsYW5kIG9mIHRoZW0gdGhhdCBjYXJyaWVkIHRoZW0gY2FwdGl2ZXMsIHNheWluZywgV2UgaGF2ZSBzaW5uZWQsIGFuZCBoYXZlIGRvbmUgcGVydmVyc2VseSwgd2UgaGF2ZSBjb21taXR0ZWQgd2lja2VkbmVzczsKQW5kIHNvIHJldHVybiB1bnRvIHRoZWUgd2l0aCBhbGwgdGhlaXIgaGVhcnQsIGFuZCB3aXRoIGFsbCB0aGVpciBzb3VsLCBpbiB0aGUgbGFuZCBvZiB0aGVpciBlbmVtaWVzLCB3aGljaCBsZWQgdGhlbSBhd2F5IGNhcHRpdmUsIGFuZCBwcmF5IHVudG8gdGhlZSB0b3dhcmQgdGhlaXIgbGFuZCwgd2hpY2ggdGhvdSBnYXZlc3QgdW50byB0aGVpciBmYXRoZXJzLCB0aGUgY2l0eSB3aGljaCB0aG91IGhhc3QgY2hvc2VuLCBhbmQgdGhlIGhvdXNlIHdoaWNoIEkgaGF2ZSBidWlsdCBmb3IgdGh5IG5hbWU6ClRoZW4gaGVhciB0aG91IHRoZWlyIHByYXllciBhbmQgdGhlaXIgc3VwcGxpY2F0aW9uIGluIGhlYXZlbiB0aHkgZHdlbGxpbmcgcGxhY2UsIGFuZCBtYWludGFpbiB0aGVpciBjYXVzZSwKQW5kIGZvcmdpdmUgdGh5IHBlb3BsZSB0aGF0IGhhdmUgc2lubmVkIGFnYWluc3QgdGhlZSwgYW5kIGFsbCB0aGVpciB0cmFuc2dyZXNzaW9ucyB3aGVyZWluIHRoZXkgaGF2ZSB0cmFuc2dyZXNzZWQgYWdhaW5zdCB0aGVlLCBhbmQgZ2l2ZSB0aGVtIGNvbXBhc3Npb24gYmVmb3JlIHRoZW0gd2hvIGNhcnJpZWQgdGhlbSBjYXB0aXZlLCB0aGF0IHRoZXkgbWF5IGhhdmUgY29tcGFzc2lvbiBvbiB0aGVtOgpGb3IgdGhleSBiZSB0aHkgcGVvcGxlLCBhbmQgdGhpbmUgaW5oZXJpdGFuY2UsIHdoaWNoIHRob3UgYnJvdWdodGVzdCBmb3J0aCBvdXQgb2YgRWd5cHQsIGZyb20gdGhlIG1pZHN0IG9mIHRoZSBmdXJuYWNlIG9mIGlyb246ClRoYXQgdGhpbmUgZXllcyBtYXkgYmUgb3BlbiB1bnRvIHRoZSBzdXBwbGljYXRpb24gb2YgdGh5IHNlcnZhbnQsIGFuZCB1bnRvIHRoZSBzdXBwbGljYXRpb24gb2YgdGh5IHBlb3BsZSBJc3JhZWwsIHRvIGhlYXJrZW4gdW50byB0aGVtIGluIGFsbCB0aGF0IHRoZXkgY2FsbCBmb3IgdW50byB0aGVlLgpGb3IgdGhvdSBkaWRzdCBzZXBhcmF0ZSB0aGVtIGZyb20gYW1vbmcgYWxsIHRoZSBwZW9wbGUgb2YgdGhlIGVhcnRoLCB0byBiZSB0aGluZSBpbmhlcml0YW5jZSwgYXMgdGhvdSBzcGFrZXN0IGJ5IHRoZSBoYW5kIG9mIE1vc2VzIHRoeSBzZXJ2YW50LCB3aGVuIHRob3UgYnJvdWdodGVzdCBvdXIgZmF0aGVycyBvdXQgb2YgRWd5cHQsIE8gTE9SRCBHb2QuCkFuZCBpdCB3YXMgc28sIHRoYXQgd2hlbiBTb2xvbW9uIGhhZCBtYWRlIGFuIGVuZCBvZiBwcmF5aW5nIGFsbCB0aGlzIHByYXllciBhbmQgc3VwcGxpY2F0aW9uIHVudG8gdGhlIExPUkQsIGhlIGFyb3NlIGZyb20gYmVmb3JlIHRoZSBhbHRhciBvZiB0aGUgTE9SRCwgZnJvbSBrbmVlbGluZyBvbiBoaXMga25lZXMgd2l0aCBoaXMgaGFuZHMgc3ByZWFkIHVwIHRvIGhlYXZlbi4KQW5kIGhlIHN0b29kLCBhbmQgYmxlc3NlZCBhbGwgdGhlIGNvbmdyZWdhdGlvbiBvZiBJc3JhZWwgd2l0aCBhIGxvdWQgdm9pY2UsIHNheWluZywKQmxlc3NlZCBiZSB0aGUgTE9SRCwgdGhhdCBoYXRoIGdpdmVuIHJlc3QgdW50byBoaXMgcGVvcGxlIElzcmFlbCwgYWNjb3JkaW5nIHRvIGFsbCB0aGF0IGhlIHByb21pc2VkOiB0aGVyZSBoYXRoIG5vdCBmYWlsZWQgb25lIHdvcmQgb2YgYWxsIGhpcyBnb29kIHByb21pc2UsIHdoaWNoIGhlIHByb21pc2VkIGJ5IHRoZSBoYW5kIG9mIE1vc2VzIGhpcyBzZXJ2YW50LgpUaGUgTE9SRCBvdXIgR29kIGJlIHdpdGggdXMsIGFzIGhlIHdhcyB3aXRoIG91ciBmYXRoZXJzOiBsZXQgaGltIG5vdCBsZWF2ZSB1cywgbm9yIGZvcnNha2UgdXM6ClRoYXQgaGUgbWF5IGluY2xpbmUgb3VyIGhlYXJ0cyB1bnRvIGhpbSwgdG8gd2FsayBpbiBhbGwgaGlzIHdheXMsIGFuZCB0byBrZWVwIGhpcyBjb21tYW5kbWVudHMsIGFuZCBoaXMgc3RhdHV0ZXMsIGFuZCBoaXMganVkZ21lbnRzLCB3aGljaCBoZSBjb21tYW5kZWQgb3VyIGZhdGhlcnMuCkFuZCBsZXQgdGhlc2UgbXkgd29yZHMsIHdoZXJld2l0aCBJIGhhdmUgbWFkZSBzdXBwbGljYXRpb24gYmVmb3JlIHRoZSBMT1JELCBiZSBuaWdoIHVudG8gdGhlIExPUkQgb3VyIEdvZCBkYXkgYW5kIG5pZ2h0LCB0aGF0IGhlIG1haW50YWluIHRoZSBjYXVzZSBvZiBoaXMgc2VydmFudCwgYW5kIHRoZSBjYXVzZSBvZiBoaXMgcGVvcGxlIElzcmFlbCBhdCBhbGwgdGltZXMsIGFzIHRoZSBtYXR0ZXIgc2hhbGwgcmVxdWlyZToKVGhhdCBhbGwgdGhlIHBlb3BsZSBvZiB0aGUgZWFydGggbWF5IGtub3cgdGhhdCB0aGUgTE9SRCBpcyBHb2QsIGFuZCB0aGF0IHRoZXJlIGlzIG5vbmUgZWxzZS4KTGV0IHlvdXIgaGVhcnQgdGhlcmVmb3JlIGJlIHBlcmZlY3Qgd2l0aCB0aGUgTE9SRCBvdXIgR29kLCB0byB3YWxrIGluIGhpcyBzdGF0dXRlcywgYW5kIHRvIGtlZXAgaGlzIGNvbW1hbmRtZW50cywgYXMgYXQgdGhpcyBkYXkuCkFuZCB0aGUga2luZywgYW5kIGFsbCBJc3JhZWwgd2l0aCBoaW0sIG9mZmVyZWQgc2FjcmlmaWNlIGJlZm9yZSB0aGUgTE9SRC4KQW5kIFNvbG9tb24gb2ZmZXJlZCBhIHNhY3JpZmljZSBvZiBwZWFjZSBvZmZlcmluZ3MsIHdoaWNoIGhlIG9mZmVyZWQgdW50byB0aGUgTE9SRCwgdHdvIGFuZCB0d2VudHkgdGhvdXNhbmQgb3hlbiwgYW5kIGFuIGh1bmRyZWQgYW5kIHR3ZW50eSB0aG91c2FuZCBzaGVlcC4gU28gdGhlIGtpbmcgYW5kIGFsbCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGRlZGljYXRlZCB0aGUgaG91c2Ugb2YgdGhlIExPUkQuClRoZSBzYW1lIGRheSBkaWQgdGhlIGtpbmcgaGFsbG93IHRoZSBtaWRkbGUgb2YgdGhlIGNvdXJ0IHRoYXQgd2FzIGJlZm9yZSB0aGUgaG91c2Ugb2YgdGhlIExPUkQ6IGZvciB0aGVyZSBoZSBvZmZlcmVkIGJ1cm50IG9mZmVyaW5ncywgYW5kIG1lYXQgb2ZmZXJpbmdzLCBhbmQgdGhlIGZhdCBvZiB0aGUgcGVhY2Ugb2ZmZXJpbmdzOiBiZWNhdXNlIHRoZSBicmFzZW4gYWx0YXIgdGhhdCB3YXMgYmVmb3JlIHRoZSBMT1JEIHdhcyB0b28gbGl0dGxlIHRvIHJlY2VpdmUgdGhlIGJ1cm50IG9mZmVyaW5ncywgYW5kIG1lYXQgb2ZmZXJpbmdzLCBhbmQgdGhlIGZhdCBvZiB0aGUgcGVhY2Ugb2ZmZXJpbmdzLgpBbmQgYXQgdGhhdCB0aW1lIFNvbG9tb24gaGVsZCBhIGZlYXN0LCBhbmQgYWxsIElzcmFlbCB3aXRoIGhpbSwgYSBncmVhdCBjb25ncmVnYXRpb24sIGZyb20gdGhlIGVudGVyaW5nIGluIG9mIEhhbWF0aCB1bnRvIHRoZSByaXZlciBvZiBFZ3lwdCwgYmVmb3JlIHRoZSBMT1JEIG91ciBHb2QsIHNldmVuIGRheXMgYW5kIHNldmVuIGRheXMsIGV2ZW4gZm91cnRlZW4gZGF5cy4KT24gdGhlIGVpZ2h0aCBkYXkgaGUgc2VudCB0aGUgcGVvcGxlIGF3YXk6IGFuZCB0aGV5IGJsZXNzZWQgdGhlIGtpbmcsIGFuZCB3ZW50IHVudG8gdGhlaXIgdGVudHMgam95ZnVsIGFuZCBnbGFkIG9mIGhlYXJ0IGZvciBhbGwgdGhlIGdvb2RuZXNzIHRoYXQgdGhlIExPUkQgaGFkIGRvbmUgZm9yIERhdmlkIGhpcyBzZXJ2YW50LCBhbmQgZm9yIElzcmFlbCBoaXMgcGVvcGxlLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIFNvbG9tb24gaGFkIGZpbmlzaGVkIHRoZSBidWlsZGluZyBvZiB0aGUgaG91c2Ugb2YgdGhlIExPUkQsIGFuZCB0aGUga2luZydzIGhvdXNlLCBhbmQgYWxsIFNvbG9tb24ncyBkZXNpcmUgd2hpY2ggaGUgd2FzIHBsZWFzZWQgdG8gZG8sClRoYXQgdGhlIExPUkQgYXBwZWFyZWQgdG8gU29sb21vbiB0aGUgc2Vjb25kIHRpbWUsIGFzIGhlIGhhZCBhcHBlYXJlZCB1bnRvIGhpbSBhdCBHaWJlb24uCkFuZCB0aGUgTE9SRCBzYWlkIHVudG8gaGltLCBJIGhhdmUgaGVhcmQgdGh5IHByYXllciBhbmQgdGh5IHN1cHBsaWNhdGlvbiwgdGhhdCB0aG91IGhhc3QgbWFkZSBiZWZvcmUgbWU6IEkgaGF2ZSBoYWxsb3dlZCB0aGlzIGhvdXNlLCB3aGljaCB0aG91IGhhc3QgYnVpbHQsIHRvIHB1dCBteSBuYW1lIHRoZXJlIGZvciBldmVyOyBhbmQgbWluZSBleWVzIGFuZCBtaW5lIGhlYXJ0IHNoYWxsIGJlIHRoZXJlIHBlcnBldHVhbGx5LgpBbmQgaWYgdGhvdSB3aWx0IHdhbGsgYmVmb3JlIG1lLCBhcyBEYXZpZCB0aHkgZmF0aGVyIHdhbGtlZCwgaW4gaW50ZWdyaXR5IG9mIGhlYXJ0LCBhbmQgaW4gdXByaWdodG5lc3MsIHRvIGRvIGFjY29yZGluZyB0byBhbGwgdGhhdCBJIGhhdmUgY29tbWFuZGVkIHRoZWUsIGFuZCB3aWx0IGtlZXAgbXkgc3RhdHV0ZXMgYW5kIG15IGp1ZGdtZW50czoKVGhlbiBJIHdpbGwgZXN0YWJsaXNoIHRoZSB0aHJvbmUgb2YgdGh5IGtpbmdkb20gdXBvbiBJc3JhZWwgZm9yIGV2ZXIsIGFzIEkgcHJvbWlzZWQgdG8gRGF2aWQgdGh5IGZhdGhlciwgc2F5aW5nLCBUaGVyZSBzaGFsbCBub3QgZmFpbCB0aGVlIGEgbWFuIHVwb24gdGhlIHRocm9uZSBvZiBJc3JhZWwuCkJ1dCBpZiB5ZSBzaGFsbCBhdCBhbGwgdHVybiBmcm9tIGZvbGxvd2luZyBtZSwgeWUgb3IgeW91ciBjaGlsZHJlbiwgYW5kIHdpbGwgbm90IGtlZXAgbXkgY29tbWFuZG1lbnRzIGFuZCBteSBzdGF0dXRlcyB3aGljaCBJIGhhdmUgc2V0IGJlZm9yZSB5b3UsIGJ1dCBnbyBhbmQgc2VydmUgb3RoZXIgZ29kcywgYW5kIHdvcnNoaXAgdGhlbToKVGhlbiB3aWxsIEkgY3V0IG9mZiBJc3JhZWwgb3V0IG9mIHRoZSBsYW5kIHdoaWNoIEkgaGF2ZSBnaXZlbiB0aGVtOyBhbmQgdGhpcyBob3VzZSwgd2hpY2ggSSBoYXZlIGhhbGxvd2VkIGZvciBteSBuYW1lLCB3aWxsIEkgY2FzdCBvdXQgb2YgbXkgc2lnaHQ7IGFuZCBJc3JhZWwgc2hhbGwgYmUgYSBwcm92ZXJiIGFuZCBhIGJ5d29yZCBhbW9uZyBhbGwgcGVvcGxlOgpBbmQgYXQgdGhpcyBob3VzZSwgd2hpY2ggaXMgaGlnaCwgZXZlcnkgb25lIHRoYXQgcGFzc2V0aCBieSBpdCBzaGFsbCBiZSBhc3RvbmlzaGVkLCBhbmQgc2hhbGwgaGlzczsgYW5kIHRoZXkgc2hhbGwgc2F5LCBXaHkgaGF0aCB0aGUgTE9SRCBkb25lIHRodXMgdW50byB0aGlzIGxhbmQsIGFuZCB0byB0aGlzIGhvdXNlPwpBbmQgdGhleSBzaGFsbCBhbnN3ZXIsIEJlY2F1c2UgdGhleSBmb3Jzb29rIHRoZSBMT1JEIHRoZWlyIEdvZCwgd2hvIGJyb3VnaHQgZm9ydGggdGhlaXIgZmF0aGVycyBvdXQgb2YgdGhlIGxhbmQgb2YgRWd5cHQsIGFuZCBoYXZlIHRha2VuIGhvbGQgdXBvbiBvdGhlciBnb2RzLCBhbmQgaGF2ZSB3b3JzaGlwcGVkIHRoZW0sIGFuZCBzZXJ2ZWQgdGhlbTogdGhlcmVmb3JlIGhhdGggdGhlIExPUkQgYnJvdWdodCB1cG9uIHRoZW0gYWxsIHRoaXMgZXZpbC4KQW5kIGl0IGNhbWUgdG8gcGFzcyBhdCB0aGUgZW5kIG9mIHR3ZW50eSB5ZWFycywgd2hlbiBTb2xvbW9uIGhhZCBidWlsdCB0aGUgdHdvIGhvdXNlcywgdGhlIGhvdXNlIG9mIHRoZSBMT1JELCBhbmQgdGhlIGtpbmcncyBob3VzZSwKKE5vdyBIaXJhbSB0aGUga2luZyBvZiBUeXJlIGhhZCBmdXJuaXNoZWQgU29sb21vbiB3aXRoIGNlZGFyIHRyZWVzIGFuZCBmaXIgdHJlZXMsIGFuZCB3aXRoIGdvbGQsIGFjY29yZGluZyB0byBhbGwgaGlzIGRlc2lyZSwpIHRoYXQgdGhlbiBraW5nIFNvbG9tb24gZ2F2ZSBIaXJhbSB0d2VudHkgY2l0aWVzIGluIHRoZSBsYW5kIG9mIEdhbGlsZWUuCkFuZCBIaXJhbSBjYW1lIG91dCBmcm9tIFR5cmUgdG8gc2VlIHRoZSBjaXRpZXMgd2hpY2ggU29sb21vbiBoYWQgZ2l2ZW4gaGltOyBhbmQgdGhleSBwbGVhc2VkIGhpbSBub3QuCkFuZCBoZSBzYWlkLCBXaGF0IGNpdGllcyBhcmUgdGhlc2Ugd2hpY2ggdGhvdSBoYXN0IGdpdmVuIG1lLCBteSBicm90aGVyPyBBbmQgaGUgY2FsbGVkIHRoZW0gdGhlIGxhbmQgb2YgQ2FidWwgdW50byB0aGlzIGRheS4KQW5kIEhpcmFtIHNlbnQgdG8gdGhlIGtpbmcgc2l4c2NvcmUgdGFsZW50cyBvZiBnb2xkLgpBbmQgdGhpcyBpcyB0aGUgcmVhc29uIG9mIHRoZSBsZXZ5IHdoaWNoIGtpbmcgU29sb21vbiByYWlzZWQ7IGZvciB0byBidWlsZCB0aGUgaG91c2Ugb2YgdGhlIExPUkQsIGFuZCBoaXMgb3duIGhvdXNlLCBhbmQgTWlsbG8sIGFuZCB0aGUgd2FsbCBvZiBKZXJ1c2FsZW0sIGFuZCBIYXpvciwgYW5kIE1lZ2lkZG8sIGFuZCBHZXplci4KRm9yIFBoYXJhb2gga2luZyBvZiBFZ3lwdCBoYWQgZ29uZSB1cCwgYW5kIHRha2VuIEdlemVyLCBhbmQgYnVybnQgaXQgd2l0aCBmaXJlLCBhbmQgc2xhaW4gdGhlIENhbmFhbml0ZXMgdGhhdCBkd2VsdCBpbiB0aGUgY2l0eSwgYW5kIGdpdmVuIGl0IGZvciBhIHByZXNlbnQgdW50byBoaXMgZGF1Z2h0ZXIsIFNvbG9tb24ncyB3aWZlLgpBbmQgU29sb21vbiBidWlsdCBHZXplciwgYW5kIEJldGhob3JvbiB0aGUgbmV0aGVyLApBbmQgQmFhbGF0aCwgYW5kIFRhZG1vciBpbiB0aGUgd2lsZGVybmVzcywgaW4gdGhlIGxhbmQsCkFuZCBhbGwgdGhlIGNpdGllcyBvZiBzdG9yZSB0aGF0IFNvbG9tb24gaGFkLCBhbmQgY2l0aWVzIGZvciBoaXMgY2hhcmlvdHMsIGFuZCBjaXRpZXMgZm9yIGhpcyBob3JzZW1lbiwgYW5kIHRoYXQgd2hpY2ggU29sb21vbiBkZXNpcmVkIHRvIGJ1aWxkIGluIEplcnVzYWxlbSwgYW5kIGluIExlYmFub24sIGFuZCBpbiBhbGwgdGhlIGxhbmQgb2YgaGlzIGRvbWluaW9uLgpBbmQgYWxsIHRoZSBwZW9wbGUgdGhhdCB3ZXJlIGxlZnQgb2YgdGhlIEFtb3JpdGVzLCBIaXR0aXRlcywgUGVyaXp6aXRlcywgSGl2aXRlcywgYW5kIEplYnVzaXRlcywgd2hpY2ggd2VyZSBub3Qgb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwKVGhlaXIgY2hpbGRyZW4gdGhhdCB3ZXJlIGxlZnQgYWZ0ZXIgdGhlbSBpbiB0aGUgbGFuZCwgd2hvbSB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGFsc28gd2VyZSBub3QgYWJsZSB1dHRlcmx5IHRvIGRlc3Ryb3ksIHVwb24gdGhvc2UgZGlkIFNvbG9tb24gbGV2eSBhIHRyaWJ1dGUgb2YgYm9uZHNlcnZpY2UgdW50byB0aGlzIGRheS4KQnV0IG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgZGlkIFNvbG9tb24gbWFrZSBubyBib25kbWVuOiBidXQgdGhleSB3ZXJlIG1lbiBvZiB3YXIsIGFuZCBoaXMgc2VydmFudHMsIGFuZCBoaXMgcHJpbmNlcywgYW5kIGhpcyBjYXB0YWlucywgYW5kIHJ1bGVycyBvZiBoaXMgY2hhcmlvdHMsIGFuZCBoaXMgaG9yc2VtZW4uClRoZXNlIHdlcmUgdGhlIGNoaWVmIG9mIHRoZSBvZmZpY2VycyB0aGF0IHdlcmUgb3ZlciBTb2xvbW9uJ3Mgd29yaywgZml2ZSBodW5kcmVkIGFuZCBmaWZ0eSwgd2hpY2ggYmFyZSBydWxlIG92ZXIgdGhlIHBlb3BsZSB0aGF0IHdyb3VnaHQgaW4gdGhlIHdvcmsuCkJ1dCBQaGFyYW9oJ3MgZGF1Z2h0ZXIgY2FtZSB1cCBvdXQgb2YgdGhlIGNpdHkgb2YgRGF2aWQgdW50byBoZXIgaG91c2Ugd2hpY2ggU29sb21vbiBoYWQgYnVpbHQgZm9yIGhlcjogdGhlbiBkaWQgaGUgYnVpbGQgTWlsbG8uCkFuZCB0aHJlZSB0aW1lcyBpbiBhIHllYXIgZGlkIFNvbG9tb24gb2ZmZXIgYnVybnQgb2ZmZXJpbmdzIGFuZCBwZWFjZSBvZmZlcmluZ3MgdXBvbiB0aGUgYWx0YXIgd2hpY2ggaGUgYnVpbHQgdW50byB0aGUgTE9SRCwgYW5kIGhlIGJ1cm50IGluY2Vuc2UgdXBvbiB0aGUgYWx0YXIgdGhhdCB3YXMgYmVmb3JlIHRoZSBMT1JELiBTbyBoZSBmaW5pc2hlZCB0aGUgaG91c2UuCkFuZCBraW5nIFNvbG9tb24gbWFkZSBhIG5hdnkgb2Ygc2hpcHMgaW4gRXppb25nZWJlciwgd2hpY2ggaXMgYmVzaWRlIEVsb3RoLCBvbiB0aGUgc2hvcmUgb2YgdGhlIFJlZCBzZWEsIGluIHRoZSBsYW5kIG9mIEVkb20uCkFuZCBIaXJhbSBzZW50IGluIHRoZSBuYXZ5IGhpcyBzZXJ2YW50cywgc2hpcG1lbiB0aGF0IGhhZCBrbm93bGVkZ2Ugb2YgdGhlIHNlYSwgd2l0aCB0aGUgc2VydmFudHMgb2YgU29sb21vbi4KQW5kIHRoZXkgY2FtZSB0byBPcGhpciwgYW5kIGZldGNoZWQgZnJvbSB0aGVuY2UgZ29sZCwgZm91ciBodW5kcmVkIGFuZCB0d2VudHkgdGFsZW50cywgYW5kIGJyb3VnaHQgaXQgdG8ga2luZyBTb2xvbW9uLgpBbmQgd2hlbiB0aGUgcXVlZW4gb2YgU2hlYmEgaGVhcmQgb2YgdGhlIGZhbWUgb2YgU29sb21vbiBjb25jZXJuaW5nIHRoZSBuYW1lIG9mIHRoZSBMT1JELCBzaGUgY2FtZSB0byBwcm92ZSBoaW0gd2l0aCBoYXJkIHF1ZXN0aW9ucy4KQW5kIHNoZSBjYW1lIHRvIEplcnVzYWxlbSB3aXRoIGEgdmVyeSBncmVhdCB0cmFpbiwgd2l0aCBjYW1lbHMgdGhhdCBiYXJlIHNwaWNlcywgYW5kIHZlcnkgbXVjaCBnb2xkLCBhbmQgcHJlY2lvdXMgc3RvbmVzOiBhbmQgd2hlbiBzaGUgd2FzIGNvbWUgdG8gU29sb21vbiwgc2hlIGNvbW11bmVkIHdpdGggaGltIG9mIGFsbCB0aGF0IHdhcyBpbiBoZXIgaGVhcnQuCkFuZCBTb2xvbW9uIHRvbGQgaGVyIGFsbCBoZXIgcXVlc3Rpb25zOiB0aGVyZSB3YXMgbm90IGFueSB0aGluZyBoaWQgZnJvbSB0aGUga2luZywgd2hpY2ggaGUgdG9sZCBoZXIgbm90LgpBbmQgd2hlbiB0aGUgcXVlZW4gb2YgU2hlYmEgaGFkIHNlZW4gYWxsIFNvbG9tb24ncyB3aXNkb20sIGFuZCB0aGUgaG91c2UgdGhhdCBoZSBoYWQgYnVpbHQsCkFuZCB0aGUgbWVhdCBvZiBoaXMgdGFibGUsIGFuZCB0aGUgc2l0dGluZyBvZiBoaXMgc2VydmFudHMsIGFuZCB0aGUgYXR0ZW5kYW5jZSBvZiBoaXMgbWluaXN0ZXJzLCBhbmQgdGhlaXIgYXBwYXJlbCwgYW5kIGhpcyBjdXBiZWFyZXJzLCBhbmQgaGlzIGFzY2VudCBieSB3aGljaCBoZSB3ZW50IHVwIHVudG8gdGhlIGhvdXNlIG9mIHRoZSBMT1JEOyB0aGVyZSB3YXMgbm8gbW9yZSBzcGlyaXQgaW4gaGVyLgpBbmQgc2hlIHNhaWQgdG8gdGhlIGtpbmcsIEl0IHdhcyBhIHRydWUgcmVwb3J0IHRoYXQgSSBoZWFyZCBpbiBtaW5lIG93biBsYW5kIG9mIHRoeSBhY3RzIGFuZCBvZiB0aHkgd2lzZG9tLgpIb3diZWl0IEkgYmVsaWV2ZWQgbm90IHRoZSB3b3JkcywgdW50aWwgSSBjYW1lLCBhbmQgbWluZSBleWVzIGhhZCBzZWVuIGl0OiBhbmQsIGJlaG9sZCwgdGhlIGhhbGYgd2FzIG5vdCB0b2xkIG1lOiB0aHkgd2lzZG9tIGFuZCBwcm9zcGVyaXR5IGV4Y2VlZGV0aCB0aGUgZmFtZSB3aGljaCBJIGhlYXJkLgpIYXBweSBhcmUgdGh5IG1lbiwgaGFwcHkgYXJlIHRoZXNlIHRoeSBzZXJ2YW50cywgd2hpY2ggc3RhbmQgY29udGludWFsbHkgYmVmb3JlIHRoZWUsIGFuZCB0aGF0IGhlYXIgdGh5IHdpc2RvbS4KQmxlc3NlZCBiZSB0aGUgTE9SRCB0aHkgR29kLCB3aGljaCBkZWxpZ2h0ZWQgaW4gdGhlZSwgdG8gc2V0IHRoZWUgb24gdGhlIHRocm9uZSBvZiBJc3JhZWw6IGJlY2F1c2UgdGhlIExPUkQgbG92ZWQgSXNyYWVsIGZvciBldmVyLCB0aGVyZWZvcmUgbWFkZSBoZSB0aGVlIGtpbmcsIHRvIGRvIGp1ZGdtZW50IGFuZCBqdXN0aWNlLgpBbmQgc2hlIGdhdmUgdGhlIGtpbmcgYW4gaHVuZHJlZCBhbmQgdHdlbnR5IHRhbGVudHMgb2YgZ29sZCwgYW5kIG9mIHNwaWNlcyB2ZXJ5IGdyZWF0IHN0b3JlLCBhbmQgcHJlY2lvdXMgc3RvbmVzOiB0aGVyZSBjYW1lIG5vIG1vcmUgc3VjaCBhYnVuZGFuY2Ugb2Ygc3BpY2VzIGFzIHRoZXNlIHdoaWNoIHRoZSBxdWVlbiBvZiBTaGViYSBnYXZlIHRvIGtpbmcgU29sb21vbi4KQW5kIHRoZSBuYXZ5IGFsc28gb2YgSGlyYW0sIHRoYXQgYnJvdWdodCBnb2xkIGZyb20gT3BoaXIsIGJyb3VnaHQgaW4gZnJvbSBPcGhpciBncmVhdCBwbGVudHkgb2YgYWxtdWcgdHJlZXMsIGFuZCBwcmVjaW91cyBzdG9uZXMuCkFuZCB0aGUga2luZyBtYWRlIG9mIHRoZSBhbG11ZyB0cmVlcyBwaWxsYXJzIGZvciB0aGUgaG91c2Ugb2YgdGhlIExPUkQsIGFuZCBmb3IgdGhlIGtpbmcncyBob3VzZSwgaGFycHMgYWxzbyBhbmQgcHNhbHRlcmllcyBmb3Igc2luZ2VyczogdGhlcmUgY2FtZSBubyBzdWNoIGFsbXVnIHRyZWVzLCBub3Igd2VyZSBzZWVuIHVudG8gdGhpcyBkYXkuCkFuZCBraW5nIFNvbG9tb24gZ2F2ZSB1bnRvIHRoZSBxdWVlbiBvZiBTaGViYSBhbGwgaGVyIGRlc2lyZSwgd2hhdHNvZXZlciBzaGUgYXNrZWQsIGJlc2lkZSB0aGF0IHdoaWNoIFNvbG9tb24gZ2F2ZSBoZXIgb2YgaGlzIHJveWFsIGJvdW50eS4gU28gc2hlIHR1cm5lZCBhbmQgd2VudCB0byBoZXIgb3duIGNvdW50cnksIHNoZSBhbmQgaGVyIHNlcnZhbnRzLgpOb3cgdGhlIHdlaWdodCBvZiBnb2xkIHRoYXQgY2FtZSB0byBTb2xvbW9uIGluIG9uZSB5ZWFyIHdhcyBzaXggaHVuZHJlZCB0aHJlZXNjb3JlIGFuZCBzaXggdGFsZW50cyBvZiBnb2xkLApCZXNpZGUgdGhhdCBoZSBoYWQgb2YgdGhlIG1lcmNoYW50bWVuLCBhbmQgb2YgdGhlIHRyYWZmaWNrIG9mIHRoZSBzcGljZSBtZXJjaGFudHMsIGFuZCBvZiBhbGwgdGhlIGtpbmdzIG9mIEFyYWJpYSwgYW5kIG9mIHRoZSBnb3Zlcm5vcnMgb2YgdGhlIGNvdW50cnkuCkFuZCBraW5nIFNvbG9tb24gbWFkZSB0d28gaHVuZHJlZCB0YXJnZXRzIG9mIGJlYXRlbiBnb2xkOiBzaXggaHVuZHJlZCBzaGVrZWxzIG9mIGdvbGQgd2VudCB0byBvbmUgdGFyZ2V0LgpBbmQgaGUgbWFkZSB0aHJlZSBodW5kcmVkIHNoaWVsZHMgb2YgYmVhdGVuIGdvbGQ7IHRocmVlIHBvdW5kIG9mIGdvbGQgd2VudCB0byBvbmUgc2hpZWxkOiBhbmQgdGhlIGtpbmcgcHV0IHRoZW0gaW4gdGhlIGhvdXNlIG9mIHRoZSBmb3Jlc3Qgb2YgTGViYW5vbi4KTW9yZW92ZXIgdGhlIGtpbmcgbWFkZSBhIGdyZWF0IHRocm9uZSBvZiBpdm9yeSwgYW5kIG92ZXJsYWlkIGl0IHdpdGggdGhlIGJlc3QgZ29sZC4KVGhlIHRocm9uZSBoYWQgc2l4IHN0ZXBzLCBhbmQgdGhlIHRvcCBvZiB0aGUgdGhyb25lIHdhcyByb3VuZCBiZWhpbmQ6IGFuZCB0aGVyZSB3ZXJlIHN0YXlzIG9uIGVpdGhlciBzaWRlIG9uIHRoZSBwbGFjZSBvZiB0aGUgc2VhdCwgYW5kIHR3byBsaW9ucyBzdG9vZCBiZXNpZGUgdGhlIHN0YXlzLgpBbmQgdHdlbHZlIGxpb25zIHN0b29kIHRoZXJlIG9uIHRoZSBvbmUgc2lkZSBhbmQgb24gdGhlIG90aGVyIHVwb24gdGhlIHNpeCBzdGVwczogdGhlcmUgd2FzIG5vdCB0aGUgbGlrZSBtYWRlIGluIGFueSBraW5nZG9tLgpBbmQgYWxsIGtpbmcgU29sb21vbidzIGRyaW5raW5nIHZlc3NlbHMgd2VyZSBvZiBnb2xkLCBhbmQgYWxsIHRoZSB2ZXNzZWxzIG9mIHRoZSBob3VzZSBvZiB0aGUgZm9yZXN0IG9mIExlYmFub24gd2VyZSBvZiBwdXJlIGdvbGQ7IG5vbmUgd2VyZSBvZiBzaWx2ZXI6IGl0IHdhcyBub3RoaW5nIGFjY291bnRlZCBvZiBpbiB0aGUgZGF5cyBvZiBTb2xvbW9uLgpGb3IgdGhlIGtpbmcgaGFkIGF0IHNlYSBhIG5hdnkgb2YgVGhhcnNoaXNoIHdpdGggdGhlIG5hdnkgb2YgSGlyYW06IG9uY2UgaW4gdGhyZWUgeWVhcnMgY2FtZSB0aGUgbmF2eSBvZiBUaGFyc2hpc2gsIGJyaW5naW5nIGdvbGQsIGFuZCBzaWx2ZXIsIGl2b3J5LCBhbmQgYXBlcywgYW5kIHBlYWNvY2tzLgpTbyBraW5nIFNvbG9tb24gZXhjZWVkZWQgYWxsIHRoZSBraW5ncyBvZiB0aGUgZWFydGggZm9yIHJpY2hlcyBhbmQgZm9yIHdpc2RvbS4KQW5kIGFsbCB0aGUgZWFydGggc291Z2h0IHRvIFNvbG9tb24sIHRvIGhlYXIgaGlzIHdpc2RvbSwgd2hpY2ggR29kIGhhZCBwdXQgaW4gaGlzIGhlYXJ0LgpBbmQgdGhleSBicm91Z2h0IGV2ZXJ5IG1hbiBoaXMgcHJlc2VudCwgdmVzc2VscyBvZiBzaWx2ZXIsIGFuZCB2ZXNzZWxzIG9mIGdvbGQsIGFuZCBnYXJtZW50cywgYW5kIGFybW91ciwgYW5kIHNwaWNlcywgaG9yc2VzLCBhbmQgbXVsZXMsIGEgcmF0ZSB5ZWFyIGJ5IHllYXIuCkFuZCBTb2xvbW9uIGdhdGhlcmVkIHRvZ2V0aGVyIGNoYXJpb3RzIGFuZCBob3JzZW1lbjogYW5kIGhlIGhhZCBhIHRob3VzYW5kIGFuZCBmb3VyIGh1bmRyZWQgY2hhcmlvdHMsIGFuZCB0d2VsdmUgdGhvdXNhbmQgaG9yc2VtZW4sIHdob20gaGUgYmVzdG93ZWQgaW4gdGhlIGNpdGllcyBmb3IgY2hhcmlvdHMsIGFuZCB3aXRoIHRoZSBraW5nIGF0IEplcnVzYWxlbS4KQW5kIHRoZSBraW5nIG1hZGUgc2lsdmVyIHRvIGJlIGluIEplcnVzYWxlbSBhcyBzdG9uZXMsIGFuZCBjZWRhcnMgbWFkZSBoZSB0byBiZSBhcyB0aGUgc3ljb21vcmUgdHJlZXMgdGhhdCBhcmUgaW4gdGhlIHZhbGUsIGZvciBhYnVuZGFuY2UuCkFuZCBTb2xvbW9uIGhhZCBob3JzZXMgYnJvdWdodCBvdXQgb2YgRWd5cHQsIGFuZCBsaW5lbiB5YXJuOiB0aGUga2luZydzIG1lcmNoYW50cyByZWNlaXZlZCB0aGUgbGluZW4geWFybiBhdCBhIHByaWNlLgpBbmQgYSBjaGFyaW90IGNhbWUgdXAgYW5kIHdlbnQgb3V0IG9mIEVneXB0IGZvciBzaXggaHVuZHJlZCBzaGVrZWxzIG9mIHNpbHZlciwgYW5kIGFuIGhvcnNlIGZvciBhbiBodW5kcmVkIGFuZCBmaWZ0eTogYW5kIHNvIGZvciBhbGwgdGhlIGtpbmdzIG9mIHRoZSBIaXR0aXRlcywgYW5kIGZvciB0aGUga2luZ3Mgb2YgU3lyaWEsIGRpZCB0aGV5IGJyaW5nIHRoZW0gb3V0IGJ5IHRoZWlyIG1lYW5zLgpCdXQga2luZyBTb2xvbW9uIGxvdmVkIG1hbnkgc3RyYW5nZSB3b21lbiwgdG9nZXRoZXIgd2l0aCB0aGUgZGF1Z2h0ZXIgb2YgUGhhcmFvaCwgd29tZW4gb2YgdGhlIE1vYWJpdGVzLCBBbW1vbml0ZXMsIEVkb21pdGVzLCBaaWRvbmlhbnMsIGFuZCBIaXR0aXRlczoKT2YgdGhlIG5hdGlvbnMgY29uY2VybmluZyB3aGljaCB0aGUgTE9SRCBzYWlkIHVudG8gdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgWWUgc2hhbGwgbm90IGdvIGluIHRvIHRoZW0sIG5laXRoZXIgc2hhbGwgdGhleSBjb21lIGluIHVudG8geW91OiBmb3Igc3VyZWx5IHRoZXkgd2lsbCB0dXJuIGF3YXkgeW91ciBoZWFydCBhZnRlciB0aGVpciBnb2RzOiBTb2xvbW9uIGNsYXZlIHVudG8gdGhlc2UgaW4gbG92ZS4KQW5kIGhlIGhhZCBzZXZlbiBodW5kcmVkIHdpdmVzLCBwcmluY2Vzc2VzLCBhbmQgdGhyZWUgaHVuZHJlZCBjb25jdWJpbmVzOiBhbmQgaGlzIHdpdmVzIHR1cm5lZCBhd2F5IGhpcyBoZWFydC4KRm9yIGl0IGNhbWUgdG8gcGFzcywgd2hlbiBTb2xvbW9uIHdhcyBvbGQsIHRoYXQgaGlzIHdpdmVzIHR1cm5lZCBhd2F5IGhpcyBoZWFydCBhZnRlciBvdGhlciBnb2RzOiBhbmQgaGlzIGhlYXJ0IHdhcyBub3QgcGVyZmVjdCB3aXRoIHRoZSBMT1JEIGhpcyBHb2QsIGFzIHdhcyB0aGUgaGVhcnQgb2YgRGF2aWQgaGlzIGZhdGhlci4KRm9yIFNvbG9tb24gd2VudCBhZnRlciBBc2h0b3JldGggdGhlIGdvZGRlc3Mgb2YgdGhlIFppZG9uaWFucywgYW5kIGFmdGVyIE1pbGNvbSB0aGUgYWJvbWluYXRpb24gb2YgdGhlIEFtbW9uaXRlcy4KQW5kIFNvbG9tb24gZGlkIGV2aWwgaW4gdGhlIHNpZ2h0IG9mIHRoZSBMT1JELCBhbmQgd2VudCBub3QgZnVsbHkgYWZ0ZXIgdGhlIExPUkQsIGFzIGRpZCBEYXZpZCBoaXMgZmF0aGVyLgpUaGVuIGRpZCBTb2xvbW9uIGJ1aWxkIGFuIGhpZ2ggcGxhY2UgZm9yIENoZW1vc2gsIHRoZSBhYm9taW5hdGlvbiBvZiBNb2FiLCBpbiB0aGUgaGlsbCB0aGF0IGlzIGJlZm9yZSBKZXJ1c2FsZW0sIGFuZCBmb3IgTW9sZWNoLCB0aGUgYWJvbWluYXRpb24gb2YgdGhlIGNoaWxkcmVuIG9mIEFtbW9uLgpBbmQgbGlrZXdpc2UgZGlkIGhlIGZvciBhbGwgaGlzIHN0cmFuZ2Ugd2l2ZXMsIHdoaWNoIGJ1cm50IGluY2Vuc2UgYW5kIHNhY3JpZmljZWQgdW50byB0aGVpciBnb2RzLgpBbmQgdGhlIExPUkQgd2FzIGFuZ3J5IHdpdGggU29sb21vbiwgYmVjYXVzZSBoaXMgaGVhcnQgd2FzIHR1cm5lZCBmcm9tIHRoZSBMT1JEIEdvZCBvZiBJc3JhZWwsIHdoaWNoIGhhZCBhcHBlYXJlZCB1bnRvIGhpbSB0d2ljZSwKQW5kIGhhZCBjb21tYW5kZWQgaGltIGNvbmNlcm5pbmcgdGhpcyB0aGluZywgdGhhdCBoZSBzaG91bGQgbm90IGdvIGFmdGVyIG90aGVyIGdvZHM6IGJ1dCBoZSBrZXB0IG5vdCB0aGF0IHdoaWNoIHRoZSBMT1JEIGNvbW1hbmRlZC4KV2hlcmVmb3JlIHRoZSBMT1JEIHNhaWQgdW50byBTb2xvbW9uLCBGb3Jhc211Y2ggYXMgdGhpcyBpcyBkb25lIG9mIHRoZWUsIGFuZCB0aG91IGhhc3Qgbm90IGtlcHQgbXkgY292ZW5hbnQgYW5kIG15IHN0YXR1dGVzLCB3aGljaCBJIGhhdmUgY29tbWFuZGVkIHRoZWUsIEkgd2lsbCBzdXJlbHkgcmVuZCB0aGUga2luZ2RvbSBmcm9tIHRoZWUsIGFuZCB3aWxsIGdpdmUgaXQgdG8gdGh5IHNlcnZhbnQuCk5vdHdpdGhzdGFuZGluZyBpbiB0aHkgZGF5cyBJIHdpbGwgbm90IGRvIGl0IGZvciBEYXZpZCB0aHkgZmF0aGVyJ3Mgc2FrZTogYnV0IEkgd2lsbCByZW5kIGl0IG91dCBvZiB0aGUgaGFuZCBvZiB0aHkgc29uLgpIb3diZWl0IEkgd2lsbCBub3QgcmVuZCBhd2F5IGFsbCB0aGUga2luZ2RvbTsgYnV0IHdpbGwgZ2l2ZSBvbmUgdHJpYmUgdG8gdGh5IHNvbiBmb3IgRGF2aWQgbXkgc2VydmFudCdzIHNha2UsIGFuZCBmb3IgSmVydXNhbGVtJ3Mgc2FrZSB3aGljaCBJIGhhdmUgY2hvc2VuLgpBbmQgdGhlIExPUkQgc3RpcnJlZCB1cCBhbiBhZHZlcnNhcnkgdW50byBTb2xvbW9uLCBIYWRhZCB0aGUgRWRvbWl0ZTogaGUgd2FzIG9mIHRoZSBraW5nJ3Mgc2VlZCBpbiBFZG9tLgpGb3IgaXQgY2FtZSB0byBwYXNzLCB3aGVuIERhdmlkIHdhcyBpbiBFZG9tLCBhbmQgSm9hYiB0aGUgY2FwdGFpbiBvZiB0aGUgaG9zdCB3YXMgZ29uZSB1cCB0byBidXJ5IHRoZSBzbGFpbiwgYWZ0ZXIgaGUgaGFkIHNtaXR0ZW4gZXZlcnkgbWFsZSBpbiBFZG9tOwooRm9yIHNpeCBtb250aHMgZGlkIEpvYWIgcmVtYWluIHRoZXJlIHdpdGggYWxsIElzcmFlbCwgdW50aWwgaGUgaGFkIGN1dCBvZmYgZXZlcnkgbWFsZSBpbiBFZG9tOikKVGhhdCBIYWRhZCBmbGVkLCBoZSBhbmQgY2VydGFpbiBFZG9taXRlcyBvZiBoaXMgZmF0aGVyJ3Mgc2VydmFudHMgd2l0aCBoaW0sIHRvIGdvIGludG8gRWd5cHQ7IEhhZGFkIGJlaW5nIHlldCBhIGxpdHRsZSBjaGlsZC4KQW5kIHRoZXkgYXJvc2Ugb3V0IG9mIE1pZGlhbiwgYW5kIGNhbWUgdG8gUGFyYW46IGFuZCB0aGV5IHRvb2sgbWVuIHdpdGggdGhlbSBvdXQgb2YgUGFyYW4sIGFuZCB0aGV5IGNhbWUgdG8gRWd5cHQsIHVudG8gUGhhcmFvaCBraW5nIG9mIEVneXB0OyB3aGljaCBnYXZlIGhpbSBhbiBob3VzZSwgYW5kIGFwcG9pbnRlZCBoaW0gdmljdHVhbHMsIGFuZCBnYXZlIGhpbSBsYW5kLgpBbmQgSGFkYWQgZm91bmQgZ3JlYXQgZmF2b3VyIGluIHRoZSBzaWdodCBvZiBQaGFyYW9oLCBzbyB0aGF0IGhlIGdhdmUgaGltIHRvIHdpZmUgdGhlIHNpc3RlciBvZiBoaXMgb3duIHdpZmUsIHRoZSBzaXN0ZXIgb2YgVGFocGVuZXMgdGhlIHF1ZWVuLgpBbmQgdGhlIHNpc3RlciBvZiBUYWhwZW5lcyBiYXJlIGhpbSBHZW51YmF0aCBoaXMgc29uLCB3aG9tIFRhaHBlbmVzIHdlYW5lZCBpbiBQaGFyYW9oJ3MgaG91c2U6IGFuZCBHZW51YmF0aCB3YXMgaW4gUGhhcmFvaCdzIGhvdXNlaG9sZCBhbW9uZyB0aGUgc29ucyBvZiBQaGFyYW9oLgpBbmQgd2hlbiBIYWRhZCBoZWFyZCBpbiBFZ3lwdCB0aGF0IERhdmlkIHNsZXB0IHdpdGggaGlzIGZhdGhlcnMsIGFuZCB0aGF0IEpvYWIgdGhlIGNhcHRhaW4gb2YgdGhlIGhvc3Qgd2FzIGRlYWQsIEhhZGFkIHNhaWQgdG8gUGhhcmFvaCwgTGV0IG1lIGRlcGFydCwgdGhhdCBJIG1heSBnbyB0byBtaW5lIG93biBjb3VudHJ5LgpUaGVuIFBoYXJhb2ggc2FpZCB1bnRvIGhpbSwgQnV0IHdoYXQgaGFzdCB0aG91IGxhY2tlZCB3aXRoIG1lLCB0aGF0LCBiZWhvbGQsIHRob3Ugc2Vla2VzdCB0byBnbyB0byB0aGluZSBvd24gY291bnRyeT8gQW5kIGhlIGFuc3dlcmVkLCBOb3RoaW5nOiBob3diZWl0IGxldCBtZSBnbyBpbiBhbnkgd2lzZS4KQW5kIEdvZCBzdGlycmVkIGhpbSB1cCBhbm90aGVyIGFkdmVyc2FyeSwgUmV6b24gdGhlIHNvbiBvZiBFbGlhZGFoLCB3aGljaCBmbGVkIGZyb20gaGlzIGxvcmQgSGFkYWRlemVyIGtpbmcgb2YgWm9iYWg6CkFuZCBoZSBnYXRoZXJlZCBtZW4gdW50byBoaW0sIGFuZCBiZWNhbWUgY2FwdGFpbiBvdmVyIGEgYmFuZCwgd2hlbiBEYXZpZCBzbGV3IHRoZW0gb2YgWm9iYWg6IGFuZCB0aGV5IHdlbnQgdG8gRGFtYXNjdXMsIGFuZCBkd2VsdCB0aGVyZWluLCBhbmQgcmVpZ25lZCBpbiBEYW1hc2N1cy4KQW5kIGhlIHdhcyBhbiBhZHZlcnNhcnkgdG8gSXNyYWVsIGFsbCB0aGUgZGF5cyBvZiBTb2xvbW9uLCBiZXNpZGUgdGhlIG1pc2NoaWVmIHRoYXQgSGFkYWQgZGlkOiBhbmQgaGUgYWJob3JyZWQgSXNyYWVsLCBhbmQgcmVpZ25lZCBvdmVyIFN5cmlhLgpBbmQgSmVyb2JvYW0gdGhlIHNvbiBvZiBOZWJhdCwgYW4gRXBocmF0aGl0ZSBvZiBaZXJlZGEsIFNvbG9tb24ncyBzZXJ2YW50LCB3aG9zZSBtb3RoZXIncyBuYW1lIHdhcyBaZXJ1YWgsIGEgd2lkb3cgd29tYW4sIGV2ZW4gaGUgbGlmdGVkIHVwIGhpcyBoYW5kIGFnYWluc3QgdGhlIGtpbmcuCkFuZCB0aGlzIHdhcyB0aGUgY2F1c2UgdGhhdCBoZSBsaWZ0ZWQgdXAgaGlzIGhhbmQgYWdhaW5zdCB0aGUga2luZzogU29sb21vbiBidWlsdCBNaWxsbywgYW5kIHJlcGFpcmVkIHRoZSBicmVhY2hlcyBvZiB0aGUgY2l0eSBvZiBEYXZpZCBoaXMgZmF0aGVyLgpBbmQgdGhlIG1hbiBKZXJvYm9hbSB3YXMgYSBtaWdodHkgbWFuIG9mIHZhbG91cjogYW5kIFNvbG9tb24gc2VlaW5nIHRoZSB5b3VuZyBtYW4gdGhhdCBoZSB3YXMgaW5kdXN0cmlvdXMsIGhlIG1hZGUgaGltIHJ1bGVyIG92ZXIgYWxsIHRoZSBjaGFyZ2Ugb2YgdGhlIGhvdXNlIG9mIEpvc2VwaC4KQW5kIGl0IGNhbWUgdG8gcGFzcyBhdCB0aGF0IHRpbWUgd2hlbiBKZXJvYm9hbSB3ZW50IG91dCBvZiBKZXJ1c2FsZW0sIHRoYXQgdGhlIHByb3BoZXQgQWhpamFoIHRoZSBTaGlsb25pdGUgZm91bmQgaGltIGluIHRoZSB3YXk7IGFuZCBoZSBoYWQgY2xhZCBoaW1zZWxmIHdpdGggYSBuZXcgZ2FybWVudDsgYW5kIHRoZXkgdHdvIHdlcmUgYWxvbmUgaW4gdGhlIGZpZWxkOgpBbmQgQWhpamFoIGNhdWdodCB0aGUgbmV3IGdhcm1lbnQgdGhhdCB3YXMgb24gaGltLCBhbmQgcmVudCBpdCBpbiB0d2VsdmUgcGllY2VzOgpBbmQgaGUgc2FpZCB0byBKZXJvYm9hbSwgVGFrZSB0aGVlIHRlbiBwaWVjZXM6IGZvciB0aHVzIHNhaXRoIHRoZSBMT1JELCB0aGUgR29kIG9mIElzcmFlbCwgQmVob2xkLCBJIHdpbGwgcmVuZCB0aGUga2luZ2RvbSBvdXQgb2YgdGhlIGhhbmQgb2YgU29sb21vbiwgYW5kIHdpbGwgZ2l2ZSB0ZW4gdHJpYmVzIHRvIHRoZWU6CihCdXQgaGUgc2hhbGwgaGF2ZSBvbmUgdHJpYmUgZm9yIG15IHNlcnZhbnQgRGF2aWQncyBzYWtlLCBhbmQgZm9yIEplcnVzYWxlbSdzIHNha2UsIHRoZSBjaXR5IHdoaWNoIEkgaGF2ZSBjaG9zZW4gb3V0IG9mIGFsbCB0aGUgdHJpYmVzIG9mIElzcmFlbDopCkJlY2F1c2UgdGhhdCB0aGV5IGhhdmUgZm9yc2FrZW4gbWUsIGFuZCBoYXZlIHdvcnNoaXBwZWQgQXNodG9yZXRoIHRoZSBnb2RkZXNzIG9mIHRoZSBaaWRvbmlhbnMsIENoZW1vc2ggdGhlIGdvZCBvZiB0aGUgTW9hYml0ZXMsIGFuZCBNaWxjb20gdGhlIGdvZCBvZiB0aGUgY2hpbGRyZW4gb2YgQW1tb24sIGFuZCBoYXZlIG5vdCB3YWxrZWQgaW4gbXkgd2F5cywgdG8gZG8gdGhhdCB3aGljaCBpcyByaWdodCBpbiBtaW5lIGV5ZXMsIGFuZCB0byBrZWVwIG15IHN0YXR1dGVzIGFuZCBteSBqdWRnbWVudHMsIGFzIGRpZCBEYXZpZCBoaXMgZmF0aGVyLgpIb3diZWl0IEkgd2lsbCBub3QgdGFrZSB0aGUgd2hvbGUga2luZ2RvbSBvdXQgb2YgaGlzIGhhbmQ6IGJ1dCBJIHdpbGwgbWFrZSBoaW0gcHJpbmNlIGFsbCB0aGUgZGF5cyBvZiBoaXMgbGlmZSBmb3IgRGF2aWQgbXkgc2VydmFudCdzIHNha2UsIHdob20gSSBjaG9zZSwgYmVjYXVzZSBoZSBrZXB0IG15IGNvbW1hbmRtZW50cyBhbmQgbXkgc3RhdHV0ZXM6CkJ1dCBJIHdpbGwgdGFrZSB0aGUga2luZ2RvbSBvdXQgb2YgaGlzIHNvbidzIGhhbmQsIGFuZCB3aWxsIGdpdmUgaXQgdW50byB0aGVlLCBldmVuIHRlbiB0cmliZXMuCkFuZCB1bnRvIGhpcyBzb24gd2lsbCBJIGdpdmUgb25lIHRyaWJlLCB0aGF0IERhdmlkIG15IHNlcnZhbnQgbWF5IGhhdmUgYSBsaWdodCBhbHdheSBiZWZvcmUgbWUgaW4gSmVydXNhbGVtLCB0aGUgY2l0eSB3aGljaCBJIGhhdmUgY2hvc2VuIG1lIHRvIHB1dCBteSBuYW1lIHRoZXJlLgpBbmQgSSB3aWxsIHRha2UgdGhlZSwgYW5kIHRob3Ugc2hhbHQgcmVpZ24gYWNjb3JkaW5nIHRvIGFsbCB0aGF0IHRoeSBzb3VsIGRlc2lyZXRoLCBhbmQgc2hhbHQgYmUga2luZyBvdmVyIElzcmFlbC4KQW5kIGl0IHNoYWxsIGJlLCBpZiB0aG91IHdpbHQgaGVhcmtlbiB1bnRvIGFsbCB0aGF0IEkgY29tbWFuZCB0aGVlLCBhbmQgd2lsdCB3YWxrIGluIG15IHdheXMsIGFuZCBkbyB0aGF0IGlzIHJpZ2h0IGluIG15IHNpZ2h0LCB0byBrZWVwIG15IHN0YXR1dGVzIGFuZCBteSBjb21tYW5kbWVudHMsIGFzIERhdmlkIG15IHNlcnZhbnQgZGlkOyB0aGF0IEkgd2lsbCBiZSB3aXRoIHRoZWUsIGFuZCBidWlsZCB0aGVlIGEgc3VyZSBob3VzZSwgYXMgSSBidWlsdCBmb3IgRGF2aWQsIGFuZCB3aWxsIGdpdmUgSXNyYWVsIHVudG8gdGhlZS4KQW5kIEkgd2lsbCBmb3IgdGhpcyBhZmZsaWN0IHRoZSBzZWVkIG9mIERhdmlkLCBidXQgbm90IGZvciBldmVyLgpTb2xvbW9uIHNvdWdodCB0aGVyZWZvcmUgdG8ga2lsbCBKZXJvYm9hbS4gQW5kIEplcm9ib2FtIGFyb3NlLCBhbmQgZmxlZCBpbnRvIEVneXB0LCB1bnRvIFNoaXNoYWsga2luZyBvZiBFZ3lwdCwgYW5kIHdhcyBpbiBFZ3lwdCB1bnRpbCB0aGUgZGVhdGggb2YgU29sb21vbi4KQW5kIHRoZSByZXN0IG9mIHRoZSBhY3RzIG9mIFNvbG9tb24sIGFuZCBhbGwgdGhhdCBoZSBkaWQsIGFuZCBoaXMgd2lzZG9tLCBhcmUgdGhleSBub3Qgd3JpdHRlbiBpbiB0aGUgYm9vayBvZiB0aGUgYWN0cyBvZiBTb2xvbW9uPwpBbmQgdGhlIHRpbWUgdGhhdCBTb2xvbW9uIHJlaWduZWQgaW4gSmVydXNhbGVtIG92ZXIgYWxsIElzcmFlbCB3YXMgZm9ydHkgeWVhcnMuCkFuZCBTb2xvbW9uIHNsZXB0IHdpdGggaGlzIGZhdGhlcnMsIGFuZCB3YXMgYnVyaWVkIGluIHRoZSBjaXR5IG9mIERhdmlkIGhpcyBmYXRoZXI6IGFuZCBSZWhvYm9hbSBoaXMgc29uIHJlaWduZWQgaW4gaGlzIHN0ZWFkLgpBbmQgUmVob2JvYW0gd2VudCB0byBTaGVjaGVtOiBmb3IgYWxsIElzcmFlbCB3ZXJlIGNvbWUgdG8gU2hlY2hlbSB0byBtYWtlIGhpbSBraW5nLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIEplcm9ib2FtIHRoZSBzb24gb2YgTmViYXQsIHdobyB3YXMgeWV0IGluIEVneXB0LCBoZWFyZCBvZiBpdCwgKGZvciBoZSB3YXMgZmxlZCBmcm9tIHRoZSBwcmVzZW5jZSBvZiBraW5nIFNvbG9tb24sIGFuZCBKZXJvYm9hbSBkd2VsdCBpbiBFZ3lwdDspClRoYXQgdGhleSBzZW50IGFuZCBjYWxsZWQgaGltLiBBbmQgSmVyb2JvYW0gYW5kIGFsbCB0aGUgY29uZ3JlZ2F0aW9uIG9mIElzcmFlbCBjYW1lLCBhbmQgc3Bha2UgdW50byBSZWhvYm9hbSwgc2F5aW5nLApUaHkgZmF0aGVyIG1hZGUgb3VyIHlva2UgZ3JpZXZvdXM6IG5vdyB0aGVyZWZvcmUgbWFrZSB0aG91IHRoZSBncmlldm91cyBzZXJ2aWNlIG9mIHRoeSBmYXRoZXIsIGFuZCBoaXMgaGVhdnkgeW9rZSB3aGljaCBoZSBwdXQgdXBvbiB1cywgbGlnaHRlciwgYW5kIHdlIHdpbGwgc2VydmUgdGhlZS4KQW5kIGhlIHNhaWQgdW50byB0aGVtLCBEZXBhcnQgeWV0IGZvciB0aHJlZSBkYXlzLCB0aGVuIGNvbWUgYWdhaW4gdG8gbWUuIEFuZCB0aGUgcGVvcGxlIGRlcGFydGVkLgpBbmQga2luZyBSZWhvYm9hbSBjb25zdWx0ZWQgd2l0aCB0aGUgb2xkIG1lbiwgdGhhdCBzdG9vZCBiZWZvcmUgU29sb21vbiBoaXMgZmF0aGVyIHdoaWxlIGhlIHlldCBsaXZlZCwgYW5kIHNhaWQsIEhvdyBkbyB5ZSBhZHZpc2UgdGhhdCBJIG1heSBhbnN3ZXIgdGhpcyBwZW9wbGU/CkFuZCB0aGV5IHNwYWtlIHVudG8gaGltLCBzYXlpbmcsIElmIHRob3Ugd2lsdCBiZSBhIHNlcnZhbnQgdW50byB0aGlzIHBlb3BsZSB0aGlzIGRheSwgYW5kIHdpbHQgc2VydmUgdGhlbSwgYW5kIGFuc3dlciB0aGVtLCBhbmQgc3BlYWsgZ29vZCB3b3JkcyB0byB0aGVtLCB0aGVuIHRoZXkgd2lsbCBiZSB0aHkgc2VydmFudHMgZm9yIGV2ZXIuCkJ1dCBoZSBmb3Jzb29rIHRoZSBjb3Vuc2VsIG9mIHRoZSBvbGQgbWVuLCB3aGljaCB0aGV5IGhhZCBnaXZlbiBoaW0sIGFuZCBjb25zdWx0ZWQgd2l0aCB0aGUgeW91bmcgbWVuIHRoYXQgd2VyZSBncm93biB1cCB3aXRoIGhpbSwgYW5kIHdoaWNoIHN0b29kIGJlZm9yZSBoaW06CkFuZCBoZSBzYWlkIHVudG8gdGhlbSwgV2hhdCBjb3Vuc2VsIGdpdmUgeWUgdGhhdCB3ZSBtYXkgYW5zd2VyIHRoaXMgcGVvcGxlLCB3aG8gaGF2ZSBzcG9rZW4gdG8gbWUsIHNheWluZywgTWFrZSB0aGUgeW9rZSB3aGljaCB0aHkgZmF0aGVyIGRpZCBwdXQgdXBvbiB1cyBsaWdodGVyPwpBbmQgdGhlIHlvdW5nIG1lbiB0aGF0IHdlcmUgZ3Jvd24gdXAgd2l0aCBoaW0gc3Bha2UgdW50byBoaW0sIHNheWluZywgVGh1cyBzaGFsdCB0aG91IHNwZWFrIHVudG8gdGhpcyBwZW9wbGUgdGhhdCBzcGFrZSB1bnRvIHRoZWUsIHNheWluZywgVGh5IGZhdGhlciBtYWRlIG91ciB5b2tlIGhlYXZ5LCBidXQgbWFrZSB0aG91IGl0IGxpZ2h0ZXIgdW50byB1czsgdGh1cyBzaGFsdCB0aG91IHNheSB1bnRvIHRoZW0sIE15IGxpdHRsZSBmaW5nZXIgc2hhbGwgYmUgdGhpY2tlciB0aGFuIG15IGZhdGhlcidzIGxvaW5zLgpBbmQgbm93IHdoZXJlYXMgbXkgZmF0aGVyIGRpZCBsYWRlIHlvdSB3aXRoIGEgaGVhdnkgeW9rZSwgSSB3aWxsIGFkZCB0byB5b3VyIHlva2U6IG15IGZhdGhlciBoYXRoIGNoYXN0aXNlZCB5b3Ugd2l0aCB3aGlwcywgYnV0IEkgd2lsbCBjaGFzdGlzZSB5b3Ugd2l0aCBzY29ycGlvbnMuClNvIEplcm9ib2FtIGFuZCBhbGwgdGhlIHBlb3BsZSBjYW1lIHRvIFJlaG9ib2FtIHRoZSB0aGlyZCBkYXksIGFzIHRoZSBraW5nIGhhZCBhcHBvaW50ZWQsIHNheWluZywgQ29tZSB0byBtZSBhZ2FpbiB0aGUgdGhpcmQgZGF5LgpBbmQgdGhlIGtpbmcgYW5zd2VyZWQgdGhlIHBlb3BsZSByb3VnaGx5LCBhbmQgZm9yc29vayB0aGUgb2xkIG1lbidzIGNvdW5zZWwgdGhhdCB0aGV5IGdhdmUgaGltOwpBbmQgc3Bha2UgdG8gdGhlbSBhZnRlciB0aGUgY291bnNlbCBvZiB0aGUgeW91bmcgbWVuLCBzYXlpbmcsIE15IGZhdGhlciBtYWRlIHlvdXIgeW9rZSBoZWF2eSwgYW5kIEkgd2lsbCBhZGQgdG8geW91ciB5b2tlOiBteSBmYXRoZXIgYWxzbyBjaGFzdGlzZWQgeW91IHdpdGggd2hpcHMsIGJ1dCBJIHdpbGwgY2hhc3Rpc2UgeW91IHdpdGggc2NvcnBpb25zLgpXaGVyZWZvcmUgdGhlIGtpbmcgaGVhcmtlbmVkIG5vdCB1bnRvIHRoZSBwZW9wbGU7IGZvciB0aGUgY2F1c2Ugd2FzIGZyb20gdGhlIExPUkQsIHRoYXQgaGUgbWlnaHQgcGVyZm9ybSBoaXMgc2F5aW5nLCB3aGljaCB0aGUgTE9SRCBzcGFrZSBieSBBaGlqYWggdGhlIFNoaWxvbml0ZSB1bnRvIEplcm9ib2FtIHRoZSBzb24gb2YgTmViYXQuClNvIHdoZW4gYWxsIElzcmFlbCBzYXcgdGhhdCB0aGUga2luZyBoZWFya2VuZWQgbm90IHVudG8gdGhlbSwgdGhlIHBlb3BsZSBhbnN3ZXJlZCB0aGUga2luZywgc2F5aW5nLCBXaGF0IHBvcnRpb24gaGF2ZSB3ZSBpbiBEYXZpZD8gbmVpdGhlciBoYXZlIHdlIGluaGVyaXRhbmNlIGluIHRoZSBzb24gb2YgSmVzc2U6IHRvIHlvdXIgdGVudHMsIE8gSXNyYWVsOiBub3cgc2VlIHRvIHRoaW5lIG93biBob3VzZSwgRGF2aWQuIFNvIElzcmFlbCBkZXBhcnRlZCB1bnRvIHRoZWlyIHRlbnRzLgpCdXQgYXMgZm9yIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgd2hpY2ggZHdlbHQgaW4gdGhlIGNpdGllcyBvZiBKdWRhaCwgUmVob2JvYW0gcmVpZ25lZCBvdmVyIHRoZW0uClRoZW4ga2luZyBSZWhvYm9hbSBzZW50IEFkb3JhbSwgd2hvIHdhcyBvdmVyIHRoZSB0cmlidXRlOyBhbmQgYWxsIElzcmFlbCBzdG9uZWQgaGltIHdpdGggc3RvbmVzLCB0aGF0IGhlIGRpZWQuIFRoZXJlZm9yZSBraW5nIFJlaG9ib2FtIG1hZGUgc3BlZWQgdG8gZ2V0IGhpbSB1cCB0byBoaXMgY2hhcmlvdCwgdG8gZmxlZSB0byBKZXJ1c2FsZW0uClNvIElzcmFlbCByZWJlbGxlZCBhZ2FpbnN0IHRoZSBob3VzZSBvZiBEYXZpZCB1bnRvIHRoaXMgZGF5LgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIGFsbCBJc3JhZWwgaGVhcmQgdGhhdCBKZXJvYm9hbSB3YXMgY29tZSBhZ2FpbiwgdGhhdCB0aGV5IHNlbnQgYW5kIGNhbGxlZCBoaW0gdW50byB0aGUgY29uZ3JlZ2F0aW9uLCBhbmQgbWFkZSBoaW0ga2luZyBvdmVyIGFsbCBJc3JhZWw6IHRoZXJlIHdhcyBub25lIHRoYXQgZm9sbG93ZWQgdGhlIGhvdXNlIG9mIERhdmlkLCBidXQgdGhlIHRyaWJlIG9mIEp1ZGFoIG9ubHkuCkFuZCB3aGVuIFJlaG9ib2FtIHdhcyBjb21lIHRvIEplcnVzYWxlbSwgaGUgYXNzZW1ibGVkIGFsbCB0aGUgaG91c2Ugb2YgSnVkYWgsIHdpdGggdGhlIHRyaWJlIG9mIEJlbmphbWluLCBhbiBodW5kcmVkIGFuZCBmb3Vyc2NvcmUgdGhvdXNhbmQgY2hvc2VuIG1lbiwgd2hpY2ggd2VyZSB3YXJyaW9ycywgdG8gZmlnaHQgYWdhaW5zdCB0aGUgaG91c2Ugb2YgSXNyYWVsLCB0byBicmluZyB0aGUga2luZ2RvbSBhZ2FpbiB0byBSZWhvYm9hbSB0aGUgc29uIG9mIFNvbG9tb24uCkJ1dCB0aGUgd29yZCBvZiBHb2QgY2FtZSB1bnRvIFNoZW1haWFoIHRoZSBtYW4gb2YgR29kLCBzYXlpbmcsClNwZWFrIHVudG8gUmVob2JvYW0sIHRoZSBzb24gb2YgU29sb21vbiwga2luZyBvZiBKdWRhaCwgYW5kIHVudG8gYWxsIHRoZSBob3VzZSBvZiBKdWRhaCBhbmQgQmVuamFtaW4sIGFuZCB0byB0aGUgcmVtbmFudCBvZiB0aGUgcGVvcGxlLCBzYXlpbmcsClRodXMgc2FpdGggdGhlIExPUkQsIFllIHNoYWxsIG5vdCBnbyB1cCwgbm9yIGZpZ2h0IGFnYWluc3QgeW91ciBicmV0aHJlbiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsOiByZXR1cm4gZXZlcnkgbWFuIHRvIGhpcyBob3VzZTsgZm9yIHRoaXMgdGhpbmcgaXMgZnJvbSBtZS4gVGhleSBoZWFya2VuZWQgdGhlcmVmb3JlIHRvIHRoZSB3b3JkIG9mIHRoZSBMT1JELCBhbmQgcmV0dXJuZWQgdG8gZGVwYXJ0LCBhY2NvcmRpbmcgdG8gdGhlIHdvcmQgb2YgdGhlIExPUkQuClRoZW4gSmVyb2JvYW0gYnVpbHQgU2hlY2hlbSBpbiBtb3VudCBFcGhyYWltLCBhbmQgZHdlbHQgdGhlcmVpbjsgYW5kIHdlbnQgb3V0IGZyb20gdGhlbmNlLCBhbmQgYnVpbHQgUGVudWVsLgpBbmQgSmVyb2JvYW0gc2FpZCBpbiBoaXMgaGVhcnQsIE5vdyBzaGFsbCB0aGUga2luZ2RvbSByZXR1cm4gdG8gdGhlIGhvdXNlIG9mIERhdmlkOgpJZiB0aGlzIHBlb3BsZSBnbyB1cCB0byBkbyBzYWNyaWZpY2UgaW4gdGhlIGhvdXNlIG9mIHRoZSBMT1JEIGF0IEplcnVzYWxlbSwgdGhlbiBzaGFsbCB0aGUgaGVhcnQgb2YgdGhpcyBwZW9wbGUgdHVybiBhZ2FpbiB1bnRvIHRoZWlyIGxvcmQsIGV2ZW4gdW50byBSZWhvYm9hbSBraW5nIG9mIEp1ZGFoLCBhbmQgdGhleSBzaGFsbCBraWxsIG1lLCBhbmQgZ28gYWdhaW4gdG8gUmVob2JvYW0ga2luZyBvZiBKdWRhaC4KV2hlcmV1cG9uIHRoZSBraW5nIHRvb2sgY291bnNlbCwgYW5kIG1hZGUgdHdvIGNhbHZlcyBvZiBnb2xkLCBhbmQgc2FpZCB1bnRvIHRoZW0sIEl0IGlzIHRvbyBtdWNoIGZvciB5b3UgdG8gZ28gdXAgdG8gSmVydXNhbGVtOiBiZWhvbGQgdGh5IGdvZHMsIE8gSXNyYWVsLCB3aGljaCBicm91Z2h0IHRoZWUgdXAgb3V0IG9mIHRoZSBsYW5kIG9mIEVneXB0LgpBbmQgaGUgc2V0IHRoZSBvbmUgaW4gQmV0aGVsLCBhbmQgdGhlIG90aGVyIHB1dCBoZSBpbiBEYW4uCkFuZCB0aGlzIHRoaW5nIGJlY2FtZSBhIHNpbjogZm9yIHRoZSBwZW9wbGUgd2VudCB0byB3b3JzaGlwIGJlZm9yZSB0aGUgb25lLCBldmVuIHVudG8gRGFuLgpBbmQgaGUgbWFkZSBhbiBob3VzZSBvZiBoaWdoIHBsYWNlcywgYW5kIG1hZGUgcHJpZXN0cyBvZiB0aGUgbG93ZXN0IG9mIHRoZSBwZW9wbGUsIHdoaWNoIHdlcmUgbm90IG9mIHRoZSBzb25zIG9mIExldmkuCkFuZCBKZXJvYm9hbSBvcmRhaW5lZCBhIGZlYXN0IGluIHRoZSBlaWdodGggbW9udGgsIG9uIHRoZSBmaWZ0ZWVudGggZGF5IG9mIHRoZSBtb250aCwgbGlrZSB1bnRvIHRoZSBmZWFzdCB0aGF0IGlzIGluIEp1ZGFoLCBhbmQgaGUgb2ZmZXJlZCB1cG9uIHRoZSBhbHRhci4gU28gZGlkIGhlIGluIEJldGhlbCwgc2FjcmlmaWNpbmcgdW50byB0aGUgY2FsdmVzIHRoYXQgaGUgaGFkIG1hZGU6IGFuZCBoZSBwbGFjZWQgaW4gQmV0aGVsIHRoZSBwcmllc3RzIG9mIHRoZSBoaWdoIHBsYWNlcyB3aGljaCBoZSBoYWQgbWFkZS4KU28gaGUgb2ZmZXJlZCB1cG9uIHRoZSBhbHRhciB3aGljaCBoZSBoYWQgbWFkZSBpbiBCZXRoZWwgdGhlIGZpZnRlZW50aCBkYXkgb2YgdGhlIGVpZ2h0aCBtb250aCwgZXZlbiBpbiB0aGUgbW9udGggd2hpY2ggaGUgaGFkIGRldmlzZWQgb2YgaGlzIG93biBoZWFydDsgYW5kIG9yZGFpbmVkIGEgZmVhc3QgdW50byB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsOiBhbmQgaGUgb2ZmZXJlZCB1cG9uIHRoZSBhbHRhciwgYW5kIGJ1cm50IGluY2Vuc2UuCkFuZCwgYmVob2xkLCB0aGVyZSBjYW1lIGEgbWFuIG9mIEdvZCBvdXQgb2YgSnVkYWggYnkgdGhlIHdvcmQgb2YgdGhlIExPUkQgdW50byBCZXRoZWw6IGFuZCBKZXJvYm9hbSBzdG9vZCBieSB0aGUgYWx0YXIgdG8gYnVybiBpbmNlbnNlLgpBbmQgaGUgY3JpZWQgYWdhaW5zdCB0aGUgYWx0YXIgaW4gdGhlIHdvcmQgb2YgdGhlIExPUkQsIGFuZCBzYWlkLCBPIGFsdGFyLCBhbHRhciwgdGh1cyBzYWl0aCB0aGUgTE9SRDsgQmVob2xkLCBhIGNoaWxkIHNoYWxsIGJlIGJvcm4gdW50byB0aGUgaG91c2Ugb2YgRGF2aWQsIEpvc2lhaCBieSBuYW1lOyBhbmQgdXBvbiB0aGVlIHNoYWxsIGhlIG9mZmVyIHRoZSBwcmllc3RzIG9mIHRoZSBoaWdoIHBsYWNlcyB0aGF0IGJ1cm4gaW5jZW5zZSB1cG9uIHRoZWUsIGFuZCBtZW4ncyBib25lcyBzaGFsbCBiZSBidXJudCB1cG9uIHRoZWUuCkFuZCBoZSBnYXZlIGEgc2lnbiB0aGUgc2FtZSBkYXksIHNheWluZywgVGhpcyBpcyB0aGUgc2lnbiB3aGljaCB0aGUgTE9SRCBoYXRoIHNwb2tlbjsgQmVob2xkLCB0aGUgYWx0YXIgc2hhbGwgYmUgcmVudCwgYW5kIHRoZSBhc2hlcyB0aGF0IGFyZSB1cG9uIGl0IHNoYWxsIGJlIHBvdXJlZCBvdXQuCkFuZCBpdCBjYW1lIHRvIHBhc3MsIHdoZW4ga2luZyBKZXJvYm9hbSBoZWFyZCB0aGUgc2F5aW5nIG9mIHRoZSBtYW4gb2YgR29kLCB3aGljaCBoYWQgY3JpZWQgYWdhaW5zdCB0aGUgYWx0YXIgaW4gQmV0aGVsLCB0aGF0IGhlIHB1dCBmb3J0aCBoaXMgaGFuZCBmcm9tIHRoZSBhbHRhciwgc2F5aW5nLCBMYXkgaG9sZCBvbiBoaW0uIEFuZCBoaXMgaGFuZCwgd2hpY2ggaGUgcHV0IGZvcnRoIGFnYWluc3QgaGltLCBkcmllZCB1cCwgc28gdGhhdCBoZSBjb3VsZCBub3QgcHVsbCBpdCBpbiBhZ2FpbiB0byBoaW0uClRoZSBhbHRhciBhbHNvIHdhcyByZW50LCBhbmQgdGhlIGFzaGVzIHBvdXJlZCBvdXQgZnJvbSB0aGUgYWx0YXIsIGFjY29yZGluZyB0byB0aGUgc2lnbiB3aGljaCB0aGUgbWFuIG9mIEdvZCBoYWQgZ2l2ZW4gYnkgdGhlIHdvcmQgb2YgdGhlIExPUkQuCkFuZCB0aGUga2luZyBhbnN3ZXJlZCBhbmQgc2FpZCB1bnRvIHRoZSBtYW4gb2YgR29kLCBJbnRyZWF0IG5vdyB0aGUgZmFjZSBvZiB0aGUgTE9SRCB0aHkgR29kLCBhbmQgcHJheSBmb3IgbWUsIHRoYXQgbXkgaGFuZCBtYXkgYmUgcmVzdG9yZWQgbWUgYWdhaW4uIEFuZCB0aGUgbWFuIG9mIEdvZCBiZXNvdWdodCB0aGUgTE9SRCwgYW5kIHRoZSBraW5nJ3MgaGFuZCB3YXMgcmVzdG9yZWQgaGltIGFnYWluLCBhbmQgYmVjYW1lIGFzIGl0IHdhcyBiZWZvcmUuCkFuZCB0aGUga2luZyBzYWlkIHVudG8gdGhlIG1hbiBvZiBHb2QsIENvbWUgaG9tZSB3aXRoIG1lLCBhbmQgcmVmcmVzaCB0aHlzZWxmLCBhbmQgSSB3aWxsIGdpdmUgdGhlZSBhIHJld2FyZC4KQW5kIHRoZSBtYW4gb2YgR29kIHNhaWQgdW50byB0aGUga2luZywgSWYgdGhvdSB3aWx0IGdpdmUgbWUgaGFsZiB0aGluZSBob3VzZSwgSSB3aWxsIG5vdCBnbyBpbiB3aXRoIHRoZWUsIG5laXRoZXIgd2lsbCBJIGVhdCBicmVhZCBub3IgZHJpbmsgd2F0ZXIgaW4gdGhpcyBwbGFjZToKRm9yIHNvIHdhcyBpdCBjaGFyZ2VkIG1lIGJ5IHRoZSB3b3JkIG9mIHRoZSBMT1JELCBzYXlpbmcsIEVhdCBubyBicmVhZCwgbm9yIGRyaW5rIHdhdGVyLCBub3IgdHVybiBhZ2FpbiBieSB0aGUgc2FtZSB3YXkgdGhhdCB0aG91IGNhbWVzdC4KU28gaGUgd2VudCBhbm90aGVyIHdheSwgYW5kIHJldHVybmVkIG5vdCBieSB0aGUgd2F5IHRoYXQgaGUgY2FtZSB0byBCZXRoZWwuCk5vdyB0aGVyZSBkd2VsdCBhbiBvbGQgcHJvcGhldCBpbiBCZXRoZWw7IGFuZCBoaXMgc29ucyBjYW1lIGFuZCB0b2xkIGhpbSBhbGwgdGhlIHdvcmtzIHRoYXQgdGhlIG1hbiBvZiBHb2QgaGFkIGRvbmUgdGhhdCBkYXkgaW4gQmV0aGVsOiB0aGUgd29yZHMgd2hpY2ggaGUgaGFkIHNwb2tlbiB1bnRvIHRoZSBraW5nLCB0aGVtIHRoZXkgdG9sZCBhbHNvIHRvIHRoZWlyIGZhdGhlci4KQW5kIHRoZWlyIGZhdGhlciBzYWlkIHVudG8gdGhlbSwgV2hhdCB3YXkgd2VudCBoZT8gRm9yIGhpcyBzb25zIGhhZCBzZWVuIHdoYXQgd2F5IHRoZSBtYW4gb2YgR29kIHdlbnQsIHdoaWNoIGNhbWUgZnJvbSBKdWRhaC4KQW5kIGhlIHNhaWQgdW50byBoaXMgc29ucywgU2FkZGxlIG1lIHRoZSBhc3MuIFNvIHRoZXkgc2FkZGxlZCBoaW0gdGhlIGFzczogYW5kIGhlIHJvZGUgdGhlcmVvbiwKQW5kIHdlbnQgYWZ0ZXIgdGhlIG1hbiBvZiBHb2QsIGFuZCBmb3VuZCBoaW0gc2l0dGluZyB1bmRlciBhbiBvYWs6IGFuZCBoZSBzYWlkIHVudG8gaGltLCBBcnQgdGhvdSB0aGUgbWFuIG9mIEdvZCB0aGF0IGNhbWVzdCBmcm9tIEp1ZGFoPyBBbmQgaGUgc2FpZCwgSSBhbS4KVGhlbiBoZSBzYWlkIHVudG8gaGltLCBDb21lIGhvbWUgd2l0aCBtZSwgYW5kIGVhdCBicmVhZC4KQW5kIGhlIHNhaWQsIEkgbWF5IG5vdCByZXR1cm4gd2l0aCB0aGVlLCBub3IgZ28gaW4gd2l0aCB0aGVlOiBuZWl0aGVyIHdpbGwgSSBlYXQgYnJlYWQgbm9yIGRyaW5rIHdhdGVyIHdpdGggdGhlZSBpbiB0aGlzIHBsYWNlOgpGb3IgaXQgd2FzIHNhaWQgdG8gbWUgYnkgdGhlIHdvcmQgb2YgdGhlIExPUkQsIFRob3Ugc2hhbHQgZWF0IG5vIGJyZWFkIG5vciBkcmluayB3YXRlciB0aGVyZSwgbm9yIHR1cm4gYWdhaW4gdG8gZ28gYnkgdGhlIHdheSB0aGF0IHRob3UgY2FtZXN0LgpIZSBzYWlkIHVudG8gaGltLCBJIGFtIGEgcHJvcGhldCBhbHNvIGFzIHRob3UgYXJ0OyBhbmQgYW4gYW5nZWwgc3Bha2UgdW50byBtZSBieSB0aGUgd29yZCBvZiB0aGUgTE9SRCwgc2F5aW5nLCBCcmluZyBoaW0gYmFjayB3aXRoIHRoZWUgaW50byB0aGluZSBob3VzZSwgdGhhdCBoZSBtYXkgZWF0IGJyZWFkIGFuZCBkcmluayB3YXRlci4gQnV0IGhlIGxpZWQgdW50byBoaW0uClNvIGhlIHdlbnQgYmFjayB3aXRoIGhpbSwgYW5kIGRpZCBlYXQgYnJlYWQgaW4gaGlzIGhvdXNlLCBhbmQgZHJhbmsgd2F0ZXIuCkFuZCBpdCBjYW1lIHRvIHBhc3MsIGFzIHRoZXkgc2F0IGF0IHRoZSB0YWJsZSwgdGhhdCB0aGUgd29yZCBvZiB0aGUgTE9SRCBjYW1lIHVudG8gdGhlIHByb3BoZXQgdGhhdCBicm91Z2h0IGhpbSBiYWNrOgpBbmQgaGUgY3JpZWQgdW50byB0aGUgbWFuIG9mIEdvZCB0aGF0IGNhbWUgZnJvbSBKdWRhaCwgc2F5aW5nLCBUaHVzIHNhaXRoIHRoZSBMT1JELCBGb3Jhc211Y2ggYXMgdGhvdSBoYXN0IGRpc29iZXllZCB0aGUgbW91dGggb2YgdGhlIExPUkQsIGFuZCBoYXN0IG5vdCBrZXB0IHRoZSBjb21tYW5kbWVudCB3aGljaCB0aGUgTE9SRCB0aHkgR29kIGNvbW1hbmRlZCB0aGVlLApCdXQgY2FtZXN0IGJhY2ssIGFuZCBoYXN0IGVhdGVuIGJyZWFkIGFuZCBkcnVuayB3YXRlciBpbiB0aGUgcGxhY2UsIG9mIHRoZSB3aGljaCB0aGUgTG9yZCBkaWQgc2F5IHRvIHRoZWUsIEVhdCBubyBicmVhZCwgYW5kIGRyaW5rIG5vIHdhdGVyOyB0aHkgY2FyY2FzZSBzaGFsbCBub3QgY29tZSB1bnRvIHRoZSBzZXB1bGNocmUgb2YgdGh5IGZhdGhlcnMuCkFuZCBpdCBjYW1lIHRvIHBhc3MsIGFmdGVyIGhlIGhhZCBlYXRlbiBicmVhZCwgYW5kIGFmdGVyIGhlIGhhZCBkcnVuaywgdGhhdCBoZSBzYWRkbGVkIGZvciBoaW0gdGhlIGFzcywgdG8gd2l0LCBmb3IgdGhlIHByb3BoZXQgd2hvbSBoZSBoYWQgYnJvdWdodCBiYWNrLgpBbmQgd2hlbiBoZSB3YXMgZ29uZSwgYSBsaW9uIG1ldCBoaW0gYnkgdGhlIHdheSwgYW5kIHNsZXcgaGltOiBhbmQgaGlzIGNhcmNhc2Ugd2FzIGNhc3QgaW4gdGhlIHdheSwgYW5kIHRoZSBhc3Mgc3Rvb2QgYnkgaXQsIHRoZSBsaW9uIGFsc28gc3Rvb2QgYnkgdGhlIGNhcmNhc2UuCkFuZCwgYmVob2xkLCBtZW4gcGFzc2VkIGJ5LCBhbmQgc2F3IHRoZSBjYXJjYXNlIGNhc3QgaW4gdGhlIHdheSwgYW5kIHRoZSBsaW9uIHN0YW5kaW5nIGJ5IHRoZSBjYXJjYXNlOiBhbmQgdGhleSBjYW1lIGFuZCB0b2xkIGl0IGluIHRoZSBjaXR5IHdoZXJlIHRoZSBvbGQgcHJvcGhldCBkd2VsdC4KQW5kIHdoZW4gdGhlIHByb3BoZXQgdGhhdCBicm91Z2h0IGhpbSBiYWNrIGZyb20gdGhlIHdheSBoZWFyZCB0aGVyZW9mLCBoZSBzYWlkLCBJdCBpcyB0aGUgbWFuIG9mIEdvZCwgd2hvIHdhcyBkaXNvYmVkaWVudCB1bnRvIHRoZSB3b3JkIG9mIHRoZSBMT1JEOiB0aGVyZWZvcmUgdGhlIExPUkQgaGF0aCBkZWxpdmVyZWQgaGltIHVudG8gdGhlIGxpb24sIHdoaWNoIGhhdGggdG9ybiBoaW0sIGFuZCBzbGFpbiBoaW0sIGFjY29yZGluZyB0byB0aGUgd29yZCBvZiB0aGUgTE9SRCwgd2hpY2ggaGUgc3Bha2UgdW50byBoaW0uCkFuZCBoZSBzcGFrZSB0byBoaXMgc29ucywgc2F5aW5nLCBTYWRkbGUgbWUgdGhlIGFzcy4gQW5kIHRoZXkgc2FkZGxlZCBoaW0uCkFuZCBoZSB3ZW50IGFuZCBmb3VuZCBoaXMgY2FyY2FzZSBjYXN0IGluIHRoZSB3YXksIGFuZCB0aGUgYXNzIGFuZCB0aGUgbGlvbiBzdGFuZGluZyBieSB0aGUgY2FyY2FzZTogdGhlIGxpb24gaGFkIG5vdCBlYXRlbiB0aGUgY2FyY2FzZSwgbm9yIHRvcm4gdGhlIGFzcy4KQW5kIHRoZSBwcm9waGV0IHRvb2sgdXAgdGhlIGNhcmNhc2Ugb2YgdGhlIG1hbiBvZiBHb2QsIGFuZCBsYWlkIGl0IHVwb24gdGhlIGFzcywgYW5kIGJyb3VnaHQgaXQgYmFjazogYW5kIHRoZSBvbGQgcHJvcGhldCBjYW1lIHRvIHRoZSBjaXR5LCB0byBtb3VybiBhbmQgdG8gYnVyeSBoaW0uCkFuZCBoZSBsYWlkIGhpcyBjYXJjYXNlIGluIGhpcyBvd24gZ3JhdmU7IGFuZCB0aGV5IG1vdXJuZWQgb3ZlciBoaW0sIHNheWluZywgQWxhcywgbXkgYnJvdGhlciEKQW5kIGl0IGNhbWUgdG8gcGFzcywgYWZ0ZXIgaGUgaGFkIGJ1cmllZCBoaW0sIHRoYXQgaGUgc3Bha2UgdG8gaGlzIHNvbnMsIHNheWluZywgV2hlbiBJIGFtIGRlYWQsIHRoZW4gYnVyeSBtZSBpbiB0aGUgc2VwdWxjaHJlIHdoZXJlaW4gdGhlIG1hbiBvZiBHb2QgaXMgYnVyaWVkOyBsYXkgbXkgYm9uZXMgYmVzaWRlIGhpcyBib25lczoKRm9yIHRoZSBzYXlpbmcgd2hpY2ggaGUgY3JpZWQgYnkgdGhlIHdvcmQgb2YgdGhlIExPUkQgYWdhaW5zdCB0aGUgYWx0YXIgaW4gQmV0aGVsLCBhbmQgYWdhaW5zdCBhbGwgdGhlIGhvdXNlcyBvZiB0aGUgaGlnaCBwbGFjZXMgd2hpY2ggYXJlIGluIHRoZSBjaXRpZXMgb2YgU2FtYXJpYSwgc2hhbGwgc3VyZWx5IGNvbWUgdG8gcGFzcy4KQWZ0ZXIgdGhpcyB0aGluZyBKZXJvYm9hbSByZXR1cm5lZCBub3QgZnJvbSBoaXMgZXZpbCB3YXksIGJ1dCBtYWRlIGFnYWluIG9mIHRoZSBsb3dlc3Qgb2YgdGhlIHBlb3BsZSBwcmllc3RzIG9mIHRoZSBoaWdoIHBsYWNlczogd2hvc29ldmVyIHdvdWxkLCBoZSBjb25zZWNyYXRlZCBoaW0sIGFuZCBoZSBiZWNhbWUgb25lIG9mIHRoZSBwcmllc3RzIG9mIHRoZSBoaWdoIHBsYWNlcy4KQW5kIHRoaXMgdGhpbmcgYmVjYW1lIHNpbiB1bnRvIHRoZSBob3VzZSBvZiBKZXJvYm9hbSwgZXZlbiB0byBjdXQgaXQgb2ZmLCBhbmQgdG8gZGVzdHJveSBpdCBmcm9tIG9mZiB0aGUgZmFjZSBvZiB0aGUgZWFydGguCkF0IHRoYXQgdGltZSBBYmlqYWggdGhlIHNvbiBvZiBKZXJvYm9hbSBmZWxsIHNpY2suCkFuZCBKZXJvYm9hbSBzYWlkIHRvIGhpcyB3aWZlLCBBcmlzZSwgSSBwcmF5IHRoZWUsIGFuZCBkaXNndWlzZSB0aHlzZWxmLCB0aGF0IHRob3UgYmUgbm90IGtub3duIHRvIGJlIHRoZSB3aWZlIG9mIEplcm9ib2FtOyBhbmQgZ2V0IHRoZWUgdG8gU2hpbG9oOiBiZWhvbGQsIHRoZXJlIGlzIEFoaWphaCB0aGUgcHJvcGhldCwgd2hpY2ggdG9sZCBtZSB0aGF0IEkgc2hvdWxkIGJlIGtpbmcgb3ZlciB0aGlzIHBlb3BsZS4KQW5kIHRha2Ugd2l0aCB0aGVlIHRlbiBsb2F2ZXMsIGFuZCBjcmFja25lbHMsIGFuZCBhIGNydXNlIG9mIGhvbmV5LCBhbmQgZ28gdG8gaGltOiBoZSBzaGFsbCB0ZWxsIHRoZWUgd2hhdCBzaGFsbCBiZWNvbWUgb2YgdGhlIGNoaWxkLgpBbmQgSmVyb2JvYW0ncyB3aWZlIGRpZCBzbywgYW5kIGFyb3NlLCBhbmQgd2VudCB0byBTaGlsb2gsIGFuZCBjYW1lIHRvIHRoZSBob3VzZSBvZiBBaGlqYWguIEJ1dCBBaGlqYWggY291bGQgbm90IHNlZTsgZm9yIGhpcyBleWVzIHdlcmUgc2V0IGJ5IHJlYXNvbiBvZiBoaXMgYWdlLgpBbmQgdGhlIExPUkQgc2FpZCB1bnRvIEFoaWphaCwgQmVob2xkLCB0aGUgd2lmZSBvZiBKZXJvYm9hbSBjb21ldGggdG8gYXNrIGEgdGhpbmcgb2YgdGhlZSBmb3IgaGVyIHNvbjsgZm9yIGhlIGlzIHNpY2s6IHRodXMgYW5kIHRodXMgc2hhbHQgdGhvdSBzYXkgdW50byBoZXI6IGZvciBpdCBzaGFsbCBiZSwgd2hlbiBzaGUgY29tZXRoIGluLCB0aGF0IHNoZSBzaGFsbCBmZWlnbiBoZXJzZWxmIHRvIGJlIGFub3RoZXIgd29tYW4uCkFuZCBpdCB3YXMgc28sIHdoZW4gQWhpamFoIGhlYXJkIHRoZSBzb3VuZCBvZiBoZXIgZmVldCwgYXMgc2hlIGNhbWUgaW4gYXQgdGhlIGRvb3IsIHRoYXQgaGUgc2FpZCwgQ29tZSBpbiwgdGhvdSB3aWZlIG9mIEplcm9ib2FtOyB3aHkgZmVpZ25lc3QgdGhvdSB0aHlzZWxmIHRvIGJlIGFub3RoZXI/IGZvciBJIGFtIHNlbnQgdG8gdGhlZSB3aXRoIGhlYXZ5IHRpZGluZ3MuCkdvLCB0ZWxsIEplcm9ib2FtLCBUaHVzIHNhaXRoIHRoZSBMT1JEIEdvZCBvZiBJc3JhZWwsIEZvcmFzbXVjaCBhcyBJIGV4YWx0ZWQgdGhlZSBmcm9tIGFtb25nIHRoZSBwZW9wbGUsIGFuZCBtYWRlIHRoZWUgcHJpbmNlIG92ZXIgbXkgcGVvcGxlIElzcmFlbCwKQW5kIHJlbnQgdGhlIGtpbmdkb20gYXdheSBmcm9tIHRoZSBob3VzZSBvZiBEYXZpZCwgYW5kIGdhdmUgaXQgdGhlZTogYW5kIHlldCB0aG91IGhhc3Qgbm90IGJlZW4gYXMgbXkgc2VydmFudCBEYXZpZCwgd2hvIGtlcHQgbXkgY29tbWFuZG1lbnRzLCBhbmQgd2hvIGZvbGxvd2VkIG1lIHdpdGggYWxsIGhpcyBoZWFydCwgdG8gZG8gdGhhdCBvbmx5IHdoaWNoIHdhcyByaWdodCBpbiBtaW5lIGV5ZXM7CkJ1dCBoYXN0IGRvbmUgZXZpbCBhYm92ZSBhbGwgdGhhdCB3ZXJlIGJlZm9yZSB0aGVlOiBmb3IgdGhvdSBoYXN0IGdvbmUgYW5kIG1hZGUgdGhlZSBvdGhlciBnb2RzLCBhbmQgbW9sdGVuIGltYWdlcywgdG8gcHJvdm9rZSBtZSB0byBhbmdlciwgYW5kIGhhc3QgY2FzdCBtZSBiZWhpbmQgdGh5IGJhY2s6ClRoZXJlZm9yZSwgYmVob2xkLCBJIHdpbGwgYnJpbmcgZXZpbCB1cG9uIHRoZSBob3VzZSBvZiBKZXJvYm9hbSwgYW5kIHdpbGwgY3V0IG9mZiBmcm9tIEplcm9ib2FtIGhpbSB0aGF0IHBpc3NldGggYWdhaW5zdCB0aGUgd2FsbCwgYW5kIGhpbSB0aGF0IGlzIHNodXQgdXAgYW5kIGxlZnQgaW4gSXNyYWVsLCBhbmQgd2lsbCB0YWtlIGF3YXkgdGhlIHJlbW5hbnQgb2YgdGhlIGhvdXNlIG9mIEplcm9ib2FtLCBhcyBhIG1hbiB0YWtldGggYXdheSBkdW5nLCB0aWxsIGl0IGJlIGFsbCBnb25lLgpIaW0gdGhhdCBkaWV0aCBvZiBKZXJvYm9hbSBpbiB0aGUgY2l0eSBzaGFsbCB0aGUgZG9ncyBlYXQ7IGFuZCBoaW0gdGhhdCBkaWV0aCBpbiB0aGUgZmllbGQgc2hhbGwgdGhlIGZvd2xzIG9mIHRoZSBhaXIgZWF0OiBmb3IgdGhlIExPUkQgaGF0aCBzcG9rZW4gaXQuCkFyaXNlIHRob3UgdGhlcmVmb3JlLCBnZXQgdGhlZSB0byB0aGluZSBvd24gaG91c2U6IGFuZCB3aGVuIHRoeSBmZWV0IGVudGVyIGludG8gdGhlIGNpdHksIHRoZSBjaGlsZCBzaGFsbCBkaWUuCkFuZCBhbGwgSXNyYWVsIHNoYWxsIG1vdXJuIGZvciBoaW0sIGFuZCBidXJ5IGhpbTogZm9yIGhlIG9ubHkgb2YgSmVyb2JvYW0gc2hhbGwgY29tZSB0byB0aGUgZ3JhdmUsIGJlY2F1c2UgaW4gaGltIHRoZXJlIGlzIGZvdW5kIHNvbWUgZ29vZCB0aGluZyB0b3dhcmQgdGhlIExPUkQgR29kIG9mIElzcmFlbCBpbiB0aGUgaG91c2Ugb2YgSmVyb2JvYW0uCk1vcmVvdmVyIHRoZSBMT1JEIHNoYWxsIHJhaXNlIGhpbSB1cCBhIGtpbmcgb3ZlciBJc3JhZWwsIHdobyBzaGFsbCBjdXQgb2ZmIHRoZSBob3VzZSBvZiBKZXJvYm9hbSB0aGF0IGRheTogYnV0IHdoYXQ/IGV2ZW4gbm93LgpGb3IgdGhlIExPUkQgc2hhbGwgc21pdGUgSXNyYWVsLCBhcyBhIHJlZWQgaXMgc2hha2VuIGluIHRoZSB3YXRlciwgYW5kIGhlIHNoYWxsIHJvb3QgdXAgSXNyYWVsIG91dCBvZiB0aGlzIGdvb2QgbGFuZCwgd2hpY2ggaGUgZ2F2ZSB0byB0aGVpciBmYXRoZXJzLCBhbmQgc2hhbGwgc2NhdHRlciB0aGVtIGJleW9uZCB0aGUgcml2ZXIsIGJlY2F1c2UgdGhleSBoYXZlIG1hZGUgdGhlaXIgZ3JvdmVzLCBwcm92b2tpbmcgdGhlIExPUkQgdG8gYW5nZXIuCkFuZCBoZSBzaGFsbCBnaXZlIElzcmFlbCB1cCBiZWNhdXNlIG9mIHRoZSBzaW5zIG9mIEplcm9ib2FtLCB3aG8gZGlkIHNpbiwgYW5kIHdobyBtYWRlIElzcmFlbCB0byBzaW4uCkFuZCBKZXJvYm9hbSdzIHdpZmUgYXJvc2UsIGFuZCBkZXBhcnRlZCwgYW5kIGNhbWUgdG8gVGlyemFoOiBhbmQgd2hlbiBzaGUgY2FtZSB0byB0aGUgdGhyZXNob2xkIG9mIHRoZSBkb29yLCB0aGUgY2hpbGQgZGllZDsKQW5kIHRoZXkgYnVyaWVkIGhpbTsgYW5kIGFsbCBJc3JhZWwgbW91cm5lZCBmb3IgaGltLCBhY2NvcmRpbmcgdG8gdGhlIHdvcmQgb2YgdGhlIExPUkQsIHdoaWNoIGhlIHNwYWtlIGJ5IHRoZSBoYW5kIG9mIGhpcyBzZXJ2YW50IEFoaWphaCB0aGUgcHJvcGhldC4KQW5kIHRoZSByZXN0IG9mIHRoZSBhY3RzIG9mIEplcm9ib2FtLCBob3cgaGUgd2FycmVkLCBhbmQgaG93IGhlIHJlaWduZWQsIGJlaG9sZCwgdGhleSBhcmUgd3JpdHRlbiBpbiB0aGUgYm9vayBvZiB0aGUgY2hyb25pY2xlcyBvZiB0aGUga2luZ3Mgb2YgSXNyYWVsLgpBbmQgdGhlIGRheXMgd2hpY2ggSmVyb2JvYW0gcmVpZ25lZCB3ZXJlIHR3byBhbmQgdHdlbnR5IHllYXJzOiBhbmQgaGUgc2xlcHQgd2l0aCBoaXMgZmF0aGVycywgYW5kIE5hZGFiIGhpcyBzb24gcmVpZ25lZCBpbiBoaXMgc3RlYWQuCkFuZCBSZWhvYm9hbSB0aGUgc29uIG9mIFNvbG9tb24gcmVpZ25lZCBpbiBKdWRhaC4gUmVob2JvYW0gd2FzIGZvcnR5IGFuZCBvbmUgeWVhcnMgb2xkIHdoZW4gaGUgYmVnYW4gdG8gcmVpZ24sIGFuZCBoZSByZWlnbmVkIHNldmVudGVlbiB5ZWFycyBpbiBKZXJ1c2FsZW0sIHRoZSBjaXR5IHdoaWNoIHRoZSBMT1JEIGRpZCBjaG9vc2Ugb3V0IG9mIGFsbCB0aGUgdHJpYmVzIG9mIElzcmFlbCwgdG8gcHV0IGhpcyBuYW1lIHRoZXJlLiBBbmQgaGlzIG1vdGhlcidzIG5hbWUgd2FzIE5hYW1haCBhbiBBbW1vbml0ZXNzLgpBbmQgSnVkYWggZGlkIGV2aWwgaW4gdGhlIHNpZ2h0IG9mIHRoZSBMT1JELCBhbmQgdGhleSBwcm92b2tlZCBoaW0gdG8gamVhbG91c3kgd2l0aCB0aGVpciBzaW5zIHdoaWNoIHRoZXkgaGFkIGNvbW1pdHRlZCwgYWJvdmUgYWxsIHRoYXQgdGhlaXIgZmF0aGVycyBoYWQgZG9uZS4KRm9yIHRoZXkgYWxzbyBidWlsdCB0aGVtIGhpZ2ggcGxhY2VzLCBhbmQgaW1hZ2VzLCBhbmQgZ3JvdmVzLCBvbiBldmVyeSBoaWdoIGhpbGwsIGFuZCB1bmRlciBldmVyeSBncmVlbiB0cmVlLgpBbmQgdGhlcmUgd2VyZSBhbHNvIHNvZG9taXRlcyBpbiB0aGUgbGFuZDogYW5kIHRoZXkgZGlkIGFjY29yZGluZyB0byBhbGwgdGhlIGFib21pbmF0aW9ucyBvZiB0aGUgbmF0aW9ucyB3aGljaCB0aGUgTE9SRCBjYXN0IG91dCBiZWZvcmUgdGhlIGNoaWxkcmVuIG9mIElzcmFlbC4KQW5kIGl0IGNhbWUgdG8gcGFzcyBpbiB0aGUgZmlmdGggeWVhciBvZiBraW5nIFJlaG9ib2FtLCB0aGF0IFNoaXNoYWsga2luZyBvZiBFZ3lwdCBjYW1lIHVwIGFnYWluc3QgSmVydXNhbGVtOgpBbmQgaGUgdG9vayBhd2F5IHRoZSB0cmVhc3VyZXMgb2YgdGhlIGhvdXNlIG9mIHRoZSBMT1JELCBhbmQgdGhlIHRyZWFzdXJlcyBvZiB0aGUga2luZydzIGhvdXNlOyBoZSBldmVuIHRvb2sgYXdheSBhbGw6IGFuZCBoZSB0b29rIGF3YXkgYWxsIHRoZSBzaGllbGRzIG9mIGdvbGQgd2hpY2ggU29sb21vbiBoYWQgbWFkZS4KQW5kIGtpbmcgUmVob2JvYW0gbWFkZSBpbiB0aGVpciBzdGVhZCBicmFzZW4gc2hpZWxkcywgYW5kIGNvbW1pdHRlZCB0aGVtIHVudG8gdGhlIGhhbmRzIG9mIHRoZSBjaGllZiBvZiB0aGUgZ3VhcmQsIHdoaWNoIGtlcHQgdGhlIGRvb3Igb2YgdGhlIGtpbmcncyBob3VzZS4KQW5kIGl0IHdhcyBzbywgd2hlbiB0aGUga2luZyB3ZW50IGludG8gdGhlIGhvdXNlIG9mIHRoZSBMT1JELCB0aGF0IHRoZSBndWFyZCBiYXJlIHRoZW0sIGFuZCBicm91Z2h0IHRoZW0gYmFjayBpbnRvIHRoZSBndWFyZCBjaGFtYmVyLgpOb3cgdGhlIHJlc3Qgb2YgdGhlIGFjdHMgb2YgUmVob2JvYW0sIGFuZCBhbGwgdGhhdCBoZSBkaWQsIGFyZSB0aGV5IG5vdCB3cml0dGVuIGluIHRoZSBib29rIG9mIHRoZSBjaHJvbmljbGVzIG9mIHRoZSBraW5ncyBvZiBKdWRhaD8KQW5kIHRoZXJlIHdhcyB3YXIgYmV0d2VlbiBSZWhvYm9hbSBhbmQgSmVyb2JvYW0gYWxsIHRoZWlyIGRheXMuCkFuZCBSZWhvYm9hbSBzbGVwdCB3aXRoIGhpcyBmYXRoZXJzLCBhbmQgd2FzIGJ1cmllZCB3aXRoIGhpcyBmYXRoZXJzIGluIHRoZSBjaXR5IG9mIERhdmlkLiBBbmQgaGlzIG1vdGhlcidzIG5hbWUgd2FzIE5hYW1haCBhbiBBbW1vbml0ZXNzLiBBbmQgQWJpamFtIGhpcyBzb24gcmVpZ25lZCBpbiBoaXMgc3RlYWQuCk5vdyBpbiB0aGUgZWlnaHRlZW50aCB5ZWFyIG9mIGtpbmcgSmVyb2JvYW0gdGhlIHNvbiBvZiBOZWJhdCByZWlnbmVkIEFiaWphbSBvdmVyIEp1ZGFoLgpUaHJlZSB5ZWFycyByZWlnbmVkIGhlIGluIEplcnVzYWxlbS4gYW5kIGhpcyBtb3RoZXIncyBuYW1lIHdhcyBNYWFjaGFoLCB0aGUgZGF1Z2h0ZXIgb2YgQWJpc2hhbG9tLgpBbmQgaGUgd2Fsa2VkIGluIGFsbCB0aGUgc2lucyBvZiBoaXMgZmF0aGVyLCB3aGljaCBoZSBoYWQgZG9uZSBiZWZvcmUgaGltOiBhbmQgaGlzIGhlYXJ0IHdhcyBub3QgcGVyZmVjdCB3aXRoIHRoZSBMT1JEIGhpcyBHb2QsIGFzIHRoZSBoZWFydCBvZiBEYXZpZCBoaXMgZmF0aGVyLgpOZXZlcnRoZWxlc3MgZm9yIERhdmlkJ3Mgc2FrZSBkaWQgdGhlIExPUkQgaGlzIEdvZCBnaXZlIGhpbSBhIGxhbXAgaW4gSmVydXNhbGVtLCB0byBzZXQgdXAgaGlzIHNvbiBhZnRlciBoaW0sIGFuZCB0byBlc3RhYmxpc2ggSmVydXNhbGVtOgpCZWNhdXNlIERhdmlkIGRpZCB0aGF0IHdoaWNoIHdhcyByaWdodCBpbiB0aGUgZXllcyBvZiB0aGUgTE9SRCwgYW5kIHR1cm5lZCBub3QgYXNpZGUgZnJvbSBhbnkgdGhpbmcgdGhhdCBoZSBjb21tYW5kZWQgaGltIGFsbCB0aGUgZGF5cyBvZiBoaXMgbGlmZSwgc2F2ZSBvbmx5IGluIHRoZSBtYXR0ZXIgb2YgVXJpYWggdGhlIEhpdHRpdGUuCkFuZCB0aGVyZSB3YXMgd2FyIGJldHdlZW4gUmVob2JvYW0gYW5kIEplcm9ib2FtIGFsbCB0aGUgZGF5cyBvZiBoaXMgbGlmZS4KTm93IHRoZSByZXN0IG9mIHRoZSBhY3RzIG9mIEFiaWphbSwgYW5kIGFsbCB0aGF0IGhlIGRpZCwgYXJlIHRoZXkgbm90IHdyaXR0ZW4gaW4gdGhlIGJvb2sgb2YgdGhlIGNocm9uaWNsZXMgb2YgdGhlIGtpbmdzIG9mIEp1ZGFoPyBBbmQgdGhlcmUgd2FzIHdhciBiZXR3ZWVuIEFiaWphbSBhbmQgSmVyb2JvYW0uCkFuZCBBYmlqYW0gc2xlcHQgd2l0aCBoaXMgZmF0aGVyczsgYW5kIHRoZXkgYnVyaWVkIGhpbSBpbiB0aGUgY2l0eSBvZiBEYXZpZDogYW5kIEFzYSBoaXMgc29uIHJlaWduZWQgaW4gaGlzIHN0ZWFkLgpBbmQgaW4gdGhlIHR3ZW50aWV0aCB5ZWFyIG9mIEplcm9ib2FtIGtpbmcgb2YgSXNyYWVsIHJlaWduZWQgQXNhIG92ZXIgSnVkYWguCkFuZCBmb3J0eSBhbmQgb25lIHllYXJzIHJlaWduZWQgaGUgaW4gSmVydXNhbGVtLiBBbmQgaGlzIG1vdGhlcidzIG5hbWUgd2FzIE1hYWNoYWgsIHRoZSBkYXVnaHRlciBvZiBBYmlzaGFsb20uCkFuZCBBc2EgZGlkIHRoYXQgd2hpY2ggd2FzIHJpZ2h0IGluIHRoZSBleWVzIG9mIHRoZSBMT1JELCBhcyBkaWQgRGF2aWQgaGlzIGZhdGhlci4KQW5kIGhlIHRvb2sgYXdheSB0aGUgc29kb21pdGVzIG91dCBvZiB0aGUgbGFuZCwgYW5kIHJlbW92ZWQgYWxsIHRoZSBpZG9scyB0aGF0IGhpcyBmYXRoZXJzIGhhZCBtYWRlLgpBbmQgYWxzbyBNYWFjaGFoIGhpcyBtb3RoZXIsIGV2ZW4gaGVyIGhlIHJlbW92ZWQgZnJvbSBiZWluZyBxdWVlbiwgYmVjYXVzZSBzaGUgaGFkIG1hZGUgYW4gaWRvbCBpbiBhIGdyb3ZlOyBhbmQgQXNhIGRlc3Ryb3llZCBoZXIgaWRvbCwgYW5kIGJ1cm50IGl0IGJ5IHRoZSBicm9vayBLaWRyb24uCkJ1dCB0aGUgaGlnaCBwbGFjZXMgd2VyZSBub3QgcmVtb3ZlZDogbmV2ZXJ0aGVsZXNzIEFzYSdzIGhlYXJ0IHdhcyBwZXJmZWN0IHdpdGggdGhlIExPUkQgYWxsIGhpcyBkYXlzLgpBbmQgaGUgYnJvdWdodCBpbiB0aGUgdGhpbmdzIHdoaWNoIGhpcyBmYXRoZXIgaGFkIGRlZGljYXRlZCwgYW5kIHRoZSB0aGluZ3Mgd2hpY2ggaGltc2VsZiBoYWQgZGVkaWNhdGVkLCBpbnRvIHRoZSBob3VzZSBvZiB0aGUgTE9SRCwgc2lsdmVyLCBhbmQgZ29sZCwgYW5kIHZlc3NlbHMuCkFuZCB0aGVyZSB3YXMgd2FyIGJldHdlZW4gQXNhIGFuZCBCYWFzaGEga2luZyBvZiBJc3JhZWwgYWxsIHRoZWlyIGRheXMuCkFuZCBCYWFzaGEga2luZyBvZiBJc3JhZWwgd2VudCB1cCBhZ2FpbnN0IEp1ZGFoLCBhbmQgYnVpbHQgUmFtYWgsIHRoYXQgaGUgbWlnaHQgbm90IHN1ZmZlciBhbnkgdG8gZ28gb3V0IG9yIGNvbWUgaW4gdG8gQXNhIGtpbmcgb2YgSnVkYWguClRoZW4gQXNhIHRvb2sgYWxsIHRoZSBzaWx2ZXIgYW5kIHRoZSBnb2xkIHRoYXQgd2VyZSBsZWZ0IGluIHRoZSB0cmVhc3VyZXMgb2YgdGhlIGhvdXNlIG9mIHRoZSBMT1JELCBhbmQgdGhlIHRyZWFzdXJlcyBvZiB0aGUga2luZydzIGhvdXNlLCBhbmQgZGVsaXZlcmVkIHRoZW0gaW50byB0aGUgaGFuZCBvZiBoaXMgc2VydmFudHM6IGFuZCBraW5nIEFzYSBzZW50IHRoZW0gdG8gQmVuaGFkYWQsIHRoZSBzb24gb2YgVGFicmltb24sIHRoZSBzb24gb2YgSGV6aW9uLCBraW5nIG9mIFN5cmlhLCB0aGF0IGR3ZWx0IGF0IERhbWFzY3VzLCBzYXlpbmcsClRoZXJlIGlzIGEgbGVhZ3VlIGJldHdlZW4gbWUgYW5kIHRoZWUsIGFuZCBiZXR3ZWVuIG15IGZhdGhlciBhbmQgdGh5IGZhdGhlcjogYmVob2xkLCBJIGhhdmUgc2VudCB1bnRvIHRoZWUgYSBwcmVzZW50IG9mIHNpbHZlciBhbmQgZ29sZDsgY29tZSBhbmQgYnJlYWsgdGh5IGxlYWd1ZSB3aXRoIEJhYXNoYSBraW5nIG9mIElzcmFlbCwgdGhhdCBoZSBtYXkgZGVwYXJ0IGZyb20gbWUuClNvIEJlbmhhZGFkIGhlYXJrZW5lZCB1bnRvIGtpbmcgQXNhLCBhbmQgc2VudCB0aGUgY2FwdGFpbnMgb2YgdGhlIGhvc3RzIHdoaWNoIGhlIGhhZCBhZ2FpbnN0IHRoZSBjaXRpZXMgb2YgSXNyYWVsLCBhbmQgc21vdGUgSWpvbiwgYW5kIERhbiwgYW5kIEFiZWxiZXRobWFhY2hhaCwgYW5kIGFsbCBDaW5uZXJvdGgsIHdpdGggYWxsIHRoZSBsYW5kIG9mIE5hcGh0YWxpLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIEJhYXNoYSBoZWFyZCB0aGVyZW9mLCB0aGF0IGhlIGxlZnQgb2ZmIGJ1aWxkaW5nIG9mIFJhbWFoLCBhbmQgZHdlbHQgaW4gVGlyemFoLgpUaGVuIGtpbmcgQXNhIG1hZGUgYSBwcm9jbGFtYXRpb24gdGhyb3VnaG91dCBhbGwgSnVkYWg7IG5vbmUgd2FzIGV4ZW1wdGVkOiBhbmQgdGhleSB0b29rIGF3YXkgdGhlIHN0b25lcyBvZiBSYW1haCwgYW5kIHRoZSB0aW1iZXIgdGhlcmVvZiwgd2hlcmV3aXRoIEJhYXNoYSBoYWQgYnVpbGRlZDsgYW5kIGtpbmcgQXNhIGJ1aWx0IHdpdGggdGhlbSBHZWJhIG9mIEJlbmphbWluLCBhbmQgTWl6cGFoLgpUaGUgcmVzdCBvZiBhbGwgdGhlIGFjdHMgb2YgQXNhLCBhbmQgYWxsIGhpcyBtaWdodCwgYW5kIGFsbCB0aGF0IGhlIGRpZCwgYW5kIHRoZSBjaXRpZXMgd2hpY2ggaGUgYnVpbHQsIGFyZSB0aGV5IG5vdCB3cml0dGVuIGluIHRoZSBib29rIG9mIHRoZSBjaHJvbmljbGVzIG9mIHRoZSBraW5ncyBvZiBKdWRhaD8gTmV2ZXJ0aGVsZXNzIGluIHRoZSB0aW1lIG9mIGhpcyBvbGQgYWdlIGhlIHdhcyBkaXNlYXNlZCBpbiBoaXMgZmVldC4KQW5kIEFzYSBzbGVwdCB3aXRoIGhpcyBmYXRoZXJzLCBhbmQgd2FzIGJ1cmllZCB3aXRoIGhpcyBmYXRoZXJzIGluIHRoZSBjaXR5IG9mIERhdmlkIGhpcyBmYXRoZXI6IGFuZCBKZWhvc2hhcGhhdCBoaXMgc29uIHJlaWduZWQgaW4gaGlzIHN0ZWFkLgpBbmQgTmFkYWIgdGhlIHNvbiBvZiBKZXJvYm9hbSBiZWdhbiB0byByZWlnbiBvdmVyIElzcmFlbCBpbiB0aGUgc2Vjb25kIHllYXIgb2YgQXNhIGtpbmcgb2YgSnVkYWgsIGFuZCByZWlnbmVkIG92ZXIgSXNyYWVsIHR3byB5ZWFycy4KQW5kIGhlIGRpZCBldmlsIGluIHRoZSBzaWdodCBvZiB0aGUgTE9SRCwgYW5kIHdhbGtlZCBpbiB0aGUgd2F5IG9mIGhpcyBmYXRoZXIsIGFuZCBpbiBoaXMgc2luIHdoZXJld2l0aCBoZSBtYWRlIElzcmFlbCB0byBzaW4uCkFuZCBCYWFzaGEgdGhlIHNvbiBvZiBBaGlqYWgsIG9mIHRoZSBob3VzZSBvZiBJc3NhY2hhciwgY29uc3BpcmVkIGFnYWluc3QgaGltOyBhbmQgQmFhc2hhIHNtb3RlIGhpbSBhdCBHaWJiZXRob24sIHdoaWNoIGJlbG9uZ2VkIHRvIHRoZSBQaGlsaXN0aW5lczsgZm9yIE5hZGFiIGFuZCBhbGwgSXNyYWVsIGxhaWQgc2llZ2UgdG8gR2liYmV0aG9uLgpFdmVuIGluIHRoZSB0aGlyZCB5ZWFyIG9mIEFzYSBraW5nIG9mIEp1ZGFoIGRpZCBCYWFzaGEgc2xheSBoaW0sIGFuZCByZWlnbmVkIGluIGhpcyBzdGVhZC4KQW5kIGl0IGNhbWUgdG8gcGFzcywgd2hlbiBoZSByZWlnbmVkLCB0aGF0IGhlIHNtb3RlIGFsbCB0aGUgaG91c2Ugb2YgSmVyb2JvYW07IGhlIGxlZnQgbm90IHRvIEplcm9ib2FtIGFueSB0aGF0IGJyZWF0aGVkLCB1bnRpbCBoZSBoYWQgZGVzdHJveWVkIGhpbSwgYWNjb3JkaW5nIHVudG8gdGhlIHNheWluZyBvZiB0aGUgTE9SRCwgd2hpY2ggaGUgc3Bha2UgYnkgaGlzIHNlcnZhbnQgQWhpamFoIHRoZSBTaGlsb25pdGU6CkJlY2F1c2Ugb2YgdGhlIHNpbnMgb2YgSmVyb2JvYW0gd2hpY2ggaGUgc2lubmVkLCBhbmQgd2hpY2ggaGUgbWFkZSBJc3JhZWwgc2luLCBieSBoaXMgcHJvdm9jYXRpb24gd2hlcmV3aXRoIGhlIHByb3Zva2VkIHRoZSBMT1JEIEdvZCBvZiBJc3JhZWwgdG8gYW5nZXIuCk5vdyB0aGUgcmVzdCBvZiB0aGUgYWN0cyBvZiBOYWRhYiwgYW5kIGFsbCB0aGF0IGhlIGRpZCwgYXJlIHRoZXkgbm90IHdyaXR0ZW4gaW4gdGhlIGJvb2sgb2YgdGhlIGNocm9uaWNsZXMgb2YgdGhlIGtpbmdzIG9mIElzcmFlbD8KQW5kIHRoZXJlIHdhcyB3YXIgYmV0d2VlbiBBc2EgYW5kIEJhYXNoYSBraW5nIG9mIElzcmFlbCBhbGwgdGhlaXIgZGF5cy4KSW4gdGhlIHRoaXJkIHllYXIgb2YgQXNhIGtpbmcgb2YgSnVkYWggYmVnYW4gQmFhc2hhIHRoZSBzb24gb2YgQWhpamFoIHRvIHJlaWduIG92ZXIgYWxsIElzcmFlbCBpbiBUaXJ6YWgsIHR3ZW50eSBhbmQgZm91ciB5ZWFycy4KQW5kIGhlIGRpZCBldmlsIGluIHRoZSBzaWdodCBvZiB0aGUgTE9SRCwgYW5kIHdhbGtlZCBpbiB0aGUgd2F5IG9mIEplcm9ib2FtLCBhbmQgaW4gaGlzIHNpbiB3aGVyZXdpdGggaGUgbWFkZSBJc3JhZWwgdG8gc2luLgpUaGVuIHRoZSB3b3JkIG9mIHRoZSBMT1JEIGNhbWUgdG8gSmVodSB0aGUgc29uIG9mIEhhbmFuaSBhZ2FpbnN0IEJhYXNoYSwgc2F5aW5nLApGb3Jhc211Y2ggYXMgSSBleGFsdGVkIHRoZWUgb3V0IG9mIHRoZSBkdXN0LCBhbmQgbWFkZSB0aGVlIHByaW5jZSBvdmVyIG15IHBlb3BsZSBJc3JhZWw7IGFuZCB0aG91IGhhc3Qgd2Fsa2VkIGluIHRoZSB3YXkgb2YgSmVyb2JvYW0sIGFuZCBoYXN0IG1hZGUgbXkgcGVvcGxlIElzcmFlbCB0byBzaW4sIHRvIHByb3Zva2UgbWUgdG8gYW5nZXIgd2l0aCB0aGVpciBzaW5zOwpCZWhvbGQsIEkgd2lsbCB0YWtlIGF3YXkgdGhlIHBvc3Rlcml0eSBvZiBCYWFzaGEsIGFuZCB0aGUgcG9zdGVyaXR5IG9mIGhpcyBob3VzZTsgYW5kIHdpbGwgbWFrZSB0aHkgaG91c2UgbGlrZSB0aGUgaG91c2Ugb2YgSmVyb2JvYW0gdGhlIHNvbiBvZiBOZWJhdC4KSGltIHRoYXQgZGlldGggb2YgQmFhc2hhIGluIHRoZSBjaXR5IHNoYWxsIHRoZSBkb2dzIGVhdDsgYW5kIGhpbSB0aGF0IGRpZXRoIG9mIGhpcyBpbiB0aGUgZmllbGRzIHNoYWxsIHRoZSBmb3dscyBvZiB0aGUgYWlyIGVhdC4KTm93IHRoZSByZXN0IG9mIHRoZSBhY3RzIG9mIEJhYXNoYSwgYW5kIHdoYXQgaGUgZGlkLCBhbmQgaGlzIG1pZ2h0LCBhcmUgdGhleSBub3Qgd3JpdHRlbiBpbiB0aGUgYm9vayBvZiB0aGUgY2hyb25pY2xlcyBvZiB0aGUga2luZ3Mgb2YgSXNyYWVsPwpTbyBCYWFzaGEgc2xlcHQgd2l0aCBoaXMgZmF0aGVycywgYW5kIHdhcyBidXJpZWQgaW4gVGlyemFoOiBhbmQgRWxhaCBoaXMgc29uIHJlaWduZWQgaW4gaGlzIHN0ZWFkLgpBbmQgYWxzbyBieSB0aGUgaGFuZCBvZiB0aGUgcHJvcGhldCBKZWh1IHRoZSBzb24gb2YgSGFuYW5pIGNhbWUgdGhlIHdvcmQgb2YgdGhlIExPUkQgYWdhaW5zdCBCYWFzaGEsIGFuZCBhZ2FpbnN0IGhpcyBob3VzZSwgZXZlbiBmb3IgYWxsIHRoZSBldmlsIHRoYXQgaGUgZGlkIGluIHRoZSBzaWdodCBvZiB0aGUgTE9SRCwgaW4gcHJvdm9raW5nIGhpbSB0byBhbmdlciB3aXRoIHRoZSB3b3JrIG9mIGhpcyBoYW5kcywgaW4gYmVpbmcgbGlrZSB0aGUgaG91c2Ugb2YgSmVyb2JvYW07IGFuZCBiZWNhdXNlIGhlIGtpbGxlZCBoaW0uCkluIHRoZSB0d2VudHkgYW5kIHNpeHRoIHllYXIgb2YgQXNhIGtpbmcgb2YgSnVkYWggYmVnYW4gRWxhaCB0aGUgc29uIG9mIEJhYXNoYSB0byByZWlnbiBvdmVyIElzcmFlbCBpbiBUaXJ6YWgsIHR3byB5ZWFycy4KQW5kIGhpcyBzZXJ2YW50IFppbXJpLCBjYXB0YWluIG9mIGhhbGYgaGlzIGNoYXJpb3RzLCBjb25zcGlyZWQgYWdhaW5zdCBoaW0sIGFzIGhlIHdhcyBpbiBUaXJ6YWgsIGRyaW5raW5nIGhpbXNlbGYgZHJ1bmsgaW4gdGhlIGhvdXNlIG9mIEFyemEgc3Rld2FyZCBvZiBoaXMgaG91c2UgaW4gVGlyemFoLgpBbmQgWmltcmkgd2VudCBpbiBhbmQgc21vdGUgaGltLCBhbmQga2lsbGVkIGhpbSwgaW4gdGhlIHR3ZW50eSBhbmQgc2V2ZW50aCB5ZWFyIG9mIEFzYSBraW5nIG9mIEp1ZGFoLCBhbmQgcmVpZ25lZCBpbiBoaXMgc3RlYWQuCkFuZCBpdCBjYW1lIHRvIHBhc3MsIHdoZW4gaGUgYmVnYW4gdG8gcmVpZ24sIGFzIHNvb24gYXMgaGUgc2F0IG9uIGhpcyB0aHJvbmUsIHRoYXQgaGUgc2xldyBhbGwgdGhlIGhvdXNlIG9mIEJhYXNoYTogaGUgbGVmdCBoaW0gbm90IG9uZSB0aGF0IHBpc3NldGggYWdhaW5zdCBhIHdhbGwsIG5laXRoZXIgb2YgaGlzIGtpbnNmb2xrcywgbm9yIG9mIGhpcyBmcmllbmRzLgpUaHVzIGRpZCBaaW1yaSBkZXN0cm95IGFsbCB0aGUgaG91c2Ugb2YgQmFhc2hhLCBhY2NvcmRpbmcgdG8gdGhlIHdvcmQgb2YgdGhlIExPUkQsIHdoaWNoIGhlIHNwYWtlIGFnYWluc3QgQmFhc2hhIGJ5IEplaHUgdGhlIHByb3BoZXQuCkZvciBhbGwgdGhlIHNpbnMgb2YgQmFhc2hhLCBhbmQgdGhlIHNpbnMgb2YgRWxhaCBoaXMgc29uLCBieSB3aGljaCB0aGV5IHNpbm5lZCwgYW5kIGJ5IHdoaWNoIHRoZXkgbWFkZSBJc3JhZWwgdG8gc2luLCBpbiBwcm92b2tpbmcgdGhlIExPUkQgR29kIG9mIElzcmFlbCB0byBhbmdlciB3aXRoIHRoZWlyIHZhbml0aWVzLgpOb3cgdGhlIHJlc3Qgb2YgdGhlIGFjdHMgb2YgRWxhaCwgYW5kIGFsbCB0aGF0IGhlIGRpZCwgYXJlIHRoZXkgbm90IHdyaXR0ZW4gaW4gdGhlIGJvb2sgb2YgdGhlIGNocm9uaWNsZXMgb2YgdGhlIGtpbmdzIG9mIElzcmFlbD8KSW4gdGhlIHR3ZW50eSBhbmQgc2V2ZW50aCB5ZWFyIG9mIEFzYSBraW5nIG9mIEp1ZGFoIGRpZCBaaW1yaSByZWlnbiBzZXZlbiBkYXlzIGluIFRpcnphaC4gQW5kIHRoZSBwZW9wbGUgd2VyZSBlbmNhbXBlZCBhZ2FpbnN0IEdpYmJldGhvbiwgd2hpY2ggYmVsb25nZWQgdG8gdGhlIFBoaWxpc3RpbmVzLgpBbmQgdGhlIHBlb3BsZSB0aGF0IHdlcmUgZW5jYW1wZWQgaGVhcmQgc2F5LCBaaW1yaSBoYXRoIGNvbnNwaXJlZCwgYW5kIGhhdGggYWxzbyBzbGFpbiB0aGUga2luZzogd2hlcmVmb3JlIGFsbCBJc3JhZWwgbWFkZSBPbXJpLCB0aGUgY2FwdGFpbiBvZiB0aGUgaG9zdCwga2luZyBvdmVyIElzcmFlbCB0aGF0IGRheSBpbiB0aGUgY2FtcC4KQW5kIE9tcmkgd2VudCB1cCBmcm9tIEdpYmJldGhvbiwgYW5kIGFsbCBJc3JhZWwgd2l0aCBoaW0sIGFuZCB0aGV5IGJlc2llZ2VkIFRpcnphaC4KQW5kIGl0IGNhbWUgdG8gcGFzcywgd2hlbiBaaW1yaSBzYXcgdGhhdCB0aGUgY2l0eSB3YXMgdGFrZW4sIHRoYXQgaGUgd2VudCBpbnRvIHRoZSBwYWxhY2Ugb2YgdGhlIGtpbmcncyBob3VzZSwgYW5kIGJ1cm50IHRoZSBraW5nJ3MgaG91c2Ugb3ZlciBoaW0gd2l0aCBmaXJlLCBhbmQgZGllZC4KRm9yIGhpcyBzaW5zIHdoaWNoIGhlIHNpbm5lZCBpbiBkb2luZyBldmlsIGluIHRoZSBzaWdodCBvZiB0aGUgTE9SRCwgaW4gd2Fsa2luZyBpbiB0aGUgd2F5IG9mIEplcm9ib2FtLCBhbmQgaW4gaGlzIHNpbiB3aGljaCBoZSBkaWQsIHRvIG1ha2UgSXNyYWVsIHRvIHNpbi4KTm93IHRoZSByZXN0IG9mIHRoZSBhY3RzIG9mIFppbXJpLCBhbmQgaGlzIHRyZWFzb24gdGhhdCBoZSB3cm91Z2h0LCBhcmUgdGhleSBub3Qgd3JpdHRlbiBpbiB0aGUgYm9vayBvZiB0aGUgY2hyb25pY2xlcyBvZiB0aGUga2luZ3Mgb2YgSXNyYWVsPwpUaGVuIHdlcmUgdGhlIHBlb3BsZSBvZiBJc3JhZWwgZGl2aWRlZCBpbnRvIHR3byBwYXJ0czogaGFsZiBvZiB0aGUgcGVvcGxlIGZvbGxvd2VkIFRpYm5pIHRoZSBzb24gb2YgR2luYXRoLCB0byBtYWtlIGhpbSBraW5nOyBhbmQgaGFsZiBmb2xsb3dlZCBPbXJpLgpCdXQgdGhlIHBlb3BsZSB0aGF0IGZvbGxvd2VkIE9tcmkgcHJldmFpbGVkIGFnYWluc3QgdGhlIHBlb3BsZSB0aGF0IGZvbGxvd2VkIFRpYm5pIHRoZSBzb24gb2YgR2luYXRoOiBzbyBUaWJuaSBkaWVkLCBhbmQgT21yaSByZWlnbmVkLgpJbiB0aGUgdGhpcnR5IGFuZCBmaXJzdCB5ZWFyIG9mIEFzYSBraW5nIG9mIEp1ZGFoIGJlZ2FuIE9tcmkgdG8gcmVpZ24gb3ZlciBJc3JhZWwsIHR3ZWx2ZSB5ZWFyczogc2l4IHllYXJzIHJlaWduZWQgaGUgaW4gVGlyemFoLgpBbmQgaGUgYm91Z2h0IHRoZSBoaWxsIFNhbWFyaWEgb2YgU2hlbWVyIGZvciB0d28gdGFsZW50cyBvZiBzaWx2ZXIsIGFuZCBidWlsdCBvbiB0aGUgaGlsbCwgYW5kIGNhbGxlZCB0aGUgbmFtZSBvZiB0aGUgY2l0eSB3aGljaCBoZSBidWlsdCwgYWZ0ZXIgdGhlIG5hbWUgb2YgU2hlbWVyLCBvd25lciBvZiB0aGUgaGlsbCwgU2FtYXJpYS4KQnV0IE9tcmkgd3JvdWdodCBldmlsIGluIHRoZSBleWVzIG9mIHRoZSBMT1JELCBhbmQgZGlkIHdvcnNlIHRoYW4gYWxsIHRoYXQgd2VyZSBiZWZvcmUgaGltLgpGb3IgaGUgd2Fsa2VkIGluIGFsbCB0aGUgd2F5IG9mIEplcm9ib2FtIHRoZSBzb24gb2YgTmViYXQsIGFuZCBpbiBoaXMgc2luIHdoZXJld2l0aCBoZSBtYWRlIElzcmFlbCB0byBzaW4sIHRvIHByb3Zva2UgdGhlIExPUkQgR29kIG9mIElzcmFlbCB0byBhbmdlciB3aXRoIHRoZWlyIHZhbml0aWVzLgpOb3cgdGhlIHJlc3Qgb2YgdGhlIGFjdHMgb2YgT21yaSB3aGljaCBoZSBkaWQsIGFuZCBoaXMgbWlnaHQgdGhhdCBoZSBzaGV3ZWQsIGFyZSB0aGV5IG5vdCB3cml0dGVuIGluIHRoZSBib29rIG9mIHRoZSBjaHJvbmljbGVzIG9mIHRoZSBraW5ncyBvZiBJc3JhZWw/ClNvIE9tcmkgc2xlcHQgd2l0aCBoaXMgZmF0aGVycywgYW5kIHdhcyBidXJpZWQgaW4gU2FtYXJpYTogYW5kIEFoYWIgaGlzIHNvbiByZWlnbmVkIGluIGhpcyBzdGVhZC4KQW5kIGluIHRoZSB0aGlydHkgYW5kIGVpZ2h0aCB5ZWFyIG9mIEFzYSBraW5nIG9mIEp1ZGFoIGJlZ2FuIEFoYWIgdGhlIHNvbiBvZiBPbXJpIHRvIHJlaWduIG92ZXIgSXNyYWVsOiBhbmQgQWhhYiB0aGUgc29uIG9mIE9tcmkgcmVpZ25lZCBvdmVyIElzcmFlbCBpbiBTYW1hcmlhIHR3ZW50eSBhbmQgdHdvIHllYXJzLgpBbmQgQWhhYiB0aGUgc29uIG9mIE9tcmkgZGlkIGV2aWwgaW4gdGhlIHNpZ2h0IG9mIHRoZSBMT1JEIGFib3ZlIGFsbCB0aGF0IHdlcmUgYmVmb3JlIGhpbS4KQW5kIGl0IGNhbWUgdG8gcGFzcywgYXMgaWYgaXQgaGFkIGJlZW4gYSBsaWdodCB0aGluZyBmb3IgaGltIHRvIHdhbGsgaW4gdGhlIHNpbnMgb2YgSmVyb2JvYW0gdGhlIHNvbiBvZiBOZWJhdCwgdGhhdCBoZSB0b29rIHRvIHdpZmUgSmV6ZWJlbCB0aGUgZGF1Z2h0ZXIgb2YgRXRoYmFhbCBraW5nIG9mIHRoZSBaaWRvbmlhbnMsIGFuZCB3ZW50IGFuZCBzZXJ2ZWQgQmFhbCwgYW5kIHdvcnNoaXBwZWQgaGltLgpBbmQgaGUgcmVhcmVkIHVwIGFuIGFsdGFyIGZvciBCYWFsIGluIHRoZSBob3VzZSBvZiBCYWFsLCB3aGljaCBoZSBoYWQgYnVpbHQgaW4gU2FtYXJpYS4KQW5kIEFoYWIgbWFkZSBhIGdyb3ZlOyBhbmQgQWhhYiBkaWQgbW9yZSB0byBwcm92b2tlIHRoZSBMT1JEIEdvZCBvZiBJc3JhZWwgdG8gYW5nZXIgdGhhbiBhbGwgdGhlIGtpbmdzIG9mIElzcmFlbCB0aGF0IHdlcmUgYmVmb3JlIGhpbS4KSW4gaGlzIGRheXMgZGlkIEhpZWwgdGhlIEJldGhlbGl0ZSBidWlsZCBKZXJpY2hvOiBoZSBsYWlkIHRoZSBmb3VuZGF0aW9uIHRoZXJlb2YgaW4gQWJpcmFtIGhpcyBmaXJzdGJvcm4sIGFuZCBzZXQgdXAgdGhlIGdhdGVzIHRoZXJlb2YgaW4gaGlzIHlvdW5nZXN0IHNvbiBTZWd1YiwgYWNjb3JkaW5nIHRvIHRoZSB3b3JkIG9mIHRoZSBMT1JELCB3aGljaCBoZSBzcGFrZSBieSBKb3NodWEgdGhlIHNvbiBvZiBOdW4uCkFuZCBFbGlqYWggdGhlIFRpc2hiaXRlLCB3aG8gd2FzIG9mIHRoZSBpbmhhYml0YW50cyBvZiBHaWxlYWQsIHNhaWQgdW50byBBaGFiLCBBcyB0aGUgTE9SRCBHb2Qgb2YgSXNyYWVsIGxpdmV0aCwgYmVmb3JlIHdob20gSSBzdGFuZCwgdGhlcmUgc2hhbGwgbm90IGJlIGRldyBub3IgcmFpbiB0aGVzZSB5ZWFycywgYnV0IGFjY29yZGluZyB0byBteSB3b3JkLgpBbmQgdGhlIHdvcmQgb2YgdGhlIExPUkQgY2FtZSB1bnRvIGhpbSwgc2F5aW5nLApHZXQgdGhlZSBoZW5jZSwgYW5kIHR1cm4gdGhlZSBlYXN0d2FyZCwgYW5kIGhpZGUgdGh5c2VsZiBieSB0aGUgYnJvb2sgQ2hlcml0aCwgdGhhdCBpcyBiZWZvcmUgSm9yZGFuLgpBbmQgaXQgc2hhbGwgYmUsIHRoYXQgdGhvdSBzaGFsdCBkcmluayBvZiB0aGUgYnJvb2s7IGFuZCBJIGhhdmUgY29tbWFuZGVkIHRoZSByYXZlbnMgdG8gZmVlZCB0aGVlIHRoZXJlLgpTbyBoZSB3ZW50IGFuZCBkaWQgYWNjb3JkaW5nIHVudG8gdGhlIHdvcmQgb2YgdGhlIExPUkQ6IGZvciBoZSB3ZW50IGFuZCBkd2VsdCBieSB0aGUgYnJvb2sgQ2hlcml0aCwgdGhhdCBpcyBiZWZvcmUgSm9yZGFuLgpBbmQgdGhlIHJhdmVucyBicm91Z2h0IGhpbSBicmVhZCBhbmQgZmxlc2ggaW4gdGhlIG1vcm5pbmcsIGFuZCBicmVhZCBhbmQgZmxlc2ggaW4gdGhlIGV2ZW5pbmc7IGFuZCBoZSBkcmFuayBvZiB0aGUgYnJvb2suCkFuZCBpdCBjYW1lIHRvIHBhc3MgYWZ0ZXIgYSB3aGlsZSwgdGhhdCB0aGUgYnJvb2sgZHJpZWQgdXAsIGJlY2F1c2UgdGhlcmUgaGFkIGJlZW4gbm8gcmFpbiBpbiB0aGUgbGFuZC4KQW5kIHRoZSB3b3JkIG9mIHRoZSBMT1JEIGNhbWUgdW50byBoaW0sIHNheWluZywKQXJpc2UsIGdldCB0aGVlIHRvIFphcmVwaGF0aCwgd2hpY2ggYmVsb25nZXRoIHRvIFppZG9uLCBhbmQgZHdlbGwgdGhlcmU6IGJlaG9sZCwgSSBoYXZlIGNvbW1hbmRlZCBhIHdpZG93IHdvbWFuIHRoZXJlIHRvIHN1c3RhaW4gdGhlZS4KU28gaGUgYXJvc2UgYW5kIHdlbnQgdG8gWmFyZXBoYXRoLiBBbmQgd2hlbiBoZSBjYW1lIHRvIHRoZSBnYXRlIG9mIHRoZSBjaXR5LCBiZWhvbGQsIHRoZSB3aWRvdyB3b21hbiB3YXMgdGhlcmUgZ2F0aGVyaW5nIG9mIHN0aWNrczogYW5kIGhlIGNhbGxlZCB0byBoZXIsIGFuZCBzYWlkLCBGZXRjaCBtZSwgSSBwcmF5IHRoZWUsIGEgbGl0dGxlIHdhdGVyIGluIGEgdmVzc2VsLCB0aGF0IEkgbWF5IGRyaW5rLgpBbmQgYXMgc2hlIHdhcyBnb2luZyB0byBmZXRjaCBpdCwgaGUgY2FsbGVkIHRvIGhlciwgYW5kIHNhaWQsIEJyaW5nIG1lLCBJIHByYXkgdGhlZSwgYSBtb3JzZWwgb2YgYnJlYWQgaW4gdGhpbmUgaGFuZC4KQW5kIHNoZSBzYWlkLCBBcyB0aGUgTE9SRCB0aHkgR29kIGxpdmV0aCwgSSBoYXZlIG5vdCBhIGNha2UsIGJ1dCBhbiBoYW5kZnVsIG9mIG1lYWwgaW4gYSBiYXJyZWwsIGFuZCBhIGxpdHRsZSBvaWwgaW4gYSBjcnVzZTogYW5kLCBiZWhvbGQsIEkgYW0gZ2F0aGVyaW5nIHR3byBzdGlja3MsIHRoYXQgSSBtYXkgZ28gaW4gYW5kIGRyZXNzIGl0IGZvciBtZSBhbmQgbXkgc29uLCB0aGF0IHdlIG1heSBlYXQgaXQsIGFuZCBkaWUuCkFuZCBFbGlqYWggc2FpZCB1bnRvIGhlciwgRmVhciBub3Q7IGdvIGFuZCBkbyBhcyB0aG91IGhhc3Qgc2FpZDogYnV0IG1ha2UgbWUgdGhlcmVvZiBhIGxpdHRsZSBjYWtlIGZpcnN0LCBhbmQgYnJpbmcgaXQgdW50byBtZSwgYW5kIGFmdGVyIG1ha2UgZm9yIHRoZWUgYW5kIGZvciB0aHkgc29uLgpGb3IgdGh1cyBzYWl0aCB0aGUgTE9SRCBHb2Qgb2YgSXNyYWVsLCBUaGUgYmFycmVsIG9mIG1lYWwgc2hhbGwgbm90IHdhc3RlLCBuZWl0aGVyIHNoYWxsIHRoZSBjcnVzZSBvZiBvaWwgZmFpbCwgdW50aWwgdGhlIGRheSB0aGF0IHRoZSBMT1JEIHNlbmRldGggcmFpbiB1cG9uIHRoZSBlYXJ0aC4KQW5kIHNoZSB3ZW50IGFuZCBkaWQgYWNjb3JkaW5nIHRvIHRoZSBzYXlpbmcgb2YgRWxpamFoOiBhbmQgc2hlLCBhbmQgaGUsIGFuZCBoZXIgaG91c2UsIGRpZCBlYXQgbWFueSBkYXlzLgpBbmQgdGhlIGJhcnJlbCBvZiBtZWFsIHdhc3RlZCBub3QsIG5laXRoZXIgZGlkIHRoZSBjcnVzZSBvZiBvaWwgZmFpbCwgYWNjb3JkaW5nIHRvIHRoZSB3b3JkIG9mIHRoZSBMT1JELCB3aGljaCBoZSBzcGFrZSBieSBFbGlqYWguCkFuZCBpdCBjYW1lIHRvIHBhc3MgYWZ0ZXIgdGhlc2UgdGhpbmdzLCB0aGF0IHRoZSBzb24gb2YgdGhlIHdvbWFuLCB0aGUgbWlzdHJlc3Mgb2YgdGhlIGhvdXNlLCBmZWxsIHNpY2s7IGFuZCBoaXMgc2lja25lc3Mgd2FzIHNvIHNvcmUsIHRoYXQgdGhlcmUgd2FzIG5vIGJyZWF0aCBsZWZ0IGluIGhpbS4KQW5kIHNoZSBzYWlkIHVudG8gRWxpamFoLCBXaGF0IGhhdmUgSSB0byBkbyB3aXRoIHRoZWUsIE8gdGhvdSBtYW4gb2YgR29kPyBhcnQgdGhvdSBjb21lIHVudG8gbWUgdG8gY2FsbCBteSBzaW4gdG8gcmVtZW1icmFuY2UsIGFuZCB0byBzbGF5IG15IHNvbj8KQW5kIGhlIHNhaWQgdW50byBoZXIsIEdpdmUgbWUgdGh5IHNvbi4gQW5kIGhlIHRvb2sgaGltIG91dCBvZiBoZXIgYm9zb20sIGFuZCBjYXJyaWVkIGhpbSB1cCBpbnRvIGEgbG9mdCwgd2hlcmUgaGUgYWJvZGUsIGFuZCBsYWlkIGhpbSB1cG9uIGhpcyBvd24gYmVkLgpBbmQgaGUgY3JpZWQgdW50byB0aGUgTE9SRCwgYW5kIHNhaWQsIE8gTE9SRCBteSBHb2QsIGhhc3QgdGhvdSBhbHNvIGJyb3VnaHQgZXZpbCB1cG9uIHRoZSB3aWRvdyB3aXRoIHdob20gSSBzb2pvdXJuLCBieSBzbGF5aW5nIGhlciBzb24/CkFuZCBoZSBzdHJldGNoZWQgaGltc2VsZiB1cG9uIHRoZSBjaGlsZCB0aHJlZSB0aW1lcywgYW5kIGNyaWVkIHVudG8gdGhlIExPUkQsIGFuZCBzYWlkLCBPIExPUkQgbXkgR29kLCBJIHByYXkgdGhlZSwgbGV0IHRoaXMgY2hpbGQncyBzb3VsIGNvbWUgaW50byBoaW0gYWdhaW4uCkFuZCB0aGUgTE9SRCBoZWFyZCB0aGUgdm9pY2Ugb2YgRWxpamFoOyBhbmQgdGhlIHNvdWwgb2YgdGhlIGNoaWxkIGNhbWUgaW50byBoaW0gYWdhaW4sIGFuZCBoZSByZXZpdmVkLgpBbmQgRWxpamFoIHRvb2sgdGhlIGNoaWxkLCBhbmQgYnJvdWdodCBoaW0gZG93biBvdXQgb2YgdGhlIGNoYW1iZXIgaW50byB0aGUgaG91c2UsIGFuZCBkZWxpdmVyZWQgaGltIHVudG8gaGlzIG1vdGhlcjogYW5kIEVsaWphaCBzYWlkLCBTZWUsIHRoeSBzb24gbGl2ZXRoLgpBbmQgdGhlIHdvbWFuIHNhaWQgdG8gRWxpamFoLCBOb3cgYnkgdGhpcyBJIGtub3cgdGhhdCB0aG91IGFydCBhIG1hbiBvZiBHb2QsIGFuZCB0aGF0IHRoZSB3b3JkIG9mIHRoZSBMT1JEIGluIHRoeSBtb3V0aCBpcyB0cnV0aC4KQW5kIGl0IGNhbWUgdG8gcGFzcyBhZnRlciBtYW55IGRheXMsIHRoYXQgdGhlIHdvcmQgb2YgdGhlIExPUkQgY2FtZSB0byBFbGlqYWggaW4gdGhlIHRoaXJkIHllYXIsIHNheWluZywgR28sIHNoZXcgdGh5c2VsZiB1bnRvIEFoYWI7IGFuZCBJIHdpbGwgc2VuZCByYWluIHVwb24gdGhlIGVhcnRoLgpBbmQgRWxpamFoIHdlbnQgdG8gc2hldyBoaW1zZWxmIHVudG8gQWhhYi4gQW5kIHRoZXJlIHdhcyBhIHNvcmUgZmFtaW5lIGluIFNhbWFyaWEuCkFuZCBBaGFiIGNhbGxlZCBPYmFkaWFoLCB3aGljaCB3YXMgdGhlIGdvdmVybm9yIG9mIGhpcyBob3VzZS4gKE5vdyBPYmFkaWFoIGZlYXJlZCB0aGUgTE9SRCBncmVhdGx5OgpGb3IgaXQgd2FzIHNvLCB3aGVuIEplemViZWwgY3V0IG9mZiB0aGUgcHJvcGhldHMgb2YgdGhlIExPUkQsIHRoYXQgT2JhZGlhaCB0b29rIGFuIGh1bmRyZWQgcHJvcGhldHMsIGFuZCBoaWQgdGhlbSBieSBmaWZ0eSBpbiBhIGNhdmUsIGFuZCBmZWQgdGhlbSB3aXRoIGJyZWFkIGFuZCB3YXRlci4pCkFuZCBBaGFiIHNhaWQgdW50byBPYmFkaWFoLCBHbyBpbnRvIHRoZSBsYW5kLCB1bnRvIGFsbCBmb3VudGFpbnMgb2Ygd2F0ZXIsIGFuZCB1bnRvIGFsbCBicm9va3M6IHBlcmFkdmVudHVyZSB3ZSBtYXkgZmluZCBncmFzcyB0byBzYXZlIHRoZSBob3JzZXMgYW5kIG11bGVzIGFsaXZlLCB0aGF0IHdlIGxvc2Ugbm90IGFsbCB0aGUgYmVhc3RzLgpTbyB0aGV5IGRpdmlkZWQgdGhlIGxhbmQgYmV0d2VlbiB0aGVtIHRvIHBhc3MgdGhyb3VnaG91dCBpdDogQWhhYiB3ZW50IG9uZSB3YXkgYnkgaGltc2VsZiwgYW5kIE9iYWRpYWggd2VudCBhbm90aGVyIHdheSBieSBoaW1zZWxmLgpBbmQgYXMgT2JhZGlhaCB3YXMgaW4gdGhlIHdheSwgYmVob2xkLCBFbGlqYWggbWV0IGhpbTogYW5kIGhlIGtuZXcgaGltLCBhbmQgZmVsbCBvbiBoaXMgZmFjZSwgYW5kIHNhaWQsIEFydCB0aG91IHRoYXQgbXkgbG9yZCBFbGlqYWg/CkFuZCBoZSBhbnN3ZXJlZCBoaW0sIEkgYW06IGdvLCB0ZWxsIHRoeSBsb3JkLCBCZWhvbGQsIEVsaWphaCBpcyBoZXJlLgpBbmQgaGUgc2FpZCwgV2hhdCBoYXZlIEkgc2lubmVkLCB0aGF0IHRob3Ugd291bGRlc3QgZGVsaXZlciB0aHkgc2VydmFudCBpbnRvIHRoZSBoYW5kIG9mIEFoYWIsIHRvIHNsYXkgbWU/CkFzIHRoZSBMT1JEIHRoeSBHb2QgbGl2ZXRoLCB0aGVyZSBpcyBubyBuYXRpb24gb3Iga2luZ2RvbSwgd2hpdGhlciBteSBsb3JkIGhhdGggbm90IHNlbnQgdG8gc2VlayB0aGVlOiBhbmQgd2hlbiB0aGV5IHNhaWQsIEhlIGlzIG5vdCB0aGVyZTsgaGUgdG9vayBhbiBvYXRoIG9mIHRoZSBraW5nZG9tIGFuZCBuYXRpb24sIHRoYXQgdGhleSBmb3VuZCB0aGVlIG5vdC4KQW5kIG5vdyB0aG91IHNheWVzdCwgR28sIHRlbGwgdGh5IGxvcmQsIEJlaG9sZCwgRWxpamFoIGlzIGhlcmUuCkFuZCBpdCBzaGFsbCBjb21lIHRvIHBhc3MsIGFzIHNvb24gYXMgSSBhbSBnb25lIGZyb20gdGhlZSwgdGhhdCB0aGUgU3Bpcml0IG9mIHRoZSBMT1JEIHNoYWxsIGNhcnJ5IHRoZWUgd2hpdGhlciBJIGtub3cgbm90OyBhbmQgc28gd2hlbiBJIGNvbWUgYW5kIHRlbGwgQWhhYiwgYW5kIGhlIGNhbm5vdCBmaW5kIHRoZWUsIGhlIHNoYWxsIHNsYXkgbWU6IGJ1dCBJIHRoeSBzZXJ2YW50IGZlYXIgdGhlIExPUkQgZnJvbSBteSB5b3V0aC4KV2FzIGl0IG5vdCB0b2xkIG15IGxvcmQgd2hhdCBJIGRpZCB3aGVuIEplemViZWwgc2xldyB0aGUgcHJvcGhldHMgb2YgdGhlIExPUkQsIGhvdyBJIGhpZCBhbiBodW5kcmVkIG1lbiBvZiB0aGUgTE9SRCdzIHByb3BoZXRzIGJ5IGZpZnR5IGluIGEgY2F2ZSwgYW5kIGZlZCB0aGVtIHdpdGggYnJlYWQgYW5kIHdhdGVyPwpBbmQgbm93IHRob3Ugc2F5ZXN0LCBHbywgdGVsbCB0aHkgbG9yZCwgQmVob2xkLCBFbGlqYWggaXMgaGVyZTogYW5kIGhlIHNoYWxsIHNsYXkgbWUuCkFuZCBFbGlqYWggc2FpZCwgQXMgdGhlIExPUkQgb2YgaG9zdHMgbGl2ZXRoLCBiZWZvcmUgd2hvbSBJIHN0YW5kLCBJIHdpbGwgc3VyZWx5IHNoZXcgbXlzZWxmIHVudG8gaGltIHRvIGRheS4KU28gT2JhZGlhaCB3ZW50IHRvIG1lZXQgQWhhYiwgYW5kIHRvbGQgaGltOiBhbmQgQWhhYiB3ZW50IHRvIG1lZXQgRWxpamFoLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIEFoYWIgc2F3IEVsaWphaCwgdGhhdCBBaGFiIHNhaWQgdW50byBoaW0sIEFydCB0aG91IGhlIHRoYXQgdHJvdWJsZXRoIElzcmFlbD8KQW5kIGhlIGFuc3dlcmVkLCBJIGhhdmUgbm90IHRyb3VibGVkIElzcmFlbDsgYnV0IHRob3UsIGFuZCB0aHkgZmF0aGVyJ3MgaG91c2UsIGluIHRoYXQgeWUgaGF2ZSBmb3JzYWtlbiB0aGUgY29tbWFuZG1lbnRzIG9mIHRoZSBMT1JELCBhbmQgdGhvdSBoYXN0IGZvbGxvd2VkIEJhYWxpbS4KTm93IHRoZXJlZm9yZSBzZW5kLCBhbmQgZ2F0aGVyIHRvIG1lIGFsbCBJc3JhZWwgdW50byBtb3VudCBDYXJtZWwsIGFuZCB0aGUgcHJvcGhldHMgb2YgQmFhbCBmb3VyIGh1bmRyZWQgYW5kIGZpZnR5LCBhbmQgdGhlIHByb3BoZXRzIG9mIHRoZSBncm92ZXMgZm91ciBodW5kcmVkLCB3aGljaCBlYXQgYXQgSmV6ZWJlbCdzIHRhYmxlLgpTbyBBaGFiIHNlbnQgdW50byBhbGwgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgYW5kIGdhdGhlcmVkIHRoZSBwcm9waGV0cyB0b2dldGhlciB1bnRvIG1vdW50IENhcm1lbC4KQW5kIEVsaWphaCBjYW1lIHVudG8gYWxsIHRoZSBwZW9wbGUsIGFuZCBzYWlkLCBIb3cgbG9uZyBoYWx0IHllIGJldHdlZW4gdHdvIG9waW5pb25zPyBpZiB0aGUgTE9SRCBiZSBHb2QsIGZvbGxvdyBoaW06IGJ1dCBpZiBCYWFsLCB0aGVuIGZvbGxvdyBoaW0uIEFuZCB0aGUgcGVvcGxlIGFuc3dlcmVkIGhpbSBub3QgYSB3b3JkLgpUaGVuIHNhaWQgRWxpamFoIHVudG8gdGhlIHBlb3BsZSwgSSwgZXZlbiBJIG9ubHksIHJlbWFpbiBhIHByb3BoZXQgb2YgdGhlIExPUkQ7IGJ1dCBCYWFsJ3MgcHJvcGhldHMgYXJlIGZvdXIgaHVuZHJlZCBhbmQgZmlmdHkgbWVuLgpMZXQgdGhlbSB0aGVyZWZvcmUgZ2l2ZSB1cyB0d28gYnVsbG9ja3M7IGFuZCBsZXQgdGhlbSBjaG9vc2Ugb25lIGJ1bGxvY2sgZm9yIHRoZW1zZWx2ZXMsIGFuZCBjdXQgaXQgaW4gcGllY2VzLCBhbmQgbGF5IGl0IG9uIHdvb2QsIGFuZCBwdXQgbm8gZmlyZSB1bmRlcjogYW5kIEkgd2lsbCBkcmVzcyB0aGUgb3RoZXIgYnVsbG9jaywgYW5kIGxheSBpdCBvbiB3b29kLCBhbmQgcHV0IG5vIGZpcmUgdW5kZXI6CkFuZCBjYWxsIHllIG9uIHRoZSBuYW1lIG9mIHlvdXIgZ29kcywgYW5kIEkgd2lsbCBjYWxsIG9uIHRoZSBuYW1lIG9mIHRoZSBMT1JEOiBhbmQgdGhlIEdvZCB0aGF0IGFuc3dlcmV0aCBieSBmaXJlLCBsZXQgaGltIGJlIEdvZC4gQW5kIGFsbCB0aGUgcGVvcGxlIGFuc3dlcmVkIGFuZCBzYWlkLCBJdCBpcyB3ZWxsIHNwb2tlbi4KQW5kIEVsaWphaCBzYWlkIHVudG8gdGhlIHByb3BoZXRzIG9mIEJhYWwsIENob29zZSB5b3Ugb25lIGJ1bGxvY2sgZm9yIHlvdXJzZWx2ZXMsIGFuZCBkcmVzcyBpdCBmaXJzdDsgZm9yIHllIGFyZSBtYW55OyBhbmQgY2FsbCBvbiB0aGUgbmFtZSBvZiB5b3VyIGdvZHMsIGJ1dCBwdXQgbm8gZmlyZSB1bmRlci4KQW5kIHRoZXkgdG9vayB0aGUgYnVsbG9jayB3aGljaCB3YXMgZ2l2ZW4gdGhlbSwgYW5kIHRoZXkgZHJlc3NlZCBpdCwgYW5kIGNhbGxlZCBvbiB0aGUgbmFtZSBvZiBCYWFsIGZyb20gbW9ybmluZyBldmVuIHVudGlsIG5vb24sIHNheWluZywgTyBCYWFsLCBoZWFyIHVzLiBCdXQgdGhlcmUgd2FzIG5vIHZvaWNlLCBub3IgYW55IHRoYXQgYW5zd2VyZWQuIEFuZCB0aGV5IGxlYXBlZCB1cG9uIHRoZSBhbHRhciB3aGljaCB3YXMgbWFkZS4KQW5kIGl0IGNhbWUgdG8gcGFzcyBhdCBub29uLCB0aGF0IEVsaWphaCBtb2NrZWQgdGhlbSwgYW5kIHNhaWQsIENyeSBhbG91ZDogZm9yIGhlIGlzIGEgZ29kOyBlaXRoZXIgaGUgaXMgdGFsa2luZywgb3IgaGUgaXMgcHVyc3VpbmcsIG9yIGhlIGlzIGluIGEgam91cm5leSwgb3IgcGVyYWR2ZW50dXJlIGhlIHNsZWVwZXRoLCBhbmQgbXVzdCBiZSBhd2FrZWQuCkFuZCB0aGV5IGNyaWVkIGFsb3VkLCBhbmQgY3V0IHRoZW1zZWx2ZXMgYWZ0ZXIgdGhlaXIgbWFubmVyIHdpdGgga25pdmVzIGFuZCBsYW5jZXRzLCB0aWxsIHRoZSBibG9vZCBndXNoZWQgb3V0IHVwb24gdGhlbS4KQW5kIGl0IGNhbWUgdG8gcGFzcywgd2hlbiBtaWRkYXkgd2FzIHBhc3QsIGFuZCB0aGV5IHByb3BoZXNpZWQgdW50aWwgdGhlIHRpbWUgb2YgdGhlIG9mZmVyaW5nIG9mIHRoZSBldmVuaW5nIHNhY3JpZmljZSwgdGhhdCB0aGVyZSB3YXMgbmVpdGhlciB2b2ljZSwgbm9yIGFueSB0byBhbnN3ZXIsIG5vciBhbnkgdGhhdCByZWdhcmRlZC4KQW5kIEVsaWphaCBzYWlkIHVudG8gYWxsIHRoZSBwZW9wbGUsIENvbWUgbmVhciB1bnRvIG1lLiBBbmQgYWxsIHRoZSBwZW9wbGUgY2FtZSBuZWFyIHVudG8gaGltLiBBbmQgaGUgcmVwYWlyZWQgdGhlIGFsdGFyIG9mIHRoZSBMT1JEIHRoYXQgd2FzIGJyb2tlbiBkb3duLgpBbmQgRWxpamFoIHRvb2sgdHdlbHZlIHN0b25lcywgYWNjb3JkaW5nIHRvIHRoZSBudW1iZXIgb2YgdGhlIHRyaWJlcyBvZiB0aGUgc29ucyBvZiBKYWNvYiwgdW50byB3aG9tIHRoZSB3b3JkIG9mIHRoZSBMT1JEIGNhbWUsIHNheWluZywgSXNyYWVsIHNoYWxsIGJlIHRoeSBuYW1lOgpBbmQgd2l0aCB0aGUgc3RvbmVzIGhlIGJ1aWx0IGFuIGFsdGFyIGluIHRoZSBuYW1lIG9mIHRoZSBMT1JEOiBhbmQgaGUgbWFkZSBhIHRyZW5jaCBhYm91dCB0aGUgYWx0YXIsIGFzIGdyZWF0IGFzIHdvdWxkIGNvbnRhaW4gdHdvIG1lYXN1cmVzIG9mIHNlZWQuCkFuZCBoZSBwdXQgdGhlIHdvb2QgaW4gb3JkZXIsIGFuZCBjdXQgdGhlIGJ1bGxvY2sgaW4gcGllY2VzLCBhbmQgbGFpZCBoaW0gb24gdGhlIHdvb2QsIGFuZCBzYWlkLCBGaWxsIGZvdXIgYmFycmVscyB3aXRoIHdhdGVyLCBhbmQgcG91ciBpdCBvbiB0aGUgYnVybnQgc2FjcmlmaWNlLCBhbmQgb24gdGhlIHdvb2QuCkFuZCBoZSBzYWlkLCBEbyBpdCB0aGUgc2Vjb25kIHRpbWUuIEFuZCB0aGV5IGRpZCBpdCB0aGUgc2Vjb25kIHRpbWUuIEFuZCBoZSBzYWlkLCBEbyBpdCB0aGUgdGhpcmQgdGltZS4gQW5kIHRoZXkgZGlkIGl0IHRoZSB0aGlyZCB0aW1lLgpBbmQgdGhlIHdhdGVyIHJhbiByb3VuZCBhYm91dCB0aGUgYWx0YXI7IGFuZCBoZSBmaWxsZWQgdGhlIHRyZW5jaCBhbHNvIHdpdGggd2F0ZXIuCkFuZCBpdCBjYW1lIHRvIHBhc3MgYXQgdGhlIHRpbWUgb2YgdGhlIG9mZmVyaW5nIG9mIHRoZSBldmVuaW5nIHNhY3JpZmljZSwgdGhhdCBFbGlqYWggdGhlIHByb3BoZXQgY2FtZSBuZWFyLCBhbmQgc2FpZCwgTE9SRCBHb2Qgb2YgQWJyYWhhbSwgSXNhYWMsIGFuZCBvZiBJc3JhZWwsIGxldCBpdCBiZSBrbm93biB0aGlzIGRheSB0aGF0IHRob3UgYXJ0IEdvZCBpbiBJc3JhZWwsIGFuZCB0aGF0IEkgYW0gdGh5IHNlcnZhbnQsIGFuZCB0aGF0IEkgaGF2ZSBkb25lIGFsbCB0aGVzZSB0aGluZ3MgYXQgdGh5IHdvcmQuCkhlYXIgbWUsIE8gTE9SRCwgaGVhciBtZSwgdGhhdCB0aGlzIHBlb3BsZSBtYXkga25vdyB0aGF0IHRob3UgYXJ0IHRoZSBMT1JEIEdvZCwgYW5kIHRoYXQgdGhvdSBoYXN0IHR1cm5lZCB0aGVpciBoZWFydCBiYWNrIGFnYWluLgpUaGVuIHRoZSBmaXJlIG9mIHRoZSBMT1JEIGZlbGwsIGFuZCBjb25zdW1lZCB0aGUgYnVybnQgc2FjcmlmaWNlLCBhbmQgdGhlIHdvb2QsIGFuZCB0aGUgc3RvbmVzLCBhbmQgdGhlIGR1c3QsIGFuZCBsaWNrZWQgdXAgdGhlIHdhdGVyIHRoYXQgd2FzIGluIHRoZSB0cmVuY2guCkFuZCB3aGVuIGFsbCB0aGUgcGVvcGxlIHNhdyBpdCwgdGhleSBmZWxsIG9uIHRoZWlyIGZhY2VzOiBhbmQgdGhleSBzYWlkLCBUaGUgTE9SRCwgaGUgaXMgdGhlIEdvZDsgdGhlIExPUkQsIGhlIGlzIHRoZSBHb2QuCkFuZCBFbGlqYWggc2FpZCB1bnRvIHRoZW0sIFRha2UgdGhlIHByb3BoZXRzIG9mIEJhYWw7IGxldCBub3Qgb25lIG9mIHRoZW0gZXNjYXBlLiBBbmQgdGhleSB0b29rIHRoZW06IGFuZCBFbGlqYWggYnJvdWdodCB0aGVtIGRvd24gdG8gdGhlIGJyb29rIEtpc2hvbiwgYW5kIHNsZXcgdGhlbSB0aGVyZS4KQW5kIEVsaWphaCBzYWlkIHVudG8gQWhhYiwgR2V0IHRoZWUgdXAsIGVhdCBhbmQgZHJpbms7IGZvciB0aGVyZSBpcyBhIHNvdW5kIG9mIGFidW5kYW5jZSBvZiByYWluLgpTbyBBaGFiIHdlbnQgdXAgdG8gZWF0IGFuZCB0byBkcmluay4gQW5kIEVsaWphaCB3ZW50IHVwIHRvIHRoZSB0b3Agb2YgQ2FybWVsOyBhbmQgaGUgY2FzdCBoaW1zZWxmIGRvd24gdXBvbiB0aGUgZWFydGgsIGFuZCBwdXQgaGlzIGZhY2UgYmV0d2VlbiBoaXMga25lZXMsCkFuZCBzYWlkIHRvIGhpcyBzZXJ2YW50LCBHbyB1cCBub3csIGxvb2sgdG93YXJkIHRoZSBzZWEuIEFuZCBoZSB3ZW50IHVwLCBhbmQgbG9va2VkLCBhbmQgc2FpZCwgVGhlcmUgaXMgbm90aGluZy4gQW5kIGhlIHNhaWQsIEdvIGFnYWluIHNldmVuIHRpbWVzLgpBbmQgaXQgY2FtZSB0byBwYXNzIGF0IHRoZSBzZXZlbnRoIHRpbWUsIHRoYXQgaGUgc2FpZCwgQmVob2xkLCB0aGVyZSBhcmlzZXRoIGEgbGl0dGxlIGNsb3VkIG91dCBvZiB0aGUgc2VhLCBsaWtlIGEgbWFuJ3MgaGFuZC4gQW5kIGhlIHNhaWQsIEdvIHVwLCBzYXkgdW50byBBaGFiLCBQcmVwYXJlIHRoeSBjaGFyaW90LCBhbmQgZ2V0IHRoZWUgZG93biB0aGF0IHRoZSByYWluIHN0b3AgdGhlZSBub3QuCkFuZCBpdCBjYW1lIHRvIHBhc3MgaW4gdGhlIG1lYW4gd2hpbGUsIHRoYXQgdGhlIGhlYXZlbiB3YXMgYmxhY2sgd2l0aCBjbG91ZHMgYW5kIHdpbmQsIGFuZCB0aGVyZSB3YXMgYSBncmVhdCByYWluLiBBbmQgQWhhYiByb2RlLCBhbmQgd2VudCB0byBKZXpyZWVsLgpBbmQgdGhlIGhhbmQgb2YgdGhlIExPUkQgd2FzIG9uIEVsaWphaDsgYW5kIGhlIGdpcmRlZCB1cCBoaXMgbG9pbnMsIGFuZCByYW4gYmVmb3JlIEFoYWIgdG8gdGhlIGVudHJhbmNlIG9mIEplenJlZWwuCkFuZCBBaGFiIHRvbGQgSmV6ZWJlbCBhbGwgdGhhdCBFbGlqYWggaGFkIGRvbmUsIGFuZCB3aXRoYWwgaG93IGhlIGhhZCBzbGFpbiBhbGwgdGhlIHByb3BoZXRzIHdpdGggdGhlIHN3b3JkLgpUaGVuIEplemViZWwgc2VudCBhIG1lc3NlbmdlciB1bnRvIEVsaWphaCwgc2F5aW5nLCBTbyBsZXQgdGhlIGdvZHMgZG8gdG8gbWUsIGFuZCBtb3JlIGFsc28sIGlmIEkgbWFrZSBub3QgdGh5IGxpZmUgYXMgdGhlIGxpZmUgb2Ygb25lIG9mIHRoZW0gYnkgdG8gbW9ycm93IGFib3V0IHRoaXMgdGltZS4KQW5kIHdoZW4gaGUgc2F3IHRoYXQsIGhlIGFyb3NlLCBhbmQgd2VudCBmb3IgaGlzIGxpZmUsIGFuZCBjYW1lIHRvIEJlZXJzaGViYSwgd2hpY2ggYmVsb25nZXRoIHRvIEp1ZGFoLCBhbmQgbGVmdCBoaXMgc2VydmFudCB0aGVyZS4KQnV0IGhlIGhpbXNlbGYgd2VudCBhIGRheSdzIGpvdXJuZXkgaW50byB0aGUgd2lsZGVybmVzcywgYW5kIGNhbWUgYW5kIHNhdCBkb3duIHVuZGVyIGEganVuaXBlciB0cmVlOiBhbmQgaGUgcmVxdWVzdGVkIGZvciBoaW1zZWxmIHRoYXQgaGUgbWlnaHQgZGllOyBhbmQgc2FpZCwgSXQgaXMgZW5vdWdoOyBub3csIE8gTE9SRCwgdGFrZSBhd2F5IG15IGxpZmU7IGZvciBJIGFtIG5vdCBiZXR0ZXIgdGhhbiBteSBmYXRoZXJzLgpBbmQgYXMgaGUgbGF5IGFuZCBzbGVwdCB1bmRlciBhIGp1bmlwZXIgdHJlZSwgYmVob2xkLCB0aGVuIGFuIGFuZ2VsIHRvdWNoZWQgaGltLCBhbmQgc2FpZCB1bnRvIGhpbSwgQXJpc2UgYW5kIGVhdC4KQW5kIGhlIGxvb2tlZCwgYW5kLCBiZWhvbGQsIHRoZXJlIHdhcyBhIGNha2UgYmFrZW4gb24gdGhlIGNvYWxzLCBhbmQgYSBjcnVzZSBvZiB3YXRlciBhdCBoaXMgaGVhZC4gQW5kIGhlIGRpZCBlYXQgYW5kIGRyaW5rLCBhbmQgbGFpZCBoaW0gZG93biBhZ2Fpbi4KQW5kIHRoZSBhbmdlbCBvZiB0aGUgTE9SRCBjYW1lIGFnYWluIHRoZSBzZWNvbmQgdGltZSwgYW5kIHRvdWNoZWQgaGltLCBhbmQgc2FpZCwgQXJpc2UgYW5kIGVhdDsgYmVjYXVzZSB0aGUgam91cm5leSBpcyB0b28gZ3JlYXQgZm9yIHRoZWUuCkFuZCBoZSBhcm9zZSwgYW5kIGRpZCBlYXQgYW5kIGRyaW5rLCBhbmQgd2VudCBpbiB0aGUgc3RyZW5ndGggb2YgdGhhdCBtZWF0IGZvcnR5IGRheXMgYW5kIGZvcnR5IG5pZ2h0cyB1bnRvIEhvcmViIHRoZSBtb3VudCBvZiBHb2QuCkFuZCBoZSBjYW1lIHRoaXRoZXIgdW50byBhIGNhdmUsIGFuZCBsb2RnZWQgdGhlcmU7IGFuZCwgYmVob2xkLCB0aGUgd29yZCBvZiB0aGUgTE9SRCBjYW1lIHRvIGhpbSwgYW5kIGhlIHNhaWQgdW50byBoaW0sIFdoYXQgZG9lc3QgdGhvdSBoZXJlLCBFbGlqYWg/CkFuZCBoZSBzYWlkLCBJIGhhdmUgYmVlbiB2ZXJ5IGplYWxvdXMgZm9yIHRoZSBMT1JEIEdvZCBvZiBob3N0czogZm9yIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgaGF2ZSBmb3JzYWtlbiB0aHkgY292ZW5hbnQsIHRocm93biBkb3duIHRoaW5lIGFsdGFycywgYW5kIHNsYWluIHRoeSBwcm9waGV0cyB3aXRoIHRoZSBzd29yZDsgYW5kIEksIGV2ZW4gSSBvbmx5LCBhbSBsZWZ0OyBhbmQgdGhleSBzZWVrIG15IGxpZmUsIHRvIHRha2UgaXQgYXdheS4KQW5kIGhlIHNhaWQsIEdvIGZvcnRoLCBhbmQgc3RhbmQgdXBvbiB0aGUgbW91bnQgYmVmb3JlIHRoZSBMT1JELiBBbmQsIGJlaG9sZCwgdGhlIExPUkQgcGFzc2VkIGJ5LCBhbmQgYSBncmVhdCBhbmQgc3Ryb25nIHdpbmQgcmVudCB0aGUgbW91bnRhaW5zLCBhbmQgYnJha2UgaW4gcGllY2VzIHRoZSByb2NrcyBiZWZvcmUgdGhlIExPUkQ7IGJ1dCB0aGUgTE9SRCB3YXMgbm90IGluIHRoZSB3aW5kOiBhbmQgYWZ0ZXIgdGhlIHdpbmQgYW4gZWFydGhxdWFrZTsgYnV0IHRoZSBMT1JEIHdhcyBub3QgaW4gdGhlIGVhcnRocXVha2U6CkFuZCBhZnRlciB0aGUgZWFydGhxdWFrZSBhIGZpcmU7IGJ1dCB0aGUgTE9SRCB3YXMgbm90IGluIHRoZSBmaXJlOiBhbmQgYWZ0ZXIgdGhlIGZpcmUgYSBzdGlsbCBzbWFsbCB2b2ljZS4KQW5kIGl0IHdhcyBzbywgd2hlbiBFbGlqYWggaGVhcmQgaXQsIHRoYXQgaGUgd3JhcHBlZCBoaXMgZmFjZSBpbiBoaXMgbWFudGxlLCBhbmQgd2VudCBvdXQsIGFuZCBzdG9vZCBpbiB0aGUgZW50ZXJpbmcgaW4gb2YgdGhlIGNhdmUuIEFuZCwgYmVob2xkLCB0aGVyZSBjYW1lIGEgdm9pY2UgdW50byBoaW0sIGFuZCBzYWlkLCBXaGF0IGRvZXN0IHRob3UgaGVyZSwgRWxpamFoPwpBbmQgaGUgc2FpZCwgSSBoYXZlIGJlZW4gdmVyeSBqZWFsb3VzIGZvciB0aGUgTE9SRCBHb2Qgb2YgaG9zdHM6IGJlY2F1c2UgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBoYXZlIGZvcnNha2VuIHRoeSBjb3ZlbmFudCwgdGhyb3duIGRvd24gdGhpbmUgYWx0YXJzLCBhbmQgc2xhaW4gdGh5IHByb3BoZXRzIHdpdGggdGhlIHN3b3JkOyBhbmQgSSwgZXZlbiBJIG9ubHksIGFtIGxlZnQ7IGFuZCB0aGV5IHNlZWsgbXkgbGlmZSwgdG8gdGFrZSBpdCBhd2F5LgpBbmQgdGhlIExPUkQgc2FpZCB1bnRvIGhpbSwgR28sIHJldHVybiBvbiB0aHkgd2F5IHRvIHRoZSB3aWxkZXJuZXNzIG9mIERhbWFzY3VzOiBhbmQgd2hlbiB0aG91IGNvbWVzdCwgYW5vaW50IEhhemFlbCB0byBiZSBraW5nIG92ZXIgU3lyaWE6CkFuZCBKZWh1IHRoZSBzb24gb2YgTmltc2hpIHNoYWx0IHRob3UgYW5vaW50IHRvIGJlIGtpbmcgb3ZlciBJc3JhZWw6IGFuZCBFbGlzaGEgdGhlIHNvbiBvZiBTaGFwaGF0IG9mIEFiZWxtZWhvbGFoIHNoYWx0IHRob3UgYW5vaW50IHRvIGJlIHByb3BoZXQgaW4gdGh5IHJvb20uCkFuZCBpdCBzaGFsbCBjb21lIHRvIHBhc3MsIHRoYXQgaGltIHRoYXQgZXNjYXBldGggdGhlIHN3b3JkIG9mIEhhemFlbCBzaGFsbCBKZWh1IHNsYXk6IGFuZCBoaW0gdGhhdCBlc2NhcGV0aCBmcm9tIHRoZSBzd29yZCBvZiBKZWh1IHNoYWxsIEVsaXNoYSBzbGF5LgpZZXQgSSBoYXZlIGxlZnQgbWUgc2V2ZW4gdGhvdXNhbmQgaW4gSXNyYWVsLCBhbGwgdGhlIGtuZWVzIHdoaWNoIGhhdmUgbm90IGJvd2VkIHVudG8gQmFhbCwgYW5kIGV2ZXJ5IG1vdXRoIHdoaWNoIGhhdGggbm90IGtpc3NlZCBoaW0uClNvIGhlIGRlcGFydGVkIHRoZW5jZSwgYW5kIGZvdW5kIEVsaXNoYSB0aGUgc29uIG9mIFNoYXBoYXQsIHdobyB3YXMgcGxvd2luZyB3aXRoIHR3ZWx2ZSB5b2tlIG9mIG94ZW4gYmVmb3JlIGhpbSwgYW5kIGhlIHdpdGggdGhlIHR3ZWxmdGg6IGFuZCBFbGlqYWggcGFzc2VkIGJ5IGhpbSwgYW5kIGNhc3QgaGlzIG1hbnRsZSB1cG9uIGhpbS4KQW5kIGhlIGxlZnQgdGhlIG94ZW4sIGFuZCByYW4gYWZ0ZXIgRWxpamFoLCBhbmQgc2FpZCwgTGV0IG1lLCBJIHByYXkgdGhlZSwga2lzcyBteSBmYXRoZXIgYW5kIG15IG1vdGhlciwgYW5kIHRoZW4gSSB3aWxsIGZvbGxvdyB0aGVlLiBBbmQgaGUgc2FpZCB1bnRvIGhpbSwgR28gYmFjayBhZ2FpbjogZm9yIHdoYXQgaGF2ZSBJIGRvbmUgdG8gdGhlZT8KQW5kIGhlIHJldHVybmVkIGJhY2sgZnJvbSBoaW0sIGFuZCB0b29rIGEgeW9rZSBvZiBveGVuLCBhbmQgc2xldyB0aGVtLCBhbmQgYm9pbGVkIHRoZWlyIGZsZXNoIHdpdGggdGhlIGluc3RydW1lbnRzIG9mIHRoZSBveGVuLCBhbmQgZ2F2ZSB1bnRvIHRoZSBwZW9wbGUsIGFuZCB0aGV5IGRpZCBlYXQuIFRoZW4gaGUgYXJvc2UsIGFuZCB3ZW50IGFmdGVyIEVsaWphaCwgYW5kIG1pbmlzdGVyZWQgdW50byBoaW0uCkFuZCBCZW5oYWRhZCB0aGUga2luZyBvZiBTeXJpYSBnYXRoZXJlZCBhbGwgaGlzIGhvc3QgdG9nZXRoZXI6IGFuZCB0aGVyZSB3ZXJlIHRoaXJ0eSBhbmQgdHdvIGtpbmdzIHdpdGggaGltLCBhbmQgaG9yc2VzLCBhbmQgY2hhcmlvdHM7IGFuZCBoZSB3ZW50IHVwIGFuZCBiZXNpZWdlZCBTYW1hcmlhLCBhbmQgd2FycmVkIGFnYWluc3QgaXQuCkFuZCBoZSBzZW50IG1lc3NlbmdlcnMgdG8gQWhhYiBraW5nIG9mIElzcmFlbCBpbnRvIHRoZSBjaXR5LCBhbmQgc2FpZCB1bnRvIGhpbSwgVGh1cyBzYWl0aCBCZW5oYWRhZCwKVGh5IHNpbHZlciBhbmQgdGh5IGdvbGQgaXMgbWluZTsgdGh5IHdpdmVzIGFsc28gYW5kIHRoeSBjaGlsZHJlbiwgZXZlbiB0aGUgZ29vZGxpZXN0LCBhcmUgbWluZS4KQW5kIHRoZSBraW5nIG9mIElzcmFlbCBhbnN3ZXJlZCBhbmQgc2FpZCwgTXkgbG9yZCwgTyBraW5nLCBhY2NvcmRpbmcgdG8gdGh5IHNheWluZywgSSBhbSB0aGluZSwgYW5kIGFsbCB0aGF0IEkgaGF2ZS4KQW5kIHRoZSBtZXNzZW5nZXJzIGNhbWUgYWdhaW4sIGFuZCBzYWlkLCBUaHVzIHNwZWFrZXRoIEJlbmhhZGFkLCBzYXlpbmcsIEFsdGhvdWdoIEkgaGF2ZSBzZW50IHVudG8gdGhlZSwgc2F5aW5nLCBUaG91IHNoYWx0IGRlbGl2ZXIgbWUgdGh5IHNpbHZlciwgYW5kIHRoeSBnb2xkLCBhbmQgdGh5IHdpdmVzLCBhbmQgdGh5IGNoaWxkcmVuOwpZZXQgSSB3aWxsIHNlbmQgbXkgc2VydmFudHMgdW50byB0aGVlIHRvIG1vcnJvdyBhYm91dCB0aGlzIHRpbWUsIGFuZCB0aGV5IHNoYWxsIHNlYXJjaCB0aGluZSBob3VzZSwgYW5kIHRoZSBob3VzZXMgb2YgdGh5IHNlcnZhbnRzOyBhbmQgaXQgc2hhbGwgYmUsIHRoYXQgd2hhdHNvZXZlciBpcyBwbGVhc2FudCBpbiB0aGluZSBleWVzLCB0aGV5IHNoYWxsIHB1dCBpdCBpbiB0aGVpciBoYW5kLCBhbmQgdGFrZSBpdCBhd2F5LgpUaGVuIHRoZSBraW5nIG9mIElzcmFlbCBjYWxsZWQgYWxsIHRoZSBlbGRlcnMgb2YgdGhlIGxhbmQsIGFuZCBzYWlkLCBNYXJrLCBJIHByYXkgeW91LCBhbmQgc2VlIGhvdyB0aGlzIG1hbiBzZWVrZXRoIG1pc2NoaWVmOiBmb3IgaGUgc2VudCB1bnRvIG1lIGZvciBteSB3aXZlcywgYW5kIGZvciBteSBjaGlsZHJlbiwgYW5kIGZvciBteSBzaWx2ZXIsIGFuZCBmb3IgbXkgZ29sZDsgYW5kIEkgZGVuaWVkIGhpbSBub3QuCkFuZCBhbGwgdGhlIGVsZGVycyBhbmQgYWxsIHRoZSBwZW9wbGUgc2FpZCB1bnRvIGhpbSwgSGVhcmtlbiBub3QgdW50byBoaW0sIG5vciBjb25zZW50LgpXaGVyZWZvcmUgaGUgc2FpZCB1bnRvIHRoZSBtZXNzZW5nZXJzIG9mIEJlbmhhZGFkLCBUZWxsIG15IGxvcmQgdGhlIGtpbmcsIEFsbCB0aGF0IHRob3UgZGlkc3Qgc2VuZCBmb3IgdG8gdGh5IHNlcnZhbnQgYXQgdGhlIGZpcnN0IEkgd2lsbCBkbzogYnV0IHRoaXMgdGhpbmcgSSBtYXkgbm90IGRvLiBBbmQgdGhlIG1lc3NlbmdlcnMgZGVwYXJ0ZWQsIGFuZCBicm91Z2h0IGhpbSB3b3JkIGFnYWluLgpBbmQgQmVuaGFkYWQgc2VudCB1bnRvIGhpbSwgYW5kIHNhaWQsIFRoZSBnb2RzIGRvIHNvIHVudG8gbWUsIGFuZCBtb3JlIGFsc28sIGlmIHRoZSBkdXN0IG9mIFNhbWFyaWEgc2hhbGwgc3VmZmljZSBmb3IgaGFuZGZ1bHMgZm9yIGFsbCB0aGUgcGVvcGxlIHRoYXQgZm9sbG93IG1lLgpBbmQgdGhlIGtpbmcgb2YgSXNyYWVsIGFuc3dlcmVkIGFuZCBzYWlkLCBUZWxsIGhpbSwgTGV0IG5vdCBoaW0gdGhhdCBnaXJkZXRoIG9uIGhpcyBoYXJuZXNzIGJvYXN0IGhpbXNlbGYgYXMgaGUgdGhhdCBwdXR0ZXRoIGl0IG9mZi4KQW5kIGl0IGNhbWUgdG8gcGFzcywgd2hlbiBCZW4taGFkYWQgaGVhcmQgdGhpcyBtZXNzYWdlLCBhcyBoZSB3YXMgZHJpbmtpbmcsIGhlIGFuZCB0aGUga2luZ3MgaW4gdGhlIHBhdmlsaW9ucywgdGhhdCBoZSBzYWlkIHVudG8gaGlzIHNlcnZhbnRzLCBTZXQgeW91cnNlbHZlcyBpbiBhcnJheS4gQW5kIHRoZXkgc2V0IHRoZW1zZWx2ZXMgaW4gYXJyYXkgYWdhaW5zdCB0aGUgY2l0eS4KQW5kLCBiZWhvbGQsIHRoZXJlIGNhbWUgYSBwcm9waGV0IHVudG8gQWhhYiBraW5nIG9mIElzcmFlbCwgc2F5aW5nLCBUaHVzIHNhaXRoIHRoZSBMT1JELCBIYXN0IHRob3Ugc2VlbiBhbGwgdGhpcyBncmVhdCBtdWx0aXR1ZGU/IGJlaG9sZCwgSSB3aWxsIGRlbGl2ZXIgaXQgaW50byB0aGluZSBoYW5kIHRoaXMgZGF5OyBhbmQgdGhvdSBzaGFsdCBrbm93IHRoYXQgSSBhbSB0aGUgTE9SRC4KQW5kIEFoYWIgc2FpZCwgQnkgd2hvbT8gQW5kIGhlIHNhaWQsIFRodXMgc2FpdGggdGhlIExPUkQsIEV2ZW4gYnkgdGhlIHlvdW5nIG1lbiBvZiB0aGUgcHJpbmNlcyBvZiB0aGUgcHJvdmluY2VzLiBUaGVuIGhlIHNhaWQsIFdobyBzaGFsbCBvcmRlciB0aGUgYmF0dGxlPyBBbmQgaGUgYW5zd2VyZWQsIFRob3UuClRoZW4gaGUgbnVtYmVyZWQgdGhlIHlvdW5nIG1lbiBvZiB0aGUgcHJpbmNlcyBvZiB0aGUgcHJvdmluY2VzLCBhbmQgdGhleSB3ZXJlIHR3byBodW5kcmVkIGFuZCB0aGlydHkgdHdvOiBhbmQgYWZ0ZXIgdGhlbSBoZSBudW1iZXJlZCBhbGwgdGhlIHBlb3BsZSwgZXZlbiBhbGwgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgYmVpbmcgc2V2ZW4gdGhvdXNhbmQuCkFuZCB0aGV5IHdlbnQgb3V0IGF0IG5vb24uIEJ1dCBCZW5oYWRhZCB3YXMgZHJpbmtpbmcgaGltc2VsZiBkcnVuayBpbiB0aGUgcGF2aWxpb25zLCBoZSBhbmQgdGhlIGtpbmdzLCB0aGUgdGhpcnR5IGFuZCB0d28ga2luZ3MgdGhhdCBoZWxwZWQgaGltLgpBbmQgdGhlIHlvdW5nIG1lbiBvZiB0aGUgcHJpbmNlcyBvZiB0aGUgcHJvdmluY2VzIHdlbnQgb3V0IGZpcnN0OyBhbmQgQmVuaGFkYWQgc2VudCBvdXQsIGFuZCB0aGV5IHRvbGQgaGltLCBzYXlpbmcsIFRoZXJlIGFyZSBtZW4gY29tZSBvdXQgb2YgU2FtYXJpYS4KQW5kIGhlIHNhaWQsIFdoZXRoZXIgdGhleSBiZSBjb21lIG91dCBmb3IgcGVhY2UsIHRha2UgdGhlbSBhbGl2ZTsgb3Igd2hldGhlciB0aGV5IGJlIGNvbWUgb3V0IGZvciB3YXIsIHRha2UgdGhlbSBhbGl2ZS4KU28gdGhlc2UgeW91bmcgbWVuIG9mIHRoZSBwcmluY2VzIG9mIHRoZSBwcm92aW5jZXMgY2FtZSBvdXQgb2YgdGhlIGNpdHksIGFuZCB0aGUgYXJteSB3aGljaCBmb2xsb3dlZCB0aGVtLgpBbmQgdGhleSBzbGV3IGV2ZXJ5IG9uZSBoaXMgbWFuOiBhbmQgdGhlIFN5cmlhbnMgZmxlZDsgYW5kIElzcmFlbCBwdXJzdWVkIHRoZW06IGFuZCBCZW5oYWRhZCB0aGUga2luZyBvZiBTeXJpYSBlc2NhcGVkIG9uIGFuIGhvcnNlIHdpdGggdGhlIGhvcnNlbWVuLgpBbmQgdGhlIGtpbmcgb2YgSXNyYWVsIHdlbnQgb3V0LCBhbmQgc21vdGUgdGhlIGhvcnNlcyBhbmQgY2hhcmlvdHMsIGFuZCBzbGV3IHRoZSBTeXJpYW5zIHdpdGggYSBncmVhdCBzbGF1Z2h0ZXIuCkFuZCB0aGUgcHJvcGhldCBjYW1lIHRvIHRoZSBraW5nIG9mIElzcmFlbCwgYW5kIHNhaWQgdW50byBoaW0sIEdvLCBzdHJlbmd0aGVuIHRoeXNlbGYsIGFuZCBtYXJrLCBhbmQgc2VlIHdoYXQgdGhvdSBkb2VzdDogZm9yIGF0IHRoZSByZXR1cm4gb2YgdGhlIHllYXIgdGhlIGtpbmcgb2YgU3lyaWEgd2lsbCBjb21lIHVwIGFnYWluc3QgdGhlZS4KQW5kIHRoZSBzZXJ2YW50cyBvZiB0aGUga2luZyBvZiBTeXJpYSBzYWlkIHVudG8gaGltLCBUaGVpciBnb2RzIGFyZSBnb2RzIG9mIHRoZSBoaWxsczsgdGhlcmVmb3JlIHRoZXkgd2VyZSBzdHJvbmdlciB0aGFuIHdlOyBidXQgbGV0IHVzIGZpZ2h0IGFnYWluc3QgdGhlbSBpbiB0aGUgcGxhaW4sIGFuZCBzdXJlbHkgd2Ugc2hhbGwgYmUgc3Ryb25nZXIgdGhhbiB0aGV5LgpBbmQgZG8gdGhpcyB0aGluZywgVGFrZSB0aGUga2luZ3MgYXdheSwgZXZlcnkgbWFuIG91dCBvZiBoaXMgcGxhY2UsIGFuZCBwdXQgY2FwdGFpbnMgaW4gdGhlaXIgcm9vbXM6CkFuZCBudW1iZXIgdGhlZSBhbiBhcm15LCBsaWtlIHRoZSBhcm15IHRoYXQgdGhvdSBoYXN0IGxvc3QsIGhvcnNlIGZvciBob3JzZSwgYW5kIGNoYXJpb3QgZm9yIGNoYXJpb3Q6IGFuZCB3ZSB3aWxsIGZpZ2h0IGFnYWluc3QgdGhlbSBpbiB0aGUgcGxhaW4sIGFuZCBzdXJlbHkgd2Ugc2hhbGwgYmUgc3Ryb25nZXIgdGhhbiB0aGV5LiBBbmQgaGUgaGVhcmtlbmVkIHVudG8gdGhlaXIgdm9pY2UsIGFuZCBkaWQgc28uCkFuZCBpdCBjYW1lIHRvIHBhc3MgYXQgdGhlIHJldHVybiBvZiB0aGUgeWVhciwgdGhhdCBCZW5oYWRhZCBudW1iZXJlZCB0aGUgU3lyaWFucywgYW5kIHdlbnQgdXAgdG8gQXBoZWssIHRvIGZpZ2h0IGFnYWluc3QgSXNyYWVsLgpBbmQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCB3ZXJlIG51bWJlcmVkLCBhbmQgd2VyZSBhbGwgcHJlc2VudCwgYW5kIHdlbnQgYWdhaW5zdCB0aGVtOiBhbmQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBwaXRjaGVkIGJlZm9yZSB0aGVtIGxpa2UgdHdvIGxpdHRsZSBmbG9ja3Mgb2Yga2lkczsgYnV0IHRoZSBTeXJpYW5zIGZpbGxlZCB0aGUgY291bnRyeS4KQW5kIHRoZXJlIGNhbWUgYSBtYW4gb2YgR29kLCBhbmQgc3Bha2UgdW50byB0aGUga2luZyBvZiBJc3JhZWwsIGFuZCBzYWlkLCBUaHVzIHNhaXRoIHRoZSBMT1JELCBCZWNhdXNlIHRoZSBTeXJpYW5zIGhhdmUgc2FpZCwgVGhlIExPUkQgaXMgR29kIG9mIHRoZSBoaWxscywgYnV0IGhlIGlzIG5vdCBHb2Qgb2YgdGhlIHZhbGxleXMsIHRoZXJlZm9yZSB3aWxsIEkgZGVsaXZlciBhbGwgdGhpcyBncmVhdCBtdWx0aXR1ZGUgaW50byB0aGluZSBoYW5kLCBhbmQgeWUgc2hhbGwga25vdyB0aGF0IEkgYW0gdGhlIExPUkQuCkFuZCB0aGV5IHBpdGNoZWQgb25lIG92ZXIgYWdhaW5zdCB0aGUgb3RoZXIgc2V2ZW4gZGF5cy4gQW5kIHNvIGl0IHdhcywgdGhhdCBpbiB0aGUgc2V2ZW50aCBkYXkgdGhlIGJhdHRsZSB3YXMgam9pbmVkOiBhbmQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBzbGV3IG9mIHRoZSBTeXJpYW5zIGFuIGh1bmRyZWQgdGhvdXNhbmQgZm9vdG1lbiBpbiBvbmUgZGF5LgpCdXQgdGhlIHJlc3QgZmxlZCB0byBBcGhlaywgaW50byB0aGUgY2l0eTsgYW5kIHRoZXJlIGEgd2FsbCBmZWxsIHVwb24gdHdlbnR5IGFuZCBzZXZlbiB0aG91c2FuZCBvZiB0aGUgbWVuIHRoYXQgd2VyZSBsZWZ0LiBBbmQgQmVuaGFkYWQgZmxlZCwgYW5kIGNhbWUgaW50byB0aGUgY2l0eSwgaW50byBhbiBpbm5lciBjaGFtYmVyLgpBbmQgaGlzIHNlcnZhbnRzIHNhaWQgdW50byBoaW0sIEJlaG9sZCBub3csIHdlIGhhdmUgaGVhcmQgdGhhdCB0aGUga2luZ3Mgb2YgdGhlIGhvdXNlIG9mIElzcmFlbCBhcmUgbWVyY2lmdWwga2luZ3M6IGxldCB1cywgSSBwcmF5IHRoZWUsIHB1dCBzYWNrY2xvdGggb24gb3VyIGxvaW5zLCBhbmQgcm9wZXMgdXBvbiBvdXIgaGVhZHMsIGFuZCBnbyBvdXQgdG8gdGhlIGtpbmcgb2YgSXNyYWVsOiBwZXJhZHZlbnR1cmUgaGUgd2lsbCBzYXZlIHRoeSBsaWZlLgpTbyB0aGV5IGdpcmRlZCBzYWNrY2xvdGggb24gdGhlaXIgbG9pbnMsIGFuZCBwdXQgcm9wZXMgb24gdGhlaXIgaGVhZHMsIGFuZCBjYW1lIHRvIHRoZSBraW5nIG9mIElzcmFlbCwgYW5kIHNhaWQsIFRoeSBzZXJ2YW50IEJlbmhhZGFkIHNhaXRoLCBJIHByYXkgdGhlZSwgbGV0IG1lIGxpdmUuIEFuZCBoZSBzYWlkLCBJcyBoZSB5ZXQgYWxpdmU/IGhlIGlzIG15IGJyb3RoZXIuCk5vdyB0aGUgbWVuIGRpZCBkaWxpZ2VudGx5IG9ic2VydmUgd2hldGhlciBhbnkgdGhpbmcgd291bGQgY29tZSBmcm9tIGhpbSwgYW5kIGRpZCBoYXN0aWx5IGNhdGNoIGl0OiBhbmQgdGhleSBzYWlkLCBUaHkgYnJvdGhlciBCZW5oYWRhZC4gVGhlbiBoZSBzYWlkLCBHbyB5ZSwgYnJpbmcgaGltLiBUaGVuIEJlbmhhZGFkIGNhbWUgZm9ydGggdG8gaGltOyBhbmQgaGUgY2F1c2VkIGhpbSB0byBjb21lIHVwIGludG8gdGhlIGNoYXJpb3QuCkFuZCBCZW4taGFkYWQgc2FpZCB1bnRvIGhpbSwgVGhlIGNpdGllcywgd2hpY2ggbXkgZmF0aGVyIHRvb2sgZnJvbSB0aHkgZmF0aGVyLCBJIHdpbGwgcmVzdG9yZTsgYW5kIHRob3Ugc2hhbHQgbWFrZSBzdHJlZXRzIGZvciB0aGVlIGluIERhbWFzY3VzLCBhcyBteSBmYXRoZXIgbWFkZSBpbiBTYW1hcmlhLiBUaGVuIHNhaWQgQWhhYiwgSSB3aWxsIHNlbmQgdGhlZSBhd2F5IHdpdGggdGhpcyBjb3ZlbmFudC4gU28gaGUgbWFkZSBhIGNvdmVuYW50IHdpdGggaGltLCBhbmQgc2VudCBoaW0gYXdheS4KQW5kIGEgY2VydGFpbiBtYW4gb2YgdGhlIHNvbnMgb2YgdGhlIHByb3BoZXRzIHNhaWQgdW50byBoaXMgbmVpZ2hib3VyIGluIHRoZSB3b3JkIG9mIHRoZSBMT1JELCBTbWl0ZSBtZSwgSSBwcmF5IHRoZWUuIEFuZCB0aGUgbWFuIHJlZnVzZWQgdG8gc21pdGUgaGltLgpUaGVuIHNhaWQgaGUgdW50byBoaW0sIEJlY2F1c2UgdGhvdSBoYXN0IG5vdCBvYmV5ZWQgdGhlIHZvaWNlIG9mIHRoZSBMT1JELCBiZWhvbGQsIGFzIHNvb24gYXMgdGhvdSBhcnQgZGVwYXJ0ZWQgZnJvbSBtZSwgYSBsaW9uIHNoYWxsIHNsYXkgdGhlZS4gQW5kIGFzIHNvb24gYXMgaGUgd2FzIGRlcGFydGVkIGZyb20gaGltLCBhIGxpb24gZm91bmQgaGltLCBhbmQgc2xldyBoaW0uClRoZW4gaGUgZm91bmQgYW5vdGhlciBtYW4sIGFuZCBzYWlkLCBTbWl0ZSBtZSwgSSBwcmF5IHRoZWUuIEFuZCB0aGUgbWFuIHNtb3RlIGhpbSwgc28gdGhhdCBpbiBzbWl0aW5nIGhlIHdvdW5kZWQgaGltLgpTbyB0aGUgcHJvcGhldCBkZXBhcnRlZCwgYW5kIHdhaXRlZCBmb3IgdGhlIGtpbmcgYnkgdGhlIHdheSwgYW5kIGRpc2d1aXNlZCBoaW1zZWxmIHdpdGggYXNoZXMgdXBvbiBoaXMgZmFjZS4KQW5kIGFzIHRoZSBraW5nIHBhc3NlZCBieSwgaGUgY3JpZWQgdW50byB0aGUga2luZzogYW5kIGhlIHNhaWQsIFRoeSBzZXJ2YW50IHdlbnQgb3V0IGludG8gdGhlIG1pZHN0IG9mIHRoZSBiYXR0bGU7IGFuZCwgYmVob2xkLCBhIG1hbiB0dXJuZWQgYXNpZGUsIGFuZCBicm91Z2h0IGEgbWFuIHVudG8gbWUsIGFuZCBzYWlkLCBLZWVwIHRoaXMgbWFuOiBpZiBieSBhbnkgbWVhbnMgaGUgYmUgbWlzc2luZywgdGhlbiBzaGFsbCB0aHkgbGlmZSBiZSBmb3IgaGlzIGxpZmUsIG9yIGVsc2UgdGhvdSBzaGFsdCBwYXkgYSB0YWxlbnQgb2Ygc2lsdmVyLgpBbmQgYXMgdGh5IHNlcnZhbnQgd2FzIGJ1c3kgaGVyZSBhbmQgdGhlcmUsIGhlIHdhcyBnb25lLiBBbmQgdGhlIGtpbmcgb2YgSXNyYWVsIHNhaWQgdW50byBoaW0sIFNvIHNoYWxsIHRoeSBqdWRnbWVudCBiZTsgdGh5c2VsZiBoYXN0IGRlY2lkZWQgaXQuCkFuZCBoZSBoYXN0ZWQsIGFuZCB0b29rIHRoZSBhc2hlcyBhd2F5IGZyb20gaGlzIGZhY2U7IGFuZCB0aGUga2luZyBvZiBJc3JhZWwgZGlzY2VybmVkIGhpbSB0aGF0IGhlIHdhcyBvZiB0aGUgcHJvcGhldHMuCkFuZCBoZSBzYWlkIHVudG8gaGltLCBUaHVzIHNhaXRoIHRoZSBMT1JELCBCZWNhdXNlIHRob3UgaGFzdCBsZXQgZ28gb3V0IG9mIHRoeSBoYW5kIGEgbWFuIHdob20gSSBhcHBvaW50ZWQgdG8gdXR0ZXIgZGVzdHJ1Y3Rpb24sIHRoZXJlZm9yZSB0aHkgbGlmZSBzaGFsbCBnbyBmb3IgaGlzIGxpZmUsIGFuZCB0aHkgcGVvcGxlIGZvciBoaXMgcGVvcGxlLgpBbmQgdGhlIGtpbmcgb2YgSXNyYWVsIHdlbnQgdG8gaGlzIGhvdXNlIGhlYXZ5IGFuZCBkaXNwbGVhc2VkLCBhbmQgY2FtZSB0byBTYW1hcmlhLgpBbmQgaXQgY2FtZSB0byBwYXNzIGFmdGVyIHRoZXNlIHRoaW5ncywgdGhhdCBOYWJvdGggdGhlIEplenJlZWxpdGUgaGFkIGEgdmluZXlhcmQsIHdoaWNoIHdhcyBpbiBKZXpyZWVsLCBoYXJkIGJ5IHRoZSBwYWxhY2Ugb2YgQWhhYiBraW5nIG9mIFNhbWFyaWEuCkFuZCBBaGFiIHNwYWtlIHVudG8gTmFib3RoLCBzYXlpbmcsIEdpdmUgbWUgdGh5IHZpbmV5YXJkLCB0aGF0IEkgbWF5IGhhdmUgaXQgZm9yIGEgZ2FyZGVuIG9mIGhlcmJzLCBiZWNhdXNlIGl0IGlzIG5lYXIgdW50byBteSBob3VzZTogYW5kIEkgd2lsbCBnaXZlIHRoZWUgZm9yIGl0IGEgYmV0dGVyIHZpbmV5YXJkIHRoYW4gaXQ7IG9yLCBpZiBpdCBzZWVtIGdvb2QgdG8gdGhlZSwgSSB3aWxsIGdpdmUgdGhlZSB0aGUgd29ydGggb2YgaXQgaW4gbW9uZXkuCkFuZCBOYWJvdGggc2FpZCB0byBBaGFiLCBUaGUgTE9SRCBmb3JiaWQgaXQgbWUsIHRoYXQgSSBzaG91bGQgZ2l2ZSB0aGUgaW5oZXJpdGFuY2Ugb2YgbXkgZmF0aGVycyB1bnRvIHRoZWUuCkFuZCBBaGFiIGNhbWUgaW50byBoaXMgaG91c2UgaGVhdnkgYW5kIGRpc3BsZWFzZWQgYmVjYXVzZSBvZiB0aGUgd29yZCB3aGljaCBOYWJvdGggdGhlIEplenJlZWxpdGUgaGFkIHNwb2tlbiB0byBoaW06IGZvciBoZSBoYWQgc2FpZCwgSSB3aWxsIG5vdCBnaXZlIHRoZWUgdGhlIGluaGVyaXRhbmNlIG9mIG15IGZhdGhlcnMuIEFuZCBoZSBsYWlkIGhpbSBkb3duIHVwb24gaGlzIGJlZCwgYW5kIHR1cm5lZCBhd2F5IGhpcyBmYWNlLCBhbmQgd291bGQgZWF0IG5vIGJyZWFkLgpCdXQgSmV6ZWJlbCBoaXMgd2lmZSBjYW1lIHRvIGhpbSwgYW5kIHNhaWQgdW50byBoaW0sIFdoeSBpcyB0aHkgc3Bpcml0IHNvIHNhZCwgdGhhdCB0aG91IGVhdGVzdCBubyBicmVhZD8KQW5kIGhlIHNhaWQgdW50byBoZXIsIEJlY2F1c2UgSSBzcGFrZSB1bnRvIE5hYm90aCB0aGUgSmV6cmVlbGl0ZSwgYW5kIHNhaWQgdW50byBoaW0sIEdpdmUgbWUgdGh5IHZpbmV5YXJkIGZvciBtb25leTsgb3IgZWxzZSwgaWYgaXQgcGxlYXNlIHRoZWUsIEkgd2lsbCBnaXZlIHRoZWUgYW5vdGhlciB2aW5leWFyZCBmb3IgaXQ6IGFuZCBoZSBhbnN3ZXJlZCwgSSB3aWxsIG5vdCBnaXZlIHRoZWUgbXkgdmluZXlhcmQuCkFuZCBKZXplYmVsIGhpcyB3aWZlIHNhaWQgdW50byBoaW0sIERvc3QgdGhvdSBub3cgZ292ZXJuIHRoZSBraW5nZG9tIG9mIElzcmFlbD8gYXJpc2UsIGFuZCBlYXQgYnJlYWQsIGFuZCBsZXQgdGhpbmUgaGVhcnQgYmUgbWVycnk6IEkgd2lsbCBnaXZlIHRoZWUgdGhlIHZpbmV5YXJkIG9mIE5hYm90aCB0aGUgSmV6cmVlbGl0ZS4KU28gc2hlIHdyb3RlIGxldHRlcnMgaW4gQWhhYidzIG5hbWUsIGFuZCBzZWFsZWQgdGhlbSB3aXRoIGhpcyBzZWFsLCBhbmQgc2VudCB0aGUgbGV0dGVycyB1bnRvIHRoZSBlbGRlcnMgYW5kIHRvIHRoZSBub2JsZXMgdGhhdCB3ZXJlIGluIGhpcyBjaXR5LCBkd2VsbGluZyB3aXRoIE5hYm90aC4KQW5kIHNoZSB3cm90ZSBpbiB0aGUgbGV0dGVycywgc2F5aW5nLCBQcm9jbGFpbSBhIGZhc3QsIGFuZCBzZXQgTmFib3RoIG9uIGhpZ2ggYW1vbmcgdGhlIHBlb3BsZToKQW5kIHNldCB0d28gbWVuLCBzb25zIG9mIEJlbGlhbCwgYmVmb3JlIGhpbSwgdG8gYmVhciB3aXRuZXNzIGFnYWluc3QgaGltLCBzYXlpbmcsIFRob3UgZGlkc3QgYmxhc3BoZW1lIEdvZCBhbmQgdGhlIGtpbmcuIEFuZCB0aGVuIGNhcnJ5IGhpbSBvdXQsIGFuZCBzdG9uZSBoaW0sIHRoYXQgaGUgbWF5IGRpZS4KQW5kIHRoZSBtZW4gb2YgaGlzIGNpdHksIGV2ZW4gdGhlIGVsZGVycyBhbmQgdGhlIG5vYmxlcyB3aG8gd2VyZSB0aGUgaW5oYWJpdGFudHMgaW4gaGlzIGNpdHksIGRpZCBhcyBKZXplYmVsIGhhZCBzZW50IHVudG8gdGhlbSwgYW5kIGFzIGl0IHdhcyB3cml0dGVuIGluIHRoZSBsZXR0ZXJzIHdoaWNoIHNoZSBoYWQgc2VudCB1bnRvIHRoZW0uClRoZXkgcHJvY2xhaW1lZCBhIGZhc3QsIGFuZCBzZXQgTmFib3RoIG9uIGhpZ2ggYW1vbmcgdGhlIHBlb3BsZS4KQW5kIHRoZXJlIGNhbWUgaW4gdHdvIG1lbiwgY2hpbGRyZW4gb2YgQmVsaWFsLCBhbmQgc2F0IGJlZm9yZSBoaW06IGFuZCB0aGUgbWVuIG9mIEJlbGlhbCB3aXRuZXNzZWQgYWdhaW5zdCBoaW0sIGV2ZW4gYWdhaW5zdCBOYWJvdGgsIGluIHRoZSBwcmVzZW5jZSBvZiB0aGUgcGVvcGxlLCBzYXlpbmcsIE5hYm90aCBkaWQgYmxhc3BoZW1lIEdvZCBhbmQgdGhlIGtpbmcuIFRoZW4gdGhleSBjYXJyaWVkIGhpbSBmb3J0aCBvdXQgb2YgdGhlIGNpdHksIGFuZCBzdG9uZWQgaGltIHdpdGggc3RvbmVzLCB0aGF0IGhlIGRpZWQuClRoZW4gdGhleSBzZW50IHRvIEplemViZWwsIHNheWluZywgTmFib3RoIGlzIHN0b25lZCwgYW5kIGlzIGRlYWQuCkFuZCBpdCBjYW1lIHRvIHBhc3MsIHdoZW4gSmV6ZWJlbCBoZWFyZCB0aGF0IE5hYm90aCB3YXMgc3RvbmVkLCBhbmQgd2FzIGRlYWQsIHRoYXQgSmV6ZWJlbCBzYWlkIHRvIEFoYWIsIEFyaXNlLCB0YWtlIHBvc3Nlc3Npb24gb2YgdGhlIHZpbmV5YXJkIG9mIE5hYm90aCB0aGUgSmV6cmVlbGl0ZSwgd2hpY2ggaGUgcmVmdXNlZCB0byBnaXZlIHRoZWUgZm9yIG1vbmV5OiBmb3IgTmFib3RoIGlzIG5vdCBhbGl2ZSwgYnV0IGRlYWQuCkFuZCBpdCBjYW1lIHRvIHBhc3MsIHdoZW4gQWhhYiBoZWFyZCB0aGF0IE5hYm90aCB3YXMgZGVhZCwgdGhhdCBBaGFiIHJvc2UgdXAgdG8gZ28gZG93biB0byB0aGUgdmluZXlhcmQgb2YgTmFib3RoIHRoZSBKZXpyZWVsaXRlLCB0byB0YWtlIHBvc3Nlc3Npb24gb2YgaXQuCkFuZCB0aGUgd29yZCBvZiB0aGUgTE9SRCBjYW1lIHRvIEVsaWphaCB0aGUgVGlzaGJpdGUsIHNheWluZywKQXJpc2UsIGdvIGRvd24gdG8gbWVldCBBaGFiIGtpbmcgb2YgSXNyYWVsLCB3aGljaCBpcyBpbiBTYW1hcmlhOiBiZWhvbGQsIGhlIGlzIGluIHRoZSB2aW5leWFyZCBvZiBOYWJvdGgsIHdoaXRoZXIgaGUgaXMgZ29uZSBkb3duIHRvIHBvc3Nlc3MgaXQuCkFuZCB0aG91IHNoYWx0IHNwZWFrIHVudG8gaGltLCBzYXlpbmcsIFRodXMgc2FpdGggdGhlIExPUkQsIEhhc3QgdGhvdSBraWxsZWQsIGFuZCBhbHNvIHRha2VuIHBvc3Nlc3Npb24/IEFuZCB0aG91IHNoYWx0IHNwZWFrIHVudG8gaGltLCBzYXlpbmcsIFRodXMgc2FpdGggdGhlIExPUkQsIEluIHRoZSBwbGFjZSB3aGVyZSBkb2dzIGxpY2tlZCB0aGUgYmxvb2Qgb2YgTmFib3RoIHNoYWxsIGRvZ3MgbGljayB0aHkgYmxvb2QsIGV2ZW4gdGhpbmUuCkFuZCBBaGFiIHNhaWQgdG8gRWxpamFoLCBIYXN0IHRob3UgZm91bmQgbWUsIE8gbWluZSBlbmVteT8gQW5kIGhlIGFuc3dlcmVkLCBJIGhhdmUgZm91bmQgdGhlZTogYmVjYXVzZSB0aG91IGhhc3Qgc29sZCB0aHlzZWxmIHRvIHdvcmsgZXZpbCBpbiB0aGUgc2lnaHQgb2YgdGhlIExPUkQuCkJlaG9sZCwgSSB3aWxsIGJyaW5nIGV2aWwgdXBvbiB0aGVlLCBhbmQgd2lsbCB0YWtlIGF3YXkgdGh5IHBvc3Rlcml0eSwgYW5kIHdpbGwgY3V0IG9mZiBmcm9tIEFoYWIgaGltIHRoYXQgcGlzc2V0aCBhZ2FpbnN0IHRoZSB3YWxsLCBhbmQgaGltIHRoYXQgaXMgc2h1dCB1cCBhbmQgbGVmdCBpbiBJc3JhZWwsCkFuZCB3aWxsIG1ha2UgdGhpbmUgaG91c2UgbGlrZSB0aGUgaG91c2Ugb2YgSmVyb2JvYW0gdGhlIHNvbiBvZiBOZWJhdCwgYW5kIGxpa2UgdGhlIGhvdXNlIG9mIEJhYXNoYSB0aGUgc29uIG9mIEFoaWphaCwgZm9yIHRoZSBwcm92b2NhdGlvbiB3aGVyZXdpdGggdGhvdSBoYXN0IHByb3Zva2VkIG1lIHRvIGFuZ2VyLCBhbmQgbWFkZSBJc3JhZWwgdG8gc2luLgpBbmQgb2YgSmV6ZWJlbCBhbHNvIHNwYWtlIHRoZSBMT1JELCBzYXlpbmcsIFRoZSBkb2dzIHNoYWxsIGVhdCBKZXplYmVsIGJ5IHRoZSB3YWxsIG9mIEplenJlZWwuCkhpbSB0aGF0IGRpZXRoIG9mIEFoYWIgaW4gdGhlIGNpdHkgdGhlIGRvZ3Mgc2hhbGwgZWF0OyBhbmQgaGltIHRoYXQgZGlldGggaW4gdGhlIGZpZWxkIHNoYWxsIHRoZSBmb3dscyBvZiB0aGUgYWlyIGVhdC4KQnV0IHRoZXJlIHdhcyBub25lIGxpa2UgdW50byBBaGFiLCB3aGljaCBkaWQgc2VsbCBoaW1zZWxmIHRvIHdvcmsgd2lja2VkbmVzcyBpbiB0aGUgc2lnaHQgb2YgdGhlIExPUkQsIHdob20gSmV6ZWJlbCBoaXMgd2lmZSBzdGlycmVkIHVwLgpBbmQgaGUgZGlkIHZlcnkgYWJvbWluYWJseSBpbiBmb2xsb3dpbmcgaWRvbHMsIGFjY29yZGluZyB0byBhbGwgdGhpbmdzIGFzIGRpZCB0aGUgQW1vcml0ZXMsIHdob20gdGhlIExPUkQgY2FzdCBvdXQgYmVmb3JlIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwuCkFuZCBpdCBjYW1lIHRvIHBhc3MsIHdoZW4gQWhhYiBoZWFyZCB0aG9zZSB3b3JkcywgdGhhdCBoZSByZW50IGhpcyBjbG90aGVzLCBhbmQgcHV0IHNhY2tjbG90aCB1cG9uIGhpcyBmbGVzaCwgYW5kIGZhc3RlZCwgYW5kIGxheSBpbiBzYWNrY2xvdGgsIGFuZCB3ZW50IHNvZnRseS4KQW5kIHRoZSB3b3JkIG9mIHRoZSBMT1JEIGNhbWUgdG8gRWxpamFoIHRoZSBUaXNoYml0ZSwgc2F5aW5nLApTZWVzdCB0aG91IGhvdyBBaGFiIGh1bWJsZXRoIGhpbXNlbGYgYmVmb3JlIG1lPyBiZWNhdXNlIGhlIGh1bWJsZXRoIGhpbXNlbGYgYmVmb3JlIG1lLCBJIHdpbGwgbm90IGJyaW5nIHRoZSBldmlsIGluIGhpcyBkYXlzOiBidXQgaW4gaGlzIHNvbidzIGRheXMgd2lsbCBJIGJyaW5nIHRoZSBldmlsIHVwb24gaGlzIGhvdXNlLgpBbmQgdGhleSBjb250aW51ZWQgdGhyZWUgeWVhcnMgd2l0aG91dCB3YXIgYmV0d2VlbiBTeXJpYSBhbmQgSXNyYWVsLgpBbmQgaXQgY2FtZSB0byBwYXNzIGluIHRoZSB0aGlyZCB5ZWFyLCB0aGF0IEplaG9zaGFwaGF0IHRoZSBraW5nIG9mIEp1ZGFoIGNhbWUgZG93biB0byB0aGUga2luZyBvZiBJc3JhZWwuCkFuZCB0aGUga2luZyBvZiBJc3JhZWwgc2FpZCB1bnRvIGhpcyBzZXJ2YW50cywgS25vdyB5ZSB0aGF0IFJhbW90aCBpbiBHaWxlYWQgaXMgb3VycywgYW5kIHdlIGJlIHN0aWxsLCBhbmQgdGFrZSBpdCBub3Qgb3V0IG9mIHRoZSBoYW5kIG9mIHRoZSBraW5nIG9mIFN5cmlhPwpBbmQgaGUgc2FpZCB1bnRvIEplaG9zaGFwaGF0LCBXaWx0IHRob3UgZ28gd2l0aCBtZSB0byBiYXR0bGUgdG8gUmFtb3RoZ2lsZWFkPyBBbmQgSmVob3NoYXBoYXQgc2FpZCB0byB0aGUga2luZyBvZiBJc3JhZWwsIEkgYW0gYXMgdGhvdSBhcnQsIG15IHBlb3BsZSBhcyB0aHkgcGVvcGxlLCBteSBob3JzZXMgYXMgdGh5IGhvcnNlcy4KQW5kIEplaG9zaGFwaGF0IHNhaWQgdW50byB0aGUga2luZyBvZiBJc3JhZWwsIEVucXVpcmUsIEkgcHJheSB0aGVlLCBhdCB0aGUgd29yZCBvZiB0aGUgTE9SRCB0byBkYXkuClRoZW4gdGhlIGtpbmcgb2YgSXNyYWVsIGdhdGhlcmVkIHRoZSBwcm9waGV0cyB0b2dldGhlciwgYWJvdXQgZm91ciBodW5kcmVkIG1lbiwgYW5kIHNhaWQgdW50byB0aGVtLCBTaGFsbCBJIGdvIGFnYWluc3QgUmFtb3RoZ2lsZWFkIHRvIGJhdHRsZSwgb3Igc2hhbGwgSSBmb3JiZWFyPyBBbmQgdGhleSBzYWlkLCBHbyB1cDsgZm9yIHRoZSBMT1JEIHNoYWxsIGRlbGl2ZXIgaXQgaW50byB0aGUgaGFuZCBvZiB0aGUga2luZy4KQW5kIEplaG9zaGFwaGF0IHNhaWQsIElzIHRoZXJlIG5vdCBoZXJlIGEgcHJvcGhldCBvZiB0aGUgTE9SRCBiZXNpZGVzLCB0aGF0IHdlIG1pZ2h0IGVucXVpcmUgb2YgaGltPwpBbmQgdGhlIGtpbmcgb2YgSXNyYWVsIHNhaWQgdW50byBKZWhvc2hhcGhhdCwgVGhlcmUgaXMgeWV0IG9uZSBtYW4sIE1pY2FpYWggdGhlIHNvbiBvZiBJbWxhaCwgYnkgd2hvbSB3ZSBtYXkgZW5xdWlyZSBvZiB0aGUgTE9SRDogYnV0IEkgaGF0ZSBoaW07IGZvciBoZSBkb3RoIG5vdCBwcm9waGVzeSBnb29kIGNvbmNlcm5pbmcgbWUsIGJ1dCBldmlsLiBBbmQgSmVob3NoYXBoYXQgc2FpZCwgTGV0IG5vdCB0aGUga2luZyBzYXkgc28uClRoZW4gdGhlIGtpbmcgb2YgSXNyYWVsIGNhbGxlZCBhbiBvZmZpY2VyLCBhbmQgc2FpZCwgSGFzdGVuIGhpdGhlciBNaWNhaWFoIHRoZSBzb24gb2YgSW1sYWguCkFuZCB0aGUga2luZyBvZiBJc3JhZWwgYW5kIEplaG9zaGFwaGF0IHRoZSBraW5nIG9mIEp1ZGFoIHNhdCBlYWNoIG9uIGhpcyB0aHJvbmUsIGhhdmluZyBwdXQgb24gdGhlaXIgcm9iZXMsIGluIGEgdm9pZCBwbGFjZSBpbiB0aGUgZW50cmFuY2Ugb2YgdGhlIGdhdGUgb2YgU2FtYXJpYTsgYW5kIGFsbCB0aGUgcHJvcGhldHMgcHJvcGhlc2llZCBiZWZvcmUgdGhlbS4KQW5kIFplZGVraWFoIHRoZSBzb24gb2YgQ2hlbmFhbmFoIG1hZGUgaGltIGhvcm5zIG9mIGlyb246IGFuZCBoZSBzYWlkLCBUaHVzIHNhaXRoIHRoZSBMT1JELCBXaXRoIHRoZXNlIHNoYWx0IHRob3UgcHVzaCB0aGUgU3lyaWFucywgdW50aWwgdGhvdSBoYXZlIGNvbnN1bWVkIHRoZW0uCkFuZCBhbGwgdGhlIHByb3BoZXRzIHByb3BoZXNpZWQgc28sIHNheWluZywgR28gdXAgdG8gUmFtb3RoZ2lsZWFkLCBhbmQgcHJvc3BlcjogZm9yIHRoZSBMT1JEIHNoYWxsIGRlbGl2ZXIgaXQgaW50byB0aGUga2luZydzIGhhbmQuCkFuZCB0aGUgbWVzc2VuZ2VyIHRoYXQgd2FzIGdvbmUgdG8gY2FsbCBNaWNhaWFoIHNwYWtlIHVudG8gaGltLCBzYXlpbmcsIEJlaG9sZCBub3csIHRoZSB3b3JkcyBvZiB0aGUgcHJvcGhldHMgZGVjbGFyZSBnb29kIHVudG8gdGhlIGtpbmcgd2l0aCBvbmUgbW91dGg6IGxldCB0aHkgd29yZCwgSSBwcmF5IHRoZWUsIGJlIGxpa2UgdGhlIHdvcmQgb2Ygb25lIG9mIHRoZW0sIGFuZCBzcGVhayB0aGF0IHdoaWNoIGlzIGdvb2QuCkFuZCBNaWNhaWFoIHNhaWQsIEFzIHRoZSBMT1JEIGxpdmV0aCwgd2hhdCB0aGUgTE9SRCBzYWl0aCB1bnRvIG1lLCB0aGF0IHdpbGwgSSBzcGVhay4KU28gaGUgY2FtZSB0byB0aGUga2luZy4gQW5kIHRoZSBraW5nIHNhaWQgdW50byBoaW0sIE1pY2FpYWgsIHNoYWxsIHdlIGdvIGFnYWluc3QgUmFtb3RoZ2lsZWFkIHRvIGJhdHRsZSwgb3Igc2hhbGwgd2UgZm9yYmVhcj8gQW5kIGhlIGFuc3dlcmVkIGhpbSwgR28sIGFuZCBwcm9zcGVyOiBmb3IgdGhlIExPUkQgc2hhbGwgZGVsaXZlciBpdCBpbnRvIHRoZSBoYW5kIG9mIHRoZSBraW5nLgpBbmQgdGhlIGtpbmcgc2FpZCB1bnRvIGhpbSwgSG93IG1hbnkgdGltZXMgc2hhbGwgSSBhZGp1cmUgdGhlZSB0aGF0IHRob3UgdGVsbCBtZSBub3RoaW5nIGJ1dCB0aGF0IHdoaWNoIGlzIHRydWUgaW4gdGhlIG5hbWUgb2YgdGhlIExPUkQ/CkFuZCBoZSBzYWlkLCBJIHNhdyBhbGwgSXNyYWVsIHNjYXR0ZXJlZCB1cG9uIHRoZSBoaWxscywgYXMgc2hlZXAgdGhhdCBoYXZlIG5vdCBhIHNoZXBoZXJkOiBhbmQgdGhlIExPUkQgc2FpZCwgVGhlc2UgaGF2ZSBubyBtYXN0ZXI6IGxldCB0aGVtIHJldHVybiBldmVyeSBtYW4gdG8gaGlzIGhvdXNlIGluIHBlYWNlLgpBbmQgdGhlIGtpbmcgb2YgSXNyYWVsIHNhaWQgdW50byBKZWhvc2hhcGhhdCwgRGlkIEkgbm90IHRlbGwgdGhlZSB0aGF0IGhlIHdvdWxkIHByb3BoZXN5IG5vIGdvb2QgY29uY2VybmluZyBtZSwgYnV0IGV2aWw/CkFuZCBoZSBzYWlkLCBIZWFyIHRob3UgdGhlcmVmb3JlIHRoZSB3b3JkIG9mIHRoZSBMT1JEOiBJIHNhdyB0aGUgTE9SRCBzaXR0aW5nIG9uIGhpcyB0aHJvbmUsIGFuZCBhbGwgdGhlIGhvc3Qgb2YgaGVhdmVuIHN0YW5kaW5nIGJ5IGhpbSBvbiBoaXMgcmlnaHQgaGFuZCBhbmQgb24gaGlzIGxlZnQuCkFuZCB0aGUgTE9SRCBzYWlkLCBXaG8gc2hhbGwgcGVyc3VhZGUgQWhhYiwgdGhhdCBoZSBtYXkgZ28gdXAgYW5kIGZhbGwgYXQgUmFtb3RoZ2lsZWFkPyBBbmQgb25lIHNhaWQgb24gdGhpcyBtYW5uZXIsIGFuZCBhbm90aGVyIHNhaWQgb24gdGhhdCBtYW5uZXIuCkFuZCB0aGVyZSBjYW1lIGZvcnRoIGEgc3Bpcml0LCBhbmQgc3Rvb2QgYmVmb3JlIHRoZSBMT1JELCBhbmQgc2FpZCwgSSB3aWxsIHBlcnN1YWRlIGhpbS4KQW5kIHRoZSBMT1JEIHNhaWQgdW50byBoaW0sIFdoZXJld2l0aD8gQW5kIGhlIHNhaWQsIEkgd2lsbCBnbyBmb3J0aCwgYW5kIEkgd2lsbCBiZSBhIGx5aW5nIHNwaXJpdCBpbiB0aGUgbW91dGggb2YgYWxsIGhpcyBwcm9waGV0cy4gQW5kIGhlIHNhaWQsIFRob3Ugc2hhbHQgcGVyc3VkZSBoaW0sIGFuZCBwcmV2YWlsIGFsc286IGdvIGZvcnRoLCBhbmQgZG8gc28uCk5vdyB0aGVyZWZvcmUsIGJlaG9sZCwgdGhlIExPUkQgaGF0aCBwdXQgYSBseWluZyBzcGlyaXQgaW4gdGhlIG1vdXRoIG9mIGFsbCB0aGVzZSB0aHkgcHJvcGhldHMsIGFuZCB0aGUgTE9SRCBoYXRoIHNwb2tlbiBldmlsIGNvbmNlcm5pbmcgdGhlZS4KQnV0IFplZGVraWFoIHRoZSBzb24gb2YgQ2hlbmFhbmFoIHdlbnQgbmVhciwgYW5kIHNtb3RlIE1pY2FpYWggb24gdGhlIGNoZWVrLCBhbmQgc2FpZCwgV2hpY2ggd2F5IHdlbnQgdGhlIFNwaXJpdCBvZiB0aGUgTE9SRCBmcm9tIG1lIHRvIHNwZWFrIHVudG8gdGhlZT8KQW5kIE1pY2FpYWggc2FpZCwgQmVob2xkLCB0aG91IHNoYWx0IHNlZSBpbiB0aGF0IGRheSwgd2hlbiB0aG91IHNoYWx0IGdvIGludG8gYW4gaW5uZXIgY2hhbWJlciB0byBoaWRlIHRoeXNlbGYuCkFuZCB0aGUga2luZyBvZiBJc3JhZWwgc2FpZCwgVGFrZSBNaWNhaWFoLCBhbmQgY2FycnkgaGltIGJhY2sgdW50byBBbW9uIHRoZSBnb3Zlcm5vciBvZiB0aGUgY2l0eSwgYW5kIHRvIEpvYXNoIHRoZSBraW5nJ3Mgc29uOwpBbmQgc2F5LCBUaHVzIHNhaXRoIHRoZSBraW5nLCBQdXQgdGhpcyBmZWxsb3cgaW4gdGhlIHByaXNvbiwgYW5kIGZlZWQgaGltIHdpdGggYnJlYWQgb2YgYWZmbGljdGlvbiBhbmQgd2l0aCB3YXRlciBvZiBhZmZsaWN0aW9uLCB1bnRpbCBJIGNvbWUgaW4gcGVhY2UuCkFuZCBNaWNhaWFoIHNhaWQsIElmIHRob3UgcmV0dXJuIGF0IGFsbCBpbiBwZWFjZSwgdGhlIExPUkQgaGF0aCBub3Qgc3Bva2VuIGJ5IG1lLiBBbmQgaGUgc2FpZCwgSGVhcmtlbiwgTyBwZW9wbGUsIGV2ZXJ5IG9uZSBvZiB5b3UuClNvIHRoZSBraW5nIG9mIElzcmFlbCBhbmQgSmVob3NoYXBoYXQgdGhlIGtpbmcgb2YgSnVkYWggd2VudCB1cCB0byBSYW1vdGhnaWxlYWQuCkFuZCB0aGUga2luZyBvZiBJc3JhZWwgc2FpZCB1bnRvIEplaG9zaGFwaGF0LCBJIHdpbGwgZGlzZ3Vpc2UgbXlzZWxmLCBhbmQgZW50ZXIgaW50byB0aGUgYmF0dGxlOyBidXQgcHV0IHRob3Ugb24gdGh5IHJvYmVzLiBBbmQgdGhlIGtpbmcgb2YgSXNyYWVsIGRpc2d1aXNlZCBoaW1zZWxmLCBhbmQgd2VudCBpbnRvIHRoZSBiYXR0bGUuCkJ1dCB0aGUga2luZyBvZiBTeXJpYSBjb21tYW5kZWQgaGlzIHRoaXJ0eSBhbmQgdHdvIGNhcHRhaW5zIHRoYXQgaGFkIHJ1bGUgb3ZlciBoaXMgY2hhcmlvdHMsIHNheWluZywgRmlnaHQgbmVpdGhlciB3aXRoIHNtYWxsIG5vciBncmVhdCwgc2F2ZSBvbmx5IHdpdGggdGhlIGtpbmcgb2YgSXNyYWVsLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIHRoZSBjYXB0YWlucyBvZiB0aGUgY2hhcmlvdHMgc2F3IEplaG9zaGFwaGF0LCB0aGF0IHRoZXkgc2FpZCwgU3VyZWx5IGl0IGlzIHRoZSBraW5nIG9mIElzcmFlbC4gQW5kIHRoZXkgdHVybmVkIGFzaWRlIHRvIGZpZ2h0IGFnYWluc3QgaGltOiBhbmQgSmVob3NoYXBoYXQgY3JpZWQgb3V0LgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIHRoZSBjYXB0YWlucyBvZiB0aGUgY2hhcmlvdHMgcGVyY2VpdmVkIHRoYXQgaXQgd2FzIG5vdCB0aGUga2luZyBvZiBJc3JhZWwsIHRoYXQgdGhleSB0dXJuZWQgYmFjayBmcm9tIHB1cnN1aW5nIGhpbS4KQW5kIGEgY2VydGFpbiBtYW4gZHJldyBhIGJvdyBhdCBhIHZlbnR1cmUsIGFuZCBzbW90ZSB0aGUga2luZyBvZiBJc3JhZWwgYmV0d2VlbiB0aGUgam9pbnRzIG9mIHRoZSBoYXJuZXNzOiB3aGVyZWZvcmUgaGUgc2FpZCB1bnRvIHRoZSBkcml2ZXIgb2YgaGlzIGNoYXJpb3QsIFR1cm4gdGhpbmUgaGFuZCwgYW5kIGNhcnJ5IG1lIG91dCBvZiB0aGUgaG9zdDsgZm9yIEkgYW0gd291bmRlZC4KQW5kIHRoZSBiYXR0bGUgaW5jcmVhc2VkIHRoYXQgZGF5OiBhbmQgdGhlIGtpbmcgd2FzIHN0YXllZCB1cCBpbiBoaXMgY2hhcmlvdCBhZ2FpbnN0IHRoZSBTeXJpYW5zLCBhbmQgZGllZCBhdCBldmVuOiBhbmQgdGhlIGJsb29kIHJhbiBvdXQgb2YgdGhlIHdvdW5kIGludG8gdGhlIG1pZHN0IG9mIHRoZSBjaGFyaW90LgpBbmQgdGhlcmUgd2VudCBhIHByb2NsYW1hdGlvbiB0aHJvdWdob3V0IHRoZSBob3N0IGFib3V0IHRoZSBnb2luZyBkb3duIG9mIHRoZSBzdW4sIHNheWluZywgRXZlcnkgbWFuIHRvIGhpcyBjaXR5LCBhbmQgZXZlcnkgbWFuIHRvIGhpcyBvd24gY291bnRyeS4KU28gdGhlIGtpbmcgZGllZCwgYW5kIHdhcyBicm91Z2h0IHRvIFNhbWFyaWE7IGFuZCB0aGV5IGJ1cmllZCB0aGUga2luZyBpbiBTYW1hcmlhLgpBbmQgb25lIHdhc2hlZCB0aGUgY2hhcmlvdCBpbiB0aGUgcG9vbCBvZiBTYW1hcmlhOyBhbmQgdGhlIGRvZ3MgbGlja2VkIHVwIGhpcyBibG9vZDsgYW5kIHRoZXkgd2FzaGVkIGhpcyBhcm1vdXI7IGFjY29yZGluZyB1bnRvIHRoZSB3b3JkIG9mIHRoZSBMT1JEIHdoaWNoIGhlIHNwYWtlLgpOb3cgdGhlIHJlc3Qgb2YgdGhlIGFjdHMgb2YgQWhhYiwgYW5kIGFsbCB0aGF0IGhlIGRpZCwgYW5kIHRoZSBpdm9yeSBob3VzZSB3aGljaCBoZSBtYWRlLCBhbmQgYWxsIHRoZSBjaXRpZXMgdGhhdCBoZSBidWlsdCwgYXJlIHRoZXkgbm90IHdyaXR0ZW4gaW4gdGhlIGJvb2sgb2YgdGhlIGNocm9uaWNsZXMgb2YgdGhlIGtpbmdzIG9mIElzcmFlbD8KU28gQWhhYiBzbGVwdCB3aXRoIGhpcyBmYXRoZXJzOyBhbmQgQWhhemlhaCBoaXMgc29uIHJlaWduZWQgaW4gaGlzIHN0ZWFkLgpBbmQgSmVob3NoYXBoYXQgdGhlIHNvbiBvZiBBc2EgYmVnYW4gdG8gcmVpZ24gb3ZlciBKdWRhaCBpbiB0aGUgZm91cnRoIHllYXIgb2YgQWhhYiBraW5nIG9mIElzcmFlbC4KSmVob3NoYXBoYXQgd2FzIHRoaXJ0eSBhbmQgZml2ZSB5ZWFycyBvbGQgd2hlbiBoZSBiZWdhbiB0byByZWlnbjsgYW5kIGhlIHJlaWduZWQgdHdlbnR5IGFuZCBmaXZlIHllYXJzIGluIEplcnVzYWxlbS4gQW5kIGhpcyBtb3RoZXIncyBuYW1lIHdhcyBBenViYWggdGhlIGRhdWdodGVyIG9mIFNoaWxoaS4KQW5kIGhlIHdhbGtlZCBpbiBhbGwgdGhlIHdheXMgb2YgQXNhIGhpcyBmYXRoZXI7IGhlIHR1cm5lZCBub3QgYXNpZGUgZnJvbSBpdCwgZG9pbmcgdGhhdCB3aGljaCB3YXMgcmlnaHQgaW4gdGhlIGV5ZXMgb2YgdGhlIExPUkQ6IG5ldmVydGhlbGVzcyB0aGUgaGlnaCBwbGFjZXMgd2VyZSBub3QgdGFrZW4gYXdheTsgZm9yIHRoZSBwZW9wbGUgb2ZmZXJlZCBhbmQgYnVybnQgaW5jZW5zZSB5ZXQgaW4gdGhlIGhpZ2ggcGxhY2VzLgpBbmQgSmVob3NoYXBoYXQgbWFkZSBwZWFjZSB3aXRoIHRoZSBraW5nIG9mIElzcmFlbC4KTm93IHRoZSByZXN0IG9mIHRoZSBhY3RzIG9mIEplaG9zaGFwaGF0LCBhbmQgaGlzIG1pZ2h0IHRoYXQgaGUgc2hld2VkLCBhbmQgaG93IGhlIHdhcnJlZCwgYXJlIHRoZXkgbm90IHdyaXR0ZW4gaW4gdGhlIGJvb2sgb2YgdGhlIGNocm9uaWNsZXMgb2YgdGhlIGtpbmdzIG9mIEp1ZGFoPwpBbmQgdGhlIHJlbW5hbnQgb2YgdGhlIHNvZG9taXRlcywgd2hpY2ggcmVtYWluZWQgaW4gdGhlIGRheXMgb2YgaGlzIGZhdGhlciBBc2EsIGhlIHRvb2sgb3V0IG9mIHRoZSBsYW5kLgpUaGVyZSB3YXMgdGhlbiBubyBraW5nIGluIEVkb206IGEgZGVwdXR5IHdhcyBraW5nLgpKZWhvc2hhcGhhdCBtYWRlIHNoaXBzIG9mIFRoYXJzaGlzaCB0byBnbyB0byBPcGhpciBmb3IgZ29sZDogYnV0IHRoZXkgd2VudCBub3Q7IGZvciB0aGUgc2hpcHMgd2VyZSBicm9rZW4gYXQgRXppb25nZWJlci4KVGhlbiBzYWlkIEFoYXppYWggdGhlIHNvbiBvZiBBaGFiIHVudG8gSmVob3NoYXBoYXQsIExldCBteSBzZXJ2YW50cyBnbyB3aXRoIHRoeSBzZXJ2YW50cyBpbiB0aGUgc2hpcHMuIEJ1dCBKZWhvc2hhcGhhdCB3b3VsZCBub3QuCkFuZCBKZWhvc2hhcGhhdCBzbGVwdCB3aXRoIGhpcyBmYXRoZXJzLCBhbmQgd2FzIGJ1cmllZCB3aXRoIGhpcyBmYXRoZXJzIGluIHRoZSBjaXR5IG9mIERhdmlkIGhpcyBmYXRoZXI6IGFuZCBKZWhvcmFtIGhpcyBzb24gcmVpZ25lZCBpbiBoaXMgc3RlYWQuCkFoYXppYWggdGhlIHNvbiBvZiBBaGFiIGJlZ2FuIHRvIHJlaWduIG92ZXIgSXNyYWVsIGluIFNhbWFyaWEgdGhlIHNldmVudGVlbnRoIHllYXIgb2YgSmVob3NoYXBoYXQga2luZyBvZiBKdWRhaCwgYW5kIHJlaWduZWQgdHdvIHllYXJzIG92ZXIgSXNyYWVsLgpBbmQgaGUgZGlkIGV2aWwgaW4gdGhlIHNpZ2h0IG9mIHRoZSBMT1JELCBhbmQgd2Fsa2VkIGluIHRoZSB3YXkgb2YgaGlzIGZhdGhlciwgYW5kIGluIHRoZSB3YXkgb2YgaGlzIG1vdGhlciwgYW5kIGluIHRoZSB3YXkgb2YgSmVyb2JvYW0gdGhlIHNvbiBvZiBOZWJhdCwgd2hvIG1hZGUgSXNyYWVsIHRvIHNpbjoKRm9yIGhlIHNlcnZlZCBCYWFsLCBhbmQgd29yc2hpcHBlZCBoaW0sIGFuZCBwcm92b2tlZCB0byBhbmdlciB0aGUgTE9SRCBHb2Qgb2YgSXNyYWVsLCBhY2NvcmRpbmcgdG8gYWxsIHRoYXQgaGlzIGZhdGhlciBoYWQgZG9uZS4KVGhlbiBNb2FiIHJlYmVsbGVkIGFnYWluc3QgSXNyYWVsIGFmdGVyIHRoZSBkZWF0aCBvZiBBaGFiLgpBbmQgQWhhemlhaCBmZWxsIGRvd24gdGhyb3VnaCBhIGxhdHRpY2UgaW4gaGlzIHVwcGVyIGNoYW1iZXIgdGhhdCB3YXMgaW4gU2FtYXJpYSwgYW5kIHdhcyBzaWNrOiBhbmQgaGUgc2VudCBtZXNzZW5nZXJzLCBhbmQgc2FpZCB1bnRvIHRoZW0sIEdvLCBlbnF1aXJlIG9mIEJhYWx6ZWJ1YiB0aGUgZ29kIG9mIEVrcm9uIHdoZXRoZXIgSSBzaGFsbCByZWNvdmVyIG9mIHRoaXMgZGlzZWFzZS4KQnV0IHRoZSBhbmdlbCBvZiB0aGUgTE9SRCBzYWlkIHRvIEVsaWphaCB0aGUgVGlzaGJpdGUsIEFyaXNlLCBnbyB1cCB0byBtZWV0IHRoZSBtZXNzZW5nZXJzIG9mIHRoZSBraW5nIG9mIFNhbWFyaWEsIGFuZCBzYXkgdW50byB0aGVtLCBJcyBpdCBub3QgYmVjYXVzZSB0aGVyZSBpcyBub3QgYSBHb2QgaW4gSXNyYWVsLCB0aGF0IHllIGdvIHRvIGVucXVpcmUgb2YgQmFhbHplYnViIHRoZSBnb2Qgb2YgRWtyb24/Ck5vdyB0aGVyZWZvcmUgdGh1cyBzYWl0aCB0aGUgTE9SRCwgVGhvdSBzaGFsdCBub3QgY29tZSBkb3duIGZyb20gdGhhdCBiZWQgb24gd2hpY2ggdGhvdSBhcnQgZ29uZSB1cCwgYnV0IHNoYWx0IHN1cmVseSBkaWUuIEFuZCBFbGlqYWggZGVwYXJ0ZWQuCkFuZCB3aGVuIHRoZSBtZXNzZW5nZXJzIHR1cm5lZCBiYWNrIHVudG8gaGltLCBoZSBzYWlkIHVudG8gdGhlbSwgV2h5IGFyZSB5ZSBub3cgdHVybmVkIGJhY2s/CkFuZCB0aGV5IHNhaWQgdW50byBoaW0sIFRoZXJlIGNhbWUgYSBtYW4gdXAgdG8gbWVldCB1cywgYW5kIHNhaWQgdW50byB1cywgR28sIHR1cm4gYWdhaW4gdW50byB0aGUga2luZyB0aGF0IHNlbnQgeW91LCBhbmQgc2F5IHVudG8gaGltLCBUaHVzIHNhaXRoIHRoZSBMT1JELCBJcyBpdCBub3QgYmVjYXVzZSB0aGVyZSBpcyBub3QgYSBHb2QgaW4gSXNyYWVsLCB0aGF0IHRob3Ugc2VuZGVzdCB0byBlbnF1aXJlIG9mIEJhYWx6ZWJ1YiB0aGUgZ29kIG9mIEVrcm9uPyB0aGVyZWZvcmUgdGhvdSBzaGFsdCBub3QgY29tZSBkb3duIGZyb20gdGhhdCBiZWQgb24gd2hpY2ggdGhvdSBhcnQgZ29uZSB1cCwgYnV0IHNoYWx0IHN1cmVseSBkaWUuCkFuZCBoZSBzYWlkIHVudG8gdGhlbSwgV2hhdCBtYW5uZXIgb2YgbWFuIHdhcyBoZSB3aGljaCBjYW1lIHVwIHRvIG1lZXQgeW91LCBhbmQgdG9sZCB5b3UgdGhlc2Ugd29yZHM/CkFuZCB0aGV5IGFuc3dlcmVkIGhpbSwgSGUgd2FzIGFuIGhhaXJ5IG1hbiwgYW5kIGdpcnQgd2l0aCBhIGdpcmRsZSBvZiBsZWF0aGVyIGFib3V0IGhpcyBsb2lucy4gQW5kIGhlIHNhaWQsIEl0IGlzIEVsaWphaCB0aGUgVGlzaGJpdGUuClRoZW4gdGhlIGtpbmcgc2VudCB1bnRvIGhpbSBhIGNhcHRhaW4gb2YgZmlmdHkgd2l0aCBoaXMgZmlmdHkuIEFuZCBoZSB3ZW50IHVwIHRvIGhpbTogYW5kLCBiZWhvbGQsIGhlIHNhdCBvbiB0aGUgdG9wIG9mIGFuIGhpbGwuIEFuZCBoZSBzcGFrZSB1bnRvIGhpbSwgVGhvdSBtYW4gb2YgR29kLCB0aGUga2luZyBoYXRoIHNhaWQsIENvbWUgZG93bi4KQW5kIEVsaWphaCBhbnN3ZXJlZCBhbmQgc2FpZCB0byB0aGUgY2FwdGFpbiBvZiBmaWZ0eSwgSWYgSSBiZSBhIG1hbiBvZiBHb2QsIHRoZW4gbGV0IGZpcmUgY29tZSBkb3duIGZyb20gaGVhdmVuLCBhbmQgY29uc3VtZSB0aGVlIGFuZCB0aHkgZmlmdHkuIEFuZCB0aGVyZSBjYW1lIGRvd24gZmlyZSBmcm9tIGhlYXZlbiwgYW5kIGNvbnN1bWVkIGhpbSBhbmQgaGlzIGZpZnR5LgpBZ2FpbiBhbHNvIGhlIHNlbnQgdW50byBoaW0gYW5vdGhlciBjYXB0YWluIG9mIGZpZnR5IHdpdGggaGlzIGZpZnR5LiBBbmQgaGUgYW5zd2VyZWQgYW5kIHNhaWQgdW50byBoaW0sIE8gbWFuIG9mIEdvZCwgdGh1cyBoYXRoIHRoZSBraW5nIHNhaWQsIENvbWUgZG93biBxdWlja2x5LgpBbmQgRWxpamFoIGFuc3dlcmVkIGFuZCBzYWlkIHVudG8gdGhlbSwgSWYgSSBiZSBhIG1hbiBvZiBHb2QsIGxldCBmaXJlIGNvbWUgZG93biBmcm9tIGhlYXZlbiwgYW5kIGNvbnN1bWUgdGhlZSBhbmQgdGh5IGZpZnR5LiBBbmQgdGhlIGZpcmUgb2YgR29kIGNhbWUgZG93biBmcm9tIGhlYXZlbiwgYW5kIGNvbnN1bWVkIGhpbSBhbmQgaGlzIGZpZnR5LgpBbmQgaGUgc2VudCBhZ2FpbiBhIGNhcHRhaW4gb2YgdGhlIHRoaXJkIGZpZnR5IHdpdGggaGlzIGZpZnR5LiBBbmQgdGhlIHRoaXJkIGNhcHRhaW4gb2YgZmlmdHkgd2VudCB1cCwgYW5kIGNhbWUgYW5kIGZlbGwgb24gaGlzIGtuZWVzIGJlZm9yZSBFbGlqYWgsIGFuZCBiZXNvdWdodCBoaW0sIGFuZCBzYWlkIHVudG8gaGltLCBPIG1hbiBvZiBHb2QsIEkgcHJheSB0aGVlLCBsZXQgbXkgbGlmZSwgYW5kIHRoZSBsaWZlIG9mIHRoZXNlIGZpZnR5IHRoeSBzZXJ2YW50cywgYmUgcHJlY2lvdXMgaW4gdGh5IHNpZ2h0LgpCZWhvbGQsIHRoZXJlIGNhbWUgZmlyZSBkb3duIGZyb20gaGVhdmVuLCBhbmQgYnVybnQgdXAgdGhlIHR3byBjYXB0YWlucyBvZiB0aGUgZm9ybWVyIGZpZnRpZXMgd2l0aCB0aGVpciBmaWZ0aWVzOiB0aGVyZWZvcmUgbGV0IG15IGxpZmUgbm93IGJlIHByZWNpb3VzIGluIHRoeSBzaWdodC4KQW5kIHRoZSBhbmdlbCBvZiB0aGUgTE9SRCBzYWlkIHVudG8gRWxpamFoLCBHbyBkb3duIHdpdGggaGltOiBiZSBub3QgYWZyYWlkIG9mIGhpbS4gQW5kIGhlIGFyb3NlLCBhbmQgd2VudCBkb3duIHdpdGggaGltIHVudG8gdGhlIGtpbmcuCkFuZCBoZSBzYWlkIHVudG8gaGltLCBUaHVzIHNhaXRoIHRoZSBMT1JELCBGb3Jhc211Y2ggYXMgdGhvdSBoYXN0IHNlbnQgbWVzc2VuZ2VycyB0byBlbnF1aXJlIG9mIEJhYWx6ZWJ1YiB0aGUgZ29kIG9mIEVrcm9uLCBpcyBpdCBub3QgYmVjYXVzZSB0aGVyZSBpcyBubyBHb2QgaW4gSXNyYWVsIHRvIGVucXVpcmUgb2YgaGlzIHdvcmQ/IHRoZXJlZm9yZSB0aG91IHNoYWx0IG5vdCBjb21lIGRvd24gb2ZmIHRoYXQgYmVkIG9uIHdoaWNoIHRob3UgYXJ0IGdvbmUgdXAsIGJ1dCBzaGFsdCBzdXJlbHkgZGllLgpTbyBoZSBkaWVkIGFjY29yZGluZyB0byB0aGUgd29yZCBvZiB0aGUgTE9SRCB3aGljaCBFbGlqYWggaGFkIHNwb2tlbi4gQW5kIEplaG9yYW0gcmVpZ25lZCBpbiBoaXMgc3RlYWQgaW4gdGhlIHNlY29uZCB5ZWFyIG9mIEplaG9yYW0gdGhlIHNvbiBvZiBKZWhvc2hhcGhhdCBraW5nIG9mIEp1ZGFoOyBiZWNhdXNlIGhlIGhhZCBubyBzb24uCk5vdyB0aGUgcmVzdCBvZiB0aGUgYWN0cyBvZiBBaGF6aWFoIHdoaWNoIGhlIGRpZCwgYXJlIHRoZXkgbm90IHdyaXR0ZW4gaW4gdGhlIGJvb2sgb2YgdGhlIGNocm9uaWNsZXMgb2YgdGhlIGtpbmdzIG9mIElzcmFlbD8KQW5kIGl0IGNhbWUgdG8gcGFzcywgd2hlbiB0aGUgTE9SRCB3b3VsZCB0YWtlIHVwIEVsaWphaCBpbnRvIGhlYXZlbiBieSBhIHdoaXJsd2luZCwgdGhhdCBFbGlqYWggd2VudCB3aXRoIEVsaXNoYSBmcm9tIEdpbGdhbC4KQW5kIEVsaWphaCBzYWlkIHVudG8gRWxpc2hhLCBUYXJyeSBoZXJlLCBJIHByYXkgdGhlZTsgZm9yIHRoZSBMT1JEIGhhdGggc2VudCBtZSB0byBCZXRoZWwuIEFuZCBFbGlzaGEgc2FpZCB1bnRvIGhpbSwgQXMgdGhlIExPUkQgbGl2ZXRoLCBhbmQgYXMgdGh5IHNvdWwgbGl2ZXRoLCBJIHdpbGwgbm90IGxlYXZlIHRoZWUuIFNvIHRoZXkgd2VudCBkb3duIHRvIEJldGhlbC4KQW5kIHRoZSBzb25zIG9mIHRoZSBwcm9waGV0cyB0aGF0IHdlcmUgYXQgQmV0aGVsIGNhbWUgZm9ydGggdG8gRWxpc2hhLCBhbmQgc2FpZCB1bnRvIGhpbSwgS25vd2VzdCB0aG91IHRoYXQgdGhlIExPUkQgd2lsbCB0YWtlIGF3YXkgdGh5IG1hc3RlciBmcm9tIHRoeSBoZWFkIHRvIGRheT8gQW5kIGhlIHNhaWQsIFllYSwgSSBrbm93IGl0OyBob2xkIHllIHlvdXIgcGVhY2UuCkFuZCBFbGlqYWggc2FpZCB1bnRvIGhpbSwgRWxpc2hhLCB0YXJyeSBoZXJlLCBJIHByYXkgdGhlZTsgZm9yIHRoZSBMT1JEIGhhdGggc2VudCBtZSB0byBKZXJpY2hvLiBBbmQgaGUgc2FpZCwgQXMgdGhlIExPUkQgbGl2ZXRoLCBhbmQgYXMgdGh5IHNvdWwgbGl2ZXRoLCBJIHdpbGwgbm90IGxlYXZlIHRoZWUuIFNvIHRoZXkgY2FtZSB0byBKZXJpY2hvLgpBbmQgdGhlIHNvbnMgb2YgdGhlIHByb3BoZXRzIHRoYXQgd2VyZSBhdCBKZXJpY2hvIGNhbWUgdG8gRWxpc2hhLCBhbmQgc2FpZCB1bnRvIGhpbSwgS25vd2VzdCB0aG91IHRoYXQgdGhlIExPUkQgd2lsbCB0YWtlIGF3YXkgdGh5IG1hc3RlciBmcm9tIHRoeSBoZWFkIHRvIGRheT8gQW5kIGhlIGFuc3dlcmVkLCBZZWEsIEkga25vdyBpdDsgaG9sZCB5ZSB5b3VyIHBlYWNlLgpBbmQgRWxpamFoIHNhaWQgdW50byBoaW0sIFRhcnJ5LCBJIHByYXkgdGhlZSwgaGVyZTsgZm9yIHRoZSBMT1JEIGhhdGggc2VudCBtZSB0byBKb3JkYW4uIEFuZCBoZSBzYWlkLCBBcyB0aGUgTE9SRCBsaXZldGgsIGFuZCBhcyB0aHkgc291bCBsaXZldGgsIEkgd2lsbCBub3QgbGVhdmUgdGhlZS4gQW5kIHRoZXkgdHdvIHdlbnQgb24uCkFuZCBmaWZ0eSBtZW4gb2YgdGhlIHNvbnMgb2YgdGhlIHByb3BoZXRzIHdlbnQsIGFuZCBzdG9vZCB0byB2aWV3IGFmYXIgb2ZmOiBhbmQgdGhleSB0d28gc3Rvb2QgYnkgSm9yZGFuLgpBbmQgRWxpamFoIHRvb2sgaGlzIG1hbnRsZSwgYW5kIHdyYXBwZWQgaXQgdG9nZXRoZXIsIGFuZCBzbW90ZSB0aGUgd2F0ZXJzLCBhbmQgdGhleSB3ZXJlIGRpdmlkZWQgaGl0aGVyIGFuZCB0aGl0aGVyLCBzbyB0aGF0IHRoZXkgdHdvIHdlbnQgb3ZlciBvbiBkcnkgZ3JvdW5kLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIHRoZXkgd2VyZSBnb25lIG92ZXIsIHRoYXQgRWxpamFoIHNhaWQgdW50byBFbGlzaGEsIEFzayB3aGF0IEkgc2hhbGwgZG8gZm9yIHRoZWUsIGJlZm9yZSBJIGJlIHRha2VuIGF3YXkgZnJvbSB0aGVlLiBBbmQgRWxpc2hhIHNhaWQsIEkgcHJheSB0aGVlLCBsZXQgYSBkb3VibGUgcG9ydGlvbiBvZiB0aHkgc3Bpcml0IGJlIHVwb24gbWUuCkFuZCBoZSBzYWlkLCBUaG91IGhhc3QgYXNrZWQgYSBoYXJkIHRoaW5nOiBuZXZlcnRoZWxlc3MsIGlmIHRob3Ugc2VlIG1lIHdoZW4gSSBhbSB0YWtlbiBmcm9tIHRoZWUsIGl0IHNoYWxsIGJlIHNvIHVudG8gdGhlZTsgYnV0IGlmIG5vdCwgaXQgc2hhbGwgbm90IGJlIHNvLgpBbmQgaXQgY2FtZSB0byBwYXNzLCBhcyB0aGV5IHN0aWxsIHdlbnQgb24sIGFuZCB0YWxrZWQsIHRoYXQsIGJlaG9sZCwgdGhlcmUgYXBwZWFyZWQgYSBjaGFyaW90IG9mIGZpcmUsIGFuZCBob3JzZXMgb2YgZmlyZSwgYW5kIHBhcnRlZCB0aGVtIGJvdGggYXN1bmRlcjsgYW5kIEVsaWphaCB3ZW50IHVwIGJ5IGEgd2hpcmx3aW5kIGludG8gaGVhdmVuLgpBbmQgRWxpc2hhIHNhdyBpdCwgYW5kIGhlIGNyaWVkLCBNeSBmYXRoZXIsIG15IGZhdGhlciwgdGhlIGNoYXJpb3Qgb2YgSXNyYWVsLCBhbmQgdGhlIGhvcnNlbWVuIHRoZXJlb2YuIEFuZCBoZSBzYXcgaGltIG5vIG1vcmU6IGFuZCBoZSB0b29rIGhvbGQgb2YgaGlzIG93biBjbG90aGVzLCBhbmQgcmVudCB0aGVtIGluIHR3byBwaWVjZXMuCkhlIHRvb2sgdXAgYWxzbyB0aGUgbWFudGxlIG9mIEVsaWphaCB0aGF0IGZlbGwgZnJvbSBoaW0sIGFuZCB3ZW50IGJhY2ssIGFuZCBzdG9vZCBieSB0aGUgYmFuayBvZiBKb3JkYW47CkFuZCBoZSB0b29rIHRoZSBtYW50bGUgb2YgRWxpamFoIHRoYXQgZmVsbCBmcm9tIGhpbSwgYW5kIHNtb3RlIHRoZSB3YXRlcnMsIGFuZCBzYWlkLCBXaGVyZSBpcyB0aGUgTE9SRCBHb2Qgb2YgRWxpamFoPyBhbmQgd2hlbiBoZSBhbHNvIGhhZCBzbWl0dGVuIHRoZSB3YXRlcnMsIHRoZXkgcGFydGVkIGhpdGhlciBhbmQgdGhpdGhlcjogYW5kIEVsaXNoYSB3ZW50IG92ZXIuCkFuZCB3aGVuIHRoZSBzb25zIG9mIHRoZSBwcm9waGV0cyB3aGljaCB3ZXJlIHRvIHZpZXcgYXQgSmVyaWNobyBzYXcgaGltLCB0aGV5IHNhaWQsIFRoZSBzcGlyaXQgb2YgRWxpamFoIGRvdGggcmVzdCBvbiBFbGlzaGEuIEFuZCB0aGV5IGNhbWUgdG8gbWVldCBoaW0sIGFuZCBib3dlZCB0aGVtc2VsdmVzIHRvIHRoZSBncm91bmQgYmVmb3JlIGhpbS4KQW5kIHRoZXkgc2FpZCB1bnRvIGhpbSwgQmVob2xkIG5vdywgdGhlcmUgYmUgd2l0aCB0aHkgc2VydmFudHMgZmlmdHkgc3Ryb25nIG1lbjsgbGV0IHRoZW0gZ28sIHdlIHByYXkgdGhlZSwgYW5kIHNlZWsgdGh5IG1hc3RlcjogbGVzdCBwZXJhZHZlbnR1cmUgdGhlIFNwaXJpdCBvZiB0aGUgTE9SRCBoYXRoIHRha2VuIGhpbSB1cCwgYW5kIGNhc3QgaGltIHVwb24gc29tZSBtb3VudGFpbiwgb3IgaW50byBzb21lIHZhbGxleS4gQW5kIGhlIHNhaWQsIFllIHNoYWxsIG5vdCBzZW5kLgpBbmQgd2hlbiB0aGV5IHVyZ2VkIGhpbSB0aWxsIGhlIHdhcyBhc2hhbWVkLCBoZSBzYWlkLCBTZW5kLiBUaGV5IHNlbnQgdGhlcmVmb3JlIGZpZnR5IG1lbjsgYW5kIHRoZXkgc291Z2h0IHRocmVlIGRheXMsIGJ1dCBmb3VuZCBoaW0gbm90LgpBbmQgd2hlbiB0aGV5IGNhbWUgYWdhaW4gdG8gaGltLCAoZm9yIGhlIHRhcnJpZWQgYXQgSmVyaWNobywpIGhlIHNhaWQgdW50byB0aGVtLCBEaWQgSSBub3Qgc2F5IHVudG8geW91LCBHbyBub3Q/CkFuZCB0aGUgbWVuIG9mIHRoZSBjaXR5IHNhaWQgdW50byBFbGlzaGEsIEJlaG9sZCwgSSBwcmF5IHRoZWUsIHRoZSBzaXR1YXRpb24gb2YgdGhpcyBjaXR5IGlzIHBsZWFzYW50LCBhcyBteSBsb3JkIHNlZXRoOiBidXQgdGhlIHdhdGVyIGlzIG5hdWdodCwgYW5kIHRoZSBncm91bmQgYmFycmVuLgpBbmQgaGUgc2FpZCwgQnJpbmcgbWUgYSBuZXcgY3J1c2UsIGFuZCBwdXQgc2FsdCB0aGVyZWluLiBBbmQgdGhleSBicm91Z2h0IGl0IHRvIGhpbS4KQW5kIGhlIHdlbnQgZm9ydGggdW50byB0aGUgc3ByaW5nIG9mIHRoZSB3YXRlcnMsIGFuZCBjYXN0IHRoZSBzYWx0IGluIHRoZXJlLCBhbmQgc2FpZCwgVGh1cyBzYWl0aCB0aGUgTE9SRCwgSSBoYXZlIGhlYWxlZCB0aGVzZSB3YXRlcnM7IHRoZXJlIHNoYWxsIG5vdCBiZSBmcm9tIHRoZW5jZSBhbnkgbW9yZSBkZWF0aCBvciBiYXJyZW4gbGFuZC4KU28gdGhlIHdhdGVycyB3ZXJlIGhlYWxlZCB1bnRvIHRoaXMgZGF5LCBhY2NvcmRpbmcgdG8gdGhlIHNheWluZyBvZiBFbGlzaGEgd2hpY2ggaGUgc3Bha2UuCkFuZCBoZSB3ZW50IHVwIGZyb20gdGhlbmNlIHVudG8gQmV0aGVsOiBhbmQgYXMgaGUgd2FzIGdvaW5nIHVwIGJ5IHRoZSB3YXksIHRoZXJlIGNhbWUgZm9ydGggbGl0dGxlIGNoaWxkcmVuIG91dCBvZiB0aGUgY2l0eSwgYW5kIG1vY2tlZCBoaW0sIGFuZCBzYWlkIHVudG8gaGltLCBHbyB1cCwgdGhvdSBiYWxkIGhlYWQ7IGdvIHVwLCB0aG91IGJhbGQgaGVhZC4KQW5kIGhlIHR1cm5lZCBiYWNrLCBhbmQgbG9va2VkIG9uIHRoZW0sIGFuZCBjdXJzZWQgdGhlbSBpbiB0aGUgbmFtZSBvZiB0aGUgTE9SRC4gQW5kIHRoZXJlIGNhbWUgZm9ydGggdHdvIHNoZSBiZWFycyBvdXQgb2YgdGhlIHdvb2QsIGFuZCB0YXJlIGZvcnR5IGFuZCB0d28gY2hpbGRyZW4gb2YgdGhlbS4KQW5kIGhlIHdlbnQgZnJvbSB0aGVuY2UgdG8gbW91bnQgQ2FybWVsLCBhbmQgZnJvbSB0aGVuY2UgaGUgcmV0dXJuZWQgdG8gU2FtYXJpYS4KTm93IEplaG9yYW0gdGhlIHNvbiBvZiBBaGFiIGJlZ2FuIHRvIHJlaWduIG92ZXIgSXNyYWVsIGluIFNhbWFyaWEgdGhlIGVpZ2h0ZWVudGggeWVhciBvZiBKZWhvc2hhcGhhdCBraW5nIG9mIEp1ZGFoLCBhbmQgcmVpZ25lZCB0d2VsdmUgeWVhcnMuCkFuZCBoZSB3cm91Z2h0IGV2aWwgaW4gdGhlIHNpZ2h0IG9mIHRoZSBMT1JEOyBidXQgbm90IGxpa2UgaGlzIGZhdGhlciwgYW5kIGxpa2UgaGlzIG1vdGhlcjogZm9yIGhlIHB1dCBhd2F5IHRoZSBpbWFnZSBvZiBCYWFsIHRoYXQgaGlzIGZhdGhlciBoYWQgbWFkZS4KTmV2ZXJ0aGVsZXNzIGhlIGNsZWF2ZWQgdW50byB0aGUgc2lucyBvZiBKZXJvYm9hbSB0aGUgc29uIG9mIE5lYmF0LCB3aGljaCBtYWRlIElzcmFlbCB0byBzaW47IGhlIGRlcGFydGVkIG5vdCB0aGVyZWZyb20uCkFuZCBNZXNoYSBraW5nIG9mIE1vYWIgd2FzIGEgc2hlZXBtYXN0ZXIsIGFuZCByZW5kZXJlZCB1bnRvIHRoZSBraW5nIG9mIElzcmFlbCBhbiBodW5kcmVkIHRob3VzYW5kIGxhbWJzLCBhbmQgYW4gaHVuZHJlZCB0aG91c2FuZCByYW1zLCB3aXRoIHRoZSB3b29sLgpCdXQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIEFoYWIgd2FzIGRlYWQsIHRoYXQgdGhlIGtpbmcgb2YgTW9hYiByZWJlbGxlZCBhZ2FpbnN0IHRoZSBraW5nIG9mIElzcmFlbC4KQW5kIGtpbmcgSmVob3JhbSB3ZW50IG91dCBvZiBTYW1hcmlhIHRoZSBzYW1lIHRpbWUsIGFuZCBudW1iZXJlZCBhbGwgSXNyYWVsLgpBbmQgaGUgd2VudCBhbmQgc2VudCB0byBKZWhvc2hhcGhhdCB0aGUga2luZyBvZiBKdWRhaCwgc2F5aW5nLCBUaGUga2luZyBvZiBNb2FiIGhhdGggcmViZWxsZWQgYWdhaW5zdCBtZTogd2lsdCB0aG91IGdvIHdpdGggbWUgYWdhaW5zdCBNb2FiIHRvIGJhdHRsZT8gQW5kIGhlIHNhaWQsIEkgd2lsbCBnbyB1cDogSSBhbSBhcyB0aG91IGFydCwgbXkgcGVvcGxlIGFzIHRoeSBwZW9wbGUsIGFuZCBteSBob3JzZXMgYXMgdGh5IGhvcnNlcy4KQW5kIGhlIHNhaWQsIFdoaWNoIHdheSBzaGFsbCB3ZSBnbyB1cD8gQW5kIGhlIGFuc3dlcmVkLCBUaGUgd2F5IHRocm91Z2ggdGhlIHdpbGRlcm5lc3Mgb2YgRWRvbS4KU28gdGhlIGtpbmcgb2YgSXNyYWVsIHdlbnQsIGFuZCB0aGUga2luZyBvZiBKdWRhaCwgYW5kIHRoZSBraW5nIG9mIEVkb206IGFuZCB0aGV5IGZldGNoZWQgYSBjb21wYXNzIG9mIHNldmVuIGRheXMnIGpvdXJuZXk6IGFuZCB0aGVyZSB3YXMgbm8gd2F0ZXIgZm9yIHRoZSBob3N0LCBhbmQgZm9yIHRoZSBjYXR0bGUgdGhhdCBmb2xsb3dlZCB0aGVtLgpBbmQgdGhlIGtpbmcgb2YgSXNyYWVsIHNhaWQsIEFsYXMhIHRoYXQgdGhlIExPUkQgaGF0aCBjYWxsZWQgdGhlc2UgdGhyZWUga2luZ3MgdG9nZXRoZXIsIHRvIGRlbGl2ZXIgdGhlbSBpbnRvIHRoZSBoYW5kIG9mIE1vYWIhCkJ1dCBKZWhvc2hhcGhhdCBzYWlkLCBJcyB0aGVyZSBub3QgaGVyZSBhIHByb3BoZXQgb2YgdGhlIExPUkQsIHRoYXQgd2UgbWF5IGVucXVpcmUgb2YgdGhlIExPUkQgYnkgaGltPyBBbmQgb25lIG9mIHRoZSBraW5nIG9mIElzcmFlbCdzIHNlcnZhbnRzIGFuc3dlcmVkIGFuZCBzYWlkLCBIZXJlIGlzIEVsaXNoYSB0aGUgc29uIG9mIFNoYXBoYXQsIHdoaWNoIHBvdXJlZCB3YXRlciBvbiB0aGUgaGFuZHMgb2YgRWxpamFoLgpBbmQgSmVob3NoYXBoYXQgc2FpZCwgVGhlIHdvcmQgb2YgdGhlIExPUkQgaXMgd2l0aCBoaW0uIFNvIHRoZSBraW5nIG9mIElzcmFlbCBhbmQgSmVob3NoYXBoYXQgYW5kIHRoZSBraW5nIG9mIEVkb20gd2VudCBkb3duIHRvIGhpbS4KQW5kIEVsaXNoYSBzYWlkIHVudG8gdGhlIGtpbmcgb2YgSXNyYWVsLCBXaGF0IGhhdmUgSSB0byBkbyB3aXRoIHRoZWU/IGdldCB0aGVlIHRvIHRoZSBwcm9waGV0cyBvZiB0aHkgZmF0aGVyLCBhbmQgdG8gdGhlIHByb3BoZXRzIG9mIHRoeSBtb3RoZXIuIEFuZCB0aGUga2luZyBvZiBJc3JhZWwgc2FpZCB1bnRvIGhpbSwgTmF5OiBmb3IgdGhlIExPUkQgaGF0aCBjYWxsZWQgdGhlc2UgdGhyZWUga2luZ3MgdG9nZXRoZXIsIHRvIGRlbGl2ZXIgdGhlbSBpbnRvIHRoZSBoYW5kIG9mIE1vYWIuCkFuZCBFbGlzaGEgc2FpZCwgQXMgdGhlIExPUkQgb2YgaG9zdHMgbGl2ZXRoLCBiZWZvcmUgd2hvbSBJIHN0YW5kLCBzdXJlbHksIHdlcmUgaXQgbm90IHRoYXQgSSByZWdhcmQgdGhlIHByZXNlbmNlIG9mIEplaG9zaGFwaGF0IHRoZSBraW5nIG9mIEp1ZGFoLCBJIHdvdWxkIG5vdCBsb29rIHRvd2FyZCB0aGVlLCBub3Igc2VlIHRoZWUuCkJ1dCBub3cgYnJpbmcgbWUgYSBtaW5zdHJlbC4gQW5kIGl0IGNhbWUgdG8gcGFzcywgd2hlbiB0aGUgbWluc3RyZWwgcGxheWVkLCB0aGF0IHRoZSBoYW5kIG9mIHRoZSBMT1JEIGNhbWUgdXBvbiBoaW0uCkFuZCBoZSBzYWlkLCBUaHVzIHNhaXRoIHRoZSBMT1JELCBNYWtlIHRoaXMgdmFsbGV5IGZ1bGwgb2YgZGl0Y2hlcy4KRm9yIHRodXMgc2FpdGggdGhlIExPUkQsIFllIHNoYWxsIG5vdCBzZWUgd2luZCwgbmVpdGhlciBzaGFsbCB5ZSBzZWUgcmFpbjsgeWV0IHRoYXQgdmFsbGV5IHNoYWxsIGJlIGZpbGxlZCB3aXRoIHdhdGVyLCB0aGF0IHllIG1heSBkcmluaywgYm90aCB5ZSwgYW5kIHlvdXIgY2F0dGxlLCBhbmQgeW91ciBiZWFzdHMuCkFuZCB0aGlzIGlzIGJ1dCBhIGxpZ2h0IHRoaW5nIGluIHRoZSBzaWdodCBvZiB0aGUgTE9SRDogaGUgd2lsbCBkZWxpdmVyIHRoZSBNb2FiaXRlcyBhbHNvIGludG8geW91ciBoYW5kLgpBbmQgeWUgc2hhbGwgc21pdGUgZXZlcnkgZmVuY2VkIGNpdHksIGFuZCBldmVyeSBjaG9pY2UgY2l0eSwgYW5kIHNoYWxsIGZlbGwgZXZlcnkgZ29vZCB0cmVlLCBhbmQgc3RvcCBhbGwgd2VsbHMgb2Ygd2F0ZXIsIGFuZCBtYXIgZXZlcnkgZ29vZCBwaWVjZSBvZiBsYW5kIHdpdGggc3RvbmVzLgpBbmQgaXQgY2FtZSB0byBwYXNzIGluIHRoZSBtb3JuaW5nLCB3aGVuIHRoZSBtZWF0IG9mZmVyaW5nIHdhcyBvZmZlcmVkLCB0aGF0LCBiZWhvbGQsIHRoZXJlIGNhbWUgd2F0ZXIgYnkgdGhlIHdheSBvZiBFZG9tLCBhbmQgdGhlIGNvdW50cnkgd2FzIGZpbGxlZCB3aXRoIHdhdGVyLgpBbmQgd2hlbiBhbGwgdGhlIE1vYWJpdGVzIGhlYXJkIHRoYXQgdGhlIGtpbmdzIHdlcmUgY29tZSB1cCB0byBmaWdodCBhZ2FpbnN0IHRoZW0sIHRoZXkgZ2F0aGVyZWQgYWxsIHRoYXQgd2VyZSBhYmxlIHRvIHB1dCBvbiBhcm1vdXIsIGFuZCB1cHdhcmQsIGFuZCBzdG9vZCBpbiB0aGUgYm9yZGVyLgpBbmQgdGhleSByb3NlIHVwIGVhcmx5IGluIHRoZSBtb3JuaW5nLCBhbmQgdGhlIHN1biBzaG9uZSB1cG9uIHRoZSB3YXRlciwgYW5kIHRoZSBNb2FiaXRlcyBzYXcgdGhlIHdhdGVyIG9uIHRoZSBvdGhlciBzaWRlIGFzIHJlZCBhcyBibG9vZDoKQW5kIHRoZXkgc2FpZCwgVGhpcyBpcyBibG9vZDogdGhlIGtpbmdzIGFyZSBzdXJlbHkgc2xhaW4sIGFuZCB0aGV5IGhhdmUgc21pdHRlbiBvbmUgYW5vdGhlcjogbm93IHRoZXJlZm9yZSwgTW9hYiwgdG8gdGhlIHNwb2lsLgpBbmQgd2hlbiB0aGV5IGNhbWUgdG8gdGhlIGNhbXAgb2YgSXNyYWVsLCB0aGUgSXNyYWVsaXRlcyByb3NlIHVwIGFuZCBzbW90ZSB0aGUgTW9hYml0ZXMsIHNvIHRoYXQgdGhleSBmbGVkIGJlZm9yZSB0aGVtOiBidXQgdGhleSB3ZW50IGZvcndhcmQgc21pdGluZyB0aGUgTW9hYml0ZXMsIGV2ZW4gaW4gdGhlaXIgY291bnRyeS4KQW5kIHRoZXkgYmVhdCBkb3duIHRoZSBjaXRpZXMsIGFuZCBvbiBldmVyeSBnb29kIHBpZWNlIG9mIGxhbmQgY2FzdCBldmVyeSBtYW4gaGlzIHN0b25lLCBhbmQgZmlsbGVkIGl0OyBhbmQgdGhleSBzdG9wcGVkIGFsbCB0aGUgd2VsbHMgb2Ygd2F0ZXIsIGFuZCBmZWxsZWQgYWxsIHRoZSBnb29kIHRyZWVzOiBvbmx5IGluIEtpcmhhcmFzZXRoIGxlZnQgdGhleSB0aGUgc3RvbmVzIHRoZXJlb2Y7IGhvd2JlaXQgdGhlIHNsaW5nZXJzIHdlbnQgYWJvdXQgaXQsIGFuZCBzbW90ZSBpdC4KQW5kIHdoZW4gdGhlIGtpbmcgb2YgTW9hYiBzYXcgdGhhdCB0aGUgYmF0dGxlIHdhcyB0b28gc29yZSBmb3IgaGltLCBoZSB0b29rIHdpdGggaGltIHNldmVuIGh1bmRyZWQgbWVuIHRoYXQgZHJldyBzd29yZHMsIHRvIGJyZWFrIHRocm91Z2ggZXZlbiB1bnRvIHRoZSBraW5nIG9mIEVkb206IGJ1dCB0aGV5IGNvdWxkIG5vdC4KVGhlbiBoZSB0b29rIGhpcyBlbGRlc3Qgc29uIHRoYXQgc2hvdWxkIGhhdmUgcmVpZ25lZCBpbiBoaXMgc3RlYWQsIGFuZCBvZmZlcmVkIGhpbSBmb3IgYSBidXJudCBvZmZlcmluZyB1cG9uIHRoZSB3YWxsLiBBbmQgdGhlcmUgd2FzIGdyZWF0IGluZGlnbmF0aW9uIGFnYWluc3QgSXNyYWVsOiBhbmQgdGhleSBkZXBhcnRlZCBmcm9tIGhpbSwgYW5kIHJldHVybmVkIHRvIHRoZWlyIG93biBsYW5kLgpOb3cgdGhlcmUgY3JpZWQgYSBjZXJ0YWluIHdvbWFuIG9mIHRoZSB3aXZlcyBvZiB0aGUgc29ucyBvZiB0aGUgcHJvcGhldHMgdW50byBFbGlzaGEsIHNheWluZywgVGh5IHNlcnZhbnQgbXkgaHVzYmFuZCBpcyBkZWFkOyBhbmQgdGhvdSBrbm93ZXN0IHRoYXQgdGh5IHNlcnZhbnQgZGlkIGZlYXIgdGhlIExPUkQ6IGFuZCB0aGUgY3JlZGl0b3IgaXMgY29tZSB0byB0YWtlIHVudG8gaGltIG15IHR3byBzb25zIHRvIGJlIGJvbmRtZW4uCkFuZCBFbGlzaGEgc2FpZCB1bnRvIGhlciwgV2hhdCBzaGFsbCBJIGRvIGZvciB0aGVlPyB0ZWxsIG1lLCB3aGF0IGhhc3QgdGhvdSBpbiB0aGUgaG91c2U/IEFuZCBzaGUgc2FpZCwgVGhpbmUgaGFuZG1haWQgaGF0aCBub3QgYW55IHRoaW5nIGluIHRoZSBob3VzZSwgc2F2ZSBhIHBvdCBvZiBvaWwuClRoZW4gaGUgc2FpZCwgR28sIGJvcnJvdyB0aGVlIHZlc3NlbHMgYWJyb2FkIG9mIGFsbCB0aHkgbmVpZ2hib3VycywgZXZlbiBlbXB0eSB2ZXNzZWxzOyBib3Jyb3cgbm90IGEgZmV3LgpBbmQgd2hlbiB0aG91IGFydCBjb21lIGluLCB0aG91IHNoYWx0IHNodXQgdGhlIGRvb3IgdXBvbiB0aGVlIGFuZCB1cG9uIHRoeSBzb25zLCBhbmQgc2hhbHQgcG91ciBvdXQgaW50byBhbGwgdGhvc2UgdmVzc2VscywgYW5kIHRob3Ugc2hhbHQgc2V0IGFzaWRlIHRoYXQgd2hpY2ggaXMgZnVsbC4KU28gc2hlIHdlbnQgZnJvbSBoaW0sIGFuZCBzaHV0IHRoZSBkb29yIHVwb24gaGVyIGFuZCB1cG9uIGhlciBzb25zLCB3aG8gYnJvdWdodCB0aGUgdmVzc2VscyB0byBoZXI7IGFuZCBzaGUgcG91cmVkIG91dC4KQW5kIGl0IGNhbWUgdG8gcGFzcywgd2hlbiB0aGUgdmVzc2VscyB3ZXJlIGZ1bGwsIHRoYXQgc2hlIHNhaWQgdW50byBoZXIgc29uLCBCcmluZyBtZSB5ZXQgYSB2ZXNzZWwuIEFuZCBoZSBzYWlkIHVudG8gaGVyLCBUaGVyZSBpcyBub3QgYSB2ZXNzZWwgbW9yZS4gQW5kIHRoZSBvaWwgc3RheWVkLgpUaGVuIHNoZSBjYW1lIGFuZCB0b2xkIHRoZSBtYW4gb2YgR29kLiBBbmQgaGUgc2FpZCwgR28sIHNlbGwgdGhlIG9pbCwgYW5kIHBheSB0aHkgZGVidCwgYW5kIGxpdmUgdGhvdSBhbmQgdGh5IGNoaWxkcmVuIG9mIHRoZSByZXN0LgpBbmQgaXQgZmVsbCBvbiBhIGRheSwgdGhhdCBFbGlzaGEgcGFzc2VkIHRvIFNodW5lbSwgd2hlcmUgd2FzIGEgZ3JlYXQgd29tYW47IGFuZCBzaGUgY29uc3RyYWluZWQgaGltIHRvIGVhdCBicmVhZC4gQW5kIHNvIGl0IHdhcywgdGhhdCBhcyBvZnQgYXMgaGUgcGFzc2VkIGJ5LCBoZSB0dXJuZWQgaW4gdGhpdGhlciB0byBlYXQgYnJlYWQuCkFuZCBzaGUgc2FpZCB1bnRvIGhlciBodXNiYW5kLCBCZWhvbGQgbm93LCBJIHBlcmNlaXZlIHRoYXQgdGhpcyBpcyBhbiBob2x5IG1hbiBvZiBHb2QsIHdoaWNoIHBhc3NldGggYnkgdXMgY29udGludWFsbHkuCkxldCB1cyBtYWtlIGEgbGl0dGxlIGNoYW1iZXIsIEkgcHJheSB0aGVlLCBvbiB0aGUgd2FsbDsgYW5kIGxldCB1cyBzZXQgZm9yIGhpbSB0aGVyZSBhIGJlZCwgYW5kIGEgdGFibGUsIGFuZCBhIHN0b29sLCBhbmQgYSBjYW5kbGVzdGljazogYW5kIGl0IHNoYWxsIGJlLCB3aGVuIGhlIGNvbWV0aCB0byB1cywgdGhhdCBoZSBzaGFsbCB0dXJuIGluIHRoaXRoZXIuCkFuZCBpdCBmZWxsIG9uIGEgZGF5LCB0aGF0IGhlIGNhbWUgdGhpdGhlciwgYW5kIGhlIHR1cm5lZCBpbnRvIHRoZSBjaGFtYmVyLCBhbmQgbGF5IHRoZXJlLgpBbmQgaGUgc2FpZCB0byBHZWhhemkgaGlzIHNlcnZhbnQsIENhbGwgdGhpcyBTaHVuYW1taXRlLiBBbmQgd2hlbiBoZSBoYWQgY2FsbGVkIGhlciwgc2hlIHN0b29kIGJlZm9yZSBoaW0uCkFuZCBoZSBzYWlkIHVudG8gaGltLCBTYXkgbm93IHVudG8gaGVyLCBCZWhvbGQsIHRob3UgaGFzdCBiZWVuIGNhcmVmdWwgZm9yIHVzIHdpdGggYWxsIHRoaXMgY2FyZTsgd2hhdCBpcyB0byBiZSBkb25lIGZvciB0aGVlPyB3b3VsZGVzdCB0aG91IGJlIHNwb2tlbiBmb3IgdG8gdGhlIGtpbmcsIG9yIHRvIHRoZSBjYXB0YWluIG9mIHRoZSBob3N0PyBBbmQgc2hlIGFuc3dlcmVkLCBJIGR3ZWxsIGFtb25nIG1pbmUgb3duIHBlb3BsZS4KQW5kIGhlIHNhaWQsIFdoYXQgdGhlbiBpcyB0byBiZSBkb25lIGZvciBoZXI/IEFuZCBHZWhhemkgYW5zd2VyZWQsIFZlcmlseSBzaGUgaGF0aCBubyBjaGlsZCwgYW5kIGhlciBodXNiYW5kIGlzIG9sZC4KQW5kIGhlIHNhaWQsIENhbGwgaGVyLiBBbmQgd2hlbiBoZSBoYWQgY2FsbGVkIGhlciwgc2hlIHN0b29kIGluIHRoZSBkb29yLgpBbmQgaGUgc2FpZCwgQWJvdXQgdGhpcyBzZWFzb24sIGFjY29yZGluZyB0byB0aGUgdGltZSBvZiBsaWZlLCB0aG91IHNoYWx0IGVtYnJhY2UgYSBzb24uIEFuZCBzaGUgc2FpZCwgTmF5LCBteSBsb3JkLCB0aG91IG1hbiBvZiBHb2QsIGRvIG5vdCBsaWUgdW50byB0aGluZSBoYW5kbWFpZC4KQW5kIHRoZSB3b21hbiBjb25jZWl2ZWQsIGFuZCBiYXJlIGEgc29uIGF0IHRoYXQgc2Vhc29uIHRoYXQgRWxpc2hhIGhhZCBzYWlkIHVudG8gaGVyLCBhY2NvcmRpbmcgdG8gdGhlIHRpbWUgb2YgbGlmZS4KQW5kIHdoZW4gdGhlIGNoaWxkIHdhcyBncm93biwgaXQgZmVsbCBvbiBhIGRheSwgdGhhdCBoZSB3ZW50IG91dCB0byBoaXMgZmF0aGVyIHRvIHRoZSByZWFwZXJzLgpBbmQgaGUgc2FpZCB1bnRvIGhpcyBmYXRoZXIsIE15IGhlYWQsIG15IGhlYWQuIEFuZCBoZSBzYWlkIHRvIGEgbGFkLCBDYXJyeSBoaW0gdG8gaGlzIG1vdGhlci4KQW5kIHdoZW4gaGUgaGFkIHRha2VuIGhpbSwgYW5kIGJyb3VnaHQgaGltIHRvIGhpcyBtb3RoZXIsIGhlIHNhdCBvbiBoZXIga25lZXMgdGlsbCBub29uLCBhbmQgdGhlbiBkaWVkLgpBbmQgc2hlIHdlbnQgdXAsIGFuZCBsYWlkIGhpbSBvbiB0aGUgYmVkIG9mIHRoZSBtYW4gb2YgR29kLCBhbmQgc2h1dCB0aGUgZG9vciB1cG9uIGhpbSwgYW5kIHdlbnQgb3V0LgpBbmQgc2hlIGNhbGxlZCB1bnRvIGhlciBodXNiYW5kLCBhbmQgc2FpZCwgU2VuZCBtZSwgSSBwcmF5IHRoZWUsIG9uZSBvZiB0aGUgeW91bmcgbWVuLCBhbmQgb25lIG9mIHRoZSBhc3NlcywgdGhhdCBJIG1heSBydW4gdG8gdGhlIG1hbiBvZiBHb2QsIGFuZCBjb21lIGFnYWluLgpBbmQgaGUgc2FpZCwgV2hlcmVmb3JlIHdpbHQgdGhvdSBnbyB0byBoaW0gdG8gZGF5PyBpdCBpcyBuZWl0aGVyIG5ldyBtb29uLCBub3Igc2FiYmF0aC4gQW5kIHNoZSBzYWlkLCBJdCBzaGFsbCBiZSB3ZWxsLgpUaGVuIHNoZSBzYWRkbGVkIGFuIGFzcywgYW5kIHNhaWQgdG8gaGVyIHNlcnZhbnQsIERyaXZlLCBhbmQgZ28gZm9yd2FyZDsgc2xhY2sgbm90IHRoeSByaWRpbmcgZm9yIG1lLCBleGNlcHQgSSBiaWQgdGhlZS4KU28gc2hlIHdlbnQgYW5kIGNhbWUgdW50byB0aGUgbWFuIG9mIEdvZCB0byBtb3VudCBDYXJtZWwuIEFuZCBpdCBjYW1lIHRvIHBhc3MsIHdoZW4gdGhlIG1hbiBvZiBHb2Qgc2F3IGhlciBhZmFyIG9mZiwgdGhhdCBoZSBzYWlkIHRvIEdlaGF6aSBoaXMgc2VydmFudCwgQmVob2xkLCB5b25kZXIgaXMgdGhhdCBTaHVuYW1taXRlOgpSdW4gbm93LCBJIHByYXkgdGhlZSwgdG8gbWVldCBoZXIsIGFuZCBzYXkgdW50byBoZXIsIElzIGl0IHdlbGwgd2l0aCB0aGVlPyBpcyBpdCB3ZWxsIHdpdGggdGh5IGh1c2JhbmQ/IGlzIGl0IHdlbGwgd2l0aCB0aGUgY2hpbGQ/IEFuZCBzaGUgYW5zd2VyZWQsIEl0IGlzIHdlbGw6CkFuZCB3aGVuIHNoZSBjYW1lIHRvIHRoZSBtYW4gb2YgR29kIHRvIHRoZSBoaWxsLCBzaGUgY2F1Z2h0IGhpbSBieSB0aGUgZmVldDogYnV0IEdlaGF6aSBjYW1lIG5lYXIgdG8gdGhydXN0IGhlciBhd2F5LiBBbmQgdGhlIG1hbiBvZiBHb2Qgc2FpZCwgTGV0IGhlciBhbG9uZTsgZm9yIGhlciBzb3VsIGlzIHZleGVkIHdpdGhpbiBoZXI6IGFuZCB0aGUgTE9SRCBoYXRoIGhpZCBpdCBmcm9tIG1lLCBhbmQgaGF0aCBub3QgdG9sZCBtZS4KVGhlbiBzaGUgc2FpZCwgRGlkIEkgZGVzaXJlIGEgc29uIG9mIG15IGxvcmQ/IGRpZCBJIG5vdCBzYXksIERvIG5vdCBkZWNlaXZlIG1lPwpUaGVuIGhlIHNhaWQgdG8gR2VoYXppLCBHaXJkIHVwIHRoeSBsb2lucywgYW5kIHRha2UgbXkgc3RhZmYgaW4gdGhpbmUgaGFuZCwgYW5kIGdvIHRoeSB3YXk6IGlmIHRob3UgbWVldCBhbnkgbWFuLCBzYWx1dGUgaGltIG5vdDsgYW5kIGlmIGFueSBzYWx1dGUgdGhlZSwgYW5zd2VyIGhpbSBub3QgYWdhaW46IGFuZCBsYXkgbXkgc3RhZmYgdXBvbiB0aGUgZmFjZSBvZiB0aGUgY2hpbGQuCkFuZCB0aGUgbW90aGVyIG9mIHRoZSBjaGlsZCBzYWlkLCBBcyB0aGUgTE9SRCBsaXZldGgsIGFuZCBhcyB0aHkgc291bCBsaXZldGgsIEkgd2lsbCBub3QgbGVhdmUgdGhlZS4gQW5kIGhlIGFyb3NlLCBhbmQgZm9sbG93ZWQgaGVyLgpBbmQgR2VoYXppIHBhc3NlZCBvbiBiZWZvcmUgdGhlbSwgYW5kIGxhaWQgdGhlIHN0YWZmIHVwb24gdGhlIGZhY2Ugb2YgdGhlIGNoaWxkOyBidXQgdGhlcmUgd2FzIG5laXRoZXIgdm9pY2UsIG5vciBoZWFyaW5nLiBXaGVyZWZvcmUgaGUgd2VudCBhZ2FpbiB0byBtZWV0IGhpbSwgYW5kIHRvbGQgaGltLCBzYXlpbmcsIFRoZSBjaGlsZCBpcyBub3QgYXdha2VkLgpBbmQgd2hlbiBFbGlzaGEgd2FzIGNvbWUgaW50byB0aGUgaG91c2UsIGJlaG9sZCwgdGhlIGNoaWxkIHdhcyBkZWFkLCBhbmQgbGFpZCB1cG9uIGhpcyBiZWQuCkhlIHdlbnQgaW4gdGhlcmVmb3JlLCBhbmQgc2h1dCB0aGUgZG9vciB1cG9uIHRoZW0gdHdhaW4sIGFuZCBwcmF5ZWQgdW50byB0aGUgTE9SRC4KQW5kIGhlIHdlbnQgdXAsIGFuZCBsYXkgdXBvbiB0aGUgY2hpbGQsIGFuZCBwdXQgaGlzIG1vdXRoIHVwb24gaGlzIG1vdXRoLCBhbmQgaGlzIGV5ZXMgdXBvbiBoaXMgZXllcywgYW5kIGhpcyBoYW5kcyB1cG9uIGhpcyBoYW5kczogYW5kIHN0cmV0Y2hlZCBoaW1zZWxmIHVwb24gdGhlIGNoaWxkOyBhbmQgdGhlIGZsZXNoIG9mIHRoZSBjaGlsZCB3YXhlZCB3YXJtLgpUaGVuIGhlIHJldHVybmVkLCBhbmQgd2Fsa2VkIGluIHRoZSBob3VzZSB0byBhbmQgZnJvOyBhbmQgd2VudCB1cCwgYW5kIHN0cmV0Y2hlZCBoaW1zZWxmIHVwb24gaGltOiBhbmQgdGhlIGNoaWxkIHNuZWV6ZWQgc2V2ZW4gdGltZXMsIGFuZCB0aGUgY2hpbGQgb3BlbmVkIGhpcyBleWVzLgpBbmQgaGUgY2FsbGVkIEdlaGF6aSwgYW5kIHNhaWQsIENhbGwgdGhpcyBTaHVuYW1taXRlLiBTbyBoZSBjYWxsZWQgaGVyLiBBbmQgd2hlbiBzaGUgd2FzIGNvbWUgaW4gdW50byBoaW0sIGhlIHNhaWQsIFRha2UgdXAgdGh5IHNvbi4KVGhlbiBzaGUgd2VudCBpbiwgYW5kIGZlbGwgYXQgaGlzIGZlZXQsIGFuZCBib3dlZCBoZXJzZWxmIHRvIHRoZSBncm91bmQsIGFuZCB0b29rIHVwIGhlciBzb24sIGFuZCB3ZW50IG91dC4KQW5kIEVsaXNoYSBjYW1lIGFnYWluIHRvIEdpbGdhbDogYW5kIHRoZXJlIHdhcyBhIGRlYXJ0aCBpbiB0aGUgbGFuZDsgYW5kIHRoZSBzb25zIG9mIHRoZSBwcm9waGV0cyB3ZXJlIHNpdHRpbmcgYmVmb3JlIGhpbTogYW5kIGhlIHNhaWQgdW50byBoaXMgc2VydmFudCwgU2V0IG9uIHRoZSBncmVhdCBwb3QsIGFuZCBzZWV0aGUgcG90dGFnZSBmb3IgdGhlIHNvbnMgb2YgdGhlIHByb3BoZXRzLgpBbmQgb25lIHdlbnQgb3V0IGludG8gdGhlIGZpZWxkIHRvIGdhdGhlciBoZXJicywgYW5kIGZvdW5kIGEgd2lsZCB2aW5lLCBhbmQgZ2F0aGVyZWQgdGhlcmVvZiB3aWxkIGdvdXJkcyBoaXMgbGFwIGZ1bGwsIGFuZCBjYW1lIGFuZCBzaHJlZCB0aGVtIGludG8gdGhlIHBvdCBvZiBwb3R0YWdlOiBmb3IgdGhleSBrbmV3IHRoZW0gbm90LgpTbyB0aGV5IHBvdXJlZCBvdXQgZm9yIHRoZSBtZW4gdG8gZWF0LiBBbmQgaXQgY2FtZSB0byBwYXNzLCBhcyB0aGV5IHdlcmUgZWF0aW5nIG9mIHRoZSBwb3R0YWdlLCB0aGF0IHRoZXkgY3JpZWQgb3V0LCBhbmQgc2FpZCwgTyB0aG91IG1hbiBvZiBHb2QsIHRoZXJlIGlzIGRlYXRoIGluIHRoZSBwb3QuIEFuZCB0aGV5IGNvdWxkIG5vdCBlYXQgdGhlcmVvZi4KQnV0IGhlIHNhaWQsIFRoZW4gYnJpbmcgbWVhbC4gQW5kIGhlIGNhc3QgaXQgaW50byB0aGUgcG90OyBhbmQgaGUgc2FpZCwgUG91ciBvdXQgZm9yIHRoZSBwZW9wbGUsIHRoYXQgdGhleSBtYXkgZWF0LiBBbmQgdGhlcmUgd2FzIG5vIGhhcm0gaW4gdGhlIHBvdC4KQW5kIHRoZXJlIGNhbWUgYSBtYW4gZnJvbSBCYWFsc2hhbGlzaGEsIGFuZCBicm91Z2h0IHRoZSBtYW4gb2YgR29kIGJyZWFkIG9mIHRoZSBmaXJzdGZydWl0cywgdHdlbnR5IGxvYXZlcyBvZiBiYXJsZXksIGFuZCBmdWxsIGVhcnMgb2YgY29ybiBpbiB0aGUgaHVzayB0aGVyZW9mLiBBbmQgaGUgc2FpZCwgR2l2ZSB1bnRvIHRoZSBwZW9wbGUsIHRoYXQgdGhleSBtYXkgZWF0LgpBbmQgaGlzIHNlcnZpdG9yIHNhaWQsIFdoYXQsIHNob3VsZCBJIHNldCB0aGlzIGJlZm9yZSBhbiBodW5kcmVkIG1lbj8gSGUgc2FpZCBhZ2FpbiwgR2l2ZSB0aGUgcGVvcGxlLCB0aGF0IHRoZXkgbWF5IGVhdDogZm9yIHRodXMgc2FpdGggdGhlIExPUkQsIFRoZXkgc2hhbGwgZWF0LCBhbmQgc2hhbGwgbGVhdmUgdGhlcmVvZi4KU28gaGUgc2V0IGl0IGJlZm9yZSB0aGVtLCBhbmQgdGhleSBkaWQgZWF0LCBhbmQgbGVmdCB0aGVyZW9mLCBhY2NvcmRpbmcgdG8gdGhlIHdvcmQgb2YgdGhlIExPUkQuCk5vdyBOYWFtYW4sIGNhcHRhaW4gb2YgdGhlIGhvc3Qgb2YgdGhlIGtpbmcgb2YgU3lyaWEsIHdhcyBhIGdyZWF0IG1hbiB3aXRoIGhpcyBtYXN0ZXIsIGFuZCBob25vdXJhYmxlLCBiZWNhdXNlIGJ5IGhpbSB0aGUgTE9SRCBoYWQgZ2l2ZW4gZGVsaXZlcmFuY2UgdW50byBTeXJpYTogaGUgd2FzIGFsc28gYSBtaWdodHkgbWFuIGluIHZhbG91ciwgYnV0IGhlIHdhcyBhIGxlcGVyLgpBbmQgdGhlIFN5cmlhbnMgaGFkIGdvbmUgb3V0IGJ5IGNvbXBhbmllcywgYW5kIGhhZCBicm91Z2h0IGF3YXkgY2FwdGl2ZSBvdXQgb2YgdGhlIGxhbmQgb2YgSXNyYWVsIGEgbGl0dGxlIG1haWQ7IGFuZCBzaGUgd2FpdGVkIG9uIE5hYW1hbidzIHdpZmUuCkFuZCBzaGUgc2FpZCB1bnRvIGhlciBtaXN0cmVzcywgV291bGQgR29kIG15IGxvcmQgd2VyZSB3aXRoIHRoZSBwcm9waGV0IHRoYXQgaXMgaW4gU2FtYXJpYSEgZm9yIGhlIHdvdWxkIHJlY292ZXIgaGltIG9mIGhpcyBsZXByb3N5LgpBbmQgb25lIHdlbnQgaW4sIGFuZCB0b2xkIGhpcyBsb3JkLCBzYXlpbmcsIFRodXMgYW5kIHRodXMgc2FpZCB0aGUgbWFpZCB0aGF0IGlzIG9mIHRoZSBsYW5kIG9mIElzcmFlbC4KQW5kIHRoZSBraW5nIG9mIFN5cmlhIHNhaWQsIEdvIHRvLCBnbywgYW5kIEkgd2lsbCBzZW5kIGEgbGV0dGVyIHVudG8gdGhlIGtpbmcgb2YgSXNyYWVsLiBBbmQgaGUgZGVwYXJ0ZWQsIGFuZCB0b29rIHdpdGggaGltIHRlbiB0YWxlbnRzIG9mIHNpbHZlciwgYW5kIHNpeCB0aG91c2FuZCBwaWVjZXMgb2YgZ29sZCwgYW5kIHRlbiBjaGFuZ2VzIG9mIHJhaW1lbnQuCkFuZCBoZSBicm91Z2h0IHRoZSBsZXR0ZXIgdG8gdGhlIGtpbmcgb2YgSXNyYWVsLCBzYXlpbmcsIE5vdyB3aGVuIHRoaXMgbGV0dGVyIGlzIGNvbWUgdW50byB0aGVlLCBiZWhvbGQsIEkgaGF2ZSB0aGVyZXdpdGggc2VudCBOYWFtYW4gbXkgc2VydmFudCB0byB0aGVlLCB0aGF0IHRob3UgbWF5ZXN0IHJlY292ZXIgaGltIG9mIGhpcyBsZXByb3N5LgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIHRoZSBraW5nIG9mIElzcmFlbCBoYWQgcmVhZCB0aGUgbGV0dGVyLCB0aGF0IGhlIHJlbnQgaGlzIGNsb3RoZXMsIGFuZCBzYWlkLCBBbSBJIEdvZCwgdG8ga2lsbCBhbmQgdG8gbWFrZSBhbGl2ZSwgdGhhdCB0aGlzIG1hbiBkb3RoIHNlbmQgdW50byBtZSB0byByZWNvdmVyIGEgbWFuIG9mIGhpcyBsZXByb3N5PyB3aGVyZWZvcmUgY29uc2lkZXIsIEkgcHJheSB5b3UsIGFuZCBzZWUgaG93IGhlIHNlZWtldGggYSBxdWFycmVsIGFnYWluc3QgbWUuCkFuZCBpdCB3YXMgc28sIHdoZW4gRWxpc2hhIHRoZSBtYW4gb2YgR29kIGhhZCBoZWFyZCB0aGF0IHRoZSBraW5nIG9mIElzcmFlbCBoYWQgcmVudCBoaXMgY2xvdGhlcywgdGhhdCBoZSBzZW50IHRvIHRoZSBraW5nLCBzYXlpbmcsIFdoZXJlZm9yZSBoYXN0IHRob3UgcmVudCB0aHkgY2xvdGhlcz8gbGV0IGhpbSBjb21lIG5vdyB0byBtZSwgYW5kIGhlIHNoYWxsIGtub3cgdGhhdCB0aGVyZSBpcyBhIHByb3BoZXQgaW4gSXNyYWVsLgpTbyBOYWFtYW4gY2FtZSB3aXRoIGhpcyBob3JzZXMgYW5kIHdpdGggaGlzIGNoYXJpb3QsIGFuZCBzdG9vZCBhdCB0aGUgZG9vciBvZiB0aGUgaG91c2Ugb2YgRWxpc2hhLgpBbmQgRWxpc2hhIHNlbnQgYSBtZXNzZW5nZXIgdW50byBoaW0sIHNheWluZywgR28gYW5kIHdhc2ggaW4gSm9yZGFuIHNldmVuIHRpbWVzLCBhbmQgdGh5IGZsZXNoIHNoYWxsIGNvbWUgYWdhaW4gdG8gdGhlZSwgYW5kIHRob3Ugc2hhbHQgYmUgY2xlYW4uCkJ1dCBOYWFtYW4gd2FzIHdyb3RoLCBhbmQgd2VudCBhd2F5LCBhbmQgc2FpZCwgQmVob2xkLCBJIHRob3VnaHQsIEhlIHdpbGwgc3VyZWx5IGNvbWUgb3V0IHRvIG1lLCBhbmQgc3RhbmQsIGFuZCBjYWxsIG9uIHRoZSBuYW1lIG9mIHRoZSBMT1JEIGhpcyBHb2QsIGFuZCBzdHJpa2UgaGlzIGhhbmQgb3ZlciB0aGUgcGxhY2UsIGFuZCByZWNvdmVyIHRoZSBsZXBlci4KQXJlIG5vdCBBYmFuYSBhbmQgUGhhcnBhciwgcml2ZXJzIG9mIERhbWFzY3VzLCBiZXR0ZXIgdGhhbiBhbGwgdGhlIHdhdGVycyBvZiBJc3JhZWw/IG1heSBJIG5vdCB3YXNoIGluIHRoZW0sIGFuZCBiZSBjbGVhbj8gU28gaGUgdHVybmVkIGFuZCB3ZW50IGF3YXkgaW4gYSByYWdlLgpBbmQgaGlzIHNlcnZhbnRzIGNhbWUgbmVhciwgYW5kIHNwYWtlIHVudG8gaGltLCBhbmQgc2FpZCwgTXkgZmF0aGVyLCBpZiB0aGUgcHJvcGhldCBoYWQgYmlkIHRoZWUgZG8gc29tZSBncmVhdCB0aGluZywgd291bGRlc3QgdGhvdSBub3QgaGF2ZSBkb25lIGl0PyBob3cgbXVjaCByYXRoZXIgdGhlbiwgd2hlbiBoZSBzYWl0aCB0byB0aGVlLCBXYXNoLCBhbmQgYmUgY2xlYW4/ClRoZW4gd2VudCBoZSBkb3duLCBhbmQgZGlwcGVkIGhpbXNlbGYgc2V2ZW4gdGltZXMgaW4gSm9yZGFuLCBhY2NvcmRpbmcgdG8gdGhlIHNheWluZyBvZiB0aGUgbWFuIG9mIEdvZDogYW5kIGhpcyBmbGVzaCBjYW1lIGFnYWluIGxpa2UgdW50byB0aGUgZmxlc2ggb2YgYSBsaXR0bGUgY2hpbGQsIGFuZCBoZSB3YXMgY2xlYW4uCkFuZCBoZSByZXR1cm5lZCB0byB0aGUgbWFuIG9mIEdvZCwgaGUgYW5kIGFsbCBoaXMgY29tcGFueSwgYW5kIGNhbWUsIGFuZCBzdG9vZCBiZWZvcmUgaGltOiBhbmQgaGUgc2FpZCwgQmVob2xkLCBub3cgSSBrbm93IHRoYXQgdGhlcmUgaXMgbm8gR29kIGluIGFsbCB0aGUgZWFydGgsIGJ1dCBpbiBJc3JhZWw6IG5vdyB0aGVyZWZvcmUsIEkgcHJheSB0aGVlLCB0YWtlIGEgYmxlc3Npbmcgb2YgdGh5IHNlcnZhbnQuCkJ1dCBoZSBzYWlkLCBBcyB0aGUgTE9SRCBsaXZldGgsIGJlZm9yZSB3aG9tIEkgc3RhbmQsIEkgd2lsbCByZWNlaXZlIG5vbmUuIEFuZCBoZSB1cmdlZCBoaW0gdG8gdGFrZSBpdDsgYnV0IGhlIHJlZnVzZWQuCkFuZCBOYWFtYW4gc2FpZCwgU2hhbGwgdGhlcmUgbm90IHRoZW4sIEkgcHJheSB0aGVlLCBiZSBnaXZlbiB0byB0aHkgc2VydmFudCB0d28gbXVsZXMnIGJ1cmRlbiBvZiBlYXJ0aD8gZm9yIHRoeSBzZXJ2YW50IHdpbGwgaGVuY2Vmb3J0aCBvZmZlciBuZWl0aGVyIGJ1cm50IG9mZmVyaW5nIG5vciBzYWNyaWZpY2UgdW50byBvdGhlciBnb2RzLCBidXQgdW50byB0aGUgTE9SRC4KSW4gdGhpcyB0aGluZyB0aGUgTE9SRCBwYXJkb24gdGh5IHNlcnZhbnQsIHRoYXQgd2hlbiBteSBtYXN0ZXIgZ29ldGggaW50byB0aGUgaG91c2Ugb2YgUmltbW9uIHRvIHdvcnNoaXAgdGhlcmUsIGFuZCBoZSBsZWFuZXRoIG9uIG15IGhhbmQsIGFuZCBJIGJvdyBteXNlbGYgaW4gdGhlIGhvdXNlIG9mIFJpbW1vbjogd2hlbiBJIGJvdyBkb3duIG15c2VsZiBpbiB0aGUgaG91c2Ugb2YgUmltbW9uLCB0aGUgTE9SRCBwYXJkb24gdGh5IHNlcnZhbnQgaW4gdGhpcyB0aGluZy4KQW5kIGhlIHNhaWQgdW50byBoaW0sIEdvIGluIHBlYWNlLiBTbyBoZSBkZXBhcnRlZCBmcm9tIGhpbSBhIGxpdHRsZSB3YXkuCkJ1dCBHZWhhemksIHRoZSBzZXJ2YW50IG9mIEVsaXNoYSB0aGUgbWFuIG9mIEdvZCwgc2FpZCwgQmVob2xkLCBteSBtYXN0ZXIgaGF0aCBzcGFyZWQgTmFhbWFuIHRoaXMgU3lyaWFuLCBpbiBub3QgcmVjZWl2aW5nIGF0IGhpcyBoYW5kcyB0aGF0IHdoaWNoIGhlIGJyb3VnaHQ6IGJ1dCwgYXMgdGhlIExPUkQgbGl2ZXRoLCBJIHdpbGwgcnVuIGFmdGVyIGhpbSwgYW5kIHRha2Ugc29tZXdoYXQgb2YgaGltLgpTbyBHZWhhemkgZm9sbG93ZWQgYWZ0ZXIgTmFhbWFuLiBBbmQgd2hlbiBOYWFtYW4gc2F3IGhpbSBydW5uaW5nIGFmdGVyIGhpbSwgaGUgbGlnaHRlZCBkb3duIGZyb20gdGhlIGNoYXJpb3QgdG8gbWVldCBoaW0sIGFuZCBzYWlkLCBJcyBhbGwgd2VsbD8KQW5kIGhlIHNhaWQsIEFsbCBpcyB3ZWxsLiBNeSBtYXN0ZXIgaGF0aCBzZW50IG1lLCBzYXlpbmcsIEJlaG9sZCwgZXZlbiBub3cgdGhlcmUgYmUgY29tZSB0byBtZSBmcm9tIG1vdW50IEVwaHJhaW0gdHdvIHlvdW5nIG1lbiBvZiB0aGUgc29ucyBvZiB0aGUgcHJvcGhldHM6IGdpdmUgdGhlbSwgSSBwcmF5IHRoZWUsIGEgdGFsZW50IG9mIHNpbHZlciwgYW5kIHR3byBjaGFuZ2VzIG9mIGdhcm1lbnRzLgpBbmQgTmFhbWFuIHNhaWQsIEJlIGNvbnRlbnQsIHRha2UgdHdvIHRhbGVudHMuIEFuZCBoZSB1cmdlZCBoaW0sIGFuZCBib3VuZCB0d28gdGFsZW50cyBvZiBzaWx2ZXIgaW4gdHdvIGJhZ3MsIHdpdGggdHdvIGNoYW5nZXMgb2YgZ2FybWVudHMsIGFuZCBsYWlkIHRoZW0gdXBvbiB0d28gb2YgaGlzIHNlcnZhbnRzOyBhbmQgdGhleSBiYXJlIHRoZW0gYmVmb3JlIGhpbS4KQW5kIHdoZW4gaGUgY2FtZSB0byB0aGUgdG93ZXIsIGhlIHRvb2sgdGhlbSBmcm9tIHRoZWlyIGhhbmQsIGFuZCBiZXN0b3dlZCB0aGVtIGluIHRoZSBob3VzZTogYW5kIGhlIGxldCB0aGUgbWVuIGdvLCBhbmQgdGhleSBkZXBhcnRlZC4KQnV0IGhlIHdlbnQgaW4sIGFuZCBzdG9vZCBiZWZvcmUgaGlzIG1hc3Rlci4gQW5kIEVsaXNoYSBzYWlkIHVudG8gaGltLCBXaGVuY2UgY29tZXN0IHRob3UsIEdlaGF6aT8gQW5kIGhlIHNhaWQsIFRoeSBzZXJ2YW50IHdlbnQgbm8gd2hpdGhlci4KQW5kIGhlIHNhaWQgdW50byBoaW0sIFdlbnQgbm90IG1pbmUgaGVhcnQgd2l0aCB0aGVlLCB3aGVuIHRoZSBtYW4gdHVybmVkIGFnYWluIGZyb20gaGlzIGNoYXJpb3QgdG8gbWVldCB0aGVlPyBJcyBpdCBhIHRpbWUgdG8gcmVjZWl2ZSBtb25leSwgYW5kIHRvIHJlY2VpdmUgZ2FybWVudHMsIGFuZCBvbGl2ZXlhcmRzLCBhbmQgdmluZXlhcmRzLCBhbmQgc2hlZXAsIGFuZCBveGVuLCBhbmQgbWVuc2VydmFudHMsIGFuZCBtYWlkc2VydmFudHM/ClRoZSBsZXByb3N5IHRoZXJlZm9yZSBvZiBOYWFtYW4gc2hhbGwgY2xlYXZlIHVudG8gdGhlZSwgYW5kIHVudG8gdGh5IHNlZWQgZm9yIGV2ZXIuIEFuZCBoZSB3ZW50IG91dCBmcm9tIGhpcyBwcmVzZW5jZSBhIGxlcGVyIGFzIHdoaXRlIGFzIHNub3cuCkFuZCB0aGUgc29ucyBvZiB0aGUgcHJvcGhldHMgc2FpZCB1bnRvIEVsaXNoYSwgQmVob2xkIG5vdywgdGhlIHBsYWNlIHdoZXJlIHdlIGR3ZWxsIHdpdGggdGhlZSBpcyB0b28gc3RyYWl0IGZvciB1cy4KTGV0IHVzIGdvLCB3ZSBwcmF5IHRoZWUsIHVudG8gSm9yZGFuLCBhbmQgdGFrZSB0aGVuY2UgZXZlcnkgbWFuIGEgYmVhbSwgYW5kIGxldCB1cyBtYWtlIHVzIGEgcGxhY2UgdGhlcmUsIHdoZXJlIHdlIG1heSBkd2VsbC4gQW5kIGhlIGFuc3dlcmVkLCBHbyB5ZS4KQW5kIG9uZSBzYWlkLCBCZSBjb250ZW50LCBJIHByYXkgdGhlZSwgYW5kIGdvIHdpdGggdGh5IHNlcnZhbnRzLiBBbmQgaGUgYW5zd2VyZWQsIEkgd2lsbCBnby4KU28gaGUgd2VudCB3aXRoIHRoZW0uIEFuZCB3aGVuIHRoZXkgY2FtZSB0byBKb3JkYW4sIHRoZXkgY3V0IGRvd24gd29vZC4KQnV0IGFzIG9uZSB3YXMgZmVsbGluZyBhIGJlYW0sIHRoZSBheGUgaGVhZCBmZWxsIGludG8gdGhlIHdhdGVyOiBhbmQgaGUgY3JpZWQsIGFuZCBzYWlkLCBBbGFzLCBtYXN0ZXIhIGZvciBpdCB3YXMgYm9ycm93ZWQuCkFuZCB0aGUgbWFuIG9mIEdvZCBzYWlkLCBXaGVyZSBmZWxsIGl0PyBBbmQgaGUgc2hld2VkIGhpbSB0aGUgcGxhY2UuIEFuZCBoZSBjdXQgZG93biBhIHN0aWNrLCBhbmQgY2FzdCBpdCBpbiB0aGl0aGVyOyBhbmQgdGhlIGlyb24gZGlkIHN3aW0uClRoZXJlZm9yZSBzYWlkIGhlLCBUYWtlIGl0IHVwIHRvIHRoZWUuIEFuZCBoZSBwdXQgb3V0IGhpcyBoYW5kLCBhbmQgdG9vayBpdC4KVGhlbiB0aGUga2luZyBvZiBTeXJpYSB3YXJyZWQgYWdhaW5zdCBJc3JhZWwsIGFuZCB0b29rIGNvdW5zZWwgd2l0aCBoaXMgc2VydmFudHMsIHNheWluZywgSW4gc3VjaCBhbmQgc3VjaCBhIHBsYWNlIHNoYWxsIGJlIG15IGNhbXAuCkFuZCB0aGUgbWFuIG9mIEdvZCBzZW50IHVudG8gdGhlIGtpbmcgb2YgSXNyYWVsLCBzYXlpbmcsIEJld2FyZSB0aGF0IHRob3UgcGFzcyBub3Qgc3VjaCBhIHBsYWNlOyBmb3IgdGhpdGhlciB0aGUgU3lyaWFucyBhcmUgY29tZSBkb3duLgpBbmQgdGhlIGtpbmcgb2YgSXNyYWVsIHNlbnQgdG8gdGhlIHBsYWNlIHdoaWNoIHRoZSBtYW4gb2YgR29kIHRvbGQgaGltIGFuZCB3YXJuZWQgaGltIG9mLCBhbmQgc2F2ZWQgaGltc2VsZiB0aGVyZSwgbm90IG9uY2Ugbm9yIHR3aWNlLgpUaGVyZWZvcmUgdGhlIGhlYXJ0IG9mIHRoZSBraW5nIG9mIFN5cmlhIHdhcyBzb3JlIHRyb3VibGVkIGZvciB0aGlzIHRoaW5nOyBhbmQgaGUgY2FsbGVkIGhpcyBzZXJ2YW50cywgYW5kIHNhaWQgdW50byB0aGVtLCBXaWxsIHllIG5vdCBzaGV3IG1lIHdoaWNoIG9mIHVzIGlzIGZvciB0aGUga2luZyBvZiBJc3JhZWw/CkFuZCBvbmUgb2YgaGlzIHNlcnZhbnRzIHNhaWQsIE5vbmUsIG15IGxvcmQsIE8ga2luZzogYnV0IEVsaXNoYSwgdGhlIHByb3BoZXQgdGhhdCBpcyBpbiBJc3JhZWwsIHRlbGxldGggdGhlIGtpbmcgb2YgSXNyYWVsIHRoZSB3b3JkcyB0aGF0IHRob3Ugc3BlYWtlc3QgaW4gdGh5IGJlZGNoYW1iZXIuCkFuZCBoZSBzYWlkLCBHbyBhbmQgc3B5IHdoZXJlIGhlIGlzLCB0aGF0IEkgbWF5IHNlbmQgYW5kIGZldGNoIGhpbS4gQW5kIGl0IHdhcyB0b2xkIGhpbSwgc2F5aW5nLCBCZWhvbGQsIGhlIGlzIGluIERvdGhhbi4KVGhlcmVmb3JlIHNlbnQgaGUgdGhpdGhlciBob3JzZXMsIGFuZCBjaGFyaW90cywgYW5kIGEgZ3JlYXQgaG9zdDogYW5kIHRoZXkgY2FtZSBieSBuaWdodCwgYW5kIGNvbXBhc3NlZCB0aGUgY2l0eSBhYm91dC4KQW5kIHdoZW4gdGhlIHNlcnZhbnQgb2YgdGhlIG1hbiBvZiBHb2Qgd2FzIHJpc2VuIGVhcmx5LCBhbmQgZ29uZSBmb3J0aCwgYmVob2xkLCBhbiBob3N0IGNvbXBhc3NlZCB0aGUgY2l0eSBib3RoIHdpdGggaG9yc2VzIGFuZCBjaGFyaW90cy4gQW5kIGhpcyBzZXJ2YW50IHNhaWQgdW50byBoaW0sIEFsYXMsIG15IG1hc3RlciEgaG93IHNoYWxsIHdlIGRvPwpBbmQgaGUgYW5zd2VyZWQsIEZlYXIgbm90OiBmb3IgdGhleSB0aGF0IGJlIHdpdGggdXMgYXJlIG1vcmUgdGhhbiB0aGV5IHRoYXQgYmUgd2l0aCB0aGVtLgpBbmQgRWxpc2hhIHByYXllZCwgYW5kIHNhaWQsIExPUkQsIEkgcHJheSB0aGVlLCBvcGVuIGhpcyBleWVzLCB0aGF0IGhlIG1heSBzZWUuIEFuZCB0aGUgTE9SRCBvcGVuZWQgdGhlIGV5ZXMgb2YgdGhlIHlvdW5nIG1hbjsgYW5kIGhlIHNhdzogYW5kLCBiZWhvbGQsIHRoZSBtb3VudGFpbiB3YXMgZnVsbCBvZiBob3JzZXMgYW5kIGNoYXJpb3RzIG9mIGZpcmUgcm91bmQgYWJvdXQgRWxpc2hhLgpBbmQgd2hlbiB0aGV5IGNhbWUgZG93biB0byBoaW0sIEVsaXNoYSBwcmF5ZWQgdW50byB0aGUgTE9SRCwgYW5kIHNhaWQsIFNtaXRlIHRoaXMgcGVvcGxlLCBJIHByYXkgdGhlZSwgd2l0aCBibGluZG5lc3MuIEFuZCBoZSBzbW90ZSB0aGVtIHdpdGggYmxpbmRuZXNzIGFjY29yZGluZyB0byB0aGUgd29yZCBvZiBFbGlzaGEuCkFuZCBFbGlzaGEgc2FpZCB1bnRvIHRoZW0sIFRoaXMgaXMgbm90IHRoZSB3YXksIG5laXRoZXIgaXMgdGhpcyB0aGUgY2l0eTogZm9sbG93IG1lLCBhbmQgSSB3aWxsIGJyaW5nIHlvdSB0byB0aGUgbWFuIHdob20geWUgc2Vlay4gQnV0IGhlIGxlZCB0aGVtIHRvIFNhbWFyaWEuCkFuZCBpdCBjYW1lIHRvIHBhc3MsIHdoZW4gdGhleSB3ZXJlIGNvbWUgaW50byBTYW1hcmlhLCB0aGF0IEVsaXNoYSBzYWlkLCBMT1JELCBvcGVuIHRoZSBleWVzIG9mIHRoZXNlIG1lbiwgdGhhdCB0aGV5IG1heSBzZWUuIEFuZCB0aGUgTE9SRCBvcGVuZWQgdGhlaXIgZXllcywgYW5kIHRoZXkgc2F3OyBhbmQsIGJlaG9sZCwgdGhleSB3ZXJlIGluIHRoZSBtaWRzdCBvZiBTYW1hcmlhLgpBbmQgdGhlIGtpbmcgb2YgSXNyYWVsIHNhaWQgdW50byBFbGlzaGEsIHdoZW4gaGUgc2F3IHRoZW0sIE15IGZhdGhlciwgc2hhbGwgSSBzbWl0ZSB0aGVtPyBzaGFsbCBJIHNtaXRlIHRoZW0/CkFuZCBoZSBhbnN3ZXJlZCwgVGhvdSBzaGFsdCBub3Qgc21pdGUgdGhlbTogd291bGRlc3QgdGhvdSBzbWl0ZSB0aG9zZSB3aG9tIHRob3UgaGFzdCB0YWtlbiBjYXB0aXZlIHdpdGggdGh5IHN3b3JkIGFuZCB3aXRoIHRoeSBib3c/IHNldCBicmVhZCBhbmQgd2F0ZXIgYmVmb3JlIHRoZW0sIHRoYXQgdGhleSBtYXkgZWF0IGFuZCBkcmluaywgYW5kIGdvIHRvIHRoZWlyIG1hc3Rlci4KQW5kIGhlIHByZXBhcmVkIGdyZWF0IHByb3Zpc2lvbiBmb3IgdGhlbTogYW5kIHdoZW4gdGhleSBoYWQgZWF0ZW4gYW5kIGRydW5rLCBoZSBzZW50IHRoZW0gYXdheSwgYW5kIHRoZXkgd2VudCB0byB0aGVpciBtYXN0ZXIuIFNvIHRoZSBiYW5kcyBvZiBTeXJpYSBjYW1lIG5vIG1vcmUgaW50byB0aGUgbGFuZCBvZiBJc3JhZWwuCkFuZCBpdCBjYW1lIHRvIHBhc3MgYWZ0ZXIgdGhpcywgdGhhdCBCZW5oYWRhZCBraW5nIG9mIFN5cmlhIGdhdGhlcmVkIGFsbCBoaXMgaG9zdCwgYW5kIHdlbnQgdXAsIGFuZCBiZXNpZWdlZCBTYW1hcmlhLgpBbmQgdGhlcmUgd2FzIGEgZ3JlYXQgZmFtaW5lIGluIFNhbWFyaWE6IGFuZCwgYmVob2xkLCB0aGV5IGJlc2llZ2VkIGl0LCB1bnRpbCBhbiBhc3MncyBoZWFkIHdhcyBzb2xkIGZvciBmb3Vyc2NvcmUgcGllY2VzIG9mIHNpbHZlciwgYW5kIHRoZSBmb3VydGggcGFydCBvZiBhIGNhYiBvZiBkb3ZlJ3MgZHVuZyBmb3IgZml2ZSBwaWVjZXMgb2Ygc2lsdmVyLgpBbmQgYXMgdGhlIGtpbmcgb2YgSXNyYWVsIHdhcyBwYXNzaW5nIGJ5IHVwb24gdGhlIHdhbGwsIHRoZXJlIGNyaWVkIGEgd29tYW4gdW50byBoaW0sIHNheWluZywgSGVscCwgbXkgbG9yZCwgTyBraW5nLgpBbmQgaGUgc2FpZCwgSWYgdGhlIExPUkQgZG8gbm90IGhlbHAgdGhlZSwgd2hlbmNlIHNoYWxsIEkgaGVscCB0aGVlPyBvdXQgb2YgdGhlIGJhcm5mbG9vciwgb3Igb3V0IG9mIHRoZSB3aW5lcHJlc3M/CkFuZCB0aGUga2luZyBzYWlkIHVudG8gaGVyLCBXaGF0IGFpbGV0aCB0aGVlPyBBbmQgc2hlIGFuc3dlcmVkLCBUaGlzIHdvbWFuIHNhaWQgdW50byBtZSwgR2l2ZSB0aHkgc29uLCB0aGF0IHdlIG1heSBlYXQgaGltIHRvIGRheSwgYW5kIHdlIHdpbGwgZWF0IG15IHNvbiB0byBtb3Jyb3cuClNvIHdlIGJvaWxlZCBteSBzb24sIGFuZCBkaWQgZWF0IGhpbTogYW5kIEkgc2FpZCB1bnRvIGhlciBvbiB0aGUgbmV4dCBkYXksIEdpdmUgdGh5IHNvbiwgdGhhdCB3ZSBtYXkgZWF0IGhpbTogYW5kIHNoZSBoYXRoIGhpZCBoZXIgc29uLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIHRoZSBraW5nIGhlYXJkIHRoZSB3b3JkcyBvZiB0aGUgd29tYW4sIHRoYXQgaGUgcmVudCBoaXMgY2xvdGhlczsgYW5kIGhlIHBhc3NlZCBieSB1cG9uIHRoZSB3YWxsLCBhbmQgdGhlIHBlb3BsZSBsb29rZWQsIGFuZCwgYmVob2xkLCBoZSBoYWQgc2Fja2Nsb3RoIHdpdGhpbiB1cG9uIGhpcyBmbGVzaC4KVGhlbiBoZSBzYWlkLCBHb2QgZG8gc28gYW5kIG1vcmUgYWxzbyB0byBtZSwgaWYgdGhlIGhlYWQgb2YgRWxpc2hhIHRoZSBzb24gb2YgU2hhcGhhdCBzaGFsbCBzdGFuZCBvbiBoaW0gdGhpcyBkYXkuCkJ1dCBFbGlzaGEgc2F0IGluIGhpcyBob3VzZSwgYW5kIHRoZSBlbGRlcnMgc2F0IHdpdGggaGltOyBhbmQgdGhlIGtpbmcgc2VudCBhIG1hbiBmcm9tIGJlZm9yZSBoaW06IGJ1dCBlcmUgdGhlIG1lc3NlbmdlciBjYW1lIHRvIGhpbSwgaGUgc2FpZCB0byB0aGUgZWxkZXJzLCBTZWUgeWUgaG93IHRoaXMgc29uIG9mIGEgbXVyZGVyZXIgaGF0aCBzZW50IHRvIHRha2UgYXdheSBtaW5lIGhlYWQ/IGxvb2ssIHdoZW4gdGhlIG1lc3NlbmdlciBjb21ldGgsIHNodXQgdGhlIGRvb3IsIGFuZCBob2xkIGhpbSBmYXN0IGF0IHRoZSBkb29yOiBpcyBub3QgdGhlIHNvdW5kIG9mIGhpcyBtYXN0ZXIncyBmZWV0IGJlaGluZCBoaW0/CkFuZCB3aGlsZSBoZSB5ZXQgdGFsa2VkIHdpdGggdGhlbSwgYmVob2xkLCB0aGUgbWVzc2VuZ2VyIGNhbWUgZG93biB1bnRvIGhpbTogYW5kIGhlIHNhaWQsIEJlaG9sZCwgdGhpcyBldmlsIGlzIG9mIHRoZSBMT1JEOyB3aGF0IHNob3VsZCBJIHdhaXQgZm9yIHRoZSBMT1JEIGFueSBsb25nZXI/ClRoZW4gRWxpc2hhIHNhaWQsIEhlYXIgeWUgdGhlIHdvcmQgb2YgdGhlIExPUkQ7IFRodXMgc2FpdGggdGhlIExPUkQsIFRvIG1vcnJvdyBhYm91dCB0aGlzIHRpbWUgc2hhbGwgYSBtZWFzdXJlIG9mIGZpbmUgZmxvdXIgYmUgc29sZCBmb3IgYSBzaGVrZWwsIGFuZCB0d28gbWVhc3VyZXMgb2YgYmFybGV5IGZvciBhIHNoZWtlbCwgaW4gdGhlIGdhdGUgb2YgU2FtYXJpYS4KVGhlbiBhIGxvcmQgb24gd2hvc2UgaGFuZCB0aGUga2luZyBsZWFuZWQgYW5zd2VyZWQgdGhlIG1hbiBvZiBHb2QsIGFuZCBzYWlkLCBCZWhvbGQsIGlmIHRoZSBMT1JEIHdvdWxkIG1ha2Ugd2luZG93cyBpbiBoZWF2ZW4sIG1pZ2h0IHRoaXMgdGhpbmcgYmU/IEFuZCBoZSBzYWlkLCBCZWhvbGQsIHRob3Ugc2hhbHQgc2VlIGl0IHdpdGggdGhpbmUgZXllcywgYnV0IHNoYWx0IG5vdCBlYXQgdGhlcmVvZi4KQW5kIHRoZXJlIHdlcmUgZm91ciBsZXByb3VzIG1lbiBhdCB0aGUgZW50ZXJpbmcgaW4gb2YgdGhlIGdhdGU6IGFuZCB0aGV5IHNhaWQgb25lIHRvIGFub3RoZXIsIFdoeSBzaXQgd2UgaGVyZSB1bnRpbCB3ZSBkaWU/CklmIHdlIHNheSwgV2Ugd2lsbCBlbnRlciBpbnRvIHRoZSBjaXR5LCB0aGVuIHRoZSBmYW1pbmUgaXMgaW4gdGhlIGNpdHksIGFuZCB3ZSBzaGFsbCBkaWUgdGhlcmU6IGFuZCBpZiB3ZSBzaXQgc3RpbGwgaGVyZSwgd2UgZGllIGFsc28uIE5vdyB0aGVyZWZvcmUgY29tZSwgYW5kIGxldCB1cyBmYWxsIHVudG8gdGhlIGhvc3Qgb2YgdGhlIFN5cmlhbnM6IGlmIHRoZXkgc2F2ZSB1cyBhbGl2ZSwgd2Ugc2hhbGwgbGl2ZTsgYW5kIGlmIHRoZXkga2lsbCB1cywgd2Ugc2hhbGwgYnV0IGRpZS4KQW5kIHRoZXkgcm9zZSB1cCBpbiB0aGUgdHdpbGlnaHQsIHRvIGdvIHVudG8gdGhlIGNhbXAgb2YgdGhlIFN5cmlhbnM6IGFuZCB3aGVuIHRoZXkgd2VyZSBjb21lIHRvIHRoZSB1dHRlcm1vc3QgcGFydCBvZiB0aGUgY2FtcCBvZiBTeXJpYSwgYmVob2xkLCB0aGVyZSB3YXMgbm8gbWFuIHRoZXJlLgpGb3IgdGhlIExPUkQgaGFkIG1hZGUgdGhlIGhvc3Qgb2YgdGhlIFN5cmlhbnMgdG8gaGVhciBhIG5vaXNlIG9mIGNoYXJpb3RzLCBhbmQgYSBub2lzZSBvZiBob3JzZXMsIGV2ZW4gdGhlIG5vaXNlIG9mIGEgZ3JlYXQgaG9zdDogYW5kIHRoZXkgc2FpZCBvbmUgdG8gYW5vdGhlciwgTG8sIHRoZSBraW5nIG9mIElzcmFlbCBoYXRoIGhpcmVkIGFnYWluc3QgdXMgdGhlIGtpbmdzIG9mIHRoZSBIaXR0aXRlcywgYW5kIHRoZSBraW5ncyBvZiB0aGUgRWd5cHRpYW5zLCB0byBjb21lIHVwb24gdXMuCldoZXJlZm9yZSB0aGV5IGFyb3NlIGFuZCBmbGVkIGluIHRoZSB0d2lsaWdodCwgYW5kIGxlZnQgdGhlaXIgdGVudHMsIGFuZCB0aGVpciBob3JzZXMsIGFuZCB0aGVpciBhc3NlcywgZXZlbiB0aGUgY2FtcCBhcyBpdCB3YXMsIGFuZCBmbGVkIGZvciB0aGVpciBsaWZlLgpBbmQgd2hlbiB0aGVzZSBsZXBlcnMgY2FtZSB0byB0aGUgdXR0ZXJtb3N0IHBhcnQgb2YgdGhlIGNhbXAsIHRoZXkgd2VudCBpbnRvIG9uZSB0ZW50LCBhbmQgZGlkIGVhdCBhbmQgZHJpbmssIGFuZCBjYXJyaWVkIHRoZW5jZSBzaWx2ZXIsIGFuZCBnb2xkLCBhbmQgcmFpbWVudCwgYW5kIHdlbnQgYW5kIGhpZCBpdDsgYW5kIGNhbWUgYWdhaW4sIGFuZCBlbnRlcmVkIGludG8gYW5vdGhlciB0ZW50LCBhbmQgY2FycmllZCB0aGVuY2UgYWxzbywgYW5kIHdlbnQgYW5kIGhpZCBpdC4KVGhlbiB0aGV5IHNhaWQgb25lIHRvIGFub3RoZXIsIFdlIGRvIG5vdCB3ZWxsOiB0aGlzIGRheSBpcyBhIGRheSBvZiBnb29kIHRpZGluZ3MsIGFuZCB3ZSBob2xkIG91ciBwZWFjZTogaWYgd2UgdGFycnkgdGlsbCB0aGUgbW9ybmluZyBsaWdodCwgc29tZSBtaXNjaGllZiB3aWxsIGNvbWUgdXBvbiB1czogbm93IHRoZXJlZm9yZSBjb21lLCB0aGF0IHdlIG1heSBnbyBhbmQgdGVsbCB0aGUga2luZydzIGhvdXNlaG9sZC4KU28gdGhleSBjYW1lIGFuZCBjYWxsZWQgdW50byB0aGUgcG9ydGVyIG9mIHRoZSBjaXR5OiBhbmQgdGhleSB0b2xkIHRoZW0sIHNheWluZywgV2UgY2FtZSB0byB0aGUgY2FtcCBvZiB0aGUgU3lyaWFucywgYW5kLCBiZWhvbGQsIHRoZXJlIHdhcyBubyBtYW4gdGhlcmUsIG5laXRoZXIgdm9pY2Ugb2YgbWFuLCBidXQgaG9yc2VzIHRpZWQsIGFuZCBhc3NlcyB0aWVkLCBhbmQgdGhlIHRlbnRzIGFzIHRoZXkgd2VyZS4KQW5kIGhlIGNhbGxlZCB0aGUgcG9ydGVyczsgYW5kIHRoZXkgdG9sZCBpdCB0byB0aGUga2luZydzIGhvdXNlIHdpdGhpbi4KQW5kIHRoZSBraW5nIGFyb3NlIGluIHRoZSBuaWdodCwgYW5kIHNhaWQgdW50byBoaXMgc2VydmFudHMsIEkgd2lsbCBub3cgc2hldyB5b3Ugd2hhdCB0aGUgU3lyaWFucyBoYXZlIGRvbmUgdG8gdXMuIFRoZXkga25vdyB0aGF0IHdlIGJlIGh1bmdyeTsgdGhlcmVmb3JlIGFyZSB0aGV5IGdvbmUgb3V0IG9mIHRoZSBjYW1wIHRvIGhpZGUgdGhlbXNlbHZlcyBpbiB0aGUgZmllbGQsIHNheWluZywgV2hlbiB0aGV5IGNvbWUgb3V0IG9mIHRoZSBjaXR5LCB3ZSBzaGFsbCBjYXRjaCB0aGVtIGFsaXZlLCBhbmQgZ2V0IGludG8gdGhlIGNpdHkuCkFuZCBvbmUgb2YgaGlzIHNlcnZhbnRzIGFuc3dlcmVkIGFuZCBzYWlkLCBMZXQgc29tZSB0YWtlLCBJIHByYXkgdGhlZSwgZml2ZSBvZiB0aGUgaG9yc2VzIHRoYXQgcmVtYWluLCB3aGljaCBhcmUgbGVmdCBpbiB0aGUgY2l0eSwgKGJlaG9sZCwgdGhleSBhcmUgYXMgYWxsIHRoZSBtdWx0aXR1ZGUgb2YgSXNyYWVsIHRoYXQgYXJlIGxlZnQgaW4gaXQ6IGJlaG9sZCwgSSBzYXksIHRoZXkgYXJlIGV2ZW4gYXMgYWxsIHRoZSBtdWx0aXR1ZGUgb2YgdGhlIElzcmFlbGl0ZXMgdGhhdCBhcmUgY29uc3VtZWQ6KSBhbmQgbGV0IHVzIHNlbmQgYW5kIHNlZS4KVGhleSB0b29rIHRoZXJlZm9yZSB0d28gY2hhcmlvdCBob3JzZXM7IGFuZCB0aGUga2luZyBzZW50IGFmdGVyIHRoZSBob3N0IG9mIHRoZSBTeXJpYW5zLCBzYXlpbmcsIEdvIGFuZCBzZWUuCkFuZCB0aGV5IHdlbnQgYWZ0ZXIgdGhlbSB1bnRvIEpvcmRhbjogYW5kLCBsbywgYWxsIHRoZSB3YXkgd2FzIGZ1bGwgb2YgZ2FybWVudHMgYW5kIHZlc3NlbHMsIHdoaWNoIHRoZSBTeXJpYW5zIGhhZCBjYXN0IGF3YXkgaW4gdGhlaXIgaGFzdGUuIEFuZCB0aGUgbWVzc2VuZ2VycyByZXR1cm5lZCwgYW5kIHRvbGQgdGhlIGtpbmcuCkFuZCB0aGUgcGVvcGxlIHdlbnQgb3V0LCBhbmQgc3BvaWxlZCB0aGUgdGVudHMgb2YgdGhlIFN5cmlhbnMuIFNvIGEgbWVhc3VyZSBvZiBmaW5lIGZsb3VyIHdhcyBzb2xkIGZvciBhIHNoZWtlbCwgYW5kIHR3byBtZWFzdXJlcyBvZiBiYXJsZXkgZm9yIGEgc2hla2VsLCBhY2NvcmRpbmcgdG8gdGhlIHdvcmQgb2YgdGhlIExPUkQuCkFuZCB0aGUga2luZyBhcHBvaW50ZWQgdGhlIGxvcmQgb24gd2hvc2UgaGFuZCBoZSBsZWFuZWQgdG8gaGF2ZSB0aGUgY2hhcmdlIG9mIHRoZSBnYXRlOiBhbmQgdGhlIHBlb3BsZSB0cm9kZSB1cG9uIGhpbSBpbiB0aGUgZ2F0ZSwgYW5kIGhlIGRpZWQsIGFzIHRoZSBtYW4gb2YgR29kIGhhZCBzYWlkLCB3aG8gc3Bha2Ugd2hlbiB0aGUga2luZyBjYW1lIGRvd24gdG8gaGltLgpBbmQgaXQgY2FtZSB0byBwYXNzIGFzIHRoZSBtYW4gb2YgR29kIGhhZCBzcG9rZW4gdG8gdGhlIGtpbmcsIHNheWluZywgVHdvIG1lYXN1cmVzIG9mIGJhcmxleSBmb3IgYSBzaGVrZWwsIGFuZCBhIG1lYXN1cmUgb2YgZmluZSBmbG91ciBmb3IgYSBzaGVrZWwsIHNoYWxsIGJlIHRvIG1vcnJvdyBhYm91dCB0aGlzIHRpbWUgaW4gdGhlIGdhdGUgb2YgU2FtYXJpYToKQW5kIHRoYXQgbG9yZCBhbnN3ZXJlZCB0aGUgbWFuIG9mIEdvZCwgYW5kIHNhaWQsIE5vdywgYmVob2xkLCBpZiB0aGUgTE9SRCBzaG91bGQgbWFrZSB3aW5kb3dzIGluIGhlYXZlbiwgbWlnaHQgc3VjaCBhIHRoaW5nIGJlPyBBbmQgaGUgc2FpZCwgQmVob2xkLCB0aG91IHNoYWx0IHNlZSBpdCB3aXRoIHRoaW5lIGV5ZXMsIGJ1dCBzaGFsdCBub3QgZWF0IHRoZXJlb2YuCkFuZCBzbyBpdCBmZWxsIG91dCB1bnRvIGhpbTogZm9yIHRoZSBwZW9wbGUgdHJvZGUgdXBvbiBoaW0gaW4gdGhlIGdhdGUsIGFuZCBoZSBkaWVkLgpUaGVuIHNwYWtlIEVsaXNoYSB1bnRvIHRoZSB3b21hbiwgd2hvc2Ugc29uIGhlIGhhZCByZXN0b3JlZCB0byBsaWZlLCBzYXlpbmcsIEFyaXNlLCBhbmQgZ28gdGhvdSBhbmQgdGhpbmUgaG91c2Vob2xkLCBhbmQgc29qb3VybiB3aGVyZXNvZXZlciB0aG91IGNhbnN0IHNvam91cm46IGZvciB0aGUgTE9SRCBoYXRoIGNhbGxlZCBmb3IgYSBmYW1pbmU7IGFuZCBpdCBzaGFsbCBhbHNvIGNvbWUgdXBvbiB0aGUgbGFuZCBzZXZlbiB5ZWFycy4KQW5kIHRoZSB3b21hbiBhcm9zZSwgYW5kIGRpZCBhZnRlciB0aGUgc2F5aW5nIG9mIHRoZSBtYW4gb2YgR29kOiBhbmQgc2hlIHdlbnQgd2l0aCBoZXIgaG91c2Vob2xkLCBhbmQgc29qb3VybmVkIGluIHRoZSBsYW5kIG9mIHRoZSBQaGlsaXN0aW5lcyBzZXZlbiB5ZWFycy4KQW5kIGl0IGNhbWUgdG8gcGFzcyBhdCB0aGUgc2V2ZW4geWVhcnMnIGVuZCwgdGhhdCB0aGUgd29tYW4gcmV0dXJuZWQgb3V0IG9mIHRoZSBsYW5kIG9mIHRoZSBQaGlsaXN0aW5lczogYW5kIHNoZSB3ZW50IGZvcnRoIHRvIGNyeSB1bnRvIHRoZSBraW5nIGZvciBoZXIgaG91c2UgYW5kIGZvciBoZXIgbGFuZC4KQW5kIHRoZSBraW5nIHRhbGtlZCB3aXRoIEdlaGF6aSB0aGUgc2VydmFudCBvZiB0aGUgbWFuIG9mIEdvZCwgc2F5aW5nLCBUZWxsIG1lLCBJIHByYXkgdGhlZSwgYWxsIHRoZSBncmVhdCB0aGluZ3MgdGhhdCBFbGlzaGEgaGF0aCBkb25lLgpBbmQgaXQgY2FtZSB0byBwYXNzLCBhcyBoZSB3YXMgdGVsbGluZyB0aGUga2luZyBob3cgaGUgaGFkIHJlc3RvcmVkIGEgZGVhZCBib2R5IHRvIGxpZmUsIHRoYXQsIGJlaG9sZCwgdGhlIHdvbWFuLCB3aG9zZSBzb24gaGUgaGFkIHJlc3RvcmVkIHRvIGxpZmUsIGNyaWVkIHRvIHRoZSBraW5nIGZvciBoZXIgaG91c2UgYW5kIGZvciBoZXIgbGFuZC4gQW5kIEdlaGF6aSBzYWlkLCBNeSBsb3JkLCBPIGtpbmcsIHRoaXMgaXMgdGhlIHdvbWFuLCBhbmQgdGhpcyBpcyBoZXIgc29uLCB3aG9tIEVsaXNoYSByZXN0b3JlZCB0byBsaWZlLgpBbmQgd2hlbiB0aGUga2luZyBhc2tlZCB0aGUgd29tYW4sIHNoZSB0b2xkIGhpbS4gU28gdGhlIGtpbmcgYXBwb2ludGVkIHVudG8gaGVyIGEgY2VydGFpbiBvZmZpY2VyLCBzYXlpbmcsIFJlc3RvcmUgYWxsIHRoYXQgd2FzIGhlcnMsIGFuZCBhbGwgdGhlIGZydWl0cyBvZiB0aGUgZmllbGQgc2luY2UgdGhlIGRheSB0aGF0IHNoZSBsZWZ0IHRoZSBsYW5kLCBldmVuIHVudGlsIG5vdy4KQW5kIEVsaXNoYSBjYW1lIHRvIERhbWFzY3VzOyBhbmQgQmVuaGFkYWQgdGhlIGtpbmcgb2YgU3lyaWEgd2FzIHNpY2s7IGFuZCBpdCB3YXMgdG9sZCBoaW0sIHNheWluZywgVGhlIG1hbiBvZiBHb2QgaXMgY29tZSBoaXRoZXIuCkFuZCB0aGUga2luZyBzYWlkIHVudG8gSGF6YWVsLCBUYWtlIGEgcHJlc2VudCBpbiB0aGluZSBoYW5kLCBhbmQgZ28sIG1lZXQgdGhlIG1hbiBvZiBHb2QsIGFuZCBlbnF1aXJlIG9mIHRoZSBMT1JEIGJ5IGhpbSwgc2F5aW5nLCBTaGFsbCBJIHJlY292ZXIgb2YgdGhpcyBkaXNlYXNlPwpTbyBIYXphZWwgd2VudCB0byBtZWV0IGhpbSwgYW5kIHRvb2sgYSBwcmVzZW50IHdpdGggaGltLCBldmVuIG9mIGV2ZXJ5IGdvb2QgdGhpbmcgb2YgRGFtYXNjdXMsIGZvcnR5IGNhbWVscycgYnVyZGVuLCBhbmQgY2FtZSBhbmQgc3Rvb2QgYmVmb3JlIGhpbSwgYW5kIHNhaWQsIFRoeSBzb24gQmVuaGFkYWQga2luZyBvZiBTeXJpYSBoYXRoIHNlbnQgbWUgdG8gdGhlZSwgc2F5aW5nLCBTaGFsbCBJIHJlY292ZXIgb2YgdGhpcyBkaXNlYXNlPwpBbmQgRWxpc2hhIHNhaWQgdW50byBoaW0sIEdvLCBzYXkgdW50byBoaW0sIFRob3UgbWF5ZXN0IGNlcnRhaW5seSByZWNvdmVyOiBob3diZWl0IHRoZSBMT1JEIGhhdGggc2hld2VkIG1lIHRoYXQgaGUgc2hhbGwgc3VyZWx5IGRpZS4KQW5kIGhlIHNldHRsZWQgaGlzIGNvdW50ZW5hbmNlIHN0ZWRmYXN0bHksIHVudGlsIGhlIHdhcyBhc2hhbWVkOiBhbmQgdGhlIG1hbiBvZiBHb2Qgd2VwdC4KQW5kIEhhemFlbCBzYWlkLCBXaHkgd2VlcGV0aCBteSBsb3JkPyBBbmQgaGUgYW5zd2VyZWQsIEJlY2F1c2UgSSBrbm93IHRoZSBldmlsIHRoYXQgdGhvdSB3aWx0IGRvIHVudG8gdGhlIGNoaWxkcmVuIG9mIElzcmFlbDogdGhlaXIgc3Ryb25nIGhvbGRzIHdpbHQgdGhvdSBzZXQgb24gZmlyZSwgYW5kIHRoZWlyIHlvdW5nIG1lbiB3aWx0IHRob3Ugc2xheSB3aXRoIHRoZSBzd29yZCwgYW5kIHdpbHQgZGFzaCB0aGVpciBjaGlsZHJlbiwgYW5kIHJpcCB1cCB0aGVpciB3b21lbiB3aXRoIGNoaWxkLgpBbmQgSGF6YWVsIHNhaWQsIEJ1dCB3aGF0LCBpcyB0aHkgc2VydmFudCBhIGRvZywgdGhhdCBoZSBzaG91bGQgZG8gdGhpcyBncmVhdCB0aGluZz8gQW5kIEVsaXNoYSBhbnN3ZXJlZCwgVGhlIExPUkQgaGF0aCBzaGV3ZWQgbWUgdGhhdCB0aG91IHNoYWx0IGJlIGtpbmcgb3ZlciBTeXJpYS4KU28gaGUgZGVwYXJ0ZWQgZnJvbSBFbGlzaGEsIGFuZCBjYW1lIHRvIGhpcyBtYXN0ZXI7IHdobyBzYWlkIHRvIGhpbSwgV2hhdCBzYWlkIEVsaXNoYSB0byB0aGVlPyBBbmQgaGUgYW5zd2VyZWQsIEhlIHRvbGQgbWUgdGhhdCB0aG91IHNob3VsZGVzdCBzdXJlbHkgcmVjb3Zlci4KQW5kIGl0IGNhbWUgdG8gcGFzcyBvbiB0aGUgbW9ycm93LCB0aGF0IGhlIHRvb2sgYSB0aGljayBjbG90aCwgYW5kIGRpcHBlZCBpdCBpbiB3YXRlciwgYW5kIHNwcmVhZCBpdCBvbiBoaXMgZmFjZSwgc28gdGhhdCBoZSBkaWVkOiBhbmQgSGF6YWVsIHJlaWduZWQgaW4gaGlzIHN0ZWFkLgpBbmQgaW4gdGhlIGZpZnRoIHllYXIgb2YgSm9yYW0gdGhlIHNvbiBvZiBBaGFiIGtpbmcgb2YgSXNyYWVsLCBKZWhvc2hhcGhhdCBiZWluZyB0aGVuIGtpbmcgb2YgSnVkYWgsIEplaG9yYW0gdGhlIHNvbiBvZiBKZSBob3NoYXBoYXQga2luZyBvZiBKdWRhaCBiZWdhbiB0byByZWlnbi4KVGhpcnR5IGFuZCB0d28geWVhcnMgb2xkIHdhcyBoZSB3aGVuIGhlIGJlZ2FuIHRvIHJlaWduOyBhbmQgaGUgcmVpZ25lZCBlaWdodCB5ZWFycyBpbiBKZXJ1c2FsZW0uCkFuZCBoZSB3YWxrZWQgaW4gdGhlIHdheSBvZiB0aGUga2luZ3Mgb2YgSXNyYWVsLCBhcyBkaWQgdGhlIGhvdXNlIG9mIEFoYWI6IGZvciB0aGUgZGF1Z2h0ZXIgb2YgQWhhYiB3YXMgaGlzIHdpZmU6IGFuZCBoZSBkaWQgZXZpbCBpbiB0aGUgc2lnaHQgb2YgdGhlIExPUkQuCllldCB0aGUgTE9SRCB3b3VsZCBub3QgZGVzdHJveSBKdWRhaCBmb3IgRGF2aWQgaGlzIHNlcnZhbnQncyBzYWtlLCBhcyBoZSBwcm9taXNlZCBoaW0gdG8gZ2l2ZSBoaW0gYWx3YXkgYSBsaWdodCwgYW5kIHRvIGhpcyBjaGlsZHJlbi4KSW4gaGlzIGRheXMgRWRvbSByZXZvbHRlZCBmcm9tIHVuZGVyIHRoZSBoYW5kIG9mIEp1ZGFoLCBhbmQgbWFkZSBhIGtpbmcgb3ZlciB0aGVtc2VsdmVzLgpTbyBKb3JhbSB3ZW50IG92ZXIgdG8gWmFpciwgYW5kIGFsbCB0aGUgY2hhcmlvdHMgd2l0aCBoaW06IGFuZCBoZSByb3NlIGJ5IG5pZ2h0LCBhbmQgc21vdGUgdGhlIEVkb21pdGVzIHdoaWNoIGNvbXBhc3NlZCBoaW0gYWJvdXQsIGFuZCB0aGUgY2FwdGFpbnMgb2YgdGhlIGNoYXJpb3RzOiBhbmQgdGhlIHBlb3BsZSBmbGVkIGludG8gdGhlaXIgdGVudHMuCllldCBFZG9tIHJldm9sdGVkIGZyb20gdW5kZXIgdGhlIGhhbmQgb2YgSnVkYWggdW50byB0aGlzIGRheS4gVGhlbiBMaWJuYWggcmV2b2x0ZWQgYXQgdGhlIHNhbWUgdGltZS4KQW5kIHRoZSByZXN0IG9mIHRoZSBhY3RzIG9mIEpvcmFtLCBhbmQgYWxsIHRoYXQgaGUgZGlkLCBhcmUgdGhleSBub3Qgd3JpdHRlbiBpbiB0aGUgYm9vayBvZiB0aGUgY2hyb25pY2xlcyBvZiB0aGUga2luZ3Mgb2YgSnVkYWg/CkFuZCBKb3JhbSBzbGVwdCB3aXRoIGhpcyBmYXRoZXJzLCBhbmQgd2FzIGJ1cmllZCB3aXRoIGhpcyBmYXRoZXJzIGluIHRoZSBjaXR5IG9mIERhdmlkOiBhbmQgQWhhemlhaCBoaXMgc29uIHJlaWduZWQgaW4gaGlzIHN0ZWFkLgpJbiB0aGUgdHdlbGZ0aCB5ZWFyIG9mIEpvcmFtIHRoZSBzb24gb2YgQWhhYiBraW5nIG9mIElzcmFlbCBkaWQgQWhhemlhaCB0aGUgc29uIG9mIEplaG9yYW0ga2luZyBvZiBKdWRhaCBiZWdpbiB0byByZWlnbi4KVHdvIGFuZCB0d2VudHkgeWVhcnMgb2xkIHdhcyBBaGF6aWFoIHdoZW4gaGUgYmVnYW4gdG8gcmVpZ247IGFuZCBoZSByZWlnbmVkIG9uZSB5ZWFyIGluIEplcnVzYWxlbS4gQW5kIGhpcyBtb3RoZXIncyBuYW1lIHdhcyBBdGhhbGlhaCwgdGhlIGRhdWdodGVyIG9mIE9tcmkga2luZyBvZiBJc3JhZWwuCkFuZCBoZSB3YWxrZWQgaW4gdGhlIHdheSBvZiB0aGUgaG91c2Ugb2YgQWhhYiwgYW5kIGRpZCBldmlsIGluIHRoZSBzaWdodCBvZiB0aGUgTE9SRCwgYXMgZGlkIHRoZSBob3VzZSBvZiBBaGFiOiBmb3IgaGUgd2FzIHRoZSBzb24gaW4gbGF3IG9mIHRoZSBob3VzZSBvZiBBaGFiLgpBbmQgaGUgd2VudCB3aXRoIEpvcmFtIHRoZSBzb24gb2YgQWhhYiB0byB0aGUgd2FyIGFnYWluc3QgSGF6YWVsIGtpbmcgb2YgU3lyaWEgaW4gUmFtb3RoZ2lsZWFkOyBhbmQgdGhlIFN5cmlhbnMgd291bmRlZCBKb3JhbS4KQW5kIGtpbmcgSm9yYW0gd2VudCBiYWNrIHRvIGJlIGhlYWxlZCBpbiBKZXpyZWVsIG9mIHRoZSB3b3VuZHMgd2hpY2ggdGhlIFN5cmlhbnMgaGFkIGdpdmVuIGhpbSBhdCBSYW1haCwgd2hlbiBoZSBmb3VnaHQgYWdhaW5zdCBIYXphZWwga2luZyBvZiBTeXJpYS4gQW5kIEFoYXppYWggdGhlIHNvbiBvZiBKZWhvcmFtIGtpbmcgb2YgSnVkYWggd2VudCBkb3duIHRvIHNlZSBKb3JhbSB0aGUgc29uIG9mIEFoYWIgaW4gSmV6cmVlbCwgYmVjYXVzZSBoZSB3YXMgc2ljay4KQW5kIEVsaXNoYSB0aGUgcHJvcGhldCBjYWxsZWQgb25lIG9mIHRoZSBjaGlsZHJlbiBvZiB0aGUgcHJvcGhldHMsIGFuZCBzYWlkIHVudG8gaGltLCBHaXJkIHVwIHRoeSBsb2lucywgYW5kIHRha2UgdGhpcyBib3ggb2Ygb2lsIGluIHRoaW5lIGhhbmQsIGFuZCBnbyB0byBSYW1vdGhnaWxlYWQ6CkFuZCB3aGVuIHRob3UgY29tZXN0IHRoaXRoZXIsIGxvb2sgb3V0IHRoZXJlIEplaHUgdGhlIHNvbiBvZiBKZWhvc2hhcGhhdCB0aGUgc29uIG9mIE5pbXNoaSwgYW5kIGdvIGluLCBhbmQgbWFrZSBoaW0gYXJpc2UgdXAgZnJvbSBhbW9uZyBoaXMgYnJldGhyZW4sIGFuZCBjYXJyeSBoaW0gdG8gYW4gaW5uZXIgY2hhbWJlcjsKVGhlbiB0YWtlIHRoZSBib3ggb2Ygb2lsLCBhbmQgcG91ciBpdCBvbiBoaXMgaGVhZCwgYW5kIHNheSwgVGh1cyBzYWl0aCB0aGUgTE9SRCwgSSBoYXZlIGFub2ludGVkIHRoZWUga2luZyBvdmVyIElzcmFlbC4gVGhlbiBvcGVuIHRoZSBkb29yLCBhbmQgZmxlZSwgYW5kIHRhcnJ5IG5vdC4KU28gdGhlIHlvdW5nIG1hbiwgZXZlbiB0aGUgeW91bmcgbWFuIHRoZSBwcm9waGV0LCB3ZW50IHRvIFJhbW90aGdpbGVhZC4KQW5kIHdoZW4gaGUgY2FtZSwgYmVob2xkLCB0aGUgY2FwdGFpbnMgb2YgdGhlIGhvc3Qgd2VyZSBzaXR0aW5nOyBhbmQgaGUgc2FpZCwgSSBoYXZlIGFuIGVycmFuZCB0byB0aGVlLCBPIGNhcHRhaW4uIEFuZCBKZWh1IHNhaWQsIFVudG8gd2hpY2ggb2YgYWxsIHVzPyBBbmQgaGUgc2FpZCwgVG8gdGhlZSwgTyBjYXB0YWluLgpBbmQgaGUgYXJvc2UsIGFuZCB3ZW50IGludG8gdGhlIGhvdXNlOyBhbmQgaGUgcG91cmVkIHRoZSBvaWwgb24gaGlzIGhlYWQsIGFuZCBzYWlkIHVudG8gaGltLCBUaHVzIHNhaXRoIHRoZSBMT1JEIEdvZCBvZiBJc3JhZWwsIEkgaGF2ZSBhbm9pbnRlZCB0aGVlIGtpbmcgb3ZlciB0aGUgcGVvcGxlIG9mIHRoZSBMT1JELCBldmVuIG92ZXIgSXNyYWVsLgpBbmQgdGhvdSBzaGFsdCBzbWl0ZSB0aGUgaG91c2Ugb2YgQWhhYiB0aHkgbWFzdGVyLCB0aGF0IEkgbWF5IGF2ZW5nZSB0aGUgYmxvb2Qgb2YgbXkgc2VydmFudHMgdGhlIHByb3BoZXRzLCBhbmQgdGhlIGJsb29kIG9mIGFsbCB0aGUgc2VydmFudHMgb2YgdGhlIExPUkQsIGF0IHRoZSBoYW5kIG9mIEplemViZWwuCkZvciB0aGUgd2hvbGUgaG91c2Ugb2YgQWhhYiBzaGFsbCBwZXJpc2g6IGFuZCBJIHdpbGwgY3V0IG9mZiBmcm9tIEFoYWIgaGltIHRoYXQgcGlzc2V0aCBhZ2FpbnN0IHRoZSB3YWxsLCBhbmQgaGltIHRoYXQgaXMgc2h1dCB1cCBhbmQgbGVmdCBpbiBJc3JhZWw6CkFuZCBJIHdpbGwgbWFrZSB0aGUgaG91c2Ugb2YgQWhhYiBsaWtlIHRoZSBob3VzZSBvZiBKZXJvYm9hbSB0aGUgc29uIG9mIE5lYmF0LCBhbmQgbGlrZSB0aGUgaG91c2Ugb2YgQmFhc2hhIHRoZSBzb24gb2YgQWhpamFoOgpBbmQgdGhlIGRvZ3Mgc2hhbGwgZWF0IEplemViZWwgaW4gdGhlIHBvcnRpb24gb2YgSmV6cmVlbCwgYW5kIHRoZXJlIHNoYWxsIGJlIG5vbmUgdG8gYnVyeSBoZXIuIEFuZCBoZSBvcGVuZWQgdGhlIGRvb3IsIGFuZCBmbGVkLgpUaGVuIEplaHUgY2FtZSBmb3J0aCB0byB0aGUgc2VydmFudHMgb2YgaGlzIGxvcmQ6IGFuZCBvbmUgc2FpZCB1bnRvIGhpbSwgSXMgYWxsIHdlbGw/IHdoZXJlZm9yZSBjYW1lIHRoaXMgbWFkIGZlbGxvdyB0byB0aGVlPyBBbmQgaGUgc2FpZCB1bnRvIHRoZW0sIFllIGtub3cgdGhlIG1hbiwgYW5kIGhpcyBjb21tdW5pY2F0aW9uLgpBbmQgdGhleSBzYWlkLCBJdCBpcyBmYWxzZTsgdGVsbCB1cyBub3cuIEFuZCBoZSBzYWlkLCBUaHVzIGFuZCB0aHVzIHNwYWtlIGhlIHRvIG1lLCBzYXlpbmcsIFRodXMgc2FpdGggdGhlIExPUkQsIEkgaGF2ZSBhbm9pbnRlZCB0aGVlIGtpbmcgb3ZlciBJc3JhZWwuClRoZW4gdGhleSBoYXN0ZWQsIGFuZCB0b29rIGV2ZXJ5IG1hbiBoaXMgZ2FybWVudCwgYW5kIHB1dCBpdCB1bmRlciBoaW0gb24gdGhlIHRvcCBvZiB0aGUgc3RhaXJzLCBhbmQgYmxldyB3aXRoIHRydW1wZXRzLCBzYXlpbmcsIEplaHUgaXMga2luZy4KU28gSmVodSB0aGUgc29uIG9mIEplaG9zaGFwaGF0IHRoZSBzb24gb2YgTmltc2hpIGNvbnNwaXJlZCBhZ2FpbnN0IEpvcmFtLiAoTm93IEpvcmFtIGhhZCBrZXB0IFJhbW90aGdpbGVhZCwgaGUgYW5kIGFsbCBJc3JhZWwsIGJlY2F1c2Ugb2YgSGF6YWVsIGtpbmcgb2YgU3lyaWEuCkJ1dCBraW5nIEpvcmFtIHdhcyByZXR1cm5lZCB0byBiZSBoZWFsZWQgaW4gSmV6cmVlbCBvZiB0aGUgd291bmRzIHdoaWNoIHRoZSBTeXJpYW5zIGhhZCBnaXZlbiBoaW0sIHdoZW4gaGUgZm91Z2h0IHdpdGggSGF6YWVsIGtpbmcgb2YgU3lyaWEuKSBBbmQgSmVodSBzYWlkLCBJZiBpdCBiZSB5b3VyIG1pbmRzLCB0aGVuIGxldCBub25lIGdvIGZvcnRoIG5vciBlc2NhcGUgb3V0IG9mIHRoZSBjaXR5IHRvIGdvIHRvIHRlbGwgaXQgaW4gSmV6cmVlbC4KU28gSmVodSByb2RlIGluIGEgY2hhcmlvdCwgYW5kIHdlbnQgdG8gSmV6cmVlbDsgZm9yIEpvcmFtIGxheSB0aGVyZS4gQW5kIEFoYXppYWgga2luZyBvZiBKdWRhaCB3YXMgY29tZSBkb3duIHRvIHNlZSBKb3JhbS4KQW5kIHRoZXJlIHN0b29kIGEgd2F0Y2htYW4gb24gdGhlIHRvd2VyIGluIEplenJlZWwsIGFuZCBoZSBzcGllZCB0aGUgY29tcGFueSBvZiBKZWh1IGFzIGhlIGNhbWUsIGFuZCBzYWlkLCBJIHNlZSBhIGNvbXBhbnkuIEFuZCBKb3JhbSBzYWlkLCBUYWtlIGFuIGhvcnNlbWFuLCBhbmQgc2VuZCB0byBtZWV0IHRoZW0sIGFuZCBsZXQgaGltIHNheSwgSXMgaXQgcGVhY2U/ClNvIHRoZXJlIHdlbnQgb25lIG9uIGhvcnNlYmFjayB0byBtZWV0IGhpbSwgYW5kIHNhaWQsIFRodXMgc2FpdGggdGhlIGtpbmcsIElzIGl0IHBlYWNlPyBBbmQgSmVodSBzYWlkLCBXaGF0IGhhc3QgdGhvdSB0byBkbyB3aXRoIHBlYWNlPyB0dXJuIHRoZWUgYmVoaW5kIG1lLiBBbmQgdGhlIHdhdGNobWFuIHRvbGQsIHNheWluZywgVGhlIG1lc3NlbmdlciBjYW1lIHRvIHRoZW0sIGJ1dCBoZSBjb21ldGggbm90IGFnYWluLgpUaGVuIGhlIHNlbnQgb3V0IGEgc2Vjb25kIG9uIGhvcnNlYmFjaywgd2hpY2ggY2FtZSB0byB0aGVtLCBhbmQgc2FpZCwgVGh1cyBzYWl0aCB0aGUga2luZywgSXMgaXQgcGVhY2U/IEFuZCBKZWh1IGFuc3dlcmVkLCBXaGF0IGhhc3QgdGhvdSB0byBkbyB3aXRoIHBlYWNlPyB0dXJuIHRoZWUgYmVoaW5kIG1lLgpBbmQgdGhlIHdhdGNobWFuIHRvbGQsIHNheWluZywgSGUgY2FtZSBldmVuIHVudG8gdGhlbSwgYW5kIGNvbWV0aCBub3QgYWdhaW46IGFuZCB0aGUgZHJpdmluZyBpcyBsaWtlIHRoZSBkcml2aW5nIG9mIEplaHUgdGhlIHNvbiBvZiBOaW1zaGk7IGZvciBoZSBkcml2ZXRoIGZ1cmlvdXNseS4KQW5kIEpvcmFtIHNhaWQsIE1ha2UgcmVhZHkuIEFuZCBoaXMgY2hhcmlvdCB3YXMgbWFkZSByZWFkeS4gQW5kIEpvcmFtIGtpbmcgb2YgSXNyYWVsIGFuZCBBaGF6aWFoIGtpbmcgb2YgSnVkYWggd2VudCBvdXQsIGVhY2ggaW4gaGlzIGNoYXJpb3QsIGFuZCB0aGV5IHdlbnQgb3V0IGFnYWluc3QgSmVodSwgYW5kIG1ldCBoaW0gaW4gdGhlIHBvcnRpb24gb2YgTmFib3RoIHRoZSBKZXpyZWVsaXRlLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIEpvcmFtIHNhdyBKZWh1LCB0aGF0IGhlIHNhaWQsIElzIGl0IHBlYWNlLCBKZWh1PyBBbmQgaGUgYW5zd2VyZWQsIFdoYXQgcGVhY2UsIHNvIGxvbmcgYXMgdGhlIHdob3JlZG9tcyBvZiB0aHkgbW90aGVyIEplemViZWwgYW5kIGhlciB3aXRjaGNyYWZ0cyBhcmUgc28gbWFueT8KQW5kIEpvcmFtIHR1cm5lZCBoaXMgaGFuZHMsIGFuZCBmbGVkLCBhbmQgc2FpZCB0byBBaGF6aWFoLCBUaGVyZSBpcyB0cmVhY2hlcnksIE8gQWhhemlhaC4KQW5kIEplaHUgZHJldyBhIGJvdyB3aXRoIGhpcyBmdWxsIHN0cmVuZ3RoLCBhbmQgc21vdGUgSmVob3JhbSBiZXR3ZWVuIGhpcyBhcm1zLCBhbmQgdGhlIGFycm93IHdlbnQgb3V0IGF0IGhpcyBoZWFydCwgYW5kIGhlIHN1bmsgZG93biBpbiBoaXMgY2hhcmlvdC4KVGhlbiBzYWlkIEplaHUgdG8gQmlka2FyIGhpcyBjYXB0YWluLCBUYWtlIHVwLCBhbmQgY2FzdCBoaW0gaW4gdGhlIHBvcnRpb24gb2YgdGhlIGZpZWxkIG9mIE5hYm90aCB0aGUgSmV6cmVlbGl0ZTogZm9yIHJlbWVtYmVyIGhvdyB0aGF0LCB3aGVuIEkgYW5kIHRob3Ugcm9kZSB0b2dldGhlciBhZnRlciBBaGFiIGhpcyBmYXRoZXIsIHRoZSBMT1JEIGxhaWQgdGhpcyBidXJkZW4gdXBvbiBoaW07ClN1cmVseSBJIGhhdmUgc2VlbiB5ZXN0ZXJkYXkgdGhlIGJsb29kIG9mIE5hYm90aCwgYW5kIHRoZSBibG9vZCBvZiBoaXMgc29ucywgc2FpdGggdGhlIExPUkQ7IGFuZCBJIHdpbGwgcmVxdWl0ZSB0aGVlIGluIHRoaXMgcGxhdCwgc2FpdGggdGhlIExPUkQuIE5vdyB0aGVyZWZvcmUgdGFrZSBhbmQgY2FzdCBoaW0gaW50byB0aGUgcGxhdCBvZiBncm91bmQsIGFjY29yZGluZyB0byB0aGUgd29yZCBvZiB0aGUgTE9SRC4KQnV0IHdoZW4gQWhhemlhaCB0aGUga2luZyBvZiBKdWRhaCBzYXcgdGhpcywgaGUgZmxlZCBieSB0aGUgd2F5IG9mIHRoZSBnYXJkZW4gaG91c2UuIEFuZCBKZWh1IGZvbGxvd2VkIGFmdGVyIGhpbSwgYW5kIHNhaWQsIFNtaXRlIGhpbSBhbHNvIGluIHRoZSBjaGFyaW90LiBBbmQgdGhleSBkaWQgc28gYXQgdGhlIGdvaW5nIHVwIHRvIEd1ciwgd2hpY2ggaXMgYnkgSWJsZWFtLiBBbmQgaGUgZmxlZCB0byBNZWdpZGRvLCBhbmQgZGllZCB0aGVyZS4KQW5kIGhpcyBzZXJ2YW50cyBjYXJyaWVkIGhpbSBpbiBhIGNoYXJpb3QgdG8gSmVydXNhbGVtLCBhbmQgYnVyaWVkIGhpbSBpbiBoaXMgc2VwdWxjaHJlIHdpdGggaGlzIGZhdGhlcnMgaW4gdGhlIGNpdHkgb2YgRGF2aWQuCkFuZCBpbiB0aGUgZWxldmVudGggeWVhciBvZiBKb3JhbSB0aGUgc29uIG9mIEFoYWIgYmVnYW4gQWhhemlhaCB0byByZWlnbiBvdmVyIEp1ZGFoLgpBbmQgd2hlbiBKZWh1IHdhcyBjb21lIHRvIEplenJlZWwsIEplemViZWwgaGVhcmQgb2YgaXQ7IGFuZCBzaGUgcGFpbnRlZCBoZXIgZmFjZSwgYW5kIHRpcmVkIGhlciBoZWFkLCBhbmQgbG9va2VkIG91dCBhdCBhIHdpbmRvdy4KQW5kIGFzIEplaHUgZW50ZXJlZCBpbiBhdCB0aGUgZ2F0ZSwgc2hlIHNhaWQsIEhhZCBaaW1yaSBwZWFjZSwgd2hvIHNsZXcgaGlzIG1hc3Rlcj8KQW5kIGhlIGxpZnRlZCB1cCBoaXMgZmFjZSB0byB0aGUgd2luZG93LCBhbmQgc2FpZCwgV2hvIGlzIG9uIG15IHNpZGU/IHdobz8gQW5kIHRoZXJlIGxvb2tlZCBvdXQgdG8gaGltIHR3byBvciB0aHJlZSBldW51Y2hzLgpBbmQgaGUgc2FpZCwgVGhyb3cgaGVyIGRvd24uIFNvIHRoZXkgdGhyZXcgaGVyIGRvd246IGFuZCBzb21lIG9mIGhlciBibG9vZCB3YXMgc3ByaW5rbGVkIG9uIHRoZSB3YWxsLCBhbmQgb24gdGhlIGhvcnNlczogYW5kIGhlIHRyb2RlIGhlciB1bmRlciBmb290LgpBbmQgd2hlbiBoZSB3YXMgY29tZSBpbiwgaGUgZGlkIGVhdCBhbmQgZHJpbmssIGFuZCBzYWlkLCBHbywgc2VlIG5vdyB0aGlzIGN1cnNlZCB3b21hbiwgYW5kIGJ1cnkgaGVyOiBmb3Igc2hlIGlzIGEga2luZydzIGRhdWdodGVyLgpBbmQgdGhleSB3ZW50IHRvIGJ1cnkgaGVyOiBidXQgdGhleSBmb3VuZCBubyBtb3JlIG9mIGhlciB0aGFuIHRoZSBza3VsbCwgYW5kIHRoZSBmZWV0LCBhbmQgdGhlIHBhbG1zIG9mIGhlciBoYW5kcy4KV2hlcmVmb3JlIHRoZXkgY2FtZSBhZ2FpbiwgYW5kIHRvbGQgaGltLiBBbmQgaGUgc2FpZCwgVGhpcyBpcyB0aGUgd29yZCBvZiB0aGUgTE9SRCwgd2hpY2ggaGUgc3Bha2UgYnkgaGlzIHNlcnZhbnQgRWxpamFoIHRoZSBUaXNoYml0ZSwgc2F5aW5nLCBJbiB0aGUgcG9ydGlvbiBvZiBKZXpyZWVsIHNoYWxsIGRvZ3MgZWF0IHRoZSBmbGVzaCBvZiBKZXplYmVsOgpBbmQgdGhlIGNhcmNhc2Ugb2YgSmV6ZWJlbCBzaGFsbCBiZSBhcyBkdW5nIHVwb24gdGhlIGZhY2Ugb2YgdGhlIGZpZWxkIGluIHRoZSBwb3J0aW9uIG9mIEplenJlZWw7IHNvIHRoYXQgdGhleSBzaGFsbCBub3Qgc2F5LCBUaGlzIGlzIEplemViZWwuCkFuZCBBaGFiIGhhZCBzZXZlbnR5IHNvbnMgaW4gU2FtYXJpYS4gQW5kIEplaHUgd3JvdGUgbGV0dGVycywgYW5kIHNlbnQgdG8gU2FtYXJpYSwgdW50byB0aGUgcnVsZXJzIG9mIEplenJlZWwsIHRvIHRoZSBlbGRlcnMsIGFuZCB0byB0aGVtIHRoYXQgYnJvdWdodCB1cCBBaGFiJ3MgY2hpbGRyZW4sIHNheWluZywKTm93IGFzIHNvb24gYXMgdGhpcyBsZXR0ZXIgY29tZXRoIHRvIHlvdSwgc2VlaW5nIHlvdXIgbWFzdGVyJ3Mgc29ucyBhcmUgd2l0aCB5b3UsIGFuZCB0aGVyZSBhcmUgd2l0aCB5b3UgY2hhcmlvdHMgYW5kIGhvcnNlcywgYSBmZW5jZWQgY2l0eSBhbHNvLCBhbmQgYXJtb3VyOwpMb29rIGV2ZW4gb3V0IHRoZSBiZXN0IGFuZCBtZWV0ZXN0IG9mIHlvdXIgbWFzdGVyJ3Mgc29ucywgYW5kIHNldCBoaW0gb24gaGlzIGZhdGhlcidzIHRocm9uZSwgYW5kIGZpZ2h0IGZvciB5b3VyIG1hc3RlcidzIGhvdXNlLgpCdXQgdGhleSB3ZXJlIGV4Y2VlZGluZ2x5IGFmcmFpZCwgYW5kIHNhaWQsIEJlaG9sZCwgdHdvIGtpbmdzIHN0b29kIG5vdCBiZWZvcmUgaGltOiBob3cgdGhlbiBzaGFsbCB3ZSBzdGFuZD8KQW5kIGhlIHRoYXQgd2FzIG92ZXIgdGhlIGhvdXNlLCBhbmQgaGUgdGhhdCB3YXMgb3ZlciB0aGUgY2l0eSwgdGhlIGVsZGVycyBhbHNvLCBhbmQgdGhlIGJyaW5nZXJzIHVwIG9mIHRoZSBjaGlsZHJlbiwgc2VudCB0byBKZWh1LCBzYXlpbmcsIFdlIGFyZSB0aHkgc2VydmFudHMsIGFuZCB3aWxsIGRvIGFsbCB0aGF0IHRob3Ugc2hhbHQgYmlkIHVzOyB3ZSB3aWxsIG5vdCBtYWtlIGFueSBraW5nOiBkbyB0aG91IHRoYXQgd2hpY2ggaXMgZ29vZCBpbiB0aGluZSBleWVzLgpUaGVuIGhlIHdyb3RlIGEgbGV0dGVyIHRoZSBzZWNvbmQgdGltZSB0byB0aGVtLCBzYXlpbmcsIElmIHllIGJlIG1pbmUsIGFuZCBpZiB5ZSB3aWxsIGhlYXJrZW4gdW50byBteSB2b2ljZSwgdGFrZSB5ZSB0aGUgaGVhZHMgb2YgdGhlIG1lbiB5b3VyIG1hc3RlcidzIHNvbnMsIGFuZCBjb21lIHRvIG1lIHRvIEplenJlZWwgYnkgdG8gbW9ycm93IHRoaXMgdGltZS4gTm93IHRoZSBraW5nJ3Mgc29ucywgYmVpbmcgc2V2ZW50eSBwZXJzb25zLCB3ZXJlIHdpdGggdGhlIGdyZWF0IG1lbiBvZiB0aGUgY2l0eSwgd2hpY2ggYnJvdWdodCB0aGVtIHVwLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIHRoZSBsZXR0ZXIgY2FtZSB0byB0aGVtLCB0aGF0IHRoZXkgdG9vayB0aGUga2luZydzIHNvbnMsIGFuZCBzbGV3IHNldmVudHkgcGVyc29ucywgYW5kIHB1dCB0aGVpciBoZWFkcyBpbiBiYXNrZXRzLCBhbmQgc2VudCBoaW0gdGhlbSB0byBKZXpyZWVsLgpBbmQgdGhlcmUgY2FtZSBhIG1lc3NlbmdlciwgYW5kIHRvbGQgaGltLCBzYXlpbmcsIFRoZXkgaGF2ZSBicm91Z2h0IHRoZSBoZWFkcyBvZiB0aGUga2luZydzIHNvbnMuIEFuZCBoZSBzYWlkLCBMYXkgeWUgdGhlbSBpbiB0d28gaGVhcHMgYXQgdGhlIGVudGVyaW5nIGluIG9mIHRoZSBnYXRlIHVudGlsIHRoZSBtb3JuaW5nLgpBbmQgaXQgY2FtZSB0byBwYXNzIGluIHRoZSBtb3JuaW5nLCB0aGF0IGhlIHdlbnQgb3V0LCBhbmQgc3Rvb2QsIGFuZCBzYWlkIHRvIGFsbCB0aGUgcGVvcGxlLCBZZSBiZSByaWdodGVvdXM6IGJlaG9sZCwgSSBjb25zcGlyZWQgYWdhaW5zdCBteSBtYXN0ZXIsIGFuZCBzbGV3IGhpbTogYnV0IHdobyBzbGV3IGFsbCB0aGVzZT8KS25vdyBub3cgdGhhdCB0aGVyZSBzaGFsbCBmYWxsIHVudG8gdGhlIGVhcnRoIG5vdGhpbmcgb2YgdGhlIHdvcmQgb2YgdGhlIExPUkQsIHdoaWNoIHRoZSBMT1JEIHNwYWtlIGNvbmNlcm5pbmcgdGhlIGhvdXNlIG9mIEFoYWI6IGZvciB0aGUgTE9SRCBoYXRoIGRvbmUgdGhhdCB3aGljaCBoZSBzcGFrZSBieSBoaXMgc2VydmFudCBFbGlqYWguClNvIEplaHUgc2xldyBhbGwgdGhhdCByZW1haW5lZCBvZiB0aGUgaG91c2Ugb2YgQWhhYiBpbiBKZXpyZWVsLCBhbmQgYWxsIGhpcyBncmVhdCBtZW4sIGFuZCBoaXMga2luc2ZvbGtzLCBhbmQgaGlzIHByaWVzdHMsIHVudGlsIGhlIGxlZnQgaGltIG5vbmUgcmVtYWluaW5nLgpBbmQgaGUgYXJvc2UgYW5kIGRlcGFydGVkLCBhbmQgY2FtZSB0byBTYW1hcmlhLiBBbmQgYXMgaGUgd2FzIGF0IHRoZSBzaGVhcmluZyBob3VzZSBpbiB0aGUgd2F5LApKZWh1IG1ldCB3aXRoIHRoZSBicmV0aHJlbiBvZiBBaGF6aWFoIGtpbmcgb2YgSnVkYWgsIGFuZCBzYWlkLCBXaG8gYXJlIHllPyBBbmQgdGhleSBhbnN3ZXJlZCwgV2UgYXJlIHRoZSBicmV0aHJlbiBvZiBBaGF6aWFoOyBhbmQgd2UgZ28gZG93biB0byBzYWx1dGUgdGhlIGNoaWxkcmVuIG9mIHRoZSBraW5nIGFuZCB0aGUgY2hpbGRyZW4gb2YgdGhlIHF1ZWVuLgpBbmQgaGUgc2FpZCwgVGFrZSB0aGVtIGFsaXZlLiBBbmQgdGhleSB0b29rIHRoZW0gYWxpdmUsIGFuZCBzbGV3IHRoZW0gYXQgdGhlIHBpdCBvZiB0aGUgc2hlYXJpbmcgaG91c2UsIGV2ZW4gdHdvIGFuZCBmb3J0eSBtZW47IG5laXRoZXIgbGVmdCBoZSBhbnkgb2YgdGhlbS4KQW5kIHdoZW4gaGUgd2FzIGRlcGFydGVkIHRoZW5jZSwgaGUgbGlnaHRlZCBvbiBKZWhvbmFkYWIgdGhlIHNvbiBvZiBSZWNoYWIgY29taW5nIHRvIG1lZXQgaGltOiBhbmQgaGUgc2FsdXRlZCBoaW0sIGFuZCBzYWlkIHRvIGhpbSwgSXMgdGhpbmUgaGVhcnQgcmlnaHQsIGFzIG15IGhlYXJ0IGlzIHdpdGggdGh5IGhlYXJ0PyBBbmQgSmVob25hZGFiIGFuc3dlcmVkLCBJdCBpcy4gSWYgaXQgYmUsIGdpdmUgbWUgdGhpbmUgaGFuZC4gQW5kIGhlIGdhdmUgaGltIGhpcyBoYW5kOyBhbmQgaGUgdG9vayBoaW0gdXAgdG8gaGltIGludG8gdGhlIGNoYXJpb3QuCkFuZCBoZSBzYWlkLCBDb21lIHdpdGggbWUsIGFuZCBzZWUgbXkgemVhbCBmb3IgdGhlIExPUkQuIFNvIHRoZXkgbWFkZSBoaW0gcmlkZSBpbiBoaXMgY2hhcmlvdC4KQW5kIHdoZW4gaGUgY2FtZSB0byBTYW1hcmlhLCBoZSBzbGV3IGFsbCB0aGF0IHJlbWFpbmVkIHVudG8gQWhhYiBpbiBTYW1hcmlhLCB0aWxsIGhlIGhhZCBkZXN0cm95ZWQgaGltLCBhY2NvcmRpbmcgdG8gdGhlIHNheWluZyBvZiB0aGUgTE9SRCwgd2hpY2ggaGUgc3Bha2UgdG8gRWxpamFoLgpBbmQgSmVodSBnYXRoZXJlZCBhbGwgdGhlIHBlb3BsZSB0b2dldGhlciwgYW5kIHNhaWQgdW50byB0aGVtLCBBaGFiIHNlcnZlZCBCYWFsIGEgbGl0dGxlOyBidXQgSmVodSBzaGFsbCBzZXJ2ZSBoaW0gbXVjaC4KTm93IHRoZXJlZm9yZSBjYWxsIHVudG8gbWUgYWxsIHRoZSBwcm9waGV0cyBvZiBCYWFsLCBhbGwgaGlzIHNlcnZhbnRzLCBhbmQgYWxsIGhpcyBwcmllc3RzOyBsZXQgbm9uZSBiZSB3YW50aW5nOiBmb3IgSSBoYXZlIGEgZ3JlYXQgc2FjcmlmaWNlIHRvIGRvIHRvIEJhYWw7IHdob3NvZXZlciBzaGFsbCBiZSB3YW50aW5nLCBoZSBzaGFsbCBub3QgbGl2ZS4gQnV0IEplaHUgZGlkIGl0IGluIHN1YnRpbHR5LCB0byB0aGUgaW50ZW50IHRoYXQgaGUgbWlnaHQgZGVzdHJveSB0aGUgd29yc2hpcHBlcnMgb2YgQmFhbC4KQW5kIEplaHUgc2FpZCwgUHJvY2xhaW0gYSBzb2xlbW4gYXNzZW1ibHkgZm9yIEJhYWwuIEFuZCB0aGV5IHByb2NsYWltZWQgaXQuCkFuZCBKZWh1IHNlbnQgdGhyb3VnaCBhbGwgSXNyYWVsOiBhbmQgYWxsIHRoZSB3b3JzaGlwcGVycyBvZiBCYWFsIGNhbWUsIHNvIHRoYXQgdGhlcmUgd2FzIG5vdCBhIG1hbiBsZWZ0IHRoYXQgY2FtZSBub3QuIEFuZCB0aGV5IGNhbWUgaW50byB0aGUgaG91c2Ugb2YgQmFhbDsgYW5kIHRoZSBob3VzZSBvZiBCYWFsIHdhcyBmdWxsIGZyb20gb25lIGVuZCB0byBhbm90aGVyLgpBbmQgaGUgc2FpZCB1bnRvIGhpbSB0aGF0IHdhcyBvdmVyIHRoZSB2ZXN0cnksIEJyaW5nIGZvcnRoIHZlc3RtZW50cyBmb3IgYWxsIHRoZSB3b3JzaGlwcGVycyBvZiBCYWFsLiBBbmQgaGUgYnJvdWdodCB0aGVtIGZvcnRoIHZlc3RtZW50cy4KQW5kIEplaHUgd2VudCwgYW5kIEplaG9uYWRhYiB0aGUgc29uIG9mIFJlY2hhYiwgaW50byB0aGUgaG91c2Ugb2YgQmFhbCwgYW5kIHNhaWQgdW50byB0aGUgd29yc2hpcHBlcnMgb2YgQmFhbCwgU2VhcmNoLCBhbmQgbG9vayB0aGF0IHRoZXJlIGJlIGhlcmUgd2l0aCB5b3Ugbm9uZSBvZiB0aGUgc2VydmFudHMgb2YgdGhlIExPUkQsIGJ1dCB0aGUgd29yc2hpcHBlcnMgb2YgQmFhbCBvbmx5LgpBbmQgd2hlbiB0aGV5IHdlbnQgaW4gdG8gb2ZmZXIgc2FjcmlmaWNlcyBhbmQgYnVybnQgb2ZmZXJpbmdzLCBKZWh1IGFwcG9pbnRlZCBmb3Vyc2NvcmUgbWVuIHdpdGhvdXQsIGFuZCBzYWlkLCBJZiBhbnkgb2YgdGhlIG1lbiB3aG9tIEkgaGF2ZSBicm91Z2h0IGludG8geW91ciBoYW5kcyBlc2NhcGUsIGhlIHRoYXQgbGV0dGV0aCBoaW0gZ28sIGhpcyBsaWZlIHNoYWxsIGJlIGZvciB0aGUgbGlmZSBvZiBoaW0uCkFuZCBpdCBjYW1lIHRvIHBhc3MsIGFzIHNvb24gYXMgaGUgaGFkIG1hZGUgYW4gZW5kIG9mIG9mZmVyaW5nIHRoZSBidXJudCBvZmZlcmluZywgdGhhdCBKZWh1IHNhaWQgdG8gdGhlIGd1YXJkIGFuZCB0byB0aGUgY2FwdGFpbnMsIEdvIGluLCBhbmQgc2xheSB0aGVtOyBsZXQgbm9uZSBjb21lIGZvcnRoLiBBbmQgdGhleSBzbW90ZSB0aGVtIHdpdGggdGhlIGVkZ2Ugb2YgdGhlIHN3b3JkOyBhbmQgdGhlIGd1YXJkIGFuZCB0aGUgY2FwdGFpbnMgY2FzdCB0aGVtIG91dCwgYW5kIHdlbnQgdG8gdGhlIGNpdHkgb2YgdGhlIGhvdXNlIG9mIEJhYWwuCkFuZCB0aGV5IGJyb3VnaHQgZm9ydGggdGhlIGltYWdlcyBvdXQgb2YgdGhlIGhvdXNlIG9mIEJhYWwsIGFuZCBidXJuZWQgdGhlbS4KQW5kIHRoZXkgYnJha2UgZG93biB0aGUgaW1hZ2Ugb2YgQmFhbCwgYW5kIGJyYWtlIGRvd24gdGhlIGhvdXNlIG9mIEJhYWwsIGFuZCBtYWRlIGl0IGEgZHJhdWdodCBob3VzZSB1bnRvIHRoaXMgZGF5LgpUaHVzIEplaHUgZGVzdHJveWVkIEJhYWwgb3V0IG9mIElzcmFlbC4KSG93YmVpdCBmcm9tIHRoZSBzaW5zIG9mIEplcm9ib2FtIHRoZSBzb24gb2YgTmViYXQsIHdobyBtYWRlIElzcmFlbCB0byBzaW4sIEplaHUgZGVwYXJ0ZWQgbm90IGZyb20gYWZ0ZXIgdGhlbSwgdG8gd2l0LCB0aGUgZ29sZGVuIGNhbHZlcyB0aGF0IHdlcmUgaW4gQmV0aGVsLCBhbmQgdGhhdCB3ZXJlIGluIERhbi4KQW5kIHRoZSBMT1JEIHNhaWQgdW50byBKZWh1LCBCZWNhdXNlIHRob3UgaGFzdCBkb25lIHdlbGwgaW4gZXhlY3V0aW5nIHRoYXQgd2hpY2ggaXMgcmlnaHQgaW4gbWluZSBleWVzLCBhbmQgaGFzdCBkb25lIHVudG8gdGhlIGhvdXNlIG9mIEFoYWIgYWNjb3JkaW5nIHRvIGFsbCB0aGF0IHdhcyBpbiBtaW5lIGhlYXJ0LCB0aHkgY2hpbGRyZW4gb2YgdGhlIGZvdXJ0aCBnZW5lcmF0aW9uIHNoYWxsIHNpdCBvbiB0aGUgdGhyb25lIG9mIElzcmFlbC4KQnV0IEplaHUgdG9vayBubyBoZWVkIHRvIHdhbGsgaW4gdGhlIGxhdyBvZiB0aGUgTE9SRCBHb2Qgb2YgSXNyYWVsIHdpdGggYWxsIGhpcyBoZWFydDogZm9yIGhlIGRlcGFydGVkIG5vdCBmcm9tIHRoZSBzaW5zIG9mIEplcm9ib2FtLCB3aGljaCBtYWRlIElzcmFlbCB0byBzaW4uCkluIHRob3NlIGRheXMgdGhlIExPUkQgYmVnYW4gdG8gY3V0IElzcmFlbCBzaG9ydDogYW5kIEhhemFlbCBzbW90ZSB0aGVtIGluIGFsbCB0aGUgY29hc3RzIG9mIElzcmFlbDsKRnJvbSBKb3JkYW4gZWFzdHdhcmQsIGFsbCB0aGUgbGFuZCBvZiBHaWxlYWQsIHRoZSBHYWRpdGVzLCBhbmQgdGhlIFJldWJlbml0ZXMsIGFuZCB0aGUgTWFuYXNzaXRlcywgZnJvbSBBcm9lciwgd2hpY2ggaXMgYnkgdGhlIHJpdmVyIEFybm9uLCBldmVuIEdpbGVhZCBhbmQgQmFzaGFuLgpOb3cgdGhlIHJlc3Qgb2YgdGhlIGFjdHMgb2YgSmVodSwgYW5kIGFsbCB0aGF0IGhlIGRpZCwgYW5kIGFsbCBoaXMgbWlnaHQsIGFyZSB0aGV5IG5vdCB3cml0dGVuIGluIHRoZSBib29rIG9mIHRoZSBjaHJvbmljbGVzIG9mIHRoZSBraW5ncyBvZiBJc3JhZWw/CkFuZCBKZWh1IHNsZXB0IHdpdGggaGlzIGZhdGhlcnM6IGFuZCB0aGV5IGJ1cmllZCBoaW0gaW4gU2FtYXJpYS4gQW5kIEplaG9haGF6IGhpcyBzb24gcmVpZ25lZCBpbiBoaXMgc3RlYWQuCkFuZCB0aGUgdGltZSB0aGF0IEplaHUgcmVpZ25lZCBvdmVyIElzcmFlbCBpbiBTYW1hcmlhIHdhcyB0d2VudHkgYW5kIGVpZ2h0IHllYXJzLgpBbmQgd2hlbiBBdGhhbGlhaCB0aGUgbW90aGVyIG9mIEFoYXppYWggc2F3IHRoYXQgaGVyIHNvbiB3YXMgZGVhZCwgc2hlIGFyb3NlIGFuZCBkZXN0cm95ZWQgYWxsIHRoZSBzZWVkIHJveWFsLgpCdXQgSmVob3NoZWJhLCB0aGUgZGF1Z2h0ZXIgb2Yga2luZyBKb3JhbSwgc2lzdGVyIG9mIEFoYXppYWgsIHRvb2sgSm9hc2ggdGhlIHNvbiBvZiBBaGF6aWFoLCBhbmQgc3RvbGUgaGltIGZyb20gYW1vbmcgdGhlIGtpbmcncyBzb25zIHdoaWNoIHdlcmUgc2xhaW47IGFuZCB0aGV5IGhpZCBoaW0sIGV2ZW4gaGltIGFuZCBoaXMgbnVyc2UsIGluIHRoZSBiZWRjaGFtYmVyIGZyb20gQXRoYWxpYWgsIHNvIHRoYXQgaGUgd2FzIG5vdCBzbGFpbi4KQW5kIGhlIHdhcyB3aXRoIGhlciBoaWQgaW4gdGhlIGhvdXNlIG9mIHRoZSBMT1JEIHNpeCB5ZWFycy4gQW5kIEF0aGFsaWFoIGRpZCByZWlnbiBvdmVyIHRoZSBsYW5kLgpBbmQgdGhlIHNldmVudGggeWVhciBKZWhvaWFkYSBzZW50IGFuZCBmZXRjaGVkIHRoZSBydWxlcnMgb3ZlciBodW5kcmVkcywgd2l0aCB0aGUgY2FwdGFpbnMgYW5kIHRoZSBndWFyZCwgYW5kIGJyb3VnaHQgdGhlbSB0byBoaW0gaW50byB0aGUgaG91c2Ugb2YgdGhlIExPUkQsIGFuZCBtYWRlIGEgY292ZW5hbnQgd2l0aCB0aGVtLCBhbmQgdG9vayBhbiBvYXRoIG9mIHRoZW0gaW4gdGhlIGhvdXNlIG9mIHRoZSBMT1JELCBhbmQgc2hld2VkIHRoZW0gdGhlIGtpbmcncyBzb24uCkFuZCBoZSBjb21tYW5kZWQgdGhlbSwgc2F5aW5nLCBUaGlzIGlzIHRoZSB0aGluZyB0aGF0IHllIHNoYWxsIGRvOyBBIHRoaXJkIHBhcnQgb2YgeW91IHRoYXQgZW50ZXIgaW4gb24gdGhlIHNhYmJhdGggc2hhbGwgZXZlbiBiZSBrZWVwZXJzIG9mIHRoZSB3YXRjaCBvZiB0aGUga2luZydzIGhvdXNlOwpBbmQgYSB0aGlyZCBwYXJ0IHNoYWxsIGJlIGF0IHRoZSBnYXRlIG9mIFN1cjsgYW5kIGEgdGhpcmQgcGFydCBhdCB0aGUgZ2F0ZSBiZWhpbmQgdGhlIGd1YXJkOiBzbyBzaGFsbCB5ZSBrZWVwIHRoZSB3YXRjaCBvZiB0aGUgaG91c2UsIHRoYXQgaXQgYmUgbm90IGJyb2tlbiBkb3duLgpBbmQgdHdvIHBhcnRzIG9mIGFsbCB5b3UgdGhhdCBnbyBmb3J0aCBvbiB0aGUgc2FiYmF0aCwgZXZlbiB0aGV5IHNoYWxsIGtlZXAgdGhlIHdhdGNoIG9mIHRoZSBob3VzZSBvZiB0aGUgTE9SRCBhYm91dCB0aGUga2luZy4KQW5kIHllIHNoYWxsIGNvbXBhc3MgdGhlIGtpbmcgcm91bmQgYWJvdXQsIGV2ZXJ5IG1hbiB3aXRoIGhpcyB3ZWFwb25zIGluIGhpcyBoYW5kOiBhbmQgaGUgdGhhdCBjb21ldGggd2l0aGluIHRoZSByYW5nZXMsIGxldCBoaW0gYmUgc2xhaW46IGFuZCBiZSB5ZSB3aXRoIHRoZSBraW5nIGFzIGhlIGdvZXRoIG91dCBhbmQgYXMgaGUgY29tZXRoIGluLgpBbmQgdGhlIGNhcHRhaW5zIG92ZXIgdGhlIGh1bmRyZWRzIGRpZCBhY2NvcmRpbmcgdG8gYWxsIHRoaW5ncyB0aGF0IEplaG9pYWRhIHRoZSBwcmllc3QgY29tbWFuZGVkOiBhbmQgdGhleSB0b29rIGV2ZXJ5IG1hbiBoaXMgbWVuIHRoYXQgd2VyZSB0byBjb21lIGluIG9uIHRoZSBzYWJiYXRoLCB3aXRoIHRoZW0gdGhhdCBzaG91bGQgZ28gb3V0IG9uIHRoZSBzYWJiYXRoLCBhbmQgY2FtZSB0byBKZWhvaWFkYSB0aGUgcHJpZXN0LgpBbmQgdG8gdGhlIGNhcHRhaW5zIG92ZXIgaHVuZHJlZHMgZGlkIHRoZSBwcmllc3QgZ2l2ZSBraW5nIERhdmlkJ3Mgc3BlYXJzIGFuZCBzaGllbGRzLCB0aGF0IHdlcmUgaW4gdGhlIHRlbXBsZSBvZiB0aGUgTE9SRC4KQW5kIHRoZSBndWFyZCBzdG9vZCwgZXZlcnkgbWFuIHdpdGggaGlzIHdlYXBvbnMgaW4gaGlzIGhhbmQsIHJvdW5kIGFib3V0IHRoZSBraW5nLCBmcm9tIHRoZSByaWdodCBjb3JuZXIgb2YgdGhlIHRlbXBsZSB0byB0aGUgbGVmdCBjb3JuZXIgb2YgdGhlIHRlbXBsZSwgYWxvbmcgYnkgdGhlIGFsdGFyIGFuZCB0aGUgdGVtcGxlLgpBbmQgaGUgYnJvdWdodCBmb3J0aCB0aGUga2luZydzIHNvbiwgYW5kIHB1dCB0aGUgY3Jvd24gdXBvbiBoaW0sIGFuZCBnYXZlIGhpbSB0aGUgdGVzdGltb255OyBhbmQgdGhleSBtYWRlIGhpbSBraW5nLCBhbmQgYW5vaW50ZWQgaGltOyBhbmQgdGhleSBjbGFwcGVkIHRoZWlyIGhhbmRzLCBhbmQgc2FpZCwgR29kIHNhdmUgdGhlIGtpbmcuCkFuZCB3aGVuIEF0aGFsaWFoIGhlYXJkIHRoZSBub2lzZSBvZiB0aGUgZ3VhcmQgYW5kIG9mIHRoZSBwZW9wbGUsIHNoZSBjYW1lIHRvIHRoZSBwZW9wbGUgaW50byB0aGUgdGVtcGxlIG9mIHRoZSBMT1JELgpBbmQgd2hlbiBzaGUgbG9va2VkLCBiZWhvbGQsIHRoZSBraW5nIHN0b29kIGJ5IGEgcGlsbGFyLCBhcyB0aGUgbWFubmVyIHdhcywgYW5kIHRoZSBwcmluY2VzIGFuZCB0aGUgdHJ1bXBldGVycyBieSB0aGUga2luZywgYW5kIGFsbCB0aGUgcGVvcGxlIG9mIHRoZSBsYW5kIHJlam9pY2VkLCBhbmQgYmxldyB3aXRoIHRydW1wZXRzOiBhbmQgQXRoYWxpYWggcmVudCBoZXIgY2xvdGhlcywgYW5kIGNyaWVkLCBUcmVhc29uLCBUcmVhc29uLgpCdXQgSmVob2lhZGEgdGhlIHByaWVzdCBjb21tYW5kZWQgdGhlIGNhcHRhaW5zIG9mIHRoZSBodW5kcmVkcywgdGhlIG9mZmljZXJzIG9mIHRoZSBob3N0LCBhbmQgc2FpZCB1bnRvIHRoZW0sIEhhdmUgaGVyIGZvcnRoIHdpdGhvdXQgdGhlIHJhbmdlczogYW5kIGhpbSB0aGF0IGZvbGxvd2V0aCBoZXIga2lsbCB3aXRoIHRoZSBzd29yZC4gRm9yIHRoZSBwcmllc3QgaGFkIHNhaWQsIExldCBoZXIgbm90IGJlIHNsYWluIGluIHRoZSBob3VzZSBvZiB0aGUgTE9SRC4KQW5kIHRoZXkgbGFpZCBoYW5kcyBvbiBoZXI7IGFuZCBzaGUgd2VudCBieSB0aGUgd2F5IGJ5IHRoZSB3aGljaCB0aGUgaG9yc2VzIGNhbWUgaW50byB0aGUga2luZydzIGhvdXNlOiBhbmQgdGhlcmUgd2FzIHNoZSBzbGFpbi4KQW5kIEplaG9pYWRhIG1hZGUgYSBjb3ZlbmFudCBiZXR3ZWVuIHRoZSBMT1JEIGFuZCB0aGUga2luZyBhbmQgdGhlIHBlb3BsZSwgdGhhdCB0aGV5IHNob3VsZCBiZSB0aGUgTE9SRCdzIHBlb3BsZTsgYmV0d2VlbiB0aGUga2luZyBhbHNvIGFuZCB0aGUgcGVvcGxlLgpBbmQgYWxsIHRoZSBwZW9wbGUgb2YgdGhlIGxhbmQgd2VudCBpbnRvIHRoZSBob3VzZSBvZiBCYWFsLCBhbmQgYnJha2UgaXQgZG93bjsgaGlzIGFsdGFycyBhbmQgaGlzIGltYWdlcyBicmFrZSB0aGV5IGluIHBpZWNlcyB0aG9yb3VnaGx5LCBhbmQgc2xldyBNYXR0YW4gdGhlIHByaWVzdCBvZiBCYWFsIGJlZm9yZSB0aGUgYWx0YXJzLiBBbmQgdGhlIHByaWVzdCBhcHBvaW50ZWQgb2ZmaWNlcnMgb3ZlciB0aGUgaG91c2Ugb2YgdGhlIExPUkQuCkFuZCBoZSB0b29rIHRoZSBydWxlcnMgb3ZlciBodW5kcmVkcywgYW5kIHRoZSBjYXB0YWlucywgYW5kIHRoZSBndWFyZCwgYW5kIGFsbCB0aGUgcGVvcGxlIG9mIHRoZSBsYW5kOyBhbmQgdGhleSBicm91Z2h0IGRvd24gdGhlIGtpbmcgZnJvbSB0aGUgaG91c2Ugb2YgdGhlIExPUkQsIGFuZCBjYW1lIGJ5IHRoZSB3YXkgb2YgdGhlIGdhdGUgb2YgdGhlIGd1YXJkIHRvIHRoZSBraW5nJ3MgaG91c2UuIEFuZCBoZSBzYXQgb24gdGhlIHRocm9uZSBvZiB0aGUga2luZ3MuCkFuZCBhbGwgdGhlIHBlb3BsZSBvZiB0aGUgbGFuZCByZWpvaWNlZCwgYW5kIHRoZSBjaXR5IHdhcyBpbiBxdWlldDogYW5kIHRoZXkgc2xldyBBdGhhbGlhaCB3aXRoIHRoZSBzd29yZCBiZXNpZGUgdGhlIGtpbmcncyBob3VzZS4KU2V2ZW4geWVhcnMgb2xkIHdhcyBKZWhvYXNoIHdoZW4gaGUgYmVnYW4gdG8gcmVpZ24uCkluIHRoZSBzZXZlbnRoIHllYXIgb2YgSmVodSBKZWhvYXNoIGJlZ2FuIHRvIHJlaWduOyBhbmQgZm9ydHkgeWVhcnMgcmVpZ25lZCBoZSBpbiBKZXJ1c2FsZW0uIEFuZCBoaXMgbW90aGVyJ3MgbmFtZSB3YXMgWmliaWFoIG9mIEJlZXJzaGViYS4KQW5kIEplaG9hc2ggZGlkIHRoYXQgd2hpY2ggd2FzIHJpZ2h0IGluIHRoZSBzaWdodCBvZiB0aGUgTE9SRCBhbGwgaGlzIGRheXMgd2hlcmVpbiBKZWhvaWFkYSB0aGUgcHJpZXN0IGluc3RydWN0ZWQgaGltLgpCdXQgdGhlIGhpZ2ggcGxhY2VzIHdlcmUgbm90IHRha2VuIGF3YXk6IHRoZSBwZW9wbGUgc3RpbGwgc2FjcmlmaWNlZCBhbmQgYnVybnQgaW5jZW5zZSBpbiB0aGUgaGlnaCBwbGFjZXMuCkFuZCBKZWhvYXNoIHNhaWQgdG8gdGhlIHByaWVzdHMsIEFsbCB0aGUgbW9uZXkgb2YgdGhlIGRlZGljYXRlZCB0aGluZ3MgdGhhdCBpcyBicm91Z2h0IGludG8gdGhlIGhvdXNlIG9mIHRoZSBMT1JELCBldmVuIHRoZSBtb25leSBvZiBldmVyeSBvbmUgdGhhdCBwYXNzZXRoIHRoZSBhY2NvdW50LCB0aGUgbW9uZXkgdGhhdCBldmVyeSBtYW4gaXMgc2V0IGF0LCBhbmQgYWxsIHRoZSBtb25leSB0aGF0IGNvbWV0aCBpbnRvIGFueSBtYW4ncyBoZWFydCB0byBicmluZyBpbnRvIHRoZSBob3VzZSBvZiB0aGUgTE9SRCwKTGV0IHRoZSBwcmllc3RzIHRha2UgaXQgdG8gdGhlbSwgZXZlcnkgbWFuIG9mIGhpcyBhY3F1YWludGFuY2U6IGFuZCBsZXQgdGhlbSByZXBhaXIgdGhlIGJyZWFjaGVzIG9mIHRoZSBob3VzZSwgd2hlcmVzb2V2ZXIgYW55IGJyZWFjaCBzaGFsbCBiZSBmb3VuZC4KQnV0IGl0IHdhcyBzbywgdGhhdCBpbiB0aGUgdGhyZWUgYW5kIHR3ZW50aWV0aCB5ZWFyIG9mIGtpbmcgSmVob2FzaCB0aGUgcHJpZXN0cyBoYWQgbm90IHJlcGFpcmVkIHRoZSBicmVhY2hlcyBvZiB0aGUgaG91c2UuClRoZW4ga2luZyBKZWhvYXNoIGNhbGxlZCBmb3IgSmVob2lhZGEgdGhlIHByaWVzdCwgYW5kIHRoZSBvdGhlciBwcmllc3RzLCBhbmQgc2FpZCB1bnRvIHRoZW0sIFdoeSByZXBhaXIgeWUgbm90IHRoZSBicmVhY2hlcyBvZiB0aGUgaG91c2U/IG5vdyB0aGVyZWZvcmUgcmVjZWl2ZSBubyBtb3JlIG1vbmV5IG9mIHlvdXIgYWNxdWFpbnRhbmNlLCBidXQgZGVsaXZlciBpdCBmb3IgdGhlIGJyZWFjaGVzIG9mIHRoZSBob3VzZS4KQW5kIHRoZSBwcmllc3RzIGNvbnNlbnRlZCB0byByZWNlaXZlIG5vIG1vcmUgbW9uZXkgb2YgdGhlIHBlb3BsZSwgbmVpdGhlciB0byByZXBhaXIgdGhlIGJyZWFjaGVzIG9mIHRoZSBob3VzZS4KQnV0IEplaG9pYWRhIHRoZSBwcmllc3QgdG9vayBhIGNoZXN0LCBhbmQgYm9yZWQgYSBob2xlIGluIHRoZSBsaWQgb2YgaXQsIGFuZCBzZXQgaXQgYmVzaWRlIHRoZSBhbHRhciwgb24gdGhlIHJpZ2h0IHNpZGUgYXMgb25lIGNvbWV0aCBpbnRvIHRoZSBob3VzZSBvZiB0aGUgTE9SRDogYW5kIHRoZSBwcmllc3RzIHRoYXQga2VwdCB0aGUgZG9vciBwdXQgdGhlcmVpbiBhbGwgdGhlIG1vbmV5IHRoYXQgd2FzIGJyb3VnaHQgaW50byB0aGUgaG91c2Ugb2YgdGhlIExPUkQuCkFuZCBpdCB3YXMgc28sIHdoZW4gdGhleSBzYXcgdGhhdCB0aGVyZSB3YXMgbXVjaCBtb25leSBpbiB0aGUgY2hlc3QsIHRoYXQgdGhlIGtpbmcncyBzY3JpYmUgYW5kIHRoZSBoaWdoIHByaWVzdCBjYW1lIHVwLCBhbmQgdGhleSBwdXQgdXAgaW4gYmFncywgYW5kIHRvbGQgdGhlIG1vbmV5IHRoYXQgd2FzIGZvdW5kIGluIHRoZSBob3VzZSBvZiB0aGUgTE9SRC4KQW5kIHRoZXkgZ2F2ZSB0aGUgbW9uZXksIGJlaW5nIHRvbGQsIGludG8gdGhlIGhhbmRzIG9mIHRoZW0gdGhhdCBkaWQgdGhlIHdvcmssIHRoYXQgaGFkIHRoZSBvdmVyc2lnaHQgb2YgdGhlIGhvdXNlIG9mIHRoZSBMT1JEOiBhbmQgdGhleSBsYWlkIGl0IG91dCB0byB0aGUgY2FycGVudGVycyBhbmQgYnVpbGRlcnMsIHRoYXQgd3JvdWdodCB1cG9uIHRoZSBob3VzZSBvZiB0aGUgTE9SRCwKQW5kIHRvIG1hc29ucywgYW5kIGhld2VycyBvZiBzdG9uZSwgYW5kIHRvIGJ1eSB0aW1iZXIgYW5kIGhld2VkIHN0b25lIHRvIHJlcGFpciB0aGUgYnJlYWNoZXMgb2YgdGhlIGhvdXNlIG9mIHRoZSBMT1JELCBhbmQgZm9yIGFsbCB0aGF0IHdhcyBsYWlkIG91dCBmb3IgdGhlIGhvdXNlIHRvIHJlcGFpciBpdC4KSG93YmVpdCB0aGVyZSB3ZXJlIG5vdCBtYWRlIGZvciB0aGUgaG91c2Ugb2YgdGhlIExPUkQgYm93bHMgb2Ygc2lsdmVyLCBzbnVmZmVycywgYmFzb25zLCB0cnVtcGV0cywgYW55IHZlc3NlbHMgb2YgZ29sZCwgb3IgdmVzc2VscyBvZiBzaWx2ZXIsIG9mIHRoZSBtb25leSB0aGF0IHdhcyBicm91Z2h0IGludG8gdGhlIGhvdXNlIG9mIHRoZSBMT1JEOgpCdXQgdGhleSBnYXZlIHRoYXQgdG8gdGhlIHdvcmttZW4sIGFuZCByZXBhaXJlZCB0aGVyZXdpdGggdGhlIGhvdXNlIG9mIHRoZSBMT1JELgpNb3Jlb3ZlciB0aGV5IHJlY2tvbmVkIG5vdCB3aXRoIHRoZSBtZW4sIGludG8gd2hvc2UgaGFuZCB0aGV5IGRlbGl2ZXJlZCB0aGUgbW9uZXkgdG8gYmUgYmVzdG93ZWQgb24gd29ya21lbjogZm9yIHRoZXkgZGVhbHQgZmFpdGhmdWxseS4KVGhlIHRyZXNwYXNzIG1vbmV5IGFuZCBzaW4gbW9uZXkgd2FzIG5vdCBicm91Z2h0IGludG8gdGhlIGhvdXNlIG9mIHRoZSBMT1JEOiBpdCB3YXMgdGhlIHByaWVzdHMnLgpUaGVuIEhhemFlbCBraW5nIG9mIFN5cmlhIHdlbnQgdXAsIGFuZCBmb3VnaHQgYWdhaW5zdCBHYXRoLCBhbmQgdG9vayBpdDogYW5kIEhhemFlbCBzZXQgaGlzIGZhY2UgdG8gZ28gdXAgdG8gSmVydXNhbGVtLgpBbmQgSmVob2FzaCBraW5nIG9mIEp1ZGFoIHRvb2sgYWxsIHRoZSBoYWxsb3dlZCB0aGluZ3MgdGhhdCBKZWhvc2hhcGhhdCwgYW5kIEplaG9yYW0sIGFuZCBBaGF6aWFoLCBoaXMgZmF0aGVycywga2luZ3Mgb2YgSnVkYWgsIGhhZCBkZWRpY2F0ZWQsIGFuZCBoaXMgb3duIGhhbGxvd2VkIHRoaW5ncywgYW5kIGFsbCB0aGUgZ29sZCB0aGF0IHdhcyBmb3VuZCBpbiB0aGUgdHJlYXN1cmVzIG9mIHRoZSBob3VzZSBvZiB0aGUgTE9SRCwgYW5kIGluIHRoZSBraW5nJ3MgaG91c2UsIGFuZCBzZW50IGl0IHRvIEhhemFlbCBraW5nIG9mIFN5cmlhOiBhbmQgaGUgd2VudCBhd2F5IGZyb20gSmVydXNhbGVtLgpBbmQgdGhlIHJlc3Qgb2YgdGhlIGFjdHMgb2YgSm9hc2gsIGFuZCBhbGwgdGhhdCBoZSBkaWQsIGFyZSB0aGV5IG5vdCB3cml0dGVuIGluIHRoZSBib29rIG9mIHRoZSBjaHJvbmljbGVzIG9mIHRoZSBraW5ncyBvZiBKdWRhaD8KQW5kIGhpcyBzZXJ2YW50cyBhcm9zZSwgYW5kIG1hZGUgYSBjb25zcGlyYWN5LCBhbmQgc2xldyBKb2FzaCBpbiB0aGUgaG91c2Ugb2YgTWlsbG8sIHdoaWNoIGdvZXRoIGRvd24gdG8gU2lsbGEuCkZvciBKb3phY2hhciB0aGUgc29uIG9mIFNoaW1lYXRoLCBhbmQgSmVob3phYmFkIHRoZSBzb24gb2YgU2hvbWVyLCBoaXMgc2VydmFudHMsIHNtb3RlIGhpbSwgYW5kIGhlIGRpZWQ7IGFuZCB0aGV5IGJ1cmllZCBoaW0gd2l0aCBoaXMgZmF0aGVycyBpbiB0aGUgY2l0eSBvZiBEYXZpZDogYW5kIEFtYXppYWggaGlzIHNvbiByZWlnbmVkIGluIGhpcyBzdGVhZC4KSW4gdGhlIHRocmVlIGFuZCB0d2VudGlldGggeWVhciBvZiBKb2FzaCB0aGUgc29uIG9mIEFoYXppYWgga2luZyBvZiBKdWRhaCBKZWhvYWhheiB0aGUgc29uIG9mIEplaHUgYmVnYW4gdG8gcmVpZ24gb3ZlciBJc3JhZWwgaW4gU2FtYXJpYSwgYW5kIHJlaWduZWQgc2V2ZW50ZWVuIHllYXJzLgpBbmQgaGUgZGlkIHRoYXQgd2hpY2ggd2FzIGV2aWwgaW4gdGhlIHNpZ2h0IG9mIHRoZSBMT1JELCBhbmQgZm9sbG93ZWQgdGhlIHNpbnMgb2YgSmVyb2JvYW0gdGhlIHNvbiBvZiBOZWJhdCwgd2hpY2ggbWFkZSBJc3JhZWwgdG8gc2luOyBoZSBkZXBhcnRlZCBub3QgdGhlcmVmcm9tLgpBbmQgdGhlIGFuZ2VyIG9mIHRoZSBMT1JEIHdhcyBraW5kbGVkIGFnYWluc3QgSXNyYWVsLCBhbmQgaGUgZGVsaXZlcmVkIHRoZW0gaW50byB0aGUgaGFuZCBvZiBIYXphZWwga2luZyBvZiBTeXJpYSwgYW5kIGludG8gdGhlIGhhbmQgb2YgQmVuaGFkYWQgdGhlIHNvbiBvZiBIYXphZWwsIGFsbCB0aGVpciBkYXlzLgpBbmQgSmVob2FoYXogYmVzb3VnaHQgdGhlIExPUkQsIGFuZCB0aGUgTE9SRCBoZWFya2VuZWQgdW50byBoaW06IGZvciBoZSBzYXcgdGhlIG9wcHJlc3Npb24gb2YgSXNyYWVsLCBiZWNhdXNlIHRoZSBraW5nIG9mIFN5cmlhIG9wcHJlc3NlZCB0aGVtLgooQW5kIHRoZSBMT1JEIGdhdmUgSXNyYWVsIGEgc2F2aW91ciwgc28gdGhhdCB0aGV5IHdlbnQgb3V0IGZyb20gdW5kZXIgdGhlIGhhbmQgb2YgdGhlIFN5cmlhbnM6IGFuZCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGR3ZWx0IGluIHRoZWlyIHRlbnRzLCBhcyBiZWZvcmV0aW1lLgpOZXZlcnRoZWxlc3MgdGhleSBkZXBhcnRlZCBub3QgZnJvbSB0aGUgc2lucyBvZiB0aGUgaG91c2Ugb2YgSmVyb2JvYW0sIHdobyBtYWRlIElzcmFlbCBzaW4sIGJ1dCB3YWxrZWQgdGhlcmVpbjogYW5kIHRoZXJlIHJlbWFpbmVkIHRoZSBncm92ZSBhbHNvIGluIFNhbWFyaWEuKQpOZWl0aGVyIGRpZCBoZSBsZWF2ZSBvZiB0aGUgcGVvcGxlIHRvIEplaG9haGF6IGJ1dCBmaWZ0eSBob3JzZW1lbiwgYW5kIHRlbiBjaGFyaW90cywgYW5kIHRlbiB0aG91c2FuZCBmb290bWVuOyBmb3IgdGhlIGtpbmcgb2YgU3lyaWEgaGFkIGRlc3Ryb3llZCB0aGVtLCBhbmQgaGFkIG1hZGUgdGhlbSBsaWtlIHRoZSBkdXN0IGJ5IHRocmVzaGluZy4KTm93IHRoZSByZXN0IG9mIHRoZSBhY3RzIG9mIEplaG9haGF6LCBhbmQgYWxsIHRoYXQgaGUgZGlkLCBhbmQgaGlzIG1pZ2h0LCBhcmUgdGhleSBub3Qgd3JpdHRlbiBpbiB0aGUgYm9vayBvZiB0aGUgY2hyb25pY2xlcyBvZiB0aGUga2luZ3Mgb2YgSXNyYWVsPwpBbmQgSmVob2FoYXogc2xlcHQgd2l0aCBoaXMgZmF0aGVyczsgYW5kIHRoZXkgYnVyaWVkIGhpbSBpbiBTYW1hcmlhOiBhbmQgSm9hc2ggaGlzIHNvbiByZWlnbmVkIGluIGhpcyBzdGVhZC4KSW4gdGhlIHRoaXJ0eSBhbmQgc2V2ZW50aCB5ZWFyIG9mIEpvYXNoIGtpbmcgb2YgSnVkYWggYmVnYW4gSmVob2FzaCB0aGUgc29uIG9mIEplaG9haGF6IHRvIHJlaWduIG92ZXIgSXNyYWVsIGluIFNhbWFyaWEsIGFuZCByZWlnbmVkIHNpeHRlZW4geWVhcnMuCkFuZCBoZSBkaWQgdGhhdCB3aGljaCB3YXMgZXZpbCBpbiB0aGUgc2lnaHQgb2YgdGhlIExPUkQ7IGhlIGRlcGFydGVkIG5vdCBmcm9tIGFsbCB0aGUgc2lucyBvZiBKZXJvYm9hbSB0aGUgc29uIG9mIE5lYmF0LCB3aG8gbWFkZSBJc3JhZWwgc2luOiBidXQgaGUgd2Fsa2VkIHRoZXJlaW4uCkFuZCB0aGUgcmVzdCBvZiB0aGUgYWN0cyBvZiBKb2FzaCwgYW5kIGFsbCB0aGF0IGhlIGRpZCwgYW5kIGhpcyBtaWdodCB3aGVyZXdpdGggaGUgZm91Z2h0IGFnYWluc3QgQW1hemlhaCBraW5nIG9mIEp1ZGFoLCBhcmUgdGhleSBub3Qgd3JpdHRlbiBpbiB0aGUgYm9vayBvZiB0aGUgY2hyb25pY2xlcyBvZiB0aGUga2luZ3Mgb2YgSXNyYWVsPwpBbmQgSm9hc2ggc2xlcHQgd2l0aCBoaXMgZmF0aGVyczsgYW5kIEplcm9ib2FtIHNhdCB1cG9uIGhpcyB0aHJvbmU6IGFuZCBKb2FzaCB3YXMgYnVyaWVkIGluIFNhbWFyaWEgd2l0aCB0aGUga2luZ3Mgb2YgSXNyYWVsLgpOb3cgRWxpc2hhIHdhcyBmYWxsZW4gc2ljayBvZiBoaXMgc2lja25lc3Mgd2hlcmVvZiBoZSBkaWVkLiBBbmQgSm9hc2ggdGhlIGtpbmcgb2YgSXNyYWVsIGNhbWUgZG93biB1bnRvIGhpbSwgYW5kIHdlcHQgb3ZlciBoaXMgZmFjZSwgYW5kIHNhaWQsIE8gbXkgZmF0aGVyLCBteSBmYXRoZXIsIHRoZSBjaGFyaW90IG9mIElzcmFlbCwgYW5kIHRoZSBob3JzZW1lbiB0aGVyZW9mLgpBbmQgRWxpc2hhIHNhaWQgdW50byBoaW0sIFRha2UgYm93IGFuZCBhcnJvd3MuIEFuZCBoZSB0b29rIHVudG8gaGltIGJvdyBhbmQgYXJyb3dzLgpBbmQgaGUgc2FpZCB0byB0aGUga2luZyBvZiBJc3JhZWwsIFB1dCB0aGluZSBoYW5kIHVwb24gdGhlIGJvdy4gQW5kIGhlIHB1dCBoaXMgaGFuZCB1cG9uIGl0OiBhbmQgRWxpc2hhIHB1dCBoaXMgaGFuZHMgdXBvbiB0aGUga2luZydzIGhhbmRzLgpBbmQgaGUgc2FpZCwgT3BlbiB0aGUgd2luZG93IGVhc3R3YXJkLiBBbmQgaGUgb3BlbmVkIGl0LiBUaGVuIEVsaXNoYSBzYWlkLCBTaG9vdC4gQW5kIGhlIHNob3QuIEFuZCBoZSBzYWlkLCBUaGUgYXJyb3cgb2YgdGhlIExPUkQncyBkZWxpdmVyYW5jZSwgYW5kIHRoZSBhcnJvdyBvZiBkZWxpdmVyYW5jZSBmcm9tIFN5cmlhOiBmb3IgdGhvdSBzaGFsdCBzbWl0ZSB0aGUgU3lyaWFucyBpbiBBcGhlaywgdGlsbCB0aG91IGhhdmUgY29uc3VtZWQgdGhlbS4KQW5kIGhlIHNhaWQsIFRha2UgdGhlIGFycm93cy4gQW5kIGhlIHRvb2sgdGhlbS4gQW5kIGhlIHNhaWQgdW50byB0aGUga2luZyBvZiBJc3JhZWwsIFNtaXRlIHVwb24gdGhlIGdyb3VuZC4gQW5kIGhlIHNtb3RlIHRocmljZSwgYW5kIHN0YXllZC4KQW5kIHRoZSBtYW4gb2YgR29kIHdhcyB3cm90aCB3aXRoIGhpbSwgYW5kIHNhaWQsIFRob3Ugc2hvdWxkZXN0IGhhdmUgc21pdHRlbiBmaXZlIG9yIHNpeCB0aW1lczsgdGhlbiBoYWRzdCB0aG91IHNtaXR0ZW4gU3lyaWEgdGlsbCB0aG91IGhhZHN0IGNvbnN1bWVkIGl0OiB3aGVyZWFzIG5vdyB0aG91IHNoYWx0IHNtaXRlIFN5cmlhIGJ1dCB0aHJpY2UuCkFuZCBFbGlzaGEgZGllZCwgYW5kIHRoZXkgYnVyaWVkIGhpbS4gQW5kIHRoZSBiYW5kcyBvZiB0aGUgTW9hYml0ZXMgaW52YWRlZCB0aGUgbGFuZCBhdCB0aGUgY29taW5nIGluIG9mIHRoZSB5ZWFyLgpBbmQgaXQgY2FtZSB0byBwYXNzLCBhcyB0aGV5IHdlcmUgYnVyeWluZyBhIG1hbiwgdGhhdCwgYmVob2xkLCB0aGV5IHNwaWVkIGEgYmFuZCBvZiBtZW47IGFuZCB0aGV5IGNhc3QgdGhlIG1hbiBpbnRvIHRoZSBzZXB1bGNocmUgb2YgRWxpc2hhOiBhbmQgd2hlbiB0aGUgbWFuIHdhcyBsZXQgZG93biwgYW5kIHRvdWNoZWQgdGhlIGJvbmVzIG9mIEVsaXNoYSwgaGUgcmV2aXZlZCwgYW5kIHN0b29kIHVwIG9uIGhpcyBmZWV0LgpCdXQgSGF6YWVsIGtpbmcgb2YgU3lyaWEgb3BwcmVzc2VkIElzcmFlbCBhbGwgdGhlIGRheXMgb2YgSmVob2FoYXouCkFuZCB0aGUgTE9SRCB3YXMgZ3JhY2lvdXMgdW50byB0aGVtLCBhbmQgaGFkIGNvbXBhc3Npb24gb24gdGhlbSwgYW5kIGhhZCByZXNwZWN0IHVudG8gdGhlbSwgYmVjYXVzZSBvZiBoaXMgY292ZW5hbnQgd2l0aCBBYnJhaGFtLCBJc2FhYywgYW5kIEphY29iLCBhbmQgd291bGQgbm90IGRlc3Ryb3kgdGhlbSwgbmVpdGhlciBjYXN0IGhlIHRoZW0gZnJvbSBoaXMgcHJlc2VuY2UgYXMgeWV0LgpTbyBIYXphZWwga2luZyBvZiBTeXJpYSBkaWVkOyBhbmQgQmVuaGFkYWQgaGlzIHNvbiByZWlnbmVkIGluIGhpcyBzdGVhZC4KQW5kIEplaG9hc2ggdGhlIHNvbiBvZiBKZWhvYWhheiB0b29rIGFnYWluIG91dCBvZiB0aGUgaGFuZCBvZiBCZW5oYWRhZCB0aGUgc29uIG9mIEhhemFlbCB0aGUgY2l0aWVzLCB3aGljaCBoZSBoYWQgdGFrZW4gb3V0IG9mIHRoZSBoYW5kIG9mIEplaG9haGF6IGhpcyBmYXRoZXIgYnkgd2FyLiBUaHJlZSB0aW1lcyBkaWQgSm9hc2ggYmVhdCBoaW0sIGFuZCByZWNvdmVyZWQgdGhlIGNpdGllcyBvZiBJc3JhZWwuCkluIHRoZSBzZWNvbmQgeWVhciBvZiBKb2FzaCBzb24gb2YgSmVob2FoYXoga2luZyBvZiBJc3JhZWwgcmVpZ25lZCBBbWF6aWFoIHRoZSBzb24gb2YgSm9hc2gga2luZyBvZiBKdWRhaC4KSGUgd2FzIHR3ZW50eSBhbmQgZml2ZSB5ZWFycyBvbGQgd2hlbiBoZSBiZWdhbiB0byByZWlnbiwgYW5kIHJlaWduZWQgdHdlbnR5IGFuZCBuaW5lIHllYXJzIGluIEplcnVzYWxlbS4gQW5kIGhpcyBtb3RoZXIncyBuYW1lIHdhcyBKZWhvYWRkYW4gb2YgSmVydXNhbGVtLgpBbmQgaGUgZGlkIHRoYXQgd2hpY2ggd2FzIHJpZ2h0IGluIHRoZSBzaWdodCBvZiB0aGUgTE9SRCwgeWV0IG5vdCBsaWtlIERhdmlkIGhpcyBmYXRoZXI6IGhlIGRpZCBhY2NvcmRpbmcgdG8gYWxsIHRoaW5ncyBhcyBKb2FzaCBoaXMgZmF0aGVyIGRpZC4KSG93YmVpdCB0aGUgaGlnaCBwbGFjZXMgd2VyZSBub3QgdGFrZW4gYXdheTogYXMgeWV0IHRoZSBwZW9wbGUgZGlkIHNhY3JpZmljZSBhbmQgYnVybnQgaW5jZW5zZSBvbiB0aGUgaGlnaCBwbGFjZXMuCkFuZCBpdCBjYW1lIHRvIHBhc3MsIGFzIHNvb24gYXMgdGhlIGtpbmdkb20gd2FzIGNvbmZpcm1lZCBpbiBoaXMgaGFuZCwgdGhhdCBoZSBzbGV3IGhpcyBzZXJ2YW50cyB3aGljaCBoYWQgc2xhaW4gdGhlIGtpbmcgaGlzIGZhdGhlci4KQnV0IHRoZSBjaGlsZHJlbiBvZiB0aGUgbXVyZGVyZXJzIGhlIHNsZXcgbm90OiBhY2NvcmRpbmcgdW50byB0aGF0IHdoaWNoIGlzIHdyaXR0ZW4gaW4gdGhlIGJvb2sgb2YgdGhlIGxhdyBvZiBNb3Nlcywgd2hlcmVpbiB0aGUgTE9SRCBjb21tYW5kZWQsIHNheWluZywgVGhlIGZhdGhlcnMgc2hhbGwgbm90IGJlIHB1dCB0byBkZWF0aCBmb3IgdGhlIGNoaWxkcmVuLCBub3IgdGhlIGNoaWxkcmVuIGJlIHB1dCB0byBkZWF0aCBmb3IgdGhlIGZhdGhlcnM7IGJ1dCBldmVyeSBtYW4gc2hhbGwgYmUgcHV0IHRvIGRlYXRoIGZvciBoaXMgb3duIHNpbi4KSGUgc2xldyBvZiBFZG9tIGluIHRoZSB2YWxsZXkgb2Ygc2FsdCB0ZW4gdGhvdXNhbmQsIGFuZCB0b29rIFNlbGFoIGJ5IHdhciwgYW5kIGNhbGxlZCB0aGUgbmFtZSBvZiBpdCBKb2t0aGVlbCB1bnRvIHRoaXMgZGF5LgpUaGVuIEFtYXppYWggc2VudCBtZXNzZW5nZXJzIHRvIEplaG9hc2gsIHRoZSBzb24gb2YgSmVob2FoYXogc29uIG9mIEplaHUsIGtpbmcgb2YgSXNyYWVsLCBzYXlpbmcsIENvbWUsIGxldCB1cyBsb29rIG9uZSBhbm90aGVyIGluIHRoZSBmYWNlLgpBbmQgSmVob2FzaCB0aGUga2luZyBvZiBJc3JhZWwgc2VudCB0byBBbWF6aWFoIGtpbmcgb2YgSnVkYWgsIHNheWluZywgVGhlIHRoaXN0bGUgdGhhdCB3YXMgaW4gTGViYW5vbiBzZW50IHRvIHRoZSBjZWRhciB0aGF0IHdhcyBpbiBMZWJhbm9uLCBzYXlpbmcsIEdpdmUgdGh5IGRhdWdodGVyIHRvIG15IHNvbiB0byB3aWZlOiBhbmQgdGhlcmUgcGFzc2VkIGJ5IGEgd2lsZCBiZWFzdCB0aGF0IHdhcyBpbiBMZWJhbm9uLCBhbmQgdHJvZGUgZG93biB0aGUgdGhpc3RsZS4KVGhvdSBoYXN0IGluZGVlZCBzbWl0dGVuIEVkb20sIGFuZCB0aGluZSBoZWFydCBoYXRoIGxpZnRlZCB0aGVlIHVwOiBnbG9yeSBvZiB0aGlzLCBhbmQgdGFycnkgYXQgaG9tZTogZm9yIHdoeSBzaG91bGRlc3QgdGhvdSBtZWRkbGUgdG8gdGh5IGh1cnQsIHRoYXQgdGhvdSBzaG91bGRlc3QgZmFsbCwgZXZlbiB0aG91LCBhbmQgSnVkYWggd2l0aCB0aGVlPwpCdXQgQW1hemlhaCB3b3VsZCBub3QgaGVhci4gVGhlcmVmb3JlIEplaG9hc2gga2luZyBvZiBJc3JhZWwgd2VudCB1cDsgYW5kIGhlIGFuZCBBbWF6aWFoIGtpbmcgb2YgSnVkYWggbG9va2VkIG9uZSBhbm90aGVyIGluIHRoZSBmYWNlIGF0IEJldGhzaGVtZXNoLCB3aGljaCBiZWxvbmdldGggdG8gSnVkYWguCkFuZCBKdWRhaCB3YXMgcHV0IHRvIHRoZSB3b3JzZSBiZWZvcmUgSXNyYWVsOyBhbmQgdGhleSBmbGVkIGV2ZXJ5IG1hbiB0byB0aGVpciB0ZW50cy4KQW5kIEplaG9hc2gga2luZyBvZiBJc3JhZWwgdG9vayBBbWF6aWFoIGtpbmcgb2YgSnVkYWgsIHRoZSBzb24gb2YgSmVob2FzaCB0aGUgc29uIG9mIEFoYXppYWgsIGF0IEJldGhzaGVtZXNoLCBhbmQgY2FtZSB0byBKZXJ1c2FsZW0sIGFuZCBicmFrZSBkb3duIHRoZSB3YWxsIG9mIEplcnVzYWxlbSBmcm9tIHRoZSBnYXRlIG9mIEVwaHJhaW0gdW50byB0aGUgY29ybmVyIGdhdGUsIGZvdXIgaHVuZHJlZCBjdWJpdHMuCkFuZCBoZSB0b29rIGFsbCB0aGUgZ29sZCBhbmQgc2lsdmVyLCBhbmQgYWxsIHRoZSB2ZXNzZWxzIHRoYXQgd2VyZSBmb3VuZCBpbiB0aGUgaG91c2Ugb2YgdGhlIExPUkQsIGFuZCBpbiB0aGUgdHJlYXN1cmVzIG9mIHRoZSBraW5nJ3MgaG91c2UsIGFuZCBob3N0YWdlcywgYW5kIHJldHVybmVkIHRvIFNhbWFyaWEuCk5vdyB0aGUgcmVzdCBvZiB0aGUgYWN0cyBvZiBKZWhvYXNoIHdoaWNoIGhlIGRpZCwgYW5kIGhpcyBtaWdodCwgYW5kIGhvdyBoZSBmb3VnaHQgd2l0aCBBbWF6aWFoIGtpbmcgb2YgSnVkYWgsIGFyZSB0aGV5IG5vdCB3cml0dGVuIGluIHRoZSBib29rIG9mIHRoZSBjaHJvbmljbGVzIG9mIHRoZSBraW5ncyBvZiBJc3JhZWw/CkFuZCBKZWhvYXNoIHNsZXB0IHdpdGggaGlzIGZhdGhlcnMsIGFuZCB3YXMgYnVyaWVkIGluIFNhbWFyaWEgd2l0aCB0aGUga2luZ3Mgb2YgSXNyYWVsOyBhbmQgSmVyb2JvYW0gaGlzIHNvbiByZWlnbmVkIGluIGhpcyBzdGVhZC4KQW5kIEFtYXppYWggdGhlIHNvbiBvZiBKb2FzaCBraW5nIG9mIEp1ZGFoIGxpdmVkIGFmdGVyIHRoZSBkZWF0aCBvZiBKZWhvYXNoIHNvbiBvZiBKZWhvYWhheiBraW5nIG9mIElzcmFlbCBmaWZ0ZWVuIHllYXJzLgpBbmQgdGhlIHJlc3Qgb2YgdGhlIGFjdHMgb2YgQW1hemlhaCwgYXJlIHRoZXkgbm90IHdyaXR0ZW4gaW4gdGhlIGJvb2sgb2YgdGhlIGNocm9uaWNsZXMgb2YgdGhlIGtpbmdzIG9mIEp1ZGFoPwpOb3cgdGhleSBtYWRlIGEgY29uc3BpcmFjeSBhZ2FpbnN0IGhpbSBpbiBKZXJ1c2FsZW06IGFuZCBoZSBmbGVkIHRvIExhY2hpc2g7IGJ1dCB0aGV5IHNlbnQgYWZ0ZXIgaGltIHRvIExhY2hpc2gsIGFuZCBzbGV3IGhpbSB0aGVyZS4KQW5kIHRoZXkgYnJvdWdodCBoaW0gb24gaG9yc2VzOiBhbmQgaGUgd2FzIGJ1cmllZCBhdCBKZXJ1c2FsZW0gd2l0aCBoaXMgZmF0aGVycyBpbiB0aGUgY2l0eSBvZiBEYXZpZC4KQW5kIGFsbCB0aGUgcGVvcGxlIG9mIEp1ZGFoIHRvb2sgQXphcmlhaCwgd2hpY2ggd2FzIHNpeHRlZW4geWVhcnMgb2xkLCBhbmQgbWFkZSBoaW0ga2luZyBpbnN0ZWFkIG9mIGhpcyBmYXRoZXIgQW1hemlhaC4KSGUgYnVpbHQgRWxhdGgsIGFuZCByZXN0b3JlZCBpdCB0byBKdWRhaCwgYWZ0ZXIgdGhhdCB0aGUga2luZyBzbGVwdCB3aXRoIGhpcyBmYXRoZXJzLgpJbiB0aGUgZmlmdGVlbnRoIHllYXIgb2YgQW1hemlhaCB0aGUgc29uIG9mIEpvYXNoIGtpbmcgb2YgSnVkYWggSmVyb2JvYW0gdGhlIHNvbiBvZiBKb2FzaCBraW5nIG9mIElzcmFlbCBiZWdhbiB0byByZWlnbiBpbiBTYW1hcmlhLCBhbmQgcmVpZ25lZCBmb3J0eSBhbmQgb25lIHllYXJzLgpBbmQgaGUgZGlkIHRoYXQgd2hpY2ggd2FzIGV2aWwgaW4gdGhlIHNpZ2h0IG9mIHRoZSBMT1JEOiBoZSBkZXBhcnRlZCBub3QgZnJvbSBhbGwgdGhlIHNpbnMgb2YgSmVyb2JvYW0gdGhlIHNvbiBvZiBOZWJhdCwgd2hvIG1hZGUgSXNyYWVsIHRvIHNpbi4KSGUgcmVzdG9yZWQgdGhlIGNvYXN0IG9mIElzcmFlbCBmcm9tIHRoZSBlbnRlcmluZyBvZiBIYW1hdGggdW50byB0aGUgc2VhIG9mIHRoZSBwbGFpbiwgYWNjb3JkaW5nIHRvIHRoZSB3b3JkIG9mIHRoZSBMT1JEIEdvZCBvZiBJc3JhZWwsIHdoaWNoIGhlIHNwYWtlIGJ5IHRoZSBoYW5kIG9mIGhpcyBzZXJ2YW50IEpvbmFoLCB0aGUgc29uIG9mIEFtaXR0YWksIHRoZSBwcm9waGV0LCB3aGljaCB3YXMgb2YgR2F0aGhlcGhlci4KRm9yIHRoZSBMT1JEIHNhdyB0aGUgYWZmbGljdGlvbiBvZiBJc3JhZWwsIHRoYXQgaXQgd2FzIHZlcnkgYml0dGVyOiBmb3IgdGhlcmUgd2FzIG5vdCBhbnkgc2h1dCB1cCwgbm9yIGFueSBsZWZ0LCBub3IgYW55IGhlbHBlciBmb3IgSXNyYWVsLgpBbmQgdGhlIExPUkQgc2FpZCBub3QgdGhhdCBoZSB3b3VsZCBibG90IG91dCB0aGUgbmFtZSBvZiBJc3JhZWwgZnJvbSB1bmRlciBoZWF2ZW46IGJ1dCBoZSBzYXZlZCB0aGVtIGJ5IHRoZSBoYW5kIG9mIEplcm9ib2FtIHRoZSBzb24gb2YgSm9hc2guCk5vdyB0aGUgcmVzdCBvZiB0aGUgYWN0cyBvZiBKZXJvYm9hbSwgYW5kIGFsbCB0aGF0IGhlIGRpZCwgYW5kIGhpcyBtaWdodCwgaG93IGhlIHdhcnJlZCwgYW5kIGhvdyBoZSByZWNvdmVyZWQgRGFtYXNjdXMsIGFuZCBIYW1hdGgsIHdoaWNoIGJlbG9uZ2VkIHRvIEp1ZGFoLCBmb3IgSXNyYWVsLCBhcmUgdGhleSBub3Qgd3JpdHRlbiBpbiB0aGUgYm9vayBvZiB0aGUgY2hyb25pY2xlcyBvZiB0aGUga2luZ3Mgb2YgSXNyYWVsPwpBbmQgSmVyb2JvYW0gc2xlcHQgd2l0aCBoaXMgZmF0aGVycywgZXZlbiB3aXRoIHRoZSBraW5ncyBvZiBJc3JhZWw7IGFuZCBaYWNoYXJpYWggaGlzIHNvbiByZWlnbmVkIGluIGhpcyBzdGVhZC4KSW4gdGhlIHR3ZW50eSBhbmQgc2V2ZW50aCB5ZWFyIG9mIEplcm9ib2FtIGtpbmcgb2YgSXNyYWVsIGJlZ2FuIEF6YXJpYWggc29uIG9mIEFtYXppYWgga2luZyBvZiBKdWRhaCB0byByZWlnbi4KU2l4dGVlbiB5ZWFycyBvbGQgd2FzIGhlIHdoZW4gaGUgYmVnYW4gdG8gcmVpZ24sIGFuZCBoZSByZWlnbmVkIHR3byBhbmQgZmlmdHkgeWVhcnMgaW4gSmVydXNhbGVtLiBBbmQgaGlzIG1vdGhlcidzIG5hbWUgd2FzIEplY2hvbGlhaCBvZiBKZXJ1c2FsZW0uCkFuZCBoZSBkaWQgdGhhdCB3aGljaCB3YXMgcmlnaHQgaW4gdGhlIHNpZ2h0IG9mIHRoZSBMT1JELCBhY2NvcmRpbmcgdG8gYWxsIHRoYXQgaGlzIGZhdGhlciBBbWF6aWFoIGhhZCBkb25lOwpTYXZlIHRoYXQgdGhlIGhpZ2ggcGxhY2VzIHdlcmUgbm90IHJlbW92ZWQ6IHRoZSBwZW9wbGUgc2FjcmlmaWNlZCBhbmQgYnVybnQgaW5jZW5zZSBzdGlsbCBvbiB0aGUgaGlnaCBwbGFjZXMuCkFuZCB0aGUgTE9SRCBzbW90ZSB0aGUga2luZywgc28gdGhhdCBoZSB3YXMgYSBsZXBlciB1bnRvIHRoZSBkYXkgb2YgaGlzIGRlYXRoLCBhbmQgZHdlbHQgaW4gYSBzZXZlcmFsIGhvdXNlLiBBbmQgSm90aGFtIHRoZSBraW5nJ3Mgc29uIHdhcyBvdmVyIHRoZSBob3VzZSwganVkZ2luZyB0aGUgcGVvcGxlIG9mIHRoZSBsYW5kLgpBbmQgdGhlIHJlc3Qgb2YgdGhlIGFjdHMgb2YgQXphcmlhaCwgYW5kIGFsbCB0aGF0IGhlIGRpZCwgYXJlIHRoZXkgbm90IHdyaXR0ZW4gaW4gdGhlIGJvb2sgb2YgdGhlIGNocm9uaWNsZXMgb2YgdGhlIGtpbmdzIG9mIEp1ZGFoPwpTbyBBemFyaWFoIHNsZXB0IHdpdGggaGlzIGZhdGhlcnM7IGFuZCB0aGV5IGJ1cmllZCBoaW0gd2l0aCBoaXMgZmF0aGVycyBpbiB0aGUgY2l0eSBvZiBEYXZpZDogYW5kIEpvdGhhbSBoaXMgc29uIHJlaWduZWQgaW4gaGlzIHN0ZWFkLgpJbiB0aGUgdGhpcnR5IGFuZCBlaWdodGggeWVhciBvZiBBemFyaWFoIGtpbmcgb2YgSnVkYWggZGlkIFphY2hhcmlhaCB0aGUgc29uIG9mIEplcm9ib2FtIHJlaWduIG92ZXIgSXNyYWVsIGluIFNhbWFyaWEgc2l4IG1vbnRocy4KQW5kIGhlIGRpZCB0aGF0IHdoaWNoIHdhcyBldmlsIGluIHRoZSBzaWdodCBvZiB0aGUgTE9SRCwgYXMgaGlzIGZhdGhlcnMgaGFkIGRvbmU6IGhlIGRlcGFydGVkIG5vdCBmcm9tIHRoZSBzaW5zIG9mIEplcm9ib2FtIHRoZSBzb24gb2YgTmViYXQsIHdobyBtYWRlIElzcmFlbCB0byBzaW4uCkFuZCBTaGFsbHVtIHRoZSBzb24gb2YgSmFiZXNoIGNvbnNwaXJlZCBhZ2FpbnN0IGhpbSwgYW5kIHNtb3RlIGhpbSBiZWZvcmUgdGhlIHBlb3BsZSwgYW5kIHNsZXcgaGltLCBhbmQgcmVpZ25lZCBpbiBoaXMgc3RlYWQuCkFuZCB0aGUgcmVzdCBvZiB0aGUgYWN0cyBvZiBaYWNoYXJpYWgsIGJlaG9sZCwgdGhleSBhcmUgd3JpdHRlbiBpbiB0aGUgYm9vayBvZiB0aGUgY2hyb25pY2xlcyBvZiB0aGUga2luZ3Mgb2YgSXNyYWVsLgpUaGlzIHdhcyB0aGUgd29yZCBvZiB0aGUgTE9SRCB3aGljaCBoZSBzcGFrZSB1bnRvIEplaHUsIHNheWluZywgVGh5IHNvbnMgc2hhbGwgc2l0IG9uIHRoZSB0aHJvbmUgb2YgSXNyYWVsIHVudG8gdGhlIGZvdXJ0aCBnZW5lcmF0aW9uLiBBbmQgc28gaXQgY2FtZSB0byBwYXNzLgpTaGFsbHVtIHRoZSBzb24gb2YgSmFiZXNoIGJlZ2FuIHRvIHJlaWduIGluIHRoZSBuaW5lIGFuZCB0aGlydGlldGggeWVhciBvZiBVenppYWgga2luZyBvZiBKdWRhaDsgYW5kIGhlIHJlaWduZWQgYSBmdWxsIG1vbnRoIGluIFNhbWFyaWEuCkZvciBNZW5haGVtIHRoZSBzb24gb2YgR2FkaSB3ZW50IHVwIGZyb20gVGlyemFoLCBhbmQgY2FtZSB0byBTYW1hcmlhLCBhbmQgc21vdGUgU2hhbGx1bSB0aGUgc29uIG9mIEphYmVzaCBpbiBTYW1hcmlhLCBhbmQgc2xldyBoaW0sIGFuZCByZWlnbmVkIGluIGhpcyBzdGVhZC4KQW5kIHRoZSByZXN0IG9mIHRoZSBhY3RzIG9mIFNoYWxsdW0sIGFuZCBoaXMgY29uc3BpcmFjeSB3aGljaCBoZSBtYWRlLCBiZWhvbGQsIHRoZXkgYXJlIHdyaXR0ZW4gaW4gdGhlIGJvb2sgb2YgdGhlIGNocm9uaWNsZXMgb2YgdGhlIGtpbmdzIG9mIElzcmFlbC4KVGhlbiBNZW5haGVtIHNtb3RlIFRpcGhzYWgsIGFuZCBhbGwgdGhhdCB3ZXJlIHRoZXJlaW4sIGFuZCB0aGUgY29hc3RzIHRoZXJlb2YgZnJvbSBUaXJ6YWg6IGJlY2F1c2UgdGhleSBvcGVuZWQgbm90IHRvIGhpbSwgdGhlcmVmb3JlIGhlIHNtb3RlIGl0OyBhbmQgYWxsIHRoZSB3b21lbiB0aGVyZWluIHRoYXQgd2VyZSB3aXRoIGNoaWxkIGhlIHJpcHBlZCB1cC4KSW4gdGhlIG5pbmUgYW5kIHRoaXJ0aWV0aCB5ZWFyIG9mIEF6YXJpYWgga2luZyBvZiBKdWRhaCBiZWdhbiBNZW5haGVtIHRoZSBzb24gb2YgR2FkaSB0byByZWlnbiBvdmVyIElzcmFlbCwgYW5kIHJlaWduZWQgdGVuIHllYXJzIGluIFNhbWFyaWEuCkFuZCBoZSBkaWQgdGhhdCB3aGljaCB3YXMgZXZpbCBpbiB0aGUgc2lnaHQgb2YgdGhlIExPUkQ6IGhlIGRlcGFydGVkIG5vdCBhbGwgaGlzIGRheXMgZnJvbSB0aGUgc2lucyBvZiBKZXJvYm9hbSB0aGUgc29uIG9mIE5lYmF0LCB3aG8gbWFkZSBJc3JhZWwgdG8gc2luLgpBbmQgUHVsIHRoZSBraW5nIG9mIEFzc3lyaWEgY2FtZSBhZ2FpbnN0IHRoZSBsYW5kOiBhbmQgTWVuYWhlbSBnYXZlIFB1bCBhIHRob3VzYW5kIHRhbGVudHMgb2Ygc2lsdmVyLCB0aGF0IGhpcyBoYW5kIG1pZ2h0IGJlIHdpdGggaGltIHRvIGNvbmZpcm0gdGhlIGtpbmdkb20gaW4gaGlzIGhhbmQuCkFuZCBNZW5haGVtIGV4YWN0ZWQgdGhlIG1vbmV5IG9mIElzcmFlbCwgZXZlbiBvZiBhbGwgdGhlIG1pZ2h0eSBtZW4gb2Ygd2VhbHRoLCBvZiBlYWNoIG1hbiBmaWZ0eSBzaGVrZWxzIG9mIHNpbHZlciwgdG8gZ2l2ZSB0byB0aGUga2luZyBvZiBBc3N5cmlhLiBTbyB0aGUga2luZyBvZiBBc3N5cmlhIHR1cm5lZCBiYWNrLCBhbmQgc3RheWVkIG5vdCB0aGVyZSBpbiB0aGUgbGFuZC4KQW5kIHRoZSByZXN0IG9mIHRoZSBhY3RzIG9mIE1lbmFoZW0sIGFuZCBhbGwgdGhhdCBoZSBkaWQsIGFyZSB0aGV5IG5vdCB3cml0dGVuIGluIHRoZSBib29rIG9mIHRoZSBjaHJvbmljbGVzIG9mIHRoZSBraW5ncyBvZiBJc3JhZWw/CkFuZCBNZW5haGVtIHNsZXB0IHdpdGggaGlzIGZhdGhlcnM7IGFuZCBQZWthaGlhaCBoaXMgc29uIHJlaWduZWQgaW4gaGlzIHN0ZWFkLgpJbiB0aGUgZmlmdGlldGggeWVhciBvZiBBemFyaWFoIGtpbmcgb2YgSnVkYWggUGVrYWhpYWggdGhlIHNvbiBvZiBNZW5haGVtIGJlZ2FuIHRvIHJlaWduIG92ZXIgSXNyYWVsIGluIFNhbWFyaWEsIGFuZCByZWlnbmVkIHR3byB5ZWFycy4KQW5kIGhlIGRpZCB0aGF0IHdoaWNoIHdhcyBldmlsIGluIHRoZSBzaWdodCBvZiB0aGUgTE9SRDogaGUgZGVwYXJ0ZWQgbm90IGZyb20gdGhlIHNpbnMgb2YgSmVyb2JvYW0gdGhlIHNvbiBvZiBOZWJhdCwgd2hvIG1hZGUgSXNyYWVsIHRvIHNpbi4KQnV0IFBla2FoIHRoZSBzb24gb2YgUmVtYWxpYWgsIGEgY2FwdGFpbiBvZiBoaXMsIGNvbnNwaXJlZCBhZ2FpbnN0IGhpbSwgYW5kIHNtb3RlIGhpbSBpbiBTYW1hcmlhLCBpbiB0aGUgcGFsYWNlIG9mIHRoZSBraW5nJ3MgaG91c2UsIHdpdGggQXJnb2IgYW5kIEFyaWVoLCBhbmQgd2l0aCBoaW0gZmlmdHkgbWVuIG9mIHRoZSBHaWxlYWRpdGVzOiBhbmQgaGUga2lsbGVkIGhpbSwgYW5kIHJlaWduZWQgaW4gaGlzIHJvb20uCkFuZCB0aGUgcmVzdCBvZiB0aGUgYWN0cyBvZiBQZWthaGlhaCwgYW5kIGFsbCB0aGF0IGhlIGRpZCwgYmVob2xkLCB0aGV5IGFyZSB3cml0dGVuIGluIHRoZSBib29rIG9mIHRoZSBjaHJvbmljbGVzIG9mIHRoZSBraW5ncyBvZiBJc3JhZWwuCkluIHRoZSB0d28gYW5kIGZpZnRpZXRoIHllYXIgb2YgQXphcmlhaCBraW5nIG9mIEp1ZGFoIFBla2FoIHRoZSBzb24gb2YgUmVtYWxpYWggYmVnYW4gdG8gcmVpZ24gb3ZlciBJc3JhZWwgaW4gU2FtYXJpYSwgYW5kIHJlaWduZWQgdHdlbnR5IHllYXJzLgpBbmQgaGUgZGlkIHRoYXQgd2hpY2ggd2FzIGV2aWwgaW4gdGhlIHNpZ2h0IG9mIHRoZSBMT1JEOiBoZSBkZXBhcnRlZCBub3QgZnJvbSB0aGUgc2lucyBvZiBKZXJvYm9hbSB0aGUgc29uIG9mIE5lYmF0LCB3aG8gbWFkZSBJc3JhZWwgdG8gc2luLgpJbiB0aGUgZGF5cyBvZiBQZWthaCBraW5nIG9mIElzcmFlbCBjYW1lIFRpZ2xhdGhwaWxlc2VyIGtpbmcgb2YgQXNzeXJpYSwgYW5kIHRvb2sgSWpvbiwgYW5kIEFiZWxiZXRobWFhY2hhaCwgYW5kIEphbm9haCwgYW5kIEtlZGVzaCwgYW5kIEhhem9yLCBhbmQgR2lsZWFkLCBhbmQgR2FsaWxlZSwgYWxsIHRoZSBsYW5kIG9mIE5hcGh0YWxpLCBhbmQgY2FycmllZCB0aGVtIGNhcHRpdmUgdG8gQXNzeXJpYS4KQW5kIEhvc2hlYSB0aGUgc29uIG9mIEVsYWggbWFkZSBhIGNvbnNwaXJhY3kgYWdhaW5zdCBQZWthaCB0aGUgc29uIG9mIFJlbWFsaWFoLCBhbmQgc21vdGUgaGltLCBhbmQgc2xldyBoaW0sIGFuZCByZWlnbmVkIGluIGhpcyBzdGVhZCwgaW4gdGhlIHR3ZW50aWV0aCB5ZWFyIG9mIEpvdGhhbSB0aGUgc29uIG9mIFV6emlhaC4KQW5kIHRoZSByZXN0IG9mIHRoZSBhY3RzIG9mIFBla2FoLCBhbmQgYWxsIHRoYXQgaGUgZGlkLCBiZWhvbGQsIHRoZXkgYXJlIHdyaXR0ZW4gaW4gdGhlIGJvb2sgb2YgdGhlIGNocm9uaWNsZXMgb2YgdGhlIGtpbmdzIG9mIElzcmFlbC4KSW4gdGhlIHNlY29uZCB5ZWFyIG9mIFBla2FoIHRoZSBzb24gb2YgUmVtYWxpYWgga2luZyBvZiBJc3JhZWwgYmVnYW4gSm90aGFtIHRoZSBzb24gb2YgVXp6aWFoIGtpbmcgb2YgSnVkYWggdG8gcmVpZ24uCkZpdmUgYW5kIHR3ZW50eSB5ZWFycyBvbGQgd2FzIGhlIHdoZW4gaGUgYmVnYW4gdG8gcmVpZ24sIGFuZCBoZSByZWlnbmVkIHNpeHRlZW4geWVhcnMgaW4gSmVydXNhbGVtLiBBbmQgaGlzIG1vdGhlcidzIG5hbWUgd2FzIEplcnVzaGEsIHRoZSBkYXVnaHRlciBvZiBaYWRvay4KQW5kIGhlIGRpZCB0aGF0IHdoaWNoIHdhcyByaWdodCBpbiB0aGUgc2lnaHQgb2YgdGhlIExPUkQ6IGhlIGRpZCBhY2NvcmRpbmcgdG8gYWxsIHRoYXQgaGlzIGZhdGhlciBVenppYWggaGFkIGRvbmUuCkhvd2JlaXQgdGhlIGhpZ2ggcGxhY2VzIHdlcmUgbm90IHJlbW92ZWQ6IHRoZSBwZW9wbGUgc2FjcmlmaWNlZCBhbmQgYnVybmVkIGluY2Vuc2Ugc3RpbGwgaW4gdGhlIGhpZ2ggcGxhY2VzLiBIZSBidWlsdCB0aGUgaGlnaGVyIGdhdGUgb2YgdGhlIGhvdXNlIG9mIHRoZSBMT1JELgpOb3cgdGhlIHJlc3Qgb2YgdGhlIGFjdHMgb2YgSm90aGFtLCBhbmQgYWxsIHRoYXQgaGUgZGlkLCBhcmUgdGhleSBub3Qgd3JpdHRlbiBpbiB0aGUgYm9vayBvZiB0aGUgY2hyb25pY2xlcyBvZiB0aGUga2luZ3Mgb2YgSnVkYWg/CkluIHRob3NlIGRheXMgdGhlIExPUkQgYmVnYW4gdG8gc2VuZCBhZ2FpbnN0IEp1ZGFoIFJlemluIHRoZSBraW5nIG9mIFN5cmlhLCBhbmQgUGVrYWggdGhlIHNvbiBvZiBSZW1hbGlhaC4KQW5kIEpvdGhhbSBzbGVwdCB3aXRoIGhpcyBmYXRoZXJzLCBhbmQgd2FzIGJ1cmllZCB3aXRoIGhpcyBmYXRoZXJzIGluIHRoZSBjaXR5IG9mIERhdmlkIGhpcyBmYXRoZXI6IGFuZCBBaGF6IGhpcyBzb24gcmVpZ25lZCBpbiBoaXMgc3RlYWQuCkluIHRoZSBzZXZlbnRlZW50aCB5ZWFyIG9mIFBla2FoIHRoZSBzb24gb2YgUmVtYWxpYWggQWhheiB0aGUgc29uIG9mIEpvdGhhbSBraW5nIG9mIEp1ZGFoIGJlZ2FuIHRvIHJlaWduLgpUd2VudHkgeWVhcnMgb2xkIHdhcyBBaGF6IHdoZW4gaGUgYmVnYW4gdG8gcmVpZ24sIGFuZCByZWlnbmVkIHNpeHRlZW4geWVhcnMgaW4gSmVydXNhbGVtLCBhbmQgZGlkIG5vdCB0aGF0IHdoaWNoIHdhcyByaWdodCBpbiB0aGUgc2lnaHQgb2YgdGhlIExPUkQgaGlzIEdvZCwgbGlrZSBEYXZpZCBoaXMgZmF0aGVyLgpCdXQgaGUgd2Fsa2VkIGluIHRoZSB3YXkgb2YgdGhlIGtpbmdzIG9mIElzcmFlbCwgeWVhLCBhbmQgbWFkZSBoaXMgc29uIHRvIHBhc3MgdGhyb3VnaCB0aGUgZmlyZSwgYWNjb3JkaW5nIHRvIHRoZSBhYm9taW5hdGlvbnMgb2YgdGhlIGhlYXRoZW4sIHdob20gdGhlIExPUkQgY2FzdCBvdXQgZnJvbSBiZWZvcmUgdGhlIGNoaWxkcmVuIG9mIElzcmFlbC4KQW5kIGhlIHNhY3JpZmljZWQgYW5kIGJ1cm50IGluY2Vuc2UgaW4gdGhlIGhpZ2ggcGxhY2VzLCBhbmQgb24gdGhlIGhpbGxzLCBhbmQgdW5kZXIgZXZlcnkgZ3JlZW4gdHJlZS4KVGhlbiBSZXppbiBraW5nIG9mIFN5cmlhIGFuZCBQZWthaCBzb24gb2YgUmVtYWxpYWgga2luZyBvZiBJc3JhZWwgY2FtZSB1cCB0byBKZXJ1c2FsZW0gdG8gd2FyOiBhbmQgdGhleSBiZXNpZWdlZCBBaGF6LCBidXQgY291bGQgbm90IG92ZXJjb21lIGhpbS4KQXQgdGhhdCB0aW1lIFJlemluIGtpbmcgb2YgU3lyaWEgcmVjb3ZlcmVkIEVsYXRoIHRvIFN5cmlhLCBhbmQgZHJhdmUgdGhlIEpld3MgZnJvbSBFbGF0aDogYW5kIHRoZSBTeXJpYW5zIGNhbWUgdG8gRWxhdGgsIGFuZCBkd2VsdCB0aGVyZSB1bnRvIHRoaXMgZGF5LgpTbyBBaGF6IHNlbnQgbWVzc2VuZ2VycyB0byBUaWdsYXRocGlsZXNlciBraW5nIG9mIEFzc3lyaWEsIHNheWluZywgSSBhbSB0aHkgc2VydmFudCBhbmQgdGh5IHNvbjogY29tZSB1cCwgYW5kIHNhdmUgbWUgb3V0IG9mIHRoZSBoYW5kIG9mIHRoZSBraW5nIG9mIFN5cmlhLCBhbmQgb3V0IG9mIHRoZSBoYW5kIG9mIHRoZSBraW5nIG9mIElzcmFlbCwgd2hpY2ggcmlzZSB1cCBhZ2FpbnN0IG1lLgpBbmQgQWhheiB0b29rIHRoZSBzaWx2ZXIgYW5kIGdvbGQgdGhhdCB3YXMgZm91bmQgaW4gdGhlIGhvdXNlIG9mIHRoZSBMT1JELCBhbmQgaW4gdGhlIHRyZWFzdXJlcyBvZiB0aGUga2luZydzIGhvdXNlLCBhbmQgc2VudCBpdCBmb3IgYSBwcmVzZW50IHRvIHRoZSBraW5nIG9mIEFzc3lyaWEuCkFuZCB0aGUga2luZyBvZiBBc3N5cmlhIGhlYXJrZW5lZCB1bnRvIGhpbTogZm9yIHRoZSBraW5nIG9mIEFzc3lyaWEgd2VudCB1cCBhZ2FpbnN0IERhbWFzY3VzLCBhbmQgdG9vayBpdCwgYW5kIGNhcnJpZWQgdGhlIHBlb3BsZSBvZiBpdCBjYXB0aXZlIHRvIEtpciwgYW5kIHNsZXcgUmV6aW4uCkFuZCBraW5nIEFoYXogd2VudCB0byBEYW1hc2N1cyB0byBtZWV0IFRpZ2xhdGhwaWxlc2VyIGtpbmcgb2YgQXNzeXJpYSwgYW5kIHNhdyBhbiBhbHRhciB0aGF0IHdhcyBhdCBEYW1hc2N1czogYW5kIGtpbmcgQWhheiBzZW50IHRvIFVyaWphaCB0aGUgcHJpZXN0IHRoZSBmYXNoaW9uIG9mIHRoZSBhbHRhciwgYW5kIHRoZSBwYXR0ZXJuIG9mIGl0LCBhY2NvcmRpbmcgdG8gYWxsIHRoZSB3b3JrbWFuc2hpcCB0aGVyZW9mLgpBbmQgVXJpamFoIHRoZSBwcmllc3QgYnVpbHQgYW4gYWx0YXIgYWNjb3JkaW5nIHRvIGFsbCB0aGF0IGtpbmcgQWhheiBoYWQgc2VudCBmcm9tIERhbWFzY3VzOiBzbyBVcmlqYWggdGhlIHByaWVzdCBtYWRlIGl0IGFnYWluc3Qga2luZyBBaGF6IGNhbWUgZnJvbSBEYW1hc2N1cy4KQW5kIHdoZW4gdGhlIGtpbmcgd2FzIGNvbWUgZnJvbSBEYW1hc2N1cywgdGhlIGtpbmcgc2F3IHRoZSBhbHRhcjogYW5kIHRoZSBraW5nIGFwcHJvYWNoZWQgdG8gdGhlIGFsdGFyLCBhbmQgb2ZmZXJlZCB0aGVyZW9uLgpBbmQgaGUgYnVybnQgaGlzIGJ1cm50IG9mZmVyaW5nIGFuZCBoaXMgbWVhdCBvZmZlcmluZywgYW5kIHBvdXJlZCBoaXMgZHJpbmsgb2ZmZXJpbmcsIGFuZCBzcHJpbmtsZWQgdGhlIGJsb29kIG9mIGhpcyBwZWFjZSBvZmZlcmluZ3MsIHVwb24gdGhlIGFsdGFyLgpBbmQgaGUgYnJvdWdodCBhbHNvIHRoZSBicmFzZW4gYWx0YXIsIHdoaWNoIHdhcyBiZWZvcmUgdGhlIExPUkQsIGZyb20gdGhlIGZvcmVmcm9udCBvZiB0aGUgaG91c2UsIGZyb20gYmV0d2VlbiB0aGUgYWx0YXIgYW5kIHRoZSBob3VzZSBvZiB0aGUgTE9SRCwgYW5kIHB1dCBpdCBvbiB0aGUgbm9ydGggc2lkZSBvZiB0aGUgYWx0YXIuCkFuZCBraW5nIEFoYXogY29tbWFuZGVkIFVyaWphaCB0aGUgcHJpZXN0LCBzYXlpbmcsIFVwb24gdGhlIGdyZWF0IGFsdGFyIGJ1cm4gdGhlIG1vcm5pbmcgYnVybnQgb2ZmZXJpbmcsIGFuZCB0aGUgZXZlbmluZyBtZWF0IG9mZmVyaW5nLCBhbmQgdGhlIGtpbmcncyBidXJudCBzYWNyaWZpY2UsIGFuZCBoaXMgbWVhdCBvZmZlcmluZywgd2l0aCB0aGUgYnVybnQgb2ZmZXJpbmcgb2YgYWxsIHRoZSBwZW9wbGUgb2YgdGhlIGxhbmQsIGFuZCB0aGVpciBtZWF0IG9mZmVyaW5nLCBhbmQgdGhlaXIgZHJpbmsgb2ZmZXJpbmdzOyBhbmQgc3ByaW5rbGUgdXBvbiBpdCBhbGwgdGhlIGJsb29kIG9mIHRoZSBidXJudCBvZmZlcmluZywgYW5kIGFsbCB0aGUgYmxvb2Qgb2YgdGhlIHNhY3JpZmljZTogYW5kIHRoZSBicmFzZW4gYWx0YXIgc2hhbGwgYmUgZm9yIG1lIHRvIGVucXVpcmUgYnkuClRodXMgZGlkIFVyaWphaCB0aGUgcHJpZXN0LCBhY2NvcmRpbmcgdG8gYWxsIHRoYXQga2luZyBBaGF6IGNvbW1hbmRlZC4KQW5kIGtpbmcgQWhheiBjdXQgb2ZmIHRoZSBib3JkZXJzIG9mIHRoZSBiYXNlcywgYW5kIHJlbW92ZWQgdGhlIGxhdmVyIGZyb20gb2ZmIHRoZW07IGFuZCB0b29rIGRvd24gdGhlIHNlYSBmcm9tIG9mZiB0aGUgYnJhc2VuIG94ZW4gdGhhdCB3ZXJlIHVuZGVyIGl0LCBhbmQgcHV0IGl0IHVwb24gdGhlIHBhdmVtZW50IG9mIHN0b25lcy4KQW5kIHRoZSBjb3ZlcnQgZm9yIHRoZSBzYWJiYXRoIHRoYXQgdGhleSBoYWQgYnVpbHQgaW4gdGhlIGhvdXNlLCBhbmQgdGhlIGtpbmcncyBlbnRyeSB3aXRob3V0LCB0dXJuZWQgaGUgZnJvbSB0aGUgaG91c2Ugb2YgdGhlIExPUkQgZm9yIHRoZSBraW5nIG9mIEFzc3lyaWEuCk5vdyB0aGUgcmVzdCBvZiB0aGUgYWN0cyBvZiBBaGF6IHdoaWNoIGhlIGRpZCwgYXJlIHRoZXkgbm90IHdyaXR0ZW4gaW4gdGhlIGJvb2sgb2YgdGhlIGNocm9uaWNsZXMgb2YgdGhlIGtpbmdzIG9mIEp1ZGFoPwpBbmQgQWhheiBzbGVwdCB3aXRoIGhpcyBmYXRoZXJzLCBhbmQgd2FzIGJ1cmllZCB3aXRoIGhpcyBmYXRoZXJzIGluIHRoZSBjaXR5IG9mIERhdmlkOiBhbmQgSGV6ZWtpYWggaGlzIHNvbiByZWlnbmVkIGluIGhpcyBzdGVhZC4KSW4gdGhlIHR3ZWxmdGggeWVhciBvZiBBaGF6IGtpbmcgb2YgSnVkYWggYmVnYW4gSG9zaGVhIHRoZSBzb24gb2YgRWxhaCB0byByZWlnbiBpbiBTYW1hcmlhIG92ZXIgSXNyYWVsIG5pbmUgeWVhcnMuCkFuZCBoZSBkaWQgdGhhdCB3aGljaCB3YXMgZXZpbCBpbiB0aGUgc2lnaHQgb2YgdGhlIExPUkQsIGJ1dCBub3QgYXMgdGhlIGtpbmdzIG9mIElzcmFlbCB0aGF0IHdlcmUgYmVmb3JlIGhpbS4KQWdhaW5zdCBoaW0gY2FtZSB1cCBTaGFsbWFuZXNlciBraW5nIG9mIEFzc3lyaWE7IGFuZCBIb3NoZWEgYmVjYW1lIGhpcyBzZXJ2YW50LCBhbmQgZ2F2ZSBoaW0gcHJlc2VudHMuCkFuZCB0aGUga2luZyBvZiBBc3N5cmlhIGZvdW5kIGNvbnNwaXJhY3kgaW4gSG9zaGVhOiBmb3IgaGUgaGFkIHNlbnQgbWVzc2VuZ2VycyB0byBTbyBraW5nIG9mIEVneXB0LCBhbmQgYnJvdWdodCBubyBwcmVzZW50IHRvIHRoZSBraW5nIG9mIEFzc3lyaWEsIGFzIGhlIGhhZCBkb25lIHllYXIgYnkgeWVhcjogdGhlcmVmb3JlIHRoZSBraW5nIG9mIEFzc3lyaWEgc2h1dCBoaW0gdXAsIGFuZCBib3VuZCBoaW0gaW4gcHJpc29uLgpUaGVuIHRoZSBraW5nIG9mIEFzc3lyaWEgY2FtZSB1cCB0aHJvdWdob3V0IGFsbCB0aGUgbGFuZCwgYW5kIHdlbnQgdXAgdG8gU2FtYXJpYSwgYW5kIGJlc2llZ2VkIGl0IHRocmVlIHllYXJzLgpJbiB0aGUgbmludGggeWVhciBvZiBIb3NoZWEgdGhlIGtpbmcgb2YgQXNzeXJpYSB0b29rIFNhbWFyaWEsIGFuZCBjYXJyaWVkIElzcmFlbCBhd2F5IGludG8gQXNzeXJpYSwgYW5kIHBsYWNlZCB0aGVtIGluIEhhbGFoIGFuZCBpbiBIYWJvciBieSB0aGUgcml2ZXIgb2YgR296YW4sIGFuZCBpbiB0aGUgY2l0aWVzIG9mIHRoZSBNZWRlcy4KRm9yIHNvIGl0IHdhcywgdGhhdCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGhhZCBzaW5uZWQgYWdhaW5zdCB0aGUgTE9SRCB0aGVpciBHb2QsIHdoaWNoIGhhZCBicm91Z2h0IHRoZW0gdXAgb3V0IG9mIHRoZSBsYW5kIG9mIEVneXB0LCBmcm9tIHVuZGVyIHRoZSBoYW5kIG9mIFBoYXJhb2gga2luZyBvZiBFZ3lwdCwgYW5kIGhhZCBmZWFyZWQgb3RoZXIgZ29kcywKQW5kIHdhbGtlZCBpbiB0aGUgc3RhdHV0ZXMgb2YgdGhlIGhlYXRoZW4sIHdob20gdGhlIExPUkQgY2FzdCBvdXQgZnJvbSBiZWZvcmUgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgYW5kIG9mIHRoZSBraW5ncyBvZiBJc3JhZWwsIHdoaWNoIHRoZXkgaGFkIG1hZGUuCkFuZCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGRpZCBzZWNyZXRseSB0aG9zZSB0aGluZ3MgdGhhdCB3ZXJlIG5vdCByaWdodCBhZ2FpbnN0IHRoZSBMT1JEIHRoZWlyIEdvZCwgYW5kIHRoZXkgYnVpbHQgdGhlbSBoaWdoIHBsYWNlcyBpbiBhbGwgdGhlaXIgY2l0aWVzLCBmcm9tIHRoZSB0b3dlciBvZiB0aGUgd2F0Y2htZW4gdG8gdGhlIGZlbmNlZCBjaXR5LgpBbmQgdGhleSBzZXQgdGhlbSB1cCBpbWFnZXMgYW5kIGdyb3ZlcyBpbiBldmVyeSBoaWdoIGhpbGwsIGFuZCB1bmRlciBldmVyeSBncmVlbiB0cmVlOgpBbmQgdGhlcmUgdGhleSBidXJudCBpbmNlbnNlIGluIGFsbCB0aGUgaGlnaCBwbGFjZXMsIGFzIGRpZCB0aGUgaGVhdGhlbiB3aG9tIHRoZSBMT1JEIGNhcnJpZWQgYXdheSBiZWZvcmUgdGhlbTsgYW5kIHdyb3VnaHQgd2lja2VkIHRoaW5ncyB0byBwcm92b2tlIHRoZSBMT1JEIHRvIGFuZ2VyOgpGb3IgdGhleSBzZXJ2ZWQgaWRvbHMsIHdoZXJlb2YgdGhlIExPUkQgaGFkIHNhaWQgdW50byB0aGVtLCBZZSBzaGFsbCBub3QgZG8gdGhpcyB0aGluZy4KWWV0IHRoZSBMT1JEIHRlc3RpZmllZCBhZ2FpbnN0IElzcmFlbCwgYW5kIGFnYWluc3QgSnVkYWgsIGJ5IGFsbCB0aGUgcHJvcGhldHMsIGFuZCBieSBhbGwgdGhlIHNlZXJzLCBzYXlpbmcsIFR1cm4geWUgZnJvbSB5b3VyIGV2aWwgd2F5cywgYW5kIGtlZXAgbXkgY29tbWFuZG1lbnRzIGFuZCBteSBzdGF0dXRlcywgYWNjb3JkaW5nIHRvIGFsbCB0aGUgbGF3IHdoaWNoIEkgY29tbWFuZGVkIHlvdXIgZmF0aGVycywgYW5kIHdoaWNoIEkgc2VudCB0byB5b3UgYnkgbXkgc2VydmFudHMgdGhlIHByb3BoZXRzLgpOb3R3aXRoc3RhbmRpbmcgdGhleSB3b3VsZCBub3QgaGVhciwgYnV0IGhhcmRlbmVkIHRoZWlyIG5lY2tzLCBsaWtlIHRvIHRoZSBuZWNrIG9mIHRoZWlyIGZhdGhlcnMsIHRoYXQgZGlkIG5vdCBiZWxpZXZlIGluIHRoZSBMT1JEIHRoZWlyIEdvZC4KQW5kIHRoZXkgcmVqZWN0ZWQgaGlzIHN0YXR1dGVzLCBhbmQgaGlzIGNvdmVuYW50IHRoYXQgaGUgbWFkZSB3aXRoIHRoZWlyIGZhdGhlcnMsIGFuZCBoaXMgdGVzdGltb25pZXMgd2hpY2ggaGUgdGVzdGlmaWVkIGFnYWluc3QgdGhlbTsgYW5kIHRoZXkgZm9sbG93ZWQgdmFuaXR5LCBhbmQgYmVjYW1lIHZhaW4sIGFuZCB3ZW50IGFmdGVyIHRoZSBoZWF0aGVuIHRoYXQgd2VyZSByb3VuZCBhYm91dCB0aGVtLCBjb25jZXJuaW5nIHdob20gdGhlIExPUkQgaGFkIGNoYXJnZWQgdGhlbSwgdGhhdCB0aGV5IHNob3VsZCBub3QgZG8gbGlrZSB0aGVtLgpBbmQgdGhleSBsZWZ0IGFsbCB0aGUgY29tbWFuZG1lbnRzIG9mIHRoZSBMT1JEIHRoZWlyIEdvZCwgYW5kIG1hZGUgdGhlbSBtb2x0ZW4gaW1hZ2VzLCBldmVuIHR3byBjYWx2ZXMsIGFuZCBtYWRlIGEgZ3JvdmUsIGFuZCB3b3JzaGlwcGVkIGFsbCB0aGUgaG9zdCBvZiBoZWF2ZW4sIGFuZCBzZXJ2ZWQgQmFhbC4KQW5kIHRoZXkgY2F1c2VkIHRoZWlyIHNvbnMgYW5kIHRoZWlyIGRhdWdodGVycyB0byBwYXNzIHRocm91Z2ggdGhlIGZpcmUsIGFuZCB1c2VkIGRpdmluYXRpb24gYW5kIGVuY2hhbnRtZW50cywgYW5kIHNvbGQgdGhlbXNlbHZlcyB0byBkbyBldmlsIGluIHRoZSBzaWdodCBvZiB0aGUgTE9SRCwgdG8gcHJvdm9rZSBoaW0gdG8gYW5nZXIuClRoZXJlZm9yZSB0aGUgTE9SRCB3YXMgdmVyeSBhbmdyeSB3aXRoIElzcmFlbCwgYW5kIHJlbW92ZWQgdGhlbSBvdXQgb2YgaGlzIHNpZ2h0OiB0aGVyZSB3YXMgbm9uZSBsZWZ0IGJ1dCB0aGUgdHJpYmUgb2YgSnVkYWggb25seS4KQWxzbyBKdWRhaCBrZXB0IG5vdCB0aGUgY29tbWFuZG1lbnRzIG9mIHRoZSBMT1JEIHRoZWlyIEdvZCwgYnV0IHdhbGtlZCBpbiB0aGUgc3RhdHV0ZXMgb2YgSXNyYWVsIHdoaWNoIHRoZXkgbWFkZS4KQW5kIHRoZSBMT1JEIHJlamVjdGVkIGFsbCB0aGUgc2VlZCBvZiBJc3JhZWwsIGFuZCBhZmZsaWN0ZWQgdGhlbSwgYW5kIGRlbGl2ZXJlZCB0aGVtIGludG8gdGhlIGhhbmQgb2Ygc3BvaWxlcnMsIHVudGlsIGhlIGhhZCBjYXN0IHRoZW0gb3V0IG9mIGhpcyBzaWdodC4KRm9yIGhlIHJlbnQgSXNyYWVsIGZyb20gdGhlIGhvdXNlIG9mIERhdmlkOyBhbmQgdGhleSBtYWRlIEplcm9ib2FtIHRoZSBzb24gb2YgTmViYXQga2luZzogYW5kIEplcm9ib2FtIGRyYXZlIElzcmFlbCBmcm9tIGZvbGxvd2luZyB0aGUgTE9SRCwgYW5kIG1hZGUgdGhlbSBzaW4gYSBncmVhdCBzaW4uCkZvciB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIHdhbGtlZCBpbiBhbGwgdGhlIHNpbnMgb2YgSmVyb2JvYW0gd2hpY2ggaGUgZGlkOyB0aGV5IGRlcGFydGVkIG5vdCBmcm9tIHRoZW07ClVudGlsIHRoZSBMT1JEIHJlbW92ZWQgSXNyYWVsIG91dCBvZiBoaXMgc2lnaHQsIGFzIGhlIGhhZCBzYWlkIGJ5IGFsbCBoaXMgc2VydmFudHMgdGhlIHByb3BoZXRzLiBTbyB3YXMgSXNyYWVsIGNhcnJpZWQgYXdheSBvdXQgb2YgdGhlaXIgb3duIGxhbmQgdG8gQXNzeXJpYSB1bnRvIHRoaXMgZGF5LgpBbmQgdGhlIGtpbmcgb2YgQXNzeXJpYSBicm91Z2h0IG1lbiBmcm9tIEJhYnlsb24sIGFuZCBmcm9tIEN1dGhhaCwgYW5kIGZyb20gQXZhLCBhbmQgZnJvbSBIYW1hdGgsIGFuZCBmcm9tIFNlcGhhcnZhaW0sIGFuZCBwbGFjZWQgdGhlbSBpbiB0aGUgY2l0aWVzIG9mIFNhbWFyaWEgaW5zdGVhZCBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsOiBhbmQgdGhleSBwb3NzZXNzZWQgU2FtYXJpYSwgYW5kIGR3ZWx0IGluIHRoZSBjaXRpZXMgdGhlcmVvZi4KQW5kIHNvIGl0IHdhcyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZWlyIGR3ZWxsaW5nIHRoZXJlLCB0aGF0IHRoZXkgZmVhcmVkIG5vdCB0aGUgTE9SRDogdGhlcmVmb3JlIHRoZSBMT1JEIHNlbnQgbGlvbnMgYW1vbmcgdGhlbSwgd2hpY2ggc2xldyBzb21lIG9mIHRoZW0uCldoZXJlZm9yZSB0aGV5IHNwYWtlIHRvIHRoZSBraW5nIG9mIEFzc3lyaWEsIHNheWluZywgVGhlIG5hdGlvbnMgd2hpY2ggdGhvdSBoYXN0IHJlbW92ZWQsIGFuZCBwbGFjZWQgaW4gdGhlIGNpdGllcyBvZiBTYW1hcmlhLCBrbm93IG5vdCB0aGUgbWFubmVyIG9mIHRoZSBHb2Qgb2YgdGhlIGxhbmQ6IHRoZXJlZm9yZSBoZSBoYXRoIHNlbnQgbGlvbnMgYW1vbmcgdGhlbSwgYW5kLCBiZWhvbGQsIHRoZXkgc2xheSB0aGVtLCBiZWNhdXNlIHRoZXkga25vdyBub3QgdGhlIG1hbm5lciBvZiB0aGUgR29kIG9mIHRoZSBsYW5kLgpUaGVuIHRoZSBraW5nIG9mIEFzc3lyaWEgY29tbWFuZGVkLCBzYXlpbmcsIENhcnJ5IHRoaXRoZXIgb25lIG9mIHRoZSBwcmllc3RzIHdob20geWUgYnJvdWdodCBmcm9tIHRoZW5jZTsgYW5kIGxldCB0aGVtIGdvIGFuZCBkd2VsbCB0aGVyZSwgYW5kIGxldCBoaW0gdGVhY2ggdGhlbSB0aGUgbWFubmVyIG9mIHRoZSBHb2Qgb2YgdGhlIGxhbmQuClRoZW4gb25lIG9mIHRoZSBwcmllc3RzIHdob20gdGhleSBoYWQgY2FycmllZCBhd2F5IGZyb20gU2FtYXJpYSBjYW1lIGFuZCBkd2VsdCBpbiBCZXRoZWwsIGFuZCB0YXVnaHQgdGhlbSBob3cgdGhleSBzaG91bGQgZmVhciB0aGUgTE9SRC4KSG93YmVpdCBldmVyeSBuYXRpb24gbWFkZSBnb2RzIG9mIHRoZWlyIG93biwgYW5kIHB1dCB0aGVtIGluIHRoZSBob3VzZXMgb2YgdGhlIGhpZ2ggcGxhY2VzIHdoaWNoIHRoZSBTYW1hcml0YW5zIGhhZCBtYWRlLCBldmVyeSBuYXRpb24gaW4gdGhlaXIgY2l0aWVzIHdoZXJlaW4gdGhleSBkd2VsdC4KQW5kIHRoZSBtZW4gb2YgQmFieWxvbiBtYWRlIFN1Y2NvdGhiZW5vdGgsIGFuZCB0aGUgbWVuIG9mIEN1dGggbWFkZSBOZXJnYWwsIGFuZCB0aGUgbWVuIG9mIEhhbWF0aCBtYWRlIEFzaGltYSwKQW5kIHRoZSBBdml0ZXMgbWFkZSBOaWJoYXogYW5kIFRhcnRhaywgYW5kIHRoZSBTZXBoYXJ2aXRlcyBidXJudCB0aGVpciBjaGlsZHJlbiBpbiBmaXJlIHRvIEFkcmFtbWVsZWNoIGFuZCBBbmFtbWVsZWNoLCB0aGUgZ29kcyBvZiBTZXBoYXJ2YWltLgpTbyB0aGV5IGZlYXJlZCB0aGUgTE9SRCwgYW5kIG1hZGUgdW50byB0aGVtc2VsdmVzIG9mIHRoZSBsb3dlc3Qgb2YgdGhlbSBwcmllc3RzIG9mIHRoZSBoaWdoIHBsYWNlcywgd2hpY2ggc2FjcmlmaWNlZCBmb3IgdGhlbSBpbiB0aGUgaG91c2VzIG9mIHRoZSBoaWdoIHBsYWNlcy4KVGhleSBmZWFyZWQgdGhlIExPUkQsIGFuZCBzZXJ2ZWQgdGhlaXIgb3duIGdvZHMsIGFmdGVyIHRoZSBtYW5uZXIgb2YgdGhlIG5hdGlvbnMgd2hvbSB0aGV5IGNhcnJpZWQgYXdheSBmcm9tIHRoZW5jZS4KVW50byB0aGlzIGRheSB0aGV5IGRvIGFmdGVyIHRoZSBmb3JtZXIgbWFubmVyczogdGhleSBmZWFyIG5vdCB0aGUgTE9SRCwgbmVpdGhlciBkbyB0aGV5IGFmdGVyIHRoZWlyIHN0YXR1dGVzLCBvciBhZnRlciB0aGVpciBvcmRpbmFuY2VzLCBvciBhZnRlciB0aGUgbGF3IGFuZCBjb21tYW5kbWVudCB3aGljaCB0aGUgTE9SRCBjb21tYW5kZWQgdGhlIGNoaWxkcmVuIG9mIEphY29iLCB3aG9tIGhlIG5hbWVkIElzcmFlbDsKV2l0aCB3aG9tIHRoZSBMT1JEIGhhZCBtYWRlIGEgY292ZW5hbnQsIGFuZCBjaGFyZ2VkIHRoZW0sIHNheWluZywgWWUgc2hhbGwgbm90IGZlYXIgb3RoZXIgZ29kcywgbm9yIGJvdyB5b3Vyc2VsdmVzIHRvIHRoZW0sIG5vciBzZXJ2ZSB0aGVtLCBub3Igc2FjcmlmaWNlIHRvIHRoZW06CkJ1dCB0aGUgTE9SRCwgd2hvIGJyb3VnaHQgeW91IHVwIG91dCBvZiB0aGUgbGFuZCBvZiBFZ3lwdCB3aXRoIGdyZWF0IHBvd2VyIGFuZCBhIHN0cmV0Y2hlZCBvdXQgYXJtLCBoaW0gc2hhbGwgeWUgZmVhciwgYW5kIGhpbSBzaGFsbCB5ZSB3b3JzaGlwLCBhbmQgdG8gaGltIHNoYWxsIHllIGRvIHNhY3JpZmljZS4KQW5kIHRoZSBzdGF0dXRlcywgYW5kIHRoZSBvcmRpbmFuY2VzLCBhbmQgdGhlIGxhdywgYW5kIHRoZSBjb21tYW5kbWVudCwgd2hpY2ggaGUgd3JvdGUgZm9yIHlvdSwgeWUgc2hhbGwgb2JzZXJ2ZSB0byBkbyBmb3IgZXZlcm1vcmU7IGFuZCB5ZSBzaGFsbCBub3QgZmVhciBvdGhlciBnb2RzLgpBbmQgdGhlIGNvdmVuYW50IHRoYXQgSSBoYXZlIG1hZGUgd2l0aCB5b3UgeWUgc2hhbGwgbm90IGZvcmdldDsgbmVpdGhlciBzaGFsbCB5ZSBmZWFyIG90aGVyIGdvZHMuCkJ1dCB0aGUgTE9SRCB5b3VyIEdvZCB5ZSBzaGFsbCBmZWFyOyBhbmQgaGUgc2hhbGwgZGVsaXZlciB5b3Ugb3V0IG9mIHRoZSBoYW5kIG9mIGFsbCB5b3VyIGVuZW1pZXMuCkhvd2JlaXQgdGhleSBkaWQgbm90IGhlYXJrZW4sIGJ1dCB0aGV5IGRpZCBhZnRlciB0aGVpciBmb3JtZXIgbWFubmVyLgpTbyB0aGVzZSBuYXRpb25zIGZlYXJlZCB0aGUgTE9SRCwgYW5kIHNlcnZlZCB0aGVpciBncmF2ZW4gaW1hZ2VzLCBib3RoIHRoZWlyIGNoaWxkcmVuLCBhbmQgdGhlaXIgY2hpbGRyZW4ncyBjaGlsZHJlbjogYXMgZGlkIHRoZWlyIGZhdGhlcnMsIHNvIGRvIHRoZXkgdW50byB0aGlzIGRheS4KTm93IGl0IGNhbWUgdG8gcGFzcyBpbiB0aGUgdGhpcmQgeWVhciBvZiBIb3NoZWEgc29uIG9mIEVsYWgga2luZyBvZiBJc3JhZWwsIHRoYXQgSGV6ZWtpYWggdGhlIHNvbiBvZiBBaGF6IGtpbmcgb2YgSnVkYWggYmVnYW4gdG8gcmVpZ24uClR3ZW50eSBhbmQgZml2ZSB5ZWFycyBvbGQgd2FzIGhlIHdoZW4gaGUgYmVnYW4gdG8gcmVpZ247IGFuZCBoZSByZWlnbmVkIHR3ZW50eSBhbmQgbmluZSB5ZWFycyBpbiBKZXJ1c2FsZW0uIEhpcyBtb3RoZXIncyBuYW1lIGFsc28gd2FzIEFiaSwgdGhlIGRhdWdodGVyIG9mIFphY2hhcmlhaC4KQW5kIGhlIGRpZCB0aGF0IHdoaWNoIHdhcyByaWdodCBpbiB0aGUgc2lnaHQgb2YgdGhlIExPUkQsIGFjY29yZGluZyB0byBhbGwgdGhhdCBEYXZpZCBoaXMgZmF0aGVyIGRpZC4KSGUgcmVtb3ZlZCB0aGUgaGlnaCBwbGFjZXMsIGFuZCBicmFrZSB0aGUgaW1hZ2VzLCBhbmQgY3V0IGRvd24gdGhlIGdyb3ZlcywgYW5kIGJyYWtlIGluIHBpZWNlcyB0aGUgYnJhc2VuIHNlcnBlbnQgdGhhdCBNb3NlcyBoYWQgbWFkZTogZm9yIHVudG8gdGhvc2UgZGF5cyB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGRpZCBidXJuIGluY2Vuc2UgdG8gaXQ6IGFuZCBoZSBjYWxsZWQgaXQgTmVodXNodGFuLgpIZSB0cnVzdGVkIGluIHRoZSBMT1JEIEdvZCBvZiBJc3JhZWw7IHNvIHRoYXQgYWZ0ZXIgaGltIHdhcyBub25lIGxpa2UgaGltIGFtb25nIGFsbCB0aGUga2luZ3Mgb2YgSnVkYWgsIG5vciBhbnkgdGhhdCB3ZXJlIGJlZm9yZSBoaW0uCkZvciBoZSBjbGF2ZSB0byB0aGUgTE9SRCwgYW5kIGRlcGFydGVkIG5vdCBmcm9tIGZvbGxvd2luZyBoaW0sIGJ1dCBrZXB0IGhpcyBjb21tYW5kbWVudHMsIHdoaWNoIHRoZSBMT1JEIGNvbW1hbmRlZCBNb3Nlcy4KQW5kIHRoZSBMT1JEIHdhcyB3aXRoIGhpbTsgYW5kIGhlIHByb3NwZXJlZCB3aGl0aGVyc29ldmVyIGhlIHdlbnQgZm9ydGg6IGFuZCBoZSByZWJlbGxlZCBhZ2FpbnN0IHRoZSBraW5nIG9mIEFzc3lyaWEsIGFuZCBzZXJ2ZWQgaGltIG5vdC4KSGUgc21vdGUgdGhlIFBoaWxpc3RpbmVzLCBldmVuIHVudG8gR2F6YSwgYW5kIHRoZSBib3JkZXJzIHRoZXJlb2YsIGZyb20gdGhlIHRvd2VyIG9mIHRoZSB3YXRjaG1lbiB0byB0aGUgZmVuY2VkIGNpdHkuCkFuZCBpdCBjYW1lIHRvIHBhc3MgaW4gdGhlIGZvdXJ0aCB5ZWFyIG9mIGtpbmcgSGV6ZWtpYWgsIHdoaWNoIHdhcyB0aGUgc2V2ZW50aCB5ZWFyIG9mIEhvc2hlYSBzb24gb2YgRWxhaCBraW5nIG9mIElzcmFlbCwgdGhhdCBTaGFsbWFuZXNlciBraW5nIG9mIEFzc3lyaWEgY2FtZSB1cCBhZ2FpbnN0IFNhbWFyaWEsIGFuZCBiZXNpZWdlZCBpdC4KQW5kIGF0IHRoZSBlbmQgb2YgdGhyZWUgeWVhcnMgdGhleSB0b29rIGl0OiBldmVuIGluIHRoZSBzaXh0aCB5ZWFyIG9mIEhlemVraWFoLCB0aGF0IGlzIGluIHRoZSBuaW50aCB5ZWFyIG9mIEhvc2hlYSBraW5nIG9mIElzcmFlbCwgU2FtYXJpYSB3YXMgdGFrZW4uCkFuZCB0aGUga2luZyBvZiBBc3N5cmlhIGRpZCBjYXJyeSBhd2F5IElzcmFlbCB1bnRvIEFzc3lyaWEsIGFuZCBwdXQgdGhlbSBpbiBIYWxhaCBhbmQgaW4gSGFib3IgYnkgdGhlIHJpdmVyIG9mIEdvemFuLCBhbmQgaW4gdGhlIGNpdGllcyBvZiB0aGUgTWVkZXM6CkJlY2F1c2UgdGhleSBvYmV5ZWQgbm90IHRoZSB2b2ljZSBvZiB0aGUgTE9SRCB0aGVpciBHb2QsIGJ1dCB0cmFuc2dyZXNzZWQgaGlzIGNvdmVuYW50LCBhbmQgYWxsIHRoYXQgTW9zZXMgdGhlIHNlcnZhbnQgb2YgdGhlIExPUkQgY29tbWFuZGVkLCBhbmQgd291bGQgbm90IGhlYXIgdGhlbSwgbm9yIGRvIHRoZW0uCk5vdyBpbiB0aGUgZm91cnRlZW50aCB5ZWFyIG9mIGtpbmcgSGV6ZWtpYWggZGlkIFNlbm5hY2hlcmliIGtpbmcgb2YgQXNzeXJpYSBjb21lIHVwIGFnYWluc3QgYWxsIHRoZSBmZW5jZWQgY2l0aWVzIG9mIEp1ZGFoLCBhbmQgdG9vayB0aGVtLgpBbmQgSGV6ZWtpYWgga2luZyBvZiBKdWRhaCBzZW50IHRvIHRoZSBraW5nIG9mIEFzc3lyaWEgdG8gTGFjaGlzaCwgc2F5aW5nLCBJIGhhdmUgb2ZmZW5kZWQ7IHJldHVybiBmcm9tIG1lOiB0aGF0IHdoaWNoIHRob3UgcHV0dGVzdCBvbiBtZSB3aWxsIEkgYmVhci4gQW5kIHRoZSBraW5nIG9mIEFzc3lyaWEgYXBwb2ludGVkIHVudG8gSGV6ZWtpYWgga2luZyBvZiBKdWRhaCB0aHJlZSBodW5kcmVkIHRhbGVudHMgb2Ygc2lsdmVyIGFuZCB0aGlydHkgdGFsZW50cyBvZiBnb2xkLgpBbmQgSGV6ZWtpYWggZ2F2ZSBoaW0gYWxsIHRoZSBzaWx2ZXIgdGhhdCB3YXMgZm91bmQgaW4gdGhlIGhvdXNlIG9mIHRoZSBMT1JELCBhbmQgaW4gdGhlIHRyZWFzdXJlcyBvZiB0aGUga2luZydzIGhvdXNlLgpBdCB0aGF0IHRpbWUgZGlkIEhlemVraWFoIGN1dCBvZmYgdGhlIGdvbGQgZnJvbSB0aGUgZG9vcnMgb2YgdGhlIHRlbXBsZSBvZiB0aGUgTE9SRCwgYW5kIGZyb20gdGhlIHBpbGxhcnMgd2hpY2ggSGV6ZWtpYWgga2luZyBvZiBKdWRhaCBoYWQgb3ZlcmxhaWQsIGFuZCBnYXZlIGl0IHRvIHRoZSBraW5nIG9mIEFzc3lyaWEuCkFuZCB0aGUga2luZyBvZiBBc3N5cmlhIHNlbnQgVGFydGFuIGFuZCBSYWJzYXJpcyBhbmQgUmFic2hha2VoIGZyb20gTGFjaGlzaCB0byBraW5nIEhlemVraWFoIHdpdGggYSBncmVhdCBob3N0IGFnYWluc3QgSmVydXNhbGVtLiBBbmQgdGhleSB3ZW50IHVwIGFuZCBjYW1lIHRvIEplcnVzYWxlbS4gQW5kIHdoZW4gdGhleSB3ZXJlIGNvbWUgdXAsIHRoZXkgY2FtZSBhbmQgc3Rvb2QgYnkgdGhlIGNvbmR1aXQgb2YgdGhlIHVwcGVyIHBvb2wsIHdoaWNoIGlzIGluIHRoZSBoaWdod2F5IG9mIHRoZSBmdWxsZXIncyBmaWVsZC4KQW5kIHdoZW4gdGhleSBoYWQgY2FsbGVkIHRvIHRoZSBraW5nLCB0aGVyZSBjYW1lIG91dCB0byB0aGVtIEVsaWFraW0gdGhlIHNvbiBvZiBIaWxraWFoLCB3aGljaCB3YXMgb3ZlciB0aGUgaG91c2Vob2xkLCBhbmQgU2hlYm5hIHRoZSBzY3JpYmUsIGFuZCBKb2FoIHRoZSBzb24gb2YgQXNhcGggdGhlIHJlY29yZGVyLgpBbmQgUmFic2hha2VoIHNhaWQgdW50byB0aGVtLCBTcGVhayB5ZSBub3cgdG8gSGV6ZWtpYWgsIFRodXMgc2FpdGggdGhlIGdyZWF0IGtpbmcsIHRoZSBraW5nIG9mIEFzc3lyaWEsIFdoYXQgY29uZmlkZW5jZSBpcyB0aGlzIHdoZXJlaW4gdGhvdSB0cnVzdGVzdD8KVGhvdSBzYXllc3QsIChidXQgdGhleSBhcmUgYnV0IHZhaW4gd29yZHMsKSBJIGhhdmUgY291bnNlbCBhbmQgc3RyZW5ndGggZm9yIHRoZSB3YXIuIE5vdyBvbiB3aG9tIGRvc3QgdGhvdSB0cnVzdCwgdGhhdCB0aG91IHJlYmVsbGVzdCBhZ2FpbnN0IG1lPwpOb3csIGJlaG9sZCwgdGhvdSB0cnVzdGVzdCB1cG9uIHRoZSBzdGFmZiBvZiB0aGlzIGJydWlzZWQgcmVlZCwgZXZlbiB1cG9uIEVneXB0LCBvbiB3aGljaCBpZiBhIG1hbiBsZWFuLCBpdCB3aWxsIGdvIGludG8gaGlzIGhhbmQsIGFuZCBwaWVyY2UgaXQ6IHNvIGlzIFBoYXJhb2gga2luZyBvZiBFZ3lwdCB1bnRvIGFsbCB0aGF0IHRydXN0IG9uIGhpbS4KQnV0IGlmIHllIHNheSB1bnRvIG1lLCBXZSB0cnVzdCBpbiB0aGUgTE9SRCBvdXIgR29kOiBpcyBub3QgdGhhdCBoZSwgd2hvc2UgaGlnaCBwbGFjZXMgYW5kIHdob3NlIGFsdGFycyBIZXpla2lhaCBoYXRoIHRha2VuIGF3YXksIGFuZCBoYXRoIHNhaWQgdG8gSnVkYWggYW5kIEplcnVzYWxlbSwgWWUgc2hhbGwgd29yc2hpcCBiZWZvcmUgdGhpcyBhbHRhciBpbiBKZXJ1c2FsZW0/Ck5vdyB0aGVyZWZvcmUsIEkgcHJheSB0aGVlLCBnaXZlIHBsZWRnZXMgdG8gbXkgbG9yZCB0aGUga2luZyBvZiBBc3N5cmlhLCBhbmQgSSB3aWxsIGRlbGl2ZXIgdGhlZSB0d28gdGhvdXNhbmQgaG9yc2VzLCBpZiB0aG91IGJlIGFibGUgb24gdGh5IHBhcnQgdG8gc2V0IHJpZGVycyB1cG9uIHRoZW0uCkhvdyB0aGVuIHdpbHQgdGhvdSB0dXJuIGF3YXkgdGhlIGZhY2Ugb2Ygb25lIGNhcHRhaW4gb2YgdGhlIGxlYXN0IG9mIG15IG1hc3RlcidzIHNlcnZhbnRzLCBhbmQgcHV0IHRoeSB0cnVzdCBvbiBFZ3lwdCBmb3IgY2hhcmlvdHMgYW5kIGZvciBob3JzZW1lbj8KQW0gSSBub3cgY29tZSB1cCB3aXRob3V0IHRoZSBMT1JEIGFnYWluc3QgdGhpcyBwbGFjZSB0byBkZXN0cm95IGl0PyBUaGUgTE9SRCBzYWlkIHRvIG1lLCBHbyB1cCBhZ2FpbnN0IHRoaXMgbGFuZCwgYW5kIGRlc3Ryb3kgaXQuClRoZW4gc2FpZCBFbGlha2ltIHRoZSBzb24gb2YgSGlsa2lhaCwgYW5kIFNoZWJuYSwgYW5kIEpvYWgsIHVudG8gUmFic2hha2VoLCBTcGVhaywgSSBwcmF5IHRoZWUsIHRvIHRoeSBzZXJ2YW50cyBpbiB0aGUgU3lyaWFuIGxhbmd1YWdlOyBmb3Igd2UgdW5kZXJzdGFuZCBpdDogYW5kIHRhbGsgbm90IHdpdGggdXMgaW4gdGhlIEpld3MnIGxhbmd1YWdlIGluIHRoZSBlYXJzIG9mIHRoZSBwZW9wbGUgdGhhdCBhcmUgb24gdGhlIHdhbGwuCkJ1dCBSYWJzaGFrZWggc2FpZCB1bnRvIHRoZW0sIEhhdGggbXkgbWFzdGVyIHNlbnQgbWUgdG8gdGh5IG1hc3RlciwgYW5kIHRvIHRoZWUsIHRvIHNwZWFrIHRoZXNlIHdvcmRzPyBoYXRoIGhlIG5vdCBzZW50IG1lIHRvIHRoZSBtZW4gd2hpY2ggc2l0IG9uIHRoZSB3YWxsLCB0aGF0IHRoZXkgbWF5IGVhdCB0aGVpciBvd24gZHVuZywgYW5kIGRyaW5rIHRoZWlyIG93biBwaXNzIHdpdGggeW91PwpUaGVuIFJhYnNoYWtlaCBzdG9vZCBhbmQgY3JpZWQgd2l0aCBhIGxvdWQgdm9pY2UgaW4gdGhlIEpld3MnIGxhbmd1YWdlLCBhbmQgc3Bha2UsIHNheWluZywgSGVhciB0aGUgd29yZCBvZiB0aGUgZ3JlYXQga2luZywgdGhlIGtpbmcgb2YgQXNzeXJpYToKVGh1cyBzYWl0aCB0aGUga2luZywgTGV0IG5vdCBIZXpla2lhaCBkZWNlaXZlIHlvdTogZm9yIGhlIHNoYWxsIG5vdCBiZSBhYmxlIHRvIGRlbGl2ZXIgeW91IG91dCBvZiBoaXMgaGFuZDoKTmVpdGhlciBsZXQgSGV6ZWtpYWggbWFrZSB5b3UgdHJ1c3QgaW4gdGhlIExPUkQsIHNheWluZywgVGhlIExPUkQgd2lsbCBzdXJlbHkgZGVsaXZlciB1cywgYW5kIHRoaXMgY2l0eSBzaGFsbCBub3QgYmUgZGVsaXZlcmVkIGludG8gdGhlIGhhbmQgb2YgdGhlIGtpbmcgb2YgQXNzeXJpYS4KSGVhcmtlbiBub3QgdG8gSGV6ZWtpYWg6IGZvciB0aHVzIHNhaXRoIHRoZSBraW5nIG9mIEFzc3lyaWEsIE1ha2UgYW4gYWdyZWVtZW50IHdpdGggbWUgYnkgYSBwcmVzZW50LCBhbmQgY29tZSBvdXQgdG8gbWUsIGFuZCB0aGVuIGVhdCB5ZSBldmVyeSBtYW4gb2YgaGlzIG93biB2aW5lLCBhbmQgZXZlcnkgb25lIG9mIGhpcyBmaWcgdHJlZSwgYW5kIGRyaW5rIHllIGV2ZXJ5IG9uZSB0aGUgd2F0ZXJzIG9mIGhpcyBjaXN0ZXJuOgpVbnRpbCBJIGNvbWUgYW5kIHRha2UgeW91IGF3YXkgdG8gYSBsYW5kIGxpa2UgeW91ciBvd24gbGFuZCwgYSBsYW5kIG9mIGNvcm4gYW5kIHdpbmUsIGEgbGFuZCBvZiBicmVhZCBhbmQgdmluZXlhcmRzLCBhIGxhbmQgb2Ygb2lsIG9saXZlIGFuZCBvZiBob25leSwgdGhhdCB5ZSBtYXkgbGl2ZSwgYW5kIG5vdCBkaWU6IGFuZCBoZWFya2VuIG5vdCB1bnRvIEhlemVraWFoLCB3aGVuIGhlIHBlcnN1YWRldGggeW91LCBzYXlpbmcsIFRoZSBMT1JEIHdpbGwgZGVsaXZlciB1cy4KSGF0aCBhbnkgb2YgdGhlIGdvZHMgb2YgdGhlIG5hdGlvbnMgZGVsaXZlcmVkIGF0IGFsbCBoaXMgbGFuZCBvdXQgb2YgdGhlIGhhbmQgb2YgdGhlIGtpbmcgb2YgQXNzeXJpYT8KV2hlcmUgYXJlIHRoZSBnb2RzIG9mIEhhbWF0aCwgYW5kIG9mIEFycGFkPyB3aGVyZSBhcmUgdGhlIGdvZHMgb2YgU2VwaGFydmFpbSwgSGVuYSwgYW5kIEl2YWg/IGhhdmUgdGhleSBkZWxpdmVyZWQgU2FtYXJpYSBvdXQgb2YgbWluZSBoYW5kPwpXaG8gYXJlIHRoZXkgYW1vbmcgYWxsIHRoZSBnb2RzIG9mIHRoZSBjb3VudHJpZXMsIHRoYXQgaGF2ZSBkZWxpdmVyZWQgdGhlaXIgY291bnRyeSBvdXQgb2YgbWluZSBoYW5kLCB0aGF0IHRoZSBMT1JEIHNob3VsZCBkZWxpdmVyIEplcnVzYWxlbSBvdXQgb2YgbWluZSBoYW5kPwpCdXQgdGhlIHBlb3BsZSBoZWxkIHRoZWlyIHBlYWNlLCBhbmQgYW5zd2VyZWQgaGltIG5vdCBhIHdvcmQ6IGZvciB0aGUga2luZydzIGNvbW1hbmRtZW50IHdhcywgc2F5aW5nLCBBbnN3ZXIgaGltIG5vdC4KVGhlbiBjYW1lIEVsaWFraW0gdGhlIHNvbiBvZiBIaWxraWFoLCB3aGljaCB3YXMgb3ZlciB0aGUgaG91c2Vob2xkLCBhbmQgU2hlYm5hIHRoZSBzY3JpYmUsIGFuZCBKb2FoIHRoZSBzb24gb2YgQXNhcGggdGhlIHJlY29yZGVyLCB0byBIZXpla2lhaCB3aXRoIHRoZWlyIGNsb3RoZXMgcmVudCwgYW5kIHRvbGQgaGltIHRoZSB3b3JkcyBvZiBSYWJzaGFrZWguCkFuZCBpdCBjYW1lIHRvIHBhc3MsIHdoZW4ga2luZyBIZXpla2lhaCBoZWFyZCBpdCwgdGhhdCBoZSByZW50IGhpcyBjbG90aGVzLCBhbmQgY292ZXJlZCBoaW1zZWxmIHdpdGggc2Fja2Nsb3RoLCBhbmQgd2VudCBpbnRvIHRoZSBob3VzZSBvZiB0aGUgTE9SRC4KQW5kIGhlIHNlbnQgRWxpYWtpbSwgd2hpY2ggd2FzIG92ZXIgdGhlIGhvdXNlaG9sZCwgYW5kIFNoZWJuYSB0aGUgc2NyaWJlLCBhbmQgdGhlIGVsZGVycyBvZiB0aGUgcHJpZXN0cywgY292ZXJlZCB3aXRoIHNhY2tjbG90aCwgdG8gSXNhaWFoIHRoZSBwcm9waGV0IHRoZSBzb24gb2YgQW1vei4KQW5kIHRoZXkgc2FpZCB1bnRvIGhpbSwgVGh1cyBzYWl0aCBIZXpla2lhaCwgVGhpcyBkYXkgaXMgYSBkYXkgb2YgdHJvdWJsZSwgYW5kIG9mIHJlYnVrZSwgYW5kIGJsYXNwaGVteTsgZm9yIHRoZSBjaGlsZHJlbiBhcmUgY29tZSB0byB0aGUgYmlydGgsIGFuZCB0aGVyZSBpcyBub3Qgc3RyZW5ndGggdG8gYnJpbmcgZm9ydGguCkl0IG1heSBiZSB0aGUgTE9SRCB0aHkgR29kIHdpbGwgaGVhciBhbGwgdGhlIHdvcmRzIG9mIFJhYnNoYWtlaCwgd2hvbSB0aGUga2luZyBvZiBBc3N5cmlhIGhpcyBtYXN0ZXIgaGF0aCBzZW50IHRvIHJlcHJvYWNoIHRoZSBsaXZpbmcgR29kOyBhbmQgd2lsbCByZXByb3ZlIHRoZSB3b3JkcyB3aGljaCB0aGUgTE9SRCB0aHkgR29kIGhhdGggaGVhcmQ6IHdoZXJlZm9yZSBsaWZ0IHVwIHRoeSBwcmF5ZXIgZm9yIHRoZSByZW1uYW50IHRoYXQgYXJlIGxlZnQuClNvIHRoZSBzZXJ2YW50cyBvZiBraW5nIEhlemVraWFoIGNhbWUgdG8gSXNhaWFoLgpBbmQgSXNhaWFoIHNhaWQgdW50byB0aGVtLCBUaHVzIHNoYWxsIHllIHNheSB0byB5b3VyIG1hc3RlciwgVGh1cyBzYWl0aCB0aGUgTE9SRCwgQmUgbm90IGFmcmFpZCBvZiB0aGUgd29yZHMgd2hpY2ggdGhvdSBoYXN0IGhlYXJkLCB3aXRoIHdoaWNoIHRoZSBzZXJ2YW50cyBvZiB0aGUga2luZyBvZiBBc3N5cmlhIGhhdmUgYmxhc3BoZW1lZCBtZS4KQmVob2xkLCBJIHdpbGwgc2VuZCBhIGJsYXN0IHVwb24gaGltLCBhbmQgaGUgc2hhbGwgaGVhciBhIHJ1bW91ciwgYW5kIHNoYWxsIHJldHVybiB0byBoaXMgb3duIGxhbmQ7IGFuZCBJIHdpbGwgY2F1c2UgaGltIHRvIGZhbGwgYnkgdGhlIHN3b3JkIGluIGhpcyBvd24gbGFuZC4KU28gUmFic2hha2VoIHJldHVybmVkLCBhbmQgZm91bmQgdGhlIGtpbmcgb2YgQXNzeXJpYSB3YXJyaW5nIGFnYWluc3QgTGlibmFoOiBmb3IgaGUgaGFkIGhlYXJkIHRoYXQgaGUgd2FzIGRlcGFydGVkIGZyb20gTGFjaGlzaC4KQW5kIHdoZW4gaGUgaGVhcmQgc2F5IG9mIFRpcmhha2FoIGtpbmcgb2YgRXRoaW9waWEsIEJlaG9sZCwgaGUgaXMgY29tZSBvdXQgdG8gZmlnaHQgYWdhaW5zdCB0aGVlOiBoZSBzZW50IG1lc3NlbmdlcnMgYWdhaW4gdW50byBIZXpla2lhaCwgc2F5aW5nLApUaHVzIHNoYWxsIHllIHNwZWFrIHRvIEhlemVraWFoIGtpbmcgb2YgSnVkYWgsIHNheWluZywgTGV0IG5vdCB0aHkgR29kIGluIHdob20gdGhvdSB0cnVzdGVzdCBkZWNlaXZlIHRoZWUsIHNheWluZywgSmVydXNhbGVtIHNoYWxsIG5vdCBiZSBkZWxpdmVyZWQgaW50byB0aGUgaGFuZCBvZiB0aGUga2luZyBvZiBBc3N5cmlhLgpCZWhvbGQsIHRob3UgaGFzdCBoZWFyZCB3aGF0IHRoZSBraW5ncyBvZiBBc3N5cmlhIGhhdmUgZG9uZSB0byBhbGwgbGFuZHMsIGJ5IGRlc3Ryb3lpbmcgdGhlbSB1dHRlcmx5OiBhbmQgc2hhbHQgdGhvdSBiZSBkZWxpdmVyZWQ/CkhhdmUgdGhlIGdvZHMgb2YgdGhlIG5hdGlvbnMgZGVsaXZlcmVkIHRoZW0gd2hpY2ggbXkgZmF0aGVycyBoYXZlIGRlc3Ryb3llZDsgYXMgR296YW4sIGFuZCBIYXJhbiwgYW5kIFJlemVwaCwgYW5kIHRoZSBjaGlsZHJlbiBvZiBFZGVuIHdoaWNoIHdlcmUgaW4gVGhlbGFzYXI/CldoZXJlIGlzIHRoZSBraW5nIG9mIEhhbWF0aCwgYW5kIHRoZSBraW5nIG9mIEFycGFkLCBhbmQgdGhlIGtpbmcgb2YgdGhlIGNpdHkgb2YgU2VwaGFydmFpbSwgb2YgSGVuYSwgYW5kIEl2YWg/CkFuZCBIZXpla2lhaCByZWNlaXZlZCB0aGUgbGV0dGVyIG9mIHRoZSBoYW5kIG9mIHRoZSBtZXNzZW5nZXJzLCBhbmQgcmVhZCBpdDogYW5kIEhlemVraWFoIHdlbnQgdXAgaW50byB0aGUgaG91c2Ugb2YgdGhlIExPUkQsIGFuZCBzcHJlYWQgaXQgYmVmb3JlIHRoZSBMT1JELgpBbmQgSGV6ZWtpYWggcHJheWVkIGJlZm9yZSB0aGUgTE9SRCwgYW5kIHNhaWQsIE8gTE9SRCBHb2Qgb2YgSXNyYWVsLCB3aGljaCBkd2VsbGVzdCBiZXR3ZWVuIHRoZSBjaGVydWJpbXMsIHRob3UgYXJ0IHRoZSBHb2QsIGV2ZW4gdGhvdSBhbG9uZSwgb2YgYWxsIHRoZSBraW5nZG9tcyBvZiB0aGUgZWFydGg7IHRob3UgaGFzdCBtYWRlIGhlYXZlbiBhbmQgZWFydGguCkxPUkQsIGJvdyBkb3duIHRoaW5lIGVhciwgYW5kIGhlYXI6IG9wZW4sIExPUkQsIHRoaW5lIGV5ZXMsIGFuZCBzZWU6IGFuZCBoZWFyIHRoZSB3b3JkcyBvZiBTZW5uYWNoZXJpYiwgd2hpY2ggaGF0aCBzZW50IGhpbSB0byByZXByb2FjaCB0aGUgbGl2aW5nIEdvZC4KT2YgYSB0cnV0aCwgTE9SRCwgdGhlIGtpbmdzIG9mIEFzc3lyaWEgaGF2ZSBkZXN0cm95ZWQgdGhlIG5hdGlvbnMgYW5kIHRoZWlyIGxhbmRzLApBbmQgaGF2ZSBjYXN0IHRoZWlyIGdvZHMgaW50byB0aGUgZmlyZTogZm9yIHRoZXkgd2VyZSBubyBnb2RzLCBidXQgdGhlIHdvcmsgb2YgbWVuJ3MgaGFuZHMsIHdvb2QgYW5kIHN0b25lOiB0aGVyZWZvcmUgdGhleSBoYXZlIGRlc3Ryb3llZCB0aGVtLgpOb3cgdGhlcmVmb3JlLCBPIExPUkQgb3VyIEdvZCwgSSBiZXNlZWNoIHRoZWUsIHNhdmUgdGhvdSB1cyBvdXQgb2YgaGlzIGhhbmQsIHRoYXQgYWxsIHRoZSBraW5nZG9tcyBvZiB0aGUgZWFydGggbWF5IGtub3cgdGhhdCB0aG91IGFydCB0aGUgTE9SRCBHb2QsIGV2ZW4gdGhvdSBvbmx5LgpUaGVuIElzYWlhaCB0aGUgc29uIG9mIEFtb3ogc2VudCB0byBIZXpla2lhaCwgc2F5aW5nLCBUaHVzIHNhaXRoIHRoZSBMT1JEIEdvZCBvZiBJc3JhZWwsIFRoYXQgd2hpY2ggdGhvdSBoYXN0IHByYXllZCB0byBtZSBhZ2FpbnN0IFNlbm5hY2hlcmliIGtpbmcgb2YgQXNzeXJpYSBJIGhhdmUgaGVhcmQuClRoaXMgaXMgdGhlIHdvcmQgdGhhdCB0aGUgTE9SRCBoYXRoIHNwb2tlbiBjb25jZXJuaW5nIGhpbTsgVGhlIHZpcmdpbiB0aGUgZGF1Z2h0ZXIgb2YgWmlvbiBoYXRoIGRlc3Bpc2VkIHRoZWUsIGFuZCBsYXVnaGVkIHRoZWUgdG8gc2Nvcm47IHRoZSBkYXVnaHRlciBvZiBKZXJ1c2FsZW0gaGF0aCBzaGFrZW4gaGVyIGhlYWQgYXQgdGhlZS4KV2hvbSBoYXN0IHRob3UgcmVwcm9hY2hlZCBhbmQgYmxhc3BoZW1lZD8gYW5kIGFnYWluc3Qgd2hvbSBoYXN0IHRob3UgZXhhbHRlZCB0aHkgdm9pY2UsIGFuZCBsaWZ0ZWQgdXAgdGhpbmUgZXllcyBvbiBoaWdoPyBldmVuIGFnYWluc3QgdGhlIEhvbHkgT25lIG9mIElzcmFlbC4KQnkgdGh5IG1lc3NlbmdlcnMgdGhvdSBoYXN0IHJlcHJvYWNoZWQgdGhlIExPUkQsIGFuZCBoYXN0IHNhaWQsIFdpdGggdGhlIG11bHRpdHVkZSBvZiBteSBjaGFyaW90cyBJIGFtIGNvbWUgdXAgdG8gdGhlIGhlaWdodCBvZiB0aGUgbW91bnRhaW5zLCB0byB0aGUgc2lkZXMgb2YgTGViYW5vbiwgYW5kIHdpbGwgY3V0IGRvd24gdGhlIHRhbGwgY2VkYXIgdHJlZXMgdGhlcmVvZiwgYW5kIHRoZSBjaG9pY2UgZmlyIHRyZWVzIHRoZXJlb2Y6IGFuZCBJIHdpbGwgZW50ZXIgaW50byB0aGUgbG9kZ2luZ3Mgb2YgaGlzIGJvcmRlcnMsIGFuZCBpbnRvIHRoZSBmb3Jlc3Qgb2YgaGlzIENhcm1lbC4KSSBoYXZlIGRpZ2dlZCBhbmQgZHJ1bmsgc3RyYW5nZSB3YXRlcnMsIGFuZCB3aXRoIHRoZSBzb2xlIG9mIG15IGZlZXQgaGF2ZSBJIGRyaWVkIHVwIGFsbCB0aGUgcml2ZXJzIG9mIGJlc2llZ2VkIHBsYWNlcy4KSGFzdCB0aG91IG5vdCBoZWFyZCBsb25nIGFnbyBob3cgSSBoYXZlIGRvbmUgaXQsIGFuZCBvZiBhbmNpZW50IHRpbWVzIHRoYXQgSSBoYXZlIGZvcm1lZCBpdD8gbm93IGhhdmUgSSBicm91Z2h0IGl0IHRvIHBhc3MsIHRoYXQgdGhvdSBzaG91bGRlc3QgYmUgdG8gbGF5IHdhc3RlIGZlbmNlZCBjaXRpZXMgaW50byBydWlub3VzIGhlYXBzLgpUaGVyZWZvcmUgdGhlaXIgaW5oYWJpdGFudHMgd2VyZSBvZiBzbWFsbCBwb3dlciwgdGhleSB3ZXJlIGRpc21heWVkIGFuZCBjb25mb3VuZGVkOyB0aGV5IHdlcmUgYXMgdGhlIGdyYXNzIG9mIHRoZSBmaWVsZCwgYW5kIGFzIHRoZSBncmVlbiBoZXJiLCBhcyB0aGUgZ3Jhc3Mgb24gdGhlIGhvdXNlIHRvcHMsIGFuZCBhcyBjb3JuIGJsYXN0ZWQgYmVmb3JlIGl0IGJlIGdyb3duIHVwLgpCdXQgSSBrbm93IHRoeSBhYm9kZSwgYW5kIHRoeSBnb2luZyBvdXQsIGFuZCB0aHkgY29taW5nIGluLCBhbmQgdGh5IHJhZ2UgYWdhaW5zdCBtZS4KQmVjYXVzZSB0aHkgcmFnZSBhZ2FpbnN0IG1lIGFuZCB0aHkgdHVtdWx0IGlzIGNvbWUgdXAgaW50byBtaW5lIGVhcnMsIHRoZXJlZm9yZSBJIHdpbGwgcHV0IG15IGhvb2sgaW4gdGh5IG5vc2UsIGFuZCBteSBicmlkbGUgaW4gdGh5IGxpcHMsIGFuZCBJIHdpbGwgdHVybiB0aGVlIGJhY2sgYnkgdGhlIHdheSBieSB3aGljaCB0aG91IGNhbWVzdC4KQW5kIHRoaXMgc2hhbGwgYmUgYSBzaWduIHVudG8gdGhlZSwgWWUgc2hhbGwgZWF0IHRoaXMgeWVhciBzdWNoIHRoaW5ncyBhcyBncm93IG9mIHRoZW1zZWx2ZXMsIGFuZCBpbiB0aGUgc2Vjb25kIHllYXIgdGhhdCB3aGljaCBzcHJpbmdldGggb2YgdGhlIHNhbWU7IGFuZCBpbiB0aGUgdGhpcmQgeWVhciBzb3cgeWUsIGFuZCByZWFwLCBhbmQgcGxhbnQgdmluZXlhcmRzLCBhbmQgZWF0IHRoZSBmcnVpdHMgdGhlcmVvZi4KQW5kIHRoZSByZW1uYW50IHRoYXQgaXMgZXNjYXBlZCBvZiB0aGUgaG91c2Ugb2YgSnVkYWggc2hhbGwgeWV0IGFnYWluIHRha2Ugcm9vdCBkb3dud2FyZCwgYW5kIGJlYXIgZnJ1aXQgdXB3YXJkLgpGb3Igb3V0IG9mIEplcnVzYWxlbSBzaGFsbCBnbyBmb3J0aCBhIHJlbW5hbnQsIGFuZCB0aGV5IHRoYXQgZXNjYXBlIG91dCBvZiBtb3VudCBaaW9uOiB0aGUgemVhbCBvZiB0aGUgTE9SRCBvZiBob3N0cyBzaGFsbCBkbyB0aGlzLgpUaGVyZWZvcmUgdGh1cyBzYWl0aCB0aGUgTE9SRCBjb25jZXJuaW5nIHRoZSBraW5nIG9mIEFzc3lyaWEsIEhlIHNoYWxsIG5vdCBjb21lIGludG8gdGhpcyBjaXR5LCBub3Igc2hvb3QgYW4gYXJyb3cgdGhlcmUsIG5vciBjb21lIGJlZm9yZSBpdCB3aXRoIHNoaWVsZCwgbm9yIGNhc3QgYSBiYW5rIGFnYWluc3QgaXQuCkJ5IHRoZSB3YXkgdGhhdCBoZSBjYW1lLCBieSB0aGUgc2FtZSBzaGFsbCBoZSByZXR1cm4sIGFuZCBzaGFsbCBub3QgY29tZSBpbnRvIHRoaXMgY2l0eSwgc2FpdGggdGhlIExPUkQuCkZvciBJIHdpbGwgZGVmZW5kIHRoaXMgY2l0eSwgdG8gc2F2ZSBpdCwgZm9yIG1pbmUgb3duIHNha2UsIGFuZCBmb3IgbXkgc2VydmFudCBEYXZpZCdzIHNha2UuCkFuZCBpdCBjYW1lIHRvIHBhc3MgdGhhdCBuaWdodCwgdGhhdCB0aGUgYW5nZWwgb2YgdGhlIExPUkQgd2VudCBvdXQsIGFuZCBzbW90ZSBpbiB0aGUgY2FtcCBvZiB0aGUgQXNzeXJpYW5zIGFuIGh1bmRyZWQgZm91cnNjb3JlIGFuZCBmaXZlIHRob3VzYW5kOiBhbmQgd2hlbiB0aGV5IGFyb3NlIGVhcmx5IGluIHRoZSBtb3JuaW5nLCBiZWhvbGQsIHRoZXkgd2VyZSBhbGwgZGVhZCBjb3Jwc2VzLgpTbyBTZW5uYWNoZXJpYiBraW5nIG9mIEFzc3lyaWEgZGVwYXJ0ZWQsIGFuZCB3ZW50IGFuZCByZXR1cm5lZCwgYW5kIGR3ZWx0IGF0IE5pbmV2ZWguCkFuZCBpdCBjYW1lIHRvIHBhc3MsIGFzIGhlIHdhcyB3b3JzaGlwcGluZyBpbiB0aGUgaG91c2Ugb2YgTmlzcm9jaCBoaXMgZ29kLCB0aGF0IEFkcmFtbWVsZWNoIGFuZCBTaGFyZXplciBoaXMgc29ucyBzbW90ZSBoaW0gd2l0aCB0aGUgc3dvcmQ6IGFuZCB0aGV5IGVzY2FwZWQgaW50byB0aGUgbGFuZCBvZiBBcm1lbmlhLiBBbmQgRXNhcmhhZGRvbiBoaXMgc29uIHJlaWduZWQgaW4gaGlzIHN0ZWFkLgpJbiB0aG9zZSBkYXlzIHdhcyBIZXpla2lhaCBzaWNrIHVudG8gZGVhdGguIEFuZCB0aGUgcHJvcGhldCBJc2FpYWggdGhlIHNvbiBvZiBBbW96IGNhbWUgdG8gaGltLCBhbmQgc2FpZCB1bnRvIGhpbSwgVGh1cyBzYWl0aCB0aGUgTE9SRCwgU2V0IHRoaW5lIGhvdXNlIGluIG9yZGVyOyBmb3IgdGhvdSBzaGFsdCBkaWUsIGFuZCBub3QgbGl2ZS4KVGhlbiBoZSB0dXJuZWQgaGlzIGZhY2UgdG8gdGhlIHdhbGwsIGFuZCBwcmF5ZWQgdW50byB0aGUgTE9SRCwgc2F5aW5nLApJIGJlc2VlY2ggdGhlZSwgTyBMT1JELCByZW1lbWJlciBub3cgaG93IEkgaGF2ZSB3YWxrZWQgYmVmb3JlIHRoZWUgaW4gdHJ1dGggYW5kIHdpdGggYSBwZXJmZWN0IGhlYXJ0LCBhbmQgaGF2ZSBkb25lIHRoYXQgd2hpY2ggaXMgZ29vZCBpbiB0aHkgc2lnaHQuIEFuZCBIZXpla2lhaCB3ZXB0IHNvcmUuCkFuZCBpdCBjYW1lIHRvIHBhc3MsIGFmb3JlIElzYWlhaCB3YXMgZ29uZSBvdXQgaW50byB0aGUgbWlkZGxlIGNvdXJ0LCB0aGF0IHRoZSB3b3JkIG9mIHRoZSBMT1JEIGNhbWUgdG8gaGltLCBzYXlpbmcsClR1cm4gYWdhaW4sIGFuZCB0ZWxsIEhlemVraWFoIHRoZSBjYXB0YWluIG9mIG15IHBlb3BsZSwgVGh1cyBzYWl0aCB0aGUgTE9SRCwgdGhlIEdvZCBvZiBEYXZpZCB0aHkgZmF0aGVyLCBJIGhhdmUgaGVhcmQgdGh5IHByYXllciwgSSBoYXZlIHNlZW4gdGh5IHRlYXJzOiBiZWhvbGQsIEkgd2lsbCBoZWFsIHRoZWU6IG9uIHRoZSB0aGlyZCBkYXkgdGhvdSBzaGFsdCBnbyB1cCB1bnRvIHRoZSBob3VzZSBvZiB0aGUgTE9SRC4KQW5kIEkgd2lsbCBhZGQgdW50byB0aHkgZGF5cyBmaWZ0ZWVuIHllYXJzOyBhbmQgSSB3aWxsIGRlbGl2ZXIgdGhlZSBhbmQgdGhpcyBjaXR5IG91dCBvZiB0aGUgaGFuZCBvZiB0aGUga2luZyBvZiBBc3N5cmlhOyBhbmQgSSB3aWxsIGRlZmVuZCB0aGlzIGNpdHkgZm9yIG1pbmUgb3duIHNha2UsIGFuZCBmb3IgbXkgc2VydmFudCBEYXZpZCdzIHNha2UuCkFuZCBJc2FpYWggc2FpZCwgVGFrZSBhIGx1bXAgb2YgZmlncy4gQW5kIHRoZXkgdG9vayBhbmQgbGFpZCBpdCBvbiB0aGUgYm9pbCwgYW5kIGhlIHJlY292ZXJlZC4KQW5kIEhlemVraWFoIHNhaWQgdW50byBJc2FpYWgsIFdoYXQgc2hhbGwgYmUgdGhlIHNpZ24gdGhhdCB0aGUgTE9SRCB3aWxsIGhlYWwgbWUsIGFuZCB0aGF0IEkgc2hhbGwgZ28gdXAgaW50byB0aGUgaG91c2Ugb2YgdGhlIExPUkQgdGhlIHRoaXJkIGRheT8KQW5kIElzYWlhaCBzYWlkLCBUaGlzIHNpZ24gc2hhbHQgdGhvdSBoYXZlIG9mIHRoZSBMT1JELCB0aGF0IHRoZSBMT1JEIHdpbGwgZG8gdGhlIHRoaW5nIHRoYXQgaGUgaGF0aCBzcG9rZW46IHNoYWxsIHRoZSBzaGFkb3cgZ28gZm9yd2FyZCB0ZW4gZGVncmVlcywgb3IgZ28gYmFjayB0ZW4gZGVncmVlcz8KQW5kIEhlemVraWFoIGFuc3dlcmVkLCBJdCBpcyBhIGxpZ2h0IHRoaW5nIGZvciB0aGUgc2hhZG93IHRvIGdvIGRvd24gdGVuIGRlZ3JlZXM6IG5heSwgYnV0IGxldCB0aGUgc2hhZG93IHJldHVybiBiYWNrd2FyZCB0ZW4gZGVncmVlcy4KQW5kIElzYWlhaCB0aGUgcHJvcGhldCBjcmllZCB1bnRvIHRoZSBMT1JEOiBhbmQgaGUgYnJvdWdodCB0aGUgc2hhZG93IHRlbiBkZWdyZWVzIGJhY2t3YXJkLCBieSB3aGljaCBpdCBoYWQgZ29uZSBkb3duIGluIHRoZSBkaWFsIG9mIEFoYXouCkF0IHRoYXQgdGltZSBCZXJvZGFjaGJhbGFkYW4sIHRoZSBzb24gb2YgQmFsYWRhbiwga2luZyBvZiBCYWJ5bG9uLCBzZW50IGxldHRlcnMgYW5kIGEgcHJlc2VudCB1bnRvIEhlemVraWFoOiBmb3IgaGUgaGFkIGhlYXJkIHRoYXQgSGV6ZWtpYWggaGFkIGJlZW4gc2ljay4KQW5kIEhlemVraWFoIGhlYXJrZW5lZCB1bnRvIHRoZW0sIGFuZCBzaGV3ZWQgdGhlbSBhbGwgdGhlIGhvdXNlIG9mIGhpcyBwcmVjaW91cyB0aGluZ3MsIHRoZSBzaWx2ZXIsIGFuZCB0aGUgZ29sZCwgYW5kIHRoZSBzcGljZXMsIGFuZCB0aGUgcHJlY2lvdXMgb2ludG1lbnQsIGFuZCBhbGwgdGhlIGhvdXNlIG9mIGhpcyBhcm1vdXIsIGFuZCBhbGwgdGhhdCB3YXMgZm91bmQgaW4gaGlzIHRyZWFzdXJlczogdGhlcmUgd2FzIG5vdGhpbmcgaW4gaGlzIGhvdXNlLCBub3IgaW4gYWxsIGhpcyBkb21pbmlvbiwgdGhhdCBIZXpla2lhaCBzaGV3ZWQgdGhlbSBub3QuClRoZW4gY2FtZSBJc2FpYWggdGhlIHByb3BoZXQgdW50byBraW5nIEhlemVraWFoLCBhbmQgc2FpZCB1bnRvIGhpbSwgV2hhdCBzYWlkIHRoZXNlIG1lbj8gYW5kIGZyb20gd2hlbmNlIGNhbWUgdGhleSB1bnRvIHRoZWU/IEFuZCBIZXpla2lhaCBzYWlkLCBUaGV5IGFyZSBjb21lIGZyb20gYSBmYXIgY291bnRyeSwgZXZlbiBmcm9tIEJhYnlsb24uCkFuZCBoZSBzYWlkLCBXaGF0IGhhdmUgdGhleSBzZWVuIGluIHRoaW5lIGhvdXNlPyBBbmQgSGV6ZWtpYWggYW5zd2VyZWQsIEFsbCB0aGUgdGhpbmdzIHRoYXQgYXJlIGluIG1pbmUgaG91c2UgaGF2ZSB0aGV5IHNlZW46IHRoZXJlIGlzIG5vdGhpbmcgYW1vbmcgbXkgdHJlYXN1cmVzIHRoYXQgSSBoYXZlIG5vdCBzaGV3ZWQgdGhlbS4KQW5kIElzYWlhaCBzYWlkIHVudG8gSGV6ZWtpYWgsIEhlYXIgdGhlIHdvcmQgb2YgdGhlIExPUkQuCkJlaG9sZCwgdGhlIGRheXMgY29tZSwgdGhhdCBhbGwgdGhhdCBpcyBpbiB0aGluZSBob3VzZSwgYW5kIHRoYXQgd2hpY2ggdGh5IGZhdGhlcnMgaGF2ZSBsYWlkIHVwIGluIHN0b3JlIHVudG8gdGhpcyBkYXksIHNoYWxsIGJlIGNhcnJpZWQgaW50byBCYWJ5bG9uOiBub3RoaW5nIHNoYWxsIGJlIGxlZnQsIHNhaXRoIHRoZSBMT1JELgpBbmQgb2YgdGh5IHNvbnMgdGhhdCBzaGFsbCBpc3N1ZSBmcm9tIHRoZWUsIHdoaWNoIHRob3Ugc2hhbHQgYmVnZXQsIHNoYWxsIHRoZXkgdGFrZSBhd2F5OyBhbmQgdGhleSBzaGFsbCBiZSBldW51Y2hzIGluIHRoZSBwYWxhY2Ugb2YgdGhlIGtpbmcgb2YgQmFieWxvbi4KVGhlbiBzYWlkIEhlemVraWFoIHVudG8gSXNhaWFoLCBHb29kIGlzIHRoZSB3b3JkIG9mIHRoZSBMT1JEIHdoaWNoIHRob3UgaGFzdCBzcG9rZW4uIEFuZCBoZSBzYWlkLCBJcyBpdCBub3QgZ29vZCwgaWYgcGVhY2UgYW5kIHRydXRoIGJlIGluIG15IGRheXM/CkFuZCB0aGUgcmVzdCBvZiB0aGUgYWN0cyBvZiBIZXpla2lhaCwgYW5kIGFsbCBoaXMgbWlnaHQsIGFuZCBob3cgaGUgbWFkZSBhIHBvb2wsIGFuZCBhIGNvbmR1aXQsIGFuZCBicm91Z2h0IHdhdGVyIGludG8gdGhlIGNpdHksIGFyZSB0aGV5IG5vdCB3cml0dGVuIGluIHRoZSBib29rIG9mIHRoZSBjaHJvbmljbGVzIG9mIHRoZSBraW5ncyBvZiBKdWRhaD8KQW5kIEhlemVraWFoIHNsZXB0IHdpdGggaGlzIGZhdGhlcnM6IGFuZCBNYW5hc3NlaCBoaXMgc29uIHJlaWduZWQgaW4gaGlzIHN0ZWFkLgpNYW5hc3NlaCB3YXMgdHdlbHZlIHllYXJzIG9sZCB3aGVuIGhlIGJlZ2FuIHRvIHJlaWduLCBhbmQgcmVpZ25lZCBmaWZ0eSBhbmQgZml2ZSB5ZWFycyBpbiBKZXJ1c2FsZW0uIEFuZCBoaXMgbW90aGVyJ3MgbmFtZSB3YXMgSGVwaHppYmFoLgpBbmQgaGUgZGlkIHRoYXQgd2hpY2ggd2FzIGV2aWwgaW4gdGhlIHNpZ2h0IG9mIHRoZSBMT1JELCBhZnRlciB0aGUgYWJvbWluYXRpb25zIG9mIHRoZSBoZWF0aGVuLCB3aG9tIHRoZSBMT1JEIGNhc3Qgb3V0IGJlZm9yZSB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLgpGb3IgaGUgYnVpbHQgdXAgYWdhaW4gdGhlIGhpZ2ggcGxhY2VzIHdoaWNoIEhlemVraWFoIGhpcyBmYXRoZXIgaGFkIGRlc3Ryb3llZDsgYW5kIGhlIHJlYXJlZCB1cCBhbHRhcnMgZm9yIEJhYWwsIGFuZCBtYWRlIGEgZ3JvdmUsIGFzIGRpZCBBaGFiIGtpbmcgb2YgSXNyYWVsOyBhbmQgd29yc2hpcHBlZCBhbGwgdGhlIGhvc3Qgb2YgaGVhdmVuLCBhbmQgc2VydmVkIHRoZW0uCkFuZCBoZSBidWlsdCBhbHRhcnMgaW4gdGhlIGhvdXNlIG9mIHRoZSBMT1JELCBvZiB3aGljaCB0aGUgTE9SRCBzYWlkLCBJbiBKZXJ1c2FsZW0gd2lsbCBJIHB1dCBteSBuYW1lLgpBbmQgaGUgYnVpbHQgYWx0YXJzIGZvciBhbGwgdGhlIGhvc3Qgb2YgaGVhdmVuIGluIHRoZSB0d28gY291cnRzIG9mIHRoZSBob3VzZSBvZiB0aGUgTE9SRC4KQW5kIGhlIG1hZGUgaGlzIHNvbiBwYXNzIHRocm91Z2ggdGhlIGZpcmUsIGFuZCBvYnNlcnZlZCB0aW1lcywgYW5kIHVzZWQgZW5jaGFudG1lbnRzLCBhbmQgZGVhbHQgd2l0aCBmYW1pbGlhciBzcGlyaXRzIGFuZCB3aXphcmRzOiBoZSB3cm91Z2h0IG11Y2ggd2lja2VkbmVzcyBpbiB0aGUgc2lnaHQgb2YgdGhlIExPUkQsIHRvIHByb3Zva2UgaGltIHRvIGFuZ2VyLgpBbmQgaGUgc2V0IGEgZ3JhdmVuIGltYWdlIG9mIHRoZSBncm92ZSB0aGF0IGhlIGhhZCBtYWRlIGluIHRoZSBob3VzZSwgb2Ygd2hpY2ggdGhlIExPUkQgc2FpZCB0byBEYXZpZCwgYW5kIHRvIFNvbG9tb24gaGlzIHNvbiwgSW4gdGhpcyBob3VzZSwgYW5kIGluIEplcnVzYWxlbSwgd2hpY2ggSSBoYXZlIGNob3NlbiBvdXQgb2YgYWxsIHRyaWJlcyBvZiBJc3JhZWwsIHdpbGwgSSBwdXQgbXkgbmFtZSBmb3IgZXZlcjoKTmVpdGhlciB3aWxsIEkgbWFrZSB0aGUgZmVldCBvZiBJc3JhZWwgbW92ZSBhbnkgbW9yZSBvdXQgb2YgdGhlIGxhbmQgd2hpY2ggSSBnYXZlIHRoZWlyIGZhdGhlcnM7IG9ubHkgaWYgdGhleSB3aWxsIG9ic2VydmUgdG8gZG8gYWNjb3JkaW5nIHRvIGFsbCB0aGF0IEkgaGF2ZSBjb21tYW5kZWQgdGhlbSwgYW5kIGFjY29yZGluZyB0byBhbGwgdGhlIGxhdyB0aGF0IG15IHNlcnZhbnQgTW9zZXMgY29tbWFuZGVkIHRoZW0uCkJ1dCB0aGV5IGhlYXJrZW5lZCBub3Q6IGFuZCBNYW5hc3NlaCBzZWR1Y2VkIHRoZW0gdG8gZG8gbW9yZSBldmlsIHRoYW4gZGlkIHRoZSBuYXRpb25zIHdob20gdGhlIExPUkQgZGVzdHJveWVkIGJlZm9yZSB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLgpBbmQgdGhlIExPUkQgc3Bha2UgYnkgaGlzIHNlcnZhbnRzIHRoZSBwcm9waGV0cywgc2F5aW5nLApCZWNhdXNlIE1hbmFzc2VoIGtpbmcgb2YgSnVkYWggaGF0aCBkb25lIHRoZXNlIGFib21pbmF0aW9ucywgYW5kIGhhdGggZG9uZSB3aWNrZWRseSBhYm92ZSBhbGwgdGhhdCB0aGUgQW1vcml0ZXMgZGlkLCB3aGljaCB3ZXJlIGJlZm9yZSBoaW0sIGFuZCBoYXRoIG1hZGUgSnVkYWggYWxzbyB0byBzaW4gd2l0aCBoaXMgaWRvbHM6ClRoZXJlZm9yZSB0aHVzIHNhaXRoIHRoZSBMT1JEIEdvZCBvZiBJc3JhZWwsIEJlaG9sZCwgSSBhbSBicmluZ2luZyBzdWNoIGV2aWwgdXBvbiBKZXJ1c2FsZW0gYW5kIEp1ZGFoLCB0aGF0IHdob3NvZXZlciBoZWFyZXRoIG9mIGl0LCBib3RoIGhpcyBlYXJzIHNoYWxsIHRpbmdsZS4KQW5kIEkgd2lsbCBzdHJldGNoIG92ZXIgSmVydXNhbGVtIHRoZSBsaW5lIG9mIFNhbWFyaWEsIGFuZCB0aGUgcGx1bW1ldCBvZiB0aGUgaG91c2Ugb2YgQWhhYjogYW5kIEkgd2lsbCB3aXBlIEplcnVzYWxlbSBhcyBhIG1hbiB3aXBldGggYSBkaXNoLCB3aXBpbmcgaXQsIGFuZCB0dXJuaW5nIGl0IHVwc2lkZSBkb3duLgpBbmQgSSB3aWxsIGZvcnNha2UgdGhlIHJlbW5hbnQgb2YgbWluZSBpbmhlcml0YW5jZSwgYW5kIGRlbGl2ZXIgdGhlbSBpbnRvIHRoZSBoYW5kIG9mIHRoZWlyIGVuZW1pZXM7IGFuZCB0aGV5IHNoYWxsIGJlY29tZSBhIHByZXkgYW5kIGEgc3BvaWwgdG8gYWxsIHRoZWlyIGVuZW1pZXM7CkJlY2F1c2UgdGhleSBoYXZlIGRvbmUgdGhhdCB3aGljaCB3YXMgZXZpbCBpbiBteSBzaWdodCwgYW5kIGhhdmUgcHJvdm9rZWQgbWUgdG8gYW5nZXIsIHNpbmNlIHRoZSBkYXkgdGhlaXIgZmF0aGVycyBjYW1lIGZvcnRoIG91dCBvZiBFZ3lwdCwgZXZlbiB1bnRvIHRoaXMgZGF5LgpNb3Jlb3ZlciBNYW5hc3NlaCBzaGVkIGlubm9jZW50IGJsb29kIHZlcnkgbXVjaCwgdGlsbCBoZSBoYWQgZmlsbGVkIEplcnVzYWxlbSBmcm9tIG9uZSBlbmQgdG8gYW5vdGhlcjsgYmVzaWRlIGhpcyBzaW4gd2hlcmV3aXRoIGhlIG1hZGUgSnVkYWggdG8gc2luLCBpbiBkb2luZyB0aGF0IHdoaWNoIHdhcyBldmlsIGluIHRoZSBzaWdodCBvZiB0aGUgTE9SRC4KTm93IHRoZSByZXN0IG9mIHRoZSBhY3RzIG9mIE1hbmFzc2VoLCBhbmQgYWxsIHRoYXQgaGUgZGlkLCBhbmQgaGlzIHNpbiB0aGF0IGhlIHNpbm5lZCwgYXJlIHRoZXkgbm90IHdyaXR0ZW4gaW4gdGhlIGJvb2sgb2YgdGhlIGNocm9uaWNsZXMgb2YgdGhlIGtpbmdzIG9mIEp1ZGFoPwpBbmQgTWFuYXNzZWggc2xlcHQgd2l0aCBoaXMgZmF0aGVycywgYW5kIHdhcyBidXJpZWQgaW4gdGhlIGdhcmRlbiBvZiBoaXMgb3duIGhvdXNlLCBpbiB0aGUgZ2FyZGVuIG9mIFV6emE6IGFuZCBBbW9uIGhpcyBzb24gcmVpZ25lZCBpbiBoaXMgc3RlYWQuCkFtb24gd2FzIHR3ZW50eSBhbmQgdHdvIHllYXJzIG9sZCB3aGVuIGhlIGJlZ2FuIHRvIHJlaWduLCBhbmQgaGUgcmVpZ25lZCB0d28geWVhcnMgaW4gSmVydXNhbGVtLiBBbmQgaGlzIG1vdGhlcidzIG5hbWUgd2FzIE1lc2h1bGxlbWV0aCwgdGhlIGRhdWdodGVyIG9mIEhhcnV6IG9mIEpvdGJhaC4KQW5kIGhlIGRpZCB0aGF0IHdoaWNoIHdhcyBldmlsIGluIHRoZSBzaWdodCBvZiB0aGUgTE9SRCwgYXMgaGlzIGZhdGhlciBNYW5hc3NlaCBkaWQuCkFuZCBoZSB3YWxrZWQgaW4gYWxsIHRoZSB3YXkgdGhhdCBoaXMgZmF0aGVyIHdhbGtlZCBpbiwgYW5kIHNlcnZlZCB0aGUgaWRvbHMgdGhhdCBoaXMgZmF0aGVyIHNlcnZlZCwgYW5kIHdvcnNoaXBwZWQgdGhlbToKQW5kIGhlIGZvcnNvb2sgdGhlIExPUkQgR29kIG9mIGhpcyBmYXRoZXJzLCBhbmQgd2Fsa2VkIG5vdCBpbiB0aGUgd2F5IG9mIHRoZSBMT1JELgpBbmQgdGhlIHNlcnZhbnRzIG9mIEFtb24gY29uc3BpcmVkIGFnYWluc3QgaGltLCBhbmQgc2xldyB0aGUga2luZyBpbiBoaXMgb3duIGhvdXNlLgpBbmQgdGhlIHBlb3BsZSBvZiB0aGUgbGFuZCBzbGV3IGFsbCB0aGVtIHRoYXQgaGFkIGNvbnNwaXJlZCBhZ2FpbnN0IGtpbmcgQW1vbjsgYW5kIHRoZSBwZW9wbGUgb2YgdGhlIGxhbmQgbWFkZSBKb3NpYWggaGlzIHNvbiBraW5nIGluIGhpcyBzdGVhZC4KTm93IHRoZSByZXN0IG9mIHRoZSBhY3RzIG9mIEFtb24gd2hpY2ggaGUgZGlkLCBhcmUgdGhleSBub3Qgd3JpdHRlbiBpbiB0aGUgYm9vayBvZiB0aGUgY2hyb25pY2xlcyBvZiB0aGUga2luZ3Mgb2YgSnVkYWg/CkFuZCBoZSB3YXMgYnVyaWVkIGluIGhpcyBzZXB1bGNocmUgaW4gdGhlIGdhcmRlbiBvZiBVenphOiBhbmQgSm9zaWFoIGhpcyBzb24gcmVpZ25lZCBpbiBoaXMgc3RlYWQuCkpvc2lhaCB3YXMgZWlnaHQgeWVhcnMgb2xkIHdoZW4gaGUgYmVnYW4gdG8gcmVpZ24sIGFuZCBoZSByZWlnbmVkIHRoaXJ0eSBhbmQgb25lIHllYXJzIGluIEplcnVzYWxlbS4gQW5kIGhpcyBtb3RoZXIncyBuYW1lIHdhcyBKZWRpZGFoLCB0aGUgZGF1Z2h0ZXIgb2YgQWRhaWFoIG9mIEJvc2NhdGguCkFuZCBoZSBkaWQgdGhhdCB3aGljaCB3YXMgcmlnaHQgaW4gdGhlIHNpZ2h0IG9mIHRoZSBMT1JELCBhbmQgd2Fsa2VkIGluIGFsbCB0aGUgd2F5IG9mIERhdmlkIGhpcyBmYXRoZXIsIGFuZCB0dXJuZWQgbm90IGFzaWRlIHRvIHRoZSByaWdodCBoYW5kIG9yIHRvIHRoZSBsZWZ0LgpBbmQgaXQgY2FtZSB0byBwYXNzIGluIHRoZSBlaWdodGVlbnRoIHllYXIgb2Yga2luZyBKb3NpYWgsIHRoYXQgdGhlIGtpbmcgc2VudCBTaGFwaGFuIHRoZSBzb24gb2YgQXphbGlhaCwgdGhlIHNvbiBvZiBNZXNodWxsYW0sIHRoZSBzY3JpYmUsIHRvIHRoZSBob3VzZSBvZiB0aGUgTE9SRCwgc2F5aW5nLApHbyB1cCB0byBIaWxraWFoIHRoZSBoaWdoIHByaWVzdCwgdGhhdCBoZSBtYXkgc3VtIHRoZSBzaWx2ZXIgd2hpY2ggaXMgYnJvdWdodCBpbnRvIHRoZSBob3VzZSBvZiB0aGUgTE9SRCwgd2hpY2ggdGhlIGtlZXBlcnMgb2YgdGhlIGRvb3IgaGF2ZSBnYXRoZXJlZCBvZiB0aGUgcGVvcGxlOgpBbmQgbGV0IHRoZW0gZGVsaXZlciBpdCBpbnRvIHRoZSBoYW5kIG9mIHRoZSBkb2VycyBvZiB0aGUgd29yaywgdGhhdCBoYXZlIHRoZSBvdmVyc2lnaHQgb2YgdGhlIGhvdXNlIG9mIHRoZSBMT1JEOiBhbmQgbGV0IHRoZW0gZ2l2ZSBpdCB0byB0aGUgZG9lcnMgb2YgdGhlIHdvcmsgd2hpY2ggaXMgaW4gdGhlIGhvdXNlIG9mIHRoZSBMT1JELCB0byByZXBhaXIgdGhlIGJyZWFjaGVzIG9mIHRoZSBob3VzZSwKVW50byBjYXJwZW50ZXJzLCBhbmQgYnVpbGRlcnMsIGFuZCBtYXNvbnMsIGFuZCB0byBidXkgdGltYmVyIGFuZCBoZXduIHN0b25lIHRvIHJlcGFpciB0aGUgaG91c2UuCkhvd2JlaXQgdGhlcmUgd2FzIG5vIHJlY2tvbmluZyBtYWRlIHdpdGggdGhlbSBvZiB0aGUgbW9uZXkgdGhhdCB3YXMgZGVsaXZlcmVkIGludG8gdGhlaXIgaGFuZCwgYmVjYXVzZSB0aGV5IGRlYWx0IGZhaXRoZnVsbHkuCkFuZCBIaWxraWFoIHRoZSBoaWdoIHByaWVzdCBzYWlkIHVudG8gU2hhcGhhbiB0aGUgc2NyaWJlLCBJIGhhdmUgZm91bmQgdGhlIGJvb2sgb2YgdGhlIGxhdyBpbiB0aGUgaG91c2Ugb2YgdGhlIExPUkQuIEFuZCBIaWxraWFoIGdhdmUgdGhlIGJvb2sgdG8gU2hhcGhhbiwgYW5kIGhlIHJlYWQgaXQuCkFuZCBTaGFwaGFuIHRoZSBzY3JpYmUgY2FtZSB0byB0aGUga2luZywgYW5kIGJyb3VnaHQgdGhlIGtpbmcgd29yZCBhZ2FpbiwgYW5kIHNhaWQsIFRoeSBzZXJ2YW50cyBoYXZlIGdhdGhlcmVkIHRoZSBtb25leSB0aGF0IHdhcyBmb3VuZCBpbiB0aGUgaG91c2UsIGFuZCBoYXZlIGRlbGl2ZXJlZCBpdCBpbnRvIHRoZSBoYW5kIG9mIHRoZW0gdGhhdCBkbyB0aGUgd29yaywgdGhhdCBoYXZlIHRoZSBvdmVyc2lnaHQgb2YgdGhlIGhvdXNlIG9mIHRoZSBMT1JELgpBbmQgU2hhcGhhbiB0aGUgc2NyaWJlIHNoZXdlZCB0aGUga2luZywgc2F5aW5nLCBIaWxraWFoIHRoZSBwcmllc3QgaGF0aCBkZWxpdmVyZWQgbWUgYSBib29rLiBBbmQgU2hhcGhhbiByZWFkIGl0IGJlZm9yZSB0aGUga2luZy4KQW5kIGl0IGNhbWUgdG8gcGFzcywgd2hlbiB0aGUga2luZyBoYWQgaGVhcmQgdGhlIHdvcmRzIG9mIHRoZSBib29rIG9mIHRoZSBsYXcsIHRoYXQgaGUgcmVudCBoaXMgY2xvdGhlcy4KQW5kIHRoZSBraW5nIGNvbW1hbmRlZCBIaWxraWFoIHRoZSBwcmllc3QsIGFuZCBBaGlrYW0gdGhlIHNvbiBvZiBTaGFwaGFuLCBhbmQgQWNoYm9yIHRoZSBzb24gb2YgTWljaGFpYWgsIGFuZCBTaGFwaGFuIHRoZSBzY3JpYmUsIGFuZCBBc2FoaWFoIGEgc2VydmFudCBvZiB0aGUga2luZydzLCBzYXlpbmcsCkdvIHllLCBlbnF1aXJlIG9mIHRoZSBMT1JEIGZvciBtZSwgYW5kIGZvciB0aGUgcGVvcGxlLCBhbmQgZm9yIGFsbCBKdWRhaCwgY29uY2VybmluZyB0aGUgd29yZHMgb2YgdGhpcyBib29rIHRoYXQgaXMgZm91bmQ6IGZvciBncmVhdCBpcyB0aGUgd3JhdGggb2YgdGhlIExPUkQgdGhhdCBpcyBraW5kbGVkIGFnYWluc3QgdXMsIGJlY2F1c2Ugb3VyIGZhdGhlcnMgaGF2ZSBub3QgaGVhcmtlbmVkIHVudG8gdGhlIHdvcmRzIG9mIHRoaXMgYm9vaywgdG8gZG8gYWNjb3JkaW5nIHVudG8gYWxsIHRoYXQgd2hpY2ggaXMgd3JpdHRlbiBjb25jZXJuaW5nIHVzLgpTbyBIaWxraWFoIHRoZSBwcmllc3QsIGFuZCBBaGlrYW0sIGFuZCBBY2hib3IsIGFuZCBTaGFwaGFuLCBhbmQgQXNhaGlhaCwgd2VudCB1bnRvIEh1bGRhaCB0aGUgcHJvcGhldGVzcywgdGhlIHdpZmUgb2YgU2hhbGx1bSB0aGUgc29uIG9mIFRpa3ZhaCwgdGhlIHNvbiBvZiBIYXJoYXMsIGtlZXBlciBvZiB0aGUgd2FyZHJvYmU7IChub3cgc2hlIGR3ZWx0IGluIEplcnVzYWxlbSBpbiB0aGUgY29sbGVnZTspIGFuZCB0aGV5IGNvbW11bmVkIHdpdGggaGVyLgpBbmQgc2hlIHNhaWQgdW50byB0aGVtLCBUaHVzIHNhaXRoIHRoZSBMT1JEIEdvZCBvZiBJc3JhZWwsIFRlbGwgdGhlIG1hbiB0aGF0IHNlbnQgeW91IHRvIG1lLApUaHVzIHNhaXRoIHRoZSBMT1JELCBCZWhvbGQsIEkgd2lsbCBicmluZyBldmlsIHVwb24gdGhpcyBwbGFjZSwgYW5kIHVwb24gdGhlIGluaGFiaXRhbnRzIHRoZXJlb2YsIGV2ZW4gYWxsIHRoZSB3b3JkcyBvZiB0aGUgYm9vayB3aGljaCB0aGUga2luZyBvZiBKdWRhaCBoYXRoIHJlYWQ6CkJlY2F1c2UgdGhleSBoYXZlIGZvcnNha2VuIG1lLCBhbmQgaGF2ZSBidXJuZWQgaW5jZW5zZSB1bnRvIG90aGVyIGdvZHMsIHRoYXQgdGhleSBtaWdodCBwcm92b2tlIG1lIHRvIGFuZ2VyIHdpdGggYWxsIHRoZSB3b3JrcyBvZiB0aGVpciBoYW5kczsgdGhlcmVmb3JlIG15IHdyYXRoIHNoYWxsIGJlIGtpbmRsZWQgYWdhaW5zdCB0aGlzIHBsYWNlLCBhbmQgc2hhbGwgbm90IGJlIHF1ZW5jaGVkLgpCdXQgdG8gdGhlIGtpbmcgb2YgSnVkYWggd2hpY2ggc2VudCB5b3UgdG8gZW5xdWlyZSBvZiB0aGUgTE9SRCwgdGh1cyBzaGFsbCB5ZSBzYXkgdG8gaGltLCBUaHVzIHNhaXRoIHRoZSBMT1JEIEdvZCBvZiBJc3JhZWwsIEFzIHRvdWNoaW5nIHRoZSB3b3JkcyB3aGljaCB0aG91IGhhc3QgaGVhcmQ7CkJlY2F1c2UgdGhpbmUgaGVhcnQgd2FzIHRlbmRlciwgYW5kIHRob3UgaGFzdCBodW1ibGVkIHRoeXNlbGYgYmVmb3JlIHRoZSBMT1JELCB3aGVuIHRob3UgaGVhcmRlc3Qgd2hhdCBJIHNwYWtlIGFnYWluc3QgdGhpcyBwbGFjZSwgYW5kIGFnYWluc3QgdGhlIGluaGFiaXRhbnRzIHRoZXJlb2YsIHRoYXQgdGhleSBzaG91bGQgYmVjb21lIGEgZGVzb2xhdGlvbiBhbmQgYSBjdXJzZSwgYW5kIGhhc3QgcmVudCB0aHkgY2xvdGhlcywgYW5kIHdlcHQgYmVmb3JlIG1lOyBJIGFsc28gaGF2ZSBoZWFyZCB0aGVlLCBzYWl0aCB0aGUgTE9SRC4KQmVob2xkIHRoZXJlZm9yZSwgSSB3aWxsIGdhdGhlciB0aGVlIHVudG8gdGh5IGZhdGhlcnMsIGFuZCB0aG91IHNoYWx0IGJlIGdhdGhlcmVkIGludG8gdGh5IGdyYXZlIGluIHBlYWNlOyBhbmQgdGhpbmUgZXllcyBzaGFsbCBub3Qgc2VlIGFsbCB0aGUgZXZpbCB3aGljaCBJIHdpbGwgYnJpbmcgdXBvbiB0aGlzIHBsYWNlLiBBbmQgdGhleSBicm91Z2h0IHRoZSBraW5nIHdvcmQgYWdhaW4uCkFuZCB0aGUga2luZyBzZW50LCBhbmQgdGhleSBnYXRoZXJlZCB1bnRvIGhpbSBhbGwgdGhlIGVsZGVycyBvZiBKdWRhaCBhbmQgb2YgSmVydXNhbGVtLgpBbmQgdGhlIGtpbmcgd2VudCB1cCBpbnRvIHRoZSBob3VzZSBvZiB0aGUgTE9SRCwgYW5kIGFsbCB0aGUgbWVuIG9mIEp1ZGFoIGFuZCBhbGwgdGhlIGluaGFiaXRhbnRzIG9mIEplcnVzYWxlbSB3aXRoIGhpbSwgYW5kIHRoZSBwcmllc3RzLCBhbmQgdGhlIHByb3BoZXRzLCBhbmQgYWxsIHRoZSBwZW9wbGUsIGJvdGggc21hbGwgYW5kIGdyZWF0OiBhbmQgaGUgcmVhZCBpbiB0aGVpciBlYXJzIGFsbCB0aGUgd29yZHMgb2YgdGhlIGJvb2sgb2YgdGhlIGNvdmVuYW50IHdoaWNoIHdhcyBmb3VuZCBpbiB0aGUgaG91c2Ugb2YgdGhlIExPUkQuCkFuZCB0aGUga2luZyBzdG9vZCBieSBhIHBpbGxhciwgYW5kIG1hZGUgYSBjb3ZlbmFudCBiZWZvcmUgdGhlIExPUkQsIHRvIHdhbGsgYWZ0ZXIgdGhlIExPUkQsIGFuZCB0byBrZWVwIGhpcyBjb21tYW5kbWVudHMgYW5kIGhpcyB0ZXN0aW1vbmllcyBhbmQgaGlzIHN0YXR1dGVzIHdpdGggYWxsIHRoZWlyIGhlYXJ0IGFuZCBhbGwgdGhlaXIgc291bCwgdG8gcGVyZm9ybSB0aGUgd29yZHMgb2YgdGhpcyBjb3ZlbmFudCB0aGF0IHdlcmUgd3JpdHRlbiBpbiB0aGlzIGJvb2suIEFuZCBhbGwgdGhlIHBlb3BsZSBzdG9vZCB0byB0aGUgY292ZW5hbnQuCkFuZCB0aGUga2luZyBjb21tYW5kZWQgSGlsa2lhaCB0aGUgaGlnaCBwcmllc3QsIGFuZCB0aGUgcHJpZXN0cyBvZiB0aGUgc2Vjb25kIG9yZGVyLCBhbmQgdGhlIGtlZXBlcnMgb2YgdGhlIGRvb3IsIHRvIGJyaW5nIGZvcnRoIG91dCBvZiB0aGUgdGVtcGxlIG9mIHRoZSBMT1JEIGFsbCB0aGUgdmVzc2VscyB0aGF0IHdlcmUgbWFkZSBmb3IgQmFhbCwgYW5kIGZvciB0aGUgZ3JvdmUsIGFuZCBmb3IgYWxsIHRoZSBob3N0IG9mIGhlYXZlbjogYW5kIGhlIGJ1cm5lZCB0aGVtIHdpdGhvdXQgSmVydXNhbGVtIGluIHRoZSBmaWVsZHMgb2YgS2lkcm9uLCBhbmQgY2FycmllZCB0aGUgYXNoZXMgb2YgdGhlbSB1bnRvIEJldGhlbC4KQW5kIGhlIHB1dCBkb3duIHRoZSBpZG9sYXRyb3VzIHByaWVzdHMsIHdob20gdGhlIGtpbmdzIG9mIEp1ZGFoIGhhZCBvcmRhaW5lZCB0byBidXJuIGluY2Vuc2UgaW4gdGhlIGhpZ2ggcGxhY2VzIGluIHRoZSBjaXRpZXMgb2YgSnVkYWgsIGFuZCBpbiB0aGUgcGxhY2VzIHJvdW5kIGFib3V0IEplcnVzYWxlbTsgdGhlbSBhbHNvIHRoYXQgYnVybmVkIGluY2Vuc2UgdW50byBCYWFsLCB0byB0aGUgc3VuLCBhbmQgdG8gdGhlIG1vb24sIGFuZCB0byB0aGUgcGxhbmV0cywgYW5kIHRvIGFsbCB0aGUgaG9zdCBvZiBoZWF2ZW4uCkFuZCBoZSBicm91Z2h0IG91dCB0aGUgZ3JvdmUgZnJvbSB0aGUgaG91c2Ugb2YgdGhlIExPUkQsIHdpdGhvdXQgSmVydXNhbGVtLCB1bnRvIHRoZSBicm9vayBLaWRyb24sIGFuZCBidXJuZWQgaXQgYXQgdGhlIGJyb29rIEtpZHJvbiwgYW5kIHN0YW1wZWQgaXQgc21hbGwgdG8gcG93ZGVyLCBhbmQgY2FzdCB0aGUgcG93ZGVyIHRoZXJlb2YgdXBvbiB0aGUgZ3JhdmVzIG9mIHRoZSBjaGlsZHJlbiBvZiB0aGUgcGVvcGxlLgpBbmQgaGUgYnJha2UgZG93biB0aGUgaG91c2VzIG9mIHRoZSBzb2RvbWl0ZXMsIHRoYXQgd2VyZSBieSB0aGUgaG91c2Ugb2YgdGhlIExPUkQsIHdoZXJlIHRoZSB3b21lbiB3b3ZlIGhhbmdpbmdzIGZvciB0aGUgZ3JvdmUuCkFuZCBoZSBicm91Z2h0IGFsbCB0aGUgcHJpZXN0cyBvdXQgb2YgdGhlIGNpdGllcyBvZiBKdWRhaCwgYW5kIGRlZmlsZWQgdGhlIGhpZ2ggcGxhY2VzIHdoZXJlIHRoZSBwcmllc3RzIGhhZCBidXJuZWQgaW5jZW5zZSwgZnJvbSBHZWJhIHRvIEJlZXJzaGViYSwgYW5kIGJyYWtlIGRvd24gdGhlIGhpZ2ggcGxhY2VzIG9mIHRoZSBnYXRlcyB0aGF0IHdlcmUgaW4gdGhlIGVudGVyaW5nIGluIG9mIHRoZSBnYXRlIG9mIEpvc2h1YSB0aGUgZ292ZXJub3Igb2YgdGhlIGNpdHksIHdoaWNoIHdlcmUgb24gYSBtYW4ncyBsZWZ0IGhhbmQgYXQgdGhlIGdhdGUgb2YgdGhlIGNpdHkuCk5ldmVydGhlbGVzcyB0aGUgcHJpZXN0cyBvZiB0aGUgaGlnaCBwbGFjZXMgY2FtZSBub3QgdXAgdG8gdGhlIGFsdGFyIG9mIHRoZSBMT1JEIGluIEplcnVzYWxlbSwgYnV0IHRoZXkgZGlkIGVhdCBvZiB0aGUgdW5sZWF2ZW5lZCBicmVhZCBhbW9uZyB0aGVpciBicmV0aHJlbi4KQW5kIGhlIGRlZmlsZWQgVG9waGV0aCwgd2hpY2ggaXMgaW4gdGhlIHZhbGxleSBvZiB0aGUgY2hpbGRyZW4gb2YgSGlubm9tLCB0aGF0IG5vIG1hbiBtaWdodCBtYWtlIGhpcyBzb24gb3IgaGlzIGRhdWdodGVyIHRvIHBhc3MgdGhyb3VnaCB0aGUgZmlyZSB0byBNb2xlY2guCkFuZCBoZSB0b29rIGF3YXkgdGhlIGhvcnNlcyB0aGF0IHRoZSBraW5ncyBvZiBKdWRhaCBoYWQgZ2l2ZW4gdG8gdGhlIHN1biwgYXQgdGhlIGVudGVyaW5nIGluIG9mIHRoZSBob3VzZSBvZiB0aGUgTE9SRCwgYnkgdGhlIGNoYW1iZXIgb2YgTmF0aGFubWVsZWNoIHRoZSBjaGFtYmVybGFpbiwgd2hpY2ggd2FzIGluIHRoZSBzdWJ1cmJzLCBhbmQgYnVybmVkIHRoZSBjaGFyaW90cyBvZiB0aGUgc3VuIHdpdGggZmlyZS4KQW5kIHRoZSBhbHRhcnMgdGhhdCB3ZXJlIG9uIHRoZSB0b3Agb2YgdGhlIHVwcGVyIGNoYW1iZXIgb2YgQWhheiwgd2hpY2ggdGhlIGtpbmdzIG9mIEp1ZGFoIGhhZCBtYWRlLCBhbmQgdGhlIGFsdGFycyB3aGljaCBNYW5hc3NlaCBoYWQgbWFkZSBpbiB0aGUgdHdvIGNvdXJ0cyBvZiB0aGUgaG91c2Ugb2YgdGhlIExPUkQsIGRpZCB0aGUga2luZyBiZWF0IGRvd24sIGFuZCBicmFrZSB0aGVtIGRvd24gZnJvbSB0aGVuY2UsIGFuZCBjYXN0IHRoZSBkdXN0IG9mIHRoZW0gaW50byB0aGUgYnJvb2sgS2lkcm9uLgpBbmQgdGhlIGhpZ2ggcGxhY2VzIHRoYXQgd2VyZSBiZWZvcmUgSmVydXNhbGVtLCB3aGljaCB3ZXJlIG9uIHRoZSByaWdodCBoYW5kIG9mIHRoZSBtb3VudCBvZiBjb3JydXB0aW9uLCB3aGljaCBTb2xvbW9uIHRoZSBraW5nIG9mIElzcmFlbCBoYWQgYnVpbGRlZCBmb3IgQXNodG9yZXRoIHRoZSBhYm9taW5hdGlvbiBvZiB0aGUgWmlkb25pYW5zLCBhbmQgZm9yIENoZW1vc2ggdGhlIGFib21pbmF0aW9uIG9mIHRoZSBNb2FiaXRlcywgYW5kIGZvciBNaWxjb20gdGhlIGFib21pbmF0aW9uIG9mIHRoZSBjaGlsZHJlbiBvZiBBbW1vbiwgZGlkIHRoZSBraW5nIGRlZmlsZS4KQW5kIGhlIGJyYWtlIGluIHBpZWNlcyB0aGUgaW1hZ2VzLCBhbmQgY3V0IGRvd24gdGhlIGdyb3ZlcywgYW5kIGZpbGxlZCB0aGVpciBwbGFjZXMgd2l0aCB0aGUgYm9uZXMgb2YgbWVuLgpNb3Jlb3ZlciB0aGUgYWx0YXIgdGhhdCB3YXMgYXQgQmV0aGVsLCBhbmQgdGhlIGhpZ2ggcGxhY2Ugd2hpY2ggSmVyb2JvYW0gdGhlIHNvbiBvZiBOZWJhdCwgd2hvIG1hZGUgSXNyYWVsIHRvIHNpbiwgaGFkIG1hZGUsIGJvdGggdGhhdCBhbHRhciBhbmQgdGhlIGhpZ2ggcGxhY2UgaGUgYnJha2UgZG93biwgYW5kIGJ1cm5lZCB0aGUgaGlnaCBwbGFjZSwgYW5kIHN0YW1wZWQgaXQgc21hbGwgdG8gcG93ZGVyLCBhbmQgYnVybmVkIHRoZSBncm92ZS4KQW5kIGFzIEpvc2lhaCB0dXJuZWQgaGltc2VsZiwgaGUgc3BpZWQgdGhlIHNlcHVsY2hyZXMgdGhhdCB3ZXJlIHRoZXJlIGluIHRoZSBtb3VudCwgYW5kIHNlbnQsIGFuZCB0b29rIHRoZSBib25lcyBvdXQgb2YgdGhlIHNlcHVsY2hyZXMsIGFuZCBidXJuZWQgdGhlbSB1cG9uIHRoZSBhbHRhciwgYW5kIHBvbGx1dGVkIGl0LCBhY2NvcmRpbmcgdG8gdGhlIHdvcmQgb2YgdGhlIExPUkQgd2hpY2ggdGhlIG1hbiBvZiBHb2QgcHJvY2xhaW1lZCwgd2hvIHByb2NsYWltZWQgdGhlc2Ugd29yZHMuClRoZW4gaGUgc2FpZCwgV2hhdCB0aXRsZSBpcyB0aGF0IHRoYXQgSSBzZWU/IEFuZCB0aGUgbWVuIG9mIHRoZSBjaXR5IHRvbGQgaGltLCBJdCBpcyB0aGUgc2VwdWxjaHJlIG9mIHRoZSBtYW4gb2YgR29kLCB3aGljaCBjYW1lIGZyb20gSnVkYWgsIGFuZCBwcm9jbGFpbWVkIHRoZXNlIHRoaW5ncyB0aGF0IHRob3UgaGFzdCBkb25lIGFnYWluc3QgdGhlIGFsdGFyIG9mIEJldGhlbC4KQW5kIGhlIHNhaWQsIExldCBoaW0gYWxvbmU7IGxldCBubyBtYW4gbW92ZSBoaXMgYm9uZXMuIFNvIHRoZXkgbGV0IGhpcyBib25lcyBhbG9uZSwgd2l0aCB0aGUgYm9uZXMgb2YgdGhlIHByb3BoZXQgdGhhdCBjYW1lIG91dCBvZiBTYW1hcmlhLgpBbmQgYWxsIHRoZSBob3VzZXMgYWxzbyBvZiB0aGUgaGlnaCBwbGFjZXMgdGhhdCB3ZXJlIGluIHRoZSBjaXRpZXMgb2YgU2FtYXJpYSwgd2hpY2ggdGhlIGtpbmdzIG9mIElzcmFlbCBoYWQgbWFkZSB0byBwcm92b2tlIHRoZSBMb3JkIHRvIGFuZ2VyLCBKb3NpYWggdG9vayBhd2F5LCBhbmQgZGlkIHRvIHRoZW0gYWNjb3JkaW5nIHRvIGFsbCB0aGUgYWN0cyB0aGF0IGhlIGhhZCBkb25lIGluIEJldGhlbC4KQW5kIGhlIHNsZXcgYWxsIHRoZSBwcmllc3RzIG9mIHRoZSBoaWdoIHBsYWNlcyB0aGF0IHdlcmUgdGhlcmUgdXBvbiB0aGUgYWx0YXJzLCBhbmQgYnVybmVkIG1lbidzIGJvbmVzIHVwb24gdGhlbSwgYW5kIHJldHVybmVkIHRvIEplcnVzYWxlbS4KQW5kIHRoZSBraW5nIGNvbW1hbmRlZCBhbGwgdGhlIHBlb3BsZSwgc2F5aW5nLCBLZWVwIHRoZSBwYXNzb3ZlciB1bnRvIHRoZSBMT1JEIHlvdXIgR29kLCBhcyBpdCBpcyB3cml0dGVuIGluIHRoZSBib29rIG9mIHRoaXMgY292ZW5hbnQuClN1cmVseSB0aGVyZSB3YXMgbm90IGhvbGRlbiBzdWNoIGEgcGFzc292ZXIgZnJvbSB0aGUgZGF5cyBvZiB0aGUganVkZ2VzIHRoYXQganVkZ2VkIElzcmFlbCwgbm9yIGluIGFsbCB0aGUgZGF5cyBvZiB0aGUga2luZ3Mgb2YgSXNyYWVsLCBub3Igb2YgdGhlIGtpbmdzIG9mIEp1ZGFoOwpCdXQgaW4gdGhlIGVpZ2h0ZWVudGggeWVhciBvZiBraW5nIEpvc2lhaCwgd2hlcmVpbiB0aGlzIHBhc3NvdmVyIHdhcyBob2xkZW4gdG8gdGhlIExPUkQgaW4gSmVydXNhbGVtLgpNb3Jlb3ZlciB0aGUgd29ya2VycyB3aXRoIGZhbWlsaWFyIHNwaXJpdHMsIGFuZCB0aGUgd2l6YXJkcywgYW5kIHRoZSBpbWFnZXMsIGFuZCB0aGUgaWRvbHMsIGFuZCBhbGwgdGhlIGFib21pbmF0aW9ucyB0aGF0IHdlcmUgc3BpZWQgaW4gdGhlIGxhbmQgb2YgSnVkYWggYW5kIGluIEplcnVzYWxlbSwgZGlkIEpvc2lhaCBwdXQgYXdheSwgdGhhdCBoZSBtaWdodCBwZXJmb3JtIHRoZSB3b3JkcyBvZiB0aGUgbGF3IHdoaWNoIHdlcmUgd3JpdHRlbiBpbiB0aGUgYm9vayB0aGF0IEhpbGtpYWggdGhlIHByaWVzdCBmb3VuZCBpbiB0aGUgaG91c2Ugb2YgdGhlIExPUkQuCkFuZCBsaWtlIHVudG8gaGltIHdhcyB0aGVyZSBubyBraW5nIGJlZm9yZSBoaW0sIHRoYXQgdHVybmVkIHRvIHRoZSBMT1JEIHdpdGggYWxsIGhpcyBoZWFydCwgYW5kIHdpdGggYWxsIGhpcyBzb3VsLCBhbmQgd2l0aCBhbGwgaGlzIG1pZ2h0LCBhY2NvcmRpbmcgdG8gYWxsIHRoZSBsYXcgb2YgTW9zZXM7IG5laXRoZXIgYWZ0ZXIgaGltIGFyb3NlIHRoZXJlIGFueSBsaWtlIGhpbS4KTm90d2l0aHN0YW5kaW5nIHRoZSBMT1JEIHR1cm5lZCBub3QgZnJvbSB0aGUgZmllcmNlbmVzcyBvZiBoaXMgZ3JlYXQgd3JhdGgsIHdoZXJld2l0aCBoaXMgYW5nZXIgd2FzIGtpbmRsZWQgYWdhaW5zdCBKdWRhaCwgYmVjYXVzZSBvZiBhbGwgdGhlIHByb3ZvY2F0aW9ucyB0aGF0IE1hbmFzc2VoIGhhZCBwcm92b2tlZCBoaW0gd2l0aGFsLgpBbmQgdGhlIExPUkQgc2FpZCwgSSB3aWxsIHJlbW92ZSBKdWRhaCBhbHNvIG91dCBvZiBteSBzaWdodCwgYXMgSSBoYXZlIHJlbW92ZWQgSXNyYWVsLCBhbmQgd2lsbCBjYXN0IG9mZiB0aGlzIGNpdHkgSmVydXNhbGVtIHdoaWNoIEkgaGF2ZSBjaG9zZW4sIGFuZCB0aGUgaG91c2Ugb2Ygd2hpY2ggSSBzYWlkLCBNeSBuYW1lIHNoYWxsIGJlIHRoZXJlLgpOb3cgdGhlIHJlc3Qgb2YgdGhlIGFjdHMgb2YgSm9zaWFoLCBhbmQgYWxsIHRoYXQgaGUgZGlkLCBhcmUgdGhleSBub3Qgd3JpdHRlbiBpbiB0aGUgYm9vayBvZiB0aGUgY2hyb25pY2xlcyBvZiB0aGUga2luZ3Mgb2YgSnVkYWg/CkluIGhpcyBkYXlzIFBoYXJhb2huZWNob2gga2luZyBvZiBFZ3lwdCB3ZW50IHVwIGFnYWluc3QgdGhlIGtpbmcgb2YgQXNzeXJpYSB0byB0aGUgcml2ZXIgRXVwaHJhdGVzOiBhbmQga2luZyBKb3NpYWggd2VudCBhZ2FpbnN0IGhpbTsgYW5kIGhlIHNsZXcgaGltIGF0IE1lZ2lkZG8sIHdoZW4gaGUgaGFkIHNlZW4gaGltLgpBbmQgaGlzIHNlcnZhbnRzIGNhcnJpZWQgaGltIGluIGEgY2hhcmlvdCBkZWFkIGZyb20gTWVnaWRkbywgYW5kIGJyb3VnaHQgaGltIHRvIEplcnVzYWxlbSwgYW5kIGJ1cmllZCBoaW0gaW4gaGlzIG93biBzZXB1bGNocmUuIEFuZCB0aGUgcGVvcGxlIG9mIHRoZSBsYW5kIHRvb2sgSmVob2FoYXogdGhlIHNvbiBvZiBKb3NpYWgsIGFuZCBhbm9pbnRlZCBoaW0sIGFuZCBtYWRlIGhpbSBraW5nIGluIGhpcyBmYXRoZXIncyBzdGVhZC4KSmVob2FoYXogd2FzIHR3ZW50eSBhbmQgdGhyZWUgeWVhcnMgb2xkIHdoZW4gaGUgYmVnYW4gdG8gcmVpZ247IGFuZCBoZSByZWlnbmVkIHRocmVlIG1vbnRocyBpbiBKZXJ1c2FsZW0uIEFuZCBoaXMgbW90aGVyJ3MgbmFtZSB3YXMgSGFtdXRhbCwgdGhlIGRhdWdodGVyIG9mIEplcmVtaWFoIG9mIExpYm5haC4KQW5kIGhlIGRpZCB0aGF0IHdoaWNoIHdhcyBldmlsIGluIHRoZSBzaWdodCBvZiB0aGUgTE9SRCwgYWNjb3JkaW5nIHRvIGFsbCB0aGF0IGhpcyBmYXRoZXJzIGhhZCBkb25lLgpBbmQgUGhhcmFvaG5lY2hvaCBwdXQgaGltIGluIGJhbmRzIGF0IFJpYmxhaCBpbiB0aGUgbGFuZCBvZiBIYW1hdGgsIHRoYXQgaGUgbWlnaHQgbm90IHJlaWduIGluIEplcnVzYWxlbTsgYW5kIHB1dCB0aGUgbGFuZCB0byBhIHRyaWJ1dGUgb2YgYW4gaHVuZHJlZCB0YWxlbnRzIG9mIHNpbHZlciwgYW5kIGEgdGFsZW50IG9mIGdvbGQuCkFuZCBQaGFyYW9obmVjaG9oIG1hZGUgRWxpYWtpbSB0aGUgc29uIG9mIEpvc2lhaCBraW5nIGluIHRoZSByb29tIG9mIEpvc2lhaCBoaXMgZmF0aGVyLCBhbmQgdHVybmVkIGhpcyBuYW1lIHRvIEplaG9pYWtpbSwgYW5kIHRvb2sgSmVob2FoYXogYXdheTogYW5kIGhlIGNhbWUgdG8gRWd5cHQsIGFuZCBkaWVkIHRoZXJlLgpBbmQgSmVob2lha2ltIGdhdmUgdGhlIHNpbHZlciBhbmQgdGhlIGdvbGQgdG8gUGhhcmFvaDsgYnV0IGhlIHRheGVkIHRoZSBsYW5kIHRvIGdpdmUgdGhlIG1vbmV5IGFjY29yZGluZyB0byB0aGUgY29tbWFuZG1lbnQgb2YgUGhhcmFvaDogaGUgZXhhY3RlZCB0aGUgc2lsdmVyIGFuZCB0aGUgZ29sZCBvZiB0aGUgcGVvcGxlIG9mIHRoZSBsYW5kLCBvZiBldmVyeSBvbmUgYWNjb3JkaW5nIHRvIGhpcyB0YXhhdGlvbiwgdG8gZ2l2ZSBpdCB1bnRvIFBoYXJhb2huZWNob2guCkplaG9pYWtpbSB3YXMgdHdlbnR5IGFuZCBmaXZlIHllYXJzIG9sZCB3aGVuIGhlIGJlZ2FuIHRvIHJlaWduOyBhbmQgaGUgcmVpZ25lZCBlbGV2ZW4geWVhcnMgaW4gSmVydXNhbGVtLiBBbmQgaGlzIG1vdGhlcidzIG5hbWUgd2FzIFplYnVkYWgsIHRoZSBkYXVnaHRlciBvZiBQZWRhaWFoIG9mIFJ1bWFoLgpBbmQgaGUgZGlkIHRoYXQgd2hpY2ggd2FzIGV2aWwgaW4gdGhlIHNpZ2h0IG9mIHRoZSBMT1JELCBhY2NvcmRpbmcgdG8gYWxsIHRoYXQgaGlzIGZhdGhlcnMgaGFkIGRvbmUuCkluIGhpcyBkYXlzIE5lYnVjaGFkbmV6emFyIGtpbmcgb2YgQmFieWxvbiBjYW1lIHVwLCBhbmQgSmVob2lha2ltIGJlY2FtZSBoaXMgc2VydmFudCB0aHJlZSB5ZWFyczogdGhlbiBoZSB0dXJuZWQgYW5kIHJlYmVsbGVkIGFnYWluc3QgaGltLgpBbmQgdGhlIExPUkQgc2VudCBhZ2FpbnN0IGhpbSBiYW5kcyBvZiB0aGUgQ2hhbGRlZXMsIGFuZCBiYW5kcyBvZiB0aGUgU3lyaWFucywgYW5kIGJhbmRzIG9mIHRoZSBNb2FiaXRlcywgYW5kIGJhbmRzIG9mIHRoZSBjaGlsZHJlbiBvZiBBbW1vbiwgYW5kIHNlbnQgdGhlbSBhZ2FpbnN0IEp1ZGFoIHRvIGRlc3Ryb3kgaXQsIGFjY29yZGluZyB0byB0aGUgd29yZCBvZiB0aGUgTE9SRCwgd2hpY2ggaGUgc3Bha2UgYnkgaGlzIHNlcnZhbnRzIHRoZSBwcm9waGV0cy4KU3VyZWx5IGF0IHRoZSBjb21tYW5kbWVudCBvZiB0aGUgTE9SRCBjYW1lIHRoaXMgdXBvbiBKdWRhaCwgdG8gcmVtb3ZlIHRoZW0gb3V0IG9mIGhpcyBzaWdodCwgZm9yIHRoZSBzaW5zIG9mIE1hbmFzc2VoLCBhY2NvcmRpbmcgdG8gYWxsIHRoYXQgaGUgZGlkOwpBbmQgYWxzbyBmb3IgdGhlIGlubm9jZW50IGJsb29kIHRoYXQgaGUgc2hlZDogZm9yIGhlIGZpbGxlZCBKZXJ1c2FsZW0gd2l0aCBpbm5vY2VudCBibG9vZDsgd2hpY2ggdGhlIExPUkQgd291bGQgbm90IHBhcmRvbi4KTm93IHRoZSByZXN0IG9mIHRoZSBhY3RzIG9mIEplaG9pYWtpbSwgYW5kIGFsbCB0aGF0IGhlIGRpZCwgYXJlIHRoZXkgbm90IHdyaXR0ZW4gaW4gdGhlIGJvb2sgb2YgdGhlIGNocm9uaWNsZXMgb2YgdGhlIGtpbmdzIG9mIEp1ZGFoPwpTbyBKZWhvaWFraW0gc2xlcHQgd2l0aCBoaXMgZmF0aGVyczogYW5kIEplaG9pYWNoaW4gaGlzIHNvbiByZWlnbmVkIGluIGhpcyBzdGVhZC4KQW5kIHRoZSBraW5nIG9mIEVneXB0IGNhbWUgbm90IGFnYWluIGFueSBtb3JlIG91dCBvZiBoaXMgbGFuZDogZm9yIHRoZSBraW5nIG9mIEJhYnlsb24gaGFkIHRha2VuIGZyb20gdGhlIHJpdmVyIG9mIEVneXB0IHVudG8gdGhlIHJpdmVyIEV1cGhyYXRlcyBhbGwgdGhhdCBwZXJ0YWluZWQgdG8gdGhlIGtpbmcgb2YgRWd5cHQuCkplaG9pYWNoaW4gd2FzIGVpZ2h0ZWVuIHllYXJzIG9sZCB3aGVuIGhlIGJlZ2FuIHRvIHJlaWduLCBhbmQgaGUgcmVpZ25lZCBpbiBKZXJ1c2FsZW0gdGhyZWUgbW9udGhzLiBBbmQgaGlzIG1vdGhlcidzIG5hbWUgd2FzIE5laHVzaHRhLCB0aGUgZGF1Z2h0ZXIgb2YgRWxuYXRoYW4gb2YgSmVydXNhbGVtLgpBbmQgaGUgZGlkIHRoYXQgd2hpY2ggd2FzIGV2aWwgaW4gdGhlIHNpZ2h0IG9mIHRoZSBMT1JELCBhY2NvcmRpbmcgdG8gYWxsIHRoYXQgaGlzIGZhdGhlciBoYWQgZG9uZS4KQXQgdGhhdCB0aW1lIHRoZSBzZXJ2YW50cyBvZiBOZWJ1Y2hhZG5lenphciBraW5nIG9mIEJhYnlsb24gY2FtZSB1cCBhZ2FpbnN0IEplcnVzYWxlbSwgYW5kIHRoZSBjaXR5IHdhcyBiZXNpZWdlZC4KQW5kIE5lYnVjaGFkbmV6emFyIGtpbmcgb2YgQmFieWxvbiBjYW1lIGFnYWluc3QgdGhlIGNpdHksIGFuZCBoaXMgc2VydmFudHMgZGlkIGJlc2llZ2UgaXQuCkFuZCBKZWhvaWFjaGluIHRoZSBraW5nIG9mIEp1ZGFoIHdlbnQgb3V0IHRvIHRoZSBraW5nIG9mIEJhYnlsb24sIGhlLCBhbmQgaGlzIG1vdGhlciwgYW5kIGhpcyBzZXJ2YW50cywgYW5kIGhpcyBwcmluY2VzLCBhbmQgaGlzIG9mZmljZXJzOiBhbmQgdGhlIGtpbmcgb2YgQmFieWxvbiB0b29rIGhpbSBpbiB0aGUgZWlnaHRoIHllYXIgb2YgaGlzIHJlaWduLgpBbmQgaGUgY2FycmllZCBvdXQgdGhlbmNlIGFsbCB0aGUgdHJlYXN1cmVzIG9mIHRoZSBob3VzZSBvZiB0aGUgTE9SRCwgYW5kIHRoZSB0cmVhc3VyZXMgb2YgdGhlIGtpbmcncyBob3VzZSwgYW5kIGN1dCBpbiBwaWVjZXMgYWxsIHRoZSB2ZXNzZWxzIG9mIGdvbGQgd2hpY2ggU29sb21vbiBraW5nIG9mIElzcmFlbCBoYWQgbWFkZSBpbiB0aGUgdGVtcGxlIG9mIHRoZSBMT1JELCBhcyB0aGUgTE9SRCBoYWQgc2FpZC4KQW5kIGhlIGNhcnJpZWQgYXdheSBhbGwgSmVydXNhbGVtLCBhbmQgYWxsIHRoZSBwcmluY2VzLCBhbmQgYWxsIHRoZSBtaWdodHkgbWVuIG9mIHZhbG91ciwgZXZlbiB0ZW4gdGhvdXNhbmQgY2FwdGl2ZXMsIGFuZCBhbGwgdGhlIGNyYWZ0c21lbiBhbmQgc21pdGhzOiBub25lIHJlbWFpbmVkLCBzYXZlIHRoZSBwb29yZXN0IHNvcnQgb2YgdGhlIHBlb3BsZSBvZiB0aGUgbGFuZC4KQW5kIGhlIGNhcnJpZWQgYXdheSBKZWhvaWFjaGluIHRvIEJhYnlsb24sIGFuZCB0aGUga2luZydzIG1vdGhlciwgYW5kIHRoZSBraW5nJ3Mgd2l2ZXMsIGFuZCBoaXMgb2ZmaWNlcnMsIGFuZCB0aGUgbWlnaHR5IG9mIHRoZSBsYW5kLCB0aG9zZSBjYXJyaWVkIGhlIGludG8gY2FwdGl2aXR5IGZyb20gSmVydXNhbGVtIHRvIEJhYnlsb24uCkFuZCBhbGwgdGhlIG1lbiBvZiBtaWdodCwgZXZlbiBzZXZlbiB0aG91c2FuZCwgYW5kIGNyYWZ0c21lbiBhbmQgc21pdGhzIGEgdGhvdXNhbmQsIGFsbCB0aGF0IHdlcmUgc3Ryb25nIGFuZCBhcHQgZm9yIHdhciwgZXZlbiB0aGVtIHRoZSBraW5nIG9mIEJhYnlsb24gYnJvdWdodCBjYXB0aXZlIHRvIEJhYnlsb24uCkFuZCB0aGUga2luZyBvZiBCYWJ5bG9uIG1hZGUgTWF0dGFuaWFoIGhpcyBmYXRoZXIncyBicm90aGVyIGtpbmcgaW4gaGlzIHN0ZWFkLCBhbmQgY2hhbmdlZCBoaXMgbmFtZSB0byBaZWRla2lhaC4KWmVkZWtpYWggd2FzIHR3ZW50eSBhbmQgb25lIHllYXJzIG9sZCB3aGVuIGhlIGJlZ2FuIHRvIHJlaWduLCBhbmQgaGUgcmVpZ25lZCBlbGV2ZW4geWVhcnMgaW4gSmVydXNhbGVtLiBBbmQgaGlzIG1vdGhlcidzIG5hbWUgd2FzIEhhbXV0YWwsIHRoZSBkYXVnaHRlciBvZiBKZXJlbWlhaCBvZiBMaWJuYWguCkFuZCBoZSBkaWQgdGhhdCB3aGljaCB3YXMgZXZpbCBpbiB0aGUgc2lnaHQgb2YgdGhlIExPUkQsIGFjY29yZGluZyB0byBhbGwgdGhhdCBKZWhvaWFraW0gaGFkIGRvbmUuCkZvciB0aHJvdWdoIHRoZSBhbmdlciBvZiB0aGUgTE9SRCBpdCBjYW1lIHRvIHBhc3MgaW4gSmVydXNhbGVtIGFuZCBKdWRhaCwgdW50aWwgaGUgaGFkIGNhc3QgdGhlbSBvdXQgZnJvbSBoaXMgcHJlc2VuY2UsIHRoYXQgWmVkZWtpYWggcmViZWxsZWQgYWdhaW5zdCB0aGUga2luZyBvZiBCYWJ5bG9uLgpBbmQgaXQgY2FtZSB0byBwYXNzIGluIHRoZSBuaW50aCB5ZWFyIG9mIGhpcyByZWlnbiwgaW4gdGhlIHRlbnRoIG1vbnRoLCBpbiB0aGUgdGVudGggZGF5IG9mIHRoZSBtb250aCwgdGhhdCBOZWJ1Y2hhZG5lenphciBraW5nIG9mIEJhYnlsb24gY2FtZSwgaGUsIGFuZCBhbGwgaGlzIGhvc3QsIGFnYWluc3QgSmVydXNhbGVtLCBhbmQgcGl0Y2hlZCBhZ2FpbnN0IGl0OyBhbmQgdGhleSBidWlsdCBmb3J0cyBhZ2FpbnN0IGl0IHJvdW5kIGFib3V0LgpBbmQgdGhlIGNpdHkgd2FzIGJlc2llZ2VkIHVudG8gdGhlIGVsZXZlbnRoIHllYXIgb2Yga2luZyBaZWRla2lhaC4KQW5kIG9uIHRoZSBuaW50aCBkYXkgb2YgdGhlIGZvdXJ0aCBtb250aCB0aGUgZmFtaW5lIHByZXZhaWxlZCBpbiB0aGUgY2l0eSwgYW5kIHRoZXJlIHdhcyBubyBicmVhZCBmb3IgdGhlIHBlb3BsZSBvZiB0aGUgbGFuZC4KQW5kIHRoZSBjaXR5IHdhcyBicm9rZW4gdXAsIGFuZCBhbGwgdGhlIG1lbiBvZiB3YXIgZmxlZCBieSBuaWdodCBieSB0aGUgd2F5IG9mIHRoZSBnYXRlIGJldHdlZW4gdHdvIHdhbGxzLCB3aGljaCBpcyBieSB0aGUga2luZydzIGdhcmRlbjogKG5vdyB0aGUgQ2hhbGRlZXMgd2VyZSBhZ2FpbnN0IHRoZSBjaXR5IHJvdW5kIGFib3V0OikgYW5kIHRoZSBraW5nIHdlbnQgdGhlIHdheSB0b3dhcmQgdGhlIHBsYWluLgpBbmQgdGhlIGFybXkgb2YgdGhlIENoYWxkZWVzIHB1cnN1ZWQgYWZ0ZXIgdGhlIGtpbmcsIGFuZCBvdmVydG9vayBoaW0gaW4gdGhlIHBsYWlucyBvZiBKZXJpY2hvOiBhbmQgYWxsIGhpcyBhcm15IHdlcmUgc2NhdHRlcmVkIGZyb20gaGltLgpTbyB0aGV5IHRvb2sgdGhlIGtpbmcsIGFuZCBicm91Z2h0IGhpbSB1cCB0byB0aGUga2luZyBvZiBCYWJ5bG9uIHRvIFJpYmxhaDsgYW5kIHRoZXkgZ2F2ZSBqdWRnbWVudCB1cG9uIGhpbS4KQW5kIHRoZXkgc2xldyB0aGUgc29ucyBvZiBaZWRla2lhaCBiZWZvcmUgaGlzIGV5ZXMsIGFuZCBwdXQgb3V0IHRoZSBleWVzIG9mIFplZGVraWFoLCBhbmQgYm91bmQgaGltIHdpdGggZmV0dGVycyBvZiBicmFzcywgYW5kIGNhcnJpZWQgaGltIHRvIEJhYnlsb24uCkFuZCBpbiB0aGUgZmlmdGggbW9udGgsIG9uIHRoZSBzZXZlbnRoIGRheSBvZiB0aGUgbW9udGgsIHdoaWNoIGlzIHRoZSBuaW5ldGVlbnRoIHllYXIgb2Yga2luZyBOZWJ1Y2hhZG5lenphciBraW5nIG9mIEJhYnlsb24sIGNhbWUgTmVidXphcmFkYW4sIGNhcHRhaW4gb2YgdGhlIGd1YXJkLCBhIHNlcnZhbnQgb2YgdGhlIGtpbmcgb2YgQmFieWxvbiwgdW50byBKZXJ1c2FsZW06CkFuZCBoZSBidXJudCB0aGUgaG91c2Ugb2YgdGhlIExPUkQsIGFuZCB0aGUga2luZydzIGhvdXNlLCBhbmQgYWxsIHRoZSBob3VzZXMgb2YgSmVydXNhbGVtLCBhbmQgZXZlcnkgZ3JlYXQgbWFuJ3MgaG91c2UgYnVybnQgaGUgd2l0aCBmaXJlLgpBbmQgYWxsIHRoZSBhcm15IG9mIHRoZSBDaGFsZGVlcywgdGhhdCB3ZXJlIHdpdGggdGhlIGNhcHRhaW4gb2YgdGhlIGd1YXJkLCBicmFrZSBkb3duIHRoZSB3YWxscyBvZiBKZXJ1c2FsZW0gcm91bmQgYWJvdXQuCk5vdyB0aGUgcmVzdCBvZiB0aGUgcGVvcGxlIHRoYXQgd2VyZSBsZWZ0IGluIHRoZSBjaXR5LCBhbmQgdGhlIGZ1Z2l0aXZlcyB0aGF0IGZlbGwgYXdheSB0byB0aGUga2luZyBvZiBCYWJ5bG9uLCB3aXRoIHRoZSByZW1uYW50IG9mIHRoZSBtdWx0aXR1ZGUsIGRpZCBOZWJ1emFyYWRhbiB0aGUgY2FwdGFpbiBvZiB0aGUgZ3VhcmQgY2FycnkgYXdheS4KQnV0IHRoZSBjYXB0YWluIG9mIHRoZSBndWFyZCBsZWZ0IG9mIHRoZSBkb29yIG9mIHRoZSBwb29yIG9mIHRoZSBsYW5kIHRvIGJlIHZpbmVkcmVzc2VycyBhbmQgaHVzYmFuZG1lbi4KQW5kIHRoZSBwaWxsYXJzIG9mIGJyYXNzIHRoYXQgd2VyZSBpbiB0aGUgaG91c2Ugb2YgdGhlIExPUkQsIGFuZCB0aGUgYmFzZXMsIGFuZCB0aGUgYnJhc2VuIHNlYSB0aGF0IHdhcyBpbiB0aGUgaG91c2Ugb2YgdGhlIExPUkQsIGRpZCB0aGUgQ2hhbGRlZXMgYnJlYWsgaW4gcGllY2VzLCBhbmQgY2FycmllZCB0aGUgYnJhc3Mgb2YgdGhlbSB0byBCYWJ5bG9uLgpBbmQgdGhlIHBvdHMsIGFuZCB0aGUgc2hvdmVscywgYW5kIHRoZSBzbnVmZmVycywgYW5kIHRoZSBzcG9vbnMsIGFuZCBhbGwgdGhlIHZlc3NlbHMgb2YgYnJhc3Mgd2hlcmV3aXRoIHRoZXkgbWluaXN0ZXJlZCwgdG9vayB0aGV5IGF3YXkuCkFuZCB0aGUgZmlyZXBhbnMsIGFuZCB0aGUgYm93bHMsIGFuZCBzdWNoIHRoaW5ncyBhcyB3ZXJlIG9mIGdvbGQsIGluIGdvbGQsIGFuZCBvZiBzaWx2ZXIsIGluIHNpbHZlciwgdGhlIGNhcHRhaW4gb2YgdGhlIGd1YXJkIHRvb2sgYXdheS4KVGhlIHR3byBwaWxsYXJzLCBvbmUgc2VhLCBhbmQgdGhlIGJhc2VzIHdoaWNoIFNvbG9tb24gaGFkIG1hZGUgZm9yIHRoZSBob3VzZSBvZiB0aGUgTE9SRDsgdGhlIGJyYXNzIG9mIGFsbCB0aGVzZSB2ZXNzZWxzIHdhcyB3aXRob3V0IHdlaWdodC4KVGhlIGhlaWdodCBvZiB0aGUgb25lIHBpbGxhciB3YXMgZWlnaHRlZW4gY3ViaXRzLCBhbmQgdGhlIGNoYXBpdGVyIHVwb24gaXQgd2FzIGJyYXNzOiBhbmQgdGhlIGhlaWdodCBvZiB0aGUgY2hhcGl0ZXIgdGhyZWUgY3ViaXRzOyBhbmQgdGhlIHdyZWF0aGVuIHdvcmssIGFuZCBwb21lZ3JhbmF0ZXMgdXBvbiB0aGUgY2hhcGl0ZXIgcm91bmQgYWJvdXQsIGFsbCBvZiBicmFzczogYW5kIGxpa2UgdW50byB0aGVzZSBoYWQgdGhlIHNlY29uZCBwaWxsYXIgd2l0aCB3cmVhdGhlbiB3b3JrLgpBbmQgdGhlIGNhcHRhaW4gb2YgdGhlIGd1YXJkIHRvb2sgU2VyYWlhaCB0aGUgY2hpZWYgcHJpZXN0LCBhbmQgWmVwaGFuaWFoIHRoZSBzZWNvbmQgcHJpZXN0LCBhbmQgdGhlIHRocmVlIGtlZXBlcnMgb2YgdGhlIGRvb3I6CkFuZCBvdXQgb2YgdGhlIGNpdHkgaGUgdG9vayBhbiBvZmZpY2VyIHRoYXQgd2FzIHNldCBvdmVyIHRoZSBtZW4gb2Ygd2FyLCBhbmQgZml2ZSBtZW4gb2YgdGhlbSB0aGF0IHdlcmUgaW4gdGhlIGtpbmcncyBwcmVzZW5jZSwgd2hpY2ggd2VyZSBmb3VuZCBpbiB0aGUgY2l0eSwgYW5kIHRoZSBwcmluY2lwYWwgc2NyaWJlIG9mIHRoZSBob3N0LCB3aGljaCBtdXN0ZXJlZCB0aGUgcGVvcGxlIG9mIHRoZSBsYW5kLCBhbmQgdGhyZWVzY29yZSBtZW4gb2YgdGhlIHBlb3BsZSBvZiB0aGUgbGFuZCB0aGF0IHdlcmUgZm91bmQgaW4gdGhlIGNpdHk6CkFuZCBOZWJ1emFyYWRhbiBjYXB0YWluIG9mIHRoZSBndWFyZCB0b29rIHRoZXNlLCBhbmQgYnJvdWdodCB0aGVtIHRvIHRoZSBraW5nIG9mIEJhYnlsb24gdG8gUmlibGFoOgpBbmQgdGhlIGtpbmcgb2YgQmFieWxvbiBzbW90ZSB0aGVtLCBhbmQgc2xldyB0aGVtIGF0IFJpYmxhaCBpbiB0aGUgbGFuZCBvZiBIYW1hdGguIFNvIEp1ZGFoIHdhcyBjYXJyaWVkIGF3YXkgb3V0IG9mIHRoZWlyIGxhbmQuCkFuZCBhcyBmb3IgdGhlIHBlb3BsZSB0aGF0IHJlbWFpbmVkIGluIHRoZSBsYW5kIG9mIEp1ZGFoLCB3aG9tIE5lYnVjaGFkbmV6emFyIGtpbmcgb2YgQmFieWxvbiBoYWQgbGVmdCwgZXZlbiBvdmVyIHRoZW0gaGUgbWFkZSBHZWRhbGlhaCB0aGUgc29uIG9mIEFoaWthbSwgdGhlIHNvbiBvZiBTaGFwaGFuLCBydWxlci4KQW5kIHdoZW4gYWxsIHRoZSBjYXB0YWlucyBvZiB0aGUgYXJtaWVzLCB0aGV5IGFuZCB0aGVpciBtZW4sIGhlYXJkIHRoYXQgdGhlIGtpbmcgb2YgQmFieWxvbiBoYWQgbWFkZSBHZWRhbGlhaCBnb3Zlcm5vciwgdGhlcmUgY2FtZSB0byBHZWRhbGlhaCB0byBNaXpwYWgsIGV2ZW4gSXNobWFlbCB0aGUgc29uIG9mIE5ldGhhbmlhaCwgYW5kIEpvaGFuYW4gdGhlIHNvbiBvZiBDYXJlYWgsIGFuZCBTZXJhaWFoIHRoZSBzb24gb2YgVGFuaHVtZXRoIHRoZSBOZXRvcGhhdGhpdGUsIGFuZCBKYWF6YW5pYWggdGhlIHNvbiBvZiBhIE1hYWNoYXRoaXRlLCB0aGV5IGFuZCB0aGVpciBtZW4uCkFuZCBHZWRhbGlhaCBzd2FyZSB0byB0aGVtLCBhbmQgdG8gdGhlaXIgbWVuLCBhbmQgc2FpZCB1bnRvIHRoZW0sIEZlYXIgbm90IHRvIGJlIHRoZSBzZXJ2YW50cyBvZiB0aGUgQ2hhbGRlZXM6IGR3ZWxsIGluIHRoZSBsYW5kLCBhbmQgc2VydmUgdGhlIGtpbmcgb2YgQmFieWxvbjsgYW5kIGl0IHNoYWxsIGJlIHdlbGwgd2l0aCB5b3UuCkJ1dCBpdCBjYW1lIHRvIHBhc3MgaW4gdGhlIHNldmVudGggbW9udGgsIHRoYXQgSXNobWFlbCB0aGUgc29uIG9mIE5ldGhhbmlhaCwgdGhlIHNvbiBvZiBFbGlzaGFtYSwgb2YgdGhlIHNlZWQgcm95YWwsIGNhbWUsIGFuZCB0ZW4gbWVuIHdpdGggaGltLCBhbmQgc21vdGUgR2VkYWxpYWgsIHRoYXQgaGUgZGllZCwgYW5kIHRoZSBKZXdzIGFuZCB0aGUgQ2hhbGRlZXMgdGhhdCB3ZXJlIHdpdGggaGltIGF0IE1penBhaC4KQW5kIGFsbCB0aGUgcGVvcGxlLCBib3RoIHNtYWxsIGFuZCBncmVhdCwgYW5kIHRoZSBjYXB0YWlucyBvZiB0aGUgYXJtaWVzLCBhcm9zZSwgYW5kIGNhbWUgdG8gRWd5cHQ6IGZvciB0aGV5IHdlcmUgYWZyYWlkIG9mIHRoZSBDaGFsZGVlcy4KQW5kIGl0IGNhbWUgdG8gcGFzcyBpbiB0aGUgc2V2ZW4gYW5kIHRoaXJ0aWV0aCB5ZWFyIG9mIHRoZSBjYXB0aXZpdHkgb2YgSmVob2lhY2hpbiBraW5nIG9mIEp1ZGFoLCBpbiB0aGUgdHdlbGZ0aCBtb250aCwgb24gdGhlIHNldmVuIGFuZCB0d2VudGlldGggZGF5IG9mIHRoZSBtb250aCwgdGhhdCBFdmlsbWVyb2RhY2gga2luZyBvZiBCYWJ5bG9uIGluIHRoZSB5ZWFyIHRoYXQgaGUgYmVnYW4gdG8gcmVpZ24gZGlkIGxpZnQgdXAgdGhlIGhlYWQgb2YgSmVob2lhY2hpbiBraW5nIG9mIEp1ZGFoIG91dCBvZiBwcmlzb247CkFuZCBoZSBzcGFrZSBraW5kbHkgdG8gaGltLCBhbmQgc2V0IGhpcyB0aHJvbmUgYWJvdmUgdGhlIHRocm9uZSBvZiB0aGUga2luZ3MgdGhhdCB3ZXJlIHdpdGggaGltIGluIEJhYnlsb247CkFuZCBjaGFuZ2VkIGhpcyBwcmlzb24gZ2FybWVudHM6IGFuZCBoZSBkaWQgZWF0IGJyZWFkIGNvbnRpbnVhbGx5IGJlZm9yZSBoaW0gYWxsIHRoZSBkYXlzIG9mIGhpcyBsaWZlLgpBbmQgaGlzIGFsbG93YW5jZSB3YXMgYSBjb250aW51YWwgYWxsb3dhbmNlIGdpdmVuIGhpbSBvZiB0aGUga2luZywgYSBkYWlseSByYXRlIGZvciBldmVyeSBkYXksIGFsbCB0aGUgZGF5cyBvZiBoaXMgbGlmZS4KQWRhbSwgU2hldGgsIEVub3NoLApLZW5hbiwgTWFoYWxhbGVlbCwgSmVyZWQsCkhlbm9jaCwgTWV0aHVzZWxhaCwgTGFtZWNoLApOb2FoLCBTaGVtLCBIYW0sIGFuZCBKYXBoZXRoLgpUaGUgc29ucyBvZiBKYXBoZXRoOyBHb21lciwgYW5kIE1hZ29nLCBhbmQgTWFkYWksIGFuZCBKYXZhbiwgYW5kIFR1YmFsLCBhbmQgTWVzaGVjaCwgYW5kIFRpcmFzLgpBbmQgdGhlIHNvbnMgb2YgR29tZXI7IEFzaGNoZW5heiwgYW5kIFJpcGhhdGgsIGFuZCBUb2dhcm1haC4KQW5kIHRoZSBzb25zIG9mIEphdmFuOyBFbGlzaGFoLCBhbmQgVGFyc2hpc2gsIEtpdHRpbSwgYW5kIERvZGFuaW0uClRoZSBzb25zIG9mIEhhbTsgQ3VzaCwgYW5kIE1penJhaW0sIFB1dCwgYW5kIENhbmFhbi4KQW5kIHRoZSBzb25zIG9mIEN1c2g7IFNlYmEsIGFuZCBIYXZpbGFoLCBhbmQgU2FidGEsIGFuZCBSYWFtYWgsIGFuZCBTYWJ0ZWNoYS4gQW5kIHRoZSBzb25zIG9mIFJhYW1haDsgU2hlYmEsIGFuZCBEZWRhbi4KQW5kIEN1c2ggYmVnYXQgTmltcm9kOiBoZSBiZWdhbiB0byBiZSBtaWdodHkgdXBvbiB0aGUgZWFydGguCkFuZCBNaXpyYWltIGJlZ2F0IEx1ZGltLCBhbmQgQW5hbWltLCBhbmQgTGVoYWJpbSwgYW5kIE5hcGh0dWhpbSwKQW5kIFBhdGhydXNpbSwgYW5kIENhc2x1aGltLCAob2Ygd2hvbSBjYW1lIHRoZSBQaGlsaXN0aW5lcywpIGFuZCBDYXBodGhvcmltLgpBbmQgQ2FuYWFuIGJlZ2F0IFppZG9uIGhpcyBmaXJzdGJvcm4sIGFuZCBIZXRoLApUaGUgSmVidXNpdGUgYWxzbywgYW5kIHRoZSBBbW9yaXRlLCBhbmQgdGhlIEdpcmdhc2hpdGUsCkFuZCB0aGUgSGl2aXRlLCBhbmQgdGhlIEFya2l0ZSwgYW5kIHRoZSBTaW5pdGUsCkFuZCB0aGUgQXJ2YWRpdGUsIGFuZCB0aGUgWmVtYXJpdGUsIGFuZCB0aGUgSGFtYXRoaXRlLgpUaGUgc29ucyBvZiBTaGVtOyBFbGFtLCBhbmQgQXNzaHVyLCBhbmQgQXJwaGF4YWQsIGFuZCBMdWQsIGFuZCBBcmFtLCBhbmQgVXosIGFuZCBIdWwsIGFuZCBHZXRoZXIsIGFuZCBNZXNoZWNoLgpBbmQgQXJwaGF4YWQgYmVnYXQgU2hlbGFoLCBhbmQgU2hlbGFoIGJlZ2F0IEViZXIuCkFuZCB1bnRvIEViZXIgd2VyZSBib3JuIHR3byBzb25zOiB0aGUgbmFtZSBvZiB0aGUgb25lIHdhcyBQZWxlZzsgYmVjYXVzZSBpbiBoaXMgZGF5cyB0aGUgZWFydGggd2FzIGRpdmlkZWQ6IGFuZCBoaXMgYnJvdGhlcidzIG5hbWUgd2FzIEpva3Rhbi4KQW5kIEpva3RhbiBiZWdhdCBBbG1vZGFkLCBhbmQgU2hlbGVwaCwgYW5kIEhhemFybWF2ZXRoLCBhbmQgSmVyYWgsCkhhZG9yYW0gYWxzbywgYW5kIFV6YWwsIGFuZCBEaWtsYWgsCkFuZCBFYmFsLCBhbmQgQWJpbWFlbCwgYW5kIFNoZWJhLApBbmQgT3BoaXIsIGFuZCBIYXZpbGFoLCBhbmQgSm9iYWIuIEFsbCB0aGVzZSB3ZXJlIHRoZSBzb25zIG9mIEpva3Rhbi4KU2hlbSwgQXJwaGF4YWQsIFNoZWxhaCwKRWJlciwgUGVsZWcsIFJldSwKU2VydWcsIE5haG9yLCBUZXJhaCwKQWJyYW07IHRoZSBzYW1lIGlzIEFicmFoYW0uClRoZSBzb25zIG9mIEFicmFoYW07IElzYWFjLCBhbmQgSXNobWFlbC4KVGhlc2UgYXJlIHRoZWlyIGdlbmVyYXRpb25zOiBUaGUgZmlyc3Rib3JuIG9mIElzaG1hZWwsIE5lYmFpb3RoOyB0aGVuIEtlZGFyLCBhbmQgQWRiZWVsLCBhbmQgTWlic2FtLApNaXNobWEsIGFuZCBEdW1haCwgTWFzc2EsIEhhZGFkLCBhbmQgVGVtYSwKSmV0dXIsIE5hcGhpc2gsIGFuZCBLZWRlbWFoLiBUaGVzZSBhcmUgdGhlIHNvbnMgb2YgSXNobWFlbC4KTm93IHRoZSBzb25zIG9mIEtldHVyYWgsIEFicmFoYW0ncyBjb25jdWJpbmU6IHNoZSBiYXJlIFppbXJhbiwgYW5kIEpva3NoYW4sIGFuZCBNZWRhbiwgYW5kIE1pZGlhbiwgYW5kIElzaGJhaywgYW5kIFNodWFoLiBBbmQgdGhlIHNvbnMgb2YgSm9rc2hhbjsgU2hlYmEsIGFuZCBEZWRhbi4KQW5kIHRoZSBzb25zIG9mIE1pZGlhbjsgRXBoYWgsIGFuZCBFcGhlciwgYW5kIEhlbm9jaCwgYW5kIEFiaWRhLCBhbmQgRWxkYWFoLiBBbGwgdGhlc2UgYXJlIHRoZSBzb25zIG9mIEtldHVyYWguCkFuZCBBYnJhaGFtIGJlZ2F0IElzYWFjLiBUaGUgc29ucyBvZiBJc2FhYzsgRXNhdSBhbmQgSXNyYWVsLgpUaGUgc29ucyBvZiBFc2F1OyBFbGlwaGF6LCBSZXVlbCwgYW5kIEpldXNoLCBhbmQgSmFhbGFtLCBhbmQgS29yYWguClRoZSBzb25zIG9mIEVsaXBoYXo7IFRlbWFuLCBhbmQgT21hciwgWmVwaGksIGFuZCBHYXRhbSwgS2VuYXosIGFuZCBUaW1uYSwgYW5kIEFtYWxlay4KVGhlIHNvbnMgb2YgUmV1ZWw7IE5haGF0aCwgWmVyYWgsIFNoYW1tYWgsIGFuZCBNaXp6YWguCkFuZCB0aGUgc29ucyBvZiBTZWlyOyBMb3RhbiwgYW5kIFNob2JhbCwgYW5kIFppYmVvbiwgYW5kIEFuYWgsIGFuZCBEaXNob24sIGFuZCBFemFyLCBhbmQgRGlzaGFuLgpBbmQgdGhlIHNvbnMgb2YgTG90YW47IEhvcmksIGFuZCBIb21hbTogYW5kIFRpbW5hIHdhcyBMb3RhbidzIHNpc3Rlci4KVGhlIHNvbnMgb2YgU2hvYmFsOyBBbGlhbiwgYW5kIE1hbmFoYXRoLCBhbmQgRWJhbCwgU2hlcGhpLCBhbmQgT25hbS4gYW5kIHRoZSBzb25zIG9mIFppYmVvbjsgQWlhaCwgYW5kIEFuYWguClRoZSBzb25zIG9mIEFuYWg7IERpc2hvbi4gQW5kIHRoZSBzb25zIG9mIERpc2hvbjsgQW1yYW0sIGFuZCBFc2hiYW4sIGFuZCBJdGhyYW4sIGFuZCBDaGVyYW4uClRoZSBzb25zIG9mIEV6ZXI7IEJpbGhhbiwgYW5kIFphdmFuLCBhbmQgSmFrYW4uIFRoZSBzb25zIG9mIERpc2hhbjsgVXosIGFuZCBBcmFuLgpOb3cgdGhlc2UgYXJlIHRoZSBraW5ncyB0aGF0IHJlaWduZWQgaW4gdGhlIGxhbmQgb2YgRWRvbSBiZWZvcmUgYW55IGtpbmcgcmVpZ25lZCBvdmVyIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWw7IEJlbGEgdGhlIHNvbiBvZiBCZW9yOiBhbmQgdGhlIG5hbWUgb2YgaGlzIGNpdHkgd2FzIERpbmhhYmFoLgpBbmQgd2hlbiBCZWxhIHdhcyBkZWFkLCBKb2JhYiB0aGUgc29uIG9mIFplcmFoIG9mIEJvenJhaCByZWlnbmVkIGluIGhpcyBzdGVhZC4KQW5kIHdoZW4gSm9iYWIgd2FzIGRlYWQsIEh1c2hhbSBvZiB0aGUgbGFuZCBvZiB0aGUgVGVtYW5pdGVzIHJlaWduZWQgaW4gaGlzIHN0ZWFkLgpBbmQgd2hlbiBIdXNoYW0gd2FzIGRlYWQsIEhhZGFkIHRoZSBzb24gb2YgQmVkYWQsIHdoaWNoIHNtb3RlIE1pZGlhbiBpbiB0aGUgZmllbGQgb2YgTW9hYiwgcmVpZ25lZCBpbiBoaXMgc3RlYWQ6IGFuZCB0aGUgbmFtZSBvZiBoaXMgY2l0eSB3YXMgQXZpdGguCkFuZCB3aGVuIEhhZGFkIHdhcyBkZWFkLCBTYW1sYWggb2YgTWFzcmVrYWggcmVpZ25lZCBpbiBoaXMgc3RlYWQuCkFuZCB3aGVuIFNhbWxhaCB3YXMgZGVhZCwgU2hhdWwgb2YgUmVob2JvdGggYnkgdGhlIHJpdmVyIHJlaWduZWQgaW4gaGlzIHN0ZWFkLgpBbmQgd2hlbiBTaGF1bCB3YXMgZGVhZCwgQmFhbGhhbmFuIHRoZSBzb24gb2YgQWNoYm9yIHJlaWduZWQgaW4gaGlzIHN0ZWFkLgpBbmQgd2hlbiBCYWFsaGFuYW4gd2FzIGRlYWQsIEhhZGFkIHJlaWduZWQgaW4gaGlzIHN0ZWFkOiBhbmQgdGhlIG5hbWUgb2YgaGlzIGNpdHkgd2FzIFBhaTsgYW5kIGhpcyB3aWZlJ3MgbmFtZSB3YXMgTWVoZXRhYmVsLCB0aGUgZGF1Z2h0ZXIgb2YgTWF0cmVkLCB0aGUgZGF1Z2h0ZXIgb2YgTWV6YWhhYi4KSGFkYWQgZGllZCBhbHNvLiBBbmQgdGhlIGR1a2VzIG9mIEVkb20gd2VyZTsgZHVrZSBUaW1uYWgsIGR1a2UgQWxpYWgsIGR1a2UgSmV0aGV0aCwKRHVrZSBBaG9saWJhbWFoLCBkdWtlIEVsYWgsIGR1a2UgUGlub24sCkR1a2UgS2VuYXosIGR1a2UgVGVtYW4sIGR1a2UgTWliemFyLApEdWtlIE1hZ2RpZWwsIGR1a2UgSXJhbS4gVGhlc2UgYXJlIHRoZSBkdWtlcyBvZiBFZG9tLgpUaGVzZSBhcmUgdGhlIHNvbnMgb2YgSXNyYWVsOyBSZXViZW4sIFNpbWVvbiwgTGV2aSwgYW5kIEp1ZGFoLCBJc3NhY2hhciwgYW5kIFplYnVsdW4sCkRhbiwgSm9zZXBoLCBhbmQgQmVuamFtaW4sIE5hcGh0YWxpLCBHYWQsIGFuZCBBc2hlci4KVGhlIHNvbnMgb2YgSnVkYWg7IEVyLCBhbmQgT25hbiwgYW5kIFNoZWxhaDogd2hpY2ggdGhyZWUgd2VyZSBib3JuIHVudG8gaGltIG9mIHRoZSBkYXVnaHRlciBvZiBTaHVhIHRoZSBDYW5hYW5pdGVzcy4gQW5kIEVyLCB0aGUgZmlyc3Rib3JuIG9mIEp1ZGFoLCB3YXMgZXZpbCBpbiB0aGUgc2lnaHQgb2YgdGhlIExPUkQ7IGFuZCBoZSBzbGV3IGhpbS4KQW5kIFRhbWFyIGhpcyBkYXVnaHRlciBpbiBsYXcgYm9yZSBoaW0gUGhhcmV6IGFuZCBaZXJhaC4gQWxsIHRoZSBzb25zIG9mIEp1ZGFoIHdlcmUgZml2ZS4KVGhlIHNvbnMgb2YgUGhhcmV6OyBIZXpyb24sIGFuZCBIYW11bC4KQW5kIHRoZSBzb25zIG9mIFplcmFoOyBaaW1yaSwgYW5kIEV0aGFuLCBhbmQgSGVtYW4sIGFuZCBDYWxjb2wsIGFuZCBEYXJhOiBmaXZlIG9mIHRoZW0gaW4gYWxsLgpBbmQgdGhlIHNvbnMgb2YgQ2FybWk7IEFjaGFyLCB0aGUgdHJvdWJsZXIgb2YgSXNyYWVsLCB3aG8gdHJhbnNncmVzc2VkIGluIHRoZSB0aGluZyBhY2N1cnNlZC4KQW5kIHRoZSBzb25zIG9mIEV0aGFuOyBBemFyaWFoLgpUaGUgc29ucyBhbHNvIG9mIEhlenJvbiwgdGhhdCB3ZXJlIGJvcm4gdW50byBoaW07IEplcmFobWVlbCwgYW5kIFJhbSwgYW5kIENoZWx1YmFpLgpBbmQgUmFtIGJlZ2F0IEFtbWluYWRhYjsgYW5kIEFtbWluYWRhYiBiZWdhdCBOYWhzaG9uLCBwcmluY2Ugb2YgdGhlIGNoaWxkcmVuIG9mIEp1ZGFoOwpBbmQgTmFoc2hvbiBiZWdhdCBTYWxtYSwgYW5kIFNhbG1hIGJlZ2F0IEJvYXosCkFuZCBCb2F6IGJlZ2F0IE9iZWQsIGFuZCBPYmVkIGJlZ2F0IEplc3NlLApBbmQgSmVzc2UgYmVnYXQgaGlzIGZpcnN0Ym9ybiBFbGlhYiwgYW5kIEFiaW5hZGFiIHRoZSBzZWNvbmQsIGFuZCBTaGltbWEgdGhlIHRoaXJkLApOZXRoYW5lZWwgdGhlIGZvdXJ0aCwgUmFkZGFpIHRoZSBmaWZ0aCwKT3plbSB0aGUgc2l4dGgsIERhdmlkIHRoZSBzZXZlbnRoOgpXaG9zZSBzaXN0ZXJzIHdlcmUgWmVydWlhaCwgYW5kIEFiaWdhaWwuIEFuZCB0aGUgc29ucyBvZiBaZXJ1aWFoOyBBYmlzaGFpLCBhbmQgSm9hYiwgYW5kIEFzYWhlbCwgdGhyZWUuCkFuZCBBYmlnYWlsIGJhcmUgQW1hc2E6IGFuZCB0aGUgZmF0aGVyIG9mIEFtYXNhIHdhcyBKZXRoZXIgdGhlIElzaG1lZWxpdGUuCkFuZCBDYWxlYiB0aGUgc29uIG9mIEhlenJvbiBiZWdhdCBjaGlsZHJlbiBvZiBBenViYWggaGlzIHdpZmUsIGFuZCBvZiBKZXJpb3RoOiBoZXIgc29ucyBhcmUgdGhlc2U7IEplc2hlciwgYW5kIFNob2JhYiwgYW5kIEFyZG9uLgpBbmQgd2hlbiBBenViYWggd2FzIGRlYWQsIENhbGViIHRvb2sgdW50byBoaW0gRXBocmF0aCwgd2hpY2ggYmFyZSBoaW0gSHVyLgpBbmQgSHVyIGJlZ2F0IFVyaSwgYW5kIFVyaSBiZWdhdCBCZXphbGVlbC4KQW5kIGFmdGVyd2FyZCBIZXpyb24gd2VudCBpbiB0byB0aGUgZGF1Z2h0ZXIgb2YgTWFjaGlyIHRoZSBmYXRoZXIgb2YgR2lsZWFkLCB3aG9tIGhlIG1hcnJpZWQgd2hlbiBoZSB3YXMgdGhyZWVzY29yZSB5ZWFycyBvbGQ7IGFuZCBzaGUgYmFyZSBoaW0gU2VndWIuCkFuZCBTZWd1YiBiZWdhdCBKYWlyLCB3aG8gaGFkIHRocmVlIGFuZCB0d2VudHkgY2l0aWVzIGluIHRoZSBsYW5kIG9mIEdpbGVhZC4KQW5kIGhlIHRvb2sgR2VzaHVyLCBhbmQgQXJhbSwgd2l0aCB0aGUgdG93bnMgb2YgSmFpciwgZnJvbSB0aGVtLCB3aXRoIEtlbmF0aCwgYW5kIHRoZSB0b3ducyB0aGVyZW9mLCBldmVuIHRocmVlc2NvcmUgY2l0aWVzLiBBbGwgdGhlc2UgYmVsb25nZWQgdG8gdGhlIHNvbnMgb2YgTWFjaGlyIHRoZSBmYXRoZXIgb2YgR2lsZWFkLgpBbmQgYWZ0ZXIgdGhhdCBIZXpyb24gd2FzIGRlYWQgaW4gQ2FsZWJlcGhyYXRhaCwgdGhlbiBBYmlhaCBIZXpyb24ncyB3aWZlIGJhcmUgaGltIEFzaHVyIHRoZSBmYXRoZXIgb2YgVGVrb2EuCkFuZCB0aGUgc29ucyBvZiBKZXJhaG1lZWwgdGhlIGZpcnN0Ym9ybiBvZiBIZXpyb24gd2VyZSwgUmFtIHRoZSBmaXJzdGJvcm4sIGFuZCBCdW5haCwgYW5kIE9yZW4sIGFuZCBPemVtLCBhbmQgQWhpamFoLgpKZXJhaG1lZWwgaGFkIGFsc28gYW5vdGhlciB3aWZlLCB3aG9zZSBuYW1lIHdhcyBBdGFyYWg7IHNoZSB3YXMgdGhlIG1vdGhlciBvZiBPbmFtLgpBbmQgdGhlIHNvbnMgb2YgUmFtIHRoZSBmaXJzdGJvcm4gb2YgSmVyYWhtZWVsIHdlcmUsIE1hYXosIGFuZCBKYW1pbiwgYW5kIEVrZXIuCkFuZCB0aGUgc29ucyBvZiBPbmFtIHdlcmUsIFNoYW1tYWksIGFuZCBKYWRhLiBBbmQgdGhlIHNvbnMgb2YgU2hhbW1haTsgTmFkYWIgYW5kIEFiaXNodXIuCkFuZCB0aGUgbmFtZSBvZiB0aGUgd2lmZSBvZiBBYmlzaHVyIHdhcyBBYmloYWlsLCBhbmQgc2hlIGJhcmUgaGltIEFoYmFuLCBhbmQgTW9saWQuCkFuZCB0aGUgc29ucyBvZiBOYWRhYjsgU2VsZWQsIGFuZCBBcHBhaW06IGJ1dCBTZWxlZCBkaWVkIHdpdGhvdXQgY2hpbGRyZW4uCkFuZCB0aGUgc29ucyBvZiBBcHBhaW07IElzaGkuIEFuZCB0aGUgc29ucyBvZiBJc2hpOyBTaGVzaGFuLiBBbmQgdGhlIGNoaWxkcmVuIG9mIFNoZXNoYW47IEFobGFpLgpBbmQgdGhlIHNvbnMgb2YgSmFkYSB0aGUgYnJvdGhlciBvZiBTaGFtbWFpOyBKZXRoZXIsIGFuZCBKb25hdGhhbjogYW5kIEpldGhlciBkaWVkIHdpdGhvdXQgY2hpbGRyZW4uCkFuZCB0aGUgc29ucyBvZiBKb25hdGhhbjsgUGVsZXRoLCBhbmQgWmF6YS4gVGhlc2Ugd2VyZSB0aGUgc29ucyBvZiBKZXJhaG1lZWwuCk5vdyBTaGVzaGFuIGhhZCBubyBzb25zLCBidXQgZGF1Z2h0ZXJzLiBBbmQgU2hlc2hhbiBoYWQgYSBzZXJ2YW50LCBhbiBFZ3lwdGlhbiwgd2hvc2UgbmFtZSB3YXMgSmFyaGEuCkFuZCBTaGVzaGFuIGdhdmUgaGlzIGRhdWdodGVyIHRvIEphcmhhIGhpcyBzZXJ2YW50IHRvIHdpZmU7IGFuZCBzaGUgYmFyZSBoaW0gQXR0YWkuCkFuZCBBdHRhaSBiZWdhdCBOYXRoYW4sIGFuZCBOYXRoYW4gYmVnYXQgWmFiYWQsCkFuZCBaYWJhZCBiZWdhdCBFcGhsYWwsIGFuZCBFcGhsYWwgYmVnYXQgT2JlZCwKQW5kIE9iZWQgYmVnYXQgSmVodSwgYW5kIEplaHUgYmVnYXQgQXphcmlhaCwKQW5kIEF6YXJpYWggYmVnYXQgSGVsZXosIGFuZCBIZWxleiBiZWdhdCBFbGVhc2FoLApBbmQgRWxlYXNhaCBiZWdhdCBTaXNhbWFpLCBhbmQgU2lzYW1haSBiZWdhdCBTaGFsbHVtLApBbmQgU2hhbGx1bSBiZWdhdCBKZWthbWlhaCwgYW5kIEpla2FtaWFoIGJlZ2F0IEVsaXNoYW1hLgpOb3cgdGhlIHNvbnMgb2YgQ2FsZWIgdGhlIGJyb3RoZXIgb2YgSmVyYWhtZWVsIHdlcmUsIE1lc2hhIGhpcyBmaXJzdGJvcm4sIHdoaWNoIHdhcyB0aGUgZmF0aGVyIG9mIFppcGg7IGFuZCB0aGUgc29ucyBvZiBNYXJlc2hhaCB0aGUgZmF0aGVyIG9mIEhlYnJvbi4KQW5kIHRoZSBzb25zIG9mIEhlYnJvbjsgS29yYWgsIGFuZCBUYXBwdWFoLCBhbmQgUmVrZW0sIGFuZCBTaGVtYS4KQW5kIFNoZW1hIGJlZ2F0IFJhaGFtLCB0aGUgZmF0aGVyIG9mIEpvcmtvYW06IGFuZCBSZWtlbSBiZWdhdCBTaGFtbWFpLgpBbmQgdGhlIHNvbiBvZiBTaGFtbWFpIHdhcyBNYW9uOiBhbmQgTWFvbiB3YXMgdGhlIGZhdGhlciBvZiBCZXRoenVyLgpBbmQgRXBoYWgsIENhbGViJ3MgY29uY3ViaW5lLCBiYXJlIEhhcmFuLCBhbmQgTW96YSwgYW5kIEdhemV6OiBhbmQgSGFyYW4gYmVnYXQgR2F6ZXouCkFuZCB0aGUgc29ucyBvZiBKYWhkYWk7IFJlZ2VtLCBhbmQgSm90aGFtLCBhbmQgR2VzaGFtLCBhbmQgUGVsZXQsIGFuZCBFcGhhaCwgYW5kIFNoYWFwaC4KTWFhY2hhaCwgQ2FsZWIncyBjb25jdWJpbmUsIGJhcmUgU2hlYmVyLCBhbmQgVGlyaGFuYWguClNoZSBiYXJlIGFsc28gU2hhYXBoIHRoZSBmYXRoZXIgb2YgTWFkbWFubmFoLCBTaGV2YSB0aGUgZmF0aGVyIG9mIE1hY2hiZW5haCwgYW5kIHRoZSBmYXRoZXIgb2YgR2liZWE6IGFuZCB0aGUgZGF1Z2h0ZXIgb2YgQ2FsZWIgd2FzIEFjaHNhLgpUaGVzZSB3ZXJlIHRoZSBzb25zIG9mIENhbGViIHRoZSBzb24gb2YgSHVyLCB0aGUgZmlyc3Rib3JuIG9mIEVwaHJhdGFoOyBTaG9iYWwgdGhlIGZhdGhlciBvZiBLaXJqYXRoamVhcmltLgpTYWxtYSB0aGUgZmF0aGVyIG9mIEJldGhsZWhlbSwgSGFyZXBoIHRoZSBmYXRoZXIgb2YgQmV0aGdhZGVyLgpBbmQgU2hvYmFsIHRoZSBmYXRoZXIgb2YgS2lyamF0aGplYXJpbSBoYWQgc29uczsgSGFyb2VoLCBhbmQgaGFsZiBvZiB0aGUgTWFuYWhldGhpdGVzLgpBbmQgdGhlIGZhbWlsaWVzIG9mIEtpcmphdGhqZWFyaW07IHRoZSBJdGhyaXRlcywgYW5kIHRoZSBQdWhpdGVzLCBhbmQgdGhlIFNodW1hdGhpdGVzLCBhbmQgdGhlIE1pc2hyYWl0ZXM7IG9mIHRoZW0gY2FtZSB0aGUgWmFyZWF0aGl0ZXMsIGFuZCB0aGUgRXNodGF1bGl0ZXMsClRoZSBzb25zIG9mIFNhbG1hOyBCZXRobGVoZW0sIGFuZCB0aGUgTmV0b3BoYXRoaXRlcywgQXRhcm90aCwgdGhlIGhvdXNlIG9mIEpvYWIsIGFuZCBoYWxmIG9mIHRoZSBNYW5haGV0aGl0ZXMsIHRoZSBab3JpdGVzLgpBbmQgdGhlIGZhbWlsaWVzIG9mIHRoZSBzY3JpYmVzIHdoaWNoIGR3ZWx0IGF0IEphYmV6OyB0aGUgVGlyYXRoaXRlcywgdGhlIFNoaW1lYXRoaXRlcywgYW5kIFN1Y2hhdGhpdGVzLiBUaGVzZSBhcmUgdGhlIEtlbml0ZXMgdGhhdCBjYW1lIG9mIEhlbWF0aCwgdGhlIGZhdGhlciBvZiB0aGUgaG91c2Ugb2YgUmVjaGFiLgpOb3cgdGhlc2Ugd2VyZSB0aGUgc29ucyBvZiBEYXZpZCwgd2hpY2ggd2VyZSBib3JuIHVudG8gaGltIGluIEhlYnJvbjsgdGhlIGZpcnN0Ym9ybiBBbW5vbiwgb2YgQWhpbm9hbSB0aGUgSmV6cmVlbGl0ZXNzOyB0aGUgc2Vjb25kIERhbmllbCwgb2YgQWJpZ2FpbCB0aGUgQ2FybWVsaXRlc3M6ClRoZSB0aGlyZCwgQWJzYWxvbSB0aGUgc29uIG9mIE1hYWNoYWggdGhlIGRhdWdodGVyIG9mIFRhbG1haSBraW5nIG9mIEdlc2h1cjogdGhlIGZvdXJ0aCwgQWRvbmlqYWggdGhlIHNvbiBvZiBIYWdnaXRoOgpUaGUgZmlmdGgsIFNoZXBoYXRpYWggb2YgQWJpdGFsOiB0aGUgc2l4dGgsIEl0aHJlYW0gYnkgRWdsYWggaGlzIHdpZmUuClRoZXNlIHNpeCB3ZXJlIGJvcm4gdW50byBoaW0gaW4gSGVicm9uOyBhbmQgdGhlcmUgaGUgcmVpZ25lZCBzZXZlbiB5ZWFycyBhbmQgc2l4IG1vbnRoczogYW5kIGluIEplcnVzYWxlbSBoZSByZWlnbmVkIHRoaXJ0eSBhbmQgdGhyZWUgeWVhcnMuCkFuZCB0aGVzZSB3ZXJlIGJvcm4gdW50byBoaW0gaW4gSmVydXNhbGVtOyBTaGltZWEsIGFuZCBTaG9iYWIsIGFuZCBOYXRoYW4sIGFuZCBTb2xvbW9uLCBmb3VyLCBvZiBCYXRoc2h1YSB0aGUgZGF1Z2h0ZXIgb2YgQW1taWVsOgpJYmhhciBhbHNvLCBhbmQgRWxpc2hhbWEsIGFuZCBFbGlwaGVsZXQsCkFuZCBOb2dhaCwgYW5kIE5lcGhlZywgYW5kIEphcGhpYSwKQW5kIEVsaXNoYW1hLCBhbmQgRWxpYWRhLCBhbmQgRWxpcGhlbGV0LCBuaW5lLgpUaGVzZSB3ZXJlIGFsbCB0aGUgc29ucyBvZiBEYXZpZCwgYmVzaWRlIHRoZSBzb25zIG9mIHRoZSBjb25jdWJpbmVzLCBhbmQgVGFtYXIgdGhlaXIgc2lzdGVyLgpBbmQgU29sb21vbidzIHNvbiB3YXMgUmVob2JvYW0sIEFiaWEgaGlzIHNvbiwgQXNhIGhpcyBzb24sIEplaG9zaGFwaGF0IGhpcyBzb24sCkpvcmFtIGhpcyBzb24sIEFoYXppYWggaGlzIHNvbiwgSm9hc2ggaGlzIHNvbiwKQW1hemlhaCBoaXMgc29uLCBBemFyaWFoIGhpcyBzb24sIEpvdGhhbSBoaXMgc29uLApBaGF6IGhpcyBzb24sIEhlemVraWFoIGhpcyBzb24sIE1hbmFzc2VoIGhpcyBzb24sCkFtb24gaGlzIHNvbiwgSm9zaWFoIGhpcyBzb24uCkFuZCB0aGUgc29ucyBvZiBKb3NpYWggd2VyZSwgdGhlIGZpcnN0Ym9ybiBKb2hhbmFuLCB0aGUgc2Vjb25kIEplaG9pYWtpbSwgdGhlIHRoaXJkIFplZGVraWFoLCB0aGUgZm91cnRoIFNoYWxsdW0uCkFuZCB0aGUgc29ucyBvZiBKZWhvaWFraW06IEplY29uaWFoIGhpcyBzb24sIFplZGVraWFoIGhpcyBzb24uCkFuZCB0aGUgc29ucyBvZiBKZWNvbmlhaDsgQXNzaXIsIFNhbGF0aGllbCBoaXMgc29uLApNYWxjaGlyYW0gYWxzbywgYW5kIFBlZGFpYWgsIGFuZCBTaGVuYXphciwgSmVjYW1pYWgsIEhvc2hhbWEsIGFuZCBOZWRhYmlhaC4KQW5kIHRoZSBzb25zIG9mIFBlZGFpYWggd2VyZSwgWmVydWJiYWJlbCwgYW5kIFNoaW1laTogYW5kIHRoZSBzb25zIG9mIFplcnViYmFiZWw7IE1lc2h1bGxhbSwgYW5kIEhhbmFuaWFoLCBhbmQgU2hlbG9taXRoIHRoZWlyIHNpc3RlcjoKQW5kIEhhc2h1YmFoLCBhbmQgT2hlbCwgYW5kIEJlcmVjaGlhaCwgYW5kIEhhc2FkaWFoLCBKdXNoYWJoZXNlZCwgZml2ZS4KQW5kIHRoZSBzb25zIG9mIEhhbmFuaWFoOyBQZWxhdGlhaCwgYW5kIEplc2FpYWg6IHRoZSBzb25zIG9mIFJlcGhhaWFoLCB0aGUgc29ucyBvZiBBcm5hbiwgdGhlIHNvbnMgb2YgT2JhZGlhaCwgdGhlIHNvbnMgb2YgU2hlY2hhbmlhaC4KQW5kIHRoZSBzb25zIG9mIFNoZWNoYW5pYWg7IFNoZW1haWFoOiBhbmQgdGhlIHNvbnMgb2YgU2hlbWFpYWg7IEhhdHR1c2gsIGFuZCBJZ2VhbCwgYW5kIEJhcmlhaCwgYW5kIE5lYXJpYWgsIGFuZCBTaGFwaGF0LCBzaXguCkFuZCB0aGUgc29ucyBvZiBOZWFyaWFoOyBFbGlvZW5haSwgYW5kIEhlemVraWFoLCBhbmQgQXpyaWthbSwgdGhyZWUuCkFuZCB0aGUgc29ucyBvZiBFbGlvZW5haSB3ZXJlLCBIb2RhaWFoLCBhbmQgRWxpYXNoaWIsIGFuZCBQZWxhaWFoLCBhbmQgQWtrdWIsIGFuZCBKb2hhbmFuLCBhbmQgRGFsYWlhaCwgYW5kIEFuYW5pLCBzZXZlbi4KVGhlIHNvbnMgb2YgSnVkYWg7IFBoYXJleiwgSGV6cm9uLCBhbmQgQ2FybWksIGFuZCBIdXIsIGFuZCBTaG9iYWwuCkFuZCBSZWFpYWggdGhlIHNvbiBvZiBTaG9iYWwgYmVnYXQgSmFoYXRoOyBhbmQgSmFoYXRoIGJlZ2F0IEFodW1haSwgYW5kIExhaGFkLiBUaGVzZSBhcmUgdGhlIGZhbWlsaWVzIG9mIHRoZSBab3JhdGhpdGVzLgpBbmQgdGhlc2Ugd2VyZSBvZiB0aGUgZmF0aGVyIG9mIEV0YW07IEplenJlZWwsIGFuZCBJc2htYSwgYW5kIElkYmFzaDogYW5kIHRoZSBuYW1lIG9mIHRoZWlyIHNpc3RlciB3YXMgSGF6ZWxlbHBvbmk6CkFuZCBQZW51ZWwgdGhlIGZhdGhlciBvZiBHZWRvciwgYW5kIEV6ZXIgdGhlIGZhdGhlciBvZiBIdXNoYWguIFRoZXNlIGFyZSB0aGUgc29ucyBvZiBIdXIsIHRoZSBmaXJzdGJvcm4gb2YgRXBocmF0YWgsIHRoZSBmYXRoZXIgb2YgQmV0aGxlaGVtLgpBbmQgQXNodXIgdGhlIGZhdGhlciBvZiBUZWtvYSBoYWQgdHdvIHdpdmVzLCBIZWxhaCBhbmQgTmFhcmFoLgpBbmQgTmFhcmFoIGJhcmUgaGltIEFodXphbSwgYW5kIEhlcGhlciwgYW5kIFRlbWVuaSwgYW5kIEhhYWhhc2h0YXJpLiBUaGVzZSB3ZXJlIHRoZSBzb25zIG9mIE5hYXJhaC4KQW5kIHRoZSBzb25zIG9mIEhlbGFoIHdlcmUsIFplcmV0aCwgYW5kIEplem9hciwgYW5kIEV0aG5hbi4KQW5kIENveiBiZWdhdCBBbnViLCBhbmQgWm9iZWJhaCwgYW5kIHRoZSBmYW1pbGllcyBvZiBBaGFyaGVsIHRoZSBzb24gb2YgSGFydW0uCkFuZCBKYWJleiB3YXMgbW9yZSBob25vdXJhYmxlIHRoYW4gaGlzIGJyZXRocmVuOiBhbmQgaGlzIG1vdGhlciBjYWxsZWQgaGlzIG5hbWUgSmFiZXosIHNheWluZywgQmVjYXVzZSBJIGJhcmUgaGltIHdpdGggc29ycm93LgpBbmQgSmFiZXogY2FsbGVkIG9uIHRoZSBHb2Qgb2YgSXNyYWVsLCBzYXlpbmcsIE9oIHRoYXQgdGhvdSB3b3VsZGVzdCBibGVzcyBtZSBpbmRlZWQsIGFuZCBlbmxhcmdlIG15IGNvYXN0LCBhbmQgdGhhdCB0aGluZSBoYW5kIG1pZ2h0IGJlIHdpdGggbWUsIGFuZCB0aGF0IHRob3Ugd291bGRlc3Qga2VlcCBtZSBmcm9tIGV2aWwsIHRoYXQgaXQgbWF5IG5vdCBncmlldmUgbWUhIEFuZCBHb2QgZ3JhbnRlZCBoaW0gdGhhdCB3aGljaCBoZSByZXF1ZXN0ZWQuCkFuZCBDaGVsdWIgdGhlIGJyb3RoZXIgb2YgU2h1YWggYmVnYXQgTWVoaXIsIHdoaWNoIHdhcyB0aGUgZmF0aGVyIG9mIEVzaHRvbi4KQW5kIEVzaHRvbiBiZWdhdCBCZXRocmFwaGEsIGFuZCBQYXNlYWgsIGFuZCBUZWhpbm5haCB0aGUgZmF0aGVyIG9mIElybmFoYXNoLiBUaGVzZSBhcmUgdGhlIG1lbiBvZiBSZWNoYWguCkFuZCB0aGUgc29ucyBvZiBLZW5hejsgT3RobmllbCwgYW5kIFNlcmFpYWg6IGFuZCB0aGUgc29ucyBvZiBPdGhuaWVsOyBIYXRoYXRoLgpBbmQgTWVvbm90aGFpIGJlZ2F0IE9waHJhaDogYW5kIFNlcmFpYWggYmVnYXQgSm9hYiwgdGhlIGZhdGhlciBvZiB0aGUgdmFsbGV5IG9mIENoYXJhc2hpbTsgZm9yIHRoZXkgd2VyZSBjcmFmdHNtZW4uCkFuZCB0aGUgc29ucyBvZiBDYWxlYiB0aGUgc29uIG9mIEplcGh1bm5laDsgSXJ1LCBFbGFoLCBhbmQgTmFhbTogYW5kIHRoZSBzb25zIG9mIEVsYWgsIGV2ZW4gS2VuYXouCkFuZCB0aGUgc29ucyBvZiBKZWhhbGVsZWVsOyBaaXBoLCBhbmQgWmlwaGFoLCBUaXJpYSwgYW5kIEFzYXJlZWwuCkFuZCB0aGUgc29ucyBvZiBFenJhIHdlcmUsIEpldGhlciwgYW5kIE1lcmVkLCBhbmQgRXBoZXIsIGFuZCBKYWxvbjogYW5kIHNoZSBiYXJlIE1pcmlhbSwgYW5kIFNoYW1tYWksIGFuZCBJc2hiYWggdGhlIGZhdGhlciBvZiBFc2h0ZW1vYS4KQW5kIGhpcyB3aWZlIEplaHVkaWphaCBiYXJlIEplcmVkIHRoZSBmYXRoZXIgb2YgR2Vkb3IsIGFuZCBIZWJlciB0aGUgZmF0aGVyIG9mIFNvY2hvLCBhbmQgSmVrdXRoaWVsIHRoZSBmYXRoZXIgb2YgWmFub2FoLiBBbmQgdGhlc2UgYXJlIHRoZSBzb25zIG9mIEJpdGhpYWggdGhlIGRhdWdodGVyIG9mIFBoYXJhb2gsIHdoaWNoIE1lcmVkIHRvb2suCkFuZCB0aGUgc29ucyBvZiBoaXMgd2lmZSBIb2RpYWggdGhlIHNpc3RlciBvZiBOYWhhbSwgdGhlIGZhdGhlciBvZiBLZWlsYWggdGhlIEdhcm1pdGUsIGFuZCBFc2h0ZW1vYSB0aGUgTWFhY2hhdGhpdGUuCkFuZCB0aGUgc29ucyBvZiBTaGltb24gd2VyZSwgQW1ub24sIGFuZCBSaW5uYWgsIEJlbmhhbmFuLCBhbmQgVGlsb24uIEFuZCB0aGUgc29ucyBvZiBJc2hpIHdlcmUsIFpvaGV0aCwgYW5kIEJlbnpvaGV0aC4KVGhlIHNvbnMgb2YgU2hlbGFoIHRoZSBzb24gb2YgSnVkYWggd2VyZSwgRXIgdGhlIGZhdGhlciBvZiBMZWNhaCwgYW5kIExhYWRhaCB0aGUgZmF0aGVyIG9mIE1hcmVzaGFoLCBhbmQgdGhlIGZhbWlsaWVzIG9mIHRoZSBob3VzZSBvZiB0aGVtIHRoYXQgd3JvdWdodCBmaW5lIGxpbmVuLCBvZiB0aGUgaG91c2Ugb2YgQXNoYmVhLApBbmQgSm9raW0sIGFuZCB0aGUgbWVuIG9mIENob3plYmEsIGFuZCBKb2FzaCwgYW5kIFNhcmFwaCwgd2hvIGhhZCB0aGUgZG9taW5pb24gaW4gTW9hYiwgYW5kIEphc2h1YmlsZWhlbS4gQW5kIHRoZXNlIGFyZSBhbmNpZW50IHRoaW5ncy4KVGhlc2Ugd2VyZSB0aGUgcG90dGVycywgYW5kIHRob3NlIHRoYXQgZHdlbHQgYW1vbmcgcGxhbnRzIGFuZCBoZWRnZXM6IHRoZXJlIHRoZXkgZHdlbHQgd2l0aCB0aGUga2luZyBmb3IgaGlzIHdvcmsuClRoZSBzb25zIG9mIFNpbWVvbiB3ZXJlLCBOZW11ZWwsIGFuZCBKYW1pbiwgSmFyaWIsIFplcmFoLCBhbmQgU2hhdWw6ClNoYWxsdW0gaGlzIHNvbiwgTWlic2FtIGhpcyBzb24sIE1pc2htYSBoaXMgc29uLgpBbmQgdGhlIHNvbnMgb2YgTWlzaG1hOyBIYW11ZWwgaGlzIHNvbiwgWmFjY2h1ciBoaXMgc29uLCBTaGltZWkgaGlzIHNvbi4KQW5kIFNoaW1laSBoYWQgc2l4dGVlbiBzb25zIGFuZCBzaXggZGF1Z2h0ZXJzOiBidXQgaGlzIGJyZXRocmVuIGhhZCBub3QgbWFueSBjaGlsZHJlbiwgbmVpdGhlciBkaWQgYWxsIHRoZWlyIGZhbWlseSBtdWx0aXBseSwgbGlrZSB0byB0aGUgY2hpbGRyZW4gb2YgSnVkYWguCkFuZCB0aGV5IGR3ZWx0IGF0IEJlZXJzaGViYSwgYW5kIE1vbGFkYWgsIGFuZCBIYXphcnNodWFsLApBbmQgYXQgQmlsaGFoLCBhbmQgYXQgRXplbSwgYW5kIGF0IFRvbGFkLApBbmQgYXQgQmV0aHVlbCwgYW5kIGF0IEhvcm1haCwgYW5kIGF0IFppa2xhZywKQW5kIGF0IEJldGhtYXJjYWJvdGgsIGFuZCBIYXphcnN1c2ltLCBhbmQgYXQgQmV0aGJpcmVpLCBhbmQgYXQgU2hhYXJhaW0uIFRoZXNlIHdlcmUgdGhlaXIgY2l0aWVzIHVudG8gdGhlIHJlaWduIG9mIERhdmlkLgpBbmQgdGhlaXIgdmlsbGFnZXMgd2VyZSwgRXRhbSwgYW5kIEFpbiwgUmltbW9uLCBhbmQgVG9jaGVuLCBhbmQgQXNoYW4sIGZpdmUgY2l0aWVzOgpBbmQgYWxsIHRoZWlyIHZpbGxhZ2VzIHRoYXQgd2VyZSByb3VuZCBhYm91dCB0aGUgc2FtZSBjaXRpZXMsIHVudG8gQmFhbC4gVGhlc2Ugd2VyZSB0aGVpciBoYWJpdGF0aW9ucywgYW5kIHRoZWlyIGdlbmVhbG9neS4KQW5kIE1lc2hvYmFiLCBhbmQgSmFtbGVjaCwgYW5kIEpvc2hhaCwgdGhlIHNvbiBvZiBBbWF6aWFoLApBbmQgSm9lbCwgYW5kIEplaHUgdGhlIHNvbiBvZiBKb3NpYmlhaCwgdGhlIHNvbiBvZiBTZXJhaWFoLCB0aGUgc29uIG9mIEFzaWVsLApBbmQgRWxpb2VuYWksIGFuZCBKYWFrb2JhaCwgYW5kIEplc2hvaGFpYWgsIGFuZCBBc2FpYWgsIGFuZCBBZGllbCwgYW5kIEplc2ltaWVsLCBhbmQgQmVuYWlhaCwKQW5kIFppemEgdGhlIHNvbiBvZiBTaGlwaGksIHRoZSBzb24gb2YgQWxsb24sIHRoZSBzb24gb2YgSmVkYWlhaCwgdGhlIHNvbiBvZiBTaGltcmksIHRoZSBzb24gb2YgU2hlbWFpYWg7ClRoZXNlIG1lbnRpb25lZCBieSB0aGVpciBuYW1lcyB3ZXJlIHByaW5jZXMgaW4gdGhlaXIgZmFtaWxpZXM6IGFuZCB0aGUgaG91c2Ugb2YgdGhlaXIgZmF0aGVycyBpbmNyZWFzZWQgZ3JlYXRseS4KQW5kIHRoZXkgd2VudCB0byB0aGUgZW50cmFuY2Ugb2YgR2Vkb3IsIGV2ZW4gdW50byB0aGUgZWFzdCBzaWRlIG9mIHRoZSB2YWxsZXksIHRvIHNlZWsgcGFzdHVyZSBmb3IgdGhlaXIgZmxvY2tzLgpBbmQgdGhleSBmb3VuZCBmYXQgcGFzdHVyZSBhbmQgZ29vZCwgYW5kIHRoZSBsYW5kIHdhcyB3aWRlLCBhbmQgcXVpZXQsIGFuZCBwZWFjZWFibGU7IGZvciB0aGV5IG9mIEhhbSBoYWQgZHdlbHQgdGhlcmUgb2Ygb2xkLgpBbmQgdGhlc2Ugd3JpdHRlbiBieSBuYW1lIGNhbWUgaW4gdGhlIGRheXMgb2YgSGV6ZWtpYWgga2luZyBvZiBKdWRhaCwgYW5kIHNtb3RlIHRoZWlyIHRlbnRzLCBhbmQgdGhlIGhhYml0YXRpb25zIHRoYXQgd2VyZSBmb3VuZCB0aGVyZSwgYW5kIGRlc3Ryb3llZCB0aGVtIHV0dGVybHkgdW50byB0aGlzIGRheSwgYW5kIGR3ZWx0IGluIHRoZWlyIHJvb21zOiBiZWNhdXNlIHRoZXJlIHdhcyBwYXN0dXJlIHRoZXJlIGZvciB0aGVpciBmbG9ja3MuCkFuZCBzb21lIG9mIHRoZW0sIGV2ZW4gb2YgdGhlIHNvbnMgb2YgU2ltZW9uLCBmaXZlIGh1bmRyZWQgbWVuLCB3ZW50IHRvIG1vdW50IFNlaXIsIGhhdmluZyBmb3IgdGhlaXIgY2FwdGFpbnMgUGVsYXRpYWgsIGFuZCBOZWFyaWFoLCBhbmQgUmVwaGFpYWgsIGFuZCBVenppZWwsIHRoZSBzb25zIG9mIElzaGkuCkFuZCB0aGV5IHNtb3RlIHRoZSByZXN0IG9mIHRoZSBBbWFsZWtpdGVzIHRoYXQgd2VyZSBlc2NhcGVkLCBhbmQgZHdlbHQgdGhlcmUgdW50byB0aGlzIGRheS4KTm93IHRoZSBzb25zIG9mIFJldWJlbiB0aGUgZmlyc3Rib3JuIG9mIElzcmFlbCwgKGZvciBoZSB3YXMgdGhlIGZpcnN0Ym9ybjsgYnV0IGZvcmFzbXVjaCBhcyBoZSBkZWZpbGVkIGhpcyBmYXRoZXIncyBiZWQsIGhpcyBiaXJ0aHJpZ2h0IHdhcyBnaXZlbiB1bnRvIHRoZSBzb25zIG9mIEpvc2VwaCB0aGUgc29uIG9mIElzcmFlbDogYW5kIHRoZSBnZW5lYWxvZ3kgaXMgbm90IHRvIGJlIHJlY2tvbmVkIGFmdGVyIHRoZSBiaXJ0aHJpZ2h0LgpGb3IgSnVkYWggcHJldmFpbGVkIGFib3ZlIGhpcyBicmV0aHJlbiwgYW5kIG9mIGhpbSBjYW1lIHRoZSBjaGllZiBydWxlcjsgYnV0IHRoZSBiaXJ0aHJpZ2h0IHdhcyBKb3NlcGgnczopClRoZSBzb25zLCBJIHNheSwgb2YgUmV1YmVuIHRoZSBmaXJzdGJvcm4gb2YgSXNyYWVsIHdlcmUsIEhhbm9jaCwgYW5kIFBhbGx1LCBIZXpyb24sIGFuZCBDYXJtaS4KVGhlIHNvbnMgb2YgSm9lbDsgU2hlbWFpYWggaGlzIHNvbiwgR29nIGhpcyBzb24sIFNoaW1laSBoaXMgc29uLApNaWNhaCBoaXMgc29uLCBSZWFpYSBoaXMgc29uLCBCYWFsIGhpcyBzb24sCkJlZXJhaCBoaXMgc29uLCB3aG9tIFRpbGdhdGhwaWxuZXNlciBraW5nIG9mIEFzc3lyaWEgY2FycmllZCBhd2F5IGNhcHRpdmU6IGhlIHdhcyBwcmluY2Ugb2YgdGhlIFJldWJlbml0ZXMuCkFuZCBoaXMgYnJldGhyZW4gYnkgdGhlaXIgZmFtaWxpZXMsIHdoZW4gdGhlIGdlbmVhbG9neSBvZiB0aGVpciBnZW5lcmF0aW9ucyB3YXMgcmVja29uZWQsIHdlcmUgdGhlIGNoaWVmLCBKZWllbCwgYW5kIFplY2hhcmlhaCwKQW5kIEJlbGEgdGhlIHNvbiBvZiBBemF6LCB0aGUgc29uIG9mIFNoZW1hLCB0aGUgc29uIG9mIEpvZWwsIHdobyBkd2VsdCBpbiBBcm9lciwgZXZlbiB1bnRvIE5lYm8gYW5kIEJhYWxtZW9uOgpBbmQgZWFzdHdhcmQgaGUgaW5oYWJpdGVkIHVudG8gdGhlIGVudGVyaW5nIGluIG9mIHRoZSB3aWxkZXJuZXNzIGZyb20gdGhlIHJpdmVyIEV1cGhyYXRlczogYmVjYXVzZSB0aGVpciBjYXR0bGUgd2VyZSBtdWx0aXBsaWVkIGluIHRoZSBsYW5kIG9mIEdpbGVhZC4KQW5kIGluIHRoZSBkYXlzIG9mIFNhdWwgdGhleSBtYWRlIHdhciB3aXRoIHRoZSBIYWdhcml0ZXMsIHdobyBmZWxsIGJ5IHRoZWlyIGhhbmQ6IGFuZCB0aGV5IGR3ZWx0IGluIHRoZWlyIHRlbnRzIHRocm91Z2hvdXQgYWxsIHRoZSBlYXN0IGxhbmQgb2YgR2lsZWFkLgpBbmQgdGhlIGNoaWxkcmVuIG9mIEdhZCBkd2VsdCBvdmVyIGFnYWluc3QgdGhlbSwgaW4gdGhlIGxhbmQgb2YgQmFzaGFuIHVudG8gU2FsY2FoOgpKb2VsIHRoZSBjaGllZiwgYW5kIFNoYXBoYW0gdGhlIG5leHQsIGFuZCBKYWFuYWksIGFuZCBTaGFwaGF0IGluIEJhc2hhbi4KQW5kIHRoZWlyIGJyZXRocmVuIG9mIHRoZSBob3VzZSBvZiB0aGVpciBmYXRoZXJzIHdlcmUsIE1pY2hhZWwsIGFuZCBNZXNodWxsYW0sIGFuZCBTaGViYSwgYW5kIEpvcmFpLCBhbmQgSmFjaGFuLCBhbmQgWmlhLCBhbmQgSGViZXIsIHNldmVuLgpUaGVzZSBhcmUgdGhlIGNoaWxkcmVuIG9mIEFiaWhhaWwgdGhlIHNvbiBvZiBIdXJpLCB0aGUgc29uIG9mIEphcm9haCwgdGhlIHNvbiBvZiBHaWxlYWQsIHRoZSBzb24gb2YgTWljaGFlbCwgdGhlIHNvbiBvZiBKZXNoaXNoYWksIHRoZSBzb24gb2YgSmFoZG8sIHRoZSBzb24gb2YgQnV6OwpBaGkgdGhlIHNvbiBvZiBBYmRpZWwsIHRoZSBzb24gb2YgR3VuaSwgY2hpZWYgb2YgdGhlIGhvdXNlIG9mIHRoZWlyIGZhdGhlcnMuCkFuZCB0aGV5IGR3ZWx0IGluIEdpbGVhZCBpbiBCYXNoYW4sIGFuZCBpbiBoZXIgdG93bnMsIGFuZCBpbiBhbGwgdGhlIHN1YnVyYnMgb2YgU2hhcm9uLCB1cG9uIHRoZWlyIGJvcmRlcnMuCkFsbCB0aGVzZSB3ZXJlIHJlY2tvbmVkIGJ5IGdlbmVhbG9naWVzIGluIHRoZSBkYXlzIG9mIEpvdGhhbSBraW5nIG9mIEp1ZGFoLCBhbmQgaW4gdGhlIGRheXMgb2YgSmVyb2JvYW0ga2luZyBvZiBJc3JhZWwuClRoZSBzb25zIG9mIFJldWJlbiwgYW5kIHRoZSBHYWRpdGVzLCBhbmQgaGFsZiB0aGUgdHJpYmUgb2YgTWFuYXNzZWgsIG9mIHZhbGlhbnQgbWVuLCBtZW4gYWJsZSB0byBiZWFyIGJ1Y2tsZXIgYW5kIHN3b3JkLCBhbmQgdG8gc2hvb3Qgd2l0aCBib3csIGFuZCBza2lsZnVsIGluIHdhciwgd2VyZSBmb3VyIGFuZCBmb3J0eSB0aG91c2FuZCBzZXZlbiBodW5kcmVkIGFuZCB0aHJlZXNjb3JlLCB0aGF0IHdlbnQgb3V0IHRvIHRoZSB3YXIuCkFuZCB0aGV5IG1hZGUgd2FyIHdpdGggdGhlIEhhZ2FyaXRlcywgd2l0aCBKZXR1ciwgYW5kIE5lcGhpc2gsIGFuZCBOb2RhYi4KQW5kIHRoZXkgd2VyZSBoZWxwZWQgYWdhaW5zdCB0aGVtLCBhbmQgdGhlIEhhZ2FyaXRlcyB3ZXJlIGRlbGl2ZXJlZCBpbnRvIHRoZWlyIGhhbmQsIGFuZCBhbGwgdGhhdCB3ZXJlIHdpdGggdGhlbTogZm9yIHRoZXkgY3JpZWQgdG8gR29kIGluIHRoZSBiYXR0bGUsIGFuZCBoZSB3YXMgaW50cmVhdGVkIG9mIHRoZW07IGJlY2F1c2UgdGhleSBwdXQgdGhlaXIgdHJ1c3QgaW4gaGltLgpBbmQgdGhleSB0b29rIGF3YXkgdGhlaXIgY2F0dGxlOyBvZiB0aGVpciBjYW1lbHMgZmlmdHkgdGhvdXNhbmQsIGFuZCBvZiBzaGVlcCB0d28gaHVuZHJlZCBhbmQgZmlmdHkgdGhvdXNhbmQsIGFuZCBvZiBhc3NlcyB0d28gdGhvdXNhbmQsIGFuZCBvZiBtZW4gYW4gaHVuZHJlZCB0aG91c2FuZC4KRm9yIHRoZXJlIGZlbGwgZG93biBtYW55IHNsYWluLCBiZWNhdXNlIHRoZSB3YXIgd2FzIG9mIEdvZC4gQW5kIHRoZXkgZHdlbHQgaW4gdGhlaXIgc3RlYWRzIHVudGlsIHRoZSBjYXB0aXZpdHkuCkFuZCB0aGUgY2hpbGRyZW4gb2YgdGhlIGhhbGYgdHJpYmUgb2YgTWFuYXNzZWggZHdlbHQgaW4gdGhlIGxhbmQ6IHRoZXkgaW5jcmVhc2VkIGZyb20gQmFzaGFuIHVudG8gQmFhbGhlcm1vbiBhbmQgU2VuaXIsIGFuZCB1bnRvIG1vdW50IEhlcm1vbi4KQW5kIHRoZXNlIHdlcmUgdGhlIGhlYWRzIG9mIHRoZSBob3VzZSBvZiB0aGVpciBmYXRoZXJzLCBldmVuIEVwaGVyLCBhbmQgSXNoaSwgYW5kIEVsaWVsLCBhbmQgQXpyaWVsLCBhbmQgSmVyZW1pYWgsIGFuZCBIb2RhdmlhaCwgYW5kIEphaGRpZWwsIG1pZ2h0eSBtZW4gb2YgdmFsb3VyLCBmYW1vdXMgbWVuLCBhbmQgaGVhZHMgb2YgdGhlIGhvdXNlIG9mIHRoZWlyIGZhdGhlcnMuCkFuZCB0aGV5IHRyYW5zZ3Jlc3NlZCBhZ2FpbnN0IHRoZSBHb2Qgb2YgdGhlaXIgZmF0aGVycywgYW5kIHdlbnQgYSB3aG9yaW5nIGFmdGVyIHRoZSBnb2RzIG9mIHRoZSBwZW9wbGUgb2YgdGhlIGxhbmQsIHdob20gR29kIGRlc3Ryb3llZCBiZWZvcmUgdGhlbS4KQW5kIHRoZSBHb2Qgb2YgSXNyYWVsIHN0aXJyZWQgdXAgdGhlIHNwaXJpdCBvZiBQdWwga2luZyBvZiBBc3N5cmlhLCBhbmQgdGhlIHNwaXJpdCBvZiBUaWxnYXRocGlsbmVzZXIga2luZyBvZiBBc3N5cmlhLCBhbmQgaGUgY2FycmllZCB0aGVtIGF3YXksIGV2ZW4gdGhlIFJldWJlbml0ZXMsIGFuZCB0aGUgR2FkaXRlcywgYW5kIHRoZSBoYWxmIHRyaWJlIG9mIE1hbmFzc2VoLCBhbmQgYnJvdWdodCB0aGVtIHVudG8gSGFsYWgsIGFuZCBIYWJvciwgYW5kIEhhcmEsIGFuZCB0byB0aGUgcml2ZXIgR296YW4sIHVudG8gdGhpcyBkYXkuClRoZSBzb25zIG9mIExldmk7IEdlcnNob24sIEtvaGF0aCwgYW5kIE1lcmFyaS4KQW5kIHRoZSBzb25zIG9mIEtvaGF0aDsgQW1yYW0sIEl6aGFyLCBhbmQgSGVicm9uLCBhbmQgVXp6aWVsLgpBbmQgdGhlIGNoaWxkcmVuIG9mIEFtcmFtOyBBYXJvbiwgYW5kIE1vc2VzLCBhbmQgTWlyaWFtLiBUaGUgc29ucyBhbHNvIG9mIEFhcm9uOyBOYWRhYiwgYW5kIEFiaWh1LCBFbGVhemFyLCBhbmQgSXRoYW1hci4KRWxlYXphciBiZWdhdCBQaGluZWhhcywgUGhpbmVoYXMgYmVnYXQgQWJpc2h1YSwKQW5kIEFiaXNodWEgYmVnYXQgQnVra2ksIGFuZCBCdWtraSBiZWdhdCBVenppLApBbmQgVXp6aSBiZWdhdCBaZXJhaGlhaCwgYW5kIFplcmFoaWFoIGJlZ2F0IE1lcmFpb3RoLApNZXJhaW90aCBiZWdhdCBBbWFyaWFoLCBhbmQgQW1hcmlhaCBiZWdhdCBBaGl0dWIsCkFuZCBBaGl0dWIgYmVnYXQgWmFkb2ssIGFuZCBaYWRvayBiZWdhdCBBaGltYWF6LApBbmQgQWhpbWFheiBiZWdhdCBBemFyaWFoLCBhbmQgQXphcmlhaCBiZWdhdCBKb2hhbmFuLApBbmQgSm9oYW5hbiBiZWdhdCBBemFyaWFoLCAoaGUgaXQgaXMgdGhhdCBleGVjdXRlZCB0aGUgcHJpZXN0J3Mgb2ZmaWNlIGluIHRoZSB0ZW1wbGUgdGhhdCBTb2xvbW9uIGJ1aWx0IGluIEplcnVzYWxlbTopCkFuZCBBemFyaWFoIGJlZ2F0IEFtYXJpYWgsIGFuZCBBbWFyaWFoIGJlZ2F0IEFoaXR1YiwKQW5kIEFoaXR1YiBiZWdhdCBaYWRvaywgYW5kIFphZG9rIGJlZ2F0IFNoYWxsdW0sCkFuZCBTaGFsbHVtIGJlZ2F0IEhpbGtpYWgsIGFuZCBIaWxraWFoIGJlZ2F0IEF6YXJpYWgsCkFuZCBBemFyaWFoIGJlZ2F0IFNlcmFpYWgsIGFuZCBTZXJhaWFoIGJlZ2F0IEplaG96YWRhaywKQW5kIEplaG96YWRhayB3ZW50IGludG8gY2FwdGl2aXR5LCB3aGVuIHRoZSBMT1JEIGNhcnJpZWQgYXdheSBKdWRhaCBhbmQgSmVydXNhbGVtIGJ5IHRoZSBoYW5kIG9mIE5lYnVjaGFkbmV6emFyLgpUaGUgc29ucyBvZiBMZXZpOyBHZXJzaG9tLCBLb2hhdGgsIGFuZCBNZXJhcmkuCkFuZCB0aGVzZSBiZSB0aGUgbmFtZXMgb2YgdGhlIHNvbnMgb2YgR2Vyc2hvbTsgTGlibmksIGFuZCBTaGltZWkuCkFuZCB0aGUgc29ucyBvZiBLb2hhdGggd2VyZSwgQW1yYW0sIGFuZCBJemhhciwgYW5kIEhlYnJvbiwgYW5kIFV6emllbC4KVGhlIHNvbnMgb2YgTWVyYXJpOyBNYWhsaSwgYW5kIE11c2hpLiBBbmQgdGhlc2UgYXJlIHRoZSBmYW1pbGllcyBvZiB0aGUgTGV2aXRlcyBhY2NvcmRpbmcgdG8gdGhlaXIgZmF0aGVycy4KT2YgR2Vyc2hvbTsgTGlibmkgaGlzIHNvbiwgSmFoYXRoIGhpcyBzb24sIFppbW1haCBoaXMgc29uLApKb2FoIGhpcyBzb24sIElkZG8gaGlzIHNvbiwgWmVyYWggaGlzIHNvbiwgSmVhdGVyYWkgaGlzIHNvbi4KVGhlIHNvbnMgb2YgS29oYXRoOyBBbW1pbmFkYWIgaGlzIHNvbiwgS29yYWggaGlzIHNvbiwgQXNzaXIgaGlzIHNvbiwKRWxrYW5haCBoaXMgc29uLCBhbmQgRWJpYXNhcGggaGlzIHNvbiwgYW5kIEFzc2lyIGhpcyBzb24sClRhaGF0aCBoaXMgc29uLCBVcmllbCBoaXMgc29uLCBVenppYWggaGlzIHNvbiwgYW5kIFNoYXVsIGhpcyBzb24uCkFuZCB0aGUgc29ucyBvZiBFbGthbmFoOyBBbWFzYWksIGFuZCBBaGltb3RoLgpBcyBmb3IgRWxrYW5haDogdGhlIHNvbnMgb2YgRWxrYW5haDsgWm9waGFpIGhpcyBzb24sIGFuZCBOYWhhdGggaGlzIHNvbiwKRWxpYWIgaGlzIHNvbiwgSmVyb2hhbSBoaXMgc29uLCBFbGthbmFoIGhpcyBzb24uCkFuZCB0aGUgc29ucyBvZiBTYW11ZWw7IHRoZSBmaXJzdGJvcm4gVmFzaG5pLCBhbmQgQWJpYWguClRoZSBzb25zIG9mIE1lcmFyaTsgTWFobGksIExpYm5pIGhpcyBzb24sIFNoaW1laSBoaXMgc29uLCBVenphIGhpcyBzb24sClNoaW1lYSBoaXMgc29uLCBIYWdnaWFoIGhpcyBzb24sIEFzYWlhaCBoaXMgc29uLgpBbmQgdGhlc2UgYXJlIHRoZXkgd2hvbSBEYXZpZCBzZXQgb3ZlciB0aGUgc2VydmljZSBvZiBzb25nIGluIHRoZSBob3VzZSBvZiB0aGUgTE9SRCwgYWZ0ZXIgdGhhdCB0aGUgYXJrIGhhZCByZXN0LgpBbmQgdGhleSBtaW5pc3RlcmVkIGJlZm9yZSB0aGUgZHdlbGxpbmcgcGxhY2Ugb2YgdGhlIHRhYmVybmFjbGUgb2YgdGhlIGNvbmdyZWdhdGlvbiB3aXRoIHNpbmdpbmcsIHVudGlsIFNvbG9tb24gaGFkIGJ1aWx0IHRoZSBob3VzZSBvZiB0aGUgTE9SRCBpbiBKZXJ1c2FsZW06IGFuZCB0aGVuIHRoZXkgd2FpdGVkIG9uIHRoZWlyIG9mZmljZSBhY2NvcmRpbmcgdG8gdGhlaXIgb3JkZXIuCkFuZCB0aGVzZSBhcmUgdGhleSB0aGF0IHdhaXRlZCB3aXRoIHRoZWlyIGNoaWxkcmVuLiBPZiB0aGUgc29ucyBvZiB0aGUgS29oYXRoaXRlczogSGVtYW4gYSBzaW5nZXIsIHRoZSBzb24gb2YgSm9lbCwgdGhlIHNvbiBvZiBTaGVtdWVsLApUaGUgc29uIG9mIEVsa2FuYWgsIHRoZSBzb24gb2YgSmVyb2hhbSwgdGhlIHNvbiBvZiBFbGllbCwgdGhlIHNvbiBvZiBUb2FoLApUaGUgc29uIG9mIFp1cGgsIHRoZSBzb24gb2YgRWxrYW5haCwgdGhlIHNvbiBvZiBNYWhhdGgsIHRoZSBzb24gb2YgQW1hc2FpLApUaGUgc29uIG9mIEVsa2FuYWgsIHRoZSBzb24gb2YgSm9lbCwgdGhlIHNvbiBvZiBBemFyaWFoLCB0aGUgc29uIG9mIFplcGhhbmlhaCwKVGhlIHNvbiBvZiBUYWhhdGgsIHRoZSBzb24gb2YgQXNzaXIsIHRoZSBzb24gb2YgRWJpYXNhcGgsIHRoZSBzb24gb2YgS29yYWgsClRoZSBzb24gb2YgSXpoYXIsIHRoZSBzb24gb2YgS29oYXRoLCB0aGUgc29uIG9mIExldmksIHRoZSBzb24gb2YgSXNyYWVsLgpBbmQgaGlzIGJyb3RoZXIgQXNhcGgsIHdobyBzdG9vZCBvbiBoaXMgcmlnaHQgaGFuZCwgZXZlbiBBc2FwaCB0aGUgc29uIG9mIEJlcmFjaGlhaCwgdGhlIHNvbiBvZiBTaGltZWEsClRoZSBzb24gb2YgTWljaGFlbCwgdGhlIHNvbiBvZiBCYWFzZWlhaCwgdGhlIHNvbiBvZiBNYWxjaGlhaCwKVGhlIHNvbiBvZiBFdGhuaSwgdGhlIHNvbiBvZiBaZXJhaCwgdGhlIHNvbiBvZiBBZGFpYWgsClRoZSBzb24gb2YgRXRoYW4sIHRoZSBzb24gb2YgWmltbWFoLCB0aGUgc29uIG9mIFNoaW1laSwKVGhlIHNvbiBvZiBKYWhhdGgsIHRoZSBzb24gb2YgR2Vyc2hvbSwgdGhlIHNvbiBvZiBMZXZpLgpBbmQgdGhlaXIgYnJldGhyZW4gdGhlIHNvbnMgb2YgTWVyYXJpIHN0b29kIG9uIHRoZSBsZWZ0IGhhbmQ6IEV0aGFuIHRoZSBzb24gb2YgS2lzaGksIHRoZSBzb24gb2YgQWJkaSwgdGhlIHNvbiBvZiBNYWxsdWNoLApUaGUgc29uIG9mIEhhc2hhYmlhaCwgdGhlIHNvbiBvZiBBbWF6aWFoLCB0aGUgc29uIG9mIEhpbGtpYWgsClRoZSBzb24gb2YgQW16aSwgdGhlIHNvbiBvZiBCYW5pLCB0aGUgc29uIG9mIFNoYW1lciwKVGhlIHNvbiBvZiBNYWhsaSwgdGhlIHNvbiBvZiBNdXNoaSwgdGhlIHNvbiBvZiBNZXJhcmksIHRoZSBzb24gb2YgTGV2aS4KVGhlaXIgYnJldGhyZW4gYWxzbyB0aGUgTGV2aXRlcyB3ZXJlIGFwcG9pbnRlZCB1bnRvIGFsbCBtYW5uZXIgb2Ygc2VydmljZSBvZiB0aGUgdGFiZXJuYWNsZSBvZiB0aGUgaG91c2Ugb2YgR29kLgpCdXQgQWFyb24gYW5kIGhpcyBzb25zIG9mZmVyZWQgdXBvbiB0aGUgYWx0YXIgb2YgdGhlIGJ1cm50IG9mZmVyaW5nLCBhbmQgb24gdGhlIGFsdGFyIG9mIGluY2Vuc2UsIGFuZCB3ZXJlIGFwcG9pbnRlZCBmb3IgYWxsIHRoZSB3b3JrIG9mIHRoZSBwbGFjZSBtb3N0IGhvbHksIGFuZCB0byBtYWtlIGFuIGF0b25lbWVudCBmb3IgSXNyYWVsLCBhY2NvcmRpbmcgdG8gYWxsIHRoYXQgTW9zZXMgdGhlIHNlcnZhbnQgb2YgR29kIGhhZCBjb21tYW5kZWQuCkFuZCB0aGVzZSBhcmUgdGhlIHNvbnMgb2YgQWFyb247IEVsZWF6YXIgaGlzIHNvbiwgUGhpbmVoYXMgaGlzIHNvbiwgQWJpc2h1YSBoaXMgc29uLApCdWtraSBoaXMgc29uLCBVenppIGhpcyBzb24sIFplcmFoaWFoIGhpcyBzb24sCk1lcmFpb3RoIGhpcyBzb24sIEFtYXJpYWggaGlzIHNvbiwgQWhpdHViIGhpcyBzb24sClphZG9rIGhpcyBzb24sIEFoaW1hYXogaGlzIHNvbi4KTm93IHRoZXNlIGFyZSB0aGVpciBkd2VsbGluZyBwbGFjZXMgdGhyb3VnaG91dCB0aGVpciBjYXN0bGVzIGluIHRoZWlyIGNvYXN0cywgb2YgdGhlIHNvbnMgb2YgQWFyb24sIG9mIHRoZSBmYW1pbGllcyBvZiB0aGUgS29oYXRoaXRlczogZm9yIHRoZWlycyB3YXMgdGhlIGxvdC4KQW5kIHRoZXkgZ2F2ZSB0aGVtIEhlYnJvbiBpbiB0aGUgbGFuZCBvZiBKdWRhaCwgYW5kIHRoZSBzdWJ1cmJzIHRoZXJlb2Ygcm91bmQgYWJvdXQgaXQuCkJ1dCB0aGUgZmllbGRzIG9mIHRoZSBjaXR5LCBhbmQgdGhlIHZpbGxhZ2VzIHRoZXJlb2YsIHRoZXkgZ2F2ZSB0byBDYWxlYiB0aGUgc29uIG9mIEplcGh1bm5laC4KQW5kIHRvIHRoZSBzb25zIG9mIEFhcm9uIHRoZXkgZ2F2ZSB0aGUgY2l0aWVzIG9mIEp1ZGFoLCBuYW1lbHksIEhlYnJvbiwgdGhlIGNpdHkgb2YgcmVmdWdlLCBhbmQgTGlibmFoIHdpdGggaGVyIHN1YnVyYnMsIGFuZCBKYXR0aXIsIGFuZCBFc2h0ZW1vYSwgd2l0aCB0aGVpciBzdWJ1cmJzLApBbmQgSGlsZW4gd2l0aCBoZXIgc3VidXJicywgRGViaXIgd2l0aCBoZXIgc3VidXJicywKQW5kIEFzaGFuIHdpdGggaGVyIHN1YnVyYnMsIGFuZCBCZXRoc2hlbWVzaCB3aXRoIGhlciBzdWJ1cmJzOgpBbmQgb3V0IG9mIHRoZSB0cmliZSBvZiBCZW5qYW1pbjsgR2ViYSB3aXRoIGhlciBzdWJ1cmJzLCBhbmQgQWxlbWV0aCB3aXRoIGhlciBzdWJ1cmJzLCBhbmQgQW5hdGhvdGggd2l0aCBoZXIgc3VidXJicy4gQWxsIHRoZWlyIGNpdGllcyB0aHJvdWdob3V0IHRoZWlyIGZhbWlsaWVzIHdlcmUgdGhpcnRlZW4gY2l0aWVzLgpBbmQgdW50byB0aGUgc29ucyBvZiBLb2hhdGgsIHdoaWNoIHdlcmUgbGVmdCBvZiB0aGUgZmFtaWx5IG9mIHRoYXQgdHJpYmUsIHdlcmUgY2l0aWVzIGdpdmVuIG91dCBvZiB0aGUgaGFsZiB0cmliZSwgbmFtZWx5LCBvdXQgb2YgdGhlIGhhbGYgdHJpYmUgb2YgTWFuYXNzZWgsIGJ5IGxvdCwgdGVuIGNpdGllcy4KQW5kIHRvIHRoZSBzb25zIG9mIEdlcnNob20gdGhyb3VnaG91dCB0aGVpciBmYW1pbGllcyBvdXQgb2YgdGhlIHRyaWJlIG9mIElzc2FjaGFyLCBhbmQgb3V0IG9mIHRoZSB0cmliZSBvZiBBc2hlciwgYW5kIG91dCBvZiB0aGUgdHJpYmUgb2YgTmFwaHRhbGksIGFuZCBvdXQgb2YgdGhlIHRyaWJlIG9mIE1hbmFzc2VoIGluIEJhc2hhbiwgdGhpcnRlZW4gY2l0aWVzLgpVbnRvIHRoZSBzb25zIG9mIE1lcmFyaSB3ZXJlIGdpdmVuIGJ5IGxvdCwgdGhyb3VnaG91dCB0aGVpciBmYW1pbGllcywgb3V0IG9mIHRoZSB0cmliZSBvZiBSZXViZW4sIGFuZCBvdXQgb2YgdGhlIHRyaWJlIG9mIEdhZCwgYW5kIG91dCBvZiB0aGUgdHJpYmUgb2YgWmVidWx1biwgdHdlbHZlIGNpdGllcy4KQW5kIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgZ2F2ZSB0byB0aGUgTGV2aXRlcyB0aGVzZSBjaXRpZXMgd2l0aCB0aGVpciBzdWJ1cmJzLgpBbmQgdGhleSBnYXZlIGJ5IGxvdCBvdXQgb2YgdGhlIHRyaWJlIG9mIHRoZSBjaGlsZHJlbiBvZiBKdWRhaCwgYW5kIG91dCBvZiB0aGUgdHJpYmUgb2YgdGhlIGNoaWxkcmVuIG9mIFNpbWVvbiwgYW5kIG91dCBvZiB0aGUgdHJpYmUgb2YgdGhlIGNoaWxkcmVuIG9mIEJlbmphbWluLCB0aGVzZSBjaXRpZXMsIHdoaWNoIGFyZSBjYWxsZWQgYnkgdGhlaXIgbmFtZXMuCkFuZCB0aGUgcmVzaWR1ZSBvZiB0aGUgZmFtaWxpZXMgb2YgdGhlIHNvbnMgb2YgS29oYXRoIGhhZCBjaXRpZXMgb2YgdGhlaXIgY29hc3RzIG91dCBvZiB0aGUgdHJpYmUgb2YgRXBocmFpbS4KQW5kIHRoZXkgZ2F2ZSB1bnRvIHRoZW0sIG9mIHRoZSBjaXRpZXMgb2YgcmVmdWdlLCBTaGVjaGVtIGluIG1vdW50IEVwaHJhaW0gd2l0aCBoZXIgc3VidXJiczsgdGhleSBnYXZlIGFsc28gR2V6ZXIgd2l0aCBoZXIgc3VidXJicywKQW5kIEpva21lYW0gd2l0aCBoZXIgc3VidXJicywgYW5kIEJldGhob3JvbiB3aXRoIGhlciBzdWJ1cmJzLApBbmQgQWlqYWxvbiB3aXRoIGhlciBzdWJ1cmJzLCBhbmQgR2F0aHJpbW1vbiB3aXRoIGhlciBzdWJ1cmJzOgpBbmQgb3V0IG9mIHRoZSBoYWxmIHRyaWJlIG9mIE1hbmFzc2VoOyBBbmVyIHdpdGggaGVyIHN1YnVyYnMsIGFuZCBCaWxlYW0gd2l0aCBoZXIgc3VidXJicywgZm9yIHRoZSBmYW1pbHkgb2YgdGhlIHJlbW5hbnQgb2YgdGhlIHNvbnMgb2YgS29oYXRoLgpVbnRvIHRoZSBzb25zIG9mIEdlcnNob20gd2VyZSBnaXZlbiBvdXQgb2YgdGhlIGZhbWlseSBvZiB0aGUgaGFsZiB0cmliZSBvZiBNYW5hc3NlaCwgR29sYW4gaW4gQmFzaGFuIHdpdGggaGVyIHN1YnVyYnMsIGFuZCBBc2h0YXJvdGggd2l0aCBoZXIgc3VidXJiczoKQW5kIG91dCBvZiB0aGUgdHJpYmUgb2YgSXNzYWNoYXI7IEtlZGVzaCB3aXRoIGhlciBzdWJ1cmJzLCBEYWJlcmF0aCB3aXRoIGhlciBzdWJ1cmJzLApBbmQgUmFtb3RoIHdpdGggaGVyIHN1YnVyYnMsIGFuZCBBbmVtIHdpdGggaGVyIHN1YnVyYnM6CkFuZCBvdXQgb2YgdGhlIHRyaWJlIG9mIEFzaGVyOyBNYXNoYWwgd2l0aCBoZXIgc3VidXJicywgYW5kIEFiZG9uIHdpdGggaGVyIHN1YnVyYnMsCkFuZCBIdWtvayB3aXRoIGhlciBzdWJ1cmJzLCBhbmQgUmVob2Igd2l0aCBoZXIgc3VidXJiczoKQW5kIG91dCBvZiB0aGUgdHJpYmUgb2YgTmFwaHRhbGk7IEtlZGVzaCBpbiBHYWxpbGVlIHdpdGggaGVyIHN1YnVyYnMsIGFuZCBIYW1tb24gd2l0aCBoZXIgc3VidXJicywgYW5kIEtpcmphdGhhaW0gd2l0aCBoZXIgc3VidXJicy4KVW50byB0aGUgcmVzdCBvZiB0aGUgY2hpbGRyZW4gb2YgTWVyYXJpIHdlcmUgZ2l2ZW4gb3V0IG9mIHRoZSB0cmliZSBvZiBaZWJ1bHVuLCBSaW1tb24gd2l0aCBoZXIgc3VidXJicywgVGFib3Igd2l0aCBoZXIgc3VidXJiczoKQW5kIG9uIHRoZSBvdGhlciBzaWRlIEpvcmRhbiBieSBKZXJpY2hvLCBvbiB0aGUgZWFzdCBzaWRlIG9mIEpvcmRhbiwgd2VyZSBnaXZlbiB0aGVtIG91dCBvZiB0aGUgdHJpYmUgb2YgUmV1YmVuLCBCZXplciBpbiB0aGUgd2lsZGVybmVzcyB3aXRoIGhlciBzdWJ1cmJzLCBhbmQgSmFoemFoIHdpdGggaGVyIHN1YnVyYnMsCktlZGVtb3RoIGFsc28gd2l0aCBoZXIgc3VidXJicywgYW5kIE1lcGhhYXRoIHdpdGggaGVyIHN1YnVyYnM6CkFuZCBvdXQgb2YgdGhlIHRyaWJlIG9mIEdhZDsgUmFtb3RoIGluIEdpbGVhZCB3aXRoIGhlciBzdWJ1cmJzLCBhbmQgTWFoYW5haW0gd2l0aCBoZXIgc3VidXJicywKQW5kIEhlc2hib24gd2l0aCBoZXIgc3VidXJicywgYW5kIEphemVyIHdpdGggaGVyIHN1YnVyYnMuCk5vdyB0aGUgc29ucyBvZiBJc3NhY2hhciB3ZXJlLCBUb2xhLCBhbmQgUHVhaCwgSmFzaHViLCBhbmQgU2hpbXJvbSwgZm91ci4KQW5kIHRoZSBzb25zIG9mIFRvbGE7IFV6emksIGFuZCBSZXBoYWlhaCwgYW5kIEplcmllbCwgYW5kIEphaG1haSwgYW5kIEppYnNhbSwgYW5kIFNoZW11ZWwsIGhlYWRzIG9mIHRoZWlyIGZhdGhlcidzIGhvdXNlLCB0byB3aXQsIG9mIFRvbGE6IHRoZXkgd2VyZSB2YWxpYW50IG1lbiBvZiBtaWdodCBpbiB0aGVpciBnZW5lcmF0aW9uczsgd2hvc2UgbnVtYmVyIHdhcyBpbiB0aGUgZGF5cyBvZiBEYXZpZCB0d28gYW5kIHR3ZW50eSB0aG91c2FuZCBhbmQgc2l4IGh1bmRyZWQuCkFuZCB0aGUgc29ucyBvZiBVenppOyBJenJhaGlhaDogYW5kIHRoZSBzb25zIG9mIEl6cmFoaWFoOyBNaWNoYWVsLCBhbmQgT2JhZGlhaCwgYW5kIEpvZWwsIElzaGlhaCwgZml2ZTogYWxsIG9mIHRoZW0gY2hpZWYgbWVuLgpBbmQgd2l0aCB0aGVtLCBieSB0aGVpciBnZW5lcmF0aW9ucywgYWZ0ZXIgdGhlIGhvdXNlIG9mIHRoZWlyIGZhdGhlcnMsIHdlcmUgYmFuZHMgb2Ygc29sZGllcnMgZm9yIHdhciwgc2l4IGFuZCB0aGlydHkgdGhvdXNhbmQgbWVuOiBmb3IgdGhleSBoYWQgbWFueSB3aXZlcyBhbmQgc29ucy4KQW5kIHRoZWlyIGJyZXRocmVuIGFtb25nIGFsbCB0aGUgZmFtaWxpZXMgb2YgSXNzYWNoYXIgd2VyZSB2YWxpYW50IG1lbiBvZiBtaWdodCwgcmVja29uZWQgaW4gYWxsIGJ5IHRoZWlyIGdlbmVhbG9naWVzIGZvdXJzY29yZSBhbmQgc2V2ZW4gdGhvdXNhbmQuClRoZSBzb25zIG9mIEJlbmphbWluOyBCZWxhLCBhbmQgQmVjaGVyLCBhbmQgSmVkaWFlbCwgdGhyZWUuCkFuZCB0aGUgc29ucyBvZiBCZWxhOyBFemJvbiwgYW5kIFV6emksIGFuZCBVenppZWwsIGFuZCBKZXJpbW90aCwgYW5kIElyaSwgZml2ZTsgaGVhZHMgb2YgdGhlIGhvdXNlIG9mIHRoZWlyIGZhdGhlcnMsIG1pZ2h0eSBtZW4gb2YgdmFsb3VyOyBhbmQgd2VyZSByZWNrb25lZCBieSB0aGVpciBnZW5lYWxvZ2llcyB0d2VudHkgYW5kIHR3byB0aG91c2FuZCBhbmQgdGhpcnR5IGFuZCBmb3VyLgpBbmQgdGhlIHNvbnMgb2YgQmVjaGVyOyBaZW1pcmEsIGFuZCBKb2FzaCwgYW5kIEVsaWV6ZXIsIGFuZCBFbGlvZW5haSwgYW5kIE9tcmksIGFuZCBKZXJpbW90aCwgYW5kIEFiaWFoLCBhbmQgQW5hdGhvdGgsIGFuZCBBbGFtZXRoLiBBbGwgdGhlc2UgYXJlIHRoZSBzb25zIG9mIEJlY2hlci4KQW5kIHRoZSBudW1iZXIgb2YgdGhlbSwgYWZ0ZXIgdGhlaXIgZ2VuZWFsb2d5IGJ5IHRoZWlyIGdlbmVyYXRpb25zLCBoZWFkcyBvZiB0aGUgaG91c2Ugb2YgdGhlaXIgZmF0aGVycywgbWlnaHR5IG1lbiBvZiB2YWxvdXIsIHdhcyB0d2VudHkgdGhvdXNhbmQgYW5kIHR3byBodW5kcmVkLgpUaGUgc29ucyBhbHNvIG9mIEplZGlhZWw7IEJpbGhhbjogYW5kIHRoZSBzb25zIG9mIEJpbGhhbjsgSmV1c2gsIGFuZCBCZW5qYW1pbiwgYW5kIEVodWQsIGFuZCBDaGVuYWFuYWgsIGFuZCBaZXRoYW4sIGFuZCBUaGFyc2hpc2gsIGFuZCBBaGlzaGFoYXIuCkFsbCB0aGVzZSB0aGUgc29ucyBvZiBKZWRpYWVsLCBieSB0aGUgaGVhZHMgb2YgdGhlaXIgZmF0aGVycywgbWlnaHR5IG1lbiBvZiB2YWxvdXIsIHdlcmUgc2V2ZW50ZWVuIHRob3VzYW5kIGFuZCB0d28gaHVuZHJlZCBzb2xkaWVycywgZml0IHRvIGdvIG91dCBmb3Igd2FyIGFuZCBiYXR0bGUuClNodXBwaW0gYWxzbywgYW5kIEh1cHBpbSwgdGhlIGNoaWxkcmVuIG9mIElyLCBhbmQgSHVzaGltLCB0aGUgc29ucyBvZiBBaGVyLgpUaGUgc29ucyBvZiBOYXBodGFsaTsgSmFoemllbCwgYW5kIEd1bmksIGFuZCBKZXplciwgYW5kIFNoYWxsdW0sIHRoZSBzb25zIG9mIEJpbGhhaC4KVGhlIHNvbnMgb2YgTWFuYXNzZWg7IEFzaHJpZWwsIHdob20gc2hlIGJhcmU6IChidXQgaGlzIGNvbmN1YmluZSB0aGUgQXJhbWl0ZXNzIGJhcmUgTWFjaGlyIHRoZSBmYXRoZXIgb2YgR2lsZWFkOgpBbmQgTWFjaGlyIHRvb2sgdG8gd2lmZSB0aGUgc2lzdGVyIG9mIEh1cHBpbSBhbmQgU2h1cHBpbSwgd2hvc2Ugc2lzdGVyJ3MgbmFtZSB3YXMgTWFhY2hhaDspIGFuZCB0aGUgbmFtZSBvZiB0aGUgc2Vjb25kIHdhcyBaZWxvcGhlaGFkOiBhbmQgWmVsb3BoZWhhZCBoYWQgZGF1Z2h0ZXJzLgpBbmQgTWFhY2hhaCB0aGUgd2lmZSBvZiBNYWNoaXIgYmFyZSBhIHNvbiwgYW5kIHNoZSBjYWxsZWQgaGlzIG5hbWUgUGVyZXNoOyBhbmQgdGhlIG5hbWUgb2YgaGlzIGJyb3RoZXIgd2FzIFNoZXJlc2g7IGFuZCBoaXMgc29ucyB3ZXJlIFVsYW0gYW5kIFJha2VtLgpBbmQgdGhlIHNvbnMgb2YgVWxhbTsgQmVkYW4uIFRoZXNlIHdlcmUgdGhlIHNvbnMgb2YgR2lsZWFkLCB0aGUgc29uIG9mIE1hY2hpciwgdGhlIHNvbiBvZiBNYW5hc3NlaC4KQW5kIGhpcyBzaXN0ZXIgSGFtbW9sZWtldGggYmFyZSBJc2hvZCwgYW5kIEFiaWV6ZXIsIGFuZCBNYWhhbGFoLgpBbmQgdGhlIHNvbnMgb2YgU2hlbWlkYWggd2VyZSwgQWhpYW4sIGFuZCBTaGVjaGVtLCBhbmQgTGlraGksIGFuZCBBbmlhbS4KQW5kIHRoZSBzb25zIG9mIEVwaHJhaW07IFNodXRoZWxhaCwgYW5kIEJlcmVkIGhpcyBzb24sIGFuZCBUYWhhdGggaGlzIHNvbiwgYW5kIEVsYWRhaCBoaXMgc29uLCBhbmQgVGFoYXRoIGhpcyBzb24sCkFuZCBaYWJhZCBoaXMgc29uLCBhbmQgU2h1dGhlbGFoIGhpcyBzb24sIGFuZCBFemVyLCBhbmQgRWxlYWQsIHdob20gdGhlIG1lbiBvZiBHYXRoIHRoYXQgd2VyZSBib3JuIGluIHRoYXQgbGFuZCBzbGV3LCBiZWNhdXNlIHRoZXkgY2FtZSBkb3duIHRvIHRha2UgYXdheSB0aGVpciBjYXR0bGUuCkFuZCBFcGhyYWltIHRoZWlyIGZhdGhlciBtb3VybmVkIG1hbnkgZGF5cywgYW5kIGhpcyBicmV0aHJlbiBjYW1lIHRvIGNvbWZvcnQgaGltLgpBbmQgd2hlbiBoZSB3ZW50IGluIHRvIGhpcyB3aWZlLCBzaGUgY29uY2VpdmVkLCBhbmQgYmFyZSBhIHNvbiwgYW5kIGhlIGNhbGxlZCBoaXMgbmFtZSBCZXJpYWgsIGJlY2F1c2UgaXQgd2VudCBldmlsIHdpdGggaGlzIGhvdXNlLgooQW5kIGhpcyBkYXVnaHRlciB3YXMgU2hlcmFoLCB3aG8gYnVpbHQgQmV0aGhvcm9uIHRoZSBuZXRoZXIsIGFuZCB0aGUgdXBwZXIsIGFuZCBVenplbnNoZXJhaC4pCkFuZCBSZXBoYWggd2FzIGhpcyBzb24sIGFsc28gUmVzaGVwaCwgYW5kIFRlbGFoIGhpcyBzb24sIGFuZCBUYWhhbiBoaXMgc29uLgpMYWFkYW4gaGlzIHNvbiwgQW1taWh1ZCBoaXMgc29uLCBFbGlzaGFtYSBoaXMgc29uLgpOb24gaGlzIHNvbiwgSmVob3NodWFoIGhpcyBzb24uCkFuZCB0aGVpciBwb3NzZXNzaW9ucyBhbmQgaGFiaXRhdGlvbnMgd2VyZSwgQmV0aGVsIGFuZCB0aGUgdG93bnMgdGhlcmVvZiwgYW5kIGVhc3R3YXJkIE5hYXJhbiwgYW5kIHdlc3R3YXJkIEdlemVyLCB3aXRoIHRoZSB0b3ducyB0aGVyZW9mOyBTaGVjaGVtIGFsc28gYW5kIHRoZSB0b3ducyB0aGVyZW9mLCB1bnRvIEdhemEgYW5kIHRoZSB0b3ducyB0aGVyZW9mOgpBbmQgYnkgdGhlIGJvcmRlcnMgb2YgdGhlIGNoaWxkcmVuIG9mIE1hbmFzc2VoLCBCZXRoc2hlYW4gYW5kIGhlciB0b3ducywgVGFhbmFjaCBhbmQgaGVyIHRvd25zLCBNZWdpZGRvIGFuZCBoZXIgdG93bnMsIERvciBhbmQgaGVyIHRvd25zLiBJbiB0aGVzZSBkd2VsdCB0aGUgY2hpbGRyZW4gb2YgSm9zZXBoIHRoZSBzb24gb2YgSXNyYWVsLgpUaGUgc29ucyBvZiBBc2hlcjsgSW1uYWgsIGFuZCBJc3VhaCwgYW5kIElzaHVhaSwgYW5kIEJlcmlhaCwgYW5kIFNlcmFoIHRoZWlyIHNpc3Rlci4KQW5kIHRoZSBzb25zIG9mIEJlcmlhaDsgSGViZXIsIGFuZCBNYWxjaGllbCwgd2hvIGlzIHRoZSBmYXRoZXIgb2YgQmlyemF2aXRoLgpBbmQgSGViZXIgYmVnYXQgSmFwaGxldCwgYW5kIFNob21lciwgYW5kIEhvdGhhbSwgYW5kIFNodWEgdGhlaXIgc2lzdGVyLgpBbmQgdGhlIHNvbnMgb2YgSmFwaGxldDsgUGFzYWNoLCBhbmQgQmltaGFsLCBhbmQgQXNodmF0aC4gVGhlc2UgYXJlIHRoZSBjaGlsZHJlbiBvZiBKYXBobGV0LgpBbmQgdGhlIHNvbnMgb2YgU2hhbWVyOyBBaGksIGFuZCBSb2hnYWgsIEplaHViYmFoLCBhbmQgQXJhbS4KQW5kIHRoZSBzb25zIG9mIGhpcyBicm90aGVyIEhlbGVtOyBab3BoYWgsIGFuZCBJbW5hLCBhbmQgU2hlbGVzaCwgYW5kIEFtYWwuClRoZSBzb25zIG9mIFpvcGhhaDsgU3VhaCwgYW5kIEhhcm5lcGhlciwgYW5kIFNodWFsLCBhbmQgQmVyaSwgYW5kIEltcmFoLApCZXplciwgYW5kIEhvZCwgYW5kIFNoYW1tYSwgYW5kIFNoaWxzaGFoLCBhbmQgSXRocmFuLCBhbmQgQmVlcmEuCkFuZCB0aGUgc29ucyBvZiBKZXRoZXI7IEplcGh1bm5laCwgYW5kIFBpc3BhaCwgYW5kIEFyYS4KQW5kIHRoZSBzb25zIG9mIFVsbGE7IEFyYWgsIGFuZCBIYW5pZWwsIGFuZCBSZXppYS4KQWxsIHRoZXNlIHdlcmUgdGhlIGNoaWxkcmVuIG9mIEFzaGVyLCBoZWFkcyBvZiB0aGVpciBmYXRoZXIncyBob3VzZSwgY2hvaWNlIGFuZCBtaWdodHkgbWVuIG9mIHZhbG91ciwgY2hpZWYgb2YgdGhlIHByaW5jZXMuIEFuZCB0aGUgbnVtYmVyIHRocm91Z2hvdXQgdGhlIGdlbmVhbG9neSBvZiB0aGVtIHRoYXQgd2VyZSBhcHQgdG8gdGhlIHdhciBhbmQgdG8gYmF0dGxlIHdhcyB0d2VudHkgYW5kIHNpeCB0aG91c2FuZCBtZW4uCk5vdyBCZW5qYW1pbiBiZWdhdCBCZWxhIGhpcyBmaXJzdGJvcm4sIEFzaGJlbCB0aGUgc2Vjb25kLCBhbmQgQWhhcmFoIHRoZSB0aGlyZCwKTm9oYWggdGhlIGZvdXJ0aCwgYW5kIFJhcGhhIHRoZSBmaWZ0aC4KQW5kIHRoZSBzb25zIG9mIEJlbGEgd2VyZSwgQWRkYXIsIGFuZCBHZXJhLCBhbmQgQWJpaHVkLApBbmQgQWJpc2h1YSwgYW5kIE5hYW1hbiwgYW5kIEFob2FoLApBbmQgR2VyYSwgYW5kIFNoZXBodXBoYW4sIGFuZCBIdXJhbS4KQW5kIHRoZXNlIGFyZSB0aGUgc29ucyBvZiBFaHVkOiB0aGVzZSBhcmUgdGhlIGhlYWRzIG9mIHRoZSBmYXRoZXJzIG9mIHRoZSBpbmhhYml0YW50cyBvZiBHZWJhLCBhbmQgdGhleSByZW1vdmVkIHRoZW0gdG8gTWFuYWhhdGg6CkFuZCBOYWFtYW4sIGFuZCBBaGlhaCwgYW5kIEdlcmEsIGhlIHJlbW92ZWQgdGhlbSwgYW5kIGJlZ2F0IFV6emEsIGFuZCBBaGlodWQuCkFuZCBTaGFoYXJhaW0gYmVnYXQgY2hpbGRyZW4gaW4gdGhlIGNvdW50cnkgb2YgTW9hYiwgYWZ0ZXIgaGUgaGFkIHNlbnQgdGhlbSBhd2F5OyBIdXNoaW0gYW5kIEJhYXJhIHdlcmUgaGlzIHdpdmVzLgpBbmQgaGUgYmVnYXQgb2YgSG9kZXNoIGhpcyB3aWZlLCBKb2JhYiwgYW5kIFppYmlhLCBhbmQgTWVzaGEsIGFuZCBNYWxjaGFtLApBbmQgSmV1eiwgYW5kIFNoYWNoaWEsIGFuZCBNaXJtYS4gVGhlc2Ugd2VyZSBoaXMgc29ucywgaGVhZHMgb2YgdGhlIGZhdGhlcnMuCkFuZCBvZiBIdXNoaW0gaGUgYmVnYXQgQWJpdHViLCBhbmQgRWxwYWFsLgpUaGUgc29ucyBvZiBFbHBhYWw7IEViZXIsIGFuZCBNaXNoYW0sIGFuZCBTaGFtZWQsIHdobyBidWlsdCBPbm8sIGFuZCBMb2QsIHdpdGggdGhlIHRvd25zIHRoZXJlb2Y6CkJlcmlhaCBhbHNvLCBhbmQgU2hlbWEsIHdobyB3ZXJlIGhlYWRzIG9mIHRoZSBmYXRoZXJzIG9mIHRoZSBpbmhhYml0YW50cyBvZiBBaWphbG9uLCB3aG8gZHJvdmUgYXdheSB0aGUgaW5oYWJpdGFudHMgb2YgR2F0aDoKQW5kIEFoaW8sIFNoYXNoYWssIGFuZCBKZXJlbW90aCwKQW5kIFplYmFkaWFoLCBhbmQgQXJhZCwgYW5kIEFkZXIsCkFuZCBNaWNoYWVsLCBhbmQgSXNwYWgsIGFuZCBKb2hhLCB0aGUgc29ucyBvZiBCZXJpYWg7CkFuZCBaZWJhZGlhaCwgYW5kIE1lc2h1bGxhbSwgYW5kIEhlemVraSwgYW5kIEhlYmVyLApJc2htZXJhaSBhbHNvLCBhbmQgSmV6bGlhaCwgYW5kIEpvYmFiLCB0aGUgc29ucyBvZiBFbHBhYWw7CkFuZCBKYWtpbSwgYW5kIFppY2hyaSwgYW5kIFphYmRpLApBbmQgRWxpZW5haSwgYW5kIFppbHRoYWksIGFuZCBFbGllbCwKQW5kIEFkYWlhaCwgYW5kIEJlcmFpYWgsIGFuZCBTaGltcmF0aCwgdGhlIHNvbnMgb2YgU2hpbWhpOwpBbmQgSXNocGFuLCBhbmQgSGViZXIsIGFuZCBFbGllbCwKQW5kIEFiZG9uLCBhbmQgWmljaHJpLCBhbmQgSGFuYW4sCkFuZCBIYW5hbmlhaCwgYW5kIEVsYW0sIGFuZCBBbnRvdGhpamFoLApBbmQgSXBoZWRlaWFoLCBhbmQgUGVudWVsLCB0aGUgc29ucyBvZiBTaGFzaGFrOwpBbmQgU2hhbXNoZXJhaSwgYW5kIFNoZWhhcmlhaCwgYW5kIEF0aGFsaWFoLApBbmQgSmFyZXNpYWgsIGFuZCBFbGlhaCwgYW5kIFppY2hyaSwgdGhlIHNvbnMgb2YgSmVyb2hhbS4KVGhlc2Ugd2VyZSBoZWFkcyBvZiB0aGUgZmF0aGVycywgYnkgdGhlaXIgZ2VuZXJhdGlvbnMsIGNoaWVmIG1lbi4gVGhlc2UgZHdlbHQgaW4gSmVydXNhbGVtLgpBbmQgYXQgR2liZW9uIGR3ZWx0IHRoZSBmYXRoZXIgb2YgR2liZW9uOyB3aG9zZSB3aWZlJ3MgbmFtZSB3YXMgTWFhY2hhaDoKQW5kIGhpcyBmaXJzdGJvcm4gc29uIEFiZG9uLCBhbmQgWnVyLCBhbmQgS2lzaCwgYW5kIEJhYWwsIGFuZCBOYWRhYiwKQW5kIEdlZG9yLCBhbmQgQWhpbywgYW5kIFphY2hlci4KQW5kIE1pa2xvdGggYmVnYXQgU2hpbWVhaC4gQW5kIHRoZXNlIGFsc28gZHdlbHQgd2l0aCB0aGVpciBicmV0aHJlbiBpbiBKZXJ1c2FsZW0sIG92ZXIgYWdhaW5zdCB0aGVtLgpBbmQgTmVyIGJlZ2F0IEtpc2gsIGFuZCBLaXNoIGJlZ2F0IFNhdWwsIGFuZCBTYXVsIGJlZ2F0IEpvbmF0aGFuLCBhbmQgTWFsY2hpc2h1YSwgYW5kIEFiaW5hZGFiLCBhbmQgRXNoYmFhbC4KQW5kIHRoZSBzb24gb2YgSm9uYXRoYW4gd2FzIE1lcmliYmFhbDsgYW5kIE1lcmliYmFhbCBiZWdhdCBNaWNhaC4KQW5kIHRoZSBzb25zIG9mIE1pY2FoIHdlcmUsIFBpdGhvbiwgYW5kIE1lbGVjaCwgYW5kIFRhcmVhLCBhbmQgQWhhei4KQW5kIEFoYXogYmVnYXQgSmVob2FkYWg7IGFuZCBKZWhvYWRhaCBiZWdhdCBBbGVtZXRoLCBhbmQgQXptYXZldGgsIGFuZCBaaW1yaTsgYW5kIFppbXJpIGJlZ2F0IE1vemEsCkFuZCBNb3phIGJlZ2F0IEJpbmVhOiBSYXBoYSB3YXMgaGlzIHNvbiwgRWxlYXNhaCBoaXMgc29uLCBBemVsIGhpcyBzb246CkFuZCBBemVsIGhhZCBzaXggc29ucywgd2hvc2UgbmFtZXMgYXJlIHRoZXNlLCBBenJpa2FtLCBCb2NoZXJ1LCBhbmQgSXNobWFlbCwgYW5kIFNoZWFyaWFoLCBhbmQgT2JhZGlhaCwgYW5kIEhhbmFuLiBBbGwgdGhlc2Ugd2VyZSB0aGUgc29ucyBvZiBBemVsLgpBbmQgdGhlIHNvbnMgb2YgRXNoZWsgaGlzIGJyb3RoZXIgd2VyZSwgVWxhbSBoaXMgZmlyc3Rib3JuLCBKZWh1c2ggdGhlIHNlY29uZCwgYW5kIEVsaXBoZWxldCB0aGUgdGhpcmQuCkFuZCB0aGUgc29ucyBvZiBVbGFtIHdlcmUgbWlnaHR5IG1lbiBvZiB2YWxvdXIsIGFyY2hlcnMsIGFuZCBoYWQgbWFueSBzb25zLCBhbmQgc29ucycgc29ucywgYW4gaHVuZHJlZCBhbmQgZmlmdHkuIEFsbCB0aGVzZSBhcmUgb2YgdGhlIHNvbnMgb2YgQmVuamFtaW4uClNvIGFsbCBJc3JhZWwgd2VyZSByZWNrb25lZCBieSBnZW5lYWxvZ2llczsgYW5kLCBiZWhvbGQsIHRoZXkgd2VyZSB3cml0dGVuIGluIHRoZSBib29rIG9mIHRoZSBraW5ncyBvZiBJc3JhZWwgYW5kIEp1ZGFoLCB3aG8gd2VyZSBjYXJyaWVkIGF3YXkgdG8gQmFieWxvbiBmb3IgdGhlaXIgdHJhbnNncmVzc2lvbi4KTm93IHRoZSBmaXJzdCBpbmhhYml0YW50cyB0aGF0IGR3ZWx0IGluIHRoZWlyIHBvc3Nlc3Npb25zIGluIHRoZWlyIGNpdGllcyB3ZXJlLCB0aGUgSXNyYWVsaXRlcywgdGhlIHByaWVzdHMsIExldml0ZXMsIGFuZCB0aGUgTmV0aGluaW1zLgpBbmQgaW4gSmVydXNhbGVtIGR3ZWx0IG9mIHRoZSBjaGlsZHJlbiBvZiBKdWRhaCwgYW5kIG9mIHRoZSBjaGlsZHJlbiBvZiBCZW5qYW1pbiwgYW5kIG9mIHRoZSBjaGlsZHJlbiBvZiBFcGhyYWltLCBhbmQgTWFuYXNzZWg7ClV0aGFpIHRoZSBzb24gb2YgQW1taWh1ZCwgdGhlIHNvbiBvZiBPbXJpLCB0aGUgc29uIG9mIEltcmksIHRoZSBzb24gb2YgQmFuaSwgb2YgdGhlIGNoaWxkcmVuIG9mIFBoYXJleiB0aGUgc29uIG9mIEp1ZGFoLgpBbmQgb2YgdGhlIFNoaWxvbml0ZXM7IEFzYWlhaCB0aGUgZmlyc3Rib3JuLCBhbmQgaGlzIHNvbnMuCkFuZCBvZiB0aGUgc29ucyBvZiBaZXJhaDsgSmV1ZWwsIGFuZCB0aGVpciBicmV0aHJlbiwgc2l4IGh1bmRyZWQgYW5kIG5pbmV0eS4KQW5kIG9mIHRoZSBzb25zIG9mIEJlbmphbWluOyBTYWxsdSB0aGUgc29uIG9mIE1lc2h1bGxhbSwgdGhlIHNvbiBvZiBIb2RhdmlhaCwgdGhlIHNvbiBvZiBIYXNlbnVhaCwKQW5kIElibmVpYWggdGhlIHNvbiBvZiBKZXJvaGFtLCBhbmQgRWxhaCB0aGUgc29uIG9mIFV6emksIHRoZSBzb24gb2YgTWljaHJpLCBhbmQgTWVzaHVsbGFtIHRoZSBzb24gb2YgU2hlcGhhdGhpYWgsIHRoZSBzb24gb2YgUmV1ZWwsIHRoZSBzb24gb2YgSWJuaWphaDsKQW5kIHRoZWlyIGJyZXRocmVuLCBhY2NvcmRpbmcgdG8gdGhlaXIgZ2VuZXJhdGlvbnMsIG5pbmUgaHVuZHJlZCBhbmQgZmlmdHkgYW5kIHNpeC4gQWxsIHRoZXNlIG1lbiB3ZXJlIGNoaWVmIG9mIHRoZSBmYXRoZXJzIGluIHRoZSBob3VzZSBvZiB0aGVpciBmYXRoZXJzLgpBbmQgb2YgdGhlIHByaWVzdHM7IEplZGFpYWgsIGFuZCBKZWhvaWFyaWIsIGFuZCBKYWNoaW4sCkFuZCBBemFyaWFoIHRoZSBzb24gb2YgSGlsa2lhaCwgdGhlIHNvbiBvZiBNZXNodWxsYW0sIHRoZSBzb24gb2YgWmFkb2ssIHRoZSBzb24gb2YgTWVyYWlvdGgsIHRoZSBzb24gb2YgQWhpdHViLCB0aGUgcnVsZXIgb2YgdGhlIGhvdXNlIG9mIEdvZDsKQW5kIEFkYWlhaCB0aGUgc29uIG9mIEplcm9oYW0sIHRoZSBzb24gb2YgUGFzaHVyLCB0aGUgc29uIG9mIE1hbGNoaWphaCwgYW5kIE1hYXNpYWkgdGhlIHNvbiBvZiBBZGllbCwgdGhlIHNvbiBvZiBKYWh6ZXJhaCwgdGhlIHNvbiBvZiBNZXNodWxsYW0sIHRoZSBzb24gb2YgTWVzaGlsbGVtaXRoLCB0aGUgc29uIG9mIEltbWVyOwpBbmQgdGhlaXIgYnJldGhyZW4sIGhlYWRzIG9mIHRoZSBob3VzZSBvZiB0aGVpciBmYXRoZXJzLCBhIHRob3VzYW5kIGFuZCBzZXZlbiBodW5kcmVkIGFuZCB0aHJlZXNjb3JlOyB2ZXJ5IGFibGUgbWVuIGZvciB0aGUgd29yayBvZiB0aGUgc2VydmljZSBvZiB0aGUgaG91c2Ugb2YgR29kLgpBbmQgb2YgdGhlIExldml0ZXM7IFNoZW1haWFoIHRoZSBzb24gb2YgSGFzc2h1YiwgdGhlIHNvbiBvZiBBenJpa2FtLCB0aGUgc29uIG9mIEhhc2hhYmlhaCwgb2YgdGhlIHNvbnMgb2YgTWVyYXJpOwpBbmQgQmFrYmFra2FyLCBIZXJlc2gsIGFuZCBHYWxhbCwgYW5kIE1hdHRhbmlhaCB0aGUgc29uIG9mIE1pY2FoLCB0aGUgc29uIG9mIFppY2hyaSwgdGhlIHNvbiBvZiBBc2FwaDsKQW5kIE9iYWRpYWggdGhlIHNvbiBvZiBTaGVtYWlhaCwgdGhlIHNvbiBvZiBHYWxhbCwgdGhlIHNvbiBvZiBKZWR1dGh1biwgYW5kIEJlcmVjaGlhaCB0aGUgc29uIG9mIEFzYSwgdGhlIHNvbiBvZiBFbGthbmFoLCB0aGF0IGR3ZWx0IGluIHRoZSB2aWxsYWdlcyBvZiB0aGUgTmV0b3BoYXRoaXRlcy4KQW5kIHRoZSBwb3J0ZXJzIHdlcmUsIFNoYWxsdW0sIGFuZCBBa2t1YiwgYW5kIFRhbG1vbiwgYW5kIEFoaW1hbiwgYW5kIHRoZWlyIGJyZXRocmVuOiBTaGFsbHVtIHdhcyB0aGUgY2hpZWY7CldobyBoaXRoZXJ0byB3YWl0ZWQgaW4gdGhlIGtpbmcncyBnYXRlIGVhc3R3YXJkOiB0aGV5IHdlcmUgcG9ydGVycyBpbiB0aGUgY29tcGFuaWVzIG9mIHRoZSBjaGlsZHJlbiBvZiBMZXZpLgpBbmQgU2hhbGx1bSB0aGUgc29uIG9mIEtvcmUsIHRoZSBzb24gb2YgRWJpYXNhcGgsIHRoZSBzb24gb2YgS29yYWgsIGFuZCBoaXMgYnJldGhyZW4sIG9mIHRoZSBob3VzZSBvZiBoaXMgZmF0aGVyLCB0aGUgS29yYWhpdGVzLCB3ZXJlIG92ZXIgdGhlIHdvcmsgb2YgdGhlIHNlcnZpY2UsIGtlZXBlcnMgb2YgdGhlIGdhdGVzIG9mIHRoZSB0YWJlcm5hY2xlOiBhbmQgdGhlaXIgZmF0aGVycywgYmVpbmcgb3ZlciB0aGUgaG9zdCBvZiB0aGUgTE9SRCwgd2VyZSBrZWVwZXJzIG9mIHRoZSBlbnRyeS4KQW5kIFBoaW5laGFzIHRoZSBzb24gb2YgRWxlYXphciB3YXMgdGhlIHJ1bGVyIG92ZXIgdGhlbSBpbiB0aW1lIHBhc3QsIGFuZCB0aGUgTE9SRCB3YXMgd2l0aCBoaW0uCkFuZCBaZWNoYXJpYWggdGhlIHNvbiBvZiBNZXNoZWxlbWlhaCB3YXMgcG9ydGVyIG9mIHRoZSBkb29yIG9mIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBjb25ncmVnYXRpb24uCkFsbCB0aGVzZSB3aGljaCB3ZXJlIGNob3NlbiB0byBiZSBwb3J0ZXJzIGluIHRoZSBnYXRlcyB3ZXJlIHR3byBodW5kcmVkIGFuZCB0d2VsdmUuIFRoZXNlIHdlcmUgcmVja29uZWQgYnkgdGhlaXIgZ2VuZWFsb2d5IGluIHRoZWlyIHZpbGxhZ2VzLCB3aG9tIERhdmlkIGFuZCBTYW11ZWwgdGhlIHNlZXIgZGlkIG9yZGFpbiBpbiB0aGVpciBzZXQgb2ZmaWNlLgpTbyB0aGV5IGFuZCB0aGVpciBjaGlsZHJlbiBoYWQgdGhlIG92ZXJzaWdodCBvZiB0aGUgZ2F0ZXMgb2YgdGhlIGhvdXNlIG9mIHRoZSBMT1JELCBuYW1lbHksIHRoZSBob3VzZSBvZiB0aGUgdGFiZXJuYWNsZSwgYnkgd2FyZHMuCkluIGZvdXIgcXVhcnRlcnMgd2VyZSB0aGUgcG9ydGVycywgdG93YXJkIHRoZSBlYXN0LCB3ZXN0LCBub3J0aCwgYW5kIHNvdXRoLgpBbmQgdGhlaXIgYnJldGhyZW4sIHdoaWNoIHdlcmUgaW4gdGhlaXIgdmlsbGFnZXMsIHdlcmUgdG8gY29tZSBhZnRlciBzZXZlbiBkYXlzIGZyb20gdGltZSB0byB0aW1lIHdpdGggdGhlbS4KRm9yIHRoZXNlIExldml0ZXMsIHRoZSBmb3VyIGNoaWVmIHBvcnRlcnMsIHdlcmUgaW4gdGhlaXIgc2V0IG9mZmljZSwgYW5kIHdlcmUgb3ZlciB0aGUgY2hhbWJlcnMgYW5kIHRyZWFzdXJpZXMgb2YgdGhlIGhvdXNlIG9mIEdvZC4KQW5kIHRoZXkgbG9kZ2VkIHJvdW5kIGFib3V0IHRoZSBob3VzZSBvZiBHb2QsIGJlY2F1c2UgdGhlIGNoYXJnZSB3YXMgdXBvbiB0aGVtLCBhbmQgdGhlIG9wZW5pbmcgdGhlcmVvZiBldmVyeSBtb3JuaW5nIHBlcnRhaW5lZCB0byB0aGVtLgpBbmQgY2VydGFpbiBvZiB0aGVtIGhhZCB0aGUgY2hhcmdlIG9mIHRoZSBtaW5pc3RlcmluZyB2ZXNzZWxzLCB0aGF0IHRoZXkgc2hvdWxkIGJyaW5nIHRoZW0gaW4gYW5kIG91dCBieSB0YWxlLgpTb21lIG9mIHRoZW0gYWxzbyB3ZXJlIGFwcG9pbnRlZCB0byBvdmVyc2VlIHRoZSB2ZXNzZWxzLCBhbmQgYWxsIHRoZSBpbnN0cnVtZW50cyBvZiB0aGUgc2FuY3R1YXJ5LCBhbmQgdGhlIGZpbmUgZmxvdXIsIGFuZCB0aGUgd2luZSwgYW5kIHRoZSBvaWwsIGFuZCB0aGUgZnJhbmtpbmNlbnNlLCBhbmQgdGhlIHNwaWNlcy4KQW5kIHNvbWUgb2YgdGhlIHNvbnMgb2YgdGhlIHByaWVzdHMgbWFkZSB0aGUgb2ludG1lbnQgb2YgdGhlIHNwaWNlcy4KQW5kIE1hdHRpdGhpYWgsIG9uZSBvZiB0aGUgTGV2aXRlcywgd2hvIHdhcyB0aGUgZmlyc3Rib3JuIG9mIFNoYWxsdW0gdGhlIEtvcmFoaXRlLCBoYWQgdGhlIHNldCBvZmZpY2Ugb3ZlciB0aGUgdGhpbmdzIHRoYXQgd2VyZSBtYWRlIGluIHRoZSBwYW5zLgpBbmQgb3RoZXIgb2YgdGhlaXIgYnJldGhyZW4sIG9mIHRoZSBzb25zIG9mIHRoZSBLb2hhdGhpdGVzLCB3ZXJlIG92ZXIgdGhlIHNoZXdicmVhZCwgdG8gcHJlcGFyZSBpdCBldmVyeSBzYWJiYXRoLgpBbmQgdGhlc2UgYXJlIHRoZSBzaW5nZXJzLCBjaGllZiBvZiB0aGUgZmF0aGVycyBvZiB0aGUgTGV2aXRlcywgd2hvIHJlbWFpbmluZyBpbiB0aGUgY2hhbWJlcnMgd2VyZSBmcmVlOiBmb3IgdGhleSB3ZXJlIGVtcGxveWVkIGluIHRoYXQgd29yayBkYXkgYW5kIG5pZ2h0LgpUaGVzZSBjaGllZiBmYXRoZXJzIG9mIHRoZSBMZXZpdGVzIHdlcmUgY2hpZWYgdGhyb3VnaG91dCB0aGVpciBnZW5lcmF0aW9uczsgdGhlc2UgZHdlbHQgYXQgSmVydXNhbGVtLgpBbmQgaW4gR2liZW9uIGR3ZWx0IHRoZSBmYXRoZXIgb2YgR2liZW9uLCBKZWhpZWwsIHdob3NlIHdpZmUncyBuYW1lIHdhcyBNYWFjaGFoOgpBbmQgaGlzIGZpcnN0Ym9ybiBzb24gQWJkb24sIHRoZW4gWnVyLCBhbmQgS2lzaCwgYW5kIEJhYWwsIGFuZCBOZXIsIGFuZCBOYWRhYi4KQW5kIEdlZG9yLCBhbmQgQWhpbywgYW5kIFplY2hhcmlhaCwgYW5kIE1pa2xvdGguCkFuZCBNaWtsb3RoIGJlZ2F0IFNoaW1lYW0uIEFuZCB0aGV5IGFsc28gZHdlbHQgd2l0aCB0aGVpciBicmV0aHJlbiBhdCBKZXJ1c2FsZW0sIG92ZXIgYWdhaW5zdCB0aGVpciBicmV0aHJlbi4KQW5kIE5lciBiZWdhdCBLaXNoOyBhbmQgS2lzaCBiZWdhdCBTYXVsOyBhbmQgU2F1bCBiZWdhdCBKb25hdGhhbiwgYW5kIE1hbGNoaXNodWEsIGFuZCBBYmluYWRhYiwgYW5kIEVzaGJhYWwuCkFuZCB0aGUgc29uIG9mIEpvbmF0aGFuIHdhcyBNZXJpYmJhYWw6IGFuZCBNZXJpYmJhYWwgYmVnYXQgTWljYWguCkFuZCB0aGUgc29ucyBvZiBNaWNhaCB3ZXJlLCBQaXRob24sIGFuZCBNZWxlY2gsIGFuZCBUYWhyZWEsIGFuZCBBaGF6LgpBbmQgQWhheiBiZWdhdCBKYXJhaDsgYW5kIEphcmFoIGJlZ2F0IEFsZW1ldGgsIGFuZCBBem1hdmV0aCwgYW5kIFppbXJpOyBhbmQgWmltcmkgYmVnYXQgTW96YTsKQW5kIE1vemEgYmVnYXQgQmluZWE7IGFuZCBSZXBoYWlhaCBoaXMgc29uLCBFbGVhc2FoIGhpcyBzb24sIEF6ZWwgaGlzIHNvbi4KQW5kIEF6ZWwgaGFkIHNpeCBzb25zLCB3aG9zZSBuYW1lcyBhcmUgdGhlc2UsIEF6cmlrYW0sIEJvY2hlcnUsIGFuZCBJc2htYWVsLCBhbmQgU2hlYXJpYWgsIGFuZCBPYmFkaWFoLCBhbmQgSGFuYW46IHRoZXNlIHdlcmUgdGhlIHNvbnMgb2YgQXplbC4KTm93IHRoZSBQaGlsaXN0aW5lcyBmb3VnaHQgYWdhaW5zdCBJc3JhZWw7IGFuZCB0aGUgbWVuIG9mIElzcmFlbCBmbGVkIGZyb20gYmVmb3JlIHRoZSBQaGlsaXN0aW5lcywgYW5kIGZlbGwgZG93biBzbGFpbiBpbiBtb3VudCBHaWxib2EuCkFuZCB0aGUgUGhpbGlzdGluZXMgZm9sbG93ZWQgaGFyZCBhZnRlciBTYXVsLCBhbmQgYWZ0ZXIgaGlzIHNvbnM7IGFuZCB0aGUgUGhpbGlzdGluZXMgc2xldyBKb25hdGhhbiwgYW5kIEFiaW5hZGFiLCBhbmQgTWFsY2hpc2h1YSwgdGhlIHNvbnMgb2YgU2F1bC4KQW5kIHRoZSBiYXR0bGUgd2VudCBzb3JlIGFnYWluc3QgU2F1bCwgYW5kIHRoZSBhcmNoZXJzIGhpdCBoaW0sIGFuZCBoZSB3YXMgd291bmRlZCBvZiB0aGUgYXJjaGVycy4KVGhlbiBzYWlkIFNhdWwgdG8gaGlzIGFybW91cmJlYXJlciwgRHJhdyB0aHkgc3dvcmQsIGFuZCB0aHJ1c3QgbWUgdGhyb3VnaCB0aGVyZXdpdGg7IGxlc3QgdGhlc2UgdW5jaXJjdW1jaXNlZCBjb21lIGFuZCBhYnVzZSBtZS4gQnV0IGhpcyBhcm1vdXJiZWFyZXIgd291bGQgbm90OyBmb3IgaGUgd2FzIHNvcmUgYWZyYWlkLiBTbyBTYXVsIHRvb2sgYSBzd29yZCwgYW5kIGZlbGwgdXBvbiBpdC4KQW5kIHdoZW4gaGlzIGFybW91cmJlYXJlciBzYXcgdGhhdCBTYXVsIHdhcyBkZWFkLCBoZSBmZWxsIGxpa2V3aXNlIG9uIHRoZSBzd29yZCwgYW5kIGRpZWQuClNvIFNhdWwgZGllZCwgYW5kIGhpcyB0aHJlZSBzb25zLCBhbmQgYWxsIGhpcyBob3VzZSBkaWVkIHRvZ2V0aGVyLgpBbmQgd2hlbiBhbGwgdGhlIG1lbiBvZiBJc3JhZWwgdGhhdCB3ZXJlIGluIHRoZSB2YWxsZXkgc2F3IHRoYXQgdGhleSBmbGVkLCBhbmQgdGhhdCBTYXVsIGFuZCBoaXMgc29ucyB3ZXJlIGRlYWQsIHRoZW4gdGhleSBmb3Jzb29rIHRoZWlyIGNpdGllcywgYW5kIGZsZWQ6IGFuZCB0aGUgUGhpbGlzdGluZXMgY2FtZSBhbmQgZHdlbHQgaW4gdGhlbS4KQW5kIGl0IGNhbWUgdG8gcGFzcyBvbiB0aGUgbW9ycm93LCB3aGVuIHRoZSBQaGlsaXN0aW5lcyBjYW1lIHRvIHN0cmlwIHRoZSBzbGFpbiwgdGhhdCB0aGV5IGZvdW5kIFNhdWwgYW5kIGhpcyBzb25zIGZhbGxlbiBpbiBtb3VudCBHaWxib2EuCkFuZCB3aGVuIHRoZXkgaGFkIHN0cmlwcGVkIGhpbSwgdGhleSB0b29rIGhpcyBoZWFkLCBhbmQgaGlzIGFybW91ciwgYW5kIHNlbnQgaW50byB0aGUgbGFuZCBvZiB0aGUgUGhpbGlzdGluZXMgcm91bmQgYWJvdXQsIHRvIGNhcnJ5IHRpZGluZ3MgdW50byB0aGVpciBpZG9scywgYW5kIHRvIHRoZSBwZW9wbGUuCkFuZCB0aGV5IHB1dCBoaXMgYXJtb3VyIGluIHRoZSBob3VzZSBvZiB0aGVpciBnb2RzLCBhbmQgZmFzdGVuZWQgaGlzIGhlYWQgaW4gdGhlIHRlbXBsZSBvZiBEYWdvbi4KQW5kIHdoZW4gYWxsIEphYmVzaGdpbGVhZCBoZWFyZCBhbGwgdGhhdCB0aGUgUGhpbGlzdGluZXMgaGFkIGRvbmUgdG8gU2F1bCwKVGhleSBhcm9zZSwgYWxsIHRoZSB2YWxpYW50IG1lbiwgYW5kIHRvb2sgYXdheSB0aGUgYm9keSBvZiBTYXVsLCBhbmQgdGhlIGJvZGllcyBvZiBoaXMgc29ucywgYW5kIGJyb3VnaHQgdGhlbSB0byBKYWJlc2gsIGFuZCBidXJpZWQgdGhlaXIgYm9uZXMgdW5kZXIgdGhlIG9hayBpbiBKYWJlc2gsIGFuZCBmYXN0ZWQgc2V2ZW4gZGF5cy4KU28gU2F1bCBkaWVkIGZvciBoaXMgdHJhbnNncmVzc2lvbiB3aGljaCBoZSBjb21taXR0ZWQgYWdhaW5zdCB0aGUgTE9SRCwgZXZlbiBhZ2FpbnN0IHRoZSB3b3JkIG9mIHRoZSBMT1JELCB3aGljaCBoZSBrZXB0IG5vdCwgYW5kIGFsc28gZm9yIGFza2luZyBjb3Vuc2VsIG9mIG9uZSB0aGF0IGhhZCBhIGZhbWlsaWFyIHNwaXJpdCwgdG8gZW5xdWlyZSBvZiBpdDsKQW5kIGVucXVpcmVkIG5vdCBvZiB0aGUgTE9SRDogdGhlcmVmb3JlIGhlIHNsZXcgaGltLCBhbmQgdHVybmVkIHRoZSBraW5nZG9tIHVudG8gRGF2aWQgdGhlIHNvbiBvZiBKZXNzZS4KVGhlbiBhbGwgSXNyYWVsIGdhdGhlcmVkIHRoZW1zZWx2ZXMgdG8gRGF2aWQgdW50byBIZWJyb24sIHNheWluZywgQmVob2xkLCB3ZSBhcmUgdGh5IGJvbmUgYW5kIHRoeSBmbGVzaC4KQW5kIG1vcmVvdmVyIGluIHRpbWUgcGFzdCwgZXZlbiB3aGVuIFNhdWwgd2FzIGtpbmcsIHRob3Ugd2FzdCBoZSB0aGF0IGxlZGRlc3Qgb3V0IGFuZCBicm91Z2h0ZXN0IGluIElzcmFlbDogYW5kIHRoZSBMT1JEIHRoeSBHb2Qgc2FpZCB1bnRvIHRoZWUsIFRob3Ugc2hhbHQgZmVlZCBteSBwZW9wbGUgSXNyYWVsLCBhbmQgdGhvdSBzaGFsdCBiZSBydWxlciBvdmVyIG15IHBlb3BsZSBJc3JhZWwuClRoZXJlZm9yZSBjYW1lIGFsbCB0aGUgZWxkZXJzIG9mIElzcmFlbCB0byB0aGUga2luZyB0byBIZWJyb247IGFuZCBEYXZpZCBtYWRlIGEgY292ZW5hbnQgd2l0aCB0aGVtIGluIEhlYnJvbiBiZWZvcmUgdGhlIExPUkQ7IGFuZCB0aGV5IGFub2ludGVkIERhdmlkIGtpbmcgb3ZlciBJc3JhZWwsIGFjY29yZGluZyB0byB0aGUgd29yZCBvZiB0aGUgTE9SRCBieSBTYW11ZWwuCkFuZCBEYXZpZCBhbmQgYWxsIElzcmFlbCB3ZW50IHRvIEplcnVzYWxlbSwgd2hpY2ggaXMgSmVidXM7IHdoZXJlIHRoZSBKZWJ1c2l0ZXMgd2VyZSwgdGhlIGluaGFiaXRhbnRzIG9mIHRoZSBsYW5kLgpBbmQgdGhlIGluaGFiaXRhbnRzIG9mIEplYnVzIHNhaWQgdG8gRGF2aWQsIFRob3Ugc2hhbHQgbm90IGNvbWUgaGl0aGVyLiBOZXZlcnRoZWxlc3MgRGF2aWQgdG9vayB0aGUgY2FzdGxlIG9mIFppb24sIHdoaWNoIGlzIHRoZSBjaXR5IG9mIERhdmlkLgpBbmQgRGF2aWQgc2FpZCwgV2hvc29ldmVyIHNtaXRldGggdGhlIEplYnVzaXRlcyBmaXJzdCBzaGFsbCBiZSBjaGllZiBhbmQgY2FwdGFpbi4gU28gSm9hYiB0aGUgc29uIG9mIFplcnVpYWggd2VudCBmaXJzdCB1cCwgYW5kIHdhcyBjaGllZi4KQW5kIERhdmlkIGR3ZWx0IGluIHRoZSBjYXN0bGU7IHRoZXJlZm9yZSB0aGV5IGNhbGxlZCBpdCB0aGUgY2l0eSBvZiBEYXZpZC4KQW5kIGhlIGJ1aWx0IHRoZSBjaXR5IHJvdW5kIGFib3V0LCBldmVuIGZyb20gTWlsbG8gcm91bmQgYWJvdXQ6IGFuZCBKb2FiIHJlcGFpcmVkIHRoZSByZXN0IG9mIHRoZSBjaXR5LgpTbyBEYXZpZCB3YXhlZCBncmVhdGVyIGFuZCBncmVhdGVyOiBmb3IgdGhlIExPUkQgb2YgaG9zdHMgd2FzIHdpdGggaGltLgpUaGVzZSBhbHNvIGFyZSB0aGUgY2hpZWYgb2YgdGhlIG1pZ2h0eSBtZW4gd2hvbSBEYXZpZCBoYWQsIHdobyBzdHJlbmd0aGVuZWQgdGhlbXNlbHZlcyB3aXRoIGhpbSBpbiBoaXMga2luZ2RvbSwgYW5kIHdpdGggYWxsIElzcmFlbCwgdG8gbWFrZSBoaW0ga2luZywgYWNjb3JkaW5nIHRvIHRoZSB3b3JkIG9mIHRoZSBMT1JEIGNvbmNlcm5pbmcgSXNyYWVsLgpBbmQgdGhpcyBpcyB0aGUgbnVtYmVyIG9mIHRoZSBtaWdodHkgbWVuIHdob20gRGF2aWQgaGFkOyBKYXNob2JlYW0sIGFuIEhhY2htb25pdGUsIHRoZSBjaGllZiBvZiB0aGUgY2FwdGFpbnM6IGhlIGxpZnRlZCB1cCBoaXMgc3BlYXIgYWdhaW5zdCB0aHJlZSBodW5kcmVkIHNsYWluIGJ5IGhpbSBhdCBvbmUgdGltZS4KQW5kIGFmdGVyIGhpbSB3YXMgRWxlYXphciB0aGUgc29uIG9mIERvZG8sIHRoZSBBaG9oaXRlLCB3aG8gd2FzIG9uZSBvZiB0aGUgdGhyZWUgbWlnaHRpZXMuCkhlIHdhcyB3aXRoIERhdmlkIGF0IFBhc2RhbW1pbSwgYW5kIHRoZXJlIHRoZSBQaGlsaXN0aW5lcyB3ZXJlIGdhdGhlcmVkIHRvZ2V0aGVyIHRvIGJhdHRsZSwgd2hlcmUgd2FzIGEgcGFyY2VsIG9mIGdyb3VuZCBmdWxsIG9mIGJhcmxleTsgYW5kIHRoZSBwZW9wbGUgZmxlZCBmcm9tIGJlZm9yZSB0aGUgUGhpbGlzdGluZXMuCkFuZCB0aGV5IHNldCB0aGVtc2VsdmVzIGluIHRoZSBtaWRzdCBvZiB0aGF0IHBhcmNlbCwgYW5kIGRlbGl2ZXJlZCBpdCwgYW5kIHNsZXcgdGhlIFBoaWxpc3RpbmVzOyBhbmQgdGhlIExPUkQgc2F2ZWQgdGhlbSBieSBhIGdyZWF0IGRlbGl2ZXJhbmNlLgpOb3cgdGhyZWUgb2YgdGhlIHRoaXJ0eSBjYXB0YWlucyB3ZW50IGRvd24gdG8gdGhlIHJvY2sgdG8gRGF2aWQsIGludG8gdGhlIGNhdmUgb2YgQWR1bGxhbTsgYW5kIHRoZSBob3N0IG9mIHRoZSBQaGlsaXN0aW5lcyBlbmNhbXBlZCBpbiB0aGUgdmFsbGV5IG9mIFJlcGhhaW0uCkFuZCBEYXZpZCB3YXMgdGhlbiBpbiB0aGUgaG9sZCwgYW5kIHRoZSBQaGlsaXN0aW5lcycgZ2Fycmlzb24gd2FzIHRoZW4gYXQgQmV0aGxlaGVtLgpBbmQgRGF2aWQgbG9uZ2VkLCBhbmQgc2FpZCwgT2ggdGhhdCBvbmUgd291bGQgZ2l2ZSBtZSBkcmluayBvZiB0aGUgd2F0ZXIgb2YgdGhlIHdlbGwgb2YgQmV0aGxlaGVtLCB0aGF0IGlzIGF0IHRoZSBnYXRlIQpBbmQgdGhlIHRocmVlIGJyYWtlIHRocm91Z2ggdGhlIGhvc3Qgb2YgdGhlIFBoaWxpc3RpbmVzLCBhbmQgZHJldyB3YXRlciBvdXQgb2YgdGhlIHdlbGwgb2YgQmV0aGxlaGVtLCB0aGF0IHdhcyBieSB0aGUgZ2F0ZSwgYW5kIHRvb2sgaXQsIGFuZCBicm91Z2h0IGl0IHRvIERhdmlkOiBidXQgRGF2aWQgd291bGQgbm90IGRyaW5rIG9mIGl0LCBidXQgcG91cmVkIGl0IG91dCB0byB0aGUgTE9SRC4KQW5kIHNhaWQsIE15IEdvZCBmb3JiaWQgaXQgbWUsIHRoYXQgSSBzaG91bGQgZG8gdGhpcyB0aGluZzogc2hhbGwgSSBkcmluayB0aGUgYmxvb2Qgb2YgdGhlc2UgbWVuIHRoYXQgaGF2ZSBwdXQgdGhlaXIgbGl2ZXMgaW4gamVvcGFyZHk/IGZvciB3aXRoIHRoZSBqZW9wYXJkeSBvZiB0aGVpciBsaXZlcyB0aGV5IGJyb3VnaHQgaXQuIFRoZXJlZm9yZSBoZSB3b3VsZCBub3QgZHJpbmsgaXQuIFRoZXNlIHRoaW5ncyBkaWQgdGhlc2UgdGhyZWUgbWlnaHRpZXN0LgpBbmQgQWJpc2hhaSB0aGUgYnJvdGhlciBvZiBKb2FiLCBoZSB3YXMgY2hpZWYgb2YgdGhlIHRocmVlOiBmb3IgbGlmdGluZyB1cCBoaXMgc3BlYXIgYWdhaW5zdCB0aHJlZSBodW5kcmVkLCBoZSBzbGV3IHRoZW0sIGFuZCBoYWQgYSBuYW1lIGFtb25nIHRoZSB0aHJlZS4KT2YgdGhlIHRocmVlLCBoZSB3YXMgbW9yZSBob25vdXJhYmxlIHRoYW4gdGhlIHR3bzsgZm9yIGhlIHdhcyB0aGVpciBjYXB0YWluOiBob3diZWl0IGhlIGF0dGFpbmVkIG5vdCB0byB0aGUgZmlyc3QgdGhyZWUuCkJlbmFpYWggdGhlIHNvbiBvZiBKZWhvaWFkYSwgdGhlIHNvbiBvZiBhIHZhbGlhbnQgbWFuIG9mIEthYnplZWwsIHdobyBoYWQgZG9uZSBtYW55IGFjdHM7IGhlIHNsZXcgdHdvIGxpb25saWtlIG1lbiBvZiBNb2FiOiBhbHNvIGhlIHdlbnQgZG93biBhbmQgc2xldyBhIGxpb24gaW4gYSBwaXQgaW4gYSBzbm93eSBkYXkuCkFuZCBoZSBzbGV3IGFuIEVneXB0aWFuLCBhIG1hbiBvZiBncmVhdCBzdGF0dXJlLCBmaXZlIGN1Yml0cyBoaWdoOyBhbmQgaW4gdGhlIEVneXB0aWFuJ3MgaGFuZCB3YXMgYSBzcGVhciBsaWtlIGEgd2VhdmVyJ3MgYmVhbTsgYW5kIGhlIHdlbnQgZG93biB0byBoaW0gd2l0aCBhIHN0YWZmLCBhbmQgcGx1Y2tlZCB0aGUgc3BlYXIgb3V0IG9mIHRoZSBFZ3lwdGlhbidzIGhhbmQsIGFuZCBzbGV3IGhpbSB3aXRoIGhpcyBvd24gc3BlYXIuClRoZXNlIHRoaW5ncyBkaWQgQmVuYWlhaCB0aGUgc29uIG9mIEplaG9pYWRhLCBhbmQgaGFkIHRoZSBuYW1lIGFtb25nIHRoZSB0aHJlZSBtaWdodGllcy4KQmVob2xkLCBoZSB3YXMgaG9ub3VyYWJsZSBhbW9uZyB0aGUgdGhpcnR5LCBidXQgYXR0YWluZWQgbm90IHRvIHRoZSBmaXJzdCB0aHJlZTogYW5kIERhdmlkIHNldCBoaW0gb3ZlciBoaXMgZ3VhcmQuCkFsc28gdGhlIHZhbGlhbnQgbWVuIG9mIHRoZSBhcm1pZXMgd2VyZSwgQXNhaGVsIHRoZSBicm90aGVyIG9mIEpvYWIsIEVsaGFuYW4gdGhlIHNvbiBvZiBEb2RvIG9mIEJldGhsZWhlbSwKU2hhbW1vdGggdGhlIEhhcm9yaXRlLCBIZWxleiB0aGUgUGVsb25pdGUsCklyYSB0aGUgc29uIG9mIElra2VzaCB0aGUgVGVrb2l0ZSwgQWJpZXplciB0aGUgQW50b3RoaXRlLApTaWJiZWNhaSB0aGUgSHVzaGF0aGl0ZSwgSWxhaSB0aGUgQWhvaGl0ZSwKTWFoYXJhaSB0aGUgTmV0b3BoYXRoaXRlLCBIZWxlZCB0aGUgc29uIG9mIEJhYW5haCB0aGUgTmV0b3BoYXRoaXRlLApJdGhhaSB0aGUgc29uIG9mIFJpYmFpIG9mIEdpYmVhaCwgdGhhdCBwZXJ0YWluZWQgdG8gdGhlIGNoaWxkcmVuIG9mIEJlbmphbWluLCBCZW5haWFoIHRoZSBQaXJhdGhvbml0ZSwKSHVyYWkgb2YgdGhlIGJyb29rcyBvZiBHYWFzaCwgQWJpZWwgdGhlIEFyYmF0aGl0ZSwKQXptYXZldGggdGhlIEJhaGFydW1pdGUsIEVsaWFoYmEgdGhlIFNoYWFsYm9uaXRlLApUaGUgc29ucyBvZiBIYXNoZW0gdGhlIEdpem9uaXRlLCBKb25hdGhhbiB0aGUgc29uIG9mIFNoYWdlIHRoZSBIYXJhcml0ZSwKQWhpYW0gdGhlIHNvbiBvZiBTYWNhciB0aGUgSGFyYXJpdGUsIEVsaXBoYWwgdGhlIHNvbiBvZiBVciwKSGVwaGVyIHRoZSBNZWNoZXJhdGhpdGUsIEFoaWphaCB0aGUgUGVsb25pdGUsCkhlenJvIHRoZSBDYXJtZWxpdGUsIE5hYXJhaSB0aGUgc29uIG9mIEV6YmFpLApKb2VsIHRoZSBicm90aGVyIG9mIE5hdGhhbiwgTWliaGFyIHRoZSBzb24gb2YgSGFnZ2VyaSwKWmVsZWsgdGhlIEFtbW9uaXRlLCBOYWhhcmFpIHRoZSBCZXJvdGhpdGUsIHRoZSBhcm1vdXJiZWFyZXIgb2YgSm9hYiB0aGUgc29uIG9mIFplcnVpYWgsCklyYSB0aGUgSXRocml0ZSwgR2FyZWIgdGhlIEl0aHJpdGUsClVyaWFoIHRoZSBIaXR0aXRlLCBaYWJhZCB0aGUgc29uIG9mIEFobGFpLApBZGluYSB0aGUgc29uIG9mIFNoaXphIHRoZSBSZXViZW5pdGUsIGEgY2FwdGFpbiBvZiB0aGUgUmV1YmVuaXRlcywgYW5kIHRoaXJ0eSB3aXRoIGhpbSwKSGFuYW4gdGhlIHNvbiBvZiBNYWFjaGFoLCBhbmQgSm9zaGFwaGF0IHRoZSBNaXRobml0ZSwKVXp6aWEgdGhlIEFzaHRlcmF0aGl0ZSwgU2hhbWEgYW5kIEplaGllbCB0aGUgc29ucyBvZiBIb3RoYW4gdGhlIEFyb2VyaXRlLApKZWRpYWVsIHRoZSBzb24gb2YgU2hpbXJpLCBhbmQgSm9oYSBoaXMgYnJvdGhlciwgdGhlIFRpeml0ZSwKRWxpZWwgdGhlIE1haGF2aXRlLCBhbmQgSmVyaWJhaSwgYW5kIEpvc2hhdmlhaCwgdGhlIHNvbnMgb2YgRWxuYWFtLCBhbmQgSXRobWFoIHRoZSBNb2FiaXRlLApFbGllbCwgYW5kIE9iZWQsIGFuZCBKYXNpZWwgdGhlIE1lc29iYWl0ZS4KTm93IHRoZXNlIGFyZSB0aGV5IHRoYXQgY2FtZSB0byBEYXZpZCB0byBaaWtsYWcsIHdoaWxlIGhlIHlldCBrZXB0IGhpbXNlbGYgY2xvc2UgYmVjYXVzZSBvZiBTYXVsIHRoZSBzb24gb2YgS2lzaDogYW5kIHRoZXkgd2VyZSBhbW9uZyB0aGUgbWlnaHR5IG1lbiwgaGVscGVycyBvZiB0aGUgd2FyLgpUaGV5IHdlcmUgYXJtZWQgd2l0aCBib3dzLCBhbmQgY291bGQgdXNlIGJvdGggdGhlIHJpZ2h0IGhhbmQgYW5kIHRoZSBsZWZ0IGluIGh1cmxpbmcgc3RvbmVzIGFuZCBzaG9vdGluZyBhcnJvd3Mgb3V0IG9mIGEgYm93LCBldmVuIG9mIFNhdWwncyBicmV0aHJlbiBvZiBCZW5qYW1pbi4KVGhlIGNoaWVmIHdhcyBBaGllemVyLCB0aGVuIEpvYXNoLCB0aGUgc29ucyBvZiBTaGVtYWFoIHRoZSBHaWJlYXRoaXRlOyBhbmQgSmV6aWVsLCBhbmQgUGVsZXQsIHRoZSBzb25zIG9mIEF6bWF2ZXRoOyBhbmQgQmVyYWNoYWgsIGFuZCBKZWh1IHRoZSBBbnRvdGhpdGUuCkFuZCBJc21haWFoIHRoZSBHaWJlb25pdGUsIGEgbWlnaHR5IG1hbiBhbW9uZyB0aGUgdGhpcnR5LCBhbmQgb3ZlciB0aGUgdGhpcnR5OyBhbmQgSmVyZW1pYWgsIGFuZCBKYWhhemllbCwgYW5kIEpvaGFuYW4sIGFuZCBKb3NhYmFkIHRoZSBHZWRlcmF0aGl0ZSwKRWx1emFpLCBhbmQgSmVyaW1vdGgsIGFuZCBCZWFsaWFoLCBhbmQgU2hlbWFyaWFoLCBhbmQgU2hlcGhhdGlhaCB0aGUgSGFydXBoaXRlLApFbGthbmFoLCBhbmQgSmVzaWFoLCBhbmQgQXphcmVlbCwgYW5kIEpvZXplciwgYW5kIEphc2hvYmVhbSwgdGhlIEtvcmhpdGVzLApBbmQgSm9lbGFoLCBhbmQgWmViYWRpYWgsIHRoZSBzb25zIG9mIEplcm9oYW0gb2YgR2Vkb3IuCkFuZCBvZiB0aGUgR2FkaXRlcyB0aGVyZSBzZXBhcmF0ZWQgdGhlbXNlbHZlcyB1bnRvIERhdmlkIGludG8gdGhlIGhvbGQgdG8gdGhlIHdpbGRlcm5lc3MgbWVuIG9mIG1pZ2h0LCBhbmQgbWVuIG9mIHdhciBmaXQgZm9yIHRoZSBiYXR0bGUsIHRoYXQgY291bGQgaGFuZGxlIHNoaWVsZCBhbmQgYnVja2xlciwgd2hvc2UgZmFjZXMgd2VyZSBsaWtlIHRoZSBmYWNlcyBvZiBsaW9ucywgYW5kIHdlcmUgYXMgc3dpZnQgYXMgdGhlIHJvZXMgdXBvbiB0aGUgbW91bnRhaW5zOwpFemVyIHRoZSBmaXJzdCwgT2JhZGlhaCB0aGUgc2Vjb25kLCBFbGlhYiB0aGUgdGhpcmQsCk1pc2htYW5uYWggdGhlIGZvdXJ0aCwgSmVyZW1pYWggdGhlIGZpZnRoLApBdHRhaSB0aGUgc2l4dGgsIEVsaWVsIHRoZSBzZXZlbnRoLApKb2hhbmFuIHRoZSBlaWdodGgsIEVsemFiYWQgdGhlIG5pbnRoLApKZXJlbWlhaCB0aGUgdGVudGgsIE1hY2hiYW5haSB0aGUgZWxldmVudGguClRoZXNlIHdlcmUgb2YgdGhlIHNvbnMgb2YgR2FkLCBjYXB0YWlucyBvZiB0aGUgaG9zdDogb25lIG9mIHRoZSBsZWFzdCB3YXMgb3ZlciBhbiBodW5kcmVkLCBhbmQgdGhlIGdyZWF0ZXN0IG92ZXIgYSB0aG91c2FuZC4KVGhlc2UgYXJlIHRoZXkgdGhhdCB3ZW50IG92ZXIgSm9yZGFuIGluIHRoZSBmaXJzdCBtb250aCwgd2hlbiBpdCBoYWQgb3ZlcmZsb3duIGFsbCBoaXMgYmFua3M7IGFuZCB0aGV5IHB1dCB0byBmbGlnaHQgYWxsIHRoZW0gb2YgdGhlIHZhbGxleXMsIGJvdGggdG93YXJkIHRoZSBlYXN0LCBhbmQgdG93YXJkIHRoZSB3ZXN0LgpBbmQgdGhlcmUgY2FtZSBvZiB0aGUgY2hpbGRyZW4gb2YgQmVuamFtaW4gYW5kIEp1ZGFoIHRvIHRoZSBob2xkIHVudG8gRGF2aWQuCkFuZCBEYXZpZCB3ZW50IG91dCB0byBtZWV0IHRoZW0sIGFuZCBhbnN3ZXJlZCBhbmQgc2FpZCB1bnRvIHRoZW0sIElmIHllIGJlIGNvbWUgcGVhY2VhYmx5IHVudG8gbWUgdG8gaGVscCBtZSwgbWluZSBoZWFydCBzaGFsbCBiZSBrbml0IHVudG8geW91OiBidXQgaWYgeWUgYmUgY29tZSB0byBiZXRyYXkgbWUgdG8gbWluZSBlbmVtaWVzLCBzZWVpbmcgdGhlcmUgaXMgbm8gd3JvbmcgaW4gbWluZSBoYW5kcywgdGhlIEdvZCBvZiBvdXIgZmF0aGVycyBsb29rIHRoZXJlb24sIGFuZCByZWJ1a2UgaXQuClRoZW4gdGhlIHNwaXJpdCBjYW1lIHVwb24gQW1hc2FpLCB3aG8gd2FzIGNoaWVmIG9mIHRoZSBjYXB0YWlucywgYW5kIGhlIHNhaWQsIFRoaW5lIGFyZSB3ZSwgRGF2aWQsIGFuZCBvbiB0aHkgc2lkZSwgdGhvdSBzb24gb2YgSmVzc2U6IHBlYWNlLCBwZWFjZSBiZSB1bnRvIHRoZWUsIGFuZCBwZWFjZSBiZSB0byB0aGluZSBoZWxwZXJzOyBmb3IgdGh5IEdvZCBoZWxwZXRoIHRoZWUuIFRoZW4gRGF2aWQgcmVjZWl2ZWQgdGhlbSwgYW5kIG1hZGUgdGhlbSBjYXB0YWlucyBvZiB0aGUgYmFuZC4KQW5kIHRoZXJlIGZlbGwgc29tZSBvZiBNYW5hc3NlaCB0byBEYXZpZCwgd2hlbiBoZSBjYW1lIHdpdGggdGhlIFBoaWxpc3RpbmVzIGFnYWluc3QgU2F1bCB0byBiYXR0bGU6IGJ1dCB0aGV5IGhlbHBlZCB0aGVtIG5vdDogZm9yIHRoZSBsb3JkcyBvZiB0aGUgUGhpbGlzdGluZXMgdXBvbiBhZHZpc2VtZW50IHNlbnQgaGltIGF3YXksIHNheWluZywgSGUgd2lsbCBmYWxsIHRvIGhpcyBtYXN0ZXIgU2F1bCB0byB0aGUgamVvcGFyZHkgb2Ygb3VyIGhlYWRzLgpBcyBoZSB3ZW50IHRvIFppa2xhZywgdGhlcmUgZmVsbCB0byBoaW0gb2YgTWFuYXNzZWgsIEFkbmFoLCBhbmQgSm96YWJhZCwgYW5kIEplZGlhZWwsIGFuZCBNaWNoYWVsLCBhbmQgSm96YWJhZCwgYW5kIEVsaWh1LCBhbmQgWmlsdGhhaSwgY2FwdGFpbnMgb2YgdGhlIHRob3VzYW5kcyB0aGF0IHdlcmUgb2YgTWFuYXNzZWguCkFuZCB0aGV5IGhlbHBlZCBEYXZpZCBhZ2FpbnN0IHRoZSBiYW5kIG9mIHRoZSByb3ZlcnM6IGZvciB0aGV5IHdlcmUgYWxsIG1pZ2h0eSBtZW4gb2YgdmFsb3VyLCBhbmQgd2VyZSBjYXB0YWlucyBpbiB0aGUgaG9zdC4KRm9yIGF0IHRoYXQgdGltZSBkYXkgYnkgZGF5IHRoZXJlIGNhbWUgdG8gRGF2aWQgdG8gaGVscCBoaW0sIHVudGlsIGl0IHdhcyBhIGdyZWF0IGhvc3QsIGxpa2UgdGhlIGhvc3Qgb2YgR29kLgpBbmQgdGhlc2UgYXJlIHRoZSBudW1iZXJzIG9mIHRoZSBiYW5kcyB0aGF0IHdlcmUgcmVhZHkgYXJtZWQgdG8gdGhlIHdhciwgYW5kIGNhbWUgdG8gRGF2aWQgdG8gSGVicm9uLCB0byB0dXJuIHRoZSBraW5nZG9tIG9mIFNhdWwgdG8gaGltLCBhY2NvcmRpbmcgdG8gdGhlIHdvcmQgb2YgdGhlIExPUkQuClRoZSBjaGlsZHJlbiBvZiBKdWRhaCB0aGF0IGJhcmUgc2hpZWxkIGFuZCBzcGVhciB3ZXJlIHNpeCB0aG91c2FuZCBhbmQgZWlnaHQgaHVuZHJlZCwgcmVhZHkgYXJtZWQgdG8gdGhlIHdhci4KT2YgdGhlIGNoaWxkcmVuIG9mIFNpbWVvbiwgbWlnaHR5IG1lbiBvZiB2YWxvdXIgZm9yIHRoZSB3YXIsIHNldmVuIHRob3VzYW5kIGFuZCBvbmUgaHVuZHJlZC4KT2YgdGhlIGNoaWxkcmVuIG9mIExldmkgZm91ciB0aG91c2FuZCBhbmQgc2l4IGh1bmRyZWQuCkFuZCBKZWhvaWFkYSB3YXMgdGhlIGxlYWRlciBvZiB0aGUgQWFyb25pdGVzLCBhbmQgd2l0aCBoaW0gd2VyZSB0aHJlZSB0aG91c2FuZCBhbmQgc2V2ZW4gaHVuZHJlZDsKQW5kIFphZG9rLCBhIHlvdW5nIG1hbiBtaWdodHkgb2YgdmFsb3VyLCBhbmQgb2YgaGlzIGZhdGhlcidzIGhvdXNlIHR3ZW50eSBhbmQgdHdvIGNhcHRhaW5zLgpBbmQgb2YgdGhlIGNoaWxkcmVuIG9mIEJlbmphbWluLCB0aGUga2luZHJlZCBvZiBTYXVsLCB0aHJlZSB0aG91c2FuZDogZm9yIGhpdGhlcnRvIHRoZSBncmVhdGVzdCBwYXJ0IG9mIHRoZW0gaGFkIGtlcHQgdGhlIHdhcmQgb2YgdGhlIGhvdXNlIG9mIFNhdWwuCkFuZCBvZiB0aGUgY2hpbGRyZW4gb2YgRXBocmFpbSB0d2VudHkgdGhvdXNhbmQgYW5kIGVpZ2h0IGh1bmRyZWQsIG1pZ2h0eSBtZW4gb2YgdmFsb3VyLCBmYW1vdXMgdGhyb3VnaG91dCB0aGUgaG91c2Ugb2YgdGhlaXIgZmF0aGVycy4KQW5kIG9mIHRoZSBoYWxmIHRyaWJlIG9mIE1hbmFzc2VoIGVpZ2h0ZWVuIHRob3VzYW5kLCB3aGljaCB3ZXJlIGV4cHJlc3NlZCBieSBuYW1lLCB0byBjb21lIGFuZCBtYWtlIERhdmlkIGtpbmcuCkFuZCBvZiB0aGUgY2hpbGRyZW4gb2YgSXNzYWNoYXIsIHdoaWNoIHdlcmUgbWVuIHRoYXQgaGFkIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHRpbWVzLCB0byBrbm93IHdoYXQgSXNyYWVsIG91Z2h0IHRvIGRvOyB0aGUgaGVhZHMgb2YgdGhlbSB3ZXJlIHR3byBodW5kcmVkOyBhbmQgYWxsIHRoZWlyIGJyZXRocmVuIHdlcmUgYXQgdGhlaXIgY29tbWFuZG1lbnQuCk9mIFplYnVsdW4sIHN1Y2ggYXMgd2VudCBmb3J0aCB0byBiYXR0bGUsIGV4cGVydCBpbiB3YXIsIHdpdGggYWxsIGluc3RydW1lbnRzIG9mIHdhciwgZmlmdHkgdGhvdXNhbmQsIHdoaWNoIGNvdWxkIGtlZXAgcmFuazogdGhleSB3ZXJlIG5vdCBvZiBkb3VibGUgaGVhcnQuCkFuZCBvZiBOYXBodGFsaSBhIHRob3VzYW5kIGNhcHRhaW5zLCBhbmQgd2l0aCB0aGVtIHdpdGggc2hpZWxkIGFuZCBzcGVhciB0aGlydHkgYW5kIHNldmVuIHRob3VzYW5kLgpBbmQgb2YgdGhlIERhbml0ZXMgZXhwZXJ0IGluIHdhciB0d2VudHkgYW5kIGVpZ2h0IHRob3VzYW5kIGFuZCBzaXggaHVuZHJlZC4KQW5kIG9mIEFzaGVyLCBzdWNoIGFzIHdlbnQgZm9ydGggdG8gYmF0dGxlLCBleHBlcnQgaW4gd2FyLCBmb3J0eSB0aG91c2FuZC4KQW5kIG9uIHRoZSBvdGhlciBzaWRlIG9mIEpvcmRhbiwgb2YgdGhlIFJldWJlbml0ZXMsIGFuZCB0aGUgR2FkaXRlcywgYW5kIG9mIHRoZSBoYWxmIHRyaWJlIG9mIE1hbmFzc2VoLCB3aXRoIGFsbCBtYW5uZXIgb2YgaW5zdHJ1bWVudHMgb2Ygd2FyIGZvciB0aGUgYmF0dGxlLCBhbiBodW5kcmVkIGFuZCB0d2VudHkgdGhvdXNhbmQuCkFsbCB0aGVzZSBtZW4gb2Ygd2FyLCB0aGF0IGNvdWxkIGtlZXAgcmFuaywgY2FtZSB3aXRoIGEgcGVyZmVjdCBoZWFydCB0byBIZWJyb24sIHRvIG1ha2UgRGF2aWQga2luZyBvdmVyIGFsbCBJc3JhZWw6IGFuZCBhbGwgdGhlIHJlc3QgYWxzbyBvZiBJc3JhZWwgd2VyZSBvZiBvbmUgaGVhcnQgdG8gbWFrZSBEYXZpZCBraW5nLgpBbmQgdGhlcmUgdGhleSB3ZXJlIHdpdGggRGF2aWQgdGhyZWUgZGF5cywgZWF0aW5nIGFuZCBkcmlua2luZzogZm9yIHRoZWlyIGJyZXRocmVuIGhhZCBwcmVwYXJlZCBmb3IgdGhlbS4KTW9yZW92ZXIgdGhleSB0aGF0IHdlcmUgbmlnaCB0aGVtLCBldmVuIHVudG8gSXNzYWNoYXIgYW5kIFplYnVsdW4gYW5kIE5hcGh0YWxpLCBicm91Z2h0IGJyZWFkIG9uIGFzc2VzLCBhbmQgb24gY2FtZWxzLCBhbmQgb24gbXVsZXMsIGFuZCBvbiBveGVuLCBhbmQgbWVhdCwgbWVhbCwgY2FrZXMgb2YgZmlncywgYW5kIGJ1bmNoZXMgb2YgcmFpc2lucywgYW5kIHdpbmUsIGFuZCBvaWwsIGFuZCBveGVuLCBhbmQgc2hlZXAgYWJ1bmRhbnRseTogZm9yIHRoZXJlIHdhcyBqb3kgaW4gSXNyYWVsLgpBbmQgRGF2aWQgY29uc3VsdGVkIHdpdGggdGhlIGNhcHRhaW5zIG9mIHRob3VzYW5kcyBhbmQgaHVuZHJlZHMsIGFuZCB3aXRoIGV2ZXJ5IGxlYWRlci4KQW5kIERhdmlkIHNhaWQgdW50byBhbGwgdGhlIGNvbmdyZWdhdGlvbiBvZiBJc3JhZWwsIElmIGl0IHNlZW0gZ29vZCB1bnRvIHlvdSwgYW5kIHRoYXQgaXQgYmUgb2YgdGhlIExPUkQgb3VyIEdvZCwgbGV0IHVzIHNlbmQgYWJyb2FkIHVudG8gb3VyIGJyZXRocmVuIGV2ZXJ5IHdoZXJlLCB0aGF0IGFyZSBsZWZ0IGluIGFsbCB0aGUgbGFuZCBvZiBJc3JhZWwsIGFuZCB3aXRoIHRoZW0gYWxzbyB0byB0aGUgcHJpZXN0cyBhbmQgTGV2aXRlcyB3aGljaCBhcmUgaW4gdGhlaXIgY2l0aWVzIGFuZCBzdWJ1cmJzLCB0aGF0IHRoZXkgbWF5IGdhdGhlciB0aGVtc2VsdmVzIHVudG8gdXM6CkFuZCBsZXQgdXMgYnJpbmcgYWdhaW4gdGhlIGFyayBvZiBvdXIgR29kIHRvIHVzOiBmb3Igd2UgZW5xdWlyZWQgbm90IGF0IGl0IGluIHRoZSBkYXlzIG9mIFNhdWwuCkFuZCBhbGwgdGhlIGNvbmdyZWdhdGlvbiBzYWlkIHRoYXQgdGhleSB3b3VsZCBkbyBzbzogZm9yIHRoZSB0aGluZyB3YXMgcmlnaHQgaW4gdGhlIGV5ZXMgb2YgYWxsIHRoZSBwZW9wbGUuClNvIERhdmlkIGdhdGhlcmVkIGFsbCBJc3JhZWwgdG9nZXRoZXIsIGZyb20gU2hpaG9yIG9mIEVneXB0IGV2ZW4gdW50byB0aGUgZW50ZXJpbmcgb2YgSGVtYXRoLCB0byBicmluZyB0aGUgYXJrIG9mIEdvZCBmcm9tIEtpcmphdGhqZWFyaW0uCkFuZCBEYXZpZCB3ZW50IHVwLCBhbmQgYWxsIElzcmFlbCwgdG8gQmFhbGFoLCB0aGF0IGlzLCB0byBLaXJqYXRoamVhcmltLCB3aGljaCBiZWxvbmdlZCB0byBKdWRhaCwgdG8gYnJpbmcgdXAgdGhlbmNlIHRoZSBhcmsgb2YgR29kIHRoZSBMT1JELCB0aGF0IGR3ZWxsZXRoIGJldHdlZW4gdGhlIGNoZXJ1Ymltcywgd2hvc2UgbmFtZSBpcyBjYWxsZWQgb24gaXQuCkFuZCB0aGV5IGNhcnJpZWQgdGhlIGFyayBvZiBHb2QgaW4gYSBuZXcgY2FydCBvdXQgb2YgdGhlIGhvdXNlIG9mIEFiaW5hZGFiOiBhbmQgVXp6YSBhbmQgQWhpbyBkcmF2ZSB0aGUgY2FydC4KQW5kIERhdmlkIGFuZCBhbGwgSXNyYWVsIHBsYXllZCBiZWZvcmUgR29kIHdpdGggYWxsIHRoZWlyIG1pZ2h0LCBhbmQgd2l0aCBzaW5naW5nLCBhbmQgd2l0aCBoYXJwcywgYW5kIHdpdGggcHNhbHRlcmllcywgYW5kIHdpdGggdGltYnJlbHMsIGFuZCB3aXRoIGN5bWJhbHMsIGFuZCB3aXRoIHRydW1wZXRzLgpBbmQgd2hlbiB0aGV5IGNhbWUgdW50byB0aGUgdGhyZXNoaW5nZmxvb3Igb2YgQ2hpZG9uLCBVenphIHB1dCBmb3J0aCBoaXMgaGFuZCB0byBob2xkIHRoZSBhcms7IGZvciB0aGUgb3hlbiBzdHVtYmxlZC4KQW5kIHRoZSBhbmdlciBvZiB0aGUgTE9SRCB3YXMga2luZGxlZCBhZ2FpbnN0IFV6emEsIGFuZCBoZSBzbW90ZSBoaW0sIGJlY2F1c2UgaGUgcHV0IGhpcyBoYW5kIHRvIHRoZSBhcms6IGFuZCB0aGVyZSBoZSBkaWVkIGJlZm9yZSBHb2QuCkFuZCBEYXZpZCB3YXMgZGlzcGxlYXNlZCwgYmVjYXVzZSB0aGUgTE9SRCBoYWQgbWFkZSBhIGJyZWFjaCB1cG9uIFV6emE6IHdoZXJlZm9yZSB0aGF0IHBsYWNlIGlzIGNhbGxlZCBQZXJlenV6emEgdG8gdGhpcyBkYXkuCkFuZCBEYXZpZCB3YXMgYWZyYWlkIG9mIEdvZCB0aGF0IGRheSwgc2F5aW5nLCBIb3cgc2hhbGwgSSBicmluZyB0aGUgYXJrIG9mIEdvZCBob21lIHRvIG1lPwpTbyBEYXZpZCBicm91Z2h0IG5vdCB0aGUgYXJrIGhvbWUgdG8gaGltc2VsZiB0byB0aGUgY2l0eSBvZiBEYXZpZCwgYnV0IGNhcnJpZWQgaXQgYXNpZGUgaW50byB0aGUgaG91c2Ugb2YgT2JlZGVkb20gdGhlIEdpdHRpdGUuCkFuZCB0aGUgYXJrIG9mIEdvZCByZW1haW5lZCB3aXRoIHRoZSBmYW1pbHkgb2YgT2JlZGVkb20gaW4gaGlzIGhvdXNlIHRocmVlIG1vbnRocy4gQW5kIHRoZSBMT1JEIGJsZXNzZWQgdGhlIGhvdXNlIG9mIE9iZWRlZG9tLCBhbmQgYWxsIHRoYXQgaGUgaGFkLgpOb3cgSGlyYW0ga2luZyBvZiBUeXJlIHNlbnQgbWVzc2VuZ2VycyB0byBEYXZpZCwgYW5kIHRpbWJlciBvZiBjZWRhcnMsIHdpdGggbWFzb25zIGFuZCBjYXJwZW50ZXJzLCB0byBidWlsZCBoaW0gYW4gaG91c2UuCkFuZCBEYXZpZCBwZXJjZWl2ZWQgdGhhdCB0aGUgTE9SRCBoYWQgY29uZmlybWVkIGhpbSBraW5nIG92ZXIgSXNyYWVsLCBmb3IgaGlzIGtpbmdkb20gd2FzIGxpZnRlZCB1cCBvbiBoaWdoLCBiZWNhdXNlIG9mIGhpcyBwZW9wbGUgSXNyYWVsLgpBbmQgRGF2aWQgdG9vayBtb3JlIHdpdmVzIGF0IEplcnVzYWxlbTogYW5kIERhdmlkIGJlZ2F0IG1vcmUgc29ucyBhbmQgZGF1Z2h0ZXJzLgpOb3cgdGhlc2UgYXJlIHRoZSBuYW1lcyBvZiBoaXMgY2hpbGRyZW4gd2hpY2ggaGUgaGFkIGluIEplcnVzYWxlbTsgU2hhbW11YSwgYW5kIFNob2JhYiwgTmF0aGFuLCBhbmQgU29sb21vbiwKQW5kIEliaGFyLCBhbmQgRWxpc2h1YSwgYW5kIEVscGFsZXQsCkFuZCBOb2dhaCwgYW5kIE5lcGhlZywgYW5kIEphcGhpYSwKQW5kIEVsaXNoYW1hLCBhbmQgQmVlbGlhZGEsIGFuZCBFbGlwaGFsZXQuCkFuZCB3aGVuIHRoZSBQaGlsaXN0aW5lcyBoZWFyZCB0aGF0IERhdmlkIHdhcyBhbm9pbnRlZCBraW5nIG92ZXIgYWxsIElzcmFlbCwgYWxsIHRoZSBQaGlsaXN0aW5lcyB3ZW50IHVwIHRvIHNlZWsgRGF2aWQuIEFuZCBEYXZpZCBoZWFyZCBvZiBpdCwgYW5kIHdlbnQgb3V0IGFnYWluc3QgdGhlbS4KQW5kIHRoZSBQaGlsaXN0aW5lcyBjYW1lIGFuZCBzcHJlYWQgdGhlbXNlbHZlcyBpbiB0aGUgdmFsbGV5IG9mIFJlcGhhaW0uCkFuZCBEYXZpZCBlbnF1aXJlZCBvZiBHb2QsIHNheWluZywgU2hhbGwgSSBnbyB1cCBhZ2FpbnN0IHRoZSBQaGlsaXN0aW5lcz8gQW5kIHdpbHQgdGhvdSBkZWxpdmVyIHRoZW0gaW50byBtaW5lIGhhbmQ/IEFuZCB0aGUgTE9SRCBzYWlkIHVudG8gaGltLCBHbyB1cDsgZm9yIEkgd2lsbCBkZWxpdmVyIHRoZW0gaW50byB0aGluZSBoYW5kLgpTbyB0aGV5IGNhbWUgdXAgdG8gQmFhbHBlcmF6aW07IGFuZCBEYXZpZCBzbW90ZSB0aGVtIHRoZXJlLiBUaGVuIERhdmlkIHNhaWQsIEdvZCBoYXRoIGJyb2tlbiBpbiB1cG9uIG1pbmUgZW5lbWllcyBieSBtaW5lIGhhbmQgbGlrZSB0aGUgYnJlYWtpbmcgZm9ydGggb2Ygd2F0ZXJzOiB0aGVyZWZvcmUgdGhleSBjYWxsZWQgdGhlIG5hbWUgb2YgdGhhdCBwbGFjZSBCYWFscGVyYXppbS4KQW5kIHdoZW4gdGhleSBoYWQgbGVmdCB0aGVpciBnb2RzIHRoZXJlLCBEYXZpZCBnYXZlIGEgY29tbWFuZG1lbnQsIGFuZCB0aGV5IHdlcmUgYnVybmVkIHdpdGggZmlyZS4KQW5kIHRoZSBQaGlsaXN0aW5lcyB5ZXQgYWdhaW4gc3ByZWFkIHRoZW1zZWx2ZXMgYWJyb2FkIGluIHRoZSB2YWxsZXkuClRoZXJlZm9yZSBEYXZpZCBlbnF1aXJlZCBhZ2FpbiBvZiBHb2Q7IGFuZCBHb2Qgc2FpZCB1bnRvIGhpbSwgR28gbm90IHVwIGFmdGVyIHRoZW07IHR1cm4gYXdheSBmcm9tIHRoZW0sIGFuZCBjb21lIHVwb24gdGhlbSBvdmVyIGFnYWluc3QgdGhlIG11bGJlcnJ5IHRyZWVzLgpBbmQgaXQgc2hhbGwgYmUsIHdoZW4gdGhvdSBzaGFsdCBoZWFyIGEgc291bmQgb2YgZ29pbmcgaW4gdGhlIHRvcHMgb2YgdGhlIG11bGJlcnJ5IHRyZWVzLCB0aGF0IHRoZW4gdGhvdSBzaGFsdCBnbyBvdXQgdG8gYmF0dGxlOiBmb3IgR29kIGlzIGdvbmUgZm9ydGggYmVmb3JlIHRoZWUgdG8gc21pdGUgdGhlIGhvc3Qgb2YgdGhlIFBoaWxpc3RpbmVzLgpEYXZpZCB0aGVyZWZvcmUgZGlkIGFzIEdvZCBjb21tYW5kZWQgaGltOiBhbmQgdGhleSBzbW90ZSB0aGUgaG9zdCBvZiB0aGUgUGhpbGlzdGluZXMgZnJvbSBHaWJlb24gZXZlbiB0byBHYXplci4KQW5kIHRoZSBmYW1lIG9mIERhdmlkIHdlbnQgb3V0IGludG8gYWxsIGxhbmRzOyBhbmQgdGhlIExPUkQgYnJvdWdodCB0aGUgZmVhciBvZiBoaW0gdXBvbiBhbGwgbmF0aW9ucy4KQW5kIERhdmlkIG1hZGUgaGltIGhvdXNlcyBpbiB0aGUgY2l0eSBvZiBEYXZpZCwgYW5kIHByZXBhcmVkIGEgcGxhY2UgZm9yIHRoZSBhcmsgb2YgR29kLCBhbmQgcGl0Y2hlZCBmb3IgaXQgYSB0ZW50LgpUaGVuIERhdmlkIHNhaWQsIE5vbmUgb3VnaHQgdG8gY2FycnkgdGhlIGFyayBvZiBHb2QgYnV0IHRoZSBMZXZpdGVzOiBmb3IgdGhlbSBoYXRoIHRoZSBMT1JEIGNob3NlbiB0byBjYXJyeSB0aGUgYXJrIG9mIEdvZCwgYW5kIHRvIG1pbmlzdGVyIHVudG8gaGltIGZvciBldmVyLgpBbmQgRGF2aWQgZ2F0aGVyZWQgYWxsIElzcmFlbCB0b2dldGhlciB0byBKZXJ1c2FsZW0sIHRvIGJyaW5nIHVwIHRoZSBhcmsgb2YgdGhlIExPUkQgdW50byBoaXMgcGxhY2UsIHdoaWNoIGhlIGhhZCBwcmVwYXJlZCBmb3IgaXQuCkFuZCBEYXZpZCBhc3NlbWJsZWQgdGhlIGNoaWxkcmVuIG9mIEFhcm9uLCBhbmQgdGhlIExldml0ZXM6Ck9mIHRoZSBzb25zIG9mIEtvaGF0aDsgVXJpZWwgdGhlIGNoaWVmLCBhbmQgaGlzIGJyZXRocmVuIGFuIGh1bmRyZWQgYW5kIHR3ZW50eToKT2YgdGhlIHNvbnMgb2YgTWVyYXJpOyBBc2FpYWggdGhlIGNoaWVmLCBhbmQgaGlzIGJyZXRocmVuIHR3byBodW5kcmVkIGFuZCB0d2VudHk6Ck9mIHRoZSBzb25zIG9mIEdlcnNob207IEpvZWwgdGhlIGNoaWVmIGFuZCBoaXMgYnJldGhyZW4gYW4gaHVuZHJlZCBhbmQgdGhpcnR5OgpPZiB0aGUgc29ucyBvZiBFbGl6YXBoYW47IFNoZW1haWFoIHRoZSBjaGllZiwgYW5kIGhpcyBicmV0aHJlbiB0d28gaHVuZHJlZDoKT2YgdGhlIHNvbnMgb2YgSGVicm9uOyBFbGllbCB0aGUgY2hpZWYsIGFuZCBoaXMgYnJldGhyZW4gZm91cnNjb3JlOgpPZiB0aGUgc29ucyBvZiBVenppZWw7IEFtbWluYWRhYiB0aGUgY2hpZWYsIGFuZCBoaXMgYnJldGhyZW4gYW4gaHVuZHJlZCBhbmQgdHdlbHZlLgpBbmQgRGF2aWQgY2FsbGVkIGZvciBaYWRvayBhbmQgQWJpYXRoYXIgdGhlIHByaWVzdHMsIGFuZCBmb3IgdGhlIExldml0ZXMsIGZvciBVcmllbCwgQXNhaWFoLCBhbmQgSm9lbCwgU2hlbWFpYWgsIGFuZCBFbGllbCwgYW5kIEFtbWluYWRhYiwKQW5kIHNhaWQgdW50byB0aGVtLCBZZSBhcmUgdGhlIGNoaWVmIG9mIHRoZSBmYXRoZXJzIG9mIHRoZSBMZXZpdGVzOiBzYW5jdGlmeSB5b3Vyc2VsdmVzLCBib3RoIHllIGFuZCB5b3VyIGJyZXRocmVuLCB0aGF0IHllIG1heSBicmluZyB1cCB0aGUgYXJrIG9mIHRoZSBMT1JEIEdvZCBvZiBJc3JhZWwgdW50byB0aGUgcGxhY2UgdGhhdCBJIGhhdmUgcHJlcGFyZWQgZm9yIGl0LgpGb3IgYmVjYXVzZSB5ZSBkaWQgaXQgbm90IGF0IHRoZSBmaXJzdCwgdGhlIExPUkQgb3VyIEdvZCBtYWRlIGEgYnJlYWNoIHVwb24gdXMsIGZvciB0aGF0IHdlIHNvdWdodCBoaW0gbm90IGFmdGVyIHRoZSBkdWUgb3JkZXIuClNvIHRoZSBwcmllc3RzIGFuZCB0aGUgTGV2aXRlcyBzYW5jdGlmaWVkIHRoZW1zZWx2ZXMgdG8gYnJpbmcgdXAgdGhlIGFyayBvZiB0aGUgTE9SRCBHb2Qgb2YgSXNyYWVsLgpBbmQgdGhlIGNoaWxkcmVuIG9mIHRoZSBMZXZpdGVzIGJhcmUgdGhlIGFyayBvZiBHb2QgdXBvbiB0aGVpciBzaG91bGRlcnMgd2l0aCB0aGUgc3RhdmVzIHRoZXJlb24sIGFzIE1vc2VzIGNvbW1hbmRlZCBhY2NvcmRpbmcgdG8gdGhlIHdvcmQgb2YgdGhlIExPUkQuCkFuZCBEYXZpZCBzcGFrZSB0byB0aGUgY2hpZWYgb2YgdGhlIExldml0ZXMgdG8gYXBwb2ludCB0aGVpciBicmV0aHJlbiB0byBiZSB0aGUgc2luZ2VycyB3aXRoIGluc3RydW1lbnRzIG9mIG11c2ljaywgcHNhbHRlcmllcyBhbmQgaGFycHMgYW5kIGN5bWJhbHMsIHNvdW5kaW5nLCBieSBsaWZ0aW5nIHVwIHRoZSB2b2ljZSB3aXRoIGpveS4KU28gdGhlIExldml0ZXMgYXBwb2ludGVkIEhlbWFuIHRoZSBzb24gb2YgSm9lbDsgYW5kIG9mIGhpcyBicmV0aHJlbiwgQXNhcGggdGhlIHNvbiBvZiBCZXJlY2hpYWg7IGFuZCBvZiB0aGUgc29ucyBvZiBNZXJhcmkgdGhlaXIgYnJldGhyZW4sIEV0aGFuIHRoZSBzb24gb2YgS3VzaGFpYWg7CkFuZCB3aXRoIHRoZW0gdGhlaXIgYnJldGhyZW4gb2YgdGhlIHNlY29uZCBkZWdyZWUsIFplY2hhcmlhaCwgQmVuLCBhbmQgSmFhemllbCwgYW5kIFNoZW1pcmFtb3RoLCBhbmQgSmVoaWVsLCBhbmQgVW5uaSwgRWxpYWIsIGFuZCBCZW5haWFoLCBhbmQgTWFhc2VpYWgsIGFuZCBNYXR0aXRoaWFoLCBhbmQgRWxpcGhlbGVoLCBhbmQgTWlrbmVpYWgsIGFuZCBPYmVkZWRvbSwgYW5kIEplaWVsLCB0aGUgcG9ydGVycy4KU28gdGhlIHNpbmdlcnMsIEhlbWFuLCBBc2FwaCwgYW5kIEV0aGFuLCB3ZXJlIGFwcG9pbnRlZCB0byBzb3VuZCB3aXRoIGN5bWJhbHMgb2YgYnJhc3M7CkFuZCBaZWNoYXJpYWgsIGFuZCBBemllbCwgYW5kIFNoZW1pcmFtb3RoLCBhbmQgSmVoaWVsLCBhbmQgVW5uaSwgYW5kIEVsaWFiLCBhbmQgTWFhc2VpYWgsIGFuZCBCZW5haWFoLCB3aXRoIHBzYWx0ZXJpZXMgb24gQWxhbW90aDsKQW5kIE1hdHRpdGhpYWgsIGFuZCBFbGlwaGVsZWgsIGFuZCBNaWtuZWlhaCwgYW5kIE9iZWRlZG9tLCBhbmQgSmVpZWwsIGFuZCBBemF6aWFoLCB3aXRoIGhhcnBzIG9uIHRoZSBTaGVtaW5pdGggdG8gZXhjZWwuCkFuZCBDaGVuYW5pYWgsIGNoaWVmIG9mIHRoZSBMZXZpdGVzLCB3YXMgZm9yIHNvbmc6IGhlIGluc3RydWN0ZWQgYWJvdXQgdGhlIHNvbmcsIGJlY2F1c2UgaGUgd2FzIHNraWxmdWwuCkFuZCBCZXJlY2hpYWggYW5kIEVsa2FuYWggd2VyZSBkb29ya2VlcGVycyBmb3IgdGhlIGFyay4KQW5kIFNoZWJhbmlhaCwgYW5kIEplaG9zaGFwaGF0LCBhbmQgTmV0aGFuZWVsLCBhbmQgQW1hc2FpLCBhbmQgWmVjaGFyaWFoLCBhbmQgQmVuYWlhaCwgYW5kIEVsaWV6ZXIsIHRoZSBwcmllc3RzLCBkaWQgYmxvdyB3aXRoIHRoZSB0cnVtcGV0cyBiZWZvcmUgdGhlIGFyayBvZiBHb2Q6IGFuZCBPYmVkZWRvbSBhbmQgSmVoaWFoIHdlcmUgZG9vcmtlZXBlcnMgZm9yIHRoZSBhcmsuClNvIERhdmlkLCBhbmQgdGhlIGVsZGVycyBvZiBJc3JhZWwsIGFuZCB0aGUgY2FwdGFpbnMgb3ZlciB0aG91c2FuZHMsIHdlbnQgdG8gYnJpbmcgdXAgdGhlIGFyayBvZiB0aGUgY292ZW5hbnQgb2YgdGhlIExPUkQgb3V0IG9mIHRoZSBob3VzZSBvZiBPYmVkZWRvbSB3aXRoIGpveS4KQW5kIGl0IGNhbWUgdG8gcGFzcywgd2hlbiBHb2QgaGVscGVkIHRoZSBMZXZpdGVzIHRoYXQgYmFyZSB0aGUgYXJrIG9mIHRoZSBjb3ZlbmFudCBvZiB0aGUgTE9SRCwgdGhhdCB0aGV5IG9mZmVyZWQgc2V2ZW4gYnVsbG9ja3MgYW5kIHNldmVuIHJhbXMuCkFuZCBEYXZpZCB3YXMgY2xvdGhlZCB3aXRoIGEgcm9iZSBvZiBmaW5lIGxpbmVuLCBhbmQgYWxsIHRoZSBMZXZpdGVzIHRoYXQgYmFyZSB0aGUgYXJrLCBhbmQgdGhlIHNpbmdlcnMsIGFuZCBDaGVuYW5pYWggdGhlIG1hc3RlciBvZiB0aGUgc29uZyB3aXRoIHRoZSBzaW5nZXJzOiBEYXZpZCBhbHNvIGhhZCB1cG9uIGhpbSBhbiBlcGhvZCBvZiBsaW5lbi4KVGh1cyBhbGwgSXNyYWVsIGJyb3VnaHQgdXAgdGhlIGFyayBvZiB0aGUgY292ZW5hbnQgb2YgdGhlIExPUkQgd2l0aCBzaG91dGluZywgYW5kIHdpdGggc291bmQgb2YgdGhlIGNvcm5ldCwgYW5kIHdpdGggdHJ1bXBldHMsIGFuZCB3aXRoIGN5bWJhbHMsIG1ha2luZyBhIG5vaXNlIHdpdGggcHNhbHRlcmllcyBhbmQgaGFycHMuCkFuZCBpdCBjYW1lIHRvIHBhc3MsIGFzIHRoZSBhcmsgb2YgdGhlIGNvdmVuYW50IG9mIHRoZSBMT1JEIGNhbWUgdG8gdGhlIGNpdHkgb2YgRGF2aWQsIHRoYXQgTWljaGFsLCB0aGUgZGF1Z2h0ZXIgb2YgU2F1bCBsb29raW5nIG91dCBhdCBhIHdpbmRvdyBzYXcga2luZyBEYXZpZCBkYW5jaW5nIGFuZCBwbGF5aW5nOiBhbmQgc2hlIGRlc3Bpc2VkIGhpbSBpbiBoZXIgaGVhcnQuClNvIHRoZXkgYnJvdWdodCB0aGUgYXJrIG9mIEdvZCwgYW5kIHNldCBpdCBpbiB0aGUgbWlkc3Qgb2YgdGhlIHRlbnQgdGhhdCBEYXZpZCBoYWQgcGl0Y2hlZCBmb3IgaXQ6IGFuZCB0aGV5IG9mZmVyZWQgYnVybnQgc2FjcmlmaWNlcyBhbmQgcGVhY2Ugb2ZmZXJpbmdzIGJlZm9yZSBHb2QuCkFuZCB3aGVuIERhdmlkIGhhZCBtYWRlIGFuIGVuZCBvZiBvZmZlcmluZyB0aGUgYnVybnQgb2ZmZXJpbmdzIGFuZCB0aGUgcGVhY2Ugb2ZmZXJpbmdzLCBoZSBibGVzc2VkIHRoZSBwZW9wbGUgaW4gdGhlIG5hbWUgb2YgdGhlIExPUkQuCkFuZCBoZSBkZWFsdCB0byBldmVyeSBvbmUgb2YgSXNyYWVsLCBib3RoIG1hbiBhbmQgd29tYW4sIHRvIGV2ZXJ5IG9uZSBhIGxvYWYgb2YgYnJlYWQsIGFuZCBhIGdvb2QgcGllY2Ugb2YgZmxlc2gsIGFuZCBhIGZsYWdvbiBvZiB3aW5lLgpBbmQgaGUgYXBwb2ludGVkIGNlcnRhaW4gb2YgdGhlIExldml0ZXMgdG8gbWluaXN0ZXIgYmVmb3JlIHRoZSBhcmsgb2YgdGhlIExPUkQsIGFuZCB0byByZWNvcmQsIGFuZCB0byB0aGFuayBhbmQgcHJhaXNlIHRoZSBMT1JEIEdvZCBvZiBJc3JhZWw6CkFzYXBoIHRoZSBjaGllZiwgYW5kIG5leHQgdG8gaGltIFplY2hhcmlhaCwgSmVpZWwsIGFuZCBTaGVtaXJhbW90aCwgYW5kIEplaGllbCwgYW5kIE1hdHRpdGhpYWgsIGFuZCBFbGlhYiwgYW5kIEJlbmFpYWgsIGFuZCBPYmVkZWRvbTogYW5kIEplaWVsIHdpdGggcHNhbHRlcmllcyBhbmQgd2l0aCBoYXJwczsgYnV0IEFzYXBoIG1hZGUgYSBzb3VuZCB3aXRoIGN5bWJhbHM7CkJlbmFpYWggYWxzbyBhbmQgSmFoYXppZWwgdGhlIHByaWVzdHMgd2l0aCB0cnVtcGV0cyBjb250aW51YWxseSBiZWZvcmUgdGhlIGFyayBvZiB0aGUgY292ZW5hbnQgb2YgR29kLgpUaGVuIG9uIHRoYXQgZGF5IERhdmlkIGRlbGl2ZXJlZCBmaXJzdCB0aGlzIHBzYWxtIHRvIHRoYW5rIHRoZSBMT1JEIGludG8gdGhlIGhhbmQgb2YgQXNhcGggYW5kIGhpcyBicmV0aHJlbi4KR2l2ZSB0aGFua3MgdW50byB0aGUgTE9SRCwgY2FsbCB1cG9uIGhpcyBuYW1lLCBtYWtlIGtub3duIGhpcyBkZWVkcyBhbW9uZyB0aGUgcGVvcGxlLgpTaW5nIHVudG8gaGltLCBzaW5nIHBzYWxtcyB1bnRvIGhpbSwgdGFsayB5ZSBvZiBhbGwgaGlzIHdvbmRyb3VzIHdvcmtzLgpHbG9yeSB5ZSBpbiBoaXMgaG9seSBuYW1lOiBsZXQgdGhlIGhlYXJ0IG9mIHRoZW0gcmVqb2ljZSB0aGF0IHNlZWsgdGhlIExPUkQuClNlZWsgdGhlIExPUkQgYW5kIGhpcyBzdHJlbmd0aCwgc2VlayBoaXMgZmFjZSBjb250aW51YWxseS4KUmVtZW1iZXIgaGlzIG1hcnZlbGxvdXMgd29ya3MgdGhhdCBoZSBoYXRoIGRvbmUsIGhpcyB3b25kZXJzLCBhbmQgdGhlIGp1ZGdtZW50cyBvZiBoaXMgbW91dGg7Ck8geWUgc2VlZCBvZiBJc3JhZWwgaGlzIHNlcnZhbnQsIHllIGNoaWxkcmVuIG9mIEphY29iLCBoaXMgY2hvc2VuIG9uZXMuCkhlIGlzIHRoZSBMT1JEIG91ciBHb2Q7IGhpcyBqdWRnbWVudHMgYXJlIGluIGFsbCB0aGUgZWFydGguCkJlIHllIG1pbmRmdWwgYWx3YXlzIG9mIGhpcyBjb3ZlbmFudDsgdGhlIHdvcmQgd2hpY2ggaGUgY29tbWFuZGVkIHRvIGEgdGhvdXNhbmQgZ2VuZXJhdGlvbnM7CkV2ZW4gb2YgdGhlIGNvdmVuYW50IHdoaWNoIGhlIG1hZGUgd2l0aCBBYnJhaGFtLCBhbmQgb2YgaGlzIG9hdGggdW50byBJc2FhYzsKQW5kIGhhdGggY29uZmlybWVkIHRoZSBzYW1lIHRvIEphY29iIGZvciBhIGxhdywgYW5kIHRvIElzcmFlbCBmb3IgYW4gZXZlcmxhc3RpbmcgY292ZW5hbnQsClNheWluZywgVW50byB0aGVlIHdpbGwgSSBnaXZlIHRoZSBsYW5kIG9mIENhbmFhbiwgdGhlIGxvdCBvZiB5b3VyIGluaGVyaXRhbmNlOwpXaGVuIHllIHdlcmUgYnV0IGZldywgZXZlbiBhIGZldywgYW5kIHN0cmFuZ2VycyBpbiBpdC4KQW5kIHdoZW4gdGhleSB3ZW50IGZyb20gbmF0aW9uIHRvIG5hdGlvbiwgYW5kIGZyb20gb25lIGtpbmdkb20gdG8gYW5vdGhlciBwZW9wbGU7CkhlIHN1ZmZlcmVkIG5vIG1hbiB0byBkbyB0aGVtIHdyb25nOiB5ZWEsIGhlIHJlcHJvdmVkIGtpbmdzIGZvciB0aGVpciBzYWtlcywKU2F5aW5nLCBUb3VjaCBub3QgbWluZSBhbm9pbnRlZCwgYW5kIGRvIG15IHByb3BoZXRzIG5vIGhhcm0uClNpbmcgdW50byB0aGUgTE9SRCwgYWxsIHRoZSBlYXJ0aDsgc2hldyBmb3J0aCBmcm9tIGRheSB0byBkYXkgaGlzIHNhbHZhdGlvbi4KRGVjbGFyZSBoaXMgZ2xvcnkgYW1vbmcgdGhlIGhlYXRoZW47IGhpcyBtYXJ2ZWxsb3VzIHdvcmtzIGFtb25nIGFsbCBuYXRpb25zLgpGb3IgZ3JlYXQgaXMgdGhlIExPUkQsIGFuZCBncmVhdGx5IHRvIGJlIHByYWlzZWQ6IGhlIGFsc28gaXMgdG8gYmUgZmVhcmVkIGFib3ZlIGFsbCBnb2RzLgpGb3IgYWxsIHRoZSBnb2RzIG9mIHRoZSBwZW9wbGUgYXJlIGlkb2xzOiBidXQgdGhlIExPUkQgbWFkZSB0aGUgaGVhdmVucy4KR2xvcnkgYW5kIGhvbm91ciBhcmUgaW4gaGlzIHByZXNlbmNlOyBzdHJlbmd0aCBhbmQgZ2xhZG5lc3MgYXJlIGluIGhpcyBwbGFjZS4KR2l2ZSB1bnRvIHRoZSBMT1JELCB5ZSBraW5kcmVkcyBvZiB0aGUgcGVvcGxlLCBnaXZlIHVudG8gdGhlIExPUkQgZ2xvcnkgYW5kIHN0cmVuZ3RoLgpHaXZlIHVudG8gdGhlIExPUkQgdGhlIGdsb3J5IGR1ZSB1bnRvIGhpcyBuYW1lOiBicmluZyBhbiBvZmZlcmluZywgYW5kIGNvbWUgYmVmb3JlIGhpbTogd29yc2hpcCB0aGUgTE9SRCBpbiB0aGUgYmVhdXR5IG9mIGhvbGluZXNzLgpGZWFyIGJlZm9yZSBoaW0sIGFsbCB0aGUgZWFydGg6IHRoZSB3b3JsZCBhbHNvIHNoYWxsIGJlIHN0YWJsZSwgdGhhdCBpdCBiZSBub3QgbW92ZWQuCkxldCB0aGUgaGVhdmVucyBiZSBnbGFkLCBhbmQgbGV0IHRoZSBlYXJ0aCByZWpvaWNlOiBhbmQgbGV0IG1lbiBzYXkgYW1vbmcgdGhlIG5hdGlvbnMsIFRoZSBMT1JEIHJlaWduZXRoLgpMZXQgdGhlIHNlYSByb2FyLCBhbmQgdGhlIGZ1bG5lc3MgdGhlcmVvZjogbGV0IHRoZSBmaWVsZHMgcmVqb2ljZSwgYW5kIGFsbCB0aGF0IGlzIHRoZXJlaW4uClRoZW4gc2hhbGwgdGhlIHRyZWVzIG9mIHRoZSB3b29kIHNpbmcgb3V0IGF0IHRoZSBwcmVzZW5jZSBvZiB0aGUgTE9SRCwgYmVjYXVzZSBoZSBjb21ldGggdG8ganVkZ2UgdGhlIGVhcnRoLgpPIGdpdmUgdGhhbmtzIHVudG8gdGhlIExPUkQ7IGZvciBoZSBpcyBnb29kOyBmb3IgaGlzIG1lcmN5IGVuZHVyZXRoIGZvciBldmVyLgpBbmQgc2F5IHllLCBTYXZlIHVzLCBPIEdvZCBvZiBvdXIgc2FsdmF0aW9uLCBhbmQgZ2F0aGVyIHVzIHRvZ2V0aGVyLCBhbmQgZGVsaXZlciB1cyBmcm9tIHRoZSBoZWF0aGVuLCB0aGF0IHdlIG1heSBnaXZlIHRoYW5rcyB0byB0aHkgaG9seSBuYW1lLCBhbmQgZ2xvcnkgaW4gdGh5IHByYWlzZS4KQmxlc3NlZCBiZSB0aGUgTE9SRCBHb2Qgb2YgSXNyYWVsIGZvciBldmVyIGFuZCBldmVyLiBBbmQgYWxsIHRoZSBwZW9wbGUgc2FpZCwgQW1lbiwgYW5kIHByYWlzZWQgdGhlIExPUkQuClNvIGhlIGxlZnQgdGhlcmUgYmVmb3JlIHRoZSBhcmsgb2YgdGhlIGNvdmVuYW50IG9mIHRoZSBMT1JEIEFzYXBoIGFuZCBoaXMgYnJldGhyZW4sIHRvIG1pbmlzdGVyIGJlZm9yZSB0aGUgYXJrIGNvbnRpbnVhbGx5LCBhcyBldmVyeSBkYXkncyB3b3JrIHJlcXVpcmVkOgpBbmQgT2JlZGVkb20gd2l0aCB0aGVpciBicmV0aHJlbiwgdGhyZWVzY29yZSBhbmQgZWlnaHQ7IE9iZWRlZG9tIGFsc28gdGhlIHNvbiBvZiBKZWR1dGh1biBhbmQgSG9zYWggdG8gYmUgcG9ydGVyczoKQW5kIFphZG9rIHRoZSBwcmllc3QsIGFuZCBoaXMgYnJldGhyZW4gdGhlIHByaWVzdHMsIGJlZm9yZSB0aGUgdGFiZXJuYWNsZSBvZiB0aGUgTE9SRCBpbiB0aGUgaGlnaCBwbGFjZSB0aGF0IHdhcyBhdCBHaWJlb24sClRvIG9mZmVyIGJ1cm50IG9mZmVyaW5ncyB1bnRvIHRoZSBMT1JEIHVwb24gdGhlIGFsdGFyIG9mIHRoZSBidXJudCBvZmZlcmluZyBjb250aW51YWxseSBtb3JuaW5nIGFuZCBldmVuaW5nLCBhbmQgdG8gZG8gYWNjb3JkaW5nIHRvIGFsbCB0aGF0IGlzIHdyaXR0ZW4gaW4gdGhlIGxhdyBvZiB0aGUgTE9SRCwgd2hpY2ggaGUgY29tbWFuZGVkIElzcmFlbDsKQW5kIHdpdGggdGhlbSBIZW1hbiBhbmQgSmVkdXRodW4sIGFuZCB0aGUgcmVzdCB0aGF0IHdlcmUgY2hvc2VuLCB3aG8gd2VyZSBleHByZXNzZWQgYnkgbmFtZSwgdG8gZ2l2ZSB0aGFua3MgdG8gdGhlIExPUkQsIGJlY2F1c2UgaGlzIG1lcmN5IGVuZHVyZXRoIGZvciBldmVyOwpBbmQgd2l0aCB0aGVtIEhlbWFuIGFuZCBKZWR1dGh1biB3aXRoIHRydW1wZXRzIGFuZCBjeW1iYWxzIGZvciB0aG9zZSB0aGF0IHNob3VsZCBtYWtlIGEgc291bmQsIGFuZCB3aXRoIG11c2ljYWwgaW5zdHJ1bWVudHMgb2YgR29kLiBBbmQgdGhlIHNvbnMgb2YgSmVkdXRodW4gd2VyZSBwb3J0ZXJzLgpBbmQgYWxsIHRoZSBwZW9wbGUgZGVwYXJ0ZWQgZXZlcnkgbWFuIHRvIGhpcyBob3VzZTogYW5kIERhdmlkIHJldHVybmVkIHRvIGJsZXNzIGhpcyBob3VzZS4KTm93IGl0IGNhbWUgdG8gcGFzcywgYXMgRGF2aWQgc2F0IGluIGhpcyBob3VzZSwgdGhhdCBEYXZpZCBzYWlkIHRvIE5hdGhhbiB0aGUgcHJvcGhldCwgTG8sIEkgZHdlbGwgaW4gYW4gaG91c2Ugb2YgY2VkYXJzLCBidXQgdGhlIGFyayBvZiB0aGUgY292ZW5hbnQgb2YgdGhlIExPUkQgcmVtYWluZXRoIHVuZGVyIGN1cnRhaW5zLgpUaGVuIE5hdGhhbiBzYWlkIHVudG8gRGF2aWQsIERvIGFsbCB0aGF0IGlzIGluIHRoaW5lIGhlYXJ0OyBmb3IgR29kIGlzIHdpdGggdGhlZS4KQW5kIGl0IGNhbWUgdG8gcGFzcyB0aGUgc2FtZSBuaWdodCwgdGhhdCB0aGUgd29yZCBvZiBHb2QgY2FtZSB0byBOYXRoYW4sIHNheWluZywKR28gYW5kIHRlbGwgRGF2aWQgbXkgc2VydmFudCwgVGh1cyBzYWl0aCB0aGUgTE9SRCwgVGhvdSBzaGFsdCBub3QgYnVpbGQgbWUgYW4gaG91c2UgdG8gZHdlbGwgaW46CkZvciBJIGhhdmUgbm90IGR3ZWx0IGluIGFuIGhvdXNlIHNpbmNlIHRoZSBkYXkgdGhhdCBJIGJyb3VnaHQgdXAgSXNyYWVsIHVudG8gdGhpcyBkYXk7IGJ1dCBoYXZlIGdvbmUgZnJvbSB0ZW50IHRvIHRlbnQsIGFuZCBmcm9tIG9uZSB0YWJlcm5hY2xlIHRvIGFub3RoZXIuCldoZXJlc29ldmVyIEkgaGF2ZSB3YWxrZWQgd2l0aCBhbGwgSXNyYWVsLCBzcGFrZSBJIGEgd29yZCB0byBhbnkgb2YgdGhlIGp1ZGdlcyBvZiBJc3JhZWwsIHdob20gSSBjb21tYW5kZWQgdG8gZmVlZCBteSBwZW9wbGUsIHNheWluZywgV2h5IGhhdmUgeWUgbm90IGJ1aWx0IG1lIGFuIGhvdXNlIG9mIGNlZGFycz8KTm93IHRoZXJlZm9yZSB0aHVzIHNoYWx0IHRob3Ugc2F5IHVudG8gbXkgc2VydmFudCBEYXZpZCwgVGh1cyBzYWl0aCB0aGUgTE9SRCBvZiBob3N0cywgSSB0b29rIHRoZWUgZnJvbSB0aGUgc2hlZXBjb3RlLCBldmVuIGZyb20gZm9sbG93aW5nIHRoZSBzaGVlcCwgdGhhdCB0aG91IHNob3VsZGVzdCBiZSBydWxlciBvdmVyIG15IHBlb3BsZSBJc3JhZWw6CkFuZCBJIGhhdmUgYmVlbiB3aXRoIHRoZWUgd2hpdGhlcnNvZXZlciB0aG91IGhhc3Qgd2Fsa2VkLCBhbmQgaGF2ZSBjdXQgb2ZmIGFsbCB0aGluZSBlbmVtaWVzIGZyb20gYmVmb3JlIHRoZWUsIGFuZCBoYXZlIG1hZGUgdGhlZSBhIG5hbWUgbGlrZSB0aGUgbmFtZSBvZiB0aGUgZ3JlYXQgbWVuIHRoYXQgYXJlIGluIHRoZSBlYXJ0aC4KQWxzbyBJIHdpbGwgb3JkYWluIGEgcGxhY2UgZm9yIG15IHBlb3BsZSBJc3JhZWwsIGFuZCB3aWxsIHBsYW50IHRoZW0sIGFuZCB0aGV5IHNoYWxsIGR3ZWxsIGluIHRoZWlyIHBsYWNlLCBhbmQgc2hhbGwgYmUgbW92ZWQgbm8gbW9yZTsgbmVpdGhlciBzaGFsbCB0aGUgY2hpbGRyZW4gb2Ygd2lja2VkbmVzcyB3YXN0ZSB0aGVtIGFueSBtb3JlLCBhcyBhdCB0aGUgYmVnaW5uaW5nLApBbmQgc2luY2UgdGhlIHRpbWUgdGhhdCBJIGNvbW1hbmRlZCBqdWRnZXMgdG8gYmUgb3ZlciBteSBwZW9wbGUgSXNyYWVsLiBNb3Jlb3ZlciBJIHdpbGwgc3ViZHVlIGFsbCB0aGluZSBlbmVtaWVzLiBGdXJ0aGVybW9yZSBJIHRlbGwgdGhlZSB0aGF0IHRoZSBMT1JEIHdpbGwgYnVpbGQgdGhlZSBhbiBob3VzZS4KQW5kIGl0IHNoYWxsIGNvbWUgdG8gcGFzcywgd2hlbiB0aHkgZGF5cyBiZSBleHBpcmVkIHRoYXQgdGhvdSBtdXN0IGdvIHRvIGJlIHdpdGggdGh5IGZhdGhlcnMsIHRoYXQgSSB3aWxsIHJhaXNlIHVwIHRoeSBzZWVkIGFmdGVyIHRoZWUsIHdoaWNoIHNoYWxsIGJlIG9mIHRoeSBzb25zOyBhbmQgSSB3aWxsIGVzdGFibGlzaCBoaXMga2luZ2RvbS4KSGUgc2hhbGwgYnVpbGQgbWUgYW4gaG91c2UsIGFuZCBJIHdpbGwgc3RhYmxpc2ggaGlzIHRocm9uZSBmb3IgZXZlci4KSSB3aWxsIGJlIGhpcyBmYXRoZXIsIGFuZCBoZSBzaGFsbCBiZSBteSBzb246IGFuZCBJIHdpbGwgbm90IHRha2UgbXkgbWVyY3kgYXdheSBmcm9tIGhpbSwgYXMgSSB0b29rIGl0IGZyb20gaGltIHRoYXQgd2FzIGJlZm9yZSB0aGVlOgpCdXQgSSB3aWxsIHNldHRsZSBoaW0gaW4gbWluZSBob3VzZSBhbmQgaW4gbXkga2luZ2RvbSBmb3IgZXZlcjogYW5kIGhpcyB0aHJvbmUgc2hhbGwgYmUgZXN0YWJsaXNoZWQgZm9yIGV2ZXJtb3JlLgpBY2NvcmRpbmcgdG8gYWxsIHRoZXNlIHdvcmRzLCBhbmQgYWNjb3JkaW5nIHRvIGFsbCB0aGlzIHZpc2lvbiwgc28gZGlkIE5hdGhhbiBzcGVhayB1bnRvIERhdmlkLgpBbmQgRGF2aWQgdGhlIGtpbmcgY2FtZSBhbmQgc2F0IGJlZm9yZSB0aGUgTE9SRCwgYW5kIHNhaWQsIFdobyBhbSBJLCBPIExPUkQgR29kLCBhbmQgd2hhdCBpcyBtaW5lIGhvdXNlLCB0aGF0IHRob3UgaGFzdCBicm91Z2h0IG1lIGhpdGhlcnRvPwpBbmQgeWV0IHRoaXMgd2FzIGEgc21hbGwgdGhpbmcgaW4gdGhpbmUgZXllcywgTyBHb2Q7IGZvciB0aG91IGhhc3QgYWxzbyBzcG9rZW4gb2YgdGh5IHNlcnZhbnQncyBob3VzZSBmb3IgYSBncmVhdCB3aGlsZSB0byBjb21lLCBhbmQgaGFzdCByZWdhcmRlZCBtZSBhY2NvcmRpbmcgdG8gdGhlIGVzdGF0ZSBvZiBhIG1hbiBvZiBoaWdoIGRlZ3JlZSwgTyBMT1JEIEdvZC4KV2hhdCBjYW4gRGF2aWQgc3BlYWsgbW9yZSB0byB0aGVlIGZvciB0aGUgaG9ub3VyIG9mIHRoeSBzZXJ2YW50PyBmb3IgdGhvdSBrbm93ZXN0IHRoeSBzZXJ2YW50LgpPIExPUkQsIGZvciB0aHkgc2VydmFudCdzIHNha2UsIGFuZCBhY2NvcmRpbmcgdG8gdGhpbmUgb3duIGhlYXJ0LCBoYXN0IHRob3UgZG9uZSBhbGwgdGhpcyBncmVhdG5lc3MsIGluIG1ha2luZyBrbm93biBhbGwgdGhlc2UgZ3JlYXQgdGhpbmdzLgpPIExPUkQsIHRoZXJlIGlzIG5vbmUgbGlrZSB0aGVlLCBuZWl0aGVyIGlzIHRoZXJlIGFueSBHb2QgYmVzaWRlIHRoZWUsIGFjY29yZGluZyB0byBhbGwgdGhhdCB3ZSBoYXZlIGhlYXJkIHdpdGggb3VyIGVhcnMuCkFuZCB3aGF0IG9uZSBuYXRpb24gaW4gdGhlIGVhcnRoIGlzIGxpa2UgdGh5IHBlb3BsZSBJc3JhZWwsIHdob20gR29kIHdlbnQgdG8gcmVkZWVtIHRvIGJlIGhpcyBvd24gcGVvcGxlLCB0byBtYWtlIHRoZWUgYSBuYW1lIG9mIGdyZWF0bmVzcyBhbmQgdGVycmlibGVuZXNzLCBieSBkcml2aW5nIG91dCBuYXRpb25zIGZyb20gYmVmb3JlIHRoeSBwZW9wbGUgd2hvbSB0aG91IGhhc3QgcmVkZWVtZWQgb3V0IG9mIEVneXB0PwpGb3IgdGh5IHBlb3BsZSBJc3JhZWwgZGlkc3QgdGhvdSBtYWtlIHRoaW5lIG93biBwZW9wbGUgZm9yIGV2ZXI7IGFuZCB0aG91LCBMT1JELCBiZWNhbWVzdCB0aGVpciBHb2QuClRoZXJlZm9yZSBub3csIExPUkQsIGxldCB0aGUgdGhpbmcgdGhhdCB0aG91IGhhc3Qgc3Bva2VuIGNvbmNlcm5pbmcgdGh5IHNlcnZhbnQgYW5kIGNvbmNlcm5pbmcgaGlzIGhvdXNlIGJlIGVzdGFibGlzaGVkIGZvciBldmVyLCBhbmQgZG8gYXMgdGhvdSBoYXN0IHNhaWQuCkxldCBpdCBldmVuIGJlIGVzdGFibGlzaGVkLCB0aGF0IHRoeSBuYW1lIG1heSBiZSBtYWduaWZpZWQgZm9yIGV2ZXIsIHNheWluZywgVGhlIExPUkQgb2YgaG9zdHMgaXMgdGhlIEdvZCBvZiBJc3JhZWwsIGV2ZW4gYSBHb2QgdG8gSXNyYWVsOiBhbmQgbGV0IHRoZSBob3VzZSBvZiBEYXZpZCB0aHkgc2VydmFudCBiZSBlc3RhYmxpc2hlZCBiZWZvcmUgdGhlZS4KRm9yIHRob3UsIE8gbXkgR29kLCBoYXN0IHRvbGQgdGh5IHNlcnZhbnQgdGhhdCB0aG91IHdpbHQgYnVpbGQgaGltIGFuIGhvdXNlOiB0aGVyZWZvcmUgdGh5IHNlcnZhbnQgaGF0aCBmb3VuZCBpbiBoaXMgaGVhcnQgdG8gcHJheSBiZWZvcmUgdGhlZS4KQW5kIG5vdywgTE9SRCwgdGhvdSBhcnQgR29kLCBhbmQgaGFzdCBwcm9taXNlZCB0aGlzIGdvb2RuZXNzIHVudG8gdGh5IHNlcnZhbnQ6Ck5vdyB0aGVyZWZvcmUgbGV0IGl0IHBsZWFzZSB0aGVlIHRvIGJsZXNzIHRoZSBob3VzZSBvZiB0aHkgc2VydmFudCwgdGhhdCBpdCBtYXkgYmUgYmVmb3JlIHRoZWUgZm9yIGV2ZXI6IGZvciB0aG91IGJsZXNzZXN0LCBPIExPUkQsIGFuZCBpdCBzaGFsbCBiZSBibGVzc2VkIGZvciBldmVyLgpOb3cgYWZ0ZXIgdGhpcyBpdCBjYW1lIHRvIHBhc3MsIHRoYXQgRGF2aWQgc21vdGUgdGhlIFBoaWxpc3RpbmVzLCBhbmQgc3ViZHVlZCB0aGVtLCBhbmQgdG9vayBHYXRoIGFuZCBoZXIgdG93bnMgb3V0IG9mIHRoZSBoYW5kIG9mIHRoZSBQaGlsaXN0aW5lcy4KQW5kIGhlIHNtb3RlIE1vYWI7IGFuZCB0aGUgTW9hYml0ZXMgYmVjYW1lIERhdmlkJ3Mgc2VydmFudHMsIGFuZCBicm91Z2h0IGdpZnRzLgpBbmQgRGF2aWQgc21vdGUgSGFkYXJlemVyIGtpbmcgb2YgWm9iYWggdW50byBIYW1hdGgsIGFzIGhlIHdlbnQgdG8gc3RhYmxpc2ggaGlzIGRvbWluaW9uIGJ5IHRoZSByaXZlciBFdXBocmF0ZXMuCkFuZCBEYXZpZCB0b29rIGZyb20gaGltIGEgdGhvdXNhbmQgY2hhcmlvdHMsIGFuZCBzZXZlbiB0aG91c2FuZCBob3JzZW1lbiwgYW5kIHR3ZW50eSB0aG91c2FuZCBmb290bWVuOiBEYXZpZCBhbHNvIGhvdWdoZWQgYWxsIHRoZSBjaGFyaW90IGhvcnNlcywgYnV0IHJlc2VydmVkIG9mIHRoZW0gYW4gaHVuZHJlZCBjaGFyaW90cy4KQW5kIHdoZW4gdGhlIFN5cmlhbnMgb2YgRGFtYXNjdXMgY2FtZSB0byBoZWxwIEhhZGFyZXplciBraW5nIG9mIFpvYmFoLCBEYXZpZCBzbGV3IG9mIHRoZSBTeXJpYW5zIHR3byBhbmQgdHdlbnR5IHRob3VzYW5kIG1lbi4KVGhlbiBEYXZpZCBwdXQgZ2Fycmlzb25zIGluIFN5cmlhZGFtYXNjdXM7IGFuZCB0aGUgU3lyaWFucyBiZWNhbWUgRGF2aWQncyBzZXJ2YW50cywgYW5kIGJyb3VnaHQgZ2lmdHMuIFRodXMgdGhlIExPUkQgcHJlc2VydmVkIERhdmlkIHdoaXRoZXJzb2V2ZXIgaGUgd2VudC4KQW5kIERhdmlkIHRvb2sgdGhlIHNoaWVsZHMgb2YgZ29sZCB0aGF0IHdlcmUgb24gdGhlIHNlcnZhbnRzIG9mIEhhZGFyZXplciwgYW5kIGJyb3VnaHQgdGhlbSB0byBKZXJ1c2FsZW0uCkxpa2V3aXNlIGZyb20gVGliaGF0aCwgYW5kIGZyb20gQ2h1biwgY2l0aWVzIG9mIEhhZGFyZXplciwgYnJvdWdodCBEYXZpZCB2ZXJ5IG11Y2ggYnJhc3MsIHdoZXJld2l0aCBTb2xvbW9uIG1hZGUgdGhlIGJyYXNlbiBzZWEsIGFuZCB0aGUgcGlsbGFycywgYW5kIHRoZSB2ZXNzZWxzIG9mIGJyYXNzLgpOb3cgd2hlbiBUb3Uga2luZyBvZiBIYW1hdGggaGVhcmQgaG93IERhdmlkIGhhZCBzbWl0dGVuIGFsbCB0aGUgaG9zdCBvZiBIYWRhcmV6ZXIga2luZyBvZiBab2JhaDsKSGUgc2VudCBIYWRvcmFtIGhpcyBzb24gdG8ga2luZyBEYXZpZCwgdG8gZW5xdWlyZSBvZiBoaXMgd2VsZmFyZSwgYW5kIHRvIGNvbmdyYXR1bGF0ZSBoaW0sIGJlY2F1c2UgaGUgaGFkIGZvdWdodCBhZ2FpbnN0IEhhZGFyZXplciwgYW5kIHNtaXR0ZW4gaGltOyAoZm9yIEhhZGFyZXplciBoYWQgd2FyIHdpdGggVG91OykgYW5kIHdpdGggaGltIGFsbCBtYW5uZXIgb2YgdmVzc2VscyBvZiBnb2xkIGFuZCBzaWx2ZXIgYW5kIGJyYXNzLgpUaGVtIGFsc28ga2luZyBEYXZpZCBkZWRpY2F0ZWQgdW50byB0aGUgTE9SRCwgd2l0aCB0aGUgc2lsdmVyIGFuZCB0aGUgZ29sZCB0aGF0IGhlIGJyb3VnaHQgZnJvbSBhbGwgdGhlc2UgbmF0aW9uczsgZnJvbSBFZG9tLCBhbmQgZnJvbSBNb2FiLCBhbmQgZnJvbSB0aGUgY2hpbGRyZW4gb2YgQW1tb24sIGFuZCBmcm9tIHRoZSBQaGlsaXN0aW5lcywgYW5kIGZyb20gQW1hbGVrLgpNb3Jlb3ZlciBBYmlzaGFpIHRoZSBzb24gb2YgWmVydWlhaCBzbGV3IG9mIHRoZSBFZG9taXRlcyBpbiB0aGUgdmFsbGV5IG9mIHNhbHQgZWlnaHRlZW4gdGhvdXNhbmQuCkFuZCBoZSBwdXQgZ2Fycmlzb25zIGluIEVkb207IGFuZCBhbGwgdGhlIEVkb21pdGVzIGJlY2FtZSBEYXZpZCdzIHNlcnZhbnRzLiBUaHVzIHRoZSBMT1JEIHByZXNlcnZlZCBEYXZpZCB3aGl0aGVyc29ldmVyIGhlIHdlbnQuClNvIERhdmlkIHJlaWduZWQgb3ZlciBhbGwgSXNyYWVsLCBhbmQgZXhlY3V0ZWQganVkZ21lbnQgYW5kIGp1c3RpY2UgYW1vbmcgYWxsIGhpcyBwZW9wbGUuCkFuZCBKb2FiIHRoZSBzb24gb2YgWmVydWlhaCB3YXMgb3ZlciB0aGUgaG9zdDsgYW5kIEplaG9zaGFwaGF0IHRoZSBzb24gb2YgQWhpbHVkLCByZWNvcmRlci4KQW5kIFphZG9rIHRoZSBzb24gb2YgQWhpdHViLCBhbmQgQWJpbWVsZWNoIHRoZSBzb24gb2YgQWJpYXRoYXIsIHdlcmUgdGhlIHByaWVzdHM7IGFuZCBTaGF2c2hhIHdhcyBzY3JpYmU7CkFuZCBCZW5haWFoIHRoZSBzb24gb2YgSmVob2lhZGEgd2FzIG92ZXIgdGhlIENoZXJldGhpdGVzIGFuZCB0aGUgUGVsZXRoaXRlczsgYW5kIHRoZSBzb25zIG9mIERhdmlkIHdlcmUgY2hpZWYgYWJvdXQgdGhlIGtpbmcuCk5vdyBpdCBjYW1lIHRvIHBhc3MgYWZ0ZXIgdGhpcywgdGhhdCBOYWhhc2ggdGhlIGtpbmcgb2YgdGhlIGNoaWxkcmVuIG9mIEFtbW9uIGRpZWQsIGFuZCBoaXMgc29uIHJlaWduZWQgaW4gaGlzIHN0ZWFkLgpBbmQgRGF2aWQgc2FpZCwgSSB3aWxsIHNoZXcga2luZG5lc3MgdW50byBIYW51biB0aGUgc29uIG9mIE5haGFzaCwgYmVjYXVzZSBoaXMgZmF0aGVyIHNoZXdlZCBraW5kbmVzcyB0byBtZS4gQW5kIERhdmlkIHNlbnQgbWVzc2VuZ2VycyB0byBjb21mb3J0IGhpbSBjb25jZXJuaW5nIGhpcyBmYXRoZXIuIFNvIHRoZSBzZXJ2YW50cyBvZiBEYXZpZCBjYW1lIGludG8gdGhlIGxhbmQgb2YgdGhlIGNoaWxkcmVuIG9mIEFtbW9uIHRvIEhhbnVuLCB0byBjb21mb3J0IGhpbS4KQnV0IHRoZSBwcmluY2VzIG9mIHRoZSBjaGlsZHJlbiBvZiBBbW1vbiBzYWlkIHRvIEhhbnVuLCBUaGlua2VzdCB0aG91IHRoYXQgRGF2aWQgZG90aCBob25vdXIgdGh5IGZhdGhlciwgdGhhdCBoZSBoYXRoIHNlbnQgY29tZm9ydGVycyB1bnRvIHRoZWU/IGFyZSBub3QgaGlzIHNlcnZhbnRzIGNvbWUgdW50byB0aGVlIGZvciB0byBzZWFyY2gsIGFuZCB0byBvdmVydGhyb3csIGFuZCB0byBzcHkgb3V0IHRoZSBsYW5kPwpXaGVyZWZvcmUgSGFudW4gdG9vayBEYXZpZCdzIHNlcnZhbnRzLCBhbmQgc2hhdmVkIHRoZW0sIGFuZCBjdXQgb2ZmIHRoZWlyIGdhcm1lbnRzIGluIHRoZSBtaWRzdCBoYXJkIGJ5IHRoZWlyIGJ1dHRvY2tzLCBhbmQgc2VudCB0aGVtIGF3YXkuClRoZW4gdGhlcmUgd2VudCBjZXJ0YWluLCBhbmQgdG9sZCBEYXZpZCBob3cgdGhlIG1lbiB3ZXJlIHNlcnZlZC4gQW5kIGhlIHNlbnQgdG8gbWVldCB0aGVtOiBmb3IgdGhlIG1lbiB3ZXJlIGdyZWF0bHkgYXNoYW1lZC4gQW5kIHRoZSBraW5nIHNhaWQsIFRhcnJ5IGF0IEplcmljaG8gdW50aWwgeW91ciBiZWFyZHMgYmUgZ3Jvd24sIGFuZCB0aGVuIHJldHVybi4KQW5kIHdoZW4gdGhlIGNoaWxkcmVuIG9mIEFtbW9uIHNhdyB0aGF0IHRoZXkgaGFkIG1hZGUgdGhlbXNlbHZlcyBvZGlvdXMgdG8gRGF2aWQsIEhhbnVuIGFuZCB0aGUgY2hpbGRyZW4gb2YgQW1tb24gc2VudCBhIHRob3VzYW5kIHRhbGVudHMgb2Ygc2lsdmVyIHRvIGhpcmUgdGhlbSBjaGFyaW90cyBhbmQgaG9yc2VtZW4gb3V0IG9mIE1lc29wb3RhbWlhLCBhbmQgb3V0IG9mIFN5cmlhbWFhY2hhaCwgYW5kIG91dCBvZiBab2JhaC4KU28gdGhleSBoaXJlZCB0aGlydHkgYW5kIHR3byB0aG91c2FuZCBjaGFyaW90cywgYW5kIHRoZSBraW5nIG9mIE1hYWNoYWggYW5kIGhpcyBwZW9wbGU7IHdobyBjYW1lIGFuZCBwaXRjaGVkIGJlZm9yZSBNZWRlYmEuIEFuZCB0aGUgY2hpbGRyZW4gb2YgQW1tb24gZ2F0aGVyZWQgdGhlbXNlbHZlcyB0b2dldGhlciBmcm9tIHRoZWlyIGNpdGllcywgYW5kIGNhbWUgdG8gYmF0dGxlLgpBbmQgd2hlbiBEYXZpZCBoZWFyZCBvZiBpdCwgaGUgc2VudCBKb2FiLCBhbmQgYWxsIHRoZSBob3N0IG9mIHRoZSBtaWdodHkgbWVuLgpBbmQgdGhlIGNoaWxkcmVuIG9mIEFtbW9uIGNhbWUgb3V0LCBhbmQgcHV0IHRoZSBiYXR0bGUgaW4gYXJyYXkgYmVmb3JlIHRoZSBnYXRlIG9mIHRoZSBjaXR5OiBhbmQgdGhlIGtpbmdzIHRoYXQgd2VyZSBjb21lIHdlcmUgYnkgdGhlbXNlbHZlcyBpbiB0aGUgZmllbGQuCk5vdyB3aGVuIEpvYWIgc2F3IHRoYXQgdGhlIGJhdHRsZSB3YXMgc2V0IGFnYWluc3QgaGltIGJlZm9yZSBhbmQgYmVoaW5kLCBoZSBjaG9zZSBvdXQgb2YgYWxsIHRoZSBjaG9pY2Ugb2YgSXNyYWVsLCBhbmQgcHV0IHRoZW0gaW4gYXJyYXkgYWdhaW5zdCB0aGUgU3lyaWFucy4KQW5kIHRoZSByZXN0IG9mIHRoZSBwZW9wbGUgaGUgZGVsaXZlcmVkIHVudG8gdGhlIGhhbmQgb2YgQWJpc2hhaSBoaXMgYnJvdGhlciwgYW5kIHRoZXkgc2V0IHRoZW1zZWx2ZXMgaW4gYXJyYXkgYWdhaW5zdCB0aGUgY2hpbGRyZW4gb2YgQW1tb24uCkFuZCBoZSBzYWlkLCBJZiB0aGUgU3lyaWFucyBiZSB0b28gc3Ryb25nIGZvciBtZSwgdGhlbiB0aG91IHNoYWx0IGhlbHAgbWU6IGJ1dCBpZiB0aGUgY2hpbGRyZW4gb2YgQW1tb24gYmUgdG9vIHN0cm9uZyBmb3IgdGhlZSwgdGhlbiBJIHdpbGwgaGVscCB0aGVlLgpCZSBvZiBnb29kIGNvdXJhZ2UsIGFuZCBsZXQgdXMgYmVoYXZlIG91cnNlbHZlcyB2YWxpYW50bHkgZm9yIG91ciBwZW9wbGUsIGFuZCBmb3IgdGhlIGNpdGllcyBvZiBvdXIgR29kOiBhbmQgbGV0IHRoZSBMT1JEIGRvIHRoYXQgd2hpY2ggaXMgZ29vZCBpbiBoaXMgc2lnaHQuClNvIEpvYWIgYW5kIHRoZSBwZW9wbGUgdGhhdCB3ZXJlIHdpdGggaGltIGRyZXcgbmlnaCBiZWZvcmUgdGhlIFN5cmlhbnMgdW50byB0aGUgYmF0dGxlOyBhbmQgdGhleSBmbGVkIGJlZm9yZSBoaW0uCkFuZCB3aGVuIHRoZSBjaGlsZHJlbiBvZiBBbW1vbiBzYXcgdGhhdCB0aGUgU3lyaWFucyB3ZXJlIGZsZWQsIHRoZXkgbGlrZXdpc2UgZmxlZCBiZWZvcmUgQWJpc2hhaSBoaXMgYnJvdGhlciwgYW5kIGVudGVyZWQgaW50byB0aGUgY2l0eS4gVGhlbiBKb2FiIGNhbWUgdG8gSmVydXNhbGVtLgpBbmQgd2hlbiB0aGUgU3lyaWFucyBzYXcgdGhhdCB0aGV5IHdlcmUgcHV0IHRvIHRoZSB3b3JzZSBiZWZvcmUgSXNyYWVsLCB0aGV5IHNlbnQgbWVzc2VuZ2VycywgYW5kIGRyZXcgZm9ydGggdGhlIFN5cmlhbnMgdGhhdCB3ZXJlIGJleW9uZCB0aGUgcml2ZXI6IGFuZCBTaG9waGFjaCB0aGUgY2FwdGFpbiBvZiB0aGUgaG9zdCBvZiBIYWRhcmV6ZXIgd2VudCBiZWZvcmUgdGhlbS4KQW5kIGl0IHdhcyB0b2xkIERhdmlkOyBhbmQgaGUgZ2F0aGVyZWQgYWxsIElzcmFlbCwgYW5kIHBhc3NlZCBvdmVyIEpvcmRhbiwgYW5kIGNhbWUgdXBvbiB0aGVtLCBhbmQgc2V0IHRoZSBiYXR0bGUgaW4gYXJyYXkgYWdhaW5zdCB0aGVtLiBTbyB3aGVuIERhdmlkIGhhZCBwdXQgdGhlIGJhdHRsZSBpbiBhcnJheSBhZ2FpbnN0IHRoZSBTeXJpYW5zLCB0aGV5IGZvdWdodCB3aXRoIGhpbS4KQnV0IHRoZSBTeXJpYW5zIGZsZWQgYmVmb3JlIElzcmFlbDsgYW5kIERhdmlkIHNsZXcgb2YgdGhlIFN5cmlhbnMgc2V2ZW4gdGhvdXNhbmQgbWVuIHdoaWNoIGZvdWdodCBpbiBjaGFyaW90cywgYW5kIGZvcnR5IHRob3VzYW5kIGZvb3RtZW4sIGFuZCBraWxsZWQgU2hvcGhhY2ggdGhlIGNhcHRhaW4gb2YgdGhlIGhvc3QuCkFuZCB3aGVuIHRoZSBzZXJ2YW50cyBvZiBIYWRhcmV6ZXIgc2F3IHRoYXQgdGhleSB3ZXJlIHB1dCB0byB0aGUgd29yc2UgYmVmb3JlIElzcmFlbCwgdGhleSBtYWRlIHBlYWNlIHdpdGggRGF2aWQsIGFuZCBiZWNhbWUgaGlzIHNlcnZhbnRzOiBuZWl0aGVyIHdvdWxkIHRoZSBTeXJpYW5zIGhlbHAgdGhlIGNoaWxkcmVuIG9mIEFtbW9uIGFueSBtb3JlLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB0aGF0IGFmdGVyIHRoZSB5ZWFyIHdhcyBleHBpcmVkLCBhdCB0aGUgdGltZSB0aGF0IGtpbmdzIGdvIG91dCB0byBiYXR0bGUsIEpvYWIgbGVkIGZvcnRoIHRoZSBwb3dlciBvZiB0aGUgYXJteSwgYW5kIHdhc3RlZCB0aGUgY291bnRyeSBvZiB0aGUgY2hpbGRyZW4gb2YgQW1tb24sIGFuZCBjYW1lIGFuZCBiZXNpZWdlZCBSYWJiYWguIEJ1dCBEYXZpZCB0YXJyaWVkIGF0IEplcnVzYWxlbS4gQW5kIEpvYWIgc21vdGUgUmFiYmFoLCBhbmQgZGVzdHJveWVkIGl0LgpBbmQgRGF2aWQgdG9vayB0aGUgY3Jvd24gb2YgdGhlaXIga2luZyBmcm9tIG9mZiBoaXMgaGVhZCwgYW5kIGZvdW5kIGl0IHRvIHdlaWdoIGEgdGFsZW50IG9mIGdvbGQsIGFuZCB0aGVyZSB3ZXJlIHByZWNpb3VzIHN0b25lcyBpbiBpdDsgYW5kIGl0IHdhcyBzZXQgdXBvbiBEYXZpZCdzIGhlYWQ6IGFuZCBoZSBicm91Z2h0IGFsc28gZXhjZWVkaW5nIG11Y2ggc3BvaWwgb3V0IG9mIHRoZSBjaXR5LgpBbmQgaGUgYnJvdWdodCBvdXQgdGhlIHBlb3BsZSB0aGF0IHdlcmUgaW4gaXQsIGFuZCBjdXQgdGhlbSB3aXRoIHNhd3MsIGFuZCB3aXRoIGhhcnJvd3Mgb2YgaXJvbiwgYW5kIHdpdGggYXhlcy4gRXZlbiBzbyBkZWFsdCBEYXZpZCB3aXRoIGFsbCB0aGUgY2l0aWVzIG9mIHRoZSBjaGlsZHJlbiBvZiBBbW1vbi4gQW5kIERhdmlkIGFuZCBhbGwgdGhlIHBlb3BsZSByZXR1cm5lZCB0byBKZXJ1c2FsZW0uCkFuZCBpdCBjYW1lIHRvIHBhc3MgYWZ0ZXIgdGhpcywgdGhhdCB0aGVyZSBhcm9zZSB3YXIgYXQgR2V6ZXIgd2l0aCB0aGUgUGhpbGlzdGluZXM7IGF0IHdoaWNoIHRpbWUgU2liYmVjaGFpIHRoZSBIdXNoYXRoaXRlIHNsZXcgU2lwcGFpLCB0aGF0IHdhcyBvZiB0aGUgY2hpbGRyZW4gb2YgdGhlIGdpYW50OiBhbmQgdGhleSB3ZXJlIHN1YmR1ZWQuCkFuZCB0aGVyZSB3YXMgd2FyIGFnYWluIHdpdGggdGhlIFBoaWxpc3RpbmVzOyBhbmQgRWxoYW5hbiB0aGUgc29uIG9mIEphaXIgc2xldyBMYWhtaSB0aGUgYnJvdGhlciBvZiBHb2xpYXRoIHRoZSBHaXR0aXRlLCB3aG9zZSBzcGVhciBzdGFmZiB3YXMgbGlrZSBhIHdlYXZlcidzIGJlYW0uCkFuZCB5ZXQgYWdhaW4gdGhlcmUgd2FzIHdhciBhdCBHYXRoLCB3aGVyZSB3YXMgYSBtYW4gb2YgZ3JlYXQgc3RhdHVyZSwgd2hvc2UgZmluZ2VycyBhbmQgdG9lcyB3ZXJlIGZvdXIgYW5kIHR3ZW50eSwgc2l4IG9uIGVhY2ggaGFuZCwgYW5kIHNpeCBvbiBlYWNoIGZvb3QgYW5kIGhlIGFsc28gd2FzIHRoZSBzb24gb2YgdGhlIGdpYW50LgpCdXQgd2hlbiBoZSBkZWZpZWQgSXNyYWVsLCBKb25hdGhhbiB0aGUgc29uIG9mIFNoaW1lYSBEYXZpZCdzIGJyb3RoZXIgc2xldyBoaW0uClRoZXNlIHdlcmUgYm9ybiB1bnRvIHRoZSBnaWFudCBpbiBHYXRoOyBhbmQgdGhleSBmZWxsIGJ5IHRoZSBoYW5kIG9mIERhdmlkLCBhbmQgYnkgdGhlIGhhbmQgb2YgaGlzIHNlcnZhbnRzLgpBbmQgU2F0YW4gc3Rvb2QgdXAgYWdhaW5zdCBJc3JhZWwsIGFuZCBwcm92b2tlZCBEYXZpZCB0byBudW1iZXIgSXNyYWVsLgpBbmQgRGF2aWQgc2FpZCB0byBKb2FiIGFuZCB0byB0aGUgcnVsZXJzIG9mIHRoZSBwZW9wbGUsIEdvLCBudW1iZXIgSXNyYWVsIGZyb20gQmVlcnNoZWJhIGV2ZW4gdG8gRGFuOyBhbmQgYnJpbmcgdGhlIG51bWJlciBvZiB0aGVtIHRvIG1lLCB0aGF0IEkgbWF5IGtub3cgaXQuCkFuZCBKb2FiIGFuc3dlcmVkLCBUaGUgTE9SRCBtYWtlIGhpcyBwZW9wbGUgYW4gaHVuZHJlZCB0aW1lcyBzbyBtYW55IG1vcmUgYXMgdGhleSBiZTogYnV0LCBteSBsb3JkIHRoZSBraW5nLCBhcmUgdGhleSBub3QgYWxsIG15IGxvcmQncyBzZXJ2YW50cz8gd2h5IHRoZW4gZG90aCBteSBsb3JkIHJlcXVpcmUgdGhpcyB0aGluZz8gd2h5IHdpbGwgaGUgYmUgYSBjYXVzZSBvZiB0cmVzcGFzcyB0byBJc3JhZWw/Ck5ldmVydGhlbGVzcyB0aGUga2luZydzIHdvcmQgcHJldmFpbGVkIGFnYWluc3QgSm9hYi4gV2hlcmVmb3JlIEpvYWIgZGVwYXJ0ZWQsIGFuZCB3ZW50IHRocm91Z2hvdXQgYWxsIElzcmFlbCwgYW5kIGNhbWUgdG8gSmVydXNhbGVtLgpBbmQgSm9hYiBnYXZlIHRoZSBzdW0gb2YgdGhlIG51bWJlciBvZiB0aGUgcGVvcGxlIHVudG8gRGF2aWQuIEFuZCBhbGwgdGhleSBvZiBJc3JhZWwgd2VyZSBhIHRob3VzYW5kIHRob3VzYW5kIGFuZCBhbiBodW5kcmVkIHRob3VzYW5kIG1lbiB0aGF0IGRyZXcgc3dvcmQ6IGFuZCBKdWRhaCB3YXMgZm91ciBodW5kcmVkIHRocmVlc2NvcmUgYW5kIHRlbiB0aG91c2FuZCBtZW4gdGhhdCBkcmV3IHN3b3JkLgpCdXQgTGV2aSBhbmQgQmVuamFtaW4gY291bnRlZCBoZSBub3QgYW1vbmcgdGhlbTogZm9yIHRoZSBraW5nJ3Mgd29yZCB3YXMgYWJvbWluYWJsZSB0byBKb2FiLgpBbmQgR29kIHdhcyBkaXNwbGVhc2VkIHdpdGggdGhpcyB0aGluZzsgdGhlcmVmb3JlIGhlIHNtb3RlIElzcmFlbC4KQW5kIERhdmlkIHNhaWQgdW50byBHb2QsIEkgaGF2ZSBzaW5uZWQgZ3JlYXRseSwgYmVjYXVzZSBJIGhhdmUgZG9uZSB0aGlzIHRoaW5nOiBidXQgbm93LCBJIGJlc2VlY2ggdGhlZSwgZG8gYXdheSB0aGUgaW5pcXVpdHkgb2YgdGh5IHNlcnZhbnQ7IGZvciBJIGhhdmUgZG9uZSB2ZXJ5IGZvb2xpc2hseS4KQW5kIHRoZSBMT1JEIHNwYWtlIHVudG8gR2FkLCBEYXZpZCdzIHNlZXIsIHNheWluZywKR28gYW5kIHRlbGwgRGF2aWQsIHNheWluZywgVGh1cyBzYWl0aCB0aGUgTE9SRCwgSSBvZmZlciB0aGVlIHRocmVlIHRoaW5nczogY2hvb3NlIHRoZWUgb25lIG9mIHRoZW0sIHRoYXQgSSBtYXkgZG8gaXQgdW50byB0aGVlLgpTbyBHYWQgY2FtZSB0byBEYXZpZCwgYW5kIHNhaWQgdW50byBoaW0sIFRodXMgc2FpdGggdGhlIExPUkQsIENob29zZSB0aGVlCkVpdGhlciB0aHJlZSB5ZWFycycgZmFtaW5lOyBvciB0aHJlZSBtb250aHMgdG8gYmUgZGVzdHJveWVkIGJlZm9yZSB0aHkgZm9lcywgd2hpbGUgdGhhdCB0aGUgc3dvcmQgb2YgdGhpbmUgZW5lbWllcyBvdmVydGFrZXRoIHRoZWU7IG9yIGVsc2UgdGhyZWUgZGF5cyB0aGUgc3dvcmQgb2YgdGhlIExPUkQsIGV2ZW4gdGhlIHBlc3RpbGVuY2UsIGluIHRoZSBsYW5kLCBhbmQgdGhlIGFuZ2VsIG9mIHRoZSBMT1JEIGRlc3Ryb3lpbmcgdGhyb3VnaG91dCBhbGwgdGhlIGNvYXN0cyBvZiBJc3JhZWwuIE5vdyB0aGVyZWZvcmUgYWR2aXNlIHRoeXNlbGYgd2hhdCB3b3JkIEkgc2hhbGwgYnJpbmcgYWdhaW4gdG8gaGltIHRoYXQgc2VudCBtZS4KQW5kIERhdmlkIHNhaWQgdW50byBHYWQsIEkgYW0gaW4gYSBncmVhdCBzdHJhaXQ6IGxldCBtZSBmYWxsIG5vdyBpbnRvIHRoZSBoYW5kIG9mIHRoZSBMT1JEOyBmb3IgdmVyeSBncmVhdCBhcmUgaGlzIG1lcmNpZXM6IGJ1dCBsZXQgbWUgbm90IGZhbGwgaW50byB0aGUgaGFuZCBvZiBtYW4uClNvIHRoZSBMT1JEIHNlbnQgcGVzdGlsZW5jZSB1cG9uIElzcmFlbDogYW5kIHRoZXJlIGZlbGwgb2YgSXNyYWVsIHNldmVudHkgdGhvdXNhbmQgbWVuLgpBbmQgR29kIHNlbnQgYW4gYW5nZWwgdW50byBKZXJ1c2FsZW0gdG8gZGVzdHJveSBpdDogYW5kIGFzIGhlIHdhcyBkZXN0cm95aW5nLCB0aGUgTE9SRCBiZWhlbGQsIGFuZCBoZSByZXBlbnRlZCBoaW0gb2YgdGhlIGV2aWwsIGFuZCBzYWlkIHRvIHRoZSBhbmdlbCB0aGF0IGRlc3Ryb3llZCwgSXQgaXMgZW5vdWdoLCBzdGF5IG5vdyB0aGluZSBoYW5kLiBBbmQgdGhlIGFuZ2VsIG9mIHRoZSBMT1JEIHN0b29kIGJ5IHRoZSB0aHJlc2hpbmdmbG9vciBvZiBPcm5hbiB0aGUgSmVidXNpdGUuCkFuZCBEYXZpZCBsaWZ0ZWQgdXAgaGlzIGV5ZXMsIGFuZCBzYXcgdGhlIGFuZ2VsIG9mIHRoZSBMT1JEIHN0YW5kIGJldHdlZW4gdGhlIGVhcnRoIGFuZCB0aGUgaGVhdmVuLCBoYXZpbmcgYSBkcmF3biBzd29yZCBpbiBoaXMgaGFuZCBzdHJldGNoZWQgb3V0IG92ZXIgSmVydXNhbGVtLiBUaGVuIERhdmlkIGFuZCB0aGUgZWxkZXJzIG9mIElzcmFlbCwgd2hvIHdlcmUgY2xvdGhlZCBpbiBzYWNrY2xvdGgsIGZlbGwgdXBvbiB0aGVpciBmYWNlcy4KQW5kIERhdmlkIHNhaWQgdW50byBHb2QsIElzIGl0IG5vdCBJIHRoYXQgY29tbWFuZGVkIHRoZSBwZW9wbGUgdG8gYmUgbnVtYmVyZWQ/IGV2ZW4gSSBpdCBpcyB0aGF0IGhhdmUgc2lubmVkIGFuZCBkb25lIGV2aWwgaW5kZWVkOyBidXQgYXMgZm9yIHRoZXNlIHNoZWVwLCB3aGF0IGhhdmUgdGhleSBkb25lPyBsZXQgdGhpbmUgaGFuZCwgSSBwcmF5IHRoZWUsIE8gTE9SRCBteSBHb2QsIGJlIG9uIG1lLCBhbmQgb24gbXkgZmF0aGVyJ3MgaG91c2U7IGJ1dCBub3Qgb24gdGh5IHBlb3BsZSwgdGhhdCB0aGV5IHNob3VsZCBiZSBwbGFndWVkLgpUaGVuIHRoZSBhbmdlbCBvZiB0aGUgTE9SRCBjb21tYW5kZWQgR2FkIHRvIHNheSB0byBEYXZpZCwgdGhhdCBEYXZpZCBzaG91bGQgZ28gdXAsIGFuZCBzZXQgdXAgYW4gYWx0YXIgdW50byB0aGUgTE9SRCBpbiB0aGUgdGhyZXNoaW5nZmxvb3Igb2YgT3JuYW4gdGhlIEplYnVzaXRlLgpBbmQgRGF2aWQgd2VudCB1cCBhdCB0aGUgc2F5aW5nIG9mIEdhZCwgd2hpY2ggaGUgc3Bha2UgaW4gdGhlIG5hbWUgb2YgdGhlIExPUkQuCkFuZCBPcm5hbiB0dXJuZWQgYmFjaywgYW5kIHNhdyB0aGUgYW5nZWw7IGFuZCBoaXMgZm91ciBzb25zIHdpdGggaGltIGhpZCB0aGVtc2VsdmVzLiBOb3cgT3JuYW4gd2FzIHRocmVzaGluZyB3aGVhdC4KQW5kIGFzIERhdmlkIGNhbWUgdG8gT3JuYW4sIE9ybmFuIGxvb2tlZCBhbmQgc2F3IERhdmlkLCBhbmQgd2VudCBvdXQgb2YgdGhlIHRocmVzaGluZ2Zsb29yLCBhbmQgYm93ZWQgaGltc2VsZiB0byBEYXZpZCB3aXRoIGhpcyBmYWNlIHRvIHRoZSBncm91bmQuClRoZW4gRGF2aWQgc2FpZCB0byBPcm5hbiwgR3JhbnQgbWUgdGhlIHBsYWNlIG9mIHRoaXMgdGhyZXNoaW5nZmxvb3IsIHRoYXQgSSBtYXkgYnVpbGQgYW4gYWx0YXIgdGhlcmVpbiB1bnRvIHRoZSBMT1JEOiB0aG91IHNoYWx0IGdyYW50IGl0IG1lIGZvciB0aGUgZnVsbCBwcmljZTogdGhhdCB0aGUgcGxhZ3VlIG1heSBiZSBzdGF5ZWQgZnJvbSB0aGUgcGVvcGxlLgpBbmQgT3JuYW4gc2FpZCB1bnRvIERhdmlkLCBUYWtlIGl0IHRvIHRoZWUsIGFuZCBsZXQgbXkgbG9yZCB0aGUga2luZyBkbyB0aGF0IHdoaWNoIGlzIGdvb2QgaW4gaGlzIGV5ZXM6IGxvLCBJIGdpdmUgdGhlZSB0aGUgb3hlbiBhbHNvIGZvciBidXJudCBvZmZlcmluZ3MsIGFuZCB0aGUgdGhyZXNoaW5nIGluc3RydW1lbnRzIGZvciB3b29kLCBhbmQgdGhlIHdoZWF0IGZvciB0aGUgbWVhdCBvZmZlcmluZzsgSSBnaXZlIGl0IGFsbC4KQW5kIGtpbmcgRGF2aWQgc2FpZCB0byBPcm5hbiwgTmF5OyBidXQgSSB3aWxsIHZlcmlseSBidXkgaXQgZm9yIHRoZSBmdWxsIHByaWNlOiBmb3IgSSB3aWxsIG5vdCB0YWtlIHRoYXQgd2hpY2ggaXMgdGhpbmUgZm9yIHRoZSBMT1JELCBub3Igb2ZmZXIgYnVybnQgb2ZmZXJpbmdzIHdpdGhvdXQgY29zdC4KU28gRGF2aWQgZ2F2ZSB0byBPcm5hbiBmb3IgdGhlIHBsYWNlIHNpeCBodW5kcmVkIHNoZWtlbHMgb2YgZ29sZCBieSB3ZWlnaHQuCkFuZCBEYXZpZCBidWlsdCB0aGVyZSBhbiBhbHRhciB1bnRvIHRoZSBMT1JELCBhbmQgb2ZmZXJlZCBidXJudCBvZmZlcmluZ3MgYW5kIHBlYWNlIG9mZmVyaW5ncywgYW5kIGNhbGxlZCB1cG9uIHRoZSBMT1JEOyBhbmQgaGUgYW5zd2VyZWQgaGltIGZyb20gaGVhdmVuIGJ5IGZpcmUgdXBvbiB0aGUgYWx0YXIgb2YgYnVybnQgb2ZmZXJpbmcuCkFuZCB0aGUgTE9SRCBjb21tYW5kZWQgdGhlIGFuZ2VsOyBhbmQgaGUgcHV0IHVwIGhpcyBzd29yZCBhZ2FpbiBpbnRvIHRoZSBzaGVhdGggdGhlcmVvZi4KQXQgdGhhdCB0aW1lIHdoZW4gRGF2aWQgc2F3IHRoYXQgdGhlIExPUkQgaGFkIGFuc3dlcmVkIGhpbSBpbiB0aGUgdGhyZXNoaW5nZmxvb3Igb2YgT3JuYW4gdGhlIEplYnVzaXRlLCB0aGVuIGhlIHNhY3JpZmljZWQgdGhlcmUuCkZvciB0aGUgdGFiZXJuYWNsZSBvZiB0aGUgTE9SRCwgd2hpY2ggTW9zZXMgbWFkZSBpbiB0aGUgd2lsZGVybmVzcywgYW5kIHRoZSBhbHRhciBvZiB0aGUgYnVybnQgb2ZmZXJpbmcsIHdlcmUgYXQgdGhhdCBzZWFzb24gaW4gdGhlIGhpZ2ggcGxhY2UgYXQgR2liZW9uLgpCdXQgRGF2aWQgY291bGQgbm90IGdvIGJlZm9yZSBpdCB0byBlbnF1aXJlIG9mIEdvZDogZm9yIGhlIHdhcyBhZnJhaWQgYmVjYXVzZSBvZiB0aGUgc3dvcmQgb2YgdGhlIGFuZ2VsIG9mIHRoZSBMT1JELgpUaGVuIERhdmlkIHNhaWQsIFRoaXMgaXMgdGhlIGhvdXNlIG9mIHRoZSBMT1JEIEdvZCwgYW5kIHRoaXMgaXMgdGhlIGFsdGFyIG9mIHRoZSBidXJudCBvZmZlcmluZyBmb3IgSXNyYWVsLgpBbmQgRGF2aWQgY29tbWFuZGVkIHRvIGdhdGhlciB0b2dldGhlciB0aGUgc3RyYW5nZXJzIHRoYXQgd2VyZSBpbiB0aGUgbGFuZCBvZiBJc3JhZWw7IGFuZCBoZSBzZXQgbWFzb25zIHRvIGhldyB3cm91Z2h0IHN0b25lcyB0byBidWlsZCB0aGUgaG91c2Ugb2YgR29kLgpBbmQgRGF2aWQgcHJlcGFyZWQgaXJvbiBpbiBhYnVuZGFuY2UgZm9yIHRoZSBuYWlscyBmb3IgdGhlIGRvb3JzIG9mIHRoZSBnYXRlcywgYW5kIGZvciB0aGUgam9pbmluZ3M7IGFuZCBicmFzcyBpbiBhYnVuZGFuY2Ugd2l0aG91dCB3ZWlnaHQ7CkFsc28gY2VkYXIgdHJlZXMgaW4gYWJ1bmRhbmNlOiBmb3IgdGhlIFppZG9uaWFucyBhbmQgdGhleSBvZiBUeXJlIGJyb3VnaHQgbXVjaCBjZWRhciB3b29kIHRvIERhdmlkLgpBbmQgRGF2aWQgc2FpZCwgU29sb21vbiBteSBzb24gaXMgeW91bmcgYW5kIHRlbmRlciwgYW5kIHRoZSBob3VzZSB0aGF0IGlzIHRvIGJlIGJ1aWxkZWQgZm9yIHRoZSBMT1JEIG11c3QgYmUgZXhjZWVkaW5nIG1hZ25pZmljYWwsIG9mIGZhbWUgYW5kIG9mIGdsb3J5IHRocm91Z2hvdXQgYWxsIGNvdW50cmllczogSSB3aWxsIHRoZXJlZm9yZSBub3cgbWFrZSBwcmVwYXJhdGlvbiBmb3IgaXQuIFNvIERhdmlkIHByZXBhcmVkIGFidW5kYW50bHkgYmVmb3JlIGhpcyBkZWF0aC4KVGhlbiBoZSBjYWxsZWQgZm9yIFNvbG9tb24gaGlzIHNvbiwgYW5kIGNoYXJnZWQgaGltIHRvIGJ1aWxkIGFuIGhvdXNlIGZvciB0aGUgTE9SRCBHb2Qgb2YgSXNyYWVsLgpBbmQgRGF2aWQgc2FpZCB0byBTb2xvbW9uLCBNeSBzb24sIGFzIGZvciBtZSwgaXQgd2FzIGluIG15IG1pbmQgdG8gYnVpbGQgYW4gaG91c2UgdW50byB0aGUgbmFtZSBvZiB0aGUgTE9SRCBteSBHb2Q6CkJ1dCB0aGUgd29yZCBvZiB0aGUgTE9SRCBjYW1lIHRvIG1lLCBzYXlpbmcsIFRob3UgaGFzdCBzaGVkIGJsb29kIGFidW5kYW50bHksIGFuZCBoYXN0IG1hZGUgZ3JlYXQgd2FyczogdGhvdSBzaGFsdCBub3QgYnVpbGQgYW4gaG91c2UgdW50byBteSBuYW1lLCBiZWNhdXNlIHRob3UgaGFzdCBzaGVkIG11Y2ggYmxvb2QgdXBvbiB0aGUgZWFydGggaW4gbXkgc2lnaHQuCkJlaG9sZCwgYSBzb24gc2hhbGwgYmUgYm9ybiB0byB0aGVlLCB3aG8gc2hhbGwgYmUgYSBtYW4gb2YgcmVzdDsgYW5kIEkgd2lsbCBnaXZlIGhpbSByZXN0IGZyb20gYWxsIGhpcyBlbmVtaWVzIHJvdW5kIGFib3V0OiBmb3IgaGlzIG5hbWUgc2hhbGwgYmUgU29sb21vbiwgYW5kIEkgd2lsbCBnaXZlIHBlYWNlIGFuZCBxdWlldG5lc3MgdW50byBJc3JhZWwgaW4gaGlzIGRheXMuCkhlIHNoYWxsIGJ1aWxkIGFuIGhvdXNlIGZvciBteSBuYW1lOyBhbmQgaGUgc2hhbGwgYmUgbXkgc29uLCBhbmQgSSB3aWxsIGJlIGhpcyBmYXRoZXI7IGFuZCBJIHdpbGwgZXN0YWJsaXNoIHRoZSB0aHJvbmUgb2YgaGlzIGtpbmdkb20gb3ZlciBJc3JhZWwgZm9yIGV2ZXIuCk5vdywgbXkgc29uLCB0aGUgTE9SRCBiZSB3aXRoIHRoZWU7IGFuZCBwcm9zcGVyIHRob3UsIGFuZCBidWlsZCB0aGUgaG91c2Ugb2YgdGhlIExPUkQgdGh5IEdvZCwgYXMgaGUgaGF0aCBzYWlkIG9mIHRoZWUuCk9ubHkgdGhlIExPUkQgZ2l2ZSB0aGVlIHdpc2RvbSBhbmQgdW5kZXJzdGFuZGluZywgYW5kIGdpdmUgdGhlZSBjaGFyZ2UgY29uY2VybmluZyBJc3JhZWwsIHRoYXQgdGhvdSBtYXllc3Qga2VlcCB0aGUgbGF3IG9mIHRoZSBMT1JEIHRoeSBHb2QuClRoZW4gc2hhbHQgdGhvdSBwcm9zcGVyLCBpZiB0aG91IHRha2VzdCBoZWVkIHRvIGZ1bGZpbCB0aGUgc3RhdHV0ZXMgYW5kIGp1ZGdtZW50cyB3aGljaCB0aGUgTE9SRCBjaGFyZ2VkIE1vc2VzIHdpdGggY29uY2VybmluZyBJc3JhZWw6IGJlIHN0cm9uZywgYW5kIG9mIGdvb2QgY291cmFnZTsgZHJlYWQgbm90LCBub3IgYmUgZGlzbWF5ZWQuCk5vdywgYmVob2xkLCBpbiBteSB0cm91YmxlIEkgaGF2ZSBwcmVwYXJlZCBmb3IgdGhlIGhvdXNlIG9mIHRoZSBMT1JEIGFuIGh1bmRyZWQgdGhvdXNhbmQgdGFsZW50cyBvZiBnb2xkLCBhbmQgYSB0aG91c2FuZCB0aG91c2FuZCB0YWxlbnRzIG9mIHNpbHZlcjsgYW5kIG9mIGJyYXNzIGFuZCBpcm9uIHdpdGhvdXQgd2VpZ2h0OyBmb3IgaXQgaXMgaW4gYWJ1bmRhbmNlOiB0aW1iZXIgYWxzbyBhbmQgc3RvbmUgaGF2ZSBJIHByZXBhcmVkOyBhbmQgdGhvdSBtYXllc3QgYWRkIHRoZXJldG8uCk1vcmVvdmVyIHRoZXJlIGFyZSB3b3JrbWVuIHdpdGggdGhlZSBpbiBhYnVuZGFuY2UsIGhld2VycyBhbmQgd29ya2VycyBvZiBzdG9uZSBhbmQgdGltYmVyLCBhbmQgYWxsIG1hbm5lciBvZiBjdW5uaW5nIG1lbiBmb3IgZXZlcnkgbWFubmVyIG9mIHdvcmsuCk9mIHRoZSBnb2xkLCB0aGUgc2lsdmVyLCBhbmQgdGhlIGJyYXNzLCBhbmQgdGhlIGlyb24sIHRoZXJlIGlzIG5vIG51bWJlci4gQXJpc2UgdGhlcmVmb3JlLCBhbmQgYmUgZG9pbmcsIGFuZCB0aGUgTE9SRCBiZSB3aXRoIHRoZWUuCkRhdmlkIGFsc28gY29tbWFuZGVkIGFsbCB0aGUgcHJpbmNlcyBvZiBJc3JhZWwgdG8gaGVscCBTb2xvbW9uIGhpcyBzb24sIHNheWluZywKSXMgbm90IHRoZSBMT1JEIHlvdXIgR29kIHdpdGggeW91PyBhbmQgaGF0aCBoZSBub3QgZ2l2ZW4geW91IHJlc3Qgb24gZXZlcnkgc2lkZT8gZm9yIGhlIGhhdGggZ2l2ZW4gdGhlIGluaGFiaXRhbnRzIG9mIHRoZSBsYW5kIGludG8gbWluZSBoYW5kOyBhbmQgdGhlIGxhbmQgaXMgc3ViZHVlZCBiZWZvcmUgdGhlIExPUkQsIGFuZCBiZWZvcmUgaGlzIHBlb3BsZS4KTm93IHNldCB5b3VyIGhlYXJ0IGFuZCB5b3VyIHNvdWwgdG8gc2VlayB0aGUgTE9SRCB5b3VyIEdvZDsgYXJpc2UgdGhlcmVmb3JlLCBhbmQgYnVpbGQgeWUgdGhlIHNhbmN0dWFyeSBvZiB0aGUgTE9SRCBHb2QsIHRvIGJyaW5nIHRoZSBhcmsgb2YgdGhlIGNvdmVuYW50IG9mIHRoZSBMT1JELCBhbmQgdGhlIGhvbHkgdmVzc2VscyBvZiBHb2QsIGludG8gdGhlIGhvdXNlIHRoYXQgaXMgdG8gYmUgYnVpbHQgdG8gdGhlIG5hbWUgb2YgdGhlIExPUkQuClNvIHdoZW4gRGF2aWQgd2FzIG9sZCBhbmQgZnVsbCBvZiBkYXlzLCBoZSBtYWRlIFNvbG9tb24gaGlzIHNvbiBraW5nIG92ZXIgSXNyYWVsLgpBbmQgaGUgZ2F0aGVyZWQgdG9nZXRoZXIgYWxsIHRoZSBwcmluY2VzIG9mIElzcmFlbCwgd2l0aCB0aGUgcHJpZXN0cyBhbmQgdGhlIExldml0ZXMuCk5vdyB0aGUgTGV2aXRlcyB3ZXJlIG51bWJlcmVkIGZyb20gdGhlIGFnZSBvZiB0aGlydHkgeWVhcnMgYW5kIHVwd2FyZDogYW5kIHRoZWlyIG51bWJlciBieSB0aGVpciBwb2xscywgbWFuIGJ5IG1hbiwgd2FzIHRoaXJ0eSBhbmQgZWlnaHQgdGhvdXNhbmQuCk9mIHdoaWNoLCB0d2VudHkgYW5kIGZvdXIgdGhvdXNhbmQgd2VyZSB0byBzZXQgZm9yd2FyZCB0aGUgd29yayBvZiB0aGUgaG91c2Ugb2YgdGhlIExPUkQ7IGFuZCBzaXggdGhvdXNhbmQgd2VyZSBvZmZpY2VycyBhbmQganVkZ2VzOgpNb3Jlb3ZlciBmb3VyIHRob3VzYW5kIHdlcmUgcG9ydGVyczsgYW5kIGZvdXIgdGhvdXNhbmQgcHJhaXNlZCB0aGUgTE9SRCB3aXRoIHRoZSBpbnN0cnVtZW50cyB3aGljaCBJIG1hZGUsIHNhaWQgRGF2aWQsIHRvIHByYWlzZSB0aGVyZXdpdGguCkFuZCBEYXZpZCBkaXZpZGVkIHRoZW0gaW50byBjb3Vyc2VzIGFtb25nIHRoZSBzb25zIG9mIExldmksIG5hbWVseSwgR2Vyc2hvbiwgS29oYXRoLCBhbmQgTWVyYXJpLgpPZiB0aGUgR2Vyc2hvbml0ZXMgd2VyZSwgTGFhZGFuLCBhbmQgU2hpbWVpLgpUaGUgc29ucyBvZiBMYWFkYW47IHRoZSBjaGllZiB3YXMgSmVoaWVsLCBhbmQgWmV0aGFtLCBhbmQgSm9lbCwgdGhyZWUuClRoZSBzb25zIG9mIFNoaW1laTsgU2hlbG9taXRoLCBhbmQgSGF6aWVsLCBhbmQgSGFyYW4sIHRocmVlLiBUaGVzZSB3ZXJlIHRoZSBjaGllZiBvZiB0aGUgZmF0aGVycyBvZiBMYWFkYW4uCkFuZCB0aGUgc29ucyBvZiBTaGltZWkgd2VyZSwgSmFoYXRoLCBaaW5hLCBhbmQgSmV1c2gsIGFuZCBCZXJpYWguIFRoZXNlIGZvdXIgd2VyZSB0aGUgc29ucyBvZiBTaGltZWkuCkFuZCBKYWhhdGggd2FzIHRoZSBjaGllZiwgYW5kIFppemFoIHRoZSBzZWNvbmQ6IGJ1dCBKZXVzaCBhbmQgQmVyaWFoIGhhZCBub3QgbWFueSBzb25zOyB0aGVyZWZvcmUgdGhleSB3ZXJlIGluIG9uZSByZWNrb25pbmcsIGFjY29yZGluZyB0byB0aGVpciBmYXRoZXIncyBob3VzZS4KVGhlIHNvbnMgb2YgS29oYXRoOyBBbXJhbSwgSXpoYXIsIEhlYnJvbiwgYW5kIFV6emllbCwgZm91ci4KVGhlIHNvbnMgb2YgQW1yYW07IEFhcm9uIGFuZCBNb3NlczogYW5kIEFhcm9uIHdhcyBzZXBhcmF0ZWQsIHRoYXQgaGUgc2hvdWxkIHNhbmN0aWZ5IHRoZSBtb3N0IGhvbHkgdGhpbmdzLCBoZSBhbmQgaGlzIHNvbnMgZm9yIGV2ZXIsIHRvIGJ1cm4gaW5jZW5zZSBiZWZvcmUgdGhlIExPUkQsIHRvIG1pbmlzdGVyIHVudG8gaGltLCBhbmQgdG8gYmxlc3MgaW4gaGlzIG5hbWUgZm9yIGV2ZXIuCk5vdyBjb25jZXJuaW5nIE1vc2VzIHRoZSBtYW4gb2YgR29kLCBoaXMgc29ucyB3ZXJlIG5hbWVkIG9mIHRoZSB0cmliZSBvZiBMZXZpLgpUaGUgc29ucyBvZiBNb3NlcyB3ZXJlLCBHZXJzaG9tLCBhbmQgRWxpZXplci4KT2YgdGhlIHNvbnMgb2YgR2Vyc2hvbSwgU2hlYnVlbCB3YXMgdGhlIGNoaWVmLgpBbmQgdGhlIHNvbnMgb2YgRWxpZXplciB3ZXJlLCBSZWhhYmlhaCB0aGUgY2hpZWYuIEFuZCBFbGllemVyIGhhZCBub25lIG90aGVyIHNvbnM7IGJ1dCB0aGUgc29ucyBvZiBSZWhhYmlhaCB3ZXJlIHZlcnkgbWFueS4KT2YgdGhlIHNvbnMgb2YgSXpoYXI7IFNoZWxvbWl0aCB0aGUgY2hpZWYuCk9mIHRoZSBzb25zIG9mIEhlYnJvbjsgSmVyaWFoIHRoZSBmaXJzdCwgQW1hcmlhaCB0aGUgc2Vjb25kLCBKYWhhemllbCB0aGUgdGhpcmQsIGFuZCBKZWthbWVhbSB0aGUgZm91cnRoLgpPZiB0aGUgc29ucyBvZiBVenppZWw7IE1pY2FoIHRoZSBmaXJzdCBhbmQgSmVzaWFoIHRoZSBzZWNvbmQuClRoZSBzb25zIG9mIE1lcmFyaTsgTWFobGksIGFuZCBNdXNoaS4gVGhlIHNvbnMgb2YgTWFobGk7IEVsZWF6YXIsIGFuZCBLaXNoLgpBbmQgRWxlYXphciBkaWVkLCBhbmQgaGFkIG5vIHNvbnMsIGJ1dCBkYXVnaHRlcnM6IGFuZCB0aGVpciBicmV0aHJlbiB0aGUgc29ucyBvZiBLaXNoIHRvb2sgdGhlbS4KVGhlIHNvbnMgb2YgTXVzaGk7IE1haGxpLCBhbmQgRWRlciwgYW5kIEplcmVtb3RoLCB0aHJlZS4KVGhlc2Ugd2VyZSB0aGUgc29ucyBvZiBMZXZpIGFmdGVyIHRoZSBob3VzZSBvZiB0aGVpciBmYXRoZXJzOyBldmVuIHRoZSBjaGllZiBvZiB0aGUgZmF0aGVycywgYXMgdGhleSB3ZXJlIGNvdW50ZWQgYnkgbnVtYmVyIG9mIG5hbWVzIGJ5IHRoZWlyIHBvbGxzLCB0aGF0IGRpZCB0aGUgd29yayBmb3IgdGhlIHNlcnZpY2Ugb2YgdGhlIGhvdXNlIG9mIHRoZSBMT1JELCBmcm9tIHRoZSBhZ2Ugb2YgdHdlbnR5IHllYXJzIGFuZCB1cHdhcmQuCkZvciBEYXZpZCBzYWlkLCBUaGUgTE9SRCBHb2Qgb2YgSXNyYWVsIGhhdGggZ2l2ZW4gcmVzdCB1bnRvIGhpcyBwZW9wbGUsIHRoYXQgdGhleSBtYXkgZHdlbGwgaW4gSmVydXNhbGVtIGZvciBldmVyOgpBbmQgYWxzbyB1bnRvIHRoZSBMZXZpdGVzOyB0aGV5IHNoYWxsIG5vIG1vcmUgY2FycnkgdGhlIHRhYmVybmFjbGUsIG5vciBhbnkgdmVzc2VscyBvZiBpdCBmb3IgdGhlIHNlcnZpY2UgdGhlcmVvZi4KRm9yIGJ5IHRoZSBsYXN0IHdvcmRzIG9mIERhdmlkIHRoZSBMZXZpdGVzIHdlcmUgbnVtYmVyZWQgZnJvbSB0d2VudHkgeWVhcnMgb2xkIGFuZCBhYm92ZToKQmVjYXVzZSB0aGVpciBvZmZpY2Ugd2FzIHRvIHdhaXQgb24gdGhlIHNvbnMgb2YgQWFyb24gZm9yIHRoZSBzZXJ2aWNlIG9mIHRoZSBob3VzZSBvZiB0aGUgTE9SRCwgaW4gdGhlIGNvdXJ0cywgYW5kIGluIHRoZSBjaGFtYmVycywgYW5kIGluIHRoZSBwdXJpZnlpbmcgb2YgYWxsIGhvbHkgdGhpbmdzLCBhbmQgdGhlIHdvcmsgb2YgdGhlIHNlcnZpY2Ugb2YgdGhlIGhvdXNlIG9mIEdvZDsKQm90aCBmb3IgdGhlIHNoZXdicmVhZCwgYW5kIGZvciB0aGUgZmluZSBmbG91ciBmb3IgbWVhdCBvZmZlcmluZywgYW5kIGZvciB0aGUgdW5sZWF2ZW5lZCBjYWtlcywgYW5kIGZvciB0aGF0IHdoaWNoIGlzIGJha2VkIGluIHRoZSBwYW4sIGFuZCBmb3IgdGhhdCB3aGljaCBpcyBmcmllZCwgYW5kIGZvciBhbGwgbWFubmVyIG9mIG1lYXN1cmUgYW5kIHNpemU7CkFuZCB0byBzdGFuZCBldmVyeSBtb3JuaW5nIHRvIHRoYW5rIGFuZCBwcmFpc2UgdGhlIExPUkQsIGFuZCBsaWtld2lzZSBhdCBldmVuOgpBbmQgdG8gb2ZmZXIgYWxsIGJ1cm50IHNhY3JpZmljZXMgdW50byB0aGUgTE9SRCBpbiB0aGUgc2FiYmF0aHMsIGluIHRoZSBuZXcgbW9vbnMsIGFuZCBvbiB0aGUgc2V0IGZlYXN0cywgYnkgbnVtYmVyLCBhY2NvcmRpbmcgdG8gdGhlIG9yZGVyIGNvbW1hbmRlZCB1bnRvIHRoZW0sIGNvbnRpbnVhbGx5IGJlZm9yZSB0aGUgTE9SRDoKQW5kIHRoYXQgdGhleSBzaG91bGQga2VlcCB0aGUgY2hhcmdlIG9mIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBjb25ncmVnYXRpb24sIGFuZCB0aGUgY2hhcmdlIG9mIHRoZSBob2x5IHBsYWNlLCBhbmQgdGhlIGNoYXJnZSBvZiB0aGUgc29ucyBvZiBBYXJvbiB0aGVpciBicmV0aHJlbiwgaW4gdGhlIHNlcnZpY2Ugb2YgdGhlIGhvdXNlIG9mIHRoZSBMT1JELgpOb3cgdGhlc2UgYXJlIHRoZSBkaXZpc2lvbnMgb2YgdGhlIHNvbnMgb2YgQWFyb24uIFRoZSBzb25zIG9mIEFhcm9uOyBOYWRhYiwgYW5kIEFiaWh1LCBFbGVhemFyLCBhbmQgSXRoYW1hci4KQnV0IE5hZGFiIGFuZCBBYmlodSBkaWVkIGJlZm9yZSB0aGVpciBmYXRoZXIsIGFuZCBoYWQgbm8gY2hpbGRyZW46IHRoZXJlZm9yZSBFbGVhemFyIGFuZCBJdGhhbWFyIGV4ZWN1dGVkIHRoZSBwcmllc3QncyBvZmZpY2UuCkFuZCBEYXZpZCBkaXN0cmlidXRlZCB0aGVtLCBib3RoIFphZG9rIG9mIHRoZSBzb25zIG9mIEVsZWF6YXIsIGFuZCBBaGltZWxlY2ggb2YgdGhlIHNvbnMgb2YgSXRoYW1hciwgYWNjb3JkaW5nIHRvIHRoZWlyIG9mZmljZXMgaW4gdGhlaXIgc2VydmljZS4KQW5kIHRoZXJlIHdlcmUgbW9yZSBjaGllZiBtZW4gZm91bmQgb2YgdGhlIHNvbnMgb2YgRWxlYXphciB0aGFuIG9mIHRoZSBzb25zIG9mIEl0aGFtYXIsIGFuZCB0aHVzIHdlcmUgdGhleSBkaXZpZGVkLiBBbW9uZyB0aGUgc29ucyBvZiBFbGVhemFyIHRoZXJlIHdlcmUgc2l4dGVlbiBjaGllZiBtZW4gb2YgdGhlIGhvdXNlIG9mIHRoZWlyIGZhdGhlcnMsIGFuZCBlaWdodCBhbW9uZyB0aGUgc29ucyBvZiBJdGhhbWFyIGFjY29yZGluZyB0byB0aGUgaG91c2Ugb2YgdGhlaXIgZmF0aGVycy4KVGh1cyB3ZXJlIHRoZXkgZGl2aWRlZCBieSBsb3QsIG9uZSBzb3J0IHdpdGggYW5vdGhlcjsgZm9yIHRoZSBnb3Zlcm5vcnMgb2YgdGhlIHNhbmN0dWFyeSwgYW5kIGdvdmVybm9ycyBvZiB0aGUgaG91c2Ugb2YgR29kLCB3ZXJlIG9mIHRoZSBzb25zIG9mIEVsZWF6YXIsIGFuZCBvZiB0aGUgc29ucyBvZiBJdGhhbWFyLgpBbmQgU2hlbWFpYWggdGhlIHNvbiBvZiBOZXRoYW5lZWwgdGhlIHNjcmliZSwgb25lIG9mIHRoZSBMZXZpdGVzLCB3cm90ZSB0aGVtIGJlZm9yZSB0aGUga2luZywgYW5kIHRoZSBwcmluY2VzLCBhbmQgWmFkb2sgdGhlIHByaWVzdCwgYW5kIEFoaW1lbGVjaCB0aGUgc29uIG9mIEFiaWF0aGFyLCBhbmQgYmVmb3JlIHRoZSBjaGllZiBvZiB0aGUgZmF0aGVycyBvZiB0aGUgcHJpZXN0cyBhbmQgTGV2aXRlczogb25lIHByaW5jaXBhbCBob3VzZWhvbGQgYmVpbmcgdGFrZW4gZm9yIEVsZWF6YXIsIGFuZCBvbmUgdGFrZW4gZm9yIEl0aGFtYXIuCk5vdyB0aGUgZmlyc3QgbG90IGNhbWUgZm9ydGggdG8gSmVob2lhcmliLCB0aGUgc2Vjb25kIHRvIEplZGFpYWgsClRoZSB0aGlyZCB0byBIYXJpbSwgdGhlIGZvdXJ0aCB0byBTZW9yaW0sClRoZSBmaWZ0aCB0byBNYWxjaGlqYWgsIHRoZSBzaXh0aCB0byBNaWphbWluLApUaGUgc2V2ZW50aCB0byBIYWtrb3osIHRoZSBlaWdodGggdG8gQWJpamFoLApUaGUgbmludGggdG8gSmVzaHVhaCwgdGhlIHRlbnRoIHRvIFNoZWNhbmlhaCwKVGhlIGVsZXZlbnRoIHRvIEVsaWFzaGliLCB0aGUgdHdlbGZ0aCB0byBKYWtpbSwKVGhlIHRoaXJ0ZWVudGggdG8gSHVwcGFoLCB0aGUgZm91cnRlZW50aCB0byBKZXNoZWJlYWIsClRoZSBmaWZ0ZWVudGggdG8gQmlsZ2FoLCB0aGUgc2l4dGVlbnRoIHRvIEltbWVyLApUaGUgc2V2ZW50ZWVudGggdG8gSGV6aXIsIHRoZSBlaWdodGVlbnRoIHRvIEFwaHNlcywKVGhlIG5pbmV0ZWVudGggdG8gUGV0aGFoaWFoLCB0aGUgdHdlbnRpZXRoIHRvIEplaGV6ZWtlbCwKVGhlIG9uZSBhbmQgdHdlbnRpZXRoIHRvIEphY2hpbiwgdGhlIHR3byBhbmQgdHdlbnRpZXRoIHRvIEdhbXVsLApUaGUgdGhyZWUgYW5kIHR3ZW50aWV0aCB0byBEZWxhaWFoLCB0aGUgZm91ciBhbmQgdHdlbnRpZXRoIHRvIE1hYXppYWguClRoZXNlIHdlcmUgdGhlIG9yZGVyaW5ncyBvZiB0aGVtIGluIHRoZWlyIHNlcnZpY2UgdG8gY29tZSBpbnRvIHRoZSBob3VzZSBvZiB0aGUgTE9SRCwgYWNjb3JkaW5nIHRvIHRoZWlyIG1hbm5lciwgdW5kZXIgQWFyb24gdGhlaXIgZmF0aGVyLCBhcyB0aGUgTE9SRCBHb2Qgb2YgSXNyYWVsIGhhZCBjb21tYW5kZWQgaGltLgpBbmQgdGhlIHJlc3Qgb2YgdGhlIHNvbnMgb2YgTGV2aSB3ZXJlIHRoZXNlOiBPZiB0aGUgc29ucyBvZiBBbXJhbTsgU2h1YmFlbDogb2YgdGhlIHNvbnMgb2YgU2h1YmFlbDsgSmVoZGVpYWguCkNvbmNlcm5pbmcgUmVoYWJpYWg6IG9mIHRoZSBzb25zIG9mIFJlaGFiaWFoLCB0aGUgZmlyc3Qgd2FzIElzc2hpYWguCk9mIHRoZSBJemhhcml0ZXM7IFNoZWxvbW90aDogb2YgdGhlIHNvbnMgb2YgU2hlbG9tb3RoOyBKYWhhdGguCkFuZCB0aGUgc29ucyBvZiBIZWJyb247IEplcmlhaCB0aGUgZmlyc3QsIEFtYXJpYWggdGhlIHNlY29uZCwgSmFoYXppZWwgdGhlIHRoaXJkLCBKZWthbWVhbSB0aGUgZm91cnRoLgpPZiB0aGUgc29ucyBvZiBVenppZWw7IE1pY2hhaDogb2YgdGhlIHNvbnMgb2YgTWljaGFoOyBTaGFtaXIuClRoZSBicm90aGVyIG9mIE1pY2hhaCB3YXMgSXNzaGlhaDogb2YgdGhlIHNvbnMgb2YgSXNzaGlhaDsgWmVjaGFyaWFoLgpUaGUgc29ucyBvZiBNZXJhcmkgd2VyZSBNYWhsaSBhbmQgTXVzaGk6IHRoZSBzb25zIG9mIEphYXppYWg7IEJlbm8uClRoZSBzb25zIG9mIE1lcmFyaSBieSBKYWF6aWFoOyBCZW5vLCBhbmQgU2hvaGFtLCBhbmQgWmFjY3VyLCBhbmQgSWJyaS4KT2YgTWFobGkgY2FtZSBFbGVhemFyLCB3aG8gaGFkIG5vIHNvbnMuCkNvbmNlcm5pbmcgS2lzaDogdGhlIHNvbiBvZiBLaXNoIHdhcyBKZXJhaG1lZWwuClRoZSBzb25zIGFsc28gb2YgTXVzaGk7IE1haGxpLCBhbmQgRWRlciwgYW5kIEplcmltb3RoLiBUaGVzZSB3ZXJlIHRoZSBzb25zIG9mIHRoZSBMZXZpdGVzIGFmdGVyIHRoZSBob3VzZSBvZiB0aGVpciBmYXRoZXJzLgpUaGVzZSBsaWtld2lzZSBjYXN0IGxvdHMgb3ZlciBhZ2FpbnN0IHRoZWlyIGJyZXRocmVuIHRoZSBzb25zIG9mIEFhcm9uIGluIHRoZSBwcmVzZW5jZSBvZiBEYXZpZCB0aGUga2luZywgYW5kIFphZG9rLCBhbmQgQWhpbWVsZWNoLCBhbmQgdGhlIGNoaWVmIG9mIHRoZSBmYXRoZXJzIG9mIHRoZSBwcmllc3RzIGFuZCBMZXZpdGVzLCBldmVuIHRoZSBwcmluY2lwYWwgZmF0aGVycyBvdmVyIGFnYWluc3QgdGhlaXIgeW91bmdlciBicmV0aHJlbi4KTW9yZW92ZXIgRGF2aWQgYW5kIHRoZSBjYXB0YWlucyBvZiB0aGUgaG9zdCBzZXBhcmF0ZWQgdG8gdGhlIHNlcnZpY2Ugb2YgdGhlIHNvbnMgb2YgQXNhcGgsIGFuZCBvZiBIZW1hbiwgYW5kIG9mIEplZHV0aHVuLCB3aG8gc2hvdWxkIHByb3BoZXN5IHdpdGggaGFycHMsIHdpdGggcHNhbHRlcmllcywgYW5kIHdpdGggY3ltYmFsczogYW5kIHRoZSBudW1iZXIgb2YgdGhlIHdvcmttZW4gYWNjb3JkaW5nIHRvIHRoZWlyIHNlcnZpY2Ugd2FzOgpPZiB0aGUgc29ucyBvZiBBc2FwaDsgWmFjY3VyLCBhbmQgSm9zZXBoLCBhbmQgTmV0aGFuaWFoLCBhbmQgQXNhcmVsYWgsIHRoZSBzb25zIG9mIEFzYXBoIHVuZGVyIHRoZSBoYW5kcyBvZiBBc2FwaCwgd2hpY2ggcHJvcGhlc2llZCBhY2NvcmRpbmcgdG8gdGhlIG9yZGVyIG9mIHRoZSBraW5nLgpPZiBKZWR1dGh1bjogdGhlIHNvbnMgb2YgSmVkdXRodW47IEdlZGFsaWFoLCBhbmQgWmVyaSwgYW5kIEplc2hhaWFoLCBIYXNoYWJpYWgsIGFuZCBNYXR0aXRoaWFoLCBzaXgsIHVuZGVyIHRoZSBoYW5kcyBvZiB0aGVpciBmYXRoZXIgSmVkdXRodW4sIHdobyBwcm9waGVzaWVkIHdpdGggYSBoYXJwLCB0byBnaXZlIHRoYW5rcyBhbmQgdG8gcHJhaXNlIHRoZSBMT1JELgpPZiBIZW1hbjogdGhlIHNvbnMgb2YgSGVtYW46IEJ1a2tpYWgsIE1hdHRhbmlhaCwgVXp6aWVsLCBTaGVidWVsLCBhbmQgSmVyaW1vdGgsIEhhbmFuaWFoLCBIYW5hbmksIEVsaWF0aGFoLCBHaWRkYWx0aSwgYW5kIFJvbWFtdGllemVyLCBKb3NoYmVrYXNoYWgsIE1hbGxvdGhpLCBIb3RoaXIsIGFuZCBNYWhhemlvdGg6CkFsbCB0aGVzZSB3ZXJlIHRoZSBzb25zIG9mIEhlbWFuIHRoZSBraW5nJ3Mgc2VlciBpbiB0aGUgd29yZHMgb2YgR29kLCB0byBsaWZ0IHVwIHRoZSBob3JuLiBBbmQgR29kIGdhdmUgdG8gSGVtYW4gZm91cnRlZW4gc29ucyBhbmQgdGhyZWUgZGF1Z2h0ZXJzLgpBbGwgdGhlc2Ugd2VyZSB1bmRlciB0aGUgaGFuZHMgb2YgdGhlaXIgZmF0aGVyIGZvciBzb25nIGluIHRoZSBob3VzZSBvZiB0aGUgTE9SRCwgd2l0aCBjeW1iYWxzLCBwc2FsdGVyaWVzLCBhbmQgaGFycHMsIGZvciB0aGUgc2VydmljZSBvZiB0aGUgaG91c2Ugb2YgR29kLCBhY2NvcmRpbmcgdG8gdGhlIGtpbmcncyBvcmRlciB0byBBc2FwaCwgSmVkdXRodW4sIGFuZCBIZW1hbi4KU28gdGhlIG51bWJlciBvZiB0aGVtLCB3aXRoIHRoZWlyIGJyZXRocmVuIHRoYXQgd2VyZSBpbnN0cnVjdGVkIGluIHRoZSBzb25ncyBvZiB0aGUgTE9SRCwgZXZlbiBhbGwgdGhhdCB3ZXJlIGN1bm5pbmcsIHdhcyB0d28gaHVuZHJlZCBmb3Vyc2NvcmUgYW5kIGVpZ2h0LgpBbmQgdGhleSBjYXN0IGxvdHMsIHdhcmQgYWdhaW5zdCB3YXJkLCBhcyB3ZWxsIHRoZSBzbWFsbCBhcyB0aGUgZ3JlYXQsIHRoZSB0ZWFjaGVyIGFzIHRoZSBzY2hvbGFyLgpOb3cgdGhlIGZpcnN0IGxvdCBjYW1lIGZvcnRoIGZvciBBc2FwaCB0byBKb3NlcGg6IHRoZSBzZWNvbmQgdG8gR2VkYWxpYWgsIHdobyB3aXRoIGhpcyBicmV0aHJlbiBhbmQgc29ucyB3ZXJlIHR3ZWx2ZToKVGhlIHRoaXJkIHRvIFphY2N1ciwgaGUsIGhpcyBzb25zLCBhbmQgaGlzIGJyZXRocmVuLCB3ZXJlIHR3ZWx2ZToKVGhlIGZvdXJ0aCB0byBJenJpLCBoZSwgaGlzIHNvbnMsIGFuZCBoaXMgYnJldGhyZW4sIHdlcmUgdHdlbHZlOgpUaGUgZmlmdGggdG8gTmV0aGFuaWFoLCBoZSwgaGlzIHNvbnMsIGFuZCBoaXMgYnJldGhyZW4sIHdlcmUgdHdlbHZlOgpUaGUgc2l4dGggdG8gQnVra2lhaCwgaGUsIGhpcyBzb25zLCBhbmQgaGlzIGJyZXRocmVuLCB3ZXJlIHR3ZWx2ZToKVGhlIHNldmVudGggdG8gSmVzaGFyZWxhaCwgaGUsIGhpcyBzb25zLCBhbmQgaGlzIGJyZXRocmVuLCB3ZXJlIHR3ZWx2ZToKVGhlIGVpZ2h0aCB0byBKZXNoYWlhaCwgaGUsIGhpcyBzb25zLCBhbmQgaGlzIGJyZXRocmVuLCB3ZXJlIHR3ZWx2ZToKVGhlIG5pbnRoIHRvIE1hdHRhbmlhaCwgaGUsIGhpcyBzb25zLCBhbmQgaGlzIGJyZXRocmVuLCB3ZXJlIHR3ZWx2ZToKVGhlIHRlbnRoIHRvIFNoaW1laSwgaGUsIGhpcyBzb25zLCBhbmQgaGlzIGJyZXRocmVuLCB3ZXJlIHR3ZWx2ZToKVGhlIGVsZXZlbnRoIHRvIEF6YXJlZWwsIGhlLCBoaXMgc29ucywgYW5kIGhpcyBicmV0aHJlbiwgd2VyZSB0d2VsdmU6ClRoZSB0d2VsZnRoIHRvIEhhc2hhYmlhaCwgaGUsIGhpcyBzb25zLCBhbmQgaGlzIGJyZXRocmVuLCB3ZXJlIHR3ZWx2ZToKVGhlIHRoaXJ0ZWVudGggdG8gU2h1YmFlbCwgaGUsIGhpcyBzb25zLCBhbmQgaGlzIGJyZXRocmVuLCB3ZXJlIHR3ZWx2ZToKVGhlIGZvdXJ0ZWVudGggdG8gTWF0dGl0aGlhaCwgaGUsIGhpcyBzb25zLCBhbmQgaGlzIGJyZXRocmVuLCB3ZXJlIHR3ZWx2ZToKVGhlIGZpZnRlZW50aCB0byBKZXJlbW90aCwgaGUsIGhpcyBzb25zLCBhbmQgaGlzIGJyZXRocmVuLCB3ZXJlIHR3ZWx2ZToKVGhlIHNpeHRlZW50aCB0byBIYW5hbmlhaCwgaGUsIGhpcyBzb25zLCBhbmQgaGlzIGJyZXRocmVuLCB3ZXJlIHR3ZWx2ZToKVGhlIHNldmVudGVlbnRoIHRvIEpvc2hiZWthc2hhaCwgaGUsIGhpcyBzb25zLCBhbmQgaGlzIGJyZXRocmVuLCB3ZXJlIHR3ZWx2ZToKVGhlIGVpZ2h0ZWVudGggdG8gSGFuYW5pLCBoZSwgaGlzIHNvbnMsIGFuZCBoaXMgYnJldGhyZW4sIHdlcmUgdHdlbHZlOgpUaGUgbmluZXRlZW50aCB0byBNYWxsb3RoaSwgaGUsIGhpcyBzb25zLCBhbmQgaGlzIGJyZXRocmVuLCB3ZXJlIHR3ZWx2ZToKVGhlIHR3ZW50aWV0aCB0byBFbGlhdGhhaCwgaGUsIGhpcyBzb25zLCBhbmQgaGlzIGJyZXRocmVuLCB3ZXJlIHR3ZWx2ZToKVGhlIG9uZSBhbmQgdHdlbnRpZXRoIHRvIEhvdGhpciwgaGUsIGhpcyBzb25zLCBhbmQgaGlzIGJyZXRocmVuLCB3ZXJlIHR3ZWx2ZToKVGhlIHR3byBhbmQgdHdlbnRpZXRoIHRvIEdpZGRhbHRpLCBoZSwgaGlzIHNvbnMsIGFuZCBoaXMgYnJldGhyZW4sIHdlcmUgdHdlbHZlOgpUaGUgdGhyZWUgYW5kIHR3ZW50aWV0aCB0byBNYWhhemlvdGgsIGhlLCBoaXMgc29ucywgYW5kIGhpcyBicmV0aHJlbiwgd2VyZSB0d2VsdmU6ClRoZSBmb3VyIGFuZCB0d2VudGlldGggdG8gUm9tYW10aWV6ZXIsIGhlLCBoaXMgc29ucywgYW5kIGhpcyBicmV0aHJlbiwgd2VyZSB0d2VsdmUuCkNvbmNlcm5pbmcgdGhlIGRpdmlzaW9ucyBvZiB0aGUgcG9ydGVyczogT2YgdGhlIEtvcmhpdGVzIHdhcyBNZXNoZWxlbWlhaCB0aGUgc29uIG9mIEtvcmUsIG9mIHRoZSBzb25zIG9mIEFzYXBoLgpBbmQgdGhlIHNvbnMgb2YgTWVzaGVsZW1pYWggd2VyZSwgWmVjaGFyaWFoIHRoZSBmaXJzdGJvcm4sIEplZGlhZWwgdGhlIHNlY29uZCwgWmViYWRpYWggdGhlIHRoaXJkLCBKYXRobmllbCB0aGUgZm91cnRoLApFbGFtIHRoZSBmaWZ0aCwgSmVob2hhbmFuIHRoZSBzaXh0aCwgRWxpb2VuYWkgdGhlIHNldmVudGguCk1vcmVvdmVyIHRoZSBzb25zIG9mIE9iZWRlZG9tIHdlcmUsIFNoZW1haWFoIHRoZSBmaXJzdGJvcm4sIEplaG96YWJhZCB0aGUgc2Vjb25kLCBKb2FoIHRoZSB0aGlyZCwgYW5kIFNhY2FyIHRoZSBmb3VydGgsIGFuZCBOZXRoYW5lZWwgdGhlIGZpZnRoLgpBbW1pZWwgdGhlIHNpeHRoLCBJc3NhY2hhciB0aGUgc2V2ZW50aCwgUGV1bHRoYWkgdGhlIGVpZ2h0aDogZm9yIEdvZCBibGVzc2VkIGhpbS4KQWxzbyB1bnRvIFNoZW1haWFoIGhpcyBzb24gd2VyZSBzb25zIGJvcm4sIHRoYXQgcnVsZWQgdGhyb3VnaG91dCB0aGUgaG91c2Ugb2YgdGhlaXIgZmF0aGVyOiBmb3IgdGhleSB3ZXJlIG1pZ2h0eSBtZW4gb2YgdmFsb3VyLgpUaGUgc29ucyBvZiBTaGVtYWlhaDsgT3RobmksIGFuZCBSZXBoYWVsLCBhbmQgT2JlZCwgRWx6YWJhZCwgd2hvc2UgYnJldGhyZW4gd2VyZSBzdHJvbmcgbWVuLCBFbGlodSwgYW5kIFNlbWFjaGlhaC4KQWxsIHRoZXNlIG9mIHRoZSBzb25zIG9mIE9iZWRlZG9tOiB0aGV5IGFuZCB0aGVpciBzb25zIGFuZCB0aGVpciBicmV0aHJlbiwgYWJsZSBtZW4gZm9yIHN0cmVuZ3RoIGZvciB0aGUgc2VydmljZSwgd2VyZSB0aHJlZXNjb3JlIGFuZCB0d28gb2YgT2JlZGVkb20uCkFuZCBNZXNoZWxlbWlhaCBoYWQgc29ucyBhbmQgYnJldGhyZW4sIHN0cm9uZyBtZW4sIGVpZ2h0ZWVuLgpBbHNvIEhvc2FoLCBvZiB0aGUgY2hpbGRyZW4gb2YgTWVyYXJpLCBoYWQgc29uczsgU2ltcmkgdGhlIGNoaWVmLCAoZm9yIHRob3VnaCBoZSB3YXMgbm90IHRoZSBmaXJzdGJvcm4sIHlldCBoaXMgZmF0aGVyIG1hZGUgaGltIHRoZSBjaGllZjspCkhpbGtpYWggdGhlIHNlY29uZCwgVGViYWxpYWggdGhlIHRoaXJkLCBaZWNoYXJpYWggdGhlIGZvdXJ0aDogYWxsIHRoZSBzb25zIGFuZCBicmV0aHJlbiBvZiBIb3NhaCB3ZXJlIHRoaXJ0ZWVuLgpBbW9uZyB0aGVzZSB3ZXJlIHRoZSBkaXZpc2lvbnMgb2YgdGhlIHBvcnRlcnMsIGV2ZW4gYW1vbmcgdGhlIGNoaWVmIG1lbiwgaGF2aW5nIHdhcmRzIG9uZSBhZ2FpbnN0IGFub3RoZXIsIHRvIG1pbmlzdGVyIGluIHRoZSBob3VzZSBvZiB0aGUgTE9SRC4KQW5kIHRoZXkgY2FzdCBsb3RzLCBhcyB3ZWxsIHRoZSBzbWFsbCBhcyB0aGUgZ3JlYXQsIGFjY29yZGluZyB0byB0aGUgaG91c2Ugb2YgdGhlaXIgZmF0aGVycywgZm9yIGV2ZXJ5IGdhdGUuCkFuZCB0aGUgbG90IGVhc3R3YXJkIGZlbGwgdG8gU2hlbGVtaWFoLiBUaGVuIGZvciBaZWNoYXJpYWggaGlzIHNvbiwgYSB3aXNlIGNvdW5zZWxsb3IsIHRoZXkgY2FzdCBsb3RzOyBhbmQgaGlzIGxvdCBjYW1lIG91dCBub3J0aHdhcmQuClRvIE9iZWRlZG9tIHNvdXRod2FyZDsgYW5kIHRvIGhpcyBzb25zIHRoZSBob3VzZSBvZiBBc3VwcGltLgpUbyBTaHVwcGltIGFuZCBIb3NhaCB0aGUgbG90IGNhbWUgZm9ydGggd2VzdHdhcmQsIHdpdGggdGhlIGdhdGUgU2hhbGxlY2hldGgsIGJ5IHRoZSBjYXVzZXdheSBvZiB0aGUgZ29pbmcgdXAsIHdhcmQgYWdhaW5zdCB3YXJkLgpFYXN0d2FyZCB3ZXJlIHNpeCBMZXZpdGVzLCBub3J0aHdhcmQgZm91ciBhIGRheSwgc291dGh3YXJkIGZvdXIgYSBkYXksIGFuZCB0b3dhcmQgQXN1cHBpbSB0d28gYW5kIHR3by4KQXQgUGFyYmFyIHdlc3R3YXJkLCBmb3VyIGF0IHRoZSBjYXVzZXdheSwgYW5kIHR3byBhdCBQYXJiYXIuClRoZXNlIGFyZSB0aGUgZGl2aXNpb25zIG9mIHRoZSBwb3J0ZXJzIGFtb25nIHRoZSBzb25zIG9mIEtvcmUsIGFuZCBhbW9uZyB0aGUgc29ucyBvZiBNZXJhcmkuCkFuZCBvZiB0aGUgTGV2aXRlcywgQWhpamFoIHdhcyBvdmVyIHRoZSB0cmVhc3VyZXMgb2YgdGhlIGhvdXNlIG9mIEdvZCwgYW5kIG92ZXIgdGhlIHRyZWFzdXJlcyBvZiB0aGUgZGVkaWNhdGVkIHRoaW5ncy4KQXMgY29uY2VybmluZyB0aGUgc29ucyBvZiBMYWFkYW47IHRoZSBzb25zIG9mIHRoZSBHZXJzaG9uaXRlIExhYWRhbiwgY2hpZWYgZmF0aGVycywgZXZlbiBvZiBMYWFkYW4gdGhlIEdlcnNob25pdGUsIHdlcmUgSmVoaWVsaS4KVGhlIHNvbnMgb2YgSmVoaWVsaTsgWmV0aGFtLCBhbmQgSm9lbCBoaXMgYnJvdGhlciwgd2hpY2ggd2VyZSBvdmVyIHRoZSB0cmVhc3VyZXMgb2YgdGhlIGhvdXNlIG9mIHRoZSBMT1JELgpPZiB0aGUgQW1yYW1pdGVzLCBhbmQgdGhlIEl6aGFyaXRlcywgdGhlIEhlYnJvbml0ZXMsIGFuZCB0aGUgVXp6aWVsaXRlczoKQW5kIFNoZWJ1ZWwgdGhlIHNvbiBvZiBHZXJzaG9tLCB0aGUgc29uIG9mIE1vc2VzLCB3YXMgcnVsZXIgb2YgdGhlIHRyZWFzdXJlcy4KQW5kIGhpcyBicmV0aHJlbiBieSBFbGllemVyOyBSZWhhYmlhaCBoaXMgc29uLCBhbmQgSmVzaGFpYWggaGlzIHNvbiwgYW5kIEpvcmFtIGhpcyBzb24sIGFuZCBaaWNocmkgaGlzIHNvbiwgYW5kIFNoZWxvbWl0aCBoaXMgc29uLgpXaGljaCBTaGVsb21pdGggYW5kIGhpcyBicmV0aHJlbiB3ZXJlIG92ZXIgYWxsIHRoZSB0cmVhc3VyZXMgb2YgdGhlIGRlZGljYXRlZCB0aGluZ3MsIHdoaWNoIERhdmlkIHRoZSBraW5nLCBhbmQgdGhlIGNoaWVmIGZhdGhlcnMsIHRoZSBjYXB0YWlucyBvdmVyIHRob3VzYW5kcyBhbmQgaHVuZHJlZHMsIGFuZCB0aGUgY2FwdGFpbnMgb2YgdGhlIGhvc3QsIGhhZCBkZWRpY2F0ZWQuCk91dCBvZiB0aGUgc3BvaWxzIHdvbiBpbiBiYXR0bGVzIGRpZCB0aGV5IGRlZGljYXRlIHRvIG1haW50YWluIHRoZSBob3VzZSBvZiB0aGUgTE9SRC4KQW5kIGFsbCB0aGF0IFNhbXVlbCB0aGUgc2VlciwgYW5kIFNhdWwgdGhlIHNvbiBvZiBLaXNoLCBhbmQgQWJuZXIgdGhlIHNvbiBvZiBOZXIsIGFuZCBKb2FiIHRoZSBzb24gb2YgWmVydWlhaCwgaGFkIGRlZGljYXRlZDsgYW5kIHdob3NvZXZlciBoYWQgZGVkaWNhdGVkIGFueSB0aGluZywgaXQgd2FzIHVuZGVyIHRoZSBoYW5kIG9mIFNoZWxvbWl0aCwgYW5kIG9mIGhpcyBicmV0aHJlbi4KT2YgdGhlIEl6aGFyaXRlcywgQ2hlbmFuaWFoIGFuZCBoaXMgc29ucyB3ZXJlIGZvciB0aGUgb3V0d2FyZCBidXNpbmVzcyBvdmVyIElzcmFlbCwgZm9yIG9mZmljZXJzIGFuZCBqdWRnZXMuCkFuZCBvZiB0aGUgSGVicm9uaXRlcywgSGFzaGFiaWFoIGFuZCBoaXMgYnJldGhyZW4sIG1lbiBvZiB2YWxvdXIsIGEgdGhvdXNhbmQgYW5kIHNldmVuIGh1bmRyZWQsIHdlcmUgb2ZmaWNlcnMgYW1vbmcgdGhlbSBvZiBJc3JhZWwgb24gdGhpcyBzaWRlIEpvcmRhbiB3ZXN0d2FyZCBpbiBhbGwgdGhlIGJ1c2luZXNzIG9mIHRoZSBMT1JELCBhbmQgaW4gdGhlIHNlcnZpY2Ugb2YgdGhlIGtpbmcuCkFtb25nIHRoZSBIZWJyb25pdGVzIHdhcyBKZXJpamFoIHRoZSBjaGllZiwgZXZlbiBhbW9uZyB0aGUgSGVicm9uaXRlcywgYWNjb3JkaW5nIHRvIHRoZSBnZW5lcmF0aW9ucyBvZiBoaXMgZmF0aGVycy4gSW4gdGhlIGZvcnRpZXRoIHllYXIgb2YgdGhlIHJlaWduIG9mIERhdmlkIHRoZXkgd2VyZSBzb3VnaHQgZm9yLCBhbmQgdGhlcmUgd2VyZSBmb3VuZCBhbW9uZyB0aGVtIG1pZ2h0eSBtZW4gb2YgdmFsb3VyIGF0IEphemVyIG9mIEdpbGVhZC4KQW5kIGhpcyBicmV0aHJlbiwgbWVuIG9mIHZhbG91ciwgd2VyZSB0d28gdGhvdXNhbmQgYW5kIHNldmVuIGh1bmRyZWQgY2hpZWYgZmF0aGVycywgd2hvbSBraW5nIERhdmlkIG1hZGUgcnVsZXJzIG92ZXIgdGhlIFJldWJlbml0ZXMsIHRoZSBHYWRpdGVzLCBhbmQgdGhlIGhhbGYgdHJpYmUgb2YgTWFuYXNzZWgsIGZvciBldmVyeSBtYXR0ZXIgcGVydGFpbmluZyB0byBHb2QsIGFuZCBhZmZhaXJzIG9mIHRoZSBraW5nLgpOb3cgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBhZnRlciB0aGVpciBudW1iZXIsIHRvIHdpdCwgdGhlIGNoaWVmIGZhdGhlcnMgYW5kIGNhcHRhaW5zIG9mIHRob3VzYW5kcyBhbmQgaHVuZHJlZHMsIGFuZCB0aGVpciBvZmZpY2VycyB0aGF0IHNlcnZlZCB0aGUga2luZyBpbiBhbnkgbWF0dGVyIG9mIHRoZSBjb3Vyc2VzLCB3aGljaCBjYW1lIGluIGFuZCB3ZW50IG91dCBtb250aCBieSBtb250aCB0aHJvdWdob3V0IGFsbCB0aGUgbW9udGhzIG9mIHRoZSB5ZWFyLCBvZiBldmVyeSBjb3Vyc2Ugd2VyZSB0d2VudHkgYW5kIGZvdXIgdGhvdXNhbmQuCk92ZXIgdGhlIGZpcnN0IGNvdXJzZSBmb3IgdGhlIGZpcnN0IG1vbnRoIHdhcyBKYXNob2JlYW0gdGhlIHNvbiBvZiBaYWJkaWVsOiBhbmQgaW4gaGlzIGNvdXJzZSB3ZXJlIHR3ZW50eSBhbmQgZm91ciB0aG91c2FuZC4KT2YgdGhlIGNoaWxkcmVuIG9mIFBlcmV6IHdhcyB0aGUgY2hpZWYgb2YgYWxsIHRoZSBjYXB0YWlucyBvZiB0aGUgaG9zdCBmb3IgdGhlIGZpcnN0IG1vbnRoLgpBbmQgb3ZlciB0aGUgY291cnNlIG9mIHRoZSBzZWNvbmQgbW9udGggd2FzIERvZGFpIGFuIEFob2hpdGUsIGFuZCBvZiBoaXMgY291cnNlIHdhcyBNaWtsb3RoIGFsc28gdGhlIHJ1bGVyOiBpbiBoaXMgY291cnNlIGxpa2V3aXNlIHdlcmUgdHdlbnR5IGFuZCBmb3VyIHRob3VzYW5kLgpUaGUgdGhpcmQgY2FwdGFpbiBvZiB0aGUgaG9zdCBmb3IgdGhlIHRoaXJkIG1vbnRoIHdhcyBCZW5haWFoIHRoZSBzb24gb2YgSmVob2lhZGEsIGEgY2hpZWYgcHJpZXN0OiBhbmQgaW4gaGlzIGNvdXJzZSB3ZXJlIHR3ZW50eSBhbmQgZm91ciB0aG91c2FuZC4KVGhpcyBpcyB0aGF0IEJlbmFpYWgsIHdobyB3YXMgbWlnaHR5IGFtb25nIHRoZSB0aGlydHksIGFuZCBhYm92ZSB0aGUgdGhpcnR5OiBhbmQgaW4gaGlzIGNvdXJzZSB3YXMgQW1taXphYmFkIGhpcyBzb24uClRoZSBmb3VydGggY2FwdGFpbiBmb3IgdGhlIGZvdXJ0aCBtb250aCB3YXMgQXNhaGVsIHRoZSBicm90aGVyIG9mIEpvYWIsIGFuZCBaZWJhZGlhaCBoaXMgc29uIGFmdGVyIGhpbTogYW5kIGluIGhpcyBjb3Vyc2Ugd2VyZSB0d2VudHkgYW5kIGZvdXIgdGhvdXNhbmQuClRoZSBmaWZ0aCBjYXB0YWluIGZvciB0aGUgZmlmdGggbW9udGggd2FzIFNoYW1odXRoIHRoZSBJenJhaGl0ZTogYW5kIGluIGhpcyBjb3Vyc2Ugd2VyZSB0d2VudHkgYW5kIGZvdXIgdGhvdXNhbmQuClRoZSBzaXh0aCBjYXB0YWluIGZvciB0aGUgc2l4dGggbW9udGggd2FzIElyYSB0aGUgc29uIG9mIElra2VzaCB0aGUgVGVrb2l0ZTogYW5kIGluIGhpcyBjb3Vyc2Ugd2VyZSB0d2VudHkgYW5kIGZvdXIgdGhvdXNhbmQuClRoZSBzZXZlbnRoIGNhcHRhaW4gZm9yIHRoZSBzZXZlbnRoIG1vbnRoIHdhcyBIZWxleiB0aGUgUGVsb25pdGUsIG9mIHRoZSBjaGlsZHJlbiBvZiBFcGhyYWltOiBhbmQgaW4gaGlzIGNvdXJzZSB3ZXJlIHR3ZW50eSBhbmQgZm91ciB0aG91c2FuZC4KVGhlIGVpZ2h0aCBjYXB0YWluIGZvciB0aGUgZWlnaHRoIG1vbnRoIHdhcyBTaWJiZWNhaSB0aGUgSHVzaGF0aGl0ZSwgb2YgdGhlIFphcmhpdGVzOiBhbmQgaW4gaGlzIGNvdXJzZSB3ZXJlIHR3ZW50eSBhbmQgZm91ciB0aG91c2FuZC4KVGhlIG5pbnRoIGNhcHRhaW4gZm9yIHRoZSBuaW50aCBtb250aCB3YXMgQWJpZXplciB0aGUgQW5ldG90aGl0ZSwgb2YgdGhlIEJlbmphbWl0ZXM6IGFuZCBpbiBoaXMgY291cnNlIHdlcmUgdHdlbnR5IGFuZCBmb3VyIHRob3VzYW5kLgpUaGUgdGVudGggY2FwdGFpbiBmb3IgdGhlIHRlbnRoIG1vbnRoIHdhcyBNYWhhcmFpIHRoZSBOZXRvcGhhdGhpdGUsIG9mIHRoZSBaYXJoaXRlczogYW5kIGluIGhpcyBjb3Vyc2Ugd2VyZSB0d2VudHkgYW5kIGZvdXIgdGhvdXNhbmQuClRoZSBlbGV2ZW50aCBjYXB0YWluIGZvciB0aGUgZWxldmVudGggbW9udGggd2FzIEJlbmFpYWggdGhlIFBpcmF0aG9uaXRlLCBvZiB0aGUgY2hpbGRyZW4gb2YgRXBocmFpbTogYW5kIGluIGhpcyBjb3Vyc2Ugd2VyZSB0d2VudHkgYW5kIGZvdXIgdGhvdXNhbmQuClRoZSB0d2VsZnRoIGNhcHRhaW4gZm9yIHRoZSB0d2VsZnRoIG1vbnRoIHdhcyBIZWxkYWkgdGhlIE5ldG9waGF0aGl0ZSwgb2YgT3RobmllbDogYW5kIGluIGhpcyBjb3Vyc2Ugd2VyZSB0d2VudHkgYW5kIGZvdXIgdGhvdXNhbmQuCkZ1cnRoZXJtb3JlIG92ZXIgdGhlIHRyaWJlcyBvZiBJc3JhZWw6IHRoZSBydWxlciBvZiB0aGUgUmV1YmVuaXRlcyB3YXMgRWxpZXplciB0aGUgc29uIG9mIFppY2hyaTogb2YgdGhlIFNpbWVvbml0ZXMsIFNoZXBoYXRpYWggdGhlIHNvbiBvZiBNYWFjaGFoOgpPZiB0aGUgTGV2aXRlcywgSGFzaGFiaWFoIHRoZSBzb24gb2YgS2VtdWVsOiBvZiB0aGUgQWFyb25pdGVzLCBaYWRvazoKT2YgSnVkYWgsIEVsaWh1LCBvbmUgb2YgdGhlIGJyZXRocmVuIG9mIERhdmlkOiBvZiBJc3NhY2hhciwgT21yaSB0aGUgc29uIG9mIE1pY2hhZWw6Ck9mIFplYnVsdW4sIElzaG1haWFoIHRoZSBzb24gb2YgT2JhZGlhaDogb2YgTmFwaHRhbGksIEplcmltb3RoIHRoZSBzb24gb2YgQXpyaWVsOgpPZiB0aGUgY2hpbGRyZW4gb2YgRXBocmFpbSwgSG9zaGVhIHRoZSBzb24gb2YgQXphemlhaDogb2YgdGhlIGhhbGYgdHJpYmUgb2YgTWFuYXNzZWgsIEpvZWwgdGhlIHNvbiBvZiBQZWRhaWFoOgpPZiB0aGUgaGFsZiB0cmliZSBvZiBNYW5hc3NlaCBpbiBHaWxlYWQsIElkZG8gdGhlIHNvbiBvZiBaZWNoYXJpYWg6IG9mIEJlbmphbWluLCBKYWFzaWVsIHRoZSBzb24gb2YgQWJuZXI6Ck9mIERhbiwgQXphcmVlbCB0aGUgc29uIG9mIEplcm9oYW0uIFRoZXNlIHdlcmUgdGhlIHByaW5jZXMgb2YgdGhlIHRyaWJlcyBvZiBJc3JhZWwuCkJ1dCBEYXZpZCB0b29rIG5vdCB0aGUgbnVtYmVyIG9mIHRoZW0gZnJvbSB0d2VudHkgeWVhcnMgb2xkIGFuZCB1bmRlcjogYmVjYXVzZSB0aGUgTE9SRCBoYWQgc2FpZCBoZSB3b3VsZCBpbmNyZWFzZSBJc3JhZWwgbGlrZSB0byB0aGUgc3RhcnMgb2YgdGhlIGhlYXZlbnMuCkpvYWIgdGhlIHNvbiBvZiBaZXJ1aWFoIGJlZ2FuIHRvIG51bWJlciwgYnV0IGhlIGZpbmlzaGVkIG5vdCwgYmVjYXVzZSB0aGVyZSBmZWxsIHdyYXRoIGZvciBpdCBhZ2FpbnN0IElzcmFlbDsgbmVpdGhlciB3YXMgdGhlIG51bWJlciBwdXQgaW4gdGhlIGFjY291bnQgb2YgdGhlIGNocm9uaWNsZXMgb2Yga2luZyBEYXZpZC4KQW5kIG92ZXIgdGhlIGtpbmcncyB0cmVhc3VyZXMgd2FzIEF6bWF2ZXRoIHRoZSBzb24gb2YgQWRpZWw6IGFuZCBvdmVyIHRoZSBzdG9yZWhvdXNlcyBpbiB0aGUgZmllbGRzLCBpbiB0aGUgY2l0aWVzLCBhbmQgaW4gdGhlIHZpbGxhZ2VzLCBhbmQgaW4gdGhlIGNhc3RsZXMsIHdhcyBKZWhvbmF0aGFuIHRoZSBzb24gb2YgVXp6aWFoOgpBbmQgb3ZlciB0aGVtIHRoYXQgZGlkIHRoZSB3b3JrIG9mIHRoZSBmaWVsZCBmb3IgdGlsbGFnZSBvZiB0aGUgZ3JvdW5kIHdhcyBFenJpIHRoZSBzb24gb2YgQ2hlbHViOgpBbmQgb3ZlciB0aGUgdmluZXlhcmRzIHdhcyBTaGltZWkgdGhlIFJhbWF0aGl0ZTogb3ZlciB0aGUgaW5jcmVhc2Ugb2YgdGhlIHZpbmV5YXJkcyBmb3IgdGhlIHdpbmUgY2VsbGFycyB3YXMgWmFiZGkgdGhlIFNoaXBobWl0ZToKQW5kIG92ZXIgdGhlIG9saXZlIHRyZWVzIGFuZCB0aGUgc3ljb21vcmUgdHJlZXMgdGhhdCB3ZXJlIGluIHRoZSBsb3cgcGxhaW5zIHdhcyBCYWFsaGFuYW4gdGhlIEdlZGVyaXRlOiBhbmQgb3ZlciB0aGUgY2VsbGFycyBvZiBvaWwgd2FzIEpvYXNoOgpBbmQgb3ZlciB0aGUgaGVyZHMgdGhhdCBmZWQgaW4gU2hhcm9uIHdhcyBTaGl0cmFpIHRoZSBTaGFyb25pdGU6IGFuZCBvdmVyIHRoZSBoZXJkcyB0aGF0IHdlcmUgaW4gdGhlIHZhbGxleXMgd2FzIFNoYXBoYXQgdGhlIHNvbiBvZiBBZGxhaToKT3ZlciB0aGUgY2FtZWxzIGFsc28gd2FzIE9iaWwgdGhlIElzaG1hZWxpdGU6IGFuZCBvdmVyIHRoZSBhc3NlcyB3YXMgSmVoZGVpYWggdGhlIE1lcm9ub3RoaXRlOgpBbmQgb3ZlciB0aGUgZmxvY2tzIHdhcyBKYXppeiB0aGUgSGFnZXJpdGUuIEFsbCB0aGVzZSB3ZXJlIHRoZSBydWxlcnMgb2YgdGhlIHN1YnN0YW5jZSB3aGljaCB3YXMga2luZyBEYXZpZCdzLgpBbHNvIEpvbmF0aGFuIERhdmlkJ3MgdW5jbGUgd2FzIGEgY291bnNlbGxvciwgYSB3aXNlIG1hbiwgYW5kIGEgc2NyaWJlOiBhbmQgSmVoaWVsIHRoZSBzb24gb2YgSGFjaG1vbmkgd2FzIHdpdGggdGhlIGtpbmcncyBzb25zOgpBbmQgQWhpdGhvcGhlbCB3YXMgdGhlIGtpbmcncyBjb3Vuc2VsbG9yOiBhbmQgSHVzaGFpIHRoZSBBcmNoaXRlIHdhcyB0aGUga2luZydzIGNvbXBhbmlvbjoKQW5kIGFmdGVyIEFoaXRob3BoZWwgd2FzIEplaG9pYWRhIHRoZSBzb24gb2YgQmVuYWlhaCwgYW5kIEFiaWF0aGFyOiBhbmQgdGhlIGdlbmVyYWwgb2YgdGhlIGtpbmcncyBhcm15IHdhcyBKb2FiLgpBbmQgRGF2aWQgYXNzZW1ibGVkIGFsbCB0aGUgcHJpbmNlcyBvZiBJc3JhZWwsIHRoZSBwcmluY2VzIG9mIHRoZSB0cmliZXMsIGFuZCB0aGUgY2FwdGFpbnMgb2YgdGhlIGNvbXBhbmllcyB0aGF0IG1pbmlzdGVyZWQgdG8gdGhlIGtpbmcgYnkgY291cnNlLCBhbmQgdGhlIGNhcHRhaW5zIG92ZXIgdGhlIHRob3VzYW5kcywgYW5kIGNhcHRhaW5zIG92ZXIgdGhlIGh1bmRyZWRzLCBhbmQgdGhlIHN0ZXdhcmRzIG92ZXIgYWxsIHRoZSBzdWJzdGFuY2UgYW5kIHBvc3Nlc3Npb24gb2YgdGhlIGtpbmcsIGFuZCBvZiBoaXMgc29ucywgd2l0aCB0aGUgb2ZmaWNlcnMsIGFuZCB3aXRoIHRoZSBtaWdodHkgbWVuLCBhbmQgd2l0aCBhbGwgdGhlIHZhbGlhbnQgbWVuLCB1bnRvIEplcnVzYWxlbS4KVGhlbiBEYXZpZCB0aGUga2luZyBzdG9vZCB1cCB1cG9uIGhpcyBmZWV0LCBhbmQgc2FpZCwgSGVhciBtZSwgbXkgYnJldGhyZW4sIGFuZCBteSBwZW9wbGU6IEFzIGZvciBtZSwgSSBoYWQgaW4gbWluZSBoZWFydCB0byBidWlsZCBhbiBob3VzZSBvZiByZXN0IGZvciB0aGUgYXJrIG9mIHRoZSBjb3ZlbmFudCBvZiB0aGUgTE9SRCwgYW5kIGZvciB0aGUgZm9vdHN0b29sIG9mIG91ciBHb2QsIGFuZCBoYWQgbWFkZSByZWFkeSBmb3IgdGhlIGJ1aWxkaW5nOgpCdXQgR29kIHNhaWQgdW50byBtZSwgVGhvdSBzaGFsdCBub3QgYnVpbGQgYW4gaG91c2UgZm9yIG15IG5hbWUsIGJlY2F1c2UgdGhvdSBoYXN0IGJlZW4gYSBtYW4gb2Ygd2FyLCBhbmQgaGFzdCBzaGVkIGJsb29kLgpIb3diZWl0IHRoZSBMT1JEIEdvZCBvZiBJc3JhZWwgY2hvc2UgbWUgYmVmb3JlIGFsbCB0aGUgaG91c2Ugb2YgbXkgZmF0aGVyIHRvIGJlIGtpbmcgb3ZlciBJc3JhZWwgZm9yIGV2ZXI6IGZvciBoZSBoYXRoIGNob3NlbiBKdWRhaCB0byBiZSB0aGUgcnVsZXI7IGFuZCBvZiB0aGUgaG91c2Ugb2YgSnVkYWgsIHRoZSBob3VzZSBvZiBteSBmYXRoZXI7IGFuZCBhbW9uZyB0aGUgc29ucyBvZiBteSBmYXRoZXIgaGUgbGlrZWQgbWUgdG8gbWFrZSBtZSBraW5nIG92ZXIgYWxsIElzcmFlbDoKQW5kIG9mIGFsbCBteSBzb25zLCAoZm9yIHRoZSBMT1JEIGhhdGggZ2l2ZW4gbWUgbWFueSBzb25zLCkgaGUgaGF0aCBjaG9zZW4gU29sb21vbiBteSBzb24gdG8gc2l0IHVwb24gdGhlIHRocm9uZSBvZiB0aGUga2luZ2RvbSBvZiB0aGUgTE9SRCBvdmVyIElzcmFlbC4KQW5kIGhlIHNhaWQgdW50byBtZSwgU29sb21vbiB0aHkgc29uLCBoZSBzaGFsbCBidWlsZCBteSBob3VzZSBhbmQgbXkgY291cnRzOiBmb3IgSSBoYXZlIGNob3NlbiBoaW0gdG8gYmUgbXkgc29uLCBhbmQgSSB3aWxsIGJlIGhpcyBmYXRoZXIuCk1vcmVvdmVyIEkgd2lsbCBlc3RhYmxpc2ggaGlzIGtpbmdkb20gZm9yIGV2ZXIsIGlmIGhlIGJlIGNvbnN0YW50IHRvIGRvIG15IGNvbW1hbmRtZW50cyBhbmQgbXkganVkZ21lbnRzLCBhcyBhdCB0aGlzIGRheS4KTm93IHRoZXJlZm9yZSBpbiB0aGUgc2lnaHQgb2YgYWxsIElzcmFlbCB0aGUgY29uZ3JlZ2F0aW9uIG9mIHRoZSBMT1JELCBhbmQgaW4gdGhlIGF1ZGllbmNlIG9mIG91ciBHb2QsIGtlZXAgYW5kIHNlZWsgZm9yIGFsbCB0aGUgY29tbWFuZG1lbnRzIG9mIHRoZSBMT1JEIHlvdXIgR29kOiB0aGF0IHllIG1heSBwb3NzZXNzIHRoaXMgZ29vZCBsYW5kLCBhbmQgbGVhdmUgaXQgZm9yIGFuIGluaGVyaXRhbmNlIGZvciB5b3VyIGNoaWxkcmVuIGFmdGVyIHlvdSBmb3IgZXZlci4KQW5kIHRob3UsIFNvbG9tb24gbXkgc29uLCBrbm93IHRob3UgdGhlIEdvZCBvZiB0aHkgZmF0aGVyLCBhbmQgc2VydmUgaGltIHdpdGggYSBwZXJmZWN0IGhlYXJ0IGFuZCB3aXRoIGEgd2lsbGluZyBtaW5kOiBmb3IgdGhlIExPUkQgc2VhcmNoZXRoIGFsbCBoZWFydHMsIGFuZCB1bmRlcnN0YW5kZXRoIGFsbCB0aGUgaW1hZ2luYXRpb25zIG9mIHRoZSB0aG91Z2h0czogaWYgdGhvdSBzZWVrIGhpbSwgaGUgd2lsbCBiZSBmb3VuZCBvZiB0aGVlOyBidXQgaWYgdGhvdSBmb3JzYWtlIGhpbSwgaGUgd2lsbCBjYXN0IHRoZWUgb2ZmIGZvciBldmVyLgpUYWtlIGhlZWQgbm93OyBmb3IgdGhlIExPUkQgaGF0aCBjaG9zZW4gdGhlZSB0byBidWlsZCBhbiBob3VzZSBmb3IgdGhlIHNhbmN0dWFyeTogYmUgc3Ryb25nLCBhbmQgZG8gaXQuClRoZW4gRGF2aWQgZ2F2ZSB0byBTb2xvbW9uIGhpcyBzb24gdGhlIHBhdHRlcm4gb2YgdGhlIHBvcmNoLCBhbmQgb2YgdGhlIGhvdXNlcyB0aGVyZW9mLCBhbmQgb2YgdGhlIHRyZWFzdXJpZXMgdGhlcmVvZiwgYW5kIG9mIHRoZSB1cHBlciBjaGFtYmVycyB0aGVyZW9mLCBhbmQgb2YgdGhlIGlubmVyIHBhcmxvdXJzIHRoZXJlb2YsIGFuZCBvZiB0aGUgcGxhY2Ugb2YgdGhlIG1lcmN5IHNlYXQsCkFuZCB0aGUgcGF0dGVybiBvZiBhbGwgdGhhdCBoZSBoYWQgYnkgdGhlIHNwaXJpdCwgb2YgdGhlIGNvdXJ0cyBvZiB0aGUgaG91c2Ugb2YgdGhlIExPUkQsIGFuZCBvZiBhbGwgdGhlIGNoYW1iZXJzIHJvdW5kIGFib3V0LCBvZiB0aGUgdHJlYXN1cmllcyBvZiB0aGUgaG91c2Ugb2YgR29kLCBhbmQgb2YgdGhlIHRyZWFzdXJpZXMgb2YgdGhlIGRlZGljYXRlZCB0aGluZ3M6CkFsc28gZm9yIHRoZSBjb3Vyc2VzIG9mIHRoZSBwcmllc3RzIGFuZCB0aGUgTGV2aXRlcywgYW5kIGZvciBhbGwgdGhlIHdvcmsgb2YgdGhlIHNlcnZpY2Ugb2YgdGhlIGhvdXNlIG9mIHRoZSBMT1JELCBhbmQgZm9yIGFsbCB0aGUgdmVzc2VscyBvZiBzZXJ2aWNlIGluIHRoZSBob3VzZSBvZiB0aGUgTE9SRC4KSGUgZ2F2ZSBvZiBnb2xkIGJ5IHdlaWdodCBmb3IgdGhpbmdzIG9mIGdvbGQsIGZvciBhbGwgaW5zdHJ1bWVudHMgb2YgYWxsIG1hbm5lciBvZiBzZXJ2aWNlOyBzaWx2ZXIgYWxzbyBmb3IgYWxsIGluc3RydW1lbnRzIG9mIHNpbHZlciBieSB3ZWlnaHQsIGZvciBhbGwgaW5zdHJ1bWVudHMgb2YgZXZlcnkga2luZCBvZiBzZXJ2aWNlOgpFdmVuIHRoZSB3ZWlnaHQgZm9yIHRoZSBjYW5kbGVzdGlja3Mgb2YgZ29sZCwgYW5kIGZvciB0aGVpciBsYW1wcyBvZiBnb2xkLCBieSB3ZWlnaHQgZm9yIGV2ZXJ5IGNhbmRsZXN0aWNrLCBhbmQgZm9yIHRoZSBsYW1wcyB0aGVyZW9mOiBhbmQgZm9yIHRoZSBjYW5kbGVzdGlja3Mgb2Ygc2lsdmVyIGJ5IHdlaWdodCwgYm90aCBmb3IgdGhlIGNhbmRsZXN0aWNrLCBhbmQgYWxzbyBmb3IgdGhlIGxhbXBzIHRoZXJlb2YsIGFjY29yZGluZyB0byB0aGUgdXNlIG9mIGV2ZXJ5IGNhbmRsZXN0aWNrLgpBbmQgYnkgd2VpZ2h0IGhlIGdhdmUgZ29sZCBmb3IgdGhlIHRhYmxlcyBvZiBzaGV3YnJlYWQsIGZvciBldmVyeSB0YWJsZTsgYW5kIGxpa2V3aXNlIHNpbHZlciBmb3IgdGhlIHRhYmxlcyBvZiBzaWx2ZXI6CkFsc28gcHVyZSBnb2xkIGZvciB0aGUgZmxlc2hob29rcywgYW5kIHRoZSBib3dscywgYW5kIHRoZSBjdXBzOiBhbmQgZm9yIHRoZSBnb2xkZW4gYmFzb25zIGhlIGdhdmUgZ29sZCBieSB3ZWlnaHQgZm9yIGV2ZXJ5IGJhc29uOyBhbmQgbGlrZXdpc2Ugc2lsdmVyIGJ5IHdlaWdodCBmb3IgZXZlcnkgYmFzb24gb2Ygc2lsdmVyOgpBbmQgZm9yIHRoZSBhbHRhciBvZiBpbmNlbnNlIHJlZmluZWQgZ29sZCBieSB3ZWlnaHQ7IGFuZCBnb2xkIGZvciB0aGUgcGF0dGVybiBvZiB0aGUgY2hhcmlvdCBvZiB0aGUgY2hlcnViaW1zLCB0aGF0IHNwcmVhZCBvdXQgdGhlaXIgd2luZ3MsIGFuZCBjb3ZlcmVkIHRoZSBhcmsgb2YgdGhlIGNvdmVuYW50IG9mIHRoZSBMT1JELgpBbGwgdGhpcywgc2FpZCBEYXZpZCwgdGhlIExPUkQgbWFkZSBtZSB1bmRlcnN0YW5kIGluIHdyaXRpbmcgYnkgaGlzIGhhbmQgdXBvbiBtZSwgZXZlbiBhbGwgdGhlIHdvcmtzIG9mIHRoaXMgcGF0dGVybi4KQW5kIERhdmlkIHNhaWQgdG8gU29sb21vbiBoaXMgc29uLCBCZSBzdHJvbmcgYW5kIG9mIGdvb2QgY291cmFnZSwgYW5kIGRvIGl0OiBmZWFyIG5vdCwgbm9yIGJlIGRpc21heWVkOiBmb3IgdGhlIExPUkQgR29kLCBldmVuIG15IEdvZCwgd2lsbCBiZSB3aXRoIHRoZWU7IGhlIHdpbGwgbm90IGZhaWwgdGhlZSwgbm9yIGZvcnNha2UgdGhlZSwgdW50aWwgdGhvdSBoYXN0IGZpbmlzaGVkIGFsbCB0aGUgd29yayBmb3IgdGhlIHNlcnZpY2Ugb2YgdGhlIGhvdXNlIG9mIHRoZSBMT1JELgpBbmQsIGJlaG9sZCwgdGhlIGNvdXJzZXMgb2YgdGhlIHByaWVzdHMgYW5kIHRoZSBMZXZpdGVzLCBldmVuIHRoZXkgc2hhbGwgYmUgd2l0aCB0aGVlIGZvciBhbGwgdGhlIHNlcnZpY2Ugb2YgdGhlIGhvdXNlIG9mIEdvZDogYW5kIHRoZXJlIHNoYWxsIGJlIHdpdGggdGhlZSBmb3IgYWxsIG1hbm5lciBvZiB3b3JrbWFuc2hpcCBldmVyeSB3aWxsaW5nIHNraWxmdWwgbWFuLCBmb3IgYW55IG1hbm5lciBvZiBzZXJ2aWNlOiBhbHNvIHRoZSBwcmluY2VzIGFuZCBhbGwgdGhlIHBlb3BsZSB3aWxsIGJlIHdob2xseSBhdCB0aHkgY29tbWFuZG1lbnQuCkZ1cnRoZXJtb3JlIERhdmlkIHRoZSBraW5nIHNhaWQgdW50byBhbGwgdGhlIGNvbmdyZWdhdGlvbiwgU29sb21vbiBteSBzb24sIHdob20gYWxvbmUgR29kIGhhdGggY2hvc2VuLCBpcyB5ZXQgeW91bmcgYW5kIHRlbmRlciwgYW5kIHRoZSB3b3JrIGlzIGdyZWF0OiBmb3IgdGhlIHBhbGFjZSBpcyBub3QgZm9yIG1hbiwgYnV0IGZvciB0aGUgTE9SRCBHb2QuCk5vdyBJIGhhdmUgcHJlcGFyZWQgd2l0aCBhbGwgbXkgbWlnaHQgZm9yIHRoZSBob3VzZSBvZiBteSBHb2QgdGhlIGdvbGQgZm9yIHRoaW5ncyB0byBiZSBtYWRlIG9mIGdvbGQsIGFuZCB0aGUgc2lsdmVyIGZvciB0aGluZ3Mgb2Ygc2lsdmVyLCBhbmQgdGhlIGJyYXNzIGZvciB0aGluZ3Mgb2YgYnJhc3MsIHRoZSBpcm9uIGZvciB0aGluZ3Mgb2YgaXJvbiwgYW5kIHdvb2QgZm9yIHRoaW5ncyBvZiB3b29kOyBvbnl4IHN0b25lcywgYW5kIHN0b25lcyB0byBiZSBzZXQsIGdsaXN0ZXJpbmcgc3RvbmVzLCBhbmQgb2YgZGl2ZXJzIGNvbG91cnMsIGFuZCBhbGwgbWFubmVyIG9mIHByZWNpb3VzIHN0b25lcywgYW5kIG1hcmJsZSBzdG9uZXMgaW4gYWJ1bmRhbmNlLgpNb3Jlb3ZlciwgYmVjYXVzZSBJIGhhdmUgc2V0IG15IGFmZmVjdGlvbiB0byB0aGUgaG91c2Ugb2YgbXkgR29kLCBJIGhhdmUgb2YgbWluZSBvd24gcHJvcGVyIGdvb2QsIG9mIGdvbGQgYW5kIHNpbHZlciwgd2hpY2ggSSBoYXZlIGdpdmVuIHRvIHRoZSBob3VzZSBvZiBteSBHb2QsIG92ZXIgYW5kIGFib3ZlIGFsbCB0aGF0IEkgaGF2ZSBwcmVwYXJlZCBmb3IgdGhlIGhvbHkgaG91c2UuCkV2ZW4gdGhyZWUgdGhvdXNhbmQgdGFsZW50cyBvZiBnb2xkLCBvZiB0aGUgZ29sZCBvZiBPcGhpciwgYW5kIHNldmVuIHRob3VzYW5kIHRhbGVudHMgb2YgcmVmaW5lZCBzaWx2ZXIsIHRvIG92ZXJsYXkgdGhlIHdhbGxzIG9mIHRoZSBob3VzZXMgd2l0aGFsOgpUaGUgZ29sZCBmb3IgdGhpbmdzIG9mIGdvbGQsIGFuZCB0aGUgc2lsdmVyIGZvciB0aGluZ3Mgb2Ygc2lsdmVyLCBhbmQgZm9yIGFsbCBtYW5uZXIgb2Ygd29yayB0byBiZSBtYWRlIGJ5IHRoZSBoYW5kcyBvZiBhcnRpZmljZXJzLiBBbmQgd2hvIHRoZW4gaXMgd2lsbGluZyB0byBjb25zZWNyYXRlIGhpcyBzZXJ2aWNlIHRoaXMgZGF5IHVudG8gdGhlIExPUkQ/ClRoZW4gdGhlIGNoaWVmIG9mIHRoZSBmYXRoZXJzIGFuZCBwcmluY2VzIG9mIHRoZSB0cmliZXMgb2YgSXNyYWVsIGFuZCB0aGUgY2FwdGFpbnMgb2YgdGhvdXNhbmRzIGFuZCBvZiBodW5kcmVkcywgd2l0aCB0aGUgcnVsZXJzIG9mIHRoZSBraW5nJ3Mgd29yaywgb2ZmZXJlZCB3aWxsaW5nbHksCkFuZCBnYXZlIGZvciB0aGUgc2VydmljZSBvZiB0aGUgaG91c2Ugb2YgR29kIG9mIGdvbGQgZml2ZSB0aG91c2FuZCB0YWxlbnRzIGFuZCB0ZW4gdGhvdXNhbmQgZHJhbXMsIGFuZCBvZiBzaWx2ZXIgdGVuIHRob3VzYW5kIHRhbGVudHMsIGFuZCBvZiBicmFzcyBlaWdodGVlbiB0aG91c2FuZCB0YWxlbnRzLCBhbmQgb25lIGh1bmRyZWQgdGhvdXNhbmQgdGFsZW50cyBvZiBpcm9uLgpBbmQgdGhleSB3aXRoIHdob20gcHJlY2lvdXMgc3RvbmVzIHdlcmUgZm91bmQgZ2F2ZSB0aGVtIHRvIHRoZSB0cmVhc3VyZSBvZiB0aGUgaG91c2Ugb2YgdGhlIExPUkQsIGJ5IHRoZSBoYW5kIG9mIEplaGllbCB0aGUgR2Vyc2hvbml0ZS4KVGhlbiB0aGUgcGVvcGxlIHJlam9pY2VkLCBmb3IgdGhhdCB0aGV5IG9mZmVyZWQgd2lsbGluZ2x5LCBiZWNhdXNlIHdpdGggcGVyZmVjdCBoZWFydCB0aGV5IG9mZmVyZWQgd2lsbGluZ2x5IHRvIHRoZSBMT1JEOiBhbmQgRGF2aWQgdGhlIGtpbmcgYWxzbyByZWpvaWNlZCB3aXRoIGdyZWF0IGpveS4KV2hlcmVmb3JlIERhdmlkIGJsZXNzZWQgdGhlIExPUkQgYmVmb3JlIGFsbCB0aGUgY29uZ3JlZ2F0aW9uOiBhbmQgRGF2aWQgc2FpZCwgQmxlc3NlZCBiZSB0aG91LCBMT1JEIEdvZCBvZiBJc3JhZWwgb3VyIGZhdGhlciwgZm9yIGV2ZXIgYW5kIGV2ZXIuClRoaW5lLCBPIExPUkQgaXMgdGhlIGdyZWF0bmVzcywgYW5kIHRoZSBwb3dlciwgYW5kIHRoZSBnbG9yeSwgYW5kIHRoZSB2aWN0b3J5LCBhbmQgdGhlIG1hamVzdHk6IGZvciBhbGwgdGhhdCBpcyBpbiB0aGUgaGVhdmVuIGFuZCBpbiB0aGUgZWFydGggaXMgdGhpbmU7IHRoaW5lIGlzIHRoZSBraW5nZG9tLCBPIExPUkQsIGFuZCB0aG91IGFydCBleGFsdGVkIGFzIGhlYWQgYWJvdmUgYWxsLgpCb3RoIHJpY2hlcyBhbmQgaG9ub3VyIGNvbWUgb2YgdGhlZSwgYW5kIHRob3UgcmVpZ25lc3Qgb3ZlciBhbGw7IGFuZCBpbiB0aGluZSBoYW5kIGlzIHBvd2VyIGFuZCBtaWdodDsgYW5kIGluIHRoaW5lIGhhbmQgaXQgaXMgdG8gbWFrZSBncmVhdCwgYW5kIHRvIGdpdmUgc3RyZW5ndGggdW50byBhbGwuCk5vdyB0aGVyZWZvcmUsIG91ciBHb2QsIHdlIHRoYW5rIHRoZWUsIGFuZCBwcmFpc2UgdGh5IGdsb3Jpb3VzIG5hbWUuCkJ1dCB3aG8gYW0gSSwgYW5kIHdoYXQgaXMgbXkgcGVvcGxlLCB0aGF0IHdlIHNob3VsZCBiZSBhYmxlIHRvIG9mZmVyIHNvIHdpbGxpbmdseSBhZnRlciB0aGlzIHNvcnQ/IGZvciBhbGwgdGhpbmdzIGNvbWUgb2YgdGhlZSwgYW5kIG9mIHRoaW5lIG93biBoYXZlIHdlIGdpdmVuIHRoZWUuCkZvciB3ZSBhcmUgc3RyYW5nZXJzIGJlZm9yZSB0aGVlLCBhbmQgc29qb3VybmVycywgYXMgd2VyZSBhbGwgb3VyIGZhdGhlcnM6IG91ciBkYXlzIG9uIHRoZSBlYXJ0aCBhcmUgYXMgYSBzaGFkb3csIGFuZCB0aGVyZSBpcyBub25lIGFiaWRpbmcuCk8gTE9SRCBvdXIgR29kLCBhbGwgdGhpcyBzdG9yZSB0aGF0IHdlIGhhdmUgcHJlcGFyZWQgdG8gYnVpbGQgdGhlZSBhbiBob3VzZSBmb3IgdGhpbmUgaG9seSBuYW1lIGNvbWV0aCBvZiB0aGluZSBoYW5kLCBhbmQgaXMgYWxsIHRoaW5lIG93bi4KSSBrbm93IGFsc28sIG15IEdvZCwgdGhhdCB0aG91IHRyaWVzdCB0aGUgaGVhcnQsIGFuZCBoYXN0IHBsZWFzdXJlIGluIHVwcmlnaHRuZXNzLiBBcyBmb3IgbWUsIGluIHRoZSB1cHJpZ2h0bmVzcyBvZiBtaW5lIGhlYXJ0IEkgaGF2ZSB3aWxsaW5nbHkgb2ZmZXJlZCBhbGwgdGhlc2UgdGhpbmdzOiBhbmQgbm93IGhhdmUgSSBzZWVuIHdpdGggam95IHRoeSBwZW9wbGUsIHdoaWNoIGFyZSBwcmVzZW50IGhlcmUsIHRvIG9mZmVyIHdpbGxpbmdseSB1bnRvIHRoZWUuCk8gTE9SRCBHb2Qgb2YgQWJyYWhhbSwgSXNhYWMsIGFuZCBvZiBJc3JhZWwsIG91ciBmYXRoZXJzLCBrZWVwIHRoaXMgZm9yIGV2ZXIgaW4gdGhlIGltYWdpbmF0aW9uIG9mIHRoZSB0aG91Z2h0cyBvZiB0aGUgaGVhcnQgb2YgdGh5IHBlb3BsZSwgYW5kIHByZXBhcmUgdGhlaXIgaGVhcnQgdW50byB0aGVlOgpBbmQgZ2l2ZSB1bnRvIFNvbG9tb24gbXkgc29uIGEgcGVyZmVjdCBoZWFydCwgdG8ga2VlcCB0aHkgY29tbWFuZG1lbnRzLCB0aHkgdGVzdGltb25pZXMsIGFuZCB0aHkgc3RhdHV0ZXMsIGFuZCB0byBkbyBhbGwgdGhlc2UgdGhpbmdzLCBhbmQgdG8gYnVpbGQgdGhlIHBhbGFjZSwgZm9yIHRoZSB3aGljaCBJIGhhdmUgbWFkZSBwcm92aXNpb24uCkFuZCBEYXZpZCBzYWlkIHRvIGFsbCB0aGUgY29uZ3JlZ2F0aW9uLCBOb3cgYmxlc3MgdGhlIExPUkQgeW91ciBHb2QuIEFuZCBhbGwgdGhlIGNvbmdyZWdhdGlvbiBibGVzc2VkIHRoZSBMT1JEIEdvZCBvZiB0aGVpciBmYXRoZXJzLCBhbmQgYm93ZWQgZG93biB0aGVpciBoZWFkcywgYW5kIHdvcnNoaXBwZWQgdGhlIExPUkQsIGFuZCB0aGUga2luZy4KQW5kIHRoZXkgc2FjcmlmaWNlZCBzYWNyaWZpY2VzIHVudG8gdGhlIExPUkQsIGFuZCBvZmZlcmVkIGJ1cm50IG9mZmVyaW5ncyB1bnRvIHRoZSBMT1JELCBvbiB0aGUgbW9ycm93IGFmdGVyIHRoYXQgZGF5LCBldmVuIGEgdGhvdXNhbmQgYnVsbG9ja3MsIGEgdGhvdXNhbmQgcmFtcywgYW5kIGEgdGhvdXNhbmQgbGFtYnMsIHdpdGggdGhlaXIgZHJpbmsgb2ZmZXJpbmdzLCBhbmQgc2FjcmlmaWNlcyBpbiBhYnVuZGFuY2UgZm9yIGFsbCBJc3JhZWw6CkFuZCBkaWQgZWF0IGFuZCBkcmluayBiZWZvcmUgdGhlIExPUkQgb24gdGhhdCBkYXkgd2l0aCBncmVhdCBnbGFkbmVzcy4gQW5kIHRoZXkgbWFkZSBTb2xvbW9uIHRoZSBzb24gb2YgRGF2aWQga2luZyB0aGUgc2Vjb25kIHRpbWUsIGFuZCBhbm9pbnRlZCBoaW0gdW50byB0aGUgTE9SRCB0byBiZSB0aGUgY2hpZWYgZ292ZXJub3IsIGFuZCBaYWRvayB0byBiZSBwcmllc3QuClRoZW4gU29sb21vbiBzYXQgb24gdGhlIHRocm9uZSBvZiB0aGUgTE9SRCBhcyBraW5nIGluc3RlYWQgb2YgRGF2aWQgaGlzIGZhdGhlciwgYW5kIHByb3NwZXJlZDsgYW5kIGFsbCBJc3JhZWwgb2JleWVkIGhpbS4KQW5kIGFsbCB0aGUgcHJpbmNlcywgYW5kIHRoZSBtaWdodHkgbWVuLCBhbmQgYWxsIHRoZSBzb25zIGxpa2V3aXNlIG9mIGtpbmcgRGF2aWQsIHN1Ym1pdHRlZCB0aGVtc2VsdmVzIHVudG8gU29sb21vbiB0aGUga2luZy4KQW5kIHRoZSBMT1JEIG1hZ25pZmllZCBTb2xvbW9uIGV4Y2VlZGluZ2x5IGluIHRoZSBzaWdodCBvZiBhbGwgSXNyYWVsLCBhbmQgYmVzdG93ZWQgdXBvbiBoaW0gc3VjaCByb3lhbCBtYWplc3R5IGFzIGhhZCBub3QgYmVlbiBvbiBhbnkga2luZyBiZWZvcmUgaGltIGluIElzcmFlbC4KVGh1cyBEYXZpZCB0aGUgc29uIG9mIEplc3NlIHJlaWduZWQgb3ZlciBhbGwgSXNyYWVsLgpBbmQgdGhlIHRpbWUgdGhhdCBoZSByZWlnbmVkIG92ZXIgSXNyYWVsIHdhcyBmb3J0eSB5ZWFyczsgc2V2ZW4geWVhcnMgcmVpZ25lZCBoZSBpbiBIZWJyb24sIGFuZCB0aGlydHkgYW5kIHRocmVlIHllYXJzIHJlaWduZWQgaGUgaW4gSmVydXNhbGVtLgpBbmQgaGUgZGllZCBpbiBhIGdvb2Qgb2xkIGFnZSwgZnVsbCBvZiBkYXlzLCByaWNoZXMsIGFuZCBob25vdXI6IGFuZCBTb2xvbW9uIGhpcyBzb24gcmVpZ25lZCBpbiBoaXMgc3RlYWQuCk5vdyB0aGUgYWN0cyBvZiBEYXZpZCB0aGUga2luZywgZmlyc3QgYW5kIGxhc3QsIGJlaG9sZCwgdGhleSBhcmUgd3JpdHRlbiBpbiB0aGUgYm9vayBvZiBTYW11ZWwgdGhlIHNlZXIsIGFuZCBpbiB0aGUgYm9vayBvZiBOYXRoYW4gdGhlIHByb3BoZXQsIGFuZCBpbiB0aGUgYm9vayBvZiBHYWQgdGhlIHNlZXIsCldpdGggYWxsIGhpcyByZWlnbiBhbmQgaGlzIG1pZ2h0LCBhbmQgdGhlIHRpbWVzIHRoYXQgd2VudCBvdmVyIGhpbSwgYW5kIG92ZXIgSXNyYWVsLCBhbmQgb3ZlciBhbGwgdGhlIGtpbmdkb21zIG9mIHRoZSBjb3VudHJpZXMuCkFuZCBTb2xvbW9uIHRoZSBzb24gb2YgRGF2aWQgd2FzIHN0cmVuZ3RoZW5lZCBpbiBoaXMga2luZ2RvbSwgYW5kIHRoZSBMT1JEIGhpcyBHb2Qgd2FzIHdpdGggaGltLCBhbmQgbWFnbmlmaWVkIGhpbSBleGNlZWRpbmdseS4KVGhlbiBTb2xvbW9uIHNwYWtlIHVudG8gYWxsIElzcmFlbCwgdG8gdGhlIGNhcHRhaW5zIG9mIHRob3VzYW5kcyBhbmQgb2YgaHVuZHJlZHMsIGFuZCB0byB0aGUganVkZ2VzLCBhbmQgdG8gZXZlcnkgZ292ZXJub3IgaW4gYWxsIElzcmFlbCwgdGhlIGNoaWVmIG9mIHRoZSBmYXRoZXJzLgpTbyBTb2xvbW9uLCBhbmQgYWxsIHRoZSBjb25ncmVnYXRpb24gd2l0aCBoaW0sIHdlbnQgdG8gdGhlIGhpZ2ggcGxhY2UgdGhhdCB3YXMgYXQgR2liZW9uOyBmb3IgdGhlcmUgd2FzIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBjb25ncmVnYXRpb24gb2YgR29kLCB3aGljaCBNb3NlcyB0aGUgc2VydmFudCBvZiB0aGUgTE9SRCBoYWQgbWFkZSBpbiB0aGUgd2lsZGVybmVzcy4KQnV0IHRoZSBhcmsgb2YgR29kIGhhZCBEYXZpZCBicm91Z2h0IHVwIGZyb20gS2lyamF0aGplYXJpbSB0byB0aGUgcGxhY2Ugd2hpY2ggRGF2aWQgaGFkIHByZXBhcmVkIGZvciBpdDogZm9yIGhlIGhhZCBwaXRjaGVkIGEgdGVudCBmb3IgaXQgYXQgSmVydXNhbGVtLgpNb3Jlb3ZlciB0aGUgYnJhc2VuIGFsdGFyLCB0aGF0IEJlemFsZWVsIHRoZSBzb24gb2YgVXJpLCB0aGUgc29uIG9mIEh1ciwgaGFkIG1hZGUsIGhlIHB1dCBiZWZvcmUgdGhlIHRhYmVybmFjbGUgb2YgdGhlIExPUkQ6IGFuZCBTb2xvbW9uIGFuZCB0aGUgY29uZ3JlZ2F0aW9uIHNvdWdodCB1bnRvIGl0LgpBbmQgU29sb21vbiB3ZW50IHVwIHRoaXRoZXIgdG8gdGhlIGJyYXNlbiBhbHRhciBiZWZvcmUgdGhlIExPUkQsIHdoaWNoIHdhcyBhdCB0aGUgdGFiZXJuYWNsZSBvZiB0aGUgY29uZ3JlZ2F0aW9uLCBhbmQgb2ZmZXJlZCBhIHRob3VzYW5kIGJ1cm50IG9mZmVyaW5ncyB1cG9uIGl0LgpJbiB0aGF0IG5pZ2h0IGRpZCBHb2QgYXBwZWFyIHVudG8gU29sb21vbiwgYW5kIHNhaWQgdW50byBoaW0sIEFzayB3aGF0IEkgc2hhbGwgZ2l2ZSB0aGVlLgpBbmQgU29sb21vbiBzYWlkIHVudG8gR29kLCBUaG91IGhhc3Qgc2hld2VkIGdyZWF0IG1lcmN5IHVudG8gRGF2aWQgbXkgZmF0aGVyLCBhbmQgaGFzdCBtYWRlIG1lIHRvIHJlaWduIGluIGhpcyBzdGVhZC4KTm93LCBPIExPUkQgR29kLCBsZXQgdGh5IHByb21pc2UgdW50byBEYXZpZCBteSBmYXRoZXIgYmUgZXN0YWJsaXNoZWQ6IGZvciB0aG91IGhhc3QgbWFkZSBtZSBraW5nIG92ZXIgYSBwZW9wbGUgbGlrZSB0aGUgZHVzdCBvZiB0aGUgZWFydGggaW4gbXVsdGl0dWRlLgpHaXZlIG1lIG5vdyB3aXNkb20gYW5kIGtub3dsZWRnZSwgdGhhdCBJIG1heSBnbyBvdXQgYW5kIGNvbWUgaW4gYmVmb3JlIHRoaXMgcGVvcGxlOiBmb3Igd2hvIGNhbiBqdWRnZSB0aGlzIHRoeSBwZW9wbGUsIHRoYXQgaXMgc28gZ3JlYXQ/CkFuZCBHb2Qgc2FpZCB0byBTb2xvbW9uLCBCZWNhdXNlIHRoaXMgd2FzIGluIHRoaW5lIGhlYXJ0LCBhbmQgdGhvdSBoYXN0IG5vdCBhc2tlZCByaWNoZXMsIHdlYWx0aCwgb3IgaG9ub3VyLCBub3IgdGhlIGxpZmUgb2YgdGhpbmUgZW5lbWllcywgbmVpdGhlciB5ZXQgaGFzdCBhc2tlZCBsb25nIGxpZmU7IGJ1dCBoYXN0IGFza2VkIHdpc2RvbSBhbmQga25vd2xlZGdlIGZvciB0aHlzZWxmLCB0aGF0IHRob3UgbWF5ZXN0IGp1ZGdlIG15IHBlb3BsZSwgb3ZlciB3aG9tIEkgaGF2ZSBtYWRlIHRoZWUga2luZzoKV2lzZG9tIGFuZCBrbm93bGVkZ2UgaXMgZ3JhbnRlZCB1bnRvIHRoZWU7IGFuZCBJIHdpbGwgZ2l2ZSB0aGVlIHJpY2hlcywgYW5kIHdlYWx0aCwgYW5kIGhvbm91ciwgc3VjaCBhcyBub25lIG9mIHRoZSBraW5ncyBoYXZlIGhhZCB0aGF0IGhhdmUgYmVlbiBiZWZvcmUgdGhlZSwgbmVpdGhlciBzaGFsbCB0aGVyZSBhbnkgYWZ0ZXIgdGhlZSBoYXZlIHRoZSBsaWtlLgpUaGVuIFNvbG9tb24gY2FtZSBmcm9tIGhpcyBqb3VybmV5IHRvIHRoZSBoaWdoIHBsYWNlIHRoYXQgd2FzIGF0IEdpYmVvbiB0byBKZXJ1c2FsZW0sIGZyb20gYmVmb3JlIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBjb25ncmVnYXRpb24sIGFuZCByZWlnbmVkIG92ZXIgSXNyYWVsLgpBbmQgU29sb21vbiBnYXRoZXJlZCBjaGFyaW90cyBhbmQgaG9yc2VtZW46IGFuZCBoZSBoYWQgYSB0aG91c2FuZCBhbmQgZm91ciBodW5kcmVkIGNoYXJpb3RzLCBhbmQgdHdlbHZlIHRob3VzYW5kIGhvcnNlbWVuLCB3aGljaCBoZSBwbGFjZWQgaW4gdGhlIGNoYXJpb3QgY2l0aWVzLCBhbmQgd2l0aCB0aGUga2luZyBhdCBKZXJ1c2FsZW0uCkFuZCB0aGUga2luZyBtYWRlIHNpbHZlciBhbmQgZ29sZCBhdCBKZXJ1c2FsZW0gYXMgcGxlbnRlb3VzIGFzIHN0b25lcywgYW5kIGNlZGFyIHRyZWVzIG1hZGUgaGUgYXMgdGhlIHN5Y29tb3JlIHRyZWVzIHRoYXQgYXJlIGluIHRoZSB2YWxlIGZvciBhYnVuZGFuY2UuCkFuZCBTb2xvbW9uIGhhZCBob3JzZXMgYnJvdWdodCBvdXQgb2YgRWd5cHQsIGFuZCBsaW5lbiB5YXJuOiB0aGUga2luZydzIG1lcmNoYW50cyByZWNlaXZlZCB0aGUgbGluZW4geWFybiBhdCBhIHByaWNlLgpBbmQgdGhleSBmZXRjaGVkIHVwLCBhbmQgYnJvdWdodCBmb3J0aCBvdXQgb2YgRWd5cHQgYSBjaGFyaW90IGZvciBzaXggaHVuZHJlZCBzaGVrZWxzIG9mIHNpbHZlciwgYW5kIGFuIGhvcnNlIGZvciBhbiBodW5kcmVkIGFuZCBmaWZ0eTogYW5kIHNvIGJyb3VnaHQgdGhleSBvdXQgaG9yc2VzIGZvciBhbGwgdGhlIGtpbmdzIG9mIHRoZSBIaXR0aXRlcywgYW5kIGZvciB0aGUga2luZ3Mgb2YgU3lyaWEsIGJ5IHRoZWlyIG1lYW5zLgpBbmQgU29sb21vbiBkZXRlcm1pbmVkIHRvIGJ1aWxkIGFuIGhvdXNlIGZvciB0aGUgbmFtZSBvZiB0aGUgTE9SRCwgYW5kIGFuIGhvdXNlIGZvciBoaXMga2luZ2RvbS4KQW5kIFNvbG9tb24gdG9sZCBvdXQgdGhyZWVzY29yZSBhbmQgdGVuIHRob3VzYW5kIG1lbiB0byBiZWFyIGJ1cmRlbnMsIGFuZCBmb3Vyc2NvcmUgdGhvdXNhbmQgdG8gaGV3IGluIHRoZSBtb3VudGFpbiwgYW5kIHRocmVlIHRob3VzYW5kIGFuZCBzaXggaHVuZHJlZCB0byBvdmVyc2VlIHRoZW0uCkFuZCBTb2xvbW9uIHNlbnQgdG8gSHVyYW0gdGhlIGtpbmcgb2YgVHlyZSwgc2F5aW5nLCBBcyB0aG91IGRpZHN0IGRlYWwgd2l0aCBEYXZpZCBteSBmYXRoZXIsIGFuZCBkaWRzdCBzZW5kIGhpbSBjZWRhcnMgdG8gYnVpbGQgaGltIGFuIGhvdXNlIHRvIGR3ZWxsIHRoZXJlaW4sIGV2ZW4gc28gZGVhbCB3aXRoIG1lLgpCZWhvbGQsIEkgYnVpbGQgYW4gaG91c2UgdG8gdGhlIG5hbWUgb2YgdGhlIExPUkQgbXkgR29kLCB0byBkZWRpY2F0ZSBpdCB0byBoaW0sIGFuZCB0byBidXJuIGJlZm9yZSBoaW0gc3dlZXQgaW5jZW5zZSwgYW5kIGZvciB0aGUgY29udGludWFsIHNoZXdicmVhZCwgYW5kIGZvciB0aGUgYnVybnQgb2ZmZXJpbmdzIG1vcm5pbmcgYW5kIGV2ZW5pbmcsIG9uIHRoZSBzYWJiYXRocywgYW5kIG9uIHRoZSBuZXcgbW9vbnMsIGFuZCBvbiB0aGUgc29sZW1uIGZlYXN0cyBvZiB0aGUgTE9SRCBvdXIgR29kLiBUaGlzIGlzIGFuIG9yZGluYW5jZSBmb3IgZXZlciB0byBJc3JhZWwuCkFuZCB0aGUgaG91c2Ugd2hpY2ggSSBidWlsZCBpcyBncmVhdDogZm9yIGdyZWF0IGlzIG91ciBHb2QgYWJvdmUgYWxsIGdvZHMuCkJ1dCB3aG8gaXMgYWJsZSB0byBidWlsZCBoaW0gYW4gaG91c2UsIHNlZWluZyB0aGUgaGVhdmVuIGFuZCBoZWF2ZW4gb2YgaGVhdmVucyBjYW5ub3QgY29udGFpbiBoaW0/IHdobyBhbSBJIHRoZW4sIHRoYXQgSSBzaG91bGQgYnVpbGQgaGltIGFuIGhvdXNlLCBzYXZlIG9ubHkgdG8gYnVybiBzYWNyaWZpY2UgYmVmb3JlIGhpbT8KU2VuZCBtZSBub3cgdGhlcmVmb3JlIGEgbWFuIGN1bm5pbmcgdG8gd29yayBpbiBnb2xkLCBhbmQgaW4gc2lsdmVyLCBhbmQgaW4gYnJhc3MsIGFuZCBpbiBpcm9uLCBhbmQgaW4gcHVycGxlLCBhbmQgY3JpbXNvbiwgYW5kIGJsdWUsIGFuZCB0aGF0IGNhbiBza2lsbCB0byBncmF2ZSB3aXRoIHRoZSBjdW5uaW5nIG1lbiB0aGF0IGFyZSB3aXRoIG1lIGluIEp1ZGFoIGFuZCBpbiBKZXJ1c2FsZW0sIHdob20gRGF2aWQgbXkgZmF0aGVyIGRpZCBwcm92aWRlLgpTZW5kIG1lIGFsc28gY2VkYXIgdHJlZXMsIGZpciB0cmVlcywgYW5kIGFsZ3VtIHRyZWVzLCBvdXQgb2YgTGViYW5vbjogZm9yIEkga25vdyB0aGF0IHRoeSBzZXJ2YW50cyBjYW4gc2tpbGwgdG8gY3V0IHRpbWJlciBpbiBMZWJhbm9uOyBhbmQsIGJlaG9sZCwgbXkgc2VydmFudHMgc2hhbGwgYmUgd2l0aCB0aHkgc2VydmFudHMsCkV2ZW4gdG8gcHJlcGFyZSBtZSB0aW1iZXIgaW4gYWJ1bmRhbmNlOiBmb3IgdGhlIGhvdXNlIHdoaWNoIEkgYW0gYWJvdXQgdG8gYnVpbGQgc2hhbGwgYmUgd29uZGVyZnVsIGdyZWF0LgpBbmQsIGJlaG9sZCwgSSB3aWxsIGdpdmUgdG8gdGh5IHNlcnZhbnRzLCB0aGUgaGV3ZXJzIHRoYXQgY3V0IHRpbWJlciwgdHdlbnR5IHRob3VzYW5kIG1lYXN1cmVzIG9mIGJlYXRlbiB3aGVhdCwgYW5kIHR3ZW50eSB0aG91c2FuZCBtZWFzdXJlcyBvZiBiYXJsZXksIGFuZCB0d2VudHkgdGhvdXNhbmQgYmF0aHMgb2Ygd2luZSwgYW5kIHR3ZW50eSB0aG91c2FuZCBiYXRocyBvZiBvaWwuClRoZW4gSHVyYW0gdGhlIGtpbmcgb2YgVHlyZSBhbnN3ZXJlZCBpbiB3cml0aW5nLCB3aGljaCBoZSBzZW50IHRvIFNvbG9tb24sIEJlY2F1c2UgdGhlIExPUkQgaGF0aCBsb3ZlZCBoaXMgcGVvcGxlLCBoZSBoYXRoIG1hZGUgdGhlZSBraW5nIG92ZXIgdGhlbS4KSHVyYW0gc2FpZCBtb3Jlb3ZlciwgQmxlc3NlZCBiZSB0aGUgTE9SRCBHb2Qgb2YgSXNyYWVsLCB0aGF0IG1hZGUgaGVhdmVuIGFuZCBlYXJ0aCwgd2hvIGhhdGggZ2l2ZW4gdG8gRGF2aWQgdGhlIGtpbmcgYSB3aXNlIHNvbiwgZW5kdWVkIHdpdGggcHJ1ZGVuY2UgYW5kIHVuZGVyc3RhbmRpbmcsIHRoYXQgbWlnaHQgYnVpbGQgYW4gaG91c2UgZm9yIHRoZSBMT1JELCBhbmQgYW4gaG91c2UgZm9yIGhpcyBraW5nZG9tLgpBbmQgbm93IEkgaGF2ZSBzZW50IGEgY3VubmluZyBtYW4sIGVuZHVlZCB3aXRoIHVuZGVyc3RhbmRpbmcsIG9mIEh1cmFtIG15IGZhdGhlcidzLApUaGUgc29uIG9mIGEgd29tYW4gb2YgdGhlIGRhdWdodGVycyBvZiBEYW4sIGFuZCBoaXMgZmF0aGVyIHdhcyBhIG1hbiBvZiBUeXJlLCBza2lsZnVsIHRvIHdvcmsgaW4gZ29sZCwgYW5kIGluIHNpbHZlciwgaW4gYnJhc3MsIGluIGlyb24sIGluIHN0b25lLCBhbmQgaW4gdGltYmVyLCBpbiBwdXJwbGUsIGluIGJsdWUsIGFuZCBpbiBmaW5lIGxpbmVuLCBhbmQgaW4gY3JpbXNvbjsgYWxzbyB0byBncmF2ZSBhbnkgbWFubmVyIG9mIGdyYXZpbmcsIGFuZCB0byBmaW5kIG91dCBldmVyeSBkZXZpY2Ugd2hpY2ggc2hhbGwgYmUgcHV0IHRvIGhpbSwgd2l0aCB0aHkgY3VubmluZyBtZW4sIGFuZCB3aXRoIHRoZSBjdW5uaW5nIG1lbiBvZiBteSBsb3JkIERhdmlkIHRoeSBmYXRoZXIuCk5vdyB0aGVyZWZvcmUgdGhlIHdoZWF0LCBhbmQgdGhlIGJhcmxleSwgdGhlIG9pbCwgYW5kIHRoZSB3aW5lLCB3aGljaCBteSBsb3JkIGhhdGggc3Bva2VuIG9mLCBsZXQgaGltIHNlbmQgdW50byBoaXMgc2VydmFudHM6CkFuZCB3ZSB3aWxsIGN1dCB3b29kIG91dCBvZiBMZWJhbm9uLCBhcyBtdWNoIGFzIHRob3Ugc2hhbHQgbmVlZDogYW5kIHdlIHdpbGwgYnJpbmcgaXQgdG8gdGhlZSBpbiBmbG9hdHMgYnkgc2VhIHRvIEpvcHBhOyBhbmQgdGhvdSBzaGFsdCBjYXJyeSBpdCB1cCB0byBKZXJ1c2FsZW0uCkFuZCBTb2xvbW9uIG51bWJlcmVkIGFsbCB0aGUgc3RyYW5nZXJzIHRoYXQgd2VyZSBpbiB0aGUgbGFuZCBvZiBJc3JhZWwsIGFmdGVyIHRoZSBudW1iZXJpbmcgd2hlcmV3aXRoIERhdmlkIGhpcyBmYXRoZXIgaGFkIG51bWJlcmVkIHRoZW07IGFuZCB0aGV5IHdlcmUgZm91bmQgYW4gaHVuZHJlZCBhbmQgZmlmdHkgdGhvdXNhbmQgYW5kIHRocmVlIHRob3VzYW5kIGFuZCBzaXggaHVuZHJlZC4KQW5kIGhlIHNldCB0aHJlZXNjb3JlIGFuZCB0ZW4gdGhvdXNhbmQgb2YgdGhlbSB0byBiZSBiZWFyZXJzIG9mIGJ1cmRlbnMsIGFuZCBmb3Vyc2NvcmUgdGhvdXNhbmQgdG8gYmUgaGV3ZXJzIGluIHRoZSBtb3VudGFpbiwgYW5kIHRocmVlIHRob3VzYW5kIGFuZCBzaXggaHVuZHJlZCBvdmVyc2VlcnMgdG8gc2V0IHRoZSBwZW9wbGUgYSB3b3JrLgpUaGVuIFNvbG9tb24gYmVnYW4gdG8gYnVpbGQgdGhlIGhvdXNlIG9mIHRoZSBMT1JEIGF0IEplcnVzYWxlbSBpbiBtb3VudCBNb3JpYWgsIHdoZXJlIHRoZSBMb3JkIGFwcGVhcmVkIHVudG8gRGF2aWQgaGlzIGZhdGhlciwgaW4gdGhlIHBsYWNlIHRoYXQgRGF2aWQgaGFkIHByZXBhcmVkIGluIHRoZSB0aHJlc2hpbmdmbG9vciBvZiBPcm5hbiB0aGUgSmVidXNpdGUuCkFuZCBoZSBiZWdhbiB0byBidWlsZCBpbiB0aGUgc2Vjb25kIGRheSBvZiB0aGUgc2Vjb25kIG1vbnRoLCBpbiB0aGUgZm91cnRoIHllYXIgb2YgaGlzIHJlaWduLgpOb3cgdGhlc2UgYXJlIHRoZSB0aGluZ3Mgd2hlcmVpbiBTb2xvbW9uIHdhcyBpbnN0cnVjdGVkIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIGhvdXNlIG9mIEdvZC4gVGhlIGxlbmd0aCBieSBjdWJpdHMgYWZ0ZXIgdGhlIGZpcnN0IG1lYXN1cmUgd2FzIHRocmVlc2NvcmUgY3ViaXRzLCBhbmQgdGhlIGJyZWFkdGggdHdlbnR5IGN1Yml0cy4KQW5kIHRoZSBwb3JjaCB0aGF0IHdhcyBpbiB0aGUgZnJvbnQgb2YgdGhlIGhvdXNlLCB0aGUgbGVuZ3RoIG9mIGl0IHdhcyBhY2NvcmRpbmcgdG8gdGhlIGJyZWFkdGggb2YgdGhlIGhvdXNlLCB0d2VudHkgY3ViaXRzLCBhbmQgdGhlIGhlaWdodCB3YXMgYW4gaHVuZHJlZCBhbmQgdHdlbnR5OiBhbmQgaGUgb3ZlcmxhaWQgaXQgd2l0aGluIHdpdGggcHVyZSBnb2xkLgpBbmQgdGhlIGdyZWF0ZXIgaG91c2UgaGUgY2llbGVkIHdpdGggZmlyIHRyZWUsIHdoaWNoIGhlIG92ZXJsYWlkIHdpdGggZmluZSBnb2xkLCBhbmQgc2V0IHRoZXJlb24gcGFsbSB0cmVlcyBhbmQgY2hhaW5zLgpBbmQgaGUgZ2FybmlzaGVkIHRoZSBob3VzZSB3aXRoIHByZWNpb3VzIHN0b25lcyBmb3IgYmVhdXR5OiBhbmQgdGhlIGdvbGQgd2FzIGdvbGQgb2YgUGFydmFpbS4KSGUgb3ZlcmxhaWQgYWxzbyB0aGUgaG91c2UsIHRoZSBiZWFtcywgdGhlIHBvc3RzLCBhbmQgdGhlIHdhbGxzIHRoZXJlb2YsIGFuZCB0aGUgZG9vcnMgdGhlcmVvZiwgd2l0aCBnb2xkOyBhbmQgZ3JhdmVkIGNoZXJ1YmltcyBvbiB0aGUgd2FsbHMuCkFuZCBoZSBtYWRlIHRoZSBtb3N0IGhvbHkgaG91c2UsIHRoZSBsZW5ndGggd2hlcmVvZiB3YXMgYWNjb3JkaW5nIHRvIHRoZSBicmVhZHRoIG9mIHRoZSBob3VzZSwgdHdlbnR5IGN1Yml0cywgYW5kIHRoZSBicmVhZHRoIHRoZXJlb2YgdHdlbnR5IGN1Yml0czogYW5kIGhlIG92ZXJsYWlkIGl0IHdpdGggZmluZSBnb2xkLCBhbW91bnRpbmcgdG8gc2l4IGh1bmRyZWQgdGFsZW50cy4KQW5kIHRoZSB3ZWlnaHQgb2YgdGhlIG5haWxzIHdhcyBmaWZ0eSBzaGVrZWxzIG9mIGdvbGQuIEFuZCBoZSBvdmVybGFpZCB0aGUgdXBwZXIgY2hhbWJlcnMgd2l0aCBnb2xkLgpBbmQgaW4gdGhlIG1vc3QgaG9seSBob3VzZSBoZSBtYWRlIHR3byBjaGVydWJpbXMgb2YgaW1hZ2Ugd29yaywgYW5kIG92ZXJsYWlkIHRoZW0gd2l0aCBnb2xkLgpBbmQgdGhlIHdpbmdzIG9mIHRoZSBjaGVydWJpbXMgd2VyZSB0d2VudHkgY3ViaXRzIGxvbmc6IG9uZSB3aW5nIG9mIHRoZSBvbmUgY2hlcnViIHdhcyBmaXZlIGN1Yml0cywgcmVhY2hpbmcgdG8gdGhlIHdhbGwgb2YgdGhlIGhvdXNlOiBhbmQgdGhlIG90aGVyIHdpbmcgd2FzIGxpa2V3aXNlIGZpdmUgY3ViaXRzLCByZWFjaGluZyB0byB0aGUgd2luZyBvZiB0aGUgb3RoZXIgY2hlcnViLgpBbmQgb25lIHdpbmcgb2YgdGhlIG90aGVyIGNoZXJ1YiB3YXMgZml2ZSBjdWJpdHMsIHJlYWNoaW5nIHRvIHRoZSB3YWxsIG9mIHRoZSBob3VzZTogYW5kIHRoZSBvdGhlciB3aW5nIHdhcyBmaXZlIGN1Yml0cyBhbHNvLCBqb2luaW5nIHRvIHRoZSB3aW5nIG9mIHRoZSBvdGhlciBjaGVydWIuClRoZSB3aW5ncyBvZiB0aGVzZSBjaGVydWJpbXMgc3ByZWFkIHRoZW1zZWx2ZXMgZm9ydGggdHdlbnR5IGN1Yml0czogYW5kIHRoZXkgc3Rvb2Qgb24gdGhlaXIgZmVldCwgYW5kIHRoZWlyIGZhY2VzIHdlcmUgaW53YXJkLgpBbmQgaGUgbWFkZSB0aGUgdmFpbCBvZiBibHVlLCBhbmQgcHVycGxlLCBhbmQgY3JpbXNvbiwgYW5kIGZpbmUgbGluZW4sIGFuZCB3cm91Z2h0IGNoZXJ1YmltcyB0aGVyZW9uLgpBbHNvIGhlIG1hZGUgYmVmb3JlIHRoZSBob3VzZSB0d28gcGlsbGFycyBvZiB0aGlydHkgYW5kIGZpdmUgY3ViaXRzIGhpZ2gsIGFuZCB0aGUgY2hhcGl0ZXIgdGhhdCB3YXMgb24gdGhlIHRvcCBvZiBlYWNoIG9mIHRoZW0gd2FzIGZpdmUgY3ViaXRzLgpBbmQgaGUgbWFkZSBjaGFpbnMsIGFzIGluIHRoZSBvcmFjbGUsIGFuZCBwdXQgdGhlbSBvbiB0aGUgaGVhZHMgb2YgdGhlIHBpbGxhcnM7IGFuZCBtYWRlIGFuIGh1bmRyZWQgcG9tZWdyYW5hdGVzLCBhbmQgcHV0IHRoZW0gb24gdGhlIGNoYWlucy4KQW5kIGhlIHJlYXJlZCB1cCB0aGUgcGlsbGFycyBiZWZvcmUgdGhlIHRlbXBsZSwgb25lIG9uIHRoZSByaWdodCBoYW5kLCBhbmQgdGhlIG90aGVyIG9uIHRoZSBsZWZ0OyBhbmQgY2FsbGVkIHRoZSBuYW1lIG9mIHRoYXQgb24gdGhlIHJpZ2h0IGhhbmQgSmFjaGluLCBhbmQgdGhlIG5hbWUgb2YgdGhhdCBvbiB0aGUgbGVmdCBCb2F6LgpNb3Jlb3ZlciBoZSBtYWRlIGFuIGFsdGFyIG9mIGJyYXNzLCB0d2VudHkgY3ViaXRzIHRoZSBsZW5ndGggdGhlcmVvZiwgYW5kIHR3ZW50eSBjdWJpdHMgdGhlIGJyZWFkdGggdGhlcmVvZiwgYW5kIHRlbiBjdWJpdHMgdGhlIGhlaWdodCB0aGVyZW9mLgpBbHNvIGhlIG1hZGUgYSBtb2x0ZW4gc2VhIG9mIHRlbiBjdWJpdHMgZnJvbSBicmltIHRvIGJyaW0sIHJvdW5kIGluIGNvbXBhc3MsIGFuZCBmaXZlIGN1Yml0cyB0aGUgaGVpZ2h0IHRoZXJlb2Y7IGFuZCBhIGxpbmUgb2YgdGhpcnR5IGN1Yml0cyBkaWQgY29tcGFzcyBpdCByb3VuZCBhYm91dC4KQW5kIHVuZGVyIGl0IHdhcyB0aGUgc2ltaWxpdHVkZSBvZiBveGVuLCB3aGljaCBkaWQgY29tcGFzcyBpdCByb3VuZCBhYm91dDogdGVuIGluIGEgY3ViaXQsIGNvbXBhc3NpbmcgdGhlIHNlYSByb3VuZCBhYm91dC4gVHdvIHJvd3Mgb2Ygb3hlbiB3ZXJlIGNhc3QsIHdoZW4gaXQgd2FzIGNhc3QuCkl0IHN0b29kIHVwb24gdHdlbHZlIG94ZW4sIHRocmVlIGxvb2tpbmcgdG93YXJkIHRoZSBub3J0aCwgYW5kIHRocmVlIGxvb2tpbmcgdG93YXJkIHRoZSB3ZXN0LCBhbmQgdGhyZWUgbG9va2luZyB0b3dhcmQgdGhlIHNvdXRoLCBhbmQgdGhyZWUgbG9va2luZyB0b3dhcmQgdGhlIGVhc3Q6IGFuZCB0aGUgc2VhIHdhcyBzZXQgYWJvdmUgdXBvbiB0aGVtLCBhbmQgYWxsIHRoZWlyIGhpbmRlciBwYXJ0cyB3ZXJlIGlud2FyZC4KQW5kIHRoZSB0aGlja25lc3Mgb2YgaXQgd2FzIGFuIGhhbmRicmVhZHRoLCBhbmQgdGhlIGJyaW0gb2YgaXQgbGlrZSB0aGUgd29yayBvZiB0aGUgYnJpbSBvZiBhIGN1cCwgd2l0aCBmbG93ZXJzIG9mIGxpbGllczsgYW5kIGl0IHJlY2VpdmVkIGFuZCBoZWxkIHRocmVlIHRob3VzYW5kIGJhdGhzLgpIZSBtYWRlIGFsc28gdGVuIGxhdmVycywgYW5kIHB1dCBmaXZlIG9uIHRoZSByaWdodCBoYW5kLCBhbmQgZml2ZSBvbiB0aGUgbGVmdCwgdG8gd2FzaCBpbiB0aGVtOiBzdWNoIHRoaW5ncyBhcyB0aGV5IG9mZmVyZWQgZm9yIHRoZSBidXJudCBvZmZlcmluZyB0aGV5IHdhc2hlZCBpbiB0aGVtOyBidXQgdGhlIHNlYSB3YXMgZm9yIHRoZSBwcmllc3RzIHRvIHdhc2ggaW4uCkFuZCBoZSBtYWRlIHRlbiBjYW5kbGVzdGlja3Mgb2YgZ29sZCBhY2NvcmRpbmcgdG8gdGhlaXIgZm9ybSwgYW5kIHNldCB0aGVtIGluIHRoZSB0ZW1wbGUsIGZpdmUgb24gdGhlIHJpZ2h0IGhhbmQsIGFuZCBmaXZlIG9uIHRoZSBsZWZ0LgpIZSBtYWRlIGFsc28gdGVuIHRhYmxlcywgYW5kIHBsYWNlZCB0aGVtIGluIHRoZSB0ZW1wbGUsIGZpdmUgb24gdGhlIHJpZ2h0IHNpZGUsIGFuZCBmaXZlIG9uIHRoZSBsZWZ0LiBBbmQgaGUgbWFkZSBhbiBodW5kcmVkIGJhc29ucyBvZiBnb2xkLgpGdXJ0aGVybW9yZSBoZSBtYWRlIHRoZSBjb3VydCBvZiB0aGUgcHJpZXN0cywgYW5kIHRoZSBncmVhdCBjb3VydCwgYW5kIGRvb3JzIGZvciB0aGUgY291cnQsIGFuZCBvdmVybGFpZCB0aGUgZG9vcnMgb2YgdGhlbSB3aXRoIGJyYXNzLgpBbmQgaGUgc2V0IHRoZSBzZWEgb24gdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIGVhc3QgZW5kLCBvdmVyIGFnYWluc3QgdGhlIHNvdXRoLgpBbmQgSHVyYW0gbWFkZSB0aGUgcG90cywgYW5kIHRoZSBzaG92ZWxzLCBhbmQgdGhlIGJhc29ucy4gQW5kIEh1cmFtIGZpbmlzaGVkIHRoZSB3b3JrIHRoYXQgaGUgd2FzIHRvIG1ha2UgZm9yIGtpbmcgU29sb21vbiBmb3IgdGhlIGhvdXNlIG9mIEdvZDsKVG8gd2l0LCB0aGUgdHdvIHBpbGxhcnMsIGFuZCB0aGUgcG9tbWVscywgYW5kIHRoZSBjaGFwaXRlcnMgd2hpY2ggd2VyZSBvbiB0aGUgdG9wIG9mIHRoZSB0d28gcGlsbGFycywgYW5kIHRoZSB0d28gd3JlYXRocyB0byBjb3ZlciB0aGUgdHdvIHBvbW1lbHMgb2YgdGhlIGNoYXBpdGVycyB3aGljaCB3ZXJlIG9uIHRoZSB0b3Agb2YgdGhlIHBpbGxhcnM7CkFuZCBmb3VyIGh1bmRyZWQgcG9tZWdyYW5hdGVzIG9uIHRoZSB0d28gd3JlYXRoczsgdHdvIHJvd3Mgb2YgcG9tZWdyYW5hdGVzIG9uIGVhY2ggd3JlYXRoLCB0byBjb3ZlciB0aGUgdHdvIHBvbW1lbHMgb2YgdGhlIGNoYXBpdGVycyB3aGljaCB3ZXJlIHVwb24gdGhlIHBpbGxhcnMuCkhlIG1hZGUgYWxzbyBiYXNlcywgYW5kIGxhdmVycyBtYWRlIGhlIHVwb24gdGhlIGJhc2VzOwpPbmUgc2VhLCBhbmQgdHdlbHZlIG94ZW4gdW5kZXIgaXQuClRoZSBwb3RzIGFsc28sIGFuZCB0aGUgc2hvdmVscywgYW5kIHRoZSBmbGVzaGhvb2tzLCBhbmQgYWxsIHRoZWlyIGluc3RydW1lbnRzLCBkaWQgSHVyYW0gaGlzIGZhdGhlciBtYWtlIHRvIGtpbmcgU29sb21vbiBmb3IgdGhlIGhvdXNlIG9mIHRoZSBMT1JEIG9mIGJyaWdodCBicmFzcy4KSW4gdGhlIHBsYWluIG9mIEpvcmRhbiBkaWQgdGhlIGtpbmcgY2FzdCB0aGVtLCBpbiB0aGUgY2xheSBncm91bmQgYmV0d2VlbiBTdWNjb3RoIGFuZCBaZXJlZGF0aGFoLgpUaHVzIFNvbG9tb24gbWFkZSBhbGwgdGhlc2UgdmVzc2VscyBpbiBncmVhdCBhYnVuZGFuY2U6IGZvciB0aGUgd2VpZ2h0IG9mIHRoZSBicmFzcyBjb3VsZCBub3QgYmUgZm91bmQgb3V0LgpBbmQgU29sb21vbiBtYWRlIGFsbCB0aGUgdmVzc2VscyB0aGF0IHdlcmUgZm9yIHRoZSBob3VzZSBvZiBHb2QsIHRoZSBnb2xkZW4gYWx0YXIgYWxzbywgYW5kIHRoZSB0YWJsZXMgd2hlcmVvbiB0aGUgc2hld2JyZWFkIHdhcyBzZXQ7Ck1vcmVvdmVyIHRoZSBjYW5kbGVzdGlja3Mgd2l0aCB0aGVpciBsYW1wcywgdGhhdCB0aGV5IHNob3VsZCBidXJuIGFmdGVyIHRoZSBtYW5uZXIgYmVmb3JlIHRoZSBvcmFjbGUsIG9mIHB1cmUgZ29sZDsKQW5kIHRoZSBmbG93ZXJzLCBhbmQgdGhlIGxhbXBzLCBhbmQgdGhlIHRvbmdzLCBtYWRlIGhlIG9mIGdvbGQsIGFuZCB0aGF0IHBlcmZlY3QgZ29sZDsKQW5kIHRoZSBzbnVmZmVycywgYW5kIHRoZSBiYXNvbnMsIGFuZCB0aGUgc3Bvb25zLCBhbmQgdGhlIGNlbnNlcnMsIG9mIHB1cmUgZ29sZDogYW5kIHRoZSBlbnRyeSBvZiB0aGUgaG91c2UsIHRoZSBpbm5lciBkb29ycyB0aGVyZW9mIGZvciB0aGUgbW9zdCBob2x5IHBsYWNlLCBhbmQgdGhlIGRvb3JzIG9mIHRoZSBob3VzZSBvZiB0aGUgdGVtcGxlLCB3ZXJlIG9mIGdvbGQuClRodXMgYWxsIHRoZSB3b3JrIHRoYXQgU29sb21vbiBtYWRlIGZvciB0aGUgaG91c2Ugb2YgdGhlIExPUkQgd2FzIGZpbmlzaGVkOiBhbmQgU29sb21vbiBicm91Z2h0IGluIGFsbCB0aGUgdGhpbmdzIHRoYXQgRGF2aWQgaGlzIGZhdGhlciBoYWQgZGVkaWNhdGVkOyBhbmQgdGhlIHNpbHZlciwgYW5kIHRoZSBnb2xkLCBhbmQgYWxsIHRoZSBpbnN0cnVtZW50cywgcHV0IGhlIGFtb25nIHRoZSB0cmVhc3VyZXMgb2YgdGhlIGhvdXNlIG9mIEdvZC4KVGhlbiBTb2xvbW9uIGFzc2VtYmxlZCB0aGUgZWxkZXJzIG9mIElzcmFlbCwgYW5kIGFsbCB0aGUgaGVhZHMgb2YgdGhlIHRyaWJlcywgdGhlIGNoaWVmIG9mIHRoZSBmYXRoZXJzIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIHVudG8gSmVydXNhbGVtLCB0byBicmluZyB1cCB0aGUgYXJrIG9mIHRoZSBjb3ZlbmFudCBvZiB0aGUgTE9SRCBvdXQgb2YgdGhlIGNpdHkgb2YgRGF2aWQsIHdoaWNoIGlzIFppb24uCldoZXJlZm9yZSBhbGwgdGhlIG1lbiBvZiBJc3JhZWwgYXNzZW1ibGVkIHRoZW1zZWx2ZXMgdW50byB0aGUga2luZyBpbiB0aGUgZmVhc3Qgd2hpY2ggd2FzIGluIHRoZSBzZXZlbnRoIG1vbnRoLgpBbmQgYWxsIHRoZSBlbGRlcnMgb2YgSXNyYWVsIGNhbWU7IGFuZCB0aGUgTGV2aXRlcyB0b29rIHVwIHRoZSBhcmsuCkFuZCB0aGV5IGJyb3VnaHQgdXAgdGhlIGFyaywgYW5kIHRoZSB0YWJlcm5hY2xlIG9mIHRoZSBjb25ncmVnYXRpb24sIGFuZCBhbGwgdGhlIGhvbHkgdmVzc2VscyB0aGF0IHdlcmUgaW4gdGhlIHRhYmVybmFjbGUsIHRoZXNlIGRpZCB0aGUgcHJpZXN0cyBhbmQgdGhlIExldml0ZXMgYnJpbmcgdXAuCkFsc28ga2luZyBTb2xvbW9uLCBhbmQgYWxsIHRoZSBjb25ncmVnYXRpb24gb2YgSXNyYWVsIHRoYXQgd2VyZSBhc3NlbWJsZWQgdW50byBoaW0gYmVmb3JlIHRoZSBhcmssIHNhY3JpZmljZWQgc2hlZXAgYW5kIG94ZW4sIHdoaWNoIGNvdWxkIG5vdCBiZSB0b2xkIG5vciBudW1iZXJlZCBmb3IgbXVsdGl0dWRlLgpBbmQgdGhlIHByaWVzdHMgYnJvdWdodCBpbiB0aGUgYXJrIG9mIHRoZSBjb3ZlbmFudCBvZiB0aGUgTE9SRCB1bnRvIGhpcyBwbGFjZSwgdG8gdGhlIG9yYWNsZSBvZiB0aGUgaG91c2UsIGludG8gdGhlIG1vc3QgaG9seSBwbGFjZSwgZXZlbiB1bmRlciB0aGUgd2luZ3Mgb2YgdGhlIGNoZXJ1YmltczoKRm9yIHRoZSBjaGVydWJpbXMgc3ByZWFkIGZvcnRoIHRoZWlyIHdpbmdzIG92ZXIgdGhlIHBsYWNlIG9mIHRoZSBhcmssIGFuZCB0aGUgY2hlcnViaW1zIGNvdmVyZWQgdGhlIGFyayBhbmQgdGhlIHN0YXZlcyB0aGVyZW9mIGFib3ZlLgpBbmQgdGhleSBkcmV3IG91dCB0aGUgc3RhdmVzIG9mIHRoZSBhcmssIHRoYXQgdGhlIGVuZHMgb2YgdGhlIHN0YXZlcyB3ZXJlIHNlZW4gZnJvbSB0aGUgYXJrIGJlZm9yZSB0aGUgb3JhY2xlOyBidXQgdGhleSB3ZXJlIG5vdCBzZWVuIHdpdGhvdXQuIEFuZCB0aGVyZSBpdCBpcyB1bnRvIHRoaXMgZGF5LgpUaGVyZSB3YXMgbm90aGluZyBpbiB0aGUgYXJrIHNhdmUgdGhlIHR3byB0YWJsZXMgd2hpY2ggTW9zZXMgcHV0IHRoZXJlaW4gYXQgSG9yZWIsIHdoZW4gdGhlIExPUkQgbWFkZSBhIGNvdmVuYW50IHdpdGggdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgd2hlbiB0aGV5IGNhbWUgb3V0IG9mIEVneXB0LgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIHRoZSBwcmllc3RzIHdlcmUgY29tZSBvdXQgb2YgdGhlIGhvbHkgcGxhY2U6IChmb3IgYWxsIHRoZSBwcmllc3RzIHRoYXQgd2VyZSBwcmVzZW50IHdlcmUgc2FuY3RpZmllZCwgYW5kIGRpZCBub3QgdGhlbiB3YWl0IGJ5IGNvdXJzZToKQWxzbyB0aGUgTGV2aXRlcyB3aGljaCB3ZXJlIHRoZSBzaW5nZXJzLCBhbGwgb2YgdGhlbSBvZiBBc2FwaCwgb2YgSGVtYW4sIG9mIEplZHV0aHVuLCB3aXRoIHRoZWlyIHNvbnMgYW5kIHRoZWlyIGJyZXRocmVuLCBiZWluZyBhcnJheWVkIGluIHdoaXRlIGxpbmVuLCBoYXZpbmcgY3ltYmFscyBhbmQgcHNhbHRlcmllcyBhbmQgaGFycHMsIHN0b29kIGF0IHRoZSBlYXN0IGVuZCBvZiB0aGUgYWx0YXIsIGFuZCB3aXRoIHRoZW0gYW4gaHVuZHJlZCBhbmQgdHdlbnR5IHByaWVzdHMgc291bmRpbmcgd2l0aCB0cnVtcGV0czopCkl0IGNhbWUgZXZlbiB0byBwYXNzLCBhcyB0aGUgdHJ1bXBldGVycyBhbmQgc2luZ2VycyB3ZXJlIGFzIG9uZSwgdG8gbWFrZSBvbmUgc291bmQgdG8gYmUgaGVhcmQgaW4gcHJhaXNpbmcgYW5kIHRoYW5raW5nIHRoZSBMT1JEOyBhbmQgd2hlbiB0aGV5IGxpZnRlZCB1cCB0aGVpciB2b2ljZSB3aXRoIHRoZSB0cnVtcGV0cyBhbmQgY3ltYmFscyBhbmQgaW5zdHJ1bWVudHMgb2YgbXVzaWNrLCBhbmQgcHJhaXNlZCB0aGUgTE9SRCwgc2F5aW5nLCBGb3IgaGUgaXMgZ29vZDsgZm9yIGhpcyBtZXJjeSBlbmR1cmV0aCBmb3IgZXZlcjogdGhhdCB0aGVuIHRoZSBob3VzZSB3YXMgZmlsbGVkIHdpdGggYSBjbG91ZCwgZXZlbiB0aGUgaG91c2Ugb2YgdGhlIExPUkQ7ClNvIHRoYXQgdGhlIHByaWVzdHMgY291bGQgbm90IHN0YW5kIHRvIG1pbmlzdGVyIGJ5IHJlYXNvbiBvZiB0aGUgY2xvdWQ6IGZvciB0aGUgZ2xvcnkgb2YgdGhlIExPUkQgaGFkIGZpbGxlZCB0aGUgaG91c2Ugb2YgR29kLgpUaGVuIHNhaWQgU29sb21vbiwgVGhlIExPUkQgaGF0aCBzYWlkIHRoYXQgaGUgd291bGQgZHdlbGwgaW4gdGhlIHRoaWNrIGRhcmtuZXNzLgpCdXQgSSBoYXZlIGJ1aWx0IGFuIGhvdXNlIG9mIGhhYml0YXRpb24gZm9yIHRoZWUsIGFuZCBhIHBsYWNlIGZvciB0aHkgZHdlbGxpbmcgZm9yIGV2ZXIuCkFuZCB0aGUga2luZyB0dXJuZWQgaGlzIGZhY2UsIGFuZCBibGVzc2VkIHRoZSB3aG9sZSBjb25ncmVnYXRpb24gb2YgSXNyYWVsOiBhbmQgYWxsIHRoZSBjb25ncmVnYXRpb24gb2YgSXNyYWVsIHN0b29kLgpBbmQgaGUgc2FpZCwgQmxlc3NlZCBiZSB0aGUgTE9SRCBHb2Qgb2YgSXNyYWVsLCB3aG8gaGF0aCB3aXRoIGhpcyBoYW5kcyBmdWxmaWxsZWQgdGhhdCB3aGljaCBoZSBzcGFrZSB3aXRoIGhpcyBtb3V0aCB0byBteSBmYXRoZXIgRGF2aWQsIHNheWluZywKU2luY2UgdGhlIGRheSB0aGF0IEkgYnJvdWdodCBmb3J0aCBteSBwZW9wbGUgb3V0IG9mIHRoZSBsYW5kIG9mIEVneXB0IEkgY2hvc2Ugbm8gY2l0eSBhbW9uZyBhbGwgdGhlIHRyaWJlcyBvZiBJc3JhZWwgdG8gYnVpbGQgYW4gaG91c2UgaW4sIHRoYXQgbXkgbmFtZSBtaWdodCBiZSB0aGVyZTsgbmVpdGhlciBjaG9zZSBJIGFueSBtYW4gdG8gYmUgYSBydWxlciBvdmVyIG15IHBlb3BsZSBJc3JhZWw6CkJ1dCBJIGhhdmUgY2hvc2VuIEplcnVzYWxlbSwgdGhhdCBteSBuYW1lIG1pZ2h0IGJlIHRoZXJlOyBhbmQgaGF2ZSBjaG9zZW4gRGF2aWQgdG8gYmUgb3ZlciBteSBwZW9wbGUgSXNyYWVsLgpOb3cgaXQgd2FzIGluIHRoZSBoZWFydCBvZiBEYXZpZCBteSBmYXRoZXIgdG8gYnVpbGQgYW4gaG91c2UgZm9yIHRoZSBuYW1lIG9mIHRoZSBMT1JEIEdvZCBvZiBJc3JhZWwuCkJ1dCB0aGUgTE9SRCBzYWlkIHRvIERhdmlkIG15IGZhdGhlciwgRm9yYXNtdWNoIGFzIGl0IHdhcyBpbiB0aGluZSBoZWFydCB0byBidWlsZCBhbiBob3VzZSBmb3IgbXkgbmFtZSwgdGhvdSBkaWRzdCB3ZWxsIGluIHRoYXQgaXQgd2FzIGluIHRoaW5lIGhlYXJ0OgpOb3R3aXRoc3RhbmRpbmcgdGhvdSBzaGFsdCBub3QgYnVpbGQgdGhlIGhvdXNlOyBidXQgdGh5IHNvbiB3aGljaCBzaGFsbCBjb21lIGZvcnRoIG91dCBvZiB0aHkgbG9pbnMsIGhlIHNoYWxsIGJ1aWxkIHRoZSBob3VzZSBmb3IgbXkgbmFtZS4KVGhlIExPUkQgdGhlcmVmb3JlIGhhdGggcGVyZm9ybWVkIGhpcyB3b3JkIHRoYXQgaGUgaGF0aCBzcG9rZW46IGZvciBJIGFtIHJpc2VuIHVwIGluIHRoZSByb29tIG9mIERhdmlkIG15IGZhdGhlciwgYW5kIGFtIHNldCBvbiB0aGUgdGhyb25lIG9mIElzcmFlbCwgYXMgdGhlIExPUkQgcHJvbWlzZWQsIGFuZCBoYXZlIGJ1aWx0IHRoZSBob3VzZSBmb3IgdGhlIG5hbWUgb2YgdGhlIExPUkQgR29kIG9mIElzcmFlbC4KQW5kIGluIGl0IGhhdmUgSSBwdXQgdGhlIGFyaywgd2hlcmVpbiBpcyB0aGUgY292ZW5hbnQgb2YgdGhlIExPUkQsIHRoYXQgaGUgbWFkZSB3aXRoIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwuCkFuZCBoZSBzdG9vZCBiZWZvcmUgdGhlIGFsdGFyIG9mIHRoZSBMT1JEIGluIHRoZSBwcmVzZW5jZSBvZiBhbGwgdGhlIGNvbmdyZWdhdGlvbiBvZiBJc3JhZWwsIGFuZCBzcHJlYWQgZm9ydGggaGlzIGhhbmRzOgpGb3IgU29sb21vbiBoYWQgbWFkZSBhIGJyYXNlbiBzY2FmZm9sZCBvZiBmaXZlIGN1Yml0cyBsb25nLCBhbmQgZml2ZSBjdWJpdHMgYnJvYWQsIGFuZCB0aHJlZSBjdWJpdHMgaGlnaCwgYW5kIGhhZCBzZXQgaXQgaW4gdGhlIG1pZHN0IG9mIHRoZSBjb3VydDogYW5kIHVwb24gaXQgaGUgc3Rvb2QsIGFuZCBrbmVlbGVkIGRvd24gdXBvbiBoaXMga25lZXMgYmVmb3JlIGFsbCB0aGUgY29uZ3JlZ2F0aW9uIG9mIElzcmFlbCwgYW5kIHNwcmVhZCBmb3J0aCBoaXMgaGFuZHMgdG93YXJkIGhlYXZlbi4KQW5kIHNhaWQsIE8gTE9SRCBHb2Qgb2YgSXNyYWVsLCB0aGVyZSBpcyBubyBHb2QgbGlrZSB0aGVlIGluIHRoZSBoZWF2ZW4sIG5vciBpbiB0aGUgZWFydGg7IHdoaWNoIGtlZXBlc3QgY292ZW5hbnQsIGFuZCBzaGV3ZXN0IG1lcmN5IHVudG8gdGh5IHNlcnZhbnRzLCB0aGF0IHdhbGsgYmVmb3JlIHRoZWUgd2l0aCBhbGwgdGhlaXIgaGVhcnRzOgpUaG91IHdoaWNoIGhhc3Qga2VwdCB3aXRoIHRoeSBzZXJ2YW50IERhdmlkIG15IGZhdGhlciB0aGF0IHdoaWNoIHRob3UgaGFzdCBwcm9taXNlZCBoaW07IGFuZCBzcGFrZXN0IHdpdGggdGh5IG1vdXRoLCBhbmQgaGFzdCBmdWxmaWxsZWQgaXQgd2l0aCB0aGluZSBoYW5kLCBhcyBpdCBpcyB0aGlzIGRheS4KTm93IHRoZXJlZm9yZSwgTyBMT1JEIEdvZCBvZiBJc3JhZWwsIGtlZXAgd2l0aCB0aHkgc2VydmFudCBEYXZpZCBteSBmYXRoZXIgdGhhdCB3aGljaCB0aG91IGhhc3QgcHJvbWlzZWQgaGltLCBzYXlpbmcsIFRoZXJlIHNoYWxsIG5vdCBmYWlsIHRoZWUgYSBtYW4gaW4gbXkgc2lnaHQgdG8gc2l0IHVwb24gdGhlIHRocm9uZSBvZiBJc3JhZWw7IHlldCBzbyB0aGF0IHRoeSBjaGlsZHJlbiB0YWtlIGhlZWQgdG8gdGhlaXIgd2F5IHRvIHdhbGsgaW4gbXkgbGF3LCBhcyB0aG91IGhhc3Qgd2Fsa2VkIGJlZm9yZSBtZS4KTm93IHRoZW4sIE8gTE9SRCBHb2Qgb2YgSXNyYWVsLCBsZXQgdGh5IHdvcmQgYmUgdmVyaWZpZWQsIHdoaWNoIHRob3UgaGFzdCBzcG9rZW4gdW50byB0aHkgc2VydmFudCBEYXZpZC4KQnV0IHdpbGwgR29kIGluIHZlcnkgZGVlZCBkd2VsbCB3aXRoIG1lbiBvbiB0aGUgZWFydGg/IGJlaG9sZCwgaGVhdmVuIGFuZCB0aGUgaGVhdmVuIG9mIGhlYXZlbnMgY2Fubm90IGNvbnRhaW4gdGhlZTsgaG93IG11Y2ggbGVzcyB0aGlzIGhvdXNlIHdoaWNoIEkgaGF2ZSBidWlsdCEKSGF2ZSByZXNwZWN0IHRoZXJlZm9yZSB0byB0aGUgcHJheWVyIG9mIHRoeSBzZXJ2YW50LCBhbmQgdG8gaGlzIHN1cHBsaWNhdGlvbiwgTyBMT1JEIG15IEdvZCwgdG8gaGVhcmtlbiB1bnRvIHRoZSBjcnkgYW5kIHRoZSBwcmF5ZXIgd2hpY2ggdGh5IHNlcnZhbnQgcHJheWV0aCBiZWZvcmUgdGhlZToKVGhhdCB0aGluZSBleWVzIG1heSBiZSBvcGVuIHVwb24gdGhpcyBob3VzZSBkYXkgYW5kIG5pZ2h0LCB1cG9uIHRoZSBwbGFjZSB3aGVyZW9mIHRob3UgaGFzdCBzYWlkIHRoYXQgdGhvdSB3b3VsZGVzdCBwdXQgdGh5IG5hbWUgdGhlcmU7IHRvIGhlYXJrZW4gdW50byB0aGUgcHJheWVyIHdoaWNoIHRoeSBzZXJ2YW50IHByYXlldGggdG93YXJkIHRoaXMgcGxhY2UuCkhlYXJrZW4gdGhlcmVmb3JlIHVudG8gdGhlIHN1cHBsaWNhdGlvbnMgb2YgdGh5IHNlcnZhbnQsIGFuZCBvZiB0aHkgcGVvcGxlIElzcmFlbCwgd2hpY2ggdGhleSBzaGFsbCBtYWtlIHRvd2FyZCB0aGlzIHBsYWNlOiBoZWFyIHRob3UgZnJvbSB0aHkgZHdlbGxpbmcgcGxhY2UsIGV2ZW4gZnJvbSBoZWF2ZW47IGFuZCB3aGVuIHRob3UgaGVhcmVzdCwgZm9yZ2l2ZS4KSWYgYSBtYW4gc2luIGFnYWluc3QgaGlzIG5laWdoYm91ciwgYW5kIGFuIG9hdGggYmUgbGFpZCB1cG9uIGhpbSB0byBtYWtlIGhpbSBzd2VhciwgYW5kIHRoZSBvYXRoIGNvbWUgYmVmb3JlIHRoaW5lIGFsdGFyIGluIHRoaXMgaG91c2U7ClRoZW4gaGVhciB0aG91IGZyb20gaGVhdmVuLCBhbmQgZG8sIGFuZCBqdWRnZSB0aHkgc2VydmFudHMsIGJ5IHJlcXVpdGluZyB0aGUgd2lja2VkLCBieSByZWNvbXBlbnNpbmcgaGlzIHdheSB1cG9uIGhpcyBvd24gaGVhZDsgYW5kIGJ5IGp1c3RpZnlpbmcgdGhlIHJpZ2h0ZW91cywgYnkgZ2l2aW5nIGhpbSBhY2NvcmRpbmcgdG8gaGlzIHJpZ2h0ZW91c25lc3MuCkFuZCBpZiB0aHkgcGVvcGxlIElzcmFlbCBiZSBwdXQgdG8gdGhlIHdvcnNlIGJlZm9yZSB0aGUgZW5lbXksIGJlY2F1c2UgdGhleSBoYXZlIHNpbm5lZCBhZ2FpbnN0IHRoZWU7IGFuZCBzaGFsbCByZXR1cm4gYW5kIGNvbmZlc3MgdGh5IG5hbWUsIGFuZCBwcmF5IGFuZCBtYWtlIHN1cHBsaWNhdGlvbiBiZWZvcmUgdGhlZSBpbiB0aGlzIGhvdXNlOwpUaGVuIGhlYXIgdGhvdSBmcm9tIHRoZSBoZWF2ZW5zLCBhbmQgZm9yZ2l2ZSB0aGUgc2luIG9mIHRoeSBwZW9wbGUgSXNyYWVsLCBhbmQgYnJpbmcgdGhlbSBhZ2FpbiB1bnRvIHRoZSBsYW5kIHdoaWNoIHRob3UgZ2F2ZXN0IHRvIHRoZW0gYW5kIHRvIHRoZWlyIGZhdGhlcnMuCldoZW4gdGhlIGhlYXZlbiBpcyBzaHV0IHVwLCBhbmQgdGhlcmUgaXMgbm8gcmFpbiwgYmVjYXVzZSB0aGV5IGhhdmUgc2lubmVkIGFnYWluc3QgdGhlZTsgeWV0IGlmIHRoZXkgcHJheSB0b3dhcmQgdGhpcyBwbGFjZSwgYW5kIGNvbmZlc3MgdGh5IG5hbWUsIGFuZCB0dXJuIGZyb20gdGhlaXIgc2luLCB3aGVuIHRob3UgZG9zdCBhZmZsaWN0IHRoZW07ClRoZW4gaGVhciB0aG91IGZyb20gaGVhdmVuLCBhbmQgZm9yZ2l2ZSB0aGUgc2luIG9mIHRoeSBzZXJ2YW50cywgYW5kIG9mIHRoeSBwZW9wbGUgSXNyYWVsLCB3aGVuIHRob3UgaGFzdCB0YXVnaHQgdGhlbSB0aGUgZ29vZCB3YXksIHdoZXJlaW4gdGhleSBzaG91bGQgd2FsazsgYW5kIHNlbmQgcmFpbiB1cG9uIHRoeSBsYW5kLCB3aGljaCB0aG91IGhhc3QgZ2l2ZW4gdW50byB0aHkgcGVvcGxlIGZvciBhbiBpbmhlcml0YW5jZS4KSWYgdGhlcmUgYmUgZGVhcnRoIGluIHRoZSBsYW5kLCBpZiB0aGVyZSBiZSBwZXN0aWxlbmNlLCBpZiB0aGVyZSBiZSBibGFzdGluZywgb3IgbWlsZGV3LCBsb2N1c3RzLCBvciBjYXRlcnBpbGxlcnM7IGlmIHRoZWlyIGVuZW1pZXMgYmVzaWVnZSB0aGVtIGluIHRoZSBjaXRpZXMgb2YgdGhlaXIgbGFuZDsgd2hhdHNvZXZlciBzb3JlIG9yIHdoYXRzb2V2ZXIgc2lja25lc3MgdGhlcmUgYmU6ClRoZW4gd2hhdCBwcmF5ZXIgb3Igd2hhdCBzdXBwbGljYXRpb24gc29ldmVyIHNoYWxsIGJlIG1hZGUgb2YgYW55IG1hbiwgb3Igb2YgYWxsIHRoeSBwZW9wbGUgSXNyYWVsLCB3aGVuIGV2ZXJ5IG9uZSBzaGFsbCBrbm93IGhpcyBvd24gc29yZSBhbmQgaGlzIG93biBncmllZiwgYW5kIHNoYWxsIHNwcmVhZCBmb3J0aCBoaXMgaGFuZHMgaW4gdGhpcyBob3VzZToKVGhlbiBoZWFyIHRob3UgZnJvbSBoZWF2ZW4gdGh5IGR3ZWxsaW5nIHBsYWNlLCBhbmQgZm9yZ2l2ZSwgYW5kIHJlbmRlciB1bnRvIGV2ZXJ5IG1hbiBhY2NvcmRpbmcgdW50byBhbGwgaGlzIHdheXMsIHdob3NlIGhlYXJ0IHRob3Uga25vd2VzdDsgKGZvciB0aG91IG9ubHkga25vd2VzdCB0aGUgaGVhcnRzIG9mIHRoZSBjaGlsZHJlbiBvZiBtZW46KQpUaGF0IHRoZXkgbWF5IGZlYXIgdGhlZSwgdG8gd2FsayBpbiB0aHkgd2F5cywgc28gbG9uZyBhcyB0aGV5IGxpdmUgaW4gdGhlIGxhbmQgd2hpY2ggdGhvdSBnYXZlc3QgdW50byBvdXIgZmF0aGVycy4KTW9yZW92ZXIgY29uY2VybmluZyB0aGUgc3RyYW5nZXIsIHdoaWNoIGlzIG5vdCBvZiB0aHkgcGVvcGxlIElzcmFlbCwgYnV0IGlzIGNvbWUgZnJvbSBhIGZhciBjb3VudHJ5IGZvciB0aHkgZ3JlYXQgbmFtZSdzIHNha2UsIGFuZCB0aHkgbWlnaHR5IGhhbmQsIGFuZCB0aHkgc3RyZXRjaGVkIG91dCBhcm07IGlmIHRoZXkgY29tZSBhbmQgcHJheSBpbiB0aGlzIGhvdXNlOwpUaGVuIGhlYXIgdGhvdSBmcm9tIHRoZSBoZWF2ZW5zLCBldmVuIGZyb20gdGh5IGR3ZWxsaW5nIHBsYWNlLCBhbmQgZG8gYWNjb3JkaW5nIHRvIGFsbCB0aGF0IHRoZSBzdHJhbmdlciBjYWxsZXRoIHRvIHRoZWUgZm9yOyB0aGF0IGFsbCBwZW9wbGUgb2YgdGhlIGVhcnRoIG1heSBrbm93IHRoeSBuYW1lLCBhbmQgZmVhciB0aGVlLCBhcyBkb3RoIHRoeSBwZW9wbGUgSXNyYWVsLCBhbmQgbWF5IGtub3cgdGhhdCB0aGlzIGhvdXNlIHdoaWNoIEkgaGF2ZSBidWlsdCBpcyBjYWxsZWQgYnkgdGh5IG5hbWUuCklmIHRoeSBwZW9wbGUgZ28gb3V0IHRvIHdhciBhZ2FpbnN0IHRoZWlyIGVuZW1pZXMgYnkgdGhlIHdheSB0aGF0IHRob3Ugc2hhbHQgc2VuZCB0aGVtLCBhbmQgdGhleSBwcmF5IHVudG8gdGhlZSB0b3dhcmQgdGhpcyBjaXR5IHdoaWNoIHRob3UgaGFzdCBjaG9zZW4sIGFuZCB0aGUgaG91c2Ugd2hpY2ggSSBoYXZlIGJ1aWx0IGZvciB0aHkgbmFtZTsKVGhlbiBoZWFyIHRob3UgZnJvbSB0aGUgaGVhdmVucyB0aGVpciBwcmF5ZXIgYW5kIHRoZWlyIHN1cHBsaWNhdGlvbiwgYW5kIG1haW50YWluIHRoZWlyIGNhdXNlLgpJZiB0aGV5IHNpbiBhZ2FpbnN0IHRoZWUsIChmb3IgdGhlcmUgaXMgbm8gbWFuIHdoaWNoIHNpbm5ldGggbm90LCkgYW5kIHRob3UgYmUgYW5ncnkgd2l0aCB0aGVtLCBhbmQgZGVsaXZlciB0aGVtIG92ZXIgYmVmb3JlIHRoZWlyIGVuZW1pZXMsIGFuZCB0aGV5IGNhcnJ5IHRoZW0gYXdheSBjYXB0aXZlcyB1bnRvIGEgbGFuZCBmYXIgb2ZmIG9yIG5lYXI7CllldCBpZiB0aGV5IGJldGhpbmsgdGhlbXNlbHZlcyBpbiB0aGUgbGFuZCB3aGl0aGVyIHRoZXkgYXJlIGNhcnJpZWQgY2FwdGl2ZSwgYW5kIHR1cm4gYW5kIHByYXkgdW50byB0aGVlIGluIHRoZSBsYW5kIG9mIHRoZWlyIGNhcHRpdml0eSwgc2F5aW5nLCBXZSBoYXZlIHNpbm5lZCwgd2UgaGF2ZSBkb25lIGFtaXNzLCBhbmQgaGF2ZSBkZWFsdCB3aWNrZWRseTsKSWYgdGhleSByZXR1cm4gdG8gdGhlZSB3aXRoIGFsbCB0aGVpciBoZWFydCBhbmQgd2l0aCBhbGwgdGhlaXIgc291bCBpbiB0aGUgbGFuZCBvZiB0aGVpciBjYXB0aXZpdHksIHdoaXRoZXIgdGhleSBoYXZlIGNhcnJpZWQgdGhlbSBjYXB0aXZlcywgYW5kIHByYXkgdG93YXJkIHRoZWlyIGxhbmQsIHdoaWNoIHRob3UgZ2F2ZXN0IHVudG8gdGhlaXIgZmF0aGVycywgYW5kIHRvd2FyZCB0aGUgY2l0eSB3aGljaCB0aG91IGhhc3QgY2hvc2VuLCBhbmQgdG93YXJkIHRoZSBob3VzZSB3aGljaCBJIGhhdmUgYnVpbHQgZm9yIHRoeSBuYW1lOgpUaGVuIGhlYXIgdGhvdSBmcm9tIHRoZSBoZWF2ZW5zLCBldmVuIGZyb20gdGh5IGR3ZWxsaW5nIHBsYWNlLCB0aGVpciBwcmF5ZXIgYW5kIHRoZWlyIHN1cHBsaWNhdGlvbnMsIGFuZCBtYWludGFpbiB0aGVpciBjYXVzZSwgYW5kIGZvcmdpdmUgdGh5IHBlb3BsZSB3aGljaCBoYXZlIHNpbm5lZCBhZ2FpbnN0IHRoZWUuCk5vdywgbXkgR29kLCBsZXQsIEkgYmVzZWVjaCB0aGVlLCB0aGluZSBleWVzIGJlIG9wZW4sIGFuZCBsZXQgdGhpbmUgZWFycyBiZSBhdHRlbnQgdW50byB0aGUgcHJheWVyIHRoYXQgaXMgbWFkZSBpbiB0aGlzIHBsYWNlLgpOb3cgdGhlcmVmb3JlIGFyaXNlLCBPIExPUkQgR29kLCBpbnRvIHRoeSByZXN0aW5nIHBsYWNlLCB0aG91LCBhbmQgdGhlIGFyayBvZiB0aHkgc3RyZW5ndGg6IGxldCB0aHkgcHJpZXN0cywgTyBMT1JEIEdvZCwgYmUgY2xvdGhlZCB3aXRoIHNhbHZhdGlvbiwgYW5kIGxldCB0aHkgc2FpbnRzIHJlam9pY2UgaW4gZ29vZG5lc3MuCk8gTE9SRCBHb2QsIHR1cm4gbm90IGF3YXkgdGhlIGZhY2Ugb2YgdGhpbmUgYW5vaW50ZWQ6IHJlbWVtYmVyIHRoZSBtZXJjaWVzIG9mIERhdmlkIHRoeSBzZXJ2YW50LgpOb3cgd2hlbiBTb2xvbW9uIGhhZCBtYWRlIGFuIGVuZCBvZiBwcmF5aW5nLCB0aGUgZmlyZSBjYW1lIGRvd24gZnJvbSBoZWF2ZW4sIGFuZCBjb25zdW1lZCB0aGUgYnVybnQgb2ZmZXJpbmcgYW5kIHRoZSBzYWNyaWZpY2VzOyBhbmQgdGhlIGdsb3J5IG9mIHRoZSBMT1JEIGZpbGxlZCB0aGUgaG91c2UuCkFuZCB0aGUgcHJpZXN0cyBjb3VsZCBub3QgZW50ZXIgaW50byB0aGUgaG91c2Ugb2YgdGhlIExPUkQsIGJlY2F1c2UgdGhlIGdsb3J5IG9mIHRoZSBMT1JEIGhhZCBmaWxsZWQgdGhlIExPUkQncyBob3VzZS4KQW5kIHdoZW4gYWxsIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgc2F3IGhvdyB0aGUgZmlyZSBjYW1lIGRvd24sIGFuZCB0aGUgZ2xvcnkgb2YgdGhlIExPUkQgdXBvbiB0aGUgaG91c2UsIHRoZXkgYm93ZWQgdGhlbXNlbHZlcyB3aXRoIHRoZWlyIGZhY2VzIHRvIHRoZSBncm91bmQgdXBvbiB0aGUgcGF2ZW1lbnQsIGFuZCB3b3JzaGlwcGVkLCBhbmQgcHJhaXNlZCB0aGUgTE9SRCwgc2F5aW5nLCBGb3IgaGUgaXMgZ29vZDsgZm9yIGhpcyBtZXJjeSBlbmR1cmV0aCBmb3IgZXZlci4KVGhlbiB0aGUga2luZyBhbmQgYWxsIHRoZSBwZW9wbGUgb2ZmZXJlZCBzYWNyaWZpY2VzIGJlZm9yZSB0aGUgTE9SRC4KQW5kIGtpbmcgU29sb21vbiBvZmZlcmVkIGEgc2FjcmlmaWNlIG9mIHR3ZW50eSBhbmQgdHdvIHRob3VzYW5kIG94ZW4sIGFuZCBhbiBodW5kcmVkIGFuZCB0d2VudHkgdGhvdXNhbmQgc2hlZXA6IHNvIHRoZSBraW5nIGFuZCBhbGwgdGhlIHBlb3BsZSBkZWRpY2F0ZWQgdGhlIGhvdXNlIG9mIEdvZC4KQW5kIHRoZSBwcmllc3RzIHdhaXRlZCBvbiB0aGVpciBvZmZpY2VzOiB0aGUgTGV2aXRlcyBhbHNvIHdpdGggaW5zdHJ1bWVudHMgb2YgbXVzaWNrIG9mIHRoZSBMT1JELCB3aGljaCBEYXZpZCB0aGUga2luZyBoYWQgbWFkZSB0byBwcmFpc2UgdGhlIExPUkQsIGJlY2F1c2UgaGlzIG1lcmN5IGVuZHVyZXRoIGZvciBldmVyLCB3aGVuIERhdmlkIHByYWlzZWQgYnkgdGhlaXIgbWluaXN0cnk7IGFuZCB0aGUgcHJpZXN0cyBzb3VuZGVkIHRydW1wZXRzIGJlZm9yZSB0aGVtLCBhbmQgYWxsIElzcmFlbCBzdG9vZC4KTW9yZW92ZXIgU29sb21vbiBoYWxsb3dlZCB0aGUgbWlkZGxlIG9mIHRoZSBjb3VydCB0aGF0IHdhcyBiZWZvcmUgdGhlIGhvdXNlIG9mIHRoZSBMT1JEOiBmb3IgdGhlcmUgaGUgb2ZmZXJlZCBidXJudCBvZmZlcmluZ3MsIGFuZCB0aGUgZmF0IG9mIHRoZSBwZWFjZSBvZmZlcmluZ3MsIGJlY2F1c2UgdGhlIGJyYXNlbiBhbHRhciB3aGljaCBTb2xvbW9uIGhhZCBtYWRlIHdhcyBub3QgYWJsZSB0byByZWNlaXZlIHRoZSBidXJudCBvZmZlcmluZ3MsIGFuZCB0aGUgbWVhdCBvZmZlcmluZ3MsIGFuZCB0aGUgZmF0LgpBbHNvIGF0IHRoZSBzYW1lIHRpbWUgU29sb21vbiBrZXB0IHRoZSBmZWFzdCBzZXZlbiBkYXlzLCBhbmQgYWxsIElzcmFlbCB3aXRoIGhpbSwgYSB2ZXJ5IGdyZWF0IGNvbmdyZWdhdGlvbiwgZnJvbSB0aGUgZW50ZXJpbmcgaW4gb2YgSGFtYXRoIHVudG8gdGhlIHJpdmVyIG9mIEVneXB0LgpBbmQgaW4gdGhlIGVpZ2h0aCBkYXkgdGhleSBtYWRlIGEgc29sZW1uIGFzc2VtYmx5OiBmb3IgdGhleSBrZXB0IHRoZSBkZWRpY2F0aW9uIG9mIHRoZSBhbHRhciBzZXZlbiBkYXlzLCBhbmQgdGhlIGZlYXN0IHNldmVuIGRheXMuCkFuZCBvbiB0aGUgdGhyZWUgYW5kIHR3ZW50aWV0aCBkYXkgb2YgdGhlIHNldmVudGggbW9udGggaGUgc2VudCB0aGUgcGVvcGxlIGF3YXkgaW50byB0aGVpciB0ZW50cywgZ2xhZCBhbmQgbWVycnkgaW4gaGVhcnQgZm9yIHRoZSBnb29kbmVzcyB0aGF0IHRoZSBMT1JEIGhhZCBzaGV3ZWQgdW50byBEYXZpZCwgYW5kIHRvIFNvbG9tb24sIGFuZCB0byBJc3JhZWwgaGlzIHBlb3BsZS4KVGh1cyBTb2xvbW9uIGZpbmlzaGVkIHRoZSBob3VzZSBvZiB0aGUgTE9SRCwgYW5kIHRoZSBraW5nJ3MgaG91c2U6IGFuZCBhbGwgdGhhdCBjYW1lIGludG8gU29sb21vbidzIGhlYXJ0IHRvIG1ha2UgaW4gdGhlIGhvdXNlIG9mIHRoZSBMT1JELCBhbmQgaW4gaGlzIG93biBob3VzZSwgaGUgcHJvc3Blcm91c2x5IGVmZmVjdGVkLgpBbmQgdGhlIExPUkQgYXBwZWFyZWQgdG8gU29sb21vbiBieSBuaWdodCwgYW5kIHNhaWQgdW50byBoaW0sIEkgaGF2ZSBoZWFyZCB0aHkgcHJheWVyLCBhbmQgaGF2ZSBjaG9zZW4gdGhpcyBwbGFjZSB0byBteXNlbGYgZm9yIGFuIGhvdXNlIG9mIHNhY3JpZmljZS4KSWYgSSBzaHV0IHVwIGhlYXZlbiB0aGF0IHRoZXJlIGJlIG5vIHJhaW4sIG9yIGlmIEkgY29tbWFuZCB0aGUgbG9jdXN0cyB0byBkZXZvdXIgdGhlIGxhbmQsIG9yIGlmIEkgc2VuZCBwZXN0aWxlbmNlIGFtb25nIG15IHBlb3BsZTsKSWYgbXkgcGVvcGxlLCB3aGljaCBhcmUgY2FsbGVkIGJ5IG15IG5hbWUsIHNoYWxsIGh1bWJsZSB0aGVtc2VsdmVzLCBhbmQgcHJheSwgYW5kIHNlZWsgbXkgZmFjZSwgYW5kIHR1cm4gZnJvbSB0aGVpciB3aWNrZWQgd2F5czsgdGhlbiB3aWxsIEkgaGVhciBmcm9tIGhlYXZlbiwgYW5kIHdpbGwgZm9yZ2l2ZSB0aGVpciBzaW4sIGFuZCB3aWxsIGhlYWwgdGhlaXIgbGFuZC4KTm93IG1pbmUgZXllcyBzaGFsbCBiZSBvcGVuLCBhbmQgbWluZSBlYXJzIGF0dGVudCB1bnRvIHRoZSBwcmF5ZXIgdGhhdCBpcyBtYWRlIGluIHRoaXMgcGxhY2UuCkZvciBub3cgaGF2ZSBJIGNob3NlbiBhbmQgc2FuY3RpZmllZCB0aGlzIGhvdXNlLCB0aGF0IG15IG5hbWUgbWF5IGJlIHRoZXJlIGZvciBldmVyOiBhbmQgbWluZSBleWVzIGFuZCBtaW5lIGhlYXJ0IHNoYWxsIGJlIHRoZXJlIHBlcnBldHVhbGx5LgpBbmQgYXMgZm9yIHRoZWUsIGlmIHRob3Ugd2lsdCB3YWxrIGJlZm9yZSBtZSwgYXMgRGF2aWQgdGh5IGZhdGhlciB3YWxrZWQsIGFuZCBkbyBhY2NvcmRpbmcgdG8gYWxsIHRoYXQgSSBoYXZlIGNvbW1hbmRlZCB0aGVlLCBhbmQgc2hhbHQgb2JzZXJ2ZSBteSBzdGF0dXRlcyBhbmQgbXkganVkZ21lbnRzOwpUaGVuIHdpbGwgSSBzdGFibGlzaCB0aGUgdGhyb25lIG9mIHRoeSBraW5nZG9tLCBhY2NvcmRpbmcgYXMgSSBoYXZlIGNvdmVuYW50ZWQgd2l0aCBEYXZpZCB0aHkgZmF0aGVyLCBzYXlpbmcsIFRoZXJlIHNoYWxsIG5vdCBmYWlsIHRoZWUgYSBtYW4gdG8gYmUgcnVsZXIgaW4gSXNyYWVsLgpCdXQgaWYgeWUgdHVybiBhd2F5LCBhbmQgZm9yc2FrZSBteSBzdGF0dXRlcyBhbmQgbXkgY29tbWFuZG1lbnRzLCB3aGljaCBJIGhhdmUgc2V0IGJlZm9yZSB5b3UsIGFuZCBzaGFsbCBnbyBhbmQgc2VydmUgb3RoZXIgZ29kcywgYW5kIHdvcnNoaXAgdGhlbTsKVGhlbiB3aWxsIEkgcGx1Y2sgdGhlbSB1cCBieSB0aGUgcm9vdHMgb3V0IG9mIG15IGxhbmQgd2hpY2ggSSBoYXZlIGdpdmVuIHRoZW07IGFuZCB0aGlzIGhvdXNlLCB3aGljaCBJIGhhdmUgc2FuY3RpZmllZCBmb3IgbXkgbmFtZSwgd2lsbCBJIGNhc3Qgb3V0IG9mIG15IHNpZ2h0LCBhbmQgd2lsbCBtYWtlIGl0IHRvIGJlIGEgcHJvdmVyYiBhbmQgYSBieXdvcmQgYW1vbmcgYWxsIG5hdGlvbnMuCkFuZCB0aGlzIGhvdXNlLCB3aGljaCBpcyBoaWdoLCBzaGFsbCBiZSBhbiBhc3RvbmlzaG1lbnQgdG8gZXZlcnkgb25lIHRoYXQgcGFzc2V0aCBieSBpdDsgc28gdGhhdCBoZSBzaGFsbCBzYXksIFdoeSBoYXRoIHRoZSBMT1JEIGRvbmUgdGh1cyB1bnRvIHRoaXMgbGFuZCwgYW5kIHVudG8gdGhpcyBob3VzZT8KQW5kIGl0IHNoYWxsIGJlIGFuc3dlcmVkLCBCZWNhdXNlIHRoZXkgZm9yc29vayB0aGUgTE9SRCBHb2Qgb2YgdGhlaXIgZmF0aGVycywgd2hpY2ggYnJvdWdodCB0aGVtIGZvcnRoIG91dCBvZiB0aGUgbGFuZCBvZiBFZ3lwdCwgYW5kIGxhaWQgaG9sZCBvbiBvdGhlciBnb2RzLCBhbmQgd29yc2hpcHBlZCB0aGVtLCBhbmQgc2VydmVkIHRoZW06IHRoZXJlZm9yZSBoYXRoIGhlIGJyb3VnaHQgYWxsIHRoaXMgZXZpbCB1cG9uIHRoZW0uCkFuZCBpdCBjYW1lIHRvIHBhc3MgYXQgdGhlIGVuZCBvZiB0d2VudHkgeWVhcnMsIHdoZXJlaW4gU29sb21vbiBoYWQgYnVpbHQgdGhlIGhvdXNlIG9mIHRoZSBMT1JELCBhbmQgaGlzIG93biBob3VzZSwKVGhhdCB0aGUgY2l0aWVzIHdoaWNoIEh1cmFtIGhhZCByZXN0b3JlZCB0byBTb2xvbW9uLCBTb2xvbW9uIGJ1aWx0IHRoZW0sIGFuZCBjYXVzZWQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCB0byBkd2VsbCB0aGVyZS4KQW5kIFNvbG9tb24gd2VudCB0byBIYW1hdGh6b2JhaCwgYW5kIHByZXZhaWxlZCBhZ2FpbnN0IGl0LgpBbmQgaGUgYnVpbHQgVGFkbW9yIGluIHRoZSB3aWxkZXJuZXNzLCBhbmQgYWxsIHRoZSBzdG9yZSBjaXRpZXMsIHdoaWNoIGhlIGJ1aWx0IGluIEhhbWF0aC4KQWxzbyBoZSBidWlsdCBCZXRoaG9yb24gdGhlIHVwcGVyLCBhbmQgQmV0aGhvcm9uIHRoZSBuZXRoZXIsIGZlbmNlZCBjaXRpZXMsIHdpdGggd2FsbHMsIGdhdGVzLCBhbmQgYmFyczsKQW5kIEJhYWxhdGgsIGFuZCBhbGwgdGhlIHN0b3JlIGNpdGllcyB0aGF0IFNvbG9tb24gaGFkLCBhbmQgYWxsIHRoZSBjaGFyaW90IGNpdGllcywgYW5kIHRoZSBjaXRpZXMgb2YgdGhlIGhvcnNlbWVuLCBhbmQgYWxsIHRoYXQgU29sb21vbiBkZXNpcmVkIHRvIGJ1aWxkIGluIEplcnVzYWxlbSwgYW5kIGluIExlYmFub24sIGFuZCB0aHJvdWdob3V0IGFsbCB0aGUgbGFuZCBvZiBoaXMgZG9taW5pb24uCkFzIGZvciBhbGwgdGhlIHBlb3BsZSB0aGF0IHdlcmUgbGVmdCBvZiB0aGUgSGl0dGl0ZXMsIGFuZCB0aGUgQW1vcml0ZXMsIGFuZCB0aGUgUGVyaXp6aXRlcywgYW5kIHRoZSBIaXZpdGVzLCBhbmQgdGhlIEplYnVzaXRlcywgd2hpY2ggd2VyZSBub3Qgb2YgSXNyYWVsLApCdXQgb2YgdGhlaXIgY2hpbGRyZW4sIHdobyB3ZXJlIGxlZnQgYWZ0ZXIgdGhlbSBpbiB0aGUgbGFuZCwgd2hvbSB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGNvbnN1bWVkIG5vdCwgdGhlbSBkaWQgU29sb21vbiBtYWtlIHRvIHBheSB0cmlidXRlIHVudGlsIHRoaXMgZGF5LgpCdXQgb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBkaWQgU29sb21vbiBtYWtlIG5vIHNlcnZhbnRzIGZvciBoaXMgd29yazsgYnV0IHRoZXkgd2VyZSBtZW4gb2Ygd2FyLCBhbmQgY2hpZWYgb2YgaGlzIGNhcHRhaW5zLCBhbmQgY2FwdGFpbnMgb2YgaGlzIGNoYXJpb3RzIGFuZCBob3JzZW1lbi4KQW5kIHRoZXNlIHdlcmUgdGhlIGNoaWVmIG9mIGtpbmcgU29sb21vbidzIG9mZmljZXJzLCBldmVuIHR3byBodW5kcmVkIGFuZCBmaWZ0eSwgdGhhdCBiYXJlIHJ1bGUgb3ZlciB0aGUgcGVvcGxlLgpBbmQgU29sb21vbiBicm91Z2h0IHVwIHRoZSBkYXVnaHRlciBvZiBQaGFyYW9oIG91dCBvZiB0aGUgY2l0eSBvZiBEYXZpZCB1bnRvIHRoZSBob3VzZSB0aGF0IGhlIGhhZCBidWlsdCBmb3IgaGVyOiBmb3IgaGUgc2FpZCwgTXkgd2lmZSBzaGFsbCBub3QgZHdlbGwgaW4gdGhlIGhvdXNlIG9mIERhdmlkIGtpbmcgb2YgSXNyYWVsLCBiZWNhdXNlIHRoZSBwbGFjZXMgYXJlIGhvbHksIHdoZXJldW50byB0aGUgYXJrIG9mIHRoZSBMT1JEIGhhdGggY29tZS4KVGhlbiBTb2xvbW9uIG9mZmVyZWQgYnVybnQgb2ZmZXJpbmdzIHVudG8gdGhlIExPUkQgb24gdGhlIGFsdGFyIG9mIHRoZSBMT1JELCB3aGljaCBoZSBoYWQgYnVpbHQgYmVmb3JlIHRoZSBwb3JjaCwKRXZlbiBhZnRlciBhIGNlcnRhaW4gcmF0ZSBldmVyeSBkYXksIG9mZmVyaW5nIGFjY29yZGluZyB0byB0aGUgY29tbWFuZG1lbnQgb2YgTW9zZXMsIG9uIHRoZSBzYWJiYXRocywgYW5kIG9uIHRoZSBuZXcgbW9vbnMsIGFuZCBvbiB0aGUgc29sZW1uIGZlYXN0cywgdGhyZWUgdGltZXMgaW4gdGhlIHllYXIsIGV2ZW4gaW4gdGhlIGZlYXN0IG9mIHVubGVhdmVuZWQgYnJlYWQsIGFuZCBpbiB0aGUgZmVhc3Qgb2Ygd2Vla3MsIGFuZCBpbiB0aGUgZmVhc3Qgb2YgdGFiZXJuYWNsZXMuCkFuZCBoZSBhcHBvaW50ZWQsIGFjY29yZGluZyB0byB0aGUgb3JkZXIgb2YgRGF2aWQgaGlzIGZhdGhlciwgdGhlIGNvdXJzZXMgb2YgdGhlIHByaWVzdHMgdG8gdGhlaXIgc2VydmljZSwgYW5kIHRoZSBMZXZpdGVzIHRvIHRoZWlyIGNoYXJnZXMsIHRvIHByYWlzZSBhbmQgbWluaXN0ZXIgYmVmb3JlIHRoZSBwcmllc3RzLCBhcyB0aGUgZHV0eSBvZiBldmVyeSBkYXkgcmVxdWlyZWQ6IHRoZSBwb3J0ZXJzIGFsc28gYnkgdGhlaXIgY291cnNlcyBhdCBldmVyeSBnYXRlOiBmb3Igc28gaGFkIERhdmlkIHRoZSBtYW4gb2YgR29kIGNvbW1hbmRlZC4KQW5kIHRoZXkgZGVwYXJ0ZWQgbm90IGZyb20gdGhlIGNvbW1hbmRtZW50IG9mIHRoZSBraW5nIHVudG8gdGhlIHByaWVzdHMgYW5kIExldml0ZXMgY29uY2VybmluZyBhbnkgbWF0dGVyLCBvciBjb25jZXJuaW5nIHRoZSB0cmVhc3VyZXMuCk5vdyBhbGwgdGhlIHdvcmsgb2YgU29sb21vbiB3YXMgcHJlcGFyZWQgdW50byB0aGUgZGF5IG9mIHRoZSBmb3VuZGF0aW9uIG9mIHRoZSBob3VzZSBvZiB0aGUgTE9SRCwgYW5kIHVudGlsIGl0IHdhcyBmaW5pc2hlZC4gU28gdGhlIGhvdXNlIG9mIHRoZSBMT1JEIHdhcyBwZXJmZWN0ZWQuClRoZW4gd2VudCBTb2xvbW9uIHRvIEV6aW9uZ2ViZXIsIGFuZCB0byBFbG90aCwgYXQgdGhlIHNlYSBzaWRlIGluIHRoZSBsYW5kIG9mIEVkb20uCkFuZCBIdXJhbSBzZW50IGhpbSBieSB0aGUgaGFuZHMgb2YgaGlzIHNlcnZhbnRzIHNoaXBzLCBhbmQgc2VydmFudHMgdGhhdCBoYWQga25vd2xlZGdlIG9mIHRoZSBzZWE7IGFuZCB0aGV5IHdlbnQgd2l0aCB0aGUgc2VydmFudHMgb2YgU29sb21vbiB0byBPcGhpciwgYW5kIHRvb2sgdGhlbmNlIGZvdXIgaHVuZHJlZCBhbmQgZmlmdHkgdGFsZW50cyBvZiBnb2xkLCBhbmQgYnJvdWdodCB0aGVtIHRvIGtpbmcgU29sb21vbi4KQW5kIHdoZW4gdGhlIHF1ZWVuIG9mIFNoZWJhIGhlYXJkIG9mIHRoZSBmYW1lIG9mIFNvbG9tb24sIHNoZSBjYW1lIHRvIHByb3ZlIFNvbG9tb24gd2l0aCBoYXJkIHF1ZXN0aW9ucyBhdCBKZXJ1c2FsZW0sIHdpdGggYSB2ZXJ5IGdyZWF0IGNvbXBhbnksIGFuZCBjYW1lbHMgdGhhdCBiYXJlIHNwaWNlcywgYW5kIGdvbGQgaW4gYWJ1bmRhbmNlLCBhbmQgcHJlY2lvdXMgc3RvbmVzOiBhbmQgd2hlbiBzaGUgd2FzIGNvbWUgdG8gU29sb21vbiwgc2hlIGNvbW11bmVkIHdpdGggaGltIG9mIGFsbCB0aGF0IHdhcyBpbiBoZXIgaGVhcnQuCkFuZCBTb2xvbW9uIHRvbGQgaGVyIGFsbCBoZXIgcXVlc3Rpb25zOiBhbmQgdGhlcmUgd2FzIG5vdGhpbmcgaGlkIGZyb20gU29sb21vbiB3aGljaCBoZSB0b2xkIGhlciBub3QuCkFuZCB3aGVuIHRoZSBxdWVlbiBvZiBTaGViYSBoYWQgc2VlbiB0aGUgd2lzZG9tIG9mIFNvbG9tb24sIGFuZCB0aGUgaG91c2UgdGhhdCBoZSBoYWQgYnVpbHQsCkFuZCB0aGUgbWVhdCBvZiBoaXMgdGFibGUsIGFuZCB0aGUgc2l0dGluZyBvZiBoaXMgc2VydmFudHMsIGFuZCB0aGUgYXR0ZW5kYW5jZSBvZiBoaXMgbWluaXN0ZXJzLCBhbmQgdGhlaXIgYXBwYXJlbDsgaGlzIGN1cGJlYXJlcnMgYWxzbywgYW5kIHRoZWlyIGFwcGFyZWw7IGFuZCBoaXMgYXNjZW50IGJ5IHdoaWNoIGhlIHdlbnQgdXAgaW50byB0aGUgaG91c2Ugb2YgdGhlIExPUkQ7IHRoZXJlIHdhcyBubyBtb3JlIHNwaXJpdCBpbiBoZXIuCkFuZCBzaGUgc2FpZCB0byB0aGUga2luZywgSXQgd2FzIGEgdHJ1ZSByZXBvcnQgd2hpY2ggSSBoZWFyZCBpbiBtaW5lIG93biBsYW5kIG9mIHRoaW5lIGFjdHMsIGFuZCBvZiB0aHkgd2lzZG9tOgpIb3diZWl0IEkgYmVsaWV2ZWQgbm90IHRoZWlyIHdvcmRzLCB1bnRpbCBJIGNhbWUsIGFuZCBtaW5lIGV5ZXMgaGFkIHNlZW4gaXQ6IGFuZCwgYmVob2xkLCB0aGUgb25lIGhhbGYgb2YgdGhlIGdyZWF0bmVzcyBvZiB0aHkgd2lzZG9tIHdhcyBub3QgdG9sZCBtZTogZm9yIHRob3UgZXhjZWVkZXN0IHRoZSBmYW1lIHRoYXQgSSBoZWFyZC4KSGFwcHkgYXJlIHRoeSBtZW4sIGFuZCBoYXBweSBhcmUgdGhlc2UgdGh5IHNlcnZhbnRzLCB3aGljaCBzdGFuZCBjb250aW51YWxseSBiZWZvcmUgdGhlZSwgYW5kIGhlYXIgdGh5IHdpc2RvbS4KQmxlc3NlZCBiZSB0aGUgTE9SRCB0aHkgR29kLCB3aGljaCBkZWxpZ2h0ZWQgaW4gdGhlZSB0byBzZXQgdGhlZSBvbiBoaXMgdGhyb25lLCB0byBiZSBraW5nIGZvciB0aGUgTE9SRCB0aHkgR29kOiBiZWNhdXNlIHRoeSBHb2QgbG92ZWQgSXNyYWVsLCB0byBlc3RhYmxpc2ggdGhlbSBmb3IgZXZlciwgdGhlcmVmb3JlIG1hZGUgaGUgdGhlZSBraW5nIG92ZXIgdGhlbSwgdG8gZG8ganVkZ21lbnQgYW5kIGp1c3RpY2UuCkFuZCBzaGUgZ2F2ZSB0aGUga2luZyBhbiBodW5kcmVkIGFuZCB0d2VudHkgdGFsZW50cyBvZiBnb2xkLCBhbmQgb2Ygc3BpY2VzIGdyZWF0IGFidW5kYW5jZSwgYW5kIHByZWNpb3VzIHN0b25lczogbmVpdGhlciB3YXMgdGhlcmUgYW55IHN1Y2ggc3BpY2UgYXMgdGhlIHF1ZWVuIG9mIFNoZWJhIGdhdmUga2luZyBTb2xvbW9uLgpBbmQgdGhlIHNlcnZhbnRzIGFsc28gb2YgSHVyYW0sIGFuZCB0aGUgc2VydmFudHMgb2YgU29sb21vbiwgd2hpY2ggYnJvdWdodCBnb2xkIGZyb20gT3BoaXIsIGJyb3VnaHQgYWxndW0gdHJlZXMgYW5kIHByZWNpb3VzIHN0b25lcy4KQW5kIHRoZSBraW5nIG1hZGUgb2YgdGhlIGFsZ3VtIHRyZWVzIHRlcnJhY2VzIHRvIHRoZSBob3VzZSBvZiB0aGUgTE9SRCwgYW5kIHRvIHRoZSBraW5nJ3MgcGFsYWNlLCBhbmQgaGFycHMgYW5kIHBzYWx0ZXJpZXMgZm9yIHNpbmdlcnM6IGFuZCB0aGVyZSB3ZXJlIG5vbmUgc3VjaCBzZWVuIGJlZm9yZSBpbiB0aGUgbGFuZCBvZiBKdWRhaC4KQW5kIGtpbmcgU29sb21vbiBnYXZlIHRvIHRoZSBxdWVlbiBvZiBTaGViYSBhbGwgaGVyIGRlc2lyZSwgd2hhdHNvZXZlciBzaGUgYXNrZWQsIGJlc2lkZSB0aGF0IHdoaWNoIHNoZSBoYWQgYnJvdWdodCB1bnRvIHRoZSBraW5nLiBTbyBzaGUgdHVybmVkLCBhbmQgd2VudCBhd2F5IHRvIGhlciBvd24gbGFuZCwgc2hlIGFuZCBoZXIgc2VydmFudHMuCk5vdyB0aGUgd2VpZ2h0IG9mIGdvbGQgdGhhdCBjYW1lIHRvIFNvbG9tb24gaW4gb25lIHllYXIgd2FzIHNpeCBodW5kcmVkIGFuZCB0aHJlZXNjb3JlIGFuZCBzaXggdGFsZW50cyBvZiBnb2xkOwpCZXNpZGUgdGhhdCB3aGljaCBjaGFwbWVuIGFuZCBtZXJjaGFudHMgYnJvdWdodC4gQW5kIGFsbCB0aGUga2luZ3Mgb2YgQXJhYmlhIGFuZCBnb3Zlcm5vcnMgb2YgdGhlIGNvdW50cnkgYnJvdWdodCBnb2xkIGFuZCBzaWx2ZXIgdG8gU29sb21vbi4KQW5kIGtpbmcgU29sb21vbiBtYWRlIHR3byBodW5kcmVkIHRhcmdldHMgb2YgYmVhdGVuIGdvbGQ6IHNpeCBodW5kcmVkIHNoZWtlbHMgb2YgYmVhdGVuIGdvbGQgd2VudCB0byBvbmUgdGFyZ2V0LgpBbmQgdGhyZWUgaHVuZHJlZCBzaGllbGRzIG1hZGUgaGUgb2YgYmVhdGVuIGdvbGQ6IHRocmVlIGh1bmRyZWQgc2hla2VscyBvZiBnb2xkIHdlbnQgdG8gb25lIHNoaWVsZC4gQW5kIHRoZSBraW5nIHB1dCB0aGVtIGluIHRoZSBob3VzZSBvZiB0aGUgZm9yZXN0IG9mIExlYmFub24uCk1vcmVvdmVyIHRoZSBraW5nIG1hZGUgYSBncmVhdCB0aHJvbmUgb2YgaXZvcnksIGFuZCBvdmVybGFpZCBpdCB3aXRoIHB1cmUgZ29sZC4KQW5kIHRoZXJlIHdlcmUgc2l4IHN0ZXBzIHRvIHRoZSB0aHJvbmUsIHdpdGggYSBmb290c3Rvb2wgb2YgZ29sZCwgd2hpY2ggd2VyZSBmYXN0ZW5lZCB0byB0aGUgdGhyb25lLCBhbmQgc3RheXMgb24gZWFjaCBzaWRlIG9mIHRoZSBzaXR0aW5nIHBsYWNlLCBhbmQgdHdvIGxpb25zIHN0YW5kaW5nIGJ5IHRoZSBzdGF5czoKQW5kIHR3ZWx2ZSBsaW9ucyBzdG9vZCB0aGVyZSBvbiB0aGUgb25lIHNpZGUgYW5kIG9uIHRoZSBvdGhlciB1cG9uIHRoZSBzaXggc3RlcHMuIFRoZXJlIHdhcyBub3QgdGhlIGxpa2UgbWFkZSBpbiBhbnkga2luZ2RvbS4KQW5kIGFsbCB0aGUgZHJpbmtpbmcgdmVzc2VscyBvZiBraW5nIFNvbG9tb24gd2VyZSBvZiBnb2xkLCBhbmQgYWxsIHRoZSB2ZXNzZWxzIG9mIHRoZSBob3VzZSBvZiB0aGUgZm9yZXN0IG9mIExlYmFub24gd2VyZSBvZiBwdXJlIGdvbGQ6IG5vbmUgd2VyZSBvZiBzaWx2ZXI7IGl0IHdhcyBub3QgYW55IHRoaW5nIGFjY291bnRlZCBvZiBpbiB0aGUgZGF5cyBvZiBTb2xvbW9uLgpGb3IgdGhlIGtpbmcncyBzaGlwcyB3ZW50IHRvIFRhcnNoaXNoIHdpdGggdGhlIHNlcnZhbnRzIG9mIEh1cmFtOiBldmVyeSB0aHJlZSB5ZWFycyBvbmNlIGNhbWUgdGhlIHNoaXBzIG9mIFRhcnNoaXNoIGJyaW5naW5nIGdvbGQsIGFuZCBzaWx2ZXIsIGl2b3J5LCBhbmQgYXBlcywgYW5kIHBlYWNvY2tzLgpBbmQga2luZyBTb2xvbW9uIHBhc3NlZCBhbGwgdGhlIGtpbmdzIG9mIHRoZSBlYXJ0aCBpbiByaWNoZXMgYW5kIHdpc2RvbS4KQW5kIGFsbCB0aGUga2luZ3Mgb2YgdGhlIGVhcnRoIHNvdWdodCB0aGUgcHJlc2VuY2Ugb2YgU29sb21vbiwgdG8gaGVhciBoaXMgd2lzZG9tLCB0aGF0IEdvZCBoYWQgcHV0IGluIGhpcyBoZWFydC4KQW5kIHRoZXkgYnJvdWdodCBldmVyeSBtYW4gaGlzIHByZXNlbnQsIHZlc3NlbHMgb2Ygc2lsdmVyLCBhbmQgdmVzc2VscyBvZiBnb2xkLCBhbmQgcmFpbWVudCwgaGFybmVzcywgYW5kIHNwaWNlcywgaG9yc2VzLCBhbmQgbXVsZXMsIGEgcmF0ZSB5ZWFyIGJ5IHllYXIuCkFuZCBTb2xvbW9uIGhhZCBmb3VyIHRob3VzYW5kIHN0YWxscyBmb3IgaG9yc2VzIGFuZCBjaGFyaW90cywgYW5kIHR3ZWx2ZSB0aG91c2FuZCBob3JzZW1lbjsgd2hvbSBoZSBiZXN0b3dlZCBpbiB0aGUgY2hhcmlvdCBjaXRpZXMsIGFuZCB3aXRoIHRoZSBraW5nIGF0IEplcnVzYWxlbS4KQW5kIGhlIHJlaWduZWQgb3ZlciBhbGwgdGhlIGtpbmdzIGZyb20gdGhlIHJpdmVyIGV2ZW4gdW50byB0aGUgbGFuZCBvZiB0aGUgUGhpbGlzdGluZXMsIGFuZCB0byB0aGUgYm9yZGVyIG9mIEVneXB0LgpBbmQgdGhlIGtpbmcgbWFkZSBzaWx2ZXIgaW4gSmVydXNhbGVtIGFzIHN0b25lcywgYW5kIGNlZGFyIHRyZWVzIG1hZGUgaGUgYXMgdGhlIHN5Y29tb3JlIHRyZWVzIHRoYXQgYXJlIGluIHRoZSBsb3cgcGxhaW5zIGluIGFidW5kYW5jZS4KQW5kIHRoZXkgYnJvdWdodCB1bnRvIFNvbG9tb24gaG9yc2VzIG91dCBvZiBFZ3lwdCwgYW5kIG91dCBvZiBhbGwgbGFuZHMuCk5vdyB0aGUgcmVzdCBvZiB0aGUgYWN0cyBvZiBTb2xvbW9uLCBmaXJzdCBhbmQgbGFzdCwgYXJlIHRoZXkgbm90IHdyaXR0ZW4gaW4gdGhlIGJvb2sgb2YgTmF0aGFuIHRoZSBwcm9waGV0LCBhbmQgaW4gdGhlIHByb3BoZWN5IG9mIEFoaWphaCB0aGUgU2hpbG9uaXRlLCBhbmQgaW4gdGhlIHZpc2lvbnMgb2YgSWRkbyB0aGUgc2VlciBhZ2FpbnN0IEplcm9ib2FtIHRoZSBzb24gb2YgTmViYXQ/CkFuZCBTb2xvbW9uIHJlaWduZWQgaW4gSmVydXNhbGVtIG92ZXIgYWxsIElzcmFlbCBmb3J0eSB5ZWFycy4KQW5kIFNvbG9tb24gc2xlcHQgd2l0aCBoaXMgZmF0aGVycywgYW5kIGhlIHdhcyBidXJpZWQgaW4gdGhlIGNpdHkgb2YgRGF2aWQgaGlzIGZhdGhlcjogYW5kIFJlaG9ib2FtIGhpcyBzb24gcmVpZ25lZCBpbiBoaXMgc3RlYWQuCkFuZCBSZWhvYm9hbSB3ZW50IHRvIFNoZWNoZW06IGZvciB0byBTaGVjaGVtIHdlcmUgYWxsIElzcmFlbCBjb21lIHRvIG1ha2UgaGltIGtpbmcuCkFuZCBpdCBjYW1lIHRvIHBhc3MsIHdoZW4gSmVyb2JvYW0gdGhlIHNvbiBvZiBOZWJhdCwgd2hvIHdhcyBpbiBFZ3lwdCwgd2hpdGhlciBoZSBmbGVkIGZyb20gdGhlIHByZXNlbmNlIG9mIFNvbG9tb24gdGhlIGtpbmcsIGhlYXJkIGl0LCB0aGF0IEplcm9ib2FtIHJldHVybmVkIG91dCBvZiBFZ3lwdC4KQW5kIHRoZXkgc2VudCBhbmQgY2FsbGVkIGhpbS4gU28gSmVyb2JvYW0gYW5kIGFsbCBJc3JhZWwgY2FtZSBhbmQgc3Bha2UgdG8gUmVob2JvYW0sIHNheWluZywKVGh5IGZhdGhlciBtYWRlIG91ciB5b2tlIGdyaWV2b3VzOiBub3cgdGhlcmVmb3JlIGVhc2UgdGhvdSBzb21ld2hhdCB0aGUgZ3JpZXZvdXMgc2Vydml0dWRlIG9mIHRoeSBmYXRoZXIsIGFuZCBoaXMgaGVhdnkgeW9rZSB0aGF0IGhlIHB1dCB1cG9uIHVzLCBhbmQgd2Ugd2lsbCBzZXJ2ZSB0aGVlLgpBbmQgaGUgc2FpZCB1bnRvIHRoZW0sIENvbWUgYWdhaW4gdW50byBtZSBhZnRlciB0aHJlZSBkYXlzLiBBbmQgdGhlIHBlb3BsZSBkZXBhcnRlZC4KQW5kIGtpbmcgUmVob2JvYW0gdG9vayBjb3Vuc2VsIHdpdGggdGhlIG9sZCBtZW4gdGhhdCBoYWQgc3Rvb2QgYmVmb3JlIFNvbG9tb24gaGlzIGZhdGhlciB3aGlsZSBoZSB5ZXQgbGl2ZWQsIHNheWluZywgV2hhdCBjb3Vuc2VsIGdpdmUgeWUgbWUgdG8gcmV0dXJuIGFuc3dlciB0byB0aGlzIHBlb3BsZT8KQW5kIHRoZXkgc3Bha2UgdW50byBoaW0sIHNheWluZywgSWYgdGhvdSBiZSBraW5kIHRvIHRoaXMgcGVvcGxlLCBhbmQgcGxlYXNlIHRoZW0sIGFuZCBzcGVhayBnb29kIHdvcmRzIHRvIHRoZW0sIHRoZXkgd2lsbCBiZSB0aHkgc2VydmFudHMgZm9yIGV2ZXIuCkJ1dCBoZSBmb3Jzb29rIHRoZSBjb3Vuc2VsIHdoaWNoIHRoZSBvbGQgbWVuIGdhdmUgaGltLCBhbmQgdG9vayBjb3Vuc2VsIHdpdGggdGhlIHlvdW5nIG1lbiB0aGF0IHdlcmUgYnJvdWdodCB1cCB3aXRoIGhpbSwgdGhhdCBzdG9vZCBiZWZvcmUgaGltLgpBbmQgaGUgc2FpZCB1bnRvIHRoZW0sIFdoYXQgYWR2aWNlIGdpdmUgeWUgdGhhdCB3ZSBtYXkgcmV0dXJuIGFuc3dlciB0byB0aGlzIHBlb3BsZSwgd2hpY2ggaGF2ZSBzcG9rZW4gdG8gbWUsIHNheWluZywgRWFzZSBzb21ld2hhdCB0aGUgeW9rZSB0aGF0IHRoeSBmYXRoZXIgZGlkIHB1dCB1cG9uIHVzPwpBbmQgdGhlIHlvdW5nIG1lbiB0aGF0IHdlcmUgYnJvdWdodCB1cCB3aXRoIGhpbSBzcGFrZSB1bnRvIGhpbSwgc2F5aW5nLCBUaHVzIHNoYWx0IHRob3UgYW5zd2VyIHRoZSBwZW9wbGUgdGhhdCBzcGFrZSB1bnRvIHRoZWUsIHNheWluZywgVGh5IGZhdGhlciBtYWRlIG91ciB5b2tlIGhlYXZ5LCBidXQgbWFrZSB0aG91IGl0IHNvbWV3aGF0IGxpZ2h0ZXIgZm9yIHVzOyB0aHVzIHNoYWx0IHRob3Ugc2F5IHVudG8gdGhlbSwgTXkgbGl0dGxlIGZpbmdlciBzaGFsbCBiZSB0aGlja2VyIHRoYW4gbXkgZmF0aGVyJ3MgbG9pbnMuCkZvciB3aGVyZWFzIG15IGZhdGhlciBwdXQgYSBoZWF2eSB5b2tlIHVwb24geW91LCBJIHdpbGwgcHV0IG1vcmUgdG8geW91ciB5b2tlOiBteSBmYXRoZXIgY2hhc3Rpc2VkIHlvdSB3aXRoIHdoaXBzLCBidXQgSSB3aWxsIGNoYXN0aXNlIHlvdSB3aXRoIHNjb3JwaW9ucy4KU28gSmVyb2JvYW0gYW5kIGFsbCB0aGUgcGVvcGxlIGNhbWUgdG8gUmVob2JvYW0gb24gdGhlIHRoaXJkIGRheSwgYXMgdGhlIGtpbmcgYmFkZSwgc2F5aW5nLCBDb21lIGFnYWluIHRvIG1lIG9uIHRoZSB0aGlyZCBkYXkuCkFuZCB0aGUga2luZyBhbnN3ZXJlZCB0aGVtIHJvdWdobHk7IGFuZCBraW5nIFJlaG9ib2FtIGZvcnNvb2sgdGhlIGNvdW5zZWwgb2YgdGhlIG9sZCBtZW4sCkFuZCBhbnN3ZXJlZCB0aGVtIGFmdGVyIHRoZSBhZHZpY2Ugb2YgdGhlIHlvdW5nIG1lbiwgc2F5aW5nLCBNeSBmYXRoZXIgbWFkZSB5b3VyIHlva2UgaGVhdnksIGJ1dCBJIHdpbGwgYWRkIHRoZXJldG86IG15IGZhdGhlciBjaGFzdGlzZWQgeW91IHdpdGggd2hpcHMsIGJ1dCBJIHdpbGwgY2hhc3Rpc2UgeW91IHdpdGggc2NvcnBpb25zLgpTbyB0aGUga2luZyBoZWFya2VuZWQgbm90IHVudG8gdGhlIHBlb3BsZTogZm9yIHRoZSBjYXVzZSB3YXMgb2YgR29kLCB0aGF0IHRoZSBMT1JEIG1pZ2h0IHBlcmZvcm0gaGlzIHdvcmQsIHdoaWNoIGhlIHNwYWtlIGJ5IHRoZSBoYW5kIG9mIEFoaWphaCB0aGUgU2hpbG9uaXRlIHRvIEplcm9ib2FtIHRoZSBzb24gb2YgTmViYXQuCkFuZCB3aGVuIGFsbCBJc3JhZWwgc2F3IHRoYXQgdGhlIGtpbmcgd291bGQgbm90IGhlYXJrZW4gdW50byB0aGVtLCB0aGUgcGVvcGxlIGFuc3dlcmVkIHRoZSBraW5nLCBzYXlpbmcsIFdoYXQgcG9ydGlvbiBoYXZlIHdlIGluIERhdmlkPyBhbmQgd2UgaGF2ZSBub25lIGluaGVyaXRhbmNlIGluIHRoZSBzb24gb2YgSmVzc2U6IGV2ZXJ5IG1hbiB0byB5b3VyIHRlbnRzLCBPIElzcmFlbDogYW5kIG5vdywgRGF2aWQsIHNlZSB0byB0aGluZSBvd24gaG91c2UuIFNvIGFsbCBJc3JhZWwgd2VudCB0byB0aGVpciB0ZW50cy4KQnV0IGFzIGZvciB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIHRoYXQgZHdlbHQgaW4gdGhlIGNpdGllcyBvZiBKdWRhaCwgUmVob2JvYW0gcmVpZ25lZCBvdmVyIHRoZW0uClRoZW4ga2luZyBSZWhvYm9hbSBzZW50IEhhZG9yYW0gdGhhdCB3YXMgb3ZlciB0aGUgdHJpYnV0ZTsgYW5kIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgc3RvbmVkIGhpbSB3aXRoIHN0b25lcywgdGhhdCBoZSBkaWVkLiBCdXQga2luZyBSZWhvYm9hbSBtYWRlIHNwZWVkIHRvIGdldCBoaW0gdXAgdG8gaGlzIGNoYXJpb3QsIHRvIGZsZWUgdG8gSmVydXNhbGVtLgpBbmQgSXNyYWVsIHJlYmVsbGVkIGFnYWluc3QgdGhlIGhvdXNlIG9mIERhdmlkIHVudG8gdGhpcyBkYXkuCkFuZCB3aGVuIFJlaG9ib2FtIHdhcyBjb21lIHRvIEplcnVzYWxlbSwgaGUgZ2F0aGVyZWQgb2YgdGhlIGhvdXNlIG9mIEp1ZGFoIGFuZCBCZW5qYW1pbiBhbiBodW5kcmVkIGFuZCBmb3Vyc2NvcmUgdGhvdXNhbmQgY2hvc2VuIG1lbiwgd2hpY2ggd2VyZSB3YXJyaW9ycywgdG8gZmlnaHQgYWdhaW5zdCBJc3JhZWwsIHRoYXQgaGUgbWlnaHQgYnJpbmcgdGhlIGtpbmdkb20gYWdhaW4gdG8gUmVob2JvYW0uCkJ1dCB0aGUgd29yZCBvZiB0aGUgTE9SRCBjYW1lIHRvIFNoZW1haWFoIHRoZSBtYW4gb2YgR29kLCBzYXlpbmcsClNwZWFrIHVudG8gUmVob2JvYW0gdGhlIHNvbiBvZiBTb2xvbW9uLCBraW5nIG9mIEp1ZGFoLCBhbmQgdG8gYWxsIElzcmFlbCBpbiBKdWRhaCBhbmQgQmVuamFtaW4sIHNheWluZywKVGh1cyBzYWl0aCB0aGUgTE9SRCwgWWUgc2hhbGwgbm90IGdvIHVwLCBub3IgZmlnaHQgYWdhaW5zdCB5b3VyIGJyZXRocmVuOiByZXR1cm4gZXZlcnkgbWFuIHRvIGhpcyBob3VzZTogZm9yIHRoaXMgdGhpbmcgaXMgZG9uZSBvZiBtZS4gQW5kIHRoZXkgb2JleWVkIHRoZSB3b3JkcyBvZiB0aGUgTE9SRCwgYW5kIHJldHVybmVkIGZyb20gZ29pbmcgYWdhaW5zdCBKZXJvYm9hbS4KQW5kIFJlaG9ib2FtIGR3ZWx0IGluIEplcnVzYWxlbSwgYW5kIGJ1aWx0IGNpdGllcyBmb3IgZGVmZW5jZSBpbiBKdWRhaC4KSGUgYnVpbHQgZXZlbiBCZXRobGVoZW0sIGFuZCBFdGFtLCBhbmQgVGVrb2EsCkFuZCBCZXRoenVyLCBhbmQgU2hvY28sIGFuZCBBZHVsbGFtLApBbmQgR2F0aCwgYW5kIE1hcmVzaGFoLCBhbmQgWmlwaCwKQW5kIEFkb3JhaW0sIGFuZCBMYWNoaXNoLCBhbmQgQXpla2FoLApBbmQgWm9yYWgsIGFuZCBBaWphbG9uLCBhbmQgSGVicm9uLCB3aGljaCBhcmUgaW4gSnVkYWggYW5kIGluIEJlbmphbWluIGZlbmNlZCBjaXRpZXMuCkFuZCBoZSBmb3J0aWZpZWQgdGhlIHN0cm9uZyBob2xkcywgYW5kIHB1dCBjYXB0YWlucyBpbiB0aGVtLCBhbmQgc3RvcmUgb2YgdmljdHVhbCwgYW5kIG9mIG9pbCBhbmQgd2luZS4KQW5kIGluIGV2ZXJ5IHNldmVyYWwgY2l0eSBoZSBwdXQgc2hpZWxkcyBhbmQgc3BlYXJzLCBhbmQgbWFkZSB0aGVtIGV4Y2VlZGluZyBzdHJvbmcsIGhhdmluZyBKdWRhaCBhbmQgQmVuamFtaW4gb24gaGlzIHNpZGUuCkFuZCB0aGUgcHJpZXN0cyBhbmQgdGhlIExldml0ZXMgdGhhdCB3ZXJlIGluIGFsbCBJc3JhZWwgcmVzb3J0ZWQgdG8gaGltIG91dCBvZiBhbGwgdGhlaXIgY29hc3RzLgpGb3IgdGhlIExldml0ZXMgbGVmdCB0aGVpciBzdWJ1cmJzIGFuZCB0aGVpciBwb3NzZXNzaW9uLCBhbmQgY2FtZSB0byBKdWRhaCBhbmQgSmVydXNhbGVtOiBmb3IgSmVyb2JvYW0gYW5kIGhpcyBzb25zIGhhZCBjYXN0IHRoZW0gb2ZmIGZyb20gZXhlY3V0aW5nIHRoZSBwcmllc3QncyBvZmZpY2UgdW50byB0aGUgTE9SRDoKQW5kIGhlIG9yZGFpbmVkIGhpbSBwcmllc3RzIGZvciB0aGUgaGlnaCBwbGFjZXMsIGFuZCBmb3IgdGhlIGRldmlscywgYW5kIGZvciB0aGUgY2FsdmVzIHdoaWNoIGhlIGhhZCBtYWRlLgpBbmQgYWZ0ZXIgdGhlbSBvdXQgb2YgYWxsIHRoZSB0cmliZXMgb2YgSXNyYWVsIHN1Y2ggYXMgc2V0IHRoZWlyIGhlYXJ0cyB0byBzZWVrIHRoZSBMT1JEIEdvZCBvZiBJc3JhZWwgY2FtZSB0byBKZXJ1c2FsZW0sIHRvIHNhY3JpZmljZSB1bnRvIHRoZSBMT1JEIEdvZCBvZiB0aGVpciBmYXRoZXJzLgpTbyB0aGV5IHN0cmVuZ3RoZW5lZCB0aGUga2luZ2RvbSBvZiBKdWRhaCwgYW5kIG1hZGUgUmVob2JvYW0gdGhlIHNvbiBvZiBTb2xvbW9uIHN0cm9uZywgdGhyZWUgeWVhcnM6IGZvciB0aHJlZSB5ZWFycyB0aGV5IHdhbGtlZCBpbiB0aGUgd2F5IG9mIERhdmlkIGFuZCBTb2xvbW9uLgpBbmQgUmVob2JvYW0gdG9vayBoaW0gTWFoYWxhdGggdGhlIGRhdWdodGVyIG9mIEplcmltb3RoIHRoZSBzb24gb2YgRGF2aWQgdG8gd2lmZSwgYW5kIEFiaWhhaWwgdGhlIGRhdWdodGVyIG9mIEVsaWFiIHRoZSBzb24gb2YgSmVzc2U7CldoaWNoIGJhcmUgaGltIGNoaWxkcmVuOyBKZXVzaCwgYW5kIFNoYW1hcmlhaCwgYW5kIFphaGFtLgpBbmQgYWZ0ZXIgaGVyIGhlIHRvb2sgTWFhY2hhaCB0aGUgZGF1Z2h0ZXIgb2YgQWJzYWxvbTsgd2hpY2ggYmFyZSBoaW0gQWJpamFoLCBhbmQgQXR0YWksIGFuZCBaaXphLCBhbmQgU2hlbG9taXRoLgpBbmQgUmVob2JvYW0gbG92ZWQgTWFhY2hhaCB0aGUgZGF1Z2h0ZXIgb2YgQWJzYWxvbSBhYm92ZSBhbGwgaGlzIHdpdmVzIGFuZCBoaXMgY29uY3ViaW5lczogKGZvciBoZSB0b29rIGVpZ2h0ZWVuIHdpdmVzLCBhbmQgdGhyZWVzY29yZSBjb25jdWJpbmVzOyBhbmQgYmVnYXQgdHdlbnR5IGFuZCBlaWdodCBzb25zLCBhbmQgdGhyZWVzY29yZSBkYXVnaHRlcnMuKQpBbmQgUmVob2JvYW0gbWFkZSBBYmlqYWggdGhlIHNvbiBvZiBNYWFjaGFoIHRoZSBjaGllZiwgdG8gYmUgcnVsZXIgYW1vbmcgaGlzIGJyZXRocmVuOiBmb3IgaGUgdGhvdWdodCB0byBtYWtlIGhpbSBraW5nLgpBbmQgaGUgZGVhbHQgd2lzZWx5LCBhbmQgZGlzcGVyc2VkIG9mIGFsbCBoaXMgY2hpbGRyZW4gdGhyb3VnaG91dCBhbGwgdGhlIGNvdW50cmllcyBvZiBKdWRhaCBhbmQgQmVuamFtaW4sIHVudG8gZXZlcnkgZmVuY2VkIGNpdHk6IGFuZCBoZSBnYXZlIHRoZW0gdmljdHVhbCBpbiBhYnVuZGFuY2UuIEFuZCBoZSBkZXNpcmVkIG1hbnkgd2l2ZXMuCkFuZCBpdCBjYW1lIHRvIHBhc3MsIHdoZW4gUmVob2JvYW0gaGFkIGVzdGFibGlzaGVkIHRoZSBraW5nZG9tLCBhbmQgaGFkIHN0cmVuZ3RoZW5lZCBoaW1zZWxmLCBoZSBmb3Jzb29rIHRoZSBsYXcgb2YgdGhlIExPUkQsIGFuZCBhbGwgSXNyYWVsIHdpdGggaGltLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB0aGF0IGluIHRoZSBmaWZ0aCB5ZWFyIG9mIGtpbmcgUmVob2JvYW0gU2hpc2hhayBraW5nIG9mIEVneXB0IGNhbWUgdXAgYWdhaW5zdCBKZXJ1c2FsZW0sIGJlY2F1c2UgdGhleSBoYWQgdHJhbnNncmVzc2VkIGFnYWluc3QgdGhlIExPUkQsCldpdGggdHdlbHZlIGh1bmRyZWQgY2hhcmlvdHMsIGFuZCB0aHJlZXNjb3JlIHRob3VzYW5kIGhvcnNlbWVuOiBhbmQgdGhlIHBlb3BsZSB3ZXJlIHdpdGhvdXQgbnVtYmVyIHRoYXQgY2FtZSB3aXRoIGhpbSBvdXQgb2YgRWd5cHQ7IHRoZSBMdWJpbXMsIHRoZSBTdWtraWltcywgYW5kIHRoZSBFdGhpb3BpYW5zLgpBbmQgaGUgdG9vayB0aGUgZmVuY2VkIGNpdGllcyB3aGljaCBwZXJ0YWluZWQgdG8gSnVkYWgsIGFuZCBjYW1lIHRvIEplcnVzYWxlbS4KVGhlbiBjYW1lIFNoZW1haWFoIHRoZSBwcm9waGV0IHRvIFJlaG9ib2FtLCBhbmQgdG8gdGhlIHByaW5jZXMgb2YgSnVkYWgsIHRoYXQgd2VyZSBnYXRoZXJlZCB0b2dldGhlciB0byBKZXJ1c2FsZW0gYmVjYXVzZSBvZiBTaGlzaGFrLCBhbmQgc2FpZCB1bnRvIHRoZW0sIFRodXMgc2FpdGggdGhlIExPUkQsIFllIGhhdmUgZm9yc2FrZW4gbWUsIGFuZCB0aGVyZWZvcmUgaGF2ZSBJIGFsc28gbGVmdCB5b3UgaW4gdGhlIGhhbmQgb2YgU2hpc2hhay4KV2hlcmV1cG9uIHRoZSBwcmluY2VzIG9mIElzcmFlbCBhbmQgdGhlIGtpbmcgaHVtYmxlZCB0aGVtc2VsdmVzOyBhbmQgdGhleSBzYWlkLCBUaGUgTE9SRCBpcyByaWdodGVvdXMuCkFuZCB3aGVuIHRoZSBMT1JEIHNhdyB0aGF0IHRoZXkgaHVtYmxlZCB0aGVtc2VsdmVzLCB0aGUgd29yZCBvZiB0aGUgTE9SRCBjYW1lIHRvIFNoZW1haWFoLCBzYXlpbmcsIFRoZXkgaGF2ZSBodW1ibGVkIHRoZW1zZWx2ZXM7IHRoZXJlZm9yZSBJIHdpbGwgbm90IGRlc3Ryb3kgdGhlbSwgYnV0IEkgd2lsbCBncmFudCB0aGVtIHNvbWUgZGVsaXZlcmFuY2U7IGFuZCBteSB3cmF0aCBzaGFsbCBub3QgYmUgcG91cmVkIG91dCB1cG9uIEplcnVzYWxlbSBieSB0aGUgaGFuZCBvZiBTaGlzaGFrLgpOZXZlcnRoZWxlc3MgdGhleSBzaGFsbCBiZSBoaXMgc2VydmFudHM7IHRoYXQgdGhleSBtYXkga25vdyBteSBzZXJ2aWNlLCBhbmQgdGhlIHNlcnZpY2Ugb2YgdGhlIGtpbmdkb21zIG9mIHRoZSBjb3VudHJpZXMuClNvIFNoaXNoYWsga2luZyBvZiBFZ3lwdCBjYW1lIHVwIGFnYWluc3QgSmVydXNhbGVtLCBhbmQgdG9vayBhd2F5IHRoZSB0cmVhc3VyZXMgb2YgdGhlIGhvdXNlIG9mIHRoZSBMT1JELCBhbmQgdGhlIHRyZWFzdXJlcyBvZiB0aGUga2luZydzIGhvdXNlOyBoZSB0b29rIGFsbDogaGUgY2FycmllZCBhd2F5IGFsc28gdGhlIHNoaWVsZHMgb2YgZ29sZCB3aGljaCBTb2xvbW9uIGhhZCBtYWRlLgpJbnN0ZWFkIG9mIHdoaWNoIGtpbmcgUmVob2JvYW0gbWFkZSBzaGllbGRzIG9mIGJyYXNzLCBhbmQgY29tbWl0dGVkIHRoZW0gdG8gdGhlIGhhbmRzIG9mIHRoZSBjaGllZiBvZiB0aGUgZ3VhcmQsIHRoYXQga2VwdCB0aGUgZW50cmFuY2Ugb2YgdGhlIGtpbmcncyBob3VzZS4KQW5kIHdoZW4gdGhlIGtpbmcgZW50ZXJlZCBpbnRvIHRoZSBob3VzZSBvZiB0aGUgTE9SRCwgdGhlIGd1YXJkIGNhbWUgYW5kIGZldGNoZWQgdGhlbSwgYW5kIGJyb3VnaHQgdGhlbSBhZ2FpbiBpbnRvIHRoZSBndWFyZCBjaGFtYmVyLgpBbmQgd2hlbiBoZSBodW1ibGVkIGhpbXNlbGYsIHRoZSB3cmF0aCBvZiB0aGUgTE9SRCB0dXJuZWQgZnJvbSBoaW0sIHRoYXQgaGUgd291bGQgbm90IGRlc3Ryb3kgaGltIGFsdG9nZXRoZXI6IGFuZCBhbHNvIGluIEp1ZGFoIHRoaW5ncyB3ZW50IHdlbGwuClNvIGtpbmcgUmVob2JvYW0gc3RyZW5ndGhlbmVkIGhpbXNlbGYgaW4gSmVydXNhbGVtLCBhbmQgcmVpZ25lZDogZm9yIFJlaG9ib2FtIHdhcyBvbmUgYW5kIGZvcnR5IHllYXJzIG9sZCB3aGVuIGhlIGJlZ2FuIHRvIHJlaWduLCBhbmQgaGUgcmVpZ25lZCBzZXZlbnRlZW4geWVhcnMgaW4gSmVydXNhbGVtLCB0aGUgY2l0eSB3aGljaCB0aGUgTE9SRCBoYWQgY2hvc2VuIG91dCBvZiBhbGwgdGhlIHRyaWJlcyBvZiBJc3JhZWwsIHRvIHB1dCBoaXMgbmFtZSB0aGVyZS4gQW5kIGhpcyBtb3RoZXIncyBuYW1lIHdhcyBOYWFtYWggYW4gQW1tb25pdGVzcy4KQW5kIGhlIGRpZCBldmlsLCBiZWNhdXNlIGhlIHByZXBhcmVkIG5vdCBoaXMgaGVhcnQgdG8gc2VlayB0aGUgTE9SRC4KTm93IHRoZSBhY3RzIG9mIFJlaG9ib2FtLCBmaXJzdCBhbmQgbGFzdCwgYXJlIHRoZXkgbm90IHdyaXR0ZW4gaW4gdGhlIGJvb2sgb2YgU2hlbWFpYWggdGhlIHByb3BoZXQsIGFuZCBvZiBJZGRvIHRoZSBzZWVyIGNvbmNlcm5pbmcgZ2VuZWFsb2dpZXM/IEFuZCB0aGVyZSB3ZXJlIHdhcnMgYmV0d2VlbiBSZWhvYm9hbSBhbmQgSmVyb2JvYW0gY29udGludWFsbHkuCkFuZCBSZWhvYm9hbSBzbGVwdCB3aXRoIGhpcyBmYXRoZXJzLCBhbmQgd2FzIGJ1cmllZCBpbiB0aGUgY2l0eSBvZiBEYXZpZDogYW5kIEFiaWphaCBoaXMgc29uIHJlaWduZWQgaW4gaGlzIHN0ZWFkLgpOb3cgaW4gdGhlIGVpZ2h0ZWVudGggeWVhciBvZiBraW5nIEplcm9ib2FtIGJlZ2FuIEFiaWphaCB0byByZWlnbiBvdmVyIEp1ZGFoLgpIZSByZWlnbmVkIHRocmVlIHllYXJzIGluIEplcnVzYWxlbS4gSGlzIG1vdGhlcidzIG5hbWUgYWxzbyB3YXMgTWljaGFpYWggdGhlIGRhdWdodGVyIG9mIFVyaWVsIG9mIEdpYmVhaC4gQW5kIHRoZXJlIHdhcyB3YXIgYmV0d2VlbiBBYmlqYWggYW5kIEplcm9ib2FtLgpBbmQgQWJpamFoIHNldCB0aGUgYmF0dGxlIGluIGFycmF5IHdpdGggYW4gYXJteSBvZiB2YWxpYW50IG1lbiBvZiB3YXIsIGV2ZW4gZm91ciBodW5kcmVkIHRob3VzYW5kIGNob3NlbiBtZW46IEplcm9ib2FtIGFsc28gc2V0IHRoZSBiYXR0bGUgaW4gYXJyYXkgYWdhaW5zdCBoaW0gd2l0aCBlaWdodCBodW5kcmVkIHRob3VzYW5kIGNob3NlbiBtZW4sIGJlaW5nIG1pZ2h0eSBtZW4gb2YgdmFsb3VyLgpBbmQgQWJpamFoIHN0b29kIHVwIHVwb24gbW91bnQgWmVtYXJhaW0sIHdoaWNoIGlzIGluIG1vdW50IEVwaHJhaW0sIGFuZCBzYWlkLCBIZWFyIG1lLCB0aG91IEplcm9ib2FtLCBhbmQgYWxsIElzcmFlbDsKT3VnaHQgeWUgbm90IHRvIGtub3cgdGhhdCB0aGUgTE9SRCBHb2Qgb2YgSXNyYWVsIGdhdmUgdGhlIGtpbmdkb20gb3ZlciBJc3JhZWwgdG8gRGF2aWQgZm9yIGV2ZXIsIGV2ZW4gdG8gaGltIGFuZCB0byBoaXMgc29ucyBieSBhIGNvdmVuYW50IG9mIHNhbHQ/CllldCBKZXJvYm9hbSB0aGUgc29uIG9mIE5lYmF0LCB0aGUgc2VydmFudCBvZiBTb2xvbW9uIHRoZSBzb24gb2YgRGF2aWQsIGlzIHJpc2VuIHVwLCBhbmQgaGF0aCByZWJlbGxlZCBhZ2FpbnN0IGhpcyBsb3JkLgpBbmQgdGhlcmUgYXJlIGdhdGhlcmVkIHVudG8gaGltIHZhaW4gbWVuLCB0aGUgY2hpbGRyZW4gb2YgQmVsaWFsLCBhbmQgaGF2ZSBzdHJlbmd0aGVuZWQgdGhlbXNlbHZlcyBhZ2FpbnN0IFJlaG9ib2FtIHRoZSBzb24gb2YgU29sb21vbiwgd2hlbiBSZWhvYm9hbSB3YXMgeW91bmcgYW5kIHRlbmRlcmhlYXJ0ZWQsIGFuZCBjb3VsZCBub3Qgd2l0aHN0YW5kIHRoZW0uCkFuZCBub3cgeWUgdGhpbmsgdG8gd2l0aHN0YW5kIHRoZSBraW5nZG9tIG9mIHRoZSBMT1JEIGluIHRoZSBoYW5kIG9mIHRoZSBzb25zIG9mIERhdmlkOyBhbmQgeWUgYmUgYSBncmVhdCBtdWx0aXR1ZGUsIGFuZCB0aGVyZSBhcmUgd2l0aCB5b3VyIGdvbGRlbiBjYWx2ZXMsIHdoaWNoIEplcm9ib2FtIG1hZGUgeW91IGZvciBnb2RzLgpIYXZlIHllIG5vdCBjYXN0IG91dCB0aGUgcHJpZXN0cyBvZiB0aGUgTE9SRCwgdGhlIHNvbnMgb2YgQWFyb24sIGFuZCB0aGUgTGV2aXRlcywgYW5kIGhhdmUgbWFkZSB5b3UgcHJpZXN0cyBhZnRlciB0aGUgbWFubmVyIG9mIHRoZSBuYXRpb25zIG9mIG90aGVyIGxhbmRzPyBzbyB0aGF0IHdob3NvZXZlciBjb21ldGggdG8gY29uc2VjcmF0ZSBoaW1zZWxmIHdpdGggYSB5b3VuZyBidWxsb2NrIGFuZCBzZXZlbiByYW1zLCB0aGUgc2FtZSBtYXkgYmUgYSBwcmllc3Qgb2YgdGhlbSB0aGF0IGFyZSBubyBnb2RzLgpCdXQgYXMgZm9yIHVzLCB0aGUgTE9SRCBpcyBvdXIgR29kLCBhbmQgd2UgaGF2ZSBub3QgZm9yc2FrZW4gaGltOyBhbmQgdGhlIHByaWVzdHMsIHdoaWNoIG1pbmlzdGVyIHVudG8gdGhlIExPUkQsIGFyZSB0aGUgc29ucyBvZiBBYXJvbiwgYW5kIHRoZSBMZXZpdGVzIHdhaXQgdXBvbiB0aGVpciBidXNpbmVzczoKQW5kIHRoZXkgYnVybiB1bnRvIHRoZSBMT1JEIGV2ZXJ5IG1vcm5pbmcgYW5kIGV2ZXJ5IGV2ZW5pbmcgYnVybnQgc2FjcmlmaWNlcyBhbmQgc3dlZXQgaW5jZW5zZTogdGhlIHNoZXdicmVhZCBhbHNvIHNldCB0aGV5IGluIG9yZGVyIHVwb24gdGhlIHB1cmUgdGFibGU7IGFuZCB0aGUgY2FuZGxlc3RpY2sgb2YgZ29sZCB3aXRoIHRoZSBsYW1wcyB0aGVyZW9mLCB0byBidXJuIGV2ZXJ5IGV2ZW5pbmc6IGZvciB3ZSBrZWVwIHRoZSBjaGFyZ2Ugb2YgdGhlIExPUkQgb3VyIEdvZDsgYnV0IHllIGhhdmUgZm9yc2FrZW4gaGltLgpBbmQsIGJlaG9sZCwgR29kIGhpbXNlbGYgaXMgd2l0aCB1cyBmb3Igb3VyIGNhcHRhaW4sIGFuZCBoaXMgcHJpZXN0cyB3aXRoIHNvdW5kaW5nIHRydW1wZXRzIHRvIGNyeSBhbGFybSBhZ2FpbnN0IHlvdS4gTyBjaGlsZHJlbiBvZiBJc3JhZWwsIGZpZ2h0IHllIG5vdCBhZ2FpbnN0IHRoZSBMT1JEIEdvZCBvZiB5b3VyIGZhdGhlcnM7IGZvciB5ZSBzaGFsbCBub3QgcHJvc3Blci4KQnV0IEplcm9ib2FtIGNhdXNlZCBhbiBhbWJ1c2htZW50IHRvIGNvbWUgYWJvdXQgYmVoaW5kIHRoZW06IHNvIHRoZXkgd2VyZSBiZWZvcmUgSnVkYWgsIGFuZCB0aGUgYW1idXNobWVudCB3YXMgYmVoaW5kIHRoZW0uCkFuZCB3aGVuIEp1ZGFoIGxvb2tlZCBiYWNrLCBiZWhvbGQsIHRoZSBiYXR0bGUgd2FzIGJlZm9yZSBhbmQgYmVoaW5kOiBhbmQgdGhleSBjcmllZCB1bnRvIHRoZSBMT1JELCBhbmQgdGhlIHByaWVzdHMgc291bmRlZCB3aXRoIHRoZSB0cnVtcGV0cy4KVGhlbiB0aGUgbWVuIG9mIEp1ZGFoIGdhdmUgYSBzaG91dDogYW5kIGFzIHRoZSBtZW4gb2YgSnVkYWggc2hvdXRlZCwgaXQgY2FtZSB0byBwYXNzLCB0aGF0IEdvZCBzbW90ZSBKZXJvYm9hbSBhbmQgYWxsIElzcmFlbCBiZWZvcmUgQWJpamFoIGFuZCBKdWRhaC4KQW5kIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgZmxlZCBiZWZvcmUgSnVkYWg6IGFuZCBHb2QgZGVsaXZlcmVkIHRoZW0gaW50byB0aGVpciBoYW5kLgpBbmQgQWJpamFoIGFuZCBoaXMgcGVvcGxlIHNsZXcgdGhlbSB3aXRoIGEgZ3JlYXQgc2xhdWdodGVyOiBzbyB0aGVyZSBmZWxsIGRvd24gc2xhaW4gb2YgSXNyYWVsIGZpdmUgaHVuZHJlZCB0aG91c2FuZCBjaG9zZW4gbWVuLgpUaHVzIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgd2VyZSBicm91Z2h0IHVuZGVyIGF0IHRoYXQgdGltZSwgYW5kIHRoZSBjaGlsZHJlbiBvZiBKdWRhaCBwcmV2YWlsZWQsIGJlY2F1c2UgdGhleSByZWxpZWQgdXBvbiB0aGUgTE9SRCBHb2Qgb2YgdGhlaXIgZmF0aGVycy4KQW5kIEFiaWphaCBwdXJzdWVkIGFmdGVyIEplcm9ib2FtLCBhbmQgdG9vayBjaXRpZXMgZnJvbSBoaW0sIEJldGhlbCB3aXRoIHRoZSB0b3ducyB0aGVyZW9mLCBhbmQgSmVzaGFuYWggd2l0aCB0aGUgdG93bnMgdGhlcmVvZiwgYW5kIEVwaHJhaW0gd2l0aCB0aGUgdG93bnMgdGhlcmVvZi4KTmVpdGhlciBkaWQgSmVyb2JvYW0gcmVjb3ZlciBzdHJlbmd0aCBhZ2FpbiBpbiB0aGUgZGF5cyBvZiBBYmlqYWg6IGFuZCB0aGUgTE9SRCBzdHJ1Y2sgaGltLCBhbmQgaGUgZGllZC4KQnV0IEFiaWphaCB3YXhlZCBtaWdodHksIGFuZCBtYXJyaWVkIGZvdXJ0ZWVuIHdpdmVzLCBhbmQgYmVnYXQgdHdlbnR5IGFuZCB0d28gc29ucywgYW5kIHNpeHRlZW4gZGF1Z2h0ZXJzLgpBbmQgdGhlIHJlc3Qgb2YgdGhlIGFjdHMgb2YgQWJpamFoLCBhbmQgaGlzIHdheXMsIGFuZCBoaXMgc2F5aW5ncywgYXJlIHdyaXR0ZW4gaW4gdGhlIHN0b3J5IG9mIHRoZSBwcm9waGV0IElkZG8uClNvIEFiaWphaCBzbGVwdCB3aXRoIGhpcyBmYXRoZXJzLCBhbmQgdGhleSBidXJpZWQgaGltIGluIHRoZSBjaXR5IG9mIERhdmlkOiBhbmQgQXNhIGhpcyBzb24gcmVpZ25lZCBpbiBoaXMgc3RlYWQuIEluIGhpcyBkYXlzIHRoZSBsYW5kIHdhcyBxdWlldCB0ZW4geWVhcnMuCkFuZCBBc2EgZGlkIHRoYXQgd2hpY2ggd2FzIGdvb2QgYW5kIHJpZ2h0IGluIHRoZSBleWVzIG9mIHRoZSBMT1JEIGhpcyBHb2Q6CkZvciBoZSB0b29rIGF3YXkgdGhlIGFsdGFycyBvZiB0aGUgc3RyYW5nZSBnb2RzLCBhbmQgdGhlIGhpZ2ggcGxhY2VzLCBhbmQgYnJha2UgZG93biB0aGUgaW1hZ2VzLCBhbmQgY3V0IGRvd24gdGhlIGdyb3ZlczoKQW5kIGNvbW1hbmRlZCBKdWRhaCB0byBzZWVrIHRoZSBMT1JEIEdvZCBvZiB0aGVpciBmYXRoZXJzLCBhbmQgdG8gZG8gdGhlIGxhdyBhbmQgdGhlIGNvbW1hbmRtZW50LgpBbHNvIGhlIHRvb2sgYXdheSBvdXQgb2YgYWxsIHRoZSBjaXRpZXMgb2YgSnVkYWggdGhlIGhpZ2ggcGxhY2VzIGFuZCB0aGUgaW1hZ2VzOiBhbmQgdGhlIGtpbmdkb20gd2FzIHF1aWV0IGJlZm9yZSBoaW0uCkFuZCBoZSBidWlsdCBmZW5jZWQgY2l0aWVzIGluIEp1ZGFoOiBmb3IgdGhlIGxhbmQgaGFkIHJlc3QsIGFuZCBoZSBoYWQgbm8gd2FyIGluIHRob3NlIHllYXJzOyBiZWNhdXNlIHRoZSBMT1JEIGhhZCBnaXZlbiBoaW0gcmVzdC4KVGhlcmVmb3JlIGhlIHNhaWQgdW50byBKdWRhaCwgTGV0IHVzIGJ1aWxkIHRoZXNlIGNpdGllcywgYW5kIG1ha2UgYWJvdXQgdGhlbSB3YWxscywgYW5kIHRvd2VycywgZ2F0ZXMsIGFuZCBiYXJzLCB3aGlsZSB0aGUgbGFuZCBpcyB5ZXQgYmVmb3JlIHVzOyBiZWNhdXNlIHdlIGhhdmUgc291Z2h0IHRoZSBMT1JEIG91ciBHb2QsIHdlIGhhdmUgc291Z2h0IGhpbSwgYW5kIGhlIGhhdGggZ2l2ZW4gdXMgcmVzdCBvbiBldmVyeSBzaWRlLiBTbyB0aGV5IGJ1aWx0IGFuZCBwcm9zcGVyZWQuCkFuZCBBc2EgaGFkIGFuIGFybXkgb2YgbWVuIHRoYXQgYmFyZSB0YXJnZXRzIGFuZCBzcGVhcnMsIG91dCBvZiBKdWRhaCB0aHJlZSBodW5kcmVkIHRob3VzYW5kOyBhbmQgb3V0IG9mIEJlbmphbWluLCB0aGF0IGJhcmUgc2hpZWxkcyBhbmQgZHJldyBib3dzLCB0d28gaHVuZHJlZCBhbmQgZm91cnNjb3JlIHRob3VzYW5kOiBhbGwgdGhlc2Ugd2VyZSBtaWdodHkgbWVuIG9mIHZhbG91ci4KQW5kIHRoZXJlIGNhbWUgb3V0IGFnYWluc3QgdGhlbSBaZXJhaCB0aGUgRXRoaW9waWFuIHdpdGggYW4gaG9zdCBvZiBhIHRob3VzYW5kIHRob3VzYW5kLCBhbmQgdGhyZWUgaHVuZHJlZCBjaGFyaW90czsgYW5kIGNhbWUgdW50byBNYXJlc2hhaC4KVGhlbiBBc2Egd2VudCBvdXQgYWdhaW5zdCBoaW0sIGFuZCB0aGV5IHNldCB0aGUgYmF0dGxlIGluIGFycmF5IGluIHRoZSB2YWxsZXkgb2YgWmVwaGF0aGFoIGF0IE1hcmVzaGFoLgpBbmQgQXNhIGNyaWVkIHVudG8gdGhlIExPUkQgaGlzIEdvZCwgYW5kIHNhaWQsIExPUkQsIGl0IGlzIG5vdGhpbmcgd2l0aCB0aGVlIHRvIGhlbHAsIHdoZXRoZXIgd2l0aCBtYW55LCBvciB3aXRoIHRoZW0gdGhhdCBoYXZlIG5vIHBvd2VyOiBoZWxwIHVzLCBPIExPUkQgb3VyIEdvZDsgZm9yIHdlIHJlc3Qgb24gdGhlZSwgYW5kIGluIHRoeSBuYW1lIHdlIGdvIGFnYWluc3QgdGhpcyBtdWx0aXR1ZGUuIE8gTE9SRCwgdGhvdSBhcnQgb3VyIEdvZDsgbGV0IG5vIG1hbiBwcmV2YWlsIGFnYWluc3QgdGhlZS4KU28gdGhlIExPUkQgc21vdGUgdGhlIEV0aGlvcGlhbnMgYmVmb3JlIEFzYSwgYW5kIGJlZm9yZSBKdWRhaDsgYW5kIHRoZSBFdGhpb3BpYW5zIGZsZWQuCkFuZCBBc2EgYW5kIHRoZSBwZW9wbGUgdGhhdCB3ZXJlIHdpdGggaGltIHB1cnN1ZWQgdGhlbSB1bnRvIEdlcmFyOiBhbmQgdGhlIEV0aGlvcGlhbnMgd2VyZSBvdmVydGhyb3duLCB0aGF0IHRoZXkgY291bGQgbm90IHJlY292ZXIgdGhlbXNlbHZlczsgZm9yIHRoZXkgd2VyZSBkZXN0cm95ZWQgYmVmb3JlIHRoZSBMT1JELCBhbmQgYmVmb3JlIGhpcyBob3N0OyBhbmQgdGhleSBjYXJyaWVkIGF3YXkgdmVyeSBtdWNoIHNwb2lsLgpBbmQgdGhleSBzbW90ZSBhbGwgdGhlIGNpdGllcyByb3VuZCBhYm91dCBHZXJhcjsgZm9yIHRoZSBmZWFyIG9mIHRoZSBMT1JEIGNhbWUgdXBvbiB0aGVtOiBhbmQgdGhleSBzcG9pbGVkIGFsbCB0aGUgY2l0aWVzOyBmb3IgdGhlcmUgd2FzIGV4Y2VlZGluZyBtdWNoIHNwb2lsIGluIHRoZW0uClRoZXkgc21vdGUgYWxzbyB0aGUgdGVudHMgb2YgY2F0dGxlLCBhbmQgY2FycmllZCBhd2F5IHNoZWVwIGFuZCBjYW1lbHMgaW4gYWJ1bmRhbmNlLCBhbmQgcmV0dXJuZWQgdG8gSmVydXNhbGVtLgpBbmQgdGhlIFNwaXJpdCBvZiBHb2QgY2FtZSB1cG9uIEF6YXJpYWggdGhlIHNvbiBvZiBPZGVkOgpBbmQgaGUgd2VudCBvdXQgdG8gbWVldCBBc2EsIGFuZCBzYWlkIHVudG8gaGltLCBIZWFyIHllIG1lLCBBc2EsIGFuZCBhbGwgSnVkYWggYW5kIEJlbmphbWluOyBUaGUgTE9SRCBpcyB3aXRoIHlvdSwgd2hpbGUgeWUgYmUgd2l0aCBoaW07IGFuZCBpZiB5ZSBzZWVrIGhpbSwgaGUgd2lsbCBiZSBmb3VuZCBvZiB5b3U7IGJ1dCBpZiB5ZSBmb3JzYWtlIGhpbSwgaGUgd2lsbCBmb3JzYWtlIHlvdS4KTm93IGZvciBhIGxvbmcgc2Vhc29uIElzcmFlbCBoYXRoIGJlZW4gd2l0aG91dCB0aGUgdHJ1ZSBHb2QsIGFuZCB3aXRob3V0IGEgdGVhY2hpbmcgcHJpZXN0LCBhbmQgd2l0aG91dCBsYXcuCkJ1dCB3aGVuIHRoZXkgaW4gdGhlaXIgdHJvdWJsZSBkaWQgdHVybiB1bnRvIHRoZSBMT1JEIEdvZCBvZiBJc3JhZWwsIGFuZCBzb3VnaHQgaGltLCBoZSB3YXMgZm91bmQgb2YgdGhlbS4KQW5kIGluIHRob3NlIHRpbWVzIHRoZXJlIHdhcyBubyBwZWFjZSB0byBoaW0gdGhhdCB3ZW50IG91dCwgbm9yIHRvIGhpbSB0aGF0IGNhbWUgaW4sIGJ1dCBncmVhdCB2ZXhhdGlvbnMgd2VyZSB1cG9uIGFsbCB0aGUgaW5oYWJpdGFudHMgb2YgdGhlIGNvdW50cmllcy4KQW5kIG5hdGlvbiB3YXMgZGVzdHJveWVkIG9mIG5hdGlvbiwgYW5kIGNpdHkgb2YgY2l0eTogZm9yIEdvZCBkaWQgdmV4IHRoZW0gd2l0aCBhbGwgYWR2ZXJzaXR5LgpCZSB5ZSBzdHJvbmcgdGhlcmVmb3JlLCBhbmQgbGV0IG5vdCB5b3VyIGhhbmRzIGJlIHdlYWs6IGZvciB5b3VyIHdvcmsgc2hhbGwgYmUgcmV3YXJkZWQuCkFuZCB3aGVuIEFzYSBoZWFyZCB0aGVzZSB3b3JkcywgYW5kIHRoZSBwcm9waGVjeSBvZiBPZGVkIHRoZSBwcm9waGV0LCBoZSB0b29rIGNvdXJhZ2UsIGFuZCBwdXQgYXdheSB0aGUgYWJvbWluYWJsZSBpZG9scyBvdXQgb2YgYWxsIHRoZSBsYW5kIG9mIEp1ZGFoIGFuZCBCZW5qYW1pbiwgYW5kIG91dCBvZiB0aGUgY2l0aWVzIHdoaWNoIGhlIGhhZCB0YWtlbiBmcm9tIG1vdW50IEVwaHJhaW0sIGFuZCByZW5ld2VkIHRoZSBhbHRhciBvZiB0aGUgTE9SRCwgdGhhdCB3YXMgYmVmb3JlIHRoZSBwb3JjaCBvZiB0aGUgTE9SRC4KQW5kIGhlIGdhdGhlcmVkIGFsbCBKdWRhaCBhbmQgQmVuamFtaW4sIGFuZCB0aGUgc3RyYW5nZXJzIHdpdGggdGhlbSBvdXQgb2YgRXBocmFpbSBhbmQgTWFuYXNzZWgsIGFuZCBvdXQgb2YgU2ltZW9uOiBmb3IgdGhleSBmZWxsIHRvIGhpbSBvdXQgb2YgSXNyYWVsIGluIGFidW5kYW5jZSwgd2hlbiB0aGV5IHNhdyB0aGF0IHRoZSBMT1JEIGhpcyBHb2Qgd2FzIHdpdGggaGltLgpTbyB0aGV5IGdhdGhlcmVkIHRoZW1zZWx2ZXMgdG9nZXRoZXIgYXQgSmVydXNhbGVtIGluIHRoZSB0aGlyZCBtb250aCwgaW4gdGhlIGZpZnRlZW50aCB5ZWFyIG9mIHRoZSByZWlnbiBvZiBBc2EuCkFuZCB0aGV5IG9mZmVyZWQgdW50byB0aGUgTE9SRCB0aGUgc2FtZSB0aW1lLCBvZiB0aGUgc3BvaWwgd2hpY2ggdGhleSBoYWQgYnJvdWdodCwgc2V2ZW4gaHVuZHJlZCBveGVuIGFuZCBzZXZlbiB0aG91c2FuZCBzaGVlcC4KQW5kIHRoZXkgZW50ZXJlZCBpbnRvIGEgY292ZW5hbnQgdG8gc2VlayB0aGUgTE9SRCBHb2Qgb2YgdGhlaXIgZmF0aGVycyB3aXRoIGFsbCB0aGVpciBoZWFydCBhbmQgd2l0aCBhbGwgdGhlaXIgc291bDsKVGhhdCB3aG9zb2V2ZXIgd291bGQgbm90IHNlZWsgdGhlIExPUkQgR29kIG9mIElzcmFlbCBzaG91bGQgYmUgcHV0IHRvIGRlYXRoLCB3aGV0aGVyIHNtYWxsIG9yIGdyZWF0LCB3aGV0aGVyIG1hbiBvciB3b21hbi4KQW5kIHRoZXkgc3dhcmUgdW50byB0aGUgTE9SRCB3aXRoIGEgbG91ZCB2b2ljZSwgYW5kIHdpdGggc2hvdXRpbmcsIGFuZCB3aXRoIHRydW1wZXRzLCBhbmQgd2l0aCBjb3JuZXRzLgpBbmQgYWxsIEp1ZGFoIHJlam9pY2VkIGF0IHRoZSBvYXRoOiBmb3IgdGhleSBoYWQgc3dvcm4gd2l0aCBhbGwgdGhlaXIgaGVhcnQsIGFuZCBzb3VnaHQgaGltIHdpdGggdGhlaXIgd2hvbGUgZGVzaXJlOyBhbmQgaGUgd2FzIGZvdW5kIG9mIHRoZW06IGFuZCB0aGUgTE9SRCBnYXZlIHRoZW0gcmVzdCByb3VuZCBhYm91dC4KQW5kIGFsc28gY29uY2VybmluZyBNYWFjaGFoIHRoZSBtb3RoZXIgb2YgQXNhIHRoZSBraW5nLCBoZSByZW1vdmVkIGhlciBmcm9tIGJlaW5nIHF1ZWVuLCBiZWNhdXNlIHNoZSBoYWQgbWFkZSBhbiBpZG9sIGluIGEgZ3JvdmU6IGFuZCBBc2EgY3V0IGRvd24gaGVyIGlkb2wsIGFuZCBzdGFtcGVkIGl0LCBhbmQgYnVybnQgaXQgYXQgdGhlIGJyb29rIEtpZHJvbi4KQnV0IHRoZSBoaWdoIHBsYWNlcyB3ZXJlIG5vdCB0YWtlbiBhd2F5IG91dCBvZiBJc3JhZWw6IG5ldmVydGhlbGVzcyB0aGUgaGVhcnQgb2YgQXNhIHdhcyBwZXJmZWN0IGFsbCBoaXMgZGF5cy4KQW5kIGhlIGJyb3VnaHQgaW50byB0aGUgaG91c2Ugb2YgR29kIHRoZSB0aGluZ3MgdGhhdCBoaXMgZmF0aGVyIGhhZCBkZWRpY2F0ZWQsIGFuZCB0aGF0IGhlIGhpbXNlbGYgaGFkIGRlZGljYXRlZCwgc2lsdmVyLCBhbmQgZ29sZCwgYW5kIHZlc3NlbHMuCkFuZCB0aGVyZSB3YXMgbm8gbW9yZSB3YXIgdW50byB0aGUgZml2ZSBhbmQgdGhpcnRpZXRoIHllYXIgb2YgdGhlIHJlaWduIG9mIEFzYS4KSW4gdGhlIHNpeCBhbmQgdGhpcnRpZXRoIHllYXIgb2YgdGhlIHJlaWduIG9mIEFzYSBCYWFzaGEga2luZyBvZiBJc3JhZWwgY2FtZSB1cCBhZ2FpbnN0IEp1ZGFoLCBhbmQgYnVpbHQgUmFtYWgsIHRvIHRoZSBpbnRlbnQgdGhhdCBoZSBtaWdodCBsZXQgbm9uZSBnbyBvdXQgb3IgY29tZSBpbiB0byBBc2Ega2luZyBvZiBKdWRhaC4KVGhlbiBBc2EgYnJvdWdodCBvdXQgc2lsdmVyIGFuZCBnb2xkIG91dCBvZiB0aGUgdHJlYXN1cmVzIG9mIHRoZSBob3VzZSBvZiB0aGUgTE9SRCBhbmQgb2YgdGhlIGtpbmcncyBob3VzZSwgYW5kIHNlbnQgdG8gQmVuaGFkYWQga2luZyBvZiBTeXJpYSwgdGhhdCBkd2VsdCBhdCBEYW1hc2N1cywgc2F5aW5nLApUaGVyZSBpcyBhIGxlYWd1ZSBiZXR3ZWVuIG1lIGFuZCB0aGVlLCBhcyB0aGVyZSB3YXMgYmV0d2VlbiBteSBmYXRoZXIgYW5kIHRoeSBmYXRoZXI6IGJlaG9sZCwgSSBoYXZlIHNlbnQgdGhlZSBzaWx2ZXIgYW5kIGdvbGQ7IGdvLCBicmVhayB0aHkgbGVhZ3VlIHdpdGggQmFhc2hhIGtpbmcgb2YgSXNyYWVsLCB0aGF0IGhlIG1heSBkZXBhcnQgZnJvbSBtZS4KQW5kIEJlbmhhZGFkIGhlYXJrZW5lZCB1bnRvIGtpbmcgQXNhLCBhbmQgc2VudCB0aGUgY2FwdGFpbnMgb2YgaGlzIGFybWllcyBhZ2FpbnN0IHRoZSBjaXRpZXMgb2YgSXNyYWVsOyBhbmQgdGhleSBzbW90ZSBJam9uLCBhbmQgRGFuLCBhbmQgQWJlbG1haW0sIGFuZCBhbGwgdGhlIHN0b3JlIGNpdGllcyBvZiBOYXBodGFsaS4KQW5kIGl0IGNhbWUgdG8gcGFzcywgd2hlbiBCYWFzaGEgaGVhcmQgaXQsIHRoYXQgaGUgbGVmdCBvZmYgYnVpbGRpbmcgb2YgUmFtYWgsIGFuZCBsZXQgaGlzIHdvcmsgY2Vhc2UuClRoZW4gQXNhIHRoZSBraW5nIHRvb2sgYWxsIEp1ZGFoOyBhbmQgdGhleSBjYXJyaWVkIGF3YXkgdGhlIHN0b25lcyBvZiBSYW1haCwgYW5kIHRoZSB0aW1iZXIgdGhlcmVvZiwgd2hlcmV3aXRoIEJhYXNoYSB3YXMgYnVpbGRpbmc7IGFuZCBoZSBidWlsdCB0aGVyZXdpdGggR2ViYSBhbmQgTWl6cGFoLgpBbmQgYXQgdGhhdCB0aW1lIEhhbmFuaSB0aGUgc2VlciBjYW1lIHRvIEFzYSBraW5nIG9mIEp1ZGFoLCBhbmQgc2FpZCB1bnRvIGhpbSwgQmVjYXVzZSB0aG91IGhhc3QgcmVsaWVkIG9uIHRoZSBraW5nIG9mIFN5cmlhLCBhbmQgbm90IHJlbGllZCBvbiB0aGUgTE9SRCB0aHkgR29kLCB0aGVyZWZvcmUgaXMgdGhlIGhvc3Qgb2YgdGhlIGtpbmcgb2YgU3lyaWEgZXNjYXBlZCBvdXQgb2YgdGhpbmUgaGFuZC4KV2VyZSBub3QgdGhlIEV0aGlvcGlhbnMgYW5kIHRoZSBMdWJpbXMgYSBodWdlIGhvc3QsIHdpdGggdmVyeSBtYW55IGNoYXJpb3RzIGFuZCBob3JzZW1lbj8geWV0LCBiZWNhdXNlIHRob3UgZGlkc3QgcmVseSBvbiB0aGUgTE9SRCwgaGUgZGVsaXZlcmVkIHRoZW0gaW50byB0aGluZSBoYW5kLgpGb3IgdGhlIGV5ZXMgb2YgdGhlIExPUkQgcnVuIHRvIGFuZCBmcm8gdGhyb3VnaG91dCB0aGUgd2hvbGUgZWFydGgsIHRvIHNoZXcgaGltc2VsZiBzdHJvbmcgaW4gdGhlIGJlaGFsZiBvZiB0aGVtIHdob3NlIGhlYXJ0IGlzIHBlcmZlY3QgdG93YXJkIGhpbS4gSGVyZWluIHRob3UgaGFzdCBkb25lIGZvb2xpc2hseTogdGhlcmVmb3JlIGZyb20gaGVuY2Vmb3J0aCB0aG91IHNoYWx0IGhhdmUgd2Fycy4KVGhlbiBBc2Egd2FzIHdyb3RoIHdpdGggdGhlIHNlZXIsIGFuZCBwdXQgaGltIGluIGEgcHJpc29uIGhvdXNlOyBmb3IgaGUgd2FzIGluIGEgcmFnZSB3aXRoIGhpbSBiZWNhdXNlIG9mIHRoaXMgdGhpbmcuIEFuZCBBc2Egb3BwcmVzc2VkIHNvbWUgb2YgdGhlIHBlb3BsZSB0aGUgc2FtZSB0aW1lLgpBbmQsIGJlaG9sZCwgdGhlIGFjdHMgb2YgQXNhLCBmaXJzdCBhbmQgbGFzdCwgbG8sIHRoZXkgYXJlIHdyaXR0ZW4gaW4gdGhlIGJvb2sgb2YgdGhlIGtpbmdzIG9mIEp1ZGFoIGFuZCBJc3JhZWwuCkFuZCBBc2EgaW4gdGhlIHRoaXJ0eSBhbmQgbmludGggeWVhciBvZiBoaXMgcmVpZ24gd2FzIGRpc2Vhc2VkIGluIGhpcyBmZWV0LCB1bnRpbCBoaXMgZGlzZWFzZSB3YXMgZXhjZWVkaW5nIGdyZWF0OiB5ZXQgaW4gaGlzIGRpc2Vhc2UgaGUgc291Z2h0IG5vdCB0byB0aGUgTE9SRCwgYnV0IHRvIHRoZSBwaHlzaWNpYW5zLgpBbmQgQXNhIHNsZXB0IHdpdGggaGlzIGZhdGhlcnMsIGFuZCBkaWVkIGluIHRoZSBvbmUgYW5kIGZvcnRpZXRoIHllYXIgb2YgaGlzIHJlaWduLgpBbmQgdGhleSBidXJpZWQgaGltIGluIGhpcyBvd24gc2VwdWxjaHJlcywgd2hpY2ggaGUgaGFkIG1hZGUgZm9yIGhpbXNlbGYgaW4gdGhlIGNpdHkgb2YgRGF2aWQsIGFuZCBsYWlkIGhpbSBpbiB0aGUgYmVkIHdoaWNoIHdhcyBmaWxsZWQgd2l0aCBzd2VldCBvZG91cnMgYW5kIGRpdmVycyBraW5kcyBvZiBzcGljZXMgcHJlcGFyZWQgYnkgdGhlIGFwb3RoZWNhcmllcycgYXJ0OiBhbmQgdGhleSBtYWRlIGEgdmVyeSBncmVhdCBidXJuaW5nIGZvciBoaW0uCkFuZCBKZWhvc2hhcGhhdCBoaXMgc29uIHJlaWduZWQgaW4gaGlzIHN0ZWFkLCBhbmQgc3RyZW5ndGhlbmVkIGhpbXNlbGYgYWdhaW5zdCBJc3JhZWwuCkFuZCBoZSBwbGFjZWQgZm9yY2VzIGluIGFsbCB0aGUgZmVuY2VkIGNpdGllcyBvZiBKdWRhaCwgYW5kIHNldCBnYXJyaXNvbnMgaW4gdGhlIGxhbmQgb2YgSnVkYWgsIGFuZCBpbiB0aGUgY2l0aWVzIG9mIEVwaHJhaW0sIHdoaWNoIEFzYSBoaXMgZmF0aGVyIGhhZCB0YWtlbi4KQW5kIHRoZSBMT1JEIHdhcyB3aXRoIEplaG9zaGFwaGF0LCBiZWNhdXNlIGhlIHdhbGtlZCBpbiB0aGUgZmlyc3Qgd2F5cyBvZiBoaXMgZmF0aGVyIERhdmlkLCBhbmQgc291Z2h0IG5vdCB1bnRvIEJhYWxpbTsKQnV0IHNvdWdodCB0byB0aGUgTG9yZCBHb2Qgb2YgaGlzIGZhdGhlciwgYW5kIHdhbGtlZCBpbiBoaXMgY29tbWFuZG1lbnRzLCBhbmQgbm90IGFmdGVyIHRoZSBkb2luZ3Mgb2YgSXNyYWVsLgpUaGVyZWZvcmUgdGhlIExPUkQgc3RhYmxpc2hlZCB0aGUga2luZ2RvbSBpbiBoaXMgaGFuZDsgYW5kIGFsbCBKdWRhaCBicm91Z2h0IHRvIEplaG9zaGFwaGF0IHByZXNlbnRzOyBhbmQgaGUgaGFkIHJpY2hlcyBhbmQgaG9ub3VyIGluIGFidW5kYW5jZS4KQW5kIGhpcyBoZWFydCB3YXMgbGlmdGVkIHVwIGluIHRoZSB3YXlzIG9mIHRoZSBMT1JEOiBtb3Jlb3ZlciBoZSB0b29rIGF3YXkgdGhlIGhpZ2ggcGxhY2VzIGFuZCBncm92ZXMgb3V0IG9mIEp1ZGFoLgpBbHNvIGluIHRoZSB0aGlyZCB5ZWFyIG9mIGhpcyByZWlnbiBoZSBzZW50IHRvIGhpcyBwcmluY2VzLCBldmVuIHRvIEJlbmhhaWwsIGFuZCB0byBPYmFkaWFoLCBhbmQgdG8gWmVjaGFyaWFoLCBhbmQgdG8gTmV0aGFuZWVsLCBhbmQgdG8gTWljaGFpYWgsIHRvIHRlYWNoIGluIHRoZSBjaXRpZXMgb2YgSnVkYWguCkFuZCB3aXRoIHRoZW0gaGUgc2VudCBMZXZpdGVzLCBldmVuIFNoZW1haWFoLCBhbmQgTmV0aGFuaWFoLCBhbmQgWmViYWRpYWgsIGFuZCBBc2FoZWwsIGFuZCBTaGVtaXJhbW90aCwgYW5kIEplaG9uYXRoYW4sIGFuZCBBZG9uaWphaCwgYW5kIFRvYmlqYWgsIGFuZCBUb2JhZG9uaWphaCwgTGV2aXRlczsgYW5kIHdpdGggdGhlbSBFbGlzaGFtYSBhbmQgSmVob3JhbSwgcHJpZXN0cy4KQW5kIHRoZXkgdGF1Z2h0IGluIEp1ZGFoLCBhbmQgaGFkIHRoZSBib29rIG9mIHRoZSBsYXcgb2YgdGhlIExPUkQgd2l0aCB0aGVtLCBhbmQgd2VudCBhYm91dCB0aHJvdWdob3V0IGFsbCB0aGUgY2l0aWVzIG9mIEp1ZGFoLCBhbmQgdGF1Z2h0IHRoZSBwZW9wbGUuCkFuZCB0aGUgZmVhciBvZiB0aGUgTE9SRCBmZWxsIHVwb24gYWxsIHRoZSBraW5nZG9tcyBvZiB0aGUgbGFuZHMgdGhhdCB3ZXJlIHJvdW5kIGFib3V0IEp1ZGFoLCBzbyB0aGF0IHRoZXkgbWFkZSBubyB3YXIgYWdhaW5zdCBKZWhvc2hhcGhhdC4KQWxzbyBzb21lIG9mIHRoZSBQaGlsaXN0aW5lcyBicm91Z2h0IEplaG9zaGFwaGF0IHByZXNlbnRzLCBhbmQgdHJpYnV0ZSBzaWx2ZXI7IGFuZCB0aGUgQXJhYmlhbnMgYnJvdWdodCBoaW0gZmxvY2tzLCBzZXZlbiB0aG91c2FuZCBhbmQgc2V2ZW4gaHVuZHJlZCByYW1zLCBhbmQgc2V2ZW4gdGhvdXNhbmQgYW5kIHNldmVuIGh1bmRyZWQgaGUgZ29hdHMuCkFuZCBKZWhvc2hhcGhhdCB3YXhlZCBncmVhdCBleGNlZWRpbmdseTsgYW5kIGhlIGJ1aWx0IGluIEp1ZGFoIGNhc3RsZXMsIGFuZCBjaXRpZXMgb2Ygc3RvcmUuCkFuZCBoZSBoYWQgbXVjaCBidXNpbmVzcyBpbiB0aGUgY2l0aWVzIG9mIEp1ZGFoOiBhbmQgdGhlIG1lbiBvZiB3YXIsIG1pZ2h0eSBtZW4gb2YgdmFsb3VyLCB3ZXJlIGluIEplcnVzYWxlbS4KQW5kIHRoZXNlIGFyZSB0aGUgbnVtYmVycyBvZiB0aGVtIGFjY29yZGluZyB0byB0aGUgaG91c2Ugb2YgdGhlaXIgZmF0aGVyczogT2YgSnVkYWgsIHRoZSBjYXB0YWlucyBvZiB0aG91c2FuZHM7IEFkbmFoIHRoZSBjaGllZiwgYW5kIHdpdGggaGltIG1pZ2h0eSBtZW4gb2YgdmFsb3VyIHRocmVlIGh1bmRyZWQgdGhvdXNhbmQuCkFuZCBuZXh0IHRvIGhpbSB3YXMgSmVob2hhbmFuIHRoZSBjYXB0YWluLCBhbmQgd2l0aCBoaW0gdHdvIGh1bmRyZWQgYW5kIGZvdXJzY29yZSB0aG91c2FuZC4KQW5kIG5leHQgaGltIHdhcyBBbWFzaWFoIHRoZSBzb24gb2YgWmljaHJpLCB3aG8gd2lsbGluZ2x5IG9mZmVyZWQgaGltc2VsZiB1bnRvIHRoZSBMT1JEOyBhbmQgd2l0aCBoaW0gdHdvIGh1bmRyZWQgdGhvdXNhbmQgbWlnaHR5IG1lbiBvZiB2YWxvdXIuCkFuZCBvZiBCZW5qYW1pbjsgRWxpYWRhIGEgbWlnaHR5IG1hbiBvZiB2YWxvdXIsIGFuZCB3aXRoIGhpbSBhcm1lZCBtZW4gd2l0aCBib3cgYW5kIHNoaWVsZCB0d28gaHVuZHJlZCB0aG91c2FuZC4KQW5kIG5leHQgaGltIHdhcyBKZWhvemFiYWQsIGFuZCB3aXRoIGhpbSBhbiBodW5kcmVkIGFuZCBmb3Vyc2NvcmUgdGhvdXNhbmQgcmVhZHkgcHJlcGFyZWQgZm9yIHRoZSB3YXIuClRoZXNlIHdhaXRlZCBvbiB0aGUga2luZywgYmVzaWRlIHRob3NlIHdob20gdGhlIGtpbmcgcHV0IGluIHRoZSBmZW5jZWQgY2l0aWVzIHRocm91Z2hvdXQgYWxsIEp1ZGFoLgpOb3cgSmVob3NoYXBoYXQgaGFkIHJpY2hlcyBhbmQgaG9ub3VyIGluIGFidW5kYW5jZSwgYW5kIGpvaW5lZCBhZmZpbml0eSB3aXRoIEFoYWIuCkFuZCBhZnRlciBjZXJ0YWluIHllYXJzIGhlIHdlbnQgZG93biB0byBBaGFiIHRvIFNhbWFyaWEuIEFuZCBBaGFiIGtpbGxlZCBzaGVlcCBhbmQgb3hlbiBmb3IgaGltIGluIGFidW5kYW5jZSwgYW5kIGZvciB0aGUgcGVvcGxlIHRoYXQgaGUgaGFkIHdpdGggaGltLCBhbmQgcGVyc3VhZGVkIGhpbSB0byBnbyB1cCB3aXRoIGhpbSB0byBSYW1vdGhnaWxlYWQuCkFuZCBBaGFiIGtpbmcgb2YgSXNyYWVsIHNhaWQgdW50byBKZWhvc2hhcGhhdCBraW5nIG9mIEp1ZGFoLCBXaWx0IHRob3UgZ28gd2l0aCBtZSB0byBSYW1vdGhnaWxlYWQ/IEFuZCBoZSBhbnN3ZXJlZCBoaW0sIEkgYW0gYXMgdGhvdSBhcnQsIGFuZCBteSBwZW9wbGUgYXMgdGh5IHBlb3BsZTsgYW5kIHdlIHdpbGwgYmUgd2l0aCB0aGVlIGluIHRoZSB3YXIuCkFuZCBKZWhvc2hhcGhhdCBzYWlkIHVudG8gdGhlIGtpbmcgb2YgSXNyYWVsLCBFbnF1aXJlLCBJIHByYXkgdGhlZSwgYXQgdGhlIHdvcmQgb2YgdGhlIExPUkQgdG8gZGF5LgpUaGVyZWZvcmUgdGhlIGtpbmcgb2YgSXNyYWVsIGdhdGhlcmVkIHRvZ2V0aGVyIG9mIHByb3BoZXRzIGZvdXIgaHVuZHJlZCBtZW4sIGFuZCBzYWlkIHVudG8gdGhlbSwgU2hhbGwgd2UgZ28gdG8gUmFtb3RoZ2lsZWFkIHRvIGJhdHRsZSwgb3Igc2hhbGwgSSBmb3JiZWFyPyBBbmQgdGhleSBzYWlkLCBHbyB1cDsgZm9yIEdvZCB3aWxsIGRlbGl2ZXIgaXQgaW50byB0aGUga2luZydzIGhhbmQuCkJ1dCBKZWhvc2hhcGhhdCBzYWlkLCBJcyB0aGVyZSBub3QgaGVyZSBhIHByb3BoZXQgb2YgdGhlIExPUkQgYmVzaWRlcywgdGhhdCB3ZSBtaWdodCBlbnF1aXJlIG9mIGhpbT8KQW5kIHRoZSBraW5nIG9mIElzcmFlbCBzYWlkIHVudG8gSmVob3NoYXBoYXQsIFRoZXJlIGlzIHlldCBvbmUgbWFuLCBieSB3aG9tIHdlIG1heSBlbnF1aXJlIG9mIHRoZSBMT1JEOiBidXQgSSBoYXRlIGhpbTsgZm9yIGhlIG5ldmVyIHByb3BoZXNpZWQgZ29vZCB1bnRvIG1lLCBidXQgYWx3YXlzIGV2aWw6IHRoZSBzYW1lIGlzIE1pY2FpYWggdGhlIHNvbiBvZiBJbWxhLiBBbmQgSmVob3NoYXBoYXQgc2FpZCwgTGV0IG5vdCB0aGUga2luZyBzYXkgc28uCkFuZCB0aGUga2luZyBvZiBJc3JhZWwgY2FsbGVkIGZvciBvbmUgb2YgaGlzIG9mZmljZXJzLCBhbmQgc2FpZCwgRmV0Y2ggcXVpY2tseSBNaWNhaWFoIHRoZSBzb24gb2YgSW1sYS4KQW5kIHRoZSBraW5nIG9mIElzcmFlbCBhbmQgSmVob3NoYXBoYXQga2luZyBvZiBKdWRhaCBzYXQgZWl0aGVyIG9mIHRoZW0gb24gaGlzIHRocm9uZSwgY2xvdGhlZCBpbiB0aGVpciByb2JlcywgYW5kIHRoZXkgc2F0IGluIGEgdm9pZCBwbGFjZSBhdCB0aGUgZW50ZXJpbmcgaW4gb2YgdGhlIGdhdGUgb2YgU2FtYXJpYTsgYW5kIGFsbCB0aGUgcHJvcGhldHMgcHJvcGhlc2llZCBiZWZvcmUgdGhlbS4KQW5kIFplZGVraWFoIHRoZSBzb24gb2YgQ2hlbmFhbmFoIGhhZCBtYWRlIGhpbSBob3JucyBvZiBpcm9uLCBhbmQgc2FpZCwgVGh1cyBzYWl0aCB0aGUgTE9SRCwgV2l0aCB0aGVzZSB0aG91IHNoYWx0IHB1c2ggU3lyaWEgdW50aWwgdGhleSBiZSBjb25zdW1lZC4KQW5kIGFsbCB0aGUgcHJvcGhldHMgcHJvcGhlc2llZCBzbywgc2F5aW5nLCBHbyB1cCB0byBSYW1vdGhnaWxlYWQsIGFuZCBwcm9zcGVyOiBmb3IgdGhlIExPUkQgc2hhbGwgZGVsaXZlciBpdCBpbnRvIHRoZSBoYW5kIG9mIHRoZSBraW5nLgpBbmQgdGhlIG1lc3NlbmdlciB0aGF0IHdlbnQgdG8gY2FsbCBNaWNhaWFoIHNwYWtlIHRvIGhpbSwgc2F5aW5nLCBCZWhvbGQsIHRoZSB3b3JkcyBvZiB0aGUgcHJvcGhldHMgZGVjbGFyZSBnb29kIHRvIHRoZSBraW5nIHdpdGggb25lIGFzc2VudDsgbGV0IHRoeSB3b3JkIHRoZXJlZm9yZSwgSSBwcmF5IHRoZWUsIGJlIGxpa2Ugb25lIG9mIHRoZWlyJ3MsIGFuZCBzcGVhayB0aG91IGdvb2QuCkFuZCBNaWNhaWFoIHNhaWQsIEFzIHRoZSBMT1JEIGxpdmV0aCwgZXZlbiB3aGF0IG15IEdvZCBzYWl0aCwgdGhhdCB3aWxsIEkgc3BlYWsuCkFuZCB3aGVuIGhlIHdhcyBjb21lIHRvIHRoZSBraW5nLCB0aGUga2luZyBzYWlkIHVudG8gaGltLCBNaWNhaWFoLCBzaGFsbCB3ZSBnbyB0byBSYW1vdGhnaWxlYWQgdG8gYmF0dGxlLCBvciBzaGFsbCBJIGZvcmJlYXI/IEFuZCBoZSBzYWlkLCBHbyB5ZSB1cCwgYW5kIHByb3NwZXIsIGFuZCB0aGV5IHNoYWxsIGJlIGRlbGl2ZXJlZCBpbnRvIHlvdXIgaGFuZC4KQW5kIHRoZSBraW5nIHNhaWQgdG8gaGltLCBIb3cgbWFueSB0aW1lcyBzaGFsbCBJIGFkanVyZSB0aGVlIHRoYXQgdGhvdSBzYXkgbm90aGluZyBidXQgdGhlIHRydXRoIHRvIG1lIGluIHRoZSBuYW1lIG9mIHRoZSBMT1JEPwpUaGVuIGhlIHNhaWQsIEkgZGlkIHNlZSBhbGwgSXNyYWVsIHNjYXR0ZXJlZCB1cG9uIHRoZSBtb3VudGFpbnMsIGFzIHNoZWVwIHRoYXQgaGF2ZSBubyBzaGVwaGVyZDogYW5kIHRoZSBMT1JEIHNhaWQsIFRoZXNlIGhhdmUgbm8gbWFzdGVyOyBsZXQgdGhlbSByZXR1cm4gdGhlcmVmb3JlIGV2ZXJ5IG1hbiB0byBoaXMgaG91c2UgaW4gcGVhY2UuCkFuZCB0aGUga2luZyBvZiBJc3JhZWwgc2FpZCB0byBKZWhvc2hhcGhhdCwgRGlkIEkgbm90IHRlbGwgdGhlZSB0aGF0IGhlIHdvdWxkIG5vdCBwcm9waGVzeSBnb29kIHVudG8gbWUsIGJ1dCBldmlsPwpBZ2FpbiBoZSBzYWlkLCBUaGVyZWZvcmUgaGVhciB0aGUgd29yZCBvZiB0aGUgTE9SRDsgSSBzYXcgdGhlIExPUkQgc2l0dGluZyB1cG9uIGhpcyB0aHJvbmUsIGFuZCBhbGwgdGhlIGhvc3Qgb2YgaGVhdmVuIHN0YW5kaW5nIG9uIGhpcyByaWdodCBoYW5kIGFuZCBvbiBoaXMgbGVmdC4KQW5kIHRoZSBMT1JEIHNhaWQsIFdobyBzaGFsbCBlbnRpY2UgQWhhYiBraW5nIG9mIElzcmFlbCwgdGhhdCBoZSBtYXkgZ28gdXAgYW5kIGZhbGwgYXQgUmFtb3RoZ2lsZWFkPyBBbmQgb25lIHNwYWtlIHNheWluZyBhZnRlciB0aGlzIG1hbm5lciwgYW5kIGFub3RoZXIgc2F5aW5nIGFmdGVyIHRoYXQgbWFubmVyLgpUaGVuIHRoZXJlIGNhbWUgb3V0IGEgc3Bpcml0LCBhbmQgc3Rvb2QgYmVmb3JlIHRoZSBMT1JELCBhbmQgc2FpZCwgSSB3aWxsIGVudGljZSBoaW0uIEFuZCB0aGUgTE9SRCBzYWlkIHVudG8gaGltLCBXaGVyZXdpdGg/CkFuZCBoZSBzYWlkLCBJIHdpbGwgZ28gb3V0LCBhbmQgYmUgYSBseWluZyBzcGlyaXQgaW4gdGhlIG1vdXRoIG9mIGFsbCBoaXMgcHJvcGhldHMuIEFuZCB0aGUgTG9yZCBzYWlkLCBUaG91IHNoYWx0IGVudGljZSBoaW0sIGFuZCB0aG91IHNoYWx0IGFsc28gcHJldmFpbDogZ28gb3V0LCBhbmQgZG8gZXZlbiBzby4KTm93IHRoZXJlZm9yZSwgYmVob2xkLCB0aGUgTE9SRCBoYXRoIHB1dCBhIGx5aW5nIHNwaXJpdCBpbiB0aGUgbW91dGggb2YgdGhlc2UgdGh5IHByb3BoZXRzLCBhbmQgdGhlIExPUkQgaGF0aCBzcG9rZW4gZXZpbCBhZ2FpbnN0IHRoZWUuClRoZW4gWmVkZWtpYWggdGhlIHNvbiBvZiBDaGVuYWFuYWggY2FtZSBuZWFyLCBhbmQgc21vdGUgTWljYWlhaCB1cG9uIHRoZSBjaGVlaywgYW5kIHNhaWQsIFdoaWNoIHdheSB3ZW50IHRoZSBTcGlyaXQgb2YgdGhlIExPUkQgZnJvbSBtZSB0byBzcGVhayB1bnRvIHRoZWU/CkFuZCBNaWNhaWFoIHNhaWQsIEJlaG9sZCwgdGhvdSBzaGFsdCBzZWUgb24gdGhhdCBkYXkgd2hlbiB0aG91IHNoYWx0IGdvIGludG8gYW4gaW5uZXIgY2hhbWJlciB0byBoaWRlIHRoeXNlbGYuClRoZW4gdGhlIGtpbmcgb2YgSXNyYWVsIHNhaWQsIFRha2UgeWUgTWljYWlhaCwgYW5kIGNhcnJ5IGhpbSBiYWNrIHRvIEFtb24gdGhlIGdvdmVybm9yIG9mIHRoZSBjaXR5LCBhbmQgdG8gSm9hc2ggdGhlIGtpbmcncyBzb247CkFuZCBzYXksIFRodXMgc2FpdGggdGhlIGtpbmcsIFB1dCB0aGlzIGZlbGxvdyBpbiB0aGUgcHJpc29uLCBhbmQgZmVlZCBoaW0gd2l0aCBicmVhZCBvZiBhZmZsaWN0aW9uIGFuZCB3aXRoIHdhdGVyIG9mIGFmZmxpY3Rpb24sIHVudGlsIEkgcmV0dXJuIGluIHBlYWNlLgpBbmQgTWljYWlhaCBzYWlkLCBJZiB0aG91IGNlcnRhaW5seSByZXR1cm4gaW4gcGVhY2UsIHRoZW4gaGF0aCBub3QgdGhlIExPUkQgc3Bva2VuIGJ5IG1lLiBBbmQgaGUgc2FpZCwgSGVhcmtlbiwgYWxsIHllIHBlb3BsZS4KU28gdGhlIGtpbmcgb2YgSXNyYWVsIGFuZCBKZWhvc2hhcGhhdCB0aGUga2luZyBvZiBKdWRhaCB3ZW50IHVwIHRvIFJhbW90aGdpbGVhZC4KQW5kIHRoZSBraW5nIG9mIElzcmFlbCBzYWlkIHVudG8gSmVob3NoYXBoYXQsIEkgd2lsbCBkaXNndWlzZSBteXNlbGYsIGFuZCBJIHdpbGwgZ28gdG8gdGhlIGJhdHRsZTsgYnV0IHB1dCB0aG91IG9uIHRoeSByb2Jlcy4gU28gdGhlIGtpbmcgb2YgSXNyYWVsIGRpc2d1aXNlZCBoaW1zZWxmOyBhbmQgdGhleSB3ZW50IHRvIHRoZSBiYXR0bGUuCk5vdyB0aGUga2luZyBvZiBTeXJpYSBoYWQgY29tbWFuZGVkIHRoZSBjYXB0YWlucyBvZiB0aGUgY2hhcmlvdHMgdGhhdCB3ZXJlIHdpdGggaGltLCBzYXlpbmcsIEZpZ2h0IHllIG5vdCB3aXRoIHNtYWxsIG9yIGdyZWF0LCBzYXZlIG9ubHkgd2l0aCB0aGUga2luZyBvZiBJc3JhZWwuCkFuZCBpdCBjYW1lIHRvIHBhc3MsIHdoZW4gdGhlIGNhcHRhaW5zIG9mIHRoZSBjaGFyaW90cyBzYXcgSmVob3NoYXBoYXQsIHRoYXQgdGhleSBzYWlkLCBJdCBpcyB0aGUga2luZyBvZiBJc3JhZWwuIFRoZXJlZm9yZSB0aGV5IGNvbXBhc3NlZCBhYm91dCBoaW0gdG8gZmlnaHQ6IGJ1dCBKZWhvc2hhcGhhdCBjcmllZCBvdXQsIGFuZCB0aGUgTE9SRCBoZWxwZWQgaGltOyBhbmQgR29kIG1vdmVkIHRoZW0gdG8gZGVwYXJ0IGZyb20gaGltLgpGb3IgaXQgY2FtZSB0byBwYXNzLCB0aGF0LCB3aGVuIHRoZSBjYXB0YWlucyBvZiB0aGUgY2hhcmlvdHMgcGVyY2VpdmVkIHRoYXQgaXQgd2FzIG5vdCB0aGUga2luZyBvZiBJc3JhZWwsIHRoZXkgdHVybmVkIGJhY2sgYWdhaW4gZnJvbSBwdXJzdWluZyBoaW0uCkFuZCBhIGNlcnRhaW4gbWFuIGRyZXcgYSBib3cgYXQgYSB2ZW50dXJlLCBhbmQgc21vdGUgdGhlIGtpbmcgb2YgSXNyYWVsIGJldHdlZW4gdGhlIGpvaW50cyBvZiB0aGUgaGFybmVzczogdGhlcmVmb3JlIGhlIHNhaWQgdG8gaGlzIGNoYXJpb3QgbWFuLCBUdXJuIHRoaW5lIGhhbmQsIHRoYXQgdGhvdSBtYXllc3QgY2FycnkgbWUgb3V0IG9mIHRoZSBob3N0OyBmb3IgSSBhbSB3b3VuZGVkLgpBbmQgdGhlIGJhdHRsZSBpbmNyZWFzZWQgdGhhdCBkYXk6IGhvd2JlaXQgdGhlIGtpbmcgb2YgSXNyYWVsIHN0YXllZCBoaW1zZWxmIHVwIGluIGhpcyBjaGFyaW90IGFnYWluc3QgdGhlIFN5cmlhbnMgdW50aWwgdGhlIGV2ZW46IGFuZCBhYm91dCB0aGUgdGltZSBvZiB0aGUgc3VuIGdvaW5nIGRvd24gaGUgZGllZC4KQW5kIEplaG9zaGFwaGF0IHRoZSBraW5nIG9mIEp1ZGFoIHJldHVybmVkIHRvIGhpcyBob3VzZSBpbiBwZWFjZSB0byBKZXJ1c2FsZW0uCkFuZCBKZWh1IHRoZSBzb24gb2YgSGFuYW5pIHRoZSBzZWVyIHdlbnQgb3V0IHRvIG1lZXQgaGltLCBhbmQgc2FpZCB0byBraW5nIEplaG9zaGFwaGF0LCBTaG91bGRlc3QgdGhvdSBoZWxwIHRoZSB1bmdvZGx5LCBhbmQgbG92ZSB0aGVtIHRoYXQgaGF0ZSB0aGUgTE9SRD8gdGhlcmVmb3JlIGlzIHdyYXRoIHVwb24gdGhlZSBmcm9tIGJlZm9yZSB0aGUgTE9SRC4KTmV2ZXJ0aGVsZXNzIHRoZXJlIGFyZSBnb29kIHRoaW5ncyBmb3VuZCBpbiB0aGVlLCBpbiB0aGF0IHRob3UgaGFzdCB0YWtlbiBhd2F5IHRoZSBncm92ZXMgb3V0IG9mIHRoZSBsYW5kLCBhbmQgaGFzdCBwcmVwYXJlZCB0aGluZSBoZWFydCB0byBzZWVrIEdvZC4KQW5kIEplaG9zaGFwaGF0IGR3ZWx0IGF0IEplcnVzYWxlbTogYW5kIGhlIHdlbnQgb3V0IGFnYWluIHRocm91Z2ggdGhlIHBlb3BsZSBmcm9tIEJlZXJzaGViYSB0byBtb3VudCBFcGhyYWltLCBhbmQgYnJvdWdodCB0aGVtIGJhY2sgdW50byB0aGUgTE9SRCBHb2Qgb2YgdGhlaXIgZmF0aGVycy4KQW5kIGhlIHNldCBqdWRnZXMgaW4gdGhlIGxhbmQgdGhyb3VnaG91dCBhbGwgdGhlIGZlbmNlZCBjaXRpZXMgb2YgSnVkYWgsIGNpdHkgYnkgY2l0eSwKQW5kIHNhaWQgdG8gdGhlIGp1ZGdlcywgVGFrZSBoZWVkIHdoYXQgeWUgZG86IGZvciB5ZSBqdWRnZSBub3QgZm9yIG1hbiwgYnV0IGZvciB0aGUgTE9SRCwgd2hvIGlzIHdpdGggeW91IGluIHRoZSBqdWRnbWVudC4KV2hlcmVmb3JlIG5vdyBsZXQgdGhlIGZlYXIgb2YgdGhlIExPUkQgYmUgdXBvbiB5b3U7IHRha2UgaGVlZCBhbmQgZG8gaXQ6IGZvciB0aGVyZSBpcyBubyBpbmlxdWl0eSB3aXRoIHRoZSBMT1JEIG91ciBHb2QsIG5vciByZXNwZWN0IG9mIHBlcnNvbnMsIG5vciB0YWtpbmcgb2YgZ2lmdHMuCk1vcmVvdmVyIGluIEplcnVzYWxlbSBkaWQgSmVob3NoYXBoYXQgc2V0IG9mIHRoZSBMZXZpdGVzLCBhbmQgb2YgdGhlIHByaWVzdHMsIGFuZCBvZiB0aGUgY2hpZWYgb2YgdGhlIGZhdGhlcnMgb2YgSXNyYWVsLCBmb3IgdGhlIGp1ZGdtZW50IG9mIHRoZSBMT1JELCBhbmQgZm9yIGNvbnRyb3ZlcnNpZXMsIHdoZW4gdGhleSByZXR1cm5lZCB0byBKZXJ1c2FsZW0uCkFuZCBoZSBjaGFyZ2VkIHRoZW0sIHNheWluZywgVGh1cyBzaGFsbCB5ZSBkbyBpbiB0aGUgZmVhciBvZiB0aGUgTE9SRCwgZmFpdGhmdWxseSwgYW5kIHdpdGggYSBwZXJmZWN0IGhlYXJ0LgpBbmQgd2hhdCBjYXVzZSBzb2V2ZXIgc2hhbGwgY29tZSB0byB5b3Ugb2YgeW91ciBicmV0aHJlbiB0aGF0IGR3ZWxsIGluIHlvdXIgY2l0aWVzLCBiZXR3ZWVuIGJsb29kIGFuZCBibG9vZCwgYmV0d2VlbiBsYXcgYW5kIGNvbW1hbmRtZW50LCBzdGF0dXRlcyBhbmQganVkZ21lbnRzLCB5ZSBzaGFsbCBldmVuIHdhcm4gdGhlbSB0aGF0IHRoZXkgdHJlc3Bhc3Mgbm90IGFnYWluc3QgdGhlIExPUkQsIGFuZCBzbyB3cmF0aCBjb21lIHVwb24geW91LCBhbmQgdXBvbiB5b3VyIGJyZXRocmVuOiB0aGlzIGRvLCBhbmQgeWUgc2hhbGwgbm90IHRyZXNwYXNzLgpBbmQsIGJlaG9sZCwgQW1hcmlhaCB0aGUgY2hpZWYgcHJpZXN0IGlzIG92ZXIgeW91IGluIGFsbCBtYXR0ZXJzIG9mIHRoZSBMT1JEOyBhbmQgWmViYWRpYWggdGhlIHNvbiBvZiBJc2htYWVsLCB0aGUgcnVsZXIgb2YgdGhlIGhvdXNlIG9mIEp1ZGFoLCBmb3IgYWxsIHRoZSBraW5nJ3MgbWF0dGVyczogYWxzbyB0aGUgTGV2aXRlcyBzaGFsbCBiZSBvZmZpY2VycyBiZWZvcmUgeW91LiBEZWFsIGNvdXJhZ2VvdXNseSwgYW5kIHRoZSBMT1JEIHNoYWxsIGJlIHdpdGggdGhlIGdvb2QuCkl0IGNhbWUgdG8gcGFzcyBhZnRlciB0aGlzIGFsc28sIHRoYXQgdGhlIGNoaWxkcmVuIG9mIE1vYWIsIGFuZCB0aGUgY2hpbGRyZW4gb2YgQW1tb24sIGFuZCB3aXRoIHRoZW0gb3RoZXIgYmVzaWRlIHRoZSBBbW1vbml0ZXMsIGNhbWUgYWdhaW5zdCBKZWhvc2hhcGhhdCB0byBiYXR0bGUuClRoZW4gdGhlcmUgY2FtZSBzb21lIHRoYXQgdG9sZCBKZWhvc2hhcGhhdCwgc2F5aW5nLCBUaGVyZSBjb21ldGggYSBncmVhdCBtdWx0aXR1ZGUgYWdhaW5zdCB0aGVlIGZyb20gYmV5b25kIHRoZSBzZWEgb24gdGhpcyBzaWRlIFN5cmlhOyBhbmQsIGJlaG9sZCwgdGhleSBiZSBpbiBIYXphem9udGFtYXIsIHdoaWNoIGlzIEVuZ2VkaS4KQW5kIEplaG9zaGFwaGF0IGZlYXJlZCwgYW5kIHNldCBoaW1zZWxmIHRvIHNlZWsgdGhlIExPUkQsIGFuZCBwcm9jbGFpbWVkIGEgZmFzdCB0aHJvdWdob3V0IGFsbCBKdWRhaC4KQW5kIEp1ZGFoIGdhdGhlcmVkIHRoZW1zZWx2ZXMgdG9nZXRoZXIsIHRvIGFzayBoZWxwIG9mIHRoZSBMT1JEOiBldmVuIG91dCBvZiBhbGwgdGhlIGNpdGllcyBvZiBKdWRhaCB0aGV5IGNhbWUgdG8gc2VlayB0aGUgTE9SRC4KQW5kIEplaG9zaGFwaGF0IHN0b29kIGluIHRoZSBjb25ncmVnYXRpb24gb2YgSnVkYWggYW5kIEplcnVzYWxlbSwgaW4gdGhlIGhvdXNlIG9mIHRoZSBMT1JELCBiZWZvcmUgdGhlIG5ldyBjb3VydCwKQW5kIHNhaWQsIE8gTE9SRCBHb2Qgb2Ygb3VyIGZhdGhlcnMsIGFydCBub3QgdGhvdSBHb2QgaW4gaGVhdmVuPyBhbmQgcnVsZXN0IG5vdCB0aG91IG92ZXIgYWxsIHRoZSBraW5nZG9tcyBvZiB0aGUgaGVhdGhlbj8gYW5kIGluIHRoaW5lIGhhbmQgaXMgdGhlcmUgbm90IHBvd2VyIGFuZCBtaWdodCwgc28gdGhhdCBub25lIGlzIGFibGUgdG8gd2l0aHN0YW5kIHRoZWU/CkFydCBub3QgdGhvdSBvdXIgR29kLCB3aG8gZGlkc3QgZHJpdmUgb3V0IHRoZSBpbmhhYml0YW50cyBvZiB0aGlzIGxhbmQgYmVmb3JlIHRoeSBwZW9wbGUgSXNyYWVsLCBhbmQgZ2F2ZXN0IGl0IHRvIHRoZSBzZWVkIG9mIEFicmFoYW0gdGh5IGZyaWVuZCBmb3IgZXZlcj8KQW5kIHRoZXkgZHdlbHQgdGhlcmVpbiwgYW5kIGhhdmUgYnVpbHQgdGhlZSBhIHNhbmN0dWFyeSB0aGVyZWluIGZvciB0aHkgbmFtZSwgc2F5aW5nLApJZiwgd2hlbiBldmlsIGNvbWV0aCB1cG9uIHVzLCBhcyB0aGUgc3dvcmQsIGp1ZGdtZW50LCBvciBwZXN0aWxlbmNlLCBvciBmYW1pbmUsIHdlIHN0YW5kIGJlZm9yZSB0aGlzIGhvdXNlLCBhbmQgaW4gdGh5IHByZXNlbmNlLCAoZm9yIHRoeSBuYW1lIGlzIGluIHRoaXMgaG91c2UsKSBhbmQgY3J5IHVudG8gdGhlZSBpbiBvdXIgYWZmbGljdGlvbiwgdGhlbiB0aG91IHdpbHQgaGVhciBhbmQgaGVscC4KQW5kIG5vdywgYmVob2xkLCB0aGUgY2hpbGRyZW4gb2YgQW1tb24gYW5kIE1vYWIgYW5kIG1vdW50IFNlaXIsIHdob20gdGhvdSB3b3VsZGVzdCBub3QgbGV0IElzcmFlbCBpbnZhZGUsIHdoZW4gdGhleSBjYW1lIG91dCBvZiB0aGUgbGFuZCBvZiBFZ3lwdCwgYnV0IHRoZXkgdHVybmVkIGZyb20gdGhlbSwgYW5kIGRlc3Ryb3llZCB0aGVtIG5vdDsKQmVob2xkLCBJIHNheSwgaG93IHRoZXkgcmV3YXJkIHVzLCB0byBjb21lIHRvIGNhc3QgdXMgb3V0IG9mIHRoeSBwb3NzZXNzaW9uLCB3aGljaCB0aG91IGhhc3QgZ2l2ZW4gdXMgdG8gaW5oZXJpdC4KTyBvdXIgR29kLCB3aWx0IHRob3Ugbm90IGp1ZGdlIHRoZW0/IGZvciB3ZSBoYXZlIG5vIG1pZ2h0IGFnYWluc3QgdGhpcyBncmVhdCBjb21wYW55IHRoYXQgY29tZXRoIGFnYWluc3QgdXM7IG5laXRoZXIga25vdyB3ZSB3aGF0IHRvIGRvOiBidXQgb3VyIGV5ZXMgYXJlIHVwb24gdGhlZS4KQW5kIGFsbCBKdWRhaCBzdG9vZCBiZWZvcmUgdGhlIExPUkQsIHdpdGggdGhlaXIgbGl0dGxlIG9uZXMsIHRoZWlyIHdpdmVzLCBhbmQgdGhlaXIgY2hpbGRyZW4uClRoZW4gdXBvbiBKYWhhemllbCB0aGUgc29uIG9mIFplY2hhcmlhaCwgdGhlIHNvbiBvZiBCZW5haWFoLCB0aGUgc29uIG9mIEplaWVsLCB0aGUgc29uIG9mIE1hdHRhbmlhaCwgYSBMZXZpdGUgb2YgdGhlIHNvbnMgb2YgQXNhcGgsIGNhbWUgdGhlIFNwaXJpdCBvZiB0aGUgTE9SRCBpbiB0aGUgbWlkc3Qgb2YgdGhlIGNvbmdyZWdhdGlvbjsKQW5kIGhlIHNhaWQsIEhlYXJrZW4geWUsIGFsbCBKdWRhaCwgYW5kIHllIGluaGFiaXRhbnRzIG9mIEplcnVzYWxlbSwgYW5kIHRob3Uga2luZyBKZWhvc2hhcGhhdCwgVGh1cyBzYWl0aCB0aGUgTE9SRCB1bnRvIHlvdSwgQmUgbm90IGFmcmFpZCBub3IgZGlzbWF5ZWQgYnkgcmVhc29uIG9mIHRoaXMgZ3JlYXQgbXVsdGl0dWRlOyBmb3IgdGhlIGJhdHRsZSBpcyBub3QgeW91cnMsIGJ1dCBHb2Qncy4KVG8gbW9ycm93IGdvIHllIGRvd24gYWdhaW5zdCB0aGVtOiBiZWhvbGQsIHRoZXkgY29tZSB1cCBieSB0aGUgY2xpZmYgb2YgWml6OyBhbmQgeWUgc2hhbGwgZmluZCB0aGVtIGF0IHRoZSBlbmQgb2YgdGhlIGJyb29rLCBiZWZvcmUgdGhlIHdpbGRlcm5lc3Mgb2YgSmVydWVsLgpZZSBzaGFsbCBub3QgbmVlZCB0byBmaWdodCBpbiB0aGlzIGJhdHRsZTogc2V0IHlvdXJzZWx2ZXMsIHN0YW5kIHllIHN0aWxsLCBhbmQgc2VlIHRoZSBzYWx2YXRpb24gb2YgdGhlIExPUkQgd2l0aCB5b3UsIE8gSnVkYWggYW5kIEplcnVzYWxlbTogZmVhciBub3QsIG5vciBiZSBkaXNtYXllZDsgdG8gbW9ycm93IGdvIG91dCBhZ2FpbnN0IHRoZW06IGZvciB0aGUgTE9SRCB3aWxsIGJlIHdpdGggeW91LgpBbmQgSmVob3NoYXBoYXQgYm93ZWQgaGlzIGhlYWQgd2l0aCBoaXMgZmFjZSB0byB0aGUgZ3JvdW5kOiBhbmQgYWxsIEp1ZGFoIGFuZCB0aGUgaW5oYWJpdGFudHMgb2YgSmVydXNhbGVtIGZlbGwgYmVmb3JlIHRoZSBMT1JELCB3b3JzaGlwcGluZyB0aGUgTE9SRC4KQW5kIHRoZSBMZXZpdGVzLCBvZiB0aGUgY2hpbGRyZW4gb2YgdGhlIEtvaGF0aGl0ZXMsIGFuZCBvZiB0aGUgY2hpbGRyZW4gb2YgdGhlIEtvcmhpdGVzLCBzdG9vZCB1cCB0byBwcmFpc2UgdGhlIExPUkQgR29kIG9mIElzcmFlbCB3aXRoIGEgbG91ZCB2b2ljZSBvbiBoaWdoLgpBbmQgdGhleSByb3NlIGVhcmx5IGluIHRoZSBtb3JuaW5nLCBhbmQgd2VudCBmb3J0aCBpbnRvIHRoZSB3aWxkZXJuZXNzIG9mIFRla29hOiBhbmQgYXMgdGhleSB3ZW50IGZvcnRoLCBKZWhvc2hhcGhhdCBzdG9vZCBhbmQgc2FpZCwgSGVhciBtZSwgTyBKdWRhaCwgYW5kIHllIGluaGFiaXRhbnRzIG9mIEplcnVzYWxlbTsgQmVsaWV2ZSBpbiB0aGUgTE9SRCB5b3VyIEdvZCwgc28gc2hhbGwgeWUgYmUgZXN0YWJsaXNoZWQ7IGJlbGlldmUgaGlzIHByb3BoZXRzLCBzbyBzaGFsbCB5ZSBwcm9zcGVyLgpBbmQgd2hlbiBoZSBoYWQgY29uc3VsdGVkIHdpdGggdGhlIHBlb3BsZSwgaGUgYXBwb2ludGVkIHNpbmdlcnMgdW50byB0aGUgTE9SRCwgYW5kIHRoYXQgc2hvdWxkIHByYWlzZSB0aGUgYmVhdXR5IG9mIGhvbGluZXNzLCBhcyB0aGV5IHdlbnQgb3V0IGJlZm9yZSB0aGUgYXJteSwgYW5kIHRvIHNheSwgUHJhaXNlIHRoZSBMT1JEOyBmb3IgaGlzIG1lcmN5IGVuZHVyZXRoIGZvciBldmVyLgpBbmQgd2hlbiB0aGV5IGJlZ2FuIHRvIHNpbmcgYW5kIHRvIHByYWlzZSwgdGhlIExPUkQgc2V0IGFtYnVzaG1lbnRzIGFnYWluc3QgdGhlIGNoaWxkcmVuIG9mIEFtbW9uLCBNb2FiLCBhbmQgbW91bnQgU2Vpciwgd2hpY2ggd2VyZSBjb21lIGFnYWluc3QgSnVkYWg7IGFuZCB0aGV5IHdlcmUgc21pdHRlbi4KRm9yIHRoZSBjaGlsZHJlbiBvZiBBbW1vbiBhbmQgTW9hYiBzdG9vZCB1cCBhZ2FpbnN0IHRoZSBpbmhhYml0YW50cyBvZiBtb3VudCBTZWlyLCB1dHRlcmx5IHRvIHNsYXkgYW5kIGRlc3Ryb3kgdGhlbTogYW5kIHdoZW4gdGhleSBoYWQgbWFkZSBhbiBlbmQgb2YgdGhlIGluaGFiaXRhbnRzIG9mIFNlaXIsIGV2ZXJ5IG9uZSBoZWxwZWQgdG8gZGVzdHJveSBhbm90aGVyLgpBbmQgd2hlbiBKdWRhaCBjYW1lIHRvd2FyZCB0aGUgd2F0Y2ggdG93ZXIgaW4gdGhlIHdpbGRlcm5lc3MsIHRoZXkgbG9va2VkIHVudG8gdGhlIG11bHRpdHVkZSwgYW5kLCBiZWhvbGQsIHRoZXkgd2VyZSBkZWFkIGJvZGllcyBmYWxsZW4gdG8gdGhlIGVhcnRoLCBhbmQgbm9uZSBlc2NhcGVkLgpBbmQgd2hlbiBKZWhvc2hhcGhhdCBhbmQgaGlzIHBlb3BsZSBjYW1lIHRvIHRha2UgYXdheSB0aGUgc3BvaWwgb2YgdGhlbSwgdGhleSBmb3VuZCBhbW9uZyB0aGVtIGluIGFidW5kYW5jZSBib3RoIHJpY2hlcyB3aXRoIHRoZSBkZWFkIGJvZGllcywgYW5kIHByZWNpb3VzIGpld2Vscywgd2hpY2ggdGhleSBzdHJpcHBlZCBvZmYgZm9yIHRoZW1zZWx2ZXMsIG1vcmUgdGhhbiB0aGV5IGNvdWxkIGNhcnJ5IGF3YXk6IGFuZCB0aGV5IHdlcmUgdGhyZWUgZGF5cyBpbiBnYXRoZXJpbmcgb2YgdGhlIHNwb2lsLCBpdCB3YXMgc28gbXVjaC4KQW5kIG9uIHRoZSBmb3VydGggZGF5IHRoZXkgYXNzZW1ibGVkIHRoZW1zZWx2ZXMgaW4gdGhlIHZhbGxleSBvZiBCZXJhY2hhaDsgZm9yIHRoZXJlIHRoZXkgYmxlc3NlZCB0aGUgTE9SRDogdGhlcmVmb3JlIHRoZSBuYW1lIG9mIHRoZSBzYW1lIHBsYWNlIHdhcyBjYWxsZWQsIFRoZSB2YWxsZXkgb2YgQmVyYWNoYWgsIHVudG8gdGhpcyBkYXkuClRoZW4gdGhleSByZXR1cm5lZCwgZXZlcnkgbWFuIG9mIEp1ZGFoIGFuZCBKZXJ1c2FsZW0sIGFuZCBKZWhvc2hhcGhhdCBpbiB0aGUgZm9yZWZyb250IG9mIHRoZW0sIHRvIGdvIGFnYWluIHRvIEplcnVzYWxlbSB3aXRoIGpveTsgZm9yIHRoZSBMT1JEIGhhZCBtYWRlIHRoZW0gdG8gcmVqb2ljZSBvdmVyIHRoZWlyIGVuZW1pZXMuCkFuZCB0aGV5IGNhbWUgdG8gSmVydXNhbGVtIHdpdGggcHNhbHRlcmllcyBhbmQgaGFycHMgYW5kIHRydW1wZXRzIHVudG8gdGhlIGhvdXNlIG9mIHRoZSBMT1JELgpBbmQgdGhlIGZlYXIgb2YgR29kIHdhcyBvbiBhbGwgdGhlIGtpbmdkb21zIG9mIHRob3NlIGNvdW50cmllcywgd2hlbiB0aGV5IGhhZCBoZWFyZCB0aGF0IHRoZSBMT1JEIGZvdWdodCBhZ2FpbnN0IHRoZSBlbmVtaWVzIG9mIElzcmFlbC4KU28gdGhlIHJlYWxtIG9mIEplaG9zaGFwaGF0IHdhcyBxdWlldDogZm9yIGhpcyBHb2QgZ2F2ZSBoaW0gcmVzdCByb3VuZCBhYm91dC4KQW5kIEplaG9zaGFwaGF0IHJlaWduZWQgb3ZlciBKdWRhaDogaGUgd2FzIHRoaXJ0eSBhbmQgZml2ZSB5ZWFycyBvbGQgd2hlbiBoZSBiZWdhbiB0byByZWlnbiwgYW5kIGhlIHJlaWduZWQgdHdlbnR5IGFuZCBmaXZlIHllYXJzIGluIEplcnVzYWxlbS4gQW5kIGhpcyBtb3RoZXIncyBuYW1lIHdhcyBBenViYWggdGhlIGRhdWdodGVyIG9mIFNoaWxoaS4KQW5kIGhlIHdhbGtlZCBpbiB0aGUgd2F5IG9mIEFzYSBoaXMgZmF0aGVyLCBhbmQgZGVwYXJ0ZWQgbm90IGZyb20gaXQsIGRvaW5nIHRoYXQgd2hpY2ggd2FzIHJpZ2h0IGluIHRoZSBzaWdodCBvZiB0aGUgTE9SRC4KSG93YmVpdCB0aGUgaGlnaCBwbGFjZXMgd2VyZSBub3QgdGFrZW4gYXdheTogZm9yIGFzIHlldCB0aGUgcGVvcGxlIGhhZCBub3QgcHJlcGFyZWQgdGhlaXIgaGVhcnRzIHVudG8gdGhlIEdvZCBvZiB0aGVpciBmYXRoZXJzLgpOb3cgdGhlIHJlc3Qgb2YgdGhlIGFjdHMgb2YgSmVob3NoYXBoYXQsIGZpcnN0IGFuZCBsYXN0LCBiZWhvbGQsIHRoZXkgYXJlIHdyaXR0ZW4gaW4gdGhlIGJvb2sgb2YgSmVodSB0aGUgc29uIG9mIEhhbmFuaSwgd2hvIGlzIG1lbnRpb25lZCBpbiB0aGUgYm9vayBvZiB0aGUga2luZ3Mgb2YgSXNyYWVsLgpBbmQgYWZ0ZXIgdGhpcyBkaWQgSmVob3NoYXBoYXQga2luZyBvZiBKdWRhaCBqb2luIGhpbXNlbGYgd2l0aCBBaGF6aWFoIGtpbmcgb2YgSXNyYWVsLCB3aG8gZGlkIHZlcnkgd2lja2VkbHk6CkFuZCBoZSBqb2luZWQgaGltc2VsZiB3aXRoIGhpbSB0byBtYWtlIHNoaXBzIHRvIGdvIHRvIFRhcnNoaXNoOiBhbmQgdGhleSBtYWRlIHRoZSBzaGlwcyBpbiBFemlvbmdhYmVyLgpUaGVuIEVsaWV6ZXIgdGhlIHNvbiBvZiBEb2RhdmFoIG9mIE1hcmVzaGFoIHByb3BoZXNpZWQgYWdhaW5zdCBKZWhvc2hhcGhhdCwgc2F5aW5nLCBCZWNhdXNlIHRob3UgaGFzdCBqb2luZWQgdGh5c2VsZiB3aXRoIEFoYXppYWgsIHRoZSBMT1JEIGhhdGggYnJva2VuIHRoeSB3b3Jrcy4gQW5kIHRoZSBzaGlwcyB3ZXJlIGJyb2tlbiwgdGhhdCB0aGV5IHdlcmUgbm90IGFibGUgdG8gZ28gdG8gVGFyc2hpc2guCk5vdyBKZWhvc2hhcGhhdCBzbGVwdCB3aXRoIGhpcyBmYXRoZXJzLCBhbmQgd2FzIGJ1cmllZCB3aXRoIGhpcyBmYXRoZXJzIGluIHRoZSBjaXR5IG9mIERhdmlkLiBBbmQgSmVob3JhbSBoaXMgc29uIHJlaWduZWQgaW4gaGlzIHN0ZWFkLgpBbmQgaGUgaGFkIGJyZXRocmVuIHRoZSBzb25zIG9mIEplaG9zaGFwaGF0LCBBemFyaWFoLCBhbmQgSmVoaWVsLCBhbmQgWmVjaGFyaWFoLCBhbmQgQXphcmlhaCwgYW5kIE1pY2hhZWwsIGFuZCBTaGVwaGF0aWFoOiBhbGwgdGhlc2Ugd2VyZSB0aGUgc29ucyBvZiBKZWhvc2hhcGhhdCBraW5nIG9mIElzcmFlbC4KQW5kIHRoZWlyIGZhdGhlciBnYXZlIHRoZW0gZ3JlYXQgZ2lmdHMgb2Ygc2lsdmVyLCBhbmQgb2YgZ29sZCwgYW5kIG9mIHByZWNpb3VzIHRoaW5ncywgd2l0aCBmZW5jZWQgY2l0aWVzIGluIEp1ZGFoOiBidXQgdGhlIGtpbmdkb20gZ2F2ZSBoZSB0byBKZWhvcmFtOyBiZWNhdXNlIGhlIHdhcyB0aGUgZmlyc3Rib3JuLgpOb3cgd2hlbiBKZWhvcmFtIHdhcyByaXNlbiB1cCB0byB0aGUga2luZ2RvbSBvZiBoaXMgZmF0aGVyLCBoZSBzdHJlbmd0aGVuZWQgaGltc2VsZiwgYW5kIHNsZXcgYWxsIGhpcyBicmV0aHJlbiB3aXRoIHRoZSBzd29yZCwgYW5kIGRpdmVycyBhbHNvIG9mIHRoZSBwcmluY2VzIG9mIElzcmFlbC4KSmVob3JhbSB3YXMgdGhpcnR5IGFuZCB0d28geWVhcnMgb2xkIHdoZW4gaGUgYmVnYW4gdG8gcmVpZ24sIGFuZCBoZSByZWlnbmVkIGVpZ2h0IHllYXJzIGluIEplcnVzYWxlbS4KQW5kIGhlIHdhbGtlZCBpbiB0aGUgd2F5IG9mIHRoZSBraW5ncyBvZiBJc3JhZWwsIGxpa2UgYXMgZGlkIHRoZSBob3VzZSBvZiBBaGFiOiBmb3IgaGUgaGFkIHRoZSBkYXVnaHRlciBvZiBBaGFiIHRvIHdpZmU6IGFuZCBoZSB3cm91Z2h0IHRoYXQgd2hpY2ggd2FzIGV2aWwgaW4gdGhlIGV5ZXMgb2YgdGhlIExPUkQuCkhvd2JlaXQgdGhlIExPUkQgd291bGQgbm90IGRlc3Ryb3kgdGhlIGhvdXNlIG9mIERhdmlkLCBiZWNhdXNlIG9mIHRoZSBjb3ZlbmFudCB0aGF0IGhlIGhhZCBtYWRlIHdpdGggRGF2aWQsIGFuZCBhcyBoZSBwcm9taXNlZCB0byBnaXZlIGEgbGlnaHQgdG8gaGltIGFuZCB0byBoaXMgc29ucyBmb3IgZXZlci4KSW4gaGlzIGRheXMgdGhlIEVkb21pdGVzIHJldm9sdGVkIGZyb20gdW5kZXIgdGhlIGRvbWluaW9uIG9mIEp1ZGFoLCBhbmQgbWFkZSB0aGVtc2VsdmVzIGEga2luZy4KVGhlbiBKZWhvcmFtIHdlbnQgZm9ydGggd2l0aCBoaXMgcHJpbmNlcywgYW5kIGFsbCBoaXMgY2hhcmlvdHMgd2l0aCBoaW06IGFuZCBoZSByb3NlIHVwIGJ5IG5pZ2h0LCBhbmQgc21vdGUgdGhlIEVkb21pdGVzIHdoaWNoIGNvbXBhc3NlZCBoaW0gaW4sIGFuZCB0aGUgY2FwdGFpbnMgb2YgdGhlIGNoYXJpb3RzLgpTbyB0aGUgRWRvbWl0ZXMgcmV2b2x0ZWQgZnJvbSB1bmRlciB0aGUgaGFuZCBvZiBKdWRhaCB1bnRvIHRoaXMgZGF5LiBUaGUgc2FtZSB0aW1lIGFsc28gZGlkIExpYm5haCByZXZvbHQgZnJvbSB1bmRlciBoaXMgaGFuZDsgYmVjYXVzZSBoZSBoYWQgZm9yc2FrZW4gdGhlIExPUkQgR29kIG9mIGhpcyBmYXRoZXJzLgpNb3Jlb3ZlciBoZSBtYWRlIGhpZ2ggcGxhY2VzIGluIHRoZSBtb3VudGFpbnMgb2YgSnVkYWggYW5kIGNhdXNlZCB0aGUgaW5oYWJpdGFudHMgb2YgSmVydXNhbGVtIHRvIGNvbW1pdCBmb3JuaWNhdGlvbiwgYW5kIGNvbXBlbGxlZCBKdWRhaCB0aGVyZXRvLgpBbmQgdGhlcmUgY2FtZSBhIHdyaXRpbmcgdG8gaGltIGZyb20gRWxpamFoIHRoZSBwcm9waGV0LCBzYXlpbmcsIFRodXMgc2FpdGggdGhlIExPUkQgR29kIG9mIERhdmlkIHRoeSBmYXRoZXIsIEJlY2F1c2UgdGhvdSBoYXN0IG5vdCB3YWxrZWQgaW4gdGhlIHdheXMgb2YgSmVob3NoYXBoYXQgdGh5IGZhdGhlciwgbm9yIGluIHRoZSB3YXlzIG9mIEFzYSBraW5nIG9mIEp1ZGFoLApCdXQgaGFzdCB3YWxrZWQgaW4gdGhlIHdheSBvZiB0aGUga2luZ3Mgb2YgSXNyYWVsLCBhbmQgaGFzdCBtYWRlIEp1ZGFoIGFuZCB0aGUgaW5oYWJpdGFudHMgb2YgSmVydXNhbGVtIHRvIGdvIGEgd2hvcmluZywgbGlrZSB0byB0aGUgd2hvcmVkb21zIG9mIHRoZSBob3VzZSBvZiBBaGFiLCBhbmQgYWxzbyBoYXN0IHNsYWluIHRoeSBicmV0aHJlbiBvZiB0aHkgZmF0aGVyJ3MgaG91c2UsIHdoaWNoIHdlcmUgYmV0dGVyIHRoYW4gdGh5c2VsZjoKQmVob2xkLCB3aXRoIGEgZ3JlYXQgcGxhZ3VlIHdpbGwgdGhlIExPUkQgc21pdGUgdGh5IHBlb3BsZSwgYW5kIHRoeSBjaGlsZHJlbiwgYW5kIHRoeSB3aXZlcywgYW5kIGFsbCB0aHkgZ29vZHM6CkFuZCB0aG91IHNoYWx0IGhhdmUgZ3JlYXQgc2lja25lc3MgYnkgZGlzZWFzZSBvZiB0aHkgYm93ZWxzLCB1bnRpbCB0aHkgYm93ZWxzIGZhbGwgb3V0IGJ5IHJlYXNvbiBvZiB0aGUgc2lja25lc3MgZGF5IGJ5IGRheS4KTW9yZW92ZXIgdGhlIExPUkQgc3RpcnJlZCB1cCBhZ2FpbnN0IEplaG9yYW0gdGhlIHNwaXJpdCBvZiB0aGUgUGhpbGlzdGluZXMsIGFuZCBvZiB0aGUgQXJhYmlhbnMsIHRoYXQgd2VyZSBuZWFyIHRoZSBFdGhpb3BpYW5zOgpBbmQgdGhleSBjYW1lIHVwIGludG8gSnVkYWgsIGFuZCBicmFrZSBpbnRvIGl0LCBhbmQgY2FycmllZCBhd2F5IGFsbCB0aGUgc3Vic3RhbmNlIHRoYXQgd2FzIGZvdW5kIGluIHRoZSBraW5nJ3MgaG91c2UsIGFuZCBoaXMgc29ucyBhbHNvLCBhbmQgaGlzIHdpdmVzOyBzbyB0aGF0IHRoZXJlIHdhcyBuZXZlciBhIHNvbiBsZWZ0IGhpbSwgc2F2ZSBKZWhvYWhheiwgdGhlIHlvdW5nZXN0IG9mIGhpcyBzb25zLgpBbmQgYWZ0ZXIgYWxsIHRoaXMgdGhlIExPUkQgc21vdGUgaGltIGluIGhpcyBib3dlbHMgd2l0aCBhbiBpbmN1cmFibGUgZGlzZWFzZS4KQW5kIGl0IGNhbWUgdG8gcGFzcywgdGhhdCBpbiBwcm9jZXNzIG9mIHRpbWUsIGFmdGVyIHRoZSBlbmQgb2YgdHdvIHllYXJzLCBoaXMgYm93ZWxzIGZlbGwgb3V0IGJ5IHJlYXNvbiBvZiBoaXMgc2lja25lc3M6IHNvIGhlIGRpZWQgb2Ygc29yZSBkaXNlYXNlcy4gQW5kIGhpcyBwZW9wbGUgbWFkZSBubyBidXJuaW5nIGZvciBoaW0sIGxpa2UgdGhlIGJ1cm5pbmcgb2YgaGlzIGZhdGhlcnMuClRoaXJ0eSBhbmQgdHdvIHllYXJzIG9sZCB3YXMgaGUgd2hlbiBoZSBiZWdhbiB0byByZWlnbiwgYW5kIGhlIHJlaWduZWQgaW4gSmVydXNhbGVtIGVpZ2h0IHllYXJzLCBhbmQgZGVwYXJ0ZWQgd2l0aG91dCBiZWluZyBkZXNpcmVkLiBIb3diZWl0IHRoZXkgYnVyaWVkIGhpbSBpbiB0aGUgY2l0eSBvZiBEYXZpZCwgYnV0IG5vdCBpbiB0aGUgc2VwdWxjaHJlcyBvZiB0aGUga2luZ3MuCkFuZCB0aGUgaW5oYWJpdGFudHMgb2YgSmVydXNhbGVtIG1hZGUgQWhhemlhaCBoaXMgeW91bmdlc3Qgc29uIGtpbmcgaW4gaGlzIHN0ZWFkOiBmb3IgdGhlIGJhbmQgb2YgbWVuIHRoYXQgY2FtZSB3aXRoIHRoZSBBcmFiaWFucyB0byB0aGUgY2FtcCBoYWQgc2xhaW4gYWxsIHRoZSBlbGRlc3QuIFNvIEFoYXppYWggdGhlIHNvbiBvZiBKZWhvcmFtIGtpbmcgb2YgSnVkYWggcmVpZ25lZC4KRm9ydHkgYW5kIHR3byB5ZWFycyBvbGQgd2FzIEFoYXppYWggd2hlbiBoZSBiZWdhbiB0byByZWlnbiwgYW5kIGhlIHJlaWduZWQgb25lIHllYXIgaW4gSmVydXNhbGVtLiBIaXMgbW90aGVyJ3MgbmFtZSBhbHNvIHdhcyBBdGhhbGlhaCB0aGUgZGF1Z2h0ZXIgb2YgT21yaS4KSGUgYWxzbyB3YWxrZWQgaW4gdGhlIHdheXMgb2YgdGhlIGhvdXNlIG9mIEFoYWI6IGZvciBoaXMgbW90aGVyIHdhcyBoaXMgY291bnNlbGxvciB0byBkbyB3aWNrZWRseS4KV2hlcmVmb3JlIGhlIGRpZCBldmlsIGluIHRoZSBzaWdodCBvZiB0aGUgTE9SRCBsaWtlIHRoZSBob3VzZSBvZiBBaGFiOiBmb3IgdGhleSB3ZXJlIGhpcyBjb3Vuc2VsbG9ycyBhZnRlciB0aGUgZGVhdGggb2YgaGlzIGZhdGhlciB0byBoaXMgZGVzdHJ1Y3Rpb24uCkhlIHdhbGtlZCBhbHNvIGFmdGVyIHRoZWlyIGNvdW5zZWwsIGFuZCB3ZW50IHdpdGggSmVob3JhbSB0aGUgc29uIG9mIEFoYWIga2luZyBvZiBJc3JhZWwgdG8gd2FyIGFnYWluc3QgSGF6YWVsIGtpbmcgb2YgU3lyaWEgYXQgUmFtb3RoZ2lsZWFkOiBhbmQgdGhlIFN5cmlhbnMgc21vdGUgSm9yYW0uCkFuZCBoZSByZXR1cm5lZCB0byBiZSBoZWFsZWQgaW4gSmV6cmVlbCBiZWNhdXNlIG9mIHRoZSB3b3VuZHMgd2hpY2ggd2VyZSBnaXZlbiBoaW0gYXQgUmFtYWgsIHdoZW4gaGUgZm91Z2h0IHdpdGggSGF6YWVsIGtpbmcgb2YgU3lyaWEuIEFuZCBBemFyaWFoIHRoZSBzb24gb2YgSmVob3JhbSBraW5nIG9mIEp1ZGFoIHdlbnQgZG93biB0byBzZWUgSmVob3JhbSB0aGUgc29uIG9mIEFoYWIgYXQgSmV6cmVlbCwgYmVjYXVzZSBoZSB3YXMgc2ljay4KQW5kIHRoZSBkZXN0cnVjdGlvbiBvZiBBaGF6aWFoIHdhcyBvZiBHb2QgYnkgY29taW5nIHRvIEpvcmFtOiBmb3Igd2hlbiBoZSB3YXMgY29tZSwgaGUgd2VudCBvdXQgd2l0aCBKZWhvcmFtIGFnYWluc3QgSmVodSB0aGUgc29uIG9mIE5pbXNoaSwgd2hvbSB0aGUgTE9SRCBoYWQgYW5vaW50ZWQgdG8gY3V0IG9mZiB0aGUgaG91c2Ugb2YgQWhhYi4KQW5kIGl0IGNhbWUgdG8gcGFzcywgdGhhdCwgd2hlbiBKZWh1IHdhcyBleGVjdXRpbmcganVkZ21lbnQgdXBvbiB0aGUgaG91c2Ugb2YgQWhhYiwgYW5kIGZvdW5kIHRoZSBwcmluY2VzIG9mIEp1ZGFoLCBhbmQgdGhlIHNvbnMgb2YgdGhlIGJyZXRocmVuIG9mIEFoYXppYWgsIHRoYXQgbWluaXN0ZXJlZCB0byBBaGF6aWFoLCBoZSBzbGV3IHRoZW0uCkFuZCBoZSBzb3VnaHQgQWhhemlhaDogYW5kIHRoZXkgY2F1Z2h0IGhpbSwgKGZvciBoZSB3YXMgaGlkIGluIFNhbWFyaWEsKSBhbmQgYnJvdWdodCBoaW0gdG8gSmVodTogYW5kIHdoZW4gdGhleSBoYWQgc2xhaW4gaGltLCB0aGV5IGJ1cmllZCBoaW06IEJlY2F1c2UsIHNhaWQgdGhleSwgaGUgaXMgdGhlIHNvbiBvZiBKZWhvc2hhcGhhdCwgd2hvIHNvdWdodCB0aGUgTE9SRCB3aXRoIGFsbCBoaXMgaGVhcnQuIFNvIHRoZSBob3VzZSBvZiBBaGF6aWFoIGhhZCBubyBwb3dlciB0byBrZWVwIHN0aWxsIHRoZSBraW5nZG9tLgpCdXQgd2hlbiBBdGhhbGlhaCB0aGUgbW90aGVyIG9mIEFoYXppYWggc2F3IHRoYXQgaGVyIHNvbiB3YXMgZGVhZCwgc2hlIGFyb3NlIGFuZCBkZXN0cm95ZWQgYWxsIHRoZSBzZWVkIHJveWFsIG9mIHRoZSBob3VzZSBvZiBKdWRhaC4KQnV0IEplaG9zaGFiZWF0aCwgdGhlIGRhdWdodGVyIG9mIHRoZSBraW5nLCB0b29rIEpvYXNoIHRoZSBzb24gb2YgQWhhemlhaCwgYW5kIHN0b2xlIGhpbSBmcm9tIGFtb25nIHRoZSBraW5nJ3Mgc29ucyB0aGF0IHdlcmUgc2xhaW4sIGFuZCBwdXQgaGltIGFuZCBoaXMgbnVyc2UgaW4gYSBiZWRjaGFtYmVyLiBTbyBKZWhvc2hhYmVhdGgsIHRoZSBkYXVnaHRlciBvZiBraW5nIEplaG9yYW0sIHRoZSB3aWZlIG9mIEplaG9pYWRhIHRoZSBwcmllc3QsIChmb3Igc2hlIHdhcyB0aGUgc2lzdGVyIG9mIEFoYXppYWgsKSBoaWQgaGltIGZyb20gQXRoYWxpYWgsIHNvIHRoYXQgc2hlIHNsZXcgaGltIG5vdC4KQW5kIGhlIHdhcyB3aXRoIHRoZW0gaGlkIGluIHRoZSBob3VzZSBvZiBHb2Qgc2l4IHllYXJzOiBhbmQgQXRoYWxpYWggcmVpZ25lZCBvdmVyIHRoZSBsYW5kLgpBbmQgaW4gdGhlIHNldmVudGggeWVhciBKZWhvaWFkYSBzdHJlbmd0aGVuZWQgaGltc2VsZiwgYW5kIHRvb2sgdGhlIGNhcHRhaW5zIG9mIGh1bmRyZWRzLCBBemFyaWFoIHRoZSBzb24gb2YgSmVyb2hhbSwgYW5kIElzaG1hZWwgdGhlIHNvbiBvZiBKZWhvaGFuYW4sIGFuZCBBemFyaWFoIHRoZSBzb24gb2YgT2JlZCwgYW5kIE1hYXNlaWFoIHRoZSBzb24gb2YgQWRhaWFoLCBhbmQgRWxpc2hhcGhhdCB0aGUgc29uIG9mIFppY2hyaSwgaW50byBjb3ZlbmFudCB3aXRoIGhpbS4KQW5kIHRoZXkgd2VudCBhYm91dCBpbiBKdWRhaCwgYW5kIGdhdGhlcmVkIHRoZSBMZXZpdGVzIG91dCBvZiBhbGwgdGhlIGNpdGllcyBvZiBKdWRhaCwgYW5kIHRoZSBjaGllZiBvZiB0aGUgZmF0aGVycyBvZiBJc3JhZWwsIGFuZCB0aGV5IGNhbWUgdG8gSmVydXNhbGVtLgpBbmQgYWxsIHRoZSBjb25ncmVnYXRpb24gbWFkZSBhIGNvdmVuYW50IHdpdGggdGhlIGtpbmcgaW4gdGhlIGhvdXNlIG9mIEdvZC4gQW5kIGhlIHNhaWQgdW50byB0aGVtLCBCZWhvbGQsIHRoZSBraW5nJ3Mgc29uIHNoYWxsIHJlaWduLCBhcyB0aGUgTE9SRCBoYXRoIHNhaWQgb2YgdGhlIHNvbnMgb2YgRGF2aWQuClRoaXMgaXMgdGhlIHRoaW5nIHRoYXQgeWUgc2hhbGwgZG87IEEgdGhpcmQgcGFydCBvZiB5b3UgZW50ZXJpbmcgb24gdGhlIHNhYmJhdGgsIG9mIHRoZSBwcmllc3RzIGFuZCBvZiB0aGUgTGV2aXRlcywgc2hhbGwgYmUgcG9ydGVycyBvZiB0aGUgZG9vcnM7CkFuZCBhIHRoaXJkIHBhcnQgc2hhbGwgYmUgYXQgdGhlIGtpbmcncyBob3VzZTsgYW5kIGEgdGhpcmQgcGFydCBhdCB0aGUgZ2F0ZSBvZiB0aGUgZm91bmRhdGlvbjogYW5kIGFsbCB0aGUgcGVvcGxlIHNoYWxsIGJlIGluIHRoZSBjb3VydHMgb2YgdGhlIGhvdXNlIG9mIHRoZSBMT1JELgpCdXQgbGV0IG5vbmUgY29tZSBpbnRvIHRoZSBob3VzZSBvZiB0aGUgTE9SRCwgc2F2ZSB0aGUgcHJpZXN0cywgYW5kIHRoZXkgdGhhdCBtaW5pc3RlciBvZiB0aGUgTGV2aXRlczsgdGhleSBzaGFsbCBnbyBpbiwgZm9yIHRoZXkgYXJlIGhvbHk6IGJ1dCBhbGwgdGhlIHBlb3BsZSBzaGFsbCBrZWVwIHRoZSB3YXRjaCBvZiB0aGUgTE9SRC4KQW5kIHRoZSBMZXZpdGVzIHNoYWxsIGNvbXBhc3MgdGhlIGtpbmcgcm91bmQgYWJvdXQsIGV2ZXJ5IG1hbiB3aXRoIGhpcyB3ZWFwb25zIGluIGhpcyBoYW5kOyBhbmQgd2hvc29ldmVyIGVsc2UgY29tZXRoIGludG8gdGhlIGhvdXNlLCBoZSBzaGFsbCBiZSBwdXQgdG8gZGVhdGg6IGJ1dCBiZSB5ZSB3aXRoIHRoZSBraW5nIHdoZW4gaGUgY29tZXRoIGluLCBhbmQgd2hlbiBoZSBnb2V0aCBvdXQuClNvIHRoZSBMZXZpdGVzIGFuZCBhbGwgSnVkYWggZGlkIGFjY29yZGluZyB0byBhbGwgdGhpbmdzIHRoYXQgSmVob2lhZGEgdGhlIHByaWVzdCBoYWQgY29tbWFuZGVkLCBhbmQgdG9vayBldmVyeSBtYW4gaGlzIG1lbiB0aGF0IHdlcmUgdG8gY29tZSBpbiBvbiB0aGUgc2FiYmF0aCwgd2l0aCB0aGVtIHRoYXQgd2VyZSB0byBnbyBvdXQgb24gdGhlIHNhYmJhdGg6IGZvciBKZWhvaWFkYSB0aGUgcHJpZXN0IGRpc21pc3NlZCBub3QgdGhlIGNvdXJzZXMuCk1vcmVvdmVyIEplaG9pYWRhIHRoZSBwcmllc3QgZGVsaXZlcmVkIHRvIHRoZSBjYXB0YWlucyBvZiBodW5kcmVkcyBzcGVhcnMsIGFuZCBidWNrbGVycywgYW5kIHNoaWVsZHMsIHRoYXQgaGFkIGJlZW4ga2luZyBEYXZpZCdzLCB3aGljaCB3ZXJlIGluIHRoZSBob3VzZSBvZiBHb2QuCkFuZCBoZSBzZXQgYWxsIHRoZSBwZW9wbGUsIGV2ZXJ5IG1hbiBoYXZpbmcgaGlzIHdlYXBvbiBpbiBoaXMgaGFuZCwgZnJvbSB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgdGVtcGxlIHRvIHRoZSBsZWZ0IHNpZGUgb2YgdGhlIHRlbXBsZSwgYWxvbmcgYnkgdGhlIGFsdGFyIGFuZCB0aGUgdGVtcGxlLCBieSB0aGUga2luZyByb3VuZCBhYm91dC4KVGhlbiB0aGV5IGJyb3VnaHQgb3V0IHRoZSBraW5nJ3Mgc29uLCBhbmQgcHV0IHVwb24gaGltIHRoZSBjcm93biwgYW5kIGdhdmUgaGltIHRoZSB0ZXN0aW1vbnksIGFuZCBtYWRlIGhpbSBraW5nLiBBbmQgSmVob2lhZGEgYW5kIGhpcyBzb25zIGFub2ludGVkIGhpbSwgYW5kIHNhaWQsIEdvZCBzYXZlIHRoZSBraW5nLgpOb3cgd2hlbiBBdGhhbGlhaCBoZWFyZCB0aGUgbm9pc2Ugb2YgdGhlIHBlb3BsZSBydW5uaW5nIGFuZCBwcmFpc2luZyB0aGUga2luZywgc2hlIGNhbWUgdG8gdGhlIHBlb3BsZSBpbnRvIHRoZSBob3VzZSBvZiB0aGUgTE9SRDoKQW5kIHNoZSBsb29rZWQsIGFuZCwgYmVob2xkLCB0aGUga2luZyBzdG9vZCBhdCBoaXMgcGlsbGFyIGF0IHRoZSBlbnRlcmluZyBpbiwgYW5kIHRoZSBwcmluY2VzIGFuZCB0aGUgdHJ1bXBldHMgYnkgdGhlIGtpbmc6IGFuZCBhbGwgdGhlIHBlb3BsZSBvZiB0aGUgbGFuZCByZWpvaWNlZCwgYW5kIHNvdW5kZWQgd2l0aCB0cnVtcGV0cywgYWxzbyB0aGUgc2luZ2VycyB3aXRoIGluc3RydW1lbnRzIG9mIG11c2ljaywgYW5kIHN1Y2ggYXMgdGF1Z2h0IHRvIHNpbmcgcHJhaXNlLiBUaGVuIEF0aGFsaWFoIHJlbnQgaGVyIGNsb3RoZXMsIGFuZCBzYWlkLCBUcmVhc29uLCBUcmVhc29uLgpUaGVuIEplaG9pYWRhIHRoZSBwcmllc3QgYnJvdWdodCBvdXQgdGhlIGNhcHRhaW5zIG9mIGh1bmRyZWRzIHRoYXQgd2VyZSBzZXQgb3ZlciB0aGUgaG9zdCwgYW5kIHNhaWQgdW50byB0aGVtLCBIYXZlIGhlciBmb3J0aCBvZiB0aGUgcmFuZ2VzOiBhbmQgd2hvc28gZm9sbG93ZXRoIGhlciwgbGV0IGhpbSBiZSBzbGFpbiB3aXRoIHRoZSBzd29yZC4gRm9yIHRoZSBwcmllc3Qgc2FpZCwgU2xheSBoZXIgbm90IGluIHRoZSBob3VzZSBvZiB0aGUgTE9SRC4KU28gdGhleSBsYWlkIGhhbmRzIG9uIGhlcjsgYW5kIHdoZW4gc2hlIHdhcyBjb21lIHRvIHRoZSBlbnRlcmluZyBvZiB0aGUgaG9yc2UgZ2F0ZSBieSB0aGUga2luZydzIGhvdXNlLCB0aGV5IHNsZXcgaGVyIHRoZXJlLgpBbmQgSmVob2lhZGEgbWFkZSBhIGNvdmVuYW50IGJldHdlZW4gaGltLCBhbmQgYmV0d2VlbiBhbGwgdGhlIHBlb3BsZSwgYW5kIGJldHdlZW4gdGhlIGtpbmcsIHRoYXQgdGhleSBzaG91bGQgYmUgdGhlIExPUkQncyBwZW9wbGUuClRoZW4gYWxsIHRoZSBwZW9wbGUgd2VudCB0byB0aGUgaG91c2Ugb2YgQmFhbCwgYW5kIGJyYWtlIGl0IGRvd24sIGFuZCBicmFrZSBoaXMgYWx0YXJzIGFuZCBoaXMgaW1hZ2VzIGluIHBpZWNlcywgYW5kIHNsZXcgTWF0dGFuIHRoZSBwcmllc3Qgb2YgQmFhbCBiZWZvcmUgdGhlIGFsdGFycy4KQWxzbyBKZWhvaWFkYSBhcHBvaW50ZWQgdGhlIG9mZmljZXMgb2YgdGhlIGhvdXNlIG9mIHRoZSBMT1JEIGJ5IHRoZSBoYW5kIG9mIHRoZSBwcmllc3RzIHRoZSBMZXZpdGVzLCB3aG9tIERhdmlkIGhhZCBkaXN0cmlidXRlZCBpbiB0aGUgaG91c2Ugb2YgdGhlIExPUkQsIHRvIG9mZmVyIHRoZSBidXJudCBvZmZlcmluZ3Mgb2YgdGhlIExPUkQsIGFzIGl0IGlzIHdyaXR0ZW4gaW4gdGhlIGxhdyBvZiBNb3Nlcywgd2l0aCByZWpvaWNpbmcgYW5kIHdpdGggc2luZ2luZywgYXMgaXQgd2FzIG9yZGFpbmVkIGJ5IERhdmlkLgpBbmQgaGUgc2V0IHRoZSBwb3J0ZXJzIGF0IHRoZSBnYXRlcyBvZiB0aGUgaG91c2Ugb2YgdGhlIExPUkQsIHRoYXQgbm9uZSB3aGljaCB3YXMgdW5jbGVhbiBpbiBhbnkgdGhpbmcgc2hvdWxkIGVudGVyIGluLgpBbmQgaGUgdG9vayB0aGUgY2FwdGFpbnMgb2YgaHVuZHJlZHMsIGFuZCB0aGUgbm9ibGVzLCBhbmQgdGhlIGdvdmVybm9ycyBvZiB0aGUgcGVvcGxlLCBhbmQgYWxsIHRoZSBwZW9wbGUgb2YgdGhlIGxhbmQsIGFuZCBicm91Z2h0IGRvd24gdGhlIGtpbmcgZnJvbSB0aGUgaG91c2Ugb2YgdGhlIExPUkQ6IGFuZCB0aGV5IGNhbWUgdGhyb3VnaCB0aGUgaGlnaCBnYXRlIGludG8gdGhlIGtpbmcncyBob3VzZSwgYW5kIHNldCB0aGUga2luZyB1cG9uIHRoZSB0aHJvbmUgb2YgdGhlIGtpbmdkb20uCkFuZCBhbGwgdGhlIHBlb3BsZSBvZiB0aGUgbGFuZCByZWpvaWNlZDogYW5kIHRoZSBjaXR5IHdhcyBxdWlldCwgYWZ0ZXIgdGhhdCB0aGV5IGhhZCBzbGFpbiBBdGhhbGlhaCB3aXRoIHRoZSBzd29yZC4KSm9hc2ggd2FzIHNldmVuIHllYXJzIG9sZCB3aGVuIGhlIGJlZ2FuIHRvIHJlaWduLCBhbmQgaGUgcmVpZ25lZCBmb3J0eSB5ZWFycyBpbiBKZXJ1c2FsZW0uIEhpcyBtb3RoZXIncyBuYW1lIGFsc28gd2FzIFppYmlhaCBvZiBCZWVyc2hlYmEuCkFuZCBKb2FzaCBkaWQgdGhhdCB3aGljaCB3YXMgcmlnaHQgaW4gdGhlIHNpZ2h0IG9mIHRoZSBMT1JEIGFsbCB0aGUgZGF5cyBvZiBKZWhvaWFkYSB0aGUgcHJpZXN0LgpBbmQgSmVob2lhZGEgdG9vayBmb3IgaGltIHR3byB3aXZlczsgYW5kIGhlIGJlZ2F0IHNvbnMgYW5kIGRhdWdodGVycy4KQW5kIGl0IGNhbWUgdG8gcGFzcyBhZnRlciB0aGlzLCB0aGF0IEpvYXNoIHdhcyBtaW5kZWQgdG8gcmVwYWlyIHRoZSBob3VzZSBvZiB0aGUgTE9SRC4KQW5kIGhlIGdhdGhlcmVkIHRvZ2V0aGVyIHRoZSBwcmllc3RzIGFuZCB0aGUgTGV2aXRlcywgYW5kIHNhaWQgdG8gdGhlbSwgR28gb3V0IHVudG8gdGhlIGNpdGllcyBvZiBKdWRhaCwgYW5kIGdhdGhlciBvZiBhbGwgSXNyYWVsIG1vbmV5IHRvIHJlcGFpciB0aGUgaG91c2Ugb2YgeW91ciBHb2QgZnJvbSB5ZWFyIHRvIHllYXIsIGFuZCBzZWUgdGhhdCB5ZSBoYXN0ZW4gdGhlIG1hdHRlci4gSG93YmVpdCB0aGUgTGV2aXRlcyBoYXN0ZW5lZCBpdCBub3QuCkFuZCB0aGUga2luZyBjYWxsZWQgZm9yIEplaG9pYWRhIHRoZSBjaGllZiwgYW5kIHNhaWQgdW50byBoaW0sIFdoeSBoYXN0IHRob3Ugbm90IHJlcXVpcmVkIG9mIHRoZSBMZXZpdGVzIHRvIGJyaW5nIGluIG91dCBvZiBKdWRhaCBhbmQgb3V0IG9mIEplcnVzYWxlbSB0aGUgY29sbGVjdGlvbiwgYWNjb3JkaW5nIHRvIHRoZSBjb21tYW5kbWVudCBvZiBNb3NlcyB0aGUgc2VydmFudCBvZiB0aGUgTE9SRCwgYW5kIG9mIHRoZSBjb25ncmVnYXRpb24gb2YgSXNyYWVsLCBmb3IgdGhlIHRhYmVybmFjbGUgb2Ygd2l0bmVzcz8KRm9yIHRoZSBzb25zIG9mIEF0aGFsaWFoLCB0aGF0IHdpY2tlZCB3b21hbiwgaGFkIGJyb2tlbiB1cCB0aGUgaG91c2Ugb2YgR29kOyBhbmQgYWxzbyBhbGwgdGhlIGRlZGljYXRlZCB0aGluZ3Mgb2YgdGhlIGhvdXNlIG9mIHRoZSBMT1JEIGRpZCB0aGV5IGJlc3RvdyB1cG9uIEJhYWxpbS4KQW5kIGF0IHRoZSBraW5nJ3MgY29tbWFuZG1lbnQgdGhleSBtYWRlIGEgY2hlc3QsIGFuZCBzZXQgaXQgd2l0aG91dCBhdCB0aGUgZ2F0ZSBvZiB0aGUgaG91c2Ugb2YgdGhlIExPUkQuCkFuZCB0aGV5IG1hZGUgYSBwcm9jbGFtYXRpb24gdGhyb3VnaCBKdWRhaCBhbmQgSmVydXNhbGVtLCB0byBicmluZyBpbiB0byB0aGUgTE9SRCB0aGUgY29sbGVjdGlvbiB0aGF0IE1vc2VzIHRoZSBzZXJ2YW50IG9mIEdvZCBsYWlkIHVwb24gSXNyYWVsIGluIHRoZSB3aWxkZXJuZXNzLgpBbmQgYWxsIHRoZSBwcmluY2VzIGFuZCBhbGwgdGhlIHBlb3BsZSByZWpvaWNlZCwgYW5kIGJyb3VnaHQgaW4sIGFuZCBjYXN0IGludG8gdGhlIGNoZXN0LCB1bnRpbCB0aGV5IGhhZCBtYWRlIGFuIGVuZC4KTm93IGl0IGNhbWUgdG8gcGFzcywgdGhhdCBhdCB3aGF0IHRpbWUgdGhlIGNoZXN0IHdhcyBicm91Z2h0IHVudG8gdGhlIGtpbmcncyBvZmZpY2UgYnkgdGhlIGhhbmQgb2YgdGhlIExldml0ZXMsIGFuZCB3aGVuIHRoZXkgc2F3IHRoYXQgdGhlcmUgd2FzIG11Y2ggbW9uZXksIHRoZSBraW5nJ3Mgc2NyaWJlIGFuZCB0aGUgaGlnaCBwcmllc3QncyBvZmZpY2VyIGNhbWUgYW5kIGVtcHRpZWQgdGhlIGNoZXN0LCBhbmQgdG9vayBpdCwgYW5kIGNhcnJpZWQgaXQgdG8gaGlzIHBsYWNlIGFnYWluLiBUaHVzIHRoZXkgZGlkIGRheSBieSBkYXksIGFuZCBnYXRoZXJlZCBtb25leSBpbiBhYnVuZGFuY2UuCkFuZCB0aGUga2luZyBhbmQgSmVob2lhZGEgZ2F2ZSBpdCB0byBzdWNoIGFzIGRpZCB0aGUgd29yayBvZiB0aGUgc2VydmljZSBvZiB0aGUgaG91c2Ugb2YgdGhlIExPUkQsIGFuZCBoaXJlZCBtYXNvbnMgYW5kIGNhcnBlbnRlcnMgdG8gcmVwYWlyIHRoZSBob3VzZSBvZiB0aGUgTE9SRCwgYW5kIGFsc28gc3VjaCBhcyB3cm91Z2h0IGlyb24gYW5kIGJyYXNzIHRvIG1lbmQgdGhlIGhvdXNlIG9mIHRoZSBMT1JELgpTbyB0aGUgd29ya21lbiB3cm91Z2h0LCBhbmQgdGhlIHdvcmsgd2FzIHBlcmZlY3RlZCBieSB0aGVtLCBhbmQgdGhleSBzZXQgdGhlIGhvdXNlIG9mIEdvZCBpbiBoaXMgc3RhdGUsIGFuZCBzdHJlbmd0aGVuZWQgaXQuCkFuZCB3aGVuIHRoZXkgaGFkIGZpbmlzaGVkIGl0LCB0aGV5IGJyb3VnaHQgdGhlIHJlc3Qgb2YgdGhlIG1vbmV5IGJlZm9yZSB0aGUga2luZyBhbmQgSmVob2lhZGEsIHdoZXJlb2Ygd2VyZSBtYWRlIHZlc3NlbHMgZm9yIHRoZSBob3VzZSBvZiB0aGUgTE9SRCwgZXZlbiB2ZXNzZWxzIHRvIG1pbmlzdGVyLCBhbmQgdG8gb2ZmZXIgd2l0aGFsLCBhbmQgc3Bvb25zLCBhbmQgdmVzc2VscyBvZiBnb2xkIGFuZCBzaWx2ZXIuIEFuZCB0aGV5IG9mZmVyZWQgYnVybnQgb2ZmZXJpbmdzIGluIHRoZSBob3VzZSBvZiB0aGUgTE9SRCBjb250aW51YWxseSBhbGwgdGhlIGRheXMgb2YgSmVob2lhZGEuCkJ1dCBKZWhvaWFkYSB3YXhlZCBvbGQsIGFuZCB3YXMgZnVsbCBvZiBkYXlzIHdoZW4gaGUgZGllZDsgYW4gaHVuZHJlZCBhbmQgdGhpcnR5IHllYXJzIG9sZCB3YXMgaGUgd2hlbiBoZSBkaWVkLgpBbmQgdGhleSBidXJpZWQgaGltIGluIHRoZSBjaXR5IG9mIERhdmlkIGFtb25nIHRoZSBraW5ncywgYmVjYXVzZSBoZSBoYWQgZG9uZSBnb29kIGluIElzcmFlbCwgYm90aCB0b3dhcmQgR29kLCBhbmQgdG93YXJkIGhpcyBob3VzZS4KTm93IGFmdGVyIHRoZSBkZWF0aCBvZiBKZWhvaWFkYSBjYW1lIHRoZSBwcmluY2VzIG9mIEp1ZGFoLCBhbmQgbWFkZSBvYmVpc2FuY2UgdG8gdGhlIGtpbmcuIFRoZW4gdGhlIGtpbmcgaGVhcmtlbmVkIHVudG8gdGhlbS4KQW5kIHRoZXkgbGVmdCB0aGUgaG91c2Ugb2YgdGhlIExPUkQgR29kIG9mIHRoZWlyIGZhdGhlcnMsIGFuZCBzZXJ2ZWQgZ3JvdmVzIGFuZCBpZG9sczogYW5kIHdyYXRoIGNhbWUgdXBvbiBKdWRhaCBhbmQgSmVydXNhbGVtIGZvciB0aGlzIHRoZWlyIHRyZXNwYXNzLgpZZXQgaGUgc2VudCBwcm9waGV0cyB0byB0aGVtLCB0byBicmluZyB0aGVtIGFnYWluIHVudG8gdGhlIExPUkQ7IGFuZCB0aGV5IHRlc3RpZmllZCBhZ2FpbnN0IHRoZW06IGJ1dCB0aGV5IHdvdWxkIG5vdCBnaXZlIGVhci4KQW5kIHRoZSBTcGlyaXQgb2YgR29kIGNhbWUgdXBvbiBaZWNoYXJpYWggdGhlIHNvbiBvZiBKZWhvaWFkYSB0aGUgcHJpZXN0LCB3aGljaCBzdG9vZCBhYm92ZSB0aGUgcGVvcGxlLCBhbmQgc2FpZCB1bnRvIHRoZW0sIFRodXMgc2FpdGggR29kLCBXaHkgdHJhbnNncmVzcyB5ZSB0aGUgY29tbWFuZG1lbnRzIG9mIHRoZSBMT1JELCB0aGF0IHllIGNhbm5vdCBwcm9zcGVyPyBiZWNhdXNlIHllIGhhdmUgZm9yc2FrZW4gdGhlIExPUkQsIGhlIGhhdGggYWxzbyBmb3JzYWtlbiB5b3UuCkFuZCB0aGV5IGNvbnNwaXJlZCBhZ2FpbnN0IGhpbSwgYW5kIHN0b25lZCBoaW0gd2l0aCBzdG9uZXMgYXQgdGhlIGNvbW1hbmRtZW50IG9mIHRoZSBraW5nIGluIHRoZSBjb3VydCBvZiB0aGUgaG91c2Ugb2YgdGhlIExPUkQuClRodXMgSm9hc2ggdGhlIGtpbmcgcmVtZW1iZXJlZCBub3QgdGhlIGtpbmRuZXNzIHdoaWNoIEplaG9pYWRhIGhpcyBmYXRoZXIgaGFkIGRvbmUgdG8gaGltLCBidXQgc2xldyBoaXMgc29uLiBBbmQgd2hlbiBoZSBkaWVkLCBoZSBzYWlkLCBUaGUgTE9SRCBsb29rIHVwb24gaXQsIGFuZCByZXF1aXJlIGl0LgpBbmQgaXQgY2FtZSB0byBwYXNzIGF0IHRoZSBlbmQgb2YgdGhlIHllYXIsIHRoYXQgdGhlIGhvc3Qgb2YgU3lyaWEgY2FtZSB1cCBhZ2FpbnN0IGhpbTogYW5kIHRoZXkgY2FtZSB0byBKdWRhaCBhbmQgSmVydXNhbGVtLCBhbmQgZGVzdHJveWVkIGFsbCB0aGUgcHJpbmNlcyBvZiB0aGUgcGVvcGxlIGZyb20gYW1vbmcgdGhlIHBlb3BsZSwgYW5kIHNlbnQgYWxsIHRoZSBzcG9pbCBvZiB0aGVtIHVudG8gdGhlIGtpbmcgb2YgRGFtYXNjdXMuCkZvciB0aGUgYXJteSBvZiB0aGUgU3lyaWFucyBjYW1lIHdpdGggYSBzbWFsbCBjb21wYW55IG9mIG1lbiwgYW5kIHRoZSBMT1JEIGRlbGl2ZXJlZCBhIHZlcnkgZ3JlYXQgaG9zdCBpbnRvIHRoZWlyIGhhbmQsIGJlY2F1c2UgdGhleSBoYWQgZm9yc2FrZW4gdGhlIExPUkQgR29kIG9mIHRoZWlyIGZhdGhlcnMuIFNvIHRoZXkgZXhlY3V0ZWQganVkZ21lbnQgYWdhaW5zdCBKb2FzaC4KQW5kIHdoZW4gdGhleSB3ZXJlIGRlcGFydGVkIGZyb20gaGltLCAoZm9yIHRoZXkgbGVmdCBoaW0gaW4gZ3JlYXQgZGlzZWFzZXMsKSBoaXMgb3duIHNlcnZhbnRzIGNvbnNwaXJlZCBhZ2FpbnN0IGhpbSBmb3IgdGhlIGJsb29kIG9mIHRoZSBzb25zIG9mIEplaG9pYWRhIHRoZSBwcmllc3QsIGFuZCBzbGV3IGhpbSBvbiBoaXMgYmVkLCBhbmQgaGUgZGllZDogYW5kIHRoZXkgYnVyaWVkIGhpbSBpbiB0aGUgY2l0eSBvZiBEYXZpZCwgYnV0IHRoZXkgYnVyaWVkIGhpbSBub3QgaW4gdGhlIHNlcHVsY2hyZXMgb2YgdGhlIGtpbmdzLgpBbmQgdGhlc2UgYXJlIHRoZXkgdGhhdCBjb25zcGlyZWQgYWdhaW5zdCBoaW07IFphYmFkIHRoZSBzb24gb2YgU2hpbWVhdGggYW4gQW1tb25pdGVzcywgYW5kIEplaG96YWJhZCB0aGUgc29uIG9mIFNoaW1yaXRoIGEgTW9hYml0ZXNzLgpOb3cgY29uY2VybmluZyBoaXMgc29ucywgYW5kIHRoZSBncmVhdG5lc3Mgb2YgdGhlIGJ1cmRlbnMgbGFpZCB1cG9uIGhpbSwgYW5kIHRoZSByZXBhaXJpbmcgb2YgdGhlIGhvdXNlIG9mIEdvZCwgYmVob2xkLCB0aGV5IGFyZSB3cml0dGVuIGluIHRoZSBzdG9yeSBvZiB0aGUgYm9vayBvZiB0aGUga2luZ3MuIEFuZCBBbWF6aWFoIGhpcyBzb24gcmVpZ25lZCBpbiBoaXMgc3RlYWQuCkFtYXppYWggd2FzIHR3ZW50eSBhbmQgZml2ZSB5ZWFycyBvbGQgd2hlbiBoZSBiZWdhbiB0byByZWlnbiwgYW5kIGhlIHJlaWduZWQgdHdlbnR5IGFuZCBuaW5lIHllYXJzIGluIEplcnVzYWxlbS4gQW5kIGhpcyBtb3RoZXIncyBuYW1lIHdhcyBKZWhvYWRkYW4gb2YgSmVydXNhbGVtLgpBbmQgaGUgZGlkIHRoYXQgd2hpY2ggd2FzIHJpZ2h0IGluIHRoZSBzaWdodCBvZiB0aGUgTE9SRCwgYnV0IG5vdCB3aXRoIGEgcGVyZmVjdCBoZWFydC4KTm93IGl0IGNhbWUgdG8gcGFzcywgd2hlbiB0aGUga2luZ2RvbSB3YXMgZXN0YWJsaXNoZWQgdG8gaGltLCB0aGF0IGhlIHNsZXcgaGlzIHNlcnZhbnRzIHRoYXQgaGFkIGtpbGxlZCB0aGUga2luZyBoaXMgZmF0aGVyLgpCdXQgaGUgc2xldyBub3QgdGhlaXIgY2hpbGRyZW4sIGJ1dCBkaWQgYXMgaXQgaXMgd3JpdHRlbiBpbiB0aGUgbGF3IGluIHRoZSBib29rIG9mIE1vc2VzLCB3aGVyZSB0aGUgTE9SRCBjb21tYW5kZWQsIHNheWluZywgVGhlIGZhdGhlcnMgc2hhbGwgbm90IGRpZSBmb3IgdGhlIGNoaWxkcmVuLCBuZWl0aGVyIHNoYWxsIHRoZSBjaGlsZHJlbiBkaWUgZm9yIHRoZSBmYXRoZXJzLCBidXQgZXZlcnkgbWFuIHNoYWxsIGRpZSBmb3IgaGlzIG93biBzaW4uCk1vcmVvdmVyIEFtYXppYWggZ2F0aGVyZWQgSnVkYWggdG9nZXRoZXIsIGFuZCBtYWRlIHRoZW0gY2FwdGFpbnMgb3ZlciB0aG91c2FuZHMsIGFuZCBjYXB0YWlucyBvdmVyIGh1bmRyZWRzLCBhY2NvcmRpbmcgdG8gdGhlIGhvdXNlcyBvZiB0aGVpciBmYXRoZXJzLCB0aHJvdWdob3V0IGFsbCBKdWRhaCBhbmQgQmVuamFtaW46IGFuZCBoZSBudW1iZXJlZCB0aGVtIGZyb20gdHdlbnR5IHllYXJzIG9sZCBhbmQgYWJvdmUsIGFuZCBmb3VuZCB0aGVtIHRocmVlIGh1bmRyZWQgdGhvdXNhbmQgY2hvaWNlIG1lbiwgYWJsZSB0byBnbyBmb3J0aCB0byB3YXIsIHRoYXQgY291bGQgaGFuZGxlIHNwZWFyIGFuZCBzaGllbGQuCkhlIGhpcmVkIGFsc28gYW4gaHVuZHJlZCB0aG91c2FuZCBtaWdodHkgbWVuIG9mIHZhbG91ciBvdXQgb2YgSXNyYWVsIGZvciBhbiBodW5kcmVkIHRhbGVudHMgb2Ygc2lsdmVyLgpCdXQgdGhlcmUgY2FtZSBhIG1hbiBvZiBHb2QgdG8gaGltLCBzYXlpbmcsIE8ga2luZywgbGV0IG5vdCB0aGUgYXJteSBvZiBJc3JhZWwgZ28gd2l0aCB0aGVlOyBmb3IgdGhlIExPUkQgaXMgbm90IHdpdGggSXNyYWVsLCB0byB3aXQsIHdpdGggYWxsIHRoZSBjaGlsZHJlbiBvZiBFcGhyYWltLgpCdXQgaWYgdGhvdSB3aWx0IGdvLCBkbyBpdDsgYmUgc3Ryb25nIGZvciB0aGUgYmF0dGxlOiBHb2Qgc2hhbGwgbWFrZSB0aGVlIGZhbGwgYmVmb3JlIHRoZSBlbmVteTogZm9yIEdvZCBoYXRoIHBvd2VyIHRvIGhlbHAsIGFuZCB0byBjYXN0IGRvd24uCkFuZCBBbWF6aWFoIHNhaWQgdG8gdGhlIG1hbiBvZiBHb2QsIEJ1dCB3aGF0IHNoYWxsIHdlIGRvIGZvciB0aGUgaHVuZHJlZCB0YWxlbnRzIHdoaWNoIEkgaGF2ZSBnaXZlbiB0byB0aGUgYXJteSBvZiBJc3JhZWw/IEFuZCB0aGUgbWFuIG9mIEdvZCBhbnN3ZXJlZCwgVGhlIExPUkQgaXMgYWJsZSB0byBnaXZlIHRoZWUgbXVjaCBtb3JlIHRoYW4gdGhpcy4KVGhlbiBBbWF6aWFoIHNlcGFyYXRlZCB0aGVtLCB0byB3aXQsIHRoZSBhcm15IHRoYXQgd2FzIGNvbWUgdG8gaGltIG91dCBvZiBFcGhyYWltLCB0byBnbyBob21lIGFnYWluOiB3aGVyZWZvcmUgdGhlaXIgYW5nZXIgd2FzIGdyZWF0bHkga2luZGxlZCBhZ2FpbnN0IEp1ZGFoLCBhbmQgdGhleSByZXR1cm5lZCBob21lIGluIGdyZWF0IGFuZ2VyLgpBbmQgQW1hemlhaCBzdHJlbmd0aGVuZWQgaGltc2VsZiwgYW5kIGxlZCBmb3J0aCBoaXMgcGVvcGxlLCBhbmQgd2VudCB0byB0aGUgdmFsbGV5IG9mIHNhbHQsIGFuZCBzbW90ZSBvZiB0aGUgY2hpbGRyZW4gb2YgU2VpciB0ZW4gdGhvdXNhbmQuCkFuZCBvdGhlciB0ZW4gdGhvdXNhbmQgbGVmdCBhbGl2ZSBkaWQgdGhlIGNoaWxkcmVuIG9mIEp1ZGFoIGNhcnJ5IGF3YXkgY2FwdGl2ZSwgYW5kIGJyb3VnaHQgdGhlbSB1bnRvIHRoZSB0b3Agb2YgdGhlIHJvY2ssIGFuZCBjYXN0IHRoZW0gZG93biBmcm9tIHRoZSB0b3Agb2YgdGhlIHJvY2ssIHRoYXQgdGhleSBhbGwgd2VyZSBicm9rZW4gaW4gcGllY2VzLgpCdXQgdGhlIHNvbGRpZXJzIG9mIHRoZSBhcm15IHdoaWNoIEFtYXppYWggc2VudCBiYWNrLCB0aGF0IHRoZXkgc2hvdWxkIG5vdCBnbyB3aXRoIGhpbSB0byBiYXR0bGUsIGZlbGwgdXBvbiB0aGUgY2l0aWVzIG9mIEp1ZGFoLCBmcm9tIFNhbWFyaWEgZXZlbiB1bnRvIEJldGhob3JvbiwgYW5kIHNtb3RlIHRocmVlIHRob3VzYW5kIG9mIHRoZW0sIGFuZCB0b29rIG11Y2ggc3BvaWwuCk5vdyBpdCBjYW1lIHRvIHBhc3MsIGFmdGVyIHRoYXQgQW1hemlhaCB3YXMgY29tZSBmcm9tIHRoZSBzbGF1Z2h0ZXIgb2YgdGhlIEVkb21pdGVzLCB0aGF0IGhlIGJyb3VnaHQgdGhlIGdvZHMgb2YgdGhlIGNoaWxkcmVuIG9mIFNlaXIsIGFuZCBzZXQgdGhlbSB1cCB0byBiZSBoaXMgZ29kcywgYW5kIGJvd2VkIGRvd24gaGltc2VsZiBiZWZvcmUgdGhlbSwgYW5kIGJ1cm5lZCBpbmNlbnNlIHVudG8gdGhlbS4KV2hlcmVmb3JlIHRoZSBhbmdlciBvZiB0aGUgTE9SRCB3YXMga2luZGxlZCBhZ2FpbnN0IEFtYXppYWgsIGFuZCBoZSBzZW50IHVudG8gaGltIGEgcHJvcGhldCwgd2hpY2ggc2FpZCB1bnRvIGhpbSwgV2h5IGhhc3QgdGhvdSBzb3VnaHQgYWZ0ZXIgdGhlIGdvZHMgb2YgdGhlIHBlb3BsZSwgd2hpY2ggY291bGQgbm90IGRlbGl2ZXIgdGhlaXIgb3duIHBlb3BsZSBvdXQgb2YgdGhpbmUgaGFuZD8KQW5kIGl0IGNhbWUgdG8gcGFzcywgYXMgaGUgdGFsa2VkIHdpdGggaGltLCB0aGF0IHRoZSBraW5nIHNhaWQgdW50byBoaW0sIEFydCB0aG91IG1hZGUgb2YgdGhlIGtpbmcncyBjb3Vuc2VsPyBmb3JiZWFyOyB3aHkgc2hvdWxkZXN0IHRob3UgYmUgc21pdHRlbj8gVGhlbiB0aGUgcHJvcGhldCBmb3JiYXJlLCBhbmQgc2FpZCwgSSBrbm93IHRoYXQgR29kIGhhdGggZGV0ZXJtaW5lZCB0byBkZXN0cm95IHRoZWUsIGJlY2F1c2UgdGhvdSBoYXN0IGRvbmUgdGhpcywgYW5kIGhhc3Qgbm90IGhlYXJrZW5lZCB1bnRvIG15IGNvdW5zZWwuClRoZW4gQW1hemlhaCBraW5nIG9mIEp1ZGFoIHRvb2sgYWR2aWNlLCBhbmQgc2VudCB0byBKb2FzaCwgdGhlIHNvbiBvZiBKZWhvYWhheiwgdGhlIHNvbiBvZiBKZWh1LCBraW5nIG9mIElzcmFlbCwgc2F5aW5nLCBDb21lLCBsZXQgdXMgc2VlIG9uZSBhbm90aGVyIGluIHRoZSBmYWNlLgpBbmQgSm9hc2gga2luZyBvZiBJc3JhZWwgc2VudCB0byBBbWF6aWFoIGtpbmcgb2YgSnVkYWgsIHNheWluZywgVGhlIHRoaXN0bGUgdGhhdCB3YXMgaW4gTGViYW5vbiBzZW50IHRvIHRoZSBjZWRhciB0aGF0IHdhcyBpbiBMZWJhbm9uLCBzYXlpbmcsIEdpdmUgdGh5IGRhdWdodGVyIHRvIG15IHNvbiB0byB3aWZlOiBhbmQgdGhlcmUgcGFzc2VkIGJ5IGEgd2lsZCBiZWFzdCB0aGF0IHdhcyBpbiBMZWJhbm9uLCBhbmQgdHJvZGUgZG93biB0aGUgdGhpc3RsZS4KVGhvdSBzYXllc3QsIExvLCB0aG91IGhhc3Qgc21pdHRlbiB0aGUgRWRvbWl0ZXM7IGFuZCB0aGluZSBoZWFydCBsaWZ0ZXRoIHRoZWUgdXAgdG8gYm9hc3Q6IGFiaWRlIG5vdyBhdCBob21lOyB3aHkgc2hvdWxkZXN0IHRob3UgbWVkZGxlIHRvIHRoaW5lIGh1cnQsIHRoYXQgdGhvdSBzaG91bGRlc3QgZmFsbCwgZXZlbiB0aG91LCBhbmQgSnVkYWggd2l0aCB0aGVlPwpCdXQgQW1hemlhaCB3b3VsZCBub3QgaGVhcjsgZm9yIGl0IGNhbWUgb2YgR29kLCB0aGF0IGhlIG1pZ2h0IGRlbGl2ZXIgdGhlbSBpbnRvIHRoZSBoYW5kIG9mIHRoZWlyIGVuZW1pZXMsIGJlY2F1c2UgdGhleSBzb3VnaHQgYWZ0ZXIgdGhlIGdvZHMgb2YgRWRvbS4KU28gSm9hc2ggdGhlIGtpbmcgb2YgSXNyYWVsIHdlbnQgdXA7IGFuZCB0aGV5IHNhdyBvbmUgYW5vdGhlciBpbiB0aGUgZmFjZSwgYm90aCBoZSBhbmQgQW1hemlhaCBraW5nIG9mIEp1ZGFoLCBhdCBCZXRoc2hlbWVzaCwgd2hpY2ggYmVsb25nZXRoIHRvIEp1ZGFoLgpBbmQgSnVkYWggd2FzIHB1dCB0byB0aGUgd29yc2UgYmVmb3JlIElzcmFlbCwgYW5kIHRoZXkgZmxlZCBldmVyeSBtYW4gdG8gaGlzIHRlbnQuCkFuZCBKb2FzaCB0aGUga2luZyBvZiBJc3JhZWwgdG9vayBBbWF6aWFoIGtpbmcgb2YgSnVkYWgsIHRoZSBzb24gb2YgSm9hc2gsIHRoZSBzb24gb2YgSmVob2FoYXosIGF0IEJldGhzaGVtZXNoLCBhbmQgYnJvdWdodCBoaW0gdG8gSmVydXNhbGVtLCBhbmQgYnJha2UgZG93biB0aGUgd2FsbCBvZiBKZXJ1c2FsZW0gZnJvbSB0aGUgZ2F0ZSBvZiBFcGhyYWltIHRvIHRoZSBjb3JuZXIgZ2F0ZSwgZm91ciBodW5kcmVkIGN1Yml0cy4KQW5kIGhlIHRvb2sgYWxsIHRoZSBnb2xkIGFuZCB0aGUgc2lsdmVyLCBhbmQgYWxsIHRoZSB2ZXNzZWxzIHRoYXQgd2VyZSBmb3VuZCBpbiB0aGUgaG91c2Ugb2YgR29kIHdpdGggT2JlZGVkb20sIGFuZCB0aGUgdHJlYXN1cmVzIG9mIHRoZSBraW5nJ3MgaG91c2UsIHRoZSBob3N0YWdlcyBhbHNvLCBhbmQgcmV0dXJuZWQgdG8gU2FtYXJpYS4KQW5kIEFtYXppYWggdGhlIHNvbiBvZiBKb2FzaCBraW5nIG9mIEp1ZGFoIGxpdmVkIGFmdGVyIHRoZSBkZWF0aCBvZiBKb2FzaCBzb24gb2YgSmVob2FoYXoga2luZyBvZiBJc3JhZWwgZmlmdGVlbiB5ZWFycy4KTm93IHRoZSByZXN0IG9mIHRoZSBhY3RzIG9mIEFtYXppYWgsIGZpcnN0IGFuZCBsYXN0LCBiZWhvbGQsIGFyZSB0aGV5IG5vdCB3cml0dGVuIGluIHRoZSBib29rIG9mIHRoZSBraW5ncyBvZiBKdWRhaCBhbmQgSXNyYWVsPwpOb3cgYWZ0ZXIgdGhlIHRpbWUgdGhhdCBBbWF6aWFoIGRpZCB0dXJuIGF3YXkgZnJvbSBmb2xsb3dpbmcgdGhlIExPUkQgdGhleSBtYWRlIGEgY29uc3BpcmFjeSBhZ2FpbnN0IGhpbSBpbiBKZXJ1c2FsZW07IGFuZCBoZSBmbGVkIHRvIExhY2hpc2g6IGJ1dCB0aGV5IHNlbnQgdG8gTGFjaGlzaCBhZnRlciBoaW0sIGFuZCBzbGV3IGhpbSB0aGVyZS4KQW5kIHRoZXkgYnJvdWdodCBoaW0gdXBvbiBob3JzZXMsIGFuZCBidXJpZWQgaGltIHdpdGggaGlzIGZhdGhlcnMgaW4gdGhlIGNpdHkgb2YgSnVkYWguClRoZW4gYWxsIHRoZSBwZW9wbGUgb2YgSnVkYWggdG9vayBVenppYWgsIHdobyB3YXMgc2l4dGVlbiB5ZWFycyBvbGQsIGFuZCBtYWRlIGhpbSBraW5nIGluIHRoZSByb29tIG9mIGhpcyBmYXRoZXIgQW1hemlhaC4KSGUgYnVpbHQgRWxvdGgsIGFuZCByZXN0b3JlZCBpdCB0byBKdWRhaCwgYWZ0ZXIgdGhhdCB0aGUga2luZyBzbGVwdCB3aXRoIGhpcyBmYXRoZXJzLgpTaXh0ZWVuIHllYXJzIG9sZCB3YXMgVXp6aWFoIHdoZW4gaGUgYmVnYW4gdG8gcmVpZ24sIGFuZCBoZSByZWlnbmVkIGZpZnR5IGFuZCB0d28geWVhcnMgaW4gSmVydXNhbGVtLiBIaXMgbW90aGVyJ3MgbmFtZSBhbHNvIHdhcyBKZWNvbGlhaCBvZiBKZXJ1c2FsZW0uCkFuZCBoZSBkaWQgdGhhdCB3aGljaCB3YXMgcmlnaHQgaW4gdGhlIHNpZ2h0IG9mIHRoZSBMT1JELCBhY2NvcmRpbmcgdG8gYWxsIHRoYXQgaGlzIGZhdGhlciBBbWF6aWFoIGRpZC4KQW5kIGhlIHNvdWdodCBHb2QgaW4gdGhlIGRheXMgb2YgWmVjaGFyaWFoLCB3aG8gaGFkIHVuZGVyc3RhbmRpbmcgaW4gdGhlIHZpc2lvbnMgb2YgR29kOiBhbmQgYXMgbG9uZyBhcyBoZSBzb3VnaHQgdGhlIExPUkQsIEdvZCBtYWRlIGhpbSB0byBwcm9zcGVyLgpBbmQgaGUgd2VudCBmb3J0aCBhbmQgd2FycmVkIGFnYWluc3QgdGhlIFBoaWxpc3RpbmVzLCBhbmQgYnJha2UgZG93biB0aGUgd2FsbCBvZiBHYXRoLCBhbmQgdGhlIHdhbGwgb2YgSmFibmVoLCBhbmQgdGhlIHdhbGwgb2YgQXNoZG9kLCBhbmQgYnVpbHQgY2l0aWVzIGFib3V0IEFzaGRvZCwgYW5kIGFtb25nIHRoZSBQaGlsaXN0aW5lcy4KQW5kIEdvZCBoZWxwZWQgaGltIGFnYWluc3QgdGhlIFBoaWxpc3RpbmVzLCBhbmQgYWdhaW5zdCB0aGUgQXJhYmlhbnMgdGhhdCBkd2VsdCBpbiBHdXJiYWFsLCBhbmQgdGhlIE1laHVuaW1zLgpBbmQgdGhlIEFtbW9uaXRlcyBnYXZlIGdpZnRzIHRvIFV6emlhaDogYW5kIGhpcyBuYW1lIHNwcmVhZCBhYnJvYWQgZXZlbiB0byB0aGUgZW50ZXJpbmcgaW4gb2YgRWd5cHQ7IGZvciBoZSBzdHJlbmd0aGVuZWQgaGltc2VsZiBleGNlZWRpbmdseS4KTW9yZW92ZXIgVXp6aWFoIGJ1aWx0IHRvd2VycyBpbiBKZXJ1c2FsZW0gYXQgdGhlIGNvcm5lciBnYXRlLCBhbmQgYXQgdGhlIHZhbGxleSBnYXRlLCBhbmQgYXQgdGhlIHR1cm5pbmcgb2YgdGhlIHdhbGwsIGFuZCBmb3J0aWZpZWQgdGhlbS4KQWxzbyBoZSBidWlsdCB0b3dlcnMgaW4gdGhlIGRlc2VydCwgYW5kIGRpZ2dlZCBtYW55IHdlbGxzOiBmb3IgaGUgaGFkIG11Y2ggY2F0dGxlLCBib3RoIGluIHRoZSBsb3cgY291bnRyeSwgYW5kIGluIHRoZSBwbGFpbnM6IGh1c2JhbmRtZW4gYWxzbywgYW5kIHZpbmUgZHJlc3NlcnMgaW4gdGhlIG1vdW50YWlucywgYW5kIGluIENhcm1lbDogZm9yIGhlIGxvdmVkIGh1c2JhbmRyeS4KTW9yZW92ZXIgVXp6aWFoIGhhZCBhbiBob3N0IG9mIGZpZ2h0aW5nIG1lbiwgdGhhdCB3ZW50IG91dCB0byB3YXIgYnkgYmFuZHMsIGFjY29yZGluZyB0byB0aGUgbnVtYmVyIG9mIHRoZWlyIGFjY291bnQgYnkgdGhlIGhhbmQgb2YgSmVpZWwgdGhlIHNjcmliZSBhbmQgTWFhc2VpYWggdGhlIHJ1bGVyLCB1bmRlciB0aGUgaGFuZCBvZiBIYW5hbmlhaCwgb25lIG9mIHRoZSBraW5nJ3MgY2FwdGFpbnMuClRoZSB3aG9sZSBudW1iZXIgb2YgdGhlIGNoaWVmIG9mIHRoZSBmYXRoZXJzIG9mIHRoZSBtaWdodHkgbWVuIG9mIHZhbG91ciB3ZXJlIHR3byB0aG91c2FuZCBhbmQgc2l4IGh1bmRyZWQuCkFuZCB1bmRlciB0aGVpciBoYW5kIHdhcyBhbiBhcm15LCB0aHJlZSBodW5kcmVkIHRob3VzYW5kIGFuZCBzZXZlbiB0aG91c2FuZCBhbmQgZml2ZSBodW5kcmVkLCB0aGF0IG1hZGUgd2FyIHdpdGggbWlnaHR5IHBvd2VyLCB0byBoZWxwIHRoZSBraW5nIGFnYWluc3QgdGhlIGVuZW15LgpBbmQgVXp6aWFoIHByZXBhcmVkIGZvciB0aGVtIHRocm91Z2hvdXQgYWxsIHRoZSBob3N0IHNoaWVsZHMsIGFuZCBzcGVhcnMsIGFuZCBoZWxtZXRzLCBhbmQgaGFiZXJnZW9ucywgYW5kIGJvd3MsIGFuZCBzbGluZ3MgdG8gY2FzdCBzdG9uZXMuCkFuZCBoZSBtYWRlIGluIEplcnVzYWxlbSBlbmdpbmVzLCBpbnZlbnRlZCBieSBjdW5uaW5nIG1lbiwgdG8gYmUgb24gdGhlIHRvd2VycyBhbmQgdXBvbiB0aGUgYnVsd2Fya3MsIHRvIHNob290IGFycm93cyBhbmQgZ3JlYXQgc3RvbmVzIHdpdGhhbC4gQW5kIGhpcyBuYW1lIHNwcmVhZCBmYXIgYWJyb2FkOyBmb3IgaGUgd2FzIG1hcnZlbGxvdXNseSBoZWxwZWQsIHRpbGwgaGUgd2FzIHN0cm9uZy4KQnV0IHdoZW4gaGUgd2FzIHN0cm9uZywgaGlzIGhlYXJ0IHdhcyBsaWZ0ZWQgdXAgdG8gaGlzIGRlc3RydWN0aW9uOiBmb3IgaGUgdHJhbnNncmVzc2VkIGFnYWluc3QgdGhlIExPUkQgaGlzIEdvZCwgYW5kIHdlbnQgaW50byB0aGUgdGVtcGxlIG9mIHRoZSBMT1JEIHRvIGJ1cm4gaW5jZW5zZSB1cG9uIHRoZSBhbHRhciBvZiBpbmNlbnNlLgpBbmQgQXphcmlhaCB0aGUgcHJpZXN0IHdlbnQgaW4gYWZ0ZXIgaGltLCBhbmQgd2l0aCBoaW0gZm91cnNjb3JlIHByaWVzdHMgb2YgdGhlIExPUkQsIHRoYXQgd2VyZSB2YWxpYW50IG1lbjoKQW5kIHRoZXkgd2l0aHN0b29kIFV6emlhaCB0aGUga2luZywgYW5kIHNhaWQgdW50byBoaW0sIEl0IGFwcGVydGFpbmV0aCBub3QgdW50byB0aGVlLCBVenppYWgsIHRvIGJ1cm4gaW5jZW5zZSB1bnRvIHRoZSBMT1JELCBidXQgdG8gdGhlIHByaWVzdHMgdGhlIHNvbnMgb2YgQWFyb24sIHRoYXQgYXJlIGNvbnNlY3JhdGVkIHRvIGJ1cm4gaW5jZW5zZTogZ28gb3V0IG9mIHRoZSBzYW5jdHVhcnk7IGZvciB0aG91IGhhc3QgdHJlc3Bhc3NlZDsgbmVpdGhlciBzaGFsbCBpdCBiZSBmb3IgdGhpbmUgaG9ub3VyIGZyb20gdGhlIExPUkQgR29kLgpUaGVuIFV6emlhaCB3YXMgd3JvdGgsIGFuZCBoYWQgYSBjZW5zZXIgaW4gaGlzIGhhbmQgdG8gYnVybiBpbmNlbnNlOiBhbmQgd2hpbGUgaGUgd2FzIHdyb3RoIHdpdGggdGhlIHByaWVzdHMsIHRoZSBsZXByb3N5IGV2ZW4gcm9zZSB1cCBpbiBoaXMgZm9yZWhlYWQgYmVmb3JlIHRoZSBwcmllc3RzIGluIHRoZSBob3VzZSBvZiB0aGUgTE9SRCwgZnJvbSBiZXNpZGUgdGhlIGluY2Vuc2UgYWx0YXIuCkFuZCBBemFyaWFoIHRoZSBjaGllZiBwcmllc3QsIGFuZCBhbGwgdGhlIHByaWVzdHMsIGxvb2tlZCB1cG9uIGhpbSwgYW5kLCBiZWhvbGQsIGhlIHdhcyBsZXByb3VzIGluIGhpcyBmb3JlaGVhZCwgYW5kIHRoZXkgdGhydXN0IGhpbSBvdXQgZnJvbSB0aGVuY2U7IHllYSwgaGltc2VsZiBoYXN0ZWQgYWxzbyB0byBnbyBvdXQsIGJlY2F1c2UgdGhlIExPUkQgaGFkIHNtaXR0ZW4gaGltLgpBbmQgVXp6aWFoIHRoZSBraW5nIHdhcyBhIGxlcGVyIHVudG8gdGhlIGRheSBvZiBoaXMgZGVhdGgsIGFuZCBkd2VsdCBpbiBhIHNldmVyYWwgaG91c2UsIGJlaW5nIGEgbGVwZXI7IGZvciBoZSB3YXMgY3V0IG9mZiBmcm9tIHRoZSBob3VzZSBvZiB0aGUgTE9SRDogYW5kIEpvdGhhbSBoaXMgc29uIHdhcyBvdmVyIHRoZSBraW5nJ3MgaG91c2UsIGp1ZGdpbmcgdGhlIHBlb3BsZSBvZiB0aGUgbGFuZC4KTm93IHRoZSByZXN0IG9mIHRoZSBhY3RzIG9mIFV6emlhaCwgZmlyc3QgYW5kIGxhc3QsIGRpZCBJc2FpYWggdGhlIHByb3BoZXQsIHRoZSBzb24gb2YgQW1veiwgd3JpdGUuClNvIFV6emlhaCBzbGVwdCB3aXRoIGhpcyBmYXRoZXJzLCBhbmQgdGhleSBidXJpZWQgaGltIHdpdGggaGlzIGZhdGhlcnMgaW4gdGhlIGZpZWxkIG9mIHRoZSBidXJpYWwgd2hpY2ggYmVsb25nZWQgdG8gdGhlIGtpbmdzOyBmb3IgdGhleSBzYWlkLCBIZSBpcyBhIGxlcGVyOiBhbmQgSm90aGFtIGhpcyBzb24gcmVpZ25lZCBpbiBoaXMgc3RlYWQuCkpvdGhhbSB3YXMgdHdlbnR5IGFuZCBmaXZlIHllYXJzIG9sZCB3aGVuIGhlIGJlZ2FuIHRvIHJlaWduLCBhbmQgaGUgcmVpZ25lZCBzaXh0ZWVuIHllYXJzIGluIEplcnVzYWxlbS4gSGlzIG1vdGhlcidzIG5hbWUgYWxzbyB3YXMgSmVydXNoYWgsIHRoZSBkYXVnaHRlciBvZiBaYWRvay4KQW5kIGhlIGRpZCB0aGF0IHdoaWNoIHdhcyByaWdodCBpbiB0aGUgc2lnaHQgb2YgdGhlIExPUkQsIGFjY29yZGluZyB0byBhbGwgdGhhdCBoaXMgZmF0aGVyIFV6emlhaCBkaWQ6IGhvd2JlaXQgaGUgZW50ZXJlZCBub3QgaW50byB0aGUgdGVtcGxlIG9mIHRoZSBMT1JELiBBbmQgdGhlIHBlb3BsZSBkaWQgeWV0IGNvcnJ1cHRseS4KSGUgYnVpbHQgdGhlIGhpZ2ggZ2F0ZSBvZiB0aGUgaG91c2Ugb2YgdGhlIExPUkQsIGFuZCBvbiB0aGUgd2FsbCBvZiBPcGhlbCBoZSBidWlsdCBtdWNoLgpNb3Jlb3ZlciBoZSBidWlsdCBjaXRpZXMgaW4gdGhlIG1vdW50YWlucyBvZiBKdWRhaCwgYW5kIGluIHRoZSBmb3Jlc3RzIGhlIGJ1aWx0IGNhc3RsZXMgYW5kIHRvd2Vycy4KSGUgZm91Z2h0IGFsc28gd2l0aCB0aGUga2luZyBvZiB0aGUgQW1tb25pdGVzLCBhbmQgcHJldmFpbGVkIGFnYWluc3QgdGhlbS4gQW5kIHRoZSBjaGlsZHJlbiBvZiBBbW1vbiBnYXZlIGhpbSB0aGUgc2FtZSB5ZWFyIGFuIGh1bmRyZWQgdGFsZW50cyBvZiBzaWx2ZXIsIGFuZCB0ZW4gdGhvdXNhbmQgbWVhc3VyZXMgb2Ygd2hlYXQsIGFuZCB0ZW4gdGhvdXNhbmQgb2YgYmFybGV5LiBTbyBtdWNoIGRpZCB0aGUgY2hpbGRyZW4gb2YgQW1tb24gcGF5IHVudG8gaGltLCBib3RoIHRoZSBzZWNvbmQgeWVhciwgYW5kIHRoZSB0aGlyZC4KU28gSm90aGFtIGJlY2FtZSBtaWdodHksIGJlY2F1c2UgaGUgcHJlcGFyZWQgaGlzIHdheXMgYmVmb3JlIHRoZSBMT1JEIGhpcyBHb2QuCk5vdyB0aGUgcmVzdCBvZiB0aGUgYWN0cyBvZiBKb3RoYW0sIGFuZCBhbGwgaGlzIHdhcnMsIGFuZCBoaXMgd2F5cywgbG8sIHRoZXkgYXJlIHdyaXR0ZW4gaW4gdGhlIGJvb2sgb2YgdGhlIGtpbmdzIG9mIElzcmFlbCBhbmQgSnVkYWguCkhlIHdhcyBmaXZlIGFuZCB0d2VudHkgeWVhcnMgb2xkIHdoZW4gaGUgYmVnYW4gdG8gcmVpZ24sIGFuZCByZWlnbmVkIHNpeHRlZW4geWVhcnMgaW4gSmVydXNhbGVtLgpBbmQgSm90aGFtIHNsZXB0IHdpdGggaGlzIGZhdGhlcnMsIGFuZCB0aGV5IGJ1cmllZCBoaW0gaW4gdGhlIGNpdHkgb2YgRGF2aWQ6IGFuZCBBaGF6IGhpcyBzb24gcmVpZ25lZCBpbiBoaXMgc3RlYWQuCkFoYXogd2FzIHR3ZW50eSB5ZWFycyBvbGQgd2hlbiBoZSBiZWdhbiB0byByZWlnbiwgYW5kIGhlIHJlaWduZWQgc2l4dGVlbiB5ZWFycyBpbiBKZXJ1c2FsZW06IGJ1dCBoZSBkaWQgbm90IHRoYXQgd2hpY2ggd2FzIHJpZ2h0IGluIHRoZSBzaWdodCBvZiB0aGUgTE9SRCwgbGlrZSBEYXZpZCBoaXMgZmF0aGVyOgpGb3IgaGUgd2Fsa2VkIGluIHRoZSB3YXlzIG9mIHRoZSBraW5ncyBvZiBJc3JhZWwsIGFuZCBtYWRlIGFsc28gbW9sdGVuIGltYWdlcyBmb3IgQmFhbGltLgpNb3Jlb3ZlciBoZSBidXJudCBpbmNlbnNlIGluIHRoZSB2YWxsZXkgb2YgdGhlIHNvbiBvZiBIaW5ub20sIGFuZCBidXJudCBoaXMgY2hpbGRyZW4gaW4gdGhlIGZpcmUsIGFmdGVyIHRoZSBhYm9taW5hdGlvbnMgb2YgdGhlIGhlYXRoZW4gd2hvbSB0aGUgTE9SRCBoYWQgY2FzdCBvdXQgYmVmb3JlIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwuCkhlIHNhY3JpZmljZWQgYWxzbyBhbmQgYnVybnQgaW5jZW5zZSBpbiB0aGUgaGlnaCBwbGFjZXMsIGFuZCBvbiB0aGUgaGlsbHMsIGFuZCB1bmRlciBldmVyeSBncmVlbiB0cmVlLgpXaGVyZWZvcmUgdGhlIExPUkQgaGlzIEdvZCBkZWxpdmVyZWQgaGltIGludG8gdGhlIGhhbmQgb2YgdGhlIGtpbmcgb2YgU3lyaWE7IGFuZCB0aGV5IHNtb3RlIGhpbSwgYW5kIGNhcnJpZWQgYXdheSBhIGdyZWF0IG11bHRpdHVkZSBvZiB0aGVtIGNhcHRpdmVzLCBhbmQgYnJvdWdodCB0aGVtIHRvIERhbWFzY3VzLiBBbmQgaGUgd2FzIGFsc28gZGVsaXZlcmVkIGludG8gdGhlIGhhbmQgb2YgdGhlIGtpbmcgb2YgSXNyYWVsLCB3aG8gc21vdGUgaGltIHdpdGggYSBncmVhdCBzbGF1Z2h0ZXIuCkZvciBQZWthaCB0aGUgc29uIG9mIFJlbWFsaWFoIHNsZXcgaW4gSnVkYWggYW4gaHVuZHJlZCBhbmQgdHdlbnR5IHRob3VzYW5kIGluIG9uZSBkYXksIHdoaWNoIHdlcmUgYWxsIHZhbGlhbnQgbWVuOyBiZWNhdXNlIHRoZXkgaGFkIGZvcnNha2VuIHRoZSBMT1JEIEdvZCBvZiB0aGVpciBmYXRoZXJzLgpBbmQgWmljaHJpLCBhIG1pZ2h0eSBtYW4gb2YgRXBocmFpbSwgc2xldyBNYWFzZWlhaCB0aGUga2luZydzIHNvbiwgYW5kIEF6cmlrYW0gdGhlIGdvdmVybm9yIG9mIHRoZSBob3VzZSwgYW5kIEVsa2FuYWggdGhhdCB3YXMgbmV4dCB0byB0aGUga2luZy4KQW5kIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgY2FycmllZCBhd2F5IGNhcHRpdmUgb2YgdGhlaXIgYnJldGhyZW4gdHdvIGh1bmRyZWQgdGhvdXNhbmQsIHdvbWVuLCBzb25zLCBhbmQgZGF1Z2h0ZXJzLCBhbmQgdG9vayBhbHNvIGF3YXkgbXVjaCBzcG9pbCBmcm9tIHRoZW0sIGFuZCBicm91Z2h0IHRoZSBzcG9pbCB0byBTYW1hcmlhLgpCdXQgYSBwcm9waGV0IG9mIHRoZSBMT1JEIHdhcyB0aGVyZSwgd2hvc2UgbmFtZSB3YXMgT2RlZDogYW5kIGhlIHdlbnQgb3V0IGJlZm9yZSB0aGUgaG9zdCB0aGF0IGNhbWUgdG8gU2FtYXJpYSwgYW5kIHNhaWQgdW50byB0aGVtLCBCZWhvbGQsIGJlY2F1c2UgdGhlIExPUkQgR29kIG9mIHlvdXIgZmF0aGVycyB3YXMgd3JvdGggd2l0aCBKdWRhaCwgaGUgaGF0aCBkZWxpdmVyZWQgdGhlbSBpbnRvIHlvdXIgaGFuZCwgYW5kIHllIGhhdmUgc2xhaW4gdGhlbSBpbiBhIHJhZ2UgdGhhdCByZWFjaGV0aCB1cCB1bnRvIGhlYXZlbi4KQW5kIG5vdyB5ZSBwdXJwb3NlIHRvIGtlZXAgdW5kZXIgdGhlIGNoaWxkcmVuIG9mIEp1ZGFoIGFuZCBKZXJ1c2FsZW0gZm9yIGJvbmRtZW4gYW5kIGJvbmR3b21lbiB1bnRvIHlvdTogYnV0IGFyZSB0aGVyZSBub3Qgd2l0aCB5b3UsIGV2ZW4gd2l0aCB5b3UsIHNpbnMgYWdhaW5zdCB0aGUgTE9SRCB5b3VyIEdvZD8KTm93IGhlYXIgbWUgdGhlcmVmb3JlLCBhbmQgZGVsaXZlciB0aGUgY2FwdGl2ZXMgYWdhaW4sIHdoaWNoIHllIGhhdmUgdGFrZW4gY2FwdGl2ZSBvZiB5b3VyIGJyZXRocmVuOiBmb3IgdGhlIGZpZXJjZSB3cmF0aCBvZiB0aGUgTE9SRCBpcyB1cG9uIHlvdS4KVGhlbiBjZXJ0YWluIG9mIHRoZSBoZWFkcyBvZiB0aGUgY2hpbGRyZW4gb2YgRXBocmFpbSwgQXphcmlhaCB0aGUgc29uIG9mIEpvaGFuYW4sIEJlcmVjaGlhaCB0aGUgc29uIG9mIE1lc2hpbGxlbW90aCwgYW5kIEplaGl6a2lhaCB0aGUgc29uIG9mIFNoYWxsdW0sIGFuZCBBbWFzYSB0aGUgc29uIG9mIEhhZGxhaSwgc3Rvb2QgdXAgYWdhaW5zdCB0aGVtIHRoYXQgY2FtZSBmcm9tIHRoZSB3YXIsCkFuZCBzYWlkIHVudG8gdGhlbSwgWWUgc2hhbGwgbm90IGJyaW5nIGluIHRoZSBjYXB0aXZlcyBoaXRoZXI6IGZvciB3aGVyZWFzIHdlIGhhdmUgb2ZmZW5kZWQgYWdhaW5zdCB0aGUgTE9SRCBhbHJlYWR5LCB5ZSBpbnRlbmQgdG8gYWRkIG1vcmUgdG8gb3VyIHNpbnMgYW5kIHRvIG91ciB0cmVzcGFzczogZm9yIG91ciB0cmVzcGFzcyBpcyBncmVhdCwgYW5kIHRoZXJlIGlzIGZpZXJjZSB3cmF0aCBhZ2FpbnN0IElzcmFlbC4KU28gdGhlIGFybWVkIG1lbiBsZWZ0IHRoZSBjYXB0aXZlcyBhbmQgdGhlIHNwb2lsIGJlZm9yZSB0aGUgcHJpbmNlcyBhbmQgYWxsIHRoZSBjb25ncmVnYXRpb24uCkFuZCB0aGUgbWVuIHdoaWNoIHdlcmUgZXhwcmVzc2VkIGJ5IG5hbWUgcm9zZSB1cCwgYW5kIHRvb2sgdGhlIGNhcHRpdmVzLCBhbmQgd2l0aCB0aGUgc3BvaWwgY2xvdGhlZCBhbGwgdGhhdCB3ZXJlIG5ha2VkIGFtb25nIHRoZW0sIGFuZCBhcnJheWVkIHRoZW0sIGFuZCBzaG9kIHRoZW0sIGFuZCBnYXZlIHRoZW0gdG8gZWF0IGFuZCB0byBkcmluaywgYW5kIGFub2ludGVkIHRoZW0sIGFuZCBjYXJyaWVkIGFsbCB0aGUgZmVlYmxlIG9mIHRoZW0gdXBvbiBhc3NlcywgYW5kIGJyb3VnaHQgdGhlbSB0byBKZXJpY2hvLCB0aGUgY2l0eSBvZiBwYWxtIHRyZWVzLCB0byB0aGVpciBicmV0aHJlbjogdGhlbiB0aGV5IHJldHVybmVkIHRvIFNhbWFyaWEuCkF0IHRoYXQgdGltZSBkaWQga2luZyBBaGF6IHNlbmQgdW50byB0aGUga2luZ3Mgb2YgQXNzeXJpYSB0byBoZWxwIGhpbS4KRm9yIGFnYWluIHRoZSBFZG9taXRlcyBoYWQgY29tZSBhbmQgc21pdHRlbiBKdWRhaCwgYW5kIGNhcnJpZWQgYXdheSBjYXB0aXZlcy4KVGhlIFBoaWxpc3RpbmVzIGFsc28gaGFkIGludmFkZWQgdGhlIGNpdGllcyBvZiB0aGUgbG93IGNvdW50cnksIGFuZCBvZiB0aGUgc291dGggb2YgSnVkYWgsIGFuZCBoYWQgdGFrZW4gQmV0aHNoZW1lc2gsIGFuZCBBamFsb24sIGFuZCBHZWRlcm90aCwgYW5kIFNob2NobyB3aXRoIHRoZSB2aWxsYWdlcyB0aGVyZW9mLCBhbmQgVGltbmFoIHdpdGggdGhlIHZpbGxhZ2VzIHRoZXJlb2YsIEdpbXpvIGFsc28gYW5kIHRoZSB2aWxsYWdlcyB0aGVyZW9mOiBhbmQgdGhleSBkd2VsdCB0aGVyZS4KRm9yIHRoZSBMT1JEIGJyb3VnaHQgSnVkYWggbG93IGJlY2F1c2Ugb2YgQWhheiBraW5nIG9mIElzcmFlbDsgZm9yIGhlIG1hZGUgSnVkYWggbmFrZWQsIGFuZCB0cmFuc2dyZXNzZWQgc29yZSBhZ2FpbnN0IHRoZSBMT1JELgpBbmQgVGlsZ2F0aHBpbG5lc2VyIGtpbmcgb2YgQXNzeXJpYSBjYW1lIHVudG8gaGltLCBhbmQgZGlzdHJlc3NlZCBoaW0sIGJ1dCBzdHJlbmd0aGVuZWQgaGltIG5vdC4KRm9yIEFoYXogdG9vayBhd2F5IGEgcG9ydGlvbiBvdXQgb2YgdGhlIGhvdXNlIG9mIHRoZSBMT1JELCBhbmQgb3V0IG9mIHRoZSBob3VzZSBvZiB0aGUga2luZywgYW5kIG9mIHRoZSBwcmluY2VzLCBhbmQgZ2F2ZSBpdCB1bnRvIHRoZSBraW5nIG9mIEFzc3lyaWE6IGJ1dCBoZSBoZWxwZWQgaGltIG5vdC4KQW5kIGluIHRoZSB0aW1lIG9mIGhpcyBkaXN0cmVzcyBkaWQgaGUgdHJlc3Bhc3MgeWV0IG1vcmUgYWdhaW5zdCB0aGUgTE9SRDogdGhpcyBpcyB0aGF0IGtpbmcgQWhhei4KRm9yIGhlIHNhY3JpZmljZWQgdW50byB0aGUgZ29kcyBvZiBEYW1hc2N1cywgd2hpY2ggc21vdGUgaGltOiBhbmQgaGUgc2FpZCwgQmVjYXVzZSB0aGUgZ29kcyBvZiB0aGUga2luZ3Mgb2YgU3lyaWEgaGVscCB0aGVtLCB0aGVyZWZvcmUgd2lsbCBJIHNhY3JpZmljZSB0byB0aGVtLCB0aGF0IHRoZXkgbWF5IGhlbHAgbWUuIEJ1dCB0aGV5IHdlcmUgdGhlIHJ1aW4gb2YgaGltLCBhbmQgb2YgYWxsIElzcmFlbC4KQW5kIEFoYXogZ2F0aGVyZWQgdG9nZXRoZXIgdGhlIHZlc3NlbHMgb2YgdGhlIGhvdXNlIG9mIEdvZCwgYW5kIGN1dCBpbiBwaWVjZXMgdGhlIHZlc3NlbHMgb2YgdGhlIGhvdXNlIG9mIEdvZCwgYW5kIHNodXQgdXAgdGhlIGRvb3JzIG9mIHRoZSBob3VzZSBvZiB0aGUgTE9SRCwgYW5kIGhlIG1hZGUgaGltIGFsdGFycyBpbiBldmVyeSBjb3JuZXIgb2YgSmVydXNhbGVtLgpBbmQgaW4gZXZlcnkgc2V2ZXJhbCBjaXR5IG9mIEp1ZGFoIGhlIG1hZGUgaGlnaCBwbGFjZXMgdG8gYnVybiBpbmNlbnNlIHVudG8gb3RoZXIgZ29kcywgYW5kIHByb3Zva2VkIHRvIGFuZ2VyIHRoZSBMT1JEIEdvZCBvZiBoaXMgZmF0aGVycy4KTm93IHRoZSByZXN0IG9mIGhpcyBhY3RzIGFuZCBvZiBhbGwgaGlzIHdheXMsIGZpcnN0IGFuZCBsYXN0LCBiZWhvbGQsIHRoZXkgYXJlIHdyaXR0ZW4gaW4gdGhlIGJvb2sgb2YgdGhlIGtpbmdzIG9mIEp1ZGFoIGFuZCBJc3JhZWwuCkFuZCBBaGF6IHNsZXB0IHdpdGggaGlzIGZhdGhlcnMsIGFuZCB0aGV5IGJ1cmllZCBoaW0gaW4gdGhlIGNpdHksIGV2ZW4gaW4gSmVydXNhbGVtOiBidXQgdGhleSBicm91Z2h0IGhpbSBub3QgaW50byB0aGUgc2VwdWxjaHJlcyBvZiB0aGUga2luZ3Mgb2YgSXNyYWVsOiBhbmQgSGV6ZWtpYWggaGlzIHNvbiByZWlnbmVkIGluIGhpcyBzdGVhZC4KSGV6ZWtpYWggYmVnYW4gdG8gcmVpZ24gd2hlbiBoZSB3YXMgZml2ZSBhbmQgdHdlbnR5IHllYXJzIG9sZCwgYW5kIGhlIHJlaWduZWQgbmluZSBhbmQgdHdlbnR5IHllYXJzIGluIEplcnVzYWxlbS4gQW5kIGhpcyBtb3RoZXIncyBuYW1lIHdhcyBBYmlqYWgsIHRoZSBkYXVnaHRlciBvZiBaZWNoYXJpYWguCkFuZCBoZSBkaWQgdGhhdCB3aGljaCB3YXMgcmlnaHQgaW4gdGhlIHNpZ2h0IG9mIHRoZSBMT1JELCBhY2NvcmRpbmcgdG8gYWxsIHRoYXQgRGF2aWQgaGlzIGZhdGhlciBoYWQgZG9uZS4KSGUgaW4gdGhlIGZpcnN0IHllYXIgb2YgaGlzIHJlaWduLCBpbiB0aGUgZmlyc3QgbW9udGgsIG9wZW5lZCB0aGUgZG9vcnMgb2YgdGhlIGhvdXNlIG9mIHRoZSBMT1JELCBhbmQgcmVwYWlyZWQgdGhlbS4KQW5kIGhlIGJyb3VnaHQgaW4gdGhlIHByaWVzdHMgYW5kIHRoZSBMZXZpdGVzLCBhbmQgZ2F0aGVyZWQgdGhlbSB0b2dldGhlciBpbnRvIHRoZSBlYXN0IHN0cmVldCwKQW5kIHNhaWQgdW50byB0aGVtLCBIZWFyIG1lLCB5ZSBMZXZpdGVzLCBzYW5jdGlmeSBub3cgeW91cnNlbHZlcywgYW5kIHNhbmN0aWZ5IHRoZSBob3VzZSBvZiB0aGUgTE9SRCBHb2Qgb2YgeW91ciBmYXRoZXJzLCBhbmQgY2FycnkgZm9ydGggdGhlIGZpbHRoaW5lc3Mgb3V0IG9mIHRoZSBob2x5IHBsYWNlLgpGb3Igb3VyIGZhdGhlcnMgaGF2ZSB0cmVzcGFzc2VkLCBhbmQgZG9uZSB0aGF0IHdoaWNoIHdhcyBldmlsIGluIHRoZSBleWVzIG9mIHRoZSBMT1JEIG91ciBHb2QsIGFuZCBoYXZlIGZvcnNha2VuIGhpbSwgYW5kIGhhdmUgdHVybmVkIGF3YXkgdGhlaXIgZmFjZXMgZnJvbSB0aGUgaGFiaXRhdGlvbiBvZiB0aGUgTE9SRCwgYW5kIHR1cm5lZCB0aGVpciBiYWNrcy4KQWxzbyB0aGV5IGhhdmUgc2h1dCB1cCB0aGUgZG9vcnMgb2YgdGhlIHBvcmNoLCBhbmQgcHV0IG91dCB0aGUgbGFtcHMsIGFuZCBoYXZlIG5vdCBidXJuZWQgaW5jZW5zZSBub3Igb2ZmZXJlZCBidXJudCBvZmZlcmluZ3MgaW4gdGhlIGhvbHkgcGxhY2UgdW50byB0aGUgR29kIG9mIElzcmFlbC4KV2hlcmVmb3JlIHRoZSB3cmF0aCBvZiB0aGUgTE9SRCB3YXMgdXBvbiBKdWRhaCBhbmQgSmVydXNhbGVtLCBhbmQgaGUgaGF0aCBkZWxpdmVyZWQgdGhlbSB0byB0cm91YmxlLCB0byBhc3RvbmlzaG1lbnQsIGFuZCB0byBoaXNzaW5nLCBhcyB5ZSBzZWUgd2l0aCB5b3VyIGV5ZXMuCkZvciwgbG8sIG91ciBmYXRoZXJzIGhhdmUgZmFsbGVuIGJ5IHRoZSBzd29yZCwgYW5kIG91ciBzb25zIGFuZCBvdXIgZGF1Z2h0ZXJzIGFuZCBvdXIgd2l2ZXMgYXJlIGluIGNhcHRpdml0eSBmb3IgdGhpcy4KTm93IGl0IGlzIGluIG1pbmUgaGVhcnQgdG8gbWFrZSBhIGNvdmVuYW50IHdpdGggdGhlIExPUkQgR29kIG9mIElzcmFlbCwgdGhhdCBoaXMgZmllcmNlIHdyYXRoIG1heSB0dXJuIGF3YXkgZnJvbSB1cy4KTXkgc29ucywgYmUgbm90IG5vdyBuZWdsaWdlbnQ6IGZvciB0aGUgTE9SRCBoYXRoIGNob3NlbiB5b3UgdG8gc3RhbmQgYmVmb3JlIGhpbSwgdG8gc2VydmUgaGltLCBhbmQgdGhhdCB5ZSBzaG91bGQgbWluaXN0ZXIgdW50byBoaW0sIGFuZCBidXJuIGluY2Vuc2UuClRoZW4gdGhlIExldml0ZXMgYXJvc2UsIE1haGF0aCB0aGUgc29uIG9mIEFtYXNhaSwgYW5kIEpvZWwgdGhlIHNvbiBvZiBBemFyaWFoLCBvZiB0aGUgc29ucyBvZiB0aGUgS29oYXRoaXRlczogYW5kIG9mIHRoZSBzb25zIG9mIE1lcmFyaSwgS2lzaCB0aGUgc29uIG9mIEFiZGksIGFuZCBBemFyaWFoIHRoZSBzb24gb2YgSmVoYWxlbGVsOiBhbmQgb2YgdGhlIEdlcnNob25pdGVzOyBKb2FoIHRoZSBzb24gb2YgWmltbWFoLCBhbmQgRWRlbiB0aGUgc29uIG9mIEpvYWg6CkFuZCBvZiB0aGUgc29ucyBvZiBFbGl6YXBoYW47IFNoaW1yaSwgYW5kIEplaWVsOiBhbmQgb2YgdGhlIHNvbnMgb2YgQXNhcGg7IFplY2hhcmlhaCwgYW5kIE1hdHRhbmlhaDoKQW5kIG9mIHRoZSBzb25zIG9mIEhlbWFuOyBKZWhpZWwsIGFuZCBTaGltZWk6IGFuZCBvZiB0aGUgc29ucyBvZiBKZWR1dGh1bjsgU2hlbWFpYWgsIGFuZCBVenppZWwuCkFuZCB0aGV5IGdhdGhlcmVkIHRoZWlyIGJyZXRocmVuLCBhbmQgc2FuY3RpZmllZCB0aGVtc2VsdmVzLCBhbmQgY2FtZSwgYWNjb3JkaW5nIHRvIHRoZSBjb21tYW5kbWVudCBvZiB0aGUga2luZywgYnkgdGhlIHdvcmRzIG9mIHRoZSBMT1JELCB0byBjbGVhbnNlIHRoZSBob3VzZSBvZiB0aGUgTE9SRC4KQW5kIHRoZSBwcmllc3RzIHdlbnQgaW50byB0aGUgaW5uZXIgcGFydCBvZiB0aGUgaG91c2Ugb2YgdGhlIExPUkQsIHRvIGNsZWFuc2UgaXQsIGFuZCBicm91Z2h0IG91dCBhbGwgdGhlIHVuY2xlYW5uZXNzIHRoYXQgdGhleSBmb3VuZCBpbiB0aGUgdGVtcGxlIG9mIHRoZSBMT1JEIGludG8gdGhlIGNvdXJ0IG9mIHRoZSBob3VzZSBvZiB0aGUgTE9SRC4gQW5kIHRoZSBMZXZpdGVzIHRvb2sgaXQsIHRvIGNhcnJ5IGl0IG91dCBhYnJvYWQgaW50byB0aGUgYnJvb2sgS2lkcm9uLgpOb3cgdGhleSBiZWdhbiBvbiB0aGUgZmlyc3QgZGF5IG9mIHRoZSBmaXJzdCBtb250aCB0byBzYW5jdGlmeSwgYW5kIG9uIHRoZSBlaWdodGggZGF5IG9mIHRoZSBtb250aCBjYW1lIHRoZXkgdG8gdGhlIHBvcmNoIG9mIHRoZSBMT1JEOiBzbyB0aGV5IHNhbmN0aWZpZWQgdGhlIGhvdXNlIG9mIHRoZSBMT1JEIGluIGVpZ2h0IGRheXM7IGFuZCBpbiB0aGUgc2l4dGVlbnRoIGRheSBvZiB0aGUgZmlyc3QgbW9udGggdGhleSBtYWRlIGFuIGVuZC4KVGhlbiB0aGV5IHdlbnQgaW4gdG8gSGV6ZWtpYWggdGhlIGtpbmcsIGFuZCBzYWlkLCBXZSBoYXZlIGNsZWFuc2VkIGFsbCB0aGUgaG91c2Ugb2YgdGhlIExPUkQsIGFuZCB0aGUgYWx0YXIgb2YgYnVybnQgb2ZmZXJpbmcsIHdpdGggYWxsIHRoZSB2ZXNzZWxzIHRoZXJlb2YsIGFuZCB0aGUgc2hld2JyZWFkIHRhYmxlLCB3aXRoIGFsbCB0aGUgdmVzc2VscyB0aGVyZW9mLgpNb3Jlb3ZlciBhbGwgdGhlIHZlc3NlbHMsIHdoaWNoIGtpbmcgQWhheiBpbiBoaXMgcmVpZ24gZGlkIGNhc3QgYXdheSBpbiBoaXMgdHJhbnNncmVzc2lvbiwgaGF2ZSB3ZSBwcmVwYXJlZCBhbmQgc2FuY3RpZmllZCwgYW5kLCBiZWhvbGQsIHRoZXkgYXJlIGJlZm9yZSB0aGUgYWx0YXIgb2YgdGhlIExPUkQuClRoZW4gSGV6ZWtpYWggdGhlIGtpbmcgcm9zZSBlYXJseSwgYW5kIGdhdGhlcmVkIHRoZSBydWxlcnMgb2YgdGhlIGNpdHksIGFuZCB3ZW50IHVwIHRvIHRoZSBob3VzZSBvZiB0aGUgTE9SRC4KQW5kIHRoZXkgYnJvdWdodCBzZXZlbiBidWxsb2NrcywgYW5kIHNldmVuIHJhbXMsIGFuZCBzZXZlbiBsYW1icywgYW5kIHNldmVuIGhlIGdvYXRzLCBmb3IgYSBzaW4gb2ZmZXJpbmcgZm9yIHRoZSBraW5nZG9tLCBhbmQgZm9yIHRoZSBzYW5jdHVhcnksIGFuZCBmb3IgSnVkYWguIEFuZCBoZSBjb21tYW5kZWQgdGhlIHByaWVzdHMgdGhlIHNvbnMgb2YgQWFyb24gdG8gb2ZmZXIgdGhlbSBvbiB0aGUgYWx0YXIgb2YgdGhlIExPUkQuClNvIHRoZXkga2lsbGVkIHRoZSBidWxsb2NrcywgYW5kIHRoZSBwcmllc3RzIHJlY2VpdmVkIHRoZSBibG9vZCwgYW5kIHNwcmlua2xlZCBpdCBvbiB0aGUgYWx0YXI6IGxpa2V3aXNlLCB3aGVuIHRoZXkgaGFkIGtpbGxlZCB0aGUgcmFtcywgdGhleSBzcHJpbmtsZWQgdGhlIGJsb29kIHVwb24gdGhlIGFsdGFyOiB0aGV5IGtpbGxlZCBhbHNvIHRoZSBsYW1icywgYW5kIHRoZXkgc3ByaW5rbGVkIHRoZSBibG9vZCB1cG9uIHRoZSBhbHRhci4KQW5kIHRoZXkgYnJvdWdodCBmb3J0aCB0aGUgaGUgZ29hdHMgZm9yIHRoZSBzaW4gb2ZmZXJpbmcgYmVmb3JlIHRoZSBraW5nIGFuZCB0aGUgY29uZ3JlZ2F0aW9uOyBhbmQgdGhleSBsYWlkIHRoZWlyIGhhbmRzIHVwb24gdGhlbToKQW5kIHRoZSBwcmllc3RzIGtpbGxlZCB0aGVtLCBhbmQgdGhleSBtYWRlIHJlY29uY2lsaWF0aW9uIHdpdGggdGhlaXIgYmxvb2QgdXBvbiB0aGUgYWx0YXIsIHRvIG1ha2UgYW4gYXRvbmVtZW50IGZvciBhbGwgSXNyYWVsOiBmb3IgdGhlIGtpbmcgY29tbWFuZGVkIHRoYXQgdGhlIGJ1cm50IG9mZmVyaW5nIGFuZCB0aGUgc2luIG9mZmVyaW5nIHNob3VsZCBiZSBtYWRlIGZvciBhbGwgSXNyYWVsLgpBbmQgaGUgc2V0IHRoZSBMZXZpdGVzIGluIHRoZSBob3VzZSBvZiB0aGUgTE9SRCB3aXRoIGN5bWJhbHMsIHdpdGggcHNhbHRlcmllcywgYW5kIHdpdGggaGFycHMsIGFjY29yZGluZyB0byB0aGUgY29tbWFuZG1lbnQgb2YgRGF2aWQsIGFuZCBvZiBHYWQgdGhlIGtpbmcncyBzZWVyLCBhbmQgTmF0aGFuIHRoZSBwcm9waGV0OiBmb3Igc28gd2FzIHRoZSBjb21tYW5kbWVudCBvZiB0aGUgTE9SRCBieSBoaXMgcHJvcGhldHMuCkFuZCB0aGUgTGV2aXRlcyBzdG9vZCB3aXRoIHRoZSBpbnN0cnVtZW50cyBvZiBEYXZpZCwgYW5kIHRoZSBwcmllc3RzIHdpdGggdGhlIHRydW1wZXRzLgpBbmQgSGV6ZWtpYWggY29tbWFuZGVkIHRvIG9mZmVyIHRoZSBidXJudCBvZmZlcmluZyB1cG9uIHRoZSBhbHRhci4gQW5kIHdoZW4gdGhlIGJ1cm50IG9mZmVyaW5nIGJlZ2FuLCB0aGUgc29uZyBvZiB0aGUgTE9SRCBiZWdhbiBhbHNvIHdpdGggdGhlIHRydW1wZXRzLCBhbmQgd2l0aCB0aGUgaW5zdHJ1bWVudHMgb3JkYWluZWQgYnkgRGF2aWQga2luZyBvZiBJc3JhZWwuCkFuZCBhbGwgdGhlIGNvbmdyZWdhdGlvbiB3b3JzaGlwcGVkLCBhbmQgdGhlIHNpbmdlcnMgc2FuZywgYW5kIHRoZSB0cnVtcGV0ZXJzIHNvdW5kZWQ6IGFuZCBhbGwgdGhpcyBjb250aW51ZWQgdW50aWwgdGhlIGJ1cm50IG9mZmVyaW5nIHdhcyBmaW5pc2hlZC4KQW5kIHdoZW4gdGhleSBoYWQgbWFkZSBhbiBlbmQgb2Ygb2ZmZXJpbmcsIHRoZSBraW5nIGFuZCBhbGwgdGhhdCB3ZXJlIHByZXNlbnQgd2l0aCBoaW0gYm93ZWQgdGhlbXNlbHZlcywgYW5kIHdvcnNoaXBwZWQuCk1vcmVvdmVyIEhlemVraWFoIHRoZSBraW5nIGFuZCB0aGUgcHJpbmNlcyBjb21tYW5kZWQgdGhlIExldml0ZXMgdG8gc2luZyBwcmFpc2UgdW50byB0aGUgTE9SRCB3aXRoIHRoZSB3b3JkcyBvZiBEYXZpZCwgYW5kIG9mIEFzYXBoIHRoZSBzZWVyLiBBbmQgdGhleSBzYW5nIHByYWlzZXMgd2l0aCBnbGFkbmVzcywgYW5kIHRoZXkgYm93ZWQgdGhlaXIgaGVhZHMgYW5kIHdvcnNoaXBwZWQuClRoZW4gSGV6ZWtpYWggYW5zd2VyZWQgYW5kIHNhaWQsIE5vdyB5ZSBoYXZlIGNvbnNlY3JhdGVkIHlvdXJzZWx2ZXMgdW50byB0aGUgTE9SRCwgY29tZSBuZWFyIGFuZCBicmluZyBzYWNyaWZpY2VzIGFuZCB0aGFuayBvZmZlcmluZ3MgaW50byB0aGUgaG91c2Ugb2YgdGhlIExPUkQuIEFuZCB0aGUgY29uZ3JlZ2F0aW9uIGJyb3VnaHQgaW4gc2FjcmlmaWNlcyBhbmQgdGhhbmsgb2ZmZXJpbmdzOyBhbmQgYXMgbWFueSBhcyB3ZXJlIG9mIGEgZnJlZSBoZWFydCBidXJudCBvZmZlcmluZ3MuCkFuZCB0aGUgbnVtYmVyIG9mIHRoZSBidXJudCBvZmZlcmluZ3MsIHdoaWNoIHRoZSBjb25ncmVnYXRpb24gYnJvdWdodCwgd2FzIHRocmVlc2NvcmUgYW5kIHRlbiBidWxsb2NrcywgYW4gaHVuZHJlZCByYW1zLCBhbmQgdHdvIGh1bmRyZWQgbGFtYnM6IGFsbCB0aGVzZSB3ZXJlIGZvciBhIGJ1cm50IG9mZmVyaW5nIHRvIHRoZSBMT1JELgpBbmQgdGhlIGNvbnNlY3JhdGVkIHRoaW5ncyB3ZXJlIHNpeCBodW5kcmVkIG94ZW4gYW5kIHRocmVlIHRob3VzYW5kIHNoZWVwLgpCdXQgdGhlIHByaWVzdHMgd2VyZSB0b28gZmV3LCBzbyB0aGF0IHRoZXkgY291bGQgbm90IGZsYXkgYWxsIHRoZSBidXJudCBvZmZlcmluZ3M6IHdoZXJlZm9yZSB0aGVpciBicmV0aHJlbiB0aGUgTGV2aXRlcyBkaWQgaGVscCB0aGVtLCB0aWxsIHRoZSB3b3JrIHdhcyBlbmRlZCwgYW5kIHVudGlsIHRoZSBvdGhlciBwcmllc3RzIGhhZCBzYW5jdGlmaWVkIHRoZW1zZWx2ZXM6IGZvciB0aGUgTGV2aXRlcyB3ZXJlIG1vcmUgdXByaWdodCBpbiBoZWFydCB0byBzYW5jdGlmeSB0aGVtc2VsdmVzIHRoYW4gdGhlIHByaWVzdHMuCkFuZCBhbHNvIHRoZSBidXJudCBvZmZlcmluZ3Mgd2VyZSBpbiBhYnVuZGFuY2UsIHdpdGggdGhlIGZhdCBvZiB0aGUgcGVhY2Ugb2ZmZXJpbmdzLCBhbmQgdGhlIGRyaW5rIG9mZmVyaW5ncyBmb3IgZXZlcnkgYnVybnQgb2ZmZXJpbmcuIFNvIHRoZSBzZXJ2aWNlIG9mIHRoZSBob3VzZSBvZiB0aGUgTE9SRCB3YXMgc2V0IGluIG9yZGVyLgpBbmQgSGV6ZWtpYWggcmVqb2ljZWQsIGFuZCBhbGwgdGhlIHBlb3BsZSwgdGhhdCBHb2QgaGFkIHByZXBhcmVkIHRoZSBwZW9wbGU6IGZvciB0aGUgdGhpbmcgd2FzIGRvbmUgc3VkZGVubHkuCkFuZCBIZXpla2lhaCBzZW50IHRvIGFsbCBJc3JhZWwgYW5kIEp1ZGFoLCBhbmQgd3JvdGUgbGV0dGVycyBhbHNvIHRvIEVwaHJhaW0gYW5kIE1hbmFzc2VoLCB0aGF0IHRoZXkgc2hvdWxkIGNvbWUgdG8gdGhlIGhvdXNlIG9mIHRoZSBMT1JEIGF0IEplcnVzYWxlbSwgdG8ga2VlcCB0aGUgcGFzc292ZXIgdW50byB0aGUgTE9SRCBHb2Qgb2YgSXNyYWVsLgpGb3IgdGhlIGtpbmcgaGFkIHRha2VuIGNvdW5zZWwsIGFuZCBoaXMgcHJpbmNlcywgYW5kIGFsbCB0aGUgY29uZ3JlZ2F0aW9uIGluIEplcnVzYWxlbSwgdG8ga2VlcCB0aGUgcGFzc292ZXIgaW4gdGhlIHNlY29uZCBtb250aC4KRm9yIHRoZXkgY291bGQgbm90IGtlZXAgaXQgYXQgdGhhdCB0aW1lLCBiZWNhdXNlIHRoZSBwcmllc3RzIGhhZCBub3Qgc2FuY3RpZmllZCB0aGVtc2VsdmVzIHN1ZmZpY2llbnRseSwgbmVpdGhlciBoYWQgdGhlIHBlb3BsZSBnYXRoZXJlZCB0aGVtc2VsdmVzIHRvZ2V0aGVyIHRvIEplcnVzYWxlbS4KQW5kIHRoZSB0aGluZyBwbGVhc2VkIHRoZSBraW5nIGFuZCBhbGwgdGhlIGNvbmdyZWdhdGlvbi4KU28gdGhleSBlc3RhYmxpc2hlZCBhIGRlY3JlZSB0byBtYWtlIHByb2NsYW1hdGlvbiB0aHJvdWdob3V0IGFsbCBJc3JhZWwsIGZyb20gQmVlcnNoZWJhIGV2ZW4gdG8gRGFuLCB0aGF0IHRoZXkgc2hvdWxkIGNvbWUgdG8ga2VlcCB0aGUgcGFzc292ZXIgdW50byB0aGUgTE9SRCBHb2Qgb2YgSXNyYWVsIGF0IEplcnVzYWxlbTogZm9yIHRoZXkgaGFkIG5vdCBkb25lIGl0IG9mIGEgbG9uZyB0aW1lIGluIHN1Y2ggc29ydCBhcyBpdCB3YXMgd3JpdHRlbi4KU28gdGhlIHBvc3RzIHdlbnQgd2l0aCB0aGUgbGV0dGVycyBmcm9tIHRoZSBraW5nIGFuZCBoaXMgcHJpbmNlcyB0aHJvdWdob3V0IGFsbCBJc3JhZWwgYW5kIEp1ZGFoLCBhbmQgYWNjb3JkaW5nIHRvIHRoZSBjb21tYW5kbWVudCBvZiB0aGUga2luZywgc2F5aW5nLCBZZSBjaGlsZHJlbiBvZiBJc3JhZWwsIHR1cm4gYWdhaW4gdW50byB0aGUgTE9SRCBHb2Qgb2YgQWJyYWhhbSwgSXNhYWMsIGFuZCBJc3JhZWwsIGFuZCBoZSB3aWxsIHJldHVybiB0byB0aGUgcmVtbmFudCBvZiB5b3UsIHRoYXQgYXJlIGVzY2FwZWQgb3V0IG9mIHRoZSBoYW5kIG9mIHRoZSBraW5ncyBvZiBBc3N5cmlhLgpBbmQgYmUgbm90IHllIGxpa2UgeW91ciBmYXRoZXJzLCBhbmQgbGlrZSB5b3VyIGJyZXRocmVuLCB3aGljaCB0cmVzcGFzc2VkIGFnYWluc3QgdGhlIExPUkQgR29kIG9mIHRoZWlyIGZhdGhlcnMsIHdobyB0aGVyZWZvcmUgZ2F2ZSB0aGVtIHVwIHRvIGRlc29sYXRpb24sIGFzIHllIHNlZS4KTm93IGJlIHllIG5vdCBzdGlmZm5lY2tlZCwgYXMgeW91ciBmYXRoZXJzIHdlcmUsIGJ1dCB5aWVsZCB5b3Vyc2VsdmVzIHVudG8gdGhlIExPUkQsIGFuZCBlbnRlciBpbnRvIGhpcyBzYW5jdHVhcnksIHdoaWNoIGhlIGhhdGggc2FuY3RpZmllZCBmb3IgZXZlcjogYW5kIHNlcnZlIHRoZSBMT1JEIHlvdXIgR29kLCB0aGF0IHRoZSBmaWVyY2VuZXNzIG9mIGhpcyB3cmF0aCBtYXkgdHVybiBhd2F5IGZyb20geW91LgpGb3IgaWYgeWUgdHVybiBhZ2FpbiB1bnRvIHRoZSBMT1JELCB5b3VyIGJyZXRocmVuIGFuZCB5b3VyIGNoaWxkcmVuIHNoYWxsIGZpbmQgY29tcGFzc2lvbiBiZWZvcmUgdGhlbSB0aGF0IGxlYWQgdGhlbSBjYXB0aXZlLCBzbyB0aGF0IHRoZXkgc2hhbGwgY29tZSBhZ2FpbiBpbnRvIHRoaXMgbGFuZDogZm9yIHRoZSBMT1JEIHlvdXIgR29kIGlzIGdyYWNpb3VzIGFuZCBtZXJjaWZ1bCwgYW5kIHdpbGwgbm90IHR1cm4gYXdheSBoaXMgZmFjZSBmcm9tIHlvdSwgaWYgeWUgcmV0dXJuIHVudG8gaGltLgpTbyB0aGUgcG9zdHMgcGFzc2VkIGZyb20gY2l0eSB0byBjaXR5IHRocm91Z2ggdGhlIGNvdW50cnkgb2YgRXBocmFpbSBhbmQgTWFuYXNzZWggZXZlbiB1bnRvIFplYnVsdW46IGJ1dCB0aGV5IGxhdWdoZWQgdGhlbSB0byBzY29ybiwgYW5kIG1vY2tlZCB0aGVtLgpOZXZlcnRoZWxlc3MgZGl2ZXJzIG9mIEFzaGVyIGFuZCBNYW5hc3NlaCBhbmQgb2YgWmVidWx1biBodW1ibGVkIHRoZW1zZWx2ZXMsIGFuZCBjYW1lIHRvIEplcnVzYWxlbS4KQWxzbyBpbiBKdWRhaCB0aGUgaGFuZCBvZiBHb2Qgd2FzIHRvIGdpdmUgdGhlbSBvbmUgaGVhcnQgdG8gZG8gdGhlIGNvbW1hbmRtZW50IG9mIHRoZSBraW5nIGFuZCBvZiB0aGUgcHJpbmNlcywgYnkgdGhlIHdvcmQgb2YgdGhlIExPUkQuCkFuZCB0aGVyZSBhc3NlbWJsZWQgYXQgSmVydXNhbGVtIG11Y2ggcGVvcGxlIHRvIGtlZXAgdGhlIGZlYXN0IG9mIHVubGVhdmVuZWQgYnJlYWQgaW4gdGhlIHNlY29uZCBtb250aCwgYSB2ZXJ5IGdyZWF0IGNvbmdyZWdhdGlvbi4KQW5kIHRoZXkgYXJvc2UgYW5kIHRvb2sgYXdheSB0aGUgYWx0YXJzIHRoYXQgd2VyZSBpbiBKZXJ1c2FsZW0sIGFuZCBhbGwgdGhlIGFsdGFycyBmb3IgaW5jZW5zZSB0b29rIHRoZXkgYXdheSwgYW5kIGNhc3QgdGhlbSBpbnRvIHRoZSBicm9vayBLaWRyb24uClRoZW4gdGhleSBraWxsZWQgdGhlIHBhc3NvdmVyIG9uIHRoZSBmb3VydGVlbnRoIGRheSBvZiB0aGUgc2Vjb25kIG1vbnRoOiBhbmQgdGhlIHByaWVzdHMgYW5kIHRoZSBMZXZpdGVzIHdlcmUgYXNoYW1lZCwgYW5kIHNhbmN0aWZpZWQgdGhlbXNlbHZlcywgYW5kIGJyb3VnaHQgaW4gdGhlIGJ1cm50IG9mZmVyaW5ncyBpbnRvIHRoZSBob3VzZSBvZiB0aGUgTE9SRC4KQW5kIHRoZXkgc3Rvb2QgaW4gdGhlaXIgcGxhY2UgYWZ0ZXIgdGhlaXIgbWFubmVyLCBhY2NvcmRpbmcgdG8gdGhlIGxhdyBvZiBNb3NlcyB0aGUgbWFuIG9mIEdvZDogdGhlIHByaWVzdHMgc3ByaW5rbGVkIHRoZSBibG9vZCwgd2hpY2ggdGhleSByZWNlaXZlZCBvZiB0aGUgaGFuZCBvZiB0aGUgTGV2aXRlcy4KRm9yIHRoZXJlIHdlcmUgbWFueSBpbiB0aGUgY29uZ3JlZ2F0aW9uIHRoYXQgd2VyZSBub3Qgc2FuY3RpZmllZDogdGhlcmVmb3JlIHRoZSBMZXZpdGVzIGhhZCB0aGUgY2hhcmdlIG9mIHRoZSBraWxsaW5nIG9mIHRoZSBwYXNzb3ZlcnMgZm9yIGV2ZXJ5IG9uZSB0aGF0IHdhcyBub3QgY2xlYW4sIHRvIHNhbmN0aWZ5IHRoZW0gdW50byB0aGUgTE9SRC4KRm9yIGEgbXVsdGl0dWRlIG9mIHRoZSBwZW9wbGUsIGV2ZW4gbWFueSBvZiBFcGhyYWltLCBhbmQgTWFuYXNzZWgsIElzc2FjaGFyLCBhbmQgWmVidWx1biwgaGFkIG5vdCBjbGVhbnNlZCB0aGVtc2VsdmVzLCB5ZXQgZGlkIHRoZXkgZWF0IHRoZSBwYXNzb3ZlciBvdGhlcndpc2UgdGhhbiBpdCB3YXMgd3JpdHRlbi4gQnV0IEhlemVraWFoIHByYXllZCBmb3IgdGhlbSwgc2F5aW5nLCBUaGUgZ29vZCBMT1JEIHBhcmRvbiBldmVyeSBvbmUKVGhhdCBwcmVwYXJldGggaGlzIGhlYXJ0IHRvIHNlZWsgR29kLCB0aGUgTE9SRCBHb2Qgb2YgaGlzIGZhdGhlcnMsIHRob3VnaCBoZSBiZSBub3QgY2xlYW5zZWQgYWNjb3JkaW5nIHRvIHRoZSBwdXJpZmljYXRpb24gb2YgdGhlIHNhbmN0dWFyeS4KQW5kIHRoZSBMT1JEIGhlYXJrZW5lZCB0byBIZXpla2lhaCwgYW5kIGhlYWxlZCB0aGUgcGVvcGxlLgpBbmQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCB0aGF0IHdlcmUgcHJlc2VudCBhdCBKZXJ1c2FsZW0ga2VwdCB0aGUgZmVhc3Qgb2YgdW5sZWF2ZW5lZCBicmVhZCBzZXZlbiBkYXlzIHdpdGggZ3JlYXQgZ2xhZG5lc3M6IGFuZCB0aGUgTGV2aXRlcyBhbmQgdGhlIHByaWVzdHMgcHJhaXNlZCB0aGUgTE9SRCBkYXkgYnkgZGF5LCBzaW5naW5nIHdpdGggbG91ZCBpbnN0cnVtZW50cyB1bnRvIHRoZSBMT1JELgpBbmQgSGV6ZWtpYWggc3Bha2UgY29tZm9ydGFibHkgdW50byBhbGwgdGhlIExldml0ZXMgdGhhdCB0YXVnaHQgdGhlIGdvb2Qga25vd2xlZGdlIG9mIHRoZSBMT1JEOiBhbmQgdGhleSBkaWQgZWF0IHRocm91Z2hvdXQgdGhlIGZlYXN0IHNldmVuIGRheXMsIG9mZmVyaW5nIHBlYWNlIG9mZmVyaW5ncywgYW5kIG1ha2luZyBjb25mZXNzaW9uIHRvIHRoZSBMT1JEIEdvZCBvZiB0aGVpciBmYXRoZXJzLgpBbmQgdGhlIHdob2xlIGFzc2VtYmx5IHRvb2sgY291bnNlbCB0byBrZWVwIG90aGVyIHNldmVuIGRheXM6IGFuZCB0aGV5IGtlcHQgb3RoZXIgc2V2ZW4gZGF5cyB3aXRoIGdsYWRuZXNzLgpGb3IgSGV6ZWtpYWgga2luZyBvZiBKdWRhaCBkaWQgZ2l2ZSB0byB0aGUgY29uZ3JlZ2F0aW9uIGEgdGhvdXNhbmQgYnVsbG9ja3MgYW5kIHNldmVuIHRob3VzYW5kIHNoZWVwOyBhbmQgdGhlIHByaW5jZXMgZ2F2ZSB0byB0aGUgY29uZ3JlZ2F0aW9uIGEgdGhvdXNhbmQgYnVsbG9ja3MgYW5kIHRlbiB0aG91c2FuZCBzaGVlcDogYW5kIGEgZ3JlYXQgbnVtYmVyIG9mIHByaWVzdHMgc2FuY3RpZmllZCB0aGVtc2VsdmVzLgpBbmQgYWxsIHRoZSBjb25ncmVnYXRpb24gb2YgSnVkYWgsIHdpdGggdGhlIHByaWVzdHMgYW5kIHRoZSBMZXZpdGVzLCBhbmQgYWxsIHRoZSBjb25ncmVnYXRpb24gdGhhdCBjYW1lIG91dCBvZiBJc3JhZWwsIGFuZCB0aGUgc3RyYW5nZXJzIHRoYXQgY2FtZSBvdXQgb2YgdGhlIGxhbmQgb2YgSXNyYWVsLCBhbmQgdGhhdCBkd2VsdCBpbiBKdWRhaCwgcmVqb2ljZWQuClNvIHRoZXJlIHdhcyBncmVhdCBqb3kgaW4gSmVydXNhbGVtOiBmb3Igc2luY2UgdGhlIHRpbWUgb2YgU29sb21vbiB0aGUgc29uIG9mIERhdmlkIGtpbmcgb2YgSXNyYWVsIHRoZXJlIHdhcyBub3QgdGhlIGxpa2UgaW4gSmVydXNhbGVtLgpUaGVuIHRoZSBwcmllc3RzIHRoZSBMZXZpdGVzIGFyb3NlIGFuZCBibGVzc2VkIHRoZSBwZW9wbGU6IGFuZCB0aGVpciB2b2ljZSB3YXMgaGVhcmQsIGFuZCB0aGVpciBwcmF5ZXIgY2FtZSB1cCB0byBoaXMgaG9seSBkd2VsbGluZyBwbGFjZSwgZXZlbiB1bnRvIGhlYXZlbi4KTm93IHdoZW4gYWxsIHRoaXMgd2FzIGZpbmlzaGVkLCBhbGwgSXNyYWVsIHRoYXQgd2VyZSBwcmVzZW50IHdlbnQgb3V0IHRvIHRoZSBjaXRpZXMgb2YgSnVkYWgsIGFuZCBicmFrZSB0aGUgaW1hZ2VzIGluIHBpZWNlcywgYW5kIGN1dCBkb3duIHRoZSBncm92ZXMsIGFuZCB0aHJldyBkb3duIHRoZSBoaWdoIHBsYWNlcyBhbmQgdGhlIGFsdGFycyBvdXQgb2YgYWxsIEp1ZGFoIGFuZCBCZW5qYW1pbiwgaW4gRXBocmFpbSBhbHNvIGFuZCBNYW5hc3NlaCwgdW50aWwgdGhleSBoYWQgdXR0ZXJseSBkZXN0cm95ZWQgdGhlbSBhbGwuIFRoZW4gYWxsIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgcmV0dXJuZWQsIGV2ZXJ5IG1hbiB0byBoaXMgcG9zc2Vzc2lvbiwgaW50byB0aGVpciBvd24gY2l0aWVzLgpBbmQgSGV6ZWtpYWggYXBwb2ludGVkIHRoZSBjb3Vyc2VzIG9mIHRoZSBwcmllc3RzIGFuZCB0aGUgTGV2aXRlcyBhZnRlciB0aGVpciBjb3Vyc2VzLCBldmVyeSBtYW4gYWNjb3JkaW5nIHRvIGhpcyBzZXJ2aWNlLCB0aGUgcHJpZXN0cyBhbmQgTGV2aXRlcyBmb3IgYnVybnQgb2ZmZXJpbmdzIGFuZCBmb3IgcGVhY2Ugb2ZmZXJpbmdzLCB0byBtaW5pc3RlciwgYW5kIHRvIGdpdmUgdGhhbmtzLCBhbmQgdG8gcHJhaXNlIGluIHRoZSBnYXRlcyBvZiB0aGUgdGVudHMgb2YgdGhlIExPUkQuCkhlIGFwcG9pbnRlZCBhbHNvIHRoZSBraW5nJ3MgcG9ydGlvbiBvZiBoaXMgc3Vic3RhbmNlIGZvciB0aGUgYnVybnQgb2ZmZXJpbmdzLCB0byB3aXQsIGZvciB0aGUgbW9ybmluZyBhbmQgZXZlbmluZyBidXJudCBvZmZlcmluZ3MsIGFuZCB0aGUgYnVybnQgb2ZmZXJpbmdzIGZvciB0aGUgc2FiYmF0aHMsIGFuZCBmb3IgdGhlIG5ldyBtb29ucywgYW5kIGZvciB0aGUgc2V0IGZlYXN0cywgYXMgaXQgaXMgd3JpdHRlbiBpbiB0aGUgbGF3IG9mIHRoZSBMT1JELgpNb3Jlb3ZlciBoZSBjb21tYW5kZWQgdGhlIHBlb3BsZSB0aGF0IGR3ZWx0IGluIEplcnVzYWxlbSB0byBnaXZlIHRoZSBwb3J0aW9uIG9mIHRoZSBwcmllc3RzIGFuZCB0aGUgTGV2aXRlcywgdGhhdCB0aGV5IG1pZ2h0IGJlIGVuY291cmFnZWQgaW4gdGhlIGxhdyBvZiB0aGUgTE9SRC4KQW5kIGFzIHNvb24gYXMgdGhlIGNvbW1hbmRtZW50IGNhbWUgYWJyb2FkLCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGJyb3VnaHQgaW4gYWJ1bmRhbmNlIHRoZSBmaXJzdGZydWl0cyBvZiBjb3JuLCB3aW5lLCBhbmQgb2lsLCBhbmQgaG9uZXksIGFuZCBvZiBhbGwgdGhlIGluY3JlYXNlIG9mIHRoZSBmaWVsZDsgYW5kIHRoZSB0aXRoZSBvZiBhbGwgdGhpbmdzIGJyb3VnaHQgdGhleSBpbiBhYnVuZGFudGx5LgpBbmQgY29uY2VybmluZyB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGFuZCBKdWRhaCwgdGhhdCBkd2VsdCBpbiB0aGUgY2l0aWVzIG9mIEp1ZGFoLCB0aGV5IGFsc28gYnJvdWdodCBpbiB0aGUgdGl0aGUgb2Ygb3hlbiBhbmQgc2hlZXAsIGFuZCB0aGUgdGl0aGUgb2YgaG9seSB0aGluZ3Mgd2hpY2ggd2VyZSBjb25zZWNyYXRlZCB1bnRvIHRoZSBMT1JEIHRoZWlyIEdvZCwgYW5kIGxhaWQgdGhlbSBieSBoZWFwcy4KSW4gdGhlIHRoaXJkIG1vbnRoIHRoZXkgYmVnYW4gdG8gbGF5IHRoZSBmb3VuZGF0aW9uIG9mIHRoZSBoZWFwcywgYW5kIGZpbmlzaGVkIHRoZW0gaW4gdGhlIHNldmVudGggbW9udGguCkFuZCB3aGVuIEhlemVraWFoIGFuZCB0aGUgcHJpbmNlcyBjYW1lIGFuZCBzYXcgdGhlIGhlYXBzLCB0aGV5IGJsZXNzZWQgdGhlIExPUkQsIGFuZCBoaXMgcGVvcGxlIElzcmFlbC4KVGhlbiBIZXpla2lhaCBxdWVzdGlvbmVkIHdpdGggdGhlIHByaWVzdHMgYW5kIHRoZSBMZXZpdGVzIGNvbmNlcm5pbmcgdGhlIGhlYXBzLgpBbmQgQXphcmlhaCB0aGUgY2hpZWYgcHJpZXN0IG9mIHRoZSBob3VzZSBvZiBaYWRvayBhbnN3ZXJlZCBoaW0sIGFuZCBzYWlkLCBTaW5jZSB0aGUgcGVvcGxlIGJlZ2FuIHRvIGJyaW5nIHRoZSBvZmZlcmluZ3MgaW50byB0aGUgaG91c2Ugb2YgdGhlIExPUkQsIHdlIGhhdmUgaGFkIGVub3VnaCB0byBlYXQsIGFuZCBoYXZlIGxlZnQgcGxlbnR5OiBmb3IgdGhlIExPUkQgaGF0aCBibGVzc2VkIGhpcyBwZW9wbGU7IGFuZCB0aGF0IHdoaWNoIGlzIGxlZnQgaXMgdGhpcyBncmVhdCBzdG9yZS4KVGhlbiBIZXpla2lhaCBjb21tYW5kZWQgdG8gcHJlcGFyZSBjaGFtYmVycyBpbiB0aGUgaG91c2Ugb2YgdGhlIExPUkQ7IGFuZCB0aGV5IHByZXBhcmVkIHRoZW0sCkFuZCBicm91Z2h0IGluIHRoZSBvZmZlcmluZ3MgYW5kIHRoZSB0aXRoZXMgYW5kIHRoZSBkZWRpY2F0ZWQgdGhpbmdzIGZhaXRoZnVsbHk6IG92ZXIgd2hpY2ggQ29ub25pYWggdGhlIExldml0ZSB3YXMgcnVsZXIsIGFuZCBTaGltZWkgaGlzIGJyb3RoZXIgd2FzIHRoZSBuZXh0LgpBbmQgSmVoaWVsLCBhbmQgQXphemlhaCwgYW5kIE5haGF0aCwgYW5kIEFzYWhlbCwgYW5kIEplcmltb3RoLCBhbmQgSm96YWJhZCwgYW5kIEVsaWVsLCBhbmQgSXNtYWNoaWFoLCBhbmQgTWFoYXRoLCBhbmQgQmVuYWlhaCwgd2VyZSBvdmVyc2VlcnMgdW5kZXIgdGhlIGhhbmQgb2YgQ29ub25pYWggYW5kIFNoaW1laSBoaXMgYnJvdGhlciwgYXQgdGhlIGNvbW1hbmRtZW50IG9mIEhlemVraWFoIHRoZSBraW5nLCBhbmQgQXphcmlhaCB0aGUgcnVsZXIgb2YgdGhlIGhvdXNlIG9mIEdvZC4KQW5kIEtvcmUgdGhlIHNvbiBvZiBJbW5haCB0aGUgTGV2aXRlLCB0aGUgcG9ydGVyIHRvd2FyZCB0aGUgZWFzdCwgd2FzIG92ZXIgdGhlIGZyZWV3aWxsIG9mZmVyaW5ncyBvZiBHb2QsIHRvIGRpc3RyaWJ1dGUgdGhlIG9ibGF0aW9ucyBvZiB0aGUgTE9SRCwgYW5kIHRoZSBtb3N0IGhvbHkgdGhpbmdzLgpBbmQgbmV4dCBoaW0gd2VyZSBFZGVuLCBhbmQgTWluaWFtaW4sIGFuZCBKZXNodWEsIGFuZCBTaGVtYWlhaCwgQW1hcmlhaCwgYW5kIFNoZWNhbmlhaCwgaW4gdGhlIGNpdGllcyBvZiB0aGUgcHJpZXN0cywgaW4gdGhlaXIgc2V0IG9mZmljZSwgdG8gZ2l2ZSB0byB0aGVpciBicmV0aHJlbiBieSBjb3Vyc2VzLCBhcyB3ZWxsIHRvIHRoZSBncmVhdCBhcyB0byB0aGUgc21hbGw6CkJlc2lkZSB0aGVpciBnZW5lYWxvZ3kgb2YgbWFsZXMsIGZyb20gdGhyZWUgeWVhcnMgb2xkIGFuZCB1cHdhcmQsIGV2ZW4gdW50byBldmVyeSBvbmUgdGhhdCBlbnRlcmV0aCBpbnRvIHRoZSBob3VzZSBvZiB0aGUgTE9SRCwgaGlzIGRhaWx5IHBvcnRpb24gZm9yIHRoZWlyIHNlcnZpY2UgaW4gdGhlaXIgY2hhcmdlcyBhY2NvcmRpbmcgdG8gdGhlaXIgY291cnNlczsKQm90aCB0byB0aGUgZ2VuZWFsb2d5IG9mIHRoZSBwcmllc3RzIGJ5IHRoZSBob3VzZSBvZiB0aGVpciBmYXRoZXJzLCBhbmQgdGhlIExldml0ZXMgZnJvbSB0d2VudHkgeWVhcnMgb2xkIGFuZCB1cHdhcmQsIGluIHRoZWlyIGNoYXJnZXMgYnkgdGhlaXIgY291cnNlczsKQW5kIHRvIHRoZSBnZW5lYWxvZ3kgb2YgYWxsIHRoZWlyIGxpdHRsZSBvbmVzLCB0aGVpciB3aXZlcywgYW5kIHRoZWlyIHNvbnMsIGFuZCB0aGVpciBkYXVnaHRlcnMsIHRocm91Z2ggYWxsIHRoZSBjb25ncmVnYXRpb246IGZvciBpbiB0aGVpciBzZXQgb2ZmaWNlIHRoZXkgc2FuY3RpZmllZCB0aGVtc2VsdmVzIGluIGhvbGluZXNzOgpBbHNvIG9mIHRoZSBzb25zIG9mIEFhcm9uIHRoZSBwcmllc3RzLCB3aGljaCB3ZXJlIGluIHRoZSBmaWVsZHMgb2YgdGhlIHN1YnVyYnMgb2YgdGhlaXIgY2l0aWVzLCBpbiBldmVyeSBzZXZlcmFsIGNpdHksIHRoZSBtZW4gdGhhdCB3ZXJlIGV4cHJlc3NlZCBieSBuYW1lLCB0byBnaXZlIHBvcnRpb25zIHRvIGFsbCB0aGUgbWFsZXMgYW1vbmcgdGhlIHByaWVzdHMsIGFuZCB0byBhbGwgdGhhdCB3ZXJlIHJlY2tvbmVkIGJ5IGdlbmVhbG9naWVzIGFtb25nIHRoZSBMZXZpdGVzLgpBbmQgdGh1cyBkaWQgSGV6ZWtpYWggdGhyb3VnaG91dCBhbGwgSnVkYWgsIGFuZCB3cm91Z2h0IHRoYXQgd2hpY2ggd2FzIGdvb2QgYW5kIHJpZ2h0IGFuZCB0cnV0aCBiZWZvcmUgdGhlIExPUkQgaGlzIEdvZC4KQW5kIGluIGV2ZXJ5IHdvcmsgdGhhdCBoZSBiZWdhbiBpbiB0aGUgc2VydmljZSBvZiB0aGUgaG91c2Ugb2YgR29kLCBhbmQgaW4gdGhlIGxhdywgYW5kIGluIHRoZSBjb21tYW5kbWVudHMsIHRvIHNlZWsgaGlzIEdvZCwgaGUgZGlkIGl0IHdpdGggYWxsIGhpcyBoZWFydCwgYW5kIHByb3NwZXJlZC4KQWZ0ZXIgdGhlc2UgdGhpbmdzLCBhbmQgdGhlIGVzdGFibGlzaG1lbnQgdGhlcmVvZiwgU2VubmFjaGVyaWIga2luZyBvZiBBc3N5cmlhIGNhbWUsIGFuZCBlbnRlcmVkIGludG8gSnVkYWgsIGFuZCBlbmNhbXBlZCBhZ2FpbnN0IHRoZSBmZW5jZWQgY2l0aWVzLCBhbmQgdGhvdWdodCB0byB3aW4gdGhlbSBmb3IgaGltc2VsZi4KQW5kIHdoZW4gSGV6ZWtpYWggc2F3IHRoYXQgU2VubmFjaGVyaWIgd2FzIGNvbWUsIGFuZCB0aGF0IGhlIHdhcyBwdXJwb3NlZCB0byBmaWdodCBhZ2FpbnN0IEplcnVzYWxlbSwKSGUgdG9vayBjb3Vuc2VsIHdpdGggaGlzIHByaW5jZXMgYW5kIGhpcyBtaWdodHkgbWVuIHRvIHN0b3AgdGhlIHdhdGVycyBvZiB0aGUgZm91bnRhaW5zIHdoaWNoIHdlcmUgd2l0aG91dCB0aGUgY2l0eTogYW5kIHRoZXkgZGlkIGhlbHAgaGltLgpTbyB0aGVyZSB3YXMgZ2F0aGVyZWQgbXVjaCBwZW9wbGUgdG9nZXRoZXIsIHdobyBzdG9wcGVkIGFsbCB0aGUgZm91bnRhaW5zLCBhbmQgdGhlIGJyb29rIHRoYXQgcmFuIHRocm91Z2ggdGhlIG1pZHN0IG9mIHRoZSBsYW5kLCBzYXlpbmcsIFdoeSBzaG91bGQgdGhlIGtpbmdzIG9mIEFzc3lyaWEgY29tZSwgYW5kIGZpbmQgbXVjaCB3YXRlcj8KQWxzbyBoZSBzdHJlbmd0aGVuZWQgaGltc2VsZiwgYW5kIGJ1aWx0IHVwIGFsbCB0aGUgd2FsbCB0aGF0IHdhcyBicm9rZW4sIGFuZCByYWlzZWQgaXQgdXAgdG8gdGhlIHRvd2VycywgYW5kIGFub3RoZXIgd2FsbCB3aXRob3V0LCBhbmQgcmVwYWlyZWQgTWlsbG8gaW4gdGhlIGNpdHkgb2YgRGF2aWQsIGFuZCBtYWRlIGRhcnRzIGFuZCBzaGllbGRzIGluIGFidW5kYW5jZS4KQW5kIGhlIHNldCBjYXB0YWlucyBvZiB3YXIgb3ZlciB0aGUgcGVvcGxlLCBhbmQgZ2F0aGVyZWQgdGhlbSB0b2dldGhlciB0byBoaW0gaW4gdGhlIHN0cmVldCBvZiB0aGUgZ2F0ZSBvZiB0aGUgY2l0eSwgYW5kIHNwYWtlIGNvbWZvcnRhYmx5IHRvIHRoZW0sIHNheWluZywKQmUgc3Ryb25nIGFuZCBjb3VyYWdlb3VzLCBiZSBub3QgYWZyYWlkIG5vciBkaXNtYXllZCBmb3IgdGhlIGtpbmcgb2YgQXNzeXJpYSwgbm9yIGZvciBhbGwgdGhlIG11bHRpdHVkZSB0aGF0IGlzIHdpdGggaGltOiBmb3IgdGhlcmUgYmUgbW9yZSB3aXRoIHVzIHRoYW4gd2l0aCBoaW06CldpdGggaGltIGlzIGFuIGFybSBvZiBmbGVzaDsgYnV0IHdpdGggdXMgaXMgdGhlIExPUkQgb3VyIEdvZCB0byBoZWxwIHVzLCBhbmQgdG8gZmlnaHQgb3VyIGJhdHRsZXMuIEFuZCB0aGUgcGVvcGxlIHJlc3RlZCB0aGVtc2VsdmVzIHVwb24gdGhlIHdvcmRzIG9mIEhlemVraWFoIGtpbmcgb2YgSnVkYWguCkFmdGVyIHRoaXMgZGlkIFNlbm5hY2hlcmliIGtpbmcgb2YgQXNzeXJpYSBzZW5kIGhpcyBzZXJ2YW50cyB0byBKZXJ1c2FsZW0sIChidXQgaGUgaGltc2VsZiBsYWlkIHNpZWdlIGFnYWluc3QgTGFjaGlzaCwgYW5kIGFsbCBoaXMgcG93ZXIgd2l0aCBoaW0sKSB1bnRvIEhlemVraWFoIGtpbmcgb2YgSnVkYWgsIGFuZCB1bnRvIGFsbCBKdWRhaCB0aGF0IHdlcmUgYXQgSmVydXNhbGVtLCBzYXlpbmcsClRodXMgc2FpdGggU2VubmFjaGVyaWIga2luZyBvZiBBc3N5cmlhLCBXaGVyZW9uIGRvIHllIHRydXN0LCB0aGF0IHllIGFiaWRlIGluIHRoZSBzaWVnZSBpbiBKZXJ1c2FsZW0/CkRvdGggbm90IEhlemVraWFoIHBlcnN1YWRlIHlvdSB0byBnaXZlIG92ZXIgeW91cnNlbHZlcyB0byBkaWUgYnkgZmFtaW5lIGFuZCBieSB0aGlyc3QsIHNheWluZywgVGhlIExPUkQgb3VyIEdvZCBzaGFsbCBkZWxpdmVyIHVzIG91dCBvZiB0aGUgaGFuZCBvZiB0aGUga2luZyBvZiBBc3N5cmlhPwpIYXRoIG5vdCB0aGUgc2FtZSBIZXpla2lhaCB0YWtlbiBhd2F5IGhpcyBoaWdoIHBsYWNlcyBhbmQgaGlzIGFsdGFycywgYW5kIGNvbW1hbmRlZCBKdWRhaCBhbmQgSmVydXNhbGVtLCBzYXlpbmcsIFllIHNoYWxsIHdvcnNoaXAgYmVmb3JlIG9uZSBhbHRhciwgYW5kIGJ1cm4gaW5jZW5zZSB1cG9uIGl0PwpLbm93IHllIG5vdCB3aGF0IEkgYW5kIG15IGZhdGhlcnMgaGF2ZSBkb25lIHVudG8gYWxsIHRoZSBwZW9wbGUgb2Ygb3RoZXIgbGFuZHM/IHdlcmUgdGhlIGdvZHMgb2YgdGhlIG5hdGlvbnMgb2YgdGhvc2UgbGFuZHMgYW55IHdheXMgYWJsZSB0byBkZWxpdmVyIHRoZWlyIGxhbmRzIG91dCBvZiBtaW5lIGhhbmQ/CldobyB3YXMgdGhlcmUgYW1vbmcgYWxsIHRoZSBnb2RzIG9mIHRob3NlIG5hdGlvbnMgdGhhdCBteSBmYXRoZXJzIHV0dGVybHkgZGVzdHJveWVkLCB0aGF0IGNvdWxkIGRlbGl2ZXIgaGlzIHBlb3BsZSBvdXQgb2YgbWluZSBoYW5kLCB0aGF0IHlvdXIgR29kIHNob3VsZCBiZSBhYmxlIHRvIGRlbGl2ZXIgeW91IG91dCBvZiBtaW5lIGhhbmQ/Ck5vdyB0aGVyZWZvcmUgbGV0IG5vdCBIZXpla2lhaCBkZWNlaXZlIHlvdSwgbm9yIHBlcnN1YWRlIHlvdSBvbiB0aGlzIG1hbm5lciwgbmVpdGhlciB5ZXQgYmVsaWV2ZSBoaW06IGZvciBubyBnb2Qgb2YgYW55IG5hdGlvbiBvciBraW5nZG9tIHdhcyBhYmxlIHRvIGRlbGl2ZXIgaGlzIHBlb3BsZSBvdXQgb2YgbWluZSBoYW5kLCBhbmQgb3V0IG9mIHRoZSBoYW5kIG9mIG15IGZhdGhlcnM6IGhvdyBtdWNoIGxlc3Mgc2hhbGwgeW91ciBHb2QgZGVsaXZlciB5b3Ugb3V0IG9mIG1pbmUgaGFuZD8KQW5kIGhpcyBzZXJ2YW50cyBzcGFrZSB5ZXQgbW9yZSBhZ2FpbnN0IHRoZSBMT1JEIEdvZCwgYW5kIGFnYWluc3QgaGlzIHNlcnZhbnQgSGV6ZWtpYWguCkhlIHdyb3RlIGFsc28gbGV0dGVycyB0byByYWlsIG9uIHRoZSBMT1JEIEdvZCBvZiBJc3JhZWwsIGFuZCB0byBzcGVhayBhZ2FpbnN0IGhpbSwgc2F5aW5nLCBBcyB0aGUgZ29kcyBvZiB0aGUgbmF0aW9ucyBvZiBvdGhlciBsYW5kcyBoYXZlIG5vdCBkZWxpdmVyZWQgdGhlaXIgcGVvcGxlIG91dCBvZiBtaW5lIGhhbmQsIHNvIHNoYWxsIG5vdCB0aGUgR29kIG9mIEhlemVraWFoIGRlbGl2ZXIgaGlzIHBlb3BsZSBvdXQgb2YgbWluZSBoYW5kLgpUaGVuIHRoZXkgY3JpZWQgd2l0aCBhIGxvdWQgdm9pY2UgaW4gdGhlIEpld3MnIHNwZWVjaCB1bnRvIHRoZSBwZW9wbGUgb2YgSmVydXNhbGVtIHRoYXQgd2VyZSBvbiB0aGUgd2FsbCwgdG8gYWZmcmlnaHQgdGhlbSwgYW5kIHRvIHRyb3VibGUgdGhlbTsgdGhhdCB0aGV5IG1pZ2h0IHRha2UgdGhlIGNpdHkuCkFuZCB0aGV5IHNwYWtlIGFnYWluc3QgdGhlIEdvZCBvZiBKZXJ1c2FsZW0sIGFzIGFnYWluc3QgdGhlIGdvZHMgb2YgdGhlIHBlb3BsZSBvZiB0aGUgZWFydGgsIHdoaWNoIHdlcmUgdGhlIHdvcmsgb2YgdGhlIGhhbmRzIG9mIG1hbi4KQW5kIGZvciB0aGlzIGNhdXNlIEhlemVraWFoIHRoZSBraW5nLCBhbmQgdGhlIHByb3BoZXQgSXNhaWFoIHRoZSBzb24gb2YgQW1veiwgcHJheWVkIGFuZCBjcmllZCB0byBoZWF2ZW4uCkFuZCB0aGUgTE9SRCBzZW50IGFuIGFuZ2VsLCB3aGljaCBjdXQgb2ZmIGFsbCB0aGUgbWlnaHR5IG1lbiBvZiB2YWxvdXIsIGFuZCB0aGUgbGVhZGVycyBhbmQgY2FwdGFpbnMgaW4gdGhlIGNhbXAgb2YgdGhlIGtpbmcgb2YgQXNzeXJpYS4gU28gaGUgcmV0dXJuZWQgd2l0aCBzaGFtZSBvZiBmYWNlIHRvIGhpcyBvd24gbGFuZC4gQW5kIHdoZW4gaGUgd2FzIGNvbWUgaW50byB0aGUgaG91c2Ugb2YgaGlzIGdvZCwgdGhleSB0aGF0IGNhbWUgZm9ydGggb2YgaGlzIG93biBib3dlbHMgc2xldyBoaW0gdGhlcmUgd2l0aCB0aGUgc3dvcmQuClRodXMgdGhlIExPUkQgc2F2ZWQgSGV6ZWtpYWggYW5kIHRoZSBpbmhhYml0YW50cyBvZiBKZXJ1c2FsZW0gZnJvbSB0aGUgaGFuZCBvZiBTZW5uYWNoZXJpYiB0aGUga2luZyBvZiBBc3N5cmlhLCBhbmQgZnJvbSB0aGUgaGFuZCBvZiBhbGwgb3RoZXIsIGFuZCBndWlkZWQgdGhlbSBvbiBldmVyeSBzaWRlLgpBbmQgbWFueSBicm91Z2h0IGdpZnRzIHVudG8gdGhlIExPUkQgdG8gSmVydXNhbGVtLCBhbmQgcHJlc2VudHMgdG8gSGV6ZWtpYWgga2luZyBvZiBKdWRhaDogc28gdGhhdCBoZSB3YXMgbWFnbmlmaWVkIGluIHRoZSBzaWdodCBvZiBhbGwgbmF0aW9ucyBmcm9tIHRoZW5jZWZvcnRoLgpJbiB0aG9zZSBkYXlzIEhlemVraWFoIHdhcyBzaWNrIHRvIHRoZSBkZWF0aCwgYW5kIHByYXllZCB1bnRvIHRoZSBMT1JEOiBhbmQgaGUgc3Bha2UgdW50byBoaW0sIGFuZCBoZSBnYXZlIGhpbSBhIHNpZ24uCkJ1dCBIZXpla2lhaCByZW5kZXJlZCBub3QgYWdhaW4gYWNjb3JkaW5nIHRvIHRoZSBiZW5lZml0IGRvbmUgdW50byBoaW07IGZvciBoaXMgaGVhcnQgd2FzIGxpZnRlZCB1cDogdGhlcmVmb3JlIHRoZXJlIHdhcyB3cmF0aCB1cG9uIGhpbSwgYW5kIHVwb24gSnVkYWggYW5kIEplcnVzYWxlbS4KTm90d2l0aHN0YW5kaW5nIEhlemVraWFoIGh1bWJsZWQgaGltc2VsZiBmb3IgdGhlIHByaWRlIG9mIGhpcyBoZWFydCwgYm90aCBoZSBhbmQgdGhlIGluaGFiaXRhbnRzIG9mIEplcnVzYWxlbSwgc28gdGhhdCB0aGUgd3JhdGggb2YgdGhlIExPUkQgY2FtZSBub3QgdXBvbiB0aGVtIGluIHRoZSBkYXlzIG9mIEhlemVraWFoLgpBbmQgSGV6ZWtpYWggaGFkIGV4Y2VlZGluZyBtdWNoIHJpY2hlcyBhbmQgaG9ub3VyOiBhbmQgaGUgbWFkZSBoaW1zZWxmIHRyZWFzdXJpZXMgZm9yIHNpbHZlciwgYW5kIGZvciBnb2xkLCBhbmQgZm9yIHByZWNpb3VzIHN0b25lcywgYW5kIGZvciBzcGljZXMsIGFuZCBmb3Igc2hpZWxkcywgYW5kIGZvciBhbGwgbWFubmVyIG9mIHBsZWFzYW50IGpld2VsczsKU3RvcmVob3VzZXMgYWxzbyBmb3IgdGhlIGluY3JlYXNlIG9mIGNvcm4sIGFuZCB3aW5lLCBhbmQgb2lsOyBhbmQgc3RhbGxzIGZvciBhbGwgbWFubmVyIG9mIGJlYXN0cywgYW5kIGNvdGVzIGZvciBmbG9ja3MuCk1vcmVvdmVyIGhlIHByb3ZpZGVkIGhpbSBjaXRpZXMsIGFuZCBwb3NzZXNzaW9ucyBvZiBmbG9ja3MgYW5kIGhlcmRzIGluIGFidW5kYW5jZTogZm9yIEdvZCBoYWQgZ2l2ZW4gaGltIHN1YnN0YW5jZSB2ZXJ5IG11Y2guClRoaXMgc2FtZSBIZXpla2lhaCBhbHNvIHN0b3BwZWQgdGhlIHVwcGVyIHdhdGVyY291cnNlIG9mIEdpaG9uLCBhbmQgYnJvdWdodCBpdCBzdHJhaWdodCBkb3duIHRvIHRoZSB3ZXN0IHNpZGUgb2YgdGhlIGNpdHkgb2YgRGF2aWQuIEFuZCBIZXpla2lhaCBwcm9zcGVyZWQgaW4gYWxsIGhpcyB3b3Jrcy4KSG93YmVpdCBpbiB0aGUgYnVzaW5lc3Mgb2YgdGhlIGFtYmFzc2Fkb3JzIG9mIHRoZSBwcmluY2VzIG9mIEJhYnlsb24sIHdobyBzZW50IHVudG8gaGltIHRvIGVucXVpcmUgb2YgdGhlIHdvbmRlciB0aGF0IHdhcyBkb25lIGluIHRoZSBsYW5kLCBHb2QgbGVmdCBoaW0sIHRvIHRyeSBoaW0sIHRoYXQgaGUgbWlnaHQga25vdyBhbGwgdGhhdCB3YXMgaW4gaGlzIGhlYXJ0LgpOb3cgdGhlIHJlc3Qgb2YgdGhlIGFjdHMgb2YgSGV6ZWtpYWgsIGFuZCBoaXMgZ29vZG5lc3MsIGJlaG9sZCwgdGhleSBhcmUgd3JpdHRlbiBpbiB0aGUgdmlzaW9uIG9mIElzYWlhaCB0aGUgcHJvcGhldCwgdGhlIHNvbiBvZiBBbW96LCBhbmQgaW4gdGhlIGJvb2sgb2YgdGhlIGtpbmdzIG9mIEp1ZGFoIGFuZCBJc3JhZWwuCkFuZCBIZXpla2lhaCBzbGVwdCB3aXRoIGhpcyBmYXRoZXJzLCBhbmQgdGhleSBidXJpZWQgaGltIGluIHRoZSBjaGllZmVzdCBvZiB0aGUgc2VwdWxjaHJlcyBvZiB0aGUgc29ucyBvZiBEYXZpZDogYW5kIGFsbCBKdWRhaCBhbmQgdGhlIGluaGFiaXRhbnRzIG9mIEplcnVzYWxlbSBkaWQgaGltIGhvbm91ciBhdCBoaXMgZGVhdGguIEFuZCBNYW5hc3NlaCBoaXMgc29uIHJlaWduZWQgaW4gaGlzIHN0ZWFkLgpNYW5hc3NlaCB3YXMgdHdlbHZlIHllYXJzIG9sZCB3aGVuIGhlIGJlZ2FuIHRvIHJlaWduLCBhbmQgaGUgcmVpZ25lZCBmaWZ0eSBhbmQgZml2ZSB5ZWFycyBpbiBKZXJ1c2FsZW06CkJ1dCBkaWQgdGhhdCB3aGljaCB3YXMgZXZpbCBpbiB0aGUgc2lnaHQgb2YgdGhlIExPUkQsIGxpa2UgdW50byB0aGUgYWJvbWluYXRpb25zIG9mIHRoZSBoZWF0aGVuLCB3aG9tIHRoZSBMT1JEIGhhZCBjYXN0IG91dCBiZWZvcmUgdGhlIGNoaWxkcmVuIG9mIElzcmFlbC4KRm9yIGhlIGJ1aWx0IGFnYWluIHRoZSBoaWdoIHBsYWNlcyB3aGljaCBIZXpla2lhaCBoaXMgZmF0aGVyIGhhZCBicm9rZW4gZG93biwgYW5kIGhlIHJlYXJlZCB1cCBhbHRhcnMgZm9yIEJhYWxpbSwgYW5kIG1hZGUgZ3JvdmVzLCBhbmQgd29yc2hpcHBlZCBhbGwgdGhlIGhvc3Qgb2YgaGVhdmVuLCBhbmQgc2VydmVkIHRoZW0uCkFsc28gaGUgYnVpbHQgYWx0YXJzIGluIHRoZSBob3VzZSBvZiB0aGUgTE9SRCwgd2hlcmVvZiB0aGUgTE9SRCBoYWQgc2FpZCwgSW4gSmVydXNhbGVtIHNoYWxsIG15IG5hbWUgYmUgZm9yIGV2ZXIuCkFuZCBoZSBidWlsdCBhbHRhcnMgZm9yIGFsbCB0aGUgaG9zdCBvZiBoZWF2ZW4gaW4gdGhlIHR3byBjb3VydHMgb2YgdGhlIGhvdXNlIG9mIHRoZSBMT1JELgpBbmQgaGUgY2F1c2VkIGhpcyBjaGlsZHJlbiB0byBwYXNzIHRocm91Z2ggdGhlIGZpcmUgaW4gdGhlIHZhbGxleSBvZiB0aGUgc29uIG9mIEhpbm5vbTogYWxzbyBoZSBvYnNlcnZlZCB0aW1lcywgYW5kIHVzZWQgZW5jaGFudG1lbnRzLCBhbmQgdXNlZCB3aXRjaGNyYWZ0LCBhbmQgZGVhbHQgd2l0aCBhIGZhbWlsaWFyIHNwaXJpdCwgYW5kIHdpdGggd2l6YXJkczogaGUgd3JvdWdodCBtdWNoIGV2aWwgaW4gdGhlIHNpZ2h0IG9mIHRoZSBMT1JELCB0byBwcm92b2tlIGhpbSB0byBhbmdlci4KQW5kIGhlIHNldCBhIGNhcnZlZCBpbWFnZSwgdGhlIGlkb2wgd2hpY2ggaGUgaGFkIG1hZGUsIGluIHRoZSBob3VzZSBvZiBHb2QsIG9mIHdoaWNoIEdvZCBoYWQgc2FpZCB0byBEYXZpZCBhbmQgdG8gU29sb21vbiBoaXMgc29uLCBJbiB0aGlzIGhvdXNlLCBhbmQgaW4gSmVydXNhbGVtLCB3aGljaCBJIGhhdmUgY2hvc2VuIGJlZm9yZSBhbGwgdGhlIHRyaWJlcyBvZiBJc3JhZWwsIHdpbGwgSSBwdXQgbXkgbmFtZSBmb3IgZXZlcjoKTmVpdGhlciB3aWxsIEkgYW55IG1vcmUgcmVtb3ZlIHRoZSBmb290IG9mIElzcmFlbCBmcm9tIG91dCBvZiB0aGUgbGFuZCB3aGljaCBJIGhhdmUgYXBwb2ludGVkIGZvciB5b3VyIGZhdGhlcnM7IHNvIHRoYXQgdGhleSB3aWxsIHRha2UgaGVlZCB0byBkbyBhbGwgdGhhdCBJIGhhdmUgY29tbWFuZGVkIHRoZW0sIGFjY29yZGluZyB0byB0aGUgd2hvbGUgbGF3IGFuZCB0aGUgc3RhdHV0ZXMgYW5kIHRoZSBvcmRpbmFuY2VzIGJ5IHRoZSBoYW5kIG9mIE1vc2VzLgpTbyBNYW5hc3NlaCBtYWRlIEp1ZGFoIGFuZCB0aGUgaW5oYWJpdGFudHMgb2YgSmVydXNhbGVtIHRvIGVyciwgYW5kIHRvIGRvIHdvcnNlIHRoYW4gdGhlIGhlYXRoZW4sIHdob20gdGhlIExPUkQgaGFkIGRlc3Ryb3llZCBiZWZvcmUgdGhlIGNoaWxkcmVuIG9mIElzcmFlbC4KQW5kIHRoZSBMT1JEIHNwYWtlIHRvIE1hbmFzc2VoLCBhbmQgdG8gaGlzIHBlb3BsZTogYnV0IHRoZXkgd291bGQgbm90IGhlYXJrZW4uCldoZXJlZm9yZSB0aGUgTE9SRCBicm91Z2h0IHVwb24gdGhlbSB0aGUgY2FwdGFpbnMgb2YgdGhlIGhvc3Qgb2YgdGhlIGtpbmcgb2YgQXNzeXJpYSwgd2hpY2ggdG9vayBNYW5hc3NlaCBhbW9uZyB0aGUgdGhvcm5zLCBhbmQgYm91bmQgaGltIHdpdGggZmV0dGVycywgYW5kIGNhcnJpZWQgaGltIHRvIEJhYnlsb24uCkFuZCB3aGVuIGhlIHdhcyBpbiBhZmZsaWN0aW9uLCBoZSBiZXNvdWdodCB0aGUgTE9SRCBoaXMgR29kLCBhbmQgaHVtYmxlZCBoaW1zZWxmIGdyZWF0bHkgYmVmb3JlIHRoZSBHb2Qgb2YgaGlzIGZhdGhlcnMsCkFuZCBwcmF5ZWQgdW50byBoaW06IGFuZCBoZSB3YXMgaW50cmVhdGVkIG9mIGhpbSwgYW5kIGhlYXJkIGhpcyBzdXBwbGljYXRpb24sIGFuZCBicm91Z2h0IGhpbSBhZ2FpbiB0byBKZXJ1c2FsZW0gaW50byBoaXMga2luZ2RvbS4gVGhlbiBNYW5hc3NlaCBrbmV3IHRoYXQgdGhlIExPUkQgaGUgd2FzIEdvZC4KTm93IGFmdGVyIHRoaXMgaGUgYnVpbHQgYSB3YWxsIHdpdGhvdXQgdGhlIGNpdHkgb2YgRGF2aWQsIG9uIHRoZSB3ZXN0IHNpZGUgb2YgR2lob24sIGluIHRoZSB2YWxsZXksIGV2ZW4gdG8gdGhlIGVudGVyaW5nIGluIGF0IHRoZSBmaXNoIGdhdGUsIGFuZCBjb21wYXNzZWQgYWJvdXQgT3BoZWwsIGFuZCByYWlzZWQgaXQgdXAgYSB2ZXJ5IGdyZWF0IGhlaWdodCwgYW5kIHB1dCBjYXB0YWlucyBvZiB3YXIgaW4gYWxsIHRoZSBmZW5jZWQgY2l0aWVzIG9mIEp1ZGFoLgpBbmQgaGUgdG9vayBhd2F5IHRoZSBzdHJhbmdlIGdvZHMsIGFuZCB0aGUgaWRvbCBvdXQgb2YgdGhlIGhvdXNlIG9mIHRoZSBMT1JELCBhbmQgYWxsIHRoZSBhbHRhcnMgdGhhdCBoZSBoYWQgYnVpbHQgaW4gdGhlIG1vdW50IG9mIHRoZSBob3VzZSBvZiB0aGUgTE9SRCwgYW5kIGluIEplcnVzYWxlbSwgYW5kIGNhc3QgdGhlbSBvdXQgb2YgdGhlIGNpdHkuCkFuZCBoZSByZXBhaXJlZCB0aGUgYWx0YXIgb2YgdGhlIExPUkQsIGFuZCBzYWNyaWZpY2VkIHRoZXJlb24gcGVhY2Ugb2ZmZXJpbmdzIGFuZCB0aGFuayBvZmZlcmluZ3MsIGFuZCBjb21tYW5kZWQgSnVkYWggdG8gc2VydmUgdGhlIExPUkQgR29kIG9mIElzcmFlbC4KTmV2ZXJ0aGVsZXNzIHRoZSBwZW9wbGUgZGlkIHNhY3JpZmljZSBzdGlsbCBpbiB0aGUgaGlnaCBwbGFjZXMsIHlldCB1bnRvIHRoZSBMT1JEIHRoZWlyIEdvZCBvbmx5LgpOb3cgdGhlIHJlc3Qgb2YgdGhlIGFjdHMgb2YgTWFuYXNzZWgsIGFuZCBoaXMgcHJheWVyIHVudG8gaGlzIEdvZCwgYW5kIHRoZSB3b3JkcyBvZiB0aGUgc2VlcnMgdGhhdCBzcGFrZSB0byBoaW0gaW4gdGhlIG5hbWUgb2YgdGhlIExPUkQgR29kIG9mIElzcmFlbCwgYmVob2xkLCB0aGV5IGFyZSB3cml0dGVuIGluIHRoZSBib29rIG9mIHRoZSBraW5ncyBvZiBJc3JhZWwuCkhpcyBwcmF5ZXIgYWxzbywgYW5kIGhvdyBHb2Qgd2FzIGludHJlYXRlZCBvZiBoaW0sIGFuZCBhbGwgaGlzIHNpbnMsIGFuZCBoaXMgdHJlc3Bhc3MsIGFuZCB0aGUgcGxhY2VzIHdoZXJlaW4gaGUgYnVpbHQgaGlnaCBwbGFjZXMsIGFuZCBzZXQgdXAgZ3JvdmVzIGFuZCBncmF2ZW4gaW1hZ2VzLCBiZWZvcmUgaGUgd2FzIGh1bWJsZWQ6IGJlaG9sZCwgdGhleSBhcmUgd3JpdHRlbiBhbW9uZyB0aGUgc2F5aW5ncyBvZiB0aGUgc2VlcnMuClNvIE1hbmFzc2VoIHNsZXB0IHdpdGggaGlzIGZhdGhlcnMsIGFuZCB0aGV5IGJ1cmllZCBoaW0gaW4gaGlzIG93biBob3VzZTogYW5kIEFtb24gaGlzIHNvbiByZWlnbmVkIGluIGhpcyBzdGVhZC4KQW1vbiB3YXMgdHdvIGFuZCB0d2VudHkgeWVhcnMgb2xkIHdoZW4gaGUgYmVnYW4gdG8gcmVpZ24sIGFuZCByZWlnbmVkIHR3byB5ZWFycyBpbiBKZXJ1c2FsZW0uCkJ1dCBoZSBkaWQgdGhhdCB3aGljaCB3YXMgZXZpbCBpbiB0aGUgc2lnaHQgb2YgdGhlIExPUkQsIGFzIGRpZCBNYW5hc3NlaCBoaXMgZmF0aGVyOiBmb3IgQW1vbiBzYWNyaWZpY2VkIHVudG8gYWxsIHRoZSBjYXJ2ZWQgaW1hZ2VzIHdoaWNoIE1hbmFzc2VoIGhpcyBmYXRoZXIgaGFkIG1hZGUsIGFuZCBzZXJ2ZWQgdGhlbTsKQW5kIGh1bWJsZWQgbm90IGhpbXNlbGYgYmVmb3JlIHRoZSBMT1JELCBhcyBNYW5hc3NlaCBoaXMgZmF0aGVyIGhhZCBodW1ibGVkIGhpbXNlbGY7IGJ1dCBBbW9uIHRyZXNwYXNzZWQgbW9yZSBhbmQgbW9yZS4KQW5kIGhpcyBzZXJ2YW50cyBjb25zcGlyZWQgYWdhaW5zdCBoaW0sIGFuZCBzbGV3IGhpbSBpbiBoaXMgb3duIGhvdXNlLgpCdXQgdGhlIHBlb3BsZSBvZiB0aGUgbGFuZCBzbGV3IGFsbCB0aGVtIHRoYXQgaGFkIGNvbnNwaXJlZCBhZ2FpbnN0IGtpbmcgQW1vbjsgYW5kIHRoZSBwZW9wbGUgb2YgdGhlIGxhbmQgbWFkZSBKb3NpYWggaGlzIHNvbiBraW5nIGluIGhpcyBzdGVhZC4KSm9zaWFoIHdhcyBlaWdodCB5ZWFycyBvbGQgd2hlbiBoZSBiZWdhbiB0byByZWlnbiwgYW5kIGhlIHJlaWduZWQgaW4gSmVydXNhbGVtIG9uZSBhbmQgdGhpcnR5IHllYXJzLgpBbmQgaGUgZGlkIHRoYXQgd2hpY2ggd2FzIHJpZ2h0IGluIHRoZSBzaWdodCBvZiB0aGUgTE9SRCwgYW5kIHdhbGtlZCBpbiB0aGUgd2F5cyBvZiBEYXZpZCBoaXMgZmF0aGVyLCBhbmQgZGVjbGluZWQgbmVpdGhlciB0byB0aGUgcmlnaHQgaGFuZCwgbm9yIHRvIHRoZSBsZWZ0LgpGb3IgaW4gdGhlIGVpZ2h0aCB5ZWFyIG9mIGhpcyByZWlnbiwgd2hpbGUgaGUgd2FzIHlldCB5b3VuZywgaGUgYmVnYW4gdG8gc2VlayBhZnRlciB0aGUgR29kIG9mIERhdmlkIGhpcyBmYXRoZXI6IGFuZCBpbiB0aGUgdHdlbGZ0aCB5ZWFyIGhlIGJlZ2FuIHRvIHB1cmdlIEp1ZGFoIGFuZCBKZXJ1c2FsZW0gZnJvbSB0aGUgaGlnaCBwbGFjZXMsIGFuZCB0aGUgZ3JvdmVzLCBhbmQgdGhlIGNhcnZlZCBpbWFnZXMsIGFuZCB0aGUgbW9sdGVuIGltYWdlcy4KQW5kIHRoZXkgYnJha2UgZG93biB0aGUgYWx0YXJzIG9mIEJhYWxpbSBpbiBoaXMgcHJlc2VuY2U7IGFuZCB0aGUgaW1hZ2VzLCB0aGF0IHdlcmUgb24gaGlnaCBhYm92ZSB0aGVtLCBoZSBjdXQgZG93bjsgYW5kIHRoZSBncm92ZXMsIGFuZCB0aGUgY2FydmVkIGltYWdlcywgYW5kIHRoZSBtb2x0ZW4gaW1hZ2VzLCBoZSBicmFrZSBpbiBwaWVjZXMsIGFuZCBtYWRlIGR1c3Qgb2YgdGhlbSwgYW5kIHN0cm93ZWQgaXQgdXBvbiB0aGUgZ3JhdmVzIG9mIHRoZW0gdGhhdCBoYWQgc2FjcmlmaWNlZCB1bnRvIHRoZW0uCkFuZCBoZSBidXJudCB0aGUgYm9uZXMgb2YgdGhlIHByaWVzdHMgdXBvbiB0aGVpciBhbHRhcnMsIGFuZCBjbGVhbnNlZCBKdWRhaCBhbmQgSmVydXNhbGVtLgpBbmQgc28gZGlkIGhlIGluIHRoZSBjaXRpZXMgb2YgTWFuYXNzZWgsIGFuZCBFcGhyYWltLCBhbmQgU2ltZW9uLCBldmVuIHVudG8gTmFwaHRhbGksIHdpdGggdGhlaXIgbWF0dG9ja3Mgcm91bmQgYWJvdXQuCkFuZCB3aGVuIGhlIGhhZCBicm9rZW4gZG93biB0aGUgYWx0YXJzIGFuZCB0aGUgZ3JvdmVzLCBhbmQgaGFkIGJlYXRlbiB0aGUgZ3JhdmVuIGltYWdlcyBpbnRvIHBvd2RlciwgYW5kIGN1dCBkb3duIGFsbCB0aGUgaWRvbHMgdGhyb3VnaG91dCBhbGwgdGhlIGxhbmQgb2YgSXNyYWVsLCBoZSByZXR1cm5lZCB0byBKZXJ1c2FsZW0uCk5vdyBpbiB0aGUgZWlnaHRlZW50aCB5ZWFyIG9mIGhpcyByZWlnbiwgd2hlbiBoZSBoYWQgcHVyZ2VkIHRoZSBsYW5kLCBhbmQgdGhlIGhvdXNlLCBoZSBzZW50IFNoYXBoYW4gdGhlIHNvbiBvZiBBemFsaWFoLCBhbmQgTWFhc2VpYWggdGhlIGdvdmVybm9yIG9mIHRoZSBjaXR5LCBhbmQgSm9haCB0aGUgc29uIG9mIEpvYWhheiB0aGUgcmVjb3JkZXIsIHRvIHJlcGFpciB0aGUgaG91c2Ugb2YgdGhlIExPUkQgaGlzIEdvZC4KQW5kIHdoZW4gdGhleSBjYW1lIHRvIEhpbGtpYWggdGhlIGhpZ2ggcHJpZXN0LCB0aGV5IGRlbGl2ZXJlZCB0aGUgbW9uZXkgdGhhdCB3YXMgYnJvdWdodCBpbnRvIHRoZSBob3VzZSBvZiBHb2QsIHdoaWNoIHRoZSBMZXZpdGVzIHRoYXQga2VwdCB0aGUgZG9vcnMgaGFkIGdhdGhlcmVkIG9mIHRoZSBoYW5kIG9mIE1hbmFzc2VoIGFuZCBFcGhyYWltLCBhbmQgb2YgYWxsIHRoZSByZW1uYW50IG9mIElzcmFlbCwgYW5kIG9mIGFsbCBKdWRhaCBhbmQgQmVuamFtaW47IGFuZCB0aGV5IHJldHVybmVkIHRvIEplcnVzYWxlbS4KQW5kIHRoZXkgcHV0IGl0IGluIHRoZSBoYW5kIG9mIHRoZSB3b3JrbWVuIHRoYXQgaGFkIHRoZSBvdmVyc2lnaHQgb2YgdGhlIGhvdXNlIG9mIHRoZSBMT1JELCBhbmQgdGhleSBnYXZlIGl0IHRvIHRoZSB3b3JrbWVuIHRoYXQgd3JvdWdodCBpbiB0aGUgaG91c2Ugb2YgdGhlIExPUkQsIHRvIHJlcGFpciBhbmQgYW1lbmQgdGhlIGhvdXNlOgpFdmVuIHRvIHRoZSBhcnRpZmljZXJzIGFuZCBidWlsZGVycyBnYXZlIHRoZXkgaXQsIHRvIGJ1eSBoZXduIHN0b25lLCBhbmQgdGltYmVyIGZvciBjb3VwbGluZ3MsIGFuZCB0byBmbG9vciB0aGUgaG91c2VzIHdoaWNoIHRoZSBraW5ncyBvZiBKdWRhaCBoYWQgZGVzdHJveWVkLgpBbmQgdGhlIG1lbiBkaWQgdGhlIHdvcmsgZmFpdGhmdWxseTogYW5kIHRoZSBvdmVyc2VlcnMgb2YgdGhlbSB3ZXJlIEphaGF0aCBhbmQgT2JhZGlhaCwgdGhlIExldml0ZXMsIG9mIHRoZSBzb25zIG9mIE1lcmFyaTsgYW5kIFplY2hhcmlhaCBhbmQgTWVzaHVsbGFtLCBvZiB0aGUgc29ucyBvZiB0aGUgS29oYXRoaXRlcywgdG8gc2V0IGl0IGZvcndhcmQ7IGFuZCBvdGhlciBvZiB0aGUgTGV2aXRlcywgYWxsIHRoYXQgY291bGQgc2tpbGwgb2YgaW5zdHJ1bWVudHMgb2YgbXVzaWNrLgpBbHNvIHRoZXkgd2VyZSBvdmVyIHRoZSBiZWFyZXJzIG9mIGJ1cmRlbnMsIGFuZCB3ZXJlIG92ZXJzZWVycyBvZiBhbGwgdGhhdCB3cm91Z2h0IHRoZSB3b3JrIGluIGFueSBtYW5uZXIgb2Ygc2VydmljZTogYW5kIG9mIHRoZSBMZXZpdGVzIHRoZXJlIHdlcmUgc2NyaWJlcywgYW5kIG9mZmljZXJzLCBhbmQgcG9ydGVycy4KQW5kIHdoZW4gdGhleSBicm91Z2h0IG91dCB0aGUgbW9uZXkgdGhhdCB3YXMgYnJvdWdodCBpbnRvIHRoZSBob3VzZSBvZiB0aGUgTE9SRCwgSGlsa2lhaCB0aGUgcHJpZXN0IGZvdW5kIGEgYm9vayBvZiB0aGUgbGF3IG9mIHRoZSBMT1JEIGdpdmVuIGJ5IE1vc2VzLgpBbmQgSGlsa2lhaCBhbnN3ZXJlZCBhbmQgc2FpZCB0byBTaGFwaGFuIHRoZSBzY3JpYmUsIEkgaGF2ZSBmb3VuZCB0aGUgYm9vayBvZiB0aGUgbGF3IGluIHRoZSBob3VzZSBvZiB0aGUgTE9SRC4gQW5kIEhpbGtpYWggZGVsaXZlcmVkIHRoZSBib29rIHRvIFNoYXBoYW4uCkFuZCBTaGFwaGFuIGNhcnJpZWQgdGhlIGJvb2sgdG8gdGhlIGtpbmcsIGFuZCBicm91Z2h0IHRoZSBraW5nIHdvcmQgYmFjayBhZ2Fpbiwgc2F5aW5nLCBBbGwgdGhhdCB3YXMgY29tbWl0dGVkIHRvIHRoeSBzZXJ2YW50cywgdGhleSBkbyBpdC4KQW5kIHRoZXkgaGF2ZSBnYXRoZXJlZCB0b2dldGhlciB0aGUgbW9uZXkgdGhhdCB3YXMgZm91bmQgaW4gdGhlIGhvdXNlIG9mIHRoZSBMT1JELCBhbmQgaGF2ZSBkZWxpdmVyZWQgaXQgaW50byB0aGUgaGFuZCBvZiB0aGUgb3ZlcnNlZXJzLCBhbmQgdG8gdGhlIGhhbmQgb2YgdGhlIHdvcmttZW4uClRoZW4gU2hhcGhhbiB0aGUgc2NyaWJlIHRvbGQgdGhlIGtpbmcsIHNheWluZywgSGlsa2lhaCB0aGUgcHJpZXN0IGhhdGggZ2l2ZW4gbWUgYSBib29rLiBBbmQgU2hhcGhhbiByZWFkIGl0IGJlZm9yZSB0aGUga2luZy4KQW5kIGl0IGNhbWUgdG8gcGFzcywgd2hlbiB0aGUga2luZyBoYWQgaGVhcmQgdGhlIHdvcmRzIG9mIHRoZSBsYXcsIHRoYXQgaGUgcmVudCBoaXMgY2xvdGhlcy4KQW5kIHRoZSBraW5nIGNvbW1hbmRlZCBIaWxraWFoLCBhbmQgQWhpa2FtIHRoZSBzb24gb2YgU2hhcGhhbiwgYW5kIEFiZG9uIHRoZSBzb24gb2YgTWljYWgsIGFuZCBTaGFwaGFuIHRoZSBzY3JpYmUsIGFuZCBBc2FpYWggYSBzZXJ2YW50IG9mIHRoZSBraW5nJ3MsIHNheWluZywKR28sIGVucXVpcmUgb2YgdGhlIExPUkQgZm9yIG1lLCBhbmQgZm9yIHRoZW0gdGhhdCBhcmUgbGVmdCBpbiBJc3JhZWwgYW5kIGluIEp1ZGFoLCBjb25jZXJuaW5nIHRoZSB3b3JkcyBvZiB0aGUgYm9vayB0aGF0IGlzIGZvdW5kOiBmb3IgZ3JlYXQgaXMgdGhlIHdyYXRoIG9mIHRoZSBMT1JEIHRoYXQgaXMgcG91cmVkIG91dCB1cG9uIHVzLCBiZWNhdXNlIG91ciBmYXRoZXJzIGhhdmUgbm90IGtlcHQgdGhlIHdvcmQgb2YgdGhlIExPUkQsIHRvIGRvIGFmdGVyIGFsbCB0aGF0IGlzIHdyaXR0ZW4gaW4gdGhpcyBib29rLgpBbmQgSGlsa2lhaCwgYW5kIHRoZXkgdGhhdCB0aGUga2luZyBoYWQgYXBwb2ludGVkLCB3ZW50IHRvIEh1bGRhaCB0aGUgcHJvcGhldGVzcywgdGhlIHdpZmUgb2YgU2hhbGx1bSB0aGUgc29uIG9mIFRpa3ZhdGgsIHRoZSBzb24gb2YgSGFzcmFoLCBrZWVwZXIgb2YgdGhlIHdhcmRyb2JlOyAobm93IHNoZSBkd2VsdCBpbiBKZXJ1c2FsZW0gaW4gdGhlIGNvbGxlZ2U6KSBhbmQgdGhleSBzcGFrZSB0byBoZXIgdG8gdGhhdCBlZmZlY3QuCkFuZCBzaGUgYW5zd2VyZWQgdGhlbSwgVGh1cyBzYWl0aCB0aGUgTE9SRCBHb2Qgb2YgSXNyYWVsLCBUZWxsIHllIHRoZSBtYW4gdGhhdCBzZW50IHlvdSB0byBtZSwKVGh1cyBzYWl0aCB0aGUgTE9SRCwgQmVob2xkLCBJIHdpbGwgYnJpbmcgZXZpbCB1cG9uIHRoaXMgcGxhY2UsIGFuZCB1cG9uIHRoZSBpbmhhYml0YW50cyB0aGVyZW9mLCBldmVuIGFsbCB0aGUgY3Vyc2VzIHRoYXQgYXJlIHdyaXR0ZW4gaW4gdGhlIGJvb2sgd2hpY2ggdGhleSBoYXZlIHJlYWQgYmVmb3JlIHRoZSBraW5nIG9mIEp1ZGFoOgpCZWNhdXNlIHRoZXkgaGF2ZSBmb3JzYWtlbiBtZSwgYW5kIGhhdmUgYnVybmVkIGluY2Vuc2UgdW50byBvdGhlciBnb2RzLCB0aGF0IHRoZXkgbWlnaHQgcHJvdm9rZSBtZSB0byBhbmdlciB3aXRoIGFsbCB0aGUgd29ya3Mgb2YgdGhlaXIgaGFuZHM7IHRoZXJlZm9yZSBteSB3cmF0aCBzaGFsbCBiZSBwb3VyZWQgb3V0IHVwb24gdGhpcyBwbGFjZSwgYW5kIHNoYWxsIG5vdCBiZSBxdWVuY2hlZC4KQW5kIGFzIGZvciB0aGUga2luZyBvZiBKdWRhaCwgd2hvIHNlbnQgeW91IHRvIGVucXVpcmUgb2YgdGhlIExPUkQsIHNvIHNoYWxsIHllIHNheSB1bnRvIGhpbSwgVGh1cyBzYWl0aCB0aGUgTE9SRCBHb2Qgb2YgSXNyYWVsIGNvbmNlcm5pbmcgdGhlIHdvcmRzIHdoaWNoIHRob3UgaGFzdCBoZWFyZDsKQmVjYXVzZSB0aGluZSBoZWFydCB3YXMgdGVuZGVyLCBhbmQgdGhvdSBkaWRzdCBodW1ibGUgdGh5c2VsZiBiZWZvcmUgR29kLCB3aGVuIHRob3UgaGVhcmRlc3QgaGlzIHdvcmRzIGFnYWluc3QgdGhpcyBwbGFjZSwgYW5kIGFnYWluc3QgdGhlIGluaGFiaXRhbnRzIHRoZXJlb2YsIGFuZCBodW1ibGVkc3QgdGh5c2VsZiBiZWZvcmUgbWUsIGFuZCBkaWRzdCByZW5kIHRoeSBjbG90aGVzLCBhbmQgd2VlcCBiZWZvcmUgbWU7IEkgaGF2ZSBldmVuIGhlYXJkIHRoZWUgYWxzbywgc2FpdGggdGhlIExPUkQuCkJlaG9sZCwgSSB3aWxsIGdhdGhlciB0aGVlIHRvIHRoeSBmYXRoZXJzLCBhbmQgdGhvdSBzaGFsdCBiZSBnYXRoZXJlZCB0byB0aHkgZ3JhdmUgaW4gcGVhY2UsIG5laXRoZXIgc2hhbGwgdGhpbmUgZXllcyBzZWUgYWxsIHRoZSBldmlsIHRoYXQgSSB3aWxsIGJyaW5nIHVwb24gdGhpcyBwbGFjZSwgYW5kIHVwb24gdGhlIGluaGFiaXRhbnRzIG9mIHRoZSBzYW1lLiBTbyB0aGV5IGJyb3VnaHQgdGhlIGtpbmcgd29yZCBhZ2Fpbi4KVGhlbiB0aGUga2luZyBzZW50IGFuZCBnYXRoZXJlZCB0b2dldGhlciBhbGwgdGhlIGVsZGVycyBvZiBKdWRhaCBhbmQgSmVydXNhbGVtLgpBbmQgdGhlIGtpbmcgd2VudCB1cCBpbnRvIHRoZSBob3VzZSBvZiB0aGUgTE9SRCwgYW5kIGFsbCB0aGUgbWVuIG9mIEp1ZGFoLCBhbmQgdGhlIGluaGFiaXRhbnRzIG9mIEplcnVzYWxlbSwgYW5kIHRoZSBwcmllc3RzLCBhbmQgdGhlIExldml0ZXMsIGFuZCBhbGwgdGhlIHBlb3BsZSwgZ3JlYXQgYW5kIHNtYWxsOiBhbmQgaGUgcmVhZCBpbiB0aGVpciBlYXJzIGFsbCB0aGUgd29yZHMgb2YgdGhlIGJvb2sgb2YgdGhlIGNvdmVuYW50IHRoYXQgd2FzIGZvdW5kIGluIHRoZSBob3VzZSBvZiB0aGUgTE9SRC4KQW5kIHRoZSBraW5nIHN0b29kIGluIGhpcyBwbGFjZSwgYW5kIG1hZGUgYSBjb3ZlbmFudCBiZWZvcmUgdGhlIExPUkQsIHRvIHdhbGsgYWZ0ZXIgdGhlIExPUkQsIGFuZCB0byBrZWVwIGhpcyBjb21tYW5kbWVudHMsIGFuZCBoaXMgdGVzdGltb25pZXMsIGFuZCBoaXMgc3RhdHV0ZXMsIHdpdGggYWxsIGhpcyBoZWFydCwgYW5kIHdpdGggYWxsIGhpcyBzb3VsLCB0byBwZXJmb3JtIHRoZSB3b3JkcyBvZiB0aGUgY292ZW5hbnQgd2hpY2ggYXJlIHdyaXR0ZW4gaW4gdGhpcyBib29rLgpBbmQgaGUgY2F1c2VkIGFsbCB0aGF0IHdlcmUgcHJlc2VudCBpbiBKZXJ1c2FsZW0gYW5kIEJlbmphbWluIHRvIHN0YW5kIHRvIGl0LiBBbmQgdGhlIGluaGFiaXRhbnRzIG9mIEplcnVzYWxlbSBkaWQgYWNjb3JkaW5nIHRvIHRoZSBjb3ZlbmFudCBvZiBHb2QsIHRoZSBHb2Qgb2YgdGhlaXIgZmF0aGVycy4KQW5kIEpvc2lhaCB0b29rIGF3YXkgYWxsIHRoZSBhYm9taW5hdGlvbnMgb3V0IG9mIGFsbCB0aGUgY291bnRyaWVzIHRoYXQgcGVydGFpbmVkIHRvIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIGFuZCBtYWRlIGFsbCB0aGF0IHdlcmUgcHJlc2VudCBpbiBJc3JhZWwgdG8gc2VydmUsIGV2ZW4gdG8gc2VydmUgdGhlIExPUkQgdGhlaXIgR29kLiBBbmQgYWxsIGhpcyBkYXlzIHRoZXkgZGVwYXJ0ZWQgbm90IGZyb20gZm9sbG93aW5nIHRoZSBMT1JELCB0aGUgR29kIG9mIHRoZWlyIGZhdGhlcnMuCk1vcmVvdmVyIEpvc2lhaCBrZXB0IGEgcGFzc292ZXIgdW50byB0aGUgTE9SRCBpbiBKZXJ1c2FsZW06IGFuZCB0aGV5IGtpbGxlZCB0aGUgcGFzc292ZXIgb24gdGhlIGZvdXJ0ZWVudGggZGF5IG9mIHRoZSBmaXJzdCBtb250aC4KQW5kIGhlIHNldCB0aGUgcHJpZXN0cyBpbiB0aGVpciBjaGFyZ2VzLCBhbmQgZW5jb3VyYWdlZCB0aGVtIHRvIHRoZSBzZXJ2aWNlIG9mIHRoZSBob3VzZSBvZiB0aGUgTE9SRCwKQW5kIHNhaWQgdW50byB0aGUgTGV2aXRlcyB0aGF0IHRhdWdodCBhbGwgSXNyYWVsLCB3aGljaCB3ZXJlIGhvbHkgdW50byB0aGUgTE9SRCwgUHV0IHRoZSBob2x5IGFyayBpbiB0aGUgaG91c2Ugd2hpY2ggU29sb21vbiB0aGUgc29uIG9mIERhdmlkIGtpbmcgb2YgSXNyYWVsIGRpZCBidWlsZDsgaXQgc2hhbGwgbm90IGJlIGEgYnVyZGVuIHVwb24geW91ciBzaG91bGRlcnM6IHNlcnZlIG5vdyB0aGUgTE9SRCB5b3VyIEdvZCwgYW5kIGhpcyBwZW9wbGUgSXNyYWVsLApBbmQgcHJlcGFyZSB5b3Vyc2VsdmVzIGJ5IHRoZSBob3VzZXMgb2YgeW91ciBmYXRoZXJzLCBhZnRlciB5b3VyIGNvdXJzZXMsIGFjY29yZGluZyB0byB0aGUgd3JpdGluZyBvZiBEYXZpZCBraW5nIG9mIElzcmFlbCwgYW5kIGFjY29yZGluZyB0byB0aGUgd3JpdGluZyBvZiBTb2xvbW9uIGhpcyBzb24uCkFuZCBzdGFuZCBpbiB0aGUgaG9seSBwbGFjZSBhY2NvcmRpbmcgdG8gdGhlIGRpdmlzaW9ucyBvZiB0aGUgZmFtaWxpZXMgb2YgdGhlIGZhdGhlcnMgb2YgeW91ciBicmV0aHJlbiB0aGUgcGVvcGxlLCBhbmQgYWZ0ZXIgdGhlIGRpdmlzaW9uIG9mIHRoZSBmYW1pbGllcyBvZiB0aGUgTGV2aXRlcy4KU28ga2lsbCB0aGUgcGFzc292ZXIsIGFuZCBzYW5jdGlmeSB5b3Vyc2VsdmVzLCBhbmQgcHJlcGFyZSB5b3VyIGJyZXRocmVuLCB0aGF0IHRoZXkgbWF5IGRvIGFjY29yZGluZyB0byB0aGUgd29yZCBvZiB0aGUgTE9SRCBieSB0aGUgaGFuZCBvZiBNb3Nlcy4KQW5kIEpvc2lhaCBnYXZlIHRvIHRoZSBwZW9wbGUsIG9mIHRoZSBmbG9jaywgbGFtYnMgYW5kIGtpZHMsIGFsbCBmb3IgdGhlIHBhc3NvdmVyIG9mZmVyaW5ncywgZm9yIGFsbCB0aGF0IHdlcmUgcHJlc2VudCwgdG8gdGhlIG51bWJlciBvZiB0aGlydHkgdGhvdXNhbmQsIGFuZCB0aHJlZSB0aG91c2FuZCBidWxsb2NrczogdGhlc2Ugd2VyZSBvZiB0aGUga2luZydzIHN1YnN0YW5jZS4KQW5kIGhpcyBwcmluY2VzIGdhdmUgd2lsbGluZ2x5IHVudG8gdGhlIHBlb3BsZSwgdG8gdGhlIHByaWVzdHMsIGFuZCB0byB0aGUgTGV2aXRlczogSGlsa2lhaCBhbmQgWmVjaGFyaWFoIGFuZCBKZWhpZWwsIHJ1bGVycyBvZiB0aGUgaG91c2Ugb2YgR29kLCBnYXZlIHVudG8gdGhlIHByaWVzdHMgZm9yIHRoZSBwYXNzb3ZlciBvZmZlcmluZ3MgdHdvIHRob3VzYW5kIGFuZCBzaXggaHVuZHJlZCBzbWFsbCBjYXR0bGUgYW5kIHRocmVlIGh1bmRyZWQgb3hlbi4KQ29uYW5pYWggYWxzbywgYW5kIFNoZW1haWFoIGFuZCBOZXRoYW5lZWwsIGhpcyBicmV0aHJlbiwgYW5kIEhhc2hhYmlhaCBhbmQgSmVpZWwgYW5kIEpvemFiYWQsIGNoaWVmIG9mIHRoZSBMZXZpdGVzLCBnYXZlIHVudG8gdGhlIExldml0ZXMgZm9yIHBhc3NvdmVyIG9mZmVyaW5ncyBmaXZlIHRob3VzYW5kIHNtYWxsIGNhdHRsZSwgYW5kIGZpdmUgaHVuZHJlZCBveGVuLgpTbyB0aGUgc2VydmljZSB3YXMgcHJlcGFyZWQsIGFuZCB0aGUgcHJpZXN0cyBzdG9vZCBpbiB0aGVpciBwbGFjZSwgYW5kIHRoZSBMZXZpdGVzIGluIHRoZWlyIGNvdXJzZXMsIGFjY29yZGluZyB0byB0aGUga2luZydzIGNvbW1hbmRtZW50LgpBbmQgdGhleSBraWxsZWQgdGhlIHBhc3NvdmVyLCBhbmQgdGhlIHByaWVzdHMgc3ByaW5rbGVkIHRoZSBibG9vZCBmcm9tIHRoZWlyIGhhbmRzLCBhbmQgdGhlIExldml0ZXMgZmxheWVkIHRoZW0uCkFuZCB0aGV5IHJlbW92ZWQgdGhlIGJ1cm50IG9mZmVyaW5ncywgdGhhdCB0aGV5IG1pZ2h0IGdpdmUgYWNjb3JkaW5nIHRvIHRoZSBkaXZpc2lvbnMgb2YgdGhlIGZhbWlsaWVzIG9mIHRoZSBwZW9wbGUsIHRvIG9mZmVyIHVudG8gdGhlIExPUkQsIGFzIGl0IGlzIHdyaXR0ZW4gaW4gdGhlIGJvb2sgb2YgTW9zZXMuIEFuZCBzbyBkaWQgdGhleSB3aXRoIHRoZSBveGVuLgpBbmQgdGhleSByb2FzdGVkIHRoZSBwYXNzb3ZlciB3aXRoIGZpcmUgYWNjb3JkaW5nIHRvIHRoZSBvcmRpbmFuY2U6IGJ1dCB0aGUgb3RoZXIgaG9seSBvZmZlcmluZ3Mgc29kIHRoZXkgaW4gcG90cywgYW5kIGluIGNhbGRyb25zLCBhbmQgaW4gcGFucywgYW5kIGRpdmlkZWQgdGhlbSBzcGVlZGlseSBhbW9uZyBhbGwgdGhlIHBlb3BsZS4KQW5kIGFmdGVyd2FyZCB0aGV5IG1hZGUgcmVhZHkgZm9yIHRoZW1zZWx2ZXMsIGFuZCBmb3IgdGhlIHByaWVzdHM6IGJlY2F1c2UgdGhlIHByaWVzdHMgdGhlIHNvbnMgb2YgQWFyb24gd2VyZSBidXNpZWQgaW4gb2ZmZXJpbmcgb2YgYnVybnQgb2ZmZXJpbmdzIGFuZCB0aGUgZmF0IHVudGlsIG5pZ2h0OyB0aGVyZWZvcmUgdGhlIExldml0ZXMgcHJlcGFyZWQgZm9yIHRoZW1zZWx2ZXMsIGFuZCBmb3IgdGhlIHByaWVzdHMgdGhlIHNvbnMgb2YgQWFyb24uCkFuZCB0aGUgc2luZ2VycyB0aGUgc29ucyBvZiBBc2FwaCB3ZXJlIGluIHRoZWlyIHBsYWNlLCBhY2NvcmRpbmcgdG8gdGhlIGNvbW1hbmRtZW50IG9mIERhdmlkLCBhbmQgQXNhcGgsIGFuZCBIZW1hbiwgYW5kIEplZHV0aHVuIHRoZSBraW5nJ3Mgc2VlcjsgYW5kIHRoZSBwb3J0ZXJzIHdhaXRlZCBhdCBldmVyeSBnYXRlOyB0aGV5IG1pZ2h0IG5vdCBkZXBhcnQgZnJvbSB0aGVpciBzZXJ2aWNlOyBmb3IgdGhlaXIgYnJldGhyZW4gdGhlIExldml0ZXMgcHJlcGFyZWQgZm9yIHRoZW0uClNvIGFsbCB0aGUgc2VydmljZSBvZiB0aGUgTE9SRCB3YXMgcHJlcGFyZWQgdGhlIHNhbWUgZGF5LCB0byBrZWVwIHRoZSBwYXNzb3ZlciwgYW5kIHRvIG9mZmVyIGJ1cm50IG9mZmVyaW5ncyB1cG9uIHRoZSBhbHRhciBvZiB0aGUgTE9SRCwgYWNjb3JkaW5nIHRvIHRoZSBjb21tYW5kbWVudCBvZiBraW5nIEpvc2lhaC4KQW5kIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgdGhhdCB3ZXJlIHByZXNlbnQga2VwdCB0aGUgcGFzc292ZXIgYXQgdGhhdCB0aW1lLCBhbmQgdGhlIGZlYXN0IG9mIHVubGVhdmVuZWQgYnJlYWQgc2V2ZW4gZGF5cy4KQW5kIHRoZXJlIHdhcyBubyBwYXNzb3ZlciBsaWtlIHRvIHRoYXQga2VwdCBpbiBJc3JhZWwgZnJvbSB0aGUgZGF5cyBvZiBTYW11ZWwgdGhlIHByb3BoZXQ7IG5laXRoZXIgZGlkIGFsbCB0aGUga2luZ3Mgb2YgSXNyYWVsIGtlZXAgc3VjaCBhIHBhc3NvdmVyIGFzIEpvc2lhaCBrZXB0LCBhbmQgdGhlIHByaWVzdHMsIGFuZCB0aGUgTGV2aXRlcywgYW5kIGFsbCBKdWRhaCBhbmQgSXNyYWVsIHRoYXQgd2VyZSBwcmVzZW50LCBhbmQgdGhlIGluaGFiaXRhbnRzIG9mIEplcnVzYWxlbS4KSW4gdGhlIGVpZ2h0ZWVudGggeWVhciBvZiB0aGUgcmVpZ24gb2YgSm9zaWFoIHdhcyB0aGlzIHBhc3NvdmVyIGtlcHQuCkFmdGVyIGFsbCB0aGlzLCB3aGVuIEpvc2lhaCBoYWQgcHJlcGFyZWQgdGhlIHRlbXBsZSwgTmVjaG8ga2luZyBvZiBFZ3lwdCBjYW1lIHVwIHRvIGZpZ2h0IGFnYWluc3QgQ2hhcmNoZW1pc2ggYnkgRXVwaHJhdGVzOiBhbmQgSm9zaWFoIHdlbnQgb3V0IGFnYWluc3QgaGltLgpCdXQgaGUgc2VudCBhbWJhc3NhZG9ycyB0byBoaW0sIHNheWluZywgV2hhdCBoYXZlIEkgdG8gZG8gd2l0aCB0aGVlLCB0aG91IGtpbmcgb2YgSnVkYWg/IEkgY29tZSBub3QgYWdhaW5zdCB0aGVlIHRoaXMgZGF5LCBidXQgYWdhaW5zdCB0aGUgaG91c2Ugd2hlcmV3aXRoIEkgaGF2ZSB3YXI6IGZvciBHb2QgY29tbWFuZGVkIG1lIHRvIG1ha2UgaGFzdGU6IGZvcmJlYXIgdGhlZSBmcm9tIG1lZGRsaW5nIHdpdGggR29kLCB3aG8gaXMgd2l0aCBtZSwgdGhhdCBoZSBkZXN0cm95IHRoZWUgbm90LgpOZXZlcnRoZWxlc3MgSm9zaWFoIHdvdWxkIG5vdCB0dXJuIGhpcyBmYWNlIGZyb20gaGltLCBidXQgZGlzZ3Vpc2VkIGhpbXNlbGYsIHRoYXQgaGUgbWlnaHQgZmlnaHQgd2l0aCBoaW0sIGFuZCBoZWFya2VuZWQgbm90IHVudG8gdGhlIHdvcmRzIG9mIE5lY2hvIGZyb20gdGhlIG1vdXRoIG9mIEdvZCwgYW5kIGNhbWUgdG8gZmlnaHQgaW4gdGhlIHZhbGxleSBvZiBNZWdpZGRvLgpBbmQgdGhlIGFyY2hlcnMgc2hvdCBhdCBraW5nIEpvc2lhaDsgYW5kIHRoZSBraW5nIHNhaWQgdG8gaGlzIHNlcnZhbnRzLCBIYXZlIG1lIGF3YXk7IGZvciBJIGFtIHNvcmUgd291bmRlZC4KSGlzIHNlcnZhbnRzIHRoZXJlZm9yZSB0b29rIGhpbSBvdXQgb2YgdGhhdCBjaGFyaW90LCBhbmQgcHV0IGhpbSBpbiB0aGUgc2Vjb25kIGNoYXJpb3QgdGhhdCBoZSBoYWQ7IGFuZCB0aGV5IGJyb3VnaHQgaGltIHRvIEplcnVzYWxlbSwgYW5kIGhlIGRpZWQsIGFuZCB3YXMgYnVyaWVkIGluIG9uZSBvZiB0aGUgc2VwdWxjaHJlcyBvZiBoaXMgZmF0aGVycy4gQW5kIGFsbCBKdWRhaCBhbmQgSmVydXNhbGVtIG1vdXJuZWQgZm9yIEpvc2lhaC4KQW5kIEplcmVtaWFoIGxhbWVudGVkIGZvciBKb3NpYWg6IGFuZCBhbGwgdGhlIHNpbmdpbmcgbWVuIGFuZCB0aGUgc2luZ2luZyB3b21lbiBzcGFrZSBvZiBKb3NpYWggaW4gdGhlaXIgbGFtZW50YXRpb25zIHRvIHRoaXMgZGF5LCBhbmQgbWFkZSB0aGVtIGFuIG9yZGluYW5jZSBpbiBJc3JhZWw6IGFuZCwgYmVob2xkLCB0aGV5IGFyZSB3cml0dGVuIGluIHRoZSBsYW1lbnRhdGlvbnMuCk5vdyB0aGUgcmVzdCBvZiB0aGUgYWN0cyBvZiBKb3NpYWgsIGFuZCBoaXMgZ29vZG5lc3MsIGFjY29yZGluZyB0byB0aGF0IHdoaWNoIHdhcyB3cml0dGVuIGluIHRoZSBsYXcgb2YgdGhlIExPUkQsCkFuZCBoaXMgZGVlZHMsIGZpcnN0IGFuZCBsYXN0LCBiZWhvbGQsIHRoZXkgYXJlIHdyaXR0ZW4gaW4gdGhlIGJvb2sgb2YgdGhlIGtpbmdzIG9mIElzcmFlbCBhbmQgSnVkYWguClRoZW4gdGhlIHBlb3BsZSBvZiB0aGUgbGFuZCB0b29rIEplaG9haGF6IHRoZSBzb24gb2YgSm9zaWFoLCBhbmQgbWFkZSBoaW0ga2luZyBpbiBoaXMgZmF0aGVyJ3Mgc3RlYWQgaW4gSmVydXNhbGVtLgpKZWhvYWhheiB3YXMgdHdlbnR5IGFuZCB0aHJlZSB5ZWFycyBvbGQgd2hlbiBoZSBiZWdhbiB0byByZWlnbiwgYW5kIGhlIHJlaWduZWQgdGhyZWUgbW9udGhzIGluIEplcnVzYWxlbS4KQW5kIHRoZSBraW5nIG9mIEVneXB0IHB1dCBoaW0gZG93biBhdCBKZXJ1c2FsZW0sIGFuZCBjb25kZW1uZWQgdGhlIGxhbmQgaW4gYW4gaHVuZHJlZCB0YWxlbnRzIG9mIHNpbHZlciBhbmQgYSB0YWxlbnQgb2YgZ29sZC4KQW5kIHRoZSBraW5nIG9mIEVneXB0IG1hZGUgRWxpYWtpbSBoaXMgYnJvdGhlciBraW5nIG92ZXIgSnVkYWggYW5kIEplcnVzYWxlbSwgYW5kIHR1cm5lZCBoaXMgbmFtZSB0byBKZWhvaWFraW0uIEFuZCBOZWNobyB0b29rIEplaG9haGF6IGhpcyBicm90aGVyLCBhbmQgY2FycmllZCBoaW0gdG8gRWd5cHQuCkplaG9pYWtpbSB3YXMgdHdlbnR5IGFuZCBmaXZlIHllYXJzIG9sZCB3aGVuIGhlIGJlZ2FuIHRvIHJlaWduLCBhbmQgaGUgcmVpZ25lZCBlbGV2ZW4geWVhcnMgaW4gSmVydXNhbGVtOiBhbmQgaGUgZGlkIHRoYXQgd2hpY2ggd2FzIGV2aWwgaW4gdGhlIHNpZ2h0IG9mIHRoZSBMT1JEIGhpcyBHb2QuCkFnYWluc3QgaGltIGNhbWUgdXAgTmVidWNoYWRuZXp6YXIga2luZyBvZiBCYWJ5bG9uLCBhbmQgYm91bmQgaGltIGluIGZldHRlcnMsIHRvIGNhcnJ5IGhpbSB0byBCYWJ5bG9uLgpOZWJ1Y2hhZG5lenphciBhbHNvIGNhcnJpZWQgb2YgdGhlIHZlc3NlbHMgb2YgdGhlIGhvdXNlIG9mIHRoZSBMT1JEIHRvIEJhYnlsb24sIGFuZCBwdXQgdGhlbSBpbiBoaXMgdGVtcGxlIGF0IEJhYnlsb24uCk5vdyB0aGUgcmVzdCBvZiB0aGUgYWN0cyBvZiBKZWhvaWFraW0sIGFuZCBoaXMgYWJvbWluYXRpb25zIHdoaWNoIGhlIGRpZCwgYW5kIHRoYXQgd2hpY2ggd2FzIGZvdW5kIGluIGhpbSwgYmVob2xkLCB0aGV5IGFyZSB3cml0dGVuIGluIHRoZSBib29rIG9mIHRoZSBraW5ncyBvZiBJc3JhZWwgYW5kIEp1ZGFoOiBhbmQgSmVob2lhY2hpbiBoaXMgc29uIHJlaWduZWQgaW4gaGlzIHN0ZWFkLgpKZWhvaWFjaGluIHdhcyBlaWdodCB5ZWFycyBvbGQgd2hlbiBoZSBiZWdhbiB0byByZWlnbiwgYW5kIGhlIHJlaWduZWQgdGhyZWUgbW9udGhzIGFuZCB0ZW4gZGF5cyBpbiBKZXJ1c2FsZW06IGFuZCBoZSBkaWQgdGhhdCB3aGljaCB3YXMgZXZpbCBpbiB0aGUgc2lnaHQgb2YgdGhlIExPUkQuCkFuZCB3aGVuIHRoZSB5ZWFyIHdhcyBleHBpcmVkLCBraW5nIE5lYnVjaGFkbmV6emFyIHNlbnQsIGFuZCBicm91Z2h0IGhpbSB0byBCYWJ5bG9uLCB3aXRoIHRoZSBnb29kbHkgdmVzc2VscyBvZiB0aGUgaG91c2Ugb2YgdGhlIExPUkQsIGFuZCBtYWRlIFplZGVraWFoIGhpcyBicm90aGVyIGtpbmcgb3ZlciBKdWRhaCBhbmQgSmVydXNhbGVtLgpaZWRla2lhaCB3YXMgb25lIGFuZCB0d2VudHkgeWVhcnMgb2xkIHdoZW4gaGUgYmVnYW4gdG8gcmVpZ24sIGFuZCByZWlnbmVkIGVsZXZlbiB5ZWFycyBpbiBKZXJ1c2FsZW0uCkFuZCBoZSBkaWQgdGhhdCB3aGljaCB3YXMgZXZpbCBpbiB0aGUgc2lnaHQgb2YgdGhlIExPUkQgaGlzIEdvZCwgYW5kIGh1bWJsZWQgbm90IGhpbXNlbGYgYmVmb3JlIEplcmVtaWFoIHRoZSBwcm9waGV0IHNwZWFraW5nIGZyb20gdGhlIG1vdXRoIG9mIHRoZSBMT1JELgpBbmQgaGUgYWxzbyByZWJlbGxlZCBhZ2FpbnN0IGtpbmcgTmVidWNoYWRuZXp6YXIsIHdobyBoYWQgbWFkZSBoaW0gc3dlYXIgYnkgR29kOiBidXQgaGUgc3RpZmZlbmVkIGhpcyBuZWNrLCBhbmQgaGFyZGVuZWQgaGlzIGhlYXJ0IGZyb20gdHVybmluZyB1bnRvIHRoZSBMT1JEIEdvZCBvZiBJc3JhZWwuCk1vcmVvdmVyIGFsbCB0aGUgY2hpZWYgb2YgdGhlIHByaWVzdHMsIGFuZCB0aGUgcGVvcGxlLCB0cmFuc2dyZXNzZWQgdmVyeSBtdWNoIGFmdGVyIGFsbCB0aGUgYWJvbWluYXRpb25zIG9mIHRoZSBoZWF0aGVuOyBhbmQgcG9sbHV0ZWQgdGhlIGhvdXNlIG9mIHRoZSBMT1JEIHdoaWNoIGhlIGhhZCBoYWxsb3dlZCBpbiBKZXJ1c2FsZW0uCkFuZCB0aGUgTE9SRCBHb2Qgb2YgdGhlaXIgZmF0aGVycyBzZW50IHRvIHRoZW0gYnkgaGlzIG1lc3NlbmdlcnMsIHJpc2luZyB1cCBiZXRpbWVzLCBhbmQgc2VuZGluZzsgYmVjYXVzZSBoZSBoYWQgY29tcGFzc2lvbiBvbiBoaXMgcGVvcGxlLCBhbmQgb24gaGlzIGR3ZWxsaW5nIHBsYWNlOgpCdXQgdGhleSBtb2NrZWQgdGhlIG1lc3NlbmdlcnMgb2YgR29kLCBhbmQgZGVzcGlzZWQgaGlzIHdvcmRzLCBhbmQgbWlzdXNlZCBoaXMgcHJvcGhldHMsIHVudGlsIHRoZSB3cmF0aCBvZiB0aGUgTE9SRCBhcm9zZSBhZ2FpbnN0IGhpcyBwZW9wbGUsIHRpbGwgdGhlcmUgd2FzIG5vIHJlbWVkeS4KVGhlcmVmb3JlIGhlIGJyb3VnaHQgdXBvbiB0aGVtIHRoZSBraW5nIG9mIHRoZSBDaGFsZGVlcywgd2hvIHNsZXcgdGhlaXIgeW91bmcgbWVuIHdpdGggdGhlIHN3b3JkIGluIHRoZSBob3VzZSBvZiB0aGVpciBzYW5jdHVhcnksIGFuZCBoYWQgbm8gY29tcGFzc2lvbiB1cG9uIHlvdW5nIG1hbiBvciBtYWlkZW4sIG9sZCBtYW4sIG9yIGhpbSB0aGF0IHN0b29wZWQgZm9yIGFnZTogaGUgZ2F2ZSB0aGVtIGFsbCBpbnRvIGhpcyBoYW5kLgpBbmQgYWxsIHRoZSB2ZXNzZWxzIG9mIHRoZSBob3VzZSBvZiBHb2QsIGdyZWF0IGFuZCBzbWFsbCwgYW5kIHRoZSB0cmVhc3VyZXMgb2YgdGhlIGhvdXNlIG9mIHRoZSBMT1JELCBhbmQgdGhlIHRyZWFzdXJlcyBvZiB0aGUga2luZywgYW5kIG9mIGhpcyBwcmluY2VzOyBhbGwgdGhlc2UgaGUgYnJvdWdodCB0byBCYWJ5bG9uLgpBbmQgdGhleSBidXJudCB0aGUgaG91c2Ugb2YgR29kLCBhbmQgYnJha2UgZG93biB0aGUgd2FsbCBvZiBKZXJ1c2FsZW0sIGFuZCBidXJudCBhbGwgdGhlIHBhbGFjZXMgdGhlcmVvZiB3aXRoIGZpcmUsIGFuZCBkZXN0cm95ZWQgYWxsIHRoZSBnb29kbHkgdmVzc2VscyB0aGVyZW9mLgpBbmQgdGhlbSB0aGF0IGhhZCBlc2NhcGVkIGZyb20gdGhlIHN3b3JkIGNhcnJpZWQgaGUgYXdheSB0byBCYWJ5bG9uOyB3aGVyZSB0aGV5IHdlcmUgc2VydmFudHMgdG8gaGltIGFuZCBoaXMgc29ucyB1bnRpbCB0aGUgcmVpZ24gb2YgdGhlIGtpbmdkb20gb2YgUGVyc2lhOgpUbyBmdWxmaWwgdGhlIHdvcmQgb2YgdGhlIExPUkQgYnkgdGhlIG1vdXRoIG9mIEplcmVtaWFoLCB1bnRpbCB0aGUgbGFuZCBoYWQgZW5qb3llZCBoZXIgc2FiYmF0aHM6IGZvciBhcyBsb25nIGFzIHNoZSBsYXkgZGVzb2xhdGUgc2hlIGtlcHQgc2FiYmF0aCwgdG8gZnVsZmlsIHRocmVlc2NvcmUgYW5kIHRlbiB5ZWFycy4KTm93IGluIHRoZSBmaXJzdCB5ZWFyIG9mIEN5cnVzIGtpbmcgb2YgUGVyc2lhLCB0aGF0IHRoZSB3b3JkIG9mIHRoZSBMT1JEIHNwb2tlbiBieSB0aGUgbW91dGggb2YgSmVyZW1pYWggbWlnaHQgYmUgYWNjb21wbGlzaGVkLCB0aGUgTE9SRCBzdGlycmVkIHVwIHRoZSBzcGlyaXQgb2YgQ3lydXMga2luZyBvZiBQZXJzaWEsIHRoYXQgaGUgbWFkZSBhIHByb2NsYW1hdGlvbiB0aHJvdWdob3V0IGFsbCBoaXMga2luZ2RvbSwgYW5kIHB1dCBpdCBhbHNvIGluIHdyaXRpbmcsIHNheWluZywKVGh1cyBzYWl0aCBDeXJ1cyBraW5nIG9mIFBlcnNpYSwgQWxsIHRoZSBraW5nZG9tcyBvZiB0aGUgZWFydGggaGF0aCB0aGUgTE9SRCBHb2Qgb2YgaGVhdmVuIGdpdmVuIG1lOyBhbmQgaGUgaGF0aCBjaGFyZ2VkIG1lIHRvIGJ1aWxkIGhpbSBhbiBob3VzZSBpbiBKZXJ1c2FsZW0sIHdoaWNoIGlzIGluIEp1ZGFoLiBXaG8gaXMgdGhlcmUgYW1vbmcgeW91IG9mIGFsbCBoaXMgcGVvcGxlPyBUaGUgTE9SRCBoaXMgR29kIGJlIHdpdGggaGltLCBhbmQgbGV0IGhpbSBnbyB1cC4KTm93IGluIHRoZSBmaXJzdCB5ZWFyIG9mIEN5cnVzIGtpbmcgb2YgUGVyc2lhLCB0aGF0IHRoZSB3b3JkIG9mIHRoZSBMT1JEIGJ5IHRoZSBtb3V0aCBvZiBKZXJlbWlhaCBtaWdodCBiZSBmdWxmaWxsZWQsIHRoZSBMT1JEIHN0aXJyZWQgdXAgdGhlIHNwaXJpdCBvZiBDeXJ1cyBraW5nIG9mIFBlcnNpYSwgdGhhdCBoZSBtYWRlIGEgcHJvY2xhbWF0aW9uIHRocm91Z2hvdXQgYWxsIGhpcyBraW5nZG9tLCBhbmQgcHV0IGl0IGFsc28gaW4gd3JpdGluZywgc2F5aW5nLApUaHVzIHNhaXRoIEN5cnVzIGtpbmcgb2YgUGVyc2lhLCBUaGUgTE9SRCBHb2Qgb2YgaGVhdmVuIGhhdGggZ2l2ZW4gbWUgYWxsIHRoZSBraW5nZG9tcyBvZiB0aGUgZWFydGg7IGFuZCBoZSBoYXRoIGNoYXJnZWQgbWUgdG8gYnVpbGQgaGltIGFuIGhvdXNlIGF0IEplcnVzYWxlbSwgd2hpY2ggaXMgaW4gSnVkYWguCldobyBpcyB0aGVyZSBhbW9uZyB5b3Ugb2YgYWxsIGhpcyBwZW9wbGU/IGhpcyBHb2QgYmUgd2l0aCBoaW0sIGFuZCBsZXQgaGltIGdvIHVwIHRvIEplcnVzYWxlbSwgd2hpY2ggaXMgaW4gSnVkYWgsIGFuZCBidWlsZCB0aGUgaG91c2Ugb2YgdGhlIExPUkQgR29kIG9mIElzcmFlbCwgKGhlIGlzIHRoZSBHb2QsKSB3aGljaCBpcyBpbiBKZXJ1c2FsZW0uCkFuZCB3aG9zb2V2ZXIgcmVtYWluZXRoIGluIGFueSBwbGFjZSB3aGVyZSBoZSBzb2pvdXJuZXRoLCBsZXQgdGhlIG1lbiBvZiBoaXMgcGxhY2UgaGVscCBoaW0gd2l0aCBzaWx2ZXIsIGFuZCB3aXRoIGdvbGQsIGFuZCB3aXRoIGdvb2RzLCBhbmQgd2l0aCBiZWFzdHMsIGJlc2lkZSB0aGUgZnJlZXdpbGwgb2ZmZXJpbmcgZm9yIHRoZSBob3VzZSBvZiBHb2QgdGhhdCBpcyBpbiBKZXJ1c2FsZW0uClRoZW4gcm9zZSB1cCB0aGUgY2hpZWYgb2YgdGhlIGZhdGhlcnMgb2YgSnVkYWggYW5kIEJlbmphbWluLCBhbmQgdGhlIHByaWVzdHMsIGFuZCB0aGUgTGV2aXRlcywgd2l0aCBhbGwgdGhlbSB3aG9zZSBzcGlyaXQgR29kIGhhZCByYWlzZWQsIHRvIGdvIHVwIHRvIGJ1aWxkIHRoZSBob3VzZSBvZiB0aGUgTE9SRCB3aGljaCBpcyBpbiBKZXJ1c2FsZW0uCkFuZCBhbGwgdGhleSB0aGF0IHdlcmUgYWJvdXQgdGhlbSBzdHJlbmd0aGVuZWQgdGhlaXIgaGFuZHMgd2l0aCB2ZXNzZWxzIG9mIHNpbHZlciwgd2l0aCBnb2xkLCB3aXRoIGdvb2RzLCBhbmQgd2l0aCBiZWFzdHMsIGFuZCB3aXRoIHByZWNpb3VzIHRoaW5ncywgYmVzaWRlIGFsbCB0aGF0IHdhcyB3aWxsaW5nbHkgb2ZmZXJlZC4KQWxzbyBDeXJ1cyB0aGUga2luZyBicm91Z2h0IGZvcnRoIHRoZSB2ZXNzZWxzIG9mIHRoZSBob3VzZSBvZiB0aGUgTE9SRCwgd2hpY2ggTmVidWNoYWRuZXp6YXIgaGFkIGJyb3VnaHQgZm9ydGggb3V0IG9mIEplcnVzYWxlbSwgYW5kIGhhZCBwdXQgdGhlbSBpbiB0aGUgaG91c2Ugb2YgaGlzIGdvZHM7CkV2ZW4gdGhvc2UgZGlkIEN5cnVzIGtpbmcgb2YgUGVyc2lhIGJyaW5nIGZvcnRoIGJ5IHRoZSBoYW5kIG9mIE1pdGhyZWRhdGggdGhlIHRyZWFzdXJlciwgYW5kIG51bWJlcmVkIHRoZW0gdW50byBTaGVzaGJhenphciwgdGhlIHByaW5jZSBvZiBKdWRhaC4KQW5kIHRoaXMgaXMgdGhlIG51bWJlciBvZiB0aGVtOiB0aGlydHkgY2hhcmdlcnMgb2YgZ29sZCwgYSB0aG91c2FuZCBjaGFyZ2VycyBvZiBzaWx2ZXIsIG5pbmUgYW5kIHR3ZW50eSBrbml2ZXMsClRoaXJ0eSBiYXNvbnMgb2YgZ29sZCwgc2lsdmVyIGJhc29ucyBvZiBhIHNlY29uZCBzb3J0IGZvdXIgaHVuZHJlZCBhbmQgdGVuLCBhbmQgb3RoZXIgdmVzc2VscyBhIHRob3VzYW5kLgpBbGwgdGhlIHZlc3NlbHMgb2YgZ29sZCBhbmQgb2Ygc2lsdmVyIHdlcmUgZml2ZSB0aG91c2FuZCBhbmQgZm91ciBodW5kcmVkLiBBbGwgdGhlc2UgZGlkIFNoZXNoYmF6emFyIGJyaW5nIHVwIHdpdGggdGhlbSBvZiB0aGUgY2FwdGl2aXR5IHRoYXQgd2VyZSBicm91Z2h0IHVwIGZyb20gQmFieWxvbiB1bnRvIEplcnVzYWxlbS4KTm93IHRoZXNlIGFyZSB0aGUgY2hpbGRyZW4gb2YgdGhlIHByb3ZpbmNlIHRoYXQgd2VudCB1cCBvdXQgb2YgdGhlIGNhcHRpdml0eSwgb2YgdGhvc2Ugd2hpY2ggaGFkIGJlZW4gY2FycmllZCBhd2F5LCB3aG9tIE5lYnVjaGFkbmV6emFyIHRoZSBraW5nIG9mIEJhYnlsb24gaGFkIGNhcnJpZWQgYXdheSB1bnRvIEJhYnlsb24sIGFuZCBjYW1lIGFnYWluIHVudG8gSmVydXNhbGVtIGFuZCBKdWRhaCwgZXZlcnkgb25lIHVudG8gaGlzIGNpdHk7CldoaWNoIGNhbWUgd2l0aCBaZXJ1YmJhYmVsOiBKZXNodWEsIE5laGVtaWFoLCBTZXJhaWFoLCBSZWVsYWlhaCwgTW9yZGVjYWksIEJpbHNoYW4sIE1penBhciwgQmlndmFpLCBSZWh1bSwgQmFhbmFoLiBUaGUgbnVtYmVyIG9mIHRoZSBtZW4gb2YgdGhlIHBlb3BsZSBvZiBJc3JhZWw6ClRoZSBjaGlsZHJlbiBvZiBQYXJvc2gsIHR3byB0aG91c2FuZCBhbiBodW5kcmVkIHNldmVudHkgYW5kIHR3by4KVGhlIGNoaWxkcmVuIG9mIFNoZXBoYXRpYWgsIHRocmVlIGh1bmRyZWQgc2V2ZW50eSBhbmQgdHdvLgpUaGUgY2hpbGRyZW4gb2YgQXJhaCwgc2V2ZW4gaHVuZHJlZCBzZXZlbnR5IGFuZCBmaXZlLgpUaGUgY2hpbGRyZW4gb2YgUGFoYXRobW9hYiwgb2YgdGhlIGNoaWxkcmVuIG9mIEplc2h1YSBhbmQgSm9hYiwgdHdvIHRob3VzYW5kIGVpZ2h0IGh1bmRyZWQgYW5kIHR3ZWx2ZS4KVGhlIGNoaWxkcmVuIG9mIEVsYW0sIGEgdGhvdXNhbmQgdHdvIGh1bmRyZWQgZmlmdHkgYW5kIGZvdXIuClRoZSBjaGlsZHJlbiBvZiBaYXR0dSwgbmluZSBodW5kcmVkIGZvcnR5IGFuZCBmaXZlLgpUaGUgY2hpbGRyZW4gb2YgWmFjY2FpLCBzZXZlbiBodW5kcmVkIGFuZCB0aHJlZXNjb3JlLgpUaGUgY2hpbGRyZW4gb2YgQmFuaSwgc2l4IGh1bmRyZWQgZm9ydHkgYW5kIHR3by4KVGhlIGNoaWxkcmVuIG9mIEJlYmFpLCBzaXggaHVuZHJlZCB0d2VudHkgYW5kIHRocmVlLgpUaGUgY2hpbGRyZW4gb2YgQXpnYWQsIGEgdGhvdXNhbmQgdHdvIGh1bmRyZWQgdHdlbnR5IGFuZCB0d28uClRoZSBjaGlsZHJlbiBvZiBBZG9uaWthbSwgc2l4IGh1bmRyZWQgc2l4dHkgYW5kIHNpeC4KVGhlIGNoaWxkcmVuIG9mIEJpZ3ZhaSwgdHdvIHRob3VzYW5kIGZpZnR5IGFuZCBzaXguClRoZSBjaGlsZHJlbiBvZiBBZGluLCBmb3VyIGh1bmRyZWQgZmlmdHkgYW5kIGZvdXIuClRoZSBjaGlsZHJlbiBvZiBBdGVyIG9mIEhlemVraWFoLCBuaW5ldHkgYW5kIGVpZ2h0LgpUaGUgY2hpbGRyZW4gb2YgQmV6YWksIHRocmVlIGh1bmRyZWQgdHdlbnR5IGFuZCB0aHJlZS4KVGhlIGNoaWxkcmVuIG9mIEpvcmFoLCBhbiBodW5kcmVkIGFuZCB0d2VsdmUuClRoZSBjaGlsZHJlbiBvZiBIYXNodW0sIHR3byBodW5kcmVkIHR3ZW50eSBhbmQgdGhyZWUuClRoZSBjaGlsZHJlbiBvZiBHaWJiYXIsIG5pbmV0eSBhbmQgZml2ZS4KVGhlIGNoaWxkcmVuIG9mIEJldGhsZWhlbSwgYW4gaHVuZHJlZCB0d2VudHkgYW5kIHRocmVlLgpUaGUgbWVuIG9mIE5ldG9waGFoLCBmaWZ0eSBhbmQgc2l4LgpUaGUgbWVuIG9mIEFuYXRob3RoLCBhbiBodW5kcmVkIHR3ZW50eSBhbmQgZWlnaHQuClRoZSBjaGlsZHJlbiBvZiBBem1hdmV0aCwgZm9ydHkgYW5kIHR3by4KVGhlIGNoaWxkcmVuIG9mIEtpcmphdGhhcmltLCBDaGVwaGlyYWgsIGFuZCBCZWVyb3RoLCBzZXZlbiBodW5kcmVkIGFuZCBmb3J0eSBhbmQgdGhyZWUuClRoZSBjaGlsZHJlbiBvZiBSYW1haCBhbmQgR2FiYSwgc2l4IGh1bmRyZWQgdHdlbnR5IGFuZCBvbmUuClRoZSBtZW4gb2YgTWljaG1hcywgYW4gaHVuZHJlZCB0d2VudHkgYW5kIHR3by4KVGhlIG1lbiBvZiBCZXRoZWwgYW5kIEFpLCB0d28gaHVuZHJlZCB0d2VudHkgYW5kIHRocmVlLgpUaGUgY2hpbGRyZW4gb2YgTmVibywgZmlmdHkgYW5kIHR3by4KVGhlIGNoaWxkcmVuIG9mIE1hZ2Jpc2gsIGFuIGh1bmRyZWQgZmlmdHkgYW5kIHNpeC4KVGhlIGNoaWxkcmVuIG9mIHRoZSBvdGhlciBFbGFtLCBhIHRob3VzYW5kIHR3byBodW5kcmVkIGZpZnR5IGFuZCBmb3VyLgpUaGUgY2hpbGRyZW4gb2YgSGFyaW0sIHRocmVlIGh1bmRyZWQgYW5kIHR3ZW50eS4KVGhlIGNoaWxkcmVuIG9mIExvZCwgSGFkaWQsIGFuZCBPbm8sIHNldmVuIGh1bmRyZWQgdHdlbnR5IGFuZCBmaXZlLgpUaGUgY2hpbGRyZW4gb2YgSmVyaWNobywgdGhyZWUgaHVuZHJlZCBmb3J0eSBhbmQgZml2ZS4KVGhlIGNoaWxkcmVuIG9mIFNlbmFhaCwgdGhyZWUgdGhvdXNhbmQgYW5kIHNpeCBodW5kcmVkIGFuZCB0aGlydHkuClRoZSBwcmllc3RzOiB0aGUgY2hpbGRyZW4gb2YgSmVkYWlhaCwgb2YgdGhlIGhvdXNlIG9mIEplc2h1YSwgbmluZSBodW5kcmVkIHNldmVudHkgYW5kIHRocmVlLgpUaGUgY2hpbGRyZW4gb2YgSW1tZXIsIGEgdGhvdXNhbmQgZmlmdHkgYW5kIHR3by4KVGhlIGNoaWxkcmVuIG9mIFBhc2h1ciwgYSB0aG91c2FuZCB0d28gaHVuZHJlZCBmb3J0eSBhbmQgc2V2ZW4uClRoZSBjaGlsZHJlbiBvZiBIYXJpbSwgYSB0aG91c2FuZCBhbmQgc2V2ZW50ZWVuLgpUaGUgTGV2aXRlczogdGhlIGNoaWxkcmVuIG9mIEplc2h1YSBhbmQgS2FkbWllbCwgb2YgdGhlIGNoaWxkcmVuIG9mIEhvZGF2aWFoLCBzZXZlbnR5IGFuZCBmb3VyLgpUaGUgc2luZ2VyczogdGhlIGNoaWxkcmVuIG9mIEFzYXBoLCBhbiBodW5kcmVkIHR3ZW50eSBhbmQgZWlnaHQuClRoZSBjaGlsZHJlbiBvZiB0aGUgcG9ydGVyczogdGhlIGNoaWxkcmVuIG9mIFNoYWxsdW0sIHRoZSBjaGlsZHJlbiBvZiBBdGVyLCB0aGUgY2hpbGRyZW4gb2YgVGFsbW9uLCB0aGUgY2hpbGRyZW4gb2YgQWtrdWIsIHRoZSBjaGlsZHJlbiBvZiBIYXRpdGEsIHRoZSBjaGlsZHJlbiBvZiBTaG9iYWksIGluIGFsbCBhbiBodW5kcmVkIHRoaXJ0eSBhbmQgbmluZS4KVGhlIE5ldGhpbmltczogdGhlIGNoaWxkcmVuIG9mIFppaGEsIHRoZSBjaGlsZHJlbiBvZiBIYXN1cGhhLCB0aGUgY2hpbGRyZW4gb2YgVGFiYmFvdGgsClRoZSBjaGlsZHJlbiBvZiBLZXJvcywgdGhlIGNoaWxkcmVuIG9mIFNpYWhhLCB0aGUgY2hpbGRyZW4gb2YgUGFkb24sClRoZSBjaGlsZHJlbiBvZiBMZWJhbmFoLCB0aGUgY2hpbGRyZW4gb2YgSGFnYWJhaCwgdGhlIGNoaWxkcmVuIG9mIEFra3ViLApUaGUgY2hpbGRyZW4gb2YgSGFnYWIsIHRoZSBjaGlsZHJlbiBvZiBTaGFsbWFpLCB0aGUgY2hpbGRyZW4gb2YgSGFuYW4sClRoZSBjaGlsZHJlbiBvZiBHaWRkZWwsIHRoZSBjaGlsZHJlbiBvZiBHYWhhciwgdGhlIGNoaWxkcmVuIG9mIFJlYWlhaCwKVGhlIGNoaWxkcmVuIG9mIFJlemluLCB0aGUgY2hpbGRyZW4gb2YgTmVrb2RhLCB0aGUgY2hpbGRyZW4gb2YgR2F6emFtLApUaGUgY2hpbGRyZW4gb2YgVXp6YSwgdGhlIGNoaWxkcmVuIG9mIFBhc2VhaCwgdGhlIGNoaWxkcmVuIG9mIEJlc2FpLApUaGUgY2hpbGRyZW4gb2YgQXNuYWgsIHRoZSBjaGlsZHJlbiBvZiBNZWh1bmltLCB0aGUgY2hpbGRyZW4gb2YgTmVwaHVzaW0sClRoZSBjaGlsZHJlbiBvZiBCYWtidWssIHRoZSBjaGlsZHJlbiBvZiBIYWt1cGhhLCB0aGUgY2hpbGRyZW4gb2YgSGFyaHVyLApUaGUgY2hpbGRyZW4gb2YgQmF6bHV0aCwgdGhlIGNoaWxkcmVuIG9mIE1laGlkYSwgdGhlIGNoaWxkcmVuIG9mIEhhcnNoYSwKVGhlIGNoaWxkcmVuIG9mIEJhcmtvcywgdGhlIGNoaWxkcmVuIG9mIFNpc2VyYSwgdGhlIGNoaWxkcmVuIG9mIFRoYW1haCwKVGhlIGNoaWxkcmVuIG9mIE5lemlhaCwgdGhlIGNoaWxkcmVuIG9mIEhhdGlwaGEuClRoZSBjaGlsZHJlbiBvZiBTb2xvbW9uJ3Mgc2VydmFudHM6IHRoZSBjaGlsZHJlbiBvZiBTb3RhaSwgdGhlIGNoaWxkcmVuIG9mIFNvcGhlcmV0aCwgdGhlIGNoaWxkcmVuIG9mIFBlcnVkYSwKVGhlIGNoaWxkcmVuIG9mIEphYWxhaCwgdGhlIGNoaWxkcmVuIG9mIERhcmtvbiwgdGhlIGNoaWxkcmVuIG9mIEdpZGRlbCwKVGhlIGNoaWxkcmVuIG9mIFNoZXBoYXRpYWgsIHRoZSBjaGlsZHJlbiBvZiBIYXR0aWwsIHRoZSBjaGlsZHJlbiBvZiBQb2NoZXJldGggb2YgWmViYWltLCB0aGUgY2hpbGRyZW4gb2YgQW1pLgpBbGwgdGhlIE5ldGhpbmltcywgYW5kIHRoZSBjaGlsZHJlbiBvZiBTb2xvbW9uJ3Mgc2VydmFudHMsIHdlcmUgdGhyZWUgaHVuZHJlZCBuaW5ldHkgYW5kIHR3by4KQW5kIHRoZXNlIHdlcmUgdGhleSB3aGljaCB3ZW50IHVwIGZyb20gVGVsbWVsYWgsIFRlbGhhcnNhLCBDaGVydWIsIEFkZGFuLCBhbmQgSW1tZXI6IGJ1dCB0aGV5IGNvdWxkIG5vdCBzaGV3IHRoZWlyIGZhdGhlcidzIGhvdXNlLCBhbmQgdGhlaXIgc2VlZCwgd2hldGhlciB0aGV5IHdlcmUgb2YgSXNyYWVsOgpUaGUgY2hpbGRyZW4gb2YgRGVsYWlhaCwgdGhlIGNoaWxkcmVuIG9mIFRvYmlhaCwgdGhlIGNoaWxkcmVuIG9mIE5la29kYSwgc2l4IGh1bmRyZWQgZmlmdHkgYW5kIHR3by4KQW5kIG9mIHRoZSBjaGlsZHJlbiBvZiB0aGUgcHJpZXN0czogdGhlIGNoaWxkcmVuIG9mIEhhYmFpYWgsIHRoZSBjaGlsZHJlbiBvZiBLb3osIHRoZSBjaGlsZHJlbiBvZiBCYXJ6aWxsYWk7IHdoaWNoIHRvb2sgYSB3aWZlIG9mIHRoZSBkYXVnaHRlcnMgb2YgQmFyemlsbGFpIHRoZSBHaWxlYWRpdGUsIGFuZCB3YXMgY2FsbGVkIGFmdGVyIHRoZWlyIG5hbWU6ClRoZXNlIHNvdWdodCB0aGVpciByZWdpc3RlciBhbW9uZyB0aG9zZSB0aGF0IHdlcmUgcmVja29uZWQgYnkgZ2VuZWFsb2d5LCBidXQgdGhleSB3ZXJlIG5vdCBmb3VuZDogdGhlcmVmb3JlIHdlcmUgdGhleSwgYXMgcG9sbHV0ZWQsIHB1dCBmcm9tIHRoZSBwcmllc3Rob29kLgpBbmQgdGhlIFRpcnNoYXRoYSBzYWlkIHVudG8gdGhlbSwgdGhhdCB0aGV5IHNob3VsZCBub3QgZWF0IG9mIHRoZSBtb3N0IGhvbHkgdGhpbmdzLCB0aWxsIHRoZXJlIHN0b29kIHVwIGEgcHJpZXN0IHdpdGggVXJpbSBhbmQgd2l0aCBUaHVtbWltLgpUaGUgd2hvbGUgY29uZ3JlZ2F0aW9uIHRvZ2V0aGVyIHdhcyBmb3J0eSBhbmQgdHdvIHRob3VzYW5kIHRocmVlIGh1bmRyZWQgYW5kIHRocmVlc2NvcmUsCkJlc2lkZSB0aGVpciBzZXJ2YW50cyBhbmQgdGhlaXIgbWFpZHMsIG9mIHdob20gdGhlcmUgd2VyZSBzZXZlbiB0aG91c2FuZCB0aHJlZSBodW5kcmVkIHRoaXJ0eSBhbmQgc2V2ZW46IGFuZCB0aGVyZSB3ZXJlIGFtb25nIHRoZW0gdHdvIGh1bmRyZWQgc2luZ2luZyBtZW4gYW5kIHNpbmdpbmcgd29tZW4uClRoZWlyIGhvcnNlcyB3ZXJlIHNldmVuIGh1bmRyZWQgdGhpcnR5IGFuZCBzaXg7IHRoZWlyIG11bGVzLCB0d28gaHVuZHJlZCBmb3J0eSBhbmQgZml2ZTsKVGhlaXIgY2FtZWxzLCBmb3VyIGh1bmRyZWQgdGhpcnR5IGFuZCBmaXZlOyB0aGVpciBhc3Nlcywgc2l4IHRob3VzYW5kIHNldmVuIGh1bmRyZWQgYW5kIHR3ZW50eS4KQW5kIHNvbWUgb2YgdGhlIGNoaWVmIG9mIHRoZSBmYXRoZXJzLCB3aGVuIHRoZXkgY2FtZSB0byB0aGUgaG91c2Ugb2YgdGhlIExPUkQgd2hpY2ggaXMgYXQgSmVydXNhbGVtLCBvZmZlcmVkIGZyZWVseSBmb3IgdGhlIGhvdXNlIG9mIEdvZCB0byBzZXQgaXQgdXAgaW4gaGlzIHBsYWNlOgpUaGV5IGdhdmUgYWZ0ZXIgdGhlaXIgYWJpbGl0eSB1bnRvIHRoZSB0cmVhc3VyZSBvZiB0aGUgd29yayB0aHJlZXNjb3JlIGFuZCBvbmUgdGhvdXNhbmQgZHJhbXMgb2YgZ29sZCwgYW5kIGZpdmUgdGhvdXNhbmQgcG91bmQgb2Ygc2lsdmVyLCBhbmQgb25lIGh1bmRyZWQgcHJpZXN0cycgZ2FybWVudHMuClNvIHRoZSBwcmllc3RzLCBhbmQgdGhlIExldml0ZXMsIGFuZCBzb21lIG9mIHRoZSBwZW9wbGUsIGFuZCB0aGUgc2luZ2VycywgYW5kIHRoZSBwb3J0ZXJzLCBhbmQgdGhlIE5ldGhpbmltcywgZHdlbHQgaW4gdGhlaXIgY2l0aWVzLCBhbmQgYWxsIElzcmFlbCBpbiB0aGVpciBjaXRpZXMuCkFuZCB3aGVuIHRoZSBzZXZlbnRoIG1vbnRoIHdhcyBjb21lLCBhbmQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCB3ZXJlIGluIHRoZSBjaXRpZXMsIHRoZSBwZW9wbGUgZ2F0aGVyZWQgdGhlbXNlbHZlcyB0b2dldGhlciBhcyBvbmUgbWFuIHRvIEplcnVzYWxlbS4KVGhlbiBzdG9vZCB1cCBKZXNodWEgdGhlIHNvbiBvZiBKb3phZGFrLCBhbmQgaGlzIGJyZXRocmVuIHRoZSBwcmllc3RzLCBhbmQgWmVydWJiYWJlbCB0aGUgc29uIG9mIFNoZWFsdGllbCwgYW5kIGhpcyBicmV0aHJlbiwgYW5kIGJ1aWxkZWQgdGhlIGFsdGFyIG9mIHRoZSBHb2Qgb2YgSXNyYWVsLCB0byBvZmZlciBidXJudCBvZmZlcmluZ3MgdGhlcmVvbiwgYXMgaXQgaXMgd3JpdHRlbiBpbiB0aGUgbGF3IG9mIE1vc2VzIHRoZSBtYW4gb2YgR29kLgpBbmQgdGhleSBzZXQgdGhlIGFsdGFyIHVwb24gaGlzIGJhc2VzOyBmb3IgZmVhciB3YXMgdXBvbiB0aGVtIGJlY2F1c2Ugb2YgdGhlIHBlb3BsZSBvZiB0aG9zZSBjb3VudHJpZXM6IGFuZCB0aGV5IG9mZmVyZWQgYnVybnQgb2ZmZXJpbmdzIHRoZXJlb24gdW50byB0aGUgTE9SRCwgZXZlbiBidXJudCBvZmZlcmluZ3MgbW9ybmluZyBhbmQgZXZlbmluZy4KVGhleSBrZXB0IGFsc28gdGhlIGZlYXN0IG9mIHRhYmVybmFjbGVzLCBhcyBpdCBpcyB3cml0dGVuLCBhbmQgb2ZmZXJlZCB0aGUgZGFpbHkgYnVybnQgb2ZmZXJpbmdzIGJ5IG51bWJlciwgYWNjb3JkaW5nIHRvIHRoZSBjdXN0b20sIGFzIHRoZSBkdXR5IG9mIGV2ZXJ5IGRheSByZXF1aXJlZDsKQW5kIGFmdGVyd2FyZCBvZmZlcmVkIHRoZSBjb250aW51YWwgYnVybnQgb2ZmZXJpbmcsIGJvdGggb2YgdGhlIG5ldyBtb29ucywgYW5kIG9mIGFsbCB0aGUgc2V0IGZlYXN0cyBvZiB0aGUgTE9SRCB0aGF0IHdlcmUgY29uc2VjcmF0ZWQsIGFuZCBvZiBldmVyeSBvbmUgdGhhdCB3aWxsaW5nbHkgb2ZmZXJlZCBhIGZyZWV3aWxsIG9mZmVyaW5nIHVudG8gdGhlIExPUkQuCkZyb20gdGhlIGZpcnN0IGRheSBvZiB0aGUgc2V2ZW50aCBtb250aCBiZWdhbiB0aGV5IHRvIG9mZmVyIGJ1cm50IG9mZmVyaW5ncyB1bnRvIHRoZSBMT1JELiBCdXQgdGhlIGZvdW5kYXRpb24gb2YgdGhlIHRlbXBsZSBvZiB0aGUgTE9SRCB3YXMgbm90IHlldCBsYWlkLgpUaGV5IGdhdmUgbW9uZXkgYWxzbyB1bnRvIHRoZSBtYXNvbnMsIGFuZCB0byB0aGUgY2FycGVudGVyczsgYW5kIG1lYXQsIGFuZCBkcmluaywgYW5kIG9pbCwgdW50byB0aGVtIG9mIFppZG9uLCBhbmQgdG8gdGhlbSBvZiBUeXJlLCB0byBicmluZyBjZWRhciB0cmVlcyBmcm9tIExlYmFub24gdG8gdGhlIHNlYSBvZiBKb3BwYSwgYWNjb3JkaW5nIHRvIHRoZSBncmFudCB0aGF0IHRoZXkgaGFkIG9mIEN5cnVzIGtpbmcgb2YgUGVyc2lhLgpOb3cgaW4gdGhlIHNlY29uZCB5ZWFyIG9mIHRoZWlyIGNvbWluZyB1bnRvIHRoZSBob3VzZSBvZiBHb2QgYXQgSmVydXNhbGVtLCBpbiB0aGUgc2Vjb25kIG1vbnRoLCBiZWdhbiBaZXJ1YmJhYmVsIHRoZSBzb24gb2YgU2hlYWx0aWVsLCBhbmQgSmVzaHVhIHRoZSBzb24gb2YgSm96YWRhaywgYW5kIHRoZSByZW1uYW50IG9mIHRoZWlyIGJyZXRocmVuIHRoZSBwcmllc3RzIGFuZCB0aGUgTGV2aXRlcywgYW5kIGFsbCB0aGV5IHRoYXQgd2VyZSBjb21lIG91dCBvZiB0aGUgY2FwdGl2aXR5IHVudG8gSmVydXNhbGVtOyBhbmQgYXBwb2ludGVkIHRoZSBMZXZpdGVzLCBmcm9tIHR3ZW50eSB5ZWFycyBvbGQgYW5kIHVwd2FyZCwgdG8gc2V0IGZvcndhcmQgdGhlIHdvcmsgb2YgdGhlIGhvdXNlIG9mIHRoZSBMT1JELgpUaGVuIHN0b29kIEplc2h1YSB3aXRoIGhpcyBzb25zIGFuZCBoaXMgYnJldGhyZW4sIEthZG1pZWwgYW5kIGhpcyBzb25zLCB0aGUgc29ucyBvZiBKdWRhaCwgdG9nZXRoZXIsIHRvIHNldCBmb3J3YXJkIHRoZSB3b3JrbWVuIGluIHRoZSBob3VzZSBvZiBHb2Q6IHRoZSBzb25zIG9mIEhlbmFkYWQsIHdpdGggdGhlaXIgc29ucyBhbmQgdGhlaXIgYnJldGhyZW4gdGhlIExldml0ZXMuCkFuZCB3aGVuIHRoZSBidWlsZGVycyBsYWlkIHRoZSBmb3VuZGF0aW9uIG9mIHRoZSB0ZW1wbGUgb2YgdGhlIExPUkQsIHRoZXkgc2V0IHRoZSBwcmllc3RzIGluIHRoZWlyIGFwcGFyZWwgd2l0aCB0cnVtcGV0cywgYW5kIHRoZSBMZXZpdGVzIHRoZSBzb25zIG9mIEFzYXBoIHdpdGggY3ltYmFscywgdG8gcHJhaXNlIHRoZSBMT1JELCBhZnRlciB0aGUgb3JkaW5hbmNlIG9mIERhdmlkIGtpbmcgb2YgSXNyYWVsLgpBbmQgdGhleSBzYW5nIHRvZ2V0aGVyIGJ5IGNvdXJzZSBpbiBwcmFpc2luZyBhbmQgZ2l2aW5nIHRoYW5rcyB1bnRvIHRoZSBMT1JEOyBiZWNhdXNlIGhlIGlzIGdvb2QsIGZvciBoaXMgbWVyY3kgZW5kdXJldGggZm9yIGV2ZXIgdG93YXJkIElzcmFlbC4gQW5kIGFsbCB0aGUgcGVvcGxlIHNob3V0ZWQgd2l0aCBhIGdyZWF0IHNob3V0LCB3aGVuIHRoZXkgcHJhaXNlZCB0aGUgTE9SRCwgYmVjYXVzZSB0aGUgZm91bmRhdGlvbiBvZiB0aGUgaG91c2Ugb2YgdGhlIExPUkQgd2FzIGxhaWQuCkJ1dCBtYW55IG9mIHRoZSBwcmllc3RzIGFuZCBMZXZpdGVzIGFuZCBjaGllZiBvZiB0aGUgZmF0aGVycywgd2hvIHdlcmUgYW5jaWVudCBtZW4sIHRoYXQgaGFkIHNlZW4gdGhlIGZpcnN0IGhvdXNlLCB3aGVuIHRoZSBmb3VuZGF0aW9uIG9mIHRoaXMgaG91c2Ugd2FzIGxhaWQgYmVmb3JlIHRoZWlyIGV5ZXMsIHdlcHQgd2l0aCBhIGxvdWQgdm9pY2U7IGFuZCBtYW55IHNob3V0ZWQgYWxvdWQgZm9yIGpveToKU28gdGhhdCB0aGUgcGVvcGxlIGNvdWxkIG5vdCBkaXNjZXJuIHRoZSBub2lzZSBvZiB0aGUgc2hvdXQgb2Ygam95IGZyb20gdGhlIG5vaXNlIG9mIHRoZSB3ZWVwaW5nIG9mIHRoZSBwZW9wbGU6IGZvciB0aGUgcGVvcGxlIHNob3V0ZWQgd2l0aCBhIGxvdWQgc2hvdXQsIGFuZCB0aGUgbm9pc2Ugd2FzIGhlYXJkIGFmYXIgb2ZmLgpOb3cgd2hlbiB0aGUgYWR2ZXJzYXJpZXMgb2YgSnVkYWggYW5kIEJlbmphbWluIGhlYXJkIHRoYXQgdGhlIGNoaWxkcmVuIG9mIHRoZSBjYXB0aXZpdHkgYnVpbGRlZCB0aGUgdGVtcGxlIHVudG8gdGhlIExPUkQgR29kIG9mIElzcmFlbDsKVGhlbiB0aGV5IGNhbWUgdG8gWmVydWJiYWJlbCwgYW5kIHRvIHRoZSBjaGllZiBvZiB0aGUgZmF0aGVycywgYW5kIHNhaWQgdW50byB0aGVtLCBMZXQgdXMgYnVpbGQgd2l0aCB5b3U6IGZvciB3ZSBzZWVrIHlvdXIgR29kLCBhcyB5ZSBkbzsgYW5kIHdlIGRvIHNhY3JpZmljZSB1bnRvIGhpbSBzaW5jZSB0aGUgZGF5cyBvZiBFc2FyaGFkZG9uIGtpbmcgb2YgQXNzdXIsIHdoaWNoIGJyb3VnaHQgdXMgdXAgaGl0aGVyLgpCdXQgWmVydWJiYWJlbCwgYW5kIEplc2h1YSwgYW5kIHRoZSByZXN0IG9mIHRoZSBjaGllZiBvZiB0aGUgZmF0aGVycyBvZiBJc3JhZWwsIHNhaWQgdW50byB0aGVtLCBZZSBoYXZlIG5vdGhpbmcgdG8gZG8gd2l0aCB1cyB0byBidWlsZCBhbiBob3VzZSB1bnRvIG91ciBHb2Q7IGJ1dCB3ZSBvdXJzZWx2ZXMgdG9nZXRoZXIgd2lsbCBidWlsZCB1bnRvIHRoZSBMT1JEIEdvZCBvZiBJc3JhZWwsIGFzIGtpbmcgQ3lydXMgdGhlIGtpbmcgb2YgUGVyc2lhIGhhdGggY29tbWFuZGVkIHVzLgpUaGVuIHRoZSBwZW9wbGUgb2YgdGhlIGxhbmQgd2Vha2VuZWQgdGhlIGhhbmRzIG9mIHRoZSBwZW9wbGUgb2YgSnVkYWgsIGFuZCB0cm91YmxlZCB0aGVtIGluIGJ1aWxkaW5nLApBbmQgaGlyZWQgY291bnNlbGxvcnMgYWdhaW5zdCB0aGVtLCB0byBmcnVzdHJhdGUgdGhlaXIgcHVycG9zZSwgYWxsIHRoZSBkYXlzIG9mIEN5cnVzIGtpbmcgb2YgUGVyc2lhLCBldmVuIHVudGlsIHRoZSByZWlnbiBvZiBEYXJpdXMga2luZyBvZiBQZXJzaWEuCkFuZCBpbiB0aGUgcmVpZ24gb2YgQWhhc3VlcnVzLCBpbiB0aGUgYmVnaW5uaW5nIG9mIGhpcyByZWlnbiwgd3JvdGUgdGhleSB1bnRvIGhpbSBhbiBhY2N1c2F0aW9uIGFnYWluc3QgdGhlIGluaGFiaXRhbnRzIG9mIEp1ZGFoIGFuZCBKZXJ1c2FsZW0uCkFuZCBpbiB0aGUgZGF5cyBvZiBBcnRheGVyeGVzIHdyb3RlIEJpc2hsYW0sIE1pdGhyZWRhdGgsIFRhYmVlbCwgYW5kIHRoZSByZXN0IG9mIHRoZWlyIGNvbXBhbmlvbnMsIHVudG8gQXJ0YXhlcnhlcyBraW5nIG9mIFBlcnNpYTsgYW5kIHRoZSB3cml0aW5nIG9mIHRoZSBsZXR0ZXIgd2FzIHdyaXR0ZW4gaW4gdGhlIFN5cmlhbiB0b25ndWUsIGFuZCBpbnRlcnByZXRlZCBpbiB0aGUgU3lyaWFuIHRvbmd1ZS4KUmVodW0gdGhlIGNoYW5jZWxsb3IgYW5kIFNoaW1zaGFpIHRoZSBzY3JpYmUgd3JvdGUgYSBsZXR0ZXIgYWdhaW5zdCBKZXJ1c2FsZW0gdG8gQXJ0YXhlcnhlcyB0aGUga2luZyBpbiB0aGlzIHNvcnQ6ClRoZW4gd3JvdGUgUmVodW0gdGhlIGNoYW5jZWxsb3IsIGFuZCBTaGltc2hhaSB0aGUgc2NyaWJlLCBhbmQgdGhlIHJlc3Qgb2YgdGhlaXIgY29tcGFuaW9uczsgdGhlIERpbmFpdGVzLCB0aGUgQXBoYXJzYXRoY2hpdGVzLCB0aGUgVGFycGVsaXRlcywgdGhlIEFwaGFyc2l0ZXMsIHRoZSBBcmNoZXZpdGVzLCB0aGUgQmFieWxvbmlhbnMsIHRoZSBTdXNhbmNoaXRlcywgdGhlIERlaGF2aXRlcywgYW5kIHRoZSBFbGFtaXRlcywKQW5kIHRoZSByZXN0IG9mIHRoZSBuYXRpb25zIHdob20gdGhlIGdyZWF0IGFuZCBub2JsZSBBc25hcHBlciBicm91Z2h0IG92ZXIsIGFuZCBzZXQgaW4gdGhlIGNpdGllcyBvZiBTYW1hcmlhLCBhbmQgdGhlIHJlc3QgdGhhdCBhcmUgb24gdGhpcyBzaWRlIHRoZSByaXZlciwgYW5kIGF0IHN1Y2ggYSB0aW1lLgpUaGlzIGlzIHRoZSBjb3B5IG9mIHRoZSBsZXR0ZXIgdGhhdCB0aGV5IHNlbnQgdW50byBoaW0sIGV2ZW4gdW50byBBcnRheGVyeGVzIHRoZSBraW5nOyBUaHkgc2VydmFudHMgdGhlIG1lbiBvbiB0aGlzIHNpZGUgdGhlIHJpdmVyLCBhbmQgYXQgc3VjaCBhIHRpbWUuCkJlIGl0IGtub3duIHVudG8gdGhlIGtpbmcsIHRoYXQgdGhlIEpld3Mgd2hpY2ggY2FtZSB1cCBmcm9tIHRoZWUgdG8gdXMgYXJlIGNvbWUgdW50byBKZXJ1c2FsZW0sIGJ1aWxkaW5nIHRoZSByZWJlbGxpb3VzIGFuZCB0aGUgYmFkIGNpdHksIGFuZCBoYXZlIHNldCB1cCB0aGUgd2FsbHMgdGhlcmVvZiwgYW5kIGpvaW5lZCB0aGUgZm91bmRhdGlvbnMuCkJlIGl0IGtub3duIG5vdyB1bnRvIHRoZSBraW5nLCB0aGF0LCBpZiB0aGlzIGNpdHkgYmUgYnVpbGRlZCwgYW5kIHRoZSB3YWxscyBzZXQgdXAgYWdhaW4sIHRoZW4gd2lsbCB0aGV5IG5vdCBwYXkgdG9sbCwgdHJpYnV0ZSwgYW5kIGN1c3RvbSwgYW5kIHNvIHRob3Ugc2hhbHQgZW5kYW1hZ2UgdGhlIHJldmVudWUgb2YgdGhlIGtpbmdzLgpOb3cgYmVjYXVzZSB3ZSBoYXZlIG1haW50ZW5hbmNlIGZyb20gdGhlIGtpbmcncyBwYWxhY2UsIGFuZCBpdCB3YXMgbm90IG1lZXQgZm9yIHVzIHRvIHNlZSB0aGUga2luZydzIGRpc2hvbm91ciwgdGhlcmVmb3JlIGhhdmUgd2Ugc2VudCBhbmQgY2VydGlmaWVkIHRoZSBraW5nOwpUaGF0IHNlYXJjaCBtYXkgYmUgbWFkZSBpbiB0aGUgYm9vayBvZiB0aGUgcmVjb3JkcyBvZiB0aHkgZmF0aGVyczogc28gc2hhbHQgdGhvdSBmaW5kIGluIHRoZSBib29rIG9mIHRoZSByZWNvcmRzLCBhbmQga25vdyB0aGF0IHRoaXMgY2l0eSBpcyBhIHJlYmVsbGlvdXMgY2l0eSwgYW5kIGh1cnRmdWwgdW50byBraW5ncyBhbmQgcHJvdmluY2VzLCBhbmQgdGhhdCB0aGV5IGhhdmUgbW92ZWQgc2VkaXRpb24gd2l0aGluIHRoZSBzYW1lIG9mIG9sZCB0aW1lOiBmb3Igd2hpY2ggY2F1c2Ugd2FzIHRoaXMgY2l0eSBkZXN0cm95ZWQuCldlIGNlcnRpZnkgdGhlIGtpbmcgdGhhdCwgaWYgdGhpcyBjaXR5IGJlIGJ1aWxkZWQgYWdhaW4sIGFuZCB0aGUgd2FsbHMgdGhlcmVvZiBzZXQgdXAsIGJ5IHRoaXMgbWVhbnMgdGhvdSBzaGFsdCBoYXZlIG5vIHBvcnRpb24gb24gdGhpcyBzaWRlIHRoZSByaXZlci4KVGhlbiBzZW50IHRoZSBraW5nIGFuIGFuc3dlciB1bnRvIFJlaHVtIHRoZSBjaGFuY2VsbG9yLCBhbmQgdG8gU2hpbXNoYWkgdGhlIHNjcmliZSwgYW5kIHRvIHRoZSByZXN0IG9mIHRoZWlyIGNvbXBhbmlvbnMgdGhhdCBkd2VsbCBpbiBTYW1hcmlhLCBhbmQgdW50byB0aGUgcmVzdCBiZXlvbmQgdGhlIHJpdmVyLCBQZWFjZSwgYW5kIGF0IHN1Y2ggYSB0aW1lLgpUaGUgbGV0dGVyIHdoaWNoIHllIHNlbnQgdW50byB1cyBoYXRoIGJlZW4gcGxhaW5seSByZWFkIGJlZm9yZSBtZS4KQW5kIEkgY29tbWFuZGVkLCBhbmQgc2VhcmNoIGhhdGggYmVlbiBtYWRlLCBhbmQgaXQgaXMgZm91bmQgdGhhdCB0aGlzIGNpdHkgb2Ygb2xkIHRpbWUgaGF0aCBtYWRlIGluc3VycmVjdGlvbiBhZ2FpbnN0IGtpbmdzLCBhbmQgdGhhdCByZWJlbGxpb24gYW5kIHNlZGl0aW9uIGhhdmUgYmVlbiBtYWRlIHRoZXJlaW4uClRoZXJlIGhhdmUgYmVlbiBtaWdodHkga2luZ3MgYWxzbyBvdmVyIEplcnVzYWxlbSwgd2hpY2ggaGF2ZSBydWxlZCBvdmVyIGFsbCBjb3VudHJpZXMgYmV5b25kIHRoZSByaXZlcjsgYW5kIHRvbGwsIHRyaWJ1dGUsIGFuZCBjdXN0b20sIHdhcyBwYWlkIHVudG8gdGhlbS4KR2l2ZSB5ZSBub3cgY29tbWFuZG1lbnQgdG8gY2F1c2UgdGhlc2UgbWVuIHRvIGNlYXNlLCBhbmQgdGhhdCB0aGlzIGNpdHkgYmUgbm90IGJ1aWxkZWQsIHVudGlsIGFub3RoZXIgY29tbWFuZG1lbnQgc2hhbGwgYmUgZ2l2ZW4gZnJvbSBtZS4KVGFrZSBoZWVkIG5vdyB0aGF0IHllIGZhaWwgbm90IHRvIGRvIHRoaXM6IHdoeSBzaG91bGQgZGFtYWdlIGdyb3cgdG8gdGhlIGh1cnQgb2YgdGhlIGtpbmdzPwpOb3cgd2hlbiB0aGUgY29weSBvZiBraW5nIEFydGF4ZXJ4ZXMnIGxldHRlciB3YXMgcmVhZCBiZWZvcmUgUmVodW0sIGFuZCBTaGltc2hhaSB0aGUgc2NyaWJlLCBhbmQgdGhlaXIgY29tcGFuaW9ucywgdGhleSB3ZW50IHVwIGluIGhhc3RlIHRvIEplcnVzYWxlbSB1bnRvIHRoZSBKZXdzLCBhbmQgbWFkZSB0aGVtIHRvIGNlYXNlIGJ5IGZvcmNlIGFuZCBwb3dlci4KVGhlbiBjZWFzZWQgdGhlIHdvcmsgb2YgdGhlIGhvdXNlIG9mIEdvZCB3aGljaCBpcyBhdCBKZXJ1c2FsZW0uIFNvIGl0IGNlYXNlZCB1bnRvIHRoZSBzZWNvbmQgeWVhciBvZiB0aGUgcmVpZ24gb2YgRGFyaXVzIGtpbmcgb2YgUGVyc2lhLgpUaGVuIHRoZSBwcm9waGV0cywgSGFnZ2FpIHRoZSBwcm9waGV0LCBhbmQgWmVjaGFyaWFoIHRoZSBzb24gb2YgSWRkbywgcHJvcGhlc2llZCB1bnRvIHRoZSBKZXdzIHRoYXQgd2VyZSBpbiBKdWRhaCBhbmQgSmVydXNhbGVtIGluIHRoZSBuYW1lIG9mIHRoZSBHb2Qgb2YgSXNyYWVsLCBldmVuIHVudG8gdGhlbS4KVGhlbiByb3NlIHVwIFplcnViYmFiZWwgdGhlIHNvbiBvZiBTaGVhbHRpZWwsIGFuZCBKZXNodWEgdGhlIHNvbiBvZiBKb3phZGFrLCBhbmQgYmVnYW4gdG8gYnVpbGQgdGhlIGhvdXNlIG9mIEdvZCB3aGljaCBpcyBhdCBKZXJ1c2FsZW06IGFuZCB3aXRoIHRoZW0gd2VyZSB0aGUgcHJvcGhldHMgb2YgR29kIGhlbHBpbmcgdGhlbS4KQXQgdGhlIHNhbWUgdGltZSBjYW1lIHRvIHRoZW0gVGF0bmFpLCBnb3Zlcm5vciBvbiB0aGlzIHNpZGUgdGhlIHJpdmVyLCBhbmQgU2hldGhhcmJvem5haSBhbmQgdGhlaXIgY29tcGFuaW9ucywgYW5kIHNhaWQgdGh1cyB1bnRvIHRoZW0sIFdobyBoYXRoIGNvbW1hbmRlZCB5b3UgdG8gYnVpbGQgdGhpcyBob3VzZSwgYW5kIHRvIG1ha2UgdXAgdGhpcyB3YWxsPwpUaGVuIHNhaWQgd2UgdW50byB0aGVtIGFmdGVyIHRoaXMgbWFubmVyLCBXaGF0IGFyZSB0aGUgbmFtZXMgb2YgdGhlIG1lbiB0aGF0IG1ha2UgdGhpcyBidWlsZGluZz8KQnV0IHRoZSBleWUgb2YgdGhlaXIgR29kIHdhcyB1cG9uIHRoZSBlbGRlcnMgb2YgdGhlIEpld3MsIHRoYXQgdGhleSBjb3VsZCBub3QgY2F1c2UgdGhlbSB0byBjZWFzZSwgdGlsbCB0aGUgbWF0dGVyIGNhbWUgdG8gRGFyaXVzOiBhbmQgdGhlbiB0aGV5IHJldHVybmVkIGFuc3dlciBieSBsZXR0ZXIgY29uY2VybmluZyB0aGlzIG1hdHRlci4KVGhlIGNvcHkgb2YgdGhlIGxldHRlciB0aGF0IFRhdG5haSwgZ292ZXJub3Igb24gdGhpcyBzaWRlIHRoZSByaXZlciwgYW5kIFNoZXRoYXJib3puYWkgYW5kIGhpcyBjb21wYW5pb25zIHRoZSBBcGhhcnNhY2hpdGVzLCB3aGljaCB3ZXJlIG9uIHRoaXMgc2lkZSB0aGUgcml2ZXIsIHNlbnQgdW50byBEYXJpdXMgdGhlIGtpbmc6ClRoZXkgc2VudCBhIGxldHRlciB1bnRvIGhpbSwgd2hlcmVpbiB3YXMgd3JpdHRlbiB0aHVzOyBVbnRvIERhcml1cyB0aGUga2luZywgYWxsIHBlYWNlLgpCZSBpdCBrbm93biB1bnRvIHRoZSBraW5nLCB0aGF0IHdlIHdlbnQgaW50byB0aGUgcHJvdmluY2Ugb2YgSnVkZWEsIHRvIHRoZSBob3VzZSBvZiB0aGUgZ3JlYXQgR29kLCB3aGljaCBpcyBidWlsZGVkIHdpdGggZ3JlYXQgc3RvbmVzLCBhbmQgdGltYmVyIGlzIGxhaWQgaW4gdGhlIHdhbGxzLCBhbmQgdGhpcyB3b3JrIGdvZXRoIGZhc3Qgb24sIGFuZCBwcm9zcGVyZXRoIGluIHRoZWlyIGhhbmRzLgpUaGVuIGFza2VkIHdlIHRob3NlIGVsZGVycywgYW5kIHNhaWQgdW50byB0aGVtIHRodXMsIFdobyBjb21tYW5kZWQgeW91IHRvIGJ1aWxkIHRoaXMgaG91c2UsIGFuZCB0byBtYWtlIHVwIHRoZXNlIHdhbGxzPwpXZSBhc2tlZCB0aGVpciBuYW1lcyBhbHNvLCB0byBjZXJ0aWZ5IHRoZWUsIHRoYXQgd2UgbWlnaHQgd3JpdGUgdGhlIG5hbWVzIG9mIHRoZSBtZW4gdGhhdCB3ZXJlIHRoZSBjaGllZiBvZiB0aGVtLgpBbmQgdGh1cyB0aGV5IHJldHVybmVkIHVzIGFuc3dlciwgc2F5aW5nLCBXZSBhcmUgdGhlIHNlcnZhbnRzIG9mIHRoZSBHb2Qgb2YgaGVhdmVuIGFuZCBlYXJ0aCwgYW5kIGJ1aWxkIHRoZSBob3VzZSB0aGF0IHdhcyBidWlsZGVkIHRoZXNlIG1hbnkgeWVhcnMgYWdvLCB3aGljaCBhIGdyZWF0IGtpbmcgb2YgSXNyYWVsIGJ1aWxkZWQgYW5kIHNldCB1cC4KQnV0IGFmdGVyIHRoYXQgb3VyIGZhdGhlcnMgaGFkIHByb3Zva2VkIHRoZSBHb2Qgb2YgaGVhdmVuIHVudG8gd3JhdGgsIGhlIGdhdmUgdGhlbSBpbnRvIHRoZSBoYW5kIG9mIE5lYnVjaGFkbmV6emFyIHRoZSBraW5nIG9mIEJhYnlsb24sIHRoZSBDaGFsZGVhbiwgd2hvIGRlc3Ryb3llZCB0aGlzIGhvdXNlLCBhbmQgY2FycmllZCB0aGUgcGVvcGxlIGF3YXkgaW50byBCYWJ5bG9uLgpCdXQgaW4gdGhlIGZpcnN0IHllYXIgb2YgQ3lydXMgdGhlIGtpbmcgb2YgQmFieWxvbiB0aGUgc2FtZSBraW5nIEN5cnVzIG1hZGUgYSBkZWNyZWUgdG8gYnVpbGQgdGhpcyBob3VzZSBvZiBHb2QuCkFuZCB0aGUgdmVzc2VscyBhbHNvIG9mIGdvbGQgYW5kIHNpbHZlciBvZiB0aGUgaG91c2Ugb2YgR29kLCB3aGljaCBOZWJ1Y2hhZG5lenphciB0b29rIG91dCBvZiB0aGUgdGVtcGxlIHRoYXQgd2FzIGluIEplcnVzYWxlbSwgYW5kIGJyb3VnaHQgdGhlbSBpbnRvIHRoZSB0ZW1wbGUgb2YgQmFieWxvbiwgdGhvc2UgZGlkIEN5cnVzIHRoZSBraW5nIHRha2Ugb3V0IG9mIHRoZSB0ZW1wbGUgb2YgQmFieWxvbiwgYW5kIHRoZXkgd2VyZSBkZWxpdmVyZWQgdW50byBvbmUsIHdob3NlIG5hbWUgd2FzIFNoZXNoYmF6emFyLCB3aG9tIGhlIGhhZCBtYWRlIGdvdmVybm9yOwpBbmQgc2FpZCB1bnRvIGhpbSwgVGFrZSB0aGVzZSB2ZXNzZWxzLCBnbywgY2FycnkgdGhlbSBpbnRvIHRoZSB0ZW1wbGUgdGhhdCBpcyBpbiBKZXJ1c2FsZW0sIGFuZCBsZXQgdGhlIGhvdXNlIG9mIEdvZCBiZSBidWlsZGVkIGluIGhpcyBwbGFjZS4KVGhlbiBjYW1lIHRoZSBzYW1lIFNoZXNoYmF6emFyLCBhbmQgbGFpZCB0aGUgZm91bmRhdGlvbiBvZiB0aGUgaG91c2Ugb2YgR29kIHdoaWNoIGlzIGluIEplcnVzYWxlbTogYW5kIHNpbmNlIHRoYXQgdGltZSBldmVuIHVudGlsIG5vdyBoYXRoIGl0IGJlZW4gaW4gYnVpbGRpbmcsIGFuZCB5ZXQgaXQgaXMgbm90IGZpbmlzaGVkLgpOb3cgdGhlcmVmb3JlLCBpZiBpdCBzZWVtIGdvb2QgdG8gdGhlIGtpbmcsIGxldCB0aGVyZSBiZSBzZWFyY2ggbWFkZSBpbiB0aGUga2luZydzIHRyZWFzdXJlIGhvdXNlLCB3aGljaCBpcyB0aGVyZSBhdCBCYWJ5bG9uLCB3aGV0aGVyIGl0IGJlIHNvLCB0aGF0IGEgZGVjcmVlIHdhcyBtYWRlIG9mIEN5cnVzIHRoZSBraW5nIHRvIGJ1aWxkIHRoaXMgaG91c2Ugb2YgR29kIGF0IEplcnVzYWxlbSwgYW5kIGxldCB0aGUga2luZyBzZW5kIGhpcyBwbGVhc3VyZSB0byB1cyBjb25jZXJuaW5nIHRoaXMgbWF0dGVyLgpUaGVuIERhcml1cyB0aGUga2luZyBtYWRlIGEgZGVjcmVlLCBhbmQgc2VhcmNoIHdhcyBtYWRlIGluIHRoZSBob3VzZSBvZiB0aGUgcm9sbHMsIHdoZXJlIHRoZSB0cmVhc3VyZXMgd2VyZSBsYWlkIHVwIGluIEJhYnlsb24uCkFuZCB0aGVyZSB3YXMgZm91bmQgYXQgQWNobWV0aGEsIGluIHRoZSBwYWxhY2UgdGhhdCBpcyBpbiB0aGUgcHJvdmluY2Ugb2YgdGhlIE1lZGVzLCBhIHJvbGwsIGFuZCB0aGVyZWluIHdhcyBhIHJlY29yZCB0aHVzIHdyaXR0ZW46CkluIHRoZSBmaXJzdCB5ZWFyIG9mIEN5cnVzIHRoZSBraW5nIHRoZSBzYW1lIEN5cnVzIHRoZSBraW5nIG1hZGUgYSBkZWNyZWUgY29uY2VybmluZyB0aGUgaG91c2Ugb2YgR29kIGF0IEplcnVzYWxlbSwgTGV0IHRoZSBob3VzZSBiZSBidWlsZGVkLCB0aGUgcGxhY2Ugd2hlcmUgdGhleSBvZmZlcmVkIHNhY3JpZmljZXMsIGFuZCBsZXQgdGhlIGZvdW5kYXRpb25zIHRoZXJlb2YgYmUgc3Ryb25nbHkgbGFpZDsgdGhlIGhlaWdodCB0aGVyZW9mIHRocmVlc2NvcmUgY3ViaXRzLCBhbmQgdGhlIGJyZWFkdGggdGhlcmVvZiB0aHJlZXNjb3JlIGN1Yml0czsKV2l0aCB0aHJlZSByb3dzIG9mIGdyZWF0IHN0b25lcywgYW5kIGEgcm93IG9mIG5ldyB0aW1iZXI6IGFuZCBsZXQgdGhlIGV4cGVuc2VzIGJlIGdpdmVuIG91dCBvZiB0aGUga2luZydzIGhvdXNlOgpBbmQgYWxzbyBsZXQgdGhlIGdvbGRlbiBhbmQgc2lsdmVyIHZlc3NlbHMgb2YgdGhlIGhvdXNlIG9mIEdvZCwgd2hpY2ggTmVidWNoYWRuZXp6YXIgdG9vayBmb3J0aCBvdXQgb2YgdGhlIHRlbXBsZSB3aGljaCBpcyBhdCBKZXJ1c2FsZW0sIGFuZCBicm91Z2h0IHVudG8gQmFieWxvbiwgYmUgcmVzdG9yZWQsIGFuZCBicm91Z2h0IGFnYWluIHVudG8gdGhlIHRlbXBsZSB3aGljaCBpcyBhdCBKZXJ1c2FsZW0sIGV2ZXJ5IG9uZSB0byBoaXMgcGxhY2UsIGFuZCBwbGFjZSB0aGVtIGluIHRoZSBob3VzZSBvZiBHb2QuCk5vdyB0aGVyZWZvcmUsIFRhdG5haSwgZ292ZXJub3IgYmV5b25kIHRoZSByaXZlciwgU2hldGhhcmJvem5haSwgYW5kIHlvdXIgY29tcGFuaW9ucyB0aGUgQXBoYXJzYWNoaXRlcywgd2hpY2ggYXJlIGJleW9uZCB0aGUgcml2ZXIsIGJlIHllIGZhciBmcm9tIHRoZW5jZToKTGV0IHRoZSB3b3JrIG9mIHRoaXMgaG91c2Ugb2YgR29kIGFsb25lOyBsZXQgdGhlIGdvdmVybm9yIG9mIHRoZSBKZXdzIGFuZCB0aGUgZWxkZXJzIG9mIHRoZSBKZXdzIGJ1aWxkIHRoaXMgaG91c2Ugb2YgR29kIGluIGhpcyBwbGFjZS4KTW9yZW92ZXIgSSBtYWtlIGEgZGVjcmVlIHdoYXQgeWUgc2hhbGwgZG8gdG8gdGhlIGVsZGVycyBvZiB0aGVzZSBKZXdzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhpcyBob3VzZSBvZiBHb2Q6IHRoYXQgb2YgdGhlIGtpbmcncyBnb29kcywgZXZlbiBvZiB0aGUgdHJpYnV0ZSBiZXlvbmQgdGhlIHJpdmVyLCBmb3J0aHdpdGggZXhwZW5zZXMgYmUgZ2l2ZW4gdW50byB0aGVzZSBtZW4sIHRoYXQgdGhleSBiZSBub3QgaGluZGVyZWQuCkFuZCB0aGF0IHdoaWNoIHRoZXkgaGF2ZSBuZWVkIG9mLCBib3RoIHlvdW5nIGJ1bGxvY2tzLCBhbmQgcmFtcywgYW5kIGxhbWJzLCBmb3IgdGhlIGJ1cm50IG9mZmVyaW5ncyBvZiB0aGUgR29kIG9mIGhlYXZlbiwgd2hlYXQsIHNhbHQsIHdpbmUsIGFuZCBvaWwsIGFjY29yZGluZyB0byB0aGUgYXBwb2ludG1lbnQgb2YgdGhlIHByaWVzdHMgd2hpY2ggYXJlIGF0IEplcnVzYWxlbSwgbGV0IGl0IGJlIGdpdmVuIHRoZW0gZGF5IGJ5IGRheSB3aXRob3V0IGZhaWw6ClRoYXQgdGhleSBtYXkgb2ZmZXIgc2FjcmlmaWNlcyBvZiBzd2VldCBzYXZvdXJzIHVudG8gdGhlIEdvZCBvZiBoZWF2ZW4sIGFuZCBwcmF5IGZvciB0aGUgbGlmZSBvZiB0aGUga2luZywgYW5kIG9mIGhpcyBzb25zLgpBbHNvIEkgaGF2ZSBtYWRlIGEgZGVjcmVlLCB0aGF0IHdob3NvZXZlciBzaGFsbCBhbHRlciB0aGlzIHdvcmQsIGxldCB0aW1iZXIgYmUgcHVsbGVkIGRvd24gZnJvbSBoaXMgaG91c2UsIGFuZCBiZWluZyBzZXQgdXAsIGxldCBoaW0gYmUgaGFuZ2VkIHRoZXJlb247IGFuZCBsZXQgaGlzIGhvdXNlIGJlIG1hZGUgYSBkdW5naGlsbCBmb3IgdGhpcy4KQW5kIHRoZSBHb2QgdGhhdCBoYXRoIGNhdXNlZCBoaXMgbmFtZSB0byBkd2VsbCB0aGVyZSBkZXN0cm95IGFsbCBraW5ncyBhbmQgcGVvcGxlLCB0aGF0IHNoYWxsIHB1dCB0byB0aGVpciBoYW5kIHRvIGFsdGVyIGFuZCB0byBkZXN0cm95IHRoaXMgaG91c2Ugb2YgR29kIHdoaWNoIGlzIGF0IEplcnVzYWxlbS4gSSBEYXJpdXMgaGF2ZSBtYWRlIGEgZGVjcmVlOyBsZXQgaXQgYmUgZG9uZSB3aXRoIHNwZWVkLgpUaGVuIFRhdG5haSwgZ292ZXJub3Igb24gdGhpcyBzaWRlIHRoZSByaXZlciwgU2hldGhhcmJvem5haSwgYW5kIHRoZWlyIGNvbXBhbmlvbnMsIGFjY29yZGluZyB0byB0aGF0IHdoaWNoIERhcml1cyB0aGUga2luZyBoYWQgc2VudCwgc28gdGhleSBkaWQgc3BlZWRpbHkuCkFuZCB0aGUgZWxkZXJzIG9mIHRoZSBKZXdzIGJ1aWxkZWQsIGFuZCB0aGV5IHByb3NwZXJlZCB0aHJvdWdoIHRoZSBwcm9waGVzeWluZyBvZiBIYWdnYWkgdGhlIHByb3BoZXQgYW5kIFplY2hhcmlhaCB0aGUgc29uIG9mIElkZG8uIEFuZCB0aGV5IGJ1aWxkZWQsIGFuZCBmaW5pc2hlZCBpdCwgYWNjb3JkaW5nIHRvIHRoZSBjb21tYW5kbWVudCBvZiB0aGUgR29kIG9mIElzcmFlbCwgYW5kIGFjY29yZGluZyB0byB0aGUgY29tbWFuZG1lbnQgb2YgQ3lydXMsIGFuZCBEYXJpdXMsIGFuZCBBcnRheGVyeGVzIGtpbmcgb2YgUGVyc2lhLgpBbmQgdGhpcyBob3VzZSB3YXMgZmluaXNoZWQgb24gdGhlIHRoaXJkIGRheSBvZiB0aGUgbW9udGggQWRhciwgd2hpY2ggd2FzIGluIHRoZSBzaXh0aCB5ZWFyIG9mIHRoZSByZWlnbiBvZiBEYXJpdXMgdGhlIGtpbmcuCkFuZCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLCB0aGUgcHJpZXN0cywgYW5kIHRoZSBMZXZpdGVzLCBhbmQgdGhlIHJlc3Qgb2YgdGhlIGNoaWxkcmVuIG9mIHRoZSBjYXB0aXZpdHksIGtlcHQgdGhlIGRlZGljYXRpb24gb2YgdGhpcyBob3VzZSBvZiBHb2Qgd2l0aCBqb3kuCkFuZCBvZmZlcmVkIGF0IHRoZSBkZWRpY2F0aW9uIG9mIHRoaXMgaG91c2Ugb2YgR29kIGFuIGh1bmRyZWQgYnVsbG9ja3MsIHR3byBodW5kcmVkIHJhbXMsIGZvdXIgaHVuZHJlZCBsYW1iczsgYW5kIGZvciBhIHNpbiBvZmZlcmluZyBmb3IgYWxsIElzcmFlbCwgdHdlbHZlIGhlIGdvYXRzLCBhY2NvcmRpbmcgdG8gdGhlIG51bWJlciBvZiB0aGUgdHJpYmVzIG9mIElzcmFlbC4KQW5kIHRoZXkgc2V0IHRoZSBwcmllc3RzIGluIHRoZWlyIGRpdmlzaW9ucywgYW5kIHRoZSBMZXZpdGVzIGluIHRoZWlyIGNvdXJzZXMsIGZvciB0aGUgc2VydmljZSBvZiBHb2QsIHdoaWNoIGlzIGF0IEplcnVzYWxlbTsgYXMgaXQgaXMgd3JpdHRlbiBpbiB0aGUgYm9vayBvZiBNb3Nlcy4KQW5kIHRoZSBjaGlsZHJlbiBvZiB0aGUgY2FwdGl2aXR5IGtlcHQgdGhlIHBhc3NvdmVyIHVwb24gdGhlIGZvdXJ0ZWVudGggZGF5IG9mIHRoZSBmaXJzdCBtb250aC4KRm9yIHRoZSBwcmllc3RzIGFuZCB0aGUgTGV2aXRlcyB3ZXJlIHB1cmlmaWVkIHRvZ2V0aGVyLCBhbGwgb2YgdGhlbSB3ZXJlIHB1cmUsIGFuZCBraWxsZWQgdGhlIHBhc3NvdmVyIGZvciBhbGwgdGhlIGNoaWxkcmVuIG9mIHRoZSBjYXB0aXZpdHksIGFuZCBmb3IgdGhlaXIgYnJldGhyZW4gdGhlIHByaWVzdHMsIGFuZCBmb3IgdGhlbXNlbHZlcy4KQW5kIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIHdoaWNoIHdlcmUgY29tZSBhZ2FpbiBvdXQgb2YgY2FwdGl2aXR5LCBhbmQgYWxsIHN1Y2ggYXMgaGFkIHNlcGFyYXRlZCB0aGVtc2VsdmVzIHVudG8gdGhlbSBmcm9tIHRoZSBmaWx0aGluZXNzIG9mIHRoZSBoZWF0aGVuIG9mIHRoZSBsYW5kLCB0byBzZWVrIHRoZSBMT1JEIEdvZCBvZiBJc3JhZWwsIGRpZCBlYXQsCkFuZCBrZXB0IHRoZSBmZWFzdCBvZiB1bmxlYXZlbmVkIGJyZWFkIHNldmVuIGRheXMgd2l0aCBqb3k6IGZvciB0aGUgTE9SRCBoYWQgbWFkZSB0aGVtIGpveWZ1bCwgYW5kIHR1cm5lZCB0aGUgaGVhcnQgb2YgdGhlIGtpbmcgb2YgQXNzeXJpYSB1bnRvIHRoZW0sIHRvIHN0cmVuZ3RoZW4gdGhlaXIgaGFuZHMgaW4gdGhlIHdvcmsgb2YgdGhlIGhvdXNlIG9mIEdvZCwgdGhlIEdvZCBvZiBJc3JhZWwuCk5vdyBhZnRlciB0aGVzZSB0aGluZ3MsIGluIHRoZSByZWlnbiBvZiBBcnRheGVyeGVzIGtpbmcgb2YgUGVyc2lhLCBFenJhIHRoZSBzb24gb2YgU2VyYWlhaCwgdGhlIHNvbiBvZiBBemFyaWFoLCB0aGUgc29uIG9mIEhpbGtpYWgsClRoZSBzb24gb2YgU2hhbGx1bSwgdGhlIHNvbiBvZiBaYWRvaywgdGhlIHNvbiBvZiBBaGl0dWIsClRoZSBzb24gb2YgQW1hcmlhaCwgdGhlIHNvbiBvZiBBemFyaWFoLCB0aGUgc29uIG9mIE1lcmFpb3RoLApUaGUgc29uIG9mIFplcmFoaWFoLCB0aGUgc29uIG9mIFV6emksIHRoZSBzb24gb2YgQnVra2ksClRoZSBzb24gb2YgQWJpc2h1YSwgdGhlIHNvbiBvZiBQaGluZWhhcywgdGhlIHNvbiBvZiBFbGVhemFyLCB0aGUgc29uIG9mIEFhcm9uIHRoZSBjaGllZiBwcmllc3Q6ClRoaXMgRXpyYSB3ZW50IHVwIGZyb20gQmFieWxvbjsgYW5kIGhlIHdhcyBhIHJlYWR5IHNjcmliZSBpbiB0aGUgbGF3IG9mIE1vc2VzLCB3aGljaCB0aGUgTE9SRCBHb2Qgb2YgSXNyYWVsIGhhZCBnaXZlbjogYW5kIHRoZSBraW5nIGdyYW50ZWQgaGltIGFsbCBoaXMgcmVxdWVzdCwgYWNjb3JkaW5nIHRvIHRoZSBoYW5kIG9mIHRoZSBMT1JEIGhpcyBHb2QgdXBvbiBoaW0uCkFuZCB0aGVyZSB3ZW50IHVwIHNvbWUgb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgYW5kIG9mIHRoZSBwcmllc3RzLCBhbmQgdGhlIExldml0ZXMsIGFuZCB0aGUgc2luZ2VycywgYW5kIHRoZSBwb3J0ZXJzLCBhbmQgdGhlIE5ldGhpbmltcywgdW50byBKZXJ1c2FsZW0sIGluIHRoZSBzZXZlbnRoIHllYXIgb2YgQXJ0YXhlcnhlcyB0aGUga2luZy4KQW5kIGhlIGNhbWUgdG8gSmVydXNhbGVtIGluIHRoZSBmaWZ0aCBtb250aCwgd2hpY2ggd2FzIGluIHRoZSBzZXZlbnRoIHllYXIgb2YgdGhlIGtpbmcuCkZvciB1cG9uIHRoZSBmaXJzdCBkYXkgb2YgdGhlIGZpcnN0IG1vbnRoIGJlZ2FuIGhlIHRvIGdvIHVwIGZyb20gQmFieWxvbiwgYW5kIG9uIHRoZSBmaXJzdCBkYXkgb2YgdGhlIGZpZnRoIG1vbnRoIGNhbWUgaGUgdG8gSmVydXNhbGVtLCBhY2NvcmRpbmcgdG8gdGhlIGdvb2QgaGFuZCBvZiBoaXMgR29kIHVwb24gaGltLgpGb3IgRXpyYSBoYWQgcHJlcGFyZWQgaGlzIGhlYXJ0IHRvIHNlZWsgdGhlIGxhdyBvZiB0aGUgTE9SRCwgYW5kIHRvIGRvIGl0LCBhbmQgdG8gdGVhY2ggaW4gSXNyYWVsIHN0YXR1dGVzIGFuZCBqdWRnbWVudHMuCk5vdyB0aGlzIGlzIHRoZSBjb3B5IG9mIHRoZSBsZXR0ZXIgdGhhdCB0aGUga2luZyBBcnRheGVyeGVzIGdhdmUgdW50byBFenJhIHRoZSBwcmllc3QsIHRoZSBzY3JpYmUsIGV2ZW4gYSBzY3JpYmUgb2YgdGhlIHdvcmRzIG9mIHRoZSBjb21tYW5kbWVudHMgb2YgdGhlIExPUkQsIGFuZCBvZiBoaXMgc3RhdHV0ZXMgdG8gSXNyYWVsLgpBcnRheGVyeGVzLCBraW5nIG9mIGtpbmdzLCB1bnRvIEV6cmEgdGhlIHByaWVzdCwgYSBzY3JpYmUgb2YgdGhlIGxhdyBvZiB0aGUgR29kIG9mIGhlYXZlbiwgcGVyZmVjdCBwZWFjZSwgYW5kIGF0IHN1Y2ggYSB0aW1lLgpJIG1ha2UgYSBkZWNyZWUsIHRoYXQgYWxsIHRoZXkgb2YgdGhlIHBlb3BsZSBvZiBJc3JhZWwsIGFuZCBvZiBoaXMgcHJpZXN0cyBhbmQgTGV2aXRlcywgaW4gbXkgcmVhbG0sIHdoaWNoIGFyZSBtaW5kZWQgb2YgdGhlaXIgb3duIGZyZWV3aWxsIHRvIGdvIHVwIHRvIEplcnVzYWxlbSwgZ28gd2l0aCB0aGVlLgpGb3Jhc211Y2ggYXMgdGhvdSBhcnQgc2VudCBvZiB0aGUga2luZywgYW5kIG9mIGhpcyBzZXZlbiBjb3Vuc2VsbG9ycywgdG8gZW5xdWlyZSBjb25jZXJuaW5nIEp1ZGFoIGFuZCBKZXJ1c2FsZW0sIGFjY29yZGluZyB0byB0aGUgbGF3IG9mIHRoeSBHb2Qgd2hpY2ggaXMgaW4gdGhpbmUgaGFuZDsKQW5kIHRvIGNhcnJ5IHRoZSBzaWx2ZXIgYW5kIGdvbGQsIHdoaWNoIHRoZSBraW5nIGFuZCBoaXMgY291bnNlbGxvcnMgaGF2ZSBmcmVlbHkgb2ZmZXJlZCB1bnRvIHRoZSBHb2Qgb2YgSXNyYWVsLCB3aG9zZSBoYWJpdGF0aW9uIGlzIGluIEplcnVzYWxlbSwKQW5kIGFsbCB0aGUgc2lsdmVyIGFuZCBnb2xkIHRoYXQgdGhvdSBjYW5zdCBmaW5kIGluIGFsbCB0aGUgcHJvdmluY2Ugb2YgQmFieWxvbiwgd2l0aCB0aGUgZnJlZXdpbGwgb2ZmZXJpbmcgb2YgdGhlIHBlb3BsZSwgYW5kIG9mIHRoZSBwcmllc3RzLCBvZmZlcmluZyB3aWxsaW5nbHkgZm9yIHRoZSBob3VzZSBvZiB0aGVpciBHb2Qgd2hpY2ggaXMgaW4gSmVydXNhbGVtOgpUaGF0IHRob3UgbWF5ZXN0IGJ1eSBzcGVlZGlseSB3aXRoIHRoaXMgbW9uZXkgYnVsbG9ja3MsIHJhbXMsIGxhbWJzLCB3aXRoIHRoZWlyIG1lYXQgb2ZmZXJpbmdzIGFuZCB0aGVpciBkcmluayBvZmZlcmluZ3MsIGFuZCBvZmZlciB0aGVtIHVwb24gdGhlIGFsdGFyIG9mIHRoZSBob3VzZSBvZiB5b3VyIEdvZCB3aGljaCBpcyBpbiBKZXJ1c2FsZW0uCkFuZCB3aGF0c29ldmVyIHNoYWxsIHNlZW0gZ29vZCB0byB0aGVlLCBhbmQgdG8gdGh5IGJyZXRocmVuLCB0byBkbyB3aXRoIHRoZSByZXN0IG9mIHRoZSBzaWx2ZXIgYW5kIHRoZSBnb2xkLCB0aGF0IGRvIGFmdGVyIHRoZSB3aWxsIG9mIHlvdXIgR29kLgpUaGUgdmVzc2VscyBhbHNvIHRoYXQgYXJlIGdpdmVuIHRoZWUgZm9yIHRoZSBzZXJ2aWNlIG9mIHRoZSBob3VzZSBvZiB0aHkgR29kLCB0aG9zZSBkZWxpdmVyIHRob3UgYmVmb3JlIHRoZSBHb2Qgb2YgSmVydXNhbGVtLgpBbmQgd2hhdHNvZXZlciBtb3JlIHNoYWxsIGJlIG5lZWRmdWwgZm9yIHRoZSBob3VzZSBvZiB0aHkgR29kLCB3aGljaCB0aG91IHNoYWx0IGhhdmUgb2NjYXNpb24gdG8gYmVzdG93LCBiZXN0b3cgaXQgb3V0IG9mIHRoZSBraW5nJ3MgdHJlYXN1cmUgaG91c2UuCkFuZCBJLCBldmVuIEkgQXJ0YXhlcnhlcyB0aGUga2luZywgZG8gbWFrZSBhIGRlY3JlZSB0byBhbGwgdGhlIHRyZWFzdXJlcnMgd2hpY2ggYXJlIGJleW9uZCB0aGUgcml2ZXIsIHRoYXQgd2hhdHNvZXZlciBFenJhIHRoZSBwcmllc3QsIHRoZSBzY3JpYmUgb2YgdGhlIGxhdyBvZiB0aGUgR29kIG9mIGhlYXZlbiwgc2hhbGwgcmVxdWlyZSBvZiB5b3UsIGl0IGJlIGRvbmUgc3BlZWRpbHksClVudG8gYW4gaHVuZHJlZCB0YWxlbnRzIG9mIHNpbHZlciwgYW5kIHRvIGFuIGh1bmRyZWQgbWVhc3VyZXMgb2Ygd2hlYXQsIGFuZCB0byBhbiBodW5kcmVkIGJhdGhzIG9mIHdpbmUsIGFuZCB0byBhbiBodW5kcmVkIGJhdGhzIG9mIG9pbCwgYW5kIHNhbHQgd2l0aG91dCBwcmVzY3JpYmluZyBob3cgbXVjaC4KV2hhdHNvZXZlciBpcyBjb21tYW5kZWQgYnkgdGhlIEdvZCBvZiBoZWF2ZW4sIGxldCBpdCBiZSBkaWxpZ2VudGx5IGRvbmUgZm9yIHRoZSBob3VzZSBvZiB0aGUgR29kIG9mIGhlYXZlbjogZm9yIHdoeSBzaG91bGQgdGhlcmUgYmUgd3JhdGggYWdhaW5zdCB0aGUgcmVhbG0gb2YgdGhlIGtpbmcgYW5kIGhpcyBzb25zPwpBbHNvIHdlIGNlcnRpZnkgeW91LCB0aGF0IHRvdWNoaW5nIGFueSBvZiB0aGUgcHJpZXN0cyBhbmQgTGV2aXRlcywgc2luZ2VycywgcG9ydGVycywgTmV0aGluaW1zLCBvciBtaW5pc3RlcnMgb2YgdGhpcyBob3VzZSBvZiBHb2QsIGl0IHNoYWxsIG5vdCBiZSBsYXdmdWwgdG8gaW1wb3NlIHRvbGwsIHRyaWJ1dGUsIG9yIGN1c3RvbSwgdXBvbiB0aGVtLgpBbmQgdGhvdSwgRXpyYSwgYWZ0ZXIgdGhlIHdpc2RvbSBvZiB0aHkgR29kLCB0aGF0IGlzIGluIHRoaW5lIGhhbmQsIHNldCBtYWdpc3RyYXRlcyBhbmQganVkZ2VzLCB3aGljaCBtYXkganVkZ2UgYWxsIHRoZSBwZW9wbGUgdGhhdCBhcmUgYmV5b25kIHRoZSByaXZlciwgYWxsIHN1Y2ggYXMga25vdyB0aGUgbGF3cyBvZiB0aHkgR29kOyBhbmQgdGVhY2ggeWUgdGhlbSB0aGF0IGtub3cgdGhlbSBub3QuCkFuZCB3aG9zb2V2ZXIgd2lsbCBub3QgZG8gdGhlIGxhdyBvZiB0aHkgR29kLCBhbmQgdGhlIGxhdyBvZiB0aGUga2luZywgbGV0IGp1ZGdtZW50IGJlIGV4ZWN1dGVkIHNwZWVkaWx5IHVwb24gaGltLCB3aGV0aGVyIGl0IGJlIHVudG8gZGVhdGgsIG9yIHRvIGJhbmlzaG1lbnQsIG9yIHRvIGNvbmZpc2NhdGlvbiBvZiBnb29kcywgb3IgdG8gaW1wcmlzb25tZW50LgpCbGVzc2VkIGJlIHRoZSBMT1JEIEdvZCBvZiBvdXIgZmF0aGVycywgd2hpY2ggaGF0aCBwdXQgc3VjaCBhIHRoaW5nIGFzIHRoaXMgaW4gdGhlIGtpbmcncyBoZWFydCwgdG8gYmVhdXRpZnkgdGhlIGhvdXNlIG9mIHRoZSBMT1JEIHdoaWNoIGlzIGluIEplcnVzYWxlbToKQW5kIGhhdGggZXh0ZW5kZWQgbWVyY3kgdW50byBtZSBiZWZvcmUgdGhlIGtpbmcsIGFuZCBoaXMgY291bnNlbGxvcnMsIGFuZCBiZWZvcmUgYWxsIHRoZSBraW5nJ3MgbWlnaHR5IHByaW5jZXMuIEFuZCBJIHdhcyBzdHJlbmd0aGVuZWQgYXMgdGhlIGhhbmQgb2YgdGhlIExPUkQgbXkgR29kIHdhcyB1cG9uIG1lLCBhbmQgSSBnYXRoZXJlZCB0b2dldGhlciBvdXQgb2YgSXNyYWVsIGNoaWVmIG1lbiB0byBnbyB1cCB3aXRoIG1lLgpUaGVzZSBhcmUgbm93IHRoZSBjaGllZiBvZiB0aGVpciBmYXRoZXJzLCBhbmQgdGhpcyBpcyB0aGUgZ2VuZWFsb2d5IG9mIHRoZW0gdGhhdCB3ZW50IHVwIHdpdGggbWUgZnJvbSBCYWJ5bG9uLCBpbiB0aGUgcmVpZ24gb2YgQXJ0YXhlcnhlcyB0aGUga2luZy4KT2YgdGhlIHNvbnMgb2YgUGhpbmVoYXM7IEdlcnNob206IG9mIHRoZSBzb25zIG9mIEl0aGFtYXI7IERhbmllbDogb2YgdGhlIHNvbnMgb2YgRGF2aWQ7IEhhdHR1c2guCk9mIHRoZSBzb25zIG9mIFNoZWNoYW5pYWgsIG9mIHRoZSBzb25zIG9mIFBoYXJvc2g7IFplY2hhcmlhaDogYW5kIHdpdGggaGltIHdlcmUgcmVja29uZWQgYnkgZ2VuZWFsb2d5IG9mIHRoZSBtYWxlcyBhbiBodW5kcmVkIGFuZCBmaWZ0eS4KT2YgdGhlIHNvbnMgb2YgUGFoYXRobW9hYjsgRWxpaG9lbmFpIHRoZSBzb24gb2YgWmVyYWhpYWgsIGFuZCB3aXRoIGhpbSB0d28gaHVuZHJlZCBtYWxlcy4KT2YgdGhlIHNvbnMgb2YgU2hlY2hhbmlhaDsgdGhlIHNvbiBvZiBKYWhhemllbCwgYW5kIHdpdGggaGltIHRocmVlIGh1bmRyZWQgbWFsZXMuCk9mIHRoZSBzb25zIGFsc28gb2YgQWRpbjsgRWJlZCB0aGUgc29uIG9mIEpvbmF0aGFuLCBhbmQgd2l0aCBoaW0gZmlmdHkgbWFsZXMuCkFuZCBvZiB0aGUgc29ucyBvZiBFbGFtOyBKZXNoYWlhaCB0aGUgc29uIG9mIEF0aGFsaWFoLCBhbmQgd2l0aCBoaW0gc2V2ZW50eSBtYWxlcy4KQW5kIG9mIHRoZSBzb25zIG9mIFNoZXBoYXRpYWg7IFplYmFkaWFoIHRoZSBzb24gb2YgTWljaGFlbCwgYW5kIHdpdGggaGltIGZvdXJzY29yZSBtYWxlcy4KT2YgdGhlIHNvbnMgb2YgSm9hYjsgT2JhZGlhaCB0aGUgc29uIG9mIEplaGllbCwgYW5kIHdpdGggaGltIHR3byBodW5kcmVkIGFuZCBlaWdodGVlbiBtYWxlcy4KQW5kIG9mIHRoZSBzb25zIG9mIFNoZWxvbWl0aDsgdGhlIHNvbiBvZiBKb3NpcGhpYWgsIGFuZCB3aXRoIGhpbSBhbiBodW5kcmVkIGFuZCB0aHJlZXNjb3JlIG1hbGVzLgpBbmQgb2YgdGhlIHNvbnMgb2YgQmViYWk7IFplY2hhcmlhaCB0aGUgc29uIG9mIEJlYmFpLCBhbmQgd2l0aCBoaW0gdHdlbnR5IGFuZCBlaWdodCBtYWxlcy4KQW5kIG9mIHRoZSBzb25zIG9mIEF6Z2FkOyBKb2hhbmFuIHRoZSBzb24gb2YgSGFra2F0YW4sIGFuZCB3aXRoIGhpbSBhbiBodW5kcmVkIGFuZCB0ZW4gbWFsZXMuCkFuZCBvZiB0aGUgbGFzdCBzb25zIG9mIEFkb25pa2FtLCB3aG9zZSBuYW1lcyBhcmUgdGhlc2UsIEVsaXBoZWxldCwgSmVpZWwsIGFuZCBTaGVtYWlhaCwgYW5kIHdpdGggdGhlbSB0aHJlZXNjb3JlIG1hbGVzLgpPZiB0aGUgc29ucyBhbHNvIG9mIEJpZ3ZhaTsgVXRoYWksIGFuZCBaYWJidWQsIGFuZCB3aXRoIHRoZW0gc2V2ZW50eSBtYWxlcy4KQW5kIEkgZ2F0aGVyZWQgdGhlbSB0b2dldGhlciB0byB0aGUgcml2ZXIgdGhhdCBydW5uZXRoIHRvIEFoYXZhOyBhbmQgdGhlcmUgYWJvZGUgd2UgaW4gdGVudHMgdGhyZWUgZGF5czogYW5kIEkgdmlld2VkIHRoZSBwZW9wbGUsIGFuZCB0aGUgcHJpZXN0cywgYW5kIGZvdW5kIHRoZXJlIG5vbmUgb2YgdGhlIHNvbnMgb2YgTGV2aS4KVGhlbiBzZW50IEkgZm9yIEVsaWV6ZXIsIGZvciBBcmllbCwgZm9yIFNoZW1haWFoLCBhbmQgZm9yIEVsbmF0aGFuLCBhbmQgZm9yIEphcmliLCBhbmQgZm9yIEVsbmF0aGFuLCBhbmQgZm9yIE5hdGhhbiwgYW5kIGZvciBaZWNoYXJpYWgsIGFuZCBmb3IgTWVzaHVsbGFtLCBjaGllZiBtZW47IGFsc28gZm9yIEpvaWFyaWIsIGFuZCBmb3IgRWxuYXRoYW4sIG1lbiBvZiB1bmRlcnN0YW5kaW5nLgpBbmQgSSBzZW50IHRoZW0gd2l0aCBjb21tYW5kbWVudCB1bnRvIElkZG8gdGhlIGNoaWVmIGF0IHRoZSBwbGFjZSBDYXNpcGhpYSwgYW5kIEkgdG9sZCB0aGVtIHdoYXQgdGhleSBzaG91bGQgc2F5IHVudG8gSWRkbywgYW5kIHRvIGhpcyBicmV0aHJlbiB0aGUgTmV0aGluaW1zLCBhdCB0aGUgcGxhY2UgQ2FzaXBoaWEsIHRoYXQgdGhleSBzaG91bGQgYnJpbmcgdW50byB1cyBtaW5pc3RlcnMgZm9yIHRoZSBob3VzZSBvZiBvdXIgR29kLgpBbmQgYnkgdGhlIGdvb2QgaGFuZCBvZiBvdXIgR29kIHVwb24gdXMgdGhleSBicm91Z2h0IHVzIGEgbWFuIG9mIHVuZGVyc3RhbmRpbmcsIG9mIHRoZSBzb25zIG9mIE1haGxpLCB0aGUgc29uIG9mIExldmksIHRoZSBzb24gb2YgSXNyYWVsOyBhbmQgU2hlcmViaWFoLCB3aXRoIGhpcyBzb25zIGFuZCBoaXMgYnJldGhyZW4sIGVpZ2h0ZWVuOwpBbmQgSGFzaGFiaWFoLCBhbmQgd2l0aCBoaW0gSmVzaGFpYWggb2YgdGhlIHNvbnMgb2YgTWVyYXJpLCBoaXMgYnJldGhyZW4gYW5kIHRoZWlyIHNvbnMsIHR3ZW50eTsKQWxzbyBvZiB0aGUgTmV0aGluaW1zLCB3aG9tIERhdmlkIGFuZCB0aGUgcHJpbmNlcyBoYWQgYXBwb2ludGVkIGZvciB0aGUgc2VydmljZSBvZiB0aGUgTGV2aXRlcywgdHdvIGh1bmRyZWQgYW5kIHR3ZW50eSBOZXRoaW5pbXM6IGFsbCBvZiB0aGVtIHdlcmUgZXhwcmVzc2VkIGJ5IG5hbWUuClRoZW4gSSBwcm9jbGFpbWVkIGEgZmFzdCB0aGVyZSwgYXQgdGhlIHJpdmVyIG9mIEFoYXZhLCB0aGF0IHdlIG1pZ2h0IGFmZmxpY3Qgb3Vyc2VsdmVzIGJlZm9yZSBvdXIgR29kLCB0byBzZWVrIG9mIGhpbSBhIHJpZ2h0IHdheSBmb3IgdXMsIGFuZCBmb3Igb3VyIGxpdHRsZSBvbmVzLCBhbmQgZm9yIGFsbCBvdXIgc3Vic3RhbmNlLgpGb3IgSSB3YXMgYXNoYW1lZCB0byByZXF1aXJlIG9mIHRoZSBraW5nIGEgYmFuZCBvZiBzb2xkaWVycyBhbmQgaG9yc2VtZW4gdG8gaGVscCB1cyBhZ2FpbnN0IHRoZSBlbmVteSBpbiB0aGUgd2F5OiBiZWNhdXNlIHdlIGhhZCBzcG9rZW4gdW50byB0aGUga2luZywgc2F5aW5nLCBUaGUgaGFuZCBvZiBvdXIgR29kIGlzIHVwb24gYWxsIHRoZW0gZm9yIGdvb2QgdGhhdCBzZWVrIGhpbTsgYnV0IGhpcyBwb3dlciBhbmQgaGlzIHdyYXRoIGlzIGFnYWluc3QgYWxsIHRoZW0gdGhhdCBmb3JzYWtlIGhpbS4KU28gd2UgZmFzdGVkIGFuZCBiZXNvdWdodCBvdXIgR29kIGZvciB0aGlzOiBhbmQgaGUgd2FzIGludHJlYXRlZCBvZiB1cy4KVGhlbiBJIHNlcGFyYXRlZCB0d2VsdmUgb2YgdGhlIGNoaWVmIG9mIHRoZSBwcmllc3RzLCBTaGVyZWJpYWgsIEhhc2hhYmlhaCwgYW5kIHRlbiBvZiB0aGVpciBicmV0aHJlbiB3aXRoIHRoZW0sCkFuZCB3ZWlnaGVkIHVudG8gdGhlbSB0aGUgc2lsdmVyLCBhbmQgdGhlIGdvbGQsIGFuZCB0aGUgdmVzc2VscywgZXZlbiB0aGUgb2ZmZXJpbmcgb2YgdGhlIGhvdXNlIG9mIG91ciBHb2QsIHdoaWNoIHRoZSBraW5nLCBhbmQgaGlzIGNvdW5zZWxsb3JzLCBhbmQgaGlzIGxvcmRzLCBhbmQgYWxsIElzcmFlbCB0aGVyZSBwcmVzZW50LCBoYWQgb2ZmZXJlZDoKSSBldmVuIHdlaWdoZWQgdW50byB0aGVpciBoYW5kIHNpeCBodW5kcmVkIGFuZCBmaWZ0eSB0YWxlbnRzIG9mIHNpbHZlciwgYW5kIHNpbHZlciB2ZXNzZWxzIGFuIGh1bmRyZWQgdGFsZW50cywgYW5kIG9mIGdvbGQgYW4gaHVuZHJlZCB0YWxlbnRzOwpBbHNvIHR3ZW50eSBiYXNvbnMgb2YgZ29sZCwgb2YgYSB0aG91c2FuZCBkcmFtczsgYW5kIHR3byB2ZXNzZWxzIG9mIGZpbmUgY29wcGVyLCBwcmVjaW91cyBhcyBnb2xkLgpBbmQgSSBzYWlkIHVudG8gdGhlbSwgWWUgYXJlIGhvbHkgdW50byB0aGUgTE9SRDsgdGhlIHZlc3NlbHMgYXJlIGhvbHkgYWxzbzsgYW5kIHRoZSBzaWx2ZXIgYW5kIHRoZSBnb2xkIGFyZSBhIGZyZWV3aWxsIG9mZmVyaW5nIHVudG8gdGhlIExPUkQgR29kIG9mIHlvdXIgZmF0aGVycy4KV2F0Y2ggeWUsIGFuZCBrZWVwIHRoZW0sIHVudGlsIHllIHdlaWdoIHRoZW0gYmVmb3JlIHRoZSBjaGllZiBvZiB0aGUgcHJpZXN0cyBhbmQgdGhlIExldml0ZXMsIGFuZCBjaGllZiBvZiB0aGUgZmF0aGVycyBvZiBJc3JhZWwsIGF0IEplcnVzYWxlbSwgaW4gdGhlIGNoYW1iZXJzIG9mIHRoZSBob3VzZSBvZiB0aGUgTE9SRC4KU28gdG9vayB0aGUgcHJpZXN0cyBhbmQgdGhlIExldml0ZXMgdGhlIHdlaWdodCBvZiB0aGUgc2lsdmVyLCBhbmQgdGhlIGdvbGQsIGFuZCB0aGUgdmVzc2VscywgdG8gYnJpbmcgdGhlbSB0byBKZXJ1c2FsZW0gdW50byB0aGUgaG91c2Ugb2Ygb3VyIEdvZC4KVGhlbiB3ZSBkZXBhcnRlZCBmcm9tIHRoZSByaXZlciBvZiBBaGF2YSBvbiB0aGUgdHdlbGZ0aCBkYXkgb2YgdGhlIGZpcnN0IG1vbnRoLCB0byBnbyB1bnRvIEplcnVzYWxlbTogYW5kIHRoZSBoYW5kIG9mIG91ciBHb2Qgd2FzIHVwb24gdXMsIGFuZCBoZSBkZWxpdmVyZWQgdXMgZnJvbSB0aGUgaGFuZCBvZiB0aGUgZW5lbXksIGFuZCBvZiBzdWNoIGFzIGxheSBpbiB3YWl0IGJ5IHRoZSB3YXkuCkFuZCB3ZSBjYW1lIHRvIEplcnVzYWxlbSwgYW5kIGFib2RlIHRoZXJlIHRocmVlIGRheXMuCk5vdyBvbiB0aGUgZm91cnRoIGRheSB3YXMgdGhlIHNpbHZlciBhbmQgdGhlIGdvbGQgYW5kIHRoZSB2ZXNzZWxzIHdlaWdoZWQgaW4gdGhlIGhvdXNlIG9mIG91ciBHb2QgYnkgdGhlIGhhbmQgb2YgTWVyZW1vdGggdGhlIHNvbiBvZiBVcmlhaCB0aGUgcHJpZXN0OyBhbmQgd2l0aCBoaW0gd2FzIEVsZWF6YXIgdGhlIHNvbiBvZiBQaGluZWhhczsgYW5kIHdpdGggdGhlbSB3YXMgSm96YWJhZCB0aGUgc29uIG9mIEplc2h1YSwgYW5kIE5vYWRpYWggdGhlIHNvbiBvZiBCaW5udWksIExldml0ZXM7CkJ5IG51bWJlciBhbmQgYnkgd2VpZ2h0IG9mIGV2ZXJ5IG9uZTogYW5kIGFsbCB0aGUgd2VpZ2h0IHdhcyB3cml0dGVuIGF0IHRoYXQgdGltZS4KQWxzbyB0aGUgY2hpbGRyZW4gb2YgdGhvc2UgdGhhdCBoYWQgYmVlbiBjYXJyaWVkIGF3YXksIHdoaWNoIHdlcmUgY29tZSBvdXQgb2YgdGhlIGNhcHRpdml0eSwgb2ZmZXJlZCBidXJudCBvZmZlcmluZ3MgdW50byB0aGUgR29kIG9mIElzcmFlbCwgdHdlbHZlIGJ1bGxvY2tzIGZvciBhbGwgSXNyYWVsLCBuaW5ldHkgYW5kIHNpeCByYW1zLCBzZXZlbnR5IGFuZCBzZXZlbiBsYW1icywgdHdlbHZlIGhlIGdvYXRzIGZvciBhIHNpbiBvZmZlcmluZzogYWxsIHRoaXMgd2FzIGEgYnVybnQgb2ZmZXJpbmcgdW50byB0aGUgTE9SRC4KQW5kIHRoZXkgZGVsaXZlcmVkIHRoZSBraW5nJ3MgY29tbWlzc2lvbnMgdW50byB0aGUga2luZydzIGxpZXV0ZW5hbnRzLCBhbmQgdG8gdGhlIGdvdmVybm9ycyBvbiB0aGlzIHNpZGUgdGhlIHJpdmVyOiBhbmQgdGhleSBmdXJ0aGVyZWQgdGhlIHBlb3BsZSwgYW5kIHRoZSBob3VzZSBvZiBHb2QuCk5vdyB3aGVuIHRoZXNlIHRoaW5ncyB3ZXJlIGRvbmUsIHRoZSBwcmluY2VzIGNhbWUgdG8gbWUsIHNheWluZywgVGhlIHBlb3BsZSBvZiBJc3JhZWwsIGFuZCB0aGUgcHJpZXN0cywgYW5kIHRoZSBMZXZpdGVzLCBoYXZlIG5vdCBzZXBhcmF0ZWQgdGhlbXNlbHZlcyBmcm9tIHRoZSBwZW9wbGUgb2YgdGhlIGxhbmRzLCBkb2luZyBhY2NvcmRpbmcgdG8gdGhlaXIgYWJvbWluYXRpb25zLCBldmVuIG9mIHRoZSBDYW5hYW5pdGVzLCB0aGUgSGl0dGl0ZXMsIHRoZSBQZXJpenppdGVzLCB0aGUgSmVidXNpdGVzLCB0aGUgQW1tb25pdGVzLCB0aGUgTW9hYml0ZXMsIHRoZSBFZ3lwdGlhbnMsIGFuZCB0aGUgQW1vcml0ZXMuCkZvciB0aGV5IGhhdmUgdGFrZW4gb2YgdGhlaXIgZGF1Z2h0ZXJzIGZvciB0aGVtc2VsdmVzLCBhbmQgZm9yIHRoZWlyIHNvbnM6IHNvIHRoYXQgdGhlIGhvbHkgc2VlZCBoYXZlIG1pbmdsZWQgdGhlbXNlbHZlcyB3aXRoIHRoZSBwZW9wbGUgb2YgdGhvc2UgbGFuZHM6IHllYSwgdGhlIGhhbmQgb2YgdGhlIHByaW5jZXMgYW5kIHJ1bGVycyBoYXRoIGJlZW4gY2hpZWYgaW4gdGhpcyB0cmVzcGFzcy4KQW5kIHdoZW4gSSBoZWFyZCB0aGlzIHRoaW5nLCBJIHJlbnQgbXkgZ2FybWVudCBhbmQgbXkgbWFudGxlLCBhbmQgcGx1Y2tlZCBvZmYgdGhlIGhhaXIgb2YgbXkgaGVhZCBhbmQgb2YgbXkgYmVhcmQsIGFuZCBzYXQgZG93biBhc3RvbmllZC4KVGhlbiB3ZXJlIGFzc2VtYmxlZCB1bnRvIG1lIGV2ZXJ5IG9uZSB0aGF0IHRyZW1ibGVkIGF0IHRoZSB3b3JkcyBvZiB0aGUgR29kIG9mIElzcmFlbCwgYmVjYXVzZSBvZiB0aGUgdHJhbnNncmVzc2lvbiBvZiB0aG9zZSB0aGF0IGhhZCBiZWVuIGNhcnJpZWQgYXdheTsgYW5kIEkgc2F0IGFzdG9uaWVkIHVudGlsIHRoZSBldmVuaW5nIHNhY3JpZmljZS4KQW5kIGF0IHRoZSBldmVuaW5nIHNhY3JpZmljZSBJIGFyb3NlIHVwIGZyb20gbXkgaGVhdmluZXNzOyBhbmQgaGF2aW5nIHJlbnQgbXkgZ2FybWVudCBhbmQgbXkgbWFudGxlLCBJIGZlbGwgdXBvbiBteSBrbmVlcywgYW5kIHNwcmVhZCBvdXQgbXkgaGFuZHMgdW50byB0aGUgTE9SRCBteSBHb2QsCkFuZCBzYWlkLCBPIG15IEdvZCwgSSBhbSBhc2hhbWVkIGFuZCBibHVzaCB0byBsaWZ0IHVwIG15IGZhY2UgdG8gdGhlZSwgbXkgR29kOiBmb3Igb3VyIGluaXF1aXRpZXMgYXJlIGluY3JlYXNlZCBvdmVyIG91ciBoZWFkLCBhbmQgb3VyIHRyZXNwYXNzIGlzIGdyb3duIHVwIHVudG8gdGhlIGhlYXZlbnMuClNpbmNlIHRoZSBkYXlzIG9mIG91ciBmYXRoZXJzIGhhdmUgd2UgYmVlbiBpbiBhIGdyZWF0IHRyZXNwYXNzIHVudG8gdGhpcyBkYXk7IGFuZCBmb3Igb3VyIGluaXF1aXRpZXMgaGF2ZSB3ZSwgb3VyIGtpbmdzLCBhbmQgb3VyIHByaWVzdHMsIGJlZW4gZGVsaXZlcmVkIGludG8gdGhlIGhhbmQgb2YgdGhlIGtpbmdzIG9mIHRoZSBsYW5kcywgdG8gdGhlIHN3b3JkLCB0byBjYXB0aXZpdHksIGFuZCB0byBhIHNwb2lsLCBhbmQgdG8gY29uZnVzaW9uIG9mIGZhY2UsIGFzIGl0IGlzIHRoaXMgZGF5LgpBbmQgbm93IGZvciBhIGxpdHRsZSBzcGFjZSBncmFjZSBoYXRoIGJlZW4gc2hld2VkIGZyb20gdGhlIExPUkQgb3VyIEdvZCwgdG8gbGVhdmUgdXMgYSByZW1uYW50IHRvIGVzY2FwZSwgYW5kIHRvIGdpdmUgdXMgYSBuYWlsIGluIGhpcyBob2x5IHBsYWNlLCB0aGF0IG91ciBHb2QgbWF5IGxpZ2h0ZW4gb3VyIGV5ZXMsIGFuZCBnaXZlIHVzIGEgbGl0dGxlIHJldml2aW5nIGluIG91ciBib25kYWdlLgpGb3Igd2Ugd2VyZSBib25kbWVuOyB5ZXQgb3VyIEdvZCBoYXRoIG5vdCBmb3JzYWtlbiB1cyBpbiBvdXIgYm9uZGFnZSwgYnV0IGhhdGggZXh0ZW5kZWQgbWVyY3kgdW50byB1cyBpbiB0aGUgc2lnaHQgb2YgdGhlIGtpbmdzIG9mIFBlcnNpYSwgdG8gZ2l2ZSB1cyBhIHJldml2aW5nLCB0byBzZXQgdXAgdGhlIGhvdXNlIG9mIG91ciBHb2QsIGFuZCB0byByZXBhaXIgdGhlIGRlc29sYXRpb25zIHRoZXJlb2YsIGFuZCB0byBnaXZlIHVzIGEgd2FsbCBpbiBKdWRhaCBhbmQgaW4gSmVydXNhbGVtLgpBbmQgbm93LCBPIG91ciBHb2QsIHdoYXQgc2hhbGwgd2Ugc2F5IGFmdGVyIHRoaXM/IGZvciB3ZSBoYXZlIGZvcnNha2VuIHRoeSBjb21tYW5kbWVudHMsCldoaWNoIHRob3UgaGFzdCBjb21tYW5kZWQgYnkgdGh5IHNlcnZhbnRzIHRoZSBwcm9waGV0cywgc2F5aW5nLCBUaGUgbGFuZCwgdW50byB3aGljaCB5ZSBnbyB0byBwb3NzZXNzIGl0LCBpcyBhbiB1bmNsZWFuIGxhbmQgd2l0aCB0aGUgZmlsdGhpbmVzcyBvZiB0aGUgcGVvcGxlIG9mIHRoZSBsYW5kcywgd2l0aCB0aGVpciBhYm9taW5hdGlvbnMsIHdoaWNoIGhhdmUgZmlsbGVkIGl0IGZyb20gb25lIGVuZCB0byBhbm90aGVyIHdpdGggdGhlaXIgdW5jbGVhbm5lc3MuCk5vdyB0aGVyZWZvcmUgZ2l2ZSBub3QgeW91ciBkYXVnaHRlcnMgdW50byB0aGVpciBzb25zLCBuZWl0aGVyIHRha2UgdGhlaXIgZGF1Z2h0ZXJzIHVudG8geW91ciBzb25zLCBub3Igc2VlayB0aGVpciBwZWFjZSBvciB0aGVpciB3ZWFsdGggZm9yIGV2ZXI6IHRoYXQgeWUgbWF5IGJlIHN0cm9uZywgYW5kIGVhdCB0aGUgZ29vZCBvZiB0aGUgbGFuZCwgYW5kIGxlYXZlIGl0IGZvciBhbiBpbmhlcml0YW5jZSB0byB5b3VyIGNoaWxkcmVuIGZvciBldmVyLgpBbmQgYWZ0ZXIgYWxsIHRoYXQgaXMgY29tZSB1cG9uIHVzIGZvciBvdXIgZXZpbCBkZWVkcywgYW5kIGZvciBvdXIgZ3JlYXQgdHJlc3Bhc3MsIHNlZWluZyB0aGF0IHRob3Ugb3VyIEdvZCBoYXN0IHB1bmlzaGVkIHVzIGxlc3MgdGhhbiBvdXIgaW5pcXVpdGllcyBkZXNlcnZlLCBhbmQgaGFzdCBnaXZlbiB1cyBzdWNoIGRlbGl2ZXJhbmNlIGFzIHRoaXM7ClNob3VsZCB3ZSBhZ2FpbiBicmVhayB0aHkgY29tbWFuZG1lbnRzLCBhbmQgam9pbiBpbiBhZmZpbml0eSB3aXRoIHRoZSBwZW9wbGUgb2YgdGhlc2UgYWJvbWluYXRpb25zPyB3b3VsZGVzdCBub3QgdGhvdSBiZSBhbmdyeSB3aXRoIHVzIHRpbGwgdGhvdSBoYWRzdCBjb25zdW1lZCB1cywgc28gdGhhdCB0aGVyZSBzaG91bGQgYmUgbm8gcmVtbmFudCBub3IgZXNjYXBpbmc/Ck8gTE9SRCBHb2Qgb2YgSXNyYWVsLCB0aG91IGFydCByaWdodGVvdXM6IGZvciB3ZSByZW1haW4geWV0IGVzY2FwZWQsIGFzIGl0IGlzIHRoaXMgZGF5OiBiZWhvbGQsIHdlIGFyZSBiZWZvcmUgdGhlZSBpbiBvdXIgdHJlc3Bhc3NlczogZm9yIHdlIGNhbm5vdCBzdGFuZCBiZWZvcmUgdGhlZSBiZWNhdXNlIG9mIHRoaXMuCk5vdyB3aGVuIEV6cmEgaGFkIHByYXllZCwgYW5kIHdoZW4gaGUgaGFkIGNvbmZlc3NlZCwgd2VlcGluZyBhbmQgY2FzdGluZyBoaW1zZWxmIGRvd24gYmVmb3JlIHRoZSBob3VzZSBvZiBHb2QsIHRoZXJlIGFzc2VtYmxlZCB1bnRvIGhpbSBvdXQgb2YgSXNyYWVsIGEgdmVyeSBncmVhdCBjb25ncmVnYXRpb24gb2YgbWVuIGFuZCB3b21lbiBhbmQgY2hpbGRyZW46IGZvciB0aGUgcGVvcGxlIHdlcHQgdmVyeSBzb3JlLgpBbmQgU2hlY2hhbmlhaCB0aGUgc29uIG9mIEplaGllbCwgb25lIG9mIHRoZSBzb25zIG9mIEVsYW0sIGFuc3dlcmVkIGFuZCBzYWlkIHVudG8gRXpyYSwgV2UgaGF2ZSB0cmVzcGFzc2VkIGFnYWluc3Qgb3VyIEdvZCwgYW5kIGhhdmUgdGFrZW4gc3RyYW5nZSB3aXZlcyBvZiB0aGUgcGVvcGxlIG9mIHRoZSBsYW5kOiB5ZXQgbm93IHRoZXJlIGlzIGhvcGUgaW4gSXNyYWVsIGNvbmNlcm5pbmcgdGhpcyB0aGluZy4KTm93IHRoZXJlZm9yZSBsZXQgdXMgbWFrZSBhIGNvdmVuYW50IHdpdGggb3VyIEdvZCB0byBwdXQgYXdheSBhbGwgdGhlIHdpdmVzLCBhbmQgc3VjaCBhcyBhcmUgYm9ybiBvZiB0aGVtLCBhY2NvcmRpbmcgdG8gdGhlIGNvdW5zZWwgb2YgbXkgbG9yZCwgYW5kIG9mIHRob3NlIHRoYXQgdHJlbWJsZSBhdCB0aGUgY29tbWFuZG1lbnQgb2Ygb3VyIEdvZDsgYW5kIGxldCBpdCBiZSBkb25lIGFjY29yZGluZyB0byB0aGUgbGF3LgpBcmlzZTsgZm9yIHRoaXMgbWF0dGVyIGJlbG9uZ2V0aCB1bnRvIHRoZWU6IHdlIGFsc28gd2lsbCBiZSB3aXRoIHRoZWU6IGJlIG9mIGdvb2QgY291cmFnZSwgYW5kIGRvIGl0LgpUaGVuIGFyb3NlIEV6cmEsIGFuZCBtYWRlIHRoZSBjaGllZiBwcmllc3RzLCB0aGUgTGV2aXRlcywgYW5kIGFsbCBJc3JhZWwsIHRvIHN3ZWFyIHRoYXQgdGhleSBzaG91bGQgZG8gYWNjb3JkaW5nIHRvIHRoaXMgd29yZC4gQW5kIHRoZXkgc3dhcmUuClRoZW4gRXpyYSByb3NlIHVwIGZyb20gYmVmb3JlIHRoZSBob3VzZSBvZiBHb2QsIGFuZCB3ZW50IGludG8gdGhlIGNoYW1iZXIgb2YgSm9oYW5hbiB0aGUgc29uIG9mIEVsaWFzaGliOiBhbmQgd2hlbiBoZSBjYW1lIHRoaXRoZXIsIGhlIGRpZCBlYXQgbm8gYnJlYWQsIG5vciBkcmluayB3YXRlcjogZm9yIGhlIG1vdXJuZWQgYmVjYXVzZSBvZiB0aGUgdHJhbnNncmVzc2lvbiBvZiB0aGVtIHRoYXQgaGFkIGJlZW4gY2FycmllZCBhd2F5LgpBbmQgdGhleSBtYWRlIHByb2NsYW1hdGlvbiB0aHJvdWdob3V0IEp1ZGFoIGFuZCBKZXJ1c2FsZW0gdW50byBhbGwgdGhlIGNoaWxkcmVuIG9mIHRoZSBjYXB0aXZpdHksIHRoYXQgdGhleSBzaG91bGQgZ2F0aGVyIHRoZW1zZWx2ZXMgdG9nZXRoZXIgdW50byBKZXJ1c2FsZW07CkFuZCB0aGF0IHdob3NvZXZlciB3b3VsZCBub3QgY29tZSB3aXRoaW4gdGhyZWUgZGF5cywgYWNjb3JkaW5nIHRvIHRoZSBjb3Vuc2VsIG9mIHRoZSBwcmluY2VzIGFuZCB0aGUgZWxkZXJzLCBhbGwgaGlzIHN1YnN0YW5jZSBzaG91bGQgYmUgZm9yZmVpdGVkLCBhbmQgaGltc2VsZiBzZXBhcmF0ZWQgZnJvbSB0aGUgY29uZ3JlZ2F0aW9uIG9mIHRob3NlIHRoYXQgaGFkIGJlZW4gY2FycmllZCBhd2F5LgpUaGVuIGFsbCB0aGUgbWVuIG9mIEp1ZGFoIGFuZCBCZW5qYW1pbiBnYXRoZXJlZCB0aGVtc2VsdmVzIHRvZ2V0aGVyIHVudG8gSmVydXNhbGVtIHdpdGhpbiB0aHJlZSBkYXlzLiBJdCB3YXMgdGhlIG5pbnRoIG1vbnRoLCBvbiB0aGUgdHdlbnRpZXRoIGRheSBvZiB0aGUgbW9udGg7IGFuZCBhbGwgdGhlIHBlb3BsZSBzYXQgaW4gdGhlIHN0cmVldCBvZiB0aGUgaG91c2Ugb2YgR29kLCB0cmVtYmxpbmcgYmVjYXVzZSBvZiB0aGlzIG1hdHRlciwgYW5kIGZvciB0aGUgZ3JlYXQgcmFpbi4KQW5kIEV6cmEgdGhlIHByaWVzdCBzdG9vZCB1cCwgYW5kIHNhaWQgdW50byB0aGVtLCBZZSBoYXZlIHRyYW5zZ3Jlc3NlZCwgYW5kIGhhdmUgdGFrZW4gc3RyYW5nZSB3aXZlcywgdG8gaW5jcmVhc2UgdGhlIHRyZXNwYXNzIG9mIElzcmFlbC4KTm93IHRoZXJlZm9yZSBtYWtlIGNvbmZlc3Npb24gdW50byB0aGUgTE9SRCBHb2Qgb2YgeW91ciBmYXRoZXJzLCBhbmQgZG8gaGlzIHBsZWFzdXJlOiBhbmQgc2VwYXJhdGUgeW91cnNlbHZlcyBmcm9tIHRoZSBwZW9wbGUgb2YgdGhlIGxhbmQsIGFuZCBmcm9tIHRoZSBzdHJhbmdlIHdpdmVzLgpUaGVuIGFsbCB0aGUgY29uZ3JlZ2F0aW9uIGFuc3dlcmVkIGFuZCBzYWlkIHdpdGggYSBsb3VkIHZvaWNlLCBBcyB0aG91IGhhc3Qgc2FpZCwgc28gbXVzdCB3ZSBkby4KQnV0IHRoZSBwZW9wbGUgYXJlIG1hbnksIGFuZCBpdCBpcyBhIHRpbWUgb2YgbXVjaCByYWluLCBhbmQgd2UgYXJlIG5vdCBhYmxlIHRvIHN0YW5kIHdpdGhvdXQsIG5laXRoZXIgaXMgdGhpcyBhIHdvcmsgb2Ygb25lIGRheSBvciB0d286IGZvciB3ZSBhcmUgbWFueSB0aGF0IGhhdmUgdHJhbnNncmVzc2VkIGluIHRoaXMgdGhpbmcuCkxldCBub3cgb3VyIHJ1bGVycyBvZiBhbGwgdGhlIGNvbmdyZWdhdGlvbiBzdGFuZCwgYW5kIGxldCBhbGwgdGhlbSB3aGljaCBoYXZlIHRha2VuIHN0cmFuZ2Ugd2l2ZXMgaW4gb3VyIGNpdGllcyBjb21lIGF0IGFwcG9pbnRlZCB0aW1lcywgYW5kIHdpdGggdGhlbSB0aGUgZWxkZXJzIG9mIGV2ZXJ5IGNpdHksIGFuZCB0aGUganVkZ2VzIHRoZXJlb2YsIHVudGlsIHRoZSBmaWVyY2Ugd3JhdGggb2Ygb3VyIEdvZCBmb3IgdGhpcyBtYXR0ZXIgYmUgdHVybmVkIGZyb20gdXMuCk9ubHkgSm9uYXRoYW4gdGhlIHNvbiBvZiBBc2FoZWwgYW5kIEphaGF6aWFoIHRoZSBzb24gb2YgVGlrdmFoIHdlcmUgZW1wbG95ZWQgYWJvdXQgdGhpcyBtYXR0ZXI6IGFuZCBNZXNodWxsYW0gYW5kIFNoYWJiZXRoYWkgdGhlIExldml0ZSBoZWxwZWQgdGhlbS4KQW5kIHRoZSBjaGlsZHJlbiBvZiB0aGUgY2FwdGl2aXR5IGRpZCBzby4gQW5kIEV6cmEgdGhlIHByaWVzdCwgd2l0aCBjZXJ0YWluIGNoaWVmIG9mIHRoZSBmYXRoZXJzLCBhZnRlciB0aGUgaG91c2Ugb2YgdGhlaXIgZmF0aGVycywgYW5kIGFsbCBvZiB0aGVtIGJ5IHRoZWlyIG5hbWVzLCB3ZXJlIHNlcGFyYXRlZCwgYW5kIHNhdCBkb3duIGluIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHRlbnRoIG1vbnRoIHRvIGV4YW1pbmUgdGhlIG1hdHRlci4KQW5kIHRoZXkgbWFkZSBhbiBlbmQgd2l0aCBhbGwgdGhlIG1lbiB0aGF0IGhhZCB0YWtlbiBzdHJhbmdlIHdpdmVzIGJ5IHRoZSBmaXJzdCBkYXkgb2YgdGhlIGZpcnN0IG1vbnRoLgpBbmQgYW1vbmcgdGhlIHNvbnMgb2YgdGhlIHByaWVzdHMgdGhlcmUgd2VyZSBmb3VuZCB0aGF0IGhhZCB0YWtlbiBzdHJhbmdlIHdpdmVzOiBuYW1lbHksIG9mIHRoZSBzb25zIG9mIEplc2h1YSB0aGUgc29uIG9mIEpvemFkYWssIGFuZCBoaXMgYnJldGhyZW47IE1hYXNlaWFoLCBhbmQgRWxpZXplciwgYW5kIEphcmliLCBhbmQgR2VkYWxpYWguCkFuZCB0aGV5IGdhdmUgdGhlaXIgaGFuZHMgdGhhdCB0aGV5IHdvdWxkIHB1dCBhd2F5IHRoZWlyIHdpdmVzOyBhbmQgYmVpbmcgZ3VpbHR5LCB0aGV5IG9mZmVyZWQgYSByYW0gb2YgdGhlIGZsb2NrIGZvciB0aGVpciB0cmVzcGFzcy4KQW5kIG9mIHRoZSBzb25zIG9mIEltbWVyOyBIYW5hbmksIGFuZCBaZWJhZGlhaC4KQW5kIG9mIHRoZSBzb25zIG9mIEhhcmltOyBNYWFzZWlhaCwgYW5kIEVsaWphaCwgYW5kIFNoZW1haWFoLCBhbmQgSmVoaWVsLCBhbmQgVXp6aWFoLgpBbmQgb2YgdGhlIHNvbnMgb2YgUGFzaHVyOyBFbGlvZW5haSwgTWFhc2VpYWgsIElzaG1hZWwsIE5ldGhhbmVlbCwgSm96YWJhZCwgYW5kIEVsYXNhaC4KQWxzbyBvZiB0aGUgTGV2aXRlczsgSm96YWJhZCwgYW5kIFNoaW1laSwgYW5kIEtlbGFpYWgsICh0aGUgc2FtZSBpcyBLZWxpdGEsKSBQZXRoYWhpYWgsIEp1ZGFoLCBhbmQgRWxpZXplci4KT2YgdGhlIHNpbmdlcnMgYWxzbzsgRWxpYXNoaWI6IGFuZCBvZiB0aGUgcG9ydGVyczsgU2hhbGx1bSwgYW5kIFRlbGVtLCBhbmQgVXJpLgpNb3Jlb3ZlciBvZiBJc3JhZWw6IG9mIHRoZSBzb25zIG9mIFBhcm9zaDsgUmFtaWFoLCBhbmQgSmV6aWFoLCBhbmQgTWFsY2hpYWgsIGFuZCBNaWFtaW4sIGFuZCBFbGVhemFyLCBhbmQgTWFsY2hpamFoLCBhbmQgQmVuYWlhaC4KQW5kIG9mIHRoZSBzb25zIG9mIEVsYW07IE1hdHRhbmlhaCwgWmVjaGFyaWFoLCBhbmQgSmVoaWVsLCBhbmQgQWJkaSwgYW5kIEplcmVtb3RoLCBhbmQgRWxpYWguCkFuZCBvZiB0aGUgc29ucyBvZiBaYXR0dTsgRWxpb2VuYWksIEVsaWFzaGliLCBNYXR0YW5pYWgsIGFuZCBKZXJlbW90aCwgYW5kIFphYmFkLCBhbmQgQXppemEuCk9mIHRoZSBzb25zIGFsc28gb2YgQmViYWk7IEplaG9oYW5hbiwgSGFuYW5pYWgsIFphYmJhaSwgYW5kIEF0aGxhaS4KQW5kIG9mIHRoZSBzb25zIG9mIEJhbmk7IE1lc2h1bGxhbSwgTWFsbHVjaCwgYW5kIEFkYWlhaCwgSmFzaHViLCBhbmQgU2hlYWwsIGFuZCBSYW1vdGguCkFuZCBvZiB0aGUgc29ucyBvZiBQYWhhdGhtb2FiOyBBZG5hLCBhbmQgQ2hlbGFsLCBCZW5haWFoLCBNYWFzZWlhaCwgTWF0dGFuaWFoLCBCZXphbGVlbCwgYW5kIEJpbm51aSwgYW5kIE1hbmFzc2VoLgpBbmQgb2YgdGhlIHNvbnMgb2YgSGFyaW07IEVsaWV6ZXIsIElzaGlqYWgsIE1hbGNoaWFoLCBTaGVtYWlhaCwgU2hpbWVvbiwKQmVuamFtaW4sIE1hbGx1Y2gsIGFuZCBTaGVtYXJpYWguCk9mIHRoZSBzb25zIG9mIEhhc2h1bTsgTWF0dGVuYWksIE1hdHRhdGhhaCwgWmFiYWQsIEVsaXBoZWxldCwgSmVyZW1haSwgTWFuYXNzZWgsIGFuZCBTaGltZWkuCk9mIHRoZSBzb25zIG9mIEJhbmk7IE1hYWRhaSwgQW1yYW0sIGFuZCBVZWwsCkJlbmFpYWgsIEJlZGVpYWgsIENoZWxsdWgsClZhbmlhaCwgTWVyZW1vdGgsIEVsaWFzaGliLApNYXR0YW5pYWgsIE1hdHRlbmFpLCBhbmQgSmFhc2F1LApBbmQgQmFuaSwgYW5kIEJpbm51aSwgU2hpbWVpLApBbmQgU2hlbGVtaWFoLCBhbmQgTmF0aGFuLCBhbmQgQWRhaWFoLApNYWNobmFkZWJhaSwgU2hhc2hhaSwgU2hhcmFpLApBemFyZWVsLCBhbmQgU2hlbGVtaWFoLCBTaGVtYXJpYWgsClNoYWxsdW0sIEFtYXJpYWgsIGFuZCBKb3NlcGguCk9mIHRoZSBzb25zIG9mIE5lYm87IEplaWVsLCBNYXR0aXRoaWFoLCBaYWJhZCwgWmViaW5hLCBKYWRhdSwgYW5kIEpvZWwsIEJlbmFpYWguCkFsbCB0aGVzZSBoYWQgdGFrZW4gc3RyYW5nZSB3aXZlczogYW5kIHNvbWUgb2YgdGhlbSBoYWQgd2l2ZXMgYnkgd2hvbSB0aGV5IGhhZCBjaGlsZHJlbi4KVGhlIHdvcmRzIG9mIE5laGVtaWFoIHRoZSBzb24gb2YgSGFjaGFsaWFoLiBBbmQgaXQgY2FtZSB0byBwYXNzIGluIHRoZSBtb250aCBDaGlzbGV1LCBpbiB0aGUgdHdlbnRpZXRoIHllYXIsIGFzIEkgd2FzIGluIFNodXNoYW4gdGhlIHBhbGFjZSwKVGhhdCBIYW5hbmksIG9uZSBvZiBteSBicmV0aHJlbiwgY2FtZSwgaGUgYW5kIGNlcnRhaW4gbWVuIG9mIEp1ZGFoOyBhbmQgSSBhc2tlZCB0aGVtIGNvbmNlcm5pbmcgdGhlIEpld3MgdGhhdCBoYWQgZXNjYXBlZCwgd2hpY2ggd2VyZSBsZWZ0IG9mIHRoZSBjYXB0aXZpdHksIGFuZCBjb25jZXJuaW5nIEplcnVzYWxlbS4KQW5kIHRoZXkgc2FpZCB1bnRvIG1lLCBUaGUgcmVtbmFudCB0aGF0IGFyZSBsZWZ0IG9mIHRoZSBjYXB0aXZpdHkgdGhlcmUgaW4gdGhlIHByb3ZpbmNlIGFyZSBpbiBncmVhdCBhZmZsaWN0aW9uIGFuZCByZXByb2FjaDogdGhlIHdhbGwgb2YgSmVydXNhbGVtIGFsc28gaXMgYnJva2VuIGRvd24sIGFuZCB0aGUgZ2F0ZXMgdGhlcmVvZiBhcmUgYnVybmVkIHdpdGggZmlyZS4KQW5kIGl0IGNhbWUgdG8gcGFzcywgd2hlbiBJIGhlYXJkIHRoZXNlIHdvcmRzLCB0aGF0IEkgc2F0IGRvd24gYW5kIHdlcHQsIGFuZCBtb3VybmVkIGNlcnRhaW4gZGF5cywgYW5kIGZhc3RlZCwgYW5kIHByYXllZCBiZWZvcmUgdGhlIEdvZCBvZiBoZWF2ZW4sCkFuZCBzYWlkLCBJIGJlc2VlY2ggdGhlZSwgTyBMT1JEIEdvZCBvZiBoZWF2ZW4sIHRoZSBncmVhdCBhbmQgdGVycmlibGUgR29kLCB0aGF0IGtlZXBldGggY292ZW5hbnQgYW5kIG1lcmN5IGZvciB0aGVtIHRoYXQgbG92ZSBoaW0gYW5kIG9ic2VydmUgaGlzIGNvbW1hbmRtZW50czoKTGV0IHRoaW5lIGVhciBub3cgYmUgYXR0ZW50aXZlLCBhbmQgdGhpbmUgZXllcyBvcGVuLCB0aGF0IHRob3UgbWF5ZXN0IGhlYXIgdGhlIHByYXllciBvZiB0aHkgc2VydmFudCwgd2hpY2ggSSBwcmF5IGJlZm9yZSB0aGVlIG5vdywgZGF5IGFuZCBuaWdodCwgZm9yIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgdGh5IHNlcnZhbnRzLCBhbmQgY29uZmVzcyB0aGUgc2lucyBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLCB3aGljaCB3ZSBoYXZlIHNpbm5lZCBhZ2FpbnN0IHRoZWU6IGJvdGggSSBhbmQgbXkgZmF0aGVyJ3MgaG91c2UgaGF2ZSBzaW5uZWQuCldlIGhhdmUgZGVhbHQgdmVyeSBjb3JydXB0bHkgYWdhaW5zdCB0aGVlLCBhbmQgaGF2ZSBub3Qga2VwdCB0aGUgY29tbWFuZG1lbnRzLCBub3IgdGhlIHN0YXR1dGVzLCBub3IgdGhlIGp1ZGdtZW50cywgd2hpY2ggdGhvdSBjb21tYW5kZWRzdCB0aHkgc2VydmFudCBNb3Nlcy4KUmVtZW1iZXIsIEkgYmVzZWVjaCB0aGVlLCB0aGUgd29yZCB0aGF0IHRob3UgY29tbWFuZGVkc3QgdGh5IHNlcnZhbnQgTW9zZXMsIHNheWluZywgSWYgeWUgdHJhbnNncmVzcywgSSB3aWxsIHNjYXR0ZXIgeW91IGFicm9hZCBhbW9uZyB0aGUgbmF0aW9uczoKQnV0IGlmIHllIHR1cm4gdW50byBtZSwgYW5kIGtlZXAgbXkgY29tbWFuZG1lbnRzLCBhbmQgZG8gdGhlbTsgdGhvdWdoIHRoZXJlIHdlcmUgb2YgeW91IGNhc3Qgb3V0IHVudG8gdGhlIHV0dGVybW9zdCBwYXJ0IG9mIHRoZSBoZWF2ZW4sIHlldCB3aWxsIEkgZ2F0aGVyIHRoZW0gZnJvbSB0aGVuY2UsIGFuZCB3aWxsIGJyaW5nIHRoZW0gdW50byB0aGUgcGxhY2UgdGhhdCBJIGhhdmUgY2hvc2VuIHRvIHNldCBteSBuYW1lIHRoZXJlLgpOb3cgdGhlc2UgYXJlIHRoeSBzZXJ2YW50cyBhbmQgdGh5IHBlb3BsZSwgd2hvbSB0aG91IGhhc3QgcmVkZWVtZWQgYnkgdGh5IGdyZWF0IHBvd2VyLCBhbmQgYnkgdGh5IHN0cm9uZyBoYW5kLgpPIExPUkQsIEkgYmVzZWVjaCB0aGVlLCBsZXQgbm93IHRoaW5lIGVhciBiZSBhdHRlbnRpdmUgdG8gdGhlIHByYXllciBvZiB0aHkgc2VydmFudCwgYW5kIHRvIHRoZSBwcmF5ZXIgb2YgdGh5IHNlcnZhbnRzLCB3aG8gZGVzaXJlIHRvIGZlYXIgdGh5IG5hbWU6IGFuZCBwcm9zcGVyLCBJIHByYXkgdGhlZSwgdGh5IHNlcnZhbnQgdGhpcyBkYXksIGFuZCBncmFudCBoaW0gbWVyY3kgaW4gdGhlIHNpZ2h0IG9mIHRoaXMgbWFuLiBGb3IgSSB3YXMgdGhlIGtpbmcncyBjdXBiZWFyZXIuCkFuZCBpdCBjYW1lIHRvIHBhc3MgaW4gdGhlIG1vbnRoIE5pc2FuLCBpbiB0aGUgdHdlbnRpZXRoIHllYXIgb2YgQXJ0YXhlcnhlcyB0aGUga2luZywgdGhhdCB3aW5lIHdhcyBiZWZvcmUgaGltOiBhbmQgSSB0b29rIHVwIHRoZSB3aW5lLCBhbmQgZ2F2ZSBpdCB1bnRvIHRoZSBraW5nLiBOb3cgSSBoYWQgbm90IGJlZW4gYmVmb3JldGltZSBzYWQgaW4gaGlzIHByZXNlbmNlLgpXaGVyZWZvcmUgdGhlIGtpbmcgc2FpZCB1bnRvIG1lLCBXaHkgaXMgdGh5IGNvdW50ZW5hbmNlIHNhZCwgc2VlaW5nIHRob3UgYXJ0IG5vdCBzaWNrPyB0aGlzIGlzIG5vdGhpbmcgZWxzZSBidXQgc29ycm93IG9mIGhlYXJ0LiBUaGVuIEkgd2FzIHZlcnkgc29yZSBhZnJhaWQsCkFuZCBzYWlkIHVudG8gdGhlIGtpbmcsIExldCB0aGUga2luZyBsaXZlIGZvciBldmVyOiB3aHkgc2hvdWxkIG5vdCBteSBjb3VudGVuYW5jZSBiZSBzYWQsIHdoZW4gdGhlIGNpdHksIHRoZSBwbGFjZSBvZiBteSBmYXRoZXJzJyBzZXB1bGNocmVzLCBsaWV0aCB3YXN0ZSwgYW5kIHRoZSBnYXRlcyB0aGVyZW9mIGFyZSBjb25zdW1lZCB3aXRoIGZpcmU/ClRoZW4gdGhlIGtpbmcgc2FpZCB1bnRvIG1lLCBGb3Igd2hhdCBkb3N0IHRob3UgbWFrZSByZXF1ZXN0PyBTbyBJIHByYXllZCB0byB0aGUgR29kIG9mIGhlYXZlbi4KQW5kIEkgc2FpZCB1bnRvIHRoZSBraW5nLCBJZiBpdCBwbGVhc2UgdGhlIGtpbmcsIGFuZCBpZiB0aHkgc2VydmFudCBoYXZlIGZvdW5kIGZhdm91ciBpbiB0aHkgc2lnaHQsIHRoYXQgdGhvdSB3b3VsZGVzdCBzZW5kIG1lIHVudG8gSnVkYWgsIHVudG8gdGhlIGNpdHkgb2YgbXkgZmF0aGVycycgc2VwdWxjaHJlcywgdGhhdCBJIG1heSBidWlsZCBpdC4KQW5kIHRoZSBraW5nIHNhaWQgdW50byBtZSwgKHRoZSBxdWVlbiBhbHNvIHNpdHRpbmcgYnkgaGltLCkgRm9yIGhvdyBsb25nIHNoYWxsIHRoeSBqb3VybmV5IGJlPyBhbmQgd2hlbiB3aWx0IHRob3UgcmV0dXJuPyBTbyBpdCBwbGVhc2VkIHRoZSBraW5nIHRvIHNlbmQgbWU7IGFuZCBJIHNldCBoaW0gYSB0aW1lLgpNb3Jlb3ZlciBJIHNhaWQgdW50byB0aGUga2luZywgSWYgaXQgcGxlYXNlIHRoZSBraW5nLCBsZXQgbGV0dGVycyBiZSBnaXZlbiBtZSB0byB0aGUgZ292ZXJub3JzIGJleW9uZCB0aGUgcml2ZXIsIHRoYXQgdGhleSBtYXkgY29udmV5IG1lIG92ZXIgdGlsbCBJIGNvbWUgaW50byBKdWRhaDsKQW5kIGEgbGV0dGVyIHVudG8gQXNhcGggdGhlIGtlZXBlciBvZiB0aGUga2luZydzIGZvcmVzdCwgdGhhdCBoZSBtYXkgZ2l2ZSBtZSB0aW1iZXIgdG8gbWFrZSBiZWFtcyBmb3IgdGhlIGdhdGVzIG9mIHRoZSBwYWxhY2Ugd2hpY2ggYXBwZXJ0YWluZWQgdG8gdGhlIGhvdXNlLCBhbmQgZm9yIHRoZSB3YWxsIG9mIHRoZSBjaXR5LCBhbmQgZm9yIHRoZSBob3VzZSB0aGF0IEkgc2hhbGwgZW50ZXIgaW50by4gQW5kIHRoZSBraW5nIGdyYW50ZWQgbWUsIGFjY29yZGluZyB0byB0aGUgZ29vZCBoYW5kIG9mIG15IEdvZCB1cG9uIG1lLgpUaGVuIEkgY2FtZSB0byB0aGUgZ292ZXJub3JzIGJleW9uZCB0aGUgcml2ZXIsIGFuZCBnYXZlIHRoZW0gdGhlIGtpbmcncyBsZXR0ZXJzLiBOb3cgdGhlIGtpbmcgaGFkIHNlbnQgY2FwdGFpbnMgb2YgdGhlIGFybXkgYW5kIGhvcnNlbWVuIHdpdGggbWUuCldoZW4gU2FuYmFsbGF0IHRoZSBIb3Jvbml0ZSwgYW5kIFRvYmlhaCB0aGUgc2VydmFudCwgdGhlIEFtbW9uaXRlLCBoZWFyZCBvZiBpdCwgaXQgZ3JpZXZlZCB0aGVtIGV4Y2VlZGluZ2x5IHRoYXQgdGhlcmUgd2FzIGNvbWUgYSBtYW4gdG8gc2VlayB0aGUgd2VsZmFyZSBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLgpTbyBJIGNhbWUgdG8gSmVydXNhbGVtLCBhbmQgd2FzIHRoZXJlIHRocmVlIGRheXMuCkFuZCBJIGFyb3NlIGluIHRoZSBuaWdodCwgSSBhbmQgc29tZSBmZXcgbWVuIHdpdGggbWU7IG5laXRoZXIgdG9sZCBJIGFueSBtYW4gd2hhdCBteSBHb2QgaGFkIHB1dCBpbiBteSBoZWFydCB0byBkbyBhdCBKZXJ1c2FsZW06IG5laXRoZXIgd2FzIHRoZXJlIGFueSBiZWFzdCB3aXRoIG1lLCBzYXZlIHRoZSBiZWFzdCB0aGF0IEkgcm9kZSB1cG9uLgpBbmQgSSB3ZW50IG91dCBieSBuaWdodCBieSB0aGUgZ2F0ZSBvZiB0aGUgdmFsbGV5LCBldmVuIGJlZm9yZSB0aGUgZHJhZ29uIHdlbGwsIGFuZCB0byB0aGUgZHVuZyBwb3J0LCBhbmQgdmlld2VkIHRoZSB3YWxscyBvZiBKZXJ1c2FsZW0sIHdoaWNoIHdlcmUgYnJva2VuIGRvd24sIGFuZCB0aGUgZ2F0ZXMgdGhlcmVvZiB3ZXJlIGNvbnN1bWVkIHdpdGggZmlyZS4KVGhlbiBJIHdlbnQgb24gdG8gdGhlIGdhdGUgb2YgdGhlIGZvdW50YWluLCBhbmQgdG8gdGhlIGtpbmcncyBwb29sOiBidXQgdGhlcmUgd2FzIG5vIHBsYWNlIGZvciB0aGUgYmVhc3QgdGhhdCB3YXMgdW5kZXIgbWUgdG8gcGFzcy4KVGhlbiB3ZW50IEkgdXAgaW4gdGhlIG5pZ2h0IGJ5IHRoZSBicm9vaywgYW5kIHZpZXdlZCB0aGUgd2FsbCwgYW5kIHR1cm5lZCBiYWNrLCBhbmQgZW50ZXJlZCBieSB0aGUgZ2F0ZSBvZiB0aGUgdmFsbGV5LCBhbmQgc28gcmV0dXJuZWQuCkFuZCB0aGUgcnVsZXJzIGtuZXcgbm90IHdoaXRoZXIgSSB3ZW50LCBvciB3aGF0IEkgZGlkOyBuZWl0aGVyIGhhZCBJIGFzIHlldCB0b2xkIGl0IHRvIHRoZSBKZXdzLCBub3IgdG8gdGhlIHByaWVzdHMsIG5vciB0byB0aGUgbm9ibGVzLCBub3IgdG8gdGhlIHJ1bGVycywgbm9yIHRvIHRoZSByZXN0IHRoYXQgZGlkIHRoZSB3b3JrLgpUaGVuIHNhaWQgSSB1bnRvIHRoZW0sIFllIHNlZSB0aGUgZGlzdHJlc3MgdGhhdCB3ZSBhcmUgaW4sIGhvdyBKZXJ1c2FsZW0gbGlldGggd2FzdGUsIGFuZCB0aGUgZ2F0ZXMgdGhlcmVvZiBhcmUgYnVybmVkIHdpdGggZmlyZTogY29tZSwgYW5kIGxldCB1cyBidWlsZCB1cCB0aGUgd2FsbCBvZiBKZXJ1c2FsZW0sIHRoYXQgd2UgYmUgbm8gbW9yZSBhIHJlcHJvYWNoLgpUaGVuIEkgdG9sZCB0aGVtIG9mIHRoZSBoYW5kIG9mIG15IEdvZCB3aGljaCB3YXMgZ29vZCB1cG9uIG1lOyBhcyBhbHNvIHRoZSBraW5nJ3Mgd29yZHMgdGhhdCBoZSBoYWQgc3Bva2VuIHVudG8gbWUuIEFuZCB0aGV5IHNhaWQsIExldCB1cyByaXNlIHVwIGFuZCBidWlsZC4gU28gdGhleSBzdHJlbmd0aGVuZWQgdGhlaXIgaGFuZHMgZm9yIHRoaXMgZ29vZCB3b3JrLgpCdXQgd2hlbiBTYW5iYWxsYXQgdGhlIEhvcm9uaXRlLCBhbmQgVG9iaWFoIHRoZSBzZXJ2YW50LCB0aGUgQW1tb25pdGUsIGFuZCBHZXNoZW0gdGhlIEFyYWJpYW4sIGhlYXJkIGl0LCB0aGV5IGxhdWdoZWQgdXMgdG8gc2Nvcm4sIGFuZCBkZXNwaXNlZCB1cywgYW5kIHNhaWQsIFdoYXQgaXMgdGhpcyB0aGluZyB0aGF0IHllIGRvPyB3aWxsIHllIHJlYmVsIGFnYWluc3QgdGhlIGtpbmc/ClRoZW4gYW5zd2VyZWQgSSB0aGVtLCBhbmQgc2FpZCB1bnRvIHRoZW0sIFRoZSBHb2Qgb2YgaGVhdmVuLCBoZSB3aWxsIHByb3NwZXIgdXM7IHRoZXJlZm9yZSB3ZSBoaXMgc2VydmFudHMgd2lsbCBhcmlzZSBhbmQgYnVpbGQ6IGJ1dCB5ZSBoYXZlIG5vIHBvcnRpb24sIG5vciByaWdodCwgbm9yIG1lbW9yaWFsLCBpbiBKZXJ1c2FsZW0uClRoZW4gRWxpYXNoaWIgdGhlIGhpZ2ggcHJpZXN0IHJvc2UgdXAgd2l0aCBoaXMgYnJldGhyZW4gdGhlIHByaWVzdHMsIGFuZCB0aGV5IGJ1aWxkZWQgdGhlIHNoZWVwIGdhdGU7IHRoZXkgc2FuY3RpZmllZCBpdCwgYW5kIHNldCB1cCB0aGUgZG9vcnMgb2YgaXQ7IGV2ZW4gdW50byB0aGUgdG93ZXIgb2YgTWVhaCB0aGV5IHNhbmN0aWZpZWQgaXQsIHVudG8gdGhlIHRvd2VyIG9mIEhhbmFuZWVsLgpBbmQgbmV4dCB1bnRvIGhpbSBidWlsZGVkIHRoZSBtZW4gb2YgSmVyaWNoby4gQW5kIG5leHQgdG8gdGhlbSBidWlsZGVkIFphY2N1ciB0aGUgc29uIG9mIEltcmkuCkJ1dCB0aGUgZmlzaCBnYXRlIGRpZCB0aGUgc29ucyBvZiBIYXNzZW5hYWggYnVpbGQsIHdobyBhbHNvIGxhaWQgdGhlIGJlYW1zIHRoZXJlb2YsIGFuZCBzZXQgdXAgdGhlIGRvb3JzIHRoZXJlb2YsIHRoZSBsb2NrcyB0aGVyZW9mLCBhbmQgdGhlIGJhcnMgdGhlcmVvZi4KQW5kIG5leHQgdW50byB0aGVtIHJlcGFpcmVkIE1lcmVtb3RoIHRoZSBzb24gb2YgVXJpamFoLCB0aGUgc29uIG9mIEtvei4gQW5kIG5leHQgdW50byB0aGVtIHJlcGFpcmVkIE1lc2h1bGxhbSB0aGUgc29uIG9mIEJlcmVjaGlhaCwgdGhlIHNvbiBvZiBNZXNoZXphYmVlbC4gQW5kIG5leHQgdW50byB0aGVtIHJlcGFpcmVkIFphZG9rIHRoZSBzb24gb2YgQmFhbmEuCkFuZCBuZXh0IHVudG8gdGhlbSB0aGUgVGVrb2l0ZXMgcmVwYWlyZWQ7IGJ1dCB0aGVpciBub2JsZXMgcHV0IG5vdCB0aGVpciBuZWNrcyB0byB0aGUgd29yayBvZiB0aGVpciBMT1JELgpNb3Jlb3ZlciB0aGUgb2xkIGdhdGUgcmVwYWlyZWQgSmVob2lhZGEgdGhlIHNvbiBvZiBQYXNlYWgsIGFuZCBNZXNodWxsYW0gdGhlIHNvbiBvZiBCZXNvZGVpYWg7IHRoZXkgbGFpZCB0aGUgYmVhbXMgdGhlcmVvZiwgYW5kIHNldCB1cCB0aGUgZG9vcnMgdGhlcmVvZiwgYW5kIHRoZSBsb2NrcyB0aGVyZW9mLCBhbmQgdGhlIGJhcnMgdGhlcmVvZi4KQW5kIG5leHQgdW50byB0aGVtIHJlcGFpcmVkIE1lbGF0aWFoIHRoZSBHaWJlb25pdGUsIGFuZCBKYWRvbiB0aGUgTWVyb25vdGhpdGUsIHRoZSBtZW4gb2YgR2liZW9uLCBhbmQgb2YgTWl6cGFoLCB1bnRvIHRoZSB0aHJvbmUgb2YgdGhlIGdvdmVybm9yIG9uIHRoaXMgc2lkZSB0aGUgcml2ZXIuCk5leHQgdW50byBoaW0gcmVwYWlyZWQgVXp6aWVsIHRoZSBzb24gb2YgSGFyaGFpYWgsIG9mIHRoZSBnb2xkc21pdGhzLiBOZXh0IHVudG8gaGltIGFsc28gcmVwYWlyZWQgSGFuYW5pYWggdGhlIHNvbiBvZiBvbmUgb2YgdGhlIGFwb3RoZWNhcmllcywgYW5kIHRoZXkgZm9ydGlmaWVkIEplcnVzYWxlbSB1bnRvIHRoZSBicm9hZCB3YWxsLgpBbmQgbmV4dCB1bnRvIHRoZW0gcmVwYWlyZWQgUmVwaGFpYWggdGhlIHNvbiBvZiBIdXIsIHRoZSBydWxlciBvZiB0aGUgaGFsZiBwYXJ0IG9mIEplcnVzYWxlbS4KQW5kIG5leHQgdW50byB0aGVtIHJlcGFpcmVkIEplZGFpYWggdGhlIHNvbiBvZiBIYXJ1bWFwaCwgZXZlbiBvdmVyIGFnYWluc3QgaGlzIGhvdXNlLiBBbmQgbmV4dCB1bnRvIGhpbSByZXBhaXJlZCBIYXR0dXNoIHRoZSBzb24gb2YgSGFzaGFibmlhaC4KTWFsY2hpamFoIHRoZSBzb24gb2YgSGFyaW0sIGFuZCBIYXNodWIgdGhlIHNvbiBvZiBQYWhhdGhtb2FiLCByZXBhaXJlZCB0aGUgb3RoZXIgcGllY2UsIGFuZCB0aGUgdG93ZXIgb2YgdGhlIGZ1cm5hY2VzLgpBbmQgbmV4dCB1bnRvIGhpbSByZXBhaXJlZCBTaGFsbHVtIHRoZSBzb24gb2YgSGFsb2hlc2gsIHRoZSBydWxlciBvZiB0aGUgaGFsZiBwYXJ0IG9mIEplcnVzYWxlbSwgaGUgYW5kIGhpcyBkYXVnaHRlcnMuClRoZSB2YWxsZXkgZ2F0ZSByZXBhaXJlZCBIYW51biwgYW5kIHRoZSBpbmhhYml0YW50cyBvZiBaYW5vYWg7IHRoZXkgYnVpbHQgaXQsIGFuZCBzZXQgdXAgdGhlIGRvb3JzIHRoZXJlb2YsIHRoZSBsb2NrcyB0aGVyZW9mLCBhbmQgdGhlIGJhcnMgdGhlcmVvZiwgYW5kIGEgdGhvdXNhbmQgY3ViaXRzIG9uIHRoZSB3YWxsIHVudG8gdGhlIGR1bmcgZ2F0ZS4KQnV0IHRoZSBkdW5nIGdhdGUgcmVwYWlyZWQgTWFsY2hpYWggdGhlIHNvbiBvZiBSZWNoYWIsIHRoZSBydWxlciBvZiBwYXJ0IG9mIEJldGhoYWNjZXJlbTsgaGUgYnVpbHQgaXQsIGFuZCBzZXQgdXAgdGhlIGRvb3JzIHRoZXJlb2YsIHRoZSBsb2NrcyB0aGVyZW9mLCBhbmQgdGhlIGJhcnMgdGhlcmVvZi4KQnV0IHRoZSBnYXRlIG9mIHRoZSBmb3VudGFpbiByZXBhaXJlZCBTaGFsbHVuIHRoZSBzb24gb2YgQ29saG96ZWgsIHRoZSBydWxlciBvZiBwYXJ0IG9mIE1penBhaDsgaGUgYnVpbHQgaXQsIGFuZCBjb3ZlcmVkIGl0LCBhbmQgc2V0IHVwIHRoZSBkb29ycyB0aGVyZW9mLCB0aGUgbG9ja3MgdGhlcmVvZiwgYW5kIHRoZSBiYXJzIHRoZXJlb2YsIGFuZCB0aGUgd2FsbCBvZiB0aGUgcG9vbCBvZiBTaWxvYWggYnkgdGhlIGtpbmcncyBnYXJkZW4sIGFuZCB1bnRvIHRoZSBzdGFpcnMgdGhhdCBnbyBkb3duIGZyb20gdGhlIGNpdHkgb2YgRGF2aWQuCkFmdGVyIGhpbSByZXBhaXJlZCBOZWhlbWlhaCB0aGUgc29uIG9mIEF6YnVrLCB0aGUgcnVsZXIgb2YgdGhlIGhhbGYgcGFydCBvZiBCZXRoenVyLCB1bnRvIHRoZSBwbGFjZSBvdmVyIGFnYWluc3QgdGhlIHNlcHVsY2hyZXMgb2YgRGF2aWQsIGFuZCB0byB0aGUgcG9vbCB0aGF0IHdhcyBtYWRlLCBhbmQgdW50byB0aGUgaG91c2Ugb2YgdGhlIG1pZ2h0eS4KQWZ0ZXIgaGltIHJlcGFpcmVkIHRoZSBMZXZpdGVzLCBSZWh1bSB0aGUgc29uIG9mIEJhbmkuIE5leHQgdW50byBoaW0gcmVwYWlyZWQgSGFzaGFiaWFoLCB0aGUgcnVsZXIgb2YgdGhlIGhhbGYgcGFydCBvZiBLZWlsYWgsIGluIGhpcyBwYXJ0LgpBZnRlciBoaW0gcmVwYWlyZWQgdGhlaXIgYnJldGhyZW4sIEJhdmFpIHRoZSBzb24gb2YgSGVuYWRhZCwgdGhlIHJ1bGVyIG9mIHRoZSBoYWxmIHBhcnQgb2YgS2VpbGFoLgpBbmQgbmV4dCB0byBoaW0gcmVwYWlyZWQgRXplciB0aGUgc29uIG9mIEplc2h1YSwgdGhlIHJ1bGVyIG9mIE1penBhaCwgYW5vdGhlciBwaWVjZSBvdmVyIGFnYWluc3QgdGhlIGdvaW5nIHVwIHRvIHRoZSBhcm1vdXJ5IGF0IHRoZSB0dXJuaW5nIG9mIHRoZSB3YWxsLgpBZnRlciBoaW0gQmFydWNoIHRoZSBzb24gb2YgWmFiYmFpIGVhcm5lc3RseSByZXBhaXJlZCB0aGUgb3RoZXIgcGllY2UsIGZyb20gdGhlIHR1cm5pbmcgb2YgdGhlIHdhbGwgdW50byB0aGUgZG9vciBvZiB0aGUgaG91c2Ugb2YgRWxpYXNoaWIgdGhlIGhpZ2ggcHJpZXN0LgpBZnRlciBoaW0gcmVwYWlyZWQgTWVyZW1vdGggdGhlIHNvbiBvZiBVcmlqYWggdGhlIHNvbiBvZiBLb3ogYW5vdGhlciBwaWVjZSwgZnJvbSB0aGUgZG9vciBvZiB0aGUgaG91c2Ugb2YgRWxpYXNoaWIgZXZlbiB0byB0aGUgZW5kIG9mIHRoZSBob3VzZSBvZiBFbGlhc2hpYi4KQW5kIGFmdGVyIGhpbSByZXBhaXJlZCB0aGUgcHJpZXN0cywgdGhlIG1lbiBvZiB0aGUgcGxhaW4uCkFmdGVyIGhpbSByZXBhaXJlZCBCZW5qYW1pbiBhbmQgSGFzaHViIG92ZXIgYWdhaW5zdCB0aGVpciBob3VzZS4gQWZ0ZXIgaGltIHJlcGFpcmVkIEF6YXJpYWggdGhlIHNvbiBvZiBNYWFzZWlhaCB0aGUgc29uIG9mIEFuYW5pYWggYnkgaGlzIGhvdXNlLgpBZnRlciBoaW0gcmVwYWlyZWQgQmlubnVpIHRoZSBzb24gb2YgSGVuYWRhZCBhbm90aGVyIHBpZWNlLCBmcm9tIHRoZSBob3VzZSBvZiBBemFyaWFoIHVudG8gdGhlIHR1cm5pbmcgb2YgdGhlIHdhbGwsIGV2ZW4gdW50byB0aGUgY29ybmVyLgpQYWxhbCB0aGUgc29uIG9mIFV6YWksIG92ZXIgYWdhaW5zdCB0aGUgdHVybmluZyBvZiB0aGUgd2FsbCwgYW5kIHRoZSB0b3dlciB3aGljaCBsaWV0aCBvdXQgZnJvbSB0aGUga2luZydzIGhpZ2ggaG91c2UsIHRoYXQgd2FzIGJ5IHRoZSBjb3VydCBvZiB0aGUgcHJpc29uLiBBZnRlciBoaW0gUGVkYWlhaCB0aGUgc29uIG9mIFBhcm9zaC4KTW9yZW92ZXIgdGhlIE5ldGhpbmltcyBkd2VsdCBpbiBPcGhlbCwgdW50byB0aGUgcGxhY2Ugb3ZlciBhZ2FpbnN0IHRoZSB3YXRlciBnYXRlIHRvd2FyZCB0aGUgZWFzdCwgYW5kIHRoZSB0b3dlciB0aGF0IGxpZXRoIG91dC4KQWZ0ZXIgdGhlbSB0aGUgVGVrb2l0ZXMgcmVwYWlyZWQgYW5vdGhlciBwaWVjZSwgb3ZlciBhZ2FpbnN0IHRoZSBncmVhdCB0b3dlciB0aGF0IGxpZXRoIG91dCwgZXZlbiB1bnRvIHRoZSB3YWxsIG9mIE9waGVsLgpGcm9tIGFib3ZlIHRoZSBob3JzZSBnYXRlIHJlcGFpcmVkIHRoZSBwcmllc3RzLCBldmVyeSBvbmUgb3ZlciBhZ2FpbnN0IGhpcyBob3VzZS4KQWZ0ZXIgdGhlbSByZXBhaXJlZCBaYWRvayB0aGUgc29uIG9mIEltbWVyIG92ZXIgYWdhaW5zdCBoaXMgaG91c2UuIEFmdGVyIGhpbSByZXBhaXJlZCBhbHNvIFNoZW1haWFoIHRoZSBzb24gb2YgU2hlY2hhbmlhaCwgdGhlIGtlZXBlciBvZiB0aGUgZWFzdCBnYXRlLgpBZnRlciBoaW0gcmVwYWlyZWQgSGFuYW5pYWggdGhlIHNvbiBvZiBTaGVsZW1pYWgsIGFuZCBIYW51biB0aGUgc2l4dGggc29uIG9mIFphbGFwaCwgYW5vdGhlciBwaWVjZS4gQWZ0ZXIgaGltIHJlcGFpcmVkIE1lc2h1bGxhbSB0aGUgc29uIG9mIEJlcmVjaGlhaCBvdmVyIGFnYWluc3QgaGlzIGNoYW1iZXIuCkFmdGVyIGhpbSByZXBhaXJlZCBNYWxjaGlhaCB0aGUgZ29sZHNtaXRoJ3Mgc29uIHVudG8gdGhlIHBsYWNlIG9mIHRoZSBOZXRoaW5pbXMsIGFuZCBvZiB0aGUgbWVyY2hhbnRzLCBvdmVyIGFnYWluc3QgdGhlIGdhdGUgTWlwaGthZCwgYW5kIHRvIHRoZSBnb2luZyB1cCBvZiB0aGUgY29ybmVyLgpBbmQgYmV0d2VlbiB0aGUgZ29pbmcgdXAgb2YgdGhlIGNvcm5lciB1bnRvIHRoZSBzaGVlcCBnYXRlIHJlcGFpcmVkIHRoZSBnb2xkc21pdGhzIGFuZCB0aGUgbWVyY2hhbnRzLgpCdXQgaXQgY2FtZSB0byBwYXNzLCB0aGF0IHdoZW4gU2FuYmFsbGF0IGhlYXJkIHRoYXQgd2UgYnVpbGRlZCB0aGUgd2FsbCwgaGUgd2FzIHdyb3RoLCBhbmQgdG9vayBncmVhdCBpbmRpZ25hdGlvbiwgYW5kIG1vY2tlZCB0aGUgSmV3cy4KQW5kIGhlIHNwYWtlIGJlZm9yZSBoaXMgYnJldGhyZW4gYW5kIHRoZSBhcm15IG9mIFNhbWFyaWEsIGFuZCBzYWlkLCBXaGF0IGRvIHRoZXNlIGZlZWJsZSBKZXdzPyB3aWxsIHRoZXkgZm9ydGlmeSB0aGVtc2VsdmVzPyB3aWxsIHRoZXkgc2FjcmlmaWNlPyB3aWxsIHRoZXkgbWFrZSBhbiBlbmQgaW4gYSBkYXk/IHdpbGwgdGhleSByZXZpdmUgdGhlIHN0b25lcyBvdXQgb2YgdGhlIGhlYXBzIG9mIHRoZSBydWJiaXNoIHdoaWNoIGFyZSBidXJuZWQ/Ck5vdyBUb2JpYWggdGhlIEFtbW9uaXRlIHdhcyBieSBoaW0sIGFuZCBoZSBzYWlkLCBFdmVuIHRoYXQgd2hpY2ggdGhleSBidWlsZCwgaWYgYSBmb3ggZ28gdXAsIGhlIHNoYWxsIGV2ZW4gYnJlYWsgZG93biB0aGVpciBzdG9uZSB3YWxsLgpIZWFyLCBPIG91ciBHb2Q7IGZvciB3ZSBhcmUgZGVzcGlzZWQ6IGFuZCB0dXJuIHRoZWlyIHJlcHJvYWNoIHVwb24gdGhlaXIgb3duIGhlYWQsIGFuZCBnaXZlIHRoZW0gZm9yIGEgcHJleSBpbiB0aGUgbGFuZCBvZiBjYXB0aXZpdHk6CkFuZCBjb3ZlciBub3QgdGhlaXIgaW5pcXVpdHksIGFuZCBsZXQgbm90IHRoZWlyIHNpbiBiZSBibG90dGVkIG91dCBmcm9tIGJlZm9yZSB0aGVlOiBmb3IgdGhleSBoYXZlIHByb3Zva2VkIHRoZWUgdG8gYW5nZXIgYmVmb3JlIHRoZSBidWlsZGVycy4KU28gYnVpbHQgd2UgdGhlIHdhbGw7IGFuZCBhbGwgdGhlIHdhbGwgd2FzIGpvaW5lZCB0b2dldGhlciB1bnRvIHRoZSBoYWxmIHRoZXJlb2Y6IGZvciB0aGUgcGVvcGxlIGhhZCBhIG1pbmQgdG8gd29yay4KQnV0IGl0IGNhbWUgdG8gcGFzcywgdGhhdCB3aGVuIFNhbmJhbGxhdCwgYW5kIFRvYmlhaCwgYW5kIHRoZSBBcmFiaWFucywgYW5kIHRoZSBBbW1vbml0ZXMsIGFuZCB0aGUgQXNoZG9kaXRlcywgaGVhcmQgdGhhdCB0aGUgd2FsbHMgb2YgSmVydXNhbGVtIHdlcmUgbWFkZSB1cCwgYW5kIHRoYXQgdGhlIGJyZWFjaGVzIGJlZ2FuIHRvIGJlIHN0b3BwZWQsIHRoZW4gdGhleSB3ZXJlIHZlcnkgd3JvdGgsCkFuZCBjb25zcGlyZWQgYWxsIG9mIHRoZW0gdG9nZXRoZXIgdG8gY29tZSBhbmQgdG8gZmlnaHQgYWdhaW5zdCBKZXJ1c2FsZW0sIGFuZCB0byBoaW5kZXIgaXQuCk5ldmVydGhlbGVzcyB3ZSBtYWRlIG91ciBwcmF5ZXIgdW50byBvdXIgR29kLCBhbmQgc2V0IGEgd2F0Y2ggYWdhaW5zdCB0aGVtIGRheSBhbmQgbmlnaHQsIGJlY2F1c2Ugb2YgdGhlbS4KQW5kIEp1ZGFoIHNhaWQsIFRoZSBzdHJlbmd0aCBvZiB0aGUgYmVhcmVycyBvZiBidXJkZW5zIGlzIGRlY2F5ZWQsIGFuZCB0aGVyZSBpcyBtdWNoIHJ1YmJpc2g7IHNvIHRoYXQgd2UgYXJlIG5vdCBhYmxlIHRvIGJ1aWxkIHRoZSB3YWxsLgpBbmQgb3VyIGFkdmVyc2FyaWVzIHNhaWQsIFRoZXkgc2hhbGwgbm90IGtub3csIG5laXRoZXIgc2VlLCB0aWxsIHdlIGNvbWUgaW4gdGhlIG1pZHN0IGFtb25nIHRoZW0sIGFuZCBzbGF5IHRoZW0sIGFuZCBjYXVzZSB0aGUgd29yayB0byBjZWFzZS4KQW5kIGl0IGNhbWUgdG8gcGFzcywgdGhhdCB3aGVuIHRoZSBKZXdzIHdoaWNoIGR3ZWx0IGJ5IHRoZW0gY2FtZSwgdGhleSBzYWlkIHVudG8gdXMgdGVuIHRpbWVzLCBGcm9tIGFsbCBwbGFjZXMgd2hlbmNlIHllIHNoYWxsIHJldHVybiB1bnRvIHVzIHRoZXkgd2lsbCBiZSB1cG9uIHlvdS4KVGhlcmVmb3JlIHNldCBJIGluIHRoZSBsb3dlciBwbGFjZXMgYmVoaW5kIHRoZSB3YWxsLCBhbmQgb24gdGhlIGhpZ2hlciBwbGFjZXMsIEkgZXZlbiBzZXQgdGhlIHBlb3BsZSBhZnRlciB0aGVpciBmYW1pbGllcyB3aXRoIHRoZWlyIHN3b3JkcywgdGhlaXIgc3BlYXJzLCBhbmQgdGhlaXIgYm93cy4KQW5kIEkgbG9va2VkLCBhbmQgcm9zZSB1cCwgYW5kIHNhaWQgdW50byB0aGUgbm9ibGVzLCBhbmQgdG8gdGhlIHJ1bGVycywgYW5kIHRvIHRoZSByZXN0IG9mIHRoZSBwZW9wbGUsIEJlIG5vdCB5ZSBhZnJhaWQgb2YgdGhlbTogcmVtZW1iZXIgdGhlIExPUkQsIHdoaWNoIGlzIGdyZWF0IGFuZCB0ZXJyaWJsZSwgYW5kIGZpZ2h0IGZvciB5b3VyIGJyZXRocmVuLCB5b3VyIHNvbnMsIGFuZCB5b3VyIGRhdWdodGVycywgeW91ciB3aXZlcywgYW5kIHlvdXIgaG91c2VzLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIG91ciBlbmVtaWVzIGhlYXJkIHRoYXQgaXQgd2FzIGtub3duIHVudG8gdXMsIGFuZCBHb2QgaGFkIGJyb3VnaHQgdGhlaXIgY291bnNlbCB0byBub3VnaHQsIHRoYXQgd2UgcmV0dXJuZWQgYWxsIG9mIHVzIHRvIHRoZSB3YWxsLCBldmVyeSBvbmUgdW50byBoaXMgd29yay4KQW5kIGl0IGNhbWUgdG8gcGFzcyBmcm9tIHRoYXQgdGltZSBmb3J0aCwgdGhhdCB0aGUgaGFsZiBvZiBteSBzZXJ2YW50cyB3cm91Z2h0IGluIHRoZSB3b3JrLCBhbmQgdGhlIG90aGVyIGhhbGYgb2YgdGhlbSBoZWxkIGJvdGggdGhlIHNwZWFycywgdGhlIHNoaWVsZHMsIGFuZCB0aGUgYm93cywgYW5kIHRoZSBoYWJlcmdlb25zOyBhbmQgdGhlIHJ1bGVycyB3ZXJlIGJlaGluZCBhbGwgdGhlIGhvdXNlIG9mIEp1ZGFoLgpUaGV5IHdoaWNoIGJ1aWxkZWQgb24gdGhlIHdhbGwsIGFuZCB0aGV5IHRoYXQgYmFyZSBidXJkZW5zLCB3aXRoIHRob3NlIHRoYXQgbGFkZWQsIGV2ZXJ5IG9uZSB3aXRoIG9uZSBvZiBoaXMgaGFuZHMgd3JvdWdodCBpbiB0aGUgd29yaywgYW5kIHdpdGggdGhlIG90aGVyIGhhbmQgaGVsZCBhIHdlYXBvbi4KRm9yIHRoZSBidWlsZGVycywgZXZlcnkgb25lIGhhZCBoaXMgc3dvcmQgZ2lyZGVkIGJ5IGhpcyBzaWRlLCBhbmQgc28gYnVpbGRlZC4gQW5kIGhlIHRoYXQgc291bmRlZCB0aGUgdHJ1bXBldCB3YXMgYnkgbWUuCkFuZCBJIHNhaWQgdW50byB0aGUgbm9ibGVzLCBhbmQgdG8gdGhlIHJ1bGVycywgYW5kIHRvIHRoZSByZXN0IG9mIHRoZSBwZW9wbGUsIFRoZSB3b3JrIGlzIGdyZWF0IGFuZCBsYXJnZSwgYW5kIHdlIGFyZSBzZXBhcmF0ZWQgdXBvbiB0aGUgd2FsbCwgb25lIGZhciBmcm9tIGFub3RoZXIuCkluIHdoYXQgcGxhY2UgdGhlcmVmb3JlIHllIGhlYXIgdGhlIHNvdW5kIG9mIHRoZSB0cnVtcGV0LCByZXNvcnQgeWUgdGhpdGhlciB1bnRvIHVzOiBvdXIgR29kIHNoYWxsIGZpZ2h0IGZvciB1cy4KU28gd2UgbGFib3VyZWQgaW4gdGhlIHdvcms6IGFuZCBoYWxmIG9mIHRoZW0gaGVsZCB0aGUgc3BlYXJzIGZyb20gdGhlIHJpc2luZyBvZiB0aGUgbW9ybmluZyB0aWxsIHRoZSBzdGFycyBhcHBlYXJlZC4KTGlrZXdpc2UgYXQgdGhlIHNhbWUgdGltZSBzYWlkIEkgdW50byB0aGUgcGVvcGxlLCBMZXQgZXZlcnkgb25lIHdpdGggaGlzIHNlcnZhbnQgbG9kZ2Ugd2l0aGluIEplcnVzYWxlbSwgdGhhdCBpbiB0aGUgbmlnaHQgdGhleSBtYXkgYmUgYSBndWFyZCB0byB1cywgYW5kIGxhYm91ciBvbiB0aGUgZGF5LgpTbyBuZWl0aGVyIEksIG5vciBteSBicmV0aHJlbiwgbm9yIG15IHNlcnZhbnRzLCBub3IgdGhlIG1lbiBvZiB0aGUgZ3VhcmQgd2hpY2ggZm9sbG93ZWQgbWUsIG5vbmUgb2YgdXMgcHV0IG9mZiBvdXIgY2xvdGhlcywgc2F2aW5nIHRoYXQgZXZlcnkgb25lIHB1dCB0aGVtIG9mZiBmb3Igd2FzaGluZy4KQW5kIHRoZXJlIHdhcyBhIGdyZWF0IGNyeSBvZiB0aGUgcGVvcGxlIGFuZCBvZiB0aGVpciB3aXZlcyBhZ2FpbnN0IHRoZWlyIGJyZXRocmVuIHRoZSBKZXdzLgpGb3IgdGhlcmUgd2VyZSB0aGF0IHNhaWQsIFdlLCBvdXIgc29ucywgYW5kIG91ciBkYXVnaHRlcnMsIGFyZSBtYW55OiB0aGVyZWZvcmUgd2UgdGFrZSB1cCBjb3JuIGZvciB0aGVtLCB0aGF0IHdlIG1heSBlYXQsIGFuZCBsaXZlLgpTb21lIGFsc28gdGhlcmUgd2VyZSB0aGF0IHNhaWQsIFdlIGhhdmUgbW9ydGdhZ2VkIG91ciBsYW5kcywgdmluZXlhcmRzLCBhbmQgaG91c2VzLCB0aGF0IHdlIG1pZ2h0IGJ1eSBjb3JuLCBiZWNhdXNlIG9mIHRoZSBkZWFydGguClRoZXJlIHdlcmUgYWxzbyB0aGF0IHNhaWQsIFdlIGhhdmUgYm9ycm93ZWQgbW9uZXkgZm9yIHRoZSBraW5nJ3MgdHJpYnV0ZSwgYW5kIHRoYXQgdXBvbiBvdXIgbGFuZHMgYW5kIHZpbmV5YXJkcy4KWWV0IG5vdyBvdXIgZmxlc2ggaXMgYXMgdGhlIGZsZXNoIG9mIG91ciBicmV0aHJlbiwgb3VyIGNoaWxkcmVuIGFzIHRoZWlyIGNoaWxkcmVuOiBhbmQsIGxvLCB3ZSBicmluZyBpbnRvIGJvbmRhZ2Ugb3VyIHNvbnMgYW5kIG91ciBkYXVnaHRlcnMgdG8gYmUgc2VydmFudHMsIGFuZCBzb21lIG9mIG91ciBkYXVnaHRlcnMgYXJlIGJyb3VnaHQgdW50byBib25kYWdlIGFscmVhZHk6IG5laXRoZXIgaXMgaXQgaW4gb3VyIHBvd2VyIHRvIHJlZGVlbSB0aGVtOyBmb3Igb3RoZXIgbWVuIGhhdmUgb3VyIGxhbmRzIGFuZCB2aW5leWFyZHMuCkFuZCBJIHdhcyB2ZXJ5IGFuZ3J5IHdoZW4gSSBoZWFyZCB0aGVpciBjcnkgYW5kIHRoZXNlIHdvcmRzLgpUaGVuIEkgY29uc3VsdGVkIHdpdGggbXlzZWxmLCBhbmQgSSByZWJ1a2VkIHRoZSBub2JsZXMsIGFuZCB0aGUgcnVsZXJzLCBhbmQgc2FpZCB1bnRvIHRoZW0sIFllIGV4YWN0IHVzdXJ5LCBldmVyeSBvbmUgb2YgaGlzIGJyb3RoZXIuIEFuZCBJIHNldCBhIGdyZWF0IGFzc2VtYmx5IGFnYWluc3QgdGhlbS4KQW5kIEkgc2FpZCB1bnRvIHRoZW0sIFdlIGFmdGVyIG91ciBhYmlsaXR5IGhhdmUgcmVkZWVtZWQgb3VyIGJyZXRocmVuIHRoZSBKZXdzLCB3aGljaCB3ZXJlIHNvbGQgdW50byB0aGUgaGVhdGhlbjsgYW5kIHdpbGwgeWUgZXZlbiBzZWxsIHlvdXIgYnJldGhyZW4/IG9yIHNoYWxsIHRoZXkgYmUgc29sZCB1bnRvIHVzPyBUaGVuIGhlbGQgdGhleSB0aGVpciBwZWFjZSwgYW5kIGZvdW5kIG5vdGhpbmcgdG8gYW5zd2VyLgpBbHNvIEkgc2FpZCwgSXQgaXMgbm90IGdvb2QgdGhhdCB5ZSBkbzogb3VnaHQgeWUgbm90IHRvIHdhbGsgaW4gdGhlIGZlYXIgb2Ygb3VyIEdvZCBiZWNhdXNlIG9mIHRoZSByZXByb2FjaCBvZiB0aGUgaGVhdGhlbiBvdXIgZW5lbWllcz8KSSBsaWtld2lzZSwgYW5kIG15IGJyZXRocmVuLCBhbmQgbXkgc2VydmFudHMsIG1pZ2h0IGV4YWN0IG9mIHRoZW0gbW9uZXkgYW5kIGNvcm46IEkgcHJheSB5b3UsIGxldCB1cyBsZWF2ZSBvZmYgdGhpcyB1c3VyeS4KUmVzdG9yZSwgSSBwcmF5IHlvdSwgdG8gdGhlbSwgZXZlbiB0aGlzIGRheSwgdGhlaXIgbGFuZHMsIHRoZWlyIHZpbmV5YXJkcywgdGhlaXIgb2xpdmV5YXJkcywgYW5kIHRoZWlyIGhvdXNlcywgYWxzbyB0aGUgaHVuZHJlZHRoIHBhcnQgb2YgdGhlIG1vbmV5LCBhbmQgb2YgdGhlIGNvcm4sIHRoZSB3aW5lLCBhbmQgdGhlIG9pbCwgdGhhdCB5ZSBleGFjdCBvZiB0aGVtLgpUaGVuIHNhaWQgdGhleSwgV2Ugd2lsbCByZXN0b3JlIHRoZW0sIGFuZCB3aWxsIHJlcXVpcmUgbm90aGluZyBvZiB0aGVtOyBzbyB3aWxsIHdlIGRvIGFzIHRob3Ugc2F5ZXN0LiBUaGVuIEkgY2FsbGVkIHRoZSBwcmllc3RzLCBhbmQgdG9vayBhbiBvYXRoIG9mIHRoZW0sIHRoYXQgdGhleSBzaG91bGQgZG8gYWNjb3JkaW5nIHRvIHRoaXMgcHJvbWlzZS4KQWxzbyBJIHNob29rIG15IGxhcCwgYW5kIHNhaWQsIFNvIEdvZCBzaGFrZSBvdXQgZXZlcnkgbWFuIGZyb20gaGlzIGhvdXNlLCBhbmQgZnJvbSBoaXMgbGFib3VyLCB0aGF0IHBlcmZvcm1ldGggbm90IHRoaXMgcHJvbWlzZSwgZXZlbiB0aHVzIGJlIGhlIHNoYWtlbiBvdXQsIGFuZCBlbXB0aWVkLiBBbmQgYWxsIHRoZSBjb25ncmVnYXRpb24gc2FpZCwgQW1lbiwgYW5kIHByYWlzZWQgdGhlIExPUkQuIEFuZCB0aGUgcGVvcGxlIGRpZCBhY2NvcmRpbmcgdG8gdGhpcyBwcm9taXNlLgpNb3Jlb3ZlciBmcm9tIHRoZSB0aW1lIHRoYXQgSSB3YXMgYXBwb2ludGVkIHRvIGJlIHRoZWlyIGdvdmVybm9yIGluIHRoZSBsYW5kIG9mIEp1ZGFoLCBmcm9tIHRoZSB0d2VudGlldGggeWVhciBldmVuIHVudG8gdGhlIHR3byBhbmQgdGhpcnRpZXRoIHllYXIgb2YgQXJ0YXhlcnhlcyB0aGUga2luZywgdGhhdCBpcywgdHdlbHZlIHllYXJzLCBJIGFuZCBteSBicmV0aHJlbiBoYXZlIG5vdCBlYXRlbiB0aGUgYnJlYWQgb2YgdGhlIGdvdmVybm9yLgpCdXQgdGhlIGZvcm1lciBnb3Zlcm5vcnMgdGhhdCBoYWQgYmVlbiBiZWZvcmUgbWUgd2VyZSBjaGFyZ2VhYmxlIHVudG8gdGhlIHBlb3BsZSwgYW5kIGhhZCB0YWtlbiBvZiB0aGVtIGJyZWFkIGFuZCB3aW5lLCBiZXNpZGUgZm9ydHkgc2hla2VscyBvZiBzaWx2ZXI7IHllYSwgZXZlbiB0aGVpciBzZXJ2YW50cyBiYXJlIHJ1bGUgb3ZlciB0aGUgcGVvcGxlOiBidXQgc28gZGlkIG5vdCBJLCBiZWNhdXNlIG9mIHRoZSBmZWFyIG9mIEdvZC4KWWVhLCBhbHNvIEkgY29udGludWVkIGluIHRoZSB3b3JrIG9mIHRoaXMgd2FsbCwgbmVpdGhlciBib3VnaHQgd2UgYW55IGxhbmQ6IGFuZCBhbGwgbXkgc2VydmFudHMgd2VyZSBnYXRoZXJlZCB0aGl0aGVyIHVudG8gdGhlIHdvcmsuCk1vcmVvdmVyIHRoZXJlIHdlcmUgYXQgbXkgdGFibGUgYW4gaHVuZHJlZCBhbmQgZmlmdHkgb2YgdGhlIEpld3MgYW5kIHJ1bGVycywgYmVzaWRlIHRob3NlIHRoYXQgY2FtZSB1bnRvIHVzIGZyb20gYW1vbmcgdGhlIGhlYXRoZW4gdGhhdCBhcmUgYWJvdXQgdXMuCk5vdyB0aGF0IHdoaWNoIHdhcyBwcmVwYXJlZCBmb3IgbWUgZGFpbHkgd2FzIG9uZSBveCBhbmQgc2l4IGNob2ljZSBzaGVlcDsgYWxzbyBmb3dscyB3ZXJlIHByZXBhcmVkIGZvciBtZSwgYW5kIG9uY2UgaW4gdGVuIGRheXMgc3RvcmUgb2YgYWxsIHNvcnRzIG9mIHdpbmU6IHlldCBmb3IgYWxsIHRoaXMgcmVxdWlyZWQgbm90IEkgdGhlIGJyZWFkIG9mIHRoZSBnb3Zlcm5vciwgYmVjYXVzZSB0aGUgYm9uZGFnZSB3YXMgaGVhdnkgdXBvbiB0aGlzIHBlb3BsZS4KVGhpbmsgdXBvbiBtZSwgbXkgR29kLCBmb3IgZ29vZCwgYWNjb3JkaW5nIHRvIGFsbCB0aGF0IEkgaGF2ZSBkb25lIGZvciB0aGlzIHBlb3BsZS4KTm93IGl0IGNhbWUgdG8gcGFzcyB3aGVuIFNhbmJhbGxhdCwgYW5kIFRvYmlhaCwgYW5kIEdlc2hlbSB0aGUgQXJhYmlhbiwgYW5kIHRoZSByZXN0IG9mIG91ciBlbmVtaWVzLCBoZWFyZCB0aGF0IEkgaGFkIGJ1aWxkZWQgdGhlIHdhbGwsIGFuZCB0aGF0IHRoZXJlIHdhcyBubyBicmVhY2ggbGVmdCB0aGVyZWluOyAodGhvdWdoIGF0IHRoYXQgdGltZSBJIGhhZCBub3Qgc2V0IHVwIHRoZSBkb29ycyB1cG9uIHRoZSBnYXRlczspClRoYXQgU2FuYmFsbGF0IGFuZCBHZXNoZW0gc2VudCB1bnRvIG1lLCBzYXlpbmcsIENvbWUsIGxldCB1cyBtZWV0IHRvZ2V0aGVyIGluIHNvbWUgb25lIG9mIHRoZSB2aWxsYWdlcyBpbiB0aGUgcGxhaW4gb2YgT25vLiBCdXQgdGhleSB0aG91Z2h0IHRvIGRvIG1lIG1pc2NoaWVmLgpBbmQgSSBzZW50IG1lc3NlbmdlcnMgdW50byB0aGVtLCBzYXlpbmcsIEkgYW0gZG9pbmcgYSBncmVhdCB3b3JrLCBzbyB0aGF0IEkgY2Fubm90IGNvbWUgZG93bjogd2h5IHNob3VsZCB0aGUgd29yayBjZWFzZSwgd2hpbHN0IEkgbGVhdmUgaXQsIGFuZCBjb21lIGRvd24gdG8geW91PwpZZXQgdGhleSBzZW50IHVudG8gbWUgZm91ciB0aW1lcyBhZnRlciB0aGlzIHNvcnQ7IGFuZCBJIGFuc3dlcmVkIHRoZW0gYWZ0ZXIgdGhlIHNhbWUgbWFubmVyLgpUaGVuIHNlbnQgU2FuYmFsbGF0IGhpcyBzZXJ2YW50IHVudG8gbWUgaW4gbGlrZSBtYW5uZXIgdGhlIGZpZnRoIHRpbWUgd2l0aCBhbiBvcGVuIGxldHRlciBpbiBoaXMgaGFuZDsKV2hlcmVpbiB3YXMgd3JpdHRlbiwgSXQgaXMgcmVwb3J0ZWQgYW1vbmcgdGhlIGhlYXRoZW4sIGFuZCBHYXNobXUgc2FpdGggaXQsIHRoYXQgdGhvdSBhbmQgdGhlIEpld3MgdGhpbmsgdG8gcmViZWw6IGZvciB3aGljaCBjYXVzZSB0aG91IGJ1aWxkZXN0IHRoZSB3YWxsLCB0aGF0IHRob3UgbWF5ZXN0IGJlIHRoZWlyIGtpbmcsIGFjY29yZGluZyB0byB0aGVzZSB3b3Jkcy4KQW5kIHRob3UgaGFzdCBhbHNvIGFwcG9pbnRlZCBwcm9waGV0cyB0byBwcmVhY2ggb2YgdGhlZSBhdCBKZXJ1c2FsZW0sIHNheWluZywgVGhlcmUgaXMgYSBraW5nIGluIEp1ZGFoOiBhbmQgbm93IHNoYWxsIGl0IGJlIHJlcG9ydGVkIHRvIHRoZSBraW5nIGFjY29yZGluZyB0byB0aGVzZSB3b3Jkcy4gQ29tZSBub3cgdGhlcmVmb3JlLCBhbmQgbGV0IHVzIHRha2UgY291bnNlbCB0b2dldGhlci4KVGhlbiBJIHNlbnQgdW50byBoaW0sIHNheWluZywgVGhlcmUgYXJlIG5vIHN1Y2ggdGhpbmdzIGRvbmUgYXMgdGhvdSBzYXllc3QsIGJ1dCB0aG91IGZlaWduZXN0IHRoZW0gb3V0IG9mIHRoaW5lIG93biBoZWFydC4KRm9yIHRoZXkgYWxsIG1hZGUgdXMgYWZyYWlkLCBzYXlpbmcsIFRoZWlyIGhhbmRzIHNoYWxsIGJlIHdlYWtlbmVkIGZyb20gdGhlIHdvcmssIHRoYXQgaXQgYmUgbm90IGRvbmUuIE5vdyB0aGVyZWZvcmUsIE8gR29kLCBzdHJlbmd0aGVuIG15IGhhbmRzLgpBZnRlcndhcmQgSSBjYW1lIHVudG8gdGhlIGhvdXNlIG9mIFNoZW1haWFoIHRoZSBzb24gb2YgRGVsYWlhaCB0aGUgc29uIG9mIE1laGV0YWJlZWwsIHdobyB3YXMgc2h1dCB1cDsgYW5kIGhlIHNhaWQsIExldCB1cyBtZWV0IHRvZ2V0aGVyIGluIHRoZSBob3VzZSBvZiBHb2QsIHdpdGhpbiB0aGUgdGVtcGxlLCBhbmQgbGV0IHVzIHNodXQgdGhlIGRvb3JzIG9mIHRoZSB0ZW1wbGU6IGZvciB0aGV5IHdpbGwgY29tZSB0byBzbGF5IHRoZWU7IHllYSwgaW4gdGhlIG5pZ2h0IHdpbGwgdGhleSBjb21lIHRvIHNsYXkgdGhlZS4KQW5kIEkgc2FpZCwgU2hvdWxkIHN1Y2ggYSBtYW4gYXMgSSBmbGVlPyBhbmQgd2hvIGlzIHRoZXJlLCB0aGF0LCBiZWluZyBhcyBJIGFtLCB3b3VsZCBnbyBpbnRvIHRoZSB0ZW1wbGUgdG8gc2F2ZSBoaXMgbGlmZT8gSSB3aWxsIG5vdCBnbyBpbi4KQW5kLCBsbywgSSBwZXJjZWl2ZWQgdGhhdCBHb2QgaGFkIG5vdCBzZW50IGhpbTsgYnV0IHRoYXQgaGUgcHJvbm91bmNlZCB0aGlzIHByb3BoZWN5IGFnYWluc3QgbWU6IGZvciBUb2JpYWggYW5kIFNhbmJhbGxhdCBoYWQgaGlyZWQgaGltLgpUaGVyZWZvcmUgd2FzIGhlIGhpcmVkLCB0aGF0IEkgc2hvdWxkIGJlIGFmcmFpZCwgYW5kIGRvIHNvLCBhbmQgc2luLCBhbmQgdGhhdCB0aGV5IG1pZ2h0IGhhdmUgbWF0dGVyIGZvciBhbiBldmlsIHJlcG9ydCwgdGhhdCB0aGV5IG1pZ2h0IHJlcHJvYWNoIG1lLgpNeSBHb2QsIHRoaW5rIHRob3UgdXBvbiBUb2JpYWggYW5kIFNhbmJhbGxhdCBhY2NvcmRpbmcgdG8gdGhlc2UgdGhlaXIgd29ya3MsIGFuZCBvbiB0aGUgcHJvcGhldGVzcyBOb2FkaWFoLCBhbmQgdGhlIHJlc3Qgb2YgdGhlIHByb3BoZXRzLCB0aGF0IHdvdWxkIGhhdmUgcHV0IG1lIGluIGZlYXIuClNvIHRoZSB3YWxsIHdhcyBmaW5pc2hlZCBpbiB0aGUgdHdlbnR5IGFuZCBmaWZ0aCBkYXkgb2YgdGhlIG1vbnRoIEVsdWwsIGluIGZpZnR5IGFuZCB0d28gZGF5cy4KQW5kIGl0IGNhbWUgdG8gcGFzcywgdGhhdCB3aGVuIGFsbCBvdXIgZW5lbWllcyBoZWFyZCB0aGVyZW9mLCBhbmQgYWxsIHRoZSBoZWF0aGVuIHRoYXQgd2VyZSBhYm91dCB1cyBzYXcgdGhlc2UgdGhpbmdzLCB0aGV5IHdlcmUgbXVjaCBjYXN0IGRvd24gaW4gdGhlaXIgb3duIGV5ZXM6IGZvciB0aGV5IHBlcmNlaXZlZCB0aGF0IHRoaXMgd29yayB3YXMgd3JvdWdodCBvZiBvdXIgR29kLgpNb3Jlb3ZlciBpbiB0aG9zZSBkYXlzIHRoZSBub2JsZXMgb2YgSnVkYWggc2VudCBtYW55IGxldHRlcnMgdW50byBUb2JpYWgsIGFuZCB0aGUgbGV0dGVycyBvZiBUb2JpYWggY2FtZSB1bnRvIHRoZW0uCkZvciB0aGVyZSB3ZXJlIG1hbnkgaW4gSnVkYWggc3dvcm4gdW50byBoaW0sIGJlY2F1c2UgaGUgd2FzIHRoZSBzb24gaW4gbGF3IG9mIFNoZWNoYW5pYWggdGhlIHNvbiBvZiBBcmFoOyBhbmQgaGlzIHNvbiBKb2hhbmFuIGhhZCB0YWtlbiB0aGUgZGF1Z2h0ZXIgb2YgTWVzaHVsbGFtIHRoZSBzb24gb2YgQmVyZWNoaWFoLgpBbHNvIHRoZXkgcmVwb3J0ZWQgaGlzIGdvb2QgZGVlZHMgYmVmb3JlIG1lLCBhbmQgdXR0ZXJlZCBteSB3b3JkcyB0byBoaW0uIEFuZCBUb2JpYWggc2VudCBsZXR0ZXJzIHRvIHB1dCBtZSBpbiBmZWFyLgpOb3cgaXQgY2FtZSB0byBwYXNzLCB3aGVuIHRoZSB3YWxsIHdhcyBidWlsdCwgYW5kIEkgaGFkIHNldCB1cCB0aGUgZG9vcnMsIGFuZCB0aGUgcG9ydGVycyBhbmQgdGhlIHNpbmdlcnMgYW5kIHRoZSBMZXZpdGVzIHdlcmUgYXBwb2ludGVkLApUaGF0IEkgZ2F2ZSBteSBicm90aGVyIEhhbmFuaSwgYW5kIEhhbmFuaWFoIHRoZSBydWxlciBvZiB0aGUgcGFsYWNlLCBjaGFyZ2Ugb3ZlciBKZXJ1c2FsZW06IGZvciBoZSB3YXMgYSBmYWl0aGZ1bCBtYW4sIGFuZCBmZWFyZWQgR29kIGFib3ZlIG1hbnkuCkFuZCBJIHNhaWQgdW50byB0aGVtLCBMZXQgbm90IHRoZSBnYXRlcyBvZiBKZXJ1c2FsZW0gYmUgb3BlbmVkIHVudGlsIHRoZSBzdW4gYmUgaG90OyBhbmQgd2hpbGUgdGhleSBzdGFuZCBieSwgbGV0IHRoZW0gc2h1dCB0aGUgZG9vcnMsIGFuZCBiYXIgdGhlbTogYW5kIGFwcG9pbnQgd2F0Y2hlcyBvZiB0aGUgaW5oYWJpdGFudHMgb2YgSmVydXNhbGVtLCBldmVyeSBvbmUgaW4gaGlzIHdhdGNoLCBhbmQgZXZlcnkgb25lIHRvIGJlIG92ZXIgYWdhaW5zdCBoaXMgaG91c2UuCk5vdyB0aGUgY2l0eSB3YXMgbGFyZ2UgYW5kIGdyZWF0OiBidXQgdGhlIHBlb3BsZSB3ZXJlIGZldyB0aGVyZWluLCBhbmQgdGhlIGhvdXNlcyB3ZXJlIG5vdCBidWlsZGVkLgpBbmQgbXkgR29kIHB1dCBpbnRvIG1pbmUgaGVhcnQgdG8gZ2F0aGVyIHRvZ2V0aGVyIHRoZSBub2JsZXMsIGFuZCB0aGUgcnVsZXJzLCBhbmQgdGhlIHBlb3BsZSwgdGhhdCB0aGV5IG1pZ2h0IGJlIHJlY2tvbmVkIGJ5IGdlbmVhbG9neS4gQW5kIEkgZm91bmQgYSByZWdpc3RlciBvZiB0aGUgZ2VuZWFsb2d5IG9mIHRoZW0gd2hpY2ggY2FtZSB1cCBhdCB0aGUgZmlyc3QsIGFuZCBmb3VuZCB3cml0dGVuIHRoZXJlaW4sClRoZXNlIGFyZSB0aGUgY2hpbGRyZW4gb2YgdGhlIHByb3ZpbmNlLCB0aGF0IHdlbnQgdXAgb3V0IG9mIHRoZSBjYXB0aXZpdHksIG9mIHRob3NlIHRoYXQgaGFkIGJlZW4gY2FycmllZCBhd2F5LCB3aG9tIE5lYnVjaGFkbmV6emFyIHRoZSBraW5nIG9mIEJhYnlsb24gaGFkIGNhcnJpZWQgYXdheSwgYW5kIGNhbWUgYWdhaW4gdG8gSmVydXNhbGVtIGFuZCB0byBKdWRhaCwgZXZlcnkgb25lIHVudG8gaGlzIGNpdHk7CldobyBjYW1lIHdpdGggWmVydWJiYWJlbCwgSmVzaHVhLCBOZWhlbWlhaCwgQXphcmlhaCwgUmFhbWlhaCwgTmFoYW1hbmksIE1vcmRlY2FpLCBCaWxzaGFuLCBNaXNwZXJldGgsIEJpZ3ZhaSwgTmVodW0sIEJhYW5haC4gVGhlIG51bWJlciwgSSBzYXksIG9mIHRoZSBtZW4gb2YgdGhlIHBlb3BsZSBvZiBJc3JhZWwgd2FzIHRoaXM7ClRoZSBjaGlsZHJlbiBvZiBQYXJvc2gsIHR3byB0aG91c2FuZCBhbiBodW5kcmVkIHNldmVudHkgYW5kIHR3by4KVGhlIGNoaWxkcmVuIG9mIFNoZXBoYXRpYWgsIHRocmVlIGh1bmRyZWQgc2V2ZW50eSBhbmQgdHdvLgpUaGUgY2hpbGRyZW4gb2YgQXJhaCwgc2l4IGh1bmRyZWQgZmlmdHkgYW5kIHR3by4KVGhlIGNoaWxkcmVuIG9mIFBhaGF0aG1vYWIsIG9mIHRoZSBjaGlsZHJlbiBvZiBKZXNodWEgYW5kIEpvYWIsIHR3byB0aG91c2FuZCBhbmQgZWlnaHQgaHVuZHJlZCBhbmQgZWlnaHRlZW4uClRoZSBjaGlsZHJlbiBvZiBFbGFtLCBhIHRob3VzYW5kIHR3byBodW5kcmVkIGZpZnR5IGFuZCBmb3VyLgpUaGUgY2hpbGRyZW4gb2YgWmF0dHUsIGVpZ2h0IGh1bmRyZWQgZm9ydHkgYW5kIGZpdmUuClRoZSBjaGlsZHJlbiBvZiBaYWNjYWksIHNldmVuIGh1bmRyZWQgYW5kIHRocmVlc2NvcmUuClRoZSBjaGlsZHJlbiBvZiBCaW5udWksIHNpeCBodW5kcmVkIGZvcnR5IGFuZCBlaWdodC4KVGhlIGNoaWxkcmVuIG9mIEJlYmFpLCBzaXggaHVuZHJlZCB0d2VudHkgYW5kIGVpZ2h0LgpUaGUgY2hpbGRyZW4gb2YgQXpnYWQsIHR3byB0aG91c2FuZCB0aHJlZSBodW5kcmVkIHR3ZW50eSBhbmQgdHdvLgpUaGUgY2hpbGRyZW4gb2YgQWRvbmlrYW0sIHNpeCBodW5kcmVkIHRocmVlc2NvcmUgYW5kIHNldmVuLgpUaGUgY2hpbGRyZW4gb2YgQmlndmFpLCB0d28gdGhvdXNhbmQgdGhyZWVzY29yZSBhbmQgc2V2ZW4uClRoZSBjaGlsZHJlbiBvZiBBZGluLCBzaXggaHVuZHJlZCBmaWZ0eSBhbmQgZml2ZS4KVGhlIGNoaWxkcmVuIG9mIEF0ZXIgb2YgSGV6ZWtpYWgsIG5pbmV0eSBhbmQgZWlnaHQuClRoZSBjaGlsZHJlbiBvZiBIYXNodW0sIHRocmVlIGh1bmRyZWQgdHdlbnR5IGFuZCBlaWdodC4KVGhlIGNoaWxkcmVuIG9mIEJlemFpLCB0aHJlZSBodW5kcmVkIHR3ZW50eSBhbmQgZm91ci4KVGhlIGNoaWxkcmVuIG9mIEhhcmlwaCwgYW4gaHVuZHJlZCBhbmQgdHdlbHZlLgpUaGUgY2hpbGRyZW4gb2YgR2liZW9uLCBuaW5ldHkgYW5kIGZpdmUuClRoZSBtZW4gb2YgQmV0aGxlaGVtIGFuZCBOZXRvcGhhaCwgYW4gaHVuZHJlZCBmb3Vyc2NvcmUgYW5kIGVpZ2h0LgpUaGUgbWVuIG9mIEFuYXRob3RoLCBhbiBodW5kcmVkIHR3ZW50eSBhbmQgZWlnaHQuClRoZSBtZW4gb2YgQmV0aGF6bWF2ZXRoLCBmb3J0eSBhbmQgdHdvLgpUaGUgbWVuIG9mIEtpcmphdGhqZWFyaW0sIENoZXBoaXJhaCwgYW5kIEJlZXJvdGgsIHNldmVuIGh1bmRyZWQgZm9ydHkgYW5kIHRocmVlLgpUaGUgbWVuIG9mIFJhbWFoIGFuZCBHYWJhLCBzaXggaHVuZHJlZCB0d2VudHkgYW5kIG9uZS4KVGhlIG1lbiBvZiBNaWNobWFzLCBhbiBodW5kcmVkIGFuZCB0d2VudHkgYW5kIHR3by4KVGhlIG1lbiBvZiBCZXRoZWwgYW5kIEFpLCBhbiBodW5kcmVkIHR3ZW50eSBhbmQgdGhyZWUuClRoZSBtZW4gb2YgdGhlIG90aGVyIE5lYm8sIGZpZnR5IGFuZCB0d28uClRoZSBjaGlsZHJlbiBvZiB0aGUgb3RoZXIgRWxhbSwgYSB0aG91c2FuZCB0d28gaHVuZHJlZCBmaWZ0eSBhbmQgZm91ci4KVGhlIGNoaWxkcmVuIG9mIEhhcmltLCB0aHJlZSBodW5kcmVkIGFuZCB0d2VudHkuClRoZSBjaGlsZHJlbiBvZiBKZXJpY2hvLCB0aHJlZSBodW5kcmVkIGZvcnR5IGFuZCBmaXZlLgpUaGUgY2hpbGRyZW4gb2YgTG9kLCBIYWRpZCwgYW5kIE9ubywgc2V2ZW4gaHVuZHJlZCB0d2VudHkgYW5kIG9uZS4KVGhlIGNoaWxkcmVuIG9mIFNlbmFhaCwgdGhyZWUgdGhvdXNhbmQgbmluZSBodW5kcmVkIGFuZCB0aGlydHkuClRoZSBwcmllc3RzOiB0aGUgY2hpbGRyZW4gb2YgSmVkYWlhaCwgb2YgdGhlIGhvdXNlIG9mIEplc2h1YSwgbmluZSBodW5kcmVkIHNldmVudHkgYW5kIHRocmVlLgpUaGUgY2hpbGRyZW4gb2YgSW1tZXIsIGEgdGhvdXNhbmQgZmlmdHkgYW5kIHR3by4KVGhlIGNoaWxkcmVuIG9mIFBhc2h1ciwgYSB0aG91c2FuZCB0d28gaHVuZHJlZCBmb3J0eSBhbmQgc2V2ZW4uClRoZSBjaGlsZHJlbiBvZiBIYXJpbSwgYSB0aG91c2FuZCBhbmQgc2V2ZW50ZWVuLgpUaGUgTGV2aXRlczogdGhlIGNoaWxkcmVuIG9mIEplc2h1YSwgb2YgS2FkbWllbCwgYW5kIG9mIHRoZSBjaGlsZHJlbiBvZiBIb2RldmFoLCBzZXZlbnR5IGFuZCBmb3VyLgpUaGUgc2luZ2VyczogdGhlIGNoaWxkcmVuIG9mIEFzYXBoLCBhbiBodW5kcmVkIGZvcnR5IGFuZCBlaWdodC4KVGhlIHBvcnRlcnM6IHRoZSBjaGlsZHJlbiBvZiBTaGFsbHVtLCB0aGUgY2hpbGRyZW4gb2YgQXRlciwgdGhlIGNoaWxkcmVuIG9mIFRhbG1vbiwgdGhlIGNoaWxkcmVuIG9mIEFra3ViLCB0aGUgY2hpbGRyZW4gb2YgSGF0aXRhLCB0aGUgY2hpbGRyZW4gb2YgU2hvYmFpLCBhbiBodW5kcmVkIHRoaXJ0eSBhbmQgZWlnaHQuClRoZSBOZXRoaW5pbXM6IHRoZSBjaGlsZHJlbiBvZiBaaWhhLCB0aGUgY2hpbGRyZW4gb2YgSGFzaHVwaGEsIHRoZSBjaGlsZHJlbiBvZiBUYWJiYW90aCwKVGhlIGNoaWxkcmVuIG9mIEtlcm9zLCB0aGUgY2hpbGRyZW4gb2YgU2lhLCB0aGUgY2hpbGRyZW4gb2YgUGFkb24sClRoZSBjaGlsZHJlbiBvZiBMZWJhbmEsIHRoZSBjaGlsZHJlbiBvZiBIYWdhYmEsIHRoZSBjaGlsZHJlbiBvZiBTaGFsbWFpLApUaGUgY2hpbGRyZW4gb2YgSGFuYW4sIHRoZSBjaGlsZHJlbiBvZiBHaWRkZWwsIHRoZSBjaGlsZHJlbiBvZiBHYWhhciwKVGhlIGNoaWxkcmVuIG9mIFJlYWlhaCwgdGhlIGNoaWxkcmVuIG9mIFJlemluLCB0aGUgY2hpbGRyZW4gb2YgTmVrb2RhLApUaGUgY2hpbGRyZW4gb2YgR2F6emFtLCB0aGUgY2hpbGRyZW4gb2YgVXp6YSwgdGhlIGNoaWxkcmVuIG9mIFBoYXNlYWgsClRoZSBjaGlsZHJlbiBvZiBCZXNhaSwgdGhlIGNoaWxkcmVuIG9mIE1ldW5pbSwgdGhlIGNoaWxkcmVuIG9mIE5lcGhpc2hlc2ltLApUaGUgY2hpbGRyZW4gb2YgQmFrYnVrLCB0aGUgY2hpbGRyZW4gb2YgSGFrdXBoYSwgdGhlIGNoaWxkcmVuIG9mIEhhcmh1ciwKVGhlIGNoaWxkcmVuIG9mIEJhemxpdGgsIHRoZSBjaGlsZHJlbiBvZiBNZWhpZGEsIHRoZSBjaGlsZHJlbiBvZiBIYXJzaGEsClRoZSBjaGlsZHJlbiBvZiBCYXJrb3MsIHRoZSBjaGlsZHJlbiBvZiBTaXNlcmEsIHRoZSBjaGlsZHJlbiBvZiBUYW1haCwKVGhlIGNoaWxkcmVuIG9mIE5lemlhaCwgdGhlIGNoaWxkcmVuIG9mIEhhdGlwaGEuClRoZSBjaGlsZHJlbiBvZiBTb2xvbW9uJ3Mgc2VydmFudHM6IHRoZSBjaGlsZHJlbiBvZiBTb3RhaSwgdGhlIGNoaWxkcmVuIG9mIFNvcGhlcmV0aCwgdGhlIGNoaWxkcmVuIG9mIFBlcmlkYSwKVGhlIGNoaWxkcmVuIG9mIEphYWxhLCB0aGUgY2hpbGRyZW4gb2YgRGFya29uLCB0aGUgY2hpbGRyZW4gb2YgR2lkZGVsLApUaGUgY2hpbGRyZW4gb2YgU2hlcGhhdGlhaCwgdGhlIGNoaWxkcmVuIG9mIEhhdHRpbCwgdGhlIGNoaWxkcmVuIG9mIFBvY2hlcmV0aCBvZiBaZWJhaW0sIHRoZSBjaGlsZHJlbiBvZiBBbW9uLgpBbGwgdGhlIE5ldGhpbmltcywgYW5kIHRoZSBjaGlsZHJlbiBvZiBTb2xvbW9uJ3Mgc2VydmFudHMsIHdlcmUgdGhyZWUgaHVuZHJlZCBuaW5ldHkgYW5kIHR3by4KQW5kIHRoZXNlIHdlcmUgdGhleSB3aGljaCB3ZW50IHVwIGFsc28gZnJvbSBUZWxtZWxhaCwgVGVsaGFyZXNoYSwgQ2hlcnViLCBBZGRvbiwgYW5kIEltbWVyOiBidXQgdGhleSBjb3VsZCBub3Qgc2hldyB0aGVpciBmYXRoZXIncyBob3VzZSwgbm9yIHRoZWlyIHNlZWQsIHdoZXRoZXIgdGhleSB3ZXJlIG9mIElzcmFlbC4KVGhlIGNoaWxkcmVuIG9mIERlbGFpYWgsIHRoZSBjaGlsZHJlbiBvZiBUb2JpYWgsIHRoZSBjaGlsZHJlbiBvZiBOZWtvZGEsIHNpeCBodW5kcmVkIGZvcnR5IGFuZCB0d28uCkFuZCBvZiB0aGUgcHJpZXN0czogdGhlIGNoaWxkcmVuIG9mIEhhYmFpYWgsIHRoZSBjaGlsZHJlbiBvZiBLb3osIHRoZSBjaGlsZHJlbiBvZiBCYXJ6aWxsYWksIHdoaWNoIHRvb2sgb25lIG9mIHRoZSBkYXVnaHRlcnMgb2YgQmFyemlsbGFpIHRoZSBHaWxlYWRpdGUgdG8gd2lmZSwgYW5kIHdhcyBjYWxsZWQgYWZ0ZXIgdGhlaXIgbmFtZS4KVGhlc2Ugc291Z2h0IHRoZWlyIHJlZ2lzdGVyIGFtb25nIHRob3NlIHRoYXQgd2VyZSByZWNrb25lZCBieSBnZW5lYWxvZ3ksIGJ1dCBpdCB3YXMgbm90IGZvdW5kOiB0aGVyZWZvcmUgd2VyZSB0aGV5LCBhcyBwb2xsdXRlZCwgcHV0IGZyb20gdGhlIHByaWVzdGhvb2QuCkFuZCB0aGUgVGlyc2hhdGhhIHNhaWQgdW50byB0aGVtLCB0aGF0IHRoZXkgc2hvdWxkIG5vdCBlYXQgb2YgdGhlIG1vc3QgaG9seSB0aGluZ3MsIHRpbGwgdGhlcmUgc3Rvb2QgdXAgYSBwcmllc3Qgd2l0aCBVcmltIGFuZCBUaHVtbWltLgpUaGUgd2hvbGUgY29uZ3JlZ2F0aW9uIHRvZ2V0aGVyIHdhcyBmb3J0eSBhbmQgdHdvIHRob3VzYW5kIHRocmVlIGh1bmRyZWQgYW5kIHRocmVlc2NvcmUsCkJlc2lkZSB0aGVpciBtYW5zZXJ2YW50cyBhbmQgdGhlaXIgbWFpZHNlcnZhbnRzLCBvZiB3aG9tIHRoZXJlIHdlcmUgc2V2ZW4gdGhvdXNhbmQgdGhyZWUgaHVuZHJlZCB0aGlydHkgYW5kIHNldmVuOiBhbmQgdGhleSBoYWQgdHdvIGh1bmRyZWQgZm9ydHkgYW5kIGZpdmUgc2luZ2luZyBtZW4gYW5kIHNpbmdpbmcgd29tZW4uClRoZWlyIGhvcnNlcywgc2V2ZW4gaHVuZHJlZCB0aGlydHkgYW5kIHNpeDogdGhlaXIgbXVsZXMsIHR3byBodW5kcmVkIGZvcnR5IGFuZCBmaXZlOgpUaGVpciBjYW1lbHMsIGZvdXIgaHVuZHJlZCB0aGlydHkgYW5kIGZpdmU6IHNpeCB0aG91c2FuZCBzZXZlbiBodW5kcmVkIGFuZCB0d2VudHkgYXNzZXMuCkFuZCBzb21lIG9mIHRoZSBjaGllZiBvZiB0aGUgZmF0aGVycyBnYXZlIHVudG8gdGhlIHdvcmsuIFRoZSBUaXJzaGF0aGEgZ2F2ZSB0byB0aGUgdHJlYXN1cmUgYSB0aG91c2FuZCBkcmFtcyBvZiBnb2xkLCBmaWZ0eSBiYXNvbnMsIGZpdmUgaHVuZHJlZCBhbmQgdGhpcnR5IHByaWVzdHMnIGdhcm1lbnRzLgpBbmQgc29tZSBvZiB0aGUgY2hpZWYgb2YgdGhlIGZhdGhlcnMgZ2F2ZSB0byB0aGUgdHJlYXN1cmUgb2YgdGhlIHdvcmsgdHdlbnR5IHRob3VzYW5kIGRyYW1zIG9mIGdvbGQsIGFuZCB0d28gdGhvdXNhbmQgYW5kIHR3byBodW5kcmVkIHBvdW5kIG9mIHNpbHZlci4KQW5kIHRoYXQgd2hpY2ggdGhlIHJlc3Qgb2YgdGhlIHBlb3BsZSBnYXZlIHdhcyB0d2VudHkgdGhvdXNhbmQgZHJhbXMgb2YgZ29sZCwgYW5kIHR3byB0aG91c2FuZCBwb3VuZCBvZiBzaWx2ZXIsIGFuZCB0aHJlZXNjb3JlIGFuZCBzZXZlbiBwcmllc3RzJyBnYXJtZW50cy4KU28gdGhlIHByaWVzdHMsIGFuZCB0aGUgTGV2aXRlcywgYW5kIHRoZSBwb3J0ZXJzLCBhbmQgdGhlIHNpbmdlcnMsIGFuZCBzb21lIG9mIHRoZSBwZW9wbGUsIGFuZCB0aGUgTmV0aGluaW1zLCBhbmQgYWxsIElzcmFlbCwgZHdlbHQgaW4gdGhlaXIgY2l0aWVzOyBhbmQgd2hlbiB0aGUgc2V2ZW50aCBtb250aCBjYW1lLCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIHdlcmUgaW4gdGhlaXIgY2l0aWVzLgpBbmQgYWxsIHRoZSBwZW9wbGUgZ2F0aGVyZWQgdGhlbXNlbHZlcyB0b2dldGhlciBhcyBvbmUgbWFuIGludG8gdGhlIHN0cmVldCB0aGF0IHdhcyBiZWZvcmUgdGhlIHdhdGVyIGdhdGU7IGFuZCB0aGV5IHNwYWtlIHVudG8gRXpyYSB0aGUgc2NyaWJlIHRvIGJyaW5nIHRoZSBib29rIG9mIHRoZSBsYXcgb2YgTW9zZXMsIHdoaWNoIHRoZSBMT1JEIGhhZCBjb21tYW5kZWQgdG8gSXNyYWVsLgpBbmQgRXpyYSB0aGUgcHJpZXN0IGJyb3VnaHQgdGhlIGxhdyBiZWZvcmUgdGhlIGNvbmdyZWdhdGlvbiBib3RoIG9mIG1lbiBhbmQgd29tZW4sIGFuZCBhbGwgdGhhdCBjb3VsZCBoZWFyIHdpdGggdW5kZXJzdGFuZGluZywgdXBvbiB0aGUgZmlyc3QgZGF5IG9mIHRoZSBzZXZlbnRoIG1vbnRoLgpBbmQgaGUgcmVhZCB0aGVyZWluIGJlZm9yZSB0aGUgc3RyZWV0IHRoYXQgd2FzIGJlZm9yZSB0aGUgd2F0ZXIgZ2F0ZSBmcm9tIHRoZSBtb3JuaW5nIHVudGlsIG1pZGRheSwgYmVmb3JlIHRoZSBtZW4gYW5kIHRoZSB3b21lbiwgYW5kIHRob3NlIHRoYXQgY291bGQgdW5kZXJzdGFuZDsgYW5kIHRoZSBlYXJzIG9mIGFsbCB0aGUgcGVvcGxlIHdlcmUgYXR0ZW50aXZlIHVudG8gdGhlIGJvb2sgb2YgdGhlIGxhdy4KQW5kIEV6cmEgdGhlIHNjcmliZSBzdG9vZCB1cG9uIGEgcHVscGl0IG9mIHdvb2QsIHdoaWNoIHRoZXkgaGFkIG1hZGUgZm9yIHRoZSBwdXJwb3NlOyBhbmQgYmVzaWRlIGhpbSBzdG9vZCBNYXR0aXRoaWFoLCBhbmQgU2hlbWEsIGFuZCBBbmFpYWgsIGFuZCBVcmlqYWgsIGFuZCBIaWxraWFoLCBhbmQgTWFhc2VpYWgsIG9uIGhpcyByaWdodCBoYW5kOyBhbmQgb24gaGlzIGxlZnQgaGFuZCwgUGVkYWlhaCwgYW5kIE1pc2hhZWwsIGFuZCBNYWxjaGlhaCwgYW5kIEhhc2h1bSwgYW5kIEhhc2hiYWRhbmEsIFplY2hhcmlhaCwgYW5kIE1lc2h1bGxhbS4KQW5kIEV6cmEgb3BlbmVkIHRoZSBib29rIGluIHRoZSBzaWdodCBvZiBhbGwgdGhlIHBlb3BsZTsgKGZvciBoZSB3YXMgYWJvdmUgYWxsIHRoZSBwZW9wbGU7KSBhbmQgd2hlbiBoZSBvcGVuZWQgaXQsIGFsbCB0aGUgcGVvcGxlIHN0b29kIHVwOgpBbmQgRXpyYSBibGVzc2VkIHRoZSBMT1JELCB0aGUgZ3JlYXQgR29kLiBBbmQgYWxsIHRoZSBwZW9wbGUgYW5zd2VyZWQsIEFtZW4sIEFtZW4sIHdpdGggbGlmdGluZyB1cCB0aGVpciBoYW5kczogYW5kIHRoZXkgYm93ZWQgdGhlaXIgaGVhZHMsIGFuZCB3b3JzaGlwcGVkIHRoZSBMT1JEIHdpdGggdGhlaXIgZmFjZXMgdG8gdGhlIGdyb3VuZC4KQWxzbyBKZXNodWEsIGFuZCBCYW5pLCBhbmQgU2hlcmViaWFoLCBKYW1pbiwgQWtrdWIsIFNoYWJiZXRoYWksIEhvZGlqYWgsIE1hYXNlaWFoLCBLZWxpdGEsIEF6YXJpYWgsIEpvemFiYWQsIEhhbmFuLCBQZWxhaWFoLCBhbmQgdGhlIExldml0ZXMsIGNhdXNlZCB0aGUgcGVvcGxlIHRvIHVuZGVyc3RhbmQgdGhlIGxhdzogYW5kIHRoZSBwZW9wbGUgc3Rvb2QgaW4gdGhlaXIgcGxhY2UuClNvIHRoZXkgcmVhZCBpbiB0aGUgYm9vayBpbiB0aGUgbGF3IG9mIEdvZCBkaXN0aW5jdGx5LCBhbmQgZ2F2ZSB0aGUgc2Vuc2UsIGFuZCBjYXVzZWQgdGhlbSB0byB1bmRlcnN0YW5kIHRoZSByZWFkaW5nLgpBbmQgTmVoZW1pYWgsIHdoaWNoIGlzIHRoZSBUaXJzaGF0aGEsIGFuZCBFenJhIHRoZSBwcmllc3QgdGhlIHNjcmliZSwgYW5kIHRoZSBMZXZpdGVzIHRoYXQgdGF1Z2h0IHRoZSBwZW9wbGUsIHNhaWQgdW50byBhbGwgdGhlIHBlb3BsZSwgVGhpcyBkYXkgaXMgaG9seSB1bnRvIHRoZSBMT1JEIHlvdXIgR29kOyBtb3VybiBub3QsIG5vciB3ZWVwLiBGb3IgYWxsIHRoZSBwZW9wbGUgd2VwdCwgd2hlbiB0aGV5IGhlYXJkIHRoZSB3b3JkcyBvZiB0aGUgbGF3LgpUaGVuIGhlIHNhaWQgdW50byB0aGVtLCBHbyB5b3VyIHdheSwgZWF0IHRoZSBmYXQsIGFuZCBkcmluayB0aGUgc3dlZXQsIGFuZCBzZW5kIHBvcnRpb25zIHVudG8gdGhlbSBmb3Igd2hvbSBub3RoaW5nIGlzIHByZXBhcmVkOiBmb3IgdGhpcyBkYXkgaXMgaG9seSB1bnRvIG91ciBMT1JEOiBuZWl0aGVyIGJlIHllIHNvcnJ5OyBmb3IgdGhlIGpveSBvZiB0aGUgTE9SRCBpcyB5b3VyIHN0cmVuZ3RoLgpTbyB0aGUgTGV2aXRlcyBzdGlsbGVkIGFsbCB0aGUgcGVvcGxlLCBzYXlpbmcsIEhvbGQgeW91ciBwZWFjZSwgZm9yIHRoZSBkYXkgaXMgaG9seTsgbmVpdGhlciBiZSB5ZSBncmlldmVkLgpBbmQgYWxsIHRoZSBwZW9wbGUgd2VudCB0aGVpciB3YXkgdG8gZWF0LCBhbmQgdG8gZHJpbmssIGFuZCB0byBzZW5kIHBvcnRpb25zLCBhbmQgdG8gbWFrZSBncmVhdCBtaXJ0aCwgYmVjYXVzZSB0aGV5IGhhZCB1bmRlcnN0b29kIHRoZSB3b3JkcyB0aGF0IHdlcmUgZGVjbGFyZWQgdW50byB0aGVtLgpBbmQgb24gdGhlIHNlY29uZCBkYXkgd2VyZSBnYXRoZXJlZCB0b2dldGhlciB0aGUgY2hpZWYgb2YgdGhlIGZhdGhlcnMgb2YgYWxsIHRoZSBwZW9wbGUsIHRoZSBwcmllc3RzLCBhbmQgdGhlIExldml0ZXMsIHVudG8gRXpyYSB0aGUgc2NyaWJlLCBldmVuIHRvIHVuZGVyc3RhbmQgdGhlIHdvcmRzIG9mIHRoZSBsYXcuCkFuZCB0aGV5IGZvdW5kIHdyaXR0ZW4gaW4gdGhlIGxhdyB3aGljaCB0aGUgTE9SRCBoYWQgY29tbWFuZGVkIGJ5IE1vc2VzLCB0aGF0IHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgc2hvdWxkIGR3ZWxsIGluIGJvb3RocyBpbiB0aGUgZmVhc3Qgb2YgdGhlIHNldmVudGggbW9udGg6CkFuZCB0aGF0IHRoZXkgc2hvdWxkIHB1Ymxpc2ggYW5kIHByb2NsYWltIGluIGFsbCB0aGVpciBjaXRpZXMsIGFuZCBpbiBKZXJ1c2FsZW0sIHNheWluZywgR28gZm9ydGggdW50byB0aGUgbW91bnQsIGFuZCBmZXRjaCBvbGl2ZSBicmFuY2hlcywgYW5kIHBpbmUgYnJhbmNoZXMsIGFuZCBteXJ0bGUgYnJhbmNoZXMsIGFuZCBwYWxtIGJyYW5jaGVzLCBhbmQgYnJhbmNoZXMgb2YgdGhpY2sgdHJlZXMsIHRvIG1ha2UgYm9vdGhzLCBhcyBpdCBpcyB3cml0dGVuLgpTbyB0aGUgcGVvcGxlIHdlbnQgZm9ydGgsIGFuZCBicm91Z2h0IHRoZW0sIGFuZCBtYWRlIHRoZW1zZWx2ZXMgYm9vdGhzLCBldmVyeSBvbmUgdXBvbiB0aGUgcm9vZiBvZiBoaXMgaG91c2UsIGFuZCBpbiB0aGVpciBjb3VydHMsIGFuZCBpbiB0aGUgY291cnRzIG9mIHRoZSBob3VzZSBvZiBHb2QsIGFuZCBpbiB0aGUgc3RyZWV0IG9mIHRoZSB3YXRlciBnYXRlLCBhbmQgaW4gdGhlIHN0cmVldCBvZiB0aGUgZ2F0ZSBvZiBFcGhyYWltLgpBbmQgYWxsIHRoZSBjb25ncmVnYXRpb24gb2YgdGhlbSB0aGF0IHdlcmUgY29tZSBhZ2FpbiBvdXQgb2YgdGhlIGNhcHRpdml0eSBtYWRlIGJvb3RocywgYW5kIHNhdCB1bmRlciB0aGUgYm9vdGhzOiBmb3Igc2luY2UgdGhlIGRheXMgb2YgSmVzaHVhIHRoZSBzb24gb2YgTnVuIHVudG8gdGhhdCBkYXkgaGFkIG5vdCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGRvbmUgc28uIEFuZCB0aGVyZSB3YXMgdmVyeSBncmVhdCBnbGFkbmVzcy4KQWxzbyBkYXkgYnkgZGF5LCBmcm9tIHRoZSBmaXJzdCBkYXkgdW50byB0aGUgbGFzdCBkYXksIGhlIHJlYWQgaW4gdGhlIGJvb2sgb2YgdGhlIGxhdyBvZiBHb2QuIEFuZCB0aGV5IGtlcHQgdGhlIGZlYXN0IHNldmVuIGRheXM7IGFuZCBvbiB0aGUgZWlnaHRoIGRheSB3YXMgYSBzb2xlbW4gYXNzZW1ibHksIGFjY29yZGluZyB1bnRvIHRoZSBtYW5uZXIuCk5vdyBpbiB0aGUgdHdlbnR5IGFuZCBmb3VydGggZGF5IG9mIHRoaXMgbW9udGggdGhlIGNoaWxkcmVuIG9mIElzcmFlbCB3ZXJlIGFzc2VtYmxlZCB3aXRoIGZhc3RpbmcsIGFuZCB3aXRoIHNhY2tjbG90aGVzLCBhbmQgZWFydGggdXBvbiB0aGVtLgpBbmQgdGhlIHNlZWQgb2YgSXNyYWVsIHNlcGFyYXRlZCB0aGVtc2VsdmVzIGZyb20gYWxsIHN0cmFuZ2VycywgYW5kIHN0b29kIGFuZCBjb25mZXNzZWQgdGhlaXIgc2lucywgYW5kIHRoZSBpbmlxdWl0aWVzIG9mIHRoZWlyIGZhdGhlcnMuCkFuZCB0aGV5IHN0b29kIHVwIGluIHRoZWlyIHBsYWNlLCBhbmQgcmVhZCBpbiB0aGUgYm9vayBvZiB0aGUgbGF3IG9mIHRoZSBMT1JEIHRoZWlyIEdvZCBvbmUgZm91cnRoIHBhcnQgb2YgdGhlIGRheTsgYW5kIGFub3RoZXIgZm91cnRoIHBhcnQgdGhleSBjb25mZXNzZWQsIGFuZCB3b3JzaGlwcGVkIHRoZSBMT1JEIHRoZWlyIEdvZC4KVGhlbiBzdG9vZCB1cCB1cG9uIHRoZSBzdGFpcnMsIG9mIHRoZSBMZXZpdGVzLCBKZXNodWEsIGFuZCBCYW5pLCBLYWRtaWVsLCBTaGViYW5pYWgsIEJ1bm5pLCBTaGVyZWJpYWgsIEJhbmksIGFuZCBDaGVuYW5pLCBhbmQgY3JpZWQgd2l0aCBhIGxvdWQgdm9pY2UgdW50byB0aGUgTE9SRCB0aGVpciBHb2QuClRoZW4gdGhlIExldml0ZXMsIEplc2h1YSwgYW5kIEthZG1pZWwsIEJhbmksIEhhc2hhYm5pYWgsIFNoZXJlYmlhaCwgSG9kaWphaCwgU2hlYmFuaWFoLCBhbmQgUGV0aGFoaWFoLCBzYWlkLCBTdGFuZCB1cCBhbmQgYmxlc3MgdGhlIExPUkQgeW91ciBHb2QgZm9yIGV2ZXIgYW5kIGV2ZXI6IGFuZCBibGVzc2VkIGJlIHRoeSBnbG9yaW91cyBuYW1lLCB3aGljaCBpcyBleGFsdGVkIGFib3ZlIGFsbCBibGVzc2luZyBhbmQgcHJhaXNlLgpUaG91LCBldmVuIHRob3UsIGFydCBMT1JEIGFsb25lOyB0aG91IGhhc3QgbWFkZSBoZWF2ZW4sIHRoZSBoZWF2ZW4gb2YgaGVhdmVucywgd2l0aCBhbGwgdGhlaXIgaG9zdCwgdGhlIGVhcnRoLCBhbmQgYWxsIHRoaW5ncyB0aGF0IGFyZSB0aGVyZWluLCB0aGUgc2VhcywgYW5kIGFsbCB0aGF0IGlzIHRoZXJlaW4sIGFuZCB0aG91IHByZXNlcnZlc3QgdGhlbSBhbGw7IGFuZCB0aGUgaG9zdCBvZiBoZWF2ZW4gd29yc2hpcHBldGggdGhlZS4KVGhvdSBhcnQgdGhlIExPUkQgdGhlIEdvZCwgd2hvIGRpZHN0IGNob29zZSBBYnJhbSwgYW5kIGJyb3VnaHRlc3QgaGltIGZvcnRoIG91dCBvZiBVciBvZiB0aGUgQ2hhbGRlZXMsIGFuZCBnYXZlc3QgaGltIHRoZSBuYW1lIG9mIEFicmFoYW07CkFuZCBmb3VuZGVzdCBoaXMgaGVhcnQgZmFpdGhmdWwgYmVmb3JlIHRoZWUsIGFuZCBtYWRlc3QgYSBjb3ZlbmFudCB3aXRoIGhpbSB0byBnaXZlIHRoZSBsYW5kIG9mIHRoZSBDYW5hYW5pdGVzLCB0aGUgSGl0dGl0ZXMsIHRoZSBBbW9yaXRlcywgYW5kIHRoZSBQZXJpenppdGVzLCBhbmQgdGhlIEplYnVzaXRlcywgYW5kIHRoZSBHaXJnYXNoaXRlcywgdG8gZ2l2ZSBpdCwgSSBzYXksIHRvIGhpcyBzZWVkLCBhbmQgaGFzdCBwZXJmb3JtZWQgdGh5IHdvcmRzOyBmb3IgdGhvdSBhcnQgcmlnaHRlb3VzOgpBbmQgZGlkc3Qgc2VlIHRoZSBhZmZsaWN0aW9uIG9mIG91ciBmYXRoZXJzIGluIEVneXB0LCBhbmQgaGVhcmRlc3QgdGhlaXIgY3J5IGJ5IHRoZSBSZWQgc2VhOwpBbmQgc2hld2Vkc3Qgc2lnbnMgYW5kIHdvbmRlcnMgdXBvbiBQaGFyYW9oLCBhbmQgb24gYWxsIGhpcyBzZXJ2YW50cywgYW5kIG9uIGFsbCB0aGUgcGVvcGxlIG9mIGhpcyBsYW5kOiBmb3IgdGhvdSBrbmV3ZXN0IHRoYXQgdGhleSBkZWFsdCBwcm91ZGx5IGFnYWluc3QgdGhlbS4gU28gZGlkc3QgdGhvdSBnZXQgdGhlZSBhIG5hbWUsIGFzIGl0IGlzIHRoaXMgZGF5LgpBbmQgdGhvdSBkaWRzdCBkaXZpZGUgdGhlIHNlYSBiZWZvcmUgdGhlbSwgc28gdGhhdCB0aGV5IHdlbnQgdGhyb3VnaCB0aGUgbWlkc3Qgb2YgdGhlIHNlYSBvbiB0aGUgZHJ5IGxhbmQ7IGFuZCB0aGVpciBwZXJzZWN1dG9ycyB0aG91IHRocmV3ZXN0IGludG8gdGhlIGRlZXBzLCBhcyBhIHN0b25lIGludG8gdGhlIG1pZ2h0eSB3YXRlcnMuCk1vcmVvdmVyIHRob3UgbGVkZGVzdCB0aGVtIGluIHRoZSBkYXkgYnkgYSBjbG91ZHkgcGlsbGFyOyBhbmQgaW4gdGhlIG5pZ2h0IGJ5IGEgcGlsbGFyIG9mIGZpcmUsIHRvIGdpdmUgdGhlbSBsaWdodCBpbiB0aGUgd2F5IHdoZXJlaW4gdGhleSBzaG91bGQgZ28uClRob3UgY2FtZXN0IGRvd24gYWxzbyB1cG9uIG1vdW50IFNpbmFpLCBhbmQgc3Bha2VzdCB3aXRoIHRoZW0gZnJvbSBoZWF2ZW4sIGFuZCBnYXZlc3QgdGhlbSByaWdodCBqdWRnbWVudHMsIGFuZCB0cnVlIGxhd3MsIGdvb2Qgc3RhdHV0ZXMgYW5kIGNvbW1hbmRtZW50czoKQW5kIG1hZGVzdCBrbm93biB1bnRvIHRoZW0gdGh5IGhvbHkgc2FiYmF0aCwgYW5kIGNvbW1hbmRlZHN0IHRoZW0gcHJlY2VwdHMsIHN0YXR1dGVzLCBhbmQgbGF3cywgYnkgdGhlIGhhbmQgb2YgTW9zZXMgdGh5IHNlcnZhbnQ6CkFuZCBnYXZlc3QgdGhlbSBicmVhZCBmcm9tIGhlYXZlbiBmb3IgdGhlaXIgaHVuZ2VyLCBhbmQgYnJvdWdodGVzdCBmb3J0aCB3YXRlciBmb3IgdGhlbSBvdXQgb2YgdGhlIHJvY2sgZm9yIHRoZWlyIHRoaXJzdCwgYW5kIHByb21pc2Vkc3QgdGhlbSB0aGF0IHRoZXkgc2hvdWxkIGdvIGluIHRvIHBvc3Nlc3MgdGhlIGxhbmQgd2hpY2ggdGhvdSBoYWRzdCBzd29ybiB0byBnaXZlIHRoZW0uCkJ1dCB0aGV5IGFuZCBvdXIgZmF0aGVycyBkZWFsdCBwcm91ZGx5LCBhbmQgaGFyZGVuZWQgdGhlaXIgbmVja3MsIGFuZCBoZWFya2VuZWQgbm90IHRvIHRoeSBjb21tYW5kbWVudHMsCkFuZCByZWZ1c2VkIHRvIG9iZXksIG5laXRoZXIgd2VyZSBtaW5kZnVsIG9mIHRoeSB3b25kZXJzIHRoYXQgdGhvdSBkaWRzdCBhbW9uZyB0aGVtOyBidXQgaGFyZGVuZWQgdGhlaXIgbmVja3MsIGFuZCBpbiB0aGVpciByZWJlbGxpb24gYXBwb2ludGVkIGEgY2FwdGFpbiB0byByZXR1cm4gdG8gdGhlaXIgYm9uZGFnZTogYnV0IHRob3UgYXJ0IGEgR29kIHJlYWR5IHRvIHBhcmRvbiwgZ3JhY2lvdXMgYW5kIG1lcmNpZnVsLCBzbG93IHRvIGFuZ2VyLCBhbmQgb2YgZ3JlYXQga2luZG5lc3MsIGFuZCBmb3Jzb29rZXN0IHRoZW0gbm90LgpZZWEsIHdoZW4gdGhleSBoYWQgbWFkZSB0aGVtIGEgbW9sdGVuIGNhbGYsIGFuZCBzYWlkLCBUaGlzIGlzIHRoeSBHb2QgdGhhdCBicm91Z2h0IHRoZWUgdXAgb3V0IG9mIEVneXB0LCBhbmQgaGFkIHdyb3VnaHQgZ3JlYXQgcHJvdm9jYXRpb25zOwpZZXQgdGhvdSBpbiB0aHkgbWFuaWZvbGQgbWVyY2llcyBmb3Jzb29rZXN0IHRoZW0gbm90IGluIHRoZSB3aWxkZXJuZXNzOiB0aGUgcGlsbGFyIG9mIHRoZSBjbG91ZCBkZXBhcnRlZCBub3QgZnJvbSB0aGVtIGJ5IGRheSwgdG8gbGVhZCB0aGVtIGluIHRoZSB3YXk7IG5laXRoZXIgdGhlIHBpbGxhciBvZiBmaXJlIGJ5IG5pZ2h0LCB0byBzaGV3IHRoZW0gbGlnaHQsIGFuZCB0aGUgd2F5IHdoZXJlaW4gdGhleSBzaG91bGQgZ28uClRob3UgZ2F2ZXN0IGFsc28gdGh5IGdvb2Qgc3Bpcml0IHRvIGluc3RydWN0IHRoZW0sIGFuZCB3aXRoaGVsZGVzdCBub3QgdGh5IG1hbm5hIGZyb20gdGhlaXIgbW91dGgsIGFuZCBnYXZlc3QgdGhlbSB3YXRlciBmb3IgdGhlaXIgdGhpcnN0LgpZZWEsIGZvcnR5IHllYXJzIGRpZHN0IHRob3Ugc3VzdGFpbiB0aGVtIGluIHRoZSB3aWxkZXJuZXNzLCBzbyB0aGF0IHRoZXkgbGFja2VkIG5vdGhpbmc7IHRoZWlyIGNsb3RoZXMgd2F4ZWQgbm90IG9sZCwgYW5kIHRoZWlyIGZlZXQgc3dlbGxlZCBub3QuCk1vcmVvdmVyIHRob3UgZ2F2ZXN0IHRoZW0ga2luZ2RvbXMgYW5kIG5hdGlvbnMsIGFuZCBkaWRzdCBkaXZpZGUgdGhlbSBpbnRvIGNvcm5lcnM6IHNvIHRoZXkgcG9zc2Vzc2VkIHRoZSBsYW5kIG9mIFNpaG9uLCBhbmQgdGhlIGxhbmQgb2YgdGhlIGtpbmcgb2YgSGVzaGJvbiwgYW5kIHRoZSBsYW5kIG9mIE9nIGtpbmcgb2YgQmFzaGFuLgpUaGVpciBjaGlsZHJlbiBhbHNvIG11bHRpcGxpZWRzdCB0aG91IGFzIHRoZSBzdGFycyBvZiBoZWF2ZW4sIGFuZCBicm91Z2h0ZXN0IHRoZW0gaW50byB0aGUgbGFuZCwgY29uY2VybmluZyB3aGljaCB0aG91IGhhZHN0IHByb21pc2VkIHRvIHRoZWlyIGZhdGhlcnMsIHRoYXQgdGhleSBzaG91bGQgZ28gaW4gdG8gcG9zc2VzcyBpdC4KU28gdGhlIGNoaWxkcmVuIHdlbnQgaW4gYW5kIHBvc3Nlc3NlZCB0aGUgbGFuZCwgYW5kIHRob3Ugc3ViZHVlZHN0IGJlZm9yZSB0aGVtIHRoZSBpbmhhYml0YW50cyBvZiB0aGUgbGFuZCwgdGhlIENhbmFhbml0ZXMsIGFuZCBnYXZlc3QgdGhlbSBpbnRvIHRoZWlyIGhhbmRzLCB3aXRoIHRoZWlyIGtpbmdzLCBhbmQgdGhlIHBlb3BsZSBvZiB0aGUgbGFuZCwgdGhhdCB0aGV5IG1pZ2h0IGRvIHdpdGggdGhlbSBhcyB0aGV5IHdvdWxkLgpBbmQgdGhleSB0b29rIHN0cm9uZyBjaXRpZXMsIGFuZCBhIGZhdCBsYW5kLCBhbmQgcG9zc2Vzc2VkIGhvdXNlcyBmdWxsIG9mIGFsbCBnb29kcywgd2VsbHMgZGlnZ2VkLCB2aW5leWFyZHMsIGFuZCBvbGl2ZXlhcmRzLCBhbmQgZnJ1aXQgdHJlZXMgaW4gYWJ1bmRhbmNlOiBzbyB0aGV5IGRpZCBlYXQsIGFuZCB3ZXJlIGZpbGxlZCwgYW5kIGJlY2FtZSBmYXQsIGFuZCBkZWxpZ2h0ZWQgdGhlbXNlbHZlcyBpbiB0aHkgZ3JlYXQgZ29vZG5lc3MuCk5ldmVydGhlbGVzcyB0aGV5IHdlcmUgZGlzb2JlZGllbnQsIGFuZCByZWJlbGxlZCBhZ2FpbnN0IHRoZWUsIGFuZCBjYXN0IHRoeSBsYXcgYmVoaW5kIHRoZWlyIGJhY2tzLCBhbmQgc2xldyB0aHkgcHJvcGhldHMgd2hpY2ggdGVzdGlmaWVkIGFnYWluc3QgdGhlbSB0byB0dXJuIHRoZW0gdG8gdGhlZSwgYW5kIHRoZXkgd3JvdWdodCBncmVhdCBwcm92b2NhdGlvbnMuClRoZXJlZm9yZSB0aG91IGRlbGl2ZXJlZHN0IHRoZW0gaW50byB0aGUgaGFuZCBvZiB0aGVpciBlbmVtaWVzLCB3aG8gdmV4ZWQgdGhlbTogYW5kIGluIHRoZSB0aW1lIG9mIHRoZWlyIHRyb3VibGUsIHdoZW4gdGhleSBjcmllZCB1bnRvIHRoZWUsIHRob3UgaGVhcmRlc3QgdGhlbSBmcm9tIGhlYXZlbjsgYW5kIGFjY29yZGluZyB0byB0aHkgbWFuaWZvbGQgbWVyY2llcyB0aG91IGdhdmVzdCB0aGVtIHNhdmlvdXJzLCB3aG8gc2F2ZWQgdGhlbSBvdXQgb2YgdGhlIGhhbmQgb2YgdGhlaXIgZW5lbWllcy4KQnV0IGFmdGVyIHRoZXkgaGFkIHJlc3QsIHRoZXkgZGlkIGV2aWwgYWdhaW4gYmVmb3JlIHRoZWU6IHRoZXJlZm9yZSBsZWZ0ZXN0IHRob3UgdGhlbSBpbiB0aGUgbGFuZCBvZiB0aGVpciBlbmVtaWVzLCBzbyB0aGF0IHRoZXkgaGFkIHRoZSBkb21pbmlvbiBvdmVyIHRoZW06IHlldCB3aGVuIHRoZXkgcmV0dXJuZWQsIGFuZCBjcmllZCB1bnRvIHRoZWUsIHRob3UgaGVhcmRlc3QgdGhlbSBmcm9tIGhlYXZlbjsgYW5kIG1hbnkgdGltZXMgZGlkc3QgdGhvdSBkZWxpdmVyIHRoZW0gYWNjb3JkaW5nIHRvIHRoeSBtZXJjaWVzOwpBbmQgdGVzdGlmaWVkc3QgYWdhaW5zdCB0aGVtLCB0aGF0IHRob3UgbWlnaHRlc3QgYnJpbmcgdGhlbSBhZ2FpbiB1bnRvIHRoeSBsYXc6IHlldCB0aGV5IGRlYWx0IHByb3VkbHksIGFuZCBoZWFya2VuZWQgbm90IHVudG8gdGh5IGNvbW1hbmRtZW50cywgYnV0IHNpbm5lZCBhZ2FpbnN0IHRoeSBqdWRnbWVudHMsICh3aGljaCBpZiBhIG1hbiBkbywgaGUgc2hhbGwgbGl2ZSBpbiB0aGVtOykgYW5kIHdpdGhkcmV3IHRoZSBzaG91bGRlciwgYW5kIGhhcmRlbmVkIHRoZWlyIG5lY2ssIGFuZCB3b3VsZCBub3QgaGVhci4KWWV0IG1hbnkgeWVhcnMgZGlkc3QgdGhvdSBmb3JiZWFyIHRoZW0sIGFuZCB0ZXN0aWZpZWRzdCBhZ2FpbnN0IHRoZW0gYnkgdGh5IHNwaXJpdCBpbiB0aHkgcHJvcGhldHM6IHlldCB3b3VsZCB0aGV5IG5vdCBnaXZlIGVhcjogdGhlcmVmb3JlIGdhdmVzdCB0aG91IHRoZW0gaW50byB0aGUgaGFuZCBvZiB0aGUgcGVvcGxlIG9mIHRoZSBsYW5kcy4KTmV2ZXJ0aGVsZXNzIGZvciB0aHkgZ3JlYXQgbWVyY2llcycgc2FrZSB0aG91IGRpZHN0IG5vdCB1dHRlcmx5IGNvbnN1bWUgdGhlbSwgbm9yIGZvcnNha2UgdGhlbTsgZm9yIHRob3UgYXJ0IGEgZ3JhY2lvdXMgYW5kIG1lcmNpZnVsIEdvZC4KTm93IHRoZXJlZm9yZSwgb3VyIEdvZCwgdGhlIGdyZWF0LCB0aGUgbWlnaHR5LCBhbmQgdGhlIHRlcnJpYmxlIEdvZCwgd2hvIGtlZXBlc3QgY292ZW5hbnQgYW5kIG1lcmN5LCBsZXQgbm90IGFsbCB0aGUgdHJvdWJsZSBzZWVtIGxpdHRsZSBiZWZvcmUgdGhlZSwgdGhhdCBoYXRoIGNvbWUgdXBvbiB1cywgb24gb3VyIGtpbmdzLCBvbiBvdXIgcHJpbmNlcywgYW5kIG9uIG91ciBwcmllc3RzLCBhbmQgb24gb3VyIHByb3BoZXRzLCBhbmQgb24gb3VyIGZhdGhlcnMsIGFuZCBvbiBhbGwgdGh5IHBlb3BsZSwgc2luY2UgdGhlIHRpbWUgb2YgdGhlIGtpbmdzIG9mIEFzc3lyaWEgdW50byB0aGlzIGRheS4KSG93YmVpdCB0aG91IGFydCBqdXN0IGluIGFsbCB0aGF0IGlzIGJyb3VnaHQgdXBvbiB1czsgZm9yIHRob3UgaGFzdCBkb25lIHJpZ2h0LCBidXQgd2UgaGF2ZSBkb25lIHdpY2tlZGx5OgpOZWl0aGVyIGhhdmUgb3VyIGtpbmdzLCBvdXIgcHJpbmNlcywgb3VyIHByaWVzdHMsIG5vciBvdXIgZmF0aGVycywga2VwdCB0aHkgbGF3LCBub3IgaGVhcmtlbmVkIHVudG8gdGh5IGNvbW1hbmRtZW50cyBhbmQgdGh5IHRlc3RpbW9uaWVzLCB3aGVyZXdpdGggdGhvdSBkaWRzdCB0ZXN0aWZ5IGFnYWluc3QgdGhlbS4KRm9yIHRoZXkgaGF2ZSBub3Qgc2VydmVkIHRoZWUgaW4gdGhlaXIga2luZ2RvbSwgYW5kIGluIHRoeSBncmVhdCBnb29kbmVzcyB0aGF0IHRob3UgZ2F2ZXN0IHRoZW0sIGFuZCBpbiB0aGUgbGFyZ2UgYW5kIGZhdCBsYW5kIHdoaWNoIHRob3UgZ2F2ZXN0IGJlZm9yZSB0aGVtLCBuZWl0aGVyIHR1cm5lZCB0aGV5IGZyb20gdGhlaXIgd2lja2VkIHdvcmtzLgpCZWhvbGQsIHdlIGFyZSBzZXJ2YW50cyB0aGlzIGRheSwgYW5kIGZvciB0aGUgbGFuZCB0aGF0IHRob3UgZ2F2ZXN0IHVudG8gb3VyIGZhdGhlcnMgdG8gZWF0IHRoZSBmcnVpdCB0aGVyZW9mIGFuZCB0aGUgZ29vZCB0aGVyZW9mLCBiZWhvbGQsIHdlIGFyZSBzZXJ2YW50cyBpbiBpdDoKQW5kIGl0IHlpZWxkZXRoIG11Y2ggaW5jcmVhc2UgdW50byB0aGUga2luZ3Mgd2hvbSB0aG91IGhhc3Qgc2V0IG92ZXIgdXMgYmVjYXVzZSBvZiBvdXIgc2luczogYWxzbyB0aGV5IGhhdmUgZG9taW5pb24gb3ZlciBvdXIgYm9kaWVzLCBhbmQgb3ZlciBvdXIgY2F0dGxlLCBhdCB0aGVpciBwbGVhc3VyZSwgYW5kIHdlIGFyZSBpbiBncmVhdCBkaXN0cmVzcy4KQW5kIGJlY2F1c2Ugb2YgYWxsIHRoaXMgd2UgbWFrZSBhIHN1cmUgY292ZW5hbnQsIGFuZCB3cml0ZSBpdDsgYW5kIG91ciBwcmluY2VzLCBMZXZpdGVzLCBhbmQgcHJpZXN0cywgc2VhbCB1bnRvIGl0LgpOb3cgdGhvc2UgdGhhdCBzZWFsZWQgd2VyZSwgTmVoZW1pYWgsIHRoZSBUaXJzaGF0aGEsIHRoZSBzb24gb2YgSGFjaGFsaWFoLCBhbmQgWmlka2lqYWgsClNlcmFpYWgsIEF6YXJpYWgsIEplcmVtaWFoLApQYXNodXIsIEFtYXJpYWgsIE1hbGNoaWphaCwKSGF0dHVzaCwgU2hlYmFuaWFoLCBNYWxsdWNoLApIYXJpbSwgTWVyZW1vdGgsIE9iYWRpYWgsCkRhbmllbCwgR2lubmV0aG9uLCBCYXJ1Y2gsCk1lc2h1bGxhbSwgQWJpamFoLCBNaWphbWluLApNYWF6aWFoLCBCaWxnYWksIFNoZW1haWFoOiB0aGVzZSB3ZXJlIHRoZSBwcmllc3RzLgpBbmQgdGhlIExldml0ZXM6IGJvdGggSmVzaHVhIHRoZSBzb24gb2YgQXphbmlhaCwgQmlubnVpIG9mIHRoZSBzb25zIG9mIEhlbmFkYWQsIEthZG1pZWw7CkFuZCB0aGVpciBicmV0aHJlbiwgU2hlYmFuaWFoLCBIb2RpamFoLCBLZWxpdGEsIFBlbGFpYWgsIEhhbmFuLApNaWNoYSwgUmVob2IsIEhhc2hhYmlhaCwKWmFjY3VyLCBTaGVyZWJpYWgsIFNoZWJhbmlhaCwKSG9kaWphaCwgQmFuaSwgQmVuaW51LgpUaGUgY2hpZWYgb2YgdGhlIHBlb3BsZTsgUGFyb3NoLCBQYWhhdGhtb2FiLCBFbGFtLCBaYXR0aHUsIEJhbmksCkJ1bm5pLCBBemdhZCwgQmViYWksCkFkb25pamFoLCBCaWd2YWksIEFkaW4sCkF0ZXIsIEhpemtpamFoLCBBenp1ciwKSG9kaWphaCwgSGFzaHVtLCBCZXphaSwKSGFyaXBoLCBBbmF0aG90aCwgTmViYWksCk1hZ3BpYXNoLCBNZXNodWxsYW0sIEhlemlyLApNZXNoZXphYmVlbCwgWmFkb2ssIEphZGR1YSwKUGVsYXRpYWgsIEhhbmFuLCBBbmFpYWgsCkhvc2hlYSwgSGFuYW5pYWgsIEhhc2h1YiwKSGFsbG9oZXNoLCBQaWxlaGEsIFNob2JlaywKUmVodW0sIEhhc2hhYm5haCwgTWFhc2VpYWgsCkFuZCBBaGlqYWgsIEhhbmFuLCBBbmFuLApNYWxsdWNoLCBIYXJpbSwgQmFhbmFoLgpBbmQgdGhlIHJlc3Qgb2YgdGhlIHBlb3BsZSwgdGhlIHByaWVzdHMsIHRoZSBMZXZpdGVzLCB0aGUgcG9ydGVycywgdGhlIHNpbmdlcnMsIHRoZSBOZXRoaW5pbXMsIGFuZCBhbGwgdGhleSB0aGF0IGhhZCBzZXBhcmF0ZWQgdGhlbXNlbHZlcyBmcm9tIHRoZSBwZW9wbGUgb2YgdGhlIGxhbmRzIHVudG8gdGhlIGxhdyBvZiBHb2QsIHRoZWlyIHdpdmVzLCB0aGVpciBzb25zLCBhbmQgdGhlaXIgZGF1Z2h0ZXJzLCBldmVyeSBvbmUgaGF2aW5nIGtub3dsZWRnZSwgYW5kIGhhdmluZyB1bmRlcnN0YW5kaW5nOwpUaGV5IGNsYXZlIHRvIHRoZWlyIGJyZXRocmVuLCB0aGVpciBub2JsZXMsIGFuZCBlbnRlcmVkIGludG8gYSBjdXJzZSwgYW5kIGludG8gYW4gb2F0aCwgdG8gd2FsayBpbiBHb2QncyBsYXcsIHdoaWNoIHdhcyBnaXZlbiBieSBNb3NlcyB0aGUgc2VydmFudCBvZiBHb2QsIGFuZCB0byBvYnNlcnZlIGFuZCBkbyBhbGwgdGhlIGNvbW1hbmRtZW50cyBvZiB0aGUgTE9SRCBvdXIgTG9yZCwgYW5kIGhpcyBqdWRnbWVudHMgYW5kIGhpcyBzdGF0dXRlczsKQW5kIHRoYXQgd2Ugd291bGQgbm90IGdpdmUgb3VyIGRhdWdodGVycyB1bnRvIHRoZSBwZW9wbGUgb2YgdGhlIGxhbmQsIG5vdCB0YWtlIHRoZWlyIGRhdWdodGVycyBmb3Igb3VyIHNvbnM6CkFuZCBpZiB0aGUgcGVvcGxlIG9mIHRoZSBsYW5kIGJyaW5nIHdhcmUgb3IgYW55IHZpY3R1YWxzIG9uIHRoZSBzYWJiYXRoIGRheSB0byBzZWxsLCB0aGF0IHdlIHdvdWxkIG5vdCBidXkgaXQgb2YgdGhlbSBvbiB0aGUgc2FiYmF0aCwgb3Igb24gdGhlIGhvbHkgZGF5OiBhbmQgdGhhdCB3ZSB3b3VsZCBsZWF2ZSB0aGUgc2V2ZW50aCB5ZWFyLCBhbmQgdGhlIGV4YWN0aW9uIG9mIGV2ZXJ5IGRlYnQuCkFsc28gd2UgbWFkZSBvcmRpbmFuY2VzIGZvciB1cywgdG8gY2hhcmdlIG91cnNlbHZlcyB5ZWFybHkgd2l0aCB0aGUgdGhpcmQgcGFydCBvZiBhIHNoZWtlbCBmb3IgdGhlIHNlcnZpY2Ugb2YgdGhlIGhvdXNlIG9mIG91ciBHb2Q7CkZvciB0aGUgc2hld2JyZWFkLCBhbmQgZm9yIHRoZSBjb250aW51YWwgbWVhdCBvZmZlcmluZywgYW5kIGZvciB0aGUgY29udGludWFsIGJ1cm50IG9mZmVyaW5nLCBvZiB0aGUgc2FiYmF0aHMsIG9mIHRoZSBuZXcgbW9vbnMsIGZvciB0aGUgc2V0IGZlYXN0cywgYW5kIGZvciB0aGUgaG9seSB0aGluZ3MsIGFuZCBmb3IgdGhlIHNpbiBvZmZlcmluZ3MgdG8gbWFrZSBhbiBhdG9uZW1lbnQgZm9yIElzcmFlbCwgYW5kIGZvciBhbGwgdGhlIHdvcmsgb2YgdGhlIGhvdXNlIG9mIG91ciBHb2QuCkFuZCB3ZSBjYXN0IHRoZSBsb3RzIGFtb25nIHRoZSBwcmllc3RzLCB0aGUgTGV2aXRlcywgYW5kIHRoZSBwZW9wbGUsIGZvciB0aGUgd29vZCBvZmZlcmluZywgdG8gYnJpbmcgaXQgaW50byB0aGUgaG91c2Ugb2Ygb3VyIEdvZCwgYWZ0ZXIgdGhlIGhvdXNlcyBvZiBvdXIgZmF0aGVycywgYXQgdGltZXMgYXBwb2ludGVkIHllYXIgYnkgeWVhciwgdG8gYnVybiB1cG9uIHRoZSBhbHRhciBvZiB0aGUgTE9SRCBvdXIgR29kLCBhcyBpdCBpcyB3cml0dGVuIGluIHRoZSBsYXc6CkFuZCB0byBicmluZyB0aGUgZmlyc3RmcnVpdHMgb2Ygb3VyIGdyb3VuZCwgYW5kIHRoZSBmaXJzdGZydWl0cyBvZiBhbGwgZnJ1aXQgb2YgYWxsIHRyZWVzLCB5ZWFyIGJ5IHllYXIsIHVudG8gdGhlIGhvdXNlIG9mIHRoZSBMT1JEOgpBbHNvIHRoZSBmaXJzdGJvcm4gb2Ygb3VyIHNvbnMsIGFuZCBvZiBvdXIgY2F0dGxlLCBhcyBpdCBpcyB3cml0dGVuIGluIHRoZSBsYXcsIGFuZCB0aGUgZmlyc3RsaW5ncyBvZiBvdXIgaGVyZHMgYW5kIG9mIG91ciBmbG9ja3MsIHRvIGJyaW5nIHRvIHRoZSBob3VzZSBvZiBvdXIgR29kLCB1bnRvIHRoZSBwcmllc3RzIHRoYXQgbWluaXN0ZXIgaW4gdGhlIGhvdXNlIG9mIG91ciBHb2Q6CkFuZCB0aGF0IHdlIHNob3VsZCBicmluZyB0aGUgZmlyc3RmcnVpdHMgb2Ygb3VyIGRvdWdoLCBhbmQgb3VyIG9mZmVyaW5ncywgYW5kIHRoZSBmcnVpdCBvZiBhbGwgbWFubmVyIG9mIHRyZWVzLCBvZiB3aW5lIGFuZCBvZiBvaWwsIHVudG8gdGhlIHByaWVzdHMsIHRvIHRoZSBjaGFtYmVycyBvZiB0aGUgaG91c2Ugb2Ygb3VyIEdvZDsgYW5kIHRoZSB0aXRoZXMgb2Ygb3VyIGdyb3VuZCB1bnRvIHRoZSBMZXZpdGVzLCB0aGF0IHRoZSBzYW1lIExldml0ZXMgbWlnaHQgaGF2ZSB0aGUgdGl0aGVzIGluIGFsbCB0aGUgY2l0aWVzIG9mIG91ciB0aWxsYWdlLgpBbmQgdGhlIHByaWVzdCB0aGUgc29uIG9mIEFhcm9uIHNoYWxsIGJlIHdpdGggdGhlIExldml0ZXMsIHdoZW4gdGhlIExldml0ZXMgdGFrZSB0aXRoZXM6IGFuZCB0aGUgTGV2aXRlcyBzaGFsbCBicmluZyB1cCB0aGUgdGl0aGUgb2YgdGhlIHRpdGhlcyB1bnRvIHRoZSBob3VzZSBvZiBvdXIgR29kLCB0byB0aGUgY2hhbWJlcnMsIGludG8gdGhlIHRyZWFzdXJlIGhvdXNlLgpGb3IgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBhbmQgdGhlIGNoaWxkcmVuIG9mIExldmkgc2hhbGwgYnJpbmcgdGhlIG9mZmVyaW5nIG9mIHRoZSBjb3JuLCBvZiB0aGUgbmV3IHdpbmUsIGFuZCB0aGUgb2lsLCB1bnRvIHRoZSBjaGFtYmVycywgd2hlcmUgYXJlIHRoZSB2ZXNzZWxzIG9mIHRoZSBzYW5jdHVhcnksIGFuZCB0aGUgcHJpZXN0cyB0aGF0IG1pbmlzdGVyLCBhbmQgdGhlIHBvcnRlcnMsIGFuZCB0aGUgc2luZ2VyczogYW5kIHdlIHdpbGwgbm90IGZvcnNha2UgdGhlIGhvdXNlIG9mIG91ciBHb2QuCkFuZCB0aGUgcnVsZXJzIG9mIHRoZSBwZW9wbGUgZHdlbHQgYXQgSmVydXNhbGVtOiB0aGUgcmVzdCBvZiB0aGUgcGVvcGxlIGFsc28gY2FzdCBsb3RzLCB0byBicmluZyBvbmUgb2YgdGVuIHRvIGR3ZWxsIGluIEplcnVzYWxlbSB0aGUgaG9seSBjaXR5LCBhbmQgbmluZSBwYXJ0cyB0byBkd2VsbCBpbiBvdGhlciBjaXRpZXMuCkFuZCB0aGUgcGVvcGxlIGJsZXNzZWQgYWxsIHRoZSBtZW4sIHRoYXQgd2lsbGluZ2x5IG9mZmVyZWQgdGhlbXNlbHZlcyB0byBkd2VsbCBhdCBKZXJ1c2FsZW0uCk5vdyB0aGVzZSBhcmUgdGhlIGNoaWVmIG9mIHRoZSBwcm92aW5jZSB0aGF0IGR3ZWx0IGluIEplcnVzYWxlbTogYnV0IGluIHRoZSBjaXRpZXMgb2YgSnVkYWggZHdlbHQgZXZlcnkgb25lIGluIGhpcyBwb3NzZXNzaW9uIGluIHRoZWlyIGNpdGllcywgdG8gd2l0LCBJc3JhZWwsIHRoZSBwcmllc3RzLCBhbmQgdGhlIExldml0ZXMsIGFuZCB0aGUgTmV0aGluaW1zLCBhbmQgdGhlIGNoaWxkcmVuIG9mIFNvbG9tb24ncyBzZXJ2YW50cy4KQW5kIGF0IEplcnVzYWxlbSBkd2VsdCBjZXJ0YWluIG9mIHRoZSBjaGlsZHJlbiBvZiBKdWRhaCwgYW5kIG9mIHRoZSBjaGlsZHJlbiBvZiBCZW5qYW1pbi4gT2YgdGhlIGNoaWxkcmVuIG9mIEp1ZGFoOyBBdGhhaWFoIHRoZSBzb24gb2YgVXp6aWFoLCB0aGUgc29uIG9mIFplY2hhcmlhaCwgdGhlIHNvbiBvZiBBbWFyaWFoLCB0aGUgc29uIG9mIFNoZXBoYXRpYWgsIHRoZSBzb24gb2YgTWFoYWxhbGVlbCwgb2YgdGhlIGNoaWxkcmVuIG9mIFBlcmV6OwpBbmQgTWFhc2VpYWggdGhlIHNvbiBvZiBCYXJ1Y2gsIHRoZSBzb24gb2YgQ29saG96ZWgsIHRoZSBzb24gb2YgSGF6YWlhaCwgdGhlIHNvbiBvZiBBZGFpYWgsIHRoZSBzb24gb2YgSm9pYXJpYiwgdGhlIHNvbiBvZiBaZWNoYXJpYWgsIHRoZSBzb24gb2YgU2hpbG9uaS4KQWxsIHRoZSBzb25zIG9mIFBlcmV6IHRoYXQgZHdlbHQgYXQgSmVydXNhbGVtIHdlcmUgZm91ciBodW5kcmVkIHRocmVlc2NvcmUgYW5kIGVpZ2h0IHZhbGlhbnQgbWVuLgpBbmQgdGhlc2UgYXJlIHRoZSBzb25zIG9mIEJlbmphbWluOyBTYWxsdSB0aGUgc29uIG9mIE1lc2h1bGxhbSwgdGhlIHNvbiBvZiBKb2VkLCB0aGUgc29uIG9mIFBlZGFpYWgsIHRoZSBzb24gb2YgS29sYWlhaCwgdGhlIHNvbiBvZiBNYWFzZWlhaCwgdGhlIHNvbiBvZiBJdGhpZWwsIHRoZSBzb24gb2YgSmVzYWlhaC4KQW5kIGFmdGVyIGhpbSBHYWJiYWksIFNhbGxhaSwgbmluZSBodW5kcmVkIHR3ZW50eSBhbmQgZWlnaHQuCkFuZCBKb2VsIHRoZSBzb24gb2YgWmljaHJpIHdhcyB0aGVpciBvdmVyc2VlcjogYW5kIEp1ZGFoIHRoZSBzb24gb2YgU2VudWFoIHdhcyBzZWNvbmQgb3ZlciB0aGUgY2l0eS4KT2YgdGhlIHByaWVzdHM6IEplZGFpYWggdGhlIHNvbiBvZiBKb2lhcmliLCBKYWNoaW4uClNlcmFpYWggdGhlIHNvbiBvZiBIaWxraWFoLCB0aGUgc29uIG9mIE1lc2h1bGxhbSwgdGhlIHNvbiBvZiBaYWRvaywgdGhlIHNvbiBvZiBNZXJhaW90aCwgdGhlIHNvbiBvZiBBaGl0dWIsIHdhcyB0aGUgcnVsZXIgb2YgdGhlIGhvdXNlIG9mIEdvZC4KQW5kIHRoZWlyIGJyZXRocmVuIHRoYXQgZGlkIHRoZSB3b3JrIG9mIHRoZSBob3VzZSB3ZXJlIGVpZ2h0IGh1bmRyZWQgdHdlbnR5IGFuZCB0d286IGFuZCBBZGFpYWggdGhlIHNvbiBvZiBKZXJvaGFtLCB0aGUgc29uIG9mIFBlbGFsaWFoLCB0aGUgc29uIG9mIEFtemksIHRoZSBzb24gb2YgWmVjaGFyaWFoLCB0aGUgc29uIG9mIFBhc2h1ciwgdGhlIHNvbiBvZiBNYWxjaGlhaC4KQW5kIGhpcyBicmV0aHJlbiwgY2hpZWYgb2YgdGhlIGZhdGhlcnMsIHR3byBodW5kcmVkIGZvcnR5IGFuZCB0d286IGFuZCBBbWFzaGFpIHRoZSBzb24gb2YgQXphcmVlbCwgdGhlIHNvbiBvZiBBaGFzYWksIHRoZSBzb24gb2YgTWVzaGlsbGVtb3RoLCB0aGUgc29uIG9mIEltbWVyLApBbmQgdGhlaXIgYnJldGhyZW4sIG1pZ2h0eSBtZW4gb2YgdmFsb3VyLCBhbiBodW5kcmVkIHR3ZW50eSBhbmQgZWlnaHQ6IGFuZCB0aGVpciBvdmVyc2VlciB3YXMgWmFiZGllbCwgdGhlIHNvbiBvZiBvbmUgb2YgdGhlIGdyZWF0IG1lbi4KQWxzbyBvZiB0aGUgTGV2aXRlczogU2hlbWFpYWggdGhlIHNvbiBvZiBIYXNodWIsIHRoZSBzb24gb2YgQXpyaWthbSwgdGhlIHNvbiBvZiBIYXNoYWJpYWgsIHRoZSBzb24gb2YgQnVubmk7CkFuZCBTaGFiYmV0aGFpIGFuZCBKb3phYmFkLCBvZiB0aGUgY2hpZWYgb2YgdGhlIExldml0ZXMsIGhhZCB0aGUgb3ZlcnNpZ2h0IG9mIHRoZSBvdXR3YXJkIGJ1c2luZXNzIG9mIHRoZSBob3VzZSBvZiBHb2QuCkFuZCBNYXR0YW5pYWggdGhlIHNvbiBvZiBNaWNoYSwgdGhlIHNvbiBvZiBaYWJkaSwgdGhlIHNvbiBvZiBBc2FwaCwgd2FzIHRoZSBwcmluY2lwYWwgdG8gYmVnaW4gdGhlIHRoYW5rc2dpdmluZyBpbiBwcmF5ZXI6IGFuZCBCYWtidWtpYWggdGhlIHNlY29uZCBhbW9uZyBoaXMgYnJldGhyZW4sIGFuZCBBYmRhIHRoZSBzb24gb2YgU2hhbW11YSwgdGhlIHNvbiBvZiBHYWxhbCwgdGhlIHNvbiBvZiBKZWR1dGh1bi4KQWxsIHRoZSBMZXZpdGVzIGluIHRoZSBob2x5IGNpdHkgd2VyZSB0d28gaHVuZHJlZCBmb3Vyc2NvcmUgYW5kIGZvdXIuCk1vcmVvdmVyIHRoZSBwb3J0ZXJzLCBBa2t1YiwgVGFsbW9uLCBhbmQgdGhlaXIgYnJldGhyZW4gdGhhdCBrZXB0IHRoZSBnYXRlcywgd2VyZSBhbiBodW5kcmVkIHNldmVudHkgYW5kIHR3by4KQW5kIHRoZSByZXNpZHVlIG9mIElzcmFlbCwgb2YgdGhlIHByaWVzdHMsIGFuZCB0aGUgTGV2aXRlcywgd2VyZSBpbiBhbGwgdGhlIGNpdGllcyBvZiBKdWRhaCwgZXZlcnkgb25lIGluIGhpcyBpbmhlcml0YW5jZS4KQnV0IHRoZSBOZXRoaW5pbXMgZHdlbHQgaW4gT3BoZWw6IGFuZCBaaWhhIGFuZCBHaXNwYSB3ZXJlIG92ZXIgdGhlIE5ldGhpbmltcy4KVGhlIG92ZXJzZWVyIGFsc28gb2YgdGhlIExldml0ZXMgYXQgSmVydXNhbGVtIHdhcyBVenppIHRoZSBzb24gb2YgQmFuaSwgdGhlIHNvbiBvZiBIYXNoYWJpYWgsIHRoZSBzb24gb2YgTWF0dGFuaWFoLCB0aGUgc29uIG9mIE1pY2hhLiBPZiB0aGUgc29ucyBvZiBBc2FwaCwgdGhlIHNpbmdlcnMgd2VyZSBvdmVyIHRoZSBidXNpbmVzcyBvZiB0aGUgaG91c2Ugb2YgR29kLgpGb3IgaXQgd2FzIHRoZSBraW5nJ3MgY29tbWFuZG1lbnQgY29uY2VybmluZyB0aGVtLCB0aGF0IGEgY2VydGFpbiBwb3J0aW9uIHNob3VsZCBiZSBmb3IgdGhlIHNpbmdlcnMsIGR1ZSBmb3IgZXZlcnkgZGF5LgpBbmQgUGV0aGFoaWFoIHRoZSBzb24gb2YgTWVzaGV6YWJlZWwsIG9mIHRoZSBjaGlsZHJlbiBvZiBaZXJhaCB0aGUgc29uIG9mIEp1ZGFoLCB3YXMgYXQgdGhlIGtpbmcncyBoYW5kIGluIGFsbCBtYXR0ZXJzIGNvbmNlcm5pbmcgdGhlIHBlb3BsZS4KQW5kIGZvciB0aGUgdmlsbGFnZXMsIHdpdGggdGhlaXIgZmllbGRzLCBzb21lIG9mIHRoZSBjaGlsZHJlbiBvZiBKdWRhaCBkd2VsdCBhdCBLaXJqYXRoYXJiYSwgYW5kIGluIHRoZSB2aWxsYWdlcyB0aGVyZW9mLCBhbmQgYXQgRGlib24sIGFuZCBpbiB0aGUgdmlsbGFnZXMgdGhlcmVvZiwgYW5kIGF0IEpla2FiemVlbCwgYW5kIGluIHRoZSB2aWxsYWdlcyB0aGVyZW9mLApBbmQgYXQgSmVzaHVhLCBhbmQgYXQgTW9sYWRhaCwgYW5kIGF0IEJldGhwaGVsZXQsCkFuZCBhdCBIYXphcnNodWFsLCBhbmQgYXQgQmVlcnNoZWJhLCBhbmQgaW4gdGhlIHZpbGxhZ2VzIHRoZXJlb2YsCkFuZCBhdCBaaWtsYWcsIGFuZCBhdCBNZWtvbmFoLCBhbmQgaW4gdGhlIHZpbGxhZ2VzIHRoZXJlb2YsCkFuZCBhdCBFbnJpbW1vbiwgYW5kIGF0IFphcmVhaCwgYW5kIGF0IEphcm11dGgsClphbm9haCwgQWR1bGxhbSwgYW5kIGluIHRoZWlyIHZpbGxhZ2VzLCBhdCBMYWNoaXNoLCBhbmQgdGhlIGZpZWxkcyB0aGVyZW9mLCBhdCBBemVrYWgsIGFuZCBpbiB0aGUgdmlsbGFnZXMgdGhlcmVvZi4gQW5kIHRoZXkgZHdlbHQgZnJvbSBCZWVyc2hlYmEgdW50byB0aGUgdmFsbGV5IG9mIEhpbm5vbS4KVGhlIGNoaWxkcmVuIGFsc28gb2YgQmVuamFtaW4gZnJvbSBHZWJhIGR3ZWx0IGF0IE1pY2htYXNoLCBhbmQgQWlqYSwgYW5kIEJldGhlbCwgYW5kIGluIHRoZWlyIHZpbGxhZ2VzLgpBbmQgYXQgQW5hdGhvdGgsIE5vYiwgQW5hbmlhaCwKSGF6b3IsIFJhbWFoLCBHaXR0YWltLApIYWRpZCwgWmVib2ltLCBOZWJhbGxhdCwKTG9kLCBhbmQgT25vLCB0aGUgdmFsbGV5IG9mIGNyYWZ0c21lbi4KQW5kIG9mIHRoZSBMZXZpdGVzIHdlcmUgZGl2aXNpb25zIGluIEp1ZGFoLCBhbmQgaW4gQmVuamFtaW4uCk5vdyB0aGVzZSBhcmUgdGhlIHByaWVzdHMgYW5kIHRoZSBMZXZpdGVzIHRoYXQgd2VudCB1cCB3aXRoIFplcnViYmFiZWwgdGhlIHNvbiBvZiBTaGVhbHRpZWwsIGFuZCBKZXNodWE6IFNlcmFpYWgsIEplcmVtaWFoLCBFenJhLApBbWFyaWFoLCBNYWxsdWNoLCBIYXR0dXNoLApTaGVjaGFuaWFoLCBSZWh1bSwgTWVyZW1vdGgsCklkZG8sIEdpbm5ldGhvLCBBYmlqYWgsCk1pYW1pbiwgTWFhZGlhaCwgQmlsZ2FoLApTaGVtYWlhaCwgYW5kIEpvaWFyaWIsIEplZGFpYWgsClNhbGx1LCBBbW9rLCBIaWxraWFoLCBKZWRhaWFoLiBUaGVzZSB3ZXJlIHRoZSBjaGllZiBvZiB0aGUgcHJpZXN0cyBhbmQgb2YgdGhlaXIgYnJldGhyZW4gaW4gdGhlIGRheXMgb2YgSmVzaHVhLgpNb3Jlb3ZlciB0aGUgTGV2aXRlczogSmVzaHVhLCBCaW5udWksIEthZG1pZWwsIFNoZXJlYmlhaCwgSnVkYWgsIGFuZCBNYXR0YW5pYWgsIHdoaWNoIHdhcyBvdmVyIHRoZSB0aGFua3NnaXZpbmcsIGhlIGFuZCBoaXMgYnJldGhyZW4uCkFsc28gQmFrYnVraWFoIGFuZCBVbm5pLCB0aGVpciBicmV0aHJlbiwgd2VyZSBvdmVyIGFnYWluc3QgdGhlbSBpbiB0aGUgd2F0Y2hlcy4KQW5kIEplc2h1YSBiZWdhdCBKb2lha2ltLCBKb2lha2ltIGFsc28gYmVnYXQgRWxpYXNoaWIsIGFuZCBFbGlhc2hpYiBiZWdhdCBKb2lhZGEsCkFuZCBKb2lhZGEgYmVnYXQgSm9uYXRoYW4sIGFuZCBKb25hdGhhbiBiZWdhdCBKYWRkdWEuCkFuZCBpbiB0aGUgZGF5cyBvZiBKb2lha2ltIHdlcmUgcHJpZXN0cywgdGhlIGNoaWVmIG9mIHRoZSBmYXRoZXJzOiBvZiBTZXJhaWFoLCBNZXJhaWFoOyBvZiBKZXJlbWlhaCwgSGFuYW5pYWg7Ck9mIEV6cmEsIE1lc2h1bGxhbTsgb2YgQW1hcmlhaCwgSmVob2hhbmFuOwpPZiBNZWxpY3UsIEpvbmF0aGFuOyBvZiBTaGViYW5pYWgsIEpvc2VwaDsKT2YgSGFyaW0sIEFkbmE7IG9mIE1lcmFpb3RoLCBIZWxrYWk7Ck9mIElkZG8sIFplY2hhcmlhaDsgb2YgR2lubmV0aG9uLCBNZXNodWxsYW07Ck9mIEFiaWphaCwgWmljaHJpOyBvZiBNaW5pYW1pbiwgb2YgTW9hZGlhaCwgUGlsdGFpOgpPZiBCaWxnYWgsIFNoYW1tdWE7IG9mIFNoZW1haWFoLCBKZWhvbmF0aGFuOwpBbmQgb2YgSm9pYXJpYiwgTWF0dGVuYWk7IG9mIEplZGFpYWgsIFV6emk7Ck9mIFNhbGxhaSwgS2FsbGFpOyBvZiBBbW9rLCBFYmVyOwpPZiBIaWxraWFoLCBIYXNoYWJpYWg7IG9mIEplZGFpYWgsIE5ldGhhbmVlbC4KVGhlIExldml0ZXMgaW4gdGhlIGRheXMgb2YgRWxpYXNoaWIsIEpvaWFkYSwgYW5kIEpvaGFuYW4sIGFuZCBKYWRkdWEsIHdlcmUgcmVjb3JkZWQgY2hpZWYgb2YgdGhlIGZhdGhlcnM6IGFsc28gdGhlIHByaWVzdHMsIHRvIHRoZSByZWlnbiBvZiBEYXJpdXMgdGhlIFBlcnNpYW4uClRoZSBzb25zIG9mIExldmksIHRoZSBjaGllZiBvZiB0aGUgZmF0aGVycywgd2VyZSB3cml0dGVuIGluIHRoZSBib29rIG9mIHRoZSBjaHJvbmljbGVzLCBldmVuIHVudGlsIHRoZSBkYXlzIG9mIEpvaGFuYW4gdGhlIHNvbiBvZiBFbGlhc2hpYi4KQW5kIHRoZSBjaGllZiBvZiB0aGUgTGV2aXRlczogSGFzaGFiaWFoLCBTaGVyZWJpYWgsIGFuZCBKZXNodWEgdGhlIHNvbiBvZiBLYWRtaWVsLCB3aXRoIHRoZWlyIGJyZXRocmVuIG92ZXIgYWdhaW5zdCB0aGVtLCB0byBwcmFpc2UgYW5kIHRvIGdpdmUgdGhhbmtzLCBhY2NvcmRpbmcgdG8gdGhlIGNvbW1hbmRtZW50IG9mIERhdmlkIHRoZSBtYW4gb2YgR29kLCB3YXJkIG92ZXIgYWdhaW5zdCB3YXJkLgpNYXR0YW5pYWgsIGFuZCBCYWtidWtpYWgsIE9iYWRpYWgsIE1lc2h1bGxhbSwgVGFsbW9uLCBBa2t1Yiwgd2VyZSBwb3J0ZXJzIGtlZXBpbmcgdGhlIHdhcmQgYXQgdGhlIHRocmVzaG9sZHMgb2YgdGhlIGdhdGVzLgpUaGVzZSB3ZXJlIGluIHRoZSBkYXlzIG9mIEpvaWFraW0gdGhlIHNvbiBvZiBKZXNodWEsIHRoZSBzb24gb2YgSm96YWRhaywgYW5kIGluIHRoZSBkYXlzIG9mIE5laGVtaWFoIHRoZSBnb3Zlcm5vciwgYW5kIG9mIEV6cmEgdGhlIHByaWVzdCwgdGhlIHNjcmliZS4KQW5kIGF0IHRoZSBkZWRpY2F0aW9uIG9mIHRoZSB3YWxsIG9mIEplcnVzYWxlbSB0aGV5IHNvdWdodCB0aGUgTGV2aXRlcyBvdXQgb2YgYWxsIHRoZWlyIHBsYWNlcywgdG8gYnJpbmcgdGhlbSB0byBKZXJ1c2FsZW0sIHRvIGtlZXAgdGhlIGRlZGljYXRpb24gd2l0aCBnbGFkbmVzcywgYm90aCB3aXRoIHRoYW5rc2dpdmluZ3MsIGFuZCB3aXRoIHNpbmdpbmcsIHdpdGggY3ltYmFscywgcHNhbHRlcmllcywgYW5kIHdpdGggaGFycHMuCkFuZCB0aGUgc29ucyBvZiB0aGUgc2luZ2VycyBnYXRoZXJlZCB0aGVtc2VsdmVzIHRvZ2V0aGVyLCBib3RoIG91dCBvZiB0aGUgcGxhaW4gY291bnRyeSByb3VuZCBhYm91dCBKZXJ1c2FsZW0sIGFuZCBmcm9tIHRoZSB2aWxsYWdlcyBvZiBOZXRvcGhhdGhpOwpBbHNvIGZyb20gdGhlIGhvdXNlIG9mIEdpbGdhbCwgYW5kIG91dCBvZiB0aGUgZmllbGRzIG9mIEdlYmEgYW5kIEF6bWF2ZXRoOiBmb3IgdGhlIHNpbmdlcnMgaGFkIGJ1aWxkZWQgdGhlbSB2aWxsYWdlcyByb3VuZCBhYm91dCBKZXJ1c2FsZW0uCkFuZCB0aGUgcHJpZXN0cyBhbmQgdGhlIExldml0ZXMgcHVyaWZpZWQgdGhlbXNlbHZlcywgYW5kIHB1cmlmaWVkIHRoZSBwZW9wbGUsIGFuZCB0aGUgZ2F0ZXMsIGFuZCB0aGUgd2FsbC4KVGhlbiBJIGJyb3VnaHQgdXAgdGhlIHByaW5jZXMgb2YgSnVkYWggdXBvbiB0aGUgd2FsbCwgYW5kIGFwcG9pbnRlZCB0d28gZ3JlYXQgY29tcGFuaWVzIG9mIHRoZW0gdGhhdCBnYXZlIHRoYW5rcywgd2hlcmVvZiBvbmUgd2VudCBvbiB0aGUgcmlnaHQgaGFuZCB1cG9uIHRoZSB3YWxsIHRvd2FyZCB0aGUgZHVuZyBnYXRlOgpBbmQgYWZ0ZXIgdGhlbSB3ZW50IEhvc2hhaWFoLCBhbmQgaGFsZiBvZiB0aGUgcHJpbmNlcyBvZiBKdWRhaCwKQW5kIEF6YXJpYWgsIEV6cmEsIGFuZCBNZXNodWxsYW0sCkp1ZGFoLCBhbmQgQmVuamFtaW4sIGFuZCBTaGVtYWlhaCwgYW5kIEplcmVtaWFoLApBbmQgY2VydGFpbiBvZiB0aGUgcHJpZXN0cycgc29ucyB3aXRoIHRydW1wZXRzOyBuYW1lbHksIFplY2hhcmlhaCB0aGUgc29uIG9mIEpvbmF0aGFuLCB0aGUgc29uIG9mIFNoZW1haWFoLCB0aGUgc29uIG9mIE1hdHRhbmlhaCwgdGhlIHNvbiBvZiBNaWNoYWlhaCwgdGhlIHNvbiBvZiBaYWNjdXIsIHRoZSBzb24gb2YgQXNhcGg6CkFuZCBoaXMgYnJldGhyZW4sIFNoZW1haWFoLCBhbmQgQXphcmFlbCwgTWlsYWxhaSwgR2lsYWxhaSwgTWFhaSwgTmV0aGFuZWVsLCBhbmQgSnVkYWgsIEhhbmFuaSwgd2l0aCB0aGUgbXVzaWNhbCBpbnN0cnVtZW50cyBvZiBEYXZpZCB0aGUgbWFuIG9mIEdvZCwgYW5kIEV6cmEgdGhlIHNjcmliZSBiZWZvcmUgdGhlbS4KQW5kIGF0IHRoZSBmb3VudGFpbiBnYXRlLCB3aGljaCB3YXMgb3ZlciBhZ2FpbnN0IHRoZW0sIHRoZXkgd2VudCB1cCBieSB0aGUgc3RhaXJzIG9mIHRoZSBjaXR5IG9mIERhdmlkLCBhdCB0aGUgZ29pbmcgdXAgb2YgdGhlIHdhbGwsIGFib3ZlIHRoZSBob3VzZSBvZiBEYXZpZCwgZXZlbiB1bnRvIHRoZSB3YXRlciBnYXRlIGVhc3R3YXJkLgpBbmQgdGhlIG90aGVyIGNvbXBhbnkgb2YgdGhlbSB0aGF0IGdhdmUgdGhhbmtzIHdlbnQgb3ZlciBhZ2FpbnN0IHRoZW0sIGFuZCBJIGFmdGVyIHRoZW0sIGFuZCB0aGUgaGFsZiBvZiB0aGUgcGVvcGxlIHVwb24gdGhlIHdhbGwsIGZyb20gYmV5b25kIHRoZSB0b3dlciBvZiB0aGUgZnVybmFjZXMgZXZlbiB1bnRvIHRoZSBicm9hZCB3YWxsOwpBbmQgZnJvbSBhYm92ZSB0aGUgZ2F0ZSBvZiBFcGhyYWltLCBhbmQgYWJvdmUgdGhlIG9sZCBnYXRlLCBhbmQgYWJvdmUgdGhlIGZpc2ggZ2F0ZSwgYW5kIHRoZSB0b3dlciBvZiBIYW5hbmVlbCwgYW5kIHRoZSB0b3dlciBvZiBNZWFoLCBldmVuIHVudG8gdGhlIHNoZWVwIGdhdGU6IGFuZCB0aGV5IHN0b29kIHN0aWxsIGluIHRoZSBwcmlzb24gZ2F0ZS4KU28gc3Rvb2QgdGhlIHR3byBjb21wYW5pZXMgb2YgdGhlbSB0aGF0IGdhdmUgdGhhbmtzIGluIHRoZSBob3VzZSBvZiBHb2QsIGFuZCBJLCBhbmQgdGhlIGhhbGYgb2YgdGhlIHJ1bGVycyB3aXRoIG1lOgpBbmQgdGhlIHByaWVzdHM7IEVsaWFraW0sIE1hYXNlaWFoLCBNaW5pYW1pbiwgTWljaGFpYWgsIEVsaW9lbmFpLCBaZWNoYXJpYWgsIGFuZCBIYW5hbmlhaCwgd2l0aCB0cnVtcGV0czsKQW5kIE1hYXNlaWFoLCBhbmQgU2hlbWFpYWgsIGFuZCBFbGVhemFyLCBhbmQgVXp6aSwgYW5kIEplaG9oYW5hbiwgYW5kIE1hbGNoaWphaCwgYW5kIEVsYW0sIGFuZCBFemVyLiBBbmQgdGhlIHNpbmdlcnMgc2FuZyBsb3VkLCB3aXRoIEplenJhaGlhaCB0aGVpciBvdmVyc2Vlci4KQWxzbyB0aGF0IGRheSB0aGV5IG9mZmVyZWQgZ3JlYXQgc2FjcmlmaWNlcywgYW5kIHJlam9pY2VkOiBmb3IgR29kIGhhZCBtYWRlIHRoZW0gcmVqb2ljZSB3aXRoIGdyZWF0IGpveTogdGhlIHdpdmVzIGFsc28gYW5kIHRoZSBjaGlsZHJlbiByZWpvaWNlZDogc28gdGhhdCB0aGUgam95IG9mIEplcnVzYWxlbSB3YXMgaGVhcmQgZXZlbiBhZmFyIG9mZi4KQW5kIGF0IHRoYXQgdGltZSB3ZXJlIHNvbWUgYXBwb2ludGVkIG92ZXIgdGhlIGNoYW1iZXJzIGZvciB0aGUgdHJlYXN1cmVzLCBmb3IgdGhlIG9mZmVyaW5ncywgZm9yIHRoZSBmaXJzdGZydWl0cywgYW5kIGZvciB0aGUgdGl0aGVzLCB0byBnYXRoZXIgaW50byB0aGVtIG91dCBvZiB0aGUgZmllbGRzIG9mIHRoZSBjaXRpZXMgdGhlIHBvcnRpb25zIG9mIHRoZSBsYXcgZm9yIHRoZSBwcmllc3RzIGFuZCBMZXZpdGVzOiBmb3IgSnVkYWggcmVqb2ljZWQgZm9yIHRoZSBwcmllc3RzIGFuZCBmb3IgdGhlIExldml0ZXMgdGhhdCB3YWl0ZWQuCkFuZCBib3RoIHRoZSBzaW5nZXJzIGFuZCB0aGUgcG9ydGVycyBrZXB0IHRoZSB3YXJkIG9mIHRoZWlyIEdvZCwgYW5kIHRoZSB3YXJkIG9mIHRoZSBwdXJpZmljYXRpb24sIGFjY29yZGluZyB0byB0aGUgY29tbWFuZG1lbnQgb2YgRGF2aWQsIGFuZCBvZiBTb2xvbW9uIGhpcyBzb24uCkZvciBpbiB0aGUgZGF5cyBvZiBEYXZpZCBhbmQgQXNhcGggb2Ygb2xkIHRoZXJlIHdlcmUgY2hpZWYgb2YgdGhlIHNpbmdlcnMsIGFuZCBzb25ncyBvZiBwcmFpc2UgYW5kIHRoYW5rc2dpdmluZyB1bnRvIEdvZC4KQW5kIGFsbCBJc3JhZWwgaW4gdGhlIGRheXMgb2YgWmVydWJiYWJlbCwgYW5kIGluIHRoZSBkYXlzIG9mIE5laGVtaWFoLCBnYXZlIHRoZSBwb3J0aW9ucyBvZiB0aGUgc2luZ2VycyBhbmQgdGhlIHBvcnRlcnMsIGV2ZXJ5IGRheSBoaXMgcG9ydGlvbjogYW5kIHRoZXkgc2FuY3RpZmllZCBob2x5IHRoaW5ncyB1bnRvIHRoZSBMZXZpdGVzOyBhbmQgdGhlIExldml0ZXMgc2FuY3RpZmllZCB0aGVtIHVudG8gdGhlIGNoaWxkcmVuIG9mIEFhcm9uLgpPbiB0aGF0IGRheSB0aGV5IHJlYWQgaW4gdGhlIGJvb2sgb2YgTW9zZXMgaW4gdGhlIGF1ZGllbmNlIG9mIHRoZSBwZW9wbGU7IGFuZCB0aGVyZWluIHdhcyBmb3VuZCB3cml0dGVuLCB0aGF0IHRoZSBBbW1vbml0ZSBhbmQgdGhlIE1vYWJpdGUgc2hvdWxkIG5vdCBjb21lIGludG8gdGhlIGNvbmdyZWdhdGlvbiBvZiBHb2QgZm9yIGV2ZXI7CkJlY2F1c2UgdGhleSBtZXQgbm90IHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgd2l0aCBicmVhZCBhbmQgd2l0aCB3YXRlciwgYnV0IGhpcmVkIEJhbGFhbSBhZ2FpbnN0IHRoZW0sIHRoYXQgaGUgc2hvdWxkIGN1cnNlIHRoZW06IGhvd2JlaXQgb3VyIEdvZCB0dXJuZWQgdGhlIGN1cnNlIGludG8gYSBibGVzc2luZy4KTm93IGl0IGNhbWUgdG8gcGFzcywgd2hlbiB0aGV5IGhhZCBoZWFyZCB0aGUgbGF3LCB0aGF0IHRoZXkgc2VwYXJhdGVkIGZyb20gSXNyYWVsIGFsbCB0aGUgbWl4ZWQgbXVsdGl0dWRlLgpBbmQgYmVmb3JlIHRoaXMsIEVsaWFzaGliIHRoZSBwcmllc3QsIGhhdmluZyB0aGUgb3ZlcnNpZ2h0IG9mIHRoZSBjaGFtYmVyIG9mIHRoZSBob3VzZSBvZiBvdXIgR29kLCB3YXMgYWxsaWVkIHVudG8gVG9iaWFoOgpBbmQgaGUgaGFkIHByZXBhcmVkIGZvciBoaW0gYSBncmVhdCBjaGFtYmVyLCB3aGVyZSBhZm9yZXRpbWUgdGhleSBsYWlkIHRoZSBtZWF0IG9mZmVyaW5ncywgdGhlIGZyYW5raW5jZW5zZSwgYW5kIHRoZSB2ZXNzZWxzLCBhbmQgdGhlIHRpdGhlcyBvZiB0aGUgY29ybiwgdGhlIG5ldyB3aW5lLCBhbmQgdGhlIG9pbCwgd2hpY2ggd2FzIGNvbW1hbmRlZCB0byBiZSBnaXZlbiB0byB0aGUgTGV2aXRlcywgYW5kIHRoZSBzaW5nZXJzLCBhbmQgdGhlIHBvcnRlcnM7IGFuZCB0aGUgb2ZmZXJpbmdzIG9mIHRoZSBwcmllc3RzLgpCdXQgaW4gYWxsIHRoaXMgdGltZSB3YXMgbm90IEkgYXQgSmVydXNhbGVtOiBmb3IgaW4gdGhlIHR3byBhbmQgdGhpcnRpZXRoIHllYXIgb2YgQXJ0YXhlcnhlcyBraW5nIG9mIEJhYnlsb24gY2FtZSBJIHVudG8gdGhlIGtpbmcsIGFuZCBhZnRlciBjZXJ0YWluIGRheXMgb2J0YWluZWQgSSBsZWF2ZSBvZiB0aGUga2luZzoKQW5kIEkgY2FtZSB0byBKZXJ1c2FsZW0sIGFuZCB1bmRlcnN0b29kIG9mIHRoZSBldmlsIHRoYXQgRWxpYXNoaWIgZGlkIGZvciBUb2JpYWgsIGluIHByZXBhcmluZyBoaW0gYSBjaGFtYmVyIGluIHRoZSBjb3VydHMgb2YgdGhlIGhvdXNlIG9mIEdvZC4KQW5kIGl0IGdyaWV2ZWQgbWUgc29yZTogdGhlcmVmb3JlIEkgY2FzdCBmb3J0aCBhbGwgdGhlIGhvdXNlaG9sZCBzdHVmZiB0byBUb2JpYWggb3V0IG9mIHRoZSBjaGFtYmVyLgpUaGVuIEkgY29tbWFuZGVkLCBhbmQgdGhleSBjbGVhbnNlZCB0aGUgY2hhbWJlcnM6IGFuZCB0aGl0aGVyIGJyb3VnaHQgSSBhZ2FpbiB0aGUgdmVzc2VscyBvZiB0aGUgaG91c2Ugb2YgR29kLCB3aXRoIHRoZSBtZWF0IG9mZmVyaW5nIGFuZCB0aGUgZnJhbmtpbmNlbnNlLgpBbmQgSSBwZXJjZWl2ZWQgdGhhdCB0aGUgcG9ydGlvbnMgb2YgdGhlIExldml0ZXMgaGFkIG5vdCBiZWVuIGdpdmVuIHRoZW06IGZvciB0aGUgTGV2aXRlcyBhbmQgdGhlIHNpbmdlcnMsIHRoYXQgZGlkIHRoZSB3b3JrLCB3ZXJlIGZsZWQgZXZlcnkgb25lIHRvIGhpcyBmaWVsZC4KVGhlbiBjb250ZW5kZWQgSSB3aXRoIHRoZSBydWxlcnMsIGFuZCBzYWlkLCBXaHkgaXMgdGhlIGhvdXNlIG9mIEdvZCBmb3JzYWtlbj8gQW5kIEkgZ2F0aGVyZWQgdGhlbSB0b2dldGhlciwgYW5kIHNldCB0aGVtIGluIHRoZWlyIHBsYWNlLgpUaGVuIGJyb3VnaHQgYWxsIEp1ZGFoIHRoZSB0aXRoZSBvZiB0aGUgY29ybiBhbmQgdGhlIG5ldyB3aW5lIGFuZCB0aGUgb2lsIHVudG8gdGhlIHRyZWFzdXJpZXMuCkFuZCBJIG1hZGUgdHJlYXN1cmVycyBvdmVyIHRoZSB0cmVhc3VyaWVzLCBTaGVsZW1pYWggdGhlIHByaWVzdCwgYW5kIFphZG9rIHRoZSBzY3JpYmUsIGFuZCBvZiB0aGUgTGV2aXRlcywgUGVkYWlhaDogYW5kIG5leHQgdG8gdGhlbSB3YXMgSGFuYW4gdGhlIHNvbiBvZiBaYWNjdXIsIHRoZSBzb24gb2YgTWF0dGFuaWFoOiBmb3IgdGhleSB3ZXJlIGNvdW50ZWQgZmFpdGhmdWwsIGFuZCB0aGVpciBvZmZpY2Ugd2FzIHRvIGRpc3RyaWJ1dGUgdW50byB0aGVpciBicmV0aHJlbi4KUmVtZW1iZXIgbWUsIE8gbXkgR29kLCBjb25jZXJuaW5nIHRoaXMsIGFuZCB3aXBlIG5vdCBvdXQgbXkgZ29vZCBkZWVkcyB0aGF0IEkgaGF2ZSBkb25lIGZvciB0aGUgaG91c2Ugb2YgbXkgR29kLCBhbmQgZm9yIHRoZSBvZmZpY2VzIHRoZXJlb2YuCkluIHRob3NlIGRheXMgc2F3IEkgaW4gSnVkYWggc29tZSB0cmVhZGluZyB3aW5lIHByZXNzZXMgb24gdGhlIHNhYmJhdGgsIGFuZCBicmluZ2luZyBpbiBzaGVhdmVzLCBhbmQgbGFkaW5nIGFzc2VzOyBhcyBhbHNvIHdpbmUsIGdyYXBlcywgYW5kIGZpZ3MsIGFuZCBhbGwgbWFubmVyIG9mIGJ1cmRlbnMsIHdoaWNoIHRoZXkgYnJvdWdodCBpbnRvIEplcnVzYWxlbSBvbiB0aGUgc2FiYmF0aCBkYXk6IGFuZCBJIHRlc3RpZmllZCBhZ2FpbnN0IHRoZW0gaW4gdGhlIGRheSB3aGVyZWluIHRoZXkgc29sZCB2aWN0dWFscy4KVGhlcmUgZHdlbHQgbWVuIG9mIFR5cmUgYWxzbyB0aGVyZWluLCB3aGljaCBicm91Z2h0IGZpc2gsIGFuZCBhbGwgbWFubmVyIG9mIHdhcmUsIGFuZCBzb2xkIG9uIHRoZSBzYWJiYXRoIHVudG8gdGhlIGNoaWxkcmVuIG9mIEp1ZGFoLCBhbmQgaW4gSmVydXNhbGVtLgpUaGVuIEkgY29udGVuZGVkIHdpdGggdGhlIG5vYmxlcyBvZiBKdWRhaCwgYW5kIHNhaWQgdW50byB0aGVtLCBXaGF0IGV2aWwgdGhpbmcgaXMgdGhpcyB0aGF0IHllIGRvLCBhbmQgcHJvZmFuZSB0aGUgc2FiYmF0aCBkYXk/CkRpZCBub3QgeW91ciBmYXRoZXJzIHRodXMsIGFuZCBkaWQgbm90IG91ciBHb2QgYnJpbmcgYWxsIHRoaXMgZXZpbCB1cG9uIHVzLCBhbmQgdXBvbiB0aGlzIGNpdHk/IHlldCB5ZSBicmluZyBtb3JlIHdyYXRoIHVwb24gSXNyYWVsIGJ5IHByb2ZhbmluZyB0aGUgc2FiYmF0aC4KQW5kIGl0IGNhbWUgdG8gcGFzcywgdGhhdCB3aGVuIHRoZSBnYXRlcyBvZiBKZXJ1c2FsZW0gYmVnYW4gdG8gYmUgZGFyayBiZWZvcmUgdGhlIHNhYmJhdGgsIEkgY29tbWFuZGVkIHRoYXQgdGhlIGdhdGVzIHNob3VsZCBiZSBzaHV0LCBhbmQgY2hhcmdlZCB0aGF0IHRoZXkgc2hvdWxkIG5vdCBiZSBvcGVuZWQgdGlsbCBhZnRlciB0aGUgc2FiYmF0aDogYW5kIHNvbWUgb2YgbXkgc2VydmFudHMgc2V0IEkgYXQgdGhlIGdhdGVzLCB0aGF0IHRoZXJlIHNob3VsZCBubyBidXJkZW4gYmUgYnJvdWdodCBpbiBvbiB0aGUgc2FiYmF0aCBkYXkuClNvIHRoZSBtZXJjaGFudHMgYW5kIHNlbGxlcnMgb2YgYWxsIGtpbmQgb2Ygd2FyZSBsb2RnZWQgd2l0aG91dCBKZXJ1c2FsZW0gb25jZSBvciB0d2ljZS4KVGhlbiBJIHRlc3RpZmllZCBhZ2FpbnN0IHRoZW0sIGFuZCBzYWlkIHVudG8gdGhlbSwgV2h5IGxvZGdlIHllIGFib3V0IHRoZSB3YWxsPyBpZiB5ZSBkbyBzbyBhZ2FpbiwgSSB3aWxsIGxheSBoYW5kcyBvbiB5b3UuIEZyb20gdGhhdCB0aW1lIGZvcnRoIGNhbWUgdGhleSBubyBtb3JlIG9uIHRoZSBzYWJiYXRoLgpBbmQgSSBjb21tYW5kZWQgdGhlIExldml0ZXMgdGhhdCB0aGV5IHNob3VsZCBjbGVhbnNlIHRoZW1zZWx2ZXMsIGFuZCB0aGF0IHRoZXkgc2hvdWxkIGNvbWUgYW5kIGtlZXAgdGhlIGdhdGVzLCB0byBzYW5jdGlmeSB0aGUgc2FiYmF0aCBkYXkuIFJlbWVtYmVyIG1lLCBPIG15IEdvZCwgY29uY2VybmluZyB0aGlzIGFsc28sIGFuZCBzcGFyZSBtZSBhY2NvcmRpbmcgdG8gdGhlIGdyZWF0bmVzcyBvZiB0aHkgbWVyY3kuCkluIHRob3NlIGRheXMgYWxzbyBzYXcgSSBKZXdzIHRoYXQgaGFkIG1hcnJpZWQgd2l2ZXMgb2YgQXNoZG9kLCBvZiBBbW1vbiwgYW5kIG9mIE1vYWI6CkFuZCB0aGVpciBjaGlsZHJlbiBzcGFrZSBoYWxmIGluIHRoZSBzcGVlY2ggb2YgQXNoZG9kLCBhbmQgY291bGQgbm90IHNwZWFrIGluIHRoZSBKZXdzJyBsYW5ndWFnZSwgYnV0IGFjY29yZGluZyB0byB0aGUgbGFuZ3VhZ2Ugb2YgZWFjaCBwZW9wbGUuCkFuZCBJIGNvbnRlbmRlZCB3aXRoIHRoZW0sIGFuZCBjdXJzZWQgdGhlbSwgYW5kIHNtb3RlIGNlcnRhaW4gb2YgdGhlbSwgYW5kIHBsdWNrZWQgb2ZmIHRoZWlyIGhhaXIsIGFuZCBtYWRlIHRoZW0gc3dlYXIgYnkgR29kLCBzYXlpbmcsIFllIHNoYWxsIG5vdCBnaXZlIHlvdXIgZGF1Z2h0ZXJzIHVudG8gdGhlaXIgc29ucywgbm9yIHRha2UgdGhlaXIgZGF1Z2h0ZXJzIHVudG8geW91ciBzb25zLCBvciBmb3IgeW91cnNlbHZlcy4KRGlkIG5vdCBTb2xvbW9uIGtpbmcgb2YgSXNyYWVsIHNpbiBieSB0aGVzZSB0aGluZ3M/IHlldCBhbW9uZyBtYW55IG5hdGlvbnMgd2FzIHRoZXJlIG5vIGtpbmcgbGlrZSBoaW0sIHdobyB3YXMgYmVsb3ZlZCBvZiBoaXMgR29kLCBhbmQgR29kIG1hZGUgaGltIGtpbmcgb3ZlciBhbGwgSXNyYWVsOiBuZXZlcnRoZWxlc3MgZXZlbiBoaW0gZGlkIG91dGxhbmRpc2ggd29tZW4gY2F1c2UgdG8gc2luLgpTaGFsbCB3ZSB0aGVuIGhlYXJrZW4gdW50byB5b3UgdG8gZG8gYWxsIHRoaXMgZ3JlYXQgZXZpbCwgdG8gdHJhbnNncmVzcyBhZ2FpbnN0IG91ciBHb2QgaW4gbWFycnlpbmcgc3RyYW5nZSB3aXZlcz8KQW5kIG9uZSBvZiB0aGUgc29ucyBvZiBKb2lhZGEsIHRoZSBzb24gb2YgRWxpYXNoaWIgdGhlIGhpZ2ggcHJpZXN0LCB3YXMgc29uIGluIGxhdyB0byBTYW5iYWxsYXQgdGhlIEhvcm9uaXRlOiB0aGVyZWZvcmUgSSBjaGFzZWQgaGltIGZyb20gbWUuClJlbWVtYmVyIHRoZW0sIE8gbXkgR29kLCBiZWNhdXNlIHRoZXkgaGF2ZSBkZWZpbGVkIHRoZSBwcmllc3Rob29kLCBhbmQgdGhlIGNvdmVuYW50IG9mIHRoZSBwcmllc3Rob29kLCBhbmQgb2YgdGhlIExldml0ZXMuClRodXMgY2xlYW5zZWQgSSB0aGVtIGZyb20gYWxsIHN0cmFuZ2VycywgYW5kIGFwcG9pbnRlZCB0aGUgd2FyZHMgb2YgdGhlIHByaWVzdHMgYW5kIHRoZSBMZXZpdGVzLCBldmVyeSBvbmUgaW4gaGlzIGJ1c2luZXNzOwpBbmQgZm9yIHRoZSB3b29kIG9mZmVyaW5nLCBhdCB0aW1lcyBhcHBvaW50ZWQsIGFuZCBmb3IgdGhlIGZpcnN0ZnJ1aXRzLiBSZW1lbWJlciBtZSwgTyBteSBHb2QsIGZvciBnb29kLgpOb3cgaXQgY2FtZSB0byBwYXNzIGluIHRoZSBkYXlzIG9mIEFoYXN1ZXJ1cywgKHRoaXMgaXMgQWhhc3VlcnVzIHdoaWNoIHJlaWduZWQsIGZyb20gSW5kaWEgZXZlbiB1bnRvIEV0aGlvcGlhLCBvdmVyIGFuIGh1bmRyZWQgYW5kIHNldmVuIGFuZCB0d2VudHkgcHJvdmluY2VzOikKVGhhdCBpbiB0aG9zZSBkYXlzLCB3aGVuIHRoZSBraW5nIEFoYXN1ZXJ1cyBzYXQgb24gdGhlIHRocm9uZSBvZiBoaXMga2luZ2RvbSwgd2hpY2ggd2FzIGluIFNodXNoYW4gdGhlIHBhbGFjZSwKSW4gdGhlIHRoaXJkIHllYXIgb2YgaGlzIHJlaWduLCBoZSBtYWRlIGEgZmVhc3QgdW50byBhbGwgaGlzIHByaW5jZXMgYW5kIGhpcyBzZXJ2YW50czsgdGhlIHBvd2VyIG9mIFBlcnNpYSBhbmQgTWVkaWEsIHRoZSBub2JsZXMgYW5kIHByaW5jZXMgb2YgdGhlIHByb3ZpbmNlcywgYmVpbmcgYmVmb3JlIGhpbToKV2hlbiBoZSBzaGV3ZWQgdGhlIHJpY2hlcyBvZiBoaXMgZ2xvcmlvdXMga2luZ2RvbSBhbmQgdGhlIGhvbm91ciBvZiBoaXMgZXhjZWxsZW50IG1hamVzdHkgbWFueSBkYXlzLCBldmVuIGFuIGh1bmRyZWQgYW5kIGZvdXJzY29yZSBkYXlzLgpBbmQgd2hlbiB0aGVzZSBkYXlzIHdlcmUgZXhwaXJlZCwgdGhlIGtpbmcgbWFkZSBhIGZlYXN0IHVudG8gYWxsIHRoZSBwZW9wbGUgdGhhdCB3ZXJlIHByZXNlbnQgaW4gU2h1c2hhbiB0aGUgcGFsYWNlLCBib3RoIHVudG8gZ3JlYXQgYW5kIHNtYWxsLCBzZXZlbiBkYXlzLCBpbiB0aGUgY291cnQgb2YgdGhlIGdhcmRlbiBvZiB0aGUga2luZydzIHBhbGFjZTsKV2hlcmUgd2VyZSB3aGl0ZSwgZ3JlZW4sIGFuZCBibHVlLCBoYW5naW5ncywgZmFzdGVuZWQgd2l0aCBjb3JkcyBvZiBmaW5lIGxpbmVuIGFuZCBwdXJwbGUgdG8gc2lsdmVyIHJpbmdzIGFuZCBwaWxsYXJzIG9mIG1hcmJsZTogdGhlIGJlZHMgd2VyZSBvZiBnb2xkIGFuZCBzaWx2ZXIsIHVwb24gYSBwYXZlbWVudCBvZiByZWQsIGFuZCBibHVlLCBhbmQgd2hpdGUsIGFuZCBibGFjaywgbWFyYmxlLgpBbmQgdGhleSBnYXZlIHRoZW0gZHJpbmsgaW4gdmVzc2VscyBvZiBnb2xkLCAodGhlIHZlc3NlbHMgYmVpbmcgZGl2ZXJzZSBvbmUgZnJvbSBhbm90aGVyLCkgYW5kIHJveWFsIHdpbmUgaW4gYWJ1bmRhbmNlLCBhY2NvcmRpbmcgdG8gdGhlIHN0YXRlIG9mIHRoZSBraW5nLgpBbmQgdGhlIGRyaW5raW5nIHdhcyBhY2NvcmRpbmcgdG8gdGhlIGxhdzsgbm9uZSBkaWQgY29tcGVsOiBmb3Igc28gdGhlIGtpbmcgaGFkIGFwcG9pbnRlZCB0byBhbGwgdGhlIG9mZmljZXJzIG9mIGhpcyBob3VzZSwgdGhhdCB0aGV5IHNob3VsZCBkbyBhY2NvcmRpbmcgdG8gZXZlcnkgbWFuJ3MgcGxlYXN1cmUuCkFsc28gVmFzaHRpIHRoZSBxdWVlbiBtYWRlIGEgZmVhc3QgZm9yIHRoZSB3b21lbiBpbiB0aGUgcm95YWwgaG91c2Ugd2hpY2ggYmVsb25nZWQgdG8ga2luZyBBaGFzdWVydXMuCk9uIHRoZSBzZXZlbnRoIGRheSwgd2hlbiB0aGUgaGVhcnQgb2YgdGhlIGtpbmcgd2FzIG1lcnJ5IHdpdGggd2luZSwgaGUgY29tbWFuZGVkIE1laHVtYW4sIEJpenRoYSwgSGFyYm9uYSwgQmlndGhhLCBhbmQgQWJhZ3RoYSwgWmV0aGFyLCBhbmQgQ2FyY2FzLCB0aGUgc2V2ZW4gY2hhbWJlcmxhaW5zIHRoYXQgc2VydmVkIGluIHRoZSBwcmVzZW5jZSBvZiBBaGFzdWVydXMgdGhlIGtpbmcsClRvIGJyaW5nIFZhc2h0aSB0aGUgcXVlZW4gYmVmb3JlIHRoZSBraW5nIHdpdGggdGhlIGNyb3duIHJveWFsLCB0byBzaGV3IHRoZSBwZW9wbGUgYW5kIHRoZSBwcmluY2VzIGhlciBiZWF1dHk6IGZvciBzaGUgd2FzIGZhaXIgdG8gbG9vayBvbi4KQnV0IHRoZSBxdWVlbiBWYXNodGkgcmVmdXNlZCB0byBjb21lIGF0IHRoZSBraW5nJ3MgY29tbWFuZG1lbnQgYnkgaGlzIGNoYW1iZXJsYWluczogdGhlcmVmb3JlIHdhcyB0aGUga2luZyB2ZXJ5IHdyb3RoLCBhbmQgaGlzIGFuZ2VyIGJ1cm5lZCBpbiBoaW0uClRoZW4gdGhlIGtpbmcgc2FpZCB0byB0aGUgd2lzZSBtZW4sIHdoaWNoIGtuZXcgdGhlIHRpbWVzLCAoZm9yIHNvIHdhcyB0aGUga2luZydzIG1hbm5lciB0b3dhcmQgYWxsIHRoYXQga25ldyBsYXcgYW5kIGp1ZGdtZW50OgpBbmQgdGhlIG5leHQgdW50byBoaW0gd2FzIENhcnNoZW5hLCBTaGV0aGFyLCBBZG1hdGhhLCBUYXJzaGlzaCwgTWVyZXMsIE1hcnNlbmEsIGFuZCBNZW11Y2FuLCB0aGUgc2V2ZW4gcHJpbmNlcyBvZiBQZXJzaWEgYW5kIE1lZGlhLCB3aGljaCBzYXcgdGhlIGtpbmcncyBmYWNlLCBhbmQgd2hpY2ggc2F0IHRoZSBmaXJzdCBpbiB0aGUga2luZ2RvbTspCldoYXQgc2hhbGwgd2UgZG8gdW50byB0aGUgcXVlZW4gVmFzaHRpIGFjY29yZGluZyB0byBsYXcsIGJlY2F1c2Ugc2hlIGhhdGggbm90IHBlcmZvcm1lZCB0aGUgY29tbWFuZG1lbnQgb2YgdGhlIGtpbmcgQWhhc3VlcnVzIGJ5IHRoZSBjaGFtYmVybGFpbnM/CkFuZCBNZW11Y2FuIGFuc3dlcmVkIGJlZm9yZSB0aGUga2luZyBhbmQgdGhlIHByaW5jZXMsIFZhc2h0aSB0aGUgcXVlZW4gaGF0aCBub3QgZG9uZSB3cm9uZyB0byB0aGUga2luZyBvbmx5LCBidXQgYWxzbyB0byBhbGwgdGhlIHByaW5jZXMsIGFuZCB0byBhbGwgdGhlIHBlb3BsZSB0aGF0IGFyZSBpbiBhbGwgdGhlIHByb3ZpbmNlcyBvZiB0aGUga2luZyBBaGFzdWVydXMuCkZvciB0aGlzIGRlZWQgb2YgdGhlIHF1ZWVuIHNoYWxsIGNvbWUgYWJyb2FkIHVudG8gYWxsIHdvbWVuLCBzbyB0aGF0IHRoZXkgc2hhbGwgZGVzcGlzZSB0aGVpciBodXNiYW5kcyBpbiB0aGVpciBleWVzLCB3aGVuIGl0IHNoYWxsIGJlIHJlcG9ydGVkLCBUaGUga2luZyBBaGFzdWVydXMgY29tbWFuZGVkIFZhc2h0aSB0aGUgcXVlZW4gdG8gYmUgYnJvdWdodCBpbiBiZWZvcmUgaGltLCBidXQgc2hlIGNhbWUgbm90LgpMaWtld2lzZSBzaGFsbCB0aGUgbGFkaWVzIG9mIFBlcnNpYSBhbmQgTWVkaWEgc2F5IHRoaXMgZGF5IHVudG8gYWxsIHRoZSBraW5nJ3MgcHJpbmNlcywgd2hpY2ggaGF2ZSBoZWFyZCBvZiB0aGUgZGVlZCBvZiB0aGUgcXVlZW4uIFRodXMgc2hhbGwgdGhlcmUgYXJpc2UgdG9vIG11Y2ggY29udGVtcHQgYW5kIHdyYXRoLgpJZiBpdCBwbGVhc2UgdGhlIGtpbmcsIGxldCB0aGVyZSBnbyBhIHJveWFsIGNvbW1hbmRtZW50IGZyb20gaGltLCBhbmQgbGV0IGl0IGJlIHdyaXR0ZW4gYW1vbmcgdGhlIGxhd3Mgb2YgdGhlIFBlcnNpYW5zIGFuZCB0aGUgTWVkZXMsIHRoYXQgaXQgYmUgbm90IGFsdGVyZWQsIFRoYXQgVmFzaHRpIGNvbWUgbm8gbW9yZSBiZWZvcmUga2luZyBBaGFzdWVydXM7IGFuZCBsZXQgdGhlIGtpbmcgZ2l2ZSBoZXIgcm95YWwgZXN0YXRlIHVudG8gYW5vdGhlciB0aGF0IGlzIGJldHRlciB0aGFuIHNoZS4KQW5kIHdoZW4gdGhlIGtpbmcncyBkZWNyZWUgd2hpY2ggaGUgc2hhbGwgbWFrZSBzaGFsbCBiZSBwdWJsaXNoZWQgdGhyb3VnaG91dCBhbGwgaGlzIGVtcGlyZSwgKGZvciBpdCBpcyBncmVhdCwpIGFsbCB0aGUgd2l2ZXMgc2hhbGwgZ2l2ZSB0byB0aGVpciBodXNiYW5kcyBob25vdXIsIGJvdGggdG8gZ3JlYXQgYW5kIHNtYWxsLgpBbmQgdGhlIHNheWluZyBwbGVhc2VkIHRoZSBraW5nIGFuZCB0aGUgcHJpbmNlczsgYW5kIHRoZSBraW5nIGRpZCBhY2NvcmRpbmcgdG8gdGhlIHdvcmQgb2YgTWVtdWNhbjoKRm9yIGhlIHNlbnQgbGV0dGVycyBpbnRvIGFsbCB0aGUga2luZydzIHByb3ZpbmNlcywgaW50byBldmVyeSBwcm92aW5jZSBhY2NvcmRpbmcgdG8gdGhlIHdyaXRpbmcgdGhlcmVvZiwgYW5kIHRvIGV2ZXJ5IHBlb3BsZSBhZnRlciB0aGVpciBsYW5ndWFnZSwgdGhhdCBldmVyeSBtYW4gc2hvdWxkIGJlYXIgcnVsZSBpbiBoaXMgb3duIGhvdXNlLCBhbmQgdGhhdCBpdCBzaG91bGQgYmUgcHVibGlzaGVkIGFjY29yZGluZyB0byB0aGUgbGFuZ3VhZ2Ugb2YgZXZlcnkgcGVvcGxlLgpBZnRlciB0aGVzZSB0aGluZ3MsIHdoZW4gdGhlIHdyYXRoIG9mIGtpbmcgQWhhc3VlcnVzIHdhcyBhcHBlYXNlZCwgaGUgcmVtZW1iZXJlZCBWYXNodGksIGFuZCB3aGF0IHNoZSBoYWQgZG9uZSwgYW5kIHdoYXQgd2FzIGRlY3JlZWQgYWdhaW5zdCBoZXIuClRoZW4gc2FpZCB0aGUga2luZydzIHNlcnZhbnRzIHRoYXQgbWluaXN0ZXJlZCB1bnRvIGhpbSwgTGV0IHRoZXJlIGJlIGZhaXIgeW91bmcgdmlyZ2lucyBzb3VnaHQgZm9yIHRoZSBraW5nOgpBbmQgbGV0IHRoZSBraW5nIGFwcG9pbnQgb2ZmaWNlcnMgaW4gYWxsIHRoZSBwcm92aW5jZXMgb2YgaGlzIGtpbmdkb20sIHRoYXQgdGhleSBtYXkgZ2F0aGVyIHRvZ2V0aGVyIGFsbCB0aGUgZmFpciB5b3VuZyB2aXJnaW5zIHVudG8gU2h1c2hhbiB0aGUgcGFsYWNlLCB0byB0aGUgaG91c2Ugb2YgdGhlIHdvbWVuLCB1bnRvIHRoZSBjdXN0b2R5IG9mIEhlZ2UgdGhlIGtpbmcncyBjaGFtYmVybGFpbiwga2VlcGVyIG9mIHRoZSB3b21lbjsgYW5kIGxldCB0aGVpciB0aGluZ3MgZm9yIHB1cmlmaWNhdGlvbiBiZSBnaXZlbiB0aGVtOgpBbmQgbGV0IHRoZSBtYWlkZW4gd2hpY2ggcGxlYXNldGggdGhlIGtpbmcgYmUgcXVlZW4gaW5zdGVhZCBvZiBWYXNodGkuIEFuZCB0aGUgdGhpbmcgcGxlYXNlZCB0aGUga2luZzsgYW5kIGhlIGRpZCBzby4KTm93IGluIFNodXNoYW4gdGhlIHBhbGFjZSB0aGVyZSB3YXMgYSBjZXJ0YWluIEpldywgd2hvc2UgbmFtZSB3YXMgTW9yZGVjYWksIHRoZSBzb24gb2YgSmFpciwgdGhlIHNvbiBvZiBTaGltZWksIHRoZSBzb24gb2YgS2lzaCwgYSBCZW5qYW1pdGU7CldobyBoYWQgYmVlbiBjYXJyaWVkIGF3YXkgZnJvbSBKZXJ1c2FsZW0gd2l0aCB0aGUgY2FwdGl2aXR5IHdoaWNoIGhhZCBiZWVuIGNhcnJpZWQgYXdheSB3aXRoIEplY29uaWFoIGtpbmcgb2YgSnVkYWgsIHdob20gTmVidWNoYWRuZXp6YXIgdGhlIGtpbmcgb2YgQmFieWxvbiBoYWQgY2FycmllZCBhd2F5LgpBbmQgaGUgYnJvdWdodCB1cCBIYWRhc3NhaCwgdGhhdCBpcywgRXN0aGVyLCBoaXMgdW5jbGUncyBkYXVnaHRlcjogZm9yIHNoZSBoYWQgbmVpdGhlciBmYXRoZXIgbm9yIG1vdGhlciwgYW5kIHRoZSBtYWlkIHdhcyBmYWlyIGFuZCBiZWF1dGlmdWw7IHdob20gTW9yZGVjYWksIHdoZW4gaGVyIGZhdGhlciBhbmQgbW90aGVyIHdlcmUgZGVhZCwgdG9vayBmb3IgaGlzIG93biBkYXVnaHRlci4KU28gaXQgY2FtZSB0byBwYXNzLCB3aGVuIHRoZSBraW5nJ3MgY29tbWFuZG1lbnQgYW5kIGhpcyBkZWNyZWUgd2FzIGhlYXJkLCBhbmQgd2hlbiBtYW55IG1haWRlbnMgd2VyZSBnYXRoZXJlZCB0b2dldGhlciB1bnRvIFNodXNoYW4gdGhlIHBhbGFjZSwgdG8gdGhlIGN1c3RvZHkgb2YgSGVnYWksIHRoYXQgRXN0aGVyIHdhcyBicm91Z2h0IGFsc28gdW50byB0aGUga2luZydzIGhvdXNlLCB0byB0aGUgY3VzdG9keSBvZiBIZWdhaSwga2VlcGVyIG9mIHRoZSB3b21lbi4KQW5kIHRoZSBtYWlkZW4gcGxlYXNlZCBoaW0sIGFuZCBzaGUgb2J0YWluZWQga2luZG5lc3Mgb2YgaGltOyBhbmQgaGUgc3BlZWRpbHkgZ2F2ZSBoZXIgaGVyIHRoaW5ncyBmb3IgcHVyaWZpY2F0aW9uLCB3aXRoIHN1Y2ggdGhpbmdzIGFzIGJlbG9uZ2VkIHRvIGhlciwgYW5kIHNldmVuIG1haWRlbnMsIHdoaWNoIHdlcmUgbWVldCB0byBiZSBnaXZlbiBoZXIsIG91dCBvZiB0aGUga2luZydzIGhvdXNlOiBhbmQgaGUgcHJlZmVycmVkIGhlciBhbmQgaGVyIG1haWRzIHVudG8gdGhlIGJlc3QgcGxhY2Ugb2YgdGhlIGhvdXNlIG9mIHRoZSB3b21lbi4KRXN0aGVyIGhhZCBub3Qgc2hld2VkIGhlciBwZW9wbGUgbm9yIGhlciBraW5kcmVkOiBmb3IgTW9yZGVjYWkgaGFkIGNoYXJnZWQgaGVyIHRoYXQgc2hlIHNob3VsZCBub3Qgc2hldyBpdC4KQW5kIE1vcmRlY2FpIHdhbGtlZCBldmVyeSBkYXkgYmVmb3JlIHRoZSBjb3VydCBvZiB0aGUgd29tZW4ncyBob3VzZSwgdG8ga25vdyBob3cgRXN0aGVyIGRpZCwgYW5kIHdoYXQgc2hvdWxkIGJlY29tZSBvZiBoZXIuCk5vdyB3aGVuIGV2ZXJ5IG1haWQncyB0dXJuIHdhcyBjb21lIHRvIGdvIGluIHRvIGtpbmcgQWhhc3VlcnVzLCBhZnRlciB0aGF0IHNoZSBoYWQgYmVlbiB0d2VsdmUgbW9udGhzLCBhY2NvcmRpbmcgdG8gdGhlIG1hbm5lciBvZiB0aGUgd29tZW4sIChmb3Igc28gd2VyZSB0aGUgZGF5cyBvZiB0aGVpciBwdXJpZmljYXRpb25zIGFjY29tcGxpc2hlZCwgdG8gd2l0LCBzaXggbW9udGhzIHdpdGggb2lsIG9mIG15cnJoLCBhbmQgc2l4IG1vbnRocyB3aXRoIHN3ZWV0IG9kb3VycywgYW5kIHdpdGggb3RoZXIgdGhpbmdzIGZvciB0aGUgcHVyaWZ5aW5nIG9mIHRoZSB3b21lbjspClRoZW4gdGh1cyBjYW1lIGV2ZXJ5IG1haWRlbiB1bnRvIHRoZSBraW5nOyB3aGF0c29ldmVyIHNoZSBkZXNpcmVkIHdhcyBnaXZlbiBoZXIgdG8gZ28gd2l0aCBoZXIgb3V0IG9mIHRoZSBob3VzZSBvZiB0aGUgd29tZW4gdW50byB0aGUga2luZydzIGhvdXNlLgpJbiB0aGUgZXZlbmluZyBzaGUgd2VudCwgYW5kIG9uIHRoZSBtb3Jyb3cgc2hlIHJldHVybmVkIGludG8gdGhlIHNlY29uZCBob3VzZSBvZiB0aGUgd29tZW4sIHRvIHRoZSBjdXN0b2R5IG9mIFNoYWFzaGdheiwgdGhlIGtpbmcncyBjaGFtYmVybGFpbiwgd2hpY2gga2VwdCB0aGUgY29uY3ViaW5lczogc2hlIGNhbWUgaW4gdW50byB0aGUga2luZyBubyBtb3JlLCBleGNlcHQgdGhlIGtpbmcgZGVsaWdodGVkIGluIGhlciwgYW5kIHRoYXQgc2hlIHdlcmUgY2FsbGVkIGJ5IG5hbWUuCk5vdyB3aGVuIHRoZSB0dXJuIG9mIEVzdGhlciwgdGhlIGRhdWdodGVyIG9mIEFiaWhhaWwgdGhlIHVuY2xlIG9mIE1vcmRlY2FpLCB3aG8gaGFkIHRha2VuIGhlciBmb3IgaGlzIGRhdWdodGVyLCB3YXMgY29tZSB0byBnbyBpbiB1bnRvIHRoZSBraW5nLCBzaGUgcmVxdWlyZWQgbm90aGluZyBidXQgd2hhdCBIZWdhaSB0aGUga2luZydzIGNoYW1iZXJsYWluLCB0aGUga2VlcGVyIG9mIHRoZSB3b21lbiwgYXBwb2ludGVkLiBBbmQgRXN0aGVyIG9idGFpbmVkIGZhdm91ciBpbiB0aGUgc2lnaHQgb2YgYWxsIHRoZW0gdGhhdCBsb29rZWQgdXBvbiBoZXIuClNvIEVzdGhlciB3YXMgdGFrZW4gdW50byBraW5nIEFoYXN1ZXJ1cyBpbnRvIGhpcyBob3VzZSByb3lhbCBpbiB0aGUgdGVudGggbW9udGgsIHdoaWNoIGlzIHRoZSBtb250aCBUZWJldGgsIGluIHRoZSBzZXZlbnRoIHllYXIgb2YgaGlzIHJlaWduLgpBbmQgdGhlIGtpbmcgbG92ZWQgRXN0aGVyIGFib3ZlIGFsbCB0aGUgd29tZW4sIGFuZCBzaGUgb2J0YWluZWQgZ3JhY2UgYW5kIGZhdm91ciBpbiBoaXMgc2lnaHQgbW9yZSB0aGFuIGFsbCB0aGUgdmlyZ2luczsgc28gdGhhdCBoZSBzZXQgdGhlIHJveWFsIGNyb3duIHVwb24gaGVyIGhlYWQsIGFuZCBtYWRlIGhlciBxdWVlbiBpbnN0ZWFkIG9mIFZhc2h0aS4KVGhlbiB0aGUga2luZyBtYWRlIGEgZ3JlYXQgZmVhc3QgdW50byBhbGwgaGlzIHByaW5jZXMgYW5kIGhpcyBzZXJ2YW50cywgZXZlbiBFc3RoZXIncyBmZWFzdDsgYW5kIGhlIG1hZGUgYSByZWxlYXNlIHRvIHRoZSBwcm92aW5jZXMsIGFuZCBnYXZlIGdpZnRzLCBhY2NvcmRpbmcgdG8gdGhlIHN0YXRlIG9mIHRoZSBraW5nLgpBbmQgd2hlbiB0aGUgdmlyZ2lucyB3ZXJlIGdhdGhlcmVkIHRvZ2V0aGVyIHRoZSBzZWNvbmQgdGltZSwgdGhlbiBNb3JkZWNhaSBzYXQgaW4gdGhlIGtpbmcncyBnYXRlLgpFc3RoZXIgaGFkIG5vdCB5ZXQgc2hld2VkIGhlciBraW5kcmVkIG5vciBoZXIgcGVvcGxlOyBhcyBNb3JkZWNhaSBoYWQgY2hhcmdlZCBoZXI6IGZvciBFc3RoZXIgZGlkIHRoZSBjb21tYW5kbWVudCBvZiBNb3JkZWNhaSwgbGlrZSBhcyB3aGVuIHNoZSB3YXMgYnJvdWdodCB1cCB3aXRoIGhpbS4KSW4gdGhvc2UgZGF5cywgd2hpbGUgTW9yZGVjYWkgc2F0IGluIHRoZSBraW5nJ3MgZ2F0ZSwgdHdvIG9mIHRoZSBraW5nJ3MgY2hhbWJlcmxhaW5zLCBCaWd0aGFuIGFuZCBUZXJlc2gsIG9mIHRob3NlIHdoaWNoIGtlcHQgdGhlIGRvb3IsIHdlcmUgd3JvdGgsIGFuZCBzb3VnaHQgdG8gbGF5IGhhbmRzIG9uIHRoZSBraW5nIEFoYXN1ZXJ1cy4KQW5kIHRoZSB0aGluZyB3YXMga25vd24gdG8gTW9yZGVjYWksIHdobyB0b2xkIGl0IHVudG8gRXN0aGVyIHRoZSBxdWVlbjsgYW5kIEVzdGhlciBjZXJ0aWZpZWQgdGhlIGtpbmcgdGhlcmVvZiBpbiBNb3JkZWNhaSdzIG5hbWUuCkFuZCB3aGVuIGlucXVpc2l0aW9uIHdhcyBtYWRlIG9mIHRoZSBtYXR0ZXIsIGl0IHdhcyBmb3VuZCBvdXQ7IHRoZXJlZm9yZSB0aGV5IHdlcmUgYm90aCBoYW5nZWQgb24gYSB0cmVlOiBhbmQgaXQgd2FzIHdyaXR0ZW4gaW4gdGhlIGJvb2sgb2YgdGhlIGNocm9uaWNsZXMgYmVmb3JlIHRoZSBraW5nLgpBZnRlciB0aGVzZSB0aGluZ3MgZGlkIGtpbmcgQWhhc3VlcnVzIHByb21vdGUgSGFtYW4gdGhlIHNvbiBvZiBIYW1tZWRhdGhhIHRoZSBBZ2FnaXRlLCBhbmQgYWR2YW5jZWQgaGltLCBhbmQgc2V0IGhpcyBzZWF0IGFib3ZlIGFsbCB0aGUgcHJpbmNlcyB0aGF0IHdlcmUgd2l0aCBoaW0uCkFuZCBhbGwgdGhlIGtpbmcncyBzZXJ2YW50cywgdGhhdCB3ZXJlIGluIHRoZSBraW5nJ3MgZ2F0ZSwgYm93ZWQsIGFuZCByZXZlcmVuY2VkIEhhbWFuOiBmb3IgdGhlIGtpbmcgaGFkIHNvIGNvbW1hbmRlZCBjb25jZXJuaW5nIGhpbS4gQnV0IE1vcmRlY2FpIGJvd2VkIG5vdCwgbm9yIGRpZCBoaW0gcmV2ZXJlbmNlLgpUaGVuIHRoZSBraW5nJ3Mgc2VydmFudHMsIHdoaWNoIHdlcmUgaW4gdGhlIGtpbmcncyBnYXRlLCBzYWlkIHVudG8gTW9yZGVjYWksIFdoeSB0cmFuc2dyZXNzZXN0IHRob3UgdGhlIGtpbmcncyBjb21tYW5kbWVudD8KTm93IGl0IGNhbWUgdG8gcGFzcywgd2hlbiB0aGV5IHNwYWtlIGRhaWx5IHVudG8gaGltLCBhbmQgaGUgaGVhcmtlbmVkIG5vdCB1bnRvIHRoZW0sIHRoYXQgdGhleSB0b2xkIEhhbWFuLCB0byBzZWUgd2hldGhlciBNb3JkZWNhaSdzIG1hdHRlcnMgd291bGQgc3RhbmQ6IGZvciBoZSBoYWQgdG9sZCB0aGVtIHRoYXQgaGUgd2FzIGEgSmV3LgpBbmQgd2hlbiBIYW1hbiBzYXcgdGhhdCBNb3JkZWNhaSBib3dlZCBub3QsIG5vciBkaWQgaGltIHJldmVyZW5jZSwgdGhlbiB3YXMgSGFtYW4gZnVsbCBvZiB3cmF0aC4KQW5kIGhlIHRob3VnaHQgc2Nvcm4gdG8gbGF5IGhhbmRzIG9uIE1vcmRlY2FpIGFsb25lOyBmb3IgdGhleSBoYWQgc2hld2VkIGhpbSB0aGUgcGVvcGxlIG9mIE1vcmRlY2FpOiB3aGVyZWZvcmUgSGFtYW4gc291Z2h0IHRvIGRlc3Ryb3kgYWxsIHRoZSBKZXdzIHRoYXQgd2VyZSB0aHJvdWdob3V0IHRoZSB3aG9sZSBraW5nZG9tIG9mIEFoYXN1ZXJ1cywgZXZlbiB0aGUgcGVvcGxlIG9mIE1vcmRlY2FpLgpJbiB0aGUgZmlyc3QgbW9udGgsIHRoYXQgaXMsIHRoZSBtb250aCBOaXNhbiwgaW4gdGhlIHR3ZWxmdGggeWVhciBvZiBraW5nIEFoYXN1ZXJ1cywgdGhleSBjYXN0IFB1ciwgdGhhdCBpcywgdGhlIGxvdCwgYmVmb3JlIEhhbWFuIGZyb20gZGF5IHRvIGRheSwgYW5kIGZyb20gbW9udGggdG8gbW9udGgsIHRvIHRoZSB0d2VsZnRoIG1vbnRoLCB0aGF0IGlzLCB0aGUgbW9udGggQWRhci4KQW5kIEhhbWFuIHNhaWQgdW50byBraW5nIEFoYXN1ZXJ1cywgVGhlcmUgaXMgYSBjZXJ0YWluIHBlb3BsZSBzY2F0dGVyZWQgYWJyb2FkIGFuZCBkaXNwZXJzZWQgYW1vbmcgdGhlIHBlb3BsZSBpbiBhbGwgdGhlIHByb3ZpbmNlcyBvZiB0aHkga2luZ2RvbTsgYW5kIHRoZWlyIGxhd3MgYXJlIGRpdmVyc2UgZnJvbSBhbGwgcGVvcGxlOyBuZWl0aGVyIGtlZXAgdGhleSB0aGUga2luZydzIGxhd3M6IHRoZXJlZm9yZSBpdCBpcyBub3QgZm9yIHRoZSBraW5nJ3MgcHJvZml0IHRvIHN1ZmZlciB0aGVtLgpJZiBpdCBwbGVhc2UgdGhlIGtpbmcsIGxldCBpdCBiZSB3cml0dGVuIHRoYXQgdGhleSBtYXkgYmUgZGVzdHJveWVkOiBhbmQgSSB3aWxsIHBheSB0ZW4gdGhvdXNhbmQgdGFsZW50cyBvZiBzaWx2ZXIgdG8gdGhlIGhhbmRzIG9mIHRob3NlIHRoYXQgaGF2ZSB0aGUgY2hhcmdlIG9mIHRoZSBidXNpbmVzcywgdG8gYnJpbmcgaXQgaW50byB0aGUga2luZydzIHRyZWFzdXJpZXMuCkFuZCB0aGUga2luZyB0b29rIGhpcyByaW5nIGZyb20gaGlzIGhhbmQsIGFuZCBnYXZlIGl0IHVudG8gSGFtYW4gdGhlIHNvbiBvZiBIYW1tZWRhdGhhIHRoZSBBZ2FnaXRlLCB0aGUgSmV3cycgZW5lbXkuCkFuZCB0aGUga2luZyBzYWlkIHVudG8gSGFtYW4sIFRoZSBzaWx2ZXIgaXMgZ2l2ZW4gdG8gdGhlZSwgdGhlIHBlb3BsZSBhbHNvLCB0byBkbyB3aXRoIHRoZW0gYXMgaXQgc2VlbWV0aCBnb29kIHRvIHRoZWUuClRoZW4gd2VyZSB0aGUga2luZydzIHNjcmliZXMgY2FsbGVkIG9uIHRoZSB0aGlydGVlbnRoIGRheSBvZiB0aGUgZmlyc3QgbW9udGgsIGFuZCB0aGVyZSB3YXMgd3JpdHRlbiBhY2NvcmRpbmcgdG8gYWxsIHRoYXQgSGFtYW4gaGFkIGNvbW1hbmRlZCB1bnRvIHRoZSBraW5nJ3MgbGlldXRlbmFudHMsIGFuZCB0byB0aGUgZ292ZXJub3JzIHRoYXQgd2VyZSBvdmVyIGV2ZXJ5IHByb3ZpbmNlLCBhbmQgdG8gdGhlIHJ1bGVycyBvZiBldmVyeSBwZW9wbGUgb2YgZXZlcnkgcHJvdmluY2UgYWNjb3JkaW5nIHRvIHRoZSB3cml0aW5nIHRoZXJlb2YsIGFuZCB0byBldmVyeSBwZW9wbGUgYWZ0ZXIgdGhlaXIgbGFuZ3VhZ2U7IGluIHRoZSBuYW1lIG9mIGtpbmcgQWhhc3VlcnVzIHdhcyBpdCB3cml0dGVuLCBhbmQgc2VhbGVkIHdpdGggdGhlIGtpbmcncyByaW5nLgpBbmQgdGhlIGxldHRlcnMgd2VyZSBzZW50IGJ5IHBvc3RzIGludG8gYWxsIHRoZSBraW5nJ3MgcHJvdmluY2VzLCB0byBkZXN0cm95LCB0byBraWxsLCBhbmQgdG8gY2F1c2UgdG8gcGVyaXNoLCBhbGwgSmV3cywgYm90aCB5b3VuZyBhbmQgb2xkLCBsaXR0bGUgY2hpbGRyZW4gYW5kIHdvbWVuLCBpbiBvbmUgZGF5LCBldmVuIHVwb24gdGhlIHRoaXJ0ZWVudGggZGF5IG9mIHRoZSB0d2VsZnRoIG1vbnRoLCB3aGljaCBpcyB0aGUgbW9udGggQWRhciwgYW5kIHRvIHRha2UgdGhlIHNwb2lsIG9mIHRoZW0gZm9yIGEgcHJleS4KVGhlIGNvcHkgb2YgdGhlIHdyaXRpbmcgZm9yIGEgY29tbWFuZG1lbnQgdG8gYmUgZ2l2ZW4gaW4gZXZlcnkgcHJvdmluY2Ugd2FzIHB1Ymxpc2hlZCB1bnRvIGFsbCBwZW9wbGUsIHRoYXQgdGhleSBzaG91bGQgYmUgcmVhZHkgYWdhaW5zdCB0aGF0IGRheS4KVGhlIHBvc3RzIHdlbnQgb3V0LCBiZWluZyBoYXN0ZW5lZCBieSB0aGUga2luZydzIGNvbW1hbmRtZW50LCBhbmQgdGhlIGRlY3JlZSB3YXMgZ2l2ZW4gaW4gU2h1c2hhbiB0aGUgcGFsYWNlLiBBbmQgdGhlIGtpbmcgYW5kIEhhbWFuIHNhdCBkb3duIHRvIGRyaW5rOyBidXQgdGhlIGNpdHkgU2h1c2hhbiB3YXMgcGVycGxleGVkLgpXaGVuIE1vcmRlY2FpIHBlcmNlaXZlZCBhbGwgdGhhdCB3YXMgZG9uZSwgTW9yZGVjYWkgcmVudCBoaXMgY2xvdGhlcywgYW5kIHB1dCBvbiBzYWNrY2xvdGggd2l0aCBhc2hlcywgYW5kIHdlbnQgb3V0IGludG8gdGhlIG1pZHN0IG9mIHRoZSBjaXR5LCBhbmQgY3JpZWQgd2l0aCBhIGxvdWQgYW5kIGEgYml0dGVyIGNyeTsKQW5kIGNhbWUgZXZlbiBiZWZvcmUgdGhlIGtpbmcncyBnYXRlOiBmb3Igbm9uZSBtaWdodCBlbnRlciBpbnRvIHRoZSBraW5nJ3MgZ2F0ZSBjbG90aGVkIHdpdGggc2Fja2Nsb3RoLgpBbmQgaW4gZXZlcnkgcHJvdmluY2UsIHdoaXRoZXJzb2V2ZXIgdGhlIGtpbmcncyBjb21tYW5kbWVudCBhbmQgaGlzIGRlY3JlZSBjYW1lLCB0aGVyZSB3YXMgZ3JlYXQgbW91cm5pbmcgYW1vbmcgdGhlIEpld3MsIGFuZCBmYXN0aW5nLCBhbmQgd2VlcGluZywgYW5kIHdhaWxpbmc7IGFuZCBtYW55IGxheSBpbiBzYWNrY2xvdGggYW5kIGFzaGVzLgpTbyBFc3RoZXIncyBtYWlkcyBhbmQgaGVyIGNoYW1iZXJsYWlucyBjYW1lIGFuZCB0b2xkIGl0IGhlci4gVGhlbiB3YXMgdGhlIHF1ZWVuIGV4Y2VlZGluZ2x5IGdyaWV2ZWQ7IGFuZCBzaGUgc2VudCByYWltZW50IHRvIGNsb3RoZSBNb3JkZWNhaSwgYW5kIHRvIHRha2UgYXdheSBoaXMgc2Fja2Nsb3RoIGZyb20gaGltOiBidXQgaGUgcmVjZWl2ZWQgaXQgbm90LgpUaGVuIGNhbGxlZCBFc3RoZXIgZm9yIEhhdGFjaCwgb25lIG9mIHRoZSBraW5nJ3MgY2hhbWJlcmxhaW5zLCB3aG9tIGhlIGhhZCBhcHBvaW50ZWQgdG8gYXR0ZW5kIHVwb24gaGVyLCBhbmQgZ2F2ZSBoaW0gYSBjb21tYW5kbWVudCB0byBNb3JkZWNhaSwgdG8ga25vdyB3aGF0IGl0IHdhcywgYW5kIHdoeSBpdCB3YXMuClNvIEhhdGFjaCB3ZW50IGZvcnRoIHRvIE1vcmRlY2FpIHVudG8gdGhlIHN0cmVldCBvZiB0aGUgY2l0eSwgd2hpY2ggd2FzIGJlZm9yZSB0aGUga2luZydzIGdhdGUuCkFuZCBNb3JkZWNhaSB0b2xkIGhpbSBvZiBhbGwgdGhhdCBoYWQgaGFwcGVuZWQgdW50byBoaW0sIGFuZCBvZiB0aGUgc3VtIG9mIHRoZSBtb25leSB0aGF0IEhhbWFuIGhhZCBwcm9taXNlZCB0byBwYXkgdG8gdGhlIGtpbmcncyB0cmVhc3VyaWVzIGZvciB0aGUgSmV3cywgdG8gZGVzdHJveSB0aGVtLgpBbHNvIGhlIGdhdmUgaGltIHRoZSBjb3B5IG9mIHRoZSB3cml0aW5nIG9mIHRoZSBkZWNyZWUgdGhhdCB3YXMgZ2l2ZW4gYXQgU2h1c2hhbiB0byBkZXN0cm95IHRoZW0sIHRvIHNoZXcgaXQgdW50byBFc3RoZXIsIGFuZCB0byBkZWNsYXJlIGl0IHVudG8gaGVyLCBhbmQgdG8gY2hhcmdlIGhlciB0aGF0IHNoZSBzaG91bGQgZ28gaW4gdW50byB0aGUga2luZywgdG8gbWFrZSBzdXBwbGljYXRpb24gdW50byBoaW0sIGFuZCB0byBtYWtlIHJlcXVlc3QgYmVmb3JlIGhpbSBmb3IgaGVyIHBlb3BsZS4KQW5kIEhhdGFjaCBjYW1lIGFuZCB0b2xkIEVzdGhlciB0aGUgd29yZHMgb2YgTW9yZGVjYWkuCkFnYWluIEVzdGhlciBzcGFrZSB1bnRvIEhhdGFjaCwgYW5kIGdhdmUgaGltIGNvbW1hbmRtZW50IHVudG8gTW9yZGVjYWk7CkFsbCB0aGUga2luZydzIHNlcnZhbnRzLCBhbmQgdGhlIHBlb3BsZSBvZiB0aGUga2luZydzIHByb3ZpbmNlcywgZG8ga25vdywgdGhhdCB3aG9zb2V2ZXIsIHdoZXRoZXIgbWFuIG9yIHdvbWVuLCBzaGFsbCBjb21lIHVudG8gdGhlIGtpbmcgaW50byB0aGUgaW5uZXIgY291cnQsIHdobyBpcyBub3QgY2FsbGVkLCB0aGVyZSBpcyBvbmUgbGF3IG9mIGhpcyB0byBwdXQgaGltIHRvIGRlYXRoLCBleGNlcHQgc3VjaCB0byB3aG9tIHRoZSBraW5nIHNoYWxsIGhvbGQgb3V0IHRoZSBnb2xkZW4gc2NlcHRyZSwgdGhhdCBoZSBtYXkgbGl2ZTogYnV0IEkgaGF2ZSBub3QgYmVlbiBjYWxsZWQgdG8gY29tZSBpbiB1bnRvIHRoZSBraW5nIHRoZXNlIHRoaXJ0eSBkYXlzLgpBbmQgdGhleSB0b2xkIHRvIE1vcmRlY2FpIEVzdGhlcidzIHdvcmRzLgpUaGVuIE1vcmRlY2FpIGNvbW1hbmRlZCB0byBhbnN3ZXIgRXN0aGVyLCBUaGluayBub3Qgd2l0aCB0aHlzZWxmIHRoYXQgdGhvdSBzaGFsdCBlc2NhcGUgaW4gdGhlIGtpbmcncyBob3VzZSwgbW9yZSB0aGFuIGFsbCB0aGUgSmV3cy4KRm9yIGlmIHRob3UgYWx0b2dldGhlciBob2xkZXN0IHRoeSBwZWFjZSBhdCB0aGlzIHRpbWUsIHRoZW4gc2hhbGwgdGhlcmUgZW5sYXJnZW1lbnQgYW5kIGRlbGl2ZXJhbmNlIGFyaXNlIHRvIHRoZSBKZXdzIGZyb20gYW5vdGhlciBwbGFjZTsgYnV0IHRob3UgYW5kIHRoeSBmYXRoZXIncyBob3VzZSBzaGFsbCBiZSBkZXN0cm95ZWQ6IGFuZCB3aG8ga25vd2V0aCB3aGV0aGVyIHRob3UgYXJ0IGNvbWUgdG8gdGhlIGtpbmdkb20gZm9yIHN1Y2ggYSB0aW1lIGFzIHRoaXM/ClRoZW4gRXN0aGVyIGJhZGUgdGhlbSByZXR1cm4gTW9yZGVjYWkgdGhpcyBhbnN3ZXIsCkdvLCBnYXRoZXIgdG9nZXRoZXIgYWxsIHRoZSBKZXdzIHRoYXQgYXJlIHByZXNlbnQgaW4gU2h1c2hhbiwgYW5kIGZhc3QgeWUgZm9yIG1lLCBhbmQgbmVpdGhlciBlYXQgbm9yIGRyaW5rIHRocmVlIGRheXMsIG5pZ2h0IG9yIGRheTogSSBhbHNvIGFuZCBteSBtYWlkZW5zIHdpbGwgZmFzdCBsaWtld2lzZTsgYW5kIHNvIHdpbGwgSSBnbyBpbiB1bnRvIHRoZSBraW5nLCB3aGljaCBpcyBub3QgYWNjb3JkaW5nIHRvIHRoZSBsYXc6IGFuZCBpZiBJIHBlcmlzaCwgSSBwZXJpc2guClNvIE1vcmRlY2FpIHdlbnQgaGlzIHdheSwgYW5kIGRpZCBhY2NvcmRpbmcgdG8gYWxsIHRoYXQgRXN0aGVyIGhhZCBjb21tYW5kZWQgaGltLgpOb3cgaXQgY2FtZSB0byBwYXNzIG9uIHRoZSB0aGlyZCBkYXksIHRoYXQgRXN0aGVyIHB1dCBvbiBoZXIgcm95YWwgYXBwYXJlbCwgYW5kIHN0b29kIGluIHRoZSBpbm5lciBjb3VydCBvZiB0aGUga2luZydzIGhvdXNlLCBvdmVyIGFnYWluc3QgdGhlIGtpbmcncyBob3VzZTogYW5kIHRoZSBraW5nIHNhdCB1cG9uIGhpcyByb3lhbCB0aHJvbmUgaW4gdGhlIHJveWFsIGhvdXNlLCBvdmVyIGFnYWluc3QgdGhlIGdhdGUgb2YgdGhlIGhvdXNlLgpBbmQgaXQgd2FzIHNvLCB3aGVuIHRoZSBraW5nIHNhdyBFc3RoZXIgdGhlIHF1ZWVuIHN0YW5kaW5nIGluIHRoZSBjb3VydCwgdGhhdCBzaGUgb2J0YWluZWQgZmF2b3VyIGluIGhpcyBzaWdodDogYW5kIHRoZSBraW5nIGhlbGQgb3V0IHRvIEVzdGhlciB0aGUgZ29sZGVuIHNjZXB0cmUgdGhhdCB3YXMgaW4gaGlzIGhhbmQuIFNvIEVzdGhlciBkcmV3IG5lYXIsIGFuZCB0b3VjaGVkIHRoZSB0b3Agb2YgdGhlIHNjZXB0cmUuClRoZW4gc2FpZCB0aGUga2luZyB1bnRvIGhlciwgV2hhdCB3aWx0IHRob3UsIHF1ZWVuIEVzdGhlcj8gYW5kIHdoYXQgaXMgdGh5IHJlcXVlc3Q/IGl0IHNoYWxsIGJlIGV2ZW4gZ2l2ZW4gdGhlZSB0byB0aGUgaGFsZiBvZiB0aGUga2luZ2RvbS4KQW5kIEVzdGhlciBhbnN3ZXJlZCwgSWYgaXQgc2VlbSBnb29kIHVudG8gdGhlIGtpbmcsIGxldCB0aGUga2luZyBhbmQgSGFtYW4gY29tZSB0aGlzIGRheSB1bnRvIHRoZSBiYW5xdWV0IHRoYXQgSSBoYXZlIHByZXBhcmVkIGZvciBoaW0uClRoZW4gdGhlIGtpbmcgc2FpZCwgQ2F1c2UgSGFtYW4gdG8gbWFrZSBoYXN0ZSwgdGhhdCBoZSBtYXkgZG8gYXMgRXN0aGVyIGhhdGggc2FpZC4gU28gdGhlIGtpbmcgYW5kIEhhbWFuIGNhbWUgdG8gdGhlIGJhbnF1ZXQgdGhhdCBFc3RoZXIgaGFkIHByZXBhcmVkLgpBbmQgdGhlIGtpbmcgc2FpZCB1bnRvIEVzdGhlciBhdCB0aGUgYmFucXVldCBvZiB3aW5lLCBXaGF0IGlzIHRoeSBwZXRpdGlvbj8gYW5kIGl0IHNoYWxsIGJlIGdyYW50ZWQgdGhlZTogYW5kIHdoYXQgaXMgdGh5IHJlcXVlc3Q/IGV2ZW4gdG8gdGhlIGhhbGYgb2YgdGhlIGtpbmdkb20gaXQgc2hhbGwgYmUgcGVyZm9ybWVkLgpUaGVuIGFuc3dlcmVkIEVzdGhlciwgYW5kIHNhaWQsIE15IHBldGl0aW9uIGFuZCBteSByZXF1ZXN0IGlzOwpJZiBJIGhhdmUgZm91bmQgZmF2b3VyIGluIHRoZSBzaWdodCBvZiB0aGUga2luZywgYW5kIGlmIGl0IHBsZWFzZSB0aGUga2luZyB0byBncmFudCBteSBwZXRpdGlvbiwgYW5kIHRvIHBlcmZvcm0gbXkgcmVxdWVzdCwgbGV0IHRoZSBraW5nIGFuZCBIYW1hbiBjb21lIHRvIHRoZSBiYW5xdWV0IHRoYXQgSSBzaGFsbCBwcmVwYXJlIGZvciB0aGVtLCBhbmQgSSB3aWxsIGRvIHRvIG1vcnJvdyBhcyB0aGUga2luZyBoYXRoIHNhaWQuClRoZW4gd2VudCBIYW1hbiBmb3J0aCB0aGF0IGRheSBqb3lmdWwgYW5kIHdpdGggYSBnbGFkIGhlYXJ0OiBidXQgd2hlbiBIYW1hbiBzYXcgTW9yZGVjYWkgaW4gdGhlIGtpbmcncyBnYXRlLCB0aGF0IGhlIHN0b29kIG5vdCB1cCwgbm9yIG1vdmVkIGZvciBoaW0sIGhlIHdhcyBmdWxsIG9mIGluZGlnbmF0aW9uIGFnYWluc3QgTW9yZGVjYWkuCk5ldmVydGhlbGVzcyBIYW1hbiByZWZyYWluZWQgaGltc2VsZjogYW5kIHdoZW4gaGUgY2FtZSBob21lLCBoZSBzZW50IGFuZCBjYWxsZWQgZm9yIGhpcyBmcmllbmRzLCBhbmQgWmVyZXNoIGhpcyB3aWZlLgpBbmQgSGFtYW4gdG9sZCB0aGVtIG9mIHRoZSBnbG9yeSBvZiBoaXMgcmljaGVzLCBhbmQgdGhlIG11bHRpdHVkZSBvZiBoaXMgY2hpbGRyZW4sIGFuZCBhbGwgdGhlIHRoaW5ncyB3aGVyZWluIHRoZSBraW5nIGhhZCBwcm9tb3RlZCBoaW0sIGFuZCBob3cgaGUgaGFkIGFkdmFuY2VkIGhpbSBhYm92ZSB0aGUgcHJpbmNlcyBhbmQgc2VydmFudHMgb2YgdGhlIGtpbmcuCkhhbWFuIHNhaWQgbW9yZW92ZXIsIFllYSwgRXN0aGVyIHRoZSBxdWVlbiBkaWQgbGV0IG5vIG1hbiBjb21lIGluIHdpdGggdGhlIGtpbmcgdW50byB0aGUgYmFucXVldCB0aGF0IHNoZSBoYWQgcHJlcGFyZWQgYnV0IG15c2VsZjsgYW5kIHRvIG1vcnJvdyBhbSBJIGludml0ZWQgdW50byBoZXIgYWxzbyB3aXRoIHRoZSBraW5nLgpZZXQgYWxsIHRoaXMgYXZhaWxldGggbWUgbm90aGluZywgc28gbG9uZyBhcyBJIHNlZSBNb3JkZWNhaSB0aGUgSmV3IHNpdHRpbmcgYXQgdGhlIGtpbmcncyBnYXRlLgpUaGVuIHNhaWQgWmVyZXNoIGhpcyB3aWZlIGFuZCBhbGwgaGlzIGZyaWVuZHMgdW50byBoaW0sIExldCBhIGdhbGxvd3MgYmUgbWFkZSBvZiBmaWZ0eSBjdWJpdHMgaGlnaCwgYW5kIHRvIG1vcnJvdyBzcGVhayB0aG91IHVudG8gdGhlIGtpbmcgdGhhdCBNb3JkZWNhaSBtYXkgYmUgaGFuZ2VkIHRoZXJlb246IHRoZW4gZ28gdGhvdSBpbiBtZXJyaWx5IHdpdGggdGhlIGtpbmcgdW50byB0aGUgYmFucXVldC4gQW5kIHRoZSB0aGluZyBwbGVhc2VkIEhhbWFuOyBhbmQgaGUgY2F1c2VkIHRoZSBnYWxsb3dzIHRvIGJlIG1hZGUuCk9uIHRoYXQgbmlnaHQgY291bGQgbm90IHRoZSBraW5nIHNsZWVwLCBhbmQgaGUgY29tbWFuZGVkIHRvIGJyaW5nIHRoZSBib29rIG9mIHJlY29yZHMgb2YgdGhlIGNocm9uaWNsZXM7IGFuZCB0aGV5IHdlcmUgcmVhZCBiZWZvcmUgdGhlIGtpbmcuCkFuZCBpdCB3YXMgZm91bmQgd3JpdHRlbiwgdGhhdCBNb3JkZWNhaSBoYWQgdG9sZCBvZiBCaWd0aGFuYSBhbmQgVGVyZXNoLCB0d28gb2YgdGhlIGtpbmcncyBjaGFtYmVybGFpbnMsIHRoZSBrZWVwZXJzIG9mIHRoZSBkb29yLCB3aG8gc291Z2h0IHRvIGxheSBoYW5kIG9uIHRoZSBraW5nIEFoYXN1ZXJ1cy4KQW5kIHRoZSBraW5nIHNhaWQsIFdoYXQgaG9ub3VyIGFuZCBkaWduaXR5IGhhdGggYmVlbiBkb25lIHRvIE1vcmRlY2FpIGZvciB0aGlzPyBUaGVuIHNhaWQgdGhlIGtpbmcncyBzZXJ2YW50cyB0aGF0IG1pbmlzdGVyZWQgdW50byBoaW0sIFRoZXJlIGlzIG5vdGhpbmcgZG9uZSBmb3IgaGltLgpBbmQgdGhlIGtpbmcgc2FpZCwgV2hvIGlzIGluIHRoZSBjb3VydD8gTm93IEhhbWFuIHdhcyBjb21lIGludG8gdGhlIG91dHdhcmQgY291cnQgb2YgdGhlIGtpbmcncyBob3VzZSwgdG8gc3BlYWsgdW50byB0aGUga2luZyB0byBoYW5nIE1vcmRlY2FpIG9uIHRoZSBnYWxsb3dzIHRoYXQgaGUgaGFkIHByZXBhcmVkIGZvciBoaW0uCkFuZCB0aGUga2luZydzIHNlcnZhbnRzIHNhaWQgdW50byBoaW0sIEJlaG9sZCwgSGFtYW4gc3RhbmRldGggaW4gdGhlIGNvdXJ0LiBBbmQgdGhlIGtpbmcgc2FpZCwgTGV0IGhpbSBjb21lIGluLgpTbyBIYW1hbiBjYW1lIGluLiBBbmQgdGhlIGtpbmcgc2FpZCB1bnRvIGhpbSwgV2hhdCBzaGFsbCBiZSBkb25lIHVudG8gdGhlIG1hbiB3aG9tIHRoZSBraW5nIGRlbGlnaHRldGggdG8gaG9ub3VyPyBOb3cgSGFtYW4gdGhvdWdodCBpbiBoaXMgaGVhcnQsIFRvIHdob20gd291bGQgdGhlIGtpbmcgZGVsaWdodCB0byBkbyBob25vdXIgbW9yZSB0aGFuIHRvIG15c2VsZj8KQW5kIEhhbWFuIGFuc3dlcmVkIHRoZSBraW5nLCBGb3IgdGhlIG1hbiB3aG9tIHRoZSBraW5nIGRlbGlnaHRldGggdG8gaG9ub3VyLApMZXQgdGhlIHJveWFsIGFwcGFyZWwgYmUgYnJvdWdodCB3aGljaCB0aGUga2luZyB1c2V0aCB0byB3ZWFyLCBhbmQgdGhlIGhvcnNlIHRoYXQgdGhlIGtpbmcgcmlkZXRoIHVwb24sIGFuZCB0aGUgY3Jvd24gcm95YWwgd2hpY2ggaXMgc2V0IHVwb24gaGlzIGhlYWQ6CkFuZCBsZXQgdGhpcyBhcHBhcmVsIGFuZCBob3JzZSBiZSBkZWxpdmVyZWQgdG8gdGhlIGhhbmQgb2Ygb25lIG9mIHRoZSBraW5nJ3MgbW9zdCBub2JsZSBwcmluY2VzLCB0aGF0IHRoZXkgbWF5IGFycmF5IHRoZSBtYW4gd2l0aGFsIHdob20gdGhlIGtpbmcgZGVsaWdodGV0aCB0byBob25vdXIsIGFuZCBicmluZyBoaW0gb24gaG9yc2ViYWNrIHRocm91Z2ggdGhlIHN0cmVldCBvZiB0aGUgY2l0eSwgYW5kIHByb2NsYWltIGJlZm9yZSBoaW0sIFRodXMgc2hhbGwgaXQgYmUgZG9uZSB0byB0aGUgbWFuIHdob20gdGhlIGtpbmcgZGVsaWdodGV0aCB0byBob25vdXIuClRoZW4gdGhlIGtpbmcgc2FpZCB0byBIYW1hbiwgTWFrZSBoYXN0ZSwgYW5kIHRha2UgdGhlIGFwcGFyZWwgYW5kIHRoZSBob3JzZSwgYXMgdGhvdSBoYXN0IHNhaWQsIGFuZCBkbyBldmVuIHNvIHRvIE1vcmRlY2FpIHRoZSBKZXcsIHRoYXQgc2l0dGV0aCBhdCB0aGUga2luZydzIGdhdGU6IGxldCBub3RoaW5nIGZhaWwgb2YgYWxsIHRoYXQgdGhvdSBoYXN0IHNwb2tlbi4KVGhlbiB0b29rIEhhbWFuIHRoZSBhcHBhcmVsIGFuZCB0aGUgaG9yc2UsIGFuZCBhcnJheWVkIE1vcmRlY2FpLCBhbmQgYnJvdWdodCBoaW0gb24gaG9yc2ViYWNrIHRocm91Z2ggdGhlIHN0cmVldCBvZiB0aGUgY2l0eSwgYW5kIHByb2NsYWltZWQgYmVmb3JlIGhpbSwgVGh1cyBzaGFsbCBpdCBiZSBkb25lIHVudG8gdGhlIG1hbiB3aG9tIHRoZSBraW5nIGRlbGlnaHRldGggdG8gaG9ub3VyLgpBbmQgTW9yZGVjYWkgY2FtZSBhZ2FpbiB0byB0aGUga2luZydzIGdhdGUuIEJ1dCBIYW1hbiBoYXN0ZWQgdG8gaGlzIGhvdXNlIG1vdXJuaW5nLCBhbmQgaGF2aW5nIGhpcyBoZWFkIGNvdmVyZWQuCkFuZCBIYW1hbiB0b2xkIFplcmVzaCBoaXMgd2lmZSBhbmQgYWxsIGhpcyBmcmllbmRzIGV2ZXJ5IHRoaW5nIHRoYXQgaGFkIGJlZmFsbGVuIGhpbS4gVGhlbiBzYWlkIGhpcyB3aXNlIG1lbiBhbmQgWmVyZXNoIGhpcyB3aWZlIHVudG8gaGltLCBJZiBNb3JkZWNhaSBiZSBvZiB0aGUgc2VlZCBvZiB0aGUgSmV3cywgYmVmb3JlIHdob20gdGhvdSBoYXN0IGJlZ3VuIHRvIGZhbGwsIHRob3Ugc2hhbHQgbm90IHByZXZhaWwgYWdhaW5zdCBoaW0sIGJ1dCBzaGFsdCBzdXJlbHkgZmFsbCBiZWZvcmUgaGltLgpBbmQgd2hpbGUgdGhleSB3ZXJlIHlldCB0YWxraW5nIHdpdGggaGltLCBjYW1lIHRoZSBraW5nJ3MgY2hhbWJlcmxhaW5zLCBhbmQgaGFzdGVkIHRvIGJyaW5nIEhhbWFuIHVudG8gdGhlIGJhbnF1ZXQgdGhhdCBFc3RoZXIgaGFkIHByZXBhcmVkLgpTbyB0aGUga2luZyBhbmQgSGFtYW4gY2FtZSB0byBiYW5xdWV0IHdpdGggRXN0aGVyIHRoZSBxdWVlbi4KQW5kIHRoZSBraW5nIHNhaWQgYWdhaW4gdW50byBFc3RoZXIgb24gdGhlIHNlY29uZCBkYXkgYXQgdGhlIGJhbnF1ZXQgb2Ygd2luZSwgV2hhdCBpcyB0aHkgcGV0aXRpb24sIHF1ZWVuIEVzdGhlcj8gYW5kIGl0IHNoYWxsIGJlIGdyYW50ZWQgdGhlZTogYW5kIHdoYXQgaXMgdGh5IHJlcXVlc3Q/IGFuZCBpdCBzaGFsbCBiZSBwZXJmb3JtZWQsIGV2ZW4gdG8gdGhlIGhhbGYgb2YgdGhlIGtpbmdkb20uClRoZW4gRXN0aGVyIHRoZSBxdWVlbiBhbnN3ZXJlZCBhbmQgc2FpZCwgSWYgSSBoYXZlIGZvdW5kIGZhdm91ciBpbiB0aHkgc2lnaHQsIE8ga2luZywgYW5kIGlmIGl0IHBsZWFzZSB0aGUga2luZywgbGV0IG15IGxpZmUgYmUgZ2l2ZW4gbWUgYXQgbXkgcGV0aXRpb24sIGFuZCBteSBwZW9wbGUgYXQgbXkgcmVxdWVzdDoKRm9yIHdlIGFyZSBzb2xkLCBJIGFuZCBteSBwZW9wbGUsIHRvIGJlIGRlc3Ryb3llZCwgdG8gYmUgc2xhaW4sIGFuZCB0byBwZXJpc2guIEJ1dCBpZiB3ZSBoYWQgYmVlbiBzb2xkIGZvciBib25kbWVuIGFuZCBib25kd29tZW4sIEkgaGFkIGhlbGQgbXkgdG9uZ3VlLCBhbHRob3VnaCB0aGUgZW5lbXkgY291bGQgbm90IGNvdW50ZXJ2YWlsIHRoZSBraW5nJ3MgZGFtYWdlLgpUaGVuIHRoZSBraW5nIEFoYXN1ZXJ1cyBhbnN3ZXJlZCBhbmQgc2FpZCB1bnRvIEVzdGhlciB0aGUgcXVlZW4sIFdobyBpcyBoZSwgYW5kIHdoZXJlIGlzIGhlLCB0aGF0IGR1cnN0IHByZXN1bWUgaW4gaGlzIGhlYXJ0IHRvIGRvIHNvPwpBbmQgRXN0aGVyIHNhaWQsIFRoZSBhZHZlcnNhcnkgYW5kIGVuZW15IGlzIHRoaXMgd2lja2VkIEhhbWFuLiBUaGVuIEhhbWFuIHdhcyBhZnJhaWQgYmVmb3JlIHRoZSBraW5nIGFuZCB0aGUgcXVlZW4uCkFuZCB0aGUga2luZyBhcmlzaW5nIGZyb20gdGhlIGJhbnF1ZXQgb2Ygd2luZSBpbiBoaXMgd3JhdGggd2VudCBpbnRvIHRoZSBwYWxhY2UgZ2FyZGVuOiBhbmQgSGFtYW4gc3Rvb2QgdXAgdG8gbWFrZSByZXF1ZXN0IGZvciBoaXMgbGlmZSB0byBFc3RoZXIgdGhlIHF1ZWVuOyBmb3IgaGUgc2F3IHRoYXQgdGhlcmUgd2FzIGV2aWwgZGV0ZXJtaW5lZCBhZ2FpbnN0IGhpbSBieSB0aGUga2luZy4KVGhlbiB0aGUga2luZyByZXR1cm5lZCBvdXQgb2YgdGhlIHBhbGFjZSBnYXJkZW4gaW50byB0aGUgcGxhY2Ugb2YgdGhlIGJhbnF1ZXQgb2Ygd2luZTsgYW5kIEhhbWFuIHdhcyBmYWxsZW4gdXBvbiB0aGUgYmVkIHdoZXJlb24gRXN0aGVyIHdhcy4gVGhlbiBzYWlkIHRoZSBraW5nLCBXaWxsIGhlIGZvcmNlIHRoZSBxdWVlbiBhbHNvIGJlZm9yZSBtZSBpbiB0aGUgaG91c2U/IEFzIHRoZSB3b3JkIHdlbnQgb3V0IG9mIGtpbmcncyBtb3V0aCwgdGhleSBjb3ZlcmVkIEhhbWFuJ3MgZmFjZS4KQW5kIEhhcmJvbmFoLCBvbmUgb2YgdGhlIGNoYW1iZXJsYWlucywgc2FpZCBiZWZvcmUgdGhlIGtpbmcsIEJlaG9sZCBhbHNvLCB0aGUgZ2FsbG93cyBmaWZ0eSBjdWJpdHMgaGlnaCwgd2hpY2ggSGFtYW4gaGFkIG1hZGUgZm9yIE1vcmRlY2FpLCB3aG8gc3Bva2VuIGdvb2QgZm9yIHRoZSBraW5nLCBzdGFuZGV0aCBpbiB0aGUgaG91c2Ugb2YgSGFtYW4uIFRoZW4gdGhlIGtpbmcgc2FpZCwgSGFuZyBoaW0gdGhlcmVvbi4KU28gdGhleSBoYW5nZWQgSGFtYW4gb24gdGhlIGdhbGxvd3MgdGhhdCBoZSBoYWQgcHJlcGFyZWQgZm9yIE1vcmRlY2FpLiBUaGVuIHdhcyB0aGUga2luZydzIHdyYXRoIHBhY2lmaWVkLgpPbiB0aGF0IGRheSBkaWQgdGhlIGtpbmcgQWhhc3VlcnVzIGdpdmUgdGhlIGhvdXNlIG9mIEhhbWFuIHRoZSBKZXdzJyBlbmVteSB1bnRvIEVzdGhlciB0aGUgcXVlZW4uIEFuZCBNb3JkZWNhaSBjYW1lIGJlZm9yZSB0aGUga2luZzsgZm9yIEVzdGhlciBoYWQgdG9sZCB3aGF0IGhlIHdhcyB1bnRvIGhlci4KQW5kIHRoZSBraW5nIHRvb2sgb2ZmIGhpcyByaW5nLCB3aGljaCBoZSBoYWQgdGFrZW4gZnJvbSBIYW1hbiwgYW5kIGdhdmUgaXQgdW50byBNb3JkZWNhaS4gQW5kIEVzdGhlciBzZXQgTW9yZGVjYWkgb3ZlciB0aGUgaG91c2Ugb2YgSGFtYW4uCkFuZCBFc3RoZXIgc3Bha2UgeWV0IGFnYWluIGJlZm9yZSB0aGUga2luZywgYW5kIGZlbGwgZG93biBhdCBoaXMgZmVldCwgYW5kIGJlc291Z2h0IGhpbSB3aXRoIHRlYXJzIHRvIHB1dCBhd2F5IHRoZSBtaXNjaGllZiBvZiBIYW1hbiB0aGUgQWdhZ2l0ZSwgYW5kIGhpcyBkZXZpY2UgdGhhdCBoZSBoYWQgZGV2aXNlZCBhZ2FpbnN0IHRoZSBKZXdzLgpUaGVuIHRoZSBraW5nIGhlbGQgb3V0IHRoZSBnb2xkZW4gc2NlcHRyZSB0b3dhcmQgRXN0aGVyLiBTbyBFc3RoZXIgYXJvc2UsIGFuZCBzdG9vZCBiZWZvcmUgdGhlIGtpbmcsCkFuZCBzYWlkLCBJZiBpdCBwbGVhc2UgdGhlIGtpbmcsIGFuZCBpZiBJIGhhdmUgZmF2b3VyIGluIGhpcyBzaWdodCwgYW5kIHRoZSB0aGluZyBzZWVtIHJpZ2h0IGJlZm9yZSB0aGUga2luZywgYW5kIEkgYmUgcGxlYXNpbmcgaW4gaGlzIGV5ZXMsIGxldCBpdCBiZSB3cml0dGVuIHRvIHJldmVyc2UgdGhlIGxldHRlcnMgZGV2aXNlZCBieSBIYW1hbiB0aGUgc29uIG9mIEhhbW1lZGF0aGEgdGhlIEFnYWdpdGUsIHdoaWNoIGhlIHdyb3RlIHRvIGRlc3Ryb3kgdGhlIEpld3Mgd2hpY2ggYXJlIGluIGFsbCB0aGUga2luZydzIHByb3ZpbmNlczoKRm9yIGhvdyBjYW4gSSBlbmR1cmUgdG8gc2VlIHRoZSBldmlsIHRoYXQgc2hhbGwgY29tZSB1bnRvIG15IHBlb3BsZT8gb3IgaG93IGNhbiBJIGVuZHVyZSB0byBzZWUgdGhlIGRlc3RydWN0aW9uIG9mIG15IGtpbmRyZWQ/ClRoZW4gdGhlIGtpbmcgQWhhc3VlcnVzIHNhaWQgdW50byBFc3RoZXIgdGhlIHF1ZWVuIGFuZCB0byBNb3JkZWNhaSB0aGUgSmV3LCBCZWhvbGQsIEkgaGF2ZSBnaXZlbiBFc3RoZXIgdGhlIGhvdXNlIG9mIEhhbWFuLCBhbmQgaGltIHRoZXkgaGF2ZSBoYW5nZWQgdXBvbiB0aGUgZ2FsbG93cywgYmVjYXVzZSBoZSBsYWlkIGhpcyBoYW5kIHVwb24gdGhlIEpld3MuCldyaXRlIHllIGFsc28gZm9yIHRoZSBKZXdzLCBhcyBpdCBsaWtldGggeW91LCBpbiB0aGUga2luZydzIG5hbWUsIGFuZCBzZWFsIGl0IHdpdGggdGhlIGtpbmcncyByaW5nOiBmb3IgdGhlIHdyaXRpbmcgd2hpY2ggaXMgd3JpdHRlbiBpbiB0aGUga2luZydzIG5hbWUsIGFuZCBzZWFsZWQgd2l0aCB0aGUga2luZydzIHJpbmcsIG1heSBubyBtYW4gcmV2ZXJzZS4KVGhlbiB3ZXJlIHRoZSBraW5nJ3Mgc2NyaWJlcyBjYWxsZWQgYXQgdGhhdCB0aW1lIGluIHRoZSB0aGlyZCBtb250aCwgdGhhdCBpcywgdGhlIG1vbnRoIFNpdmFuLCBvbiB0aGUgdGhyZWUgYW5kIHR3ZW50aWV0aCBkYXkgdGhlcmVvZjsgYW5kIGl0IHdhcyB3cml0dGVuIGFjY29yZGluZyB0byBhbGwgdGhhdCBNb3JkZWNhaSBjb21tYW5kZWQgdW50byB0aGUgSmV3cywgYW5kIHRvIHRoZSBsaWV1dGVuYW50cywgYW5kIHRoZSBkZXB1dGllcyBhbmQgcnVsZXJzIG9mIHRoZSBwcm92aW5jZXMgd2hpY2ggYXJlIGZyb20gSW5kaWEgdW50byBFdGhpb3BpYSwgYW4gaHVuZHJlZCB0d2VudHkgYW5kIHNldmVuIHByb3ZpbmNlcywgdW50byBldmVyeSBwcm92aW5jZSBhY2NvcmRpbmcgdG8gdGhlIHdyaXRpbmcgdGhlcmVvZiwgYW5kIHVudG8gZXZlcnkgcGVvcGxlIGFmdGVyIHRoZWlyIGxhbmd1YWdlLCBhbmQgdG8gdGhlIEpld3MgYWNjb3JkaW5nIHRvIHRoZWlyIHdyaXRpbmcsIGFuZCBhY2NvcmRpbmcgdG8gdGhlaXIgbGFuZ3VhZ2UuCkFuZCBoZSB3cm90ZSBpbiB0aGUga2luZyBBaGFzdWVydXMnIG5hbWUsIGFuZCBzZWFsZWQgaXQgd2l0aCB0aGUga2luZydzIHJpbmcsIGFuZCBzZW50IGxldHRlcnMgYnkgcG9zdHMgb24gaG9yc2ViYWNrLCBhbmQgcmlkZXJzIG9uIG11bGVzLCBjYW1lbHMsIGFuZCB5b3VuZyBkcm9tZWRhcmllczoKV2hlcmVpbiB0aGUga2luZyBncmFudGVkIHRoZSBKZXdzIHdoaWNoIHdlcmUgaW4gZXZlcnkgY2l0eSB0byBnYXRoZXIgdGhlbXNlbHZlcyB0b2dldGhlciwgYW5kIHRvIHN0YW5kIGZvciB0aGVpciBsaWZlLCB0byBkZXN0cm95LCB0byBzbGF5IGFuZCB0byBjYXVzZSB0byBwZXJpc2gsIGFsbCB0aGUgcG93ZXIgb2YgdGhlIHBlb3BsZSBhbmQgcHJvdmluY2UgdGhhdCB3b3VsZCBhc3NhdWx0IHRoZW0sIGJvdGggbGl0dGxlIG9uZXMgYW5kIHdvbWVuLCBhbmQgdG8gdGFrZSB0aGUgc3BvaWwgb2YgdGhlbSBmb3IgYSBwcmV5LApVcG9uIG9uZSBkYXkgaW4gYWxsIHRoZSBwcm92aW5jZXMgb2Yga2luZyBBaGFzdWVydXMsIG5hbWVseSwgdXBvbiB0aGUgdGhpcnRlZW50aCBkYXkgb2YgdGhlIHR3ZWxmdGggbW9udGgsIHdoaWNoIGlzIHRoZSBtb250aCBBZGFyLgpUaGUgY29weSBvZiB0aGUgd3JpdGluZyBmb3IgYSBjb21tYW5kbWVudCB0byBiZSBnaXZlbiBpbiBldmVyeSBwcm92aW5jZSB3YXMgcHVibGlzaGVkIHVudG8gYWxsIHBlb3BsZSwgYW5kIHRoYXQgdGhlIEpld3Mgc2hvdWxkIGJlIHJlYWR5IGFnYWluc3QgdGhhdCBkYXkgdG8gYXZlbmdlIHRoZW1zZWx2ZXMgb24gdGhlaXIgZW5lbWllcy4KU28gdGhlIHBvc3RzIHRoYXQgcm9kZSB1cG9uIG11bGVzIGFuZCBjYW1lbHMgd2VudCBvdXQsIGJlaW5nIGhhc3RlbmVkIGFuZCBwcmVzc2VkIG9uIGJ5IHRoZSBraW5nJ3MgY29tbWFuZG1lbnQuIEFuZCB0aGUgZGVjcmVlIHdhcyBnaXZlbiBhdCBTaHVzaGFuIHRoZSBwYWxhY2UuCkFuZCBNb3JkZWNhaSB3ZW50IG91dCBmcm9tIHRoZSBwcmVzZW5jZSBvZiB0aGUga2luZyBpbiByb3lhbCBhcHBhcmVsIG9mIGJsdWUgYW5kIHdoaXRlLCBhbmQgd2l0aCBhIGdyZWF0IGNyb3duIG9mIGdvbGQsIGFuZCB3aXRoIGEgZ2FybWVudCBvZiBmaW5lIGxpbmVuIGFuZCBwdXJwbGU6IGFuZCB0aGUgY2l0eSBvZiBTaHVzaGFuIHJlam9pY2VkIGFuZCB3YXMgZ2xhZC4KVGhlIEpld3MgaGFkIGxpZ2h0LCBhbmQgZ2xhZG5lc3MsIGFuZCBqb3ksIGFuZCBob25vdXIuCkFuZCBpbiBldmVyeSBwcm92aW5jZSwgYW5kIGluIGV2ZXJ5IGNpdHksIHdoaXRoZXJzb2V2ZXIgdGhlIGtpbmcncyBjb21tYW5kbWVudCBhbmQgaGlzIGRlY3JlZSBjYW1lLCB0aGUgSmV3cyBoYWQgam95IGFuZCBnbGFkbmVzcywgYSBmZWFzdCBhbmQgYSBnb29kIGRheS4gQW5kIG1hbnkgb2YgdGhlIHBlb3BsZSBvZiB0aGUgbGFuZCBiZWNhbWUgSmV3czsgZm9yIHRoZSBmZWFyIG9mIHRoZSBKZXdzIGZlbGwgdXBvbiB0aGVtLgpOb3cgaW4gdGhlIHR3ZWxmdGggbW9udGgsIHRoYXQgaXMsIHRoZSBtb250aCBBZGFyLCBvbiB0aGUgdGhpcnRlZW50aCBkYXkgb2YgdGhlIHNhbWUsIHdoZW4gdGhlIGtpbmcncyBjb21tYW5kbWVudCBhbmQgaGlzIGRlY3JlZSBkcmV3IG5lYXIgdG8gYmUgcHV0IGluIGV4ZWN1dGlvbiwgaW4gdGhlIGRheSB0aGF0IHRoZSBlbmVtaWVzIG9mIHRoZSBKZXdzIGhvcGVkIHRvIGhhdmUgcG93ZXIgb3ZlciB0aGVtLCAodGhvdWdoIGl0IHdhcyB0dXJuZWQgdG8gdGhlIGNvbnRyYXJ5LCB0aGF0IHRoZSBKZXdzIGhhZCBydWxlIG92ZXIgdGhlbSB0aGF0IGhhdGVkIHRoZW07KQpUaGUgSmV3cyBnYXRoZXJlZCB0aGVtc2VsdmVzIHRvZ2V0aGVyIGluIHRoZWlyIGNpdGllcyB0aHJvdWdob3V0IGFsbCB0aGUgcHJvdmluY2VzIG9mIHRoZSBraW5nIEFoYXN1ZXJ1cywgdG8gbGF5IGhhbmQgb24gc3VjaCBhcyBzb3VnaHQgdGhlaXIgaHVydDogYW5kIG5vIG1hbiBjb3VsZCB3aXRoc3RhbmQgdGhlbTsgZm9yIHRoZSBmZWFyIG9mIHRoZW0gZmVsbCB1cG9uIGFsbCBwZW9wbGUuCkFuZCBhbGwgdGhlIHJ1bGVycyBvZiB0aGUgcHJvdmluY2VzLCBhbmQgdGhlIGxpZXV0ZW5hbnRzLCBhbmQgdGhlIGRlcHV0aWVzLCBhbmQgb2ZmaWNlcnMgb2YgdGhlIGtpbmcsIGhlbHBlZCB0aGUgSmV3czsgYmVjYXVzZSB0aGUgZmVhciBvZiBNb3JkZWNhaSBmZWxsIHVwb24gdGhlbS4KRm9yIE1vcmRlY2FpIHdhcyBncmVhdCBpbiB0aGUga2luZydzIGhvdXNlLCBhbmQgaGlzIGZhbWUgd2VudCBvdXQgdGhyb3VnaG91dCBhbGwgdGhlIHByb3ZpbmNlczogZm9yIHRoaXMgbWFuIE1vcmRlY2FpIHdheGVkIGdyZWF0ZXIgYW5kIGdyZWF0ZXIuClRodXMgdGhlIEpld3Mgc21vdGUgYWxsIHRoZWlyIGVuZW1pZXMgd2l0aCB0aGUgc3Ryb2tlIG9mIHRoZSBzd29yZCwgYW5kIHNsYXVnaHRlciwgYW5kIGRlc3RydWN0aW9uLCBhbmQgZGlkIHdoYXQgdGhleSB3b3VsZCB1bnRvIHRob3NlIHRoYXQgaGF0ZWQgdGhlbS4KQW5kIGluIFNodXNoYW4gdGhlIHBhbGFjZSB0aGUgSmV3cyBzbGV3IGFuZCBkZXN0cm95ZWQgZml2ZSBodW5kcmVkIG1lbi4KQW5kIFBhcnNoYW5kYXRoYSwgYW5kIERhbHBob24sIGFuZCBBc3BhdGhhLApBbmQgUG9yYXRoYSwgYW5kIEFkYWxpYSwgYW5kIEFyaWRhdGhhLApBbmQgUGFybWFzaHRhLCBhbmQgQXJpc2FpLCBhbmQgQXJpZGFpLCBhbmQgVmFqZXphdGhhLApUaGUgdGVuIHNvbnMgb2YgSGFtYW4gdGhlIHNvbiBvZiBIYW1tZWRhdGhhLCB0aGUgZW5lbXkgb2YgdGhlIEpld3MsIHNsZXcgdGhleTsgYnV0IG9uIHRoZSBzcG9pbCBsYWlkIHRoZXkgbm90IHRoZWlyIGhhbmQuCk9uIHRoYXQgZGF5IHRoZSBudW1iZXIgb2YgdGhvc2UgdGhhdCB3ZXJlIHNsYWluIGluIFNodXNoYW4gdGhlIHBhbGFjZSB3YXMgYnJvdWdodCBiZWZvcmUgdGhlIGtpbmcuCkFuZCB0aGUga2luZyBzYWlkIHVudG8gRXN0aGVyIHRoZSBxdWVlbiwgVGhlIEpld3MgaGF2ZSBzbGFpbiBhbmQgZGVzdHJveWVkIGZpdmUgaHVuZHJlZCBtZW4gaW4gU2h1c2hhbiB0aGUgcGFsYWNlLCBhbmQgdGhlIHRlbiBzb25zIG9mIEhhbWFuOyB3aGF0IGhhdmUgdGhleSBkb25lIGluIHRoZSByZXN0IG9mIHRoZSBraW5nJ3MgcHJvdmluY2VzPyBub3cgd2hhdCBpcyB0aHkgcGV0aXRpb24/IGFuZCBpdCBzaGFsbCBiZSBncmFudGVkIHRoZWU6IG9yIHdoYXQgaXMgdGh5IHJlcXVlc3QgZnVydGhlcj8gYW5kIGl0IHNoYWxsIGJlIGRvbmUuClRoZW4gc2FpZCBFc3RoZXIsIElmIGl0IHBsZWFzZSB0aGUga2luZywgbGV0IGl0IGJlIGdyYW50ZWQgdG8gdGhlIEpld3Mgd2hpY2ggYXJlIGluIFNodXNoYW4gdG8gZG8gdG8gbW9ycm93IGFsc28gYWNjb3JkaW5nIHVudG8gdGhpcyBkYXkncyBkZWNyZWUsIGFuZCBsZXQgSGFtYW4ncyB0ZW4gc29ucyBiZSBoYW5nZWQgdXBvbiB0aGUgZ2FsbG93cy4KQW5kIHRoZSBraW5nIGNvbW1hbmRlZCBpdCBzbyB0byBiZSBkb25lOiBhbmQgdGhlIGRlY3JlZSB3YXMgZ2l2ZW4gYXQgU2h1c2hhbjsgYW5kIHRoZXkgaGFuZ2VkIEhhbWFuJ3MgdGVuIHNvbnMuCkZvciB0aGUgSmV3cyB0aGF0IHdlcmUgaW4gU2h1c2hhbiBnYXRoZXJlZCB0aGVtc2VsdmVzIHRvZ2V0aGVyIG9uIHRoZSBmb3VydGVlbnRoIGRheSBhbHNvIG9mIHRoZSBtb250aCBBZGFyLCBhbmQgc2xldyB0aHJlZSBodW5kcmVkIG1lbiBhdCBTaHVzaGFuOyBidXQgb24gdGhlIHByZXkgdGhleSBsYWlkIG5vdCB0aGVpciBoYW5kLgpCdXQgdGhlIG90aGVyIEpld3MgdGhhdCB3ZXJlIGluIHRoZSBraW5nJ3MgcHJvdmluY2VzIGdhdGhlcmVkIHRoZW1zZWx2ZXMgdG9nZXRoZXIsIGFuZCBzdG9vZCBmb3IgdGhlaXIgbGl2ZXMsIGFuZCBoYWQgcmVzdCBmcm9tIHRoZWlyIGVuZW1pZXMsIGFuZCBzbGV3IG9mIHRoZWlyIGZvZXMgc2V2ZW50eSBhbmQgZml2ZSB0aG91c2FuZCwgYnV0IHRoZXkgbGFpZCBub3QgdGhlaXIgaGFuZHMgb24gdGhlIHByZXksCk9uIHRoZSB0aGlydGVlbnRoIGRheSBvZiB0aGUgbW9udGggQWRhcjsgYW5kIG9uIHRoZSBmb3VydGVlbnRoIGRheSBvZiB0aGUgc2FtZSByZXN0ZWQgdGhleSwgYW5kIG1hZGUgaXQgYSBkYXkgb2YgZmVhc3RpbmcgYW5kIGdsYWRuZXNzLgpCdXQgdGhlIEpld3MgdGhhdCB3ZXJlIGF0IFNodXNoYW4gYXNzZW1ibGVkIHRvZ2V0aGVyIG9uIHRoZSB0aGlydGVlbnRoIGRheSB0aGVyZW9mLCBhbmQgb24gdGhlIGZvdXJ0ZWVudGggdGhlcmVvZjsgYW5kIG9uIHRoZSBmaWZ0ZWVudGggZGF5IG9mIHRoZSBzYW1lIHRoZXkgcmVzdGVkLCBhbmQgbWFkZSBpdCBhIGRheSBvZiBmZWFzdGluZyBhbmQgZ2xhZG5lc3MuClRoZXJlZm9yZSB0aGUgSmV3cyBvZiB0aGUgdmlsbGFnZXMsIHRoYXQgZHdlbHQgaW4gdGhlIHVud2FsbGVkIHRvd25zLCBtYWRlIHRoZSBmb3VydGVlbnRoIGRheSBvZiB0aGUgbW9udGggQWRhciBhIGRheSBvZiBnbGFkbmVzcyBhbmQgZmVhc3RpbmcsIGFuZCBhIGdvb2QgZGF5LCBhbmQgb2Ygc2VuZGluZyBwb3J0aW9ucyBvbmUgdG8gYW5vdGhlci4KQW5kIE1vcmRlY2FpIHdyb3RlIHRoZXNlIHRoaW5ncywgYW5kIHNlbnQgbGV0dGVycyB1bnRvIGFsbCB0aGUgSmV3cyB0aGF0IHdlcmUgaW4gYWxsIHRoZSBwcm92aW5jZXMgb2YgdGhlIGtpbmcgQWhhc3VlcnVzLCBib3RoIG5pZ2ggYW5kIGZhciwKVG8gc3RhYmxpc2ggdGhpcyBhbW9uZyB0aGVtLCB0aGF0IHRoZXkgc2hvdWxkIGtlZXAgdGhlIGZvdXJ0ZWVudGggZGF5IG9mIHRoZSBtb250aCBBZGFyLCBhbmQgdGhlIGZpZnRlZW50aCBkYXkgb2YgdGhlIHNhbWUsIHllYXJseSwKQXMgdGhlIGRheXMgd2hlcmVpbiB0aGUgSmV3cyByZXN0ZWQgZnJvbSB0aGVpciBlbmVtaWVzLCBhbmQgdGhlIG1vbnRoIHdoaWNoIHdhcyB0dXJuZWQgdW50byB0aGVtIGZyb20gc29ycm93IHRvIGpveSwgYW5kIGZyb20gbW91cm5pbmcgaW50byBhIGdvb2QgZGF5OiB0aGF0IHRoZXkgc2hvdWxkIG1ha2UgdGhlbSBkYXlzIG9mIGZlYXN0aW5nIGFuZCBqb3ksIGFuZCBvZiBzZW5kaW5nIHBvcnRpb25zIG9uZSB0byBhbm90aGVyLCBhbmQgZ2lmdHMgdG8gdGhlIHBvb3IuCkFuZCB0aGUgSmV3cyB1bmRlcnRvb2sgdG8gZG8gYXMgdGhleSBoYWQgYmVndW4sIGFuZCBhcyBNb3JkZWNhaSBoYWQgd3JpdHRlbiB1bnRvIHRoZW07CkJlY2F1c2UgSGFtYW4gdGhlIHNvbiBvZiBIYW1tZWRhdGhhLCB0aGUgQWdhZ2l0ZSwgdGhlIGVuZW15IG9mIGFsbCB0aGUgSmV3cywgaGFkIGRldmlzZWQgYWdhaW5zdCB0aGUgSmV3cyB0byBkZXN0cm95IHRoZW0sIGFuZCBoYWQgY2FzdCBQdXIsIHRoYXQgaXMsIHRoZSBsb3QsIHRvIGNvbnN1bWUgdGhlbSwgYW5kIHRvIGRlc3Ryb3kgdGhlbTsKQnV0IHdoZW4gRXN0aGVyIGNhbWUgYmVmb3JlIHRoZSBraW5nLCBoZSBjb21tYW5kZWQgYnkgbGV0dGVycyB0aGF0IGhpcyB3aWNrZWQgZGV2aWNlLCB3aGljaCBoZSBkZXZpc2VkIGFnYWluc3QgdGhlIEpld3MsIHNob3VsZCByZXR1cm4gdXBvbiBoaXMgb3duIGhlYWQsIGFuZCB0aGF0IGhlIGFuZCBoaXMgc29ucyBzaG91bGQgYmUgaGFuZ2VkIG9uIHRoZSBnYWxsb3dzLgpXaGVyZWZvcmUgdGhleSBjYWxsZWQgdGhlc2UgZGF5cyBQdXJpbSBhZnRlciB0aGUgbmFtZSBvZiBQdXIuIFRoZXJlZm9yZSBmb3IgYWxsIHRoZSB3b3JkcyBvZiB0aGlzIGxldHRlciwgYW5kIG9mIHRoYXQgd2hpY2ggdGhleSBoYWQgc2VlbiBjb25jZXJuaW5nIHRoaXMgbWF0dGVyLCBhbmQgd2hpY2ggaGFkIGNvbWUgdW50byB0aGVtLApUaGUgSmV3cyBvcmRhaW5lZCwgYW5kIHRvb2sgdXBvbiB0aGVtLCBhbmQgdXBvbiB0aGVpciBzZWVkLCBhbmQgdXBvbiBhbGwgc3VjaCBhcyBqb2luZWQgdGhlbXNlbHZlcyB1bnRvIHRoZW0sIHNvIGFzIGl0IHNob3VsZCBub3QgZmFpbCwgdGhhdCB0aGV5IHdvdWxkIGtlZXAgdGhlc2UgdHdvIGRheXMgYWNjb3JkaW5nIHRvIHRoZWlyIHdyaXRpbmcsIGFuZCBhY2NvcmRpbmcgdG8gdGhlaXIgYXBwb2ludGVkIHRpbWUgZXZlcnkgeWVhcjsKQW5kIHRoYXQgdGhlc2UgZGF5cyBzaG91bGQgYmUgcmVtZW1iZXJlZCBhbmQga2VwdCB0aHJvdWdob3V0IGV2ZXJ5IGdlbmVyYXRpb24sIGV2ZXJ5IGZhbWlseSwgZXZlcnkgcHJvdmluY2UsIGFuZCBldmVyeSBjaXR5OyBhbmQgdGhhdCB0aGVzZSBkYXlzIG9mIFB1cmltIHNob3VsZCBub3QgZmFpbCBmcm9tIGFtb25nIHRoZSBKZXdzLCBub3IgdGhlIG1lbW9yaWFsIG9mIHRoZW0gcGVyaXNoIGZyb20gdGhlaXIgc2VlZC4KVGhlbiBFc3RoZXIgdGhlIHF1ZWVuLCB0aGUgZGF1Z2h0ZXIgb2YgQWJpaGFpbCwgYW5kIE1vcmRlY2FpIHRoZSBKZXcsIHdyb3RlIHdpdGggYWxsIGF1dGhvcml0eSwgdG8gY29uZmlybSB0aGlzIHNlY29uZCBsZXR0ZXIgb2YgUHVyaW0uCkFuZCBoZSBzZW50IHRoZSBsZXR0ZXJzIHVudG8gYWxsIHRoZSBKZXdzLCB0byB0aGUgaHVuZHJlZCB0d2VudHkgYW5kIHNldmVuIHByb3ZpbmNlcyBvZiB0aGUga2luZ2RvbSBvZiBBaGFzdWVydXMsIHdpdGggd29yZHMgb2YgcGVhY2UgYW5kIHRydXRoLApUbyBjb25maXJtIHRoZXNlIGRheXMgb2YgUHVyaW0gaW4gdGhlaXIgdGltZXMgYXBwb2ludGVkLCBhY2NvcmRpbmcgYXMgTW9yZGVjYWkgdGhlIEpldyBhbmQgRXN0aGVyIHRoZSBxdWVlbiBoYWQgZW5qb2luZWQgdGhlbSwgYW5kIGFzIHRoZXkgaGFkIGRlY3JlZWQgZm9yIHRoZW1zZWx2ZXMgYW5kIGZvciB0aGVpciBzZWVkLCB0aGUgbWF0dGVycyBvZiB0aGUgZmFzdGluZ3MgYW5kIHRoZWlyIGNyeS4KQW5kIHRoZSBkZWNyZWUgb2YgRXN0aGVyIGNvbmZpcm1lZCB0aGVzZSBtYXR0ZXJzIG9mIFB1cmltOyBhbmQgaXQgd2FzIHdyaXR0ZW4gaW4gdGhlIGJvb2suCkFuZCB0aGUga2luZyBBaGFzdWVydXMgbGFpZCBhIHRyaWJ1dGUgdXBvbiB0aGUgbGFuZCwgYW5kIHVwb24gdGhlIGlzbGVzIG9mIHRoZSBzZWEuCkFuZCBhbGwgdGhlIGFjdHMgb2YgaGlzIHBvd2VyIGFuZCBvZiBoaXMgbWlnaHQsIGFuZCB0aGUgZGVjbGFyYXRpb24gb2YgdGhlIGdyZWF0bmVzcyBvZiBNb3JkZWNhaSwgd2hlcmV1bnRvIHRoZSBraW5nIGFkdmFuY2VkIGhpbSwgYXJlIHRoZXkgbm90IHdyaXR0ZW4gaW4gdGhlIGJvb2sgb2YgdGhlIGNocm9uaWNsZXMgb2YgdGhlIGtpbmdzIG9mIE1lZGlhIGFuZCBQZXJzaWE/CkZvciBNb3JkZWNhaSB0aGUgSmV3IHdhcyBuZXh0IHVudG8ga2luZyBBaGFzdWVydXMsIGFuZCBncmVhdCBhbW9uZyB0aGUgSmV3cywgYW5kIGFjY2VwdGVkIG9mIHRoZSBtdWx0aXR1ZGUgb2YgaGlzIGJyZXRocmVuLCBzZWVraW5nIHRoZSB3ZWFsdGggb2YgaGlzIHBlb3BsZSwgYW5kIHNwZWFraW5nIHBlYWNlIHRvIGFsbCBoaXMgc2VlZC4KVGhlcmUgd2FzIGEgbWFuIGluIHRoZSBsYW5kIG9mIFV6LCB3aG9zZSBuYW1lIHdhcyBKb2I7IGFuZCB0aGF0IG1hbiB3YXMgcGVyZmVjdCBhbmQgdXByaWdodCwgYW5kIG9uZSB0aGF0IGZlYXJlZCBHb2QsIGFuZCBlc2NoZXdlZCBldmlsLgpBbmQgdGhlcmUgd2VyZSBib3JuIHVudG8gaGltIHNldmVuIHNvbnMgYW5kIHRocmVlIGRhdWdodGVycy4KSGlzIHN1YnN0YW5jZSBhbHNvIHdhcyBzZXZlbiB0aG91c2FuZCBzaGVlcCwgYW5kIHRocmVlIHRob3VzYW5kIGNhbWVscywgYW5kIGZpdmUgaHVuZHJlZCB5b2tlIG9mIG94ZW4sIGFuZCBmaXZlIGh1bmRyZWQgc2hlIGFzc2VzLCBhbmQgYSB2ZXJ5IGdyZWF0IGhvdXNlaG9sZDsgc28gdGhhdCB0aGlzIG1hbiB3YXMgdGhlIGdyZWF0ZXN0IG9mIGFsbCB0aGUgbWVuIG9mIHRoZSBlYXN0LgpBbmQgaGlzIHNvbnMgd2VudCBhbmQgZmVhc3RlZCBpbiB0aGVpciBob3VzZXMsIGV2ZXJ5IG9uZSBoaXMgZGF5OyBhbmQgc2VudCBhbmQgY2FsbGVkIGZvciB0aGVpciB0aHJlZSBzaXN0ZXJzIHRvIGVhdCBhbmQgdG8gZHJpbmsgd2l0aCB0aGVtLgpBbmQgaXQgd2FzIHNvLCB3aGVuIHRoZSBkYXlzIG9mIHRoZWlyIGZlYXN0aW5nIHdlcmUgZ29uZSBhYm91dCwgdGhhdCBKb2Igc2VudCBhbmQgc2FuY3RpZmllZCB0aGVtLCBhbmQgcm9zZSB1cCBlYXJseSBpbiB0aGUgbW9ybmluZywgYW5kIG9mZmVyZWQgYnVybnQgb2ZmZXJpbmdzIGFjY29yZGluZyB0byB0aGUgbnVtYmVyIG9mIHRoZW0gYWxsOiBmb3IgSm9iIHNhaWQsIEl0IG1heSBiZSB0aGF0IG15IHNvbnMgaGF2ZSBzaW5uZWQsIGFuZCBjdXJzZWQgR29kIGluIHRoZWlyIGhlYXJ0cy4gVGh1cyBkaWQgSm9iIGNvbnRpbnVhbGx5LgpOb3cgdGhlcmUgd2FzIGEgZGF5IHdoZW4gdGhlIHNvbnMgb2YgR29kIGNhbWUgdG8gcHJlc2VudCB0aGVtc2VsdmVzIGJlZm9yZSB0aGUgTE9SRCwgYW5kIFNhdGFuIGNhbWUgYWxzbyBhbW9uZyB0aGVtLgpBbmQgdGhlIExPUkQgc2FpZCB1bnRvIFNhdGFuLCBXaGVuY2UgY29tZXN0IHRob3U/IFRoZW4gU2F0YW4gYW5zd2VyZWQgdGhlIExPUkQsIGFuZCBzYWlkLCBGcm9tIGdvaW5nIHRvIGFuZCBmcm8gaW4gdGhlIGVhcnRoLCBhbmQgZnJvbSB3YWxraW5nIHVwIGFuZCBkb3duIGluIGl0LgpBbmQgdGhlIExPUkQgc2FpZCB1bnRvIFNhdGFuLCBIYXN0IHRob3UgY29uc2lkZXJlZCBteSBzZXJ2YW50IEpvYiwgdGhhdCB0aGVyZSBpcyBub25lIGxpa2UgaGltIGluIHRoZSBlYXJ0aCwgYSBwZXJmZWN0IGFuZCBhbiB1cHJpZ2h0IG1hbiwgb25lIHRoYXQgZmVhcmV0aCBHb2QsIGFuZCBlc2NoZXdldGggZXZpbD8KVGhlbiBTYXRhbiBhbnN3ZXJlZCB0aGUgTE9SRCwgYW5kIHNhaWQsIERvdGggSm9iIGZlYXIgR29kIGZvciBub3VnaHQ/Ckhhc3Qgbm90IHRob3UgbWFkZSBhbiBoZWRnZSBhYm91dCBoaW0sIGFuZCBhYm91dCBoaXMgaG91c2UsIGFuZCBhYm91dCBhbGwgdGhhdCBoZSBoYXRoIG9uIGV2ZXJ5IHNpZGU/IHRob3UgaGFzdCBibGVzc2VkIHRoZSB3b3JrIG9mIGhpcyBoYW5kcywgYW5kIGhpcyBzdWJzdGFuY2UgaXMgaW5jcmVhc2VkIGluIHRoZSBsYW5kLgpCdXQgcHV0IGZvcnRoIHRoaW5lIGhhbmQgbm93LCBhbmQgdG91Y2ggYWxsIHRoYXQgaGUgaGF0aCwgYW5kIGhlIHdpbGwgY3Vyc2UgdGhlZSB0byB0aHkgZmFjZS4KQW5kIHRoZSBMT1JEIHNhaWQgdW50byBTYXRhbiwgQmVob2xkLCBhbGwgdGhhdCBoZSBoYXRoIGlzIGluIHRoeSBwb3dlcjsgb25seSB1cG9uIGhpbXNlbGYgcHV0IG5vdCBmb3J0aCB0aGluZSBoYW5kLiBTbyBTYXRhbiB3ZW50IGZvcnRoIGZyb20gdGhlIHByZXNlbmNlIG9mIHRoZSBMT1JELgpBbmQgdGhlcmUgd2FzIGEgZGF5IHdoZW4gaGlzIHNvbnMgYW5kIGhpcyBkYXVnaHRlcnMgd2VyZSBlYXRpbmcgYW5kIGRyaW5raW5nIHdpbmUgaW4gdGhlaXIgZWxkZXN0IGJyb3RoZXIncyBob3VzZToKQW5kIHRoZXJlIGNhbWUgYSBtZXNzZW5nZXIgdW50byBKb2IsIGFuZCBzYWlkLCBUaGUgb3hlbiB3ZXJlIHBsb3dpbmcsIGFuZCB0aGUgYXNzZXMgZmVlZGluZyBiZXNpZGUgdGhlbToKQW5kIHRoZSBTYWJlYW5zIGZlbGwgdXBvbiB0aGVtLCBhbmQgdG9vayB0aGVtIGF3YXk7IHllYSwgdGhleSBoYXZlIHNsYWluIHRoZSBzZXJ2YW50cyB3aXRoIHRoZSBlZGdlIG9mIHRoZSBzd29yZDsgYW5kIEkgb25seSBhbSBlc2NhcGVkIGFsb25lIHRvIHRlbGwgdGhlZS4KV2hpbGUgaGUgd2FzIHlldCBzcGVha2luZywgdGhlcmUgY2FtZSBhbHNvIGFub3RoZXIsIGFuZCBzYWlkLCBUaGUgZmlyZSBvZiBHb2QgaXMgZmFsbGVuIGZyb20gaGVhdmVuLCBhbmQgaGF0aCBidXJuZWQgdXAgdGhlIHNoZWVwLCBhbmQgdGhlIHNlcnZhbnRzLCBhbmQgY29uc3VtZWQgdGhlbTsgYW5kIEkgb25seSBhbSBlc2NhcGVkIGFsb25lIHRvIHRlbGwgdGhlZS4KV2hpbGUgaGUgd2FzIHlldCBzcGVha2luZywgdGhlcmUgY2FtZSBhbHNvIGFub3RoZXIsIGFuZCBzYWlkLCBUaGUgQ2hhbGRlYW5zIG1hZGUgb3V0IHRocmVlIGJhbmRzLCBhbmQgZmVsbCB1cG9uIHRoZSBjYW1lbHMsIGFuZCBoYXZlIGNhcnJpZWQgdGhlbSBhd2F5LCB5ZWEsIGFuZCBzbGFpbiB0aGUgc2VydmFudHMgd2l0aCB0aGUgZWRnZSBvZiB0aGUgc3dvcmQ7IGFuZCBJIG9ubHkgYW0gZXNjYXBlZCBhbG9uZSB0byB0ZWxsIHRoZWUuCldoaWxlIGhlIHdhcyB5ZXQgc3BlYWtpbmcsIHRoZXJlIGNhbWUgYWxzbyBhbm90aGVyLCBhbmQgc2FpZCwgVGh5IHNvbnMgYW5kIHRoeSBkYXVnaHRlcnMgd2VyZSBlYXRpbmcgYW5kIGRyaW5raW5nIHdpbmUgaW4gdGhlaXIgZWxkZXN0IGJyb3RoZXIncyBob3VzZToKQW5kLCBiZWhvbGQsIHRoZXJlIGNhbWUgYSBncmVhdCB3aW5kIGZyb20gdGhlIHdpbGRlcm5lc3MsIGFuZCBzbW90ZSB0aGUgZm91ciBjb3JuZXJzIG9mIHRoZSBob3VzZSwgYW5kIGl0IGZlbGwgdXBvbiB0aGUgeW91bmcgbWVuLCBhbmQgdGhleSBhcmUgZGVhZDsgYW5kIEkgb25seSBhbSBlc2NhcGVkIGFsb25lIHRvIHRlbGwgdGhlZS4KVGhlbiBKb2IgYXJvc2UsIGFuZCByZW50IGhpcyBtYW50bGUsIGFuZCBzaGF2ZWQgaGlzIGhlYWQsIGFuZCBmZWxsIGRvd24gdXBvbiB0aGUgZ3JvdW5kLCBhbmQgd29yc2hpcHBlZCwKQW5kIHNhaWQsIE5ha2VkIGNhbWUgSSBvdXQgb2YgbXkgbW90aGVyJ3Mgd29tYiwgYW5kIG5ha2VkIHNoYWxsIEkgcmV0dXJuIHRoaXRoZXI6IHRoZSBMT1JEIGdhdmUsIGFuZCB0aGUgTE9SRCBoYXRoIHRha2VuIGF3YXk7IGJsZXNzZWQgYmUgdGhlIG5hbWUgb2YgdGhlIExPUkQuCkluIGFsbCB0aGlzIEpvYiBzaW5uZWQgbm90LCBub3IgY2hhcmdlZCBHb2QgZm9vbGlzaGx5LgpBZ2FpbiB0aGVyZSB3YXMgYSBkYXkgd2hlbiB0aGUgc29ucyBvZiBHb2QgY2FtZSB0byBwcmVzZW50IHRoZW1zZWx2ZXMgYmVmb3JlIHRoZSBMT1JELCBhbmQgU2F0YW4gY2FtZSBhbHNvIGFtb25nIHRoZW0gdG8gcHJlc2VudCBoaW1zZWxmIGJlZm9yZSB0aGUgTE9SRC4KQW5kIHRoZSBMT1JEIHNhaWQgdW50byBTYXRhbiwgRnJvbSB3aGVuY2UgY29tZXN0IHRob3U/IEFuZCBTYXRhbiBhbnN3ZXJlZCB0aGUgTE9SRCwgYW5kIHNhaWQsIEZyb20gZ29pbmcgdG8gYW5kIGZybyBpbiB0aGUgZWFydGgsIGFuZCBmcm9tIHdhbGtpbmcgdXAgYW5kIGRvd24gaW4gaXQuCkFuZCB0aGUgTE9SRCBzYWlkIHVudG8gU2F0YW4sIEhhc3QgdGhvdSBjb25zaWRlcmVkIG15IHNlcnZhbnQgSm9iLCB0aGF0IHRoZXJlIGlzIG5vbmUgbGlrZSBoaW0gaW4gdGhlIGVhcnRoLCBhIHBlcmZlY3QgYW5kIGFuIHVwcmlnaHQgbWFuLCBvbmUgdGhhdCBmZWFyZXRoIEdvZCwgYW5kIGVzY2hld2V0aCBldmlsPyBhbmQgc3RpbGwgaGUgaG9sZGV0aCBmYXN0IGhpcyBpbnRlZ3JpdHksIGFsdGhvdWdoIHRob3UgbW92ZWRzdCBtZSBhZ2FpbnN0IGhpbSwgdG8gZGVzdHJveSBoaW0gd2l0aG91dCBjYXVzZS4KQW5kIFNhdGFuIGFuc3dlcmVkIHRoZSBMT1JELCBhbmQgc2FpZCwgU2tpbiBmb3Igc2tpbiwgeWVhLCBhbGwgdGhhdCBhIG1hbiBoYXRoIHdpbGwgaGUgZ2l2ZSBmb3IgaGlzIGxpZmUuCkJ1dCBwdXQgZm9ydGggdGhpbmUgaGFuZCBub3csIGFuZCB0b3VjaCBoaXMgYm9uZSBhbmQgaGlzIGZsZXNoLCBhbmQgaGUgd2lsbCBjdXJzZSB0aGVlIHRvIHRoeSBmYWNlLgpBbmQgdGhlIExPUkQgc2FpZCB1bnRvIFNhdGFuLCBCZWhvbGQsIGhlIGlzIGluIHRoaW5lIGhhbmQ7IGJ1dCBzYXZlIGhpcyBsaWZlLgpTbyB3ZW50IFNhdGFuIGZvcnRoIGZyb20gdGhlIHByZXNlbmNlIG9mIHRoZSBMT1JELCBhbmQgc21vdGUgSm9iIHdpdGggc29yZSBib2lscyBmcm9tIHRoZSBzb2xlIG9mIGhpcyBmb290IHVudG8gaGlzIGNyb3duLgpBbmQgaGUgdG9vayBoaW0gYSBwb3RzaGVyZCB0byBzY3JhcGUgaGltc2VsZiB3aXRoYWw7IGFuZCBoZSBzYXQgZG93biBhbW9uZyB0aGUgYXNoZXMuClRoZW4gc2FpZCBoaXMgd2lmZSB1bnRvIGhpbSwgRG9zdCB0aG91IHN0aWxsIHJldGFpbiB0aGluZSBpbnRlZ3JpdHk/IGN1cnNlIEdvZCwgYW5kIGRpZS4KQnV0IGhlIHNhaWQgdW50byBoZXIsIFRob3Ugc3BlYWtlc3QgYXMgb25lIG9mIHRoZSBmb29saXNoIHdvbWVuIHNwZWFrZXRoLiBXaGF0PyBzaGFsbCB3ZSByZWNlaXZlIGdvb2QgYXQgdGhlIGhhbmQgb2YgR29kLCBhbmQgc2hhbGwgd2Ugbm90IHJlY2VpdmUgZXZpbD8gSW4gYWxsIHRoaXMgZGlkIG5vdCBKb2Igc2luIHdpdGggaGlzIGxpcHMuCk5vdyB3aGVuIEpvYidzIHRocmVlIGZyaWVuZHMgaGVhcmQgb2YgYWxsIHRoaXMgZXZpbCB0aGF0IHdhcyBjb21lIHVwb24gaGltLCB0aGV5IGNhbWUgZXZlcnkgb25lIGZyb20gaGlzIG93biBwbGFjZTsgRWxpcGhheiB0aGUgVGVtYW5pdGUsIGFuZCBCaWxkYWQgdGhlIFNodWhpdGUsIGFuZCBab3BoYXIgdGhlIE5hYW1hdGhpdGU6IGZvciB0aGV5IGhhZCBtYWRlIGFuIGFwcG9pbnRtZW50IHRvZ2V0aGVyIHRvIGNvbWUgdG8gbW91cm4gd2l0aCBoaW0gYW5kIHRvIGNvbWZvcnQgaGltLgpBbmQgd2hlbiB0aGV5IGxpZnRlZCB1cCB0aGVpciBleWVzIGFmYXIgb2ZmLCBhbmQga25ldyBoaW0gbm90LCB0aGV5IGxpZnRlZCB1cCB0aGVpciB2b2ljZSwgYW5kIHdlcHQ7IGFuZCB0aGV5IHJlbnQgZXZlcnkgb25lIGhpcyBtYW50bGUsIGFuZCBzcHJpbmtsZWQgZHVzdCB1cG9uIHRoZWlyIGhlYWRzIHRvd2FyZCBoZWF2ZW4uClNvIHRoZXkgc2F0IGRvd24gd2l0aCBoaW0gdXBvbiB0aGUgZ3JvdW5kIHNldmVuIGRheXMgYW5kIHNldmVuIG5pZ2h0cywgYW5kIG5vbmUgc3Bha2UgYSB3b3JkIHVudG8gaGltOiBmb3IgdGhleSBzYXcgdGhhdCBoaXMgZ3JpZWYgd2FzIHZlcnkgZ3JlYXQuCkFmdGVyIHRoaXMgb3BlbmVkIEpvYiBoaXMgbW91dGgsIGFuZCBjdXJzZWQgaGlzIGRheS4KQW5kIEpvYiBzcGFrZSwgYW5kIHNhaWQsCkxldCB0aGUgZGF5IHBlcmlzaCB3aGVyZWluIEkgd2FzIGJvcm4sIGFuZCB0aGUgbmlnaHQgaW4gd2hpY2ggaXQgd2FzIHNhaWQsIFRoZXJlIGlzIGEgbWFuIGNoaWxkIGNvbmNlaXZlZC4KTGV0IHRoYXQgZGF5IGJlIGRhcmtuZXNzOyBsZXQgbm90IEdvZCByZWdhcmQgaXQgZnJvbSBhYm92ZSwgbmVpdGhlciBsZXQgdGhlIGxpZ2h0IHNoaW5lIHVwb24gaXQuCkxldCBkYXJrbmVzcyBhbmQgdGhlIHNoYWRvdyBvZiBkZWF0aCBzdGFpbiBpdDsgbGV0IGEgY2xvdWQgZHdlbGwgdXBvbiBpdDsgbGV0IHRoZSBibGFja25lc3Mgb2YgdGhlIGRheSB0ZXJyaWZ5IGl0LgpBcyBmb3IgdGhhdCBuaWdodCwgbGV0IGRhcmtuZXNzIHNlaXplIHVwb24gaXQ7IGxldCBpdCBub3QgYmUgam9pbmVkIHVudG8gdGhlIGRheXMgb2YgdGhlIHllYXIsIGxldCBpdCBub3QgY29tZSBpbnRvIHRoZSBudW1iZXIgb2YgdGhlIG1vbnRocy4KTG8sIGxldCB0aGF0IG5pZ2h0IGJlIHNvbGl0YXJ5LCBsZXQgbm8gam95ZnVsIHZvaWNlIGNvbWUgdGhlcmVpbi4KTGV0IHRoZW0gY3Vyc2UgaXQgdGhhdCBjdXJzZSB0aGUgZGF5LCB3aG8gYXJlIHJlYWR5IHRvIHJhaXNlIHVwIHRoZWlyIG1vdXJuaW5nLgpMZXQgdGhlIHN0YXJzIG9mIHRoZSB0d2lsaWdodCB0aGVyZW9mIGJlIGRhcms7IGxldCBpdCBsb29rIGZvciBsaWdodCwgYnV0IGhhdmUgbm9uZTsgbmVpdGhlciBsZXQgaXQgc2VlIHRoZSBkYXduaW5nIG9mIHRoZSBkYXk6CkJlY2F1c2UgaXQgc2h1dCBub3QgdXAgdGhlIGRvb3JzIG9mIG15IG1vdGhlcidzIHdvbWIsIG5vciBoaWQgc29ycm93IGZyb20gbWluZSBleWVzLgpXaHkgZGllZCBJIG5vdCBmcm9tIHRoZSB3b21iPyB3aHkgZGlkIEkgbm90IGdpdmUgdXAgdGhlIGdob3N0IHdoZW4gSSBjYW1lIG91dCBvZiB0aGUgYmVsbHk/CldoeSBkaWQgdGhlIGtuZWVzIHByZXZlbnQgbWU/IG9yIHdoeSB0aGUgYnJlYXN0cyB0aGF0IEkgc2hvdWxkIHN1Y2s/CkZvciBub3cgc2hvdWxkIEkgaGF2ZSBsYWluIHN0aWxsIGFuZCBiZWVuIHF1aWV0LCBJIHNob3VsZCBoYXZlIHNsZXB0OiB0aGVuIGhhZCBJIGJlZW4gYXQgcmVzdCwKV2l0aCBraW5ncyBhbmQgY291bnNlbGxvcnMgb2YgdGhlIGVhcnRoLCB3aGljaCBidWlsZCBkZXNvbGF0ZSBwbGFjZXMgZm9yIHRoZW1zZWx2ZXM7Ck9yIHdpdGggcHJpbmNlcyB0aGF0IGhhZCBnb2xkLCB3aG8gZmlsbGVkIHRoZWlyIGhvdXNlcyB3aXRoIHNpbHZlcjoKT3IgYXMgYW4gaGlkZGVuIHVudGltZWx5IGJpcnRoIEkgaGFkIG5vdCBiZWVuOyBhcyBpbmZhbnRzIHdoaWNoIG5ldmVyIHNhdyBsaWdodC4KVGhlcmUgdGhlIHdpY2tlZCBjZWFzZSBmcm9tIHRyb3VibGluZzsgYW5kIHRoZXJlIHRoZSB3ZWFyeSBiZSBhdCByZXN0LgpUaGVyZSB0aGUgcHJpc29uZXJzIHJlc3QgdG9nZXRoZXI7IHRoZXkgaGVhciBub3QgdGhlIHZvaWNlIG9mIHRoZSBvcHByZXNzb3IuClRoZSBzbWFsbCBhbmQgZ3JlYXQgYXJlIHRoZXJlOyBhbmQgdGhlIHNlcnZhbnQgaXMgZnJlZSBmcm9tIGhpcyBtYXN0ZXIuCldoZXJlZm9yZSBpcyBsaWdodCBnaXZlbiB0byBoaW0gdGhhdCBpcyBpbiBtaXNlcnksIGFuZCBsaWZlIHVudG8gdGhlIGJpdHRlciBpbiBzb3VsOwpXaGljaCBsb25nIGZvciBkZWF0aCwgYnV0IGl0IGNvbWV0aCBub3Q7IGFuZCBkaWcgZm9yIGl0IG1vcmUgdGhhbiBmb3IgaGlkIHRyZWFzdXJlczsKV2hpY2ggcmVqb2ljZSBleGNlZWRpbmdseSwgYW5kIGFyZSBnbGFkLCB3aGVuIHRoZXkgY2FuIGZpbmQgdGhlIGdyYXZlPwpXaHkgaXMgbGlnaHQgZ2l2ZW4gdG8gYSBtYW4gd2hvc2Ugd2F5IGlzIGhpZCwgYW5kIHdob20gR29kIGhhdGggaGVkZ2VkIGluPwpGb3IgbXkgc2lnaGluZyBjb21ldGggYmVmb3JlIEkgZWF0LCBhbmQgbXkgcm9hcmluZ3MgYXJlIHBvdXJlZCBvdXQgbGlrZSB0aGUgd2F0ZXJzLgpGb3IgdGhlIHRoaW5nIHdoaWNoIEkgZ3JlYXRseSBmZWFyZWQgaXMgY29tZSB1cG9uIG1lLCBhbmQgdGhhdCB3aGljaCBJIHdhcyBhZnJhaWQgb2YgaXMgY29tZSB1bnRvIG1lLgpJIHdhcyBub3QgaW4gc2FmZXR5LCBuZWl0aGVyIGhhZCBJIHJlc3QsIG5laXRoZXIgd2FzIEkgcXVpZXQ7IHlldCB0cm91YmxlIGNhbWUuClRoZW4gRWxpcGhheiB0aGUgVGVtYW5pdGUgYW5zd2VyZWQgYW5kIHNhaWQsCklmIHdlIGFzc2F5IHRvIGNvbW11bmUgd2l0aCB0aGVlLCB3aWx0IHRob3UgYmUgZ3JpZXZlZD8gYnV0IHdobyBjYW4gd2l0aGhvbGQgaGltc2VsZiBmcm9tIHNwZWFraW5nPwpCZWhvbGQsIHRob3UgaGFzdCBpbnN0cnVjdGVkIG1hbnksIGFuZCB0aG91IGhhc3Qgc3RyZW5ndGhlbmVkIHRoZSB3ZWFrIGhhbmRzLgpUaHkgd29yZHMgaGF2ZSB1cGhvbGRlbiBoaW0gdGhhdCB3YXMgZmFsbGluZywgYW5kIHRob3UgaGFzdCBzdHJlbmd0aGVuZWQgdGhlIGZlZWJsZSBrbmVlcy4KQnV0IG5vdyBpdCBpcyBjb21lIHVwb24gdGhlZSwgYW5kIHRob3UgZmFpbnRlc3Q7IGl0IHRvdWNoZXRoIHRoZWUsIGFuZCB0aG91IGFydCB0cm91YmxlZC4KSXMgbm90IHRoaXMgdGh5IGZlYXIsIHRoeSBjb25maWRlbmNlLCB0aHkgaG9wZSwgYW5kIHRoZSB1cHJpZ2h0bmVzcyBvZiB0aHkgd2F5cz8KUmVtZW1iZXIsIEkgcHJheSB0aGVlLCB3aG8gZXZlciBwZXJpc2hlZCwgYmVpbmcgaW5ub2NlbnQ/IG9yIHdoZXJlIHdlcmUgdGhlIHJpZ2h0ZW91cyBjdXQgb2ZmPwpFdmVuIGFzIEkgaGF2ZSBzZWVuLCB0aGV5IHRoYXQgcGxvdyBpbmlxdWl0eSwgYW5kIHNvdyB3aWNrZWRuZXNzLCByZWFwIHRoZSBzYW1lLgpCeSB0aGUgYmxhc3Qgb2YgR29kIHRoZXkgcGVyaXNoLCBhbmQgYnkgdGhlIGJyZWF0aCBvZiBoaXMgbm9zdHJpbHMgYXJlIHRoZXkgY29uc3VtZWQuClRoZSByb2FyaW5nIG9mIHRoZSBsaW9uLCBhbmQgdGhlIHZvaWNlIG9mIHRoZSBmaWVyY2UgbGlvbiwgYW5kIHRoZSB0ZWV0aCBvZiB0aGUgeW91bmcgbGlvbnMsIGFyZSBicm9rZW4uClRoZSBvbGQgbGlvbiBwZXJpc2hldGggZm9yIGxhY2sgb2YgcHJleSwgYW5kIHRoZSBzdG91dCBsaW9uJ3Mgd2hlbHBzIGFyZSBzY2F0dGVyZWQgYWJyb2FkLgpOb3cgYSB0aGluZyB3YXMgc2VjcmV0bHkgYnJvdWdodCB0byBtZSwgYW5kIG1pbmUgZWFyIHJlY2VpdmVkIGEgbGl0dGxlIHRoZXJlb2YuCkluIHRob3VnaHRzIGZyb20gdGhlIHZpc2lvbnMgb2YgdGhlIG5pZ2h0LCB3aGVuIGRlZXAgc2xlZXAgZmFsbGV0aCBvbiBtZW4sCkZlYXIgY2FtZSB1cG9uIG1lLCBhbmQgdHJlbWJsaW5nLCB3aGljaCBtYWRlIGFsbCBteSBib25lcyB0byBzaGFrZS4KVGhlbiBhIHNwaXJpdCBwYXNzZWQgYmVmb3JlIG15IGZhY2U7IHRoZSBoYWlyIG9mIG15IGZsZXNoIHN0b29kIHVwOgpJdCBzdG9vZCBzdGlsbCwgYnV0IEkgY291bGQgbm90IGRpc2Nlcm4gdGhlIGZvcm0gdGhlcmVvZjogYW4gaW1hZ2Ugd2FzIGJlZm9yZSBtaW5lIGV5ZXMsIHRoZXJlIHdhcyBzaWxlbmNlLCBhbmQgSSBoZWFyZCBhIHZvaWNlLCBzYXlpbmcsClNoYWxsIG1vcnRhbCBtYW4gYmUgbW9yZSBqdXN0IHRoYW4gR29kPyBzaGFsbCBhIG1hbiBiZSBtb3JlIHB1cmUgdGhhbiBoaXMgbWFrZXI/CkJlaG9sZCwgaGUgcHV0IG5vIHRydXN0IGluIGhpcyBzZXJ2YW50czsgYW5kIGhpcyBhbmdlbHMgaGUgY2hhcmdlZCB3aXRoIGZvbGx5OgpIb3cgbXVjaCBsZXNzIGluIHRoZW0gdGhhdCBkd2VsbCBpbiBob3VzZXMgb2YgY2xheSwgd2hvc2UgZm91bmRhdGlvbiBpcyBpbiB0aGUgZHVzdCwgd2hpY2ggYXJlIGNydXNoZWQgYmVmb3JlIHRoZSBtb3RoPwpUaGV5IGFyZSBkZXN0cm95ZWQgZnJvbSBtb3JuaW5nIHRvIGV2ZW5pbmc6IHRoZXkgcGVyaXNoIGZvciBldmVyIHdpdGhvdXQgYW55IHJlZ2FyZGluZyBpdC4KRG90aCBub3QgdGhlaXIgZXhjZWxsZW5jeSB3aGljaCBpcyBpbiB0aGVtIGdvIGF3YXk/IHRoZXkgZGllLCBldmVuIHdpdGhvdXQgd2lzZG9tLgpDYWxsIG5vdywgaWYgdGhlcmUgYmUgYW55IHRoYXQgd2lsbCBhbnN3ZXIgdGhlZTsgYW5kIHRvIHdoaWNoIG9mIHRoZSBzYWludHMgd2lsdCB0aG91IHR1cm4/CkZvciB3cmF0aCBraWxsZXRoIHRoZSBmb29saXNoIG1hbiwgYW5kIGVudnkgc2xheWV0aCB0aGUgc2lsbHkgb25lLgpJIGhhdmUgc2VlbiB0aGUgZm9vbGlzaCB0YWtpbmcgcm9vdDogYnV0IHN1ZGRlbmx5IEkgY3Vyc2VkIGhpcyBoYWJpdGF0aW9uLgpIaXMgY2hpbGRyZW4gYXJlIGZhciBmcm9tIHNhZmV0eSwgYW5kIHRoZXkgYXJlIGNydXNoZWQgaW4gdGhlIGdhdGUsIG5laXRoZXIgaXMgdGhlcmUgYW55IHRvIGRlbGl2ZXIgdGhlbS4KV2hvc2UgaGFydmVzdCB0aGUgaHVuZ3J5IGVhdGV0aCB1cCwgYW5kIHRha2V0aCBpdCBldmVuIG91dCBvZiB0aGUgdGhvcm5zLCBhbmQgdGhlIHJvYmJlciBzd2FsbG93ZXRoIHVwIHRoZWlyIHN1YnN0YW5jZS4KQWx0aG91Z2ggYWZmbGljdGlvbiBjb21ldGggbm90IGZvcnRoIG9mIHRoZSBkdXN0LCBuZWl0aGVyIGRvdGggdHJvdWJsZSBzcHJpbmcgb3V0IG9mIHRoZSBncm91bmQ7CllldCBtYW4gaXMgYm9ybiB1bnRvIHRyb3VibGUsIGFzIHRoZSBzcGFya3MgZmx5IHVwd2FyZC4KSSB3b3VsZCBzZWVrIHVudG8gR29kLCBhbmQgdW50byBHb2Qgd291bGQgSSBjb21taXQgbXkgY2F1c2U6CldoaWNoIGRvZXRoIGdyZWF0IHRoaW5ncyBhbmQgdW5zZWFyY2hhYmxlOyBtYXJ2ZWxsb3VzIHRoaW5ncyB3aXRob3V0IG51bWJlcjoKV2hvIGdpdmV0aCByYWluIHVwb24gdGhlIGVhcnRoLCBhbmQgc2VuZGV0aCB3YXRlcnMgdXBvbiB0aGUgZmllbGRzOgpUbyBzZXQgdXAgb24gaGlnaCB0aG9zZSB0aGF0IGJlIGxvdzsgdGhhdCB0aG9zZSB3aGljaCBtb3VybiBtYXkgYmUgZXhhbHRlZCB0byBzYWZldHkuCkhlIGRpc2FwcG9pbnRldGggdGhlIGRldmljZXMgb2YgdGhlIGNyYWZ0eSwgc28gdGhhdCB0aGVpciBoYW5kcyBjYW5ub3QgcGVyZm9ybSB0aGVpciBlbnRlcnByaXNlLgpIZSB0YWtldGggdGhlIHdpc2UgaW4gdGhlaXIgb3duIGNyYWZ0aW5lc3M6IGFuZCB0aGUgY291bnNlbCBvZiB0aGUgZnJvd2FyZCBpcyBjYXJyaWVkIGhlYWRsb25nLgpUaGV5IG1lZXQgd2l0aCBkYXJrbmVzcyBpbiB0aGUgZGF5IHRpbWUsIGFuZCBncm9wZSBpbiB0aGUgbm9vbmRheSBhcyBpbiB0aGUgbmlnaHQuCkJ1dCBoZSBzYXZldGggdGhlIHBvb3IgZnJvbSB0aGUgc3dvcmQsIGZyb20gdGhlaXIgbW91dGgsIGFuZCBmcm9tIHRoZSBoYW5kIG9mIHRoZSBtaWdodHkuClNvIHRoZSBwb29yIGhhdGggaG9wZSwgYW5kIGluaXF1aXR5IHN0b3BwZXRoIGhlciBtb3V0aC4KQmVob2xkLCBoYXBweSBpcyB0aGUgbWFuIHdob20gR29kIGNvcnJlY3RldGg6IHRoZXJlZm9yZSBkZXNwaXNlIG5vdCB0aG91IHRoZSBjaGFzdGVuaW5nIG9mIHRoZSBBbG1pZ2h0eToKRm9yIGhlIG1ha2V0aCBzb3JlLCBhbmQgYmluZGV0aCB1cDogaGUgd291bmRldGgsIGFuZCBoaXMgaGFuZHMgbWFrZSB3aG9sZS4KSGUgc2hhbGwgZGVsaXZlciB0aGVlIGluIHNpeCB0cm91YmxlczogeWVhLCBpbiBzZXZlbiB0aGVyZSBzaGFsbCBubyBldmlsIHRvdWNoIHRoZWUuCkluIGZhbWluZSBoZSBzaGFsbCByZWRlZW0gdGhlZSBmcm9tIGRlYXRoOiBhbmQgaW4gd2FyIGZyb20gdGhlIHBvd2VyIG9mIHRoZSBzd29yZC4KVGhvdSBzaGFsdCBiZSBoaWQgZnJvbSB0aGUgc2NvdXJnZSBvZiB0aGUgdG9uZ3VlOiBuZWl0aGVyIHNoYWx0IHRob3UgYmUgYWZyYWlkIG9mIGRlc3RydWN0aW9uIHdoZW4gaXQgY29tZXRoLgpBdCBkZXN0cnVjdGlvbiBhbmQgZmFtaW5lIHRob3Ugc2hhbHQgbGF1Z2g6IG5laXRoZXIgc2hhbHQgdGhvdSBiZSBhZnJhaWQgb2YgdGhlIGJlYXN0cyBvZiB0aGUgZWFydGguCkZvciB0aG91IHNoYWx0IGJlIGluIGxlYWd1ZSB3aXRoIHRoZSBzdG9uZXMgb2YgdGhlIGZpZWxkOiBhbmQgdGhlIGJlYXN0cyBvZiB0aGUgZmllbGQgc2hhbGwgYmUgYXQgcGVhY2Ugd2l0aCB0aGVlLgpBbmQgdGhvdSBzaGFsdCBrbm93IHRoYXQgdGh5IHRhYmVybmFjbGUgc2hhbGwgYmUgaW4gcGVhY2U7IGFuZCB0aG91IHNoYWx0IHZpc2l0IHRoeSBoYWJpdGF0aW9uLCBhbmQgc2hhbHQgbm90IHNpbi4KVGhvdSBzaGFsdCBrbm93IGFsc28gdGhhdCB0aHkgc2VlZCBzaGFsbCBiZSBncmVhdCwgYW5kIHRoaW5lIG9mZnNwcmluZyBhcyB0aGUgZ3Jhc3Mgb2YgdGhlIGVhcnRoLgpUaG91IHNoYWx0IGNvbWUgdG8gdGh5IGdyYXZlIGluIGEgZnVsbCBhZ2UsIGxpa2UgYXMgYSBzaG9jayBvZiBjb3JuIGNvbWV0aCBpbiBpbiBoaXMgc2Vhc29uLgpMbyB0aGlzLCB3ZSBoYXZlIHNlYXJjaGVkIGl0LCBzbyBpdCBpczsgaGVhciBpdCwgYW5kIGtub3cgdGhvdSBpdCBmb3IgdGh5IGdvb2QuCkJ1dCBKb2IgYW5zd2VyZWQgYW5kIHNhaWQsCk9oIHRoYXQgbXkgZ3JpZWYgd2VyZSB0aHJvdWdobHkgd2VpZ2hlZCwgYW5kIG15IGNhbGFtaXR5IGxhaWQgaW4gdGhlIGJhbGFuY2VzIHRvZ2V0aGVyIQpGb3Igbm93IGl0IHdvdWxkIGJlIGhlYXZpZXIgdGhhbiB0aGUgc2FuZCBvZiB0aGUgc2VhOiB0aGVyZWZvcmUgbXkgd29yZHMgYXJlIHN3YWxsb3dlZCB1cC4KRm9yIHRoZSBhcnJvd3Mgb2YgdGhlIEFsbWlnaHR5IGFyZSB3aXRoaW4gbWUsIHRoZSBwb2lzb24gd2hlcmVvZiBkcmlua2V0aCB1cCBteSBzcGlyaXQ6IHRoZSB0ZXJyb3JzIG9mIEdvZCBkbyBzZXQgdGhlbXNlbHZlcyBpbiBhcnJheSBhZ2FpbnN0IG1lLgpEb3RoIHRoZSB3aWxkIGFzcyBicmF5IHdoZW4gaGUgaGF0aCBncmFzcz8gb3IgbG93ZXRoIHRoZSBveCBvdmVyIGhpcyBmb2RkZXI/CkNhbiB0aGF0IHdoaWNoIGlzIHVuc2F2b3VyeSBiZSBlYXRlbiB3aXRob3V0IHNhbHQ/IG9yIGlzIHRoZXJlIGFueSB0YXN0ZSBpbiB0aGUgd2hpdGUgb2YgYW4gZWdnPwpUaGUgdGhpbmdzIHRoYXQgbXkgc291bCByZWZ1c2VkIHRvIHRvdWNoIGFyZSBhcyBteSBzb3Jyb3dmdWwgbWVhdC4KT2ggdGhhdCBJIG1pZ2h0IGhhdmUgbXkgcmVxdWVzdDsgYW5kIHRoYXQgR29kIHdvdWxkIGdyYW50IG1lIHRoZSB0aGluZyB0aGF0IEkgbG9uZyBmb3IhCkV2ZW4gdGhhdCBpdCB3b3VsZCBwbGVhc2UgR29kIHRvIGRlc3Ryb3kgbWU7IHRoYXQgaGUgd291bGQgbGV0IGxvb3NlIGhpcyBoYW5kLCBhbmQgY3V0IG1lIG9mZiEKVGhlbiBzaG91bGQgSSB5ZXQgaGF2ZSBjb21mb3J0OyB5ZWEsIEkgd291bGQgaGFyZGVuIG15c2VsZiBpbiBzb3Jyb3c6IGxldCBoaW0gbm90IHNwYXJlOyBmb3IgSSBoYXZlIG5vdCBjb25jZWFsZWQgdGhlIHdvcmRzIG9mIHRoZSBIb2x5IE9uZS4KV2hhdCBpcyBteSBzdHJlbmd0aCwgdGhhdCBJIHNob3VsZCBob3BlPyBhbmQgd2hhdCBpcyBtaW5lIGVuZCwgdGhhdCBJIHNob3VsZCBwcm9sb25nIG15IGxpZmU/CklzIG15IHN0cmVuZ3RoIHRoZSBzdHJlbmd0aCBvZiBzdG9uZXM/IG9yIGlzIG15IGZsZXNoIG9mIGJyYXNzPwpJcyBub3QgbXkgaGVscCBpbiBtZT8gYW5kIGlzIHdpc2RvbSBkcml2ZW4gcXVpdGUgZnJvbSBtZT8KVG8gaGltIHRoYXQgaXMgYWZmbGljdGVkIHBpdHkgc2hvdWxkIGJlIHNoZXdlZCBmcm9tIGhpcyBmcmllbmQ7IGJ1dCBoZSBmb3JzYWtldGggdGhlIGZlYXIgb2YgdGhlIEFsbWlnaHR5LgpNeSBicmV0aHJlbiBoYXZlIGRlYWx0IGRlY2VpdGZ1bGx5IGFzIGEgYnJvb2ssIGFuZCBhcyB0aGUgc3RyZWFtIG9mIGJyb29rcyB0aGV5IHBhc3MgYXdheTsKV2hpY2ggYXJlIGJsYWNraXNoIGJ5IHJlYXNvbiBvZiB0aGUgaWNlLCBhbmQgd2hlcmVpbiB0aGUgc25vdyBpcyBoaWQ6CldoYXQgdGltZSB0aGV5IHdheCB3YXJtLCB0aGV5IHZhbmlzaDogd2hlbiBpdCBpcyBob3QsIHRoZXkgYXJlIGNvbnN1bWVkIG91dCBvZiB0aGVpciBwbGFjZS4KVGhlIHBhdGhzIG9mIHRoZWlyIHdheSBhcmUgdHVybmVkIGFzaWRlOyB0aGV5IGdvIHRvIG5vdGhpbmcsIGFuZCBwZXJpc2guClRoZSB0cm9vcHMgb2YgVGVtYSBsb29rZWQsIHRoZSBjb21wYW5pZXMgb2YgU2hlYmEgd2FpdGVkIGZvciB0aGVtLgpUaGV5IHdlcmUgY29uZm91bmRlZCBiZWNhdXNlIHRoZXkgaGFkIGhvcGVkOyB0aGV5IGNhbWUgdGhpdGhlciwgYW5kIHdlcmUgYXNoYW1lZC4KRm9yIG5vdyB5ZSBhcmUgbm90aGluZzsgeWUgc2VlIG15IGNhc3RpbmcgZG93biwgYW5kIGFyZSBhZnJhaWQuCkRpZCBJIHNheSwgQnJpbmcgdW50byBtZT8gb3IsIEdpdmUgYSByZXdhcmQgZm9yIG1lIG9mIHlvdXIgc3Vic3RhbmNlPwpPciwgRGVsaXZlciBtZSBmcm9tIHRoZSBlbmVteSdzIGhhbmQ/IG9yLCBSZWRlZW0gbWUgZnJvbSB0aGUgaGFuZCBvZiB0aGUgbWlnaHR5PwpUZWFjaCBtZSwgYW5kIEkgd2lsbCBob2xkIG15IHRvbmd1ZTogYW5kIGNhdXNlIG1lIHRvIHVuZGVyc3RhbmQgd2hlcmVpbiBJIGhhdmUgZXJyZWQuCkhvdyBmb3JjaWJsZSBhcmUgcmlnaHQgd29yZHMhIGJ1dCB3aGF0IGRvdGggeW91ciBhcmd1aW5nIHJlcHJvdmU/CkRvIHllIGltYWdpbmUgdG8gcmVwcm92ZSB3b3JkcywgYW5kIHRoZSBzcGVlY2hlcyBvZiBvbmUgdGhhdCBpcyBkZXNwZXJhdGUsIHdoaWNoIGFyZSBhcyB3aW5kPwpZZWEsIHllIG92ZXJ3aGVsbSB0aGUgZmF0aGVybGVzcywgYW5kIHllIGRpZyBhIHBpdCBmb3IgeW91ciBmcmllbmQuCk5vdyB0aGVyZWZvcmUgYmUgY29udGVudCwgbG9vayB1cG9uIG1lOyBmb3IgaXQgaXMgZXZpZGVudCB1bnRvIHlvdSBpZiBJIGxpZS4KUmV0dXJuLCBJIHByYXkgeW91LCBsZXQgaXQgbm90IGJlIGluaXF1aXR5OyB5ZWEsIHJldHVybiBhZ2FpbiwgbXkgcmlnaHRlb3VzbmVzcyBpcyBpbiBpdC4KSXMgdGhlcmUgaW5pcXVpdHkgaW4gbXkgdG9uZ3VlPyBjYW5ub3QgbXkgdGFzdGUgZGlzY2VybiBwZXJ2ZXJzZSB0aGluZ3M/CklzIHRoZXJlIG5vdCBhbiBhcHBvaW50ZWQgdGltZSB0byBtYW4gdXBvbiBlYXJ0aD8gYXJlIG5vdCBoaXMgZGF5cyBhbHNvIGxpa2UgdGhlIGRheXMgb2YgYW4gaGlyZWxpbmc/CkFzIGEgc2VydmFudCBlYXJuZXN0bHkgZGVzaXJldGggdGhlIHNoYWRvdywgYW5kIGFzIGFuIGhpcmVsaW5nIGxvb2tldGggZm9yIHRoZSByZXdhcmQgb2YgaGlzIHdvcms6ClNvIGFtIEkgbWFkZSB0byBwb3NzZXNzIG1vbnRocyBvZiB2YW5pdHksIGFuZCB3ZWFyaXNvbWUgbmlnaHRzIGFyZSBhcHBvaW50ZWQgdG8gbWUuCldoZW4gSSBsaWUgZG93biwgSSBzYXksIFdoZW4gc2hhbGwgSSBhcmlzZSwgYW5kIHRoZSBuaWdodCBiZSBnb25lPyBhbmQgSSBhbSBmdWxsIG9mIHRvc3NpbmdzIHRvIGFuZCBmcm8gdW50byB0aGUgZGF3bmluZyBvZiB0aGUgZGF5LgpNeSBmbGVzaCBpcyBjbG90aGVkIHdpdGggd29ybXMgYW5kIGNsb2RzIG9mIGR1c3Q7IG15IHNraW4gaXMgYnJva2VuLCBhbmQgYmVjb21lIGxvYXRoc29tZS4KTXkgZGF5cyBhcmUgc3dpZnRlciB0aGFuIGEgd2VhdmVyJ3Mgc2h1dHRsZSwgYW5kIGFyZSBzcGVudCB3aXRob3V0IGhvcGUuCk8gcmVtZW1iZXIgdGhhdCBteSBsaWZlIGlzIHdpbmQ6IG1pbmUgZXllIHNoYWxsIG5vIG1vcmUgc2VlIGdvb2QuClRoZSBleWUgb2YgaGltIHRoYXQgaGF0aCBzZWVuIG1lIHNoYWxsIHNlZSBtZSBubyBtb3JlOiB0aGluZSBleWVzIGFyZSB1cG9uIG1lLCBhbmQgSSBhbSBub3QuCkFzIHRoZSBjbG91ZCBpcyBjb25zdW1lZCBhbmQgdmFuaXNoZXRoIGF3YXk6IHNvIGhlIHRoYXQgZ29ldGggZG93biB0byB0aGUgZ3JhdmUgc2hhbGwgY29tZSB1cCBubyBtb3JlLgpIZSBzaGFsbCByZXR1cm4gbm8gbW9yZSB0byBoaXMgaG91c2UsIG5laXRoZXIgc2hhbGwgaGlzIHBsYWNlIGtub3cgaGltIGFueSBtb3JlLgpUaGVyZWZvcmUgSSB3aWxsIG5vdCByZWZyYWluIG15IG1vdXRoOyBJIHdpbGwgc3BlYWsgaW4gdGhlIGFuZ3Vpc2ggb2YgbXkgc3Bpcml0OyBJIHdpbGwgY29tcGxhaW4gaW4gdGhlIGJpdHRlcm5lc3Mgb2YgbXkgc291bC4KQW0gSSBhIHNlYSwgb3IgYSB3aGFsZSwgdGhhdCB0aG91IHNldHRlc3QgYSB3YXRjaCBvdmVyIG1lPwpXaGVuIEkgc2F5LCBNeSBiZWQgc2hhbGwgY29tZm9ydCBtZSwgbXkgY291Y2ggc2hhbGwgZWFzZSBteSBjb21wbGFpbnRzOwpUaGVuIHRob3Ugc2NhcmVzdCBtZSB3aXRoIGRyZWFtcywgYW5kIHRlcnJpZmllc3QgbWUgdGhyb3VnaCB2aXNpb25zOgpTbyB0aGF0IG15IHNvdWwgY2hvb3NldGggc3RyYW5nbGluZywgYW5kIGRlYXRoIHJhdGhlciB0aGFuIG15IGxpZmUuCkkgbG9hdGhlIGl0OyBJIHdvdWxkIG5vdCBsaXZlIGFsd2F5OiBsZXQgbWUgYWxvbmU7IGZvciBteSBkYXlzIGFyZSB2YW5pdHkuCldoYXQgaXMgbWFuLCB0aGF0IHRob3Ugc2hvdWxkZXN0IG1hZ25pZnkgaGltPyBhbmQgdGhhdCB0aG91IHNob3VsZGVzdCBzZXQgdGhpbmUgaGVhcnQgdXBvbiBoaW0/CkFuZCB0aGF0IHRob3Ugc2hvdWxkZXN0IHZpc2l0IGhpbSBldmVyeSBtb3JuaW5nLCBhbmQgdHJ5IGhpbSBldmVyeSBtb21lbnQ/CkhvdyBsb25nIHdpbHQgdGhvdSBub3QgZGVwYXJ0IGZyb20gbWUsIG5vciBsZXQgbWUgYWxvbmUgdGlsbCBJIHN3YWxsb3cgZG93biBteSBzcGl0dGxlPwpJIGhhdmUgc2lubmVkOyB3aGF0IHNoYWxsIEkgZG8gdW50byB0aGVlLCBPIHRob3UgcHJlc2VydmVyIG9mIG1lbj8gd2h5IGhhc3QgdGhvdSBzZXQgbWUgYXMgYSBtYXJrIGFnYWluc3QgdGhlZSwgc28gdGhhdCBJIGFtIGEgYnVyZGVuIHRvIG15c2VsZj8KQW5kIHdoeSBkb3N0IHRob3Ugbm90IHBhcmRvbiBteSB0cmFuc2dyZXNzaW9uLCBhbmQgdGFrZSBhd2F5IG15IGluaXF1aXR5PyBmb3Igbm93IHNoYWxsIEkgc2xlZXAgaW4gdGhlIGR1c3Q7IGFuZCB0aG91IHNoYWx0IHNlZWsgbWUgaW4gdGhlIG1vcm5pbmcsIGJ1dCBJIHNoYWxsIG5vdCBiZS4KVGhlbiBhbnN3ZXJlZCBCaWxkYWQgdGhlIFNodWhpdGUsIGFuZCBzYWlkLApIb3cgbG9uZyB3aWx0IHRob3Ugc3BlYWsgdGhlc2UgdGhpbmdzPyBhbmQgaG93IGxvbmcgc2hhbGwgdGhlIHdvcmRzIG9mIHRoeSBtb3V0aCBiZSBsaWtlIGEgc3Ryb25nIHdpbmQ/CkRvdGggR29kIHBlcnZlcnQganVkZ21lbnQ/IG9yIGRvdGggdGhlIEFsbWlnaHR5IHBlcnZlcnQganVzdGljZT8KSWYgdGh5IGNoaWxkcmVuIGhhdmUgc2lubmVkIGFnYWluc3QgaGltLCBhbmQgaGUgaGF2ZSBjYXN0IHRoZW0gYXdheSBmb3IgdGhlaXIgdHJhbnNncmVzc2lvbjsKSWYgdGhvdSB3b3VsZGVzdCBzZWVrIHVudG8gR29kIGJldGltZXMsIGFuZCBtYWtlIHRoeSBzdXBwbGljYXRpb24gdG8gdGhlIEFsbWlnaHR5OwpJZiB0aG91IHdlcnQgcHVyZSBhbmQgdXByaWdodDsgc3VyZWx5IG5vdyBoZSB3b3VsZCBhd2FrZSBmb3IgdGhlZSwgYW5kIG1ha2UgdGhlIGhhYml0YXRpb24gb2YgdGh5IHJpZ2h0ZW91c25lc3MgcHJvc3Blcm91cy4KVGhvdWdoIHRoeSBiZWdpbm5pbmcgd2FzIHNtYWxsLCB5ZXQgdGh5IGxhdHRlciBlbmQgc2hvdWxkIGdyZWF0bHkgaW5jcmVhc2UuCkZvciBlbnF1aXJlLCBJIHByYXkgdGhlZSwgb2YgdGhlIGZvcm1lciBhZ2UsIGFuZCBwcmVwYXJlIHRoeXNlbGYgdG8gdGhlIHNlYXJjaCBvZiB0aGVpciBmYXRoZXJzOgooRm9yIHdlIGFyZSBidXQgb2YgeWVzdGVyZGF5LCBhbmQga25vdyBub3RoaW5nLCBiZWNhdXNlIG91ciBkYXlzIHVwb24gZWFydGggYXJlIGEgc2hhZG93OikKU2hhbGwgbm90IHRoZXkgdGVhY2ggdGhlZSwgYW5kIHRlbGwgdGhlZSwgYW5kIHV0dGVyIHdvcmRzIG91dCBvZiB0aGVpciBoZWFydD8KQ2FuIHRoZSBydXNoIGdyb3cgdXAgd2l0aG91dCBtaXJlPyBjYW4gdGhlIGZsYWcgZ3JvdyB3aXRob3V0IHdhdGVyPwpXaGlsc3QgaXQgaXMgeWV0IGluIGhpcyBncmVlbm5lc3MsIGFuZCBub3QgY3V0IGRvd24sIGl0IHdpdGhlcmV0aCBiZWZvcmUgYW55IG90aGVyIGhlcmIuClNvIGFyZSB0aGUgcGF0aHMgb2YgYWxsIHRoYXQgZm9yZ2V0IEdvZDsgYW5kIHRoZSBoeXBvY3JpdGUncyBob3BlIHNoYWxsIHBlcmlzaDoKV2hvc2UgaG9wZSBzaGFsbCBiZSBjdXQgb2ZmLCBhbmQgd2hvc2UgdHJ1c3Qgc2hhbGwgYmUgYSBzcGlkZXIncyB3ZWIuCkhlIHNoYWxsIGxlYW4gdXBvbiBoaXMgaG91c2UsIGJ1dCBpdCBzaGFsbCBub3Qgc3RhbmQ6IGhlIHNoYWxsIGhvbGQgaXQgZmFzdCwgYnV0IGl0IHNoYWxsIG5vdCBlbmR1cmUuCkhlIGlzIGdyZWVuIGJlZm9yZSB0aGUgc3VuLCBhbmQgaGlzIGJyYW5jaCBzaG9vdGV0aCBmb3J0aCBpbiBoaXMgZ2FyZGVuLgpIaXMgcm9vdHMgYXJlIHdyYXBwZWQgYWJvdXQgdGhlIGhlYXAsIGFuZCBzZWV0aCB0aGUgcGxhY2Ugb2Ygc3RvbmVzLgpJZiBoZSBkZXN0cm95IGhpbSBmcm9tIGhpcyBwbGFjZSwgdGhlbiBpdCBzaGFsbCBkZW55IGhpbSwgc2F5aW5nLCBJIGhhdmUgbm90IHNlZW4gdGhlZS4KQmVob2xkLCB0aGlzIGlzIHRoZSBqb3kgb2YgaGlzIHdheSwgYW5kIG91dCBvZiB0aGUgZWFydGggc2hhbGwgb3RoZXJzIGdyb3cuCkJlaG9sZCwgR29kIHdpbGwgbm90IGNhc3QgYXdheSBhIHBlcmZlY3QgbWFuLCBuZWl0aGVyIHdpbGwgaGUgaGVscCB0aGUgZXZpbCBkb2VyczoKVGlsbCBoZSBmaWxsIHRoeSBtb3V0aCB3aXRoIGxhdWdoaW5nLCBhbmQgdGh5IGxpcHMgd2l0aCByZWpvaWNpbmcuClRoZXkgdGhhdCBoYXRlIHRoZWUgc2hhbGwgYmUgY2xvdGhlZCB3aXRoIHNoYW1lOyBhbmQgdGhlIGR3ZWxsaW5nIHBsYWNlIG9mIHRoZSB3aWNrZWQgc2hhbGwgY29tZSB0byBub3VnaHQuClRoZW4gSm9iIGFuc3dlcmVkIGFuZCBzYWlkLApJIGtub3cgaXQgaXMgc28gb2YgYSB0cnV0aDogYnV0IGhvdyBzaG91bGQgbWFuIGJlIGp1c3Qgd2l0aCBHb2Q/CklmIGhlIHdpbGwgY29udGVuZCB3aXRoIGhpbSwgaGUgY2Fubm90IGFuc3dlciBoaW0gb25lIG9mIGEgdGhvdXNhbmQuCkhlIGlzIHdpc2UgaW4gaGVhcnQsIGFuZCBtaWdodHkgaW4gc3RyZW5ndGg6IHdobyBoYXRoIGhhcmRlbmVkIGhpbXNlbGYgYWdhaW5zdCBoaW0sIGFuZCBoYXRoIHByb3NwZXJlZD8KV2hpY2ggcmVtb3ZldGggdGhlIG1vdW50YWlucywgYW5kIHRoZXkga25vdyBub3Q6IHdoaWNoIG92ZXJ0dXJuZXRoIHRoZW0gaW4gaGlzIGFuZ2VyLgpXaGljaCBzaGFrZXRoIHRoZSBlYXJ0aCBvdXQgb2YgaGVyIHBsYWNlLCBhbmQgdGhlIHBpbGxhcnMgdGhlcmVvZiB0cmVtYmxlLgpXaGljaCBjb21tYW5kZXRoIHRoZSBzdW4sIGFuZCBpdCByaXNldGggbm90OyBhbmQgc2VhbGV0aCB1cCB0aGUgc3RhcnMuCldoaWNoIGFsb25lIHNwcmVhZGV0aCBvdXQgdGhlIGhlYXZlbnMsIGFuZCB0cmVhZGV0aCB1cG9uIHRoZSB3YXZlcyBvZiB0aGUgc2VhLgpXaGljaCBtYWtldGggQXJjdHVydXMsIE9yaW9uLCBhbmQgUGxlaWFkZXMsIGFuZCB0aGUgY2hhbWJlcnMgb2YgdGhlIHNvdXRoLgpXaGljaCBkb2V0aCBncmVhdCB0aGluZ3MgcGFzdCBmaW5kaW5nIG91dDsgeWVhLCBhbmQgd29uZGVycyB3aXRob3V0IG51bWJlci4KTG8sIGhlIGdvZXRoIGJ5IG1lLCBhbmQgSSBzZWUgaGltIG5vdDogaGUgcGFzc2V0aCBvbiBhbHNvLCBidXQgSSBwZXJjZWl2ZSBoaW0gbm90LgpCZWhvbGQsIGhlIHRha2V0aCBhd2F5LCB3aG8gY2FuIGhpbmRlciBoaW0/IHdobyB3aWxsIHNheSB1bnRvIGhpbSwgV2hhdCBkb2VzdCB0aG91PwpJZiBHb2Qgd2lsbCBub3Qgd2l0aGRyYXcgaGlzIGFuZ2VyLCB0aGUgcHJvdWQgaGVscGVycyBkbyBzdG9vcCB1bmRlciBoaW0uCkhvdyBtdWNoIGxlc3Mgc2hhbGwgSSBhbnN3ZXIgaGltLCBhbmQgY2hvb3NlIG91dCBteSB3b3JkcyB0byByZWFzb24gd2l0aCBoaW0/Cldob20sIHRob3VnaCBJIHdlcmUgcmlnaHRlb3VzLCB5ZXQgd291bGQgSSBub3QgYW5zd2VyLCBidXQgSSB3b3VsZCBtYWtlIHN1cHBsaWNhdGlvbiB0byBteSBqdWRnZS4KSWYgSSBoYWQgY2FsbGVkLCBhbmQgaGUgaGFkIGFuc3dlcmVkIG1lOyB5ZXQgd291bGQgSSBub3QgYmVsaWV2ZSB0aGF0IGhlIGhhZCBoZWFya2VuZWQgdW50byBteSB2b2ljZS4KRm9yIGhlIGJyZWFrZXRoIG1lIHdpdGggYSB0ZW1wZXN0LCBhbmQgbXVsdGlwbGlldGggbXkgd291bmRzIHdpdGhvdXQgY2F1c2UuCkhlIHdpbGwgbm90IHN1ZmZlciBtZSB0byB0YWtlIG15IGJyZWF0aCwgYnV0IGZpbGxldGggbWUgd2l0aCBiaXR0ZXJuZXNzLgpJZiBJIHNwZWFrIG9mIHN0cmVuZ3RoLCBsbywgaGUgaXMgc3Ryb25nOiBhbmQgaWYgb2YganVkZ21lbnQsIHdobyBzaGFsbCBzZXQgbWUgYSB0aW1lIHRvIHBsZWFkPwpJZiBJIGp1c3RpZnkgbXlzZWxmLCBtaW5lIG93biBtb3V0aCBzaGFsbCBjb25kZW1uIG1lOiBpZiBJIHNheSwgSSBhbSBwZXJmZWN0LCBpdCBzaGFsbCBhbHNvIHByb3ZlIG1lIHBlcnZlcnNlLgpUaG91Z2ggSSB3ZXJlIHBlcmZlY3QsIHlldCB3b3VsZCBJIG5vdCBrbm93IG15IHNvdWw6IEkgd291bGQgZGVzcGlzZSBteSBsaWZlLgpUaGlzIGlzIG9uZSB0aGluZywgdGhlcmVmb3JlIEkgc2FpZCBpdCwgSGUgZGVzdHJveWV0aCB0aGUgcGVyZmVjdCBhbmQgdGhlIHdpY2tlZC4KSWYgdGhlIHNjb3VyZ2Ugc2xheSBzdWRkZW5seSwgaGUgd2lsbCBsYXVnaCBhdCB0aGUgdHJpYWwgb2YgdGhlIGlubm9jZW50LgpUaGUgZWFydGggaXMgZ2l2ZW4gaW50byB0aGUgaGFuZCBvZiB0aGUgd2lja2VkOiBoZSBjb3ZlcmV0aCB0aGUgZmFjZXMgb2YgdGhlIGp1ZGdlcyB0aGVyZW9mOyBpZiBub3QsIHdoZXJlLCBhbmQgd2hvIGlzIGhlPwpOb3cgbXkgZGF5cyBhcmUgc3dpZnRlciB0aGFuIGEgcG9zdDogdGhleSBmbGVlIGF3YXksIHRoZXkgc2VlIG5vIGdvb2QuClRoZXkgYXJlIHBhc3NlZCBhd2F5IGFzIHRoZSBzd2lmdCBzaGlwczogYXMgdGhlIGVhZ2xlIHRoYXQgaGFzdGV0aCB0byB0aGUgcHJleS4KSWYgSSBzYXksIEkgd2lsbCBmb3JnZXQgbXkgY29tcGxhaW50LCBJIHdpbGwgbGVhdmUgb2ZmIG15IGhlYXZpbmVzcywgYW5kIGNvbWZvcnQgbXlzZWxmOgpJIGFtIGFmcmFpZCBvZiBhbGwgbXkgc29ycm93cywgSSBrbm93IHRoYXQgdGhvdSB3aWx0IG5vdCBob2xkIG1lIGlubm9jZW50LgpJZiBJIGJlIHdpY2tlZCwgd2h5IHRoZW4gbGFib3VyIEkgaW4gdmFpbj8KSWYgSSB3YXNoIG15c2VsZiB3aXRoIHNub3cgd2F0ZXIsIGFuZCBtYWtlIG15IGhhbmRzIG5ldmVyIHNvIGNsZWFuOwpZZXQgc2hhbHQgdGhvdSBwbHVuZ2UgbWUgaW4gdGhlIGRpdGNoLCBhbmQgbWluZSBvd24gY2xvdGhlcyBzaGFsbCBhYmhvciBtZS4KRm9yIGhlIGlzIG5vdCBhIG1hbiwgYXMgSSBhbSwgdGhhdCBJIHNob3VsZCBhbnN3ZXIgaGltLCBhbmQgd2Ugc2hvdWxkIGNvbWUgdG9nZXRoZXIgaW4ganVkZ21lbnQuCk5laXRoZXIgaXMgdGhlcmUgYW55IGRheXNtYW4gYmV0d2l4dCB1cywgdGhhdCBtaWdodCBsYXkgaGlzIGhhbmQgdXBvbiB1cyBib3RoLgpMZXQgaGltIHRha2UgaGlzIHJvZCBhd2F5IGZyb20gbWUsIGFuZCBsZXQgbm90IGhpcyBmZWFyIHRlcnJpZnkgbWU6ClRoZW4gd291bGQgSSBzcGVhaywgYW5kIG5vdCBmZWFyIGhpbTsgYnV0IGl0IGlzIG5vdCBzbyB3aXRoIG1lLgpNeSBzb3VsIGlzIHdlYXJ5IG9mIG15IGxpZmU7IEkgd2lsbCBsZWF2ZSBteSBjb21wbGFpbnQgdXBvbiBteXNlbGY7IEkgd2lsbCBzcGVhayBpbiB0aGUgYml0dGVybmVzcyBvZiBteSBzb3VsLgpJIHdpbGwgc2F5IHVudG8gR29kLCBEbyBub3QgY29uZGVtbiBtZTsgc2hldyBtZSB3aGVyZWZvcmUgdGhvdSBjb250ZW5kZXN0IHdpdGggbWUuCklzIGl0IGdvb2QgdW50byB0aGVlIHRoYXQgdGhvdSBzaG91bGRlc3Qgb3BwcmVzcywgdGhhdCB0aG91IHNob3VsZGVzdCBkZXNwaXNlIHRoZSB3b3JrIG9mIHRoaW5lIGhhbmRzLCBhbmQgc2hpbmUgdXBvbiB0aGUgY291bnNlbCBvZiB0aGUgd2lja2VkPwpIYXN0IHRob3UgZXllcyBvZiBmbGVzaD8gb3Igc2Vlc3QgdGhvdSBhcyBtYW4gc2VldGg/CkFyZSB0aHkgZGF5cyBhcyB0aGUgZGF5cyBvZiBtYW4/IGFyZSB0aHkgeWVhcnMgYXMgbWFuJ3MgZGF5cywKVGhhdCB0aG91IGVucXVpcmVzdCBhZnRlciBtaW5lIGluaXF1aXR5LCBhbmQgc2VhcmNoZXN0IGFmdGVyIG15IHNpbj8KVGhvdSBrbm93ZXN0IHRoYXQgSSBhbSBub3Qgd2lja2VkOyBhbmQgdGhlcmUgaXMgbm9uZSB0aGF0IGNhbiBkZWxpdmVyIG91dCBvZiB0aGluZSBoYW5kLgpUaGluZSBoYW5kcyBoYXZlIG1hZGUgbWUgYW5kIGZhc2hpb25lZCBtZSB0b2dldGhlciByb3VuZCBhYm91dDsgeWV0IHRob3UgZG9zdCBkZXN0cm95IG1lLgpSZW1lbWJlciwgSSBiZXNlZWNoIHRoZWUsIHRoYXQgdGhvdSBoYXN0IG1hZGUgbWUgYXMgdGhlIGNsYXk7IGFuZCB3aWx0IHRob3UgYnJpbmcgbWUgaW50byBkdXN0IGFnYWluPwpIYXN0IHRob3Ugbm90IHBvdXJlZCBtZSBvdXQgYXMgbWlsaywgYW5kIGN1cmRsZWQgbWUgbGlrZSBjaGVlc2U/ClRob3UgaGFzdCBjbG90aGVkIG1lIHdpdGggc2tpbiBhbmQgZmxlc2gsIGFuZCBoYXN0IGZlbmNlZCBtZSB3aXRoIGJvbmVzIGFuZCBzaW5ld3MuClRob3UgaGFzdCBncmFudGVkIG1lIGxpZmUgYW5kIGZhdm91ciwgYW5kIHRoeSB2aXNpdGF0aW9uIGhhdGggcHJlc2VydmVkIG15IHNwaXJpdC4KQW5kIHRoZXNlIHRoaW5ncyBoYXN0IHRob3UgaGlkIGluIHRoaW5lIGhlYXJ0OiBJIGtub3cgdGhhdCB0aGlzIGlzIHdpdGggdGhlZS4KSWYgSSBzaW4sIHRoZW4gdGhvdSBtYXJrZXN0IG1lLCBhbmQgdGhvdSB3aWx0IG5vdCBhY3F1aXQgbWUgZnJvbSBtaW5lIGluaXF1aXR5LgpJZiBJIGJlIHdpY2tlZCwgd29lIHVudG8gbWU7IGFuZCBpZiBJIGJlIHJpZ2h0ZW91cywgeWV0IHdpbGwgSSBub3QgbGlmdCB1cCBteSBoZWFkLiBJIGFtIGZ1bGwgb2YgY29uZnVzaW9uOyB0aGVyZWZvcmUgc2VlIHRob3UgbWluZSBhZmZsaWN0aW9uOwpGb3IgaXQgaW5jcmVhc2V0aC4gVGhvdSBodW50ZXN0IG1lIGFzIGEgZmllcmNlIGxpb246IGFuZCBhZ2FpbiB0aG91IHNoZXdlc3QgdGh5c2VsZiBtYXJ2ZWxsb3VzIHVwb24gbWUuClRob3UgcmVuZXdlc3QgdGh5IHdpdG5lc3NlcyBhZ2FpbnN0IG1lLCBhbmQgaW5jcmVhc2VzdCB0aGluZSBpbmRpZ25hdGlvbiB1cG9uIG1lOyBjaGFuZ2VzIGFuZCB3YXIgYXJlIGFnYWluc3QgbWUuCldoZXJlZm9yZSB0aGVuIGhhc3QgdGhvdSBicm91Z2h0IG1lIGZvcnRoIG91dCBvZiB0aGUgd29tYj8gT2ggdGhhdCBJIGhhZCBnaXZlbiB1cCB0aGUgZ2hvc3QsIGFuZCBubyBleWUgaGFkIHNlZW4gbWUhCkkgc2hvdWxkIGhhdmUgYmVlbiBhcyB0aG91Z2ggSSBoYWQgbm90IGJlZW47IEkgc2hvdWxkIGhhdmUgYmVlbiBjYXJyaWVkIGZyb20gdGhlIHdvbWIgdG8gdGhlIGdyYXZlLgpBcmUgbm90IG15IGRheXMgZmV3PyBjZWFzZSB0aGVuLCBhbmQgbGV0IG1lIGFsb25lLCB0aGF0IEkgbWF5IHRha2UgY29tZm9ydCBhIGxpdHRsZSwKQmVmb3JlIEkgZ28gd2hlbmNlIEkgc2hhbGwgbm90IHJldHVybiwgZXZlbiB0byB0aGUgbGFuZCBvZiBkYXJrbmVzcyBhbmQgdGhlIHNoYWRvdyBvZiBkZWF0aDsKQSBsYW5kIG9mIGRhcmtuZXNzLCBhcyBkYXJrbmVzcyBpdHNlbGY7IGFuZCBvZiB0aGUgc2hhZG93IG9mIGRlYXRoLCB3aXRob3V0IGFueSBvcmRlciwgYW5kIHdoZXJlIHRoZSBsaWdodCBpcyBhcyBkYXJrbmVzcy4KVGhlbiBhbnN3ZXJlZCBab3BoYXIgdGhlIE5hYW1hdGhpdGUsIGFuZCBzYWlkLApTaG91bGQgbm90IHRoZSBtdWx0aXR1ZGUgb2Ygd29yZHMgYmUgYW5zd2VyZWQ/IGFuZCBzaG91bGQgYSBtYW4gZnVsbCBvZiB0YWxrIGJlIGp1c3RpZmllZD8KU2hvdWxkIHRoeSBsaWVzIG1ha2UgbWVuIGhvbGQgdGhlaXIgcGVhY2U/IGFuZCB3aGVuIHRob3UgbW9ja2VzdCwgc2hhbGwgbm8gbWFuIG1ha2UgdGhlZSBhc2hhbWVkPwpGb3IgdGhvdSBoYXN0IHNhaWQsIE15IGRvY3RyaW5lIGlzIHB1cmUsIGFuZCBJIGFtIGNsZWFuIGluIHRoaW5lIGV5ZXMuCkJ1dCBvaCB0aGF0IEdvZCB3b3VsZCBzcGVhaywgYW5kIG9wZW4gaGlzIGxpcHMgYWdhaW5zdCB0aGVlOwpBbmQgdGhhdCBoZSB3b3VsZCBzaGV3IHRoZWUgdGhlIHNlY3JldHMgb2Ygd2lzZG9tLCB0aGF0IHRoZXkgYXJlIGRvdWJsZSB0byB0aGF0IHdoaWNoIGlzISBLbm93IHRoZXJlZm9yZSB0aGF0IEdvZCBleGFjdGV0aCBvZiB0aGVlIGxlc3MgdGhhbiB0aGluZSBpbmlxdWl0eSBkZXNlcnZldGguCkNhbnN0IHRob3UgYnkgc2VhcmNoaW5nIGZpbmQgb3V0IEdvZD8gY2Fuc3QgdGhvdSBmaW5kIG91dCB0aGUgQWxtaWdodHkgdW50byBwZXJmZWN0aW9uPwpJdCBpcyBhcyBoaWdoIGFzIGhlYXZlbjsgd2hhdCBjYW5zdCB0aG91IGRvPyBkZWVwZXIgdGhhbiBoZWxsOyB3aGF0IGNhbnN0IHRob3Uga25vdz8KVGhlIG1lYXN1cmUgdGhlcmVvZiBpcyBsb25nZXIgdGhhbiB0aGUgZWFydGgsIGFuZCBicm9hZGVyIHRoYW4gdGhlIHNlYS4KSWYgaGUgY3V0IG9mZiwgYW5kIHNodXQgdXAsIG9yIGdhdGhlciB0b2dldGhlciwgdGhlbiB3aG8gY2FuIGhpbmRlciBoaW0/CkZvciBoZSBrbm93ZXRoIHZhaW4gbWVuOiBoZSBzZWV0aCB3aWNrZWRuZXNzIGFsc287IHdpbGwgaGUgbm90IHRoZW4gY29uc2lkZXIgaXQ/CkZvciB2YWluIG1lbiB3b3VsZCBiZSB3aXNlLCB0aG91Z2ggbWFuIGJlIGJvcm4gbGlrZSBhIHdpbGQgYXNzJ3MgY29sdC4KSWYgdGhvdSBwcmVwYXJlIHRoaW5lIGhlYXJ0LCBhbmQgc3RyZXRjaCBvdXQgdGhpbmUgaGFuZHMgdG93YXJkIGhpbTsKSWYgaW5pcXVpdHkgYmUgaW4gdGhpbmUgaGFuZCwgcHV0IGl0IGZhciBhd2F5LCBhbmQgbGV0IG5vdCB3aWNrZWRuZXNzIGR3ZWxsIGluIHRoeSB0YWJlcm5hY2xlcy4KRm9yIHRoZW4gc2hhbHQgdGhvdSBsaWZ0IHVwIHRoeSBmYWNlIHdpdGhvdXQgc3BvdDsgeWVhLCB0aG91IHNoYWx0IGJlIHN0ZWRmYXN0LCBhbmQgc2hhbHQgbm90IGZlYXI6CkJlY2F1c2UgdGhvdSBzaGFsdCBmb3JnZXQgdGh5IG1pc2VyeSwgYW5kIHJlbWVtYmVyIGl0IGFzIHdhdGVycyB0aGF0IHBhc3MgYXdheToKQW5kIHRoaW5lIGFnZSBzaGFsbCBiZSBjbGVhcmVyIHRoYW4gdGhlIG5vb25kYXk6IHRob3Ugc2hhbHQgc2hpbmUgZm9ydGgsIHRob3Ugc2hhbHQgYmUgYXMgdGhlIG1vcm5pbmcuCkFuZCB0aG91IHNoYWx0IGJlIHNlY3VyZSwgYmVjYXVzZSB0aGVyZSBpcyBob3BlOyB5ZWEsIHRob3Ugc2hhbHQgZGlnIGFib3V0IHRoZWUsIGFuZCB0aG91IHNoYWx0IHRha2UgdGh5IHJlc3QgaW4gc2FmZXR5LgpBbHNvIHRob3Ugc2hhbHQgbGllIGRvd24sIGFuZCBub25lIHNoYWxsIG1ha2UgdGhlZSBhZnJhaWQ7IHllYSwgbWFueSBzaGFsbCBtYWtlIHN1aXQgdW50byB0aGVlLgpCdXQgdGhlIGV5ZXMgb2YgdGhlIHdpY2tlZCBzaGFsbCBmYWlsLCBhbmQgdGhleSBzaGFsbCBub3QgZXNjYXBlLCBhbmQgdGhlaXIgaG9wZSBzaGFsbCBiZSBhcyB0aGUgZ2l2aW5nIHVwIG9mIHRoZSBnaG9zdC4KQW5kIEpvYiBhbnN3ZXJlZCBhbmQgc2FpZCwKTm8gZG91YnQgYnV0IHllIGFyZSB0aGUgcGVvcGxlLCBhbmQgd2lzZG9tIHNoYWxsIGRpZSB3aXRoIHlvdS4KQnV0IEkgaGF2ZSB1bmRlcnN0YW5kaW5nIGFzIHdlbGwgYXMgeW91OyBJIGFtIG5vdCBpbmZlcmlvciB0byB5b3U6IHllYSwgd2hvIGtub3dldGggbm90IHN1Y2ggdGhpbmdzIGFzIHRoZXNlPwpJIGFtIGFzIG9uZSBtb2NrZWQgb2YgaGlzIG5laWdoYm91ciwgd2hvIGNhbGxldGggdXBvbiBHb2QsIGFuZCBoZSBhbnN3ZXJldGggaGltOiB0aGUganVzdCB1cHJpZ2h0IG1hbiBpcyBsYXVnaGVkIHRvIHNjb3JuLgpIZSB0aGF0IGlzIHJlYWR5IHRvIHNsaXAgd2l0aCBoaXMgZmVldCBpcyBhcyBhIGxhbXAgZGVzcGlzZWQgaW4gdGhlIHRob3VnaHQgb2YgaGltIHRoYXQgaXMgYXQgZWFzZS4KVGhlIHRhYmVybmFjbGVzIG9mIHJvYmJlcnMgcHJvc3BlciwgYW5kIHRoZXkgdGhhdCBwcm92b2tlIEdvZCBhcmUgc2VjdXJlOyBpbnRvIHdob3NlIGhhbmQgR29kIGJyaW5nZXRoIGFidW5kYW50bHkuCkJ1dCBhc2sgbm93IHRoZSBiZWFzdHMsIGFuZCB0aGV5IHNoYWxsIHRlYWNoIHRoZWU7IGFuZCB0aGUgZm93bHMgb2YgdGhlIGFpciwgYW5kIHRoZXkgc2hhbGwgdGVsbCB0aGVlOgpPciBzcGVhayB0byB0aGUgZWFydGgsIGFuZCBpdCBzaGFsbCB0ZWFjaCB0aGVlOiBhbmQgdGhlIGZpc2hlcyBvZiB0aGUgc2VhIHNoYWxsIGRlY2xhcmUgdW50byB0aGVlLgpXaG8ga25vd2V0aCBub3QgaW4gYWxsIHRoZXNlIHRoYXQgdGhlIGhhbmQgb2YgdGhlIExPUkQgaGF0aCB3cm91Z2h0IHRoaXM/CkluIHdob3NlIGhhbmQgaXMgdGhlIHNvdWwgb2YgZXZlcnkgbGl2aW5nIHRoaW5nLCBhbmQgdGhlIGJyZWF0aCBvZiBhbGwgbWFua2luZC4KRG90aCBub3QgdGhlIGVhciB0cnkgd29yZHM/IGFuZCB0aGUgbW91dGggdGFzdGUgaGlzIG1lYXQ/CldpdGggdGhlIGFuY2llbnQgaXMgd2lzZG9tOyBhbmQgaW4gbGVuZ3RoIG9mIGRheXMgdW5kZXJzdGFuZGluZy4KV2l0aCBoaW0gaXMgd2lzZG9tIGFuZCBzdHJlbmd0aCwgaGUgaGF0aCBjb3Vuc2VsIGFuZCB1bmRlcnN0YW5kaW5nLgpCZWhvbGQsIGhlIGJyZWFrZXRoIGRvd24sIGFuZCBpdCBjYW5ub3QgYmUgYnVpbHQgYWdhaW46IGhlIHNodXR0ZXRoIHVwIGEgbWFuLCBhbmQgdGhlcmUgY2FuIGJlIG5vIG9wZW5pbmcuCkJlaG9sZCwgaGUgd2l0aGhvbGRldGggdGhlIHdhdGVycywgYW5kIHRoZXkgZHJ5IHVwOiBhbHNvIGhlIHNlbmRldGggdGhlbSBvdXQsIGFuZCB0aGV5IG92ZXJ0dXJuIHRoZSBlYXJ0aC4KV2l0aCBoaW0gaXMgc3RyZW5ndGggYW5kIHdpc2RvbTogdGhlIGRlY2VpdmVkIGFuZCB0aGUgZGVjZWl2ZXIgYXJlIGhpcy4KSGUgbGVhZGV0aCBjb3Vuc2VsbG9ycyBhd2F5IHNwb2lsZWQsIGFuZCBtYWtldGggdGhlIGp1ZGdlcyBmb29scy4KSGUgbG9vc2V0aCB0aGUgYm9uZCBvZiBraW5ncywgYW5kIGdpcmRldGggdGhlaXIgbG9pbnMgd2l0aCBhIGdpcmRsZS4KSGUgbGVhZGV0aCBwcmluY2VzIGF3YXkgc3BvaWxlZCwgYW5kIG92ZXJ0aHJvd2V0aCB0aGUgbWlnaHR5LgpIZSByZW1vdmV0aCBhd2F5IHRoZSBzcGVlY2ggb2YgdGhlIHRydXN0eSwgYW5kIHRha2V0aCBhd2F5IHRoZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBhZ2VkLgpIZSBwb3VyZXRoIGNvbnRlbXB0IHVwb24gcHJpbmNlcywgYW5kIHdlYWtlbmV0aCB0aGUgc3RyZW5ndGggb2YgdGhlIG1pZ2h0eS4KSGUgZGlzY292ZXJldGggZGVlcCB0aGluZ3Mgb3V0IG9mIGRhcmtuZXNzLCBhbmQgYnJpbmdldGggb3V0IHRvIGxpZ2h0IHRoZSBzaGFkb3cgb2YgZGVhdGguCkhlIGluY3JlYXNldGggdGhlIG5hdGlvbnMsIGFuZCBkZXN0cm95ZXRoIHRoZW06IGhlIGVubGFyZ2V0aCB0aGUgbmF0aW9ucywgYW5kIHN0cmFpdGVuZXRoIHRoZW0gYWdhaW4uCkhlIHRha2V0aCBhd2F5IHRoZSBoZWFydCBvZiB0aGUgY2hpZWYgb2YgdGhlIHBlb3BsZSBvZiB0aGUgZWFydGgsIGFuZCBjYXVzZXRoIHRoZW0gdG8gd2FuZGVyIGluIGEgd2lsZGVybmVzcyB3aGVyZSB0aGVyZSBpcyBubyB3YXkuClRoZXkgZ3JvcGUgaW4gdGhlIGRhcmsgd2l0aG91dCBsaWdodCwgYW5kIGhlIG1ha2V0aCB0aGVtIHRvIHN0YWdnZXIgbGlrZSBhIGRydW5rZW4gbWFuLgpMbywgbWluZSBleWUgaGF0aCBzZWVuIGFsbCB0aGlzLCBtaW5lIGVhciBoYXRoIGhlYXJkIGFuZCB1bmRlcnN0b29kIGl0LgpXaGF0IHllIGtub3csIHRoZSBzYW1lIGRvIEkga25vdyBhbHNvOiBJIGFtIG5vdCBpbmZlcmlvciB1bnRvIHlvdS4KU3VyZWx5IEkgd291bGQgc3BlYWsgdG8gdGhlIEFsbWlnaHR5LCBhbmQgSSBkZXNpcmUgdG8gcmVhc29uIHdpdGggR29kLgpCdXQgeWUgYXJlIGZvcmdlcnMgb2YgbGllcywgeWUgYXJlIGFsbCBwaHlzaWNpYW5zIG9mIG5vIHZhbHVlLgpPIHRoYXQgeWUgd291bGQgYWx0b2dldGhlciBob2xkIHlvdXIgcGVhY2UhIGFuZCBpdCBzaG91bGQgYmUgeW91ciB3aXNkb20uCkhlYXIgbm93IG15IHJlYXNvbmluZywgYW5kIGhlYXJrZW4gdG8gdGhlIHBsZWFkaW5ncyBvZiBteSBsaXBzLgpXaWxsIHllIHNwZWFrIHdpY2tlZGx5IGZvciBHb2Q/IGFuZCB0YWxrIGRlY2VpdGZ1bGx5IGZvciBoaW0/CldpbGwgeWUgYWNjZXB0IGhpcyBwZXJzb24/IHdpbGwgeWUgY29udGVuZCBmb3IgR29kPwpJcyBpdCBnb29kIHRoYXQgaGUgc2hvdWxkIHNlYXJjaCB5b3Ugb3V0PyBvciBhcyBvbmUgbWFuIG1vY2tldGggYW5vdGhlciwgZG8geWUgc28gbW9jayBoaW0/CkhlIHdpbGwgc3VyZWx5IHJlcHJvdmUgeW91LCBpZiB5ZSBkbyBzZWNyZXRseSBhY2NlcHQgcGVyc29ucy4KU2hhbGwgbm90IGhpcyBleGNlbGxlbmN5IG1ha2UgeW91IGFmcmFpZD8gYW5kIGhpcyBkcmVhZCBmYWxsIHVwb24geW91PwpZb3VyIHJlbWVtYnJhbmNlcyBhcmUgbGlrZSB1bnRvIGFzaGVzLCB5b3VyIGJvZGllcyB0byBib2RpZXMgb2YgY2xheS4KSG9sZCB5b3VyIHBlYWNlLCBsZXQgbWUgYWxvbmUsIHRoYXQgSSBtYXkgc3BlYWssIGFuZCBsZXQgY29tZSBvbiBtZSB3aGF0IHdpbGwuCldoZXJlZm9yZSBkbyBJIHRha2UgbXkgZmxlc2ggaW4gbXkgdGVldGgsIGFuZCBwdXQgbXkgbGlmZSBpbiBtaW5lIGhhbmQ/ClRob3VnaCBoZSBzbGF5IG1lLCB5ZXQgd2lsbCBJIHRydXN0IGluIGhpbTogYnV0IEkgd2lsbCBtYWludGFpbiBtaW5lIG93biB3YXlzIGJlZm9yZSBoaW0uCkhlIGFsc28gc2hhbGwgYmUgbXkgc2FsdmF0aW9uOiBmb3IgYW4gaHlwb2NyaXRlIHNoYWxsIG5vdCBjb21lIGJlZm9yZSBoaW0uCkhlYXIgZGlsaWdlbnRseSBteSBzcGVlY2gsIGFuZCBteSBkZWNsYXJhdGlvbiB3aXRoIHlvdXIgZWFycy4KQmVob2xkIG5vdywgSSBoYXZlIG9yZGVyZWQgbXkgY2F1c2U7IEkga25vdyB0aGF0IEkgc2hhbGwgYmUganVzdGlmaWVkLgpXaG8gaXMgaGUgdGhhdCB3aWxsIHBsZWFkIHdpdGggbWU/IGZvciBub3csIGlmIEkgaG9sZCBteSB0b25ndWUsIEkgc2hhbGwgZ2l2ZSB1cCB0aGUgZ2hvc3QuCk9ubHkgZG8gbm90IHR3byB0aGluZ3MgdW50byBtZTogdGhlbiB3aWxsIEkgbm90IGhpZGUgbXlzZWxmIGZyb20gdGhlZS4KV2l0aGRyYXcgdGhpbmUgaGFuZCBmYXIgZnJvbSBtZTogYW5kIGxldCBub3QgdGh5IGRyZWFkIG1ha2UgbWUgYWZyYWlkLgpUaGVuIGNhbGwgdGhvdSwgYW5kIEkgd2lsbCBhbnN3ZXI6IG9yIGxldCBtZSBzcGVhaywgYW5kIGFuc3dlciB0aG91IG1lLgpIb3cgbWFueSBhcmUgbWluZSBpbmlxdWl0aWVzIGFuZCBzaW5zPyBtYWtlIG1lIHRvIGtub3cgbXkgdHJhbnNncmVzc2lvbiBhbmQgbXkgc2luLgpXaGVyZWZvcmUgaGlkZXN0IHRob3UgdGh5IGZhY2UsIGFuZCBob2xkZXN0IG1lIGZvciB0aGluZSBlbmVteT8KV2lsdCB0aG91IGJyZWFrIGEgbGVhZiBkcml2ZW4gdG8gYW5kIGZybz8gYW5kIHdpbHQgdGhvdSBwdXJzdWUgdGhlIGRyeSBzdHViYmxlPwpGb3IgdGhvdSB3cml0ZXN0IGJpdHRlciB0aGluZ3MgYWdhaW5zdCBtZSwgYW5kIG1ha2VzdCBtZSB0byBwb3NzZXNzIHRoZSBpbmlxdWl0aWVzIG9mIG15IHlvdXRoLgpUaG91IHB1dHRlc3QgbXkgZmVldCBhbHNvIGluIHRoZSBzdG9ja3MsIGFuZCBsb29rZXN0IG5hcnJvd2x5IHVudG8gYWxsIG15IHBhdGhzOyB0aG91IHNldHRlc3QgYSBwcmludCB1cG9uIHRoZSBoZWVscyBvZiBteSBmZWV0LgpBbmQgaGUsIGFzIGEgcm90dGVuIHRoaW5nLCBjb25zdW1ldGgsIGFzIGEgZ2FybWVudCB0aGF0IGlzIG1vdGggZWF0ZW4uCk1hbiB0aGF0IGlzIGJvcm4gb2YgYSB3b21hbiBpcyBvZiBmZXcgZGF5cyBhbmQgZnVsbCBvZiB0cm91YmxlLgpIZSBjb21ldGggZm9ydGggbGlrZSBhIGZsb3dlciwgYW5kIGlzIGN1dCBkb3duOiBoZSBmbGVldGggYWxzbyBhcyBhIHNoYWRvdywgYW5kIGNvbnRpbnVldGggbm90LgpBbmQgZG90aCB0aG91IG9wZW4gdGhpbmUgZXllcyB1cG9uIHN1Y2ggYW4gb25lLCBhbmQgYnJpbmdlc3QgbWUgaW50byBqdWRnbWVudCB3aXRoIHRoZWU/CldobyBjYW4gYnJpbmcgYSBjbGVhbiB0aGluZyBvdXQgb2YgYW4gdW5jbGVhbj8gbm90IG9uZS4KU2VlaW5nIGhpcyBkYXlzIGFyZSBkZXRlcm1pbmVkLCB0aGUgbnVtYmVyIG9mIGhpcyBtb250aHMgYXJlIHdpdGggdGhlZSwgdGhvdSBoYXN0IGFwcG9pbnRlZCBoaXMgYm91bmRzIHRoYXQgaGUgY2Fubm90IHBhc3M7ClR1cm4gZnJvbSBoaW0sIHRoYXQgaGUgbWF5IHJlc3QsIHRpbGwgaGUgc2hhbGwgYWNjb21wbGlzaCwgYXMgYW4gaGlyZWxpbmcsIGhpcyBkYXkuCkZvciB0aGVyZSBpcyBob3BlIG9mIGEgdHJlZSwgaWYgaXQgYmUgY3V0IGRvd24sIHRoYXQgaXQgd2lsbCBzcHJvdXQgYWdhaW4sIGFuZCB0aGF0IHRoZSB0ZW5kZXIgYnJhbmNoIHRoZXJlb2Ygd2lsbCBub3QgY2Vhc2UuClRob3VnaCB0aGUgcm9vdCB0aGVyZW9mIHdheCBvbGQgaW4gdGhlIGVhcnRoLCBhbmQgdGhlIHN0b2NrIHRoZXJlb2YgZGllIGluIHRoZSBncm91bmQ7CllldCB0aHJvdWdoIHRoZSBzY2VudCBvZiB3YXRlciBpdCB3aWxsIGJ1ZCwgYW5kIGJyaW5nIGZvcnRoIGJvdWdocyBsaWtlIGEgcGxhbnQuCkJ1dCBtYW4gZGlldGgsIGFuZCB3YXN0ZXRoIGF3YXk6IHllYSwgbWFuIGdpdmV0aCB1cCB0aGUgZ2hvc3QsIGFuZCB3aGVyZSBpcyBoZT8KQXMgdGhlIHdhdGVycyBmYWlsIGZyb20gdGhlIHNlYSwgYW5kIHRoZSBmbG9vZCBkZWNheWV0aCBhbmQgZHJpZXRoIHVwOgpTbyBtYW4gbGlldGggZG93biwgYW5kIHJpc2V0aCBub3Q6IHRpbGwgdGhlIGhlYXZlbnMgYmUgbm8gbW9yZSwgdGhleSBzaGFsbCBub3QgYXdha2UsIG5vciBiZSByYWlzZWQgb3V0IG9mIHRoZWlyIHNsZWVwLgpPIHRoYXQgdGhvdSB3b3VsZGVzdCBoaWRlIG1lIGluIHRoZSBncmF2ZSwgdGhhdCB0aG91IHdvdWxkZXN0IGtlZXAgbWUgc2VjcmV0LCB1bnRpbCB0aHkgd3JhdGggYmUgcGFzdCwgdGhhdCB0aG91IHdvdWxkZXN0IGFwcG9pbnQgbWUgYSBzZXQgdGltZSwgYW5kIHJlbWVtYmVyIG1lIQpJZiBhIG1hbiBkaWUsIHNoYWxsIGhlIGxpdmUgYWdhaW4/IGFsbCB0aGUgZGF5cyBvZiBteSBhcHBvaW50ZWQgdGltZSB3aWxsIEkgd2FpdCwgdGlsbCBteSBjaGFuZ2UgY29tZS4KVGhvdSBzaGFsdCBjYWxsLCBhbmQgSSB3aWxsIGFuc3dlciB0aGVlOiB0aG91IHdpbHQgaGF2ZSBhIGRlc2lyZSB0byB0aGUgd29yayBvZiB0aGluZSBoYW5kcy4KRm9yIG5vdyB0aG91IG51bWJlcmVzdCBteSBzdGVwczogZG9zdCB0aG91IG5vdCB3YXRjaCBvdmVyIG15IHNpbj8KTXkgdHJhbnNncmVzc2lvbiBpcyBzZWFsZWQgdXAgaW4gYSBiYWcsIGFuZCB0aG91IHNld2VzdCB1cCBtaW5lIGluaXF1aXR5LgpBbmQgc3VyZWx5IHRoZSBtb3VudGFpbnMgZmFsbGluZyBjb21ldGggdG8gbm91Z2h0LCBhbmQgdGhlIHJvY2sgaXMgcmVtb3ZlZCBvdXQgb2YgaGlzIHBsYWNlLgpUaGUgd2F0ZXJzIHdlYXIgdGhlIHN0b25lczogdGhvdSB3YXNoZXN0IGF3YXkgdGhlIHRoaW5ncyB3aGljaCBncm93IG91dCBvZiB0aGUgZHVzdCBvZiB0aGUgZWFydGg7IGFuZCB0aG91IGRlc3Ryb3llc3QgdGhlIGhvcGUgb2YgbWFuLgpUaG91IHByZXZhaWxlc3QgZm9yIGV2ZXIgYWdhaW5zdCBoaW0sIGFuZCBoZSBwYXNzZXRoOiB0aG91IGNoYW5nZXN0IGhpcyBjb3VudGVuYW5jZSwgYW5kIHNlbmRlc3QgaGltIGF3YXkuCkhpcyBzb25zIGNvbWUgdG8gaG9ub3VyLCBhbmQgaGUga25vd2V0aCBpdCBub3Q7IGFuZCB0aGV5IGFyZSBicm91Z2h0IGxvdywgYnV0IGhlIHBlcmNlaXZldGggaXQgbm90IG9mIHRoZW0uCkJ1dCBoaXMgZmxlc2ggdXBvbiBoaW0gc2hhbGwgaGF2ZSBwYWluLCBhbmQgaGlzIHNvdWwgd2l0aGluIGhpbSBzaGFsbCBtb3Vybi4KVGhlbiBhbnN3ZXJlZCBFbGlwaGF6IHRoZSBUZW1hbml0ZSwgYW5kIHNhaWQsClNob3VsZCBhIHdpc2UgbWFuIHV0dGVyIHZhaW4ga25vd2xlZGdlLCBhbmQgZmlsbCBoaXMgYmVsbHkgd2l0aCB0aGUgZWFzdCB3aW5kPwpTaG91bGQgaGUgcmVhc29uIHdpdGggdW5wcm9maXRhYmxlIHRhbGs/IG9yIHdpdGggc3BlZWNoZXMgd2hlcmV3aXRoIGhlIGNhbiBkbyBubyBnb29kPwpZZWEsIHRob3UgY2FzdGVzdCBvZmYgZmVhciwgYW5kIHJlc3RyYWluZXN0IHByYXllciBiZWZvcmUgR29kLgpGb3IgdGh5IG1vdXRoIHV0dGVyZXRoIHRoaW5lIGluaXF1aXR5LCBhbmQgdGhvdSBjaG9vc2VzdCB0aGUgdG9uZ3VlIG9mIHRoZSBjcmFmdHkuClRoaW5lIG93biBtb3V0aCBjb25kZW1uZXRoIHRoZWUsIGFuZCBub3QgSTogeWVhLCB0aGluZSBvd24gbGlwcyB0ZXN0aWZ5IGFnYWluc3QgdGhlZS4KQXJ0IHRob3UgdGhlIGZpcnN0IG1hbiB0aGF0IHdhcyBib3JuPyBvciB3YXN0IHRob3UgbWFkZSBiZWZvcmUgdGhlIGhpbGxzPwpIYXN0IHRob3UgaGVhcmQgdGhlIHNlY3JldCBvZiBHb2Q/IGFuZCBkb3N0IHRob3UgcmVzdHJhaW4gd2lzZG9tIHRvIHRoeXNlbGY/CldoYXQga25vd2VzdCB0aG91LCB0aGF0IHdlIGtub3cgbm90PyB3aGF0IHVuZGVyc3RhbmRlc3QgdGhvdSwgd2hpY2ggaXMgbm90IGluIHVzPwpXaXRoIHVzIGFyZSBib3RoIHRoZSBncmF5aGVhZGVkIGFuZCB2ZXJ5IGFnZWQgbWVuLCBtdWNoIGVsZGVyIHRoYW4gdGh5IGZhdGhlci4KQXJlIHRoZSBjb25zb2xhdGlvbnMgb2YgR29kIHNtYWxsIHdpdGggdGhlZT8gaXMgdGhlcmUgYW55IHNlY3JldCB0aGluZyB3aXRoIHRoZWU/CldoeSBkb3RoIHRoaW5lIGhlYXJ0IGNhcnJ5IHRoZWUgYXdheT8gYW5kIHdoYXQgZG8gdGh5IGV5ZXMgd2luayBhdCwKVGhhdCB0aG91IHR1cm5lc3QgdGh5IHNwaXJpdCBhZ2FpbnN0IEdvZCwgYW5kIGxldHRlc3Qgc3VjaCB3b3JkcyBnbyBvdXQgb2YgdGh5IG1vdXRoPwpXaGF0IGlzIG1hbiwgdGhhdCBoZSBzaG91bGQgYmUgY2xlYW4/IGFuZCBoZSB3aGljaCBpcyBib3JuIG9mIGEgd29tYW4sIHRoYXQgaGUgc2hvdWxkIGJlIHJpZ2h0ZW91cz8KQmVob2xkLCBoZSBwdXR0ZXRoIG5vIHRydXN0IGluIGhpcyBzYWludHM7IHllYSwgdGhlIGhlYXZlbnMgYXJlIG5vdCBjbGVhbiBpbiBoaXMgc2lnaHQuCkhvdyBtdWNoIG1vcmUgYWJvbWluYWJsZSBhbmQgZmlsdGh5IGlzIG1hbiwgd2hpY2ggZHJpbmtldGggaW5pcXVpdHkgbGlrZSB3YXRlcj8KSSB3aWxsIHNoZXcgdGhlZSwgaGVhciBtZTsgYW5kIHRoYXQgd2hpY2ggSSBoYXZlIHNlZW4gSSB3aWxsIGRlY2xhcmU7CldoaWNoIHdpc2UgbWVuIGhhdmUgdG9sZCBmcm9tIHRoZWlyIGZhdGhlcnMsIGFuZCBoYXZlIG5vdCBoaWQgaXQ6ClVudG8gd2hvbSBhbG9uZSB0aGUgZWFydGggd2FzIGdpdmVuLCBhbmQgbm8gc3RyYW5nZXIgcGFzc2VkIGFtb25nIHRoZW0uClRoZSB3aWNrZWQgbWFuIHRyYXZhaWxldGggd2l0aCBwYWluIGFsbCBoaXMgZGF5cywgYW5kIHRoZSBudW1iZXIgb2YgeWVhcnMgaXMgaGlkZGVuIHRvIHRoZSBvcHByZXNzb3IuCkEgZHJlYWRmdWwgc291bmQgaXMgaW4gaGlzIGVhcnM6IGluIHByb3NwZXJpdHkgdGhlIGRlc3Ryb3llciBzaGFsbCBjb21lIHVwb24gaGltLgpIZSBiZWxpZXZldGggbm90IHRoYXQgaGUgc2hhbGwgcmV0dXJuIG91dCBvZiBkYXJrbmVzcywgYW5kIGhlIGlzIHdhaXRlZCBmb3Igb2YgdGhlIHN3b3JkLgpIZSB3YW5kZXJldGggYWJyb2FkIGZvciBicmVhZCwgc2F5aW5nLCBXaGVyZSBpcyBpdD8gaGUga25vd2V0aCB0aGF0IHRoZSBkYXkgb2YgZGFya25lc3MgaXMgcmVhZHkgYXQgaGlzIGhhbmQuClRyb3VibGUgYW5kIGFuZ3Vpc2ggc2hhbGwgbWFrZSBoaW0gYWZyYWlkOyB0aGV5IHNoYWxsIHByZXZhaWwgYWdhaW5zdCBoaW0sIGFzIGEga2luZyByZWFkeSB0byB0aGUgYmF0dGxlLgpGb3IgaGUgc3RyZXRjaGV0aCBvdXQgaGlzIGhhbmQgYWdhaW5zdCBHb2QsIGFuZCBzdHJlbmd0aGVuZXRoIGhpbXNlbGYgYWdhaW5zdCB0aGUgQWxtaWdodHkuCkhlIHJ1bm5ldGggdXBvbiBoaW0sIGV2ZW4gb24gaGlzIG5lY2ssIHVwb24gdGhlIHRoaWNrIGJvc3NlcyBvZiBoaXMgYnVja2xlcnM6CkJlY2F1c2UgaGUgY292ZXJldGggaGlzIGZhY2Ugd2l0aCBoaXMgZmF0bmVzcywgYW5kIG1ha2V0aCBjb2xsb3BzIG9mIGZhdCBvbiBoaXMgZmxhbmtzLgpBbmQgaGUgZHdlbGxldGggaW4gZGVzb2xhdGUgY2l0aWVzLCBhbmQgaW4gaG91c2VzIHdoaWNoIG5vIG1hbiBpbmhhYml0ZXRoLCB3aGljaCBhcmUgcmVhZHkgdG8gYmVjb21lIGhlYXBzLgpIZSBzaGFsbCBub3QgYmUgcmljaCwgbmVpdGhlciBzaGFsbCBoaXMgc3Vic3RhbmNlIGNvbnRpbnVlLCBuZWl0aGVyIHNoYWxsIGhlIHByb2xvbmcgdGhlIHBlcmZlY3Rpb24gdGhlcmVvZiB1cG9uIHRoZSBlYXJ0aC4KSGUgc2hhbGwgbm90IGRlcGFydCBvdXQgb2YgZGFya25lc3M7IHRoZSBmbGFtZSBzaGFsbCBkcnkgdXAgaGlzIGJyYW5jaGVzLCBhbmQgYnkgdGhlIGJyZWF0aCBvZiBoaXMgbW91dGggc2hhbGwgaGUgZ28gYXdheS4KTGV0IG5vdCBoaW0gdGhhdCBpcyBkZWNlaXZlZCB0cnVzdCBpbiB2YW5pdHk6IGZvciB2YW5pdHkgc2hhbGwgYmUgaGlzIHJlY29tcGVuY2UuCkl0IHNoYWxsIGJlIGFjY29tcGxpc2hlZCBiZWZvcmUgaGlzIHRpbWUsIGFuZCBoaXMgYnJhbmNoIHNoYWxsIG5vdCBiZSBncmVlbi4KSGUgc2hhbGwgc2hha2Ugb2ZmIGhpcyB1bnJpcGUgZ3JhcGUgYXMgdGhlIHZpbmUsIGFuZCBzaGFsbCBjYXN0IG9mZiBoaXMgZmxvd2VyIGFzIHRoZSBvbGl2ZS4KRm9yIHRoZSBjb25ncmVnYXRpb24gb2YgaHlwb2NyaXRlcyBzaGFsbCBiZSBkZXNvbGF0ZSwgYW5kIGZpcmUgc2hhbGwgY29uc3VtZSB0aGUgdGFiZXJuYWNsZXMgb2YgYnJpYmVyeS4KVGhleSBjb25jZWl2ZSBtaXNjaGllZiwgYW5kIGJyaW5nIGZvcnRoIHZhbml0eSwgYW5kIHRoZWlyIGJlbGx5IHByZXBhcmV0aCBkZWNlaXQuClRoZW4gSm9iIGFuc3dlcmVkIGFuZCBzYWlkLApJIGhhdmUgaGVhcmQgbWFueSBzdWNoIHRoaW5nczogbWlzZXJhYmxlIGNvbWZvcnRlcnMgYXJlIHllIGFsbC4KU2hhbGwgdmFpbiB3b3JkcyBoYXZlIGFuIGVuZD8gb3Igd2hhdCBlbWJvbGRlbmV0aCB0aGVlIHRoYXQgdGhvdSBhbnN3ZXJlc3Q/CkkgYWxzbyBjb3VsZCBzcGVhayBhcyB5ZSBkbzogaWYgeW91ciBzb3VsIHdlcmUgaW4gbXkgc291bCdzIHN0ZWFkLCBJIGNvdWxkIGhlYXAgdXAgd29yZHMgYWdhaW5zdCB5b3UsIGFuZCBzaGFrZSBtaW5lIGhlYWQgYXQgeW91LgpCdXQgSSB3b3VsZCBzdHJlbmd0aGVuIHlvdSB3aXRoIG15IG1vdXRoLCBhbmQgdGhlIG1vdmluZyBvZiBteSBsaXBzIHNob3VsZCBhc3N3YWdlIHlvdXIgZ3JpZWYuClRob3VnaCBJIHNwZWFrLCBteSBncmllZiBpcyBub3QgYXNzd2FnZWQ6IGFuZCB0aG91Z2ggSSBmb3JiZWFyLCB3aGF0IGFtIEkgZWFzZWQ/CkJ1dCBub3cgaGUgaGF0aCBtYWRlIG1lIHdlYXJ5OiB0aG91IGhhc3QgbWFkZSBkZXNvbGF0ZSBhbGwgbXkgY29tcGFueS4KQW5kIHRob3UgaGFzdCBmaWxsZWQgbWUgd2l0aCB3cmlua2xlcywgd2hpY2ggaXMgYSB3aXRuZXNzIGFnYWluc3QgbWU6IGFuZCBteSBsZWFubmVzcyByaXNpbmcgdXAgaW4gbWUgYmVhcmV0aCB3aXRuZXNzIHRvIG15IGZhY2UuCkhlIHRlYXJldGggbWUgaW4gaGlzIHdyYXRoLCB3aG8gaGF0ZXRoIG1lOiBoZSBnbmFzaGV0aCB1cG9uIG1lIHdpdGggaGlzIHRlZXRoOyBtaW5lIGVuZW15IHNoYXJwZW5ldGggaGlzIGV5ZXMgdXBvbiBtZS4KVGhleSBoYXZlIGdhcGVkIHVwb24gbWUgd2l0aCB0aGVpciBtb3V0aDsgdGhleSBoYXZlIHNtaXR0ZW4gbWUgdXBvbiB0aGUgY2hlZWsgcmVwcm9hY2hmdWxseTsgdGhleSBoYXZlIGdhdGhlcmVkIHRoZW1zZWx2ZXMgdG9nZXRoZXIgYWdhaW5zdCBtZS4KR29kIGhhdGggZGVsaXZlcmVkIG1lIHRvIHRoZSB1bmdvZGx5LCBhbmQgdHVybmVkIG1lIG92ZXIgaW50byB0aGUgaGFuZHMgb2YgdGhlIHdpY2tlZC4KSSB3YXMgYXQgZWFzZSwgYnV0IGhlIGhhdGggYnJva2VuIG1lIGFzdW5kZXI6IGhlIGhhdGggYWxzbyB0YWtlbiBtZSBieSBteSBuZWNrLCBhbmQgc2hha2VuIG1lIHRvIHBpZWNlcywgYW5kIHNldCBtZSB1cCBmb3IgaGlzIG1hcmsuCkhpcyBhcmNoZXJzIGNvbXBhc3MgbWUgcm91bmQgYWJvdXQsIGhlIGNsZWF2ZXRoIG15IHJlaW5zIGFzdW5kZXIsIGFuZCBkb3RoIG5vdCBzcGFyZTsgaGUgcG91cmV0aCBvdXQgbXkgZ2FsbCB1cG9uIHRoZSBncm91bmQuCkhlIGJyZWFrZXRoIG1lIHdpdGggYnJlYWNoIHVwb24gYnJlYWNoLCBoZSBydW5uZXRoIHVwb24gbWUgbGlrZSBhIGdpYW50LgpJIGhhdmUgc2V3ZWQgc2Fja2Nsb3RoIHVwb24gbXkgc2tpbiwgYW5kIGRlZmlsZWQgbXkgaG9ybiBpbiB0aGUgZHVzdC4KTXkgZmFjZSBpcyBmb3VsIHdpdGggd2VlcGluZywgYW5kIG9uIG15IGV5ZWxpZHMgaXMgdGhlIHNoYWRvdyBvZiBkZWF0aDsKTm90IGZvciBhbnkgaW5qdXN0aWNlIGluIG1pbmUgaGFuZHM6IGFsc28gbXkgcHJheWVyIGlzIHB1cmUuCk8gZWFydGgsIGNvdmVyIG5vdCB0aG91IG15IGJsb29kLCBhbmQgbGV0IG15IGNyeSBoYXZlIG5vIHBsYWNlLgpBbHNvIG5vdywgYmVob2xkLCBteSB3aXRuZXNzIGlzIGluIGhlYXZlbiwgYW5kIG15IHJlY29yZCBpcyBvbiBoaWdoLgpNeSBmcmllbmRzIHNjb3JuIG1lOiBidXQgbWluZSBleWUgcG91cmV0aCBvdXQgdGVhcnMgdW50byBHb2QuCk8gdGhhdCBvbmUgbWlnaHQgcGxlYWQgZm9yIGEgbWFuIHdpdGggR29kLCBhcyBhIG1hbiBwbGVhZGV0aCBmb3IgaGlzIG5laWdoYm91ciEKV2hlbiBhIGZldyB5ZWFycyBhcmUgY29tZSwgdGhlbiBJIHNoYWxsIGdvIHRoZSB3YXkgd2hlbmNlIEkgc2hhbGwgbm90IHJldHVybi4KTXkgYnJlYXRoIGlzIGNvcnJ1cHQsIG15IGRheXMgYXJlIGV4dGluY3QsIHRoZSBncmF2ZXMgYXJlIHJlYWR5IGZvciBtZS4KQXJlIHRoZXJlIG5vdCBtb2NrZXJzIHdpdGggbWU/IGFuZCBkb3RoIG5vdCBtaW5lIGV5ZSBjb250aW51ZSBpbiB0aGVpciBwcm92b2NhdGlvbj8KTGF5IGRvd24gbm93LCBwdXQgbWUgaW4gYSBzdXJldHkgd2l0aCB0aGVlOyB3aG8gaXMgaGUgdGhhdCB3aWxsIHN0cmlrZSBoYW5kcyB3aXRoIG1lPwpGb3IgdGhvdSBoYXN0IGhpZCB0aGVpciBoZWFydCBmcm9tIHVuZGVyc3RhbmRpbmc6IHRoZXJlZm9yZSBzaGFsdCB0aG91IG5vdCBleGFsdCB0aGVtLgpIZSB0aGF0IHNwZWFrZXRoIGZsYXR0ZXJ5IHRvIGhpcyBmcmllbmRzLCBldmVuIHRoZSBleWVzIG9mIGhpcyBjaGlsZHJlbiBzaGFsbCBmYWlsLgpIZSBoYXRoIG1hZGUgbWUgYWxzbyBhIGJ5d29yZCBvZiB0aGUgcGVvcGxlOyBhbmQgYWZvcmV0aW1lIEkgd2FzIGFzIGEgdGFicmV0LgpNaW5lIGV5ZSBhbHNvIGlzIGRpbSBieSByZWFzb24gb2Ygc29ycm93LCBhbmQgYWxsIG15IG1lbWJlcnMgYXJlIGFzIGEgc2hhZG93LgpVcHJpZ2h0IG1lbiBzaGFsbCBiZSBhc3RvbmllZCBhdCB0aGlzLCBhbmQgdGhlIGlubm9jZW50IHNoYWxsIHN0aXIgdXAgaGltc2VsZiBhZ2FpbnN0IHRoZSBoeXBvY3JpdGUuClRoZSByaWdodGVvdXMgYWxzbyBzaGFsbCBob2xkIG9uIGhpcyB3YXksIGFuZCBoZSB0aGF0IGhhdGggY2xlYW4gaGFuZHMgc2hhbGwgYmUgc3Ryb25nZXIgYW5kIHN0cm9uZ2VyLgpCdXQgYXMgZm9yIHlvdSBhbGwsIGRvIHllIHJldHVybiwgYW5kIGNvbWUgbm93OiBmb3IgSSBjYW5ub3QgZmluZCBvbmUgd2lzZSBtYW4gYW1vbmcgeW91LgpNeSBkYXlzIGFyZSBwYXN0LCBteSBwdXJwb3NlcyBhcmUgYnJva2VuIG9mZiwgZXZlbiB0aGUgdGhvdWdodHMgb2YgbXkgaGVhcnQuClRoZXkgY2hhbmdlIHRoZSBuaWdodCBpbnRvIGRheTogdGhlIGxpZ2h0IGlzIHNob3J0IGJlY2F1c2Ugb2YgZGFya25lc3MuCklmIEkgd2FpdCwgdGhlIGdyYXZlIGlzIG1pbmUgaG91c2U6IEkgaGF2ZSBtYWRlIG15IGJlZCBpbiB0aGUgZGFya25lc3MuCkkgaGF2ZSBzYWlkIHRvIGNvcnJ1cHRpb24sIFRob3UgYXJ0IG15IGZhdGhlcjogdG8gdGhlIHdvcm0sIFRob3UgYXJ0IG15IG1vdGhlciwgYW5kIG15IHNpc3Rlci4KQW5kIHdoZXJlIGlzIG5vdyBteSBob3BlPyBhcyBmb3IgbXkgaG9wZSwgd2hvIHNoYWxsIHNlZSBpdD8KVGhleSBzaGFsbCBnbyBkb3duIHRvIHRoZSBiYXJzIG9mIHRoZSBwaXQsIHdoZW4gb3VyIHJlc3QgdG9nZXRoZXIgaXMgaW4gdGhlIGR1c3QuClRoZW4gYW5zd2VyZWQgQmlsZGFkIHRoZSBTaHVoaXRlLCBhbmQgc2FpZCwKSG93IGxvbmcgd2lsbCBpdCBiZSBlcmUgeWUgbWFrZSBhbiBlbmQgb2Ygd29yZHM/IG1hcmssIGFuZCBhZnRlcndhcmRzIHdlIHdpbGwgc3BlYWsuCldoZXJlZm9yZSBhcmUgd2UgY291bnRlZCBhcyBiZWFzdHMsIGFuZCByZXB1dGVkIHZpbGUgaW4geW91ciBzaWdodD8KSGUgdGVhcmV0aCBoaW1zZWxmIGluIGhpcyBhbmdlcjogc2hhbGwgdGhlIGVhcnRoIGJlIGZvcnNha2VuIGZvciB0aGVlPyBhbmQgc2hhbGwgdGhlIHJvY2sgYmUgcmVtb3ZlZCBvdXQgb2YgaGlzIHBsYWNlPwpZZWEsIHRoZSBsaWdodCBvZiB0aGUgd2lja2VkIHNoYWxsIGJlIHB1dCBvdXQsIGFuZCB0aGUgc3Bhcmsgb2YgaGlzIGZpcmUgc2hhbGwgbm90IHNoaW5lLgpUaGUgbGlnaHQgc2hhbGwgYmUgZGFyayBpbiBoaXMgdGFiZXJuYWNsZSwgYW5kIGhpcyBjYW5kbGUgc2hhbGwgYmUgcHV0IG91dCB3aXRoIGhpbS4KVGhlIHN0ZXBzIG9mIGhpcyBzdHJlbmd0aCBzaGFsbCBiZSBzdHJhaXRlbmVkLCBhbmQgaGlzIG93biBjb3Vuc2VsIHNoYWxsIGNhc3QgaGltIGRvd24uCkZvciBoZSBpcyBjYXN0IGludG8gYSBuZXQgYnkgaGlzIG93biBmZWV0LCBhbmQgaGUgd2Fsa2V0aCB1cG9uIGEgc25hcmUuClRoZSBnaW4gc2hhbGwgdGFrZSBoaW0gYnkgdGhlIGhlZWwsIGFuZCB0aGUgcm9iYmVyIHNoYWxsIHByZXZhaWwgYWdhaW5zdCBoaW0uClRoZSBzbmFyZSBpcyBsYWlkIGZvciBoaW0gaW4gdGhlIGdyb3VuZCwgYW5kIGEgdHJhcCBmb3IgaGltIGluIHRoZSB3YXkuClRlcnJvcnMgc2hhbGwgbWFrZSBoaW0gYWZyYWlkIG9uIGV2ZXJ5IHNpZGUsIGFuZCBzaGFsbCBkcml2ZSBoaW0gdG8gaGlzIGZlZXQuCkhpcyBzdHJlbmd0aCBzaGFsbCBiZSBodW5nZXJiaXR0ZW4sIGFuZCBkZXN0cnVjdGlvbiBzaGFsbCBiZSByZWFkeSBhdCBoaXMgc2lkZS4KSXQgc2hhbGwgZGV2b3VyIHRoZSBzdHJlbmd0aCBvZiBoaXMgc2tpbjogZXZlbiB0aGUgZmlyc3Rib3JuIG9mIGRlYXRoIHNoYWxsIGRldm91ciBoaXMgc3RyZW5ndGguCkhpcyBjb25maWRlbmNlIHNoYWxsIGJlIHJvb3RlZCBvdXQgb2YgaGlzIHRhYmVybmFjbGUsIGFuZCBpdCBzaGFsbCBicmluZyBoaW0gdG8gdGhlIGtpbmcgb2YgdGVycm9ycy4KSXQgc2hhbGwgZHdlbGwgaW4gaGlzIHRhYmVybmFjbGUsIGJlY2F1c2UgaXQgaXMgbm9uZSBvZiBoaXM6IGJyaW1zdG9uZSBzaGFsbCBiZSBzY2F0dGVyZWQgdXBvbiBoaXMgaGFiaXRhdGlvbi4KSGlzIHJvb3RzIHNoYWxsIGJlIGRyaWVkIHVwIGJlbmVhdGgsIGFuZCBhYm92ZSBzaGFsbCBoaXMgYnJhbmNoIGJlIGN1dCBvZmYuCkhpcyByZW1lbWJyYW5jZSBzaGFsbCBwZXJpc2ggZnJvbSB0aGUgZWFydGgsIGFuZCBoZSBzaGFsbCBoYXZlIG5vIG5hbWUgaW4gdGhlIHN0cmVldC4KSGUgc2hhbGwgYmUgZHJpdmVuIGZyb20gbGlnaHQgaW50byBkYXJrbmVzcywgYW5kIGNoYXNlZCBvdXQgb2YgdGhlIHdvcmxkLgpIZSBzaGFsbCBuZWl0aGVyIGhhdmUgc29uIG5vciBuZXBoZXcgYW1vbmcgaGlzIHBlb3BsZSwgbm9yIGFueSByZW1haW5pbmcgaW4gaGlzIGR3ZWxsaW5ncy4KVGhleSB0aGF0IGNvbWUgYWZ0ZXIgaGltIHNoYWxsIGJlIGFzdG9uaWVkIGF0IGhpcyBkYXksIGFzIHRoZXkgdGhhdCB3ZW50IGJlZm9yZSB3ZXJlIGFmZnJpZ2h0ZWQuClN1cmVseSBzdWNoIGFyZSB0aGUgZHdlbGxpbmdzIG9mIHRoZSB3aWNrZWQsIGFuZCB0aGlzIGlzIHRoZSBwbGFjZSBvZiBoaW0gdGhhdCBrbm93ZXRoIG5vdCBHb2QuClRoZW4gSm9iIGFuc3dlcmVkIGFuZCBzYWlkLApIb3cgbG9uZyB3aWxsIHllIHZleCBteSBzb3VsLCBhbmQgYnJlYWsgbWUgaW4gcGllY2VzIHdpdGggd29yZHM/ClRoZXNlIHRlbiB0aW1lcyBoYXZlIHllIHJlcHJvYWNoZWQgbWU6IHllIGFyZSBub3QgYXNoYW1lZCB0aGF0IHllIG1ha2UgeW91cnNlbHZlcyBzdHJhbmdlIHRvIG1lLgpBbmQgYmUgaXQgaW5kZWVkIHRoYXQgSSBoYXZlIGVycmVkLCBtaW5lIGVycm9yIHJlbWFpbmV0aCB3aXRoIG15c2VsZi4KSWYgaW5kZWVkIHllIHdpbGwgbWFnbmlmeSB5b3Vyc2VsdmVzIGFnYWluc3QgbWUsIGFuZCBwbGVhZCBhZ2FpbnN0IG1lIG15IHJlcHJvYWNoOgpLbm93IG5vdyB0aGF0IEdvZCBoYXRoIG92ZXJ0aHJvd24gbWUsIGFuZCBoYXRoIGNvbXBhc3NlZCBtZSB3aXRoIGhpcyBuZXQuCkJlaG9sZCwgSSBjcnkgb3V0IG9mIHdyb25nLCBidXQgSSBhbSBub3QgaGVhcmQ6IEkgY3J5IGFsb3VkLCBidXQgdGhlcmUgaXMgbm8ganVkZ21lbnQuCkhlIGhhdGggZmVuY2VkIHVwIG15IHdheSB0aGF0IEkgY2Fubm90IHBhc3MsIGFuZCBoZSBoYXRoIHNldCBkYXJrbmVzcyBpbiBteSBwYXRocy4KSGUgaGF0aCBzdHJpcHBlZCBtZSBvZiBteSBnbG9yeSwgYW5kIHRha2VuIHRoZSBjcm93biBmcm9tIG15IGhlYWQuCkhlIGhhdGggZGVzdHJveWVkIG1lIG9uIGV2ZXJ5IHNpZGUsIGFuZCBJIGFtIGdvbmU6IGFuZCBtaW5lIGhvcGUgaGF0aCBoZSByZW1vdmVkIGxpa2UgYSB0cmVlLgpIZSBoYXRoIGFsc28ga2luZGxlZCBoaXMgd3JhdGggYWdhaW5zdCBtZSwgYW5kIGhlIGNvdW50ZXRoIG1lIHVudG8gaGltIGFzIG9uZSBvZiBoaXMgZW5lbWllcy4KSGlzIHRyb29wcyBjb21lIHRvZ2V0aGVyLCBhbmQgcmFpc2UgdXAgdGhlaXIgd2F5IGFnYWluc3QgbWUsIGFuZCBlbmNhbXAgcm91bmQgYWJvdXQgbXkgdGFiZXJuYWNsZS4KSGUgaGF0aCBwdXQgbXkgYnJldGhyZW4gZmFyIGZyb20gbWUsIGFuZCBtaW5lIGFjcXVhaW50YW5jZSBhcmUgdmVyaWx5IGVzdHJhbmdlZCBmcm9tIG1lLgpNeSBraW5zZm9sayBoYXZlIGZhaWxlZCwgYW5kIG15IGZhbWlsaWFyIGZyaWVuZHMgaGF2ZSBmb3Jnb3R0ZW4gbWUuClRoZXkgdGhhdCBkd2VsbCBpbiBtaW5lIGhvdXNlLCBhbmQgbXkgbWFpZHMsIGNvdW50IG1lIGZvciBhIHN0cmFuZ2VyOiBJIGFtIGFuIGFsaWVuIGluIHRoZWlyIHNpZ2h0LgpJIGNhbGxlZCBteSBzZXJ2YW50LCBhbmQgaGUgZ2F2ZSBtZSBubyBhbnN3ZXI7IEkgaW50cmVhdGVkIGhpbSB3aXRoIG15IG1vdXRoLgpNeSBicmVhdGggaXMgc3RyYW5nZSB0byBteSB3aWZlLCB0aG91Z2ggSSBpbnRyZWF0ZWQgZm9yIHRoZSBjaGlsZHJlbidzIHNha2Ugb2YgbWluZSBvd24gYm9keS4KWWVhLCB5b3VuZyBjaGlsZHJlbiBkZXNwaXNlZCBtZTsgSSBhcm9zZSwgYW5kIHRoZXkgc3Bha2UgYWdhaW5zdCBtZS4KQWxsIG15IGlud2FyZCBmcmllbmRzIGFiaG9ycmVkIG1lOiBhbmQgdGhleSB3aG9tIEkgbG92ZWQgYXJlIHR1cm5lZCBhZ2FpbnN0IG1lLgpNeSBib25lIGNsZWF2ZXRoIHRvIG15IHNraW4gYW5kIHRvIG15IGZsZXNoLCBhbmQgSSBhbSBlc2NhcGVkIHdpdGggdGhlIHNraW4gb2YgbXkgdGVldGguCkhhdmUgcGl0eSB1cG9uIG1lLCBoYXZlIHBpdHkgdXBvbiBtZSwgTyB5ZSBteSBmcmllbmRzOyBmb3IgdGhlIGhhbmQgb2YgR29kIGhhdGggdG91Y2hlZCBtZS4KV2h5IGRvIHllIHBlcnNlY3V0ZSBtZSBhcyBHb2QsIGFuZCBhcmUgbm90IHNhdGlzZmllZCB3aXRoIG15IGZsZXNoPwpPaCB0aGF0IG15IHdvcmRzIHdlcmUgbm93IHdyaXR0ZW4hIG9oIHRoYXQgdGhleSB3ZXJlIHByaW50ZWQgaW4gYSBib29rIQpUaGF0IHRoZXkgd2VyZSBncmF2ZW4gd2l0aCBhbiBpcm9uIHBlbiBhbmQgbGVhZCBpbiB0aGUgcm9jayBmb3IgZXZlciEKRm9yIEkga25vdyB0aGF0IG15IHJlZGVlbWVyIGxpdmV0aCwgYW5kIHRoYXQgaGUgc2hhbGwgc3RhbmQgYXQgdGhlIGxhdHRlciBkYXkgdXBvbiB0aGUgZWFydGg6CkFuZCB0aG91Z2ggYWZ0ZXIgbXkgc2tpbiB3b3JtcyBkZXN0cm95IHRoaXMgYm9keSwgeWV0IGluIG15IGZsZXNoIHNoYWxsIEkgc2VlIEdvZDoKV2hvbSBJIHNoYWxsIHNlZSBmb3IgbXlzZWxmLCBhbmQgbWluZSBleWVzIHNoYWxsIGJlaG9sZCwgYW5kIG5vdCBhbm90aGVyOyB0aG91Z2ggbXkgcmVpbnMgYmUgY29uc3VtZWQgd2l0aGluIG1lLgpCdXQgeWUgc2hvdWxkIHNheSwgV2h5IHBlcnNlY3V0ZSB3ZSBoaW0sIHNlZWluZyB0aGUgcm9vdCBvZiB0aGUgbWF0dGVyIGlzIGZvdW5kIGluIG1lPwpCZSB5ZSBhZnJhaWQgb2YgdGhlIHN3b3JkOiBmb3Igd3JhdGggYnJpbmdldGggdGhlIHB1bmlzaG1lbnRzIG9mIHRoZSBzd29yZCwgdGhhdCB5ZSBtYXkga25vdyB0aGVyZSBpcyBhIGp1ZGdtZW50LgpUaGVuIGFuc3dlcmVkIFpvcGhhciB0aGUgTmFhbWF0aGl0ZSwgYW5kIHNhaWQsClRoZXJlZm9yZSBkbyBteSB0aG91Z2h0cyBjYXVzZSBtZSB0byBhbnN3ZXIsIGFuZCBmb3IgdGhpcyBJIG1ha2UgaGFzdGUuCkkgaGF2ZSBoZWFyZCB0aGUgY2hlY2sgb2YgbXkgcmVwcm9hY2gsIGFuZCB0aGUgc3Bpcml0IG9mIG15IHVuZGVyc3RhbmRpbmcgY2F1c2V0aCBtZSB0byBhbnN3ZXIuCktub3dlc3QgdGhvdSBub3QgdGhpcyBvZiBvbGQsIHNpbmNlIG1hbiB3YXMgcGxhY2VkIHVwb24gZWFydGgsClRoYXQgdGhlIHRyaXVtcGhpbmcgb2YgdGhlIHdpY2tlZCBpcyBzaG9ydCwgYW5kIHRoZSBqb3kgb2YgdGhlIGh5cG9jcml0ZSBidXQgZm9yIGEgbW9tZW50PwpUaG91Z2ggaGlzIGV4Y2VsbGVuY3kgbW91bnQgdXAgdG8gdGhlIGhlYXZlbnMsIGFuZCBoaXMgaGVhZCByZWFjaCB1bnRvIHRoZSBjbG91ZHM7CllldCBoZSBzaGFsbCBwZXJpc2ggZm9yIGV2ZXIgbGlrZSBoaXMgb3duIGR1bmc6IHRoZXkgd2hpY2ggaGF2ZSBzZWVuIGhpbSBzaGFsbCBzYXksIFdoZXJlIGlzIGhlPwpIZSBzaGFsbCBmbHkgYXdheSBhcyBhIGRyZWFtLCBhbmQgc2hhbGwgbm90IGJlIGZvdW5kOiB5ZWEsIGhlIHNoYWxsIGJlIGNoYXNlZCBhd2F5IGFzIGEgdmlzaW9uIG9mIHRoZSBuaWdodC4KVGhlIGV5ZSBhbHNvIHdoaWNoIHNhdyBoaW0gc2hhbGwgc2VlIGhpbSBubyBtb3JlOyBuZWl0aGVyIHNoYWxsIGhpcyBwbGFjZSBhbnkgbW9yZSBiZWhvbGQgaGltLgpIaXMgY2hpbGRyZW4gc2hhbGwgc2VlayB0byBwbGVhc2UgdGhlIHBvb3IsIGFuZCBoaXMgaGFuZHMgc2hhbGwgcmVzdG9yZSB0aGVpciBnb29kcy4KSGlzIGJvbmVzIGFyZSBmdWxsIG9mIHRoZSBzaW4gb2YgaGlzIHlvdXRoLCB3aGljaCBzaGFsbCBsaWUgZG93biB3aXRoIGhpbSBpbiB0aGUgZHVzdC4KVGhvdWdoIHdpY2tlZG5lc3MgYmUgc3dlZXQgaW4gaGlzIG1vdXRoLCB0aG91Z2ggaGUgaGlkZSBpdCB1bmRlciBoaXMgdG9uZ3VlOwpUaG91Z2ggaGUgc3BhcmUgaXQsIGFuZCBmb3JzYWtlIGl0IG5vdDsgYnV0IGtlZXAgaXQgc3RpbGwgd2l0aGluIGhpcyBtb3V0aDoKWWV0IGhpcyBtZWF0IGluIGhpcyBib3dlbHMgaXMgdHVybmVkLCBpdCBpcyB0aGUgZ2FsbCBvZiBhc3BzIHdpdGhpbiBoaW0uCkhlIGhhdGggc3dhbGxvd2VkIGRvd24gcmljaGVzLCBhbmQgaGUgc2hhbGwgdm9taXQgdGhlbSB1cCBhZ2FpbjogR29kIHNoYWxsIGNhc3QgdGhlbSBvdXQgb2YgaGlzIGJlbGx5LgpIZSBzaGFsbCBzdWNrIHRoZSBwb2lzb24gb2YgYXNwczogdGhlIHZpcGVyJ3MgdG9uZ3VlIHNoYWxsIHNsYXkgaGltLgpIZSBzaGFsbCBub3Qgc2VlIHRoZSByaXZlcnMsIHRoZSBmbG9vZHMsIHRoZSBicm9va3Mgb2YgaG9uZXkgYW5kIGJ1dHRlci4KVGhhdCB3aGljaCBoZSBsYWJvdXJlZCBmb3Igc2hhbGwgaGUgcmVzdG9yZSwgYW5kIHNoYWxsIG5vdCBzd2FsbG93IGl0IGRvd246IGFjY29yZGluZyB0byBoaXMgc3Vic3RhbmNlIHNoYWxsIHRoZSByZXN0aXR1dGlvbiBiZSwgYW5kIGhlIHNoYWxsIG5vdCByZWpvaWNlIHRoZXJlaW4uCkJlY2F1c2UgaGUgaGF0aCBvcHByZXNzZWQgYW5kIGhhdGggZm9yc2FrZW4gdGhlIHBvb3I7IGJlY2F1c2UgaGUgaGF0aCB2aW9sZW50bHkgdGFrZW4gYXdheSBhbiBob3VzZSB3aGljaCBoZSBidWlsZGVkIG5vdDsKU3VyZWx5IGhlIHNoYWxsIG5vdCBmZWVsIHF1aWV0bmVzcyBpbiBoaXMgYmVsbHksIGhlIHNoYWxsIG5vdCBzYXZlIG9mIHRoYXQgd2hpY2ggaGUgZGVzaXJlZC4KVGhlcmUgc2hhbGwgbm9uZSBvZiBoaXMgbWVhdCBiZSBsZWZ0OyB0aGVyZWZvcmUgc2hhbGwgbm8gbWFuIGxvb2sgZm9yIGhpcyBnb29kcy4KSW4gdGhlIGZ1bG5lc3Mgb2YgaGlzIHN1ZmZpY2llbmN5IGhlIHNoYWxsIGJlIGluIHN0cmFpdHM6IGV2ZXJ5IGhhbmQgb2YgdGhlIHdpY2tlZCBzaGFsbCBjb21lIHVwb24gaGltLgpXaGVuIGhlIGlzIGFib3V0IHRvIGZpbGwgaGlzIGJlbGx5LCBHb2Qgc2hhbGwgY2FzdCB0aGUgZnVyeSBvZiBoaXMgd3JhdGggdXBvbiBoaW0sIGFuZCBzaGFsbCByYWluIGl0IHVwb24gaGltIHdoaWxlIGhlIGlzIGVhdGluZy4KSGUgc2hhbGwgZmxlZSBmcm9tIHRoZSBpcm9uIHdlYXBvbiwgYW5kIHRoZSBib3cgb2Ygc3RlZWwgc2hhbGwgc3RyaWtlIGhpbSB0aHJvdWdoLgpJdCBpcyBkcmF3biwgYW5kIGNvbWV0aCBvdXQgb2YgdGhlIGJvZHk7IHllYSwgdGhlIGdsaXR0ZXJpbmcgc3dvcmQgY29tZXRoIG91dCBvZiBoaXMgZ2FsbDogdGVycm9ycyBhcmUgdXBvbiBoaW0uCkFsbCBkYXJrbmVzcyBzaGFsbCBiZSBoaWQgaW4gaGlzIHNlY3JldCBwbGFjZXM6IGEgZmlyZSBub3QgYmxvd24gc2hhbGwgY29uc3VtZSBoaW07IGl0IHNoYWxsIGdvIGlsbCB3aXRoIGhpbSB0aGF0IGlzIGxlZnQgaW4gaGlzIHRhYmVybmFjbGUuClRoZSBoZWF2ZW4gc2hhbGwgcmV2ZWFsIGhpcyBpbmlxdWl0eTsgYW5kIHRoZSBlYXJ0aCBzaGFsbCByaXNlIHVwIGFnYWluc3QgaGltLgpUaGUgaW5jcmVhc2Ugb2YgaGlzIGhvdXNlIHNoYWxsIGRlcGFydCwgYW5kIGhpcyBnb29kcyBzaGFsbCBmbG93IGF3YXkgaW4gdGhlIGRheSBvZiBoaXMgd3JhdGguClRoaXMgaXMgdGhlIHBvcnRpb24gb2YgYSB3aWNrZWQgbWFuIGZyb20gR29kLCBhbmQgdGhlIGhlcml0YWdlIGFwcG9pbnRlZCB1bnRvIGhpbSBieSBHb2QuCkJ1dCBKb2IgYW5zd2VyZWQgYW5kIHNhaWQsCkhlYXIgZGlsaWdlbnRseSBteSBzcGVlY2gsIGFuZCBsZXQgdGhpcyBiZSB5b3VyIGNvbnNvbGF0aW9ucy4KU3VmZmVyIG1lIHRoYXQgSSBtYXkgc3BlYWs7IGFuZCBhZnRlciB0aGF0IEkgaGF2ZSBzcG9rZW4sIG1vY2sgb24uCkFzIGZvciBtZSwgaXMgbXkgY29tcGxhaW50IHRvIG1hbj8gYW5kIGlmIGl0IHdlcmUgc28sIHdoeSBzaG91bGQgbm90IG15IHNwaXJpdCBiZSB0cm91YmxlZD8KTWFyayBtZSwgYW5kIGJlIGFzdG9uaXNoZWQsIGFuZCBsYXkgeW91ciBoYW5kIHVwb24geW91ciBtb3V0aC4KRXZlbiB3aGVuIEkgcmVtZW1iZXIgSSBhbSBhZnJhaWQsIGFuZCB0cmVtYmxpbmcgdGFrZXRoIGhvbGQgb24gbXkgZmxlc2guCldoZXJlZm9yZSBkbyB0aGUgd2lja2VkIGxpdmUsIGJlY29tZSBvbGQsIHllYSwgYXJlIG1pZ2h0eSBpbiBwb3dlcj8KVGhlaXIgc2VlZCBpcyBlc3RhYmxpc2hlZCBpbiB0aGVpciBzaWdodCB3aXRoIHRoZW0sIGFuZCB0aGVpciBvZmZzcHJpbmcgYmVmb3JlIHRoZWlyIGV5ZXMuClRoZWlyIGhvdXNlcyBhcmUgc2FmZSBmcm9tIGZlYXIsIG5laXRoZXIgaXMgdGhlIHJvZCBvZiBHb2QgdXBvbiB0aGVtLgpUaGVpciBidWxsIGdlbmRlcmV0aCwgYW5kIGZhaWxldGggbm90OyB0aGVpciBjb3cgY2FsdmV0aCwgYW5kIGNhc3RldGggbm90IGhlciBjYWxmLgpUaGV5IHNlbmQgZm9ydGggdGhlaXIgbGl0dGxlIG9uZXMgbGlrZSBhIGZsb2NrLCBhbmQgdGhlaXIgY2hpbGRyZW4gZGFuY2UuClRoZXkgdGFrZSB0aGUgdGltYnJlbCBhbmQgaGFycCwgYW5kIHJlam9pY2UgYXQgdGhlIHNvdW5kIG9mIHRoZSBvcmdhbi4KVGhleSBzcGVuZCB0aGVpciBkYXlzIGluIHdlYWx0aCwgYW5kIGluIGEgbW9tZW50IGdvIGRvd24gdG8gdGhlIGdyYXZlLgpUaGVyZWZvcmUgdGhleSBzYXkgdW50byBHb2QsIERlcGFydCBmcm9tIHVzOyBmb3Igd2UgZGVzaXJlIG5vdCB0aGUga25vd2xlZGdlIG9mIHRoeSB3YXlzLgpXaGF0IGlzIHRoZSBBbG1pZ2h0eSwgdGhhdCB3ZSBzaG91bGQgc2VydmUgaGltPyBhbmQgd2hhdCBwcm9maXQgc2hvdWxkIHdlIGhhdmUsIGlmIHdlIHByYXkgdW50byBoaW0/CkxvLCB0aGVpciBnb29kIGlzIG5vdCBpbiB0aGVpciBoYW5kOiB0aGUgY291bnNlbCBvZiB0aGUgd2lja2VkIGlzIGZhciBmcm9tIG1lLgpIb3cgb2Z0IGlzIHRoZSBjYW5kbGUgb2YgdGhlIHdpY2tlZCBwdXQgb3V0ISBhbmQgaG93IG9mdCBjb21ldGggdGhlaXIgZGVzdHJ1Y3Rpb24gdXBvbiB0aGVtISBHb2QgZGlzdHJpYnV0ZXRoIHNvcnJvd3MgaW4gaGlzIGFuZ2VyLgpUaGV5IGFyZSBhcyBzdHViYmxlIGJlZm9yZSB0aGUgd2luZCwgYW5kIGFzIGNoYWZmIHRoYXQgdGhlIHN0b3JtIGNhcnJpZXRoIGF3YXkuCkdvZCBsYXlldGggdXAgaGlzIGluaXF1aXR5IGZvciBoaXMgY2hpbGRyZW46IGhlIHJld2FyZGV0aCBoaW0sIGFuZCBoZSBzaGFsbCBrbm93IGl0LgpIaXMgZXllcyBzaGFsbCBzZWUgaGlzIGRlc3RydWN0aW9uLCBhbmQgaGUgc2hhbGwgZHJpbmsgb2YgdGhlIHdyYXRoIG9mIHRoZSBBbG1pZ2h0eS4KRm9yIHdoYXQgcGxlYXN1cmUgaGF0aCBoZSBpbiBoaXMgaG91c2UgYWZ0ZXIgaGltLCB3aGVuIHRoZSBudW1iZXIgb2YgaGlzIG1vbnRocyBpcyBjdXQgb2ZmIGluIHRoZSBtaWRzdD8KU2hhbGwgYW55IHRlYWNoIEdvZCBrbm93bGVkZ2U/IHNlZWluZyBoZSBqdWRnZXRoIHRob3NlIHRoYXQgYXJlIGhpZ2guCk9uZSBkaWV0aCBpbiBoaXMgZnVsbCBzdHJlbmd0aCwgYmVpbmcgd2hvbGx5IGF0IGVhc2UgYW5kIHF1aWV0LgpIaXMgYnJlYXN0cyBhcmUgZnVsbCBvZiBtaWxrLCBhbmQgaGlzIGJvbmVzIGFyZSBtb2lzdGVuZWQgd2l0aCBtYXJyb3cuCkFuZCBhbm90aGVyIGRpZXRoIGluIHRoZSBiaXR0ZXJuZXNzIG9mIGhpcyBzb3VsLCBhbmQgbmV2ZXIgZWF0ZXRoIHdpdGggcGxlYXN1cmUuClRoZXkgc2hhbGwgbGllIGRvd24gYWxpa2UgaW4gdGhlIGR1c3QsIGFuZCB0aGUgd29ybXMgc2hhbGwgY292ZXIgdGhlbS4KQmVob2xkLCBJIGtub3cgeW91ciB0aG91Z2h0cywgYW5kIHRoZSBkZXZpY2VzIHdoaWNoIHllIHdyb25nZnVsbHkgaW1hZ2luZSBhZ2FpbnN0IG1lLgpGb3IgeWUgc2F5LCBXaGVyZSBpcyB0aGUgaG91c2Ugb2YgdGhlIHByaW5jZT8gYW5kIHdoZXJlIGFyZSB0aGUgZHdlbGxpbmcgcGxhY2VzIG9mIHRoZSB3aWNrZWQ/CkhhdmUgeWUgbm90IGFza2VkIHRoZW0gdGhhdCBnbyBieSB0aGUgd2F5PyBhbmQgZG8geWUgbm90IGtub3cgdGhlaXIgdG9rZW5zLApUaGF0IHRoZSB3aWNrZWQgaXMgcmVzZXJ2ZWQgdG8gdGhlIGRheSBvZiBkZXN0cnVjdGlvbj8gdGhleSBzaGFsbCBiZSBicm91Z2h0IGZvcnRoIHRvIHRoZSBkYXkgb2Ygd3JhdGguCldobyBzaGFsbCBkZWNsYXJlIGhpcyB3YXkgdG8gaGlzIGZhY2U/IGFuZCB3aG8gc2hhbGwgcmVwYXkgaGltIHdoYXQgaGUgaGF0aCBkb25lPwpZZXQgc2hhbGwgaGUgYmUgYnJvdWdodCB0byB0aGUgZ3JhdmUsIGFuZCBzaGFsbCByZW1haW4gaW4gdGhlIHRvbWIuClRoZSBjbG9kcyBvZiB0aGUgdmFsbGV5IHNoYWxsIGJlIHN3ZWV0IHVudG8gaGltLCBhbmQgZXZlcnkgbWFuIHNoYWxsIGRyYXcgYWZ0ZXIgaGltLCBhcyB0aGVyZSBhcmUgaW5udW1lcmFibGUgYmVmb3JlIGhpbS4KSG93IHRoZW4gY29tZm9ydCB5ZSBtZSBpbiB2YWluLCBzZWVpbmcgaW4geW91ciBhbnN3ZXJzIHRoZXJlIHJlbWFpbmV0aCBmYWxzZWhvb2Q/ClRoZW4gRWxpcGhheiB0aGUgVGVtYW5pdGUgYW5zd2VyZWQgYW5kIHNhaWQsCkNhbiBhIG1hbiBiZSBwcm9maXRhYmxlIHVudG8gR29kLCBhcyBoZSB0aGF0IGlzIHdpc2UgbWF5IGJlIHByb2ZpdGFibGUgdW50byBoaW1zZWxmPwpJcyBpdCBhbnkgcGxlYXN1cmUgdG8gdGhlIEFsbWlnaHR5LCB0aGF0IHRob3UgYXJ0IHJpZ2h0ZW91cz8gb3IgaXMgaXQgZ2FpbiB0byBoaW0sIHRoYXQgdGhvdSBtYWtlc3QgdGh5IHdheXMgcGVyZmVjdD8KV2lsbCBoZSByZXByb3ZlIHRoZWUgZm9yIGZlYXIgb2YgdGhlZT8gd2lsbCBoZSBlbnRlciB3aXRoIHRoZWUgaW50byBqdWRnbWVudD8KSXMgbm90IHRoeSB3aWNrZWRuZXNzIGdyZWF0PyBhbmQgdGhpbmUgaW5pcXVpdGllcyBpbmZpbml0ZT8KRm9yIHRob3UgaGFzdCB0YWtlbiBhIHBsZWRnZSBmcm9tIHRoeSBicm90aGVyIGZvciBub3VnaHQsIGFuZCBzdHJpcHBlZCB0aGUgbmFrZWQgb2YgdGhlaXIgY2xvdGhpbmcuClRob3UgaGFzdCBub3QgZ2l2ZW4gd2F0ZXIgdG8gdGhlIHdlYXJ5IHRvIGRyaW5rLCBhbmQgdGhvdSBoYXN0IHdpdGhob2xkZW4gYnJlYWQgZnJvbSB0aGUgaHVuZ3J5LgpCdXQgYXMgZm9yIHRoZSBtaWdodHkgbWFuLCBoZSBoYWQgdGhlIGVhcnRoOyBhbmQgdGhlIGhvbm91cmFibGUgbWFuIGR3ZWx0IGluIGl0LgpUaG91IGhhc3Qgc2VudCB3aWRvd3MgYXdheSBlbXB0eSwgYW5kIHRoZSBhcm1zIG9mIHRoZSBmYXRoZXJsZXNzIGhhdmUgYmVlbiBicm9rZW4uClRoZXJlZm9yZSBzbmFyZXMgYXJlIHJvdW5kIGFib3V0IHRoZWUsIGFuZCBzdWRkZW4gZmVhciB0cm91YmxldGggdGhlZTsKT3IgZGFya25lc3MsIHRoYXQgdGhvdSBjYW5zdCBub3Qgc2VlOyBhbmQgYWJ1bmRhbmNlIG9mIHdhdGVycyBjb3ZlciB0aGVlLgpJcyBub3QgR29kIGluIHRoZSBoZWlnaHQgb2YgaGVhdmVuPyBhbmQgYmVob2xkIHRoZSBoZWlnaHQgb2YgdGhlIHN0YXJzLCBob3cgaGlnaCB0aGV5IGFyZSEKQW5kIHRob3Ugc2F5ZXN0LCBIb3cgZG90aCBHb2Qga25vdz8gY2FuIGhlIGp1ZGdlIHRocm91Z2ggdGhlIGRhcmsgY2xvdWQ/ClRoaWNrIGNsb3VkcyBhcmUgYSBjb3ZlcmluZyB0byBoaW0sIHRoYXQgaGUgc2VldGggbm90OyBhbmQgaGUgd2Fsa2V0aCBpbiB0aGUgY2lyY3VpdCBvZiBoZWF2ZW4uCkhhc3QgdGhvdSBtYXJrZWQgdGhlIG9sZCB3YXkgd2hpY2ggd2lja2VkIG1lbiBoYXZlIHRyb2RkZW4/CldoaWNoIHdlcmUgY3V0IGRvd24gb3V0IG9mIHRpbWUsIHdob3NlIGZvdW5kYXRpb24gd2FzIG92ZXJmbG93biB3aXRoIGEgZmxvb2Q6CldoaWNoIHNhaWQgdW50byBHb2QsIERlcGFydCBmcm9tIHVzOiBhbmQgd2hhdCBjYW4gdGhlIEFsbWlnaHR5IGRvIGZvciB0aGVtPwpZZXQgaGUgZmlsbGVkIHRoZWlyIGhvdXNlcyB3aXRoIGdvb2QgdGhpbmdzOiBidXQgdGhlIGNvdW5zZWwgb2YgdGhlIHdpY2tlZCBpcyBmYXIgZnJvbSBtZS4KVGhlIHJpZ2h0ZW91cyBzZWUgaXQsIGFuZCBhcmUgZ2xhZDogYW5kIHRoZSBpbm5vY2VudCBsYXVnaCB0aGVtIHRvIHNjb3JuLgpXaGVyZWFzIG91ciBzdWJzdGFuY2UgaXMgbm90IGN1dCBkb3duLCBidXQgdGhlIHJlbW5hbnQgb2YgdGhlbSB0aGUgZmlyZSBjb25zdW1ldGguCkFjcXVhaW50IG5vdyB0aHlzZWxmIHdpdGggaGltLCBhbmQgYmUgYXQgcGVhY2U6IHRoZXJlYnkgZ29vZCBzaGFsbCBjb21lIHVudG8gdGhlZS4KUmVjZWl2ZSwgSSBwcmF5IHRoZWUsIHRoZSBsYXcgZnJvbSBoaXMgbW91dGgsIGFuZCBsYXkgdXAgaGlzIHdvcmRzIGluIHRoaW5lIGhlYXJ0LgpJZiB0aG91IHJldHVybiB0byB0aGUgQWxtaWdodHksIHRob3Ugc2hhbHQgYmUgYnVpbHQgdXAsIHRob3Ugc2hhbHQgcHV0IGF3YXkgaW5pcXVpdHkgZmFyIGZyb20gdGh5IHRhYmVybmFjbGVzLgpUaGVuIHNoYWx0IHRob3UgbGF5IHVwIGdvbGQgYXMgZHVzdCwgYW5kIHRoZSBnb2xkIG9mIE9waGlyIGFzIHRoZSBzdG9uZXMgb2YgdGhlIGJyb29rcy4KWWVhLCB0aGUgQWxtaWdodHkgc2hhbGwgYmUgdGh5IGRlZmVuY2UsIGFuZCB0aG91IHNoYWx0IGhhdmUgcGxlbnR5IG9mIHNpbHZlci4KRm9yIHRoZW4gc2hhbHQgdGhvdSBoYXZlIHRoeSBkZWxpZ2h0IGluIHRoZSBBbG1pZ2h0eSwgYW5kIHNoYWx0IGxpZnQgdXAgdGh5IGZhY2UgdW50byBHb2QuClRob3Ugc2hhbHQgbWFrZSB0aHkgcHJheWVyIHVudG8gaGltLCBhbmQgaGUgc2hhbGwgaGVhciB0aGVlLCBhbmQgdGhvdSBzaGFsdCBwYXkgdGh5IHZvd3MuClRob3Ugc2hhbHQgYWxzbyBkZWNyZWUgYSB0aGluZywgYW5kIGl0IHNoYWxsIGJlIGVzdGFibGlzaGVkIHVudG8gdGhlZTogYW5kIHRoZSBsaWdodCBzaGFsbCBzaGluZSB1cG9uIHRoeSB3YXlzLgpXaGVuIG1lbiBhcmUgY2FzdCBkb3duLCB0aGVuIHRob3Ugc2hhbHQgc2F5LCBUaGVyZSBpcyBsaWZ0aW5nIHVwOyBhbmQgaGUgc2hhbGwgc2F2ZSB0aGUgaHVtYmxlIHBlcnNvbi4KSGUgc2hhbGwgZGVsaXZlciB0aGUgaXNsYW5kIG9mIHRoZSBpbm5vY2VudDogYW5kIGl0IGlzIGRlbGl2ZXJlZCBieSB0aGUgcHVyZW5lc3Mgb2YgdGhpbmUgaGFuZHMuClRoZW4gSm9iIGFuc3dlcmVkIGFuZCBzYWlkLApFdmVuIHRvIGRheSBpcyBteSBjb21wbGFpbnQgYml0dGVyOiBteSBzdHJva2UgaXMgaGVhdmllciB0aGFuIG15IGdyb2FuaW5nLgpPaCB0aGF0IEkga25ldyB3aGVyZSBJIG1pZ2h0IGZpbmQgaGltISB0aGF0IEkgbWlnaHQgY29tZSBldmVuIHRvIGhpcyBzZWF0IQpJIHdvdWxkIG9yZGVyIG15IGNhdXNlIGJlZm9yZSBoaW0sIGFuZCBmaWxsIG15IG1vdXRoIHdpdGggYXJndW1lbnRzLgpJIHdvdWxkIGtub3cgdGhlIHdvcmRzIHdoaWNoIGhlIHdvdWxkIGFuc3dlciBtZSwgYW5kIHVuZGVyc3RhbmQgd2hhdCBoZSB3b3VsZCBzYXkgdW50byBtZS4KV2lsbCBoZSBwbGVhZCBhZ2FpbnN0IG1lIHdpdGggaGlzIGdyZWF0IHBvd2VyPyBObzsgYnV0IGhlIHdvdWxkIHB1dCBzdHJlbmd0aCBpbiBtZS4KVGhlcmUgdGhlIHJpZ2h0ZW91cyBtaWdodCBkaXNwdXRlIHdpdGggaGltOyBzbyBzaG91bGQgSSBiZSBkZWxpdmVyZWQgZm9yIGV2ZXIgZnJvbSBteSBqdWRnZS4KQmVob2xkLCBJIGdvIGZvcndhcmQsIGJ1dCBoZSBpcyBub3QgdGhlcmU7IGFuZCBiYWNrd2FyZCwgYnV0IEkgY2Fubm90IHBlcmNlaXZlIGhpbToKT24gdGhlIGxlZnQgaGFuZCwgd2hlcmUgaGUgZG90aCB3b3JrLCBidXQgSSBjYW5ub3QgYmVob2xkIGhpbTogaGUgaGlkZXRoIGhpbXNlbGYgb24gdGhlIHJpZ2h0IGhhbmQsIHRoYXQgSSBjYW5ub3Qgc2VlIGhpbToKQnV0IGhlIGtub3dldGggdGhlIHdheSB0aGF0IEkgdGFrZTogd2hlbiBoZSBoYXRoIHRyaWVkIG1lLCBJIHNoYWxsIGNvbWUgZm9ydGggYXMgZ29sZC4KTXkgZm9vdCBoYXRoIGhlbGQgaGlzIHN0ZXBzLCBoaXMgd2F5IGhhdmUgSSBrZXB0LCBhbmQgbm90IGRlY2xpbmVkLgpOZWl0aGVyIGhhdmUgSSBnb25lIGJhY2sgZnJvbSB0aGUgY29tbWFuZG1lbnQgb2YgaGlzIGxpcHM7IEkgaGF2ZSBlc3RlZW1lZCB0aGUgd29yZHMgb2YgaGlzIG1vdXRoIG1vcmUgdGhhbiBteSBuZWNlc3NhcnkgZm9vZC4KQnV0IGhlIGlzIGluIG9uZSBtaW5kLCBhbmQgd2hvIGNhbiB0dXJuIGhpbT8gYW5kIHdoYXQgaGlzIHNvdWwgZGVzaXJldGgsIGV2ZW4gdGhhdCBoZSBkb2V0aC4KRm9yIGhlIHBlcmZvcm1ldGggdGhlIHRoaW5nIHRoYXQgaXMgYXBwb2ludGVkIGZvciBtZTogYW5kIG1hbnkgc3VjaCB0aGluZ3MgYXJlIHdpdGggaGltLgpUaGVyZWZvcmUgYW0gSSB0cm91YmxlZCBhdCBoaXMgcHJlc2VuY2U6IHdoZW4gSSBjb25zaWRlciwgSSBhbSBhZnJhaWQgb2YgaGltLgpGb3IgR29kIG1ha2V0aCBteSBoZWFydCBzb2Z0LCBhbmQgdGhlIEFsbWlnaHR5IHRyb3VibGV0aCBtZToKQmVjYXVzZSBJIHdhcyBub3QgY3V0IG9mZiBiZWZvcmUgdGhlIGRhcmtuZXNzLCBuZWl0aGVyIGhhdGggaGUgY292ZXJlZCB0aGUgZGFya25lc3MgZnJvbSBteSBmYWNlLgpXaHksIHNlZWluZyB0aW1lcyBhcmUgbm90IGhpZGRlbiBmcm9tIHRoZSBBbG1pZ2h0eSwgZG8gdGhleSB0aGF0IGtub3cgaGltIG5vdCBzZWUgaGlzIGRheXM/ClNvbWUgcmVtb3ZlIHRoZSBsYW5kbWFya3M7IHRoZXkgdmlvbGVudGx5IHRha2UgYXdheSBmbG9ja3MsIGFuZCBmZWVkIHRoZXJlb2YuClRoZXkgZHJpdmUgYXdheSB0aGUgYXNzIG9mIHRoZSBmYXRoZXJsZXNzLCB0aGV5IHRha2UgdGhlIHdpZG93J3Mgb3ggZm9yIGEgcGxlZGdlLgpUaGV5IHR1cm4gdGhlIG5lZWR5IG91dCBvZiB0aGUgd2F5OiB0aGUgcG9vciBvZiB0aGUgZWFydGggaGlkZSB0aGVtc2VsdmVzIHRvZ2V0aGVyLgpCZWhvbGQsIGFzIHdpbGQgYXNzZXMgaW4gdGhlIGRlc2VydCwgZ28gdGhleSBmb3J0aCB0byB0aGVpciB3b3JrOyByaXNpbmcgYmV0aW1lcyBmb3IgYSBwcmV5OiB0aGUgd2lsZGVybmVzcyB5aWVsZGV0aCBmb29kIGZvciB0aGVtIGFuZCBmb3IgdGhlaXIgY2hpbGRyZW4uClRoZXkgcmVhcCBldmVyeSBvbmUgaGlzIGNvcm4gaW4gdGhlIGZpZWxkOiBhbmQgdGhleSBnYXRoZXIgdGhlIHZpbnRhZ2Ugb2YgdGhlIHdpY2tlZC4KVGhleSBjYXVzZSB0aGUgbmFrZWQgdG8gbG9kZ2Ugd2l0aG91dCBjbG90aGluZywgdGhhdCB0aGV5IGhhdmUgbm8gY292ZXJpbmcgaW4gdGhlIGNvbGQuClRoZXkgYXJlIHdldCB3aXRoIHRoZSBzaG93ZXJzIG9mIHRoZSBtb3VudGFpbnMsIGFuZCBlbWJyYWNlIHRoZSByb2NrIGZvciB3YW50IG9mIGEgc2hlbHRlci4KVGhleSBwbHVjayB0aGUgZmF0aGVybGVzcyBmcm9tIHRoZSBicmVhc3QsIGFuZCB0YWtlIGEgcGxlZGdlIG9mIHRoZSBwb29yLgpUaGV5IGNhdXNlIGhpbSB0byBnbyBuYWtlZCB3aXRob3V0IGNsb3RoaW5nLCBhbmQgdGhleSB0YWtlIGF3YXkgdGhlIHNoZWFmIGZyb20gdGhlIGh1bmdyeTsKV2hpY2ggbWFrZSBvaWwgd2l0aGluIHRoZWlyIHdhbGxzLCBhbmQgdHJlYWQgdGhlaXIgd2luZXByZXNzZXMsIGFuZCBzdWZmZXIgdGhpcnN0LgpNZW4gZ3JvYW4gZnJvbSBvdXQgb2YgdGhlIGNpdHksIGFuZCB0aGUgc291bCBvZiB0aGUgd291bmRlZCBjcmlldGggb3V0OiB5ZXQgR29kIGxheWV0aCBub3QgZm9sbHkgdG8gdGhlbS4KVGhleSBhcmUgb2YgdGhvc2UgdGhhdCByZWJlbCBhZ2FpbnN0IHRoZSBsaWdodDsgdGhleSBrbm93IG5vdCB0aGUgd2F5cyB0aGVyZW9mLCBub3IgYWJpZGUgaW4gdGhlIHBhdGhzIHRoZXJlb2YuClRoZSBtdXJkZXJlciByaXNpbmcgd2l0aCB0aGUgbGlnaHQga2lsbGV0aCB0aGUgcG9vciBhbmQgbmVlZHksIGFuZCBpbiB0aGUgbmlnaHQgaXMgYXMgYSB0aGllZi4KVGhlIGV5ZSBhbHNvIG9mIHRoZSBhZHVsdGVyZXIgd2FpdGV0aCBmb3IgdGhlIHR3aWxpZ2h0LCBzYXlpbmcsIE5vIGV5ZSBzaGFsbCBzZWUgbWU6IGFuZCBkaXNndWlzZXRoIGhpcyBmYWNlLgpJbiB0aGUgZGFyayB0aGV5IGRpZyB0aHJvdWdoIGhvdXNlcywgd2hpY2ggdGhleSBoYWQgbWFya2VkIGZvciB0aGVtc2VsdmVzIGluIHRoZSBkYXl0aW1lOiB0aGV5IGtub3cgbm90IHRoZSBsaWdodC4KRm9yIHRoZSBtb3JuaW5nIGlzIHRvIHRoZW0gZXZlbiBhcyB0aGUgc2hhZG93IG9mIGRlYXRoOiBpZiBvbmUga25vdyB0aGVtLCB0aGV5IGFyZSBpbiB0aGUgdGVycm9ycyBvZiB0aGUgc2hhZG93IG9mIGRlYXRoLgpIZSBpcyBzd2lmdCBhcyB0aGUgd2F0ZXJzOyB0aGVpciBwb3J0aW9uIGlzIGN1cnNlZCBpbiB0aGUgZWFydGg6IGhlIGJlaG9sZGV0aCBub3QgdGhlIHdheSBvZiB0aGUgdmluZXlhcmRzLgpEcm91Z2h0IGFuZCBoZWF0IGNvbnN1bWUgdGhlIHNub3cgd2F0ZXJzOiBzbyBkb3RoIHRoZSBncmF2ZSB0aG9zZSB3aGljaCBoYXZlIHNpbm5lZC4KVGhlIHdvbWIgc2hhbGwgZm9yZ2V0IGhpbTsgdGhlIHdvcm0gc2hhbGwgZmVlZCBzd2VldGx5IG9uIGhpbTsgaGUgc2hhbGwgYmUgbm8gbW9yZSByZW1lbWJlcmVkOyBhbmQgd2lja2VkbmVzcyBzaGFsbCBiZSBicm9rZW4gYXMgYSB0cmVlLgpIZSBldmlsIGVudHJlYXRldGggdGhlIGJhcnJlbiB0aGF0IGJlYXJldGggbm90OiBhbmQgZG9ldGggbm90IGdvb2QgdG8gdGhlIHdpZG93LgpIZSBkcmF3ZXRoIGFsc28gdGhlIG1pZ2h0eSB3aXRoIGhpcyBwb3dlcjogaGUgcmlzZXRoIHVwLCBhbmQgbm8gbWFuIGlzIHN1cmUgb2YgbGlmZS4KVGhvdWdoIGl0IGJlIGdpdmVuIGhpbSB0byBiZSBpbiBzYWZldHksIHdoZXJlb24gaGUgcmVzdGV0aDsgeWV0IGhpcyBleWVzIGFyZSB1cG9uIHRoZWlyIHdheXMuClRoZXkgYXJlIGV4YWx0ZWQgZm9yIGEgbGl0dGxlIHdoaWxlLCBidXQgYXJlIGdvbmUgYW5kIGJyb3VnaHQgbG93OyB0aGV5IGFyZSB0YWtlbiBvdXQgb2YgdGhlIHdheSBhcyBhbGwgb3RoZXIsIGFuZCBjdXQgb2ZmIGFzIHRoZSB0b3BzIG9mIHRoZSBlYXJzIG9mIGNvcm4uCkFuZCBpZiBpdCBiZSBub3Qgc28gbm93LCB3aG8gd2lsbCBtYWtlIG1lIGEgbGlhciwgYW5kIG1ha2UgbXkgc3BlZWNoIG5vdGhpbmcgd29ydGg/ClRoZW4gYW5zd2VyZWQgQmlsZGFkIHRoZSBTaHVoaXRlLCBhbmQgc2FpZCwKRG9taW5pb24gYW5kIGZlYXIgYXJlIHdpdGggaGltLCBoZSBtYWtldGggcGVhY2UgaW4gaGlzIGhpZ2ggcGxhY2VzLgpJcyB0aGVyZSBhbnkgbnVtYmVyIG9mIGhpcyBhcm1pZXM/IGFuZCB1cG9uIHdob20gZG90aCBub3QgaGlzIGxpZ2h0IGFyaXNlPwpIb3cgdGhlbiBjYW4gbWFuIGJlIGp1c3RpZmllZCB3aXRoIEdvZD8gb3IgaG93IGNhbiBoZSBiZSBjbGVhbiB0aGF0IGlzIGJvcm4gb2YgYSB3b21hbj8KQmVob2xkIGV2ZW4gdG8gdGhlIG1vb24sIGFuZCBpdCBzaGluZXRoIG5vdDsgeWVhLCB0aGUgc3RhcnMgYXJlIG5vdCBwdXJlIGluIGhpcyBzaWdodC4KSG93IG11Y2ggbGVzcyBtYW4sIHRoYXQgaXMgYSB3b3JtPyBhbmQgdGhlIHNvbiBvZiBtYW4sIHdoaWNoIGlzIGEgd29ybT8KQnV0IEpvYiBhbnN3ZXJlZCBhbmQgc2FpZCwKSG93IGhhc3QgdGhvdSBoZWxwZWQgaGltIHRoYXQgaXMgd2l0aG91dCBwb3dlcj8gaG93IHNhdmVzdCB0aG91IHRoZSBhcm0gdGhhdCBoYXRoIG5vIHN0cmVuZ3RoPwpIb3cgaGFzdCB0aG91IGNvdW5zZWxsZWQgaGltIHRoYXQgaGF0aCBubyB3aXNkb20/IGFuZCBob3cgaGFzdCB0aG91IHBsZW50aWZ1bGx5IGRlY2xhcmVkIHRoZSB0aGluZyBhcyBpdCBpcz8KVG8gd2hvbSBoYXN0IHRob3UgdXR0ZXJlZCB3b3Jkcz8gYW5kIHdob3NlIHNwaXJpdCBjYW1lIGZyb20gdGhlZT8KRGVhZCB0aGluZ3MgYXJlIGZvcm1lZCBmcm9tIHVuZGVyIHRoZSB3YXRlcnMsIGFuZCB0aGUgaW5oYWJpdGFudHMgdGhlcmVvZi4KSGVsbCBpcyBuYWtlZCBiZWZvcmUgaGltLCBhbmQgZGVzdHJ1Y3Rpb24gaGF0aCBubyBjb3ZlcmluZy4KSGUgc3RyZXRjaGV0aCBvdXQgdGhlIG5vcnRoIG92ZXIgdGhlIGVtcHR5IHBsYWNlLCBhbmQgaGFuZ2V0aCB0aGUgZWFydGggdXBvbiBub3RoaW5nLgpIZSBiaW5kZXRoIHVwIHRoZSB3YXRlcnMgaW4gaGlzIHRoaWNrIGNsb3VkczsgYW5kIHRoZSBjbG91ZCBpcyBub3QgcmVudCB1bmRlciB0aGVtLgpIZSBob2xkZXRoIGJhY2sgdGhlIGZhY2Ugb2YgaGlzIHRocm9uZSwgYW5kIHNwcmVhZGV0aCBoaXMgY2xvdWQgdXBvbiBpdC4KSGUgaGF0aCBjb21wYXNzZWQgdGhlIHdhdGVycyB3aXRoIGJvdW5kcywgdW50aWwgdGhlIGRheSBhbmQgbmlnaHQgY29tZSB0byBhbiBlbmQuClRoZSBwaWxsYXJzIG9mIGhlYXZlbiB0cmVtYmxlIGFuZCBhcmUgYXN0b25pc2hlZCBhdCBoaXMgcmVwcm9vZi4KSGUgZGl2aWRldGggdGhlIHNlYSB3aXRoIGhpcyBwb3dlciwgYW5kIGJ5IGhpcyB1bmRlcnN0YW5kaW5nIGhlIHNtaXRldGggdGhyb3VnaCB0aGUgcHJvdWQuCkJ5IGhpcyBzcGlyaXQgaGUgaGF0aCBnYXJuaXNoZWQgdGhlIGhlYXZlbnM7IGhpcyBoYW5kIGhhdGggZm9ybWVkIHRoZSBjcm9va2VkIHNlcnBlbnQuCkxvLCB0aGVzZSBhcmUgcGFydHMgb2YgaGlzIHdheXM6IGJ1dCBob3cgbGl0dGxlIGEgcG9ydGlvbiBpcyBoZWFyZCBvZiBoaW0/IGJ1dCB0aGUgdGh1bmRlciBvZiBoaXMgcG93ZXIgd2hvIGNhbiB1bmRlcnN0YW5kPwpNb3Jlb3ZlciBKb2IgY29udGludWVkIGhpcyBwYXJhYmxlLCBhbmQgc2FpZCwKQXMgR29kIGxpdmV0aCwgd2hvIGhhdGggdGFrZW4gYXdheSBteSBqdWRnbWVudDsgYW5kIHRoZSBBbG1pZ2h0eSwgd2hvIGhhdGggdmV4ZWQgbXkgc291bDsKQWxsIHRoZSB3aGlsZSBteSBicmVhdGggaXMgaW4gbWUsIGFuZCB0aGUgc3Bpcml0IG9mIEdvZCBpcyBpbiBteSBub3N0cmlsczsKTXkgbGlwcyBzaGFsbCBub3Qgc3BlYWsgd2lja2VkbmVzcywgbm9yIG15IHRvbmd1ZSB1dHRlciBkZWNlaXQuCkdvZCBmb3JiaWQgdGhhdCBJIHNob3VsZCBqdXN0aWZ5IHlvdTogdGlsbCBJIGRpZSBJIHdpbGwgbm90IHJlbW92ZSBtaW5lIGludGVncml0eSBmcm9tIG1lLgpNeSByaWdodGVvdXNuZXNzIEkgaG9sZCBmYXN0LCBhbmQgd2lsbCBub3QgbGV0IGl0IGdvOiBteSBoZWFydCBzaGFsbCBub3QgcmVwcm9hY2ggbWUgc28gbG9uZyBhcyBJIGxpdmUuCkxldCBtaW5lIGVuZW15IGJlIGFzIHRoZSB3aWNrZWQsIGFuZCBoZSB0aGF0IHJpc2V0aCB1cCBhZ2FpbnN0IG1lIGFzIHRoZSB1bnJpZ2h0ZW91cy4KRm9yIHdoYXQgaXMgdGhlIGhvcGUgb2YgdGhlIGh5cG9jcml0ZSwgdGhvdWdoIGhlIGhhdGggZ2FpbmVkLCB3aGVuIEdvZCB0YWtldGggYXdheSBoaXMgc291bD8KV2lsbCBHb2QgaGVhciBoaXMgY3J5IHdoZW4gdHJvdWJsZSBjb21ldGggdXBvbiBoaW0/CldpbGwgaGUgZGVsaWdodCBoaW1zZWxmIGluIHRoZSBBbG1pZ2h0eT8gd2lsbCBoZSBhbHdheXMgY2FsbCB1cG9uIEdvZD8KSSB3aWxsIHRlYWNoIHlvdSBieSB0aGUgaGFuZCBvZiBHb2Q6IHRoYXQgd2hpY2ggaXMgd2l0aCB0aGUgQWxtaWdodHkgd2lsbCBJIG5vdCBjb25jZWFsLgpCZWhvbGQsIGFsbCB5ZSB5b3Vyc2VsdmVzIGhhdmUgc2VlbiBpdDsgd2h5IHRoZW4gYXJlIHllIHRodXMgYWx0b2dldGhlciB2YWluPwpUaGlzIGlzIHRoZSBwb3J0aW9uIG9mIGEgd2lja2VkIG1hbiB3aXRoIEdvZCwgYW5kIHRoZSBoZXJpdGFnZSBvZiBvcHByZXNzb3JzLCB3aGljaCB0aGV5IHNoYWxsIHJlY2VpdmUgb2YgdGhlIEFsbWlnaHR5LgpJZiBoaXMgY2hpbGRyZW4gYmUgbXVsdGlwbGllZCwgaXQgaXMgZm9yIHRoZSBzd29yZDogYW5kIGhpcyBvZmZzcHJpbmcgc2hhbGwgbm90IGJlIHNhdGlzZmllZCB3aXRoIGJyZWFkLgpUaG9zZSB0aGF0IHJlbWFpbiBvZiBoaW0gc2hhbGwgYmUgYnVyaWVkIGluIGRlYXRoOiBhbmQgaGlzIHdpZG93cyBzaGFsbCBub3Qgd2VlcC4KVGhvdWdoIGhlIGhlYXAgdXAgc2lsdmVyIGFzIHRoZSBkdXN0LCBhbmQgcHJlcGFyZSByYWltZW50IGFzIHRoZSBjbGF5OwpIZSBtYXkgcHJlcGFyZSBpdCwgYnV0IHRoZSBqdXN0IHNoYWxsIHB1dCBpdCBvbiwgYW5kIHRoZSBpbm5vY2VudCBzaGFsbCBkaXZpZGUgdGhlIHNpbHZlci4KSGUgYnVpbGRldGggaGlzIGhvdXNlIGFzIGEgbW90aCwgYW5kIGFzIGEgYm9vdGggdGhhdCB0aGUga2VlcGVyIG1ha2V0aC4KVGhlIHJpY2ggbWFuIHNoYWxsIGxpZSBkb3duLCBidXQgaGUgc2hhbGwgbm90IGJlIGdhdGhlcmVkOiBoZSBvcGVuZXRoIGhpcyBleWVzLCBhbmQgaGUgaXMgbm90LgpUZXJyb3JzIHRha2UgaG9sZCBvbiBoaW0gYXMgd2F0ZXJzLCBhIHRlbXBlc3Qgc3RlYWxldGggaGltIGF3YXkgaW4gdGhlIG5pZ2h0LgpUaGUgZWFzdCB3aW5kIGNhcnJpZXRoIGhpbSBhd2F5LCBhbmQgaGUgZGVwYXJ0ZXRoOiBhbmQgYXMgYSBzdG9ybSBodXJsZXRoIGhpbSBvdXQgb2YgaGlzIHBsYWNlLgpGb3IgR29kIHNoYWxsIGNhc3QgdXBvbiBoaW0sIGFuZCBub3Qgc3BhcmU6IGhlIHdvdWxkIGZhaW4gZmxlZSBvdXQgb2YgaGlzIGhhbmQuCk1lbiBzaGFsbCBjbGFwIHRoZWlyIGhhbmRzIGF0IGhpbSwgYW5kIHNoYWxsIGhpc3MgaGltIG91dCBvZiBoaXMgcGxhY2UuClN1cmVseSB0aGVyZSBpcyBhIHZlaW4gZm9yIHRoZSBzaWx2ZXIsIGFuZCBhIHBsYWNlIGZvciBnb2xkIHdoZXJlIHRoZXkgZmluZSBpdC4KSXJvbiBpcyB0YWtlbiBvdXQgb2YgdGhlIGVhcnRoLCBhbmQgYnJhc3MgaXMgbW9sdGVuIG91dCBvZiB0aGUgc3RvbmUuCkhlIHNldHRldGggYW4gZW5kIHRvIGRhcmtuZXNzLCBhbmQgc2VhcmNoZXRoIG91dCBhbGwgcGVyZmVjdGlvbjogdGhlIHN0b25lcyBvZiBkYXJrbmVzcywgYW5kIHRoZSBzaGFkb3cgb2YgZGVhdGguClRoZSBmbG9vZCBicmVha2V0aCBvdXQgZnJvbSB0aGUgaW5oYWJpdGFudDsgZXZlbiB0aGUgd2F0ZXJzIGZvcmdvdHRlbiBvZiB0aGUgZm9vdDogdGhleSBhcmUgZHJpZWQgdXAsIHRoZXkgYXJlIGdvbmUgYXdheSBmcm9tIG1lbi4KQXMgZm9yIHRoZSBlYXJ0aCwgb3V0IG9mIGl0IGNvbWV0aCBicmVhZDogYW5kIHVuZGVyIGl0IGlzIHR1cm5lZCB1cCBhcyBpdCB3ZXJlIGZpcmUuClRoZSBzdG9uZXMgb2YgaXQgYXJlIHRoZSBwbGFjZSBvZiBzYXBwaGlyZXM6IGFuZCBpdCBoYXRoIGR1c3Qgb2YgZ29sZC4KVGhlcmUgaXMgYSBwYXRoIHdoaWNoIG5vIGZvd2wga25vd2V0aCwgYW5kIHdoaWNoIHRoZSB2dWx0dXJlJ3MgZXllIGhhdGggbm90IHNlZW46ClRoZSBsaW9uJ3Mgd2hlbHBzIGhhdmUgbm90IHRyb2RkZW4gaXQsIG5vciB0aGUgZmllcmNlIGxpb24gcGFzc2VkIGJ5IGl0LgpIZSBwdXR0ZXRoIGZvcnRoIGhpcyBoYW5kIHVwb24gdGhlIHJvY2s7IGhlIG92ZXJ0dXJuZXRoIHRoZSBtb3VudGFpbnMgYnkgdGhlIHJvb3RzLgpIZSBjdXR0ZXRoIG91dCByaXZlcnMgYW1vbmcgdGhlIHJvY2tzOyBhbmQgaGlzIGV5ZSBzZWV0aCBldmVyeSBwcmVjaW91cyB0aGluZy4KSGUgYmluZGV0aCB0aGUgZmxvb2RzIGZyb20gb3ZlcmZsb3dpbmc7IGFuZCB0aGUgdGhpbmcgdGhhdCBpcyBoaWQgYnJpbmdldGggaGUgZm9ydGggdG8gbGlnaHQuCkJ1dCB3aGVyZSBzaGFsbCB3aXNkb20gYmUgZm91bmQ/IGFuZCB3aGVyZSBpcyB0aGUgcGxhY2Ugb2YgdW5kZXJzdGFuZGluZz8KTWFuIGtub3dldGggbm90IHRoZSBwcmljZSB0aGVyZW9mOyBuZWl0aGVyIGlzIGl0IGZvdW5kIGluIHRoZSBsYW5kIG9mIHRoZSBsaXZpbmcuClRoZSBkZXB0aCBzYWl0aCwgSXQgaXMgbm90IGluIG1lOiBhbmQgdGhlIHNlYSBzYWl0aCwgSXQgaXMgbm90IHdpdGggbWUuCkl0IGNhbm5vdCBiZSBnb3R0ZW4gZm9yIGdvbGQsIG5laXRoZXIgc2hhbGwgc2lsdmVyIGJlIHdlaWdoZWQgZm9yIHRoZSBwcmljZSB0aGVyZW9mLgpJdCBjYW5ub3QgYmUgdmFsdWVkIHdpdGggdGhlIGdvbGQgb2YgT3BoaXIsIHdpdGggdGhlIHByZWNpb3VzIG9ueXgsIG9yIHRoZSBzYXBwaGlyZS4KVGhlIGdvbGQgYW5kIHRoZSBjcnlzdGFsIGNhbm5vdCBlcXVhbCBpdDogYW5kIHRoZSBleGNoYW5nZSBvZiBpdCBzaGFsbCBub3QgYmUgZm9yIGpld2VscyBvZiBmaW5lIGdvbGQuCk5vIG1lbnRpb24gc2hhbGwgYmUgbWFkZSBvZiBjb3JhbCwgb3Igb2YgcGVhcmxzOiBmb3IgdGhlIHByaWNlIG9mIHdpc2RvbSBpcyBhYm92ZSBydWJpZXMuClRoZSB0b3BheiBvZiBFdGhpb3BpYSBzaGFsbCBub3QgZXF1YWwgaXQsIG5laXRoZXIgc2hhbGwgaXQgYmUgdmFsdWVkIHdpdGggcHVyZSBnb2xkLgpXaGVuY2UgdGhlbiBjb21ldGggd2lzZG9tPyBhbmQgd2hlcmUgaXMgdGhlIHBsYWNlIG9mIHVuZGVyc3RhbmRpbmc/ClNlZWluZyBpdCBpcyBoaWQgZnJvbSB0aGUgZXllcyBvZiBhbGwgbGl2aW5nLCBhbmQga2VwdCBjbG9zZSBmcm9tIHRoZSBmb3dscyBvZiB0aGUgYWlyLgpEZXN0cnVjdGlvbiBhbmQgZGVhdGggc2F5LCBXZSBoYXZlIGhlYXJkIHRoZSBmYW1lIHRoZXJlb2Ygd2l0aCBvdXIgZWFycy4KR29kIHVuZGVyc3RhbmRldGggdGhlIHdheSB0aGVyZW9mLCBhbmQgaGUga25vd2V0aCB0aGUgcGxhY2UgdGhlcmVvZi4KRm9yIGhlIGxvb2tldGggdG8gdGhlIGVuZHMgb2YgdGhlIGVhcnRoLCBhbmQgc2VldGggdW5kZXIgdGhlIHdob2xlIGhlYXZlbjsKVG8gbWFrZSB0aGUgd2VpZ2h0IGZvciB0aGUgd2luZHM7IGFuZCBoZSB3ZWlnaGV0aCB0aGUgd2F0ZXJzIGJ5IG1lYXN1cmUuCldoZW4gaGUgbWFkZSBhIGRlY3JlZSBmb3IgdGhlIHJhaW4sIGFuZCBhIHdheSBmb3IgdGhlIGxpZ2h0bmluZyBvZiB0aGUgdGh1bmRlcjoKVGhlbiBkaWQgaGUgc2VlIGl0LCBhbmQgZGVjbGFyZSBpdDsgaGUgcHJlcGFyZWQgaXQsIHllYSwgYW5kIHNlYXJjaGVkIGl0IG91dC4KQW5kIHVudG8gbWFuIGhlIHNhaWQsIEJlaG9sZCwgdGhlIGZlYXIgb2YgdGhlIExPUkQsIHRoYXQgaXMgd2lzZG9tOyBhbmQgdG8gZGVwYXJ0IGZyb20gZXZpbCBpcyB1bmRlcnN0YW5kaW5nLgpNb3Jlb3ZlciBKb2IgY29udGludWVkIGhpcyBwYXJhYmxlLCBhbmQgc2FpZCwKT2ggdGhhdCBJIHdlcmUgYXMgaW4gbW9udGhzIHBhc3QsIGFzIGluIHRoZSBkYXlzIHdoZW4gR29kIHByZXNlcnZlZCBtZTsKV2hlbiBoaXMgY2FuZGxlIHNoaW5lZCB1cG9uIG15IGhlYWQsIGFuZCB3aGVuIGJ5IGhpcyBsaWdodCBJIHdhbGtlZCB0aHJvdWdoIGRhcmtuZXNzOwpBcyBJIHdhcyBpbiB0aGUgZGF5cyBvZiBteSB5b3V0aCwgd2hlbiB0aGUgc2VjcmV0IG9mIEdvZCB3YXMgdXBvbiBteSB0YWJlcm5hY2xlOwpXaGVuIHRoZSBBbG1pZ2h0eSB3YXMgeWV0IHdpdGggbWUsIHdoZW4gbXkgY2hpbGRyZW4gd2VyZSBhYm91dCBtZTsKV2hlbiBJIHdhc2hlZCBteSBzdGVwcyB3aXRoIGJ1dHRlciwgYW5kIHRoZSByb2NrIHBvdXJlZCBtZSBvdXQgcml2ZXJzIG9mIG9pbDsKV2hlbiBJIHdlbnQgb3V0IHRvIHRoZSBnYXRlIHRocm91Z2ggdGhlIGNpdHksIHdoZW4gSSBwcmVwYXJlZCBteSBzZWF0IGluIHRoZSBzdHJlZXQhClRoZSB5b3VuZyBtZW4gc2F3IG1lLCBhbmQgaGlkIHRoZW1zZWx2ZXM6IGFuZCB0aGUgYWdlZCBhcm9zZSwgYW5kIHN0b29kIHVwLgpUaGUgcHJpbmNlcyByZWZyYWluZWQgdGFsa2luZywgYW5kIGxhaWQgdGhlaXIgaGFuZCBvbiB0aGVpciBtb3V0aC4KVGhlIG5vYmxlcyBoZWxkIHRoZWlyIHBlYWNlLCBhbmQgdGhlaXIgdG9uZ3VlIGNsZWF2ZWQgdG8gdGhlIHJvb2Ygb2YgdGhlaXIgbW91dGguCldoZW4gdGhlIGVhciBoZWFyZCBtZSwgdGhlbiBpdCBibGVzc2VkIG1lOyBhbmQgd2hlbiB0aGUgZXllIHNhdyBtZSwgaXQgZ2F2ZSB3aXRuZXNzIHRvIG1lOgpCZWNhdXNlIEkgZGVsaXZlcmVkIHRoZSBwb29yIHRoYXQgY3JpZWQsIGFuZCB0aGUgZmF0aGVybGVzcywgYW5kIGhpbSB0aGF0IGhhZCBub25lIHRvIGhlbHAgaGltLgpUaGUgYmxlc3Npbmcgb2YgaGltIHRoYXQgd2FzIHJlYWR5IHRvIHBlcmlzaCBjYW1lIHVwb24gbWU6IGFuZCBJIGNhdXNlZCB0aGUgd2lkb3cncyBoZWFydCB0byBzaW5nIGZvciBqb3kuCkkgcHV0IG9uIHJpZ2h0ZW91c25lc3MsIGFuZCBpdCBjbG90aGVkIG1lOiBteSBqdWRnbWVudCB3YXMgYXMgYSByb2JlIGFuZCBhIGRpYWRlbS4KSSB3YXMgZXllcyB0byB0aGUgYmxpbmQsIGFuZCBmZWV0IHdhcyBJIHRvIHRoZSBsYW1lLgpJIHdhcyBhIGZhdGhlciB0byB0aGUgcG9vcjogYW5kIHRoZSBjYXVzZSB3aGljaCBJIGtuZXcgbm90IEkgc2VhcmNoZWQgb3V0LgpBbmQgSSBicmFrZSB0aGUgamF3cyBvZiB0aGUgd2lja2VkLCBhbmQgcGx1Y2tlZCB0aGUgc3BvaWwgb3V0IG9mIGhpcyB0ZWV0aC4KVGhlbiBJIHNhaWQsIEkgc2hhbGwgZGllIGluIG15IG5lc3QsIGFuZCBJIHNoYWxsIG11bHRpcGx5IG15IGRheXMgYXMgdGhlIHNhbmQuCk15IHJvb3Qgd2FzIHNwcmVhZCBvdXQgYnkgdGhlIHdhdGVycywgYW5kIHRoZSBkZXcgbGF5IGFsbCBuaWdodCB1cG9uIG15IGJyYW5jaC4KTXkgZ2xvcnkgd2FzIGZyZXNoIGluIG1lLCBhbmQgbXkgYm93IHdhcyByZW5ld2VkIGluIG15IGhhbmQuClVudG8gbWUgbWVuIGdhdmUgZWFyLCBhbmQgd2FpdGVkLCBhbmQga2VwdCBzaWxlbmNlIGF0IG15IGNvdW5zZWwuCkFmdGVyIG15IHdvcmRzIHRoZXkgc3Bha2Ugbm90IGFnYWluOyBhbmQgbXkgc3BlZWNoIGRyb3BwZWQgdXBvbiB0aGVtLgpBbmQgdGhleSB3YWl0ZWQgZm9yIG1lIGFzIGZvciB0aGUgcmFpbjsgYW5kIHRoZXkgb3BlbmVkIHRoZWlyIG1vdXRoIHdpZGUgYXMgZm9yIHRoZSBsYXR0ZXIgcmFpbi4KSWYgSSBsYXVnaGVkIG9uIHRoZW0sIHRoZXkgYmVsaWV2ZWQgaXQgbm90OyBhbmQgdGhlIGxpZ2h0IG9mIG15IGNvdW50ZW5hbmNlIHRoZXkgY2FzdCBub3QgZG93bi4KSSBjaG9zZSBvdXQgdGhlaXIgd2F5LCBhbmQgc2F0IGNoaWVmLCBhbmQgZHdlbHQgYXMgYSBraW5nIGluIHRoZSBhcm15LCBhcyBvbmUgdGhhdCBjb21mb3J0ZXRoIHRoZSBtb3VybmVycy4KQnV0IG5vdyB0aGV5IHRoYXQgYXJlIHlvdW5nZXIgdGhhbiBJIGhhdmUgbWUgaW4gZGVyaXNpb24sIHdob3NlIGZhdGhlcnMgSSB3b3VsZCBoYXZlIGRpc2RhaW5lZCB0byBoYXZlIHNldCB3aXRoIHRoZSBkb2dzIG9mIG15IGZsb2NrLgpZZWEsIHdoZXJldG8gbWlnaHQgdGhlIHN0cmVuZ3RoIG9mIHRoZWlyIGhhbmRzIHByb2ZpdCBtZSwgaW4gd2hvbSBvbGQgYWdlIHdhcyBwZXJpc2hlZD8KRm9yIHdhbnQgYW5kIGZhbWluZSB0aGV5IHdlcmUgc29saXRhcnk7IGZsZWVpbmcgaW50byB0aGUgd2lsZGVybmVzcyBpbiBmb3JtZXIgdGltZSBkZXNvbGF0ZSBhbmQgd2FzdGUuCldobyBjdXQgdXAgbWFsbG93cyBieSB0aGUgYnVzaGVzLCBhbmQganVuaXBlciByb290cyBmb3IgdGhlaXIgbWVhdC4KVGhleSB3ZXJlIGRyaXZlbiBmb3J0aCBmcm9tIGFtb25nIG1lbiwgKHRoZXkgY3JpZWQgYWZ0ZXIgdGhlbSBhcyBhZnRlciBhIHRoaWVmOykKVG8gZHdlbGwgaW4gdGhlIGNsaWZmcyBvZiB0aGUgdmFsbGV5cywgaW4gY2F2ZXMgb2YgdGhlIGVhcnRoLCBhbmQgaW4gdGhlIHJvY2tzLgpBbW9uZyB0aGUgYnVzaGVzIHRoZXkgYnJheWVkOyB1bmRlciB0aGUgbmV0dGxlcyB0aGV5IHdlcmUgZ2F0aGVyZWQgdG9nZXRoZXIuClRoZXkgd2VyZSBjaGlsZHJlbiBvZiBmb29scywgeWVhLCBjaGlsZHJlbiBvZiBiYXNlIG1lbjogdGhleSB3ZXJlIHZpbGVyIHRoYW4gdGhlIGVhcnRoLgpBbmQgbm93IGFtIEkgdGhlaXIgc29uZywgeWVhLCBJIGFtIHRoZWlyIGJ5d29yZC4KVGhleSBhYmhvciBtZSwgdGhleSBmbGVlIGZhciBmcm9tIG1lLCBhbmQgc3BhcmUgbm90IHRvIHNwaXQgaW4gbXkgZmFjZS4KQmVjYXVzZSBoZSBoYXRoIGxvb3NlZCBteSBjb3JkLCBhbmQgYWZmbGljdGVkIG1lLCB0aGV5IGhhdmUgYWxzbyBsZXQgbG9vc2UgdGhlIGJyaWRsZSBiZWZvcmUgbWUuClVwb24gbXkgcmlnaHQgaGFuZCByaXNlIHRoZSB5b3V0aDsgdGhleSBwdXNoIGF3YXkgbXkgZmVldCwgYW5kIHRoZXkgcmFpc2UgdXAgYWdhaW5zdCBtZSB0aGUgd2F5cyBvZiB0aGVpciBkZXN0cnVjdGlvbi4KVGhleSBtYXIgbXkgcGF0aCwgdGhleSBzZXQgZm9yd2FyZCBteSBjYWxhbWl0eSwgdGhleSBoYXZlIG5vIGhlbHBlci4KVGhleSBjYW1lIHVwb24gbWUgYXMgYSB3aWRlIGJyZWFraW5nIGluIG9mIHdhdGVyczogaW4gdGhlIGRlc29sYXRpb24gdGhleSByb2xsZWQgdGhlbXNlbHZlcyB1cG9uIG1lLgpUZXJyb3JzIGFyZSB0dXJuZWQgdXBvbiBtZTogdGhleSBwdXJzdWUgbXkgc291bCBhcyB0aGUgd2luZDogYW5kIG15IHdlbGZhcmUgcGFzc2V0aCBhd2F5IGFzIGEgY2xvdWQuCkFuZCBub3cgbXkgc291bCBpcyBwb3VyZWQgb3V0IHVwb24gbWU7IHRoZSBkYXlzIG9mIGFmZmxpY3Rpb24gaGF2ZSB0YWtlbiBob2xkIHVwb24gbWUuCk15IGJvbmVzIGFyZSBwaWVyY2VkIGluIG1lIGluIHRoZSBuaWdodCBzZWFzb246IGFuZCBteSBzaW5ld3MgdGFrZSBubyByZXN0LgpCeSB0aGUgZ3JlYXQgZm9yY2Ugb2YgbXkgZGlzZWFzZSBpcyBteSBnYXJtZW50IGNoYW5nZWQ6IGl0IGJpbmRldGggbWUgYWJvdXQgYXMgdGhlIGNvbGxhciBvZiBteSBjb2F0LgpIZSBoYXRoIGNhc3QgbWUgaW50byB0aGUgbWlyZSwgYW5kIEkgYW0gYmVjb21lIGxpa2UgZHVzdCBhbmQgYXNoZXMuCkkgY3J5IHVudG8gdGhlZSwgYW5kIHRob3UgZG9zdCBub3QgaGVhciBtZTogSSBzdGFuZCB1cCwgYW5kIHRob3UgcmVnYXJkZXN0IG1lIG5vdC4KVGhvdSBhcnQgYmVjb21lIGNydWVsIHRvIG1lOiB3aXRoIHRoeSBzdHJvbmcgaGFuZCB0aG91IG9wcG9zZXN0IHRoeXNlbGYgYWdhaW5zdCBtZS4KVGhvdSBsaWZ0ZXN0IG1lIHVwIHRvIHRoZSB3aW5kOyB0aG91IGNhdXNlc3QgbWUgdG8gcmlkZSB1cG9uIGl0LCBhbmQgZGlzc29sdmVzdCBteSBzdWJzdGFuY2UuCkZvciBJIGtub3cgdGhhdCB0aG91IHdpbHQgYnJpbmcgbWUgdG8gZGVhdGgsIGFuZCB0byB0aGUgaG91c2UgYXBwb2ludGVkIGZvciBhbGwgbGl2aW5nLgpIb3diZWl0IGhlIHdpbGwgbm90IHN0cmV0Y2ggb3V0IGhpcyBoYW5kIHRvIHRoZSBncmF2ZSwgdGhvdWdoIHRoZXkgY3J5IGluIGhpcyBkZXN0cnVjdGlvbi4KRGlkIG5vdCBJIHdlZXAgZm9yIGhpbSB0aGF0IHdhcyBpbiB0cm91YmxlPyB3YXMgbm90IG15IHNvdWwgZ3JpZXZlZCBmb3IgdGhlIHBvb3I/CldoZW4gSSBsb29rZWQgZm9yIGdvb2QsIHRoZW4gZXZpbCBjYW1lIHVudG8gbWU6IGFuZCB3aGVuIEkgd2FpdGVkIGZvciBsaWdodCwgdGhlcmUgY2FtZSBkYXJrbmVzcy4KTXkgYm93ZWxzIGJvaWxlZCwgYW5kIHJlc3RlZCBub3Q6IHRoZSBkYXlzIG9mIGFmZmxpY3Rpb24gcHJldmVudGVkIG1lLgpJIHdlbnQgbW91cm5pbmcgd2l0aG91dCB0aGUgc3VuOiBJIHN0b29kIHVwLCBhbmQgSSBjcmllZCBpbiB0aGUgY29uZ3JlZ2F0aW9uLgpJIGFtIGEgYnJvdGhlciB0byBkcmFnb25zLCBhbmQgYSBjb21wYW5pb24gdG8gb3dscy4KTXkgc2tpbiBpcyBibGFjayB1cG9uIG1lLCBhbmQgbXkgYm9uZXMgYXJlIGJ1cm5lZCB3aXRoIGhlYXQuCk15IGhhcnAgYWxzbyBpcyB0dXJuZWQgdG8gbW91cm5pbmcsIGFuZCBteSBvcmdhbiBpbnRvIHRoZSB2b2ljZSBvZiB0aGVtIHRoYXQgd2VlcC4KSSBtYWRlIGEgY292ZW5hbnQgd2l0aCBtaW5lIGV5ZXM7IHdoeSB0aGVuIHNob3VsZCBJIHRoaW5rIHVwb24gYSBtYWlkPwpGb3Igd2hhdCBwb3J0aW9uIG9mIEdvZCBpcyB0aGVyZSBmcm9tIGFib3ZlPyBhbmQgd2hhdCBpbmhlcml0YW5jZSBvZiB0aGUgQWxtaWdodHkgZnJvbSBvbiBoaWdoPwpJcyBub3QgZGVzdHJ1Y3Rpb24gdG8gdGhlIHdpY2tlZD8gYW5kIGEgc3RyYW5nZSBwdW5pc2htZW50IHRvIHRoZSB3b3JrZXJzIG9mIGluaXF1aXR5PwpEb3RoIG5vdCBoZSBzZWUgbXkgd2F5cywgYW5kIGNvdW50IGFsbCBteSBzdGVwcz8KSWYgSSBoYXZlIHdhbGtlZCB3aXRoIHZhbml0eSwgb3IgaWYgbXkgZm9vdCBoYXRoIGhhc3RlZCB0byBkZWNlaXQ7CkxldCBtZSBiZSB3ZWlnaGVkIGluIGFuIGV2ZW4gYmFsYW5jZSB0aGF0IEdvZCBtYXkga25vdyBtaW5lIGludGVncml0eS4KSWYgbXkgc3RlcCBoYXRoIHR1cm5lZCBvdXQgb2YgdGhlIHdheSwgYW5kIG1pbmUgaGVhcnQgd2Fsa2VkIGFmdGVyIG1pbmUgZXllcywgYW5kIGlmIGFueSBibG90IGhhdGggY2xlYXZlZCB0byBtaW5lIGhhbmRzOwpUaGVuIGxldCBtZSBzb3csIGFuZCBsZXQgYW5vdGhlciBlYXQ7IHllYSwgbGV0IG15IG9mZnNwcmluZyBiZSByb290ZWQgb3V0LgpJZiBtaW5lIGhlYXJ0IGhhdmUgYmVlbiBkZWNlaXZlZCBieSBhIHdvbWFuLCBvciBpZiBJIGhhdmUgbGFpZCB3YWl0IGF0IG15IG5laWdoYm91cidzIGRvb3I7ClRoZW4gbGV0IG15IHdpZmUgZ3JpbmQgdW50byBhbm90aGVyLCBhbmQgbGV0IG90aGVycyBib3cgZG93biB1cG9uIGhlci4KRm9yIHRoaXMgaXMgYW4gaGVpbm91cyBjcmltZTsgeWVhLCBpdCBpcyBhbiBpbmlxdWl0eSB0byBiZSBwdW5pc2hlZCBieSB0aGUganVkZ2VzLgpGb3IgaXQgaXMgYSBmaXJlIHRoYXQgY29uc3VtZXRoIHRvIGRlc3RydWN0aW9uLCBhbmQgd291bGQgcm9vdCBvdXQgYWxsIG1pbmUgaW5jcmVhc2UuCklmIEkgZGlkIGRlc3Bpc2UgdGhlIGNhdXNlIG9mIG15IG1hbnNlcnZhbnQgb3Igb2YgbXkgbWFpZHNlcnZhbnQsIHdoZW4gdGhleSBjb250ZW5kZWQgd2l0aCBtZTsKV2hhdCB0aGVuIHNoYWxsIEkgZG8gd2hlbiBHb2QgcmlzZXRoIHVwPyBhbmQgd2hlbiBoZSB2aXNpdGV0aCwgd2hhdCBzaGFsbCBJIGFuc3dlciBoaW0/CkRpZCBub3QgaGUgdGhhdCBtYWRlIG1lIGluIHRoZSB3b21iIG1ha2UgaGltPyBhbmQgZGlkIG5vdCBvbmUgZmFzaGlvbiB1cyBpbiB0aGUgd29tYj8KSWYgSSBoYXZlIHdpdGhoZWxkIHRoZSBwb29yIGZyb20gdGhlaXIgZGVzaXJlLCBvciBoYXZlIGNhdXNlZCB0aGUgZXllcyBvZiB0aGUgd2lkb3cgdG8gZmFpbDsKT3IgaGF2ZSBlYXRlbiBteSBtb3JzZWwgbXlzZWxmIGFsb25lLCBhbmQgdGhlIGZhdGhlcmxlc3MgaGF0aCBub3QgZWF0ZW4gdGhlcmVvZjsKKEZvciBmcm9tIG15IHlvdXRoIGhlIHdhcyBicm91Z2h0IHVwIHdpdGggbWUsIGFzIHdpdGggYSBmYXRoZXIsIGFuZCBJIGhhdmUgZ3VpZGVkIGhlciBmcm9tIG15IG1vdGhlcidzIHdvbWI7KQpJZiBJIGhhdmUgc2VlbiBhbnkgcGVyaXNoIGZvciB3YW50IG9mIGNsb3RoaW5nLCBvciBhbnkgcG9vciB3aXRob3V0IGNvdmVyaW5nOwpJZiBoaXMgbG9pbnMgaGF2ZSBub3QgYmxlc3NlZCBtZSwgYW5kIGlmIGhlIHdlcmUgbm90IHdhcm1lZCB3aXRoIHRoZSBmbGVlY2Ugb2YgbXkgc2hlZXA7CklmIEkgaGF2ZSBsaWZ0ZWQgdXAgbXkgaGFuZCBhZ2FpbnN0IHRoZSBmYXRoZXJsZXNzLCB3aGVuIEkgc2F3IG15IGhlbHAgaW4gdGhlIGdhdGU6ClRoZW4gbGV0IG1pbmUgYXJtIGZhbGwgZnJvbSBteSBzaG91bGRlciBibGFkZSwgYW5kIG1pbmUgYXJtIGJlIGJyb2tlbiBmcm9tIHRoZSBib25lLgpGb3IgZGVzdHJ1Y3Rpb24gZnJvbSBHb2Qgd2FzIGEgdGVycm9yIHRvIG1lLCBhbmQgYnkgcmVhc29uIG9mIGhpcyBoaWdobmVzcyBJIGNvdWxkIG5vdCBlbmR1cmUuCklmIEkgaGF2ZSBtYWRlIGdvbGQgbXkgaG9wZSwgb3IgaGF2ZSBzYWlkIHRvIHRoZSBmaW5lIGdvbGQsIFRob3UgYXJ0IG15IGNvbmZpZGVuY2U7CklmIEkgcmVqb2ljZSBiZWNhdXNlIG15IHdlYWx0aCB3YXMgZ3JlYXQsIGFuZCBiZWNhdXNlIG1pbmUgaGFuZCBoYWQgZ290dGVuIG11Y2g7CklmIEkgYmVoZWxkIHRoZSBzdW4gd2hlbiBpdCBzaGluZWQsIG9yIHRoZSBtb29uIHdhbGtpbmcgaW4gYnJpZ2h0bmVzczsKQW5kIG15IGhlYXJ0IGhhdGggYmVlbiBzZWNyZXRseSBlbnRpY2VkLCBvciBteSBtb3V0aCBoYXRoIGtpc3NlZCBteSBoYW5kOgpUaGlzIGFsc28gd2VyZSBhbiBpbmlxdWl0eSB0byBiZSBwdW5pc2hlZCBieSB0aGUganVkZ2U6IGZvciBJIHNob3VsZCBoYXZlIGRlbmllZCB0aGUgR29kIHRoYXQgaXMgYWJvdmUuCklmIEkgcmVqb2ljZSBhdCB0aGUgZGVzdHJ1Y3Rpb24gb2YgaGltIHRoYXQgaGF0ZWQgbWUsIG9yIGxpZnRlZCB1cCBteXNlbGYgd2hlbiBldmlsIGZvdW5kIGhpbToKTmVpdGhlciBoYXZlIEkgc3VmZmVyZWQgbXkgbW91dGggdG8gc2luIGJ5IHdpc2hpbmcgYSBjdXJzZSB0byBoaXMgc291bC4KSWYgdGhlIG1lbiBvZiBteSB0YWJlcm5hY2xlIHNhaWQgbm90LCBPaCB0aGF0IHdlIGhhZCBvZiBoaXMgZmxlc2ghIHdlIGNhbm5vdCBiZSBzYXRpc2ZpZWQuClRoZSBzdHJhbmdlciBkaWQgbm90IGxvZGdlIGluIHRoZSBzdHJlZXQ6IGJ1dCBJIG9wZW5lZCBteSBkb29ycyB0byB0aGUgdHJhdmVsbGVyLgpJZiBJIGNvdmVyZWQgbXkgdHJhbnNncmVzc2lvbnMgYXMgQWRhbSwgYnkgaGlkaW5nIG1pbmUgaW5pcXVpdHkgaW4gbXkgYm9zb206CkRpZCBJIGZlYXIgYSBncmVhdCBtdWx0aXR1ZGUsIG9yIGRpZCB0aGUgY29udGVtcHQgb2YgZmFtaWxpZXMgdGVycmlmeSBtZSwgdGhhdCBJIGtlcHQgc2lsZW5jZSwgYW5kIHdlbnQgbm90IG91dCBvZiB0aGUgZG9vcj8KT2ggdGhhdCBvbmUgd291bGQgaGVhciBtZSEgYmVob2xkLCBteSBkZXNpcmUgaXMsIHRoYXQgdGhlIEFsbWlnaHR5IHdvdWxkIGFuc3dlciBtZSwgYW5kIHRoYXQgbWluZSBhZHZlcnNhcnkgaGFkIHdyaXR0ZW4gYSBib29rLgpTdXJlbHkgSSB3b3VsZCB0YWtlIGl0IHVwb24gbXkgc2hvdWxkZXIsIGFuZCBiaW5kIGl0IGFzIGEgY3Jvd24gdG8gbWUuCkkgd291bGQgZGVjbGFyZSB1bnRvIGhpbSB0aGUgbnVtYmVyIG9mIG15IHN0ZXBzOyBhcyBhIHByaW5jZSB3b3VsZCBJIGdvIG5lYXIgdW50byBoaW0uCklmIG15IGxhbmQgY3J5IGFnYWluc3QgbWUsIG9yIHRoYXQgdGhlIGZ1cnJvd3MgbGlrZXdpc2UgdGhlcmVvZiBjb21wbGFpbjsKSWYgSSBoYXZlIGVhdGVuIHRoZSBmcnVpdHMgdGhlcmVvZiB3aXRob3V0IG1vbmV5LCBvciBoYXZlIGNhdXNlZCB0aGUgb3duZXJzIHRoZXJlb2YgdG8gbG9zZSB0aGVpciBsaWZlOgpMZXQgdGhpc3RsZXMgZ3JvdyBpbnN0ZWFkIG9mIHdoZWF0LCBhbmQgY29ja2xlIGluc3RlYWQgb2YgYmFybGV5LiBUaGUgd29yZHMgb2YgSm9iIGFyZSBlbmRlZC4KU28gdGhlc2UgdGhyZWUgbWVuIGNlYXNlZCB0byBhbnN3ZXIgSm9iLCBiZWNhdXNlIGhlIHdhcyByaWdodGVvdXMgaW4gaGlzIG93biBleWVzLgpUaGVuIHdhcyBraW5kbGVkIHRoZSB3cmF0aCBvZiBFbGlodSB0aGUgc29uIG9mIEJhcmFjaGVsIHRoZSBCdXppdGUsIG9mIHRoZSBraW5kcmVkIG9mIFJhbTogYWdhaW5zdCBKb2Igd2FzIGhpcyB3cmF0aCBraW5kbGVkLCBiZWNhdXNlIGhlIGp1c3RpZmllZCBoaW1zZWxmIHJhdGhlciB0aGFuIEdvZC4KQWxzbyBhZ2FpbnN0IGhpcyB0aHJlZSBmcmllbmRzIHdhcyBoaXMgd3JhdGgga2luZGxlZCwgYmVjYXVzZSB0aGV5IGhhZCBmb3VuZCBubyBhbnN3ZXIsIGFuZCB5ZXQgaGFkIGNvbmRlbW5lZCBKb2IuCk5vdyBFbGlodSBoYWQgd2FpdGVkIHRpbGwgSm9iIGhhZCBzcG9rZW4sIGJlY2F1c2UgdGhleSB3ZXJlIGVsZGVyIHRoYW4gaGUuCldoZW4gRWxpaHUgc2F3IHRoYXQgdGhlcmUgd2FzIG5vIGFuc3dlciBpbiB0aGUgbW91dGggb2YgdGhlc2UgdGhyZWUgbWVuLCB0aGVuIGhpcyB3cmF0aCB3YXMga2luZGxlZC4KQW5kIEVsaWh1IHRoZSBzb24gb2YgQmFyYWNoZWwgdGhlIEJ1eml0ZSBhbnN3ZXJlZCBhbmQgc2FpZCwgSSBhbSB5b3VuZywgYW5kIHllIGFyZSB2ZXJ5IG9sZDsgd2hlcmVmb3JlIEkgd2FzIGFmcmFpZCwgYW5kIGR1cnN0IG5vdCBzaGV3IHlvdSBtaW5lIG9waW5pb24uCkkgc2FpZCwgRGF5cyBzaG91bGQgc3BlYWssIGFuZCBtdWx0aXR1ZGUgb2YgeWVhcnMgc2hvdWxkIHRlYWNoIHdpc2RvbS4KQnV0IHRoZXJlIGlzIGEgc3Bpcml0IGluIG1hbjogYW5kIHRoZSBpbnNwaXJhdGlvbiBvZiB0aGUgQWxtaWdodHkgZ2l2ZXRoIHRoZW0gdW5kZXJzdGFuZGluZy4KR3JlYXQgbWVuIGFyZSBub3QgYWx3YXlzIHdpc2U6IG5laXRoZXIgZG8gdGhlIGFnZWQgdW5kZXJzdGFuZCBqdWRnbWVudC4KVGhlcmVmb3JlIEkgc2FpZCwgSGVhcmtlbiB0byBtZTsgSSBhbHNvIHdpbGwgc2hldyBtaW5lIG9waW5pb24uCkJlaG9sZCwgSSB3YWl0ZWQgZm9yIHlvdXIgd29yZHM7IEkgZ2F2ZSBlYXIgdG8geW91ciByZWFzb25zLCB3aGlsc3QgeWUgc2VhcmNoZWQgb3V0IHdoYXQgdG8gc2F5LgpZZWEsIEkgYXR0ZW5kZWQgdW50byB5b3UsIGFuZCwgYmVob2xkLCB0aGVyZSB3YXMgbm9uZSBvZiB5b3UgdGhhdCBjb252aW5jZWQgSm9iLCBvciB0aGF0IGFuc3dlcmVkIGhpcyB3b3JkczoKTGVzdCB5ZSBzaG91bGQgc2F5LCBXZSBoYXZlIGZvdW5kIG91dCB3aXNkb206IEdvZCB0aHJ1c3RldGggaGltIGRvd24sIG5vdCBtYW4uCk5vdyBoZSBoYXRoIG5vdCBkaXJlY3RlZCBoaXMgd29yZHMgYWdhaW5zdCBtZTogbmVpdGhlciB3aWxsIEkgYW5zd2VyIGhpbSB3aXRoIHlvdXIgc3BlZWNoZXMuClRoZXkgd2VyZSBhbWF6ZWQsIHRoZXkgYW5zd2VyZWQgbm8gbW9yZTogdGhleSBsZWZ0IG9mZiBzcGVha2luZy4KV2hlbiBJIGhhZCB3YWl0ZWQsIChmb3IgdGhleSBzcGFrZSBub3QsIGJ1dCBzdG9vZCBzdGlsbCwgYW5kIGFuc3dlcmVkIG5vIG1vcmU7KQpJIHNhaWQsIEkgd2lsbCBhbnN3ZXIgYWxzbyBteSBwYXJ0LCBJIGFsc28gd2lsbCBzaGV3IG1pbmUgb3Bpbmlvbi4KRm9yIEkgYW0gZnVsbCBvZiBtYXR0ZXIsIHRoZSBzcGlyaXQgd2l0aGluIG1lIGNvbnN0cmFpbmV0aCBtZS4KQmVob2xkLCBteSBiZWxseSBpcyBhcyB3aW5lIHdoaWNoIGhhdGggbm8gdmVudDsgaXQgaXMgcmVhZHkgdG8gYnVyc3QgbGlrZSBuZXcgYm90dGxlcy4KSSB3aWxsIHNwZWFrLCB0aGF0IEkgbWF5IGJlIHJlZnJlc2hlZDogSSB3aWxsIG9wZW4gbXkgbGlwcyBhbmQgYW5zd2VyLgpMZXQgbWUgbm90LCBJIHByYXkgeW91LCBhY2NlcHQgYW55IG1hbidzIHBlcnNvbiwgbmVpdGhlciBsZXQgbWUgZ2l2ZSBmbGF0dGVyaW5nIHRpdGxlcyB1bnRvIG1hbi4KRm9yIEkga25vdyBub3QgdG8gZ2l2ZSBmbGF0dGVyaW5nIHRpdGxlczsgaW4gc28gZG9pbmcgbXkgbWFrZXIgd291bGQgc29vbiB0YWtlIG1lIGF3YXkuCldoZXJlZm9yZSwgSm9iLCBJIHByYXkgdGhlZSwgaGVhciBteSBzcGVlY2hlcywgYW5kIGhlYXJrZW4gdG8gYWxsIG15IHdvcmRzLgpCZWhvbGQsIG5vdyBJIGhhdmUgb3BlbmVkIG15IG1vdXRoLCBteSB0b25ndWUgaGF0aCBzcG9rZW4gaW4gbXkgbW91dGguCk15IHdvcmRzIHNoYWxsIGJlIG9mIHRoZSB1cHJpZ2h0bmVzcyBvZiBteSBoZWFydDogYW5kIG15IGxpcHMgc2hhbGwgdXR0ZXIga25vd2xlZGdlIGNsZWFybHkuClRoZSBzcGlyaXQgb2YgR29kIGhhdGggbWFkZSBtZSwgYW5kIHRoZSBicmVhdGggb2YgdGhlIEFsbWlnaHR5IGhhdGggZ2l2ZW4gbWUgbGlmZS4KSWYgdGhvdSBjYW5zdCBhbnN3ZXIgbWUsIHNldCB0aHkgd29yZHMgaW4gb3JkZXIgYmVmb3JlIG1lLCBzdGFuZCB1cC4KQmVob2xkLCBJIGFtIGFjY29yZGluZyB0byB0aHkgd2lzaCBpbiBHb2QncyBzdGVhZDogSSBhbHNvIGFtIGZvcm1lZCBvdXQgb2YgdGhlIGNsYXkuCkJlaG9sZCwgbXkgdGVycm9yIHNoYWxsIG5vdCBtYWtlIHRoZWUgYWZyYWlkLCBuZWl0aGVyIHNoYWxsIG15IGhhbmQgYmUgaGVhdnkgdXBvbiB0aGVlLgpTdXJlbHkgdGhvdSBoYXN0IHNwb2tlbiBpbiBtaW5lIGhlYXJpbmcsIGFuZCBJIGhhdmUgaGVhcmQgdGhlIHZvaWNlIG9mIHRoeSB3b3Jkcywgc2F5aW5nLApJIGFtIGNsZWFuIHdpdGhvdXQgdHJhbnNncmVzc2lvbiwgSSBhbSBpbm5vY2VudDsgbmVpdGhlciBpcyB0aGVyZSBpbmlxdWl0eSBpbiBtZS4KQmVob2xkLCBoZSBmaW5kZXRoIG9jY2FzaW9ucyBhZ2FpbnN0IG1lLCBoZSBjb3VudGV0aCBtZSBmb3IgaGlzIGVuZW15LApIZSBwdXR0ZXRoIG15IGZlZXQgaW4gdGhlIHN0b2NrcywgaGUgbWFya2V0aCBhbGwgbXkgcGF0aHMuCkJlaG9sZCwgaW4gdGhpcyB0aG91IGFydCBub3QganVzdDogSSB3aWxsIGFuc3dlciB0aGVlLCB0aGF0IEdvZCBpcyBncmVhdGVyIHRoYW4gbWFuLgpXaHkgZG9zdCB0aG91IHN0cml2ZSBhZ2FpbnN0IGhpbT8gZm9yIGhlIGdpdmV0aCBub3QgYWNjb3VudCBvZiBhbnkgb2YgaGlzIG1hdHRlcnMuCkZvciBHb2Qgc3BlYWtldGggb25jZSwgeWVhIHR3aWNlLCB5ZXQgbWFuIHBlcmNlaXZldGggaXQgbm90LgpJbiBhIGRyZWFtLCBpbiBhIHZpc2lvbiBvZiB0aGUgbmlnaHQsIHdoZW4gZGVlcCBzbGVlcCBmYWxsZXRoIHVwb24gbWVuLCBpbiBzbHVtYmVyaW5ncyB1cG9uIHRoZSBiZWQ7ClRoZW4gaGUgb3BlbmV0aCB0aGUgZWFycyBvZiBtZW4sIGFuZCBzZWFsZXRoIHRoZWlyIGluc3RydWN0aW9uLApUaGF0IGhlIG1heSB3aXRoZHJhdyBtYW4gZnJvbSBoaXMgcHVycG9zZSwgYW5kIGhpZGUgcHJpZGUgZnJvbSBtYW4uCkhlIGtlZXBldGggYmFjayBoaXMgc291bCBmcm9tIHRoZSBwaXQsIGFuZCBoaXMgbGlmZSBmcm9tIHBlcmlzaGluZyBieSB0aGUgc3dvcmQuCkhlIGlzIGNoYXN0ZW5lZCBhbHNvIHdpdGggcGFpbiB1cG9uIGhpcyBiZWQsIGFuZCB0aGUgbXVsdGl0dWRlIG9mIGhpcyBib25lcyB3aXRoIHN0cm9uZyBwYWluOgpTbyB0aGF0IGhpcyBsaWZlIGFiaG9ycmV0aCBicmVhZCwgYW5kIGhpcyBzb3VsIGRhaW50eSBtZWF0LgpIaXMgZmxlc2ggaXMgY29uc3VtZWQgYXdheSwgdGhhdCBpdCBjYW5ub3QgYmUgc2VlbjsgYW5kIGhpcyBib25lcyB0aGF0IHdlcmUgbm90IHNlZW4gc3RpY2sgb3V0LgpZZWEsIGhpcyBzb3VsIGRyYXdldGggbmVhciB1bnRvIHRoZSBncmF2ZSwgYW5kIGhpcyBsaWZlIHRvIHRoZSBkZXN0cm95ZXJzLgpJZiB0aGVyZSBiZSBhIG1lc3NlbmdlciB3aXRoIGhpbSwgYW4gaW50ZXJwcmV0ZXIsIG9uZSBhbW9uZyBhIHRob3VzYW5kLCB0byBzaGV3IHVudG8gbWFuIGhpcyB1cHJpZ2h0bmVzczoKVGhlbiBoZSBpcyBncmFjaW91cyB1bnRvIGhpbSwgYW5kIHNhaXRoLCBEZWxpdmVyIGhpbSBmcm9tIGdvaW5nIGRvd24gdG8gdGhlIHBpdDogSSBoYXZlIGZvdW5kIGEgcmFuc29tLgpIaXMgZmxlc2ggc2hhbGwgYmUgZnJlc2hlciB0aGFuIGEgY2hpbGQnczogaGUgc2hhbGwgcmV0dXJuIHRvIHRoZSBkYXlzIG9mIGhpcyB5b3V0aDoKSGUgc2hhbGwgcHJheSB1bnRvIEdvZCwgYW5kIGhlIHdpbGwgYmUgZmF2b3VyYWJsZSB1bnRvIGhpbTogYW5kIGhlIHNoYWxsIHNlZSBoaXMgZmFjZSB3aXRoIGpveTogZm9yIGhlIHdpbGwgcmVuZGVyIHVudG8gbWFuIGhpcyByaWdodGVvdXNuZXNzLgpIZSBsb29rZXRoIHVwb24gbWVuLCBhbmQgaWYgYW55IHNheSwgSSBoYXZlIHNpbm5lZCwgYW5kIHBlcnZlcnRlZCB0aGF0IHdoaWNoIHdhcyByaWdodCwgYW5kIGl0IHByb2ZpdGVkIG1lIG5vdDsKSGUgd2lsbCBkZWxpdmVyIGhpcyBzb3VsIGZyb20gZ29pbmcgaW50byB0aGUgcGl0LCBhbmQgaGlzIGxpZmUgc2hhbGwgc2VlIHRoZSBsaWdodC4KTG8sIGFsbCB0aGVzZSB0aGluZ3Mgd29ya2V0aCBHb2Qgb2Z0ZW50aW1lcyB3aXRoIG1hbiwKVG8gYnJpbmcgYmFjayBoaXMgc291bCBmcm9tIHRoZSBwaXQsIHRvIGJlIGVubGlnaHRlbmVkIHdpdGggdGhlIGxpZ2h0IG9mIHRoZSBsaXZpbmcuCk1hcmsgd2VsbCwgTyBKb2IsIGhlYXJrZW4gdW50byBtZTogaG9sZCB0aHkgcGVhY2UsIGFuZCBJIHdpbGwgc3BlYWsuCklmIHRob3UgaGFzdCBhbnl0aGluZyB0byBzYXksIGFuc3dlciBtZTogc3BlYWssIGZvciBJIGRlc2lyZSB0byBqdXN0aWZ5IHRoZWUuCklmIG5vdCwgaGVhcmtlbiB1bnRvIG1lOiBob2xkIHRoeSBwZWFjZSwgYW5kIEkgc2hhbGwgdGVhY2ggdGhlZSB3aXNkb20uCkZ1cnRoZXJtb3JlIEVsaWh1IGFuc3dlcmVkIGFuZCBzYWlkLApIZWFyIG15IHdvcmRzLCBPIHllIHdpc2UgbWVuOyBhbmQgZ2l2ZSBlYXIgdW50byBtZSwgeWUgdGhhdCBoYXZlIGtub3dsZWRnZS4KRm9yIHRoZSBlYXIgdHJpZXRoIHdvcmRzLCBhcyB0aGUgbW91dGggdGFzdGV0aCBtZWF0LgpMZXQgdXMgY2hvb3NlIHRvIHVzIGp1ZGdtZW50OiBsZXQgdXMga25vdyBhbW9uZyBvdXJzZWx2ZXMgd2hhdCBpcyBnb29kLgpGb3IgSm9iIGhhdGggc2FpZCwgSSBhbSByaWdodGVvdXM6IGFuZCBHb2QgaGF0aCB0YWtlbiBhd2F5IG15IGp1ZGdtZW50LgpTaG91bGQgSSBsaWUgYWdhaW5zdCBteSByaWdodD8gbXkgd291bmQgaXMgaW5jdXJhYmxlIHdpdGhvdXQgdHJhbnNncmVzc2lvbi4KV2hhdCBtYW4gaXMgbGlrZSBKb2IsIHdobyBkcmlua2V0aCB1cCBzY29ybmluZyBsaWtlIHdhdGVyPwpXaGljaCBnb2V0aCBpbiBjb21wYW55IHdpdGggdGhlIHdvcmtlcnMgb2YgaW5pcXVpdHksIGFuZCB3YWxrZXRoIHdpdGggd2lja2VkIG1lbi4KRm9yIGhlIGhhdGggc2FpZCwgSXQgcHJvZml0ZXRoIGEgbWFuIG5vdGhpbmcgdGhhdCBoZSBzaG91bGQgZGVsaWdodCBoaW1zZWxmIHdpdGggR29kLgpUaGVyZWZvcmUgaGVhcmtlbiB1bnRvIG1lIHllIG1lbiBvZiB1bmRlcnN0YW5kaW5nOiBmYXIgYmUgaXQgZnJvbSBHb2QsIHRoYXQgaGUgc2hvdWxkIGRvIHdpY2tlZG5lc3M7IGFuZCBmcm9tIHRoZSBBbG1pZ2h0eSwgdGhhdCBoZSBzaG91bGQgY29tbWl0IGluaXF1aXR5LgpGb3IgdGhlIHdvcmsgb2YgYSBtYW4gc2hhbGwgaGUgcmVuZGVyIHVudG8gaGltLCBhbmQgY2F1c2UgZXZlcnkgbWFuIHRvIGZpbmQgYWNjb3JkaW5nIHRvIGhpcyB3YXlzLgpZZWEsIHN1cmVseSBHb2Qgd2lsbCBub3QgZG8gd2lja2VkbHksIG5laXRoZXIgd2lsbCB0aGUgQWxtaWdodHkgcGVydmVydCBqdWRnbWVudC4KV2hvIGhhdGggZ2l2ZW4gaGltIGEgY2hhcmdlIG92ZXIgdGhlIGVhcnRoPyBvciB3aG8gaGF0aCBkaXNwb3NlZCB0aGUgd2hvbGUgd29ybGQ/CklmIGhlIHNldCBoaXMgaGVhcnQgdXBvbiBtYW4sIGlmIGhlIGdhdGhlciB1bnRvIGhpbXNlbGYgaGlzIHNwaXJpdCBhbmQgaGlzIGJyZWF0aDsKQWxsIGZsZXNoIHNoYWxsIHBlcmlzaCB0b2dldGhlciwgYW5kIG1hbiBzaGFsbCB0dXJuIGFnYWluIHVudG8gZHVzdC4KSWYgbm93IHRob3UgaGFzdCB1bmRlcnN0YW5kaW5nLCBoZWFyIHRoaXM6IGhlYXJrZW4gdG8gdGhlIHZvaWNlIG9mIG15IHdvcmRzLgpTaGFsbCBldmVuIGhlIHRoYXQgaGF0ZXRoIHJpZ2h0IGdvdmVybj8gYW5kIHdpbHQgdGhvdSBjb25kZW1uIGhpbSB0aGF0IGlzIG1vc3QganVzdD8KSXMgaXQgZml0IHRvIHNheSB0byBhIGtpbmcsIFRob3UgYXJ0IHdpY2tlZD8gYW5kIHRvIHByaW5jZXMsIFllIGFyZSB1bmdvZGx5PwpIb3cgbXVjaCBsZXNzIHRvIGhpbSB0aGF0IGFjY2VwdGV0aCBub3QgdGhlIHBlcnNvbnMgb2YgcHJpbmNlcywgbm9yIHJlZ2FyZGV0aCB0aGUgcmljaCBtb3JlIHRoYW4gdGhlIHBvb3I/IGZvciB0aGV5IGFsbCBhcmUgdGhlIHdvcmsgb2YgaGlzIGhhbmRzLgpJbiBhIG1vbWVudCBzaGFsbCB0aGV5IGRpZSwgYW5kIHRoZSBwZW9wbGUgc2hhbGwgYmUgdHJvdWJsZWQgYXQgbWlkbmlnaHQsIGFuZCBwYXNzIGF3YXk6IGFuZCB0aGUgbWlnaHR5IHNoYWxsIGJlIHRha2VuIGF3YXkgd2l0aG91dCBoYW5kLgpGb3IgaGlzIGV5ZXMgYXJlIHVwb24gdGhlIHdheXMgb2YgbWFuLCBhbmQgaGUgc2VldGggYWxsIGhpcyBnb2luZ3MuClRoZXJlIGlzIG5vIGRhcmtuZXNzLCBub3Igc2hhZG93IG9mIGRlYXRoLCB3aGVyZSB0aGUgd29ya2VycyBvZiBpbmlxdWl0eSBtYXkgaGlkZSB0aGVtc2VsdmVzLgpGb3IgaGUgd2lsbCBub3QgbGF5IHVwb24gbWFuIG1vcmUgdGhhbiByaWdodDsgdGhhdCBoZSBzaG91bGQgZW50ZXIgaW50byBqdWRnbWVudCB3aXRoIEdvZC4KSGUgc2hhbGwgYnJlYWsgaW4gcGllY2VzIG1pZ2h0eSBtZW4gd2l0aG91dCBudW1iZXIsIGFuZCBzZXQgb3RoZXJzIGluIHRoZWlyIHN0ZWFkLgpUaGVyZWZvcmUgaGUga25vd2V0aCB0aGVpciB3b3JrcywgYW5kIGhlIG92ZXJ0dXJuZXRoIHRoZW0gaW4gdGhlIG5pZ2h0LCBzbyB0aGF0IHRoZXkgYXJlIGRlc3Ryb3llZC4KSGUgc3RyaWtldGggdGhlbSBhcyB3aWNrZWQgbWVuIGluIHRoZSBvcGVuIHNpZ2h0IG9mIG90aGVyczsKQmVjYXVzZSB0aGV5IHR1cm5lZCBiYWNrIGZyb20gaGltLCBhbmQgd291bGQgbm90IGNvbnNpZGVyIGFueSBvZiBoaXMgd2F5czoKU28gdGhhdCB0aGV5IGNhdXNlIHRoZSBjcnkgb2YgdGhlIHBvb3IgdG8gY29tZSB1bnRvIGhpbSwgYW5kIGhlIGhlYXJldGggdGhlIGNyeSBvZiB0aGUgYWZmbGljdGVkLgpXaGVuIGhlIGdpdmV0aCBxdWlldG5lc3MsIHdobyB0aGVuIGNhbiBtYWtlIHRyb3VibGU/IGFuZCB3aGVuIGhlIGhpZGV0aCBoaXMgZmFjZSwgd2hvIHRoZW4gY2FuIGJlaG9sZCBoaW0/IHdoZXRoZXIgaXQgYmUgZG9uZSBhZ2FpbnN0IGEgbmF0aW9uLCBvciBhZ2FpbnN0IGEgbWFuIG9ubHk6ClRoYXQgdGhlIGh5cG9jcml0ZSByZWlnbiBub3QsIGxlc3QgdGhlIHBlb3BsZSBiZSBlbnNuYXJlZC4KU3VyZWx5IGl0IGlzIG1lZXQgdG8gYmUgc2FpZCB1bnRvIEdvZCwgSSBoYXZlIGJvcm5lIGNoYXN0aXNlbWVudCwgSSB3aWxsIG5vdCBvZmZlbmQgYW55IG1vcmU6ClRoYXQgd2hpY2ggSSBzZWUgbm90IHRlYWNoIHRob3UgbWU6IGlmIEkgaGF2ZSBkb25lIGluaXF1aXR5LCBJIHdpbGwgZG8gbm8gbW9yZS4KU2hvdWxkIGl0IGJlIGFjY29yZGluZyB0byB0aHkgbWluZD8gaGUgd2lsbCByZWNvbXBlbnNlIGl0LCB3aGV0aGVyIHRob3UgcmVmdXNlLCBvciB3aGV0aGVyIHRob3UgY2hvb3NlOyBhbmQgbm90IEk6IHRoZXJlZm9yZSBzcGVhayB3aGF0IHRob3Uga25vd2VzdC4KTGV0IG1lbiBvZiB1bmRlcnN0YW5kaW5nIHRlbGwgbWUsIGFuZCBsZXQgYSB3aXNlIG1hbiBoZWFya2VuIHVudG8gbWUuCkpvYiBoYXRoIHNwb2tlbiB3aXRob3V0IGtub3dsZWRnZSwgYW5kIGhpcyB3b3JkcyB3ZXJlIHdpdGhvdXQgd2lzZG9tLgpNeSBkZXNpcmUgaXMgdGhhdCBKb2IgbWF5IGJlIHRyaWVkIHVudG8gdGhlIGVuZCBiZWNhdXNlIG9mIGhpcyBhbnN3ZXJzIGZvciB3aWNrZWQgbWVuLgpGb3IgaGUgYWRkZXRoIHJlYmVsbGlvbiB1bnRvIGhpcyBzaW4sIGhlIGNsYXBwZXRoIGhpcyBoYW5kcyBhbW9uZyB1cywgYW5kIG11bHRpcGxpZXRoIGhpcyB3b3JkcyBhZ2FpbnN0IEdvZC4KRWxpaHUgc3Bha2UgbW9yZW92ZXIsIGFuZCBzYWlkLApUaGlua2VzdCB0aG91IHRoaXMgdG8gYmUgcmlnaHQsIHRoYXQgdGhvdSBzYWlkc3QsIE15IHJpZ2h0ZW91c25lc3MgaXMgbW9yZSB0aGFuIEdvZCdzPwpGb3IgdGhvdSBzYWlkc3QsIFdoYXQgYWR2YW50YWdlIHdpbGwgaXQgYmUgdW50byB0aGVlPyBhbmQsIFdoYXQgcHJvZml0IHNoYWxsIEkgaGF2ZSwgaWYgSSBiZSBjbGVhbnNlZCBmcm9tIG15IHNpbj8KSSB3aWxsIGFuc3dlciB0aGVlLCBhbmQgdGh5IGNvbXBhbmlvbnMgd2l0aCB0aGVlLgpMb29rIHVudG8gdGhlIGhlYXZlbnMsIGFuZCBzZWU7IGFuZCBiZWhvbGQgdGhlIGNsb3VkcyB3aGljaCBhcmUgaGlnaGVyIHRoYW4gdGhvdS4KSWYgdGhvdSBzaW5uZXN0LCB3aGF0IGRvZXN0IHRob3UgYWdhaW5zdCBoaW0/IG9yIGlmIHRoeSB0cmFuc2dyZXNzaW9ucyBiZSBtdWx0aXBsaWVkLCB3aGF0IGRvZXN0IHRob3UgdW50byBoaW0/CklmIHRob3UgYmUgcmlnaHRlb3VzLCB3aGF0IGdpdmVzdCB0aG91IGhpbT8gb3Igd2hhdCByZWNlaXZldGggaGUgb2YgdGhpbmUgaGFuZD8KVGh5IHdpY2tlZG5lc3MgbWF5IGh1cnQgYSBtYW4gYXMgdGhvdSBhcnQ7IGFuZCB0aHkgcmlnaHRlb3VzbmVzcyBtYXkgcHJvZml0IHRoZSBzb24gb2YgbWFuLgpCeSByZWFzb24gb2YgdGhlIG11bHRpdHVkZSBvZiBvcHByZXNzaW9ucyB0aGV5IG1ha2UgdGhlIG9wcHJlc3NlZCB0byBjcnk6IHRoZXkgY3J5IG91dCBieSByZWFzb24gb2YgdGhlIGFybSBvZiB0aGUgbWlnaHR5LgpCdXQgbm9uZSBzYWl0aCwgV2hlcmUgaXMgR29kIG15IG1ha2VyLCB3aG8gZ2l2ZXRoIHNvbmdzIGluIHRoZSBuaWdodDsKV2hvIHRlYWNoZXRoIHVzIG1vcmUgdGhhbiB0aGUgYmVhc3RzIG9mIHRoZSBlYXJ0aCwgYW5kIG1ha2V0aCB1cyB3aXNlciB0aGFuIHRoZSBmb3dscyBvZiBoZWF2ZW4/ClRoZXJlIHRoZXkgY3J5LCBidXQgbm9uZSBnaXZldGggYW5zd2VyLCBiZWNhdXNlIG9mIHRoZSBwcmlkZSBvZiBldmlsIG1lbi4KU3VyZWx5IEdvZCB3aWxsIG5vdCBoZWFyIHZhbml0eSwgbmVpdGhlciB3aWxsIHRoZSBBbG1pZ2h0eSByZWdhcmQgaXQuCkFsdGhvdWdoIHRob3Ugc2F5ZXN0IHRob3Ugc2hhbHQgbm90IHNlZSBoaW0sIHlldCBqdWRnbWVudCBpcyBiZWZvcmUgaGltOyB0aGVyZWZvcmUgdHJ1c3QgdGhvdSBpbiBoaW0uCkJ1dCBub3csIGJlY2F1c2UgaXQgaXMgbm90IHNvLCBoZSBoYXRoIHZpc2l0ZWQgaW4gaGlzIGFuZ2VyOyB5ZXQgaGUga25vd2V0aCBpdCBub3QgaW4gZ3JlYXQgZXh0cmVtaXR5OgpUaGVyZWZvcmUgZG90aCBKb2Igb3BlbiBoaXMgbW91dGggaW4gdmFpbjsgaGUgbXVsdGlwbGlldGggd29yZHMgd2l0aG91dCBrbm93bGVkZ2UuCkVsaWh1IGFsc28gcHJvY2VlZGVkLCBhbmQgc2FpZCwKU3VmZmVyIG1lIGEgbGl0dGxlLCBhbmQgSSB3aWxsIHNoZXcgdGhlZSB0aGF0IEkgaGF2ZSB5ZXQgdG8gc3BlYWsgb24gR29kJ3MgYmVoYWxmLgpJIHdpbGwgZmV0Y2ggbXkga25vd2xlZGdlIGZyb20gYWZhciwgYW5kIHdpbGwgYXNjcmliZSByaWdodGVvdXNuZXNzIHRvIG15IE1ha2VyLgpGb3IgdHJ1bHkgbXkgd29yZHMgc2hhbGwgbm90IGJlIGZhbHNlOiBoZSB0aGF0IGlzIHBlcmZlY3QgaW4ga25vd2xlZGdlIGlzIHdpdGggdGhlZS4KQmVob2xkLCBHb2QgaXMgbWlnaHR5LCBhbmQgZGVzcGlzZXRoIG5vdCBhbnk6IGhlIGlzIG1pZ2h0eSBpbiBzdHJlbmd0aCBhbmQgd2lzZG9tLgpIZSBwcmVzZXJ2ZXRoIG5vdCB0aGUgbGlmZSBvZiB0aGUgd2lja2VkOiBidXQgZ2l2ZXRoIHJpZ2h0IHRvIHRoZSBwb29yLgpIZSB3aXRoZHJhd2V0aCBub3QgaGlzIGV5ZXMgZnJvbSB0aGUgcmlnaHRlb3VzOiBidXQgd2l0aCBraW5ncyBhcmUgdGhleSBvbiB0aGUgdGhyb25lOyB5ZWEsIGhlIGRvdGggZXN0YWJsaXNoIHRoZW0gZm9yIGV2ZXIsIGFuZCB0aGV5IGFyZSBleGFsdGVkLgpBbmQgaWYgdGhleSBiZSBib3VuZCBpbiBmZXR0ZXJzLCBhbmQgYmUgaG9sZGVuIGluIGNvcmRzIG9mIGFmZmxpY3Rpb247ClRoZW4gaGUgc2hld2V0aCB0aGVtIHRoZWlyIHdvcmssIGFuZCB0aGVpciB0cmFuc2dyZXNzaW9ucyB0aGF0IHRoZXkgaGF2ZSBleGNlZWRlZC4KSGUgb3BlbmV0aCBhbHNvIHRoZWlyIGVhciB0byBkaXNjaXBsaW5lLCBhbmQgY29tbWFuZGV0aCB0aGF0IHRoZXkgcmV0dXJuIGZyb20gaW5pcXVpdHkuCklmIHRoZXkgb2JleSBhbmQgc2VydmUgaGltLCB0aGV5IHNoYWxsIHNwZW5kIHRoZWlyIGRheXMgaW4gcHJvc3Blcml0eSwgYW5kIHRoZWlyIHllYXJzIGluIHBsZWFzdXJlcy4KQnV0IGlmIHRoZXkgb2JleSBub3QsIHRoZXkgc2hhbGwgcGVyaXNoIGJ5IHRoZSBzd29yZCwgYW5kIHRoZXkgc2hhbGwgZGllIHdpdGhvdXQga25vd2xlZGdlLgpCdXQgdGhlIGh5cG9jcml0ZXMgaW4gaGVhcnQgaGVhcCB1cCB3cmF0aDogdGhleSBjcnkgbm90IHdoZW4gaGUgYmluZGV0aCB0aGVtLgpUaGV5IGRpZSBpbiB5b3V0aCwgYW5kIHRoZWlyIGxpZmUgaXMgYW1vbmcgdGhlIHVuY2xlYW4uCkhlIGRlbGl2ZXJldGggdGhlIHBvb3IgaW4gaGlzIGFmZmxpY3Rpb24sIGFuZCBvcGVuZXRoIHRoZWlyIGVhcnMgaW4gb3BwcmVzc2lvbi4KRXZlbiBzbyB3b3VsZCBoZSBoYXZlIHJlbW92ZWQgdGhlZSBvdXQgb2YgdGhlIHN0cmFpdCBpbnRvIGEgYnJvYWQgcGxhY2UsIHdoZXJlIHRoZXJlIGlzIG5vIHN0cmFpdG5lc3M7IGFuZCB0aGF0IHdoaWNoIHNob3VsZCBiZSBzZXQgb24gdGh5IHRhYmxlIHNob3VsZCBiZSBmdWxsIG9mIGZhdG5lc3MuCkJ1dCB0aG91IGhhc3QgZnVsZmlsbGVkIHRoZSBqdWRnbWVudCBvZiB0aGUgd2lja2VkOiBqdWRnbWVudCBhbmQganVzdGljZSB0YWtlIGhvbGQgb24gdGhlZS4KQmVjYXVzZSB0aGVyZSBpcyB3cmF0aCwgYmV3YXJlIGxlc3QgaGUgdGFrZSB0aGVlIGF3YXkgd2l0aCBoaXMgc3Ryb2tlOiB0aGVuIGEgZ3JlYXQgcmFuc29tIGNhbm5vdCBkZWxpdmVyIHRoZWUuCldpbGwgaGUgZXN0ZWVtIHRoeSByaWNoZXM/IG5vLCBub3QgZ29sZCwgbm9yIGFsbCB0aGUgZm9yY2VzIG9mIHN0cmVuZ3RoLgpEZXNpcmUgbm90IHRoZSBuaWdodCwgd2hlbiBwZW9wbGUgYXJlIGN1dCBvZmYgaW4gdGhlaXIgcGxhY2UuClRha2UgaGVlZCwgcmVnYXJkIG5vdCBpbmlxdWl0eTogZm9yIHRoaXMgaGFzdCB0aG91IGNob3NlbiByYXRoZXIgdGhhbiBhZmZsaWN0aW9uLgpCZWhvbGQsIEdvZCBleGFsdGV0aCBieSBoaXMgcG93ZXI6IHdobyB0ZWFjaGV0aCBsaWtlIGhpbT8KV2hvIGhhdGggZW5qb2luZWQgaGltIGhpcyB3YXk/IG9yIHdobyBjYW4gc2F5LCBUaG91IGhhc3Qgd3JvdWdodCBpbmlxdWl0eT8KUmVtZW1iZXIgdGhhdCB0aG91IG1hZ25pZnkgaGlzIHdvcmssIHdoaWNoIG1lbiBiZWhvbGQuCkV2ZXJ5IG1hbiBtYXkgc2VlIGl0OyBtYW4gbWF5IGJlaG9sZCBpdCBhZmFyIG9mZi4KQmVob2xkLCBHb2QgaXMgZ3JlYXQsIGFuZCB3ZSBrbm93IGhpbSBub3QsIG5laXRoZXIgY2FuIHRoZSBudW1iZXIgb2YgaGlzIHllYXJzIGJlIHNlYXJjaGVkIG91dC4KRm9yIGhlIG1ha2V0aCBzbWFsbCB0aGUgZHJvcHMgb2Ygd2F0ZXI6IHRoZXkgcG91ciBkb3duIHJhaW4gYWNjb3JkaW5nIHRvIHRoZSB2YXBvdXIgdGhlcmVvZjoKV2hpY2ggdGhlIGNsb3VkcyBkbyBkcm9wIGFuZCBkaXN0aWwgdXBvbiBtYW4gYWJ1bmRhbnRseS4KQWxzbyBjYW4gYW55IHVuZGVyc3RhbmQgdGhlIHNwcmVhZGluZ3Mgb2YgdGhlIGNsb3Vkcywgb3IgdGhlIG5vaXNlIG9mIGhpcyB0YWJlcm5hY2xlPwpCZWhvbGQsIGhlIHNwcmVhZGV0aCBoaXMgbGlnaHQgdXBvbiBpdCwgYW5kIGNvdmVyZXRoIHRoZSBib3R0b20gb2YgdGhlIHNlYS4KRm9yIGJ5IHRoZW0ganVkZ2V0aCBoZSB0aGUgcGVvcGxlOyBoZSBnaXZldGggbWVhdCBpbiBhYnVuZGFuY2UuCldpdGggY2xvdWRzIGhlIGNvdmVyZXRoIHRoZSBsaWdodDsgYW5kIGNvbW1hbmRldGggaXQgbm90IHRvIHNoaW5lIGJ5IHRoZSBjbG91ZCB0aGF0IGNvbWV0aCBiZXR3aXh0LgpUaGUgbm9pc2UgdGhlcmVvZiBzaGV3ZXRoIGNvbmNlcm5pbmcgaXQsIHRoZSBjYXR0bGUgYWxzbyBjb25jZXJuaW5nIHRoZSB2YXBvdXIuCkF0IHRoaXMgYWxzbyBteSBoZWFydCB0cmVtYmxldGgsIGFuZCBpcyBtb3ZlZCBvdXQgb2YgaGlzIHBsYWNlLgpIZWFyIGF0dGVudGl2ZWx5IHRoZSBub2lzZSBvZiBoaXMgdm9pY2UsIGFuZCB0aGUgc291bmQgdGhhdCBnb2V0aCBvdXQgb2YgaGlzIG1vdXRoLgpIZSBkaXJlY3RldGggaXQgdW5kZXIgdGhlIHdob2xlIGhlYXZlbiwgYW5kIGhpcyBsaWdodG5pbmcgdW50byB0aGUgZW5kcyBvZiB0aGUgZWFydGguCkFmdGVyIGl0IGEgdm9pY2Ugcm9hcmV0aDogaGUgdGh1bmRlcmV0aCB3aXRoIHRoZSB2b2ljZSBvZiBoaXMgZXhjZWxsZW5jeTsgYW5kIGhlIHdpbGwgbm90IHN0YXkgdGhlbSB3aGVuIGhpcyB2b2ljZSBpcyBoZWFyZC4KR29kIHRodW5kZXJldGggbWFydmVsbG91c2x5IHdpdGggaGlzIHZvaWNlOyBncmVhdCB0aGluZ3MgZG9ldGggaGUsIHdoaWNoIHdlIGNhbm5vdCBjb21wcmVoZW5kLgpGb3IgaGUgc2FpdGggdG8gdGhlIHNub3csIEJlIHRob3Ugb24gdGhlIGVhcnRoOyBsaWtld2lzZSB0byB0aGUgc21hbGwgcmFpbiwgYW5kIHRvIHRoZSBncmVhdCByYWluIG9mIGhpcyBzdHJlbmd0aC4KSGUgc2VhbGV0aCB1cCB0aGUgaGFuZCBvZiBldmVyeSBtYW47IHRoYXQgYWxsIG1lbiBtYXkga25vdyBoaXMgd29yay4KVGhlbiB0aGUgYmVhc3RzIGdvIGludG8gZGVucywgYW5kIHJlbWFpbiBpbiB0aGVpciBwbGFjZXMuCk91dCBvZiB0aGUgc291dGggY29tZXRoIHRoZSB3aGlybHdpbmQ6IGFuZCBjb2xkIG91dCBvZiB0aGUgbm9ydGguCkJ5IHRoZSBicmVhdGggb2YgR29kIGZyb3N0IGlzIGdpdmVuOiBhbmQgdGhlIGJyZWFkdGggb2YgdGhlIHdhdGVycyBpcyBzdHJhaXRlbmVkLgpBbHNvIGJ5IHdhdGVyaW5nIGhlIHdlYXJpZXRoIHRoZSB0aGljayBjbG91ZDogaGUgc2NhdHRlcmV0aCBoaXMgYnJpZ2h0IGNsb3VkOgpBbmQgaXQgaXMgdHVybmVkIHJvdW5kIGFib3V0IGJ5IGhpcyBjb3Vuc2VsczogdGhhdCB0aGV5IG1heSBkbyB3aGF0c29ldmVyIGhlIGNvbW1hbmRldGggdGhlbSB1cG9uIHRoZSBmYWNlIG9mIHRoZSB3b3JsZCBpbiB0aGUgZWFydGguCkhlIGNhdXNldGggaXQgdG8gY29tZSwgd2hldGhlciBmb3IgY29ycmVjdGlvbiwgb3IgZm9yIGhpcyBsYW5kLCBvciBmb3IgbWVyY3kuCkhlYXJrZW4gdW50byB0aGlzLCBPIEpvYjogc3RhbmQgc3RpbGwsIGFuZCBjb25zaWRlciB0aGUgd29uZHJvdXMgd29ya3Mgb2YgR29kLgpEb3N0IHRob3Uga25vdyB3aGVuIEdvZCBkaXNwb3NlZCB0aGVtLCBhbmQgY2F1c2VkIHRoZSBsaWdodCBvZiBoaXMgY2xvdWQgdG8gc2hpbmU/CkRvc3QgdGhvdSBrbm93IHRoZSBiYWxhbmNpbmdzIG9mIHRoZSBjbG91ZHMsIHRoZSB3b25kcm91cyB3b3JrcyBvZiBoaW0gd2hpY2ggaXMgcGVyZmVjdCBpbiBrbm93bGVkZ2U/CkhvdyB0aHkgZ2FybWVudHMgYXJlIHdhcm0sIHdoZW4gaGUgcXVpZXRldGggdGhlIGVhcnRoIGJ5IHRoZSBzb3V0aCB3aW5kPwpIYXN0IHRob3Ugd2l0aCBoaW0gc3ByZWFkIG91dCB0aGUgc2t5LCB3aGljaCBpcyBzdHJvbmcsIGFuZCBhcyBhIG1vbHRlbiBsb29raW5nIGdsYXNzPwpUZWFjaCB1cyB3aGF0IHdlIHNoYWxsIHNheSB1bnRvIGhpbTsgZm9yIHdlIGNhbm5vdCBvcmRlciBvdXIgc3BlZWNoIGJ5IHJlYXNvbiBvZiBkYXJrbmVzcy4KU2hhbGwgaXQgYmUgdG9sZCBoaW0gdGhhdCBJIHNwZWFrPyBpZiBhIG1hbiBzcGVhaywgc3VyZWx5IGhlIHNoYWxsIGJlIHN3YWxsb3dlZCB1cC4KQW5kIG5vdyBtZW4gc2VlIG5vdCB0aGUgYnJpZ2h0IGxpZ2h0IHdoaWNoIGlzIGluIHRoZSBjbG91ZHM6IGJ1dCB0aGUgd2luZCBwYXNzZXRoLCBhbmQgY2xlYW5zZXRoIHRoZW0uCkZhaXIgd2VhdGhlciBjb21ldGggb3V0IG9mIHRoZSBub3J0aDogd2l0aCBHb2QgaXMgdGVycmlibGUgbWFqZXN0eS4KVG91Y2hpbmcgdGhlIEFsbWlnaHR5LCB3ZSBjYW5ub3QgZmluZCBoaW0gb3V0OiBoZSBpcyBleGNlbGxlbnQgaW4gcG93ZXIsIGFuZCBpbiBqdWRnbWVudCwgYW5kIGluIHBsZW50eSBvZiBqdXN0aWNlOiBoZSB3aWxsIG5vdCBhZmZsaWN0LgpNZW4gZG8gdGhlcmVmb3JlIGZlYXIgaGltOiBoZSByZXNwZWN0ZXRoIG5vdCBhbnkgdGhhdCBhcmUgd2lzZSBvZiBoZWFydC4KVGhlbiB0aGUgTE9SRCBhbnN3ZXJlZCBKb2Igb3V0IG9mIHRoZSB3aGlybHdpbmQsIGFuZCBzYWlkLApXaG8gaXMgdGhpcyB0aGF0IGRhcmtlbmV0aCBjb3Vuc2VsIGJ5IHdvcmRzIHdpdGhvdXQga25vd2xlZGdlPwpHaXJkIHVwIG5vdyB0aHkgbG9pbnMgbGlrZSBhIG1hbjsgZm9yIEkgd2lsbCBkZW1hbmQgb2YgdGhlZSwgYW5kIGFuc3dlciB0aG91IG1lLgpXaGVyZSB3YXN0IHRob3Ugd2hlbiBJIGxhaWQgdGhlIGZvdW5kYXRpb25zIG9mIHRoZSBlYXJ0aD8gZGVjbGFyZSwgaWYgdGhvdSBoYXN0IHVuZGVyc3RhbmRpbmcuCldobyBoYXRoIGxhaWQgdGhlIG1lYXN1cmVzIHRoZXJlb2YsIGlmIHRob3Uga25vd2VzdD8gb3Igd2hvIGhhdGggc3RyZXRjaGVkIHRoZSBsaW5lIHVwb24gaXQ/CldoZXJldXBvbiBhcmUgdGhlIGZvdW5kYXRpb25zIHRoZXJlb2YgZmFzdGVuZWQ/IG9yIHdobyBsYWlkIHRoZSBjb3JuZXIgc3RvbmUgdGhlcmVvZjsKV2hlbiB0aGUgbW9ybmluZyBzdGFycyBzYW5nIHRvZ2V0aGVyLCBhbmQgYWxsIHRoZSBzb25zIG9mIEdvZCBzaG91dGVkIGZvciBqb3k/Ck9yIHdobyBzaHV0IHVwIHRoZSBzZWEgd2l0aCBkb29ycywgd2hlbiBpdCBicmFrZSBmb3J0aCwgYXMgaWYgaXQgaGFkIGlzc3VlZCBvdXQgb2YgdGhlIHdvbWI/CldoZW4gSSBtYWRlIHRoZSBjbG91ZCB0aGUgZ2FybWVudCB0aGVyZW9mLCBhbmQgdGhpY2sgZGFya25lc3MgYSBzd2FkZGxpbmdiYW5kIGZvciBpdCwKQW5kIGJyYWtlIHVwIGZvciBpdCBteSBkZWNyZWVkIHBsYWNlLCBhbmQgc2V0IGJhcnMgYW5kIGRvb3JzLApBbmQgc2FpZCwgSGl0aGVydG8gc2hhbHQgdGhvdSBjb21lLCBidXQgbm8gZnVydGhlcjogYW5kIGhlcmUgc2hhbGwgdGh5IHByb3VkIHdhdmVzIGJlIHN0YXllZD8KSGFzdCB0aG91IGNvbW1hbmRlZCB0aGUgbW9ybmluZyBzaW5jZSB0aHkgZGF5czsgYW5kIGNhdXNlZCB0aGUgZGF5c3ByaW5nIHRvIGtub3cgaGlzIHBsYWNlOwpUaGF0IGl0IG1pZ2h0IHRha2UgaG9sZCBvZiB0aGUgZW5kcyBvZiB0aGUgZWFydGgsIHRoYXQgdGhlIHdpY2tlZCBtaWdodCBiZSBzaGFrZW4gb3V0IG9mIGl0PwpJdCBpcyB0dXJuZWQgYXMgY2xheSB0byB0aGUgc2VhbDsgYW5kIHRoZXkgc3RhbmQgYXMgYSBnYXJtZW50LgpBbmQgZnJvbSB0aGUgd2lja2VkIHRoZWlyIGxpZ2h0IGlzIHdpdGhob2xkZW4sIGFuZCB0aGUgaGlnaCBhcm0gc2hhbGwgYmUgYnJva2VuLgpIYXN0IHRob3UgZW50ZXJlZCBpbnRvIHRoZSBzcHJpbmdzIG9mIHRoZSBzZWE/IG9yIGhhc3QgdGhvdSB3YWxrZWQgaW4gdGhlIHNlYXJjaCBvZiB0aGUgZGVwdGg/CkhhdmUgdGhlIGdhdGVzIG9mIGRlYXRoIGJlZW4gb3BlbmVkIHVudG8gdGhlZT8gb3IgaGFzdCB0aG91IHNlZW4gdGhlIGRvb3JzIG9mIHRoZSBzaGFkb3cgb2YgZGVhdGg/Ckhhc3QgdGhvdSBwZXJjZWl2ZWQgdGhlIGJyZWFkdGggb2YgdGhlIGVhcnRoPyBkZWNsYXJlIGlmIHRob3Uga25vd2VzdCBpdCBhbGwuCldoZXJlIGlzIHRoZSB3YXkgd2hlcmUgbGlnaHQgZHdlbGxldGg/IGFuZCBhcyBmb3IgZGFya25lc3MsIHdoZXJlIGlzIHRoZSBwbGFjZSB0aGVyZW9mLApUaGF0IHRob3Ugc2hvdWxkZXN0IHRha2UgaXQgdG8gdGhlIGJvdW5kIHRoZXJlb2YsIGFuZCB0aGF0IHRob3Ugc2hvdWxkZXN0IGtub3cgdGhlIHBhdGhzIHRvIHRoZSBob3VzZSB0aGVyZW9mPwpLbm93ZXN0IHRob3UgaXQsIGJlY2F1c2UgdGhvdSB3YXN0IHRoZW4gYm9ybj8gb3IgYmVjYXVzZSB0aGUgbnVtYmVyIG9mIHRoeSBkYXlzIGlzIGdyZWF0PwpIYXN0IHRob3UgZW50ZXJlZCBpbnRvIHRoZSB0cmVhc3VyZXMgb2YgdGhlIHNub3c/IG9yIGhhc3QgdGhvdSBzZWVuIHRoZSB0cmVhc3VyZXMgb2YgdGhlIGhhaWwsCldoaWNoIEkgaGF2ZSByZXNlcnZlZCBhZ2FpbnN0IHRoZSB0aW1lIG9mIHRyb3VibGUsIGFnYWluc3QgdGhlIGRheSBvZiBiYXR0bGUgYW5kIHdhcj8KQnkgd2hhdCB3YXkgaXMgdGhlIGxpZ2h0IHBhcnRlZCwgd2hpY2ggc2NhdHRlcmV0aCB0aGUgZWFzdCB3aW5kIHVwb24gdGhlIGVhcnRoPwpXaG8gaGF0aCBkaXZpZGVkIGEgd2F0ZXJjb3Vyc2UgZm9yIHRoZSBvdmVyZmxvd2luZyBvZiB3YXRlcnMsIG9yIGEgd2F5IGZvciB0aGUgbGlnaHRuaW5nIG9mIHRodW5kZXI7ClRvIGNhdXNlIGl0IHRvIHJhaW4gb24gdGhlIGVhcnRoLCB3aGVyZSBubyBtYW4gaXM7IG9uIHRoZSB3aWxkZXJuZXNzLCB3aGVyZWluIHRoZXJlIGlzIG5vIG1hbjsKVG8gc2F0aXNmeSB0aGUgZGVzb2xhdGUgYW5kIHdhc3RlIGdyb3VuZDsgYW5kIHRvIGNhdXNlIHRoZSBidWQgb2YgdGhlIHRlbmRlciBoZXJiIHRvIHNwcmluZyBmb3J0aD8KSGF0aCB0aGUgcmFpbiBhIGZhdGhlcj8gb3Igd2hvIGhhdGggYmVnb3R0ZW4gdGhlIGRyb3BzIG9mIGRldz8KT3V0IG9mIHdob3NlIHdvbWIgY2FtZSB0aGUgaWNlPyBhbmQgdGhlIGhvYXJ5IGZyb3N0IG9mIGhlYXZlbiwgd2hvIGhhdGggZ2VuZGVyZWQgaXQ/ClRoZSB3YXRlcnMgYXJlIGhpZCBhcyB3aXRoIGEgc3RvbmUsIGFuZCB0aGUgZmFjZSBvZiB0aGUgZGVlcCBpcyBmcm96ZW4uCkNhbnN0IHRob3UgYmluZCB0aGUgc3dlZXQgaW5mbHVlbmNlcyBvZiBQbGVpYWRlcywgb3IgbG9vc2UgdGhlIGJhbmRzIG9mIE9yaW9uPwpDYW5zdCB0aG91IGJyaW5nIGZvcnRoIE1henphcm90aCBpbiBoaXMgc2Vhc29uPyBvciBjYW5zdCB0aG91IGd1aWRlIEFyY3R1cnVzIHdpdGggaGlzIHNvbnM/Cktub3dlc3QgdGhvdSB0aGUgb3JkaW5hbmNlcyBvZiBoZWF2ZW4/IGNhbnN0IHRob3Ugc2V0IHRoZSBkb21pbmlvbiB0aGVyZW9mIGluIHRoZSBlYXJ0aD8KQ2Fuc3QgdGhvdSBsaWZ0IHVwIHRoeSB2b2ljZSB0byB0aGUgY2xvdWRzLCB0aGF0IGFidW5kYW5jZSBvZiB3YXRlcnMgbWF5IGNvdmVyIHRoZWU/CkNhbnN0IHRob3Ugc2VuZCBsaWdodG5pbmdzLCB0aGF0IHRoZXkgbWF5IGdvIGFuZCBzYXkgdW50byB0aGVlLCBIZXJlIHdlIGFyZT8KV2hvIGhhdGggcHV0IHdpc2RvbSBpbiB0aGUgaW53YXJkIHBhcnRzPyBvciB3aG8gaGF0aCBnaXZlbiB1bmRlcnN0YW5kaW5nIHRvIHRoZSBoZWFydD8KV2hvIGNhbiBudW1iZXIgdGhlIGNsb3VkcyBpbiB3aXNkb20/IG9yIHdobyBjYW4gc3RheSB0aGUgYm90dGxlcyBvZiBoZWF2ZW4sCldoZW4gdGhlIGR1c3QgZ3Jvd2V0aCBpbnRvIGhhcmRuZXNzLCBhbmQgdGhlIGNsb2RzIGNsZWF2ZSBmYXN0IHRvZ2V0aGVyPwpXaWx0IHRob3UgaHVudCB0aGUgcHJleSBmb3IgdGhlIGxpb24/IG9yIGZpbGwgdGhlIGFwcGV0aXRlIG9mIHRoZSB5b3VuZyBsaW9ucywKV2hlbiB0aGV5IGNvdWNoIGluIHRoZWlyIGRlbnMsIGFuZCBhYmlkZSBpbiB0aGUgY292ZXJ0IHRvIGxpZSBpbiB3YWl0PwpXaG8gcHJvdmlkZXRoIGZvciB0aGUgcmF2ZW4gaGlzIGZvb2Q/IHdoZW4gaGlzIHlvdW5nIG9uZXMgY3J5IHVudG8gR29kLCB0aGV5IHdhbmRlciBmb3IgbGFjayBvZiBtZWF0LgpLbm93ZXN0IHRob3UgdGhlIHRpbWUgd2hlbiB0aGUgd2lsZCBnb2F0cyBvZiB0aGUgcm9jayBicmluZyBmb3J0aD8gb3IgY2Fuc3QgdGhvdSBtYXJrIHdoZW4gdGhlIGhpbmRzIGRvIGNhbHZlPwpDYW5zdCB0aG91IG51bWJlciB0aGUgbW9udGhzIHRoYXQgdGhleSBmdWxmaWw/IG9yIGtub3dlc3QgdGhvdSB0aGUgdGltZSB3aGVuIHRoZXkgYnJpbmcgZm9ydGg/ClRoZXkgYm93IHRoZW1zZWx2ZXMsIHRoZXkgYnJpbmcgZm9ydGggdGhlaXIgeW91bmcgb25lcywgdGhleSBjYXN0IG91dCB0aGVpciBzb3Jyb3dzLgpUaGVpciB5b3VuZyBvbmVzIGFyZSBpbiBnb29kIGxpa2luZywgdGhleSBncm93IHVwIHdpdGggY29ybjsgdGhleSBnbyBmb3J0aCwgYW5kIHJldHVybiBub3QgdW50byB0aGVtLgpXaG8gaGF0aCBzZW50IG91dCB0aGUgd2lsZCBhc3MgZnJlZT8gb3Igd2hvIGhhdGggbG9vc2VkIHRoZSBiYW5kcyBvZiB0aGUgd2lsZCBhc3M/Cldob3NlIGhvdXNlIEkgaGF2ZSBtYWRlIHRoZSB3aWxkZXJuZXNzLCBhbmQgdGhlIGJhcnJlbiBsYW5kIGhpcyBkd2VsbGluZ3MuCkhlIHNjb3JuZXRoIHRoZSBtdWx0aXR1ZGUgb2YgdGhlIGNpdHksIG5laXRoZXIgcmVnYXJkZXRoIGhlIHRoZSBjcnlpbmcgb2YgdGhlIGRyaXZlci4KVGhlIHJhbmdlIG9mIHRoZSBtb3VudGFpbnMgaXMgaGlzIHBhc3R1cmUsIGFuZCBoZSBzZWFyY2hldGggYWZ0ZXIgZXZlcnkgZ3JlZW4gdGhpbmcuCldpbGwgdGhlIHVuaWNvcm4gYmUgd2lsbGluZyB0byBzZXJ2ZSB0aGVlLCBvciBhYmlkZSBieSB0aHkgY3JpYj8KQ2Fuc3QgdGhvdSBiaW5kIHRoZSB1bmljb3JuIHdpdGggaGlzIGJhbmQgaW4gdGhlIGZ1cnJvdz8gb3Igd2lsbCBoZSBoYXJyb3cgdGhlIHZhbGxleXMgYWZ0ZXIgdGhlZT8KV2lsdCB0aG91IHRydXN0IGhpbSwgYmVjYXVzZSBoaXMgc3RyZW5ndGggaXMgZ3JlYXQ/IG9yIHdpbHQgdGhvdSBsZWF2ZSB0aHkgbGFib3VyIHRvIGhpbT8KV2lsdCB0aG91IGJlbGlldmUgaGltLCB0aGF0IGhlIHdpbGwgYnJpbmcgaG9tZSB0aHkgc2VlZCwgYW5kIGdhdGhlciBpdCBpbnRvIHRoeSBiYXJuPwpHYXZlc3QgdGhvdSB0aGUgZ29vZGx5IHdpbmdzIHVudG8gdGhlIHBlYWNvY2tzPyBvciB3aW5ncyBhbmQgZmVhdGhlcnMgdW50byB0aGUgb3N0cmljaD8KV2hpY2ggbGVhdmV0aCBoZXIgZWdncyBpbiB0aGUgZWFydGgsIGFuZCB3YXJtZXRoIHRoZW0gaW4gZHVzdCwKQW5kIGZvcmdldHRldGggdGhhdCB0aGUgZm9vdCBtYXkgY3J1c2ggdGhlbSwgb3IgdGhhdCB0aGUgd2lsZCBiZWFzdCBtYXkgYnJlYWsgdGhlbS4KU2hlIGlzIGhhcmRlbmVkIGFnYWluc3QgaGVyIHlvdW5nIG9uZXMsIGFzIHRob3VnaCB0aGV5IHdlcmUgbm90IGhlcidzOiBoZXIgbGFib3VyIGlzIGluIHZhaW4gd2l0aG91dCBmZWFyOwpCZWNhdXNlIEdvZCBoYXRoIGRlcHJpdmVkIGhlciBvZiB3aXNkb20sIG5laXRoZXIgaGF0aCBoZSBpbXBhcnRlZCB0byBoZXIgdW5kZXJzdGFuZGluZy4KV2hhdCB0aW1lIHNoZSBsaWZ0ZXRoIHVwIGhlcnNlbGYgb24gaGlnaCwgc2hlIHNjb3JuZXRoIHRoZSBob3JzZSBhbmQgaGlzIHJpZGVyLgpIYXN0IHRob3UgZ2l2ZW4gdGhlIGhvcnNlIHN0cmVuZ3RoPyBoYXN0IHRob3UgY2xvdGhlZCBoaXMgbmVjayB3aXRoIHRodW5kZXI/CkNhbnN0IHRob3UgbWFrZSBoaW0gYWZyYWlkIGFzIGEgZ3Jhc3Nob3BwZXI/IHRoZSBnbG9yeSBvZiBoaXMgbm9zdHJpbHMgaXMgdGVycmlibGUuCkhlIHBhd2V0aCBpbiB0aGUgdmFsbGV5LCBhbmQgcmVqb2ljZXRoIGluIGhpcyBzdHJlbmd0aDogaGUgZ29ldGggb24gdG8gbWVldCB0aGUgYXJtZWQgbWVuLgpIZSBtb2NrZXRoIGF0IGZlYXIsIGFuZCBpcyBub3QgYWZmcmlnaHRlZDsgbmVpdGhlciB0dXJuZXRoIGhlIGJhY2sgZnJvbSB0aGUgc3dvcmQuClRoZSBxdWl2ZXIgcmF0dGxldGggYWdhaW5zdCBoaW0sIHRoZSBnbGl0dGVyaW5nIHNwZWFyIGFuZCB0aGUgc2hpZWxkLgpIZSBzd2FsbG93ZXRoIHRoZSBncm91bmQgd2l0aCBmaWVyY2VuZXNzIGFuZCByYWdlOiBuZWl0aGVyIGJlbGlldmV0aCBoZSB0aGF0IGl0IGlzIHRoZSBzb3VuZCBvZiB0aGUgdHJ1bXBldC4KSGUgc2FpdGggYW1vbmcgdGhlIHRydW1wZXRzLCBIYSwgaGE7IGFuZCBoZSBzbWVsbGV0aCB0aGUgYmF0dGxlIGFmYXIgb2ZmLCB0aGUgdGh1bmRlciBvZiB0aGUgY2FwdGFpbnMsIGFuZCB0aGUgc2hvdXRpbmcuCkRvdGggdGhlIGhhd2sgZmx5IGJ5IHRoeSB3aXNkb20sIGFuZCBzdHJldGNoIGhlciB3aW5ncyB0b3dhcmQgdGhlIHNvdXRoPwpEb3RoIHRoZSBlYWdsZSBtb3VudCB1cCBhdCB0aHkgY29tbWFuZCwgYW5kIG1ha2UgaGVyIG5lc3Qgb24gaGlnaD8KU2hlIGR3ZWxsZXRoIGFuZCBhYmlkZXRoIG9uIHRoZSByb2NrLCB1cG9uIHRoZSBjcmFnIG9mIHRoZSByb2NrLCBhbmQgdGhlIHN0cm9uZyBwbGFjZS4KRnJvbSB0aGVuY2Ugc2hlIHNlZWtldGggdGhlIHByZXksIGFuZCBoZXIgZXllcyBiZWhvbGQgYWZhciBvZmYuCkhlciB5b3VuZyBvbmVzIGFsc28gc3VjayB1cCBibG9vZDogYW5kIHdoZXJlIHRoZSBzbGFpbiBhcmUsIHRoZXJlIGlzIHNoZS4KTW9yZW92ZXIgdGhlIExPUkQgYW5zd2VyZWQgSm9iLCBhbmQgc2FpZCwKU2hhbGwgaGUgdGhhdCBjb250ZW5kZXRoIHdpdGggdGhlIEFsbWlnaHR5IGluc3RydWN0IGhpbT8gaGUgdGhhdCByZXByb3ZldGggR29kLCBsZXQgaGltIGFuc3dlciBpdC4KVGhlbiBKb2IgYW5zd2VyZWQgdGhlIExPUkQsIGFuZCBzYWlkLApCZWhvbGQsIEkgYW0gdmlsZTsgd2hhdCBzaGFsbCBJIGFuc3dlciB0aGVlPyBJIHdpbGwgbGF5IG1pbmUgaGFuZCB1cG9uIG15IG1vdXRoLgpPbmNlIGhhdmUgSSBzcG9rZW47IGJ1dCBJIHdpbGwgbm90IGFuc3dlcjogeWVhLCB0d2ljZTsgYnV0IEkgd2lsbCBwcm9jZWVkIG5vIGZ1cnRoZXIuClRoZW4gYW5zd2VyZWQgdGhlIExPUkQgdW50byBKb2Igb3V0IG9mIHRoZSB3aGlybHdpbmQsIGFuZCBzYWlkLApHaXJkIHVwIHRoeSBsb2lucyBub3cgbGlrZSBhIG1hbjogSSB3aWxsIGRlbWFuZCBvZiB0aGVlLCBhbmQgZGVjbGFyZSB0aG91IHVudG8gbWUuCldpbHQgdGhvdSBhbHNvIGRpc2FubnVsIG15IGp1ZGdtZW50PyB3aWx0IHRob3UgY29uZGVtbiBtZSwgdGhhdCB0aG91IG1heWVzdCBiZSByaWdodGVvdXM/Ckhhc3QgdGhvdSBhbiBhcm0gbGlrZSBHb2Q/IG9yIGNhbnN0IHRob3UgdGh1bmRlciB3aXRoIGEgdm9pY2UgbGlrZSBoaW0/CkRlY2sgdGh5c2VsZiBub3cgd2l0aCBtYWplc3R5IGFuZCBleGNlbGxlbmN5OyBhbmQgYXJyYXkgdGh5c2VsZiB3aXRoIGdsb3J5IGFuZCBiZWF1dHkuCkNhc3QgYWJyb2FkIHRoZSByYWdlIG9mIHRoeSB3cmF0aDogYW5kIGJlaG9sZCBldmVyeSBvbmUgdGhhdCBpcyBwcm91ZCwgYW5kIGFiYXNlIGhpbS4KTG9vayBvbiBldmVyeSBvbmUgdGhhdCBpcyBwcm91ZCwgYW5kIGJyaW5nIGhpbSBsb3c7IGFuZCB0cmVhZCBkb3duIHRoZSB3aWNrZWQgaW4gdGhlaXIgcGxhY2UuCkhpZGUgdGhlbSBpbiB0aGUgZHVzdCB0b2dldGhlcjsgYW5kIGJpbmQgdGhlaXIgZmFjZXMgaW4gc2VjcmV0LgpUaGVuIHdpbGwgSSBhbHNvIGNvbmZlc3MgdW50byB0aGVlIHRoYXQgdGhpbmUgb3duIHJpZ2h0IGhhbmQgY2FuIHNhdmUgdGhlZS4KQmVob2xkIG5vdyBiZWhlbW90aCwgd2hpY2ggSSBtYWRlIHdpdGggdGhlZTsgaGUgZWF0ZXRoIGdyYXNzIGFzIGFuIG94LgpMbyBub3csIGhpcyBzdHJlbmd0aCBpcyBpbiBoaXMgbG9pbnMsIGFuZCBoaXMgZm9yY2UgaXMgaW4gdGhlIG5hdmVsIG9mIGhpcyBiZWxseS4KSGUgbW92ZXRoIGhpcyB0YWlsIGxpa2UgYSBjZWRhcjogdGhlIHNpbmV3cyBvZiBoaXMgc3RvbmVzIGFyZSB3cmFwcGVkIHRvZ2V0aGVyLgpIaXMgYm9uZXMgYXJlIGFzIHN0cm9uZyBwaWVjZXMgb2YgYnJhc3M7IGhpcyBib25lcyBhcmUgbGlrZSBiYXJzIG9mIGlyb24uCkhlIGlzIHRoZSBjaGllZiBvZiB0aGUgd2F5cyBvZiBHb2Q6IGhlIHRoYXQgbWFkZSBoaW0gY2FuIG1ha2UgaGlzIHN3b3JkIHRvIGFwcHJvYWNoIHVudG8gaGltLgpTdXJlbHkgdGhlIG1vdW50YWlucyBicmluZyBoaW0gZm9ydGggZm9vZCwgd2hlcmUgYWxsIHRoZSBiZWFzdHMgb2YgdGhlIGZpZWxkIHBsYXkuCkhlIGxpZXRoIHVuZGVyIHRoZSBzaGFkeSB0cmVlcywgaW4gdGhlIGNvdmVydCBvZiB0aGUgcmVlZCwgYW5kIGZlbnMuClRoZSBzaGFkeSB0cmVlcyBjb3ZlciBoaW0gd2l0aCB0aGVpciBzaGFkb3c7IHRoZSB3aWxsb3dzIG9mIHRoZSBicm9vayBjb21wYXNzIGhpbSBhYm91dC4KQmVob2xkLCBoZSBkcmlua2V0aCB1cCBhIHJpdmVyLCBhbmQgaGFzdGV0aCBub3Q6IGhlIHRydXN0ZXRoIHRoYXQgaGUgY2FuIGRyYXcgdXAgSm9yZGFuIGludG8gaGlzIG1vdXRoLgpIZSB0YWtldGggaXQgd2l0aCBoaXMgZXllczogaGlzIG5vc2UgcGllcmNldGggdGhyb3VnaCBzbmFyZXMuCkNhbnN0IHRob3UgZHJhdyBvdXQgbGV2aWF0aGFuIHdpdGggYW4gaG9vaz8gb3IgaGlzIHRvbmd1ZSB3aXRoIGEgY29yZCB3aGljaCB0aG91IGxldHRlc3QgZG93bj8KQ2Fuc3QgdGhvdSBwdXQgYW4gaG9vayBpbnRvIGhpcyBub3NlPyBvciBib3JlIGhpcyBqYXcgdGhyb3VnaCB3aXRoIGEgdGhvcm4/CldpbGwgaGUgbWFrZSBtYW55IHN1cHBsaWNhdGlvbnMgdW50byB0aGVlPyB3aWxsIGhlIHNwZWFrIHNvZnQgd29yZHMgdW50byB0aGVlPwpXaWxsIGhlIG1ha2UgYSBjb3ZlbmFudCB3aXRoIHRoZWU/IHdpbHQgdGhvdSB0YWtlIGhpbSBmb3IgYSBzZXJ2YW50IGZvciBldmVyPwpXaWx0IHRob3UgcGxheSB3aXRoIGhpbSBhcyB3aXRoIGEgYmlyZD8gb3Igd2lsdCB0aG91IGJpbmQgaGltIGZvciB0aHkgbWFpZGVucz8KU2hhbGwgdGhlIGNvbXBhbmlvbnMgbWFrZSBhIGJhbnF1ZXQgb2YgaGltPyBzaGFsbCB0aGV5IHBhcnQgaGltIGFtb25nIHRoZSBtZXJjaGFudHM/CkNhbnN0IHRob3UgZmlsbCBoaXMgc2tpbiB3aXRoIGJhcmJlZCBpcm9ucz8gb3IgaGlzIGhlYWQgd2l0aCBmaXNoIHNwZWFycz8KTGF5IHRoaW5lIGhhbmQgdXBvbiBoaW0sIHJlbWVtYmVyIHRoZSBiYXR0bGUsIGRvIG5vIG1vcmUuCkJlaG9sZCwgdGhlIGhvcGUgb2YgaGltIGlzIGluIHZhaW46IHNoYWxsIG5vdCBvbmUgYmUgY2FzdCBkb3duIGV2ZW4gYXQgdGhlIHNpZ2h0IG9mIGhpbT8KTm9uZSBpcyBzbyBmaWVyY2UgdGhhdCBkYXJlIHN0aXIgaGltIHVwOiB3aG8gdGhlbiBpcyBhYmxlIHRvIHN0YW5kIGJlZm9yZSBtZT8KV2hvIGhhdGggcHJldmVudGVkIG1lLCB0aGF0IEkgc2hvdWxkIHJlcGF5IGhpbT8gd2hhdHNvZXZlciBpcyB1bmRlciB0aGUgd2hvbGUgaGVhdmVuIGlzIG1pbmUuCkkgd2lsbCBub3QgY29uY2VhbCBoaXMgcGFydHMsIG5vciBoaXMgcG93ZXIsIG5vciBoaXMgY29tZWx5IHByb3BvcnRpb24uCldobyBjYW4gZGlzY292ZXIgdGhlIGZhY2Ugb2YgaGlzIGdhcm1lbnQ/IG9yIHdobyBjYW4gY29tZSB0byBoaW0gd2l0aCBoaXMgZG91YmxlIGJyaWRsZT8KV2hvIGNhbiBvcGVuIHRoZSBkb29ycyBvZiBoaXMgZmFjZT8gaGlzIHRlZXRoIGFyZSB0ZXJyaWJsZSByb3VuZCBhYm91dC4KSGlzIHNjYWxlcyBhcmUgaGlzIHByaWRlLCBzaHV0IHVwIHRvZ2V0aGVyIGFzIHdpdGggYSBjbG9zZSBzZWFsLgpPbmUgaXMgc28gbmVhciB0byBhbm90aGVyLCB0aGF0IG5vIGFpciBjYW4gY29tZSBiZXR3ZWVuIHRoZW0uClRoZXkgYXJlIGpvaW5lZCBvbmUgdG8gYW5vdGhlciwgdGhleSBzdGljayB0b2dldGhlciwgdGhhdCB0aGV5IGNhbm5vdCBiZSBzdW5kZXJlZC4KQnkgaGlzIG5lZXNpbmdzIGEgbGlnaHQgZG90aCBzaGluZSwgYW5kIGhpcyBleWVzIGFyZSBsaWtlIHRoZSBleWVsaWRzIG9mIHRoZSBtb3JuaW5nLgpPdXQgb2YgaGlzIG1vdXRoIGdvIGJ1cm5pbmcgbGFtcHMsIGFuZCBzcGFya3Mgb2YgZmlyZSBsZWFwIG91dC4KT3V0IG9mIGhpcyBub3N0cmlscyBnb2V0aCBzbW9rZSwgYXMgb3V0IG9mIGEgc2VldGhpbmcgcG90IG9yIGNhbGRyb24uCkhpcyBicmVhdGgga2luZGxldGggY29hbHMsIGFuZCBhIGZsYW1lIGdvZXRoIG91dCBvZiBoaXMgbW91dGguCkluIGhpcyBuZWNrIHJlbWFpbmV0aCBzdHJlbmd0aCwgYW5kIHNvcnJvdyBpcyB0dXJuZWQgaW50byBqb3kgYmVmb3JlIGhpbS4KVGhlIGZsYWtlcyBvZiBoaXMgZmxlc2ggYXJlIGpvaW5lZCB0b2dldGhlcjogdGhleSBhcmUgZmlybSBpbiB0aGVtc2VsdmVzOyB0aGV5IGNhbm5vdCBiZSBtb3ZlZC4KSGlzIGhlYXJ0IGlzIGFzIGZpcm0gYXMgYSBzdG9uZTsgeWVhLCBhcyBoYXJkIGFzIGEgcGllY2Ugb2YgdGhlIG5ldGhlciBtaWxsc3RvbmUuCldoZW4gaGUgcmFpc2V0aCB1cCBoaW1zZWxmLCB0aGUgbWlnaHR5IGFyZSBhZnJhaWQ6IGJ5IHJlYXNvbiBvZiBicmVha2luZ3MgdGhleSBwdXJpZnkgdGhlbXNlbHZlcy4KVGhlIHN3b3JkIG9mIGhpbSB0aGF0IGxheWV0aCBhdCBoaW0gY2Fubm90IGhvbGQ6IHRoZSBzcGVhciwgdGhlIGRhcnQsIG5vciB0aGUgaGFiZXJnZW9uLgpIZSBlc3RlZW1ldGggaXJvbiBhcyBzdHJhdywgYW5kIGJyYXNzIGFzIHJvdHRlbiB3b29kLgpUaGUgYXJyb3cgY2Fubm90IG1ha2UgaGltIGZsZWU6IHNsaW5nc3RvbmVzIGFyZSB0dXJuZWQgd2l0aCBoaW0gaW50byBzdHViYmxlLgpEYXJ0cyBhcmUgY291bnRlZCBhcyBzdHViYmxlOiBoZSBsYXVnaGV0aCBhdCB0aGUgc2hha2luZyBvZiBhIHNwZWFyLgpTaGFycCBzdG9uZXMgYXJlIHVuZGVyIGhpbTogaGUgc3ByZWFkZXRoIHNoYXJwIHBvaW50ZWQgdGhpbmdzIHVwb24gdGhlIG1pcmUuCkhlIG1ha2V0aCB0aGUgZGVlcCB0byBib2lsIGxpa2UgYSBwb3Q6IGhlIG1ha2V0aCB0aGUgc2VhIGxpa2UgYSBwb3Qgb2Ygb2ludG1lbnQuCkhlIG1ha2V0aCBhIHBhdGggdG8gc2hpbmUgYWZ0ZXIgaGltOyBvbmUgd291bGQgdGhpbmsgdGhlIGRlZXAgdG8gYmUgaG9hcnkuClVwb24gZWFydGggdGhlcmUgaXMgbm90IGhpcyBsaWtlLCB3aG8gaXMgbWFkZSB3aXRob3V0IGZlYXIuCkhlIGJlaG9sZGV0aCBhbGwgaGlnaCB0aGluZ3M6IGhlIGlzIGEga2luZyBvdmVyIGFsbCB0aGUgY2hpbGRyZW4gb2YgcHJpZGUuClRoZW4gSm9iIGFuc3dlcmVkIHRoZSBMT1JELCBhbmQgc2FpZCwKSSBrbm93IHRoYXQgdGhvdSBjYW5zdCBkbyBldmVyeSB0aGluZywgYW5kIHRoYXQgbm8gdGhvdWdodCBjYW4gYmUgd2l0aGhvbGRlbiBmcm9tIHRoZWUuCldobyBpcyBoZSB0aGF0IGhpZGV0aCBjb3Vuc2VsIHdpdGhvdXQga25vd2xlZGdlPyB0aGVyZWZvcmUgaGF2ZSBJIHV0dGVyZWQgdGhhdCBJIHVuZGVyc3Rvb2Qgbm90OyB0aGluZ3MgdG9vIHdvbmRlcmZ1bCBmb3IgbWUsIHdoaWNoIEkga25ldyBub3QuCkhlYXIsIEkgYmVzZWVjaCB0aGVlLCBhbmQgSSB3aWxsIHNwZWFrOiBJIHdpbGwgZGVtYW5kIG9mIHRoZWUsIGFuZCBkZWNsYXJlIHRob3UgdW50byBtZS4KSSBoYXZlIGhlYXJkIG9mIHRoZWUgYnkgdGhlIGhlYXJpbmcgb2YgdGhlIGVhcjogYnV0IG5vdyBtaW5lIGV5ZSBzZWV0aCB0aGVlLgpXaGVyZWZvcmUgSSBhYmhvciBteXNlbGYsIGFuZCByZXBlbnQgaW4gZHVzdCBhbmQgYXNoZXMuCkFuZCBpdCB3YXMgc28sIHRoYXQgYWZ0ZXIgdGhlIExPUkQgaGFkIHNwb2tlbiB0aGVzZSB3b3JkcyB1bnRvIEpvYiwgdGhlIExPUkQgc2FpZCB0byBFbGlwaGF6IHRoZSBUZW1hbml0ZSwgTXkgd3JhdGggaXMga2luZGxlZCBhZ2FpbnN0IHRoZWUsIGFuZCBhZ2FpbnN0IHRoeSB0d28gZnJpZW5kczogZm9yIHllIGhhdmUgbm90IHNwb2tlbiBvZiBtZSB0aGUgdGhpbmcgdGhhdCBpcyByaWdodCwgYXMgbXkgc2VydmFudCBKb2IgaGF0aC4KVGhlcmVmb3JlIHRha2UgdW50byB5b3Ugbm93IHNldmVuIGJ1bGxvY2tzIGFuZCBzZXZlbiByYW1zLCBhbmQgZ28gdG8gbXkgc2VydmFudCBKb2IsIGFuZCBvZmZlciB1cCBmb3IgeW91cnNlbHZlcyBhIGJ1cm50IG9mZmVyaW5nOyBhbmQgbXkgc2VydmFudCBKb2Igc2hhbGwgcHJheSBmb3IgeW91OiBmb3IgaGltIHdpbGwgSSBhY2NlcHQ6IGxlc3QgSSBkZWFsIHdpdGggeW91IGFmdGVyIHlvdXIgZm9sbHksIGluIHRoYXQgeWUgaGF2ZSBub3Qgc3Bva2VuIG9mIG1lIHRoZSB0aGluZyB3aGljaCBpcyByaWdodCwgbGlrZSBteSBzZXJ2YW50IEpvYi4KU28gRWxpcGhheiB0aGUgVGVtYW5pdGUgYW5kIEJpbGRhZCB0aGUgU2h1aGl0ZSBhbmQgWm9waGFyIHRoZSBOYWFtYXRoaXRlIHdlbnQsIGFuZCBkaWQgYWNjb3JkaW5nIGFzIHRoZSBMT1JEIGNvbW1hbmRlZCB0aGVtOiB0aGUgTE9SRCBhbHNvIGFjY2VwdGVkIEpvYi4KQW5kIHRoZSBMT1JEIHR1cm5lZCB0aGUgY2FwdGl2aXR5IG9mIEpvYiwgd2hlbiBoZSBwcmF5ZWQgZm9yIGhpcyBmcmllbmRzOiBhbHNvIHRoZSBMT1JEIGdhdmUgSm9iIHR3aWNlIGFzIG11Y2ggYXMgaGUgaGFkIGJlZm9yZS4KVGhlbiBjYW1lIHRoZXJlIHVudG8gaGltIGFsbCBoaXMgYnJldGhyZW4sIGFuZCBhbGwgaGlzIHNpc3RlcnMsIGFuZCBhbGwgdGhleSB0aGF0IGhhZCBiZWVuIG9mIGhpcyBhY3F1YWludGFuY2UgYmVmb3JlLCBhbmQgZGlkIGVhdCBicmVhZCB3aXRoIGhpbSBpbiBoaXMgaG91c2U6IGFuZCB0aGV5IGJlbW9hbmVkIGhpbSwgYW5kIGNvbWZvcnRlZCBoaW0gb3ZlciBhbGwgdGhlIGV2aWwgdGhhdCB0aGUgTE9SRCBoYWQgYnJvdWdodCB1cG9uIGhpbTogZXZlcnkgbWFuIGFsc28gZ2F2ZSBoaW0gYSBwaWVjZSBvZiBtb25leSwgYW5kIGV2ZXJ5IG9uZSBhbiBlYXJyaW5nIG9mIGdvbGQuClNvIHRoZSBMT1JEIGJsZXNzZWQgdGhlIGxhdHRlciBlbmQgb2YgSm9iIG1vcmUgdGhhbiBoaXMgYmVnaW5uaW5nOiBmb3IgaGUgaGFkIGZvdXJ0ZWVuIHRob3VzYW5kIHNoZWVwLCBhbmQgc2l4IHRob3VzYW5kIGNhbWVscywgYW5kIGEgdGhvdXNhbmQgeW9rZSBvZiBveGVuLCBhbmQgYSB0aG91c2FuZCBzaGUgYXNzZXMuCkhlIGhhZCBhbHNvIHNldmVuIHNvbnMgYW5kIHRocmVlIGRhdWdodGVycy4KQW5kIGhlIGNhbGxlZCB0aGUgbmFtZSBvZiB0aGUgZmlyc3QsIEplbWltYTsgYW5kIHRoZSBuYW1lIG9mIHRoZSBzZWNvbmQsIEtlemlhOyBhbmQgdGhlIG5hbWUgb2YgdGhlIHRoaXJkLCBLZXJlbmhhcHB1Y2guCkFuZCBpbiBhbGwgdGhlIGxhbmQgd2VyZSBubyB3b21lbiBmb3VuZCBzbyBmYWlyIGFzIHRoZSBkYXVnaHRlcnMgb2YgSm9iOiBhbmQgdGhlaXIgZmF0aGVyIGdhdmUgdGhlbSBpbmhlcml0YW5jZSBhbW9uZyB0aGVpciBicmV0aHJlbi4KQWZ0ZXIgdGhpcyBsaXZlZCBKb2IgYW4gaHVuZHJlZCBhbmQgZm9ydHkgeWVhcnMsIGFuZCBzYXcgaGlzIHNvbnMsIGFuZCBoaXMgc29ucycgc29ucywgZXZlbiBmb3VyIGdlbmVyYXRpb25zLgpTbyBKb2IgZGllZCwgYmVpbmcgb2xkIGFuZCBmdWxsIG9mIGRheXMuCkJsZXNzZWQgaXMgdGhlIG1hbiB0aGF0IHdhbGtldGggbm90IGluIHRoZSBjb3Vuc2VsIG9mIHRoZSB1bmdvZGx5LCBub3Igc3RhbmRldGggaW4gdGhlIHdheSBvZiBzaW5uZXJzLCBub3Igc2l0dGV0aCBpbiB0aGUgc2VhdCBvZiB0aGUgc2Nvcm5mdWwuCkJ1dCBoaXMgZGVsaWdodCBpcyBpbiB0aGUgbGF3IG9mIHRoZSBMT1JEOyBhbmQgaW4gaGlzIGxhdyBkb3RoIGhlIG1lZGl0YXRlIGRheSBhbmQgbmlnaHQuCkFuZCBoZSBzaGFsbCBiZSBsaWtlIGEgdHJlZSBwbGFudGVkIGJ5IHRoZSByaXZlcnMgb2Ygd2F0ZXIsIHRoYXQgYnJpbmdldGggZm9ydGggaGlzIGZydWl0IGluIGhpcyBzZWFzb247IGhpcyBsZWFmIGFsc28gc2hhbGwgbm90IHdpdGhlcjsgYW5kIHdoYXRzb2V2ZXIgaGUgZG9ldGggc2hhbGwgcHJvc3Blci4KVGhlIHVuZ29kbHkgYXJlIG5vdCBzbzogYnV0IGFyZSBsaWtlIHRoZSBjaGFmZiB3aGljaCB0aGUgd2luZCBkcml2ZXRoIGF3YXkuClRoZXJlZm9yZSB0aGUgdW5nb2RseSBzaGFsbCBub3Qgc3RhbmQgaW4gdGhlIGp1ZGdtZW50LCBub3Igc2lubmVycyBpbiB0aGUgY29uZ3JlZ2F0aW9uIG9mIHRoZSByaWdodGVvdXMuCkZvciB0aGUgTE9SRCBrbm93ZXRoIHRoZSB3YXkgb2YgdGhlIHJpZ2h0ZW91czogYnV0IHRoZSB3YXkgb2YgdGhlIHVuZ29kbHkgc2hhbGwgcGVyaXNoLgpXaHkgZG8gdGhlIGhlYXRoZW4gcmFnZSwgYW5kIHRoZSBwZW9wbGUgaW1hZ2luZSBhIHZhaW4gdGhpbmc/ClRoZSBraW5ncyBvZiB0aGUgZWFydGggc2V0IHRoZW1zZWx2ZXMsIGFuZCB0aGUgcnVsZXJzIHRha2UgY291bnNlbCB0b2dldGhlciwgYWdhaW5zdCB0aGUgTE9SRCwgYW5kIGFnYWluc3QgaGlzIGFub2ludGVkLCBzYXlpbmcsCkxldCB1cyBicmVhayB0aGVpciBiYW5kcyBhc3VuZGVyLCBhbmQgY2FzdCBhd2F5IHRoZWlyIGNvcmRzIGZyb20gdXMuCkhlIHRoYXQgc2l0dGV0aCBpbiB0aGUgaGVhdmVucyBzaGFsbCBsYXVnaDogdGhlIExPUkQgc2hhbGwgaGF2ZSB0aGVtIGluIGRlcmlzaW9uLgpUaGVuIHNoYWxsIGhlIHNwZWFrIHVudG8gdGhlbSBpbiBoaXMgd3JhdGgsIGFuZCB2ZXggdGhlbSBpbiBoaXMgc29yZSBkaXNwbGVhc3VyZS4KWWV0IGhhdmUgSSBzZXQgbXkga2luZyB1cG9uIG15IGhvbHkgaGlsbCBvZiBaaW9uLgpJIHdpbGwgZGVjbGFyZSB0aGUgZGVjcmVlOiB0aGUgTE9SRCBoYXRoIHNhaWQgdW50byBtZSwgVGhvdSBhcnQgbXkgU29uOyB0aGlzIGRheSBoYXZlIEkgYmVnb3R0ZW4gdGhlZS4KQXNrIG9mIG1lLCBhbmQgSSBzaGFsbCBnaXZlIHRoZWUgdGhlIGhlYXRoZW4gZm9yIHRoaW5lIGluaGVyaXRhbmNlLCBhbmQgdGhlIHV0dGVybW9zdCBwYXJ0cyBvZiB0aGUgZWFydGggZm9yIHRoeSBwb3NzZXNzaW9uLgpUaG91IHNoYWx0IGJyZWFrIHRoZW0gd2l0aCBhIHJvZCBvZiBpcm9uOyB0aG91IHNoYWx0IGRhc2ggdGhlbSBpbiBwaWVjZXMgbGlrZSBhIHBvdHRlcidzIHZlc3NlbC4KQmUgd2lzZSBub3cgdGhlcmVmb3JlLCBPIHllIGtpbmdzOiBiZSBpbnN0cnVjdGVkLCB5ZSBqdWRnZXMgb2YgdGhlIGVhcnRoLgpTZXJ2ZSB0aGUgTE9SRCB3aXRoIGZlYXIsIGFuZCByZWpvaWNlIHdpdGggdHJlbWJsaW5nLgpLaXNzIHRoZSBTb24sIGxlc3QgaGUgYmUgYW5ncnksIGFuZCB5ZSBwZXJpc2ggZnJvbSB0aGUgd2F5LCB3aGVuIGhpcyB3cmF0aCBpcyBraW5kbGVkIGJ1dCBhIGxpdHRsZS4gQmxlc3NlZCBhcmUgYWxsIHRoZXkgdGhhdCBwdXQgdGhlaXIgdHJ1c3QgaW4gaGltLgpMb3JkLCBob3cgYXJlIHRoZXkgaW5jcmVhc2VkIHRoYXQgdHJvdWJsZSBtZSEgbWFueSBhcmUgdGhleSB0aGF0IHJpc2UgdXAgYWdhaW5zdCBtZS4KTWFueSB0aGVyZSBiZSB3aGljaCBzYXkgb2YgbXkgc291bCwgVGhlcmUgaXMgbm8gaGVscCBmb3IgaGltIGluIEdvZC4gU2VsYWguCkJ1dCB0aG91LCBPIExPUkQsIGFydCBhIHNoaWVsZCBmb3IgbWU7IG15IGdsb3J5LCBhbmQgdGhlIGxpZnRlciB1cCBvZiBtaW5lIGhlYWQuCkkgY3JpZWQgdW50byB0aGUgTE9SRCB3aXRoIG15IHZvaWNlLCBhbmQgaGUgaGVhcmQgbWUgb3V0IG9mIGhpcyBob2x5IGhpbGwuIFNlbGFoLgpJIGxhaWQgbWUgZG93biBhbmQgc2xlcHQ7IEkgYXdha2VkOyBmb3IgdGhlIExPUkQgc3VzdGFpbmVkIG1lLgpJIHdpbGwgbm90IGJlIGFmcmFpZCBvZiB0ZW4gdGhvdXNhbmRzIG9mIHBlb3BsZSwgdGhhdCBoYXZlIHNldCB0aGVtc2VsdmVzIGFnYWluc3QgbWUgcm91bmQgYWJvdXQuCkFyaXNlLCBPIExPUkQ7IHNhdmUgbWUsIE8gbXkgR29kOiBmb3IgdGhvdSBoYXN0IHNtaXR0ZW4gYWxsIG1pbmUgZW5lbWllcyB1cG9uIHRoZSBjaGVlayBib25lOyB0aG91IGhhc3QgYnJva2VuIHRoZSB0ZWV0aCBvZiB0aGUgdW5nb2RseS4KU2FsdmF0aW9uIGJlbG9uZ2V0aCB1bnRvIHRoZSBMT1JEOiB0aHkgYmxlc3NpbmcgaXMgdXBvbiB0aHkgcGVvcGxlLiBTZWxhaC4KSGVhciBtZSB3aGVuIEkgY2FsbCwgTyBHb2Qgb2YgbXkgcmlnaHRlb3VzbmVzczogdGhvdSBoYXN0IGVubGFyZ2VkIG1lIHdoZW4gSSB3YXMgaW4gZGlzdHJlc3M7IGhhdmUgbWVyY3kgdXBvbiBtZSwgYW5kIGhlYXIgbXkgcHJheWVyLgpPIHllIHNvbnMgb2YgbWVuLCBob3cgbG9uZyB3aWxsIHllIHR1cm4gbXkgZ2xvcnkgaW50byBzaGFtZT8gaG93IGxvbmcgd2lsbCB5ZSBsb3ZlIHZhbml0eSwgYW5kIHNlZWsgYWZ0ZXIgbGVhc2luZz8gU2VsYWguCkJ1dCBrbm93IHRoYXQgdGhlIExPUkQgaGF0aCBzZXQgYXBhcnQgaGltIHRoYXQgaXMgZ29kbHkgZm9yIGhpbXNlbGY6IHRoZSBMT1JEIHdpbGwgaGVhciB3aGVuIEkgY2FsbCB1bnRvIGhpbS4KU3RhbmQgaW4gYXdlLCBhbmQgc2luIG5vdDogY29tbXVuZSB3aXRoIHlvdXIgb3duIGhlYXJ0IHVwb24geW91ciBiZWQsIGFuZCBiZSBzdGlsbC4gU2VsYWguCk9mZmVyIHRoZSBzYWNyaWZpY2VzIG9mIHJpZ2h0ZW91c25lc3MsIGFuZCBwdXQgeW91ciB0cnVzdCBpbiB0aGUgTE9SRC4KVGhlcmUgYmUgbWFueSB0aGF0IHNheSwgV2hvIHdpbGwgc2hldyB1cyBhbnkgZ29vZD8gTE9SRCwgbGlmdCB0aG91IHVwIHRoZSBsaWdodCBvZiB0aHkgY291bnRlbmFuY2UgdXBvbiB1cy4KVGhvdSBoYXN0IHB1dCBnbGFkbmVzcyBpbiBteSBoZWFydCwgbW9yZSB0aGFuIGluIHRoZSB0aW1lIHRoYXQgdGhlaXIgY29ybiBhbmQgdGhlaXIgd2luZSBpbmNyZWFzZWQuCkkgd2lsbCBib3RoIGxheSBtZSBkb3duIGluIHBlYWNlLCBhbmQgc2xlZXA6IGZvciB0aG91LCBMT1JELCBvbmx5IG1ha2VzdCBtZSBkd2VsbCBpbiBzYWZldHkuCkdpdmUgZWFyIHRvIG15IHdvcmRzLCBPIExPUkQsIGNvbnNpZGVyIG15IG1lZGl0YXRpb24uCkhlYXJrZW4gdW50byB0aGUgdm9pY2Ugb2YgbXkgY3J5LCBteSBLaW5nLCBhbmQgbXkgR29kOiBmb3IgdW50byB0aGVlIHdpbGwgSSBwcmF5LgpNeSB2b2ljZSBzaGFsdCB0aG91IGhlYXIgaW4gdGhlIG1vcm5pbmcsIE8gTE9SRDsgaW4gdGhlIG1vcm5pbmcgd2lsbCBJIGRpcmVjdCBteSBwcmF5ZXIgdW50byB0aGVlLCBhbmQgd2lsbCBsb29rIHVwLgpGb3IgdGhvdSBhcnQgbm90IGEgR29kIHRoYXQgaGF0aCBwbGVhc3VyZSBpbiB3aWNrZWRuZXNzOiBuZWl0aGVyIHNoYWxsIGV2aWwgZHdlbGwgd2l0aCB0aGVlLgpUaGUgZm9vbGlzaCBzaGFsbCBub3Qgc3RhbmQgaW4gdGh5IHNpZ2h0OiB0aG91IGhhdGVzdCBhbGwgd29ya2VycyBvZiBpbmlxdWl0eS4KVGhvdSBzaGFsdCBkZXN0cm95IHRoZW0gdGhhdCBzcGVhayBsZWFzaW5nOiB0aGUgTE9SRCB3aWxsIGFiaG9yIHRoZSBibG9vZHkgYW5kIGRlY2VpdGZ1bCBtYW4uCkJ1dCBhcyBmb3IgbWUsIEkgd2lsbCBjb21lIGludG8gdGh5IGhvdXNlIGluIHRoZSBtdWx0aXR1ZGUgb2YgdGh5IG1lcmN5OiBhbmQgaW4gdGh5IGZlYXIgd2lsbCBJIHdvcnNoaXAgdG93YXJkIHRoeSBob2x5IHRlbXBsZS4KTGVhZCBtZSwgTyBMT1JELCBpbiB0aHkgcmlnaHRlb3VzbmVzcyBiZWNhdXNlIG9mIG1pbmUgZW5lbWllczsgbWFrZSB0aHkgd2F5IHN0cmFpZ2h0IGJlZm9yZSBteSBmYWNlLgpGb3IgdGhlcmUgaXMgbm8gZmFpdGhmdWxuZXNzIGluIHRoZWlyIG1vdXRoOyB0aGVpciBpbndhcmQgcGFydCBpcyB2ZXJ5IHdpY2tlZG5lc3M7IHRoZWlyIHRocm9hdCBpcyBhbiBvcGVuIHNlcHVsY2hyZTsgdGhleSBmbGF0dGVyIHdpdGggdGhlaXIgdG9uZ3VlLgpEZXN0cm95IHRob3UgdGhlbSwgTyBHb2Q7IGxldCB0aGVtIGZhbGwgYnkgdGhlaXIgb3duIGNvdW5zZWxzOyBjYXN0IHRoZW0gb3V0IGluIHRoZSBtdWx0aXR1ZGUgb2YgdGhlaXIgdHJhbnNncmVzc2lvbnM7IGZvciB0aGV5IGhhdmUgcmViZWxsZWQgYWdhaW5zdCB0aGVlLgpCdXQgbGV0IGFsbCB0aG9zZSB0aGF0IHB1dCB0aGVpciB0cnVzdCBpbiB0aGVlIHJlam9pY2U6IGxldCB0aGVtIGV2ZXIgc2hvdXQgZm9yIGpveSwgYmVjYXVzZSB0aG91IGRlZmVuZGVzdCB0aGVtOiBsZXQgdGhlbSBhbHNvIHRoYXQgbG92ZSB0aHkgbmFtZSBiZSBqb3lmdWwgaW4gdGhlZS4KRm9yIHRob3UsIExPUkQsIHdpbHQgYmxlc3MgdGhlIHJpZ2h0ZW91czsgd2l0aCBmYXZvdXIgd2lsdCB0aG91IGNvbXBhc3MgaGltIGFzIHdpdGggYSBzaGllbGQuCk8gTE9SRCwgcmVidWtlIG1lIG5vdCBpbiB0aGluZSBhbmdlciwgbmVpdGhlciBjaGFzdGVuIG1lIGluIHRoeSBob3QgZGlzcGxlYXN1cmUuCkhhdmUgbWVyY3kgdXBvbiBtZSwgTyBMT1JEOyBmb3IgSSBhbSB3ZWFrOiBPIExPUkQsIGhlYWwgbWU7IGZvciBteSBib25lcyBhcmUgdmV4ZWQuCk15IHNvdWwgaXMgYWxzbyBzb3JlIHZleGVkOiBidXQgdGhvdSwgTyBMT1JELCBob3cgbG9uZz8KUmV0dXJuLCBPIExPUkQsIGRlbGl2ZXIgbXkgc291bDogb2ggc2F2ZSBtZSBmb3IgdGh5IG1lcmNpZXMnIHNha2UuCkZvciBpbiBkZWF0aCB0aGVyZSBpcyBubyByZW1lbWJyYW5jZSBvZiB0aGVlOiBpbiB0aGUgZ3JhdmUgd2hvIHNoYWxsIGdpdmUgdGhlZSB0aGFua3M/CkkgYW0gd2Vhcnkgd2l0aCBteSBncm9hbmluZzsgYWxsIHRoZSBuaWdodCBtYWtlIEkgbXkgYmVkIHRvIHN3aW07IEkgd2F0ZXIgbXkgY291Y2ggd2l0aCBteSB0ZWFycy4KTWluZSBleWUgaXMgY29uc3VtZWQgYmVjYXVzZSBvZiBncmllZjsgaXQgd2F4ZXRoIG9sZCBiZWNhdXNlIG9mIGFsbCBtaW5lIGVuZW1pZXMuCkRlcGFydCBmcm9tIG1lLCBhbGwgeWUgd29ya2VycyBvZiBpbmlxdWl0eTsgZm9yIHRoZSBMT1JEIGhhdGggaGVhcmQgdGhlIHZvaWNlIG9mIG15IHdlZXBpbmcuClRoZSBMT1JEIGhhdGggaGVhcmQgbXkgc3VwcGxpY2F0aW9uOyB0aGUgTE9SRCB3aWxsIHJlY2VpdmUgbXkgcHJheWVyLgpMZXQgYWxsIG1pbmUgZW5lbWllcyBiZSBhc2hhbWVkIGFuZCBzb3JlIHZleGVkOiBsZXQgdGhlbSByZXR1cm4gYW5kIGJlIGFzaGFtZWQgc3VkZGVubHkuCk8gTE9SRCBteSBHb2QsIGluIHRoZWUgZG8gSSBwdXQgbXkgdHJ1c3Q6IHNhdmUgbWUgZnJvbSBhbGwgdGhlbSB0aGF0IHBlcnNlY3V0ZSBtZSwgYW5kIGRlbGl2ZXIgbWU6Ckxlc3QgaGUgdGVhciBteSBzb3VsIGxpa2UgYSBsaW9uLCByZW5kaW5nIGl0IGluIHBpZWNlcywgd2hpbGUgdGhlcmUgaXMgbm9uZSB0byBkZWxpdmVyLgpPIExPUkQgbXkgR29kLCBJZiBJIGhhdmUgZG9uZSB0aGlzOyBpZiB0aGVyZSBiZSBpbmlxdWl0eSBpbiBteSBoYW5kczsKSWYgSSBoYXZlIHJld2FyZGVkIGV2aWwgdW50byBoaW0gdGhhdCB3YXMgYXQgcGVhY2Ugd2l0aCBtZTsgKHllYSwgSSBoYXZlIGRlbGl2ZXJlZCBoaW0gdGhhdCB3aXRob3V0IGNhdXNlIGlzIG1pbmUgZW5lbXk6KQpMZXQgdGhlIGVuZW15IHBlcnNlY3V0ZSBteSBzb3VsLCBhbmQgdGFrZSBpdDsgeWVhLCBsZXQgaGltIHRyZWFkIGRvd24gbXkgbGlmZSB1cG9uIHRoZSBlYXJ0aCwgYW5kIGxheSBtaW5lIGhvbm91ciBpbiB0aGUgZHVzdC4gU2VsYWguCkFyaXNlLCBPIExPUkQsIGluIHRoaW5lIGFuZ2VyLCBsaWZ0IHVwIHRoeXNlbGYgYmVjYXVzZSBvZiB0aGUgcmFnZSBvZiBtaW5lIGVuZW1pZXM6IGFuZCBhd2FrZSBmb3IgbWUgdG8gdGhlIGp1ZGdtZW50IHRoYXQgdGhvdSBoYXN0IGNvbW1hbmRlZC4KU28gc2hhbGwgdGhlIGNvbmdyZWdhdGlvbiBvZiB0aGUgcGVvcGxlIGNvbXBhc3MgdGhlZSBhYm91dDogZm9yIHRoZWlyIHNha2VzIHRoZXJlZm9yZSByZXR1cm4gdGhvdSBvbiBoaWdoLgpUaGUgTE9SRCBzaGFsbCBqdWRnZSB0aGUgcGVvcGxlOiBqdWRnZSBtZSwgTyBMT1JELCBhY2NvcmRpbmcgdG8gbXkgcmlnaHRlb3VzbmVzcywgYW5kIGFjY29yZGluZyB0byBtaW5lIGludGVncml0eSB0aGF0IGlzIGluIG1lLgpPaCBsZXQgdGhlIHdpY2tlZG5lc3Mgb2YgdGhlIHdpY2tlZCBjb21lIHRvIGFuIGVuZDsgYnV0IGVzdGFibGlzaCB0aGUganVzdDogZm9yIHRoZSByaWdodGVvdXMgR29kIHRyaWV0aCB0aGUgaGVhcnRzIGFuZCByZWlucy4KTXkgZGVmZW5jZSBpcyBvZiBHb2QsIHdoaWNoIHNhdmV0aCB0aGUgdXByaWdodCBpbiBoZWFydC4KR29kIGp1ZGdldGggdGhlIHJpZ2h0ZW91cywgYW5kIEdvZCBpcyBhbmdyeSB3aXRoIHRoZSB3aWNrZWQgZXZlcnkgZGF5LgpJZiBoZSB0dXJuIG5vdCwgaGUgd2lsbCB3aGV0IGhpcyBzd29yZDsgaGUgaGF0aCBiZW50IGhpcyBib3csIGFuZCBtYWRlIGl0IHJlYWR5LgpIZSBoYXRoIGFsc28gcHJlcGFyZWQgZm9yIGhpbSB0aGUgaW5zdHJ1bWVudHMgb2YgZGVhdGg7IGhlIG9yZGFpbmV0aCBoaXMgYXJyb3dzIGFnYWluc3QgdGhlIHBlcnNlY3V0b3JzLgpCZWhvbGQsIGhlIHRyYXZhaWxldGggd2l0aCBpbmlxdWl0eSwgYW5kIGhhdGggY29uY2VpdmVkIG1pc2NoaWVmLCBhbmQgYnJvdWdodCBmb3J0aCBmYWxzZWhvb2QuCkhlIG1hZGUgYSBwaXQsIGFuZCBkaWdnZWQgaXQsIGFuZCBpcyBmYWxsZW4gaW50byB0aGUgZGl0Y2ggd2hpY2ggaGUgbWFkZS4KSGlzIG1pc2NoaWVmIHNoYWxsIHJldHVybiB1cG9uIGhpcyBvd24gaGVhZCwgYW5kIGhpcyB2aW9sZW50IGRlYWxpbmcgc2hhbGwgY29tZSBkb3duIHVwb24gaGlzIG93biBwYXRlLgpJIHdpbGwgcHJhaXNlIHRoZSBMT1JEIGFjY29yZGluZyB0byBoaXMgcmlnaHRlb3VzbmVzczogYW5kIHdpbGwgc2luZyBwcmFpc2UgdG8gdGhlIG5hbWUgb2YgdGhlIExPUkQgbW9zdCBoaWdoLgpPIExPUkQsIG91ciBMb3JkLCBob3cgZXhjZWxsZW50IGlzIHRoeSBuYW1lIGluIGFsbCB0aGUgZWFydGghIHdobyBoYXN0IHNldCB0aHkgZ2xvcnkgYWJvdmUgdGhlIGhlYXZlbnMuCk91dCBvZiB0aGUgbW91dGggb2YgYmFiZXMgYW5kIHN1Y2tsaW5ncyBoYXN0IHRob3Ugb3JkYWluZWQgc3RyZW5ndGggYmVjYXVzZSBvZiB0aGluZSBlbmVtaWVzLCB0aGF0IHRob3UgbWlnaHRlc3Qgc3RpbGwgdGhlIGVuZW15IGFuZCB0aGUgYXZlbmdlci4KV2hlbiBJIGNvbnNpZGVyIHRoeSBoZWF2ZW5zLCB0aGUgd29yayBvZiB0aHkgZmluZ2VycywgdGhlIG1vb24gYW5kIHRoZSBzdGFycywgd2hpY2ggdGhvdSBoYXN0IG9yZGFpbmVkOwpXaGF0IGlzIG1hbiwgdGhhdCB0aG91IGFydCBtaW5kZnVsIG9mIGhpbT8gYW5kIHRoZSBzb24gb2YgbWFuLCB0aGF0IHRob3UgdmlzaXRlc3QgaGltPwpGb3IgdGhvdSBoYXN0IG1hZGUgaGltIGEgbGl0dGxlIGxvd2VyIHRoYW4gdGhlIGFuZ2VscywgYW5kIGhhc3QgY3Jvd25lZCBoaW0gd2l0aCBnbG9yeSBhbmQgaG9ub3VyLgpUaG91IG1hZGVzdCBoaW0gdG8gaGF2ZSBkb21pbmlvbiBvdmVyIHRoZSB3b3JrcyBvZiB0aHkgaGFuZHM7IHRob3UgaGFzdCBwdXQgYWxsIHRoaW5ncyB1bmRlciBoaXMgZmVldDoKQWxsIHNoZWVwIGFuZCBveGVuLCB5ZWEsIGFuZCB0aGUgYmVhc3RzIG9mIHRoZSBmaWVsZDsKVGhlIGZvd2wgb2YgdGhlIGFpciwgYW5kIHRoZSBmaXNoIG9mIHRoZSBzZWEsIGFuZCB3aGF0c29ldmVyIHBhc3NldGggdGhyb3VnaCB0aGUgcGF0aHMgb2YgdGhlIHNlYXMuCk8gTE9SRCBvdXIgTG9yZCwgaG93IGV4Y2VsbGVudCBpcyB0aHkgbmFtZSBpbiBhbGwgdGhlIGVhcnRoIQpJIHdpbGwgcHJhaXNlIHRoZWUsIE8gTE9SRCwgd2l0aCBteSB3aG9sZSBoZWFydDsgSSB3aWxsIHNoZXcgZm9ydGggYWxsIHRoeSBtYXJ2ZWxsb3VzIHdvcmtzLgpJIHdpbGwgYmUgZ2xhZCBhbmQgcmVqb2ljZSBpbiB0aGVlOiBJIHdpbGwgc2luZyBwcmFpc2UgdG8gdGh5IG5hbWUsIE8gdGhvdSBtb3N0IEhpZ2guCldoZW4gbWluZSBlbmVtaWVzIGFyZSB0dXJuZWQgYmFjaywgdGhleSBzaGFsbCBmYWxsIGFuZCBwZXJpc2ggYXQgdGh5IHByZXNlbmNlLgpGb3IgdGhvdSBoYXN0IG1haW50YWluZWQgbXkgcmlnaHQgYW5kIG15IGNhdXNlOyB0aG91IHNhdGVzdCBpbiB0aGUgdGhyb25lIGp1ZGdpbmcgcmlnaHQuClRob3UgaGFzdCByZWJ1a2VkIHRoZSBoZWF0aGVuLCB0aG91IGhhc3QgZGVzdHJveWVkIHRoZSB3aWNrZWQsIHRob3UgaGFzdCBwdXQgb3V0IHRoZWlyIG5hbWUgZm9yIGV2ZXIgYW5kIGV2ZXIuCk8gdGhvdSBlbmVteSwgZGVzdHJ1Y3Rpb25zIGFyZSBjb21lIHRvIGEgcGVycGV0dWFsIGVuZDogYW5kIHRob3UgaGFzdCBkZXN0cm95ZWQgY2l0aWVzOyB0aGVpciBtZW1vcmlhbCBpcyBwZXJpc2hlZCB3aXRoIHRoZW0uCkJ1dCB0aGUgTE9SRCBzaGFsbCBlbmR1cmUgZm9yIGV2ZXI6IGhlIGhhdGggcHJlcGFyZWQgaGlzIHRocm9uZSBmb3IganVkZ21lbnQuCkFuZCBoZSBzaGFsbCBqdWRnZSB0aGUgd29ybGQgaW4gcmlnaHRlb3VzbmVzcywgaGUgc2hhbGwgbWluaXN0ZXIganVkZ21lbnQgdG8gdGhlIHBlb3BsZSBpbiB1cHJpZ2h0bmVzcy4KVGhlIExPUkQgYWxzbyB3aWxsIGJlIGEgcmVmdWdlIGZvciB0aGUgb3BwcmVzc2VkLCBhIHJlZnVnZSBpbiB0aW1lcyBvZiB0cm91YmxlLgpBbmQgdGhleSB0aGF0IGtub3cgdGh5IG5hbWUgd2lsbCBwdXQgdGhlaXIgdHJ1c3QgaW4gdGhlZTogZm9yIHRob3UsIExPUkQsIGhhc3Qgbm90IGZvcnNha2VuIHRoZW0gdGhhdCBzZWVrIHRoZWUuClNpbmcgcHJhaXNlcyB0byB0aGUgTE9SRCwgd2hpY2ggZHdlbGxldGggaW4gWmlvbjogZGVjbGFyZSBhbW9uZyB0aGUgcGVvcGxlIGhpcyBkb2luZ3MuCldoZW4gaGUgbWFrZXRoIGlucXVpc2l0aW9uIGZvciBibG9vZCwgaGUgcmVtZW1iZXJldGggdGhlbTogaGUgZm9yZ2V0dGV0aCBub3QgdGhlIGNyeSBvZiB0aGUgaHVtYmxlLgpIYXZlIG1lcmN5IHVwb24gbWUsIE8gTE9SRDsgY29uc2lkZXIgbXkgdHJvdWJsZSB3aGljaCBJIHN1ZmZlciBvZiB0aGVtIHRoYXQgaGF0ZSBtZSwgdGhvdSB0aGF0IGxpZnRlc3QgbWUgdXAgZnJvbSB0aGUgZ2F0ZXMgb2YgZGVhdGg6ClRoYXQgSSBtYXkgc2hldyBmb3J0aCBhbGwgdGh5IHByYWlzZSBpbiB0aGUgZ2F0ZXMgb2YgdGhlIGRhdWdodGVyIG9mIFppb246IEkgd2lsbCByZWpvaWNlIGluIHRoeSBzYWx2YXRpb24uClRoZSBoZWF0aGVuIGFyZSBzdW5rIGRvd24gaW4gdGhlIHBpdCB0aGF0IHRoZXkgbWFkZTogaW4gdGhlIG5ldCB3aGljaCB0aGV5IGhpZCBpcyB0aGVpciBvd24gZm9vdCB0YWtlbi4KVGhlIExPUkQgaXMga25vd24gYnkgdGhlIGp1ZGdtZW50IHdoaWNoIGhlIGV4ZWN1dGV0aDogdGhlIHdpY2tlZCBpcyBzbmFyZWQgaW4gdGhlIHdvcmsgb2YgaGlzIG93biBoYW5kcy4gSGlnZ2Fpb24uIFNlbGFoLgpUaGUgd2lja2VkIHNoYWxsIGJlIHR1cm5lZCBpbnRvIGhlbGwsIGFuZCBhbGwgdGhlIG5hdGlvbnMgdGhhdCBmb3JnZXQgR29kLgpGb3IgdGhlIG5lZWR5IHNoYWxsIG5vdCBhbHdheSBiZSBmb3Jnb3R0ZW46IHRoZSBleHBlY3RhdGlvbiBvZiB0aGUgcG9vciBzaGFsbCBub3QgcGVyaXNoIGZvciBldmVyLgpBcmlzZSwgTyBMT1JEOyBsZXQgbm90IG1hbiBwcmV2YWlsOiBsZXQgdGhlIGhlYXRoZW4gYmUganVkZ2VkIGluIHRoeSBzaWdodC4KUHV0IHRoZW0gaW4gZmVhciwgTyBMT1JEOiB0aGF0IHRoZSBuYXRpb25zIG1heSBrbm93IHRoZW1zZWx2ZXMgdG8gYmUgYnV0IG1lbi4gU2VsYWguCldoeSBzdGFuZGVzdCB0aG91IGFmYXIgb2ZmLCBPIExPUkQ/IHdoeSBoaWRlc3QgdGhvdSB0aHlzZWxmIGluIHRpbWVzIG9mIHRyb3VibGU/ClRoZSB3aWNrZWQgaW4gaGlzIHByaWRlIGRvdGggcGVyc2VjdXRlIHRoZSBwb29yOiBsZXQgdGhlbSBiZSB0YWtlbiBpbiB0aGUgZGV2aWNlcyB0aGF0IHRoZXkgaGF2ZSBpbWFnaW5lZC4KRm9yIHRoZSB3aWNrZWQgYm9hc3RldGggb2YgaGlzIGhlYXJ0J3MgZGVzaXJlLCBhbmQgYmxlc3NldGggdGhlIGNvdmV0b3VzLCB3aG9tIHRoZSBMT1JEIGFiaG9ycmV0aC4KVGhlIHdpY2tlZCwgdGhyb3VnaCB0aGUgcHJpZGUgb2YgaGlzIGNvdW50ZW5hbmNlLCB3aWxsIG5vdCBzZWVrIGFmdGVyIEdvZDogR29kIGlzIG5vdCBpbiBhbGwgaGlzIHRob3VnaHRzLgpIaXMgd2F5cyBhcmUgYWx3YXlzIGdyaWV2b3VzOyB0aHkganVkZ21lbnRzIGFyZSBmYXIgYWJvdmUgb3V0IG9mIGhpcyBzaWdodDogYXMgZm9yIGFsbCBoaXMgZW5lbWllcywgaGUgcHVmZmV0aCBhdCB0aGVtLgpIZSBoYXRoIHNhaWQgaW4gaGlzIGhlYXJ0LCBJIHNoYWxsIG5vdCBiZSBtb3ZlZDogZm9yIEkgc2hhbGwgbmV2ZXIgYmUgaW4gYWR2ZXJzaXR5LgpIaXMgbW91dGggaXMgZnVsbCBvZiBjdXJzaW5nIGFuZCBkZWNlaXQgYW5kIGZyYXVkOiB1bmRlciBoaXMgdG9uZ3VlIGlzIG1pc2NoaWVmIGFuZCB2YW5pdHkuCkhlIHNpdHRldGggaW4gdGhlIGx1cmtpbmcgcGxhY2VzIG9mIHRoZSB2aWxsYWdlczogaW4gdGhlIHNlY3JldCBwbGFjZXMgZG90aCBoZSBtdXJkZXIgdGhlIGlubm9jZW50OiBoaXMgZXllcyBhcmUgcHJpdmlseSBzZXQgYWdhaW5zdCB0aGUgcG9vci4KSGUgbGlldGggaW4gd2FpdCBzZWNyZXRseSBhcyBhIGxpb24gaW4gaGlzIGRlbjogaGUgbGlldGggaW4gd2FpdCB0byBjYXRjaCB0aGUgcG9vcjogaGUgZG90aCBjYXRjaCB0aGUgcG9vciwgd2hlbiBoZSBkcmF3ZXRoIGhpbSBpbnRvIGhpcyBuZXQuCkhlIGNyb3VjaGV0aCwgYW5kIGh1bWJsZXRoIGhpbXNlbGYsIHRoYXQgdGhlIHBvb3IgbWF5IGZhbGwgYnkgaGlzIHN0cm9uZyBvbmVzLgpIZSBoYXRoIHNhaWQgaW4gaGlzIGhlYXJ0LCBHb2QgaGF0aCBmb3Jnb3R0ZW46IGhlIGhpZGV0aCBoaXMgZmFjZTsgaGUgd2lsbCBuZXZlciBzZWUgaXQuCkFyaXNlLCBPIExPUkQ7IE8gR29kLCBsaWZ0IHVwIHRoaW5lIGhhbmQ6IGZvcmdldCBub3QgdGhlIGh1bWJsZS4KV2hlcmVmb3JlIGRvdGggdGhlIHdpY2tlZCBjb250ZW1uIEdvZD8gaGUgaGF0aCBzYWlkIGluIGhpcyBoZWFydCwgVGhvdSB3aWx0IG5vdCByZXF1aXJlIGl0LgpUaG91IGhhc3Qgc2VlbiBpdDsgZm9yIHRob3UgYmVob2xkZXN0IG1pc2NoaWVmIGFuZCBzcGl0ZSwgdG8gcmVxdWl0ZSBpdCB3aXRoIHRoeSBoYW5kOiB0aGUgcG9vciBjb21taXR0ZXRoIGhpbXNlbGYgdW50byB0aGVlOyB0aG91IGFydCB0aGUgaGVscGVyIG9mIHRoZSBmYXRoZXJsZXNzLgpCcmVhayB0aG91IHRoZSBhcm0gb2YgdGhlIHdpY2tlZCBhbmQgdGhlIGV2aWwgbWFuOiBzZWVrIG91dCBoaXMgd2lja2VkbmVzcyB0aWxsIHRob3UgZmluZCBub25lLgpUaGUgTE9SRCBpcyBLaW5nIGZvciBldmVyIGFuZCBldmVyOiB0aGUgaGVhdGhlbiBhcmUgcGVyaXNoZWQgb3V0IG9mIGhpcyBsYW5kLgpMT1JELCB0aG91IGhhc3QgaGVhcmQgdGhlIGRlc2lyZSBvZiB0aGUgaHVtYmxlOiB0aG91IHdpbHQgcHJlcGFyZSB0aGVpciBoZWFydCwgdGhvdSB3aWx0IGNhdXNlIHRoaW5lIGVhciB0byBoZWFyOgpUbyBqdWRnZSB0aGUgZmF0aGVybGVzcyBhbmQgdGhlIG9wcHJlc3NlZCwgdGhhdCB0aGUgbWFuIG9mIHRoZSBlYXJ0aCBtYXkgbm8gbW9yZSBvcHByZXNzLgpJbiB0aGUgTE9SRCBwdXQgSSBteSB0cnVzdDogaG93IHNheSB5ZSB0byBteSBzb3VsLCBGbGVlIGFzIGEgYmlyZCB0byB5b3VyIG1vdW50YWluPwpGb3IsIGxvLCB0aGUgd2lja2VkIGJlbmQgdGhlaXIgYm93LCB0aGV5IG1ha2UgcmVhZHkgdGhlaXIgYXJyb3cgdXBvbiB0aGUgc3RyaW5nLCB0aGF0IHRoZXkgbWF5IHByaXZpbHkgc2hvb3QgYXQgdGhlIHVwcmlnaHQgaW4gaGVhcnQuCklmIHRoZSBmb3VuZGF0aW9ucyBiZSBkZXN0cm95ZWQsIHdoYXQgY2FuIHRoZSByaWdodGVvdXMgZG8/ClRoZSBMT1JEIGlzIGluIGhpcyBob2x5IHRlbXBsZSwgdGhlIExPUkQncyB0aHJvbmUgaXMgaW4gaGVhdmVuOiBoaXMgZXllcyBiZWhvbGQsIGhpcyBleWVsaWRzIHRyeSwgdGhlIGNoaWxkcmVuIG9mIG1lbi4KVGhlIExPUkQgdHJpZXRoIHRoZSByaWdodGVvdXM6IGJ1dCB0aGUgd2lja2VkIGFuZCBoaW0gdGhhdCBsb3ZldGggdmlvbGVuY2UgaGlzIHNvdWwgaGF0ZXRoLgpVcG9uIHRoZSB3aWNrZWQgaGUgc2hhbGwgcmFpbiBzbmFyZXMsIGZpcmUgYW5kIGJyaW1zdG9uZSwgYW5kIGFuIGhvcnJpYmxlIHRlbXBlc3Q6IHRoaXMgc2hhbGwgYmUgdGhlIHBvcnRpb24gb2YgdGhlaXIgY3VwLgpGb3IgdGhlIHJpZ2h0ZW91cyBMT1JEIGxvdmV0aCByaWdodGVvdXNuZXNzOyBoaXMgY291bnRlbmFuY2UgZG90aCBiZWhvbGQgdGhlIHVwcmlnaHQuCkhlbHAsIExPUkQ7IGZvciB0aGUgZ29kbHkgbWFuIGNlYXNldGg7IGZvciB0aGUgZmFpdGhmdWwgZmFpbCBmcm9tIGFtb25nIHRoZSBjaGlsZHJlbiBvZiBtZW4uClRoZXkgc3BlYWsgdmFuaXR5IGV2ZXJ5IG9uZSB3aXRoIGhpcyBuZWlnaGJvdXI6IHdpdGggZmxhdHRlcmluZyBsaXBzIGFuZCB3aXRoIGEgZG91YmxlIGhlYXJ0IGRvIHRoZXkgc3BlYWsuClRoZSBMT1JEIHNoYWxsIGN1dCBvZmYgYWxsIGZsYXR0ZXJpbmcgbGlwcywgYW5kIHRoZSB0b25ndWUgdGhhdCBzcGVha2V0aCBwcm91ZCB0aGluZ3M6CldobyBoYXZlIHNhaWQsIFdpdGggb3VyIHRvbmd1ZSB3aWxsIHdlIHByZXZhaWw7IG91ciBsaXBzIGFyZSBvdXIgb3duOiB3aG8gaXMgbG9yZCBvdmVyIHVzPwpGb3IgdGhlIG9wcHJlc3Npb24gb2YgdGhlIHBvb3IsIGZvciB0aGUgc2lnaGluZyBvZiB0aGUgbmVlZHksIG5vdyB3aWxsIEkgYXJpc2UsIHNhaXRoIHRoZSBMT1JEOyBJIHdpbGwgc2V0IGhpbSBpbiBzYWZldHkgZnJvbSBoaW0gdGhhdCBwdWZmZXRoIGF0IGhpbS4KVGhlIHdvcmRzIG9mIHRoZSBMT1JEIGFyZSBwdXJlIHdvcmRzOiBhcyBzaWx2ZXIgdHJpZWQgaW4gYSBmdXJuYWNlIG9mIGVhcnRoLCBwdXJpZmllZCBzZXZlbiB0aW1lcy4KVGhvdSBzaGFsdCBrZWVwIHRoZW0sIE8gTE9SRCwgdGhvdSBzaGFsdCBwcmVzZXJ2ZSB0aGVtIGZyb20gdGhpcyBnZW5lcmF0aW9uIGZvciBldmVyLgpUaGUgd2lja2VkIHdhbGsgb24gZXZlcnkgc2lkZSwgd2hlbiB0aGUgdmlsZXN0IG1lbiBhcmUgZXhhbHRlZC4KSG93IGxvbmcgd2lsdCB0aG91IGZvcmdldCBtZSwgTyBMT1JEPyBmb3IgZXZlcj8gaG93IGxvbmcgd2lsdCB0aG91IGhpZGUgdGh5IGZhY2UgZnJvbSBtZT8KSG93IGxvbmcgc2hhbGwgSSB0YWtlIGNvdW5zZWwgaW4gbXkgc291bCwgaGF2aW5nIHNvcnJvdyBpbiBteSBoZWFydCBkYWlseT8gaG93IGxvbmcgc2hhbGwgbWluZSBlbmVteSBiZSBleGFsdGVkIG92ZXIgbWU/CkNvbnNpZGVyIGFuZCBoZWFyIG1lLCBPIExPUkQgbXkgR29kOiBsaWdodGVuIG1pbmUgZXllcywgbGVzdCBJIHNsZWVwIHRoZSBzbGVlcCBvZiBkZWF0aDsKTGVzdCBtaW5lIGVuZW15IHNheSwgSSBoYXZlIHByZXZhaWxlZCBhZ2FpbnN0IGhpbTsgYW5kIHRob3NlIHRoYXQgdHJvdWJsZSBtZSByZWpvaWNlIHdoZW4gSSBhbSBtb3ZlZC4KQnV0IEkgaGF2ZSB0cnVzdGVkIGluIHRoeSBtZXJjeTsgbXkgaGVhcnQgc2hhbGwgcmVqb2ljZSBpbiB0aHkgc2FsdmF0aW9uLgpJIHdpbGwgc2luZyB1bnRvIHRoZSBMT1JELCBiZWNhdXNlIGhlIGhhdGggZGVhbHQgYm91bnRpZnVsbHkgd2l0aCBtZS4KVGhlIGZvb2wgaGF0aCBzYWlkIGluIGhpcyBoZWFydCwgVGhlcmUgaXMgbm8gR29kLiBUaGV5IGFyZSBjb3JydXB0LCB0aGV5IGhhdmUgZG9uZSBhYm9taW5hYmxlIHdvcmtzLCB0aGVyZSBpcyBub25lIHRoYXQgZG9ldGggZ29vZC4KVGhlIExPUkQgbG9va2VkIGRvd24gZnJvbSBoZWF2ZW4gdXBvbiB0aGUgY2hpbGRyZW4gb2YgbWVuLCB0byBzZWUgaWYgdGhlcmUgd2VyZSBhbnkgdGhhdCBkaWQgdW5kZXJzdGFuZCwgYW5kIHNlZWsgR29kLgpUaGV5IGFyZSBhbGwgZ29uZSBhc2lkZSwgdGhleSBhcmUgYWxsIHRvZ2V0aGVyIGJlY29tZSBmaWx0aHk6IHRoZXJlIGlzIG5vbmUgdGhhdCBkb2V0aCBnb29kLCBubywgbm90IG9uZS4KSGF2ZSBhbGwgdGhlIHdvcmtlcnMgb2YgaW5pcXVpdHkgbm8ga25vd2xlZGdlPyB3aG8gZWF0IHVwIG15IHBlb3BsZSBhcyB0aGV5IGVhdCBicmVhZCwgYW5kIGNhbGwgbm90IHVwb24gdGhlIExPUkQuClRoZXJlIHdlcmUgdGhleSBpbiBncmVhdCBmZWFyOiBmb3IgR29kIGlzIGluIHRoZSBnZW5lcmF0aW9uIG9mIHRoZSByaWdodGVvdXMuClllIGhhdmUgc2hhbWVkIHRoZSBjb3Vuc2VsIG9mIHRoZSBwb29yLCBiZWNhdXNlIHRoZSBMT1JEIGlzIGhpcyByZWZ1Z2UuCk9oIHRoYXQgdGhlIHNhbHZhdGlvbiBvZiBJc3JhZWwgd2VyZSBjb21lIG91dCBvZiBaaW9uISB3aGVuIHRoZSBMT1JEIGJyaW5nZXRoIGJhY2sgdGhlIGNhcHRpdml0eSBvZiBoaXMgcGVvcGxlLCBKYWNvYiBzaGFsbCByZWpvaWNlLCBhbmQgSXNyYWVsIHNoYWxsIGJlIGdsYWQuCkxvcmQsIHdobyBzaGFsbCBhYmlkZSBpbiB0aHkgdGFiZXJuYWNsZT8gd2hvIHNoYWxsIGR3ZWxsIGluIHRoeSBob2x5IGhpbGw/CkhlIHRoYXQgd2Fsa2V0aCB1cHJpZ2h0bHksIGFuZCB3b3JrZXRoIHJpZ2h0ZW91c25lc3MsIGFuZCBzcGVha2V0aCB0aGUgdHJ1dGggaW4gaGlzIGhlYXJ0LgpIZSB0aGF0IGJhY2tiaXRldGggbm90IHdpdGggaGlzIHRvbmd1ZSwgbm9yIGRvZXRoIGV2aWwgdG8gaGlzIG5laWdoYm91ciwgbm9yIHRha2V0aCB1cCBhIHJlcHJvYWNoIGFnYWluc3QgaGlzIG5laWdoYm91ci4KSW4gd2hvc2UgZXllcyBhIHZpbGUgcGVyc29uIGlzIGNvbnRlbW5lZDsgYnV0IGhlIGhvbm91cmV0aCB0aGVtIHRoYXQgZmVhciB0aGUgTE9SRC4gSGUgdGhhdCBzd2VhcmV0aCB0byBoaXMgb3duIGh1cnQsIGFuZCBjaGFuZ2V0aCBub3QuCkhlIHRoYXQgcHV0dGV0aCBub3Qgb3V0IGhpcyBtb25leSB0byB1c3VyeSwgbm9yIHRha2V0aCByZXdhcmQgYWdhaW5zdCB0aGUgaW5ub2NlbnQuIEhlIHRoYXQgZG9ldGggdGhlc2UgdGhpbmdzIHNoYWxsIG5ldmVyIGJlIG1vdmVkLgpQcmVzZXJ2ZSBtZSwgTyBHb2Q6IGZvciBpbiB0aGVlIGRvIEkgcHV0IG15IHRydXN0LgpPIG15IHNvdWwsIHRob3UgaGFzdCBzYWlkIHVudG8gdGhlIExPUkQsIFRob3UgYXJ0IG15IExvcmQ6IG15IGdvb2RuZXNzIGV4dGVuZGV0aCBub3QgdG8gdGhlZTsKQnV0IHRvIHRoZSBzYWludHMgdGhhdCBhcmUgaW4gdGhlIGVhcnRoLCBhbmQgdG8gdGhlIGV4Y2VsbGVudCwgaW4gd2hvbSBpcyBhbGwgbXkgZGVsaWdodC4KVGhlaXIgc29ycm93cyBzaGFsbCBiZSBtdWx0aXBsaWVkIHRoYXQgaGFzdGVuIGFmdGVyIGFub3RoZXIgZ29kOiB0aGVpciBkcmluayBvZmZlcmluZ3Mgb2YgYmxvb2Qgd2lsbCBJIG5vdCBvZmZlciwgbm9yIHRha2UgdXAgdGhlaXIgbmFtZXMgaW50byBteSBsaXBzLgpUaGUgTE9SRCBpcyB0aGUgcG9ydGlvbiBvZiBtaW5lIGluaGVyaXRhbmNlIGFuZCBvZiBteSBjdXA6IHRob3UgbWFpbnRhaW5lc3QgbXkgbG90LgpUaGUgbGluZXMgYXJlIGZhbGxlbiB1bnRvIG1lIGluIHBsZWFzYW50IHBsYWNlczsgeWVhLCBJIGhhdmUgYSBnb29kbHkgaGVyaXRhZ2UuCkkgd2lsbCBibGVzcyB0aGUgTE9SRCwgd2hvIGhhdGggZ2l2ZW4gbWUgY291bnNlbDogbXkgcmVpbnMgYWxzbyBpbnN0cnVjdCBtZSBpbiB0aGUgbmlnaHQgc2Vhc29ucy4KSSBoYXZlIHNldCB0aGUgTE9SRCBhbHdheXMgYmVmb3JlIG1lOiBiZWNhdXNlIGhlIGlzIGF0IG15IHJpZ2h0IGhhbmQsIEkgc2hhbGwgbm90IGJlIG1vdmVkLgpUaGVyZWZvcmUgbXkgaGVhcnQgaXMgZ2xhZCwgYW5kIG15IGdsb3J5IHJlam9pY2V0aDogbXkgZmxlc2ggYWxzbyBzaGFsbCByZXN0IGluIGhvcGUuCkZvciB0aG91IHdpbHQgbm90IGxlYXZlIG15IHNvdWwgaW4gaGVsbDsgbmVpdGhlciB3aWx0IHRob3Ugc3VmZmVyIHRoaW5lIEhvbHkgT25lIHRvIHNlZSBjb3JydXB0aW9uLgpUaG91IHdpbHQgc2hldyBtZSB0aGUgcGF0aCBvZiBsaWZlOiBpbiB0aHkgcHJlc2VuY2UgaXMgZnVsbmVzcyBvZiBqb3k7IGF0IHRoeSByaWdodCBoYW5kIHRoZXJlIGFyZSBwbGVhc3VyZXMgZm9yIGV2ZXJtb3JlLgpIZWFyIHRoZSByaWdodCwgTyBMT1JELCBhdHRlbmQgdW50byBteSBjcnksIGdpdmUgZWFyIHVudG8gbXkgcHJheWVyLCB0aGF0IGdvZXRoIG5vdCBvdXQgb2YgZmVpZ25lZCBsaXBzLgpMZXQgbXkgc2VudGVuY2UgY29tZSBmb3J0aCBmcm9tIHRoeSBwcmVzZW5jZTsgbGV0IHRoaW5lIGV5ZXMgYmVob2xkIHRoZSB0aGluZ3MgdGhhdCBhcmUgZXF1YWwuClRob3UgaGFzdCBwcm92ZWQgbWluZSBoZWFydDsgdGhvdSBoYXN0IHZpc2l0ZWQgbWUgaW4gdGhlIG5pZ2h0OyB0aG91IGhhc3QgdHJpZWQgbWUsIGFuZCBzaGFsdCBmaW5kIG5vdGhpbmc7IEkgYW0gcHVycG9zZWQgdGhhdCBteSBtb3V0aCBzaGFsbCBub3QgdHJhbnNncmVzcy4KQ29uY2VybmluZyB0aGUgd29ya3Mgb2YgbWVuLCBieSB0aGUgd29yZCBvZiB0aHkgbGlwcyBJIGhhdmUga2VwdCBtZSBmcm9tIHRoZSBwYXRocyBvZiB0aGUgZGVzdHJveWVyLgpIb2xkIHVwIG15IGdvaW5ncyBpbiB0aHkgcGF0aHMsIHRoYXQgbXkgZm9vdHN0ZXBzIHNsaXAgbm90LgpJIGhhdmUgY2FsbGVkIHVwb24gdGhlZSwgZm9yIHRob3Ugd2lsdCBoZWFyIG1lLCBPIEdvZDogaW5jbGluZSB0aGluZSBlYXIgdW50byBtZSwgYW5kIGhlYXIgbXkgc3BlZWNoLgpTaGV3IHRoeSBtYXJ2ZWxsb3VzIGxvdmluZ2tpbmRuZXNzLCBPIHRob3UgdGhhdCBzYXZlc3QgYnkgdGh5IHJpZ2h0IGhhbmQgdGhlbSB3aGljaCBwdXQgdGhlaXIgdHJ1c3QgaW4gdGhlZSBmcm9tIHRob3NlIHRoYXQgcmlzZSB1cCBhZ2FpbnN0IHRoZW0uCktlZXAgbWUgYXMgdGhlIGFwcGxlIG9mIHRoZSBleWUsIGhpZGUgbWUgdW5kZXIgdGhlIHNoYWRvdyBvZiB0aHkgd2luZ3MsCkZyb20gdGhlIHdpY2tlZCB0aGF0IG9wcHJlc3MgbWUsIGZyb20gbXkgZGVhZGx5IGVuZW1pZXMsIHdobyBjb21wYXNzIG1lIGFib3V0LgpUaGV5IGFyZSBpbmNsb3NlZCBpbiB0aGVpciBvd24gZmF0OiB3aXRoIHRoZWlyIG1vdXRoIHRoZXkgc3BlYWsgcHJvdWRseS4KVGhleSBoYXZlIG5vdyBjb21wYXNzZWQgdXMgaW4gb3VyIHN0ZXBzOiB0aGV5IGhhdmUgc2V0IHRoZWlyIGV5ZXMgYm93aW5nIGRvd24gdG8gdGhlIGVhcnRoOwpMaWtlIGFzIGEgbGlvbiB0aGF0IGlzIGdyZWVkeSBvZiBoaXMgcHJleSwgYW5kIGFzIGl0IHdlcmUgYSB5b3VuZyBsaW9uIGx1cmtpbmcgaW4gc2VjcmV0IHBsYWNlcy4KQXJpc2UsIE8gTE9SRCwgZGlzYXBwb2ludCBoaW0sIGNhc3QgaGltIGRvd246IGRlbGl2ZXIgbXkgc291bCBmcm9tIHRoZSB3aWNrZWQsIHdoaWNoIGlzIHRoeSBzd29yZDoKRnJvbSBtZW4gd2hpY2ggYXJlIHRoeSBoYW5kLCBPIExPUkQsIGZyb20gbWVuIG9mIHRoZSB3b3JsZCwgd2hpY2ggaGF2ZSB0aGVpciBwb3J0aW9uIGluIHRoaXMgbGlmZSwgYW5kIHdob3NlIGJlbGx5IHRob3UgZmlsbGVzdCB3aXRoIHRoeSBoaWQgdHJlYXN1cmU6IHRoZXkgYXJlIGZ1bGwgb2YgY2hpbGRyZW4sIGFuZCBsZWF2ZSB0aGUgcmVzdCBvZiB0aGVpciBzdWJzdGFuY2UgdG8gdGhlaXIgYmFiZXMuCkFzIGZvciBtZSwgSSB3aWxsIGJlaG9sZCB0aHkgZmFjZSBpbiByaWdodGVvdXNuZXNzOiBJIHNoYWxsIGJlIHNhdGlzZmllZCwgd2hlbiBJIGF3YWtlLCB3aXRoIHRoeSBsaWtlbmVzcy4KSSB3aWxsIGxvdmUgdGhlZSwgTyBMT1JELCBteSBzdHJlbmd0aC4KVGhlIExPUkQgaXMgbXkgcm9jaywgYW5kIG15IGZvcnRyZXNzLCBhbmQgbXkgZGVsaXZlcmVyOyBteSBHb2QsIG15IHN0cmVuZ3RoLCBpbiB3aG9tIEkgd2lsbCB0cnVzdDsgbXkgYnVja2xlciwgYW5kIHRoZSBob3JuIG9mIG15IHNhbHZhdGlvbiwgYW5kIG15IGhpZ2ggdG93ZXIuCkkgd2lsbCBjYWxsIHVwb24gdGhlIExPUkQsIHdobyBpcyB3b3J0aHkgdG8gYmUgcHJhaXNlZDogc28gc2hhbGwgSSBiZSBzYXZlZCBmcm9tIG1pbmUgZW5lbWllcy4KVGhlIHNvcnJvd3Mgb2YgZGVhdGggY29tcGFzc2VkIG1lLCBhbmQgdGhlIGZsb29kcyBvZiB1bmdvZGx5IG1lbiBtYWRlIG1lIGFmcmFpZC4KVGhlIHNvcnJvd3Mgb2YgaGVsbCBjb21wYXNzZWQgbWUgYWJvdXQ6IHRoZSBzbmFyZXMgb2YgZGVhdGggcHJldmVudGVkIG1lLgpJbiBteSBkaXN0cmVzcyBJIGNhbGxlZCB1cG9uIHRoZSBMT1JELCBhbmQgY3JpZWQgdW50byBteSBHb2Q6IGhlIGhlYXJkIG15IHZvaWNlIG91dCBvZiBoaXMgdGVtcGxlLCBhbmQgbXkgY3J5IGNhbWUgYmVmb3JlIGhpbSwgZXZlbiBpbnRvIGhpcyBlYXJzLgpUaGVuIHRoZSBlYXJ0aCBzaG9vayBhbmQgdHJlbWJsZWQ7IHRoZSBmb3VuZGF0aW9ucyBhbHNvIG9mIHRoZSBoaWxscyBtb3ZlZCBhbmQgd2VyZSBzaGFrZW4sIGJlY2F1c2UgaGUgd2FzIHdyb3RoLgpUaGVyZSB3ZW50IHVwIGEgc21va2Ugb3V0IG9mIGhpcyBub3N0cmlscywgYW5kIGZpcmUgb3V0IG9mIGhpcyBtb3V0aCBkZXZvdXJlZDogY29hbHMgd2VyZSBraW5kbGVkIGJ5IGl0LgpIZSBib3dlZCB0aGUgaGVhdmVucyBhbHNvLCBhbmQgY2FtZSBkb3duOiBhbmQgZGFya25lc3Mgd2FzIHVuZGVyIGhpcyBmZWV0LgpBbmQgaGUgcm9kZSB1cG9uIGEgY2hlcnViLCBhbmQgZGlkIGZseTogeWVhLCBoZSBkaWQgZmx5IHVwb24gdGhlIHdpbmdzIG9mIHRoZSB3aW5kLgpIZSBtYWRlIGRhcmtuZXNzIGhpcyBzZWNyZXQgcGxhY2U7IGhpcyBwYXZpbGlvbiByb3VuZCBhYm91dCBoaW0gd2VyZSBkYXJrIHdhdGVycyBhbmQgdGhpY2sgY2xvdWRzIG9mIHRoZSBza2llcy4KQXQgdGhlIGJyaWdodG5lc3MgdGhhdCB3YXMgYmVmb3JlIGhpbSBoaXMgdGhpY2sgY2xvdWRzIHBhc3NlZCwgaGFpbCBzdG9uZXMgYW5kIGNvYWxzIG9mIGZpcmUuClRoZSBMT1JEIGFsc28gdGh1bmRlcmVkIGluIHRoZSBoZWF2ZW5zLCBhbmQgdGhlIEhpZ2hlc3QgZ2F2ZSBoaXMgdm9pY2U7IGhhaWwgc3RvbmVzIGFuZCBjb2FscyBvZiBmaXJlLgpZZWEsIGhlIHNlbnQgb3V0IGhpcyBhcnJvd3MsIGFuZCBzY2F0dGVyZWQgdGhlbTsgYW5kIGhlIHNob3Qgb3V0IGxpZ2h0bmluZ3MsIGFuZCBkaXNjb21maXRlZCB0aGVtLgpUaGVuIHRoZSBjaGFubmVscyBvZiB3YXRlcnMgd2VyZSBzZWVuLCBhbmQgdGhlIGZvdW5kYXRpb25zIG9mIHRoZSB3b3JsZCB3ZXJlIGRpc2NvdmVyZWQgYXQgdGh5IHJlYnVrZSwgTyBMT1JELCBhdCB0aGUgYmxhc3Qgb2YgdGhlIGJyZWF0aCBvZiB0aHkgbm9zdHJpbHMuCkhlIHNlbnQgZnJvbSBhYm92ZSwgaGUgdG9vayBtZSwgaGUgZHJldyBtZSBvdXQgb2YgbWFueSB3YXRlcnMuCkhlIGRlbGl2ZXJlZCBtZSBmcm9tIG15IHN0cm9uZyBlbmVteSwgYW5kIGZyb20gdGhlbSB3aGljaCBoYXRlZCBtZTogZm9yIHRoZXkgd2VyZSB0b28gc3Ryb25nIGZvciBtZS4KVGhleSBwcmV2ZW50ZWQgbWUgaW4gdGhlIGRheSBvZiBteSBjYWxhbWl0eTogYnV0IHRoZSBMT1JEIHdhcyBteSBzdGF5LgpIZSBicm91Z2h0IG1lIGZvcnRoIGFsc28gaW50byBhIGxhcmdlIHBsYWNlOyBoZSBkZWxpdmVyZWQgbWUsIGJlY2F1c2UgaGUgZGVsaWdodGVkIGluIG1lLgpUaGUgTE9SRCByZXdhcmRlZCBtZSBhY2NvcmRpbmcgdG8gbXkgcmlnaHRlb3VzbmVzczsgYWNjb3JkaW5nIHRvIHRoZSBjbGVhbm5lc3Mgb2YgbXkgaGFuZHMgaGF0aCBoZSByZWNvbXBlbnNlZCBtZS4KRm9yIEkgaGF2ZSBrZXB0IHRoZSB3YXlzIG9mIHRoZSBMT1JELCBhbmQgaGF2ZSBub3Qgd2lja2VkbHkgZGVwYXJ0ZWQgZnJvbSBteSBHb2QuCkZvciBhbGwgaGlzIGp1ZGdtZW50cyB3ZXJlIGJlZm9yZSBtZSwgYW5kIEkgZGlkIG5vdCBwdXQgYXdheSBoaXMgc3RhdHV0ZXMgZnJvbSBtZS4KSSB3YXMgYWxzbyB1cHJpZ2h0IGJlZm9yZSBoaW0sIGFuZCBJIGtlcHQgbXlzZWxmIGZyb20gbWluZSBpbmlxdWl0eS4KVGhlcmVmb3JlIGhhdGggdGhlIExPUkQgcmVjb21wZW5zZWQgbWUgYWNjb3JkaW5nIHRvIG15IHJpZ2h0ZW91c25lc3MsIGFjY29yZGluZyB0byB0aGUgY2xlYW5uZXNzIG9mIG15IGhhbmRzIGluIGhpcyBleWVzaWdodC4KV2l0aCB0aGUgbWVyY2lmdWwgdGhvdSB3aWx0IHNoZXcgdGh5c2VsZiBtZXJjaWZ1bDsgd2l0aCBhbiB1cHJpZ2h0IG1hbiB0aG91IHdpbHQgc2hldyB0aHlzZWxmIHVwcmlnaHQ7CldpdGggdGhlIHB1cmUgdGhvdSB3aWx0IHNoZXcgdGh5c2VsZiBwdXJlOyBhbmQgd2l0aCB0aGUgZnJvd2FyZCB0aG91IHdpbHQgc2hldyB0aHlzZWxmIGZyb3dhcmQuCkZvciB0aG91IHdpbHQgc2F2ZSB0aGUgYWZmbGljdGVkIHBlb3BsZTsgYnV0IHdpbHQgYnJpbmcgZG93biBoaWdoIGxvb2tzLgpGb3IgdGhvdSB3aWx0IGxpZ2h0IG15IGNhbmRsZTogdGhlIExPUkQgbXkgR29kIHdpbGwgZW5saWdodGVuIG15IGRhcmtuZXNzLgpGb3IgYnkgdGhlZSBJIGhhdmUgcnVuIHRocm91Z2ggYSB0cm9vcDsgYW5kIGJ5IG15IEdvZCBoYXZlIEkgbGVhcGVkIG92ZXIgYSB3YWxsLgpBcyBmb3IgR29kLCBoaXMgd2F5IGlzIHBlcmZlY3Q6IHRoZSB3b3JkIG9mIHRoZSBMT1JEIGlzIHRyaWVkOiBoZSBpcyBhIGJ1Y2tsZXIgdG8gYWxsIHRob3NlIHRoYXQgdHJ1c3QgaW4gaGltLgpGb3Igd2hvIGlzIEdvZCBzYXZlIHRoZSBMT1JEPyBvciB3aG8gaXMgYSByb2NrIHNhdmUgb3VyIEdvZD8KSXQgaXMgR29kIHRoYXQgZ2lyZGV0aCBtZSB3aXRoIHN0cmVuZ3RoLCBhbmQgbWFrZXRoIG15IHdheSBwZXJmZWN0LgpIZSBtYWtldGggbXkgZmVldCBsaWtlIGhpbmRzJyBmZWV0LCBhbmQgc2V0dGV0aCBtZSB1cG9uIG15IGhpZ2ggcGxhY2VzLgpIZSB0ZWFjaGV0aCBteSBoYW5kcyB0byB3YXIsIHNvIHRoYXQgYSBib3cgb2Ygc3RlZWwgaXMgYnJva2VuIGJ5IG1pbmUgYXJtcy4KVGhvdSBoYXN0IGFsc28gZ2l2ZW4gbWUgdGhlIHNoaWVsZCBvZiB0aHkgc2FsdmF0aW9uOiBhbmQgdGh5IHJpZ2h0IGhhbmQgaGF0aCBob2xkZW4gbWUgdXAsIGFuZCB0aHkgZ2VudGxlbmVzcyBoYXRoIG1hZGUgbWUgZ3JlYXQuClRob3UgaGFzdCBlbmxhcmdlZCBteSBzdGVwcyB1bmRlciBtZSwgdGhhdCBteSBmZWV0IGRpZCBub3Qgc2xpcC4KSSBoYXZlIHB1cnN1ZWQgbWluZSBlbmVtaWVzLCBhbmQgb3ZlcnRha2VuIHRoZW06IG5laXRoZXIgZGlkIEkgdHVybiBhZ2FpbiB0aWxsIHRoZXkgd2VyZSBjb25zdW1lZC4KSSBoYXZlIHdvdW5kZWQgdGhlbSB0aGF0IHRoZXkgd2VyZSBub3QgYWJsZSB0byByaXNlOiB0aGV5IGFyZSBmYWxsZW4gdW5kZXIgbXkgZmVldC4KRm9yIHRob3UgaGFzdCBnaXJkZWQgbWUgd2l0aCBzdHJlbmd0aCB1bnRvIHRoZSBiYXR0bGU6IHRob3UgaGFzdCBzdWJkdWVkIHVuZGVyIG1lIHRob3NlIHRoYXQgcm9zZSB1cCBhZ2FpbnN0IG1lLgpUaG91IGhhc3QgYWxzbyBnaXZlbiBtZSB0aGUgbmVja3Mgb2YgbWluZSBlbmVtaWVzOyB0aGF0IEkgbWlnaHQgZGVzdHJveSB0aGVtIHRoYXQgaGF0ZSBtZS4KVGhleSBjcmllZCwgYnV0IHRoZXJlIHdhcyBub25lIHRvIHNhdmUgdGhlbTogZXZlbiB1bnRvIHRoZSBMT1JELCBidXQgaGUgYW5zd2VyZWQgdGhlbSBub3QuClRoZW4gZGlkIEkgYmVhdCB0aGVtIHNtYWxsIGFzIHRoZSBkdXN0IGJlZm9yZSB0aGUgd2luZDogSSBkaWQgY2FzdCB0aGVtIG91dCBhcyB0aGUgZGlydCBpbiB0aGUgc3RyZWV0cy4KVGhvdSBoYXN0IGRlbGl2ZXJlZCBtZSBmcm9tIHRoZSBzdHJpdmluZ3Mgb2YgdGhlIHBlb3BsZTsgYW5kIHRob3UgaGFzdCBtYWRlIG1lIHRoZSBoZWFkIG9mIHRoZSBoZWF0aGVuOiBhIHBlb3BsZSB3aG9tIEkgaGF2ZSBub3Qga25vd24gc2hhbGwgc2VydmUgbWUuCkFzIHNvb24gYXMgdGhleSBoZWFyIG9mIG1lLCB0aGV5IHNoYWxsIG9iZXkgbWU6IHRoZSBzdHJhbmdlcnMgc2hhbGwgc3VibWl0IHRoZW1zZWx2ZXMgdW50byBtZS4KVGhlIHN0cmFuZ2VycyBzaGFsbCBmYWRlIGF3YXksIGFuZCBiZSBhZnJhaWQgb3V0IG9mIHRoZWlyIGNsb3NlIHBsYWNlcy4KVGhlIExPUkQgbGl2ZXRoOyBhbmQgYmxlc3NlZCBiZSBteSByb2NrOyBhbmQgbGV0IHRoZSBHb2Qgb2YgbXkgc2FsdmF0aW9uIGJlIGV4YWx0ZWQuCkl0IGlzIEdvZCB0aGF0IGF2ZW5nZXRoIG1lLCBhbmQgc3ViZHVldGggdGhlIHBlb3BsZSB1bmRlciBtZS4KSGUgZGVsaXZlcmV0aCBtZSBmcm9tIG1pbmUgZW5lbWllczogeWVhLCB0aG91IGxpZnRlc3QgbWUgdXAgYWJvdmUgdGhvc2UgdGhhdCByaXNlIHVwIGFnYWluc3QgbWU6IHRob3UgaGFzdCBkZWxpdmVyZWQgbWUgZnJvbSB0aGUgdmlvbGVudCBtYW4uClRoZXJlZm9yZSB3aWxsIEkgZ2l2ZSB0aGFua3MgdW50byB0aGVlLCBPIExPUkQsIGFtb25nIHRoZSBoZWF0aGVuLCBhbmQgc2luZyBwcmFpc2VzIHVudG8gdGh5IG5hbWUuCkdyZWF0IGRlbGl2ZXJhbmNlIGdpdmV0aCBoZSB0byBoaXMga2luZzsgYW5kIHNoZXdldGggbWVyY3kgdG8gaGlzIGFub2ludGVkLCB0byBEYXZpZCwgYW5kIHRvIGhpcyBzZWVkIGZvciBldmVybW9yZS4KVGhlIGhlYXZlbnMgZGVjbGFyZSB0aGUgZ2xvcnkgb2YgR29kOyBhbmQgdGhlIGZpcm1hbWVudCBzaGV3ZXRoIGhpcyBoYW5keXdvcmsuCkRheSB1bnRvIGRheSB1dHRlcmV0aCBzcGVlY2gsIGFuZCBuaWdodCB1bnRvIG5pZ2h0IHNoZXdldGgga25vd2xlZGdlLgpUaGVyZSBpcyBubyBzcGVlY2ggbm9yIGxhbmd1YWdlLCB3aGVyZSB0aGVpciB2b2ljZSBpcyBub3QgaGVhcmQuClRoZWlyIGxpbmUgaXMgZ29uZSBvdXQgdGhyb3VnaCBhbGwgdGhlIGVhcnRoLCBhbmQgdGhlaXIgd29yZHMgdG8gdGhlIGVuZCBvZiB0aGUgd29ybGQuIEluIHRoZW0gaGF0aCBoZSBzZXQgYSB0YWJlcm5hY2xlIGZvciB0aGUgc3VuLApXaGljaCBpcyBhcyBhIGJyaWRlZ3Jvb20gY29taW5nIG91dCBvZiBoaXMgY2hhbWJlciwgYW5kIHJlam9pY2V0aCBhcyBhIHN0cm9uZyBtYW4gdG8gcnVuIGEgcmFjZS4KSGlzIGdvaW5nIGZvcnRoIGlzIGZyb20gdGhlIGVuZCBvZiB0aGUgaGVhdmVuLCBhbmQgaGlzIGNpcmN1aXQgdW50byB0aGUgZW5kcyBvZiBpdDogYW5kIHRoZXJlIGlzIG5vdGhpbmcgaGlkIGZyb20gdGhlIGhlYXQgdGhlcmVvZi4KVGhlIGxhdyBvZiB0aGUgTE9SRCBpcyBwZXJmZWN0LCBjb252ZXJ0aW5nIHRoZSBzb3VsOiB0aGUgdGVzdGltb255IG9mIHRoZSBMT1JEIGlzIHN1cmUsIG1ha2luZyB3aXNlIHRoZSBzaW1wbGUuClRoZSBzdGF0dXRlcyBvZiB0aGUgTE9SRCBhcmUgcmlnaHQsIHJlam9pY2luZyB0aGUgaGVhcnQ6IHRoZSBjb21tYW5kbWVudCBvZiB0aGUgTE9SRCBpcyBwdXJlLCBlbmxpZ2h0ZW5pbmcgdGhlIGV5ZXMuClRoZSBmZWFyIG9mIHRoZSBMT1JEIGlzIGNsZWFuLCBlbmR1cmluZyBmb3IgZXZlcjogdGhlIGp1ZGdtZW50cyBvZiB0aGUgTE9SRCBhcmUgdHJ1ZSBhbmQgcmlnaHRlb3VzIGFsdG9nZXRoZXIuCk1vcmUgdG8gYmUgZGVzaXJlZCBhcmUgdGhleSB0aGFuIGdvbGQsIHllYSwgdGhhbiBtdWNoIGZpbmUgZ29sZDogc3dlZXRlciBhbHNvIHRoYW4gaG9uZXkgYW5kIHRoZSBob25leWNvbWIuCk1vcmVvdmVyIGJ5IHRoZW0gaXMgdGh5IHNlcnZhbnQgd2FybmVkOiBhbmQgaW4ga2VlcGluZyBvZiB0aGVtIHRoZXJlIGlzIGdyZWF0IHJld2FyZC4KV2hvIGNhbiB1bmRlcnN0YW5kIGhpcyBlcnJvcnM/IGNsZWFuc2UgdGhvdSBtZSBmcm9tIHNlY3JldCBmYXVsdHMuCktlZXAgYmFjayB0aHkgc2VydmFudCBhbHNvIGZyb20gcHJlc3VtcHR1b3VzIHNpbnM7IGxldCB0aGVtIG5vdCBoYXZlIGRvbWluaW9uIG92ZXIgbWU6IHRoZW4gc2hhbGwgSSBiZSB1cHJpZ2h0LCBhbmQgSSBzaGFsbCBiZSBpbm5vY2VudCBmcm9tIHRoZSBncmVhdCB0cmFuc2dyZXNzaW9uLgpMZXQgdGhlIHdvcmRzIG9mIG15IG1vdXRoLCBhbmQgdGhlIG1lZGl0YXRpb24gb2YgbXkgaGVhcnQsIGJlIGFjY2VwdGFibGUgaW4gdGh5IHNpZ2h0LCBPIExPUkQsIG15IHN0cmVuZ3RoLCBhbmQgbXkgcmVkZWVtZXIuClRoZSBMT1JEIGhlYXIgdGhlZSBpbiB0aGUgZGF5IG9mIHRyb3VibGU7IHRoZSBuYW1lIG9mIHRoZSBHb2Qgb2YgSmFjb2IgZGVmZW5kIHRoZWU7ClNlbmQgdGhlZSBoZWxwIGZyb20gdGhlIHNhbmN0dWFyeSwgYW5kIHN0cmVuZ3RoZW4gdGhlZSBvdXQgb2YgWmlvbjsKUmVtZW1iZXIgYWxsIHRoeSBvZmZlcmluZ3MsIGFuZCBhY2NlcHQgdGh5IGJ1cm50IHNhY3JpZmljZTsgU2VsYWguCkdyYW50IHRoZWUgYWNjb3JkaW5nIHRvIHRoaW5lIG93biBoZWFydCwgYW5kIGZ1bGZpbCBhbGwgdGh5IGNvdW5zZWwuCldlIHdpbGwgcmVqb2ljZSBpbiB0aHkgc2FsdmF0aW9uLCBhbmQgaW4gdGhlIG5hbWUgb2Ygb3VyIEdvZCB3ZSB3aWxsIHNldCB1cCBvdXIgYmFubmVyczogdGhlIExPUkQgZnVsZmlsIGFsbCB0aHkgcGV0aXRpb25zLgpOb3cga25vdyBJIHRoYXQgdGhlIExPUkQgc2F2ZXRoIGhpcyBhbm9pbnRlZDsgaGUgd2lsbCBoZWFyIGhpbSBmcm9tIGhpcyBob2x5IGhlYXZlbiB3aXRoIHRoZSBzYXZpbmcgc3RyZW5ndGggb2YgaGlzIHJpZ2h0IGhhbmQuClNvbWUgdHJ1c3QgaW4gY2hhcmlvdHMsIGFuZCBzb21lIGluIGhvcnNlczogYnV0IHdlIHdpbGwgcmVtZW1iZXIgdGhlIG5hbWUgb2YgdGhlIExPUkQgb3VyIEdvZC4KVGhleSBhcmUgYnJvdWdodCBkb3duIGFuZCBmYWxsZW46IGJ1dCB3ZSBhcmUgcmlzZW4sIGFuZCBzdGFuZCB1cHJpZ2h0LgpTYXZlLCBMT1JEOiBsZXQgdGhlIGtpbmcgaGVhciB1cyB3aGVuIHdlIGNhbGwuClRoZSBraW5nIHNoYWxsIGpveSBpbiB0aHkgc3RyZW5ndGgsIE8gTE9SRDsgYW5kIGluIHRoeSBzYWx2YXRpb24gaG93IGdyZWF0bHkgc2hhbGwgaGUgcmVqb2ljZSEKVGhvdSBoYXN0IGdpdmVuIGhpbSBoaXMgaGVhcnQncyBkZXNpcmUsIGFuZCBoYXN0IG5vdCB3aXRoaG9sZGVuIHRoZSByZXF1ZXN0IG9mIGhpcyBsaXBzLiBTZWxhaC4KRm9yIHRob3UgcHJldmVudGVzdCBoaW0gd2l0aCB0aGUgYmxlc3NpbmdzIG9mIGdvb2RuZXNzOiB0aG91IHNldHRlc3QgYSBjcm93biBvZiBwdXJlIGdvbGQgb24gaGlzIGhlYWQuCkhlIGFza2VkIGxpZmUgb2YgdGhlZSwgYW5kIHRob3UgZ2F2ZXN0IGl0IGhpbSwgZXZlbiBsZW5ndGggb2YgZGF5cyBmb3IgZXZlciBhbmQgZXZlci4KSGlzIGdsb3J5IGlzIGdyZWF0IGluIHRoeSBzYWx2YXRpb246IGhvbm91ciBhbmQgbWFqZXN0eSBoYXN0IHRob3UgbGFpZCB1cG9uIGhpbS4KRm9yIHRob3UgaGFzdCBtYWRlIGhpbSBtb3N0IGJsZXNzZWQgZm9yIGV2ZXI6IHRob3UgaGFzdCBtYWRlIGhpbSBleGNlZWRpbmcgZ2xhZCB3aXRoIHRoeSBjb3VudGVuYW5jZS4KRm9yIHRoZSBraW5nIHRydXN0ZXRoIGluIHRoZSBMT1JELCBhbmQgdGhyb3VnaCB0aGUgbWVyY3kgb2YgdGhlIG1vc3QgSGlnaCBoZSBzaGFsbCBub3QgYmUgbW92ZWQuClRoaW5lIGhhbmQgc2hhbGwgZmluZCBvdXQgYWxsIHRoaW5lIGVuZW1pZXM6IHRoeSByaWdodCBoYW5kIHNoYWxsIGZpbmQgb3V0IHRob3NlIHRoYXQgaGF0ZSB0aGVlLgpUaG91IHNoYWx0IG1ha2UgdGhlbSBhcyBhIGZpZXJ5IG92ZW4gaW4gdGhlIHRpbWUgb2YgdGhpbmUgYW5nZXI6IHRoZSBMT1JEIHNoYWxsIHN3YWxsb3cgdGhlbSB1cCBpbiBoaXMgd3JhdGgsIGFuZCB0aGUgZmlyZSBzaGFsbCBkZXZvdXIgdGhlbS4KVGhlaXIgZnJ1aXQgc2hhbHQgdGhvdSBkZXN0cm95IGZyb20gdGhlIGVhcnRoLCBhbmQgdGhlaXIgc2VlZCBmcm9tIGFtb25nIHRoZSBjaGlsZHJlbiBvZiBtZW4uCkZvciB0aGV5IGludGVuZGVkIGV2aWwgYWdhaW5zdCB0aGVlOiB0aGV5IGltYWdpbmVkIGEgbWlzY2hpZXZvdXMgZGV2aWNlLCB3aGljaCB0aGV5IGFyZSBub3QgYWJsZSB0byBwZXJmb3JtLgpUaGVyZWZvcmUgc2hhbHQgdGhvdSBtYWtlIHRoZW0gdHVybiB0aGVpciBiYWNrLCB3aGVuIHRob3Ugc2hhbHQgbWFrZSByZWFkeSB0aGluZSBhcnJvd3MgdXBvbiB0aHkgc3RyaW5ncyBhZ2FpbnN0IHRoZSBmYWNlIG9mIHRoZW0uCkJlIHRob3UgZXhhbHRlZCwgTE9SRCwgaW4gdGhpbmUgb3duIHN0cmVuZ3RoOiBzbyB3aWxsIHdlIHNpbmcgYW5kIHByYWlzZSB0aHkgcG93ZXIuCk15IEdvZCwgbXkgR29kLCB3aHkgaGFzdCB0aG91IGZvcnNha2VuIG1lPyB3aHkgYXJ0IHRob3Ugc28gZmFyIGZyb20gaGVscGluZyBtZSwgYW5kIGZyb20gdGhlIHdvcmRzIG9mIG15IHJvYXJpbmc/Ck8gbXkgR29kLCBJIGNyeSBpbiB0aGUgZGF5IHRpbWUsIGJ1dCB0aG91IGhlYXJlc3Qgbm90OyBhbmQgaW4gdGhlIG5pZ2h0IHNlYXNvbiwgYW5kIGFtIG5vdCBzaWxlbnQuCkJ1dCB0aG91IGFydCBob2x5LCBPIHRob3UgdGhhdCBpbmhhYml0ZXN0IHRoZSBwcmFpc2VzIG9mIElzcmFlbC4KT3VyIGZhdGhlcnMgdHJ1c3RlZCBpbiB0aGVlOiB0aGV5IHRydXN0ZWQsIGFuZCB0aG91IGRpZHN0IGRlbGl2ZXIgdGhlbS4KVGhleSBjcmllZCB1bnRvIHRoZWUsIGFuZCB3ZXJlIGRlbGl2ZXJlZDogdGhleSB0cnVzdGVkIGluIHRoZWUsIGFuZCB3ZXJlIG5vdCBjb25mb3VuZGVkLgpCdXQgSSBhbSBhIHdvcm0sIGFuZCBubyBtYW47IGEgcmVwcm9hY2ggb2YgbWVuLCBhbmQgZGVzcGlzZWQgb2YgdGhlIHBlb3BsZS4KQWxsIHRoZXkgdGhhdCBzZWUgbWUgbGF1Z2ggbWUgdG8gc2Nvcm46IHRoZXkgc2hvb3Qgb3V0IHRoZSBsaXAsIHRoZXkgc2hha2UgdGhlIGhlYWQsIHNheWluZywKSGUgdHJ1c3RlZCBvbiB0aGUgTE9SRCB0aGF0IGhlIHdvdWxkIGRlbGl2ZXIgaGltOiBsZXQgaGltIGRlbGl2ZXIgaGltLCBzZWVpbmcgaGUgZGVsaWdodGVkIGluIGhpbS4KQnV0IHRob3UgYXJ0IGhlIHRoYXQgdG9vayBtZSBvdXQgb2YgdGhlIHdvbWI6IHRob3UgZGlkc3QgbWFrZSBtZSBob3BlIHdoZW4gSSB3YXMgdXBvbiBteSBtb3RoZXIncyBicmVhc3RzLgpJIHdhcyBjYXN0IHVwb24gdGhlZSBmcm9tIHRoZSB3b21iOiB0aG91IGFydCBteSBHb2QgZnJvbSBteSBtb3RoZXIncyBiZWxseS4KQmUgbm90IGZhciBmcm9tIG1lOyBmb3IgdHJvdWJsZSBpcyBuZWFyOyBmb3IgdGhlcmUgaXMgbm9uZSB0byBoZWxwLgpNYW55IGJ1bGxzIGhhdmUgY29tcGFzc2VkIG1lOiBzdHJvbmcgYnVsbHMgb2YgQmFzaGFuIGhhdmUgYmVzZXQgbWUgcm91bmQuClRoZXkgZ2FwZWQgdXBvbiBtZSB3aXRoIHRoZWlyIG1vdXRocywgYXMgYSByYXZlbmluZyBhbmQgYSByb2FyaW5nIGxpb24uCkkgYW0gcG91cmVkIG91dCBsaWtlIHdhdGVyLCBhbmQgYWxsIG15IGJvbmVzIGFyZSBvdXQgb2Ygam9pbnQ6IG15IGhlYXJ0IGlzIGxpa2Ugd2F4OyBpdCBpcyBtZWx0ZWQgaW4gdGhlIG1pZHN0IG9mIG15IGJvd2Vscy4KTXkgc3RyZW5ndGggaXMgZHJpZWQgdXAgbGlrZSBhIHBvdHNoZXJkOyBhbmQgbXkgdG9uZ3VlIGNsZWF2ZXRoIHRvIG15IGphd3M7IGFuZCB0aG91IGhhc3QgYnJvdWdodCBtZSBpbnRvIHRoZSBkdXN0IG9mIGRlYXRoLgpGb3IgZG9ncyBoYXZlIGNvbXBhc3NlZCBtZTogdGhlIGFzc2VtYmx5IG9mIHRoZSB3aWNrZWQgaGF2ZSBpbmNsb3NlZCBtZTogdGhleSBwaWVyY2VkIG15IGhhbmRzIGFuZCBteSBmZWV0LgpJIG1heSB0ZWxsIGFsbCBteSBib25lczogdGhleSBsb29rIGFuZCBzdGFyZSB1cG9uIG1lLgpUaGV5IHBhcnQgbXkgZ2FybWVudHMgYW1vbmcgdGhlbSwgYW5kIGNhc3QgbG90cyB1cG9uIG15IHZlc3R1cmUuCkJ1dCBiZSBub3QgdGhvdSBmYXIgZnJvbSBtZSwgTyBMT1JEOiBPIG15IHN0cmVuZ3RoLCBoYXN0ZSB0aGVlIHRvIGhlbHAgbWUuCkRlbGl2ZXIgbXkgc291bCBmcm9tIHRoZSBzd29yZDsgbXkgZGFybGluZyBmcm9tIHRoZSBwb3dlciBvZiB0aGUgZG9nLgpTYXZlIG1lIGZyb20gdGhlIGxpb24ncyBtb3V0aDogZm9yIHRob3UgaGFzdCBoZWFyZCBtZSBmcm9tIHRoZSBob3JucyBvZiB0aGUgdW5pY29ybnMuCkkgd2lsbCBkZWNsYXJlIHRoeSBuYW1lIHVudG8gbXkgYnJldGhyZW46IGluIHRoZSBtaWRzdCBvZiB0aGUgY29uZ3JlZ2F0aW9uIHdpbGwgSSBwcmFpc2UgdGhlZS4KWWUgdGhhdCBmZWFyIHRoZSBMT1JELCBwcmFpc2UgaGltOyBhbGwgeWUgdGhlIHNlZWQgb2YgSmFjb2IsIGdsb3JpZnkgaGltOyBhbmQgZmVhciBoaW0sIGFsbCB5ZSB0aGUgc2VlZCBvZiBJc3JhZWwuCkZvciBoZSBoYXRoIG5vdCBkZXNwaXNlZCBub3IgYWJob3JyZWQgdGhlIGFmZmxpY3Rpb24gb2YgdGhlIGFmZmxpY3RlZDsgbmVpdGhlciBoYXRoIGhlIGhpZCBoaXMgZmFjZSBmcm9tIGhpbTsgYnV0IHdoZW4gaGUgY3JpZWQgdW50byBoaW0sIGhlIGhlYXJkLgpNeSBwcmFpc2Ugc2hhbGwgYmUgb2YgdGhlZSBpbiB0aGUgZ3JlYXQgY29uZ3JlZ2F0aW9uOiBJIHdpbGwgcGF5IG15IHZvd3MgYmVmb3JlIHRoZW0gdGhhdCBmZWFyIGhpbS4KVGhlIG1lZWsgc2hhbGwgZWF0IGFuZCBiZSBzYXRpc2ZpZWQ6IHRoZXkgc2hhbGwgcHJhaXNlIHRoZSBMT1JEIHRoYXQgc2VlayBoaW06IHlvdXIgaGVhcnQgc2hhbGwgbGl2ZSBmb3IgZXZlci4KQWxsIHRoZSBlbmRzIG9mIHRoZSB3b3JsZCBzaGFsbCByZW1lbWJlciBhbmQgdHVybiB1bnRvIHRoZSBMT1JEOiBhbmQgYWxsIHRoZSBraW5kcmVkcyBvZiB0aGUgbmF0aW9ucyBzaGFsbCB3b3JzaGlwIGJlZm9yZSB0aGVlLgpGb3IgdGhlIGtpbmdkb20gaXMgdGhlIExPUkQnczogYW5kIGhlIGlzIHRoZSBnb3Zlcm5vciBhbW9uZyB0aGUgbmF0aW9ucy4KQWxsIHRoZXkgdGhhdCBiZSBmYXQgdXBvbiBlYXJ0aCBzaGFsbCBlYXQgYW5kIHdvcnNoaXA6IGFsbCB0aGV5IHRoYXQgZ28gZG93biB0byB0aGUgZHVzdCBzaGFsbCBib3cgYmVmb3JlIGhpbTogYW5kIG5vbmUgY2FuIGtlZXAgYWxpdmUgaGlzIG93biBzb3VsLgpBIHNlZWQgc2hhbGwgc2VydmUgaGltOyBpdCBzaGFsbCBiZSBhY2NvdW50ZWQgdG8gdGhlIExvcmQgZm9yIGEgZ2VuZXJhdGlvbi4KVGhleSBzaGFsbCBjb21lLCBhbmQgc2hhbGwgZGVjbGFyZSBoaXMgcmlnaHRlb3VzbmVzcyB1bnRvIGEgcGVvcGxlIHRoYXQgc2hhbGwgYmUgYm9ybiwgdGhhdCBoZSBoYXRoIGRvbmUgdGhpcy4KVGhlIExPUkQgaXMgbXkgc2hlcGhlcmQ7IEkgc2hhbGwgbm90IHdhbnQuCkhlIG1ha2V0aCBtZSB0byBsaWUgZG93biBpbiBncmVlbiBwYXN0dXJlczogaGUgbGVhZGV0aCBtZSBiZXNpZGUgdGhlIHN0aWxsIHdhdGVycy4KSGUgcmVzdG9yZXRoIG15IHNvdWw6IGhlIGxlYWRldGggbWUgaW4gdGhlIHBhdGhzIG9mIHJpZ2h0ZW91c25lc3MgZm9yIGhpcyBuYW1lJ3Mgc2FrZS4KWWVhLCB0aG91Z2ggSSB3YWxrIHRocm91Z2ggdGhlIHZhbGxleSBvZiB0aGUgc2hhZG93IG9mIGRlYXRoLCBJIHdpbGwgZmVhciBubyBldmlsOiBmb3IgdGhvdSBhcnQgd2l0aCBtZTsgdGh5IHJvZCBhbmQgdGh5IHN0YWZmIHRoZXkgY29tZm9ydCBtZS4KVGhvdSBwcmVwYXJlc3QgYSB0YWJsZSBiZWZvcmUgbWUgaW4gdGhlIHByZXNlbmNlIG9mIG1pbmUgZW5lbWllczogdGhvdSBhbm9pbnRlc3QgbXkgaGVhZCB3aXRoIG9pbDsgbXkgY3VwIHJ1bm5ldGggb3Zlci4KU3VyZWx5IGdvb2RuZXNzIGFuZCBtZXJjeSBzaGFsbCBmb2xsb3cgbWUgYWxsIHRoZSBkYXlzIG9mIG15IGxpZmU6IGFuZCBJIHdpbGwgZHdlbGwgaW4gdGhlIGhvdXNlIG9mIHRoZSBMT1JEIGZvciBldmVyLgpUaGUgZWFydGggaXMgdGhlIExPUkQncywgYW5kIHRoZSBmdWxuZXNzIHRoZXJlb2Y7IHRoZSB3b3JsZCwgYW5kIHRoZXkgdGhhdCBkd2VsbCB0aGVyZWluLgpGb3IgaGUgaGF0aCBmb3VuZGVkIGl0IHVwb24gdGhlIHNlYXMsIGFuZCBlc3RhYmxpc2hlZCBpdCB1cG9uIHRoZSBmbG9vZHMuCldobyBzaGFsbCBhc2NlbmQgaW50byB0aGUgaGlsbCBvZiB0aGUgTE9SRD8gb3Igd2hvIHNoYWxsIHN0YW5kIGluIGhpcyBob2x5IHBsYWNlPwpIZSB0aGF0IGhhdGggY2xlYW4gaGFuZHMsIGFuZCBhIHB1cmUgaGVhcnQ7IHdobyBoYXRoIG5vdCBsaWZ0ZWQgdXAgaGlzIHNvdWwgdW50byB2YW5pdHksIG5vciBzd29ybiBkZWNlaXRmdWxseS4KSGUgc2hhbGwgcmVjZWl2ZSB0aGUgYmxlc3NpbmcgZnJvbSB0aGUgTE9SRCwgYW5kIHJpZ2h0ZW91c25lc3MgZnJvbSB0aGUgR29kIG9mIGhpcyBzYWx2YXRpb24uClRoaXMgaXMgdGhlIGdlbmVyYXRpb24gb2YgdGhlbSB0aGF0IHNlZWsgaGltLCB0aGF0IHNlZWsgdGh5IGZhY2UsIE8gSmFjb2IuIFNlbGFoLgpMaWZ0IHVwIHlvdXIgaGVhZHMsIE8geWUgZ2F0ZXM7IGFuZCBiZSB5ZSBsaWZ0IHVwLCB5ZSBldmVybGFzdGluZyBkb29yczsgYW5kIHRoZSBLaW5nIG9mIGdsb3J5IHNoYWxsIGNvbWUgaW4uCldobyBpcyB0aGlzIEtpbmcgb2YgZ2xvcnk/IFRoZSBMT1JEIHN0cm9uZyBhbmQgbWlnaHR5LCB0aGUgTE9SRCBtaWdodHkgaW4gYmF0dGxlLgpMaWZ0IHVwIHlvdXIgaGVhZHMsIE8geWUgZ2F0ZXM7IGV2ZW4gbGlmdCB0aGVtIHVwLCB5ZSBldmVybGFzdGluZyBkb29yczsgYW5kIHRoZSBLaW5nIG9mIGdsb3J5IHNoYWxsIGNvbWUgaW4uCldobyBpcyB0aGlzIEtpbmcgb2YgZ2xvcnk/IFRoZSBMT1JEIG9mIGhvc3RzLCBoZSBpcyB0aGUgS2luZyBvZiBnbG9yeS4gU2VsYWguClVudG8gdGhlZSwgTyBMT1JELCBkbyBJIGxpZnQgdXAgbXkgc291bC4KTyBteSBHb2QsIEkgdHJ1c3QgaW4gdGhlZTogbGV0IG1lIG5vdCBiZSBhc2hhbWVkLCBsZXQgbm90IG1pbmUgZW5lbWllcyB0cml1bXBoIG92ZXIgbWUuClllYSwgbGV0IG5vbmUgdGhhdCB3YWl0IG9uIHRoZWUgYmUgYXNoYW1lZDogbGV0IHRoZW0gYmUgYXNoYW1lZCB3aGljaCB0cmFuc2dyZXNzIHdpdGhvdXQgY2F1c2UuClNoZXcgbWUgdGh5IHdheXMsIE8gTE9SRDsgdGVhY2ggbWUgdGh5IHBhdGhzLgpMZWFkIG1lIGluIHRoeSB0cnV0aCwgYW5kIHRlYWNoIG1lOiBmb3IgdGhvdSBhcnQgdGhlIEdvZCBvZiBteSBzYWx2YXRpb247IG9uIHRoZWUgZG8gSSB3YWl0IGFsbCB0aGUgZGF5LgpSZW1lbWJlciwgTyBMT1JELCB0aHkgdGVuZGVyIG1lcmNpZXMgYW5kIHRoeSBsb3ZpbmdraW5kbmVzc2VzOyBmb3IgdGhleSBoYXZlIGJlZW4gZXZlciBvZiBvbGQuClJlbWVtYmVyIG5vdCB0aGUgc2lucyBvZiBteSB5b3V0aCwgbm9yIG15IHRyYW5zZ3Jlc3Npb25zOiBhY2NvcmRpbmcgdG8gdGh5IG1lcmN5IHJlbWVtYmVyIHRob3UgbWUgZm9yIHRoeSBnb29kbmVzcycgc2FrZSwgTyBMT1JELgpHb29kIGFuZCB1cHJpZ2h0IGlzIHRoZSBMT1JEOiB0aGVyZWZvcmUgd2lsbCBoZSB0ZWFjaCBzaW5uZXJzIGluIHRoZSB3YXkuClRoZSBtZWVrIHdpbGwgaGUgZ3VpZGUgaW4ganVkZ21lbnQ6IGFuZCB0aGUgbWVlayB3aWxsIGhlIHRlYWNoIGhpcyB3YXkuCkFsbCB0aGUgcGF0aHMgb2YgdGhlIExPUkQgYXJlIG1lcmN5IGFuZCB0cnV0aCB1bnRvIHN1Y2ggYXMga2VlcCBoaXMgY292ZW5hbnQgYW5kIGhpcyB0ZXN0aW1vbmllcy4KRm9yIHRoeSBuYW1lJ3Mgc2FrZSwgTyBMT1JELCBwYXJkb24gbWluZSBpbmlxdWl0eTsgZm9yIGl0IGlzIGdyZWF0LgpXaGF0IG1hbiBpcyBoZSB0aGF0IGZlYXJldGggdGhlIExPUkQ/IGhpbSBzaGFsbCBoZSB0ZWFjaCBpbiB0aGUgd2F5IHRoYXQgaGUgc2hhbGwgY2hvb3NlLgpIaXMgc291bCBzaGFsbCBkd2VsbCBhdCBlYXNlOyBhbmQgaGlzIHNlZWQgc2hhbGwgaW5oZXJpdCB0aGUgZWFydGguClRoZSBzZWNyZXQgb2YgdGhlIExPUkQgaXMgd2l0aCB0aGVtIHRoYXQgZmVhciBoaW07IGFuZCBoZSB3aWxsIHNoZXcgdGhlbSBoaXMgY292ZW5hbnQuCk1pbmUgZXllcyBhcmUgZXZlciB0b3dhcmQgdGhlIExPUkQ7IGZvciBoZSBzaGFsbCBwbHVjayBteSBmZWV0IG91dCBvZiB0aGUgbmV0LgpUdXJuIHRoZWUgdW50byBtZSwgYW5kIGhhdmUgbWVyY3kgdXBvbiBtZTsgZm9yIEkgYW0gZGVzb2xhdGUgYW5kIGFmZmxpY3RlZC4KVGhlIHRyb3VibGVzIG9mIG15IGhlYXJ0IGFyZSBlbmxhcmdlZDogTyBicmluZyB0aG91IG1lIG91dCBvZiBteSBkaXN0cmVzc2VzLgpMb29rIHVwb24gbWluZSBhZmZsaWN0aW9uIGFuZCBteSBwYWluOyBhbmQgZm9yZ2l2ZSBhbGwgbXkgc2lucy4KQ29uc2lkZXIgbWluZSBlbmVtaWVzOyBmb3IgdGhleSBhcmUgbWFueTsgYW5kIHRoZXkgaGF0ZSBtZSB3aXRoIGNydWVsIGhhdHJlZC4KTyBrZWVwIG15IHNvdWwsIGFuZCBkZWxpdmVyIG1lOiBsZXQgbWUgbm90IGJlIGFzaGFtZWQ7IGZvciBJIHB1dCBteSB0cnVzdCBpbiB0aGVlLgpMZXQgaW50ZWdyaXR5IGFuZCB1cHJpZ2h0bmVzcyBwcmVzZXJ2ZSBtZTsgZm9yIEkgd2FpdCBvbiB0aGVlLgpSZWRlZW0gSXNyYWVsLCBPIEdvZCwgb3V0IG9mIGFsbCBoaXMgdHJvdWJsZXMuCkp1ZGdlIG1lLCBPIExPUkQ7IGZvciBJIGhhdmUgd2Fsa2VkIGluIG1pbmUgaW50ZWdyaXR5OiBJIGhhdmUgdHJ1c3RlZCBhbHNvIGluIHRoZSBMT1JEOyB0aGVyZWZvcmUgSSBzaGFsbCBub3Qgc2xpZGUuCkV4YW1pbmUgbWUsIE8gTE9SRCwgYW5kIHByb3ZlIG1lOyB0cnkgbXkgcmVpbnMgYW5kIG15IGhlYXJ0LgpGb3IgdGh5IGxvdmluZ2tpbmRuZXNzIGlzIGJlZm9yZSBtaW5lIGV5ZXM6IGFuZCBJIGhhdmUgd2Fsa2VkIGluIHRoeSB0cnV0aC4KSSBoYXZlIG5vdCBzYXQgd2l0aCB2YWluIHBlcnNvbnMsIG5laXRoZXIgd2lsbCBJIGdvIGluIHdpdGggZGlzc2VtYmxlcnMuCkkgaGF2ZSBoYXRlZCB0aGUgY29uZ3JlZ2F0aW9uIG9mIGV2aWwgZG9lcnM7IGFuZCB3aWxsIG5vdCBzaXQgd2l0aCB0aGUgd2lja2VkLgpJIHdpbGwgd2FzaCBtaW5lIGhhbmRzIGluIGlubm9jZW5jeTogc28gd2lsbCBJIGNvbXBhc3MgdGhpbmUgYWx0YXIsIE8gTE9SRDoKVGhhdCBJIG1heSBwdWJsaXNoIHdpdGggdGhlIHZvaWNlIG9mIHRoYW5rc2dpdmluZywgYW5kIHRlbGwgb2YgYWxsIHRoeSB3b25kcm91cyB3b3Jrcy4KTE9SRCwgSSBoYXZlIGxvdmVkIHRoZSBoYWJpdGF0aW9uIG9mIHRoeSBob3VzZSwgYW5kIHRoZSBwbGFjZSB3aGVyZSB0aGluZSBob25vdXIgZHdlbGxldGguCkdhdGhlciBub3QgbXkgc291bCB3aXRoIHNpbm5lcnMsIG5vciBteSBsaWZlIHdpdGggYmxvb2R5IG1lbjoKSW4gd2hvc2UgaGFuZHMgaXMgbWlzY2hpZWYsIGFuZCB0aGVpciByaWdodCBoYW5kIGlzIGZ1bGwgb2YgYnJpYmVzLgpCdXQgYXMgZm9yIG1lLCBJIHdpbGwgd2FsayBpbiBtaW5lIGludGVncml0eTogcmVkZWVtIG1lLCBhbmQgYmUgbWVyY2lmdWwgdW50byBtZS4KTXkgZm9vdCBzdGFuZGV0aCBpbiBhbiBldmVuIHBsYWNlOiBpbiB0aGUgY29uZ3JlZ2F0aW9ucyB3aWxsIEkgYmxlc3MgdGhlIExPUkQuClRoZSBMT1JEIGlzIG15IGxpZ2h0IGFuZCBteSBzYWx2YXRpb247IHdob20gc2hhbGwgSSBmZWFyPyB0aGUgTE9SRCBpcyB0aGUgc3RyZW5ndGggb2YgbXkgbGlmZTsgb2Ygd2hvbSBzaGFsbCBJIGJlIGFmcmFpZD8KV2hlbiB0aGUgd2lja2VkLCBldmVuIG1pbmUgZW5lbWllcyBhbmQgbXkgZm9lcywgY2FtZSB1cG9uIG1lIHRvIGVhdCB1cCBteSBmbGVzaCwgdGhleSBzdHVtYmxlZCBhbmQgZmVsbC4KVGhvdWdoIGFuIGhvc3Qgc2hvdWxkIGVuY2FtcCBhZ2FpbnN0IG1lLCBteSBoZWFydCBzaGFsbCBub3QgZmVhcjogdGhvdWdoIHdhciBzaG91bGQgcmlzZSBhZ2FpbnN0IG1lLCBpbiB0aGlzIHdpbGwgSSBiZSBjb25maWRlbnQuCk9uZSB0aGluZyBoYXZlIEkgZGVzaXJlZCBvZiB0aGUgTE9SRCwgdGhhdCB3aWxsIEkgc2VlayBhZnRlcjsgdGhhdCBJIG1heSBkd2VsbCBpbiB0aGUgaG91c2Ugb2YgdGhlIExPUkQgYWxsIHRoZSBkYXlzIG9mIG15IGxpZmUsIHRvIGJlaG9sZCB0aGUgYmVhdXR5IG9mIHRoZSBMT1JELCBhbmQgdG8gZW5xdWlyZSBpbiBoaXMgdGVtcGxlLgpGb3IgaW4gdGhlIHRpbWUgb2YgdHJvdWJsZSBoZSBzaGFsbCBoaWRlIG1lIGluIGhpcyBwYXZpbGlvbjogaW4gdGhlIHNlY3JldCBvZiBoaXMgdGFiZXJuYWNsZSBzaGFsbCBoZSBoaWRlIG1lOyBoZSBzaGFsbCBzZXQgbWUgdXAgdXBvbiBhIHJvY2suCkFuZCBub3cgc2hhbGwgbWluZSBoZWFkIGJlIGxpZnRlZCB1cCBhYm92ZSBtaW5lIGVuZW1pZXMgcm91bmQgYWJvdXQgbWU6IHRoZXJlZm9yZSB3aWxsIEkgb2ZmZXIgaW4gaGlzIHRhYmVybmFjbGUgc2FjcmlmaWNlcyBvZiBqb3k7IEkgd2lsbCBzaW5nLCB5ZWEsIEkgd2lsbCBzaW5nIHByYWlzZXMgdW50byB0aGUgTE9SRC4KSGVhciwgTyBMT1JELCB3aGVuIEkgY3J5IHdpdGggbXkgdm9pY2U6IGhhdmUgbWVyY3kgYWxzbyB1cG9uIG1lLCBhbmQgYW5zd2VyIG1lLgpXaGVuIHRob3Ugc2FpZHN0LCBTZWVrIHllIG15IGZhY2U7IG15IGhlYXJ0IHNhaWQgdW50byB0aGVlLCBUaHkgZmFjZSwgTE9SRCwgd2lsbCBJIHNlZWsuCkhpZGUgbm90IHRoeSBmYWNlIGZhciBmcm9tIG1lOyBwdXQgbm90IHRoeSBzZXJ2YW50IGF3YXkgaW4gYW5nZXI6IHRob3UgaGFzdCBiZWVuIG15IGhlbHA7IGxlYXZlIG1lIG5vdCwgbmVpdGhlciBmb3JzYWtlIG1lLCBPIEdvZCBvZiBteSBzYWx2YXRpb24uCldoZW4gbXkgZmF0aGVyIGFuZCBteSBtb3RoZXIgZm9yc2FrZSBtZSwgdGhlbiB0aGUgTE9SRCB3aWxsIHRha2UgbWUgdXAuClRlYWNoIG1lIHRoeSB3YXksIE8gTE9SRCwgYW5kIGxlYWQgbWUgaW4gYSBwbGFpbiBwYXRoLCBiZWNhdXNlIG9mIG1pbmUgZW5lbWllcy4KRGVsaXZlciBtZSBub3Qgb3ZlciB1bnRvIHRoZSB3aWxsIG9mIG1pbmUgZW5lbWllczogZm9yIGZhbHNlIHdpdG5lc3NlcyBhcmUgcmlzZW4gdXAgYWdhaW5zdCBtZSwgYW5kIHN1Y2ggYXMgYnJlYXRoZSBvdXQgY3J1ZWx0eS4KSSBoYWQgZmFpbnRlZCwgdW5sZXNzIEkgaGFkIGJlbGlldmVkIHRvIHNlZSB0aGUgZ29vZG5lc3Mgb2YgdGhlIExPUkQgaW4gdGhlIGxhbmQgb2YgdGhlIGxpdmluZy4KV2FpdCBvbiB0aGUgTE9SRDogYmUgb2YgZ29vZCBjb3VyYWdlLCBhbmQgaGUgc2hhbGwgc3RyZW5ndGhlbiB0aGluZSBoZWFydDogd2FpdCwgSSBzYXksIG9uIHRoZSBMT1JELgpVbnRvIHRoZWUgd2lsbCBJIGNyeSwgTyBMT1JEIG15IHJvY2s7IGJlIG5vdCBzaWxlbnQgdG8gbWU6IGxlc3QsIGlmIHRob3UgYmUgc2lsZW50IHRvIG1lLCBJIGJlY29tZSBsaWtlIHRoZW0gdGhhdCBnbyBkb3duIGludG8gdGhlIHBpdC4KSGVhciB0aGUgdm9pY2Ugb2YgbXkgc3VwcGxpY2F0aW9ucywgd2hlbiBJIGNyeSB1bnRvIHRoZWUsIHdoZW4gSSBsaWZ0IHVwIG15IGhhbmRzIHRvd2FyZCB0aHkgaG9seSBvcmFjbGUuCkRyYXcgbWUgbm90IGF3YXkgd2l0aCB0aGUgd2lja2VkLCBhbmQgd2l0aCB0aGUgd29ya2VycyBvZiBpbmlxdWl0eSwgd2hpY2ggc3BlYWsgcGVhY2UgdG8gdGhlaXIgbmVpZ2hib3VycywgYnV0IG1pc2NoaWVmIGlzIGluIHRoZWlyIGhlYXJ0cy4KR2l2ZSB0aGVtIGFjY29yZGluZyB0byB0aGVpciBkZWVkcywgYW5kIGFjY29yZGluZyB0byB0aGUgd2lja2VkbmVzcyBvZiB0aGVpciBlbmRlYXZvdXJzOiBnaXZlIHRoZW0gYWZ0ZXIgdGhlIHdvcmsgb2YgdGhlaXIgaGFuZHM7IHJlbmRlciB0byB0aGVtIHRoZWlyIGRlc2VydC4KQmVjYXVzZSB0aGV5IHJlZ2FyZCBub3QgdGhlIHdvcmtzIG9mIHRoZSBMT1JELCBub3IgdGhlIG9wZXJhdGlvbiBvZiBoaXMgaGFuZHMsIGhlIHNoYWxsIGRlc3Ryb3kgdGhlbSwgYW5kIG5vdCBidWlsZCB0aGVtIHVwLgpCbGVzc2VkIGJlIHRoZSBMT1JELCBiZWNhdXNlIGhlIGhhdGggaGVhcmQgdGhlIHZvaWNlIG9mIG15IHN1cHBsaWNhdGlvbnMuClRoZSBMT1JEIGlzIG15IHN0cmVuZ3RoIGFuZCBteSBzaGllbGQ7IG15IGhlYXJ0IHRydXN0ZWQgaW4gaGltLCBhbmQgSSBhbSBoZWxwZWQ6IHRoZXJlZm9yZSBteSBoZWFydCBncmVhdGx5IHJlam9pY2V0aDsgYW5kIHdpdGggbXkgc29uZyB3aWxsIEkgcHJhaXNlIGhpbS4KVGhlIExPUkQgaXMgdGhlaXIgc3RyZW5ndGgsIGFuZCBoZSBpcyB0aGUgc2F2aW5nIHN0cmVuZ3RoIG9mIGhpcyBhbm9pbnRlZC4KU2F2ZSB0aHkgcGVvcGxlLCBhbmQgYmxlc3MgdGhpbmUgaW5oZXJpdGFuY2U6IGZlZWQgdGhlbSBhbHNvLCBhbmQgbGlmdCB0aGVtIHVwIGZvciBldmVyLgpHaXZlIHVudG8gdGhlIExPUkQsIE8geWUgbWlnaHR5LCBnaXZlIHVudG8gdGhlIExPUkQgZ2xvcnkgYW5kIHN0cmVuZ3RoLgpHaXZlIHVudG8gdGhlIExPUkQgdGhlIGdsb3J5IGR1ZSB1bnRvIGhpcyBuYW1lOyB3b3JzaGlwIHRoZSBMT1JEIGluIHRoZSBiZWF1dHkgb2YgaG9saW5lc3MuClRoZSB2b2ljZSBvZiB0aGUgTE9SRCBpcyB1cG9uIHRoZSB3YXRlcnM6IHRoZSBHb2Qgb2YgZ2xvcnkgdGh1bmRlcmV0aDogdGhlIExPUkQgaXMgdXBvbiBtYW55IHdhdGVycy4KVGhlIHZvaWNlIG9mIHRoZSBMT1JEIGlzIHBvd2VyZnVsOyB0aGUgdm9pY2Ugb2YgdGhlIExPUkQgaXMgZnVsbCBvZiBtYWplc3R5LgpUaGUgdm9pY2Ugb2YgdGhlIExPUkQgYnJlYWtldGggdGhlIGNlZGFyczsgeWVhLCB0aGUgTE9SRCBicmVha2V0aCB0aGUgY2VkYXJzIG9mIExlYmFub24uCkhlIG1ha2V0aCB0aGVtIGFsc28gdG8gc2tpcCBsaWtlIGEgY2FsZjsgTGViYW5vbiBhbmQgU2lyaW9uIGxpa2UgYSB5b3VuZyB1bmljb3JuLgpUaGUgdm9pY2Ugb2YgdGhlIExPUkQgZGl2aWRldGggdGhlIGZsYW1lcyBvZiBmaXJlLgpUaGUgdm9pY2Ugb2YgdGhlIExPUkQgc2hha2V0aCB0aGUgd2lsZGVybmVzczsgdGhlIExPUkQgc2hha2V0aCB0aGUgd2lsZGVybmVzcyBvZiBLYWRlc2guClRoZSB2b2ljZSBvZiB0aGUgTE9SRCBtYWtldGggdGhlIGhpbmRzIHRvIGNhbHZlLCBhbmQgZGlzY292ZXJldGggdGhlIGZvcmVzdHM6IGFuZCBpbiBoaXMgdGVtcGxlIGRvdGggZXZlcnkgb25lIHNwZWFrIG9mIGhpcyBnbG9yeS4KVGhlIExPUkQgc2l0dGV0aCB1cG9uIHRoZSBmbG9vZDsgeWVhLCB0aGUgTE9SRCBzaXR0ZXRoIEtpbmcgZm9yIGV2ZXIuClRoZSBMT1JEIHdpbGwgZ2l2ZSBzdHJlbmd0aCB1bnRvIGhpcyBwZW9wbGU7IHRoZSBMT1JEIHdpbGwgYmxlc3MgaGlzIHBlb3BsZSB3aXRoIHBlYWNlLgpJIHdpbGwgZXh0b2wgdGhlZSwgTyBMT1JEOyBmb3IgdGhvdSBoYXN0IGxpZnRlZCBtZSB1cCwgYW5kIGhhc3Qgbm90IG1hZGUgbXkgZm9lcyB0byByZWpvaWNlIG92ZXIgbWUuCk8gTE9SRCBteSBHb2QsIEkgY3JpZWQgdW50byB0aGVlLCBhbmQgdGhvdSBoYXN0IGhlYWxlZCBtZS4KTyBMT1JELCB0aG91IGhhc3QgYnJvdWdodCB1cCBteSBzb3VsIGZyb20gdGhlIGdyYXZlOiB0aG91IGhhc3Qga2VwdCBtZSBhbGl2ZSwgdGhhdCBJIHNob3VsZCBub3QgZ28gZG93biB0byB0aGUgcGl0LgpTaW5nIHVudG8gdGhlIExPUkQsIE8geWUgc2FpbnRzIG9mIGhpcywgYW5kIGdpdmUgdGhhbmtzIGF0IHRoZSByZW1lbWJyYW5jZSBvZiBoaXMgaG9saW5lc3MuCkZvciBoaXMgYW5nZXIgZW5kdXJldGggYnV0IGEgbW9tZW50OyBpbiBoaXMgZmF2b3VyIGlzIGxpZmU6IHdlZXBpbmcgbWF5IGVuZHVyZSBmb3IgYSBuaWdodCwgYnV0IGpveSBjb21ldGggaW4gdGhlIG1vcm5pbmcuCkFuZCBpbiBteSBwcm9zcGVyaXR5IEkgc2FpZCwgSSBzaGFsbCBuZXZlciBiZSBtb3ZlZC4KTE9SRCwgYnkgdGh5IGZhdm91ciB0aG91IGhhc3QgbWFkZSBteSBtb3VudGFpbiB0byBzdGFuZCBzdHJvbmc6IHRob3UgZGlkc3QgaGlkZSB0aHkgZmFjZSwgYW5kIEkgd2FzIHRyb3VibGVkLgpJIGNyaWVkIHRvIHRoZWUsIE8gTE9SRDsgYW5kIHVudG8gdGhlIExPUkQgSSBtYWRlIHN1cHBsaWNhdGlvbi4KV2hhdCBwcm9maXQgaXMgdGhlcmUgaW4gbXkgYmxvb2QsIHdoZW4gSSBnbyBkb3duIHRvIHRoZSBwaXQ/IFNoYWxsIHRoZSBkdXN0IHByYWlzZSB0aGVlPyBzaGFsbCBpdCBkZWNsYXJlIHRoeSB0cnV0aD8KSGVhciwgTyBMT1JELCBhbmQgaGF2ZSBtZXJjeSB1cG9uIG1lOiBMT1JELCBiZSB0aG91IG15IGhlbHBlci4KVGhvdSBoYXN0IHR1cm5lZCBmb3IgbWUgbXkgbW91cm5pbmcgaW50byBkYW5jaW5nOiB0aG91IGhhc3QgcHV0IG9mZiBteSBzYWNrY2xvdGgsIGFuZCBnaXJkZWQgbWUgd2l0aCBnbGFkbmVzczsKVG8gdGhlIGVuZCB0aGF0IG15IGdsb3J5IG1heSBzaW5nIHByYWlzZSB0byB0aGVlLCBhbmQgbm90IGJlIHNpbGVudC4gTyBMT1JEIG15IEdvZCwgSSB3aWxsIGdpdmUgdGhhbmtzIHVudG8gdGhlZSBmb3IgZXZlci4KSW4gdGhlZSwgTyBMT1JELCBkbyBJIHB1dCBteSB0cnVzdDsgbGV0IG1lIG5ldmVyIGJlIGFzaGFtZWQ6IGRlbGl2ZXIgbWUgaW4gdGh5IHJpZ2h0ZW91c25lc3MuCkJvdyBkb3duIHRoaW5lIGVhciB0byBtZTsgZGVsaXZlciBtZSBzcGVlZGlseTogYmUgdGhvdSBteSBzdHJvbmcgcm9jaywgZm9yIGFuIGhvdXNlIG9mIGRlZmVuY2UgdG8gc2F2ZSBtZS4KRm9yIHRob3UgYXJ0IG15IHJvY2sgYW5kIG15IGZvcnRyZXNzOyB0aGVyZWZvcmUgZm9yIHRoeSBuYW1lJ3Mgc2FrZSBsZWFkIG1lLCBhbmQgZ3VpZGUgbWUuClB1bGwgbWUgb3V0IG9mIHRoZSBuZXQgdGhhdCB0aGV5IGhhdmUgbGFpZCBwcml2aWx5IGZvciBtZTogZm9yIHRob3UgYXJ0IG15IHN0cmVuZ3RoLgpJbnRvIHRoaW5lIGhhbmQgSSBjb21taXQgbXkgc3Bpcml0OiB0aG91IGhhc3QgcmVkZWVtZWQgbWUsIE8gTE9SRCBHb2Qgb2YgdHJ1dGguCkkgaGF2ZSBoYXRlZCB0aGVtIHRoYXQgcmVnYXJkIGx5aW5nIHZhbml0aWVzOiBidXQgSSB0cnVzdCBpbiB0aGUgTE9SRC4KSSB3aWxsIGJlIGdsYWQgYW5kIHJlam9pY2UgaW4gdGh5IG1lcmN5OiBmb3IgdGhvdSBoYXN0IGNvbnNpZGVyZWQgbXkgdHJvdWJsZTsgdGhvdSBoYXN0IGtub3duIG15IHNvdWwgaW4gYWR2ZXJzaXRpZXM7CkFuZCBoYXN0IG5vdCBzaHV0IG1lIHVwIGludG8gdGhlIGhhbmQgb2YgdGhlIGVuZW15OiB0aG91IGhhc3Qgc2V0IG15IGZlZXQgaW4gYSBsYXJnZSByb29tLgpIYXZlIG1lcmN5IHVwb24gbWUsIE8gTE9SRCwgZm9yIEkgYW0gaW4gdHJvdWJsZTogbWluZSBleWUgaXMgY29uc3VtZWQgd2l0aCBncmllZiwgeWVhLCBteSBzb3VsIGFuZCBteSBiZWxseS4KRm9yIG15IGxpZmUgaXMgc3BlbnQgd2l0aCBncmllZiwgYW5kIG15IHllYXJzIHdpdGggc2lnaGluZzogbXkgc3RyZW5ndGggZmFpbGV0aCBiZWNhdXNlIG9mIG1pbmUgaW5pcXVpdHksIGFuZCBteSBib25lcyBhcmUgY29uc3VtZWQuCkkgd2FzIGEgcmVwcm9hY2ggYW1vbmcgYWxsIG1pbmUgZW5lbWllcywgYnV0IGVzcGVjaWFsbHkgYW1vbmcgbXkgbmVpZ2hib3VycywgYW5kIGEgZmVhciB0byBtaW5lIGFjcXVhaW50YW5jZTogdGhleSB0aGF0IGRpZCBzZWUgbWUgd2l0aG91dCBmbGVkIGZyb20gbWUuCkkgYW0gZm9yZ290dGVuIGFzIGEgZGVhZCBtYW4gb3V0IG9mIG1pbmQ6IEkgYW0gbGlrZSBhIGJyb2tlbiB2ZXNzZWwuCkZvciBJIGhhdmUgaGVhcmQgdGhlIHNsYW5kZXIgb2YgbWFueTogZmVhciB3YXMgb24gZXZlcnkgc2lkZTogd2hpbGUgdGhleSB0b29rIGNvdW5zZWwgdG9nZXRoZXIgYWdhaW5zdCBtZSwgdGhleSBkZXZpc2VkIHRvIHRha2UgYXdheSBteSBsaWZlLgpCdXQgSSB0cnVzdGVkIGluIHRoZWUsIE8gTE9SRDogSSBzYWlkLCBUaG91IGFydCBteSBHb2QuCk15IHRpbWVzIGFyZSBpbiB0aHkgaGFuZDogZGVsaXZlciBtZSBmcm9tIHRoZSBoYW5kIG9mIG1pbmUgZW5lbWllcywgYW5kIGZyb20gdGhlbSB0aGF0IHBlcnNlY3V0ZSBtZS4KTWFrZSB0aHkgZmFjZSB0byBzaGluZSB1cG9uIHRoeSBzZXJ2YW50OiBzYXZlIG1lIGZvciB0aHkgbWVyY2llcycgc2FrZS4KTGV0IG1lIG5vdCBiZSBhc2hhbWVkLCBPIExPUkQ7IGZvciBJIGhhdmUgY2FsbGVkIHVwb24gdGhlZTogbGV0IHRoZSB3aWNrZWQgYmUgYXNoYW1lZCwgYW5kIGxldCB0aGVtIGJlIHNpbGVudCBpbiB0aGUgZ3JhdmUuCkxldCB0aGUgbHlpbmcgbGlwcyBiZSBwdXQgdG8gc2lsZW5jZTsgd2hpY2ggc3BlYWsgZ3JpZXZvdXMgdGhpbmdzIHByb3VkbHkgYW5kIGNvbnRlbXB0dW91c2x5IGFnYWluc3QgdGhlIHJpZ2h0ZW91cy4KT2ggaG93IGdyZWF0IGlzIHRoeSBnb29kbmVzcywgd2hpY2ggdGhvdSBoYXN0IGxhaWQgdXAgZm9yIHRoZW0gdGhhdCBmZWFyIHRoZWU7IHdoaWNoIHRob3UgaGFzdCB3cm91Z2h0IGZvciB0aGVtIHRoYXQgdHJ1c3QgaW4gdGhlZSBiZWZvcmUgdGhlIHNvbnMgb2YgbWVuIQpUaG91IHNoYWx0IGhpZGUgdGhlbSBpbiB0aGUgc2VjcmV0IG9mIHRoeSBwcmVzZW5jZSBmcm9tIHRoZSBwcmlkZSBvZiBtYW46IHRob3Ugc2hhbHQga2VlcCB0aGVtIHNlY3JldGx5IGluIGEgcGF2aWxpb24gZnJvbSB0aGUgc3RyaWZlIG9mIHRvbmd1ZXMuCkJsZXNzZWQgYmUgdGhlIExPUkQ6IGZvciBoZSBoYXRoIHNoZXdlZCBtZSBoaXMgbWFydmVsbG91cyBraW5kbmVzcyBpbiBhIHN0cm9uZyBjaXR5LgpGb3IgSSBzYWlkIGluIG15IGhhc3RlLCBJIGFtIGN1dCBvZmYgZnJvbSBiZWZvcmUgdGhpbmUgZXllczogbmV2ZXJ0aGVsZXNzIHRob3UgaGVhcmRlc3QgdGhlIHZvaWNlIG9mIG15IHN1cHBsaWNhdGlvbnMgd2hlbiBJIGNyaWVkIHVudG8gdGhlZS4KTyBsb3ZlIHRoZSBMT1JELCBhbGwgeWUgaGlzIHNhaW50czogZm9yIHRoZSBMT1JEIHByZXNlcnZldGggdGhlIGZhaXRoZnVsLCBhbmQgcGxlbnRpZnVsbHkgcmV3YXJkZXRoIHRoZSBwcm91ZCBkb2VyLgpCZSBvZiBnb29kIGNvdXJhZ2UsIGFuZCBoZSBzaGFsbCBzdHJlbmd0aGVuIHlvdXIgaGVhcnQsIGFsbCB5ZSB0aGF0IGhvcGUgaW4gdGhlIExPUkQuCkJsZXNzZWQgaXMgaGUgd2hvc2UgdHJhbnNncmVzc2lvbiBpcyBmb3JnaXZlbiwgd2hvc2Ugc2luIGlzIGNvdmVyZWQuCkJsZXNzZWQgaXMgdGhlIG1hbiB1bnRvIHdob20gdGhlIExPUkQgaW1wdXRldGggbm90IGluaXF1aXR5LCBhbmQgaW4gd2hvc2Ugc3Bpcml0IHRoZXJlIGlzIG5vIGd1aWxlLgpXaGVuIEkga2VwdCBzaWxlbmNlLCBteSBib25lcyB3YXhlZCBvbGQgdGhyb3VnaCBteSByb2FyaW5nIGFsbCB0aGUgZGF5IGxvbmcuCkZvciBkYXkgYW5kIG5pZ2h0IHRoeSBoYW5kIHdhcyBoZWF2eSB1cG9uIG1lOiBteSBtb2lzdHVyZSBpcyB0dXJuZWQgaW50byB0aGUgZHJvdWdodCBvZiBzdW1tZXIuIFNlbGFoLgpJIGFja25vd2xlZGdlIG15IHNpbiB1bnRvIHRoZWUsIGFuZCBtaW5lIGluaXF1aXR5IGhhdmUgSSBub3QgaGlkLiBJIHNhaWQsIEkgd2lsbCBjb25mZXNzIG15IHRyYW5zZ3Jlc3Npb25zIHVudG8gdGhlIExPUkQ7IGFuZCB0aG91IGZvcmdhdmVzdCB0aGUgaW5pcXVpdHkgb2YgbXkgc2luLiBTZWxhaC4KRm9yIHRoaXMgc2hhbGwgZXZlcnkgb25lIHRoYXQgaXMgZ29kbHkgcHJheSB1bnRvIHRoZWUgaW4gYSB0aW1lIHdoZW4gdGhvdSBtYXllc3QgYmUgZm91bmQ6IHN1cmVseSBpbiB0aGUgZmxvb2RzIG9mIGdyZWF0IHdhdGVycyB0aGV5IHNoYWxsIG5vdCBjb21lIG5pZ2ggdW50byBoaW0uClRob3UgYXJ0IG15IGhpZGluZyBwbGFjZTsgdGhvdSBzaGFsdCBwcmVzZXJ2ZSBtZSBmcm9tIHRyb3VibGU7IHRob3Ugc2hhbHQgY29tcGFzcyBtZSBhYm91dCB3aXRoIHNvbmdzIG9mIGRlbGl2ZXJhbmNlLiBTZWxhaC4KSSB3aWxsIGluc3RydWN0IHRoZWUgYW5kIHRlYWNoIHRoZWUgaW4gdGhlIHdheSB3aGljaCB0aG91IHNoYWx0IGdvOiBJIHdpbGwgZ3VpZGUgdGhlZSB3aXRoIG1pbmUgZXllLgpCZSB5ZSBub3QgYXMgdGhlIGhvcnNlLCBvciBhcyB0aGUgbXVsZSwgd2hpY2ggaGF2ZSBubyB1bmRlcnN0YW5kaW5nOiB3aG9zZSBtb3V0aCBtdXN0IGJlIGhlbGQgaW4gd2l0aCBiaXQgYW5kIGJyaWRsZSwgbGVzdCB0aGV5IGNvbWUgbmVhciB1bnRvIHRoZWUuCk1hbnkgc29ycm93cyBzaGFsbCBiZSB0byB0aGUgd2lja2VkOiBidXQgaGUgdGhhdCB0cnVzdGV0aCBpbiB0aGUgTE9SRCwgbWVyY3kgc2hhbGwgY29tcGFzcyBoaW0gYWJvdXQuCkJlIGdsYWQgaW4gdGhlIExPUkQsIGFuZCByZWpvaWNlLCB5ZSByaWdodGVvdXM6IGFuZCBzaG91dCBmb3Igam95LCBhbGwgeWUgdGhhdCBhcmUgdXByaWdodCBpbiBoZWFydC4KUmVqb2ljZSBpbiB0aGUgTE9SRCwgTyB5ZSByaWdodGVvdXM6IGZvciBwcmFpc2UgaXMgY29tZWx5IGZvciB0aGUgdXByaWdodC4KUHJhaXNlIHRoZSBMT1JEIHdpdGggaGFycDogc2luZyB1bnRvIGhpbSB3aXRoIHRoZSBwc2FsdGVyeSBhbmQgYW4gaW5zdHJ1bWVudCBvZiB0ZW4gc3RyaW5ncy4KU2luZyB1bnRvIGhpbSBhIG5ldyBzb25nOyBwbGF5IHNraWxmdWxseSB3aXRoIGEgbG91ZCBub2lzZS4KRm9yIHRoZSB3b3JkIG9mIHRoZSBMT1JEIGlzIHJpZ2h0OyBhbmQgYWxsIGhpcyB3b3JrcyBhcmUgZG9uZSBpbiB0cnV0aC4KSGUgbG92ZXRoIHJpZ2h0ZW91c25lc3MgYW5kIGp1ZGdtZW50OiB0aGUgZWFydGggaXMgZnVsbCBvZiB0aGUgZ29vZG5lc3Mgb2YgdGhlIExPUkQuCkJ5IHRoZSB3b3JkIG9mIHRoZSBMT1JEIHdlcmUgdGhlIGhlYXZlbnMgbWFkZTsgYW5kIGFsbCB0aGUgaG9zdCBvZiB0aGVtIGJ5IHRoZSBicmVhdGggb2YgaGlzIG1vdXRoLgpIZSBnYXRoZXJldGggdGhlIHdhdGVycyBvZiB0aGUgc2VhIHRvZ2V0aGVyIGFzIGFuIGhlYXA6IGhlIGxheWV0aCB1cCB0aGUgZGVwdGggaW4gc3RvcmVob3VzZXMuCkxldCBhbGwgdGhlIGVhcnRoIGZlYXIgdGhlIExPUkQ6IGxldCBhbGwgdGhlIGluaGFiaXRhbnRzIG9mIHRoZSB3b3JsZCBzdGFuZCBpbiBhd2Ugb2YgaGltLgpGb3IgaGUgc3Bha2UsIGFuZCBpdCB3YXMgZG9uZTsgaGUgY29tbWFuZGVkLCBhbmQgaXQgc3Rvb2QgZmFzdC4KVGhlIExPUkQgYnJpbmdldGggdGhlIGNvdW5zZWwgb2YgdGhlIGhlYXRoZW4gdG8gbm91Z2h0OiBoZSBtYWtldGggdGhlIGRldmljZXMgb2YgdGhlIHBlb3BsZSBvZiBub25lIGVmZmVjdC4KVGhlIGNvdW5zZWwgb2YgdGhlIExPUkQgc3RhbmRldGggZm9yIGV2ZXIsIHRoZSB0aG91Z2h0cyBvZiBoaXMgaGVhcnQgdG8gYWxsIGdlbmVyYXRpb25zLgpCbGVzc2VkIGlzIHRoZSBuYXRpb24gd2hvc2UgR29kIGlzIHRoZSBMT1JEOyBhbmQgdGhlIHBlb3BsZSB3aG9tIGhlIGhhdGggY2hvc2VuIGZvciBoaXMgb3duIGluaGVyaXRhbmNlLgpUaGUgTE9SRCBsb29rZXRoIGZyb20gaGVhdmVuOyBoZSBiZWhvbGRldGggYWxsIHRoZSBzb25zIG9mIG1lbi4KRnJvbSB0aGUgcGxhY2Ugb2YgaGlzIGhhYml0YXRpb24gaGUgbG9va2V0aCB1cG9uIGFsbCB0aGUgaW5oYWJpdGFudHMgb2YgdGhlIGVhcnRoLgpIZSBmYXNoaW9uZXRoIHRoZWlyIGhlYXJ0cyBhbGlrZTsgaGUgY29uc2lkZXJldGggYWxsIHRoZWlyIHdvcmtzLgpUaGVyZSBpcyBubyBraW5nIHNhdmVkIGJ5IHRoZSBtdWx0aXR1ZGUgb2YgYW4gaG9zdDogYSBtaWdodHkgbWFuIGlzIG5vdCBkZWxpdmVyZWQgYnkgbXVjaCBzdHJlbmd0aC4KQW4gaG9yc2UgaXMgYSB2YWluIHRoaW5nIGZvciBzYWZldHk6IG5laXRoZXIgc2hhbGwgaGUgZGVsaXZlciBhbnkgYnkgaGlzIGdyZWF0IHN0cmVuZ3RoLgpCZWhvbGQsIHRoZSBleWUgb2YgdGhlIExPUkQgaXMgdXBvbiB0aGVtIHRoYXQgZmVhciBoaW0sIHVwb24gdGhlbSB0aGF0IGhvcGUgaW4gaGlzIG1lcmN5OwpUbyBkZWxpdmVyIHRoZWlyIHNvdWwgZnJvbSBkZWF0aCwgYW5kIHRvIGtlZXAgdGhlbSBhbGl2ZSBpbiBmYW1pbmUuCk91ciBzb3VsIHdhaXRldGggZm9yIHRoZSBMT1JEOiBoZSBpcyBvdXIgaGVscCBhbmQgb3VyIHNoaWVsZC4KRm9yIG91ciBoZWFydCBzaGFsbCByZWpvaWNlIGluIGhpbSwgYmVjYXVzZSB3ZSBoYXZlIHRydXN0ZWQgaW4gaGlzIGhvbHkgbmFtZS4KTGV0IHRoeSBtZXJjeSwgTyBMT1JELCBiZSB1cG9uIHVzLCBhY2NvcmRpbmcgYXMgd2UgaG9wZSBpbiB0aGVlLgpJIHdpbGwgYmxlc3MgdGhlIExPUkQgYXQgYWxsIHRpbWVzOiBoaXMgcHJhaXNlIHNoYWxsIGNvbnRpbnVhbGx5IGJlIGluIG15IG1vdXRoLgpNeSBzb3VsIHNoYWxsIG1ha2UgaGVyIGJvYXN0IGluIHRoZSBMT1JEOiB0aGUgaHVtYmxlIHNoYWxsIGhlYXIgdGhlcmVvZiwgYW5kIGJlIGdsYWQuCk8gbWFnbmlmeSB0aGUgTE9SRCB3aXRoIG1lLCBhbmQgbGV0IHVzIGV4YWx0IGhpcyBuYW1lIHRvZ2V0aGVyLgpJIHNvdWdodCB0aGUgTE9SRCwgYW5kIGhlIGhlYXJkIG1lLCBhbmQgZGVsaXZlcmVkIG1lIGZyb20gYWxsIG15IGZlYXJzLgpUaGV5IGxvb2tlZCB1bnRvIGhpbSwgYW5kIHdlcmUgbGlnaHRlbmVkOiBhbmQgdGhlaXIgZmFjZXMgd2VyZSBub3QgYXNoYW1lZC4KVGhpcyBwb29yIG1hbiBjcmllZCwgYW5kIHRoZSBMT1JEIGhlYXJkIGhpbSwgYW5kIHNhdmVkIGhpbSBvdXQgb2YgYWxsIGhpcyB0cm91Ymxlcy4KVGhlIGFuZ2VsIG9mIHRoZSBMT1JEIGVuY2FtcGV0aCByb3VuZCBhYm91dCB0aGVtIHRoYXQgZmVhciBoaW0sIGFuZCBkZWxpdmVyZXRoIHRoZW0uCk8gdGFzdGUgYW5kIHNlZSB0aGF0IHRoZSBMT1JEIGlzIGdvb2Q6IGJsZXNzZWQgaXMgdGhlIG1hbiB0aGF0IHRydXN0ZXRoIGluIGhpbS4KTyBmZWFyIHRoZSBMT1JELCB5ZSBoaXMgc2FpbnRzOiBmb3IgdGhlcmUgaXMgbm8gd2FudCB0byB0aGVtIHRoYXQgZmVhciBoaW0uClRoZSB5b3VuZyBsaW9ucyBkbyBsYWNrLCBhbmQgc3VmZmVyIGh1bmdlcjogYnV0IHRoZXkgdGhhdCBzZWVrIHRoZSBMT1JEIHNoYWxsIG5vdCB3YW50IGFueSBnb29kIHRoaW5nLgpDb21lLCB5ZSBjaGlsZHJlbiwgaGVhcmtlbiB1bnRvIG1lOiBJIHdpbGwgdGVhY2ggeW91IHRoZSBmZWFyIG9mIHRoZSBMT1JELgpXaGF0IG1hbiBpcyBoZSB0aGF0IGRlc2lyZXRoIGxpZmUsIGFuZCBsb3ZldGggbWFueSBkYXlzLCB0aGF0IGhlIG1heSBzZWUgZ29vZD8KS2VlcCB0aHkgdG9uZ3VlIGZyb20gZXZpbCwgYW5kIHRoeSBsaXBzIGZyb20gc3BlYWtpbmcgZ3VpbGUuCkRlcGFydCBmcm9tIGV2aWwsIGFuZCBkbyBnb29kOyBzZWVrIHBlYWNlLCBhbmQgcHVyc3VlIGl0LgpUaGUgZXllcyBvZiB0aGUgTE9SRCBhcmUgdXBvbiB0aGUgcmlnaHRlb3VzLCBhbmQgaGlzIGVhcnMgYXJlIG9wZW4gdW50byB0aGVpciBjcnkuClRoZSBmYWNlIG9mIHRoZSBMT1JEIGlzIGFnYWluc3QgdGhlbSB0aGF0IGRvIGV2aWwsIHRvIGN1dCBvZmYgdGhlIHJlbWVtYnJhbmNlIG9mIHRoZW0gZnJvbSB0aGUgZWFydGguClRoZSByaWdodGVvdXMgY3J5LCBhbmQgdGhlIExPUkQgaGVhcmV0aCwgYW5kIGRlbGl2ZXJldGggdGhlbSBvdXQgb2YgYWxsIHRoZWlyIHRyb3VibGVzLgpUaGUgTE9SRCBpcyBuaWdoIHVudG8gdGhlbSB0aGF0IGFyZSBvZiBhIGJyb2tlbiBoZWFydDsgYW5kIHNhdmV0aCBzdWNoIGFzIGJlIG9mIGEgY29udHJpdGUgc3Bpcml0LgpNYW55IGFyZSB0aGUgYWZmbGljdGlvbnMgb2YgdGhlIHJpZ2h0ZW91czogYnV0IHRoZSBMT1JEIGRlbGl2ZXJldGggaGltIG91dCBvZiB0aGVtIGFsbC4KSGUga2VlcGV0aCBhbGwgaGlzIGJvbmVzOiBub3Qgb25lIG9mIHRoZW0gaXMgYnJva2VuLgpFdmlsIHNoYWxsIHNsYXkgdGhlIHdpY2tlZDogYW5kIHRoZXkgdGhhdCBoYXRlIHRoZSByaWdodGVvdXMgc2hhbGwgYmUgZGVzb2xhdGUuClRoZSBMT1JEIHJlZGVlbWV0aCB0aGUgc291bCBvZiBoaXMgc2VydmFudHM6IGFuZCBub25lIG9mIHRoZW0gdGhhdCB0cnVzdCBpbiBoaW0gc2hhbGwgYmUgZGVzb2xhdGUuClBsZWFkIG15IGNhdXNlLCBPIExPUkQsIHdpdGggdGhlbSB0aGF0IHN0cml2ZSB3aXRoIG1lOiBmaWdodCBhZ2FpbnN0IHRoZW0gdGhhdCBmaWdodCBhZ2FpbnN0IG1lLgpUYWtlIGhvbGQgb2Ygc2hpZWxkIGFuZCBidWNrbGVyLCBhbmQgc3RhbmQgdXAgZm9yIG1pbmUgaGVscC4KRHJhdyBvdXQgYWxzbyB0aGUgc3BlYXIsIGFuZCBzdG9wIHRoZSB3YXkgYWdhaW5zdCB0aGVtIHRoYXQgcGVyc2VjdXRlIG1lOiBzYXkgdW50byBteSBzb3VsLCBJIGFtIHRoeSBzYWx2YXRpb24uCkxldCB0aGVtIGJlIGNvbmZvdW5kZWQgYW5kIHB1dCB0byBzaGFtZSB0aGF0IHNlZWsgYWZ0ZXIgbXkgc291bDogbGV0IHRoZW0gYmUgdHVybmVkIGJhY2sgYW5kIGJyb3VnaHQgdG8gY29uZnVzaW9uIHRoYXQgZGV2aXNlIG15IGh1cnQuCkxldCB0aGVtIGJlIGFzIGNoYWZmIGJlZm9yZSB0aGUgd2luZDogYW5kIGxldCB0aGUgYW5nZWwgb2YgdGhlIExPUkQgY2hhc2UgdGhlbS4KTGV0IHRoZWlyIHdheSBiZSBkYXJrIGFuZCBzbGlwcGVyeTogYW5kIGxldCB0aGUgYW5nZWwgb2YgdGhlIExPUkQgcGVyc2VjdXRlIHRoZW0uCkZvciB3aXRob3V0IGNhdXNlIGhhdmUgdGhleSBoaWQgZm9yIG1lIHRoZWlyIG5ldCBpbiBhIHBpdCwgd2hpY2ggd2l0aG91dCBjYXVzZSB0aGV5IGhhdmUgZGlnZ2VkIGZvciBteSBzb3VsLgpMZXQgZGVzdHJ1Y3Rpb24gY29tZSB1cG9uIGhpbSBhdCB1bmF3YXJlczsgYW5kIGxldCBoaXMgbmV0IHRoYXQgaGUgaGF0aCBoaWQgY2F0Y2ggaGltc2VsZjogaW50byB0aGF0IHZlcnkgZGVzdHJ1Y3Rpb24gbGV0IGhpbSBmYWxsLgpBbmQgbXkgc291bCBzaGFsbCBiZSBqb3lmdWwgaW4gdGhlIExPUkQ6IGl0IHNoYWxsIHJlam9pY2UgaW4gaGlzIHNhbHZhdGlvbi4KQWxsIG15IGJvbmVzIHNoYWxsIHNheSwgTE9SRCwgd2hvIGlzIGxpa2UgdW50byB0aGVlLCB3aGljaCBkZWxpdmVyZXN0IHRoZSBwb29yIGZyb20gaGltIHRoYXQgaXMgdG9vIHN0cm9uZyBmb3IgaGltLCB5ZWEsIHRoZSBwb29yIGFuZCB0aGUgbmVlZHkgZnJvbSBoaW0gdGhhdCBzcG9pbGV0aCBoaW0/CkZhbHNlIHdpdG5lc3NlcyBkaWQgcmlzZSB1cDsgdGhleSBsYWlkIHRvIG15IGNoYXJnZSB0aGluZ3MgdGhhdCBJIGtuZXcgbm90LgpUaGV5IHJld2FyZGVkIG1lIGV2aWwgZm9yIGdvb2QgdG8gdGhlIHNwb2lsaW5nIG9mIG15IHNvdWwuCkJ1dCBhcyBmb3IgbWUsIHdoZW4gdGhleSB3ZXJlIHNpY2ssIG15IGNsb3RoaW5nIHdhcyBzYWNrY2xvdGg6IEkgaHVtYmxlZCBteSBzb3VsIHdpdGggZmFzdGluZzsgYW5kIG15IHByYXllciByZXR1cm5lZCBpbnRvIG1pbmUgb3duIGJvc29tLgpJIGJlaGF2ZWQgbXlzZWxmIGFzIHRob3VnaCBoZSBoYWQgYmVlbiBteSBmcmllbmQgb3IgYnJvdGhlcjogSSBib3dlZCBkb3duIGhlYXZpbHksIGFzIG9uZSB0aGF0IG1vdXJuZXRoIGZvciBoaXMgbW90aGVyLgpCdXQgaW4gbWluZSBhZHZlcnNpdHkgdGhleSByZWpvaWNlZCwgYW5kIGdhdGhlcmVkIHRoZW1zZWx2ZXMgdG9nZXRoZXI6IHllYSwgdGhlIGFiamVjdHMgZ2F0aGVyZWQgdGhlbXNlbHZlcyB0b2dldGhlciBhZ2FpbnN0IG1lLCBhbmQgSSBrbmV3IGl0IG5vdDsgdGhleSBkaWQgdGVhciBtZSwgYW5kIGNlYXNlZCBub3Q6CldpdGggaHlwb2NyaXRpY2FsIG1vY2tlcnMgaW4gZmVhc3RzLCB0aGV5IGduYXNoZWQgdXBvbiBtZSB3aXRoIHRoZWlyIHRlZXRoLgpMb3JkLCBob3cgbG9uZyB3aWx0IHRob3UgbG9vayBvbj8gcmVzY3VlIG15IHNvdWwgZnJvbSB0aGVpciBkZXN0cnVjdGlvbnMsIG15IGRhcmxpbmcgZnJvbSB0aGUgbGlvbnMuCkkgd2lsbCBnaXZlIHRoZWUgdGhhbmtzIGluIHRoZSBncmVhdCBjb25ncmVnYXRpb246IEkgd2lsbCBwcmFpc2UgdGhlZSBhbW9uZyBtdWNoIHBlb3BsZS4KTGV0IG5vdCB0aGVtIHRoYXQgYXJlIG1pbmUgZW5lbWllcyB3cm9uZ2Z1bGx5IHJlam9pY2Ugb3ZlciBtZTogbmVpdGhlciBsZXQgdGhlbSB3aW5rIHdpdGggdGhlIGV5ZSB0aGF0IGhhdGUgbWUgd2l0aG91dCBhIGNhdXNlLgpGb3IgdGhleSBzcGVhayBub3QgcGVhY2U6IGJ1dCB0aGV5IGRldmlzZSBkZWNlaXRmdWwgbWF0dGVycyBhZ2FpbnN0IHRoZW0gdGhhdCBhcmUgcXVpZXQgaW4gdGhlIGxhbmQuClllYSwgdGhleSBvcGVuZWQgdGhlaXIgbW91dGggd2lkZSBhZ2FpbnN0IG1lLCBhbmQgc2FpZCwgQWhhLCBhaGEsIG91ciBleWUgaGF0aCBzZWVuIGl0LgpUaGlzIHRob3UgaGFzdCBzZWVuLCBPIExPUkQ6IGtlZXAgbm90IHNpbGVuY2U6IE8gTG9yZCwgYmUgbm90IGZhciBmcm9tIG1lLgpTdGlyIHVwIHRoeXNlbGYsIGFuZCBhd2FrZSB0byBteSBqdWRnbWVudCwgZXZlbiB1bnRvIG15IGNhdXNlLCBteSBHb2QgYW5kIG15IExvcmQuCkp1ZGdlIG1lLCBPIExPUkQgbXkgR29kLCBhY2NvcmRpbmcgdG8gdGh5IHJpZ2h0ZW91c25lc3M7IGFuZCBsZXQgdGhlbSBub3QgcmVqb2ljZSBvdmVyIG1lLgpMZXQgdGhlbSBub3Qgc2F5IGluIHRoZWlyIGhlYXJ0cywgQWgsIHNvIHdvdWxkIHdlIGhhdmUgaXQ6IGxldCB0aGVtIG5vdCBzYXksIFdlIGhhdmUgc3dhbGxvd2VkIGhpbSB1cC4KTGV0IHRoZW0gYmUgYXNoYW1lZCBhbmQgYnJvdWdodCB0byBjb25mdXNpb24gdG9nZXRoZXIgdGhhdCByZWpvaWNlIGF0IG1pbmUgaHVydDogbGV0IHRoZW0gYmUgY2xvdGhlZCB3aXRoIHNoYW1lIGFuZCBkaXNob25vdXIgdGhhdCBtYWduaWZ5IHRoZW1zZWx2ZXMgYWdhaW5zdCBtZS4KTGV0IHRoZW0gc2hvdXQgZm9yIGpveSwgYW5kIGJlIGdsYWQsIHRoYXQgZmF2b3VyIG15IHJpZ2h0ZW91cyBjYXVzZTogeWVhLCBsZXQgdGhlbSBzYXkgY29udGludWFsbHksIExldCB0aGUgTE9SRCBiZSBtYWduaWZpZWQsIHdoaWNoIGhhdGggcGxlYXN1cmUgaW4gdGhlIHByb3NwZXJpdHkgb2YgaGlzIHNlcnZhbnQuCkFuZCBteSB0b25ndWUgc2hhbGwgc3BlYWsgb2YgdGh5IHJpZ2h0ZW91c25lc3MgYW5kIG9mIHRoeSBwcmFpc2UgYWxsIHRoZSBkYXkgbG9uZy4KVGhlIHRyYW5zZ3Jlc3Npb24gb2YgdGhlIHdpY2tlZCBzYWl0aCB3aXRoaW4gbXkgaGVhcnQsIHRoYXQgdGhlcmUgaXMgbm8gZmVhciBvZiBHb2QgYmVmb3JlIGhpcyBleWVzLgpGb3IgaGUgZmxhdHRlcmV0aCBoaW1zZWxmIGluIGhpcyBvd24gZXllcywgdW50aWwgaGlzIGluaXF1aXR5IGJlIGZvdW5kIHRvIGJlIGhhdGVmdWwuClRoZSB3b3JkcyBvZiBoaXMgbW91dGggYXJlIGluaXF1aXR5IGFuZCBkZWNlaXQ6IGhlIGhhdGggbGVmdCBvZmYgdG8gYmUgd2lzZSwgYW5kIHRvIGRvIGdvb2QuCkhlIGRldmlzZXRoIG1pc2NoaWVmIHVwb24gaGlzIGJlZDsgaGUgc2V0dGV0aCBoaW1zZWxmIGluIGEgd2F5IHRoYXQgaXMgbm90IGdvb2Q7IGhlIGFiaG9ycmV0aCBub3QgZXZpbC4KVGh5IG1lcmN5LCBPIExPUkQsIGlzIGluIHRoZSBoZWF2ZW5zOyBhbmQgdGh5IGZhaXRoZnVsbmVzcyByZWFjaGV0aCB1bnRvIHRoZSBjbG91ZHMuClRoeSByaWdodGVvdXNuZXNzIGlzIGxpa2UgdGhlIGdyZWF0IG1vdW50YWluczsgdGh5IGp1ZGdtZW50cyBhcmUgYSBncmVhdCBkZWVwOiBPIExPUkQsIHRob3UgcHJlc2VydmVzdCBtYW4gYW5kIGJlYXN0LgpIb3cgZXhjZWxsZW50IGlzIHRoeSBsb3ZpbmdraW5kbmVzcywgTyBHb2QhIHRoZXJlZm9yZSB0aGUgY2hpbGRyZW4gb2YgbWVuIHB1dCB0aGVpciB0cnVzdCB1bmRlciB0aGUgc2hhZG93IG9mIHRoeSB3aW5ncy4KVGhleSBzaGFsbCBiZSBhYnVuZGFudGx5IHNhdGlzZmllZCB3aXRoIHRoZSBmYXRuZXNzIG9mIHRoeSBob3VzZTsgYW5kIHRob3Ugc2hhbHQgbWFrZSB0aGVtIGRyaW5rIG9mIHRoZSByaXZlciBvZiB0aHkgcGxlYXN1cmVzLgpGb3Igd2l0aCB0aGVlIGlzIHRoZSBmb3VudGFpbiBvZiBsaWZlOiBpbiB0aHkgbGlnaHQgc2hhbGwgd2Ugc2VlIGxpZ2h0LgpPIGNvbnRpbnVlIHRoeSBsb3ZpbmdraW5kbmVzcyB1bnRvIHRoZW0gdGhhdCBrbm93IHRoZWU7IGFuZCB0aHkgcmlnaHRlb3VzbmVzcyB0byB0aGUgdXByaWdodCBpbiBoZWFydC4KTGV0IG5vdCB0aGUgZm9vdCBvZiBwcmlkZSBjb21lIGFnYWluc3QgbWUsIGFuZCBsZXQgbm90IHRoZSBoYW5kIG9mIHRoZSB3aWNrZWQgcmVtb3ZlIG1lLgpUaGVyZSBhcmUgdGhlIHdvcmtlcnMgb2YgaW5pcXVpdHkgZmFsbGVuOiB0aGV5IGFyZSBjYXN0IGRvd24sIGFuZCBzaGFsbCBub3QgYmUgYWJsZSB0byByaXNlLgpGcmV0IG5vdCB0aHlzZWxmIGJlY2F1c2Ugb2YgZXZpbGRvZXJzLCBuZWl0aGVyIGJlIHRob3UgZW52aW91cyBhZ2FpbnN0IHRoZSB3b3JrZXJzIG9mIGluaXF1aXR5LgpGb3IgdGhleSBzaGFsbCBzb29uIGJlIGN1dCBkb3duIGxpa2UgdGhlIGdyYXNzLCBhbmQgd2l0aGVyIGFzIHRoZSBncmVlbiBoZXJiLgpUcnVzdCBpbiB0aGUgTE9SRCwgYW5kIGRvIGdvb2Q7IHNvIHNoYWx0IHRob3UgZHdlbGwgaW4gdGhlIGxhbmQsIGFuZCB2ZXJpbHkgdGhvdSBzaGFsdCBiZSBmZWQuCkRlbGlnaHQgdGh5c2VsZiBhbHNvIGluIHRoZSBMT1JEOiBhbmQgaGUgc2hhbGwgZ2l2ZSB0aGVlIHRoZSBkZXNpcmVzIG9mIHRoaW5lIGhlYXJ0LgpDb21taXQgdGh5IHdheSB1bnRvIHRoZSBMT1JEOyB0cnVzdCBhbHNvIGluIGhpbTsgYW5kIGhlIHNoYWxsIGJyaW5nIGl0IHRvIHBhc3MuCkFuZCBoZSBzaGFsbCBicmluZyBmb3J0aCB0aHkgcmlnaHRlb3VzbmVzcyBhcyB0aGUgbGlnaHQsIGFuZCB0aHkganVkZ21lbnQgYXMgdGhlIG5vb25kYXkuClJlc3QgaW4gdGhlIExPUkQsIGFuZCB3YWl0IHBhdGllbnRseSBmb3IgaGltOiBmcmV0IG5vdCB0aHlzZWxmIGJlY2F1c2Ugb2YgaGltIHdobyBwcm9zcGVyZXRoIGluIGhpcyB3YXksIGJlY2F1c2Ugb2YgdGhlIG1hbiB3aG8gYnJpbmdldGggd2lja2VkIGRldmljZXMgdG8gcGFzcy4KQ2Vhc2UgZnJvbSBhbmdlciwgYW5kIGZvcnNha2Ugd3JhdGg6IGZyZXQgbm90IHRoeXNlbGYgaW4gYW55IHdpc2UgdG8gZG8gZXZpbC4KRm9yIGV2aWxkb2VycyBzaGFsbCBiZSBjdXQgb2ZmOiBidXQgdGhvc2UgdGhhdCB3YWl0IHVwb24gdGhlIExPUkQsIHRoZXkgc2hhbGwgaW5oZXJpdCB0aGUgZWFydGguCkZvciB5ZXQgYSBsaXR0bGUgd2hpbGUsIGFuZCB0aGUgd2lja2VkIHNoYWxsIG5vdCBiZTogeWVhLCB0aG91IHNoYWx0IGRpbGlnZW50bHkgY29uc2lkZXIgaGlzIHBsYWNlLCBhbmQgaXQgc2hhbGwgbm90IGJlLgpCdXQgdGhlIG1lZWsgc2hhbGwgaW5oZXJpdCB0aGUgZWFydGg7IGFuZCBzaGFsbCBkZWxpZ2h0IHRoZW1zZWx2ZXMgaW4gdGhlIGFidW5kYW5jZSBvZiBwZWFjZS4KVGhlIHdpY2tlZCBwbG90dGV0aCBhZ2FpbnN0IHRoZSBqdXN0LCBhbmQgZ25hc2hldGggdXBvbiBoaW0gd2l0aCBoaXMgdGVldGguClRoZSBMT1JEIHNoYWxsIGxhdWdoIGF0IGhpbTogZm9yIGhlIHNlZXRoIHRoYXQgaGlzIGRheSBpcyBjb21pbmcuClRoZSB3aWNrZWQgaGF2ZSBkcmF3biBvdXQgdGhlIHN3b3JkLCBhbmQgaGF2ZSBiZW50IHRoZWlyIGJvdywgdG8gY2FzdCBkb3duIHRoZSBwb29yIGFuZCBuZWVkeSwgYW5kIHRvIHNsYXkgc3VjaCBhcyBiZSBvZiB1cHJpZ2h0IGNvbnZlcnNhdGlvbi4KVGhlaXIgc3dvcmQgc2hhbGwgZW50ZXIgaW50byB0aGVpciBvd24gaGVhcnQsIGFuZCB0aGVpciBib3dzIHNoYWxsIGJlIGJyb2tlbi4KQSBsaXR0bGUgdGhhdCBhIHJpZ2h0ZW91cyBtYW4gaGF0aCBpcyBiZXR0ZXIgdGhhbiB0aGUgcmljaGVzIG9mIG1hbnkgd2lja2VkLgpGb3IgdGhlIGFybXMgb2YgdGhlIHdpY2tlZCBzaGFsbCBiZSBicm9rZW46IGJ1dCB0aGUgTE9SRCB1cGhvbGRldGggdGhlIHJpZ2h0ZW91cy4KVGhlIExPUkQga25vd2V0aCB0aGUgZGF5cyBvZiB0aGUgdXByaWdodDogYW5kIHRoZWlyIGluaGVyaXRhbmNlIHNoYWxsIGJlIGZvciBldmVyLgpUaGV5IHNoYWxsIG5vdCBiZSBhc2hhbWVkIGluIHRoZSBldmlsIHRpbWU6IGFuZCBpbiB0aGUgZGF5cyBvZiBmYW1pbmUgdGhleSBzaGFsbCBiZSBzYXRpc2ZpZWQuCkJ1dCB0aGUgd2lja2VkIHNoYWxsIHBlcmlzaCwgYW5kIHRoZSBlbmVtaWVzIG9mIHRoZSBMT1JEIHNoYWxsIGJlIGFzIHRoZSBmYXQgb2YgbGFtYnM6IHRoZXkgc2hhbGwgY29uc3VtZTsgaW50byBzbW9rZSBzaGFsbCB0aGV5IGNvbnN1bWUgYXdheS4KVGhlIHdpY2tlZCBib3Jyb3dldGgsIGFuZCBwYXlldGggbm90IGFnYWluOiBidXQgdGhlIHJpZ2h0ZW91cyBzaGV3ZXRoIG1lcmN5LCBhbmQgZ2l2ZXRoLgpGb3Igc3VjaCBhcyBiZSBibGVzc2VkIG9mIGhpbSBzaGFsbCBpbmhlcml0IHRoZSBlYXJ0aDsgYW5kIHRoZXkgdGhhdCBiZSBjdXJzZWQgb2YgaGltIHNoYWxsIGJlIGN1dCBvZmYuClRoZSBzdGVwcyBvZiBhIGdvb2QgbWFuIGFyZSBvcmRlcmVkIGJ5IHRoZSBMT1JEOiBhbmQgaGUgZGVsaWdodGV0aCBpbiBoaXMgd2F5LgpUaG91Z2ggaGUgZmFsbCwgaGUgc2hhbGwgbm90IGJlIHV0dGVybHkgY2FzdCBkb3duOiBmb3IgdGhlIExPUkQgdXBob2xkZXRoIGhpbSB3aXRoIGhpcyBoYW5kLgpJIGhhdmUgYmVlbiB5b3VuZywgYW5kIG5vdyBhbSBvbGQ7IHlldCBoYXZlIEkgbm90IHNlZW4gdGhlIHJpZ2h0ZW91cyBmb3JzYWtlbiwgbm9yIGhpcyBzZWVkIGJlZ2dpbmcgYnJlYWQuCkhlIGlzIGV2ZXIgbWVyY2lmdWwsIGFuZCBsZW5kZXRoOyBhbmQgaGlzIHNlZWQgaXMgYmxlc3NlZC4KRGVwYXJ0IGZyb20gZXZpbCwgYW5kIGRvIGdvb2Q7IGFuZCBkd2VsbCBmb3IgZXZlcm1vcmUuCkZvciB0aGUgTE9SRCBsb3ZldGgganVkZ21lbnQsIGFuZCBmb3JzYWtldGggbm90IGhpcyBzYWludHM7IHRoZXkgYXJlIHByZXNlcnZlZCBmb3IgZXZlcjogYnV0IHRoZSBzZWVkIG9mIHRoZSB3aWNrZWQgc2hhbGwgYmUgY3V0IG9mZi4KVGhlIHJpZ2h0ZW91cyBzaGFsbCBpbmhlcml0IHRoZSBsYW5kLCBhbmQgZHdlbGwgdGhlcmVpbiBmb3IgZXZlci4KVGhlIG1vdXRoIG9mIHRoZSByaWdodGVvdXMgc3BlYWtldGggd2lzZG9tLCBhbmQgaGlzIHRvbmd1ZSB0YWxrZXRoIG9mIGp1ZGdtZW50LgpUaGUgbGF3IG9mIGhpcyBHb2QgaXMgaW4gaGlzIGhlYXJ0OyBub25lIG9mIGhpcyBzdGVwcyBzaGFsbCBzbGlkZS4KVGhlIHdpY2tlZCB3YXRjaGV0aCB0aGUgcmlnaHRlb3VzLCBhbmQgc2Vla2V0aCB0byBzbGF5IGhpbS4KVGhlIExPUkQgd2lsbCBub3QgbGVhdmUgaGltIGluIGhpcyBoYW5kLCBub3IgY29uZGVtbiBoaW0gd2hlbiBoZSBpcyBqdWRnZWQuCldhaXQgb24gdGhlIExPUkQsIGFuZCBrZWVwIGhpcyB3YXksIGFuZCBoZSBzaGFsbCBleGFsdCB0aGVlIHRvIGluaGVyaXQgdGhlIGxhbmQ6IHdoZW4gdGhlIHdpY2tlZCBhcmUgY3V0IG9mZiwgdGhvdSBzaGFsdCBzZWUgaXQuCkkgaGF2ZSBzZWVuIHRoZSB3aWNrZWQgaW4gZ3JlYXQgcG93ZXIsIGFuZCBzcHJlYWRpbmcgaGltc2VsZiBsaWtlIGEgZ3JlZW4gYmF5IHRyZWUuCllldCBoZSBwYXNzZWQgYXdheSwgYW5kLCBsbywgaGUgd2FzIG5vdDogeWVhLCBJIHNvdWdodCBoaW0sIGJ1dCBoZSBjb3VsZCBub3QgYmUgZm91bmQuCk1hcmsgdGhlIHBlcmZlY3QgbWFuLCBhbmQgYmVob2xkIHRoZSB1cHJpZ2h0OiBmb3IgdGhlIGVuZCBvZiB0aGF0IG1hbiBpcyBwZWFjZS4KQnV0IHRoZSB0cmFuc2dyZXNzb3JzIHNoYWxsIGJlIGRlc3Ryb3llZCB0b2dldGhlcjogdGhlIGVuZCBvZiB0aGUgd2lja2VkIHNoYWxsIGJlIGN1dCBvZmYuCkJ1dCB0aGUgc2FsdmF0aW9uIG9mIHRoZSByaWdodGVvdXMgaXMgb2YgdGhlIExPUkQ6IGhlIGlzIHRoZWlyIHN0cmVuZ3RoIGluIHRoZSB0aW1lIG9mIHRyb3VibGUuCkFuZCB0aGUgTE9SRCBzaGFsbCBoZWxwIHRoZW0sIGFuZCBkZWxpdmVyIHRoZW06IGhlIHNoYWxsIGRlbGl2ZXIgdGhlbSBmcm9tIHRoZSB3aWNrZWQsIGFuZCBzYXZlIHRoZW0sIGJlY2F1c2UgdGhleSB0cnVzdCBpbiBoaW0uCk8gbG9yZCwgcmVidWtlIG1lIG5vdCBpbiB0aHkgd3JhdGg6IG5laXRoZXIgY2hhc3RlbiBtZSBpbiB0aHkgaG90IGRpc3BsZWFzdXJlLgpGb3IgdGhpbmUgYXJyb3dzIHN0aWNrIGZhc3QgaW4gbWUsIGFuZCB0aHkgaGFuZCBwcmVzc2V0aCBtZSBzb3JlLgpUaGVyZSBpcyBubyBzb3VuZG5lc3MgaW4gbXkgZmxlc2ggYmVjYXVzZSBvZiB0aGluZSBhbmdlcjsgbmVpdGhlciBpcyB0aGVyZSBhbnkgcmVzdCBpbiBteSBib25lcyBiZWNhdXNlIG9mIG15IHNpbi4KRm9yIG1pbmUgaW5pcXVpdGllcyBhcmUgZ29uZSBvdmVyIG1pbmUgaGVhZDogYXMgYW4gaGVhdnkgYnVyZGVuIHRoZXkgYXJlIHRvbyBoZWF2eSBmb3IgbWUuCk15IHdvdW5kcyBzdGluayBhbmQgYXJlIGNvcnJ1cHQgYmVjYXVzZSBvZiBteSBmb29saXNobmVzcy4KSSBhbSB0cm91YmxlZDsgSSBhbSBib3dlZCBkb3duIGdyZWF0bHk7IEkgZ28gbW91cm5pbmcgYWxsIHRoZSBkYXkgbG9uZy4KRm9yIG15IGxvaW5zIGFyZSBmaWxsZWQgd2l0aCBhIGxvYXRoc29tZSBkaXNlYXNlOiBhbmQgdGhlcmUgaXMgbm8gc291bmRuZXNzIGluIG15IGZsZXNoLgpJIGFtIGZlZWJsZSBhbmQgc29yZSBicm9rZW46IEkgaGF2ZSByb2FyZWQgYnkgcmVhc29uIG9mIHRoZSBkaXNxdWlldG5lc3Mgb2YgbXkgaGVhcnQuCkxvcmQsIGFsbCBteSBkZXNpcmUgaXMgYmVmb3JlIHRoZWU7IGFuZCBteSBncm9hbmluZyBpcyBub3QgaGlkIGZyb20gdGhlZS4KTXkgaGVhcnQgcGFudGV0aCwgbXkgc3RyZW5ndGggZmFpbGV0aCBtZTogYXMgZm9yIHRoZSBsaWdodCBvZiBtaW5lIGV5ZXMsIGl0IGFsc28gaXMgZ29uZSBmcm9tIG1lLgpNeSBsb3ZlcnMgYW5kIG15IGZyaWVuZHMgc3RhbmQgYWxvb2YgZnJvbSBteSBzb3JlOyBhbmQgbXkga2luc21lbiBzdGFuZCBhZmFyIG9mZi4KVGhleSBhbHNvIHRoYXQgc2VlayBhZnRlciBteSBsaWZlIGxheSBzbmFyZXMgZm9yIG1lOiBhbmQgdGhleSB0aGF0IHNlZWsgbXkgaHVydCBzcGVhayBtaXNjaGlldm91cyB0aGluZ3MsIGFuZCBpbWFnaW5lIGRlY2VpdHMgYWxsIHRoZSBkYXkgbG9uZy4KQnV0IEksIGFzIGEgZGVhZiBtYW4sIGhlYXJkIG5vdDsgYW5kIEkgd2FzIGFzIGEgZHVtYiBtYW4gdGhhdCBvcGVuZXRoIG5vdCBoaXMgbW91dGguClRodXMgSSB3YXMgYXMgYSBtYW4gdGhhdCBoZWFyZXRoIG5vdCwgYW5kIGluIHdob3NlIG1vdXRoIGFyZSBubyByZXByb29mcy4KRm9yIGluIHRoZWUsIE8gTE9SRCwgZG8gSSBob3BlOiB0aG91IHdpbHQgaGVhciwgTyBMb3JkIG15IEdvZC4KRm9yIEkgc2FpZCwgSGVhciBtZSwgbGVzdCBvdGhlcndpc2UgdGhleSBzaG91bGQgcmVqb2ljZSBvdmVyIG1lOiB3aGVuIG15IGZvb3Qgc2xpcHBldGgsIHRoZXkgbWFnbmlmeSB0aGVtc2VsdmVzIGFnYWluc3QgbWUuCkZvciBJIGFtIHJlYWR5IHRvIGhhbHQsIGFuZCBteSBzb3Jyb3cgaXMgY29udGludWFsbHkgYmVmb3JlIG1lLgpGb3IgSSB3aWxsIGRlY2xhcmUgbWluZSBpbmlxdWl0eTsgSSB3aWxsIGJlIHNvcnJ5IGZvciBteSBzaW4uCkJ1dCBtaW5lIGVuZW1pZXMgYXJlIGxpdmVseSwgYW5kIHRoZXkgYXJlIHN0cm9uZzogYW5kIHRoZXkgdGhhdCBoYXRlIG1lIHdyb25nZnVsbHkgYXJlIG11bHRpcGxpZWQuClRoZXkgYWxzbyB0aGF0IHJlbmRlciBldmlsIGZvciBnb29kIGFyZSBtaW5lIGFkdmVyc2FyaWVzOyBiZWNhdXNlIEkgZm9sbG93IHRoZSB0aGluZyB0aGF0IGdvb2QgaXMuCkZvcnNha2UgbWUgbm90LCBPIExPUkQ6IE8gbXkgR29kLCBiZSBub3QgZmFyIGZyb20gbWUuCk1ha2UgaGFzdGUgdG8gaGVscCBtZSwgTyBMb3JkIG15IHNhbHZhdGlvbi4KSSBzYWlkLCBJIHdpbGwgdGFrZSBoZWVkIHRvIG15IHdheXMsIHRoYXQgSSBzaW4gbm90IHdpdGggbXkgdG9uZ3VlOiBJIHdpbGwga2VlcCBteSBtb3V0aCB3aXRoIGEgYnJpZGxlLCB3aGlsZSB0aGUgd2lja2VkIGlzIGJlZm9yZSBtZS4KSSB3YXMgZHVtYiB3aXRoIHNpbGVuY2UsIEkgaGVsZCBteSBwZWFjZSwgZXZlbiBmcm9tIGdvb2Q7IGFuZCBteSBzb3Jyb3cgd2FzIHN0aXJyZWQuCk15IGhlYXJ0IHdhcyBob3Qgd2l0aGluIG1lLCB3aGlsZSBJIHdhcyBtdXNpbmcgdGhlIGZpcmUgYnVybmVkOiB0aGVuIHNwYWtlIEkgd2l0aCBteSB0b25ndWUsCkxPUkQsIG1ha2UgbWUgdG8ga25vdyBtaW5lIGVuZCwgYW5kIHRoZSBtZWFzdXJlIG9mIG15IGRheXMsIHdoYXQgaXQgaXM6IHRoYXQgSSBtYXkga25vdyBob3cgZnJhaWwgSSBhbS4KQmVob2xkLCB0aG91IGhhc3QgbWFkZSBteSBkYXlzIGFzIGFuIGhhbmRicmVhZHRoOyBhbmQgbWluZSBhZ2UgaXMgYXMgbm90aGluZyBiZWZvcmUgdGhlZTogdmVyaWx5IGV2ZXJ5IG1hbiBhdCBoaXMgYmVzdCBzdGF0ZSBpcyBhbHRvZ2V0aGVyIHZhbml0eS4gU2VsYWguClN1cmVseSBldmVyeSBtYW4gd2Fsa2V0aCBpbiBhIHZhaW4gc2hldzogc3VyZWx5IHRoZXkgYXJlIGRpc3F1aWV0ZWQgaW4gdmFpbjogaGUgaGVhcGV0aCB1cCByaWNoZXMsIGFuZCBrbm93ZXRoIG5vdCB3aG8gc2hhbGwgZ2F0aGVyIHRoZW0uCkFuZCBub3csIExvcmQsIHdoYXQgd2FpdCBJIGZvcj8gbXkgaG9wZSBpcyBpbiB0aGVlLgpEZWxpdmVyIG1lIGZyb20gYWxsIG15IHRyYW5zZ3Jlc3Npb25zOiBtYWtlIG1lIG5vdCB0aGUgcmVwcm9hY2ggb2YgdGhlIGZvb2xpc2guCkkgd2FzIGR1bWIsIEkgb3BlbmVkIG5vdCBteSBtb3V0aDsgYmVjYXVzZSB0aG91IGRpZHN0IGl0LgpSZW1vdmUgdGh5IHN0cm9rZSBhd2F5IGZyb20gbWU6IEkgYW0gY29uc3VtZWQgYnkgdGhlIGJsb3cgb2YgdGhpbmUgaGFuZC4KV2hlbiB0aG91IHdpdGggcmVidWtlcyBkb3N0IGNvcnJlY3QgbWFuIGZvciBpbmlxdWl0eSwgdGhvdSBtYWtlc3QgaGlzIGJlYXV0eSB0byBjb25zdW1lIGF3YXkgbGlrZSBhIG1vdGg6IHN1cmVseSBldmVyeSBtYW4gaXMgdmFuaXR5LiBTZWxhaC4KSGVhciBteSBwcmF5ZXIsIE8gTE9SRCwgYW5kIGdpdmUgZWFyIHVudG8gbXkgY3J5OyBob2xkIG5vdCB0aHkgcGVhY2UgYXQgbXkgdGVhcnM6IGZvciBJIGFtIGEgc3RyYW5nZXIgd2l0aCB0aGVlLCBhbmQgYSBzb2pvdXJuZXIsIGFzIGFsbCBteSBmYXRoZXJzIHdlcmUuCk8gc3BhcmUgbWUsIHRoYXQgSSBtYXkgcmVjb3ZlciBzdHJlbmd0aCwgYmVmb3JlIEkgZ28gaGVuY2UsIGFuZCBiZSBubyBtb3JlLgpJIHdhaXRlZCBwYXRpZW50bHkgZm9yIHRoZSBMT1JEOyBhbmQgaGUgaW5jbGluZWQgdW50byBtZSwgYW5kIGhlYXJkIG15IGNyeS4KSGUgYnJvdWdodCBtZSB1cCBhbHNvIG91dCBvZiBhbiBob3JyaWJsZSBwaXQsIG91dCBvZiB0aGUgbWlyeSBjbGF5LCBhbmQgc2V0IG15IGZlZXQgdXBvbiBhIHJvY2ssIGFuZCBlc3RhYmxpc2hlZCBteSBnb2luZ3MuCkFuZCBoZSBoYXRoIHB1dCBhIG5ldyBzb25nIGluIG15IG1vdXRoLCBldmVuIHByYWlzZSB1bnRvIG91ciBHb2Q6IG1hbnkgc2hhbGwgc2VlIGl0LCBhbmQgZmVhciwgYW5kIHNoYWxsIHRydXN0IGluIHRoZSBMT1JELgpCbGVzc2VkIGlzIHRoYXQgbWFuIHRoYXQgbWFrZXRoIHRoZSBMT1JEIGhpcyB0cnVzdCwgYW5kIHJlc3BlY3RldGggbm90IHRoZSBwcm91ZCwgbm9yIHN1Y2ggYXMgdHVybiBhc2lkZSB0byBsaWVzLgpNYW55LCBPIExPUkQgbXkgR29kLCBhcmUgdGh5IHdvbmRlcmZ1bCB3b3JrcyB3aGljaCB0aG91IGhhc3QgZG9uZSwgYW5kIHRoeSB0aG91Z2h0cyB3aGljaCBhcmUgdG8gdXMtd2FyZDogdGhleSBjYW5ub3QgYmUgcmVja29uZWQgdXAgaW4gb3JkZXIgdW50byB0aGVlOiBpZiBJIHdvdWxkIGRlY2xhcmUgYW5kIHNwZWFrIG9mIHRoZW0sIHRoZXkgYXJlIG1vcmUgdGhhbiBjYW4gYmUgbnVtYmVyZWQuClNhY3JpZmljZSBhbmQgb2ZmZXJpbmcgdGhvdSBkaWRzdCBub3QgZGVzaXJlOyBtaW5lIGVhcnMgaGFzdCB0aG91IG9wZW5lZDogYnVybnQgb2ZmZXJpbmcgYW5kIHNpbiBvZmZlcmluZyBoYXN0IHRob3Ugbm90IHJlcXVpcmVkLgpUaGVuIHNhaWQgSSwgTG8sIEkgY29tZTogaW4gdGhlIHZvbHVtZSBvZiB0aGUgYm9vayBpdCBpcyB3cml0dGVuIG9mIG1lLApJIGRlbGlnaHQgdG8gZG8gdGh5IHdpbGwsIE8gbXkgR29kOiB5ZWEsIHRoeSBsYXcgaXMgd2l0aGluIG15IGhlYXJ0LgpJIGhhdmUgcHJlYWNoZWQgcmlnaHRlb3VzbmVzcyBpbiB0aGUgZ3JlYXQgY29uZ3JlZ2F0aW9uOiBsbywgSSBoYXZlIG5vdCByZWZyYWluZWQgbXkgbGlwcywgTyBMT1JELCB0aG91IGtub3dlc3QuCkkgaGF2ZSBub3QgaGlkIHRoeSByaWdodGVvdXNuZXNzIHdpdGhpbiBteSBoZWFydDsgSSBoYXZlIGRlY2xhcmVkIHRoeSBmYWl0aGZ1bG5lc3MgYW5kIHRoeSBzYWx2YXRpb246IEkgaGF2ZSBub3QgY29uY2VhbGVkIHRoeSBsb3ZpbmdraW5kbmVzcyBhbmQgdGh5IHRydXRoIGZyb20gdGhlIGdyZWF0IGNvbmdyZWdhdGlvbi4KV2l0aGhvbGQgbm90IHRob3UgdGh5IHRlbmRlciBtZXJjaWVzIGZyb20gbWUsIE8gTE9SRDogbGV0IHRoeSBsb3ZpbmdraW5kbmVzcyBhbmQgdGh5IHRydXRoIGNvbnRpbnVhbGx5IHByZXNlcnZlIG1lLgpGb3IgaW5udW1lcmFibGUgZXZpbHMgaGF2ZSBjb21wYXNzZWQgbWUgYWJvdXQ6IG1pbmUgaW5pcXVpdGllcyBoYXZlIHRha2VuIGhvbGQgdXBvbiBtZSwgc28gdGhhdCBJIGFtIG5vdCBhYmxlIHRvIGxvb2sgdXA7IHRoZXkgYXJlIG1vcmUgdGhhbiB0aGUgaGFpcnMgb2YgbWluZSBoZWFkOiB0aGVyZWZvcmUgbXkgaGVhcnQgZmFpbGV0aCBtZS4KQmUgcGxlYXNlZCwgTyBMT1JELCB0byBkZWxpdmVyIG1lOiBPIExPUkQsIG1ha2UgaGFzdGUgdG8gaGVscCBtZS4KTGV0IHRoZW0gYmUgYXNoYW1lZCBhbmQgY29uZm91bmRlZCB0b2dldGhlciB0aGF0IHNlZWsgYWZ0ZXIgbXkgc291bCB0byBkZXN0cm95IGl0OyBsZXQgdGhlbSBiZSBkcml2ZW4gYmFja3dhcmQgYW5kIHB1dCB0byBzaGFtZSB0aGF0IHdpc2ggbWUgZXZpbC4KTGV0IHRoZW0gYmUgZGVzb2xhdGUgZm9yIGEgcmV3YXJkIG9mIHRoZWlyIHNoYW1lIHRoYXQgc2F5IHVudG8gbWUsIEFoYSwgYWhhLgpMZXQgYWxsIHRob3NlIHRoYXQgc2VlayB0aGVlIHJlam9pY2UgYW5kIGJlIGdsYWQgaW4gdGhlZTogbGV0IHN1Y2ggYXMgbG92ZSB0aHkgc2FsdmF0aW9uIHNheSBjb250aW51YWxseSwgVGhlIExPUkQgYmUgbWFnbmlmaWVkLgpCdXQgSSBhbSBwb29yIGFuZCBuZWVkeTsgeWV0IHRoZSBMb3JkIHRoaW5rZXRoIHVwb24gbWU6IHRob3UgYXJ0IG15IGhlbHAgYW5kIG15IGRlbGl2ZXJlcjsgbWFrZSBubyB0YXJyeWluZywgTyBteSBHb2QuCkJsZXNzZWQgaXMgaGUgdGhhdCBjb25zaWRlcmV0aCB0aGUgcG9vcjogdGhlIExPUkQgd2lsbCBkZWxpdmVyIGhpbSBpbiB0aW1lIG9mIHRyb3VibGUuClRoZSBMT1JEIHdpbGwgcHJlc2VydmUgaGltLCBhbmQga2VlcCBoaW0gYWxpdmU7IGFuZCBoZSBzaGFsbCBiZSBibGVzc2VkIHVwb24gdGhlIGVhcnRoOiBhbmQgdGhvdSB3aWx0IG5vdCBkZWxpdmVyIGhpbSB1bnRvIHRoZSB3aWxsIG9mIGhpcyBlbmVtaWVzLgpUaGUgTE9SRCB3aWxsIHN0cmVuZ3RoZW4gaGltIHVwb24gdGhlIGJlZCBvZiBsYW5ndWlzaGluZzogdGhvdSB3aWx0IG1ha2UgYWxsIGhpcyBiZWQgaW4gaGlzIHNpY2tuZXNzLgpJIHNhaWQsIExPUkQsIGJlIG1lcmNpZnVsIHVudG8gbWU6IGhlYWwgbXkgc291bDsgZm9yIEkgaGF2ZSBzaW5uZWQgYWdhaW5zdCB0aGVlLgpNaW5lIGVuZW1pZXMgc3BlYWsgZXZpbCBvZiBtZSwgV2hlbiBzaGFsbCBoZSBkaWUsIGFuZCBoaXMgbmFtZSBwZXJpc2g/CkFuZCBpZiBoZSBjb21lIHRvIHNlZSBtZSwgaGUgc3BlYWtldGggdmFuaXR5OiBoaXMgaGVhcnQgZ2F0aGVyZXRoIGluaXF1aXR5IHRvIGl0c2VsZjsgd2hlbiBoZSBnb2V0aCBhYnJvYWQsIGhlIHRlbGxldGggaXQuCkFsbCB0aGF0IGhhdGUgbWUgd2hpc3BlciB0b2dldGhlciBhZ2FpbnN0IG1lOiBhZ2FpbnN0IG1lIGRvIHRoZXkgZGV2aXNlIG15IGh1cnQuCkFuIGV2aWwgZGlzZWFzZSwgc2F5IHRoZXksIGNsZWF2ZXRoIGZhc3QgdW50byBoaW06IGFuZCBub3cgdGhhdCBoZSBsaWV0aCBoZSBzaGFsbCByaXNlIHVwIG5vIG1vcmUuClllYSwgbWluZSBvd24gZmFtaWxpYXIgZnJpZW5kLCBpbiB3aG9tIEkgdHJ1c3RlZCwgd2hpY2ggZGlkIGVhdCBvZiBteSBicmVhZCwgaGF0aCBsaWZ0ZWQgdXAgaGlzIGhlZWwgYWdhaW5zdCBtZS4KQnV0IHRob3UsIE8gTE9SRCwgYmUgbWVyY2lmdWwgdW50byBtZSwgYW5kIHJhaXNlIG1lIHVwLCB0aGF0IEkgbWF5IHJlcXVpdGUgdGhlbS4KQnkgdGhpcyBJIGtub3cgdGhhdCB0aG91IGZhdm91cmVzdCBtZSwgYmVjYXVzZSBtaW5lIGVuZW15IGRvdGggbm90IHRyaXVtcGggb3ZlciBtZS4KQW5kIGFzIGZvciBtZSwgdGhvdSB1cGhvbGRlc3QgbWUgaW4gbWluZSBpbnRlZ3JpdHksIGFuZCBzZXR0ZXN0IG1lIGJlZm9yZSB0aHkgZmFjZSBmb3IgZXZlci4KQmxlc3NlZCBiZSB0aGUgTE9SRCBHb2Qgb2YgSXNyYWVsIGZyb20gZXZlcmxhc3RpbmcsIGFuZCB0byBldmVybGFzdGluZy4gQW1lbiwgYW5kIEFtZW4uCkFzIHRoZSBoYXJ0IHBhbnRldGggYWZ0ZXIgdGhlIHdhdGVyIGJyb29rcywgc28gcGFudGV0aCBteSBzb3VsIGFmdGVyIHRoZWUsIE8gR29kLgpNeSBzb3VsIHRoaXJzdGV0aCBmb3IgR29kLCBmb3IgdGhlIGxpdmluZyBHb2Q6IHdoZW4gc2hhbGwgSSBjb21lIGFuZCBhcHBlYXIgYmVmb3JlIEdvZD8KTXkgdGVhcnMgaGF2ZSBiZWVuIG15IG1lYXQgZGF5IGFuZCBuaWdodCwgd2hpbGUgdGhleSBjb250aW51YWxseSBzYXkgdW50byBtZSwgV2hlcmUgaXMgdGh5IEdvZD8KV2hlbiBJIHJlbWVtYmVyIHRoZXNlIHRoaW5ncywgSSBwb3VyIG91dCBteSBzb3VsIGluIG1lOiBmb3IgSSBoYWQgZ29uZSB3aXRoIHRoZSBtdWx0aXR1ZGUsIEkgd2VudCB3aXRoIHRoZW0gdG8gdGhlIGhvdXNlIG9mIEdvZCwgd2l0aCB0aGUgdm9pY2Ugb2Ygam95IGFuZCBwcmFpc2UsIHdpdGggYSBtdWx0aXR1ZGUgdGhhdCBrZXB0IGhvbHlkYXkuCldoeSBhcnQgdGhvdSBjYXN0IGRvd24sIE8gbXkgc291bD8gYW5kIHdoeSBhcnQgdGhvdSBkaXNxdWlldGVkIGluIG1lPyBob3BlIHRob3UgaW4gR29kOiBmb3IgSSBzaGFsbCB5ZXQgcHJhaXNlIGhpbSBmb3IgdGhlIGhlbHAgb2YgaGlzIGNvdW50ZW5hbmNlLgpPIG15IEdvZCwgbXkgc291bCBpcyBjYXN0IGRvd24gd2l0aGluIG1lOiB0aGVyZWZvcmUgd2lsbCBJIHJlbWVtYmVyIHRoZWUgZnJvbSB0aGUgbGFuZCBvZiBKb3JkYW4sIGFuZCBvZiB0aGUgSGVybW9uaXRlcywgZnJvbSB0aGUgaGlsbCBNaXphci4KRGVlcCBjYWxsZXRoIHVudG8gZGVlcCBhdCB0aGUgbm9pc2Ugb2YgdGh5IHdhdGVyc3BvdXRzOiBhbGwgdGh5IHdhdmVzIGFuZCB0aHkgYmlsbG93cyBhcmUgZ29uZSBvdmVyIG1lLgpZZXQgdGhlIExPUkQgd2lsbCBjb21tYW5kIGhpcyBsb3ZpbmdraW5kbmVzcyBpbiB0aGUgZGF5IHRpbWUsIGFuZCBpbiB0aGUgbmlnaHQgaGlzIHNvbmcgc2hhbGwgYmUgd2l0aCBtZSwgYW5kIG15IHByYXllciB1bnRvIHRoZSBHb2Qgb2YgbXkgbGlmZS4KSSB3aWxsIHNheSB1bnRvIEdvZCBteSByb2NrLCBXaHkgaGFzdCB0aG91IGZvcmdvdHRlbiBtZT8gd2h5IGdvIEkgbW91cm5pbmcgYmVjYXVzZSBvZiB0aGUgb3BwcmVzc2lvbiBvZiB0aGUgZW5lbXk/CkFzIHdpdGggYSBzd29yZCBpbiBteSBib25lcywgbWluZSBlbmVtaWVzIHJlcHJvYWNoIG1lOyB3aGlsZSB0aGV5IHNheSBkYWlseSB1bnRvIG1lLCBXaGVyZSBpcyB0aHkgR29kPwpXaHkgYXJ0IHRob3UgY2FzdCBkb3duLCBPIG15IHNvdWw/IGFuZCB3aHkgYXJ0IHRob3UgZGlzcXVpZXRlZCB3aXRoaW4gbWU/IGhvcGUgdGhvdSBpbiBHb2Q6IGZvciBJIHNoYWxsIHlldCBwcmFpc2UgaGltLCB3aG8gaXMgdGhlIGhlYWx0aCBvZiBteSBjb3VudGVuYW5jZSwgYW5kIG15IEdvZC4KSnVkZ2UgbWUsIE8gR29kLCBhbmQgcGxlYWQgbXkgY2F1c2UgYWdhaW5zdCBhbiB1bmdvZGx5IG5hdGlvbjogTyBkZWxpdmVyIG1lIGZyb20gdGhlIGRlY2VpdGZ1bCBhbmQgdW5qdXN0IG1hbi4KRm9yIHRob3UgYXJ0IHRoZSBHb2Qgb2YgbXkgc3RyZW5ndGg6IHdoeSBkb3N0IHRob3UgY2FzdCBtZSBvZmY/IHdoeSBnbyBJIG1vdXJuaW5nIGJlY2F1c2Ugb2YgdGhlIG9wcHJlc3Npb24gb2YgdGhlIGVuZW15PwpPIHNlbmQgb3V0IHRoeSBsaWdodCBhbmQgdGh5IHRydXRoOiBsZXQgdGhlbSBsZWFkIG1lOyBsZXQgdGhlbSBicmluZyBtZSB1bnRvIHRoeSBob2x5IGhpbGwsIGFuZCB0byB0aHkgdGFiZXJuYWNsZXMuClRoZW4gd2lsbCBJIGdvIHVudG8gdGhlIGFsdGFyIG9mIEdvZCwgdW50byBHb2QgbXkgZXhjZWVkaW5nIGpveTogeWVhLCB1cG9uIHRoZSBoYXJwIHdpbGwgSSBwcmFpc2UgdGhlZSwgTyBHb2QgbXkgR29kLgpXaHkgYXJ0IHRob3UgY2FzdCBkb3duLCBPIG15IHNvdWw/IGFuZCB3aHkgYXJ0IHRob3UgZGlzcXVpZXRlZCB3aXRoaW4gbWU/IGhvcGUgaW4gR29kOiBmb3IgSSBzaGFsbCB5ZXQgcHJhaXNlIGhpbSwgd2hvIGlzIHRoZSBoZWFsdGggb2YgbXkgY291bnRlbmFuY2UsIGFuZCBteSBHb2QuCldlIGhhdmUgaGVhcmQgd2l0aCBvdXIgZWFycywgTyBHb2QsIG91ciBmYXRoZXJzIGhhdmUgdG9sZCB1cywgd2hhdCB3b3JrIHRob3UgZGlkc3QgaW4gdGhlaXIgZGF5cywgaW4gdGhlIHRpbWVzIG9mIG9sZC4KSG93IHRob3UgZGlkc3QgZHJpdmUgb3V0IHRoZSBoZWF0aGVuIHdpdGggdGh5IGhhbmQsIGFuZCBwbGFudGVkc3QgdGhlbTsgaG93IHRob3UgZGlkc3QgYWZmbGljdCB0aGUgcGVvcGxlLCBhbmQgY2FzdCB0aGVtIG91dC4KRm9yIHRoZXkgZ290IG5vdCB0aGUgbGFuZCBpbiBwb3NzZXNzaW9uIGJ5IHRoZWlyIG93biBzd29yZCwgbmVpdGhlciBkaWQgdGhlaXIgb3duIGFybSBzYXZlIHRoZW06IGJ1dCB0aHkgcmlnaHQgaGFuZCwgYW5kIHRoaW5lIGFybSwgYW5kIHRoZSBsaWdodCBvZiB0aHkgY291bnRlbmFuY2UsIGJlY2F1c2UgdGhvdSBoYWRzdCBhIGZhdm91ciB1bnRvIHRoZW0uClRob3UgYXJ0IG15IEtpbmcsIE8gR29kOiBjb21tYW5kIGRlbGl2ZXJhbmNlcyBmb3IgSmFjb2IuClRocm91Z2ggdGhlZSB3aWxsIHdlIHB1c2ggZG93biBvdXIgZW5lbWllczogdGhyb3VnaCB0aHkgbmFtZSB3aWxsIHdlIHRyZWFkIHRoZW0gdW5kZXIgdGhhdCByaXNlIHVwIGFnYWluc3QgdXMuCkZvciBJIHdpbGwgbm90IHRydXN0IGluIG15IGJvdywgbmVpdGhlciBzaGFsbCBteSBzd29yZCBzYXZlIG1lLgpCdXQgdGhvdSBoYXN0IHNhdmVkIHVzIGZyb20gb3VyIGVuZW1pZXMsIGFuZCBoYXN0IHB1dCB0aGVtIHRvIHNoYW1lIHRoYXQgaGF0ZWQgdXMuCkluIEdvZCB3ZSBib2FzdCBhbGwgdGhlIGRheSBsb25nLCBhbmQgcHJhaXNlIHRoeSBuYW1lIGZvciBldmVyLiBTZWxhaC4KQnV0IHRob3UgaGFzdCBjYXN0IG9mZiwgYW5kIHB1dCB1cyB0byBzaGFtZTsgYW5kIGdvZXN0IG5vdCBmb3J0aCB3aXRoIG91ciBhcm1pZXMuClRob3UgbWFrZXN0IHVzIHRvIHR1cm4gYmFjayBmcm9tIHRoZSBlbmVteTogYW5kIHRoZXkgd2hpY2ggaGF0ZSB1cyBzcG9pbCBmb3IgdGhlbXNlbHZlcy4KVGhvdSBoYXN0IGdpdmVuIHVzIGxpa2Ugc2hlZXAgYXBwb2ludGVkIGZvciBtZWF0OyBhbmQgaGFzdCBzY2F0dGVyZWQgdXMgYW1vbmcgdGhlIGhlYXRoZW4uClRob3Ugc2VsbGVzdCB0aHkgcGVvcGxlIGZvciBub3VnaHQsIGFuZCBkb3N0IG5vdCBpbmNyZWFzZSB0aHkgd2VhbHRoIGJ5IHRoZWlyIHByaWNlLgpUaG91IG1ha2VzdCB1cyBhIHJlcHJvYWNoIHRvIG91ciBuZWlnaGJvdXJzLCBhIHNjb3JuIGFuZCBhIGRlcmlzaW9uIHRvIHRoZW0gdGhhdCBhcmUgcm91bmQgYWJvdXQgdXMuClRob3UgbWFrZXN0IHVzIGEgYnl3b3JkIGFtb25nIHRoZSBoZWF0aGVuLCBhIHNoYWtpbmcgb2YgdGhlIGhlYWQgYW1vbmcgdGhlIHBlb3BsZS4KTXkgY29uZnVzaW9uIGlzIGNvbnRpbnVhbGx5IGJlZm9yZSBtZSwgYW5kIHRoZSBzaGFtZSBvZiBteSBmYWNlIGhhdGggY292ZXJlZCBtZSwKRm9yIHRoZSB2b2ljZSBvZiBoaW0gdGhhdCByZXByb2FjaGV0aCBhbmQgYmxhc3BoZW1ldGg7IGJ5IHJlYXNvbiBvZiB0aGUgZW5lbXkgYW5kIGF2ZW5nZXIuCkFsbCB0aGlzIGlzIGNvbWUgdXBvbiB1czsgeWV0IGhhdmUgd2Ugbm90IGZvcmdvdHRlbiB0aGVlLCBuZWl0aGVyIGhhdmUgd2UgZGVhbHQgZmFsc2VseSBpbiB0aHkgY292ZW5hbnQuCk91ciBoZWFydCBpcyBub3QgdHVybmVkIGJhY2ssIG5laXRoZXIgaGF2ZSBvdXIgc3RlcHMgZGVjbGluZWQgZnJvbSB0aHkgd2F5OwpUaG91Z2ggdGhvdSBoYXN0IHNvcmUgYnJva2VuIHVzIGluIHRoZSBwbGFjZSBvZiBkcmFnb25zLCBhbmQgY292ZXJlZCB1cyB3aXRoIHRoZSBzaGFkb3cgb2YgZGVhdGguCklmIHdlIGhhdmUgZm9yZ290dGVuIHRoZSBuYW1lIG9mIG91ciBHb2QsIG9yIHN0cmV0Y2hlZCBvdXQgb3VyIGhhbmRzIHRvIGEgc3RyYW5nZSBnb2Q7ClNoYWxsIG5vdCBHb2Qgc2VhcmNoIHRoaXMgb3V0PyBmb3IgaGUga25vd2V0aCB0aGUgc2VjcmV0cyBvZiB0aGUgaGVhcnQuClllYSwgZm9yIHRoeSBzYWtlIGFyZSB3ZSBraWxsZWQgYWxsIHRoZSBkYXkgbG9uZzsgd2UgYXJlIGNvdW50ZWQgYXMgc2hlZXAgZm9yIHRoZSBzbGF1Z2h0ZXIuCkF3YWtlLCB3aHkgc2xlZXBlc3QgdGhvdSwgTyBMb3JkPyBhcmlzZSwgY2FzdCB1cyBub3Qgb2ZmIGZvciBldmVyLgpXaGVyZWZvcmUgaGlkZXN0IHRob3UgdGh5IGZhY2UsIGFuZCBmb3JnZXR0ZXN0IG91ciBhZmZsaWN0aW9uIGFuZCBvdXIgb3BwcmVzc2lvbj8KRm9yIG91ciBzb3VsIGlzIGJvd2VkIGRvd24gdG8gdGhlIGR1c3Q6IG91ciBiZWxseSBjbGVhdmV0aCB1bnRvIHRoZSBlYXJ0aC4KQXJpc2UgZm9yIG91ciBoZWxwLCBhbmQgcmVkZWVtIHVzIGZvciB0aHkgbWVyY2llcycgc2FrZS4KTXkgaGVhcnQgaXMgaW5kaXRpbmcgYSBnb29kIG1hdHRlcjogSSBzcGVhayBvZiB0aGUgdGhpbmdzIHdoaWNoIEkgaGF2ZSBtYWRlIHRvdWNoaW5nIHRoZSBraW5nOiBteSB0b25ndWUgaXMgdGhlIHBlbiBvZiBhIHJlYWR5IHdyaXRlci4KVGhvdSBhcnQgZmFpcmVyIHRoYW4gdGhlIGNoaWxkcmVuIG9mIG1lbjogZ3JhY2UgaXMgcG91cmVkIGludG8gdGh5IGxpcHM6IHRoZXJlZm9yZSBHb2QgaGF0aCBibGVzc2VkIHRoZWUgZm9yIGV2ZXIuCkdpcmQgdGh5IHN3b3JkIHVwb24gdGh5IHRoaWdoLCBPIG1vc3QgbWlnaHR5LCB3aXRoIHRoeSBnbG9yeSBhbmQgdGh5IG1hamVzdHkuCkFuZCBpbiB0aHkgbWFqZXN0eSByaWRlIHByb3NwZXJvdXNseSBiZWNhdXNlIG9mIHRydXRoIGFuZCBtZWVrbmVzcyBhbmQgcmlnaHRlb3VzbmVzczsgYW5kIHRoeSByaWdodCBoYW5kIHNoYWxsIHRlYWNoIHRoZWUgdGVycmlibGUgdGhpbmdzLgpUaGluZSBhcnJvd3MgYXJlIHNoYXJwIGluIHRoZSBoZWFydCBvZiB0aGUga2luZydzIGVuZW1pZXM7IHdoZXJlYnkgdGhlIHBlb3BsZSBmYWxsIHVuZGVyIHRoZWUuClRoeSB0aHJvbmUsIE8gR29kLCBpcyBmb3IgZXZlciBhbmQgZXZlcjogdGhlIHNjZXB0cmUgb2YgdGh5IGtpbmdkb20gaXMgYSByaWdodCBzY2VwdHJlLgpUaG91IGxvdmVzdCByaWdodGVvdXNuZXNzLCBhbmQgaGF0ZXN0IHdpY2tlZG5lc3M6IHRoZXJlZm9yZSBHb2QsIHRoeSBHb2QsIGhhdGggYW5vaW50ZWQgdGhlZSB3aXRoIHRoZSBvaWwgb2YgZ2xhZG5lc3MgYWJvdmUgdGh5IGZlbGxvd3MuCkFsbCB0aHkgZ2FybWVudHMgc21lbGwgb2YgbXlycmgsIGFuZCBhbG9lcywgYW5kIGNhc3NpYSwgb3V0IG9mIHRoZSBpdm9yeSBwYWxhY2VzLCB3aGVyZWJ5IHRoZXkgaGF2ZSBtYWRlIHRoZWUgZ2xhZC4KS2luZ3MnIGRhdWdodGVycyB3ZXJlIGFtb25nIHRoeSBob25vdXJhYmxlIHdvbWVuOiB1cG9uIHRoeSByaWdodCBoYW5kIGRpZCBzdGFuZCB0aGUgcXVlZW4gaW4gZ29sZCBvZiBPcGhpci4KSGVhcmtlbiwgTyBkYXVnaHRlciwgYW5kIGNvbnNpZGVyLCBhbmQgaW5jbGluZSB0aGluZSBlYXI7IGZvcmdldCBhbHNvIHRoaW5lIG93biBwZW9wbGUsIGFuZCB0aHkgZmF0aGVyJ3MgaG91c2U7ClNvIHNoYWxsIHRoZSBraW5nIGdyZWF0bHkgZGVzaXJlIHRoeSBiZWF1dHk6IGZvciBoZSBpcyB0aHkgTG9yZDsgYW5kIHdvcnNoaXAgdGhvdSBoaW0uCkFuZCB0aGUgZGF1Z2h0ZXIgb2YgVHlyZSBzaGFsbCBiZSB0aGVyZSB3aXRoIGEgZ2lmdDsgZXZlbiB0aGUgcmljaCBhbW9uZyB0aGUgcGVvcGxlIHNoYWxsIGludHJlYXQgdGh5IGZhdm91ci4KVGhlIGtpbmcncyBkYXVnaHRlciBpcyBhbGwgZ2xvcmlvdXMgd2l0aGluOiBoZXIgY2xvdGhpbmcgaXMgb2Ygd3JvdWdodCBnb2xkLgpTaGUgc2hhbGwgYmUgYnJvdWdodCB1bnRvIHRoZSBraW5nIGluIHJhaW1lbnQgb2YgbmVlZGxld29yazogdGhlIHZpcmdpbnMgaGVyIGNvbXBhbmlvbnMgdGhhdCBmb2xsb3cgaGVyIHNoYWxsIGJlIGJyb3VnaHQgdW50byB0aGVlLgpXaXRoIGdsYWRuZXNzIGFuZCByZWpvaWNpbmcgc2hhbGwgdGhleSBiZSBicm91Z2h0OiB0aGV5IHNoYWxsIGVudGVyIGludG8gdGhlIGtpbmcncyBwYWxhY2UuCkluc3RlYWQgb2YgdGh5IGZhdGhlcnMgc2hhbGwgYmUgdGh5IGNoaWxkcmVuLCB3aG9tIHRob3UgbWF5ZXN0IG1ha2UgcHJpbmNlcyBpbiBhbGwgdGhlIGVhcnRoLgpJIHdpbGwgbWFrZSB0aHkgbmFtZSB0byBiZSByZW1lbWJlcmVkIGluIGFsbCBnZW5lcmF0aW9uczogdGhlcmVmb3JlIHNoYWxsIHRoZSBwZW9wbGUgcHJhaXNlIHRoZWUgZm9yIGV2ZXIgYW5kIGV2ZXIuCkdvZCBpcyBvdXIgcmVmdWdlIGFuZCBzdHJlbmd0aCwgYSB2ZXJ5IHByZXNlbnQgaGVscCBpbiB0cm91YmxlLgpUaGVyZWZvcmUgd2lsbCBub3Qgd2UgZmVhciwgdGhvdWdoIHRoZSBlYXJ0aCBiZSByZW1vdmVkLCBhbmQgdGhvdWdoIHRoZSBtb3VudGFpbnMgYmUgY2FycmllZCBpbnRvIHRoZSBtaWRzdCBvZiB0aGUgc2VhOwpUaG91Z2ggdGhlIHdhdGVycyB0aGVyZW9mIHJvYXIgYW5kIGJlIHRyb3VibGVkLCB0aG91Z2ggdGhlIG1vdW50YWlucyBzaGFrZSB3aXRoIHRoZSBzd2VsbGluZyB0aGVyZW9mLiBTZWxhaC4KVGhlcmUgaXMgYSByaXZlciwgdGhlIHN0cmVhbXMgd2hlcmVvZiBzaGFsbCBtYWtlIGdsYWQgdGhlIGNpdHkgb2YgR29kLCB0aGUgaG9seSBwbGFjZSBvZiB0aGUgdGFiZXJuYWNsZXMgb2YgdGhlIG1vc3QgSGlnaC4KR29kIGlzIGluIHRoZSBtaWRzdCBvZiBoZXI7IHNoZSBzaGFsbCBub3QgYmUgbW92ZWQ6IEdvZCBzaGFsbCBoZWxwIGhlciwgYW5kIHRoYXQgcmlnaHQgZWFybHkuClRoZSBoZWF0aGVuIHJhZ2VkLCB0aGUga2luZ2RvbXMgd2VyZSBtb3ZlZDogaGUgdXR0ZXJlZCBoaXMgdm9pY2UsIHRoZSBlYXJ0aCBtZWx0ZWQuClRoZSBMT1JEIG9mIGhvc3RzIGlzIHdpdGggdXM7IHRoZSBHb2Qgb2YgSmFjb2IgaXMgb3VyIHJlZnVnZS4gU2VsYWguCkNvbWUsIGJlaG9sZCB0aGUgd29ya3Mgb2YgdGhlIExPUkQsIHdoYXQgZGVzb2xhdGlvbnMgaGUgaGF0aCBtYWRlIGluIHRoZSBlYXJ0aC4KSGUgbWFrZXRoIHdhcnMgdG8gY2Vhc2UgdW50byB0aGUgZW5kIG9mIHRoZSBlYXJ0aDsgaGUgYnJlYWtldGggdGhlIGJvdywgYW5kIGN1dHRldGggdGhlIHNwZWFyIGluIHN1bmRlcjsgaGUgYnVybmV0aCB0aGUgY2hhcmlvdCBpbiB0aGUgZmlyZS4KQmUgc3RpbGwsIGFuZCBrbm93IHRoYXQgSSBhbSBHb2Q6IEkgd2lsbCBiZSBleGFsdGVkIGFtb25nIHRoZSBoZWF0aGVuLCBJIHdpbGwgYmUgZXhhbHRlZCBpbiB0aGUgZWFydGguClRoZSBMT1JEIG9mIGhvc3RzIGlzIHdpdGggdXM7IHRoZSBHb2Qgb2YgSmFjb2IgaXMgb3VyIHJlZnVnZS4gU2VsYWguCk8gY2xhcCB5b3VyIGhhbmRzLCBhbGwgeWUgcGVvcGxlOyBzaG91dCB1bnRvIEdvZCB3aXRoIHRoZSB2b2ljZSBvZiB0cml1bXBoLgpGb3IgdGhlIExPUkQgbW9zdCBoaWdoIGlzIHRlcnJpYmxlOyBoZSBpcyBhIGdyZWF0IEtpbmcgb3ZlciBhbGwgdGhlIGVhcnRoLgpIZSBzaGFsbCBzdWJkdWUgdGhlIHBlb3BsZSB1bmRlciB1cywgYW5kIHRoZSBuYXRpb25zIHVuZGVyIG91ciBmZWV0LgpIZSBzaGFsbCBjaG9vc2Ugb3VyIGluaGVyaXRhbmNlIGZvciB1cywgdGhlIGV4Y2VsbGVuY3kgb2YgSmFjb2Igd2hvbSBoZSBsb3ZlZC4gU2VsYWguCkdvZCBpcyBnb25lIHVwIHdpdGggYSBzaG91dCwgdGhlIExPUkQgd2l0aCB0aGUgc291bmQgb2YgYSB0cnVtcGV0LgpTaW5nIHByYWlzZXMgdG8gR29kLCBzaW5nIHByYWlzZXM6IHNpbmcgcHJhaXNlcyB1bnRvIG91ciBLaW5nLCBzaW5nIHByYWlzZXMuCkZvciBHb2QgaXMgdGhlIEtpbmcgb2YgYWxsIHRoZSBlYXJ0aDogc2luZyB5ZSBwcmFpc2VzIHdpdGggdW5kZXJzdGFuZGluZy4KR29kIHJlaWduZXRoIG92ZXIgdGhlIGhlYXRoZW46IEdvZCBzaXR0ZXRoIHVwb24gdGhlIHRocm9uZSBvZiBoaXMgaG9saW5lc3MuClRoZSBwcmluY2VzIG9mIHRoZSBwZW9wbGUgYXJlIGdhdGhlcmVkIHRvZ2V0aGVyLCBldmVuIHRoZSBwZW9wbGUgb2YgdGhlIEdvZCBvZiBBYnJhaGFtOiBmb3IgdGhlIHNoaWVsZHMgb2YgdGhlIGVhcnRoIGJlbG9uZyB1bnRvIEdvZDogaGUgaXMgZ3JlYXRseSBleGFsdGVkLgpHcmVhdCBpcyB0aGUgTE9SRCwgYW5kIGdyZWF0bHkgdG8gYmUgcHJhaXNlZCBpbiB0aGUgY2l0eSBvZiBvdXIgR29kLCBpbiB0aGUgbW91bnRhaW4gb2YgaGlzIGhvbGluZXNzLgpCZWF1dGlmdWwgZm9yIHNpdHVhdGlvbiwgdGhlIGpveSBvZiB0aGUgd2hvbGUgZWFydGgsIGlzIG1vdW50IFppb24sIG9uIHRoZSBzaWRlcyBvZiB0aGUgbm9ydGgsIHRoZSBjaXR5IG9mIHRoZSBncmVhdCBLaW5nLgpHb2QgaXMga25vd24gaW4gaGVyIHBhbGFjZXMgZm9yIGEgcmVmdWdlLgpGb3IsIGxvLCB0aGUga2luZ3Mgd2VyZSBhc3NlbWJsZWQsIHRoZXkgcGFzc2VkIGJ5IHRvZ2V0aGVyLgpUaGV5IHNhdyBpdCwgYW5kIHNvIHRoZXkgbWFydmVsbGVkOyB0aGV5IHdlcmUgdHJvdWJsZWQsIGFuZCBoYXN0ZWQgYXdheS4KRmVhciB0b29rIGhvbGQgdXBvbiB0aGVtIHRoZXJlLCBhbmQgcGFpbiwgYXMgb2YgYSB3b21hbiBpbiB0cmF2YWlsLgpUaG91IGJyZWFrZXN0IHRoZSBzaGlwcyBvZiBUYXJzaGlzaCB3aXRoIGFuIGVhc3Qgd2luZC4KQXMgd2UgaGF2ZSBoZWFyZCwgc28gaGF2ZSB3ZSBzZWVuIGluIHRoZSBjaXR5IG9mIHRoZSBMT1JEIG9mIGhvc3RzLCBpbiB0aGUgY2l0eSBvZiBvdXIgR29kOiBHb2Qgd2lsbCBlc3RhYmxpc2ggaXQgZm9yIGV2ZXIuIFNlbGFoLgpXZSBoYXZlIHRob3VnaHQgb2YgdGh5IGxvdmluZ2tpbmRuZXNzLCBPIEdvZCwgaW4gdGhlIG1pZHN0IG9mIHRoeSB0ZW1wbGUuCkFjY29yZGluZyB0byB0aHkgbmFtZSwgTyBHb2QsIHNvIGlzIHRoeSBwcmFpc2UgdW50byB0aGUgZW5kcyBvZiB0aGUgZWFydGg6IHRoeSByaWdodCBoYW5kIGlzIGZ1bGwgb2YgcmlnaHRlb3VzbmVzcy4KTGV0IG1vdW50IFppb24gcmVqb2ljZSwgbGV0IHRoZSBkYXVnaHRlcnMgb2YgSnVkYWggYmUgZ2xhZCwgYmVjYXVzZSBvZiB0aHkganVkZ21lbnRzLgpXYWxrIGFib3V0IFppb24sIGFuZCBnbyByb3VuZCBhYm91dCBoZXI6IHRlbGwgdGhlIHRvd2VycyB0aGVyZW9mLgpNYXJrIHllIHdlbGwgaGVyIGJ1bHdhcmtzLCBjb25zaWRlciBoZXIgcGFsYWNlczsgdGhhdCB5ZSBtYXkgdGVsbCBpdCB0byB0aGUgZ2VuZXJhdGlvbiBmb2xsb3dpbmcuCkZvciB0aGlzIEdvZCBpcyBvdXIgR29kIGZvciBldmVyIGFuZCBldmVyOiBoZSB3aWxsIGJlIG91ciBndWlkZSBldmVuIHVudG8gZGVhdGguCkhlYXIgdGhpcywgYWxsIHllIHBlb3BsZTsgZ2l2ZSBlYXIsIGFsbCB5ZSBpbmhhYml0YW50cyBvZiB0aGUgd29ybGQ6CkJvdGggbG93IGFuZCBoaWdoLCByaWNoIGFuZCBwb29yLCB0b2dldGhlci4KTXkgbW91dGggc2hhbGwgc3BlYWsgb2Ygd2lzZG9tOyBhbmQgdGhlIG1lZGl0YXRpb24gb2YgbXkgaGVhcnQgc2hhbGwgYmUgb2YgdW5kZXJzdGFuZGluZy4KSSB3aWxsIGluY2xpbmUgbWluZSBlYXIgdG8gYSBwYXJhYmxlOiBJIHdpbGwgb3BlbiBteSBkYXJrIHNheWluZyB1cG9uIHRoZSBoYXJwLgpXaGVyZWZvcmUgc2hvdWxkIEkgZmVhciBpbiB0aGUgZGF5cyBvZiBldmlsLCB3aGVuIHRoZSBpbmlxdWl0eSBvZiBteSBoZWVscyBzaGFsbCBjb21wYXNzIG1lIGFib3V0PwpUaGV5IHRoYXQgdHJ1c3QgaW4gdGhlaXIgd2VhbHRoLCBhbmQgYm9hc3QgdGhlbXNlbHZlcyBpbiB0aGUgbXVsdGl0dWRlIG9mIHRoZWlyIHJpY2hlczsKTm9uZSBvZiB0aGVtIGNhbiBieSBhbnkgbWVhbnMgcmVkZWVtIGhpcyBicm90aGVyLCBub3IgZ2l2ZSB0byBHb2QgYSByYW5zb20gZm9yIGhpbToKKEZvciB0aGUgcmVkZW1wdGlvbiBvZiB0aGVpciBzb3VsIGlzIHByZWNpb3VzLCBhbmQgaXQgY2Vhc2V0aCBmb3IgZXZlcjopClRoYXQgaGUgc2hvdWxkIHN0aWxsIGxpdmUgZm9yIGV2ZXIsIGFuZCBub3Qgc2VlIGNvcnJ1cHRpb24uCkZvciBoZSBzZWV0aCB0aGF0IHdpc2UgbWVuIGRpZSwgbGlrZXdpc2UgdGhlIGZvb2wgYW5kIHRoZSBicnV0aXNoIHBlcnNvbiBwZXJpc2gsIGFuZCBsZWF2ZSB0aGVpciB3ZWFsdGggdG8gb3RoZXJzLgpUaGVpciBpbndhcmQgdGhvdWdodCBpcywgdGhhdCB0aGVpciBob3VzZXMgc2hhbGwgY29udGludWUgZm9yIGV2ZXIsIGFuZCB0aGVpciBkd2VsbGluZyBwbGFjZXMgdG8gYWxsIGdlbmVyYXRpb25zOyB0aGV5IGNhbGwgdGhlaXIgbGFuZHMgYWZ0ZXIgdGhlaXIgb3duIG5hbWVzLgpOZXZlcnRoZWxlc3MgbWFuIGJlaW5nIGluIGhvbm91ciBhYmlkZXRoIG5vdDogaGUgaXMgbGlrZSB0aGUgYmVhc3RzIHRoYXQgcGVyaXNoLgpUaGlzIHRoZWlyIHdheSBpcyB0aGVpciBmb2xseTogeWV0IHRoZWlyIHBvc3Rlcml0eSBhcHByb3ZlIHRoZWlyIHNheWluZ3MuIFNlbGFoLgpMaWtlIHNoZWVwIHRoZXkgYXJlIGxhaWQgaW4gdGhlIGdyYXZlOyBkZWF0aCBzaGFsbCBmZWVkIG9uIHRoZW07IGFuZCB0aGUgdXByaWdodCBzaGFsbCBoYXZlIGRvbWluaW9uIG92ZXIgdGhlbSBpbiB0aGUgbW9ybmluZzsgYW5kIHRoZWlyIGJlYXV0eSBzaGFsbCBjb25zdW1lIGluIHRoZSBncmF2ZSBmcm9tIHRoZWlyIGR3ZWxsaW5nLgpCdXQgR29kIHdpbGwgcmVkZWVtIG15IHNvdWwgZnJvbSB0aGUgcG93ZXIgb2YgdGhlIGdyYXZlOiBmb3IgaGUgc2hhbGwgcmVjZWl2ZSBtZS4gU2VsYWguCkJlIG5vdCB0aG91IGFmcmFpZCB3aGVuIG9uZSBpcyBtYWRlIHJpY2gsIHdoZW4gdGhlIGdsb3J5IG9mIGhpcyBob3VzZSBpcyBpbmNyZWFzZWQ7CkZvciB3aGVuIGhlIGRpZXRoIGhlIHNoYWxsIGNhcnJ5IG5vdGhpbmcgYXdheTogaGlzIGdsb3J5IHNoYWxsIG5vdCBkZXNjZW5kIGFmdGVyIGhpbS4KVGhvdWdoIHdoaWxlIGhlIGxpdmVkIGhlIGJsZXNzZWQgaGlzIHNvdWw6IGFuZCBtZW4gd2lsbCBwcmFpc2UgdGhlZSwgd2hlbiB0aG91IGRvZXN0IHdlbGwgdG8gdGh5c2VsZi4KSGUgc2hhbGwgZ28gdG8gdGhlIGdlbmVyYXRpb24gb2YgaGlzIGZhdGhlcnM7IHRoZXkgc2hhbGwgbmV2ZXIgc2VlIGxpZ2h0LgpNYW4gdGhhdCBpcyBpbiBob25vdXIsIGFuZCB1bmRlcnN0YW5kZXRoIG5vdCwgaXMgbGlrZSB0aGUgYmVhc3RzIHRoYXQgcGVyaXNoLgpUaGUgbWlnaHR5IEdvZCwgZXZlbiB0aGUgTE9SRCwgaGF0aCBzcG9rZW4sIGFuZCBjYWxsZWQgdGhlIGVhcnRoIGZyb20gdGhlIHJpc2luZyBvZiB0aGUgc3VuIHVudG8gdGhlIGdvaW5nIGRvd24gdGhlcmVvZi4KT3V0IG9mIFppb24sIHRoZSBwZXJmZWN0aW9uIG9mIGJlYXV0eSwgR29kIGhhdGggc2hpbmVkLgpPdXIgR29kIHNoYWxsIGNvbWUsIGFuZCBzaGFsbCBub3Qga2VlcCBzaWxlbmNlOiBhIGZpcmUgc2hhbGwgZGV2b3VyIGJlZm9yZSBoaW0sIGFuZCBpdCBzaGFsbCBiZSB2ZXJ5IHRlbXBlc3R1b3VzIHJvdW5kIGFib3V0IGhpbS4KSGUgc2hhbGwgY2FsbCB0byB0aGUgaGVhdmVucyBmcm9tIGFib3ZlLCBhbmQgdG8gdGhlIGVhcnRoLCB0aGF0IGhlIG1heSBqdWRnZSBoaXMgcGVvcGxlLgpHYXRoZXIgbXkgc2FpbnRzIHRvZ2V0aGVyIHVudG8gbWU7IHRob3NlIHRoYXQgaGF2ZSBtYWRlIGEgY292ZW5hbnQgd2l0aCBtZSBieSBzYWNyaWZpY2UuCkFuZCB0aGUgaGVhdmVucyBzaGFsbCBkZWNsYXJlIGhpcyByaWdodGVvdXNuZXNzOiBmb3IgR29kIGlzIGp1ZGdlIGhpbXNlbGYuIFNlbGFoLgpIZWFyLCBPIG15IHBlb3BsZSwgYW5kIEkgd2lsbCBzcGVhazsgTyBJc3JhZWwsIGFuZCBJIHdpbGwgdGVzdGlmeSBhZ2FpbnN0IHRoZWU6IEkgYW0gR29kLCBldmVuIHRoeSBHb2QuCkkgd2lsbCBub3QgcmVwcm92ZSB0aGVlIGZvciB0aHkgc2FjcmlmaWNlcyBvciB0aHkgYnVybnQgb2ZmZXJpbmdzLCB0byBoYXZlIGJlZW4gY29udGludWFsbHkgYmVmb3JlIG1lLgpJIHdpbGwgdGFrZSBubyBidWxsb2NrIG91dCBvZiB0aHkgaG91c2UsIG5vciBoZSBnb2F0cyBvdXQgb2YgdGh5IGZvbGRzLgpGb3IgZXZlcnkgYmVhc3Qgb2YgdGhlIGZvcmVzdCBpcyBtaW5lLCBhbmQgdGhlIGNhdHRsZSB1cG9uIGEgdGhvdXNhbmQgaGlsbHMuCkkga25vdyBhbGwgdGhlIGZvd2xzIG9mIHRoZSBtb3VudGFpbnM6IGFuZCB0aGUgd2lsZCBiZWFzdHMgb2YgdGhlIGZpZWxkIGFyZSBtaW5lLgpJZiBJIHdlcmUgaHVuZ3J5LCBJIHdvdWxkIG5vdCB0ZWxsIHRoZWU6IGZvciB0aGUgd29ybGQgaXMgbWluZSwgYW5kIHRoZSBmdWxuZXNzIHRoZXJlb2YuCldpbGwgSSBlYXQgdGhlIGZsZXNoIG9mIGJ1bGxzLCBvciBkcmluayB0aGUgYmxvb2Qgb2YgZ29hdHM/Ck9mZmVyIHVudG8gR29kIHRoYW5rc2dpdmluZzsgYW5kIHBheSB0aHkgdm93cyB1bnRvIHRoZSBtb3N0IEhpZ2g6CkFuZCBjYWxsIHVwb24gbWUgaW4gdGhlIGRheSBvZiB0cm91YmxlOiBJIHdpbGwgZGVsaXZlciB0aGVlLCBhbmQgdGhvdSBzaGFsdCBnbG9yaWZ5IG1lLgpCdXQgdW50byB0aGUgd2lja2VkIEdvZCBzYWl0aCwgV2hhdCBoYXN0IHRob3UgdG8gZG8gdG8gZGVjbGFyZSBteSBzdGF0dXRlcywgb3IgdGhhdCB0aG91IHNob3VsZGVzdCB0YWtlIG15IGNvdmVuYW50IGluIHRoeSBtb3V0aD8KU2VlaW5nIHRob3UgaGF0ZXN0IGluc3RydWN0aW9uLCBhbmQgY2FzdGV0aCBteSB3b3JkcyBiZWhpbmQgdGhlZS4KV2hlbiB0aG91IHNhd2VzdCBhIHRoaWVmLCB0aGVuIHRob3UgY29uc2VudGVkc3Qgd2l0aCBoaW0sIGFuZCBoYXN0IGJlZW4gcGFydGFrZXIgd2l0aCBhZHVsdGVyZXJzLgpUaG91IGdpdmVzdCB0aHkgbW91dGggdG8gZXZpbCwgYW5kIHRoeSB0b25ndWUgZnJhbWV0aCBkZWNlaXQuClRob3Ugc2l0dGVzdCBhbmQgc3BlYWtlc3QgYWdhaW5zdCB0aHkgYnJvdGhlcjsgdGhvdSBzbGFuZGVyZXN0IHRoaW5lIG93biBtb3RoZXIncyBzb24uClRoZXNlIHRoaW5ncyBoYXN0IHRob3UgZG9uZSwgYW5kIEkga2VwdCBzaWxlbmNlOyB0aG91IHRob3VnaHRlc3QgdGhhdCBJIHdhcyBhbHRvZ2V0aGVyIHN1Y2ggYW4gb25lIGFzIHRoeXNlbGY6IGJ1dCBJIHdpbGwgcmVwcm92ZSB0aGVlLCBhbmQgc2V0IHRoZW0gaW4gb3JkZXIgYmVmb3JlIHRoaW5lIGV5ZXMuCk5vdyBjb25zaWRlciB0aGlzLCB5ZSB0aGF0IGZvcmdldCBHb2QsIGxlc3QgSSB0ZWFyIHlvdSBpbiBwaWVjZXMsIGFuZCB0aGVyZSBiZSBub25lIHRvIGRlbGl2ZXIuCldob3NvIG9mZmVyZXRoIHByYWlzZSBnbG9yaWZpZXRoIG1lOiBhbmQgdG8gaGltIHRoYXQgb3JkZXJldGggaGlzIGNvbnZlcnNhdGlvbiBhcmlnaHQgd2lsbCBJIHNoZXcgdGhlIHNhbHZhdGlvbiBvZiBHb2QuCkhhdmUgbWVyY3kgdXBvbiBtZSwgTyBHb2QsIGFjY29yZGluZyB0byB0aHkgbG92aW5na2luZG5lc3M6IGFjY29yZGluZyB1bnRvIHRoZSBtdWx0aXR1ZGUgb2YgdGh5IHRlbmRlciBtZXJjaWVzIGJsb3Qgb3V0IG15IHRyYW5zZ3Jlc3Npb25zLgpXYXNoIG1lIHRocm91Z2hseSBmcm9tIG1pbmUgaW5pcXVpdHksIGFuZCBjbGVhbnNlIG1lIGZyb20gbXkgc2luLgpGb3IgSSBhY2tub3dsZWRnZSBteSB0cmFuc2dyZXNzaW9uczogYW5kIG15IHNpbiBpcyBldmVyIGJlZm9yZSBtZS4KQWdhaW5zdCB0aGVlLCB0aGVlIG9ubHksIGhhdmUgSSBzaW5uZWQsIGFuZCBkb25lIHRoaXMgZXZpbCBpbiB0aHkgc2lnaHQ6IHRoYXQgdGhvdSBtaWdodGVzdCBiZSBqdXN0aWZpZWQgd2hlbiB0aG91IHNwZWFrZXN0LCBhbmQgYmUgY2xlYXIgd2hlbiB0aG91IGp1ZGdlc3QuCkJlaG9sZCwgSSB3YXMgc2hhcGVuIGluIGluaXF1aXR5OyBhbmQgaW4gc2luIGRpZCBteSBtb3RoZXIgY29uY2VpdmUgbWUuCkJlaG9sZCwgdGhvdSBkZXNpcmVzdCB0cnV0aCBpbiB0aGUgaW53YXJkIHBhcnRzOiBhbmQgaW4gdGhlIGhpZGRlbiBwYXJ0IHRob3Ugc2hhbHQgbWFrZSBtZSB0byBrbm93IHdpc2RvbS4KUHVyZ2UgbWUgd2l0aCBoeXNzb3AsIGFuZCBJIHNoYWxsIGJlIGNsZWFuOiB3YXNoIG1lLCBhbmQgSSBzaGFsbCBiZSB3aGl0ZXIgdGhhbiBzbm93LgpNYWtlIG1lIHRvIGhlYXIgam95IGFuZCBnbGFkbmVzczsgdGhhdCB0aGUgYm9uZXMgd2hpY2ggdGhvdSBoYXN0IGJyb2tlbiBtYXkgcmVqb2ljZS4KSGlkZSB0aHkgZmFjZSBmcm9tIG15IHNpbnMsIGFuZCBibG90IG91dCBhbGwgbWluZSBpbmlxdWl0aWVzLgpDcmVhdGUgaW4gbWUgYSBjbGVhbiBoZWFydCwgTyBHb2Q7IGFuZCByZW5ldyBhIHJpZ2h0IHNwaXJpdCB3aXRoaW4gbWUuCkNhc3QgbWUgbm90IGF3YXkgZnJvbSB0aHkgcHJlc2VuY2U7IGFuZCB0YWtlIG5vdCB0aHkgaG9seSBzcGlyaXQgZnJvbSBtZS4KUmVzdG9yZSB1bnRvIG1lIHRoZSBqb3kgb2YgdGh5IHNhbHZhdGlvbjsgYW5kIHVwaG9sZCBtZSB3aXRoIHRoeSBmcmVlIHNwaXJpdC4KVGhlbiB3aWxsIEkgdGVhY2ggdHJhbnNncmVzc29ycyB0aHkgd2F5czsgYW5kIHNpbm5lcnMgc2hhbGwgYmUgY29udmVydGVkIHVudG8gdGhlZS4KRGVsaXZlciBtZSBmcm9tIGJsb29kZ3VpbHRpbmVzcywgTyBHb2QsIHRob3UgR29kIG9mIG15IHNhbHZhdGlvbjogYW5kIG15IHRvbmd1ZSBzaGFsbCBzaW5nIGFsb3VkIG9mIHRoeSByaWdodGVvdXNuZXNzLgpPIExvcmQsIG9wZW4gdGhvdSBteSBsaXBzOyBhbmQgbXkgbW91dGggc2hhbGwgc2hldyBmb3J0aCB0aHkgcHJhaXNlLgpGb3IgdGhvdSBkZXNpcmVzdCBub3Qgc2FjcmlmaWNlOyBlbHNlIHdvdWxkIEkgZ2l2ZSBpdDogdGhvdSBkZWxpZ2h0ZXN0IG5vdCBpbiBidXJudCBvZmZlcmluZy4KVGhlIHNhY3JpZmljZXMgb2YgR29kIGFyZSBhIGJyb2tlbiBzcGlyaXQ6IGEgYnJva2VuIGFuZCBhIGNvbnRyaXRlIGhlYXJ0LCBPIEdvZCwgdGhvdSB3aWx0IG5vdCBkZXNwaXNlLgpEbyBnb29kIGluIHRoeSBnb29kIHBsZWFzdXJlIHVudG8gWmlvbjogYnVpbGQgdGhvdSB0aGUgd2FsbHMgb2YgSmVydXNhbGVtLgpUaGVuIHNoYWx0IHRob3UgYmUgcGxlYXNlZCB3aXRoIHRoZSBzYWNyaWZpY2VzIG9mIHJpZ2h0ZW91c25lc3MsIHdpdGggYnVybnQgb2ZmZXJpbmcgYW5kIHdob2xlIGJ1cm50IG9mZmVyaW5nOiB0aGVuIHNoYWxsIHRoZXkgb2ZmZXIgYnVsbG9ja3MgdXBvbiB0aGluZSBhbHRhci4KV2h5IGJvYXN0ZXN0IHRob3UgdGh5c2VsZiBpbiBtaXNjaGllZiwgTyBtaWdodHkgbWFuPyB0aGUgZ29vZG5lc3Mgb2YgR29kIGVuZHVyZXRoIGNvbnRpbnVhbGx5LgpUaGUgdG9uZ3VlIGRldmlzZXRoIG1pc2NoaWVmczsgbGlrZSBhIHNoYXJwIHJhem9yLCB3b3JraW5nIGRlY2VpdGZ1bGx5LgpUaG91IGxvdmVzdCBldmlsIG1vcmUgdGhhbiBnb29kOyBhbmQgbHlpbmcgcmF0aGVyIHRoYW4gdG8gc3BlYWsgcmlnaHRlb3VzbmVzcy4gU2VsYWguClRob3UgbG92ZXN0IGFsbCBkZXZvdXJpbmcgd29yZHMsIE8gdGhvdSBkZWNlaXRmdWwgdG9uZ3VlLgpHb2Qgc2hhbGwgbGlrZXdpc2UgZGVzdHJveSB0aGVlIGZvciBldmVyLCBoZSBzaGFsbCB0YWtlIHRoZWUgYXdheSwgYW5kIHBsdWNrIHRoZWUgb3V0IG9mIHRoeSBkd2VsbGluZyBwbGFjZSwgYW5kIHJvb3QgdGhlZSBvdXQgb2YgdGhlIGxhbmQgb2YgdGhlIGxpdmluZy4gU2VsYWguClRoZSByaWdodGVvdXMgYWxzbyBzaGFsbCBzZWUsIGFuZCBmZWFyLCBhbmQgc2hhbGwgbGF1Z2ggYXQgaGltOgpMbywgdGhpcyBpcyB0aGUgbWFuIHRoYXQgbWFkZSBub3QgR29kIGhpcyBzdHJlbmd0aDsgYnV0IHRydXN0ZWQgaW4gdGhlIGFidW5kYW5jZSBvZiBoaXMgcmljaGVzLCBhbmQgc3RyZW5ndGhlbmVkIGhpbXNlbGYgaW4gaGlzIHdpY2tlZG5lc3MuCkJ1dCBJIGFtIGxpa2UgYSBncmVlbiBvbGl2ZSB0cmVlIGluIHRoZSBob3VzZSBvZiBHb2Q6IEkgdHJ1c3QgaW4gdGhlIG1lcmN5IG9mIEdvZCBmb3IgZXZlciBhbmQgZXZlci4KSSB3aWxsIHByYWlzZSB0aGVlIGZvciBldmVyLCBiZWNhdXNlIHRob3UgaGFzdCBkb25lIGl0OiBhbmQgSSB3aWxsIHdhaXQgb24gdGh5IG5hbWU7IGZvciBpdCBpcyBnb29kIGJlZm9yZSB0aHkgc2FpbnRzLgpUaGUgZm9vbCBoYXRoIHNhaWQgaW4gaGlzIGhlYXJ0LCBUaGVyZSBpcyBubyBHb2QuIENvcnJ1cHQgYXJlIHRoZXksIGFuZCBoYXZlIGRvbmUgYWJvbWluYWJsZSBpbmlxdWl0eTogdGhlcmUgaXMgbm9uZSB0aGF0IGRvZXRoIGdvb2QuCkdvZCBsb29rZWQgZG93biBmcm9tIGhlYXZlbiB1cG9uIHRoZSBjaGlsZHJlbiBvZiBtZW4sIHRvIHNlZSBpZiB0aGVyZSB3ZXJlIGFueSB0aGF0IGRpZCB1bmRlcnN0YW5kLCB0aGF0IGRpZCBzZWVrIEdvZC4KRXZlcnkgb25lIG9mIHRoZW0gaXMgZ29uZSBiYWNrOiB0aGV5IGFyZSBhbHRvZ2V0aGVyIGJlY29tZSBmaWx0aHk7IHRoZXJlIGlzIG5vbmUgdGhhdCBkb2V0aCBnb29kLCBubywgbm90IG9uZS4KSGF2ZSB0aGUgd29ya2VycyBvZiBpbmlxdWl0eSBubyBrbm93bGVkZ2U/IHdobyBlYXQgdXAgbXkgcGVvcGxlIGFzIHRoZXkgZWF0IGJyZWFkOiB0aGV5IGhhdmUgbm90IGNhbGxlZCB1cG9uIEdvZC4KVGhlcmUgd2VyZSB0aGV5IGluIGdyZWF0IGZlYXIsIHdoZXJlIG5vIGZlYXIgd2FzOiBmb3IgR29kIGhhdGggc2NhdHRlcmVkIHRoZSBib25lcyBvZiBoaW0gdGhhdCBlbmNhbXBldGggYWdhaW5zdCB0aGVlOiB0aG91IGhhc3QgcHV0IHRoZW0gdG8gc2hhbWUsIGJlY2F1c2UgR29kIGhhdGggZGVzcGlzZWQgdGhlbS4KT2ggdGhhdCB0aGUgc2FsdmF0aW9uIG9mIElzcmFlbCB3ZXJlIGNvbWUgb3V0IG9mIFppb24hIFdoZW4gR29kIGJyaW5nZXRoIGJhY2sgdGhlIGNhcHRpdml0eSBvZiBoaXMgcGVvcGxlLCBKYWNvYiBzaGFsbCByZWpvaWNlLCBhbmQgSXNyYWVsIHNoYWxsIGJlIGdsYWQuClNhdmUgbWUsIE8gR29kLCBieSB0aHkgbmFtZSwgYW5kIGp1ZGdlIG1lIGJ5IHRoeSBzdHJlbmd0aC4KSGVhciBteSBwcmF5ZXIsIE8gR29kOyBnaXZlIGVhciB0byB0aGUgd29yZHMgb2YgbXkgbW91dGguCkZvciBzdHJhbmdlcnMgYXJlIHJpc2VuIHVwIGFnYWluc3QgbWUsIGFuZCBvcHByZXNzb3JzIHNlZWsgYWZ0ZXIgbXkgc291bDogdGhleSBoYXZlIG5vdCBzZXQgR29kIGJlZm9yZSB0aGVtLiBTZWxhaC4KQmVob2xkLCBHb2QgaXMgbWluZSBoZWxwZXI6IHRoZSBMb3JkIGlzIHdpdGggdGhlbSB0aGF0IHVwaG9sZCBteSBzb3VsLgpIZSBzaGFsbCByZXdhcmQgZXZpbCB1bnRvIG1pbmUgZW5lbWllczogY3V0IHRoZW0gb2ZmIGluIHRoeSB0cnV0aC4KSSB3aWxsIGZyZWVseSBzYWNyaWZpY2UgdW50byB0aGVlOiBJIHdpbGwgcHJhaXNlIHRoeSBuYW1lLCBPIExPUkQ7IGZvciBpdCBpcyBnb29kLgpGb3IgaGUgaGF0aCBkZWxpdmVyZWQgbWUgb3V0IG9mIGFsbCB0cm91YmxlOiBhbmQgbWluZSBleWUgaGF0aCBzZWVuIGhpcyBkZXNpcmUgdXBvbiBtaW5lIGVuZW1pZXMuCkdpdmUgZWFyIHRvIG15IHByYXllciwgTyBHb2Q7IGFuZCBoaWRlIG5vdCB0aHlzZWxmIGZyb20gbXkgc3VwcGxpY2F0aW9uLgpBdHRlbmQgdW50byBtZSwgYW5kIGhlYXIgbWU6IEkgbW91cm4gaW4gbXkgY29tcGxhaW50LCBhbmQgbWFrZSBhIG5vaXNlOwpCZWNhdXNlIG9mIHRoZSB2b2ljZSBvZiB0aGUgZW5lbXksIGJlY2F1c2Ugb2YgdGhlIG9wcHJlc3Npb24gb2YgdGhlIHdpY2tlZDogZm9yIHRoZXkgY2FzdCBpbmlxdWl0eSB1cG9uIG1lLCBhbmQgaW4gd3JhdGggdGhleSBoYXRlIG1lLgpNeSBoZWFydCBpcyBzb3JlIHBhaW5lZCB3aXRoaW4gbWU6IGFuZCB0aGUgdGVycm9ycyBvZiBkZWF0aCBhcmUgZmFsbGVuIHVwb24gbWUuCkZlYXJmdWxuZXNzIGFuZCB0cmVtYmxpbmcgYXJlIGNvbWUgdXBvbiBtZSwgYW5kIGhvcnJvciBoYXRoIG92ZXJ3aGVsbWVkIG1lLgpBbmQgSSBzYWlkLCBPaCB0aGF0IEkgaGFkIHdpbmdzIGxpa2UgYSBkb3ZlISBmb3IgdGhlbiB3b3VsZCBJIGZseSBhd2F5LCBhbmQgYmUgYXQgcmVzdC4KTG8sIHRoZW4gd291bGQgSSB3YW5kZXIgZmFyIG9mZiwgYW5kIHJlbWFpbiBpbiB0aGUgd2lsZGVybmVzcy4gU2VsYWguCkkgd291bGQgaGFzdGVuIG15IGVzY2FwZSBmcm9tIHRoZSB3aW5keSBzdG9ybSBhbmQgdGVtcGVzdC4KRGVzdHJveSwgTyBMb3JkLCBhbmQgZGl2aWRlIHRoZWlyIHRvbmd1ZXM6IGZvciBJIGhhdmUgc2VlbiB2aW9sZW5jZSBhbmQgc3RyaWZlIGluIHRoZSBjaXR5LgpEYXkgYW5kIG5pZ2h0IHRoZXkgZ28gYWJvdXQgaXQgdXBvbiB0aGUgd2FsbHMgdGhlcmVvZjogbWlzY2hpZWYgYWxzbyBhbmQgc29ycm93IGFyZSBpbiB0aGUgbWlkc3Qgb2YgaXQuCldpY2tlZG5lc3MgaXMgaW4gdGhlIG1pZHN0IHRoZXJlb2Y6IGRlY2VpdCBhbmQgZ3VpbGUgZGVwYXJ0IG5vdCBmcm9tIGhlciBzdHJlZXRzLgpGb3IgaXQgd2FzIG5vdCBhbiBlbmVteSB0aGF0IHJlcHJvYWNoZWQgbWU7IHRoZW4gSSBjb3VsZCBoYXZlIGJvcm5lIGl0OiBuZWl0aGVyIHdhcyBpdCBoZSB0aGF0IGhhdGVkIG1lIHRoYXQgZGlkIG1hZ25pZnkgaGltc2VsZiBhZ2FpbnN0IG1lOyB0aGVuIEkgd291bGQgaGF2ZSBoaWQgbXlzZWxmIGZyb20gaGltOgpCdXQgaXQgd2FzIHRob3UsIGEgbWFuIG1pbmUgZXF1YWwsIG15IGd1aWRlLCBhbmQgbWluZSBhY3F1YWludGFuY2UuCldlIHRvb2sgc3dlZXQgY291bnNlbCB0b2dldGhlciwgYW5kIHdhbGtlZCB1bnRvIHRoZSBob3VzZSBvZiBHb2QgaW4gY29tcGFueS4KTGV0IGRlYXRoIHNlaXplIHVwb24gdGhlbSwgYW5kIGxldCB0aGVtIGdvIGRvd24gcXVpY2sgaW50byBoZWxsOiBmb3Igd2lja2VkbmVzcyBpcyBpbiB0aGVpciBkd2VsbGluZ3MsIGFuZCBhbW9uZyB0aGVtLgpBcyBmb3IgbWUsIEkgd2lsbCBjYWxsIHVwb24gR29kOyBhbmQgdGhlIExPUkQgc2hhbGwgc2F2ZSBtZS4KRXZlbmluZywgYW5kIG1vcm5pbmcsIGFuZCBhdCBub29uLCB3aWxsIEkgcHJheSwgYW5kIGNyeSBhbG91ZDogYW5kIGhlIHNoYWxsIGhlYXIgbXkgdm9pY2UuCkhlIGhhdGggZGVsaXZlcmVkIG15IHNvdWwgaW4gcGVhY2UgZnJvbSB0aGUgYmF0dGxlIHRoYXQgd2FzIGFnYWluc3QgbWU6IGZvciB0aGVyZSB3ZXJlIG1hbnkgd2l0aCBtZS4KR29kIHNoYWxsIGhlYXIsIGFuZCBhZmZsaWN0IHRoZW0sIGV2ZW4gaGUgdGhhdCBhYmlkZXRoIG9mIG9sZC4gU2VsYWguIEJlY2F1c2UgdGhleSBoYXZlIG5vIGNoYW5nZXMsIHRoZXJlZm9yZSB0aGV5IGZlYXIgbm90IEdvZC4KSGUgaGF0aCBwdXQgZm9ydGggaGlzIGhhbmRzIGFnYWluc3Qgc3VjaCBhcyBiZSBhdCBwZWFjZSB3aXRoIGhpbTogaGUgaGF0aCBicm9rZW4gaGlzIGNvdmVuYW50LgpUaGUgd29yZHMgb2YgaGlzIG1vdXRoIHdlcmUgc21vb3RoZXIgdGhhbiBidXR0ZXIsIGJ1dCB3YXIgd2FzIGluIGhpcyBoZWFydDogaGlzIHdvcmRzIHdlcmUgc29mdGVyIHRoYW4gb2lsLCB5ZXQgd2VyZSB0aGV5IGRyYXduIHN3b3Jkcy4KQ2FzdCB0aHkgYnVyZGVuIHVwb24gdGhlIExPUkQsIGFuZCBoZSBzaGFsbCBzdXN0YWluIHRoZWU6IGhlIHNoYWxsIG5ldmVyIHN1ZmZlciB0aGUgcmlnaHRlb3VzIHRvIGJlIG1vdmVkLgpCdXQgdGhvdSwgTyBHb2QsIHNoYWx0IGJyaW5nIHRoZW0gZG93biBpbnRvIHRoZSBwaXQgb2YgZGVzdHJ1Y3Rpb246IGJsb29keSBhbmQgZGVjZWl0ZnVsIG1lbiBzaGFsbCBub3QgbGl2ZSBvdXQgaGFsZiB0aGVpciBkYXlzOyBidXQgSSB3aWxsIHRydXN0IGluIHRoZWUuCkJlIG1lcmNpZnVsIHVudG8gbWUsIE8gR29kOiBmb3IgbWFuIHdvdWxkIHN3YWxsb3cgbWUgdXA7IGhlIGZpZ2h0aW5nIGRhaWx5IG9wcHJlc3NldGggbWUuCk1pbmUgZW5lbWllcyB3b3VsZCBkYWlseSBzd2FsbG93IG1lIHVwOiBmb3IgdGhleSBiZSBtYW55IHRoYXQgZmlnaHQgYWdhaW5zdCBtZSwgTyB0aG91IG1vc3QgSGlnaC4KV2hhdCB0aW1lIEkgYW0gYWZyYWlkLCBJIHdpbGwgdHJ1c3QgaW4gdGhlZS4KSW4gR29kIEkgd2lsbCBwcmFpc2UgaGlzIHdvcmQsIGluIEdvZCBJIGhhdmUgcHV0IG15IHRydXN0OyBJIHdpbGwgbm90IGZlYXIgd2hhdCBmbGVzaCBjYW4gZG8gdW50byBtZS4KRXZlcnkgZGF5IHRoZXkgd3Jlc3QgbXkgd29yZHM6IGFsbCB0aGVpciB0aG91Z2h0cyBhcmUgYWdhaW5zdCBtZSBmb3IgZXZpbC4KVGhleSBnYXRoZXIgdGhlbXNlbHZlcyB0b2dldGhlciwgdGhleSBoaWRlIHRoZW1zZWx2ZXMsIHRoZXkgbWFyayBteSBzdGVwcywgd2hlbiB0aGV5IHdhaXQgZm9yIG15IHNvdWwuClNoYWxsIHRoZXkgZXNjYXBlIGJ5IGluaXF1aXR5PyBpbiB0aGluZSBhbmdlciBjYXN0IGRvd24gdGhlIHBlb3BsZSwgTyBHb2QuClRob3UgdGVsbGVzdCBteSB3YW5kZXJpbmdzOiBwdXQgdGhvdSBteSB0ZWFycyBpbnRvIHRoeSBib3R0bGU6IGFyZSB0aGV5IG5vdCBpbiB0aHkgYm9vaz8KV2hlbiBJIGNyeSB1bnRvIHRoZWUsIHRoZW4gc2hhbGwgbWluZSBlbmVtaWVzIHR1cm4gYmFjazogdGhpcyBJIGtub3c7IGZvciBHb2QgaXMgZm9yIG1lLgpJbiBHb2Qgd2lsbCBJIHByYWlzZSBoaXMgd29yZDogaW4gdGhlIExPUkQgd2lsbCBJIHByYWlzZSBoaXMgd29yZC4KSW4gR29kIGhhdmUgSSBwdXQgbXkgdHJ1c3Q6IEkgd2lsbCBub3QgYmUgYWZyYWlkIHdoYXQgbWFuIGNhbiBkbyB1bnRvIG1lLgpUaHkgdm93cyBhcmUgdXBvbiBtZSwgTyBHb2Q6IEkgd2lsbCByZW5kZXIgcHJhaXNlcyB1bnRvIHRoZWUuCkZvciB0aG91IGhhc3QgZGVsaXZlcmVkIG15IHNvdWwgZnJvbSBkZWF0aDogd2lsdCBub3QgdGhvdSBkZWxpdmVyIG15IGZlZXQgZnJvbSBmYWxsaW5nLCB0aGF0IEkgbWF5IHdhbGsgYmVmb3JlIEdvZCBpbiB0aGUgbGlnaHQgb2YgdGhlIGxpdmluZz8KQmUgbWVyY2lmdWwgdW50byBtZSwgTyBHb2QsIGJlIG1lcmNpZnVsIHVudG8gbWU6IGZvciBteSBzb3VsIHRydXN0ZXRoIGluIHRoZWU6IHllYSwgaW4gdGhlIHNoYWRvdyBvZiB0aHkgd2luZ3Mgd2lsbCBJIG1ha2UgbXkgcmVmdWdlLCB1bnRpbCB0aGVzZSBjYWxhbWl0aWVzIGJlIG92ZXJwYXN0LgpJIHdpbGwgY3J5IHVudG8gR29kIG1vc3QgaGlnaDsgdW50byBHb2QgdGhhdCBwZXJmb3JtZXRoIGFsbCB0aGluZ3MgZm9yIG1lLgpIZSBzaGFsbCBzZW5kIGZyb20gaGVhdmVuLCBhbmQgc2F2ZSBtZSBmcm9tIHRoZSByZXByb2FjaCBvZiBoaW0gdGhhdCB3b3VsZCBzd2FsbG93IG1lIHVwLiBTZWxhaC4gR29kIHNoYWxsIHNlbmQgZm9ydGggaGlzIG1lcmN5IGFuZCBoaXMgdHJ1dGguCk15IHNvdWwgaXMgYW1vbmcgbGlvbnM6IGFuZCBJIGxpZSBldmVuIGFtb25nIHRoZW0gdGhhdCBhcmUgc2V0IG9uIGZpcmUsIGV2ZW4gdGhlIHNvbnMgb2YgbWVuLCB3aG9zZSB0ZWV0aCBhcmUgc3BlYXJzIGFuZCBhcnJvd3MsIGFuZCB0aGVpciB0b25ndWUgYSBzaGFycCBzd29yZC4KQmUgdGhvdSBleGFsdGVkLCBPIEdvZCwgYWJvdmUgdGhlIGhlYXZlbnM7IGxldCB0aHkgZ2xvcnkgYmUgYWJvdmUgYWxsIHRoZSBlYXJ0aC4KVGhleSBoYXZlIHByZXBhcmVkIGEgbmV0IGZvciBteSBzdGVwczsgbXkgc291bCBpcyBib3dlZCBkb3duOiB0aGV5IGhhdmUgZGlnZ2VkIGEgcGl0IGJlZm9yZSBtZSwgaW50byB0aGUgbWlkc3Qgd2hlcmVvZiB0aGV5IGFyZSBmYWxsZW4gdGhlbXNlbHZlcy4gU2VsYWguCk15IGhlYXJ0IGlzIGZpeGVkLCBPIEdvZCwgbXkgaGVhcnQgaXMgZml4ZWQ6IEkgd2lsbCBzaW5nIGFuZCBnaXZlIHByYWlzZS4KQXdha2UgdXAsIG15IGdsb3J5OyBhd2FrZSwgcHNhbHRlcnkgYW5kIGhhcnA6IEkgbXlzZWxmIHdpbGwgYXdha2UgZWFybHkuCkkgd2lsbCBwcmFpc2UgdGhlZSwgTyBMb3JkLCBhbW9uZyB0aGUgcGVvcGxlOiBJIHdpbGwgc2luZyB1bnRvIHRoZWUgYW1vbmcgdGhlIG5hdGlvbnMuCkZvciB0aHkgbWVyY3kgaXMgZ3JlYXQgdW50byB0aGUgaGVhdmVucywgYW5kIHRoeSB0cnV0aCB1bnRvIHRoZSBjbG91ZHMuCkJlIHRob3UgZXhhbHRlZCwgTyBHb2QsIGFib3ZlIHRoZSBoZWF2ZW5zOiBsZXQgdGh5IGdsb3J5IGJlIGFib3ZlIGFsbCB0aGUgZWFydGguCkRvIHllIGluZGVlZCBzcGVhayByaWdodGVvdXNuZXNzLCBPIGNvbmdyZWdhdGlvbj8gZG8geWUganVkZ2UgdXByaWdodGx5LCBPIHllIHNvbnMgb2YgbWVuPwpZZWEsIGluIGhlYXJ0IHllIHdvcmsgd2lja2VkbmVzczsgeWUgd2VpZ2ggdGhlIHZpb2xlbmNlIG9mIHlvdXIgaGFuZHMgaW4gdGhlIGVhcnRoLgpUaGUgd2lja2VkIGFyZSBlc3RyYW5nZWQgZnJvbSB0aGUgd29tYjogdGhleSBnbyBhc3RyYXkgYXMgc29vbiBhcyB0aGV5IGJlIGJvcm4sIHNwZWFraW5nIGxpZXMuClRoZWlyIHBvaXNvbiBpcyBsaWtlIHRoZSBwb2lzb24gb2YgYSBzZXJwZW50OiB0aGV5IGFyZSBsaWtlIHRoZSBkZWFmIGFkZGVyIHRoYXQgc3RvcHBldGggaGVyIGVhcjsKV2hpY2ggd2lsbCBub3QgaGVhcmtlbiB0byB0aGUgdm9pY2Ugb2YgY2hhcm1lcnMsIGNoYXJtaW5nIG5ldmVyIHNvIHdpc2VseS4KQnJlYWsgdGhlaXIgdGVldGgsIE8gR29kLCBpbiB0aGVpciBtb3V0aDogYnJlYWsgb3V0IHRoZSBncmVhdCB0ZWV0aCBvZiB0aGUgeW91bmcgbGlvbnMsIE8gTE9SRC4KTGV0IHRoZW0gbWVsdCBhd2F5IGFzIHdhdGVycyB3aGljaCBydW4gY29udGludWFsbHk6IHdoZW4gaGUgYmVuZGV0aCBoaXMgYm93IHRvIHNob290IGhpcyBhcnJvd3MsIGxldCB0aGVtIGJlIGFzIGN1dCBpbiBwaWVjZXMuCkFzIGEgc25haWwgd2hpY2ggbWVsdGV0aCwgbGV0IGV2ZXJ5IG9uZSBvZiB0aGVtIHBhc3MgYXdheTogbGlrZSB0aGUgdW50aW1lbHkgYmlydGggb2YgYSB3b21hbiwgdGhhdCB0aGV5IG1heSBub3Qgc2VlIHRoZSBzdW4uCkJlZm9yZSB5b3VyIHBvdHMgY2FuIGZlZWwgdGhlIHRob3JucywgaGUgc2hhbGwgdGFrZSB0aGVtIGF3YXkgYXMgd2l0aCBhIHdoaXJsd2luZCwgYm90aCBsaXZpbmcsIGFuZCBpbiBoaXMgd3JhdGguClRoZSByaWdodGVvdXMgc2hhbGwgcmVqb2ljZSB3aGVuIGhlIHNlZXRoIHRoZSB2ZW5nZWFuY2U6IGhlIHNoYWxsIHdhc2ggaGlzIGZlZXQgaW4gdGhlIGJsb29kIG9mIHRoZSB3aWNrZWQuClNvIHRoYXQgYSBtYW4gc2hhbGwgc2F5LCBWZXJpbHkgdGhlcmUgaXMgYSByZXdhcmQgZm9yIHRoZSByaWdodGVvdXM6IHZlcmlseSBoZSBpcyBhIEdvZCB0aGF0IGp1ZGdldGggaW4gdGhlIGVhcnRoLgpEZWxpdmVyIG1lIGZyb20gbWluZSBlbmVtaWVzLCBPIG15IEdvZDogZGVmZW5kIG1lIGZyb20gdGhlbSB0aGF0IHJpc2UgdXAgYWdhaW5zdCBtZS4KRGVsaXZlciBtZSBmcm9tIHRoZSB3b3JrZXJzIG9mIGluaXF1aXR5LCBhbmQgc2F2ZSBtZSBmcm9tIGJsb29keSBtZW4uCkZvciwgbG8sIHRoZXkgbGllIGluIHdhaXQgZm9yIG15IHNvdWw6IHRoZSBtaWdodHkgYXJlIGdhdGhlcmVkIGFnYWluc3QgbWU7IG5vdCBmb3IgbXkgdHJhbnNncmVzc2lvbiwgbm9yIGZvciBteSBzaW4sIE8gTE9SRC4KVGhleSBydW4gYW5kIHByZXBhcmUgdGhlbXNlbHZlcyB3aXRob3V0IG15IGZhdWx0OiBhd2FrZSB0byBoZWxwIG1lLCBhbmQgYmVob2xkLgpUaG91IHRoZXJlZm9yZSwgTyBMT1JEIEdvZCBvZiBob3N0cywgdGhlIEdvZCBvZiBJc3JhZWwsIGF3YWtlIHRvIHZpc2l0IGFsbCB0aGUgaGVhdGhlbjogYmUgbm90IG1lcmNpZnVsIHRvIGFueSB3aWNrZWQgdHJhbnNncmVzc29ycy4gU2VsYWguClRoZXkgcmV0dXJuIGF0IGV2ZW5pbmc6IHRoZXkgbWFrZSBhIG5vaXNlIGxpa2UgYSBkb2csIGFuZCBnbyByb3VuZCBhYm91dCB0aGUgY2l0eS4KQmVob2xkLCB0aGV5IGJlbGNoIG91dCB3aXRoIHRoZWlyIG1vdXRoOiBzd29yZHMgYXJlIGluIHRoZWlyIGxpcHM6IGZvciB3aG8sIHNheSB0aGV5LCBkb3RoIGhlYXI/CkJ1dCB0aG91LCBPIExPUkQsIHNoYWx0IGxhdWdoIGF0IHRoZW07IHRob3Ugc2hhbHQgaGF2ZSBhbGwgdGhlIGhlYXRoZW4gaW4gZGVyaXNpb24uCkJlY2F1c2Ugb2YgaGlzIHN0cmVuZ3RoIHdpbGwgSSB3YWl0IHVwb24gdGhlZTogZm9yIEdvZCBpcyBteSBkZWZlbmNlLgpUaGUgR29kIG9mIG15IG1lcmN5IHNoYWxsIHByZXZlbnQgbWU6IEdvZCBzaGFsbCBsZXQgbWUgc2VlIG15IGRlc2lyZSB1cG9uIG1pbmUgZW5lbWllcy4KU2xheSB0aGVtIG5vdCwgbGVzdCBteSBwZW9wbGUgZm9yZ2V0OiBzY2F0dGVyIHRoZW0gYnkgdGh5IHBvd2VyOyBhbmQgYnJpbmcgdGhlbSBkb3duLCBPIExvcmQgb3VyIHNoaWVsZC4KRm9yIHRoZSBzaW4gb2YgdGhlaXIgbW91dGggYW5kIHRoZSB3b3JkcyBvZiB0aGVpciBsaXBzIGxldCB0aGVtIGV2ZW4gYmUgdGFrZW4gaW4gdGhlaXIgcHJpZGU6IGFuZCBmb3IgY3Vyc2luZyBhbmQgbHlpbmcgd2hpY2ggdGhleSBzcGVhay4KQ29uc3VtZSB0aGVtIGluIHdyYXRoLCBjb25zdW1lIHRoZW0sIHRoYXQgdGhleSBtYXkgbm90IGJlOiBhbmQgbGV0IHRoZW0ga25vdyB0aGF0IEdvZCBydWxldGggaW4gSmFjb2IgdW50byB0aGUgZW5kcyBvZiB0aGUgZWFydGguIFNlbGFoLgpBbmQgYXQgZXZlbmluZyBsZXQgdGhlbSByZXR1cm47IGFuZCBsZXQgdGhlbSBtYWtlIGEgbm9pc2UgbGlrZSBhIGRvZywgYW5kIGdvIHJvdW5kIGFib3V0IHRoZSBjaXR5LgpMZXQgdGhlbSB3YW5kZXIgdXAgYW5kIGRvd24gZm9yIG1lYXQsIGFuZCBncnVkZ2UgaWYgdGhleSBiZSBub3Qgc2F0aXNmaWVkLgpCdXQgSSB3aWxsIHNpbmcgb2YgdGh5IHBvd2VyOyB5ZWEsIEkgd2lsbCBzaW5nIGFsb3VkIG9mIHRoeSBtZXJjeSBpbiB0aGUgbW9ybmluZzogZm9yIHRob3UgaGFzdCBiZWVuIG15IGRlZmVuY2UgYW5kIHJlZnVnZSBpbiB0aGUgZGF5IG9mIG15IHRyb3VibGUuClVudG8gdGhlZSwgTyBteSBzdHJlbmd0aCwgd2lsbCBJIHNpbmc6IGZvciBHb2QgaXMgbXkgZGVmZW5jZSwgYW5kIHRoZSBHb2Qgb2YgbXkgbWVyY3kuCk8gR29kLCB0aG91IGhhc3QgY2FzdCB1cyBvZmYsIHRob3UgaGFzdCBzY2F0dGVyZWQgdXMsIHRob3UgaGFzdCBiZWVuIGRpc3BsZWFzZWQ7IE8gdHVybiB0aHlzZWxmIHRvIHVzIGFnYWluLgpUaG91IGhhc3QgbWFkZSB0aGUgZWFydGggdG8gdHJlbWJsZTsgdGhvdSBoYXN0IGJyb2tlbiBpdDogaGVhbCB0aGUgYnJlYWNoZXMgdGhlcmVvZjsgZm9yIGl0IHNoYWtldGguClRob3UgaGFzdCBzaGV3ZWQgdGh5IHBlb3BsZSBoYXJkIHRoaW5nczogdGhvdSBoYXN0IG1hZGUgdXMgdG8gZHJpbmsgdGhlIHdpbmUgb2YgYXN0b25pc2htZW50LgpUaG91IGhhc3QgZ2l2ZW4gYSBiYW5uZXIgdG8gdGhlbSB0aGF0IGZlYXIgdGhlZSwgdGhhdCBpdCBtYXkgYmUgZGlzcGxheWVkIGJlY2F1c2Ugb2YgdGhlIHRydXRoLiBTZWxhaC4KVGhhdCB0aHkgYmVsb3ZlZCBtYXkgYmUgZGVsaXZlcmVkOyBzYXZlIHdpdGggdGh5IHJpZ2h0IGhhbmQsIGFuZCBoZWFyIG1lLgpHb2QgaGF0aCBzcG9rZW4gaW4gaGlzIGhvbGluZXNzOyBJIHdpbGwgcmVqb2ljZSwgSSB3aWxsIGRpdmlkZSBTaGVjaGVtLCBhbmQgbWV0ZSBvdXQgdGhlIHZhbGxleSBvZiBTdWNjb3RoLgpHaWxlYWQgaXMgbWluZSwgYW5kIE1hbmFzc2VoIGlzIG1pbmU7IEVwaHJhaW0gYWxzbyBpcyB0aGUgc3RyZW5ndGggb2YgbWluZSBoZWFkOyBKdWRhaCBpcyBteSBsYXdnaXZlcjsKTW9hYiBpcyBteSB3YXNocG90OyBvdmVyIEVkb20gd2lsbCBJIGNhc3Qgb3V0IG15IHNob2U6IFBoaWxpc3RpYSwgdHJpdW1waCB0aG91IGJlY2F1c2Ugb2YgbWUuCldobyB3aWxsIGJyaW5nIG1lIGludG8gdGhlIHN0cm9uZyBjaXR5PyB3aG8gd2lsbCBsZWFkIG1lIGludG8gRWRvbT8KV2lsdCBub3QgdGhvdSwgTyBHb2QsIHdoaWNoIGhhZHN0IGNhc3QgdXMgb2ZmPyBhbmQgdGhvdSwgTyBHb2QsIHdoaWNoIGRpZHN0IG5vdCBnbyBvdXQgd2l0aCBvdXIgYXJtaWVzPwpHaXZlIHVzIGhlbHAgZnJvbSB0cm91YmxlOiBmb3IgdmFpbiBpcyB0aGUgaGVscCBvZiBtYW4uClRocm91Z2ggR29kIHdlIHNoYWxsIGRvIHZhbGlhbnRseTogZm9yIGhlIGl0IGlzIHRoYXQgc2hhbGwgdHJlYWQgZG93biBvdXIgZW5lbWllcy4KSGVhciBteSBjcnksIE8gR29kOyBhdHRlbmQgdW50byBteSBwcmF5ZXIuCkZyb20gdGhlIGVuZCBvZiB0aGUgZWFydGggd2lsbCBJIGNyeSB1bnRvIHRoZWUsIHdoZW4gbXkgaGVhcnQgaXMgb3ZlcndoZWxtZWQ6IGxlYWQgbWUgdG8gdGhlIHJvY2sgdGhhdCBpcyBoaWdoZXIgdGhhbiBJLgpGb3IgdGhvdSBoYXN0IGJlZW4gYSBzaGVsdGVyIGZvciBtZSwgYW5kIGEgc3Ryb25nIHRvd2VyIGZyb20gdGhlIGVuZW15LgpJIHdpbGwgYWJpZGUgaW4gdGh5IHRhYmVybmFjbGUgZm9yIGV2ZXI6IEkgd2lsbCB0cnVzdCBpbiB0aGUgY292ZXJ0IG9mIHRoeSB3aW5ncy4gU2VsYWguCkZvciB0aG91LCBPIEdvZCwgaGFzdCBoZWFyZCBteSB2b3dzOiB0aG91IGhhc3QgZ2l2ZW4gbWUgdGhlIGhlcml0YWdlIG9mIHRob3NlIHRoYXQgZmVhciB0aHkgbmFtZS4KVGhvdSB3aWx0IHByb2xvbmcgdGhlIGtpbmcncyBsaWZlOiBhbmQgaGlzIHllYXJzIGFzIG1hbnkgZ2VuZXJhdGlvbnMuCkhlIHNoYWxsIGFiaWRlIGJlZm9yZSBHb2QgZm9yIGV2ZXI6IE8gcHJlcGFyZSBtZXJjeSBhbmQgdHJ1dGgsIHdoaWNoIG1heSBwcmVzZXJ2ZSBoaW0uClNvIHdpbGwgSSBzaW5nIHByYWlzZSB1bnRvIHRoeSBuYW1lIGZvciBldmVyLCB0aGF0IEkgbWF5IGRhaWx5IHBlcmZvcm0gbXkgdm93cy4KVHJ1bHkgbXkgc291bCB3YWl0ZXRoIHVwb24gR29kOiBmcm9tIGhpbSBjb21ldGggbXkgc2FsdmF0aW9uLgpIZSBvbmx5IGlzIG15IHJvY2sgYW5kIG15IHNhbHZhdGlvbjsgaGUgaXMgbXkgZGVmZW5jZTsgSSBzaGFsbCBub3QgYmUgZ3JlYXRseSBtb3ZlZC4KSG93IGxvbmcgd2lsbCB5ZSBpbWFnaW5lIG1pc2NoaWVmIGFnYWluc3QgYSBtYW4/IHllIHNoYWxsIGJlIHNsYWluIGFsbCBvZiB5b3U6IGFzIGEgYm93aW5nIHdhbGwgc2hhbGwgeWUgYmUsIGFuZCBhcyBhIHRvdHRlcmluZyBmZW5jZS4KVGhleSBvbmx5IGNvbnN1bHQgdG8gY2FzdCBoaW0gZG93biBmcm9tIGhpcyBleGNlbGxlbmN5OiB0aGV5IGRlbGlnaHQgaW4gbGllczogdGhleSBibGVzcyB3aXRoIHRoZWlyIG1vdXRoLCBidXQgdGhleSBjdXJzZSBpbndhcmRseS4gU2VsYWguCk15IHNvdWwsIHdhaXQgdGhvdSBvbmx5IHVwb24gR29kOyBmb3IgbXkgZXhwZWN0YXRpb24gaXMgZnJvbSBoaW0uCkhlIG9ubHkgaXMgbXkgcm9jayBhbmQgbXkgc2FsdmF0aW9uOiBoZSBpcyBteSBkZWZlbmNlOyBJIHNoYWxsIG5vdCBiZSBtb3ZlZC4KSW4gR29kIGlzIG15IHNhbHZhdGlvbiBhbmQgbXkgZ2xvcnk6IHRoZSByb2NrIG9mIG15IHN0cmVuZ3RoLCBhbmQgbXkgcmVmdWdlLCBpcyBpbiBHb2QuClRydXN0IGluIGhpbSBhdCBhbGwgdGltZXM7IHllIHBlb3BsZSwgcG91ciBvdXQgeW91ciBoZWFydCBiZWZvcmUgaGltOiBHb2QgaXMgYSByZWZ1Z2UgZm9yIHVzLiBTZWxhaC4KU3VyZWx5IG1lbiBvZiBsb3cgZGVncmVlIGFyZSB2YW5pdHksIGFuZCBtZW4gb2YgaGlnaCBkZWdyZWUgYXJlIGEgbGllOiB0byBiZSBsYWlkIGluIHRoZSBiYWxhbmNlLCB0aGV5IGFyZSBhbHRvZ2V0aGVyIGxpZ2h0ZXIgdGhhbiB2YW5pdHkuClRydXN0IG5vdCBpbiBvcHByZXNzaW9uLCBhbmQgYmVjb21lIG5vdCB2YWluIGluIHJvYmJlcnk6IGlmIHJpY2hlcyBpbmNyZWFzZSwgc2V0IG5vdCB5b3VyIGhlYXJ0IHVwb24gdGhlbS4KR29kIGhhdGggc3Bva2VuIG9uY2U7IHR3aWNlIGhhdmUgSSBoZWFyZCB0aGlzOyB0aGF0IHBvd2VyIGJlbG9uZ2V0aCB1bnRvIEdvZC4KQWxzbyB1bnRvIHRoZWUsIE8gTG9yZCwgYmVsb25nZXRoIG1lcmN5OiBmb3IgdGhvdSByZW5kZXJlc3QgdG8gZXZlcnkgbWFuIGFjY29yZGluZyB0byBoaXMgd29yay4KTyBHb2QsIHRob3UgYXJ0IG15IEdvZDsgZWFybHkgd2lsbCBJIHNlZWsgdGhlZTogbXkgc291bCB0aGlyc3RldGggZm9yIHRoZWUsIG15IGZsZXNoIGxvbmdldGggZm9yIHRoZWUgaW4gYSBkcnkgYW5kIHRoaXJzdHkgbGFuZCwgd2hlcmUgbm8gd2F0ZXIgaXM7ClRvIHNlZSB0aHkgcG93ZXIgYW5kIHRoeSBnbG9yeSwgc28gYXMgSSBoYXZlIHNlZW4gdGhlZSBpbiB0aGUgc2FuY3R1YXJ5LgpCZWNhdXNlIHRoeSBsb3ZpbmdraW5kbmVzcyBpcyBiZXR0ZXIgdGhhbiBsaWZlLCBteSBsaXBzIHNoYWxsIHByYWlzZSB0aGVlLgpUaHVzIHdpbGwgSSBibGVzcyB0aGVlIHdoaWxlIEkgbGl2ZTogSSB3aWxsIGxpZnQgdXAgbXkgaGFuZHMgaW4gdGh5IG5hbWUuCk15IHNvdWwgc2hhbGwgYmUgc2F0aXNmaWVkIGFzIHdpdGggbWFycm93IGFuZCBmYXRuZXNzOyBhbmQgbXkgbW91dGggc2hhbGwgcHJhaXNlIHRoZWUgd2l0aCBqb3lmdWwgbGlwczoKV2hlbiBJIHJlbWVtYmVyIHRoZWUgdXBvbiBteSBiZWQsIGFuZCBtZWRpdGF0ZSBvbiB0aGVlIGluIHRoZSBuaWdodCB3YXRjaGVzLgpCZWNhdXNlIHRob3UgaGFzdCBiZWVuIG15IGhlbHAsIHRoZXJlZm9yZSBpbiB0aGUgc2hhZG93IG9mIHRoeSB3aW5ncyB3aWxsIEkgcmVqb2ljZS4KTXkgc291bCBmb2xsb3dldGggaGFyZCBhZnRlciB0aGVlOiB0aHkgcmlnaHQgaGFuZCB1cGhvbGRldGggbWUuCkJ1dCB0aG9zZSB0aGF0IHNlZWsgbXkgc291bCwgdG8gZGVzdHJveSBpdCwgc2hhbGwgZ28gaW50byB0aGUgbG93ZXIgcGFydHMgb2YgdGhlIGVhcnRoLgpUaGV5IHNoYWxsIGZhbGwgYnkgdGhlIHN3b3JkOiB0aGV5IHNoYWxsIGJlIGEgcG9ydGlvbiBmb3IgZm94ZXMuCkJ1dCB0aGUga2luZyBzaGFsbCByZWpvaWNlIGluIEdvZDsgZXZlcnkgb25lIHRoYXQgc3dlYXJldGggYnkgaGltIHNoYWxsIGdsb3J5OiBidXQgdGhlIG1vdXRoIG9mIHRoZW0gdGhhdCBzcGVhayBsaWVzIHNoYWxsIGJlIHN0b3BwZWQuCkhlYXIgbXkgdm9pY2UsIE8gR29kLCBpbiBteSBwcmF5ZXI6IHByZXNlcnZlIG15IGxpZmUgZnJvbSBmZWFyIG9mIHRoZSBlbmVteS4KSGlkZSBtZSBmcm9tIHRoZSBzZWNyZXQgY291bnNlbCBvZiB0aGUgd2lja2VkOyBmcm9tIHRoZSBpbnN1cnJlY3Rpb24gb2YgdGhlIHdvcmtlcnMgb2YgaW5pcXVpdHk6CldobyB3aGV0IHRoZWlyIHRvbmd1ZSBsaWtlIGEgc3dvcmQsIGFuZCBiZW5kIHRoZWlyIGJvd3MgdG8gc2hvb3QgdGhlaXIgYXJyb3dzLCBldmVuIGJpdHRlciB3b3JkczoKVGhhdCB0aGV5IG1heSBzaG9vdCBpbiBzZWNyZXQgYXQgdGhlIHBlcmZlY3Q6IHN1ZGRlbmx5IGRvIHRoZXkgc2hvb3QgYXQgaGltLCBhbmQgZmVhciBub3QuClRoZXkgZW5jb3VyYWdlIHRoZW1zZWx2ZXMgaW4gYW4gZXZpbCBtYXR0ZXI6IHRoZXkgY29tbXVuZSBvZiBsYXlpbmcgc25hcmVzIHByaXZpbHk7IHRoZXkgc2F5LCBXaG8gc2hhbGwgc2VlIHRoZW0/ClRoZXkgc2VhcmNoIG91dCBpbmlxdWl0aWVzOyB0aGV5IGFjY29tcGxpc2ggYSBkaWxpZ2VudCBzZWFyY2g6IGJvdGggdGhlIGlud2FyZCB0aG91Z2h0IG9mIGV2ZXJ5IG9uZSBvZiB0aGVtLCBhbmQgdGhlIGhlYXJ0LCBpcyBkZWVwLgpCdXQgR29kIHNoYWxsIHNob290IGF0IHRoZW0gd2l0aCBhbiBhcnJvdzsgc3VkZGVubHkgc2hhbGwgdGhleSBiZSB3b3VuZGVkLgpTbyB0aGV5IHNoYWxsIG1ha2UgdGhlaXIgb3duIHRvbmd1ZSB0byBmYWxsIHVwb24gdGhlbXNlbHZlczogYWxsIHRoYXQgc2VlIHRoZW0gc2hhbGwgZmxlZSBhd2F5LgpBbmQgYWxsIG1lbiBzaGFsbCBmZWFyLCBhbmQgc2hhbGwgZGVjbGFyZSB0aGUgd29yayBvZiBHb2Q7IGZvciB0aGV5IHNoYWxsIHdpc2VseSBjb25zaWRlciBvZiBoaXMgZG9pbmcuClRoZSByaWdodGVvdXMgc2hhbGwgYmUgZ2xhZCBpbiB0aGUgTE9SRCwgYW5kIHNoYWxsIHRydXN0IGluIGhpbTsgYW5kIGFsbCB0aGUgdXByaWdodCBpbiBoZWFydCBzaGFsbCBnbG9yeS4KUHJhaXNlIHdhaXRldGggZm9yIHRoZWUsIE8gR29kLCBpbiBTaW9uOiBhbmQgdW50byB0aGVlIHNoYWxsIHRoZSB2b3cgYmUgcGVyZm9ybWVkLgpPIHRob3UgdGhhdCBoZWFyZXN0IHByYXllciwgdW50byB0aGVlIHNoYWxsIGFsbCBmbGVzaCBjb21lLgpJbmlxdWl0aWVzIHByZXZhaWwgYWdhaW5zdCBtZTogYXMgZm9yIG91ciB0cmFuc2dyZXNzaW9ucywgdGhvdSBzaGFsdCBwdXJnZSB0aGVtIGF3YXkuCkJsZXNzZWQgaXMgdGhlIG1hbiB3aG9tIHRob3UgY2hvb3Nlc3QsIGFuZCBjYXVzZXN0IHRvIGFwcHJvYWNoIHVudG8gdGhlZSwgdGhhdCBoZSBtYXkgZHdlbGwgaW4gdGh5IGNvdXJ0czogd2Ugc2hhbGwgYmUgc2F0aXNmaWVkIHdpdGggdGhlIGdvb2RuZXNzIG9mIHRoeSBob3VzZSwgZXZlbiBvZiB0aHkgaG9seSB0ZW1wbGUuCkJ5IHRlcnJpYmxlIHRoaW5ncyBpbiByaWdodGVvdXNuZXNzIHdpbHQgdGhvdSBhbnN3ZXIgdXMsIE8gR29kIG9mIG91ciBzYWx2YXRpb247IHdobyBhcnQgdGhlIGNvbmZpZGVuY2Ugb2YgYWxsIHRoZSBlbmRzIG9mIHRoZSBlYXJ0aCwgYW5kIG9mIHRoZW0gdGhhdCBhcmUgYWZhciBvZmYgdXBvbiB0aGUgc2VhOgpXaGljaCBieSBoaXMgc3RyZW5ndGggc2V0dGV0aCBmYXN0IHRoZSBtb3VudGFpbnM7IGJlaW5nIGdpcmRlZCB3aXRoIHBvd2VyOgpXaGljaCBzdGlsbGV0aCB0aGUgbm9pc2Ugb2YgdGhlIHNlYXMsIHRoZSBub2lzZSBvZiB0aGVpciB3YXZlcywgYW5kIHRoZSB0dW11bHQgb2YgdGhlIHBlb3BsZS4KVGhleSBhbHNvIHRoYXQgZHdlbGwgaW4gdGhlIHV0dGVybW9zdCBwYXJ0cyBhcmUgYWZyYWlkIGF0IHRoeSB0b2tlbnM6IHRob3UgbWFrZXN0IHRoZSBvdXRnb2luZ3Mgb2YgdGhlIG1vcm5pbmcgYW5kIGV2ZW5pbmcgdG8gcmVqb2ljZS4KVGhvdSB2aXNpdGVzdCB0aGUgZWFydGgsIGFuZCB3YXRlcmVzdCBpdDogdGhvdSBncmVhdGx5IGVucmljaGVzdCBpdCB3aXRoIHRoZSByaXZlciBvZiBHb2QsIHdoaWNoIGlzIGZ1bGwgb2Ygd2F0ZXI6IHRob3UgcHJlcGFyZXN0IHRoZW0gY29ybiwgd2hlbiB0aG91IGhhc3Qgc28gcHJvdmlkZWQgZm9yIGl0LgpUaG91IHdhdGVyZXN0IHRoZSByaWRnZXMgdGhlcmVvZiBhYnVuZGFudGx5OiB0aG91IHNldHRsZXN0IHRoZSBmdXJyb3dzIHRoZXJlb2Y6IHRob3UgbWFrZXN0IGl0IHNvZnQgd2l0aCBzaG93ZXJzOiB0aG91IGJsZXNzZXN0IHRoZSBzcHJpbmdpbmcgdGhlcmVvZi4KVGhvdSBjcm93bmVzdCB0aGUgeWVhciB3aXRoIHRoeSBnb29kbmVzczsgYW5kIHRoeSBwYXRocyBkcm9wIGZhdG5lc3MuClRoZXkgZHJvcCB1cG9uIHRoZSBwYXN0dXJlcyBvZiB0aGUgd2lsZGVybmVzczogYW5kIHRoZSBsaXR0bGUgaGlsbHMgcmVqb2ljZSBvbiBldmVyeSBzaWRlLgpUaGUgcGFzdHVyZXMgYXJlIGNsb3RoZWQgd2l0aCBmbG9ja3M7IHRoZSB2YWxsZXlzIGFsc28gYXJlIGNvdmVyZWQgb3ZlciB3aXRoIGNvcm47IHRoZXkgc2hvdXQgZm9yIGpveSwgdGhleSBhbHNvIHNpbmcuCk1ha2UgYSBqb3lmdWwgbm9pc2UgdW50byBHb2QsIGFsbCB5ZSBsYW5kczoKU2luZyBmb3J0aCB0aGUgaG9ub3VyIG9mIGhpcyBuYW1lOiBtYWtlIGhpcyBwcmFpc2UgZ2xvcmlvdXMuClNheSB1bnRvIEdvZCwgSG93IHRlcnJpYmxlIGFydCB0aG91IGluIHRoeSB3b3JrcyEgdGhyb3VnaCB0aGUgZ3JlYXRuZXNzIG9mIHRoeSBwb3dlciBzaGFsbCB0aGluZSBlbmVtaWVzIHN1Ym1pdCB0aGVtc2VsdmVzIHVudG8gdGhlZS4KQWxsIHRoZSBlYXJ0aCBzaGFsbCB3b3JzaGlwIHRoZWUsIGFuZCBzaGFsbCBzaW5nIHVudG8gdGhlZTsgdGhleSBzaGFsbCBzaW5nIHRvIHRoeSBuYW1lLiBTZWxhaC4KQ29tZSBhbmQgc2VlIHRoZSB3b3JrcyBvZiBHb2Q6IGhlIGlzIHRlcnJpYmxlIGluIGhpcyBkb2luZyB0b3dhcmQgdGhlIGNoaWxkcmVuIG9mIG1lbi4KSGUgdHVybmVkIHRoZSBzZWEgaW50byBkcnkgbGFuZDogdGhleSB3ZW50IHRocm91Z2ggdGhlIGZsb29kIG9uIGZvb3Q6IHRoZXJlIGRpZCB3ZSByZWpvaWNlIGluIGhpbS4KSGUgcnVsZXRoIGJ5IGhpcyBwb3dlciBmb3IgZXZlcjsgaGlzIGV5ZXMgYmVob2xkIHRoZSBuYXRpb25zOiBsZXQgbm90IHRoZSByZWJlbGxpb3VzIGV4YWx0IHRoZW1zZWx2ZXMuIFNlbGFoLgpPIGJsZXNzIG91ciBHb2QsIHllIHBlb3BsZSwgYW5kIG1ha2UgdGhlIHZvaWNlIG9mIGhpcyBwcmFpc2UgdG8gYmUgaGVhcmQ6CldoaWNoIGhvbGRldGggb3VyIHNvdWwgaW4gbGlmZSwgYW5kIHN1ZmZlcmV0aCBub3Qgb3VyIGZlZXQgdG8gYmUgbW92ZWQuCkZvciB0aG91LCBPIEdvZCwgaGFzdCBwcm92ZWQgdXM6IHRob3UgaGFzdCB0cmllZCB1cywgYXMgc2lsdmVyIGlzIHRyaWVkLgpUaG91IGJyb3VnaHRlc3QgdXMgaW50byB0aGUgbmV0OyB0aG91IGxhaWRzdCBhZmZsaWN0aW9uIHVwb24gb3VyIGxvaW5zLgpUaG91IGhhc3QgY2F1c2VkIG1lbiB0byByaWRlIG92ZXIgb3VyIGhlYWRzOyB3ZSB3ZW50IHRocm91Z2ggZmlyZSBhbmQgdGhyb3VnaCB3YXRlcjogYnV0IHRob3UgYnJvdWdodGVzdCB1cyBvdXQgaW50byBhIHdlYWx0aHkgcGxhY2UuCkkgd2lsbCBnbyBpbnRvIHRoeSBob3VzZSB3aXRoIGJ1cm50IG9mZmVyaW5nczogSSB3aWxsIHBheSB0aGVlIG15IHZvd3MsCldoaWNoIG15IGxpcHMgaGF2ZSB1dHRlcmVkLCBhbmQgbXkgbW91dGggaGF0aCBzcG9rZW4sIHdoZW4gSSB3YXMgaW4gdHJvdWJsZS4KSSB3aWxsIG9mZmVyIHVudG8gdGhlZSBidXJudCBzYWNyaWZpY2VzIG9mIGZhdGxpbmdzLCB3aXRoIHRoZSBpbmNlbnNlIG9mIHJhbXM7IEkgd2lsbCBvZmZlciBidWxsb2NrcyB3aXRoIGdvYXRzLiBTZWxhaC4KQ29tZSBhbmQgaGVhciwgYWxsIHllIHRoYXQgZmVhciBHb2QsIGFuZCBJIHdpbGwgZGVjbGFyZSB3aGF0IGhlIGhhdGggZG9uZSBmb3IgbXkgc291bC4KSSBjcmllZCB1bnRvIGhpbSB3aXRoIG15IG1vdXRoLCBhbmQgaGUgd2FzIGV4dG9sbGVkIHdpdGggbXkgdG9uZ3VlLgpJZiBJIHJlZ2FyZCBpbmlxdWl0eSBpbiBteSBoZWFydCwgdGhlIExvcmQgd2lsbCBub3QgaGVhciBtZToKQnV0IHZlcmlseSBHb2QgaGF0aCBoZWFyZCBtZTsgaGUgaGF0aCBhdHRlbmRlZCB0byB0aGUgdm9pY2Ugb2YgbXkgcHJheWVyLgpCbGVzc2VkIGJlIEdvZCwgd2hpY2ggaGF0aCBub3QgdHVybmVkIGF3YXkgbXkgcHJheWVyLCBub3IgaGlzIG1lcmN5IGZyb20gbWUuCkdvZCBiZSBtZXJjaWZ1bCB1bnRvIHVzLCBhbmQgYmxlc3MgdXM7IGFuZCBjYXVzZSBoaXMgZmFjZSB0byBzaGluZSB1cG9uIHVzOyBTZWxhaC4KVGhhdCB0aHkgd2F5IG1heSBiZSBrbm93biB1cG9uIGVhcnRoLCB0aHkgc2F2aW5nIGhlYWx0aCBhbW9uZyBhbGwgbmF0aW9ucy4KTGV0IHRoZSBwZW9wbGUgcHJhaXNlIHRoZWUsIE8gR29kOyBsZXQgYWxsIHRoZSBwZW9wbGUgcHJhaXNlIHRoZWUuCk8gbGV0IHRoZSBuYXRpb25zIGJlIGdsYWQgYW5kIHNpbmcgZm9yIGpveTogZm9yIHRob3Ugc2hhbHQganVkZ2UgdGhlIHBlb3BsZSByaWdodGVvdXNseSwgYW5kIGdvdmVybiB0aGUgbmF0aW9ucyB1cG9uIGVhcnRoLiBTZWxhaC4KTGV0IHRoZSBwZW9wbGUgcHJhaXNlIHRoZWUsIE8gR29kOyBsZXQgYWxsIHRoZSBwZW9wbGUgcHJhaXNlIHRoZWUuClRoZW4gc2hhbGwgdGhlIGVhcnRoIHlpZWxkIGhlciBpbmNyZWFzZTsgYW5kIEdvZCwgZXZlbiBvdXIgb3duIEdvZCwgc2hhbGwgYmxlc3MgdXMuCkdvZCBzaGFsbCBibGVzcyB1czsgYW5kIGFsbCB0aGUgZW5kcyBvZiB0aGUgZWFydGggc2hhbGwgZmVhciBoaW0uCkxldCBHb2QgYXJpc2UsIGxldCBoaXMgZW5lbWllcyBiZSBzY2F0dGVyZWQ6IGxldCB0aGVtIGFsc28gdGhhdCBoYXRlIGhpbSBmbGVlIGJlZm9yZSBoaW0uCkFzIHNtb2tlIGlzIGRyaXZlbiBhd2F5LCBzbyBkcml2ZSB0aGVtIGF3YXk6IGFzIHdheCBtZWx0ZXRoIGJlZm9yZSB0aGUgZmlyZSwgc28gbGV0IHRoZSB3aWNrZWQgcGVyaXNoIGF0IHRoZSBwcmVzZW5jZSBvZiBHb2QuCkJ1dCBsZXQgdGhlIHJpZ2h0ZW91cyBiZSBnbGFkOyBsZXQgdGhlbSByZWpvaWNlIGJlZm9yZSBHb2Q6IHllYSwgbGV0IHRoZW0gZXhjZWVkaW5nbHkgcmVqb2ljZS4KU2luZyB1bnRvIEdvZCwgc2luZyBwcmFpc2VzIHRvIGhpcyBuYW1lOiBleHRvbCBoaW0gdGhhdCByaWRldGggdXBvbiB0aGUgaGVhdmVucyBieSBoaXMgbmFtZSBKQUgsIGFuZCByZWpvaWNlIGJlZm9yZSBoaW0uCkEgZmF0aGVyIG9mIHRoZSBmYXRoZXJsZXNzLCBhbmQgYSBqdWRnZSBvZiB0aGUgd2lkb3dzLCBpcyBHb2QgaW4gaGlzIGhvbHkgaGFiaXRhdGlvbi4KR29kIHNldHRldGggdGhlIHNvbGl0YXJ5IGluIGZhbWlsaWVzOiBoZSBicmluZ2V0aCBvdXQgdGhvc2Ugd2hpY2ggYXJlIGJvdW5kIHdpdGggY2hhaW5zOiBidXQgdGhlIHJlYmVsbGlvdXMgZHdlbGwgaW4gYSBkcnkgbGFuZC4KTyBHb2QsIHdoZW4gdGhvdSB3ZW50ZXN0IGZvcnRoIGJlZm9yZSB0aHkgcGVvcGxlLCB3aGVuIHRob3UgZGlkc3QgbWFyY2ggdGhyb3VnaCB0aGUgd2lsZGVybmVzczsgU2VsYWg6ClRoZSBlYXJ0aCBzaG9vaywgdGhlIGhlYXZlbnMgYWxzbyBkcm9wcGVkIGF0IHRoZSBwcmVzZW5jZSBvZiBHb2Q6IGV2ZW4gU2luYWkgaXRzZWxmIHdhcyBtb3ZlZCBhdCB0aGUgcHJlc2VuY2Ugb2YgR29kLCB0aGUgR29kIG9mIElzcmFlbC4KVGhvdSwgTyBHb2QsIGRpZHN0IHNlbmQgYSBwbGVudGlmdWwgcmFpbiwgd2hlcmVieSB0aG91IGRpZHN0IGNvbmZpcm0gdGhpbmUgaW5oZXJpdGFuY2UsIHdoZW4gaXQgd2FzIHdlYXJ5LgpUaHkgY29uZ3JlZ2F0aW9uIGhhdGggZHdlbHQgdGhlcmVpbjogdGhvdSwgTyBHb2QsIGhhc3QgcHJlcGFyZWQgb2YgdGh5IGdvb2RuZXNzIGZvciB0aGUgcG9vci4KVGhlIExvcmQgZ2F2ZSB0aGUgd29yZDogZ3JlYXQgd2FzIHRoZSBjb21wYW55IG9mIHRob3NlIHRoYXQgcHVibGlzaGVkIGl0LgpLaW5ncyBvZiBhcm1pZXMgZGlkIGZsZWUgYXBhY2U6IGFuZCBzaGUgdGhhdCB0YXJyaWVkIGF0IGhvbWUgZGl2aWRlZCB0aGUgc3BvaWwuClRob3VnaCB5ZSBoYXZlIGxpZW4gYW1vbmcgdGhlIHBvdHMsIHlldCBzaGFsbCB5ZSBiZSBhcyB0aGUgd2luZ3Mgb2YgYSBkb3ZlIGNvdmVyZWQgd2l0aCBzaWx2ZXIsIGFuZCBoZXIgZmVhdGhlcnMgd2l0aCB5ZWxsb3cgZ29sZC4KV2hlbiB0aGUgQWxtaWdodHkgc2NhdHRlcmVkIGtpbmdzIGluIGl0LCBpdCB3YXMgd2hpdGUgYXMgc25vdyBpbiBTYWxtb24uClRoZSBoaWxsIG9mIEdvZCBpcyBhcyB0aGUgaGlsbCBvZiBCYXNoYW47IGFuIGhpZ2ggaGlsbCBhcyB0aGUgaGlsbCBvZiBCYXNoYW4uCldoeSBsZWFwIHllLCB5ZSBoaWdoIGhpbGxzPyB0aGlzIGlzIHRoZSBoaWxsIHdoaWNoIEdvZCBkZXNpcmV0aCB0byBkd2VsbCBpbjsgeWVhLCB0aGUgTE9SRCB3aWxsIGR3ZWxsIGluIGl0IGZvciBldmVyLgpUaGUgY2hhcmlvdHMgb2YgR29kIGFyZSB0d2VudHkgdGhvdXNhbmQsIGV2ZW4gdGhvdXNhbmRzIG9mIGFuZ2VsczogdGhlIExvcmQgaXMgYW1vbmcgdGhlbSwgYXMgaW4gU2luYWksIGluIHRoZSBob2x5IHBsYWNlLgpUaG91IGhhc3QgYXNjZW5kZWQgb24gaGlnaCwgdGhvdSBoYXN0IGxlZCBjYXB0aXZpdHkgY2FwdGl2ZTogdGhvdSBoYXN0IHJlY2VpdmVkIGdpZnRzIGZvciBtZW47IHllYSwgZm9yIHRoZSByZWJlbGxpb3VzIGFsc28sIHRoYXQgdGhlIExPUkQgR29kIG1pZ2h0IGR3ZWxsIGFtb25nIHRoZW0uCkJsZXNzZWQgYmUgdGhlIExvcmQsIHdobyBkYWlseSBsb2FkZXRoIHVzIHdpdGggYmVuZWZpdHMsIGV2ZW4gdGhlIEdvZCBvZiBvdXIgc2FsdmF0aW9uLiBTZWxhaC4KSGUgdGhhdCBpcyBvdXIgR29kIGlzIHRoZSBHb2Qgb2Ygc2FsdmF0aW9uOyBhbmQgdW50byBHT0QgdGhlIExvcmQgYmVsb25nIHRoZSBpc3N1ZXMgZnJvbSBkZWF0aC4KQnV0IEdvZCBzaGFsbCB3b3VuZCB0aGUgaGVhZCBvZiBoaXMgZW5lbWllcywgYW5kIHRoZSBoYWlyeSBzY2FscCBvZiBzdWNoIGFuIG9uZSBhcyBnb2V0aCBvbiBzdGlsbCBpbiBoaXMgdHJlc3Bhc3Nlcy4KVGhlIExvcmQgc2FpZCwgSSB3aWxsIGJyaW5nIGFnYWluIGZyb20gQmFzaGFuLCBJIHdpbGwgYnJpbmcgbXkgcGVvcGxlIGFnYWluIGZyb20gdGhlIGRlcHRocyBvZiB0aGUgc2VhOgpUaGF0IHRoeSBmb290IG1heSBiZSBkaXBwZWQgaW4gdGhlIGJsb29kIG9mIHRoaW5lIGVuZW1pZXMsIGFuZCB0aGUgdG9uZ3VlIG9mIHRoeSBkb2dzIGluIHRoZSBzYW1lLgpUaGV5IGhhdmUgc2VlbiB0aHkgZ29pbmdzLCBPIEdvZDsgZXZlbiB0aGUgZ29pbmdzIG9mIG15IEdvZCwgbXkgS2luZywgaW4gdGhlIHNhbmN0dWFyeS4KVGhlIHNpbmdlcnMgd2VudCBiZWZvcmUsIHRoZSBwbGF5ZXJzIG9uIGluc3RydW1lbnRzIGZvbGxvd2VkIGFmdGVyOyBhbW9uZyB0aGVtIHdlcmUgdGhlIGRhbXNlbHMgcGxheWluZyB3aXRoIHRpbWJyZWxzLgpCbGVzcyB5ZSBHb2QgaW4gdGhlIGNvbmdyZWdhdGlvbnMsIGV2ZW4gdGhlIExvcmQsIGZyb20gdGhlIGZvdW50YWluIG9mIElzcmFlbC4KVGhlcmUgaXMgbGl0dGxlIEJlbmphbWluIHdpdGggdGhlaXIgcnVsZXIsIHRoZSBwcmluY2VzIG9mIEp1ZGFoIGFuZCB0aGVpciBjb3VuY2lsLCB0aGUgcHJpbmNlcyBvZiBaZWJ1bHVuLCBhbmQgdGhlIHByaW5jZXMgb2YgTmFwaHRhbGkuClRoeSBHb2QgaGF0aCBjb21tYW5kZWQgdGh5IHN0cmVuZ3RoOiBzdHJlbmd0aGVuLCBPIEdvZCwgdGhhdCB3aGljaCB0aG91IGhhc3Qgd3JvdWdodCBmb3IgdXMuCkJlY2F1c2Ugb2YgdGh5IHRlbXBsZSBhdCBKZXJ1c2FsZW0gc2hhbGwga2luZ3MgYnJpbmcgcHJlc2VudHMgdW50byB0aGVlLgpSZWJ1a2UgdGhlIGNvbXBhbnkgb2Ygc3BlYXJtZW4sIHRoZSBtdWx0aXR1ZGUgb2YgdGhlIGJ1bGxzLCB3aXRoIHRoZSBjYWx2ZXMgb2YgdGhlIHBlb3BsZSwgdGlsbCBldmVyeSBvbmUgc3VibWl0IGhpbXNlbGYgd2l0aCBwaWVjZXMgb2Ygc2lsdmVyOiBzY2F0dGVyIHRob3UgdGhlIHBlb3BsZSB0aGF0IGRlbGlnaHQgaW4gd2FyLgpQcmluY2VzIHNoYWxsIGNvbWUgb3V0IG9mIEVneXB0OyBFdGhpb3BpYSBzaGFsbCBzb29uIHN0cmV0Y2ggb3V0IGhlciBoYW5kcyB1bnRvIEdvZC4KU2luZyB1bnRvIEdvZCwgeWUga2luZ2RvbXMgb2YgdGhlIGVhcnRoOyBPIHNpbmcgcHJhaXNlcyB1bnRvIHRoZSBMb3JkOyBTZWxhaDoKVG8gaGltIHRoYXQgcmlkZXRoIHVwb24gdGhlIGhlYXZlbnMgb2YgaGVhdmVucywgd2hpY2ggd2VyZSBvZiBvbGQ7IGxvLCBoZSBkb3RoIHNlbmQgb3V0IGhpcyB2b2ljZSwgYW5kIHRoYXQgYSBtaWdodHkgdm9pY2UuCkFzY3JpYmUgeWUgc3RyZW5ndGggdW50byBHb2Q6IGhpcyBleGNlbGxlbmN5IGlzIG92ZXIgSXNyYWVsLCBhbmQgaGlzIHN0cmVuZ3RoIGlzIGluIHRoZSBjbG91ZHMuCk8gR29kLCB0aG91IGFydCB0ZXJyaWJsZSBvdXQgb2YgdGh5IGhvbHkgcGxhY2VzOiB0aGUgR29kIG9mIElzcmFlbCBpcyBoZSB0aGF0IGdpdmV0aCBzdHJlbmd0aCBhbmQgcG93ZXIgdW50byBoaXMgcGVvcGxlLiBCbGVzc2VkIGJlIEdvZC4KU2F2ZSBtZSwgTyBHb2Q7IGZvciB0aGUgd2F0ZXJzIGFyZSBjb21lIGluIHVudG8gbXkgc291bC4KSSBzaW5rIGluIGRlZXAgbWlyZSwgd2hlcmUgdGhlcmUgaXMgbm8gc3RhbmRpbmc6IEkgYW0gY29tZSBpbnRvIGRlZXAgd2F0ZXJzLCB3aGVyZSB0aGUgZmxvb2RzIG92ZXJmbG93IG1lLgpJIGFtIHdlYXJ5IG9mIG15IGNyeWluZzogbXkgdGhyb2F0IGlzIGRyaWVkOiBtaW5lIGV5ZXMgZmFpbCB3aGlsZSBJIHdhaXQgZm9yIG15IEdvZC4KVGhleSB0aGF0IGhhdGUgbWUgd2l0aG91dCBhIGNhdXNlIGFyZSBtb3JlIHRoYW4gdGhlIGhhaXJzIG9mIG1pbmUgaGVhZDogdGhleSB0aGF0IHdvdWxkIGRlc3Ryb3kgbWUsIGJlaW5nIG1pbmUgZW5lbWllcyB3cm9uZ2Z1bGx5LCBhcmUgbWlnaHR5OiB0aGVuIEkgcmVzdG9yZWQgdGhhdCB3aGljaCBJIHRvb2sgbm90IGF3YXkuCk8gR29kLCB0aG91IGtub3dlc3QgbXkgZm9vbGlzaG5lc3M7IGFuZCBteSBzaW5zIGFyZSBub3QgaGlkIGZyb20gdGhlZS4KTGV0IG5vdCB0aGVtIHRoYXQgd2FpdCBvbiB0aGVlLCBPIExvcmQgR09EIG9mIGhvc3RzLCBiZSBhc2hhbWVkIGZvciBteSBzYWtlOiBsZXQgbm90IHRob3NlIHRoYXQgc2VlayB0aGVlIGJlIGNvbmZvdW5kZWQgZm9yIG15IHNha2UsIE8gR29kIG9mIElzcmFlbC4KQmVjYXVzZSBmb3IgdGh5IHNha2UgSSBoYXZlIGJvcm5lIHJlcHJvYWNoOyBzaGFtZSBoYXRoIGNvdmVyZWQgbXkgZmFjZS4KSSBhbSBiZWNvbWUgYSBzdHJhbmdlciB1bnRvIG15IGJyZXRocmVuLCBhbmQgYW4gYWxpZW4gdW50byBteSBtb3RoZXIncyBjaGlsZHJlbi4KRm9yIHRoZSB6ZWFsIG9mIHRoaW5lIGhvdXNlIGhhdGggZWF0ZW4gbWUgdXA7IGFuZCB0aGUgcmVwcm9hY2hlcyBvZiB0aGVtIHRoYXQgcmVwcm9hY2hlZCB0aGVlIGFyZSBmYWxsZW4gdXBvbiBtZS4KV2hlbiBJIHdlcHQsIGFuZCBjaGFzdGVuZWQgbXkgc291bCB3aXRoIGZhc3RpbmcsIHRoYXQgd2FzIHRvIG15IHJlcHJvYWNoLgpJIG1hZGUgc2Fja2Nsb3RoIGFsc28gbXkgZ2FybWVudDsgYW5kIEkgYmVjYW1lIGEgcHJvdmVyYiB0byB0aGVtLgpUaGV5IHRoYXQgc2l0IGluIHRoZSBnYXRlIHNwZWFrIGFnYWluc3QgbWU7IGFuZCBJIHdhcyB0aGUgc29uZyBvZiB0aGUgZHJ1bmthcmRzLgpCdXQgYXMgZm9yIG1lLCBteSBwcmF5ZXIgaXMgdW50byB0aGVlLCBPIExPUkQsIGluIGFuIGFjY2VwdGFibGUgdGltZTogTyBHb2QsIGluIHRoZSBtdWx0aXR1ZGUgb2YgdGh5IG1lcmN5IGhlYXIgbWUsIGluIHRoZSB0cnV0aCBvZiB0aHkgc2FsdmF0aW9uLgpEZWxpdmVyIG1lIG91dCBvZiB0aGUgbWlyZSwgYW5kIGxldCBtZSBub3Qgc2luazogbGV0IG1lIGJlIGRlbGl2ZXJlZCBmcm9tIHRoZW0gdGhhdCBoYXRlIG1lLCBhbmQgb3V0IG9mIHRoZSBkZWVwIHdhdGVycy4KTGV0IG5vdCB0aGUgd2F0ZXJmbG9vZCBvdmVyZmxvdyBtZSwgbmVpdGhlciBsZXQgdGhlIGRlZXAgc3dhbGxvdyBtZSB1cCwgYW5kIGxldCBub3QgdGhlIHBpdCBzaHV0IGhlciBtb3V0aCB1cG9uIG1lLgpIZWFyIG1lLCBPIExPUkQ7IGZvciB0aHkgbG92aW5na2luZG5lc3MgaXMgZ29vZDogdHVybiB1bnRvIG1lIGFjY29yZGluZyB0byB0aGUgbXVsdGl0dWRlIG9mIHRoeSB0ZW5kZXIgbWVyY2llcy4KQW5kIGhpZGUgbm90IHRoeSBmYWNlIGZyb20gdGh5IHNlcnZhbnQ7IGZvciBJIGFtIGluIHRyb3VibGU6IGhlYXIgbWUgc3BlZWRpbHkuCkRyYXcgbmlnaCB1bnRvIG15IHNvdWwsIGFuZCByZWRlZW0gaXQ6IGRlbGl2ZXIgbWUgYmVjYXVzZSBvZiBtaW5lIGVuZW1pZXMuClRob3UgaGFzdCBrbm93biBteSByZXByb2FjaCwgYW5kIG15IHNoYW1lLCBhbmQgbXkgZGlzaG9ub3VyOiBtaW5lIGFkdmVyc2FyaWVzIGFyZSBhbGwgYmVmb3JlIHRoZWUuClJlcHJvYWNoIGhhdGggYnJva2VuIG15IGhlYXJ0OyBhbmQgSSBhbSBmdWxsIG9mIGhlYXZpbmVzczogYW5kIEkgbG9va2VkIGZvciBzb21lIHRvIHRha2UgcGl0eSwgYnV0IHRoZXJlIHdhcyBub25lOyBhbmQgZm9yIGNvbWZvcnRlcnMsIGJ1dCBJIGZvdW5kIG5vbmUuClRoZXkgZ2F2ZSBtZSBhbHNvIGdhbGwgZm9yIG15IG1lYXQ7IGFuZCBpbiBteSB0aGlyc3QgdGhleSBnYXZlIG1lIHZpbmVnYXIgdG8gZHJpbmsuCkxldCB0aGVpciB0YWJsZSBiZWNvbWUgYSBzbmFyZSBiZWZvcmUgdGhlbTogYW5kIHRoYXQgd2hpY2ggc2hvdWxkIGhhdmUgYmVlbiBmb3IgdGhlaXIgd2VsZmFyZSwgbGV0IGl0IGJlY29tZSBhIHRyYXAuCkxldCB0aGVpciBleWVzIGJlIGRhcmtlbmVkLCB0aGF0IHRoZXkgc2VlIG5vdDsgYW5kIG1ha2UgdGhlaXIgbG9pbnMgY29udGludWFsbHkgdG8gc2hha2UuClBvdXIgb3V0IHRoaW5lIGluZGlnbmF0aW9uIHVwb24gdGhlbSwgYW5kIGxldCB0aHkgd3JhdGhmdWwgYW5nZXIgdGFrZSBob2xkIG9mIHRoZW0uCkxldCB0aGVpciBoYWJpdGF0aW9uIGJlIGRlc29sYXRlOyBhbmQgbGV0IG5vbmUgZHdlbGwgaW4gdGhlaXIgdGVudHMuCkZvciB0aGV5IHBlcnNlY3V0ZSBoaW0gd2hvbSB0aG91IGhhc3Qgc21pdHRlbjsgYW5kIHRoZXkgdGFsayB0byB0aGUgZ3JpZWYgb2YgdGhvc2Ugd2hvbSB0aG91IGhhc3Qgd291bmRlZC4KQWRkIGluaXF1aXR5IHVudG8gdGhlaXIgaW5pcXVpdHk6IGFuZCBsZXQgdGhlbSBub3QgY29tZSBpbnRvIHRoeSByaWdodGVvdXNuZXNzLgpMZXQgdGhlbSBiZSBibG90dGVkIG91dCBvZiB0aGUgYm9vayBvZiB0aGUgbGl2aW5nLCBhbmQgbm90IGJlIHdyaXR0ZW4gd2l0aCB0aGUgcmlnaHRlb3VzLgpCdXQgSSBhbSBwb29yIGFuZCBzb3Jyb3dmdWw6IGxldCB0aHkgc2FsdmF0aW9uLCBPIEdvZCwgc2V0IG1lIHVwIG9uIGhpZ2guCkkgd2lsbCBwcmFpc2UgdGhlIG5hbWUgb2YgR29kIHdpdGggYSBzb25nLCBhbmQgd2lsbCBtYWduaWZ5IGhpbSB3aXRoIHRoYW5rc2dpdmluZy4KVGhpcyBhbHNvIHNoYWxsIHBsZWFzZSB0aGUgTE9SRCBiZXR0ZXIgdGhhbiBhbiBveCBvciBidWxsb2NrIHRoYXQgaGF0aCBob3JucyBhbmQgaG9vZnMuClRoZSBodW1ibGUgc2hhbGwgc2VlIHRoaXMsIGFuZCBiZSBnbGFkOiBhbmQgeW91ciBoZWFydCBzaGFsbCBsaXZlIHRoYXQgc2VlayBHb2QuCkZvciB0aGUgTE9SRCBoZWFyZXRoIHRoZSBwb29yLCBhbmQgZGVzcGlzZXRoIG5vdCBoaXMgcHJpc29uZXJzLgpMZXQgdGhlIGhlYXZlbiBhbmQgZWFydGggcHJhaXNlIGhpbSwgdGhlIHNlYXMsIGFuZCBldmVyeSB0aGluZyB0aGF0IG1vdmV0aCB0aGVyZWluLgpGb3IgR29kIHdpbGwgc2F2ZSBaaW9uLCBhbmQgd2lsbCBidWlsZCB0aGUgY2l0aWVzIG9mIEp1ZGFoOiB0aGF0IHRoZXkgbWF5IGR3ZWxsIHRoZXJlLCBhbmQgaGF2ZSBpdCBpbiBwb3NzZXNzaW9uLgpUaGUgc2VlZCBhbHNvIG9mIGhpcyBzZXJ2YW50cyBzaGFsbCBpbmhlcml0IGl0OiBhbmQgdGhleSB0aGF0IGxvdmUgaGlzIG5hbWUgc2hhbGwgZHdlbGwgdGhlcmVpbi4KTUFLRSBIQVNURSwgTyBHT0QsIFRPIERFTElWRVIgTUU7IE1BS0UgSEFTVEUgVE8gSEVMUCBNRSwgTyBMT1JELgpMZXQgdGhlbSBiZSBhc2hhbWVkIGFuZCBjb25mb3VuZGVkIHRoYXQgc2VlayBhZnRlciBteSBzb3VsOiBsZXQgdGhlbSBiZSB0dXJuZWQgYmFja3dhcmQsIGFuZCBwdXQgdG8gY29uZnVzaW9uLCB0aGF0IGRlc2lyZSBteSBodXJ0LgpMZXQgdGhlbSBiZSB0dXJuZWQgYmFjayBmb3IgYSByZXdhcmQgb2YgdGhlaXIgc2hhbWUgdGhhdCBzYXksIEFoYSwgYWhhLgpMZXQgYWxsIHRob3NlIHRoYXQgc2VlayB0aGVlIHJlam9pY2UgYW5kIGJlIGdsYWQgaW4gdGhlZTogYW5kIGxldCBzdWNoIGFzIGxvdmUgdGh5IHNhbHZhdGlvbiBzYXkgY29udGludWFsbHksIExldCBHb2QgYmUgbWFnbmlmaWVkLgpCdXQgSSBhbSBwb29yIGFuZCBuZWVkeTogbWFrZSBoYXN0ZSB1bnRvIG1lLCBPIEdvZDogdGhvdSBhcnQgbXkgaGVscCBhbmQgbXkgZGVsaXZlcmVyOyBPIExPUkQsIG1ha2Ugbm8gdGFycnlpbmcuCkluIHRoZWUsIE8gTE9SRCwgZG8gSSBwdXQgbXkgdHJ1c3Q6IGxldCBtZSBuZXZlciBiZSBwdXQgdG8gY29uZnVzaW9uLgpEZWxpdmVyIG1lIGluIHRoeSByaWdodGVvdXNuZXNzLCBhbmQgY2F1c2UgbWUgdG8gZXNjYXBlOiBpbmNsaW5lIHRoaW5lIGVhciB1bnRvIG1lLCBhbmQgc2F2ZSBtZS4KQmUgdGhvdSBteSBzdHJvbmcgaGFiaXRhdGlvbiwgd2hlcmV1bnRvIEkgbWF5IGNvbnRpbnVhbGx5IHJlc29ydDogdGhvdSBoYXN0IGdpdmVuIGNvbW1hbmRtZW50IHRvIHNhdmUgbWU7IGZvciB0aG91IGFydCBteSByb2NrIGFuZCBteSBmb3J0cmVzcy4KRGVsaXZlciBtZSwgTyBteSBHb2QsIG91dCBvZiB0aGUgaGFuZCBvZiB0aGUgd2lja2VkLCBvdXQgb2YgdGhlIGhhbmQgb2YgdGhlIHVucmlnaHRlb3VzIGFuZCBjcnVlbCBtYW4uCkZvciB0aG91IGFydCBteSBob3BlLCBPIExvcmQgR09EOiB0aG91IGFydCBteSB0cnVzdCBmcm9tIG15IHlvdXRoLgpCeSB0aGVlIGhhdmUgSSBiZWVuIGhvbGRlbiB1cCBmcm9tIHRoZSB3b21iOiB0aG91IGFydCBoZSB0aGF0IHRvb2sgbWUgb3V0IG9mIG15IG1vdGhlcidzIGJvd2VsczogbXkgcHJhaXNlIHNoYWxsIGJlIGNvbnRpbnVhbGx5IG9mIHRoZWUuCkkgYW0gYXMgYSB3b25kZXIgdW50byBtYW55OyBidXQgdGhvdSBhcnQgbXkgc3Ryb25nIHJlZnVnZS4KTGV0IG15IG1vdXRoIGJlIGZpbGxlZCB3aXRoIHRoeSBwcmFpc2UgYW5kIHdpdGggdGh5IGhvbm91ciBhbGwgdGhlIGRheS4KQ2FzdCBtZSBub3Qgb2ZmIGluIHRoZSB0aW1lIG9mIG9sZCBhZ2U7IGZvcnNha2UgbWUgbm90IHdoZW4gbXkgc3RyZW5ndGggZmFpbGV0aC4KRm9yIG1pbmUgZW5lbWllcyBzcGVhayBhZ2FpbnN0IG1lOyBhbmQgdGhleSB0aGF0IGxheSB3YWl0IGZvciBteSBzb3VsIHRha2UgY291bnNlbCB0b2dldGhlciwKU2F5aW5nLCBHb2QgaGF0aCBmb3JzYWtlbiBoaW06IHBlcnNlY3V0ZSBhbmQgdGFrZSBoaW07IGZvciB0aGVyZSBpcyBub25lIHRvIGRlbGl2ZXIgaGltLgpPIEdvZCwgYmUgbm90IGZhciBmcm9tIG1lOiBPIG15IEdvZCwgbWFrZSBoYXN0ZSBmb3IgbXkgaGVscC4KTGV0IHRoZW0gYmUgY29uZm91bmRlZCBhbmQgY29uc3VtZWQgdGhhdCBhcmUgYWR2ZXJzYXJpZXMgdG8gbXkgc291bDsgbGV0IHRoZW0gYmUgY292ZXJlZCB3aXRoIHJlcHJvYWNoIGFuZCBkaXNob25vdXIgdGhhdCBzZWVrIG15IGh1cnQuCkJ1dCBJIHdpbGwgaG9wZSBjb250aW51YWxseSwgYW5kIHdpbGwgeWV0IHByYWlzZSB0aGVlIG1vcmUgYW5kIG1vcmUuCk15IG1vdXRoIHNoYWxsIHNoZXcgZm9ydGggdGh5IHJpZ2h0ZW91c25lc3MgYW5kIHRoeSBzYWx2YXRpb24gYWxsIHRoZSBkYXk7IGZvciBJIGtub3cgbm90IHRoZSBudW1iZXJzIHRoZXJlb2YuCkkgd2lsbCBnbyBpbiB0aGUgc3RyZW5ndGggb2YgdGhlIExvcmQgR09EOiBJIHdpbGwgbWFrZSBtZW50aW9uIG9mIHRoeSByaWdodGVvdXNuZXNzLCBldmVuIG9mIHRoaW5lIG9ubHkuCk8gR29kLCB0aG91IGhhc3QgdGF1Z2h0IG1lIGZyb20gbXkgeW91dGg6IGFuZCBoaXRoZXJ0byBoYXZlIEkgZGVjbGFyZWQgdGh5IHdvbmRyb3VzIHdvcmtzLgpOb3cgYWxzbyB3aGVuIEkgYW0gb2xkIGFuZCBncmV5aGVhZGVkLCBPIEdvZCwgZm9yc2FrZSBtZSBub3Q7IHVudGlsIEkgaGF2ZSBzaGV3ZWQgdGh5IHN0cmVuZ3RoIHVudG8gdGhpcyBnZW5lcmF0aW9uLCBhbmQgdGh5IHBvd2VyIHRvIGV2ZXJ5IG9uZSB0aGF0IGlzIHRvIGNvbWUuClRoeSByaWdodGVvdXNuZXNzIGFsc28sIE8gR29kLCBpcyB2ZXJ5IGhpZ2gsIHdobyBoYXN0IGRvbmUgZ3JlYXQgdGhpbmdzOiBPIEdvZCwgd2hvIGlzIGxpa2UgdW50byB0aGVlIQpUaG91LCB3aGljaCBoYXN0IHNoZXdlZCBtZSBncmVhdCBhbmQgc29yZSB0cm91Ymxlcywgc2hhbHQgcXVpY2tlbiBtZSBhZ2FpbiwgYW5kIHNoYWx0IGJyaW5nIG1lIHVwIGFnYWluIGZyb20gdGhlIGRlcHRocyBvZiB0aGUgZWFydGguClRob3Ugc2hhbHQgaW5jcmVhc2UgbXkgZ3JlYXRuZXNzLCBhbmQgY29tZm9ydCBtZSBvbiBldmVyeSBzaWRlLgpJIHdpbGwgYWxzbyBwcmFpc2UgdGhlZSB3aXRoIHRoZSBwc2FsdGVyeSwgZXZlbiB0aHkgdHJ1dGgsIE8gbXkgR29kOiB1bnRvIHRoZWUgd2lsbCBJIHNpbmcgd2l0aCB0aGUgaGFycCwgTyB0aG91IEhvbHkgT25lIG9mIElzcmFlbC4KTXkgbGlwcyBzaGFsbCBncmVhdGx5IHJlam9pY2Ugd2hlbiBJIHNpbmcgdW50byB0aGVlOyBhbmQgbXkgc291bCwgd2hpY2ggdGhvdSBoYXN0IHJlZGVlbWVkLgpNeSB0b25ndWUgYWxzbyBzaGFsbCB0YWxrIG9mIHRoeSByaWdodGVvdXNuZXNzIGFsbCB0aGUgZGF5IGxvbmc6IGZvciB0aGV5IGFyZSBjb25mb3VuZGVkLCBmb3IgdGhleSBhcmUgYnJvdWdodCB1bnRvIHNoYW1lLCB0aGF0IHNlZWsgbXkgaHVydC4KR2l2ZSB0aGUga2luZyB0aHkganVkZ21lbnRzLCBPIEdvZCwgYW5kIHRoeSByaWdodGVvdXNuZXNzIHVudG8gdGhlIGtpbmcncyBzb24uCkhlIHNoYWxsIGp1ZGdlIHRoeSBwZW9wbGUgd2l0aCByaWdodGVvdXNuZXNzLCBhbmQgdGh5IHBvb3Igd2l0aCBqdWRnbWVudC4KVGhlIG1vdW50YWlucyBzaGFsbCBicmluZyBwZWFjZSB0byB0aGUgcGVvcGxlLCBhbmQgdGhlIGxpdHRsZSBoaWxscywgYnkgcmlnaHRlb3VzbmVzcy4KSGUgc2hhbGwganVkZ2UgdGhlIHBvb3Igb2YgdGhlIHBlb3BsZSwgaGUgc2hhbGwgc2F2ZSB0aGUgY2hpbGRyZW4gb2YgdGhlIG5lZWR5LCBhbmQgc2hhbGwgYnJlYWsgaW4gcGllY2VzIHRoZSBvcHByZXNzb3IuClRoZXkgc2hhbGwgZmVhciB0aGVlIGFzIGxvbmcgYXMgdGhlIHN1biBhbmQgbW9vbiBlbmR1cmUsIHRocm91Z2hvdXQgYWxsIGdlbmVyYXRpb25zLgpIZSBzaGFsbCBjb21lIGRvd24gbGlrZSByYWluIHVwb24gdGhlIG1vd24gZ3Jhc3M6IGFzIHNob3dlcnMgdGhhdCB3YXRlciB0aGUgZWFydGguCkluIGhpcyBkYXlzIHNoYWxsIHRoZSByaWdodGVvdXMgZmxvdXJpc2g7IGFuZCBhYnVuZGFuY2Ugb2YgcGVhY2Ugc28gbG9uZyBhcyB0aGUgbW9vbiBlbmR1cmV0aC4KSGUgc2hhbGwgaGF2ZSBkb21pbmlvbiBhbHNvIGZyb20gc2VhIHRvIHNlYSwgYW5kIGZyb20gdGhlIHJpdmVyIHVudG8gdGhlIGVuZHMgb2YgdGhlIGVhcnRoLgpUaGV5IHRoYXQgZHdlbGwgaW4gdGhlIHdpbGRlcm5lc3Mgc2hhbGwgYm93IGJlZm9yZSBoaW07IGFuZCBoaXMgZW5lbWllcyBzaGFsbCBsaWNrIHRoZSBkdXN0LgpUaGUga2luZ3Mgb2YgVGFyc2hpc2ggYW5kIG9mIHRoZSBpc2xlcyBzaGFsbCBicmluZyBwcmVzZW50czogdGhlIGtpbmdzIG9mIFNoZWJhIGFuZCBTZWJhIHNoYWxsIG9mZmVyIGdpZnRzLgpZZWEsIGFsbCBraW5ncyBzaGFsbCBmYWxsIGRvd24gYmVmb3JlIGhpbTogYWxsIG5hdGlvbnMgc2hhbGwgc2VydmUgaGltLgpGb3IgaGUgc2hhbGwgZGVsaXZlciB0aGUgbmVlZHkgd2hlbiBoZSBjcmlldGg7IHRoZSBwb29yIGFsc28sIGFuZCBoaW0gdGhhdCBoYXRoIG5vIGhlbHBlci4KSGUgc2hhbGwgc3BhcmUgdGhlIHBvb3IgYW5kIG5lZWR5LCBhbmQgc2hhbGwgc2F2ZSB0aGUgc291bHMgb2YgdGhlIG5lZWR5LgpIZSBzaGFsbCByZWRlZW0gdGhlaXIgc291bCBmcm9tIGRlY2VpdCBhbmQgdmlvbGVuY2U6IGFuZCBwcmVjaW91cyBzaGFsbCB0aGVpciBibG9vZCBiZSBpbiBoaXMgc2lnaHQuCkFuZCBoZSBzaGFsbCBsaXZlLCBhbmQgdG8gaGltIHNoYWxsIGJlIGdpdmVuIG9mIHRoZSBnb2xkIG9mIFNoZWJhOiBwcmF5ZXIgYWxzbyBzaGFsbCBiZSBtYWRlIGZvciBoaW0gY29udGludWFsbHk7IGFuZCBkYWlseSBzaGFsbCBoZSBiZSBwcmFpc2VkLgpUaGVyZSBzaGFsbCBiZSBhbiBoYW5kZnVsIG9mIGNvcm4gaW4gdGhlIGVhcnRoIHVwb24gdGhlIHRvcCBvZiB0aGUgbW91bnRhaW5zOyB0aGUgZnJ1aXQgdGhlcmVvZiBzaGFsbCBzaGFrZSBsaWtlIExlYmFub246IGFuZCB0aGV5IG9mIHRoZSBjaXR5IHNoYWxsIGZsb3VyaXNoIGxpa2UgZ3Jhc3Mgb2YgdGhlIGVhcnRoLgpIaXMgbmFtZSBzaGFsbCBlbmR1cmUgZm9yIGV2ZXI6IGhpcyBuYW1lIHNoYWxsIGJlIGNvbnRpbnVlZCBhcyBsb25nIGFzIHRoZSBzdW46IGFuZCBtZW4gc2hhbGwgYmUgYmxlc3NlZCBpbiBoaW06IGFsbCBuYXRpb25zIHNoYWxsIGNhbGwgaGltIGJsZXNzZWQuCkJsZXNzZWQgYmUgdGhlIExPUkQgR29kLCB0aGUgR29kIG9mIElzcmFlbCwgd2hvIG9ubHkgZG9ldGggd29uZHJvdXMgdGhpbmdzLgpBbmQgYmxlc3NlZCBiZSBoaXMgZ2xvcmlvdXMgbmFtZSBmb3IgZXZlcjogYW5kIGxldCB0aGUgd2hvbGUgZWFydGggYmUgZmlsbGVkIHdpdGggaGlzIGdsb3J5OyBBbWVuLCBhbmQgQW1lbi4KVGhlIHByYXllcnMgb2YgRGF2aWQgdGhlIHNvbiBvZiBKZXNzZSBhcmUgZW5kZWQuClRydWx5IEdvZCBpcyBnb29kIHRvIElzcmFlbCwgZXZlbiB0byBzdWNoIGFzIGFyZSBvZiBhIGNsZWFuIGhlYXJ0LgpCdXQgYXMgZm9yIG1lLCBteSBmZWV0IHdlcmUgYWxtb3N0IGdvbmU7IG15IHN0ZXBzIGhhZCB3ZWxsIG5pZ2ggc2xpcHBlZC4KRm9yIEkgd2FzIGVudmlvdXMgYXQgdGhlIGZvb2xpc2gsIHdoZW4gSSBzYXcgdGhlIHByb3NwZXJpdHkgb2YgdGhlIHdpY2tlZC4KRm9yIHRoZXJlIGFyZSBubyBiYW5kcyBpbiB0aGVpciBkZWF0aDogYnV0IHRoZWlyIHN0cmVuZ3RoIGlzIGZpcm0uClRoZXkgYXJlIG5vdCBpbiB0cm91YmxlIGFzIG90aGVyIG1lbjsgbmVpdGhlciBhcmUgdGhleSBwbGFndWVkIGxpa2Ugb3RoZXIgbWVuLgpUaGVyZWZvcmUgcHJpZGUgY29tcGFzc2V0aCB0aGVtIGFib3V0IGFzIGEgY2hhaW47IHZpb2xlbmNlIGNvdmVyZXRoIHRoZW0gYXMgYSBnYXJtZW50LgpUaGVpciBleWVzIHN0YW5kIG91dCB3aXRoIGZhdG5lc3M6IHRoZXkgaGF2ZSBtb3JlIHRoYW4gaGVhcnQgY291bGQgd2lzaC4KVGhleSBhcmUgY29ycnVwdCwgYW5kIHNwZWFrIHdpY2tlZGx5IGNvbmNlcm5pbmcgb3BwcmVzc2lvbjogdGhleSBzcGVhayBsb2Z0aWx5LgpUaGV5IHNldCB0aGVpciBtb3V0aCBhZ2FpbnN0IHRoZSBoZWF2ZW5zLCBhbmQgdGhlaXIgdG9uZ3VlIHdhbGtldGggdGhyb3VnaCB0aGUgZWFydGguClRoZXJlZm9yZSBoaXMgcGVvcGxlIHJldHVybiBoaXRoZXI6IGFuZCB3YXRlcnMgb2YgYSBmdWxsIGN1cCBhcmUgd3J1bmcgb3V0IHRvIHRoZW0uCkFuZCB0aGV5IHNheSwgSG93IGRvdGggR29kIGtub3c/IGFuZCBpcyB0aGVyZSBrbm93bGVkZ2UgaW4gdGhlIG1vc3QgSGlnaD8KQmVob2xkLCB0aGVzZSBhcmUgdGhlIHVuZ29kbHksIHdobyBwcm9zcGVyIGluIHRoZSB3b3JsZDsgdGhleSBpbmNyZWFzZSBpbiByaWNoZXMuClZlcmlseSBJIGhhdmUgY2xlYW5zZWQgbXkgaGVhcnQgaW4gdmFpbiwgYW5kIHdhc2hlZCBteSBoYW5kcyBpbiBpbm5vY2VuY3kuCkZvciBhbGwgdGhlIGRheSBsb25nIGhhdmUgSSBiZWVuIHBsYWd1ZWQsIGFuZCBjaGFzdGVuZWQgZXZlcnkgbW9ybmluZy4KSWYgSSBzYXksIEkgd2lsbCBzcGVhayB0aHVzOyBiZWhvbGQsIEkgc2hvdWxkIG9mZmVuZCBhZ2FpbnN0IHRoZSBnZW5lcmF0aW9uIG9mIHRoeSBjaGlsZHJlbi4KV2hlbiBJIHRob3VnaHQgdG8ga25vdyB0aGlzLCBpdCB3YXMgdG9vIHBhaW5mdWwgZm9yIG1lOwpVbnRpbCBJIHdlbnQgaW50byB0aGUgc2FuY3R1YXJ5IG9mIEdvZDsgdGhlbiB1bmRlcnN0b29kIEkgdGhlaXIgZW5kLgpTdXJlbHkgdGhvdSBkaWRzdCBzZXQgdGhlbSBpbiBzbGlwcGVyeSBwbGFjZXM6IHRob3UgY2FzdGVkc3QgdGhlbSBkb3duIGludG8gZGVzdHJ1Y3Rpb24uCkhvdyBhcmUgdGhleSBicm91Z2h0IGludG8gZGVzb2xhdGlvbiwgYXMgaW4gYSBtb21lbnQhIHRoZXkgYXJlIHV0dGVybHkgY29uc3VtZWQgd2l0aCB0ZXJyb3JzLgpBcyBhIGRyZWFtIHdoZW4gb25lIGF3YWtldGg7IHNvLCBPIExvcmQsIHdoZW4gdGhvdSBhd2FrZXN0LCB0aG91IHNoYWx0IGRlc3Bpc2UgdGhlaXIgaW1hZ2UuClRodXMgbXkgaGVhcnQgd2FzIGdyaWV2ZWQsIGFuZCBJIHdhcyBwcmlja2VkIGluIG15IHJlaW5zLgpTbyBmb29saXNoIHdhcyBJLCBhbmQgaWdub3JhbnQ6IEkgd2FzIGFzIGEgYmVhc3QgYmVmb3JlIHRoZWUuCk5ldmVydGhlbGVzcyBJIGFtIGNvbnRpbnVhbGx5IHdpdGggdGhlZTogdGhvdSBoYXN0IGhvbGRlbiBtZSBieSBteSByaWdodCBoYW5kLgpUaG91IHNoYWx0IGd1aWRlIG1lIHdpdGggdGh5IGNvdW5zZWwsIGFuZCBhZnRlcndhcmQgcmVjZWl2ZSBtZSB0byBnbG9yeS4KV2hvbSBoYXZlIEkgaW4gaGVhdmVuIGJ1dCB0aGVlPyBhbmQgdGhlcmUgaXMgbm9uZSB1cG9uIGVhcnRoIHRoYXQgSSBkZXNpcmUgYmVzaWRlIHRoZWUuCk15IGZsZXNoIGFuZCBteSBoZWFydCBmYWlsZXRoOiBidXQgR29kIGlzIHRoZSBzdHJlbmd0aCBvZiBteSBoZWFydCwgYW5kIG15IHBvcnRpb24gZm9yIGV2ZXIuCkZvciwgbG8sIHRoZXkgdGhhdCBhcmUgZmFyIGZyb20gdGhlZSBzaGFsbCBwZXJpc2g6IHRob3UgaGFzdCBkZXN0cm95ZWQgYWxsIHRoZW0gdGhhdCBnbyBhIHdob3JpbmcgZnJvbSB0aGVlLgpCdXQgaXQgaXMgZ29vZCBmb3IgbWUgdG8gZHJhdyBuZWFyIHRvIEdvZDogSSBoYXZlIHB1dCBteSB0cnVzdCBpbiB0aGUgTG9yZCBHT0QsIHRoYXQgSSBtYXkgZGVjbGFyZSBhbGwgdGh5IHdvcmtzLgpPIEdvZCwgd2h5IGhhc3QgdGhvdSBjYXN0IHVzIG9mZiBmb3IgZXZlcj8gd2h5IGRvdGggdGhpbmUgYW5nZXIgc21va2UgYWdhaW5zdCB0aGUgc2hlZXAgb2YgdGh5IHBhc3R1cmU/ClJlbWVtYmVyIHRoeSBjb25ncmVnYXRpb24sIHdoaWNoIHRob3UgaGFzdCBwdXJjaGFzZWQgb2Ygb2xkOyB0aGUgcm9kIG9mIHRoaW5lIGluaGVyaXRhbmNlLCB3aGljaCB0aG91IGhhc3QgcmVkZWVtZWQ7IHRoaXMgbW91bnQgWmlvbiwgd2hlcmVpbiB0aG91IGhhc3QgZHdlbHQuCkxpZnQgdXAgdGh5IGZlZXQgdW50byB0aGUgcGVycGV0dWFsIGRlc29sYXRpb25zOyBldmVuIGFsbCB0aGF0IHRoZSBlbmVteSBoYXRoIGRvbmUgd2lja2VkbHkgaW4gdGhlIHNhbmN0dWFyeS4KVGhpbmUgZW5lbWllcyByb2FyIGluIHRoZSBtaWRzdCBvZiB0aHkgY29uZ3JlZ2F0aW9uczsgdGhleSBzZXQgdXAgdGhlaXIgZW5zaWducyBmb3Igc2lnbnMuCkEgbWFuIHdhcyBmYW1vdXMgYWNjb3JkaW5nIGFzIGhlIGhhZCBsaWZ0ZWQgdXAgYXhlcyB1cG9uIHRoZSB0aGljayB0cmVlcy4KQnV0IG5vdyB0aGV5IGJyZWFrIGRvd24gdGhlIGNhcnZlZCB3b3JrIHRoZXJlb2YgYXQgb25jZSB3aXRoIGF4ZXMgYW5kIGhhbW1lcnMuClRoZXkgaGF2ZSBjYXN0IGZpcmUgaW50byB0aHkgc2FuY3R1YXJ5LCB0aGV5IGhhdmUgZGVmaWxlZCBieSBjYXN0aW5nIGRvd24gdGhlIGR3ZWxsaW5nIHBsYWNlIG9mIHRoeSBuYW1lIHRvIHRoZSBncm91bmQuClRoZXkgc2FpZCBpbiB0aGVpciBoZWFydHMsIExldCB1cyBkZXN0cm95IHRoZW0gdG9nZXRoZXI6IHRoZXkgaGF2ZSBidXJuZWQgdXAgYWxsIHRoZSBzeW5hZ29ndWVzIG9mIEdvZCBpbiB0aGUgbGFuZC4KV2Ugc2VlIG5vdCBvdXIgc2lnbnM6IHRoZXJlIGlzIG5vIG1vcmUgYW55IHByb3BoZXQ6IG5laXRoZXIgaXMgdGhlcmUgYW1vbmcgdXMgYW55IHRoYXQga25vd2V0aCBob3cgbG9uZy4KTyBHb2QsIGhvdyBsb25nIHNoYWxsIHRoZSBhZHZlcnNhcnkgcmVwcm9hY2g/IHNoYWxsIHRoZSBlbmVteSBibGFzcGhlbWUgdGh5IG5hbWUgZm9yIGV2ZXI/CldoeSB3aXRoZHJhd2VzdCB0aG91IHRoeSBoYW5kLCBldmVuIHRoeSByaWdodCBoYW5kPyBwbHVjayBpdCBvdXQgb2YgdGh5IGJvc29tLgpGb3IgR29kIGlzIG15IEtpbmcgb2Ygb2xkLCB3b3JraW5nIHNhbHZhdGlvbiBpbiB0aGUgbWlkc3Qgb2YgdGhlIGVhcnRoLgpUaG91IGRpZHN0IGRpdmlkZSB0aGUgc2VhIGJ5IHRoeSBzdHJlbmd0aDogdGhvdSBicmFrZXN0IHRoZSBoZWFkcyBvZiB0aGUgZHJhZ29ucyBpbiB0aGUgd2F0ZXJzLgpUaG91IGJyYWtlc3QgdGhlIGhlYWRzIG9mIGxldmlhdGhhbiBpbiBwaWVjZXMsIGFuZCBnYXZlc3QgaGltIHRvIGJlIG1lYXQgdG8gdGhlIHBlb3BsZSBpbmhhYml0aW5nIHRoZSB3aWxkZXJuZXNzLgpUaG91IGRpZHN0IGNsZWF2ZSB0aGUgZm91bnRhaW4gYW5kIHRoZSBmbG9vZDogdGhvdSBkcmllZHN0IHVwIG1pZ2h0eSByaXZlcnMuClRoZSBkYXkgaXMgdGhpbmUsIHRoZSBuaWdodCBhbHNvIGlzIHRoaW5lOiB0aG91IGhhc3QgcHJlcGFyZWQgdGhlIGxpZ2h0IGFuZCB0aGUgc3VuLgpUaG91IGhhc3Qgc2V0IGFsbCB0aGUgYm9yZGVycyBvZiB0aGUgZWFydGg6IHRob3UgaGFzdCBtYWRlIHN1bW1lciBhbmQgd2ludGVyLgpSZW1lbWJlciB0aGlzLCB0aGF0IHRoZSBlbmVteSBoYXRoIHJlcHJvYWNoZWQsIE8gTE9SRCwgYW5kIHRoYXQgdGhlIGZvb2xpc2ggcGVvcGxlIGhhdmUgYmxhc3BoZW1lZCB0aHkgbmFtZS4KTyBkZWxpdmVyIG5vdCB0aGUgc291bCBvZiB0aHkgdHVydGxlZG92ZSB1bnRvIHRoZSBtdWx0aXR1ZGUgb2YgdGhlIHdpY2tlZDogZm9yZ2V0IG5vdCB0aGUgY29uZ3JlZ2F0aW9uIG9mIHRoeSBwb29yIGZvciBldmVyLgpIYXZlIHJlc3BlY3QgdW50byB0aGUgY292ZW5hbnQ6IGZvciB0aGUgZGFyayBwbGFjZXMgb2YgdGhlIGVhcnRoIGFyZSBmdWxsIG9mIHRoZSBoYWJpdGF0aW9ucyBvZiBjcnVlbHR5LgpPIGxldCBub3QgdGhlIG9wcHJlc3NlZCByZXR1cm4gYXNoYW1lZDogbGV0IHRoZSBwb29yIGFuZCBuZWVkeSBwcmFpc2UgdGh5IG5hbWUuCkFyaXNlLCBPIEdvZCwgcGxlYWQgdGhpbmUgb3duIGNhdXNlOiByZW1lbWJlciBob3cgdGhlIGZvb2xpc2ggbWFuIHJlcHJvYWNoZXRoIHRoZWUgZGFpbHkuCkZvcmdldCBub3QgdGhlIHZvaWNlIG9mIHRoaW5lIGVuZW1pZXM6IHRoZSB0dW11bHQgb2YgdGhvc2UgdGhhdCByaXNlIHVwIGFnYWluc3QgdGhlZSBpbmNyZWFzZXRoIGNvbnRpbnVhbGx5LgpVbnRvIHRoZWUsIE8gR29kLCBkbyB3ZSBnaXZlIHRoYW5rcywgdW50byB0aGVlIGRvIHdlIGdpdmUgdGhhbmtzOiBmb3IgdGhhdCB0aHkgbmFtZSBpcyBuZWFyIHRoeSB3b25kcm91cyB3b3JrcyBkZWNsYXJlLgpXaGVuIEkgc2hhbGwgcmVjZWl2ZSB0aGUgY29uZ3JlZ2F0aW9uIEkgd2lsbCBqdWRnZSB1cHJpZ2h0bHkuClRoZSBlYXJ0aCBhbmQgYWxsIHRoZSBpbmhhYml0YW50cyB0aGVyZW9mIGFyZSBkaXNzb2x2ZWQ6IEkgYmVhciB1cCB0aGUgcGlsbGFycyBvZiBpdC4gU2VsYWguCkkgc2FpZCB1bnRvIHRoZSBmb29scywgRGVhbCBub3QgZm9vbGlzaGx5OiBhbmQgdG8gdGhlIHdpY2tlZCwgTGlmdCBub3QgdXAgdGhlIGhvcm46CkxpZnQgbm90IHVwIHlvdXIgaG9ybiBvbiBoaWdoOiBzcGVhayBub3Qgd2l0aCBhIHN0aWZmIG5lY2suCkZvciBwcm9tb3Rpb24gY29tZXRoIG5laXRoZXIgZnJvbSB0aGUgZWFzdCwgbm9yIGZyb20gdGhlIHdlc3QsIG5vciBmcm9tIHRoZSBzb3V0aC4KQnV0IEdvZCBpcyB0aGUganVkZ2U6IGhlIHB1dHRldGggZG93biBvbmUsIGFuZCBzZXR0ZXRoIHVwIGFub3RoZXIuCkZvciBpbiB0aGUgaGFuZCBvZiB0aGUgTE9SRCB0aGVyZSBpcyBhIGN1cCwgYW5kIHRoZSB3aW5lIGlzIHJlZDsgaXQgaXMgZnVsbCBvZiBtaXh0dXJlOyBhbmQgaGUgcG91cmV0aCBvdXQgb2YgdGhlIHNhbWU6IGJ1dCB0aGUgZHJlZ3MgdGhlcmVvZiwgYWxsIHRoZSB3aWNrZWQgb2YgdGhlIGVhcnRoIHNoYWxsIHdyaW5nIHRoZW0gb3V0LCBhbmQgZHJpbmsgdGhlbS4KQnV0IEkgd2lsbCBkZWNsYXJlIGZvciBldmVyOyBJIHdpbGwgc2luZyBwcmFpc2VzIHRvIHRoZSBHb2Qgb2YgSmFjb2IuCkFsbCB0aGUgaG9ybnMgb2YgdGhlIHdpY2tlZCBhbHNvIHdpbGwgSSBjdXQgb2ZmOyBidXQgdGhlIGhvcm5zIG9mIHRoZSByaWdodGVvdXMgc2hhbGwgYmUgZXhhbHRlZC4KSW4gSnVkYWggaXMgR29kIGtub3duOiBoaXMgbmFtZSBpcyBncmVhdCBpbiBJc3JhZWwuCkluIFNhbGVtIGFsc28gaXMgaGlzIHRhYmVybmFjbGUsIGFuZCBoaXMgZHdlbGxpbmcgcGxhY2UgaW4gWmlvbi4KVGhlcmUgYnJha2UgaGUgdGhlIGFycm93cyBvZiB0aGUgYm93LCB0aGUgc2hpZWxkLCBhbmQgdGhlIHN3b3JkLCBhbmQgdGhlIGJhdHRsZS4gU2VsYWguClRob3UgYXJ0IG1vcmUgZ2xvcmlvdXMgYW5kIGV4Y2VsbGVudCB0aGFuIHRoZSBtb3VudGFpbnMgb2YgcHJleS4KVGhlIHN0b3V0aGVhcnRlZCBhcmUgc3BvaWxlZCwgdGhleSBoYXZlIHNsZXB0IHRoZWlyIHNsZWVwOiBhbmQgbm9uZSBvZiB0aGUgbWVuIG9mIG1pZ2h0IGhhdmUgZm91bmQgdGhlaXIgaGFuZHMuCkF0IHRoeSByZWJ1a2UsIE8gR29kIG9mIEphY29iLCBib3RoIHRoZSBjaGFyaW90IGFuZCBob3JzZSBhcmUgY2FzdCBpbnRvIGEgZGVhZCBzbGVlcC4KVGhvdSwgZXZlbiB0aG91LCBhcnQgdG8gYmUgZmVhcmVkOiBhbmQgd2hvIG1heSBzdGFuZCBpbiB0aHkgc2lnaHQgd2hlbiBvbmNlIHRob3UgYXJ0IGFuZ3J5PwpUaG91IGRpZHN0IGNhdXNlIGp1ZGdtZW50IHRvIGJlIGhlYXJkIGZyb20gaGVhdmVuOyB0aGUgZWFydGggZmVhcmVkLCBhbmQgd2FzIHN0aWxsLApXaGVuIEdvZCBhcm9zZSB0byBqdWRnbWVudCwgdG8gc2F2ZSBhbGwgdGhlIG1lZWsgb2YgdGhlIGVhcnRoLiBTZWxhaC4KU3VyZWx5IHRoZSB3cmF0aCBvZiBtYW4gc2hhbGwgcHJhaXNlIHRoZWU6IHRoZSByZW1haW5kZXIgb2Ygd3JhdGggc2hhbHQgdGhvdSByZXN0cmFpbi4KVm93LCBhbmQgcGF5IHVudG8gdGhlIExPUkQgeW91ciBHb2Q6IGxldCBhbGwgdGhhdCBiZSByb3VuZCBhYm91dCBoaW0gYnJpbmcgcHJlc2VudHMgdW50byBoaW0gdGhhdCBvdWdodCB0byBiZSBmZWFyZWQuCkhlIHNoYWxsIGN1dCBvZmYgdGhlIHNwaXJpdCBvZiBwcmluY2VzOiBoZSBpcyB0ZXJyaWJsZSB0byB0aGUga2luZ3Mgb2YgdGhlIGVhcnRoLgpJIGNyaWVkIHVudG8gR29kIHdpdGggbXkgdm9pY2UsIGV2ZW4gdW50byBHb2Qgd2l0aCBteSB2b2ljZTsgYW5kIGhlIGdhdmUgZWFyIHVudG8gbWUuCkluIHRoZSBkYXkgb2YgbXkgdHJvdWJsZSBJIHNvdWdodCB0aGUgTG9yZDogbXkgc29yZSByYW4gaW4gdGhlIG5pZ2h0LCBhbmQgY2Vhc2VkIG5vdDogbXkgc291bCByZWZ1c2VkIHRvIGJlIGNvbWZvcnRlZC4KSSByZW1lbWJlcmVkIEdvZCwgYW5kIHdhcyB0cm91YmxlZDogSSBjb21wbGFpbmVkLCBhbmQgbXkgc3Bpcml0IHdhcyBvdmVyd2hlbG1lZC4gU2VsYWguClRob3UgaG9sZGVzdCBtaW5lIGV5ZXMgd2FraW5nOiBJIGFtIHNvIHRyb3VibGVkIHRoYXQgSSBjYW5ub3Qgc3BlYWsuCkkgaGF2ZSBjb25zaWRlcmVkIHRoZSBkYXlzIG9mIG9sZCwgdGhlIHllYXJzIG9mIGFuY2llbnQgdGltZXMuCkkgY2FsbCB0byByZW1lbWJyYW5jZSBteSBzb25nIGluIHRoZSBuaWdodDogSSBjb21tdW5lIHdpdGggbWluZSBvd24gaGVhcnQ6IGFuZCBteSBzcGlyaXQgbWFkZSBkaWxpZ2VudCBzZWFyY2guCldpbGwgdGhlIExvcmQgY2FzdCBvZmYgZm9yIGV2ZXI/IGFuZCB3aWxsIGhlIGJlIGZhdm91cmFibGUgbm8gbW9yZT8KSXMgaGlzIG1lcmN5IGNsZWFuIGdvbmUgZm9yIGV2ZXI/IGRvdGggaGlzIHByb21pc2UgZmFpbCBmb3IgZXZlcm1vcmU/CkhhdGggR29kIGZvcmdvdHRlbiB0byBiZSBncmFjaW91cz8gaGF0aCBoZSBpbiBhbmdlciBzaHV0IHVwIGhpcyB0ZW5kZXIgbWVyY2llcz8gU2VsYWguCkFuZCBJIHNhaWQsIFRoaXMgaXMgbXkgaW5maXJtaXR5OiBidXQgSSB3aWxsIHJlbWVtYmVyIHRoZSB5ZWFycyBvZiB0aGUgcmlnaHQgaGFuZCBvZiB0aGUgbW9zdCBIaWdoLgpJIHdpbGwgcmVtZW1iZXIgdGhlIHdvcmtzIG9mIHRoZSBMT1JEOiBzdXJlbHkgSSB3aWxsIHJlbWVtYmVyIHRoeSB3b25kZXJzIG9mIG9sZC4KSSB3aWxsIG1lZGl0YXRlIGFsc28gb2YgYWxsIHRoeSB3b3JrLCBhbmQgdGFsayBvZiB0aHkgZG9pbmdzLgpUaHkgd2F5LCBPIEdvZCwgaXMgaW4gdGhlIHNhbmN0dWFyeTogd2hvIGlzIHNvIGdyZWF0IGEgR29kIGFzIG91ciBHb2Q/ClRob3UgYXJ0IHRoZSBHb2QgdGhhdCBkb2VzdCB3b25kZXJzOiB0aG91IGhhc3QgZGVjbGFyZWQgdGh5IHN0cmVuZ3RoIGFtb25nIHRoZSBwZW9wbGUuClRob3UgaGFzdCB3aXRoIHRoaW5lIGFybSByZWRlZW1lZCB0aHkgcGVvcGxlLCB0aGUgc29ucyBvZiBKYWNvYiBhbmQgSm9zZXBoLiBTZWxhaC4KVGhlIHdhdGVycyBzYXcgdGhlZSwgTyBHb2QsIHRoZSB3YXRlcnMgc2F3IHRoZWU7IHRoZXkgd2VyZSBhZnJhaWQ6IHRoZSBkZXB0aHMgYWxzbyB3ZXJlIHRyb3VibGVkLgpUaGUgY2xvdWRzIHBvdXJlZCBvdXQgd2F0ZXI6IHRoZSBza2llcyBzZW50IG91dCBhIHNvdW5kOiB0aGluZSBhcnJvd3MgYWxzbyB3ZW50IGFicm9hZC4KVGhlIHZvaWNlIG9mIHRoeSB0aHVuZGVyIHdhcyBpbiB0aGUgaGVhdmVuOiB0aGUgbGlnaHRuaW5ncyBsaWdodGVuZWQgdGhlIHdvcmxkOiB0aGUgZWFydGggdHJlbWJsZWQgYW5kIHNob29rLgpUaHkgd2F5IGlzIGluIHRoZSBzZWEsIGFuZCB0aHkgcGF0aCBpbiB0aGUgZ3JlYXQgd2F0ZXJzLCBhbmQgdGh5IGZvb3RzdGVwcyBhcmUgbm90IGtub3duLgpUaG91IGxlZGRlc3QgdGh5IHBlb3BsZSBsaWtlIGEgZmxvY2sgYnkgdGhlIGhhbmQgb2YgTW9zZXMgYW5kIEFhcm9uLgpHaXZlIGVhciwgTyBteSBwZW9wbGUsIHRvIG15IGxhdzogaW5jbGluZSB5b3VyIGVhcnMgdG8gdGhlIHdvcmRzIG9mIG15IG1vdXRoLgpJIHdpbGwgb3BlbiBteSBtb3V0aCBpbiBhIHBhcmFibGU6IEkgd2lsbCB1dHRlciBkYXJrIHNheWluZ3Mgb2Ygb2xkOgpXaGljaCB3ZSBoYXZlIGhlYXJkIGFuZCBrbm93biwgYW5kIG91ciBmYXRoZXJzIGhhdmUgdG9sZCB1cy4KV2Ugd2lsbCBub3QgaGlkZSB0aGVtIGZyb20gdGhlaXIgY2hpbGRyZW4sIHNoZXdpbmcgdG8gdGhlIGdlbmVyYXRpb24gdG8gY29tZSB0aGUgcHJhaXNlcyBvZiB0aGUgTE9SRCwgYW5kIGhpcyBzdHJlbmd0aCwgYW5kIGhpcyB3b25kZXJmdWwgd29ya3MgdGhhdCBoZSBoYXRoIGRvbmUuCkZvciBoZSBlc3RhYmxpc2hlZCBhIHRlc3RpbW9ueSBpbiBKYWNvYiwgYW5kIGFwcG9pbnRlZCBhIGxhdyBpbiBJc3JhZWwsIHdoaWNoIGhlIGNvbW1hbmRlZCBvdXIgZmF0aGVycywgdGhhdCB0aGV5IHNob3VsZCBtYWtlIHRoZW0ga25vd24gdG8gdGhlaXIgY2hpbGRyZW46ClRoYXQgdGhlIGdlbmVyYXRpb24gdG8gY29tZSBtaWdodCBrbm93IHRoZW0sIGV2ZW4gdGhlIGNoaWxkcmVuIHdoaWNoIHNob3VsZCBiZSBib3JuOyB3aG8gc2hvdWxkIGFyaXNlIGFuZCBkZWNsYXJlIHRoZW0gdG8gdGhlaXIgY2hpbGRyZW46ClRoYXQgdGhleSBtaWdodCBzZXQgdGhlaXIgaG9wZSBpbiBHb2QsIGFuZCBub3QgZm9yZ2V0IHRoZSB3b3JrcyBvZiBHb2QsIGJ1dCBrZWVwIGhpcyBjb21tYW5kbWVudHM6CkFuZCBtaWdodCBub3QgYmUgYXMgdGhlaXIgZmF0aGVycywgYSBzdHViYm9ybiBhbmQgcmViZWxsaW91cyBnZW5lcmF0aW9uOyBhIGdlbmVyYXRpb24gdGhhdCBzZXQgbm90IHRoZWlyIGhlYXJ0IGFyaWdodCwgYW5kIHdob3NlIHNwaXJpdCB3YXMgbm90IHN0ZWRmYXN0IHdpdGggR29kLgpUaGUgY2hpbGRyZW4gb2YgRXBocmFpbSwgYmVpbmcgYXJtZWQsIGFuZCBjYXJyeWluZyBib3dzLCB0dXJuZWQgYmFjayBpbiB0aGUgZGF5IG9mIGJhdHRsZS4KVGhleSBrZXB0IG5vdCB0aGUgY292ZW5hbnQgb2YgR29kLCBhbmQgcmVmdXNlZCB0byB3YWxrIGluIGhpcyBsYXc7CkFuZCBmb3JnYXQgaGlzIHdvcmtzLCBhbmQgaGlzIHdvbmRlcnMgdGhhdCBoZSBoYWQgc2hld2VkIHRoZW0uCk1hcnZlbGxvdXMgdGhpbmdzIGRpZCBoZSBpbiB0aGUgc2lnaHQgb2YgdGhlaXIgZmF0aGVycywgaW4gdGhlIGxhbmQgb2YgRWd5cHQsIGluIHRoZSBmaWVsZCBvZiBab2FuLgpIZSBkaXZpZGVkIHRoZSBzZWEsIGFuZCBjYXVzZWQgdGhlbSB0byBwYXNzIHRocm91Z2g7IGFuZCBoZSBtYWRlIHRoZSB3YXRlcnMgdG8gc3RhbmQgYXMgYW4gaGVhcC4KSW4gdGhlIGRheXRpbWUgYWxzbyBoZSBsZWQgdGhlbSB3aXRoIGEgY2xvdWQsIGFuZCBhbGwgdGhlIG5pZ2h0IHdpdGggYSBsaWdodCBvZiBmaXJlLgpIZSBjbGF2ZSB0aGUgcm9ja3MgaW4gdGhlIHdpbGRlcm5lc3MsIGFuZCBnYXZlIHRoZW0gZHJpbmsgYXMgb3V0IG9mIHRoZSBncmVhdCBkZXB0aHMuCkhlIGJyb3VnaHQgc3RyZWFtcyBhbHNvIG91dCBvZiB0aGUgcm9jaywgYW5kIGNhdXNlZCB3YXRlcnMgdG8gcnVuIGRvd24gbGlrZSByaXZlcnMuCkFuZCB0aGV5IHNpbm5lZCB5ZXQgbW9yZSBhZ2FpbnN0IGhpbSBieSBwcm92b2tpbmcgdGhlIG1vc3QgSGlnaCBpbiB0aGUgd2lsZGVybmVzcy4KQW5kIHRoZXkgdGVtcHRlZCBHb2QgaW4gdGhlaXIgaGVhcnQgYnkgYXNraW5nIG1lYXQgZm9yIHRoZWlyIGx1c3QuClllYSwgdGhleSBzcGFrZSBhZ2FpbnN0IEdvZDsgdGhleSBzYWlkLCBDYW4gR29kIGZ1cm5pc2ggYSB0YWJsZSBpbiB0aGUgd2lsZGVybmVzcz8KQmVob2xkLCBoZSBzbW90ZSB0aGUgcm9jaywgdGhhdCB0aGUgd2F0ZXJzIGd1c2hlZCBvdXQsIGFuZCB0aGUgc3RyZWFtcyBvdmVyZmxvd2VkOyBjYW4gaGUgZ2l2ZSBicmVhZCBhbHNvPyBjYW4gaGUgcHJvdmlkZSBmbGVzaCBmb3IgaGlzIHBlb3BsZT8KVGhlcmVmb3JlIHRoZSBMT1JEIGhlYXJkIHRoaXMsIGFuZCB3YXMgd3JvdGg6IHNvIGEgZmlyZSB3YXMga2luZGxlZCBhZ2FpbnN0IEphY29iLCBhbmQgYW5nZXIgYWxzbyBjYW1lIHVwIGFnYWluc3QgSXNyYWVsOwpCZWNhdXNlIHRoZXkgYmVsaWV2ZWQgbm90IGluIEdvZCwgYW5kIHRydXN0ZWQgbm90IGluIGhpcyBzYWx2YXRpb246ClRob3VnaCBoZSBoYWQgY29tbWFuZGVkIHRoZSBjbG91ZHMgZnJvbSBhYm92ZSwgYW5kIG9wZW5lZCB0aGUgZG9vcnMgb2YgaGVhdmVuLApBbmQgaGFkIHJhaW5lZCBkb3duIG1hbm5hIHVwb24gdGhlbSB0byBlYXQsIGFuZCBoYWQgZ2l2ZW4gdGhlbSBvZiB0aGUgY29ybiBvZiBoZWF2ZW4uCk1hbiBkaWQgZWF0IGFuZ2VscycgZm9vZDogaGUgc2VudCB0aGVtIG1lYXQgdG8gdGhlIGZ1bGwuCkhlIGNhdXNlZCBhbiBlYXN0IHdpbmQgdG8gYmxvdyBpbiB0aGUgaGVhdmVuOiBhbmQgYnkgaGlzIHBvd2VyIGhlIGJyb3VnaHQgaW4gdGhlIHNvdXRoIHdpbmQuCkhlIHJhaW5lZCBmbGVzaCBhbHNvIHVwb24gdGhlbSBhcyBkdXN0LCBhbmQgZmVhdGhlcmVkIGZvd2xzIGxpa2UgYXMgdGhlIHNhbmQgb2YgdGhlIHNlYToKQW5kIGhlIGxldCBpdCBmYWxsIGluIHRoZSBtaWRzdCBvZiB0aGVpciBjYW1wLCByb3VuZCBhYm91dCB0aGVpciBoYWJpdGF0aW9ucy4KU28gdGhleSBkaWQgZWF0LCBhbmQgd2VyZSB3ZWxsIGZpbGxlZDogZm9yIGhlIGdhdmUgdGhlbSB0aGVpciBvd24gZGVzaXJlOwpUaGV5IHdlcmUgbm90IGVzdHJhbmdlZCBmcm9tIHRoZWlyIGx1c3QuIEJ1dCB3aGlsZSB0aGVpciBtZWF0IHdhcyB5ZXQgaW4gdGhlaXIgbW91dGhzLApUaGUgd3JhdGggb2YgR29kIGNhbWUgdXBvbiB0aGVtLCBhbmQgc2xldyB0aGUgZmF0dGVzdCBvZiB0aGVtLCBhbmQgc21vdGUgZG93biB0aGUgY2hvc2VuIG1lbiBvZiBJc3JhZWwuCkZvciBhbGwgdGhpcyB0aGV5IHNpbm5lZCBzdGlsbCwgYW5kIGJlbGlldmVkIG5vdCBmb3IgaGlzIHdvbmRyb3VzIHdvcmtzLgpUaGVyZWZvcmUgdGhlaXIgZGF5cyBkaWQgaGUgY29uc3VtZSBpbiB2YW5pdHksIGFuZCB0aGVpciB5ZWFycyBpbiB0cm91YmxlLgpXaGVuIGhlIHNsZXcgdGhlbSwgdGhlbiB0aGV5IHNvdWdodCBoaW06IGFuZCB0aGV5IHJldHVybmVkIGFuZCBlbnF1aXJlZCBlYXJseSBhZnRlciBHb2QuCkFuZCB0aGV5IHJlbWVtYmVyZWQgdGhhdCBHb2Qgd2FzIHRoZWlyIHJvY2ssIGFuZCB0aGUgaGlnaCBHb2QgdGhlaXIgcmVkZWVtZXIuCk5ldmVydGhlbGVzcyB0aGV5IGRpZCBmbGF0dGVyIGhpbSB3aXRoIHRoZWlyIG1vdXRoLCBhbmQgdGhleSBsaWVkIHVudG8gaGltIHdpdGggdGhlaXIgdG9uZ3Vlcy4KRm9yIHRoZWlyIGhlYXJ0IHdhcyBub3QgcmlnaHQgd2l0aCBoaW0sIG5laXRoZXIgd2VyZSB0aGV5IHN0ZWRmYXN0IGluIGhpcyBjb3ZlbmFudC4KQnV0IGhlLCBiZWluZyBmdWxsIG9mIGNvbXBhc3Npb24sIGZvcmdhdmUgdGhlaXIgaW5pcXVpdHksIGFuZCBkZXN0cm95ZWQgdGhlbSBub3Q6IHllYSwgbWFueSBhIHRpbWUgdHVybmVkIGhlIGhpcyBhbmdlciBhd2F5LCBhbmQgZGlkIG5vdCBzdGlyIHVwIGFsbCBoaXMgd3JhdGguCkZvciBoZSByZW1lbWJlcmVkIHRoYXQgdGhleSB3ZXJlIGJ1dCBmbGVzaDsgYSB3aW5kIHRoYXQgcGFzc2V0aCBhd2F5LCBhbmQgY29tZXRoIG5vdCBhZ2Fpbi4KSG93IG9mdCBkaWQgdGhleSBwcm92b2tlIGhpbSBpbiB0aGUgd2lsZGVybmVzcywgYW5kIGdyaWV2ZSBoaW0gaW4gdGhlIGRlc2VydCEKWWVhLCB0aGV5IHR1cm5lZCBiYWNrIGFuZCB0ZW1wdGVkIEdvZCwgYW5kIGxpbWl0ZWQgdGhlIEhvbHkgT25lIG9mIElzcmFlbC4KVGhleSByZW1lbWJlcmVkIG5vdCBoaXMgaGFuZCwgbm9yIHRoZSBkYXkgd2hlbiBoZSBkZWxpdmVyZWQgdGhlbSBmcm9tIHRoZSBlbmVteS4KSG93IGhlIGhhZCB3cm91Z2h0IGhpcyBzaWducyBpbiBFZ3lwdCwgYW5kIGhpcyB3b25kZXJzIGluIHRoZSBmaWVsZCBvZiBab2FuLgpBbmQgaGFkIHR1cm5lZCB0aGVpciByaXZlcnMgaW50byBibG9vZDsgYW5kIHRoZWlyIGZsb29kcywgdGhhdCB0aGV5IGNvdWxkIG5vdCBkcmluay4KSGUgc2VudCBkaXZlcnMgc29ydHMgb2YgZmxpZXMgYW1vbmcgdGhlbSwgd2hpY2ggZGV2b3VyZWQgdGhlbTsgYW5kIGZyb2dzLCB3aGljaCBkZXN0cm95ZWQgdGhlbS4KSGUgZ2F2ZSBhbHNvIHRoZWlyIGluY3JlYXNlIHVudG8gdGhlIGNhdGVycGlsbGVyLCBhbmQgdGhlaXIgbGFib3VyIHVudG8gdGhlIGxvY3VzdC4KSGUgZGVzdHJveWVkIHRoZWlyIHZpbmVzIHdpdGggaGFpbCwgYW5kIHRoZWlyIHN5Y29tb3JlIHRyZWVzIHdpdGggZnJvc3QuCkhlIGdhdmUgdXAgdGhlaXIgY2F0dGxlIGFsc28gdG8gdGhlIGhhaWwsIGFuZCB0aGVpciBmbG9ja3MgdG8gaG90IHRodW5kZXJib2x0cy4KSGUgY2FzdCB1cG9uIHRoZW0gdGhlIGZpZXJjZW5lc3Mgb2YgaGlzIGFuZ2VyLCB3cmF0aCwgYW5kIGluZGlnbmF0aW9uLCBhbmQgdHJvdWJsZSwgYnkgc2VuZGluZyBldmlsIGFuZ2VscyBhbW9uZyB0aGVtLgpIZSBtYWRlIGEgd2F5IHRvIGhpcyBhbmdlcjsgaGUgc3BhcmVkIG5vdCB0aGVpciBzb3VsIGZyb20gZGVhdGgsIGJ1dCBnYXZlIHRoZWlyIGxpZmUgb3ZlciB0byB0aGUgcGVzdGlsZW5jZTsKQW5kIHNtb3RlIGFsbCB0aGUgZmlyc3Rib3JuIGluIEVneXB0OyB0aGUgY2hpZWYgb2YgdGhlaXIgc3RyZW5ndGggaW4gdGhlIHRhYmVybmFjbGVzIG9mIEhhbToKQnV0IG1hZGUgaGlzIG93biBwZW9wbGUgdG8gZ28gZm9ydGggbGlrZSBzaGVlcCwgYW5kIGd1aWRlZCB0aGVtIGluIHRoZSB3aWxkZXJuZXNzIGxpa2UgYSBmbG9jay4KQW5kIGhlIGxlZCB0aGVtIG9uIHNhZmVseSwgc28gdGhhdCB0aGV5IGZlYXJlZCBub3Q6IGJ1dCB0aGUgc2VhIG92ZXJ3aGVsbWVkIHRoZWlyIGVuZW1pZXMuCkFuZCBoZSBicm91Z2h0IHRoZW0gdG8gdGhlIGJvcmRlciBvZiBoaXMgc2FuY3R1YXJ5LCBldmVuIHRvIHRoaXMgbW91bnRhaW4sIHdoaWNoIGhpcyByaWdodCBoYW5kIGhhZCBwdXJjaGFzZWQuCkhlIGNhc3Qgb3V0IHRoZSBoZWF0aGVuIGFsc28gYmVmb3JlIHRoZW0sIGFuZCBkaXZpZGVkIHRoZW0gYW4gaW5oZXJpdGFuY2UgYnkgbGluZSwgYW5kIG1hZGUgdGhlIHRyaWJlcyBvZiBJc3JhZWwgdG8gZHdlbGwgaW4gdGhlaXIgdGVudHMuCllldCB0aGV5IHRlbXB0ZWQgYW5kIHByb3Zva2VkIHRoZSBtb3N0IGhpZ2ggR29kLCBhbmQga2VwdCBub3QgaGlzIHRlc3RpbW9uaWVzOgpCdXQgdHVybmVkIGJhY2ssIGFuZCBkZWFsdCB1bmZhaXRoZnVsbHkgbGlrZSB0aGVpciBmYXRoZXJzOiB0aGV5IHdlcmUgdHVybmVkIGFzaWRlIGxpa2UgYSBkZWNlaXRmdWwgYm93LgpGb3IgdGhleSBwcm92b2tlZCBoaW0gdG8gYW5nZXIgd2l0aCB0aGVpciBoaWdoIHBsYWNlcywgYW5kIG1vdmVkIGhpbSB0byBqZWFsb3VzeSB3aXRoIHRoZWlyIGdyYXZlbiBpbWFnZXMuCldoZW4gR29kIGhlYXJkIHRoaXMsIGhlIHdhcyB3cm90aCwgYW5kIGdyZWF0bHkgYWJob3JyZWQgSXNyYWVsOgpTbyB0aGF0IGhlIGZvcnNvb2sgdGhlIHRhYmVybmFjbGUgb2YgU2hpbG9oLCB0aGUgdGVudCB3aGljaCBoZSBwbGFjZWQgYW1vbmcgbWVuOwpBbmQgZGVsaXZlcmVkIGhpcyBzdHJlbmd0aCBpbnRvIGNhcHRpdml0eSwgYW5kIGhpcyBnbG9yeSBpbnRvIHRoZSBlbmVteSdzIGhhbmQuCkhlIGdhdmUgaGlzIHBlb3BsZSBvdmVyIGFsc28gdW50byB0aGUgc3dvcmQ7IGFuZCB3YXMgd3JvdGggd2l0aCBoaXMgaW5oZXJpdGFuY2UuClRoZSBmaXJlIGNvbnN1bWVkIHRoZWlyIHlvdW5nIG1lbjsgYW5kIHRoZWlyIG1haWRlbnMgd2VyZSBub3QgZ2l2ZW4gdG8gbWFycmlhZ2UuClRoZWlyIHByaWVzdHMgZmVsbCBieSB0aGUgc3dvcmQ7IGFuZCB0aGVpciB3aWRvd3MgbWFkZSBubyBsYW1lbnRhdGlvbi4KVGhlbiB0aGUgTE9SRCBhd2FrZWQgYXMgb25lIG91dCBvZiBzbGVlcCwgYW5kIGxpa2UgYSBtaWdodHkgbWFuIHRoYXQgc2hvdXRldGggYnkgcmVhc29uIG9mIHdpbmUuCkFuZCBoZSBzbW90ZSBoaXMgZW5lbWllcyBpbiB0aGUgaGluZGVyIHBhcnRzOiBoZSBwdXQgdGhlbSB0byBhIHBlcnBldHVhbCByZXByb2FjaC4KTW9yZW92ZXIgaGUgcmVmdXNlZCB0aGUgdGFiZXJuYWNsZSBvZiBKb3NlcGgsIGFuZCBjaG9zZSBub3QgdGhlIHRyaWJlIG9mIEVwaHJhaW06CkJ1dCBjaG9zZSB0aGUgdHJpYmUgb2YgSnVkYWgsIHRoZSBtb3VudCBaaW9uIHdoaWNoIGhlIGxvdmVkLgpBbmQgaGUgYnVpbHQgaGlzIHNhbmN0dWFyeSBsaWtlIGhpZ2ggcGFsYWNlcywgbGlrZSB0aGUgZWFydGggd2hpY2ggaGUgaGF0aCBlc3RhYmxpc2hlZCBmb3IgZXZlci4KSGUgY2hvc2UgRGF2aWQgYWxzbyBoaXMgc2VydmFudCwgYW5kIHRvb2sgaGltIGZyb20gdGhlIHNoZWVwZm9sZHM6CkZyb20gZm9sbG93aW5nIHRoZSBld2VzIGdyZWF0IHdpdGggeW91bmcgaGUgYnJvdWdodCBoaW0gdG8gZmVlZCBKYWNvYiBoaXMgcGVvcGxlLCBhbmQgSXNyYWVsIGhpcyBpbmhlcml0YW5jZS4KU28gaGUgZmVkIHRoZW0gYWNjb3JkaW5nIHRvIHRoZSBpbnRlZ3JpdHkgb2YgaGlzIGhlYXJ0OyBhbmQgZ3VpZGVkIHRoZW0gYnkgdGhlIHNraWxmdWxuZXNzIG9mIGhpcyBoYW5kcy4KTyBnb2QsIHRoZSBoZWF0aGVuIGFyZSBjb21lIGludG8gdGhpbmUgaW5oZXJpdGFuY2U7IHRoeSBob2x5IHRlbXBsZSBoYXZlIHRoZXkgZGVmaWxlZDsgdGhleSBoYXZlIGxhaWQgSmVydXNhbGVtIG9uIGhlYXBzLgpUaGUgZGVhZCBib2RpZXMgb2YgdGh5IHNlcnZhbnRzIGhhdmUgdGhleSBnaXZlbiB0byBiZSBtZWF0IHVudG8gdGhlIGZvd2xzIG9mIHRoZSBoZWF2ZW4sIHRoZSBmbGVzaCBvZiB0aHkgc2FpbnRzIHVudG8gdGhlIGJlYXN0cyBvZiB0aGUgZWFydGguClRoZWlyIGJsb29kIGhhdmUgdGhleSBzaGVkIGxpa2Ugd2F0ZXIgcm91bmQgYWJvdXQgSmVydXNhbGVtOyBhbmQgdGhlcmUgd2FzIG5vbmUgdG8gYnVyeSB0aGVtLgpXZSBhcmUgYmVjb21lIGEgcmVwcm9hY2ggdG8gb3VyIG5laWdoYm91cnMsIGEgc2Nvcm4gYW5kIGRlcmlzaW9uIHRvIHRoZW0gdGhhdCBhcmUgcm91bmQgYWJvdXQgdXMuCkhvdyBsb25nLCBMT1JEPyB3aWx0IHRob3UgYmUgYW5ncnkgZm9yIGV2ZXI/IHNoYWxsIHRoeSBqZWFsb3VzeSBidXJuIGxpa2UgZmlyZT8KUG91ciBvdXQgdGh5IHdyYXRoIHVwb24gdGhlIGhlYXRoZW4gdGhhdCBoYXZlIG5vdCBrbm93biB0aGVlLCBhbmQgdXBvbiB0aGUga2luZ2RvbXMgdGhhdCBoYXZlIG5vdCBjYWxsZWQgdXBvbiB0aHkgbmFtZS4KRm9yIHRoZXkgaGF2ZSBkZXZvdXJlZCBKYWNvYiwgYW5kIGxhaWQgd2FzdGUgaGlzIGR3ZWxsaW5nIHBsYWNlLgpPIHJlbWVtYmVyIG5vdCBhZ2FpbnN0IHVzIGZvcm1lciBpbmlxdWl0aWVzOiBsZXQgdGh5IHRlbmRlciBtZXJjaWVzIHNwZWVkaWx5IHByZXZlbnQgdXM6IGZvciB3ZSBhcmUgYnJvdWdodCB2ZXJ5IGxvdy4KSGVscCB1cywgTyBHb2Qgb2Ygb3VyIHNhbHZhdGlvbiwgZm9yIHRoZSBnbG9yeSBvZiB0aHkgbmFtZTogYW5kIGRlbGl2ZXIgdXMsIGFuZCBwdXJnZSBhd2F5IG91ciBzaW5zLCBmb3IgdGh5IG5hbWUncyBzYWtlLgpXaGVyZWZvcmUgc2hvdWxkIHRoZSBoZWF0aGVuIHNheSwgV2hlcmUgaXMgdGhlaXIgR29kPyBsZXQgaGltIGJlIGtub3duIGFtb25nIHRoZSBoZWF0aGVuIGluIG91ciBzaWdodCBieSB0aGUgcmV2ZW5naW5nIG9mIHRoZSBibG9vZCBvZiB0aHkgc2VydmFudHMgd2hpY2ggaXMgc2hlZC4KTGV0IHRoZSBzaWdoaW5nIG9mIHRoZSBwcmlzb25lciBjb21lIGJlZm9yZSB0aGVlOyBhY2NvcmRpbmcgdG8gdGhlIGdyZWF0bmVzcyBvZiB0aHkgcG93ZXIgcHJlc2VydmUgdGhvdSB0aG9zZSB0aGF0IGFyZSBhcHBvaW50ZWQgdG8gZGllOwpBbmQgcmVuZGVyIHVudG8gb3VyIG5laWdoYm91cnMgc2V2ZW5mb2xkIGludG8gdGhlaXIgYm9zb20gdGhlaXIgcmVwcm9hY2gsIHdoZXJld2l0aCB0aGV5IGhhdmUgcmVwcm9hY2hlZCB0aGVlLCBPIExvcmQuClNvIHdlIHRoeSBwZW9wbGUgYW5kIHNoZWVwIG9mIHRoeSBwYXN0dXJlIHdpbGwgZ2l2ZSB0aGVlIHRoYW5rcyBmb3IgZXZlcjogd2Ugd2lsbCBzaGV3IGZvcnRoIHRoeSBwcmFpc2UgdG8gYWxsIGdlbmVyYXRpb25zLgpHaXZlIGVhciwgTyBTaGVwaGVyZCBvZiBJc3JhZWwsIHRob3UgdGhhdCBsZWFkZXN0IEpvc2VwaCBsaWtlIGEgZmxvY2s7IHRob3UgdGhhdCBkd2VsbGVzdCBiZXR3ZWVuIHRoZSBjaGVydWJpbXMsIHNoaW5lIGZvcnRoLgpCZWZvcmUgRXBocmFpbSBhbmQgQmVuamFtaW4gYW5kIE1hbmFzc2VoIHN0aXIgdXAgdGh5IHN0cmVuZ3RoLCBhbmQgY29tZSBhbmQgc2F2ZSB1cy4KVHVybiB1cyBhZ2FpbiwgTyBHb2QsIGFuZCBjYXVzZSB0aHkgZmFjZSB0byBzaGluZTsgYW5kIHdlIHNoYWxsIGJlIHNhdmVkLgpPIExPUkQgR29kIG9mIGhvc3RzLCBob3cgbG9uZyB3aWx0IHRob3UgYmUgYW5ncnkgYWdhaW5zdCB0aGUgcHJheWVyIG9mIHRoeSBwZW9wbGU/ClRob3UgZmVlZGVzdCB0aGVtIHdpdGggdGhlIGJyZWFkIG9mIHRlYXJzOyBhbmQgZ2l2ZXN0IHRoZW0gdGVhcnMgdG8gZHJpbmsgaW4gZ3JlYXQgbWVhc3VyZS4KVGhvdSBtYWtlc3QgdXMgYSBzdHJpZmUgdW50byBvdXIgbmVpZ2hib3VyczogYW5kIG91ciBlbmVtaWVzIGxhdWdoIGFtb25nIHRoZW1zZWx2ZXMuClR1cm4gdXMgYWdhaW4sIE8gR29kIG9mIGhvc3RzLCBhbmQgY2F1c2UgdGh5IGZhY2UgdG8gc2hpbmU7IGFuZCB3ZSBzaGFsbCBiZSBzYXZlZC4KVGhvdSBoYXN0IGJyb3VnaHQgYSB2aW5lIG91dCBvZiBFZ3lwdDogdGhvdSBoYXN0IGNhc3Qgb3V0IHRoZSBoZWF0aGVuLCBhbmQgcGxhbnRlZCBpdC4KVGhvdSBwcmVwYXJlZHN0IHJvb20gYmVmb3JlIGl0LCBhbmQgZGlkc3QgY2F1c2UgaXQgdG8gdGFrZSBkZWVwIHJvb3QsIGFuZCBpdCBmaWxsZWQgdGhlIGxhbmQuClRoZSBoaWxscyB3ZXJlIGNvdmVyZWQgd2l0aCB0aGUgc2hhZG93IG9mIGl0LCBhbmQgdGhlIGJvdWdocyB0aGVyZW9mIHdlcmUgbGlrZSB0aGUgZ29vZGx5IGNlZGFycy4KU2hlIHNlbnQgb3V0IGhlciBib3VnaHMgdW50byB0aGUgc2VhLCBhbmQgaGVyIGJyYW5jaGVzIHVudG8gdGhlIHJpdmVyLgpXaHkgaGFzdCB0aG91IHRoZW4gYnJva2VuIGRvd24gaGVyIGhlZGdlcywgc28gdGhhdCBhbGwgdGhleSB3aGljaCBwYXNzIGJ5IHRoZSB3YXkgZG8gcGx1Y2sgaGVyPwpUaGUgYm9hciBvdXQgb2YgdGhlIHdvb2QgZG90aCB3YXN0ZSBpdCwgYW5kIHRoZSB3aWxkIGJlYXN0IG9mIHRoZSBmaWVsZCBkb3RoIGRldm91ciBpdC4KUmV0dXJuLCB3ZSBiZXNlZWNoIHRoZWUsIE8gR29kIG9mIGhvc3RzOiBsb29rIGRvd24gZnJvbSBoZWF2ZW4sIGFuZCBiZWhvbGQsIGFuZCB2aXNpdCB0aGlzIHZpbmU7CkFuZCB0aGUgdmluZXlhcmQgd2hpY2ggdGh5IHJpZ2h0IGhhbmQgaGF0aCBwbGFudGVkLCBhbmQgdGhlIGJyYW5jaCB0aGF0IHRob3UgbWFkZXN0IHN0cm9uZyBmb3IgdGh5c2VsZi4KSXQgaXMgYnVybmVkIHdpdGggZmlyZSwgaXQgaXMgY3V0IGRvd246IHRoZXkgcGVyaXNoIGF0IHRoZSByZWJ1a2Ugb2YgdGh5IGNvdW50ZW5hbmNlLgpMZXQgdGh5IGhhbmQgYmUgdXBvbiB0aGUgbWFuIG9mIHRoeSByaWdodCBoYW5kLCB1cG9uIHRoZSBzb24gb2YgbWFuIHdob20gdGhvdSBtYWRlc3Qgc3Ryb25nIGZvciB0aHlzZWxmLgpTbyB3aWxsIG5vdCB3ZSBnbyBiYWNrIGZyb20gdGhlZTogcXVpY2tlbiB1cywgYW5kIHdlIHdpbGwgY2FsbCB1cG9uIHRoeSBuYW1lLgpUdXJuIHVzIGFnYWluLCBPIExPUkQgR29kIG9mIGhvc3RzLCBjYXVzZSB0aHkgZmFjZSB0byBzaGluZTsgYW5kIHdlIHNoYWxsIGJlIHNhdmVkLgpTaW5nIGFsb3VkIHVudG8gR29kIG91ciBzdHJlbmd0aDogbWFrZSBhIGpveWZ1bCBub2lzZSB1bnRvIHRoZSBHb2Qgb2YgSmFjb2IuClRha2UgYSBwc2FsbSwgYW5kIGJyaW5nIGhpdGhlciB0aGUgdGltYnJlbCwgdGhlIHBsZWFzYW50IGhhcnAgd2l0aCB0aGUgcHNhbHRlcnkuCkJsb3cgdXAgdGhlIHRydW1wZXQgaW4gdGhlIG5ldyBtb29uLCBpbiB0aGUgdGltZSBhcHBvaW50ZWQsIG9uIG91ciBzb2xlbW4gZmVhc3QgZGF5LgpGb3IgdGhpcyB3YXMgYSBzdGF0dXRlIGZvciBJc3JhZWwsIGFuZCBhIGxhdyBvZiB0aGUgR29kIG9mIEphY29iLgpUaGlzIGhlIG9yZGFpbmVkIGluIEpvc2VwaCBmb3IgYSB0ZXN0aW1vbnksIHdoZW4gaGUgd2VudCBvdXQgdGhyb3VnaCB0aGUgbGFuZCBvZiBFZ3lwdDogd2hlcmUgSSBoZWFyZCBhIGxhbmd1YWdlIHRoYXQgSSB1bmRlcnN0b29kIG5vdC4KSSByZW1vdmVkIGhpcyBzaG91bGRlciBmcm9tIHRoZSBidXJkZW46IGhpcyBoYW5kcyB3ZXJlIGRlbGl2ZXJlZCBmcm9tIHRoZSBwb3RzLgpUaG91IGNhbGxlZHN0IGluIHRyb3VibGUsIGFuZCBJIGRlbGl2ZXJlZCB0aGVlOyBJIGFuc3dlcmVkIHRoZWUgaW4gdGhlIHNlY3JldCBwbGFjZSBvZiB0aHVuZGVyOiBJIHByb3ZlZCB0aGVlIGF0IHRoZSB3YXRlcnMgb2YgTWVyaWJhaC4gU2VsYWguCkhlYXIsIE8gbXkgcGVvcGxlLCBhbmQgSSB3aWxsIHRlc3RpZnkgdW50byB0aGVlOiBPIElzcmFlbCwgaWYgdGhvdSB3aWx0IGhlYXJrZW4gdW50byBtZTsKVGhlcmUgc2hhbGwgbm8gc3RyYW5nZSBnb2QgYmUgaW4gdGhlZTsgbmVpdGhlciBzaGFsdCB0aG91IHdvcnNoaXAgYW55IHN0cmFuZ2UgZ29kLgpJIGFtIHRoZSBMT1JEIHRoeSBHb2QsIHdoaWNoIGJyb3VnaHQgdGhlZSBvdXQgb2YgdGhlIGxhbmQgb2YgRWd5cHQ6IG9wZW4gdGh5IG1vdXRoIHdpZGUsIGFuZCBJIHdpbGwgZmlsbCBpdC4KQnV0IG15IHBlb3BsZSB3b3VsZCBub3QgaGVhcmtlbiB0byBteSB2b2ljZTsgYW5kIElzcmFlbCB3b3VsZCBub25lIG9mIG1lLgpTbyBJIGdhdmUgdGhlbSB1cCB1bnRvIHRoZWlyIG93biBoZWFydHMnIGx1c3Q6IGFuZCB0aGV5IHdhbGtlZCBpbiB0aGVpciBvd24gY291bnNlbHMuCk9oIHRoYXQgbXkgcGVvcGxlIGhhZCBoZWFya2VuZWQgdW50byBtZSwgYW5kIElzcmFlbCBoYWQgd2Fsa2VkIGluIG15IHdheXMhCkkgc2hvdWxkIHNvb24gaGF2ZSBzdWJkdWVkIHRoZWlyIGVuZW1pZXMsIGFuZCB0dXJuZWQgbXkgaGFuZCBhZ2FpbnN0IHRoZWlyIGFkdmVyc2FyaWVzLgpUaGUgaGF0ZXJzIG9mIHRoZSBMT1JEIHNob3VsZCBoYXZlIHN1Ym1pdHRlZCB0aGVtc2VsdmVzIHVudG8gaGltOiBidXQgdGhlaXIgdGltZSBzaG91bGQgaGF2ZSBlbmR1cmVkIGZvciBldmVyLgpIZSBzaG91bGQgaGF2ZSBmZWQgdGhlbSBhbHNvIHdpdGggdGhlIGZpbmVzdCBvZiB0aGUgd2hlYXQ6IGFuZCB3aXRoIGhvbmV5IG91dCBvZiB0aGUgcm9jayBzaG91bGQgSSBoYXZlIHNhdGlzZmllZCB0aGVlLgpHb2Qgc3RhbmRldGggaW4gdGhlIGNvbmdyZWdhdGlvbiBvZiB0aGUgbWlnaHR5OyBoZSBqdWRnZXRoIGFtb25nIHRoZSBnb2RzLgpIb3cgbG9uZyB3aWxsIHllIGp1ZGdlIHVuanVzdGx5LCBhbmQgYWNjZXB0IHRoZSBwZXJzb25zIG9mIHRoZSB3aWNrZWQ/IFNlbGFoLgpEZWZlbmQgdGhlIHBvb3IgYW5kIGZhdGhlcmxlc3M6IGRvIGp1c3RpY2UgdG8gdGhlIGFmZmxpY3RlZCBhbmQgbmVlZHkuCkRlbGl2ZXIgdGhlIHBvb3IgYW5kIG5lZWR5OiByaWQgdGhlbSBvdXQgb2YgdGhlIGhhbmQgb2YgdGhlIHdpY2tlZC4KVGhleSBrbm93IG5vdCwgbmVpdGhlciB3aWxsIHRoZXkgdW5kZXJzdGFuZDsgdGhleSB3YWxrIG9uIGluIGRhcmtuZXNzOiBhbGwgdGhlIGZvdW5kYXRpb25zIG9mIHRoZSBlYXJ0aCBhcmUgb3V0IG9mIGNvdXJzZS4KSSBoYXZlIHNhaWQsIFllIGFyZSBnb2RzOyBhbmQgYWxsIG9mIHlvdSBhcmUgY2hpbGRyZW4gb2YgdGhlIG1vc3QgSGlnaC4KQnV0IHllIHNoYWxsIGRpZSBsaWtlIG1lbiwgYW5kIGZhbGwgbGlrZSBvbmUgb2YgdGhlIHByaW5jZXMuCkFyaXNlLCBPIEdvZCwganVkZ2UgdGhlIGVhcnRoOiBmb3IgdGhvdSBzaGFsdCBpbmhlcml0IGFsbCBuYXRpb25zLgpLZWVwIG5vdCB0aG91IHNpbGVuY2UsIE8gR29kOiBob2xkIG5vdCB0aHkgcGVhY2UsIGFuZCBiZSBub3Qgc3RpbGwsIE8gR29kLgpGb3IsIGxvLCB0aGluZSBlbmVtaWVzIG1ha2UgYSB0dW11bHQ6IGFuZCB0aGV5IHRoYXQgaGF0ZSB0aGVlIGhhdmUgbGlmdGVkIHVwIHRoZSBoZWFkLgpUaGV5IGhhdmUgdGFrZW4gY3JhZnR5IGNvdW5zZWwgYWdhaW5zdCB0aHkgcGVvcGxlLCBhbmQgY29uc3VsdGVkIGFnYWluc3QgdGh5IGhpZGRlbiBvbmVzLgpUaGV5IGhhdmUgc2FpZCwgQ29tZSwgYW5kIGxldCB1cyBjdXQgdGhlbSBvZmYgZnJvbSBiZWluZyBhIG5hdGlvbjsgdGhhdCB0aGUgbmFtZSBvZiBJc3JhZWwgbWF5IGJlIG5vIG1vcmUgaW4gcmVtZW1icmFuY2UuCkZvciB0aGV5IGhhdmUgY29uc3VsdGVkIHRvZ2V0aGVyIHdpdGggb25lIGNvbnNlbnQ6IHRoZXkgYXJlIGNvbmZlZGVyYXRlIGFnYWluc3QgdGhlZToKVGhlIHRhYmVybmFjbGVzIG9mIEVkb20sIGFuZCB0aGUgSXNobWFlbGl0ZXM7IG9mIE1vYWIsIGFuZCB0aGUgSGFnYXJlbmVzOwpHZWJhbCwgYW5kIEFtbW9uLCBhbmQgQW1hbGVrOyB0aGUgUGhpbGlzdGluZXMgd2l0aCB0aGUgaW5oYWJpdGFudHMgb2YgVHlyZTsKQXNzdXIgYWxzbyBpcyBqb2luZWQgd2l0aCB0aGVtOiB0aGV5IGhhdmUgaG9scGVuIHRoZSBjaGlsZHJlbiBvZiBMb3QuIFNlbGFoLgpEbyB1bnRvIHRoZW0gYXMgdW50byB0aGUgTWlkaWFuaXRlczsgYXMgdG8gU2lzZXJhLCBhcyB0byBKYWJpbiwgYXQgdGhlIGJyb29rIG9mIEtpc29uOgpXaGljaCBwZXJpc2hlZCBhdCBFbmRvcjogdGhleSBiZWNhbWUgYXMgZHVuZyBmb3IgdGhlIGVhcnRoLgpNYWtlIHRoZWlyIG5vYmxlcyBsaWtlIE9yZWIsIGFuZCBsaWtlIFplZWI6IHllYSwgYWxsIHRoZWlyIHByaW5jZXMgYXMgWmViYWgsIGFuZCBhcyBaYWxtdW5uYToKV2hvIHNhaWQsIExldCB1cyB0YWtlIHRvIG91cnNlbHZlcyB0aGUgaG91c2VzIG9mIEdvZCBpbiBwb3NzZXNzaW9uLgpPIG15IEdvZCwgbWFrZSB0aGVtIGxpa2UgYSB3aGVlbDsgYXMgdGhlIHN0dWJibGUgYmVmb3JlIHRoZSB3aW5kLgpBcyB0aGUgZmlyZSBidXJuZXRoIGEgd29vZCwgYW5kIGFzIHRoZSBmbGFtZSBzZXR0ZXRoIHRoZSBtb3VudGFpbnMgb24gZmlyZTsKU28gcGVyc2VjdXRlIHRoZW0gd2l0aCB0aHkgdGVtcGVzdCwgYW5kIG1ha2UgdGhlbSBhZnJhaWQgd2l0aCB0aHkgc3Rvcm0uCkZpbGwgdGhlaXIgZmFjZXMgd2l0aCBzaGFtZTsgdGhhdCB0aGV5IG1heSBzZWVrIHRoeSBuYW1lLCBPIExPUkQuCkxldCB0aGVtIGJlIGNvbmZvdW5kZWQgYW5kIHRyb3VibGVkIGZvciBldmVyOyB5ZWEsIGxldCB0aGVtIGJlIHB1dCB0byBzaGFtZSwgYW5kIHBlcmlzaDoKVGhhdCBtZW4gbWF5IGtub3cgdGhhdCB0aG91LCB3aG9zZSBuYW1lIGFsb25lIGlzIEpFSE9WQUgsIGFydCB0aGUgbW9zdCBoaWdoIG92ZXIgYWxsIHRoZSBlYXJ0aC4KSG93IGFtaWFibGUgYXJlIHRoeSB0YWJlcm5hY2xlcywgTyBMT1JEIG9mIGhvc3RzIQpNeSBzb3VsIGxvbmdldGgsIHllYSwgZXZlbiBmYWludGV0aCBmb3IgdGhlIGNvdXJ0cyBvZiB0aGUgTE9SRDogbXkgaGVhcnQgYW5kIG15IGZsZXNoIGNyaWV0aCBvdXQgZm9yIHRoZSBsaXZpbmcgR29kLgpZZWEsIHRoZSBzcGFycm93IGhhdGggZm91bmQgYW4gaG91c2UsIGFuZCB0aGUgc3dhbGxvdyBhIG5lc3QgZm9yIGhlcnNlbGYsIHdoZXJlIHNoZSBtYXkgbGF5IGhlciB5b3VuZywgZXZlbiB0aGluZSBhbHRhcnMsIE8gTE9SRCBvZiBob3N0cywgbXkgS2luZywgYW5kIG15IEdvZC4KQmxlc3NlZCBhcmUgdGhleSB0aGF0IGR3ZWxsIGluIHRoeSBob3VzZTogdGhleSB3aWxsIGJlIHN0aWxsIHByYWlzaW5nIHRoZWUuIFNlbGFoLgpCbGVzc2VkIGlzIHRoZSBtYW4gd2hvc2Ugc3RyZW5ndGggaXMgaW4gdGhlZTsgaW4gd2hvc2UgaGVhcnQgYXJlIHRoZSB3YXlzIG9mIHRoZW0uCldobyBwYXNzaW5nIHRocm91Z2ggdGhlIHZhbGxleSBvZiBCYWNhIG1ha2UgaXQgYSB3ZWxsOyB0aGUgcmFpbiBhbHNvIGZpbGxldGggdGhlIHBvb2xzLgpUaGV5IGdvIGZyb20gc3RyZW5ndGggdG8gc3RyZW5ndGgsIGV2ZXJ5IG9uZSBvZiB0aGVtIGluIFppb24gYXBwZWFyZXRoIGJlZm9yZSBHb2QuCk8gTE9SRCBHb2Qgb2YgaG9zdHMsIGhlYXIgbXkgcHJheWVyOiBnaXZlIGVhciwgTyBHb2Qgb2YgSmFjb2IuIFNlbGFoLgpCZWhvbGQsIE8gR29kIG91ciBzaGllbGQsIGFuZCBsb29rIHVwb24gdGhlIGZhY2Ugb2YgdGhpbmUgYW5vaW50ZWQuCkZvciBhIGRheSBpbiB0aHkgY291cnRzIGlzIGJldHRlciB0aGFuIGEgdGhvdXNhbmQuIEkgaGFkIHJhdGhlciBiZSBhIGRvb3JrZWVwZXIgaW4gdGhlIGhvdXNlIG9mIG15IEdvZCwgdGhhbiB0byBkd2VsbCBpbiB0aGUgdGVudHMgb2Ygd2lja2VkbmVzcy4KRm9yIHRoZSBMT1JEIEdvZCBpcyBhIHN1biBhbmQgc2hpZWxkOiB0aGUgTE9SRCB3aWxsIGdpdmUgZ3JhY2UgYW5kIGdsb3J5OiBubyBnb29kIHRoaW5nIHdpbGwgaGUgd2l0aGhvbGQgZnJvbSB0aGVtIHRoYXQgd2FsayB1cHJpZ2h0bHkuCk8gTE9SRCBvZiBob3N0cywgYmxlc3NlZCBpcyB0aGUgbWFuIHRoYXQgdHJ1c3RldGggaW4gdGhlZS4KTG9yZCwgdGhvdSBoYXN0IGJlZW4gZmF2b3VyYWJsZSB1bnRvIHRoeSBsYW5kOiB0aG91IGhhc3QgYnJvdWdodCBiYWNrIHRoZSBjYXB0aXZpdHkgb2YgSmFjb2IuClRob3UgaGFzdCBmb3JnaXZlbiB0aGUgaW5pcXVpdHkgb2YgdGh5IHBlb3BsZSwgdGhvdSBoYXN0IGNvdmVyZWQgYWxsIHRoZWlyIHNpbi4gU2VsYWguClRob3UgaGFzdCB0YWtlbiBhd2F5IGFsbCB0aHkgd3JhdGg6IHRob3UgaGFzdCB0dXJuZWQgdGh5c2VsZiBmcm9tIHRoZSBmaWVyY2VuZXNzIG9mIHRoaW5lIGFuZ2VyLgpUdXJuIHVzLCBPIEdvZCBvZiBvdXIgc2FsdmF0aW9uLCBhbmQgY2F1c2UgdGhpbmUgYW5nZXIgdG93YXJkIHVzIHRvIGNlYXNlLgpXaWx0IHRob3UgYmUgYW5ncnkgd2l0aCB1cyBmb3IgZXZlcj8gd2lsdCB0aG91IGRyYXcgb3V0IHRoaW5lIGFuZ2VyIHRvIGFsbCBnZW5lcmF0aW9ucz8KV2lsdCB0aG91IG5vdCByZXZpdmUgdXMgYWdhaW46IHRoYXQgdGh5IHBlb3BsZSBtYXkgcmVqb2ljZSBpbiB0aGVlPwpTaGV3IHVzIHRoeSBtZXJjeSwgTyBMT1JELCBhbmQgZ3JhbnQgdXMgdGh5IHNhbHZhdGlvbi4KSSB3aWxsIGhlYXIgd2hhdCBHb2QgdGhlIExPUkQgd2lsbCBzcGVhazogZm9yIGhlIHdpbGwgc3BlYWsgcGVhY2UgdW50byBoaXMgcGVvcGxlLCBhbmQgdG8gaGlzIHNhaW50czogYnV0IGxldCB0aGVtIG5vdCB0dXJuIGFnYWluIHRvIGZvbGx5LgpTdXJlbHkgaGlzIHNhbHZhdGlvbiBpcyBuaWdoIHRoZW0gdGhhdCBmZWFyIGhpbTsgdGhhdCBnbG9yeSBtYXkgZHdlbGwgaW4gb3VyIGxhbmQuCk1lcmN5IGFuZCB0cnV0aCBhcmUgbWV0IHRvZ2V0aGVyOyByaWdodGVvdXNuZXNzIGFuZCBwZWFjZSBoYXZlIGtpc3NlZCBlYWNoIG90aGVyLgpUcnV0aCBzaGFsbCBzcHJpbmcgb3V0IG9mIHRoZSBlYXJ0aDsgYW5kIHJpZ2h0ZW91c25lc3Mgc2hhbGwgbG9vayBkb3duIGZyb20gaGVhdmVuLgpZZWEsIHRoZSBMT1JEIHNoYWxsIGdpdmUgdGhhdCB3aGljaCBpcyBnb29kOyBhbmQgb3VyIGxhbmQgc2hhbGwgeWllbGQgaGVyIGluY3JlYXNlLgpSaWdodGVvdXNuZXNzIHNoYWxsIGdvIGJlZm9yZSBoaW07IGFuZCBzaGFsbCBzZXQgdXMgaW4gdGhlIHdheSBvZiBoaXMgc3RlcHMuCkJvdyBkb3duIHRoaW5lIGVhciwgTyBMT1JELCBoZWFyIG1lOiBmb3IgSSBhbSBwb29yIGFuZCBuZWVkeS4KUHJlc2VydmUgbXkgc291bDsgZm9yIEkgYW0gaG9seTogTyB0aG91IG15IEdvZCwgc2F2ZSB0aHkgc2VydmFudCB0aGF0IHRydXN0ZXRoIGluIHRoZWUuCkJlIG1lcmNpZnVsIHVudG8gbWUsIE8gTG9yZDogZm9yIEkgY3J5IHVudG8gdGhlZSBkYWlseS4KUmVqb2ljZSB0aGUgc291bCBvZiB0aHkgc2VydmFudDogZm9yIHVudG8gdGhlZSwgTyBMb3JkLCBkbyBJIGxpZnQgdXAgbXkgc291bC4KRm9yIHRob3UsIExvcmQsIGFydCBnb29kLCBhbmQgcmVhZHkgdG8gZm9yZ2l2ZTsgYW5kIHBsZW50ZW91cyBpbiBtZXJjeSB1bnRvIGFsbCB0aGVtIHRoYXQgY2FsbCB1cG9uIHRoZWUuCkdpdmUgZWFyLCBPIExPUkQsIHVudG8gbXkgcHJheWVyOyBhbmQgYXR0ZW5kIHRvIHRoZSB2b2ljZSBvZiBteSBzdXBwbGljYXRpb25zLgpJbiB0aGUgZGF5IG9mIG15IHRyb3VibGUgSSB3aWxsIGNhbGwgdXBvbiB0aGVlOiBmb3IgdGhvdSB3aWx0IGFuc3dlciBtZS4KQW1vbmcgdGhlIGdvZHMgdGhlcmUgaXMgbm9uZSBsaWtlIHVudG8gdGhlZSwgTyBMb3JkOyBuZWl0aGVyIGFyZSB0aGVyZSBhbnkgd29ya3MgbGlrZSB1bnRvIHRoeSB3b3Jrcy4KQWxsIG5hdGlvbnMgd2hvbSB0aG91IGhhc3QgbWFkZSBzaGFsbCBjb21lIGFuZCB3b3JzaGlwIGJlZm9yZSB0aGVlLCBPIExvcmQ7IGFuZCBzaGFsbCBnbG9yaWZ5IHRoeSBuYW1lLgpGb3IgdGhvdSBhcnQgZ3JlYXQsIGFuZCBkb2VzdCB3b25kcm91cyB0aGluZ3M6IHRob3UgYXJ0IEdvZCBhbG9uZS4KVGVhY2ggbWUgdGh5IHdheSwgTyBMT1JEOyBJIHdpbGwgd2FsayBpbiB0aHkgdHJ1dGg6IHVuaXRlIG15IGhlYXJ0IHRvIGZlYXIgdGh5IG5hbWUuCkkgd2lsbCBwcmFpc2UgdGhlZSwgTyBMb3JkIG15IEdvZCwgd2l0aCBhbGwgbXkgaGVhcnQ6IGFuZCBJIHdpbGwgZ2xvcmlmeSB0aHkgbmFtZSBmb3IgZXZlcm1vcmUuCkZvciBncmVhdCBpcyB0aHkgbWVyY3kgdG93YXJkIG1lOiBhbmQgdGhvdSBoYXN0IGRlbGl2ZXJlZCBteSBzb3VsIGZyb20gdGhlIGxvd2VzdCBoZWxsLgpPIEdvZCwgdGhlIHByb3VkIGFyZSByaXNlbiBhZ2FpbnN0IG1lLCBhbmQgdGhlIGFzc2VtYmxpZXMgb2YgdmlvbGVudCBtZW4gaGF2ZSBzb3VnaHQgYWZ0ZXIgbXkgc291bDsgYW5kIGhhdmUgbm90IHNldCB0aGVlIGJlZm9yZSB0aGVtLgpCdXQgdGhvdSwgTyBMb3JkLCBhcnQgYSBHb2QgZnVsbCBvZiBjb21wYXNzaW9uLCBhbmQgZ3JhY2lvdXMsIGxvbmcgc3VmZmVyaW5nLCBhbmQgcGxlbnRlb3VzIGluIG1lcmN5IGFuZCB0cnV0aC4KTyB0dXJuIHVudG8gbWUsIGFuZCBoYXZlIG1lcmN5IHVwb24gbWU7IGdpdmUgdGh5IHN0cmVuZ3RoIHVudG8gdGh5IHNlcnZhbnQsIGFuZCBzYXZlIHRoZSBzb24gb2YgdGhpbmUgaGFuZG1haWQuClNoZXcgbWUgYSB0b2tlbiBmb3IgZ29vZDsgdGhhdCB0aGV5IHdoaWNoIGhhdGUgbWUgbWF5IHNlZSBpdCwgYW5kIGJlIGFzaGFtZWQ6IGJlY2F1c2UgdGhvdSwgTE9SRCwgaGFzdCBob2xwZW4gbWUsIGFuZCBjb21mb3J0ZWQgbWUuCkhpcyBmb3VuZGF0aW9uIGlzIGluIHRoZSBob2x5IG1vdW50YWlucy4KVGhlIExPUkQgbG92ZXRoIHRoZSBnYXRlcyBvZiBaaW9uIG1vcmUgdGhhbiBhbGwgdGhlIGR3ZWxsaW5ncyBvZiBKYWNvYi4KR2xvcmlvdXMgdGhpbmdzIGFyZSBzcG9rZW4gb2YgdGhlZSwgTyBjaXR5IG9mIEdvZC4gU2VsYWguCkkgd2lsbCBtYWtlIG1lbnRpb24gb2YgUmFoYWIgYW5kIEJhYnlsb24gdG8gdGhlbSB0aGF0IGtub3cgbWU6IGJlaG9sZCBQaGlsaXN0aWEsIGFuZCBUeXJlLCB3aXRoIEV0aGlvcGlhOyB0aGlzIG1hbiB3YXMgYm9ybiB0aGVyZS4KQW5kIG9mIFppb24gaXQgc2hhbGwgYmUgc2FpZCwgVGhpcyBhbmQgdGhhdCBtYW4gd2FzIGJvcm4gaW4gaGVyOiBhbmQgdGhlIGhpZ2hlc3QgaGltc2VsZiBzaGFsbCBlc3RhYmxpc2ggaGVyLgpUaGUgTE9SRCBzaGFsbCBjb3VudCwgd2hlbiBoZSB3cml0ZXRoIHVwIHRoZSBwZW9wbGUsIHRoYXQgdGhpcyBtYW4gd2FzIGJvcm4gdGhlcmUuIFNlbGFoLgpBcyB3ZWxsIHRoZSBzaW5nZXJzIGFzIHRoZSBwbGF5ZXJzIG9uIGluc3RydW1lbnRzIHNoYWxsIGJlIHRoZXJlOiBhbGwgbXkgc3ByaW5ncyBhcmUgaW4gdGhlZS4KTyBsb3JkIEdvZCBvZiBteSBzYWx2YXRpb24sIEkgaGF2ZSBjcmllZCBkYXkgYW5kIG5pZ2h0IGJlZm9yZSB0aGVlOgpMZXQgbXkgcHJheWVyIGNvbWUgYmVmb3JlIHRoZWU6IGluY2xpbmUgdGhpbmUgZWFyIHVudG8gbXkgY3J5OwpGb3IgbXkgc291bCBpcyBmdWxsIG9mIHRyb3VibGVzOiBhbmQgbXkgbGlmZSBkcmF3ZXRoIG5pZ2ggdW50byB0aGUgZ3JhdmUuCkkgYW0gY291bnRlZCB3aXRoIHRoZW0gdGhhdCBnbyBkb3duIGludG8gdGhlIHBpdDogSSBhbSBhcyBhIG1hbiB0aGF0IGhhdGggbm8gc3RyZW5ndGg6CkZyZWUgYW1vbmcgdGhlIGRlYWQsIGxpa2UgdGhlIHNsYWluIHRoYXQgbGllIGluIHRoZSBncmF2ZSwgd2hvbSB0aG91IHJlbWVtYmVyZXN0IG5vIG1vcmU6IGFuZCB0aGV5IGFyZSBjdXQgb2ZmIGZyb20gdGh5IGhhbmQuClRob3UgaGFzdCBsYWlkIG1lIGluIHRoZSBsb3dlc3QgcGl0LCBpbiBkYXJrbmVzcywgaW4gdGhlIGRlZXBzLgpUaHkgd3JhdGggbGlldGggaGFyZCB1cG9uIG1lLCBhbmQgdGhvdSBoYXN0IGFmZmxpY3RlZCBtZSB3aXRoIGFsbCB0aHkgd2F2ZXMuIFNlbGFoLgpUaG91IGhhc3QgcHV0IGF3YXkgbWluZSBhY3F1YWludGFuY2UgZmFyIGZyb20gbWU7IHRob3UgaGFzdCBtYWRlIG1lIGFuIGFib21pbmF0aW9uIHVudG8gdGhlbTogSSBhbSBzaHV0IHVwLCBhbmQgSSBjYW5ub3QgY29tZSBmb3J0aC4KTWluZSBleWUgbW91cm5ldGggYnkgcmVhc29uIG9mIGFmZmxpY3Rpb246IExPUkQsIEkgaGF2ZSBjYWxsZWQgZGFpbHkgdXBvbiB0aGVlLCBJIGhhdmUgc3RyZXRjaGVkIG91dCBteSBoYW5kcyB1bnRvIHRoZWUuCldpbHQgdGhvdSBzaGV3IHdvbmRlcnMgdG8gdGhlIGRlYWQ/IHNoYWxsIHRoZSBkZWFkIGFyaXNlIGFuZCBwcmFpc2UgdGhlZT8gU2VsYWguClNoYWxsIHRoeSBsb3ZpbmdraW5kbmVzcyBiZSBkZWNsYXJlZCBpbiB0aGUgZ3JhdmU/IG9yIHRoeSBmYWl0aGZ1bG5lc3MgaW4gZGVzdHJ1Y3Rpb24/ClNoYWxsIHRoeSB3b25kZXJzIGJlIGtub3duIGluIHRoZSBkYXJrPyBhbmQgdGh5IHJpZ2h0ZW91c25lc3MgaW4gdGhlIGxhbmQgb2YgZm9yZ2V0ZnVsbmVzcz8KQnV0IHVudG8gdGhlZSBoYXZlIEkgY3JpZWQsIE8gTE9SRDsgYW5kIGluIHRoZSBtb3JuaW5nIHNoYWxsIG15IHByYXllciBwcmV2ZW50IHRoZWUuCkxPUkQsIHdoeSBjYXN0ZXN0IHRob3Ugb2ZmIG15IHNvdWw/IHdoeSBoaWRlc3QgdGhvdSB0aHkgZmFjZSBmcm9tIG1lPwpJIGFtIGFmZmxpY3RlZCBhbmQgcmVhZHkgdG8gZGllIGZyb20gbXkgeW91dGggdXA6IHdoaWxlIEkgc3VmZmVyIHRoeSB0ZXJyb3JzIEkgYW0gZGlzdHJhY3RlZC4KVGh5IGZpZXJjZSB3cmF0aCBnb2V0aCBvdmVyIG1lOyB0aHkgdGVycm9ycyBoYXZlIGN1dCBtZSBvZmYuClRoZXkgY2FtZSByb3VuZCBhYm91dCBtZSBkYWlseSBsaWtlIHdhdGVyOyB0aGV5IGNvbXBhc3NlZCBtZSBhYm91dCB0b2dldGhlci4KTG92ZXIgYW5kIGZyaWVuZCBoYXN0IHRob3UgcHV0IGZhciBmcm9tIG1lLCBhbmQgbWluZSBhY3F1YWludGFuY2UgaW50byBkYXJrbmVzcy4KSSB3aWxsIHNpbmcgb2YgdGhlIG1lcmNpZXMgb2YgdGhlIExPUkQgZm9yIGV2ZXI6IHdpdGggbXkgbW91dGggd2lsbCBJIG1ha2Uga25vd24gdGh5IGZhaXRoZnVsbmVzcyB0byBhbGwgZ2VuZXJhdGlvbnMuCkZvciBJIGhhdmUgc2FpZCwgTWVyY3kgc2hhbGwgYmUgYnVpbHQgdXAgZm9yIGV2ZXI6IHRoeSBmYWl0aGZ1bG5lc3Mgc2hhbHQgdGhvdSBlc3RhYmxpc2ggaW4gdGhlIHZlcnkgaGVhdmVucy4KSSBoYXZlIG1hZGUgYSBjb3ZlbmFudCB3aXRoIG15IGNob3NlbiwgSSBoYXZlIHN3b3JuIHVudG8gRGF2aWQgbXkgc2VydmFudCwKVGh5IHNlZWQgd2lsbCBJIGVzdGFibGlzaCBmb3IgZXZlciwgYW5kIGJ1aWxkIHVwIHRoeSB0aHJvbmUgdG8gYWxsIGdlbmVyYXRpb25zLiBTZWxhaC4KQW5kIHRoZSBoZWF2ZW5zIHNoYWxsIHByYWlzZSB0aHkgd29uZGVycywgTyBMT1JEOiB0aHkgZmFpdGhmdWxuZXNzIGFsc28gaW4gdGhlIGNvbmdyZWdhdGlvbiBvZiB0aGUgc2FpbnRzLgpGb3Igd2hvIGluIHRoZSBoZWF2ZW4gY2FuIGJlIGNvbXBhcmVkIHVudG8gdGhlIExPUkQ/IHdobyBhbW9uZyB0aGUgc29ucyBvZiB0aGUgbWlnaHR5IGNhbiBiZSBsaWtlbmVkIHVudG8gdGhlIExPUkQ/CkdvZCBpcyBncmVhdGx5IHRvIGJlIGZlYXJlZCBpbiB0aGUgYXNzZW1ibHkgb2YgdGhlIHNhaW50cywgYW5kIHRvIGJlIGhhZCBpbiByZXZlcmVuY2Ugb2YgYWxsIHRoZW0gdGhhdCBhcmUgYWJvdXQgaGltLgpPIExPUkQgR29kIG9mIGhvc3RzLCB3aG8gaXMgYSBzdHJvbmcgTE9SRCBsaWtlIHVudG8gdGhlZT8gb3IgdG8gdGh5IGZhaXRoZnVsbmVzcyByb3VuZCBhYm91dCB0aGVlPwpUaG91IHJ1bGVzdCB0aGUgcmFnaW5nIG9mIHRoZSBzZWE6IHdoZW4gdGhlIHdhdmVzIHRoZXJlb2YgYXJpc2UsIHRob3Ugc3RpbGxlc3QgdGhlbS4KVGhvdSBoYXN0IGJyb2tlbiBSYWhhYiBpbiBwaWVjZXMsIGFzIG9uZSB0aGF0IGlzIHNsYWluOyB0aG91IGhhc3Qgc2NhdHRlcmVkIHRoaW5lIGVuZW1pZXMgd2l0aCB0aHkgc3Ryb25nIGFybS4KVGhlIGhlYXZlbnMgYXJlIHRoaW5lLCB0aGUgZWFydGggYWxzbyBpcyB0aGluZTogYXMgZm9yIHRoZSB3b3JsZCBhbmQgdGhlIGZ1bG5lc3MgdGhlcmVvZiwgdGhvdSBoYXN0IGZvdW5kZWQgdGhlbS4KVGhlIG5vcnRoIGFuZCB0aGUgc291dGggdGhvdSBoYXN0IGNyZWF0ZWQgdGhlbTogVGFib3IgYW5kIEhlcm1vbiBzaGFsbCByZWpvaWNlIGluIHRoeSBuYW1lLgpUaG91IGhhc3QgYSBtaWdodHkgYXJtOiBzdHJvbmcgaXMgdGh5IGhhbmQsIGFuZCBoaWdoIGlzIHRoeSByaWdodCBoYW5kLgpKdXN0aWNlIGFuZCBqdWRnbWVudCBhcmUgdGhlIGhhYml0YXRpb24gb2YgdGh5IHRocm9uZTogbWVyY3kgYW5kIHRydXRoIHNoYWxsIGdvIGJlZm9yZSB0aHkgZmFjZS4KQmxlc3NlZCBpcyB0aGUgcGVvcGxlIHRoYXQga25vdyB0aGUgam95ZnVsIHNvdW5kOiB0aGV5IHNoYWxsIHdhbGssIE8gTE9SRCwgaW4gdGhlIGxpZ2h0IG9mIHRoeSBjb3VudGVuYW5jZS4KSW4gdGh5IG5hbWUgc2hhbGwgdGhleSByZWpvaWNlIGFsbCB0aGUgZGF5OiBhbmQgaW4gdGh5IHJpZ2h0ZW91c25lc3Mgc2hhbGwgdGhleSBiZSBleGFsdGVkLgpGb3IgdGhvdSBhcnQgdGhlIGdsb3J5IG9mIHRoZWlyIHN0cmVuZ3RoOiBhbmQgaW4gdGh5IGZhdm91ciBvdXIgaG9ybiBzaGFsbCBiZSBleGFsdGVkLgpGb3IgdGhlIExPUkQgaXMgb3VyIGRlZmVuY2U7IGFuZCB0aGUgSG9seSBPbmUgb2YgSXNyYWVsIGlzIG91ciBraW5nLgpUaGVuIHRob3Ugc3Bha2VzdCBpbiB2aXNpb24gdG8gdGh5IGhvbHkgb25lLCBhbmQgc2FpZHN0LCBJIGhhdmUgbGFpZCBoZWxwIHVwb24gb25lIHRoYXQgaXMgbWlnaHR5OyBJIGhhdmUgZXhhbHRlZCBvbmUgY2hvc2VuIG91dCBvZiB0aGUgcGVvcGxlLgpJIGhhdmUgZm91bmQgRGF2aWQgbXkgc2VydmFudDsgd2l0aCBteSBob2x5IG9pbCBoYXZlIEkgYW5vaW50ZWQgaGltOgpXaXRoIHdob20gbXkgaGFuZCBzaGFsbCBiZSBlc3RhYmxpc2hlZDogbWluZSBhcm0gYWxzbyBzaGFsbCBzdHJlbmd0aGVuIGhpbS4KVGhlIGVuZW15IHNoYWxsIG5vdCBleGFjdCB1cG9uIGhpbTsgbm9yIHRoZSBzb24gb2Ygd2lja2VkbmVzcyBhZmZsaWN0IGhpbS4KQW5kIEkgd2lsbCBiZWF0IGRvd24gaGlzIGZvZXMgYmVmb3JlIGhpcyBmYWNlLCBhbmQgcGxhZ3VlIHRoZW0gdGhhdCBoYXRlIGhpbS4KQnV0IG15IGZhaXRoZnVsbmVzcyBhbmQgbXkgbWVyY3kgc2hhbGwgYmUgd2l0aCBoaW06IGFuZCBpbiBteSBuYW1lIHNoYWxsIGhpcyBob3JuIGJlIGV4YWx0ZWQuCkkgd2lsbCBzZXQgaGlzIGhhbmQgYWxzbyBpbiB0aGUgc2VhLCBhbmQgaGlzIHJpZ2h0IGhhbmQgaW4gdGhlIHJpdmVycy4KSGUgc2hhbGwgY3J5IHVudG8gbWUsIFRob3UgYXJ0IG15IGZhdGhlciwgbXkgR29kLCBhbmQgdGhlIHJvY2sgb2YgbXkgc2FsdmF0aW9uLgpBbHNvIEkgd2lsbCBtYWtlIGhpbSBteSBmaXJzdGJvcm4sIGhpZ2hlciB0aGFuIHRoZSBraW5ncyBvZiB0aGUgZWFydGguCk15IG1lcmN5IHdpbGwgSSBrZWVwIGZvciBoaW0gZm9yIGV2ZXJtb3JlLCBhbmQgbXkgY292ZW5hbnQgc2hhbGwgc3RhbmQgZmFzdCB3aXRoIGhpbS4KSGlzIHNlZWQgYWxzbyB3aWxsIEkgbWFrZSB0byBlbmR1cmUgZm9yIGV2ZXIsIGFuZCBoaXMgdGhyb25lIGFzIHRoZSBkYXlzIG9mIGhlYXZlbi4KSWYgaGlzIGNoaWxkcmVuIGZvcnNha2UgbXkgbGF3LCBhbmQgd2FsayBub3QgaW4gbXkganVkZ21lbnRzOwpJZiB0aGV5IGJyZWFrIG15IHN0YXR1dGVzLCBhbmQga2VlcCBub3QgbXkgY29tbWFuZG1lbnRzOwpUaGVuIHdpbGwgSSB2aXNpdCB0aGVpciB0cmFuc2dyZXNzaW9uIHdpdGggdGhlIHJvZCwgYW5kIHRoZWlyIGluaXF1aXR5IHdpdGggc3RyaXBlcy4KTmV2ZXJ0aGVsZXNzIG15IGxvdmluZ2tpbmRuZXNzIHdpbGwgSSBub3QgdXR0ZXJseSB0YWtlIGZyb20gaGltLCBub3Igc3VmZmVyIG15IGZhaXRoZnVsbmVzcyB0byBmYWlsLgpNeSBjb3ZlbmFudCB3aWxsIEkgbm90IGJyZWFrLCBub3IgYWx0ZXIgdGhlIHRoaW5nIHRoYXQgaXMgZ29uZSBvdXQgb2YgbXkgbGlwcy4KT25jZSBoYXZlIEkgc3dvcm4gYnkgbXkgaG9saW5lc3MgdGhhdCBJIHdpbGwgbm90IGxpZSB1bnRvIERhdmlkLgpIaXMgc2VlZCBzaGFsbCBlbmR1cmUgZm9yIGV2ZXIsIGFuZCBoaXMgdGhyb25lIGFzIHRoZSBzdW4gYmVmb3JlIG1lLgpJdCBzaGFsbCBiZSBlc3RhYmxpc2hlZCBmb3IgZXZlciBhcyB0aGUgbW9vbiwgYW5kIGFzIGEgZmFpdGhmdWwgd2l0bmVzcyBpbiBoZWF2ZW4uIFNlbGFoLgpCdXQgdGhvdSBoYXN0IGNhc3Qgb2ZmIGFuZCBhYmhvcnJlZCwgdGhvdSBoYXN0IGJlZW4gd3JvdGggd2l0aCB0aGluZSBhbm9pbnRlZC4KVGhvdSBoYXN0IG1hZGUgdm9pZCB0aGUgY292ZW5hbnQgb2YgdGh5IHNlcnZhbnQ6IHRob3UgaGFzdCBwcm9mYW5lZCBoaXMgY3Jvd24gYnkgY2FzdGluZyBpdCB0byB0aGUgZ3JvdW5kLgpUaG91IGhhc3QgYnJva2VuIGRvd24gYWxsIGhpcyBoZWRnZXM7IHRob3UgaGFzdCBicm91Z2h0IGhpcyBzdHJvbmcgaG9sZHMgdG8gcnVpbi4KQWxsIHRoYXQgcGFzcyBieSB0aGUgd2F5IHNwb2lsIGhpbTogaGUgaXMgYSByZXByb2FjaCB0byBoaXMgbmVpZ2hib3Vycy4KVGhvdSBoYXN0IHNldCB1cCB0aGUgcmlnaHQgaGFuZCBvZiBoaXMgYWR2ZXJzYXJpZXM7IHRob3UgaGFzdCBtYWRlIGFsbCBoaXMgZW5lbWllcyB0byByZWpvaWNlLgpUaG91IGhhc3QgYWxzbyB0dXJuZWQgdGhlIGVkZ2Ugb2YgaGlzIHN3b3JkLCBhbmQgaGFzdCBub3QgbWFkZSBoaW0gdG8gc3RhbmQgaW4gdGhlIGJhdHRsZS4KVGhvdSBoYXN0IG1hZGUgaGlzIGdsb3J5IHRvIGNlYXNlLCBhbmQgY2FzdCBoaXMgdGhyb25lIGRvd24gdG8gdGhlIGdyb3VuZC4KVGhlIGRheXMgb2YgaGlzIHlvdXRoIGhhc3QgdGhvdSBzaG9ydGVuZWQ6IHRob3UgaGFzdCBjb3ZlcmVkIGhpbSB3aXRoIHNoYW1lLiBTZWxhaC4KSG93IGxvbmcsIExPUkQ/IHdpbHQgdGhvdSBoaWRlIHRoeXNlbGYgZm9yIGV2ZXI/IHNoYWxsIHRoeSB3cmF0aCBidXJuIGxpa2UgZmlyZT8KUmVtZW1iZXIgaG93IHNob3J0IG15IHRpbWUgaXM6IHdoZXJlZm9yZSBoYXN0IHRob3UgbWFkZSBhbGwgbWVuIGluIHZhaW4/CldoYXQgbWFuIGlzIGhlIHRoYXQgbGl2ZXRoLCBhbmQgc2hhbGwgbm90IHNlZSBkZWF0aD8gc2hhbGwgaGUgZGVsaXZlciBoaXMgc291bCBmcm9tIHRoZSBoYW5kIG9mIHRoZSBncmF2ZT8gU2VsYWguCkxvcmQsIHdoZXJlIGFyZSB0aHkgZm9ybWVyIGxvdmluZ2tpbmRuZXNzZXMsIHdoaWNoIHRob3Ugc3dhcmVzdCB1bnRvIERhdmlkIGluIHRoeSB0cnV0aD8KUmVtZW1iZXIsIExvcmQsIHRoZSByZXByb2FjaCBvZiB0aHkgc2VydmFudHM7IGhvdyBJIGRvIGJlYXIgaW4gbXkgYm9zb20gdGhlIHJlcHJvYWNoIG9mIGFsbCB0aGUgbWlnaHR5IHBlb3BsZTsKV2hlcmV3aXRoIHRoaW5lIGVuZW1pZXMgaGF2ZSByZXByb2FjaGVkLCBPIExPUkQ7IHdoZXJld2l0aCB0aGV5IGhhdmUgcmVwcm9hY2hlZCB0aGUgZm9vdHN0ZXBzIG9mIHRoaW5lIGFub2ludGVkLgpCbGVzc2VkIGJlIHRoZSBMT1JEIGZvciBldmVybW9yZS4gQW1lbiwgYW5kIEFtZW4uCkxvcmQsIHRob3UgaGFzdCBiZWVuIG91ciBkd2VsbGluZyBwbGFjZSBpbiBhbGwgZ2VuZXJhdGlvbnMuCkJlZm9yZSB0aGUgbW91bnRhaW5zIHdlcmUgYnJvdWdodCBmb3J0aCwgb3IgZXZlciB0aG91IGhhZHN0IGZvcm1lZCB0aGUgZWFydGggYW5kIHRoZSB3b3JsZCwgZXZlbiBmcm9tIGV2ZXJsYXN0aW5nIHRvIGV2ZXJsYXN0aW5nLCB0aG91IGFydCBHb2QuClRob3UgdHVybmVzdCBtYW4gdG8gZGVzdHJ1Y3Rpb247IGFuZCBzYXllc3QsIFJldHVybiwgeWUgY2hpbGRyZW4gb2YgbWVuLgpGb3IgYSB0aG91c2FuZCB5ZWFycyBpbiB0aHkgc2lnaHQgYXJlIGJ1dCBhcyB5ZXN0ZXJkYXkgd2hlbiBpdCBpcyBwYXN0LCBhbmQgYXMgYSB3YXRjaCBpbiB0aGUgbmlnaHQuClRob3UgY2Fycmllc3QgdGhlbSBhd2F5IGFzIHdpdGggYSBmbG9vZDsgdGhleSBhcmUgYXMgYSBzbGVlcDogaW4gdGhlIG1vcm5pbmcgdGhleSBhcmUgbGlrZSBncmFzcyB3aGljaCBncm93ZXRoIHVwLgpJbiB0aGUgbW9ybmluZyBpdCBmbG91cmlzaGV0aCwgYW5kIGdyb3dldGggdXA7IGluIHRoZSBldmVuaW5nIGl0IGlzIGN1dCBkb3duLCBhbmQgd2l0aGVyZXRoLgpGb3Igd2UgYXJlIGNvbnN1bWVkIGJ5IHRoaW5lIGFuZ2VyLCBhbmQgYnkgdGh5IHdyYXRoIGFyZSB3ZSB0cm91YmxlZC4KVGhvdSBoYXN0IHNldCBvdXIgaW5pcXVpdGllcyBiZWZvcmUgdGhlZSwgb3VyIHNlY3JldCBzaW5zIGluIHRoZSBsaWdodCBvZiB0aHkgY291bnRlbmFuY2UuCkZvciBhbGwgb3VyIGRheXMgYXJlIHBhc3NlZCBhd2F5IGluIHRoeSB3cmF0aDogd2Ugc3BlbmQgb3VyIHllYXJzIGFzIGEgdGFsZSB0aGF0IGlzIHRvbGQuClRoZSBkYXlzIG9mIG91ciB5ZWFycyBhcmUgdGhyZWVzY29yZSB5ZWFycyBhbmQgdGVuOyBhbmQgaWYgYnkgcmVhc29uIG9mIHN0cmVuZ3RoIHRoZXkgYmUgZm91cnNjb3JlIHllYXJzLCB5ZXQgaXMgdGhlaXIgc3RyZW5ndGggbGFib3VyIGFuZCBzb3Jyb3c7IGZvciBpdCBpcyBzb29uIGN1dCBvZmYsIGFuZCB3ZSBmbHkgYXdheS4KV2hvIGtub3dldGggdGhlIHBvd2VyIG9mIHRoaW5lIGFuZ2VyPyBldmVuIGFjY29yZGluZyB0byB0aHkgZmVhciwgc28gaXMgdGh5IHdyYXRoLgpTbyB0ZWFjaCB1cyB0byBudW1iZXIgb3VyIGRheXMsIHRoYXQgd2UgbWF5IGFwcGx5IG91ciBoZWFydHMgdW50byB3aXNkb20uClJldHVybiwgTyBMT1JELCBob3cgbG9uZz8gYW5kIGxldCBpdCByZXBlbnQgdGhlZSBjb25jZXJuaW5nIHRoeSBzZXJ2YW50cy4KTyBzYXRpc2Z5IHVzIGVhcmx5IHdpdGggdGh5IG1lcmN5OyB0aGF0IHdlIG1heSByZWpvaWNlIGFuZCBiZSBnbGFkIGFsbCBvdXIgZGF5cy4KTWFrZSB1cyBnbGFkIGFjY29yZGluZyB0byB0aGUgZGF5cyB3aGVyZWluIHRob3UgaGFzdCBhZmZsaWN0ZWQgdXMsIGFuZCB0aGUgeWVhcnMgd2hlcmVpbiB3ZSBoYXZlIHNlZW4gZXZpbC4KTGV0IHRoeSB3b3JrIGFwcGVhciB1bnRvIHRoeSBzZXJ2YW50cywgYW5kIHRoeSBnbG9yeSB1bnRvIHRoZWlyIGNoaWxkcmVuLgpBbmQgbGV0IHRoZSBiZWF1dHkgb2YgdGhlIExPUkQgb3VyIEdvZCBiZSB1cG9uIHVzOiBhbmQgZXN0YWJsaXNoIHRob3UgdGhlIHdvcmsgb2Ygb3VyIGhhbmRzIHVwb24gdXM7IHllYSwgdGhlIHdvcmsgb2Ygb3VyIGhhbmRzIGVzdGFibGlzaCB0aG91IGl0LgpIZSB0aGF0IGR3ZWxsZXRoIGluIHRoZSBzZWNyZXQgcGxhY2Ugb2YgdGhlIG1vc3QgSGlnaCBzaGFsbCBhYmlkZSB1bmRlciB0aGUgc2hhZG93IG9mIHRoZSBBbG1pZ2h0eS4KSSB3aWxsIHNheSBvZiB0aGUgTE9SRCwgSGUgaXMgbXkgcmVmdWdlIGFuZCBteSBmb3J0cmVzczogbXkgR29kOyBpbiBoaW0gd2lsbCBJIHRydXN0LgpTdXJlbHkgaGUgc2hhbGwgZGVsaXZlciB0aGVlIGZyb20gdGhlIHNuYXJlIG9mIHRoZSBmb3dsZXIsIGFuZCBmcm9tIHRoZSBub2lzb21lIHBlc3RpbGVuY2UuCkhlIHNoYWxsIGNvdmVyIHRoZWUgd2l0aCBoaXMgZmVhdGhlcnMsIGFuZCB1bmRlciBoaXMgd2luZ3Mgc2hhbHQgdGhvdSB0cnVzdDogaGlzIHRydXRoIHNoYWxsIGJlIHRoeSBzaGllbGQgYW5kIGJ1Y2tsZXIuClRob3Ugc2hhbHQgbm90IGJlIGFmcmFpZCBmb3IgdGhlIHRlcnJvciBieSBuaWdodDsgbm9yIGZvciB0aGUgYXJyb3cgdGhhdCBmbGlldGggYnkgZGF5OwpOb3IgZm9yIHRoZSBwZXN0aWxlbmNlIHRoYXQgd2Fsa2V0aCBpbiBkYXJrbmVzczsgbm9yIGZvciB0aGUgZGVzdHJ1Y3Rpb24gdGhhdCB3YXN0ZXRoIGF0IG5vb25kYXkuCkEgdGhvdXNhbmQgc2hhbGwgZmFsbCBhdCB0aHkgc2lkZSwgYW5kIHRlbiB0aG91c2FuZCBhdCB0aHkgcmlnaHQgaGFuZDsgYnV0IGl0IHNoYWxsIG5vdCBjb21lIG5pZ2ggdGhlZS4KT25seSB3aXRoIHRoaW5lIGV5ZXMgc2hhbHQgdGhvdSBiZWhvbGQgYW5kIHNlZSB0aGUgcmV3YXJkIG9mIHRoZSB3aWNrZWQuCkJlY2F1c2UgdGhvdSBoYXN0IG1hZGUgdGhlIExPUkQsIHdoaWNoIGlzIG15IHJlZnVnZSwgZXZlbiB0aGUgbW9zdCBIaWdoLCB0aHkgaGFiaXRhdGlvbjsKVGhlcmUgc2hhbGwgbm8gZXZpbCBiZWZhbGwgdGhlZSwgbmVpdGhlciBzaGFsbCBhbnkgcGxhZ3VlIGNvbWUgbmlnaCB0aHkgZHdlbGxpbmcuCkZvciBoZSBzaGFsbCBnaXZlIGhpcyBhbmdlbHMgY2hhcmdlIG92ZXIgdGhlZSwgdG8ga2VlcCB0aGVlIGluIGFsbCB0aHkgd2F5cy4KVGhleSBzaGFsbCBiZWFyIHRoZWUgdXAgaW4gdGhlaXIgaGFuZHMsIGxlc3QgdGhvdSBkYXNoIHRoeSBmb290IGFnYWluc3QgYSBzdG9uZS4KVGhvdSBzaGFsdCB0cmVhZCB1cG9uIHRoZSBsaW9uIGFuZCBhZGRlcjogdGhlIHlvdW5nIGxpb24gYW5kIHRoZSBkcmFnb24gc2hhbHQgdGhvdSB0cmFtcGxlIHVuZGVyIGZlZXQuCkJlY2F1c2UgaGUgaGF0aCBzZXQgaGlzIGxvdmUgdXBvbiBtZSwgdGhlcmVmb3JlIHdpbGwgSSBkZWxpdmVyIGhpbTogSSB3aWxsIHNldCBoaW0gb24gaGlnaCwgYmVjYXVzZSBoZSBoYXRoIGtub3duIG15IG5hbWUuCkhlIHNoYWxsIGNhbGwgdXBvbiBtZSwgYW5kIEkgd2lsbCBhbnN3ZXIgaGltOiBJIHdpbGwgYmUgd2l0aCBoaW0gaW4gdHJvdWJsZTsgSSB3aWxsIGRlbGl2ZXIgaGltLCBhbmQgaG9ub3VyIGhpbS4KV2l0aCBsb25nIGxpZmUgd2lsbCBJIHNhdGlzZnkgaGltLCBhbmQgc2hldyBoaW0gbXkgc2FsdmF0aW9uLgpJVCBJUyBBIEdPT0QgVEhJTkcgVE8gR0lWRSBUSEFOS1MgVU5UTyBUSEUgTE9SRCwgQU5EIFRPIFNJTkcgUFJBSVNFUyBVTlRPIFRIWSBOQU1FLCBPIE1PU1QgSElHSDoKVG8gc2hldyBmb3J0aCB0aHkgbG92aW5na2luZG5lc3MgaW4gdGhlIG1vcm5pbmcsIGFuZCB0aHkgZmFpdGhmdWxuZXNzIGV2ZXJ5IG5pZ2h0LApVcG9uIGFuIGluc3RydW1lbnQgb2YgdGVuIHN0cmluZ3MsIGFuZCB1cG9uIHRoZSBwc2FsdGVyeTsgdXBvbiB0aGUgaGFycCB3aXRoIGEgc29sZW1uIHNvdW5kLgpGb3IgdGhvdSwgTE9SRCwgaGFzdCBtYWRlIG1lIGdsYWQgdGhyb3VnaCB0aHkgd29yazogSSB3aWxsIHRyaXVtcGggaW4gdGhlIHdvcmtzIG9mIHRoeSBoYW5kcy4KTyBMT1JELCBob3cgZ3JlYXQgYXJlIHRoeSB3b3JrcyEgYW5kIHRoeSB0aG91Z2h0cyBhcmUgdmVyeSBkZWVwLgpBIGJydXRpc2ggbWFuIGtub3dldGggbm90OyBuZWl0aGVyIGRvdGggYSBmb29sIHVuZGVyc3RhbmQgdGhpcy4KV2hlbiB0aGUgd2lja2VkIHNwcmluZyBhcyB0aGUgZ3Jhc3MsIGFuZCB3aGVuIGFsbCB0aGUgd29ya2VycyBvZiBpbmlxdWl0eSBkbyBmbG91cmlzaDsgaXQgaXMgdGhhdCB0aGV5IHNoYWxsIGJlIGRlc3Ryb3llZCBmb3IgZXZlcjoKQnV0IHRob3UsIExPUkQsIGFydCBtb3N0IGhpZ2ggZm9yIGV2ZXJtb3JlLgpGb3IsIGxvLCB0aGluZSBlbmVtaWVzLCBPIExPUkQsIGZvciwgbG8sIHRoaW5lIGVuZW1pZXMgc2hhbGwgcGVyaXNoOyBhbGwgdGhlIHdvcmtlcnMgb2YgaW5pcXVpdHkgc2hhbGwgYmUgc2NhdHRlcmVkLgpCdXQgbXkgaG9ybiBzaGFsdCB0aG91IGV4YWx0IGxpa2UgdGhlIGhvcm4gb2YgYW4gdW5pY29ybjogSSBzaGFsbCBiZSBhbm9pbnRlZCB3aXRoIGZyZXNoIG9pbC4KTWluZSBleWUgYWxzbyBzaGFsbCBzZWUgbXkgZGVzaXJlIG9uIG1pbmUgZW5lbWllcywgYW5kIG1pbmUgZWFycyBzaGFsbCBoZWFyIG15IGRlc2lyZSBvZiB0aGUgd2lja2VkIHRoYXQgcmlzZSB1cCBhZ2FpbnN0IG1lLgpUaGUgcmlnaHRlb3VzIHNoYWxsIGZsb3VyaXNoIGxpa2UgdGhlIHBhbG0gdHJlZTogaGUgc2hhbGwgZ3JvdyBsaWtlIGEgY2VkYXIgaW4gTGViYW5vbi4KVGhvc2UgdGhhdCBiZSBwbGFudGVkIGluIHRoZSBob3VzZSBvZiB0aGUgTE9SRCBzaGFsbCBmbG91cmlzaCBpbiB0aGUgY291cnRzIG9mIG91ciBHb2QuClRoZXkgc2hhbGwgc3RpbGwgYnJpbmcgZm9ydGggZnJ1aXQgaW4gb2xkIGFnZTsgdGhleSBzaGFsbCBiZSBmYXQgYW5kIGZsb3VyaXNoaW5nOwpUbyBzaGV3IHRoYXQgdGhlIExPUkQgaXMgdXByaWdodDogaGUgaXMgbXkgcm9jaywgYW5kIHRoZXJlIGlzIG5vIHVucmlnaHRlb3VzbmVzcyBpbiBoaW0uClRoZSBMT1JEIHJlaWduZXRoLCBoZSBpcyBjbG90aGVkIHdpdGggbWFqZXN0eTsgdGhlIExPUkQgaXMgY2xvdGhlZCB3aXRoIHN0cmVuZ3RoLCB3aGVyZXdpdGggaGUgaGF0aCBnaXJkZWQgaGltc2VsZjogdGhlIHdvcmxkIGFsc28gaXMgc3RhYmxpc2hlZCwgdGhhdCBpdCBjYW5ub3QgYmUgbW92ZWQuClRoeSB0aHJvbmUgaXMgZXN0YWJsaXNoZWQgb2Ygb2xkOiB0aG91IGFydCBmcm9tIGV2ZXJsYXN0aW5nLgpUaGUgZmxvb2RzIGhhdmUgbGlmdGVkIHVwLCBPIExPUkQsIHRoZSBmbG9vZHMgaGF2ZSBsaWZ0ZWQgdXAgdGhlaXIgdm9pY2U7IHRoZSBmbG9vZHMgbGlmdCB1cCB0aGVpciB3YXZlcy4KVGhlIExPUkQgb24gaGlnaCBpcyBtaWdodGllciB0aGFuIHRoZSBub2lzZSBvZiBtYW55IHdhdGVycywgeWVhLCB0aGFuIHRoZSBtaWdodHkgd2F2ZXMgb2YgdGhlIHNlYS4KVGh5IHRlc3RpbW9uaWVzIGFyZSB2ZXJ5IHN1cmU6IGhvbGluZXNzIGJlY29tZXRoIHRoaW5lIGhvdXNlLCBPIExPUkQsIGZvciBldmVyLgpPIExvcmQgR29kLCB0byB3aG9tIHZlbmdlYW5jZSBiZWxvbmdldGg7IE8gR29kLCB0byB3aG9tIHZlbmdlYW5jZSBiZWxvbmdldGgsIHNoZXcgdGh5c2VsZi4KTGlmdCB1cCB0aHlzZWxmLCB0aG91IGp1ZGdlIG9mIHRoZSBlYXJ0aDogcmVuZGVyIGEgcmV3YXJkIHRvIHRoZSBwcm91ZC4KTE9SRCwgaG93IGxvbmcgc2hhbGwgdGhlIHdpY2tlZCwgaG93IGxvbmcgc2hhbGwgdGhlIHdpY2tlZCB0cml1bXBoPwpIb3cgbG9uZyBzaGFsbCB0aGV5IHV0dGVyIGFuZCBzcGVhayBoYXJkIHRoaW5ncz8gYW5kIGFsbCB0aGUgd29ya2VycyBvZiBpbmlxdWl0eSBib2FzdCB0aGVtc2VsdmVzPwpUaGV5IGJyZWFrIGluIHBpZWNlcyB0aHkgcGVvcGxlLCBPIExPUkQsIGFuZCBhZmZsaWN0IHRoaW5lIGhlcml0YWdlLgpUaGV5IHNsYXkgdGhlIHdpZG93IGFuZCB0aGUgc3RyYW5nZXIsIGFuZCBtdXJkZXIgdGhlIGZhdGhlcmxlc3MuCllldCB0aGV5IHNheSwgVGhlIExPUkQgc2hhbGwgbm90IHNlZSwgbmVpdGhlciBzaGFsbCB0aGUgR29kIG9mIEphY29iIHJlZ2FyZCBpdC4KVW5kZXJzdGFuZCwgeWUgYnJ1dGlzaCBhbW9uZyB0aGUgcGVvcGxlOiBhbmQgeWUgZm9vbHMsIHdoZW4gd2lsbCB5ZSBiZSB3aXNlPwpIZSB0aGF0IHBsYW50ZWQgdGhlIGVhciwgc2hhbGwgaGUgbm90IGhlYXI/IGhlIHRoYXQgZm9ybWVkIHRoZSBleWUsIHNoYWxsIGhlIG5vdCBzZWU/CkhlIHRoYXQgY2hhc3Rpc2V0aCB0aGUgaGVhdGhlbiwgc2hhbGwgbm90IGhlIGNvcnJlY3Q/IGhlIHRoYXQgdGVhY2hldGggbWFuIGtub3dsZWRnZSwgc2hhbGwgbm90IGhlIGtub3c/ClRoZSBMT1JEIGtub3dldGggdGhlIHRob3VnaHRzIG9mIG1hbiwgdGhhdCB0aGV5IGFyZSB2YW5pdHkuCkJsZXNzZWQgaXMgdGhlIG1hbiB3aG9tIHRob3UgY2hhc3RlbmVzdCwgTyBMT1JELCBhbmQgdGVhY2hlc3QgaGltIG91dCBvZiB0aHkgbGF3OwpUaGF0IHRob3UgbWF5ZXN0IGdpdmUgaGltIHJlc3QgZnJvbSB0aGUgZGF5cyBvZiBhZHZlcnNpdHksIHVudGlsIHRoZSBwaXQgYmUgZGlnZ2VkIGZvciB0aGUgd2lja2VkLgpGb3IgdGhlIExPUkQgd2lsbCBub3QgY2FzdCBvZmYgaGlzIHBlb3BsZSwgbmVpdGhlciB3aWxsIGhlIGZvcnNha2UgaGlzIGluaGVyaXRhbmNlLgpCdXQganVkZ21lbnQgc2hhbGwgcmV0dXJuIHVudG8gcmlnaHRlb3VzbmVzczogYW5kIGFsbCB0aGUgdXByaWdodCBpbiBoZWFydCBzaGFsbCBmb2xsb3cgaXQuCldobyB3aWxsIHJpc2UgdXAgZm9yIG1lIGFnYWluc3QgdGhlIGV2aWxkb2Vycz8gb3Igd2hvIHdpbGwgc3RhbmQgdXAgZm9yIG1lIGFnYWluc3QgdGhlIHdvcmtlcnMgb2YgaW5pcXVpdHk/ClVubGVzcyB0aGUgTE9SRCBoYWQgYmVlbiBteSBoZWxwLCBteSBzb3VsIGhhZCBhbG1vc3QgZHdlbHQgaW4gc2lsZW5jZS4KV2hlbiBJIHNhaWQsIE15IGZvb3Qgc2xpcHBldGg7IHRoeSBtZXJjeSwgTyBMT1JELCBoZWxkIG1lIHVwLgpJbiB0aGUgbXVsdGl0dWRlIG9mIG15IHRob3VnaHRzIHdpdGhpbiBtZSB0aHkgY29tZm9ydHMgZGVsaWdodCBteSBzb3VsLgpTaGFsbCB0aGUgdGhyb25lIG9mIGluaXF1aXR5IGhhdmUgZmVsbG93c2hpcCB3aXRoIHRoZWUsIHdoaWNoIGZyYW1ldGggbWlzY2hpZWYgYnkgYSBsYXc/ClRoZXkgZ2F0aGVyIHRoZW1zZWx2ZXMgdG9nZXRoZXIgYWdhaW5zdCB0aGUgc291bCBvZiB0aGUgcmlnaHRlb3VzLCBhbmQgY29uZGVtbiB0aGUgaW5ub2NlbnQgYmxvb2QuCkJ1dCB0aGUgTE9SRCBpcyBteSBkZWZlbmNlOyBhbmQgbXkgR29kIGlzIHRoZSByb2NrIG9mIG15IHJlZnVnZS4KQW5kIGhlIHNoYWxsIGJyaW5nIHVwb24gdGhlbSB0aGVpciBvd24gaW5pcXVpdHksIGFuZCBzaGFsbCBjdXQgdGhlbSBvZmYgaW4gdGhlaXIgb3duIHdpY2tlZG5lc3M7IHllYSwgdGhlIExPUkQgb3VyIEdvZCBzaGFsbCBjdXQgdGhlbSBvZmYuCk8gY29tZSwgbGV0IHVzIHNpbmcgdW50byB0aGUgTE9SRDogbGV0IHVzIG1ha2UgYSBqb3lmdWwgbm9pc2UgdG8gdGhlIHJvY2sgb2Ygb3VyIHNhbHZhdGlvbi4KTGV0IHVzIGNvbWUgYmVmb3JlIGhpcyBwcmVzZW5jZSB3aXRoIHRoYW5rc2dpdmluZywgYW5kIG1ha2UgYSBqb3lmdWwgbm9pc2UgdW50byBoaW0gd2l0aCBwc2FsbXMuCkZvciB0aGUgTE9SRCBpcyBhIGdyZWF0IEdvZCwgYW5kIGEgZ3JlYXQgS2luZyBhYm92ZSBhbGwgZ29kcy4KSW4gaGlzIGhhbmQgYXJlIHRoZSBkZWVwIHBsYWNlcyBvZiB0aGUgZWFydGg6IHRoZSBzdHJlbmd0aCBvZiB0aGUgaGlsbHMgaXMgaGlzIGFsc28uClRoZSBzZWEgaXMgaGlzLCBhbmQgaGUgbWFkZSBpdDogYW5kIGhpcyBoYW5kcyBmb3JtZWQgdGhlIGRyeSBsYW5kLgpPIGNvbWUsIGxldCB1cyB3b3JzaGlwIGFuZCBib3cgZG93bjogbGV0IHVzIGtuZWVsIGJlZm9yZSB0aGUgTE9SRCBvdXIgbWFrZXIuCkZvciBoZSBpcyBvdXIgR29kOyBhbmQgd2UgYXJlIHRoZSBwZW9wbGUgb2YgaGlzIHBhc3R1cmUsIGFuZCB0aGUgc2hlZXAgb2YgaGlzIGhhbmQuIFRvIGRheSBpZiB5ZSB3aWxsIGhlYXIgaGlzIHZvaWNlLApIYXJkZW4gbm90IHlvdXIgaGVhcnQsIGFzIGluIHRoZSBwcm92b2NhdGlvbiwgYW5kIGFzIGluIHRoZSBkYXkgb2YgdGVtcHRhdGlvbiBpbiB0aGUgd2lsZGVybmVzczoKV2hlbiB5b3VyIGZhdGhlcnMgdGVtcHRlZCBtZSwgcHJvdmVkIG1lLCBhbmQgc2F3IG15IHdvcmsuCkZvcnR5IHllYXJzIGxvbmcgd2FzIEkgZ3JpZXZlZCB3aXRoIHRoaXMgZ2VuZXJhdGlvbiwgYW5kIHNhaWQsIEl0IGlzIGEgcGVvcGxlIHRoYXQgZG8gZXJyIGluIHRoZWlyIGhlYXJ0LCBhbmQgdGhleSBoYXZlIG5vdCBrbm93biBteSB3YXlzOgpVbnRvIHdob20gSSBzd2FyZSBpbiBteSB3cmF0aCB0aGF0IHRoZXkgc2hvdWxkIG5vdCBlbnRlciBpbnRvIG15IHJlc3QuCk8gc2luZyB1bnRvIHRoZSBMT1JEIGEgbmV3IHNvbmc6IHNpbmcgdW50byB0aGUgTE9SRCwgYWxsIHRoZSBlYXJ0aC4KU2luZyB1bnRvIHRoZSBMT1JELCBibGVzcyBoaXMgbmFtZTsgc2hldyBmb3J0aCBoaXMgc2FsdmF0aW9uIGZyb20gZGF5IHRvIGRheS4KRGVjbGFyZSBoaXMgZ2xvcnkgYW1vbmcgdGhlIGhlYXRoZW4sIGhpcyB3b25kZXJzIGFtb25nIGFsbCBwZW9wbGUuCkZvciB0aGUgTE9SRCBpcyBncmVhdCwgYW5kIGdyZWF0bHkgdG8gYmUgcHJhaXNlZDogaGUgaXMgdG8gYmUgZmVhcmVkIGFib3ZlIGFsbCBnb2RzLgpGb3IgYWxsIHRoZSBnb2RzIG9mIHRoZSBuYXRpb25zIGFyZSBpZG9sczogYnV0IHRoZSBMT1JEIG1hZGUgdGhlIGhlYXZlbnMuCkhvbm91ciBhbmQgbWFqZXN0eSBhcmUgYmVmb3JlIGhpbTogc3RyZW5ndGggYW5kIGJlYXV0eSBhcmUgaW4gaGlzIHNhbmN0dWFyeS4KR2l2ZSB1bnRvIHRoZSBMT1JELCBPIHllIGtpbmRyZWRzIG9mIHRoZSBwZW9wbGUsIGdpdmUgdW50byB0aGUgTE9SRCBnbG9yeSBhbmQgc3RyZW5ndGguCkdpdmUgdW50byB0aGUgTE9SRCB0aGUgZ2xvcnkgZHVlIHVudG8gaGlzIG5hbWU6IGJyaW5nIGFuIG9mZmVyaW5nLCBhbmQgY29tZSBpbnRvIGhpcyBjb3VydHMuCk8gd29yc2hpcCB0aGUgTE9SRCBpbiB0aGUgYmVhdXR5IG9mIGhvbGluZXNzOiBmZWFyIGJlZm9yZSBoaW0sIGFsbCB0aGUgZWFydGguClNheSBhbW9uZyB0aGUgaGVhdGhlbiB0aGF0IHRoZSBMT1JEIHJlaWduZXRoOiB0aGUgd29ybGQgYWxzbyBzaGFsbCBiZSBlc3RhYmxpc2hlZCB0aGF0IGl0IHNoYWxsIG5vdCBiZSBtb3ZlZDogaGUgc2hhbGwganVkZ2UgdGhlIHBlb3BsZSByaWdodGVvdXNseS4KTGV0IHRoZSBoZWF2ZW5zIHJlam9pY2UsIGFuZCBsZXQgdGhlIGVhcnRoIGJlIGdsYWQ7IGxldCB0aGUgc2VhIHJvYXIsIGFuZCB0aGUgZnVsbmVzcyB0aGVyZW9mLgpMZXQgdGhlIGZpZWxkIGJlIGpveWZ1bCwgYW5kIGFsbCB0aGF0IGlzIHRoZXJlaW46IHRoZW4gc2hhbGwgYWxsIHRoZSB0cmVlcyBvZiB0aGUgd29vZCByZWpvaWNlCkJlZm9yZSB0aGUgTE9SRDogZm9yIGhlIGNvbWV0aCwgZm9yIGhlIGNvbWV0aCB0byBqdWRnZSB0aGUgZWFydGg6IGhlIHNoYWxsIGp1ZGdlIHRoZSB3b3JsZCB3aXRoIHJpZ2h0ZW91c25lc3MsIGFuZCB0aGUgcGVvcGxlIHdpdGggaGlzIHRydXRoLgpUaGUgTE9SRCByZWlnbmV0aDsgbGV0IHRoZSBlYXJ0aCByZWpvaWNlOyBsZXQgdGhlIG11bHRpdHVkZSBvZiBpc2xlcyBiZSBnbGFkIHRoZXJlb2YuCkNsb3VkcyBhbmQgZGFya25lc3MgYXJlIHJvdW5kIGFib3V0IGhpbTogcmlnaHRlb3VzbmVzcyBhbmQganVkZ21lbnQgYXJlIHRoZSBoYWJpdGF0aW9uIG9mIGhpcyB0aHJvbmUuCkEgZmlyZSBnb2V0aCBiZWZvcmUgaGltLCBhbmQgYnVybmV0aCB1cCBoaXMgZW5lbWllcyByb3VuZCBhYm91dC4KSGlzIGxpZ2h0bmluZ3MgZW5saWdodGVuZWQgdGhlIHdvcmxkOiB0aGUgZWFydGggc2F3LCBhbmQgdHJlbWJsZWQuClRoZSBoaWxscyBtZWx0ZWQgbGlrZSB3YXggYXQgdGhlIHByZXNlbmNlIG9mIHRoZSBMT1JELCBhdCB0aGUgcHJlc2VuY2Ugb2YgdGhlIExvcmQgb2YgdGhlIHdob2xlIGVhcnRoLgpUaGUgaGVhdmVucyBkZWNsYXJlIGhpcyByaWdodGVvdXNuZXNzLCBhbmQgYWxsIHRoZSBwZW9wbGUgc2VlIGhpcyBnbG9yeS4KQ29uZm91bmRlZCBiZSBhbGwgdGhleSB0aGF0IHNlcnZlIGdyYXZlbiBpbWFnZXMsIHRoYXQgYm9hc3QgdGhlbXNlbHZlcyBvZiBpZG9sczogd29yc2hpcCBoaW0sIGFsbCB5ZSBnb2RzLgpaaW9uIGhlYXJkLCBhbmQgd2FzIGdsYWQ7IGFuZCB0aGUgZGF1Z2h0ZXJzIG9mIEp1ZGFoIHJlam9pY2VkIGJlY2F1c2Ugb2YgdGh5IGp1ZGdtZW50cywgTyBMT1JELgpGb3IgdGhvdSwgTE9SRCwgYXJ0IGhpZ2ggYWJvdmUgYWxsIHRoZSBlYXJ0aDogdGhvdSBhcnQgZXhhbHRlZCBmYXIgYWJvdmUgYWxsIGdvZHMuClllIHRoYXQgbG92ZSB0aGUgTE9SRCwgaGF0ZSBldmlsOiBoZSBwcmVzZXJ2ZXRoIHRoZSBzb3VscyBvZiBoaXMgc2FpbnRzOyBoZSBkZWxpdmVyZXRoIHRoZW0gb3V0IG9mIHRoZSBoYW5kIG9mIHRoZSB3aWNrZWQuCkxpZ2h0IGlzIHNvd24gZm9yIHRoZSByaWdodGVvdXMsIGFuZCBnbGFkbmVzcyBmb3IgdGhlIHVwcmlnaHQgaW4gaGVhcnQuClJlam9pY2UgaW4gdGhlIExPUkQsIHllIHJpZ2h0ZW91czsgYW5kIGdpdmUgdGhhbmtzIGF0IHRoZSByZW1lbWJyYW5jZSBvZiBoaXMgaG9saW5lc3MuCk8gc2luZyB1bnRvIHRoZSBMT1JEIGEgbmV3IHNvbmc7IGZvciBoZSBoYXRoIGRvbmUgbWFydmVsbG91cyB0aGluZ3M6IGhpcyByaWdodCBoYW5kLCBhbmQgaGlzIGhvbHkgYXJtLCBoYXRoIGdvdHRlbiBoaW0gdGhlIHZpY3RvcnkuClRoZSBMT1JEIGhhdGggbWFkZSBrbm93biBoaXMgc2FsdmF0aW9uOiBoaXMgcmlnaHRlb3VzbmVzcyBoYXRoIGhlIG9wZW5seSBzaGV3ZWQgaW4gdGhlIHNpZ2h0IG9mIHRoZSBoZWF0aGVuLgpIZSBoYXRoIHJlbWVtYmVyZWQgaGlzIG1lcmN5IGFuZCBoaXMgdHJ1dGggdG93YXJkIHRoZSBob3VzZSBvZiBJc3JhZWw6IGFsbCB0aGUgZW5kcyBvZiB0aGUgZWFydGggaGF2ZSBzZWVuIHRoZSBzYWx2YXRpb24gb2Ygb3VyIEdvZC4KTWFrZSBhIGpveWZ1bCBub2lzZSB1bnRvIHRoZSBMT1JELCBhbGwgdGhlIGVhcnRoOiBtYWtlIGEgbG91ZCBub2lzZSwgYW5kIHJlam9pY2UsIGFuZCBzaW5nIHByYWlzZS4KU2luZyB1bnRvIHRoZSBMT1JEIHdpdGggdGhlIGhhcnA7IHdpdGggdGhlIGhhcnAsIGFuZCB0aGUgdm9pY2Ugb2YgYSBwc2FsbS4KV2l0aCB0cnVtcGV0cyBhbmQgc291bmQgb2YgY29ybmV0IG1ha2UgYSBqb3lmdWwgbm9pc2UgYmVmb3JlIHRoZSBMT1JELCB0aGUgS2luZy4KTGV0IHRoZSBzZWEgcm9hciwgYW5kIHRoZSBmdWxuZXNzIHRoZXJlb2Y7IHRoZSB3b3JsZCwgYW5kIHRoZXkgdGhhdCBkd2VsbCB0aGVyZWluLgpMZXQgdGhlIGZsb29kcyBjbGFwIHRoZWlyIGhhbmRzOiBsZXQgdGhlIGhpbGxzIGJlIGpveWZ1bCB0b2dldGhlcgpCZWZvcmUgdGhlIExPUkQ7IGZvciBoZSBjb21ldGggdG8ganVkZ2UgdGhlIGVhcnRoOiB3aXRoIHJpZ2h0ZW91c25lc3Mgc2hhbGwgaGUganVkZ2UgdGhlIHdvcmxkLCBhbmQgdGhlIHBlb3BsZSB3aXRoIGVxdWl0eS4KVGhlIExPUkQgcmVpZ25ldGg7IGxldCB0aGUgcGVvcGxlIHRyZW1ibGU6IGhlIHNpdHRldGggYmV0d2VlbiB0aGUgY2hlcnViaW1zOyBsZXQgdGhlIGVhcnRoIGJlIG1vdmVkLgpUaGUgTE9SRCBpcyBncmVhdCBpbiBaaW9uOyBhbmQgaGUgaXMgaGlnaCBhYm92ZSBhbGwgdGhlIHBlb3BsZS4KTGV0IHRoZW0gcHJhaXNlIHRoeSBncmVhdCBhbmQgdGVycmlibGUgbmFtZTsgZm9yIGl0IGlzIGhvbHkuClRoZSBraW5nJ3Mgc3RyZW5ndGggYWxzbyBsb3ZldGgganVkZ21lbnQ7IHRob3UgZG9zdCBlc3RhYmxpc2ggZXF1aXR5LCB0aG91IGV4ZWN1dGVzdCBqdWRnbWVudCBhbmQgcmlnaHRlb3VzbmVzcyBpbiBKYWNvYi4KRXhhbHQgeWUgdGhlIExPUkQgb3VyIEdvZCwgYW5kIHdvcnNoaXAgYXQgaGlzIGZvb3RzdG9vbDsgZm9yIGhlIGlzIGhvbHkuCk1vc2VzIGFuZCBBYXJvbiBhbW9uZyBoaXMgcHJpZXN0cywgYW5kIFNhbXVlbCBhbW9uZyB0aGVtIHRoYXQgY2FsbCB1cG9uIGhpcyBuYW1lOyB0aGV5IGNhbGxlZCB1cG9uIHRoZSBMT1JELCBhbmQgaGUgYW5zd2VyZWQgdGhlbS4KSGUgc3Bha2UgdW50byB0aGVtIGluIHRoZSBjbG91ZHkgcGlsbGFyOiB0aGV5IGtlcHQgaGlzIHRlc3RpbW9uaWVzLCBhbmQgdGhlIG9yZGluYW5jZSB0aGF0IGhlIGdhdmUgdGhlbS4KVGhvdSBhbnN3ZXJlZHN0IHRoZW0sIE8gTE9SRCBvdXIgR29kOiB0aG91IHdhc3QgYSBHb2QgdGhhdCBmb3JnYXZlc3QgdGhlbSwgdGhvdWdoIHRob3UgdG9va2VzdCB2ZW5nZWFuY2Ugb2YgdGhlaXIgaW52ZW50aW9ucy4KRXhhbHQgdGhlIExPUkQgb3VyIEdvZCwgYW5kIHdvcnNoaXAgYXQgaGlzIGhvbHkgaGlsbDsgZm9yIHRoZSBMT1JEIG91ciBHb2QgaXMgaG9seS4KTWFrZSBhIGpveWZ1bCBub2lzZSB1bnRvIHRoZSBMT1JELCBhbGwgeWUgbGFuZHMuClNlcnZlIHRoZSBMT1JEIHdpdGggZ2xhZG5lc3M6IGNvbWUgYmVmb3JlIGhpcyBwcmVzZW5jZSB3aXRoIHNpbmdpbmcuCktub3cgeWUgdGhhdCB0aGUgTE9SRCBoZSBpcyBHb2Q6IGl0IGlzIGhlIHRoYXQgaGF0aCBtYWRlIHVzLCBhbmQgbm90IHdlIG91cnNlbHZlczsgd2UgYXJlIGhpcyBwZW9wbGUsIGFuZCB0aGUgc2hlZXAgb2YgaGlzIHBhc3R1cmUuCkVudGVyIGludG8gaGlzIGdhdGVzIHdpdGggdGhhbmtzZ2l2aW5nLCBhbmQgaW50byBoaXMgY291cnRzIHdpdGggcHJhaXNlOiBiZSB0aGFua2Z1bCB1bnRvIGhpbSwgYW5kIGJsZXNzIGhpcyBuYW1lLgpGb3IgdGhlIExPUkQgaXMgZ29vZDsgaGlzIG1lcmN5IGlzIGV2ZXJsYXN0aW5nOyBhbmQgaGlzIHRydXRoIGVuZHVyZXRoIHRvIGFsbCBnZW5lcmF0aW9ucy4KSSB3aWxsIHNpbmcgb2YgbWVyY3kgYW5kIGp1ZGdtZW50OiB1bnRvIHRoZWUsIE8gTE9SRCwgd2lsbCBJIHNpbmcuCkkgd2lsbCBiZWhhdmUgbXlzZWxmIHdpc2VseSBpbiBhIHBlcmZlY3Qgd2F5LiBPIHdoZW4gd2lsdCB0aG91IGNvbWUgdW50byBtZT8gSSB3aWxsIHdhbGsgd2l0aGluIG15IGhvdXNlIHdpdGggYSBwZXJmZWN0IGhlYXJ0LgpJIHdpbGwgc2V0IG5vIHdpY2tlZCB0aGluZyBiZWZvcmUgbWluZSBleWVzOiBJIGhhdGUgdGhlIHdvcmsgb2YgdGhlbSB0aGF0IHR1cm4gYXNpZGU7IGl0IHNoYWxsIG5vdCBjbGVhdmUgdG8gbWUuCkEgZnJvd2FyZCBoZWFydCBzaGFsbCBkZXBhcnQgZnJvbSBtZTogSSB3aWxsIG5vdCBrbm93IGEgd2lja2VkIHBlcnNvbi4KV2hvc28gcHJpdmlseSBzbGFuZGVyZXRoIGhpcyBuZWlnaGJvdXIsIGhpbSB3aWxsIEkgY3V0IG9mZjogaGltIHRoYXQgaGF0aCBhbiBoaWdoIGxvb2sgYW5kIGEgcHJvdWQgaGVhcnQgd2lsbCBub3QgSSBzdWZmZXIuCk1pbmUgZXllcyBzaGFsbCBiZSB1cG9uIHRoZSBmYWl0aGZ1bCBvZiB0aGUgbGFuZCwgdGhhdCB0aGV5IG1heSBkd2VsbCB3aXRoIG1lOiBoZSB0aGF0IHdhbGtldGggaW4gYSBwZXJmZWN0IHdheSwgaGUgc2hhbGwgc2VydmUgbWUuCkhlIHRoYXQgd29ya2V0aCBkZWNlaXQgc2hhbGwgbm90IGR3ZWxsIHdpdGhpbiBteSBob3VzZTogaGUgdGhhdCB0ZWxsZXRoIGxpZXMgc2hhbGwgbm90IHRhcnJ5IGluIG15IHNpZ2h0LgpJIHdpbGwgZWFybHkgZGVzdHJveSBhbGwgdGhlIHdpY2tlZCBvZiB0aGUgbGFuZDsgdGhhdCBJIG1heSBjdXQgb2ZmIGFsbCB3aWNrZWQgZG9lcnMgZnJvbSB0aGUgY2l0eSBvZiB0aGUgTE9SRC4KSGVhciBteSBwcmF5ZXIsIE8gTE9SRCwgYW5kIGxldCBteSBjcnkgY29tZSB1bnRvIHRoZWUuCkhpZGUgbm90IHRoeSBmYWNlIGZyb20gbWUgaW4gdGhlIGRheSB3aGVuIEkgYW0gaW4gdHJvdWJsZTsgaW5jbGluZSB0aGluZSBlYXIgdW50byBtZTogaW4gdGhlIGRheSB3aGVuIEkgY2FsbCBhbnN3ZXIgbWUgc3BlZWRpbHkuCkZvciBteSBkYXlzIGFyZSBjb25zdW1lZCBsaWtlIHNtb2tlLCBhbmQgbXkgYm9uZXMgYXJlIGJ1cm5lZCBhcyBhbiBoZWFydGguCk15IGhlYXJ0IGlzIHNtaXR0ZW4sIGFuZCB3aXRoZXJlZCBsaWtlIGdyYXNzOyBzbyB0aGF0IEkgZm9yZ2V0IHRvIGVhdCBteSBicmVhZC4KQnkgcmVhc29uIG9mIHRoZSB2b2ljZSBvZiBteSBncm9hbmluZyBteSBib25lcyBjbGVhdmUgdG8gbXkgc2tpbi4KSSBhbSBsaWtlIGEgcGVsaWNhbiBvZiB0aGUgd2lsZGVybmVzczogSSBhbSBsaWtlIGFuIG93bCBvZiB0aGUgZGVzZXJ0LgpJIHdhdGNoLCBhbmQgYW0gYXMgYSBzcGFycm93IGFsb25lIHVwb24gdGhlIGhvdXNlIHRvcC4KTWluZSBlbmVtaWVzIHJlcHJvYWNoIG1lIGFsbCB0aGUgZGF5OyBhbmQgdGhleSB0aGF0IGFyZSBtYWQgYWdhaW5zdCBtZSBhcmUgc3dvcm4gYWdhaW5zdCBtZS4KRm9yIEkgaGF2ZSBlYXRlbiBhc2hlcyBsaWtlIGJyZWFkLCBhbmQgbWluZ2xlZCBteSBkcmluayB3aXRoIHdlZXBpbmcuCkJlY2F1c2Ugb2YgdGhpbmUgaW5kaWduYXRpb24gYW5kIHRoeSB3cmF0aDogZm9yIHRob3UgaGFzdCBsaWZ0ZWQgbWUgdXAsIGFuZCBjYXN0IG1lIGRvd24uCk15IGRheXMgYXJlIGxpa2UgYSBzaGFkb3cgdGhhdCBkZWNsaW5ldGg7IGFuZCBJIGFtIHdpdGhlcmVkIGxpa2UgZ3Jhc3MuCkJ1dCB0aG91LCBPIExPUkQsIHNoYWxsIGVuZHVyZSBmb3IgZXZlcjsgYW5kIHRoeSByZW1lbWJyYW5jZSB1bnRvIGFsbCBnZW5lcmF0aW9ucy4KVGhvdSBzaGFsdCBhcmlzZSwgYW5kIGhhdmUgbWVyY3kgdXBvbiBaaW9uOiBmb3IgdGhlIHRpbWUgdG8gZmF2b3VyIGhlciwgeWVhLCB0aGUgc2V0IHRpbWUsIGlzIGNvbWUuCkZvciB0aHkgc2VydmFudHMgdGFrZSBwbGVhc3VyZSBpbiBoZXIgc3RvbmVzLCBhbmQgZmF2b3VyIHRoZSBkdXN0IHRoZXJlb2YuClNvIHRoZSBoZWF0aGVuIHNoYWxsIGZlYXIgdGhlIG5hbWUgb2YgdGhlIExPUkQsIGFuZCBhbGwgdGhlIGtpbmdzIG9mIHRoZSBlYXJ0aCB0aHkgZ2xvcnkuCldoZW4gdGhlIExPUkQgc2hhbGwgYnVpbGQgdXAgWmlvbiwgaGUgc2hhbGwgYXBwZWFyIGluIGhpcyBnbG9yeS4KSGUgd2lsbCByZWdhcmQgdGhlIHByYXllciBvZiB0aGUgZGVzdGl0dXRlLCBhbmQgbm90IGRlc3Bpc2UgdGhlaXIgcHJheWVyLgpUaGlzIHNoYWxsIGJlIHdyaXR0ZW4gZm9yIHRoZSBnZW5lcmF0aW9uIHRvIGNvbWU6IGFuZCB0aGUgcGVvcGxlIHdoaWNoIHNoYWxsIGJlIGNyZWF0ZWQgc2hhbGwgcHJhaXNlIHRoZSBMT1JELgpGb3IgaGUgaGF0aCBsb29rZWQgZG93biBmcm9tIHRoZSBoZWlnaHQgb2YgaGlzIHNhbmN0dWFyeTsgZnJvbSBoZWF2ZW4gZGlkIHRoZSBMT1JEIGJlaG9sZCB0aGUgZWFydGg7ClRvIGhlYXIgdGhlIGdyb2FuaW5nIG9mIHRoZSBwcmlzb25lcjsgdG8gbG9vc2UgdGhvc2UgdGhhdCBhcmUgYXBwb2ludGVkIHRvIGRlYXRoOwpUbyBkZWNsYXJlIHRoZSBuYW1lIG9mIHRoZSBMT1JEIGluIFppb24sIGFuZCBoaXMgcHJhaXNlIGluIEplcnVzYWxlbTsKV2hlbiB0aGUgcGVvcGxlIGFyZSBnYXRoZXJlZCB0b2dldGhlciwgYW5kIHRoZSBraW5nZG9tcywgdG8gc2VydmUgdGhlIExPUkQuCkhlIHdlYWtlbmVkIG15IHN0cmVuZ3RoIGluIHRoZSB3YXk7IGhlIHNob3J0ZW5lZCBteSBkYXlzLgpJIHNhaWQsIE8gbXkgR29kLCB0YWtlIG1lIG5vdCBhd2F5IGluIHRoZSBtaWRzdCBvZiBteSBkYXlzOiB0aHkgeWVhcnMgYXJlIHRocm91Z2hvdXQgYWxsIGdlbmVyYXRpb25zLgpPZiBvbGQgaGFzdCB0aG91IGxhaWQgdGhlIGZvdW5kYXRpb24gb2YgdGhlIGVhcnRoOiBhbmQgdGhlIGhlYXZlbnMgYXJlIHRoZSB3b3JrIG9mIHRoeSBoYW5kcy4KVGhleSBzaGFsbCBwZXJpc2gsIGJ1dCB0aG91IHNoYWx0IGVuZHVyZTogeWVhLCBhbGwgb2YgdGhlbSBzaGFsbCB3YXggb2xkIGxpa2UgYSBnYXJtZW50OyBhcyBhIHZlc3R1cmUgc2hhbHQgdGhvdSBjaGFuZ2UgdGhlbSwgYW5kIHRoZXkgc2hhbGwgYmUgY2hhbmdlZDoKQnV0IHRob3UgYXJ0IHRoZSBzYW1lLCBhbmQgdGh5IHllYXJzIHNoYWxsIGhhdmUgbm8gZW5kLgpUaGUgY2hpbGRyZW4gb2YgdGh5IHNlcnZhbnRzIHNoYWxsIGNvbnRpbnVlLCBhbmQgdGhlaXIgc2VlZCBzaGFsbCBiZSBlc3RhYmxpc2hlZCBiZWZvcmUgdGhlZS4KQmxlc3MgdGhlIExPUkQsIE8gbXkgc291bDogYW5kIGFsbCB0aGF0IGlzIHdpdGhpbiBtZSwgYmxlc3MgaGlzIGhvbHkgbmFtZS4KQmxlc3MgdGhlIExPUkQsIE8gbXkgc291bCwgYW5kIGZvcmdldCBub3QgYWxsIGhpcyBiZW5lZml0czoKV2hvIGZvcmdpdmV0aCBhbGwgdGhpbmUgaW5pcXVpdGllczsgd2hvIGhlYWxldGggYWxsIHRoeSBkaXNlYXNlczsKV2hvIHJlZGVlbWV0aCB0aHkgbGlmZSBmcm9tIGRlc3RydWN0aW9uOyB3aG8gY3Jvd25ldGggdGhlZSB3aXRoIGxvdmluZ2tpbmRuZXNzIGFuZCB0ZW5kZXIgbWVyY2llczsKV2hvIHNhdGlzZmlldGggdGh5IG1vdXRoIHdpdGggZ29vZCB0aGluZ3M7IHNvIHRoYXQgdGh5IHlvdXRoIGlzIHJlbmV3ZWQgbGlrZSB0aGUgZWFnbGUncy4KVGhlIExPUkQgZXhlY3V0ZXRoIHJpZ2h0ZW91c25lc3MgYW5kIGp1ZGdtZW50IGZvciBhbGwgdGhhdCBhcmUgb3BwcmVzc2VkLgpIZSBtYWRlIGtub3duIGhpcyB3YXlzIHVudG8gTW9zZXMsIGhpcyBhY3RzIHVudG8gdGhlIGNoaWxkcmVuIG9mIElzcmFlbC4KVGhlIExPUkQgaXMgbWVyY2lmdWwgYW5kIGdyYWNpb3VzLCBzbG93IHRvIGFuZ2VyLCBhbmQgcGxlbnRlb3VzIGluIG1lcmN5LgpIZSB3aWxsIG5vdCBhbHdheXMgY2hpZGU6IG5laXRoZXIgd2lsbCBoZSBrZWVwIGhpcyBhbmdlciBmb3IgZXZlci4KSGUgaGF0aCBub3QgZGVhbHQgd2l0aCB1cyBhZnRlciBvdXIgc2luczsgbm9yIHJld2FyZGVkIHVzIGFjY29yZGluZyB0byBvdXIgaW5pcXVpdGllcy4KRm9yIGFzIHRoZSBoZWF2ZW4gaXMgaGlnaCBhYm92ZSB0aGUgZWFydGgsIHNvIGdyZWF0IGlzIGhpcyBtZXJjeSB0b3dhcmQgdGhlbSB0aGF0IGZlYXIgaGltLgpBcyBmYXIgYXMgdGhlIGVhc3QgaXMgZnJvbSB0aGUgd2VzdCwgc28gZmFyIGhhdGggaGUgcmVtb3ZlZCBvdXIgdHJhbnNncmVzc2lvbnMgZnJvbSB1cy4KTGlrZSBhcyBhIGZhdGhlciBwaXRpZXRoIGhpcyBjaGlsZHJlbiwgc28gdGhlIExPUkQgcGl0aWV0aCB0aGVtIHRoYXQgZmVhciBoaW0uCkZvciBoZSBrbm93ZXRoIG91ciBmcmFtZTsgaGUgcmVtZW1iZXJldGggdGhhdCB3ZSBhcmUgZHVzdC4KQXMgZm9yIG1hbiwgaGlzIGRheXMgYXJlIGFzIGdyYXNzOiBhcyBhIGZsb3dlciBvZiB0aGUgZmllbGQsIHNvIGhlIGZsb3VyaXNoZXRoLgpGb3IgdGhlIHdpbmQgcGFzc2V0aCBvdmVyIGl0LCBhbmQgaXQgaXMgZ29uZTsgYW5kIHRoZSBwbGFjZSB0aGVyZW9mIHNoYWxsIGtub3cgaXQgbm8gbW9yZS4KQnV0IHRoZSBtZXJjeSBvZiB0aGUgTE9SRCBpcyBmcm9tIGV2ZXJsYXN0aW5nIHRvIGV2ZXJsYXN0aW5nIHVwb24gdGhlbSB0aGF0IGZlYXIgaGltLCBhbmQgaGlzIHJpZ2h0ZW91c25lc3MgdW50byBjaGlsZHJlbidzIGNoaWxkcmVuOwpUbyBzdWNoIGFzIGtlZXAgaGlzIGNvdmVuYW50LCBhbmQgdG8gdGhvc2UgdGhhdCByZW1lbWJlciBoaXMgY29tbWFuZG1lbnRzIHRvIGRvIHRoZW0uClRoZSBMT1JEIGhhdGggcHJlcGFyZWQgaGlzIHRocm9uZSBpbiB0aGUgaGVhdmVuczsgYW5kIGhpcyBraW5nZG9tIHJ1bGV0aCBvdmVyIGFsbC4KQmxlc3MgdGhlIExPUkQsIHllIGhpcyBhbmdlbHMsIHRoYXQgZXhjZWwgaW4gc3RyZW5ndGgsIHRoYXQgZG8gaGlzIGNvbW1hbmRtZW50cywgaGVhcmtlbmluZyB1bnRvIHRoZSB2b2ljZSBvZiBoaXMgd29yZC4KQmxlc3MgeWUgdGhlIExPUkQsIGFsbCB5ZSBoaXMgaG9zdHM7IHllIG1pbmlzdGVycyBvZiBoaXMsIHRoYXQgZG8gaGlzIHBsZWFzdXJlLgpCbGVzcyB0aGUgTE9SRCwgYWxsIGhpcyB3b3JrcyBpbiBhbGwgcGxhY2VzIG9mIGhpcyBkb21pbmlvbjogYmxlc3MgdGhlIExPUkQsIE8gbXkgc291bC4KQmxlc3MgdGhlIExPUkQsIE8gbXkgc291bC4gTyBMT1JEIG15IEdvZCwgdGhvdSBhcnQgdmVyeSBncmVhdDsgdGhvdSBhcnQgY2xvdGhlZCB3aXRoIGhvbm91ciBhbmQgbWFqZXN0eS4KV2hvIGNvdmVyZXN0IHRoeXNlbGYgd2l0aCBsaWdodCBhcyB3aXRoIGEgZ2FybWVudDogd2hvIHN0cmV0Y2hlc3Qgb3V0IHRoZSBoZWF2ZW5zIGxpa2UgYSBjdXJ0YWluOgpXaG8gbGF5ZXRoIHRoZSBiZWFtcyBvZiBoaXMgY2hhbWJlcnMgaW4gdGhlIHdhdGVyczogd2hvIG1ha2V0aCB0aGUgY2xvdWRzIGhpcyBjaGFyaW90OiB3aG8gd2Fsa2V0aCB1cG9uIHRoZSB3aW5ncyBvZiB0aGUgd2luZDoKV2hvIG1ha2V0aCBoaXMgYW5nZWxzIHNwaXJpdHM7IGhpcyBtaW5pc3RlcnMgYSBmbGFtaW5nIGZpcmU6CldobyBsYWlkIHRoZSBmb3VuZGF0aW9ucyBvZiB0aGUgZWFydGgsIHRoYXQgaXQgc2hvdWxkIG5vdCBiZSByZW1vdmVkIGZvciBldmVyLgpUaG91IGNvdmVyZWRzdCBpdCB3aXRoIHRoZSBkZWVwIGFzIHdpdGggYSBnYXJtZW50OiB0aGUgd2F0ZXJzIHN0b29kIGFib3ZlIHRoZSBtb3VudGFpbnMuCkF0IHRoeSByZWJ1a2UgdGhleSBmbGVkOyBhdCB0aGUgdm9pY2Ugb2YgdGh5IHRodW5kZXIgdGhleSBoYXN0ZWQgYXdheS4KVGhleSBnbyB1cCBieSB0aGUgbW91bnRhaW5zOyB0aGV5IGdvIGRvd24gYnkgdGhlIHZhbGxleXMgdW50byB0aGUgcGxhY2Ugd2hpY2ggdGhvdSBoYXN0IGZvdW5kZWQgZm9yIHRoZW0uClRob3UgaGFzdCBzZXQgYSBib3VuZCB0aGF0IHRoZXkgbWF5IG5vdCBwYXNzIG92ZXI7IHRoYXQgdGhleSB0dXJuIG5vdCBhZ2FpbiB0byBjb3ZlciB0aGUgZWFydGguCkhlIHNlbmRldGggdGhlIHNwcmluZ3MgaW50byB0aGUgdmFsbGV5cywgd2hpY2ggcnVuIGFtb25nIHRoZSBoaWxscy4KVGhleSBnaXZlIGRyaW5rIHRvIGV2ZXJ5IGJlYXN0IG9mIHRoZSBmaWVsZDogdGhlIHdpbGQgYXNzZXMgcXVlbmNoIHRoZWlyIHRoaXJzdC4KQnkgdGhlbSBzaGFsbCB0aGUgZm93bHMgb2YgdGhlIGhlYXZlbiBoYXZlIHRoZWlyIGhhYml0YXRpb24sIHdoaWNoIHNpbmcgYW1vbmcgdGhlIGJyYW5jaGVzLgpIZSB3YXRlcmV0aCB0aGUgaGlsbHMgZnJvbSBoaXMgY2hhbWJlcnM6IHRoZSBlYXJ0aCBpcyBzYXRpc2ZpZWQgd2l0aCB0aGUgZnJ1aXQgb2YgdGh5IHdvcmtzLgpIZSBjYXVzZXRoIHRoZSBncmFzcyB0byBncm93IGZvciB0aGUgY2F0dGxlLCBhbmQgaGVyYiBmb3IgdGhlIHNlcnZpY2Ugb2YgbWFuOiB0aGF0IGhlIG1heSBicmluZyBmb3J0aCBmb29kIG91dCBvZiB0aGUgZWFydGg7CkFuZCB3aW5lIHRoYXQgbWFrZXRoIGdsYWQgdGhlIGhlYXJ0IG9mIG1hbiwgYW5kIG9pbCB0byBtYWtlIGhpcyBmYWNlIHRvIHNoaW5lLCBhbmQgYnJlYWQgd2hpY2ggc3RyZW5ndGhlbmV0aCBtYW4ncyBoZWFydC4KVGhlIHRyZWVzIG9mIHRoZSBMT1JEIGFyZSBmdWxsIG9mIHNhcDsgdGhlIGNlZGFycyBvZiBMZWJhbm9uLCB3aGljaCBoZSBoYXRoIHBsYW50ZWQ7CldoZXJlIHRoZSBiaXJkcyBtYWtlIHRoZWlyIG5lc3RzOiBhcyBmb3IgdGhlIHN0b3JrLCB0aGUgZmlyIHRyZWVzIGFyZSBoZXIgaG91c2UuClRoZSBoaWdoIGhpbGxzIGFyZSBhIHJlZnVnZSBmb3IgdGhlIHdpbGQgZ29hdHM7IGFuZCB0aGUgcm9ja3MgZm9yIHRoZSBjb25pZXMuCkhlIGFwcG9pbnRlZCB0aGUgbW9vbiBmb3Igc2Vhc29uczogdGhlIHN1biBrbm93ZXRoIGhpcyBnb2luZyBkb3duLgpUaG91IG1ha2VzdCBkYXJrbmVzcywgYW5kIGl0IGlzIG5pZ2h0OiB3aGVyZWluIGFsbCB0aGUgYmVhc3RzIG9mIHRoZSBmb3Jlc3QgZG8gY3JlZXAgZm9ydGguClRoZSB5b3VuZyBsaW9ucyByb2FyIGFmdGVyIHRoZWlyIHByZXksIGFuZCBzZWVrIHRoZWlyIG1lYXQgZnJvbSBHb2QuClRoZSBzdW4gYXJpc2V0aCwgdGhleSBnYXRoZXIgdGhlbXNlbHZlcyB0b2dldGhlciwgYW5kIGxheSB0aGVtIGRvd24gaW4gdGhlaXIgZGVucy4KTWFuIGdvZXRoIGZvcnRoIHVudG8gaGlzIHdvcmsgYW5kIHRvIGhpcyBsYWJvdXIgdW50aWwgdGhlIGV2ZW5pbmcuCk8gTE9SRCwgaG93IG1hbmlmb2xkIGFyZSB0aHkgd29ya3MhIGluIHdpc2RvbSBoYXN0IHRob3UgbWFkZSB0aGVtIGFsbDogdGhlIGVhcnRoIGlzIGZ1bGwgb2YgdGh5IHJpY2hlcy4KU28gaXMgdGhpcyBncmVhdCBhbmQgd2lkZSBzZWEsIHdoZXJlaW4gYXJlIHRoaW5ncyBjcmVlcGluZyBpbm51bWVyYWJsZSwgYm90aCBzbWFsbCBhbmQgZ3JlYXQgYmVhc3RzLgpUaGVyZSBnbyB0aGUgc2hpcHM6IHRoZXJlIGlzIHRoYXQgbGV2aWF0aGFuLCB3aG9tIHRob3UgaGFzdCBtYWRlIHRvIHBsYXkgdGhlcmVpbi4KVGhlc2Ugd2FpdCBhbGwgdXBvbiB0aGVlOyB0aGF0IHRob3UgbWF5ZXN0IGdpdmUgdGhlbSB0aGVpciBtZWF0IGluIGR1ZSBzZWFzb24uClRoYXQgdGhvdSBnaXZlc3QgdGhlbSB0aGV5IGdhdGhlcjogdGhvdSBvcGVuZXN0IHRoaW5lIGhhbmQsIHRoZXkgYXJlIGZpbGxlZCB3aXRoIGdvb2QuClRob3UgaGlkZXN0IHRoeSBmYWNlLCB0aGV5IGFyZSB0cm91YmxlZDogdGhvdSB0YWtlc3QgYXdheSB0aGVpciBicmVhdGgsIHRoZXkgZGllLCBhbmQgcmV0dXJuIHRvIHRoZWlyIGR1c3QuClRob3Ugc2VuZGVzdCBmb3J0aCB0aHkgc3Bpcml0LCB0aGV5IGFyZSBjcmVhdGVkOiBhbmQgdGhvdSByZW5ld2VzdCB0aGUgZmFjZSBvZiB0aGUgZWFydGguClRoZSBnbG9yeSBvZiB0aGUgTE9SRCBzaGFsbCBlbmR1cmUgZm9yIGV2ZXI6IHRoZSBMT1JEIHNoYWxsIHJlam9pY2UgaW4gaGlzIHdvcmtzLgpIZSBsb29rZXRoIG9uIHRoZSBlYXJ0aCwgYW5kIGl0IHRyZW1ibGV0aDogaGUgdG91Y2hldGggdGhlIGhpbGxzLCBhbmQgdGhleSBzbW9rZS4KSSB3aWxsIHNpbmcgdW50byB0aGUgTE9SRCBhcyBsb25nIGFzIEkgbGl2ZTogSSB3aWxsIHNpbmcgcHJhaXNlIHRvIG15IEdvZCB3aGlsZSBJIGhhdmUgbXkgYmVpbmcuCk15IG1lZGl0YXRpb24gb2YgaGltIHNoYWxsIGJlIHN3ZWV0OiBJIHdpbGwgYmUgZ2xhZCBpbiB0aGUgTE9SRC4KTGV0IHRoZSBzaW5uZXJzIGJlIGNvbnN1bWVkIG91dCBvZiB0aGUgZWFydGgsIGFuZCBsZXQgdGhlIHdpY2tlZCBiZSBubyBtb3JlLiBCbGVzcyB0aG91IHRoZSBMT1JELCBPIG15IHNvdWwuIFByYWlzZSB5ZSB0aGUgTE9SRC4KTyBnaXZlIHRoYW5rcyB1bnRvIHRoZSBMT1JEOyBjYWxsIHVwb24gaGlzIG5hbWU6IG1ha2Uga25vd24gaGlzIGRlZWRzIGFtb25nIHRoZSBwZW9wbGUuClNpbmcgdW50byBoaW0sIHNpbmcgcHNhbG1zIHVudG8gaGltOiB0YWxrIHllIG9mIGFsbCBoaXMgd29uZHJvdXMgd29ya3MuCkdsb3J5IHllIGluIGhpcyBob2x5IG5hbWU6IGxldCB0aGUgaGVhcnQgb2YgdGhlbSByZWpvaWNlIHRoYXQgc2VlayB0aGUgTE9SRC4KU2VlayB0aGUgTE9SRCwgYW5kIGhpcyBzdHJlbmd0aDogc2VlayBoaXMgZmFjZSBldmVybW9yZS4KUmVtZW1iZXIgaGlzIG1hcnZlbGxvdXMgd29ya3MgdGhhdCBoZSBoYXRoIGRvbmU7IGhpcyB3b25kZXJzLCBhbmQgdGhlIGp1ZGdtZW50cyBvZiBoaXMgbW91dGg7Ck8geWUgc2VlZCBvZiBBYnJhaGFtIGhpcyBzZXJ2YW50LCB5ZSBjaGlsZHJlbiBvZiBKYWNvYiBoaXMgY2hvc2VuLgpIZSBpcyB0aGUgTE9SRCBvdXIgR29kOiBoaXMganVkZ21lbnRzIGFyZSBpbiBhbGwgdGhlIGVhcnRoLgpIZSBoYXRoIHJlbWVtYmVyZWQgaGlzIGNvdmVuYW50IGZvciBldmVyLCB0aGUgd29yZCB3aGljaCBoZSBjb21tYW5kZWQgdG8gYSB0aG91c2FuZCBnZW5lcmF0aW9ucy4KV2hpY2ggY292ZW5hbnQgaGUgbWFkZSB3aXRoIEFicmFoYW0sIGFuZCBoaXMgb2F0aCB1bnRvIElzYWFjOwpBbmQgY29uZmlybWVkIHRoZSBzYW1lIHVudG8gSmFjb2IgZm9yIGEgbGF3LCBhbmQgdG8gSXNyYWVsIGZvciBhbiBldmVybGFzdGluZyBjb3ZlbmFudDoKU2F5aW5nLCBVbnRvIHRoZWUgd2lsbCBJIGdpdmUgdGhlIGxhbmQgb2YgQ2FuYWFuLCB0aGUgbG90IG9mIHlvdXIgaW5oZXJpdGFuY2U6CldoZW4gdGhleSB3ZXJlIGJ1dCBhIGZldyBtZW4gaW4gbnVtYmVyOyB5ZWEsIHZlcnkgZmV3LCBhbmQgc3RyYW5nZXJzIGluIGl0LgpXaGVuIHRoZXkgd2VudCBmcm9tIG9uZSBuYXRpb24gdG8gYW5vdGhlciwgZnJvbSBvbmUga2luZ2RvbSB0byBhbm90aGVyIHBlb3BsZTsKSGUgc3VmZmVyZWQgbm8gbWFuIHRvIGRvIHRoZW0gd3Jvbmc6IHllYSwgaGUgcmVwcm92ZWQga2luZ3MgZm9yIHRoZWlyIHNha2VzOwpTYXlpbmcsIFRvdWNoIG5vdCBtaW5lIGFub2ludGVkLCBhbmQgZG8gbXkgcHJvcGhldHMgbm8gaGFybS4KTW9yZW92ZXIgaGUgY2FsbGVkIGZvciBhIGZhbWluZSB1cG9uIHRoZSBsYW5kOiBoZSBicmFrZSB0aGUgd2hvbGUgc3RhZmYgb2YgYnJlYWQuCkhlIHNlbnQgYSBtYW4gYmVmb3JlIHRoZW0sIGV2ZW4gSm9zZXBoLCB3aG8gd2FzIHNvbGQgZm9yIGEgc2VydmFudDoKV2hvc2UgZmVldCB0aGV5IGh1cnQgd2l0aCBmZXR0ZXJzOiBoZSB3YXMgbGFpZCBpbiBpcm9uOgpVbnRpbCB0aGUgdGltZSB0aGF0IGhpcyB3b3JkIGNhbWU6IHRoZSB3b3JkIG9mIHRoZSBMT1JEIHRyaWVkIGhpbS4KVGhlIGtpbmcgc2VudCBhbmQgbG9vc2VkIGhpbTsgZXZlbiB0aGUgcnVsZXIgb2YgdGhlIHBlb3BsZSwgYW5kIGxldCBoaW0gZ28gZnJlZS4KSGUgbWFkZSBoaW0gbG9yZCBvZiBoaXMgaG91c2UsIGFuZCBydWxlciBvZiBhbGwgaGlzIHN1YnN0YW5jZToKVG8gYmluZCBoaXMgcHJpbmNlcyBhdCBoaXMgcGxlYXN1cmU7IGFuZCB0ZWFjaCBoaXMgc2VuYXRvcnMgd2lzZG9tLgpJc3JhZWwgYWxzbyBjYW1lIGludG8gRWd5cHQ7IGFuZCBKYWNvYiBzb2pvdXJuZWQgaW4gdGhlIGxhbmQgb2YgSGFtLgpBbmQgaGUgaW5jcmVhc2VkIGhpcyBwZW9wbGUgZ3JlYXRseTsgYW5kIG1hZGUgdGhlbSBzdHJvbmdlciB0aGFuIHRoZWlyIGVuZW1pZXMuCkhlIHR1cm5lZCB0aGVpciBoZWFydCB0byBoYXRlIGhpcyBwZW9wbGUsIHRvIGRlYWwgc3VidGlsbHkgd2l0aCBoaXMgc2VydmFudHMuCkhlIHNlbnQgTW9zZXMgaGlzIHNlcnZhbnQ7IGFuZCBBYXJvbiB3aG9tIGhlIGhhZCBjaG9zZW4uClRoZXkgc2hld2VkIGhpcyBzaWducyBhbW9uZyB0aGVtLCBhbmQgd29uZGVycyBpbiB0aGUgbGFuZCBvZiBIYW0uCkhlIHNlbnQgZGFya25lc3MsIGFuZCBtYWRlIGl0IGRhcms7IGFuZCB0aGV5IHJlYmVsbGVkIG5vdCBhZ2FpbnN0IGhpcyB3b3JkLgpIZSB0dXJuZWQgdGhlaXIgd2F0ZXJzIGludG8gYmxvb2QsIGFuZCBzbGV3IHRoZWlyIGZpc2guClRoZWlyIGxhbmQgYnJvdWdodCBmb3J0aCBmcm9ncyBpbiBhYnVuZGFuY2UsIGluIHRoZSBjaGFtYmVycyBvZiB0aGVpciBraW5ncy4KSGUgc3Bha2UsIGFuZCB0aGVyZSBjYW1lIGRpdmVycyBzb3J0cyBvZiBmbGllcywgYW5kIGxpY2UgaW4gYWxsIHRoZWlyIGNvYXN0cy4KSGUgZ2F2ZSB0aGVtIGhhaWwgZm9yIHJhaW4sIGFuZCBmbGFtaW5nIGZpcmUgaW4gdGhlaXIgbGFuZC4KSGUgc21vdGUgdGhlaXIgdmluZXMgYWxzbyBhbmQgdGhlaXIgZmlnIHRyZWVzOyBhbmQgYnJha2UgdGhlIHRyZWVzIG9mIHRoZWlyIGNvYXN0cy4KSGUgc3Bha2UsIGFuZCB0aGUgbG9jdXN0cyBjYW1lLCBhbmQgY2F0ZXJwaWxsZXJzLCBhbmQgdGhhdCB3aXRob3V0IG51bWJlciwKQW5kIGRpZCBlYXQgdXAgYWxsIHRoZSBoZXJicyBpbiB0aGVpciBsYW5kLCBhbmQgZGV2b3VyZWQgdGhlIGZydWl0IG9mIHRoZWlyIGdyb3VuZC4KSGUgc21vdGUgYWxzbyBhbGwgdGhlIGZpcnN0Ym9ybiBpbiB0aGVpciBsYW5kLCB0aGUgY2hpZWYgb2YgYWxsIHRoZWlyIHN0cmVuZ3RoLgpIZSBicm91Z2h0IHRoZW0gZm9ydGggYWxzbyB3aXRoIHNpbHZlciBhbmQgZ29sZDogYW5kIHRoZXJlIHdhcyBub3Qgb25lIGZlZWJsZSBwZXJzb24gYW1vbmcgdGhlaXIgdHJpYmVzLgpFZ3lwdCB3YXMgZ2xhZCB3aGVuIHRoZXkgZGVwYXJ0ZWQ6IGZvciB0aGUgZmVhciBvZiB0aGVtIGZlbGwgdXBvbiB0aGVtLgpIZSBzcHJlYWQgYSBjbG91ZCBmb3IgYSBjb3ZlcmluZzsgYW5kIGZpcmUgdG8gZ2l2ZSBsaWdodCBpbiB0aGUgbmlnaHQuClRoZSBwZW9wbGUgYXNrZWQsIGFuZCBoZSBicm91Z2h0IHF1YWlscywgYW5kIHNhdGlzZmllZCB0aGVtIHdpdGggdGhlIGJyZWFkIG9mIGhlYXZlbi4KSGUgb3BlbmVkIHRoZSByb2NrLCBhbmQgdGhlIHdhdGVycyBndXNoZWQgb3V0OyB0aGV5IHJhbiBpbiB0aGUgZHJ5IHBsYWNlcyBsaWtlIGEgcml2ZXIuCkZvciBoZSByZW1lbWJlcmVkIGhpcyBob2x5IHByb21pc2UsIGFuZCBBYnJhaGFtIGhpcyBzZXJ2YW50LgpBbmQgaGUgYnJvdWdodCBmb3J0aCBoaXMgcGVvcGxlIHdpdGggam95LCBhbmQgaGlzIGNob3NlbiB3aXRoIGdsYWRuZXNzOgpBbmQgZ2F2ZSB0aGVtIHRoZSBsYW5kcyBvZiB0aGUgaGVhdGhlbjogYW5kIHRoZXkgaW5oZXJpdGVkIHRoZSBsYWJvdXIgb2YgdGhlIHBlb3BsZTsKVGhhdCB0aGV5IG1pZ2h0IG9ic2VydmUgaGlzIHN0YXR1dGVzLCBhbmQga2VlcCBoaXMgbGF3cy4gUHJhaXNlIHllIHRoZSBMT1JELgpQcmFpc2UgeWUgdGhlIExPUkQuIE8gZ2l2ZSB0aGFua3MgdW50byB0aGUgTE9SRDsgZm9yIGhlIGlzIGdvb2Q6IGZvciBoaXMgbWVyY3kgZW5kdXJldGggZm9yIGV2ZXIuCldobyBjYW4gdXR0ZXIgdGhlIG1pZ2h0eSBhY3RzIG9mIHRoZSBMT1JEPyB3aG8gY2FuIHNoZXcgZm9ydGggYWxsIGhpcyBwcmFpc2U/CkJsZXNzZWQgYXJlIHRoZXkgdGhhdCBrZWVwIGp1ZGdtZW50LCBhbmQgaGUgdGhhdCBkb2V0aCByaWdodGVvdXNuZXNzIGF0IGFsbCB0aW1lcy4KUmVtZW1iZXIgbWUsIE8gTE9SRCwgd2l0aCB0aGUgZmF2b3VyIHRoYXQgdGhvdSBiZWFyZXN0IHVudG8gdGh5IHBlb3BsZTogTyB2aXNpdCBtZSB3aXRoIHRoeSBzYWx2YXRpb247ClRoYXQgSSBtYXkgc2VlIHRoZSBnb29kIG9mIHRoeSBjaG9zZW4sIHRoYXQgSSBtYXkgcmVqb2ljZSBpbiB0aGUgZ2xhZG5lc3Mgb2YgdGh5IG5hdGlvbiwgdGhhdCBJIG1heSBnbG9yeSB3aXRoIHRoaW5lIGluaGVyaXRhbmNlLgpXZSBoYXZlIHNpbm5lZCB3aXRoIG91ciBmYXRoZXJzLCB3ZSBoYXZlIGNvbW1pdHRlZCBpbmlxdWl0eSwgd2UgaGF2ZSBkb25lIHdpY2tlZGx5LgpPdXIgZmF0aGVycyB1bmRlcnN0b29kIG5vdCB0aHkgd29uZGVycyBpbiBFZ3lwdDsgdGhleSByZW1lbWJlcmVkIG5vdCB0aGUgbXVsdGl0dWRlIG9mIHRoeSBtZXJjaWVzOyBidXQgcHJvdm9rZWQgaGltIGF0IHRoZSBzZWEsIGV2ZW4gYXQgdGhlIFJlZCBzZWEuCk5ldmVydGhlbGVzcyBoZSBzYXZlZCB0aGVtIGZvciBoaXMgbmFtZSdzIHNha2UsIHRoYXQgaGUgbWlnaHQgbWFrZSBoaXMgbWlnaHR5IHBvd2VyIHRvIGJlIGtub3duLgpIZSByZWJ1a2VkIHRoZSBSZWQgc2VhIGFsc28sIGFuZCBpdCB3YXMgZHJpZWQgdXA6IHNvIGhlIGxlZCB0aGVtIHRocm91Z2ggdGhlIGRlcHRocywgYXMgdGhyb3VnaCB0aGUgd2lsZGVybmVzcy4KQW5kIGhlIHNhdmVkIHRoZW0gZnJvbSB0aGUgaGFuZCBvZiBoaW0gdGhhdCBoYXRlZCB0aGVtLCBhbmQgcmVkZWVtZWQgdGhlbSBmcm9tIHRoZSBoYW5kIG9mIHRoZSBlbmVteS4KQW5kIHRoZSB3YXRlcnMgY292ZXJlZCB0aGVpciBlbmVtaWVzOiB0aGVyZSB3YXMgbm90IG9uZSBvZiB0aGVtIGxlZnQuClRoZW4gYmVsaWV2ZWQgdGhleSBoaXMgd29yZHM7IHRoZXkgc2FuZyBoaXMgcHJhaXNlLgpUaGV5IHNvb24gZm9yZ2F0IGhpcyB3b3JrczsgdGhleSB3YWl0ZWQgbm90IGZvciBoaXMgY291bnNlbDoKQnV0IGx1c3RlZCBleGNlZWRpbmdseSBpbiB0aGUgd2lsZGVybmVzcywgYW5kIHRlbXB0ZWQgR29kIGluIHRoZSBkZXNlcnQuCkFuZCBoZSBnYXZlIHRoZW0gdGhlaXIgcmVxdWVzdDsgYnV0IHNlbnQgbGVhbm5lc3MgaW50byB0aGVpciBzb3VsLgpUaGV5IGVudmllZCBNb3NlcyBhbHNvIGluIHRoZSBjYW1wLCBhbmQgQWFyb24gdGhlIHNhaW50IG9mIHRoZSBMT1JELgpUaGUgZWFydGggb3BlbmVkIGFuZCBzd2FsbG93ZWQgdXAgRGF0aGFuIGFuZCBjb3ZlcmVkIHRoZSBjb21wYW55IG9mIEFiaXJhbS4KQW5kIGEgZmlyZSB3YXMga2luZGxlZCBpbiB0aGVpciBjb21wYW55OyB0aGUgZmxhbWUgYnVybmVkIHVwIHRoZSB3aWNrZWQuClRoZXkgbWFkZSBhIGNhbGYgaW4gSG9yZWIsIGFuZCB3b3JzaGlwcGVkIHRoZSBtb2x0ZW4gaW1hZ2UuClRodXMgdGhleSBjaGFuZ2VkIHRoZWlyIGdsb3J5IGludG8gdGhlIHNpbWlsaXR1ZGUgb2YgYW4gb3ggdGhhdCBlYXRldGggZ3Jhc3MuClRoZXkgZm9yZ2F0IEdvZCB0aGVpciBzYXZpb3VyLCB3aGljaCBoYWQgZG9uZSBncmVhdCB0aGluZ3MgaW4gRWd5cHQ7CldvbmRyb3VzIHdvcmtzIGluIHRoZSBsYW5kIG9mIEhhbSwgYW5kIHRlcnJpYmxlIHRoaW5ncyBieSB0aGUgUmVkIHNlYS4KVGhlcmVmb3JlIGhlIHNhaWQgdGhhdCBoZSB3b3VsZCBkZXN0cm95IHRoZW0sIGhhZCBub3QgTW9zZXMgaGlzIGNob3NlbiBzdG9vZCBiZWZvcmUgaGltIGluIHRoZSBicmVhY2gsIHRvIHR1cm4gYXdheSBoaXMgd3JhdGgsIGxlc3QgaGUgc2hvdWxkIGRlc3Ryb3kgdGhlbS4KWWVhLCB0aGV5IGRlc3Bpc2VkIHRoZSBwbGVhc2FudCBsYW5kLCB0aGV5IGJlbGlldmVkIG5vdCBoaXMgd29yZDoKQnV0IG11cm11cmVkIGluIHRoZWlyIHRlbnRzLCBhbmQgaGVhcmtlbmVkIG5vdCB1bnRvIHRoZSB2b2ljZSBvZiB0aGUgTE9SRC4KVGhlcmVmb3JlIGhlIGxpZnRlZCB1cCBoaXMgaGFuZCBhZ2FpbnN0IHRoZW0sIHRvIG92ZXJ0aHJvdyB0aGVtIGluIHRoZSB3aWxkZXJuZXNzOgpUbyBvdmVydGhyb3cgdGhlaXIgc2VlZCBhbHNvIGFtb25nIHRoZSBuYXRpb25zLCBhbmQgdG8gc2NhdHRlciB0aGVtIGluIHRoZSBsYW5kcy4KVGhleSBqb2luZWQgdGhlbXNlbHZlcyBhbHNvIHVudG8gQmFhbHBlb3IsIGFuZCBhdGUgdGhlIHNhY3JpZmljZXMgb2YgdGhlIGRlYWQuClRodXMgdGhleSBwcm92b2tlZCBoaW0gdG8gYW5nZXIgd2l0aCB0aGVpciBpbnZlbnRpb25zOiBhbmQgdGhlIHBsYWd1ZSBicmFrZSBpbiB1cG9uIHRoZW0uClRoZW4gc3Rvb2QgdXAgUGhpbmVoYXMsIGFuZCBleGVjdXRlZCBqdWRnbWVudDogYW5kIHNvIHRoZSBwbGFndWUgd2FzIHN0YXllZC4KQW5kIHRoYXQgd2FzIGNvdW50ZWQgdW50byBoaW0gZm9yIHJpZ2h0ZW91c25lc3MgdW50byBhbGwgZ2VuZXJhdGlvbnMgZm9yIGV2ZXJtb3JlLgpUaGV5IGFuZ2VyZWQgaGltIGFsc28gYXQgdGhlIHdhdGVycyBvZiBzdHJpZmUsIHNvIHRoYXQgaXQgd2VudCBpbGwgd2l0aCBNb3NlcyBmb3IgdGhlaXIgc2FrZXM6CkJlY2F1c2UgdGhleSBwcm92b2tlZCBoaXMgc3Bpcml0LCBzbyB0aGF0IGhlIHNwYWtlIHVuYWR2aXNlZGx5IHdpdGggaGlzIGxpcHMuClRoZXkgZGlkIG5vdCBkZXN0cm95IHRoZSBuYXRpb25zLCBjb25jZXJuaW5nIHdob20gdGhlIExPUkQgY29tbWFuZGVkIHRoZW06CkJ1dCB3ZXJlIG1pbmdsZWQgYW1vbmcgdGhlIGhlYXRoZW4sIGFuZCBsZWFybmVkIHRoZWlyIHdvcmtzLgpBbmQgdGhleSBzZXJ2ZWQgdGhlaXIgaWRvbHM6IHdoaWNoIHdlcmUgYSBzbmFyZSB1bnRvIHRoZW0uClllYSwgdGhleSBzYWNyaWZpY2VkIHRoZWlyIHNvbnMgYW5kIHRoZWlyIGRhdWdodGVycyB1bnRvIGRldmlscywKQW5kIHNoZWQgaW5ub2NlbnQgYmxvb2QsIGV2ZW4gdGhlIGJsb29kIG9mIHRoZWlyIHNvbnMgYW5kIG9mIHRoZWlyIGRhdWdodGVycywgd2hvbSB0aGV5IHNhY3JpZmljZWQgdW50byB0aGUgaWRvbHMgb2YgQ2FuYWFuOiBhbmQgdGhlIGxhbmQgd2FzIHBvbGx1dGVkIHdpdGggYmxvb2QuClRodXMgd2VyZSB0aGV5IGRlZmlsZWQgd2l0aCB0aGVpciBvd24gd29ya3MsIGFuZCB3ZW50IGEgd2hvcmluZyB3aXRoIHRoZWlyIG93biBpbnZlbnRpb25zLgpUaGVyZWZvcmUgd2FzIHRoZSB3cmF0aCBvZiB0aGUgTE9SRCBraW5kbGVkIGFnYWluc3QgaGlzIHBlb3BsZSwgaW5zb211Y2ggdGhhdCBoZSBhYmhvcnJlZCBoaXMgb3duIGluaGVyaXRhbmNlLgpBbmQgaGUgZ2F2ZSB0aGVtIGludG8gdGhlIGhhbmQgb2YgdGhlIGhlYXRoZW47IGFuZCB0aGV5IHRoYXQgaGF0ZWQgdGhlbSBydWxlZCBvdmVyIHRoZW0uClRoZWlyIGVuZW1pZXMgYWxzbyBvcHByZXNzZWQgdGhlbSwgYW5kIHRoZXkgd2VyZSBicm91Z2h0IGludG8gc3ViamVjdGlvbiB1bmRlciB0aGVpciBoYW5kLgpNYW55IHRpbWVzIGRpZCBoZSBkZWxpdmVyIHRoZW07IGJ1dCB0aGV5IHByb3Zva2VkIGhpbSB3aXRoIHRoZWlyIGNvdW5zZWwsIGFuZCB3ZXJlIGJyb3VnaHQgbG93IGZvciB0aGVpciBpbmlxdWl0eS4KTmV2ZXJ0aGVsZXNzIGhlIHJlZ2FyZGVkIHRoZWlyIGFmZmxpY3Rpb24sIHdoZW4gaGUgaGVhcmQgdGhlaXIgY3J5OgpBbmQgaGUgcmVtZW1iZXJlZCBmb3IgdGhlbSBoaXMgY292ZW5hbnQsIGFuZCByZXBlbnRlZCBhY2NvcmRpbmcgdG8gdGhlIG11bHRpdHVkZSBvZiBoaXMgbWVyY2llcy4KSGUgbWFkZSB0aGVtIGFsc28gdG8gYmUgcGl0aWVkIG9mIGFsbCB0aG9zZSB0aGF0IGNhcnJpZWQgdGhlbSBjYXB0aXZlcy4KU2F2ZSB1cywgTyBMT1JEIG91ciBHb2QsIGFuZCBnYXRoZXIgdXMgZnJvbSBhbW9uZyB0aGUgaGVhdGhlbiwgdG8gZ2l2ZSB0aGFua3MgdW50byB0aHkgaG9seSBuYW1lLCBhbmQgdG8gdHJpdW1waCBpbiB0aHkgcHJhaXNlLgpCbGVzc2VkIGJlIHRoZSBMT1JEIEdvZCBvZiBJc3JhZWwgZnJvbSBldmVybGFzdGluZyB0byBldmVybGFzdGluZzogYW5kIGxldCBhbGwgdGhlIHBlb3BsZSBzYXksIEFtZW4uIFByYWlzZSB5ZSB0aGUgTE9SRC4KTyBnaXZlIHRoYW5rcyB1bnRvIHRoZSBMT1JELCBmb3IgaGUgaXMgZ29vZDogZm9yIGhpcyBtZXJjeSBlbmR1cmV0aCBmb3IgZXZlci4KTGV0IHRoZSByZWRlZW1lZCBvZiB0aGUgTE9SRCBzYXkgc28sIHdob20gaGUgaGF0aCByZWRlZW1lZCBmcm9tIHRoZSBoYW5kIG9mIHRoZSBlbmVteTsKQW5kIGdhdGhlcmVkIHRoZW0gb3V0IG9mIHRoZSBsYW5kcywgZnJvbSB0aGUgZWFzdCwgYW5kIGZyb20gdGhlIHdlc3QsIGZyb20gdGhlIG5vcnRoLCBhbmQgZnJvbSB0aGUgc291dGguClRoZXkgd2FuZGVyZWQgaW4gdGhlIHdpbGRlcm5lc3MgaW4gYSBzb2xpdGFyeSB3YXk7IHRoZXkgZm91bmQgbm8gY2l0eSB0byBkd2VsbCBpbi4KSHVuZ3J5IGFuZCB0aGlyc3R5LCB0aGVpciBzb3VsIGZhaW50ZWQgaW4gdGhlbS4KVGhlbiB0aGV5IGNyaWVkIHVudG8gdGhlIExPUkQgaW4gdGhlaXIgdHJvdWJsZSwgYW5kIGhlIGRlbGl2ZXJlZCB0aGVtIG91dCBvZiB0aGVpciBkaXN0cmVzc2VzLgpBbmQgaGUgbGVkIHRoZW0gZm9ydGggYnkgdGhlIHJpZ2h0IHdheSwgdGhhdCB0aGV5IG1pZ2h0IGdvIHRvIGEgY2l0eSBvZiBoYWJpdGF0aW9uLgpPaCB0aGF0IG1lbiB3b3VsZCBwcmFpc2UgdGhlIExPUkQgZm9yIGhpcyBnb29kbmVzcywgYW5kIGZvciBoaXMgd29uZGVyZnVsIHdvcmtzIHRvIHRoZSBjaGlsZHJlbiBvZiBtZW4hCkZvciBoZSBzYXRpc2ZpZXRoIHRoZSBsb25naW5nIHNvdWwsIGFuZCBmaWxsZXRoIHRoZSBodW5ncnkgc291bCB3aXRoIGdvb2RuZXNzLgpTdWNoIGFzIHNpdCBpbiBkYXJrbmVzcyBhbmQgaW4gdGhlIHNoYWRvdyBvZiBkZWF0aCwgYmVpbmcgYm91bmQgaW4gYWZmbGljdGlvbiBhbmQgaXJvbjsKQmVjYXVzZSB0aGV5IHJlYmVsbGVkIGFnYWluc3QgdGhlIHdvcmRzIG9mIEdvZCwgYW5kIGNvbnRlbW5lZCB0aGUgY291bnNlbCBvZiB0aGUgbW9zdCBIaWdoOgpUaGVyZWZvcmUgaGUgYnJvdWdodCBkb3duIHRoZWlyIGhlYXJ0IHdpdGggbGFib3VyOyB0aGV5IGZlbGwgZG93biwgYW5kIHRoZXJlIHdhcyBub25lIHRvIGhlbHAuClRoZW4gdGhleSBjcmllZCB1bnRvIHRoZSBMT1JEIGluIHRoZWlyIHRyb3VibGUsIGFuZCBoZSBzYXZlZCB0aGVtIG91dCBvZiB0aGVpciBkaXN0cmVzc2VzLgpIZSBicm91Z2h0IHRoZW0gb3V0IG9mIGRhcmtuZXNzIGFuZCB0aGUgc2hhZG93IG9mIGRlYXRoLCBhbmQgYnJha2UgdGhlaXIgYmFuZHMgaW4gc3VuZGVyLgpPaCB0aGF0IG1lbiB3b3VsZCBwcmFpc2UgdGhlIExPUkQgZm9yIGhpcyBnb29kbmVzcywgYW5kIGZvciBoaXMgd29uZGVyZnVsIHdvcmtzIHRvIHRoZSBjaGlsZHJlbiBvZiBtZW4hCkZvciBoZSBoYXRoIGJyb2tlbiB0aGUgZ2F0ZXMgb2YgYnJhc3MsIGFuZCBjdXQgdGhlIGJhcnMgb2YgaXJvbiBpbiBzdW5kZXIuCkZvb2xzIGJlY2F1c2Ugb2YgdGhlaXIgdHJhbnNncmVzc2lvbiwgYW5kIGJlY2F1c2Ugb2YgdGhlaXIgaW5pcXVpdGllcywgYXJlIGFmZmxpY3RlZC4KVGhlaXIgc291bCBhYmhvcnJldGggYWxsIG1hbm5lciBvZiBtZWF0OyBhbmQgdGhleSBkcmF3IG5lYXIgdW50byB0aGUgZ2F0ZXMgb2YgZGVhdGguClRoZW4gdGhleSBjcnkgdW50byB0aGUgTE9SRCBpbiB0aGVpciB0cm91YmxlLCBhbmQgaGUgc2F2ZXRoIHRoZW0gb3V0IG9mIHRoZWlyIGRpc3RyZXNzZXMuCkhlIHNlbnQgaGlzIHdvcmQsIGFuZCBoZWFsZWQgdGhlbSwgYW5kIGRlbGl2ZXJlZCB0aGVtIGZyb20gdGhlaXIgZGVzdHJ1Y3Rpb25zLgpPaCB0aGF0IG1lbiB3b3VsZCBwcmFpc2UgdGhlIExPUkQgZm9yIGhpcyBnb29kbmVzcywgYW5kIGZvciBoaXMgd29uZGVyZnVsIHdvcmtzIHRvIHRoZSBjaGlsZHJlbiBvZiBtZW4hCkFuZCBsZXQgdGhlbSBzYWNyaWZpY2UgdGhlIHNhY3JpZmljZXMgb2YgdGhhbmtzZ2l2aW5nLCBhbmQgZGVjbGFyZSBoaXMgd29ya3Mgd2l0aCByZWpvaWNpbmcuClRoZXkgdGhhdCBnbyBkb3duIHRvIHRoZSBzZWEgaW4gc2hpcHMsIHRoYXQgZG8gYnVzaW5lc3MgaW4gZ3JlYXQgd2F0ZXJzOwpUaGVzZSBzZWUgdGhlIHdvcmtzIG9mIHRoZSBMT1JELCBhbmQgaGlzIHdvbmRlcnMgaW4gdGhlIGRlZXAuCkZvciBoZSBjb21tYW5kZXRoLCBhbmQgcmFpc2V0aCB0aGUgc3Rvcm15IHdpbmQsIHdoaWNoIGxpZnRldGggdXAgdGhlIHdhdmVzIHRoZXJlb2YuClRoZXkgbW91bnQgdXAgdG8gdGhlIGhlYXZlbiwgdGhleSBnbyBkb3duIGFnYWluIHRvIHRoZSBkZXB0aHM6IHRoZWlyIHNvdWwgaXMgbWVsdGVkIGJlY2F1c2Ugb2YgdHJvdWJsZS4KVGhleSByZWVsIHRvIGFuZCBmcm8sIGFuZCBzdGFnZ2VyIGxpa2UgYSBkcnVua2VuIG1hbiwgYW5kIGFyZSBhdCB0aGVpciB3aXQncyBlbmQuClRoZW4gdGhleSBjcnkgdW50byB0aGUgTE9SRCBpbiB0aGVpciB0cm91YmxlLCBhbmQgaGUgYnJpbmdldGggdGhlbSBvdXQgb2YgdGhlaXIgZGlzdHJlc3Nlcy4KSGUgbWFrZXRoIHRoZSBzdG9ybSBhIGNhbG0sIHNvIHRoYXQgdGhlIHdhdmVzIHRoZXJlb2YgYXJlIHN0aWxsLgpUaGVuIGFyZSB0aGV5IGdsYWQgYmVjYXVzZSB0aGV5IGJlIHF1aWV0OyBzbyBoZSBicmluZ2V0aCB0aGVtIHVudG8gdGhlaXIgZGVzaXJlZCBoYXZlbi4KT2ggdGhhdCBtZW4gd291bGQgcHJhaXNlIHRoZSBMT1JEIGZvciBoaXMgZ29vZG5lc3MsIGFuZCBmb3IgaGlzIHdvbmRlcmZ1bCB3b3JrcyB0byB0aGUgY2hpbGRyZW4gb2YgbWVuIQpMZXQgdGhlbSBleGFsdCBoaW0gYWxzbyBpbiB0aGUgY29uZ3JlZ2F0aW9uIG9mIHRoZSBwZW9wbGUsIGFuZCBwcmFpc2UgaGltIGluIHRoZSBhc3NlbWJseSBvZiB0aGUgZWxkZXJzLgpIZSB0dXJuZXRoIHJpdmVycyBpbnRvIGEgd2lsZGVybmVzcywgYW5kIHRoZSB3YXRlcnNwcmluZ3MgaW50byBkcnkgZ3JvdW5kOwpBIGZydWl0ZnVsIGxhbmQgaW50byBiYXJyZW5uZXNzLCBmb3IgdGhlIHdpY2tlZG5lc3Mgb2YgdGhlbSB0aGF0IGR3ZWxsIHRoZXJlaW4uCkhlIHR1cm5ldGggdGhlIHdpbGRlcm5lc3MgaW50byBhIHN0YW5kaW5nIHdhdGVyLCBhbmQgZHJ5IGdyb3VuZCBpbnRvIHdhdGVyc3ByaW5ncy4KQW5kIHRoZXJlIGhlIG1ha2V0aCB0aGUgaHVuZ3J5IHRvIGR3ZWxsLCB0aGF0IHRoZXkgbWF5IHByZXBhcmUgYSBjaXR5IGZvciBoYWJpdGF0aW9uOwpBbmQgc293IHRoZSBmaWVsZHMsIGFuZCBwbGFudCB2aW5leWFyZHMsIHdoaWNoIG1heSB5aWVsZCBmcnVpdHMgb2YgaW5jcmVhc2UuCkhlIGJsZXNzZXRoIHRoZW0gYWxzbywgc28gdGhhdCB0aGV5IGFyZSBtdWx0aXBsaWVkIGdyZWF0bHk7IGFuZCBzdWZmZXJldGggbm90IHRoZWlyIGNhdHRsZSB0byBkZWNyZWFzZS4KQWdhaW4sIHRoZXkgYXJlIG1pbmlzaGVkIGFuZCBicm91Z2h0IGxvdyB0aHJvdWdoIG9wcHJlc3Npb24sIGFmZmxpY3Rpb24sIGFuZCBzb3Jyb3cuCkhlIHBvdXJldGggY29udGVtcHQgdXBvbiBwcmluY2VzLCBhbmQgY2F1c2V0aCB0aGVtIHRvIHdhbmRlciBpbiB0aGUgd2lsZGVybmVzcywgd2hlcmUgdGhlcmUgaXMgbm8gd2F5LgpZZXQgc2V0dGV0aCBoZSB0aGUgcG9vciBvbiBoaWdoIGZyb20gYWZmbGljdGlvbiwgYW5kIG1ha2V0aCBoaW0gZmFtaWxpZXMgbGlrZSBhIGZsb2NrLgpUaGUgcmlnaHRlb3VzIHNoYWxsIHNlZSBpdCwgYW5kIHJlam9pY2U6IGFuZCBhbGwgaW5pcXVpdHkgc2hhbGwgc3RvcCBoZXIgbW91dGguCldob3NvIGlzIHdpc2UsIGFuZCB3aWxsIG9ic2VydmUgdGhlc2UgdGhpbmdzLCBldmVuIHRoZXkgc2hhbGwgdW5kZXJzdGFuZCB0aGUgbG92aW5na2luZG5lc3Mgb2YgdGhlIExPUkQuCk8gZ29kLCBteSBoZWFydCBpcyBmaXhlZDsgSSB3aWxsIHNpbmcgYW5kIGdpdmUgcHJhaXNlLCBldmVuIHdpdGggbXkgZ2xvcnkuCkF3YWtlLCBwc2FsdGVyeSBhbmQgaGFycDogSSBteXNlbGYgd2lsbCBhd2FrZSBlYXJseS4KSSB3aWxsIHByYWlzZSB0aGVlLCBPIExPUkQsIGFtb25nIHRoZSBwZW9wbGU6IGFuZCBJIHdpbGwgc2luZyBwcmFpc2VzIHVudG8gdGhlZSBhbW9uZyB0aGUgbmF0aW9ucy4KRm9yIHRoeSBtZXJjeSBpcyBncmVhdCBhYm92ZSB0aGUgaGVhdmVuczogYW5kIHRoeSB0cnV0aCByZWFjaGV0aCB1bnRvIHRoZSBjbG91ZHMuCkJlIHRob3UgZXhhbHRlZCwgTyBHb2QsIGFib3ZlIHRoZSBoZWF2ZW5zOiBhbmQgdGh5IGdsb3J5IGFib3ZlIGFsbCB0aGUgZWFydGg7ClRoYXQgdGh5IGJlbG92ZWQgbWF5IGJlIGRlbGl2ZXJlZDogc2F2ZSB3aXRoIHRoeSByaWdodCBoYW5kLCBhbmQgYW5zd2VyIG1lLgpHb2QgaGF0aCBzcG9rZW4gaW4gaGlzIGhvbGluZXNzOyBJIHdpbGwgcmVqb2ljZSwgSSB3aWxsIGRpdmlkZSBTaGVjaGVtLCBhbmQgbWV0ZSBvdXQgdGhlIHZhbGxleSBvZiBTdWNjb3RoLgpHaWxlYWQgaXMgbWluZTsgTWFuYXNzZWggaXMgbWluZTsgRXBocmFpbSBhbHNvIGlzIHRoZSBzdHJlbmd0aCBvZiBtaW5lIGhlYWQ7IEp1ZGFoIGlzIG15IGxhd2dpdmVyOwpNb2FiIGlzIG15IHdhc2hwb3Q7IG92ZXIgRWRvbSB3aWxsIEkgY2FzdCBvdXQgbXkgc2hvZTsgb3ZlciBQaGlsaXN0aWEgd2lsbCBJIHRyaXVtcGguCldobyB3aWxsIGJyaW5nIG1lIGludG8gdGhlIHN0cm9uZyBjaXR5PyB3aG8gd2lsbCBsZWFkIG1lIGludG8gRWRvbT8KV2lsdCBub3QgdGhvdSwgTyBHb2QsIHdobyBoYXN0IGNhc3QgdXMgb2ZmPyBhbmQgd2lsdCBub3QgdGhvdSwgTyBHb2QsIGdvIGZvcnRoIHdpdGggb3VyIGhvc3RzPwpHaXZlIHVzIGhlbHAgZnJvbSB0cm91YmxlOiBmb3IgdmFpbiBpcyB0aGUgaGVscCBvZiBtYW4uClRocm91Z2ggR29kIHdlIHNoYWxsIGRvIHZhbGlhbnRseTogZm9yIGhlIGl0IGlzIHRoYXQgc2hhbGwgdHJlYWQgZG93biBvdXIgZW5lbWllcy4KSG9sZCBub3QgdGh5IHBlYWNlLCBPIEdvZCBvZiBteSBwcmFpc2U7CkZvciB0aGUgbW91dGggb2YgdGhlIHdpY2tlZCBhbmQgdGhlIG1vdXRoIG9mIHRoZSBkZWNlaXRmdWwgYXJlIG9wZW5lZCBhZ2FpbnN0IG1lOiB0aGV5IGhhdmUgc3Bva2VuIGFnYWluc3QgbWUgd2l0aCBhIGx5aW5nIHRvbmd1ZS4KVGhleSBjb21wYXNzZWQgbWUgYWJvdXQgYWxzbyB3aXRoIHdvcmRzIG9mIGhhdHJlZDsgYW5kIGZvdWdodCBhZ2FpbnN0IG1lIHdpdGhvdXQgYSBjYXVzZS4KRm9yIG15IGxvdmUgdGhleSBhcmUgbXkgYWR2ZXJzYXJpZXM6IGJ1dCBJIGdpdmUgbXlzZWxmIHVudG8gcHJheWVyLgpBbmQgdGhleSBoYXZlIHJld2FyZGVkIG1lIGV2aWwgZm9yIGdvb2QsIGFuZCBoYXRyZWQgZm9yIG15IGxvdmUuClNldCB0aG91IGEgd2lja2VkIG1hbiBvdmVyIGhpbTogYW5kIGxldCBTYXRhbiBzdGFuZCBhdCBoaXMgcmlnaHQgaGFuZC4KV2hlbiBoZSBzaGFsbCBiZSBqdWRnZWQsIGxldCBoaW0gYmUgY29uZGVtbmVkOiBhbmQgbGV0IGhpcyBwcmF5ZXIgYmVjb21lIHNpbi4KTGV0IGhpcyBkYXlzIGJlIGZldzsgYW5kIGxldCBhbm90aGVyIHRha2UgaGlzIG9mZmljZS4KTGV0IGhpcyBjaGlsZHJlbiBiZSBmYXRoZXJsZXNzLCBhbmQgaGlzIHdpZmUgYSB3aWRvdy4KTGV0IGhpcyBjaGlsZHJlbiBiZSBjb250aW51YWxseSB2YWdhYm9uZHMsIGFuZCBiZWc6IGxldCB0aGVtIHNlZWsgdGhlaXIgYnJlYWQgYWxzbyBvdXQgb2YgdGhlaXIgZGVzb2xhdGUgcGxhY2VzLgpMZXQgdGhlIGV4dG9ydGlvbmVyIGNhdGNoIGFsbCB0aGF0IGhlIGhhdGg7IGFuZCBsZXQgdGhlIHN0cmFuZ2VycyBzcG9pbCBoaXMgbGFib3VyLgpMZXQgdGhlcmUgYmUgbm9uZSB0byBleHRlbmQgbWVyY3kgdW50byBoaW06IG5laXRoZXIgbGV0IHRoZXJlIGJlIGFueSB0byBmYXZvdXIgaGlzIGZhdGhlcmxlc3MgY2hpbGRyZW4uCkxldCBoaXMgcG9zdGVyaXR5IGJlIGN1dCBvZmY7IGFuZCBpbiB0aGUgZ2VuZXJhdGlvbiBmb2xsb3dpbmcgbGV0IHRoZWlyIG5hbWUgYmUgYmxvdHRlZCBvdXQuCkxldCB0aGUgaW5pcXVpdHkgb2YgaGlzIGZhdGhlcnMgYmUgcmVtZW1iZXJlZCB3aXRoIHRoZSBMT1JEOyBhbmQgbGV0IG5vdCB0aGUgc2luIG9mIGhpcyBtb3RoZXIgYmUgYmxvdHRlZCBvdXQuCkxldCB0aGVtIGJlIGJlZm9yZSB0aGUgTE9SRCBjb250aW51YWxseSwgdGhhdCBoZSBtYXkgY3V0IG9mZiB0aGUgbWVtb3J5IG9mIHRoZW0gZnJvbSB0aGUgZWFydGguCkJlY2F1c2UgdGhhdCBoZSByZW1lbWJlcmVkIG5vdCB0byBzaGV3IG1lcmN5LCBidXQgcGVyc2VjdXRlZCB0aGUgcG9vciBhbmQgbmVlZHkgbWFuLCB0aGF0IGhlIG1pZ2h0IGV2ZW4gc2xheSB0aGUgYnJva2VuIGluIGhlYXJ0LgpBcyBoZSBsb3ZlZCBjdXJzaW5nLCBzbyBsZXQgaXQgY29tZSB1bnRvIGhpbTogYXMgaGUgZGVsaWdodGVkIG5vdCBpbiBibGVzc2luZywgc28gbGV0IGl0IGJlIGZhciBmcm9tIGhpbS4KQXMgaGUgY2xvdGhlZCBoaW1zZWxmIHdpdGggY3Vyc2luZyBsaWtlIGFzIHdpdGggaGlzIGdhcm1lbnQsIHNvIGxldCBpdCBjb21lIGludG8gaGlzIGJvd2VscyBsaWtlIHdhdGVyLCBhbmQgbGlrZSBvaWwgaW50byBoaXMgYm9uZXMuCkxldCBpdCBiZSB1bnRvIGhpbSBhcyB0aGUgZ2FybWVudCB3aGljaCBjb3ZlcmV0aCBoaW0sIGFuZCBmb3IgYSBnaXJkbGUgd2hlcmV3aXRoIGhlIGlzIGdpcmRlZCBjb250aW51YWxseS4KTGV0IHRoaXMgYmUgdGhlIHJld2FyZCBvZiBtaW5lIGFkdmVyc2FyaWVzIGZyb20gdGhlIExPUkQsIGFuZCBvZiB0aGVtIHRoYXQgc3BlYWsgZXZpbCBhZ2FpbnN0IG15IHNvdWwuCkJ1dCBkbyB0aG91IGZvciBtZSwgTyBHT0QgdGhlIExvcmQsIGZvciB0aHkgbmFtZSdzIHNha2U6IGJlY2F1c2UgdGh5IG1lcmN5IGlzIGdvb2QsIGRlbGl2ZXIgdGhvdSBtZS4KRm9yIEkgYW0gcG9vciBhbmQgbmVlZHksIGFuZCBteSBoZWFydCBpcyB3b3VuZGVkIHdpdGhpbiBtZS4KSSBhbSBnb25lIGxpa2UgdGhlIHNoYWRvdyB3aGVuIGl0IGRlY2xpbmV0aDogSSBhbSB0b3NzZWQgdXAgYW5kIGRvd24gYXMgdGhlIGxvY3VzdC4KTXkga25lZXMgYXJlIHdlYWsgdGhyb3VnaCBmYXN0aW5nOyBhbmQgbXkgZmxlc2ggZmFpbGV0aCBvZiBmYXRuZXNzLgpJIGJlY2FtZSBhbHNvIGEgcmVwcm9hY2ggdW50byB0aGVtOiB3aGVuIHRoZXkgbG9va2VkIHVwb24gbWUgdGhleSBzaGFrZWQgdGhlaXIgaGVhZHMuCkhlbHAgbWUsIE8gTE9SRCBteSBHb2Q6IE8gc2F2ZSBtZSBhY2NvcmRpbmcgdG8gdGh5IG1lcmN5OgpUaGF0IHRoZXkgbWF5IGtub3cgdGhhdCB0aGlzIGlzIHRoeSBoYW5kOyB0aGF0IHRob3UsIExPUkQsIGhhc3QgZG9uZSBpdC4KTGV0IHRoZW0gY3Vyc2UsIGJ1dCBibGVzcyB0aG91OiB3aGVuIHRoZXkgYXJpc2UsIGxldCB0aGVtIGJlIGFzaGFtZWQ7IGJ1dCBsZXQgdGh5IHNlcnZhbnQgcmVqb2ljZS4KTGV0IG1pbmUgYWR2ZXJzYXJpZXMgYmUgY2xvdGhlZCB3aXRoIHNoYW1lLCBhbmQgbGV0IHRoZW0gY292ZXIgdGhlbXNlbHZlcyB3aXRoIHRoZWlyIG93biBjb25mdXNpb24sIGFzIHdpdGggYSBtYW50bGUuCkkgd2lsbCBncmVhdGx5IHByYWlzZSB0aGUgTE9SRCB3aXRoIG15IG1vdXRoOyB5ZWEsIEkgd2lsbCBwcmFpc2UgaGltIGFtb25nIHRoZSBtdWx0aXR1ZGUuCkZvciBoZSBzaGFsbCBzdGFuZCBhdCB0aGUgcmlnaHQgaGFuZCBvZiB0aGUgcG9vciwgdG8gc2F2ZSBoaW0gZnJvbSB0aG9zZSB0aGF0IGNvbmRlbW4gaGlzIHNvdWwuClRoZSBMT1JEIHNhaWQgdW50byBteSBMb3JkLCBTaXQgdGhvdSBhdCBteSByaWdodCBoYW5kLCB1bnRpbCBJIG1ha2UgdGhpbmUgZW5lbWllcyB0aHkgZm9vdHN0b29sLgpUaGUgTE9SRCBzaGFsbCBzZW5kIHRoZSByb2Qgb2YgdGh5IHN0cmVuZ3RoIG91dCBvZiBaaW9uOiBydWxlIHRob3UgaW4gdGhlIG1pZHN0IG9mIHRoaW5lIGVuZW1pZXMuClRoeSBwZW9wbGUgc2hhbGwgYmUgd2lsbGluZyBpbiB0aGUgZGF5IG9mIHRoeSBwb3dlciwgaW4gdGhlIGJlYXV0aWVzIG9mIGhvbGluZXNzIGZyb20gdGhlIHdvbWIgb2YgdGhlIG1vcm5pbmc6IHRob3UgaGFzdCB0aGUgZGV3IG9mIHRoeSB5b3V0aC4KVGhlIExPUkQgaGF0aCBzd29ybiwgYW5kIHdpbGwgbm90IHJlcGVudCwgVGhvdSBhcnQgYSBwcmllc3QgZm9yIGV2ZXIgYWZ0ZXIgdGhlIG9yZGVyIG9mIE1lbGNoaXplZGVrLgpUaGUgTG9yZCBhdCB0aHkgcmlnaHQgaGFuZCBzaGFsbCBzdHJpa2UgdGhyb3VnaCBraW5ncyBpbiB0aGUgZGF5IG9mIGhpcyB3cmF0aC4KSGUgc2hhbGwganVkZ2UgYW1vbmcgdGhlIGhlYXRoZW4sIGhlIHNoYWxsIGZpbGwgdGhlIHBsYWNlcyB3aXRoIHRoZSBkZWFkIGJvZGllczsgaGUgc2hhbGwgd291bmQgdGhlIGhlYWRzIG92ZXIgbWFueSBjb3VudHJpZXMuCkhlIHNoYWxsIGRyaW5rIG9mIHRoZSBicm9vayBpbiB0aGUgd2F5OiB0aGVyZWZvcmUgc2hhbGwgaGUgbGlmdCB1cCB0aGUgaGVhZC4KUHJhaXNlIHllIHRoZSBMT1JELiBJIHdpbGwgcHJhaXNlIHRoZSBMT1JEIHdpdGggbXkgd2hvbGUgaGVhcnQsIGluIHRoZSBhc3NlbWJseSBvZiB0aGUgdXByaWdodCwgYW5kIGluIHRoZSBjb25ncmVnYXRpb24uClRoZSB3b3JrcyBvZiB0aGUgTE9SRCBhcmUgZ3JlYXQsIHNvdWdodCBvdXQgb2YgYWxsIHRoZW0gdGhhdCBoYXZlIHBsZWFzdXJlIHRoZXJlaW4uCkhpcyB3b3JrIGlzIGhvbm91cmFibGUgYW5kIGdsb3Jpb3VzOiBhbmQgaGlzIHJpZ2h0ZW91c25lc3MgZW5kdXJldGggZm9yIGV2ZXIuCkhlIGhhdGggbWFkZSBoaXMgd29uZGVyZnVsIHdvcmtzIHRvIGJlIHJlbWVtYmVyZWQ6IHRoZSBMT1JEIGlzIGdyYWNpb3VzIGFuZCBmdWxsIG9mIGNvbXBhc3Npb24uCkhlIGhhdGggZ2l2ZW4gbWVhdCB1bnRvIHRoZW0gdGhhdCBmZWFyIGhpbTogaGUgd2lsbCBldmVyIGJlIG1pbmRmdWwgb2YgaGlzIGNvdmVuYW50LgpIZSBoYXRoIHNoZXdlZCBoaXMgcGVvcGxlIHRoZSBwb3dlciBvZiBoaXMgd29ya3MsIHRoYXQgaGUgbWF5IGdpdmUgdGhlbSB0aGUgaGVyaXRhZ2Ugb2YgdGhlIGhlYXRoZW4uClRoZSB3b3JrcyBvZiBoaXMgaGFuZHMgYXJlIHZlcml0eSBhbmQganVkZ21lbnQ7IGFsbCBoaXMgY29tbWFuZG1lbnRzIGFyZSBzdXJlLgpUaGV5IHN0YW5kIGZhc3QgZm9yIGV2ZXIgYW5kIGV2ZXIsIGFuZCBhcmUgZG9uZSBpbiB0cnV0aCBhbmQgdXByaWdodG5lc3MuCkhlIHNlbnQgcmVkZW1wdGlvbiB1bnRvIGhpcyBwZW9wbGU6IGhlIGhhdGggY29tbWFuZGVkIGhpcyBjb3ZlbmFudCBmb3IgZXZlcjogaG9seSBhbmQgcmV2ZXJlbmQgaXMgaGlzIG5hbWUuClRoZSBmZWFyIG9mIHRoZSBMT1JEIGlzIHRoZSBiZWdpbm5pbmcgb2Ygd2lzZG9tOiBhIGdvb2QgdW5kZXJzdGFuZGluZyBoYXZlIGFsbCB0aGV5IHRoYXQgZG8gaGlzIGNvbW1hbmRtZW50czogaGlzIHByYWlzZSBlbmR1cmV0aCBmb3IgZXZlci4KUHJhaXNlIHllIHRoZSBMT1JELiBCbGVzc2VkIGlzIHRoZSBtYW4gdGhhdCBmZWFyZXRoIHRoZSBMT1JELCB0aGF0IGRlbGlnaHRldGggZ3JlYXRseSBpbiBoaXMgY29tbWFuZG1lbnRzLgpIaXMgc2VlZCBzaGFsbCBiZSBtaWdodHkgdXBvbiBlYXJ0aDogdGhlIGdlbmVyYXRpb24gb2YgdGhlIHVwcmlnaHQgc2hhbGwgYmUgYmxlc3NlZC4KV2VhbHRoIGFuZCByaWNoZXMgc2hhbGwgYmUgaW4gaGlzIGhvdXNlOiBhbmQgaGlzIHJpZ2h0ZW91c25lc3MgZW5kdXJldGggZm9yIGV2ZXIuClVudG8gdGhlIHVwcmlnaHQgdGhlcmUgYXJpc2V0aCBsaWdodCBpbiB0aGUgZGFya25lc3M6IGhlIGlzIGdyYWNpb3VzLCBhbmQgZnVsbCBvZiBjb21wYXNzaW9uLCBhbmQgcmlnaHRlb3VzLgpBIGdvb2QgbWFuIHNoZXdldGggZmF2b3VyLCBhbmQgbGVuZGV0aDogaGUgd2lsbCBndWlkZSBoaXMgYWZmYWlycyB3aXRoIGRpc2NyZXRpb24uClN1cmVseSBoZSBzaGFsbCBub3QgYmUgbW92ZWQgZm9yIGV2ZXI6IHRoZSByaWdodGVvdXMgc2hhbGwgYmUgaW4gZXZlcmxhc3RpbmcgcmVtZW1icmFuY2UuCkhlIHNoYWxsIG5vdCBiZSBhZnJhaWQgb2YgZXZpbCB0aWRpbmdzOiBoaXMgaGVhcnQgaXMgZml4ZWQsIHRydXN0aW5nIGluIHRoZSBMT1JELgpIaXMgaGVhcnQgaXMgZXN0YWJsaXNoZWQsIGhlIHNoYWxsIG5vdCBiZSBhZnJhaWQsIHVudGlsIGhlIHNlZSBoaXMgZGVzaXJlIHVwb24gaGlzIGVuZW1pZXMuCkhlIGhhdGggZGlzcGVyc2VkLCBoZSBoYXRoIGdpdmVuIHRvIHRoZSBwb29yOyBoaXMgcmlnaHRlb3VzbmVzcyBlbmR1cmV0aCBmb3IgZXZlcjsgaGlzIGhvcm4gc2hhbGwgYmUgZXhhbHRlZCB3aXRoIGhvbm91ci4KVGhlIHdpY2tlZCBzaGFsbCBzZWUgaXQsIGFuZCBiZSBncmlldmVkOyBoZSBzaGFsbCBnbmFzaCB3aXRoIGhpcyB0ZWV0aCwgYW5kIG1lbHQgYXdheTogdGhlIGRlc2lyZSBvZiB0aGUgd2lja2VkIHNoYWxsIHBlcmlzaC4KUHJhaXNlIHllIHRoZSBMT1JELiBQcmFpc2UsIE8geWUgc2VydmFudHMgb2YgdGhlIExPUkQsIHByYWlzZSB0aGUgbmFtZSBvZiB0aGUgTE9SRC4KQmxlc3NlZCBiZSB0aGUgbmFtZSBvZiB0aGUgTE9SRCBmcm9tIHRoaXMgdGltZSBmb3J0aCBhbmQgZm9yIGV2ZXJtb3JlLgpGcm9tIHRoZSByaXNpbmcgb2YgdGhlIHN1biB1bnRvIHRoZSBnb2luZyBkb3duIG9mIHRoZSBzYW1lIHRoZSBMT1JEJ3MgbmFtZSBpcyB0byBiZSBwcmFpc2VkLgpUaGUgTE9SRCBpcyBoaWdoIGFib3ZlIGFsbCBuYXRpb25zLCBhbmQgaGlzIGdsb3J5IGFib3ZlIHRoZSBoZWF2ZW5zLgpXaG8gaXMgbGlrZSB1bnRvIHRoZSBMT1JEIG91ciBHb2QsIHdobyBkd2VsbGV0aCBvbiBoaWdoLApXaG8gaHVtYmxldGggaGltc2VsZiB0byBiZWhvbGQgdGhlIHRoaW5ncyB0aGF0IGFyZSBpbiBoZWF2ZW4sIGFuZCBpbiB0aGUgZWFydGghCkhlIHJhaXNldGggdXAgdGhlIHBvb3Igb3V0IG9mIHRoZSBkdXN0LCBhbmQgbGlmdGV0aCB0aGUgbmVlZHkgb3V0IG9mIHRoZSBkdW5naGlsbDsKVGhhdCBoZSBtYXkgc2V0IGhpbSB3aXRoIHByaW5jZXMsIGV2ZW4gd2l0aCB0aGUgcHJpbmNlcyBvZiBoaXMgcGVvcGxlLgpIZSBtYWtldGggdGhlIGJhcnJlbiB3b21hbiB0byBrZWVwIGhvdXNlLCBhbmQgdG8gYmUgYSBqb3lmdWwgbW90aGVyIG9mIGNoaWxkcmVuLiBQcmFpc2UgeWUgdGhlIExPUkQuCldoZW4gSXNyYWVsIHdlbnQgb3V0IG9mIEVneXB0LCB0aGUgaG91c2Ugb2YgSmFjb2IgZnJvbSBhIHBlb3BsZSBvZiBzdHJhbmdlIGxhbmd1YWdlOwpKdWRhaCB3YXMgaGlzIHNhbmN0dWFyeSwgYW5kIElzcmFlbCBoaXMgZG9taW5pb24uClRoZSBzZWEgc2F3IGl0LCBhbmQgZmxlZDogSm9yZGFuIHdhcyBkcml2ZW4gYmFjay4KVGhlIG1vdW50YWlucyBza2lwcGVkIGxpa2UgcmFtcywgYW5kIHRoZSBsaXR0bGUgaGlsbHMgbGlrZSBsYW1icy4KV2hhdCBhaWxlZCB0aGVlLCBPIHRob3Ugc2VhLCB0aGF0IHRob3UgZmxlZGRlc3Q/IHRob3UgSm9yZGFuLCB0aGF0IHRob3Ugd2FzdCBkcml2ZW4gYmFjaz8KWWUgbW91bnRhaW5zLCB0aGF0IHllIHNraXBwZWQgbGlrZSByYW1zOyBhbmQgeWUgbGl0dGxlIGhpbGxzLCBsaWtlIGxhbWJzPwpUcmVtYmxlLCB0aG91IGVhcnRoLCBhdCB0aGUgcHJlc2VuY2Ugb2YgdGhlIExvcmQsIGF0IHRoZSBwcmVzZW5jZSBvZiB0aGUgR29kIG9mIEphY29iOwpXaGljaCB0dXJuZWQgdGhlIHJvY2sgaW50byBhIHN0YW5kaW5nIHdhdGVyLCB0aGUgZmxpbnQgaW50byBhIGZvdW50YWluIG9mIHdhdGVycy4KTm90IHVudG8gdXMsIE8gTE9SRCwgbm90IHVudG8gdXMsIGJ1dCB1bnRvIHRoeSBuYW1lIGdpdmUgZ2xvcnksIGZvciB0aHkgbWVyY3ksIGFuZCBmb3IgdGh5IHRydXRoJ3Mgc2FrZS4KV2hlcmVmb3JlIHNob3VsZCB0aGUgaGVhdGhlbiBzYXksIFdoZXJlIGlzIG5vdyB0aGVpciBHb2Q/CkJ1dCBvdXIgR29kIGlzIGluIHRoZSBoZWF2ZW5zOiBoZSBoYXRoIGRvbmUgd2hhdHNvZXZlciBoZSBoYXRoIHBsZWFzZWQuClRoZWlyIGlkb2xzIGFyZSBzaWx2ZXIgYW5kIGdvbGQsIHRoZSB3b3JrIG9mIG1lbidzIGhhbmRzLgpUaGV5IGhhdmUgbW91dGhzLCBidXQgdGhleSBzcGVhayBub3Q6IGV5ZXMgaGF2ZSB0aGV5LCBidXQgdGhleSBzZWUgbm90OgpUaGV5IGhhdmUgZWFycywgYnV0IHRoZXkgaGVhciBub3Q6IG5vc2VzIGhhdmUgdGhleSwgYnV0IHRoZXkgc21lbGwgbm90OgpUaGV5IGhhdmUgaGFuZHMsIGJ1dCB0aGV5IGhhbmRsZSBub3Q6IGZlZXQgaGF2ZSB0aGV5LCBidXQgdGhleSB3YWxrIG5vdDogbmVpdGhlciBzcGVhayB0aGV5IHRocm91Z2ggdGhlaXIgdGhyb2F0LgpUaGV5IHRoYXQgbWFrZSB0aGVtIGFyZSBsaWtlIHVudG8gdGhlbTsgc28gaXMgZXZlcnkgb25lIHRoYXQgdHJ1c3RldGggaW4gdGhlbS4KTyBJc3JhZWwsIHRydXN0IHRob3UgaW4gdGhlIExPUkQ6IGhlIGlzIHRoZWlyIGhlbHAgYW5kIHRoZWlyIHNoaWVsZC4KTyBob3VzZSBvZiBBYXJvbiwgdHJ1c3QgaW4gdGhlIExPUkQ6IGhlIGlzIHRoZWlyIGhlbHAgYW5kIHRoZWlyIHNoaWVsZC4KWWUgdGhhdCBmZWFyIHRoZSBMT1JELCB0cnVzdCBpbiB0aGUgTE9SRDogaGUgaXMgdGhlaXIgaGVscCBhbmQgdGhlaXIgc2hpZWxkLgpUaGUgTE9SRCBoYXRoIGJlZW4gbWluZGZ1bCBvZiB1czogaGUgd2lsbCBibGVzcyB1czsgaGUgd2lsbCBibGVzcyB0aGUgaG91c2Ugb2YgSXNyYWVsOyBoZSB3aWxsIGJsZXNzIHRoZSBob3VzZSBvZiBBYXJvbi4KSGUgd2lsbCBibGVzcyB0aGVtIHRoYXQgZmVhciB0aGUgTE9SRCwgYm90aCBzbWFsbCBhbmQgZ3JlYXQuClRoZSBMT1JEIHNoYWxsIGluY3JlYXNlIHlvdSBtb3JlIGFuZCBtb3JlLCB5b3UgYW5kIHlvdXIgY2hpbGRyZW4uClllIGFyZSBibGVzc2VkIG9mIHRoZSBMT1JEIHdoaWNoIG1hZGUgaGVhdmVuIGFuZCBlYXJ0aC4KVGhlIGhlYXZlbiwgZXZlbiB0aGUgaGVhdmVucywgYXJlIHRoZSBMT1JEJ3M6IGJ1dCB0aGUgZWFydGggaGF0aCBoZSBnaXZlbiB0byB0aGUgY2hpbGRyZW4gb2YgbWVuLgpUaGUgZGVhZCBwcmFpc2Ugbm90IHRoZSBMT1JELCBuZWl0aGVyIGFueSB0aGF0IGdvIGRvd24gaW50byBzaWxlbmNlLgpCdXQgd2Ugd2lsbCBibGVzcyB0aGUgTE9SRCBmcm9tIHRoaXMgdGltZSBmb3J0aCBhbmQgZm9yIGV2ZXJtb3JlLiBQcmFpc2UgdGhlIExPUkQuCkkgbG92ZSB0aGUgTE9SRCwgYmVjYXVzZSBoZSBoYXRoIGhlYXJkIG15IHZvaWNlIGFuZCBteSBzdXBwbGljYXRpb25zLgpCZWNhdXNlIGhlIGhhdGggaW5jbGluZWQgaGlzIGVhciB1bnRvIG1lLCB0aGVyZWZvcmUgd2lsbCBJIGNhbGwgdXBvbiBoaW0gYXMgbG9uZyBhcyBJIGxpdmUuClRoZSBzb3Jyb3dzIG9mIGRlYXRoIGNvbXBhc3NlZCBtZSwgYW5kIHRoZSBwYWlucyBvZiBoZWxsIGdhdCBob2xkIHVwb24gbWU6IEkgZm91bmQgdHJvdWJsZSBhbmQgc29ycm93LgpUaGVuIGNhbGxlZCBJIHVwb24gdGhlIG5hbWUgb2YgdGhlIExPUkQ7IE8gTE9SRCwgSSBiZXNlZWNoIHRoZWUsIGRlbGl2ZXIgbXkgc291bC4KR3JhY2lvdXMgaXMgdGhlIExPUkQsIGFuZCByaWdodGVvdXM7IHllYSwgb3VyIEdvZCBpcyBtZXJjaWZ1bC4KVGhlIExPUkQgcHJlc2VydmV0aCB0aGUgc2ltcGxlOiBJIHdhcyBicm91Z2h0IGxvdywgYW5kIGhlIGhlbHBlZCBtZS4KUmV0dXJuIHVudG8gdGh5IHJlc3QsIE8gbXkgc291bDsgZm9yIHRoZSBMT1JEIGhhdGggZGVhbHQgYm91bnRpZnVsbHkgd2l0aCB0aGVlLgpGb3IgdGhvdSBoYXN0IGRlbGl2ZXJlZCBteSBzb3VsIGZyb20gZGVhdGgsIG1pbmUgZXllcyBmcm9tIHRlYXJzLCBhbmQgbXkgZmVldCBmcm9tIGZhbGxpbmcuCkkgd2lsbCB3YWxrIGJlZm9yZSB0aGUgTE9SRCBpbiB0aGUgbGFuZCBvZiB0aGUgbGl2aW5nLgpJIGJlbGlldmVkLCB0aGVyZWZvcmUgaGF2ZSBJIHNwb2tlbjogSSB3YXMgZ3JlYXRseSBhZmZsaWN0ZWQ6Ckkgc2FpZCBpbiBteSBoYXN0ZSwgQWxsIG1lbiBhcmUgbGlhcnMuCldoYXQgc2hhbGwgSSByZW5kZXIgdW50byB0aGUgTE9SRCBmb3IgYWxsIGhpcyBiZW5lZml0cyB0b3dhcmQgbWU/Ckkgd2lsbCB0YWtlIHRoZSBjdXAgb2Ygc2FsdmF0aW9uLCBhbmQgY2FsbCB1cG9uIHRoZSBuYW1lIG9mIHRoZSBMT1JELgpJIHdpbGwgcGF5IG15IHZvd3MgdW50byB0aGUgTE9SRCBub3cgaW4gdGhlIHByZXNlbmNlIG9mIGFsbCBoaXMgcGVvcGxlLgpQcmVjaW91cyBpbiB0aGUgc2lnaHQgb2YgdGhlIExPUkQgaXMgdGhlIGRlYXRoIG9mIGhpcyBzYWludHMuCk8gTE9SRCwgdHJ1bHkgSSBhbSB0aHkgc2VydmFudDsgSSBhbSB0aHkgc2VydmFudCwgYW5kIHRoZSBzb24gb2YgdGhpbmUgaGFuZG1haWQ6IHRob3UgaGFzdCBsb29zZWQgbXkgYm9uZHMuCkkgd2lsbCBvZmZlciB0byB0aGVlIHRoZSBzYWNyaWZpY2Ugb2YgdGhhbmtzZ2l2aW5nLCBhbmQgd2lsbCBjYWxsIHVwb24gdGhlIG5hbWUgb2YgdGhlIExPUkQuCkkgd2lsbCBwYXkgbXkgdm93cyB1bnRvIHRoZSBMT1JEIG5vdyBpbiB0aGUgcHJlc2VuY2Ugb2YgYWxsIGhpcyBwZW9wbGUuCkluIHRoZSBjb3VydHMgb2YgdGhlIExPUkQncyBob3VzZSwgaW4gdGhlIG1pZHN0IG9mIHRoZWUsIE8gSmVydXNhbGVtLiBQcmFpc2UgeWUgdGhlIExPUkQuCk8gcHJhaXNlIHRoZSBMT1JELCBhbGwgeWUgbmF0aW9uczogcHJhaXNlIGhpbSwgYWxsIHllIHBlb3BsZS4KRm9yIGhpcyBtZXJjaWZ1bCBraW5kbmVzcyBpcyBncmVhdCB0b3dhcmQgdXM6IGFuZCB0aGUgdHJ1dGggb2YgdGhlIExPUkQgZW5kdXJldGggZm9yIGV2ZXIuIFByYWlzZSB5ZSB0aGUgTE9SRC4KTyBnaXZlIHRoYW5rcyB1bnRvIHRoZSBMT1JEOyBmb3IgaGUgaXMgZ29vZDogYmVjYXVzZSBoaXMgbWVyY3kgZW5kdXJldGggZm9yIGV2ZXIuCkxldCBJc3JhZWwgbm93IHNheSwgdGhhdCBoaXMgbWVyY3kgZW5kdXJldGggZm9yIGV2ZXIuCkxldCB0aGUgaG91c2Ugb2YgQWFyb24gbm93IHNheSwgdGhhdCBoaXMgbWVyY3kgZW5kdXJldGggZm9yIGV2ZXIuCkxldCB0aGVtIG5vdyB0aGF0IGZlYXIgdGhlIExPUkQgc2F5LCB0aGF0IGhpcyBtZXJjeSBlbmR1cmV0aCBmb3IgZXZlci4KSSBjYWxsZWQgdXBvbiB0aGUgTE9SRCBpbiBkaXN0cmVzczogdGhlIExPUkQgYW5zd2VyZWQgbWUsIGFuZCBzZXQgbWUgaW4gYSBsYXJnZSBwbGFjZS4KVGhlIExPUkQgaXMgb24gbXkgc2lkZTsgSSB3aWxsIG5vdCBmZWFyOiB3aGF0IGNhbiBtYW4gZG8gdW50byBtZT8KVGhlIExPUkQgdGFrZXRoIG15IHBhcnQgd2l0aCB0aGVtIHRoYXQgaGVscCBtZTogdGhlcmVmb3JlIHNoYWxsIEkgc2VlIG15IGRlc2lyZSB1cG9uIHRoZW0gdGhhdCBoYXRlIG1lLgpJdCBpcyBiZXR0ZXIgdG8gdHJ1c3QgaW4gdGhlIExPUkQgdGhhbiB0byBwdXQgY29uZmlkZW5jZSBpbiBtYW4uCkl0IGlzIGJldHRlciB0byB0cnVzdCBpbiB0aGUgTE9SRCB0aGFuIHRvIHB1dCBjb25maWRlbmNlIGluIHByaW5jZXMuCkFsbCBuYXRpb25zIGNvbXBhc3NlZCBtZSBhYm91dDogYnV0IGluIHRoZSBuYW1lIG9mIHRoZSBMT1JEIHdpbGwgSSBkZXN0cm95IHRoZW0uClRoZXkgY29tcGFzc2VkIG1lIGFib3V0OyB5ZWEsIHRoZXkgY29tcGFzc2VkIG1lIGFib3V0OiBidXQgaW4gdGhlIG5hbWUgb2YgdGhlIExPUkQgSSB3aWxsIGRlc3Ryb3kgdGhlbS4KVGhleSBjb21wYXNzZWQgbWUgYWJvdXQgbGlrZSBiZWVzOiB0aGV5IGFyZSBxdWVuY2hlZCBhcyB0aGUgZmlyZSBvZiB0aG9ybnM6IGZvciBpbiB0aGUgbmFtZSBvZiB0aGUgTE9SRCBJIHdpbGwgZGVzdHJveSB0aGVtLgpUaG91IGhhc3QgdGhydXN0IHNvcmUgYXQgbWUgdGhhdCBJIG1pZ2h0IGZhbGw6IGJ1dCB0aGUgTE9SRCBoZWxwZWQgbWUuClRoZSBMT1JEIGlzIG15IHN0cmVuZ3RoIGFuZCBzb25nLCBhbmQgaXMgYmVjb21lIG15IHNhbHZhdGlvbi4KVGhlIHZvaWNlIG9mIHJlam9pY2luZyBhbmQgc2FsdmF0aW9uIGlzIGluIHRoZSB0YWJlcm5hY2xlcyBvZiB0aGUgcmlnaHRlb3VzOiB0aGUgcmlnaHQgaGFuZCBvZiB0aGUgTE9SRCBkb2V0aCB2YWxpYW50bHkuClRoZSByaWdodCBoYW5kIG9mIHRoZSBMT1JEIGlzIGV4YWx0ZWQ6IHRoZSByaWdodCBoYW5kIG9mIHRoZSBMT1JEIGRvZXRoIHZhbGlhbnRseS4KSSBzaGFsbCBub3QgZGllLCBidXQgbGl2ZSwgYW5kIGRlY2xhcmUgdGhlIHdvcmtzIG9mIHRoZSBMT1JELgpUaGUgTE9SRCBoYXRoIGNoYXN0ZW5lZCBtZSBzb3JlOiBidXQgaGUgaGF0aCBub3QgZ2l2ZW4gbWUgb3ZlciB1bnRvIGRlYXRoLgpPcGVuIHRvIG1lIHRoZSBnYXRlcyBvZiByaWdodGVvdXNuZXNzOiBJIHdpbGwgZ28gaW50byB0aGVtLCBhbmQgSSB3aWxsIHByYWlzZSB0aGUgTE9SRDoKVGhpcyBnYXRlIG9mIHRoZSBMT1JELCBpbnRvIHdoaWNoIHRoZSByaWdodGVvdXMgc2hhbGwgZW50ZXIuCkkgd2lsbCBwcmFpc2UgdGhlZTogZm9yIHRob3UgaGFzdCBoZWFyZCBtZSwgYW5kIGFydCBiZWNvbWUgbXkgc2FsdmF0aW9uLgpUaGUgc3RvbmUgd2hpY2ggdGhlIGJ1aWxkZXJzIHJlZnVzZWQgaXMgYmVjb21lIHRoZSBoZWFkIHN0b25lIG9mIHRoZSBjb3JuZXIuClRoaXMgaXMgdGhlIExPUkQncyBkb2luZzsgaXQgaXMgbWFydmVsbG91cyBpbiBvdXIgZXllcy4KVGhpcyBpcyB0aGUgZGF5IHdoaWNoIHRoZSBMT1JEIGhhdGggbWFkZTsgd2Ugd2lsbCByZWpvaWNlIGFuZCBiZSBnbGFkIGluIGl0LgpTYXZlIG5vdywgSSBiZXNlZWNoIHRoZWUsIE8gTE9SRDogTyBMT1JELCBJIGJlc2VlY2ggdGhlZSwgc2VuZCBub3cgcHJvc3Blcml0eS4KQmxlc3NlZCBiZSBoZSB0aGF0IGNvbWV0aCBpbiB0aGUgbmFtZSBvZiB0aGUgTE9SRDogd2UgaGF2ZSBibGVzc2VkIHlvdSBvdXQgb2YgdGhlIGhvdXNlIG9mIHRoZSBMT1JELgpHb2QgaXMgdGhlIExPUkQsIHdoaWNoIGhhdGggc2hld2VkIHVzIGxpZ2h0OiBiaW5kIHRoZSBzYWNyaWZpY2Ugd2l0aCBjb3JkcywgZXZlbiB1bnRvIHRoZSBob3JucyBvZiB0aGUgYWx0YXIuClRob3UgYXJ0IG15IEdvZCwgYW5kIEkgd2lsbCBwcmFpc2UgdGhlZTogdGhvdSBhcnQgbXkgR29kLCBJIHdpbGwgZXhhbHQgdGhlZS4KTyBnaXZlIHRoYW5rcyB1bnRvIHRoZSBMT1JEOyBmb3IgaGUgaXMgZ29vZDogZm9yIGhpcyBtZXJjeSBlbmR1cmV0aCBmb3IgZXZlci4KQmxlc3NlZCBhcmUgdGhlIHVuZGVmaWxlZCBpbiB0aGUgd2F5LCB3aG8gd2FsayBpbiB0aGUgbGF3IG9mIHRoZSBMT1JELgpCbGVzc2VkIGFyZSB0aGV5IHRoYXQga2VlcCBoaXMgdGVzdGltb25pZXMsIGFuZCB0aGF0IHNlZWsgaGltIHdpdGggdGhlIHdob2xlIGhlYXJ0LgpUaGV5IGFsc28gZG8gbm8gaW5pcXVpdHk6IHRoZXkgd2FsayBpbiBoaXMgd2F5cy4KVGhvdSBoYXN0IGNvbW1hbmRlZCB1cyB0byBrZWVwIHRoeSBwcmVjZXB0cyBkaWxpZ2VudGx5LgpPIHRoYXQgbXkgd2F5cyB3ZXJlIGRpcmVjdGVkIHRvIGtlZXAgdGh5IHN0YXR1dGVzIQpUaGVuIHNoYWxsIEkgbm90IGJlIGFzaGFtZWQsIHdoZW4gSSBoYXZlIHJlc3BlY3QgdW50byBhbGwgdGh5IGNvbW1hbmRtZW50cy4KSSB3aWxsIHByYWlzZSB0aGVlIHdpdGggdXByaWdodG5lc3Mgb2YgaGVhcnQsIHdoZW4gSSBzaGFsbCBoYXZlIGxlYXJuZWQgdGh5IHJpZ2h0ZW91cyBqdWRnbWVudHMuCkkgd2lsbCBrZWVwIHRoeSBzdGF0dXRlczogTyBmb3JzYWtlIG1lIG5vdCB1dHRlcmx5LgpXaGVyZXdpdGhhbCBzaGFsbCBhIHlvdW5nIG1hbiBjbGVhbnNlIGhpcyB3YXk/IGJ5IHRha2luZyBoZWVkIHRoZXJldG8gYWNjb3JkaW5nIHRvIHRoeSB3b3JkLgpXaXRoIG15IHdob2xlIGhlYXJ0IGhhdmUgSSBzb3VnaHQgdGhlZTogTyBsZXQgbWUgbm90IHdhbmRlciBmcm9tIHRoeSBjb21tYW5kbWVudHMuClRoeSB3b3JkIGhhdmUgSSBoaWQgaW4gbWluZSBoZWFydCwgdGhhdCBJIG1pZ2h0IG5vdCBzaW4gYWdhaW5zdCB0aGVlLgpCbGVzc2VkIGFydCB0aG91LCBPIExPUkQ6IHRlYWNoIG1lIHRoeSBzdGF0dXRlcy4KV2l0aCBteSBsaXBzIGhhdmUgSSBkZWNsYXJlZCBhbGwgdGhlIGp1ZGdtZW50cyBvZiB0aHkgbW91dGguCkkgaGF2ZSByZWpvaWNlZCBpbiB0aGUgd2F5IG9mIHRoeSB0ZXN0aW1vbmllcywgYXMgbXVjaCBhcyBpbiBhbGwgcmljaGVzLgpJIHdpbGwgbWVkaXRhdGUgaW4gdGh5IHByZWNlcHRzLCBhbmQgaGF2ZSByZXNwZWN0IHVudG8gdGh5IHdheXMuCkkgd2lsbCBkZWxpZ2h0IG15c2VsZiBpbiB0aHkgc3RhdHV0ZXM6IEkgd2lsbCBub3QgZm9yZ2V0IHRoeSB3b3JkLgpEZWFsIGJvdW50aWZ1bGx5IHdpdGggdGh5IHNlcnZhbnQsIHRoYXQgSSBtYXkgbGl2ZSwgYW5kIGtlZXAgdGh5IHdvcmQuCk9wZW4gdGhvdSBtaW5lIGV5ZXMsIHRoYXQgSSBtYXkgYmVob2xkIHdvbmRyb3VzIHRoaW5ncyBvdXQgb2YgdGh5IGxhdy4KSSBhbSBhIHN0cmFuZ2VyIGluIHRoZSBlYXJ0aDogaGlkZSBub3QgdGh5IGNvbW1hbmRtZW50cyBmcm9tIG1lLgpNeSBzb3VsIGJyZWFrZXRoIGZvciB0aGUgbG9uZ2luZyB0aGF0IGl0IGhhdGggdW50byB0aHkganVkZ21lbnRzIGF0IGFsbCB0aW1lcy4KVGhvdSBoYXN0IHJlYnVrZWQgdGhlIHByb3VkIHRoYXQgYXJlIGN1cnNlZCwgd2hpY2ggZG8gZXJyIGZyb20gdGh5IGNvbW1hbmRtZW50cy4KUmVtb3ZlIGZyb20gbWUgcmVwcm9hY2ggYW5kIGNvbnRlbXB0OyBmb3IgSSBoYXZlIGtlcHQgdGh5IHRlc3RpbW9uaWVzLgpQcmluY2VzIGFsc28gZGlkIHNpdCBhbmQgc3BlYWsgYWdhaW5zdCBtZTogYnV0IHRoeSBzZXJ2YW50IGRpZCBtZWRpdGF0ZSBpbiB0aHkgc3RhdHV0ZXMuClRoeSB0ZXN0aW1vbmllcyBhbHNvIGFyZSBteSBkZWxpZ2h0IGFuZCBteSBjb3Vuc2VsbG9ycy4KTXkgc291bCBjbGVhdmV0aCB1bnRvIHRoZSBkdXN0OiBxdWlja2VuIHRob3UgbWUgYWNjb3JkaW5nIHRvIHRoeSB3b3JkLgpJIGhhdmUgZGVjbGFyZWQgbXkgd2F5cywgYW5kIHRob3UgaGVhcmRlc3QgbWU6IHRlYWNoIG1lIHRoeSBzdGF0dXRlcy4KTWFrZSBtZSB0byB1bmRlcnN0YW5kIHRoZSB3YXkgb2YgdGh5IHByZWNlcHRzOiBzbyBzaGFsbCBJIHRhbGsgb2YgdGh5IHdvbmRyb3VzIHdvcmtzLgpNeSBzb3VsIG1lbHRldGggZm9yIGhlYXZpbmVzczogc3RyZW5ndGhlbiB0aG91IG1lIGFjY29yZGluZyB1bnRvIHRoeSB3b3JkLgpSZW1vdmUgZnJvbSBtZSB0aGUgd2F5IG9mIGx5aW5nOiBhbmQgZ3JhbnQgbWUgdGh5IGxhdyBncmFjaW91c2x5LgpJIGhhdmUgY2hvc2VuIHRoZSB3YXkgb2YgdHJ1dGg6IHRoeSBqdWRnbWVudHMgaGF2ZSBJIGxhaWQgYmVmb3JlIG1lLgpJIGhhdmUgc3R1Y2sgdW50byB0aHkgdGVzdGltb25pZXM6IE8gTE9SRCwgcHV0IG1lIG5vdCB0byBzaGFtZS4KSSB3aWxsIHJ1biB0aGUgd2F5IG9mIHRoeSBjb21tYW5kbWVudHMsIHdoZW4gdGhvdSBzaGFsdCBlbmxhcmdlIG15IGhlYXJ0LgpUZWFjaCBtZSwgTyBMT1JELCB0aGUgd2F5IG9mIHRoeSBzdGF0dXRlczsgYW5kIEkgc2hhbGwga2VlcCBpdCB1bnRvIHRoZSBlbmQuCkdpdmUgbWUgdW5kZXJzdGFuZGluZywgYW5kIEkgc2hhbGwga2VlcCB0aHkgbGF3OyB5ZWEsIEkgc2hhbGwgb2JzZXJ2ZSBpdCB3aXRoIG15IHdob2xlIGhlYXJ0LgpNYWtlIG1lIHRvIGdvIGluIHRoZSBwYXRoIG9mIHRoeSBjb21tYW5kbWVudHM7IGZvciB0aGVyZWluIGRvIEkgZGVsaWdodC4KSW5jbGluZSBteSBoZWFydCB1bnRvIHRoeSB0ZXN0aW1vbmllcywgYW5kIG5vdCB0byBjb3ZldG91c25lc3MuClR1cm4gYXdheSBtaW5lIGV5ZXMgZnJvbSBiZWhvbGRpbmcgdmFuaXR5OyBhbmQgcXVpY2tlbiB0aG91IG1lIGluIHRoeSB3YXkuClN0YWJsaXNoIHRoeSB3b3JkIHVudG8gdGh5IHNlcnZhbnQsIHdobyBpcyBkZXZvdGVkIHRvIHRoeSBmZWFyLgpUdXJuIGF3YXkgbXkgcmVwcm9hY2ggd2hpY2ggSSBmZWFyOiBmb3IgdGh5IGp1ZGdtZW50cyBhcmUgZ29vZC4KQmVob2xkLCBJIGhhdmUgbG9uZ2VkIGFmdGVyIHRoeSBwcmVjZXB0czogcXVpY2tlbiBtZSBpbiB0aHkgcmlnaHRlb3VzbmVzcy4KTGV0IHRoeSBtZXJjaWVzIGNvbWUgYWxzbyB1bnRvIG1lLCBPIExPUkQsIGV2ZW4gdGh5IHNhbHZhdGlvbiwgYWNjb3JkaW5nIHRvIHRoeSB3b3JkLgpTbyBzaGFsbCBJIGhhdmUgd2hlcmV3aXRoIHRvIGFuc3dlciBoaW0gdGhhdCByZXByb2FjaGV0aCBtZTogZm9yIEkgdHJ1c3QgaW4gdGh5IHdvcmQuCkFuZCB0YWtlIG5vdCB0aGUgd29yZCBvZiB0cnV0aCB1dHRlcmx5IG91dCBvZiBteSBtb3V0aDsgZm9yIEkgaGF2ZSBob3BlZCBpbiB0aHkganVkZ21lbnRzLgpTbyBzaGFsbCBJIGtlZXAgdGh5IGxhdyBjb250aW51YWxseSBmb3IgZXZlciBhbmQgZXZlci4KQW5kIEkgd2lsbCB3YWxrIGF0IGxpYmVydHk6IGZvciBJIHNlZWsgdGh5IHByZWNlcHRzLgpJIHdpbGwgc3BlYWsgb2YgdGh5IHRlc3RpbW9uaWVzIGFsc28gYmVmb3JlIGtpbmdzLCBhbmQgd2lsbCBub3QgYmUgYXNoYW1lZC4KQW5kIEkgd2lsbCBkZWxpZ2h0IG15c2VsZiBpbiB0aHkgY29tbWFuZG1lbnRzLCB3aGljaCBJIGhhdmUgbG92ZWQuCk15IGhhbmRzIGFsc28gd2lsbCBJIGxpZnQgdXAgdW50byB0aHkgY29tbWFuZG1lbnRzLCB3aGljaCBJIGhhdmUgbG92ZWQ7IGFuZCBJIHdpbGwgbWVkaXRhdGUgaW4gdGh5IHN0YXR1dGVzLgpSZW1lbWJlciB0aGUgd29yZCB1bnRvIHRoeSBzZXJ2YW50LCB1cG9uIHdoaWNoIHRob3UgaGFzdCBjYXVzZWQgbWUgdG8gaG9wZS4KVGhpcyBpcyBteSBjb21mb3J0IGluIG15IGFmZmxpY3Rpb246IGZvciB0aHkgd29yZCBoYXRoIHF1aWNrZW5lZCBtZS4KVGhlIHByb3VkIGhhdmUgaGFkIG1lIGdyZWF0bHkgaW4gZGVyaXNpb246IHlldCBoYXZlIEkgbm90IGRlY2xpbmVkIGZyb20gdGh5IGxhdy4KSSByZW1lbWJlcmVkIHRoeSBqdWRnbWVudHMgb2Ygb2xkLCBPIExPUkQ7IGFuZCBoYXZlIGNvbWZvcnRlZCBteXNlbGYuCkhvcnJvciBoYXRoIHRha2VuIGhvbGQgdXBvbiBtZSBiZWNhdXNlIG9mIHRoZSB3aWNrZWQgdGhhdCBmb3JzYWtlIHRoeSBsYXcuClRoeSBzdGF0dXRlcyBoYXZlIGJlZW4gbXkgc29uZ3MgaW4gdGhlIGhvdXNlIG9mIG15IHBpbGdyaW1hZ2UuCkkgaGF2ZSByZW1lbWJlcmVkIHRoeSBuYW1lLCBPIExPUkQsIGluIHRoZSBuaWdodCwgYW5kIGhhdmUga2VwdCB0aHkgbGF3LgpUaGlzIEkgaGFkLCBiZWNhdXNlIEkga2VwdCB0aHkgcHJlY2VwdHMuClRob3UgYXJ0IG15IHBvcnRpb24sIE8gTE9SRDogSSBoYXZlIHNhaWQgdGhhdCBJIHdvdWxkIGtlZXAgdGh5IHdvcmRzLgpJIGludHJlYXRlZCB0aHkgZmF2b3VyIHdpdGggbXkgd2hvbGUgaGVhcnQ6IGJlIG1lcmNpZnVsIHVudG8gbWUgYWNjb3JkaW5nIHRvIHRoeSB3b3JkLgpJIHRob3VnaHQgb24gbXkgd2F5cywgYW5kIHR1cm5lZCBteSBmZWV0IHVudG8gdGh5IHRlc3RpbW9uaWVzLgpJIG1hZGUgaGFzdGUsIGFuZCBkZWxheWVkIG5vdCB0byBrZWVwIHRoeSBjb21tYW5kbWVudHMuClRoZSBiYW5kcyBvZiB0aGUgd2lja2VkIGhhdmUgcm9iYmVkIG1lOiBidXQgSSBoYXZlIG5vdCBmb3Jnb3R0ZW4gdGh5IGxhdy4KQXQgbWlkbmlnaHQgSSB3aWxsIHJpc2UgdG8gZ2l2ZSB0aGFua3MgdW50byB0aGVlIGJlY2F1c2Ugb2YgdGh5IHJpZ2h0ZW91cyBqdWRnbWVudHMuCkkgYW0gYSBjb21wYW5pb24gb2YgYWxsIHRoZW0gdGhhdCBmZWFyIHRoZWUsIGFuZCBvZiB0aGVtIHRoYXQga2VlcCB0aHkgcHJlY2VwdHMuClRoZSBlYXJ0aCwgTyBMT1JELCBpcyBmdWxsIG9mIHRoeSBtZXJjeTogdGVhY2ggbWUgdGh5IHN0YXR1dGVzLgpUaG91IGhhc3QgZGVhbHQgd2VsbCB3aXRoIHRoeSBzZXJ2YW50LCBPIExPUkQsIGFjY29yZGluZyB1bnRvIHRoeSB3b3JkLgpUZWFjaCBtZSBnb29kIGp1ZGdtZW50IGFuZCBrbm93bGVkZ2U6IGZvciBJIGhhdmUgYmVsaWV2ZWQgdGh5IGNvbW1hbmRtZW50cy4KQmVmb3JlIEkgd2FzIGFmZmxpY3RlZCBJIHdlbnQgYXN0cmF5OiBidXQgbm93IGhhdmUgSSBrZXB0IHRoeSB3b3JkLgpUaG91IGFydCBnb29kLCBhbmQgZG9lc3QgZ29vZDsgdGVhY2ggbWUgdGh5IHN0YXR1dGVzLgpUaGUgcHJvdWQgaGF2ZSBmb3JnZWQgYSBsaWUgYWdhaW5zdCBtZTogYnV0IEkgd2lsbCBrZWVwIHRoeSBwcmVjZXB0cyB3aXRoIG15IHdob2xlIGhlYXJ0LgpUaGVpciBoZWFydCBpcyBhcyBmYXQgYXMgZ3JlYXNlOyBidXQgSSBkZWxpZ2h0IGluIHRoeSBsYXcuCkl0IGlzIGdvb2QgZm9yIG1lIHRoYXQgSSBoYXZlIGJlZW4gYWZmbGljdGVkOyB0aGF0IEkgbWlnaHQgbGVhcm4gdGh5IHN0YXR1dGVzLgpUaGUgbGF3IG9mIHRoeSBtb3V0aCBpcyBiZXR0ZXIgdW50byBtZSB0aGFuIHRob3VzYW5kcyBvZiBnb2xkIGFuZCBzaWx2ZXIuClRoeSBoYW5kcyBoYXZlIG1hZGUgbWUgYW5kIGZhc2hpb25lZCBtZTogZ2l2ZSBtZSB1bmRlcnN0YW5kaW5nLCB0aGF0IEkgbWF5IGxlYXJuIHRoeSBjb21tYW5kbWVudHMuClRoZXkgdGhhdCBmZWFyIHRoZWUgd2lsbCBiZSBnbGFkIHdoZW4gdGhleSBzZWUgbWU7IGJlY2F1c2UgSSBoYXZlIGhvcGVkIGluIHRoeSB3b3JkLgpJIGtub3csIE8gTE9SRCwgdGhhdCB0aHkganVkZ21lbnRzIGFyZSByaWdodCwgYW5kIHRoYXQgdGhvdSBpbiBmYWl0aGZ1bG5lc3MgaGFzdCBhZmZsaWN0ZWQgbWUuCkxldCwgSSBwcmF5IHRoZWUsIHRoeSBtZXJjaWZ1bCBraW5kbmVzcyBiZSBmb3IgbXkgY29tZm9ydCwgYWNjb3JkaW5nIHRvIHRoeSB3b3JkIHVudG8gdGh5IHNlcnZhbnQuCkxldCB0aHkgdGVuZGVyIG1lcmNpZXMgY29tZSB1bnRvIG1lLCB0aGF0IEkgbWF5IGxpdmU6IGZvciB0aHkgbGF3IGlzIG15IGRlbGlnaHQuCkxldCB0aGUgcHJvdWQgYmUgYXNoYW1lZDsgZm9yIHRoZXkgZGVhbHQgcGVydmVyc2VseSB3aXRoIG1lIHdpdGhvdXQgYSBjYXVzZTogYnV0IEkgd2lsbCBtZWRpdGF0ZSBpbiB0aHkgcHJlY2VwdHMuCkxldCB0aG9zZSB0aGF0IGZlYXIgdGhlZSB0dXJuIHVudG8gbWUsIGFuZCB0aG9zZSB0aGF0IGhhdmUga25vd24gdGh5IHRlc3RpbW9uaWVzLgpMZXQgbXkgaGVhcnQgYmUgc291bmQgaW4gdGh5IHN0YXR1dGVzOyB0aGF0IEkgYmUgbm90IGFzaGFtZWQuCk15IHNvdWwgZmFpbnRldGggZm9yIHRoeSBzYWx2YXRpb246IGJ1dCBJIGhvcGUgaW4gdGh5IHdvcmQuCk1pbmUgZXllcyBmYWlsIGZvciB0aHkgd29yZCwgc2F5aW5nLCBXaGVuIHdpbHQgdGhvdSBjb21mb3J0IG1lPwpGb3IgSSBhbSBiZWNvbWUgbGlrZSBhIGJvdHRsZSBpbiB0aGUgc21va2U7IHlldCBkbyBJIG5vdCBmb3JnZXQgdGh5IHN0YXR1dGVzLgpIb3cgbWFueSBhcmUgdGhlIGRheXMgb2YgdGh5IHNlcnZhbnQ/IHdoZW4gd2lsdCB0aG91IGV4ZWN1dGUganVkZ21lbnQgb24gdGhlbSB0aGF0IHBlcnNlY3V0ZSBtZT8KVGhlIHByb3VkIGhhdmUgZGlnZ2VkIHBpdHMgZm9yIG1lLCB3aGljaCBhcmUgbm90IGFmdGVyIHRoeSBsYXcuCkFsbCB0aHkgY29tbWFuZG1lbnRzIGFyZSBmYWl0aGZ1bDogdGhleSBwZXJzZWN1dGUgbWUgd3JvbmdmdWxseTsgaGVscCB0aG91IG1lLgpUaGV5IGhhZCBhbG1vc3QgY29uc3VtZWQgbWUgdXBvbiBlYXJ0aDsgYnV0IEkgZm9yc29vayBub3QgdGh5IHByZWNlcHRzLgpRdWlja2VuIG1lIGFmdGVyIHRoeSBsb3ZpbmdraW5kbmVzczsgc28gc2hhbGwgSSBrZWVwIHRoZSB0ZXN0aW1vbnkgb2YgdGh5IG1vdXRoLgpGb3IgZXZlciwgTyBMT1JELCB0aHkgd29yZCBpcyBzZXR0bGVkIGluIGhlYXZlbi4KVGh5IGZhaXRoZnVsbmVzcyBpcyB1bnRvIGFsbCBnZW5lcmF0aW9uczogdGhvdSBoYXN0IGVzdGFibGlzaGVkIHRoZSBlYXJ0aCwgYW5kIGl0IGFiaWRldGguClRoZXkgY29udGludWUgdGhpcyBkYXkgYWNjb3JkaW5nIHRvIHRoaW5lIG9yZGluYW5jZXM6IGZvciBhbGwgYXJlIHRoeSBzZXJ2YW50cy4KVW5sZXNzIHRoeSBsYXcgaGFkIGJlZW4gbXkgZGVsaWdodHMsIEkgc2hvdWxkIHRoZW4gaGF2ZSBwZXJpc2hlZCBpbiBtaW5lIGFmZmxpY3Rpb24uCkkgd2lsbCBuZXZlciBmb3JnZXQgdGh5IHByZWNlcHRzOiBmb3Igd2l0aCB0aGVtIHRob3UgaGFzdCBxdWlja2VuZWQgbWUuCkkgYW0gdGhpbmUsIHNhdmUgbWU6IGZvciBJIGhhdmUgc291Z2h0IHRoeSBwcmVjZXB0cy4KVGhlIHdpY2tlZCBoYXZlIHdhaXRlZCBmb3IgbWUgdG8gZGVzdHJveSBtZTogYnV0IEkgd2lsbCBjb25zaWRlciB0aHkgdGVzdGltb25pZXMuCkkgaGF2ZSBzZWVuIGFuIGVuZCBvZiBhbGwgcGVyZmVjdGlvbjogYnV0IHRoeSBjb21tYW5kbWVudCBpcyBleGNlZWRpbmcgYnJvYWQuCk8gaG93IEkgbG92ZSB0aHkgbGF3ISBpdCBpcyBteSBtZWRpdGF0aW9uIGFsbCB0aGUgZGF5LgpUaG91IHRocm91Z2ggdGh5IGNvbW1hbmRtZW50cyBoYXN0IG1hZGUgbWUgd2lzZXIgdGhhbiBtaW5lIGVuZW1pZXM6IGZvciB0aGV5IGFyZSBldmVyIHdpdGggbWUuCkkgaGF2ZSBtb3JlIHVuZGVyc3RhbmRpbmcgdGhhbiBhbGwgbXkgdGVhY2hlcnM6IGZvciB0aHkgdGVzdGltb25pZXMgYXJlIG15IG1lZGl0YXRpb24uCkkgdW5kZXJzdGFuZCBtb3JlIHRoYW4gdGhlIGFuY2llbnRzLCBiZWNhdXNlIEkga2VlcCB0aHkgcHJlY2VwdHMuCkkgaGF2ZSByZWZyYWluZWQgbXkgZmVldCBmcm9tIGV2ZXJ5IGV2aWwgd2F5LCB0aGF0IEkgbWlnaHQga2VlcCB0aHkgd29yZC4KSSBoYXZlIG5vdCBkZXBhcnRlZCBmcm9tIHRoeSBqdWRnbWVudHM6IGZvciB0aG91IGhhc3QgdGF1Z2h0IG1lLgpIb3cgc3dlZXQgYXJlIHRoeSB3b3JkcyB1bnRvIG15IHRhc3RlISB5ZWEsIHN3ZWV0ZXIgdGhhbiBob25leSB0byBteSBtb3V0aCEKVGhyb3VnaCB0aHkgcHJlY2VwdHMgSSBnZXQgdW5kZXJzdGFuZGluZzogdGhlcmVmb3JlIEkgaGF0ZSBldmVyeSBmYWxzZSB3YXkuClRoeSB3b3JkIGlzIGEgbGFtcCB1bnRvIG15IGZlZXQsIGFuZCBhIGxpZ2h0IHVudG8gbXkgcGF0aC4KSSBoYXZlIHN3b3JuLCBhbmQgSSB3aWxsIHBlcmZvcm0gaXQsIHRoYXQgSSB3aWxsIGtlZXAgdGh5IHJpZ2h0ZW91cyBqdWRnbWVudHMuCkkgYW0gYWZmbGljdGVkIHZlcnkgbXVjaDogcXVpY2tlbiBtZSwgTyBMT1JELCBhY2NvcmRpbmcgdW50byB0aHkgd29yZC4KQWNjZXB0LCBJIGJlc2VlY2ggdGhlZSwgdGhlIGZyZWV3aWxsIG9mZmVyaW5ncyBvZiBteSBtb3V0aCwgTyBMT1JELCBhbmQgdGVhY2ggbWUgdGh5IGp1ZGdtZW50cy4KTXkgc291bCBpcyBjb250aW51YWxseSBpbiBteSBoYW5kOiB5ZXQgZG8gSSBub3QgZm9yZ2V0IHRoeSBsYXcuClRoZSB3aWNrZWQgaGF2ZSBsYWlkIGEgc25hcmUgZm9yIG1lOiB5ZXQgSSBlcnJlZCBub3QgZnJvbSB0aHkgcHJlY2VwdHMuClRoeSB0ZXN0aW1vbmllcyBoYXZlIEkgdGFrZW4gYXMgYW4gaGVyaXRhZ2UgZm9yIGV2ZXI6IGZvciB0aGV5IGFyZSB0aGUgcmVqb2ljaW5nIG9mIG15IGhlYXJ0LgpJIGhhdmUgaW5jbGluZWQgbWluZSBoZWFydCB0byBwZXJmb3JtIHRoeSBzdGF0dXRlcyBhbHdheSwgZXZlbiB1bnRvIHRoZSBlbmQuCkkgaGF0ZSB2YWluIHRob3VnaHRzOiBidXQgdGh5IGxhdyBkbyBJIGxvdmUuClRob3UgYXJ0IG15IGhpZGluZyBwbGFjZSBhbmQgbXkgc2hpZWxkOiBJIGhvcGUgaW4gdGh5IHdvcmQuCkRlcGFydCBmcm9tIG1lLCB5ZSBldmlsZG9lcnM6IGZvciBJIHdpbGwga2VlcCB0aGUgY29tbWFuZG1lbnRzIG9mIG15IEdvZC4KVXBob2xkIG1lIGFjY29yZGluZyB1bnRvIHRoeSB3b3JkLCB0aGF0IEkgbWF5IGxpdmU6IGFuZCBsZXQgbWUgbm90IGJlIGFzaGFtZWQgb2YgbXkgaG9wZS4KSG9sZCB0aG91IG1lIHVwLCBhbmQgSSBzaGFsbCBiZSBzYWZlOiBhbmQgSSB3aWxsIGhhdmUgcmVzcGVjdCB1bnRvIHRoeSBzdGF0dXRlcyBjb250aW51YWxseS4KVGhvdSBoYXN0IHRyb2RkZW4gZG93biBhbGwgdGhlbSB0aGF0IGVyciBmcm9tIHRoeSBzdGF0dXRlczogZm9yIHRoZWlyIGRlY2VpdCBpcyBmYWxzZWhvb2QuClRob3UgcHV0dGVzdCBhd2F5IGFsbCB0aGUgd2lja2VkIG9mIHRoZSBlYXJ0aCBsaWtlIGRyb3NzOiB0aGVyZWZvcmUgSSBsb3ZlIHRoeSB0ZXN0aW1vbmllcy4KTXkgZmxlc2ggdHJlbWJsZXRoIGZvciBmZWFyIG9mIHRoZWU7IGFuZCBJIGFtIGFmcmFpZCBvZiB0aHkganVkZ21lbnRzLgpJIGhhdmUgZG9uZSBqdWRnbWVudCBhbmQganVzdGljZTogbGVhdmUgbWUgbm90IHRvIG1pbmUgb3BwcmVzc29ycy4KQmUgc3VyZXR5IGZvciB0aHkgc2VydmFudCBmb3IgZ29vZDogbGV0IG5vdCB0aGUgcHJvdWQgb3BwcmVzcyBtZS4KTWluZSBleWVzIGZhaWwgZm9yIHRoeSBzYWx2YXRpb24sIGFuZCBmb3IgdGhlIHdvcmQgb2YgdGh5IHJpZ2h0ZW91c25lc3MuCkRlYWwgd2l0aCB0aHkgc2VydmFudCBhY2NvcmRpbmcgdW50byB0aHkgbWVyY3ksIGFuZCB0ZWFjaCBtZSB0aHkgc3RhdHV0ZXMuCkkgYW0gdGh5IHNlcnZhbnQ7IGdpdmUgbWUgdW5kZXJzdGFuZGluZywgdGhhdCBJIG1heSBrbm93IHRoeSB0ZXN0aW1vbmllcy4KSXQgaXMgdGltZSBmb3IgdGhlZSwgTE9SRCwgdG8gd29yazogZm9yIHRoZXkgaGF2ZSBtYWRlIHZvaWQgdGh5IGxhdy4KVGhlcmVmb3JlIEkgbG92ZSB0aHkgY29tbWFuZG1lbnRzIGFib3ZlIGdvbGQ7IHllYSwgYWJvdmUgZmluZSBnb2xkLgpUaGVyZWZvcmUgSSBlc3RlZW0gYWxsIHRoeSBwcmVjZXB0cyBjb25jZXJuaW5nIGFsbCB0aGluZ3MgdG8gYmUgcmlnaHQ7IGFuZCBJIGhhdGUgZXZlcnkgZmFsc2Ugd2F5LgpUaHkgdGVzdGltb25pZXMgYXJlIHdvbmRlcmZ1bDogdGhlcmVmb3JlIGRvdGggbXkgc291bCBrZWVwIHRoZW0uClRoZSBlbnRyYW5jZSBvZiB0aHkgd29yZHMgZ2l2ZXRoIGxpZ2h0OyBpdCBnaXZldGggdW5kZXJzdGFuZGluZyB1bnRvIHRoZSBzaW1wbGUuCkkgb3BlbmVkIG15IG1vdXRoLCBhbmQgcGFudGVkOiBmb3IgSSBsb25nZWQgZm9yIHRoeSBjb21tYW5kbWVudHMuCkxvb2sgdGhvdSB1cG9uIG1lLCBhbmQgYmUgbWVyY2lmdWwgdW50byBtZSwgYXMgdGhvdSB1c2VzdCB0byBkbyB1bnRvIHRob3NlIHRoYXQgbG92ZSB0aHkgbmFtZS4KT3JkZXIgbXkgc3RlcHMgaW4gdGh5IHdvcmQ6IGFuZCBsZXQgbm90IGFueSBpbmlxdWl0eSBoYXZlIGRvbWluaW9uIG92ZXIgbWUuCkRlbGl2ZXIgbWUgZnJvbSB0aGUgb3BwcmVzc2lvbiBvZiBtYW46IHNvIHdpbGwgSSBrZWVwIHRoeSBwcmVjZXB0cy4KTWFrZSB0aHkgZmFjZSB0byBzaGluZSB1cG9uIHRoeSBzZXJ2YW50OyBhbmQgdGVhY2ggbWUgdGh5IHN0YXR1dGVzLgpSaXZlcnMgb2Ygd2F0ZXJzIHJ1biBkb3duIG1pbmUgZXllcywgYmVjYXVzZSB0aGV5IGtlZXAgbm90IHRoeSBsYXcuClJpZ2h0ZW91cyBhcnQgdGhvdSwgTyBMT1JELCBhbmQgdXByaWdodCBhcmUgdGh5IGp1ZGdtZW50cy4KVGh5IHRlc3RpbW9uaWVzIHRoYXQgdGhvdSBoYXN0IGNvbW1hbmRlZCBhcmUgcmlnaHRlb3VzIGFuZCB2ZXJ5IGZhaXRoZnVsLgpNeSB6ZWFsIGhhdGggY29uc3VtZWQgbWUsIGJlY2F1c2UgbWluZSBlbmVtaWVzIGhhdmUgZm9yZ290dGVuIHRoeSB3b3Jkcy4KVGh5IHdvcmQgaXMgdmVyeSBwdXJlOiB0aGVyZWZvcmUgdGh5IHNlcnZhbnQgbG92ZXRoIGl0LgpJIGFtIHNtYWxsIGFuZCBkZXNwaXNlZDogeWV0IGRvIG5vdCBJIGZvcmdldCB0aHkgcHJlY2VwdHMuClRoeSByaWdodGVvdXNuZXNzIGlzIGFuIGV2ZXJsYXN0aW5nIHJpZ2h0ZW91c25lc3MsIGFuZCB0aHkgbGF3IGlzIHRoZSB0cnV0aC4KVHJvdWJsZSBhbmQgYW5ndWlzaCBoYXZlIHRha2VuIGhvbGQgb24gbWU6IHlldCB0aHkgY29tbWFuZG1lbnRzIGFyZSBteSBkZWxpZ2h0cy4KVGhlIHJpZ2h0ZW91c25lc3Mgb2YgdGh5IHRlc3RpbW9uaWVzIGlzIGV2ZXJsYXN0aW5nOiBnaXZlIG1lIHVuZGVyc3RhbmRpbmcsIGFuZCBJIHNoYWxsIGxpdmUuCkkgY3JpZWQgd2l0aCBteSB3aG9sZSBoZWFydDsgaGVhciBtZSwgTyBMT1JEOiBJIHdpbGwga2VlcCB0aHkgc3RhdHV0ZXMuCkkgY3JpZWQgdW50byB0aGVlOyBzYXZlIG1lLCBhbmQgSSBzaGFsbCBrZWVwIHRoeSB0ZXN0aW1vbmllcy4KSSBwcmV2ZW50ZWQgdGhlIGRhd25pbmcgb2YgdGhlIG1vcm5pbmcsIGFuZCBjcmllZDogSSBob3BlZCBpbiB0aHkgd29yZC4KTWluZSBleWVzIHByZXZlbnQgdGhlIG5pZ2h0IHdhdGNoZXMsIHRoYXQgSSBtaWdodCBtZWRpdGF0ZSBpbiB0aHkgd29yZC4KSGVhciBteSB2b2ljZSBhY2NvcmRpbmcgdW50byB0aHkgbG92aW5na2luZG5lc3M6IE8gTE9SRCwgcXVpY2tlbiBtZSBhY2NvcmRpbmcgdG8gdGh5IGp1ZGdtZW50LgpUaGV5IGRyYXcgbmlnaCB0aGF0IGZvbGxvdyBhZnRlciBtaXNjaGllZjogdGhleSBhcmUgZmFyIGZyb20gdGh5IGxhdy4KVGhvdSBhcnQgbmVhciwgTyBMT1JEOyBhbmQgYWxsIHRoeSBjb21tYW5kbWVudHMgYXJlIHRydXRoLgpDb25jZXJuaW5nIHRoeSB0ZXN0aW1vbmllcywgSSBoYXZlIGtub3duIG9mIG9sZCB0aGF0IHRob3UgaGFzdCBmb3VuZGVkIHRoZW0gZm9yIGV2ZXIuCkNvbnNpZGVyIG1pbmUgYWZmbGljdGlvbiwgYW5kIGRlbGl2ZXIgbWU6IGZvciBJIGRvIG5vdCBmb3JnZXQgdGh5IGxhdy4KUGxlYWQgbXkgY2F1c2UsIGFuZCBkZWxpdmVyIG1lOiBxdWlja2VuIG1lIGFjY29yZGluZyB0byB0aHkgd29yZC4KU2FsdmF0aW9uIGlzIGZhciBmcm9tIHRoZSB3aWNrZWQ6IGZvciB0aGV5IHNlZWsgbm90IHRoeSBzdGF0dXRlcy4KR3JlYXQgYXJlIHRoeSB0ZW5kZXIgbWVyY2llcywgTyBMT1JEOiBxdWlja2VuIG1lIGFjY29yZGluZyB0byB0aHkganVkZ21lbnRzLgpNYW55IGFyZSBteSBwZXJzZWN1dG9ycyBhbmQgbWluZSBlbmVtaWVzOyB5ZXQgZG8gSSBub3QgZGVjbGluZSBmcm9tIHRoeSB0ZXN0aW1vbmllcy4KSSBiZWhlbGQgdGhlIHRyYW5zZ3Jlc3NvcnMsIGFuZCB3YXMgZ3JpZXZlZDsgYmVjYXVzZSB0aGV5IGtlcHQgbm90IHRoeSB3b3JkLgpDb25zaWRlciBob3cgSSBsb3ZlIHRoeSBwcmVjZXB0czogcXVpY2tlbiBtZSwgTyBMT1JELCBhY2NvcmRpbmcgdG8gdGh5IGxvdmluZ2tpbmRuZXNzLgpUaHkgd29yZCBpcyB0cnVlIGZyb20gdGhlIGJlZ2lubmluZzogYW5kIGV2ZXJ5IG9uZSBvZiB0aHkgcmlnaHRlb3VzIGp1ZGdtZW50cyBlbmR1cmV0aCBmb3IgZXZlci4KUHJpbmNlcyBoYXZlIHBlcnNlY3V0ZWQgbWUgd2l0aG91dCBhIGNhdXNlOiBidXQgbXkgaGVhcnQgc3RhbmRldGggaW4gYXdlIG9mIHRoeSB3b3JkLgpJIHJlam9pY2UgYXQgdGh5IHdvcmQsIGFzIG9uZSB0aGF0IGZpbmRldGggZ3JlYXQgc3BvaWwuCkkgaGF0ZSBhbmQgYWJob3IgbHlpbmc6IGJ1dCB0aHkgbGF3IGRvIEkgbG92ZS4KU2V2ZW4gdGltZXMgYSBkYXkgZG8gSSBwcmFpc2UgdGhlZSBiZWNhdXNlIG9mIHRoeSByaWdodGVvdXMganVkZ21lbnRzLgpHcmVhdCBwZWFjZSBoYXZlIHRoZXkgd2hpY2ggbG92ZSB0aHkgbGF3OiBhbmQgbm90aGluZyBzaGFsbCBvZmZlbmQgdGhlbS4KTE9SRCwgSSBoYXZlIGhvcGVkIGZvciB0aHkgc2FsdmF0aW9uLCBhbmQgZG9uZSB0aHkgY29tbWFuZG1lbnRzLgpNeSBzb3VsIGhhdGgga2VwdCB0aHkgdGVzdGltb25pZXM7IGFuZCBJIGxvdmUgdGhlbSBleGNlZWRpbmdseS4KSSBoYXZlIGtlcHQgdGh5IHByZWNlcHRzIGFuZCB0aHkgdGVzdGltb25pZXM6IGZvciBhbGwgbXkgd2F5cyBhcmUgYmVmb3JlIHRoZWUuCkxldCBteSBjcnkgY29tZSBuZWFyIGJlZm9yZSB0aGVlLCBPIExPUkQ6IGdpdmUgbWUgdW5kZXJzdGFuZGluZyBhY2NvcmRpbmcgdG8gdGh5IHdvcmQuCkxldCBteSBzdXBwbGljYXRpb24gY29tZSBiZWZvcmUgdGhlZTogZGVsaXZlciBtZSBhY2NvcmRpbmcgdG8gdGh5IHdvcmQuCk15IGxpcHMgc2hhbGwgdXR0ZXIgcHJhaXNlLCB3aGVuIHRob3UgaGFzdCB0YXVnaHQgbWUgdGh5IHN0YXR1dGVzLgpNeSB0b25ndWUgc2hhbGwgc3BlYWsgb2YgdGh5IHdvcmQ6IGZvciBhbGwgdGh5IGNvbW1hbmRtZW50cyBhcmUgcmlnaHRlb3VzbmVzcy4KTGV0IHRoaW5lIGhhbmQgaGVscCBtZTsgZm9yIEkgaGF2ZSBjaG9zZW4gdGh5IHByZWNlcHRzLgpJIGhhdmUgbG9uZ2VkIGZvciB0aHkgc2FsdmF0aW9uLCBPIExPUkQ7IGFuZCB0aHkgbGF3IGlzIG15IGRlbGlnaHQuCkxldCBteSBzb3VsIGxpdmUsIGFuZCBpdCBzaGFsbCBwcmFpc2UgdGhlZTsgYW5kIGxldCB0aHkganVkZ21lbnRzIGhlbHAgbWUuCkkgaGF2ZSBnb25lIGFzdHJheSBsaWtlIGEgbG9zdCBzaGVlcDsgc2VlayB0aHkgc2VydmFudDsgZm9yIEkgZG8gbm90IGZvcmdldCB0aHkgY29tbWFuZG1lbnRzLgpJbiBteSBkaXN0cmVzcyBJIGNyaWVkIHVudG8gdGhlIExPUkQsIGFuZCBoZSBoZWFyZCBtZS4KRGVsaXZlciBteSBzb3VsLCBPIExPUkQsIGZyb20gbHlpbmcgbGlwcywgYW5kIGZyb20gYSBkZWNlaXRmdWwgdG9uZ3VlLgpXaGF0IHNoYWxsIGJlIGdpdmVuIHVudG8gdGhlZT8gb3Igd2hhdCBzaGFsbCBiZSBkb25lIHVudG8gdGhlZSwgdGhvdSBmYWxzZSB0b25ndWU/ClNoYXJwIGFycm93cyBvZiB0aGUgbWlnaHR5LCB3aXRoIGNvYWxzIG9mIGp1bmlwZXIuCldvZSBpcyBtZSwgdGhhdCBJIHNvam91cm4gaW4gTWVzZWNoLCB0aGF0IEkgZHdlbGwgaW4gdGhlIHRlbnRzIG9mIEtlZGFyIQpNeSBzb3VsIGhhdGggbG9uZyBkd2VsdCB3aXRoIGhpbSB0aGF0IGhhdGV0aCBwZWFjZS4KSSBhbSBmb3IgcGVhY2U6IGJ1dCB3aGVuIEkgc3BlYWssIHRoZXkgYXJlIGZvciB3YXIuCkkgd2lsbCBsaWZ0IHVwIG1pbmUgZXllcyB1bnRvIHRoZSBoaWxscywgZnJvbSB3aGVuY2UgY29tZXRoIG15IGhlbHAuCk15IGhlbHAgY29tZXRoIGZyb20gdGhlIExPUkQsIHdoaWNoIG1hZGUgaGVhdmVuIGFuZCBlYXJ0aC4KSGUgd2lsbCBub3Qgc3VmZmVyIHRoeSBmb290IHRvIGJlIG1vdmVkOiBoZSB0aGF0IGtlZXBldGggdGhlZSB3aWxsIG5vdCBzbHVtYmVyLgpCZWhvbGQsIGhlIHRoYXQga2VlcGV0aCBJc3JhZWwgc2hhbGwgbmVpdGhlciBzbHVtYmVyIG5vciBzbGVlcC4KVGhlIExPUkQgaXMgdGh5IGtlZXBlcjogdGhlIExPUkQgaXMgdGh5IHNoYWRlIHVwb24gdGh5IHJpZ2h0IGhhbmQuClRoZSBzdW4gc2hhbGwgbm90IHNtaXRlIHRoZWUgYnkgZGF5LCBub3IgdGhlIG1vb24gYnkgbmlnaHQuClRoZSBMT1JEIHNoYWxsIHByZXNlcnZlIHRoZWUgZnJvbSBhbGwgZXZpbDogaGUgc2hhbGwgcHJlc2VydmUgdGh5IHNvdWwuClRoZSBMT1JEIHNoYWxsIHByZXNlcnZlIHRoeSBnb2luZyBvdXQgYW5kIHRoeSBjb21pbmcgaW4gZnJvbSB0aGlzIHRpbWUgZm9ydGgsIGFuZCBldmVuIGZvciBldmVybW9yZS4KSSB3YXMgZ2xhZCB3aGVuIHRoZXkgc2FpZCB1bnRvIG1lLCBMZXQgdXMgZ28gaW50byB0aGUgaG91c2Ugb2YgdGhlIExPUkQuCk91ciBmZWV0IHNoYWxsIHN0YW5kIHdpdGhpbiB0aHkgZ2F0ZXMsIE8gSmVydXNhbGVtLgpKZXJ1c2FsZW0gaXMgYnVpbGRlZCBhcyBhIGNpdHkgdGhhdCBpcyBjb21wYWN0IHRvZ2V0aGVyOgpXaGl0aGVyIHRoZSB0cmliZXMgZ28gdXAsIHRoZSB0cmliZXMgb2YgdGhlIExPUkQsIHVudG8gdGhlIHRlc3RpbW9ueSBvZiBJc3JhZWwsIHRvIGdpdmUgdGhhbmtzIHVudG8gdGhlIG5hbWUgb2YgdGhlIExPUkQuCkZvciB0aGVyZSBhcmUgc2V0IHRocm9uZXMgb2YganVkZ21lbnQsIHRoZSB0aHJvbmVzIG9mIHRoZSBob3VzZSBvZiBEYXZpZC4KUHJheSBmb3IgdGhlIHBlYWNlIG9mIEplcnVzYWxlbTogdGhleSBzaGFsbCBwcm9zcGVyIHRoYXQgbG92ZSB0aGVlLgpQZWFjZSBiZSB3aXRoaW4gdGh5IHdhbGxzLCBhbmQgcHJvc3Blcml0eSB3aXRoaW4gdGh5IHBhbGFjZXMuCkZvciBteSBicmV0aHJlbiBhbmQgY29tcGFuaW9ucycgc2FrZXMsIEkgd2lsbCBub3cgc2F5LCBQZWFjZSBiZSB3aXRoaW4gdGhlZS4KQmVjYXVzZSBvZiB0aGUgaG91c2Ugb2YgdGhlIExPUkQgb3VyIEdvZCBJIHdpbGwgc2VlayB0aHkgZ29vZC4KVW50byB0aGVlIGxpZnQgSSB1cCBtaW5lIGV5ZXMsIE8gdGhvdSB0aGF0IGR3ZWxsZXN0IGluIHRoZSBoZWF2ZW5zLgpCZWhvbGQsIGFzIHRoZSBleWVzIG9mIHNlcnZhbnRzIGxvb2sgdW50byB0aGUgaGFuZCBvZiB0aGVpciBtYXN0ZXJzLCBhbmQgYXMgdGhlIGV5ZXMgb2YgYSBtYWlkZW4gdW50byB0aGUgaGFuZCBvZiBoZXIgbWlzdHJlc3M7IHNvIG91ciBleWVzIHdhaXQgdXBvbiB0aGUgTE9SRCBvdXIgR29kLCB1bnRpbCB0aGF0IGhlIGhhdmUgbWVyY3kgdXBvbiB1cy4KSGF2ZSBtZXJjeSB1cG9uIHVzLCBPIExPUkQsIGhhdmUgbWVyY3kgdXBvbiB1czogZm9yIHdlIGFyZSBleGNlZWRpbmdseSBmaWxsZWQgd2l0aCBjb250ZW1wdC4KT3VyIHNvdWwgaXMgZXhjZWVkaW5nbHkgZmlsbGVkIHdpdGggdGhlIHNjb3JuaW5nIG9mIHRob3NlIHRoYXQgYXJlIGF0IGVhc2UsIGFuZCB3aXRoIHRoZSBjb250ZW1wdCBvZiB0aGUgcHJvdWQuCklmIGl0IGhhZCBub3QgYmVlbiB0aGUgTE9SRCB3aG8gd2FzIG9uIG91ciBzaWRlLCBub3cgbWF5IElzcmFlbCBzYXk7CklmIGl0IGhhZCBub3QgYmVlbiB0aGUgTE9SRCB3aG8gd2FzIG9uIG91ciBzaWRlLCB3aGVuIG1lbiByb3NlIHVwIGFnYWluc3QgdXM6ClRoZW4gdGhleSBoYWQgc3dhbGxvd2VkIHVzIHVwIHF1aWNrLCB3aGVuIHRoZWlyIHdyYXRoIHdhcyBraW5kbGVkIGFnYWluc3QgdXM6ClRoZW4gdGhlIHdhdGVycyBoYWQgb3ZlcndoZWxtZWQgdXMsIHRoZSBzdHJlYW0gaGFkIGdvbmUgb3ZlciBvdXIgc291bDoKVGhlbiB0aGUgcHJvdWQgd2F0ZXJzIGhhZCBnb25lIG92ZXIgb3VyIHNvdWwuCkJsZXNzZWQgYmUgdGhlIExPUkQsIHdobyBoYXRoIG5vdCBnaXZlbiB1cyBhcyBhIHByZXkgdG8gdGhlaXIgdGVldGguCk91ciBzb3VsIGlzIGVzY2FwZWQgYXMgYSBiaXJkIG91dCBvZiB0aGUgc25hcmUgb2YgdGhlIGZvd2xlcnM6IHRoZSBzbmFyZSBpcyBicm9rZW4sIGFuZCB3ZSBhcmUgZXNjYXBlZC4KT3VyIGhlbHAgaXMgaW4gdGhlIG5hbWUgb2YgdGhlIExPUkQsIHdobyBtYWRlIGhlYXZlbiBhbmQgZWFydGguClRoZXkgdGhhdCB0cnVzdCBpbiB0aGUgTE9SRCBzaGFsbCBiZSBhcyBtb3VudCBaaW9uLCB3aGljaCBjYW5ub3QgYmUgcmVtb3ZlZCwgYnV0IGFiaWRldGggZm9yIGV2ZXIuCkFzIHRoZSBtb3VudGFpbnMgYXJlIHJvdW5kIGFib3V0IEplcnVzYWxlbSwgc28gdGhlIExPUkQgaXMgcm91bmQgYWJvdXQgaGlzIHBlb3BsZSBmcm9tIGhlbmNlZm9ydGggZXZlbiBmb3IgZXZlci4KRm9yIHRoZSByb2Qgb2YgdGhlIHdpY2tlZCBzaGFsbCBub3QgcmVzdCB1cG9uIHRoZSBsb3Qgb2YgdGhlIHJpZ2h0ZW91czsgbGVzdCB0aGUgcmlnaHRlb3VzIHB1dCBmb3J0aCB0aGVpciBoYW5kcyB1bnRvIGluaXF1aXR5LgpEbyBnb29kLCBPIExPUkQsIHVudG8gdGhvc2UgdGhhdCBiZSBnb29kLCBhbmQgdG8gdGhlbSB0aGF0IGFyZSB1cHJpZ2h0IGluIHRoZWlyIGhlYXJ0cy4KQXMgZm9yIHN1Y2ggYXMgdHVybiBhc2lkZSB1bnRvIHRoZWlyIGNyb29rZWQgd2F5cywgdGhlIExPUkQgc2hhbGwgbGVhZCB0aGVtIGZvcnRoIHdpdGggdGhlIHdvcmtlcnMgb2YgaW5pcXVpdHk6IGJ1dCBwZWFjZSBzaGFsbCBiZSB1cG9uIElzcmFlbC4KV2hlbiB0aGUgTE9SRCB0dXJuZWQgYWdhaW4gdGhlIGNhcHRpdml0eSBvZiBaaW9uLCB3ZSB3ZXJlIGxpa2UgdGhlbSB0aGF0IGRyZWFtLgpUaGVuIHdhcyBvdXIgbW91dGggZmlsbGVkIHdpdGggbGF1Z2h0ZXIsIGFuZCBvdXIgdG9uZ3VlIHdpdGggc2luZ2luZzogdGhlbiBzYWlkIHRoZXkgYW1vbmcgdGhlIGhlYXRoZW4sIFRoZSBMT1JEIGhhdGggZG9uZSBncmVhdCB0aGluZ3MgZm9yIHRoZW0uClRoZSBMT1JEIGhhdGggZG9uZSBncmVhdCB0aGluZ3MgZm9yIHVzOyB3aGVyZW9mIHdlIGFyZSBnbGFkLgpUdXJuIGFnYWluIG91ciBjYXB0aXZpdHksIE8gTE9SRCwgYXMgdGhlIHN0cmVhbXMgaW4gdGhlIHNvdXRoLgpUaGV5IHRoYXQgc293IGluIHRlYXJzIHNoYWxsIHJlYXAgaW4gam95LgpIZSB0aGF0IGdvZXRoIGZvcnRoIGFuZCB3ZWVwZXRoLCBiZWFyaW5nIHByZWNpb3VzIHNlZWQsIHNoYWxsIGRvdWJ0bGVzcyBjb21lIGFnYWluIHdpdGggcmVqb2ljaW5nLCBicmluZ2luZyBoaXMgc2hlYXZlcyB3aXRoIGhpbS4KRXhjZXB0IHRoZSBMT1JEIGJ1aWxkIHRoZSBob3VzZSwgdGhleSBsYWJvdXIgaW4gdmFpbiB0aGF0IGJ1aWxkIGl0OiBleGNlcHQgdGhlIExPUkQga2VlcCB0aGUgY2l0eSwgdGhlIHdhdGNobWFuIHdha2V0aCBidXQgaW4gdmFpbi4KSXQgaXMgdmFpbiBmb3IgeW91IHRvIHJpc2UgdXAgZWFybHksIHRvIHNpdCB1cCBsYXRlLCB0byBlYXQgdGhlIGJyZWFkIG9mIHNvcnJvd3M6IGZvciBzbyBoZSBnaXZldGggaGlzIGJlbG92ZWQgc2xlZXAuCkxvLCBjaGlsZHJlbiBhcmUgYW4gaGVyaXRhZ2Ugb2YgdGhlIExPUkQ6IGFuZCB0aGUgZnJ1aXQgb2YgdGhlIHdvbWIgaXMgaGlzIHJld2FyZC4KQXMgYXJyb3dzIGFyZSBpbiB0aGUgaGFuZCBvZiBhIG1pZ2h0eSBtYW47IHNvIGFyZSBjaGlsZHJlbiBvZiB0aGUgeW91dGguCkhhcHB5IGlzIHRoZSBtYW4gdGhhdCBoYXRoIGhpcyBxdWl2ZXIgZnVsbCBvZiB0aGVtOiB0aGV5IHNoYWxsIG5vdCBiZSBhc2hhbWVkLCBidXQgdGhleSBzaGFsbCBzcGVhayB3aXRoIHRoZSBlbmVtaWVzIGluIHRoZSBnYXRlLgpCbGVzc2VkIGlzIGV2ZXJ5IG9uZSB0aGF0IGZlYXJldGggdGhlIExPUkQ7IHRoYXQgd2Fsa2V0aCBpbiBoaXMgd2F5cy4KRm9yIHRob3Ugc2hhbHQgZWF0IHRoZSBsYWJvdXIgb2YgdGhpbmUgaGFuZHM6IGhhcHB5IHNoYWx0IHRob3UgYmUsIGFuZCBpdCBzaGFsbCBiZSB3ZWxsIHdpdGggdGhlZS4KVGh5IHdpZmUgc2hhbGwgYmUgYXMgYSBmcnVpdGZ1bCB2aW5lIGJ5IHRoZSBzaWRlcyBvZiB0aGluZSBob3VzZTogdGh5IGNoaWxkcmVuIGxpa2Ugb2xpdmUgcGxhbnRzIHJvdW5kIGFib3V0IHRoeSB0YWJsZS4KQmVob2xkLCB0aGF0IHRodXMgc2hhbGwgdGhlIG1hbiBiZSBibGVzc2VkIHRoYXQgZmVhcmV0aCB0aGUgTE9SRC4KVGhlIExPUkQgc2hhbGwgYmxlc3MgdGhlZSBvdXQgb2YgWmlvbjogYW5kIHRob3Ugc2hhbHQgc2VlIHRoZSBnb29kIG9mIEplcnVzYWxlbSBhbGwgdGhlIGRheXMgb2YgdGh5IGxpZmUuClllYSwgdGhvdSBzaGFsdCBzZWUgdGh5IGNoaWxkcmVuJ3MgY2hpbGRyZW4sIGFuZCBwZWFjZSB1cG9uIElzcmFlbC4KTWFueSBhIHRpbWUgaGF2ZSB0aGV5IGFmZmxpY3RlZCBtZSBmcm9tIG15IHlvdXRoLCBtYXkgSXNyYWVsIG5vdyBzYXk6Ck1hbnkgYSB0aW1lIGhhdmUgdGhleSBhZmZsaWN0ZWQgbWUgZnJvbSBteSB5b3V0aDogeWV0IHRoZXkgaGF2ZSBub3QgcHJldmFpbGVkIGFnYWluc3QgbWUuClRoZSBwbG93ZXJzIHBsb3dlZCB1cG9uIG15IGJhY2s6IHRoZXkgbWFkZSBsb25nIHRoZWlyIGZ1cnJvd3MuClRoZSBMT1JEIGlzIHJpZ2h0ZW91czogaGUgaGF0aCBjdXQgYXN1bmRlciB0aGUgY29yZHMgb2YgdGhlIHdpY2tlZC4KTGV0IHRoZW0gYWxsIGJlIGNvbmZvdW5kZWQgYW5kIHR1cm5lZCBiYWNrIHRoYXQgaGF0ZSBaaW9uLgpMZXQgdGhlbSBiZSBhcyB0aGUgZ3Jhc3MgdXBvbiB0aGUgaG91c2V0b3BzLCB3aGljaCB3aXRoZXJldGggYWZvcmUgaXQgZ3Jvd2V0aCB1cDoKV2hlcmV3aXRoIHRoZSBtb3dlciBmaWxsZXRoIG5vdCBoaXMgaGFuZDsgbm9yIGhlIHRoYXQgYmluZGV0aCBzaGVhdmVzIGhpcyBib3NvbS4KTmVpdGhlciBkbyB0aGV5IHdoaWNoIGdvIGJ5IHNheSwgVGhlIGJsZXNzaW5nIG9mIHRoZSBMT1JEIGJlIHVwb24geW91OiB3ZSBibGVzcyB5b3UgaW4gdGhlIG5hbWUgb2YgdGhlIExPUkQuCk91dCBvZiB0aGUgZGVwdGhzIGhhdmUgSSBjcmllZCB1bnRvIHRoZWUsIE8gTE9SRC4KTG9yZCwgaGVhciBteSB2b2ljZTogbGV0IHRoaW5lIGVhcnMgYmUgYXR0ZW50aXZlIHRvIHRoZSB2b2ljZSBvZiBteSBzdXBwbGljYXRpb25zLgpJZiB0aG91LCBMT1JELCBzaG91bGRlc3QgbWFyayBpbmlxdWl0aWVzLCBPIExvcmQsIHdobyBzaGFsbCBzdGFuZD8KQnV0IHRoZXJlIGlzIGZvcmdpdmVuZXNzIHdpdGggdGhlZSwgdGhhdCB0aG91IG1heWVzdCBiZSBmZWFyZWQuCkkgd2FpdCBmb3IgdGhlIExPUkQsIG15IHNvdWwgZG90aCB3YWl0LCBhbmQgaW4gaGlzIHdvcmQgZG8gSSBob3BlLgpNeSBzb3VsIHdhaXRldGggZm9yIHRoZSBMb3JkIG1vcmUgdGhhbiB0aGV5IHRoYXQgd2F0Y2ggZm9yIHRoZSBtb3JuaW5nOiBJIHNheSwgbW9yZSB0aGFuIHRoZXkgdGhhdCB3YXRjaCBmb3IgdGhlIG1vcm5pbmcuCkxldCBJc3JhZWwgaG9wZSBpbiB0aGUgTE9SRDogZm9yIHdpdGggdGhlIExPUkQgdGhlcmUgaXMgbWVyY3ksIGFuZCB3aXRoIGhpbSBpcyBwbGVudGVvdXMgcmVkZW1wdGlvbi4KQW5kIGhlIHNoYWxsIHJlZGVlbSBJc3JhZWwgZnJvbSBhbGwgaGlzIGluaXF1aXRpZXMuCkxvcmQsIG15IGhlYXJ0IGlzIG5vdCBoYXVnaHR5LCBub3IgbWluZSBleWVzIGxvZnR5OiBuZWl0aGVyIGRvIEkgZXhlcmNpc2UgbXlzZWxmIGluIGdyZWF0IG1hdHRlcnMsIG9yIGluIHRoaW5ncyB0b28gaGlnaCBmb3IgbWUuClN1cmVseSBJIGhhdmUgYmVoYXZlZCBhbmQgcXVpZXRlZCBteXNlbGYsIGFzIGEgY2hpbGQgdGhhdCBpcyB3ZWFuZWQgb2YgaGlzIG1vdGhlcjogbXkgc291bCBpcyBldmVuIGFzIGEgd2VhbmVkIGNoaWxkLgpMZXQgSXNyYWVsIGhvcGUgaW4gdGhlIExPUkQgZnJvbSBoZW5jZWZvcnRoIGFuZCBmb3IgZXZlci4KTG9yZCwgcmVtZW1iZXIgRGF2aWQsIGFuZCBhbGwgaGlzIGFmZmxpY3Rpb25zOgpIb3cgaGUgc3dhcmUgdW50byB0aGUgTE9SRCwgYW5kIHZvd2VkIHVudG8gdGhlIG1pZ2h0eSBHb2Qgb2YgSmFjb2I7ClN1cmVseSBJIHdpbGwgbm90IGNvbWUgaW50byB0aGUgdGFiZXJuYWNsZSBvZiBteSBob3VzZSwgbm9yIGdvIHVwIGludG8gbXkgYmVkOwpJIHdpbGwgbm90IGdpdmUgc2xlZXAgdG8gbWluZSBleWVzLCBvciBzbHVtYmVyIHRvIG1pbmUgZXllbGlkcywKVW50aWwgSSBmaW5kIG91dCBhIHBsYWNlIGZvciB0aGUgTE9SRCwgYW4gaGFiaXRhdGlvbiBmb3IgdGhlIG1pZ2h0eSBHb2Qgb2YgSmFjb2IuCkxvLCB3ZSBoZWFyZCBvZiBpdCBhdCBFcGhyYXRhaDogd2UgZm91bmQgaXQgaW4gdGhlIGZpZWxkcyBvZiB0aGUgd29vZC4KV2Ugd2lsbCBnbyBpbnRvIGhpcyB0YWJlcm5hY2xlczogd2Ugd2lsbCB3b3JzaGlwIGF0IGhpcyBmb290c3Rvb2wuCkFyaXNlLCBPIExPUkQsIGludG8gdGh5IHJlc3Q7IHRob3UsIGFuZCB0aGUgYXJrIG9mIHRoeSBzdHJlbmd0aC4KTGV0IHRoeSBwcmllc3RzIGJlIGNsb3RoZWQgd2l0aCByaWdodGVvdXNuZXNzOyBhbmQgbGV0IHRoeSBzYWludHMgc2hvdXQgZm9yIGpveS4KRm9yIHRoeSBzZXJ2YW50IERhdmlkJ3Mgc2FrZSB0dXJuIG5vdCBhd2F5IHRoZSBmYWNlIG9mIHRoaW5lIGFub2ludGVkLgpUaGUgTE9SRCBoYXRoIHN3b3JuIGluIHRydXRoIHVudG8gRGF2aWQ7IGhlIHdpbGwgbm90IHR1cm4gZnJvbSBpdDsgT2YgdGhlIGZydWl0IG9mIHRoeSBib2R5IHdpbGwgSSBzZXQgdXBvbiB0aHkgdGhyb25lLgpJZiB0aHkgY2hpbGRyZW4gd2lsbCBrZWVwIG15IGNvdmVuYW50IGFuZCBteSB0ZXN0aW1vbnkgdGhhdCBJIHNoYWxsIHRlYWNoIHRoZW0sIHRoZWlyIGNoaWxkcmVuIHNoYWxsIGFsc28gc2l0IHVwb24gdGh5IHRocm9uZSBmb3IgZXZlcm1vcmUuCkZvciB0aGUgTE9SRCBoYXRoIGNob3NlbiBaaW9uOyBoZSBoYXRoIGRlc2lyZWQgaXQgZm9yIGhpcyBoYWJpdGF0aW9uLgpUaGlzIGlzIG15IHJlc3QgZm9yIGV2ZXI6IGhlcmUgd2lsbCBJIGR3ZWxsOyBmb3IgSSBoYXZlIGRlc2lyZWQgaXQuCkkgd2lsbCBhYnVuZGFudGx5IGJsZXNzIGhlciBwcm92aXNpb246IEkgd2lsbCBzYXRpc2Z5IGhlciBwb29yIHdpdGggYnJlYWQuCkkgd2lsbCBhbHNvIGNsb3RoZSBoZXIgcHJpZXN0cyB3aXRoIHNhbHZhdGlvbjogYW5kIGhlciBzYWludHMgc2hhbGwgc2hvdXQgYWxvdWQgZm9yIGpveS4KVGhlcmUgd2lsbCBJIG1ha2UgdGhlIGhvcm4gb2YgRGF2aWQgdG8gYnVkOiBJIGhhdmUgb3JkYWluZWQgYSBsYW1wIGZvciBtaW5lIGFub2ludGVkLgpIaXMgZW5lbWllcyB3aWxsIEkgY2xvdGhlIHdpdGggc2hhbWU6IGJ1dCB1cG9uIGhpbXNlbGYgc2hhbGwgaGlzIGNyb3duIGZsb3VyaXNoLgpCZWhvbGQsIGhvdyBnb29kIGFuZCBob3cgcGxlYXNhbnQgaXQgaXMgZm9yIGJyZXRocmVuIHRvIGR3ZWxsIHRvZ2V0aGVyIGluIHVuaXR5IQpJdCBpcyBsaWtlIHRoZSBwcmVjaW91cyBvaW50bWVudCB1cG9uIHRoZSBoZWFkLCB0aGF0IHJhbiBkb3duIHVwb24gdGhlIGJlYXJkLCBldmVuIEFhcm9uJ3MgYmVhcmQ6IHRoYXQgd2VudCBkb3duIHRvIHRoZSBza2lydHMgb2YgaGlzIGdhcm1lbnRzOwpBcyB0aGUgZGV3IG9mIEhlcm1vbiwgYW5kIGFzIHRoZSBkZXcgdGhhdCBkZXNjZW5kZWQgdXBvbiB0aGUgbW91bnRhaW5zIG9mIFppb246IGZvciB0aGVyZSB0aGUgTE9SRCBjb21tYW5kZWQgdGhlIGJsZXNzaW5nLCBldmVuIGxpZmUgZm9yIGV2ZXJtb3JlLgpCZWhvbGQsIGJsZXNzIHllIHRoZSBMT1JELCBhbGwgeWUgc2VydmFudHMgb2YgdGhlIExPUkQsIHdoaWNoIGJ5IG5pZ2h0IHN0YW5kIGluIHRoZSBob3VzZSBvZiB0aGUgTE9SRC4KTGlmdCB1cCB5b3VyIGhhbmRzIGluIHRoZSBzYW5jdHVhcnksIGFuZCBibGVzcyB0aGUgTE9SRC4KVGhlIExPUkQgdGhhdCBtYWRlIGhlYXZlbiBhbmQgZWFydGggYmxlc3MgdGhlZSBvdXQgb2YgWmlvbi4KUHJhaXNlIHllIHRoZSBMT1JELiBQcmFpc2UgeWUgdGhlIG5hbWUgb2YgdGhlIExPUkQ7IHByYWlzZSBoaW0sIE8geWUgc2VydmFudHMgb2YgdGhlIExPUkQuClllIHRoYXQgc3RhbmQgaW4gdGhlIGhvdXNlIG9mIHRoZSBMT1JELCBpbiB0aGUgY291cnRzIG9mIHRoZSBob3VzZSBvZiBvdXIgR29kLgpQcmFpc2UgdGhlIExPUkQ7IGZvciB0aGUgTE9SRCBpcyBnb29kOiBzaW5nIHByYWlzZXMgdW50byBoaXMgbmFtZTsgZm9yIGl0IGlzIHBsZWFzYW50LgpGb3IgdGhlIExPUkQgaGF0aCBjaG9zZW4gSmFjb2IgdW50byBoaW1zZWxmLCBhbmQgSXNyYWVsIGZvciBoaXMgcGVjdWxpYXIgdHJlYXN1cmUuCkZvciBJIGtub3cgdGhhdCB0aGUgTE9SRCBpcyBncmVhdCwgYW5kIHRoYXQgb3VyIExvcmQgaXMgYWJvdmUgYWxsIGdvZHMuCldoYXRzb2V2ZXIgdGhlIExPUkQgcGxlYXNlZCwgdGhhdCBkaWQgaGUgaW4gaGVhdmVuLCBhbmQgaW4gZWFydGgsIGluIHRoZSBzZWFzLCBhbmQgYWxsIGRlZXAgcGxhY2VzLgpIZSBjYXVzZXRoIHRoZSB2YXBvdXJzIHRvIGFzY2VuZCBmcm9tIHRoZSBlbmRzIG9mIHRoZSBlYXJ0aDsgaGUgbWFrZXRoIGxpZ2h0bmluZ3MgZm9yIHRoZSByYWluOyBoZSBicmluZ2V0aCB0aGUgd2luZCBvdXQgb2YgaGlzIHRyZWFzdXJpZXMuCldobyBzbW90ZSB0aGUgZmlyc3Rib3JuIG9mIEVneXB0LCBib3RoIG9mIG1hbiBhbmQgYmVhc3QuCldobyBzZW50IHRva2VucyBhbmQgd29uZGVycyBpbnRvIHRoZSBtaWRzdCBvZiB0aGVlLCBPIEVneXB0LCB1cG9uIFBoYXJhb2gsIGFuZCB1cG9uIGFsbCBoaXMgc2VydmFudHMuCldobyBzbW90ZSBncmVhdCBuYXRpb25zLCBhbmQgc2xldyBtaWdodHkga2luZ3M7ClNpaG9uIGtpbmcgb2YgdGhlIEFtb3JpdGVzLCBhbmQgT2cga2luZyBvZiBCYXNoYW4sIGFuZCBhbGwgdGhlIGtpbmdkb21zIG9mIENhbmFhbjoKQW5kIGdhdmUgdGhlaXIgbGFuZCBmb3IgYW4gaGVyaXRhZ2UsIGFuIGhlcml0YWdlIHVudG8gSXNyYWVsIGhpcyBwZW9wbGUuClRoeSBuYW1lLCBPIExPUkQsIGVuZHVyZXRoIGZvciBldmVyOyBhbmQgdGh5IG1lbW9yaWFsLCBPIExPUkQsIHRocm91Z2hvdXQgYWxsIGdlbmVyYXRpb25zLgpGb3IgdGhlIExPUkQgd2lsbCBqdWRnZSBoaXMgcGVvcGxlLCBhbmQgaGUgd2lsbCByZXBlbnQgaGltc2VsZiBjb25jZXJuaW5nIGhpcyBzZXJ2YW50cy4KVGhlIGlkb2xzIG9mIHRoZSBoZWF0aGVuIGFyZSBzaWx2ZXIgYW5kIGdvbGQsIHRoZSB3b3JrIG9mIG1lbidzIGhhbmRzLgpUaGV5IGhhdmUgbW91dGhzLCBidXQgdGhleSBzcGVhayBub3Q7IGV5ZXMgaGF2ZSB0aGV5LCBidXQgdGhleSBzZWUgbm90OwpUaGV5IGhhdmUgZWFycywgYnV0IHRoZXkgaGVhciBub3Q7IG5laXRoZXIgaXMgdGhlcmUgYW55IGJyZWF0aCBpbiB0aGVpciBtb3V0aHMuClRoZXkgdGhhdCBtYWtlIHRoZW0gYXJlIGxpa2UgdW50byB0aGVtOiBzbyBpcyBldmVyeSBvbmUgdGhhdCB0cnVzdGV0aCBpbiB0aGVtLgpCbGVzcyB0aGUgTE9SRCwgTyBob3VzZSBvZiBJc3JhZWw6IGJsZXNzIHRoZSBMT1JELCBPIGhvdXNlIG9mIEFhcm9uOgpCbGVzcyB0aGUgTE9SRCwgTyBob3VzZSBvZiBMZXZpOiB5ZSB0aGF0IGZlYXIgdGhlIExPUkQsIGJsZXNzIHRoZSBMT1JELgpCbGVzc2VkIGJlIHRoZSBMT1JEIG91dCBvZiBaaW9uLCB3aGljaCBkd2VsbGV0aCBhdCBKZXJ1c2FsZW0uIFByYWlzZSB5ZSB0aGUgTE9SRC4KTyBnaXZlIHRoYW5rcyB1bnRvIHRoZSBMT1JEOyBmb3IgaGUgaXMgZ29vZDogZm9yIGhpcyBtZXJjeSBlbmR1cmV0aCBmb3IgZXZlci4KTyBnaXZlIHRoYW5rcyB1bnRvIHRoZSBHb2Qgb2YgZ29kczogZm9yIGhpcyBtZXJjeSBlbmR1cmV0aCBmb3IgZXZlci4KTyBnaXZlIHRoYW5rcyB0byB0aGUgTG9yZCBvZiBsb3JkczogZm9yIGhpcyBtZXJjeSBlbmR1cmV0aCBmb3IgZXZlci4KVG8gaGltIHdobyBhbG9uZSBkb2V0aCBncmVhdCB3b25kZXJzOiBmb3IgaGlzIG1lcmN5IGVuZHVyZXRoIGZvciBldmVyLgpUbyBoaW0gdGhhdCBieSB3aXNkb20gbWFkZSB0aGUgaGVhdmVuczogZm9yIGhpcyBtZXJjeSBlbmR1cmV0aCBmb3IgZXZlci4KVG8gaGltIHRoYXQgc3RyZXRjaGVkIG91dCB0aGUgZWFydGggYWJvdmUgdGhlIHdhdGVyczogZm9yIGhpcyBtZXJjeSBlbmR1cmV0aCBmb3IgZXZlci4KVG8gaGltIHRoYXQgbWFkZSBncmVhdCBsaWdodHM6IGZvciBoaXMgbWVyY3kgZW5kdXJldGggZm9yIGV2ZXI6ClRoZSBzdW4gdG8gcnVsZSBieSBkYXk6IGZvciBoaXMgbWVyY3kgZW5kdXJldGggZm9yIGV2ZXI6ClRoZSBtb29uIGFuZCBzdGFycyB0byBydWxlIGJ5IG5pZ2h0OiBmb3IgaGlzIG1lcmN5IGVuZHVyZXRoIGZvciBldmVyLgpUbyBoaW0gdGhhdCBzbW90ZSBFZ3lwdCBpbiB0aGVpciBmaXJzdGJvcm46IGZvciBoaXMgbWVyY3kgZW5kdXJldGggZm9yIGV2ZXI6CkFuZCBicm91Z2h0IG91dCBJc3JhZWwgZnJvbSBhbW9uZyB0aGVtOiBmb3IgaGlzIG1lcmN5IGVuZHVyZXRoIGZvciBldmVyOgpXaXRoIGEgc3Ryb25nIGhhbmQsIGFuZCB3aXRoIGEgc3RyZXRjaGVkIG91dCBhcm06IGZvciBoaXMgbWVyY3kgZW5kdXJldGggZm9yIGV2ZXIuClRvIGhpbSB3aGljaCBkaXZpZGVkIHRoZSBSZWQgc2VhIGludG8gcGFydHM6IGZvciBoaXMgbWVyY3kgZW5kdXJldGggZm9yIGV2ZXI6CkFuZCBtYWRlIElzcmFlbCB0byBwYXNzIHRocm91Z2ggdGhlIG1pZHN0IG9mIGl0OiBmb3IgaGlzIG1lcmN5IGVuZHVyZXRoIGZvciBldmVyOgpCdXQgb3ZlcnRocmV3IFBoYXJhb2ggYW5kIGhpcyBob3N0IGluIHRoZSBSZWQgc2VhOiBmb3IgaGlzIG1lcmN5IGVuZHVyZXRoIGZvciBldmVyLgpUbyBoaW0gd2hpY2ggbGVkIGhpcyBwZW9wbGUgdGhyb3VnaCB0aGUgd2lsZGVybmVzczogZm9yIGhpcyBtZXJjeSBlbmR1cmV0aCBmb3IgZXZlci4KVG8gaGltIHdoaWNoIHNtb3RlIGdyZWF0IGtpbmdzOiBmb3IgaGlzIG1lcmN5IGVuZHVyZXRoIGZvciBldmVyOgpBbmQgc2xldyBmYW1vdXMga2luZ3M6IGZvciBoaXMgbWVyY3kgZW5kdXJldGggZm9yIGV2ZXI6ClNpaG9uIGtpbmcgb2YgdGhlIEFtb3JpdGVzOiBmb3IgaGlzIG1lcmN5IGVuZHVyZXRoIGZvciBldmVyOgpBbmQgT2cgdGhlIGtpbmcgb2YgQmFzaGFuOiBmb3IgaGlzIG1lcmN5IGVuZHVyZXRoIGZvciBldmVyOgpBbmQgZ2F2ZSB0aGVpciBsYW5kIGZvciBhbiBoZXJpdGFnZTogZm9yIGhpcyBtZXJjeSBlbmR1cmV0aCBmb3IgZXZlcjoKRXZlbiBhbiBoZXJpdGFnZSB1bnRvIElzcmFlbCBoaXMgc2VydmFudDogZm9yIGhpcyBtZXJjeSBlbmR1cmV0aCBmb3IgZXZlci4KV2hvIHJlbWVtYmVyZWQgdXMgaW4gb3VyIGxvdyBlc3RhdGU6IGZvciBoaXMgbWVyY3kgZW5kdXJldGggZm9yIGV2ZXI6CkFuZCBoYXRoIHJlZGVlbWVkIHVzIGZyb20gb3VyIGVuZW1pZXM6IGZvciBoaXMgbWVyY3kgZW5kdXJldGggZm9yIGV2ZXIuCldobyBnaXZldGggZm9vZCB0byBhbGwgZmxlc2g6IGZvciBoaXMgbWVyY3kgZW5kdXJldGggZm9yIGV2ZXIuCk8gZ2l2ZSB0aGFua3MgdW50byB0aGUgR29kIG9mIGhlYXZlbjogZm9yIGhpcyBtZXJjeSBlbmR1cmV0aCBmb3IgZXZlci4KQnkgdGhlIHJpdmVycyBvZiBCYWJ5bG9uLCB0aGVyZSB3ZSBzYXQgZG93biwgeWVhLCB3ZSB3ZXB0LCB3aGVuIHdlIHJlbWVtYmVyZWQgWmlvbi4KV2UgaGFuZ2VkIG91ciBoYXJwcyB1cG9uIHRoZSB3aWxsb3dzIGluIHRoZSBtaWRzdCB0aGVyZW9mLgpGb3IgdGhlcmUgdGhleSB0aGF0IGNhcnJpZWQgdXMgYXdheSBjYXB0aXZlIHJlcXVpcmVkIG9mIHVzIGEgc29uZzsgYW5kIHRoZXkgdGhhdCB3YXN0ZWQgdXMgcmVxdWlyZWQgb2YgdXMgbWlydGgsIHNheWluZywgU2luZyB1cyBvbmUgb2YgdGhlIHNvbmdzIG9mIFppb24uCkhvdyBzaGFsbCB3ZSBzaW5nIHRoZSBMT1JEJ3Mgc29uZyBpbiBhIHN0cmFuZ2UgbGFuZD8KSWYgSSBmb3JnZXQgdGhlZSwgTyBKZXJ1c2FsZW0sIGxldCBteSByaWdodCBoYW5kIGZvcmdldCBoZXIgY3VubmluZy4KSWYgSSBkbyBub3QgcmVtZW1iZXIgdGhlZSwgbGV0IG15IHRvbmd1ZSBjbGVhdmUgdG8gdGhlIHJvb2Ygb2YgbXkgbW91dGg7IGlmIEkgcHJlZmVyIG5vdCBKZXJ1c2FsZW0gYWJvdmUgbXkgY2hpZWYgam95LgpSZW1lbWJlciwgTyBMT1JELCB0aGUgY2hpbGRyZW4gb2YgRWRvbSBpbiB0aGUgZGF5IG9mIEplcnVzYWxlbTsgd2hvIHNhaWQsIFJhc2UgaXQsIHJhc2UgaXQsIGV2ZW4gdG8gdGhlIGZvdW5kYXRpb24gdGhlcmVvZi4KTyBkYXVnaHRlciBvZiBCYWJ5bG9uLCB3aG8gYXJ0IHRvIGJlIGRlc3Ryb3llZDsgaGFwcHkgc2hhbGwgaGUgYmUsIHRoYXQgcmV3YXJkZXRoIHRoZWUgYXMgdGhvdSBoYXN0IHNlcnZlZCB1cy4KSGFwcHkgc2hhbGwgaGUgYmUsIHRoYXQgdGFrZXRoIGFuZCBkYXNoZXRoIHRoeSBsaXR0bGUgb25lcyBhZ2FpbnN0IHRoZSBzdG9uZXMuCkkgd2lsbCBwcmFpc2UgdGhlZSB3aXRoIG15IHdob2xlIGhlYXJ0OiBiZWZvcmUgdGhlIGdvZHMgd2lsbCBJIHNpbmcgcHJhaXNlIHVudG8gdGhlZS4KSSB3aWxsIHdvcnNoaXAgdG93YXJkIHRoeSBob2x5IHRlbXBsZSwgYW5kIHByYWlzZSB0aHkgbmFtZSBmb3IgdGh5IGxvdmluZ2tpbmRuZXNzIGFuZCBmb3IgdGh5IHRydXRoOiBmb3IgdGhvdSBoYXN0IG1hZ25pZmllZCB0aHkgd29yZCBhYm92ZSBhbGwgdGh5IG5hbWUuCkluIHRoZSBkYXkgd2hlbiBJIGNyaWVkIHRob3UgYW5zd2VyZWRzdCBtZSwgYW5kIHN0cmVuZ3RoZW5lZHN0IG1lIHdpdGggc3RyZW5ndGggaW4gbXkgc291bC4KQWxsIHRoZSBraW5ncyBvZiB0aGUgZWFydGggc2hhbGwgcHJhaXNlIHRoZWUsIE8gTE9SRCwgd2hlbiB0aGV5IGhlYXIgdGhlIHdvcmRzIG9mIHRoeSBtb3V0aC4KWWVhLCB0aGV5IHNoYWxsIHNpbmcgaW4gdGhlIHdheXMgb2YgdGhlIExPUkQ6IGZvciBncmVhdCBpcyB0aGUgZ2xvcnkgb2YgdGhlIExPUkQuClRob3VnaCB0aGUgTE9SRCBiZSBoaWdoLCB5ZXQgaGF0aCBoZSByZXNwZWN0IHVudG8gdGhlIGxvd2x5OiBidXQgdGhlIHByb3VkIGhlIGtub3dldGggYWZhciBvZmYuClRob3VnaCBJIHdhbGsgaW4gdGhlIG1pZHN0IG9mIHRyb3VibGUsIHRob3Ugd2lsdCByZXZpdmUgbWU6IHRob3Ugc2hhbHQgc3RyZXRjaCBmb3J0aCB0aGluZSBoYW5kIGFnYWluc3QgdGhlIHdyYXRoIG9mIG1pbmUgZW5lbWllcywgYW5kIHRoeSByaWdodCBoYW5kIHNoYWxsIHNhdmUgbWUuClRoZSBMT1JEIHdpbGwgcGVyZmVjdCB0aGF0IHdoaWNoIGNvbmNlcm5ldGggbWU6IHRoeSBtZXJjeSwgTyBMT1JELCBlbmR1cmV0aCBmb3IgZXZlcjogZm9yc2FrZSBub3QgdGhlIHdvcmtzIG9mIHRoaW5lIG93biBoYW5kcy4KTyBsb3JkLCB0aG91IGhhc3Qgc2VhcmNoZWQgbWUsIGFuZCBrbm93biBtZS4KVGhvdSBrbm93ZXN0IG15IGRvd25zaXR0aW5nIGFuZCBtaW5lIHVwcmlzaW5nLCB0aG91IHVuZGVyc3RhbmRlc3QgbXkgdGhvdWdodCBhZmFyIG9mZi4KVGhvdSBjb21wYXNzZXN0IG15IHBhdGggYW5kIG15IGx5aW5nIGRvd24sIGFuZCBhcnQgYWNxdWFpbnRlZCB3aXRoIGFsbCBteSB3YXlzLgpGb3IgdGhlcmUgaXMgbm90IGEgd29yZCBpbiBteSB0b25ndWUsIGJ1dCwgbG8sIE8gTE9SRCwgdGhvdSBrbm93ZXN0IGl0IGFsdG9nZXRoZXIuClRob3UgaGFzdCBiZXNldCBtZSBiZWhpbmQgYW5kIGJlZm9yZSwgYW5kIGxhaWQgdGhpbmUgaGFuZCB1cG9uIG1lLgpTdWNoIGtub3dsZWRnZSBpcyB0b28gd29uZGVyZnVsIGZvciBtZTsgaXQgaXMgaGlnaCwgSSBjYW5ub3QgYXR0YWluIHVudG8gaXQuCldoaXRoZXIgc2hhbGwgSSBnbyBmcm9tIHRoeSBzcGlyaXQ/IG9yIHdoaXRoZXIgc2hhbGwgSSBmbGVlIGZyb20gdGh5IHByZXNlbmNlPwpJZiBJIGFzY2VuZCB1cCBpbnRvIGhlYXZlbiwgdGhvdSBhcnQgdGhlcmU6IGlmIEkgbWFrZSBteSBiZWQgaW4gaGVsbCwgYmVob2xkLCB0aG91IGFydCB0aGVyZS4KSWYgSSB0YWtlIHRoZSB3aW5ncyBvZiB0aGUgbW9ybmluZywgYW5kIGR3ZWxsIGluIHRoZSB1dHRlcm1vc3QgcGFydHMgb2YgdGhlIHNlYTsKRXZlbiB0aGVyZSBzaGFsbCB0aHkgaGFuZCBsZWFkIG1lLCBhbmQgdGh5IHJpZ2h0IGhhbmQgc2hhbGwgaG9sZCBtZS4KSWYgSSBzYXksIFN1cmVseSB0aGUgZGFya25lc3Mgc2hhbGwgY292ZXIgbWU7IGV2ZW4gdGhlIG5pZ2h0IHNoYWxsIGJlIGxpZ2h0IGFib3V0IG1lLgpZZWEsIHRoZSBkYXJrbmVzcyBoaWRldGggbm90IGZyb20gdGhlZTsgYnV0IHRoZSBuaWdodCBzaGluZXRoIGFzIHRoZSBkYXk6IHRoZSBkYXJrbmVzcyBhbmQgdGhlIGxpZ2h0IGFyZSBib3RoIGFsaWtlIHRvIHRoZWUuCkZvciB0aG91IGhhc3QgcG9zc2Vzc2VkIG15IHJlaW5zOiB0aG91IGhhc3QgY292ZXJlZCBtZSBpbiBteSBtb3RoZXIncyB3b21iLgpJIHdpbGwgcHJhaXNlIHRoZWU7IGZvciBJIGFtIGZlYXJmdWxseSBhbmQgd29uZGVyZnVsbHkgbWFkZTogbWFydmVsbG91cyBhcmUgdGh5IHdvcmtzOyBhbmQgdGhhdCBteSBzb3VsIGtub3dldGggcmlnaHQgd2VsbC4KTXkgc3Vic3RhbmNlIHdhcyBub3QgaGlkIGZyb20gdGhlZSwgd2hlbiBJIHdhcyBtYWRlIGluIHNlY3JldCwgYW5kIGN1cmlvdXNseSB3cm91Z2h0IGluIHRoZSBsb3dlc3QgcGFydHMgb2YgdGhlIGVhcnRoLgpUaGluZSBleWVzIGRpZCBzZWUgbXkgc3Vic3RhbmNlLCB5ZXQgYmVpbmcgdW5wZXJmZWN0OyBhbmQgaW4gdGh5IGJvb2sgYWxsIG15IG1lbWJlcnMgd2VyZSB3cml0dGVuLCB3aGljaCBpbiBjb250aW51YW5jZSB3ZXJlIGZhc2hpb25lZCwgd2hlbiBhcyB5ZXQgdGhlcmUgd2FzIG5vbmUgb2YgdGhlbS4KSG93IHByZWNpb3VzIGFsc28gYXJlIHRoeSB0aG91Z2h0cyB1bnRvIG1lLCBPIEdvZCEgaG93IGdyZWF0IGlzIHRoZSBzdW0gb2YgdGhlbSEKSWYgSSBzaG91bGQgY291bnQgdGhlbSwgdGhleSBhcmUgbW9yZSBpbiBudW1iZXIgdGhhbiB0aGUgc2FuZDogd2hlbiBJIGF3YWtlLCBJIGFtIHN0aWxsIHdpdGggdGhlZS4KU3VyZWx5IHRob3Ugd2lsdCBzbGF5IHRoZSB3aWNrZWQsIE8gR29kOiBkZXBhcnQgZnJvbSBtZSB0aGVyZWZvcmUsIHllIGJsb29keSBtZW4uCkZvciB0aGV5IHNwZWFrIGFnYWluc3QgdGhlZSB3aWNrZWRseSwgYW5kIHRoaW5lIGVuZW1pZXMgdGFrZSB0aHkgbmFtZSBpbiB2YWluLgpEbyBub3QgSSBoYXRlIHRoZW0sIE8gTE9SRCwgdGhhdCBoYXRlIHRoZWU/IGFuZCBhbSBub3QgSSBncmlldmVkIHdpdGggdGhvc2UgdGhhdCByaXNlIHVwIGFnYWluc3QgdGhlZT8KSSBoYXRlIHRoZW0gd2l0aCBwZXJmZWN0IGhhdHJlZDogSSBjb3VudCB0aGVtIG1pbmUgZW5lbWllcy4KU2VhcmNoIG1lLCBPIEdvZCwgYW5kIGtub3cgbXkgaGVhcnQ6IHRyeSBtZSwgYW5kIGtub3cgbXkgdGhvdWdodHM6CkFuZCBzZWUgaWYgdGhlcmUgYmUgYW55IHdpY2tlZCB3YXkgaW4gbWUsIGFuZCBsZWFkIG1lIGluIHRoZSB3YXkgZXZlcmxhc3RpbmcuCkRlbGl2ZXIgbWUsIE8gTE9SRCwgZnJvbSB0aGUgZXZpbCBtYW46IHByZXNlcnZlIG1lIGZyb20gdGhlIHZpb2xlbnQgbWFuOwpXaGljaCBpbWFnaW5lIG1pc2NoaWVmcyBpbiB0aGVpciBoZWFydDsgY29udGludWFsbHkgYXJlIHRoZXkgZ2F0aGVyZWQgdG9nZXRoZXIgZm9yIHdhci4KVGhleSBoYXZlIHNoYXJwZW5lZCB0aGVpciB0b25ndWVzIGxpa2UgYSBzZXJwZW50OyBhZGRlcnMnIHBvaXNvbiBpcyB1bmRlciB0aGVpciBsaXBzLiBTZWxhaC4KS2VlcCBtZSwgTyBMT1JELCBmcm9tIHRoZSBoYW5kcyBvZiB0aGUgd2lja2VkOyBwcmVzZXJ2ZSBtZSBmcm9tIHRoZSB2aW9sZW50IG1hbjsgd2hvIGhhdmUgcHVycG9zZWQgdG8gb3ZlcnRocm93IG15IGdvaW5ncy4KVGhlIHByb3VkIGhhdmUgaGlkIGEgc25hcmUgZm9yIG1lLCBhbmQgY29yZHM7IHRoZXkgaGF2ZSBzcHJlYWQgYSBuZXQgYnkgdGhlIHdheXNpZGU7IHRoZXkgaGF2ZSBzZXQgZ2lucyBmb3IgbWUuIFNlbGFoLgpJIHNhaWQgdW50byB0aGUgTE9SRCwgVGhvdSBhcnQgbXkgR29kOiBoZWFyIHRoZSB2b2ljZSBvZiBteSBzdXBwbGljYXRpb25zLCBPIExPUkQuCk8gR09EIHRoZSBMb3JkLCB0aGUgc3RyZW5ndGggb2YgbXkgc2FsdmF0aW9uLCB0aG91IGhhc3QgY292ZXJlZCBteSBoZWFkIGluIHRoZSBkYXkgb2YgYmF0dGxlLgpHcmFudCBub3QsIE8gTE9SRCwgdGhlIGRlc2lyZXMgb2YgdGhlIHdpY2tlZDogZnVydGhlciBub3QgaGlzIHdpY2tlZCBkZXZpY2U7IGxlc3QgdGhleSBleGFsdCB0aGVtc2VsdmVzLiBTZWxhaC4KQXMgZm9yIHRoZSBoZWFkIG9mIHRob3NlIHRoYXQgY29tcGFzcyBtZSBhYm91dCwgbGV0IHRoZSBtaXNjaGllZiBvZiB0aGVpciBvd24gbGlwcyBjb3ZlciB0aGVtLgpMZXQgYnVybmluZyBjb2FscyBmYWxsIHVwb24gdGhlbTogbGV0IHRoZW0gYmUgY2FzdCBpbnRvIHRoZSBmaXJlOyBpbnRvIGRlZXAgcGl0cywgdGhhdCB0aGV5IHJpc2Ugbm90IHVwIGFnYWluLgpMZXQgbm90IGFuIGV2aWwgc3BlYWtlciBiZSBlc3RhYmxpc2hlZCBpbiB0aGUgZWFydGg6IGV2aWwgc2hhbGwgaHVudCB0aGUgdmlvbGVudCBtYW4gdG8gb3ZlcnRocm93IGhpbS4KSSBrbm93IHRoYXQgdGhlIExPUkQgd2lsbCBtYWludGFpbiB0aGUgY2F1c2Ugb2YgdGhlIGFmZmxpY3RlZCwgYW5kIHRoZSByaWdodCBvZiB0aGUgcG9vci4KU3VyZWx5IHRoZSByaWdodGVvdXMgc2hhbGwgZ2l2ZSB0aGFua3MgdW50byB0aHkgbmFtZTogdGhlIHVwcmlnaHQgc2hhbGwgZHdlbGwgaW4gdGh5IHByZXNlbmNlLgpMb3JkLCBJIGNyeSB1bnRvIHRoZWU6IG1ha2UgaGFzdGUgdW50byBtZTsgZ2l2ZSBlYXIgdW50byBteSB2b2ljZSwgd2hlbiBJIGNyeSB1bnRvIHRoZWUuCkxldCBteSBwcmF5ZXIgYmUgc2V0IGZvcnRoIGJlZm9yZSB0aGVlIGFzIGluY2Vuc2U7IGFuZCB0aGUgbGlmdGluZyB1cCBvZiBteSBoYW5kcyBhcyB0aGUgZXZlbmluZyBzYWNyaWZpY2UuClNldCBhIHdhdGNoLCBPIExPUkQsIGJlZm9yZSBteSBtb3V0aDsga2VlcCB0aGUgZG9vciBvZiBteSBsaXBzLgpJbmNsaW5lIG5vdCBteSBoZWFydCB0byBhbnkgZXZpbCB0aGluZywgdG8gcHJhY3Rpc2Ugd2lja2VkIHdvcmtzIHdpdGggbWVuIHRoYXQgd29yayBpbmlxdWl0eTogYW5kIGxldCBtZSBub3QgZWF0IG9mIHRoZWlyIGRhaW50aWVzLgpMZXQgdGhlIHJpZ2h0ZW91cyBzbWl0ZSBtZTsgaXQgc2hhbGwgYmUgYSBraW5kbmVzczogYW5kIGxldCBoaW0gcmVwcm92ZSBtZTsgaXQgc2hhbGwgYmUgYW4gZXhjZWxsZW50IG9pbCwgd2hpY2ggc2hhbGwgbm90IGJyZWFrIG15IGhlYWQ6IGZvciB5ZXQgbXkgcHJheWVyIGFsc28gc2hhbGwgYmUgaW4gdGhlaXIgY2FsYW1pdGllcy4KV2hlbiB0aGVpciBqdWRnZXMgYXJlIG92ZXJ0aHJvd24gaW4gc3RvbnkgcGxhY2VzLCB0aGV5IHNoYWxsIGhlYXIgbXkgd29yZHM7IGZvciB0aGV5IGFyZSBzd2VldC4KT3VyIGJvbmVzIGFyZSBzY2F0dGVyZWQgYXQgdGhlIGdyYXZlJ3MgbW91dGgsIGFzIHdoZW4gb25lIGN1dHRldGggYW5kIGNsZWF2ZXRoIHdvb2QgdXBvbiB0aGUgZWFydGguCkJ1dCBtaW5lIGV5ZXMgYXJlIHVudG8gdGhlZSwgTyBHT0QgdGhlIExvcmQ6IGluIHRoZWUgaXMgbXkgdHJ1c3Q7IGxlYXZlIG5vdCBteSBzb3VsIGRlc3RpdHV0ZS4KS2VlcCBtZSBmcm9tIHRoZSBzbmFyZXMgd2hpY2ggdGhleSBoYXZlIGxhaWQgZm9yIG1lLCBhbmQgdGhlIGdpbnMgb2YgdGhlIHdvcmtlcnMgb2YgaW5pcXVpdHkuCkxldCB0aGUgd2lja2VkIGZhbGwgaW50byB0aGVpciBvd24gbmV0cywgd2hpbHN0IHRoYXQgSSB3aXRoYWwgZXNjYXBlLgpJIGNyaWVkIHVudG8gdGhlIExPUkQgd2l0aCBteSB2b2ljZTsgd2l0aCBteSB2b2ljZSB1bnRvIHRoZSBMT1JEIGRpZCBJIG1ha2UgbXkgc3VwcGxpY2F0aW9uLgpJIHBvdXJlZCBvdXQgbXkgY29tcGxhaW50IGJlZm9yZSBoaW07IEkgc2hld2VkIGJlZm9yZSBoaW0gbXkgdHJvdWJsZS4KV2hlbiBteSBzcGlyaXQgd2FzIG92ZXJ3aGVsbWVkIHdpdGhpbiBtZSwgdGhlbiB0aG91IGtuZXdlc3QgbXkgcGF0aC4gSW4gdGhlIHdheSB3aGVyZWluIEkgd2Fsa2VkIGhhdmUgdGhleSBwcml2aWx5IGxhaWQgYSBzbmFyZSBmb3IgbWUuCkkgbG9va2VkIG9uIG15IHJpZ2h0IGhhbmQsIGFuZCBiZWhlbGQsIGJ1dCB0aGVyZSB3YXMgbm8gbWFuIHRoYXQgd291bGQga25vdyBtZTogcmVmdWdlIGZhaWxlZCBtZTsgbm8gbWFuIGNhcmVkIGZvciBteSBzb3VsLgpJIGNyaWVkIHVudG8gdGhlZSwgTyBMT1JEOiBJIHNhaWQsIFRob3UgYXJ0IG15IHJlZnVnZSBhbmQgbXkgcG9ydGlvbiBpbiB0aGUgbGFuZCBvZiB0aGUgbGl2aW5nLgpBdHRlbmQgdW50byBteSBjcnk7IGZvciBJIGFtIGJyb3VnaHQgdmVyeSBsb3c6IGRlbGl2ZXIgbWUgZnJvbSBteSBwZXJzZWN1dG9yczsgZm9yIHRoZXkgYXJlIHN0cm9uZ2VyIHRoYW4gSS4KQnJpbmcgbXkgc291bCBvdXQgb2YgcHJpc29uLCB0aGF0IEkgbWF5IHByYWlzZSB0aHkgbmFtZTogdGhlIHJpZ2h0ZW91cyBzaGFsbCBjb21wYXNzIG1lIGFib3V0OyBmb3IgdGhvdSBzaGFsdCBkZWFsIGJvdW50aWZ1bGx5IHdpdGggbWUuCkhlYXIgbXkgcHJheWVyLCBPIExPUkQsIGdpdmUgZWFyIHRvIG15IHN1cHBsaWNhdGlvbnM6IGluIHRoeSBmYWl0aGZ1bG5lc3MgYW5zd2VyIG1lLCBhbmQgaW4gdGh5IHJpZ2h0ZW91c25lc3MuCkFuZCBlbnRlciBub3QgaW50byBqdWRnbWVudCB3aXRoIHRoeSBzZXJ2YW50OiBmb3IgaW4gdGh5IHNpZ2h0IHNoYWxsIG5vIG1hbiBsaXZpbmcgYmUganVzdGlmaWVkLgpGb3IgdGhlIGVuZW15IGhhdGggcGVyc2VjdXRlZCBteSBzb3VsOyBoZSBoYXRoIHNtaXR0ZW4gbXkgbGlmZSBkb3duIHRvIHRoZSBncm91bmQ7IGhlIGhhdGggbWFkZSBtZSB0byBkd2VsbCBpbiBkYXJrbmVzcywgYXMgdGhvc2UgdGhhdCBoYXZlIGJlZW4gbG9uZyBkZWFkLgpUaGVyZWZvcmUgaXMgbXkgc3Bpcml0IG92ZXJ3aGVsbWVkIHdpdGhpbiBtZTsgbXkgaGVhcnQgd2l0aGluIG1lIGlzIGRlc29sYXRlLgpJIHJlbWVtYmVyIHRoZSBkYXlzIG9mIG9sZDsgSSBtZWRpdGF0ZSBvbiBhbGwgdGh5IHdvcmtzOyBJIG11c2Ugb24gdGhlIHdvcmsgb2YgdGh5IGhhbmRzLgpJIHN0cmV0Y2ggZm9ydGggbXkgaGFuZHMgdW50byB0aGVlOiBteSBzb3VsIHRoaXJzdGV0aCBhZnRlciB0aGVlLCBhcyBhIHRoaXJzdHkgbGFuZC4gU2VsYWguCkhlYXIgbWUgc3BlZWRpbHksIE8gTE9SRDogbXkgc3Bpcml0IGZhaWxldGg6IGhpZGUgbm90IHRoeSBmYWNlIGZyb20gbWUsIGxlc3QgSSBiZSBsaWtlIHVudG8gdGhlbSB0aGF0IGdvIGRvd24gaW50byB0aGUgcGl0LgpDYXVzZSBtZSB0byBoZWFyIHRoeSBsb3ZpbmdraW5kbmVzcyBpbiB0aGUgbW9ybmluZzsgZm9yIGluIHRoZWUgZG8gSSB0cnVzdDogY2F1c2UgbWUgdG8ga25vdyB0aGUgd2F5IHdoZXJlaW4gSSBzaG91bGQgd2FsazsgZm9yIEkgbGlmdCB1cCBteSBzb3VsIHVudG8gdGhlZS4KRGVsaXZlciBtZSwgTyBMT1JELCBmcm9tIG1pbmUgZW5lbWllczogSSBmbGVlIHVudG8gdGhlZSB0byBoaWRlIG1lLgpUZWFjaCBtZSB0byBkbyB0aHkgd2lsbDsgZm9yIHRob3UgYXJ0IG15IEdvZDogdGh5IHNwaXJpdCBpcyBnb29kOyBsZWFkIG1lIGludG8gdGhlIGxhbmQgb2YgdXByaWdodG5lc3MuClF1aWNrZW4gbWUsIE8gTE9SRCwgZm9yIHRoeSBuYW1lJ3Mgc2FrZTogZm9yIHRoeSByaWdodGVvdXNuZXNzJyBzYWtlIGJyaW5nIG15IHNvdWwgb3V0IG9mIHRyb3VibGUuCkFuZCBvZiB0aHkgbWVyY3kgY3V0IG9mZiBtaW5lIGVuZW1pZXMsIGFuZCBkZXN0cm95IGFsbCB0aGVtIHRoYXQgYWZmbGljdCBteSBzb3VsOiBmb3IgSSBhbSB0aHkgc2VydmFudC4KQmxlc3NlZCBiZSB0aGUgTE9SRCBteSBzdHJlbmd0aCB3aGljaCB0ZWFjaGV0aCBteSBoYW5kcyB0byB3YXIsIGFuZCBteSBmaW5nZXJzIHRvIGZpZ2h0OgpNeSBnb29kbmVzcywgYW5kIG15IGZvcnRyZXNzOyBteSBoaWdoIHRvd2VyLCBhbmQgbXkgZGVsaXZlcmVyOyBteSBzaGllbGQsIGFuZCBoZSBpbiB3aG9tIEkgdHJ1c3Q7IHdobyBzdWJkdWV0aCBteSBwZW9wbGUgdW5kZXIgbWUuCkxPUkQsIHdoYXQgaXMgbWFuLCB0aGF0IHRob3UgdGFrZXN0IGtub3dsZWRnZSBvZiBoaW0hIG9yIHRoZSBzb24gb2YgbWFuLCB0aGF0IHRob3UgbWFrZXN0IGFjY291bnQgb2YgaGltIQpNYW4gaXMgbGlrZSB0byB2YW5pdHk6IGhpcyBkYXlzIGFyZSBhcyBhIHNoYWRvdyB0aGF0IHBhc3NldGggYXdheS4KQm93IHRoeSBoZWF2ZW5zLCBPIExPUkQsIGFuZCBjb21lIGRvd246IHRvdWNoIHRoZSBtb3VudGFpbnMsIGFuZCB0aGV5IHNoYWxsIHNtb2tlLgpDYXN0IGZvcnRoIGxpZ2h0bmluZywgYW5kIHNjYXR0ZXIgdGhlbTogc2hvb3Qgb3V0IHRoaW5lIGFycm93cywgYW5kIGRlc3Ryb3kgdGhlbS4KU2VuZCB0aGluZSBoYW5kIGZyb20gYWJvdmU7IHJpZCBtZSwgYW5kIGRlbGl2ZXIgbWUgb3V0IG9mIGdyZWF0IHdhdGVycywgZnJvbSB0aGUgaGFuZCBvZiBzdHJhbmdlIGNoaWxkcmVuOwpXaG9zZSBtb3V0aCBzcGVha2V0aCB2YW5pdHksIGFuZCB0aGVpciByaWdodCBoYW5kIGlzIGEgcmlnaHQgaGFuZCBvZiBmYWxzZWhvb2QuCkkgd2lsbCBzaW5nIGEgbmV3IHNvbmcgdW50byB0aGVlLCBPIEdvZDogdXBvbiBhIHBzYWx0ZXJ5IGFuZCBhbiBpbnN0cnVtZW50IG9mIHRlbiBzdHJpbmdzIHdpbGwgSSBzaW5nIHByYWlzZXMgdW50byB0aGVlLgpJdCBpcyBoZSB0aGF0IGdpdmV0aCBzYWx2YXRpb24gdW50byBraW5nczogd2hvIGRlbGl2ZXJldGggRGF2aWQgaGlzIHNlcnZhbnQgZnJvbSB0aGUgaHVydGZ1bCBzd29yZC4KUmlkIG1lLCBhbmQgZGVsaXZlciBtZSBmcm9tIHRoZSBoYW5kIG9mIHN0cmFuZ2UgY2hpbGRyZW4sIHdob3NlIG1vdXRoIHNwZWFrZXRoIHZhbml0eSwgYW5kIHRoZWlyIHJpZ2h0IGhhbmQgaXMgYSByaWdodCBoYW5kIG9mIGZhbHNlaG9vZDoKVGhhdCBvdXIgc29ucyBtYXkgYmUgYXMgcGxhbnRzIGdyb3duIHVwIGluIHRoZWlyIHlvdXRoOyB0aGF0IG91ciBkYXVnaHRlcnMgbWF5IGJlIGFzIGNvcm5lciBzdG9uZXMsIHBvbGlzaGVkIGFmdGVyIHRoZSBzaW1pbGl0dWRlIG9mIGEgcGFsYWNlOgpUaGF0IG91ciBnYXJuZXJzIG1heSBiZSBmdWxsLCBhZmZvcmRpbmcgYWxsIG1hbm5lciBvZiBzdG9yZTogdGhhdCBvdXIgc2hlZXAgbWF5IGJyaW5nIGZvcnRoIHRob3VzYW5kcyBhbmQgdGVuIHRob3VzYW5kcyBpbiBvdXIgc3RyZWV0czoKVGhhdCBvdXIgb3hlbiBtYXkgYmUgc3Ryb25nIHRvIGxhYm91cjsgdGhhdCB0aGVyZSBiZSBubyBicmVha2luZyBpbiwgbm9yIGdvaW5nIG91dDsgdGhhdCB0aGVyZSBiZSBubyBjb21wbGFpbmluZyBpbiBvdXIgc3RyZWV0cy4KSGFwcHkgaXMgdGhhdCBwZW9wbGUsIHRoYXQgaXMgaW4gc3VjaCBhIGNhc2U6IHllYSwgaGFwcHkgaXMgdGhhdCBwZW9wbGUsIHdob3NlIEdvZCBpcyB0aGUgTE9SRC4KSSB3aWxsIGV4dG9sIHRoZWUsIG15IEdvZCwgTyBraW5nOyBhbmQgSSB3aWxsIGJsZXNzIHRoeSBuYW1lIGZvciBldmVyIGFuZCBldmVyLgpFdmVyeSBkYXkgd2lsbCBJIGJsZXNzIHRoZWU7IGFuZCBJIHdpbGwgcHJhaXNlIHRoeSBuYW1lIGZvciBldmVyIGFuZCBldmVyLgpHcmVhdCBpcyB0aGUgTE9SRCwgYW5kIGdyZWF0bHkgdG8gYmUgcHJhaXNlZDsgYW5kIGhpcyBncmVhdG5lc3MgaXMgdW5zZWFyY2hhYmxlLgpPbmUgZ2VuZXJhdGlvbiBzaGFsbCBwcmFpc2UgdGh5IHdvcmtzIHRvIGFub3RoZXIsIGFuZCBzaGFsbCBkZWNsYXJlIHRoeSBtaWdodHkgYWN0cy4KSSB3aWxsIHNwZWFrIG9mIHRoZSBnbG9yaW91cyBob25vdXIgb2YgdGh5IG1hamVzdHksIGFuZCBvZiB0aHkgd29uZHJvdXMgd29ya3MuCkFuZCBtZW4gc2hhbGwgc3BlYWsgb2YgdGhlIG1pZ2h0IG9mIHRoeSB0ZXJyaWJsZSBhY3RzOiBhbmQgSSB3aWxsIGRlY2xhcmUgdGh5IGdyZWF0bmVzcy4KVGhleSBzaGFsbCBhYnVuZGFudGx5IHV0dGVyIHRoZSBtZW1vcnkgb2YgdGh5IGdyZWF0IGdvb2RuZXNzLCBhbmQgc2hhbGwgc2luZyBvZiB0aHkgcmlnaHRlb3VzbmVzcy4KVGhlIExPUkQgaXMgZ3JhY2lvdXMsIGFuZCBmdWxsIG9mIGNvbXBhc3Npb247IHNsb3cgdG8gYW5nZXIsIGFuZCBvZiBncmVhdCBtZXJjeS4KVGhlIExPUkQgaXMgZ29vZCB0byBhbGw6IGFuZCBoaXMgdGVuZGVyIG1lcmNpZXMgYXJlIG92ZXIgYWxsIGhpcyB3b3Jrcy4KQWxsIHRoeSB3b3JrcyBzaGFsbCBwcmFpc2UgdGhlZSwgTyBMT1JEOyBhbmQgdGh5IHNhaW50cyBzaGFsbCBibGVzcyB0aGVlLgpUaGV5IHNoYWxsIHNwZWFrIG9mIHRoZSBnbG9yeSBvZiB0aHkga2luZ2RvbSwgYW5kIHRhbGsgb2YgdGh5IHBvd2VyOwpUbyBtYWtlIGtub3duIHRvIHRoZSBzb25zIG9mIG1lbiBoaXMgbWlnaHR5IGFjdHMsIGFuZCB0aGUgZ2xvcmlvdXMgbWFqZXN0eSBvZiBoaXMga2luZ2RvbS4KVGh5IGtpbmdkb20gaXMgYW4gZXZlcmxhc3Rpbmcga2luZ2RvbSwgYW5kIHRoeSBkb21pbmlvbiBlbmR1cmV0aCB0aHJvdWdob3V0IGFsbCBnZW5lcmF0aW9ucy4KVGhlIExPUkQgdXBob2xkZXRoIGFsbCB0aGF0IGZhbGwsIGFuZCByYWlzZXRoIHVwIGFsbCB0aG9zZSB0aGF0IGJlIGJvd2VkIGRvd24uClRoZSBleWVzIG9mIGFsbCB3YWl0IHVwb24gdGhlZTsgYW5kIHRob3UgZ2l2ZXN0IHRoZW0gdGhlaXIgbWVhdCBpbiBkdWUgc2Vhc29uLgpUaG91IG9wZW5lc3QgdGhpbmUgaGFuZCwgYW5kIHNhdGlzZmllc3QgdGhlIGRlc2lyZSBvZiBldmVyeSBsaXZpbmcgdGhpbmcuClRoZSBMT1JEIGlzIHJpZ2h0ZW91cyBpbiBhbGwgaGlzIHdheXMsIGFuZCBob2x5IGluIGFsbCBoaXMgd29ya3MuClRoZSBMT1JEIGlzIG5pZ2ggdW50byBhbGwgdGhlbSB0aGF0IGNhbGwgdXBvbiBoaW0sIHRvIGFsbCB0aGF0IGNhbGwgdXBvbiBoaW0gaW4gdHJ1dGguCkhlIHdpbGwgZnVsZmlsIHRoZSBkZXNpcmUgb2YgdGhlbSB0aGF0IGZlYXIgaGltOiBoZSBhbHNvIHdpbGwgaGVhciB0aGVpciBjcnksIGFuZCB3aWxsIHNhdmUgdGhlbS4KVGhlIExPUkQgcHJlc2VydmV0aCBhbGwgdGhlbSB0aGF0IGxvdmUgaGltOiBidXQgYWxsIHRoZSB3aWNrZWQgd2lsbCBoZSBkZXN0cm95LgpNeSBtb3V0aCBzaGFsbCBzcGVhayB0aGUgcHJhaXNlIG9mIHRoZSBMT1JEOiBhbmQgbGV0IGFsbCBmbGVzaCBibGVzcyBoaXMgaG9seSBuYW1lIGZvciBldmVyIGFuZCBldmVyLgpQcmFpc2UgeWUgdGhlIExPUkQuIFByYWlzZSB0aGUgTE9SRCwgTyBteSBzb3VsLgpXaGlsZSBJIGxpdmUgd2lsbCBJIHByYWlzZSB0aGUgTE9SRDogSSB3aWxsIHNpbmcgcHJhaXNlcyB1bnRvIG15IEdvZCB3aGlsZSBJIGhhdmUgYW55IGJlaW5nLgpQdXQgbm90IHlvdXIgdHJ1c3QgaW4gcHJpbmNlcywgbm9yIGluIHRoZSBzb24gb2YgbWFuLCBpbiB3aG9tIHRoZXJlIGlzIG5vIGhlbHAuCkhpcyBicmVhdGggZ29ldGggZm9ydGgsIGhlIHJldHVybmV0aCB0byBoaXMgZWFydGg7IGluIHRoYXQgdmVyeSBkYXkgaGlzIHRob3VnaHRzIHBlcmlzaC4KSGFwcHkgaXMgaGUgdGhhdCBoYXRoIHRoZSBHb2Qgb2YgSmFjb2IgZm9yIGhpcyBoZWxwLCB3aG9zZSBob3BlIGlzIGluIHRoZSBMT1JEIGhpcyBHb2Q6CldoaWNoIG1hZGUgaGVhdmVuLCBhbmQgZWFydGgsIHRoZSBzZWEsIGFuZCBhbGwgdGhhdCB0aGVyZWluIGlzOiB3aGljaCBrZWVwZXRoIHRydXRoIGZvciBldmVyOgpXaGljaCBleGVjdXRldGgganVkZ21lbnQgZm9yIHRoZSBvcHByZXNzZWQ6IHdoaWNoIGdpdmV0aCBmb29kIHRvIHRoZSBodW5ncnkuIFRoZSBMT1JEIGxvb3NldGggdGhlIHByaXNvbmVyczoKVGhlIExPUkQgb3BlbmV0aCB0aGUgZXllcyBvZiB0aGUgYmxpbmQ6IHRoZSBMT1JEIHJhaXNldGggdGhlbSB0aGF0IGFyZSBib3dlZCBkb3duOiB0aGUgTE9SRCBsb3ZldGggdGhlIHJpZ2h0ZW91czoKVGhlIExPUkQgcHJlc2VydmV0aCB0aGUgc3RyYW5nZXJzOyBoZSByZWxpZXZldGggdGhlIGZhdGhlcmxlc3MgYW5kIHdpZG93OiBidXQgdGhlIHdheSBvZiB0aGUgd2lja2VkIGhlIHR1cm5ldGggdXBzaWRlIGRvd24uClRoZSBMT1JEIHNoYWxsIHJlaWduIGZvciBldmVyLCBldmVuIHRoeSBHb2QsIE8gWmlvbiwgdW50byBhbGwgZ2VuZXJhdGlvbnMuIFByYWlzZSB5ZSB0aGUgTE9SRC4KUHJhaXNlIHllIHRoZSBMT1JEOiBmb3IgaXQgaXMgZ29vZCB0byBzaW5nIHByYWlzZXMgdW50byBvdXIgR29kOyBmb3IgaXQgaXMgcGxlYXNhbnQ7IGFuZCBwcmFpc2UgaXMgY29tZWx5LgpUaGUgTE9SRCBkb3RoIGJ1aWxkIHVwIEplcnVzYWxlbTogaGUgZ2F0aGVyZXRoIHRvZ2V0aGVyIHRoZSBvdXRjYXN0cyBvZiBJc3JhZWwuCkhlIGhlYWxldGggdGhlIGJyb2tlbiBpbiBoZWFydCwgYW5kIGJpbmRldGggdXAgdGhlaXIgd291bmRzLgpIZSB0ZWxsZXRoIHRoZSBudW1iZXIgb2YgdGhlIHN0YXJzOyBoZSBjYWxsZXRoIHRoZW0gYWxsIGJ5IHRoZWlyIG5hbWVzLgpHcmVhdCBpcyBvdXIgTG9yZCwgYW5kIG9mIGdyZWF0IHBvd2VyOiBoaXMgdW5kZXJzdGFuZGluZyBpcyBpbmZpbml0ZS4KVGhlIExPUkQgbGlmdGV0aCB1cCB0aGUgbWVlazogaGUgY2FzdGV0aCB0aGUgd2lja2VkIGRvd24gdG8gdGhlIGdyb3VuZC4KU2luZyB1bnRvIHRoZSBMT1JEIHdpdGggdGhhbmtzZ2l2aW5nOyBzaW5nIHByYWlzZSB1cG9uIHRoZSBoYXJwIHVudG8gb3VyIEdvZDoKV2hvIGNvdmVyZXRoIHRoZSBoZWF2ZW4gd2l0aCBjbG91ZHMsIHdobyBwcmVwYXJldGggcmFpbiBmb3IgdGhlIGVhcnRoLCB3aG8gbWFrZXRoIGdyYXNzIHRvIGdyb3cgdXBvbiB0aGUgbW91bnRhaW5zLgpIZSBnaXZldGggdG8gdGhlIGJlYXN0IGhpcyBmb29kLCBhbmQgdG8gdGhlIHlvdW5nIHJhdmVucyB3aGljaCBjcnkuCkhlIGRlbGlnaHRldGggbm90IGluIHRoZSBzdHJlbmd0aCBvZiB0aGUgaG9yc2U6IGhlIHRha2V0aCBub3QgcGxlYXN1cmUgaW4gdGhlIGxlZ3Mgb2YgYSBtYW4uClRoZSBMT1JEIHRha2V0aCBwbGVhc3VyZSBpbiB0aGVtIHRoYXQgZmVhciBoaW0sIGluIHRob3NlIHRoYXQgaG9wZSBpbiBoaXMgbWVyY3kuClByYWlzZSB0aGUgTE9SRCwgTyBKZXJ1c2FsZW07IHByYWlzZSB0aHkgR29kLCBPIFppb24uCkZvciBoZSBoYXRoIHN0cmVuZ3RoZW5lZCB0aGUgYmFycyBvZiB0aHkgZ2F0ZXM7IGhlIGhhdGggYmxlc3NlZCB0aHkgY2hpbGRyZW4gd2l0aGluIHRoZWUuCkhlIG1ha2V0aCBwZWFjZSBpbiB0aHkgYm9yZGVycywgYW5kIGZpbGxldGggdGhlZSB3aXRoIHRoZSBmaW5lc3Qgb2YgdGhlIHdoZWF0LgpIZSBzZW5kZXRoIGZvcnRoIGhpcyBjb21tYW5kbWVudCB1cG9uIGVhcnRoOiBoaXMgd29yZCBydW5uZXRoIHZlcnkgc3dpZnRseS4KSGUgZ2l2ZXRoIHNub3cgbGlrZSB3b29sOiBoZSBzY2F0dGVyZXRoIHRoZSBob2FyZnJvc3QgbGlrZSBhc2hlcy4KSGUgY2FzdGV0aCBmb3J0aCBoaXMgaWNlIGxpa2UgbW9yc2Vsczogd2hvIGNhbiBzdGFuZCBiZWZvcmUgaGlzIGNvbGQ/CkhlIHNlbmRldGggb3V0IGhpcyB3b3JkLCBhbmQgbWVsdGV0aCB0aGVtOiBoZSBjYXVzZXRoIGhpcyB3aW5kIHRvIGJsb3csIGFuZCB0aGUgd2F0ZXJzIGZsb3cuCkhlIHNoZXdldGggaGlzIHdvcmQgdW50byBKYWNvYiwgaGlzIHN0YXR1dGVzIGFuZCBoaXMganVkZ21lbnRzIHVudG8gSXNyYWVsLgpIZSBoYXRoIG5vdCBkZWFsdCBzbyB3aXRoIGFueSBuYXRpb246IGFuZCBhcyBmb3IgaGlzIGp1ZGdtZW50cywgdGhleSBoYXZlIG5vdCBrbm93biB0aGVtLiBQcmFpc2UgeWUgdGhlIExPUkQuClByYWlzZSB5ZSB0aGUgTE9SRC4gUHJhaXNlIHllIHRoZSBMT1JEIGZyb20gdGhlIGhlYXZlbnM6IHByYWlzZSBoaW0gaW4gdGhlIGhlaWdodHMuClByYWlzZSB5ZSBoaW0sIGFsbCBoaXMgYW5nZWxzOiBwcmFpc2UgeWUgaGltLCBhbGwgaGlzIGhvc3RzLgpQcmFpc2UgeWUgaGltLCBzdW4gYW5kIG1vb246IHByYWlzZSBoaW0sIGFsbCB5ZSBzdGFycyBvZiBsaWdodC4KUHJhaXNlIGhpbSwgeWUgaGVhdmVucyBvZiBoZWF2ZW5zLCBhbmQgeWUgd2F0ZXJzIHRoYXQgYmUgYWJvdmUgdGhlIGhlYXZlbnMuCkxldCB0aGVtIHByYWlzZSB0aGUgbmFtZSBvZiB0aGUgTE9SRDogZm9yIGhlIGNvbW1hbmRlZCwgYW5kIHRoZXkgd2VyZSBjcmVhdGVkLgpIZSBoYXRoIGFsc28gc3RhYmxpc2hlZCB0aGVtIGZvciBldmVyIGFuZCBldmVyOiBoZSBoYXRoIG1hZGUgYSBkZWNyZWUgd2hpY2ggc2hhbGwgbm90IHBhc3MuClByYWlzZSB0aGUgTE9SRCBmcm9tIHRoZSBlYXJ0aCwgeWUgZHJhZ29ucywgYW5kIGFsbCBkZWVwczoKRmlyZSwgYW5kIGhhaWw7IHNub3csIGFuZCB2YXBvdXJzOyBzdG9ybXkgd2luZCBmdWxmaWxsaW5nIGhpcyB3b3JkOgpNb3VudGFpbnMsIGFuZCBhbGwgaGlsbHM7IGZydWl0ZnVsIHRyZWVzLCBhbmQgYWxsIGNlZGFyczoKQmVhc3RzLCBhbmQgYWxsIGNhdHRsZTsgY3JlZXBpbmcgdGhpbmdzLCBhbmQgZmx5aW5nIGZvd2w6CktpbmdzIG9mIHRoZSBlYXJ0aCwgYW5kIGFsbCBwZW9wbGU7IHByaW5jZXMsIGFuZCBhbGwganVkZ2VzIG9mIHRoZSBlYXJ0aDoKQm90aCB5b3VuZyBtZW4sIGFuZCBtYWlkZW5zOyBvbGQgbWVuLCBhbmQgY2hpbGRyZW46CkxldCB0aGVtIHByYWlzZSB0aGUgbmFtZSBvZiB0aGUgTE9SRDogZm9yIGhpcyBuYW1lIGFsb25lIGlzIGV4Y2VsbGVudDsgaGlzIGdsb3J5IGlzIGFib3ZlIHRoZSBlYXJ0aCBhbmQgaGVhdmVuLgpIZSBhbHNvIGV4YWx0ZXRoIHRoZSBob3JuIG9mIGhpcyBwZW9wbGUsIHRoZSBwcmFpc2Ugb2YgYWxsIGhpcyBzYWludHM7IGV2ZW4gb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgYSBwZW9wbGUgbmVhciB1bnRvIGhpbS4gUHJhaXNlIHllIHRoZSBMT1JELgpQcmFpc2UgeWUgdGhlIExPUkQuIFNpbmcgdW50byB0aGUgTE9SRCBhIG5ldyBzb25nLCBhbmQgaGlzIHByYWlzZSBpbiB0aGUgY29uZ3JlZ2F0aW9uIG9mIHNhaW50cy4KTGV0IElzcmFlbCByZWpvaWNlIGluIGhpbSB0aGF0IG1hZGUgaGltOiBsZXQgdGhlIGNoaWxkcmVuIG9mIFppb24gYmUgam95ZnVsIGluIHRoZWlyIEtpbmcuCkxldCB0aGVtIHByYWlzZSBoaXMgbmFtZSBpbiB0aGUgZGFuY2U6IGxldCB0aGVtIHNpbmcgcHJhaXNlcyB1bnRvIGhpbSB3aXRoIHRoZSB0aW1icmVsIGFuZCBoYXJwLgpGb3IgdGhlIExPUkQgdGFrZXRoIHBsZWFzdXJlIGluIGhpcyBwZW9wbGU6IGhlIHdpbGwgYmVhdXRpZnkgdGhlIG1lZWsgd2l0aCBzYWx2YXRpb24uCkxldCB0aGUgc2FpbnRzIGJlIGpveWZ1bCBpbiBnbG9yeTogbGV0IHRoZW0gc2luZyBhbG91ZCB1cG9uIHRoZWlyIGJlZHMuCkxldCB0aGUgaGlnaCBwcmFpc2VzIG9mIEdvZCBiZSBpbiB0aGVpciBtb3V0aCwgYW5kIGEgdHdvLWVkZ2VkIHN3b3JkIGluIHRoZWlyIGhhbmQ7ClRvIGV4ZWN1dGUgdmVuZ2VhbmNlIHVwb24gdGhlIGhlYXRoZW4sIGFuZCBwdW5pc2htZW50cyB1cG9uIHRoZSBwZW9wbGU7ClRvIGJpbmQgdGhlaXIga2luZ3Mgd2l0aCBjaGFpbnMsIGFuZCB0aGVpciBub2JsZXMgd2l0aCBmZXR0ZXJzIG9mIGlyb247ClRvIGV4ZWN1dGUgdXBvbiB0aGVtIHRoZSBqdWRnbWVudCB3cml0dGVuOiB0aGlzIGhvbm91ciBoYXZlIGFsbCBoaXMgc2FpbnRzLiBQcmFpc2UgeWUgdGhlIExPUkQuClByYWlzZSB5ZSB0aGUgTE9SRC4gUHJhaXNlIEdvZCBpbiBoaXMgc2FuY3R1YXJ5OiBwcmFpc2UgaGltIGluIHRoZSBmaXJtYW1lbnQgb2YgaGlzIHBvd2VyLgpQcmFpc2UgaGltIGZvciBoaXMgbWlnaHR5IGFjdHM6IHByYWlzZSBoaW0gYWNjb3JkaW5nIHRvIGhpcyBleGNlbGxlbnQgZ3JlYXRuZXNzLgpQcmFpc2UgaGltIHdpdGggdGhlIHNvdW5kIG9mIHRoZSB0cnVtcGV0OiBwcmFpc2UgaGltIHdpdGggdGhlIHBzYWx0ZXJ5IGFuZCBoYXJwLgpQcmFpc2UgaGltIHdpdGggdGhlIHRpbWJyZWwgYW5kIGRhbmNlOiBwcmFpc2UgaGltIHdpdGggc3RyaW5nZWQgaW5zdHJ1bWVudHMgYW5kIG9yZ2Fucy4KUHJhaXNlIGhpbSB1cG9uIHRoZSBsb3VkIGN5bWJhbHM6IHByYWlzZSBoaW0gdXBvbiB0aGUgaGlnaCBzb3VuZGluZyBjeW1iYWxzLgpMZXQgZXZlcnkgdGhpbmcgdGhhdCBoYXRoIGJyZWF0aCBwcmFpc2UgdGhlIExPUkQuIFByYWlzZSB5ZSB0aGUgTE9SRC4KVGhlIHByb3ZlcmJzIG9mIFNvbG9tb24gdGhlIHNvbiBvZiBEYXZpZCwga2luZyBvZiBJc3JhZWw7ClRvIGtub3cgd2lzZG9tIGFuZCBpbnN0cnVjdGlvbjsgdG8gcGVyY2VpdmUgdGhlIHdvcmRzIG9mIHVuZGVyc3RhbmRpbmc7ClRvIHJlY2VpdmUgdGhlIGluc3RydWN0aW9uIG9mIHdpc2RvbSwganVzdGljZSwgYW5kIGp1ZGdtZW50LCBhbmQgZXF1aXR5OwpUbyBnaXZlIHN1YnRpbHR5IHRvIHRoZSBzaW1wbGUsIHRvIHRoZSB5b3VuZyBtYW4ga25vd2xlZGdlIGFuZCBkaXNjcmV0aW9uLgpBIHdpc2UgbWFuIHdpbGwgaGVhciwgYW5kIHdpbGwgaW5jcmVhc2UgbGVhcm5pbmc7IGFuZCBhIG1hbiBvZiB1bmRlcnN0YW5kaW5nIHNoYWxsIGF0dGFpbiB1bnRvIHdpc2UgY291bnNlbHM6ClRvIHVuZGVyc3RhbmQgYSBwcm92ZXJiLCBhbmQgdGhlIGludGVycHJldGF0aW9uOyB0aGUgd29yZHMgb2YgdGhlIHdpc2UsIGFuZCB0aGVpciBkYXJrIHNheWluZ3MuClRoZSBmZWFyIG9mIHRoZSBMT1JEIGlzIHRoZSBiZWdpbm5pbmcgb2Yga25vd2xlZGdlOiBidXQgZm9vbHMgZGVzcGlzZSB3aXNkb20gYW5kIGluc3RydWN0aW9uLgpNeSBzb24sIGhlYXIgdGhlIGluc3RydWN0aW9uIG9mIHRoeSBmYXRoZXIsIGFuZCBmb3JzYWtlIG5vdCB0aGUgbGF3IG9mIHRoeSBtb3RoZXI6CkZvciB0aGV5IHNoYWxsIGJlIGFuIG9ybmFtZW50IG9mIGdyYWNlIHVudG8gdGh5IGhlYWQsIGFuZCBjaGFpbnMgYWJvdXQgdGh5IG5lY2suCk15IHNvbiwgaWYgc2lubmVycyBlbnRpY2UgdGhlZSwgY29uc2VudCB0aG91IG5vdC4KSWYgdGhleSBzYXksIENvbWUgd2l0aCB1cywgbGV0IHVzIGxheSB3YWl0IGZvciBibG9vZCwgbGV0IHVzIGx1cmsgcHJpdmlseSBmb3IgdGhlIGlubm9jZW50IHdpdGhvdXQgY2F1c2U6CkxldCB1cyBzd2FsbG93IHRoZW0gdXAgYWxpdmUgYXMgdGhlIGdyYXZlOyBhbmQgd2hvbGUsIGFzIHRob3NlIHRoYXQgZ28gZG93biBpbnRvIHRoZSBwaXQ6CldlIHNoYWxsIGZpbmQgYWxsIHByZWNpb3VzIHN1YnN0YW5jZSwgd2Ugc2hhbGwgZmlsbCBvdXIgaG91c2VzIHdpdGggc3BvaWw6CkNhc3QgaW4gdGh5IGxvdCBhbW9uZyB1czsgbGV0IHVzIGFsbCBoYXZlIG9uZSBwdXJzZToKTXkgc29uLCB3YWxrIG5vdCB0aG91IGluIHRoZSB3YXkgd2l0aCB0aGVtOyByZWZyYWluIHRoeSBmb290IGZyb20gdGhlaXIgcGF0aDoKRm9yIHRoZWlyIGZlZXQgcnVuIHRvIGV2aWwsIGFuZCBtYWtlIGhhc3RlIHRvIHNoZWQgYmxvb2QuClN1cmVseSBpbiB2YWluIHRoZSBuZXQgaXMgc3ByZWFkIGluIHRoZSBzaWdodCBvZiBhbnkgYmlyZC4KQW5kIHRoZXkgbGF5IHdhaXQgZm9yIHRoZWlyIG93biBibG9vZDsgdGhleSBsdXJrIHByaXZpbHkgZm9yIHRoZWlyIG93biBsaXZlcy4KU28gYXJlIHRoZSB3YXlzIG9mIGV2ZXJ5IG9uZSB0aGF0IGlzIGdyZWVkeSBvZiBnYWluOyB3aGljaCB0YWtldGggYXdheSB0aGUgbGlmZSBvZiB0aGUgb3duZXJzIHRoZXJlb2YuCldpc2RvbSBjcmlldGggd2l0aG91dDsgc2hlIHV0dGVyZXRoIGhlciB2b2ljZSBpbiB0aGUgc3RyZWV0czoKU2hlIGNyaWV0aCBpbiB0aGUgY2hpZWYgcGxhY2Ugb2YgY29uY291cnNlLCBpbiB0aGUgb3BlbmluZ3Mgb2YgdGhlIGdhdGVzOiBpbiB0aGUgY2l0eSBzaGUgdXR0ZXJldGggaGVyIHdvcmRzLCBzYXlpbmcsCkhvdyBsb25nLCB5ZSBzaW1wbGUgb25lcywgd2lsbCB5ZSBsb3ZlIHNpbXBsaWNpdHk/IGFuZCB0aGUgc2Nvcm5lcnMgZGVsaWdodCBpbiB0aGVpciBzY29ybmluZywgYW5kIGZvb2xzIGhhdGUga25vd2xlZGdlPwpUdXJuIHlvdSBhdCBteSByZXByb29mOiBiZWhvbGQsIEkgd2lsbCBwb3VyIG91dCBteSBzcGlyaXQgdW50byB5b3UsIEkgd2lsbCBtYWtlIGtub3duIG15IHdvcmRzIHVudG8geW91LgpCZWNhdXNlIEkgaGF2ZSBjYWxsZWQsIGFuZCB5ZSByZWZ1c2VkOyBJIGhhdmUgc3RyZXRjaGVkIG91dCBteSBoYW5kLCBhbmQgbm8gbWFuIHJlZ2FyZGVkOwpCdXQgeWUgaGF2ZSBzZXQgYXQgbm91Z2h0IGFsbCBteSBjb3Vuc2VsLCBhbmQgd291bGQgbm9uZSBvZiBteSByZXByb29mOgpJIGFsc28gd2lsbCBsYXVnaCBhdCB5b3VyIGNhbGFtaXR5OyBJIHdpbGwgbW9jayB3aGVuIHlvdXIgZmVhciBjb21ldGg7CldoZW4geW91ciBmZWFyIGNvbWV0aCBhcyBkZXNvbGF0aW9uLCBhbmQgeW91ciBkZXN0cnVjdGlvbiBjb21ldGggYXMgYSB3aGlybHdpbmQ7IHdoZW4gZGlzdHJlc3MgYW5kIGFuZ3Vpc2ggY29tZXRoIHVwb24geW91LgpUaGVuIHNoYWxsIHRoZXkgY2FsbCB1cG9uIG1lLCBidXQgSSB3aWxsIG5vdCBhbnN3ZXI7IHRoZXkgc2hhbGwgc2VlayBtZSBlYXJseSwgYnV0IHRoZXkgc2hhbGwgbm90IGZpbmQgbWU6CkZvciB0aGF0IHRoZXkgaGF0ZWQga25vd2xlZGdlLCBhbmQgZGlkIG5vdCBjaG9vc2UgdGhlIGZlYXIgb2YgdGhlIExPUkQ6ClRoZXkgd291bGQgbm9uZSBvZiBteSBjb3Vuc2VsOiB0aGV5IGRlc3Bpc2VkIGFsbCBteSByZXByb29mLgpUaGVyZWZvcmUgc2hhbGwgdGhleSBlYXQgb2YgdGhlIGZydWl0IG9mIHRoZWlyIG93biB3YXksIGFuZCBiZSBmaWxsZWQgd2l0aCB0aGVpciBvd24gZGV2aWNlcy4KRm9yIHRoZSB0dXJuaW5nIGF3YXkgb2YgdGhlIHNpbXBsZSBzaGFsbCBzbGF5IHRoZW0sIGFuZCB0aGUgcHJvc3Blcml0eSBvZiBmb29scyBzaGFsbCBkZXN0cm95IHRoZW0uCkJ1dCB3aG9zbyBoZWFya2VuZXRoIHVudG8gbWUgc2hhbGwgZHdlbGwgc2FmZWx5LCBhbmQgc2hhbGwgYmUgcXVpZXQgZnJvbSBmZWFyIG9mIGV2aWwuCk15IHNvbiwgaWYgdGhvdSB3aWx0IHJlY2VpdmUgbXkgd29yZHMsIGFuZCBoaWRlIG15IGNvbW1hbmRtZW50cyB3aXRoIHRoZWU7ClNvIHRoYXQgdGhvdSBpbmNsaW5lIHRoaW5lIGVhciB1bnRvIHdpc2RvbSwgYW5kIGFwcGx5IHRoaW5lIGhlYXJ0IHRvIHVuZGVyc3RhbmRpbmc7ClllYSwgaWYgdGhvdSBjcmllc3QgYWZ0ZXIga25vd2xlZGdlLCBhbmQgbGlmdGVzdCB1cCB0aHkgdm9pY2UgZm9yIHVuZGVyc3RhbmRpbmc7CklmIHRob3Ugc2Vla2VzdCBoZXIgYXMgc2lsdmVyLCBhbmQgc2VhcmNoZXN0IGZvciBoZXIgYXMgZm9yIGhpZCB0cmVhc3VyZXM7ClRoZW4gc2hhbHQgdGhvdSB1bmRlcnN0YW5kIHRoZSBmZWFyIG9mIHRoZSBMT1JELCBhbmQgZmluZCB0aGUga25vd2xlZGdlIG9mIEdvZC4KRm9yIHRoZSBMT1JEIGdpdmV0aCB3aXNkb206IG91dCBvZiBoaXMgbW91dGggY29tZXRoIGtub3dsZWRnZSBhbmQgdW5kZXJzdGFuZGluZy4KSGUgbGF5ZXRoIHVwIHNvdW5kIHdpc2RvbSBmb3IgdGhlIHJpZ2h0ZW91czogaGUgaXMgYSBidWNrbGVyIHRvIHRoZW0gdGhhdCB3YWxrIHVwcmlnaHRseS4KSGUga2VlcGV0aCB0aGUgcGF0aHMgb2YganVkZ21lbnQsIGFuZCBwcmVzZXJ2ZXRoIHRoZSB3YXkgb2YgaGlzIHNhaW50cy4KVGhlbiBzaGFsdCB0aG91IHVuZGVyc3RhbmQgcmlnaHRlb3VzbmVzcywgYW5kIGp1ZGdtZW50LCBhbmQgZXF1aXR5OyB5ZWEsIGV2ZXJ5IGdvb2QgcGF0aC4KV2hlbiB3aXNkb20gZW50ZXJldGggaW50byB0aGluZSBoZWFydCwgYW5kIGtub3dsZWRnZSBpcyBwbGVhc2FudCB1bnRvIHRoeSBzb3VsOwpEaXNjcmV0aW9uIHNoYWxsIHByZXNlcnZlIHRoZWUsIHVuZGVyc3RhbmRpbmcgc2hhbGwga2VlcCB0aGVlOgpUbyBkZWxpdmVyIHRoZWUgZnJvbSB0aGUgd2F5IG9mIHRoZSBldmlsIG1hbiwgZnJvbSB0aGUgbWFuIHRoYXQgc3BlYWtldGggZnJvd2FyZCB0aGluZ3M7CldobyBsZWF2ZSB0aGUgcGF0aHMgb2YgdXByaWdodG5lc3MsIHRvIHdhbGsgaW4gdGhlIHdheXMgb2YgZGFya25lc3M7CldobyByZWpvaWNlIHRvIGRvIGV2aWwsIGFuZCBkZWxpZ2h0IGluIHRoZSBmcm93YXJkbmVzcyBvZiB0aGUgd2lja2VkOwpXaG9zZSB3YXlzIGFyZSBjcm9va2VkLCBhbmQgdGhleSBmcm93YXJkIGluIHRoZWlyIHBhdGhzOgpUbyBkZWxpdmVyIHRoZWUgZnJvbSB0aGUgc3RyYW5nZSB3b21hbiwgZXZlbiBmcm9tIHRoZSBzdHJhbmdlciB3aGljaCBmbGF0dGVyZXRoIHdpdGggaGVyIHdvcmRzOwpXaGljaCBmb3JzYWtldGggdGhlIGd1aWRlIG9mIGhlciB5b3V0aCwgYW5kIGZvcmdldHRldGggdGhlIGNvdmVuYW50IG9mIGhlciBHb2QuCkZvciBoZXIgaG91c2UgaW5jbGluZXRoIHVudG8gZGVhdGgsIGFuZCBoZXIgcGF0aHMgdW50byB0aGUgZGVhZC4KTm9uZSB0aGF0IGdvIHVudG8gaGVyIHJldHVybiBhZ2FpbiwgbmVpdGhlciB0YWtlIHRoZXkgaG9sZCBvZiB0aGUgcGF0aHMgb2YgbGlmZS4KVGhhdCB0aG91IG1heWVzdCB3YWxrIGluIHRoZSB3YXkgb2YgZ29vZCBtZW4sIGFuZCBrZWVwIHRoZSBwYXRocyBvZiB0aGUgcmlnaHRlb3VzLgpGb3IgdGhlIHVwcmlnaHQgc2hhbGwgZHdlbGwgaW4gdGhlIGxhbmQsIGFuZCB0aGUgcGVyZmVjdCBzaGFsbCByZW1haW4gaW4gaXQuCkJ1dCB0aGUgd2lja2VkIHNoYWxsIGJlIGN1dCBvZmYgZnJvbSB0aGUgZWFydGgsIGFuZCB0aGUgdHJhbnNncmVzc29ycyBzaGFsbCBiZSByb290ZWQgb3V0IG9mIGl0LgpNeSBzb24sIGZvcmdldCBub3QgbXkgbGF3OyBidXQgbGV0IHRoaW5lIGhlYXJ0IGtlZXAgbXkgY29tbWFuZG1lbnRzOgpGb3IgbGVuZ3RoIG9mIGRheXMsIGFuZCBsb25nIGxpZmUsIGFuZCBwZWFjZSwgc2hhbGwgdGhleSBhZGQgdG8gdGhlZS4KTGV0IG5vdCBtZXJjeSBhbmQgdHJ1dGggZm9yc2FrZSB0aGVlOiBiaW5kIHRoZW0gYWJvdXQgdGh5IG5lY2s7IHdyaXRlIHRoZW0gdXBvbiB0aGUgdGFibGUgb2YgdGhpbmUgaGVhcnQ6ClNvIHNoYWx0IHRob3UgZmluZCBmYXZvdXIgYW5kIGdvb2QgdW5kZXJzdGFuZGluZyBpbiB0aGUgc2lnaHQgb2YgR29kIGFuZCBtYW4uClRydXN0IGluIHRoZSBMT1JEIHdpdGggYWxsIHRoaW5lIGhlYXJ0OyBhbmQgbGVhbiBub3QgdW50byB0aGluZSBvd24gdW5kZXJzdGFuZGluZy4KSW4gYWxsIHRoeSB3YXlzIGFja25vd2xlZGdlIGhpbSwgYW5kIGhlIHNoYWxsIGRpcmVjdCB0aHkgcGF0aHMuCkJlIG5vdCB3aXNlIGluIHRoaW5lIG93biBleWVzOiBmZWFyIHRoZSBMT1JELCBhbmQgZGVwYXJ0IGZyb20gZXZpbC4KSXQgc2hhbGwgYmUgaGVhbHRoIHRvIHRoeSBuYXZlbCwgYW5kIG1hcnJvdyB0byB0aHkgYm9uZXMuCkhvbm91ciB0aGUgTE9SRCB3aXRoIHRoeSBzdWJzdGFuY2UsIGFuZCB3aXRoIHRoZSBmaXJzdGZydWl0cyBvZiBhbGwgdGhpbmUgaW5jcmVhc2U6ClNvIHNoYWxsIHRoeSBiYXJucyBiZSBmaWxsZWQgd2l0aCBwbGVudHksIGFuZCB0aHkgcHJlc3NlcyBzaGFsbCBidXJzdCBvdXQgd2l0aCBuZXcgd2luZS4KTXkgc29uLCBkZXNwaXNlIG5vdCB0aGUgY2hhc3RlbmluZyBvZiB0aGUgTE9SRDsgbmVpdGhlciBiZSB3ZWFyeSBvZiBoaXMgY29ycmVjdGlvbjoKRm9yIHdob20gdGhlIExPUkQgbG92ZXRoIGhlIGNvcnJlY3RldGg7IGV2ZW4gYXMgYSBmYXRoZXIgdGhlIHNvbiBpbiB3aG9tIGhlIGRlbGlnaHRldGguCkhhcHB5IGlzIHRoZSBtYW4gdGhhdCBmaW5kZXRoIHdpc2RvbSwgYW5kIHRoZSBtYW4gdGhhdCBnZXR0ZXRoIHVuZGVyc3RhbmRpbmcuCkZvciB0aGUgbWVyY2hhbmRpc2Ugb2YgaXQgaXMgYmV0dGVyIHRoYW4gdGhlIG1lcmNoYW5kaXNlIG9mIHNpbHZlciwgYW5kIHRoZSBnYWluIHRoZXJlb2YgdGhhbiBmaW5lIGdvbGQuClNoZSBpcyBtb3JlIHByZWNpb3VzIHRoYW4gcnViaWVzOiBhbmQgYWxsIHRoZSB0aGluZ3MgdGhvdSBjYW5zdCBkZXNpcmUgYXJlIG5vdCB0byBiZSBjb21wYXJlZCB1bnRvIGhlci4KTGVuZ3RoIG9mIGRheXMgaXMgaW4gaGVyIHJpZ2h0IGhhbmQ7IGFuZCBpbiBoZXIgbGVmdCBoYW5kIHJpY2hlcyBhbmQgaG9ub3VyLgpIZXIgd2F5cyBhcmUgd2F5cyBvZiBwbGVhc2FudG5lc3MsIGFuZCBhbGwgaGVyIHBhdGhzIGFyZSBwZWFjZS4KU2hlIGlzIGEgdHJlZSBvZiBsaWZlIHRvIHRoZW0gdGhhdCBsYXkgaG9sZCB1cG9uIGhlcjogYW5kIGhhcHB5IGlzIGV2ZXJ5IG9uZSB0aGF0IHJldGFpbmV0aCBoZXIuClRoZSBMT1JEIGJ5IHdpc2RvbSBoYXRoIGZvdW5kZWQgdGhlIGVhcnRoOyBieSB1bmRlcnN0YW5kaW5nIGhhdGggaGUgZXN0YWJsaXNoZWQgdGhlIGhlYXZlbnMuCkJ5IGhpcyBrbm93bGVkZ2UgdGhlIGRlcHRocyBhcmUgYnJva2VuIHVwLCBhbmQgdGhlIGNsb3VkcyBkcm9wIGRvd24gdGhlIGRldy4KTXkgc29uLCBsZXQgbm90IHRoZW0gZGVwYXJ0IGZyb20gdGhpbmUgZXllczoga2VlcCBzb3VuZCB3aXNkb20gYW5kIGRpc2NyZXRpb246ClNvIHNoYWxsIHRoZXkgYmUgbGlmZSB1bnRvIHRoeSBzb3VsLCBhbmQgZ3JhY2UgdG8gdGh5IG5lY2suClRoZW4gc2hhbHQgdGhvdSB3YWxrIGluIHRoeSB3YXkgc2FmZWx5LCBhbmQgdGh5IGZvb3Qgc2hhbGwgbm90IHN0dW1ibGUuCldoZW4gdGhvdSBsaWVzdCBkb3duLCB0aG91IHNoYWx0IG5vdCBiZSBhZnJhaWQ6IHllYSwgdGhvdSBzaGFsdCBsaWUgZG93biwgYW5kIHRoeSBzbGVlcCBzaGFsbCBiZSBzd2VldC4KQmUgbm90IGFmcmFpZCBvZiBzdWRkZW4gZmVhciwgbmVpdGhlciBvZiB0aGUgZGVzb2xhdGlvbiBvZiB0aGUgd2lja2VkLCB3aGVuIGl0IGNvbWV0aC4KRm9yIHRoZSBMT1JEIHNoYWxsIGJlIHRoeSBjb25maWRlbmNlLCBhbmQgc2hhbGwga2VlcCB0aHkgZm9vdCBmcm9tIGJlaW5nIHRha2VuLgpXaXRoaG9sZCBub3QgZ29vZCBmcm9tIHRoZW0gdG8gd2hvbSBpdCBpcyBkdWUsIHdoZW4gaXQgaXMgaW4gdGhlIHBvd2VyIG9mIHRoaW5lIGhhbmQgdG8gZG8gaXQuClNheSBub3QgdW50byB0aHkgbmVpZ2hib3VyLCBHbywgYW5kIGNvbWUgYWdhaW4sIGFuZCB0byBtb3Jyb3cgSSB3aWxsIGdpdmU7IHdoZW4gdGhvdSBoYXN0IGl0IGJ5IHRoZWUuCkRldmlzZSBub3QgZXZpbCBhZ2FpbnN0IHRoeSBuZWlnaGJvdXIsIHNlZWluZyBoZSBkd2VsbGV0aCBzZWN1cmVseSBieSB0aGVlLgpTdHJpdmUgbm90IHdpdGggYSBtYW4gd2l0aG91dCBjYXVzZSwgaWYgaGUgaGF2ZSBkb25lIHRoZWUgbm8gaGFybS4KRW52eSB0aG91IG5vdCB0aGUgb3BwcmVzc29yLCBhbmQgY2hvb3NlIG5vbmUgb2YgaGlzIHdheXMuCkZvciB0aGUgZnJvd2FyZCBpcyBhYm9taW5hdGlvbiB0byB0aGUgTE9SRDogYnV0IGhpcyBzZWNyZXQgaXMgd2l0aCB0aGUgcmlnaHRlb3VzLgpUaGUgY3Vyc2Ugb2YgdGhlIExPUkQgaXMgaW4gdGhlIGhvdXNlIG9mIHRoZSB3aWNrZWQ6IGJ1dCBoZSBibGVzc2V0aCB0aGUgaGFiaXRhdGlvbiBvZiB0aGUganVzdC4KU3VyZWx5IGhlIHNjb3JuZXRoIHRoZSBzY29ybmVyczogYnV0IGhlIGdpdmV0aCBncmFjZSB1bnRvIHRoZSBsb3dseS4KVGhlIHdpc2Ugc2hhbGwgaW5oZXJpdCBnbG9yeTogYnV0IHNoYW1lIHNoYWxsIGJlIHRoZSBwcm9tb3Rpb24gb2YgZm9vbHMuCkhlYXIsIHllIGNoaWxkcmVuLCB0aGUgaW5zdHJ1Y3Rpb24gb2YgYSBmYXRoZXIsIGFuZCBhdHRlbmQgdG8ga25vdyB1bmRlcnN0YW5kaW5nLgpGb3IgSSBnaXZlIHlvdSBnb29kIGRvY3RyaW5lLCBmb3JzYWtlIHllIG5vdCBteSBsYXcuCkZvciBJIHdhcyBteSBmYXRoZXIncyBzb24sIHRlbmRlciBhbmQgb25seSBiZWxvdmVkIGluIHRoZSBzaWdodCBvZiBteSBtb3RoZXIuCkhlIHRhdWdodCBtZSBhbHNvLCBhbmQgc2FpZCB1bnRvIG1lLCBMZXQgdGhpbmUgaGVhcnQgcmV0YWluIG15IHdvcmRzOiBrZWVwIG15IGNvbW1hbmRtZW50cywgYW5kIGxpdmUuCkdldCB3aXNkb20sIGdldCB1bmRlcnN0YW5kaW5nOiBmb3JnZXQgaXQgbm90OyBuZWl0aGVyIGRlY2xpbmUgZnJvbSB0aGUgd29yZHMgb2YgbXkgbW91dGguCkZvcnNha2UgaGVyIG5vdCwgYW5kIHNoZSBzaGFsbCBwcmVzZXJ2ZSB0aGVlOiBsb3ZlIGhlciwgYW5kIHNoZSBzaGFsbCBrZWVwIHRoZWUuCldpc2RvbSBpcyB0aGUgcHJpbmNpcGFsIHRoaW5nOyB0aGVyZWZvcmUgZ2V0IHdpc2RvbTogYW5kIHdpdGggYWxsIHRoeSBnZXR0aW5nIGdldCB1bmRlcnN0YW5kaW5nLgpFeGFsdCBoZXIsIGFuZCBzaGUgc2hhbGwgcHJvbW90ZSB0aGVlOiBzaGUgc2hhbGwgYnJpbmcgdGhlZSB0byBob25vdXIsIHdoZW4gdGhvdSBkb3N0IGVtYnJhY2UgaGVyLgpTaGUgc2hhbGwgZ2l2ZSB0byB0aGluZSBoZWFkIGFuIG9ybmFtZW50IG9mIGdyYWNlOiBhIGNyb3duIG9mIGdsb3J5IHNoYWxsIHNoZSBkZWxpdmVyIHRvIHRoZWUuCkhlYXIsIE8gbXkgc29uLCBhbmQgcmVjZWl2ZSBteSBzYXlpbmdzOyBhbmQgdGhlIHllYXJzIG9mIHRoeSBsaWZlIHNoYWxsIGJlIG1hbnkuCkkgaGF2ZSB0YXVnaHQgdGhlZSBpbiB0aGUgd2F5IG9mIHdpc2RvbTsgSSBoYXZlIGxlZCB0aGVlIGluIHJpZ2h0IHBhdGhzLgpXaGVuIHRob3UgZ29lc3QsIHRoeSBzdGVwcyBzaGFsbCBub3QgYmUgc3RyYWl0ZW5lZDsgYW5kIHdoZW4gdGhvdSBydW5uZXN0LCB0aG91IHNoYWx0IG5vdCBzdHVtYmxlLgpUYWtlIGZhc3QgaG9sZCBvZiBpbnN0cnVjdGlvbjsgbGV0IGhlciBub3QgZ286IGtlZXAgaGVyOyBmb3Igc2hlIGlzIHRoeSBsaWZlLgpFbnRlciBub3QgaW50byB0aGUgcGF0aCBvZiB0aGUgd2lja2VkLCBhbmQgZ28gbm90IGluIHRoZSB3YXkgb2YgZXZpbCBtZW4uCkF2b2lkIGl0LCBwYXNzIG5vdCBieSBpdCwgdHVybiBmcm9tIGl0LCBhbmQgcGFzcyBhd2F5LgpGb3IgdGhleSBzbGVlcCBub3QsIGV4Y2VwdCB0aGV5IGhhdmUgZG9uZSBtaXNjaGllZjsgYW5kIHRoZWlyIHNsZWVwIGlzIHRha2VuIGF3YXksIHVubGVzcyB0aGV5IGNhdXNlIHNvbWUgdG8gZmFsbC4KRm9yIHRoZXkgZWF0IHRoZSBicmVhZCBvZiB3aWNrZWRuZXNzLCBhbmQgZHJpbmsgdGhlIHdpbmUgb2YgdmlvbGVuY2UuCkJ1dCB0aGUgcGF0aCBvZiB0aGUganVzdCBpcyBhcyB0aGUgc2hpbmluZyBsaWdodCwgdGhhdCBzaGluZXRoIG1vcmUgYW5kIG1vcmUgdW50byB0aGUgcGVyZmVjdCBkYXkuClRoZSB3YXkgb2YgdGhlIHdpY2tlZCBpcyBhcyBkYXJrbmVzczogdGhleSBrbm93IG5vdCBhdCB3aGF0IHRoZXkgc3R1bWJsZS4KTXkgc29uLCBhdHRlbmQgdG8gbXkgd29yZHM7IGluY2xpbmUgdGhpbmUgZWFyIHVudG8gbXkgc2F5aW5ncy4KTGV0IHRoZW0gbm90IGRlcGFydCBmcm9tIHRoaW5lIGV5ZXM7IGtlZXAgdGhlbSBpbiB0aGUgbWlkc3Qgb2YgdGhpbmUgaGVhcnQuCkZvciB0aGV5IGFyZSBsaWZlIHVudG8gdGhvc2UgdGhhdCBmaW5kIHRoZW0sIGFuZCBoZWFsdGggdG8gYWxsIHRoZWlyIGZsZXNoLgpLZWVwIHRoeSBoZWFydCB3aXRoIGFsbCBkaWxpZ2VuY2U7IGZvciBvdXQgb2YgaXQgYXJlIHRoZSBpc3N1ZXMgb2YgbGlmZS4KUHV0IGF3YXkgZnJvbSB0aGVlIGEgZnJvd2FyZCBtb3V0aCwgYW5kIHBlcnZlcnNlIGxpcHMgcHV0IGZhciBmcm9tIHRoZWUuCkxldCB0aGluZSBleWVzIGxvb2sgcmlnaHQgb24sIGFuZCBsZXQgdGhpbmUgZXllbGlkcyBsb29rIHN0cmFpZ2h0IGJlZm9yZSB0aGVlLgpQb25kZXIgdGhlIHBhdGggb2YgdGh5IGZlZXQsIGFuZCBsZXQgYWxsIHRoeSB3YXlzIGJlIGVzdGFibGlzaGVkLgpUdXJuIG5vdCB0byB0aGUgcmlnaHQgaGFuZCBub3IgdG8gdGhlIGxlZnQ6IHJlbW92ZSB0aHkgZm9vdCBmcm9tIGV2aWwuCk15IHNvbiwgYXR0ZW5kIHVudG8gbXkgd2lzZG9tLCBhbmQgYm93IHRoaW5lIGVhciB0byBteSB1bmRlcnN0YW5kaW5nOgpUaGF0IHRob3UgbWF5ZXN0IHJlZ2FyZCBkaXNjcmV0aW9uLCBhbmQgdGhhdCB0aHkgbGlwcyBtYXkga2VlcCBrbm93bGVkZ2UuCkZvciB0aGUgbGlwcyBvZiBhIHN0cmFuZ2Ugd29tYW4gZHJvcCBhcyBhbiBob25leWNvbWIsIGFuZCBoZXIgbW91dGggaXMgc21vb3RoZXIgdGhhbiBvaWw6CkJ1dCBoZXIgZW5kIGlzIGJpdHRlciBhcyB3b3Jtd29vZCwgc2hhcnAgYXMgYSB0d28tZWRnZWQgc3dvcmQuCkhlciBmZWV0IGdvIGRvd24gdG8gZGVhdGg7IGhlciBzdGVwcyB0YWtlIGhvbGQgb24gaGVsbC4KTGVzdCB0aG91IHNob3VsZGVzdCBwb25kZXIgdGhlIHBhdGggb2YgbGlmZSwgaGVyIHdheXMgYXJlIG1vdmVhYmxlLCB0aGF0IHRob3UgY2Fuc3Qgbm90IGtub3cgdGhlbS4KSGVhciBtZSBub3cgdGhlcmVmb3JlLCBPIHllIGNoaWxkcmVuLCBhbmQgZGVwYXJ0IG5vdCBmcm9tIHRoZSB3b3JkcyBvZiBteSBtb3V0aC4KUmVtb3ZlIHRoeSB3YXkgZmFyIGZyb20gaGVyLCBhbmQgY29tZSBub3QgbmlnaCB0aGUgZG9vciBvZiBoZXIgaG91c2U6Ckxlc3QgdGhvdSBnaXZlIHRoaW5lIGhvbm91ciB1bnRvIG90aGVycywgYW5kIHRoeSB5ZWFycyB1bnRvIHRoZSBjcnVlbDoKTGVzdCBzdHJhbmdlcnMgYmUgZmlsbGVkIHdpdGggdGh5IHdlYWx0aDsgYW5kIHRoeSBsYWJvdXJzIGJlIGluIHRoZSBob3VzZSBvZiBhIHN0cmFuZ2VyOwpBbmQgdGhvdSBtb3VybiBhdCB0aGUgbGFzdCwgd2hlbiB0aHkgZmxlc2ggYW5kIHRoeSBib2R5IGFyZSBjb25zdW1lZCwKQW5kIHNheSwgSG93IGhhdmUgSSBoYXRlZCBpbnN0cnVjdGlvbiwgYW5kIG15IGhlYXJ0IGRlc3Bpc2VkIHJlcHJvb2Y7CkFuZCBoYXZlIG5vdCBvYmV5ZWQgdGhlIHZvaWNlIG9mIG15IHRlYWNoZXJzLCBub3IgaW5jbGluZWQgbWluZSBlYXIgdG8gdGhlbSB0aGF0IGluc3RydWN0ZWQgbWUhCkkgd2FzIGFsbW9zdCBpbiBhbGwgZXZpbCBpbiB0aGUgbWlkc3Qgb2YgdGhlIGNvbmdyZWdhdGlvbiBhbmQgYXNzZW1ibHkuCkRyaW5rIHdhdGVycyBvdXQgb2YgdGhpbmUgb3duIGNpc3Rlcm4sIGFuZCBydW5uaW5nIHdhdGVycyBvdXQgb2YgdGhpbmUgb3duIHdlbGwuCkxldCB0aHkgZm91bnRhaW5zIGJlIGRpc3BlcnNlZCBhYnJvYWQsIGFuZCByaXZlcnMgb2Ygd2F0ZXJzIGluIHRoZSBzdHJlZXRzLgpMZXQgdGhlbSBiZSBvbmx5IHRoaW5lIG93biwgYW5kIG5vdCBzdHJhbmdlcnMnIHdpdGggdGhlZS4KTGV0IHRoeSBmb3VudGFpbiBiZSBibGVzc2VkOiBhbmQgcmVqb2ljZSB3aXRoIHRoZSB3aWZlIG9mIHRoeSB5b3V0aC4KTGV0IGhlciBiZSBhcyB0aGUgbG92aW5nIGhpbmQgYW5kIHBsZWFzYW50IHJvZTsgbGV0IGhlciBicmVhc3RzIHNhdGlzZnkgdGhlZSBhdCBhbGwgdGltZXM7IGFuZCBiZSB0aG91IHJhdmlzaGVkIGFsd2F5cyB3aXRoIGhlciBsb3ZlLgpBbmQgd2h5IHdpbHQgdGhvdSwgbXkgc29uLCBiZSByYXZpc2hlZCB3aXRoIGEgc3RyYW5nZSB3b21hbiwgYW5kIGVtYnJhY2UgdGhlIGJvc29tIG9mIGEgc3RyYW5nZXI/CkZvciB0aGUgd2F5cyBvZiBtYW4gYXJlIGJlZm9yZSB0aGUgZXllcyBvZiB0aGUgTE9SRCwgYW5kIGhlIHBvbmRlcmV0aCBhbGwgaGlzIGdvaW5ncy4KSGlzIG93biBpbmlxdWl0aWVzIHNoYWxsIHRha2UgdGhlIHdpY2tlZCBoaW1zZWxmLCBhbmQgaGUgc2hhbGwgYmUgaG9sZGVuIHdpdGggdGhlIGNvcmRzIG9mIGhpcyBzaW5zLgpIZSBzaGFsbCBkaWUgd2l0aG91dCBpbnN0cnVjdGlvbjsgYW5kIGluIHRoZSBncmVhdG5lc3Mgb2YgaGlzIGZvbGx5IGhlIHNoYWxsIGdvIGFzdHJheS4KTXkgc29uLCBpZiB0aG91IGJlIHN1cmV0eSBmb3IgdGh5IGZyaWVuZCwgaWYgdGhvdSBoYXN0IHN0cmlja2VuIHRoeSBoYW5kIHdpdGggYSBzdHJhbmdlciwKVGhvdSBhcnQgc25hcmVkIHdpdGggdGhlIHdvcmRzIG9mIHRoeSBtb3V0aCwgdGhvdSBhcnQgdGFrZW4gd2l0aCB0aGUgd29yZHMgb2YgdGh5IG1vdXRoLgpEbyB0aGlzIG5vdywgbXkgc29uLCBhbmQgZGVsaXZlciB0aHlzZWxmLCB3aGVuIHRob3UgYXJ0IGNvbWUgaW50byB0aGUgaGFuZCBvZiB0aHkgZnJpZW5kOyBnbywgaHVtYmxlIHRoeXNlbGYsIGFuZCBtYWtlIHN1cmUgdGh5IGZyaWVuZC4KR2l2ZSBub3Qgc2xlZXAgdG8gdGhpbmUgZXllcywgbm9yIHNsdW1iZXIgdG8gdGhpbmUgZXllbGlkcy4KRGVsaXZlciB0aHlzZWxmIGFzIGEgcm9lIGZyb20gdGhlIGhhbmQgb2YgdGhlIGh1bnRlciwgYW5kIGFzIGEgYmlyZCBmcm9tIHRoZSBoYW5kIG9mIHRoZSBmb3dsZXIuCkdvIHRvIHRoZSBhbnQsIHRob3Ugc2x1Z2dhcmQ7IGNvbnNpZGVyIGhlciB3YXlzLCBhbmQgYmUgd2lzZToKV2hpY2ggaGF2aW5nIG5vIGd1aWRlLCBvdmVyc2Vlciwgb3IgcnVsZXIsClByb3ZpZGV0aCBoZXIgbWVhdCBpbiB0aGUgc3VtbWVyLCBhbmQgZ2F0aGVyZXRoIGhlciBmb29kIGluIHRoZSBoYXJ2ZXN0LgpIb3cgbG9uZyB3aWx0IHRob3Ugc2xlZXAsIE8gc2x1Z2dhcmQ/IHdoZW4gd2lsdCB0aG91IGFyaXNlIG91dCBvZiB0aHkgc2xlZXA/CllldCBhIGxpdHRsZSBzbGVlcCwgYSBsaXR0bGUgc2x1bWJlciwgYSBsaXR0bGUgZm9sZGluZyBvZiB0aGUgaGFuZHMgdG8gc2xlZXA6ClNvIHNoYWxsIHRoeSBwb3ZlcnR5IGNvbWUgYXMgb25lIHRoYXQgdHJhdmVsbGV0aCwgYW5kIHRoeSB3YW50IGFzIGFuIGFybWVkIG1hbi4KQSBuYXVnaHR5IHBlcnNvbiwgYSB3aWNrZWQgbWFuLCB3YWxrZXRoIHdpdGggYSBmcm93YXJkIG1vdXRoLgpIZSB3aW5rZXRoIHdpdGggaGlzIGV5ZXMsIGhlIHNwZWFrZXRoIHdpdGggaGlzIGZlZXQsIGhlIHRlYWNoZXRoIHdpdGggaGlzIGZpbmdlcnM7CkZyb3dhcmRuZXNzIGlzIGluIGhpcyBoZWFydCwgaGUgZGV2aXNldGggbWlzY2hpZWYgY29udGludWFsbHk7IGhlIHNvd2V0aCBkaXNjb3JkLgpUaGVyZWZvcmUgc2hhbGwgaGlzIGNhbGFtaXR5IGNvbWUgc3VkZGVubHk7IHN1ZGRlbmx5IHNoYWxsIGhlIGJlIGJyb2tlbiB3aXRob3V0IHJlbWVkeS4KVGhlc2Ugc2l4IHRoaW5ncyBkb3RoIHRoZSBMT1JEIGhhdGU6IHllYSwgc2V2ZW4gYXJlIGFuIGFib21pbmF0aW9uIHVudG8gaGltOgpBIHByb3VkIGxvb2ssIGEgbHlpbmcgdG9uZ3VlLCBhbmQgaGFuZHMgdGhhdCBzaGVkIGlubm9jZW50IGJsb29kLApBbiBoZWFydCB0aGF0IGRldmlzZXRoIHdpY2tlZCBpbWFnaW5hdGlvbnMsIGZlZXQgdGhhdCBiZSBzd2lmdCBpbiBydW5uaW5nIHRvIG1pc2NoaWVmLApBIGZhbHNlIHdpdG5lc3MgdGhhdCBzcGVha2V0aCBsaWVzLCBhbmQgaGUgdGhhdCBzb3dldGggZGlzY29yZCBhbW9uZyBicmV0aHJlbi4KTXkgc29uLCBrZWVwIHRoeSBmYXRoZXIncyBjb21tYW5kbWVudCwgYW5kIGZvcnNha2Ugbm90IHRoZSBsYXcgb2YgdGh5IG1vdGhlcjoKQmluZCB0aGVtIGNvbnRpbnVhbGx5IHVwb24gdGhpbmUgaGVhcnQsIGFuZCB0aWUgdGhlbSBhYm91dCB0aHkgbmVjay4KV2hlbiB0aG91IGdvZXN0LCBpdCBzaGFsbCBsZWFkIHRoZWU7IHdoZW4gdGhvdSBzbGVlcGVzdCwgaXQgc2hhbGwga2VlcCB0aGVlOyBhbmQgd2hlbiB0aG91IGF3YWtlc3QsIGl0IHNoYWxsIHRhbGsgd2l0aCB0aGVlLgpGb3IgdGhlIGNvbW1hbmRtZW50IGlzIGEgbGFtcDsgYW5kIHRoZSBsYXcgaXMgbGlnaHQ7IGFuZCByZXByb29mcyBvZiBpbnN0cnVjdGlvbiBhcmUgdGhlIHdheSBvZiBsaWZlOgpUbyBrZWVwIHRoZWUgZnJvbSB0aGUgZXZpbCB3b21hbiwgZnJvbSB0aGUgZmxhdHRlcnkgb2YgdGhlIHRvbmd1ZSBvZiBhIHN0cmFuZ2Ugd29tYW4uCkx1c3Qgbm90IGFmdGVyIGhlciBiZWF1dHkgaW4gdGhpbmUgaGVhcnQ7IG5laXRoZXIgbGV0IGhlciB0YWtlIHRoZWUgd2l0aCBoZXIgZXllbGlkcy4KRm9yIGJ5IG1lYW5zIG9mIGEgd2hvcmlzaCB3b21hbiBhIG1hbiBpcyBicm91Z2h0IHRvIGEgcGllY2Ugb2YgYnJlYWQ6IGFuZCB0aGUgYWR1bHRyZXNzIHdpbGwgaHVudCBmb3IgdGhlIHByZWNpb3VzIGxpZmUuCkNhbiBhIG1hbiB0YWtlIGZpcmUgaW4gaGlzIGJvc29tLCBhbmQgaGlzIGNsb3RoZXMgbm90IGJlIGJ1cm5lZD8KQ2FuIG9uZSBnbyB1cG9uIGhvdCBjb2FscywgYW5kIGhpcyBmZWV0IG5vdCBiZSBidXJuZWQ/ClNvIGhlIHRoYXQgZ29ldGggaW4gdG8gaGlzIG5laWdoYm91cidzIHdpZmU7IHdob3NvZXZlciB0b3VjaGV0aCBoZXIgc2hhbGwgbm90IGJlIGlubm9jZW50LgpNZW4gZG8gbm90IGRlc3Bpc2UgYSB0aGllZiwgaWYgaGUgc3RlYWwgdG8gc2F0aXNmeSBoaXMgc291bCB3aGVuIGhlIGlzIGh1bmdyeTsKQnV0IGlmIGhlIGJlIGZvdW5kLCBoZSBzaGFsbCByZXN0b3JlIHNldmVuZm9sZDsgaGUgc2hhbGwgZ2l2ZSBhbGwgdGhlIHN1YnN0YW5jZSBvZiBoaXMgaG91c2UuCkJ1dCB3aG9zbyBjb21taXR0ZXRoIGFkdWx0ZXJ5IHdpdGggYSB3b21hbiBsYWNrZXRoIHVuZGVyc3RhbmRpbmc6IGhlIHRoYXQgZG9ldGggaXQgZGVzdHJveWV0aCBoaXMgb3duIHNvdWwuCkEgd291bmQgYW5kIGRpc2hvbm91ciBzaGFsbCBoZSBnZXQ7IGFuZCBoaXMgcmVwcm9hY2ggc2hhbGwgbm90IGJlIHdpcGVkIGF3YXkuCkZvciBqZWFsb3VzeSBpcyB0aGUgcmFnZSBvZiBhIG1hbjogdGhlcmVmb3JlIGhlIHdpbGwgbm90IHNwYXJlIGluIHRoZSBkYXkgb2YgdmVuZ2VhbmNlLgpIZSB3aWxsIG5vdCByZWdhcmQgYW55IHJhbnNvbTsgbmVpdGhlciB3aWxsIGhlIHJlc3QgY29udGVudCwgdGhvdWdoIHRob3UgZ2l2ZXN0IG1hbnkgZ2lmdHMuCk15IHNvbiwga2VlcCBteSB3b3JkcywgYW5kIGxheSB1cCBteSBjb21tYW5kbWVudHMgd2l0aCB0aGVlLgpLZWVwIG15IGNvbW1hbmRtZW50cywgYW5kIGxpdmU7IGFuZCBteSBsYXcgYXMgdGhlIGFwcGxlIG9mIHRoaW5lIGV5ZS4KQmluZCB0aGVtIHVwb24gdGh5IGZpbmdlcnMsIHdyaXRlIHRoZW0gdXBvbiB0aGUgdGFibGUgb2YgdGhpbmUgaGVhcnQuClNheSB1bnRvIHdpc2RvbSwgVGhvdSBhcnQgbXkgc2lzdGVyOyBhbmQgY2FsbCB1bmRlcnN0YW5kaW5nIHRoeSBraW5zd29tYW46ClRoYXQgdGhleSBtYXkga2VlcCB0aGVlIGZyb20gdGhlIHN0cmFuZ2Ugd29tYW4sIGZyb20gdGhlIHN0cmFuZ2VyIHdoaWNoIGZsYXR0ZXJldGggd2l0aCBoZXIgd29yZHMuCkZvciBhdCB0aGUgd2luZG93IG9mIG15IGhvdXNlIEkgbG9va2VkIHRocm91Z2ggbXkgY2FzZW1lbnQsCkFuZCBiZWhlbGQgYW1vbmcgdGhlIHNpbXBsZSBvbmVzLCBJIGRpc2Nlcm5lZCBhbW9uZyB0aGUgeW91dGhzLCBhIHlvdW5nIG1hbiB2b2lkIG9mIHVuZGVyc3RhbmRpbmcsClBhc3NpbmcgdGhyb3VnaCB0aGUgc3RyZWV0IG5lYXIgaGVyIGNvcm5lcjsgYW5kIGhlIHdlbnQgdGhlIHdheSB0byBoZXIgaG91c2UsCkluIHRoZSB0d2lsaWdodCwgaW4gdGhlIGV2ZW5pbmcsIGluIHRoZSBibGFjayBhbmQgZGFyayBuaWdodDoKQW5kLCBiZWhvbGQsIHRoZXJlIG1ldCBoaW0gYSB3b21hbiB3aXRoIHRoZSBhdHRpcmUgb2YgYW4gaGFybG90LCBhbmQgc3VidGlsIG9mIGhlYXJ0LgooU2hlIGlzIGxvdWQgYW5kIHN0dWJib3JuOyBoZXIgZmVldCBhYmlkZSBub3QgaW4gaGVyIGhvdXNlOgpOb3cgaXMgc2hlIHdpdGhvdXQsIG5vdyBpbiB0aGUgc3RyZWV0cywgYW5kIGxpZXRoIGluIHdhaXQgYXQgZXZlcnkgY29ybmVyLikKU28gc2hlIGNhdWdodCBoaW0sIGFuZCBraXNzZWQgaGltLCBhbmQgd2l0aCBhbiBpbXB1ZGVudCBmYWNlIHNhaWQgdW50byBoaW0sCkkgaGF2ZSBwZWFjZSBvZmZlcmluZ3Mgd2l0aCBtZTsgdGhpcyBkYXkgaGF2ZSBJIHBheWVkIG15IHZvd3MuClRoZXJlZm9yZSBjYW1lIEkgZm9ydGggdG8gbWVldCB0aGVlLCBkaWxpZ2VudGx5IHRvIHNlZWsgdGh5IGZhY2UsIGFuZCBJIGhhdmUgZm91bmQgdGhlZS4KSSBoYXZlIGRlY2tlZCBteSBiZWQgd2l0aCBjb3ZlcmluZ3Mgb2YgdGFwZXN0cnksIHdpdGggY2FydmVkIHdvcmtzLCB3aXRoIGZpbmUgbGluZW4gb2YgRWd5cHQuCkkgaGF2ZSBwZXJmdW1lZCBteSBiZWQgd2l0aCBteXJyaCwgYWxvZXMsIGFuZCBjaW5uYW1vbi4KQ29tZSwgbGV0IHVzIHRha2Ugb3VyIGZpbGwgb2YgbG92ZSB1bnRpbCB0aGUgbW9ybmluZzogbGV0IHVzIHNvbGFjZSBvdXJzZWx2ZXMgd2l0aCBsb3Zlcy4KRm9yIHRoZSBnb29kbWFuIGlzIG5vdCBhdCBob21lLCBoZSBpcyBnb25lIGEgbG9uZyBqb3VybmV5OgpIZSBoYXRoIHRha2VuIGEgYmFnIG9mIG1vbmV5IHdpdGggaGltLCBhbmQgd2lsbCBjb21lIGhvbWUgYXQgdGhlIGRheSBhcHBvaW50ZWQuCldpdGggaGVyIG11Y2ggZmFpciBzcGVlY2ggc2hlIGNhdXNlZCBoaW0gdG8geWllbGQsIHdpdGggdGhlIGZsYXR0ZXJpbmcgb2YgaGVyIGxpcHMgc2hlIGZvcmNlZCBoaW0uCkhlIGdvZXRoIGFmdGVyIGhlciBzdHJhaWdodHdheSwgYXMgYW4gb3ggZ29ldGggdG8gdGhlIHNsYXVnaHRlciwgb3IgYXMgYSBmb29sIHRvIHRoZSBjb3JyZWN0aW9uIG9mIHRoZSBzdG9ja3M7ClRpbGwgYSBkYXJ0IHN0cmlrZSB0aHJvdWdoIGhpcyBsaXZlcjsgYXMgYSBiaXJkIGhhc3RldGggdG8gdGhlIHNuYXJlLCBhbmQga25vd2V0aCBub3QgdGhhdCBpdCBpcyBmb3IgaGlzIGxpZmUuCkhlYXJrZW4gdW50byBtZSBub3cgdGhlcmVmb3JlLCBPIHllIGNoaWxkcmVuLCBhbmQgYXR0ZW5kIHRvIHRoZSB3b3JkcyBvZiBteSBtb3V0aC4KTGV0IG5vdCB0aGluZSBoZWFydCBkZWNsaW5lIHRvIGhlciB3YXlzLCBnbyBub3QgYXN0cmF5IGluIGhlciBwYXRocy4KRm9yIHNoZSBoYXRoIGNhc3QgZG93biBtYW55IHdvdW5kZWQ6IHllYSwgbWFueSBzdHJvbmcgbWVuIGhhdmUgYmVlbiBzbGFpbiBieSBoZXIuCkhlciBob3VzZSBpcyB0aGUgd2F5IHRvIGhlbGwsIGdvaW5nIGRvd24gdG8gdGhlIGNoYW1iZXJzIG9mIGRlYXRoLgpEb3RoIG5vdCB3aXNkb20gY3J5PyBhbmQgdW5kZXJzdGFuZGluZyBwdXQgZm9ydGggaGVyIHZvaWNlPwpTaGUgc3RhbmRldGggaW4gdGhlIHRvcCBvZiBoaWdoIHBsYWNlcywgYnkgdGhlIHdheSBpbiB0aGUgcGxhY2VzIG9mIHRoZSBwYXRocy4KU2hlIGNyaWV0aCBhdCB0aGUgZ2F0ZXMsIGF0IHRoZSBlbnRyeSBvZiB0aGUgY2l0eSwgYXQgdGhlIGNvbWluZyBpbiBhdCB0aGUgZG9vcnMuClVudG8geW91LCBPIG1lbiwgSSBjYWxsOyBhbmQgbXkgdm9pY2UgaXMgdG8gdGhlIHNvbnMgb2YgbWFuLgpPIHllIHNpbXBsZSwgdW5kZXJzdGFuZCB3aXNkb206IGFuZCwgeWUgZm9vbHMsIGJlIHllIG9mIGFuIHVuZGVyc3RhbmRpbmcgaGVhcnQuCkhlYXI7IGZvciBJIHdpbGwgc3BlYWsgb2YgZXhjZWxsZW50IHRoaW5nczsgYW5kIHRoZSBvcGVuaW5nIG9mIG15IGxpcHMgc2hhbGwgYmUgcmlnaHQgdGhpbmdzLgpGb3IgbXkgbW91dGggc2hhbGwgc3BlYWsgdHJ1dGg7IGFuZCB3aWNrZWRuZXNzIGlzIGFuIGFib21pbmF0aW9uIHRvIG15IGxpcHMuCkFsbCB0aGUgd29yZHMgb2YgbXkgbW91dGggYXJlIGluIHJpZ2h0ZW91c25lc3M7IHRoZXJlIGlzIG5vdGhpbmcgZnJvd2FyZCBvciBwZXJ2ZXJzZSBpbiB0aGVtLgpUaGV5IGFyZSBhbGwgcGxhaW4gdG8gaGltIHRoYXQgdW5kZXJzdGFuZGV0aCwgYW5kIHJpZ2h0IHRvIHRoZW0gdGhhdCBmaW5kIGtub3dsZWRnZS4KUmVjZWl2ZSBteSBpbnN0cnVjdGlvbiwgYW5kIG5vdCBzaWx2ZXI7IGFuZCBrbm93bGVkZ2UgcmF0aGVyIHRoYW4gY2hvaWNlIGdvbGQuCkZvciB3aXNkb20gaXMgYmV0dGVyIHRoYW4gcnViaWVzOyBhbmQgYWxsIHRoZSB0aGluZ3MgdGhhdCBtYXkgYmUgZGVzaXJlZCBhcmUgbm90IHRvIGJlIGNvbXBhcmVkIHRvIGl0LgpJIHdpc2RvbSBkd2VsbCB3aXRoIHBydWRlbmNlLCBhbmQgZmluZCBvdXQga25vd2xlZGdlIG9mIHdpdHR5IGludmVudGlvbnMuClRoZSBmZWFyIG9mIHRoZSBMT1JEIGlzIHRvIGhhdGUgZXZpbDogcHJpZGUsIGFuZCBhcnJvZ2FuY3ksIGFuZCB0aGUgZXZpbCB3YXksIGFuZCB0aGUgZnJvd2FyZCBtb3V0aCwgZG8gSSBoYXRlLgpDb3Vuc2VsIGlzIG1pbmUsIGFuZCBzb3VuZCB3aXNkb206IEkgYW0gdW5kZXJzdGFuZGluZzsgSSBoYXZlIHN0cmVuZ3RoLgpCeSBtZSBraW5ncyByZWlnbiwgYW5kIHByaW5jZXMgZGVjcmVlIGp1c3RpY2UuCkJ5IG1lIHByaW5jZXMgcnVsZSwgYW5kIG5vYmxlcywgZXZlbiBhbGwgdGhlIGp1ZGdlcyBvZiB0aGUgZWFydGguCkkgbG92ZSB0aGVtIHRoYXQgbG92ZSBtZTsgYW5kIHRob3NlIHRoYXQgc2VlayBtZSBlYXJseSBzaGFsbCBmaW5kIG1lLgpSaWNoZXMgYW5kIGhvbm91ciBhcmUgd2l0aCBtZTsgeWVhLCBkdXJhYmxlIHJpY2hlcyBhbmQgcmlnaHRlb3VzbmVzcy4KTXkgZnJ1aXQgaXMgYmV0dGVyIHRoYW4gZ29sZCwgeWVhLCB0aGFuIGZpbmUgZ29sZDsgYW5kIG15IHJldmVudWUgdGhhbiBjaG9pY2Ugc2lsdmVyLgpJIGxlYWQgaW4gdGhlIHdheSBvZiByaWdodGVvdXNuZXNzLCBpbiB0aGUgbWlkc3Qgb2YgdGhlIHBhdGhzIG9mIGp1ZGdtZW50OgpUaGF0IEkgbWF5IGNhdXNlIHRob3NlIHRoYXQgbG92ZSBtZSB0byBpbmhlcml0IHN1YnN0YW5jZTsgYW5kIEkgd2lsbCBmaWxsIHRoZWlyIHRyZWFzdXJlcy4KVGhlIExPUkQgcG9zc2Vzc2VkIG1lIGluIHRoZSBiZWdpbm5pbmcgb2YgaGlzIHdheSwgYmVmb3JlIGhpcyB3b3JrcyBvZiBvbGQuCkkgd2FzIHNldCB1cCBmcm9tIGV2ZXJsYXN0aW5nLCBmcm9tIHRoZSBiZWdpbm5pbmcsIG9yIGV2ZXIgdGhlIGVhcnRoIHdhcy4KV2hlbiB0aGVyZSB3ZXJlIG5vIGRlcHRocywgSSB3YXMgYnJvdWdodCBmb3J0aDsgd2hlbiB0aGVyZSB3ZXJlIG5vIGZvdW50YWlucyBhYm91bmRpbmcgd2l0aCB3YXRlci4KQmVmb3JlIHRoZSBtb3VudGFpbnMgd2VyZSBzZXR0bGVkLCBiZWZvcmUgdGhlIGhpbGxzIHdhcyBJIGJyb3VnaHQgZm9ydGg6CldoaWxlIGFzIHlldCBoZSBoYWQgbm90IG1hZGUgdGhlIGVhcnRoLCBub3IgdGhlIGZpZWxkcywgbm9yIHRoZSBoaWdoZXN0IHBhcnQgb2YgdGhlIGR1c3Qgb2YgdGhlIHdvcmxkLgpXaGVuIGhlIHByZXBhcmVkIHRoZSBoZWF2ZW5zLCBJIHdhcyB0aGVyZTogd2hlbiBoZSBzZXQgYSBjb21wYXNzIHVwb24gdGhlIGZhY2Ugb2YgdGhlIGRlcHRoOgpXaGVuIGhlIGVzdGFibGlzaGVkIHRoZSBjbG91ZHMgYWJvdmU6IHdoZW4gaGUgc3RyZW5ndGhlbmVkIHRoZSBmb3VudGFpbnMgb2YgdGhlIGRlZXA6CldoZW4gaGUgZ2F2ZSB0byB0aGUgc2VhIGhpcyBkZWNyZWUsIHRoYXQgdGhlIHdhdGVycyBzaG91bGQgbm90IHBhc3MgaGlzIGNvbW1hbmRtZW50OiB3aGVuIGhlIGFwcG9pbnRlZCB0aGUgZm91bmRhdGlvbnMgb2YgdGhlIGVhcnRoOgpUaGVuIEkgd2FzIGJ5IGhpbSwgYXMgb25lIGJyb3VnaHQgdXAgd2l0aCBoaW06IGFuZCBJIHdhcyBkYWlseSBoaXMgZGVsaWdodCwgcmVqb2ljaW5nIGFsd2F5cyBiZWZvcmUgaGltOwpSZWpvaWNpbmcgaW4gdGhlIGhhYml0YWJsZSBwYXJ0IG9mIGhpcyBlYXJ0aDsgYW5kIG15IGRlbGlnaHRzIHdlcmUgd2l0aCB0aGUgc29ucyBvZiBtZW4uCk5vdyB0aGVyZWZvcmUgaGVhcmtlbiB1bnRvIG1lLCBPIHllIGNoaWxkcmVuOiBmb3IgYmxlc3NlZCBhcmUgdGhleSB0aGF0IGtlZXAgbXkgd2F5cy4KSGVhciBpbnN0cnVjdGlvbiwgYW5kIGJlIHdpc2UsIGFuZCByZWZ1c2UgaXQgbm90LgpCbGVzc2VkIGlzIHRoZSBtYW4gdGhhdCBoZWFyZXRoIG1lLCB3YXRjaGluZyBkYWlseSBhdCBteSBnYXRlcywgd2FpdGluZyBhdCB0aGUgcG9zdHMgb2YgbXkgZG9vcnMuCkZvciB3aG9zbyBmaW5kZXRoIG1lIGZpbmRldGggbGlmZSwgYW5kIHNoYWxsIG9idGFpbiBmYXZvdXIgb2YgdGhlIExPUkQuCkJ1dCBoZSB0aGF0IHNpbm5ldGggYWdhaW5zdCBtZSB3cm9uZ2V0aCBoaXMgb3duIHNvdWw6IGFsbCB0aGV5IHRoYXQgaGF0ZSBtZSBsb3ZlIGRlYXRoLgpXaXNkb20gaGF0aCBidWlsZGVkIGhlciBob3VzZSwgc2hlIGhhdGggaGV3biBvdXQgaGVyIHNldmVuIHBpbGxhcnM6ClNoZSBoYXRoIGtpbGxlZCBoZXIgYmVhc3RzOyBzaGUgaGF0aCBtaW5nbGVkIGhlciB3aW5lOyBzaGUgaGF0aCBhbHNvIGZ1cm5pc2hlZCBoZXIgdGFibGUuClNoZSBoYXRoIHNlbnQgZm9ydGggaGVyIG1haWRlbnM6IHNoZSBjcmlldGggdXBvbiB0aGUgaGlnaGVzdCBwbGFjZXMgb2YgdGhlIGNpdHksCldob3NvIGlzIHNpbXBsZSwgbGV0IGhpbSB0dXJuIGluIGhpdGhlcjogYXMgZm9yIGhpbSB0aGF0IHdhbnRldGggdW5kZXJzdGFuZGluZywgc2hlIHNhaXRoIHRvIGhpbSwKQ29tZSwgZWF0IG9mIG15IGJyZWFkLCBhbmQgZHJpbmsgb2YgdGhlIHdpbmUgd2hpY2ggSSBoYXZlIG1pbmdsZWQuCkZvcnNha2UgdGhlIGZvb2xpc2gsIGFuZCBsaXZlOyBhbmQgZ28gaW4gdGhlIHdheSBvZiB1bmRlcnN0YW5kaW5nLgpIZSB0aGF0IHJlcHJvdmV0aCBhIHNjb3JuZXIgZ2V0dGV0aCB0byBoaW1zZWxmIHNoYW1lOiBhbmQgaGUgdGhhdCByZWJ1a2V0aCBhIHdpY2tlZCBtYW4gZ2V0dGV0aCBoaW1zZWxmIGEgYmxvdC4KUmVwcm92ZSBub3QgYSBzY29ybmVyLCBsZXN0IGhlIGhhdGUgdGhlZTogcmVidWtlIGEgd2lzZSBtYW4sIGFuZCBoZSB3aWxsIGxvdmUgdGhlZS4KR2l2ZSBpbnN0cnVjdGlvbiB0byBhIHdpc2UgbWFuLCBhbmQgaGUgd2lsbCBiZSB5ZXQgd2lzZXI6IHRlYWNoIGEganVzdCBtYW4sIGFuZCBoZSB3aWxsIGluY3JlYXNlIGluIGxlYXJuaW5nLgpUaGUgZmVhciBvZiB0aGUgTE9SRCBpcyB0aGUgYmVnaW5uaW5nIG9mIHdpc2RvbTogYW5kIHRoZSBrbm93bGVkZ2Ugb2YgdGhlIGhvbHkgaXMgdW5kZXJzdGFuZGluZy4KRm9yIGJ5IG1lIHRoeSBkYXlzIHNoYWxsIGJlIG11bHRpcGxpZWQsIGFuZCB0aGUgeWVhcnMgb2YgdGh5IGxpZmUgc2hhbGwgYmUgaW5jcmVhc2VkLgpJZiB0aG91IGJlIHdpc2UsIHRob3Ugc2hhbHQgYmUgd2lzZSBmb3IgdGh5c2VsZjogYnV0IGlmIHRob3Ugc2Nvcm5lc3QsIHRob3UgYWxvbmUgc2hhbHQgYmVhciBpdC4KQSBmb29saXNoIHdvbWFuIGlzIGNsYW1vcm91czogc2hlIGlzIHNpbXBsZSwgYW5kIGtub3dldGggbm90aGluZy4KRm9yIHNoZSBzaXR0ZXRoIGF0IHRoZSBkb29yIG9mIGhlciBob3VzZSwgb24gYSBzZWF0IGluIHRoZSBoaWdoIHBsYWNlcyBvZiB0aGUgY2l0eSwKVG8gY2FsbCBwYXNzZW5nZXJzIHdobyBnbyByaWdodCBvbiB0aGVpciB3YXlzOgpXaG9zbyBpcyBzaW1wbGUsIGxldCBoaW0gdHVybiBpbiBoaXRoZXI6IGFuZCBhcyBmb3IgaGltIHRoYXQgd2FudGV0aCB1bmRlcnN0YW5kaW5nLCBzaGUgc2FpdGggdG8gaGltLApTdG9sZW4gd2F0ZXJzIGFyZSBzd2VldCwgYW5kIGJyZWFkIGVhdGVuIGluIHNlY3JldCBpcyBwbGVhc2FudC4KQnV0IGhlIGtub3dldGggbm90IHRoYXQgdGhlIGRlYWQgYXJlIHRoZXJlOyBhbmQgdGhhdCBoZXIgZ3Vlc3RzIGFyZSBpbiB0aGUgZGVwdGhzIG9mIGhlbGwuClRoZSBwcm92ZXJicyBvZiBTb2xvbW9uLiBBIHdpc2Ugc29uIG1ha2V0aCBhIGdsYWQgZmF0aGVyOiBidXQgYSBmb29saXNoIHNvbiBpcyB0aGUgaGVhdmluZXNzIG9mIGhpcyBtb3RoZXIuClRyZWFzdXJlcyBvZiB3aWNrZWRuZXNzIHByb2ZpdCBub3RoaW5nOiBidXQgcmlnaHRlb3VzbmVzcyBkZWxpdmVyZXRoIGZyb20gZGVhdGguClRoZSBMT1JEIHdpbGwgbm90IHN1ZmZlciB0aGUgc291bCBvZiB0aGUgcmlnaHRlb3VzIHRvIGZhbWlzaDogYnV0IGhlIGNhc3RldGggYXdheSB0aGUgc3Vic3RhbmNlIG9mIHRoZSB3aWNrZWQuCkhlIGJlY29tZXRoIHBvb3IgdGhhdCBkZWFsZXRoIHdpdGggYSBzbGFjayBoYW5kOiBidXQgdGhlIGhhbmQgb2YgdGhlIGRpbGlnZW50IG1ha2V0aCByaWNoLgpIZSB0aGF0IGdhdGhlcmV0aCBpbiBzdW1tZXIgaXMgYSB3aXNlIHNvbjogYnV0IGhlIHRoYXQgc2xlZXBldGggaW4gaGFydmVzdCBpcyBhIHNvbiB0aGF0IGNhdXNldGggc2hhbWUuCkJsZXNzaW5ncyBhcmUgdXBvbiB0aGUgaGVhZCBvZiB0aGUganVzdDogYnV0IHZpb2xlbmNlIGNvdmVyZXRoIHRoZSBtb3V0aCBvZiB0aGUgd2lja2VkLgpUaGUgbWVtb3J5IG9mIHRoZSBqdXN0IGlzIGJsZXNzZWQ6IGJ1dCB0aGUgbmFtZSBvZiB0aGUgd2lja2VkIHNoYWxsIHJvdC4KVGhlIHdpc2UgaW4gaGVhcnQgd2lsbCByZWNlaXZlIGNvbW1hbmRtZW50czogYnV0IGEgcHJhdGluZyBmb29sIHNoYWxsIGZhbGwuCkhlIHRoYXQgd2Fsa2V0aCB1cHJpZ2h0bHkgd2Fsa2V0aCBzdXJlbHk6IGJ1dCBoZSB0aGF0IHBlcnZlcnRldGggaGlzIHdheXMgc2hhbGwgYmUga25vd24uCkhlIHRoYXQgd2lua2V0aCB3aXRoIHRoZSBleWUgY2F1c2V0aCBzb3Jyb3c6IGJ1dCBhIHByYXRpbmcgZm9vbCBzaGFsbCBmYWxsLgpUaGUgbW91dGggb2YgYSByaWdodGVvdXMgbWFuIGlzIGEgd2VsbCBvZiBsaWZlOiBidXQgdmlvbGVuY2UgY292ZXJldGggdGhlIG1vdXRoIG9mIHRoZSB3aWNrZWQuCkhhdHJlZCBzdGlycmV0aCB1cCBzdHJpZmVzOiBidXQgbG92ZSBjb3ZlcmV0aCBhbGwgc2lucy4KSW4gdGhlIGxpcHMgb2YgaGltIHRoYXQgaGF0aCB1bmRlcnN0YW5kaW5nIHdpc2RvbSBpcyBmb3VuZDogYnV0IGEgcm9kIGlzIGZvciB0aGUgYmFjayBvZiBoaW0gdGhhdCBpcyB2b2lkIG9mIHVuZGVyc3RhbmRpbmcuCldpc2UgbWVuIGxheSB1cCBrbm93bGVkZ2U6IGJ1dCB0aGUgbW91dGggb2YgdGhlIGZvb2xpc2ggaXMgbmVhciBkZXN0cnVjdGlvbi4KVGhlIHJpY2ggbWFuJ3Mgd2VhbHRoIGlzIGhpcyBzdHJvbmcgY2l0eTogdGhlIGRlc3RydWN0aW9uIG9mIHRoZSBwb29yIGlzIHRoZWlyIHBvdmVydHkuClRoZSBsYWJvdXIgb2YgdGhlIHJpZ2h0ZW91cyB0ZW5kZXRoIHRvIGxpZmU6IHRoZSBmcnVpdCBvZiB0aGUgd2lja2VkIHRvIHNpbi4KSGUgaXMgaW4gdGhlIHdheSBvZiBsaWZlIHRoYXQga2VlcGV0aCBpbnN0cnVjdGlvbjogYnV0IGhlIHRoYXQgcmVmdXNldGggcmVwcm9vZiBlcnJldGguCkhlIHRoYXQgaGlkZXRoIGhhdHJlZCB3aXRoIGx5aW5nIGxpcHMsIGFuZCBoZSB0aGF0IHV0dGVyZXRoIGEgc2xhbmRlciwgaXMgYSBmb29sLgpJbiB0aGUgbXVsdGl0dWRlIG9mIHdvcmRzIHRoZXJlIHdhbnRldGggbm90IHNpbjogYnV0IGhlIHRoYXQgcmVmcmFpbmV0aCBoaXMgbGlwcyBpcyB3aXNlLgpUaGUgdG9uZ3VlIG9mIHRoZSBqdXN0IGlzIGFzIGNob2ljZSBzaWx2ZXI6IHRoZSBoZWFydCBvZiB0aGUgd2lja2VkIGlzIGxpdHRsZSB3b3J0aC4KVGhlIGxpcHMgb2YgdGhlIHJpZ2h0ZW91cyBmZWVkIG1hbnk6IGJ1dCBmb29scyBkaWUgZm9yIHdhbnQgb2Ygd2lzZG9tLgpUaGUgYmxlc3Npbmcgb2YgdGhlIExPUkQsIGl0IG1ha2V0aCByaWNoLCBhbmQgaGUgYWRkZXRoIG5vIHNvcnJvdyB3aXRoIGl0LgpJdCBpcyBhcyBzcG9ydCB0byBhIGZvb2wgdG8gZG8gbWlzY2hpZWY6IGJ1dCBhIG1hbiBvZiB1bmRlcnN0YW5kaW5nIGhhdGggd2lzZG9tLgpUaGUgZmVhciBvZiB0aGUgd2lja2VkLCBpdCBzaGFsbCBjb21lIHVwb24gaGltOiBidXQgdGhlIGRlc2lyZSBvZiB0aGUgcmlnaHRlb3VzIHNoYWxsIGJlIGdyYW50ZWQuCkFzIHRoZSB3aGlybHdpbmQgcGFzc2V0aCwgc28gaXMgdGhlIHdpY2tlZCBubyBtb3JlOiBidXQgdGhlIHJpZ2h0ZW91cyBpcyBhbiBldmVybGFzdGluZyBmb3VuZGF0aW9uLgpBcyB2aW5lZ2FyIHRvIHRoZSB0ZWV0aCwgYW5kIGFzIHNtb2tlIHRvIHRoZSBleWVzLCBzbyBpcyB0aGUgc2x1Z2dhcmQgdG8gdGhlbSB0aGF0IHNlbmQgaGltLgpUaGUgZmVhciBvZiB0aGUgTE9SRCBwcm9sb25nZXRoIGRheXM6IGJ1dCB0aGUgeWVhcnMgb2YgdGhlIHdpY2tlZCBzaGFsbCBiZSBzaG9ydGVuZWQuClRoZSBob3BlIG9mIHRoZSByaWdodGVvdXMgc2hhbGwgYmUgZ2xhZG5lc3M6IGJ1dCB0aGUgZXhwZWN0YXRpb24gb2YgdGhlIHdpY2tlZCBzaGFsbCBwZXJpc2guClRoZSB3YXkgb2YgdGhlIExPUkQgaXMgc3RyZW5ndGggdG8gdGhlIHVwcmlnaHQ6IGJ1dCBkZXN0cnVjdGlvbiBzaGFsbCBiZSB0byB0aGUgd29ya2VycyBvZiBpbmlxdWl0eS4KVGhlIHJpZ2h0ZW91cyBzaGFsbCBuZXZlciBiZSByZW1vdmVkOiBidXQgdGhlIHdpY2tlZCBzaGFsbCBub3QgaW5oYWJpdCB0aGUgZWFydGguClRoZSBtb3V0aCBvZiB0aGUganVzdCBicmluZ2V0aCBmb3J0aCB3aXNkb206IGJ1dCB0aGUgZnJvd2FyZCB0b25ndWUgc2hhbGwgYmUgY3V0IG91dC4KVGhlIGxpcHMgb2YgdGhlIHJpZ2h0ZW91cyBrbm93IHdoYXQgaXMgYWNjZXB0YWJsZTogYnV0IHRoZSBtb3V0aCBvZiB0aGUgd2lja2VkIHNwZWFrZXRoIGZyb3dhcmRuZXNzLgpBIGZhbHNlIGJhbGFuY2UgaXMgYWJvbWluYXRpb24gdG8gdGhlIExPUkQ6IGJ1dCBhIGp1c3Qgd2VpZ2h0IGlzIGhpcyBkZWxpZ2h0LgpXaGVuIHByaWRlIGNvbWV0aCwgdGhlbiBjb21ldGggc2hhbWU6IGJ1dCB3aXRoIHRoZSBsb3dseSBpcyB3aXNkb20uClRoZSBpbnRlZ3JpdHkgb2YgdGhlIHVwcmlnaHQgc2hhbGwgZ3VpZGUgdGhlbTogYnV0IHRoZSBwZXJ2ZXJzZW5lc3Mgb2YgdHJhbnNncmVzc29ycyBzaGFsbCBkZXN0cm95IHRoZW0uClJpY2hlcyBwcm9maXQgbm90IGluIHRoZSBkYXkgb2Ygd3JhdGg6IGJ1dCByaWdodGVvdXNuZXNzIGRlbGl2ZXJldGggZnJvbSBkZWF0aC4KVGhlIHJpZ2h0ZW91c25lc3Mgb2YgdGhlIHBlcmZlY3Qgc2hhbGwgZGlyZWN0IGhpcyB3YXk6IGJ1dCB0aGUgd2lja2VkIHNoYWxsIGZhbGwgYnkgaGlzIG93biB3aWNrZWRuZXNzLgpUaGUgcmlnaHRlb3VzbmVzcyBvZiB0aGUgdXByaWdodCBzaGFsbCBkZWxpdmVyIHRoZW06IGJ1dCB0cmFuc2dyZXNzb3JzIHNoYWxsIGJlIHRha2VuIGluIHRoZWlyIG93biBuYXVnaHRpbmVzcy4KV2hlbiBhIHdpY2tlZCBtYW4gZGlldGgsIGhpcyBleHBlY3RhdGlvbiBzaGFsbCBwZXJpc2g6IGFuZCB0aGUgaG9wZSBvZiB1bmp1c3QgbWVuIHBlcmlzaGV0aC4KVGhlIHJpZ2h0ZW91cyBpcyBkZWxpdmVyZWQgb3V0IG9mIHRyb3VibGUsIGFuZCB0aGUgd2lja2VkIGNvbWV0aCBpbiBoaXMgc3RlYWQuCkFuIGh5cG9jcml0ZSB3aXRoIGhpcyBtb3V0aCBkZXN0cm95ZXRoIGhpcyBuZWlnaGJvdXI6IGJ1dCB0aHJvdWdoIGtub3dsZWRnZSBzaGFsbCB0aGUganVzdCBiZSBkZWxpdmVyZWQuCldoZW4gaXQgZ29ldGggd2VsbCB3aXRoIHRoZSByaWdodGVvdXMsIHRoZSBjaXR5IHJlam9pY2V0aDogYW5kIHdoZW4gdGhlIHdpY2tlZCBwZXJpc2gsIHRoZXJlIGlzIHNob3V0aW5nLgpCeSB0aGUgYmxlc3Npbmcgb2YgdGhlIHVwcmlnaHQgdGhlIGNpdHkgaXMgZXhhbHRlZDogYnV0IGl0IGlzIG92ZXJ0aHJvd24gYnkgdGhlIG1vdXRoIG9mIHRoZSB3aWNrZWQuCkhlIHRoYXQgaXMgdm9pZCBvZiB3aXNkb20gZGVzcGlzZXRoIGhpcyBuZWlnaGJvdXI6IGJ1dCBhIG1hbiBvZiB1bmRlcnN0YW5kaW5nIGhvbGRldGggaGlzIHBlYWNlLgpBIHRhbGViZWFyZXIgcmV2ZWFsZXRoIHNlY3JldHM6IGJ1dCBoZSB0aGF0IGlzIG9mIGEgZmFpdGhmdWwgc3Bpcml0IGNvbmNlYWxldGggdGhlIG1hdHRlci4KV2hlcmUgbm8gY291bnNlbCBpcywgdGhlIHBlb3BsZSBmYWxsOiBidXQgaW4gdGhlIG11bHRpdHVkZSBvZiBjb3Vuc2VsbG9ycyB0aGVyZSBpcyBzYWZldHkuCkhlIHRoYXQgaXMgc3VyZXR5IGZvciBhIHN0cmFuZ2VyIHNoYWxsIHNtYXJ0IGZvciBpdDogYW5kIGhlIHRoYXQgaGF0ZXRoIHN1cmV0aXNoaXAgaXMgc3VyZS4KQSBncmFjaW91cyB3b21hbiByZXRhaW5ldGggaG9ub3VyOiBhbmQgc3Ryb25nIG1lbiByZXRhaW4gcmljaGVzLgpUaGUgbWVyY2lmdWwgbWFuIGRvZXRoIGdvb2QgdG8gaGlzIG93biBzb3VsOiBidXQgaGUgdGhhdCBpcyBjcnVlbCB0cm91YmxldGggaGlzIG93biBmbGVzaC4KVGhlIHdpY2tlZCB3b3JrZXRoIGEgZGVjZWl0ZnVsIHdvcms6IGJ1dCB0byBoaW0gdGhhdCBzb3dldGggcmlnaHRlb3VzbmVzcyBzaGFsbCBiZSBhIHN1cmUgcmV3YXJkLgpBcyByaWdodGVvdXNuZXNzIHRlbmRldGggdG8gbGlmZTogc28gaGUgdGhhdCBwdXJzdWV0aCBldmlsIHB1cnN1ZXRoIGl0IHRvIGhpcyBvd24gZGVhdGguClRoZXkgdGhhdCBhcmUgb2YgYSBmcm93YXJkIGhlYXJ0IGFyZSBhYm9taW5hdGlvbiB0byB0aGUgTE9SRDogYnV0IHN1Y2ggYXMgYXJlIHVwcmlnaHQgaW4gdGhlaXIgd2F5IGFyZSBoaXMgZGVsaWdodC4KVGhvdWdoIGhhbmQgam9pbiBpbiBoYW5kLCB0aGUgd2lja2VkIHNoYWxsIG5vdCBiZSB1bnB1bmlzaGVkOiBidXQgdGhlIHNlZWQgb2YgdGhlIHJpZ2h0ZW91cyBzaGFsbCBiZSBkZWxpdmVyZWQuCkFzIGEgamV3ZWwgb2YgZ29sZCBpbiBhIHN3aW5lJ3Mgc25vdXQsIHNvIGlzIGEgZmFpciB3b21hbiB3aGljaCBpcyB3aXRob3V0IGRpc2NyZXRpb24uClRoZSBkZXNpcmUgb2YgdGhlIHJpZ2h0ZW91cyBpcyBvbmx5IGdvb2Q6IGJ1dCB0aGUgZXhwZWN0YXRpb24gb2YgdGhlIHdpY2tlZCBpcyB3cmF0aC4KVGhlcmUgaXMgdGhhdCBzY2F0dGVyZXRoLCBhbmQgeWV0IGluY3JlYXNldGg7IGFuZCB0aGVyZSBpcyB0aGF0IHdpdGhob2xkZXRoIG1vcmUgdGhhbiBpcyBtZWV0LCBidXQgaXQgdGVuZGV0aCB0byBwb3ZlcnR5LgpUaGUgbGliZXJhbCBzb3VsIHNoYWxsIGJlIG1hZGUgZmF0OiBhbmQgaGUgdGhhdCB3YXRlcmV0aCBzaGFsbCBiZSB3YXRlcmVkIGFsc28gaGltc2VsZi4KSGUgdGhhdCB3aXRoaG9sZGV0aCBjb3JuLCB0aGUgcGVvcGxlIHNoYWxsIGN1cnNlIGhpbTogYnV0IGJsZXNzaW5nIHNoYWxsIGJlIHVwb24gdGhlIGhlYWQgb2YgaGltIHRoYXQgc2VsbGV0aCBpdC4KSGUgdGhhdCBkaWxpZ2VudGx5IHNlZWtldGggZ29vZCBwcm9jdXJldGggZmF2b3VyOiBidXQgaGUgdGhhdCBzZWVrZXRoIG1pc2NoaWVmLCBpdCBzaGFsbCBjb21lIHVudG8gaGltLgpIZSB0aGF0IHRydXN0ZXRoIGluIGhpcyByaWNoZXMgc2hhbGwgZmFsbDsgYnV0IHRoZSByaWdodGVvdXMgc2hhbGwgZmxvdXJpc2ggYXMgYSBicmFuY2guCkhlIHRoYXQgdHJvdWJsZXRoIGhpcyBvd24gaG91c2Ugc2hhbGwgaW5oZXJpdCB0aGUgd2luZDogYW5kIHRoZSBmb29sIHNoYWxsIGJlIHNlcnZhbnQgdG8gdGhlIHdpc2Ugb2YgaGVhcnQuClRoZSBmcnVpdCBvZiB0aGUgcmlnaHRlb3VzIGlzIGEgdHJlZSBvZiBsaWZlOyBhbmQgaGUgdGhhdCB3aW5uZXRoIHNvdWxzIGlzIHdpc2UuCkJlaG9sZCwgdGhlIHJpZ2h0ZW91cyBzaGFsbCBiZSByZWNvbXBlbnNlZCBpbiB0aGUgZWFydGg6IG11Y2ggbW9yZSB0aGUgd2lja2VkIGFuZCB0aGUgc2lubmVyLgpXaG9zbyBsb3ZldGggaW5zdHJ1Y3Rpb24gbG92ZXRoIGtub3dsZWRnZTogYnV0IGhlIHRoYXQgaGF0ZXRoIHJlcHJvb2YgaXMgYnJ1dGlzaC4KQSBnb29kIG1hbiBvYnRhaW5ldGggZmF2b3VyIG9mIHRoZSBMT1JEOiBidXQgYSBtYW4gb2Ygd2lja2VkIGRldmljZXMgd2lsbCBoZSBjb25kZW1uLgpBIG1hbiBzaGFsbCBub3QgYmUgZXN0YWJsaXNoZWQgYnkgd2lja2VkbmVzczogYnV0IHRoZSByb290IG9mIHRoZSByaWdodGVvdXMgc2hhbGwgbm90IGJlIG1vdmVkLgpBIHZpcnR1b3VzIHdvbWFuIGlzIGEgY3Jvd24gdG8gaGVyIGh1c2JhbmQ6IGJ1dCBzaGUgdGhhdCBtYWtldGggYXNoYW1lZCBpcyBhcyByb3R0ZW5uZXNzIGluIGhpcyBib25lcy4KVGhlIHRob3VnaHRzIG9mIHRoZSByaWdodGVvdXMgYXJlIHJpZ2h0OiBidXQgdGhlIGNvdW5zZWxzIG9mIHRoZSB3aWNrZWQgYXJlIGRlY2VpdC4KVGhlIHdvcmRzIG9mIHRoZSB3aWNrZWQgYXJlIHRvIGxpZSBpbiB3YWl0IGZvciBibG9vZDogYnV0IHRoZSBtb3V0aCBvZiB0aGUgdXByaWdodCBzaGFsbCBkZWxpdmVyIHRoZW0uClRoZSB3aWNrZWQgYXJlIG92ZXJ0aHJvd24sIGFuZCBhcmUgbm90OiBidXQgdGhlIGhvdXNlIG9mIHRoZSByaWdodGVvdXMgc2hhbGwgc3RhbmQuCkEgbWFuIHNoYWxsIGJlIGNvbW1lbmRlZCBhY2NvcmRpbmcgdG8gaGlzIHdpc2RvbTogYnV0IGhlIHRoYXQgaXMgb2YgYSBwZXJ2ZXJzZSBoZWFydCBzaGFsbCBiZSBkZXNwaXNlZC4KSGUgdGhhdCBpcyBkZXNwaXNlZCwgYW5kIGhhdGggYSBzZXJ2YW50LCBpcyBiZXR0ZXIgdGhhbiBoZSB0aGF0IGhvbm91cmV0aCBoaW1zZWxmLCBhbmQgbGFja2V0aCBicmVhZC4KQSByaWdodGVvdXMgbWFuIHJlZ2FyZGV0aCB0aGUgbGlmZSBvZiBoaXMgYmVhc3Q6IGJ1dCB0aGUgdGVuZGVyIG1lcmNpZXMgb2YgdGhlIHdpY2tlZCBhcmUgY3J1ZWwuCkhlIHRoYXQgdGlsbGV0aCBoaXMgbGFuZCBzaGFsbCBiZSBzYXRpc2ZpZWQgd2l0aCBicmVhZDogYnV0IGhlIHRoYXQgZm9sbG93ZXRoIHZhaW4gcGVyc29ucyBpcyB2b2lkIG9mIHVuZGVyc3RhbmRpbmcuClRoZSB3aWNrZWQgZGVzaXJldGggdGhlIG5ldCBvZiBldmlsIG1lbjogYnV0IHRoZSByb290IG9mIHRoZSByaWdodGVvdXMgeWllbGRldGggZnJ1aXQuClRoZSB3aWNrZWQgaXMgc25hcmVkIGJ5IHRoZSB0cmFuc2dyZXNzaW9uIG9mIGhpcyBsaXBzOiBidXQgdGhlIGp1c3Qgc2hhbGwgY29tZSBvdXQgb2YgdHJvdWJsZS4KQSBtYW4gc2hhbGwgYmUgc2F0aXNmaWVkIHdpdGggZ29vZCBieSB0aGUgZnJ1aXQgb2YgaGlzIG1vdXRoOiBhbmQgdGhlIHJlY29tcGVuY2Ugb2YgYSBtYW4ncyBoYW5kcyBzaGFsbCBiZSByZW5kZXJlZCB1bnRvIGhpbS4KVGhlIHdheSBvZiBhIGZvb2wgaXMgcmlnaHQgaW4gaGlzIG93biBleWVzOiBidXQgaGUgdGhhdCBoZWFya2VuZXRoIHVudG8gY291bnNlbCBpcyB3aXNlLgpBIGZvb2wncyB3cmF0aCBpcyBwcmVzZW50bHkga25vd246IGJ1dCBhIHBydWRlbnQgbWFuIGNvdmVyZXRoIHNoYW1lLgpIZSB0aGF0IHNwZWFrZXRoIHRydXRoIHNoZXdldGggZm9ydGggcmlnaHRlb3VzbmVzczogYnV0IGEgZmFsc2Ugd2l0bmVzcyBkZWNlaXQuClRoZXJlIGlzIHRoYXQgc3BlYWtldGggbGlrZSB0aGUgcGllcmNpbmdzIG9mIGEgc3dvcmQ6IGJ1dCB0aGUgdG9uZ3VlIG9mIHRoZSB3aXNlIGlzIGhlYWx0aC4KVGhlIGxpcCBvZiB0cnV0aCBzaGFsbCBiZSBlc3RhYmxpc2hlZCBmb3IgZXZlcjogYnV0IGEgbHlpbmcgdG9uZ3VlIGlzIGJ1dCBmb3IgYSBtb21lbnQuCkRlY2VpdCBpcyBpbiB0aGUgaGVhcnQgb2YgdGhlbSB0aGF0IGltYWdpbmUgZXZpbDogYnV0IHRvIHRoZSBjb3Vuc2VsbG9ycyBvZiBwZWFjZSBpcyBqb3kuClRoZXJlIHNoYWxsIG5vIGV2aWwgaGFwcGVuIHRvIHRoZSBqdXN0OiBidXQgdGhlIHdpY2tlZCBzaGFsbCBiZSBmaWxsZWQgd2l0aCBtaXNjaGllZi4KTHlpbmcgbGlwcyBhcmUgYWJvbWluYXRpb24gdG8gdGhlIExPUkQ6IGJ1dCB0aGV5IHRoYXQgZGVhbCB0cnVseSBhcmUgaGlzIGRlbGlnaHQuCkEgcHJ1ZGVudCBtYW4gY29uY2VhbGV0aCBrbm93bGVkZ2U6IGJ1dCB0aGUgaGVhcnQgb2YgZm9vbHMgcHJvY2xhaW1ldGggZm9vbGlzaG5lc3MuClRoZSBoYW5kIG9mIHRoZSBkaWxpZ2VudCBzaGFsbCBiZWFyIHJ1bGU6IGJ1dCB0aGUgc2xvdGhmdWwgc2hhbGwgYmUgdW5kZXIgdHJpYnV0ZS4KSGVhdmluZXNzIGluIHRoZSBoZWFydCBvZiBtYW4gbWFrZXRoIGl0IHN0b29wOiBidXQgYSBnb29kIHdvcmQgbWFrZXRoIGl0IGdsYWQuClRoZSByaWdodGVvdXMgaXMgbW9yZSBleGNlbGxlbnQgdGhhbiBoaXMgbmVpZ2hib3VyOiBidXQgdGhlIHdheSBvZiB0aGUgd2lja2VkIHNlZHVjZXRoIHRoZW0uClRoZSBzbG90aGZ1bCBtYW4gcm9hc3RldGggbm90IHRoYXQgd2hpY2ggaGUgdG9vayBpbiBodW50aW5nOiBidXQgdGhlIHN1YnN0YW5jZSBvZiBhIGRpbGlnZW50IG1hbiBpcyBwcmVjaW91cy4KSW4gdGhlIHdheSBvZiByaWdodGVvdXNuZXNzIGlzIGxpZmU6IGFuZCBpbiB0aGUgcGF0aHdheSB0aGVyZW9mIHRoZXJlIGlzIG5vIGRlYXRoLgpBIHdpc2Ugc29uIGhlYXJldGggaGlzIGZhdGhlcidzIGluc3RydWN0aW9uOiBidXQgYSBzY29ybmVyIGhlYXJldGggbm90IHJlYnVrZS4KQSBtYW4gc2hhbGwgZWF0IGdvb2QgYnkgdGhlIGZydWl0IG9mIGhpcyBtb3V0aDogYnV0IHRoZSBzb3VsIG9mIHRoZSB0cmFuc2dyZXNzb3JzIHNoYWxsIGVhdCB2aW9sZW5jZS4KSGUgdGhhdCBrZWVwZXRoIGhpcyBtb3V0aCBrZWVwZXRoIGhpcyBsaWZlOiBidXQgaGUgdGhhdCBvcGVuZXRoIHdpZGUgaGlzIGxpcHMgc2hhbGwgaGF2ZSBkZXN0cnVjdGlvbi4KVGhlIHNvdWwgb2YgdGhlIHNsdWdnYXJkIGRlc2lyZXRoLCBhbmQgaGF0aCBub3RoaW5nOiBidXQgdGhlIHNvdWwgb2YgdGhlIGRpbGlnZW50IHNoYWxsIGJlIG1hZGUgZmF0LgpBIHJpZ2h0ZW91cyBtYW4gaGF0ZXRoIGx5aW5nOiBidXQgYSB3aWNrZWQgbWFuIGlzIGxvYXRoc29tZSwgYW5kIGNvbWV0aCB0byBzaGFtZS4KUmlnaHRlb3VzbmVzcyBrZWVwZXRoIGhpbSB0aGF0IGlzIHVwcmlnaHQgaW4gdGhlIHdheTogYnV0IHdpY2tlZG5lc3Mgb3ZlcnRocm93ZXRoIHRoZSBzaW5uZXIuClRoZXJlIGlzIHRoYXQgbWFrZXRoIGhpbXNlbGYgcmljaCwgeWV0IGhhdGggbm90aGluZzogdGhlcmUgaXMgdGhhdCBtYWtldGggaGltc2VsZiBwb29yLCB5ZXQgaGF0aCBncmVhdCByaWNoZXMuClRoZSByYW5zb20gb2YgYSBtYW4ncyBsaWZlIGFyZSBoaXMgcmljaGVzOiBidXQgdGhlIHBvb3IgaGVhcmV0aCBub3QgcmVidWtlLgpUaGUgbGlnaHQgb2YgdGhlIHJpZ2h0ZW91cyByZWpvaWNldGg6IGJ1dCB0aGUgbGFtcCBvZiB0aGUgd2lja2VkIHNoYWxsIGJlIHB1dCBvdXQuCk9ubHkgYnkgcHJpZGUgY29tZXRoIGNvbnRlbnRpb246IGJ1dCB3aXRoIHRoZSB3ZWxsIGFkdmlzZWQgaXMgd2lzZG9tLgpXZWFsdGggZ290dGVuIGJ5IHZhbml0eSBzaGFsbCBiZSBkaW1pbmlzaGVkOiBidXQgaGUgdGhhdCBnYXRoZXJldGggYnkgbGFib3VyIHNoYWxsIGluY3JlYXNlLgpIb3BlIGRlZmVycmVkIG1ha2V0aCB0aGUgaGVhcnQgc2ljazogYnV0IHdoZW4gdGhlIGRlc2lyZSBjb21ldGgsIGl0IGlzIGEgdHJlZSBvZiBsaWZlLgpXaG9zbyBkZXNwaXNldGggdGhlIHdvcmQgc2hhbGwgYmUgZGVzdHJveWVkOiBidXQgaGUgdGhhdCBmZWFyZXRoIHRoZSBjb21tYW5kbWVudCBzaGFsbCBiZSByZXdhcmRlZC4KVGhlIGxhdyBvZiB0aGUgd2lzZSBpcyBhIGZvdW50YWluIG9mIGxpZmUsIHRvIGRlcGFydCBmcm9tIHRoZSBzbmFyZXMgb2YgZGVhdGguCkdvb2QgdW5kZXJzdGFuZGluZyBnaXZldGggZmF2b3VyOiBidXQgdGhlIHdheSBvZiB0cmFuc2dyZXNzb3JzIGlzIGhhcmQuCkV2ZXJ5IHBydWRlbnQgbWFuIGRlYWxldGggd2l0aCBrbm93bGVkZ2U6IGJ1dCBhIGZvb2wgbGF5ZXRoIG9wZW4gaGlzIGZvbGx5LgpBIHdpY2tlZCBtZXNzZW5nZXIgZmFsbGV0aCBpbnRvIG1pc2NoaWVmOiBidXQgYSBmYWl0aGZ1bCBhbWJhc3NhZG9yIGlzIGhlYWx0aC4KUG92ZXJ0eSBhbmQgc2hhbWUgc2hhbGwgYmUgdG8gaGltIHRoYXQgcmVmdXNldGggaW5zdHJ1Y3Rpb246IGJ1dCBoZSB0aGF0IHJlZ2FyZGV0aCByZXByb29mIHNoYWxsIGJlIGhvbm91cmVkLgpUaGUgZGVzaXJlIGFjY29tcGxpc2hlZCBpcyBzd2VldCB0byB0aGUgc291bDogYnV0IGl0IGlzIGFib21pbmF0aW9uIHRvIGZvb2xzIHRvIGRlcGFydCBmcm9tIGV2aWwuCkhlIHRoYXQgd2Fsa2V0aCB3aXRoIHdpc2UgbWVuIHNoYWxsIGJlIHdpc2U6IGJ1dCBhIGNvbXBhbmlvbiBvZiBmb29scyBzaGFsbCBiZSBkZXN0cm95ZWQuCkV2aWwgcHVyc3VldGggc2lubmVyczogYnV0IHRvIHRoZSByaWdodGVvdXMgZ29vZCBzaGFsbCBiZSByZXBheWVkLgpBIGdvb2QgbWFuIGxlYXZldGggYW4gaW5oZXJpdGFuY2UgdG8gaGlzIGNoaWxkcmVuJ3MgY2hpbGRyZW46IGFuZCB0aGUgd2VhbHRoIG9mIHRoZSBzaW5uZXIgaXMgbGFpZCB1cCBmb3IgdGhlIGp1c3QuCk11Y2ggZm9vZCBpcyBpbiB0aGUgdGlsbGFnZSBvZiB0aGUgcG9vcjogYnV0IHRoZXJlIGlzIHRoYXQgaXMgZGVzdHJveWVkIGZvciB3YW50IG9mIGp1ZGdtZW50LgpIZSB0aGF0IHNwYXJldGggaGlzIHJvZCBoYXRldGggaGlzIHNvbjogYnV0IGhlIHRoYXQgbG92ZXRoIGhpbSBjaGFzdGVuZXRoIGhpbSBiZXRpbWVzLgpUaGUgcmlnaHRlb3VzIGVhdGV0aCB0byB0aGUgc2F0aXNmeWluZyBvZiBoaXMgc291bDogYnV0IHRoZSBiZWxseSBvZiB0aGUgd2lja2VkIHNoYWxsIHdhbnQuCkV2ZXJ5IHdpc2Ugd29tYW4gYnVpbGRldGggaGVyIGhvdXNlOiBidXQgdGhlIGZvb2xpc2ggcGx1Y2tldGggaXQgZG93biB3aXRoIGhlciBoYW5kcy4KSGUgdGhhdCB3YWxrZXRoIGluIGhpcyB1cHJpZ2h0bmVzcyBmZWFyZXRoIHRoZSBMT1JEOiBidXQgaGUgdGhhdCBpcyBwZXJ2ZXJzZSBpbiBoaXMgd2F5cyBkZXNwaXNldGggaGltLgpJbiB0aGUgbW91dGggb2YgdGhlIGZvb2xpc2ggaXMgYSByb2Qgb2YgcHJpZGU6IGJ1dCB0aGUgbGlwcyBvZiB0aGUgd2lzZSBzaGFsbCBwcmVzZXJ2ZSB0aGVtLgpXaGVyZSBubyBveGVuIGFyZSwgdGhlIGNyaWIgaXMgY2xlYW46IGJ1dCBtdWNoIGluY3JlYXNlIGlzIGJ5IHRoZSBzdHJlbmd0aCBvZiB0aGUgb3guCkEgZmFpdGhmdWwgd2l0bmVzcyB3aWxsIG5vdCBsaWU6IGJ1dCBhIGZhbHNlIHdpdG5lc3Mgd2lsbCB1dHRlciBsaWVzLgpBIHNjb3JuZXIgc2Vla2V0aCB3aXNkb20sIGFuZCBmaW5kZXRoIGl0IG5vdDogYnV0IGtub3dsZWRnZSBpcyBlYXN5IHVudG8gaGltIHRoYXQgdW5kZXJzdGFuZGV0aC4KR28gZnJvbSB0aGUgcHJlc2VuY2Ugb2YgYSBmb29saXNoIG1hbiwgd2hlbiB0aG91IHBlcmNlaXZlc3Qgbm90IGluIGhpbSB0aGUgbGlwcyBvZiBrbm93bGVkZ2UuClRoZSB3aXNkb20gb2YgdGhlIHBydWRlbnQgaXMgdG8gdW5kZXJzdGFuZCBoaXMgd2F5OiBidXQgdGhlIGZvbGx5IG9mIGZvb2xzIGlzIGRlY2VpdC4KRm9vbHMgbWFrZSBhIG1vY2sgYXQgc2luOiBidXQgYW1vbmcgdGhlIHJpZ2h0ZW91cyB0aGVyZSBpcyBmYXZvdXIuClRoZSBoZWFydCBrbm93ZXRoIGhpcyBvd24gYml0dGVybmVzczsgYW5kIGEgc3RyYW5nZXIgZG90aCBub3QgaW50ZXJtZWRkbGUgd2l0aCBoaXMgam95LgpUaGUgaG91c2Ugb2YgdGhlIHdpY2tlZCBzaGFsbCBiZSBvdmVydGhyb3duOiBidXQgdGhlIHRhYmVybmFjbGUgb2YgdGhlIHVwcmlnaHQgc2hhbGwgZmxvdXJpc2guClRoZXJlIGlzIGEgd2F5IHdoaWNoIHNlZW1ldGggcmlnaHQgdW50byBhIG1hbiwgYnV0IHRoZSBlbmQgdGhlcmVvZiBhcmUgdGhlIHdheXMgb2YgZGVhdGguCkV2ZW4gaW4gbGF1Z2h0ZXIgdGhlIGhlYXJ0IGlzIHNvcnJvd2Z1bDsgYW5kIHRoZSBlbmQgb2YgdGhhdCBtaXJ0aCBpcyBoZWF2aW5lc3MuClRoZSBiYWNrc2xpZGVyIGluIGhlYXJ0IHNoYWxsIGJlIGZpbGxlZCB3aXRoIGhpcyBvd24gd2F5czogYW5kIGEgZ29vZCBtYW4gc2hhbGwgYmUgc2F0aXNmaWVkIGZyb20gaGltc2VsZi4KVGhlIHNpbXBsZSBiZWxpZXZldGggZXZlcnkgd29yZDogYnV0IHRoZSBwcnVkZW50IG1hbiBsb29rZXRoIHdlbGwgdG8gaGlzIGdvaW5nLgpBIHdpc2UgbWFuIGZlYXJldGgsIGFuZCBkZXBhcnRldGggZnJvbSBldmlsOiBidXQgdGhlIGZvb2wgcmFnZXRoLCBhbmQgaXMgY29uZmlkZW50LgpIZSB0aGF0IGlzIHNvb24gYW5ncnkgZGVhbGV0aCBmb29saXNobHk6IGFuZCBhIG1hbiBvZiB3aWNrZWQgZGV2aWNlcyBpcyBoYXRlZC4KVGhlIHNpbXBsZSBpbmhlcml0IGZvbGx5OiBidXQgdGhlIHBydWRlbnQgYXJlIGNyb3duZWQgd2l0aCBrbm93bGVkZ2UuClRoZSBldmlsIGJvdyBiZWZvcmUgdGhlIGdvb2Q7IGFuZCB0aGUgd2lja2VkIGF0IHRoZSBnYXRlcyBvZiB0aGUgcmlnaHRlb3VzLgpUaGUgcG9vciBpcyBoYXRlZCBldmVuIG9mIGhpcyBvd24gbmVpZ2hib3VyOiBidXQgdGhlIHJpY2ggaGF0aCBtYW55IGZyaWVuZHMuCkhlIHRoYXQgZGVzcGlzZXRoIGhpcyBuZWlnaGJvdXIgc2lubmV0aDogYnV0IGhlIHRoYXQgaGF0aCBtZXJjeSBvbiB0aGUgcG9vciwgaGFwcHkgaXMgaGUuCkRvIHRoZXkgbm90IGVyciB0aGF0IGRldmlzZSBldmlsPyBidXQgbWVyY3kgYW5kIHRydXRoIHNoYWxsIGJlIHRvIHRoZW0gdGhhdCBkZXZpc2UgZ29vZC4KSW4gYWxsIGxhYm91ciB0aGVyZSBpcyBwcm9maXQ6IGJ1dCB0aGUgdGFsayBvZiB0aGUgbGlwcyB0ZW5kZXRoIG9ubHkgdG8gcGVudXJ5LgpUaGUgY3Jvd24gb2YgdGhlIHdpc2UgaXMgdGhlaXIgcmljaGVzOiBidXQgdGhlIGZvb2xpc2huZXNzIG9mIGZvb2xzIGlzIGZvbGx5LgpBIHRydWUgd2l0bmVzcyBkZWxpdmVyZXRoIHNvdWxzOiBidXQgYSBkZWNlaXRmdWwgd2l0bmVzcyBzcGVha2V0aCBsaWVzLgpJbiB0aGUgZmVhciBvZiB0aGUgTE9SRCBpcyBzdHJvbmcgY29uZmlkZW5jZTogYW5kIGhpcyBjaGlsZHJlbiBzaGFsbCBoYXZlIGEgcGxhY2Ugb2YgcmVmdWdlLgpUaGUgZmVhciBvZiB0aGUgTE9SRCBpcyBhIGZvdW50YWluIG9mIGxpZmUsIHRvIGRlcGFydCBmcm9tIHRoZSBzbmFyZXMgb2YgZGVhdGguCkluIHRoZSBtdWx0aXR1ZGUgb2YgcGVvcGxlIGlzIHRoZSBraW5nJ3MgaG9ub3VyOiBidXQgaW4gdGhlIHdhbnQgb2YgcGVvcGxlIGlzIHRoZSBkZXN0cnVjdGlvbiBvZiB0aGUgcHJpbmNlLgpIZSB0aGF0IGlzIHNsb3cgdG8gd3JhdGggaXMgb2YgZ3JlYXQgdW5kZXJzdGFuZGluZzogYnV0IGhlIHRoYXQgaXMgaGFzdHkgb2Ygc3Bpcml0IGV4YWx0ZXRoIGZvbGx5LgpBIHNvdW5kIGhlYXJ0IGlzIHRoZSBsaWZlIG9mIHRoZSBmbGVzaDogYnV0IGVudnkgdGhlIHJvdHRlbm5lc3Mgb2YgdGhlIGJvbmVzLgpIZSB0aGF0IG9wcHJlc3NldGggdGhlIHBvb3IgcmVwcm9hY2hldGggaGlzIE1ha2VyOiBidXQgaGUgdGhhdCBob25vdXJldGggaGltIGhhdGggbWVyY3kgb24gdGhlIHBvb3IuClRoZSB3aWNrZWQgaXMgZHJpdmVuIGF3YXkgaW4gaGlzIHdpY2tlZG5lc3M6IGJ1dCB0aGUgcmlnaHRlb3VzIGhhdGggaG9wZSBpbiBoaXMgZGVhdGguCldpc2RvbSByZXN0ZXRoIGluIHRoZSBoZWFydCBvZiBoaW0gdGhhdCBoYXRoIHVuZGVyc3RhbmRpbmc6IGJ1dCB0aGF0IHdoaWNoIGlzIGluIHRoZSBtaWRzdCBvZiBmb29scyBpcyBtYWRlIGtub3duLgpSaWdodGVvdXNuZXNzIGV4YWx0ZXRoIGEgbmF0aW9uOiBidXQgc2luIGlzIGEgcmVwcm9hY2ggdG8gYW55IHBlb3BsZS4KVGhlIGtpbmcncyBmYXZvdXIgaXMgdG93YXJkIGEgd2lzZSBzZXJ2YW50OiBidXQgaGlzIHdyYXRoIGlzIGFnYWluc3QgaGltIHRoYXQgY2F1c2V0aCBzaGFtZS4KQSBzb2Z0IGFuc3dlciB0dXJuZXRoIGF3YXkgd3JhdGg6IGJ1dCBncmlldm91cyB3b3JkcyBzdGlyIHVwIGFuZ2VyLgpUaGUgdG9uZ3VlIG9mIHRoZSB3aXNlIHVzZXRoIGtub3dsZWRnZSBhcmlnaHQ6IGJ1dCB0aGUgbW91dGggb2YgZm9vbHMgcG91cmV0aCBvdXQgZm9vbGlzaG5lc3MuClRoZSBleWVzIG9mIHRoZSBMT1JEIGFyZSBpbiBldmVyeSBwbGFjZSwgYmVob2xkaW5nIHRoZSBldmlsIGFuZCB0aGUgZ29vZC4KQSB3aG9sZXNvbWUgdG9uZ3VlIGlzIGEgdHJlZSBvZiBsaWZlOiBidXQgcGVydmVyc2VuZXNzIHRoZXJlaW4gaXMgYSBicmVhY2ggaW4gdGhlIHNwaXJpdC4KQSBmb29sIGRlc3Bpc2V0aCBoaXMgZmF0aGVyJ3MgaW5zdHJ1Y3Rpb246IGJ1dCBoZSB0aGF0IHJlZ2FyZGV0aCByZXByb29mIGlzIHBydWRlbnQuCkluIHRoZSBob3VzZSBvZiB0aGUgcmlnaHRlb3VzIGlzIG11Y2ggdHJlYXN1cmU6IGJ1dCBpbiB0aGUgcmV2ZW51ZXMgb2YgdGhlIHdpY2tlZCBpcyB0cm91YmxlLgpUaGUgbGlwcyBvZiB0aGUgd2lzZSBkaXNwZXJzZSBrbm93bGVkZ2U6IGJ1dCB0aGUgaGVhcnQgb2YgdGhlIGZvb2xpc2ggZG9ldGggbm90IHNvLgpUaGUgc2FjcmlmaWNlIG9mIHRoZSB3aWNrZWQgaXMgYW4gYWJvbWluYXRpb24gdG8gdGhlIExPUkQ6IGJ1dCB0aGUgcHJheWVyIG9mIHRoZSB1cHJpZ2h0IGlzIGhpcyBkZWxpZ2h0LgpUaGUgd2F5IG9mIHRoZSB3aWNrZWQgaXMgYW4gYWJvbWluYXRpb24gdW50byB0aGUgTE9SRDogYnV0IGhlIGxvdmV0aCBoaW0gdGhhdCBmb2xsb3dldGggYWZ0ZXIgcmlnaHRlb3VzbmVzcy4KQ29ycmVjdGlvbiBpcyBncmlldm91cyB1bnRvIGhpbSB0aGF0IGZvcnNha2V0aCB0aGUgd2F5OiBhbmQgaGUgdGhhdCBoYXRldGggcmVwcm9vZiBzaGFsbCBkaWUuCkhlbGwgYW5kIGRlc3RydWN0aW9uIGFyZSBiZWZvcmUgdGhlIExPUkQ6IGhvdyBtdWNoIG1vcmUgdGhlbiB0aGUgaGVhcnRzIG9mIHRoZSBjaGlsZHJlbiBvZiBtZW4/CkEgc2Nvcm5lciBsb3ZldGggbm90IG9uZSB0aGF0IHJlcHJvdmV0aCBoaW06IG5laXRoZXIgd2lsbCBoZSBnbyB1bnRvIHRoZSB3aXNlLgpBIG1lcnJ5IGhlYXJ0IG1ha2V0aCBhIGNoZWVyZnVsIGNvdW50ZW5hbmNlOiBidXQgYnkgc29ycm93IG9mIHRoZSBoZWFydCB0aGUgc3Bpcml0IGlzIGJyb2tlbi4KVGhlIGhlYXJ0IG9mIGhpbSB0aGF0IGhhdGggdW5kZXJzdGFuZGluZyBzZWVrZXRoIGtub3dsZWRnZTogYnV0IHRoZSBtb3V0aCBvZiBmb29scyBmZWVkZXRoIG9uIGZvb2xpc2huZXNzLgpBbGwgdGhlIGRheXMgb2YgdGhlIGFmZmxpY3RlZCBhcmUgZXZpbDogYnV0IGhlIHRoYXQgaXMgb2YgYSBtZXJyeSBoZWFydCBoYXRoIGEgY29udGludWFsIGZlYXN0LgpCZXR0ZXIgaXMgbGl0dGxlIHdpdGggdGhlIGZlYXIgb2YgdGhlIExPUkQgdGhhbiBncmVhdCB0cmVhc3VyZSBhbmQgdHJvdWJsZSB0aGVyZXdpdGguCkJldHRlciBpcyBhIGRpbm5lciBvZiBoZXJicyB3aGVyZSBsb3ZlIGlzLCB0aGFuIGEgc3RhbGxlZCBveCBhbmQgaGF0cmVkIHRoZXJld2l0aC4KQSB3cmF0aGZ1bCBtYW4gc3RpcnJldGggdXAgc3RyaWZlOiBidXQgaGUgdGhhdCBpcyBzbG93IHRvIGFuZ2VyIGFwcGVhc2V0aCBzdHJpZmUuClRoZSB3YXkgb2YgdGhlIHNsb3RoZnVsIG1hbiBpcyBhcyBhbiBoZWRnZSBvZiB0aG9ybnM6IGJ1dCB0aGUgd2F5IG9mIHRoZSByaWdodGVvdXMgaXMgbWFkZSBwbGFpbi4KQSB3aXNlIHNvbiBtYWtldGggYSBnbGFkIGZhdGhlcjogYnV0IGEgZm9vbGlzaCBtYW4gZGVzcGlzZXRoIGhpcyBtb3RoZXIuCkZvbGx5IGlzIGpveSB0byBoaW0gdGhhdCBpcyBkZXN0aXR1dGUgb2Ygd2lzZG9tOiBidXQgYSBtYW4gb2YgdW5kZXJzdGFuZGluZyB3YWxrZXRoIHVwcmlnaHRseS4KV2l0aG91dCBjb3Vuc2VsIHB1cnBvc2VzIGFyZSBkaXNhcHBvaW50ZWQ6IGJ1dCBpbiB0aGUgbXVsdGl0dWRlIG9mIGNvdW5zZWxsb3JzIHRoZXkgYXJlIGVzdGFibGlzaGVkLgpBIG1hbiBoYXRoIGpveSBieSB0aGUgYW5zd2VyIG9mIGhpcyBtb3V0aDogYW5kIGEgd29yZCBzcG9rZW4gaW4gZHVlIHNlYXNvbiwgaG93IGdvb2QgaXMgaXQhClRoZSB3YXkgb2YgbGlmZSBpcyBhYm92ZSB0byB0aGUgd2lzZSwgdGhhdCBoZSBtYXkgZGVwYXJ0IGZyb20gaGVsbCBiZW5lYXRoLgpUaGUgTE9SRCB3aWxsIGRlc3Ryb3kgdGhlIGhvdXNlIG9mIHRoZSBwcm91ZDogYnV0IGhlIHdpbGwgZXN0YWJsaXNoIHRoZSBib3JkZXIgb2YgdGhlIHdpZG93LgpUaGUgdGhvdWdodHMgb2YgdGhlIHdpY2tlZCBhcmUgYW4gYWJvbWluYXRpb24gdG8gdGhlIExPUkQ6IGJ1dCB0aGUgd29yZHMgb2YgdGhlIHB1cmUgYXJlIHBsZWFzYW50IHdvcmRzLgpIZSB0aGF0IGlzIGdyZWVkeSBvZiBnYWluIHRyb3VibGV0aCBoaXMgb3duIGhvdXNlOyBidXQgaGUgdGhhdCBoYXRldGggZ2lmdHMgc2hhbGwgbGl2ZS4KVGhlIGhlYXJ0IG9mIHRoZSByaWdodGVvdXMgc3R1ZGlldGggdG8gYW5zd2VyOiBidXQgdGhlIG1vdXRoIG9mIHRoZSB3aWNrZWQgcG91cmV0aCBvdXQgZXZpbCB0aGluZ3MuClRoZSBMT1JEIGlzIGZhciBmcm9tIHRoZSB3aWNrZWQ6IGJ1dCBoZSBoZWFyZXRoIHRoZSBwcmF5ZXIgb2YgdGhlIHJpZ2h0ZW91cy4KVGhlIGxpZ2h0IG9mIHRoZSBleWVzIHJlam9pY2V0aCB0aGUgaGVhcnQ6IGFuZCBhIGdvb2QgcmVwb3J0IG1ha2V0aCB0aGUgYm9uZXMgZmF0LgpUaGUgZWFyIHRoYXQgaGVhcmV0aCB0aGUgcmVwcm9vZiBvZiBsaWZlIGFiaWRldGggYW1vbmcgdGhlIHdpc2UuCkhlIHRoYXQgcmVmdXNldGggaW5zdHJ1Y3Rpb24gZGVzcGlzZXRoIGhpcyBvd24gc291bDogYnV0IGhlIHRoYXQgaGVhcmV0aCByZXByb29mIGdldHRldGggdW5kZXJzdGFuZGluZy4KVGhlIGZlYXIgb2YgdGhlIExPUkQgaXMgdGhlIGluc3RydWN0aW9uIG9mIHdpc2RvbTsgYW5kIGJlZm9yZSBob25vdXIgaXMgaHVtaWxpdHkuClRoZSBwcmVwYXJhdGlvbnMgb2YgdGhlIGhlYXJ0IGluIG1hbiwgYW5kIHRoZSBhbnN3ZXIgb2YgdGhlIHRvbmd1ZSwgaXMgZnJvbSB0aGUgTE9SRC4KQWxsIHRoZSB3YXlzIG9mIGEgbWFuIGFyZSBjbGVhbiBpbiBoaXMgb3duIGV5ZXM7IGJ1dCB0aGUgTE9SRCB3ZWlnaGV0aCB0aGUgc3Bpcml0cy4KQ29tbWl0IHRoeSB3b3JrcyB1bnRvIHRoZSBMT1JELCBhbmQgdGh5IHRob3VnaHRzIHNoYWxsIGJlIGVzdGFibGlzaGVkLgpUaGUgTE9SRCBoYXRoIG1hZGUgYWxsIHRoaW5ncyBmb3IgaGltc2VsZjogeWVhLCBldmVuIHRoZSB3aWNrZWQgZm9yIHRoZSBkYXkgb2YgZXZpbC4KRXZlcnkgb25lIHRoYXQgaXMgcHJvdWQgaW4gaGVhcnQgaXMgYW4gYWJvbWluYXRpb24gdG8gdGhlIExPUkQ6IHRob3VnaCBoYW5kIGpvaW4gaW4gaGFuZCwgaGUgc2hhbGwgbm90IGJlIHVucHVuaXNoZWQuCkJ5IG1lcmN5IGFuZCB0cnV0aCBpbmlxdWl0eSBpcyBwdXJnZWQ6IGFuZCBieSB0aGUgZmVhciBvZiB0aGUgTE9SRCBtZW4gZGVwYXJ0IGZyb20gZXZpbC4KV2hlbiBhIG1hbidzIHdheXMgcGxlYXNlIHRoZSBMT1JELCBoZSBtYWtldGggZXZlbiBoaXMgZW5lbWllcyB0byBiZSBhdCBwZWFjZSB3aXRoIGhpbS4KQmV0dGVyIGlzIGEgbGl0dGxlIHdpdGggcmlnaHRlb3VzbmVzcyB0aGFuIGdyZWF0IHJldmVudWVzIHdpdGhvdXQgcmlnaHQuCkEgbWFuJ3MgaGVhcnQgZGV2aXNldGggaGlzIHdheTogYnV0IHRoZSBMT1JEIGRpcmVjdGV0aCBoaXMgc3RlcHMuCkEgZGl2aW5lIHNlbnRlbmNlIGlzIGluIHRoZSBsaXBzIG9mIHRoZSBraW5nOiBoaXMgbW91dGggdHJhbnNncmVzc2V0aCBub3QgaW4ganVkZ21lbnQuCkEganVzdCB3ZWlnaHQgYW5kIGJhbGFuY2UgYXJlIHRoZSBMT1JEJ3M6IGFsbCB0aGUgd2VpZ2h0cyBvZiB0aGUgYmFnIGFyZSBoaXMgd29yay4KSXQgaXMgYW4gYWJvbWluYXRpb24gdG8ga2luZ3MgdG8gY29tbWl0IHdpY2tlZG5lc3M6IGZvciB0aGUgdGhyb25lIGlzIGVzdGFibGlzaGVkIGJ5IHJpZ2h0ZW91c25lc3MuClJpZ2h0ZW91cyBsaXBzIGFyZSB0aGUgZGVsaWdodCBvZiBraW5nczsgYW5kIHRoZXkgbG92ZSBoaW0gdGhhdCBzcGVha2V0aCByaWdodC4KVGhlIHdyYXRoIG9mIGEga2luZyBpcyBhcyBtZXNzZW5nZXJzIG9mIGRlYXRoOiBidXQgYSB3aXNlIG1hbiB3aWxsIHBhY2lmeSBpdC4KSW4gdGhlIGxpZ2h0IG9mIHRoZSBraW5nJ3MgY291bnRlbmFuY2UgaXMgbGlmZTsgYW5kIGhpcyBmYXZvdXIgaXMgYXMgYSBjbG91ZCBvZiB0aGUgbGF0dGVyIHJhaW4uCkhvdyBtdWNoIGJldHRlciBpcyBpdCB0byBnZXQgd2lzZG9tIHRoYW4gZ29sZCEgYW5kIHRvIGdldCB1bmRlcnN0YW5kaW5nIHJhdGhlciB0byBiZSBjaG9zZW4gdGhhbiBzaWx2ZXIhClRoZSBoaWdod2F5IG9mIHRoZSB1cHJpZ2h0IGlzIHRvIGRlcGFydCBmcm9tIGV2aWw6IGhlIHRoYXQga2VlcGV0aCBoaXMgd2F5IHByZXNlcnZldGggaGlzIHNvdWwuClByaWRlIGdvZXRoIGJlZm9yZSBkZXN0cnVjdGlvbiwgYW5kIGFuIGhhdWdodHkgc3Bpcml0IGJlZm9yZSBhIGZhbGwuCkJldHRlciBpdCBpcyB0byBiZSBvZiBhbiBodW1ibGUgc3Bpcml0IHdpdGggdGhlIGxvd2x5LCB0aGFuIHRvIGRpdmlkZSB0aGUgc3BvaWwgd2l0aCB0aGUgcHJvdWQuCkhlIHRoYXQgaGFuZGxldGggYSBtYXR0ZXIgd2lzZWx5IHNoYWxsIGZpbmQgZ29vZDogYW5kIHdob3NvIHRydXN0ZXRoIGluIHRoZSBMT1JELCBoYXBweSBpcyBoZS4KVGhlIHdpc2UgaW4gaGVhcnQgc2hhbGwgYmUgY2FsbGVkIHBydWRlbnQ6IGFuZCB0aGUgc3dlZXRuZXNzIG9mIHRoZSBsaXBzIGluY3JlYXNldGggbGVhcm5pbmcuClVuZGVyc3RhbmRpbmcgaXMgYSB3ZWxsc3ByaW5nIG9mIGxpZmUgdW50byBoaW0gdGhhdCBoYXRoIGl0OiBidXQgdGhlIGluc3RydWN0aW9uIG9mIGZvb2xzIGlzIGZvbGx5LgpUaGUgaGVhcnQgb2YgdGhlIHdpc2UgdGVhY2hldGggaGlzIG1vdXRoLCBhbmQgYWRkZXRoIGxlYXJuaW5nIHRvIGhpcyBsaXBzLgpQbGVhc2FudCB3b3JkcyBhcmUgYXMgYW4gaG9uZXljb21iLCBzd2VldCB0byB0aGUgc291bCwgYW5kIGhlYWx0aCB0byB0aGUgYm9uZXMuClRoZXJlIGlzIGEgd2F5IHRoYXQgc2VlbWV0aCByaWdodCB1bnRvIGEgbWFuLCBidXQgdGhlIGVuZCB0aGVyZW9mIGFyZSB0aGUgd2F5cyBvZiBkZWF0aC4KSGUgdGhhdCBsYWJvdXJldGggbGFib3VyZXRoIGZvciBoaW1zZWxmOyBmb3IgaGlzIG1vdXRoIGNyYXZldGggaXQgb2YgaGltLgpBbiB1bmdvZGx5IG1hbiBkaWdnZXRoIHVwIGV2aWw6IGFuZCBpbiBoaXMgbGlwcyB0aGVyZSBpcyBhcyBhIGJ1cm5pbmcgZmlyZS4KQSBmcm93YXJkIG1hbiBzb3dldGggc3RyaWZlOiBhbmQgYSB3aGlzcGVyZXIgc2VwYXJhdGV0aCBjaGllZiBmcmllbmRzLgpBIHZpb2xlbnQgbWFuIGVudGljZXRoIGhpcyBuZWlnaGJvdXIsIGFuZCBsZWFkZXRoIGhpbSBpbnRvIHRoZSB3YXkgdGhhdCBpcyBub3QgZ29vZC4KSGUgc2h1dHRldGggaGlzIGV5ZXMgdG8gZGV2aXNlIGZyb3dhcmQgdGhpbmdzOiBtb3ZpbmcgaGlzIGxpcHMgaGUgYnJpbmdldGggZXZpbCB0byBwYXNzLgpUaGUgaG9hcnkgaGVhZCBpcyBhIGNyb3duIG9mIGdsb3J5LCBpZiBpdCBiZSBmb3VuZCBpbiB0aGUgd2F5IG9mIHJpZ2h0ZW91c25lc3MuCkhlIHRoYXQgaXMgc2xvdyB0byBhbmdlciBpcyBiZXR0ZXIgdGhhbiB0aGUgbWlnaHR5OyBhbmQgaGUgdGhhdCBydWxldGggaGlzIHNwaXJpdCB0aGFuIGhlIHRoYXQgdGFrZXRoIGEgY2l0eS4KVGhlIGxvdCBpcyBjYXN0IGludG8gdGhlIGxhcDsgYnV0IHRoZSB3aG9sZSBkaXNwb3NpbmcgdGhlcmVvZiBpcyBvZiB0aGUgTE9SRC4KQmV0dGVyIGlzIGEgZHJ5IG1vcnNlbCwgYW5kIHF1aWV0bmVzcyB0aGVyZXdpdGgsIHRoYW4gYW4gaG91c2UgZnVsbCBvZiBzYWNyaWZpY2VzIHdpdGggc3RyaWZlLgpBIHdpc2Ugc2VydmFudCBzaGFsbCBoYXZlIHJ1bGUgb3ZlciBhIHNvbiB0aGF0IGNhdXNldGggc2hhbWUsIGFuZCBzaGFsbCBoYXZlIHBhcnQgb2YgdGhlIGluaGVyaXRhbmNlIGFtb25nIHRoZSBicmV0aHJlbi4KVGhlIGZpbmluZyBwb3QgaXMgZm9yIHNpbHZlciwgYW5kIHRoZSBmdXJuYWNlIGZvciBnb2xkOiBidXQgdGhlIExPUkQgdHJpZXRoIHRoZSBoZWFydHMuCkEgd2lja2VkIGRvZXIgZ2l2ZXRoIGhlZWQgdG8gZmFsc2UgbGlwczsgYW5kIGEgbGlhciBnaXZldGggZWFyIHRvIGEgbmF1Z2h0eSB0b25ndWUuCldob3NvIG1vY2tldGggdGhlIHBvb3IgcmVwcm9hY2hldGggaGlzIE1ha2VyOiBhbmQgaGUgdGhhdCBpcyBnbGFkIGF0IGNhbGFtaXRpZXMgc2hhbGwgbm90IGJlIHVucHVuaXNoZWQuCkNoaWxkcmVuJ3MgY2hpbGRyZW4gYXJlIHRoZSBjcm93biBvZiBvbGQgbWVuOyBhbmQgdGhlIGdsb3J5IG9mIGNoaWxkcmVuIGFyZSB0aGVpciBmYXRoZXJzLgpFeGNlbGxlbnQgc3BlZWNoIGJlY29tZXRoIG5vdCBhIGZvb2w6IG11Y2ggbGVzcyBkbyBseWluZyBsaXBzIGEgcHJpbmNlLgpBIGdpZnQgaXMgYXMgYSBwcmVjaW91cyBzdG9uZSBpbiB0aGUgZXllcyBvZiBoaW0gdGhhdCBoYXRoIGl0OiB3aGl0aGVyc29ldmVyIGl0IHR1cm5ldGgsIGl0IHByb3NwZXJldGguCkhlIHRoYXQgY292ZXJldGggYSB0cmFuc2dyZXNzaW9uIHNlZWtldGggbG92ZTsgYnV0IGhlIHRoYXQgcmVwZWF0ZXRoIGEgbWF0dGVyIHNlcGFyYXRldGggdmVyeSBmcmllbmRzLgpBIHJlcHJvb2YgZW50ZXJldGggbW9yZSBpbnRvIGEgd2lzZSBtYW4gdGhhbiBhbiBodW5kcmVkIHN0cmlwZXMgaW50byBhIGZvb2wuCkFuIGV2aWwgbWFuIHNlZWtldGggb25seSByZWJlbGxpb246IHRoZXJlZm9yZSBhIGNydWVsIG1lc3NlbmdlciBzaGFsbCBiZSBzZW50IGFnYWluc3QgaGltLgpMZXQgYSBiZWFyIHJvYmJlZCBvZiBoZXIgd2hlbHBzIG1lZXQgYSBtYW4sIHJhdGhlciB0aGFuIGEgZm9vbCBpbiBoaXMgZm9sbHkuCldob3NvIHJld2FyZGV0aCBldmlsIGZvciBnb29kLCBldmlsIHNoYWxsIG5vdCBkZXBhcnQgZnJvbSBoaXMgaG91c2UuClRoZSBiZWdpbm5pbmcgb2Ygc3RyaWZlIGlzIGFzIHdoZW4gb25lIGxldHRldGggb3V0IHdhdGVyOiB0aGVyZWZvcmUgbGVhdmUgb2ZmIGNvbnRlbnRpb24sIGJlZm9yZSBpdCBiZSBtZWRkbGVkIHdpdGguCkhlIHRoYXQganVzdGlmaWV0aCB0aGUgd2lja2VkLCBhbmQgaGUgdGhhdCBjb25kZW1uZXRoIHRoZSBqdXN0LCBldmVuIHRoZXkgYm90aCBhcmUgYWJvbWluYXRpb24gdG8gdGhlIExPUkQuCldoZXJlZm9yZSBpcyB0aGVyZSBhIHByaWNlIGluIHRoZSBoYW5kIG9mIGEgZm9vbCB0byBnZXQgd2lzZG9tLCBzZWVpbmcgaGUgaGF0aCBubyBoZWFydCB0byBpdD8KQSBmcmllbmQgbG92ZXRoIGF0IGFsbCB0aW1lcywgYW5kIGEgYnJvdGhlciBpcyBib3JuIGZvciBhZHZlcnNpdHkuCkEgbWFuIHZvaWQgb2YgdW5kZXJzdGFuZGluZyBzdHJpa2V0aCBoYW5kcywgYW5kIGJlY29tZXRoIHN1cmV0eSBpbiB0aGUgcHJlc2VuY2Ugb2YgaGlzIGZyaWVuZC4KSGUgbG92ZXRoIHRyYW5zZ3Jlc3Npb24gdGhhdCBsb3ZldGggc3RyaWZlOiBhbmQgaGUgdGhhdCBleGFsdGV0aCBoaXMgZ2F0ZSBzZWVrZXRoIGRlc3RydWN0aW9uLgpIZSB0aGF0IGhhdGggYSBmcm93YXJkIGhlYXJ0IGZpbmRldGggbm8gZ29vZDogYW5kIGhlIHRoYXQgaGF0aCBhIHBlcnZlcnNlIHRvbmd1ZSBmYWxsZXRoIGludG8gbWlzY2hpZWYuCkhlIHRoYXQgYmVnZXR0ZXRoIGEgZm9vbCBkb2V0aCBpdCB0byBoaXMgc29ycm93OiBhbmQgdGhlIGZhdGhlciBvZiBhIGZvb2wgaGF0aCBubyBqb3kuCkEgbWVycnkgaGVhcnQgZG9ldGggZ29vZCBsaWtlIGEgbWVkaWNpbmU6IGJ1dCBhIGJyb2tlbiBzcGlyaXQgZHJpZXRoIHRoZSBib25lcy4KQSB3aWNrZWQgbWFuIHRha2V0aCBhIGdpZnQgb3V0IG9mIHRoZSBib3NvbSB0byBwZXJ2ZXJ0IHRoZSB3YXlzIG9mIGp1ZGdtZW50LgpXaXNkb20gaXMgYmVmb3JlIGhpbSB0aGF0IGhhdGggdW5kZXJzdGFuZGluZzsgYnV0IHRoZSBleWVzIG9mIGEgZm9vbCBhcmUgaW4gdGhlIGVuZHMgb2YgdGhlIGVhcnRoLgpBIGZvb2xpc2ggc29uIGlzIGEgZ3JpZWYgdG8gaGlzIGZhdGhlciwgYW5kIGJpdHRlcm5lc3MgdG8gaGVyIHRoYXQgYmFyZSBoaW0uCkFsc28gdG8gcHVuaXNoIHRoZSBqdXN0IGlzIG5vdCBnb29kLCBub3IgdG8gc3RyaWtlIHByaW5jZXMgZm9yIGVxdWl0eS4KSGUgdGhhdCBoYXRoIGtub3dsZWRnZSBzcGFyZXRoIGhpcyB3b3JkczogYW5kIGEgbWFuIG9mIHVuZGVyc3RhbmRpbmcgaXMgb2YgYW4gZXhjZWxsZW50IHNwaXJpdC4KRXZlbiBhIGZvb2wsIHdoZW4gaGUgaG9sZGV0aCBoaXMgcGVhY2UsIGlzIGNvdW50ZWQgd2lzZTogYW5kIGhlIHRoYXQgc2h1dHRldGggaGlzIGxpcHMgaXMgZXN0ZWVtZWQgYSBtYW4gb2YgdW5kZXJzdGFuZGluZy4KVGhyb3VnaCBkZXNpcmUgYSBtYW4sIGhhdmluZyBzZXBhcmF0ZWQgaGltc2VsZiwgc2Vla2V0aCBhbmQgaW50ZXJtZWRkbGV0aCB3aXRoIGFsbCB3aXNkb20uCkEgZm9vbCBoYXRoIG5vIGRlbGlnaHQgaW4gdW5kZXJzdGFuZGluZywgYnV0IHRoYXQgaGlzIGhlYXJ0IG1heSBkaXNjb3ZlciBpdHNlbGYuCldoZW4gdGhlIHdpY2tlZCBjb21ldGgsIHRoZW4gY29tZXRoIGFsc28gY29udGVtcHQsIGFuZCB3aXRoIGlnbm9taW55IHJlcHJvYWNoLgpUaGUgd29yZHMgb2YgYSBtYW4ncyBtb3V0aCBhcmUgYXMgZGVlcCB3YXRlcnMsIGFuZCB0aGUgd2VsbHNwcmluZyBvZiB3aXNkb20gYXMgYSBmbG93aW5nIGJyb29rLgpJdCBpcyBub3QgZ29vZCB0byBhY2NlcHQgdGhlIHBlcnNvbiBvZiB0aGUgd2lja2VkLCB0byBvdmVydGhyb3cgdGhlIHJpZ2h0ZW91cyBpbiBqdWRnbWVudC4KQSBmb29sJ3MgbGlwcyBlbnRlciBpbnRvIGNvbnRlbnRpb24sIGFuZCBoaXMgbW91dGggY2FsbGV0aCBmb3Igc3Ryb2tlcy4KQSBmb29sJ3MgbW91dGggaXMgaGlzIGRlc3RydWN0aW9uLCBhbmQgaGlzIGxpcHMgYXJlIHRoZSBzbmFyZSBvZiBoaXMgc291bC4KVGhlIHdvcmRzIG9mIGEgdGFsZWJlYXJlciBhcmUgYXMgd291bmRzLCBhbmQgdGhleSBnbyBkb3duIGludG8gdGhlIGlubmVybW9zdCBwYXJ0cyBvZiB0aGUgYmVsbHkuCkhlIGFsc28gdGhhdCBpcyBzbG90aGZ1bCBpbiBoaXMgd29yayBpcyBicm90aGVyIHRvIGhpbSB0aGF0IGlzIGEgZ3JlYXQgd2FzdGVyLgpUaGUgbmFtZSBvZiB0aGUgTE9SRCBpcyBhIHN0cm9uZyB0b3dlcjogdGhlIHJpZ2h0ZW91cyBydW5uZXRoIGludG8gaXQsIGFuZCBpcyBzYWZlLgpUaGUgcmljaCBtYW4ncyB3ZWFsdGggaXMgaGlzIHN0cm9uZyBjaXR5LCBhbmQgYXMgYW4gaGlnaCB3YWxsIGluIGhpcyBvd24gY29uY2VpdC4KQmVmb3JlIGRlc3RydWN0aW9uIHRoZSBoZWFydCBvZiBtYW4gaXMgaGF1Z2h0eSwgYW5kIGJlZm9yZSBob25vdXIgaXMgaHVtaWxpdHkuCkhlIHRoYXQgYW5zd2VyZXRoIGEgbWF0dGVyIGJlZm9yZSBoZSBoZWFyZXRoIGl0LCBpdCBpcyBmb2xseSBhbmQgc2hhbWUgdW50byBoaW0uClRoZSBzcGlyaXQgb2YgYSBtYW4gd2lsbCBzdXN0YWluIGhpcyBpbmZpcm1pdHk7IGJ1dCBhIHdvdW5kZWQgc3Bpcml0IHdobyBjYW4gYmVhcj8KVGhlIGhlYXJ0IG9mIHRoZSBwcnVkZW50IGdldHRldGgga25vd2xlZGdlOyBhbmQgdGhlIGVhciBvZiB0aGUgd2lzZSBzZWVrZXRoIGtub3dsZWRnZS4KQSBtYW4ncyBnaWZ0IG1ha2V0aCByb29tIGZvciBoaW0sIGFuZCBicmluZ2V0aCBoaW0gYmVmb3JlIGdyZWF0IG1lbi4KSGUgdGhhdCBpcyBmaXJzdCBpbiBoaXMgb3duIGNhdXNlIHNlZW1ldGgganVzdDsgYnV0IGhpcyBuZWlnaGJvdXIgY29tZXRoIGFuZCBzZWFyY2hldGggaGltLgpUaGUgbG90IGNhdXNldGggY29udGVudGlvbnMgdG8gY2Vhc2UsIGFuZCBwYXJ0ZXRoIGJldHdlZW4gdGhlIG1pZ2h0eS4KQSBicm90aGVyIG9mZmVuZGVkIGlzIGhhcmRlciB0byBiZSB3b24gdGhhbiBhIHN0cm9uZyBjaXR5OiBhbmQgdGhlaXIgY29udGVudGlvbnMgYXJlIGxpa2UgdGhlIGJhcnMgb2YgYSBjYXN0bGUuCkEgbWFuJ3MgYmVsbHkgc2hhbGwgYmUgc2F0aXNmaWVkIHdpdGggdGhlIGZydWl0IG9mIGhpcyBtb3V0aDsgYW5kIHdpdGggdGhlIGluY3JlYXNlIG9mIGhpcyBsaXBzIHNoYWxsIGhlIGJlIGZpbGxlZC4KRGVhdGggYW5kIGxpZmUgYXJlIGluIHRoZSBwb3dlciBvZiB0aGUgdG9uZ3VlOiBhbmQgdGhleSB0aGF0IGxvdmUgaXQgc2hhbGwgZWF0IHRoZSBmcnVpdCB0aGVyZW9mLgpXaG9zbyBmaW5kZXRoIGEgd2lmZSBmaW5kZXRoIGEgZ29vZCB0aGluZywgYW5kIG9idGFpbmV0aCBmYXZvdXIgb2YgdGhlIExPUkQuClRoZSBwb29yIHVzZXRoIGludHJlYXRpZXM7IGJ1dCB0aGUgcmljaCBhbnN3ZXJldGggcm91Z2hseS4KQSBtYW4gdGhhdCBoYXRoIGZyaWVuZHMgbXVzdCBzaGV3IGhpbXNlbGYgZnJpZW5kbHk6IGFuZCB0aGVyZSBpcyBhIGZyaWVuZCB0aGF0IHN0aWNrZXRoIGNsb3NlciB0aGFuIGEgYnJvdGhlci4KQmV0dGVyIGlzIHRoZSBwb29yIHRoYXQgd2Fsa2V0aCBpbiBoaXMgaW50ZWdyaXR5LCB0aGFuIGhlIHRoYXQgaXMgcGVydmVyc2UgaW4gaGlzIGxpcHMsIGFuZCBpcyBhIGZvb2wuCkFsc28sIHRoYXQgdGhlIHNvdWwgYmUgd2l0aG91dCBrbm93bGVkZ2UsIGl0IGlzIG5vdCBnb29kOyBhbmQgaGUgdGhhdCBoYXN0ZXRoIHdpdGggaGlzIGZlZXQgc2lubmV0aC4KVGhlIGZvb2xpc2huZXNzIG9mIG1hbiBwZXJ2ZXJ0ZXRoIGhpcyB3YXk6IGFuZCBoaXMgaGVhcnQgZnJldHRldGggYWdhaW5zdCB0aGUgTE9SRC4KV2VhbHRoIG1ha2V0aCBtYW55IGZyaWVuZHM7IGJ1dCB0aGUgcG9vciBpcyBzZXBhcmF0ZWQgZnJvbSBoaXMgbmVpZ2hib3VyLgpBIGZhbHNlIHdpdG5lc3Mgc2hhbGwgbm90IGJlIHVucHVuaXNoZWQsIGFuZCBoZSB0aGF0IHNwZWFrZXRoIGxpZXMgc2hhbGwgbm90IGVzY2FwZS4KTWFueSB3aWxsIGludHJlYXQgdGhlIGZhdm91ciBvZiB0aGUgcHJpbmNlOiBhbmQgZXZlcnkgbWFuIGlzIGEgZnJpZW5kIHRvIGhpbSB0aGF0IGdpdmV0aCBnaWZ0cy4KQWxsIHRoZSBicmV0aHJlbiBvZiB0aGUgcG9vciBkbyBoYXRlIGhpbTogaG93IG11Y2ggbW9yZSBkbyBoaXMgZnJpZW5kcyBnbyBmYXIgZnJvbSBoaW0/IGhlIHB1cnN1ZXRoIHRoZW0gd2l0aCB3b3JkcywgeWV0IHRoZXkgYXJlIHdhbnRpbmcgdG8gaGltLgpIZSB0aGF0IGdldHRldGggd2lzZG9tIGxvdmV0aCBoaXMgb3duIHNvdWw6IGhlIHRoYXQga2VlcGV0aCB1bmRlcnN0YW5kaW5nIHNoYWxsIGZpbmQgZ29vZC4KQSBmYWxzZSB3aXRuZXNzIHNoYWxsIG5vdCBiZSB1bnB1bmlzaGVkLCBhbmQgaGUgdGhhdCBzcGVha2V0aCBsaWVzIHNoYWxsIHBlcmlzaC4KRGVsaWdodCBpcyBub3Qgc2VlbWx5IGZvciBhIGZvb2w7IG11Y2ggbGVzcyBmb3IgYSBzZXJ2YW50IHRvIGhhdmUgcnVsZSBvdmVyIHByaW5jZXMuClRoZSBkaXNjcmV0aW9uIG9mIGEgbWFuIGRlZmVycmV0aCBoaXMgYW5nZXI7IGFuZCBpdCBpcyBoaXMgZ2xvcnkgdG8gcGFzcyBvdmVyIGEgdHJhbnNncmVzc2lvbi4KVGhlIGtpbmcncyB3cmF0aCBpcyBhcyB0aGUgcm9hcmluZyBvZiBhIGxpb247IGJ1dCBoaXMgZmF2b3VyIGlzIGFzIGRldyB1cG9uIHRoZSBncmFzcy4KQSBmb29saXNoIHNvbiBpcyB0aGUgY2FsYW1pdHkgb2YgaGlzIGZhdGhlcjogYW5kIHRoZSBjb250ZW50aW9ucyBvZiBhIHdpZmUgYXJlIGEgY29udGludWFsIGRyb3BwaW5nLgpIb3VzZSBhbmQgcmljaGVzIGFyZSB0aGUgaW5oZXJpdGFuY2Ugb2YgZmF0aGVyczogYW5kIGEgcHJ1ZGVudCB3aWZlIGlzIGZyb20gdGhlIExPUkQuClNsb3RoZnVsbmVzcyBjYXN0ZXRoIGludG8gYSBkZWVwIHNsZWVwOyBhbmQgYW4gaWRsZSBzb3VsIHNoYWxsIHN1ZmZlciBodW5nZXIuCkhlIHRoYXQga2VlcGV0aCB0aGUgY29tbWFuZG1lbnQga2VlcGV0aCBoaXMgb3duIHNvdWw7IGJ1dCBoZSB0aGF0IGRlc3Bpc2V0aCBoaXMgd2F5cyBzaGFsbCBkaWUuCkhlIHRoYXQgaGF0aCBwaXR5IHVwb24gdGhlIHBvb3IgbGVuZGV0aCB1bnRvIHRoZSBMT1JEOyBhbmQgdGhhdCB3aGljaCBoZSBoYXRoIGdpdmVuIHdpbGwgaGUgcGF5IGhpbSBhZ2Fpbi4KQ2hhc3RlbiB0aHkgc29uIHdoaWxlIHRoZXJlIGlzIGhvcGUsIGFuZCBsZXQgbm90IHRoeSBzb3VsIHNwYXJlIGZvciBoaXMgY3J5aW5nLgpBIG1hbiBvZiBncmVhdCB3cmF0aCBzaGFsbCBzdWZmZXIgcHVuaXNobWVudDogZm9yIGlmIHRob3UgZGVsaXZlciBoaW0sIHlldCB0aG91IG11c3QgZG8gaXQgYWdhaW4uCkhlYXIgY291bnNlbCwgYW5kIHJlY2VpdmUgaW5zdHJ1Y3Rpb24sIHRoYXQgdGhvdSBtYXllc3QgYmUgd2lzZSBpbiB0aHkgbGF0dGVyIGVuZC4KVGhlcmUgYXJlIG1hbnkgZGV2aWNlcyBpbiBhIG1hbidzIGhlYXJ0OyBuZXZlcnRoZWxlc3MgdGhlIGNvdW5zZWwgb2YgdGhlIExPUkQsIHRoYXQgc2hhbGwgc3RhbmQuClRoZSBkZXNpcmUgb2YgYSBtYW4gaXMgaGlzIGtpbmRuZXNzOiBhbmQgYSBwb29yIG1hbiBpcyBiZXR0ZXIgdGhhbiBhIGxpYXIuClRoZSBmZWFyIG9mIHRoZSBMT1JEIHRlbmRldGggdG8gbGlmZTogYW5kIGhlIHRoYXQgaGF0aCBpdCBzaGFsbCBhYmlkZSBzYXRpc2ZpZWQ7IGhlIHNoYWxsIG5vdCBiZSB2aXNpdGVkIHdpdGggZXZpbC4KQSBzbG90aGZ1bCBtYW4gaGlkZXRoIGhpcyBoYW5kIGluIGhpcyBib3NvbSwgYW5kIHdpbGwgbm90IHNvIG11Y2ggYXMgYnJpbmcgaXQgdG8gaGlzIG1vdXRoIGFnYWluLgpTbWl0ZSBhIHNjb3JuZXIsIGFuZCB0aGUgc2ltcGxlIHdpbGwgYmV3YXJlOiBhbmQgcmVwcm92ZSBvbmUgdGhhdCBoYXRoIHVuZGVyc3RhbmRpbmcsIGFuZCBoZSB3aWxsIHVuZGVyc3RhbmQga25vd2xlZGdlLgpIZSB0aGF0IHdhc3RldGggaGlzIGZhdGhlciwgYW5kIGNoYXNldGggYXdheSBoaXMgbW90aGVyLCBpcyBhIHNvbiB0aGF0IGNhdXNldGggc2hhbWUsIGFuZCBicmluZ2V0aCByZXByb2FjaC4KQ2Vhc2UsIG15IHNvbiwgdG8gaGVhciB0aGUgaW5zdHJ1Y3Rpb24gdGhhdCBjYXVzZXRoIHRvIGVyciBmcm9tIHRoZSB3b3JkcyBvZiBrbm93bGVkZ2UuCkFuIHVuZ29kbHkgd2l0bmVzcyBzY29ybmV0aCBqdWRnbWVudDogYW5kIHRoZSBtb3V0aCBvZiB0aGUgd2lja2VkIGRldm91cmV0aCBpbmlxdWl0eS4KSnVkZ21lbnRzIGFyZSBwcmVwYXJlZCBmb3Igc2Nvcm5lcnMsIGFuZCBzdHJpcGVzIGZvciB0aGUgYmFjayBvZiBmb29scy4KV2luZSBpcyBhIG1vY2tlciwgc3Ryb25nIGRyaW5rIGlzIHJhZ2luZzogYW5kIHdob3NvZXZlciBpcyBkZWNlaXZlZCB0aGVyZWJ5IGlzIG5vdCB3aXNlLgpUaGUgZmVhciBvZiBhIGtpbmcgaXMgYXMgdGhlIHJvYXJpbmcgb2YgYSBsaW9uOiB3aG9zbyBwcm92b2tldGggaGltIHRvIGFuZ2VyIHNpbm5ldGggYWdhaW5zdCBoaXMgb3duIHNvdWwuCkl0IGlzIGFuIGhvbm91ciBmb3IgYSBtYW4gdG8gY2Vhc2UgZnJvbSBzdHJpZmU6IGJ1dCBldmVyeSBmb29sIHdpbGwgYmUgbWVkZGxpbmcuClRoZSBzbHVnZ2FyZCB3aWxsIG5vdCBwbG93IGJ5IHJlYXNvbiBvZiB0aGUgY29sZDsgdGhlcmVmb3JlIHNoYWxsIGhlIGJlZyBpbiBoYXJ2ZXN0LCBhbmQgaGF2ZSBub3RoaW5nLgpDb3Vuc2VsIGluIHRoZSBoZWFydCBvZiBtYW4gaXMgbGlrZSBkZWVwIHdhdGVyOyBidXQgYSBtYW4gb2YgdW5kZXJzdGFuZGluZyB3aWxsIGRyYXcgaXQgb3V0LgpNb3N0IG1lbiB3aWxsIHByb2NsYWltIGV2ZXJ5IG9uZSBoaXMgb3duIGdvb2RuZXNzOiBidXQgYSBmYWl0aGZ1bCBtYW4gd2hvIGNhbiBmaW5kPwpUaGUganVzdCBtYW4gd2Fsa2V0aCBpbiBoaXMgaW50ZWdyaXR5OiBoaXMgY2hpbGRyZW4gYXJlIGJsZXNzZWQgYWZ0ZXIgaGltLgpBIGtpbmcgdGhhdCBzaXR0ZXRoIGluIHRoZSB0aHJvbmUgb2YganVkZ21lbnQgc2NhdHRlcmV0aCBhd2F5IGFsbCBldmlsIHdpdGggaGlzIGV5ZXMuCldobyBjYW4gc2F5LCBJIGhhdmUgbWFkZSBteSBoZWFydCBjbGVhbiwgSSBhbSBwdXJlIGZyb20gbXkgc2luPwpEaXZlcnMgd2VpZ2h0cywgYW5kIGRpdmVycyBtZWFzdXJlcywgYm90aCBvZiB0aGVtIGFyZSBhbGlrZSBhYm9taW5hdGlvbiB0byB0aGUgTE9SRC4KRXZlbiBhIGNoaWxkIGlzIGtub3duIGJ5IGhpcyBkb2luZ3MsIHdoZXRoZXIgaGlzIHdvcmsgYmUgcHVyZSwgYW5kIHdoZXRoZXIgaXQgYmUgcmlnaHQuClRoZSBoZWFyaW5nIGVhciwgYW5kIHRoZSBzZWVpbmcgZXllLCB0aGUgTE9SRCBoYXRoIG1hZGUgZXZlbiBib3RoIG9mIHRoZW0uCkxvdmUgbm90IHNsZWVwLCBsZXN0IHRob3UgY29tZSB0byBwb3ZlcnR5OyBvcGVuIHRoaW5lIGV5ZXMsIGFuZCB0aG91IHNoYWx0IGJlIHNhdGlzZmllZCB3aXRoIGJyZWFkLgpJdCBpcyBuYXVnaHQsIGl0IGlzIG5hdWdodCwgc2FpdGggdGhlIGJ1eWVyOiBidXQgd2hlbiBoZSBpcyBnb25lIGhpcyB3YXksIHRoZW4gaGUgYm9hc3RldGguClRoZXJlIGlzIGdvbGQsIGFuZCBhIG11bHRpdHVkZSBvZiBydWJpZXM6IGJ1dCB0aGUgbGlwcyBvZiBrbm93bGVkZ2UgYXJlIGEgcHJlY2lvdXMgamV3ZWwuClRha2UgaGlzIGdhcm1lbnQgdGhhdCBpcyBzdXJldHkgZm9yIGEgc3RyYW5nZXI6IGFuZCB0YWtlIGEgcGxlZGdlIG9mIGhpbSBmb3IgYSBzdHJhbmdlIHdvbWFuLgpCcmVhZCBvZiBkZWNlaXQgaXMgc3dlZXQgdG8gYSBtYW47IGJ1dCBhZnRlcndhcmRzIGhpcyBtb3V0aCBzaGFsbCBiZSBmaWxsZWQgd2l0aCBncmF2ZWwuCkV2ZXJ5IHB1cnBvc2UgaXMgZXN0YWJsaXNoZWQgYnkgY291bnNlbDogYW5kIHdpdGggZ29vZCBhZHZpY2UgbWFrZSB3YXIuCkhlIHRoYXQgZ29ldGggYWJvdXQgYXMgYSB0YWxlYmVhcmVyIHJldmVhbGV0aCBzZWNyZXRzOiB0aGVyZWZvcmUgbWVkZGxlIG5vdCB3aXRoIGhpbSB0aGF0IGZsYXR0ZXJldGggd2l0aCBoaXMgbGlwcy4KV2hvc28gY3Vyc2V0aCBoaXMgZmF0aGVyIG9yIGhpcyBtb3RoZXIsIGhpcyBsYW1wIHNoYWxsIGJlIHB1dCBvdXQgaW4gb2JzY3VyZSBkYXJrbmVzcy4KQW4gaW5oZXJpdGFuY2UgbWF5IGJlIGdvdHRlbiBoYXN0aWx5IGF0IHRoZSBiZWdpbm5pbmc7IGJ1dCB0aGUgZW5kIHRoZXJlb2Ygc2hhbGwgbm90IGJlIGJsZXNzZWQuClNheSBub3QgdGhvdSwgSSB3aWxsIHJlY29tcGVuc2UgZXZpbDsgYnV0IHdhaXQgb24gdGhlIExPUkQsIGFuZCBoZSBzaGFsbCBzYXZlIHRoZWUuCkRpdmVycyB3ZWlnaHRzIGFyZSBhbiBhYm9taW5hdGlvbiB1bnRvIHRoZSBMT1JEOyBhbmQgYSBmYWxzZSBiYWxhbmNlIGlzIG5vdCBnb29kLgpNYW4ncyBnb2luZ3MgYXJlIG9mIHRoZSBMT1JEOyBob3cgY2FuIGEgbWFuIHRoZW4gdW5kZXJzdGFuZCBoaXMgb3duIHdheT8KSXQgaXMgYSBzbmFyZSB0byB0aGUgbWFuIHdobyBkZXZvdXJldGggdGhhdCB3aGljaCBpcyBob2x5LCBhbmQgYWZ0ZXIgdm93cyB0byBtYWtlIGVucXVpcnkuCkEgd2lzZSBraW5nIHNjYXR0ZXJldGggdGhlIHdpY2tlZCwgYW5kIGJyaW5nZXRoIHRoZSB3aGVlbCBvdmVyIHRoZW0uClRoZSBzcGlyaXQgb2YgbWFuIGlzIHRoZSBjYW5kbGUgb2YgdGhlIExPUkQsIHNlYXJjaGluZyBhbGwgdGhlIGlud2FyZCBwYXJ0cyBvZiB0aGUgYmVsbHkuCk1lcmN5IGFuZCB0cnV0aCBwcmVzZXJ2ZSB0aGUga2luZzogYW5kIGhpcyB0aHJvbmUgaXMgdXBob2xkZW4gYnkgbWVyY3kuClRoZSBnbG9yeSBvZiB5b3VuZyBtZW4gaXMgdGhlaXIgc3RyZW5ndGg6IGFuZCB0aGUgYmVhdXR5IG9mIG9sZCBtZW4gaXMgdGhlIGdyZXkgaGVhZC4KVGhlIGJsdWVuZXNzIG9mIGEgd291bmQgY2xlYW5zZXRoIGF3YXkgZXZpbDogc28gZG8gc3RyaXBlcyB0aGUgaW53YXJkIHBhcnRzIG9mIHRoZSBiZWxseS4KVGhlIGtpbmcncyBoZWFydCBpcyBpbiB0aGUgaGFuZCBvZiB0aGUgTE9SRCwgYXMgdGhlIHJpdmVycyBvZiB3YXRlcjogaGUgdHVybmV0aCBpdCB3aGl0aGVyc29ldmVyIGhlIHdpbGwuCkV2ZXJ5IHdheSBvZiBhIG1hbiBpcyByaWdodCBpbiBoaXMgb3duIGV5ZXM6IGJ1dCB0aGUgTE9SRCBwb25kZXJldGggdGhlIGhlYXJ0cy4KVG8gZG8ganVzdGljZSBhbmQganVkZ21lbnQgaXMgbW9yZSBhY2NlcHRhYmxlIHRvIHRoZSBMT1JEIHRoYW4gc2FjcmlmaWNlLgpBbiBoaWdoIGxvb2ssIGFuZCBhIHByb3VkIGhlYXJ0LCBhbmQgdGhlIHBsb3dpbmcgb2YgdGhlIHdpY2tlZCwgaXMgc2luLgpUaGUgdGhvdWdodHMgb2YgdGhlIGRpbGlnZW50IHRlbmQgb25seSB0byBwbGVudGVvdXNuZXNzOyBidXQgb2YgZXZlcnkgb25lIHRoYXQgaXMgaGFzdHkgb25seSB0byB3YW50LgpUaGUgZ2V0dGluZyBvZiB0cmVhc3VyZXMgYnkgYSBseWluZyB0b25ndWUgaXMgYSB2YW5pdHkgdG9zc2VkIHRvIGFuZCBmcm8gb2YgdGhlbSB0aGF0IHNlZWsgZGVhdGguClRoZSByb2JiZXJ5IG9mIHRoZSB3aWNrZWQgc2hhbGwgZGVzdHJveSB0aGVtOyBiZWNhdXNlIHRoZXkgcmVmdXNlIHRvIGRvIGp1ZGdtZW50LgpUaGUgd2F5IG9mIG1hbiBpcyBmcm93YXJkIGFuZCBzdHJhbmdlOiBidXQgYXMgZm9yIHRoZSBwdXJlLCBoaXMgd29yayBpcyByaWdodC4KSXQgaXMgYmV0dGVyIHRvIGR3ZWxsIGluIGEgY29ybmVyIG9mIHRoZSBob3VzZXRvcCwgdGhhbiB3aXRoIGEgYnJhd2xpbmcgd29tYW4gaW4gYSB3aWRlIGhvdXNlLgpUaGUgc291bCBvZiB0aGUgd2lja2VkIGRlc2lyZXRoIGV2aWw6IGhpcyBuZWlnaGJvdXIgZmluZGV0aCBubyBmYXZvdXIgaW4gaGlzIGV5ZXMuCldoZW4gdGhlIHNjb3JuZXIgaXMgcHVuaXNoZWQsIHRoZSBzaW1wbGUgaXMgbWFkZSB3aXNlOiBhbmQgd2hlbiB0aGUgd2lzZSBpcyBpbnN0cnVjdGVkLCBoZSByZWNlaXZldGgga25vd2xlZGdlLgpUaGUgcmlnaHRlb3VzIG1hbiB3aXNlbHkgY29uc2lkZXJldGggdGhlIGhvdXNlIG9mIHRoZSB3aWNrZWQ6IGJ1dCBHb2Qgb3ZlcnRocm93ZXRoIHRoZSB3aWNrZWQgZm9yIHRoZWlyIHdpY2tlZG5lc3MuCldob3NvIHN0b3BwZXRoIGhpcyBlYXJzIGF0IHRoZSBjcnkgb2YgdGhlIHBvb3IsIGhlIGFsc28gc2hhbGwgY3J5IGhpbXNlbGYsIGJ1dCBzaGFsbCBub3QgYmUgaGVhcmQuCkEgZ2lmdCBpbiBzZWNyZXQgcGFjaWZpZXRoIGFuZ2VyOiBhbmQgYSByZXdhcmQgaW4gdGhlIGJvc29tIHN0cm9uZyB3cmF0aC4KSXQgaXMgam95IHRvIHRoZSBqdXN0IHRvIGRvIGp1ZGdtZW50OiBidXQgZGVzdHJ1Y3Rpb24gc2hhbGwgYmUgdG8gdGhlIHdvcmtlcnMgb2YgaW5pcXVpdHkuClRoZSBtYW4gdGhhdCB3YW5kZXJldGggb3V0IG9mIHRoZSB3YXkgb2YgdW5kZXJzdGFuZGluZyBzaGFsbCByZW1haW4gaW4gdGhlIGNvbmdyZWdhdGlvbiBvZiB0aGUgZGVhZC4KSGUgdGhhdCBsb3ZldGggcGxlYXN1cmUgc2hhbGwgYmUgYSBwb29yIG1hbjogaGUgdGhhdCBsb3ZldGggd2luZSBhbmQgb2lsIHNoYWxsIG5vdCBiZSByaWNoLgpUaGUgd2lja2VkIHNoYWxsIGJlIGEgcmFuc29tIGZvciB0aGUgcmlnaHRlb3VzLCBhbmQgdGhlIHRyYW5zZ3Jlc3NvciBmb3IgdGhlIHVwcmlnaHQuCkl0IGlzIGJldHRlciB0byBkd2VsbCBpbiB0aGUgd2lsZGVybmVzcywgdGhhbiB3aXRoIGEgY29udGVudGlvdXMgYW5kIGFuIGFuZ3J5IHdvbWFuLgpUaGVyZSBpcyB0cmVhc3VyZSB0byBiZSBkZXNpcmVkIGFuZCBvaWwgaW4gdGhlIGR3ZWxsaW5nIG9mIHRoZSB3aXNlOyBidXQgYSBmb29saXNoIG1hbiBzcGVuZGV0aCBpdCB1cC4KSGUgdGhhdCBmb2xsb3dldGggYWZ0ZXIgcmlnaHRlb3VzbmVzcyBhbmQgbWVyY3kgZmluZGV0aCBsaWZlLCByaWdodGVvdXNuZXNzLCBhbmQgaG9ub3VyLgpBIHdpc2UgbWFuIHNjYWxldGggdGhlIGNpdHkgb2YgdGhlIG1pZ2h0eSwgYW5kIGNhc3RldGggZG93biB0aGUgc3RyZW5ndGggb2YgdGhlIGNvbmZpZGVuY2UgdGhlcmVvZi4KV2hvc28ga2VlcGV0aCBoaXMgbW91dGggYW5kIGhpcyB0b25ndWUga2VlcGV0aCBoaXMgc291bCBmcm9tIHRyb3VibGVzLgpQcm91ZCBhbmQgaGF1Z2h0eSBzY29ybmVyIGlzIGhpcyBuYW1lLCB3aG8gZGVhbGV0aCBpbiBwcm91ZCB3cmF0aC4KVGhlIGRlc2lyZSBvZiB0aGUgc2xvdGhmdWwga2lsbGV0aCBoaW07IGZvciBoaXMgaGFuZHMgcmVmdXNlIHRvIGxhYm91ci4KSGUgY292ZXRldGggZ3JlZWRpbHkgYWxsIHRoZSBkYXkgbG9uZzogYnV0IHRoZSByaWdodGVvdXMgZ2l2ZXRoIGFuZCBzcGFyZXRoIG5vdC4KVGhlIHNhY3JpZmljZSBvZiB0aGUgd2lja2VkIGlzIGFib21pbmF0aW9uOiBob3cgbXVjaCBtb3JlLCB3aGVuIGhlIGJyaW5nZXRoIGl0IHdpdGggYSB3aWNrZWQgbWluZD8KQSBmYWxzZSB3aXRuZXNzIHNoYWxsIHBlcmlzaDogYnV0IHRoZSBtYW4gdGhhdCBoZWFyZXRoIHNwZWFrZXRoIGNvbnN0YW50bHkuCkEgd2lja2VkIG1hbiBoYXJkZW5ldGggaGlzIGZhY2U6IGJ1dCBhcyBmb3IgdGhlIHVwcmlnaHQsIGhlIGRpcmVjdGV0aCBoaXMgd2F5LgpUaGVyZSBpcyBubyB3aXNkb20gbm9yIHVuZGVyc3RhbmRpbmcgbm9yIGNvdW5zZWwgYWdhaW5zdCB0aGUgTE9SRC4KVGhlIGhvcnNlIGlzIHByZXBhcmVkIGFnYWluc3QgdGhlIGRheSBvZiBiYXR0bGU6IGJ1dCBzYWZldHkgaXMgb2YgdGhlIExPUkQuCkEgR09PRCBuYW1lIGlzIHJhdGhlciB0byBiZSBjaG9zZW4gdGhhbiBncmVhdCByaWNoZXMsIGFuZCBsb3ZpbmcgZmF2b3VyIHJhdGhlciB0aGFuIHNpbHZlciBhbmQgZ29sZC4KVGhlIHJpY2ggYW5kIHBvb3IgbWVldCB0b2dldGhlcjogdGhlIExPUkQgaXMgdGhlIG1ha2VyIG9mIHRoZW0gYWxsLgpBIHBydWRlbnQgbWFuIGZvcmVzZWV0aCB0aGUgZXZpbCwgYW5kIGhpZGV0aCBoaW1zZWxmOiBidXQgdGhlIHNpbXBsZSBwYXNzIG9uLCBhbmQgYXJlIHB1bmlzaGVkLgpCeSBodW1pbGl0eSBhbmQgdGhlIGZlYXIgb2YgdGhlIExPUkQgYXJlIHJpY2hlcywgYW5kIGhvbm91ciwgYW5kIGxpZmUuClRob3JucyBhbmQgc25hcmVzIGFyZSBpbiB0aGUgd2F5IG9mIHRoZSBmcm93YXJkOiBoZSB0aGF0IGRvdGgga2VlcCBoaXMgc291bCBzaGFsbCBiZSBmYXIgZnJvbSB0aGVtLgpUcmFpbiB1cCBhIGNoaWxkIGluIHRoZSB3YXkgaGUgc2hvdWxkIGdvOiBhbmQgd2hlbiBoZSBpcyBvbGQsIGhlIHdpbGwgbm90IGRlcGFydCBmcm9tIGl0LgpUaGUgcmljaCBydWxldGggb3ZlciB0aGUgcG9vciwgYW5kIHRoZSBib3Jyb3dlciBpcyBzZXJ2YW50IHRvIHRoZSBsZW5kZXIuCkhlIHRoYXQgc293ZXRoIGluaXF1aXR5IHNoYWxsIHJlYXAgdmFuaXR5OiBhbmQgdGhlIHJvZCBvZiBoaXMgYW5nZXIgc2hhbGwgZmFpbC4KSGUgdGhhdCBoYXRoIGEgYm91bnRpZnVsIGV5ZSBzaGFsbCBiZSBibGVzc2VkOyBmb3IgaGUgZ2l2ZXRoIG9mIGhpcyBicmVhZCB0byB0aGUgcG9vci4KQ2FzdCBvdXQgdGhlIHNjb3JuZXIsIGFuZCBjb250ZW50aW9uIHNoYWxsIGdvIG91dDsgeWVhLCBzdHJpZmUgYW5kIHJlcHJvYWNoIHNoYWxsIGNlYXNlLgpIZSB0aGF0IGxvdmV0aCBwdXJlbmVzcyBvZiBoZWFydCwgZm9yIHRoZSBncmFjZSBvZiBoaXMgbGlwcyB0aGUga2luZyBzaGFsbCBiZSBoaXMgZnJpZW5kLgpUaGUgZXllcyBvZiB0aGUgTE9SRCBwcmVzZXJ2ZSBrbm93bGVkZ2UsIGFuZCBoZSBvdmVydGhyb3dldGggdGhlIHdvcmRzIG9mIHRoZSB0cmFuc2dyZXNzb3IuClRoZSBzbG90aGZ1bCBtYW4gc2FpdGgsIFRoZXJlIGlzIGEgbGlvbiB3aXRob3V0LCBJIHNoYWxsIGJlIHNsYWluIGluIHRoZSBzdHJlZXRzLgpUaGUgbW91dGggb2Ygc3RyYW5nZSB3b21lbiBpcyBhIGRlZXAgcGl0OiBoZSB0aGF0IGlzIGFiaG9ycmVkIG9mIHRoZSBMT1JEIHNoYWxsIGZhbGwgdGhlcmVpbi4KRm9vbGlzaG5lc3MgaXMgYm91bmQgaW4gdGhlIGhlYXJ0IG9mIGEgY2hpbGQ7IGJ1dCB0aGUgcm9kIG9mIGNvcnJlY3Rpb24gc2hhbGwgZHJpdmUgaXQgZmFyIGZyb20gaGltLgpIZSB0aGF0IG9wcHJlc3NldGggdGhlIHBvb3IgdG8gaW5jcmVhc2UgaGlzIHJpY2hlcywgYW5kIGhlIHRoYXQgZ2l2ZXRoIHRvIHRoZSByaWNoLCBzaGFsbCBzdXJlbHkgY29tZSB0byB3YW50LgpCb3cgZG93biB0aGluZSBlYXIsIGFuZCBoZWFyIHRoZSB3b3JkcyBvZiB0aGUgd2lzZSwgYW5kIGFwcGx5IHRoaW5lIGhlYXJ0IHVudG8gbXkga25vd2xlZGdlLgpGb3IgaXQgaXMgYSBwbGVhc2FudCB0aGluZyBpZiB0aG91IGtlZXAgdGhlbSB3aXRoaW4gdGhlZTsgdGhleSBzaGFsbCB3aXRoYWwgYmUgZml0dGVkIGluIHRoeSBsaXBzLgpUaGF0IHRoeSB0cnVzdCBtYXkgYmUgaW4gdGhlIExPUkQsIEkgaGF2ZSBtYWRlIGtub3duIHRvIHRoZWUgdGhpcyBkYXksIGV2ZW4gdG8gdGhlZS4KSGF2ZSBub3QgSSB3cml0dGVuIHRvIHRoZWUgZXhjZWxsZW50IHRoaW5ncyBpbiBjb3Vuc2VscyBhbmQga25vd2xlZGdlLApUaGF0IEkgbWlnaHQgbWFrZSB0aGVlIGtub3cgdGhlIGNlcnRhaW50eSBvZiB0aGUgd29yZHMgb2YgdHJ1dGg7IHRoYXQgdGhvdSBtaWdodGVzdCBhbnN3ZXIgdGhlIHdvcmRzIG9mIHRydXRoIHRvIHRoZW0gdGhhdCBzZW5kIHVudG8gdGhlZT8KUm9iIG5vdCB0aGUgcG9vciwgYmVjYXVzZSBoZSBpcyBwb29yOiBuZWl0aGVyIG9wcHJlc3MgdGhlIGFmZmxpY3RlZCBpbiB0aGUgZ2F0ZToKRm9yIHRoZSBMT1JEIHdpbGwgcGxlYWQgdGhlaXIgY2F1c2UsIGFuZCBzcG9pbCB0aGUgc291bCBvZiB0aG9zZSB0aGF0IHNwb2lsZWQgdGhlbS4KTWFrZSBubyBmcmllbmRzaGlwIHdpdGggYW4gYW5ncnkgbWFuOyBhbmQgd2l0aCBhIGZ1cmlvdXMgbWFuIHRob3Ugc2hhbHQgbm90IGdvOgpMZXN0IHRob3UgbGVhcm4gaGlzIHdheXMsIGFuZCBnZXQgYSBzbmFyZSB0byB0aHkgc291bC4KQmUgbm90IHRob3Ugb25lIG9mIHRoZW0gdGhhdCBzdHJpa2UgaGFuZHMsIG9yIG9mIHRoZW0gdGhhdCBhcmUgc3VyZXRpZXMgZm9yIGRlYnRzLgpJZiB0aG91IGhhc3Qgbm90aGluZyB0byBwYXksIHdoeSBzaG91bGQgaGUgdGFrZSBhd2F5IHRoeSBiZWQgZnJvbSB1bmRlciB0aGVlPwpSZW1vdmUgbm90IHRoZSBhbmNpZW50IGxhbmRtYXJrLCB3aGljaCB0aHkgZmF0aGVycyBoYXZlIHNldC4KU2Vlc3QgdGhvdSBhIG1hbiBkaWxpZ2VudCBpbiBoaXMgYnVzaW5lc3M/IGhlIHNoYWxsIHN0YW5kIGJlZm9yZSBraW5nczsgaGUgc2hhbGwgbm90IHN0YW5kIGJlZm9yZSBtZWFuIG1lbi4KV2hlbiB0aG91IHNpdHRlc3QgdG8gZWF0IHdpdGggYSBydWxlciwgY29uc2lkZXIgZGlsaWdlbnRseSB3aGF0IGlzIGJlZm9yZSB0aGVlOgpBbmQgcHV0IGEga25pZmUgdG8gdGh5IHRocm9hdCwgaWYgdGhvdSBiZSBhIG1hbiBnaXZlbiB0byBhcHBldGl0ZS4KQmUgbm90IGRlc2lyb3VzIG9mIGhpcyBkYWludGllczogZm9yIHRoZXkgYXJlIGRlY2VpdGZ1bCBtZWF0LgpMYWJvdXIgbm90IHRvIGJlIHJpY2g6IGNlYXNlIGZyb20gdGhpbmUgb3duIHdpc2RvbS4KV2lsdCB0aG91IHNldCB0aGluZSBleWVzIHVwb24gdGhhdCB3aGljaCBpcyBub3Q/IGZvciByaWNoZXMgY2VydGFpbmx5IG1ha2UgdGhlbXNlbHZlcyB3aW5nczsgdGhleSBmbHkgYXdheSBhcyBhbiBlYWdsZSB0b3dhcmQgaGVhdmVuLgpFYXQgdGhvdSBub3QgdGhlIGJyZWFkIG9mIGhpbSB0aGF0IGhhdGggYW4gZXZpbCBleWUsIG5laXRoZXIgZGVzaXJlIHRob3UgaGlzIGRhaW50eSBtZWF0czoKRm9yIGFzIGhlIHRoaW5rZXRoIGluIGhpcyBoZWFydCwgc28gaXMgaGU6IEVhdCBhbmQgZHJpbmssIHNhaXRoIGhlIHRvIHRoZWU7IGJ1dCBoaXMgaGVhcnQgaXMgbm90IHdpdGggdGhlZS4KVGhlIG1vcnNlbCB3aGljaCB0aG91IGhhc3QgZWF0ZW4gc2hhbHQgdGhvdSB2b21pdCB1cCwgYW5kIGxvc2UgdGh5IHN3ZWV0IHdvcmRzLgpTcGVhayBub3QgaW4gdGhlIGVhcnMgb2YgYSBmb29sOiBmb3IgaGUgd2lsbCBkZXNwaXNlIHRoZSB3aXNkb20gb2YgdGh5IHdvcmRzLgpSZW1vdmUgbm90IHRoZSBvbGQgbGFuZG1hcms7IGFuZCBlbnRlciBub3QgaW50byB0aGUgZmllbGRzIG9mIHRoZSBmYXRoZXJsZXNzOgpGb3IgdGhlaXIgcmVkZWVtZXIgaXMgbWlnaHR5OyBoZSBzaGFsbCBwbGVhZCB0aGVpciBjYXVzZSB3aXRoIHRoZWUuCkFwcGx5IHRoaW5lIGhlYXJ0IHVudG8gaW5zdHJ1Y3Rpb24sIGFuZCB0aGluZSBlYXJzIHRvIHRoZSB3b3JkcyBvZiBrbm93bGVkZ2UuCldpdGhob2xkIG5vdCBjb3JyZWN0aW9uIGZyb20gdGhlIGNoaWxkOiBmb3IgaWYgdGhvdSBiZWF0ZXN0IGhpbSB3aXRoIHRoZSByb2QsIGhlIHNoYWxsIG5vdCBkaWUuClRob3Ugc2hhbHQgYmVhdCBoaW0gd2l0aCB0aGUgcm9kLCBhbmQgc2hhbHQgZGVsaXZlciBoaXMgc291bCBmcm9tIGhlbGwuCk15IHNvbiwgaWYgdGhpbmUgaGVhcnQgYmUgd2lzZSwgbXkgaGVhcnQgc2hhbGwgcmVqb2ljZSwgZXZlbiBtaW5lLgpZZWEsIG15IHJlaW5zIHNoYWxsIHJlam9pY2UsIHdoZW4gdGh5IGxpcHMgc3BlYWsgcmlnaHQgdGhpbmdzLgpMZXQgbm90IHRoaW5lIGhlYXJ0IGVudnkgc2lubmVyczogYnV0IGJlIHRob3UgaW4gdGhlIGZlYXIgb2YgdGhlIExPUkQgYWxsIHRoZSBkYXkgbG9uZy4KRm9yIHN1cmVseSB0aGVyZSBpcyBhbiBlbmQ7IGFuZCB0aGluZSBleHBlY3RhdGlvbiBzaGFsbCBub3QgYmUgY3V0IG9mZi4KSGVhciB0aG91LCBteSBzb24sIGFuZCBiZSB3aXNlLCBhbmQgZ3VpZGUgdGhpbmUgaGVhcnQgaW4gdGhlIHdheS4KQmUgbm90IGFtb25nIHdpbmViaWJiZXJzOyBhbW9uZyByaW90b3VzIGVhdGVycyBvZiBmbGVzaDoKRm9yIHRoZSBkcnVua2FyZCBhbmQgdGhlIGdsdXR0b24gc2hhbGwgY29tZSB0byBwb3ZlcnR5OiBhbmQgZHJvd3NpbmVzcyBzaGFsbCBjbG90aGUgYSBtYW4gd2l0aCByYWdzLgpIZWFya2VuIHVudG8gdGh5IGZhdGhlciB0aGF0IGJlZ2F0IHRoZWUsIGFuZCBkZXNwaXNlIG5vdCB0aHkgbW90aGVyIHdoZW4gc2hlIGlzIG9sZC4KQnV5IHRoZSB0cnV0aCwgYW5kIHNlbGwgaXQgbm90OyBhbHNvIHdpc2RvbSwgYW5kIGluc3RydWN0aW9uLCBhbmQgdW5kZXJzdGFuZGluZy4KVGhlIGZhdGhlciBvZiB0aGUgcmlnaHRlb3VzIHNoYWxsIGdyZWF0bHkgcmVqb2ljZTogYW5kIGhlIHRoYXQgYmVnZXR0ZXRoIGEgd2lzZSBjaGlsZCBzaGFsbCBoYXZlIGpveSBvZiBoaW0uClRoeSBmYXRoZXIgYW5kIHRoeSBtb3RoZXIgc2hhbGwgYmUgZ2xhZCwgYW5kIHNoZSB0aGF0IGJhcmUgdGhlZSBzaGFsbCByZWpvaWNlLgpNeSBzb24sIGdpdmUgbWUgdGhpbmUgaGVhcnQsIGFuZCBsZXQgdGhpbmUgZXllcyBvYnNlcnZlIG15IHdheXMuCkZvciBhIHdob3JlIGlzIGEgZGVlcCBkaXRjaDsgYW5kIGEgc3RyYW5nZSB3b21hbiBpcyBhIG5hcnJvdyBwaXQuClNoZSBhbHNvIGxpZXRoIGluIHdhaXQgYXMgZm9yIGEgcHJleSwgYW5kIGluY3JlYXNldGggdGhlIHRyYW5zZ3Jlc3NvcnMgYW1vbmcgbWVuLgpXaG8gaGF0aCB3b2U/IHdobyBoYXRoIHNvcnJvdz8gd2hvIGhhdGggY29udGVudGlvbnM/IHdobyBoYXRoIGJhYmJsaW5nPyB3aG8gaGF0aCB3b3VuZHMgd2l0aG91dCBjYXVzZT8gd2hvIGhhdGggcmVkbmVzcyBvZiBleWVzPwpUaGV5IHRoYXQgdGFycnkgbG9uZyBhdCB0aGUgd2luZTsgdGhleSB0aGF0IGdvIHRvIHNlZWsgbWl4ZWQgd2luZS4KTG9vayBub3QgdGhvdSB1cG9uIHRoZSB3aW5lIHdoZW4gaXQgaXMgcmVkLCB3aGVuIGl0IGdpdmV0aCBoaXMgY29sb3VyIGluIHRoZSBjdXAsIHdoZW4gaXQgbW92ZXRoIGl0c2VsZiBhcmlnaHQuCkF0IHRoZSBsYXN0IGl0IGJpdGV0aCBsaWtlIGEgc2VycGVudCwgYW5kIHN0aW5nZXRoIGxpa2UgYW4gYWRkZXIuClRoaW5lIGV5ZXMgc2hhbGwgYmVob2xkIHN0cmFuZ2Ugd29tZW4sIGFuZCB0aGluZSBoZWFydCBzaGFsbCB1dHRlciBwZXJ2ZXJzZSB0aGluZ3MuClllYSwgdGhvdSBzaGFsdCBiZSBhcyBoZSB0aGF0IGxpZXRoIGRvd24gaW4gdGhlIG1pZHN0IG9mIHRoZSBzZWEsIG9yIGFzIGhlIHRoYXQgbGlldGggdXBvbiB0aGUgdG9wIG9mIGEgbWFzdC4KVGhleSBoYXZlIHN0cmlja2VuIG1lLCBzaGFsdCB0aG91IHNheSwgYW5kIEkgd2FzIG5vdCBzaWNrOyB0aGV5IGhhdmUgYmVhdGVuIG1lLCBhbmQgSSBmZWx0IGl0IG5vdDogd2hlbiBzaGFsbCBJIGF3YWtlPyBJIHdpbGwgc2VlayBpdCB5ZXQgYWdhaW4uCkJlIG5vdCB0aG91IGVudmlvdXMgYWdhaW5zdCBldmlsIG1lbiwgbmVpdGhlciBkZXNpcmUgdG8gYmUgd2l0aCB0aGVtLgpGb3IgdGhlaXIgaGVhcnQgc3R1ZGlldGggZGVzdHJ1Y3Rpb24sIGFuZCB0aGVpciBsaXBzIHRhbGsgb2YgbWlzY2hpZWYuClRocm91Z2ggd2lzZG9tIGlzIGFuIGhvdXNlIGJ1aWxkZWQ7IGFuZCBieSB1bmRlcnN0YW5kaW5nIGl0IGlzIGVzdGFibGlzaGVkOgpBbmQgYnkga25vd2xlZGdlIHNoYWxsIHRoZSBjaGFtYmVycyBiZSBmaWxsZWQgd2l0aCBhbGwgcHJlY2lvdXMgYW5kIHBsZWFzYW50IHJpY2hlcy4KQSB3aXNlIG1hbiBpcyBzdHJvbmc7IHllYSwgYSBtYW4gb2Yga25vd2xlZGdlIGluY3JlYXNldGggc3RyZW5ndGguCkZvciBieSB3aXNlIGNvdW5zZWwgdGhvdSBzaGFsdCBtYWtlIHRoeSB3YXI6IGFuZCBpbiBtdWx0aXR1ZGUgb2YgY291bnNlbGxvcnMgdGhlcmUgaXMgc2FmZXR5LgpXaXNkb20gaXMgdG9vIGhpZ2ggZm9yIGEgZm9vbDogaGUgb3BlbmV0aCBub3QgaGlzIG1vdXRoIGluIHRoZSBnYXRlLgpIZSB0aGF0IGRldmlzZXRoIHRvIGRvIGV2aWwgc2hhbGwgYmUgY2FsbGVkIGEgbWlzY2hpZXZvdXMgcGVyc29uLgpUaGUgdGhvdWdodCBvZiBmb29saXNobmVzcyBpcyBzaW46IGFuZCB0aGUgc2Nvcm5lciBpcyBhbiBhYm9taW5hdGlvbiB0byBtZW4uCklmIHRob3UgZmFpbnQgaW4gdGhlIGRheSBvZiBhZHZlcnNpdHksIHRoeSBzdHJlbmd0aCBpcyBzbWFsbC4KSWYgdGhvdSBmb3JiZWFyIHRvIGRlbGl2ZXIgdGhlbSB0aGF0IGFyZSBkcmF3biB1bnRvIGRlYXRoLCBhbmQgdGhvc2UgdGhhdCBhcmUgcmVhZHkgdG8gYmUgc2xhaW47CklmIHRob3Ugc2F5ZXN0LCBCZWhvbGQsIHdlIGtuZXcgaXQgbm90OyBkb3RoIG5vdCBoZSB0aGF0IHBvbmRlcmV0aCB0aGUgaGVhcnQgY29uc2lkZXIgaXQ/IGFuZCBoZSB0aGF0IGtlZXBldGggdGh5IHNvdWwsIGRvdGggbm90IGhlIGtub3cgaXQ/IGFuZCBzaGFsbCBub3QgaGUgcmVuZGVyIHRvIGV2ZXJ5IG1hbiBhY2NvcmRpbmcgdG8gaGlzIHdvcmtzPwpNeSBzb24sIGVhdCB0aG91IGhvbmV5LCBiZWNhdXNlIGl0IGlzIGdvb2Q7IGFuZCB0aGUgaG9uZXljb21iLCB3aGljaCBpcyBzd2VldCB0byB0aHkgdGFzdGU6ClNvIHNoYWxsIHRoZSBrbm93bGVkZ2Ugb2Ygd2lzZG9tIGJlIHVudG8gdGh5IHNvdWw6IHdoZW4gdGhvdSBoYXN0IGZvdW5kIGl0LCB0aGVuIHRoZXJlIHNoYWxsIGJlIGEgcmV3YXJkLCBhbmQgdGh5IGV4cGVjdGF0aW9uIHNoYWxsIG5vdCBiZSBjdXQgb2ZmLgpMYXkgbm90IHdhaXQsIE8gd2lja2VkIG1hbiwgYWdhaW5zdCB0aGUgZHdlbGxpbmcgb2YgdGhlIHJpZ2h0ZW91czsgc3BvaWwgbm90IGhpcyByZXN0aW5nIHBsYWNlOgpGb3IgYSBqdXN0IG1hbiBmYWxsZXRoIHNldmVuIHRpbWVzLCBhbmQgcmlzZXRoIHVwIGFnYWluOiBidXQgdGhlIHdpY2tlZCBzaGFsbCBmYWxsIGludG8gbWlzY2hpZWYuClJlam9pY2Ugbm90IHdoZW4gdGhpbmUgZW5lbXkgZmFsbGV0aCwgYW5kIGxldCBub3QgdGhpbmUgaGVhcnQgYmUgZ2xhZCB3aGVuIGhlIHN0dW1ibGV0aDoKTGVzdCB0aGUgTE9SRCBzZWUgaXQsIGFuZCBpdCBkaXNwbGVhc2UgaGltLCBhbmQgaGUgdHVybiBhd2F5IGhpcyB3cmF0aCBmcm9tIGhpbS4KRnJldCBub3QgdGh5c2VsZiBiZWNhdXNlIG9mIGV2aWwgbWVuLCBuZWl0aGVyIGJlIHRob3UgZW52aW91cyBhdCB0aGUgd2lja2VkOgpGb3IgdGhlcmUgc2hhbGwgYmUgbm8gcmV3YXJkIHRvIHRoZSBldmlsIG1hbjsgdGhlIGNhbmRsZSBvZiB0aGUgd2lja2VkIHNoYWxsIGJlIHB1dCBvdXQuCk15IHNvbiwgZmVhciB0aG91IHRoZSBMT1JEIGFuZCB0aGUga2luZzogYW5kIG1lZGRsZSBub3Qgd2l0aCB0aGVtIHRoYXQgYXJlIGdpdmVuIHRvIGNoYW5nZToKRm9yIHRoZWlyIGNhbGFtaXR5IHNoYWxsIHJpc2Ugc3VkZGVubHk7IGFuZCB3aG8ga25vd2V0aCB0aGUgcnVpbiBvZiB0aGVtIGJvdGg/ClRoZXNlIHRoaW5ncyBhbHNvIGJlbG9uZyB0byB0aGUgd2lzZS4gSXQgaXMgbm90IGdvb2QgdG8gaGF2ZSByZXNwZWN0IG9mIHBlcnNvbnMgaW4ganVkZ21lbnQuCkhlIHRoYXQgc2FpdGggdW50byB0aGUgd2lja2VkLCBUaG91IGFyZSByaWdodGVvdXM7IGhpbSBzaGFsbCB0aGUgcGVvcGxlIGN1cnNlLCBuYXRpb25zIHNoYWxsIGFiaG9yIGhpbToKQnV0IHRvIHRoZW0gdGhhdCByZWJ1a2UgaGltIHNoYWxsIGJlIGRlbGlnaHQsIGFuZCBhIGdvb2QgYmxlc3Npbmcgc2hhbGwgY29tZSB1cG9uIHRoZW0uCkV2ZXJ5IG1hbiBzaGFsbCBraXNzIGhpcyBsaXBzIHRoYXQgZ2l2ZXRoIGEgcmlnaHQgYW5zd2VyLgpQcmVwYXJlIHRoeSB3b3JrIHdpdGhvdXQsIGFuZCBtYWtlIGl0IGZpdCBmb3IgdGh5c2VsZiBpbiB0aGUgZmllbGQ7IGFuZCBhZnRlcndhcmRzIGJ1aWxkIHRoaW5lIGhvdXNlLgpCZSBub3QgYSB3aXRuZXNzIGFnYWluc3QgdGh5IG5laWdoYm91ciB3aXRob3V0IGNhdXNlOyBhbmQgZGVjZWl2ZSBub3Qgd2l0aCB0aHkgbGlwcy4KU2F5IG5vdCwgSSB3aWxsIGRvIHNvIHRvIGhpbSBhcyBoZSBoYXRoIGRvbmUgdG8gbWU6IEkgd2lsbCByZW5kZXIgdG8gdGhlIG1hbiBhY2NvcmRpbmcgdG8gaGlzIHdvcmsuCkkgd2VudCBieSB0aGUgZmllbGQgb2YgdGhlIHNsb3RoZnVsLCBhbmQgYnkgdGhlIHZpbmV5YXJkIG9mIHRoZSBtYW4gdm9pZCBvZiB1bmRlcnN0YW5kaW5nOwpBbmQsIGxvLCBpdCB3YXMgYWxsIGdyb3duIG92ZXIgd2l0aCB0aG9ybnMsIGFuZCBuZXR0bGVzIGhhZCBjb3ZlcmVkIHRoZSBmYWNlIHRoZXJlb2YsIGFuZCB0aGUgc3RvbmUgd2FsbCB0aGVyZW9mIHdhcyBicm9rZW4gZG93bi4KVGhlbiBJIHNhdywgYW5kIGNvbnNpZGVyZWQgaXQgd2VsbDogSSBsb29rZWQgdXBvbiBpdCwgYW5kIHJlY2VpdmVkIGluc3RydWN0aW9uLgpZZXQgYSBsaXR0bGUgc2xlZXAsIGEgbGl0dGxlIHNsdW1iZXIsIGEgbGl0dGxlIGZvbGRpbmcgb2YgdGhlIGhhbmRzIHRvIHNsZWVwOgpTbyBzaGFsbCB0aHkgcG92ZXJ0eSBjb21lIGFzIG9uZSB0aGF0IHRyYXZlbGxldGg7IGFuZCB0aHkgd2FudCBhcyBhbiBhcm1lZCBtYW4uClRoZXNlIGFyZSBhbHNvIHByb3ZlcmJzIG9mIFNvbG9tb24sIHdoaWNoIHRoZSBtZW4gb2YgSGV6ZWtpYWgga2luZyBvZiBKdWRhaCBjb3BpZWQgb3V0LgpJdCBpcyB0aGUgZ2xvcnkgb2YgR29kIHRvIGNvbmNlYWwgYSB0aGluZzogYnV0IHRoZSBob25vdXIgb2Yga2luZ3MgaXMgdG8gc2VhcmNoIG91dCBhIG1hdHRlci4KVGhlIGhlYXZlbiBmb3IgaGVpZ2h0LCBhbmQgdGhlIGVhcnRoIGZvciBkZXB0aCwgYW5kIHRoZSBoZWFydCBvZiBraW5ncyBpcyB1bnNlYXJjaGFibGUuClRha2UgYXdheSB0aGUgZHJvc3MgZnJvbSB0aGUgc2lsdmVyLCBhbmQgdGhlcmUgc2hhbGwgY29tZSBmb3J0aCBhIHZlc3NlbCBmb3IgdGhlIGZpbmVyLgpUYWtlIGF3YXkgdGhlIHdpY2tlZCBmcm9tIGJlZm9yZSB0aGUga2luZywgYW5kIGhpcyB0aHJvbmUgc2hhbGwgYmUgZXN0YWJsaXNoZWQgaW4gcmlnaHRlb3VzbmVzcy4KUHV0IG5vdCBmb3J0aCB0aHlzZWxmIGluIHRoZSBwcmVzZW5jZSBvZiB0aGUga2luZywgYW5kIHN0YW5kIG5vdCBpbiB0aGUgcGxhY2Ugb2YgZ3JlYXQgbWVuOgpGb3IgYmV0dGVyIGl0IGlzIHRoYXQgaXQgYmUgc2FpZCB1bnRvIHRoZWUsIENvbWUgdXAgaGl0aGVyOyB0aGFuIHRoYXQgdGhvdSBzaG91bGRlc3QgYmUgcHV0IGxvd2VyIGluIHRoZSBwcmVzZW5jZSBvZiB0aGUgcHJpbmNlIHdob20gdGhpbmUgZXllcyBoYXZlIHNlZW4uCkdvIG5vdCBmb3J0aCBoYXN0aWx5IHRvIHN0cml2ZSwgbGVzdCB0aG91IGtub3cgbm90IHdoYXQgdG8gZG8gaW4gdGhlIGVuZCB0aGVyZW9mLCB3aGVuIHRoeSBuZWlnaGJvdXIgaGF0aCBwdXQgdGhlZSB0byBzaGFtZS4KRGViYXRlIHRoeSBjYXVzZSB3aXRoIHRoeSBuZWlnaGJvdXIgaGltc2VsZjsgYW5kIGRpc2NvdmVyIG5vdCBhIHNlY3JldCB0byBhbm90aGVyOgpMZXN0IGhlIHRoYXQgaGVhcmV0aCBpdCBwdXQgdGhlZSB0byBzaGFtZSwgYW5kIHRoaW5lIGluZmFteSB0dXJuIG5vdCBhd2F5LgpBIHdvcmQgZml0bHkgc3Bva2VuIGlzIGxpa2UgYXBwbGVzIG9mIGdvbGQgaW4gcGljdHVyZXMgb2Ygc2lsdmVyLgpBcyBhbiBlYXJyaW5nIG9mIGdvbGQsIGFuZCBhbiBvcm5hbWVudCBvZiBmaW5lIGdvbGQsIHNvIGlzIGEgd2lzZSByZXByb3ZlciB1cG9uIGFuIG9iZWRpZW50IGVhci4KQXMgdGhlIGNvbGQgb2Ygc25vdyBpbiB0aGUgdGltZSBvZiBoYXJ2ZXN0LCBzbyBpcyBhIGZhaXRoZnVsIG1lc3NlbmdlciB0byB0aGVtIHRoYXQgc2VuZCBoaW06IGZvciBoZSByZWZyZXNoZXRoIHRoZSBzb3VsIG9mIGhpcyBtYXN0ZXJzLgpXaG9zbyBib2FzdGV0aCBoaW1zZWxmIG9mIGEgZmFsc2UgZ2lmdCBpcyBsaWtlIGNsb3VkcyBhbmQgd2luZCB3aXRob3V0IHJhaW4uCkJ5IGxvbmcgZm9yYmVhcmluZyBpcyBhIHByaW5jZSBwZXJzdWFkZWQsIGFuZCBhIHNvZnQgdG9uZ3VlIGJyZWFrZXRoIHRoZSBib25lLgpIYXN0IHRob3UgZm91bmQgaG9uZXk/IGVhdCBzbyBtdWNoIGFzIGlzIHN1ZmZpY2llbnQgZm9yIHRoZWUsIGxlc3QgdGhvdSBiZSBmaWxsZWQgdGhlcmV3aXRoLCBhbmQgdm9taXQgaXQuCldpdGhkcmF3IHRoeSBmb290IGZyb20gdGh5IG5laWdoYm91cidzIGhvdXNlOyBsZXN0IGhlIGJlIHdlYXJ5IG9mIHRoZWUsIGFuZCBzbyBoYXRlIHRoZWUuCkEgbWFuIHRoYXQgYmVhcmV0aCBmYWxzZSB3aXRuZXNzIGFnYWluc3QgaGlzIG5laWdoYm91ciBpcyBhIG1hdWwsIGFuZCBhIHN3b3JkLCBhbmQgYSBzaGFycCBhcnJvdy4KQ29uZmlkZW5jZSBpbiBhbiB1bmZhaXRoZnVsIG1hbiBpbiB0aW1lIG9mIHRyb3VibGUgaXMgbGlrZSBhIGJyb2tlbiB0b290aCwgYW5kIGEgZm9vdCBvdXQgb2Ygam9pbnQuCkFzIGhlIHRoYXQgdGFrZXRoIGF3YXkgYSBnYXJtZW50IGluIGNvbGQgd2VhdGhlciwgYW5kIGFzIHZpbmVnYXIgdXBvbiBuaXRyZSwgc28gaXMgaGUgdGhhdCBzaW5nZXRoIHNvbmdzIHRvIGFuIGhlYXZ5IGhlYXJ0LgpJZiB0aGluZSBlbmVteSBiZSBodW5ncnksIGdpdmUgaGltIGJyZWFkIHRvIGVhdDsgYW5kIGlmIGhlIGJlIHRoaXJzdHksIGdpdmUgaGltIHdhdGVyIHRvIGRyaW5rOgpGb3IgdGhvdSBzaGFsdCBoZWFwIGNvYWxzIG9mIGZpcmUgdXBvbiBoaXMgaGVhZCwgYW5kIHRoZSBMT1JEIHNoYWxsIHJld2FyZCB0aGVlLgpUaGUgbm9ydGggd2luZCBkcml2ZXRoIGF3YXkgcmFpbjogc28gZG90aCBhbiBhbmdyeSBjb3VudGVuYW5jZSBhIGJhY2tiaXRpbmcgdG9uZ3VlLgpJdCBpcyBiZXR0ZXIgdG8gZHdlbGwgaW4gdGhlIGNvcm5lciBvZiB0aGUgaG91c2V0b3AsIHRoYW4gd2l0aCBhIGJyYXdsaW5nIHdvbWFuIGFuZCBpbiBhIHdpZGUgaG91c2UuCkFzIGNvbGQgd2F0ZXJzIHRvIGEgdGhpcnN0eSBzb3VsLCBzbyBpcyBnb29kIG5ld3MgZnJvbSBhIGZhciBjb3VudHJ5LgpBIHJpZ2h0ZW91cyBtYW4gZmFsbGluZyBkb3duIGJlZm9yZSB0aGUgd2lja2VkIGlzIGFzIGEgdHJvdWJsZWQgZm91bnRhaW4sIGFuZCBhIGNvcnJ1cHQgc3ByaW5nLgpJdCBpcyBub3QgZ29vZCB0byBlYXQgbXVjaCBob25leTogc28gZm9yIG1lbiB0byBzZWFyY2ggdGhlaXIgb3duIGdsb3J5IGlzIG5vdCBnbG9yeS4KSGUgdGhhdCBoYXRoIG5vIHJ1bGUgb3ZlciBoaXMgb3duIHNwaXJpdCBpcyBsaWtlIGEgY2l0eSB0aGF0IGlzIGJyb2tlbiBkb3duLCBhbmQgd2l0aG91dCB3YWxscy4KQXMgc25vdyBpbiBzdW1tZXIsIGFuZCBhcyByYWluIGluIGhhcnZlc3QsIHNvIGhvbm91ciBpcyBub3Qgc2VlbWx5IGZvciBhIGZvb2wuCkFzIHRoZSBiaXJkIGJ5IHdhbmRlcmluZywgYXMgdGhlIHN3YWxsb3cgYnkgZmx5aW5nLCBzbyB0aGUgY3Vyc2UgY2F1c2VsZXNzIHNoYWxsIG5vdCBjb21lLgpBIHdoaXAgZm9yIHRoZSBob3JzZSwgYSBicmlkbGUgZm9yIHRoZSBhc3MsIGFuZCBhIHJvZCBmb3IgdGhlIGZvb2wncyBiYWNrLgpBbnN3ZXIgbm90IGEgZm9vbCBhY2NvcmRpbmcgdG8gaGlzIGZvbGx5LCBsZXN0IHRob3UgYWxzbyBiZSBsaWtlIHVudG8gaGltLgpBbnN3ZXIgYSBmb29sIGFjY29yZGluZyB0byBoaXMgZm9sbHksIGxlc3QgaGUgYmUgd2lzZSBpbiBoaXMgb3duIGNvbmNlaXQuCkhlIHRoYXQgc2VuZGV0aCBhIG1lc3NhZ2UgYnkgdGhlIGhhbmQgb2YgYSBmb29sIGN1dHRldGggb2ZmIHRoZSBmZWV0LCBhbmQgZHJpbmtldGggZGFtYWdlLgpUaGUgbGVncyBvZiB0aGUgbGFtZSBhcmUgbm90IGVxdWFsOiBzbyBpcyBhIHBhcmFibGUgaW4gdGhlIG1vdXRoIG9mIGZvb2xzLgpBcyBoZSB0aGF0IGJpbmRldGggYSBzdG9uZSBpbiBhIHNsaW5nLCBzbyBpcyBoZSB0aGF0IGdpdmV0aCBob25vdXIgdG8gYSBmb29sLgpBcyBhIHRob3JuIGdvZXRoIHVwIGludG8gdGhlIGhhbmQgb2YgYSBkcnVua2FyZCwgc28gaXMgYSBwYXJhYmxlIGluIHRoZSBtb3V0aHMgb2YgZm9vbHMuClRoZSBncmVhdCBHb2QgdGhhdCBmb3JtZWQgYWxsIHRoaW5ncyBib3RoIHJld2FyZGV0aCB0aGUgZm9vbCwgYW5kIHJld2FyZGV0aCB0cmFuc2dyZXNzb3JzLgpBcyBhIGRvZyByZXR1cm5ldGggdG8gaGlzIHZvbWl0LCBzbyBhIGZvb2wgcmV0dXJuZXRoIHRvIGhpcyBmb2xseS4KU2Vlc3QgdGhvdSBhIG1hbiB3aXNlIGluIGhpcyBvd24gY29uY2VpdD8gdGhlcmUgaXMgbW9yZSBob3BlIG9mIGEgZm9vbCB0aGFuIG9mIGhpbS4KVGhlIHNsb3RoZnVsIG1hbiBzYWl0aCwgVGhlcmUgaXMgYSBsaW9uIGluIHRoZSB3YXk7IGEgbGlvbiBpcyBpbiB0aGUgc3RyZWV0cy4KQXMgdGhlIGRvb3IgdHVybmV0aCB1cG9uIGhpcyBoaW5nZXMsIHNvIGRvdGggdGhlIHNsb3RoZnVsIHVwb24gaGlzIGJlZC4KVGhlIHNsb3RoZnVsIGhpZGV0aCBoaXMgaGFuZCBpbiBoaXMgYm9zb207IGl0IGdyaWV2ZXRoIGhpbSB0byBicmluZyBpdCBhZ2FpbiB0byBoaXMgbW91dGguClRoZSBzbHVnZ2FyZCBpcyB3aXNlciBpbiBoaXMgb3duIGNvbmNlaXQgdGhhbiBzZXZlbiBtZW4gdGhhdCBjYW4gcmVuZGVyIGEgcmVhc29uLgpIZSB0aGF0IHBhc3NldGggYnksIGFuZCBtZWRkbGV0aCB3aXRoIHN0cmlmZSBiZWxvbmdpbmcgbm90IHRvIGhpbSwgaXMgbGlrZSBvbmUgdGhhdCB0YWtldGggYSBkb2cgYnkgdGhlIGVhcnMuCkFzIGEgbWFkIG1hbiB3aG8gY2FzdGV0aCBmaXJlYnJhbmRzLCBhcnJvd3MsIGFuZCBkZWF0aCwKU28gaXMgdGhlIG1hbiB0aGF0IGRlY2VpdmV0aCBoaXMgbmVpZ2hib3VyLCBhbmQgc2FpdGgsIEFtIG5vdCBJIGluIHNwb3J0PwpXaGVyZSBubyB3b29kIGlzLCB0aGVyZSB0aGUgZmlyZSBnb2V0aCBvdXQ6IHNvIHdoZXJlIHRoZXJlIGlzIG5vIHRhbGViZWFyZXIsIHRoZSBzdHJpZmUgY2Vhc2V0aC4KQXMgY29hbHMgYXJlIHRvIGJ1cm5pbmcgY29hbHMsIGFuZCB3b29kIHRvIGZpcmU7IHNvIGlzIGEgY29udGVudGlvdXMgbWFuIHRvIGtpbmRsZSBzdHJpZmUuClRoZSB3b3JkcyBvZiBhIHRhbGViZWFyZXIgYXJlIGFzIHdvdW5kcywgYW5kIHRoZXkgZ28gZG93biBpbnRvIHRoZSBpbm5lcm1vc3QgcGFydHMgb2YgdGhlIGJlbGx5LgpCdXJuaW5nIGxpcHMgYW5kIGEgd2lja2VkIGhlYXJ0IGFyZSBsaWtlIGEgcG90c2hlcmQgY292ZXJlZCB3aXRoIHNpbHZlciBkcm9zcy4KSGUgdGhhdCBoYXRldGggZGlzc2VtYmxldGggd2l0aCBoaXMgbGlwcywgYW5kIGxheWV0aCB1cCBkZWNlaXQgd2l0aGluIGhpbTsKV2hlbiBoZSBzcGVha2V0aCBmYWlyLCBiZWxpZXZlIGhpbSBub3Q6IGZvciB0aGVyZSBhcmUgc2V2ZW4gYWJvbWluYXRpb25zIGluIGhpcyBoZWFydC4KV2hvc2UgaGF0cmVkIGlzIGNvdmVyZWQgYnkgZGVjZWl0LCBoaXMgd2lja2VkbmVzcyBzaGFsbCBiZSBzaGV3ZWQgYmVmb3JlIHRoZSB3aG9sZSBjb25ncmVnYXRpb24uCldob3NvIGRpZ2dldGggYSBwaXQgc2hhbGwgZmFsbCB0aGVyZWluOiBhbmQgaGUgdGhhdCByb2xsZXRoIGEgc3RvbmUsIGl0IHdpbGwgcmV0dXJuIHVwb24gaGltLgpBIGx5aW5nIHRvbmd1ZSBoYXRldGggdGhvc2UgdGhhdCBhcmUgYWZmbGljdGVkIGJ5IGl0OyBhbmQgYSBmbGF0dGVyaW5nIG1vdXRoIHdvcmtldGggcnVpbi4KQm9hc3Qgbm90IHRoeXNlbGYgb2YgdG8gbW9ycm93OyBmb3IgdGhvdSBrbm93ZXN0IG5vdCB3aGF0IGEgZGF5IG1heSBicmluZyBmb3J0aC4KTGV0IGFub3RoZXIgbWFuIHByYWlzZSB0aGVlLCBhbmQgbm90IHRoaW5lIG93biBtb3V0aDsgYSBzdHJhbmdlciwgYW5kIG5vdCB0aGluZSBvd24gbGlwcy4KQSBzdG9uZSBpcyBoZWF2eSwgYW5kIHRoZSBzYW5kIHdlaWdodHk7IGJ1dCBhIGZvb2wncyB3cmF0aCBpcyBoZWF2aWVyIHRoYW4gdGhlbSBib3RoLgpXcmF0aCBpcyBjcnVlbCwgYW5kIGFuZ2VyIGlzIG91dHJhZ2VvdXM7IGJ1dCB3aG8gaXMgYWJsZSB0byBzdGFuZCBiZWZvcmUgZW52eT8KT3BlbiByZWJ1a2UgaXMgYmV0dGVyIHRoYW4gc2VjcmV0IGxvdmUuCkZhaXRoZnVsIGFyZSB0aGUgd291bmRzIG9mIGEgZnJpZW5kOyBidXQgdGhlIGtpc3NlcyBvZiBhbiBlbmVteSBhcmUgZGVjZWl0ZnVsLgpUaGUgZnVsbCBzb3VsIGxvYXRoZXRoIGFuIGhvbmV5Y29tYjsgYnV0IHRvIHRoZSBodW5ncnkgc291bCBldmVyeSBiaXR0ZXIgdGhpbmcgaXMgc3dlZXQuCkFzIGEgYmlyZCB0aGF0IHdhbmRlcmV0aCBmcm9tIGhlciBuZXN0LCBzbyBpcyBhIG1hbiB0aGF0IHdhbmRlcmV0aCBmcm9tIGhpcyBwbGFjZS4KT2ludG1lbnQgYW5kIHBlcmZ1bWUgcmVqb2ljZSB0aGUgaGVhcnQ6IHNvIGRvdGggdGhlIHN3ZWV0bmVzcyBvZiBhIG1hbidzIGZyaWVuZCBieSBoZWFydHkgY291bnNlbC4KVGhpbmUgb3duIGZyaWVuZCwgYW5kIHRoeSBmYXRoZXIncyBmcmllbmQsIGZvcnNha2Ugbm90OyBuZWl0aGVyIGdvIGludG8gdGh5IGJyb3RoZXIncyBob3VzZSBpbiB0aGUgZGF5IG9mIHRoeSBjYWxhbWl0eTogZm9yIGJldHRlciBpcyBhIG5laWdoYm91ciB0aGF0IGlzIG5lYXIgdGhhbiBhIGJyb3RoZXIgZmFyIG9mZi4KTXkgc29uLCBiZSB3aXNlLCBhbmQgbWFrZSBteSBoZWFydCBnbGFkLCB0aGF0IEkgbWF5IGFuc3dlciBoaW0gdGhhdCByZXByb2FjaGV0aCBtZS4KQSBwcnVkZW50IG1hbiBmb3Jlc2VldGggdGhlIGV2aWwsIGFuZCBoaWRldGggaGltc2VsZjsgYnV0IHRoZSBzaW1wbGUgcGFzcyBvbiwgYW5kIGFyZSBwdW5pc2hlZC4KVGFrZSBoaXMgZ2FybWVudCB0aGF0IGlzIHN1cmV0eSBmb3IgYSBzdHJhbmdlciwgYW5kIHRha2UgYSBwbGVkZ2Ugb2YgaGltIGZvciBhIHN0cmFuZ2Ugd29tYW4uCkhlIHRoYXQgYmxlc3NldGggaGlzIGZyaWVuZCB3aXRoIGEgbG91ZCB2b2ljZSwgcmlzaW5nIGVhcmx5IGluIHRoZSBtb3JuaW5nLCBpdCBzaGFsbCBiZSBjb3VudGVkIGEgY3Vyc2UgdG8gaGltLgpBIGNvbnRpbnVhbCBkcm9wcGluZyBpbiBhIHZlcnkgcmFpbnkgZGF5IGFuZCBhIGNvbnRlbnRpb3VzIHdvbWFuIGFyZSBhbGlrZS4KV2hvc29ldmVyIGhpZGV0aCBoZXIgaGlkZXRoIHRoZSB3aW5kLCBhbmQgdGhlIG9pbnRtZW50IG9mIGhpcyByaWdodCBoYW5kLCB3aGljaCBiZXdyYXlldGggaXRzZWxmLgpJcm9uIHNoYXJwZW5ldGggaXJvbjsgc28gYSBtYW4gc2hhcnBlbmV0aCB0aGUgY291bnRlbmFuY2Ugb2YgaGlzIGZyaWVuZC4KV2hvc28ga2VlcGV0aCB0aGUgZmlnIHRyZWUgc2hhbGwgZWF0IHRoZSBmcnVpdCB0aGVyZW9mOiBzbyBoZSB0aGF0IHdhaXRldGggb24gaGlzIG1hc3RlciBzaGFsbCBiZSBob25vdXJlZC4KQXMgaW4gd2F0ZXIgZmFjZSBhbnN3ZXJldGggdG8gZmFjZSwgc28gdGhlIGhlYXJ0IG9mIG1hbiB0byBtYW4uCkhlbGwgYW5kIGRlc3RydWN0aW9uIGFyZSBuZXZlciBmdWxsOyBzbyB0aGUgZXllcyBvZiBtYW4gYXJlIG5ldmVyIHNhdGlzZmllZC4KQXMgdGhlIGZpbmluZyBwb3QgZm9yIHNpbHZlciwgYW5kIHRoZSBmdXJuYWNlIGZvciBnb2xkOyBzbyBpcyBhIG1hbiB0byBoaXMgcHJhaXNlLgpUaG91Z2ggdGhvdSBzaG91bGRlc3QgYnJheSBhIGZvb2wgaW4gYSBtb3J0YXIgYW1vbmcgd2hlYXQgd2l0aCBhIHBlc3RsZSwgeWV0IHdpbGwgbm90IGhpcyBmb29saXNobmVzcyBkZXBhcnQgZnJvbSBoaW0uCkJlIHRob3UgZGlsaWdlbnQgdG8ga25vdyB0aGUgc3RhdGUgb2YgdGh5IGZsb2NrcywgYW5kIGxvb2sgd2VsbCB0byB0aHkgaGVyZHMuCkZvciByaWNoZXMgYXJlIG5vdCBmb3IgZXZlcjogYW5kIGRvdGggdGhlIGNyb3duIGVuZHVyZSB0byBldmVyeSBnZW5lcmF0aW9uPwpUaGUgaGF5IGFwcGVhcmV0aCwgYW5kIHRoZSB0ZW5kZXIgZ3Jhc3Mgc2hld2V0aCBpdHNlbGYsIGFuZCBoZXJicyBvZiB0aGUgbW91bnRhaW5zIGFyZSBnYXRoZXJlZC4KVGhlIGxhbWJzIGFyZSBmb3IgdGh5IGNsb3RoaW5nLCBhbmQgdGhlIGdvYXRzIGFyZSB0aGUgcHJpY2Ugb2YgdGhlIGZpZWxkLgpBbmQgdGhvdSBzaGFsdCBoYXZlIGdvYXRzJyBtaWxrIGVub3VnaCBmb3IgdGh5IGZvb2QsIGZvciB0aGUgZm9vZCBvZiB0aHkgaG91c2Vob2xkLCBhbmQgZm9yIHRoZSBtYWludGVuYW5jZSBmb3IgdGh5IG1haWRlbnMuClRoZSB3aWNrZWQgZmxlZSB3aGVuIG5vIG1hbiBwdXJzdWV0aDogYnV0IHRoZSByaWdodGVvdXMgYXJlIGJvbGQgYXMgYSBsaW9uLgpGb3IgdGhlIHRyYW5zZ3Jlc3Npb24gb2YgYSBsYW5kIG1hbnkgYXJlIHRoZSBwcmluY2VzIHRoZXJlb2Y6IGJ1dCBieSBhIG1hbiBvZiB1bmRlcnN0YW5kaW5nIGFuZCBrbm93bGVkZ2UgdGhlIHN0YXRlIHRoZXJlb2Ygc2hhbGwgYmUgcHJvbG9uZ2VkLgpBIHBvb3IgbWFuIHRoYXQgb3BwcmVzc2V0aCB0aGUgcG9vciBpcyBsaWtlIGEgc3dlZXBpbmcgcmFpbiB3aGljaCBsZWF2ZXRoIG5vIGZvb2QuClRoZXkgdGhhdCBmb3JzYWtlIHRoZSBsYXcgcHJhaXNlIHRoZSB3aWNrZWQ6IGJ1dCBzdWNoIGFzIGtlZXAgdGhlIGxhdyBjb250ZW5kIHdpdGggdGhlbS4KRXZpbCBtZW4gdW5kZXJzdGFuZCBub3QganVkZ21lbnQ6IGJ1dCB0aGV5IHRoYXQgc2VlayB0aGUgTE9SRCB1bmRlcnN0YW5kIGFsbCB0aGluZ3MuCkJldHRlciBpcyB0aGUgcG9vciB0aGF0IHdhbGtldGggaW4gaGlzIHVwcmlnaHRuZXNzLCB0aGFuIGhlIHRoYXQgaXMgcGVydmVyc2UgaW4gaGlzIHdheXMsIHRob3VnaCBoZSBiZSByaWNoLgpXaG9zbyBrZWVwZXRoIHRoZSBsYXcgaXMgYSB3aXNlIHNvbjogYnV0IGhlIHRoYXQgaXMgYSBjb21wYW5pb24gb2YgcmlvdG91cyBtZW4gc2hhbWV0aCBoaXMgZmF0aGVyLgpIZSB0aGF0IGJ5IHVzdXJ5IGFuZCB1bmp1c3QgZ2FpbiBpbmNyZWFzZXRoIGhpcyBzdWJzdGFuY2UsIGhlIHNoYWxsIGdhdGhlciBpdCBmb3IgaGltIHRoYXQgd2lsbCBwaXR5IHRoZSBwb29yLgpIZSB0aGF0IHR1cm5ldGggYXdheSBoaXMgZWFyIGZyb20gaGVhcmluZyB0aGUgbGF3LCBldmVuIGhpcyBwcmF5ZXIgc2hhbGwgYmUgYWJvbWluYXRpb24uCldob3NvIGNhdXNldGggdGhlIHJpZ2h0ZW91cyB0byBnbyBhc3RyYXkgaW4gYW4gZXZpbCB3YXksIGhlIHNoYWxsIGZhbGwgaGltc2VsZiBpbnRvIGhpcyBvd24gcGl0OiBidXQgdGhlIHVwcmlnaHQgc2hhbGwgaGF2ZSBnb29kIHRoaW5ncyBpbiBwb3NzZXNzaW9uLgpUaGUgcmljaCBtYW4gaXMgd2lzZSBpbiBoaXMgb3duIGNvbmNlaXQ7IGJ1dCB0aGUgcG9vciB0aGF0IGhhdGggdW5kZXJzdGFuZGluZyBzZWFyY2hldGggaGltIG91dC4KV2hlbiByaWdodGVvdXMgbWVuIGRvIHJlam9pY2UsIHRoZXJlIGlzIGdyZWF0IGdsb3J5OiBidXQgd2hlbiB0aGUgd2lja2VkIHJpc2UsIGEgbWFuIGlzIGhpZGRlbi4KSGUgdGhhdCBjb3ZlcmV0aCBoaXMgc2lucyBzaGFsbCBub3QgcHJvc3BlcjogYnV0IHdob3NvIGNvbmZlc3NldGggYW5kIGZvcnNha2V0aCB0aGVtIHNoYWxsIGhhdmUgbWVyY3kuCkhhcHB5IGlzIHRoZSBtYW4gdGhhdCBmZWFyZXRoIGFsd2F5OiBidXQgaGUgdGhhdCBoYXJkZW5ldGggaGlzIGhlYXJ0IHNoYWxsIGZhbGwgaW50byBtaXNjaGllZi4KQXMgYSByb2FyaW5nIGxpb24sIGFuZCBhIHJhbmdpbmcgYmVhcjsgc28gaXMgYSB3aWNrZWQgcnVsZXIgb3ZlciB0aGUgcG9vciBwZW9wbGUuClRoZSBwcmluY2UgdGhhdCB3YW50ZXRoIHVuZGVyc3RhbmRpbmcgaXMgYWxzbyBhIGdyZWF0IG9wcHJlc3NvcjogYnV0IGhlIHRoYXQgaGF0ZXRoIGNvdmV0b3VzbmVzcyBzaGFsbCBwcm9sb25nIGhpcyBkYXlzLgpBIG1hbiB0aGF0IGRvZXRoIHZpb2xlbmNlIHRvIHRoZSBibG9vZCBvZiBhbnkgcGVyc29uIHNoYWxsIGZsZWUgdG8gdGhlIHBpdDsgbGV0IG5vIG1hbiBzdGF5IGhpbS4KV2hvc28gd2Fsa2V0aCB1cHJpZ2h0bHkgc2hhbGwgYmUgc2F2ZWQ6IGJ1dCBoZSB0aGF0IGlzIHBlcnZlcnNlIGluIGhpcyB3YXlzIHNoYWxsIGZhbGwgYXQgb25jZS4KSGUgdGhhdCB0aWxsZXRoIGhpcyBsYW5kIHNoYWxsIGhhdmUgcGxlbnR5IG9mIGJyZWFkOiBidXQgaGUgdGhhdCBmb2xsb3dldGggYWZ0ZXIgdmFpbiBwZXJzb25zIHNoYWxsIGhhdmUgcG92ZXJ0eSBlbm91Z2guCkEgZmFpdGhmdWwgbWFuIHNoYWxsIGFib3VuZCB3aXRoIGJsZXNzaW5nczogYnV0IGhlIHRoYXQgbWFrZXRoIGhhc3RlIHRvIGJlIHJpY2ggc2hhbGwgbm90IGJlIGlubm9jZW50LgpUbyBoYXZlIHJlc3BlY3Qgb2YgcGVyc29ucyBpcyBub3QgZ29vZDogZm9yIGZvciBhIHBpZWNlIG9mIGJyZWFkIHRoYXQgbWFuIHdpbGwgdHJhbnNncmVzcy4KSGUgdGhhdCBoYXN0ZXRoIHRvIGJlIHJpY2ggaGF0aCBhbiBldmlsIGV5ZSwgYW5kIGNvbnNpZGVyZXRoIG5vdCB0aGF0IHBvdmVydHkgc2hhbGwgY29tZSB1cG9uIGhpbS4KSGUgdGhhdCByZWJ1a2V0aCBhIG1hbiBhZnRlcndhcmRzIHNoYWxsIGZpbmQgbW9yZSBmYXZvdXIgdGhhbiBoZSB0aGF0IGZsYXR0ZXJldGggd2l0aCB0aGUgdG9uZ3VlLgpXaG9zbyByb2JiZXRoIGhpcyBmYXRoZXIgb3IgaGlzIG1vdGhlciwgYW5kIHNhaXRoLCBJdCBpcyBubyB0cmFuc2dyZXNzaW9uOyB0aGUgc2FtZSBpcyB0aGUgY29tcGFuaW9uIG9mIGEgZGVzdHJveWVyLgpIZSB0aGF0IGlzIG9mIGEgcHJvdWQgaGVhcnQgc3RpcnJldGggdXAgc3RyaWZlOiBidXQgaGUgdGhhdCBwdXR0ZXRoIGhpcyB0cnVzdCBpbiB0aGUgTE9SRCBzaGFsbCBiZSBtYWRlIGZhdC4KSGUgdGhhdCB0cnVzdGV0aCBpbiBoaXMgb3duIGhlYXJ0IGlzIGEgZm9vbDogYnV0IHdob3NvIHdhbGtldGggd2lzZWx5LCBoZSBzaGFsbCBiZSBkZWxpdmVyZWQuCkhlIHRoYXQgZ2l2ZXRoIHVudG8gdGhlIHBvb3Igc2hhbGwgbm90IGxhY2s6IGJ1dCBoZSB0aGF0IGhpZGV0aCBoaXMgZXllcyBzaGFsbCBoYXZlIG1hbnkgYSBjdXJzZS4KV2hlbiB0aGUgd2lja2VkIHJpc2UsIG1lbiBoaWRlIHRoZW1zZWx2ZXM6IGJ1dCB3aGVuIHRoZXkgcGVyaXNoLCB0aGUgcmlnaHRlb3VzIGluY3JlYXNlLgpIZSwgdGhhdCBiZWluZyBvZnRlbiByZXByb3ZlZCBoYXJkZW5ldGggaGlzIG5lY2ssIHNoYWxsIHN1ZGRlbmx5IGJlIGRlc3Ryb3llZCwgYW5kIHRoYXQgd2l0aG91dCByZW1lZHkuCldoZW4gdGhlIHJpZ2h0ZW91cyBhcmUgaW4gYXV0aG9yaXR5LCB0aGUgcGVvcGxlIHJlam9pY2U6IGJ1dCB3aGVuIHRoZSB3aWNrZWQgYmVhcmV0aCBydWxlLCB0aGUgcGVvcGxlIG1vdXJuLgpXaG9zbyBsb3ZldGggd2lzZG9tIHJlam9pY2V0aCBoaXMgZmF0aGVyOiBidXQgaGUgdGhhdCBrZWVwZXRoIGNvbXBhbnkgd2l0aCBoYXJsb3RzIHNwZW5kZXRoIGhpcyBzdWJzdGFuY2UuClRoZSBraW5nIGJ5IGp1ZGdtZW50IGVzdGFibGlzaGV0aCB0aGUgbGFuZDogYnV0IGhlIHRoYXQgcmVjZWl2ZXRoIGdpZnRzIG92ZXJ0aHJvd2V0aCBpdC4KQSBtYW4gdGhhdCBmbGF0dGVyZXRoIGhpcyBuZWlnaGJvdXIgc3ByZWFkZXRoIGEgbmV0IGZvciBoaXMgZmVldC4KSW4gdGhlIHRyYW5zZ3Jlc3Npb24gb2YgYW4gZXZpbCBtYW4gdGhlcmUgaXMgYSBzbmFyZTogYnV0IHRoZSByaWdodGVvdXMgZG90aCBzaW5nIGFuZCByZWpvaWNlLgpUaGUgcmlnaHRlb3VzIGNvbnNpZGVyZXRoIHRoZSBjYXVzZSBvZiB0aGUgcG9vcjogYnV0IHRoZSB3aWNrZWQgcmVnYXJkZXRoIG5vdCB0byBrbm93IGl0LgpTY29ybmZ1bCBtZW4gYnJpbmcgYSBjaXR5IGludG8gYSBzbmFyZTogYnV0IHdpc2UgbWVuIHR1cm4gYXdheSB3cmF0aC4KSWYgYSB3aXNlIG1hbiBjb250ZW5kZXRoIHdpdGggYSBmb29saXNoIG1hbiwgd2hldGhlciBoZSByYWdlIG9yIGxhdWdoLCB0aGVyZSBpcyBubyByZXN0LgpUaGUgYmxvb2R0aGlyc3R5IGhhdGUgdGhlIHVwcmlnaHQ6IGJ1dCB0aGUganVzdCBzZWVrIGhpcyBzb3VsLgpBIGZvb2wgdXR0ZXJldGggYWxsIGhpcyBtaW5kOiBidXQgYSB3aXNlIG1hbiBrZWVwZXRoIGl0IGluIHRpbGwgYWZ0ZXJ3YXJkcy4KSWYgYSBydWxlciBoZWFya2VuIHRvIGxpZXMsIGFsbCBoaXMgc2VydmFudHMgYXJlIHdpY2tlZC4KVGhlIHBvb3IgYW5kIHRoZSBkZWNlaXRmdWwgbWFuIG1lZXQgdG9nZXRoZXI6IHRoZSBMT1JEIGxpZ2h0ZW5ldGggYm90aCB0aGVpciBleWVzLgpUaGUga2luZyB0aGF0IGZhaXRoZnVsbHkganVkZ2V0aCB0aGUgcG9vciwgaGlzIHRocm9uZSBzaGFsbCBiZSBlc3RhYmxpc2hlZCBmb3IgZXZlci4KVGhlIHJvZCBhbmQgcmVwcm9vZiBnaXZlIHdpc2RvbTogYnV0IGEgY2hpbGQgbGVmdCB0byBoaW1zZWxmIGJyaW5nZXRoIGhpcyBtb3RoZXIgdG8gc2hhbWUuCldoZW4gdGhlIHdpY2tlZCBhcmUgbXVsdGlwbGllZCwgdHJhbnNncmVzc2lvbiBpbmNyZWFzZXRoOiBidXQgdGhlIHJpZ2h0ZW91cyBzaGFsbCBzZWUgdGhlaXIgZmFsbC4KQ29ycmVjdCB0aHkgc29uLCBhbmQgaGUgc2hhbGwgZ2l2ZSB0aGVlIHJlc3Q7IHllYSwgaGUgc2hhbGwgZ2l2ZSBkZWxpZ2h0IHVudG8gdGh5IHNvdWwuCldoZXJlIHRoZXJlIGlzIG5vIHZpc2lvbiwgdGhlIHBlb3BsZSBwZXJpc2g6IGJ1dCBoZSB0aGF0IGtlZXBldGggdGhlIGxhdywgaGFwcHkgaXMgaGUuCkEgc2VydmFudCB3aWxsIG5vdCBiZSBjb3JyZWN0ZWQgYnkgd29yZHM6IGZvciB0aG91Z2ggaGUgdW5kZXJzdGFuZCBoZSB3aWxsIG5vdCBhbnN3ZXIuClNlZXN0IHRob3UgYSBtYW4gdGhhdCBpcyBoYXN0eSBpbiBoaXMgd29yZHM/IHRoZXJlIGlzIG1vcmUgaG9wZSBvZiBhIGZvb2wgdGhhbiBvZiBoaW0uCkhlIHRoYXQgZGVsaWNhdGVseSBicmluZ2V0aCB1cCBoaXMgc2VydmFudCBmcm9tIGEgY2hpbGQgc2hhbGwgaGF2ZSBoaW0gYmVjb21lIGhpcyBzb24gYXQgdGhlIGxlbmd0aC4KQW4gYW5ncnkgbWFuIHN0aXJyZXRoIHVwIHN0cmlmZSwgYW5kIGEgZnVyaW91cyBtYW4gYWJvdW5kZXRoIGluIHRyYW5zZ3Jlc3Npb24uCkEgbWFuJ3MgcHJpZGUgc2hhbGwgYnJpbmcgaGltIGxvdzogYnV0IGhvbm91ciBzaGFsbCB1cGhvbGQgdGhlIGh1bWJsZSBpbiBzcGlyaXQuCldob3NvIGlzIHBhcnRuZXIgd2l0aCBhIHRoaWVmIGhhdGV0aCBoaXMgb3duIHNvdWw6IGhlIGhlYXJldGggY3Vyc2luZywgYW5kIGJld3JheWV0aCBpdCBub3QuClRoZSBmZWFyIG9mIG1hbiBicmluZ2V0aCBhIHNuYXJlOiBidXQgd2hvc28gcHV0dGV0aCBoaXMgdHJ1c3QgaW4gdGhlIExPUkQgc2hhbGwgYmUgc2FmZS4KTWFueSBzZWVrIHRoZSBydWxlcidzIGZhdm91cjsgYnV0IGV2ZXJ5IG1hbidzIGp1ZGdtZW50IGNvbWV0aCBmcm9tIHRoZSBMT1JELgpBbiB1bmp1c3QgbWFuIGlzIGFuIGFib21pbmF0aW9uIHRvIHRoZSBqdXN0OiBhbmQgaGUgdGhhdCBpcyB1cHJpZ2h0IGluIHRoZSB3YXkgaXMgYWJvbWluYXRpb24gdG8gdGhlIHdpY2tlZC4KVGhlIHdvcmRzIG9mIEFndXIgdGhlIHNvbiBvZiBKYWtlaCwgZXZlbiB0aGUgcHJvcGhlY3k6IHRoZSBtYW4gc3Bha2UgdW50byBJdGhpZWwsIGV2ZW4gdW50byBJdGhpZWwgYW5kIFVjYWwsClN1cmVseSBJIGFtIG1vcmUgYnJ1dGlzaCB0aGFuIGFueSBtYW4sIGFuZCBoYXZlIG5vdCB0aGUgdW5kZXJzdGFuZGluZyBvZiBhIG1hbi4KSSBuZWl0aGVyIGxlYXJuZWQgd2lzZG9tLCBub3IgaGF2ZSB0aGUga25vd2xlZGdlIG9mIHRoZSBob2x5LgpXaG8gaGF0aCBhc2NlbmRlZCB1cCBpbnRvIGhlYXZlbiwgb3IgZGVzY2VuZGVkPyB3aG8gaGF0aCBnYXRoZXJlZCB0aGUgd2luZCBpbiBoaXMgZmlzdHM/IHdobyBoYXRoIGJvdW5kIHRoZSB3YXRlcnMgaW4gYSBnYXJtZW50PyB3aG8gaGF0aCBlc3RhYmxpc2hlZCBhbGwgdGhlIGVuZHMgb2YgdGhlIGVhcnRoPyB3aGF0IGlzIGhpcyBuYW1lLCBhbmQgd2hhdCBpcyBoaXMgc29uJ3MgbmFtZSwgaWYgdGhvdSBjYW5zdCB0ZWxsPwpFdmVyeSB3b3JkIG9mIEdvZCBpcyBwdXJlOiBoZSBpcyBhIHNoaWVsZCB1bnRvIHRoZW0gdGhhdCBwdXQgdGhlaXIgdHJ1c3QgaW4gaGltLgpBZGQgdGhvdSBub3QgdW50byBoaXMgd29yZHMsIGxlc3QgaGUgcmVwcm92ZSB0aGVlLCBhbmQgdGhvdSBiZSBmb3VuZCBhIGxpYXIuClR3byB0aGluZ3MgaGF2ZSBJIHJlcXVpcmVkIG9mIHRoZWU7IGRlbnkgbWUgdGhlbSBub3QgYmVmb3JlIEkgZGllOgpSZW1vdmUgZmFyIGZyb20gbWUgdmFuaXR5IGFuZCBsaWVzOiBnaXZlIG1lIG5laXRoZXIgcG92ZXJ0eSBub3IgcmljaGVzOyBmZWVkIG1lIHdpdGggZm9vZCBjb252ZW5pZW50IGZvciBtZToKTGVzdCBJIGJlIGZ1bGwsIGFuZCBkZW55IHRoZWUsIGFuZCBzYXksIFdobyBpcyB0aGUgTE9SRD8gb3IgbGVzdCBJIGJlIHBvb3IsIGFuZCBzdGVhbCwgYW5kIHRha2UgdGhlIG5hbWUgb2YgbXkgR29kIGluIHZhaW4uCkFjY3VzZSBub3QgYSBzZXJ2YW50IHVudG8gaGlzIG1hc3RlciwgbGVzdCBoZSBjdXJzZSB0aGVlLCBhbmQgdGhvdSBiZSBmb3VuZCBndWlsdHkuClRoZXJlIGlzIGEgZ2VuZXJhdGlvbiB0aGF0IGN1cnNldGggdGhlaXIgZmF0aGVyLCBhbmQgZG90aCBub3QgYmxlc3MgdGhlaXIgbW90aGVyLgpUaGVyZSBpcyBhIGdlbmVyYXRpb24gdGhhdCBhcmUgcHVyZSBpbiB0aGVpciBvd24gZXllcywgYW5kIHlldCBpcyBub3Qgd2FzaGVkIGZyb20gdGhlaXIgZmlsdGhpbmVzcy4KVGhlcmUgaXMgYSBnZW5lcmF0aW9uLCBPIGhvdyBsb2Z0eSBhcmUgdGhlaXIgZXllcyEgYW5kIHRoZWlyIGV5ZWxpZHMgYXJlIGxpZnRlZCB1cC4KVGhlcmUgaXMgYSBnZW5lcmF0aW9uLCB3aG9zZSB0ZWV0aCBhcmUgYXMgc3dvcmRzLCBhbmQgdGhlaXIgamF3IHRlZXRoIGFzIGtuaXZlcywgdG8gZGV2b3VyIHRoZSBwb29yIGZyb20gb2ZmIHRoZSBlYXJ0aCwgYW5kIHRoZSBuZWVkeSBmcm9tIGFtb25nIG1lbi4KVGhlIGhvcnNlbGVhY2ggaGF0aCB0d28gZGF1Z2h0ZXJzLCBjcnlpbmcsIEdpdmUsIGdpdmUuIFRoZXJlIGFyZSB0aHJlZSB0aGluZ3MgdGhhdCBhcmUgbmV2ZXIgc2F0aXNmaWVkLCB5ZWEsIGZvdXIgdGhpbmdzIHNheSBub3QsIEl0IGlzIGVub3VnaDoKVGhlIGdyYXZlOyBhbmQgdGhlIGJhcnJlbiB3b21iOyB0aGUgZWFydGggdGhhdCBpcyBub3QgZmlsbGVkIHdpdGggd2F0ZXI7IGFuZCB0aGUgZmlyZSB0aGF0IHNhaXRoIG5vdCwgSXQgaXMgZW5vdWdoLgpUaGUgZXllIHRoYXQgbW9ja2V0aCBhdCBoaXMgZmF0aGVyLCBhbmQgZGVzcGlzZXRoIHRvIG9iZXkgaGlzIG1vdGhlciwgdGhlIHJhdmVucyBvZiB0aGUgdmFsbGV5IHNoYWxsIHBpY2sgaXQgb3V0LCBhbmQgdGhlIHlvdW5nIGVhZ2xlcyBzaGFsbCBlYXQgaXQuClRoZXJlIGJlIHRocmVlIHRoaW5ncyB3aGljaCBhcmUgdG9vIHdvbmRlcmZ1bCBmb3IgbWUsIHllYSwgZm91ciB3aGljaCBJIGtub3cgbm90OgpUaGUgd2F5IG9mIGFuIGVhZ2xlIGluIHRoZSBhaXI7IHRoZSB3YXkgb2YgYSBzZXJwZW50IHVwb24gYSByb2NrOyB0aGUgd2F5IG9mIGEgc2hpcCBpbiB0aGUgbWlkc3Qgb2YgdGhlIHNlYTsgYW5kIHRoZSB3YXkgb2YgYSBtYW4gd2l0aCBhIG1haWQuClN1Y2ggaXMgdGhlIHdheSBvZiBhbiBhZHVsdGVyb3VzIHdvbWFuOyBzaGUgZWF0ZXRoLCBhbmQgd2lwZXRoIGhlciBtb3V0aCwgYW5kIHNhaXRoLCBJIGhhdmUgZG9uZSBubyB3aWNrZWRuZXNzLgpGb3IgdGhyZWUgdGhpbmdzIHRoZSBlYXJ0aCBpcyBkaXNxdWlldGVkLCBhbmQgZm9yIGZvdXIgd2hpY2ggaXQgY2Fubm90IGJlYXI6CkZvciBhIHNlcnZhbnQgd2hlbiBoZSByZWlnbmV0aDsgYW5kIGEgZm9vbCB3aGVuIGhlIGlzIGZpbGxlZCB3aXRoIG1lYXQ7CkZvciBhbiBvZGlvdXMgd29tYW4gd2hlbiBzaGUgaXMgbWFycmllZDsgYW5kIGFuIGhhbmRtYWlkIHRoYXQgaXMgaGVpciB0byBoZXIgbWlzdHJlc3MuClRoZXJlIGJlIGZvdXIgdGhpbmdzIHdoaWNoIGFyZSBsaXR0bGUgdXBvbiB0aGUgZWFydGgsIGJ1dCB0aGV5IGFyZSBleGNlZWRpbmcgd2lzZToKVGhlIGFudHMgYXJlIGEgcGVvcGxlIG5vdCBzdHJvbmcsIHlldCB0aGV5IHByZXBhcmUgdGhlaXIgbWVhdCBpbiB0aGUgc3VtbWVyOwpUaGUgY29uaWVzIGFyZSBidXQgYSBmZWVibGUgZm9saywgeWV0IG1ha2UgdGhleSB0aGVpciBob3VzZXMgaW4gdGhlIHJvY2tzOwpUaGUgbG9jdXN0cyBoYXZlIG5vIGtpbmcsIHlldCBnbyB0aGV5IGZvcnRoIGFsbCBvZiB0aGVtIGJ5IGJhbmRzOwpUaGUgc3BpZGVyIHRha2V0aCBob2xkIHdpdGggaGVyIGhhbmRzLCBhbmQgaXMgaW4ga2luZ3MnIHBhbGFjZXMuClRoZXJlIGJlIHRocmVlIHRoaW5ncyB3aGljaCBnbyB3ZWxsLCB5ZWEsIGZvdXIgYXJlIGNvbWVseSBpbiBnb2luZzoKQSBsaW9uIHdoaWNoIGlzIHN0cm9uZ2VzdCBhbW9uZyBiZWFzdHMsIGFuZCB0dXJuZXRoIG5vdCBhd2F5IGZvciBhbnk7CkEgZ3JleWhvdW5kOyBhbiBoZSBnb2F0IGFsc287IGFuZCBhIGtpbmcsIGFnYWluc3Qgd2hvbSB0aGVyZSBpcyBubyByaXNpbmcgdXAuCklmIHRob3UgaGFzdCBkb25lIGZvb2xpc2hseSBpbiBsaWZ0aW5nIHVwIHRoeXNlbGYsIG9yIGlmIHRob3UgaGFzdCB0aG91Z2h0IGV2aWwsIGxheSB0aGluZSBoYW5kIHVwb24gdGh5IG1vdXRoLgpTdXJlbHkgdGhlIGNodXJuaW5nIG9mIG1pbGsgYnJpbmdldGggZm9ydGggYnV0dGVyLCBhbmQgdGhlIHdyaW5naW5nIG9mIHRoZSBub3NlIGJyaW5nZXRoIGZvcnRoIGJsb29kOiBzbyB0aGUgZm9yY2luZyBvZiB3cmF0aCBicmluZ2V0aCBmb3J0aCBzdHJpZmUuClRoZSB3b3JkcyBvZiBraW5nIExlbXVlbCwgdGhlIHByb3BoZWN5IHRoYXQgaGlzIG1vdGhlciB0YXVnaHQgaGltLgpXaGF0LCBteSBzb24/IGFuZCB3aGF0LCB0aGUgc29uIG9mIG15IHdvbWI/IGFuZCB3aGF0LCB0aGUgc29uIG9mIG15IHZvd3M/CkdpdmUgbm90IHRoeSBzdHJlbmd0aCB1bnRvIHdvbWVuLCBub3IgdGh5IHdheXMgdG8gdGhhdCB3aGljaCBkZXN0cm95ZXRoIGtpbmdzLgpJdCBpcyBub3QgZm9yIGtpbmdzLCBPIExlbXVlbCwgaXQgaXMgbm90IGZvciBraW5ncyB0byBkcmluayB3aW5lOyBub3IgZm9yIHByaW5jZXMgc3Ryb25nIGRyaW5rOgpMZXN0IHRoZXkgZHJpbmssIGFuZCBmb3JnZXQgdGhlIGxhdywgYW5kIHBlcnZlcnQgdGhlIGp1ZGdtZW50IG9mIGFueSBvZiB0aGUgYWZmbGljdGVkLgpHaXZlIHN0cm9uZyBkcmluayB1bnRvIGhpbSB0aGF0IGlzIHJlYWR5IHRvIHBlcmlzaCwgYW5kIHdpbmUgdW50byB0aG9zZSB0aGF0IGJlIG9mIGhlYXZ5IGhlYXJ0cy4KTGV0IGhpbSBkcmluaywgYW5kIGZvcmdldCBoaXMgcG92ZXJ0eSwgYW5kIHJlbWVtYmVyIGhpcyBtaXNlcnkgbm8gbW9yZS4KT3BlbiB0aHkgbW91dGggZm9yIHRoZSBkdW1iIGluIHRoZSBjYXVzZSBvZiBhbGwgc3VjaCBhcyBhcmUgYXBwb2ludGVkIHRvIGRlc3RydWN0aW9uLgpPcGVuIHRoeSBtb3V0aCwganVkZ2UgcmlnaHRlb3VzbHksIGFuZCBwbGVhZCB0aGUgY2F1c2Ugb2YgdGhlIHBvb3IgYW5kIG5lZWR5LgpXaG8gY2FuIGZpbmQgYSB2aXJ0dW91cyB3b21hbj8gZm9yIGhlciBwcmljZSBpcyBmYXIgYWJvdmUgcnViaWVzLgpUaGUgaGVhcnQgb2YgaGVyIGh1c2JhbmQgZG90aCBzYWZlbHkgdHJ1c3QgaW4gaGVyLCBzbyB0aGF0IGhlIHNoYWxsIGhhdmUgbm8gbmVlZCBvZiBzcG9pbC4KU2hlIHdpbGwgZG8gaGltIGdvb2QgYW5kIG5vdCBldmlsIGFsbCB0aGUgZGF5cyBvZiBoZXIgbGlmZS4KU2hlIHNlZWtldGggd29vbCwgYW5kIGZsYXgsIGFuZCB3b3JrZXRoIHdpbGxpbmdseSB3aXRoIGhlciBoYW5kcy4KU2hlIGlzIGxpa2UgdGhlIG1lcmNoYW50cycgc2hpcHM7IHNoZSBicmluZ2V0aCBoZXIgZm9vZCBmcm9tIGFmYXIuClNoZSByaXNldGggYWxzbyB3aGlsZSBpdCBpcyB5ZXQgbmlnaHQsIGFuZCBnaXZldGggbWVhdCB0byBoZXIgaG91c2Vob2xkLCBhbmQgYSBwb3J0aW9uIHRvIGhlciBtYWlkZW5zLgpTaGUgY29uc2lkZXJldGggYSBmaWVsZCwgYW5kIGJ1eWV0aCBpdDogd2l0aCB0aGUgZnJ1aXQgb2YgaGVyIGhhbmRzIHNoZSBwbGFudGV0aCBhIHZpbmV5YXJkLgpTaGUgZ2lyZGV0aCBoZXIgbG9pbnMgd2l0aCBzdHJlbmd0aCwgYW5kIHN0cmVuZ3RoZW5ldGggaGVyIGFybXMuClNoZSBwZXJjZWl2ZXRoIHRoYXQgaGVyIG1lcmNoYW5kaXNlIGlzIGdvb2Q6IGhlciBjYW5kbGUgZ29ldGggbm90IG91dCBieSBuaWdodC4KU2hlIGxheWV0aCBoZXIgaGFuZHMgdG8gdGhlIHNwaW5kbGUsIGFuZCBoZXIgaGFuZHMgaG9sZCB0aGUgZGlzdGFmZi4KU2hlIHN0cmV0Y2hldGggb3V0IGhlciBoYW5kIHRvIHRoZSBwb29yOyB5ZWEsIHNoZSByZWFjaGV0aCBmb3J0aCBoZXIgaGFuZHMgdG8gdGhlIG5lZWR5LgpTaGUgaXMgbm90IGFmcmFpZCBvZiB0aGUgc25vdyBmb3IgaGVyIGhvdXNlaG9sZDogZm9yIGFsbCBoZXIgaG91c2Vob2xkIGFyZSBjbG90aGVkIHdpdGggc2NhcmxldC4KU2hlIG1ha2V0aCBoZXJzZWxmIGNvdmVyaW5ncyBvZiB0YXBlc3RyeTsgaGVyIGNsb3RoaW5nIGlzIHNpbGsgYW5kIHB1cnBsZS4KSGVyIGh1c2JhbmQgaXMga25vd24gaW4gdGhlIGdhdGVzLCB3aGVuIGhlIHNpdHRldGggYW1vbmcgdGhlIGVsZGVycyBvZiB0aGUgbGFuZC4KU2hlIG1ha2V0aCBmaW5lIGxpbmVuLCBhbmQgc2VsbGV0aCBpdDsgYW5kIGRlbGl2ZXJldGggZ2lyZGxlcyB1bnRvIHRoZSBtZXJjaGFudC4KU3RyZW5ndGggYW5kIGhvbm91ciBhcmUgaGVyIGNsb3RoaW5nOyBhbmQgc2hlIHNoYWxsIHJlam9pY2UgaW4gdGltZSB0byBjb21lLgpTaGUgb3BlbmV0aCBoZXIgbW91dGggd2l0aCB3aXNkb207IGFuZCBpbiBoZXIgdG9uZ3VlIGlzIHRoZSBsYXcgb2Yga2luZG5lc3MuClNoZSBsb29rZXRoIHdlbGwgdG8gdGhlIHdheXMgb2YgaGVyIGhvdXNlaG9sZCwgYW5kIGVhdGV0aCBub3QgdGhlIGJyZWFkIG9mIGlkbGVuZXNzLgpIZXIgY2hpbGRyZW4gYXJpc2UgdXAsIGFuZCBjYWxsIGhlciBibGVzc2VkOyBoZXIgaHVzYmFuZCBhbHNvLCBhbmQgaGUgcHJhaXNldGggaGVyLgpNYW55IGRhdWdodGVycyBoYXZlIGRvbmUgdmlydHVvdXNseSwgYnV0IHRob3UgZXhjZWxsZXN0IHRoZW0gYWxsLgpGYXZvdXIgaXMgZGVjZWl0ZnVsLCBhbmQgYmVhdXR5IGlzIHZhaW46IGJ1dCBhIHdvbWFuIHRoYXQgZmVhcmV0aCB0aGUgTE9SRCwgc2hlIHNoYWxsIGJlIHByYWlzZWQuCkdpdmUgaGVyIG9mIHRoZSBmcnVpdCBvZiBoZXIgaGFuZHM7IGFuZCBsZXQgaGVyIG93biB3b3JrcyBwcmFpc2UgaGVyIGluIHRoZSBnYXRlcy4KVGhlIHdvcmRzIG9mIHRoZSBQcmVhY2hlciwgdGhlIHNvbiBvZiBEYXZpZCwga2luZyBpbiBKZXJ1c2FsZW0uClZhbml0eSBvZiB2YW5pdGllcywgc2FpdGggdGhlIFByZWFjaGVyLCB2YW5pdHkgb2YgdmFuaXRpZXM7IGFsbCBpcyB2YW5pdHkuCldoYXQgcHJvZml0IGhhdGggYSBtYW4gb2YgYWxsIGhpcyBsYWJvdXIgd2hpY2ggaGUgdGFrZXRoIHVuZGVyIHRoZSBzdW4/Ck9uZSBnZW5lcmF0aW9uIHBhc3NldGggYXdheSwgYW5kIGFub3RoZXIgZ2VuZXJhdGlvbiBjb21ldGg6IGJ1dCB0aGUgZWFydGggYWJpZGV0aCBmb3IgZXZlci4KVGhlIHN1biBhbHNvIGFyaXNldGgsIGFuZCB0aGUgc3VuIGdvZXRoIGRvd24sIGFuZCBoYXN0ZXRoIHRvIGhpcyBwbGFjZSB3aGVyZSBoZSBhcm9zZS4KVGhlIHdpbmQgZ29ldGggdG93YXJkIHRoZSBzb3V0aCwgYW5kIHR1cm5ldGggYWJvdXQgdW50byB0aGUgbm9ydGg7IGl0IHdoaXJsZXRoIGFib3V0IGNvbnRpbnVhbGx5LCBhbmQgdGhlIHdpbmQgcmV0dXJuZXRoIGFnYWluIGFjY29yZGluZyB0byBoaXMgY2lyY3VpdHMuCkFsbCB0aGUgcml2ZXJzIHJ1biBpbnRvIHRoZSBzZWE7IHlldCB0aGUgc2VhIGlzIG5vdCBmdWxsOyB1bnRvIHRoZSBwbGFjZSBmcm9tIHdoZW5jZSB0aGUgcml2ZXJzIGNvbWUsIHRoaXRoZXIgdGhleSByZXR1cm4gYWdhaW4uCkFsbCB0aGluZ3MgYXJlIGZ1bGwgb2YgbGFib3VyOyBtYW4gY2Fubm90IHV0dGVyIGl0OiB0aGUgZXllIGlzIG5vdCBzYXRpc2ZpZWQgd2l0aCBzZWVpbmcsIG5vciB0aGUgZWFyIGZpbGxlZCB3aXRoIGhlYXJpbmcuClRoZSB0aGluZyB0aGF0IGhhdGggYmVlbiwgaXQgaXMgdGhhdCB3aGljaCBzaGFsbCBiZTsgYW5kIHRoYXQgd2hpY2ggaXMgZG9uZSBpcyB0aGF0IHdoaWNoIHNoYWxsIGJlIGRvbmU6IGFuZCB0aGVyZSBpcyBubyBuZXcgdGhpbmcgdW5kZXIgdGhlIHN1bi4KSXMgdGhlcmUgYW55IHRoaW5nIHdoZXJlb2YgaXQgbWF5IGJlIHNhaWQsIFNlZSwgdGhpcyBpcyBuZXc/IGl0IGhhdGggYmVlbiBhbHJlYWR5IG9mIG9sZCB0aW1lLCB3aGljaCB3YXMgYmVmb3JlIHVzLgpUaGVyZSBpcyBubyByZW1lbWJyYW5jZSBvZiBmb3JtZXIgdGhpbmdzOyBuZWl0aGVyIHNoYWxsIHRoZXJlIGJlIGFueSByZW1lbWJyYW5jZSBvZiB0aGluZ3MgdGhhdCBhcmUgdG8gY29tZSB3aXRoIHRob3NlIHRoYXQgc2hhbGwgY29tZSBhZnRlci4KSSB0aGUgUHJlYWNoZXIgd2FzIGtpbmcgb3ZlciBJc3JhZWwgaW4gSmVydXNhbGVtLgpBbmQgSSBnYXZlIG15IGhlYXJ0IHRvIHNlZWsgYW5kIHNlYXJjaCBvdXQgYnkgd2lzZG9tIGNvbmNlcm5pbmcgYWxsIHRoaW5ncyB0aGF0IGFyZSBkb25lIHVuZGVyIGhlYXZlbjogdGhpcyBzb3JlIHRyYXZhaWwgaGF0aCBHb2QgZ2l2ZW4gdG8gdGhlIHNvbnMgb2YgbWFuIHRvIGJlIGV4ZXJjaXNlZCB0aGVyZXdpdGguCkkgaGF2ZSBzZWVuIGFsbCB0aGUgd29ya3MgdGhhdCBhcmUgZG9uZSB1bmRlciB0aGUgc3VuOyBhbmQsIGJlaG9sZCwgYWxsIGlzIHZhbml0eSBhbmQgdmV4YXRpb24gb2Ygc3Bpcml0LgpUaGF0IHdoaWNoIGlzIGNyb29rZWQgY2Fubm90IGJlIG1hZGUgc3RyYWlnaHQ6IGFuZCB0aGF0IHdoaWNoIGlzIHdhbnRpbmcgY2Fubm90IGJlIG51bWJlcmVkLgpJIGNvbW11bmVkIHdpdGggbWluZSBvd24gaGVhcnQsIHNheWluZywgTG8sIEkgYW0gY29tZSB0byBncmVhdCBlc3RhdGUsIGFuZCBoYXZlIGdvdHRlbiBtb3JlIHdpc2RvbSB0aGFuIGFsbCB0aGV5IHRoYXQgaGF2ZSBiZWVuIGJlZm9yZSBtZSBpbiBKZXJ1c2FsZW06IHllYSwgbXkgaGVhcnQgaGFkIGdyZWF0IGV4cGVyaWVuY2Ugb2Ygd2lzZG9tIGFuZCBrbm93bGVkZ2UuCkFuZCBJIGdhdmUgbXkgaGVhcnQgdG8ga25vdyB3aXNkb20sIGFuZCB0byBrbm93IG1hZG5lc3MgYW5kIGZvbGx5OiBJIHBlcmNlaXZlZCB0aGF0IHRoaXMgYWxzbyBpcyB2ZXhhdGlvbiBvZiBzcGlyaXQuCkZvciBpbiBtdWNoIHdpc2RvbSBpcyBtdWNoIGdyaWVmOiBhbmQgaGUgdGhhdCBpbmNyZWFzZXRoIGtub3dsZWRnZSBpbmNyZWFzZXRoIHNvcnJvdy4KSSBzYWlkIGluIG1pbmUgaGVhcnQsIEdvIHRvIG5vdywgSSB3aWxsIHByb3ZlIHRoZWUgd2l0aCBtaXJ0aCwgdGhlcmVmb3JlIGVuam95IHBsZWFzdXJlOiBhbmQsIGJlaG9sZCwgdGhpcyBhbHNvIGlzIHZhbml0eS4KSSBzYWlkIG9mIGxhdWdodGVyLCBJdCBpcyBtYWQ6IGFuZCBvZiBtaXJ0aCwgV2hhdCBkb2V0aCBpdD8KSSBzb3VnaHQgaW4gbWluZSBoZWFydCB0byBnaXZlIG15c2VsZiB1bnRvIHdpbmUsIHlldCBhY3F1YWludGluZyBtaW5lIGhlYXJ0IHdpdGggd2lzZG9tOyBhbmQgdG8gbGF5IGhvbGQgb24gZm9sbHksIHRpbGwgSSBtaWdodCBzZWUgd2hhdCB3YXMgdGhhdCBnb29kIGZvciB0aGUgc29ucyBvZiBtZW4sIHdoaWNoIHRoZXkgc2hvdWxkIGRvIHVuZGVyIHRoZSBoZWF2ZW4gYWxsIHRoZSBkYXlzIG9mIHRoZWlyIGxpZmUuCkkgbWFkZSBtZSBncmVhdCB3b3JrczsgSSBidWlsZGVkIG1lIGhvdXNlczsgSSBwbGFudGVkIG1lIHZpbmV5YXJkczoKSSBtYWRlIG1lIGdhcmRlbnMgYW5kIG9yY2hhcmRzLCBhbmQgSSBwbGFudGVkIHRyZWVzIGluIHRoZW0gb2YgYWxsIGtpbmQgb2YgZnJ1aXRzOgpJIG1hZGUgbWUgcG9vbHMgb2Ygd2F0ZXIsIHRvIHdhdGVyIHRoZXJld2l0aCB0aGUgd29vZCB0aGF0IGJyaW5nZXRoIGZvcnRoIHRyZWVzOgpJIGdvdCBtZSBzZXJ2YW50cyBhbmQgbWFpZGVucywgYW5kIGhhZCBzZXJ2YW50cyBib3JuIGluIG15IGhvdXNlOyBhbHNvIEkgaGFkIGdyZWF0IHBvc3Nlc3Npb25zIG9mIGdyZWF0IGFuZCBzbWFsbCBjYXR0bGUgYWJvdmUgYWxsIHRoYXQgd2VyZSBpbiBKZXJ1c2FsZW0gYmVmb3JlIG1lOgpJIGdhdGhlcmVkIG1lIGFsc28gc2lsdmVyIGFuZCBnb2xkLCBhbmQgdGhlIHBlY3VsaWFyIHRyZWFzdXJlIG9mIGtpbmdzIGFuZCBvZiB0aGUgcHJvdmluY2VzOiBJIGdhdCBtZSBtZW4gc2luZ2VycyBhbmQgd29tZW4gc2luZ2VycywgYW5kIHRoZSBkZWxpZ2h0cyBvZiB0aGUgc29ucyBvZiBtZW4sIGFzIG11c2ljYWwgaW5zdHJ1bWVudHMsIGFuZCB0aGF0IG9mIGFsbCBzb3J0cy4KU28gSSB3YXMgZ3JlYXQsIGFuZCBpbmNyZWFzZWQgbW9yZSB0aGFuIGFsbCB0aGF0IHdlcmUgYmVmb3JlIG1lIGluIEplcnVzYWxlbTogYWxzbyBteSB3aXNkb20gcmVtYWluZWQgd2l0aCBtZS4KQW5kIHdoYXRzb2V2ZXIgbWluZSBleWVzIGRlc2lyZWQgSSBrZXB0IG5vdCBmcm9tIHRoZW0sIEkgd2l0aGhlbGQgbm90IG15IGhlYXJ0IGZyb20gYW55IGpveTsgZm9yIG15IGhlYXJ0IHJlam9pY2VkIGluIGFsbCBteSBsYWJvdXI6IGFuZCB0aGlzIHdhcyBteSBwb3J0aW9uIG9mIGFsbCBteSBsYWJvdXIuClRoZW4gSSBsb29rZWQgb24gYWxsIHRoZSB3b3JrcyB0aGF0IG15IGhhbmRzIGhhZCB3cm91Z2h0LCBhbmQgb24gdGhlIGxhYm91ciB0aGF0IEkgaGFkIGxhYm91cmVkIHRvIGRvOiBhbmQsIGJlaG9sZCwgYWxsIHdhcyB2YW5pdHkgYW5kIHZleGF0aW9uIG9mIHNwaXJpdCwgYW5kIHRoZXJlIHdhcyBubyBwcm9maXQgdW5kZXIgdGhlIHN1bi4KQW5kIEkgdHVybmVkIG15c2VsZiB0byBiZWhvbGQgd2lzZG9tLCBhbmQgbWFkbmVzcywgYW5kIGZvbGx5OiBmb3Igd2hhdCBjYW4gdGhlIG1hbiBkbyB0aGF0IGNvbWV0aCBhZnRlciB0aGUga2luZz8gZXZlbiB0aGF0IHdoaWNoIGhhdGggYmVlbiBhbHJlYWR5IGRvbmUuClRoZW4gSSBzYXcgdGhhdCB3aXNkb20gZXhjZWxsZXRoIGZvbGx5LCBhcyBmYXIgYXMgbGlnaHQgZXhjZWxsZXRoIGRhcmtuZXNzLgpUaGUgd2lzZSBtYW4ncyBleWVzIGFyZSBpbiBoaXMgaGVhZDsgYnV0IHRoZSBmb29sIHdhbGtldGggaW4gZGFya25lc3M6IGFuZCBJIG15c2VsZiBwZXJjZWl2ZWQgYWxzbyB0aGF0IG9uZSBldmVudCBoYXBwZW5ldGggdG8gdGhlbSBhbGwuClRoZW4gc2FpZCBJIGluIG15IGhlYXJ0LCBBcyBpdCBoYXBwZW5ldGggdG8gdGhlIGZvb2wsIHNvIGl0IGhhcHBlbmV0aCBldmVuIHRvIG1lOyBhbmQgd2h5IHdhcyBJIHRoZW4gbW9yZSB3aXNlPyBUaGVuIEkgc2FpZCBpbiBteSBoZWFydCwgdGhhdCB0aGlzIGFsc28gaXMgdmFuaXR5LgpGb3IgdGhlcmUgaXMgbm8gcmVtZW1icmFuY2Ugb2YgdGhlIHdpc2UgbW9yZSB0aGFuIG9mIHRoZSBmb29sIGZvciBldmVyOyBzZWVpbmcgdGhhdCB3aGljaCBub3cgaXMgaW4gdGhlIGRheXMgdG8gY29tZSBzaGFsbCBhbGwgYmUgZm9yZ290dGVuLiBBbmQgaG93IGRpZXRoIHRoZSB3aXNlIG1hbj8gYXMgdGhlIGZvb2wuClRoZXJlZm9yZSBJIGhhdGVkIGxpZmU7IGJlY2F1c2UgdGhlIHdvcmsgdGhhdCBpcyB3cm91Z2h0IHVuZGVyIHRoZSBzdW4gaXMgZ3JpZXZvdXMgdW50byBtZTogZm9yIGFsbCBpcyB2YW5pdHkgYW5kIHZleGF0aW9uIG9mIHNwaXJpdC4KWWVhLCBJIGhhdGVkIGFsbCBteSBsYWJvdXIgd2hpY2ggSSBoYWQgdGFrZW4gdW5kZXIgdGhlIHN1bjogYmVjYXVzZSBJIHNob3VsZCBsZWF2ZSBpdCB1bnRvIHRoZSBtYW4gdGhhdCBzaGFsbCBiZSBhZnRlciBtZS4KQW5kIHdobyBrbm93ZXRoIHdoZXRoZXIgaGUgc2hhbGwgYmUgYSB3aXNlIG1hbiBvciBhIGZvb2w/IHlldCBzaGFsbCBoZSBoYXZlIHJ1bGUgb3ZlciBhbGwgbXkgbGFib3VyIHdoZXJlaW4gSSBoYXZlIGxhYm91cmVkLCBhbmQgd2hlcmVpbiBJIGhhdmUgc2hld2VkIG15c2VsZiB3aXNlIHVuZGVyIHRoZSBzdW4uIFRoaXMgaXMgYWxzbyB2YW5pdHkuClRoZXJlZm9yZSBJIHdlbnQgYWJvdXQgdG8gY2F1c2UgbXkgaGVhcnQgdG8gZGVzcGFpciBvZiBhbGwgdGhlIGxhYm91ciB3aGljaCBJIHRvb2sgdW5kZXIgdGhlIHN1bi4KRm9yIHRoZXJlIGlzIGEgbWFuIHdob3NlIGxhYm91ciBpcyBpbiB3aXNkb20sIGFuZCBpbiBrbm93bGVkZ2UsIGFuZCBpbiBlcXVpdHk7IHlldCB0byBhIG1hbiB0aGF0IGhhdGggbm90IGxhYm91cmVkIHRoZXJlaW4gc2hhbGwgaGUgbGVhdmUgaXQgZm9yIGhpcyBwb3J0aW9uLiBUaGlzIGFsc28gaXMgdmFuaXR5IGFuZCBhIGdyZWF0IGV2aWwuCkZvciB3aGF0IGhhdGggbWFuIG9mIGFsbCBoaXMgbGFib3VyLCBhbmQgb2YgdGhlIHZleGF0aW9uIG9mIGhpcyBoZWFydCwgd2hlcmVpbiBoZSBoYXRoIGxhYm91cmVkIHVuZGVyIHRoZSBzdW4/CkZvciBhbGwgaGlzIGRheXMgYXJlIHNvcnJvd3MsIGFuZCBoaXMgdHJhdmFpbCBncmllZjsgeWVhLCBoaXMgaGVhcnQgdGFrZXRoIG5vdCByZXN0IGluIHRoZSBuaWdodC4gVGhpcyBpcyBhbHNvIHZhbml0eS4KVGhlcmUgaXMgbm90aGluZyBiZXR0ZXIgZm9yIGEgbWFuLCB0aGFuIHRoYXQgaGUgc2hvdWxkIGVhdCBhbmQgZHJpbmssIGFuZCB0aGF0IGhlIHNob3VsZCBtYWtlIGhpcyBzb3VsIGVuam95IGdvb2QgaW4gaGlzIGxhYm91ci4gVGhpcyBhbHNvIEkgc2F3LCB0aGF0IGl0IHdhcyBmcm9tIHRoZSBoYW5kIG9mIEdvZC4KRm9yIHdobyBjYW4gZWF0LCBvciB3aG8gZWxzZSBjYW4gaGFzdGVuIGhlcmV1bnRvLCBtb3JlIHRoYW4gST8KRm9yIEdvZCBnaXZldGggdG8gYSBtYW4gdGhhdCBpcyBnb29kIGluIGhpcyBzaWdodCB3aXNkb20sIGFuZCBrbm93bGVkZ2UsIGFuZCBqb3k6IGJ1dCB0byB0aGUgc2lubmVyIGhlIGdpdmV0aCB0cmF2YWlsLCB0byBnYXRoZXIgYW5kIHRvIGhlYXAgdXAsIHRoYXQgaGUgbWF5IGdpdmUgdG8gaGltIHRoYXQgaXMgZ29vZCBiZWZvcmUgR29kLiBUaGlzIGFsc28gaXMgdmFuaXR5IGFuZCB2ZXhhdGlvbiBvZiBzcGlyaXQuClRvIGV2ZXJ5IHRoaW5nIHRoZXJlIGlzIGEgc2Vhc29uLCBhbmQgYSB0aW1lIHRvIGV2ZXJ5IHB1cnBvc2UgdW5kZXIgdGhlIGhlYXZlbjoKQSB0aW1lIHRvIGJlIGJvcm4sIGFuZCBhIHRpbWUgdG8gZGllOyBhIHRpbWUgdG8gcGxhbnQsIGFuZCBhIHRpbWUgdG8gcGx1Y2sgdXAgdGhhdCB3aGljaCBpcyBwbGFudGVkOwpBIHRpbWUgdG8ga2lsbCwgYW5kIGEgdGltZSB0byBoZWFsOyBhIHRpbWUgdG8gYnJlYWsgZG93biwgYW5kIGEgdGltZSB0byBidWlsZCB1cDsKQSB0aW1lIHRvIHdlZXAsIGFuZCBhIHRpbWUgdG8gbGF1Z2g7IGEgdGltZSB0byBtb3VybiwgYW5kIGEgdGltZSB0byBkYW5jZTsKQSB0aW1lIHRvIGNhc3QgYXdheSBzdG9uZXMsIGFuZCBhIHRpbWUgdG8gZ2F0aGVyIHN0b25lcyB0b2dldGhlcjsgYSB0aW1lIHRvIGVtYnJhY2UsIGFuZCBhIHRpbWUgdG8gcmVmcmFpbiBmcm9tIGVtYnJhY2luZzsKQSB0aW1lIHRvIGdldCwgYW5kIGEgdGltZSB0byBsb3NlOyBhIHRpbWUgdG8ga2VlcCwgYW5kIGEgdGltZSB0byBjYXN0IGF3YXk7CkEgdGltZSB0byByZW5kLCBhbmQgYSB0aW1lIHRvIHNldzsgYSB0aW1lIHRvIGtlZXAgc2lsZW5jZSwgYW5kIGEgdGltZSB0byBzcGVhazsKQSB0aW1lIHRvIGxvdmUsIGFuZCBhIHRpbWUgdG8gaGF0ZTsgYSB0aW1lIG9mIHdhciwgYW5kIGEgdGltZSBvZiBwZWFjZS4KV2hhdCBwcm9maXQgaGF0aCBoZSB0aGF0IHdvcmtldGggaW4gdGhhdCB3aGVyZWluIGhlIGxhYm91cmV0aD8KSSBoYXZlIHNlZW4gdGhlIHRyYXZhaWwsIHdoaWNoIEdvZCBoYXRoIGdpdmVuIHRvIHRoZSBzb25zIG9mIG1lbiB0byBiZSBleGVyY2lzZWQgaW4gaXQuCkhlIGhhdGggbWFkZSBldmVyeSB0aGluZyBiZWF1dGlmdWwgaW4gaGlzIHRpbWU6IGFsc28gaGUgaGF0aCBzZXQgdGhlIHdvcmxkIGluIHRoZWlyIGhlYXJ0LCBzbyB0aGF0IG5vIG1hbiBjYW4gZmluZCBvdXQgdGhlIHdvcmsgdGhhdCBHb2QgbWFrZXRoIGZyb20gdGhlIGJlZ2lubmluZyB0byB0aGUgZW5kLgpJIGtub3cgdGhhdCB0aGVyZSBpcyBubyBnb29kIGluIHRoZW0sIGJ1dCBmb3IgYSBtYW4gdG8gcmVqb2ljZSwgYW5kIHRvIGRvIGdvb2QgaW4gaGlzIGxpZmUuCkFuZCBhbHNvIHRoYXQgZXZlcnkgbWFuIHNob3VsZCBlYXQgYW5kIGRyaW5rLCBhbmQgZW5qb3kgdGhlIGdvb2Qgb2YgYWxsIGhpcyBsYWJvdXIsIGl0IGlzIHRoZSBnaWZ0IG9mIEdvZC4KSSBrbm93IHRoYXQsIHdoYXRzb2V2ZXIgR29kIGRvZXRoLCBpdCBzaGFsbCBiZSBmb3IgZXZlcjogbm90aGluZyBjYW4gYmUgcHV0IHRvIGl0LCBub3IgYW55IHRoaW5nIHRha2VuIGZyb20gaXQ6IGFuZCBHb2QgZG9ldGggaXQsIHRoYXQgbWVuIHNob3VsZCBmZWFyIGJlZm9yZSBoaW0uClRoYXQgd2hpY2ggaGF0aCBiZWVuIGlzIG5vdzsgYW5kIHRoYXQgd2hpY2ggaXMgdG8gYmUgaGF0aCBhbHJlYWR5IGJlZW47IGFuZCBHb2QgcmVxdWlyZXRoIHRoYXQgd2hpY2ggaXMgcGFzdC4KQW5kIG1vcmVvdmVyIEkgc2F3IHVuZGVyIHRoZSBzdW4gdGhlIHBsYWNlIG9mIGp1ZGdtZW50LCB0aGF0IHdpY2tlZG5lc3Mgd2FzIHRoZXJlOyBhbmQgdGhlIHBsYWNlIG9mIHJpZ2h0ZW91c25lc3MsIHRoYXQgaW5pcXVpdHkgd2FzIHRoZXJlLgpJIHNhaWQgaW4gbWluZSBoZWFydCwgR29kIHNoYWxsIGp1ZGdlIHRoZSByaWdodGVvdXMgYW5kIHRoZSB3aWNrZWQ6IGZvciB0aGVyZSBpcyBhIHRpbWUgdGhlcmUgZm9yIGV2ZXJ5IHB1cnBvc2UgYW5kIGZvciBldmVyeSB3b3JrLgpJIHNhaWQgaW4gbWluZSBoZWFydCBjb25jZXJuaW5nIHRoZSBlc3RhdGUgb2YgdGhlIHNvbnMgb2YgbWVuLCB0aGF0IEdvZCBtaWdodCBtYW5pZmVzdCB0aGVtLCBhbmQgdGhhdCB0aGV5IG1pZ2h0IHNlZSB0aGF0IHRoZXkgdGhlbXNlbHZlcyBhcmUgYmVhc3RzLgpGb3IgdGhhdCB3aGljaCBiZWZhbGxldGggdGhlIHNvbnMgb2YgbWVuIGJlZmFsbGV0aCBiZWFzdHM7IGV2ZW4gb25lIHRoaW5nIGJlZmFsbGV0aCB0aGVtOiBhcyB0aGUgb25lIGRpZXRoLCBzbyBkaWV0aCB0aGUgb3RoZXI7IHllYSwgdGhleSBoYXZlIGFsbCBvbmUgYnJlYXRoOyBzbyB0aGF0IGEgbWFuIGhhdGggbm8gcHJlZW1pbmVuY2UgYWJvdmUgYSBiZWFzdDogZm9yIGFsbCBpcyB2YW5pdHkuCkFsbCBnbyB1bnRvIG9uZSBwbGFjZTsgYWxsIGFyZSBvZiB0aGUgZHVzdCwgYW5kIGFsbCB0dXJuIHRvIGR1c3QgYWdhaW4uCldobyBrbm93ZXRoIHRoZSBzcGlyaXQgb2YgbWFuIHRoYXQgZ29ldGggdXB3YXJkLCBhbmQgdGhlIHNwaXJpdCBvZiB0aGUgYmVhc3QgdGhhdCBnb2V0aCBkb3dud2FyZCB0byB0aGUgZWFydGg/CldoZXJlZm9yZSBJIHBlcmNlaXZlIHRoYXQgdGhlcmUgaXMgbm90aGluZyBiZXR0ZXIsIHRoYW4gdGhhdCBhIG1hbiBzaG91bGQgcmVqb2ljZSBpbiBoaXMgb3duIHdvcmtzOyBmb3IgdGhhdCBpcyBoaXMgcG9ydGlvbjogZm9yIHdobyBzaGFsbCBicmluZyBoaW0gdG8gc2VlIHdoYXQgc2hhbGwgYmUgYWZ0ZXIgaGltPwpTbyBJIHJldHVybmVkLCBhbmQgY29uc2lkZXJlZCBhbGwgdGhlIG9wcHJlc3Npb25zIHRoYXQgYXJlIGRvbmUgdW5kZXIgdGhlIHN1bjogYW5kIGJlaG9sZCB0aGUgdGVhcnMgb2Ygc3VjaCBhcyB3ZXJlIG9wcHJlc3NlZCwgYW5kIHRoZXkgaGFkIG5vIGNvbWZvcnRlcjsgYW5kIG9uIHRoZSBzaWRlIG9mIHRoZWlyIG9wcHJlc3NvcnMgdGhlcmUgd2FzIHBvd2VyOyBidXQgdGhleSBoYWQgbm8gY29tZm9ydGVyLgpXaGVyZWZvcmUgSSBwcmFpc2VkIHRoZSBkZWFkIHdoaWNoIGFyZSBhbHJlYWR5IGRlYWQgbW9yZSB0aGFuIHRoZSBsaXZpbmcgd2hpY2ggYXJlIHlldCBhbGl2ZS4KWWVhLCBiZXR0ZXIgaXMgaGUgdGhhbiBib3RoIHRoZXksIHdoaWNoIGhhdGggbm90IHlldCBiZWVuLCB3aG8gaGF0aCBub3Qgc2VlbiB0aGUgZXZpbCB3b3JrIHRoYXQgaXMgZG9uZSB1bmRlciB0aGUgc3VuLgpBZ2FpbiwgSSBjb25zaWRlcmVkIGFsbCB0cmF2YWlsLCBhbmQgZXZlcnkgcmlnaHQgd29yaywgdGhhdCBmb3IgdGhpcyBhIG1hbiBpcyBlbnZpZWQgb2YgaGlzIG5laWdoYm91ci4gVGhpcyBpcyBhbHNvIHZhbml0eSBhbmQgdmV4YXRpb24gb2Ygc3Bpcml0LgpUaGUgZm9vbCBmb2xkZXRoIGhpcyBoYW5kcyB0b2dldGhlciwgYW5kIGVhdGV0aCBoaXMgb3duIGZsZXNoLgpCZXR0ZXIgaXMgYW4gaGFuZGZ1bCB3aXRoIHF1aWV0bmVzcywgdGhhbiBib3RoIHRoZSBoYW5kcyBmdWxsIHdpdGggdHJhdmFpbCBhbmQgdmV4YXRpb24gb2Ygc3Bpcml0LgpUaGVuIEkgcmV0dXJuZWQsIGFuZCBJIHNhdyB2YW5pdHkgdW5kZXIgdGhlIHN1bi4KVGhlcmUgaXMgb25lIGFsb25lLCBhbmQgdGhlcmUgaXMgbm90IGEgc2Vjb25kOyB5ZWEsIGhlIGhhdGggbmVpdGhlciBjaGlsZCBub3IgYnJvdGhlcjogeWV0IGlzIHRoZXJlIG5vIGVuZCBvZiBhbGwgaGlzIGxhYm91cjsgbmVpdGhlciBpcyBoaXMgZXllIHNhdGlzZmllZCB3aXRoIHJpY2hlczsgbmVpdGhlciBzYWl0aCBoZSwgRm9yIHdob20gZG8gSSBsYWJvdXIsIGFuZCBiZXJlYXZlIG15IHNvdWwgb2YgZ29vZD8gVGhpcyBpcyBhbHNvIHZhbml0eSwgeWVhLCBpdCBpcyBhIHNvcmUgdHJhdmFpbC4KVHdvIGFyZSBiZXR0ZXIgdGhhbiBvbmU7IGJlY2F1c2UgdGhleSBoYXZlIGEgZ29vZCByZXdhcmQgZm9yIHRoZWlyIGxhYm91ci4KRm9yIGlmIHRoZXkgZmFsbCwgdGhlIG9uZSB3aWxsIGxpZnQgdXAgaGlzIGZlbGxvdzogYnV0IHdvZSB0byBoaW0gdGhhdCBpcyBhbG9uZSB3aGVuIGhlIGZhbGxldGg7IGZvciBoZSBoYXRoIG5vdCBhbm90aGVyIHRvIGhlbHAgaGltIHVwLgpBZ2FpbiwgaWYgdHdvIGxpZSB0b2dldGhlciwgdGhlbiB0aGV5IGhhdmUgaGVhdDogYnV0IGhvdyBjYW4gb25lIGJlIHdhcm0gYWxvbmU/CkFuZCBpZiBvbmUgcHJldmFpbCBhZ2FpbnN0IGhpbSwgdHdvIHNoYWxsIHdpdGhzdGFuZCBoaW07IGFuZCBhIHRocmVlZm9sZCBjb3JkIGlzIG5vdCBxdWlja2x5IGJyb2tlbi4KQmV0dGVyIGlzIGEgcG9vciBhbmQgYSB3aXNlIGNoaWxkIHRoYW4gYW4gb2xkIGFuZCBmb29saXNoIGtpbmcsIHdobyB3aWxsIG5vIG1vcmUgYmUgYWRtb25pc2hlZC4KRm9yIG91dCBvZiBwcmlzb24gaGUgY29tZXRoIHRvIHJlaWduOyB3aGVyZWFzIGFsc28gaGUgdGhhdCBpcyBib3JuIGluIGhpcyBraW5nZG9tIGJlY29tZXRoIHBvb3IuCkkgY29uc2lkZXJlZCBhbGwgdGhlIGxpdmluZyB3aGljaCB3YWxrIHVuZGVyIHRoZSBzdW4sIHdpdGggdGhlIHNlY29uZCBjaGlsZCB0aGF0IHNoYWxsIHN0YW5kIHVwIGluIGhpcyBzdGVhZC4KVGhlcmUgaXMgbm8gZW5kIG9mIGFsbCB0aGUgcGVvcGxlLCBldmVuIG9mIGFsbCB0aGF0IGhhdmUgYmVlbiBiZWZvcmUgdGhlbTogdGhleSBhbHNvIHRoYXQgY29tZSBhZnRlciBzaGFsbCBub3QgcmVqb2ljZSBpbiBoaW0uIFN1cmVseSB0aGlzIGFsc28gaXMgdmFuaXR5IGFuZCB2ZXhhdGlvbiBvZiBzcGlyaXQuCktlZXAgdGh5IGZvb3Qgd2hlbiB0aG91IGdvZXN0IHRvIHRoZSBob3VzZSBvZiBHb2QsIGFuZCBiZSBtb3JlIHJlYWR5IHRvIGhlYXIsIHRoYW4gdG8gZ2l2ZSB0aGUgc2FjcmlmaWNlIG9mIGZvb2xzOiBmb3IgdGhleSBjb25zaWRlciBub3QgdGhhdCB0aGV5IGRvIGV2aWwuCkJlIG5vdCByYXNoIHdpdGggdGh5IG1vdXRoLCBhbmQgbGV0IG5vdCB0aGluZSBoZWFydCBiZSBoYXN0eSB0byB1dHRlciBhbnkgdGhpbmcgYmVmb3JlIEdvZDogZm9yIEdvZCBpcyBpbiBoZWF2ZW4sIGFuZCB0aG91IHVwb24gZWFydGg6IHRoZXJlZm9yZSBsZXQgdGh5IHdvcmRzIGJlIGZldy4KRm9yIGEgZHJlYW0gY29tZXRoIHRocm91Z2ggdGhlIG11bHRpdHVkZSBvZiBidXNpbmVzczsgYW5kIGEgZm9vbCdzIHZvaWNlIGlzIGtub3duIGJ5IG11bHRpdHVkZSBvZiB3b3Jkcy4KV2hlbiB0aG91IHZvd2VzdCBhIHZvdyB1bnRvIEdvZCwgZGVmZXIgbm90IHRvIHBheSBpdDsgZm9yIGhlIGhhdGggbm8gcGxlYXN1cmUgaW4gZm9vbHM6IHBheSB0aGF0IHdoaWNoIHRob3UgaGFzdCB2b3dlZC4KQmV0dGVyIGlzIGl0IHRoYXQgdGhvdSBzaG91bGRlc3Qgbm90IHZvdywgdGhhbiB0aGF0IHRob3Ugc2hvdWxkZXN0IHZvdyBhbmQgbm90IHBheS4KU3VmZmVyIG5vdCB0aHkgbW91dGggdG8gY2F1c2UgdGh5IGZsZXNoIHRvIHNpbjsgbmVpdGhlciBzYXkgdGhvdSBiZWZvcmUgdGhlIGFuZ2VsLCB0aGF0IGl0IHdhcyBhbiBlcnJvcjogd2hlcmVmb3JlIHNob3VsZCBHb2QgYmUgYW5ncnkgYXQgdGh5IHZvaWNlLCBhbmQgZGVzdHJveSB0aGUgd29yayBvZiB0aGluZSBoYW5kcz8KRm9yIGluIHRoZSBtdWx0aXR1ZGUgb2YgZHJlYW1zIGFuZCBtYW55IHdvcmRzIHRoZXJlIGFyZSBhbHNvIGRpdmVycyB2YW5pdGllczogYnV0IGZlYXIgdGhvdSBHb2QuCklmIHRob3Ugc2Vlc3QgdGhlIG9wcHJlc3Npb24gb2YgdGhlIHBvb3IsIGFuZCB2aW9sZW50IHBlcnZlcnRpbmcgb2YganVkZ21lbnQgYW5kIGp1c3RpY2UgaW4gYSBwcm92aW5jZSwgbWFydmVsIG5vdCBhdCB0aGUgbWF0dGVyOiBmb3IgaGUgdGhhdCBpcyBoaWdoZXIgdGhhbiB0aGUgaGlnaGVzdCByZWdhcmRldGg7IGFuZCB0aGVyZSBiZSBoaWdoZXIgdGhhbiB0aGV5LgpNb3Jlb3ZlciB0aGUgcHJvZml0IG9mIHRoZSBlYXJ0aCBpcyBmb3IgYWxsOiB0aGUga2luZyBoaW1zZWxmIGlzIHNlcnZlZCBieSB0aGUgZmllbGQuCkhlIHRoYXQgbG92ZXRoIHNpbHZlciBzaGFsbCBub3QgYmUgc2F0aXNmaWVkIHdpdGggc2lsdmVyOyBub3IgaGUgdGhhdCBsb3ZldGggYWJ1bmRhbmNlIHdpdGggaW5jcmVhc2U6IHRoaXMgaXMgYWxzbyB2YW5pdHkuCldoZW4gZ29vZHMgaW5jcmVhc2UsIHRoZXkgYXJlIGluY3JlYXNlZCB0aGF0IGVhdCB0aGVtOiBhbmQgd2hhdCBnb29kIGlzIHRoZXJlIHRvIHRoZSBvd25lcnMgdGhlcmVvZiwgc2F2aW5nIHRoZSBiZWhvbGRpbmcgb2YgdGhlbSB3aXRoIHRoZWlyIGV5ZXM/ClRoZSBzbGVlcCBvZiBhIGxhYm91cmluZyBtYW4gaXMgc3dlZXQsIHdoZXRoZXIgaGUgZWF0IGxpdHRsZSBvciBtdWNoOiBidXQgdGhlIGFidW5kYW5jZSBvZiB0aGUgcmljaCB3aWxsIG5vdCBzdWZmZXIgaGltIHRvIHNsZWVwLgpUaGVyZSBpcyBhIHNvcmUgZXZpbCB3aGljaCBJIGhhdmUgc2VlbiB1bmRlciB0aGUgc3VuLCBuYW1lbHksIHJpY2hlcyBrZXB0IGZvciB0aGUgb3duZXJzIHRoZXJlb2YgdG8gdGhlaXIgaHVydC4KQnV0IHRob3NlIHJpY2hlcyBwZXJpc2ggYnkgZXZpbCB0cmF2YWlsOiBhbmQgaGUgYmVnZXR0ZXRoIGEgc29uLCBhbmQgdGhlcmUgaXMgbm90aGluZyBpbiBoaXMgaGFuZC4KQXMgaGUgY2FtZSBmb3J0aCBvZiBoaXMgbW90aGVyJ3Mgd29tYiwgbmFrZWQgc2hhbGwgaGUgcmV0dXJuIHRvIGdvIGFzIGhlIGNhbWUsIGFuZCBzaGFsbCB0YWtlIG5vdGhpbmcgb2YgaGlzIGxhYm91ciwgd2hpY2ggaGUgbWF5IGNhcnJ5IGF3YXkgaW4gaGlzIGhhbmQuCkFuZCB0aGlzIGFsc28gaXMgYSBzb3JlIGV2aWwsIHRoYXQgaW4gYWxsIHBvaW50cyBhcyBoZSBjYW1lLCBzbyBzaGFsbCBoZSBnbzogYW5kIHdoYXQgcHJvZml0IGhhdGggaGUgdGhhdCBoYXRoIGxhYm91cmVkIGZvciB0aGUgd2luZD8KQWxsIGhpcyBkYXlzIGFsc28gaGUgZWF0ZXRoIGluIGRhcmtuZXNzLCBhbmQgaGUgaGF0aCBtdWNoIHNvcnJvdyBhbmQgd3JhdGggd2l0aCBoaXMgc2lja25lc3MuCkJlaG9sZCB0aGF0IHdoaWNoIEkgaGF2ZSBzZWVuOiBpdCBpcyBnb29kIGFuZCBjb21lbHkgZm9yIG9uZSB0byBlYXQgYW5kIHRvIGRyaW5rLCBhbmQgdG8gZW5qb3kgdGhlIGdvb2Qgb2YgYWxsIGhpcyBsYWJvdXIgdGhhdCBoZSB0YWtldGggdW5kZXIgdGhlIHN1biBhbGwgdGhlIGRheXMgb2YgaGlzIGxpZmUsIHdoaWNoIEdvZCBnaXZldGggaGltOiBmb3IgaXQgaXMgaGlzIHBvcnRpb24uCkV2ZXJ5IG1hbiBhbHNvIHRvIHdob20gR29kIGhhdGggZ2l2ZW4gcmljaGVzIGFuZCB3ZWFsdGgsIGFuZCBoYXRoIGdpdmVuIGhpbSBwb3dlciB0byBlYXQgdGhlcmVvZiwgYW5kIHRvIHRha2UgaGlzIHBvcnRpb24sIGFuZCB0byByZWpvaWNlIGluIGhpcyBsYWJvdXI7IHRoaXMgaXMgdGhlIGdpZnQgb2YgR29kLgpGb3IgaGUgc2hhbGwgbm90IG11Y2ggcmVtZW1iZXIgdGhlIGRheXMgb2YgaGlzIGxpZmU7IGJlY2F1c2UgR29kIGFuc3dlcmV0aCBoaW0gaW4gdGhlIGpveSBvZiBoaXMgaGVhcnQuClRoZXJlIGlzIGFuIGV2aWwgd2hpY2ggSSBoYXZlIHNlZW4gdW5kZXIgdGhlIHN1biwgYW5kIGl0IGlzIGNvbW1vbiBhbW9uZyBtZW46CkEgbWFuIHRvIHdob20gR29kIGhhdGggZ2l2ZW4gcmljaGVzLCB3ZWFsdGgsIGFuZCBob25vdXIsIHNvIHRoYXQgaGUgd2FudGV0aCBub3RoaW5nIGZvciBoaXMgc291bCBvZiBhbGwgdGhhdCBoZSBkZXNpcmV0aCwgeWV0IEdvZCBnaXZldGggaGltIG5vdCBwb3dlciB0byBlYXQgdGhlcmVvZiwgYnV0IGEgc3RyYW5nZXIgZWF0ZXRoIGl0OiB0aGlzIGlzIHZhbml0eSwgYW5kIGl0IGlzIGFuIGV2aWwgZGlzZWFzZS4KSWYgYSBtYW4gYmVnZXQgYW4gaHVuZHJlZCBjaGlsZHJlbiwgYW5kIGxpdmUgbWFueSB5ZWFycywgc28gdGhhdCB0aGUgZGF5cyBvZiBoaXMgeWVhcnMgYmUgbWFueSwgYW5kIGhpcyBzb3VsIGJlIG5vdCBmaWxsZWQgd2l0aCBnb29kLCBhbmQgYWxzbyB0aGF0IGhlIGhhdmUgbm8gYnVyaWFsOyBJIHNheSwgdGhhdCBhbiB1bnRpbWVseSBiaXJ0aCBpcyBiZXR0ZXIgdGhhbiBoZS4KRm9yIGhlIGNvbWV0aCBpbiB3aXRoIHZhbml0eSwgYW5kIGRlcGFydGV0aCBpbiBkYXJrbmVzcywgYW5kIGhpcyBuYW1lIHNoYWxsIGJlIGNvdmVyZWQgd2l0aCBkYXJrbmVzcy4KTW9yZW92ZXIgaGUgaGF0aCBub3Qgc2VlbiB0aGUgc3VuLCBub3Iga25vd24gYW55IHRoaW5nOiB0aGlzIGhhdGggbW9yZSByZXN0IHRoYW4gdGhlIG90aGVyLgpZZWEsIHRob3VnaCBoZSBsaXZlIGEgdGhvdXNhbmQgeWVhcnMgdHdpY2UgdG9sZCwgeWV0IGhhdGggaGUgc2VlbiBubyBnb29kOiBkbyBub3QgYWxsIGdvIHRvIG9uZSBwbGFjZT8KQWxsIHRoZSBsYWJvdXIgb2YgbWFuIGlzIGZvciBoaXMgbW91dGgsIGFuZCB5ZXQgdGhlIGFwcGV0aXRlIGlzIG5vdCBmaWxsZWQuCkZvciB3aGF0IGhhdGggdGhlIHdpc2UgbW9yZSB0aGFuIHRoZSBmb29sPyB3aGF0IGhhdGggdGhlIHBvb3IsIHRoYXQga25vd2V0aCB0byB3YWxrIGJlZm9yZSB0aGUgbGl2aW5nPwpCZXR0ZXIgaXMgdGhlIHNpZ2h0IG9mIHRoZSBleWVzIHRoYW4gdGhlIHdhbmRlcmluZyBvZiB0aGUgZGVzaXJlOiB0aGlzIGlzIGFsc28gdmFuaXR5IGFuZCB2ZXhhdGlvbiBvZiBzcGlyaXQuClRoYXQgd2hpY2ggaGF0aCBiZWVuIGlzIG5hbWVkIGFscmVhZHksIGFuZCBpdCBpcyBrbm93biB0aGF0IGl0IGlzIG1hbjogbmVpdGhlciBtYXkgaGUgY29udGVuZCB3aXRoIGhpbSB0aGF0IGlzIG1pZ2h0aWVyIHRoYW4gaGUuClNlZWluZyB0aGVyZSBiZSBtYW55IHRoaW5ncyB0aGF0IGluY3JlYXNlIHZhbml0eSwgd2hhdCBpcyBtYW4gdGhlIGJldHRlcj8KRm9yIHdobyBrbm93ZXRoIHdoYXQgaXMgZ29vZCBmb3IgbWFuIGluIHRoaXMgbGlmZSwgYWxsIHRoZSBkYXlzIG9mIGhpcyB2YWluIGxpZmUgd2hpY2ggaGUgc3BlbmRldGggYXMgYSBzaGFkb3c/IGZvciB3aG8gY2FuIHRlbGwgYSBtYW4gd2hhdCBzaGFsbCBiZSBhZnRlciBoaW0gdW5kZXIgdGhlIHN1bj8KQSBnb29kIG5hbWUgaXMgYmV0dGVyIHRoYW4gcHJlY2lvdXMgb2ludG1lbnQ7IGFuZCB0aGUgZGF5IG9mIGRlYXRoIHRoYW4gdGhlIGRheSBvZiBvbmUncyBiaXJ0aC4KSXQgaXMgYmV0dGVyIHRvIGdvIHRvIHRoZSBob3VzZSBvZiBtb3VybmluZywgdGhhbiB0byBnbyB0byB0aGUgaG91c2Ugb2YgZmVhc3Rpbmc6IGZvciB0aGF0IGlzIHRoZSBlbmQgb2YgYWxsIG1lbjsgYW5kIHRoZSBsaXZpbmcgd2lsbCBsYXkgaXQgdG8gaGlzIGhlYXJ0LgpTb3Jyb3cgaXMgYmV0dGVyIHRoYW4gbGF1Z2h0ZXI6IGZvciBieSB0aGUgc2FkbmVzcyBvZiB0aGUgY291bnRlbmFuY2UgdGhlIGhlYXJ0IGlzIG1hZGUgYmV0dGVyLgpUaGUgaGVhcnQgb2YgdGhlIHdpc2UgaXMgaW4gdGhlIGhvdXNlIG9mIG1vdXJuaW5nOyBidXQgdGhlIGhlYXJ0IG9mIGZvb2xzIGlzIGluIHRoZSBob3VzZSBvZiBtaXJ0aC4KSXQgaXMgYmV0dGVyIHRvIGhlYXIgdGhlIHJlYnVrZSBvZiB0aGUgd2lzZSwgdGhhbiBmb3IgYSBtYW4gdG8gaGVhciB0aGUgc29uZyBvZiBmb29scy4KRm9yIGFzIHRoZSBjcmFja2xpbmcgb2YgdGhvcm5zIHVuZGVyIGEgcG90LCBzbyBpcyB0aGUgbGF1Z2h0ZXIgb2YgdGhlIGZvb2w6IHRoaXMgYWxzbyBpcyB2YW5pdHkuClN1cmVseSBvcHByZXNzaW9uIG1ha2V0aCBhIHdpc2UgbWFuIG1hZDsgYW5kIGEgZ2lmdCBkZXN0cm95ZXRoIHRoZSBoZWFydC4KQmV0dGVyIGlzIHRoZSBlbmQgb2YgYSB0aGluZyB0aGFuIHRoZSBiZWdpbm5pbmcgdGhlcmVvZjogYW5kIHRoZSBwYXRpZW50IGluIHNwaXJpdCBpcyBiZXR0ZXIgdGhhbiB0aGUgcHJvdWQgaW4gc3Bpcml0LgpCZSBub3QgaGFzdHkgaW4gdGh5IHNwaXJpdCB0byBiZSBhbmdyeTogZm9yIGFuZ2VyIHJlc3RldGggaW4gdGhlIGJvc29tIG9mIGZvb2xzLgpTYXkgbm90IHRob3UsIFdoYXQgaXMgdGhlIGNhdXNlIHRoYXQgdGhlIGZvcm1lciBkYXlzIHdlcmUgYmV0dGVyIHRoYW4gdGhlc2U/IGZvciB0aG91IGRvc3Qgbm90IGVucXVpcmUgd2lzZWx5IGNvbmNlcm5pbmcgdGhpcy4KV2lzZG9tIGlzIGdvb2Qgd2l0aCBhbiBpbmhlcml0YW5jZTogYW5kIGJ5IGl0IHRoZXJlIGlzIHByb2ZpdCB0byB0aGVtIHRoYXQgc2VlIHRoZSBzdW4uCkZvciB3aXNkb20gaXMgYSBkZWZlbmNlLCBhbmQgbW9uZXkgaXMgYSBkZWZlbmNlOiBidXQgdGhlIGV4Y2VsbGVuY3kgb2Yga25vd2xlZGdlIGlzLCB0aGF0IHdpc2RvbSBnaXZldGggbGlmZSB0byB0aGVtIHRoYXQgaGF2ZSBpdC4KQ29uc2lkZXIgdGhlIHdvcmsgb2YgR29kOiBmb3Igd2hvIGNhbiBtYWtlIHRoYXQgc3RyYWlnaHQsIHdoaWNoIGhlIGhhdGggbWFkZSBjcm9va2VkPwpJbiB0aGUgZGF5IG9mIHByb3NwZXJpdHkgYmUgam95ZnVsLCBidXQgaW4gdGhlIGRheSBvZiBhZHZlcnNpdHkgY29uc2lkZXI6IEdvZCBhbHNvIGhhdGggc2V0IHRoZSBvbmUgb3ZlciBhZ2FpbnN0IHRoZSBvdGhlciwgdG8gdGhlIGVuZCB0aGF0IG1hbiBzaG91bGQgZmluZCBub3RoaW5nIGFmdGVyIGhpbS4KQWxsIHRoaW5ncyBoYXZlIEkgc2VlbiBpbiB0aGUgZGF5cyBvZiBteSB2YW5pdHk6IHRoZXJlIGlzIGEganVzdCBtYW4gdGhhdCBwZXJpc2hldGggaW4gaGlzIHJpZ2h0ZW91c25lc3MsIGFuZCB0aGVyZSBpcyBhIHdpY2tlZCBtYW4gdGhhdCBwcm9sb25nZXRoIGhpcyBsaWZlIGluIGhpcyB3aWNrZWRuZXNzLgpCZSBub3QgcmlnaHRlb3VzIG92ZXIgbXVjaDsgbmVpdGhlciBtYWtlIHRoeXNlbGYgb3ZlciB3aXNlOiB3aHkgc2hvdWxkZXN0IHRob3UgZGVzdHJveSB0aHlzZWxmID8KQmUgbm90IG92ZXIgbXVjaCB3aWNrZWQsIG5laXRoZXIgYmUgdGhvdSBmb29saXNoOiB3aHkgc2hvdWxkZXN0IHRob3UgZGllIGJlZm9yZSB0aHkgdGltZT8KSXQgaXMgZ29vZCB0aGF0IHRob3Ugc2hvdWxkZXN0IHRha2UgaG9sZCBvZiB0aGlzOyB5ZWEsIGFsc28gZnJvbSB0aGlzIHdpdGhkcmF3IG5vdCB0aGluZSBoYW5kOiBmb3IgaGUgdGhhdCBmZWFyZXRoIEdvZCBzaGFsbCBjb21lIGZvcnRoIG9mIHRoZW0gYWxsLgpXaXNkb20gc3RyZW5ndGhlbmV0aCB0aGUgd2lzZSBtb3JlIHRoYW4gdGVuIG1pZ2h0eSBtZW4gd2hpY2ggYXJlIGluIHRoZSBjaXR5LgpGb3IgdGhlcmUgaXMgbm90IGEganVzdCBtYW4gdXBvbiBlYXJ0aCwgdGhhdCBkb2V0aCBnb29kLCBhbmQgc2lubmV0aCBub3QuCkFsc28gdGFrZSBubyBoZWVkIHVudG8gYWxsIHdvcmRzIHRoYXQgYXJlIHNwb2tlbjsgbGVzdCB0aG91IGhlYXIgdGh5IHNlcnZhbnQgY3Vyc2UgdGhlZToKRm9yIG9mdGVudGltZXMgYWxzbyB0aGluZSBvd24gaGVhcnQga25vd2V0aCB0aGF0IHRob3UgdGh5c2VsZiBsaWtld2lzZSBoYXN0IGN1cnNlZCBvdGhlcnMuCkFsbCB0aGlzIGhhdmUgSSBwcm92ZWQgYnkgd2lzZG9tOiBJIHNhaWQsIEkgd2lsbCBiZSB3aXNlOyBidXQgaXQgd2FzIGZhciBmcm9tIG1lLgpUaGF0IHdoaWNoIGlzIGZhciBvZmYsIGFuZCBleGNlZWRpbmcgZGVlcCwgd2hvIGNhbiBmaW5kIGl0IG91dD8KSSBhcHBsaWVkIG1pbmUgaGVhcnQgdG8ga25vdywgYW5kIHRvIHNlYXJjaCwgYW5kIHRvIHNlZWsgb3V0IHdpc2RvbSwgYW5kIHRoZSByZWFzb24gb2YgdGhpbmdzLCBhbmQgdG8ga25vdyB0aGUgd2lja2VkbmVzcyBvZiBmb2xseSwgZXZlbiBvZiBmb29saXNobmVzcyBhbmQgbWFkbmVzczoKQW5kIEkgZmluZCBtb3JlIGJpdHRlciB0aGFuIGRlYXRoIHRoZSB3b21hbiwgd2hvc2UgaGVhcnQgaXMgc25hcmVzIGFuZCBuZXRzLCBhbmQgaGVyIGhhbmRzIGFzIGJhbmRzOiB3aG9zbyBwbGVhc2V0aCBHb2Qgc2hhbGwgZXNjYXBlIGZyb20gaGVyOyBidXQgdGhlIHNpbm5lciBzaGFsbCBiZSB0YWtlbiBieSBoZXIuCkJlaG9sZCwgdGhpcyBoYXZlIEkgZm91bmQsIHNhaXRoIHRoZSBwcmVhY2hlciwgY291bnRpbmcgb25lIGJ5IG9uZSwgdG8gZmluZCBvdXQgdGhlIGFjY291bnQ6CldoaWNoIHlldCBteSBzb3VsIHNlZWtldGgsIGJ1dCBJIGZpbmQgbm90OiBvbmUgbWFuIGFtb25nIGEgdGhvdXNhbmQgaGF2ZSBJIGZvdW5kOyBidXQgYSB3b21hbiBhbW9uZyBhbGwgdGhvc2UgaGF2ZSBJIG5vdCBmb3VuZC4KTG8sIHRoaXMgb25seSBoYXZlIEkgZm91bmQsIHRoYXQgR29kIGhhdGggbWFkZSBtYW4gdXByaWdodDsgYnV0IHRoZXkgaGF2ZSBzb3VnaHQgb3V0IG1hbnkgaW52ZW50aW9ucy4KV2hvIGlzIGFzIHRoZSB3aXNlIG1hbj8gYW5kIHdobyBrbm93ZXRoIHRoZSBpbnRlcnByZXRhdGlvbiBvZiBhIHRoaW5nPyBhIG1hbidzIHdpc2RvbSBtYWtldGggaGlzIGZhY2UgdG8gc2hpbmUsIGFuZCB0aGUgYm9sZG5lc3Mgb2YgaGlzIGZhY2Ugc2hhbGwgYmUgY2hhbmdlZC4KSSBjb3Vuc2VsIHRoZWUgdG8ga2VlcCB0aGUga2luZydzIGNvbW1hbmRtZW50LCBhbmQgdGhhdCBpbiByZWdhcmQgb2YgdGhlIG9hdGggb2YgR29kLgpCZSBub3QgaGFzdHkgdG8gZ28gb3V0IG9mIGhpcyBzaWdodDogc3RhbmQgbm90IGluIGFuIGV2aWwgdGhpbmc7IGZvciBoZSBkb2V0aCB3aGF0c29ldmVyIHBsZWFzZXRoIGhpbS4KV2hlcmUgdGhlIHdvcmQgb2YgYSBraW5nIGlzLCB0aGVyZSBpcyBwb3dlcjogYW5kIHdobyBtYXkgc2F5IHVudG8gaGltLCBXaGF0IGRvZXN0IHRob3U/Cldob3NvIGtlZXBldGggdGhlIGNvbW1hbmRtZW50IHNoYWxsIGZlZWwgbm8gZXZpbCB0aGluZzogYW5kIGEgd2lzZSBtYW4ncyBoZWFydCBkaXNjZXJuZXRoIGJvdGggdGltZSBhbmQganVkZ21lbnQuCkJlY2F1c2UgdG8gZXZlcnkgcHVycG9zZSB0aGVyZSBpcyB0aW1lIGFuZCBqdWRnbWVudCwgdGhlcmVmb3JlIHRoZSBtaXNlcnkgb2YgbWFuIGlzIGdyZWF0IHVwb24gaGltLgpGb3IgaGUga25vd2V0aCBub3QgdGhhdCB3aGljaCBzaGFsbCBiZTogZm9yIHdobyBjYW4gdGVsbCBoaW0gd2hlbiBpdCBzaGFsbCBiZT8KVGhlcmUgaXMgbm8gbWFuIHRoYXQgaGF0aCBwb3dlciBvdmVyIHRoZSBzcGlyaXQgdG8gcmV0YWluIHRoZSBzcGlyaXQ7IG5laXRoZXIgaGF0aCBoZSBwb3dlciBpbiB0aGUgZGF5IG9mIGRlYXRoOiBhbmQgdGhlcmUgaXMgbm8gZGlzY2hhcmdlIGluIHRoYXQgd2FyOyBuZWl0aGVyIHNoYWxsIHdpY2tlZG5lc3MgZGVsaXZlciB0aG9zZSB0aGF0IGFyZSBnaXZlbiB0byBpdC4KQWxsIHRoaXMgaGF2ZSBJIHNlZW4sIGFuZCBhcHBsaWVkIG15IGhlYXJ0IHVudG8gZXZlcnkgd29yayB0aGF0IGlzIGRvbmUgdW5kZXIgdGhlIHN1bjogdGhlcmUgaXMgYSB0aW1lIHdoZXJlaW4gb25lIG1hbiBydWxldGggb3ZlciBhbm90aGVyIHRvIGhpcyBvd24gaHVydC4KQW5kIHNvIEkgc2F3IHRoZSB3aWNrZWQgYnVyaWVkLCB3aG8gaGFkIGNvbWUgYW5kIGdvbmUgZnJvbSB0aGUgcGxhY2Ugb2YgdGhlIGhvbHksIGFuZCB0aGV5IHdlcmUgZm9yZ290dGVuIGluIHRoZSBjaXR5IHdoZXJlIHRoZXkgaGFkIHNvIGRvbmU6IHRoaXMgaXMgYWxzbyB2YW5pdHkuCkJlY2F1c2Ugc2VudGVuY2UgYWdhaW5zdCBhbiBldmlsIHdvcmsgaXMgbm90IGV4ZWN1dGVkIHNwZWVkaWx5LCB0aGVyZWZvcmUgdGhlIGhlYXJ0IG9mIHRoZSBzb25zIG9mIG1lbiBpcyBmdWxseSBzZXQgaW4gdGhlbSB0byBkbyBldmlsLgpUaG91Z2ggYSBzaW5uZXIgZG8gZXZpbCBhbiBodW5kcmVkIHRpbWVzLCBhbmQgaGlzIGRheXMgYmUgcHJvbG9uZ2VkLCB5ZXQgc3VyZWx5IEkga25vdyB0aGF0IGl0IHNoYWxsIGJlIHdlbGwgd2l0aCB0aGVtIHRoYXQgZmVhciBHb2QsIHdoaWNoIGZlYXIgYmVmb3JlIGhpbToKQnV0IGl0IHNoYWxsIG5vdCBiZSB3ZWxsIHdpdGggdGhlIHdpY2tlZCwgbmVpdGhlciBzaGFsbCBoZSBwcm9sb25nIGhpcyBkYXlzLCB3aGljaCBhcmUgYXMgYSBzaGFkb3c7IGJlY2F1c2UgaGUgZmVhcmV0aCBub3QgYmVmb3JlIEdvZC4KVGhlcmUgaXMgYSB2YW5pdHkgd2hpY2ggaXMgZG9uZSB1cG9uIHRoZSBlYXJ0aDsgdGhhdCB0aGVyZSBiZSBqdXN0IG1lbiwgdW50byB3aG9tIGl0IGhhcHBlbmV0aCBhY2NvcmRpbmcgdG8gdGhlIHdvcmsgb2YgdGhlIHdpY2tlZDsgYWdhaW4sIHRoZXJlIGJlIHdpY2tlZCBtZW4sIHRvIHdob20gaXQgaGFwcGVuZXRoIGFjY29yZGluZyB0byB0aGUgd29yayBvZiB0aGUgcmlnaHRlb3VzOiBJIHNhaWQgdGhhdCB0aGlzIGFsc28gaXMgdmFuaXR5LgpUaGVuIEkgY29tbWVuZGVkIG1pcnRoLCBiZWNhdXNlIGEgbWFuIGhhdGggbm8gYmV0dGVyIHRoaW5nIHVuZGVyIHRoZSBzdW4sIHRoYW4gdG8gZWF0LCBhbmQgdG8gZHJpbmssIGFuZCB0byBiZSBtZXJyeTogZm9yIHRoYXQgc2hhbGwgYWJpZGUgd2l0aCBoaW0gb2YgaGlzIGxhYm91ciB0aGUgZGF5cyBvZiBoaXMgbGlmZSwgd2hpY2ggR29kIGdpdmV0aCBoaW0gdW5kZXIgdGhlIHN1bi4KV2hlbiBJIGFwcGxpZWQgbWluZSBoZWFydCB0byBrbm93IHdpc2RvbSwgYW5kIHRvIHNlZSB0aGUgYnVzaW5lc3MgdGhhdCBpcyBkb25lIHVwb24gdGhlIGVhcnRoOiAoZm9yIGFsc28gdGhlcmUgaXMgdGhhdCBuZWl0aGVyIGRheSBub3IgbmlnaHQgc2VldGggc2xlZXAgd2l0aCBoaXMgZXllczopClRoZW4gSSBiZWhlbGQgYWxsIHRoZSB3b3JrIG9mIEdvZCwgdGhhdCBhIG1hbiBjYW5ub3QgZmluZCBvdXQgdGhlIHdvcmsgdGhhdCBpcyBkb25lIHVuZGVyIHRoZSBzdW46IGJlY2F1c2UgdGhvdWdoIGEgbWFuIGxhYm91ciB0byBzZWVrIGl0IG91dCwgeWV0IGhlIHNoYWxsIG5vdCBmaW5kIGl0OyB5ZWEgZmFydGhlcjsgdGhvdWdoIGEgd2lzZSBtYW4gdGhpbmsgdG8ga25vdyBpdCwgeWV0IHNoYWxsIGhlIG5vdCBiZSBhYmxlIHRvIGZpbmQgaXQuCkZvciBhbGwgdGhpcyBJIGNvbnNpZGVyZWQgaW4gbXkgaGVhcnQgZXZlbiB0byBkZWNsYXJlIGFsbCB0aGlzLCB0aGF0IHRoZSByaWdodGVvdXMsIGFuZCB0aGUgd2lzZSwgYW5kIHRoZWlyIHdvcmtzLCBhcmUgaW4gdGhlIGhhbmQgb2YgR29kOiBubyBtYW4ga25vd2V0aCBlaXRoZXIgbG92ZSBvciBoYXRyZWQgYnkgYWxsIHRoYXQgaXMgYmVmb3JlIHRoZW0uCkFsbCB0aGluZ3MgY29tZSBhbGlrZSB0byBhbGw6IHRoZXJlIGlzIG9uZSBldmVudCB0byB0aGUgcmlnaHRlb3VzLCBhbmQgdG8gdGhlIHdpY2tlZDsgdG8gdGhlIGdvb2QgYW5kIHRvIHRoZSBjbGVhbiwgYW5kIHRvIHRoZSB1bmNsZWFuOyB0byBoaW0gdGhhdCBzYWNyaWZpY2V0aCwgYW5kIHRvIGhpbSB0aGF0IHNhY3JpZmljZXRoIG5vdDogYXMgaXMgdGhlIGdvb2QsIHNvIGlzIHRoZSBzaW5uZXI7IGFuZCBoZSB0aGF0IHN3ZWFyZXRoLCBhcyBoZSB0aGF0IGZlYXJldGggYW4gb2F0aC4KVGhpcyBpcyBhbiBldmlsIGFtb25nIGFsbCB0aGluZ3MgdGhhdCBhcmUgZG9uZSB1bmRlciB0aGUgc3VuLCB0aGF0IHRoZXJlIGlzIG9uZSBldmVudCB1bnRvIGFsbDogeWVhLCBhbHNvIHRoZSBoZWFydCBvZiB0aGUgc29ucyBvZiBtZW4gaXMgZnVsbCBvZiBldmlsLCBhbmQgbWFkbmVzcyBpcyBpbiB0aGVpciBoZWFydCB3aGlsZSB0aGV5IGxpdmUsIGFuZCBhZnRlciB0aGF0IHRoZXkgZ28gdG8gdGhlIGRlYWQuCkZvciB0byBoaW0gdGhhdCBpcyBqb2luZWQgdG8gYWxsIHRoZSBsaXZpbmcgdGhlcmUgaXMgaG9wZTogZm9yIGEgbGl2aW5nIGRvZyBpcyBiZXR0ZXIgdGhhbiBhIGRlYWQgbGlvbi4KRm9yIHRoZSBsaXZpbmcga25vdyB0aGF0IHRoZXkgc2hhbGwgZGllOiBidXQgdGhlIGRlYWQga25vdyBub3QgYW55IHRoaW5nLCBuZWl0aGVyIGhhdmUgdGhleSBhbnkgbW9yZSBhIHJld2FyZDsgZm9yIHRoZSBtZW1vcnkgb2YgdGhlbSBpcyBmb3Jnb3R0ZW4uCkFsc28gdGhlaXIgbG92ZSwgYW5kIHRoZWlyIGhhdHJlZCwgYW5kIHRoZWlyIGVudnksIGlzIG5vdyBwZXJpc2hlZDsgbmVpdGhlciBoYXZlIHRoZXkgYW55IG1vcmUgYSBwb3J0aW9uIGZvciBldmVyIGluIGFueSB0aGluZyB0aGF0IGlzIGRvbmUgdW5kZXIgdGhlIHN1bi4KR28gdGh5IHdheSwgZWF0IHRoeSBicmVhZCB3aXRoIGpveSwgYW5kIGRyaW5rIHRoeSB3aW5lIHdpdGggYSBtZXJyeSBoZWFydDsgZm9yIEdvZCBub3cgYWNjZXB0ZXRoIHRoeSB3b3Jrcy4KTGV0IHRoeSBnYXJtZW50cyBiZSBhbHdheXMgd2hpdGU7IGFuZCBsZXQgdGh5IGhlYWQgbGFjayBubyBvaW50bWVudC4KTGl2ZSBqb3lmdWxseSB3aXRoIHRoZSB3aWZlIHdob20gdGhvdSBsb3Zlc3QgYWxsIHRoZSBkYXlzIG9mIHRoZSBsaWZlIG9mIHRoeSB2YW5pdHksIHdoaWNoIGhlIGhhdGggZ2l2ZW4gdGhlZSB1bmRlciB0aGUgc3VuLCBhbGwgdGhlIGRheXMgb2YgdGh5IHZhbml0eTogZm9yIHRoYXQgaXMgdGh5IHBvcnRpb24gaW4gdGhpcyBsaWZlLCBhbmQgaW4gdGh5IGxhYm91ciB3aGljaCB0aG91IHRha2VzdCB1bmRlciB0aGUgc3VuLgpXaGF0c29ldmVyIHRoeSBoYW5kIGZpbmRldGggdG8gZG8sIGRvIGl0IHdpdGggdGh5IG1pZ2h0OyBmb3IgdGhlcmUgaXMgbm8gd29yaywgbm9yIGRldmljZSwgbm9yIGtub3dsZWRnZSwgbm9yIHdpc2RvbSwgaW4gdGhlIGdyYXZlLCB3aGl0aGVyIHRob3UgZ29lc3QuCkkgcmV0dXJuZWQsIGFuZCBzYXcgdW5kZXIgdGhlIHN1biwgdGhhdCB0aGUgcmFjZSBpcyBub3QgdG8gdGhlIHN3aWZ0LCBub3IgdGhlIGJhdHRsZSB0byB0aGUgc3Ryb25nLCBuZWl0aGVyIHlldCBicmVhZCB0byB0aGUgd2lzZSwgbm9yIHlldCByaWNoZXMgdG8gbWVuIG9mIHVuZGVyc3RhbmRpbmcsIG5vciB5ZXQgZmF2b3VyIHRvIG1lbiBvZiBza2lsbDsgYnV0IHRpbWUgYW5kIGNoYW5jZSBoYXBwZW5ldGggdG8gdGhlbSBhbGwuCkZvciBtYW4gYWxzbyBrbm93ZXRoIG5vdCBoaXMgdGltZTogYXMgdGhlIGZpc2hlcyB0aGF0IGFyZSB0YWtlbiBpbiBhbiBldmlsIG5ldCwgYW5kIGFzIHRoZSBiaXJkcyB0aGF0IGFyZSBjYXVnaHQgaW4gdGhlIHNuYXJlOyBzbyBhcmUgdGhlIHNvbnMgb2YgbWVuIHNuYXJlZCBpbiBhbiBldmlsIHRpbWUsIHdoZW4gaXQgZmFsbGV0aCBzdWRkZW5seSB1cG9uIHRoZW0uClRoaXMgd2lzZG9tIGhhdmUgSSBzZWVuIGFsc28gdW5kZXIgdGhlIHN1biwgYW5kIGl0IHNlZW1lZCBncmVhdCB1bnRvIG1lOgpUaGVyZSB3YXMgYSBsaXR0bGUgY2l0eSwgYW5kIGZldyBtZW4gd2l0aGluIGl0OyBhbmQgdGhlcmUgY2FtZSBhIGdyZWF0IGtpbmcgYWdhaW5zdCBpdCwgYW5kIGJlc2llZ2VkIGl0LCBhbmQgYnVpbHQgZ3JlYXQgYnVsd2Fya3MgYWdhaW5zdCBpdDoKTm93IHRoZXJlIHdhcyBmb3VuZCBpbiBpdCBhIHBvb3Igd2lzZSBtYW4sIGFuZCBoZSBieSBoaXMgd2lzZG9tIGRlbGl2ZXJlZCB0aGUgY2l0eTsgeWV0IG5vIG1hbiByZW1lbWJlcmVkIHRoYXQgc2FtZSBwb29yIG1hbi4KVGhlbiBzYWlkIEksIFdpc2RvbSBpcyBiZXR0ZXIgdGhhbiBzdHJlbmd0aDogbmV2ZXJ0aGVsZXNzIHRoZSBwb29yIG1hbidzIHdpc2RvbSBpcyBkZXNwaXNlZCwgYW5kIGhpcyB3b3JkcyBhcmUgbm90IGhlYXJkLgpUaGUgd29yZHMgb2Ygd2lzZSBtZW4gYXJlIGhlYXJkIGluIHF1aWV0IG1vcmUgdGhhbiB0aGUgY3J5IG9mIGhpbSB0aGF0IHJ1bGV0aCBhbW9uZyBmb29scy4KV2lzZG9tIGlzIGJldHRlciB0aGFuIHdlYXBvbnMgb2Ygd2FyOiBidXQgb25lIHNpbm5lciBkZXN0cm95ZXRoIG11Y2ggZ29vZC4KRGVhZCBmbGllcyBjYXVzZSB0aGUgb2ludG1lbnQgb2YgdGhlIGFwb3RoZWNhcnkgdG8gc2VuZCBmb3J0aCBhIHN0aW5raW5nIHNhdm91cjogc28gZG90aCBhIGxpdHRsZSBmb2xseSBoaW0gdGhhdCBpcyBpbiByZXB1dGF0aW9uIGZvciB3aXNkb20gYW5kIGhvbm91ci4KQSB3aXNlIG1hbidzIGhlYXJ0IGlzIGF0IGhpcyByaWdodCBoYW5kOyBidXQgYSBmb29sJ3MgaGVhcnQgYXQgaGlzIGxlZnQuClllYSBhbHNvLCB3aGVuIGhlIHRoYXQgaXMgYSBmb29sIHdhbGtldGggYnkgdGhlIHdheSwgaGlzIHdpc2RvbSBmYWlsZXRoIGhpbSwgYW5kIGhlIHNhaXRoIHRvIGV2ZXJ5IG9uZSB0aGF0IGhlIGlzIGEgZm9vbC4KSWYgdGhlIHNwaXJpdCBvZiB0aGUgcnVsZXIgcmlzZSB1cCBhZ2FpbnN0IHRoZWUsIGxlYXZlIG5vdCB0aHkgcGxhY2U7IGZvciB5aWVsZGluZyBwYWNpZmlldGggZ3JlYXQgb2ZmZW5jZXMuClRoZXJlIGlzIGFuIGV2aWwgd2hpY2ggSSBoYXZlIHNlZW4gdW5kZXIgdGhlIHN1biwgYXMgYW4gZXJyb3Igd2hpY2ggcHJvY2VlZGV0aCBmcm9tIHRoZSBydWxlcjoKRm9sbHkgaXMgc2V0IGluIGdyZWF0IGRpZ25pdHksIGFuZCB0aGUgcmljaCBzaXQgaW4gbG93IHBsYWNlLgpJIGhhdmUgc2VlbiBzZXJ2YW50cyB1cG9uIGhvcnNlcywgYW5kIHByaW5jZXMgd2Fsa2luZyBhcyBzZXJ2YW50cyB1cG9uIHRoZSBlYXJ0aC4KSGUgdGhhdCBkaWdnZXRoIGEgcGl0IHNoYWxsIGZhbGwgaW50byBpdDsgYW5kIHdob3NvIGJyZWFrZXRoIGFuIGhlZGdlLCBhIHNlcnBlbnQgc2hhbGwgYml0ZSBoaW0uCldob3NvIHJlbW92ZXRoIHN0b25lcyBzaGFsbCBiZSBodXJ0IHRoZXJld2l0aDsgYW5kIGhlIHRoYXQgY2xlYXZldGggd29vZCBzaGFsbCBiZSBlbmRhbmdlcmVkIHRoZXJlYnkuCklmIHRoZSBpcm9uIGJlIGJsdW50LCBhbmQgaGUgZG8gbm90IHdoZXQgdGhlIGVkZ2UsIHRoZW4gbXVzdCBoZSBwdXQgdG8gbW9yZSBzdHJlbmd0aDogYnV0IHdpc2RvbSBpcyBwcm9maXRhYmxlIHRvIGRpcmVjdC4KU3VyZWx5IHRoZSBzZXJwZW50IHdpbGwgYml0ZSB3aXRob3V0IGVuY2hhbnRtZW50OyBhbmQgYSBiYWJibGVyIGlzIG5vIGJldHRlci4KVGhlIHdvcmRzIG9mIGEgd2lzZSBtYW4ncyBtb3V0aCBhcmUgZ3JhY2lvdXM7IGJ1dCB0aGUgbGlwcyBvZiBhIGZvb2wgd2lsbCBzd2FsbG93IHVwIGhpbXNlbGYuClRoZSBiZWdpbm5pbmcgb2YgdGhlIHdvcmRzIG9mIGhpcyBtb3V0aCBpcyBmb29saXNobmVzczogYW5kIHRoZSBlbmQgb2YgaGlzIHRhbGsgaXMgbWlzY2hpZXZvdXMgbWFkbmVzcy4KQSBmb29sIGFsc28gaXMgZnVsbCBvZiB3b3JkczogYSBtYW4gY2Fubm90IHRlbGwgd2hhdCBzaGFsbCBiZTsgYW5kIHdoYXQgc2hhbGwgYmUgYWZ0ZXIgaGltLCB3aG8gY2FuIHRlbGwgaGltPwpUaGUgbGFib3VyIG9mIHRoZSBmb29saXNoIHdlYXJpZXRoIGV2ZXJ5IG9uZSBvZiB0aGVtLCBiZWNhdXNlIGhlIGtub3dldGggbm90IGhvdyB0byBnbyB0byB0aGUgY2l0eS4KV29lIHRvIHRoZWUsIE8gbGFuZCwgd2hlbiB0aHkga2luZyBpcyBhIGNoaWxkLCBhbmQgdGh5IHByaW5jZXMgZWF0IGluIHRoZSBtb3JuaW5nIQpCbGVzc2VkIGFydCB0aG91LCBPIGxhbmQsIHdoZW4gdGh5IGtpbmcgaXMgdGhlIHNvbiBvZiBub2JsZXMsIGFuZCB0aHkgcHJpbmNlcyBlYXQgaW4gZHVlIHNlYXNvbiwgZm9yIHN0cmVuZ3RoLCBhbmQgbm90IGZvciBkcnVua2VubmVzcyEKQnkgbXVjaCBzbG90aGZ1bG5lc3MgdGhlIGJ1aWxkaW5nIGRlY2F5ZXRoOyBhbmQgdGhyb3VnaCBpZGxlbmVzcyBvZiB0aGUgaGFuZHMgdGhlIGhvdXNlIGRyb3BwZXRoIHRocm91Z2guCkEgZmVhc3QgaXMgbWFkZSBmb3IgbGF1Z2h0ZXIsIGFuZCB3aW5lIG1ha2V0aCBtZXJyeTogYnV0IG1vbmV5IGFuc3dlcmV0aCBhbGwgdGhpbmdzLgpDdXJzZSBub3QgdGhlIGtpbmcsIG5vIG5vdCBpbiB0aHkgdGhvdWdodDsgYW5kIGN1cnNlIG5vdCB0aGUgcmljaCBpbiB0aHkgYmVkY2hhbWJlcjogZm9yIGEgYmlyZCBvZiB0aGUgYWlyIHNoYWxsIGNhcnJ5IHRoZSB2b2ljZSwgYW5kIHRoYXQgd2hpY2ggaGF0aCB3aW5ncyBzaGFsbCB0ZWxsIHRoZSBtYXR0ZXIuCkNhc3QgdGh5IGJyZWFkIHVwb24gdGhlIHdhdGVyczogZm9yIHRob3Ugc2hhbHQgZmluZCBpdCBhZnRlciBtYW55IGRheXMuCkdpdmUgYSBwb3J0aW9uIHRvIHNldmVuLCBhbmQgYWxzbyB0byBlaWdodDsgZm9yIHRob3Uga25vd2VzdCBub3Qgd2hhdCBldmlsIHNoYWxsIGJlIHVwb24gdGhlIGVhcnRoLgpJZiB0aGUgY2xvdWRzIGJlIGZ1bGwgb2YgcmFpbiwgdGhleSBlbXB0eSB0aGVtc2VsdmVzIHVwb24gdGhlIGVhcnRoOiBhbmQgaWYgdGhlIHRyZWUgZmFsbCB0b3dhcmQgdGhlIHNvdXRoLCBvciB0b3dhcmQgdGhlIG5vcnRoLCBpbiB0aGUgcGxhY2Ugd2hlcmUgdGhlIHRyZWUgZmFsbGV0aCwgdGhlcmUgaXQgc2hhbGwgYmUuCkhlIHRoYXQgb2JzZXJ2ZXRoIHRoZSB3aW5kIHNoYWxsIG5vdCBzb3c7IGFuZCBoZSB0aGF0IHJlZ2FyZGV0aCB0aGUgY2xvdWRzIHNoYWxsIG5vdCByZWFwLgpBcyB0aG91IGtub3dlc3Qgbm90IHdoYXQgaXMgdGhlIHdheSBvZiB0aGUgc3Bpcml0LCBub3IgaG93IHRoZSBib25lcyBkbyBncm93IGluIHRoZSB3b21iIG9mIGhlciB0aGF0IGlzIHdpdGggY2hpbGQ6IGV2ZW4gc28gdGhvdSBrbm93ZXN0IG5vdCB0aGUgd29ya3Mgb2YgR29kIHdobyBtYWtldGggYWxsLgpJbiB0aGUgbW9ybmluZyBzb3cgdGh5IHNlZWQsIGFuZCBpbiB0aGUgZXZlbmluZyB3aXRoaG9sZCBub3QgdGhpbmUgaGFuZDogZm9yIHRob3Uga25vd2VzdCBub3Qgd2hldGhlciBzaGFsbCBwcm9zcGVyLCBlaXRoZXIgdGhpcyBvciB0aGF0LCBvciB3aGV0aGVyIHRoZXkgYm90aCBzaGFsbCBiZSBhbGlrZSBnb29kLgpUcnVseSB0aGUgbGlnaHQgaXMgc3dlZXQsIGFuZCBhIHBsZWFzYW50IHRoaW5nIGl0IGlzIGZvciB0aGUgZXllcyB0byBiZWhvbGQgdGhlIHN1bjoKQnV0IGlmIGEgbWFuIGxpdmUgbWFueSB5ZWFycywgYW5kIHJlam9pY2UgaW4gdGhlbSBhbGw7IHlldCBsZXQgaGltIHJlbWVtYmVyIHRoZSBkYXlzIG9mIGRhcmtuZXNzOyBmb3IgdGhleSBzaGFsbCBiZSBtYW55LiBBbGwgdGhhdCBjb21ldGggaXMgdmFuaXR5LgpSZWpvaWNlLCBPIHlvdW5nIG1hbiwgaW4gdGh5IHlvdXRoOyBhbmQgbGV0IHRoeSBoZWFydCBjaGVlciB0aGVlIGluIHRoZSBkYXlzIG9mIHRoeSB5b3V0aCwgYW5kIHdhbGsgaW4gdGhlIHdheXMgb2YgdGhpbmUgaGVhcnQsIGFuZCBpbiB0aGUgc2lnaHQgb2YgdGhpbmUgZXllczogYnV0IGtub3cgdGhvdSwgdGhhdCBmb3IgYWxsIHRoZXNlIHRoaW5ncyBHb2Qgd2lsbCBicmluZyB0aGVlIGludG8ganVkZ21lbnQuClRoZXJlZm9yZSByZW1vdmUgc29ycm93IGZyb20gdGh5IGhlYXJ0LCBhbmQgcHV0IGF3YXkgZXZpbCBmcm9tIHRoeSBmbGVzaDogZm9yIGNoaWxkaG9vZCBhbmQgeW91dGggYXJlIHZhbml0eS4KUmVtZW1iZXIgbm93IHRoeSBDcmVhdG9yIGluIHRoZSBkYXlzIG9mIHRoeSB5b3V0aCwgd2hpbGUgdGhlIGV2aWwgZGF5cyBjb21lIG5vdCwgbm9yIHRoZSB5ZWFycyBkcmF3IG5pZ2gsIHdoZW4gdGhvdSBzaGFsdCBzYXksIEkgaGF2ZSBubyBwbGVhc3VyZSBpbiB0aGVtOwpXaGlsZSB0aGUgc3VuLCBvciB0aGUgbGlnaHQsIG9yIHRoZSBtb29uLCBvciB0aGUgc3RhcnMsIGJlIG5vdCBkYXJrZW5lZCwgbm9yIHRoZSBjbG91ZHMgcmV0dXJuIGFmdGVyIHRoZSByYWluOgpJbiB0aGUgZGF5IHdoZW4gdGhlIGtlZXBlcnMgb2YgdGhlIGhvdXNlIHNoYWxsIHRyZW1ibGUsIGFuZCB0aGUgc3Ryb25nIG1lbiBzaGFsbCBib3cgdGhlbXNlbHZlcywgYW5kIHRoZSBncmluZGVycyBjZWFzZSBiZWNhdXNlIHRoZXkgYXJlIGZldywgYW5kIHRob3NlIHRoYXQgbG9vayBvdXQgb2YgdGhlIHdpbmRvd3MgYmUgZGFya2VuZWQsCkFuZCB0aGUgZG9vcnMgc2hhbGwgYmUgc2h1dCBpbiB0aGUgc3RyZWV0cywgd2hlbiB0aGUgc291bmQgb2YgdGhlIGdyaW5kaW5nIGlzIGxvdywgYW5kIGhlIHNoYWxsIHJpc2UgdXAgYXQgdGhlIHZvaWNlIG9mIHRoZSBiaXJkLCBhbmQgYWxsIHRoZSBkYXVnaHRlcnMgb2YgbXVzaWNrIHNoYWxsIGJlIGJyb3VnaHQgbG93OwpBbHNvIHdoZW4gdGhleSBzaGFsbCBiZSBhZnJhaWQgb2YgdGhhdCB3aGljaCBpcyBoaWdoLCBhbmQgZmVhcnMgc2hhbGwgYmUgaW4gdGhlIHdheSwgYW5kIHRoZSBhbG1vbmQgdHJlZSBzaGFsbCBmbG91cmlzaCwgYW5kIHRoZSBncmFzc2hvcHBlciBzaGFsbCBiZSBhIGJ1cmRlbiwgYW5kIGRlc2lyZSBzaGFsbCBmYWlsOiBiZWNhdXNlIG1hbiBnb2V0aCB0byBoaXMgbG9uZyBob21lLCBhbmQgdGhlIG1vdXJuZXJzIGdvIGFib3V0IHRoZSBzdHJlZXRzOgpPciBldmVyIHRoZSBzaWx2ZXIgY29yZCBiZSBsb29zZWQsIG9yIHRoZSBnb2xkZW4gYm93bCBiZSBicm9rZW4sIG9yIHRoZSBwaXRjaGVyIGJlIGJyb2tlbiBhdCB0aGUgZm91bnRhaW4sIG9yIHRoZSB3aGVlbCBicm9rZW4gYXQgdGhlIGNpc3Rlcm4uClRoZW4gc2hhbGwgdGhlIGR1c3QgcmV0dXJuIHRvIHRoZSBlYXJ0aCBhcyBpdCB3YXM6IGFuZCB0aGUgc3Bpcml0IHNoYWxsIHJldHVybiB1bnRvIEdvZCB3aG8gZ2F2ZSBpdC4KVmFuaXR5IG9mIHZhbml0aWVzLCBzYWl0aCB0aGUgcHJlYWNoZXI7IGFsbCBpcyB2YW5pdHkuCkFuZCBtb3Jlb3ZlciwgYmVjYXVzZSB0aGUgcHJlYWNoZXIgd2FzIHdpc2UsIGhlIHN0aWxsIHRhdWdodCB0aGUgcGVvcGxlIGtub3dsZWRnZTsgeWVhLCBoZSBnYXZlIGdvb2QgaGVlZCwgYW5kIHNvdWdodCBvdXQsIGFuZCBzZXQgaW4gb3JkZXIgbWFueSBwcm92ZXJicy4KVGhlIHByZWFjaGVyIHNvdWdodCB0byBmaW5kIG91dCBhY2NlcHRhYmxlIHdvcmRzOiBhbmQgdGhhdCB3aGljaCB3YXMgd3JpdHRlbiB3YXMgdXByaWdodCwgZXZlbiB3b3JkcyBvZiB0cnV0aC4KVGhlIHdvcmRzIG9mIHRoZSB3aXNlIGFyZSBhcyBnb2FkcywgYW5kIGFzIG5haWxzIGZhc3RlbmVkIGJ5IHRoZSBtYXN0ZXJzIG9mIGFzc2VtYmxpZXMsIHdoaWNoIGFyZSBnaXZlbiBmcm9tIG9uZSBzaGVwaGVyZC4KQW5kIGZ1cnRoZXIsIGJ5IHRoZXNlLCBteSBzb24sIGJlIGFkbW9uaXNoZWQ6IG9mIG1ha2luZyBtYW55IGJvb2tzIHRoZXJlIGlzIG5vIGVuZDsgYW5kIG11Y2ggc3R1ZHkgaXMgYSB3ZWFyaW5lc3Mgb2YgdGhlIGZsZXNoLgpMZXQgdXMgaGVhciB0aGUgY29uY2x1c2lvbiBvZiB0aGUgd2hvbGUgbWF0dGVyOiBGZWFyIEdvZCwgYW5kIGtlZXAgaGlzIGNvbW1hbmRtZW50czogZm9yIHRoaXMgaXMgdGhlIHdob2xlIGR1dHkgb2YgbWFuLgpGb3IgR29kIHNoYWxsIGJyaW5nIGV2ZXJ5IHdvcmsgaW50byBqdWRnbWVudCwgd2l0aCBldmVyeSBzZWNyZXQgdGhpbmcsIHdoZXRoZXIgaXQgYmUgZ29vZCwgb3Igd2hldGhlciBpdCBiZSBldmlsLgpUaGUgc29uZyBvZiBzb25ncywgd2hpY2ggaXMgU29sb21vbidzLgpMZXQgaGltIGtpc3MgbWUgd2l0aCB0aGUga2lzc2VzIG9mIGhpcyBtb3V0aDogZm9yIHRoeSBsb3ZlIGlzIGJldHRlciB0aGFuIHdpbmUuCkJlY2F1c2Ugb2YgdGhlIHNhdm91ciBvZiB0aHkgZ29vZCBvaW50bWVudHMgdGh5IG5hbWUgaXMgYXMgb2ludG1lbnQgcG91cmVkIGZvcnRoLCB0aGVyZWZvcmUgZG8gdGhlIHZpcmdpbnMgbG92ZSB0aGVlLgpEcmF3IG1lLCB3ZSB3aWxsIHJ1biBhZnRlciB0aGVlOiB0aGUga2luZyBoYXRoIGJyb3VnaHQgbWUgaW50byBoaXMgY2hhbWJlcnM6IHdlIHdpbGwgYmUgZ2xhZCBhbmQgcmVqb2ljZSBpbiB0aGVlLCB3ZSB3aWxsIHJlbWVtYmVyIHRoeSBsb3ZlIG1vcmUgdGhhbiB3aW5lOiB0aGUgdXByaWdodCBsb3ZlIHRoZWUuCkkgYW0gYmxhY2ssIGJ1dCBjb21lbHksIE8geWUgZGF1Z2h0ZXJzIG9mIEplcnVzYWxlbSwgYXMgdGhlIHRlbnRzIG9mIEtlZGFyLCBhcyB0aGUgY3VydGFpbnMgb2YgU29sb21vbi4KTG9vayBub3QgdXBvbiBtZSwgYmVjYXVzZSBJIGFtIGJsYWNrLCBiZWNhdXNlIHRoZSBzdW4gaGF0aCBsb29rZWQgdXBvbiBtZTogbXkgbW90aGVyJ3MgY2hpbGRyZW4gd2VyZSBhbmdyeSB3aXRoIG1lOyB0aGV5IG1hZGUgbWUgdGhlIGtlZXBlciBvZiB0aGUgdmluZXlhcmRzOyBidXQgbWluZSBvd24gdmluZXlhcmQgaGF2ZSBJIG5vdCBrZXB0LgpUZWxsIG1lLCBPIHRob3Ugd2hvbSBteSBzb3VsIGxvdmV0aCwgd2hlcmUgdGhvdSBmZWVkZXN0LCB3aGVyZSB0aG91IG1ha2VzdCB0aHkgZmxvY2sgdG8gcmVzdCBhdCBub29uOiBmb3Igd2h5IHNob3VsZCBJIGJlIGFzIG9uZSB0aGF0IHR1cm5ldGggYXNpZGUgYnkgdGhlIGZsb2NrcyBvZiB0aHkgY29tcGFuaW9ucz8KSWYgdGhvdSBrbm93IG5vdCwgTyB0aG91IGZhaXJlc3QgYW1vbmcgd29tZW4sIGdvIHRoeSB3YXkgZm9ydGggYnkgdGhlIGZvb3RzdGVwcyBvZiB0aGUgZmxvY2ssIGFuZCBmZWVkIHRoeSBraWRzIGJlc2lkZSB0aGUgc2hlcGhlcmRzJyB0ZW50cy4KSSBoYXZlIGNvbXBhcmVkIHRoZWUsIE8gbXkgbG92ZSwgdG8gYSBjb21wYW55IG9mIGhvcnNlcyBpbiBQaGFyYW9oJ3MgY2hhcmlvdHMuClRoeSBjaGVla3MgYXJlIGNvbWVseSB3aXRoIHJvd3Mgb2YgamV3ZWxzLCB0aHkgbmVjayB3aXRoIGNoYWlucyBvZiBnb2xkLgpXZSB3aWxsIG1ha2UgdGhlZSBib3JkZXJzIG9mIGdvbGQgd2l0aCBzdHVkcyBvZiBzaWx2ZXIuCldoaWxlIHRoZSBraW5nIHNpdHRldGggYXQgaGlzIHRhYmxlLCBteSBzcGlrZW5hcmQgc2VuZGV0aCBmb3J0aCB0aGUgc21lbGwgdGhlcmVvZi4KQSBidW5kbGUgb2YgbXlycmggaXMgbXkgd2VsbC1iZWxvdmVkIHVudG8gbWU7IGhlIHNoYWxsIGxpZSBhbGwgbmlnaHQgYmV0d2l4dCBteSBicmVhc3RzLgpNeSBiZWxvdmVkIGlzIHVudG8gbWUgYXMgYSBjbHVzdGVyIG9mIGNhbXBoaXJlIGluIHRoZSB2aW5leWFyZHMgb2YgRW5nZWRpLgpCZWhvbGQsIHRob3UgYXJ0IGZhaXIsIG15IGxvdmU7IGJlaG9sZCwgdGhvdSBhcnQgZmFpcjsgdGhvdSBoYXN0IGRvdmVzJyBleWVzLgpCZWhvbGQsIHRob3UgYXJ0IGZhaXIsIG15IGJlbG92ZWQsIHllYSwgcGxlYXNhbnQ6IGFsc28gb3VyIGJlZCBpcyBncmVlbi4KVGhlIGJlYW1zIG9mIG91ciBob3VzZSBhcmUgY2VkYXIsIGFuZCBvdXIgcmFmdGVycyBvZiBmaXIuCkkgYW0gdGhlIHJvc2Ugb2YgU2hhcm9uLCBhbmQgdGhlIGxpbHkgb2YgdGhlIHZhbGxleXMuCkFzIHRoZSBsaWx5IGFtb25nIHRob3Jucywgc28gaXMgbXkgbG92ZSBhbW9uZyB0aGUgZGF1Z2h0ZXJzLgpBcyB0aGUgYXBwbGUgdHJlZSBhbW9uZyB0aGUgdHJlZXMgb2YgdGhlIHdvb2QsIHNvIGlzIG15IGJlbG92ZWQgYW1vbmcgdGhlIHNvbnMuIEkgc2F0IGRvd24gdW5kZXIgaGlzIHNoYWRvdyB3aXRoIGdyZWF0IGRlbGlnaHQsIGFuZCBoaXMgZnJ1aXQgd2FzIHN3ZWV0IHRvIG15IHRhc3RlLgpIZSBicm91Z2h0IG1lIHRvIHRoZSBiYW5xdWV0aW5nIGhvdXNlLCBhbmQgaGlzIGJhbm5lciBvdmVyIG1lIHdhcyBsb3ZlLgpTdGF5IG1lIHdpdGggZmxhZ29ucywgY29tZm9ydCBtZSB3aXRoIGFwcGxlczogZm9yIEkgYW0gc2ljayBvZiBsb3ZlLgpIaXMgbGVmdCBoYW5kIGlzIHVuZGVyIG15IGhlYWQsIGFuZCBoaXMgcmlnaHQgaGFuZCBkb3RoIGVtYnJhY2UgbWUuCkkgY2hhcmdlIHlvdSwgTyB5ZSBkYXVnaHRlcnMgb2YgSmVydXNhbGVtLCBieSB0aGUgcm9lcywgYW5kIGJ5IHRoZSBoaW5kcyBvZiB0aGUgZmllbGQsIHRoYXQgeWUgc3RpciBub3QgdXAsIG5vciBhd2FrZSBteSBsb3ZlLCB0aWxsIGhlIHBsZWFzZS4KVGhlIHZvaWNlIG9mIG15IGJlbG92ZWQhIGJlaG9sZCwgaGUgY29tZXRoIGxlYXBpbmcgdXBvbiB0aGUgbW91bnRhaW5zLCBza2lwcGluZyB1cG9uIHRoZSBoaWxscy4KTXkgYmVsb3ZlZCBpcyBsaWtlIGEgcm9lIG9yIGEgeW91bmcgaGFydDogYmVob2xkLCBoZSBzdGFuZGV0aCBiZWhpbmQgb3VyIHdhbGwsIGhlIGxvb2tldGggZm9ydGggYXQgdGhlIHdpbmRvd3MsIHNoZXdpbmcgaGltc2VsZiB0aHJvdWdoIHRoZSBsYXR0aWNlLgpNeSBiZWxvdmVkIHNwYWtlLCBhbmQgc2FpZCB1bnRvIG1lLCBSaXNlIHVwLCBteSBsb3ZlLCBteSBmYWlyIG9uZSwgYW5kIGNvbWUgYXdheS4KRm9yLCBsbywgdGhlIHdpbnRlciBpcyBwYXN0LCB0aGUgcmFpbiBpcyBvdmVyIGFuZCBnb25lOwpUaGUgZmxvd2VycyBhcHBlYXIgb24gdGhlIGVhcnRoOyB0aGUgdGltZSBvZiB0aGUgc2luZ2luZyBvZiBiaXJkcyBpcyBjb21lLCBhbmQgdGhlIHZvaWNlIG9mIHRoZSB0dXJ0bGUgaXMgaGVhcmQgaW4gb3VyIGxhbmQ7ClRoZSBmaWcgdHJlZSBwdXR0ZXRoIGZvcnRoIGhlciBncmVlbiBmaWdzLCBhbmQgdGhlIHZpbmVzIHdpdGggdGhlIHRlbmRlciBncmFwZSBnaXZlIGEgZ29vZCBzbWVsbC4gQXJpc2UsIG15IGxvdmUsIG15IGZhaXIgb25lLCBhbmQgY29tZSBhd2F5LgpPIG15IGRvdmUsIHRoYXQgYXJ0IGluIHRoZSBjbGVmdHMgb2YgdGhlIHJvY2ssIGluIHRoZSBzZWNyZXQgcGxhY2VzIG9mIHRoZSBzdGFpcnMsIGxldCBtZSBzZWUgdGh5IGNvdW50ZW5hbmNlLCBsZXQgbWUgaGVhciB0aHkgdm9pY2U7IGZvciBzd2VldCBpcyB0aHkgdm9pY2UsIGFuZCB0aHkgY291bnRlbmFuY2UgaXMgY29tZWx5LgpUYWtlIHVzIHRoZSBmb3hlcywgdGhlIGxpdHRsZSBmb3hlcywgdGhhdCBzcG9pbCB0aGUgdmluZXM6IGZvciBvdXIgdmluZXMgaGF2ZSB0ZW5kZXIgZ3JhcGVzLgpNeSBiZWxvdmVkIGlzIG1pbmUsIGFuZCBJIGFtIGhpczogaGUgZmVlZGV0aCBhbW9uZyB0aGUgbGlsaWVzLgpVbnRpbCB0aGUgZGF5IGJyZWFrLCBhbmQgdGhlIHNoYWRvd3MgZmxlZSBhd2F5LCB0dXJuLCBteSBiZWxvdmVkLCBhbmQgYmUgdGhvdSBsaWtlIGEgcm9lIG9yIGEgeW91bmcgaGFydCB1cG9uIHRoZSBtb3VudGFpbnMgb2YgQmV0aGVyLgpCeSBuaWdodCBvbiBteSBiZWQgSSBzb3VnaHQgaGltIHdob20gbXkgc291bCBsb3ZldGg6IEkgc291Z2h0IGhpbSwgYnV0IEkgZm91bmQgaGltIG5vdC4KSSB3aWxsIHJpc2Ugbm93LCBhbmQgZ28gYWJvdXQgdGhlIGNpdHkgaW4gdGhlIHN0cmVldHMsIGFuZCBpbiB0aGUgYnJvYWQgd2F5cyBJIHdpbGwgc2VlayBoaW0gd2hvbSBteSBzb3VsIGxvdmV0aDogSSBzb3VnaHQgaGltLCBidXQgSSBmb3VuZCBoaW0gbm90LgpUaGUgd2F0Y2htZW4gdGhhdCBnbyBhYm91dCB0aGUgY2l0eSBmb3VuZCBtZTogdG8gd2hvbSBJIHNhaWQsIFNhdyB5ZSBoaW0gd2hvbSBteSBzb3VsIGxvdmV0aD8KSXQgd2FzIGJ1dCBhIGxpdHRsZSB0aGF0IEkgcGFzc2VkIGZyb20gdGhlbSwgYnV0IEkgZm91bmQgaGltIHdob20gbXkgc291bCBsb3ZldGg6IEkgaGVsZCBoaW0sIGFuZCB3b3VsZCBub3QgbGV0IGhpbSBnbywgdW50aWwgSSBoYWQgYnJvdWdodCBoaW0gaW50byBteSBtb3RoZXIncyBob3VzZSwgYW5kIGludG8gdGhlIGNoYW1iZXIgb2YgaGVyIHRoYXQgY29uY2VpdmVkIG1lLgpJIGNoYXJnZSB5b3UsIE8geWUgZGF1Z2h0ZXJzIG9mIEplcnVzYWxlbSwgYnkgdGhlIHJvZXMsIGFuZCBieSB0aGUgaGluZHMgb2YgdGhlIGZpZWxkLCB0aGF0IHllIHN0aXIgbm90IHVwLCBub3IgYXdha2UgbXkgbG92ZSwgdGlsbCBoZSBwbGVhc2UuCldobyBpcyB0aGlzIHRoYXQgY29tZXRoIG91dCBvZiB0aGUgd2lsZGVybmVzcyBsaWtlIHBpbGxhcnMgb2Ygc21va2UsIHBlcmZ1bWVkIHdpdGggbXlycmggYW5kIGZyYW5raW5jZW5zZSwgd2l0aCBhbGwgcG93ZGVycyBvZiB0aGUgbWVyY2hhbnQ/CkJlaG9sZCBoaXMgYmVkLCB3aGljaCBpcyBTb2xvbW9uJ3M7IHRocmVlc2NvcmUgdmFsaWFudCBtZW4gYXJlIGFib3V0IGl0LCBvZiB0aGUgdmFsaWFudCBvZiBJc3JhZWwuClRoZXkgYWxsIGhvbGQgc3dvcmRzLCBiZWluZyBleHBlcnQgaW4gd2FyOiBldmVyeSBtYW4gaGF0aCBoaXMgc3dvcmQgdXBvbiBoaXMgdGhpZ2ggYmVjYXVzZSBvZiBmZWFyIGluIHRoZSBuaWdodC4KS2luZyBTb2xvbW9uIG1hZGUgaGltc2VsZiBhIGNoYXJpb3Qgb2YgdGhlIHdvb2Qgb2YgTGViYW5vbi4KSGUgbWFkZSB0aGUgcGlsbGFycyB0aGVyZW9mIG9mIHNpbHZlciwgdGhlIGJvdHRvbSB0aGVyZW9mIG9mIGdvbGQsIHRoZSBjb3ZlcmluZyBvZiBpdCBvZiBwdXJwbGUsIHRoZSBtaWRzdCB0aGVyZW9mIGJlaW5nIHBhdmVkIHdpdGggbG92ZSwgZm9yIHRoZSBkYXVnaHRlcnMgb2YgSmVydXNhbGVtLgpHbyBmb3J0aCwgTyB5ZSBkYXVnaHRlcnMgb2YgWmlvbiwgYW5kIGJlaG9sZCBraW5nIFNvbG9tb24gd2l0aCB0aGUgY3Jvd24gd2hlcmV3aXRoIGhpcyBtb3RoZXIgY3Jvd25lZCBoaW0gaW4gdGhlIGRheSBvZiBoaXMgZXNwb3VzYWxzLCBhbmQgaW4gdGhlIGRheSBvZiB0aGUgZ2xhZG5lc3Mgb2YgaGlzIGhlYXJ0LgpCZWhvbGQsIHRob3UgYXJ0IGZhaXIsIG15IGxvdmU7IGJlaG9sZCwgdGhvdSBhcnQgZmFpcjsgdGhvdSBoYXN0IGRvdmVzJyBleWVzIHdpdGhpbiB0aHkgbG9ja3M6IHRoeSBoYWlyIGlzIGFzIGEgZmxvY2sgb2YgZ29hdHMsIHRoYXQgYXBwZWFyIGZyb20gbW91bnQgR2lsZWFkLgpUaHkgdGVldGggYXJlIGxpa2UgYSBmbG9jayBvZiBzaGVlcCB0aGF0IGFyZSBldmVuIHNob3JuLCB3aGljaCBjYW1lIHVwIGZyb20gdGhlIHdhc2hpbmc7IHdoZXJlb2YgZXZlcnkgb25lIGJlYXIgdHdpbnMsIGFuZCBub25lIGlzIGJhcnJlbiBhbW9uZyB0aGVtLgpUaHkgbGlwcyBhcmUgbGlrZSBhIHRocmVhZCBvZiBzY2FybGV0LCBhbmQgdGh5IHNwZWVjaCBpcyBjb21lbHk6IHRoeSB0ZW1wbGVzIGFyZSBsaWtlIGEgcGllY2Ugb2YgYSBwb21lZ3JhbmF0ZSB3aXRoaW4gdGh5IGxvY2tzLgpUaHkgbmVjayBpcyBsaWtlIHRoZSB0b3dlciBvZiBEYXZpZCBidWlsZGVkIGZvciBhbiBhcm1vdXJ5LCB3aGVyZW9uIHRoZXJlIGhhbmcgYSB0aG91c2FuZCBidWNrbGVycywgYWxsIHNoaWVsZHMgb2YgbWlnaHR5IG1lbi4KVGh5IHR3byBicmVhc3RzIGFyZSBsaWtlIHR3byB5b3VuZyByb2VzIHRoYXQgYXJlIHR3aW5zLCB3aGljaCBmZWVkIGFtb25nIHRoZSBsaWxpZXMuClVudGlsIHRoZSBkYXkgYnJlYWssIGFuZCB0aGUgc2hhZG93cyBmbGVlIGF3YXksIEkgd2lsbCBnZXQgbWUgdG8gdGhlIG1vdW50YWluIG9mIG15cnJoLCBhbmQgdG8gdGhlIGhpbGwgb2YgZnJhbmtpbmNlbnNlLgpUaG91IGFydCBhbGwgZmFpciwgbXkgbG92ZTsgdGhlcmUgaXMgbm8gc3BvdCBpbiB0aGVlLgpDb21lIHdpdGggbWUgZnJvbSBMZWJhbm9uLCBteSBzcG91c2UsIHdpdGggbWUgZnJvbSBMZWJhbm9uOiBsb29rIGZyb20gdGhlIHRvcCBvZiBBbWFuYSwgZnJvbSB0aGUgdG9wIG9mIFNoZW5pciBhbmQgSGVybW9uLCBmcm9tIHRoZSBsaW9ucycgZGVucywgZnJvbSB0aGUgbW91bnRhaW5zIG9mIHRoZSBsZW9wYXJkcy4KVGhvdSBoYXN0IHJhdmlzaGVkIG15IGhlYXJ0LCBteSBzaXN0ZXIsIG15IHNwb3VzZTsgdGhvdSBoYXN0IHJhdmlzaGVkIG15IGhlYXJ0IHdpdGggb25lIG9mIHRoaW5lIGV5ZXMsIHdpdGggb25lIGNoYWluIG9mIHRoeSBuZWNrLgpIb3cgZmFpciBpcyB0aHkgbG92ZSwgbXkgc2lzdGVyLCBteSBzcG91c2UhIGhvdyBtdWNoIGJldHRlciBpcyB0aHkgbG92ZSB0aGFuIHdpbmUhIGFuZCB0aGUgc21lbGwgb2YgdGhpbmUgb2ludG1lbnRzIHRoYW4gYWxsIHNwaWNlcyEKVGh5IGxpcHMsIE8gbXkgc3BvdXNlLCBkcm9wIGFzIHRoZSBob25leWNvbWI6IGhvbmV5IGFuZCBtaWxrIGFyZSB1bmRlciB0aHkgdG9uZ3VlOyBhbmQgdGhlIHNtZWxsIG9mIHRoeSBnYXJtZW50cyBpcyBsaWtlIHRoZSBzbWVsbCBvZiBMZWJhbm9uLgpBIGdhcmRlbiBpbmNsb3NlZCBpcyBteSBzaXN0ZXIsIG15IHNwb3VzZTsgYSBzcHJpbmcgc2h1dCB1cCwgYSBmb3VudGFpbiBzZWFsZWQuClRoeSBwbGFudHMgYXJlIGFuIG9yY2hhcmQgb2YgcG9tZWdyYW5hdGVzLCB3aXRoIHBsZWFzYW50IGZydWl0czsgY2FtcGhpcmUsIHdpdGggc3Bpa2VuYXJkLApTcGlrZW5hcmQgYW5kIHNhZmZyb247IGNhbGFtdXMgYW5kIGNpbm5hbW9uLCB3aXRoIGFsbCB0cmVlcyBvZiBmcmFua2luY2Vuc2U7IG15cnJoIGFuZCBhbG9lcywgd2l0aCBhbGwgdGhlIGNoaWVmIHNwaWNlczoKQSBmb3VudGFpbiBvZiBnYXJkZW5zLCBhIHdlbGwgb2YgbGl2aW5nIHdhdGVycywgYW5kIHN0cmVhbXMgZnJvbSBMZWJhbm9uLgpBd2FrZSwgTyBub3J0aCB3aW5kOyBhbmQgY29tZSwgdGhvdSBzb3V0aDsgYmxvdyB1cG9uIG15IGdhcmRlbiwgdGhhdCB0aGUgc3BpY2VzIHRoZXJlb2YgbWF5IGZsb3cgb3V0LiBMZXQgbXkgYmVsb3ZlZCBjb21lIGludG8gaGlzIGdhcmRlbiwgYW5kIGVhdCBoaXMgcGxlYXNhbnQgZnJ1aXRzLgpJIGFtIGNvbWUgaW50byBteSBnYXJkZW4sIG15IHNpc3RlciwgbXkgc3BvdXNlOiBJIGhhdmUgZ2F0aGVyZWQgbXkgbXlycmggd2l0aCBteSBzcGljZTsgSSBoYXZlIGVhdGVuIG15IGhvbmV5Y29tYiB3aXRoIG15IGhvbmV5OyBJIGhhdmUgZHJ1bmsgbXkgd2luZSB3aXRoIG15IG1pbGs6IGVhdCwgTyBmcmllbmRzOyBkcmluaywgeWVhLCBkcmluayBhYnVuZGFudGx5LCBPIGJlbG92ZWQuCkkgc2xlZXAsIGJ1dCBteSBoZWFydCB3YWtldGg6IGl0IGlzIHRoZSB2b2ljZSBvZiBteSBiZWxvdmVkIHRoYXQga25vY2tldGgsIHNheWluZywgT3BlbiB0byBtZSwgbXkgc2lzdGVyLCBteSBsb3ZlLCBteSBkb3ZlLCBteSB1bmRlZmlsZWQ6IGZvciBteSBoZWFkIGlzIGZpbGxlZCB3aXRoIGRldywgYW5kIG15IGxvY2tzIHdpdGggdGhlIGRyb3BzIG9mIHRoZSBuaWdodC4KSSBoYXZlIHB1dCBvZmYgbXkgY29hdDsgaG93IHNoYWxsIEkgcHV0IGl0IG9uPyBJIGhhdmUgd2FzaGVkIG15IGZlZXQ7IGhvdyBzaGFsbCBJIGRlZmlsZSB0aGVtPwpNeSBiZWxvdmVkIHB1dCBpbiBoaXMgaGFuZCBieSB0aGUgaG9sZSBvZiB0aGUgZG9vciwgYW5kIG15IGJvd2VscyB3ZXJlIG1vdmVkIGZvciBoaW0uCkkgcm9zZSB1cCB0byBvcGVuIHRvIG15IGJlbG92ZWQ7IGFuZCBteSBoYW5kcyBkcm9wcGVkIHdpdGggbXlycmgsIGFuZCBteSBmaW5nZXJzIHdpdGggc3dlZXQgc21lbGxpbmcgbXlycmgsIHVwb24gdGhlIGhhbmRsZXMgb2YgdGhlIGxvY2suCkkgb3BlbmVkIHRvIG15IGJlbG92ZWQ7IGJ1dCBteSBiZWxvdmVkIGhhZCB3aXRoZHJhd24gaGltc2VsZiwgYW5kIHdhcyBnb25lOiBteSBzb3VsIGZhaWxlZCB3aGVuIGhlIHNwYWtlOiBJIHNvdWdodCBoaW0sIGJ1dCBJIGNvdWxkIG5vdCBmaW5kIGhpbTsgSSBjYWxsZWQgaGltLCBidXQgaGUgZ2F2ZSBtZSBubyBhbnN3ZXIuClRoZSB3YXRjaG1lbiB0aGF0IHdlbnQgYWJvdXQgdGhlIGNpdHkgZm91bmQgbWUsIHRoZXkgc21vdGUgbWUsIHRoZXkgd291bmRlZCBtZTsgdGhlIGtlZXBlcnMgb2YgdGhlIHdhbGxzIHRvb2sgYXdheSBteSB2ZWlsIGZyb20gbWUuCkkgY2hhcmdlIHlvdSwgTyBkYXVnaHRlcnMgb2YgSmVydXNhbGVtLCBpZiB5ZSBmaW5kIG15IGJlbG92ZWQsIHRoYXQgeWUgdGVsbCBoaW0sIHRoYXQgSSBhbSBzaWNrIG9mIGxvdmUuCldoYXQgaXMgdGh5IGJlbG92ZWQgbW9yZSB0aGFuIGFub3RoZXIgYmVsb3ZlZCwgTyB0aG91IGZhaXJlc3QgYW1vbmcgd29tZW4/IHdoYXQgaXMgdGh5IGJlbG92ZWQgbW9yZSB0aGFuIGFub3RoZXIgYmVsb3ZlZCwgdGhhdCB0aG91IGRvc3Qgc28gY2hhcmdlIHVzPwpNeSBiZWxvdmVkIGlzIHdoaXRlIGFuZCBydWRkeSwgdGhlIGNoaWVmZXN0IGFtb25nIHRlbiB0aG91c2FuZC4KSGlzIGhlYWQgaXMgYXMgdGhlIG1vc3QgZmluZSBnb2xkLCBoaXMgbG9ja3MgYXJlIGJ1c2h5LCBhbmQgYmxhY2sgYXMgYSByYXZlbi4KSGlzIGV5ZXMgYXJlIGFzIHRoZSBleWVzIG9mIGRvdmVzIGJ5IHRoZSByaXZlcnMgb2Ygd2F0ZXJzLCB3YXNoZWQgd2l0aCBtaWxrLCBhbmQgZml0bHkgc2V0LgpIaXMgY2hlZWtzIGFyZSBhcyBhIGJlZCBvZiBzcGljZXMsIGFzIHN3ZWV0IGZsb3dlcnM6IGhpcyBsaXBzIGxpa2UgbGlsaWVzLCBkcm9wcGluZyBzd2VldCBzbWVsbGluZyBteXJyaC4KSGlzIGhhbmRzIGFyZSBhcyBnb2xkIHJpbmdzIHNldCB3aXRoIHRoZSBiZXJ5bDogaGlzIGJlbGx5IGlzIGFzIGJyaWdodCBpdm9yeSBvdmVybGFpZCB3aXRoIHNhcHBoaXJlcy4KSGlzIGxlZ3MgYXJlIGFzIHBpbGxhcnMgb2YgbWFyYmxlLCBzZXQgdXBvbiBzb2NrZXRzIG9mIGZpbmUgZ29sZDogaGlzIGNvdW50ZW5hbmNlIGlzIGFzIExlYmFub24sIGV4Y2VsbGVudCBhcyB0aGUgY2VkYXJzLgpIaXMgbW91dGggaXMgbW9zdCBzd2VldDogeWVhLCBoZSBpcyBhbHRvZ2V0aGVyIGxvdmVseS4gVGhpcyBpcyBteSBiZWxvdmVkLCBhbmQgdGhpcyBpcyBteSBmcmllbmQsIE8gZGF1Z2h0ZXJzIG9mIEplcnVzYWxlbS4KV2hpdGhlciBpcyB0aHkgYmVsb3ZlZCBnb25lLCBPIHRob3UgZmFpcmVzdCBhbW9uZyB3b21lbj8gd2hpdGhlciBpcyB0aHkgYmVsb3ZlZCB0dXJuZWQgYXNpZGU/IHRoYXQgd2UgbWF5IHNlZWsgaGltIHdpdGggdGhlZS4KTXkgYmVsb3ZlZCBpcyBnb25lIGRvd24gaW50byBoaXMgZ2FyZGVuLCB0byB0aGUgYmVkcyBvZiBzcGljZXMsIHRvIGZlZWQgaW4gdGhlIGdhcmRlbnMsIGFuZCB0byBnYXRoZXIgbGlsaWVzLgpJIGFtIG15IGJlbG92ZWQncywgYW5kIG15IGJlbG92ZWQgaXMgbWluZTogaGUgZmVlZGV0aCBhbW9uZyB0aGUgbGlsaWVzLgpUaG91IGFydCBiZWF1dGlmdWwsIE8gbXkgbG92ZSwgYXMgVGlyemFoLCBjb21lbHkgYXMgSmVydXNhbGVtLCB0ZXJyaWJsZSBhcyBhbiBhcm15IHdpdGggYmFubmVycy4KVHVybiBhd2F5IHRoaW5lIGV5ZXMgZnJvbSBtZSwgZm9yIHRoZXkgaGF2ZSBvdmVyY29tZSBtZTogdGh5IGhhaXIgaXMgYXMgYSBmbG9jayBvZiBnb2F0cyB0aGF0IGFwcGVhciBmcm9tIEdpbGVhZC4KVGh5IHRlZXRoIGFyZSBhcyBhIGZsb2NrIG9mIHNoZWVwIHdoaWNoIGdvIHVwIGZyb20gdGhlIHdhc2hpbmcsIHdoZXJlb2YgZXZlcnkgb25lIGJlYXJldGggdHdpbnMsIGFuZCB0aGVyZSBpcyBub3Qgb25lIGJhcnJlbiBhbW9uZyB0aGVtLgpBcyBhIHBpZWNlIG9mIGEgcG9tZWdyYW5hdGUgYXJlIHRoeSB0ZW1wbGVzIHdpdGhpbiB0aHkgbG9ja3MuClRoZXJlIGFyZSB0aHJlZXNjb3JlIHF1ZWVucywgYW5kIGZvdXJzY29yZSBjb25jdWJpbmVzLCBhbmQgdmlyZ2lucyB3aXRob3V0IG51bWJlci4KTXkgZG92ZSwgbXkgdW5kZWZpbGVkIGlzIGJ1dCBvbmU7IHNoZSBpcyB0aGUgb25seSBvbmUgb2YgaGVyIG1vdGhlciwgc2hlIGlzIHRoZSBjaG9pY2Ugb25lIG9mIGhlciB0aGF0IGJhcmUgaGVyLiBUaGUgZGF1Z2h0ZXJzIHNhdyBoZXIsIGFuZCBibGVzc2VkIGhlcjsgeWVhLCB0aGUgcXVlZW5zIGFuZCB0aGUgY29uY3ViaW5lcywgYW5kIHRoZXkgcHJhaXNlZCBoZXIuCldobyBpcyBzaGUgdGhhdCBsb29rZXRoIGZvcnRoIGFzIHRoZSBtb3JuaW5nLCBmYWlyIGFzIHRoZSBtb29uLCBjbGVhciBhcyB0aGUgc3VuLCBhbmQgdGVycmlibGUgYXMgYW4gYXJteSB3aXRoIGJhbm5lcnM/Ckkgd2VudCBkb3duIGludG8gdGhlIGdhcmRlbiBvZiBudXRzIHRvIHNlZSB0aGUgZnJ1aXRzIG9mIHRoZSB2YWxsZXksIGFuZCB0byBzZWUgd2hldGhlciB0aGUgdmluZSBmbG91cmlzaGVkIGFuZCB0aGUgcG9tZWdyYW5hdGVzIGJ1ZGRlZC4KT3IgZXZlciBJIHdhcyBhd2FyZSwgbXkgc291bCBtYWRlIG1lIGxpa2UgdGhlIGNoYXJpb3RzIG9mIEFtbWluYWRpYi4KUmV0dXJuLCByZXR1cm4sIE8gU2h1bGFtaXRlOyByZXR1cm4sIHJldHVybiwgdGhhdCB3ZSBtYXkgbG9vayB1cG9uIHRoZWUuIFdoYXQgd2lsbCB5ZSBzZWUgaW4gdGhlIFNodWxhbWl0ZT8gQXMgaXQgd2VyZSB0aGUgY29tcGFueSBvZiB0d28gYXJtaWVzLgpIb3cgYmVhdXRpZnVsIGFyZSB0aHkgZmVldCB3aXRoIHNob2VzLCBPIHByaW5jZSdzIGRhdWdodGVyISB0aGUgam9pbnRzIG9mIHRoeSB0aGlnaHMgYXJlIGxpa2UgamV3ZWxzLCB0aGUgd29yayBvZiB0aGUgaGFuZHMgb2YgYSBjdW5uaW5nIHdvcmttYW4uClRoeSBuYXZlbCBpcyBsaWtlIGEgcm91bmQgZ29ibGV0LCB3aGljaCB3YW50ZXRoIG5vdCBsaXF1b3I6IHRoeSBiZWxseSBpcyBsaWtlIGFuIGhlYXAgb2Ygd2hlYXQgc2V0IGFib3V0IHdpdGggbGlsaWVzLgpUaHkgdHdvIGJyZWFzdHMgYXJlIGxpa2UgdHdvIHlvdW5nIHJvZXMgdGhhdCBhcmUgdHdpbnMuClRoeSBuZWNrIGlzIGFzIGEgdG93ZXIgb2YgaXZvcnk7IHRoaW5lIGV5ZXMgbGlrZSB0aGUgZmlzaHBvb2xzIGluIEhlc2hib24sIGJ5IHRoZSBnYXRlIG9mIEJhdGhyYWJiaW06IHRoeSBub3NlIGlzIGFzIHRoZSB0b3dlciBvZiBMZWJhbm9uIHdoaWNoIGxvb2tldGggdG93YXJkIERhbWFzY3VzLgpUaGluZSBoZWFkIHVwb24gdGhlZSBpcyBsaWtlIENhcm1lbCwgYW5kIHRoZSBoYWlyIG9mIHRoaW5lIGhlYWQgbGlrZSBwdXJwbGU7IHRoZSBraW5nIGlzIGhlbGQgaW4gdGhlIGdhbGxlcmllcy4KSG93IGZhaXIgYW5kIGhvdyBwbGVhc2FudCBhcnQgdGhvdSwgTyBsb3ZlLCBmb3IgZGVsaWdodHMhClRoaXMgdGh5IHN0YXR1cmUgaXMgbGlrZSB0byBhIHBhbG0gdHJlZSwgYW5kIHRoeSBicmVhc3RzIHRvIGNsdXN0ZXJzIG9mIGdyYXBlcy4KSSBzYWlkLCBJIHdpbGwgZ28gdXAgdG8gdGhlIHBhbG0gdHJlZSwgSSB3aWxsIHRha2UgaG9sZCBvZiB0aGUgYm91Z2hzIHRoZXJlb2Y6IG5vdyBhbHNvIHRoeSBicmVhc3RzIHNoYWxsIGJlIGFzIGNsdXN0ZXJzIG9mIHRoZSB2aW5lLCBhbmQgdGhlIHNtZWxsIG9mIHRoeSBub3NlIGxpa2UgYXBwbGVzOwpBbmQgdGhlIHJvb2Ygb2YgdGh5IG1vdXRoIGxpa2UgdGhlIGJlc3Qgd2luZSBmb3IgbXkgYmVsb3ZlZCwgdGhhdCBnb2V0aCBkb3duIHN3ZWV0bHksIGNhdXNpbmcgdGhlIGxpcHMgb2YgdGhvc2UgdGhhdCBhcmUgYXNsZWVwIHRvIHNwZWFrLgpJIGFtIG15IGJlbG92ZWQncywgYW5kIGhpcyBkZXNpcmUgaXMgdG93YXJkIG1lLgpDb21lLCBteSBiZWxvdmVkLCBsZXQgdXMgZ28gZm9ydGggaW50byB0aGUgZmllbGQ7IGxldCB1cyBsb2RnZSBpbiB0aGUgdmlsbGFnZXMuCkxldCB1cyBnZXQgdXAgZWFybHkgdG8gdGhlIHZpbmV5YXJkczsgbGV0IHVzIHNlZSBpZiB0aGUgdmluZSBmbG91cmlzaCwgd2hldGhlciB0aGUgdGVuZGVyIGdyYXBlIGFwcGVhciwgYW5kIHRoZSBwb21lZ3JhbmF0ZXMgYnVkIGZvcnRoOiB0aGVyZSB3aWxsIEkgZ2l2ZSB0aGVlIG15IGxvdmVzLgpUaGUgbWFuZHJha2VzIGdpdmUgYSBzbWVsbCwgYW5kIGF0IG91ciBnYXRlcyBhcmUgYWxsIG1hbm5lciBvZiBwbGVhc2FudCBmcnVpdHMsIG5ldyBhbmQgb2xkLCB3aGljaCBJIGhhdmUgbGFpZCB1cCBmb3IgdGhlZSwgTyBteSBiZWxvdmVkLgpPIHRoYXQgdGhvdSB3ZXJ0IGFzIG15IGJyb3RoZXIsIHRoYXQgc3Vja2VkIHRoZSBicmVhc3RzIG9mIG15IG1vdGhlciEgd2hlbiBJIHNob3VsZCBmaW5kIHRoZWUgd2l0aG91dCwgSSB3b3VsZCBraXNzIHRoZWU7IHllYSwgSSBzaG91bGQgbm90IGJlIGRlc3Bpc2VkLgpJIHdvdWxkIGxlYWQgdGhlZSwgYW5kIGJyaW5nIHRoZWUgaW50byBteSBtb3RoZXIncyBob3VzZSwgd2hvIHdvdWxkIGluc3RydWN0IG1lOiBJIHdvdWxkIGNhdXNlIHRoZWUgdG8gZHJpbmsgb2Ygc3BpY2VkIHdpbmUgb2YgdGhlIGp1aWNlIG9mIG15IHBvbWVncmFuYXRlLgpIaXMgbGVmdCBoYW5kIHNob3VsZCBiZSB1bmRlciBteSBoZWFkLCBhbmQgaGlzIHJpZ2h0IGhhbmQgc2hvdWxkIGVtYnJhY2UgbWUuCkkgY2hhcmdlIHlvdSwgTyBkYXVnaHRlcnMgb2YgSmVydXNhbGVtLCB0aGF0IHllIHN0aXIgbm90IHVwLCBub3IgYXdha2UgbXkgbG92ZSwgdW50aWwgaGUgcGxlYXNlLgpXaG8gaXMgdGhpcyB0aGF0IGNvbWV0aCB1cCBmcm9tIHRoZSB3aWxkZXJuZXNzLCBsZWFuaW5nIHVwb24gaGVyIGJlbG92ZWQ/IEkgcmFpc2VkIHRoZWUgdXAgdW5kZXIgdGhlIGFwcGxlIHRyZWU6IHRoZXJlIHRoeSBtb3RoZXIgYnJvdWdodCB0aGVlIGZvcnRoOiB0aGVyZSBzaGUgYnJvdWdodCB0aGVlIGZvcnRoIHRoYXQgYmFyZSB0aGVlLgpTZXQgbWUgYXMgYSBzZWFsIHVwb24gdGhpbmUgaGVhcnQsIGFzIGEgc2VhbCB1cG9uIHRoaW5lIGFybTogZm9yIGxvdmUgaXMgc3Ryb25nIGFzIGRlYXRoOyBqZWFsb3VzeSBpcyBjcnVlbCBhcyB0aGUgZ3JhdmU6IHRoZSBjb2FscyB0aGVyZW9mIGFyZSBjb2FscyBvZiBmaXJlLCB3aGljaCBoYXRoIGEgbW9zdCB2ZWhlbWVudCBmbGFtZS4KTWFueSB3YXRlcnMgY2Fubm90IHF1ZW5jaCBsb3ZlLCBuZWl0aGVyIGNhbiB0aGUgZmxvb2RzIGRyb3duIGl0OiBpZiBhIG1hbiB3b3VsZCBnaXZlIGFsbCB0aGUgc3Vic3RhbmNlIG9mIGhpcyBob3VzZSBmb3IgbG92ZSwgaXQgd291bGQgdXR0ZXJseSBiZSBjb250ZW1uZWQuCldlIGhhdmUgYSBsaXR0bGUgc2lzdGVyLCBhbmQgc2hlIGhhdGggbm8gYnJlYXN0czogd2hhdCBzaGFsbCB3ZSBkbyBmb3Igb3VyIHNpc3RlciBpbiB0aGUgZGF5IHdoZW4gc2hlIHNoYWxsIGJlIHNwb2tlbiBmb3I/CklmIHNoZSBiZSBhIHdhbGwsIHdlIHdpbGwgYnVpbGQgdXBvbiBoZXIgYSBwYWxhY2Ugb2Ygc2lsdmVyOiBhbmQgaWYgc2hlIGJlIGEgZG9vciwgd2Ugd2lsbCBpbmNsb3NlIGhlciB3aXRoIGJvYXJkcyBvZiBjZWRhci4KSSBhbSBhIHdhbGwsIGFuZCBteSBicmVhc3RzIGxpa2UgdG93ZXJzOiB0aGVuIHdhcyBJIGluIGhpcyBleWVzIGFzIG9uZSB0aGF0IGZvdW5kIGZhdm91ci4KU29sb21vbiBoYWQgYSB2aW5leWFyZCBhdCBCYWFsaGFtb247IGhlIGxldCBvdXQgdGhlIHZpbmV5YXJkIHVudG8ga2VlcGVyczsgZXZlcnkgb25lIGZvciB0aGUgZnJ1aXQgdGhlcmVvZiB3YXMgdG8gYnJpbmcgYSB0aG91c2FuZCBwaWVjZXMgb2Ygc2lsdmVyLgpNeSB2aW5leWFyZCwgd2hpY2ggaXMgbWluZSwgaXMgYmVmb3JlIG1lOiB0aG91LCBPIFNvbG9tb24sIG11c3QgaGF2ZSBhIHRob3VzYW5kLCBhbmQgdGhvc2UgdGhhdCBrZWVwIHRoZSBmcnVpdCB0aGVyZW9mIHR3byBodW5kcmVkLgpUaG91IHRoYXQgZHdlbGxlc3QgaW4gdGhlIGdhcmRlbnMsIHRoZSBjb21wYW5pb25zIGhlYXJrZW4gdG8gdGh5IHZvaWNlOiBjYXVzZSBtZSB0byBoZWFyIGl0LgpNYWtlIGhhc3RlLCBteSBiZWxvdmVkLCBhbmQgYmUgdGhvdSBsaWtlIHRvIGEgcm9lIG9yIHRvIGEgeW91bmcgaGFydCB1cG9uIHRoZSBtb3VudGFpbnMgb2Ygc3BpY2VzLgpUaGUgdmlzaW9uIG9mIElzYWlhaCB0aGUgc29uIG9mIEFtb3osIHdoaWNoIGhlIHNhdyBjb25jZXJuaW5nIEp1ZGFoIGFuZCBKZXJ1c2FsZW0gaW4gdGhlIGRheXMgb2YgVXp6aWFoLCBKb3RoYW0sIEFoYXosIGFuZCBIZXpla2lhaCwga2luZ3Mgb2YgSnVkYWguCkhlYXIsIE8gaGVhdmVucywgYW5kIGdpdmUgZWFyLCBPIGVhcnRoOiBmb3IgdGhlIExPUkQgaGF0aCBzcG9rZW4sIEkgaGF2ZSBub3VyaXNoZWQgYW5kIGJyb3VnaHQgdXAgY2hpbGRyZW4sIGFuZCB0aGV5IGhhdmUgcmViZWxsZWQgYWdhaW5zdCBtZS4KVGhlIG94IGtub3dldGggaGlzIG93bmVyLCBhbmQgdGhlIGFzcyBoaXMgbWFzdGVyJ3MgY3JpYjogYnV0IElzcmFlbCBkb3RoIG5vdCBrbm93LCBteSBwZW9wbGUgZG90aCBub3QgY29uc2lkZXIuCkFoIHNpbmZ1bCBuYXRpb24sIGEgcGVvcGxlIGxhZGVuIHdpdGggaW5pcXVpdHksIGEgc2VlZCBvZiBldmlsZG9lcnMsIGNoaWxkcmVuIHRoYXQgYXJlIGNvcnJ1cHRlcnM6IHRoZXkgaGF2ZSBmb3JzYWtlbiB0aGUgTE9SRCwgdGhleSBoYXZlIHByb3Zva2VkIHRoZSBIb2x5IE9uZSBvZiBJc3JhZWwgdW50byBhbmdlciwgdGhleSBhcmUgZ29uZSBhd2F5IGJhY2t3YXJkLgpXaHkgc2hvdWxkIHllIGJlIHN0cmlja2VuIGFueSBtb3JlPyB5ZSB3aWxsIHJldm9sdCBtb3JlIGFuZCBtb3JlOiB0aGUgd2hvbGUgaGVhZCBpcyBzaWNrLCBhbmQgdGhlIHdob2xlIGhlYXJ0IGZhaW50LgpGcm9tIHRoZSBzb2xlIG9mIHRoZSBmb290IGV2ZW4gdW50byB0aGUgaGVhZCB0aGVyZSBpcyBubyBzb3VuZG5lc3MgaW4gaXQ7IGJ1dCB3b3VuZHMsIGFuZCBicnVpc2VzLCBhbmQgcHV0cmlmeWluZyBzb3JlczogdGhleSBoYXZlIG5vdCBiZWVuIGNsb3NlZCwgbmVpdGhlciBib3VuZCB1cCwgbmVpdGhlciBtb2xsaWZpZWQgd2l0aCBvaW50bWVudC4KWW91ciBjb3VudHJ5IGlzIGRlc29sYXRlLCB5b3VyIGNpdGllcyBhcmUgYnVybmVkIHdpdGggZmlyZTogeW91ciBsYW5kLCBzdHJhbmdlcnMgZGV2b3VyIGl0IGluIHlvdXIgcHJlc2VuY2UsIGFuZCBpdCBpcyBkZXNvbGF0ZSwgYXMgb3ZlcnRocm93biBieSBzdHJhbmdlcnMuCkFuZCB0aGUgZGF1Z2h0ZXIgb2YgWmlvbiBpcyBsZWZ0IGFzIGEgY290dGFnZSBpbiBhIHZpbmV5YXJkLCBhcyBhIGxvZGdlIGluIGEgZ2FyZGVuIG9mIGN1Y3VtYmVycywgYXMgYSBiZXNpZWdlZCBjaXR5LgpFeGNlcHQgdGhlIExPUkQgb2YgaG9zdHMgaGFkIGxlZnQgdW50byB1cyBhIHZlcnkgc21hbGwgcmVtbmFudCwgd2Ugc2hvdWxkIGhhdmUgYmVlbiBhcyBTb2RvbSwgYW5kIHdlIHNob3VsZCBoYXZlIGJlZW4gbGlrZSB1bnRvIEdvbW9ycmFoLgpIZWFyIHRoZSB3b3JkIG9mIHRoZSBMT1JELCB5ZSBydWxlcnMgb2YgU29kb207IGdpdmUgZWFyIHVudG8gdGhlIGxhdyBvZiBvdXIgR29kLCB5ZSBwZW9wbGUgb2YgR29tb3JyYWguClRvIHdoYXQgcHVycG9zZSBpcyB0aGUgbXVsdGl0dWRlIG9mIHlvdXIgc2FjcmlmaWNlcyB1bnRvIG1lPyBzYWl0aCB0aGUgTE9SRDogSSBhbSBmdWxsIG9mIHRoZSBidXJudCBvZmZlcmluZ3Mgb2YgcmFtcywgYW5kIHRoZSBmYXQgb2YgZmVkIGJlYXN0czsgYW5kIEkgZGVsaWdodCBub3QgaW4gdGhlIGJsb29kIG9mIGJ1bGxvY2tzLCBvciBvZiBsYW1icywgb3Igb2YgaGUgZ29hdHMuCldoZW4geWUgY29tZSB0byBhcHBlYXIgYmVmb3JlIG1lLCB3aG8gaGF0aCByZXF1aXJlZCB0aGlzIGF0IHlvdXIgaGFuZCwgdG8gdHJlYWQgbXkgY291cnRzPwpCcmluZyBubyBtb3JlIHZhaW4gb2JsYXRpb25zOyBpbmNlbnNlIGlzIGFuIGFib21pbmF0aW9uIHVudG8gbWU7IHRoZSBuZXcgbW9vbnMgYW5kIHNhYmJhdGhzLCB0aGUgY2FsbGluZyBvZiBhc3NlbWJsaWVzLCBJIGNhbm5vdCBhd2F5IHdpdGg7IGl0IGlzIGluaXF1aXR5LCBldmVuIHRoZSBzb2xlbW4gbWVldGluZy4KWW91ciBuZXcgbW9vbnMgYW5kIHlvdXIgYXBwb2ludGVkIGZlYXN0cyBteSBzb3VsIGhhdGV0aDogdGhleSBhcmUgYSB0cm91YmxlIHVudG8gbWU7IEkgYW0gd2VhcnkgdG8gYmVhciB0aGVtLgpBbmQgd2hlbiB5ZSBzcHJlYWQgZm9ydGggeW91ciBoYW5kcywgSSB3aWxsIGhpZGUgbWluZSBleWVzIGZyb20geW91OiB5ZWEsIHdoZW4geWUgbWFrZSBtYW55IHByYXllcnMsIEkgd2lsbCBub3QgaGVhcjogeW91ciBoYW5kcyBhcmUgZnVsbCBvZiBibG9vZC4KV2FzaCB5b3UsIG1ha2UgeW91IGNsZWFuOyBwdXQgYXdheSB0aGUgZXZpbCBvZiB5b3VyIGRvaW5ncyBmcm9tIGJlZm9yZSBtaW5lIGV5ZXM7IGNlYXNlIHRvIGRvIGV2aWw7CkxlYXJuIHRvIGRvIHdlbGw7IHNlZWsganVkZ21lbnQsIHJlbGlldmUgdGhlIG9wcHJlc3NlZCwganVkZ2UgdGhlIGZhdGhlcmxlc3MsIHBsZWFkIGZvciB0aGUgd2lkb3cuCkNvbWUgbm93LCBhbmQgbGV0IHVzIHJlYXNvbiB0b2dldGhlciwgc2FpdGggdGhlIExPUkQ6IHRob3VnaCB5b3VyIHNpbnMgYmUgYXMgc2NhcmxldCwgdGhleSBzaGFsbCBiZSBhcyB3aGl0ZSBhcyBzbm93OyB0aG91Z2ggdGhleSBiZSByZWQgbGlrZSBjcmltc29uLCB0aGV5IHNoYWxsIGJlIGFzIHdvb2wuCklmIHllIGJlIHdpbGxpbmcgYW5kIG9iZWRpZW50LCB5ZSBzaGFsbCBlYXQgdGhlIGdvb2Qgb2YgdGhlIGxhbmQ6CkJ1dCBpZiB5ZSByZWZ1c2UgYW5kIHJlYmVsLCB5ZSBzaGFsbCBiZSBkZXZvdXJlZCB3aXRoIHRoZSBzd29yZDogZm9yIHRoZSBtb3V0aCBvZiB0aGUgTE9SRCBoYXRoIHNwb2tlbiBpdC4KSG93IGlzIHRoZSBmYWl0aGZ1bCBjaXR5IGJlY29tZSBhbiBoYXJsb3QhIGl0IHdhcyBmdWxsIG9mIGp1ZGdtZW50OyByaWdodGVvdXNuZXNzIGxvZGdlZCBpbiBpdDsgYnV0IG5vdyBtdXJkZXJlcnMuClRoeSBzaWx2ZXIgaXMgYmVjb21lIGRyb3NzLCB0aHkgd2luZSBtaXhlZCB3aXRoIHdhdGVyOgpUaHkgcHJpbmNlcyBhcmUgcmViZWxsaW91cywgYW5kIGNvbXBhbmlvbnMgb2YgdGhpZXZlczogZXZlcnkgb25lIGxvdmV0aCBnaWZ0cywgYW5kIGZvbGxvd2V0aCBhZnRlciByZXdhcmRzOiB0aGV5IGp1ZGdlIG5vdCB0aGUgZmF0aGVybGVzcywgbmVpdGhlciBkb3RoIHRoZSBjYXVzZSBvZiB0aGUgd2lkb3cgY29tZSB1bnRvIHRoZW0uClRoZXJlZm9yZSBzYWl0aCB0aGUgTE9SRCwgdGhlIExPUkQgb2YgaG9zdHMsIHRoZSBtaWdodHkgT25lIG9mIElzcmFlbCwgQWgsIEkgd2lsbCBlYXNlIG1lIG9mIG1pbmUgYWR2ZXJzYXJpZXMsIGFuZCBhdmVuZ2UgbWUgb2YgbWluZSBlbmVtaWVzOgpBbmQgSSB3aWxsIHR1cm4gbXkgaGFuZCB1cG9uIHRoZWUsIGFuZCBwdXJlbHkgcHVyZ2UgYXdheSB0aHkgZHJvc3MsIGFuZCB0YWtlIGF3YXkgYWxsIHRoeSB0aW46CkFuZCBJIHdpbGwgcmVzdG9yZSB0aHkganVkZ2VzIGFzIGF0IHRoZSBmaXJzdCwgYW5kIHRoeSBjb3Vuc2VsbG9ycyBhcyBhdCB0aGUgYmVnaW5uaW5nOiBhZnRlcndhcmQgdGhvdSBzaGFsdCBiZSBjYWxsZWQsIFRoZSBjaXR5IG9mIHJpZ2h0ZW91c25lc3MsIHRoZSBmYWl0aGZ1bCBjaXR5LgpaaW9uIHNoYWxsIGJlIHJlZGVlbWVkIHdpdGgganVkZ21lbnQsIGFuZCBoZXIgY29udmVydHMgd2l0aCByaWdodGVvdXNuZXNzLgpBbmQgdGhlIGRlc3RydWN0aW9uIG9mIHRoZSB0cmFuc2dyZXNzb3JzIGFuZCBvZiB0aGUgc2lubmVycyBzaGFsbCBiZSB0b2dldGhlciwgYW5kIHRoZXkgdGhhdCBmb3JzYWtlIHRoZSBMT1JEIHNoYWxsIGJlIGNvbnN1bWVkLgpGb3IgdGhleSBzaGFsbCBiZSBhc2hhbWVkIG9mIHRoZSBvYWtzIHdoaWNoIHllIGhhdmUgZGVzaXJlZCwgYW5kIHllIHNoYWxsIGJlIGNvbmZvdW5kZWQgZm9yIHRoZSBnYXJkZW5zIHRoYXQgeWUgaGF2ZSBjaG9zZW4uCkZvciB5ZSBzaGFsbCBiZSBhcyBhbiBvYWsgd2hvc2UgbGVhZiBmYWRldGgsIGFuZCBhcyBhIGdhcmRlbiB0aGF0IGhhdGggbm8gd2F0ZXIuCkFuZCB0aGUgc3Ryb25nIHNoYWxsIGJlIGFzIHRvdywgYW5kIHRoZSBtYWtlciBvZiBpdCBhcyBhIHNwYXJrLCBhbmQgdGhleSBzaGFsbCBib3RoIGJ1cm4gdG9nZXRoZXIsIGFuZCBub25lIHNoYWxsIHF1ZW5jaCB0aGVtLgpUaGUgd29yZCB0aGF0IElzYWlhaCB0aGUgc29uIG9mIEFtb3ogc2F3IGNvbmNlcm5pbmcgSnVkYWggYW5kIEplcnVzYWxlbS4KQW5kIGl0IHNoYWxsIGNvbWUgdG8gcGFzcyBpbiB0aGUgbGFzdCBkYXlzLCB0aGF0IHRoZSBtb3VudGFpbiBvZiB0aGUgTE9SRCdzIGhvdXNlIHNoYWxsIGJlIGVzdGFibGlzaGVkIGluIHRoZSB0b3Agb2YgdGhlIG1vdW50YWlucywgYW5kIHNoYWxsIGJlIGV4YWx0ZWQgYWJvdmUgdGhlIGhpbGxzOyBhbmQgYWxsIG5hdGlvbnMgc2hhbGwgZmxvdyB1bnRvIGl0LgpBbmQgbWFueSBwZW9wbGUgc2hhbGwgZ28gYW5kIHNheSwgQ29tZSB5ZSwgYW5kIGxldCB1cyBnbyB1cCB0byB0aGUgbW91bnRhaW4gb2YgdGhlIExPUkQsIHRvIHRoZSBob3VzZSBvZiB0aGUgR29kIG9mIEphY29iOyBhbmQgaGUgd2lsbCB0ZWFjaCB1cyBvZiBoaXMgd2F5cywgYW5kIHdlIHdpbGwgd2FsayBpbiBoaXMgcGF0aHM6IGZvciBvdXQgb2YgWmlvbiBzaGFsbCBnbyBmb3J0aCB0aGUgbGF3LCBhbmQgdGhlIHdvcmQgb2YgdGhlIExPUkQgZnJvbSBKZXJ1c2FsZW0uCkFuZCBoZSBzaGFsbCBqdWRnZSBhbW9uZyB0aGUgbmF0aW9ucywgYW5kIHNoYWxsIHJlYnVrZSBtYW55IHBlb3BsZTogYW5kIHRoZXkgc2hhbGwgYmVhdCB0aGVpciBzd29yZHMgaW50byBwbG93c2hhcmVzLCBhbmQgdGhlaXIgc3BlYXJzIGludG8gcHJ1bmluZ2hvb2tzOiBuYXRpb24gc2hhbGwgbm90IGxpZnQgdXAgc3dvcmQgYWdhaW5zdCBuYXRpb24sIG5laXRoZXIgc2hhbGwgdGhleSBsZWFybiB3YXIgYW55IG1vcmUuCk8gaG91c2Ugb2YgSmFjb2IsIGNvbWUgeWUsIGFuZCBsZXQgdXMgd2FsayBpbiB0aGUgbGlnaHQgb2YgdGhlIExPUkQuClRoZXJlZm9yZSB0aG91IGhhc3QgZm9yc2FrZW4gdGh5IHBlb3BsZSB0aGUgaG91c2Ugb2YgSmFjb2IsIGJlY2F1c2UgdGhleSBiZSByZXBsZW5pc2hlZCBmcm9tIHRoZSBlYXN0LCBhbmQgYXJlIHNvb3Roc2F5ZXJzIGxpa2UgdGhlIFBoaWxpc3RpbmVzLCBhbmQgdGhleSBwbGVhc2UgdGhlbXNlbHZlcyBpbiB0aGUgY2hpbGRyZW4gb2Ygc3RyYW5nZXJzLgpUaGVpciBsYW5kIGFsc28gaXMgZnVsbCBvZiBzaWx2ZXIgYW5kIGdvbGQsIG5laXRoZXIgaXMgdGhlcmUgYW55IGVuZCBvZiB0aGVpciB0cmVhc3VyZXM7IHRoZWlyIGxhbmQgaXMgYWxzbyBmdWxsIG9mIGhvcnNlcywgbmVpdGhlciBpcyB0aGVyZSBhbnkgZW5kIG9mIHRoZWlyIGNoYXJpb3RzOgpUaGVpciBsYW5kIGFsc28gaXMgZnVsbCBvZiBpZG9sczsgdGhleSB3b3JzaGlwIHRoZSB3b3JrIG9mIHRoZWlyIG93biBoYW5kcywgdGhhdCB3aGljaCB0aGVpciBvd24gZmluZ2VycyBoYXZlIG1hZGU6CkFuZCB0aGUgbWVhbiBtYW4gYm93ZXRoIGRvd24sIGFuZCB0aGUgZ3JlYXQgbWFuIGh1bWJsZXRoIGhpbXNlbGY6IHRoZXJlZm9yZSBmb3JnaXZlIHRoZW0gbm90LgpFbnRlciBpbnRvIHRoZSByb2NrLCBhbmQgaGlkZSB0aGVlIGluIHRoZSBkdXN0LCBmb3IgZmVhciBvZiB0aGUgTE9SRCwgYW5kIGZvciB0aGUgZ2xvcnkgb2YgaGlzIG1hamVzdHkuClRoZSBsb2Z0eSBsb29rcyBvZiBtYW4gc2hhbGwgYmUgaHVtYmxlZCwgYW5kIHRoZSBoYXVnaHRpbmVzcyBvZiBtZW4gc2hhbGwgYmUgYm93ZWQgZG93biwgYW5kIHRoZSBMT1JEIGFsb25lIHNoYWxsIGJlIGV4YWx0ZWQgaW4gdGhhdCBkYXkuCkZvciB0aGUgZGF5IG9mIHRoZSBMT1JEIG9mIGhvc3RzIHNoYWxsIGJlIHVwb24gZXZlcnkgb25lIHRoYXQgaXMgcHJvdWQgYW5kIGxvZnR5LCBhbmQgdXBvbiBldmVyeSBvbmUgdGhhdCBpcyBsaWZ0ZWQgdXA7IGFuZCBoZSBzaGFsbCBiZSBicm91Z2h0IGxvdzoKQW5kIHVwb24gYWxsIHRoZSBjZWRhcnMgb2YgTGViYW5vbiwgdGhhdCBhcmUgaGlnaCBhbmQgbGlmdGVkIHVwLCBhbmQgdXBvbiBhbGwgdGhlIG9ha3Mgb2YgQmFzaGFuLApBbmQgdXBvbiBhbGwgdGhlIGhpZ2ggbW91bnRhaW5zLCBhbmQgdXBvbiBhbGwgdGhlIGhpbGxzIHRoYXQgYXJlIGxpZnRlZCB1cCwKQW5kIHVwb24gZXZlcnkgaGlnaCB0b3dlciwgYW5kIHVwb24gZXZlcnkgZmVuY2VkIHdhbGwsCkFuZCB1cG9uIGFsbCB0aGUgc2hpcHMgb2YgVGFyc2hpc2gsIGFuZCB1cG9uIGFsbCBwbGVhc2FudCBwaWN0dXJlcy4KQW5kIHRoZSBsb2Z0aW5lc3Mgb2YgbWFuIHNoYWxsIGJlIGJvd2VkIGRvd24sIGFuZCB0aGUgaGF1Z2h0aW5lc3Mgb2YgbWVuIHNoYWxsIGJlIG1hZGUgbG93OiBhbmQgdGhlIExPUkQgYWxvbmUgc2hhbGwgYmUgZXhhbHRlZCBpbiB0aGF0IGRheS4KQW5kIHRoZSBpZG9scyBoZSBzaGFsbCB1dHRlcmx5IGFib2xpc2guCkFuZCB0aGV5IHNoYWxsIGdvIGludG8gdGhlIGhvbGVzIG9mIHRoZSByb2NrcywgYW5kIGludG8gdGhlIGNhdmVzIG9mIHRoZSBlYXJ0aCwgZm9yIGZlYXIgb2YgdGhlIExPUkQsIGFuZCBmb3IgdGhlIGdsb3J5IG9mIGhpcyBtYWplc3R5LCB3aGVuIGhlIGFyaXNldGggdG8gc2hha2UgdGVycmlibHkgdGhlIGVhcnRoLgpJbiB0aGF0IGRheSBhIG1hbiBzaGFsbCBjYXN0IGhpcyBpZG9scyBvZiBzaWx2ZXIsIGFuZCBoaXMgaWRvbHMgb2YgZ29sZCwgd2hpY2ggdGhleSBtYWRlIGVhY2ggb25lIGZvciBoaW1zZWxmIHRvIHdvcnNoaXAsIHRvIHRoZSBtb2xlcyBhbmQgdG8gdGhlIGJhdHM7ClRvIGdvIGludG8gdGhlIGNsZWZ0cyBvZiB0aGUgcm9ja3MsIGFuZCBpbnRvIHRoZSB0b3BzIG9mIHRoZSByYWdnZWQgcm9ja3MsIGZvciBmZWFyIG9mIHRoZSBMT1JELCBhbmQgZm9yIHRoZSBnbG9yeSBvZiBoaXMgbWFqZXN0eSwgd2hlbiBoZSBhcmlzZXRoIHRvIHNoYWtlIHRlcnJpYmx5IHRoZSBlYXJ0aC4KQ2Vhc2UgeWUgZnJvbSBtYW4sIHdob3NlIGJyZWF0aCBpcyBpbiBoaXMgbm9zdHJpbHM6IGZvciB3aGVyZWluIGlzIGhlIHRvIGJlIGFjY291bnRlZCBvZiA/CkZvciwgYmVob2xkLCB0aGUgTG9yZCwgdGhlIExPUkQgb2YgaG9zdHMsIGRvdGggdGFrZSBhd2F5IGZyb20gSmVydXNhbGVtIGFuZCBmcm9tIEp1ZGFoIHRoZSBzdGF5IGFuZCB0aGUgc3RhZmYsIHRoZSB3aG9sZSBzdGF5IG9mIGJyZWFkLCBhbmQgdGhlIHdob2xlIHN0YXkgb2Ygd2F0ZXIuClRoZSBtaWdodHkgbWFuLCBhbmQgdGhlIG1hbiBvZiB3YXIsIHRoZSBqdWRnZSwgYW5kIHRoZSBwcm9waGV0LCBhbmQgdGhlIHBydWRlbnQsIGFuZCB0aGUgYW5jaWVudCwKVGhlIGNhcHRhaW4gb2YgZmlmdHksIGFuZCB0aGUgaG9ub3VyYWJsZSBtYW4sIGFuZCB0aGUgY291bnNlbGxvciwgYW5kIHRoZSBjdW5uaW5nIGFydGlmaWNlciwgYW5kIHRoZSBlbG9xdWVudCBvcmF0b3IuCkFuZCBJIHdpbGwgZ2l2ZSBjaGlsZHJlbiB0byBiZSB0aGVpciBwcmluY2VzLCBhbmQgYmFiZXMgc2hhbGwgcnVsZSBvdmVyIHRoZW0uCkFuZCB0aGUgcGVvcGxlIHNoYWxsIGJlIG9wcHJlc3NlZCwgZXZlcnkgb25lIGJ5IGFub3RoZXIsIGFuZCBldmVyeSBvbmUgYnkgaGlzIG5laWdoYm91cjogdGhlIGNoaWxkIHNoYWxsIGJlaGF2ZSBoaW1zZWxmIHByb3VkbHkgYWdhaW5zdCB0aGUgYW5jaWVudCwgYW5kIHRoZSBiYXNlIGFnYWluc3QgdGhlIGhvbm91cmFibGUuCldoZW4gYSBtYW4gc2hhbGwgdGFrZSBob2xkIG9mIGhpcyBicm90aGVyIG9mIHRoZSBob3VzZSBvZiBoaXMgZmF0aGVyLCBzYXlpbmcsIFRob3UgaGFzdCBjbG90aGluZywgYmUgdGhvdSBvdXIgcnVsZXIsIGFuZCBsZXQgdGhpcyBydWluIGJlIHVuZGVyIHRoeSBoYW5kOgpJbiB0aGF0IGRheSBzaGFsbCBoZSBzd2Vhciwgc2F5aW5nLCBJIHdpbGwgbm90IGJlIGFuIGhlYWxlcjsgZm9yIGluIG15IGhvdXNlIGlzIG5laXRoZXIgYnJlYWQgbm9yIGNsb3RoaW5nOiBtYWtlIG1lIG5vdCBhIHJ1bGVyIG9mIHRoZSBwZW9wbGUuCkZvciBKZXJ1c2FsZW0gaXMgcnVpbmVkLCBhbmQgSnVkYWggaXMgZmFsbGVuOiBiZWNhdXNlIHRoZWlyIHRvbmd1ZSBhbmQgdGhlaXIgZG9pbmdzIGFyZSBhZ2FpbnN0IHRoZSBMT1JELCB0byBwcm92b2tlIHRoZSBleWVzIG9mIGhpcyBnbG9yeS4KVGhlIHNoZXcgb2YgdGhlaXIgY291bnRlbmFuY2UgZG90aCB3aXRuZXNzIGFnYWluc3QgdGhlbTsgYW5kIHRoZXkgZGVjbGFyZSB0aGVpciBzaW4gYXMgU29kb20sIHRoZXkgaGlkZSBpdCBub3QuIFdvZSB1bnRvIHRoZWlyIHNvdWwhIGZvciB0aGV5IGhhdmUgcmV3YXJkZWQgZXZpbCB1bnRvIHRoZW1zZWx2ZXMuClNheSB5ZSB0byB0aGUgcmlnaHRlb3VzLCB0aGF0IGl0IHNoYWxsIGJlIHdlbGwgd2l0aCBoaW06IGZvciB0aGV5IHNoYWxsIGVhdCB0aGUgZnJ1aXQgb2YgdGhlaXIgZG9pbmdzLgpXb2UgdW50byB0aGUgd2lja2VkISBpdCBzaGFsbCBiZSBpbGwgd2l0aCBoaW06IGZvciB0aGUgcmV3YXJkIG9mIGhpcyBoYW5kcyBzaGFsbCBiZSBnaXZlbiBoaW0uCkFzIGZvciBteSBwZW9wbGUsIGNoaWxkcmVuIGFyZSB0aGVpciBvcHByZXNzb3JzLCBhbmQgd29tZW4gcnVsZSBvdmVyIHRoZW0uIE8gbXkgcGVvcGxlLCB0aGV5IHdoaWNoIGxlYWQgdGhlZSBjYXVzZSB0aGVlIHRvIGVyciwgYW5kIGRlc3Ryb3kgdGhlIHdheSBvZiB0aHkgcGF0aHMuClRoZSBMT1JEIHN0YW5kZXRoIHVwIHRvIHBsZWFkLCBhbmQgc3RhbmRldGggdG8ganVkZ2UgdGhlIHBlb3BsZS4KVGhlIExPUkQgd2lsbCBlbnRlciBpbnRvIGp1ZGdtZW50IHdpdGggdGhlIGFuY2llbnRzIG9mIGhpcyBwZW9wbGUsIGFuZCB0aGUgcHJpbmNlcyB0aGVyZW9mOiBmb3IgeWUgaGF2ZSBlYXRlbiB1cCB0aGUgdmluZXlhcmQ7IHRoZSBzcG9pbCBvZiB0aGUgcG9vciBpcyBpbiB5b3VyIGhvdXNlcy4KV2hhdCBtZWFuIHllIHRoYXQgeWUgYmVhdCBteSBwZW9wbGUgdG8gcGllY2VzLCBhbmQgZ3JpbmQgdGhlIGZhY2VzIG9mIHRoZSBwb29yPyBzYWl0aCB0aGUgTG9yZCBHT0Qgb2YgaG9zdHMuCk1vcmVvdmVyIHRoZSBMT1JEIHNhaXRoLCBCZWNhdXNlIHRoZSBkYXVnaHRlcnMgb2YgWmlvbiBhcmUgaGF1Z2h0eSwgYW5kIHdhbGsgd2l0aCBzdHJldGNoZWQgZm9ydGggbmVja3MgYW5kIHdhbnRvbiBleWVzLCB3YWxraW5nIGFuZCBtaW5jaW5nIGFzIHRoZXkgZ28sIGFuZCBtYWtpbmcgYSB0aW5rbGluZyB3aXRoIHRoZWlyIGZlZXQ6ClRoZXJlZm9yZSB0aGUgTE9SRCB3aWxsIHNtaXRlIHdpdGggYSBzY2FiIHRoZSBjcm93biBvZiB0aGUgaGVhZCBvZiB0aGUgZGF1Z2h0ZXJzIG9mIFppb24sIGFuZCB0aGUgTE9SRCB3aWxsIGRpc2NvdmVyIHRoZWlyIHNlY3JldCBwYXJ0cy4KSW4gdGhhdCBkYXkgdGhlIExvcmQgd2lsbCB0YWtlIGF3YXkgdGhlIGJyYXZlcnkgb2YgdGhlaXIgdGlua2xpbmcgb3JuYW1lbnRzIGFib3V0IHRoZWlyIGZlZXQsIGFuZCB0aGVpciBjYXVscywgYW5kIHRoZWlyIHJvdW5kIHRpcmVzIGxpa2UgdGhlIG1vb24sClRoZSBjaGFpbnMsIGFuZCB0aGUgYnJhY2VsZXRzLCBhbmQgdGhlIG11ZmZsZXJzLApUaGUgYm9ubmV0cywgYW5kIHRoZSBvcm5hbWVudHMgb2YgdGhlIGxlZ3MsIGFuZCB0aGUgaGVhZGJhbmRzLCBhbmQgdGhlIHRhYmxldHMsIGFuZCB0aGUgZWFycmluZ3MsClRoZSByaW5ncywgYW5kIG5vc2UgamV3ZWxzLApUaGUgY2hhbmdlYWJsZSBzdWl0cyBvZiBhcHBhcmVsLCBhbmQgdGhlIG1hbnRsZXMsIGFuZCB0aGUgd2ltcGxlcywgYW5kIHRoZSBjcmlzcGluZyBwaW5zLApUaGUgZ2xhc3NlcywgYW5kIHRoZSBmaW5lIGxpbmVuLCBhbmQgdGhlIGhvb2RzLCBhbmQgdGhlIHZhaWxzLgpBbmQgaXQgc2hhbGwgY29tZSB0byBwYXNzLCB0aGF0IGluc3RlYWQgb2Ygc3dlZXQgc21lbGwgdGhlcmUgc2hhbGwgYmUgc3Rpbms7IGFuZCBpbnN0ZWFkIG9mIGEgZ2lyZGxlIGEgcmVudDsgYW5kIGluc3RlYWQgb2Ygd2VsbCBzZXQgaGFpciBiYWxkbmVzczsgYW5kIGluc3RlYWQgb2YgYSBzdG9tYWNoZXIgYSBnaXJkaW5nIG9mIHNhY2tjbG90aDsgYW5kIGJ1cm5pbmcgaW5zdGVhZCBvZiBiZWF1dHkuClRoeSBtZW4gc2hhbGwgZmFsbCBieSB0aGUgc3dvcmQsIGFuZCB0aHkgbWlnaHR5IGluIHRoZSB3YXIuCkFuZCBoZXIgZ2F0ZXMgc2hhbGwgbGFtZW50IGFuZCBtb3VybjsgYW5kIHNoZSBiZWluZyBkZXNvbGF0ZSBzaGFsbCBzaXQgdXBvbiB0aGUgZ3JvdW5kLgpBbmQgaW4gdGhhdCBkYXkgc2V2ZW4gd29tZW4gc2hhbGwgdGFrZSBob2xkIG9mIG9uZSBtYW4sIHNheWluZywgV2Ugd2lsbCBlYXQgb3VyIG93biBicmVhZCwgYW5kIHdlYXIgb3VyIG93biBhcHBhcmVsOiBvbmx5IGxldCB1cyBiZSBjYWxsZWQgYnkgdGh5IG5hbWUsIHRvIHRha2UgYXdheSBvdXIgcmVwcm9hY2guCkluIHRoYXQgZGF5IHNoYWxsIHRoZSBicmFuY2ggb2YgdGhlIExPUkQgYmUgYmVhdXRpZnVsIGFuZCBnbG9yaW91cywgYW5kIHRoZSBmcnVpdCBvZiB0aGUgZWFydGggc2hhbGwgYmUgZXhjZWxsZW50IGFuZCBjb21lbHkgZm9yIHRoZW0gdGhhdCBhcmUgZXNjYXBlZCBvZiBJc3JhZWwuCkFuZCBpdCBzaGFsbCBjb21lIHRvIHBhc3MsIHRoYXQgaGUgdGhhdCBpcyBsZWZ0IGluIFppb24sIGFuZCBoZSB0aGF0IHJlbWFpbmV0aCBpbiBKZXJ1c2FsZW0sIHNoYWxsIGJlIGNhbGxlZCBob2x5LCBldmVuIGV2ZXJ5IG9uZSB0aGF0IGlzIHdyaXR0ZW4gYW1vbmcgdGhlIGxpdmluZyBpbiBKZXJ1c2FsZW06CldoZW4gdGhlIExvcmQgc2hhbGwgaGF2ZSB3YXNoZWQgYXdheSB0aGUgZmlsdGggb2YgdGhlIGRhdWdodGVycyBvZiBaaW9uLCBhbmQgc2hhbGwgaGF2ZSBwdXJnZWQgdGhlIGJsb29kIG9mIEplcnVzYWxlbSBmcm9tIHRoZSBtaWRzdCB0aGVyZW9mIGJ5IHRoZSBzcGlyaXQgb2YganVkZ21lbnQsIGFuZCBieSB0aGUgc3Bpcml0IG9mIGJ1cm5pbmcuCkFuZCB0aGUgTE9SRCB3aWxsIGNyZWF0ZSB1cG9uIGV2ZXJ5IGR3ZWxsaW5nIHBsYWNlIG9mIG1vdW50IFppb24sIGFuZCB1cG9uIGhlciBhc3NlbWJsaWVzLCBhIGNsb3VkIGFuZCBzbW9rZSBieSBkYXksIGFuZCB0aGUgc2hpbmluZyBvZiBhIGZsYW1pbmcgZmlyZSBieSBuaWdodDogZm9yIHVwb24gYWxsIHRoZSBnbG9yeSBzaGFsbCBiZSBhIGRlZmVuY2UuCkFuZCB0aGVyZSBzaGFsbCBiZSBhIHRhYmVybmFjbGUgZm9yIGEgc2hhZG93IGluIHRoZSBkYXkgdGltZSBmcm9tIHRoZSBoZWF0LCBhbmQgZm9yIGEgcGxhY2Ugb2YgcmVmdWdlLCBhbmQgZm9yIGEgY292ZXJ0IGZyb20gc3Rvcm0gYW5kIGZyb20gcmFpbi4KTm93IHdpbGwgSSBzaW5nIHRvIG15IHdlbGxiZWxvdmVkIGEgc29uZyBvZiBteSBiZWxvdmVkIHRvdWNoaW5nIGhpcyB2aW5leWFyZC4gTXkgd2VsbGJlbG92ZWQgaGF0aCBhIHZpbmV5YXJkIGluIGEgdmVyeSBmcnVpdGZ1bCBoaWxsOgpBbmQgaGUgZmVuY2VkIGl0LCBhbmQgZ2F0aGVyZWQgb3V0IHRoZSBzdG9uZXMgdGhlcmVvZiwgYW5kIHBsYW50ZWQgaXQgd2l0aCB0aGUgY2hvaWNlc3QgdmluZSwgYW5kIGJ1aWx0IGEgdG93ZXIgaW4gdGhlIG1pZHN0IG9mIGl0LCBhbmQgYWxzbyBtYWRlIGEgd2luZXByZXNzIHRoZXJlaW46IGFuZCBoZSBsb29rZWQgdGhhdCBpdCBzaG91bGQgYnJpbmcgZm9ydGggZ3JhcGVzLCBhbmQgaXQgYnJvdWdodCBmb3J0aCB3aWxkIGdyYXBlcy4KQW5kIG5vdywgTyBpbmhhYml0YW50cyBvZiBKZXJ1c2FsZW0sIGFuZCBtZW4gb2YgSnVkYWgsIGp1ZGdlLCBJIHByYXkgeW91LCBiZXR3aXh0IG1lIGFuZCBteSB2aW5leWFyZC4KV2hhdCBjb3VsZCBoYXZlIGJlZW4gZG9uZSBtb3JlIHRvIG15IHZpbmV5YXJkLCB0aGF0IEkgaGF2ZSBub3QgZG9uZSBpbiBpdD8gd2hlcmVmb3JlLCB3aGVuIEkgbG9va2VkIHRoYXQgaXQgc2hvdWxkIGJyaW5nIGZvcnRoIGdyYXBlcywgYnJvdWdodCBpdCBmb3J0aCB3aWxkIGdyYXBlcz8KQW5kIG5vdyBnbyB0bzsgSSB3aWxsIHRlbGwgeW91IHdoYXQgSSB3aWxsIGRvIHRvIG15IHZpbmV5YXJkOiBJIHdpbGwgdGFrZSBhd2F5IHRoZSBoZWRnZSB0aGVyZW9mLCBhbmQgaXQgc2hhbGwgYmUgZWF0ZW4gdXA7IGFuZCBicmVhayBkb3duIHRoZSB3YWxsIHRoZXJlb2YsIGFuZCBpdCBzaGFsbCBiZSB0cm9kZGVuIGRvd246CkFuZCBJIHdpbGwgbGF5IGl0IHdhc3RlOiBpdCBzaGFsbCBub3QgYmUgcHJ1bmVkLCBub3IgZGlnZ2VkOyBidXQgdGhlcmUgc2hhbGwgY29tZSB1cCBicmllcnMgYW5kIHRob3JuczogSSB3aWxsIGFsc28gY29tbWFuZCB0aGUgY2xvdWRzIHRoYXQgdGhleSByYWluIG5vIHJhaW4gdXBvbiBpdC4KRm9yIHRoZSB2aW5leWFyZCBvZiB0aGUgTE9SRCBvZiBob3N0cyBpcyB0aGUgaG91c2Ugb2YgSXNyYWVsLCBhbmQgdGhlIG1lbiBvZiBKdWRhaCBoaXMgcGxlYXNhbnQgcGxhbnQ6IGFuZCBoZSBsb29rZWQgZm9yIGp1ZGdtZW50LCBidXQgYmVob2xkIG9wcHJlc3Npb247IGZvciByaWdodGVvdXNuZXNzLCBidXQgYmVob2xkIGEgY3J5LgpXb2UgdW50byB0aGVtIHRoYXQgam9pbiBob3VzZSB0byBob3VzZSwgdGhhdCBsYXkgZmllbGQgdG8gZmllbGQsIHRpbGwgdGhlcmUgYmUgbm8gcGxhY2UsIHRoYXQgdGhleSBtYXkgYmUgcGxhY2VkIGFsb25lIGluIHRoZSBtaWRzdCBvZiB0aGUgZWFydGghCkluIG1pbmUgZWFycyBzYWlkIHRoZSBMT1JEIG9mIGhvc3RzLCBPZiBhIHRydXRoIG1hbnkgaG91c2VzIHNoYWxsIGJlIGRlc29sYXRlLCBldmVuIGdyZWF0IGFuZCBmYWlyLCB3aXRob3V0IGluaGFiaXRhbnQuClllYSwgdGVuIGFjcmVzIG9mIHZpbmV5YXJkIHNoYWxsIHlpZWxkIG9uZSBiYXRoLCBhbmQgdGhlIHNlZWQgb2YgYW4gaG9tZXIgc2hhbGwgeWllbGQgYW4gZXBoYWguCldvZSB1bnRvIHRoZW0gdGhhdCByaXNlIHVwIGVhcmx5IGluIHRoZSBtb3JuaW5nLCB0aGF0IHRoZXkgbWF5IGZvbGxvdyBzdHJvbmcgZHJpbms7IHRoYXQgY29udGludWUgdW50aWwgbmlnaHQsIHRpbGwgd2luZSBpbmZsYW1lIHRoZW0hCkFuZCB0aGUgaGFycCwgYW5kIHRoZSB2aW9sLCB0aGUgdGFicmV0LCBhbmQgcGlwZSwgYW5kIHdpbmUsIGFyZSBpbiB0aGVpciBmZWFzdHM6IGJ1dCB0aGV5IHJlZ2FyZCBub3QgdGhlIHdvcmsgb2YgdGhlIExPUkQsIG5laXRoZXIgY29uc2lkZXIgdGhlIG9wZXJhdGlvbiBvZiBoaXMgaGFuZHMuClRoZXJlZm9yZSBteSBwZW9wbGUgYXJlIGdvbmUgaW50byBjYXB0aXZpdHksIGJlY2F1c2UgdGhleSBoYXZlIG5vIGtub3dsZWRnZTogYW5kIHRoZWlyIGhvbm91cmFibGUgbWVuIGFyZSBmYW1pc2hlZCwgYW5kIHRoZWlyIG11bHRpdHVkZSBkcmllZCB1cCB3aXRoIHRoaXJzdC4KVGhlcmVmb3JlIGhlbGwgaGF0aCBlbmxhcmdlZCBoZXJzZWxmLCBhbmQgb3BlbmVkIGhlciBtb3V0aCB3aXRob3V0IG1lYXN1cmU6IGFuZCB0aGVpciBnbG9yeSwgYW5kIHRoZWlyIG11bHRpdHVkZSwgYW5kIHRoZWlyIHBvbXAsIGFuZCBoZSB0aGF0IHJlam9pY2V0aCwgc2hhbGwgZGVzY2VuZCBpbnRvIGl0LgpBbmQgdGhlIG1lYW4gbWFuIHNoYWxsIGJlIGJyb3VnaHQgZG93biwgYW5kIHRoZSBtaWdodHkgbWFuIHNoYWxsIGJlIGh1bWJsZWQsIGFuZCB0aGUgZXllcyBvZiB0aGUgbG9mdHkgc2hhbGwgYmUgaHVtYmxlZDoKQnV0IHRoZSBMT1JEIG9mIGhvc3RzIHNoYWxsIGJlIGV4YWx0ZWQgaW4ganVkZ21lbnQsIGFuZCBHb2QgdGhhdCBpcyBob2x5IHNoYWxsIGJlIHNhbmN0aWZpZWQgaW4gcmlnaHRlb3VzbmVzcy4KVGhlbiBzaGFsbCB0aGUgbGFtYnMgZmVlZCBhZnRlciB0aGVpciBtYW5uZXIsIGFuZCB0aGUgd2FzdGUgcGxhY2VzIG9mIHRoZSBmYXQgb25lcyBzaGFsbCBzdHJhbmdlcnMgZWF0LgpXb2UgdW50byB0aGVtIHRoYXQgZHJhdyBpbmlxdWl0eSB3aXRoIGNvcmRzIG9mIHZhbml0eSwgYW5kIHNpbiBhcyBpdCB3ZXJlIHdpdGggYSBjYXJ0IHJvcGU6ClRoYXQgc2F5LCBMZXQgaGltIG1ha2Ugc3BlZWQsIGFuZCBoYXN0ZW4gaGlzIHdvcmssIHRoYXQgd2UgbWF5IHNlZSBpdDogYW5kIGxldCB0aGUgY291bnNlbCBvZiB0aGUgSG9seSBPbmUgb2YgSXNyYWVsIGRyYXcgbmlnaCBhbmQgY29tZSwgdGhhdCB3ZSBtYXkga25vdyBpdCEKV29lIHVudG8gdGhlbSB0aGF0IGNhbGwgZXZpbCBnb29kLCBhbmQgZ29vZCBldmlsOyB0aGF0IHB1dCBkYXJrbmVzcyBmb3IgbGlnaHQsIGFuZCBsaWdodCBmb3IgZGFya25lc3M7IHRoYXQgcHV0IGJpdHRlciBmb3Igc3dlZXQsIGFuZCBzd2VldCBmb3IgYml0dGVyIQpXb2UgdW50byB0aGVtIHRoYXQgYXJlIHdpc2UgaW4gdGhlaXIgb3duIGV5ZXMsIGFuZCBwcnVkZW50IGluIHRoZWlyIG93biBzaWdodCEKV29lIHVudG8gdGhlbSB0aGF0IGFyZSBtaWdodHkgdG8gZHJpbmsgd2luZSwgYW5kIG1lbiBvZiBzdHJlbmd0aCB0byBtaW5nbGUgc3Ryb25nIGRyaW5rOgpXaGljaCBqdXN0aWZ5IHRoZSB3aWNrZWQgZm9yIHJld2FyZCwgYW5kIHRha2UgYXdheSB0aGUgcmlnaHRlb3VzbmVzcyBvZiB0aGUgcmlnaHRlb3VzIGZyb20gaGltIQpUaGVyZWZvcmUgYXMgdGhlIGZpcmUgZGV2b3VyZXRoIHRoZSBzdHViYmxlLCBhbmQgdGhlIGZsYW1lIGNvbnN1bWV0aCB0aGUgY2hhZmYsIHNvIHRoZWlyIHJvb3Qgc2hhbGwgYmUgYXMgcm90dGVubmVzcywgYW5kIHRoZWlyIGJsb3Nzb20gc2hhbGwgZ28gdXAgYXMgZHVzdDogYmVjYXVzZSB0aGV5IGhhdmUgY2FzdCBhd2F5IHRoZSBsYXcgb2YgdGhlIExPUkQgb2YgaG9zdHMsIGFuZCBkZXNwaXNlZCB0aGUgd29yZCBvZiB0aGUgSG9seSBPbmUgb2YgSXNyYWVsLgpUaGVyZWZvcmUgaXMgdGhlIGFuZ2VyIG9mIHRoZSBMT1JEIGtpbmRsZWQgYWdhaW5zdCBoaXMgcGVvcGxlLCBhbmQgaGUgaGF0aCBzdHJldGNoZWQgZm9ydGggaGlzIGhhbmQgYWdhaW5zdCB0aGVtLCBhbmQgaGF0aCBzbWl0dGVuIHRoZW06IGFuZCB0aGUgaGlsbHMgZGlkIHRyZW1ibGUsIGFuZCB0aGVpciBjYXJjYXNlcyB3ZXJlIHRvcm4gaW4gdGhlIG1pZHN0IG9mIHRoZSBzdHJlZXRzLiBGb3IgYWxsIHRoaXMgaGlzIGFuZ2VyIGlzIG5vdCB0dXJuZWQgYXdheSwgYnV0IGhpcyBoYW5kIGlzIHN0cmV0Y2hlZCBvdXQgc3RpbGwuCkFuZCBoZSB3aWxsIGxpZnQgdXAgYW4gZW5zaWduIHRvIHRoZSBuYXRpb25zIGZyb20gZmFyLCBhbmQgd2lsbCBoaXNzIHVudG8gdGhlbSBmcm9tIHRoZSBlbmQgb2YgdGhlIGVhcnRoOiBhbmQsIGJlaG9sZCwgdGhleSBzaGFsbCBjb21lIHdpdGggc3BlZWQgc3dpZnRseToKTm9uZSBzaGFsbCBiZSB3ZWFyeSBub3Igc3R1bWJsZSBhbW9uZyB0aGVtOyBub25lIHNoYWxsIHNsdW1iZXIgbm9yIHNsZWVwOyBuZWl0aGVyIHNoYWxsIHRoZSBnaXJkbGUgb2YgdGhlaXIgbG9pbnMgYmUgbG9vc2VkLCBub3IgdGhlIGxhdGNoZXQgb2YgdGhlaXIgc2hvZXMgYmUgYnJva2VuOgpXaG9zZSBhcnJvd3MgYXJlIHNoYXJwLCBhbmQgYWxsIHRoZWlyIGJvd3MgYmVudCwgdGhlaXIgaG9yc2VzJyBob29mcyBzaGFsbCBiZSBjb3VudGVkIGxpa2UgZmxpbnQsIGFuZCB0aGVpciB3aGVlbHMgbGlrZSBhIHdoaXJsd2luZDoKVGhlaXIgcm9hcmluZyBzaGFsbCBiZSBsaWtlIGEgbGlvbiwgdGhleSBzaGFsbCByb2FyIGxpa2UgeW91bmcgbGlvbnM6IHllYSwgdGhleSBzaGFsbCByb2FyLCBhbmQgbGF5IGhvbGQgb2YgdGhlIHByZXksIGFuZCBzaGFsbCBjYXJyeSBpdCBhd2F5IHNhZmUsIGFuZCBub25lIHNoYWxsIGRlbGl2ZXIgaXQuCkFuZCBpbiB0aGF0IGRheSB0aGV5IHNoYWxsIHJvYXIgYWdhaW5zdCB0aGVtIGxpa2UgdGhlIHJvYXJpbmcgb2YgdGhlIHNlYTogYW5kIGlmIG9uZSBsb29rIHVudG8gdGhlIGxhbmQsIGJlaG9sZCBkYXJrbmVzcyBhbmQgc29ycm93LCBhbmQgdGhlIGxpZ2h0IGlzIGRhcmtlbmVkIGluIHRoZSBoZWF2ZW5zIHRoZXJlb2YuCkluIHRoZSB5ZWFyIHRoYXQga2luZyBVenppYWggZGllZCBJIHNhdyBhbHNvIHRoZSBMT1JEIHNpdHRpbmcgdXBvbiBhIHRocm9uZSwgaGlnaCBhbmQgbGlmdGVkIHVwLCBhbmQgaGlzIHRyYWluIGZpbGxlZCB0aGUgdGVtcGxlLgpBYm92ZSBpdCBzdG9vZCB0aGUgc2VyYXBoaW1zOiBlYWNoIG9uZSBoYWQgc2l4IHdpbmdzOyB3aXRoIHR3YWluIGhlIGNvdmVyZWQgaGlzIGZhY2UsIGFuZCB3aXRoIHR3YWluIGhlIGNvdmVyZWQgaGlzIGZlZXQsIGFuZCB3aXRoIHR3YWluIGhlIGRpZCBmbHkuCkFuZCBvbmUgY3JpZWQgdW50byBhbm90aGVyLCBhbmQgc2FpZCwgSG9seSwgaG9seSwgaG9seSwgaXMgdGhlIExPUkQgb2YgaG9zdHM6IHRoZSB3aG9sZSBlYXJ0aCBpcyBmdWxsIG9mIGhpcyBnbG9yeS4KQW5kIHRoZSBwb3N0cyBvZiB0aGUgZG9vciBtb3ZlZCBhdCB0aGUgdm9pY2Ugb2YgaGltIHRoYXQgY3JpZWQsIGFuZCB0aGUgaG91c2Ugd2FzIGZpbGxlZCB3aXRoIHNtb2tlLgpUaGVuIHNhaWQgSSwgV29lIGlzIG1lISBmb3IgSSBhbSB1bmRvbmU7IGJlY2F1c2UgSSBhbSBhIG1hbiBvZiB1bmNsZWFuIGxpcHMsIGFuZCBJIGR3ZWxsIGluIHRoZSBtaWRzdCBvZiBhIHBlb3BsZSBvZiB1bmNsZWFuIGxpcHM6IGZvciBtaW5lIGV5ZXMgaGF2ZSBzZWVuIHRoZSBLaW5nLCB0aGUgTE9SRCBvZiBob3N0cy4KVGhlbiBmbGV3IG9uZSBvZiB0aGUgc2VyYXBoaW1zIHVudG8gbWUsIGhhdmluZyBhIGxpdmUgY29hbCBpbiBoaXMgaGFuZCwgd2hpY2ggaGUgaGFkIHRha2VuIHdpdGggdGhlIHRvbmdzIGZyb20gb2ZmIHRoZSBhbHRhcjoKQW5kIGhlIGxhaWQgaXQgdXBvbiBteSBtb3V0aCwgYW5kIHNhaWQsIExvLCB0aGlzIGhhdGggdG91Y2hlZCB0aHkgbGlwczsgYW5kIHRoaW5lIGluaXF1aXR5IGlzIHRha2VuIGF3YXksIGFuZCB0aHkgc2luIHB1cmdlZC4KQWxzbyBJIGhlYXJkIHRoZSB2b2ljZSBvZiB0aGUgTG9yZCwgc2F5aW5nLCBXaG9tIHNoYWxsIEkgc2VuZCwgYW5kIHdobyB3aWxsIGdvIGZvciB1cz8gVGhlbiBzYWlkIEksIEhlcmUgYW0gSTsgc2VuZCBtZS4KQW5kIGhlIHNhaWQsIEdvLCBhbmQgdGVsbCB0aGlzIHBlb3BsZSwgSGVhciB5ZSBpbmRlZWQsIGJ1dCB1bmRlcnN0YW5kIG5vdDsgYW5kIHNlZSB5ZSBpbmRlZWQsIGJ1dCBwZXJjZWl2ZSBub3QuCk1ha2UgdGhlIGhlYXJ0IG9mIHRoaXMgcGVvcGxlIGZhdCwgYW5kIG1ha2UgdGhlaXIgZWFycyBoZWF2eSwgYW5kIHNodXQgdGhlaXIgZXllczsgbGVzdCB0aGV5IHNlZSB3aXRoIHRoZWlyIGV5ZXMsIGFuZCBoZWFyIHdpdGggdGhlaXIgZWFycywgYW5kIHVuZGVyc3RhbmQgd2l0aCB0aGVpciBoZWFydCwgYW5kIGNvbnZlcnQsIGFuZCBiZSBoZWFsZWQuClRoZW4gc2FpZCBJLCBMb3JkLCBob3cgbG9uZz8gQW5kIGhlIGFuc3dlcmVkLCBVbnRpbCB0aGUgY2l0aWVzIGJlIHdhc3RlZCB3aXRob3V0IGluaGFiaXRhbnQsIGFuZCB0aGUgaG91c2VzIHdpdGhvdXQgbWFuLCBhbmQgdGhlIGxhbmQgYmUgdXR0ZXJseSBkZXNvbGF0ZSwKQW5kIHRoZSBMT1JEIGhhdmUgcmVtb3ZlZCBtZW4gZmFyIGF3YXksIGFuZCB0aGVyZSBiZSBhIGdyZWF0IGZvcnNha2luZyBpbiB0aGUgbWlkc3Qgb2YgdGhlIGxhbmQuCkJ1dCB5ZXQgaW4gaXQgc2hhbGwgYmUgYSB0ZW50aCwgYW5kIGl0IHNoYWxsIHJldHVybiwgYW5kIHNoYWxsIGJlIGVhdGVuOiBhcyBhIHRlaWwgdHJlZSwgYW5kIGFzIGFuIG9haywgd2hvc2Ugc3Vic3RhbmNlIGlzIGluIHRoZW0sIHdoZW4gdGhleSBjYXN0IHRoZWlyIGxlYXZlczogc28gdGhlIGhvbHkgc2VlZCBzaGFsbCBiZSB0aGUgc3Vic3RhbmNlIHRoZXJlb2YuCkFuZCBpdCBjYW1lIHRvIHBhc3MgaW4gdGhlIGRheXMgb2YgQWhheiB0aGUgc29uIG9mIEpvdGhhbSwgdGhlIHNvbiBvZiBVenppYWgsIGtpbmcgb2YgSnVkYWgsIHRoYXQgUmV6aW4gdGhlIGtpbmcgb2YgU3lyaWEsIGFuZCBQZWthaCB0aGUgc29uIG9mIFJlbWFsaWFoLCBraW5nIG9mIElzcmFlbCwgd2VudCB1cCB0b3dhcmQgSmVydXNhbGVtIHRvIHdhciBhZ2FpbnN0IGl0LCBidXQgY291bGQgbm90IHByZXZhaWwgYWdhaW5zdCBpdC4KQW5kIGl0IHdhcyB0b2xkIHRoZSBob3VzZSBvZiBEYXZpZCwgc2F5aW5nLCBTeXJpYSBpcyBjb25mZWRlcmF0ZSB3aXRoIEVwaHJhaW0uIEFuZCBoaXMgaGVhcnQgd2FzIG1vdmVkLCBhbmQgdGhlIGhlYXJ0IG9mIGhpcyBwZW9wbGUsIGFzIHRoZSB0cmVlcyBvZiB0aGUgd29vZCBhcmUgbW92ZWQgd2l0aCB0aGUgd2luZC4KVGhlbiBzYWlkIHRoZSBMT1JEIHVudG8gSXNhaWFoLCBHbyBmb3J0aCBub3cgdG8gbWVldCBBaGF6LCB0aG91LCBhbmQgU2hlYXJqYXNodWIgdGh5IHNvbiwgYXQgdGhlIGVuZCBvZiB0aGUgY29uZHVpdCBvZiB0aGUgdXBwZXIgcG9vbCBpbiB0aGUgaGlnaHdheSBvZiB0aGUgZnVsbGVyJ3MgZmllbGQ7CkFuZCBzYXkgdW50byBoaW0sIFRha2UgaGVlZCwgYW5kIGJlIHF1aWV0OyBmZWFyIG5vdCwgbmVpdGhlciBiZSBmYWludGhlYXJ0ZWQgZm9yIHRoZSB0d28gdGFpbHMgb2YgdGhlc2Ugc21va2luZyBmaXJlYnJhbmRzLCBmb3IgdGhlIGZpZXJjZSBhbmdlciBvZiBSZXppbiB3aXRoIFN5cmlhLCBhbmQgb2YgdGhlIHNvbiBvZiBSZW1hbGlhaC4KQmVjYXVzZSBTeXJpYSwgRXBocmFpbSwgYW5kIHRoZSBzb24gb2YgUmVtYWxpYWgsIGhhdmUgdGFrZW4gZXZpbCBjb3Vuc2VsIGFnYWluc3QgdGhlZSwgc2F5aW5nLApMZXQgdXMgZ28gdXAgYWdhaW5zdCBKdWRhaCwgYW5kIHZleCBpdCwgYW5kIGxldCB1cyBtYWtlIGEgYnJlYWNoIHRoZXJlaW4gZm9yIHVzLCBhbmQgc2V0IGEga2luZyBpbiB0aGUgbWlkc3Qgb2YgaXQsIGV2ZW4gdGhlIHNvbiBvZiBUYWJlYWw6ClRodXMgc2FpdGggdGhlIExvcmQgR09ELCBJdCBzaGFsbCBub3Qgc3RhbmQsIG5laXRoZXIgc2hhbGwgaXQgY29tZSB0byBwYXNzLgpGb3IgdGhlIGhlYWQgb2YgU3lyaWEgaXMgRGFtYXNjdXMsIGFuZCB0aGUgaGVhZCBvZiBEYW1hc2N1cyBpcyBSZXppbjsgYW5kIHdpdGhpbiB0aHJlZXNjb3JlIGFuZCBmaXZlIHllYXJzIHNoYWxsIEVwaHJhaW0gYmUgYnJva2VuLCB0aGF0IGl0IGJlIG5vdCBhIHBlb3BsZS4KQW5kIHRoZSBoZWFkIG9mIEVwaHJhaW0gaXMgU2FtYXJpYSwgYW5kIHRoZSBoZWFkIG9mIFNhbWFyaWEgaXMgUmVtYWxpYWgncyBzb24uIElmIHllIHdpbGwgbm90IGJlbGlldmUsIHN1cmVseSB5ZSBzaGFsbCBub3QgYmUgZXN0YWJsaXNoZWQuCk1vcmVvdmVyIHRoZSBMT1JEIHNwYWtlIGFnYWluIHVudG8gQWhheiwgc2F5aW5nLApBc2sgdGhlZSBhIHNpZ24gb2YgdGhlIExPUkQgdGh5IEdvZDsgYXNrIGl0IGVpdGhlciBpbiB0aGUgZGVwdGgsIG9yIGluIHRoZSBoZWlnaHQgYWJvdmUuCkJ1dCBBaGF6IHNhaWQsIEkgd2lsbCBub3QgYXNrLCBuZWl0aGVyIHdpbGwgSSB0ZW1wdCB0aGUgTE9SRC4KQW5kIGhlIHNhaWQsIEhlYXIgeWUgbm93LCBPIGhvdXNlIG9mIERhdmlkOyBJcyBpdCBhIHNtYWxsIHRoaW5nIGZvciB5b3UgdG8gd2VhcnkgbWVuLCBidXQgd2lsbCB5ZSB3ZWFyeSBteSBHb2QgYWxzbz8KVGhlcmVmb3JlIHRoZSBMb3JkIGhpbXNlbGYgc2hhbGwgZ2l2ZSB5b3UgYSBzaWduOyBCZWhvbGQsIGEgdmlyZ2luIHNoYWxsIGNvbmNlaXZlLCBhbmQgYmVhciBhIHNvbiwgYW5kIHNoYWxsIGNhbGwgaGlzIG5hbWUgSW1tYW51ZWwuCkJ1dHRlciBhbmQgaG9uZXkgc2hhbGwgaGUgZWF0LCB0aGF0IGhlIG1heSBrbm93IHRvIHJlZnVzZSB0aGUgZXZpbCwgYW5kIGNob29zZSB0aGUgZ29vZC4KRm9yIGJlZm9yZSB0aGUgY2hpbGQgc2hhbGwga25vdyB0byByZWZ1c2UgdGhlIGV2aWwsIGFuZCBjaG9vc2UgdGhlIGdvb2QsIHRoZSBsYW5kIHRoYXQgdGhvdSBhYmhvcnJlc3Qgc2hhbGwgYmUgZm9yc2FrZW4gb2YgYm90aCBoZXIga2luZ3MuClRoZSBMT1JEIHNoYWxsIGJyaW5nIHVwb24gdGhlZSwgYW5kIHVwb24gdGh5IHBlb3BsZSwgYW5kIHVwb24gdGh5IGZhdGhlcidzIGhvdXNlLCBkYXlzIHRoYXQgaGF2ZSBub3QgY29tZSwgZnJvbSB0aGUgZGF5IHRoYXQgRXBocmFpbSBkZXBhcnRlZCBmcm9tIEp1ZGFoOyBldmVuIHRoZSBraW5nIG9mIEFzc3lyaWEuCkFuZCBpdCBzaGFsbCBjb21lIHRvIHBhc3MgaW4gdGhhdCBkYXksIHRoYXQgdGhlIExPUkQgc2hhbGwgaGlzcyBmb3IgdGhlIGZseSB0aGF0IGlzIGluIHRoZSB1dHRlcm1vc3QgcGFydCBvZiB0aGUgcml2ZXJzIG9mIEVneXB0LCBhbmQgZm9yIHRoZSBiZWUgdGhhdCBpcyBpbiB0aGUgbGFuZCBvZiBBc3N5cmlhLgpBbmQgdGhleSBzaGFsbCBjb21lLCBhbmQgc2hhbGwgcmVzdCBhbGwgb2YgdGhlbSBpbiB0aGUgZGVzb2xhdGUgdmFsbGV5cywgYW5kIGluIHRoZSBob2xlcyBvZiB0aGUgcm9ja3MsIGFuZCB1cG9uIGFsbCB0aG9ybnMsIGFuZCB1cG9uIGFsbCBidXNoZXMuCkluIHRoZSBzYW1lIGRheSBzaGFsbCB0aGUgTG9yZCBzaGF2ZSB3aXRoIGEgcmF6b3IgdGhhdCBpcyBoaXJlZCwgbmFtZWx5LCBieSB0aGVtIGJleW9uZCB0aGUgcml2ZXIsIGJ5IHRoZSBraW5nIG9mIEFzc3lyaWEsIHRoZSBoZWFkLCBhbmQgdGhlIGhhaXIgb2YgdGhlIGZlZXQ6IGFuZCBpdCBzaGFsbCBhbHNvIGNvbnN1bWUgdGhlIGJlYXJkLgpBbmQgaXQgc2hhbGwgY29tZSB0byBwYXNzIGluIHRoYXQgZGF5LCB0aGF0IGEgbWFuIHNoYWxsIG5vdXJpc2ggYSB5b3VuZyBjb3csIGFuZCB0d28gc2hlZXA7CkFuZCBpdCBzaGFsbCBjb21lIHRvIHBhc3MsIGZvciB0aGUgYWJ1bmRhbmNlIG9mIG1pbGsgdGhhdCB0aGV5IHNoYWxsIGdpdmUgaGUgc2hhbGwgZWF0IGJ1dHRlcjogZm9yIGJ1dHRlciBhbmQgaG9uZXkgc2hhbGwgZXZlcnkgb25lIGVhdCB0aGF0IGlzIGxlZnQgaW4gdGhlIGxhbmQuCkFuZCBpdCBzaGFsbCBjb21lIHRvIHBhc3MgaW4gdGhhdCBkYXksIHRoYXQgZXZlcnkgcGxhY2Ugc2hhbGwgYmUsIHdoZXJlIHRoZXJlIHdlcmUgYSB0aG91c2FuZCB2aW5lcyBhdCBhIHRob3VzYW5kIHNpbHZlcmxpbmdzLCBpdCBzaGFsbCBldmVuIGJlIGZvciBicmllcnMgYW5kIHRob3Jucy4KV2l0aCBhcnJvd3MgYW5kIHdpdGggYm93cyBzaGFsbCBtZW4gY29tZSB0aGl0aGVyOyBiZWNhdXNlIGFsbCB0aGUgbGFuZCBzaGFsbCBiZWNvbWUgYnJpZXJzIGFuZCB0aG9ybnMuCkFuZCBvbiBhbGwgaGlsbHMgdGhhdCBzaGFsbCBiZSBkaWdnZWQgd2l0aCB0aGUgbWF0dG9jaywgdGhlcmUgc2hhbGwgbm90IGNvbWUgdGhpdGhlciB0aGUgZmVhciBvZiBicmllcnMgYW5kIHRob3JuczogYnV0IGl0IHNoYWxsIGJlIGZvciB0aGUgc2VuZGluZyBmb3J0aCBvZiBveGVuLCBhbmQgZm9yIHRoZSB0cmVhZGluZyBvZiBsZXNzZXIgY2F0dGxlLgpNb3Jlb3ZlciB0aGUgTE9SRCBzYWlkIHVudG8gbWUsIFRha2UgdGhlZSBhIGdyZWF0IHJvbGwsIGFuZCB3cml0ZSBpbiBpdCB3aXRoIGEgbWFuJ3MgcGVuIGNvbmNlcm5pbmcgTWFoZXJzaGFsYWxoYXNoYmF6LgpBbmQgSSB0b29rIHVudG8gbWUgZmFpdGhmdWwgd2l0bmVzc2VzIHRvIHJlY29yZCwgVXJpYWggdGhlIHByaWVzdCwgYW5kIFplY2hhcmlhaCB0aGUgc29uIG9mIEplYmVyZWNoaWFoLgpBbmQgSSB3ZW50IHVudG8gdGhlIHByb3BoZXRlc3M7IGFuZCBzaGUgY29uY2VpdmVkLCBhbmQgYmFyZSBhIHNvbi4gVGhlbiBzYWlkIHRoZSBMT1JEIHRvIG1lLCBDYWxsIGhpcyBuYW1lIE1haGVyc2hhbGFsaGFzaGJhei4KRm9yIGJlZm9yZSB0aGUgY2hpbGQgc2hhbGwgaGF2ZSBrbm93bGVkZ2UgdG8gY3J5LCBNeSBmYXRoZXIsIGFuZCBteSBtb3RoZXIsIHRoZSByaWNoZXMgb2YgRGFtYXNjdXMgYW5kIHRoZSBzcG9pbCBvZiBTYW1hcmlhIHNoYWxsIGJlIHRha2VuIGF3YXkgYmVmb3JlIHRoZSBraW5nIG9mIEFzc3lyaWEuClRoZSBMT1JEIHNwYWtlIGFsc28gdW50byBtZSBhZ2Fpbiwgc2F5aW5nLApGb3Jhc211Y2ggYXMgdGhpcyBwZW9wbGUgcmVmdXNldGggdGhlIHdhdGVycyBvZiBTaGlsb2FoIHRoYXQgZ28gc29mdGx5LCBhbmQgcmVqb2ljZSBpbiBSZXppbiBhbmQgUmVtYWxpYWgncyBzb247Ck5vdyB0aGVyZWZvcmUsIGJlaG9sZCwgdGhlIExvcmQgYnJpbmdldGggdXAgdXBvbiB0aGVtIHRoZSB3YXRlcnMgb2YgdGhlIHJpdmVyLCBzdHJvbmcgYW5kIG1hbnksIGV2ZW4gdGhlIGtpbmcgb2YgQXNzeXJpYSwgYW5kIGFsbCBoaXMgZ2xvcnk6IGFuZCBoZSBzaGFsbCBjb21lIHVwIG92ZXIgYWxsIGhpcyBjaGFubmVscywgYW5kIGdvIG92ZXIgYWxsIGhpcyBiYW5rczoKQW5kIGhlIHNoYWxsIHBhc3MgdGhyb3VnaCBKdWRhaDsgaGUgc2hhbGwgb3ZlcmZsb3cgYW5kIGdvIG92ZXIsIGhlIHNoYWxsIHJlYWNoIGV2ZW4gdG8gdGhlIG5lY2s7IGFuZCB0aGUgc3RyZXRjaGluZyBvdXQgb2YgaGlzIHdpbmdzIHNoYWxsIGZpbGwgdGhlIGJyZWFkdGggb2YgdGh5IGxhbmQsIE8gSW1tYW51ZWwuCkFzc29jaWF0ZSB5b3Vyc2VsdmVzLCBPIHllIHBlb3BsZSwgYW5kIHllIHNoYWxsIGJlIGJyb2tlbiBpbiBwaWVjZXM7IGFuZCBnaXZlIGVhciwgYWxsIHllIG9mIGZhciBjb3VudHJpZXM6IGdpcmQgeW91cnNlbHZlcywgYW5kIHllIHNoYWxsIGJlIGJyb2tlbiBpbiBwaWVjZXM7IGdpcmQgeW91cnNlbHZlcywgYW5kIHllIHNoYWxsIGJlIGJyb2tlbiBpbiBwaWVjZXMuClRha2UgY291bnNlbCB0b2dldGhlciwgYW5kIGl0IHNoYWxsIGNvbWUgdG8gbm91Z2h0OyBzcGVhayB0aGUgd29yZCwgYW5kIGl0IHNoYWxsIG5vdCBzdGFuZDogZm9yIEdvZCBpcyB3aXRoIHVzLgpGb3IgdGhlIExPUkQgc3Bha2UgdGh1cyB0byBtZSB3aXRoIGEgc3Ryb25nIGhhbmQsIGFuZCBpbnN0cnVjdGVkIG1lIHRoYXQgSSBzaG91bGQgbm90IHdhbGsgaW4gdGhlIHdheSBvZiB0aGlzIHBlb3BsZSwgc2F5aW5nLApTYXkgeWUgbm90LCBBIGNvbmZlZGVyYWN5LCB0byBhbGwgdGhlbSB0byB3aG9tIHRoaXMgcGVvcGxlIHNoYWxsIHNheSwgQSBjb25mZWRlcmFjeTsgbmVpdGhlciBmZWFyIHllIHRoZWlyIGZlYXIsIG5vciBiZSBhZnJhaWQuClNhbmN0aWZ5IHRoZSBMT1JEIG9mIGhvc3RzIGhpbXNlbGY7IGFuZCBsZXQgaGltIGJlIHlvdXIgZmVhciwgYW5kIGxldCBoaW0gYmUgeW91ciBkcmVhZC4KQW5kIGhlIHNoYWxsIGJlIGZvciBhIHNhbmN0dWFyeTsgYnV0IGZvciBhIHN0b25lIG9mIHN0dW1ibGluZyBhbmQgZm9yIGEgcm9jayBvZiBvZmZlbmNlIHRvIGJvdGggdGhlIGhvdXNlcyBvZiBJc3JhZWwsIGZvciBhIGdpbiBhbmQgZm9yIGEgc25hcmUgdG8gdGhlIGluaGFiaXRhbnRzIG9mIEplcnVzYWxlbS4KQW5kIG1hbnkgYW1vbmcgdGhlbSBzaGFsbCBzdHVtYmxlLCBhbmQgZmFsbCwgYW5kIGJlIGJyb2tlbiwgYW5kIGJlIHNuYXJlZCwgYW5kIGJlIHRha2VuLgpCaW5kIHVwIHRoZSB0ZXN0aW1vbnksIHNlYWwgdGhlIGxhdyBhbW9uZyBteSBkaXNjaXBsZXMuCkFuZCBJIHdpbGwgd2FpdCB1cG9uIHRoZSBMT1JELCB0aGF0IGhpZGV0aCBoaXMgZmFjZSBmcm9tIHRoZSBob3VzZSBvZiBKYWNvYiwgYW5kIEkgd2lsbCBsb29rIGZvciBoaW0uCkJlaG9sZCwgSSBhbmQgdGhlIGNoaWxkcmVuIHdob20gdGhlIExPUkQgaGF0aCBnaXZlbiBtZSBhcmUgZm9yIHNpZ25zIGFuZCBmb3Igd29uZGVycyBpbiBJc3JhZWwgZnJvbSB0aGUgTE9SRCBvZiBob3N0cywgd2hpY2ggZHdlbGxldGggaW4gbW91bnQgWmlvbi4KQW5kIHdoZW4gdGhleSBzaGFsbCBzYXkgdW50byB5b3UsIFNlZWsgdW50byB0aGVtIHRoYXQgaGF2ZSBmYW1pbGlhciBzcGlyaXRzLCBhbmQgdW50byB3aXphcmRzIHRoYXQgcGVlcCwgYW5kIHRoYXQgbXV0dGVyOiBzaG91bGQgbm90IGEgcGVvcGxlIHNlZWsgdW50byB0aGVpciBHb2Q/IGZvciB0aGUgbGl2aW5nIHRvIHRoZSBkZWFkPwpUbyB0aGUgbGF3IGFuZCB0byB0aGUgdGVzdGltb255OiBpZiB0aGV5IHNwZWFrIG5vdCBhY2NvcmRpbmcgdG8gdGhpcyB3b3JkLCBpdCBpcyBiZWNhdXNlIHRoZXJlIGlzIG5vIGxpZ2h0IGluIHRoZW0uCkFuZCB0aGV5IHNoYWxsIHBhc3MgdGhyb3VnaCBpdCwgaGFyZGx5IGJlc3RlYWQgYW5kIGh1bmdyeTogYW5kIGl0IHNoYWxsIGNvbWUgdG8gcGFzcywgdGhhdCB3aGVuIHRoZXkgc2hhbGwgYmUgaHVuZ3J5LCB0aGV5IHNoYWxsIGZyZXQgdGhlbXNlbHZlcywgYW5kIGN1cnNlIHRoZWlyIGtpbmcgYW5kIHRoZWlyIEdvZCwgYW5kIGxvb2sgdXB3YXJkLgpBbmQgdGhleSBzaGFsbCBsb29rIHVudG8gdGhlIGVhcnRoOyBhbmQgYmVob2xkIHRyb3VibGUgYW5kIGRhcmtuZXNzLCBkaW1uZXNzIG9mIGFuZ3Vpc2g7IGFuZCB0aGV5IHNoYWxsIGJlIGRyaXZlbiB0byBkYXJrbmVzcy4KTmV2ZXJ0aGVsZXNzIHRoZSBkaW1uZXNzIHNoYWxsIG5vdCBiZSBzdWNoIGFzIHdhcyBpbiBoZXIgdmV4YXRpb24sIHdoZW4gYXQgdGhlIGZpcnN0IGhlIGxpZ2h0bHkgYWZmbGljdGVkIHRoZSBsYW5kIG9mIFplYnVsdW4gYW5kIHRoZSBsYW5kIG9mIE5hcGh0YWxpLCBhbmQgYWZ0ZXJ3YXJkIGRpZCBtb3JlIGdyaWV2b3VzbHkgYWZmbGljdCBoZXIgYnkgdGhlIHdheSBvZiB0aGUgc2VhLCBiZXlvbmQgSm9yZGFuLCBpbiBHYWxpbGVlIG9mIHRoZSBuYXRpb25zLgpUaGUgcGVvcGxlIHRoYXQgd2Fsa2VkIGluIGRhcmtuZXNzIGhhdmUgc2VlbiBhIGdyZWF0IGxpZ2h0OiB0aGV5IHRoYXQgZHdlbGwgaW4gdGhlIGxhbmQgb2YgdGhlIHNoYWRvdyBvZiBkZWF0aCwgdXBvbiB0aGVtIGhhdGggdGhlIGxpZ2h0IHNoaW5lZC4KVGhvdSBoYXN0IG11bHRpcGxpZWQgdGhlIG5hdGlvbiwgYW5kIG5vdCBpbmNyZWFzZWQgdGhlIGpveTogdGhleSBqb3kgYmVmb3JlIHRoZWUgYWNjb3JkaW5nIHRvIHRoZSBqb3kgaW4gaGFydmVzdCwgYW5kIGFzIG1lbiByZWpvaWNlIHdoZW4gdGhleSBkaXZpZGUgdGhlIHNwb2lsLgpGb3IgdGhvdSBoYXN0IGJyb2tlbiB0aGUgeW9rZSBvZiBoaXMgYnVyZGVuLCBhbmQgdGhlIHN0YWZmIG9mIGhpcyBzaG91bGRlciwgdGhlIHJvZCBvZiBoaXMgb3BwcmVzc29yLCBhcyBpbiB0aGUgZGF5IG9mIE1pZGlhbi4KRm9yIGV2ZXJ5IGJhdHRsZSBvZiB0aGUgd2FycmlvciBpcyB3aXRoIGNvbmZ1c2VkIG5vaXNlLCBhbmQgZ2FybWVudHMgcm9sbGVkIGluIGJsb29kOyBidXQgdGhpcyBzaGFsbCBiZSB3aXRoIGJ1cm5pbmcgYW5kIGZ1ZWwgb2YgZmlyZS4KRm9yIHVudG8gdXMgYSBjaGlsZCBpcyBib3JuLCB1bnRvIHVzIGEgc29uIGlzIGdpdmVuOiBhbmQgdGhlIGdvdmVybm1lbnQgc2hhbGwgYmUgdXBvbiBoaXMgc2hvdWxkZXI6IGFuZCBoaXMgbmFtZSBzaGFsbCBiZSBjYWxsZWQgV29uZGVyZnVsLCBDb3Vuc2VsbG9yLCBUaGUgbWlnaHR5IEdvZCwgVGhlIGV2ZXJsYXN0aW5nIEZhdGhlciwgVGhlIFByaW5jZSBvZiBQZWFjZS4KT2YgdGhlIGluY3JlYXNlIG9mIGhpcyBnb3Zlcm5tZW50IGFuZCBwZWFjZSB0aGVyZSBzaGFsbCBiZSBubyBlbmQsIHVwb24gdGhlIHRocm9uZSBvZiBEYXZpZCwgYW5kIHVwb24gaGlzIGtpbmdkb20sIHRvIG9yZGVyIGl0LCBhbmQgdG8gZXN0YWJsaXNoIGl0IHdpdGgganVkZ21lbnQgYW5kIHdpdGgganVzdGljZSBmcm9tIGhlbmNlZm9ydGggZXZlbiBmb3IgZXZlci4gVGhlIHplYWwgb2YgdGhlIExPUkQgb2YgaG9zdHMgd2lsbCBwZXJmb3JtIHRoaXMuClRoZSBMb3JkIHNlbnQgYSB3b3JkIGludG8gSmFjb2IsIGFuZCBpdCBoYXRoIGxpZ2h0ZWQgdXBvbiBJc3JhZWwuCkFuZCBhbGwgdGhlIHBlb3BsZSBzaGFsbCBrbm93LCBldmVuIEVwaHJhaW0gYW5kIHRoZSBpbmhhYml0YW50IG9mIFNhbWFyaWEsIHRoYXQgc2F5IGluIHRoZSBwcmlkZSBhbmQgc3RvdXRuZXNzIG9mIGhlYXJ0LApUaGUgYnJpY2tzIGFyZSBmYWxsZW4gZG93biwgYnV0IHdlIHdpbGwgYnVpbGQgd2l0aCBoZXduIHN0b25lczogdGhlIHN5Y29tb3JlcyBhcmUgY3V0IGRvd24sIGJ1dCB3ZSB3aWxsIGNoYW5nZSB0aGVtIGludG8gY2VkYXJzLgpUaGVyZWZvcmUgdGhlIExPUkQgc2hhbGwgc2V0IHVwIHRoZSBhZHZlcnNhcmllcyBvZiBSZXppbiBhZ2FpbnN0IGhpbSwgYW5kIGpvaW4gaGlzIGVuZW1pZXMgdG9nZXRoZXI7ClRoZSBTeXJpYW5zIGJlZm9yZSwgYW5kIHRoZSBQaGlsaXN0aW5lcyBiZWhpbmQ7IGFuZCB0aGV5IHNoYWxsIGRldm91ciBJc3JhZWwgd2l0aCBvcGVuIG1vdXRoLiBGb3IgYWxsIHRoaXMgaGlzIGFuZ2VyIGlzIG5vdCB0dXJuZWQgYXdheSwgYnV0IGhpcyBoYW5kIGlzIHN0cmV0Y2hlZCBvdXQgc3RpbGwuCkZvciB0aGUgcGVvcGxlIHR1cm5ldGggbm90IHVudG8gaGltIHRoYXQgc21pdGV0aCB0aGVtLCBuZWl0aGVyIGRvIHRoZXkgc2VlayB0aGUgTE9SRCBvZiBob3N0cy4KVGhlcmVmb3JlIHRoZSBMT1JEIHdpbGwgY3V0IG9mZiBmcm9tIElzcmFlbCBoZWFkIGFuZCB0YWlsLCBicmFuY2ggYW5kIHJ1c2gsIGluIG9uZSBkYXkuClRoZSBhbmNpZW50IGFuZCBob25vdXJhYmxlLCBoZSBpcyB0aGUgaGVhZDsgYW5kIHRoZSBwcm9waGV0IHRoYXQgdGVhY2hldGggbGllcywgaGUgaXMgdGhlIHRhaWwuCkZvciB0aGUgbGVhZGVycyBvZiB0aGlzIHBlb3BsZSBjYXVzZSB0aGVtIHRvIGVycjsgYW5kIHRoZXkgdGhhdCBhcmUgbGVkIG9mIHRoZW0gYXJlIGRlc3Ryb3llZC4KVGhlcmVmb3JlIHRoZSBMT1JEIHNoYWxsIGhhdmUgbm8gam95IGluIHRoZWlyIHlvdW5nIG1lbiwgbmVpdGhlciBzaGFsbCBoYXZlIG1lcmN5IG9uIHRoZWlyIGZhdGhlcmxlc3MgYW5kIHdpZG93czogZm9yIGV2ZXJ5IG9uZSBpcyBhbiBoeXBvY3JpdGUgYW5kIGFuIGV2aWxkb2VyLCBhbmQgZXZlcnkgbW91dGggc3BlYWtldGggZm9sbHkuIEZvciBhbGwgdGhpcyBoaXMgYW5nZXIgaXMgbm90IHR1cm5lZCBhd2F5LCBidXQgaGlzIGhhbmQgaXMgc3RyZXRjaGVkIG91dCBzdGlsbC4KRm9yIHdpY2tlZG5lc3MgYnVybmV0aCBhcyB0aGUgZmlyZTogaXQgc2hhbGwgZGV2b3VyIHRoZSBicmllcnMgYW5kIHRob3JucywgYW5kIHNoYWxsIGtpbmRsZSBpbiB0aGUgdGhpY2tldHMgb2YgdGhlIGZvcmVzdCwgYW5kIHRoZXkgc2hhbGwgbW91bnQgdXAgbGlrZSB0aGUgbGlmdGluZyB1cCBvZiBzbW9rZS4KVGhyb3VnaCB0aGUgd3JhdGggb2YgdGhlIExPUkQgb2YgaG9zdHMgaXMgdGhlIGxhbmQgZGFya2VuZWQsIGFuZCB0aGUgcGVvcGxlIHNoYWxsIGJlIGFzIHRoZSBmdWVsIG9mIHRoZSBmaXJlOiBubyBtYW4gc2hhbGwgc3BhcmUgaGlzIGJyb3RoZXIuCkFuZCBoZSBzaGFsbCBzbmF0Y2ggb24gdGhlIHJpZ2h0IGhhbmQsIGFuZCBiZSBodW5ncnk7IGFuZCBoZSBzaGFsbCBlYXQgb24gdGhlIGxlZnQgaGFuZCwgYW5kIHRoZXkgc2hhbGwgbm90IGJlIHNhdGlzZmllZDogdGhleSBzaGFsbCBlYXQgZXZlcnkgbWFuIHRoZSBmbGVzaCBvZiBoaXMgb3duIGFybToKTWFuYXNzZWgsIEVwaHJhaW07IGFuZCBFcGhyYWltLCBNYW5hc3NlaDogYW5kIHRoZXkgdG9nZXRoZXIgc2hhbGwgYmUgYWdhaW5zdCBKdWRhaC4gRm9yIGFsbCB0aGlzIGhpcyBhbmdlciBpcyBub3QgdHVybmVkIGF3YXksIGJ1dCBoaXMgaGFuZCBpcyBzdHJldGNoZWQgb3V0IHN0aWxsLgpXb2UgdW50byB0aGVtIHRoYXQgZGVjcmVlIHVucmlnaHRlb3VzIGRlY3JlZXMsIGFuZCB0aGF0IHdyaXRlIGdyaWV2b3VzbmVzcyB3aGljaCB0aGV5IGhhdmUgcHJlc2NyaWJlZDsKVG8gdHVybiBhc2lkZSB0aGUgbmVlZHkgZnJvbSBqdWRnbWVudCwgYW5kIHRvIHRha2UgYXdheSB0aGUgcmlnaHQgZnJvbSB0aGUgcG9vciBvZiBteSBwZW9wbGUsIHRoYXQgd2lkb3dzIG1heSBiZSB0aGVpciBwcmV5LCBhbmQgdGhhdCB0aGV5IG1heSByb2IgdGhlIGZhdGhlcmxlc3MhCkFuZCB3aGF0IHdpbGwgeWUgZG8gaW4gdGhlIGRheSBvZiB2aXNpdGF0aW9uLCBhbmQgaW4gdGhlIGRlc29sYXRpb24gd2hpY2ggc2hhbGwgY29tZSBmcm9tIGZhcj8gdG8gd2hvbSB3aWxsIHllIGZsZWUgZm9yIGhlbHA/IGFuZCB3aGVyZSB3aWxsIHllIGxlYXZlIHlvdXIgZ2xvcnk/CldpdGhvdXQgbWUgdGhleSBzaGFsbCBib3cgZG93biB1bmRlciB0aGUgcHJpc29uZXJzLCBhbmQgdGhleSBzaGFsbCBmYWxsIHVuZGVyIHRoZSBzbGFpbi4gRm9yIGFsbCB0aGlzIGhpcyBhbmdlciBpcyBub3QgdHVybmVkIGF3YXksIGJ1dCBoaXMgaGFuZCBpcyBzdHJldGNoZWQgb3V0IHN0aWxsLgpPIEFzc3lyaWFuLCB0aGUgcm9kIG9mIG1pbmUgYW5nZXIsIGFuZCB0aGUgc3RhZmYgaW4gdGhlaXIgaGFuZCBpcyBtaW5lIGluZGlnbmF0aW9uLgpJIHdpbGwgc2VuZCBoaW0gYWdhaW5zdCBhbiBoeXBvY3JpdGljYWwgbmF0aW9uLCBhbmQgYWdhaW5zdCB0aGUgcGVvcGxlIG9mIG15IHdyYXRoIHdpbGwgSSBnaXZlIGhpbSBhIGNoYXJnZSwgdG8gdGFrZSB0aGUgc3BvaWwsIGFuZCB0byB0YWtlIHRoZSBwcmV5LCBhbmQgdG8gdHJlYWQgdGhlbSBkb3duIGxpa2UgdGhlIG1pcmUgb2YgdGhlIHN0cmVldHMuCkhvd2JlaXQgaGUgbWVhbmV0aCBub3Qgc28sIG5laXRoZXIgZG90aCBoaXMgaGVhcnQgdGhpbmsgc287IGJ1dCBpdCBpcyBpbiBoaXMgaGVhcnQgdG8gZGVzdHJveSBhbmQgY3V0IG9mZiBuYXRpb25zIG5vdCBhIGZldy4KRm9yIGhlIHNhaXRoLCBBcmUgbm90IG15IHByaW5jZXMgYWx0b2dldGhlciBraW5ncz8KSXMgbm90IENhbG5vIGFzIENhcmNoZW1pc2g/IGlzIG5vdCBIYW1hdGggYXMgQXJwYWQ/IGlzIG5vdCBTYW1hcmlhIGFzIERhbWFzY3VzPwpBcyBteSBoYW5kIGhhdGggZm91bmQgdGhlIGtpbmdkb21zIG9mIHRoZSBpZG9scywgYW5kIHdob3NlIGdyYXZlbiBpbWFnZXMgZGlkIGV4Y2VsIHRoZW0gb2YgSmVydXNhbGVtIGFuZCBvZiBTYW1hcmlhOwpTaGFsbCBJIG5vdCwgYXMgSSBoYXZlIGRvbmUgdW50byBTYW1hcmlhIGFuZCBoZXIgaWRvbHMsIHNvIGRvIHRvIEplcnVzYWxlbSBhbmQgaGVyIGlkb2xzPwpXaGVyZWZvcmUgaXQgc2hhbGwgY29tZSB0byBwYXNzLCB0aGF0IHdoZW4gdGhlIExvcmQgaGF0aCBwZXJmb3JtZWQgaGlzIHdob2xlIHdvcmsgdXBvbiBtb3VudCBaaW9uIGFuZCBvbiBKZXJ1c2FsZW0sIEkgd2lsbCBwdW5pc2ggdGhlIGZydWl0IG9mIHRoZSBzdG91dCBoZWFydCBvZiB0aGUga2luZyBvZiBBc3N5cmlhLCBhbmQgdGhlIGdsb3J5IG9mIGhpcyBoaWdoIGxvb2tzLgpGb3IgaGUgc2FpdGgsIEJ5IHRoZSBzdHJlbmd0aCBvZiBteSBoYW5kIEkgaGF2ZSBkb25lIGl0LCBhbmQgYnkgbXkgd2lzZG9tOyBmb3IgSSBhbSBwcnVkZW50OiBhbmQgSSBoYXZlIHJlbW92ZWQgdGhlIGJvdW5kcyBvZiB0aGUgcGVvcGxlLCBhbmQgaGF2ZSByb2JiZWQgdGhlaXIgdHJlYXN1cmVzLCBhbmQgSSBoYXZlIHB1dCBkb3duIHRoZSBpbmhhYml0YW50cyBsaWtlIGEgdmFsaWFudCBtYW46CkFuZCBteSBoYW5kIGhhdGggZm91bmQgYXMgYSBuZXN0IHRoZSByaWNoZXMgb2YgdGhlIHBlb3BsZTogYW5kIGFzIG9uZSBnYXRoZXJldGggZWdncyB0aGF0IGFyZSBsZWZ0LCBoYXZlIEkgZ2F0aGVyZWQgYWxsIHRoZSBlYXJ0aDsgYW5kIHRoZXJlIHdhcyBub25lIHRoYXQgbW92ZWQgdGhlIHdpbmcsIG9yIG9wZW5lZCB0aGUgbW91dGgsIG9yIHBlZXBlZC4KU2hhbGwgdGhlIGF4ZSBib2FzdCBpdHNlbGYgYWdhaW5zdCBoaW0gdGhhdCBoZXdldGggdGhlcmV3aXRoPyBvciBzaGFsbCB0aGUgc2F3IG1hZ25pZnkgaXRzZWxmIGFnYWluc3QgaGltIHRoYXQgc2hha2V0aCBpdD8gYXMgaWYgdGhlIHJvZCBzaG91bGQgc2hha2UgaXRzZWxmIGFnYWluc3QgdGhlbSB0aGF0IGxpZnQgaXQgdXAsIG9yIGFzIGlmIHRoZSBzdGFmZiBzaG91bGQgbGlmdCB1cCBpdHNlbGYsIGFzIGlmIGl0IHdlcmUgbm8gd29vZC4KVGhlcmVmb3JlIHNoYWxsIHRoZSBMb3JkLCB0aGUgTG9yZCBvZiBob3N0cywgc2VuZCBhbW9uZyBoaXMgZmF0IG9uZXMgbGVhbm5lc3M7IGFuZCB1bmRlciBoaXMgZ2xvcnkgaGUgc2hhbGwga2luZGxlIGEgYnVybmluZyBsaWtlIHRoZSBidXJuaW5nIG9mIGEgZmlyZS4KQW5kIHRoZSBsaWdodCBvZiBJc3JhZWwgc2hhbGwgYmUgZm9yIGEgZmlyZSwgYW5kIGhpcyBIb2x5IE9uZSBmb3IgYSBmbGFtZTogYW5kIGl0IHNoYWxsIGJ1cm4gYW5kIGRldm91ciBoaXMgdGhvcm5zIGFuZCBoaXMgYnJpZXJzIGluIG9uZSBkYXk7CkFuZCBzaGFsbCBjb25zdW1lIHRoZSBnbG9yeSBvZiBoaXMgZm9yZXN0LCBhbmQgb2YgaGlzIGZydWl0ZnVsIGZpZWxkLCBib3RoIHNvdWwgYW5kIGJvZHk6IGFuZCB0aGV5IHNoYWxsIGJlIGFzIHdoZW4gYSBzdGFuZGFyZC1iZWFyZXIgZmFpbnRldGguCkFuZCB0aGUgcmVzdCBvZiB0aGUgdHJlZXMgb2YgaGlzIGZvcmVzdCBzaGFsbCBiZSBmZXcsIHRoYXQgYSBjaGlsZCBtYXkgd3JpdGUgdGhlbS4KQW5kIGl0IHNoYWxsIGNvbWUgdG8gcGFzcyBpbiB0aGF0IGRheSwgdGhhdCB0aGUgcmVtbmFudCBvZiBJc3JhZWwsIGFuZCBzdWNoIGFzIGFyZSBlc2NhcGVkIG9mIHRoZSBob3VzZSBvZiBKYWNvYiwgc2hhbGwgbm8gbW9yZSBhZ2FpbiBzdGF5IHVwb24gaGltIHRoYXQgc21vdGUgdGhlbTsgYnV0IHNoYWxsIHN0YXkgdXBvbiB0aGUgTE9SRCwgdGhlIEhvbHkgT25lIG9mIElzcmFlbCwgaW4gdHJ1dGguClRoZSByZW1uYW50IHNoYWxsIHJldHVybiwgZXZlbiB0aGUgcmVtbmFudCBvZiBKYWNvYiwgdW50byB0aGUgbWlnaHR5IEdvZC4KRm9yIHRob3VnaCB0aHkgcGVvcGxlIElzcmFlbCBiZSBhcyB0aGUgc2FuZCBvZiB0aGUgc2VhLCB5ZXQgYSByZW1uYW50IG9mIHRoZW0gc2hhbGwgcmV0dXJuOiB0aGUgY29uc3VtcHRpb24gZGVjcmVlZCBzaGFsbCBvdmVyZmxvdyB3aXRoIHJpZ2h0ZW91c25lc3MuCkZvciB0aGUgTG9yZCBHT0Qgb2YgaG9zdHMgc2hhbGwgbWFrZSBhIGNvbnN1bXB0aW9uLCBldmVuIGRldGVybWluZWQsIGluIHRoZSBtaWRzdCBvZiBhbGwgdGhlIGxhbmQuClRoZXJlZm9yZSB0aHVzIHNhaXRoIHRoZSBMb3JkIEdPRCBvZiBob3N0cywgTyBteSBwZW9wbGUgdGhhdCBkd2VsbGVzdCBpbiBaaW9uLCBiZSBub3QgYWZyYWlkIG9mIHRoZSBBc3N5cmlhbjogaGUgc2hhbGwgc21pdGUgdGhlZSB3aXRoIGEgcm9kLCBhbmQgc2hhbGwgbGlmdCB1cCBoaXMgc3RhZmYgYWdhaW5zdCB0aGVlLCBhZnRlciB0aGUgbWFubmVyIG9mIEVneXB0LgpGb3IgeWV0IGEgdmVyeSBsaXR0bGUgd2hpbGUsIGFuZCB0aGUgaW5kaWduYXRpb24gc2hhbGwgY2Vhc2UsIGFuZCBtaW5lIGFuZ2VyIGluIHRoZWlyIGRlc3RydWN0aW9uLgpBbmQgdGhlIExPUkQgb2YgaG9zdHMgc2hhbGwgc3RpciB1cCBhIHNjb3VyZ2UgZm9yIGhpbSBhY2NvcmRpbmcgdG8gdGhlIHNsYXVnaHRlciBvZiBNaWRpYW4gYXQgdGhlIHJvY2sgb2YgT3JlYjogYW5kIGFzIGhpcyByb2Qgd2FzIHVwb24gdGhlIHNlYSwgc28gc2hhbGwgaGUgbGlmdCBpdCB1cCBhZnRlciB0aGUgbWFubmVyIG9mIEVneXB0LgpBbmQgaXQgc2hhbGwgY29tZSB0byBwYXNzIGluIHRoYXQgZGF5LCB0aGF0IGhpcyBidXJkZW4gc2hhbGwgYmUgdGFrZW4gYXdheSBmcm9tIG9mZiB0aHkgc2hvdWxkZXIsIGFuZCBoaXMgeW9rZSBmcm9tIG9mZiB0aHkgbmVjaywgYW5kIHRoZSB5b2tlIHNoYWxsIGJlIGRlc3Ryb3llZCBiZWNhdXNlIG9mIHRoZSBhbm9pbnRpbmcuCkhlIGlzIGNvbWUgdG8gQWlhdGgsIGhlIGlzIHBhc3NlZCB0byBNaWdyb247IGF0IE1pY2htYXNoIGhlIGhhdGggbGFpZCB1cCBoaXMgY2FycmlhZ2VzOgpUaGV5IGFyZSBnb25lIG92ZXIgdGhlIHBhc3NhZ2U6IHRoZXkgaGF2ZSB0YWtlbiB1cCB0aGVpciBsb2RnaW5nIGF0IEdlYmE7IFJhbWFoIGlzIGFmcmFpZDsgR2liZWFoIG9mIFNhdWwgaXMgZmxlZC4KTGlmdCB1cCB0aHkgdm9pY2UsIE8gZGF1Z2h0ZXIgb2YgR2FsbGltOiBjYXVzZSBpdCB0byBiZSBoZWFyZCB1bnRvIExhaXNoLCBPIHBvb3IgQW5hdGhvdGguCk1hZG1lbmFoIGlzIHJlbW92ZWQ7IHRoZSBpbmhhYml0YW50cyBvZiBHZWJpbSBnYXRoZXIgdGhlbXNlbHZlcyB0byBmbGVlLgpBcyB5ZXQgc2hhbGwgaGUgcmVtYWluIGF0IE5vYiB0aGF0IGRheTogaGUgc2hhbGwgc2hha2UgaGlzIGhhbmQgYWdhaW5zdCB0aGUgbW91bnQgb2YgdGhlIGRhdWdodGVyIG9mIFppb24sIHRoZSBoaWxsIG9mIEplcnVzYWxlbS4KQmVob2xkLCB0aGUgTG9yZCwgdGhlIExPUkQgb2YgaG9zdHMsIHNoYWxsIGxvcCB0aGUgYm91Z2ggd2l0aCB0ZXJyb3I6IGFuZCB0aGUgaGlnaCBvbmVzIG9mIHN0YXR1cmUgc2hhbGwgYmUgaGV3biBkb3duLCBhbmQgdGhlIGhhdWdodHkgc2hhbGwgYmUgaHVtYmxlZC4KQW5kIGhlIHNoYWxsIGN1dCBkb3duIHRoZSB0aGlja2V0cyBvZiB0aGUgZm9yZXN0IHdpdGggaXJvbiwgYW5kIExlYmFub24gc2hhbGwgZmFsbCBieSBhIG1pZ2h0eSBvbmUuCkFuZCB0aGVyZSBzaGFsbCBjb21lIGZvcnRoIGEgcm9kIG91dCBvZiB0aGUgc3RlbSBvZiBKZXNzZSwgYW5kIGEgQnJhbmNoIHNoYWxsIGdyb3cgb3V0IG9mIGhpcyByb290czoKQW5kIHRoZSBzcGlyaXQgb2YgdGhlIExPUkQgc2hhbGwgcmVzdCB1cG9uIGhpbSwgdGhlIHNwaXJpdCBvZiB3aXNkb20gYW5kIHVuZGVyc3RhbmRpbmcsIHRoZSBzcGlyaXQgb2YgY291bnNlbCBhbmQgbWlnaHQsIHRoZSBzcGlyaXQgb2Yga25vd2xlZGdlIGFuZCBvZiB0aGUgZmVhciBvZiB0aGUgTE9SRDsKQW5kIHNoYWxsIG1ha2UgaGltIG9mIHF1aWNrIHVuZGVyc3RhbmRpbmcgaW4gdGhlIGZlYXIgb2YgdGhlIExPUkQ6IGFuZCBoZSBzaGFsbCBub3QganVkZ2UgYWZ0ZXIgdGhlIHNpZ2h0IG9mIGhpcyBleWVzLCBuZWl0aGVyIHJlcHJvdmUgYWZ0ZXIgdGhlIGhlYXJpbmcgb2YgaGlzIGVhcnM6CkJ1dCB3aXRoIHJpZ2h0ZW91c25lc3Mgc2hhbGwgaGUganVkZ2UgdGhlIHBvb3IsIGFuZCByZXByb3ZlIHdpdGggZXF1aXR5IGZvciB0aGUgbWVlayBvZiB0aGUgZWFydGg6IGFuZCBoZSBzaGFsbCBzbWl0ZSB0aGUgZWFydGg6IHdpdGggdGhlIHJvZCBvZiBoaXMgbW91dGgsIGFuZCB3aXRoIHRoZSBicmVhdGggb2YgaGlzIGxpcHMgc2hhbGwgaGUgc2xheSB0aGUgd2lja2VkLgpBbmQgcmlnaHRlb3VzbmVzcyBzaGFsbCBiZSB0aGUgZ2lyZGxlIG9mIGhpcyBsb2lucywgYW5kIGZhaXRoZnVsbmVzcyB0aGUgZ2lyZGxlIG9mIGhpcyByZWlucy4KVGhlIHdvbGYgYWxzbyBzaGFsbCBkd2VsbCB3aXRoIHRoZSBsYW1iLCBhbmQgdGhlIGxlb3BhcmQgc2hhbGwgbGllIGRvd24gd2l0aCB0aGUga2lkOyBhbmQgdGhlIGNhbGYgYW5kIHRoZSB5b3VuZyBsaW9uIGFuZCB0aGUgZmF0bGluZyB0b2dldGhlcjsgYW5kIGEgbGl0dGxlIGNoaWxkIHNoYWxsIGxlYWQgdGhlbS4KQW5kIHRoZSBjb3cgYW5kIHRoZSBiZWFyIHNoYWxsIGZlZWQ7IHRoZWlyIHlvdW5nIG9uZXMgc2hhbGwgbGllIGRvd24gdG9nZXRoZXI6IGFuZCB0aGUgbGlvbiBzaGFsbCBlYXQgc3RyYXcgbGlrZSB0aGUgb3guCkFuZCB0aGUgc3Vja2luZyBjaGlsZCBzaGFsbCBwbGF5IG9uIHRoZSBob2xlIG9mIHRoZSBhc3AsIGFuZCB0aGUgd2VhbmVkIGNoaWxkIHNoYWxsIHB1dCBoaXMgaGFuZCBvbiB0aGUgY29ja2F0cmljZScgZGVuLgpUaGV5IHNoYWxsIG5vdCBodXJ0IG5vciBkZXN0cm95IGluIGFsbCBteSBob2x5IG1vdW50YWluOiBmb3IgdGhlIGVhcnRoIHNoYWxsIGJlIGZ1bGwgb2YgdGhlIGtub3dsZWRnZSBvZiB0aGUgTE9SRCwgYXMgdGhlIHdhdGVycyBjb3ZlciB0aGUgc2VhLgpBbmQgaW4gdGhhdCBkYXkgdGhlcmUgc2hhbGwgYmUgYSByb290IG9mIEplc3NlLCB3aGljaCBzaGFsbCBzdGFuZCBmb3IgYW4gZW5zaWduIG9mIHRoZSBwZW9wbGU7IHRvIGl0IHNoYWxsIHRoZSBHZW50aWxlcyBzZWVrOiBhbmQgaGlzIHJlc3Qgc2hhbGwgYmUgZ2xvcmlvdXMuCkFuZCBpdCBzaGFsbCBjb21lIHRvIHBhc3MgaW4gdGhhdCBkYXksIHRoYXQgdGhlIExvcmQgc2hhbGwgc2V0IGhpcyBoYW5kIGFnYWluIHRoZSBzZWNvbmQgdGltZSB0byByZWNvdmVyIHRoZSByZW1uYW50IG9mIGhpcyBwZW9wbGUsIHdoaWNoIHNoYWxsIGJlIGxlZnQsIGZyb20gQXNzeXJpYSwgYW5kIGZyb20gRWd5cHQsIGFuZCBmcm9tIFBhdGhyb3MsIGFuZCBmcm9tIEN1c2gsIGFuZCBmcm9tIEVsYW0sIGFuZCBmcm9tIFNoaW5hciwgYW5kIGZyb20gSGFtYXRoLCBhbmQgZnJvbSB0aGUgaXNsYW5kcyBvZiB0aGUgc2VhLgpBbmQgaGUgc2hhbGwgc2V0IHVwIGFuIGVuc2lnbiBmb3IgdGhlIG5hdGlvbnMsIGFuZCBzaGFsbCBhc3NlbWJsZSB0aGUgb3V0Y2FzdHMgb2YgSXNyYWVsLCBhbmQgZ2F0aGVyIHRvZ2V0aGVyIHRoZSBkaXNwZXJzZWQgb2YgSnVkYWggZnJvbSB0aGUgZm91ciBjb3JuZXJzIG9mIHRoZSBlYXJ0aC4KVGhlIGVudnkgYWxzbyBvZiBFcGhyYWltIHNoYWxsIGRlcGFydCwgYW5kIHRoZSBhZHZlcnNhcmllcyBvZiBKdWRhaCBzaGFsbCBiZSBjdXQgb2ZmOiBFcGhyYWltIHNoYWxsIG5vdCBlbnZ5IEp1ZGFoLCBhbmQgSnVkYWggc2hhbGwgbm90IHZleCBFcGhyYWltLgpCdXQgdGhleSBzaGFsbCBmbHkgdXBvbiB0aGUgc2hvdWxkZXJzIG9mIHRoZSBQaGlsaXN0aW5lcyB0b3dhcmQgdGhlIHdlc3Q7IHRoZXkgc2hhbGwgc3BvaWwgdGhlbSBvZiB0aGUgZWFzdCB0b2dldGhlcjogdGhleSBzaGFsbCBsYXkgdGhlaXIgaGFuZCB1cG9uIEVkb20gYW5kIE1vYWI7IGFuZCB0aGUgY2hpbGRyZW4gb2YgQW1tb24gc2hhbGwgb2JleSB0aGVtLgpBbmQgdGhlIExPUkQgc2hhbGwgdXR0ZXJseSBkZXN0cm95IHRoZSB0b25ndWUgb2YgdGhlIEVneXB0aWFuIHNlYTsgYW5kIHdpdGggaGlzIG1pZ2h0eSB3aW5kIHNoYWxsIGhlIHNoYWtlIGhpcyBoYW5kIG92ZXIgdGhlIHJpdmVyLCBhbmQgc2hhbGwgc21pdGUgaXQgaW4gdGhlIHNldmVuIHN0cmVhbXMsIGFuZCBtYWtlIG1lbiBnbyBvdmVyIGRyeXNob2QuCkFuZCB0aGVyZSBzaGFsbCBiZSBhbiBoaWdod2F5IGZvciB0aGUgcmVtbmFudCBvZiBoaXMgcGVvcGxlLCB3aGljaCBzaGFsbCBiZSBsZWZ0LCBmcm9tIEFzc3lyaWE7IGxpa2UgYXMgaXQgd2FzIHRvIElzcmFlbCBpbiB0aGUgZGF5IHRoYXQgaGUgY2FtZSB1cCBvdXQgb2YgdGhlIGxhbmQgb2YgRWd5cHQuCkFuZCBpbiB0aGF0IGRheSB0aG91IHNoYWx0IHNheSwgTyBMT1JELCBJIHdpbGwgcHJhaXNlIHRoZWU6IHRob3VnaCB0aG91IHdhc3QgYW5ncnkgd2l0aCBtZSwgdGhpbmUgYW5nZXIgaXMgdHVybmVkIGF3YXksIGFuZCB0aG91IGNvbWZvcnRlZHN0IG1lLgpCZWhvbGQsIEdvZCBpcyBteSBzYWx2YXRpb247IEkgd2lsbCB0cnVzdCwgYW5kIG5vdCBiZSBhZnJhaWQ6IGZvciB0aGUgTE9SRCBKRUhPVkFIIGlzIG15IHN0cmVuZ3RoIGFuZCBteSBzb25nOyBoZSBhbHNvIGlzIGJlY29tZSBteSBzYWx2YXRpb24uClRoZXJlZm9yZSB3aXRoIGpveSBzaGFsbCB5ZSBkcmF3IHdhdGVyIG91dCBvZiB0aGUgd2VsbHMgb2Ygc2FsdmF0aW9uLgpBbmQgaW4gdGhhdCBkYXkgc2hhbGwgeWUgc2F5LCBQcmFpc2UgdGhlIExPUkQsIGNhbGwgdXBvbiBoaXMgbmFtZSwgZGVjbGFyZSBoaXMgZG9pbmdzIGFtb25nIHRoZSBwZW9wbGUsIG1ha2UgbWVudGlvbiB0aGF0IGhpcyBuYW1lIGlzIGV4YWx0ZWQuClNpbmcgdW50byB0aGUgTE9SRDsgZm9yIGhlIGhhdGggZG9uZSBleGNlbGxlbnQgdGhpbmdzOiB0aGlzIGlzIGtub3duIGluIGFsbCB0aGUgZWFydGguCkNyeSBvdXQgYW5kIHNob3V0LCB0aG91IGluaGFiaXRhbnQgb2YgWmlvbjogZm9yIGdyZWF0IGlzIHRoZSBIb2x5IE9uZSBvZiBJc3JhZWwgaW4gdGhlIG1pZHN0IG9mIHRoZWUuClRoZSBidXJkZW4gb2YgQmFieWxvbiwgd2hpY2ggSXNhaWFoIHRoZSBzb24gb2YgQW1veiBkaWQgc2VlLgpMaWZ0IHllIHVwIGEgYmFubmVyIHVwb24gdGhlIGhpZ2ggbW91bnRhaW4sIGV4YWx0IHRoZSB2b2ljZSB1bnRvIHRoZW0sIHNoYWtlIHRoZSBoYW5kLCB0aGF0IHRoZXkgbWF5IGdvIGludG8gdGhlIGdhdGVzIG9mIHRoZSBub2JsZXMuCkkgaGF2ZSBjb21tYW5kZWQgbXkgc2FuY3RpZmllZCBvbmVzLCBJIGhhdmUgYWxzbyBjYWxsZWQgbXkgbWlnaHR5IG9uZXMgZm9yIG1pbmUgYW5nZXIsIGV2ZW4gdGhlbSB0aGF0IHJlam9pY2UgaW4gbXkgaGlnaG5lc3MuClRoZSBub2lzZSBvZiBhIG11bHRpdHVkZSBpbiB0aGUgbW91bnRhaW5zLCBsaWtlIGFzIG9mIGEgZ3JlYXQgcGVvcGxlOyBhIHR1bXVsdHVvdXMgbm9pc2Ugb2YgdGhlIGtpbmdkb21zIG9mIG5hdGlvbnMgZ2F0aGVyZWQgdG9nZXRoZXI6IHRoZSBMT1JEIG9mIGhvc3RzIG11c3RlcmV0aCB0aGUgaG9zdCBvZiB0aGUgYmF0dGxlLgpUaGV5IGNvbWUgZnJvbSBhIGZhciBjb3VudHJ5LCBmcm9tIHRoZSBlbmQgb2YgaGVhdmVuLCBldmVuIHRoZSBMT1JELCBhbmQgdGhlIHdlYXBvbnMgb2YgaGlzIGluZGlnbmF0aW9uLCB0byBkZXN0cm95IHRoZSB3aG9sZSBsYW5kLgpIb3dsIHllOyBmb3IgdGhlIGRheSBvZiB0aGUgTE9SRCBpcyBhdCBoYW5kOyBpdCBzaGFsbCBjb21lIGFzIGEgZGVzdHJ1Y3Rpb24gZnJvbSB0aGUgQWxtaWdodHkuClRoZXJlZm9yZSBzaGFsbCBhbGwgaGFuZHMgYmUgZmFpbnQsIGFuZCBldmVyeSBtYW4ncyBoZWFydCBzaGFsbCBtZWx0OgpBbmQgdGhleSBzaGFsbCBiZSBhZnJhaWQ6IHBhbmdzIGFuZCBzb3Jyb3dzIHNoYWxsIHRha2UgaG9sZCBvZiB0aGVtOyB0aGV5IHNoYWxsIGJlIGluIHBhaW4gYXMgYSB3b21hbiB0aGF0IHRyYXZhaWxldGg6IHRoZXkgc2hhbGwgYmUgYW1hemVkIG9uZSBhdCBhbm90aGVyOyB0aGVpciBmYWNlcyBzaGFsbCBiZSBhcyBmbGFtZXMuCkJlaG9sZCwgdGhlIGRheSBvZiB0aGUgTE9SRCBjb21ldGgsIGNydWVsIGJvdGggd2l0aCB3cmF0aCBhbmQgZmllcmNlIGFuZ2VyLCB0byBsYXkgdGhlIGxhbmQgZGVzb2xhdGU6IGFuZCBoZSBzaGFsbCBkZXN0cm95IHRoZSBzaW5uZXJzIHRoZXJlb2Ygb3V0IG9mIGl0LgpGb3IgdGhlIHN0YXJzIG9mIGhlYXZlbiBhbmQgdGhlIGNvbnN0ZWxsYXRpb25zIHRoZXJlb2Ygc2hhbGwgbm90IGdpdmUgdGhlaXIgbGlnaHQ6IHRoZSBzdW4gc2hhbGwgYmUgZGFya2VuZWQgaW4gaGlzIGdvaW5nIGZvcnRoLCBhbmQgdGhlIG1vb24gc2hhbGwgbm90IGNhdXNlIGhlciBsaWdodCB0byBzaGluZS4KQW5kIEkgd2lsbCBwdW5pc2ggdGhlIHdvcmxkIGZvciB0aGVpciBldmlsLCBhbmQgdGhlIHdpY2tlZCBmb3IgdGhlaXIgaW5pcXVpdHk7IGFuZCBJIHdpbGwgY2F1c2UgdGhlIGFycm9nYW5jeSBvZiB0aGUgcHJvdWQgdG8gY2Vhc2UsIGFuZCB3aWxsIGxheSBsb3cgdGhlIGhhdWdodGluZXNzIG9mIHRoZSB0ZXJyaWJsZS4KSSB3aWxsIG1ha2UgYSBtYW4gbW9yZSBwcmVjaW91cyB0aGFuIGZpbmUgZ29sZDsgZXZlbiBhIG1hbiB0aGFuIHRoZSBnb2xkZW4gd2VkZ2Ugb2YgT3BoaXIuClRoZXJlZm9yZSBJIHdpbGwgc2hha2UgdGhlIGhlYXZlbnMsIGFuZCB0aGUgZWFydGggc2hhbGwgcmVtb3ZlIG91dCBvZiBoZXIgcGxhY2UsIGluIHRoZSB3cmF0aCBvZiB0aGUgTE9SRCBvZiBob3N0cywgYW5kIGluIHRoZSBkYXkgb2YgaGlzIGZpZXJjZSBhbmdlci4KQW5kIGl0IHNoYWxsIGJlIGFzIHRoZSBjaGFzZWQgcm9lLCBhbmQgYXMgYSBzaGVlcCB0aGF0IG5vIG1hbiB0YWtldGggdXA6IHRoZXkgc2hhbGwgZXZlcnkgbWFuIHR1cm4gdG8gaGlzIG93biBwZW9wbGUsIGFuZCBmbGVlIGV2ZXJ5IG9uZSBpbnRvIGhpcyBvd24gbGFuZC4KRXZlcnkgb25lIHRoYXQgaXMgZm91bmQgc2hhbGwgYmUgdGhydXN0IHRocm91Z2g7IGFuZCBldmVyeSBvbmUgdGhhdCBpcyBqb2luZWQgdW50byB0aGVtIHNoYWxsIGZhbGwgYnkgdGhlIHN3b3JkLgpUaGVpciBjaGlsZHJlbiBhbHNvIHNoYWxsIGJlIGRhc2hlZCB0byBwaWVjZXMgYmVmb3JlIHRoZWlyIGV5ZXM7IHRoZWlyIGhvdXNlcyBzaGFsbCBiZSBzcG9pbGVkLCBhbmQgdGhlaXIgd2l2ZXMgcmF2aXNoZWQuCkJlaG9sZCwgSSB3aWxsIHN0aXIgdXAgdGhlIE1lZGVzIGFnYWluc3QgdGhlbSwgd2hpY2ggc2hhbGwgbm90IHJlZ2FyZCBzaWx2ZXI7IGFuZCBhcyBmb3IgZ29sZCwgdGhleSBzaGFsbCBub3QgZGVsaWdodCBpbiBpdC4KVGhlaXIgYm93cyBhbHNvIHNoYWxsIGRhc2ggdGhlIHlvdW5nIG1lbiB0byBwaWVjZXM7IGFuZCB0aGV5IHNoYWxsIGhhdmUgbm8gcGl0eSBvbiB0aGUgZnJ1aXQgb2YgdGhlIHdvbWI7IHRoZWlyIGV5ZXMgc2hhbGwgbm90IHNwYXJlIGNoaWxkcmVuLgpBbmQgQmFieWxvbiwgdGhlIGdsb3J5IG9mIGtpbmdkb21zLCB0aGUgYmVhdXR5IG9mIHRoZSBDaGFsZGVlcycgZXhjZWxsZW5jeSwgc2hhbGwgYmUgYXMgd2hlbiBHb2Qgb3ZlcnRocmV3IFNvZG9tIGFuZCBHb21vcnJhaC4KSXQgc2hhbGwgbmV2ZXIgYmUgaW5oYWJpdGVkLCBuZWl0aGVyIHNoYWxsIGl0IGJlIGR3ZWx0IGluIGZyb20gZ2VuZXJhdGlvbiB0byBnZW5lcmF0aW9uOiBuZWl0aGVyIHNoYWxsIHRoZSBBcmFiaWFuIHBpdGNoIHRlbnQgdGhlcmU7IG5laXRoZXIgc2hhbGwgdGhlIHNoZXBoZXJkcyBtYWtlIHRoZWlyIGZvbGQgdGhlcmUuCkJ1dCB3aWxkIGJlYXN0cyBvZiB0aGUgZGVzZXJ0IHNoYWxsIGxpZSB0aGVyZTsgYW5kIHRoZWlyIGhvdXNlcyBzaGFsbCBiZSBmdWxsIG9mIGRvbGVmdWwgY3JlYXR1cmVzOyBhbmQgb3dscyBzaGFsbCBkd2VsbCB0aGVyZSwgYW5kIHNhdHlycyBzaGFsbCBkYW5jZSB0aGVyZS4KQW5kIHRoZSB3aWxkIGJlYXN0cyBvZiB0aGUgaXNsYW5kcyBzaGFsbCBjcnkgaW4gdGhlaXIgZGVzb2xhdGUgaG91c2VzLCBhbmQgZHJhZ29ucyBpbiB0aGVpciBwbGVhc2FudCBwYWxhY2VzOiBhbmQgaGVyIHRpbWUgaXMgbmVhciB0byBjb21lLCBhbmQgaGVyIGRheXMgc2hhbGwgbm90IGJlIHByb2xvbmdlZC4KRm9yIHRoZSBMT1JEIHdpbGwgaGF2ZSBtZXJjeSBvbiBKYWNvYiwgYW5kIHdpbGwgeWV0IGNob29zZSBJc3JhZWwsIGFuZCBzZXQgdGhlbSBpbiB0aGVpciBvd24gbGFuZDogYW5kIHRoZSBzdHJhbmdlcnMgc2hhbGwgYmUgam9pbmVkIHdpdGggdGhlbSwgYW5kIHRoZXkgc2hhbGwgY2xlYXZlIHRvIHRoZSBob3VzZSBvZiBKYWNvYi4KQW5kIHRoZSBwZW9wbGUgc2hhbGwgdGFrZSB0aGVtLCBhbmQgYnJpbmcgdGhlbSB0byB0aGVpciBwbGFjZTogYW5kIHRoZSBob3VzZSBvZiBJc3JhZWwgc2hhbGwgcG9zc2VzcyB0aGVtIGluIHRoZSBsYW5kIG9mIHRoZSBMT1JEIGZvciBzZXJ2YW50cyBhbmQgaGFuZG1haWRzOiBhbmQgdGhleSBzaGFsbCB0YWtlIHRoZW0gY2FwdGl2ZXMsIHdob3NlIGNhcHRpdmVzIHRoZXkgd2VyZTsgYW5kIHRoZXkgc2hhbGwgcnVsZSBvdmVyIHRoZWlyIG9wcHJlc3NvcnMuCkFuZCBpdCBzaGFsbCBjb21lIHRvIHBhc3MgaW4gdGhlIGRheSB0aGF0IHRoZSBMT1JEIHNoYWxsIGdpdmUgdGhlZSByZXN0IGZyb20gdGh5IHNvcnJvdywgYW5kIGZyb20gdGh5IGZlYXIsIGFuZCBmcm9tIHRoZSBoYXJkIGJvbmRhZ2Ugd2hlcmVpbiB0aG91IHdhc3QgbWFkZSB0byBzZXJ2ZSwKVGhhdCB0aG91IHNoYWx0IHRha2UgdXAgdGhpcyBwcm92ZXJiIGFnYWluc3QgdGhlIGtpbmcgb2YgQmFieWxvbiwgYW5kIHNheSwgSG93IGhhdGggdGhlIG9wcHJlc3NvciBjZWFzZWQhIHRoZSBnb2xkZW4gY2l0eSBjZWFzZWQhClRoZSBMT1JEIGhhdGggYnJva2VuIHRoZSBzdGFmZiBvZiB0aGUgd2lja2VkLCBhbmQgdGhlIHNjZXB0cmUgb2YgdGhlIHJ1bGVycy4KSGUgd2hvIHNtb3RlIHRoZSBwZW9wbGUgaW4gd3JhdGggd2l0aCBhIGNvbnRpbnVhbCBzdHJva2UsIGhlIHRoYXQgcnVsZWQgdGhlIG5hdGlvbnMgaW4gYW5nZXIsIGlzIHBlcnNlY3V0ZWQsIGFuZCBub25lIGhpbmRlcmV0aC4KVGhlIHdob2xlIGVhcnRoIGlzIGF0IHJlc3QsIGFuZCBpcyBxdWlldDogdGhleSBicmVhayBmb3J0aCBpbnRvIHNpbmdpbmcuClllYSwgdGhlIGZpciB0cmVlcyByZWpvaWNlIGF0IHRoZWUsIGFuZCB0aGUgY2VkYXJzIG9mIExlYmFub24sIHNheWluZywgU2luY2UgdGhvdSBhcnQgbGFpZCBkb3duLCBubyBmZWxsZXIgaXMgY29tZSB1cCBhZ2FpbnN0IHVzLgpIZWxsIGZyb20gYmVuZWF0aCBpcyBtb3ZlZCBmb3IgdGhlZSB0byBtZWV0IHRoZWUgYXQgdGh5IGNvbWluZzogaXQgc3RpcnJldGggdXAgdGhlIGRlYWQgZm9yIHRoZWUsIGV2ZW4gYWxsIHRoZSBjaGllZiBvbmVzIG9mIHRoZSBlYXJ0aDsgaXQgaGF0aCByYWlzZWQgdXAgZnJvbSB0aGVpciB0aHJvbmVzIGFsbCB0aGUga2luZ3Mgb2YgdGhlIG5hdGlvbnMuCkFsbCB0aGV5IHNoYWxsIHNwZWFrIGFuZCBzYXkgdW50byB0aGVlLCBBcnQgdGhvdSBhbHNvIGJlY29tZSB3ZWFrIGFzIHdlPyBhcnQgdGhvdSBiZWNvbWUgbGlrZSB1bnRvIHVzPwpUaHkgcG9tcCBpcyBicm91Z2h0IGRvd24gdG8gdGhlIGdyYXZlLCBhbmQgdGhlIG5vaXNlIG9mIHRoeSB2aW9sczogdGhlIHdvcm0gaXMgc3ByZWFkIHVuZGVyIHRoZWUsIGFuZCB0aGUgd29ybXMgY292ZXIgdGhlZS4KSG93IGFydCB0aG91IGZhbGxlbiBmcm9tIGhlYXZlbiwgTyBMdWNpZmVyLCBzb24gb2YgdGhlIG1vcm5pbmchIGhvdyBhcnQgdGhvdSBjdXQgZG93biB0byB0aGUgZ3JvdW5kLCB3aGljaCBkaWRzdCB3ZWFrZW4gdGhlIG5hdGlvbnMhCkZvciB0aG91IGhhc3Qgc2FpZCBpbiB0aGluZSBoZWFydCwgSSB3aWxsIGFzY2VuZCBpbnRvIGhlYXZlbiwgSSB3aWxsIGV4YWx0IG15IHRocm9uZSBhYm92ZSB0aGUgc3RhcnMgb2YgR29kOiBJIHdpbGwgc2l0IGFsc28gdXBvbiB0aGUgbW91bnQgb2YgdGhlIGNvbmdyZWdhdGlvbiwgaW4gdGhlIHNpZGVzIG9mIHRoZSBub3J0aDoKSSB3aWxsIGFzY2VuZCBhYm92ZSB0aGUgaGVpZ2h0cyBvZiB0aGUgY2xvdWRzOyBJIHdpbGwgYmUgbGlrZSB0aGUgbW9zdCBIaWdoLgpZZXQgdGhvdSBzaGFsdCBiZSBicm91Z2h0IGRvd24gdG8gaGVsbCwgdG8gdGhlIHNpZGVzIG9mIHRoZSBwaXQuClRoZXkgdGhhdCBzZWUgdGhlZSBzaGFsbCBuYXJyb3dseSBsb29rIHVwb24gdGhlZSwgYW5kIGNvbnNpZGVyIHRoZWUsIHNheWluZywgSXMgdGhpcyB0aGUgbWFuIHRoYXQgbWFkZSB0aGUgZWFydGggdG8gdHJlbWJsZSwgdGhhdCBkaWQgc2hha2Uga2luZ2RvbXM7ClRoYXQgbWFkZSB0aGUgd29ybGQgYXMgYSB3aWxkZXJuZXNzLCBhbmQgZGVzdHJveWVkIHRoZSBjaXRpZXMgdGhlcmVvZjsgdGhhdCBvcGVuZWQgbm90IHRoZSBob3VzZSBvZiBoaXMgcHJpc29uZXJzPwpBbGwgdGhlIGtpbmdzIG9mIHRoZSBuYXRpb25zLCBldmVuIGFsbCBvZiB0aGVtLCBsaWUgaW4gZ2xvcnksIGV2ZXJ5IG9uZSBpbiBoaXMgb3duIGhvdXNlLgpCdXQgdGhvdSBhcnQgY2FzdCBvdXQgb2YgdGh5IGdyYXZlIGxpa2UgYW4gYWJvbWluYWJsZSBicmFuY2gsIGFuZCBhcyB0aGUgcmFpbWVudCBvZiB0aG9zZSB0aGF0IGFyZSBzbGFpbiwgdGhydXN0IHRocm91Z2ggd2l0aCBhIHN3b3JkLCB0aGF0IGdvIGRvd24gdG8gdGhlIHN0b25lcyBvZiB0aGUgcGl0OyBhcyBhIGNhcmNhc2UgdHJvZGRlbiB1bmRlciBmZWV0LgpUaG91IHNoYWx0IG5vdCBiZSBqb2luZWQgd2l0aCB0aGVtIGluIGJ1cmlhbCwgYmVjYXVzZSB0aG91IGhhc3QgZGVzdHJveWVkIHRoeSBsYW5kLCBhbmQgc2xhaW4gdGh5IHBlb3BsZTogdGhlIHNlZWQgb2YgZXZpbGRvZXJzIHNoYWxsIG5ldmVyIGJlIHJlbm93bmVkLgpQcmVwYXJlIHNsYXVnaHRlciBmb3IgaGlzIGNoaWxkcmVuIGZvciB0aGUgaW5pcXVpdHkgb2YgdGhlaXIgZmF0aGVyczsgdGhhdCB0aGV5IGRvIG5vdCByaXNlLCBub3IgcG9zc2VzcyB0aGUgbGFuZCwgbm9yIGZpbGwgdGhlIGZhY2Ugb2YgdGhlIHdvcmxkIHdpdGggY2l0aWVzLgpGb3IgSSB3aWxsIHJpc2UgdXAgYWdhaW5zdCB0aGVtLCBzYWl0aCB0aGUgTE9SRCBvZiBob3N0cywgYW5kIGN1dCBvZmYgZnJvbSBCYWJ5bG9uIHRoZSBuYW1lLCBhbmQgcmVtbmFudCwgYW5kIHNvbiwgYW5kIG5lcGhldywgc2FpdGggdGhlIExPUkQuCkkgd2lsbCBhbHNvIG1ha2UgaXQgYSBwb3NzZXNzaW9uIGZvciB0aGUgYml0dGVybiwgYW5kIHBvb2xzIG9mIHdhdGVyOiBhbmQgSSB3aWxsIHN3ZWVwIGl0IHdpdGggdGhlIGJlc29tIG9mIGRlc3RydWN0aW9uLCBzYWl0aCB0aGUgTE9SRCBvZiBob3N0cy4KVGhlIExPUkQgb2YgaG9zdHMgaGF0aCBzd29ybiwgc2F5aW5nLCBTdXJlbHkgYXMgSSBoYXZlIHRob3VnaHQsIHNvIHNoYWxsIGl0IGNvbWUgdG8gcGFzczsgYW5kIGFzIEkgaGF2ZSBwdXJwb3NlZCwgc28gc2hhbGwgaXQgc3RhbmQ6ClRoYXQgSSB3aWxsIGJyZWFrIHRoZSBBc3N5cmlhbiBpbiBteSBsYW5kLCBhbmQgdXBvbiBteSBtb3VudGFpbnMgdHJlYWQgaGltIHVuZGVyIGZvb3Q6IHRoZW4gc2hhbGwgaGlzIHlva2UgZGVwYXJ0IGZyb20gb2ZmIHRoZW0sIGFuZCBoaXMgYnVyZGVuIGRlcGFydCBmcm9tIG9mZiB0aGVpciBzaG91bGRlcnMuClRoaXMgaXMgdGhlIHB1cnBvc2UgdGhhdCBpcyBwdXJwb3NlZCB1cG9uIHRoZSB3aG9sZSBlYXJ0aDogYW5kIHRoaXMgaXMgdGhlIGhhbmQgdGhhdCBpcyBzdHJldGNoZWQgb3V0IHVwb24gYWxsIHRoZSBuYXRpb25zLgpGb3IgdGhlIExPUkQgb2YgaG9zdHMgaGF0aCBwdXJwb3NlZCwgYW5kIHdobyBzaGFsbCBkaXNhbm51bCBpdD8gYW5kIGhpcyBoYW5kIGlzIHN0cmV0Y2hlZCBvdXQsIGFuZCB3aG8gc2hhbGwgdHVybiBpdCBiYWNrPwpJbiB0aGUgeWVhciB0aGF0IGtpbmcgQWhheiBkaWVkIHdhcyB0aGlzIGJ1cmRlbi4KUmVqb2ljZSBub3QgdGhvdSwgd2hvbGUgUGFsZXN0aW5hLCBiZWNhdXNlIHRoZSByb2Qgb2YgaGltIHRoYXQgc21vdGUgdGhlZSBpcyBicm9rZW46IGZvciBvdXQgb2YgdGhlIHNlcnBlbnQncyByb290IHNoYWxsIGNvbWUgZm9ydGggYSBjb2NrYXRyaWNlLCBhbmQgaGlzIGZydWl0IHNoYWxsIGJlIGEgZmllcnkgZmx5aW5nIHNlcnBlbnQuCkFuZCB0aGUgZmlyc3Rib3JuIG9mIHRoZSBwb29yIHNoYWxsIGZlZWQsIGFuZCB0aGUgbmVlZHkgc2hhbGwgbGllIGRvd24gaW4gc2FmZXR5OiBhbmQgSSB3aWxsIGtpbGwgdGh5IHJvb3Qgd2l0aCBmYW1pbmUsIGFuZCBoZSBzaGFsbCBzbGF5IHRoeSByZW1uYW50LgpIb3dsLCBPIGdhdGU7IGNyeSwgTyBjaXR5OyB0aG91LCB3aG9sZSBQYWxlc3RpbmEsIGFydCBkaXNzb2x2ZWQ6IGZvciB0aGVyZSBzaGFsbCBjb21lIGZyb20gdGhlIG5vcnRoIGEgc21va2UsIGFuZCBub25lIHNoYWxsIGJlIGFsb25lIGluIGhpcyBhcHBvaW50ZWQgdGltZXMuCldoYXQgc2hhbGwgb25lIHRoZW4gYW5zd2VyIHRoZSBtZXNzZW5nZXJzIG9mIHRoZSBuYXRpb24/IFRoYXQgdGhlIExPUkQgaGF0aCBmb3VuZGVkIFppb24sIGFuZCB0aGUgcG9vciBvZiBoaXMgcGVvcGxlIHNoYWxsIHRydXN0IGluIGl0LgpUaGUgYnVyZGVuIG9mIE1vYWIuIEJlY2F1c2UgaW4gdGhlIG5pZ2h0IEFyIG9mIE1vYWIgaXMgbGFpZCB3YXN0ZSwgYW5kIGJyb3VnaHQgdG8gc2lsZW5jZTsgYmVjYXVzZSBpbiB0aGUgbmlnaHQgS2lyIG9mIE1vYWIgaXMgbGFpZCB3YXN0ZSwgYW5kIGJyb3VnaHQgdG8gc2lsZW5jZTsKSGUgaXMgZ29uZSB1cCB0byBCYWppdGgsIGFuZCB0byBEaWJvbiwgdGhlIGhpZ2ggcGxhY2VzLCB0byB3ZWVwOiBNb2FiIHNoYWxsIGhvd2wgb3ZlciBOZWJvLCBhbmQgb3ZlciBNZWRlYmE6IG9uIGFsbCB0aGVpciBoZWFkcyBzaGFsbCBiZSBiYWxkbmVzcywgYW5kIGV2ZXJ5IGJlYXJkIGN1dCBvZmYuCkluIHRoZWlyIHN0cmVldHMgdGhleSBzaGFsbCBnaXJkIHRoZW1zZWx2ZXMgd2l0aCBzYWNrY2xvdGg6IG9uIHRoZSB0b3BzIG9mIHRoZWlyIGhvdXNlcywgYW5kIGluIHRoZWlyIHN0cmVldHMsIGV2ZXJ5IG9uZSBzaGFsbCBob3dsLCB3ZWVwaW5nIGFidW5kYW50bHkuCkFuZCBIZXNoYm9uIHNoYWxsIGNyeSwgYW5kIEVsZWFsZWg6IHRoZWlyIHZvaWNlIHNoYWxsIGJlIGhlYXJkIGV2ZW4gdW50byBKYWhhejogdGhlcmVmb3JlIHRoZSBhcm1lZCBzb2xkaWVycyBvZiBNb2FiIHNoYWxsIGNyeSBvdXQ7IGhpcyBsaWZlIHNoYWxsIGJlIGdyaWV2b3VzIHVudG8gaGltLgpNeSBoZWFydCBzaGFsbCBjcnkgb3V0IGZvciBNb2FiOyBoaXMgZnVnaXRpdmVzIHNoYWxsIGZsZWUgdW50byBab2FyLCBhbiBoZWlmZXIgb2YgdGhyZWUgeWVhcnMgb2xkOiBmb3IgYnkgdGhlIG1vdW50aW5nIHVwIG9mIEx1aGl0aCB3aXRoIHdlZXBpbmcgc2hhbGwgdGhleSBnbyBpdCB1cDsgZm9yIGluIHRoZSB3YXkgb2YgSG9yb25haW0gdGhleSBzaGFsbCByYWlzZSB1cCBhIGNyeSBvZiBkZXN0cnVjdGlvbi4KRm9yIHRoZSB3YXRlcnMgb2YgTmltcmltIHNoYWxsIGJlIGRlc29sYXRlOiBmb3IgdGhlIGhheSBpcyB3aXRoZXJlZCBhd2F5LCB0aGUgZ3Jhc3MgZmFpbGV0aCwgdGhlcmUgaXMgbm8gZ3JlZW4gdGhpbmcuClRoZXJlZm9yZSB0aGUgYWJ1bmRhbmNlIHRoZXkgaGF2ZSBnb3R0ZW4sIGFuZCB0aGF0IHdoaWNoIHRoZXkgaGF2ZSBsYWlkIHVwLCBzaGFsbCB0aGV5IGNhcnJ5IGF3YXkgdG8gdGhlIGJyb29rIG9mIHRoZSB3aWxsb3dzLgpGb3IgdGhlIGNyeSBpcyBnb25lIHJvdW5kIGFib3V0IHRoZSBib3JkZXJzIG9mIE1vYWI7IHRoZSBob3dsaW5nIHRoZXJlb2YgdW50byBFZ2xhaW0sIGFuZCB0aGUgaG93bGluZyB0aGVyZW9mIHVudG8gQmVlcmVsaW0uCkZvciB0aGUgd2F0ZXJzIG9mIERpbW9uIHNoYWxsIGJlIGZ1bGwgb2YgYmxvb2Q6IGZvciBJIHdpbGwgYnJpbmcgbW9yZSB1cG9uIERpbW9uLCBsaW9ucyB1cG9uIGhpbSB0aGF0IGVzY2FwZXRoIG9mIE1vYWIsIGFuZCB1cG9uIHRoZSByZW1uYW50IG9mIHRoZSBsYW5kLgpTZW5kIHllIHRoZSBsYW1iIHRvIHRoZSBydWxlciBvZiB0aGUgbGFuZCBmcm9tIFNlbGEgdG8gdGhlIHdpbGRlcm5lc3MsIHVudG8gdGhlIG1vdW50IG9mIHRoZSBkYXVnaHRlciBvZiBaaW9uLgpGb3IgaXQgc2hhbGwgYmUsIHRoYXQsIGFzIGEgd2FuZGVyaW5nIGJpcmQgY2FzdCBvdXQgb2YgdGhlIG5lc3QsIHNvIHRoZSBkYXVnaHRlcnMgb2YgTW9hYiBzaGFsbCBiZSBhdCB0aGUgZm9yZHMgb2YgQXJub24uClRha2UgY291bnNlbCwgZXhlY3V0ZSBqdWRnbWVudDsgbWFrZSB0aHkgc2hhZG93IGFzIHRoZSBuaWdodCBpbiB0aGUgbWlkc3Qgb2YgdGhlIG5vb25kYXk7IGhpZGUgdGhlIG91dGNhc3RzOyBiZXdyYXkgbm90IGhpbSB0aGF0IHdhbmRlcmV0aC4KTGV0IG1pbmUgb3V0Y2FzdHMgZHdlbGwgd2l0aCB0aGVlLCBNb2FiOyBiZSB0aG91IGEgY292ZXJ0IHRvIHRoZW0gZnJvbSB0aGUgZmFjZSBvZiB0aGUgc3BvaWxlcjogZm9yIHRoZSBleHRvcnRpb25lciBpcyBhdCBhbiBlbmQsIHRoZSBzcG9pbGVyIGNlYXNldGgsIHRoZSBvcHByZXNzb3JzIGFyZSBjb25zdW1lZCBvdXQgb2YgdGhlIGxhbmQuCkFuZCBpbiBtZXJjeSBzaGFsbCB0aGUgdGhyb25lIGJlIGVzdGFibGlzaGVkOiBhbmQgaGUgc2hhbGwgc2l0IHVwb24gaXQgaW4gdHJ1dGggaW4gdGhlIHRhYmVybmFjbGUgb2YgRGF2aWQsIGp1ZGdpbmcsIGFuZCBzZWVraW5nIGp1ZGdtZW50LCBhbmQgaGFzdGluZyByaWdodGVvdXNuZXNzLgpXZSBoYXZlIGhlYXJkIG9mIHRoZSBwcmlkZSBvZiBNb2FiOyBoZSBpcyB2ZXJ5IHByb3VkOiBldmVuIG9mIGhpcyBoYXVnaHRpbmVzcywgYW5kIGhpcyBwcmlkZSwgYW5kIGhpcyB3cmF0aDogYnV0IGhpcyBsaWVzIHNoYWxsIG5vdCBiZSBzby4KVGhlcmVmb3JlIHNoYWxsIE1vYWIgaG93bCBmb3IgTW9hYiwgZXZlcnkgb25lIHNoYWxsIGhvd2w6IGZvciB0aGUgZm91bmRhdGlvbnMgb2YgS2lyaGFyZXNldGggc2hhbGwgeWUgbW91cm47IHN1cmVseSB0aGV5IGFyZSBzdHJpY2tlbi4KRm9yIHRoZSBmaWVsZHMgb2YgSGVzaGJvbiBsYW5ndWlzaCwgYW5kIHRoZSB2aW5lIG9mIFNpYm1haDogdGhlIGxvcmRzIG9mIHRoZSBoZWF0aGVuIGhhdmUgYnJva2VuIGRvd24gdGhlIHByaW5jaXBhbCBwbGFudHMgdGhlcmVvZiwgdGhleSBhcmUgY29tZSBldmVuIHVudG8gSmF6ZXIsIHRoZXkgd2FuZGVyZWQgdGhyb3VnaCB0aGUgd2lsZGVybmVzczogaGVyIGJyYW5jaGVzIGFyZSBzdHJldGNoZWQgb3V0LCB0aGV5IGFyZSBnb25lIG92ZXIgdGhlIHNlYS4KVGhlcmVmb3JlIEkgd2lsbCBiZXdhaWwgd2l0aCB0aGUgd2VlcGluZyBvZiBKYXplciB0aGUgdmluZSBvZiBTaWJtYWg6IEkgd2lsbCB3YXRlciB0aGVlIHdpdGggbXkgdGVhcnMsIE8gSGVzaGJvbiwgYW5kIEVsZWFsZWg6IGZvciB0aGUgc2hvdXRpbmcgZm9yIHRoeSBzdW1tZXIgZnJ1aXRzIGFuZCBmb3IgdGh5IGhhcnZlc3QgaXMgZmFsbGVuLgpBbmQgZ2xhZG5lc3MgaXMgdGFrZW4gYXdheSwgYW5kIGpveSBvdXQgb2YgdGhlIHBsZW50aWZ1bCBmaWVsZDsgYW5kIGluIHRoZSB2aW5leWFyZHMgdGhlcmUgc2hhbGwgYmUgbm8gc2luZ2luZywgbmVpdGhlciBzaGFsbCB0aGVyZSBiZSBzaG91dGluZzogdGhlIHRyZWFkZXJzIHNoYWxsIHRyZWFkIG91dCBubyB3aW5lIGluIHRoZWlyIHByZXNzZXM7IEkgaGF2ZSBtYWRlIHRoZWlyIHZpbnRhZ2Ugc2hvdXRpbmcgdG8gY2Vhc2UuCldoZXJlZm9yZSBteSBib3dlbHMgc2hhbGwgc291bmQgbGlrZSBhbiBoYXJwIGZvciBNb2FiLCBhbmQgbWluZSBpbndhcmQgcGFydHMgZm9yIEtpcmhhcmVzaC4KQW5kIGl0IHNoYWxsIGNvbWUgdG8gcGFzcywgd2hlbiBpdCBpcyBzZWVuIHRoYXQgTW9hYiBpcyB3ZWFyeSBvbiB0aGUgaGlnaCBwbGFjZSwgdGhhdCBoZSBzaGFsbCBjb21lIHRvIGhpcyBzYW5jdHVhcnkgdG8gcHJheTsgYnV0IGhlIHNoYWxsIG5vdCBwcmV2YWlsLgpUaGlzIGlzIHRoZSB3b3JkIHRoYXQgdGhlIExPUkQgaGF0aCBzcG9rZW4gY29uY2VybmluZyBNb2FiIHNpbmNlIHRoYXQgdGltZS4KQnV0IG5vdyB0aGUgTE9SRCBoYXRoIHNwb2tlbiwgc2F5aW5nLCBXaXRoaW4gdGhyZWUgeWVhcnMsIGFzIHRoZSB5ZWFycyBvZiBhbiBoaXJlbGluZywgYW5kIHRoZSBnbG9yeSBvZiBNb2FiIHNoYWxsIGJlIGNvbnRlbW5lZCwgd2l0aCBhbGwgdGhhdCBncmVhdCBtdWx0aXR1ZGU7IGFuZCB0aGUgcmVtbmFudCBzaGFsbCBiZSB2ZXJ5IHNtYWxsIGFuZCBmZWVibGUuClRoZSBidXJkZW4gb2YgRGFtYXNjdXMuIEJlaG9sZCwgRGFtYXNjdXMgaXMgdGFrZW4gYXdheSBmcm9tIGJlaW5nIGEgY2l0eSwgYW5kIGl0IHNoYWxsIGJlIGEgcnVpbm91cyBoZWFwLgpUaGUgY2l0aWVzIG9mIEFyb2VyIGFyZSBmb3JzYWtlbjogdGhleSBzaGFsbCBiZSBmb3IgZmxvY2tzLCB3aGljaCBzaGFsbCBsaWUgZG93biwgYW5kIG5vbmUgc2hhbGwgbWFrZSB0aGVtIGFmcmFpZC4KVGhlIGZvcnRyZXNzIGFsc28gc2hhbGwgY2Vhc2UgZnJvbSBFcGhyYWltLCBhbmQgdGhlIGtpbmdkb20gZnJvbSBEYW1hc2N1cywgYW5kIHRoZSByZW1uYW50IG9mIFN5cmlhOiB0aGV5IHNoYWxsIGJlIGFzIHRoZSBnbG9yeSBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLCBzYWl0aCB0aGUgTE9SRCBvZiBob3N0cy4KQW5kIGluIHRoYXQgZGF5IGl0IHNoYWxsIGNvbWUgdG8gcGFzcywgdGhhdCB0aGUgZ2xvcnkgb2YgSmFjb2Igc2hhbGwgYmUgbWFkZSB0aGluLCBhbmQgdGhlIGZhdG5lc3Mgb2YgaGlzIGZsZXNoIHNoYWxsIHdheCBsZWFuLgpBbmQgaXQgc2hhbGwgYmUgYXMgd2hlbiB0aGUgaGFydmVzdG1hbiBnYXRoZXJldGggdGhlIGNvcm4sIGFuZCByZWFwZXRoIHRoZSBlYXJzIHdpdGggaGlzIGFybTsgYW5kIGl0IHNoYWxsIGJlIGFzIGhlIHRoYXQgZ2F0aGVyZXRoIGVhcnMgaW4gdGhlIHZhbGxleSBvZiBSZXBoYWltLgpZZXQgZ2xlYW5pbmcgZ3JhcGVzIHNoYWxsIGJlIGxlZnQgaW4gaXQsIGFzIHRoZSBzaGFraW5nIG9mIGFuIG9saXZlIHRyZWUsIHR3byBvciB0aHJlZSBiZXJyaWVzIGluIHRoZSB0b3Agb2YgdGhlIHVwcGVybW9zdCBib3VnaCwgZm91ciBvciBmaXZlIGluIHRoZSBvdXRtb3N0IGZydWl0ZnVsIGJyYW5jaGVzIHRoZXJlb2YsIHNhaXRoIHRoZSBMT1JEIEdvZCBvZiBJc3JhZWwuCkF0IHRoYXQgZGF5IHNoYWxsIGEgbWFuIGxvb2sgdG8gaGlzIE1ha2VyLCBhbmQgaGlzIGV5ZXMgc2hhbGwgaGF2ZSByZXNwZWN0IHRvIHRoZSBIb2x5IE9uZSBvZiBJc3JhZWwuCkFuZCBoZSBzaGFsbCBub3QgbG9vayB0byB0aGUgYWx0YXJzLCB0aGUgd29yayBvZiBoaXMgaGFuZHMsIG5laXRoZXIgc2hhbGwgcmVzcGVjdCB0aGF0IHdoaWNoIGhpcyBmaW5nZXJzIGhhdmUgbWFkZSwgZWl0aGVyIHRoZSBncm92ZXMsIG9yIHRoZSBpbWFnZXMuCkluIHRoYXQgZGF5IHNoYWxsIGhpcyBzdHJvbmcgY2l0aWVzIGJlIGFzIGEgZm9yc2FrZW4gYm91Z2gsIGFuZCBhbiB1cHBlcm1vc3QgYnJhbmNoLCB3aGljaCB0aGV5IGxlZnQgYmVjYXVzZSBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsOiBhbmQgdGhlcmUgc2hhbGwgYmUgZGVzb2xhdGlvbi4KQmVjYXVzZSB0aG91IGhhc3QgZm9yZ290dGVuIHRoZSBHb2Qgb2YgdGh5IHNhbHZhdGlvbiwgYW5kIGhhc3Qgbm90IGJlZW4gbWluZGZ1bCBvZiB0aGUgcm9jayBvZiB0aHkgc3RyZW5ndGgsIHRoZXJlZm9yZSBzaGFsdCB0aG91IHBsYW50IHBsZWFzYW50IHBsYW50cywgYW5kIHNoYWx0IHNldCBpdCB3aXRoIHN0cmFuZ2Ugc2xpcHM6CkluIHRoZSBkYXkgc2hhbHQgdGhvdSBtYWtlIHRoeSBwbGFudCB0byBncm93LCBhbmQgaW4gdGhlIG1vcm5pbmcgc2hhbHQgdGhvdSBtYWtlIHRoeSBzZWVkIHRvIGZsb3VyaXNoOiBidXQgdGhlIGhhcnZlc3Qgc2hhbGwgYmUgYSBoZWFwIGluIHRoZSBkYXkgb2YgZ3JpZWYgYW5kIG9mIGRlc3BlcmF0ZSBzb3Jyb3cuCldvZSB0byB0aGUgbXVsdGl0dWRlIG9mIG1hbnkgcGVvcGxlLCB3aGljaCBtYWtlIGEgbm9pc2UgbGlrZSB0aGUgbm9pc2Ugb2YgdGhlIHNlYXM7IGFuZCB0byB0aGUgcnVzaGluZyBvZiBuYXRpb25zLCB0aGF0IG1ha2UgYSBydXNoaW5nIGxpa2UgdGhlIHJ1c2hpbmcgb2YgbWlnaHR5IHdhdGVycyEKVGhlIG5hdGlvbnMgc2hhbGwgcnVzaCBsaWtlIHRoZSBydXNoaW5nIG9mIG1hbnkgd2F0ZXJzOiBidXQgR29kIHNoYWxsIHJlYnVrZSB0aGVtLCBhbmQgdGhleSBzaGFsbCBmbGVlIGZhciBvZmYsIGFuZCBzaGFsbCBiZSBjaGFzZWQgYXMgdGhlIGNoYWZmIG9mIHRoZSBtb3VudGFpbnMgYmVmb3JlIHRoZSB3aW5kLCBhbmQgbGlrZSBhIHJvbGxpbmcgdGhpbmcgYmVmb3JlIHRoZSB3aGlybHdpbmQuCkFuZCBiZWhvbGQgYXQgZXZlbmluZ3RpZGUgdHJvdWJsZTsgYW5kIGJlZm9yZSB0aGUgbW9ybmluZyBoZSBpcyBub3QuIFRoaXMgaXMgdGhlIHBvcnRpb24gb2YgdGhlbSB0aGF0IHNwb2lsIHVzLCBhbmQgdGhlIGxvdCBvZiB0aGVtIHRoYXQgcm9iIHVzLgpXb2UgdG8gdGhlIGxhbmQgc2hhZG93aW5nIHdpdGggd2luZ3MsIHdoaWNoIGlzIGJleW9uZCB0aGUgcml2ZXJzIG9mIEV0aGlvcGlhOgpUaGF0IHNlbmRldGggYW1iYXNzYWRvcnMgYnkgdGhlIHNlYSwgZXZlbiBpbiB2ZXNzZWxzIG9mIGJ1bHJ1c2hlcyB1cG9uIHRoZSB3YXRlcnMsIHNheWluZywgR28sIHllIHN3aWZ0IG1lc3NlbmdlcnMsIHRvIGEgbmF0aW9uIHNjYXR0ZXJlZCBhbmQgcGVlbGVkLCB0byBhIHBlb3BsZSB0ZXJyaWJsZSBmcm9tIHRoZWlyIGJlZ2lubmluZyBoaXRoZXJ0bzsgYSBuYXRpb24gbWV0ZWQgb3V0IGFuZCB0cm9kZGVuIGRvd24sIHdob3NlIGxhbmQgdGhlIHJpdmVycyBoYXZlIHNwb2lsZWQhCkFsbCB5ZSBpbmhhYml0YW50cyBvZiB0aGUgd29ybGQsIGFuZCBkd2VsbGVycyBvbiB0aGUgZWFydGgsIHNlZSB5ZSwgd2hlbiBoZSBsaWZ0ZXRoIHVwIGFuIGVuc2lnbiBvbiB0aGUgbW91bnRhaW5zOyBhbmQgd2hlbiBoZSBibG93ZXRoIGEgdHJ1bXBldCwgaGVhciB5ZS4KRm9yIHNvIHRoZSBMT1JEIHNhaWQgdW50byBtZSwgSSB3aWxsIHRha2UgbXkgcmVzdCwgYW5kIEkgd2lsbCBjb25zaWRlciBpbiBteSBkd2VsbGluZyBwbGFjZSBsaWtlIGEgY2xlYXIgaGVhdCB1cG9uIGhlcmJzLCBhbmQgbGlrZSBhIGNsb3VkIG9mIGRldyBpbiB0aGUgaGVhdCBvZiBoYXJ2ZXN0LgpGb3IgYWZvcmUgdGhlIGhhcnZlc3QsIHdoZW4gdGhlIGJ1ZCBpcyBwZXJmZWN0LCBhbmQgdGhlIHNvdXIgZ3JhcGUgaXMgcmlwZW5pbmcgaW4gdGhlIGZsb3dlciwgaGUgc2hhbGwgYm90aCBjdXQgb2ZmIHRoZSBzcHJpZ3Mgd2l0aCBwcnVuaW5nIGhvb2tzLCBhbmQgdGFrZSBhd2F5IGFuZCBjdXQgZG93biB0aGUgYnJhbmNoZXMuClRoZXkgc2hhbGwgYmUgbGVmdCB0b2dldGhlciB1bnRvIHRoZSBmb3dscyBvZiB0aGUgbW91bnRhaW5zLCBhbmQgdG8gdGhlIGJlYXN0cyBvZiB0aGUgZWFydGg6IGFuZCB0aGUgZm93bHMgc2hhbGwgc3VtbWVyIHVwb24gdGhlbSwgYW5kIGFsbCB0aGUgYmVhc3RzIG9mIHRoZSBlYXJ0aCBzaGFsbCB3aW50ZXIgdXBvbiB0aGVtLgpJbiB0aGF0IHRpbWUgc2hhbGwgdGhlIHByZXNlbnQgYmUgYnJvdWdodCB1bnRvIHRoZSBMT1JEIG9mIGhvc3RzIG9mIGEgcGVvcGxlIHNjYXR0ZXJlZCBhbmQgcGVlbGVkLCBhbmQgZnJvbSBhIHBlb3BsZSB0ZXJyaWJsZSBmcm9tIHRoZWlyIGJlZ2lubmluZyBoaXRoZXJ0bzsgYSBuYXRpb24gbWV0ZWQgb3V0IGFuZCB0cm9kZGVuIHVuZGVyIGZvb3QsIHdob3NlIGxhbmQgdGhlIHJpdmVycyBoYXZlIHNwb2lsZWQsIHRvIHRoZSBwbGFjZSBvZiB0aGUgbmFtZSBvZiB0aGUgTE9SRCBvZiBob3N0cywgdGhlIG1vdW50IFppb24uClRoZSBidXJkZW4gb2YgRWd5cHQuIEJlaG9sZCwgdGhlIExPUkQgcmlkZXRoIHVwb24gYSBzd2lmdCBjbG91ZCwgYW5kIHNoYWxsIGNvbWUgaW50byBFZ3lwdDogYW5kIHRoZSBpZG9scyBvZiBFZ3lwdCBzaGFsbCBiZSBtb3ZlZCBhdCBoaXMgcHJlc2VuY2UsIGFuZCB0aGUgaGVhcnQgb2YgRWd5cHQgc2hhbGwgbWVsdCBpbiB0aGUgbWlkc3Qgb2YgaXQuCkFuZCBJIHdpbGwgc2V0IHRoZSBFZ3lwdGlhbnMgYWdhaW5zdCB0aGUgRWd5cHRpYW5zOiBhbmQgdGhleSBzaGFsbCBmaWdodCBldmVyeSBvbmUgYWdhaW5zdCBoaXMgYnJvdGhlciwgYW5kIGV2ZXJ5IG9uZSBhZ2FpbnN0IGhpcyBuZWlnaGJvdXI7IGNpdHkgYWdhaW5zdCBjaXR5LCBhbmQga2luZ2RvbSBhZ2FpbnN0IGtpbmdkb20uCkFuZCB0aGUgc3Bpcml0IG9mIEVneXB0IHNoYWxsIGZhaWwgaW4gdGhlIG1pZHN0IHRoZXJlb2Y7IGFuZCBJIHdpbGwgZGVzdHJveSB0aGUgY291bnNlbCB0aGVyZW9mOiBhbmQgdGhleSBzaGFsbCBzZWVrIHRvIHRoZSBpZG9scywgYW5kIHRvIHRoZSBjaGFybWVycywgYW5kIHRvIHRoZW0gdGhhdCBoYXZlIGZhbWlsaWFyIHNwaXJpdHMsIGFuZCB0byB0aGUgd2l6YXJkcy4KQW5kIHRoZSBFZ3lwdGlhbnMgd2lsbCBJIGdpdmUgb3ZlciBpbnRvIHRoZSBoYW5kIG9mIGEgY3J1ZWwgbG9yZDsgYW5kIGEgZmllcmNlIGtpbmcgc2hhbGwgcnVsZSBvdmVyIHRoZW0sIHNhaXRoIHRoZSBMb3JkLCB0aGUgTE9SRCBvZiBob3N0cy4KQW5kIHRoZSB3YXRlcnMgc2hhbGwgZmFpbCBmcm9tIHRoZSBzZWEsIGFuZCB0aGUgcml2ZXIgc2hhbGwgYmUgd2FzdGVkIGFuZCBkcmllZCB1cC4KQW5kIHRoZXkgc2hhbGwgdHVybiB0aGUgcml2ZXJzIGZhciBhd2F5OyBhbmQgdGhlIGJyb29rcyBvZiBkZWZlbmNlIHNoYWxsIGJlIGVtcHRpZWQgYW5kIGRyaWVkIHVwOiB0aGUgcmVlZHMgYW5kIGZsYWdzIHNoYWxsIHdpdGhlci4KVGhlIHBhcGVyIHJlZWRzIGJ5IHRoZSBicm9va3MsIGJ5IHRoZSBtb3V0aCBvZiB0aGUgYnJvb2tzLCBhbmQgZXZlcnkgdGhpbmcgc293biBieSB0aGUgYnJvb2tzLCBzaGFsbCB3aXRoZXIsIGJlIGRyaXZlbiBhd2F5LCBhbmQgYmUgbm8gbW9yZS4KVGhlIGZpc2hlcnMgYWxzbyBzaGFsbCBtb3VybiwgYW5kIGFsbCB0aGV5IHRoYXQgY2FzdCBhbmdsZSBpbnRvIHRoZSBicm9va3Mgc2hhbGwgbGFtZW50LCBhbmQgdGhleSB0aGF0IHNwcmVhZCBuZXRzIHVwb24gdGhlIHdhdGVycyBzaGFsbCBsYW5ndWlzaC4KTW9yZW92ZXIgdGhleSB0aGF0IHdvcmsgaW4gZmluZSBmbGF4LCBhbmQgdGhleSB0aGF0IHdlYXZlIG5ldHdvcmtzLCBzaGFsbCBiZSBjb25mb3VuZGVkLgpBbmQgdGhleSBzaGFsbCBiZSBicm9rZW4gaW4gdGhlIHB1cnBvc2VzIHRoZXJlb2YsIGFsbCB0aGF0IG1ha2Ugc2x1aWNlcyBhbmQgcG9uZHMgZm9yIGZpc2guClN1cmVseSB0aGUgcHJpbmNlcyBvZiBab2FuIGFyZSBmb29scywgdGhlIGNvdW5zZWwgb2YgdGhlIHdpc2UgY291bnNlbGxvcnMgb2YgUGhhcmFvaCBpcyBiZWNvbWUgYnJ1dGlzaDogaG93IHNheSB5ZSB1bnRvIFBoYXJhb2gsIEkgYW0gdGhlIHNvbiBvZiB0aGUgd2lzZSwgdGhlIHNvbiBvZiBhbmNpZW50IGtpbmdzPwpXaGVyZSBhcmUgdGhleT8gd2hlcmUgYXJlIHRoeSB3aXNlIG1lbj8gYW5kIGxldCB0aGVtIHRlbGwgdGhlZSBub3csIGFuZCBsZXQgdGhlbSBrbm93IHdoYXQgdGhlIExPUkQgb2YgaG9zdHMgaGF0aCBwdXJwb3NlZCB1cG9uIEVneXB0LgpUaGUgcHJpbmNlcyBvZiBab2FuIGFyZSBiZWNvbWUgZm9vbHMsIHRoZSBwcmluY2VzIG9mIE5vcGggYXJlIGRlY2VpdmVkOyB0aGV5IGhhdmUgYWxzbyBzZWR1Y2VkIEVneXB0LCBldmVuIHRoZXkgdGhhdCBhcmUgdGhlIHN0YXkgb2YgdGhlIHRyaWJlcyB0aGVyZW9mLgpUaGUgTE9SRCBoYXRoIG1pbmdsZWQgYSBwZXJ2ZXJzZSBzcGlyaXQgaW4gdGhlIG1pZHN0IHRoZXJlb2Y6IGFuZCB0aGV5IGhhdmUgY2F1c2VkIEVneXB0IHRvIGVyciBpbiBldmVyeSB3b3JrIHRoZXJlb2YsIGFzIGEgZHJ1bmtlbiBtYW4gc3RhZ2dlcmV0aCBpbiBoaXMgdm9taXQuCk5laXRoZXIgc2hhbGwgdGhlcmUgYmUgYW55IHdvcmsgZm9yIEVneXB0LCB3aGljaCB0aGUgaGVhZCBvciB0YWlsLCBicmFuY2ggb3IgcnVzaCwgbWF5IGRvLgpJbiB0aGF0IGRheSBzaGFsbCBFZ3lwdCBiZSBsaWtlIHVudG8gd29tZW46IGFuZCBpdCBzaGFsbCBiZSBhZnJhaWQgYW5kIGZlYXIgYmVjYXVzZSBvZiB0aGUgc2hha2luZyBvZiB0aGUgaGFuZCBvZiB0aGUgTE9SRCBvZiBob3N0cywgd2hpY2ggaGUgc2hha2V0aCBvdmVyIGl0LgpBbmQgdGhlIGxhbmQgb2YgSnVkYWggc2hhbGwgYmUgYSB0ZXJyb3IgdW50byBFZ3lwdCwgZXZlcnkgb25lIHRoYXQgbWFrZXRoIG1lbnRpb24gdGhlcmVvZiBzaGFsbCBiZSBhZnJhaWQgaW4gaGltc2VsZiwgYmVjYXVzZSBvZiB0aGUgY291bnNlbCBvZiB0aGUgTE9SRCBvZiBob3N0cywgd2hpY2ggaGUgaGF0aCBkZXRlcm1pbmVkIGFnYWluc3QgaXQuCkluIHRoYXQgZGF5IHNoYWxsIGZpdmUgY2l0aWVzIGluIHRoZSBsYW5kIG9mIEVneXB0IHNwZWFrIHRoZSBsYW5ndWFnZSBvZiBDYW5hYW4sIGFuZCBzd2VhciB0byB0aGUgTE9SRCBvZiBob3N0czsgb25lIHNoYWxsIGJlIGNhbGxlZCwgVGhlIGNpdHkgb2YgZGVzdHJ1Y3Rpb24uCkluIHRoYXQgZGF5IHNoYWxsIHRoZXJlIGJlIGFuIGFsdGFyIHRvIHRoZSBMT1JEIGluIHRoZSBtaWRzdCBvZiB0aGUgbGFuZCBvZiBFZ3lwdCwgYW5kIGEgcGlsbGFyIGF0IHRoZSBib3JkZXIgdGhlcmVvZiB0byB0aGUgTE9SRC4KQW5kIGl0IHNoYWxsIGJlIGZvciBhIHNpZ24gYW5kIGZvciBhIHdpdG5lc3MgdW50byB0aGUgTE9SRCBvZiBob3N0cyBpbiB0aGUgbGFuZCBvZiBFZ3lwdDogZm9yIHRoZXkgc2hhbGwgY3J5IHVudG8gdGhlIExPUkQgYmVjYXVzZSBvZiB0aGUgb3BwcmVzc29ycywgYW5kIGhlIHNoYWxsIHNlbmQgdGhlbSBhIHNhdmlvdXIsIGFuZCBhIGdyZWF0IG9uZSwgYW5kIGhlIHNoYWxsIGRlbGl2ZXIgdGhlbS4KQW5kIHRoZSBMT1JEIHNoYWxsIGJlIGtub3duIHRvIEVneXB0LCBhbmQgdGhlIEVneXB0aWFucyBzaGFsbCBrbm93IHRoZSBMT1JEIGluIHRoYXQgZGF5LCBhbmQgc2hhbGwgZG8gc2FjcmlmaWNlIGFuZCBvYmxhdGlvbjsgeWVhLCB0aGV5IHNoYWxsIHZvdyBhIHZvdyB1bnRvIHRoZSBMT1JELCBhbmQgcGVyZm9ybSBpdC4KQW5kIHRoZSBMT1JEIHNoYWxsIHNtaXRlIEVneXB0OiBoZSBzaGFsbCBzbWl0ZSBhbmQgaGVhbCBpdDogYW5kIHRoZXkgc2hhbGwgcmV0dXJuIGV2ZW4gdG8gdGhlIExPUkQsIGFuZCBoZSBzaGFsbCBiZSBpbnRyZWF0ZWQgb2YgdGhlbSwgYW5kIHNoYWxsIGhlYWwgdGhlbS4KSW4gdGhhdCBkYXkgc2hhbGwgdGhlcmUgYmUgYSBoaWdod2F5IG91dCBvZiBFZ3lwdCB0byBBc3N5cmlhLCBhbmQgdGhlIEFzc3lyaWFuIHNoYWxsIGNvbWUgaW50byBFZ3lwdCwgYW5kIHRoZSBFZ3lwdGlhbiBpbnRvIEFzc3lyaWEsIGFuZCB0aGUgRWd5cHRpYW5zIHNoYWxsIHNlcnZlIHdpdGggdGhlIEFzc3lyaWFucy4KSW4gdGhhdCBkYXkgc2hhbGwgSXNyYWVsIGJlIHRoZSB0aGlyZCB3aXRoIEVneXB0IGFuZCB3aXRoIEFzc3lyaWEsIGV2ZW4gYSBibGVzc2luZyBpbiB0aGUgbWlkc3Qgb2YgdGhlIGxhbmQ6Cldob20gdGhlIExPUkQgb2YgaG9zdHMgc2hhbGwgYmxlc3MsIHNheWluZywgQmxlc3NlZCBiZSBFZ3lwdCBteSBwZW9wbGUsIGFuZCBBc3N5cmlhIHRoZSB3b3JrIG9mIG15IGhhbmRzLCBhbmQgSXNyYWVsIG1pbmUgaW5oZXJpdGFuY2UuCkluIHRoZSB5ZWFyIHRoYXQgVGFydGFuIGNhbWUgdW50byBBc2hkb2QsICh3aGVuIFNhcmdvbiB0aGUga2luZyBvZiBBc3N5cmlhIHNlbnQgaGltLCkgYW5kIGZvdWdodCBhZ2FpbnN0IEFzaGRvZCwgYW5kIHRvb2sgaXQ7CkF0IHRoZSBzYW1lIHRpbWUgc3Bha2UgdGhlIExPUkQgYnkgSXNhaWFoIHRoZSBzb24gb2YgQW1veiwgc2F5aW5nLCBHbyBhbmQgbG9vc2UgdGhlIHNhY2tjbG90aCBmcm9tIG9mZiB0aHkgbG9pbnMsIGFuZCBwdXQgb2ZmIHRoeSBzaG9lIGZyb20gdGh5IGZvb3QuIEFuZCBoZSBkaWQgc28sIHdhbGtpbmcgbmFrZWQgYW5kIGJhcmVmb290LgpBbmQgdGhlIExPUkQgc2FpZCwgTGlrZSBhcyBteSBzZXJ2YW50IElzYWlhaCBoYXRoIHdhbGtlZCBuYWtlZCBhbmQgYmFyZWZvb3QgdGhyZWUgeWVhcnMgZm9yIGEgc2lnbiBhbmQgd29uZGVyIHVwb24gRWd5cHQgYW5kIHVwb24gRXRoaW9waWE7ClNvIHNoYWxsIHRoZSBraW5nIG9mIEFzc3lyaWEgbGVhZCBhd2F5IHRoZSBFZ3lwdGlhbnMgcHJpc29uZXJzLCBhbmQgdGhlIEV0aGlvcGlhbnMgY2FwdGl2ZXMsIHlvdW5nIGFuZCBvbGQsIG5ha2VkIGFuZCBiYXJlZm9vdCwgZXZlbiB3aXRoIHRoZWlyIGJ1dHRvY2tzIHVuY292ZXJlZCwgdG8gdGhlIHNoYW1lIG9mIEVneXB0LgpBbmQgdGhleSBzaGFsbCBiZSBhZnJhaWQgYW5kIGFzaGFtZWQgb2YgRXRoaW9waWEgdGhlaXIgZXhwZWN0YXRpb24sIGFuZCBvZiBFZ3lwdCB0aGVpciBnbG9yeS4KQW5kIHRoZSBpbmhhYml0YW50IG9mIHRoaXMgaXNsZSBzaGFsbCBzYXkgaW4gdGhhdCBkYXksIEJlaG9sZCwgc3VjaCBpcyBvdXIgZXhwZWN0YXRpb24sIHdoaXRoZXIgd2UgZmxlZSBmb3IgaGVscCB0byBiZSBkZWxpdmVyZWQgZnJvbSB0aGUga2luZyBvZiBBc3N5cmlhOiBhbmQgaG93IHNoYWxsIHdlIGVzY2FwZT8KVGhlIGJ1cmRlbiBvZiB0aGUgZGVzZXJ0IG9mIHRoZSBzZWEuIEFzIHdoaXJsd2luZHMgaW4gdGhlIHNvdXRoIHBhc3MgdGhyb3VnaDsgc28gaXQgY29tZXRoIGZyb20gdGhlIGRlc2VydCwgZnJvbSBhIHRlcnJpYmxlIGxhbmQuCkEgZ3JpZXZvdXMgdmlzaW9uIGlzIGRlY2xhcmVkIHVudG8gbWU7IHRoZSB0cmVhY2hlcm91cyBkZWFsZXIgZGVhbGV0aCB0cmVhY2hlcm91c2x5LCBhbmQgdGhlIHNwb2lsZXIgc3BvaWxldGguIEdvIHVwLCBPIEVsYW06IGJlc2llZ2UsIE8gTWVkaWE7IGFsbCB0aGUgc2lnaGluZyB0aGVyZW9mIGhhdmUgSSBtYWRlIHRvIGNlYXNlLgpUaGVyZWZvcmUgYXJlIG15IGxvaW5zIGZpbGxlZCB3aXRoIHBhaW46IHBhbmdzIGhhdmUgdGFrZW4gaG9sZCB1cG9uIG1lLCBhcyB0aGUgcGFuZ3Mgb2YgYSB3b21hbiB0aGF0IHRyYXZhaWxldGg6IEkgd2FzIGJvd2VkIGRvd24gYXQgdGhlIGhlYXJpbmcgb2YgaXQ7IEkgd2FzIGRpc21heWVkIGF0IHRoZSBzZWVpbmcgb2YgaXQuCk15IGhlYXJ0IHBhbnRlZCwgZmVhcmZ1bG5lc3MgYWZmcmlnaHRlZCBtZTogdGhlIG5pZ2h0IG9mIG15IHBsZWFzdXJlIGhhdGggaGUgdHVybmVkIGludG8gZmVhciB1bnRvIG1lLgpQcmVwYXJlIHRoZSB0YWJsZSwgd2F0Y2ggaW4gdGhlIHdhdGNodG93ZXIsIGVhdCwgZHJpbms6IGFyaXNlLCB5ZSBwcmluY2VzLCBhbmQgYW5vaW50IHRoZSBzaGllbGQuCkZvciB0aHVzIGhhdGggdGhlIExPUkQgc2FpZCB1bnRvIG1lLCBHbywgc2V0IGEgd2F0Y2htYW4sIGxldCBoaW0gZGVjbGFyZSB3aGF0IGhlIHNlZXRoLgpBbmQgaGUgc2F3IGEgY2hhcmlvdCB3aXRoIGEgY291cGxlIG9mIGhvcnNlbWVuLCBhIGNoYXJpb3Qgb2YgYXNzZXMsIGFuZCBhIGNoYXJpb3Qgb2YgY2FtZWxzOyBhbmQgaGUgaGVhcmtlbmVkIGRpbGlnZW50bHkgd2l0aCBtdWNoIGhlZWQ6CkFuZCBoZSBjcmllZCwgQSBsaW9uOiBNeSBsb3JkLCBJIHN0YW5kIGNvbnRpbnVhbGx5IHVwb24gdGhlIHdhdGNodG93ZXIgaW4gdGhlIGRheXRpbWUsIGFuZCBJIGFtIHNldCBpbiBteSB3YXJkIHdob2xlIG5pZ2h0czoKQW5kLCBiZWhvbGQsIGhlcmUgY29tZXRoIGEgY2hhcmlvdCBvZiBtZW4sIHdpdGggYSBjb3VwbGUgb2YgaG9yc2VtZW4uIEFuZCBoZSBhbnN3ZXJlZCBhbmQgc2FpZCwgQmFieWxvbiBpcyBmYWxsZW4sIGlzIGZhbGxlbjsgYW5kIGFsbCB0aGUgZ3JhdmVuIGltYWdlcyBvZiBoZXIgZ29kcyBoZSBoYXRoIGJyb2tlbiB1bnRvIHRoZSBncm91bmQuCk8gbXkgdGhyZXNoaW5nLCBhbmQgdGhlIGNvcm4gb2YgbXkgZmxvb3I6IHRoYXQgd2hpY2ggSSBoYXZlIGhlYXJkIG9mIHRoZSBMT1JEIG9mIGhvc3RzLCB0aGUgR29kIG9mIElzcmFlbCwgaGF2ZSBJIGRlY2xhcmVkIHVudG8geW91LgpUaGUgYnVyZGVuIG9mIER1bWFoLiBIZSBjYWxsZXRoIHRvIG1lIG91dCBvZiBTZWlyLCBXYXRjaG1hbiwgd2hhdCBvZiB0aGUgbmlnaHQ/IFdhdGNobWFuLCB3aGF0IG9mIHRoZSBuaWdodD8KVGhlIHdhdGNobWFuIHNhaWQsIFRoZSBtb3JuaW5nIGNvbWV0aCwgYW5kIGFsc28gdGhlIG5pZ2h0OiBpZiB5ZSB3aWxsIGVucXVpcmUsIGVucXVpcmUgeWU6IHJldHVybiwgY29tZS4KVGhlIGJ1cmRlbiB1cG9uIEFyYWJpYS4gSW4gdGhlIGZvcmVzdCBpbiBBcmFiaWEgc2hhbGwgeWUgbG9kZ2UsIE8geWUgdHJhdmVsbGluZyBjb21wYW5pZXMgb2YgRGVkYW5pbS4KVGhlIGluaGFiaXRhbnRzIG9mIHRoZSBsYW5kIG9mIFRlbWEgYnJvdWdodCB3YXRlciB0byBoaW0gdGhhdCB3YXMgdGhpcnN0eSwgdGhleSBwcmV2ZW50ZWQgd2l0aCB0aGVpciBicmVhZCBoaW0gdGhhdCBmbGVkLgpGb3IgdGhleSBmbGVkIGZyb20gdGhlIHN3b3JkcywgZnJvbSB0aGUgZHJhd24gc3dvcmQsIGFuZCBmcm9tIHRoZSBiZW50IGJvdywgYW5kIGZyb20gdGhlIGdyaWV2b3VzbmVzcyBvZiB3YXIuCkZvciB0aHVzIGhhdGggdGhlIExPUkQgc2FpZCB1bnRvIG1lLCBXaXRoaW4gYSB5ZWFyLCBhY2NvcmRpbmcgdG8gdGhlIHllYXJzIG9mIGFuIGhpcmVsaW5nLCBhbmQgYWxsIHRoZSBnbG9yeSBvZiBLZWRhciBzaGFsbCBmYWlsOgpBbmQgdGhlIHJlc2lkdWUgb2YgdGhlIG51bWJlciBvZiBhcmNoZXJzLCB0aGUgbWlnaHR5IG1lbiBvZiB0aGUgY2hpbGRyZW4gb2YgS2VkYXIsIHNoYWxsIGJlIGRpbWluaXNoZWQ6IGZvciB0aGUgTE9SRCBHb2Qgb2YgSXNyYWVsIGhhdGggc3Bva2VuIGl0LgpUaGUgYnVyZGVuIG9mIHRoZSB2YWxsZXkgb2YgdmlzaW9uLiBXaGF0IGFpbGV0aCB0aGVlIG5vdywgdGhhdCB0aG91IGFydCB3aG9sbHkgZ29uZSB1cCB0byB0aGUgaG91c2V0b3BzPwpUaG91IHRoYXQgYXJ0IGZ1bGwgb2Ygc3RpcnMsIGEgdHVtdWx0dW91cyBjaXR5LCBqb3lvdXMgY2l0eTogdGh5IHNsYWluIG1lbiBhcmUgbm90IHNsYWluIHdpdGggdGhlIHN3b3JkLCBub3IgZGVhZCBpbiBiYXR0bGUuCkFsbCB0aHkgcnVsZXJzIGFyZSBmbGVkIHRvZ2V0aGVyLCB0aGV5IGFyZSBib3VuZCBieSB0aGUgYXJjaGVyczogYWxsIHRoYXQgYXJlIGZvdW5kIGluIHRoZWUgYXJlIGJvdW5kIHRvZ2V0aGVyLCB3aGljaCBoYXZlIGZsZWQgZnJvbSBmYXIuClRoZXJlZm9yZSBzYWlkIEksIExvb2sgYXdheSBmcm9tIG1lOyBJIHdpbGwgd2VlcCBiaXR0ZXJseSwgbGFib3VyIG5vdCB0byBjb21mb3J0IG1lLCBiZWNhdXNlIG9mIHRoZSBzcG9pbGluZyBvZiB0aGUgZGF1Z2h0ZXIgb2YgbXkgcGVvcGxlLgpGb3IgaXQgaXMgYSBkYXkgb2YgdHJvdWJsZSwgYW5kIG9mIHRyZWFkaW5nIGRvd24sIGFuZCBvZiBwZXJwbGV4aXR5IGJ5IHRoZSBMb3JkIEdPRCBvZiBob3N0cyBpbiB0aGUgdmFsbGV5IG9mIHZpc2lvbiwgYnJlYWtpbmcgZG93biB0aGUgd2FsbHMsIGFuZCBvZiBjcnlpbmcgdG8gdGhlIG1vdW50YWlucy4KQW5kIEVsYW0gYmFyZSB0aGUgcXVpdmVyIHdpdGggY2hhcmlvdHMgb2YgbWVuIGFuZCBob3JzZW1lbiwgYW5kIEtpciB1bmNvdmVyZWQgdGhlIHNoaWVsZC4KQW5kIGl0IHNoYWxsIGNvbWUgdG8gcGFzcywgdGhhdCB0aHkgY2hvaWNlc3QgdmFsbGV5cyBzaGFsbCBiZSBmdWxsIG9mIGNoYXJpb3RzLCBhbmQgdGhlIGhvcnNlbWVuIHNoYWxsIHNldCB0aGVtc2VsdmVzIGluIGFycmF5IGF0IHRoZSBnYXRlLgpBbmQgaGUgZGlzY292ZXJlZCB0aGUgY292ZXJpbmcgb2YgSnVkYWgsIGFuZCB0aG91IGRpZHN0IGxvb2sgaW4gdGhhdCBkYXkgdG8gdGhlIGFybW91ciBvZiB0aGUgaG91c2Ugb2YgdGhlIGZvcmVzdC4KWWUgaGF2ZSBzZWVuIGFsc28gdGhlIGJyZWFjaGVzIG9mIHRoZSBjaXR5IG9mIERhdmlkLCB0aGF0IHRoZXkgYXJlIG1hbnk6IGFuZCB5ZSBnYXRoZXJlZCB0b2dldGhlciB0aGUgd2F0ZXJzIG9mIHRoZSBsb3dlciBwb29sLgpBbmQgeWUgaGF2ZSBudW1iZXJlZCB0aGUgaG91c2VzIG9mIEplcnVzYWxlbSwgYW5kIHRoZSBob3VzZXMgaGF2ZSB5ZSBicm9rZW4gZG93biB0byBmb3J0aWZ5IHRoZSB3YWxsLgpZZSBtYWRlIGFsc28gYSBkaXRjaCBiZXR3ZWVuIHRoZSB0d28gd2FsbHMgZm9yIHRoZSB3YXRlciBvZiB0aGUgb2xkIHBvb2w6IGJ1dCB5ZSBoYXZlIG5vdCBsb29rZWQgdW50byB0aGUgbWFrZXIgdGhlcmVvZiwgbmVpdGhlciBoYWQgcmVzcGVjdCB1bnRvIGhpbSB0aGF0IGZhc2hpb25lZCBpdCBsb25nIGFnby4KQW5kIGluIHRoYXQgZGF5IGRpZCB0aGUgTG9yZCBHT0Qgb2YgaG9zdHMgY2FsbCB0byB3ZWVwaW5nLCBhbmQgdG8gbW91cm5pbmcsIGFuZCB0byBiYWxkbmVzcywgYW5kIHRvIGdpcmRpbmcgd2l0aCBzYWNrY2xvdGg6CkFuZCBiZWhvbGQgam95IGFuZCBnbGFkbmVzcywgc2xheWluZyBveGVuLCBhbmQga2lsbGluZyBzaGVlcCwgZWF0aW5nIGZsZXNoLCBhbmQgZHJpbmtpbmcgd2luZTogbGV0IHVzIGVhdCBhbmQgZHJpbms7IGZvciB0byBtb3Jyb3cgd2Ugc2hhbGwgZGllLgpBbmQgaXQgd2FzIHJldmVhbGVkIGluIG1pbmUgZWFycyBieSB0aGUgTE9SRCBvZiBob3N0cywgU3VyZWx5IHRoaXMgaW5pcXVpdHkgc2hhbGwgbm90IGJlIHB1cmdlZCBmcm9tIHlvdSB0aWxsIHllIGRpZSwgc2FpdGggdGhlIExvcmQgR09EIG9mIGhvc3RzLgpUaHVzIHNhaXRoIHRoZSBMb3JkIEdPRCBvZiBob3N0cywgR28sIGdldCB0aGVlIHVudG8gdGhpcyB0cmVhc3VyZXIsIGV2ZW4gdW50byBTaGVibmEsIHdoaWNoIGlzIG92ZXIgdGhlIGhvdXNlLCBhbmQgc2F5LApXaGF0IGhhc3QgdGhvdSBoZXJlPyBhbmQgd2hvbSBoYXN0IHRob3UgaGVyZSwgdGhhdCB0aG91IGhhc3QgaGV3ZWQgdGhlZSBvdXQgYSBzZXB1bGNocmUgaGVyZSwgYXMgaGUgdGhhdCBoZXdldGggaGltIG91dCBhIHNlcHVsY2hyZSBvbiBoaWdoLCBhbmQgdGhhdCBncmF2ZXRoIGFuIGhhYml0YXRpb24gZm9yIGhpbXNlbGYgaW4gYSByb2NrPwpCZWhvbGQsIHRoZSBMT1JEIHdpbGwgY2FycnkgdGhlZSBhd2F5IHdpdGggYSBtaWdodHkgY2FwdGl2aXR5LCBhbmQgd2lsbCBzdXJlbHkgY292ZXIgdGhlZS4KSGUgd2lsbCBzdXJlbHkgdmlvbGVudGx5IHR1cm4gYW5kIHRvc3MgdGhlZSBsaWtlIGEgYmFsbCBpbnRvIGEgbGFyZ2UgY291bnRyeTogdGhlcmUgc2hhbHQgdGhvdSBkaWUsIGFuZCB0aGVyZSB0aGUgY2hhcmlvdHMgb2YgdGh5IGdsb3J5IHNoYWxsIGJlIHRoZSBzaGFtZSBvZiB0aHkgbG9yZCdzIGhvdXNlLgpBbmQgSSB3aWxsIGRyaXZlIHRoZWUgZnJvbSB0aHkgc3RhdGlvbiwgYW5kIGZyb20gdGh5IHN0YXRlIHNoYWxsIGhlIHB1bGwgdGhlZSBkb3duLgpBbmQgaXQgc2hhbGwgY29tZSB0byBwYXNzIGluIHRoYXQgZGF5LCB0aGF0IEkgd2lsbCBjYWxsIG15IHNlcnZhbnQgRWxpYWtpbSB0aGUgc29uIG9mIEhpbGtpYWg6CkFuZCBJIHdpbGwgY2xvdGhlIGhpbSB3aXRoIHRoeSByb2JlLCBhbmQgc3RyZW5ndGhlbiBoaW0gd2l0aCB0aHkgZ2lyZGxlLCBhbmQgSSB3aWxsIGNvbW1pdCB0aHkgZ292ZXJubWVudCBpbnRvIGhpcyBoYW5kOiBhbmQgaGUgc2hhbGwgYmUgYSBmYXRoZXIgdG8gdGhlIGluaGFiaXRhbnRzIG9mIEplcnVzYWxlbSwgYW5kIHRvIHRoZSBob3VzZSBvZiBKdWRhaC4KQW5kIHRoZSBrZXkgb2YgdGhlIGhvdXNlIG9mIERhdmlkIHdpbGwgSSBsYXkgdXBvbiBoaXMgc2hvdWxkZXI7IHNvIGhlIHNoYWxsIG9wZW4sIGFuZCBub25lIHNoYWxsIHNodXQ7IGFuZCBoZSBzaGFsbCBzaHV0LCBhbmQgbm9uZSBzaGFsbCBvcGVuLgpBbmQgSSB3aWxsIGZhc3RlbiBoaW0gYXMgYSBuYWlsIGluIGEgc3VyZSBwbGFjZTsgYW5kIGhlIHNoYWxsIGJlIGZvciBhIGdsb3Jpb3VzIHRocm9uZSB0byBoaXMgZmF0aGVyJ3MgaG91c2UuCkFuZCB0aGV5IHNoYWxsIGhhbmcgdXBvbiBoaW0gYWxsIHRoZSBnbG9yeSBvZiBoaXMgZmF0aGVyJ3MgaG91c2UsIHRoZSBvZmZzcHJpbmcgYW5kIHRoZSBpc3N1ZSwgYWxsIHZlc3NlbHMgb2Ygc21hbGwgcXVhbnRpdHksIGZyb20gdGhlIHZlc3NlbHMgb2YgY3VwcywgZXZlbiB0byBhbGwgdGhlIHZlc3NlbHMgb2YgZmxhZ29ucy4KSW4gdGhhdCBkYXksIHNhaXRoIHRoZSBMT1JEIG9mIGhvc3RzLCBzaGFsbCB0aGUgbmFpbCB0aGF0IGlzIGZhc3RlbmVkIGluIHRoZSBzdXJlIHBsYWNlIGJlIHJlbW92ZWQsIGFuZCBiZSBjdXQgZG93biwgYW5kIGZhbGw7IGFuZCB0aGUgYnVyZGVuIHRoYXQgd2FzIHVwb24gaXQgc2hhbGwgYmUgY3V0IG9mZjogZm9yIHRoZSBMT1JEIGhhdGggc3Bva2VuIGl0LgpUaGUgYnVyZGVuIG9mIFR5cmUuIEhvd2wsIHllIHNoaXBzIG9mIFRhcnNoaXNoOyBmb3IgaXQgaXMgbGFpZCB3YXN0ZSwgc28gdGhhdCB0aGVyZSBpcyBubyBob3VzZSwgbm8gZW50ZXJpbmcgaW46IGZyb20gdGhlIGxhbmQgb2YgQ2hpdHRpbSBpdCBpcyByZXZlYWxlZCB0byB0aGVtLgpCZSBzdGlsbCwgeWUgaW5oYWJpdGFudHMgb2YgdGhlIGlzbGU7IHRob3Ugd2hvbSB0aGUgbWVyY2hhbnRzIG9mIFppZG9uLCB0aGF0IHBhc3Mgb3ZlciB0aGUgc2VhLCBoYXZlIHJlcGxlbmlzaGVkLgpBbmQgYnkgZ3JlYXQgd2F0ZXJzIHRoZSBzZWVkIG9mIFNpaG9yLCB0aGUgaGFydmVzdCBvZiB0aGUgcml2ZXIsIGlzIGhlciByZXZlbnVlOyBhbmQgc2hlIGlzIGEgbWFydCBvZiBuYXRpb25zLgpCZSB0aG91IGFzaGFtZWQsIE8gWmlkb246IGZvciB0aGUgc2VhIGhhdGggc3Bva2VuLCBldmVuIHRoZSBzdHJlbmd0aCBvZiB0aGUgc2VhLCBzYXlpbmcsIEkgdHJhdmFpbCBub3QsIG5vciBicmluZyBmb3J0aCBjaGlsZHJlbiwgbmVpdGhlciBkbyBJIG5vdXJpc2ggdXAgeW91bmcgbWVuLCBub3IgYnJpbmcgdXAgdmlyZ2lucy4KQXMgYXQgdGhlIHJlcG9ydCBjb25jZXJuaW5nIEVneXB0LCBzbyBzaGFsbCB0aGV5IGJlIHNvcmVseSBwYWluZWQgYXQgdGhlIHJlcG9ydCBvZiBUeXJlLgpQYXNzIHllIG92ZXIgdG8gVGFyc2hpc2g7IGhvd2wsIHllIGluaGFiaXRhbnRzIG9mIHRoZSBpc2xlLgpJcyB0aGlzIHlvdXIgam95b3VzIGNpdHksIHdob3NlIGFudGlxdWl0eSBpcyBvZiBhbmNpZW50IGRheXM/IGhlciBvd24gZmVldCBzaGFsbCBjYXJyeSBoZXIgYWZhciBvZmYgdG8gc29qb3Vybi4KV2hvIGhhdGggdGFrZW4gdGhpcyBjb3Vuc2VsIGFnYWluc3QgVHlyZSwgdGhlIGNyb3duaW5nIGNpdHksIHdob3NlIG1lcmNoYW50cyBhcmUgcHJpbmNlcywgd2hvc2UgdHJhZmZpY2tlcnMgYXJlIHRoZSBob25vdXJhYmxlIG9mIHRoZSBlYXJ0aD8KVGhlIExPUkQgb2YgaG9zdHMgaGF0aCBwdXJwb3NlZCBpdCwgdG8gc3RhaW4gdGhlIHByaWRlIG9mIGFsbCBnbG9yeSwgYW5kIHRvIGJyaW5nIGludG8gY29udGVtcHQgYWxsIHRoZSBob25vdXJhYmxlIG9mIHRoZSBlYXJ0aC4KUGFzcyB0aHJvdWdoIHRoeSBsYW5kIGFzIGEgcml2ZXIsIE8gZGF1Z2h0ZXIgb2YgVGFyc2hpc2g6IHRoZXJlIGlzIG5vIG1vcmUgc3RyZW5ndGguCkhlIHN0cmV0Y2hlZCBvdXQgaGlzIGhhbmQgb3ZlciB0aGUgc2VhLCBoZSBzaG9vayB0aGUga2luZ2RvbXM6IHRoZSBMT1JEIGhhdGggZ2l2ZW4gYSBjb21tYW5kbWVudCBhZ2FpbnN0IHRoZSBtZXJjaGFudCBjaXR5LCB0byBkZXN0cm95IHRoZSBzdHJvbmcgaG9sZHMgdGhlcmVvZi4KQW5kIGhlIHNhaWQsIFRob3Ugc2hhbHQgbm8gbW9yZSByZWpvaWNlLCBPIHRob3Ugb3BwcmVzc2VkIHZpcmdpbiwgZGF1Z2h0ZXIgb2YgWmlkb246IGFyaXNlLCBwYXNzIG92ZXIgdG8gQ2hpdHRpbTsgdGhlcmUgYWxzbyBzaGFsdCB0aG91IGhhdmUgbm8gcmVzdC4KQmVob2xkIHRoZSBsYW5kIG9mIHRoZSBDaGFsZGVhbnM7IHRoaXMgcGVvcGxlIHdhcyBub3QsIHRpbGwgdGhlIEFzc3lyaWFuIGZvdW5kZWQgaXQgZm9yIHRoZW0gdGhhdCBkd2VsbCBpbiB0aGUgd2lsZGVybmVzczogdGhleSBzZXQgdXAgdGhlIHRvd2VycyB0aGVyZW9mLCB0aGV5IHJhaXNlZCB1cCB0aGUgcGFsYWNlcyB0aGVyZW9mOyBhbmQgaGUgYnJvdWdodCBpdCB0byBydWluLgpIb3dsLCB5ZSBzaGlwcyBvZiBUYXJzaGlzaDogZm9yIHlvdXIgc3RyZW5ndGggaXMgbGFpZCB3YXN0ZS4KQW5kIGl0IHNoYWxsIGNvbWUgdG8gcGFzcyBpbiB0aGF0IGRheSwgdGhhdCBUeXJlIHNoYWxsIGJlIGZvcmdvdHRlbiBzZXZlbnR5IHllYXJzLCBhY2NvcmRpbmcgdG8gdGhlIGRheXMgb2Ygb25lIGtpbmc6IGFmdGVyIHRoZSBlbmQgb2Ygc2V2ZW50eSB5ZWFycyBzaGFsbCBUeXJlIHNpbmcgYXMgYW4gaGFybG90LgpUYWtlIGFuIGhhcnAsIGdvIGFib3V0IHRoZSBjaXR5LCB0aG91IGhhcmxvdCB0aGF0IGhhc3QgYmVlbiBmb3Jnb3R0ZW47IG1ha2Ugc3dlZXQgbWVsb2R5LCBzaW5nIG1hbnkgc29uZ3MsIHRoYXQgdGhvdSBtYXllc3QgYmUgcmVtZW1iZXJlZC4KQW5kIGl0IHNoYWxsIGNvbWUgdG8gcGFzcyBhZnRlciB0aGUgZW5kIG9mIHNldmVudHkgeWVhcnMsIHRoYXQgdGhlIExPUkQgd2lsbCB2aXNpdCBUeXJlLCBhbmQgc2hlIHNoYWxsIHR1cm4gdG8gaGVyIGhpcmUsIGFuZCBzaGFsbCBjb21taXQgZm9ybmljYXRpb24gd2l0aCBhbGwgdGhlIGtpbmdkb21zIG9mIHRoZSB3b3JsZCB1cG9uIHRoZSBmYWNlIG9mIHRoZSBlYXJ0aC4KQW5kIGhlciBtZXJjaGFuZGlzZSBhbmQgaGVyIGhpcmUgc2hhbGwgYmUgaG9saW5lc3MgdG8gdGhlIExPUkQ6IGl0IHNoYWxsIG5vdCBiZSB0cmVhc3VyZWQgbm9yIGxhaWQgdXA7IGZvciBoZXIgbWVyY2hhbmRpc2Ugc2hhbGwgYmUgZm9yIHRoZW0gdGhhdCBkd2VsbCBiZWZvcmUgdGhlIExPUkQsIHRvIGVhdCBzdWZmaWNpZW50bHksIGFuZCBmb3IgZHVyYWJsZSBjbG90aGluZy4KQmVob2xkLCB0aGUgTE9SRCBtYWtldGggdGhlIGVhcnRoIGVtcHR5LCBhbmQgbWFrZXRoIGl0IHdhc3RlLCBhbmQgdHVybmV0aCBpdCB1cHNpZGUgZG93biwgYW5kIHNjYXR0ZXJldGggYWJyb2FkIHRoZSBpbmhhYml0YW50cyB0aGVyZW9mLgpBbmQgaXQgc2hhbGwgYmUsIGFzIHdpdGggdGhlIHBlb3BsZSwgc28gd2l0aCB0aGUgcHJpZXN0OyBhcyB3aXRoIHRoZSBzZXJ2YW50LCBzbyB3aXRoIGhpcyBtYXN0ZXI7IGFzIHdpdGggdGhlIG1haWQsIHNvIHdpdGggaGVyIG1pc3RyZXNzOyBhcyB3aXRoIHRoZSBidXllciwgc28gd2l0aCB0aGUgc2VsbGVyOyBhcyB3aXRoIHRoZSBsZW5kZXIsIHNvIHdpdGggdGhlIGJvcnJvd2VyOyBhcyB3aXRoIHRoZSB0YWtlciBvZiB1c3VyeSwgc28gd2l0aCB0aGUgZ2l2ZXIgb2YgdXN1cnkgdG8gaGltLgpUaGUgbGFuZCBzaGFsbCBiZSB1dHRlcmx5IGVtcHRpZWQsIGFuZCB1dHRlcmx5IHNwb2lsZWQ6IGZvciB0aGUgTE9SRCBoYXRoIHNwb2tlbiB0aGlzIHdvcmQuClRoZSBlYXJ0aCBtb3VybmV0aCBhbmQgZmFkZXRoIGF3YXksIHRoZSB3b3JsZCBsYW5ndWlzaGV0aCBhbmQgZmFkZXRoIGF3YXksIHRoZSBoYXVnaHR5IHBlb3BsZSBvZiB0aGUgZWFydGggZG8gbGFuZ3Vpc2guClRoZSBlYXJ0aCBhbHNvIGlzIGRlZmlsZWQgdW5kZXIgdGhlIGluaGFiaXRhbnRzIHRoZXJlb2Y7IGJlY2F1c2UgdGhleSBoYXZlIHRyYW5zZ3Jlc3NlZCB0aGUgbGF3cywgY2hhbmdlZCB0aGUgb3JkaW5hbmNlLCBicm9rZW4gdGhlIGV2ZXJsYXN0aW5nIGNvdmVuYW50LgpUaGVyZWZvcmUgaGF0aCB0aGUgY3Vyc2UgZGV2b3VyZWQgdGhlIGVhcnRoLCBhbmQgdGhleSB0aGF0IGR3ZWxsIHRoZXJlaW4gYXJlIGRlc29sYXRlOiB0aGVyZWZvcmUgdGhlIGluaGFiaXRhbnRzIG9mIHRoZSBlYXJ0aCBhcmUgYnVybmVkLCBhbmQgZmV3IG1lbiBsZWZ0LgpUaGUgbmV3IHdpbmUgbW91cm5ldGgsIHRoZSB2aW5lIGxhbmd1aXNoZXRoLCBhbGwgdGhlIG1lcnJ5aGVhcnRlZCBkbyBzaWdoLgpUaGUgbWlydGggb2YgdGFicmV0cyBjZWFzZXRoLCB0aGUgbm9pc2Ugb2YgdGhlbSB0aGF0IHJlam9pY2UgZW5kZXRoLCB0aGUgam95IG9mIHRoZSBoYXJwIGNlYXNldGguClRoZXkgc2hhbGwgbm90IGRyaW5rIHdpbmUgd2l0aCBhIHNvbmc7IHN0cm9uZyBkcmluayBzaGFsbCBiZSBiaXR0ZXIgdG8gdGhlbSB0aGF0IGRyaW5rIGl0LgpUaGUgY2l0eSBvZiBjb25mdXNpb24gaXMgYnJva2VuIGRvd246IGV2ZXJ5IGhvdXNlIGlzIHNodXQgdXAsIHRoYXQgbm8gbWFuIG1heSBjb21lIGluLgpUaGVyZSBpcyBhIGNyeWluZyBmb3Igd2luZSBpbiB0aGUgc3RyZWV0czsgYWxsIGpveSBpcyBkYXJrZW5lZCwgdGhlIG1pcnRoIG9mIHRoZSBsYW5kIGlzIGdvbmUuCkluIHRoZSBjaXR5IGlzIGxlZnQgZGVzb2xhdGlvbiwgYW5kIHRoZSBnYXRlIGlzIHNtaXR0ZW4gd2l0aCBkZXN0cnVjdGlvbi4KV2hlbiB0aHVzIGl0IHNoYWxsIGJlIGluIHRoZSBtaWRzdCBvZiB0aGUgbGFuZCBhbW9uZyB0aGUgcGVvcGxlLCB0aGVyZSBzaGFsbCBiZSBhcyB0aGUgc2hha2luZyBvZiBhbiBvbGl2ZSB0cmVlLCBhbmQgYXMgdGhlIGdsZWFuaW5nIGdyYXBlcyB3aGVuIHRoZSB2aW50YWdlIGlzIGRvbmUuClRoZXkgc2hhbGwgbGlmdCB1cCB0aGVpciB2b2ljZSwgdGhleSBzaGFsbCBzaW5nIGZvciB0aGUgbWFqZXN0eSBvZiB0aGUgTE9SRCwgdGhleSBzaGFsbCBjcnkgYWxvdWQgZnJvbSB0aGUgc2VhLgpXaGVyZWZvcmUgZ2xvcmlmeSB5ZSB0aGUgTE9SRCBpbiB0aGUgZmlyZXMsIGV2ZW4gdGhlIG5hbWUgb2YgdGhlIExPUkQgR29kIG9mIElzcmFlbCBpbiB0aGUgaXNsZXMgb2YgdGhlIHNlYS4KRnJvbSB0aGUgdXR0ZXJtb3N0IHBhcnQgb2YgdGhlIGVhcnRoIGhhdmUgd2UgaGVhcmQgc29uZ3MsIGV2ZW4gZ2xvcnkgdG8gdGhlIHJpZ2h0ZW91cy4gQnV0IEkgc2FpZCwgTXkgbGVhbm5lc3MsIG15IGxlYW5uZXNzLCB3b2UgdW50byBtZSEgdGhlIHRyZWFjaGVyb3VzIGRlYWxlcnMgaGF2ZSBkZWFsdCB0cmVhY2hlcm91c2x5OyB5ZWEsIHRoZSB0cmVhY2hlcm91cyBkZWFsZXJzIGhhdmUgZGVhbHQgdmVyeSB0cmVhY2hlcm91c2x5LgpGZWFyLCBhbmQgdGhlIHBpdCwgYW5kIHRoZSBzbmFyZSwgYXJlIHVwb24gdGhlZSwgTyBpbmhhYml0YW50IG9mIHRoZSBlYXJ0aC4KQW5kIGl0IHNoYWxsIGNvbWUgdG8gcGFzcywgdGhhdCBoZSB3aG8gZmxlZXRoIGZyb20gdGhlIG5vaXNlIG9mIHRoZSBmZWFyIHNoYWxsIGZhbGwgaW50byB0aGUgcGl0OyBhbmQgaGUgdGhhdCBjb21ldGggdXAgb3V0IG9mIHRoZSBtaWRzdCBvZiB0aGUgcGl0IHNoYWxsIGJlIHRha2VuIGluIHRoZSBzbmFyZTogZm9yIHRoZSB3aW5kb3dzIGZyb20gb24gaGlnaCBhcmUgb3BlbiwgYW5kIHRoZSBmb3VuZGF0aW9ucyBvZiB0aGUgZWFydGggZG8gc2hha2UuClRoZSBlYXJ0aCBpcyB1dHRlcmx5IGJyb2tlbiBkb3duLCB0aGUgZWFydGggaXMgY2xlYW4gZGlzc29sdmVkLCB0aGUgZWFydGggaXMgbW92ZWQgZXhjZWVkaW5nbHkuClRoZSBlYXJ0aCBzaGFsbCByZWVsIHRvIGFuZCBmcm8gbGlrZSBhIGRydW5rYXJkLCBhbmQgc2hhbGwgYmUgcmVtb3ZlZCBsaWtlIGEgY290dGFnZTsgYW5kIHRoZSB0cmFuc2dyZXNzaW9uIHRoZXJlb2Ygc2hhbGwgYmUgaGVhdnkgdXBvbiBpdDsgYW5kIGl0IHNoYWxsIGZhbGwsIGFuZCBub3QgcmlzZSBhZ2Fpbi4KQW5kIGl0IHNoYWxsIGNvbWUgdG8gcGFzcyBpbiB0aGF0IGRheSwgdGhhdCB0aGUgTE9SRCBzaGFsbCBwdW5pc2ggdGhlIGhvc3Qgb2YgdGhlIGhpZ2ggb25lcyB0aGF0IGFyZSBvbiBoaWdoLCBhbmQgdGhlIGtpbmdzIG9mIHRoZSBlYXJ0aCB1cG9uIHRoZSBlYXJ0aC4KQW5kIHRoZXkgc2hhbGwgYmUgZ2F0aGVyZWQgdG9nZXRoZXIsIGFzIHByaXNvbmVycyBhcmUgZ2F0aGVyZWQgaW4gdGhlIHBpdCwgYW5kIHNoYWxsIGJlIHNodXQgdXAgaW4gdGhlIHByaXNvbiwgYW5kIGFmdGVyIG1hbnkgZGF5cyBzaGFsbCB0aGV5IGJlIHZpc2l0ZWQuClRoZW4gdGhlIG1vb24gc2hhbGwgYmUgY29uZm91bmRlZCwgYW5kIHRoZSBzdW4gYXNoYW1lZCwgd2hlbiB0aGUgTE9SRCBvZiBob3N0cyBzaGFsbCByZWlnbiBpbiBtb3VudCBaaW9uLCBhbmQgaW4gSmVydXNhbGVtLCBhbmQgYmVmb3JlIGhpcyBhbmNpZW50cyBnbG9yaW91c2x5LgpPIExvcmQsIHRob3UgYXJ0IG15IEdvZDsgSSB3aWxsIGV4YWx0IHRoZWUsIEkgd2lsbCBwcmFpc2UgdGh5IG5hbWU7IGZvciB0aG91IGhhc3QgZG9uZSB3b25kZXJmdWwgdGhpbmdzOyB0aHkgY291bnNlbHMgb2Ygb2xkIGFyZSBmYWl0aGZ1bG5lc3MgYW5kIHRydXRoLgpGb3IgdGhvdSBoYXN0IG1hZGUgb2YgYSBjaXR5IGFuIGhlYXA7IG9mIGEgZGVmZW5jZWQgY2l0eSBhIHJ1aW46IGEgcGFsYWNlIG9mIHN0cmFuZ2VycyB0byBiZSBubyBjaXR5OyBpdCBzaGFsbCBuZXZlciBiZSBidWlsdC4KVGhlcmVmb3JlIHNoYWxsIHRoZSBzdHJvbmcgcGVvcGxlIGdsb3JpZnkgdGhlZSwgdGhlIGNpdHkgb2YgdGhlIHRlcnJpYmxlIG5hdGlvbnMgc2hhbGwgZmVhciB0aGVlLgpGb3IgdGhvdSBoYXN0IGJlZW4gYSBzdHJlbmd0aCB0byB0aGUgcG9vciwgYSBzdHJlbmd0aCB0byB0aGUgbmVlZHkgaW4gaGlzIGRpc3RyZXNzLCBhIHJlZnVnZSBmcm9tIHRoZSBzdG9ybSwgYSBzaGFkb3cgZnJvbSB0aGUgaGVhdCwgd2hlbiB0aGUgYmxhc3Qgb2YgdGhlIHRlcnJpYmxlIG9uZXMgaXMgYXMgYSBzdG9ybSBhZ2FpbnN0IHRoZSB3YWxsLgpUaG91IHNoYWx0IGJyaW5nIGRvd24gdGhlIG5vaXNlIG9mIHN0cmFuZ2VycywgYXMgdGhlIGhlYXQgaW4gYSBkcnkgcGxhY2U7IGV2ZW4gdGhlIGhlYXQgd2l0aCB0aGUgc2hhZG93IG9mIGEgY2xvdWQ6IHRoZSBicmFuY2ggb2YgdGhlIHRlcnJpYmxlIG9uZXMgc2hhbGwgYmUgYnJvdWdodCBsb3cuCkFuZCBpbiB0aGlzIG1vdW50YWluIHNoYWxsIHRoZSBMT1JEIG9mIGhvc3RzIG1ha2UgdW50byBhbGwgcGVvcGxlIGEgZmVhc3Qgb2YgZmF0IHRoaW5ncywgYSBmZWFzdCBvZiB3aW5lcyBvbiB0aGUgbGVlcywgb2YgZmF0IHRoaW5ncyBmdWxsIG9mIG1hcnJvdywgb2Ygd2luZXMgb24gdGhlIGxlZXMgd2VsbCByZWZpbmVkLgpBbmQgaGUgd2lsbCBkZXN0cm95IGluIHRoaXMgbW91bnRhaW4gdGhlIGZhY2Ugb2YgdGhlIGNvdmVyaW5nIGNhc3Qgb3ZlciBhbGwgcGVvcGxlLCBhbmQgdGhlIHZhaWwgdGhhdCBpcyBzcHJlYWQgb3ZlciBhbGwgbmF0aW9ucy4KSGUgd2lsbCBzd2FsbG93IHVwIGRlYXRoIGluIHZpY3Rvcnk7IGFuZCB0aGUgTG9yZCBHT0Qgd2lsbCB3aXBlIGF3YXkgdGVhcnMgZnJvbSBvZmYgYWxsIGZhY2VzOyBhbmQgdGhlIHJlYnVrZSBvZiBoaXMgcGVvcGxlIHNoYWxsIGhlIHRha2UgYXdheSBmcm9tIG9mZiBhbGwgdGhlIGVhcnRoOiBmb3IgdGhlIExPUkQgaGF0aCBzcG9rZW4gaXQuCkFuZCBpdCBzaGFsbCBiZSBzYWlkIGluIHRoYXQgZGF5LCBMbywgdGhpcyBpcyBvdXIgR29kOyB3ZSBoYXZlIHdhaXRlZCBmb3IgaGltLCBhbmQgaGUgd2lsbCBzYXZlIHVzOiB0aGlzIGlzIHRoZSBMT1JEOyB3ZSBoYXZlIHdhaXRlZCBmb3IgaGltLCB3ZSB3aWxsIGJlIGdsYWQgYW5kIHJlam9pY2UgaW4gaGlzIHNhbHZhdGlvbi4KRm9yIGluIHRoaXMgbW91bnRhaW4gc2hhbGwgdGhlIGhhbmQgb2YgdGhlIExPUkQgcmVzdCwgYW5kIE1vYWIgc2hhbGwgYmUgdHJvZGRlbiBkb3duIHVuZGVyIGhpbSwgZXZlbiBhcyBzdHJhdyBpcyB0cm9kZGVuIGRvd24gZm9yIHRoZSBkdW5naGlsbC4KQW5kIGhlIHNoYWxsIHNwcmVhZCBmb3J0aCBoaXMgaGFuZHMgaW4gdGhlIG1pZHN0IG9mIHRoZW0sIGFzIGhlIHRoYXQgc3dpbW1ldGggc3ByZWFkZXRoIGZvcnRoIGhpcyBoYW5kcyB0byBzd2ltOiBhbmQgaGUgc2hhbGwgYnJpbmcgZG93biB0aGVpciBwcmlkZSB0b2dldGhlciB3aXRoIHRoZSBzcG9pbHMgb2YgdGhlaXIgaGFuZHMuCkFuZCB0aGUgZm9ydHJlc3Mgb2YgdGhlIGhpZ2ggZm9ydCBvZiB0aHkgd2FsbHMgc2hhbGwgaGUgYnJpbmcgZG93biwgbGF5IGxvdywgYW5kIGJyaW5nIHRvIHRoZSBncm91bmQsIGV2ZW4gdG8gdGhlIGR1c3QuCkluIHRoYXQgZGF5IHNoYWxsIHRoaXMgc29uZyBiZSBzdW5nIGluIHRoZSBsYW5kIG9mIEp1ZGFoOyBXZSBoYXZlIGEgc3Ryb25nIGNpdHk7IHNhbHZhdGlvbiB3aWxsIEdvZCBhcHBvaW50IGZvciB3YWxscyBhbmQgYnVsd2Fya3MuCk9wZW4geWUgdGhlIGdhdGVzLCB0aGF0IHRoZSByaWdodGVvdXMgbmF0aW9uIHdoaWNoIGtlZXBldGggdGhlIHRydXRoIG1heSBlbnRlciBpbi4KVGhvdSB3aWx0IGtlZXAgaGltIGluIHBlcmZlY3QgcGVhY2UsIHdob3NlIG1pbmQgaXMgc3RheWVkIG9uIHRoZWU6IGJlY2F1c2UgaGUgdHJ1c3RldGggaW4gdGhlZS4KVHJ1c3QgeWUgaW4gdGhlIExPUkQgZm9yIGV2ZXI6IGZvciBpbiB0aGUgTE9SRCBKRUhPVkFIIGlzIGV2ZXJsYXN0aW5nIHN0cmVuZ3RoOgpGb3IgaGUgYnJpbmdldGggZG93biB0aGVtIHRoYXQgZHdlbGwgb24gaGlnaDsgdGhlIGxvZnR5IGNpdHksIGhlIGxheWV0aCBpdCBsb3c7IGhlIGxheWV0aCBpdCBsb3csIGV2ZW4gdG8gdGhlIGdyb3VuZDsgaGUgYnJpbmdldGggaXQgZXZlbiB0byB0aGUgZHVzdC4KVGhlIGZvb3Qgc2hhbGwgdHJlYWQgaXQgZG93biwgZXZlbiB0aGUgZmVldCBvZiB0aGUgcG9vciwgYW5kIHRoZSBzdGVwcyBvZiB0aGUgbmVlZHkuClRoZSB3YXkgb2YgdGhlIGp1c3QgaXMgdXByaWdodG5lc3M6IHRob3UsIG1vc3QgdXByaWdodCwgZG9zdCB3ZWlnaCB0aGUgcGF0aCBvZiB0aGUganVzdC4KWWVhLCBpbiB0aGUgd2F5IG9mIHRoeSBqdWRnbWVudHMsIE8gTE9SRCwgaGF2ZSB3ZSB3YWl0ZWQgZm9yIHRoZWU7IHRoZSBkZXNpcmUgb2Ygb3VyIHNvdWwgaXMgdG8gdGh5IG5hbWUsIGFuZCB0byB0aGUgcmVtZW1icmFuY2Ugb2YgdGhlZS4KV2l0aCBteSBzb3VsIGhhdmUgSSBkZXNpcmVkIHRoZWUgaW4gdGhlIG5pZ2h0OyB5ZWEsIHdpdGggbXkgc3Bpcml0IHdpdGhpbiBtZSB3aWxsIEkgc2VlayB0aGVlIGVhcmx5OiBmb3Igd2hlbiB0aHkganVkZ21lbnRzIGFyZSBpbiB0aGUgZWFydGgsIHRoZSBpbmhhYml0YW50cyBvZiB0aGUgd29ybGQgd2lsbCBsZWFybiByaWdodGVvdXNuZXNzLgpMZXQgZmF2b3VyIGJlIHNoZXdlZCB0byB0aGUgd2lja2VkLCB5ZXQgd2lsbCBoZSBub3QgbGVhcm4gcmlnaHRlb3VzbmVzczogaW4gdGhlIGxhbmQgb2YgdXByaWdodG5lc3Mgd2lsbCBoZSBkZWFsIHVuanVzdGx5LCBhbmQgd2lsbCBub3QgYmVob2xkIHRoZSBtYWplc3R5IG9mIHRoZSBMT1JELgpMT1JELCB3aGVuIHRoeSBoYW5kIGlzIGxpZnRlZCB1cCwgdGhleSB3aWxsIG5vdCBzZWU6IGJ1dCB0aGV5IHNoYWxsIHNlZSwgYW5kIGJlIGFzaGFtZWQgZm9yIHRoZWlyIGVudnkgYXQgdGhlIHBlb3BsZTsgeWVhLCB0aGUgZmlyZSBvZiB0aGluZSBlbmVtaWVzIHNoYWxsIGRldm91ciB0aGVtLgpMT1JELCB0aG91IHdpbHQgb3JkYWluIHBlYWNlIGZvciB1czogZm9yIHRob3UgYWxzbyBoYXN0IHdyb3VnaHQgYWxsIG91ciB3b3JrcyBpbiB1cy4KTyBMT1JEIG91ciBHb2QsIG90aGVyIGxvcmRzIGJlc2lkZSB0aGVlIGhhdmUgaGFkIGRvbWluaW9uIG92ZXIgdXM6IGJ1dCBieSB0aGVlIG9ubHkgd2lsbCB3ZSBtYWtlIG1lbnRpb24gb2YgdGh5IG5hbWUuClRoZXkgYXJlIGRlYWQsIHRoZXkgc2hhbGwgbm90IGxpdmU7IHRoZXkgYXJlIGRlY2Vhc2VkLCB0aGV5IHNoYWxsIG5vdCByaXNlOiB0aGVyZWZvcmUgaGFzdCB0aG91IHZpc2l0ZWQgYW5kIGRlc3Ryb3llZCB0aGVtLCBhbmQgbWFkZSBhbGwgdGhlaXIgbWVtb3J5IHRvIHBlcmlzaC4KVGhvdSBoYXN0IGluY3JlYXNlZCB0aGUgbmF0aW9uLCBPIExPUkQsIHRob3UgaGFzdCBpbmNyZWFzZWQgdGhlIG5hdGlvbjogdGhvdSBhcnQgZ2xvcmlmaWVkOiB0aG91IGhhZHN0IHJlbW92ZWQgaXQgZmFyIHVudG8gYWxsIHRoZSBlbmRzIG9mIHRoZSBlYXJ0aC4KTE9SRCwgaW4gdHJvdWJsZSBoYXZlIHRoZXkgdmlzaXRlZCB0aGVlLCB0aGV5IHBvdXJlZCBvdXQgYSBwcmF5ZXIgd2hlbiB0aHkgY2hhc3RlbmluZyB3YXMgdXBvbiB0aGVtLgpMaWtlIGFzIGEgd29tYW4gd2l0aCBjaGlsZCwgdGhhdCBkcmF3ZXRoIG5lYXIgdGhlIHRpbWUgb2YgaGVyIGRlbGl2ZXJ5LCBpcyBpbiBwYWluLCBhbmQgY3JpZXRoIG91dCBpbiBoZXIgcGFuZ3M7IHNvIGhhdmUgd2UgYmVlbiBpbiB0aHkgc2lnaHQsIE8gTE9SRC4KV2UgaGF2ZSBiZWVuIHdpdGggY2hpbGQsIHdlIGhhdmUgYmVlbiBpbiBwYWluLCB3ZSBoYXZlIGFzIGl0IHdlcmUgYnJvdWdodCBmb3J0aCB3aW5kOyB3ZSBoYXZlIG5vdCB3cm91Z2h0IGFueSBkZWxpdmVyYW5jZSBpbiB0aGUgZWFydGg7IG5laXRoZXIgaGF2ZSB0aGUgaW5oYWJpdGFudHMgb2YgdGhlIHdvcmxkIGZhbGxlbi4KVGh5IGRlYWQgbWVuIHNoYWxsIGxpdmUsIHRvZ2V0aGVyIHdpdGggbXkgZGVhZCBib2R5IHNoYWxsIHRoZXkgYXJpc2UuIEF3YWtlIGFuZCBzaW5nLCB5ZSB0aGF0IGR3ZWxsIGluIGR1c3Q6IGZvciB0aHkgZGV3IGlzIGFzIHRoZSBkZXcgb2YgaGVyYnMsIGFuZCB0aGUgZWFydGggc2hhbGwgY2FzdCBvdXQgdGhlIGRlYWQuCkNvbWUsIG15IHBlb3BsZSwgZW50ZXIgdGhvdSBpbnRvIHRoeSBjaGFtYmVycywgYW5kIHNodXQgdGh5IGRvb3JzIGFib3V0IHRoZWU6IGhpZGUgdGh5c2VsZiBhcyBpdCB3ZXJlIGZvciBhIGxpdHRsZSBtb21lbnQsIHVudGlsIHRoZSBpbmRpZ25hdGlvbiBiZSBvdmVycGFzdC4KRm9yLCBiZWhvbGQsIHRoZSBMT1JEIGNvbWV0aCBvdXQgb2YgaGlzIHBsYWNlIHRvIHB1bmlzaCB0aGUgaW5oYWJpdGFudHMgb2YgdGhlIGVhcnRoIGZvciB0aGVpciBpbmlxdWl0eTogdGhlIGVhcnRoIGFsc28gc2hhbGwgZGlzY2xvc2UgaGVyIGJsb29kLCBhbmQgc2hhbGwgbm8gbW9yZSBjb3ZlciBoZXIgc2xhaW4uCkluIHRoYXQgZGF5IHRoZSBMT1JEIHdpdGggaGlzIHNvcmUgYW5kIGdyZWF0IGFuZCBzdHJvbmcgc3dvcmQgc2hhbGwgcHVuaXNoIGxldmlhdGhhbiB0aGUgcGllcmNpbmcgc2VycGVudCwgZXZlbiBsZXZpYXRoYW4gdGhhdCBjcm9va2VkIHNlcnBlbnQ7IGFuZCBoZSBzaGFsbCBzbGF5IHRoZSBkcmFnb24gdGhhdCBpcyBpbiB0aGUgc2VhLgpJbiB0aGF0IGRheSBzaW5nIHllIHVudG8gaGVyLCBBIHZpbmV5YXJkIG9mIHJlZCB3aW5lLgpJIHRoZSBMT1JEIGRvIGtlZXAgaXQ7IEkgd2lsbCB3YXRlciBpdCBldmVyeSBtb21lbnQ6IGxlc3QgYW55IGh1cnQgaXQsIEkgd2lsbCBrZWVwIGl0IG5pZ2h0IGFuZCBkYXkuCkZ1cnkgaXMgbm90IGluIG1lOiB3aG8gd291bGQgc2V0IHRoZSBicmllcnMgYW5kIHRob3JucyBhZ2FpbnN0IG1lIGluIGJhdHRsZT8gSSB3b3VsZCBnbyB0aHJvdWdoIHRoZW0sIEkgd291bGQgYnVybiB0aGVtIHRvZ2V0aGVyLgpPciBsZXQgaGltIHRha2UgaG9sZCBvZiBteSBzdHJlbmd0aCwgdGhhdCBoZSBtYXkgbWFrZSBwZWFjZSB3aXRoIG1lOyBhbmQgaGUgc2hhbGwgbWFrZSBwZWFjZSB3aXRoIG1lLgpIZSBzaGFsbCBjYXVzZSB0aGVtIHRoYXQgY29tZSBvZiBKYWNvYiB0byB0YWtlIHJvb3Q6IElzcmFlbCBzaGFsbCBibG9zc29tIGFuZCBidWQsIGFuZCBmaWxsIHRoZSBmYWNlIG9mIHRoZSB3b3JsZCB3aXRoIGZydWl0LgpIYXRoIGhlIHNtaXR0ZW4gaGltLCBhcyBoZSBzbW90ZSB0aG9zZSB0aGF0IHNtb3RlIGhpbT8gb3IgaXMgaGUgc2xhaW4gYWNjb3JkaW5nIHRvIHRoZSBzbGF1Z2h0ZXIgb2YgdGhlbSB0aGF0IGFyZSBzbGFpbiBieSBoaW0/CkluIG1lYXN1cmUsIHdoZW4gaXQgc2hvb3RldGggZm9ydGgsIHRob3Ugd2lsdCBkZWJhdGUgd2l0aCBpdDogaGUgc3RheWV0aCBoaXMgcm91Z2ggd2luZCBpbiB0aGUgZGF5IG9mIHRoZSBlYXN0IHdpbmQuCkJ5IHRoaXMgdGhlcmVmb3JlIHNoYWxsIHRoZSBpbmlxdWl0eSBvZiBKYWNvYiBiZSBwdXJnZWQ7IGFuZCB0aGlzIGlzIGFsbCB0aGUgZnJ1aXQgdG8gdGFrZSBhd2F5IGhpcyBzaW47IHdoZW4gaGUgbWFrZXRoIGFsbCB0aGUgc3RvbmVzIG9mIHRoZSBhbHRhciBhcyBjaGFsa3N0b25lcyB0aGF0IGFyZSBiZWF0ZW4gaW4gc3VuZGVyLCB0aGUgZ3JvdmVzIGFuZCBpbWFnZXMgc2hhbGwgbm90IHN0YW5kIHVwLgpZZXQgdGhlIGRlZmVuY2VkIGNpdHkgc2hhbGwgYmUgZGVzb2xhdGUsIGFuZCB0aGUgaGFiaXRhdGlvbiBmb3JzYWtlbiwgYW5kIGxlZnQgbGlrZSBhIHdpbGRlcm5lc3M6IHRoZXJlIHNoYWxsIHRoZSBjYWxmIGZlZWQsIGFuZCB0aGVyZSBzaGFsbCBoZSBsaWUgZG93biwgYW5kIGNvbnN1bWUgdGhlIGJyYW5jaGVzIHRoZXJlb2YuCldoZW4gdGhlIGJvdWdocyB0aGVyZW9mIGFyZSB3aXRoZXJlZCwgdGhleSBzaGFsbCBiZSBicm9rZW4gb2ZmOiB0aGUgd29tZW4gY29tZSwgYW5kIHNldCB0aGVtIG9uIGZpcmU6IGZvciBpdCBpcyBhIHBlb3BsZSBvZiBubyB1bmRlcnN0YW5kaW5nOiB0aGVyZWZvcmUgaGUgdGhhdCBtYWRlIHRoZW0gd2lsbCBub3QgaGF2ZSBtZXJjeSBvbiB0aGVtLCBhbmQgaGUgdGhhdCBmb3JtZWQgdGhlbSB3aWxsIHNoZXcgdGhlbSBubyBmYXZvdXIuCkFuZCBpdCBzaGFsbCBjb21lIHRvIHBhc3MgaW4gdGhhdCBkYXksIHRoYXQgdGhlIExPUkQgc2hhbGwgYmVhdCBvZmYgZnJvbSB0aGUgY2hhbm5lbCBvZiB0aGUgcml2ZXIgdW50byB0aGUgc3RyZWFtIG9mIEVneXB0LCBhbmQgeWUgc2hhbGwgYmUgZ2F0aGVyZWQgb25lIGJ5IG9uZSwgTyB5ZSBjaGlsZHJlbiBvZiBJc3JhZWwuCkFuZCBpdCBzaGFsbCBjb21lIHRvIHBhc3MgaW4gdGhhdCBkYXksIHRoYXQgdGhlIGdyZWF0IHRydW1wZXQgc2hhbGwgYmUgYmxvd24sIGFuZCB0aGV5IHNoYWxsIGNvbWUgd2hpY2ggd2VyZSByZWFkeSB0byBwZXJpc2ggaW4gdGhlIGxhbmQgb2YgQXNzeXJpYSwgYW5kIHRoZSBvdXRjYXN0cyBpbiB0aGUgbGFuZCBvZiBFZ3lwdCwgYW5kIHNoYWxsIHdvcnNoaXAgdGhlIExPUkQgaW4gdGhlIGhvbHkgbW91bnQgYXQgSmVydXNhbGVtLgpXb2UgdG8gdGhlIGNyb3duIG9mIHByaWRlLCB0byB0aGUgZHJ1bmthcmRzIG9mIEVwaHJhaW0sIHdob3NlIGdsb3Jpb3VzIGJlYXV0eSBpcyBhIGZhZGluZyBmbG93ZXIsIHdoaWNoIGFyZSBvbiB0aGUgaGVhZCBvZiB0aGUgZmF0IHZhbGxleXMgb2YgdGhlbSB0aGF0IGFyZSBvdmVyY29tZSB3aXRoIHdpbmUhCkJlaG9sZCwgdGhlIExvcmQgaGF0aCBhIG1pZ2h0eSBhbmQgc3Ryb25nIG9uZSwgd2hpY2ggYXMgYSB0ZW1wZXN0IG9mIGhhaWwgYW5kIGEgZGVzdHJveWluZyBzdG9ybSwgYXMgYSBmbG9vZCBvZiBtaWdodHkgd2F0ZXJzIG92ZXJmbG93aW5nLCBzaGFsbCBjYXN0IGRvd24gdG8gdGhlIGVhcnRoIHdpdGggdGhlIGhhbmQuClRoZSBjcm93biBvZiBwcmlkZSwgdGhlIGRydW5rYXJkcyBvZiBFcGhyYWltLCBzaGFsbCBiZSB0cm9kZGVuIHVuZGVyIGZlZXQ6CkFuZCB0aGUgZ2xvcmlvdXMgYmVhdXR5LCB3aGljaCBpcyBvbiB0aGUgaGVhZCBvZiB0aGUgZmF0IHZhbGxleSwgc2hhbGwgYmUgYSBmYWRpbmcgZmxvd2VyLCBhbmQgYXMgdGhlIGhhc3R5IGZydWl0IGJlZm9yZSB0aGUgc3VtbWVyOyB3aGljaCB3aGVuIGhlIHRoYXQgbG9va2V0aCB1cG9uIGl0IHNlZXRoLCB3aGlsZSBpdCBpcyB5ZXQgaW4gaGlzIGhhbmQgaGUgZWF0ZXRoIGl0IHVwLgpJbiB0aGF0IGRheSBzaGFsbCB0aGUgTE9SRCBvZiBob3N0cyBiZSBmb3IgYSBjcm93biBvZiBnbG9yeSwgYW5kIGZvciBhIGRpYWRlbSBvZiBiZWF1dHksIHVudG8gdGhlIHJlc2lkdWUgb2YgaGlzIHBlb3BsZSwKQW5kIGZvciBhIHNwaXJpdCBvZiBqdWRnbWVudCB0byBoaW0gdGhhdCBzaXR0ZXRoIGluIGp1ZGdtZW50LCBhbmQgZm9yIHN0cmVuZ3RoIHRvIHRoZW0gdGhhdCB0dXJuIHRoZSBiYXR0bGUgdG8gdGhlIGdhdGUuCkJ1dCB0aGV5IGFsc28gaGF2ZSBlcnJlZCB0aHJvdWdoIHdpbmUsIGFuZCB0aHJvdWdoIHN0cm9uZyBkcmluayBhcmUgb3V0IG9mIHRoZSB3YXk7IHRoZSBwcmllc3QgYW5kIHRoZSBwcm9waGV0IGhhdmUgZXJyZWQgdGhyb3VnaCBzdHJvbmcgZHJpbmssIHRoZXkgYXJlIHN3YWxsb3dlZCB1cCBvZiB3aW5lLCB0aGV5IGFyZSBvdXQgb2YgdGhlIHdheSB0aHJvdWdoIHN0cm9uZyBkcmluazsgdGhleSBlcnIgaW4gdmlzaW9uLCB0aGV5IHN0dW1ibGUgaW4ganVkZ21lbnQuCkZvciBhbGwgdGFibGVzIGFyZSBmdWxsIG9mIHZvbWl0IGFuZCBmaWx0aGluZXNzLCBzbyB0aGF0IHRoZXJlIGlzIG5vIHBsYWNlIGNsZWFuLgpXaG9tIHNoYWxsIGhlIHRlYWNoIGtub3dsZWRnZT8gYW5kIHdob20gc2hhbGwgaGUgbWFrZSB0byB1bmRlcnN0YW5kIGRvY3RyaW5lPyB0aGVtIHRoYXQgYXJlIHdlYW5lZCBmcm9tIHRoZSBtaWxrLCBhbmQgZHJhd24gZnJvbSB0aGUgYnJlYXN0cy4KRm9yIHByZWNlcHQgbXVzdCBiZSB1cG9uIHByZWNlcHQsIHByZWNlcHQgdXBvbiBwcmVjZXB0OyBsaW5lIHVwb24gbGluZSwgbGluZSB1cG9uIGxpbmU7IGhlcmUgYSBsaXR0bGUsIGFuZCB0aGVyZSBhIGxpdHRsZToKRm9yIHdpdGggc3RhbW1lcmluZyBsaXBzIGFuZCBhbm90aGVyIHRvbmd1ZSB3aWxsIGhlIHNwZWFrIHRvIHRoaXMgcGVvcGxlLgpUbyB3aG9tIGhlIHNhaWQsIFRoaXMgaXMgdGhlIHJlc3Qgd2hlcmV3aXRoIHllIG1heSBjYXVzZSB0aGUgd2VhcnkgdG8gcmVzdDsgYW5kIHRoaXMgaXMgdGhlIHJlZnJlc2hpbmc6IHlldCB0aGV5IHdvdWxkIG5vdCBoZWFyLgpCdXQgdGhlIHdvcmQgb2YgdGhlIExPUkQgd2FzIHVudG8gdGhlbSBwcmVjZXB0IHVwb24gcHJlY2VwdCwgcHJlY2VwdCB1cG9uIHByZWNlcHQ7IGxpbmUgdXBvbiBsaW5lLCBsaW5lIHVwb24gbGluZTsgaGVyZSBhIGxpdHRsZSwgYW5kIHRoZXJlIGEgbGl0dGxlOyB0aGF0IHRoZXkgbWlnaHQgZ28sIGFuZCBmYWxsIGJhY2t3YXJkLCBhbmQgYmUgYnJva2VuLCBhbmQgc25hcmVkLCBhbmQgdGFrZW4uCldoZXJlZm9yZSBoZWFyIHRoZSB3b3JkIG9mIHRoZSBMT1JELCB5ZSBzY29ybmZ1bCBtZW4sIHRoYXQgcnVsZSB0aGlzIHBlb3BsZSB3aGljaCBpcyBpbiBKZXJ1c2FsZW0uCkJlY2F1c2UgeWUgaGF2ZSBzYWlkLCBXZSBoYXZlIG1hZGUgYSBjb3ZlbmFudCB3aXRoIGRlYXRoLCBhbmQgd2l0aCBoZWxsIGFyZSB3ZSBhdCBhZ3JlZW1lbnQ7IHdoZW4gdGhlIG92ZXJmbG93aW5nIHNjb3VyZ2Ugc2hhbGwgcGFzcyB0aHJvdWdoLCBpdCBzaGFsbCBub3QgY29tZSB1bnRvIHVzOiBmb3Igd2UgaGF2ZSBtYWRlIGxpZXMgb3VyIHJlZnVnZSwgYW5kIHVuZGVyIGZhbHNlaG9vZCBoYXZlIHdlIGhpZCBvdXJzZWx2ZXM6ClRoZXJlZm9yZSB0aHVzIHNhaXRoIHRoZSBMb3JkIEdPRCwgQmVob2xkLCBJIGxheSBpbiBaaW9uIGZvciBhIGZvdW5kYXRpb24gYSBzdG9uZSwgYSB0cmllZCBzdG9uZSwgYSBwcmVjaW91cyBjb3JuZXIgc3RvbmUsIGEgc3VyZSBmb3VuZGF0aW9uOiBoZSB0aGF0IGJlbGlldmV0aCBzaGFsbCBub3QgbWFrZSBoYXN0ZS4KSnVkZ21lbnQgYWxzbyB3aWxsIEkgbGF5IHRvIHRoZSBsaW5lLCBhbmQgcmlnaHRlb3VzbmVzcyB0byB0aGUgcGx1bW1ldDogYW5kIHRoZSBoYWlsIHNoYWxsIHN3ZWVwIGF3YXkgdGhlIHJlZnVnZSBvZiBsaWVzLCBhbmQgdGhlIHdhdGVycyBzaGFsbCBvdmVyZmxvdyB0aGUgaGlkaW5nIHBsYWNlLgpBbmQgeW91ciBjb3ZlbmFudCB3aXRoIGRlYXRoIHNoYWxsIGJlIGRpc2FubnVsbGVkLCBhbmQgeW91ciBhZ3JlZW1lbnQgd2l0aCBoZWxsIHNoYWxsIG5vdCBzdGFuZDsgd2hlbiB0aGUgb3ZlcmZsb3dpbmcgc2NvdXJnZSBzaGFsbCBwYXNzIHRocm91Z2gsIHRoZW4geWUgc2hhbGwgYmUgdHJvZGRlbiBkb3duIGJ5IGl0LgpGcm9tIHRoZSB0aW1lIHRoYXQgaXQgZ29ldGggZm9ydGggaXQgc2hhbGwgdGFrZSB5b3U6IGZvciBtb3JuaW5nIGJ5IG1vcm5pbmcgc2hhbGwgaXQgcGFzcyBvdmVyLCBieSBkYXkgYW5kIGJ5IG5pZ2h0OiBhbmQgaXQgc2hhbGwgYmUgYSB2ZXhhdGlvbiBvbmx5IHRvIHVuZGVyc3RhbmQgdGhlIHJlcG9ydC4KRm9yIHRoZSBiZWQgaXMgc2hvcnRlciB0aGFuIHRoYXQgYSBtYW4gY2FuIHN0cmV0Y2ggaGltc2VsZiBvbiBpdDogYW5kIHRoZSBjb3ZlcmluZyBuYXJyb3dlciB0aGFuIHRoYXQgaGUgY2FuIHdyYXAgaGltc2VsZiBpbiBpdC4KRm9yIHRoZSBMT1JEIHNoYWxsIHJpc2UgdXAgYXMgaW4gbW91bnQgUGVyYXppbSwgaGUgc2hhbGwgYmUgd3JvdGggYXMgaW4gdGhlIHZhbGxleSBvZiBHaWJlb24sIHRoYXQgaGUgbWF5IGRvIGhpcyB3b3JrLCBoaXMgc3RyYW5nZSB3b3JrOyBhbmQgYnJpbmcgdG8gcGFzcyBoaXMgYWN0LCBoaXMgc3RyYW5nZSBhY3QuCk5vdyB0aGVyZWZvcmUgYmUgeWUgbm90IG1vY2tlcnMsIGxlc3QgeW91ciBiYW5kcyBiZSBtYWRlIHN0cm9uZzogZm9yIEkgaGF2ZSBoZWFyZCBmcm9tIHRoZSBMb3JkIEdPRCBvZiBob3N0cyBhIGNvbnN1bXB0aW9uLCBldmVuIGRldGVybWluZWQgdXBvbiB0aGUgd2hvbGUgZWFydGguCkdpdmUgeWUgZWFyLCBhbmQgaGVhciBteSB2b2ljZTsgaGVhcmtlbiwgYW5kIGhlYXIgbXkgc3BlZWNoLgpEb3RoIHRoZSBwbG93bWFuIHBsb3cgYWxsIGRheSB0byBzb3c/IGRvdGggaGUgb3BlbiBhbmQgYnJlYWsgdGhlIGNsb2RzIG9mIGhpcyBncm91bmQ/CldoZW4gaGUgaGF0aCBtYWRlIHBsYWluIHRoZSBmYWNlIHRoZXJlb2YsIGRvdGggaGUgbm90IGNhc3QgYWJyb2FkIHRoZSBmaXRjaGVzLCBhbmQgc2NhdHRlciB0aGUgY3VtbWluLCBhbmQgY2FzdCBpbiB0aGUgcHJpbmNpcGFsIHdoZWF0IGFuZCB0aGUgYXBwb2ludGVkIGJhcmxleSBhbmQgdGhlIHJpZSBpbiB0aGVpciBwbGFjZT8KRm9yIGhpcyBHb2QgZG90aCBpbnN0cnVjdCBoaW0gdG8gZGlzY3JldGlvbiwgYW5kIGRvdGggdGVhY2ggaGltLgpGb3IgdGhlIGZpdGNoZXMgYXJlIG5vdCB0aHJlc2hlZCB3aXRoIGEgdGhyZXNoaW5nIGluc3RydW1lbnQsIG5laXRoZXIgaXMgYSBjYXJ0IHdoZWVsIHR1cm5lZCBhYm91dCB1cG9uIHRoZSBjdW1taW47IGJ1dCB0aGUgZml0Y2hlcyBhcmUgYmVhdGVuIG91dCB3aXRoIGEgc3RhZmYsIGFuZCB0aGUgY3VtbWluIHdpdGggYSByb2QuCkJyZWFkIGNvcm4gaXMgYnJ1aXNlZDsgYmVjYXVzZSBoZSB3aWxsIG5vdCBldmVyIGJlIHRocmVzaGluZyBpdCwgbm9yIGJyZWFrIGl0IHdpdGggdGhlIHdoZWVsIG9mIGhpcyBjYXJ0LCBub3IgYnJ1aXNlIGl0IHdpdGggaGlzIGhvcnNlbWVuLgpUaGlzIGFsc28gY29tZXRoIGZvcnRoIGZyb20gdGhlIExPUkQgb2YgaG9zdHMsIHdoaWNoIGlzIHdvbmRlcmZ1bCBpbiBjb3Vuc2VsLCBhbmQgZXhjZWxsZW50IGluIHdvcmtpbmcuCldvZSB0byBBcmllbCwgdG8gQXJpZWwsIHRoZSBjaXR5IHdoZXJlIERhdmlkIGR3ZWx0ISBhZGQgeWUgeWVhciB0byB5ZWFyOyBsZXQgdGhlbSBraWxsIHNhY3JpZmljZXMuCllldCBJIHdpbGwgZGlzdHJlc3MgQXJpZWwsIGFuZCB0aGVyZSBzaGFsbCBiZSBoZWF2aW5lc3MgYW5kIHNvcnJvdzogYW5kIGl0IHNoYWxsIGJlIHVudG8gbWUgYXMgQXJpZWwuCkFuZCBJIHdpbGwgY2FtcCBhZ2FpbnN0IHRoZWUgcm91bmQgYWJvdXQsIGFuZCB3aWxsIGxheSBzaWVnZSBhZ2FpbnN0IHRoZWUgd2l0aCBhIG1vdW50LCBhbmQgSSB3aWxsIHJhaXNlIGZvcnRzIGFnYWluc3QgdGhlZS4KQW5kIHRob3Ugc2hhbHQgYmUgYnJvdWdodCBkb3duLCBhbmQgc2hhbHQgc3BlYWsgb3V0IG9mIHRoZSBncm91bmQsIGFuZCB0aHkgc3BlZWNoIHNoYWxsIGJlIGxvdyBvdXQgb2YgdGhlIGR1c3QsIGFuZCB0aHkgdm9pY2Ugc2hhbGwgYmUsIGFzIG9mIG9uZSB0aGF0IGhhdGggYSBmYW1pbGlhciBzcGlyaXQsIG91dCBvZiB0aGUgZ3JvdW5kLCBhbmQgdGh5IHNwZWVjaCBzaGFsbCB3aGlzcGVyIG91dCBvZiB0aGUgZHVzdC4KTW9yZW92ZXIgdGhlIG11bHRpdHVkZSBvZiB0aHkgc3RyYW5nZXJzIHNoYWxsIGJlIGxpa2Ugc21hbGwgZHVzdCwgYW5kIHRoZSBtdWx0aXR1ZGUgb2YgdGhlIHRlcnJpYmxlIG9uZXMgc2hhbGwgYmUgYXMgY2hhZmYgdGhhdCBwYXNzZXRoIGF3YXk6IHllYSwgaXQgc2hhbGwgYmUgYXQgYW4gaW5zdGFudCBzdWRkZW5seS4KVGhvdSBzaGFsdCBiZSB2aXNpdGVkIG9mIHRoZSBMT1JEIG9mIGhvc3RzIHdpdGggdGh1bmRlciwgYW5kIHdpdGggZWFydGhxdWFrZSwgYW5kIGdyZWF0IG5vaXNlLCB3aXRoIHN0b3JtIGFuZCB0ZW1wZXN0LCBhbmQgdGhlIGZsYW1lIG9mIGRldm91cmluZyBmaXJlLgpBbmQgdGhlIG11bHRpdHVkZSBvZiBhbGwgdGhlIG5hdGlvbnMgdGhhdCBmaWdodCBhZ2FpbnN0IEFyaWVsLCBldmVuIGFsbCB0aGF0IGZpZ2h0IGFnYWluc3QgaGVyIGFuZCBoZXIgbXVuaXRpb24sIGFuZCB0aGF0IGRpc3RyZXNzIGhlciwgc2hhbGwgYmUgYXMgYSBkcmVhbSBvZiBhIG5pZ2h0IHZpc2lvbi4KSXQgc2hhbGwgZXZlbiBiZSBhcyB3aGVuIGFuIGh1bmdyeSBtYW4gZHJlYW1ldGgsIGFuZCwgYmVob2xkLCBoZSBlYXRldGg7IGJ1dCBoZSBhd2FrZXRoLCBhbmQgaGlzIHNvdWwgaXMgZW1wdHk6IG9yIGFzIHdoZW4gYSB0aGlyc3R5IG1hbiBkcmVhbWV0aCwgYW5kLCBiZWhvbGQsIGhlIGRyaW5rZXRoOyBidXQgaGUgYXdha2V0aCwgYW5kLCBiZWhvbGQsIGhlIGlzIGZhaW50LCBhbmQgaGlzIHNvdWwgaGF0aCBhcHBldGl0ZTogc28gc2hhbGwgdGhlIG11bHRpdHVkZSBvZiBhbGwgdGhlIG5hdGlvbnMgYmUsIHRoYXQgZmlnaHQgYWdhaW5zdCBtb3VudCBaaW9uLgpTdGF5IHlvdXJzZWx2ZXMsIGFuZCB3b25kZXI7IGNyeSB5ZSBvdXQsIGFuZCBjcnk6IHRoZXkgYXJlIGRydW5rZW4sIGJ1dCBub3Qgd2l0aCB3aW5lOyB0aGV5IHN0YWdnZXIsIGJ1dCBub3Qgd2l0aCBzdHJvbmcgZHJpbmsuCkZvciB0aGUgTE9SRCBoYXRoIHBvdXJlZCBvdXQgdXBvbiB5b3UgdGhlIHNwaXJpdCBvZiBkZWVwIHNsZWVwLCBhbmQgaGF0aCBjbG9zZWQgeW91ciBleWVzOiB0aGUgcHJvcGhldHMgYW5kIHlvdXIgcnVsZXJzLCB0aGUgc2VlcnMgaGF0aCBoZSBjb3ZlcmVkLgpBbmQgdGhlIHZpc2lvbiBvZiBhbGwgaXMgYmVjb21lIHVudG8geW91IGFzIHRoZSB3b3JkcyBvZiBhIGJvb2sgdGhhdCBpcyBzZWFsZWQsIHdoaWNoIG1lbiBkZWxpdmVyIHRvIG9uZSB0aGF0IGlzIGxlYXJuZWQsIHNheWluZywgUmVhZCB0aGlzLCBJIHByYXkgdGhlZTogYW5kIGhlIHNhaXRoLCBJIGNhbm5vdDsgZm9yIGl0IGlzIHNlYWxlZDoKQW5kIHRoZSBib29rIGlzIGRlbGl2ZXJlZCB0byBoaW0gdGhhdCBpcyBub3QgbGVhcm5lZCwgc2F5aW5nLCBSZWFkIHRoaXMsIEkgcHJheSB0aGVlOiBhbmQgaGUgc2FpdGgsIEkgYW0gbm90IGxlYXJuZWQuCldoZXJlZm9yZSB0aGUgTG9yZCBzYWlkLCBGb3Jhc211Y2ggYXMgdGhpcyBwZW9wbGUgZHJhdyBuZWFyIG1lIHdpdGggdGhlaXIgbW91dGgsIGFuZCB3aXRoIHRoZWlyIGxpcHMgZG8gaG9ub3VyIG1lLCBidXQgaGF2ZSByZW1vdmVkIHRoZWlyIGhlYXJ0IGZhciBmcm9tIG1lLCBhbmQgdGhlaXIgZmVhciB0b3dhcmQgbWUgaXMgdGF1Z2h0IGJ5IHRoZSBwcmVjZXB0IG9mIG1lbjoKVGhlcmVmb3JlLCBiZWhvbGQsIEkgd2lsbCBwcm9jZWVkIHRvIGRvIGEgbWFydmVsbG91cyB3b3JrIGFtb25nIHRoaXMgcGVvcGxlLCBldmVuIGEgbWFydmVsbG91cyB3b3JrIGFuZCBhIHdvbmRlcjogZm9yIHRoZSB3aXNkb20gb2YgdGhlaXIgd2lzZSBtZW4gc2hhbGwgcGVyaXNoLCBhbmQgdGhlIHVuZGVyc3RhbmRpbmcgb2YgdGhlaXIgcHJ1ZGVudCBtZW4gc2hhbGwgYmUgaGlkLgpXb2UgdW50byB0aGVtIHRoYXQgc2VlayBkZWVwIHRvIGhpZGUgdGhlaXIgY291bnNlbCBmcm9tIHRoZSBMT1JELCBhbmQgdGhlaXIgd29ya3MgYXJlIGluIHRoZSBkYXJrLCBhbmQgdGhleSBzYXksIFdobyBzZWV0aCB1cz8gYW5kIHdobyBrbm93ZXRoIHVzPwpTdXJlbHkgeW91ciB0dXJuaW5nIG9mIHRoaW5ncyB1cHNpZGUgZG93biBzaGFsbCBiZSBlc3RlZW1lZCBhcyB0aGUgcG90dGVyJ3MgY2xheTogZm9yIHNoYWxsIHRoZSB3b3JrIHNheSBvZiBoaW0gdGhhdCBtYWRlIGl0LCBIZSBtYWRlIG1lIG5vdD8gb3Igc2hhbGwgdGhlIHRoaW5nIGZyYW1lZCBzYXkgb2YgaGltIHRoYXQgZnJhbWVkIGl0LCBIZSBoYWQgbm8gdW5kZXJzdGFuZGluZz8KSXMgaXQgbm90IHlldCBhIHZlcnkgbGl0dGxlIHdoaWxlLCBhbmQgTGViYW5vbiBzaGFsbCBiZSB0dXJuZWQgaW50byBhIGZydWl0ZnVsIGZpZWxkLCBhbmQgdGhlIGZydWl0ZnVsIGZpZWxkIHNoYWxsIGJlIGVzdGVlbWVkIGFzIGEgZm9yZXN0PwpBbmQgaW4gdGhhdCBkYXkgc2hhbGwgdGhlIGRlYWYgaGVhciB0aGUgd29yZHMgb2YgdGhlIGJvb2ssIGFuZCB0aGUgZXllcyBvZiB0aGUgYmxpbmQgc2hhbGwgc2VlIG91dCBvZiBvYnNjdXJpdHksIGFuZCBvdXQgb2YgZGFya25lc3MuClRoZSBtZWVrIGFsc28gc2hhbGwgaW5jcmVhc2UgdGhlaXIgam95IGluIHRoZSBMT1JELCBhbmQgdGhlIHBvb3IgYW1vbmcgbWVuIHNoYWxsIHJlam9pY2UgaW4gdGhlIEhvbHkgT25lIG9mIElzcmFlbC4KRm9yIHRoZSB0ZXJyaWJsZSBvbmUgaXMgYnJvdWdodCB0byBub3VnaHQsIGFuZCB0aGUgc2Nvcm5lciBpcyBjb25zdW1lZCwgYW5kIGFsbCB0aGF0IHdhdGNoIGZvciBpbmlxdWl0eSBhcmUgY3V0IG9mZjoKVGhhdCBtYWtlIGEgbWFuIGFuIG9mZmVuZGVyIGZvciBhIHdvcmQsIGFuZCBsYXkgYSBzbmFyZSBmb3IgaGltIHRoYXQgcmVwcm92ZXRoIGluIHRoZSBnYXRlLCBhbmQgdHVybiBhc2lkZSB0aGUganVzdCBmb3IgYSB0aGluZyBvZiBub3VnaHQuClRoZXJlZm9yZSB0aHVzIHNhaXRoIHRoZSBMT1JELCB3aG8gcmVkZWVtZWQgQWJyYWhhbSwgY29uY2VybmluZyB0aGUgaG91c2Ugb2YgSmFjb2IsIEphY29iIHNoYWxsIG5vdCBub3cgYmUgYXNoYW1lZCwgbmVpdGhlciBzaGFsbCBoaXMgZmFjZSBub3cgd2F4IHBhbGUuCkJ1dCB3aGVuIGhlIHNlZXRoIGhpcyBjaGlsZHJlbiwgdGhlIHdvcmsgb2YgbWluZSBoYW5kcywgaW4gdGhlIG1pZHN0IG9mIGhpbSwgdGhleSBzaGFsbCBzYW5jdGlmeSBteSBuYW1lLCBhbmQgc2FuY3RpZnkgdGhlIEhvbHkgT25lIG9mIEphY29iLCBhbmQgc2hhbGwgZmVhciB0aGUgR29kIG9mIElzcmFlbC4KVGhleSBhbHNvIHRoYXQgZXJyZWQgaW4gc3Bpcml0IHNoYWxsIGNvbWUgdG8gdW5kZXJzdGFuZGluZywgYW5kIHRoZXkgdGhhdCBtdXJtdXJlZCBzaGFsbCBsZWFybiBkb2N0cmluZS4KV29lIHRvIHRoZSByZWJlbGxpb3VzIGNoaWxkcmVuLCBzYWl0aCB0aGUgTE9SRCwgdGhhdCB0YWtlIGNvdW5zZWwsIGJ1dCBub3Qgb2YgbWU7IGFuZCB0aGF0IGNvdmVyIHdpdGggYSBjb3ZlcmluZywgYnV0IG5vdCBvZiBteSBzcGlyaXQsIHRoYXQgdGhleSBtYXkgYWRkIHNpbiB0byBzaW46ClRoYXQgd2FsayB0byBnbyBkb3duIGludG8gRWd5cHQsIGFuZCBoYXZlIG5vdCBhc2tlZCBhdCBteSBtb3V0aDsgdG8gc3RyZW5ndGhlbiB0aGVtc2VsdmVzIGluIHRoZSBzdHJlbmd0aCBvZiBQaGFyYW9oLCBhbmQgdG8gdHJ1c3QgaW4gdGhlIHNoYWRvdyBvZiBFZ3lwdCEKVGhlcmVmb3JlIHNoYWxsIHRoZSBzdHJlbmd0aCBvZiBQaGFyYW9oIGJlIHlvdXIgc2hhbWUsIGFuZCB0aGUgdHJ1c3QgaW4gdGhlIHNoYWRvdyBvZiBFZ3lwdCB5b3VyIGNvbmZ1c2lvbi4KRm9yIGhpcyBwcmluY2VzIHdlcmUgYXQgWm9hbiwgYW5kIGhpcyBhbWJhc3NhZG9ycyBjYW1lIHRvIEhhbmVzLgpUaGV5IHdlcmUgYWxsIGFzaGFtZWQgb2YgYSBwZW9wbGUgdGhhdCBjb3VsZCBub3QgcHJvZml0IHRoZW0sIG5vciBiZSBhbiBoZWxwIG5vciBwcm9maXQsIGJ1dCBhIHNoYW1lLCBhbmQgYWxzbyBhIHJlcHJvYWNoLgpUaGUgYnVyZGVuIG9mIHRoZSBiZWFzdHMgb2YgdGhlIHNvdXRoOiBpbnRvIHRoZSBsYW5kIG9mIHRyb3VibGUgYW5kIGFuZ3Vpc2gsIGZyb20gd2hlbmNlIGNvbWUgdGhlIHlvdW5nIGFuZCBvbGQgbGlvbiwgdGhlIHZpcGVyIGFuZCBmaWVyeSBmbHlpbmcgc2VycGVudCwgdGhleSB3aWxsIGNhcnJ5IHRoZWlyIHJpY2hlcyB1cG9uIHRoZSBzaG91bGRlcnMgb2YgeW91bmcgYXNzZXMsIGFuZCB0aGVpciB0cmVhc3VyZXMgdXBvbiB0aGUgYnVuY2hlcyBvZiBjYW1lbHMsIHRvIGEgcGVvcGxlIHRoYXQgc2hhbGwgbm90IHByb2ZpdCB0aGVtLgpGb3IgdGhlIEVneXB0aWFucyBzaGFsbCBoZWxwIGluIHZhaW4sIGFuZCB0byBubyBwdXJwb3NlOiB0aGVyZWZvcmUgaGF2ZSBJIGNyaWVkIGNvbmNlcm5pbmcgdGhpcywgVGhlaXIgc3RyZW5ndGggaXMgdG8gc2l0IHN0aWxsLgpOb3cgZ28sIHdyaXRlIGl0IGJlZm9yZSB0aGVtIGluIGEgdGFibGUsIGFuZCBub3RlIGl0IGluIGEgYm9vaywgdGhhdCBpdCBtYXkgYmUgZm9yIHRoZSB0aW1lIHRvIGNvbWUgZm9yIGV2ZXIgYW5kIGV2ZXI6ClRoYXQgdGhpcyBpcyBhIHJlYmVsbGlvdXMgcGVvcGxlLCBseWluZyBjaGlsZHJlbiwgY2hpbGRyZW4gdGhhdCB3aWxsIG5vdCBoZWFyIHRoZSBsYXcgb2YgdGhlIExPUkQ6CldoaWNoIHNheSB0byB0aGUgc2VlcnMsIFNlZSBub3Q7IGFuZCB0byB0aGUgcHJvcGhldHMsIFByb3BoZXN5IG5vdCB1bnRvIHVzIHJpZ2h0IHRoaW5ncywgc3BlYWsgdW50byB1cyBzbW9vdGggdGhpbmdzLCBwcm9waGVzeSBkZWNlaXRzOgpHZXQgeW91IG91dCBvZiB0aGUgd2F5LCB0dXJuIGFzaWRlIG91dCBvZiB0aGUgcGF0aCwgY2F1c2UgdGhlIEhvbHkgT25lIG9mIElzcmFlbCB0byBjZWFzZSBmcm9tIGJlZm9yZSB1cy4KV2hlcmVmb3JlIHRodXMgc2FpdGggdGhlIEhvbHkgT25lIG9mIElzcmFlbCwgQmVjYXVzZSB5ZSBkZXNwaXNlIHRoaXMgd29yZCwgYW5kIHRydXN0IGluIG9wcHJlc3Npb24gYW5kIHBlcnZlcnNlbmVzcywgYW5kIHN0YXkgdGhlcmVvbjoKVGhlcmVmb3JlIHRoaXMgaW5pcXVpdHkgc2hhbGwgYmUgdG8geW91IGFzIGEgYnJlYWNoIHJlYWR5IHRvIGZhbGwsIHN3ZWxsaW5nIG91dCBpbiBhIGhpZ2ggd2FsbCwgd2hvc2UgYnJlYWtpbmcgY29tZXRoIHN1ZGRlbmx5IGF0IGFuIGluc3RhbnQuCkFuZCBoZSBzaGFsbCBicmVhayBpdCBhcyB0aGUgYnJlYWtpbmcgb2YgdGhlIHBvdHRlcnMnIHZlc3NlbCB0aGF0IGlzIGJyb2tlbiBpbiBwaWVjZXM7IGhlIHNoYWxsIG5vdCBzcGFyZTogc28gdGhhdCB0aGVyZSBzaGFsbCBub3QgYmUgZm91bmQgaW4gdGhlIGJ1cnN0aW5nIG9mIGl0IGEgc2hlcmQgdG8gdGFrZSBmaXJlIGZyb20gdGhlIGhlYXJ0aCwgb3IgdG8gdGFrZSB3YXRlciB3aXRoYWwgb3V0IG9mIHRoZSBwaXQuCkZvciB0aHVzIHNhaXRoIHRoZSBMb3JkIEdPRCwgdGhlIEhvbHkgT25lIG9mIElzcmFlbDsgSW4gcmV0dXJuaW5nIGFuZCByZXN0IHNoYWxsIHllIGJlIHNhdmVkOyBpbiBxdWlldG5lc3MgYW5kIGluIGNvbmZpZGVuY2Ugc2hhbGwgYmUgeW91ciBzdHJlbmd0aDogYW5kIHllIHdvdWxkIG5vdC4KQnV0IHllIHNhaWQsIE5vOyBmb3Igd2Ugd2lsbCBmbGVlIHVwb24gaG9yc2VzOyB0aGVyZWZvcmUgc2hhbGwgeWUgZmxlZTogYW5kLCBXZSB3aWxsIHJpZGUgdXBvbiB0aGUgc3dpZnQ7IHRoZXJlZm9yZSBzaGFsbCB0aGV5IHRoYXQgcHVyc3VlIHlvdSBiZSBzd2lmdC4KT25lIHRob3VzYW5kIHNoYWxsIGZsZWUgYXQgdGhlIHJlYnVrZSBvZiBvbmU7IGF0IHRoZSByZWJ1a2Ugb2YgZml2ZSBzaGFsbCB5ZSBmbGVlOiB0aWxsIHllIGJlIGxlZnQgYXMgYSBiZWFjb24gdXBvbiB0aGUgdG9wIG9mIGEgbW91bnRhaW4sIGFuZCBhcyBhbiBlbnNpZ24gb24gYW4gaGlsbC4KQW5kIHRoZXJlZm9yZSB3aWxsIHRoZSBMT1JEIHdhaXQsIHRoYXQgaGUgbWF5IGJlIGdyYWNpb3VzIHVudG8geW91LCBhbmQgdGhlcmVmb3JlIHdpbGwgaGUgYmUgZXhhbHRlZCwgdGhhdCBoZSBtYXkgaGF2ZSBtZXJjeSB1cG9uIHlvdTogZm9yIHRoZSBMT1JEIGlzIGEgR29kIG9mIGp1ZGdtZW50OiBibGVzc2VkIGFyZSBhbGwgdGhleSB0aGF0IHdhaXQgZm9yIGhpbS4KRm9yIHRoZSBwZW9wbGUgc2hhbGwgZHdlbGwgaW4gWmlvbiBhdCBKZXJ1c2FsZW06IHRob3Ugc2hhbHQgd2VlcCBubyBtb3JlOiBoZSB3aWxsIGJlIHZlcnkgZ3JhY2lvdXMgdW50byB0aGVlIGF0IHRoZSB2b2ljZSBvZiB0aHkgY3J5OyB3aGVuIGhlIHNoYWxsIGhlYXIgaXQsIGhlIHdpbGwgYW5zd2VyIHRoZWUuCkFuZCB0aG91Z2ggdGhlIExvcmQgZ2l2ZSB5b3UgdGhlIGJyZWFkIG9mIGFkdmVyc2l0eSwgYW5kIHRoZSB3YXRlciBvZiBhZmZsaWN0aW9uLCB5ZXQgc2hhbGwgbm90IHRoeSB0ZWFjaGVycyBiZSByZW1vdmVkIGludG8gYSBjb3JuZXIgYW55IG1vcmUsIGJ1dCB0aGluZSBleWVzIHNoYWxsIHNlZSB0aHkgdGVhY2hlcnM6CkFuZCB0aGluZSBlYXJzIHNoYWxsIGhlYXIgYSB3b3JkIGJlaGluZCB0aGVlLCBzYXlpbmcsIFRoaXMgaXMgdGhlIHdheSwgd2FsayB5ZSBpbiBpdCwgd2hlbiB5ZSB0dXJuIHRvIHRoZSByaWdodCBoYW5kLCBhbmQgd2hlbiB5ZSB0dXJuIHRvIHRoZSBsZWZ0LgpZZSBzaGFsbCBkZWZpbGUgYWxzbyB0aGUgY292ZXJpbmcgb2YgdGh5IGdyYXZlbiBpbWFnZXMgb2Ygc2lsdmVyLCBhbmQgdGhlIG9ybmFtZW50IG9mIHRoeSBtb2x0ZW4gaW1hZ2VzIG9mIGdvbGQ6IHRob3Ugc2hhbHQgY2FzdCB0aGVtIGF3YXkgYXMgYSBtZW5zdHJ1b3VzIGNsb3RoOyB0aG91IHNoYWx0IHNheSB1bnRvIGl0LCBHZXQgdGhlZSBoZW5jZS4KVGhlbiBzaGFsbCBoZSBnaXZlIHRoZSByYWluIG9mIHRoeSBzZWVkLCB0aGF0IHRob3Ugc2hhbHQgc293IHRoZSBncm91bmQgd2l0aGFsOyBhbmQgYnJlYWQgb2YgdGhlIGluY3JlYXNlIG9mIHRoZSBlYXJ0aCwgYW5kIGl0IHNoYWxsIGJlIGZhdCBhbmQgcGxlbnRlb3VzOiBpbiB0aGF0IGRheSBzaGFsbCB0aHkgY2F0dGxlIGZlZWQgaW4gbGFyZ2UgcGFzdHVyZXMuClRoZSBveGVuIGxpa2V3aXNlIGFuZCB0aGUgeW91bmcgYXNzZXMgdGhhdCBlYXIgdGhlIGdyb3VuZCBzaGFsbCBlYXQgY2xlYW4gcHJvdmVuZGVyLCB3aGljaCBoYXRoIGJlZW4gd2lubm93ZWQgd2l0aCB0aGUgc2hvdmVsIGFuZCB3aXRoIHRoZSBmYW4uCkFuZCB0aGVyZSBzaGFsbCBiZSB1cG9uIGV2ZXJ5IGhpZ2ggbW91bnRhaW4sIGFuZCB1cG9uIGV2ZXJ5IGhpZ2ggaGlsbCwgcml2ZXJzIGFuZCBzdHJlYW1zIG9mIHdhdGVycyBpbiB0aGUgZGF5IG9mIHRoZSBncmVhdCBzbGF1Z2h0ZXIsIHdoZW4gdGhlIHRvd2VycyBmYWxsLgpNb3Jlb3ZlciB0aGUgbGlnaHQgb2YgdGhlIG1vb24gc2hhbGwgYmUgYXMgdGhlIGxpZ2h0IG9mIHRoZSBzdW4sIGFuZCB0aGUgbGlnaHQgb2YgdGhlIHN1biBzaGFsbCBiZSBzZXZlbmZvbGQsIGFzIHRoZSBsaWdodCBvZiBzZXZlbiBkYXlzLCBpbiB0aGUgZGF5IHRoYXQgdGhlIExPUkQgYmluZGV0aCB1cCB0aGUgYnJlYWNoIG9mIGhpcyBwZW9wbGUsIGFuZCBoZWFsZXRoIHRoZSBzdHJva2Ugb2YgdGhlaXIgd291bmQuCkJlaG9sZCwgdGhlIG5hbWUgb2YgdGhlIExPUkQgY29tZXRoIGZyb20gZmFyLCBidXJuaW5nIHdpdGggaGlzIGFuZ2VyLCBhbmQgdGhlIGJ1cmRlbiB0aGVyZW9mIGlzIGhlYXZ5OiBoaXMgbGlwcyBhcmUgZnVsbCBvZiBpbmRpZ25hdGlvbiwgYW5kIGhpcyB0b25ndWUgYXMgYSBkZXZvdXJpbmcgZmlyZToKQW5kIGhpcyBicmVhdGgsIGFzIGFuIG92ZXJmbG93aW5nIHN0cmVhbSwgc2hhbGwgcmVhY2ggdG8gdGhlIG1pZHN0IG9mIHRoZSBuZWNrLCB0byBzaWZ0IHRoZSBuYXRpb25zIHdpdGggdGhlIHNpZXZlIG9mIHZhbml0eTogYW5kIHRoZXJlIHNoYWxsIGJlIGEgYnJpZGxlIGluIHRoZSBqYXdzIG9mIHRoZSBwZW9wbGUsIGNhdXNpbmcgdGhlbSB0byBlcnIuClllIHNoYWxsIGhhdmUgYSBzb25nLCBhcyBpbiB0aGUgbmlnaHQgd2hlbiBhIGhvbHkgc29sZW1uaXR5IGlzIGtlcHQ7IGFuZCBnbGFkbmVzcyBvZiBoZWFydCwgYXMgd2hlbiBvbmUgZ29ldGggd2l0aCBhIHBpcGUgdG8gY29tZSBpbnRvIHRoZSBtb3VudGFpbiBvZiB0aGUgTE9SRCwgdG8gdGhlIG1pZ2h0eSBPbmUgb2YgSXNyYWVsLgpBbmQgdGhlIExPUkQgc2hhbGwgY2F1c2UgaGlzIGdsb3Jpb3VzIHZvaWNlIHRvIGJlIGhlYXJkLCBhbmQgc2hhbGwgc2hldyB0aGUgbGlnaHRpbmcgZG93biBvZiBoaXMgYXJtLCB3aXRoIHRoZSBpbmRpZ25hdGlvbiBvZiBoaXMgYW5nZXIsIGFuZCB3aXRoIHRoZSBmbGFtZSBvZiBhIGRldm91cmluZyBmaXJlLCB3aXRoIHNjYXR0ZXJpbmcsIGFuZCB0ZW1wZXN0LCBhbmQgaGFpbHN0b25lcy4KRm9yIHRocm91Z2ggdGhlIHZvaWNlIG9mIHRoZSBMT1JEIHNoYWxsIHRoZSBBc3N5cmlhbiBiZSBiZWF0ZW4gZG93biwgd2hpY2ggc21vdGUgd2l0aCBhIHJvZC4KQW5kIGluIGV2ZXJ5IHBsYWNlIHdoZXJlIHRoZSBncm91bmRlZCBzdGFmZiBzaGFsbCBwYXNzLCB3aGljaCB0aGUgTE9SRCBzaGFsbCBsYXkgdXBvbiBoaW0sIGl0IHNoYWxsIGJlIHdpdGggdGFicmV0cyBhbmQgaGFycHM6IGFuZCBpbiBiYXR0bGVzIG9mIHNoYWtpbmcgd2lsbCBoZSBmaWdodCB3aXRoIGl0LgpGb3IgVG9waGV0IGlzIG9yZGFpbmVkIG9mIG9sZDsgeWVhLCBmb3IgdGhlIGtpbmcgaXQgaXMgcHJlcGFyZWQ7IGhlIGhhdGggbWFkZSBpdCBkZWVwIGFuZCBsYXJnZTogdGhlIHBpbGUgdGhlcmVvZiBpcyBmaXJlIGFuZCBtdWNoIHdvb2Q7IHRoZSBicmVhdGggb2YgdGhlIExPUkQsIGxpa2UgYSBzdHJlYW0gb2YgYnJpbXN0b25lLCBkb3RoIGtpbmRsZSBpdC4KV29lIHRvIHRoZW0gdGhhdCBnbyBkb3duIHRvIEVneXB0IGZvciBoZWxwOyBhbmQgc3RheSBvbiBob3JzZXMsIGFuZCB0cnVzdCBpbiBjaGFyaW90cywgYmVjYXVzZSB0aGV5IGFyZSBtYW55OyBhbmQgaW4gaG9yc2VtZW4sIGJlY2F1c2UgdGhleSBhcmUgdmVyeSBzdHJvbmc7IGJ1dCB0aGV5IGxvb2sgbm90IHVudG8gdGhlIEhvbHkgT25lIG9mIElzcmFlbCwgbmVpdGhlciBzZWVrIHRoZSBMT1JEIQpZZXQgaGUgYWxzbyBpcyB3aXNlLCBhbmQgd2lsbCBicmluZyBldmlsLCBhbmQgd2lsbCBub3QgY2FsbCBiYWNrIGhpcyB3b3JkczogYnV0IHdpbGwgYXJpc2UgYWdhaW5zdCB0aGUgaG91c2Ugb2YgdGhlIGV2aWxkb2VycywgYW5kIGFnYWluc3QgdGhlIGhlbHAgb2YgdGhlbSB0aGF0IHdvcmsgaW5pcXVpdHkuCk5vdyB0aGUgRWd5cHRpYW5zIGFyZSBtZW4sIGFuZCBub3QgR29kOyBhbmQgdGhlaXIgaG9yc2VzIGZsZXNoLCBhbmQgbm90IHNwaXJpdC4gV2hlbiB0aGUgTE9SRCBzaGFsbCBzdHJldGNoIG91dCBoaXMgaGFuZCwgYm90aCBoZSB0aGF0IGhlbHBldGggc2hhbGwgZmFsbCwgYW5kIGhlIHRoYXQgaXMgaG9scGVuIHNoYWxsIGZhbGwgZG93biwgYW5kIHRoZXkgYWxsIHNoYWxsIGZhaWwgdG9nZXRoZXIuCkZvciB0aHVzIGhhdGggdGhlIExPUkQgc3Bva2VuIHVudG8gbWUsIExpa2UgYXMgdGhlIGxpb24gYW5kIHRoZSB5b3VuZyBsaW9uIHJvYXJpbmcgb24gaGlzIHByZXksIHdoZW4gYSBtdWx0aXR1ZGUgb2Ygc2hlcGhlcmRzIGlzIGNhbGxlZCBmb3J0aCBhZ2FpbnN0IGhpbSwgaGUgd2lsbCBub3QgYmUgYWZyYWlkIG9mIHRoZWlyIHZvaWNlLCBub3IgYWJhc2UgaGltc2VsZiBmb3IgdGhlIG5vaXNlIG9mIHRoZW06IHNvIHNoYWxsIHRoZSBMT1JEIG9mIGhvc3RzIGNvbWUgZG93biB0byBmaWdodCBmb3IgbW91bnQgWmlvbiwgYW5kIGZvciB0aGUgaGlsbCB0aGVyZW9mLgpBcyBiaXJkcyBmbHlpbmcsIHNvIHdpbGwgdGhlIExPUkQgb2YgaG9zdHMgZGVmZW5kIEplcnVzYWxlbTsgZGVmZW5kaW5nIGFsc28gaGUgd2lsbCBkZWxpdmVyIGl0OyBhbmQgcGFzc2luZyBvdmVyIGhlIHdpbGwgcHJlc2VydmUgaXQuClR1cm4geWUgdW50byBoaW0gZnJvbSB3aG9tIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgaGF2ZSBkZWVwbHkgcmV2b2x0ZWQuCkZvciBpbiB0aGF0IGRheSBldmVyeSBtYW4gc2hhbGwgY2FzdCBhd2F5IGhpcyBpZG9scyBvZiBzaWx2ZXIsIGFuZCBoaXMgaWRvbHMgb2YgZ29sZCwgd2hpY2ggeW91ciBvd24gaGFuZHMgaGF2ZSBtYWRlIHVudG8geW91IGZvciBhIHNpbi4KVGhlbiBzaGFsbCB0aGUgQXNzeXJpYW4gZmFsbCB3aXRoIHRoZSBzd29yZCwgbm90IG9mIGEgbWlnaHR5IG1hbjsgYW5kIHRoZSBzd29yZCwgbm90IG9mIGEgbWVhbiBtYW4sIHNoYWxsIGRldm91ciBoaW06IGJ1dCBoZSBzaGFsbCBmbGVlIGZyb20gdGhlIHN3b3JkLCBhbmQgaGlzIHlvdW5nIG1lbiBzaGFsbCBiZSBkaXNjb21maXRlZC4KQW5kIGhlIHNoYWxsIHBhc3Mgb3ZlciB0byBoaXMgc3Ryb25nIGhvbGQgZm9yIGZlYXIsIGFuZCBoaXMgcHJpbmNlcyBzaGFsbCBiZSBhZnJhaWQgb2YgdGhlIGVuc2lnbiwgc2FpdGggdGhlIExPUkQsIHdob3NlIGZpcmUgaXMgaW4gWmlvbiwgYW5kIGhpcyBmdXJuYWNlIGluIEplcnVzYWxlbS4KQmVob2xkLCBhIGtpbmcgc2hhbGwgcmVpZ24gaW4gcmlnaHRlb3VzbmVzcywgYW5kIHByaW5jZXMgc2hhbGwgcnVsZSBpbiBqdWRnbWVudC4KQW5kIGEgbWFuIHNoYWxsIGJlIGFzIGFuIGhpZGluZyBwbGFjZSBmcm9tIHRoZSB3aW5kLCBhbmQgYSBjb3ZlcnQgZnJvbSB0aGUgdGVtcGVzdDsgYXMgcml2ZXJzIG9mIHdhdGVyIGluIGEgZHJ5IHBsYWNlLCBhcyB0aGUgc2hhZG93IG9mIGEgZ3JlYXQgcm9jayBpbiBhIHdlYXJ5IGxhbmQuCkFuZCB0aGUgZXllcyBvZiB0aGVtIHRoYXQgc2VlIHNoYWxsIG5vdCBiZSBkaW0sIGFuZCB0aGUgZWFycyBvZiB0aGVtIHRoYXQgaGVhciBzaGFsbCBoZWFya2VuLgpUaGUgaGVhcnQgYWxzbyBvZiB0aGUgcmFzaCBzaGFsbCB1bmRlcnN0YW5kIGtub3dsZWRnZSwgYW5kIHRoZSB0b25ndWUgb2YgdGhlIHN0YW1tZXJlcnMgc2hhbGwgYmUgcmVhZHkgdG8gc3BlYWsgcGxhaW5seS4KVGhlIHZpbGUgcGVyc29uIHNoYWxsIGJlIG5vIG1vcmUgY2FsbGVkIGxpYmVyYWwsIG5vciB0aGUgY2h1cmwgc2FpZCB0byBiZSBib3VudGlmdWwuCkZvciB0aGUgdmlsZSBwZXJzb24gd2lsbCBzcGVhayB2aWxsYW55LCBhbmQgaGlzIGhlYXJ0IHdpbGwgd29yayBpbmlxdWl0eSwgdG8gcHJhY3Rpc2UgaHlwb2NyaXN5LCBhbmQgdG8gdXR0ZXIgZXJyb3IgYWdhaW5zdCB0aGUgTE9SRCwgdG8gbWFrZSBlbXB0eSB0aGUgc291bCBvZiB0aGUgaHVuZ3J5LCBhbmQgaGUgd2lsbCBjYXVzZSB0aGUgZHJpbmsgb2YgdGhlIHRoaXJzdHkgdG8gZmFpbC4KVGhlIGluc3RydW1lbnRzIGFsc28gb2YgdGhlIGNodXJsIGFyZSBldmlsOiBoZSBkZXZpc2V0aCB3aWNrZWQgZGV2aWNlcyB0byBkZXN0cm95IHRoZSBwb29yIHdpdGggbHlpbmcgd29yZHMsIGV2ZW4gd2hlbiB0aGUgbmVlZHkgc3BlYWtldGggcmlnaHQuCkJ1dCB0aGUgbGliZXJhbCBkZXZpc2V0aCBsaWJlcmFsIHRoaW5nczsgYW5kIGJ5IGxpYmVyYWwgdGhpbmdzIHNoYWxsIGhlIHN0YW5kLgpSaXNlIHVwLCB5ZSB3b21lbiB0aGF0IGFyZSBhdCBlYXNlOyBoZWFyIG15IHZvaWNlLCB5ZSBjYXJlbGVzcyBkYXVnaHRlcnM7IGdpdmUgZWFyIHVudG8gbXkgc3BlZWNoLgpNYW55IGRheXMgYW5kIHllYXJzIHNoYWxsIHllIGJlIHRyb3VibGVkLCB5ZSBjYXJlbGVzcyB3b21lbjogZm9yIHRoZSB2aW50YWdlIHNoYWxsIGZhaWwsIHRoZSBnYXRoZXJpbmcgc2hhbGwgbm90IGNvbWUuClRyZW1ibGUsIHllIHdvbWVuIHRoYXQgYXJlIGF0IGVhc2U7IGJlIHRyb3VibGVkLCB5ZSBjYXJlbGVzcyBvbmVzOiBzdHJpcCB5b3UsIGFuZCBtYWtlIHlvdSBiYXJlLCBhbmQgZ2lyZCBzYWNrY2xvdGggdXBvbiB5b3VyIGxvaW5zLgpUaGV5IHNoYWxsIGxhbWVudCBmb3IgdGhlIHRlYXRzLCBmb3IgdGhlIHBsZWFzYW50IGZpZWxkcywgZm9yIHRoZSBmcnVpdGZ1bCB2aW5lLgpVcG9uIHRoZSBsYW5kIG9mIG15IHBlb3BsZSBzaGFsbCBjb21lIHVwIHRob3JucyBhbmQgYnJpZXJzOyB5ZWEsIHVwb24gYWxsIHRoZSBob3VzZXMgb2Ygam95IGluIHRoZSBqb3lvdXMgY2l0eToKQmVjYXVzZSB0aGUgcGFsYWNlcyBzaGFsbCBiZSBmb3JzYWtlbjsgdGhlIG11bHRpdHVkZSBvZiB0aGUgY2l0eSBzaGFsbCBiZSBsZWZ0OyB0aGUgZm9ydHMgYW5kIHRvd2VycyBzaGFsbCBiZSBmb3IgZGVucyBmb3IgZXZlciwgYSBqb3kgb2Ygd2lsZCBhc3NlcywgYSBwYXN0dXJlIG9mIGZsb2NrczsKVW50aWwgdGhlIHNwaXJpdCBiZSBwb3VyZWQgdXBvbiB1cyBmcm9tIG9uIGhpZ2gsIGFuZCB0aGUgd2lsZGVybmVzcyBiZSBhIGZydWl0ZnVsIGZpZWxkLCBhbmQgdGhlIGZydWl0ZnVsIGZpZWxkIGJlIGNvdW50ZWQgZm9yIGEgZm9yZXN0LgpUaGVuIGp1ZGdtZW50IHNoYWxsIGR3ZWxsIGluIHRoZSB3aWxkZXJuZXNzLCBhbmQgcmlnaHRlb3VzbmVzcyByZW1haW4gaW4gdGhlIGZydWl0ZnVsIGZpZWxkLgpBbmQgdGhlIHdvcmsgb2YgcmlnaHRlb3VzbmVzcyBzaGFsbCBiZSBwZWFjZTsgYW5kIHRoZSBlZmZlY3Qgb2YgcmlnaHRlb3VzbmVzcyBxdWlldG5lc3MgYW5kIGFzc3VyYW5jZSBmb3IgZXZlci4KQW5kIG15IHBlb3BsZSBzaGFsbCBkd2VsbCBpbiBhIHBlYWNlYWJsZSBoYWJpdGF0aW9uLCBhbmQgaW4gc3VyZSBkd2VsbGluZ3MsIGFuZCBpbiBxdWlldCByZXN0aW5nIHBsYWNlczsKV2hlbiBpdCBzaGFsbCBoYWlsLCBjb21pbmcgZG93biBvbiB0aGUgZm9yZXN0OyBhbmQgdGhlIGNpdHkgc2hhbGwgYmUgbG93IGluIGEgbG93IHBsYWNlLgpCbGVzc2VkIGFyZSB5ZSB0aGF0IHNvdyBiZXNpZGUgYWxsIHdhdGVycywgdGhhdCBzZW5kIGZvcnRoIHRoaXRoZXIgdGhlIGZlZXQgb2YgdGhlIG94IGFuZCB0aGUgYXNzLgpXb2UgdG8gdGhlZSB0aGF0IHNwb2lsZXN0LCBhbmQgdGhvdSB3YXN0IG5vdCBzcG9pbGVkOyBhbmQgZGVhbGVzdCB0cmVhY2hlcm91c2x5LCBhbmQgdGhleSBkZWFsdCBub3QgdHJlYWNoZXJvdXNseSB3aXRoIHRoZWUhIHdoZW4gdGhvdSBzaGFsdCBjZWFzZSB0byBzcG9pbCwgdGhvdSBzaGFsdCBiZSBzcG9pbGVkOyBhbmQgd2hlbiB0aG91IHNoYWx0IG1ha2UgYW4gZW5kIHRvIGRlYWwgdHJlYWNoZXJvdXNseSwgdGhleSBzaGFsbCBkZWFsIHRyZWFjaGVyb3VzbHkgd2l0aCB0aGVlLgpPIExPUkQsIGJlIGdyYWNpb3VzIHVudG8gdXM7IHdlIGhhdmUgd2FpdGVkIGZvciB0aGVlOiBiZSB0aG91IHRoZWlyIGFybSBldmVyeSBtb3JuaW5nLCBvdXIgc2FsdmF0aW9uIGFsc28gaW4gdGhlIHRpbWUgb2YgdHJvdWJsZS4KQXQgdGhlIG5vaXNlIG9mIHRoZSB0dW11bHQgdGhlIHBlb3BsZSBmbGVkOyBhdCB0aGUgbGlmdGluZyB1cCBvZiB0aHlzZWxmIHRoZSBuYXRpb25zIHdlcmUgc2NhdHRlcmVkLgpBbmQgeW91ciBzcG9pbCBzaGFsbCBiZSBnYXRoZXJlZCBsaWtlIHRoZSBnYXRoZXJpbmcgb2YgdGhlIGNhdGVycGlsbGVyOiBhcyB0aGUgcnVubmluZyB0byBhbmQgZnJvIG9mIGxvY3VzdHMgc2hhbGwgaGUgcnVuIHVwb24gdGhlbS4KVGhlIExPUkQgaXMgZXhhbHRlZDsgZm9yIGhlIGR3ZWxsZXRoIG9uIGhpZ2g6IGhlIGhhdGggZmlsbGVkIFppb24gd2l0aCBqdWRnbWVudCBhbmQgcmlnaHRlb3VzbmVzcy4KQW5kIHdpc2RvbSBhbmQga25vd2xlZGdlIHNoYWxsIGJlIHRoZSBzdGFiaWxpdHkgb2YgdGh5IHRpbWVzLCBhbmQgc3RyZW5ndGggb2Ygc2FsdmF0aW9uOiB0aGUgZmVhciBvZiB0aGUgTE9SRCBpcyBoaXMgdHJlYXN1cmUuCkJlaG9sZCwgdGhlaXIgdmFsaWFudCBvbmVzIHNoYWxsIGNyeSB3aXRob3V0OiB0aGUgYW1iYXNzYWRvcnMgb2YgcGVhY2Ugc2hhbGwgd2VlcCBiaXR0ZXJseS4KVGhlIGhpZ2h3YXlzIGxpZSB3YXN0ZSwgdGhlIHdheWZhcmluZyBtYW4gY2Vhc2V0aDogaGUgaGF0aCBicm9rZW4gdGhlIGNvdmVuYW50LCBoZSBoYXRoIGRlc3Bpc2VkIHRoZSBjaXRpZXMsIGhlIHJlZ2FyZGV0aCBubyBtYW4uClRoZSBlYXJ0aCBtb3VybmV0aCBhbmQgbGFuZ3Vpc2hldGg6IExlYmFub24gaXMgYXNoYW1lZCBhbmQgaGV3biBkb3duOiBTaGFyb24gaXMgbGlrZSBhIHdpbGRlcm5lc3M7IGFuZCBCYXNoYW4gYW5kIENhcm1lbCBzaGFrZSBvZmYgdGhlaXIgZnJ1aXRzLgpOb3cgd2lsbCBJIHJpc2UsIHNhaXRoIHRoZSBMT1JEOyBub3cgd2lsbCBJIGJlIGV4YWx0ZWQ7IG5vdyB3aWxsIEkgbGlmdCB1cCBteXNlbGYuClllIHNoYWxsIGNvbmNlaXZlIGNoYWZmLCB5ZSBzaGFsbCBicmluZyBmb3J0aCBzdHViYmxlOiB5b3VyIGJyZWF0aCwgYXMgZmlyZSwgc2hhbGwgZGV2b3VyIHlvdS4KQW5kIHRoZSBwZW9wbGUgc2hhbGwgYmUgYXMgdGhlIGJ1cm5pbmdzIG9mIGxpbWU6IGFzIHRob3JucyBjdXQgdXAgc2hhbGwgdGhleSBiZSBidXJuZWQgaW4gdGhlIGZpcmUuCkhlYXIsIHllIHRoYXQgYXJlIGZhciBvZmYsIHdoYXQgSSBoYXZlIGRvbmU7IGFuZCwgeWUgdGhhdCBhcmUgbmVhciwgYWNrbm93bGVkZ2UgbXkgbWlnaHQuClRoZSBzaW5uZXJzIGluIFppb24gYXJlIGFmcmFpZDsgZmVhcmZ1bG5lc3MgaGF0aCBzdXJwcmlzZWQgdGhlIGh5cG9jcml0ZXMuIFdobyBhbW9uZyB1cyBzaGFsbCBkd2VsbCB3aXRoIHRoZSBkZXZvdXJpbmcgZmlyZT8gd2hvIGFtb25nIHVzIHNoYWxsIGR3ZWxsIHdpdGggZXZlcmxhc3RpbmcgYnVybmluZ3M/CkhlIHRoYXQgd2Fsa2V0aCByaWdodGVvdXNseSwgYW5kIHNwZWFrZXRoIHVwcmlnaHRseTsgaGUgdGhhdCBkZXNwaXNldGggdGhlIGdhaW4gb2Ygb3BwcmVzc2lvbnMsIHRoYXQgc2hha2V0aCBoaXMgaGFuZHMgZnJvbSBob2xkaW5nIG9mIGJyaWJlcywgdGhhdCBzdG9wcGV0aCBoaXMgZWFycyBmcm9tIGhlYXJpbmcgb2YgYmxvb2QsIGFuZCBzaHV0dGV0aCBoaXMgZXllcyBmcm9tIHNlZWluZyBldmlsOwpIZSBzaGFsbCBkd2VsbCBvbiBoaWdoOiBoaXMgcGxhY2Ugb2YgZGVmZW5jZSBzaGFsbCBiZSB0aGUgbXVuaXRpb25zIG9mIHJvY2tzOiBicmVhZCBzaGFsbCBiZSBnaXZlbiBoaW07IGhpcyB3YXRlcnMgc2hhbGwgYmUgc3VyZS4KVGhpbmUgZXllcyBzaGFsbCBzZWUgdGhlIGtpbmcgaW4gaGlzIGJlYXV0eTogdGhleSBzaGFsbCBiZWhvbGQgdGhlIGxhbmQgdGhhdCBpcyB2ZXJ5IGZhciBvZmYuClRoaW5lIGhlYXJ0IHNoYWxsIG1lZGl0YXRlIHRlcnJvci4gV2hlcmUgaXMgdGhlIHNjcmliZT8gd2hlcmUgaXMgdGhlIHJlY2VpdmVyPyB3aGVyZSBpcyBoZSB0aGF0IGNvdW50ZWQgdGhlIHRvd2Vycz8KVGhvdSBzaGFsdCBub3Qgc2VlIGEgZmllcmNlIHBlb3BsZSwgYSBwZW9wbGUgb2YgYSBkZWVwZXIgc3BlZWNoIHRoYW4gdGhvdSBjYW5zdCBwZXJjZWl2ZTsgb2YgYSBzdGFtbWVyaW5nIHRvbmd1ZSwgdGhhdCB0aG91IGNhbnN0IG5vdCB1bmRlcnN0YW5kLgpMb29rIHVwb24gWmlvbiwgdGhlIGNpdHkgb2Ygb3VyIHNvbGVtbml0aWVzOiB0aGluZSBleWVzIHNoYWxsIHNlZSBKZXJ1c2FsZW0gYSBxdWlldCBoYWJpdGF0aW9uLCBhIHRhYmVybmFjbGUgdGhhdCBzaGFsbCBub3QgYmUgdGFrZW4gZG93bjsgbm90IG9uZSBvZiB0aGUgc3Rha2VzIHRoZXJlb2Ygc2hhbGwgZXZlciBiZSByZW1vdmVkLCBuZWl0aGVyIHNoYWxsIGFueSBvZiB0aGUgY29yZHMgdGhlcmVvZiBiZSBicm9rZW4uCkJ1dCB0aGVyZSB0aGUgZ2xvcmlvdXMgTE9SRCB3aWxsIGJlIHVudG8gdXMgYSBwbGFjZSBvZiBicm9hZCByaXZlcnMgYW5kIHN0cmVhbXM7IHdoZXJlaW4gc2hhbGwgZ28gbm8gZ2FsbGV5IHdpdGggb2FycywgbmVpdGhlciBzaGFsbCBnYWxsYW50IHNoaXAgcGFzcyB0aGVyZWJ5LgpGb3IgdGhlIExPUkQgaXMgb3VyIGp1ZGdlLCB0aGUgTE9SRCBpcyBvdXIgbGF3Z2l2ZXIsIHRoZSBMT1JEIGlzIG91ciBraW5nOyBoZSB3aWxsIHNhdmUgdXMuClRoeSB0YWNrbGluZ3MgYXJlIGxvb3NlZDsgdGhleSBjb3VsZCBub3Qgd2VsbCBzdHJlbmd0aGVuIHRoZWlyIG1hc3QsIHRoZXkgY291bGQgbm90IHNwcmVhZCB0aGUgc2FpbDogdGhlbiBpcyB0aGUgcHJleSBvZiBhIGdyZWF0IHNwb2lsIGRpdmlkZWQ7IHRoZSBsYW1lIHRha2UgdGhlIHByZXkuCkFuZCB0aGUgaW5oYWJpdGFudCBzaGFsbCBub3Qgc2F5LCBJIGFtIHNpY2s6IHRoZSBwZW9wbGUgdGhhdCBkd2VsbCB0aGVyZWluIHNoYWxsIGJlIGZvcmdpdmVuIHRoZWlyIGluaXF1aXR5LgpDb21lIG5lYXIsIHllIG5hdGlvbnMsIHRvIGhlYXI7IGFuZCBoZWFya2VuLCB5ZSBwZW9wbGU6IGxldCB0aGUgZWFydGggaGVhciwgYW5kIGFsbCB0aGF0IGlzIHRoZXJlaW47IHRoZSB3b3JsZCwgYW5kIGFsbCB0aGluZ3MgdGhhdCBjb21lIGZvcnRoIG9mIGl0LgpGb3IgdGhlIGluZGlnbmF0aW9uIG9mIHRoZSBMT1JEIGlzIHVwb24gYWxsIG5hdGlvbnMsIGFuZCBoaXMgZnVyeSB1cG9uIGFsbCB0aGVpciBhcm1pZXM6IGhlIGhhdGggdXR0ZXJseSBkZXN0cm95ZWQgdGhlbSwgaGUgaGF0aCBkZWxpdmVyZWQgdGhlbSB0byB0aGUgc2xhdWdodGVyLgpUaGVpciBzbGFpbiBhbHNvIHNoYWxsIGJlIGNhc3Qgb3V0LCBhbmQgdGhlaXIgc3Rpbmsgc2hhbGwgY29tZSB1cCBvdXQgb2YgdGhlaXIgY2FyY2FzZXMsIGFuZCB0aGUgbW91bnRhaW5zIHNoYWxsIGJlIG1lbHRlZCB3aXRoIHRoZWlyIGJsb29kLgpBbmQgYWxsIHRoZSBob3N0IG9mIGhlYXZlbiBzaGFsbCBiZSBkaXNzb2x2ZWQsIGFuZCB0aGUgaGVhdmVucyBzaGFsbCBiZSByb2xsZWQgdG9nZXRoZXIgYXMgYSBzY3JvbGw6IGFuZCBhbGwgdGhlaXIgaG9zdCBzaGFsbCBmYWxsIGRvd24sIGFzIHRoZSBsZWFmIGZhbGxldGggb2ZmIGZyb20gdGhlIHZpbmUsIGFuZCBhcyBhIGZhbGxpbmcgZmlnIGZyb20gdGhlIGZpZyB0cmVlLgpGb3IgbXkgc3dvcmQgc2hhbGwgYmUgYmF0aGVkIGluIGhlYXZlbjogYmVob2xkLCBpdCBzaGFsbCBjb21lIGRvd24gdXBvbiBJZHVtZWEsIGFuZCB1cG9uIHRoZSBwZW9wbGUgb2YgbXkgY3Vyc2UsIHRvIGp1ZGdtZW50LgpUaGUgc3dvcmQgb2YgdGhlIExPUkQgaXMgZmlsbGVkIHdpdGggYmxvb2QsIGl0IGlzIG1hZGUgZmF0IHdpdGggZmF0bmVzcywgYW5kIHdpdGggdGhlIGJsb29kIG9mIGxhbWJzIGFuZCBnb2F0cywgd2l0aCB0aGUgZmF0IG9mIHRoZSBraWRuZXlzIG9mIHJhbXM6IGZvciB0aGUgTE9SRCBoYXRoIGEgc2FjcmlmaWNlIGluIEJvenJhaCwgYW5kIGEgZ3JlYXQgc2xhdWdodGVyIGluIHRoZSBsYW5kIG9mIElkdW1lYS4KQW5kIHRoZSB1bmljb3JucyBzaGFsbCBjb21lIGRvd24gd2l0aCB0aGVtLCBhbmQgdGhlIGJ1bGxvY2tzIHdpdGggdGhlIGJ1bGxzOyBhbmQgdGhlaXIgbGFuZCBzaGFsbCBiZSBzb2FrZWQgd2l0aCBibG9vZCwgYW5kIHRoZWlyIGR1c3QgbWFkZSBmYXQgd2l0aCBmYXRuZXNzLgpGb3IgaXQgaXMgdGhlIGRheSBvZiB0aGUgTE9SRCdzIHZlbmdlYW5jZSwgYW5kIHRoZSB5ZWFyIG9mIHJlY29tcGVuY2VzIGZvciB0aGUgY29udHJvdmVyc3kgb2YgWmlvbi4KQW5kIHRoZSBzdHJlYW1zIHRoZXJlb2Ygc2hhbGwgYmUgdHVybmVkIGludG8gcGl0Y2gsIGFuZCB0aGUgZHVzdCB0aGVyZW9mIGludG8gYnJpbXN0b25lLCBhbmQgdGhlIGxhbmQgdGhlcmVvZiBzaGFsbCBiZWNvbWUgYnVybmluZyBwaXRjaC4KSXQgc2hhbGwgbm90IGJlIHF1ZW5jaGVkIG5pZ2h0IG5vciBkYXk7IHRoZSBzbW9rZSB0aGVyZW9mIHNoYWxsIGdvIHVwIGZvciBldmVyOiBmcm9tIGdlbmVyYXRpb24gdG8gZ2VuZXJhdGlvbiBpdCBzaGFsbCBsaWUgd2FzdGU7IG5vbmUgc2hhbGwgcGFzcyB0aHJvdWdoIGl0IGZvciBldmVyIGFuZCBldmVyLgpCdXQgdGhlIGNvcm1vcmFudCBhbmQgdGhlIGJpdHRlcm4gc2hhbGwgcG9zc2VzcyBpdDsgdGhlIG93bCBhbHNvIGFuZCB0aGUgcmF2ZW4gc2hhbGwgZHdlbGwgaW4gaXQ6IGFuZCBoZSBzaGFsbCBzdHJldGNoIG91dCB1cG9uIGl0IHRoZSBsaW5lIG9mIGNvbmZ1c2lvbiwgYW5kIHRoZSBzdG9uZXMgb2YgZW1wdGluZXNzLgpUaGV5IHNoYWxsIGNhbGwgdGhlIG5vYmxlcyB0aGVyZW9mIHRvIHRoZSBraW5nZG9tLCBidXQgbm9uZSBzaGFsbCBiZSB0aGVyZSwgYW5kIGFsbCBoZXIgcHJpbmNlcyBzaGFsbCBiZSBub3RoaW5nLgpBbmQgdGhvcm5zIHNoYWxsIGNvbWUgdXAgaW4gaGVyIHBhbGFjZXMsIG5ldHRsZXMgYW5kIGJyYW1ibGVzIGluIHRoZSBmb3J0cmVzc2VzIHRoZXJlb2Y6IGFuZCBpdCBzaGFsbCBiZSBhbiBoYWJpdGF0aW9uIG9mIGRyYWdvbnMsIGFuZCBhIGNvdXJ0IGZvciBvd2xzLgpUaGUgd2lsZCBiZWFzdHMgb2YgdGhlIGRlc2VydCBzaGFsbCBhbHNvIG1lZXQgd2l0aCB0aGUgd2lsZCBiZWFzdHMgb2YgdGhlIGlzbGFuZCwgYW5kIHRoZSBzYXR5ciBzaGFsbCBjcnkgdG8gaGlzIGZlbGxvdzsgdGhlIHNjcmVlY2ggb3dsIGFsc28gc2hhbGwgcmVzdCB0aGVyZSwgYW5kIGZpbmQgZm9yIGhlcnNlbGYgYSBwbGFjZSBvZiByZXN0LgpUaGVyZSBzaGFsbCB0aGUgZ3JlYXQgb3dsIG1ha2UgaGVyIG5lc3QsIGFuZCBsYXksIGFuZCBoYXRjaCwgYW5kIGdhdGhlciB1bmRlciBoZXIgc2hhZG93OiB0aGVyZSBzaGFsbCB0aGUgdnVsdHVyZXMgYWxzbyBiZSBnYXRoZXJlZCwgZXZlcnkgb25lIHdpdGggaGVyIG1hdGUuClNlZWsgeWUgb3V0IG9mIHRoZSBib29rIG9mIHRoZSBMT1JELCBhbmQgcmVhZDogbm8gb25lIG9mIHRoZXNlIHNoYWxsIGZhaWwsIG5vbmUgc2hhbGwgd2FudCBoZXIgbWF0ZTogZm9yIG15IG1vdXRoIGl0IGhhdGggY29tbWFuZGVkLCBhbmQgaGlzIHNwaXJpdCBpdCBoYXRoIGdhdGhlcmVkIHRoZW0uCkFuZCBoZSBoYXRoIGNhc3QgdGhlIGxvdCBmb3IgdGhlbSwgYW5kIGhpcyBoYW5kIGhhdGggZGl2aWRlZCBpdCB1bnRvIHRoZW0gYnkgbGluZTogdGhleSBzaGFsbCBwb3NzZXNzIGl0IGZvciBldmVyLCBmcm9tIGdlbmVyYXRpb24gdG8gZ2VuZXJhdGlvbiBzaGFsbCB0aGV5IGR3ZWxsIHRoZXJlaW4uClRoZSB3aWxkZXJuZXNzIGFuZCB0aGUgc29saXRhcnkgcGxhY2Ugc2hhbGwgYmUgZ2xhZCBmb3IgdGhlbTsgYW5kIHRoZSBkZXNlcnQgc2hhbGwgcmVqb2ljZSwgYW5kIGJsb3Nzb20gYXMgdGhlIHJvc2UuCkl0IHNoYWxsIGJsb3Nzb20gYWJ1bmRhbnRseSwgYW5kIHJlam9pY2UgZXZlbiB3aXRoIGpveSBhbmQgc2luZ2luZzogdGhlIGdsb3J5IG9mIExlYmFub24gc2hhbGwgYmUgZ2l2ZW4gdW50byBpdCwgdGhlIGV4Y2VsbGVuY3kgb2YgQ2FybWVsIGFuZCBTaGFyb24sIHRoZXkgc2hhbGwgc2VlIHRoZSBnbG9yeSBvZiB0aGUgTE9SRCwgYW5kIHRoZSBleGNlbGxlbmN5IG9mIG91ciBHb2QuClN0cmVuZ3RoZW4geWUgdGhlIHdlYWsgaGFuZHMsIGFuZCBjb25maXJtIHRoZSBmZWVibGUga25lZXMuClNheSB0byB0aGVtIHRoYXQgYXJlIG9mIGEgZmVhcmZ1bCBoZWFydCwgQmUgc3Ryb25nLCBmZWFyIG5vdDogYmVob2xkLCB5b3VyIEdvZCB3aWxsIGNvbWUgd2l0aCB2ZW5nZWFuY2UsIGV2ZW4gR29kIHdpdGggYSByZWNvbXBlbmNlOyBoZSB3aWxsIGNvbWUgYW5kIHNhdmUgeW91LgpUaGVuIHRoZSBleWVzIG9mIHRoZSBibGluZCBzaGFsbCBiZSBvcGVuZWQsIGFuZCB0aGUgZWFycyBvZiB0aGUgZGVhZiBzaGFsbCBiZSB1bnN0b3BwZWQuClRoZW4gc2hhbGwgdGhlIGxhbWUgbWFuIGxlYXAgYXMgYW4gaGFydCwgYW5kIHRoZSB0b25ndWUgb2YgdGhlIGR1bWIgc2luZzogZm9yIGluIHRoZSB3aWxkZXJuZXNzIHNoYWxsIHdhdGVycyBicmVhayBvdXQsIGFuZCBzdHJlYW1zIGluIHRoZSBkZXNlcnQuCkFuZCB0aGUgcGFyY2hlZCBncm91bmQgc2hhbGwgYmVjb21lIGEgcG9vbCwgYW5kIHRoZSB0aGlyc3R5IGxhbmQgc3ByaW5ncyBvZiB3YXRlcjogaW4gdGhlIGhhYml0YXRpb24gb2YgZHJhZ29ucywgd2hlcmUgZWFjaCBsYXksIHNoYWxsIGJlIGdyYXNzIHdpdGggcmVlZHMgYW5kIHJ1c2hlcy4KQW5kIGFuIGhpZ2h3YXkgc2hhbGwgYmUgdGhlcmUsIGFuZCBhIHdheSwgYW5kIGl0IHNoYWxsIGJlIGNhbGxlZCBUaGUgd2F5IG9mIGhvbGluZXNzOyB0aGUgdW5jbGVhbiBzaGFsbCBub3QgcGFzcyBvdmVyIGl0OyBidXQgaXQgc2hhbGwgYmUgZm9yIHRob3NlOiB0aGUgd2F5ZmFyaW5nIG1lbiwgdGhvdWdoIGZvb2xzLCBzaGFsbCBub3QgZXJyIHRoZXJlaW4uCk5vIGxpb24gc2hhbGwgYmUgdGhlcmUsIG5vciBhbnkgcmF2ZW5vdXMgYmVhc3Qgc2hhbGwgZ28gdXAgdGhlcmVvbiwgaXQgc2hhbGwgbm90IGJlIGZvdW5kIHRoZXJlOyBidXQgdGhlIHJlZGVlbWVkIHNoYWxsIHdhbGsgdGhlcmU6CkFuZCB0aGUgcmFuc29tZWQgb2YgdGhlIExPUkQgc2hhbGwgcmV0dXJuLCBhbmQgY29tZSB0byBaaW9uIHdpdGggc29uZ3MgYW5kIGV2ZXJsYXN0aW5nIGpveSB1cG9uIHRoZWlyIGhlYWRzOiB0aGV5IHNoYWxsIG9idGFpbiBqb3kgYW5kIGdsYWRuZXNzLCBhbmQgc29ycm93IGFuZCBzaWdoaW5nIHNoYWxsIGZsZWUgYXdheS4KTm93IGl0IGNhbWUgdG8gcGFzcyBpbiB0aGUgZm91cnRlZW50aCB5ZWFyIG9mIGtpbmcgSGV6ZWtpYWgsIHRoYXQgU2VubmFjaGVyaWIga2luZyBvZiBBc3N5cmlhIGNhbWUgdXAgYWdhaW5zdCBhbGwgdGhlIGRlZmVuY2VkIGNpdGllcyBvZiBKdWRhaCwgYW5kIHRvb2sgdGhlbS4KQW5kIHRoZSBraW5nIG9mIEFzc3lyaWEgc2VudCBSYWJzaGFrZWggZnJvbSBMYWNoaXNoIHRvIEplcnVzYWxlbSB1bnRvIGtpbmcgSGV6ZWtpYWggd2l0aCBhIGdyZWF0IGFybXkuIEFuZCBoZSBzdG9vZCBieSB0aGUgY29uZHVpdCBvZiB0aGUgdXBwZXIgcG9vbCBpbiB0aGUgaGlnaHdheSBvZiB0aGUgZnVsbGVyJ3MgZmllbGQuClRoZW4gY2FtZSBmb3J0aCB1bnRvIGhpbSBFbGlha2ltLCBIaWxraWFoJ3Mgc29uLCB3aGljaCB3YXMgb3ZlciB0aGUgaG91c2UsIGFuZCBTaGVibmEgdGhlIHNjcmliZSwgYW5kIEpvYWgsIEFzYXBoJ3Mgc29uLCB0aGUgcmVjb3JkZXIuCkFuZCBSYWJzaGFrZWggc2FpZCB1bnRvIHRoZW0sIFNheSB5ZSBub3cgdG8gSGV6ZWtpYWgsIFRodXMgc2FpdGggdGhlIGdyZWF0IGtpbmcsIHRoZSBraW5nIG9mIEFzc3lyaWEsIFdoYXQgY29uZmlkZW5jZSBpcyB0aGlzIHdoZXJlaW4gdGhvdSB0cnVzdGVzdD8KSSBzYXksIHNheWVzdCB0aG91LCAoYnV0IHRoZXkgYXJlIGJ1dCB2YWluIHdvcmRzKSBJIGhhdmUgY291bnNlbCBhbmQgc3RyZW5ndGggZm9yIHdhcjogbm93IG9uIHdob20gZG9zdCB0aG91IHRydXN0LCB0aGF0IHRob3UgcmViZWxsZXN0IGFnYWluc3QgbWU/CkxvLCB0aG91IHRydXN0ZXN0IGluIHRoZSBzdGFmZiBvZiB0aGlzIGJyb2tlbiByZWVkLCBvbiBFZ3lwdDsgd2hlcmVvbiBpZiBhIG1hbiBsZWFuLCBpdCB3aWxsIGdvIGludG8gaGlzIGhhbmQsIGFuZCBwaWVyY2UgaXQ6IHNvIGlzIFBoYXJhb2gga2luZyBvZiBFZ3lwdCB0byBhbGwgdGhhdCB0cnVzdCBpbiBoaW0uCkJ1dCBpZiB0aG91IHNheSB0byBtZSwgV2UgdHJ1c3QgaW4gdGhlIExPUkQgb3VyIEdvZDogaXMgaXQgbm90IGhlLCB3aG9zZSBoaWdoIHBsYWNlcyBhbmQgd2hvc2UgYWx0YXJzIEhlemVraWFoIGhhdGggdGFrZW4gYXdheSwgYW5kIHNhaWQgdG8gSnVkYWggYW5kIHRvIEplcnVzYWxlbSwgWWUgc2hhbGwgd29yc2hpcCBiZWZvcmUgdGhpcyBhbHRhcj8KTm93IHRoZXJlZm9yZSBnaXZlIHBsZWRnZXMsIEkgcHJheSB0aGVlLCB0byBteSBtYXN0ZXIgdGhlIGtpbmcgb2YgQXNzeXJpYSwgYW5kIEkgd2lsbCBnaXZlIHRoZWUgdHdvIHRob3VzYW5kIGhvcnNlcywgaWYgdGhvdSBiZSBhYmxlIG9uIHRoeSBwYXJ0IHRvIHNldCByaWRlcnMgdXBvbiB0aGVtLgpIb3cgdGhlbiB3aWx0IHRob3UgdHVybiBhd2F5IHRoZSBmYWNlIG9mIG9uZSBjYXB0YWluIG9mIHRoZSBsZWFzdCBvZiBteSBtYXN0ZXIncyBzZXJ2YW50cywgYW5kIHB1dCB0aHkgdHJ1c3Qgb24gRWd5cHQgZm9yIGNoYXJpb3RzIGFuZCBmb3IgaG9yc2VtZW4/CkFuZCBhbSBJIG5vdyBjb21lIHVwIHdpdGhvdXQgdGhlIExPUkQgYWdhaW5zdCB0aGlzIGxhbmQgdG8gZGVzdHJveSBpdD8gdGhlIExPUkQgc2FpZCB1bnRvIG1lLCBHbyB1cCBhZ2FpbnN0IHRoaXMgbGFuZCwgYW5kIGRlc3Ryb3kgaXQuClRoZW4gc2FpZCBFbGlha2ltIGFuZCBTaGVibmEgYW5kIEpvYWggdW50byBSYWJzaGFrZWgsIFNwZWFrLCBJIHByYXkgdGhlZSwgdW50byB0aHkgc2VydmFudHMgaW4gdGhlIFN5cmlhbiBsYW5ndWFnZTsgZm9yIHdlIHVuZGVyc3RhbmQgaXQ6IGFuZCBzcGVhayBub3QgdG8gdXMgaW4gdGhlIEpld3MnIGxhbmd1YWdlLCBpbiB0aGUgZWFycyBvZiB0aGUgcGVvcGxlIHRoYXQgYXJlIG9uIHRoZSB3YWxsLgpCdXQgUmFic2hha2VoIHNhaWQsIEhhdGggbXkgbWFzdGVyIHNlbnQgbWUgdG8gdGh5IG1hc3RlciBhbmQgdG8gdGhlZSB0byBzcGVhayB0aGVzZSB3b3Jkcz8gaGF0aCBoZSBub3Qgc2VudCBtZSB0byB0aGUgbWVuIHRoYXQgc2l0IHVwb24gdGhlIHdhbGwsIHRoYXQgdGhleSBtYXkgZWF0IHRoZWlyIG93biBkdW5nLCBhbmQgZHJpbmsgdGhlaXIgb3duIHBpc3Mgd2l0aCB5b3U/ClRoZW4gUmFic2hha2VoIHN0b29kLCBhbmQgY3JpZWQgd2l0aCBhIGxvdWQgdm9pY2UgaW4gdGhlIEpld3MnIGxhbmd1YWdlLCBhbmQgc2FpZCwgSGVhciB5ZSB0aGUgd29yZHMgb2YgdGhlIGdyZWF0IGtpbmcsIHRoZSBraW5nIG9mIEFzc3lyaWEuClRodXMgc2FpdGggdGhlIGtpbmcsIExldCBub3QgSGV6ZWtpYWggZGVjZWl2ZSB5b3U6IGZvciBoZSBzaGFsbCBub3QgYmUgYWJsZSB0byBkZWxpdmVyIHlvdS4KTmVpdGhlciBsZXQgSGV6ZWtpYWggbWFrZSB5b3UgdHJ1c3QgaW4gdGhlIExPUkQsIHNheWluZywgVGhlIExPUkQgd2lsbCBzdXJlbHkgZGVsaXZlciB1czogdGhpcyBjaXR5IHNoYWxsIG5vdCBiZSBkZWxpdmVyZWQgaW50byB0aGUgaGFuZCBvZiB0aGUga2luZyBvZiBBc3N5cmlhLgpIZWFya2VuIG5vdCB0byBIZXpla2lhaDogZm9yIHRodXMgc2FpdGggdGhlIGtpbmcgb2YgQXNzeXJpYSwgTWFrZSBhbiBhZ3JlZW1lbnQgd2l0aCBtZSBieSBhIHByZXNlbnQsIGFuZCBjb21lIG91dCB0byBtZTogYW5kIGVhdCB5ZSBldmVyeSBvbmUgb2YgaGlzIHZpbmUsIGFuZCBldmVyeSBvbmUgb2YgaGlzIGZpZyB0cmVlLCBhbmQgZHJpbmsgeWUgZXZlcnkgb25lIHRoZSB3YXRlcnMgb2YgaGlzIG93biBjaXN0ZXJuOwpVbnRpbCBJIGNvbWUgYW5kIHRha2UgeW91IGF3YXkgdG8gYSBsYW5kIGxpa2UgeW91ciBvd24gbGFuZCwgYSBsYW5kIG9mIGNvcm4gYW5kIHdpbmUsIGEgbGFuZCBvZiBicmVhZCBhbmQgdmluZXlhcmRzLgpCZXdhcmUgbGVzdCBIZXpla2lhaCBwZXJzdWFkZSB5b3UsIHNheWluZywgdGhlIExPUkQgd2lsbCBkZWxpdmVyIHVzLiBIYXRoIGFueSBvZiB0aGUgZ29kcyBvZiB0aGUgbmF0aW9ucyBkZWxpdmVyZWQgaGlzIGxhbmQgb3V0IG9mIHRoZSBoYW5kIG9mIHRoZSBraW5nIG9mIEFzc3lyaWE/CldoZXJlIGFyZSB0aGUgZ29kcyBvZiBIYW1hdGggYW5kIEFycGhhZD8gd2hlcmUgYXJlIHRoZSBnb2RzIG9mIFNlcGhhcnZhaW0/IGFuZCBoYXZlIHRoZXkgZGVsaXZlcmVkIFNhbWFyaWEgb3V0IG9mIG15IGhhbmQ/CldobyBhcmUgdGhleSBhbW9uZyBhbGwgdGhlIGdvZHMgb2YgdGhlc2UgbGFuZHMsIHRoYXQgaGF2ZSBkZWxpdmVyZWQgdGhlaXIgbGFuZCBvdXQgb2YgbXkgaGFuZCwgdGhhdCB0aGUgTE9SRCBzaG91bGQgZGVsaXZlciBKZXJ1c2FsZW0gb3V0IG9mIG15IGhhbmQ/CkJ1dCB0aGV5IGhlbGQgdGhlaXIgcGVhY2UsIGFuZCBhbnN3ZXJlZCBoaW0gbm90IGEgd29yZDogZm9yIHRoZSBraW5nJ3MgY29tbWFuZG1lbnQgd2FzLCBzYXlpbmcsIEFuc3dlciBoaW0gbm90LgpUaGVuIGNhbWUgRWxpYWtpbSwgdGhlIHNvbiBvZiBIaWxraWFoLCB0aGF0IHdhcyBvdmVyIHRoZSBob3VzZWhvbGQsIGFuZCBTaGVibmEgdGhlIHNjcmliZSwgYW5kIEpvYWgsIHRoZSBzb24gb2YgQXNhcGgsIHRoZSByZWNvcmRlciwgdG8gSGV6ZWtpYWggd2l0aCB0aGVpciBjbG90aGVzIHJlbnQsIGFuZCB0b2xkIGhpbSB0aGUgd29yZHMgb2YgUmFic2hha2VoLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIGtpbmcgSGV6ZWtpYWggaGVhcmQgaXQsIHRoYXQgaGUgcmVudCBoaXMgY2xvdGhlcywgYW5kIGNvdmVyZWQgaGltc2VsZiB3aXRoIHNhY2tjbG90aCwgYW5kIHdlbnQgaW50byB0aGUgaG91c2Ugb2YgdGhlIExPUkQuCkFuZCBoZSBzZW50IEVsaWFraW0sIHdobyB3YXMgb3ZlciB0aGUgaG91c2Vob2xkLCBhbmQgU2hlYm5hIHRoZSBzY3JpYmUsIGFuZCB0aGUgZWxkZXJzIG9mIHRoZSBwcmllc3RzIGNvdmVyZWQgd2l0aCBzYWNrY2xvdGgsIHVudG8gSXNhaWFoIHRoZSBwcm9waGV0IHRoZSBzb24gb2YgQW1vei4KQW5kIHRoZXkgc2FpZCB1bnRvIGhpbSwgVGh1cyBzYWl0aCBIZXpla2lhaCwgVGhpcyBkYXkgaXMgYSBkYXkgb2YgdHJvdWJsZSwgYW5kIG9mIHJlYnVrZSwgYW5kIG9mIGJsYXNwaGVteTogZm9yIHRoZSBjaGlsZHJlbiBhcmUgY29tZSB0byB0aGUgYmlydGgsIGFuZCB0aGVyZSBpcyBub3Qgc3RyZW5ndGggdG8gYnJpbmcgZm9ydGguCkl0IG1heSBiZSB0aGUgTE9SRCB0aHkgR29kIHdpbGwgaGVhciB0aGUgd29yZHMgb2YgUmFic2hha2VoLCB3aG9tIHRoZSBraW5nIG9mIEFzc3lyaWEgaGlzIG1hc3RlciBoYXRoIHNlbnQgdG8gcmVwcm9hY2ggdGhlIGxpdmluZyBHb2QsIGFuZCB3aWxsIHJlcHJvdmUgdGhlIHdvcmRzIHdoaWNoIHRoZSBMT1JEIHRoeSBHb2QgaGF0aCBoZWFyZDogd2hlcmVmb3JlIGxpZnQgdXAgdGh5IHByYXllciBmb3IgdGhlIHJlbW5hbnQgdGhhdCBpcyBsZWZ0LgpTbyB0aGUgc2VydmFudHMgb2Yga2luZyBIZXpla2lhaCBjYW1lIHRvIElzYWlhaC4KQW5kIElzYWlhaCBzYWlkIHVudG8gdGhlbSwgVGh1cyBzaGFsbCB5ZSBzYXkgdW50byB5b3VyIG1hc3RlciwgVGh1cyBzYWl0aCB0aGUgTE9SRCwgQmUgbm90IGFmcmFpZCBvZiB0aGUgd29yZHMgdGhhdCB0aG91IGhhc3QgaGVhcmQsIHdoZXJld2l0aCB0aGUgc2VydmFudHMgb2YgdGhlIGtpbmcgb2YgQXNzeXJpYSBoYXZlIGJsYXNwaGVtZWQgbWUuCkJlaG9sZCwgSSB3aWxsIHNlbmQgYSBibGFzdCB1cG9uIGhpbSwgYW5kIGhlIHNoYWxsIGhlYXIgYSBydW1vdXIsIGFuZCByZXR1cm4gdG8gaGlzIG93biBsYW5kOyBhbmQgSSB3aWxsIGNhdXNlIGhpbSB0byBmYWxsIGJ5IHRoZSBzd29yZCBpbiBoaXMgb3duIGxhbmQuClNvIFJhYnNoYWtlaCByZXR1cm5lZCwgYW5kIGZvdW5kIHRoZSBraW5nIG9mIEFzc3lyaWEgd2FycmluZyBhZ2FpbnN0IExpYm5haDogZm9yIGhlIGhhZCBoZWFyZCB0aGF0IGhlIHdhcyBkZXBhcnRlZCBmcm9tIExhY2hpc2guCkFuZCBoZSBoZWFyZCBzYXkgY29uY2VybmluZyBUaXJoYWthaCBraW5nIG9mIEV0aGlvcGlhLCBIZSBpcyBjb21lIGZvcnRoIHRvIG1ha2Ugd2FyIHdpdGggdGhlZS4gQW5kIHdoZW4gaGUgaGVhcmQgaXQsIGhlIHNlbnQgbWVzc2VuZ2VycyB0byBIZXpla2lhaCwgc2F5aW5nLApUaHVzIHNoYWxsIHllIHNwZWFrIHRvIEhlemVraWFoIGtpbmcgb2YgSnVkYWgsIHNheWluZywgTGV0IG5vdCB0aHkgR29kLCBpbiB3aG9tIHRob3UgdHJ1c3Rlc3QsIGRlY2VpdmUgdGhlZSwgc2F5aW5nLCBKZXJ1c2FsZW0gc2hhbGwgbm90IGJlIGdpdmVuIGludG8gdGhlIGhhbmQgb2YgdGhlIGtpbmcgb2YgQXNzeXJpYS4KQmVob2xkLCB0aG91IGhhc3QgaGVhcmQgd2hhdCB0aGUga2luZ3Mgb2YgQXNzeXJpYSBoYXZlIGRvbmUgdG8gYWxsIGxhbmRzIGJ5IGRlc3Ryb3lpbmcgdGhlbSB1dHRlcmx5OyBhbmQgc2hhbHQgdGhvdSBiZSBkZWxpdmVyZWQ/CkhhdmUgdGhlIGdvZHMgb2YgdGhlIG5hdGlvbnMgZGVsaXZlcmVkIHRoZW0gd2hpY2ggbXkgZmF0aGVycyBoYXZlIGRlc3Ryb3llZCwgYXMgR296YW4sIGFuZCBIYXJhbiwgYW5kIFJlemVwaCwgYW5kIHRoZSBjaGlsZHJlbiBvZiBFZGVuIHdoaWNoIHdlcmUgaW4gVGVsYXNzYXI/CldoZXJlIGlzIHRoZSBraW5nIG9mIEhhbWF0aCwgYW5kIHRoZSBraW5nIG9mIEFycGhhZCwgYW5kIHRoZSBraW5nIG9mIHRoZSBjaXR5IG9mIFNlcGhhcnZhaW0sIEhlbmEsIGFuZCBJdmFoPwpBbmQgSGV6ZWtpYWggcmVjZWl2ZWQgdGhlIGxldHRlciBmcm9tIHRoZSBoYW5kIG9mIHRoZSBtZXNzZW5nZXJzLCBhbmQgcmVhZCBpdDogYW5kIEhlemVraWFoIHdlbnQgdXAgdW50byB0aGUgaG91c2Ugb2YgdGhlIExPUkQsIGFuZCBzcHJlYWQgaXQgYmVmb3JlIHRoZSBMT1JELgpBbmQgSGV6ZWtpYWggcHJheWVkIHVudG8gdGhlIExPUkQsIHNheWluZywKTyBMT1JEIG9mIGhvc3RzLCBHb2Qgb2YgSXNyYWVsLCB0aGF0IGR3ZWxsZXN0IGJldHdlZW4gdGhlIGNoZXJ1YmltcywgdGhvdSBhcnQgdGhlIEdvZCwgZXZlbiB0aG91IGFsb25lLCBvZiBhbGwgdGhlIGtpbmdkb21zIG9mIHRoZSBlYXJ0aDogdGhvdSBoYXN0IG1hZGUgaGVhdmVuIGFuZCBlYXJ0aC4KSW5jbGluZSB0aGluZSBlYXIsIE8gTE9SRCwgYW5kIGhlYXI7IG9wZW4gdGhpbmUgZXllcywgTyBMT1JELCBhbmQgc2VlOiBhbmQgaGVhciBhbGwgdGhlIHdvcmRzIG9mIFNlbm5hY2hlcmliLCB3aGljaCBoYXRoIHNlbnQgdG8gcmVwcm9hY2ggdGhlIGxpdmluZyBHb2QuCk9mIGEgdHJ1dGgsIExPUkQsIHRoZSBraW5ncyBvZiBBc3N5cmlhIGhhdmUgbGFpZCB3YXN0ZSBhbGwgdGhlIG5hdGlvbnMsIGFuZCB0aGVpciBjb3VudHJpZXMsCkFuZCBoYXZlIGNhc3QgdGhlaXIgZ29kcyBpbnRvIHRoZSBmaXJlOiBmb3IgdGhleSB3ZXJlIG5vIGdvZHMsIGJ1dCB0aGUgd29yayBvZiBtZW4ncyBoYW5kcywgd29vZCBhbmQgc3RvbmU6IHRoZXJlZm9yZSB0aGV5IGhhdmUgZGVzdHJveWVkIHRoZW0uCk5vdyB0aGVyZWZvcmUsIE8gTE9SRCBvdXIgR29kLCBzYXZlIHVzIGZyb20gaGlzIGhhbmQsIHRoYXQgYWxsIHRoZSBraW5nZG9tcyBvZiB0aGUgZWFydGggbWF5IGtub3cgdGhhdCB0aG91IGFydCB0aGUgTE9SRCwgZXZlbiB0aG91IG9ubHkuClRoZW4gSXNhaWFoIHRoZSBzb24gb2YgQW1veiBzZW50IHVudG8gSGV6ZWtpYWgsIHNheWluZywgVGh1cyBzYWl0aCB0aGUgTE9SRCBHb2Qgb2YgSXNyYWVsLCBXaGVyZWFzIHRob3UgaGFzdCBwcmF5ZWQgdG8gbWUgYWdhaW5zdCBTZW5uYWNoZXJpYiBraW5nIG9mIEFzc3lyaWE6ClRoaXMgaXMgdGhlIHdvcmQgd2hpY2ggdGhlIExPUkQgaGF0aCBzcG9rZW4gY29uY2VybmluZyBoaW07IFRoZSB2aXJnaW4sIHRoZSBkYXVnaHRlciBvZiBaaW9uLCBoYXRoIGRlc3Bpc2VkIHRoZWUsIGFuZCBsYXVnaGVkIHRoZWUgdG8gc2Nvcm47IHRoZSBkYXVnaHRlciBvZiBKZXJ1c2FsZW0gaGF0aCBzaGFrZW4gaGVyIGhlYWQgYXQgdGhlZS4KV2hvbSBoYXN0IHRob3UgcmVwcm9hY2hlZCBhbmQgYmxhc3BoZW1lZD8gYW5kIGFnYWluc3Qgd2hvbSBoYXN0IHRob3UgZXhhbHRlZCB0aHkgdm9pY2UsIGFuZCBsaWZ0ZWQgdXAgdGhpbmUgZXllcyBvbiBoaWdoPyBldmVuIGFnYWluc3QgdGhlIEhvbHkgT25lIG9mIElzcmFlbC4KQnkgdGh5IHNlcnZhbnRzIGhhc3QgdGhvdSByZXByb2FjaGVkIHRoZSBMb3JkLCBhbmQgaGFzdCBzYWlkLCBCeSB0aGUgbXVsdGl0dWRlIG9mIG15IGNoYXJpb3RzIGFtIEkgY29tZSB1cCB0byB0aGUgaGVpZ2h0IG9mIHRoZSBtb3VudGFpbnMsIHRvIHRoZSBzaWRlcyBvZiBMZWJhbm9uOyBhbmQgSSB3aWxsIGN1dCBkb3duIHRoZSB0YWxsIGNlZGFycyB0aGVyZW9mLCBhbmQgdGhlIGNob2ljZSBmaXIgdHJlZXMgdGhlcmVvZjogYW5kIEkgd2lsbCBlbnRlciBpbnRvIHRoZSBoZWlnaHQgb2YgaGlzIGJvcmRlciwgYW5kIHRoZSBmb3Jlc3Qgb2YgaGlzIENhcm1lbC4KSSBoYXZlIGRpZ2dlZCwgYW5kIGRydW5rIHdhdGVyOyBhbmQgd2l0aCB0aGUgc29sZSBvZiBteSBmZWV0IGhhdmUgSSBkcmllZCB1cCBhbGwgdGhlIHJpdmVycyBvZiB0aGUgYmVzaWVnZWQgcGxhY2VzLgpIYXN0IHRob3Ugbm90IGhlYXJkIGxvbmcgYWdvLCBob3cgSSBoYXZlIGRvbmUgaXQ7IGFuZCBvZiBhbmNpZW50IHRpbWVzLCB0aGF0IEkgaGF2ZSBmb3JtZWQgaXQ/IG5vdyBoYXZlIEkgYnJvdWdodCBpdCB0byBwYXNzLCB0aGF0IHRob3Ugc2hvdWxkZXN0IGJlIHRvIGxheSB3YXN0ZSBkZWZlbmNlZCBjaXRpZXMgaW50byBydWlub3VzIGhlYXBzLgpUaGVyZWZvcmUgdGhlaXIgaW5oYWJpdGFudHMgd2VyZSBvZiBzbWFsbCBwb3dlciwgdGhleSB3ZXJlIGRpc21heWVkIGFuZCBjb25mb3VuZGVkOiB0aGV5IHdlcmUgYXMgdGhlIGdyYXNzIG9mIHRoZSBmaWVsZCwgYW5kIGFzIHRoZSBncmVlbiBoZXJiLCBhcyB0aGUgZ3Jhc3Mgb24gdGhlIGhvdXNldG9wcywgYW5kIGFzIGNvcm4gYmxhc3RlZCBiZWZvcmUgaXQgYmUgZ3Jvd24gdXAuCkJ1dCBJIGtub3cgdGh5IGFib2RlLCBhbmQgdGh5IGdvaW5nIG91dCwgYW5kIHRoeSBjb21pbmcgaW4sIGFuZCB0aHkgcmFnZSBhZ2FpbnN0IG1lLgpCZWNhdXNlIHRoeSByYWdlIGFnYWluc3QgbWUsIGFuZCB0aHkgdHVtdWx0LCBpcyBjb21lIHVwIGludG8gbWluZSBlYXJzLCB0aGVyZWZvcmUgd2lsbCBJIHB1dCBteSBob29rIGluIHRoeSBub3NlLCBhbmQgbXkgYnJpZGxlIGluIHRoeSBsaXBzLCBhbmQgSSB3aWxsIHR1cm4gdGhlZSBiYWNrIGJ5IHRoZSB3YXkgYnkgd2hpY2ggdGhvdSBjYW1lc3QuCkFuZCB0aGlzIHNoYWxsIGJlIGEgc2lnbiB1bnRvIHRoZWUsIFllIHNoYWxsIGVhdCB0aGlzIHllYXIgc3VjaCBhcyBncm93ZXRoIG9mIGl0c2VsZjsgYW5kIHRoZSBzZWNvbmQgeWVhciB0aGF0IHdoaWNoIHNwcmluZ2V0aCBvZiB0aGUgc2FtZTogYW5kIGluIHRoZSB0aGlyZCB5ZWFyIHNvdyB5ZSwgYW5kIHJlYXAsIGFuZCBwbGFudCB2aW5leWFyZHMsIGFuZCBlYXQgdGhlIGZydWl0IHRoZXJlb2YuCkFuZCB0aGUgcmVtbmFudCB0aGF0IGlzIGVzY2FwZWQgb2YgdGhlIGhvdXNlIG9mIEp1ZGFoIHNoYWxsIGFnYWluIHRha2Ugcm9vdCBkb3dud2FyZCwgYW5kIGJlYXIgZnJ1aXQgdXB3YXJkOgpGb3Igb3V0IG9mIEplcnVzYWxlbSBzaGFsbCBnbyBmb3J0aCBhIHJlbW5hbnQsIGFuZCB0aGV5IHRoYXQgZXNjYXBlIG91dCBvZiBtb3VudCBaaW9uOiB0aGUgemVhbCBvZiB0aGUgTE9SRCBvZiBob3N0cyBzaGFsbCBkbyB0aGlzLgpUaGVyZWZvcmUgdGh1cyBzYWl0aCB0aGUgTE9SRCBjb25jZXJuaW5nIHRoZSBraW5nIG9mIEFzc3lyaWEsIEhlIHNoYWxsIG5vdCBjb21lIGludG8gdGhpcyBjaXR5LCBub3Igc2hvb3QgYW4gYXJyb3cgdGhlcmUsIG5vciBjb21lIGJlZm9yZSBpdCB3aXRoIHNoaWVsZHMsIG5vciBjYXN0IGEgYmFuayBhZ2FpbnN0IGl0LgpCeSB0aGUgd2F5IHRoYXQgaGUgY2FtZSwgYnkgdGhlIHNhbWUgc2hhbGwgaGUgcmV0dXJuLCBhbmQgc2hhbGwgbm90IGNvbWUgaW50byB0aGlzIGNpdHksIHNhaXRoIHRoZSBMT1JELgpGb3IgSSB3aWxsIGRlZmVuZCB0aGlzIGNpdHkgdG8gc2F2ZSBpdCBmb3IgbWluZSBvd24gc2FrZSwgYW5kIGZvciBteSBzZXJ2YW50IERhdmlkJ3Mgc2FrZS4KVGhlbiB0aGUgYW5nZWwgb2YgdGhlIExPUkQgd2VudCBmb3J0aCwgYW5kIHNtb3RlIGluIHRoZSBjYW1wIG9mIHRoZSBBc3N5cmlhbnMgYSBodW5kcmVkIGFuZCBmb3Vyc2NvcmUgYW5kIGZpdmUgdGhvdXNhbmQ6IGFuZCB3aGVuIHRoZXkgYXJvc2UgZWFybHkgaW4gdGhlIG1vcm5pbmcsIGJlaG9sZCwgdGhleSB3ZXJlIGFsbCBkZWFkIGNvcnBzZXMuClNvIFNlbm5hY2hlcmliIGtpbmcgb2YgQXNzeXJpYSBkZXBhcnRlZCwgYW5kIHdlbnQgYW5kIHJldHVybmVkLCBhbmQgZHdlbHQgYXQgTmluZXZlaC4KQW5kIGl0IGNhbWUgdG8gcGFzcywgYXMgaGUgd2FzIHdvcnNoaXBwaW5nIGluIHRoZSBob3VzZSBvZiBOaXNyb2NoIGhpcyBnb2QsIHRoYXQgQWRyYW1tZWxlY2ggYW5kIFNoYXJlemVyIGhpcyBzb25zIHNtb3RlIGhpbSB3aXRoIHRoZSBzd29yZDsgYW5kIHRoZXkgZXNjYXBlZCBpbnRvIHRoZSBsYW5kIG9mIEFybWVuaWE6IGFuZCBFc2FyaGFkZG9uIGhpcyBzb24gcmVpZ25lZCBpbiBoaXMgc3RlYWQuCkluIHRob3NlIGRheXMgd2FzIEhlemVraWFoIHNpY2sgdW50byBkZWF0aC4gQW5kIElzYWlhaCB0aGUgcHJvcGhldCB0aGUgc29uIG9mIEFtb3ogY2FtZSB1bnRvIGhpbSwgYW5kIHNhaWQgdW50byBoaW0sIFRodXMgc2FpdGggdGhlIExPUkQsIFNldCB0aGluZSBob3VzZSBpbiBvcmRlcjogZm9yIHRob3Ugc2hhbHQgZGllLCBhbmQgbm90IGxpdmUuClRoZW4gSGV6ZWtpYWggdHVybmVkIGhpcyBmYWNlIHRvd2FyZCB0aGUgd2FsbCwgYW5kIHByYXllZCB1bnRvIHRoZSBMT1JELApBbmQgc2FpZCwgUmVtZW1iZXIgbm93LCBPIExPUkQsIEkgYmVzZWVjaCB0aGVlLCBob3cgSSBoYXZlIHdhbGtlZCBiZWZvcmUgdGhlZSBpbiB0cnV0aCBhbmQgd2l0aCBhIHBlcmZlY3QgaGVhcnQsIGFuZCBoYXZlIGRvbmUgdGhhdCB3aGljaCBpcyBnb29kIGluIHRoeSBzaWdodC4gQW5kIEhlemVraWFoIHdlcHQgc29yZS4KVGhlbiBjYW1lIHRoZSB3b3JkIG9mIHRoZSBMT1JEIHRvIElzYWlhaCwgc2F5aW5nLApHbywgYW5kIHNheSB0byBIZXpla2lhaCwgVGh1cyBzYWl0aCB0aGUgTE9SRCwgdGhlIEdvZCBvZiBEYXZpZCB0aHkgZmF0aGVyLCBJIGhhdmUgaGVhcmQgdGh5IHByYXllciwgSSBoYXZlIHNlZW4gdGh5IHRlYXJzOiBiZWhvbGQsIEkgd2lsbCBhZGQgdW50byB0aHkgZGF5cyBmaWZ0ZWVuIHllYXJzLgpBbmQgSSB3aWxsIGRlbGl2ZXIgdGhlZSBhbmQgdGhpcyBjaXR5IG91dCBvZiB0aGUgaGFuZCBvZiB0aGUga2luZyBvZiBBc3N5cmlhOiBhbmQgSSB3aWxsIGRlZmVuZCB0aGlzIGNpdHkuCkFuZCB0aGlzIHNoYWxsIGJlIGEgc2lnbiB1bnRvIHRoZWUgZnJvbSB0aGUgTE9SRCwgdGhhdCB0aGUgTE9SRCB3aWxsIGRvIHRoaXMgdGhpbmcgdGhhdCBoZSBoYXRoIHNwb2tlbjsKQmVob2xkLCBJIHdpbGwgYnJpbmcgYWdhaW4gdGhlIHNoYWRvdyBvZiB0aGUgZGVncmVlcywgd2hpY2ggaXMgZ29uZSBkb3duIGluIHRoZSBzdW4gZGlhbCBvZiBBaGF6LCB0ZW4gZGVncmVlcyBiYWNrd2FyZC4gU28gdGhlIHN1biByZXR1cm5lZCB0ZW4gZGVncmVlcywgYnkgd2hpY2ggZGVncmVlcyBpdCB3YXMgZ29uZSBkb3duLgpUaGUgd3JpdGluZyBvZiBIZXpla2lhaCBraW5nIG9mIEp1ZGFoLCB3aGVuIGhlIGhhZCBiZWVuIHNpY2ssIGFuZCB3YXMgcmVjb3ZlcmVkIG9mIGhpcyBzaWNrbmVzczoKSSBzYWlkIGluIHRoZSBjdXR0aW5nIG9mZiBvZiBteSBkYXlzLCBJIHNoYWxsIGdvIHRvIHRoZSBnYXRlcyBvZiB0aGUgZ3JhdmU6IEkgYW0gZGVwcml2ZWQgb2YgdGhlIHJlc2lkdWUgb2YgbXkgeWVhcnMuCkkgc2FpZCwgSSBzaGFsbCBub3Qgc2VlIHRoZSBMT1JELCBldmVuIHRoZSBMT1JELCBpbiB0aGUgbGFuZCBvZiB0aGUgbGl2aW5nOiBJIHNoYWxsIGJlaG9sZCBtYW4gbm8gbW9yZSB3aXRoIHRoZSBpbmhhYml0YW50cyBvZiB0aGUgd29ybGQuCk1pbmUgYWdlIGlzIGRlcGFydGVkLCBhbmQgaXMgcmVtb3ZlZCBmcm9tIG1lIGFzIGEgc2hlcGhlcmQncyB0ZW50OiBJIGhhdmUgY3V0IG9mZiBsaWtlIGEgd2VhdmVyIG15IGxpZmU6IGhlIHdpbGwgY3V0IG1lIG9mZiB3aXRoIHBpbmluZyBzaWNrbmVzczogZnJvbSBkYXkgZXZlbiB0byBuaWdodCB3aWx0IHRob3UgbWFrZSBhbiBlbmQgb2YgbWUuCkkgcmVja29uZWQgdGlsbCBtb3JuaW5nLCB0aGF0LCBhcyBhIGxpb24sIHNvIHdpbGwgaGUgYnJlYWsgYWxsIG15IGJvbmVzOiBmcm9tIGRheSBldmVuIHRvIG5pZ2h0IHdpbHQgdGhvdSBtYWtlIGFuIGVuZCBvZiBtZS4KTGlrZSBhIGNyYW5lIG9yIGEgc3dhbGxvdywgc28gZGlkIEkgY2hhdHRlcjogSSBkaWQgbW91cm4gYXMgYSBkb3ZlOiBtaW5lIGV5ZXMgZmFpbCB3aXRoIGxvb2tpbmcgdXB3YXJkOiBPIExPUkQsIEkgYW0gb3BwcmVzc2VkOyB1bmRlcnRha2UgZm9yIG1lLgpXaGF0IHNoYWxsIEkgc2F5PyBoZSBoYXRoIGJvdGggc3Bva2VuIHVudG8gbWUsIGFuZCBoaW1zZWxmIGhhdGggZG9uZSBpdDogSSBzaGFsbCBnbyBzb2Z0bHkgYWxsIG15IHllYXJzIGluIHRoZSBiaXR0ZXJuZXNzIG9mIG15IHNvdWwuCk8gTE9SRCwgYnkgdGhlc2UgdGhpbmdzIG1lbiBsaXZlLCBhbmQgaW4gYWxsIHRoZXNlIHRoaW5ncyBpcyB0aGUgbGlmZSBvZiBteSBzcGlyaXQ6IHNvIHdpbHQgdGhvdSByZWNvdmVyIG1lLCBhbmQgbWFrZSBtZSB0byBsaXZlLgpCZWhvbGQsIGZvciBwZWFjZSBJIGhhZCBncmVhdCBiaXR0ZXJuZXNzOiBidXQgdGhvdSBoYXN0IGluIGxvdmUgdG8gbXkgc291bCBkZWxpdmVyZWQgaXQgZnJvbSB0aGUgcGl0IG9mIGNvcnJ1cHRpb246IGZvciB0aG91IGhhc3QgY2FzdCBhbGwgbXkgc2lucyBiZWhpbmQgdGh5IGJhY2suCkZvciB0aGUgZ3JhdmUgY2Fubm90IHByYWlzZSB0aGVlLCBkZWF0aCBjYW4gbm90IGNlbGVicmF0ZSB0aGVlOiB0aGV5IHRoYXQgZ28gZG93biBpbnRvIHRoZSBwaXQgY2Fubm90IGhvcGUgZm9yIHRoeSB0cnV0aC4KVGhlIGxpdmluZywgdGhlIGxpdmluZywgaGUgc2hhbGwgcHJhaXNlIHRoZWUsIGFzIEkgZG8gdGhpcyBkYXk6IHRoZSBmYXRoZXIgdG8gdGhlIGNoaWxkcmVuIHNoYWxsIG1ha2Uga25vd24gdGh5IHRydXRoLgpUaGUgTE9SRCB3YXMgcmVhZHkgdG8gc2F2ZSBtZTogdGhlcmVmb3JlIHdlIHdpbGwgc2luZyBteSBzb25ncyB0byB0aGUgc3RyaW5nZWQgaW5zdHJ1bWVudHMgYWxsIHRoZSBkYXlzIG9mIG91ciBsaWZlIGluIHRoZSBob3VzZSBvZiB0aGUgTE9SRC4KRm9yIElzYWlhaCBoYWQgc2FpZCwgTGV0IHRoZW0gdGFrZSBhIGx1bXAgb2YgZmlncywgYW5kIGxheSBpdCBmb3IgYSBwbGFpc3RlciB1cG9uIHRoZSBib2lsLCBhbmQgaGUgc2hhbGwgcmVjb3Zlci4KSGV6ZWtpYWggYWxzbyBoYWQgc2FpZCwgV2hhdCBpcyB0aGUgc2lnbiB0aGF0IEkgc2hhbGwgZ28gdXAgdG8gdGhlIGhvdXNlIG9mIHRoZSBMT1JEPwpBdCB0aGF0IHRpbWUgTWVyb2RhY2hiYWxhZGFuLCB0aGUgc29uIG9mIEJhbGFkYW4sIGtpbmcgb2YgQmFieWxvbiwgc2VudCBsZXR0ZXJzIGFuZCBhIHByZXNlbnQgdG8gSGV6ZWtpYWg6IGZvciBoZSBoYWQgaGVhcmQgdGhhdCBoZSBoYWQgYmVlbiBzaWNrLCBhbmQgd2FzIHJlY292ZXJlZC4KQW5kIEhlemVraWFoIHdhcyBnbGFkIG9mIHRoZW0sIGFuZCBzaGV3ZWQgdGhlbSB0aGUgaG91c2Ugb2YgaGlzIHByZWNpb3VzIHRoaW5ncywgdGhlIHNpbHZlciwgYW5kIHRoZSBnb2xkLCBhbmQgdGhlIHNwaWNlcywgYW5kIHRoZSBwcmVjaW91cyBvaW50bWVudCwgYW5kIGFsbCB0aGUgaG91c2Ugb2YgaGlzIGFybW91ciwgYW5kIGFsbCB0aGF0IHdhcyBmb3VuZCBpbiBoaXMgdHJlYXN1cmVzOiB0aGVyZSB3YXMgbm90aGluZyBpbiBoaXMgaG91c2UsIG5vciBpbiBhbGwgaGlzIGRvbWluaW9uLCB0aGF0IEhlemVraWFoIHNoZXdlZCB0aGVtIG5vdC4KVGhlbiBjYW1lIElzYWlhaCB0aGUgcHJvcGhldCB1bnRvIGtpbmcgSGV6ZWtpYWgsIGFuZCBzYWlkIHVudG8gaGltLCBXaGF0IHNhaWQgdGhlc2UgbWVuPyBhbmQgZnJvbSB3aGVuY2UgY2FtZSB0aGV5IHVudG8gdGhlZT8gQW5kIEhlemVraWFoIHNhaWQsIFRoZXkgYXJlIGNvbWUgZnJvbSBhIGZhciBjb3VudHJ5IHVudG8gbWUsIGV2ZW4gZnJvbSBCYWJ5bG9uLgpUaGVuIHNhaWQgaGUsIFdoYXQgaGF2ZSB0aGV5IHNlZW4gaW4gdGhpbmUgaG91c2U/IEFuZCBIZXpla2lhaCBhbnN3ZXJlZCwgQWxsIHRoYXQgaXMgaW4gbWluZSBob3VzZSBoYXZlIHRoZXkgc2VlbjogdGhlcmUgaXMgbm90aGluZyBhbW9uZyBteSB0cmVhc3VyZXMgdGhhdCBJIGhhdmUgbm90IHNoZXdlZCB0aGVtLgpUaGVuIHNhaWQgSXNhaWFoIHRvIEhlemVraWFoLCBIZWFyIHRoZSB3b3JkIG9mIHRoZSBMT1JEIG9mIGhvc3RzOgpCZWhvbGQsIHRoZSBkYXlzIGNvbWUsIHRoYXQgYWxsIHRoYXQgaXMgaW4gdGhpbmUgaG91c2UsIGFuZCB0aGF0IHdoaWNoIHRoeSBmYXRoZXJzIGhhdmUgbGFpZCB1cCBpbiBzdG9yZSB1bnRpbCB0aGlzIGRheSwgc2hhbGwgYmUgY2FycmllZCB0byBCYWJ5bG9uOiBub3RoaW5nIHNoYWxsIGJlIGxlZnQsIHNhaXRoIHRoZSBMT1JELgpBbmQgb2YgdGh5IHNvbnMgdGhhdCBzaGFsbCBpc3N1ZSBmcm9tIHRoZWUsIHdoaWNoIHRob3Ugc2hhbHQgYmVnZXQsIHNoYWxsIHRoZXkgdGFrZSBhd2F5OyBhbmQgdGhleSBzaGFsbCBiZSBldW51Y2hzIGluIHRoZSBwYWxhY2Ugb2YgdGhlIGtpbmcgb2YgQmFieWxvbi4KVGhlbiBzYWlkIEhlemVraWFoIHRvIElzYWlhaCwgR29vZCBpcyB0aGUgd29yZCBvZiB0aGUgTE9SRCB3aGljaCB0aG91IGhhc3Qgc3Bva2VuLiBIZSBzYWlkIG1vcmVvdmVyLCBGb3IgdGhlcmUgc2hhbGwgYmUgcGVhY2UgYW5kIHRydXRoIGluIG15IGRheXMuCkNvbWZvcnQgeWUsIGNvbWZvcnQgeWUgbXkgcGVvcGxlLCBzYWl0aCB5b3VyIEdvZC4KU3BlYWsgeWUgY29tZm9ydGFibHkgdG8gSmVydXNhbGVtLCBhbmQgY3J5IHVudG8gaGVyLCB0aGF0IGhlciB3YXJmYXJlIGlzIGFjY29tcGxpc2hlZCwgdGhhdCBoZXIgaW5pcXVpdHkgaXMgcGFyZG9uZWQ6IGZvciBzaGUgaGF0aCByZWNlaXZlZCBvZiB0aGUgTE9SRCdzIGhhbmQgZG91YmxlIGZvciBhbGwgaGVyIHNpbnMuClRoZSB2b2ljZSBvZiBoaW0gdGhhdCBjcmlldGggaW4gdGhlIHdpbGRlcm5lc3MsIFByZXBhcmUgeWUgdGhlIHdheSBvZiB0aGUgTE9SRCwgbWFrZSBzdHJhaWdodCBpbiB0aGUgZGVzZXJ0IGEgaGlnaHdheSBmb3Igb3VyIEdvZC4KRXZlcnkgdmFsbGV5IHNoYWxsIGJlIGV4YWx0ZWQsIGFuZCBldmVyeSBtb3VudGFpbiBhbmQgaGlsbCBzaGFsbCBiZSBtYWRlIGxvdzogYW5kIHRoZSBjcm9va2VkIHNoYWxsIGJlIG1hZGUgc3RyYWlnaHQsIGFuZCB0aGUgcm91Z2ggcGxhY2VzIHBsYWluOgpBbmQgdGhlIGdsb3J5IG9mIHRoZSBMT1JEIHNoYWxsIGJlIHJldmVhbGVkLCBhbmQgYWxsIGZsZXNoIHNoYWxsIHNlZSBpdCB0b2dldGhlcjogZm9yIHRoZSBtb3V0aCBvZiB0aGUgTE9SRCBoYXRoIHNwb2tlbiBpdC4KVGhlIHZvaWNlIHNhaWQsIENyeS4gQW5kIGhlIHNhaWQsIFdoYXQgc2hhbGwgSSBjcnk/IEFsbCBmbGVzaCBpcyBncmFzcywgYW5kIGFsbCB0aGUgZ29vZGxpbmVzcyB0aGVyZW9mIGlzIGFzIHRoZSBmbG93ZXIgb2YgdGhlIGZpZWxkOgpUaGUgZ3Jhc3Mgd2l0aGVyZXRoLCB0aGUgZmxvd2VyIGZhZGV0aDogYmVjYXVzZSB0aGUgc3Bpcml0IG9mIHRoZSBMT1JEIGJsb3dldGggdXBvbiBpdDogc3VyZWx5IHRoZSBwZW9wbGUgaXMgZ3Jhc3MuClRoZSBncmFzcyB3aXRoZXJldGgsIHRoZSBmbG93ZXIgZmFkZXRoOiBidXQgdGhlIHdvcmQgb2Ygb3VyIEdvZCBzaGFsbCBzdGFuZCBmb3IgZXZlci4KTyBaaW9uLCB0aGF0IGJyaW5nZXN0IGdvb2QgdGlkaW5ncywgZ2V0IHRoZWUgdXAgaW50byB0aGUgaGlnaCBtb3VudGFpbjsgTyBKZXJ1c2FsZW0sIHRoYXQgYnJpbmdlc3QgZ29vZCB0aWRpbmdzLCBsaWZ0IHVwIHRoeSB2b2ljZSB3aXRoIHN0cmVuZ3RoOyBsaWZ0IGl0IHVwLCBiZSBub3QgYWZyYWlkOyBzYXkgdW50byB0aGUgY2l0aWVzIG9mIEp1ZGFoLCBCZWhvbGQgeW91ciBHb2QhCkJlaG9sZCwgdGhlIExvcmQgR09EIHdpbGwgY29tZSB3aXRoIHN0cm9uZyBoYW5kLCBhbmQgaGlzIGFybSBzaGFsbCBydWxlIGZvciBoaW06IGJlaG9sZCwgaGlzIHJld2FyZCBpcyB3aXRoIGhpbSwgYW5kIGhpcyB3b3JrIGJlZm9yZSBoaW0uCkhlIHNoYWxsIGZlZWQgaGlzIGZsb2NrIGxpa2UgYSBzaGVwaGVyZDogaGUgc2hhbGwgZ2F0aGVyIHRoZSBsYW1icyB3aXRoIGhpcyBhcm0sIGFuZCBjYXJyeSB0aGVtIGluIGhpcyBib3NvbSwgYW5kIHNoYWxsIGdlbnRseSBsZWFkIHRob3NlIHRoYXQgYXJlIHdpdGggeW91bmcuCldobyBoYXRoIG1lYXN1cmVkIHRoZSB3YXRlcnMgaW4gdGhlIGhvbGxvdyBvZiBoaXMgaGFuZCwgYW5kIG1ldGVkIG91dCBoZWF2ZW4gd2l0aCB0aGUgc3BhbiwgYW5kIGNvbXByZWhlbmRlZCB0aGUgZHVzdCBvZiB0aGUgZWFydGggaW4gYSBtZWFzdXJlLCBhbmQgd2VpZ2hlZCB0aGUgbW91bnRhaW5zIGluIHNjYWxlcywgYW5kIHRoZSBoaWxscyBpbiBhIGJhbGFuY2U/CldobyBoYXRoIGRpcmVjdGVkIHRoZSBTcGlyaXQgb2YgdGhlIExPUkQsIG9yIGJlaW5nIGhpcyBjb3Vuc2VsbG9yIGhhdGggdGF1Z2h0IGhpbT8KV2l0aCB3aG9tIHRvb2sgaGUgY291bnNlbCwgYW5kIHdobyBpbnN0cnVjdGVkIGhpbSwgYW5kIHRhdWdodCBoaW0gaW4gdGhlIHBhdGggb2YganVkZ21lbnQsIGFuZCB0YXVnaHQgaGltIGtub3dsZWRnZSwgYW5kIHNoZXdlZCB0byBoaW0gdGhlIHdheSBvZiB1bmRlcnN0YW5kaW5nPwpCZWhvbGQsIHRoZSBuYXRpb25zIGFyZSBhcyBhIGRyb3Agb2YgYSBidWNrZXQsIGFuZCBhcmUgY291bnRlZCBhcyB0aGUgc21hbGwgZHVzdCBvZiB0aGUgYmFsYW5jZTogYmVob2xkLCBoZSB0YWtldGggdXAgdGhlIGlzbGVzIGFzIGEgdmVyeSBsaXR0bGUgdGhpbmcuCkFuZCBMZWJhbm9uIGlzIG5vdCBzdWZmaWNpZW50IHRvIGJ1cm4sIG5vciB0aGUgYmVhc3RzIHRoZXJlb2Ygc3VmZmljaWVudCBmb3IgYSBidXJudCBvZmZlcmluZy4KQWxsIG5hdGlvbnMgYmVmb3JlIGhpbSBhcmUgYXMgbm90aGluZzsgYW5kIHRoZXkgYXJlIGNvdW50ZWQgdG8gaGltIGxlc3MgdGhhbiBub3RoaW5nLCBhbmQgdmFuaXR5LgpUbyB3aG9tIHRoZW4gd2lsbCB5ZSBsaWtlbiBHb2Q/IG9yIHdoYXQgbGlrZW5lc3Mgd2lsbCB5ZSBjb21wYXJlIHVudG8gaGltPwpUaGUgd29ya21hbiBtZWx0ZXRoIGEgZ3JhdmVuIGltYWdlLCBhbmQgdGhlIGdvbGRzbWl0aCBzcHJlYWRldGggaXQgb3ZlciB3aXRoIGdvbGQsIGFuZCBjYXN0ZXRoIHNpbHZlciBjaGFpbnMuCkhlIHRoYXQgaXMgc28gaW1wb3ZlcmlzaGVkIHRoYXQgaGUgaGF0aCBubyBvYmxhdGlvbiBjaG9vc2V0aCBhIHRyZWUgdGhhdCB3aWxsIG5vdCByb3Q7IGhlIHNlZWtldGggdW50byBoaW0gYSBjdW5uaW5nIHdvcmttYW4gdG8gcHJlcGFyZSBhIGdyYXZlbiBpbWFnZSwgdGhhdCBzaGFsbCBub3QgYmUgbW92ZWQuCkhhdmUgeWUgbm90IGtub3duPyBoYXZlIHllIG5vdCBoZWFyZD8gaGF0aCBpdCBub3QgYmVlbiB0b2xkIHlvdSBmcm9tIHRoZSBiZWdpbm5pbmc/IGhhdmUgeWUgbm90IHVuZGVyc3Rvb2QgZnJvbSB0aGUgZm91bmRhdGlvbnMgb2YgdGhlIGVhcnRoPwpJdCBpcyBoZSB0aGF0IHNpdHRldGggdXBvbiB0aGUgY2lyY2xlIG9mIHRoZSBlYXJ0aCwgYW5kIHRoZSBpbmhhYml0YW50cyB0aGVyZW9mIGFyZSBhcyBncmFzc2hvcHBlcnM7IHRoYXQgc3RyZXRjaGV0aCBvdXQgdGhlIGhlYXZlbnMgYXMgYSBjdXJ0YWluLCBhbmQgc3ByZWFkZXRoIHRoZW0gb3V0IGFzIGEgdGVudCB0byBkd2VsbCBpbjoKVGhhdCBicmluZ2V0aCB0aGUgcHJpbmNlcyB0byBub3RoaW5nOyBoZSBtYWtldGggdGhlIGp1ZGdlcyBvZiB0aGUgZWFydGggYXMgdmFuaXR5LgpZZWEsIHRoZXkgc2hhbGwgbm90IGJlIHBsYW50ZWQ7IHllYSwgdGhleSBzaGFsbCBub3QgYmUgc293bjogeWVhLCB0aGVpciBzdG9jayBzaGFsbCBub3QgdGFrZSByb290IGluIHRoZSBlYXJ0aDogYW5kIGhlIHNoYWxsIGFsc28gYmxvdyB1cG9uIHRoZW0sIGFuZCB0aGV5IHNoYWxsIHdpdGhlciwgYW5kIHRoZSB3aGlybHdpbmQgc2hhbGwgdGFrZSB0aGVtIGF3YXkgYXMgc3R1YmJsZS4KVG8gd2hvbSB0aGVuIHdpbGwgeWUgbGlrZW4gbWUsIG9yIHNoYWxsIEkgYmUgZXF1YWw/IHNhaXRoIHRoZSBIb2x5IE9uZS4KTGlmdCB1cCB5b3VyIGV5ZXMgb24gaGlnaCwgYW5kIGJlaG9sZCB3aG8gaGF0aCBjcmVhdGVkIHRoZXNlIHRoaW5ncywgdGhhdCBicmluZ2V0aCBvdXQgdGhlaXIgaG9zdCBieSBudW1iZXI6IGhlIGNhbGxldGggdGhlbSBhbGwgYnkgbmFtZXMgYnkgdGhlIGdyZWF0bmVzcyBvZiBoaXMgbWlnaHQsIGZvciB0aGF0IGhlIGlzIHN0cm9uZyBpbiBwb3dlcjsgbm90IG9uZSBmYWlsZXRoLgpXaHkgc2F5ZXN0IHRob3UsIE8gSmFjb2IsIGFuZCBzcGVha2VzdCwgTyBJc3JhZWwsIE15IHdheSBpcyBoaWQgZnJvbSB0aGUgTE9SRCwgYW5kIG15IGp1ZGdtZW50IGlzIHBhc3NlZCBvdmVyIGZyb20gbXkgR29kPwpIYXN0IHRob3Ugbm90IGtub3duPyBoYXN0IHRob3Ugbm90IGhlYXJkLCB0aGF0IHRoZSBldmVybGFzdGluZyBHb2QsIHRoZSBMT1JELCB0aGUgQ3JlYXRvciBvZiB0aGUgZW5kcyBvZiB0aGUgZWFydGgsIGZhaW50ZXRoIG5vdCwgbmVpdGhlciBpcyB3ZWFyeT8gdGhlcmUgaXMgbm8gc2VhcmNoaW5nIG9mIGhpcyB1bmRlcnN0YW5kaW5nLgpIZSBnaXZldGggcG93ZXIgdG8gdGhlIGZhaW50OyBhbmQgdG8gdGhlbSB0aGF0IGhhdmUgbm8gbWlnaHQgaGUgaW5jcmVhc2V0aCBzdHJlbmd0aC4KRXZlbiB0aGUgeW91dGhzIHNoYWxsIGZhaW50IGFuZCBiZSB3ZWFyeSwgYW5kIHRoZSB5b3VuZyBtZW4gc2hhbGwgdXR0ZXJseSBmYWxsOgpCdXQgdGhleSB0aGF0IHdhaXQgdXBvbiB0aGUgTE9SRCBzaGFsbCByZW5ldyB0aGVpciBzdHJlbmd0aDsgdGhleSBzaGFsbCBtb3VudCB1cCB3aXRoIHdpbmdzIGFzIGVhZ2xlczsgdGhleSBzaGFsbCBydW4sIGFuZCBub3QgYmUgd2Vhcnk7IGFuZCB0aGV5IHNoYWxsIHdhbGssIGFuZCBub3QgZmFpbnQuCktlZXAgc2lsZW5jZSBiZWZvcmUgbWUsIE8gaXNsYW5kczsgYW5kIGxldCB0aGUgcGVvcGxlIHJlbmV3IHRoZWlyIHN0cmVuZ3RoOiBsZXQgdGhlbSBjb21lIG5lYXI7IHRoZW4gbGV0IHRoZW0gc3BlYWs6IGxldCB1cyBjb21lIG5lYXIgdG9nZXRoZXIgdG8ganVkZ21lbnQuCldobyByYWlzZWQgdXAgdGhlIHJpZ2h0ZW91cyBtYW4gZnJvbSB0aGUgZWFzdCwgY2FsbGVkIGhpbSB0byBoaXMgZm9vdCwgZ2F2ZSB0aGUgbmF0aW9ucyBiZWZvcmUgaGltLCBhbmQgbWFkZSBoaW0gcnVsZSBvdmVyIGtpbmdzPyBoZSBnYXZlIHRoZW0gYXMgdGhlIGR1c3QgdG8gaGlzIHN3b3JkLCBhbmQgYXMgZHJpdmVuIHN0dWJibGUgdG8gaGlzIGJvdy4KSGUgcHVyc3VlZCB0aGVtLCBhbmQgcGFzc2VkIHNhZmVseTsgZXZlbiBieSB0aGUgd2F5IHRoYXQgaGUgaGFkIG5vdCBnb25lIHdpdGggaGlzIGZlZXQuCldobyBoYXRoIHdyb3VnaHQgYW5kIGRvbmUgaXQsIGNhbGxpbmcgdGhlIGdlbmVyYXRpb25zIGZyb20gdGhlIGJlZ2lubmluZz8gSSB0aGUgTE9SRCwgdGhlIGZpcnN0LCBhbmQgd2l0aCB0aGUgbGFzdDsgSSBhbSBoZS4KVGhlIGlzbGVzIHNhdyBpdCwgYW5kIGZlYXJlZDsgdGhlIGVuZHMgb2YgdGhlIGVhcnRoIHdlcmUgYWZyYWlkLCBkcmV3IG5lYXIsIGFuZCBjYW1lLgpUaGV5IGhlbHBlZCBldmVyeSBvbmUgaGlzIG5laWdoYm91cjsgYW5kIGV2ZXJ5IG9uZSBzYWlkIHRvIGhpcyBicm90aGVyLCBCZSBvZiBnb29kIGNvdXJhZ2UuClNvIHRoZSBjYXJwZW50ZXIgZW5jb3VyYWdlZCB0aGUgZ29sZHNtaXRoLCBhbmQgaGUgdGhhdCBzbW9vdGhldGggd2l0aCB0aGUgaGFtbWVyIGhpbSB0aGF0IHNtb3RlIHRoZSBhbnZpbCwgc2F5aW5nLCBJdCBpcyByZWFkeSBmb3IgdGhlIHNvZGVyaW5nOiBhbmQgaGUgZmFzdGVuZWQgaXQgd2l0aCBuYWlscywgdGhhdCBpdCBzaG91bGQgbm90IGJlIG1vdmVkLgpCdXQgdGhvdSwgSXNyYWVsLCBhcnQgbXkgc2VydmFudCwgSmFjb2Igd2hvbSBJIGhhdmUgY2hvc2VuLCB0aGUgc2VlZCBvZiBBYnJhaGFtIG15IGZyaWVuZC4KVGhvdSB3aG9tIEkgaGF2ZSB0YWtlbiBmcm9tIHRoZSBlbmRzIG9mIHRoZSBlYXJ0aCwgYW5kIGNhbGxlZCB0aGVlIGZyb20gdGhlIGNoaWVmIG1lbiB0aGVyZW9mLCBhbmQgc2FpZCB1bnRvIHRoZWUsIFRob3UgYXJ0IG15IHNlcnZhbnQ7IEkgaGF2ZSBjaG9zZW4gdGhlZSwgYW5kIG5vdCBjYXN0IHRoZWUgYXdheS4KRmVhciB0aG91IG5vdDsgZm9yIEkgYW0gd2l0aCB0aGVlOiBiZSBub3QgZGlzbWF5ZWQ7IGZvciBJIGFtIHRoeSBHb2Q6IEkgd2lsbCBzdHJlbmd0aGVuIHRoZWU7IHllYSwgSSB3aWxsIGhlbHAgdGhlZTsgeWVhLCBJIHdpbGwgdXBob2xkIHRoZWUgd2l0aCB0aGUgcmlnaHQgaGFuZCBvZiBteSByaWdodGVvdXNuZXNzLgpCZWhvbGQsIGFsbCB0aGV5IHRoYXQgd2VyZSBpbmNlbnNlZCBhZ2FpbnN0IHRoZWUgc2hhbGwgYmUgYXNoYW1lZCBhbmQgY29uZm91bmRlZDogdGhleSBzaGFsbCBiZSBhcyBub3RoaW5nOyBhbmQgdGhleSB0aGF0IHN0cml2ZSB3aXRoIHRoZWUgc2hhbGwgcGVyaXNoLgpUaG91IHNoYWx0IHNlZWsgdGhlbSwgYW5kIHNoYWx0IG5vdCBmaW5kIHRoZW0sIGV2ZW4gdGhlbSB0aGF0IGNvbnRlbmRlZCB3aXRoIHRoZWU6IHRoZXkgdGhhdCB3YXIgYWdhaW5zdCB0aGVlIHNoYWxsIGJlIGFzIG5vdGhpbmcsIGFuZCBhcyBhIHRoaW5nIG9mIG5vdWdodC4KRm9yIEkgdGhlIExPUkQgdGh5IEdvZCB3aWxsIGhvbGQgdGh5IHJpZ2h0IGhhbmQsIHNheWluZyB1bnRvIHRoZWUsIEZlYXIgbm90OyBJIHdpbGwgaGVscCB0aGVlLgpGZWFyIG5vdCwgdGhvdSB3b3JtIEphY29iLCBhbmQgeWUgbWVuIG9mIElzcmFlbDsgSSB3aWxsIGhlbHAgdGhlZSwgc2FpdGggdGhlIExPUkQsIGFuZCB0aHkgcmVkZWVtZXIsIHRoZSBIb2x5IE9uZSBvZiBJc3JhZWwuCkJlaG9sZCwgSSB3aWxsIG1ha2UgdGhlZSBhIG5ldyBzaGFycCB0aHJlc2hpbmcgaW5zdHJ1bWVudCBoYXZpbmcgdGVldGg6IHRob3Ugc2hhbHQgdGhyZXNoIHRoZSBtb3VudGFpbnMsIGFuZCBiZWF0IHRoZW0gc21hbGwsIGFuZCBzaGFsdCBtYWtlIHRoZSBoaWxscyBhcyBjaGFmZi4KVGhvdSBzaGFsdCBmYW4gdGhlbSwgYW5kIHRoZSB3aW5kIHNoYWxsIGNhcnJ5IHRoZW0gYXdheSwgYW5kIHRoZSB3aGlybHdpbmQgc2hhbGwgc2NhdHRlciB0aGVtOiBhbmQgdGhvdSBzaGFsdCByZWpvaWNlIGluIHRoZSBMT1JELCBhbmQgc2hhbHQgZ2xvcnkgaW4gdGhlIEhvbHkgT25lIG9mIElzcmFlbC4KV2hlbiB0aGUgcG9vciBhbmQgbmVlZHkgc2VlayB3YXRlciwgYW5kIHRoZXJlIGlzIG5vbmUsIGFuZCB0aGVpciB0b25ndWUgZmFpbGV0aCBmb3IgdGhpcnN0LCBJIHRoZSBMT1JEIHdpbGwgaGVhciB0aGVtLCBJIHRoZSBHb2Qgb2YgSXNyYWVsIHdpbGwgbm90IGZvcnNha2UgdGhlbS4KSSB3aWxsIG9wZW4gcml2ZXJzIGluIGhpZ2ggcGxhY2VzLCBhbmQgZm91bnRhaW5zIGluIHRoZSBtaWRzdCBvZiB0aGUgdmFsbGV5czogSSB3aWxsIG1ha2UgdGhlIHdpbGRlcm5lc3MgYSBwb29sIG9mIHdhdGVyLCBhbmQgdGhlIGRyeSBsYW5kIHNwcmluZ3Mgb2Ygd2F0ZXIuCkkgd2lsbCBwbGFudCBpbiB0aGUgd2lsZGVybmVzcyB0aGUgY2VkYXIsIHRoZSBzaGl0dGFoIHRyZWUsIGFuZCB0aGUgbXlydGxlLCBhbmQgdGhlIG9pbCB0cmVlOyBJIHdpbGwgc2V0IGluIHRoZSBkZXNlcnQgdGhlIGZpciB0cmVlLCBhbmQgdGhlIHBpbmUsIGFuZCB0aGUgYm94IHRyZWUgdG9nZXRoZXI6ClRoYXQgdGhleSBtYXkgc2VlLCBhbmQga25vdywgYW5kIGNvbnNpZGVyLCBhbmQgdW5kZXJzdGFuZCB0b2dldGhlciwgdGhhdCB0aGUgaGFuZCBvZiB0aGUgTE9SRCBoYXRoIGRvbmUgdGhpcywgYW5kIHRoZSBIb2x5IE9uZSBvZiBJc3JhZWwgaGF0aCBjcmVhdGVkIGl0LgpQcm9kdWNlIHlvdXIgY2F1c2UsIHNhaXRoIHRoZSBMT1JEOyBicmluZyBmb3J0aCB5b3VyIHN0cm9uZyByZWFzb25zLCBzYWl0aCB0aGUgS2luZyBvZiBKYWNvYi4KTGV0IHRoZW0gYnJpbmcgdGhlbSBmb3J0aCwgYW5kIHNoZXcgdXMgd2hhdCBzaGFsbCBoYXBwZW46IGxldCB0aGVtIHNoZXcgdGhlIGZvcm1lciB0aGluZ3MsIHdoYXQgdGhleSBiZSwgdGhhdCB3ZSBtYXkgY29uc2lkZXIgdGhlbSwgYW5kIGtub3cgdGhlIGxhdHRlciBlbmQgb2YgdGhlbTsgb3IgZGVjbGFyZSB1cyB0aGluZ3MgZm9yIHRvIGNvbWUuClNoZXcgdGhlIHRoaW5ncyB0aGF0IGFyZSB0byBjb21lIGhlcmVhZnRlciwgdGhhdCB3ZSBtYXkga25vdyB0aGF0IHllIGFyZSBnb2RzOiB5ZWEsIGRvIGdvb2QsIG9yIGRvIGV2aWwsIHRoYXQgd2UgbWF5IGJlIGRpc21heWVkLCBhbmQgYmVob2xkIGl0IHRvZ2V0aGVyLgpCZWhvbGQsIHllIGFyZSBvZiBub3RoaW5nLCBhbmQgeW91ciB3b3JrIG9mIG5vdWdodDogYW4gYWJvbWluYXRpb24gaXMgaGUgdGhhdCBjaG9vc2V0aCB5b3UuCkkgaGF2ZSByYWlzZWQgdXAgb25lIGZyb20gdGhlIG5vcnRoLCBhbmQgaGUgc2hhbGwgY29tZTogZnJvbSB0aGUgcmlzaW5nIG9mIHRoZSBzdW4gc2hhbGwgaGUgY2FsbCB1cG9uIG15IG5hbWU6IGFuZCBoZSBzaGFsbCBjb21lIHVwb24gcHJpbmNlcyBhcyB1cG9uIG1vcnRlciwgYW5kIGFzIHRoZSBwb3R0ZXIgdHJlYWRldGggY2xheS4KV2hvIGhhdGggZGVjbGFyZWQgZnJvbSB0aGUgYmVnaW5uaW5nLCB0aGF0IHdlIG1heSBrbm93PyBhbmQgYmVmb3JldGltZSwgdGhhdCB3ZSBtYXkgc2F5LCBIZSBpcyByaWdodGVvdXM/IHllYSwgdGhlcmUgaXMgbm9uZSB0aGF0IHNoZXdldGgsIHllYSwgdGhlcmUgaXMgbm9uZSB0aGF0IGRlY2xhcmV0aCwgeWVhLCB0aGVyZSBpcyBub25lIHRoYXQgaGVhcmV0aCB5b3VyIHdvcmRzLgpUaGUgZmlyc3Qgc2hhbGwgc2F5IHRvIFppb24sIEJlaG9sZCwgYmVob2xkIHRoZW06IGFuZCBJIHdpbGwgZ2l2ZSB0byBKZXJ1c2FsZW0gb25lIHRoYXQgYnJpbmdldGggZ29vZCB0aWRpbmdzLgpGb3IgSSBiZWhlbGQsIGFuZCB0aGVyZSB3YXMgbm8gbWFuOyBldmVuIGFtb25nIHRoZW0sIGFuZCB0aGVyZSB3YXMgbm8gY291bnNlbGxvciwgdGhhdCwgd2hlbiBJIGFza2VkIG9mIHRoZW0sIGNvdWxkIGFuc3dlciBhIHdvcmQuCkJlaG9sZCwgdGhleSBhcmUgYWxsIHZhbml0eTsgdGhlaXIgd29ya3MgYXJlIG5vdGhpbmc6IHRoZWlyIG1vbHRlbiBpbWFnZXMgYXJlIHdpbmQgYW5kIGNvbmZ1c2lvbi4KQmVob2xkIG15IHNlcnZhbnQsIHdob20gSSB1cGhvbGQ7IG1pbmUgZWxlY3QsIGluIHdob20gbXkgc291bCBkZWxpZ2h0ZXRoOyBJIGhhdmUgcHV0IG15IHNwaXJpdCB1cG9uIGhpbTogaGUgc2hhbGwgYnJpbmcgZm9ydGgganVkZ21lbnQgdG8gdGhlIEdlbnRpbGVzLgpIZSBzaGFsbCBub3QgY3J5LCBub3IgbGlmdCB1cCwgbm9yIGNhdXNlIGhpcyB2b2ljZSB0byBiZSBoZWFyZCBpbiB0aGUgc3RyZWV0LgpBIGJydWlzZWQgcmVlZCBzaGFsbCBoZSBub3QgYnJlYWssIGFuZCB0aGUgc21va2luZyBmbGF4IHNoYWxsIGhlIG5vdCBxdWVuY2g6IGhlIHNoYWxsIGJyaW5nIGZvcnRoIGp1ZGdtZW50IHVudG8gdHJ1dGguCkhlIHNoYWxsIG5vdCBmYWlsIG5vciBiZSBkaXNjb3VyYWdlZCwgdGlsbCBoZSBoYXZlIHNldCBqdWRnbWVudCBpbiB0aGUgZWFydGg6IGFuZCB0aGUgaXNsZXMgc2hhbGwgd2FpdCBmb3IgaGlzIGxhdy4KVGh1cyBzYWl0aCBHb2QgdGhlIExPUkQsIGhlIHRoYXQgY3JlYXRlZCB0aGUgaGVhdmVucywgYW5kIHN0cmV0Y2hlZCB0aGVtIG91dDsgaGUgdGhhdCBzcHJlYWQgZm9ydGggdGhlIGVhcnRoLCBhbmQgdGhhdCB3aGljaCBjb21ldGggb3V0IG9mIGl0OyBoZSB0aGF0IGdpdmV0aCBicmVhdGggdW50byB0aGUgcGVvcGxlIHVwb24gaXQsIGFuZCBzcGlyaXQgdG8gdGhlbSB0aGF0IHdhbGsgdGhlcmVpbjoKSSB0aGUgTE9SRCBoYXZlIGNhbGxlZCB0aGVlIGluIHJpZ2h0ZW91c25lc3MsIGFuZCB3aWxsIGhvbGQgdGhpbmUgaGFuZCwgYW5kIHdpbGwga2VlcCB0aGVlLCBhbmQgZ2l2ZSB0aGVlIGZvciBhIGNvdmVuYW50IG9mIHRoZSBwZW9wbGUsIGZvciBhIGxpZ2h0IG9mIHRoZSBHZW50aWxlczsKVG8gb3BlbiB0aGUgYmxpbmQgZXllcywgdG8gYnJpbmcgb3V0IHRoZSBwcmlzb25lcnMgZnJvbSB0aGUgcHJpc29uLCBhbmQgdGhlbSB0aGF0IHNpdCBpbiBkYXJrbmVzcyBvdXQgb2YgdGhlIHByaXNvbiBob3VzZS4KSSBhbSB0aGUgTE9SRDogdGhhdCBpcyBteSBuYW1lOiBhbmQgbXkgZ2xvcnkgd2lsbCBJIG5vdCBnaXZlIHRvIGFub3RoZXIsIG5laXRoZXIgbXkgcHJhaXNlIHRvIGdyYXZlbiBpbWFnZXMuCkJlaG9sZCwgdGhlIGZvcm1lciB0aGluZ3MgYXJlIGNvbWUgdG8gcGFzcywgYW5kIG5ldyB0aGluZ3MgZG8gSSBkZWNsYXJlOiBiZWZvcmUgdGhleSBzcHJpbmcgZm9ydGggSSB0ZWxsIHlvdSBvZiB0aGVtLgpTaW5nIHVudG8gdGhlIExPUkQgYSBuZXcgc29uZywgYW5kIGhpcyBwcmFpc2UgZnJvbSB0aGUgZW5kIG9mIHRoZSBlYXJ0aCwgeWUgdGhhdCBnbyBkb3duIHRvIHRoZSBzZWEsIGFuZCBhbGwgdGhhdCBpcyB0aGVyZWluOyB0aGUgaXNsZXMsIGFuZCB0aGUgaW5oYWJpdGFudHMgdGhlcmVvZi4KTGV0IHRoZSB3aWxkZXJuZXNzIGFuZCB0aGUgY2l0aWVzIHRoZXJlb2YgbGlmdCB1cCB0aGVpciB2b2ljZSwgdGhlIHZpbGxhZ2VzIHRoYXQgS2VkYXIgZG90aCBpbmhhYml0OiBsZXQgdGhlIGluaGFiaXRhbnRzIG9mIHRoZSByb2NrIHNpbmcsIGxldCB0aGVtIHNob3V0IGZyb20gdGhlIHRvcCBvZiB0aGUgbW91bnRhaW5zLgpMZXQgdGhlbSBnaXZlIGdsb3J5IHVudG8gdGhlIExPUkQsIGFuZCBkZWNsYXJlIGhpcyBwcmFpc2UgaW4gdGhlIGlzbGFuZHMuClRoZSBMT1JEIHNoYWxsIGdvIGZvcnRoIGFzIGEgbWlnaHR5IG1hbiwgaGUgc2hhbGwgc3RpciB1cCBqZWFsb3VzeSBsaWtlIGEgbWFuIG9mIHdhcjogaGUgc2hhbGwgY3J5LCB5ZWEsIHJvYXI7IGhlIHNoYWxsIHByZXZhaWwgYWdhaW5zdCBoaXMgZW5lbWllcy4KSSBoYXZlIGxvbmcgdGltZSBob2xkZW4gbXkgcGVhY2U7IEkgaGF2ZSBiZWVuIHN0aWxsLCBhbmQgcmVmcmFpbmVkIG15c2VsZjogbm93IHdpbGwgSSBjcnkgbGlrZSBhIHRyYXZhaWxpbmcgd29tYW47IEkgd2lsbCBkZXN0cm95IGFuZCBkZXZvdXIgYXQgb25jZS4KSSB3aWxsIG1ha2Ugd2FzdGUgbW91bnRhaW5zIGFuZCBoaWxscywgYW5kIGRyeSB1cCBhbGwgdGhlaXIgaGVyYnM7IGFuZCBJIHdpbGwgbWFrZSB0aGUgcml2ZXJzIGlzbGFuZHMsIGFuZCBJIHdpbGwgZHJ5IHVwIHRoZSBwb29scy4KQW5kIEkgd2lsbCBicmluZyB0aGUgYmxpbmQgYnkgYSB3YXkgdGhhdCB0aGV5IGtuZXcgbm90OyBJIHdpbGwgbGVhZCB0aGVtIGluIHBhdGhzIHRoYXQgdGhleSBoYXZlIG5vdCBrbm93bjogSSB3aWxsIG1ha2UgZGFya25lc3MgbGlnaHQgYmVmb3JlIHRoZW0sIGFuZCBjcm9va2VkIHRoaW5ncyBzdHJhaWdodC4gVGhlc2UgdGhpbmdzIHdpbGwgSSBkbyB1bnRvIHRoZW0sIGFuZCBub3QgZm9yc2FrZSB0aGVtLgpUaGV5IHNoYWxsIGJlIHR1cm5lZCBiYWNrLCB0aGV5IHNoYWxsIGJlIGdyZWF0bHkgYXNoYW1lZCwgdGhhdCB0cnVzdCBpbiBncmF2ZW4gaW1hZ2VzLCB0aGF0IHNheSB0byB0aGUgbW9sdGVuIGltYWdlcywgWWUgYXJlIG91ciBnb2RzLgpIZWFyLCB5ZSBkZWFmOyBhbmQgbG9vaywgeWUgYmxpbmQsIHRoYXQgeWUgbWF5IHNlZS4KV2hvIGlzIGJsaW5kLCBidXQgbXkgc2VydmFudD8gb3IgZGVhZiwgYXMgbXkgbWVzc2VuZ2VyIHRoYXQgSSBzZW50PyB3aG8gaXMgYmxpbmQgYXMgaGUgdGhhdCBpcyBwZXJmZWN0LCBhbmQgYmxpbmQgYXMgdGhlIExPUkQncyBzZXJ2YW50PwpTZWVpbmcgbWFueSB0aGluZ3MsIGJ1dCB0aG91IG9ic2VydmVzdCBub3Q7IG9wZW5pbmcgdGhlIGVhcnMsIGJ1dCBoZSBoZWFyZXRoIG5vdC4KVGhlIExPUkQgaXMgd2VsbCBwbGVhc2VkIGZvciBoaXMgcmlnaHRlb3VzbmVzcycgc2FrZTsgaGUgd2lsbCBtYWduaWZ5IHRoZSBsYXcsIGFuZCBtYWtlIGl0IGhvbm91cmFibGUuCkJ1dCB0aGlzIGlzIGEgcGVvcGxlIHJvYmJlZCBhbmQgc3BvaWxlZDsgdGhleSBhcmUgYWxsIG9mIHRoZW0gc25hcmVkIGluIGhvbGVzLCBhbmQgdGhleSBhcmUgaGlkIGluIHByaXNvbiBob3VzZXM6IHRoZXkgYXJlIGZvciBhIHByZXksIGFuZCBub25lIGRlbGl2ZXJldGg7IGZvciBhIHNwb2lsLCBhbmQgbm9uZSBzYWl0aCwgUmVzdG9yZS4KV2hvIGFtb25nIHlvdSB3aWxsIGdpdmUgZWFyIHRvIHRoaXM/IHdobyB3aWxsIGhlYXJrZW4gYW5kIGhlYXIgZm9yIHRoZSB0aW1lIHRvIGNvbWU/CldobyBnYXZlIEphY29iIGZvciBhIHNwb2lsLCBhbmQgSXNyYWVsIHRvIHRoZSByb2JiZXJzPyBkaWQgbm90IHRoZSBMT1JELCBoZSBhZ2FpbnN0IHdob20gd2UgaGF2ZSBzaW5uZWQ/IGZvciB0aGV5IHdvdWxkIG5vdCB3YWxrIGluIGhpcyB3YXlzLCBuZWl0aGVyIHdlcmUgdGhleSBvYmVkaWVudCB1bnRvIGhpcyBsYXcuClRoZXJlZm9yZSBoZSBoYXRoIHBvdXJlZCB1cG9uIGhpbSB0aGUgZnVyeSBvZiBoaXMgYW5nZXIsIGFuZCB0aGUgc3RyZW5ndGggb2YgYmF0dGxlOiBhbmQgaXQgaGF0aCBzZXQgaGltIG9uIGZpcmUgcm91bmQgYWJvdXQsIHlldCBoZSBrbmV3IG5vdDsgYW5kIGl0IGJ1cm5lZCBoaW0sIHlldCBoZSBsYWlkIGl0IG5vdCB0byBoZWFydC4KQnV0IG5vdyB0aHVzIHNhaXRoIHRoZSBMT1JEIHRoYXQgY3JlYXRlZCB0aGVlLCBPIEphY29iLCBhbmQgaGUgdGhhdCBmb3JtZWQgdGhlZSwgTyBJc3JhZWwsIEZlYXIgbm90OiBmb3IgSSBoYXZlIHJlZGVlbWVkIHRoZWUsIEkgaGF2ZSBjYWxsZWQgdGhlZSBieSB0aHkgbmFtZTsgdGhvdSBhcnQgbWluZS4KV2hlbiB0aG91IHBhc3Nlc3QgdGhyb3VnaCB0aGUgd2F0ZXJzLCBJIHdpbGwgYmUgd2l0aCB0aGVlOyBhbmQgdGhyb3VnaCB0aGUgcml2ZXJzLCB0aGV5IHNoYWxsIG5vdCBvdmVyZmxvdyB0aGVlOiB3aGVuIHRob3Ugd2Fsa2VzdCB0aHJvdWdoIHRoZSBmaXJlLCB0aG91IHNoYWx0IG5vdCBiZSBidXJuZWQ7IG5laXRoZXIgc2hhbGwgdGhlIGZsYW1lIGtpbmRsZSB1cG9uIHRoZWUuCkZvciBJIGFtIHRoZSBMT1JEIHRoeSBHb2QsIHRoZSBIb2x5IE9uZSBvZiBJc3JhZWwsIHRoeSBTYXZpb3VyOiBJIGdhdmUgRWd5cHQgZm9yIHRoeSByYW5zb20sIEV0aGlvcGlhIGFuZCBTZWJhIGZvciB0aGVlLgpTaW5jZSB0aG91IHdhc3QgcHJlY2lvdXMgaW4gbXkgc2lnaHQsIHRob3UgaGFzdCBiZWVuIGhvbm91cmFibGUsIGFuZCBJIGhhdmUgbG92ZWQgdGhlZTogdGhlcmVmb3JlIHdpbGwgSSBnaXZlIG1lbiBmb3IgdGhlZSwgYW5kIHBlb3BsZSBmb3IgdGh5IGxpZmUuCkZlYXIgbm90OiBmb3IgSSBhbSB3aXRoIHRoZWU6IEkgd2lsbCBicmluZyB0aHkgc2VlZCBmcm9tIHRoZSBlYXN0LCBhbmQgZ2F0aGVyIHRoZWUgZnJvbSB0aGUgd2VzdDsKSSB3aWxsIHNheSB0byB0aGUgbm9ydGgsIEdpdmUgdXA7IGFuZCB0byB0aGUgc291dGgsIEtlZXAgbm90IGJhY2s6IGJyaW5nIG15IHNvbnMgZnJvbSBmYXIsIGFuZCBteSBkYXVnaHRlcnMgZnJvbSB0aGUgZW5kcyBvZiB0aGUgZWFydGg7CkV2ZW4gZXZlcnkgb25lIHRoYXQgaXMgY2FsbGVkIGJ5IG15IG5hbWU6IGZvciBJIGhhdmUgY3JlYXRlZCBoaW0gZm9yIG15IGdsb3J5LCBJIGhhdmUgZm9ybWVkIGhpbTsgeWVhLCBJIGhhdmUgbWFkZSBoaW0uCkJyaW5nIGZvcnRoIHRoZSBibGluZCBwZW9wbGUgdGhhdCBoYXZlIGV5ZXMsIGFuZCB0aGUgZGVhZiB0aGF0IGhhdmUgZWFycy4KTGV0IGFsbCB0aGUgbmF0aW9ucyBiZSBnYXRoZXJlZCB0b2dldGhlciwgYW5kIGxldCB0aGUgcGVvcGxlIGJlIGFzc2VtYmxlZDogd2hvIGFtb25nIHRoZW0gY2FuIGRlY2xhcmUgdGhpcywgYW5kIHNoZXcgdXMgZm9ybWVyIHRoaW5ncz8gbGV0IHRoZW0gYnJpbmcgZm9ydGggdGhlaXIgd2l0bmVzc2VzLCB0aGF0IHRoZXkgbWF5IGJlIGp1c3RpZmllZDogb3IgbGV0IHRoZW0gaGVhciwgYW5kIHNheSwgSXQgaXMgdHJ1dGguClllIGFyZSBteSB3aXRuZXNzZXMsIHNhaXRoIHRoZSBMT1JELCBhbmQgbXkgc2VydmFudCB3aG9tIEkgaGF2ZSBjaG9zZW46IHRoYXQgeWUgbWF5IGtub3cgYW5kIGJlbGlldmUgbWUsIGFuZCB1bmRlcnN0YW5kIHRoYXQgSSBhbSBoZTogYmVmb3JlIG1lIHRoZXJlIHdhcyBubyBHb2QgZm9ybWVkLCBuZWl0aGVyIHNoYWxsIHRoZXJlIGJlIGFmdGVyIG1lLgpJLCBldmVuIEksIGFtIHRoZSBMT1JEOyBhbmQgYmVzaWRlIG1lIHRoZXJlIGlzIG5vIHNhdmlvdXIuCkkgaGF2ZSBkZWNsYXJlZCwgYW5kIGhhdmUgc2F2ZWQsIGFuZCBJIGhhdmUgc2hld2VkLCB3aGVuIHRoZXJlIHdhcyBubyBzdHJhbmdlIGdvZCBhbW9uZyB5b3U6IHRoZXJlZm9yZSB5ZSBhcmUgbXkgd2l0bmVzc2VzLCBzYWl0aCB0aGUgTE9SRCwgdGhhdCBJIGFtIEdvZC4KWWVhLCBiZWZvcmUgdGhlIGRheSB3YXMgSSBhbSBoZTsgYW5kIHRoZXJlIGlzIG5vbmUgdGhhdCBjYW4gZGVsaXZlciBvdXQgb2YgbXkgaGFuZDogSSB3aWxsIHdvcmssIGFuZCB3aG8gc2hhbGwgbGV0IGl0PwpUaHVzIHNhaXRoIHRoZSBMT1JELCB5b3VyIHJlZGVlbWVyLCB0aGUgSG9seSBPbmUgb2YgSXNyYWVsOyBGb3IgeW91ciBzYWtlIEkgaGF2ZSBzZW50IHRvIEJhYnlsb24sIGFuZCBoYXZlIGJyb3VnaHQgZG93biBhbGwgdGhlaXIgbm9ibGVzLCBhbmQgdGhlIENoYWxkZWFucywgd2hvc2UgY3J5IGlzIGluIHRoZSBzaGlwcy4KSSBhbSB0aGUgTE9SRCwgeW91ciBIb2x5IE9uZSwgdGhlIGNyZWF0b3Igb2YgSXNyYWVsLCB5b3VyIEtpbmcuClRodXMgc2FpdGggdGhlIExPUkQsIHdoaWNoIG1ha2V0aCBhIHdheSBpbiB0aGUgc2VhLCBhbmQgYSBwYXRoIGluIHRoZSBtaWdodHkgd2F0ZXJzOwpXaGljaCBicmluZ2V0aCBmb3J0aCB0aGUgY2hhcmlvdCBhbmQgaG9yc2UsIHRoZSBhcm15IGFuZCB0aGUgcG93ZXI7IHRoZXkgc2hhbGwgbGllIGRvd24gdG9nZXRoZXIsIHRoZXkgc2hhbGwgbm90IHJpc2U6IHRoZXkgYXJlIGV4dGluY3QsIHRoZXkgYXJlIHF1ZW5jaGVkIGFzIHRvdy4KUmVtZW1iZXIgeWUgbm90IHRoZSBmb3JtZXIgdGhpbmdzLCBuZWl0aGVyIGNvbnNpZGVyIHRoZSB0aGluZ3Mgb2Ygb2xkLgpCZWhvbGQsIEkgd2lsbCBkbyBhIG5ldyB0aGluZzsgbm93IGl0IHNoYWxsIHNwcmluZyBmb3J0aDsgc2hhbGwgeWUgbm90IGtub3cgaXQ/IEkgd2lsbCBldmVuIG1ha2UgYSB3YXkgaW4gdGhlIHdpbGRlcm5lc3MsIGFuZCByaXZlcnMgaW4gdGhlIGRlc2VydC4KVGhlIGJlYXN0IG9mIHRoZSBmaWVsZCBzaGFsbCBob25vdXIgbWUsIHRoZSBkcmFnb25zIGFuZCB0aGUgb3dsczogYmVjYXVzZSBJIGdpdmUgd2F0ZXJzIGluIHRoZSB3aWxkZXJuZXNzLCBhbmQgcml2ZXJzIGluIHRoZSBkZXNlcnQsIHRvIGdpdmUgZHJpbmsgdG8gbXkgcGVvcGxlLCBteSBjaG9zZW4uClRoaXMgcGVvcGxlIGhhdmUgSSBmb3JtZWQgZm9yIG15c2VsZjsgdGhleSBzaGFsbCBzaGV3IGZvcnRoIG15IHByYWlzZS4KQnV0IHRob3UgaGFzdCBub3QgY2FsbGVkIHVwb24gbWUsIE8gSmFjb2I7IGJ1dCB0aG91IGhhc3QgYmVlbiB3ZWFyeSBvZiBtZSwgTyBJc3JhZWwuClRob3UgaGFzdCBub3QgYnJvdWdodCBtZSB0aGUgc21hbGwgY2F0dGxlIG9mIHRoeSBidXJudCBvZmZlcmluZ3M7IG5laXRoZXIgaGFzdCB0aG91IGhvbm91cmVkIG1lIHdpdGggdGh5IHNhY3JpZmljZXMuIEkgaGF2ZSBub3QgY2F1c2VkIHRoZWUgdG8gc2VydmUgd2l0aCBhbiBvZmZlcmluZywgbm9yIHdlYXJpZWQgdGhlZSB3aXRoIGluY2Vuc2UuClRob3UgaGFzdCBib3VnaHQgbWUgbm8gc3dlZXQgY2FuZSB3aXRoIG1vbmV5LCBuZWl0aGVyIGhhc3QgdGhvdSBmaWxsZWQgbWUgd2l0aCB0aGUgZmF0IG9mIHRoeSBzYWNyaWZpY2VzOiBidXQgdGhvdSBoYXN0IG1hZGUgbWUgdG8gc2VydmUgd2l0aCB0aHkgc2lucywgdGhvdSBoYXN0IHdlYXJpZWQgbWUgd2l0aCB0aGluZSBpbmlxdWl0aWVzLgpJLCBldmVuIEksIGFtIGhlIHRoYXQgYmxvdHRldGggb3V0IHRoeSB0cmFuc2dyZXNzaW9ucyBmb3IgbWluZSBvd24gc2FrZSwgYW5kIHdpbGwgbm90IHJlbWVtYmVyIHRoeSBzaW5zLgpQdXQgbWUgaW4gcmVtZW1icmFuY2U6IGxldCB1cyBwbGVhZCB0b2dldGhlcjogZGVjbGFyZSB0aG91LCB0aGF0IHRob3UgbWF5ZXN0IGJlIGp1c3RpZmllZC4KVGh5IGZpcnN0IGZhdGhlciBoYXRoIHNpbm5lZCwgYW5kIHRoeSB0ZWFjaGVycyBoYXZlIHRyYW5zZ3Jlc3NlZCBhZ2FpbnN0IG1lLgpUaGVyZWZvcmUgSSBoYXZlIHByb2ZhbmVkIHRoZSBwcmluY2VzIG9mIHRoZSBzYW5jdHVhcnksIGFuZCBoYXZlIGdpdmVuIEphY29iIHRvIHRoZSBjdXJzZSwgYW5kIElzcmFlbCB0byByZXByb2FjaGVzLgpZZXQgbm93IGhlYXIsIE8gSmFjb2IgbXkgc2VydmFudDsgYW5kIElzcmFlbCwgd2hvbSBJIGhhdmUgY2hvc2VuOgpUaHVzIHNhaXRoIHRoZSBMT1JEIHRoYXQgbWFkZSB0aGVlLCBhbmQgZm9ybWVkIHRoZWUgZnJvbSB0aGUgd29tYiwgd2hpY2ggd2lsbCBoZWxwIHRoZWU7IEZlYXIgbm90LCBPIEphY29iLCBteSBzZXJ2YW50OyBhbmQgdGhvdSwgSmVzdXJ1biwgd2hvbSBJIGhhdmUgY2hvc2VuLgpGb3IgSSB3aWxsIHBvdXIgd2F0ZXIgdXBvbiBoaW0gdGhhdCBpcyB0aGlyc3R5LCBhbmQgZmxvb2RzIHVwb24gdGhlIGRyeSBncm91bmQ6IEkgd2lsbCBwb3VyIG15IHNwaXJpdCB1cG9uIHRoeSBzZWVkLCBhbmQgbXkgYmxlc3NpbmcgdXBvbiB0aGluZSBvZmZzcHJpbmc6CkFuZCB0aGV5IHNoYWxsIHNwcmluZyB1cCBhcyBhbW9uZyB0aGUgZ3Jhc3MsIGFzIHdpbGxvd3MgYnkgdGhlIHdhdGVyIGNvdXJzZXMuCk9uZSBzaGFsbCBzYXksIEkgYW0gdGhlIExPUkQnczsgYW5kIGFub3RoZXIgc2hhbGwgY2FsbCBoaW1zZWxmIGJ5IHRoZSBuYW1lIG9mIEphY29iOyBhbmQgYW5vdGhlciBzaGFsbCBzdWJzY3JpYmUgd2l0aCBoaXMgaGFuZCB1bnRvIHRoZSBMT1JELCBhbmQgc3VybmFtZSBoaW1zZWxmIGJ5IHRoZSBuYW1lIG9mIElzcmFlbC4KVGh1cyBzYWl0aCB0aGUgTE9SRCB0aGUgS2luZyBvZiBJc3JhZWwsIGFuZCBoaXMgcmVkZWVtZXIgdGhlIExPUkQgb2YgaG9zdHM7IEkgYW0gdGhlIGZpcnN0LCBhbmQgSSBhbSB0aGUgbGFzdDsgYW5kIGJlc2lkZSBtZSB0aGVyZSBpcyBubyBHb2QuCkFuZCB3aG8sIGFzIEksIHNoYWxsIGNhbGwsIGFuZCBzaGFsbCBkZWNsYXJlIGl0LCBhbmQgc2V0IGl0IGluIG9yZGVyIGZvciBtZSwgc2luY2UgSSBhcHBvaW50ZWQgdGhlIGFuY2llbnQgcGVvcGxlPyBhbmQgdGhlIHRoaW5ncyB0aGF0IGFyZSBjb21pbmcsIGFuZCBzaGFsbCBjb21lLCBsZXQgdGhlbSBzaGV3IHVudG8gdGhlbS4KRmVhciB5ZSBub3QsIG5laXRoZXIgYmUgYWZyYWlkOiBoYXZlIG5vdCBJIHRvbGQgdGhlZSBmcm9tIHRoYXQgdGltZSwgYW5kIGhhdmUgZGVjbGFyZWQgaXQ/IHllIGFyZSBldmVuIG15IHdpdG5lc3Nlcy4gSXMgdGhlcmUgYSBHb2QgYmVzaWRlIG1lPyB5ZWEsIHRoZXJlIGlzIG5vIEdvZDsgSSBrbm93IG5vdCBhbnkuClRoZXkgdGhhdCBtYWtlIGEgZ3JhdmVuIGltYWdlIGFyZSBhbGwgb2YgdGhlbSB2YW5pdHk7IGFuZCB0aGVpciBkZWxlY3RhYmxlIHRoaW5ncyBzaGFsbCBub3QgcHJvZml0OyBhbmQgdGhleSBhcmUgdGhlaXIgb3duIHdpdG5lc3NlczsgdGhleSBzZWUgbm90LCBub3Iga25vdzsgdGhhdCB0aGV5IG1heSBiZSBhc2hhbWVkLgpXaG8gaGF0aCBmb3JtZWQgYSBnb2QsIG9yIG1vbHRlbiBhIGdyYXZlbiBpbWFnZSB0aGF0IGlzIHByb2ZpdGFibGUgZm9yIG5vdGhpbmc/CkJlaG9sZCwgYWxsIGhpcyBmZWxsb3dzIHNoYWxsIGJlIGFzaGFtZWQ6IGFuZCB0aGUgd29ya21lbiwgdGhleSBhcmUgb2YgbWVuOiBsZXQgdGhlbSBhbGwgYmUgZ2F0aGVyZWQgdG9nZXRoZXIsIGxldCB0aGVtIHN0YW5kIHVwOyB5ZXQgdGhleSBzaGFsbCBmZWFyLCBhbmQgdGhleSBzaGFsbCBiZSBhc2hhbWVkIHRvZ2V0aGVyLgpUaGUgc21pdGggd2l0aCB0aGUgdG9uZ3MgYm90aCB3b3JrZXRoIGluIHRoZSBjb2FscywgYW5kIGZhc2hpb25ldGggaXQgd2l0aCBoYW1tZXJzLCBhbmQgd29ya2V0aCBpdCB3aXRoIHRoZSBzdHJlbmd0aCBvZiBoaXMgYXJtczogeWVhLCBoZSBpcyBodW5ncnksIGFuZCBoaXMgc3RyZW5ndGggZmFpbGV0aDogaGUgZHJpbmtldGggbm8gd2F0ZXIsIGFuZCBpcyBmYWludC4KVGhlIGNhcnBlbnRlciBzdHJldGNoZXRoIG91dCBoaXMgcnVsZTsgaGUgbWFya2V0aCBpdCBvdXQgd2l0aCBhIGxpbmU7IGhlIGZpdHRldGggaXQgd2l0aCBwbGFuZXMsIGFuZCBoZSBtYXJrZXRoIGl0IG91dCB3aXRoIHRoZSBjb21wYXNzLCBhbmQgbWFrZXRoIGl0IGFmdGVyIHRoZSBmaWd1cmUgb2YgYSBtYW4sIGFjY29yZGluZyB0byB0aGUgYmVhdXR5IG9mIGEgbWFuOyB0aGF0IGl0IG1heSByZW1haW4gaW4gdGhlIGhvdXNlLgpIZSBoZXdldGggaGltIGRvd24gY2VkYXJzLCBhbmQgdGFrZXRoIHRoZSBjeXByZXNzIGFuZCB0aGUgb2FrLCB3aGljaCBoZSBzdHJlbmd0aGVuZXRoIGZvciBoaW1zZWxmIGFtb25nIHRoZSB0cmVlcyBvZiB0aGUgZm9yZXN0OiBoZSBwbGFudGV0aCBhbiBhc2gsIGFuZCB0aGUgcmFpbiBkb3RoIG5vdXJpc2ggaXQuClRoZW4gc2hhbGwgaXQgYmUgZm9yIGEgbWFuIHRvIGJ1cm46IGZvciBoZSB3aWxsIHRha2UgdGhlcmVvZiwgYW5kIHdhcm0gaGltc2VsZjsgeWVhLCBoZSBraW5kbGV0aCBpdCwgYW5kIGJha2V0aCBicmVhZDsgeWVhLCBoZSBtYWtldGggYSBnb2QsIGFuZCB3b3JzaGlwcGV0aCBpdDsgaGUgbWFrZXRoIGl0IGEgZ3JhdmVuIGltYWdlLCBhbmQgZmFsbGV0aCBkb3duIHRoZXJldG8uCkhlIGJ1cm5ldGggcGFydCB0aGVyZW9mIGluIHRoZSBmaXJlOyB3aXRoIHBhcnQgdGhlcmVvZiBoZSBlYXRldGggZmxlc2g7IGhlIHJvYXN0ZXRoIHJvYXN0LCBhbmQgaXMgc2F0aXNmaWVkOiB5ZWEsIGhlIHdhcm1ldGggaGltc2VsZiwgYW5kIHNhaXRoLCBBaGEsIEkgYW0gd2FybSwgSSBoYXZlIHNlZW4gdGhlIGZpcmU6CkFuZCB0aGUgcmVzaWR1ZSB0aGVyZW9mIGhlIG1ha2V0aCBhIGdvZCwgZXZlbiBoaXMgZ3JhdmVuIGltYWdlOiBoZSBmYWxsZXRoIGRvd24gdW50byBpdCwgYW5kIHdvcnNoaXBwZXRoIGl0LCBhbmQgcHJheWV0aCB1bnRvIGl0LCBhbmQgc2FpdGgsIERlbGl2ZXIgbWU7IGZvciB0aG91IGFydCBteSBnb2QuClRoZXkgaGF2ZSBub3Qga25vd24gbm9yIHVuZGVyc3Rvb2Q6IGZvciBoZSBoYXRoIHNodXQgdGhlaXIgZXllcywgdGhhdCB0aGV5IGNhbm5vdCBzZWU7IGFuZCB0aGVpciBoZWFydHMsIHRoYXQgdGhleSBjYW5ub3QgdW5kZXJzdGFuZC4KQW5kIG5vbmUgY29uc2lkZXJldGggaW4gaGlzIGhlYXJ0LCBuZWl0aGVyIGlzIHRoZXJlIGtub3dsZWRnZSBub3IgdW5kZXJzdGFuZGluZyB0byBzYXksIEkgaGF2ZSBidXJuZWQgcGFydCBvZiBpdCBpbiB0aGUgZmlyZTsgeWVhLCBhbHNvIEkgaGF2ZSBiYWtlZCBicmVhZCB1cG9uIHRoZSBjb2FscyB0aGVyZW9mOyBJIGhhdmUgcm9hc3RlZCBmbGVzaCwgYW5kIGVhdGVuIGl0OiBhbmQgc2hhbGwgSSBtYWtlIHRoZSByZXNpZHVlIHRoZXJlb2YgYW4gYWJvbWluYXRpb24/IHNoYWxsIEkgZmFsbCBkb3duIHRvIHRoZSBzdG9jayBvZiBhIHRyZWU/CkhlIGZlZWRldGggb24gYXNoZXM6IGEgZGVjZWl2ZWQgaGVhcnQgaGF0aCB0dXJuZWQgaGltIGFzaWRlLCB0aGF0IGhlIGNhbm5vdCBkZWxpdmVyIGhpcyBzb3VsLCBub3Igc2F5LCBJcyB0aGVyZSBub3QgYSBsaWUgaW4gbXkgcmlnaHQgaGFuZD8KUmVtZW1iZXIgdGhlc2UsIE8gSmFjb2IgYW5kIElzcmFlbDsgZm9yIHRob3UgYXJ0IG15IHNlcnZhbnQ6IEkgaGF2ZSBmb3JtZWQgdGhlZTsgdGhvdSBhcnQgbXkgc2VydmFudDogTyBJc3JhZWwsIHRob3Ugc2hhbHQgbm90IGJlIGZvcmdvdHRlbiBvZiBtZS4KSSBoYXZlIGJsb3R0ZWQgb3V0LCBhcyBhIHRoaWNrIGNsb3VkLCB0aHkgdHJhbnNncmVzc2lvbnMsIGFuZCwgYXMgYSBjbG91ZCwgdGh5IHNpbnM6IHJldHVybiB1bnRvIG1lOyBmb3IgSSBoYXZlIHJlZGVlbWVkIHRoZWUuClNpbmcsIE8geWUgaGVhdmVuczsgZm9yIHRoZSBMT1JEIGhhdGggZG9uZSBpdDogc2hvdXQsIHllIGxvd2VyIHBhcnRzIG9mIHRoZSBlYXJ0aDogYnJlYWsgZm9ydGggaW50byBzaW5naW5nLCB5ZSBtb3VudGFpbnMsIE8gZm9yZXN0LCBhbmQgZXZlcnkgdHJlZSB0aGVyZWluOiBmb3IgdGhlIExPUkQgaGF0aCByZWRlZW1lZCBKYWNvYiwgYW5kIGdsb3JpZmllZCBoaW1zZWxmIGluIElzcmFlbC4KVGh1cyBzYWl0aCB0aGUgTE9SRCwgdGh5IHJlZGVlbWVyLCBhbmQgaGUgdGhhdCBmb3JtZWQgdGhlZSBmcm9tIHRoZSB3b21iLCBJIGFtIHRoZSBMT1JEIHRoYXQgbWFrZXRoIGFsbCB0aGluZ3M7IHRoYXQgc3RyZXRjaGV0aCBmb3J0aCB0aGUgaGVhdmVucyBhbG9uZTsgdGhhdCBzcHJlYWRldGggYWJyb2FkIHRoZSBlYXJ0aCBieSBteXNlbGY7ClRoYXQgZnJ1c3RyYXRldGggdGhlIHRva2VucyBvZiB0aGUgbGlhcnMsIGFuZCBtYWtldGggZGl2aW5lcnMgbWFkOyB0aGF0IHR1cm5ldGggd2lzZSBtZW4gYmFja3dhcmQsIGFuZCBtYWtldGggdGhlaXIga25vd2xlZGdlIGZvb2xpc2g7ClRoYXQgY29uZmlybWV0aCB0aGUgd29yZCBvZiBoaXMgc2VydmFudCwgYW5kIHBlcmZvcm1ldGggdGhlIGNvdW5zZWwgb2YgaGlzIG1lc3NlbmdlcnM7IHRoYXQgc2FpdGggdG8gSmVydXNhbGVtLCBUaG91IHNoYWx0IGJlIGluaGFiaXRlZDsgYW5kIHRvIHRoZSBjaXRpZXMgb2YgSnVkYWgsIFllIHNoYWxsIGJlIGJ1aWx0LCBhbmQgSSB3aWxsIHJhaXNlIHVwIHRoZSBkZWNheWVkIHBsYWNlcyB0aGVyZW9mOgpUaGF0IHNhaXRoIHRvIHRoZSBkZWVwLCBCZSBkcnksIGFuZCBJIHdpbGwgZHJ5IHVwIHRoeSByaXZlcnM6ClRoYXQgc2FpdGggb2YgQ3lydXMsIEhlIGlzIG15IHNoZXBoZXJkLCBhbmQgc2hhbGwgcGVyZm9ybSBhbGwgbXkgcGxlYXN1cmU6IGV2ZW4gc2F5aW5nIHRvIEplcnVzYWxlbSwgVGhvdSBzaGFsdCBiZSBidWlsdDsgYW5kIHRvIHRoZSB0ZW1wbGUsIFRoeSBmb3VuZGF0aW9uIHNoYWxsIGJlIGxhaWQuClRodXMgc2FpdGggdGhlIExPUkQgdG8gaGlzIGFub2ludGVkLCB0byBDeXJ1cywgd2hvc2UgcmlnaHQgaGFuZCBJIGhhdmUgaG9sZGVuLCB0byBzdWJkdWUgbmF0aW9ucyBiZWZvcmUgaGltOyBhbmQgSSB3aWxsIGxvb3NlIHRoZSBsb2lucyBvZiBraW5ncywgdG8gb3BlbiBiZWZvcmUgaGltIHRoZSB0d28gbGVhdmVkIGdhdGVzOyBhbmQgdGhlIGdhdGVzIHNoYWxsIG5vdCBiZSBzaHV0OwpJIHdpbGwgZ28gYmVmb3JlIHRoZWUsIGFuZCBtYWtlIHRoZSBjcm9va2VkIHBsYWNlcyBzdHJhaWdodDogSSB3aWxsIGJyZWFrIGluIHBpZWNlcyB0aGUgZ2F0ZXMgb2YgYnJhc3MsIGFuZCBjdXQgaW4gc3VuZGVyIHRoZSBiYXJzIG9mIGlyb246CkFuZCBJIHdpbGwgZ2l2ZSB0aGVlIHRoZSB0cmVhc3VyZXMgb2YgZGFya25lc3MsIGFuZCBoaWRkZW4gcmljaGVzIG9mIHNlY3JldCBwbGFjZXMsIHRoYXQgdGhvdSBtYXllc3Qga25vdyB0aGF0IEksIHRoZSBMT1JELCB3aGljaCBjYWxsIHRoZWUgYnkgdGh5IG5hbWUsIGFtIHRoZSBHb2Qgb2YgSXNyYWVsLgpGb3IgSmFjb2IgbXkgc2VydmFudCdzIHNha2UsIGFuZCBJc3JhZWwgbWluZSBlbGVjdCwgSSBoYXZlIGV2ZW4gY2FsbGVkIHRoZWUgYnkgdGh5IG5hbWU6IEkgaGF2ZSBzdXJuYW1lZCB0aGVlLCB0aG91Z2ggdGhvdSBoYXN0IG5vdCBrbm93biBtZS4KSSBhbSB0aGUgTE9SRCwgYW5kIHRoZXJlIGlzIG5vbmUgZWxzZSwgdGhlcmUgaXMgbm8gR29kIGJlc2lkZSBtZTogSSBnaXJkZWQgdGhlZSwgdGhvdWdoIHRob3UgaGFzdCBub3Qga25vd24gbWU6ClRoYXQgdGhleSBtYXkga25vdyBmcm9tIHRoZSByaXNpbmcgb2YgdGhlIHN1biwgYW5kIGZyb20gdGhlIHdlc3QsIHRoYXQgdGhlcmUgaXMgbm9uZSBiZXNpZGUgbWUuIEkgYW0gdGhlIExPUkQsIGFuZCB0aGVyZSBpcyBub25lIGVsc2UuCkkgZm9ybSB0aGUgbGlnaHQsIGFuZCBjcmVhdGUgZGFya25lc3M6IEkgbWFrZSBwZWFjZSwgYW5kIGNyZWF0ZSBldmlsOiBJIHRoZSBMT1JEIGRvIGFsbCB0aGVzZSB0aGluZ3MuCkRyb3AgZG93biwgeWUgaGVhdmVucywgZnJvbSBhYm92ZSwgYW5kIGxldCB0aGUgc2tpZXMgcG91ciBkb3duIHJpZ2h0ZW91c25lc3M6IGxldCB0aGUgZWFydGggb3BlbiwgYW5kIGxldCB0aGVtIGJyaW5nIGZvcnRoIHNhbHZhdGlvbiwgYW5kIGxldCByaWdodGVvdXNuZXNzIHNwcmluZyB1cCB0b2dldGhlcjsgSSB0aGUgTE9SRCBoYXZlIGNyZWF0ZWQgaXQuCldvZSB1bnRvIGhpbSB0aGF0IHN0cml2ZXRoIHdpdGggaGlzIE1ha2VyISBMZXQgdGhlIHBvdHNoZXJkIHN0cml2ZSB3aXRoIHRoZSBwb3RzaGVyZHMgb2YgdGhlIGVhcnRoLiBTaGFsbCB0aGUgY2xheSBzYXkgdG8gaGltIHRoYXQgZmFzaGlvbmV0aCBpdCwgV2hhdCBtYWtlc3QgdGhvdT8gb3IgdGh5IHdvcmssIEhlIGhhdGggbm8gaGFuZHM/CldvZSB1bnRvIGhpbSB0aGF0IHNhaXRoIHVudG8gaGlzIGZhdGhlciwgV2hhdCBiZWdldHRlc3QgdGhvdT8gb3IgdG8gdGhlIHdvbWFuLCBXaGF0IGhhc3QgdGhvdSBicm91Z2h0IGZvcnRoPwpUaHVzIHNhaXRoIHRoZSBMT1JELCB0aGUgSG9seSBPbmUgb2YgSXNyYWVsLCBhbmQgaGlzIE1ha2VyLCBBc2sgbWUgb2YgdGhpbmdzIHRvIGNvbWUgY29uY2VybmluZyBteSBzb25zLCBhbmQgY29uY2VybmluZyB0aGUgd29yayBvZiBteSBoYW5kcyBjb21tYW5kIHllIG1lLgpJIGhhdmUgbWFkZSB0aGUgZWFydGgsIGFuZCBjcmVhdGVkIG1hbiB1cG9uIGl0OiBJLCBldmVuIG15IGhhbmRzLCBoYXZlIHN0cmV0Y2hlZCBvdXQgdGhlIGhlYXZlbnMsIGFuZCBhbGwgdGhlaXIgaG9zdCBoYXZlIEkgY29tbWFuZGVkLgpJIGhhdmUgcmFpc2VkIGhpbSB1cCBpbiByaWdodGVvdXNuZXNzLCBhbmQgSSB3aWxsIGRpcmVjdCBhbGwgaGlzIHdheXM6IGhlIHNoYWxsIGJ1aWxkIG15IGNpdHksIGFuZCBoZSBzaGFsbCBsZXQgZ28gbXkgY2FwdGl2ZXMsIG5vdCBmb3IgcHJpY2Ugbm9yIHJld2FyZCwgc2FpdGggdGhlIExPUkQgb2YgaG9zdHMuClRodXMgc2FpdGggdGhlIExPUkQsIFRoZSBsYWJvdXIgb2YgRWd5cHQsIGFuZCBtZXJjaGFuZGlzZSBvZiBFdGhpb3BpYSBhbmQgb2YgdGhlIFNhYmVhbnMsIG1lbiBvZiBzdGF0dXJlLCBzaGFsbCBjb21lIG92ZXIgdW50byB0aGVlLCBhbmQgdGhleSBzaGFsbCBiZSB0aGluZTogdGhleSBzaGFsbCBjb21lIGFmdGVyIHRoZWU7IGluIGNoYWlucyB0aGV5IHNoYWxsIGNvbWUgb3ZlciwgYW5kIHRoZXkgc2hhbGwgZmFsbCBkb3duIHVudG8gdGhlZSwgdGhleSBzaGFsbCBtYWtlIHN1cHBsaWNhdGlvbiB1bnRvIHRoZWUsIHNheWluZywgU3VyZWx5IEdvZCBpcyBpbiB0aGVlOyBhbmQgdGhlcmUgaXMgbm9uZSBlbHNlLCB0aGVyZSBpcyBubyBHb2QuClZlcmlseSB0aG91IGFydCBhIEdvZCB0aGF0IGhpZGVzdCB0aHlzZWxmLCBPIEdvZCBvZiBJc3JhZWwsIHRoZSBTYXZpb3VyLgpUaGV5IHNoYWxsIGJlIGFzaGFtZWQsIGFuZCBhbHNvIGNvbmZvdW5kZWQsIGFsbCBvZiB0aGVtOiB0aGV5IHNoYWxsIGdvIHRvIGNvbmZ1c2lvbiB0b2dldGhlciB0aGF0IGFyZSBtYWtlcnMgb2YgaWRvbHMuCkJ1dCBJc3JhZWwgc2hhbGwgYmUgc2F2ZWQgaW4gdGhlIExPUkQgd2l0aCBhbiBldmVybGFzdGluZyBzYWx2YXRpb246IHllIHNoYWxsIG5vdCBiZSBhc2hhbWVkIG5vciBjb25mb3VuZGVkIHdvcmxkIHdpdGhvdXQgZW5kLgpGb3IgdGh1cyBzYWl0aCB0aGUgTE9SRCB0aGF0IGNyZWF0ZWQgdGhlIGhlYXZlbnM7IEdvZCBoaW1zZWxmIHRoYXQgZm9ybWVkIHRoZSBlYXJ0aCBhbmQgbWFkZSBpdDsgaGUgaGF0aCBlc3RhYmxpc2hlZCBpdCwgaGUgY3JlYXRlZCBpdCBub3QgaW4gdmFpbiwgaGUgZm9ybWVkIGl0IHRvIGJlIGluaGFiaXRlZDogSSBhbSB0aGUgTE9SRDsgYW5kIHRoZXJlIGlzIG5vbmUgZWxzZS4KSSBoYXZlIG5vdCBzcG9rZW4gaW4gc2VjcmV0LCBpbiBhIGRhcmsgcGxhY2Ugb2YgdGhlIGVhcnRoOiBJIHNhaWQgbm90IHVudG8gdGhlIHNlZWQgb2YgSmFjb2IsIFNlZWsgeWUgbWUgaW4gdmFpbjogSSB0aGUgTE9SRCBzcGVhayByaWdodGVvdXNuZXNzLCBJIGRlY2xhcmUgdGhpbmdzIHRoYXQgYXJlIHJpZ2h0LgpBc3NlbWJsZSB5b3Vyc2VsdmVzIGFuZCBjb21lOyBkcmF3IG5lYXIgdG9nZXRoZXIsIHllIHRoYXQgYXJlIGVzY2FwZWQgb2YgdGhlIG5hdGlvbnM6IHRoZXkgaGF2ZSBubyBrbm93bGVkZ2UgdGhhdCBzZXQgdXAgdGhlIHdvb2Qgb2YgdGhlaXIgZ3JhdmVuIGltYWdlLCBhbmQgcHJheSB1bnRvIGEgZ29kIHRoYXQgY2Fubm90IHNhdmUuClRlbGwgeWUsIGFuZCBicmluZyB0aGVtIG5lYXI7IHllYSwgbGV0IHRoZW0gdGFrZSBjb3Vuc2VsIHRvZ2V0aGVyOiB3aG8gaGF0aCBkZWNsYXJlZCB0aGlzIGZyb20gYW5jaWVudCB0aW1lPyB3aG8gaGF0aCB0b2xkIGl0IGZyb20gdGhhdCB0aW1lPyBoYXZlIG5vdCBJIHRoZSBMT1JEPyBhbmQgdGhlcmUgaXMgbm8gR29kIGVsc2UgYmVzaWRlIG1lOyBhIGp1c3QgR29kIGFuZCBhIFNhdmlvdXI7IHRoZXJlIGlzIG5vbmUgYmVzaWRlIG1lLgpMb29rIHVudG8gbWUsIGFuZCBiZSB5ZSBzYXZlZCwgYWxsIHRoZSBlbmRzIG9mIHRoZSBlYXJ0aDogZm9yIEkgYW0gR29kLCBhbmQgdGhlcmUgaXMgbm9uZSBlbHNlLgpJIGhhdmUgc3dvcm4gYnkgbXlzZWxmLCB0aGUgd29yZCBpcyBnb25lIG91dCBvZiBteSBtb3V0aCBpbiByaWdodGVvdXNuZXNzLCBhbmQgc2hhbGwgbm90IHJldHVybiwgVGhhdCB1bnRvIG1lIGV2ZXJ5IGtuZWUgc2hhbGwgYm93LCBldmVyeSB0b25ndWUgc2hhbGwgc3dlYXIuClN1cmVseSwgc2hhbGwgb25lIHNheSwgaW4gdGhlIExPUkQgaGF2ZSBJIHJpZ2h0ZW91c25lc3MgYW5kIHN0cmVuZ3RoOiBldmVuIHRvIGhpbSBzaGFsbCBtZW4gY29tZTsgYW5kIGFsbCB0aGF0IGFyZSBpbmNlbnNlZCBhZ2FpbnN0IGhpbSBzaGFsbCBiZSBhc2hhbWVkLgpJbiB0aGUgTE9SRCBzaGFsbCBhbGwgdGhlIHNlZWQgb2YgSXNyYWVsIGJlIGp1c3RpZmllZCwgYW5kIHNoYWxsIGdsb3J5LgpCZWwgYm93ZXRoIGRvd24sIE5lYm8gc3Rvb3BldGgsIHRoZWlyIGlkb2xzIHdlcmUgdXBvbiB0aGUgYmVhc3RzLCBhbmQgdXBvbiB0aGUgY2F0dGxlOiB5b3VyIGNhcnJpYWdlcyB3ZXJlIGhlYXZ5IGxvYWRlbjsgdGhleSBhcmUgYSBidXJkZW4gdG8gdGhlIHdlYXJ5IGJlYXN0LgpUaGV5IHN0b29wLCB0aGV5IGJvdyBkb3duIHRvZ2V0aGVyOyB0aGV5IGNvdWxkIG5vdCBkZWxpdmVyIHRoZSBidXJkZW4sIGJ1dCB0aGVtc2VsdmVzIGFyZSBnb25lIGludG8gY2FwdGl2aXR5LgpIZWFya2VuIHVudG8gbWUsIE8gaG91c2Ugb2YgSmFjb2IsIGFuZCBhbGwgdGhlIHJlbW5hbnQgb2YgdGhlIGhvdXNlIG9mIElzcmFlbCwgd2hpY2ggYXJlIGJvcm5lIGJ5IG1lIGZyb20gdGhlIGJlbGx5LCB3aGljaCBhcmUgY2FycmllZCBmcm9tIHRoZSB3b21iOgpBbmQgZXZlbiB0byB5b3VyIG9sZCBhZ2UgSSBhbSBoZTsgYW5kIGV2ZW4gdG8gaG9hciBoYWlycyB3aWxsIEkgY2FycnkgeW91OiBJIGhhdmUgbWFkZSwgYW5kIEkgd2lsbCBiZWFyOyBldmVuIEkgd2lsbCBjYXJyeSwgYW5kIHdpbGwgZGVsaXZlciB5b3UuClRvIHdob20gd2lsbCB5ZSBsaWtlbiBtZSwgYW5kIG1ha2UgbWUgZXF1YWwsIGFuZCBjb21wYXJlIG1lLCB0aGF0IHdlIG1heSBiZSBsaWtlPwpUaGV5IGxhdmlzaCBnb2xkIG91dCBvZiB0aGUgYmFnLCBhbmQgd2VpZ2ggc2lsdmVyIGluIHRoZSBiYWxhbmNlLCBhbmQgaGlyZSBhIGdvbGRzbWl0aDsgYW5kIGhlIG1ha2V0aCBpdCBhIGdvZDogdGhleSBmYWxsIGRvd24sIHllYSwgdGhleSB3b3JzaGlwLgpUaGV5IGJlYXIgaGltIHVwb24gdGhlIHNob3VsZGVyLCB0aGV5IGNhcnJ5IGhpbSwgYW5kIHNldCBoaW0gaW4gaGlzIHBsYWNlLCBhbmQgaGUgc3RhbmRldGg7IGZyb20gaGlzIHBsYWNlIHNoYWxsIGhlIG5vdCByZW1vdmU6IHllYSwgb25lIHNoYWxsIGNyeSB1bnRvIGhpbSwgeWV0IGNhbiBoZSBub3QgYW5zd2VyLCBub3Igc2F2ZSBoaW0gb3V0IG9mIGhpcyB0cm91YmxlLgpSZW1lbWJlciB0aGlzLCBhbmQgc2hldyB5b3Vyc2VsdmVzIG1lbjogYnJpbmcgaXQgYWdhaW4gdG8gbWluZCwgTyB5ZSB0cmFuc2dyZXNzb3JzLgpSZW1lbWJlciB0aGUgZm9ybWVyIHRoaW5ncyBvZiBvbGQ6IGZvciBJIGFtIEdvZCwgYW5kIHRoZXJlIGlzIG5vbmUgZWxzZTsgSSBhbSBHb2QsIGFuZCB0aGVyZSBpcyBub25lIGxpa2UgbWUsCkRlY2xhcmluZyB0aGUgZW5kIGZyb20gdGhlIGJlZ2lubmluZywgYW5kIGZyb20gYW5jaWVudCB0aW1lcyB0aGUgdGhpbmdzIHRoYXQgYXJlIG5vdCB5ZXQgZG9uZSwgc2F5aW5nLCBNeSBjb3Vuc2VsIHNoYWxsIHN0YW5kLCBhbmQgSSB3aWxsIGRvIGFsbCBteSBwbGVhc3VyZToKQ2FsbGluZyBhIHJhdmVub3VzIGJpcmQgZnJvbSB0aGUgZWFzdCwgdGhlIG1hbiB0aGF0IGV4ZWN1dGV0aCBteSBjb3Vuc2VsIGZyb20gYSBmYXIgY291bnRyeTogeWVhLCBJIGhhdmUgc3Bva2VuIGl0LCBJIHdpbGwgYWxzbyBicmluZyBpdCB0byBwYXNzOyBJIGhhdmUgcHVycG9zZWQgaXQsIEkgd2lsbCBhbHNvIGRvIGl0LgpIZWFya2VuIHVudG8gbWUsIHllIHN0b3V0aGVhcnRlZCwgdGhhdCBhcmUgZmFyIGZyb20gcmlnaHRlb3VzbmVzczoKSSBicmluZyBuZWFyIG15IHJpZ2h0ZW91c25lc3M7IGl0IHNoYWxsIG5vdCBiZSBmYXIgb2ZmLCBhbmQgbXkgc2FsdmF0aW9uIHNoYWxsIG5vdCB0YXJyeTogYW5kIEkgd2lsbCBwbGFjZSBzYWx2YXRpb24gaW4gWmlvbiBmb3IgSXNyYWVsIG15IGdsb3J5LgpDb21lIGRvd24sIGFuZCBzaXQgaW4gdGhlIGR1c3QsIE8gdmlyZ2luIGRhdWdodGVyIG9mIEJhYnlsb24sIHNpdCBvbiB0aGUgZ3JvdW5kOiB0aGVyZSBpcyBubyB0aHJvbmUsIE8gZGF1Z2h0ZXIgb2YgdGhlIENoYWxkZWFuczogZm9yIHRob3Ugc2hhbHQgbm8gbW9yZSBiZSBjYWxsZWQgdGVuZGVyIGFuZCBkZWxpY2F0ZS4KVGFrZSB0aGUgbWlsbHN0b25lcywgYW5kIGdyaW5kIG1lYWw6IHVuY292ZXIgdGh5IGxvY2tzLCBtYWtlIGJhcmUgdGhlIGxlZywgdW5jb3ZlciB0aGUgdGhpZ2gsIHBhc3Mgb3ZlciB0aGUgcml2ZXJzLgpUaHkgbmFrZWRuZXNzIHNoYWxsIGJlIHVuY292ZXJlZCwgeWVhLCB0aHkgc2hhbWUgc2hhbGwgYmUgc2VlbjogSSB3aWxsIHRha2UgdmVuZ2VhbmNlLCBhbmQgSSB3aWxsIG5vdCBtZWV0IHRoZWUgYXMgYSBtYW4uCkFzIGZvciBvdXIgcmVkZWVtZXIsIHRoZSBMT1JEIG9mIGhvc3RzIGlzIGhpcyBuYW1lLCB0aGUgSG9seSBPbmUgb2YgSXNyYWVsLgpTaXQgdGhvdSBzaWxlbnQsIGFuZCBnZXQgdGhlZSBpbnRvIGRhcmtuZXNzLCBPIGRhdWdodGVyIG9mIHRoZSBDaGFsZGVhbnM6IGZvciB0aG91IHNoYWx0IG5vIG1vcmUgYmUgY2FsbGVkLCBUaGUgbGFkeSBvZiBraW5nZG9tcy4KSSB3YXMgd3JvdGggd2l0aCBteSBwZW9wbGUsIEkgaGF2ZSBwb2xsdXRlZCBtaW5lIGluaGVyaXRhbmNlLCBhbmQgZ2l2ZW4gdGhlbSBpbnRvIHRoaW5lIGhhbmQ6IHRob3UgZGlkc3Qgc2hldyB0aGVtIG5vIG1lcmN5OyB1cG9uIHRoZSBhbmNpZW50IGhhc3QgdGhvdSB2ZXJ5IGhlYXZpbHkgbGFpZCB0aHkgeW9rZS4KQW5kIHRob3Ugc2FpZHN0LCBJIHNoYWxsIGJlIGEgbGFkeSBmb3IgZXZlcjogc28gdGhhdCB0aG91IGRpZHN0IG5vdCBsYXkgdGhlc2UgdGhpbmdzIHRvIHRoeSBoZWFydCwgbmVpdGhlciBkaWRzdCByZW1lbWJlciB0aGUgbGF0dGVyIGVuZCBvZiBpdC4KVGhlcmVmb3JlIGhlYXIgbm93IHRoaXMsIHRob3UgdGhhdCBhcnQgZ2l2ZW4gdG8gcGxlYXN1cmVzLCB0aGF0IGR3ZWxsZXN0IGNhcmVsZXNzbHksIHRoYXQgc2F5ZXN0IGluIHRoaW5lIGhlYXJ0LCBJIGFtLCBhbmQgbm9uZSBlbHNlIGJlc2lkZSBtZTsgSSBzaGFsbCBub3Qgc2l0IGFzIGEgd2lkb3csIG5laXRoZXIgc2hhbGwgSSBrbm93IHRoZSBsb3NzIG9mIGNoaWxkcmVuOgpCdXQgdGhlc2UgdHdvIHRoaW5ncyBzaGFsbCBjb21lIHRvIHRoZWUgaW4gYSBtb21lbnQgaW4gb25lIGRheSwgdGhlIGxvc3Mgb2YgY2hpbGRyZW4sIGFuZCB3aWRvd2hvb2Q6IHRoZXkgc2hhbGwgY29tZSB1cG9uIHRoZWUgaW4gdGhlaXIgcGVyZmVjdGlvbiBmb3IgdGhlIG11bHRpdHVkZSBvZiB0aHkgc29yY2VyaWVzLCBhbmQgZm9yIHRoZSBncmVhdCBhYnVuZGFuY2Ugb2YgdGhpbmUgZW5jaGFudG1lbnRzLgpGb3IgdGhvdSBoYXN0IHRydXN0ZWQgaW4gdGh5IHdpY2tlZG5lc3M6IHRob3UgaGFzdCBzYWlkLCBOb25lIHNlZXRoIG1lLiBUaHkgd2lzZG9tIGFuZCB0aHkga25vd2xlZGdlLCBpdCBoYXRoIHBlcnZlcnRlZCB0aGVlOyBhbmQgdGhvdSBoYXN0IHNhaWQgaW4gdGhpbmUgaGVhcnQsIEkgYW0sIGFuZCBub25lIGVsc2UgYmVzaWRlIG1lLgpUaGVyZWZvcmUgc2hhbGwgZXZpbCBjb21lIHVwb24gdGhlZTsgdGhvdSBzaGFsdCBub3Qga25vdyBmcm9tIHdoZW5jZSBpdCByaXNldGg6IGFuZCBtaXNjaGllZiBzaGFsbCBmYWxsIHVwb24gdGhlZTsgdGhvdSBzaGFsdCBub3QgYmUgYWJsZSB0byBwdXQgaXQgb2ZmOiBhbmQgZGVzb2xhdGlvbiBzaGFsbCBjb21lIHVwb24gdGhlZSBzdWRkZW5seSwgd2hpY2ggdGhvdSBzaGFsdCBub3Qga25vdy4KU3RhbmQgbm93IHdpdGggdGhpbmUgZW5jaGFudG1lbnRzLCBhbmQgd2l0aCB0aGUgbXVsdGl0dWRlIG9mIHRoeSBzb3JjZXJpZXMsIHdoZXJlaW4gdGhvdSBoYXN0IGxhYm91cmVkIGZyb20gdGh5IHlvdXRoOyBpZiBzbyBiZSB0aG91IHNoYWx0IGJlIGFibGUgdG8gcHJvZml0LCBpZiBzbyBiZSB0aG91IG1heWVzdCBwcmV2YWlsLgpUaG91IGFydCB3ZWFyaWVkIGluIHRoZSBtdWx0aXR1ZGUgb2YgdGh5IGNvdW5zZWxzLiBMZXQgbm93IHRoZSBhc3Ryb2xvZ2VycywgdGhlIHN0YXJnYXplcnMsIHRoZSBtb250aGx5IHByb2dub3N0aWNhdG9ycywgc3RhbmQgdXAsIGFuZCBzYXZlIHRoZWUgZnJvbSB0aGVzZSB0aGluZ3MgdGhhdCBzaGFsbCBjb21lIHVwb24gdGhlZS4KQmVob2xkLCB0aGV5IHNoYWxsIGJlIGFzIHN0dWJibGU7IHRoZSBmaXJlIHNoYWxsIGJ1cm4gdGhlbTsgdGhleSBzaGFsbCBub3QgZGVsaXZlciB0aGVtc2VsdmVzIGZyb20gdGhlIHBvd2VyIG9mIHRoZSBmbGFtZTogdGhlcmUgc2hhbGwgbm90IGJlIGEgY29hbCB0byB3YXJtIGF0LCBub3IgZmlyZSB0byBzaXQgYmVmb3JlIGl0LgpUaHVzIHNoYWxsIHRoZXkgYmUgdW50byB0aGVlIHdpdGggd2hvbSB0aG91IGhhc3QgbGFib3VyZWQsIGV2ZW4gdGh5IG1lcmNoYW50cywgZnJvbSB0aHkgeW91dGg6IHRoZXkgc2hhbGwgd2FuZGVyIGV2ZXJ5IG9uZSB0byBoaXMgcXVhcnRlcjsgbm9uZSBzaGFsbCBzYXZlIHRoZWUuCkhlYXIgeWUgdGhpcywgTyBob3VzZSBvZiBKYWNvYiwgd2hpY2ggYXJlIGNhbGxlZCBieSB0aGUgbmFtZSBvZiBJc3JhZWwsIGFuZCBhcmUgY29tZSBmb3J0aCBvdXQgb2YgdGhlIHdhdGVycyBvZiBKdWRhaCwgd2hpY2ggc3dlYXIgYnkgdGhlIG5hbWUgb2YgdGhlIExPUkQsIGFuZCBtYWtlIG1lbnRpb24gb2YgdGhlIEdvZCBvZiBJc3JhZWwsIGJ1dCBub3QgaW4gdHJ1dGgsIG5vciBpbiByaWdodGVvdXNuZXNzLgpGb3IgdGhleSBjYWxsIHRoZW1zZWx2ZXMgb2YgdGhlIGhvbHkgY2l0eSwgYW5kIHN0YXkgdGhlbXNlbHZlcyB1cG9uIHRoZSBHb2Qgb2YgSXNyYWVsOyBUaGUgTE9SRCBvZiBob3N0cyBpcyBoaXMgbmFtZS4KSSBoYXZlIGRlY2xhcmVkIHRoZSBmb3JtZXIgdGhpbmdzIGZyb20gdGhlIGJlZ2lubmluZzsgYW5kIHRoZXkgd2VudCBmb3J0aCBvdXQgb2YgbXkgbW91dGgsIGFuZCBJIHNoZXdlZCB0aGVtOyBJIGRpZCB0aGVtIHN1ZGRlbmx5LCBhbmQgdGhleSBjYW1lIHRvIHBhc3MuCkJlY2F1c2UgSSBrbmV3IHRoYXQgdGhvdSBhcnQgb2JzdGluYXRlLCBhbmQgdGh5IG5lY2sgaXMgYW4gaXJvbiBzaW5ldywgYW5kIHRoeSBicm93IGJyYXNzOwpJIGhhdmUgZXZlbiBmcm9tIHRoZSBiZWdpbm5pbmcgZGVjbGFyZWQgaXQgdG8gdGhlZTsgYmVmb3JlIGl0IGNhbWUgdG8gcGFzcyBJIHNoZXdlZCBpdCB0aGVlOiBsZXN0IHRob3Ugc2hvdWxkZXN0IHNheSwgTWluZSBpZG9sIGhhdGggZG9uZSB0aGVtLCBhbmQgbXkgZ3JhdmVuIGltYWdlLCBhbmQgbXkgbW9sdGVuIGltYWdlLCBoYXRoIGNvbW1hbmRlZCB0aGVtLgpUaG91IGhhc3QgaGVhcmQsIHNlZSBhbGwgdGhpczsgYW5kIHdpbGwgbm90IHllIGRlY2xhcmUgaXQ/IEkgaGF2ZSBzaGV3ZWQgdGhlZSBuZXcgdGhpbmdzIGZyb20gdGhpcyB0aW1lLCBldmVuIGhpZGRlbiB0aGluZ3MsIGFuZCB0aG91IGRpZHN0IG5vdCBrbm93IHRoZW0uClRoZXkgYXJlIGNyZWF0ZWQgbm93LCBhbmQgbm90IGZyb20gdGhlIGJlZ2lubmluZzsgZXZlbiBiZWZvcmUgdGhlIGRheSB3aGVuIHRob3UgaGVhcmRlc3QgdGhlbSBub3Q7IGxlc3QgdGhvdSBzaG91bGRlc3Qgc2F5LCBCZWhvbGQsIEkga25ldyB0aGVtLgpZZWEsIHRob3UgaGVhcmRlc3Qgbm90OyB5ZWEsIHRob3Uga25ld2VzdCBub3Q7IHllYSwgZnJvbSB0aGF0IHRpbWUgdGhhdCB0aGluZSBlYXIgd2FzIG5vdCBvcGVuZWQ6IGZvciBJIGtuZXcgdGhhdCB0aG91IHdvdWxkZXN0IGRlYWwgdmVyeSB0cmVhY2hlcm91c2x5LCBhbmQgd2FzdCBjYWxsZWQgYSB0cmFuc2dyZXNzb3IgZnJvbSB0aGUgd29tYi4KRm9yIG15IG5hbWUncyBzYWtlIHdpbGwgSSBkZWZlciBtaW5lIGFuZ2VyLCBhbmQgZm9yIG15IHByYWlzZSB3aWxsIEkgcmVmcmFpbiBmb3IgdGhlZSwgdGhhdCBJIGN1dCB0aGVlIG5vdCBvZmYuCkJlaG9sZCwgSSBoYXZlIHJlZmluZWQgdGhlZSwgYnV0IG5vdCB3aXRoIHNpbHZlcjsgSSBoYXZlIGNob3NlbiB0aGVlIGluIHRoZSBmdXJuYWNlIG9mIGFmZmxpY3Rpb24uCkZvciBtaW5lIG93biBzYWtlLCBldmVuIGZvciBtaW5lIG93biBzYWtlLCB3aWxsIEkgZG8gaXQ6IGZvciBob3cgc2hvdWxkIG15IG5hbWUgYmUgcG9sbHV0ZWQ/IGFuZCBJIHdpbGwgbm90IGdpdmUgbXkgZ2xvcnkgdW50byBhbm90aGVyLgpIZWFya2VuIHVudG8gbWUsIE8gSmFjb2IgYW5kIElzcmFlbCwgbXkgY2FsbGVkOyBJIGFtIGhlOyBJIGFtIHRoZSBmaXJzdCwgSSBhbHNvIGFtIHRoZSBsYXN0LgpNaW5lIGhhbmQgYWxzbyBoYXRoIGxhaWQgdGhlIGZvdW5kYXRpb24gb2YgdGhlIGVhcnRoLCBhbmQgbXkgcmlnaHQgaGFuZCBoYXRoIHNwYW5uZWQgdGhlIGhlYXZlbnM6IHdoZW4gSSBjYWxsIHVudG8gdGhlbSwgdGhleSBzdGFuZCB1cCB0b2dldGhlci4KQWxsIHllLCBhc3NlbWJsZSB5b3Vyc2VsdmVzLCBhbmQgaGVhcjsgd2hpY2ggYW1vbmcgdGhlbSBoYXRoIGRlY2xhcmVkIHRoZXNlIHRoaW5ncz8gVGhlIExPUkQgaGF0aCBsb3ZlZCBoaW06IGhlIHdpbGwgZG8gaGlzIHBsZWFzdXJlIG9uIEJhYnlsb24sIGFuZCBoaXMgYXJtIHNoYWxsIGJlIG9uIHRoZSBDaGFsZGVhbnMuCkksIGV2ZW4gSSwgaGF2ZSBzcG9rZW47IHllYSwgSSBoYXZlIGNhbGxlZCBoaW06IEkgaGF2ZSBicm91Z2h0IGhpbSwgYW5kIGhlIHNoYWxsIG1ha2UgaGlzIHdheSBwcm9zcGVyb3VzLgpDb21lIHllIG5lYXIgdW50byBtZSwgaGVhciB5ZSB0aGlzOyBJIGhhdmUgbm90IHNwb2tlbiBpbiBzZWNyZXQgZnJvbSB0aGUgYmVnaW5uaW5nOyBmcm9tIHRoZSB0aW1lIHRoYXQgaXQgd2FzLCB0aGVyZSBhbSBJOiBhbmQgbm93IHRoZSBMb3JkIEdPRCwgYW5kIGhpcyBTcGlyaXQsIGhhdGggc2VudCBtZS4KVGh1cyBzYWl0aCB0aGUgTE9SRCwgdGh5IFJlZGVlbWVyLCB0aGUgSG9seSBPbmUgb2YgSXNyYWVsOyBJIGFtIHRoZSBMT1JEIHRoeSBHb2Qgd2hpY2ggdGVhY2hldGggdGhlZSB0byBwcm9maXQsIHdoaWNoIGxlYWRldGggdGhlZSBieSB0aGUgd2F5IHRoYXQgdGhvdSBzaG91bGRlc3QgZ28uCk8gdGhhdCB0aG91IGhhZHN0IGhlYXJrZW5lZCB0byBteSBjb21tYW5kbWVudHMhIHRoZW4gaGFkIHRoeSBwZWFjZSBiZWVuIGFzIGEgcml2ZXIsIGFuZCB0aHkgcmlnaHRlb3VzbmVzcyBhcyB0aGUgd2F2ZXMgb2YgdGhlIHNlYToKVGh5IHNlZWQgYWxzbyBoYWQgYmVlbiBhcyB0aGUgc2FuZCwgYW5kIHRoZSBvZmZzcHJpbmcgb2YgdGh5IGJvd2VscyBsaWtlIHRoZSBncmF2ZWwgdGhlcmVvZjsgaGlzIG5hbWUgc2hvdWxkIG5vdCBoYXZlIGJlZW4gY3V0IG9mZiBub3IgZGVzdHJveWVkIGZyb20gYmVmb3JlIG1lLgpHbyB5ZSBmb3J0aCBvZiBCYWJ5bG9uLCBmbGVlIHllIGZyb20gdGhlIENoYWxkZWFucywgd2l0aCBhIHZvaWNlIG9mIHNpbmdpbmcgZGVjbGFyZSB5ZSwgdGVsbCB0aGlzLCB1dHRlciBpdCBldmVuIHRvIHRoZSBlbmQgb2YgdGhlIGVhcnRoOyBzYXkgeWUsIFRoZSBMT1JEIGhhdGggcmVkZWVtZWQgaGlzIHNlcnZhbnQgSmFjb2IuCkFuZCB0aGV5IHRoaXJzdGVkIG5vdCB3aGVuIGhlIGxlZCB0aGVtIHRocm91Z2ggdGhlIGRlc2VydHM6IGhlIGNhdXNlZCB0aGUgd2F0ZXJzIHRvIGZsb3cgb3V0IG9mIHRoZSByb2NrIGZvciB0aGVtOiBoZSBjbGF2ZSB0aGUgcm9jayBhbHNvLCBhbmQgdGhlIHdhdGVycyBndXNoZWQgb3V0LgpUaGVyZSBpcyBubyBwZWFjZSwgc2FpdGggdGhlIExPUkQsIHVudG8gdGhlIHdpY2tlZC4KTGlzdGVuLCBPIGlzbGVzLCB1bnRvIG1lOyBhbmQgaGVhcmtlbiwgeWUgcGVvcGxlLCBmcm9tIGZhcjsgVGhlIExPUkQgaGF0aCBjYWxsZWQgbWUgZnJvbSB0aGUgd29tYjsgZnJvbSB0aGUgYm93ZWxzIG9mIG15IG1vdGhlciBoYXRoIGhlIG1hZGUgbWVudGlvbiBvZiBteSBuYW1lLgpBbmQgaGUgaGF0aCBtYWRlIG15IG1vdXRoIGxpa2UgYSBzaGFycCBzd29yZDsgaW4gdGhlIHNoYWRvdyBvZiBoaXMgaGFuZCBoYXRoIGhlIGhpZCBtZSwgYW5kIG1hZGUgbWUgYSBwb2xpc2hlZCBzaGFmdDsgaW4gaGlzIHF1aXZlciBoYXRoIGhlIGhpZCBtZTsKQW5kIHNhaWQgdW50byBtZSwgVGhvdSBhcnQgbXkgc2VydmFudCwgTyBJc3JhZWwsIGluIHdob20gSSB3aWxsIGJlIGdsb3JpZmllZC4KVGhlbiBJIHNhaWQsIEkgaGF2ZSBsYWJvdXJlZCBpbiB2YWluLCBJIGhhdmUgc3BlbnQgbXkgc3RyZW5ndGggZm9yIG5vdWdodCwgYW5kIGluIHZhaW46IHlldCBzdXJlbHkgbXkganVkZ21lbnQgaXMgd2l0aCB0aGUgTE9SRCwgYW5kIG15IHdvcmsgd2l0aCBteSBHb2QuCkFuZCBub3csIHNhaXRoIHRoZSBMT1JEIHRoYXQgZm9ybWVkIG1lIGZyb20gdGhlIHdvbWIgdG8gYmUgaGlzIHNlcnZhbnQsIHRvIGJyaW5nIEphY29iIGFnYWluIHRvIGhpbSwgVGhvdWdoIElzcmFlbCBiZSBub3QgZ2F0aGVyZWQsIHlldCBzaGFsbCBJIGJlIGdsb3Jpb3VzIGluIHRoZSBleWVzIG9mIHRoZSBMT1JELCBhbmQgbXkgR29kIHNoYWxsIGJlIG15IHN0cmVuZ3RoLgpBbmQgaGUgc2FpZCwgSXQgaXMgYSBsaWdodCB0aGluZyB0aGF0IHRob3Ugc2hvdWxkZXN0IGJlIG15IHNlcnZhbnQgdG8gcmFpc2UgdXAgdGhlIHRyaWJlcyBvZiBKYWNvYiwgYW5kIHRvIHJlc3RvcmUgdGhlIHByZXNlcnZlZCBvZiBJc3JhZWw6IEkgd2lsbCBhbHNvIGdpdmUgdGhlZSBmb3IgYSBsaWdodCB0byB0aGUgR2VudGlsZXMsIHRoYXQgdGhvdSBtYXllc3QgYmUgbXkgc2FsdmF0aW9uIHVudG8gdGhlIGVuZCBvZiB0aGUgZWFydGguClRodXMgc2FpdGggdGhlIExPUkQsIHRoZSBSZWRlZW1lciBvZiBJc3JhZWwsIGFuZCBoaXMgSG9seSBPbmUsIHRvIGhpbSB3aG9tIG1hbiBkZXNwaXNldGgsIHRvIGhpbSB3aG9tIHRoZSBuYXRpb24gYWJob3JyZXRoLCB0byBhIHNlcnZhbnQgb2YgcnVsZXJzLCBLaW5ncyBzaGFsbCBzZWUgYW5kIGFyaXNlLCBwcmluY2VzIGFsc28gc2hhbGwgd29yc2hpcCwgYmVjYXVzZSBvZiB0aGUgTE9SRCB0aGF0IGlzIGZhaXRoZnVsLCBhbmQgdGhlIEhvbHkgT25lIG9mIElzcmFlbCwgYW5kIGhlIHNoYWxsIGNob29zZSB0aGVlLgpUaHVzIHNhaXRoIHRoZSBMT1JELCBJbiBhbiBhY2NlcHRhYmxlIHRpbWUgaGF2ZSBJIGhlYXJkIHRoZWUsIGFuZCBpbiBhIGRheSBvZiBzYWx2YXRpb24gaGF2ZSBJIGhlbHBlZCB0aGVlOiBhbmQgSSB3aWxsIHByZXNlcnZlIHRoZWUsIGFuZCBnaXZlIHRoZWUgZm9yIGEgY292ZW5hbnQgb2YgdGhlIHBlb3BsZSwgdG8gZXN0YWJsaXNoIHRoZSBlYXJ0aCwgdG8gY2F1c2UgdG8gaW5oZXJpdCB0aGUgZGVzb2xhdGUgaGVyaXRhZ2VzOwpUaGF0IHRob3UgbWF5ZXN0IHNheSB0byB0aGUgcHJpc29uZXJzLCBHbyBmb3J0aDsgdG8gdGhlbSB0aGF0IGFyZSBpbiBkYXJrbmVzcywgU2hldyB5b3Vyc2VsdmVzLiBUaGV5IHNoYWxsIGZlZWQgaW4gdGhlIHdheXMsIGFuZCB0aGVpciBwYXN0dXJlcyBzaGFsbCBiZSBpbiBhbGwgaGlnaCBwbGFjZXMuClRoZXkgc2hhbGwgbm90IGh1bmdlciBub3IgdGhpcnN0OyBuZWl0aGVyIHNoYWxsIHRoZSBoZWF0IG5vciBzdW4gc21pdGUgdGhlbTogZm9yIGhlIHRoYXQgaGF0aCBtZXJjeSBvbiB0aGVtIHNoYWxsIGxlYWQgdGhlbSwgZXZlbiBieSB0aGUgc3ByaW5ncyBvZiB3YXRlciBzaGFsbCBoZSBndWlkZSB0aGVtLgpBbmQgSSB3aWxsIG1ha2UgYWxsIG15IG1vdW50YWlucyBhIHdheSwgYW5kIG15IGhpZ2h3YXlzIHNoYWxsIGJlIGV4YWx0ZWQuCkJlaG9sZCwgdGhlc2Ugc2hhbGwgY29tZSBmcm9tIGZhcjogYW5kLCBsbywgdGhlc2UgZnJvbSB0aGUgbm9ydGggYW5kIGZyb20gdGhlIHdlc3Q7IGFuZCB0aGVzZSBmcm9tIHRoZSBsYW5kIG9mIFNpbmltLgpTaW5nLCBPIGhlYXZlbnM7IGFuZCBiZSBqb3lmdWwsIE8gZWFydGg7IGFuZCBicmVhayBmb3J0aCBpbnRvIHNpbmdpbmcsIE8gbW91bnRhaW5zOiBmb3IgdGhlIExPUkQgaGF0aCBjb21mb3J0ZWQgaGlzIHBlb3BsZSwgYW5kIHdpbGwgaGF2ZSBtZXJjeSB1cG9uIGhpcyBhZmZsaWN0ZWQuCkJ1dCBaaW9uIHNhaWQsIFRoZSBMT1JEIGhhdGggZm9yc2FrZW4gbWUsIGFuZCBteSBMb3JkIGhhdGggZm9yZ290dGVuIG1lLgpDYW4gYSB3b21hbiBmb3JnZXQgaGVyIHN1Y2tpbmcgY2hpbGQsIHRoYXQgc2hlIHNob3VsZCBub3QgaGF2ZSBjb21wYXNzaW9uIG9uIHRoZSBzb24gb2YgaGVyIHdvbWI/IHllYSwgdGhleSBtYXkgZm9yZ2V0LCB5ZXQgd2lsbCBJIG5vdCBmb3JnZXQgdGhlZS4KQmVob2xkLCBJIGhhdmUgZ3JhdmVuIHRoZWUgdXBvbiB0aGUgcGFsbXMgb2YgbXkgaGFuZHM7IHRoeSB3YWxscyBhcmUgY29udGludWFsbHkgYmVmb3JlIG1lLgpUaHkgY2hpbGRyZW4gc2hhbGwgbWFrZSBoYXN0ZTsgdGh5IGRlc3Ryb3llcnMgYW5kIHRoZXkgdGhhdCBtYWRlIHRoZWUgd2FzdGUgc2hhbGwgZ28gZm9ydGggb2YgdGhlZS4KTGlmdCB1cCB0aGluZSBleWVzIHJvdW5kIGFib3V0LCBhbmQgYmVob2xkOiBhbGwgdGhlc2UgZ2F0aGVyIHRoZW1zZWx2ZXMgdG9nZXRoZXIsIGFuZCBjb21lIHRvIHRoZWUuIEFzIEkgbGl2ZSwgc2FpdGggdGhlIExPUkQsIHRob3Ugc2hhbHQgc3VyZWx5IGNsb3RoZSB0aGVlIHdpdGggdGhlbSBhbGwsIGFzIHdpdGggYW4gb3JuYW1lbnQsIGFuZCBiaW5kIHRoZW0gb24gdGhlZSwgYXMgYSBicmlkZSBkb2V0aC4KRm9yIHRoeSB3YXN0ZSBhbmQgdGh5IGRlc29sYXRlIHBsYWNlcywgYW5kIHRoZSBsYW5kIG9mIHRoeSBkZXN0cnVjdGlvbiwgc2hhbGwgZXZlbiBub3cgYmUgdG9vIG5hcnJvdyBieSByZWFzb24gb2YgdGhlIGluaGFiaXRhbnRzLCBhbmQgdGhleSB0aGF0IHN3YWxsb3dlZCB0aGVlIHVwIHNoYWxsIGJlIGZhciBhd2F5LgpUaGUgY2hpbGRyZW4gd2hpY2ggdGhvdSBzaGFsdCBoYXZlLCBhZnRlciB0aG91IGhhc3QgbG9zdCB0aGUgb3RoZXIsIHNoYWxsIHNheSBhZ2FpbiBpbiB0aGluZSBlYXJzLCBUaGUgcGxhY2UgaXMgdG9vIHN0cmFpdCBmb3IgbWU6IGdpdmUgcGxhY2UgdG8gbWUgdGhhdCBJIG1heSBkd2VsbC4KVGhlbiBzaGFsdCB0aG91IHNheSBpbiB0aGluZSBoZWFydCwgV2hvIGhhdGggYmVnb3R0ZW4gbWUgdGhlc2UsIHNlZWluZyBJIGhhdmUgbG9zdCBteSBjaGlsZHJlbiwgYW5kIGFtIGRlc29sYXRlLCBhIGNhcHRpdmUsIGFuZCByZW1vdmluZyB0byBhbmQgZnJvPyBhbmQgd2hvIGhhdGggYnJvdWdodCB1cCB0aGVzZT8gQmVob2xkLCBJIHdhcyBsZWZ0IGFsb25lOyB0aGVzZSwgd2hlcmUgaGFkIHRoZXkgYmVlbj8KVGh1cyBzYWl0aCB0aGUgTG9yZCBHT0QsIEJlaG9sZCwgSSB3aWxsIGxpZnQgdXAgbWluZSBoYW5kIHRvIHRoZSBHZW50aWxlcywgYW5kIHNldCB1cCBteSBzdGFuZGFyZCB0byB0aGUgcGVvcGxlOiBhbmQgdGhleSBzaGFsbCBicmluZyB0aHkgc29ucyBpbiB0aGVpciBhcm1zLCBhbmQgdGh5IGRhdWdodGVycyBzaGFsbCBiZSBjYXJyaWVkIHVwb24gdGhlaXIgc2hvdWxkZXJzLgpBbmQga2luZ3Mgc2hhbGwgYmUgdGh5IG51cnNpbmcgZmF0aGVycywgYW5kIHRoZWlyIHF1ZWVucyB0aHkgbnVyc2luZyBtb3RoZXJzOiB0aGV5IHNoYWxsIGJvdyBkb3duIHRvIHRoZWUgd2l0aCB0aGVpciBmYWNlIHRvd2FyZCB0aGUgZWFydGgsIGFuZCBsaWNrIHVwIHRoZSBkdXN0IG9mIHRoeSBmZWV0OyBhbmQgdGhvdSBzaGFsdCBrbm93IHRoYXQgSSBhbSB0aGUgTE9SRDogZm9yIHRoZXkgc2hhbGwgbm90IGJlIGFzaGFtZWQgdGhhdCB3YWl0IGZvciBtZS4KU2hhbGwgdGhlIHByZXkgYmUgdGFrZW4gZnJvbSB0aGUgbWlnaHR5LCBvciB0aGUgbGF3ZnVsIGNhcHRpdmUgZGVsaXZlcmVkPwpCdXQgdGh1cyBzYWl0aCB0aGUgTE9SRCwgRXZlbiB0aGUgY2FwdGl2ZXMgb2YgdGhlIG1pZ2h0eSBzaGFsbCBiZSB0YWtlbiBhd2F5LCBhbmQgdGhlIHByZXkgb2YgdGhlIHRlcnJpYmxlIHNoYWxsIGJlIGRlbGl2ZXJlZDogZm9yIEkgd2lsbCBjb250ZW5kIHdpdGggaGltIHRoYXQgY29udGVuZGV0aCB3aXRoIHRoZWUsIGFuZCBJIHdpbGwgc2F2ZSB0aHkgY2hpbGRyZW4uCkFuZCBJIHdpbGwgZmVlZCB0aGVtIHRoYXQgb3BwcmVzcyB0aGVlIHdpdGggdGhlaXIgb3duIGZsZXNoOyBhbmQgdGhleSBzaGFsbCBiZSBkcnVua2VuIHdpdGggdGhlaXIgb3duIGJsb29kLCBhcyB3aXRoIHN3ZWV0IHdpbmU6IGFuZCBhbGwgZmxlc2ggc2hhbGwga25vdyB0aGF0IEkgdGhlIExPUkQgYW0gdGh5IFNhdmlvdXIgYW5kIHRoeSBSZWRlZW1lciwgdGhlIG1pZ2h0eSBPbmUgb2YgSmFjb2IuClRodXMgc2FpdGggdGhlIExPUkQsIFdoZXJlIGlzIHRoZSBiaWxsIG9mIHlvdXIgbW90aGVyJ3MgZGl2b3JjZW1lbnQsIHdob20gSSBoYXZlIHB1dCBhd2F5PyBvciB3aGljaCBvZiBteSBjcmVkaXRvcnMgaXMgaXQgdG8gd2hvbSBJIGhhdmUgc29sZCB5b3U/IEJlaG9sZCwgZm9yIHlvdXIgaW5pcXVpdGllcyBoYXZlIHllIHNvbGQgeW91cnNlbHZlcywgYW5kIGZvciB5b3VyIHRyYW5zZ3Jlc3Npb25zIGlzIHlvdXIgbW90aGVyIHB1dCBhd2F5LgpXaGVyZWZvcmUsIHdoZW4gSSBjYW1lLCB3YXMgdGhlcmUgbm8gbWFuPyB3aGVuIEkgY2FsbGVkLCB3YXMgdGhlcmUgbm9uZSB0byBhbnN3ZXI/IElzIG15IGhhbmQgc2hvcnRlbmVkIGF0IGFsbCwgdGhhdCBpdCBjYW5ub3QgcmVkZWVtPyBvciBoYXZlIEkgbm8gcG93ZXIgdG8gZGVsaXZlcj8gYmVob2xkLCBhdCBteSByZWJ1a2UgSSBkcnkgdXAgdGhlIHNlYSwgSSBtYWtlIHRoZSByaXZlcnMgYSB3aWxkZXJuZXNzOiB0aGVpciBmaXNoIHN0aW5rZXRoLCBiZWNhdXNlIHRoZXJlIGlzIG5vIHdhdGVyLCBhbmQgZGlldGggZm9yIHRoaXJzdC4KSSBjbG90aGUgdGhlIGhlYXZlbnMgd2l0aCBibGFja25lc3MsIGFuZCBJIG1ha2Ugc2Fja2Nsb3RoIHRoZWlyIGNvdmVyaW5nLgpUaGUgTG9yZCBHT0QgaGF0aCBnaXZlbiBtZSB0aGUgdG9uZ3VlIG9mIHRoZSBsZWFybmVkLCB0aGF0IEkgc2hvdWxkIGtub3cgaG93IHRvIHNwZWFrIGEgd29yZCBpbiBzZWFzb24gdG8gaGltIHRoYXQgaXMgd2Vhcnk6IGhlIHdha2VuZXRoIG1vcm5pbmcgYnkgbW9ybmluZywgaGUgd2FrZW5ldGggbWluZSBlYXIgdG8gaGVhciBhcyB0aGUgbGVhcm5lZC4KVGhlIExvcmQgR09EIGhhdGggb3BlbmVkIG1pbmUgZWFyLCBhbmQgSSB3YXMgbm90IHJlYmVsbGlvdXMsIG5laXRoZXIgdHVybmVkIGF3YXkgYmFjay4KSSBnYXZlIG15IGJhY2sgdG8gdGhlIHNtaXRlcnMsIGFuZCBteSBjaGVla3MgdG8gdGhlbSB0aGF0IHBsdWNrZWQgb2ZmIHRoZSBoYWlyOiBJIGhpZCBub3QgbXkgZmFjZSBmcm9tIHNoYW1lIGFuZCBzcGl0dGluZy4KRm9yIHRoZSBMb3JkIEdPRCB3aWxsIGhlbHAgbWU7IHRoZXJlZm9yZSBzaGFsbCBJIG5vdCBiZSBjb25mb3VuZGVkOiB0aGVyZWZvcmUgaGF2ZSBJIHNldCBteSBmYWNlIGxpa2UgYSBmbGludCwgYW5kIEkga25vdyB0aGF0IEkgc2hhbGwgbm90IGJlIGFzaGFtZWQuCkhlIGlzIG5lYXIgdGhhdCBqdXN0aWZpZXRoIG1lOyB3aG8gd2lsbCBjb250ZW5kIHdpdGggbWU/IGxldCB1cyBzdGFuZCB0b2dldGhlcjogd2hvIGlzIG1pbmUgYWR2ZXJzYXJ5PyBsZXQgaGltIGNvbWUgbmVhciB0byBtZS4KQmVob2xkLCB0aGUgTG9yZCBHT0Qgd2lsbCBoZWxwIG1lOyB3aG8gaXMgaGUgdGhhdCBzaGFsbCBjb25kZW1uIG1lPyBsbywgdGhleSBhbGwgc2hhbGwgd2F4IG9sZCBhcyBhIGdhcm1lbnQ7IHRoZSBtb3RoIHNoYWxsIGVhdCB0aGVtIHVwLgpXaG8gaXMgYW1vbmcgeW91IHRoYXQgZmVhcmV0aCB0aGUgTE9SRCwgdGhhdCBvYmV5ZXRoIHRoZSB2b2ljZSBvZiBoaXMgc2VydmFudCwgdGhhdCB3YWxrZXRoIGluIGRhcmtuZXNzLCBhbmQgaGF0aCBubyBsaWdodD8gbGV0IGhpbSB0cnVzdCBpbiB0aGUgbmFtZSBvZiB0aGUgTE9SRCwgYW5kIHN0YXkgdXBvbiBoaXMgR29kLgpCZWhvbGQsIGFsbCB5ZSB0aGF0IGtpbmRsZSBhIGZpcmUsIHRoYXQgY29tcGFzcyB5b3Vyc2VsdmVzIGFib3V0IHdpdGggc3BhcmtzOiB3YWxrIGluIHRoZSBsaWdodCBvZiB5b3VyIGZpcmUsIGFuZCBpbiB0aGUgc3BhcmtzIHRoYXQgeWUgaGF2ZSBraW5kbGVkLiBUaGlzIHNoYWxsIHllIGhhdmUgb2YgbWluZSBoYW5kOyB5ZSBzaGFsbCBsaWUgZG93biBpbiBzb3Jyb3cuCkhlYXJrZW4gdG8gbWUsIHllIHRoYXQgZm9sbG93IGFmdGVyIHJpZ2h0ZW91c25lc3MsIHllIHRoYXQgc2VlayB0aGUgTE9SRDogbG9vayB1bnRvIHRoZSByb2NrIHdoZW5jZSB5ZSBhcmUgaGV3biwgYW5kIHRvIHRoZSBob2xlIG9mIHRoZSBwaXQgd2hlbmNlIHllIGFyZSBkaWdnZWQuCkxvb2sgdW50byBBYnJhaGFtIHlvdXIgZmF0aGVyLCBhbmQgdW50byBTYXJhaCB0aGF0IGJhcmUgeW91OiBmb3IgSSBjYWxsZWQgaGltIGFsb25lLCBhbmQgYmxlc3NlZCBoaW0sIGFuZCBpbmNyZWFzZWQgaGltLgpGb3IgdGhlIExPUkQgc2hhbGwgY29tZm9ydCBaaW9uOiBoZSB3aWxsIGNvbWZvcnQgYWxsIGhlciB3YXN0ZSBwbGFjZXM7IGFuZCBoZSB3aWxsIG1ha2UgaGVyIHdpbGRlcm5lc3MgbGlrZSBFZGVuLCBhbmQgaGVyIGRlc2VydCBsaWtlIHRoZSBnYXJkZW4gb2YgdGhlIExPUkQ7IGpveSBhbmQgZ2xhZG5lc3Mgc2hhbGwgYmUgZm91bmQgdGhlcmVpbiwgdGhhbmtzZ2l2aW5nLCBhbmQgdGhlIHZvaWNlIG9mIG1lbG9keS4KSGVhcmtlbiB1bnRvIG1lLCBteSBwZW9wbGU7IGFuZCBnaXZlIGVhciB1bnRvIG1lLCBPIG15IG5hdGlvbjogZm9yIGEgbGF3IHNoYWxsIHByb2NlZWQgZnJvbSBtZSwgYW5kIEkgd2lsbCBtYWtlIG15IGp1ZGdtZW50IHRvIHJlc3QgZm9yIGEgbGlnaHQgb2YgdGhlIHBlb3BsZS4KTXkgcmlnaHRlb3VzbmVzcyBpcyBuZWFyOyBteSBzYWx2YXRpb24gaXMgZ29uZSBmb3J0aCwgYW5kIG1pbmUgYXJtcyBzaGFsbCBqdWRnZSB0aGUgcGVvcGxlOyB0aGUgaXNsZXMgc2hhbGwgd2FpdCB1cG9uIG1lLCBhbmQgb24gbWluZSBhcm0gc2hhbGwgdGhleSB0cnVzdC4KTGlmdCB1cCB5b3VyIGV5ZXMgdG8gdGhlIGhlYXZlbnMsIGFuZCBsb29rIHVwb24gdGhlIGVhcnRoIGJlbmVhdGg6IGZvciB0aGUgaGVhdmVucyBzaGFsbCB2YW5pc2ggYXdheSBsaWtlIHNtb2tlLCBhbmQgdGhlIGVhcnRoIHNoYWxsIHdheCBvbGQgbGlrZSBhIGdhcm1lbnQsIGFuZCB0aGV5IHRoYXQgZHdlbGwgdGhlcmVpbiBzaGFsbCBkaWUgaW4gbGlrZSBtYW5uZXI6IGJ1dCBteSBzYWx2YXRpb24gc2hhbGwgYmUgZm9yIGV2ZXIsIGFuZCBteSByaWdodGVvdXNuZXNzIHNoYWxsIG5vdCBiZSBhYm9saXNoZWQuCkhlYXJrZW4gdW50byBtZSwgeWUgdGhhdCBrbm93IHJpZ2h0ZW91c25lc3MsIHRoZSBwZW9wbGUgaW4gd2hvc2UgaGVhcnQgaXMgbXkgbGF3OyBmZWFyIHllIG5vdCB0aGUgcmVwcm9hY2ggb2YgbWVuLCBuZWl0aGVyIGJlIHllIGFmcmFpZCBvZiB0aGVpciByZXZpbGluZ3MuCkZvciB0aGUgbW90aCBzaGFsbCBlYXQgdGhlbSB1cCBsaWtlIGEgZ2FybWVudCwgYW5kIHRoZSB3b3JtIHNoYWxsIGVhdCB0aGVtIGxpa2Ugd29vbDogYnV0IG15IHJpZ2h0ZW91c25lc3Mgc2hhbGwgYmUgZm9yIGV2ZXIsIGFuZCBteSBzYWx2YXRpb24gZnJvbSBnZW5lcmF0aW9uIHRvIGdlbmVyYXRpb24uCkF3YWtlLCBhd2FrZSwgcHV0IG9uIHN0cmVuZ3RoLCBPIGFybSBvZiB0aGUgTE9SRDsgYXdha2UsIGFzIGluIHRoZSBhbmNpZW50IGRheXMsIGluIHRoZSBnZW5lcmF0aW9ucyBvZiBvbGQuIEFydCB0aG91IG5vdCBpdCB0aGF0IGhhdGggY3V0IFJhaGFiLCBhbmQgd291bmRlZCB0aGUgZHJhZ29uPwpBcnQgdGhvdSBub3QgaXQgd2hpY2ggaGF0aCBkcmllZCB0aGUgc2VhLCB0aGUgd2F0ZXJzIG9mIHRoZSBncmVhdCBkZWVwOyB0aGF0IGhhdGggbWFkZSB0aGUgZGVwdGhzIG9mIHRoZSBzZWEgYSB3YXkgZm9yIHRoZSByYW5zb21lZCB0byBwYXNzIG92ZXI/ClRoZXJlZm9yZSB0aGUgcmVkZWVtZWQgb2YgdGhlIExPUkQgc2hhbGwgcmV0dXJuLCBhbmQgY29tZSB3aXRoIHNpbmdpbmcgdW50byBaaW9uOyBhbmQgZXZlcmxhc3Rpbmcgam95IHNoYWxsIGJlIHVwb24gdGhlaXIgaGVhZDogdGhleSBzaGFsbCBvYnRhaW4gZ2xhZG5lc3MgYW5kIGpveTsgYW5kIHNvcnJvdyBhbmQgbW91cm5pbmcgc2hhbGwgZmxlZSBhd2F5LgpJLCBldmVuIEksIGFtIGhlIHRoYXQgY29tZm9ydGV0aCB5b3U6IHdobyBhcnQgdGhvdSwgdGhhdCB0aG91IHNob3VsZGVzdCBiZSBhZnJhaWQgb2YgYSBtYW4gdGhhdCBzaGFsbCBkaWUsIGFuZCBvZiB0aGUgc29uIG9mIG1hbiB3aGljaCBzaGFsbCBiZSBtYWRlIGFzIGdyYXNzOwpBbmQgZm9yZ2V0dGVzdCB0aGUgTE9SRCB0aHkgbWFrZXIsIHRoYXQgaGF0aCBzdHJldGNoZWQgZm9ydGggdGhlIGhlYXZlbnMsIGFuZCBsYWlkIHRoZSBmb3VuZGF0aW9ucyBvZiB0aGUgZWFydGg7IGFuZCBoYXN0IGZlYXJlZCBjb250aW51YWxseSBldmVyeSBkYXkgYmVjYXVzZSBvZiB0aGUgZnVyeSBvZiB0aGUgb3BwcmVzc29yLCBhcyBpZiBoZSB3ZXJlIHJlYWR5IHRvIGRlc3Ryb3k/IGFuZCB3aGVyZSBpcyB0aGUgZnVyeSBvZiB0aGUgb3BwcmVzc29yPwpUaGUgY2FwdGl2ZSBleGlsZSBoYXN0ZW5ldGggdGhhdCBoZSBtYXkgYmUgbG9vc2VkLCBhbmQgdGhhdCBoZSBzaG91bGQgbm90IGRpZSBpbiB0aGUgcGl0LCBub3IgdGhhdCBoaXMgYnJlYWQgc2hvdWxkIGZhaWwuCkJ1dCBJIGFtIHRoZSBMT1JEIHRoeSBHb2QsIHRoYXQgZGl2aWRlZCB0aGUgc2VhLCB3aG9zZSB3YXZlcyByb2FyZWQ6IFRoZSBMT1JEIG9mIGhvc3RzIGlzIGhpcyBuYW1lLgpBbmQgSSBoYXZlIHB1dCBteSB3b3JkcyBpbiB0aHkgbW91dGgsIGFuZCBJIGhhdmUgY292ZXJlZCB0aGVlIGluIHRoZSBzaGFkb3cgb2YgbWluZSBoYW5kLCB0aGF0IEkgbWF5IHBsYW50IHRoZSBoZWF2ZW5zLCBhbmQgbGF5IHRoZSBmb3VuZGF0aW9ucyBvZiB0aGUgZWFydGgsIGFuZCBzYXkgdW50byBaaW9uLCBUaG91IGFydCBteSBwZW9wbGUuCkF3YWtlLCBhd2FrZSwgc3RhbmQgdXAsIE8gSmVydXNhbGVtLCB3aGljaCBoYXN0IGRydW5rIGF0IHRoZSBoYW5kIG9mIHRoZSBMT1JEIHRoZSBjdXAgb2YgaGlzIGZ1cnk7IHRob3UgaGFzdCBkcnVua2VuIHRoZSBkcmVncyBvZiB0aGUgY3VwIG9mIHRyZW1ibGluZywgYW5kIHdydW5nIHRoZW0gb3V0LgpUaGVyZSBpcyBub25lIHRvIGd1aWRlIGhlciBhbW9uZyBhbGwgdGhlIHNvbnMgd2hvbSBzaGUgaGF0aCBicm91Z2h0IGZvcnRoOyBuZWl0aGVyIGlzIHRoZXJlIGFueSB0aGF0IHRha2V0aCBoZXIgYnkgdGhlIGhhbmQgb2YgYWxsIHRoZSBzb25zIHRoYXQgc2hlIGhhdGggYnJvdWdodCB1cC4KVGhlc2UgdHdvIHRoaW5ncyBhcmUgY29tZSB1bnRvIHRoZWU7IHdobyBzaGFsbCBiZSBzb3JyeSBmb3IgdGhlZT8gZGVzb2xhdGlvbiwgYW5kIGRlc3RydWN0aW9uLCBhbmQgdGhlIGZhbWluZSwgYW5kIHRoZSBzd29yZDogYnkgd2hvbSBzaGFsbCBJIGNvbWZvcnQgdGhlZT8KVGh5IHNvbnMgaGF2ZSBmYWludGVkLCB0aGV5IGxpZSBhdCB0aGUgaGVhZCBvZiBhbGwgdGhlIHN0cmVldHMsIGFzIGEgd2lsZCBidWxsIGluIGEgbmV0OiB0aGV5IGFyZSBmdWxsIG9mIHRoZSBmdXJ5IG9mIHRoZSBMT1JELCB0aGUgcmVidWtlIG9mIHRoeSBHb2QuClRoZXJlZm9yZSBoZWFyIG5vdyB0aGlzLCB0aG91IGFmZmxpY3RlZCwgYW5kIGRydW5rZW4sIGJ1dCBub3Qgd2l0aCB3aW5lOgpUaHVzIHNhaXRoIHRoeSBMb3JkIHRoZSBMT1JELCBhbmQgdGh5IEdvZCB0aGF0IHBsZWFkZXRoIHRoZSBjYXVzZSBvZiBoaXMgcGVvcGxlLCBCZWhvbGQsIEkgaGF2ZSB0YWtlbiBvdXQgb2YgdGhpbmUgaGFuZCB0aGUgY3VwIG9mIHRyZW1ibGluZywgZXZlbiB0aGUgZHJlZ3Mgb2YgdGhlIGN1cCBvZiBteSBmdXJ5OyB0aG91IHNoYWx0IG5vIG1vcmUgZHJpbmsgaXQgYWdhaW46CkJ1dCBJIHdpbGwgcHV0IGl0IGludG8gdGhlIGhhbmQgb2YgdGhlbSB0aGF0IGFmZmxpY3QgdGhlZTsgd2hpY2ggaGF2ZSBzYWlkIHRvIHRoeSBzb3VsLCBCb3cgZG93biwgdGhhdCB3ZSBtYXkgZ28gb3ZlcjogYW5kIHRob3UgaGFzdCBsYWlkIHRoeSBib2R5IGFzIHRoZSBncm91bmQsIGFuZCBhcyB0aGUgc3RyZWV0LCB0byB0aGVtIHRoYXQgd2VudCBvdmVyLgpBd2FrZSwgYXdha2U7IHB1dCBvbiB0aHkgc3RyZW5ndGgsIE8gWmlvbjsgcHV0IG9uIHRoeSBiZWF1dGlmdWwgZ2FybWVudHMsIE8gSmVydXNhbGVtLCB0aGUgaG9seSBjaXR5OiBmb3IgaGVuY2Vmb3J0aCB0aGVyZSBzaGFsbCBubyBtb3JlIGNvbWUgaW50byB0aGVlIHRoZSB1bmNpcmN1bWNpc2VkIGFuZCB0aGUgdW5jbGVhbi4KU2hha2UgdGh5c2VsZiBmcm9tIHRoZSBkdXN0OyBhcmlzZSwgYW5kIHNpdCBkb3duLCBPIEplcnVzYWxlbTogbG9vc2UgdGh5c2VsZiBmcm9tIHRoZSBiYW5kcyBvZiB0aHkgbmVjaywgTyBjYXB0aXZlIGRhdWdodGVyIG9mIFppb24uCkZvciB0aHVzIHNhaXRoIHRoZSBMT1JELCBZZSBoYXZlIHNvbGQgeW91cnNlbHZlcyBmb3Igbm91Z2h0OyBhbmQgeWUgc2hhbGwgYmUgcmVkZWVtZWQgd2l0aG91dCBtb25leS4KRm9yIHRodXMgc2FpdGggdGhlIExvcmQgR09ELCBNeSBwZW9wbGUgd2VudCBkb3duIGFmb3JldGltZSBpbnRvIEVneXB0IHRvIHNvam91cm4gdGhlcmU7IGFuZCB0aGUgQXNzeXJpYW4gb3BwcmVzc2VkIHRoZW0gd2l0aG91dCBjYXVzZS4KTm93IHRoZXJlZm9yZSwgd2hhdCBoYXZlIEkgaGVyZSwgc2FpdGggdGhlIExPUkQsIHRoYXQgbXkgcGVvcGxlIGlzIHRha2VuIGF3YXkgZm9yIG5vdWdodD8gdGhleSB0aGF0IHJ1bGUgb3ZlciB0aGVtIG1ha2UgdGhlbSB0byBob3dsLCBzYWl0aCB0aGUgTE9SRDsgYW5kIG15IG5hbWUgY29udGludWFsbHkgZXZlcnkgZGF5IGlzIGJsYXNwaGVtZWQuClRoZXJlZm9yZSBteSBwZW9wbGUgc2hhbGwga25vdyBteSBuYW1lOiB0aGVyZWZvcmUgdGhleSBzaGFsbCBrbm93IGluIHRoYXQgZGF5IHRoYXQgSSBhbSBoZSB0aGF0IGRvdGggc3BlYWs6IGJlaG9sZCwgaXQgaXMgSS4KSG93IGJlYXV0aWZ1bCB1cG9uIHRoZSBtb3VudGFpbnMgYXJlIHRoZSBmZWV0IG9mIGhpbSB0aGF0IGJyaW5nZXRoIGdvb2QgdGlkaW5ncywgdGhhdCBwdWJsaXNoZXRoIHBlYWNlOyB0aGF0IGJyaW5nZXRoIGdvb2QgdGlkaW5ncyBvZiBnb29kLCB0aGF0IHB1Ymxpc2hldGggc2FsdmF0aW9uOyB0aGF0IHNhaXRoIHVudG8gWmlvbiwgVGh5IEdvZCByZWlnbmV0aCEKVGh5IHdhdGNobWVuIHNoYWxsIGxpZnQgdXAgdGhlIHZvaWNlOyB3aXRoIHRoZSB2b2ljZSB0b2dldGhlciBzaGFsbCB0aGV5IHNpbmc6IGZvciB0aGV5IHNoYWxsIHNlZSBleWUgdG8gZXllLCB3aGVuIHRoZSBMT1JEIHNoYWxsIGJyaW5nIGFnYWluIFppb24uCkJyZWFrIGZvcnRoIGludG8gam95LCBzaW5nIHRvZ2V0aGVyLCB5ZSB3YXN0ZSBwbGFjZXMgb2YgSmVydXNhbGVtOiBmb3IgdGhlIExPUkQgaGF0aCBjb21mb3J0ZWQgaGlzIHBlb3BsZSwgaGUgaGF0aCByZWRlZW1lZCBKZXJ1c2FsZW0uClRoZSBMT1JEIGhhdGggbWFkZSBiYXJlIGhpcyBob2x5IGFybSBpbiB0aGUgZXllcyBvZiBhbGwgdGhlIG5hdGlvbnM7IGFuZCBhbGwgdGhlIGVuZHMgb2YgdGhlIGVhcnRoIHNoYWxsIHNlZSB0aGUgc2FsdmF0aW9uIG9mIG91ciBHb2QuCkRlcGFydCB5ZSwgZGVwYXJ0IHllLCBnbyB5ZSBvdXQgZnJvbSB0aGVuY2UsIHRvdWNoIG5vIHVuY2xlYW4gdGhpbmc7IGdvIHllIG91dCBvZiB0aGUgbWlkc3Qgb2YgaGVyOyBiZSB5ZSBjbGVhbiwgdGhhdCBiZWFyIHRoZSB2ZXNzZWxzIG9mIHRoZSBMT1JELgpGb3IgeWUgc2hhbGwgbm90IGdvIG91dCB3aXRoIGhhc3RlLCBub3IgZ28gYnkgZmxpZ2h0OiBmb3IgdGhlIExPUkQgd2lsbCBnbyBiZWZvcmUgeW91OyBhbmQgdGhlIEdvZCBvZiBJc3JhZWwgd2lsbCBiZSB5b3VyIHJlcmV3YXJkLgpCZWhvbGQsIG15IHNlcnZhbnQgc2hhbGwgZGVhbCBwcnVkZW50bHksIGhlIHNoYWxsIGJlIGV4YWx0ZWQgYW5kIGV4dG9sbGVkLCBhbmQgYmUgdmVyeSBoaWdoLgpBcyBtYW55IHdlcmUgYXN0b25pZWQgYXQgdGhlZTsgaGlzIHZpc2FnZSB3YXMgc28gbWFycmVkIG1vcmUgdGhhbiBhbnkgbWFuLCBhbmQgaGlzIGZvcm0gbW9yZSB0aGFuIHRoZSBzb25zIG9mIG1lbjoKU28gc2hhbGwgaGUgc3ByaW5rbGUgbWFueSBuYXRpb25zOyB0aGUga2luZ3Mgc2hhbGwgc2h1dCB0aGVpciBtb3V0aHMgYXQgaGltOiBmb3IgdGhhdCB3aGljaCBoYWQgbm90IGJlZW4gdG9sZCB0aGVtIHNoYWxsIHRoZXkgc2VlOyBhbmQgdGhhdCB3aGljaCB0aGV5IGhhZCBub3QgaGVhcmQgc2hhbGwgdGhleSBjb25zaWRlci4KV2hvIGhhdGggYmVsaWV2ZWQgb3VyIHJlcG9ydD8gYW5kIHRvIHdob20gaXMgdGhlIGFybSBvZiB0aGUgTE9SRCByZXZlYWxlZD8KRm9yIGhlIHNoYWxsIGdyb3cgdXAgYmVmb3JlIGhpbSBhcyBhIHRlbmRlciBwbGFudCwgYW5kIGFzIGEgcm9vdCBvdXQgb2YgYSBkcnkgZ3JvdW5kOiBoZSBoYXRoIG5vIGZvcm0gbm9yIGNvbWVsaW5lc3M7IGFuZCB3aGVuIHdlIHNoYWxsIHNlZSBoaW0sIHRoZXJlIGlzIG5vIGJlYXV0eSB0aGF0IHdlIHNob3VsZCBkZXNpcmUgaGltLgpIZSBpcyBkZXNwaXNlZCBhbmQgcmVqZWN0ZWQgb2YgbWVuOyBhIG1hbiBvZiBzb3Jyb3dzLCBhbmQgYWNxdWFpbnRlZCB3aXRoIGdyaWVmOiBhbmQgd2UgaGlkIGFzIGl0IHdlcmUgb3VyIGZhY2VzIGZyb20gaGltOyBoZSB3YXMgZGVzcGlzZWQsIGFuZCB3ZSBlc3RlZW1lZCBoaW0gbm90LgpTdXJlbHkgaGUgaGF0aCBib3JuZSBvdXIgZ3JpZWZzLCBhbmQgY2FycmllZCBvdXIgc29ycm93czogeWV0IHdlIGRpZCBlc3RlZW0gaGltIHN0cmlja2VuLCBzbWl0dGVuIG9mIEdvZCwgYW5kIGFmZmxpY3RlZC4KQnV0IGhlIHdhcyB3b3VuZGVkIGZvciBvdXIgdHJhbnNncmVzc2lvbnMsIGhlIHdhcyBicnVpc2VkIGZvciBvdXIgaW5pcXVpdGllczogdGhlIGNoYXN0aXNlbWVudCBvZiBvdXIgcGVhY2Ugd2FzIHVwb24gaGltOyBhbmQgd2l0aCBoaXMgc3RyaXBlcyB3ZSBhcmUgaGVhbGVkLgpBbGwgd2UgbGlrZSBzaGVlcCBoYXZlIGdvbmUgYXN0cmF5OyB3ZSBoYXZlIHR1cm5lZCBldmVyeSBvbmUgdG8gaGlzIG93biB3YXk7IGFuZCB0aGUgTE9SRCBoYXRoIGxhaWQgb24gaGltIHRoZSBpbmlxdWl0eSBvZiB1cyBhbGwuCkhlIHdhcyBvcHByZXNzZWQsIGFuZCBoZSB3YXMgYWZmbGljdGVkLCB5ZXQgaGUgb3BlbmVkIG5vdCBoaXMgbW91dGg6IGhlIGlzIGJyb3VnaHQgYXMgYSBsYW1iIHRvIHRoZSBzbGF1Z2h0ZXIsIGFuZCBhcyBhIHNoZWVwIGJlZm9yZSBoZXIgc2hlYXJlcnMgaXMgZHVtYiwgc28gaGUgb3BlbmV0aCBub3QgaGlzIG1vdXRoLgpIZSB3YXMgdGFrZW4gZnJvbSBwcmlzb24gYW5kIGZyb20ganVkZ21lbnQ6IGFuZCB3aG8gc2hhbGwgZGVjbGFyZSBoaXMgZ2VuZXJhdGlvbj8gZm9yIGhlIHdhcyBjdXQgb2ZmIG91dCBvZiB0aGUgbGFuZCBvZiB0aGUgbGl2aW5nOiBmb3IgdGhlIHRyYW5zZ3Jlc3Npb24gb2YgbXkgcGVvcGxlIHdhcyBoZSBzdHJpY2tlbi4KQW5kIGhlIG1hZGUgaGlzIGdyYXZlIHdpdGggdGhlIHdpY2tlZCwgYW5kIHdpdGggdGhlIHJpY2ggaW4gaGlzIGRlYXRoOyBiZWNhdXNlIGhlIGhhZCBkb25lIG5vIHZpb2xlbmNlLCBuZWl0aGVyIHdhcyBhbnkgZGVjZWl0IGluIGhpcyBtb3V0aC4KWWV0IGl0IHBsZWFzZWQgdGhlIExPUkQgdG8gYnJ1aXNlIGhpbTsgaGUgaGF0aCBwdXQgaGltIHRvIGdyaWVmOiB3aGVuIHRob3Ugc2hhbHQgbWFrZSBoaXMgc291bCBhbiBvZmZlcmluZyBmb3Igc2luLCBoZSBzaGFsbCBzZWUgaGlzIHNlZWQsIGhlIHNoYWxsIHByb2xvbmcgaGlzIGRheXMsIGFuZCB0aGUgcGxlYXN1cmUgb2YgdGhlIExPUkQgc2hhbGwgcHJvc3BlciBpbiBoaXMgaGFuZC4KSGUgc2hhbGwgc2VlIG9mIHRoZSB0cmF2YWlsIG9mIGhpcyBzb3VsLCBhbmQgc2hhbGwgYmUgc2F0aXNmaWVkOiBieSBoaXMga25vd2xlZGdlIHNoYWxsIG15IHJpZ2h0ZW91cyBzZXJ2YW50IGp1c3RpZnkgbWFueTsgZm9yIGhlIHNoYWxsIGJlYXIgdGhlaXIgaW5pcXVpdGllcy4KVGhlcmVmb3JlIHdpbGwgSSBkaXZpZGUgaGltIGEgcG9ydGlvbiB3aXRoIHRoZSBncmVhdCwgYW5kIGhlIHNoYWxsIGRpdmlkZSB0aGUgc3BvaWwgd2l0aCB0aGUgc3Ryb25nOyBiZWNhdXNlIGhlIGhhdGggcG91cmVkIG91dCBoaXMgc291bCB1bnRvIGRlYXRoOiBhbmQgaGUgd2FzIG51bWJlcmVkIHdpdGggdGhlIHRyYW5zZ3Jlc3NvcnM7IGFuZCBoZSBiYXJlIHRoZSBzaW4gb2YgbWFueSwgYW5kIG1hZGUgaW50ZXJjZXNzaW9uIGZvciB0aGUgdHJhbnNncmVzc29ycy4KU2luZywgTyBiYXJyZW4sIHRob3UgdGhhdCBkaWRzdCBub3QgYmVhcjsgYnJlYWsgZm9ydGggaW50byBzaW5naW5nLCBhbmQgY3J5IGFsb3VkLCB0aG91IHRoYXQgZGlkc3Qgbm90IHRyYXZhaWwgd2l0aCBjaGlsZDogZm9yIG1vcmUgYXJlIHRoZSBjaGlsZHJlbiBvZiB0aGUgZGVzb2xhdGUgdGhhbiB0aGUgY2hpbGRyZW4gb2YgdGhlIG1hcnJpZWQgd2lmZSwgc2FpdGggdGhlIExPUkQuCkVubGFyZ2UgdGhlIHBsYWNlIG9mIHRoeSB0ZW50LCBhbmQgbGV0IHRoZW0gc3RyZXRjaCBmb3J0aCB0aGUgY3VydGFpbnMgb2YgdGhpbmUgaGFiaXRhdGlvbnM6IHNwYXJlIG5vdCwgbGVuZ3RoZW4gdGh5IGNvcmRzLCBhbmQgc3RyZW5ndGhlbiB0aHkgc3Rha2VzOwpGb3IgdGhvdSBzaGFsdCBicmVhayBmb3J0aCBvbiB0aGUgcmlnaHQgaGFuZCBhbmQgb24gdGhlIGxlZnQ7IGFuZCB0aHkgc2VlZCBzaGFsbCBpbmhlcml0IHRoZSBHZW50aWxlcywgYW5kIG1ha2UgdGhlIGRlc29sYXRlIGNpdGllcyB0byBiZSBpbmhhYml0ZWQuCkZlYXIgbm90OyBmb3IgdGhvdSBzaGFsdCBub3QgYmUgYXNoYW1lZDogbmVpdGhlciBiZSB0aG91IGNvbmZvdW5kZWQ7IGZvciB0aG91IHNoYWx0IG5vdCBiZSBwdXQgdG8gc2hhbWU6IGZvciB0aG91IHNoYWx0IGZvcmdldCB0aGUgc2hhbWUgb2YgdGh5IHlvdXRoLCBhbmQgc2hhbHQgbm90IHJlbWVtYmVyIHRoZSByZXByb2FjaCBvZiB0aHkgd2lkb3dob29kIGFueSBtb3JlLgpGb3IgdGh5IE1ha2VyIGlzIHRoaW5lIGh1c2JhbmQ7IHRoZSBMT1JEIG9mIGhvc3RzIGlzIGhpcyBuYW1lOyBhbmQgdGh5IFJlZGVlbWVyIHRoZSBIb2x5IE9uZSBvZiBJc3JhZWw7IFRoZSBHb2Qgb2YgdGhlIHdob2xlIGVhcnRoIHNoYWxsIGhlIGJlIGNhbGxlZC4KRm9yIHRoZSBMT1JEIGhhdGggY2FsbGVkIHRoZWUgYXMgYSB3b21hbiBmb3JzYWtlbiBhbmQgZ3JpZXZlZCBpbiBzcGlyaXQsIGFuZCBhIHdpZmUgb2YgeW91dGgsIHdoZW4gdGhvdSB3YXN0IHJlZnVzZWQsIHNhaXRoIHRoeSBHb2QuCkZvciBhIHNtYWxsIG1vbWVudCBoYXZlIEkgZm9yc2FrZW4gdGhlZTsgYnV0IHdpdGggZ3JlYXQgbWVyY2llcyB3aWxsIEkgZ2F0aGVyIHRoZWUuCkluIGEgbGl0dGxlIHdyYXRoIEkgaGlkIG15IGZhY2UgZnJvbSB0aGVlIGZvciBhIG1vbWVudDsgYnV0IHdpdGggZXZlcmxhc3Rpbmcga2luZG5lc3Mgd2lsbCBJIGhhdmUgbWVyY3kgb24gdGhlZSwgc2FpdGggdGhlIExPUkQgdGh5IFJlZGVlbWVyLgpGb3IgdGhpcyBpcyBhcyB0aGUgd2F0ZXJzIG9mIE5vYWggdW50byBtZTogZm9yIGFzIEkgaGF2ZSBzd29ybiB0aGF0IHRoZSB3YXRlcnMgb2YgTm9haCBzaG91bGQgbm8gbW9yZSBnbyBvdmVyIHRoZSBlYXJ0aDsgc28gaGF2ZSBJIHN3b3JuIHRoYXQgSSB3b3VsZCBub3QgYmUgd3JvdGggd2l0aCB0aGVlLCBub3IgcmVidWtlIHRoZWUuCkZvciB0aGUgbW91bnRhaW5zIHNoYWxsIGRlcGFydCwgYW5kIHRoZSBoaWxscyBiZSByZW1vdmVkOyBidXQgbXkga2luZG5lc3Mgc2hhbGwgbm90IGRlcGFydCBmcm9tIHRoZWUsIG5laXRoZXIgc2hhbGwgdGhlIGNvdmVuYW50IG9mIG15IHBlYWNlIGJlIHJlbW92ZWQsIHNhaXRoIHRoZSBMT1JEIHRoYXQgaGF0aCBtZXJjeSBvbiB0aGVlLgpPIHRob3UgYWZmbGljdGVkLCB0b3NzZWQgd2l0aCB0ZW1wZXN0LCBhbmQgbm90IGNvbWZvcnRlZCwgYmVob2xkLCBJIHdpbGwgbGF5IHRoeSBzdG9uZXMgd2l0aCBmYWlyIGNvbG91cnMsIGFuZCBsYXkgdGh5IGZvdW5kYXRpb25zIHdpdGggc2FwcGhpcmVzLgpBbmQgSSB3aWxsIG1ha2UgdGh5IHdpbmRvd3Mgb2YgYWdhdGVzLCBhbmQgdGh5IGdhdGVzIG9mIGNhcmJ1bmNsZXMsIGFuZCBhbGwgdGh5IGJvcmRlcnMgb2YgcGxlYXNhbnQgc3RvbmVzLgpBbmQgYWxsIHRoeSBjaGlsZHJlbiBzaGFsbCBiZSB0YXVnaHQgb2YgdGhlIExPUkQ7IGFuZCBncmVhdCBzaGFsbCBiZSB0aGUgcGVhY2Ugb2YgdGh5IGNoaWxkcmVuLgpJbiByaWdodGVvdXNuZXNzIHNoYWx0IHRob3UgYmUgZXN0YWJsaXNoZWQ6IHRob3Ugc2hhbHQgYmUgZmFyIGZyb20gb3BwcmVzc2lvbjsgZm9yIHRob3Ugc2hhbHQgbm90IGZlYXI6IGFuZCBmcm9tIHRlcnJvcjsgZm9yIGl0IHNoYWxsIG5vdCBjb21lIG5lYXIgdGhlZS4KQmVob2xkLCB0aGV5IHNoYWxsIHN1cmVseSBnYXRoZXIgdG9nZXRoZXIsIGJ1dCBub3QgYnkgbWU6IHdob3NvZXZlciBzaGFsbCBnYXRoZXIgdG9nZXRoZXIgYWdhaW5zdCB0aGVlIHNoYWxsIGZhbGwgZm9yIHRoeSBzYWtlLgpCZWhvbGQsIEkgaGF2ZSBjcmVhdGVkIHRoZSBzbWl0aCB0aGF0IGJsb3dldGggdGhlIGNvYWxzIGluIHRoZSBmaXJlLCBhbmQgdGhhdCBicmluZ2V0aCBmb3J0aCBhbiBpbnN0cnVtZW50IGZvciBoaXMgd29yazsgYW5kIEkgaGF2ZSBjcmVhdGVkIHRoZSB3YXN0ZXIgdG8gZGVzdHJveS4KTm8gd2VhcG9uIHRoYXQgaXMgZm9ybWVkIGFnYWluc3QgdGhlZSBzaGFsbCBwcm9zcGVyOyBhbmQgZXZlcnkgdG9uZ3VlIHRoYXQgc2hhbGwgcmlzZSBhZ2FpbnN0IHRoZWUgaW4ganVkZ21lbnQgdGhvdSBzaGFsdCBjb25kZW1uLiBUaGlzIGlzIHRoZSBoZXJpdGFnZSBvZiB0aGUgc2VydmFudHMgb2YgdGhlIExPUkQsIGFuZCB0aGVpciByaWdodGVvdXNuZXNzIGlzIG9mIG1lLCBzYWl0aCB0aGUgTE9SRC4KSG8sIGV2ZXJ5IG9uZSB0aGF0IHRoaXJzdGV0aCwgY29tZSB5ZSB0byB0aGUgd2F0ZXJzLCBhbmQgaGUgdGhhdCBoYXRoIG5vIG1vbmV5OyBjb21lIHllLCBidXksIGFuZCBlYXQ7IHllYSwgY29tZSwgYnV5IHdpbmUgYW5kIG1pbGsgd2l0aG91dCBtb25leSBhbmQgd2l0aG91dCBwcmljZS4KV2hlcmVmb3JlIGRvIHllIHNwZW5kIG1vbmV5IGZvciB0aGF0IHdoaWNoIGlzIG5vdCBicmVhZD8gYW5kIHlvdXIgbGFib3VyIGZvciB0aGF0IHdoaWNoIHNhdGlzZmlldGggbm90PyBoZWFya2VuIGRpbGlnZW50bHkgdW50byBtZSwgYW5kIGVhdCB5ZSB0aGF0IHdoaWNoIGlzIGdvb2QsIGFuZCBsZXQgeW91ciBzb3VsIGRlbGlnaHQgaXRzZWxmIGluIGZhdG5lc3MuCkluY2xpbmUgeW91ciBlYXIsIGFuZCBjb21lIHVudG8gbWU6IGhlYXIsIGFuZCB5b3VyIHNvdWwgc2hhbGwgbGl2ZTsgYW5kIEkgd2lsbCBtYWtlIGFuIGV2ZXJsYXN0aW5nIGNvdmVuYW50IHdpdGggeW91LCBldmVuIHRoZSBzdXJlIG1lcmNpZXMgb2YgRGF2aWQuCkJlaG9sZCwgSSBoYXZlIGdpdmVuIGhpbSBmb3IgYSB3aXRuZXNzIHRvIHRoZSBwZW9wbGUsIGEgbGVhZGVyIGFuZCBjb21tYW5kZXIgdG8gdGhlIHBlb3BsZS4KQmVob2xkLCB0aG91IHNoYWx0IGNhbGwgYSBuYXRpb24gdGhhdCB0aG91IGtub3dlc3Qgbm90LCBhbmQgbmF0aW9ucyB0aGF0IGtuZXcgbm90IHRoZWUgc2hhbGwgcnVuIHVudG8gdGhlZSBiZWNhdXNlIG9mIHRoZSBMT1JEIHRoeSBHb2QsIGFuZCBmb3IgdGhlIEhvbHkgT25lIG9mIElzcmFlbDsgZm9yIGhlIGhhdGggZ2xvcmlmaWVkIHRoZWUuClNlZWsgeWUgdGhlIExPUkQgd2hpbGUgaGUgbWF5IGJlIGZvdW5kLCBjYWxsIHllIHVwb24gaGltIHdoaWxlIGhlIGlzIG5lYXI6CkxldCB0aGUgd2lja2VkIGZvcnNha2UgaGlzIHdheSwgYW5kIHRoZSB1bnJpZ2h0ZW91cyBtYW4gaGlzIHRob3VnaHRzOiBhbmQgbGV0IGhpbSByZXR1cm4gdW50byB0aGUgTE9SRCwgYW5kIGhlIHdpbGwgaGF2ZSBtZXJjeSB1cG9uIGhpbTsgYW5kIHRvIG91ciBHb2QsIGZvciBoZSB3aWxsIGFidW5kYW50bHkgcGFyZG9uLgpGb3IgbXkgdGhvdWdodHMgYXJlIG5vdCB5b3VyIHRob3VnaHRzLCBuZWl0aGVyIGFyZSB5b3VyIHdheXMgbXkgd2F5cywgc2FpdGggdGhlIExPUkQuCkZvciBhcyB0aGUgaGVhdmVucyBhcmUgaGlnaGVyIHRoYW4gdGhlIGVhcnRoLCBzbyBhcmUgbXkgd2F5cyBoaWdoZXIgdGhhbiB5b3VyIHdheXMsIGFuZCBteSB0aG91Z2h0cyB0aGFuIHlvdXIgdGhvdWdodHMuCkZvciBhcyB0aGUgcmFpbiBjb21ldGggZG93biwgYW5kIHRoZSBzbm93IGZyb20gaGVhdmVuLCBhbmQgcmV0dXJuZXRoIG5vdCB0aGl0aGVyLCBidXQgd2F0ZXJldGggdGhlIGVhcnRoLCBhbmQgbWFrZXRoIGl0IGJyaW5nIGZvcnRoIGFuZCBidWQsIHRoYXQgaXQgbWF5IGdpdmUgc2VlZCB0byB0aGUgc293ZXIsIGFuZCBicmVhZCB0byB0aGUgZWF0ZXI6ClNvIHNoYWxsIG15IHdvcmQgYmUgdGhhdCBnb2V0aCBmb3J0aCBvdXQgb2YgbXkgbW91dGg6IGl0IHNoYWxsIG5vdCByZXR1cm4gdW50byBtZSB2b2lkLCBidXQgaXQgc2hhbGwgYWNjb21wbGlzaCB0aGF0IHdoaWNoIEkgcGxlYXNlLCBhbmQgaXQgc2hhbGwgcHJvc3BlciBpbiB0aGUgdGhpbmcgd2hlcmV0byBJIHNlbnQgaXQuCkZvciB5ZSBzaGFsbCBnbyBvdXQgd2l0aCBqb3ksIGFuZCBiZSBsZWQgZm9ydGggd2l0aCBwZWFjZTogdGhlIG1vdW50YWlucyBhbmQgdGhlIGhpbGxzIHNoYWxsIGJyZWFrIGZvcnRoIGJlZm9yZSB5b3UgaW50byBzaW5naW5nLCBhbmQgYWxsIHRoZSB0cmVlcyBvZiB0aGUgZmllbGQgc2hhbGwgY2xhcCB0aGVpciBoYW5kcy4KSW5zdGVhZCBvZiB0aGUgdGhvcm4gc2hhbGwgY29tZSB1cCB0aGUgZmlyIHRyZWUsIGFuZCBpbnN0ZWFkIG9mIHRoZSBicmllciBzaGFsbCBjb21lIHVwIHRoZSBteXJ0bGUgdHJlZTogYW5kIGl0IHNoYWxsIGJlIHRvIHRoZSBMT1JEIGZvciBhIG5hbWUsIGZvciBhbiBldmVybGFzdGluZyBzaWduIHRoYXQgc2hhbGwgbm90IGJlIGN1dCBvZmYuClRodXMgc2FpdGggdGhlIExPUkQsIEtlZXAgeWUganVkZ21lbnQsIGFuZCBkbyBqdXN0aWNlOiBmb3IgbXkgc2FsdmF0aW9uIGlzIG5lYXIgdG8gY29tZSwgYW5kIG15IHJpZ2h0ZW91c25lc3MgdG8gYmUgcmV2ZWFsZWQuCkJsZXNzZWQgaXMgdGhlIG1hbiB0aGF0IGRvZXRoIHRoaXMsIGFuZCB0aGUgc29uIG9mIG1hbiB0aGF0IGxheWV0aCBob2xkIG9uIGl0OyB0aGF0IGtlZXBldGggdGhlIHNhYmJhdGggZnJvbSBwb2xsdXRpbmcgaXQsIGFuZCBrZWVwZXRoIGhpcyBoYW5kIGZyb20gZG9pbmcgYW55IGV2aWwuCk5laXRoZXIgbGV0IHRoZSBzb24gb2YgdGhlIHN0cmFuZ2VyLCB0aGF0IGhhdGggam9pbmVkIGhpbXNlbGYgdG8gdGhlIExPUkQsIHNwZWFrLCBzYXlpbmcsIFRoZSBMT1JEIGhhdGggdXR0ZXJseSBzZXBhcmF0ZWQgbWUgZnJvbSBoaXMgcGVvcGxlOiBuZWl0aGVyIGxldCB0aGUgZXVudWNoIHNheSwgQmVob2xkLCBJIGFtIGEgZHJ5IHRyZWUuCkZvciB0aHVzIHNhaXRoIHRoZSBMT1JEIHVudG8gdGhlIGV1bnVjaHMgdGhhdCBrZWVwIG15IHNhYmJhdGhzLCBhbmQgY2hvb3NlIHRoZSB0aGluZ3MgdGhhdCBwbGVhc2UgbWUsIGFuZCB0YWtlIGhvbGQgb2YgbXkgY292ZW5hbnQ7CkV2ZW4gdW50byB0aGVtIHdpbGwgSSBnaXZlIGluIG1pbmUgaG91c2UgYW5kIHdpdGhpbiBteSB3YWxscyBhIHBsYWNlIGFuZCBhIG5hbWUgYmV0dGVyIHRoYW4gb2Ygc29ucyBhbmQgb2YgZGF1Z2h0ZXJzOiBJIHdpbGwgZ2l2ZSB0aGVtIGFuIGV2ZXJsYXN0aW5nIG5hbWUsIHRoYXQgc2hhbGwgbm90IGJlIGN1dCBvZmYuCkFsc28gdGhlIHNvbnMgb2YgdGhlIHN0cmFuZ2VyLCB0aGF0IGpvaW4gdGhlbXNlbHZlcyB0byB0aGUgTE9SRCwgdG8gc2VydmUgaGltLCBhbmQgdG8gbG92ZSB0aGUgbmFtZSBvZiB0aGUgTE9SRCwgdG8gYmUgaGlzIHNlcnZhbnRzLCBldmVyeSBvbmUgdGhhdCBrZWVwZXRoIHRoZSBzYWJiYXRoIGZyb20gcG9sbHV0aW5nIGl0LCBhbmQgdGFrZXRoIGhvbGQgb2YgbXkgY292ZW5hbnQ7CkV2ZW4gdGhlbSB3aWxsIEkgYnJpbmcgdG8gbXkgaG9seSBtb3VudGFpbiwgYW5kIG1ha2UgdGhlbSBqb3lmdWwgaW4gbXkgaG91c2Ugb2YgcHJheWVyOiB0aGVpciBidXJudCBvZmZlcmluZ3MgYW5kIHRoZWlyIHNhY3JpZmljZXMgc2hhbGwgYmUgYWNjZXB0ZWQgdXBvbiBtaW5lIGFsdGFyOyBmb3IgbWluZSBob3VzZSBzaGFsbCBiZSBjYWxsZWQgYW4gaG91c2Ugb2YgcHJheWVyIGZvciBhbGwgcGVvcGxlLgpUaGUgTG9yZCBHT0QsIHdoaWNoIGdhdGhlcmV0aCB0aGUgb3V0Y2FzdHMgb2YgSXNyYWVsIHNhaXRoLCBZZXQgd2lsbCBJIGdhdGhlciBvdGhlcnMgdG8gaGltLCBiZXNpZGUgdGhvc2UgdGhhdCBhcmUgZ2F0aGVyZWQgdW50byBoaW0uCkFsbCB5ZSBiZWFzdHMgb2YgdGhlIGZpZWxkLCBjb21lIHRvIGRldm91ciwgeWVhLCBhbGwgeWUgYmVhc3RzIGluIHRoZSBmb3Jlc3QuCkhpcyB3YXRjaG1lbiBhcmUgYmxpbmQ6IHRoZXkgYXJlIGFsbCBpZ25vcmFudCwgdGhleSBhcmUgYWxsIGR1bWIgZG9ncywgdGhleSBjYW5ub3QgYmFyazsgc2xlZXBpbmcsIGx5aW5nIGRvd24sIGxvdmluZyB0byBzbHVtYmVyLgpZZWEsIHRoZXkgYXJlIGdyZWVkeSBkb2dzIHdoaWNoIGNhbiBuZXZlciBoYXZlIGVub3VnaCwgYW5kIHRoZXkgYXJlIHNoZXBoZXJkcyB0aGF0IGNhbm5vdCB1bmRlcnN0YW5kOiB0aGV5IGFsbCBsb29rIHRvIHRoZWlyIG93biB3YXksIGV2ZXJ5IG9uZSBmb3IgaGlzIGdhaW4sIGZyb20gaGlzIHF1YXJ0ZXIuCkNvbWUgeWUsIHNheSB0aGV5LCBJIHdpbGwgZmV0Y2ggd2luZSwgYW5kIHdlIHdpbGwgZmlsbCBvdXJzZWx2ZXMgd2l0aCBzdHJvbmcgZHJpbms7IGFuZCB0byBtb3Jyb3cgc2hhbGwgYmUgYXMgdGhpcyBkYXksIGFuZCBtdWNoIG1vcmUgYWJ1bmRhbnQuClRoZSByaWdodGVvdXMgcGVyaXNoZXRoLCBhbmQgbm8gbWFuIGxheWV0aCBpdCB0byBoZWFydDogYW5kIG1lcmNpZnVsIG1lbiBhcmUgdGFrZW4gYXdheSwgbm9uZSBjb25zaWRlcmluZyB0aGF0IHRoZSByaWdodGVvdXMgaXMgdGFrZW4gYXdheSBmcm9tIHRoZSBldmlsIHRvIGNvbWUuCkhlIHNoYWxsIGVudGVyIGludG8gcGVhY2U6IHRoZXkgc2hhbGwgcmVzdCBpbiB0aGVpciBiZWRzLCBlYWNoIG9uZSB3YWxraW5nIGluIGhpcyB1cHJpZ2h0bmVzcy4KQnV0IGRyYXcgbmVhciBoaXRoZXIsIHllIHNvbnMgb2YgdGhlIHNvcmNlcmVzcywgdGhlIHNlZWQgb2YgdGhlIGFkdWx0ZXJlciBhbmQgdGhlIHdob3JlLgpBZ2FpbnN0IHdob20gZG8geWUgc3BvcnQgeW91cnNlbHZlcz8gYWdhaW5zdCB3aG9tIG1ha2UgeWUgYSB3aWRlIG1vdXRoLCBhbmQgZHJhdyBvdXQgdGhlIHRvbmd1ZT8gYXJlIHllIG5vdCBjaGlsZHJlbiBvZiB0cmFuc2dyZXNzaW9uLCBhIHNlZWQgb2YgZmFsc2Vob29kLgpFbmZsYW1pbmcgeW91cnNlbHZlcyB3aXRoIGlkb2xzIHVuZGVyIGV2ZXJ5IGdyZWVuIHRyZWUsIHNsYXlpbmcgdGhlIGNoaWxkcmVuIGluIHRoZSB2YWxsZXlzIHVuZGVyIHRoZSBjbGlmdHMgb2YgdGhlIHJvY2tzPwpBbW9uZyB0aGUgc21vb3RoIHN0b25lcyBvZiB0aGUgc3RyZWFtIGlzIHRoeSBwb3J0aW9uOyB0aGV5LCB0aGV5IGFyZSB0aHkgbG90OiBldmVuIHRvIHRoZW0gaGFzdCB0aG91IHBvdXJlZCBhIGRyaW5rIG9mZmVyaW5nLCB0aG91IGhhc3Qgb2ZmZXJlZCBhIG1lYXQgb2ZmZXJpbmcuIFNob3VsZCBJIHJlY2VpdmUgY29tZm9ydCBpbiB0aGVzZT8KVXBvbiBhIGxvZnR5IGFuZCBoaWdoIG1vdW50YWluIGhhc3QgdGhvdSBzZXQgdGh5IGJlZDogZXZlbiB0aGl0aGVyIHdlbnRlc3QgdGhvdSB1cCB0byBvZmZlciBzYWNyaWZpY2UuCkJlaGluZCB0aGUgZG9vcnMgYWxzbyBhbmQgdGhlIHBvc3RzIGhhc3QgdGhvdSBzZXQgdXAgdGh5IHJlbWVtYnJhbmNlOiBmb3IgdGhvdSBoYXN0IGRpc2NvdmVyZWQgdGh5c2VsZiB0byBhbm90aGVyIHRoYW4gbWUsIGFuZCBhcnQgZ29uZSB1cDsgdGhvdSBoYXN0IGVubGFyZ2VkIHRoeSBiZWQsIGFuZCBtYWRlIHRoZWUgYSBjb3ZlbmFudCB3aXRoIHRoZW07IHRob3UgbG92ZWRzdCB0aGVpciBiZWQgd2hlcmUgdGhvdSBzYXdlc3QgaXQuCkFuZCB0aG91IHdlbnRlc3QgdG8gdGhlIGtpbmcgd2l0aCBvaW50bWVudCwgYW5kIGRpZHN0IGluY3JlYXNlIHRoeSBwZXJmdW1lcywgYW5kIGRpZHN0IHNlbmQgdGh5IG1lc3NlbmdlcnMgZmFyIG9mZiwgYW5kIGRpZHN0IGRlYmFzZSB0aHlzZWxmIGV2ZW4gdW50byBoZWxsLgpUaG91IGFydCB3ZWFyaWVkIGluIHRoZSBncmVhdG5lc3Mgb2YgdGh5IHdheTsgeWV0IHNhaWRzdCB0aG91IG5vdCwgVGhlcmUgaXMgbm8gaG9wZTogdGhvdSBoYXN0IGZvdW5kIHRoZSBsaWZlIG9mIHRoaW5lIGhhbmQ7IHRoZXJlZm9yZSB0aG91IHdhc3Qgbm90IGdyaWV2ZWQuCkFuZCBvZiB3aG9tIGhhc3QgdGhvdSBiZWVuIGFmcmFpZCBvciBmZWFyZWQsIHRoYXQgdGhvdSBoYXN0IGxpZWQsIGFuZCBoYXN0IG5vdCByZW1lbWJlcmVkIG1lLCBub3IgbGFpZCBpdCB0byB0aHkgaGVhcnQ/IGhhdmUgbm90IEkgaGVsZCBteSBwZWFjZSBldmVuIG9mIG9sZCwgYW5kIHRob3UgZmVhcmVzdCBtZSBub3Q/Ckkgd2lsbCBkZWNsYXJlIHRoeSByaWdodGVvdXNuZXNzLCBhbmQgdGh5IHdvcmtzOyBmb3IgdGhleSBzaGFsbCBub3QgcHJvZml0IHRoZWUuCldoZW4gdGhvdSBjcmllc3QsIGxldCB0aHkgY29tcGFuaWVzIGRlbGl2ZXIgdGhlZTsgYnV0IHRoZSB3aW5kIHNoYWxsIGNhcnJ5IHRoZW0gYWxsIGF3YXk7IHZhbml0eSBzaGFsbCB0YWtlIHRoZW06IGJ1dCBoZSB0aGF0IHB1dHRldGggaGlzIHRydXN0IGluIG1lIHNoYWxsIHBvc3Nlc3MgdGhlIGxhbmQsIGFuZCBzaGFsbCBpbmhlcml0IG15IGhvbHkgbW91bnRhaW47CkFuZCBzaGFsbCBzYXksIENhc3QgeWUgdXAsIGNhc3QgeWUgdXAsIHByZXBhcmUgdGhlIHdheSwgdGFrZSB1cCB0aGUgc3R1bWJsaW5nYmxvY2sgb3V0IG9mIHRoZSB3YXkgb2YgbXkgcGVvcGxlLgpGb3IgdGh1cyBzYWl0aCB0aGUgaGlnaCBhbmQgbG9mdHkgT25lIHRoYXQgaW5oYWJpdGV0aCBldGVybml0eSwgd2hvc2UgbmFtZSBpcyBIb2x5OyBJIGR3ZWxsIGluIHRoZSBoaWdoIGFuZCBob2x5IHBsYWNlLCB3aXRoIGhpbSBhbHNvIHRoYXQgaXMgb2YgYSBjb250cml0ZSBhbmQgaHVtYmxlIHNwaXJpdCwgdG8gcmV2aXZlIHRoZSBzcGlyaXQgb2YgdGhlIGh1bWJsZSwgYW5kIHRvIHJldml2ZSB0aGUgaGVhcnQgb2YgdGhlIGNvbnRyaXRlIG9uZXMuCkZvciBJIHdpbGwgbm90IGNvbnRlbmQgZm9yIGV2ZXIsIG5laXRoZXIgd2lsbCBJIGJlIGFsd2F5cyB3cm90aDogZm9yIHRoZSBzcGlyaXQgc2hvdWxkIGZhaWwgYmVmb3JlIG1lLCBhbmQgdGhlIHNvdWxzIHdoaWNoIEkgaGF2ZSBtYWRlLgpGb3IgdGhlIGluaXF1aXR5IG9mIGhpcyBjb3ZldG91c25lc3Mgd2FzIEkgd3JvdGgsIGFuZCBzbW90ZSBoaW06IEkgaGlkIG1lLCBhbmQgd2FzIHdyb3RoLCBhbmQgaGUgd2VudCBvbiBmcm93YXJkbHkgaW4gdGhlIHdheSBvZiBoaXMgaGVhcnQuCkkgaGF2ZSBzZWVuIGhpcyB3YXlzLCBhbmQgd2lsbCBoZWFsIGhpbTogSSB3aWxsIGxlYWQgaGltIGFsc28sIGFuZCByZXN0b3JlIGNvbWZvcnRzIHVudG8gaGltIGFuZCB0byBoaXMgbW91cm5lcnMuCkkgY3JlYXRlIHRoZSBmcnVpdCBvZiB0aGUgbGlwczsgUGVhY2UsIHBlYWNlIHRvIGhpbSB0aGF0IGlzIGZhciBvZmYsIGFuZCB0byBoaW0gdGhhdCBpcyBuZWFyLCBzYWl0aCB0aGUgTE9SRDsgYW5kIEkgd2lsbCBoZWFsIGhpbS4KQnV0IHRoZSB3aWNrZWQgYXJlIGxpa2UgdGhlIHRyb3VibGVkIHNlYSwgd2hlbiBpdCBjYW5ub3QgcmVzdCwgd2hvc2Ugd2F0ZXJzIGNhc3QgdXAgbWlyZSBhbmQgZGlydC4KVGhlcmUgaXMgbm8gcGVhY2UsIHNhaXRoIG15IEdvZCwgdG8gdGhlIHdpY2tlZC4KQ3J5IGFsb3VkLCBzcGFyZSBub3QsIGxpZnQgdXAgdGh5IHZvaWNlIGxpa2UgYSB0cnVtcGV0LCBhbmQgc2hldyBteSBwZW9wbGUgdGhlaXIgdHJhbnNncmVzc2lvbiwgYW5kIHRoZSBob3VzZSBvZiBKYWNvYiB0aGVpciBzaW5zLgpZZXQgdGhleSBzZWVrIG1lIGRhaWx5LCBhbmQgZGVsaWdodCB0byBrbm93IG15IHdheXMsIGFzIGEgbmF0aW9uIHRoYXQgZGlkIHJpZ2h0ZW91c25lc3MsIGFuZCBmb3Jzb29rIG5vdCB0aGUgb3JkaW5hbmNlIG9mIHRoZWlyIEdvZDogdGhleSBhc2sgb2YgbWUgdGhlIG9yZGluYW5jZXMgb2YganVzdGljZTsgdGhleSB0YWtlIGRlbGlnaHQgaW4gYXBwcm9hY2hpbmcgdG8gR29kLgpXaGVyZWZvcmUgaGF2ZSB3ZSBmYXN0ZWQsIHNheSB0aGV5LCBhbmQgdGhvdSBzZWVzdCBub3Q/IHdoZXJlZm9yZSBoYXZlIHdlIGFmZmxpY3RlZCBvdXIgc291bCwgYW5kIHRob3UgdGFrZXN0IG5vIGtub3dsZWRnZT8gQmVob2xkLCBpbiB0aGUgZGF5IG9mIHlvdXIgZmFzdCB5ZSBmaW5kIHBsZWFzdXJlLCBhbmQgZXhhY3QgYWxsIHlvdXIgbGFib3Vycy4KQmVob2xkLCB5ZSBmYXN0IGZvciBzdHJpZmUgYW5kIGRlYmF0ZSwgYW5kIHRvIHNtaXRlIHdpdGggdGhlIGZpc3Qgb2Ygd2lja2VkbmVzczogeWUgc2hhbGwgbm90IGZhc3QgYXMgeWUgZG8gdGhpcyBkYXksIHRvIG1ha2UgeW91ciB2b2ljZSB0byBiZSBoZWFyZCBvbiBoaWdoLgpJcyBpdCBzdWNoIGEgZmFzdCB0aGF0IEkgaGF2ZSBjaG9zZW4/IGEgZGF5IGZvciBhIG1hbiB0byBhZmZsaWN0IGhpcyBzb3VsPyBpcyBpdCB0byBib3cgZG93biBoaXMgaGVhZCBhcyBhIGJ1bHJ1c2gsIGFuZCB0byBzcHJlYWQgc2Fja2Nsb3RoIGFuZCBhc2hlcyB1bmRlciBoaW0/IHdpbHQgdGhvdSBjYWxsIHRoaXMgYSBmYXN0LCBhbmQgYW4gYWNjZXB0YWJsZSBkYXkgdG8gdGhlIExPUkQ/CklzIG5vdCB0aGlzIHRoZSBmYXN0IHRoYXQgSSBoYXZlIGNob3Nlbj8gdG8gbG9vc2UgdGhlIGJhbmRzIG9mIHdpY2tlZG5lc3MsIHRvIHVuZG8gdGhlIGhlYXZ5IGJ1cmRlbnMsIGFuZCB0byBsZXQgdGhlIG9wcHJlc3NlZCBnbyBmcmVlLCBhbmQgdGhhdCB5ZSBicmVhayBldmVyeSB5b2tlPwpJcyBpdCBub3QgdG8gZGVhbCB0aHkgYnJlYWQgdG8gdGhlIGh1bmdyeSwgYW5kIHRoYXQgdGhvdSBicmluZyB0aGUgcG9vciB0aGF0IGFyZSBjYXN0IG91dCB0byB0aHkgaG91c2U/IHdoZW4gdGhvdSBzZWVzdCB0aGUgbmFrZWQsIHRoYXQgdGhvdSBjb3ZlciBoaW07IGFuZCB0aGF0IHRob3UgaGlkZSBub3QgdGh5c2VsZiBmcm9tIHRoaW5lIG93biBmbGVzaD8KVGhlbiBzaGFsbCB0aHkgbGlnaHQgYnJlYWsgZm9ydGggYXMgdGhlIG1vcm5pbmcsIGFuZCB0aGluZSBoZWFsdGggc2hhbGwgc3ByaW5nIGZvcnRoIHNwZWVkaWx5OiBhbmQgdGh5IHJpZ2h0ZW91c25lc3Mgc2hhbGwgZ28gYmVmb3JlIHRoZWU7IHRoZSBnbG9yeSBvZiB0aGUgTE9SRCBzaGFsbCBiZSB0aHkgcmVyZXdhcmQuClRoZW4gc2hhbHQgdGhvdSBjYWxsLCBhbmQgdGhlIExPUkQgc2hhbGwgYW5zd2VyOyB0aG91IHNoYWx0IGNyeSwgYW5kIGhlIHNoYWxsIHNheSwgSGVyZSBJIGFtLiBJZiB0aG91IHRha2UgYXdheSBmcm9tIHRoZSBtaWRzdCBvZiB0aGVlIHRoZSB5b2tlLCB0aGUgcHV0dGluZyBmb3J0aCBvZiB0aGUgZmluZ2VyLCBhbmQgc3BlYWtpbmcgdmFuaXR5OwpBbmQgaWYgdGhvdSBkcmF3IG91dCB0aHkgc291bCB0byB0aGUgaHVuZ3J5LCBhbmQgc2F0aXNmeSB0aGUgYWZmbGljdGVkIHNvdWw7IHRoZW4gc2hhbGwgdGh5IGxpZ2h0IHJpc2UgaW4gb2JzY3VyaXR5LCBhbmQgdGh5IGRhcmtuZXNzIGJlIGFzIHRoZSBub29uIGRheToKQW5kIHRoZSBMT1JEIHNoYWxsIGd1aWRlIHRoZWUgY29udGludWFsbHksIGFuZCBzYXRpc2Z5IHRoeSBzb3VsIGluIGRyb3VnaHQsIGFuZCBtYWtlIGZhdCB0aHkgYm9uZXM6IGFuZCB0aG91IHNoYWx0IGJlIGxpa2UgYSB3YXRlcmVkIGdhcmRlbiwgYW5kIGxpa2UgYSBzcHJpbmcgb2Ygd2F0ZXIsIHdob3NlIHdhdGVycyBmYWlsIG5vdC4KQW5kIHRoZXkgdGhhdCBzaGFsbCBiZSBvZiB0aGVlIHNoYWxsIGJ1aWxkIHRoZSBvbGQgd2FzdGUgcGxhY2VzOiB0aG91IHNoYWx0IHJhaXNlIHVwIHRoZSBmb3VuZGF0aW9ucyBvZiBtYW55IGdlbmVyYXRpb25zOyBhbmQgdGhvdSBzaGFsdCBiZSBjYWxsZWQsIFRoZSByZXBhaXJlciBvZiB0aGUgYnJlYWNoLCBUaGUgcmVzdG9yZXIgb2YgcGF0aHMgdG8gZHdlbGwgaW4uCklmIHRob3UgdHVybiBhd2F5IHRoeSBmb290IGZyb20gdGhlIHNhYmJhdGgsIGZyb20gZG9pbmcgdGh5IHBsZWFzdXJlIG9uIG15IGhvbHkgZGF5OyBhbmQgY2FsbCB0aGUgc2FiYmF0aCBhIGRlbGlnaHQsIHRoZSBob2x5IG9mIHRoZSBMT1JELCBob25vdXJhYmxlOyBhbmQgc2hhbHQgaG9ub3VyIGhpbSwgbm90IGRvaW5nIHRoaW5lIG93biB3YXlzLCBub3IgZmluZGluZyB0aGluZSBvd24gcGxlYXN1cmUsIG5vciBzcGVha2luZyB0aGluZSBvd24gd29yZHM6ClRoZW4gc2hhbHQgdGhvdSBkZWxpZ2h0IHRoeXNlbGYgaW4gdGhlIExPUkQ7IGFuZCBJIHdpbGwgY2F1c2UgdGhlZSB0byByaWRlIHVwb24gdGhlIGhpZ2ggcGxhY2VzIG9mIHRoZSBlYXJ0aCwgYW5kIGZlZWQgdGhlZSB3aXRoIHRoZSBoZXJpdGFnZSBvZiBKYWNvYiB0aHkgZmF0aGVyOiBmb3IgdGhlIG1vdXRoIG9mIHRoZSBMT1JEIGhhdGggc3Bva2VuIGl0LgpCZWhvbGQsIHRoZSBMT1JEJ3MgaGFuZCBpcyBub3Qgc2hvcnRlbmVkLCB0aGF0IGl0IGNhbm5vdCBzYXZlOyBuZWl0aGVyIGhpcyBlYXIgaGVhdnksIHRoYXQgaXQgY2Fubm90IGhlYXI6CkJ1dCB5b3VyIGluaXF1aXRpZXMgaGF2ZSBzZXBhcmF0ZWQgYmV0d2VlbiB5b3UgYW5kIHlvdXIgR29kLCBhbmQgeW91ciBzaW5zIGhhdmUgaGlkIGhpcyBmYWNlIGZyb20geW91LCB0aGF0IGhlIHdpbGwgbm90IGhlYXIuCkZvciB5b3VyIGhhbmRzIGFyZSBkZWZpbGVkIHdpdGggYmxvb2QsIGFuZCB5b3VyIGZpbmdlcnMgd2l0aCBpbmlxdWl0eTsgeW91ciBsaXBzIGhhdmUgc3Bva2VuIGxpZXMsIHlvdXIgdG9uZ3VlIGhhdGggbXV0dGVyZWQgcGVydmVyc2VuZXNzLgpOb25lIGNhbGxldGggZm9yIGp1c3RpY2UsIG5vciBhbnkgcGxlYWRldGggZm9yIHRydXRoOiB0aGV5IHRydXN0IGluIHZhbml0eSwgYW5kIHNwZWFrIGxpZXM7IHRoZXkgY29uY2VpdmUgbWlzY2hpZWYsIGFuZCBicmluZyBmb3J0aCBpbmlxdWl0eS4KVGhleSBoYXRjaCBjb2NrYXRyaWNlJyBlZ2dzLCBhbmQgd2VhdmUgdGhlIHNwaWRlcidzIHdlYjogaGUgdGhhdCBlYXRldGggb2YgdGhlaXIgZWdncyBkaWV0aCwgYW5kIHRoYXQgd2hpY2ggaXMgY3J1c2hlZCBicmVha2V0aCBvdXQgaW50byBhIHZpcGVyLgpUaGVpciB3ZWJzIHNoYWxsIG5vdCBiZWNvbWUgZ2FybWVudHMsIG5laXRoZXIgc2hhbGwgdGhleSBjb3ZlciB0aGVtc2VsdmVzIHdpdGggdGhlaXIgd29ya3M6IHRoZWlyIHdvcmtzIGFyZSB3b3JrcyBvZiBpbmlxdWl0eSwgYW5kIHRoZSBhY3Qgb2YgdmlvbGVuY2UgaXMgaW4gdGhlaXIgaGFuZHMuClRoZWlyIGZlZXQgcnVuIHRvIGV2aWwsIGFuZCB0aGV5IG1ha2UgaGFzdGUgdG8gc2hlZCBpbm5vY2VudCBibG9vZDogdGhlaXIgdGhvdWdodHMgYXJlIHRob3VnaHRzIG9mIGluaXF1aXR5OyB3YXN0aW5nIGFuZCBkZXN0cnVjdGlvbiBhcmUgaW4gdGhlaXIgcGF0aHMuClRoZSB3YXkgb2YgcGVhY2UgdGhleSBrbm93IG5vdDsgYW5kIHRoZXJlIGlzIG5vIGp1ZGdtZW50IGluIHRoZWlyIGdvaW5nczogdGhleSBoYXZlIG1hZGUgdGhlbSBjcm9va2VkIHBhdGhzOiB3aG9zb2V2ZXIgZ29ldGggdGhlcmVpbiBzaGFsbCBub3Qga25vdyBwZWFjZS4KVGhlcmVmb3JlIGlzIGp1ZGdtZW50IGZhciBmcm9tIHVzLCBuZWl0aGVyIGRvdGgganVzdGljZSBvdmVydGFrZSB1czogd2Ugd2FpdCBmb3IgbGlnaHQsIGJ1dCBiZWhvbGQgb2JzY3VyaXR5OyBmb3IgYnJpZ2h0bmVzcywgYnV0IHdlIHdhbGsgaW4gZGFya25lc3MuCldlIGdyb3BlIGZvciB0aGUgd2FsbCBsaWtlIHRoZSBibGluZCwgYW5kIHdlIGdyb3BlIGFzIGlmIHdlIGhhZCBubyBleWVzOiB3ZSBzdHVtYmxlIGF0IG5vb24gZGF5IGFzIGluIHRoZSBuaWdodDsgd2UgYXJlIGluIGRlc29sYXRlIHBsYWNlcyBhcyBkZWFkIG1lbi4KV2Ugcm9hciBhbGwgbGlrZSBiZWFycywgYW5kIG1vdXJuIHNvcmUgbGlrZSBkb3Zlczogd2UgbG9vayBmb3IganVkZ21lbnQsIGJ1dCB0aGVyZSBpcyBub25lOyBmb3Igc2FsdmF0aW9uLCBidXQgaXQgaXMgZmFyIG9mZiBmcm9tIHVzLgpGb3Igb3VyIHRyYW5zZ3Jlc3Npb25zIGFyZSBtdWx0aXBsaWVkIGJlZm9yZSB0aGVlLCBhbmQgb3VyIHNpbnMgdGVzdGlmeSBhZ2FpbnN0IHVzOiBmb3Igb3VyIHRyYW5zZ3Jlc3Npb25zIGFyZSB3aXRoIHVzOyBhbmQgYXMgZm9yIG91ciBpbmlxdWl0aWVzLCB3ZSBrbm93IHRoZW07CkluIHRyYW5zZ3Jlc3NpbmcgYW5kIGx5aW5nIGFnYWluc3QgdGhlIExPUkQsIGFuZCBkZXBhcnRpbmcgYXdheSBmcm9tIG91ciBHb2QsIHNwZWFraW5nIG9wcHJlc3Npb24gYW5kIHJldm9sdCwgY29uY2VpdmluZyBhbmQgdXR0ZXJpbmcgZnJvbSB0aGUgaGVhcnQgd29yZHMgb2YgZmFsc2Vob29kLgpBbmQganVkZ21lbnQgaXMgdHVybmVkIGF3YXkgYmFja3dhcmQsIGFuZCBqdXN0aWNlIHN0YW5kZXRoIGFmYXIgb2ZmOiBmb3IgdHJ1dGggaXMgZmFsbGVuIGluIHRoZSBzdHJlZXQsIGFuZCBlcXVpdHkgY2Fubm90IGVudGVyLgpZZWEsIHRydXRoIGZhaWxldGg7IGFuZCBoZSB0aGF0IGRlcGFydGV0aCBmcm9tIGV2aWwgbWFrZXRoIGhpbXNlbGYgYSBwcmV5OiBhbmQgdGhlIExPUkQgc2F3IGl0LCBhbmQgaXQgZGlzcGxlYXNlZCBoaW0gdGhhdCB0aGVyZSB3YXMgbm8ganVkZ21lbnQuCkFuZCBoZSBzYXcgdGhhdCB0aGVyZSB3YXMgbm8gbWFuLCBhbmQgd29uZGVyZWQgdGhhdCB0aGVyZSB3YXMgbm8gaW50ZXJjZXNzb3I6IHRoZXJlZm9yZSBoaXMgYXJtIGJyb3VnaHQgc2FsdmF0aW9uIHVudG8gaGltOyBhbmQgaGlzIHJpZ2h0ZW91c25lc3MsIGl0IHN1c3RhaW5lZCBoaW0uCkZvciBoZSBwdXQgb24gcmlnaHRlb3VzbmVzcyBhcyBhIGJyZWFzdHBsYXRlLCBhbmQgYW4gaGVsbWV0IG9mIHNhbHZhdGlvbiB1cG9uIGhpcyBoZWFkOyBhbmQgaGUgcHV0IG9uIHRoZSBnYXJtZW50cyBvZiB2ZW5nZWFuY2UgZm9yIGNsb3RoaW5nLCBhbmQgd2FzIGNsYWQgd2l0aCB6ZWFsIGFzIGEgY2xvYWsuCkFjY29yZGluZyB0byB0aGVpciBkZWVkcywgYWNjb3JkaW5nbHkgaGUgd2lsbCByZXBheSwgZnVyeSB0byBoaXMgYWR2ZXJzYXJpZXMsIHJlY29tcGVuY2UgdG8gaGlzIGVuZW1pZXM7IHRvIHRoZSBpc2xhbmRzIGhlIHdpbGwgcmVwYXkgcmVjb21wZW5jZS4KU28gc2hhbGwgdGhleSBmZWFyIHRoZSBuYW1lIG9mIHRoZSBMT1JEIGZyb20gdGhlIHdlc3QsIGFuZCBoaXMgZ2xvcnkgZnJvbSB0aGUgcmlzaW5nIG9mIHRoZSBzdW4uIFdoZW4gdGhlIGVuZW15IHNoYWxsIGNvbWUgaW4gbGlrZSBhIGZsb29kLCB0aGUgU3Bpcml0IG9mIHRoZSBMT1JEIHNoYWxsIGxpZnQgdXAgYSBzdGFuZGFyZCBhZ2FpbnN0IGhpbS4KQW5kIHRoZSBSZWRlZW1lciBzaGFsbCBjb21lIHRvIFppb24sIGFuZCB1bnRvIHRoZW0gdGhhdCB0dXJuIGZyb20gdHJhbnNncmVzc2lvbiBpbiBKYWNvYiwgc2FpdGggdGhlIExPUkQuCkFzIGZvciBtZSwgdGhpcyBpcyBteSBjb3ZlbmFudCB3aXRoIHRoZW0sIHNhaXRoIHRoZSBMT1JEOyBNeSBzcGlyaXQgdGhhdCBpcyB1cG9uIHRoZWUsIGFuZCBteSB3b3JkcyB3aGljaCBJIGhhdmUgcHV0IGluIHRoeSBtb3V0aCwgc2hhbGwgbm90IGRlcGFydCBvdXQgb2YgdGh5IG1vdXRoLCBub3Igb3V0IG9mIHRoZSBtb3V0aCBvZiB0aHkgc2VlZCwgbm9yIG91dCBvZiB0aGUgbW91dGggb2YgdGh5IHNlZWQncyBzZWVkLCBzYWl0aCB0aGUgTE9SRCwgZnJvbSBoZW5jZWZvcnRoIGFuZCBmb3IgZXZlci4KQXJpc2UsIHNoaW5lOyBmb3IgdGh5IGxpZ2h0IGlzIGNvbWUsIGFuZCB0aGUgZ2xvcnkgb2YgdGhlIExPUkQgaXMgcmlzZW4gdXBvbiB0aGVlLgpGb3IsIGJlaG9sZCwgdGhlIGRhcmtuZXNzIHNoYWxsIGNvdmVyIHRoZSBlYXJ0aCwgYW5kIGdyb3NzIGRhcmtuZXNzIHRoZSBwZW9wbGU6IGJ1dCB0aGUgTE9SRCBzaGFsbCBhcmlzZSB1cG9uIHRoZWUsIGFuZCBoaXMgZ2xvcnkgc2hhbGwgYmUgc2VlbiB1cG9uIHRoZWUuCkFuZCB0aGUgR2VudGlsZXMgc2hhbGwgY29tZSB0byB0aHkgbGlnaHQsIGFuZCBraW5ncyB0byB0aGUgYnJpZ2h0bmVzcyBvZiB0aHkgcmlzaW5nLgpMaWZ0IHVwIHRoaW5lIGV5ZXMgcm91bmQgYWJvdXQsIGFuZCBzZWU6IGFsbCB0aGV5IGdhdGhlciB0aGVtc2VsdmVzIHRvZ2V0aGVyLCB0aGV5IGNvbWUgdG8gdGhlZTogdGh5IHNvbnMgc2hhbGwgY29tZSBmcm9tIGZhciwgYW5kIHRoeSBkYXVnaHRlcnMgc2hhbGwgYmUgbnVyc2VkIGF0IHRoeSBzaWRlLgpUaGVuIHRob3Ugc2hhbHQgc2VlLCBhbmQgZmxvdyB0b2dldGhlciwgYW5kIHRoaW5lIGhlYXJ0IHNoYWxsIGZlYXIsIGFuZCBiZSBlbmxhcmdlZDsgYmVjYXVzZSB0aGUgYWJ1bmRhbmNlIG9mIHRoZSBzZWEgc2hhbGwgYmUgY29udmVydGVkIHVudG8gdGhlZSwgdGhlIGZvcmNlcyBvZiB0aGUgR2VudGlsZXMgc2hhbGwgY29tZSB1bnRvIHRoZWUuClRoZSBtdWx0aXR1ZGUgb2YgY2FtZWxzIHNoYWxsIGNvdmVyIHRoZWUsIHRoZSBkcm9tZWRhcmllcyBvZiBNaWRpYW4gYW5kIEVwaGFoOyBhbGwgdGhleSBmcm9tIFNoZWJhIHNoYWxsIGNvbWU6IHRoZXkgc2hhbGwgYnJpbmcgZ29sZCBhbmQgaW5jZW5zZTsgYW5kIHRoZXkgc2hhbGwgc2hldyBmb3J0aCB0aGUgcHJhaXNlcyBvZiB0aGUgTE9SRC4KQWxsIHRoZSBmbG9ja3Mgb2YgS2VkYXIgc2hhbGwgYmUgZ2F0aGVyZWQgdG9nZXRoZXIgdW50byB0aGVlLCB0aGUgcmFtcyBvZiBOZWJhaW90aCBzaGFsbCBtaW5pc3RlciB1bnRvIHRoZWU6IHRoZXkgc2hhbGwgY29tZSB1cCB3aXRoIGFjY2VwdGFuY2Ugb24gbWluZSBhbHRhciwgYW5kIEkgd2lsbCBnbG9yaWZ5IHRoZSBob3VzZSBvZiBteSBnbG9yeS4KV2hvIGFyZSB0aGVzZSB0aGF0IGZseSBhcyBhIGNsb3VkLCBhbmQgYXMgdGhlIGRvdmVzIHRvIHRoZWlyIHdpbmRvd3M/ClN1cmVseSB0aGUgaXNsZXMgc2hhbGwgd2FpdCBmb3IgbWUsIGFuZCB0aGUgc2hpcHMgb2YgVGFyc2hpc2ggZmlyc3QsIHRvIGJyaW5nIHRoeSBzb25zIGZyb20gZmFyLCB0aGVpciBzaWx2ZXIgYW5kIHRoZWlyIGdvbGQgd2l0aCB0aGVtLCB1bnRvIHRoZSBuYW1lIG9mIHRoZSBMT1JEIHRoeSBHb2QsIGFuZCB0byB0aGUgSG9seSBPbmUgb2YgSXNyYWVsLCBiZWNhdXNlIGhlIGhhdGggZ2xvcmlmaWVkIHRoZWUuCkFuZCB0aGUgc29ucyBvZiBzdHJhbmdlcnMgc2hhbGwgYnVpbGQgdXAgdGh5IHdhbGxzLCBhbmQgdGhlaXIga2luZ3Mgc2hhbGwgbWluaXN0ZXIgdW50byB0aGVlOiBmb3IgaW4gbXkgd3JhdGggSSBzbW90ZSB0aGVlLCBidXQgaW4gbXkgZmF2b3VyIGhhdmUgSSBoYWQgbWVyY3kgb24gdGhlZS4KVGhlcmVmb3JlIHRoeSBnYXRlcyBzaGFsbCBiZSBvcGVuIGNvbnRpbnVhbGx5OyB0aGV5IHNoYWxsIG5vdCBiZSBzaHV0IGRheSBub3IgbmlnaHQ7IHRoYXQgbWVuIG1heSBicmluZyB1bnRvIHRoZWUgdGhlIGZvcmNlcyBvZiB0aGUgR2VudGlsZXMsIGFuZCB0aGF0IHRoZWlyIGtpbmdzIG1heSBiZSBicm91Z2h0LgpGb3IgdGhlIG5hdGlvbiBhbmQga2luZ2RvbSB0aGF0IHdpbGwgbm90IHNlcnZlIHRoZWUgc2hhbGwgcGVyaXNoOyB5ZWEsIHRob3NlIG5hdGlvbnMgc2hhbGwgYmUgdXR0ZXJseSB3YXN0ZWQuClRoZSBnbG9yeSBvZiBMZWJhbm9uIHNoYWxsIGNvbWUgdW50byB0aGVlLCB0aGUgZmlyIHRyZWUsIHRoZSBwaW5lIHRyZWUsIGFuZCB0aGUgYm94IHRvZ2V0aGVyLCB0byBiZWF1dGlmeSB0aGUgcGxhY2Ugb2YgbXkgc2FuY3R1YXJ5OyBhbmQgSSB3aWxsIG1ha2UgdGhlIHBsYWNlIG9mIG15IGZlZXQgZ2xvcmlvdXMuClRoZSBzb25zIGFsc28gb2YgdGhlbSB0aGF0IGFmZmxpY3RlZCB0aGVlIHNoYWxsIGNvbWUgYmVuZGluZyB1bnRvIHRoZWU7IGFuZCBhbGwgdGhleSB0aGF0IGRlc3Bpc2VkIHRoZWUgc2hhbGwgYm93IHRoZW1zZWx2ZXMgZG93biBhdCB0aGUgc29sZXMgb2YgdGh5IGZlZXQ7IGFuZCB0aGV5IHNoYWxsIGNhbGwgdGhlZTsgVGhlIGNpdHkgb2YgdGhlIExPUkQsIFRoZSBaaW9uIG9mIHRoZSBIb2x5IE9uZSBvZiBJc3JhZWwuCldoZXJlYXMgdGhvdSBoYXMgYmVlbiBmb3JzYWtlbiBhbmQgaGF0ZWQsIHNvIHRoYXQgbm8gbWFuIHdlbnQgdGhyb3VnaCB0aGVlLCBJIHdpbGwgbWFrZSB0aGVlIGFuIGV0ZXJuYWwgZXhjZWxsZW5jeSwgYSBqb3kgb2YgbWFueSBnZW5lcmF0aW9ucy4KVGhvdSBzaGFsdCBhbHNvIHN1Y2sgdGhlIG1pbGsgb2YgdGhlIEdlbnRpbGVzLCBhbmQgc2hhbHQgc3VjayB0aGUgYnJlYXN0IG9mIGtpbmdzOiBhbmQgdGhvdSBzaGFsdCBrbm93IHRoYXQgSSB0aGUgTE9SRCBhbSB0aHkgU2F2aW91ciBhbmQgdGh5IFJlZGVlbWVyLCB0aGUgbWlnaHR5IE9uZSBvZiBKYWNvYi4KRm9yIGJyYXNzIEkgd2lsbCBicmluZyBnb2xkLCBhbmQgZm9yIGlyb24gSSB3aWxsIGJyaW5nIHNpbHZlciwgYW5kIGZvciB3b29kIGJyYXNzLCBhbmQgZm9yIHN0b25lcyBpcm9uOiBJIHdpbGwgYWxzbyBtYWtlIHRoeSBvZmZpY2VycyBwZWFjZSwgYW5kIHRoaW5lIGV4YWN0b3JzIHJpZ2h0ZW91c25lc3MuClZpb2xlbmNlIHNoYWxsIG5vIG1vcmUgYmUgaGVhcmQgaW4gdGh5IGxhbmQsIHdhc3Rpbmcgbm9yIGRlc3RydWN0aW9uIHdpdGhpbiB0aHkgYm9yZGVyczsgYnV0IHRob3Ugc2hhbHQgY2FsbCB0aHkgd2FsbHMgU2FsdmF0aW9uLCBhbmQgdGh5IGdhdGVzIFByYWlzZS4KVGhlIHN1biBzaGFsbCBiZSBubyBtb3JlIHRoeSBsaWdodCBieSBkYXk7IG5laXRoZXIgZm9yIGJyaWdodG5lc3Mgc2hhbGwgdGhlIG1vb24gZ2l2ZSBsaWdodCB1bnRvIHRoZWU6IGJ1dCB0aGUgTE9SRCBzaGFsbCBiZSB1bnRvIHRoZWUgYW4gZXZlcmxhc3RpbmcgbGlnaHQsIGFuZCB0aHkgR29kIHRoeSBnbG9yeS4KVGh5IHN1biBzaGFsbCBubyBtb3JlIGdvIGRvd247IG5laXRoZXIgc2hhbGwgdGh5IG1vb24gd2l0aGRyYXcgaXRzZWxmOiBmb3IgdGhlIExPUkQgc2hhbGwgYmUgdGhpbmUgZXZlcmxhc3RpbmcgbGlnaHQsIGFuZCB0aGUgZGF5cyBvZiB0aHkgbW91cm5pbmcgc2hhbGwgYmUgZW5kZWQuClRoeSBwZW9wbGUgYWxzbyBzaGFsbCBiZSBhbGwgcmlnaHRlb3VzOiB0aGV5IHNoYWxsIGluaGVyaXQgdGhlIGxhbmQgZm9yIGV2ZXIsIHRoZSBicmFuY2ggb2YgbXkgcGxhbnRpbmcsIHRoZSB3b3JrIG9mIG15IGhhbmRzLCB0aGF0IEkgbWF5IGJlIGdsb3JpZmllZC4KQSBsaXR0bGUgb25lIHNoYWxsIGJlY29tZSBhIHRob3VzYW5kLCBhbmQgYSBzbWFsbCBvbmUgYSBzdHJvbmcgbmF0aW9uOiBJIHRoZSBMT1JEIHdpbGwgaGFzdGVuIGl0IGluIGhpcyB0aW1lLgpUaGUgU3Bpcml0IG9mIHRoZSBMb3JkIEdPRCBpcyB1cG9uIG1lOyBiZWNhdXNlIHRoZSBMT1JEIGhhdGggYW5vaW50ZWQgbWUgdG8gcHJlYWNoIGdvb2QgdGlkaW5ncyB1bnRvIHRoZSBtZWVrOyBoZSBoYXRoIHNlbnQgbWUgdG8gYmluZCB1cCB0aGUgYnJva2VuaGVhcnRlZCwgdG8gcHJvY2xhaW0gbGliZXJ0eSB0byB0aGUgY2FwdGl2ZXMsIGFuZCB0aGUgb3BlbmluZyBvZiB0aGUgcHJpc29uIHRvIHRoZW0gdGhhdCBhcmUgYm91bmQ7ClRvIHByb2NsYWltIHRoZSBhY2NlcHRhYmxlIHllYXIgb2YgdGhlIExPUkQsIGFuZCB0aGUgZGF5IG9mIHZlbmdlYW5jZSBvZiBvdXIgR29kOyB0byBjb21mb3J0IGFsbCB0aGF0IG1vdXJuOwpUbyBhcHBvaW50IHVudG8gdGhlbSB0aGF0IG1vdXJuIGluIFppb24sIHRvIGdpdmUgdW50byB0aGVtIGJlYXV0eSBmb3IgYXNoZXMsIHRoZSBvaWwgb2Ygam95IGZvciBtb3VybmluZywgdGhlIGdhcm1lbnQgb2YgcHJhaXNlIGZvciB0aGUgc3Bpcml0IG9mIGhlYXZpbmVzczsgdGhhdCB0aGV5IG1pZ2h0IGJlIGNhbGxlZCB0cmVlcyBvZiByaWdodGVvdXNuZXNzLCB0aGUgcGxhbnRpbmcgb2YgdGhlIExPUkQsIHRoYXQgaGUgbWlnaHQgYmUgZ2xvcmlmaWVkLgpBbmQgdGhleSBzaGFsbCBidWlsZCB0aGUgb2xkIHdhc3RlcywgdGhleSBzaGFsbCByYWlzZSB1cCB0aGUgZm9ybWVyIGRlc29sYXRpb25zLCBhbmQgdGhleSBzaGFsbCByZXBhaXIgdGhlIHdhc3RlIGNpdGllcywgdGhlIGRlc29sYXRpb25zIG9mIG1hbnkgZ2VuZXJhdGlvbnMuCkFuZCBzdHJhbmdlcnMgc2hhbGwgc3RhbmQgYW5kIGZlZWQgeW91ciBmbG9ja3MsIGFuZCB0aGUgc29ucyBvZiB0aGUgYWxpZW4gc2hhbGwgYmUgeW91ciBwbG93bWVuIGFuZCB5b3VyIHZpbmVkcmVzc2Vycy4KQnV0IHllIHNoYWxsIGJlIG5hbWVkIHRoZSBQcmllc3RzIG9mIHRoZSBMT1JEOiBtZW4gc2hhbGwgY2FsbCB5b3UgdGhlIE1pbmlzdGVycyBvZiBvdXIgR29kOiB5ZSBzaGFsbCBlYXQgdGhlIHJpY2hlcyBvZiB0aGUgR2VudGlsZXMsIGFuZCBpbiB0aGVpciBnbG9yeSBzaGFsbCB5ZSBib2FzdCB5b3Vyc2VsdmVzLgpGb3IgeW91ciBzaGFtZSB5ZSBzaGFsbCBoYXZlIGRvdWJsZTsgYW5kIGZvciBjb25mdXNpb24gdGhleSBzaGFsbCByZWpvaWNlIGluIHRoZWlyIHBvcnRpb246IHRoZXJlZm9yZSBpbiB0aGVpciBsYW5kIHRoZXkgc2hhbGwgcG9zc2VzcyB0aGUgZG91YmxlOiBldmVybGFzdGluZyBqb3kgc2hhbGwgYmUgdW50byB0aGVtLgpGb3IgSSB0aGUgTE9SRCBsb3ZlIGp1ZGdtZW50LCBJIGhhdGUgcm9iYmVyeSBmb3IgYnVybnQgb2ZmZXJpbmc7IGFuZCBJIHdpbGwgZGlyZWN0IHRoZWlyIHdvcmsgaW4gdHJ1dGgsIGFuZCBJIHdpbGwgbWFrZSBhbiBldmVybGFzdGluZyBjb3ZlbmFudCB3aXRoIHRoZW0uCkFuZCB0aGVpciBzZWVkIHNoYWxsIGJlIGtub3duIGFtb25nIHRoZSBHZW50aWxlcywgYW5kIHRoZWlyIG9mZnNwcmluZyBhbW9uZyB0aGUgcGVvcGxlOiBhbGwgdGhhdCBzZWUgdGhlbSBzaGFsbCBhY2tub3dsZWRnZSB0aGVtLCB0aGF0IHRoZXkgYXJlIHRoZSBzZWVkIHdoaWNoIHRoZSBMT1JEIGhhdGggYmxlc3NlZC4KSSB3aWxsIGdyZWF0bHkgcmVqb2ljZSBpbiB0aGUgTE9SRCwgbXkgc291bCBzaGFsbCBiZSBqb3lmdWwgaW4gbXkgR29kOyBmb3IgaGUgaGF0aCBjbG90aGVkIG1lIHdpdGggdGhlIGdhcm1lbnRzIG9mIHNhbHZhdGlvbiwgaGUgaGF0aCBjb3ZlcmVkIG1lIHdpdGggdGhlIHJvYmUgb2YgcmlnaHRlb3VzbmVzcywgYXMgYSBicmlkZWdyb29tIGRlY2tldGggaGltc2VsZiB3aXRoIG9ybmFtZW50cywgYW5kIGFzIGEgYnJpZGUgYWRvcm5ldGggaGVyc2VsZiB3aXRoIGhlciBqZXdlbHMuCkZvciBhcyB0aGUgZWFydGggYnJpbmdldGggZm9ydGggaGVyIGJ1ZCwgYW5kIGFzIHRoZSBnYXJkZW4gY2F1c2V0aCB0aGUgdGhpbmdzIHRoYXQgYXJlIHNvd24gaW4gaXQgdG8gc3ByaW5nIGZvcnRoOyBzbyB0aGUgTG9yZCBHT0Qgd2lsbCBjYXVzZSByaWdodGVvdXNuZXNzIGFuZCBwcmFpc2UgdG8gc3ByaW5nIGZvcnRoIGJlZm9yZSBhbGwgdGhlIG5hdGlvbnMuCkZvciBaaW9uJ3Mgc2FrZSB3aWxsIEkgbm90IGhvbGQgbXkgcGVhY2UsIGFuZCBmb3IgSmVydXNhbGVtJ3Mgc2FrZSBJIHdpbGwgbm90IHJlc3QsIHVudGlsIHRoZSByaWdodGVvdXNuZXNzIHRoZXJlb2YgZ28gZm9ydGggYXMgYnJpZ2h0bmVzcywgYW5kIHRoZSBzYWx2YXRpb24gdGhlcmVvZiBhcyBhIGxhbXAgdGhhdCBidXJuZXRoLgpBbmQgdGhlIEdlbnRpbGVzIHNoYWxsIHNlZSB0aHkgcmlnaHRlb3VzbmVzcywgYW5kIGFsbCBraW5ncyB0aHkgZ2xvcnk6IGFuZCB0aG91IHNoYWx0IGJlIGNhbGxlZCBieSBhIG5ldyBuYW1lLCB3aGljaCB0aGUgbW91dGggb2YgdGhlIExPUkQgc2hhbGwgbmFtZS4KVGhvdSBzaGFsdCBhbHNvIGJlIGEgY3Jvd24gb2YgZ2xvcnkgaW4gdGhlIGhhbmQgb2YgdGhlIExPUkQsIGFuZCBhIHJveWFsIGRpYWRlbSBpbiB0aGUgaGFuZCBvZiB0aHkgR29kLgpUaG91IHNoYWx0IG5vIG1vcmUgYmUgdGVybWVkIEZvcnNha2VuOyBuZWl0aGVyIHNoYWxsIHRoeSBsYW5kIGFueSBtb3JlIGJlIHRlcm1lZCBEZXNvbGF0ZTogYnV0IHRob3Ugc2hhbHQgYmUgY2FsbGVkIEhlcGh6aWJhaCwgYW5kIHRoeSBsYW5kIEJldWxhaDogZm9yIHRoZSBMT1JEIGRlbGlnaHRldGggaW4gdGhlZSwgYW5kIHRoeSBsYW5kIHNoYWxsIGJlIG1hcnJpZWQuCkZvciBhcyBhIHlvdW5nIG1hbiBtYXJyaWV0aCBhIHZpcmdpbiwgc28gc2hhbGwgdGh5IHNvbnMgbWFycnkgdGhlZTogYW5kIGFzIHRoZSBicmlkZWdyb29tIHJlam9pY2V0aCBvdmVyIHRoZSBicmlkZSwgc28gc2hhbGwgdGh5IEdvZCByZWpvaWNlIG92ZXIgdGhlZS4KSSBoYXZlIHNldCB3YXRjaG1lbiB1cG9uIHRoeSB3YWxscywgTyBKZXJ1c2FsZW0sIHdoaWNoIHNoYWxsIG5ldmVyIGhvbGQgdGhlaXIgcGVhY2UgZGF5IG5vciBuaWdodDogeWUgdGhhdCBtYWtlIG1lbnRpb24gb2YgdGhlIExPUkQsIGtlZXAgbm90IHNpbGVuY2UsCkFuZCBnaXZlIGhpbSBubyByZXN0LCB0aWxsIGhlIGVzdGFibGlzaCwgYW5kIHRpbGwgaGUgbWFrZSBKZXJ1c2FsZW0gYSBwcmFpc2UgaW4gdGhlIGVhcnRoLgpUaGUgTE9SRCBoYXRoIHN3b3JuIGJ5IGhpcyByaWdodCBoYW5kLCBhbmQgYnkgdGhlIGFybSBvZiBoaXMgc3RyZW5ndGgsIFN1cmVseSBJIHdpbGwgbm8gbW9yZSBnaXZlIHRoeSBjb3JuIHRvIGJlIG1lYXQgZm9yIHRoaW5lIGVuZW1pZXM7IGFuZCB0aGUgc29ucyBvZiB0aGUgc3RyYW5nZXIgc2hhbGwgbm90IGRyaW5rIHRoeSB3aW5lLCBmb3IgdGhlIHdoaWNoIHRob3UgaGFzdCBsYWJvdXJlZDoKQnV0IHRoZXkgdGhhdCBoYXZlIGdhdGhlcmVkIGl0IHNoYWxsIGVhdCBpdCwgYW5kIHByYWlzZSB0aGUgTE9SRDsgYW5kIHRoZXkgdGhhdCBoYXZlIGJyb3VnaHQgaXQgdG9nZXRoZXIgc2hhbGwgZHJpbmsgaXQgaW4gdGhlIGNvdXJ0cyBvZiBteSBob2xpbmVzcy4KR28gdGhyb3VnaCwgZ28gdGhyb3VnaCB0aGUgZ2F0ZXM7IHByZXBhcmUgeWUgdGhlIHdheSBvZiB0aGUgcGVvcGxlOyBjYXN0IHVwLCBjYXN0IHVwIHRoZSBoaWdod2F5OyBnYXRoZXIgb3V0IHRoZSBzdG9uZXM7IGxpZnQgdXAgYSBzdGFuZGFyZCBmb3IgdGhlIHBlb3BsZS4KQmVob2xkLCB0aGUgTE9SRCBoYXRoIHByb2NsYWltZWQgdW50byB0aGUgZW5kIG9mIHRoZSB3b3JsZCwgU2F5IHllIHRvIHRoZSBkYXVnaHRlciBvZiBaaW9uLCBCZWhvbGQsIHRoeSBzYWx2YXRpb24gY29tZXRoOyBiZWhvbGQsIGhpcyByZXdhcmQgaXMgd2l0aCBoaW0sIGFuZCBoaXMgd29yayBiZWZvcmUgaGltLgpBbmQgdGhleSBzaGFsbCBjYWxsIHRoZW0sIFRoZSBob2x5IHBlb3BsZSwgVGhlIHJlZGVlbWVkIG9mIHRoZSBMT1JEOiBhbmQgdGhvdSBzaGFsdCBiZSBjYWxsZWQsIFNvdWdodCBvdXQsIEEgY2l0eSBub3QgZm9yc2FrZW4uCldobyBpcyB0aGlzIHRoYXQgY29tZXRoIGZyb20gRWRvbSwgd2l0aCBkeWVkIGdhcm1lbnRzIGZyb20gQm96cmFoPyB0aGlzIHRoYXQgaXMgZ2xvcmlvdXMgaW4gaGlzIGFwcGFyZWwsIHRyYXZlbGxpbmcgaW4gdGhlIGdyZWF0bmVzcyBvZiBoaXMgc3RyZW5ndGg/IEkgdGhhdCBzcGVhayBpbiByaWdodGVvdXNuZXNzLCBtaWdodHkgdG8gc2F2ZS4KV2hlcmVmb3JlIGFydCB0aG91IHJlZCBpbiB0aGluZSBhcHBhcmVsLCBhbmQgdGh5IGdhcm1lbnRzIGxpa2UgaGltIHRoYXQgdHJlYWRldGggaW4gdGhlIHdpbmVmYXQ/CkkgaGF2ZSB0cm9kZGVuIHRoZSB3aW5lcHJlc3MgYWxvbmU7IGFuZCBvZiB0aGUgcGVvcGxlIHRoZXJlIHdhcyBub25lIHdpdGggbWU6IGZvciBJIHdpbGwgdHJlYWQgdGhlbSBpbiBtaW5lIGFuZ2VyLCBhbmQgdHJhbXBsZSB0aGVtIGluIG15IGZ1cnk7IGFuZCB0aGVpciBibG9vZCBzaGFsbCBiZSBzcHJpbmtsZWQgdXBvbiBteSBnYXJtZW50cywgYW5kIEkgd2lsbCBzdGFpbiBhbGwgbXkgcmFpbWVudC4KRm9yIHRoZSBkYXkgb2YgdmVuZ2VhbmNlIGlzIGluIG1pbmUgaGVhcnQsIGFuZCB0aGUgeWVhciBvZiBteSByZWRlZW1lZCBpcyBjb21lLgpBbmQgSSBsb29rZWQsIGFuZCB0aGVyZSB3YXMgbm9uZSB0byBoZWxwOyBhbmQgSSB3b25kZXJlZCB0aGF0IHRoZXJlIHdhcyBub25lIHRvIHVwaG9sZDogdGhlcmVmb3JlIG1pbmUgb3duIGFybSBicm91Z2h0IHNhbHZhdGlvbiB1bnRvIG1lOyBhbmQgbXkgZnVyeSwgaXQgdXBoZWxkIG1lLgpBbmQgSSB3aWxsIHRyZWFkIGRvd24gdGhlIHBlb3BsZSBpbiBtaW5lIGFuZ2VyLCBhbmQgbWFrZSB0aGVtIGRydW5rIGluIG15IGZ1cnksIGFuZCBJIHdpbGwgYnJpbmcgZG93biB0aGVpciBzdHJlbmd0aCB0byB0aGUgZWFydGguCkkgd2lsbCBtZW50aW9uIHRoZSBsb3ZpbmdraW5kbmVzc2VzIG9mIHRoZSBMT1JELCBhbmQgdGhlIHByYWlzZXMgb2YgdGhlIExPUkQsIGFjY29yZGluZyB0byBhbGwgdGhhdCB0aGUgTE9SRCBoYXRoIGJlc3Rvd2VkIG9uIHVzLCBhbmQgdGhlIGdyZWF0IGdvb2RuZXNzIHRvd2FyZCB0aGUgaG91c2Ugb2YgSXNyYWVsLCB3aGljaCBoZSBoYXRoIGJlc3Rvd2VkIG9uIHRoZW0gYWNjb3JkaW5nIHRvIGhpcyBtZXJjaWVzLCBhbmQgYWNjb3JkaW5nIHRvIHRoZSBtdWx0aXR1ZGUgb2YgaGlzIGxvdmluZ2tpbmRuZXNzZXMuCkZvciBoZSBzYWlkLCBTdXJlbHkgdGhleSBhcmUgbXkgcGVvcGxlLCBjaGlsZHJlbiB0aGF0IHdpbGwgbm90IGxpZTogc28gaGUgd2FzIHRoZWlyIFNhdmlvdXIuCkluIGFsbCB0aGVpciBhZmZsaWN0aW9uIGhlIHdhcyBhZmZsaWN0ZWQsIGFuZCB0aGUgYW5nZWwgb2YgaGlzIHByZXNlbmNlIHNhdmVkIHRoZW06IGluIGhpcyBsb3ZlIGFuZCBpbiBoaXMgcGl0eSBoZSByZWRlZW1lZCB0aGVtOyBhbmQgaGUgYmFyZSB0aGVtLCBhbmQgY2FycmllZCB0aGVtIGFsbCB0aGUgZGF5cyBvZiBvbGQuCkJ1dCB0aGV5IHJlYmVsbGVkLCBhbmQgdmV4ZWQgaGlzIGhvbHkgU3Bpcml0OiB0aGVyZWZvcmUgaGUgd2FzIHR1cm5lZCB0byBiZSB0aGVpciBlbmVteSwgYW5kIGhlIGZvdWdodCBhZ2FpbnN0IHRoZW0uClRoZW4gaGUgcmVtZW1iZXJlZCB0aGUgZGF5cyBvZiBvbGQsIE1vc2VzLCBhbmQgaGlzIHBlb3BsZSwgc2F5aW5nLCBXaGVyZSBpcyBoZSB0aGF0IGJyb3VnaHQgdGhlbSB1cCBvdXQgb2YgdGhlIHNlYSB3aXRoIHRoZSBzaGVwaGVyZCBvZiBoaXMgZmxvY2s/IHdoZXJlIGlzIGhlIHRoYXQgcHV0IGhpcyBob2x5IFNwaXJpdCB3aXRoaW4gaGltPwpUaGF0IGxlZCB0aGVtIGJ5IHRoZSByaWdodCBoYW5kIG9mIE1vc2VzIHdpdGggaGlzIGdsb3Jpb3VzIGFybSwgZGl2aWRpbmcgdGhlIHdhdGVyIGJlZm9yZSB0aGVtLCB0byBtYWtlIGhpbXNlbGYgYW4gZXZlcmxhc3RpbmcgbmFtZT8KVGhhdCBsZWQgdGhlbSB0aHJvdWdoIHRoZSBkZWVwLCBhcyBhbiBob3JzZSBpbiB0aGUgd2lsZGVybmVzcywgdGhhdCB0aGV5IHNob3VsZCBub3Qgc3R1bWJsZT8KQXMgYSBiZWFzdCBnb2V0aCBkb3duIGludG8gdGhlIHZhbGxleSwgdGhlIFNwaXJpdCBvZiB0aGUgTE9SRCBjYXVzZWQgaGltIHRvIHJlc3Q6IHNvIGRpZHN0IHRob3UgbGVhZCB0aHkgcGVvcGxlLCB0byBtYWtlIHRoeXNlbGYgYSBnbG9yaW91cyBuYW1lLgpMb29rIGRvd24gZnJvbSBoZWF2ZW4sIGFuZCBiZWhvbGQgZnJvbSB0aGUgaGFiaXRhdGlvbiBvZiB0aHkgaG9saW5lc3MgYW5kIG9mIHRoeSBnbG9yeTogd2hlcmUgaXMgdGh5IHplYWwgYW5kIHRoeSBzdHJlbmd0aCwgdGhlIHNvdW5kaW5nIG9mIHRoeSBib3dlbHMgYW5kIG9mIHRoeSBtZXJjaWVzIHRvd2FyZCBtZT8gYXJlIHRoZXkgcmVzdHJhaW5lZD8KRG91YnRsZXNzIHRob3UgYXJ0IG91ciBmYXRoZXIsIHRob3VnaCBBYnJhaGFtIGJlIGlnbm9yYW50IG9mIHVzLCBhbmQgSXNyYWVsIGFja25vd2xlZGdlIHVzIG5vdDogdGhvdSwgTyBMT1JELCBhcnQgb3VyIGZhdGhlciwgb3VyIHJlZGVlbWVyOyB0aHkgbmFtZSBpcyBmcm9tIGV2ZXJsYXN0aW5nLgpPIExPUkQsIHdoeSBoYXN0IHRob3UgbWFkZSB1cyB0byBlcnIgZnJvbSB0aHkgd2F5cywgYW5kIGhhcmRlbmVkIG91ciBoZWFydCBmcm9tIHRoeSBmZWFyPyBSZXR1cm4gZm9yIHRoeSBzZXJ2YW50cycgc2FrZSwgdGhlIHRyaWJlcyBvZiB0aGluZSBpbmhlcml0YW5jZS4KVGhlIHBlb3BsZSBvZiB0aHkgaG9saW5lc3MgaGF2ZSBwb3NzZXNzZWQgaXQgYnV0IGEgbGl0dGxlIHdoaWxlOiBvdXIgYWR2ZXJzYXJpZXMgaGF2ZSB0cm9kZGVuIGRvd24gdGh5IHNhbmN0dWFyeS4KV2UgYXJlIHRoaW5lOiB0aG91IG5ldmVyIGJhcmVzdCBydWxlIG92ZXIgdGhlbTsgdGhleSB3ZXJlIG5vdCBjYWxsZWQgYnkgdGh5IG5hbWUuCk9oIHRoYXQgdGhvdSB3b3VsZGVzdCByZW5kIHRoZSBoZWF2ZW5zLCB0aGF0IHRob3Ugd291bGRlc3QgY29tZSBkb3duLCB0aGF0IHRoZSBtb3VudGFpbnMgbWlnaHQgZmxvdyBkb3duIGF0IHRoeSBwcmVzZW5jZSwKQXMgd2hlbiB0aGUgbWVsdGluZyBmaXJlIGJ1cm5ldGgsIHRoZSBmaXJlIGNhdXNldGggdGhlIHdhdGVycyB0byBib2lsLCB0byBtYWtlIHRoeSBuYW1lIGtub3duIHRvIHRoaW5lIGFkdmVyc2FyaWVzLCB0aGF0IHRoZSBuYXRpb25zIG1heSB0cmVtYmxlIGF0IHRoeSBwcmVzZW5jZSEKV2hlbiB0aG91IGRpZHN0IHRlcnJpYmxlIHRoaW5ncyB3aGljaCB3ZSBsb29rZWQgbm90IGZvciwgdGhvdSBjYW1lc3QgZG93biwgdGhlIG1vdW50YWlucyBmbG93ZWQgZG93biBhdCB0aHkgcHJlc2VuY2UuCkZvciBzaW5jZSB0aGUgYmVnaW5uaW5nIG9mIHRoZSB3b3JsZCBtZW4gaGF2ZSBub3QgaGVhcmQsIG5vciBwZXJjZWl2ZWQgYnkgdGhlIGVhciwgbmVpdGhlciBoYXRoIHRoZSBleWUgc2VlbiwgTyBHb2QsIGJlc2lkZSB0aGVlLCB3aGF0IGhlIGhhdGggcHJlcGFyZWQgZm9yIGhpbSB0aGF0IHdhaXRldGggZm9yIGhpbS4KVGhvdSBtZWV0ZXN0IGhpbSB0aGF0IHJlam9pY2V0aCBhbmQgd29ya2V0aCByaWdodGVvdXNuZXNzLCB0aG9zZSB0aGF0IHJlbWVtYmVyIHRoZWUgaW4gdGh5IHdheXM6IGJlaG9sZCwgdGhvdSBhcnQgd3JvdGg7IGZvciB3ZSBoYXZlIHNpbm5lZDogaW4gdGhvc2UgaXMgY29udGludWFuY2UsIGFuZCB3ZSBzaGFsbCBiZSBzYXZlZC4KQnV0IHdlIGFyZSBhbGwgYXMgYW4gdW5jbGVhbiB0aGluZywgYW5kIGFsbCBvdXIgcmlnaHRlb3VzbmVzc2VzIGFyZSBhcyBmaWx0aHkgcmFnczsgYW5kIHdlIGFsbCBkbyBmYWRlIGFzIGEgbGVhZjsgYW5kIG91ciBpbmlxdWl0aWVzLCBsaWtlIHRoZSB3aW5kLCBoYXZlIHRha2VuIHVzIGF3YXkuCkFuZCB0aGVyZSBpcyBub25lIHRoYXQgY2FsbGV0aCB1cG9uIHRoeSBuYW1lLCB0aGF0IHN0aXJyZXRoIHVwIGhpbXNlbGYgdG8gdGFrZSBob2xkIG9mIHRoZWU6IGZvciB0aG91IGhhc3QgaGlkIHRoeSBmYWNlIGZyb20gdXMsIGFuZCBoYXN0IGNvbnN1bWVkIHVzLCBiZWNhdXNlIG9mIG91ciBpbmlxdWl0aWVzLgpCdXQgbm93LCBPIExPUkQsIHRob3UgYXJ0IG91ciBmYXRoZXI7IHdlIGFyZSB0aGUgY2xheSwgYW5kIHRob3Ugb3VyIHBvdHRlcjsgYW5kIHdlIGFsbCBhcmUgdGhlIHdvcmsgb2YgdGh5IGhhbmQuCkJlIG5vdCB3cm90aCB2ZXJ5IHNvcmUsIE8gTE9SRCwgbmVpdGhlciByZW1lbWJlciBpbmlxdWl0eSBmb3IgZXZlcjogYmVob2xkLCBzZWUsIHdlIGJlc2VlY2ggdGhlZSwgd2UgYXJlIGFsbCB0aHkgcGVvcGxlLgpUaHkgaG9seSBjaXRpZXMgYXJlIGEgd2lsZGVybmVzcywgWmlvbiBpcyBhIHdpbGRlcm5lc3MsIEplcnVzYWxlbSBhIGRlc29sYXRpb24uCk91ciBob2x5IGFuZCBvdXIgYmVhdXRpZnVsIGhvdXNlLCB3aGVyZSBvdXIgZmF0aGVycyBwcmFpc2VkIHRoZWUsIGlzIGJ1cm5lZCB1cCB3aXRoIGZpcmU6IGFuZCBhbGwgb3VyIHBsZWFzYW50IHRoaW5ncyBhcmUgbGFpZCB3YXN0ZS4KV2lsdCB0aG91IHJlZnJhaW4gdGh5c2VsZiBmb3IgdGhlc2UgdGhpbmdzLCBPIExPUkQ/IHdpbHQgdGhvdSBob2xkIHRoeSBwZWFjZSwgYW5kIGFmZmxpY3QgdXMgdmVyeSBzb3JlPwpJIGFtIHNvdWdodCBvZiB0aGVtIHRoYXQgYXNrZWQgbm90IGZvciBtZTsgSSBhbSBmb3VuZCBvZiB0aGVtIHRoYXQgc291Z2h0IG1lIG5vdDogSSBzYWlkLCBCZWhvbGQgbWUsIGJlaG9sZCBtZSwgdW50byBhIG5hdGlvbiB0aGF0IHdhcyBub3QgY2FsbGVkIGJ5IG15IG5hbWUuCkkgaGF2ZSBzcHJlYWQgb3V0IG15IGhhbmRzIGFsbCB0aGUgZGF5IHVudG8gYSByZWJlbGxpb3VzIHBlb3BsZSwgd2hpY2ggd2Fsa2V0aCBpbiBhIHdheSB0aGF0IHdhcyBub3QgZ29vZCwgYWZ0ZXIgdGhlaXIgb3duIHRob3VnaHRzOwpBIHBlb3BsZSB0aGF0IHByb3Zva2V0aCBtZSB0byBhbmdlciBjb250aW51YWxseSB0byBteSBmYWNlOyB0aGF0IHNhY3JpZmljZXRoIGluIGdhcmRlbnMsIGFuZCBidXJuZXRoIGluY2Vuc2UgdXBvbiBhbHRhcnMgb2YgYnJpY2s7CldoaWNoIHJlbWFpbiBhbW9uZyB0aGUgZ3JhdmVzLCBhbmQgbG9kZ2UgaW4gdGhlIG1vbnVtZW50cywgd2hpY2ggZWF0IHN3aW5lJ3MgZmxlc2gsIGFuZCBicm90aCBvZiBhYm9taW5hYmxlIHRoaW5ncyBpcyBpbiB0aGVpciB2ZXNzZWxzOwpXaGljaCBzYXksIFN0YW5kIGJ5IHRoeXNlbGYsIGNvbWUgbm90IG5lYXIgdG8gbWU7IGZvciBJIGFtIGhvbGllciB0aGFuIHRob3UuIFRoZXNlIGFyZSBhIHNtb2tlIGluIG15IG5vc2UsIGEgZmlyZSB0aGF0IGJ1cm5ldGggYWxsIHRoZSBkYXkuCkJlaG9sZCwgaXQgaXMgd3JpdHRlbiBiZWZvcmUgbWU6IEkgd2lsbCBub3Qga2VlcCBzaWxlbmNlLCBidXQgd2lsbCByZWNvbXBlbnNlLCBldmVuIHJlY29tcGVuc2UgaW50byB0aGVpciBib3NvbSwKWW91ciBpbmlxdWl0aWVzLCBhbmQgdGhlIGluaXF1aXRpZXMgb2YgeW91ciBmYXRoZXJzIHRvZ2V0aGVyLCBzYWl0aCB0aGUgTE9SRCwgd2hpY2ggaGF2ZSBidXJuZWQgaW5jZW5zZSB1cG9uIHRoZSBtb3VudGFpbnMsIGFuZCBibGFzcGhlbWVkIG1lIHVwb24gdGhlIGhpbGxzOiB0aGVyZWZvcmUgd2lsbCBJIG1lYXN1cmUgdGhlaXIgZm9ybWVyIHdvcmsgaW50byB0aGVpciBib3NvbS4KVGh1cyBzYWl0aCB0aGUgTE9SRCwgQXMgdGhlIG5ldyB3aW5lIGlzIGZvdW5kIGluIHRoZSBjbHVzdGVyLCBhbmQgb25lIHNhaXRoLCBEZXN0cm95IGl0IG5vdDsgZm9yIGEgYmxlc3NpbmcgaXMgaW4gaXQ6IHNvIHdpbGwgSSBkbyBmb3IgbXkgc2VydmFudHMnIHNha2VzLCB0aGF0IEkgbWF5IG5vdCBkZXN0cm95IHRoZW0gYWxsLgpBbmQgSSB3aWxsIGJyaW5nIGZvcnRoIGEgc2VlZCBvdXQgb2YgSmFjb2IsIGFuZCBvdXQgb2YgSnVkYWggYW4gaW5oZXJpdG9yIG9mIG15IG1vdW50YWluczogYW5kIG1pbmUgZWxlY3Qgc2hhbGwgaW5oZXJpdCBpdCwgYW5kIG15IHNlcnZhbnRzIHNoYWxsIGR3ZWxsIHRoZXJlLgpBbmQgU2hhcm9uIHNoYWxsIGJlIGEgZm9sZCBvZiBmbG9ja3MsIGFuZCB0aGUgdmFsbGV5IG9mIEFjaG9yIGEgcGxhY2UgZm9yIHRoZSBoZXJkcyB0byBsaWUgZG93biBpbiwgZm9yIG15IHBlb3BsZSB0aGF0IGhhdmUgc291Z2h0IG1lLgpCdXQgeWUgYXJlIHRoZXkgdGhhdCBmb3JzYWtlIHRoZSBMT1JELCB0aGF0IGZvcmdldCBteSBob2x5IG1vdW50YWluLCB0aGF0IHByZXBhcmUgYSB0YWJsZSBmb3IgdGhhdCB0cm9vcCwgYW5kIHRoYXQgZnVybmlzaCB0aGUgZHJpbmsgb2ZmZXJpbmcgdW50byB0aGF0IG51bWJlci4KVGhlcmVmb3JlIHdpbGwgSSBudW1iZXIgeW91IHRvIHRoZSBzd29yZCwgYW5kIHllIHNoYWxsIGFsbCBib3cgZG93biB0byB0aGUgc2xhdWdodGVyOiBiZWNhdXNlIHdoZW4gSSBjYWxsZWQsIHllIGRpZCBub3QgYW5zd2VyOyB3aGVuIEkgc3Bha2UsIHllIGRpZCBub3QgaGVhcjsgYnV0IGRpZCBldmlsIGJlZm9yZSBtaW5lIGV5ZXMsIGFuZCBkaWQgY2hvb3NlIHRoYXQgd2hlcmVpbiBJIGRlbGlnaHRlZCBub3QuClRoZXJlZm9yZSB0aHVzIHNhaXRoIHRoZSBMb3JkIEdPRCwgQmVob2xkLCBteSBzZXJ2YW50cyBzaGFsbCBlYXQsIGJ1dCB5ZSBzaGFsbCBiZSBodW5ncnk6IGJlaG9sZCwgbXkgc2VydmFudHMgc2hhbGwgZHJpbmssIGJ1dCB5ZSBzaGFsbCBiZSB0aGlyc3R5OiBiZWhvbGQsIG15IHNlcnZhbnRzIHNoYWxsIHJlam9pY2UsIGJ1dCB5ZSBzaGFsbCBiZSBhc2hhbWVkOgpCZWhvbGQsIG15IHNlcnZhbnRzIHNoYWxsIHNpbmcgZm9yIGpveSBvZiBoZWFydCwgYnV0IHllIHNoYWxsIGNyeSBmb3Igc29ycm93IG9mIGhlYXJ0LCBhbmQgc2hhbGwgaG93bCBmb3IgdmV4YXRpb24gb2Ygc3Bpcml0LgpBbmQgeWUgc2hhbGwgbGVhdmUgeW91ciBuYW1lIGZvciBhIGN1cnNlIHVudG8gbXkgY2hvc2VuOiBmb3IgdGhlIExvcmQgR09EIHNoYWxsIHNsYXkgdGhlZSwgYW5kIGNhbGwgaGlzIHNlcnZhbnRzIGJ5IGFub3RoZXIgbmFtZToKVGhhdCBoZSB3aG8gYmxlc3NldGggaGltc2VsZiBpbiB0aGUgZWFydGggc2hhbGwgYmxlc3MgaGltc2VsZiBpbiB0aGUgR29kIG9mIHRydXRoOyBhbmQgaGUgdGhhdCBzd2VhcmV0aCBpbiB0aGUgZWFydGggc2hhbGwgc3dlYXIgYnkgdGhlIEdvZCBvZiB0cnV0aDsgYmVjYXVzZSB0aGUgZm9ybWVyIHRyb3VibGVzIGFyZSBmb3Jnb3R0ZW4sIGFuZCBiZWNhdXNlIHRoZXkgYXJlIGhpZCBmcm9tIG1pbmUgZXllcy4KRm9yLCBiZWhvbGQsIEkgY3JlYXRlIG5ldyBoZWF2ZW5zIGFuZCBhIG5ldyBlYXJ0aDogYW5kIHRoZSBmb3JtZXIgc2hhbGwgbm90IGJlIHJlbWVtYmVyZWQsIG5vciBjb21lIGludG8gbWluZC4KQnV0IGJlIHllIGdsYWQgYW5kIHJlam9pY2UgZm9yIGV2ZXIgaW4gdGhhdCB3aGljaCBJIGNyZWF0ZTogZm9yLCBiZWhvbGQsIEkgY3JlYXRlIEplcnVzYWxlbSBhIHJlam9pY2luZywgYW5kIGhlciBwZW9wbGUgYSBqb3kuCkFuZCBJIHdpbGwgcmVqb2ljZSBpbiBKZXJ1c2FsZW0sIGFuZCBqb3kgaW4gbXkgcGVvcGxlOiBhbmQgdGhlIHZvaWNlIG9mIHdlZXBpbmcgc2hhbGwgYmUgbm8gbW9yZSBoZWFyZCBpbiBoZXIsIG5vciB0aGUgdm9pY2Ugb2YgY3J5aW5nLgpUaGVyZSBzaGFsbCBiZSBubyBtb3JlIHRoZW5jZSBhbiBpbmZhbnQgb2YgZGF5cywgbm9yIGFuIG9sZCBtYW4gdGhhdCBoYXRoIG5vdCBmaWxsZWQgaGlzIGRheXM6IGZvciB0aGUgY2hpbGQgc2hhbGwgZGllIGFuIGh1bmRyZWQgeWVhcnMgb2xkOyBidXQgdGhlIHNpbm5lciBiZWluZyBhbiBodW5kcmVkIHllYXJzIG9sZCBzaGFsbCBiZSBhY2N1cnNlZC4KQW5kIHRoZXkgc2hhbGwgYnVpbGQgaG91c2VzLCBhbmQgaW5oYWJpdCB0aGVtOyBhbmQgdGhleSBzaGFsbCBwbGFudCB2aW5leWFyZHMsIGFuZCBlYXQgdGhlIGZydWl0IG9mIHRoZW0uClRoZXkgc2hhbGwgbm90IGJ1aWxkLCBhbmQgYW5vdGhlciBpbmhhYml0OyB0aGV5IHNoYWxsIG5vdCBwbGFudCwgYW5kIGFub3RoZXIgZWF0OiBmb3IgYXMgdGhlIGRheXMgb2YgYSB0cmVlIGFyZSB0aGUgZGF5cyBvZiBteSBwZW9wbGUsIGFuZCBtaW5lIGVsZWN0IHNoYWxsIGxvbmcgZW5qb3kgdGhlIHdvcmsgb2YgdGhlaXIgaGFuZHMuClRoZXkgc2hhbGwgbm90IGxhYm91ciBpbiB2YWluLCBub3IgYnJpbmcgZm9ydGggZm9yIHRyb3VibGU7IGZvciB0aGV5IGFyZSB0aGUgc2VlZCBvZiB0aGUgYmxlc3NlZCBvZiB0aGUgTE9SRCwgYW5kIHRoZWlyIG9mZnNwcmluZyB3aXRoIHRoZW0uCkFuZCBpdCBzaGFsbCBjb21lIHRvIHBhc3MsIHRoYXQgYmVmb3JlIHRoZXkgY2FsbCwgSSB3aWxsIGFuc3dlcjsgYW5kIHdoaWxlIHRoZXkgYXJlIHlldCBzcGVha2luZywgSSB3aWxsIGhlYXIuClRoZSB3b2xmIGFuZCB0aGUgbGFtYiBzaGFsbCBmZWVkIHRvZ2V0aGVyLCBhbmQgdGhlIGxpb24gc2hhbGwgZWF0IHN0cmF3IGxpa2UgdGhlIGJ1bGxvY2s6IGFuZCBkdXN0IHNoYWxsIGJlIHRoZSBzZXJwZW50J3MgbWVhdC4gVGhleSBzaGFsbCBub3QgaHVydCBub3IgZGVzdHJveSBpbiBhbGwgbXkgaG9seSBtb3VudGFpbiwgc2FpdGggdGhlIExPUkQuClRodXMgc2FpdGggdGhlIExPUkQsIFRoZSBoZWF2ZW4gaXMgbXkgdGhyb25lLCBhbmQgdGhlIGVhcnRoIGlzIG15IGZvb3RzdG9vbDogd2hlcmUgaXMgdGhlIGhvdXNlIHRoYXQgeWUgYnVpbGQgdW50byBtZT8gYW5kIHdoZXJlIGlzIHRoZSBwbGFjZSBvZiBteSByZXN0PwpGb3IgYWxsIHRob3NlIHRoaW5ncyBoYXRoIG1pbmUgaGFuZCBtYWRlLCBhbmQgYWxsIHRob3NlIHRoaW5ncyBoYXZlIGJlZW4sIHNhaXRoIHRoZSBMT1JEOiBidXQgdG8gdGhpcyBtYW4gd2lsbCBJIGxvb2ssIGV2ZW4gdG8gaGltIHRoYXQgaXMgcG9vciBhbmQgb2YgYSBjb250cml0ZSBzcGlyaXQsIGFuZCB0cmVtYmxldGggYXQgbXkgd29yZC4KSGUgdGhhdCBraWxsZXRoIGFuIG94IGlzIGFzIGlmIGhlIHNsZXcgYSBtYW47IGhlIHRoYXQgc2FjcmlmaWNldGggYSBsYW1iLCBhcyBpZiBoZSBjdXQgb2ZmIGEgZG9nJ3MgbmVjazsgaGUgdGhhdCBvZmZlcmV0aCBhbiBvYmxhdGlvbiwgYXMgaWYgaGUgb2ZmZXJlZCBzd2luZSdzIGJsb29kOyBoZSB0aGF0IGJ1cm5ldGggaW5jZW5zZSwgYXMgaWYgaGUgYmxlc3NlZCBhbiBpZG9sLiBZZWEsIHRoZXkgaGF2ZSBjaG9zZW4gdGhlaXIgb3duIHdheXMsIGFuZCB0aGVpciBzb3VsIGRlbGlnaHRldGggaW4gdGhlaXIgYWJvbWluYXRpb25zLgpJIGFsc28gd2lsbCBjaG9vc2UgdGhlaXIgZGVsdXNpb25zLCBhbmQgd2lsbCBicmluZyB0aGVpciBmZWFycyB1cG9uIHRoZW07IGJlY2F1c2Ugd2hlbiBJIGNhbGxlZCwgbm9uZSBkaWQgYW5zd2VyOyB3aGVuIEkgc3Bha2UsIHRoZXkgZGlkIG5vdCBoZWFyOiBidXQgdGhleSBkaWQgZXZpbCBiZWZvcmUgbWluZSBleWVzLCBhbmQgY2hvc2UgdGhhdCBpbiB3aGljaCBJIGRlbGlnaHRlZCBub3QuCkhlYXIgdGhlIHdvcmQgb2YgdGhlIExPUkQsIHllIHRoYXQgdHJlbWJsZSBhdCBoaXMgd29yZDsgWW91ciBicmV0aHJlbiB0aGF0IGhhdGVkIHlvdSwgdGhhdCBjYXN0IHlvdSBvdXQgZm9yIG15IG5hbWUncyBzYWtlLCBzYWlkLCBMZXQgdGhlIExPUkQgYmUgZ2xvcmlmaWVkOiBidXQgaGUgc2hhbGwgYXBwZWFyIHRvIHlvdXIgam95LCBhbmQgdGhleSBzaGFsbCBiZSBhc2hhbWVkLgpBIHZvaWNlIG9mIG5vaXNlIGZyb20gdGhlIGNpdHksIGEgdm9pY2UgZnJvbSB0aGUgdGVtcGxlLCBhIHZvaWNlIG9mIHRoZSBMT1JEIHRoYXQgcmVuZGVyZXRoIHJlY29tcGVuY2UgdG8gaGlzIGVuZW1pZXMuCkJlZm9yZSBzaGUgdHJhdmFpbGVkLCBzaGUgYnJvdWdodCBmb3J0aDsgYmVmb3JlIGhlciBwYWluIGNhbWUsIHNoZSB3YXMgZGVsaXZlcmVkIG9mIGEgbWFuIGNoaWxkLgpXaG8gaGF0aCBoZWFyZCBzdWNoIGEgdGhpbmc/IHdobyBoYXRoIHNlZW4gc3VjaCB0aGluZ3M/IFNoYWxsIHRoZSBlYXJ0aCBiZSBtYWRlIHRvIGJyaW5nIGZvcnRoIGluIG9uZSBkYXk/IG9yIHNoYWxsIGEgbmF0aW9uIGJlIGJvcm4gYXQgb25jZT8gZm9yIGFzIHNvb24gYXMgWmlvbiB0cmF2YWlsZWQsIHNoZSBicm91Z2h0IGZvcnRoIGhlciBjaGlsZHJlbi4KU2hhbGwgSSBicmluZyB0byB0aGUgYmlydGgsIGFuZCBub3QgY2F1c2UgdG8gYnJpbmcgZm9ydGg/IHNhaXRoIHRoZSBMT1JEOiBzaGFsbCBJIGNhdXNlIHRvIGJyaW5nIGZvcnRoLCBhbmQgc2h1dCB0aGUgd29tYj8gc2FpdGggdGh5IEdvZC4KUmVqb2ljZSB5ZSB3aXRoIEplcnVzYWxlbSwgYW5kIGJlIGdsYWQgd2l0aCBoZXIsIGFsbCB5ZSB0aGF0IGxvdmUgaGVyOiByZWpvaWNlIGZvciBqb3kgd2l0aCBoZXIsIGFsbCB5ZSB0aGF0IG1vdXJuIGZvciBoZXI6ClRoYXQgeWUgbWF5IHN1Y2ssIGFuZCBiZSBzYXRpc2ZpZWQgd2l0aCB0aGUgYnJlYXN0cyBvZiBoZXIgY29uc29sYXRpb25zOyB0aGF0IHllIG1heSBtaWxrIG91dCwgYW5kIGJlIGRlbGlnaHRlZCB3aXRoIHRoZSBhYnVuZGFuY2Ugb2YgaGVyIGdsb3J5LgpGb3IgdGh1cyBzYWl0aCB0aGUgTE9SRCwgQmVob2xkLCBJIHdpbGwgZXh0ZW5kIHBlYWNlIHRvIGhlciBsaWtlIGEgcml2ZXIsIGFuZCB0aGUgZ2xvcnkgb2YgdGhlIEdlbnRpbGVzIGxpa2UgYSBmbG93aW5nIHN0cmVhbTogdGhlbiBzaGFsbCB5ZSBzdWNrLCB5ZSBzaGFsbCBiZSBib3JuZSB1cG9uIGhlciBzaWRlcywgYW5kIGJlIGRhbmRsZWQgdXBvbiBoZXIga25lZXMuCkFzIG9uZSB3aG9tIGhpcyBtb3RoZXIgY29tZm9ydGV0aCwgc28gd2lsbCBJIGNvbWZvcnQgeW91OyBhbmQgeWUgc2hhbGwgYmUgY29tZm9ydGVkIGluIEplcnVzYWxlbS4KQW5kIHdoZW4geWUgc2VlIHRoaXMsIHlvdXIgaGVhcnQgc2hhbGwgcmVqb2ljZSwgYW5kIHlvdXIgYm9uZXMgc2hhbGwgZmxvdXJpc2ggbGlrZSBhbiBoZXJiOiBhbmQgdGhlIGhhbmQgb2YgdGhlIExPUkQgc2hhbGwgYmUga25vd24gdG93YXJkIGhpcyBzZXJ2YW50cywgYW5kIGhpcyBpbmRpZ25hdGlvbiB0b3dhcmQgaGlzIGVuZW1pZXMuCkZvciwgYmVob2xkLCB0aGUgTE9SRCB3aWxsIGNvbWUgd2l0aCBmaXJlLCBhbmQgd2l0aCBoaXMgY2hhcmlvdHMgbGlrZSBhIHdoaXJsd2luZCwgdG8gcmVuZGVyIGhpcyBhbmdlciB3aXRoIGZ1cnksIGFuZCBoaXMgcmVidWtlIHdpdGggZmxhbWVzIG9mIGZpcmUuCkZvciBieSBmaXJlIGFuZCBieSBoaXMgc3dvcmQgd2lsbCB0aGUgTE9SRCBwbGVhZCB3aXRoIGFsbCBmbGVzaDogYW5kIHRoZSBzbGFpbiBvZiB0aGUgTE9SRCBzaGFsbCBiZSBtYW55LgpUaGV5IHRoYXQgc2FuY3RpZnkgdGhlbXNlbHZlcywgYW5kIHB1cmlmeSB0aGVtc2VsdmVzIGluIHRoZSBnYXJkZW5zIGJlaGluZCBvbmUgdHJlZSBpbiB0aGUgbWlkc3QsIGVhdGluZyBzd2luZSdzIGZsZXNoLCBhbmQgdGhlIGFib21pbmF0aW9uLCBhbmQgdGhlIG1vdXNlLCBzaGFsbCBiZSBjb25zdW1lZCB0b2dldGhlciwgc2FpdGggdGhlIExPUkQuCkZvciBJIGtub3cgdGhlaXIgd29ya3MgYW5kIHRoZWlyIHRob3VnaHRzOiBpdCBzaGFsbCBjb21lLCB0aGF0IEkgd2lsbCBnYXRoZXIgYWxsIG5hdGlvbnMgYW5kIHRvbmd1ZXM7IGFuZCB0aGV5IHNoYWxsIGNvbWUsIGFuZCBzZWUgbXkgZ2xvcnkuCkFuZCBJIHdpbGwgc2V0IGEgc2lnbiBhbW9uZyB0aGVtLCBhbmQgSSB3aWxsIHNlbmQgdGhvc2UgdGhhdCBlc2NhcGUgb2YgdGhlbSB1bnRvIHRoZSBuYXRpb25zLCB0byBUYXJzaGlzaCwgUHVsLCBhbmQgTHVkLCB0aGF0IGRyYXcgdGhlIGJvdywgdG8gVHViYWwsIGFuZCBKYXZhbiwgdG8gdGhlIGlzbGVzIGFmYXIgb2ZmLCB0aGF0IGhhdmUgbm90IGhlYXJkIG15IGZhbWUsIG5laXRoZXIgaGF2ZSBzZWVuIG15IGdsb3J5OyBhbmQgdGhleSBzaGFsbCBkZWNsYXJlIG15IGdsb3J5IGFtb25nIHRoZSBHZW50aWxlcy4KQW5kIHRoZXkgc2hhbGwgYnJpbmcgYWxsIHlvdXIgYnJldGhyZW4gZm9yIGFuIG9mZmVyaW5nIHVudG8gdGhlIExPUkQgb3V0IG9mIGFsbCBuYXRpb25zIHVwb24gaG9yc2VzLCBhbmQgaW4gY2hhcmlvdHMsIGFuZCBpbiBsaXR0ZXJzLCBhbmQgdXBvbiBtdWxlcywgYW5kIHVwb24gc3dpZnQgYmVhc3RzLCB0byBteSBob2x5IG1vdW50YWluIEplcnVzYWxlbSwgc2FpdGggdGhlIExPUkQsIGFzIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgYnJpbmcgYW4gb2ZmZXJpbmcgaW4gYSBjbGVhbiB2ZXNzZWwgaW50byB0aGUgaG91c2Ugb2YgdGhlIExPUkQuCkFuZCBJIHdpbGwgYWxzbyB0YWtlIG9mIHRoZW0gZm9yIHByaWVzdHMgYW5kIGZvciBMZXZpdGVzLCBzYWl0aCB0aGUgTE9SRC4KRm9yIGFzIHRoZSBuZXcgaGVhdmVucyBhbmQgdGhlIG5ldyBlYXJ0aCwgd2hpY2ggSSB3aWxsIG1ha2UsIHNoYWxsIHJlbWFpbiBiZWZvcmUgbWUsIHNhaXRoIHRoZSBMT1JELCBzbyBzaGFsbCB5b3VyIHNlZWQgYW5kIHlvdXIgbmFtZSByZW1haW4uCkFuZCBpdCBzaGFsbCBjb21lIHRvIHBhc3MsIHRoYXQgZnJvbSBvbmUgbmV3IG1vb24gdG8gYW5vdGhlciwgYW5kIGZyb20gb25lIHNhYmJhdGggdG8gYW5vdGhlciwgc2hhbGwgYWxsIGZsZXNoIGNvbWUgdG8gd29yc2hpcCBiZWZvcmUgbWUsIHNhaXRoIHRoZSBMT1JELgpBbmQgdGhleSBzaGFsbCBnbyBmb3J0aCwgYW5kIGxvb2sgdXBvbiB0aGUgY2FyY2FzZXMgb2YgdGhlIG1lbiB0aGF0IGhhdmUgdHJhbnNncmVzc2VkIGFnYWluc3QgbWU6IGZvciB0aGVpciB3b3JtIHNoYWxsIG5vdCBkaWUsIG5laXRoZXIgc2hhbGwgdGhlaXIgZmlyZSBiZSBxdWVuY2hlZDsgYW5kIHRoZXkgc2hhbGwgYmUgYW4gYWJob3JyaW5nIHVudG8gYWxsIGZsZXNoLgpUaGUgd29yZHMgb2YgSmVyZW1pYWggdGhlIHNvbiBvZiBIaWxraWFoLCBvZiB0aGUgcHJpZXN0cyB0aGF0IHdlcmUgaW4gQW5hdGhvdGggaW4gdGhlIGxhbmQgb2YgQmVuamFtaW46ClRvIHdob20gdGhlIHdvcmQgb2YgdGhlIExPUkQgY2FtZSBpbiB0aGUgZGF5cyBvZiBKb3NpYWggdGhlIHNvbiBvZiBBbW9uIGtpbmcgb2YgSnVkYWgsIGluIHRoZSB0aGlydGVlbnRoIHllYXIgb2YgaGlzIHJlaWduLgpJdCBjYW1lIGFsc28gaW4gdGhlIGRheXMgb2YgSmVob2lha2ltIHRoZSBzb24gb2YgSm9zaWFoIGtpbmcgb2YgSnVkYWgsIHVudG8gdGhlIGVuZCBvZiB0aGUgZWxldmVudGggeWVhciBvZiBaZWRla2lhaCB0aGUgc29uIG9mIEpvc2lhaCBraW5nIG9mIEp1ZGFoLCB1bnRvIHRoZSBjYXJyeWluZyBhd2F5IG9mIEplcnVzYWxlbSBjYXB0aXZlIGluIHRoZSBmaWZ0aCBtb250aC4KVGhlbiB0aGUgd29yZCBvZiB0aGUgTE9SRCBjYW1lIHVudG8gbWUsIHNheWluZywKQmVmb3JlIEkgZm9ybWVkIHRoZWUgaW4gdGhlIGJlbGx5IEkga25ldyB0aGVlOyBhbmQgYmVmb3JlIHRob3UgY2FtZXN0IGZvcnRoIG91dCBvZiB0aGUgd29tYiBJIHNhbmN0aWZpZWQgdGhlZSwgYW5kIEkgb3JkYWluZWQgdGhlZSBhIHByb3BoZXQgdW50byB0aGUgbmF0aW9ucy4KVGhlbiBzYWlkIEksIEFoLCBMb3JkIEdPRCEgYmVob2xkLCBJIGNhbm5vdCBzcGVhazogZm9yIEkgYW0gYSBjaGlsZC4KQnV0IHRoZSBMT1JEIHNhaWQgdW50byBtZSwgU2F5IG5vdCwgSSBhbSBhIGNoaWxkOiBmb3IgdGhvdSBzaGFsdCBnbyB0byBhbGwgdGhhdCBJIHNoYWxsIHNlbmQgdGhlZSwgYW5kIHdoYXRzb2V2ZXIgSSBjb21tYW5kIHRoZWUgdGhvdSBzaGFsdCBzcGVhay4KQmUgbm90IGFmcmFpZCBvZiB0aGVpciBmYWNlczogZm9yIEkgYW0gd2l0aCB0aGVlIHRvIGRlbGl2ZXIgdGhlZSwgc2FpdGggdGhlIExPUkQuClRoZW4gdGhlIExPUkQgcHV0IGZvcnRoIGhpcyBoYW5kLCBhbmQgdG91Y2hlZCBteSBtb3V0aC4gQW5kIHRoZSBMT1JEIHNhaWQgdW50byBtZSwgQmVob2xkLCBJIGhhdmUgcHV0IG15IHdvcmRzIGluIHRoeSBtb3V0aC4KU2VlLCBJIGhhdmUgdGhpcyBkYXkgc2V0IHRoZWUgb3ZlciB0aGUgbmF0aW9ucyBhbmQgb3ZlciB0aGUga2luZ2RvbXMsIHRvIHJvb3Qgb3V0LCBhbmQgdG8gcHVsbCBkb3duLCBhbmQgdG8gZGVzdHJveSwgYW5kIHRvIHRocm93IGRvd24sIHRvIGJ1aWxkLCBhbmQgdG8gcGxhbnQuCk1vcmVvdmVyIHRoZSB3b3JkIG9mIHRoZSBMT1JEIGNhbWUgdW50byBtZSwgc2F5aW5nLCBKZXJlbWlhaCwgd2hhdCBzZWVzdCB0aG91PyBBbmQgSSBzYWlkLCBJIHNlZSBhIHJvZCBvZiBhbiBhbG1vbmQgdHJlZS4KVGhlbiBzYWlkIHRoZSBMT1JEIHVudG8gbWUsIFRob3UgaGFzdCB3ZWxsIHNlZW46IGZvciBJIHdpbGwgaGFzdGVuIG15IHdvcmQgdG8gcGVyZm9ybSBpdC4KQW5kIHRoZSB3b3JkIG9mIHRoZSBMT1JEIGNhbWUgdW50byBtZSB0aGUgc2Vjb25kIHRpbWUsIHNheWluZywgV2hhdCBzZWVzdCB0aG91PyBBbmQgSSBzYWlkLCBJIHNlZSBhIHNlZXRoaW5nIHBvdDsgYW5kIHRoZSBmYWNlIHRoZXJlb2YgaXMgdG93YXJkIHRoZSBub3J0aC4KVGhlbiB0aGUgTE9SRCBzYWlkIHVudG8gbWUsIE91dCBvZiB0aGUgbm9ydGggYW4gZXZpbCBzaGFsbCBicmVhayBmb3J0aCB1cG9uIGFsbCB0aGUgaW5oYWJpdGFudHMgb2YgdGhlIGxhbmQuCkZvciwgbG8sIEkgd2lsbCBjYWxsIGFsbCB0aGUgZmFtaWxpZXMgb2YgdGhlIGtpbmdkb21zIG9mIHRoZSBub3J0aCwgc2FpdGggdGhlIExPUkQ7IGFuZCB0aGV5IHNoYWxsIGNvbWUsIGFuZCB0aGV5IHNoYWxsIHNldCBldmVyeSBvbmUgaGlzIHRocm9uZSBhdCB0aGUgZW50ZXJpbmcgb2YgdGhlIGdhdGVzIG9mIEplcnVzYWxlbSwgYW5kIGFnYWluc3QgYWxsIHRoZSB3YWxscyB0aGVyZW9mIHJvdW5kIGFib3V0LCBhbmQgYWdhaW5zdCBhbGwgdGhlIGNpdGllcyBvZiBKdWRhaC4KQW5kIEkgd2lsbCB1dHRlciBteSBqdWRnbWVudHMgYWdhaW5zdCB0aGVtIHRvdWNoaW5nIGFsbCB0aGVpciB3aWNrZWRuZXNzLCB3aG8gaGF2ZSBmb3JzYWtlbiBtZSwgYW5kIGhhdmUgYnVybmVkIGluY2Vuc2UgdW50byBvdGhlciBnb2RzLCBhbmQgd29yc2hpcHBlZCB0aGUgd29ya3Mgb2YgdGhlaXIgb3duIGhhbmRzLgpUaG91IHRoZXJlZm9yZSBnaXJkIHVwIHRoeSBsb2lucywgYW5kIGFyaXNlLCBhbmQgc3BlYWsgdW50byB0aGVtIGFsbCB0aGF0IEkgY29tbWFuZCB0aGVlOiBiZSBub3QgZGlzbWF5ZWQgYXQgdGhlaXIgZmFjZXMsIGxlc3QgSSBjb25mb3VuZCB0aGVlIGJlZm9yZSB0aGVtLgpGb3IsIGJlaG9sZCwgSSBoYXZlIG1hZGUgdGhlZSB0aGlzIGRheSBhIGRlZmVuY2VkIGNpdHksIGFuZCBhbiBpcm9uIHBpbGxhciwgYW5kIGJyYXNlbiB3YWxscyBhZ2FpbnN0IHRoZSB3aG9sZSBsYW5kLCBhZ2FpbnN0IHRoZSBraW5ncyBvZiBKdWRhaCwgYWdhaW5zdCB0aGUgcHJpbmNlcyB0aGVyZW9mLCBhZ2FpbnN0IHRoZSBwcmllc3RzIHRoZXJlb2YsIGFuZCBhZ2FpbnN0IHRoZSBwZW9wbGUgb2YgdGhlIGxhbmQuCkFuZCB0aGV5IHNoYWxsIGZpZ2h0IGFnYWluc3QgdGhlZTsgYnV0IHRoZXkgc2hhbGwgbm90IHByZXZhaWwgYWdhaW5zdCB0aGVlOyBmb3IgSSBhbSB3aXRoIHRoZWUsIHNhaXRoIHRoZSBMT1JELCB0byBkZWxpdmVyIHRoZWUuCk1vcmVvdmVyIHRoZSB3b3JkIG9mIHRoZSBMT1JEIGNhbWUgdG8gbWUsIHNheWluZywKR28gYW5kIGNyeSBpbiB0aGUgZWFycyBvZiBKZXJ1c2FsZW0sIHNheWluZywgVGh1cyBzYWl0aCB0aGUgTE9SRDsgSSByZW1lbWJlciB0aGVlLCB0aGUga2luZG5lc3Mgb2YgdGh5IHlvdXRoLCB0aGUgbG92ZSBvZiB0aGluZSBlc3BvdXNhbHMsIHdoZW4gdGhvdSB3ZW50ZXN0IGFmdGVyIG1lIGluIHRoZSB3aWxkZXJuZXNzLCBpbiBhIGxhbmQgdGhhdCB3YXMgbm90IHNvd24uCklzcmFlbCB3YXMgaG9saW5lc3MgdW50byB0aGUgTE9SRCwgYW5kIHRoZSBmaXJzdGZydWl0cyBvZiBoaXMgaW5jcmVhc2U6IGFsbCB0aGF0IGRldm91ciBoaW0gc2hhbGwgb2ZmZW5kOyBldmlsIHNoYWxsIGNvbWUgdXBvbiB0aGVtLCBzYWl0aCB0aGUgTE9SRC4KSGVhciB5ZSB0aGUgd29yZCBvZiB0aGUgTE9SRCwgTyBob3VzZSBvZiBKYWNvYiwgYW5kIGFsbCB0aGUgZmFtaWxpZXMgb2YgdGhlIGhvdXNlIG9mIElzcmFlbDoKVGh1cyBzYWl0aCB0aGUgTE9SRCwgV2hhdCBpbmlxdWl0eSBoYXZlIHlvdXIgZmF0aGVycyBmb3VuZCBpbiBtZSwgdGhhdCB0aGV5IGFyZSBnb25lIGZhciBmcm9tIG1lLCBhbmQgaGF2ZSB3YWxrZWQgYWZ0ZXIgdmFuaXR5LCBhbmQgYXJlIGJlY29tZSB2YWluPwpOZWl0aGVyIHNhaWQgdGhleSwgV2hlcmUgaXMgdGhlIExPUkQgdGhhdCBicm91Z2h0IHVzIHVwIG91dCBvZiB0aGUgbGFuZCBvZiBFZ3lwdCwgdGhhdCBsZWQgdXMgdGhyb3VnaCB0aGUgd2lsZGVybmVzcywgdGhyb3VnaCBhIGxhbmQgb2YgZGVzZXJ0cyBhbmQgb2YgcGl0cywgdGhyb3VnaCBhIGxhbmQgb2YgZHJvdWdodCwgYW5kIG9mIHRoZSBzaGFkb3cgb2YgZGVhdGgsIHRocm91Z2ggYSBsYW5kIHRoYXQgbm8gbWFuIHBhc3NlZCB0aHJvdWdoLCBhbmQgd2hlcmUgbm8gbWFuIGR3ZWx0PwpBbmQgSSBicm91Z2h0IHlvdSBpbnRvIGEgcGxlbnRpZnVsIGNvdW50cnksIHRvIGVhdCB0aGUgZnJ1aXQgdGhlcmVvZiBhbmQgdGhlIGdvb2RuZXNzIHRoZXJlb2Y7IGJ1dCB3aGVuIHllIGVudGVyZWQsIHllIGRlZmlsZWQgbXkgbGFuZCwgYW5kIG1hZGUgbWluZSBoZXJpdGFnZSBhbiBhYm9taW5hdGlvbi4KVGhlIHByaWVzdHMgc2FpZCBub3QsIFdoZXJlIGlzIHRoZSBMT1JEPyBhbmQgdGhleSB0aGF0IGhhbmRsZSB0aGUgbGF3IGtuZXcgbWUgbm90OiB0aGUgcGFzdG9ycyBhbHNvIHRyYW5zZ3Jlc3NlZCBhZ2FpbnN0IG1lLCBhbmQgdGhlIHByb3BoZXRzIHByb3BoZXNpZWQgYnkgQmFhbCwgYW5kIHdhbGtlZCBhZnRlciB0aGluZ3MgdGhhdCBkbyBub3QgcHJvZml0LgpXaGVyZWZvcmUgSSB3aWxsIHlldCBwbGVhZCB3aXRoIHlvdSwgc2FpdGggdGhlIExPUkQsIGFuZCB3aXRoIHlvdXIgY2hpbGRyZW4ncyBjaGlsZHJlbiB3aWxsIEkgcGxlYWQuCkZvciBwYXNzIG92ZXIgdGhlIGlzbGVzIG9mIENoaXR0aW0sIGFuZCBzZWU7IGFuZCBzZW5kIHVudG8gS2VkYXIsIGFuZCBjb25zaWRlciBkaWxpZ2VudGx5LCBhbmQgc2VlIGlmIHRoZXJlIGJlIHN1Y2ggYSB0aGluZy4KSGF0aCBhIG5hdGlvbiBjaGFuZ2VkIHRoZWlyIGdvZHMsIHdoaWNoIGFyZSB5ZXQgbm8gZ29kcz8gYnV0IG15IHBlb3BsZSBoYXZlIGNoYW5nZWQgdGhlaXIgZ2xvcnkgZm9yIHRoYXQgd2hpY2ggZG90aCBub3QgcHJvZml0LgpCZSBhc3RvbmlzaGVkLCBPIHllIGhlYXZlbnMsIGF0IHRoaXMsIGFuZCBiZSBob3JyaWJseSBhZnJhaWQsIGJlIHllIHZlcnkgZGVzb2xhdGUsIHNhaXRoIHRoZSBMT1JELgpGb3IgbXkgcGVvcGxlIGhhdmUgY29tbWl0dGVkIHR3byBldmlsczsgdGhleSBoYXZlIGZvcnNha2VuIG1lIHRoZSBmb3VudGFpbiBvZiBsaXZpbmcgd2F0ZXJzLCBhbmQgaGV3ZWQgdGhlbSBvdXQgY2lzdGVybnMsIGJyb2tlbiBjaXN0ZXJucywgdGhhdCBjYW4gaG9sZCBubyB3YXRlci4KSXMgSXNyYWVsIGEgc2VydmFudD8gaXMgaGUgYSBob21lYm9ybiBzbGF2ZT8gd2h5IGlzIGhlIHNwb2lsZWQ/ClRoZSB5b3VuZyBsaW9ucyByb2FyZWQgdXBvbiBoaW0sIGFuZCB5ZWxsZWQsIGFuZCB0aGV5IG1hZGUgaGlzIGxhbmQgd2FzdGU6IGhpcyBjaXRpZXMgYXJlIGJ1cm5lZCB3aXRob3V0IGluaGFiaXRhbnQuCkFsc28gdGhlIGNoaWxkcmVuIG9mIE5vcGggYW5kIFRhaGFwYW5lcyBoYXZlIGJyb2tlbiB0aGUgY3Jvd24gb2YgdGh5IGhlYWQuCkhhc3QgdGhvdSBub3QgcHJvY3VyZWQgdGhpcyB1bnRvIHRoeXNlbGYsIGluIHRoYXQgdGhvdSBoYXN0IGZvcnNha2VuIHRoZSBMT1JEIHRoeSBHb2QsIHdoZW4gaGUgbGVkIHRoZWUgYnkgdGhlIHdheT8KQW5kIG5vdyB3aGF0IGhhc3QgdGhvdSB0byBkbyBpbiB0aGUgd2F5IG9mIEVneXB0LCB0byBkcmluayB0aGUgd2F0ZXJzIG9mIFNpaG9yPyBvciB3aGF0IGhhc3QgdGhvdSB0byBkbyBpbiB0aGUgd2F5IG9mIEFzc3lyaWEsIHRvIGRyaW5rIHRoZSB3YXRlcnMgb2YgdGhlIHJpdmVyPwpUaGluZSBvd24gd2lja2VkbmVzcyBzaGFsbCBjb3JyZWN0IHRoZWUsIGFuZCB0aHkgYmFja3NsaWRpbmdzIHNoYWxsIHJlcHJvdmUgdGhlZToga25vdyB0aGVyZWZvcmUgYW5kIHNlZSB0aGF0IGl0IGlzIGFuIGV2aWwgdGhpbmcgYW5kIGJpdHRlciwgdGhhdCB0aG91IGhhc3QgZm9yc2FrZW4gdGhlIExPUkQgdGh5IEdvZCwgYW5kIHRoYXQgbXkgZmVhciBpcyBub3QgaW4gdGhlZSwgc2FpdGggdGhlIExvcmQgR09EIG9mIGhvc3RzLgpGb3Igb2Ygb2xkIHRpbWUgSSBoYXZlIGJyb2tlbiB0aHkgeW9rZSwgYW5kIGJ1cnN0IHRoeSBiYW5kczsgYW5kIHRob3Ugc2FpZHN0LCBJIHdpbGwgbm90IHRyYW5zZ3Jlc3M7IHdoZW4gdXBvbiBldmVyeSBoaWdoIGhpbGwgYW5kIHVuZGVyIGV2ZXJ5IGdyZWVuIHRyZWUgdGhvdSB3YW5kZXJlc3QsIHBsYXlpbmcgdGhlIGhhcmxvdC4KWWV0IEkgaGFkIHBsYW50ZWQgdGhlZSBhIG5vYmxlIHZpbmUsIHdob2xseSBhIHJpZ2h0IHNlZWQ6IGhvdyB0aGVuIGFydCB0aG91IHR1cm5lZCBpbnRvIHRoZSBkZWdlbmVyYXRlIHBsYW50IG9mIGEgc3RyYW5nZSB2aW5lIHVudG8gbWU/CkZvciB0aG91Z2ggdGhvdSB3YXNoIHRoZWUgd2l0aCBuaXRyZSwgYW5kIHRha2UgdGhlZSBtdWNoIHNvYXAsIHlldCB0aGluZSBpbmlxdWl0eSBpcyBtYXJrZWQgYmVmb3JlIG1lLCBzYWl0aCB0aGUgTG9yZCBHT0QuCkhvdyBjYW5zdCB0aG91IHNheSwgSSBhbSBub3QgcG9sbHV0ZWQsIEkgaGF2ZSBub3QgZ29uZSBhZnRlciBCYWFsaW0/IHNlZSB0aHkgd2F5IGluIHRoZSB2YWxsZXksIGtub3cgd2hhdCB0aG91IGhhc3QgZG9uZTogdGhvdSBhcnQgYSBzd2lmdCBkcm9tZWRhcnkgdHJhdmVyc2luZyBoZXIgd2F5czsKQSB3aWxkIGFzcyB1c2VkIHRvIHRoZSB3aWxkZXJuZXNzLCB0aGF0IHNudWZmZXRoIHVwIHRoZSB3aW5kIGF0IGhlciBwbGVhc3VyZTsgaW4gaGVyIG9jY2FzaW9uIHdobyBjYW4gdHVybiBoZXIgYXdheT8gYWxsIHRoZXkgdGhhdCBzZWVrIGhlciB3aWxsIG5vdCB3ZWFyeSB0aGVtc2VsdmVzOyBpbiBoZXIgbW9udGggdGhleSBzaGFsbCBmaW5kIGhlci4KV2l0aGhvbGQgdGh5IGZvb3QgZnJvbSBiZWluZyB1bnNob2QsIGFuZCB0aHkgdGhyb2F0IGZyb20gdGhpcnN0OiBidXQgdGhvdSBzYWlkc3QsIFRoZXJlIGlzIG5vIGhvcGU6IG5vOyBmb3IgSSBoYXZlIGxvdmVkIHN0cmFuZ2VycywgYW5kIGFmdGVyIHRoZW0gd2lsbCBJIGdvLgpBcyB0aGUgdGhpZWYgaXMgYXNoYW1lZCB3aGVuIGhlIGlzIGZvdW5kLCBzbyBpcyB0aGUgaG91c2Ugb2YgSXNyYWVsIGFzaGFtZWQ7IHRoZXksIHRoZWlyIGtpbmdzLCB0aGVpciBwcmluY2VzLCBhbmQgdGhlaXIgcHJpZXN0cywgYW5kIHRoZWlyIHByb3BoZXRzLgpTYXlpbmcgdG8gYSBzdG9jaywgVGhvdSBhcnQgbXkgZmF0aGVyOyBhbmQgdG8gYSBzdG9uZSwgVGhvdSBoYXN0IGJyb3VnaHQgbWUgZm9ydGg6IGZvciB0aGV5IGhhdmUgdHVybmVkIHRoZWlyIGJhY2sgdW50byBtZSwgYW5kIG5vdCB0aGVpciBmYWNlOiBidXQgaW4gdGhlIHRpbWUgb2YgdGhlaXIgdHJvdWJsZSB0aGV5IHdpbGwgc2F5LCBBcmlzZSwgYW5kIHNhdmUgdXMuCkJ1dCB3aGVyZSBhcmUgdGh5IGdvZHMgdGhhdCB0aG91IGhhc3QgbWFkZSB0aGVlPyBsZXQgdGhlbSBhcmlzZSwgaWYgdGhleSBjYW4gc2F2ZSB0aGVlIGluIHRoZSB0aW1lIG9mIHRoeSB0cm91YmxlOiBmb3IgYWNjb3JkaW5nIHRvIHRoZSBudW1iZXIgb2YgdGh5IGNpdGllcyBhcmUgdGh5IGdvZHMsIE8gSnVkYWguCldoZXJlZm9yZSB3aWxsIHllIHBsZWFkIHdpdGggbWU/IHllIGFsbCBoYXZlIHRyYW5zZ3Jlc3NlZCBhZ2FpbnN0IG1lLCBzYWl0aCB0aGUgTE9SRC4KSW4gdmFpbiBoYXZlIEkgc21pdHRlbiB5b3VyIGNoaWxkcmVuOyB0aGV5IHJlY2VpdmVkIG5vIGNvcnJlY3Rpb246IHlvdXIgb3duIHN3b3JkIGhhdGggZGV2b3VyZWQgeW91ciBwcm9waGV0cywgbGlrZSBhIGRlc3Ryb3lpbmcgbGlvbi4KTyBnZW5lcmF0aW9uLCBzZWUgeWUgdGhlIHdvcmQgb2YgdGhlIExPUkQuIEhhdmUgSSBiZWVuIGEgd2lsZGVybmVzcyB1bnRvIElzcmFlbD8gYSBsYW5kIG9mIGRhcmtuZXNzPyB3aGVyZWZvcmUgc2F5IG15IHBlb3BsZSwgV2UgYXJlIGxvcmRzOyB3ZSB3aWxsIGNvbWUgbm8gbW9yZSB1bnRvIHRoZWU/CkNhbiBhIG1haWQgZm9yZ2V0IGhlciBvcm5hbWVudHMsIG9yIGEgYnJpZGUgaGVyIGF0dGlyZT8geWV0IG15IHBlb3BsZSBoYXZlIGZvcmdvdHRlbiBtZSBkYXlzIHdpdGhvdXQgbnVtYmVyLgpXaHkgdHJpbW1lc3QgdGhvdSB0aHkgd2F5IHRvIHNlZWsgbG92ZT8gdGhlcmVmb3JlIGhhc3QgdGhvdSBhbHNvIHRhdWdodCB0aGUgd2lja2VkIG9uZXMgdGh5IHdheXMuCkFsc28gaW4gdGh5IHNraXJ0cyBpcyBmb3VuZCB0aGUgYmxvb2Qgb2YgdGhlIHNvdWxzIG9mIHRoZSBwb29yIGlubm9jZW50czogSSBoYXZlIG5vdCBmb3VuZCBpdCBieSBzZWNyZXQgc2VhcmNoLCBidXQgdXBvbiBhbGwgdGhlc2UuCllldCB0aG91IHNheWVzdCwgQmVjYXVzZSBJIGFtIGlubm9jZW50LCBzdXJlbHkgaGlzIGFuZ2VyIHNoYWxsIHR1cm4gZnJvbSBtZS4gQmVob2xkLCBJIHdpbGwgcGxlYWQgd2l0aCB0aGVlLCBiZWNhdXNlIHRob3Ugc2F5ZXN0LCBJIGhhdmUgbm90IHNpbm5lZC4KV2h5IGdhZGRlc3QgdGhvdSBhYm91dCBzbyBtdWNoIHRvIGNoYW5nZSB0aHkgd2F5PyB0aG91IGFsc28gc2hhbHQgYmUgYXNoYW1lZCBvZiBFZ3lwdCwgYXMgdGhvdSB3YXN0IGFzaGFtZWQgb2YgQXNzeXJpYS4KWWVhLCB0aG91IHNoYWx0IGdvIGZvcnRoIGZyb20gaGltLCBhbmQgdGhpbmUgaGFuZHMgdXBvbiB0aGluZSBoZWFkOiBmb3IgdGhlIExPUkQgaGF0aCByZWplY3RlZCB0aHkgY29uZmlkZW5jZXMsIGFuZCB0aG91IHNoYWx0IG5vdCBwcm9zcGVyIGluIHRoZW0uClRoZXkgc2F5LCBJZiBhIG1hbiBwdXQgYXdheSBoaXMgd2lmZSwgYW5kIHNoZSBnbyBmcm9tIGhpbSwgYW5kIGJlY29tZSBhbm90aGVyIG1hbidzLCBzaGFsbCBoZSByZXR1cm4gdW50byBoZXIgYWdhaW4/IHNoYWxsIG5vdCB0aGF0IGxhbmQgYmUgZ3JlYXRseSBwb2xsdXRlZD8gYnV0IHRob3UgaGFzdCBwbGF5ZWQgdGhlIGhhcmxvdCB3aXRoIG1hbnkgbG92ZXJzOyB5ZXQgcmV0dXJuIGFnYWluIHRvIG1lLCBzYWl0aCB0aGUgTE9SRC4KTGlmdCB1cCB0aGluZSBleWVzIHVudG8gdGhlIGhpZ2ggcGxhY2VzLCBhbmQgc2VlIHdoZXJlIHRob3UgaGFzdCBub3QgYmVlbiBsaWVuIHdpdGguIEluIHRoZSB3YXlzIGhhc3QgdGhvdSBzYXQgZm9yIHRoZW0sIGFzIHRoZSBBcmFiaWFuIGluIHRoZSB3aWxkZXJuZXNzOyBhbmQgdGhvdSBoYXN0IHBvbGx1dGVkIHRoZSBsYW5kIHdpdGggdGh5IHdob3JlZG9tcyBhbmQgd2l0aCB0aHkgd2lja2VkbmVzcy4KVGhlcmVmb3JlIHRoZSBzaG93ZXJzIGhhdmUgYmVlbiB3aXRoaG9sZGVuLCBhbmQgdGhlcmUgaGF0aCBiZWVuIG5vIGxhdHRlciByYWluOyBhbmQgdGhvdSBoYWRzdCBhIHdob3JlJ3MgZm9yZWhlYWQsIHRob3UgcmVmdXNlZHN0IHRvIGJlIGFzaGFtZWQuCldpbHQgdGhvdSBub3QgZnJvbSB0aGlzIHRpbWUgY3J5IHVudG8gbWUsIE15IGZhdGhlciwgdGhvdSBhcnQgdGhlIGd1aWRlIG9mIG15IHlvdXRoPwpXaWxsIGhlIHJlc2VydmUgaGlzIGFuZ2VyIGZvciBldmVyPyB3aWxsIGhlIGtlZXAgaXQgdG8gdGhlIGVuZD8gQmVob2xkLCB0aG91IGhhc3Qgc3Bva2VuIGFuZCBkb25lIGV2aWwgdGhpbmdzIGFzIHRob3UgY291bGRlc3QuClRoZSBMT1JEIHNhaWQgYWxzbyB1bnRvIG1lIGluIHRoZSBkYXlzIG9mIEpvc2lhaCB0aGUga2luZywgSGFzdCB0aG91IHNlZW4gdGhhdCB3aGljaCBiYWNrc2xpZGluZyBJc3JhZWwgaGF0aCBkb25lPyBzaGUgaXMgZ29uZSB1cCB1cG9uIGV2ZXJ5IGhpZ2ggbW91bnRhaW4gYW5kIHVuZGVyIGV2ZXJ5IGdyZWVuIHRyZWUsIGFuZCB0aGVyZSBoYXRoIHBsYXllZCB0aGUgaGFybG90LgpBbmQgSSBzYWlkIGFmdGVyIHNoZSBoYWQgZG9uZSBhbGwgdGhlc2UgdGhpbmdzLCBUdXJuIHRob3UgdW50byBtZS4gQnV0IHNoZSByZXR1cm5lZCBub3QuIEFuZCBoZXIgdHJlYWNoZXJvdXMgc2lzdGVyIEp1ZGFoIHNhdyBpdC4KQW5kIEkgc2F3LCB3aGVuIGZvciBhbGwgdGhlIGNhdXNlcyB3aGVyZWJ5IGJhY2tzbGlkaW5nIElzcmFlbCBjb21taXR0ZWQgYWR1bHRlcnkgSSBoYWQgcHV0IGhlciBhd2F5LCBhbmQgZ2l2ZW4gaGVyIGEgYmlsbCBvZiBkaXZvcmNlOyB5ZXQgaGVyIHRyZWFjaGVyb3VzIHNpc3RlciBKdWRhaCBmZWFyZWQgbm90LCBidXQgd2VudCBhbmQgcGxheWVkIHRoZSBoYXJsb3QgYWxzby4KQW5kIGl0IGNhbWUgdG8gcGFzcyB0aHJvdWdoIHRoZSBsaWdodG5lc3Mgb2YgaGVyIHdob3JlZG9tLCB0aGF0IHNoZSBkZWZpbGVkIHRoZSBsYW5kLCBhbmQgY29tbWl0dGVkIGFkdWx0ZXJ5IHdpdGggc3RvbmVzIGFuZCB3aXRoIHN0b2Nrcy4KQW5kIHlldCBmb3IgYWxsIHRoaXMgaGVyIHRyZWFjaGVyb3VzIHNpc3RlciBKdWRhaCBoYXRoIG5vdCB0dXJuZWQgdW50byBtZSB3aXRoIGhlciB3aG9sZSBoZWFydCwgYnV0IGZlaWduZWRseSwgc2FpdGggdGhlIExPUkQuCkFuZCB0aGUgTE9SRCBzYWlkIHVudG8gbWUsIFRoZSBiYWNrc2xpZGluZyBJc3JhZWwgaGF0aCBqdXN0aWZpZWQgaGVyc2VsZiBtb3JlIHRoYW4gdHJlYWNoZXJvdXMgSnVkYWguCkdvIGFuZCBwcm9jbGFpbSB0aGVzZSB3b3JkcyB0b3dhcmQgdGhlIG5vcnRoLCBhbmQgc2F5LCBSZXR1cm4sIHRob3UgYmFja3NsaWRpbmcgSXNyYWVsLCBzYWl0aCB0aGUgTE9SRDsgYW5kIEkgd2lsbCBub3QgY2F1c2UgbWluZSBhbmdlciB0byBmYWxsIHVwb24geW91OiBmb3IgSSBhbSBtZXJjaWZ1bCwgc2FpdGggdGhlIExPUkQsIGFuZCBJIHdpbGwgbm90IGtlZXAgYW5nZXIgZm9yIGV2ZXIuCk9ubHkgYWNrbm93bGVkZ2UgdGhpbmUgaW5pcXVpdHksIHRoYXQgdGhvdSBoYXN0IHRyYW5zZ3Jlc3NlZCBhZ2FpbnN0IHRoZSBMT1JEIHRoeSBHb2QsIGFuZCBoYXN0IHNjYXR0ZXJlZCB0aHkgd2F5cyB0byB0aGUgc3RyYW5nZXJzIHVuZGVyIGV2ZXJ5IGdyZWVuIHRyZWUsIGFuZCB5ZSBoYXZlIG5vdCBvYmV5ZWQgbXkgdm9pY2UsIHNhaXRoIHRoZSBMT1JELgpUdXJuLCBPIGJhY2tzbGlkaW5nIGNoaWxkcmVuLCBzYWl0aCB0aGUgTE9SRDsgZm9yIEkgYW0gbWFycmllZCB1bnRvIHlvdTogYW5kIEkgd2lsbCB0YWtlIHlvdSBvbmUgb2YgYSBjaXR5LCBhbmQgdHdvIG9mIGEgZmFtaWx5LCBhbmQgSSB3aWxsIGJyaW5nIHlvdSB0byBaaW9uOgpBbmQgSSB3aWxsIGdpdmUgeW91IHBhc3RvcnMgYWNjb3JkaW5nIHRvIG1pbmUgaGVhcnQsIHdoaWNoIHNoYWxsIGZlZWQgeW91IHdpdGgga25vd2xlZGdlIGFuZCB1bmRlcnN0YW5kaW5nLgpBbmQgaXQgc2hhbGwgY29tZSB0byBwYXNzLCB3aGVuIHllIGJlIG11bHRpcGxpZWQgYW5kIGluY3JlYXNlZCBpbiB0aGUgbGFuZCwgaW4gdGhvc2UgZGF5cywgc2FpdGggdGhlIExPUkQsIHRoZXkgc2hhbGwgc2F5IG5vIG1vcmUsIFRoZSBhcmsgb2YgdGhlIGNvdmVuYW50IG9mIHRoZSBMT1JEOiBuZWl0aGVyIHNoYWxsIGl0IGNvbWUgdG8gbWluZDogbmVpdGhlciBzaGFsbCB0aGV5IHJlbWVtYmVyIGl0OyBuZWl0aGVyIHNoYWxsIHRoZXkgdmlzaXQgaXQ7IG5laXRoZXIgc2hhbGwgdGhhdCBiZSBkb25lIGFueSBtb3JlLgpBdCB0aGF0IHRpbWUgdGhleSBzaGFsbCBjYWxsIEplcnVzYWxlbSB0aGUgdGhyb25lIG9mIHRoZSBMT1JEOyBhbmQgYWxsIHRoZSBuYXRpb25zIHNoYWxsIGJlIGdhdGhlcmVkIHVudG8gaXQsIHRvIHRoZSBuYW1lIG9mIHRoZSBMT1JELCB0byBKZXJ1c2FsZW06IG5laXRoZXIgc2hhbGwgdGhleSB3YWxrIGFueSBtb3JlIGFmdGVyIHRoZSBpbWFnaW5hdGlvbiBvZiB0aGVpciBldmlsIGhlYXJ0LgpJbiB0aG9zZSBkYXlzIHRoZSBob3VzZSBvZiBKdWRhaCBzaGFsbCB3YWxrIHdpdGggdGhlIGhvdXNlIG9mIElzcmFlbCwgYW5kIHRoZXkgc2hhbGwgY29tZSB0b2dldGhlciBvdXQgb2YgdGhlIGxhbmQgb2YgdGhlIG5vcnRoIHRvIHRoZSBsYW5kIHRoYXQgSSBoYXZlIGdpdmVuIGZvciBhbiBpbmhlcml0YW5jZSB1bnRvIHlvdXIgZmF0aGVycy4KQnV0IEkgc2FpZCwgSG93IHNoYWxsIEkgcHV0IHRoZWUgYW1vbmcgdGhlIGNoaWxkcmVuLCBhbmQgZ2l2ZSB0aGVlIGEgcGxlYXNhbnQgbGFuZCwgYSBnb29kbHkgaGVyaXRhZ2Ugb2YgdGhlIGhvc3RzIG9mIG5hdGlvbnM/IGFuZCBJIHNhaWQsIFRob3Ugc2hhbHQgY2FsbCBtZSwgTXkgZmF0aGVyOyBhbmQgc2hhbHQgbm90IHR1cm4gYXdheSBmcm9tIG1lLgpTdXJlbHkgYXMgYSB3aWZlIHRyZWFjaGVyb3VzbHkgZGVwYXJ0ZXRoIGZyb20gaGVyIGh1c2JhbmQsIHNvIGhhdmUgeWUgZGVhbHQgdHJlYWNoZXJvdXNseSB3aXRoIG1lLCBPIGhvdXNlIG9mIElzcmFlbCwgc2FpdGggdGhlIExPUkQuCkEgdm9pY2Ugd2FzIGhlYXJkIHVwb24gdGhlIGhpZ2ggcGxhY2VzLCB3ZWVwaW5nIGFuZCBzdXBwbGljYXRpb25zIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWw6IGZvciB0aGV5IGhhdmUgcGVydmVydGVkIHRoZWlyIHdheSwgYW5kIHRoZXkgaGF2ZSBmb3Jnb3R0ZW4gdGhlIExPUkQgdGhlaXIgR29kLgpSZXR1cm4sIHllIGJhY2tzbGlkaW5nIGNoaWxkcmVuLCBhbmQgSSB3aWxsIGhlYWwgeW91ciBiYWNrc2xpZGluZ3MuIEJlaG9sZCwgd2UgY29tZSB1bnRvIHRoZWU7IGZvciB0aG91IGFydCB0aGUgTE9SRCBvdXIgR29kLgpUcnVseSBpbiB2YWluIGlzIHNhbHZhdGlvbiBob3BlZCBmb3IgZnJvbSB0aGUgaGlsbHMsIGFuZCBmcm9tIHRoZSBtdWx0aXR1ZGUgb2YgbW91bnRhaW5zOiB0cnVseSBpbiB0aGUgTE9SRCBvdXIgR29kIGlzIHRoZSBzYWx2YXRpb24gb2YgSXNyYWVsLgpGb3Igc2hhbWUgaGF0aCBkZXZvdXJlZCB0aGUgbGFib3VyIG9mIG91ciBmYXRoZXJzIGZyb20gb3VyIHlvdXRoOyB0aGVpciBmbG9ja3MgYW5kIHRoZWlyIGhlcmRzLCB0aGVpciBzb25zIGFuZCB0aGVpciBkYXVnaHRlcnMuCldlIGxpZSBkb3duIGluIG91ciBzaGFtZSwgYW5kIG91ciBjb25mdXNpb24gY292ZXJldGggdXM6IGZvciB3ZSBoYXZlIHNpbm5lZCBhZ2FpbnN0IHRoZSBMT1JEIG91ciBHb2QsIHdlIGFuZCBvdXIgZmF0aGVycywgZnJvbSBvdXIgeW91dGggZXZlbiB1bnRvIHRoaXMgZGF5LCBhbmQgaGF2ZSBub3Qgb2JleWVkIHRoZSB2b2ljZSBvZiB0aGUgTE9SRCBvdXIgR29kLgpJZiB0aG91IHdpbHQgcmV0dXJuLCBPIElzcmFlbCwgc2FpdGggdGhlIExPUkQsIHJldHVybiB1bnRvIG1lOiBhbmQgaWYgdGhvdSB3aWx0IHB1dCBhd2F5IHRoaW5lIGFib21pbmF0aW9ucyBvdXQgb2YgbXkgc2lnaHQsIHRoZW4gc2hhbHQgdGhvdSBub3QgcmVtb3ZlLgpBbmQgdGhvdSBzaGFsdCBzd2VhciwgVGhlIExPUkQgbGl2ZXRoLCBpbiB0cnV0aCwgaW4ganVkZ21lbnQsIGFuZCBpbiByaWdodGVvdXNuZXNzOyBhbmQgdGhlIG5hdGlvbnMgc2hhbGwgYmxlc3MgdGhlbXNlbHZlcyBpbiBoaW0sIGFuZCBpbiBoaW0gc2hhbGwgdGhleSBnbG9yeS4KRm9yIHRodXMgc2FpdGggdGhlIExPUkQgdG8gdGhlIG1lbiBvZiBKdWRhaCBhbmQgSmVydXNhbGVtLCBCcmVhayB1cCB5b3VyIGZhbGxvdyBncm91bmQsIGFuZCBzb3cgbm90IGFtb25nIHRob3Jucy4KQ2lyY3VtY2lzZSB5b3Vyc2VsdmVzIHRvIHRoZSBMT1JELCBhbmQgdGFrZSBhd2F5IHRoZSBmb3Jlc2tpbnMgb2YgeW91ciBoZWFydCwgeWUgbWVuIG9mIEp1ZGFoIGFuZCBpbmhhYml0YW50cyBvZiBKZXJ1c2FsZW06IGxlc3QgbXkgZnVyeSBjb21lIGZvcnRoIGxpa2UgZmlyZSwgYW5kIGJ1cm4gdGhhdCBub25lIGNhbiBxdWVuY2ggaXQsIGJlY2F1c2Ugb2YgdGhlIGV2aWwgb2YgeW91ciBkb2luZ3MuCkRlY2xhcmUgeWUgaW4gSnVkYWgsIGFuZCBwdWJsaXNoIGluIEplcnVzYWxlbTsgYW5kIHNheSwgQmxvdyB5ZSB0aGUgdHJ1bXBldCBpbiB0aGUgbGFuZDogY3J5LCBnYXRoZXIgdG9nZXRoZXIsIGFuZCBzYXksIEFzc2VtYmxlIHlvdXJzZWx2ZXMsIGFuZCBsZXQgdXMgZ28gaW50byB0aGUgZGVmZW5jZWQgY2l0aWVzLgpTZXQgdXAgdGhlIHN0YW5kYXJkIHRvd2FyZCBaaW9uOiByZXRpcmUsIHN0YXkgbm90OiBmb3IgSSB3aWxsIGJyaW5nIGV2aWwgZnJvbSB0aGUgbm9ydGgsIGFuZCBhIGdyZWF0IGRlc3RydWN0aW9uLgpUaGUgbGlvbiBpcyBjb21lIHVwIGZyb20gaGlzIHRoaWNrZXQsIGFuZCB0aGUgZGVzdHJveWVyIG9mIHRoZSBHZW50aWxlcyBpcyBvbiBoaXMgd2F5OyBoZSBpcyBnb25lIGZvcnRoIGZyb20gaGlzIHBsYWNlIHRvIG1ha2UgdGh5IGxhbmQgZGVzb2xhdGU7IGFuZCB0aHkgY2l0aWVzIHNoYWxsIGJlIGxhaWQgd2FzdGUsIHdpdGhvdXQgYW4gaW5oYWJpdGFudC4KRm9yIHRoaXMgZ2lyZCB5b3Ugd2l0aCBzYWNrY2xvdGgsIGxhbWVudCBhbmQgaG93bDogZm9yIHRoZSBmaWVyY2UgYW5nZXIgb2YgdGhlIExPUkQgaXMgbm90IHR1cm5lZCBiYWNrIGZyb20gdXMuCkFuZCBpdCBzaGFsbCBjb21lIHRvIHBhc3MgYXQgdGhhdCBkYXksIHNhaXRoIHRoZSBMT1JELCB0aGF0IHRoZSBoZWFydCBvZiB0aGUga2luZyBzaGFsbCBwZXJpc2gsIGFuZCB0aGUgaGVhcnQgb2YgdGhlIHByaW5jZXM7IGFuZCB0aGUgcHJpZXN0cyBzaGFsbCBiZSBhc3RvbmlzaGVkLCBhbmQgdGhlIHByb3BoZXRzIHNoYWxsIHdvbmRlci4KVGhlbiBzYWlkIEksIEFoLCBMb3JkIEdPRCEgc3VyZWx5IHRob3UgaGFzdCBncmVhdGx5IGRlY2VpdmVkIHRoaXMgcGVvcGxlIGFuZCBKZXJ1c2FsZW0sIHNheWluZywgWWUgc2hhbGwgaGF2ZSBwZWFjZTsgd2hlcmVhcyB0aGUgc3dvcmQgcmVhY2hldGggdW50byB0aGUgc291bC4KQXQgdGhhdCB0aW1lIHNoYWxsIGl0IGJlIHNhaWQgdG8gdGhpcyBwZW9wbGUgYW5kIHRvIEplcnVzYWxlbSwgQSBkcnkgd2luZCBvZiB0aGUgaGlnaCBwbGFjZXMgaW4gdGhlIHdpbGRlcm5lc3MgdG93YXJkIHRoZSBkYXVnaHRlciBvZiBteSBwZW9wbGUsIG5vdCB0byBmYW4sIG5vciB0byBjbGVhbnNlLApFdmVuIGEgZnVsbCB3aW5kIGZyb20gdGhvc2UgcGxhY2VzIHNoYWxsIGNvbWUgdW50byBtZTogbm93IGFsc28gd2lsbCBJIGdpdmUgc2VudGVuY2UgYWdhaW5zdCB0aGVtLgpCZWhvbGQsIGhlIHNoYWxsIGNvbWUgdXAgYXMgY2xvdWRzLCBhbmQgaGlzIGNoYXJpb3RzIHNoYWxsIGJlIGFzIGEgd2hpcmx3aW5kOiBoaXMgaG9yc2VzIGFyZSBzd2lmdGVyIHRoYW4gZWFnbGVzLiBXb2UgdW50byB1cyEgZm9yIHdlIGFyZSBzcG9pbGVkLgpPIEplcnVzYWxlbSwgd2FzaCB0aGluZSBoZWFydCBmcm9tIHdpY2tlZG5lc3MsIHRoYXQgdGhvdSBtYXllc3QgYmUgc2F2ZWQuIEhvdyBsb25nIHNoYWxsIHRoeSB2YWluIHRob3VnaHRzIGxvZGdlIHdpdGhpbiB0aGVlPwpGb3IgYSB2b2ljZSBkZWNsYXJldGggZnJvbSBEYW4sIGFuZCBwdWJsaXNoZXRoIGFmZmxpY3Rpb24gZnJvbSBtb3VudCBFcGhyYWltLgpNYWtlIHllIG1lbnRpb24gdG8gdGhlIG5hdGlvbnM7IGJlaG9sZCwgcHVibGlzaCBhZ2FpbnN0IEplcnVzYWxlbSwgdGhhdCB3YXRjaGVycyBjb21lIGZyb20gYSBmYXIgY291bnRyeSwgYW5kIGdpdmUgb3V0IHRoZWlyIHZvaWNlIGFnYWluc3QgdGhlIGNpdGllcyBvZiBKdWRhaC4KQXMga2VlcGVycyBvZiBhIGZpZWxkLCBhcmUgdGhleSBhZ2FpbnN0IGhlciByb3VuZCBhYm91dDsgYmVjYXVzZSBzaGUgaGF0aCBiZWVuIHJlYmVsbGlvdXMgYWdhaW5zdCBtZSwgc2FpdGggdGhlIExPUkQuClRoeSB3YXkgYW5kIHRoeSBkb2luZ3MgaGF2ZSBwcm9jdXJlZCB0aGVzZSB0aGluZ3MgdW50byB0aGVlOyB0aGlzIGlzIHRoeSB3aWNrZWRuZXNzLCBiZWNhdXNlIGl0IGlzIGJpdHRlciwgYmVjYXVzZSBpdCByZWFjaGV0aCB1bnRvIHRoaW5lIGhlYXJ0LgpNeSBib3dlbHMsIG15IGJvd2VscyEgSSBhbSBwYWluZWQgYXQgbXkgdmVyeSBoZWFydDsgbXkgaGVhcnQgbWFrZXRoIGEgbm9pc2UgaW4gbWU7IEkgY2Fubm90IGhvbGQgbXkgcGVhY2UsIGJlY2F1c2UgdGhvdSBoYXN0IGhlYXJkLCBPIG15IHNvdWwsIHRoZSBzb3VuZCBvZiB0aGUgdHJ1bXBldCwgdGhlIGFsYXJtIG9mIHdhci4KRGVzdHJ1Y3Rpb24gdXBvbiBkZXN0cnVjdGlvbiBpcyBjcmllZDsgZm9yIHRoZSB3aG9sZSBsYW5kIGlzIHNwb2lsZWQ6IHN1ZGRlbmx5IGFyZSBteSB0ZW50cyBzcG9pbGVkLCBhbmQgbXkgY3VydGFpbnMgaW4gYSBtb21lbnQuCkhvdyBsb25nIHNoYWxsIEkgc2VlIHRoZSBzdGFuZGFyZCwgYW5kIGhlYXIgdGhlIHNvdW5kIG9mIHRoZSB0cnVtcGV0PwpGb3IgbXkgcGVvcGxlIGlzIGZvb2xpc2gsIHRoZXkgaGF2ZSBub3Qga25vd24gbWU7IHRoZXkgYXJlIHNvdHRpc2ggY2hpbGRyZW4sIGFuZCB0aGV5IGhhdmUgbm9uZSB1bmRlcnN0YW5kaW5nOiB0aGV5IGFyZSB3aXNlIHRvIGRvIGV2aWwsIGJ1dCB0byBkbyBnb29kIHRoZXkgaGF2ZSBubyBrbm93bGVkZ2UuCkkgYmVoZWxkIHRoZSBlYXJ0aCwgYW5kLCBsbywgaXQgd2FzIHdpdGhvdXQgZm9ybSwgYW5kIHZvaWQ7IGFuZCB0aGUgaGVhdmVucywgYW5kIHRoZXkgaGFkIG5vIGxpZ2h0LgpJIGJlaGVsZCB0aGUgbW91bnRhaW5zLCBhbmQsIGxvLCB0aGV5IHRyZW1ibGVkLCBhbmQgYWxsIHRoZSBoaWxscyBtb3ZlZCBsaWdodGx5LgpJIGJlaGVsZCwgYW5kLCBsbywgdGhlcmUgd2FzIG5vIG1hbiwgYW5kIGFsbCB0aGUgYmlyZHMgb2YgdGhlIGhlYXZlbnMgd2VyZSBmbGVkLgpJIGJlaGVsZCwgYW5kLCBsbywgdGhlIGZydWl0ZnVsIHBsYWNlIHdhcyBhIHdpbGRlcm5lc3MsIGFuZCBhbGwgdGhlIGNpdGllcyB0aGVyZW9mIHdlcmUgYnJva2VuIGRvd24gYXQgdGhlIHByZXNlbmNlIG9mIHRoZSBMT1JELCBhbmQgYnkgaGlzIGZpZXJjZSBhbmdlci4KRm9yIHRodXMgaGF0aCB0aGUgTE9SRCBzYWlkLCBUaGUgd2hvbGUgbGFuZCBzaGFsbCBiZSBkZXNvbGF0ZTsgeWV0IHdpbGwgSSBub3QgbWFrZSBhIGZ1bGwgZW5kLgpGb3IgdGhpcyBzaGFsbCB0aGUgZWFydGggbW91cm4sIGFuZCB0aGUgaGVhdmVucyBhYm92ZSBiZSBibGFjazsgYmVjYXVzZSBJIGhhdmUgc3Bva2VuIGl0LCBJIGhhdmUgcHVycG9zZWQgaXQsIGFuZCB3aWxsIG5vdCByZXBlbnQsIG5laXRoZXIgd2lsbCBJIHR1cm4gYmFjayBmcm9tIGl0LgpUaGUgd2hvbGUgY2l0eSBzaGFsbCBmbGVlIGZvciB0aGUgbm9pc2Ugb2YgdGhlIGhvcnNlbWVuIGFuZCBib3dtZW47IHRoZXkgc2hhbGwgZ28gaW50byB0aGlja2V0cywgYW5kIGNsaW1iIHVwIHVwb24gdGhlIHJvY2tzOiBldmVyeSBjaXR5IHNoYWxsIGJlIGZvcnNha2VuLCBhbmQgbm90IGEgbWFuIGR3ZWxsIHRoZXJlaW4uCkFuZCB3aGVuIHRob3UgYXJ0IHNwb2lsZWQsIHdoYXQgd2lsdCB0aG91IGRvPyBUaG91Z2ggdGhvdSBjbG90aGVzdCB0aHlzZWxmIHdpdGggY3JpbXNvbiwgdGhvdWdoIHRob3UgZGVja2VzdCB0aGVlIHdpdGggb3JuYW1lbnRzIG9mIGdvbGQsIHRob3VnaCB0aG91IHJlbnRlc3QgdGh5IGZhY2Ugd2l0aCBwYWludGluZywgaW4gdmFpbiBzaGFsdCB0aG91IG1ha2UgdGh5c2VsZiBmYWlyOyB0aHkgbG92ZXJzIHdpbGwgZGVzcGlzZSB0aGVlLCB0aGV5IHdpbGwgc2VlayB0aHkgbGlmZS4KRm9yIEkgaGF2ZSBoZWFyZCBhIHZvaWNlIGFzIG9mIGEgd29tYW4gaW4gdHJhdmFpbCwgYW5kIHRoZSBhbmd1aXNoIGFzIG9mIGhlciB0aGF0IGJyaW5nZXRoIGZvcnRoIGhlciBmaXJzdCBjaGlsZCwgdGhlIHZvaWNlIG9mIHRoZSBkYXVnaHRlciBvZiBaaW9uLCB0aGF0IGJld2FpbGV0aCBoZXJzZWxmLCB0aGF0IHNwcmVhZGV0aCBoZXIgaGFuZHMsIHNheWluZywgV29lIGlzIG1lIG5vdyEgZm9yIG15IHNvdWwgaXMgd2VhcmllZCBiZWNhdXNlIG9mIG11cmRlcmVycy4KUnVuIHllIHRvIGFuZCBmcm8gdGhyb3VnaCB0aGUgc3RyZWV0cyBvZiBKZXJ1c2FsZW0sIGFuZCBzZWUgbm93LCBhbmQga25vdywgYW5kIHNlZWsgaW4gdGhlIGJyb2FkIHBsYWNlcyB0aGVyZW9mLCBpZiB5ZSBjYW4gZmluZCBhIG1hbiwgaWYgdGhlcmUgYmUgYW55IHRoYXQgZXhlY3V0ZXRoIGp1ZGdtZW50LCB0aGF0IHNlZWtldGggdGhlIHRydXRoOyBhbmQgSSB3aWxsIHBhcmRvbiBpdC4KQW5kIHRob3VnaCB0aGV5IHNheSwgVGhlIExPUkQgbGl2ZXRoOyBzdXJlbHkgdGhleSBzd2VhciBmYWxzZWx5LgpPIExPUkQsIGFyZSBub3QgdGhpbmUgZXllcyB1cG9uIHRoZSB0cnV0aD8gdGhvdSBoYXN0IHN0cmlja2VuIHRoZW0sIGJ1dCB0aGV5IGhhdmUgbm90IGdyaWV2ZWQ7IHRob3UgaGFzdCBjb25zdW1lZCB0aGVtLCBidXQgdGhleSBoYXZlIHJlZnVzZWQgdG8gcmVjZWl2ZSBjb3JyZWN0aW9uOiB0aGV5IGhhdmUgbWFkZSB0aGVpciBmYWNlcyBoYXJkZXIgdGhhbiBhIHJvY2s7IHRoZXkgaGF2ZSByZWZ1c2VkIHRvIHJldHVybi4KVGhlcmVmb3JlIEkgc2FpZCwgU3VyZWx5IHRoZXNlIGFyZSBwb29yOyB0aGV5IGFyZSBmb29saXNoOiBmb3IgdGhleSBrbm93IG5vdCB0aGUgd2F5IG9mIHRoZSBMT1JELCBub3IgdGhlIGp1ZGdtZW50IG9mIHRoZWlyIEdvZC4KSSB3aWxsIGdldCBtZSB1bnRvIHRoZSBncmVhdCBtZW4sIGFuZCB3aWxsIHNwZWFrIHVudG8gdGhlbTsgZm9yIHRoZXkgaGF2ZSBrbm93biB0aGUgd2F5IG9mIHRoZSBMT1JELCBhbmQgdGhlIGp1ZGdtZW50IG9mIHRoZWlyIEdvZDogYnV0IHRoZXNlIGhhdmUgYWx0b2dldGhlciBicm9rZW4gdGhlIHlva2UsIGFuZCBidXJzdCB0aGUgYm9uZHMuCldoZXJlZm9yZSBhIGxpb24gb3V0IG9mIHRoZSBmb3Jlc3Qgc2hhbGwgc2xheSB0aGVtLCBhbmQgYSB3b2xmIG9mIHRoZSBldmVuaW5ncyBzaGFsbCBzcG9pbCB0aGVtLCBhIGxlb3BhcmQgc2hhbGwgd2F0Y2ggb3ZlciB0aGVpciBjaXRpZXM6IGV2ZXJ5IG9uZSB0aGF0IGdvZXRoIG91dCB0aGVuY2Ugc2hhbGwgYmUgdG9ybiBpbiBwaWVjZXM6IGJlY2F1c2UgdGhlaXIgdHJhbnNncmVzc2lvbnMgYXJlIG1hbnksIGFuZCB0aGVpciBiYWNrc2xpZGluZ3MgYXJlIGluY3JlYXNlZC4KSG93IHNoYWxsIEkgcGFyZG9uIHRoZWUgZm9yIHRoaXM/IHRoeSBjaGlsZHJlbiBoYXZlIGZvcnNha2VuIG1lLCBhbmQgc3dvcm4gYnkgdGhlbSB0aGF0IGFyZSBubyBnb2RzOiB3aGVuIEkgaGFkIGZlZCB0aGVtIHRvIHRoZSBmdWxsLCB0aGV5IHRoZW4gY29tbWl0dGVkIGFkdWx0ZXJ5LCBhbmQgYXNzZW1ibGVkIHRoZW1zZWx2ZXMgYnkgdHJvb3BzIGluIHRoZSBoYXJsb3RzJyBob3VzZXMuClRoZXkgd2VyZSBhcyBmZWQgaG9yc2VzIGluIHRoZSBtb3JuaW5nOiBldmVyeSBvbmUgbmVpZ2hlZCBhZnRlciBoaXMgbmVpZ2hib3VyJ3Mgd2lmZS4KU2hhbGwgSSBub3QgdmlzaXQgZm9yIHRoZXNlIHRoaW5ncz8gc2FpdGggdGhlIExPUkQ6IGFuZCBzaGFsbCBub3QgbXkgc291bCBiZSBhdmVuZ2VkIG9uIHN1Y2ggYSBuYXRpb24gYXMgdGhpcz8KR28geWUgdXAgdXBvbiBoZXIgd2FsbHMsIGFuZCBkZXN0cm95OyBidXQgbWFrZSBub3QgYSBmdWxsIGVuZDogdGFrZSBhd2F5IGhlciBiYXR0bGVtZW50czsgZm9yIHRoZXkgYXJlIG5vdCB0aGUgTE9SRCdzLgpGb3IgdGhlIGhvdXNlIG9mIElzcmFlbCBhbmQgdGhlIGhvdXNlIG9mIEp1ZGFoIGhhdmUgZGVhbHQgdmVyeSB0cmVhY2hlcm91c2x5IGFnYWluc3QgbWUsIHNhaXRoIHRoZSBMT1JELgpUaGV5IGhhdmUgYmVsaWVkIHRoZSBMT1JELCBhbmQgc2FpZCwgSXQgaXMgbm90IGhlOyBuZWl0aGVyIHNoYWxsIGV2aWwgY29tZSB1cG9uIHVzOyBuZWl0aGVyIHNoYWxsIHdlIHNlZSBzd29yZCBub3IgZmFtaW5lOgpBbmQgdGhlIHByb3BoZXRzIHNoYWxsIGJlY29tZSB3aW5kLCBhbmQgdGhlIHdvcmQgaXMgbm90IGluIHRoZW06IHRodXMgc2hhbGwgaXQgYmUgZG9uZSB1bnRvIHRoZW0uCldoZXJlZm9yZSB0aHVzIHNhaXRoIHRoZSBMT1JEIEdvZCBvZiBob3N0cywgQmVjYXVzZSB5ZSBzcGVhayB0aGlzIHdvcmQsIGJlaG9sZCwgSSB3aWxsIG1ha2UgbXkgd29yZHMgaW4gdGh5IG1vdXRoIGZpcmUsIGFuZCB0aGlzIHBlb3BsZSB3b29kLCBhbmQgaXQgc2hhbGwgZGV2b3VyIHRoZW0uCkxvLCBJIHdpbGwgYnJpbmcgYSBuYXRpb24gdXBvbiB5b3UgZnJvbSBmYXIsIE8gaG91c2Ugb2YgSXNyYWVsLCBzYWl0aCB0aGUgTE9SRDogaXQgaXMgYSBtaWdodHkgbmF0aW9uLCBpdCBpcyBhbiBhbmNpZW50IG5hdGlvbiwgYSBuYXRpb24gd2hvc2UgbGFuZ3VhZ2UgdGhvdSBrbm93ZXN0IG5vdCwgbmVpdGhlciB1bmRlcnN0YW5kZXN0IHdoYXQgdGhleSBzYXkuClRoZWlyIHF1aXZlciBpcyBhcyBhbiBvcGVuIHNlcHVsY2hyZSwgdGhleSBhcmUgYWxsIG1pZ2h0eSBtZW4uCkFuZCB0aGV5IHNoYWxsIGVhdCB1cCB0aGluZSBoYXJ2ZXN0LCBhbmQgdGh5IGJyZWFkLCB3aGljaCB0aHkgc29ucyBhbmQgdGh5IGRhdWdodGVycyBzaG91bGQgZWF0OiB0aGV5IHNoYWxsIGVhdCB1cCB0aHkgZmxvY2tzIGFuZCB0aGluZSBoZXJkczogdGhleSBzaGFsbCBlYXQgdXAgdGh5IHZpbmVzIGFuZCB0aHkgZmlnIHRyZWVzOiB0aGV5IHNoYWxsIGltcG92ZXJpc2ggdGh5IGZlbmNlZCBjaXRpZXMsIHdoZXJlaW4gdGhvdSB0cnVzdGVkc3QsIHdpdGggdGhlIHN3b3JkLgpOZXZlcnRoZWxlc3MgaW4gdGhvc2UgZGF5cywgc2FpdGggdGhlIExPUkQsIEkgd2lsbCBub3QgbWFrZSBhIGZ1bGwgZW5kIHdpdGggeW91LgpBbmQgaXQgc2hhbGwgY29tZSB0byBwYXNzLCB3aGVuIHllIHNoYWxsIHNheSwgV2hlcmVmb3JlIGRvZXRoIHRoZSBMT1JEIG91ciBHb2QgYWxsIHRoZXNlIHRoaW5ncyB1bnRvIHVzPyB0aGVuIHNoYWx0IHRob3UgYW5zd2VyIHRoZW0sIExpa2UgYXMgeWUgaGF2ZSBmb3JzYWtlbiBtZSwgYW5kIHNlcnZlZCBzdHJhbmdlIGdvZHMgaW4geW91ciBsYW5kLCBzbyBzaGFsbCB5ZSBzZXJ2ZSBzdHJhbmdlcnMgaW4gYSBsYW5kIHRoYXQgaXMgbm90IHlvdXIncy4KRGVjbGFyZSB0aGlzIGluIHRoZSBob3VzZSBvZiBKYWNvYiwgYW5kIHB1Ymxpc2ggaXQgaW4gSnVkYWgsIHNheWluZywKSGVhciBub3cgdGhpcywgTyBmb29saXNoIHBlb3BsZSwgYW5kIHdpdGhvdXQgdW5kZXJzdGFuZGluZzsgd2hpY2ggaGF2ZSBleWVzLCBhbmQgc2VlIG5vdDsgd2hpY2ggaGF2ZSBlYXJzLCBhbmQgaGVhciBub3Q6CkZlYXIgeWUgbm90IG1lPyBzYWl0aCB0aGUgTE9SRDogd2lsbCB5ZSBub3QgdHJlbWJsZSBhdCBteSBwcmVzZW5jZSwgd2hpY2ggaGF2ZSBwbGFjZWQgdGhlIHNhbmQgZm9yIHRoZSBib3VuZCBvZiB0aGUgc2VhIGJ5IGEgcGVycGV0dWFsIGRlY3JlZSwgdGhhdCBpdCBjYW5ub3QgcGFzcyBpdDogYW5kIHRob3VnaCB0aGUgd2F2ZXMgdGhlcmVvZiB0b3NzIHRoZW1zZWx2ZXMsIHlldCBjYW4gdGhleSBub3QgcHJldmFpbDsgdGhvdWdoIHRoZXkgcm9hciwgeWV0IGNhbiB0aGV5IG5vdCBwYXNzIG92ZXIgaXQ/CkJ1dCB0aGlzIHBlb3BsZSBoYXRoIGEgcmV2b2x0aW5nIGFuZCBhIHJlYmVsbGlvdXMgaGVhcnQ7IHRoZXkgYXJlIHJldm9sdGVkIGFuZCBnb25lLgpOZWl0aGVyIHNheSB0aGV5IGluIHRoZWlyIGhlYXJ0LCBMZXQgdXMgbm93IGZlYXIgdGhlIExPUkQgb3VyIEdvZCwgdGhhdCBnaXZldGggcmFpbiwgYm90aCB0aGUgZm9ybWVyIGFuZCB0aGUgbGF0dGVyLCBpbiBoaXMgc2Vhc29uOiBoZSByZXNlcnZldGggdW50byB1cyB0aGUgYXBwb2ludGVkIHdlZWtzIG9mIHRoZSBoYXJ2ZXN0LgpZb3VyIGluaXF1aXRpZXMgaGF2ZSB0dXJuZWQgYXdheSB0aGVzZSB0aGluZ3MsIGFuZCB5b3VyIHNpbnMgaGF2ZSB3aXRoaG9sZGVuIGdvb2QgdGhpbmdzIGZyb20geW91LgpGb3IgYW1vbmcgbXkgcGVvcGxlIGFyZSBmb3VuZCB3aWNrZWQgbWVuOiB0aGV5IGxheSB3YWl0LCBhcyBoZSB0aGF0IHNldHRldGggc25hcmVzOyB0aGV5IHNldCBhIHRyYXAsIHRoZXkgY2F0Y2ggbWVuLgpBcyBhIGNhZ2UgaXMgZnVsbCBvZiBiaXJkcywgc28gYXJlIHRoZWlyIGhvdXNlcyBmdWxsIG9mIGRlY2VpdDogdGhlcmVmb3JlIHRoZXkgYXJlIGJlY29tZSBncmVhdCwgYW5kIHdheGVuIHJpY2guClRoZXkgYXJlIHdheGVuIGZhdCwgdGhleSBzaGluZTogeWVhLCB0aGV5IG92ZXJwYXNzIHRoZSBkZWVkcyBvZiB0aGUgd2lja2VkOiB0aGV5IGp1ZGdlIG5vdCB0aGUgY2F1c2UsIHRoZSBjYXVzZSBvZiB0aGUgZmF0aGVybGVzcywgeWV0IHRoZXkgcHJvc3BlcjsgYW5kIHRoZSByaWdodCBvZiB0aGUgbmVlZHkgZG8gdGhleSBub3QganVkZ2UuClNoYWxsIEkgbm90IHZpc2l0IGZvciB0aGVzZSB0aGluZ3M/IHNhaXRoIHRoZSBMT1JEOiBzaGFsbCBub3QgbXkgc291bCBiZSBhdmVuZ2VkIG9uIHN1Y2ggYSBuYXRpb24gYXMgdGhpcz8KQSB3b25kZXJmdWwgYW5kIGhvcnJpYmxlIHRoaW5nIGlzIGNvbW1pdHRlZCBpbiB0aGUgbGFuZDsKVGhlIHByb3BoZXRzIHByb3BoZXN5IGZhbHNlbHksIGFuZCB0aGUgcHJpZXN0cyBiZWFyIHJ1bGUgYnkgdGhlaXIgbWVhbnM7IGFuZCBteSBwZW9wbGUgbG92ZSB0byBoYXZlIGl0IHNvOiBhbmQgd2hhdCB3aWxsIHllIGRvIGluIHRoZSBlbmQgdGhlcmVvZj8KTyB5ZSBjaGlsZHJlbiBvZiBCZW5qYW1pbiwgZ2F0aGVyIHlvdXJzZWx2ZXMgdG8gZmxlZSBvdXQgb2YgdGhlIG1pZHN0IG9mIEplcnVzYWxlbSwgYW5kIGJsb3cgdGhlIHRydW1wZXQgaW4gVGVrb2EsIGFuZCBzZXQgdXAgYSBzaWduIG9mIGZpcmUgaW4gQmV0aGhhY2NlcmVtOiBmb3IgZXZpbCBhcHBlYXJldGggb3V0IG9mIHRoZSBub3J0aCwgYW5kIGdyZWF0IGRlc3RydWN0aW9uLgpJIGhhdmUgbGlrZW5lZCB0aGUgZGF1Z2h0ZXIgb2YgWmlvbiB0byBhIGNvbWVseSBhbmQgZGVsaWNhdGUgd29tYW4uClRoZSBzaGVwaGVyZHMgd2l0aCB0aGVpciBmbG9ja3Mgc2hhbGwgY29tZSB1bnRvIGhlcjsgdGhleSBzaGFsbCBwaXRjaCB0aGVpciB0ZW50cyBhZ2FpbnN0IGhlciByb3VuZCBhYm91dDsgdGhleSBzaGFsbCBmZWVkIGV2ZXJ5IG9uZSBpbiBoaXMgcGxhY2UuClByZXBhcmUgeWUgd2FyIGFnYWluc3QgaGVyOyBhcmlzZSwgYW5kIGxldCB1cyBnbyB1cCBhdCBub29uLiBXb2UgdW50byB1cyEgZm9yIHRoZSBkYXkgZ29ldGggYXdheSwgZm9yIHRoZSBzaGFkb3dzIG9mIHRoZSBldmVuaW5nIGFyZSBzdHJldGNoZWQgb3V0LgpBcmlzZSwgYW5kIGxldCB1cyBnbyBieSBuaWdodCwgYW5kIGxldCB1cyBkZXN0cm95IGhlciBwYWxhY2VzLgpGb3IgdGh1cyBoYXRoIHRoZSBMT1JEIG9mIGhvc3RzIHNhaWQsIEhldyB5ZSBkb3duIHRyZWVzLCBhbmQgY2FzdCBhIG1vdW50IGFnYWluc3QgSmVydXNhbGVtOiB0aGlzIGlzIHRoZSBjaXR5IHRvIGJlIHZpc2l0ZWQ7IHNoZSBpcyB3aG9sbHkgb3BwcmVzc2lvbiBpbiB0aGUgbWlkc3Qgb2YgaGVyLgpBcyBhIGZvdW50YWluIGNhc3RldGggb3V0IGhlciB3YXRlcnMsIHNvIHNoZSBjYXN0ZXRoIG91dCBoZXIgd2lja2VkbmVzczogdmlvbGVuY2UgYW5kIHNwb2lsIGlzIGhlYXJkIGluIGhlcjsgYmVmb3JlIG1lIGNvbnRpbnVhbGx5IGlzIGdyaWVmIGFuZCB3b3VuZHMuCkJlIHRob3UgaW5zdHJ1Y3RlZCwgTyBKZXJ1c2FsZW0sIGxlc3QgbXkgc291bCBkZXBhcnQgZnJvbSB0aGVlOyBsZXN0IEkgbWFrZSB0aGVlIGRlc29sYXRlLCBhIGxhbmQgbm90IGluaGFiaXRlZC4KVGh1cyBzYWl0aCB0aGUgTE9SRCBvZiBob3N0cywgVGhleSBzaGFsbCB0aHJvdWdobHkgZ2xlYW4gdGhlIHJlbW5hbnQgb2YgSXNyYWVsIGFzIGEgdmluZTogdHVybiBiYWNrIHRoaW5lIGhhbmQgYXMgYSBncmFwZWdhdGhlcmVyIGludG8gdGhlIGJhc2tldHMuClRvIHdob20gc2hhbGwgSSBzcGVhaywgYW5kIGdpdmUgd2FybmluZywgdGhhdCB0aGV5IG1heSBoZWFyPyBiZWhvbGQsIHRoZWlyIGVhciBpcyB1bmNpcmN1bWNpc2VkLCBhbmQgdGhleSBjYW5ub3QgaGVhcmtlbjogYmVob2xkLCB0aGUgd29yZCBvZiB0aGUgTE9SRCBpcyB1bnRvIHRoZW0gYSByZXByb2FjaDsgdGhleSBoYXZlIG5vIGRlbGlnaHQgaW4gaXQuClRoZXJlZm9yZSBJIGFtIGZ1bGwgb2YgdGhlIGZ1cnkgb2YgdGhlIExPUkQ7IEkgYW0gd2Vhcnkgd2l0aCBob2xkaW5nIGluOiBJIHdpbGwgcG91ciBpdCBvdXQgdXBvbiB0aGUgY2hpbGRyZW4gYWJyb2FkLCBhbmQgdXBvbiB0aGUgYXNzZW1ibHkgb2YgeW91bmcgbWVuIHRvZ2V0aGVyOiBmb3IgZXZlbiB0aGUgaHVzYmFuZCB3aXRoIHRoZSB3aWZlIHNoYWxsIGJlIHRha2VuLCB0aGUgYWdlZCB3aXRoIGhpbSB0aGF0IGlzIGZ1bGwgb2YgZGF5cy4KQW5kIHRoZWlyIGhvdXNlcyBzaGFsbCBiZSB0dXJuZWQgdW50byBvdGhlcnMsIHdpdGggdGhlaXIgZmllbGRzIGFuZCB3aXZlcyB0b2dldGhlcjogZm9yIEkgd2lsbCBzdHJldGNoIG91dCBteSBoYW5kIHVwb24gdGhlIGluaGFiaXRhbnRzIG9mIHRoZSBsYW5kLCBzYWl0aCB0aGUgTE9SRC4KRm9yIGZyb20gdGhlIGxlYXN0IG9mIHRoZW0gZXZlbiB1bnRvIHRoZSBncmVhdGVzdCBvZiB0aGVtIGV2ZXJ5IG9uZSBpcyBnaXZlbiB0byBjb3ZldG91c25lc3M7IGFuZCBmcm9tIHRoZSBwcm9waGV0IGV2ZW4gdW50byB0aGUgcHJpZXN0IGV2ZXJ5IG9uZSBkZWFsZXRoIGZhbHNlbHkuClRoZXkgaGF2ZSBoZWFsZWQgYWxzbyB0aGUgaHVydCBvZiB0aGUgZGF1Z2h0ZXIgb2YgbXkgcGVvcGxlIHNsaWdodGx5LCBzYXlpbmcsIFBlYWNlLCBwZWFjZTsgd2hlbiB0aGVyZSBpcyBubyBwZWFjZS4KV2VyZSB0aGV5IGFzaGFtZWQgd2hlbiB0aGV5IGhhZCBjb21taXR0ZWQgYWJvbWluYXRpb24/IG5heSwgdGhleSB3ZXJlIG5vdCBhdCBhbGwgYXNoYW1lZCwgbmVpdGhlciBjb3VsZCB0aGV5IGJsdXNoOiB0aGVyZWZvcmUgdGhleSBzaGFsbCBmYWxsIGFtb25nIHRoZW0gdGhhdCBmYWxsOiBhdCB0aGUgdGltZSB0aGF0IEkgdmlzaXQgdGhlbSB0aGV5IHNoYWxsIGJlIGNhc3QgZG93biwgc2FpdGggdGhlIExPUkQuClRodXMgc2FpdGggdGhlIExPUkQsIFN0YW5kIHllIGluIHRoZSB3YXlzLCBhbmQgc2VlLCBhbmQgYXNrIGZvciB0aGUgb2xkIHBhdGhzLCB3aGVyZSBpcyB0aGUgZ29vZCB3YXksIGFuZCB3YWxrIHRoZXJlaW4sIGFuZCB5ZSBzaGFsbCBmaW5kIHJlc3QgZm9yIHlvdXIgc291bHMuIEJ1dCB0aGV5IHNhaWQsIFdlIHdpbGwgbm90IHdhbGsgdGhlcmVpbi4KQWxzbyBJIHNldCB3YXRjaG1lbiBvdmVyIHlvdSwgc2F5aW5nLCBIZWFya2VuIHRvIHRoZSBzb3VuZCBvZiB0aGUgdHJ1bXBldC4gQnV0IHRoZXkgc2FpZCwgV2Ugd2lsbCBub3QgaGVhcmtlbi4KVGhlcmVmb3JlIGhlYXIsIHllIG5hdGlvbnMsIGFuZCBrbm93LCBPIGNvbmdyZWdhdGlvbiwgd2hhdCBpcyBhbW9uZyB0aGVtLgpIZWFyLCBPIGVhcnRoOiBiZWhvbGQsIEkgd2lsbCBicmluZyBldmlsIHVwb24gdGhpcyBwZW9wbGUsIGV2ZW4gdGhlIGZydWl0IG9mIHRoZWlyIHRob3VnaHRzLCBiZWNhdXNlIHRoZXkgaGF2ZSBub3QgaGVhcmtlbmVkIHVudG8gbXkgd29yZHMsIG5vciB0byBteSBsYXcsIGJ1dCByZWplY3RlZCBpdC4KVG8gd2hhdCBwdXJwb3NlIGNvbWV0aCB0aGVyZSB0byBtZSBpbmNlbnNlIGZyb20gU2hlYmEsIGFuZCB0aGUgc3dlZXQgY2FuZSBmcm9tIGEgZmFyIGNvdW50cnk/IHlvdXIgYnVybnQgb2ZmZXJpbmdzIGFyZSBub3QgYWNjZXB0YWJsZSwgbm9yIHlvdXIgc2FjcmlmaWNlcyBzd2VldCB1bnRvIG1lLgpUaGVyZWZvcmUgdGh1cyBzYWl0aCB0aGUgTE9SRCwgQmVob2xkLCBJIHdpbGwgbGF5IHN0dW1ibGluZ2Jsb2NrcyBiZWZvcmUgdGhpcyBwZW9wbGUsIGFuZCB0aGUgZmF0aGVycyBhbmQgdGhlIHNvbnMgdG9nZXRoZXIgc2hhbGwgZmFsbCB1cG9uIHRoZW07IHRoZSBuZWlnaGJvdXIgYW5kIGhpcyBmcmllbmQgc2hhbGwgcGVyaXNoLgpUaHVzIHNhaXRoIHRoZSBMT1JELCBCZWhvbGQsIGEgcGVvcGxlIGNvbWV0aCBmcm9tIHRoZSBub3J0aCBjb3VudHJ5LCBhbmQgYSBncmVhdCBuYXRpb24gc2hhbGwgYmUgcmFpc2VkIGZyb20gdGhlIHNpZGVzIG9mIHRoZSBlYXJ0aC4KVGhleSBzaGFsbCBsYXkgaG9sZCBvbiBib3cgYW5kIHNwZWFyOyB0aGV5IGFyZSBjcnVlbCwgYW5kIGhhdmUgbm8gbWVyY3k7IHRoZWlyIHZvaWNlIHJvYXJldGggbGlrZSB0aGUgc2VhOyBhbmQgdGhleSByaWRlIHVwb24gaG9yc2VzLCBzZXQgaW4gYXJyYXkgYXMgbWVuIGZvciB3YXIgYWdhaW5zdCB0aGVlLCBPIGRhdWdodGVyIG9mIFppb24uCldlIGhhdmUgaGVhcmQgdGhlIGZhbWUgdGhlcmVvZjogb3VyIGhhbmRzIHdheCBmZWVibGU6IGFuZ3Vpc2ggaGF0aCB0YWtlbiBob2xkIG9mIHVzLCBhbmQgcGFpbiwgYXMgb2YgYSB3b21hbiBpbiB0cmF2YWlsLgpHbyBub3QgZm9ydGggaW50byB0aGUgZmllbGQsIG5vciB3YWxrIGJ5IHRoZSB3YXk7IGZvciB0aGUgc3dvcmQgb2YgdGhlIGVuZW15IGFuZCBmZWFyIGlzIG9uIGV2ZXJ5IHNpZGUuCk8gZGF1Z2h0ZXIgb2YgbXkgcGVvcGxlLCBnaXJkIHRoZWUgd2l0aCBzYWNrY2xvdGgsIGFuZCB3YWxsb3cgdGh5c2VsZiBpbiBhc2hlczogbWFrZSB0aGVlIG1vdXJuaW5nLCBhcyBmb3IgYW4gb25seSBzb24sIG1vc3QgYml0dGVyIGxhbWVudGF0aW9uOiBmb3IgdGhlIHNwb2lsZXIgc2hhbGwgc3VkZGVubHkgY29tZSB1cG9uIHVzLgpJIGhhdmUgc2V0IHRoZWUgZm9yIGEgdG93ZXIgYW5kIGEgZm9ydHJlc3MgYW1vbmcgbXkgcGVvcGxlLCB0aGF0IHRob3UgbWF5ZXN0IGtub3cgYW5kIHRyeSB0aGVpciB3YXkuClRoZXkgYXJlIGFsbCBncmlldm91cyByZXZvbHRlcnMsIHdhbGtpbmcgd2l0aCBzbGFuZGVyczogdGhleSBhcmUgYnJhc3MgYW5kIGlyb247IHRoZXkgYXJlIGFsbCBjb3JydXB0ZXJzLgpUaGUgYmVsbG93cyBhcmUgYnVybmVkLCB0aGUgbGVhZCBpcyBjb25zdW1lZCBvZiB0aGUgZmlyZTsgdGhlIGZvdW5kZXIgbWVsdGV0aCBpbiB2YWluOiBmb3IgdGhlIHdpY2tlZCBhcmUgbm90IHBsdWNrZWQgYXdheS4KUmVwcm9iYXRlIHNpbHZlciBzaGFsbCBtZW4gY2FsbCB0aGVtLCBiZWNhdXNlIHRoZSBMT1JEIGhhdGggcmVqZWN0ZWQgdGhlbS4KVGhlIHdvcmQgdGhhdCBjYW1lIHRvIEplcmVtaWFoIGZyb20gdGhlIExPUkQsIHNheWluZywKU3RhbmQgaW4gdGhlIGdhdGUgb2YgdGhlIExPUkQncyBob3VzZSwgYW5kIHByb2NsYWltIHRoZXJlIHRoaXMgd29yZCwgYW5kIHNheSwgSGVhciB0aGUgd29yZCBvZiB0aGUgTE9SRCwgYWxsIHllIG9mIEp1ZGFoLCB0aGF0IGVudGVyIGluIGF0IHRoZXNlIGdhdGVzIHRvIHdvcnNoaXAgdGhlIExPUkQuClRodXMgc2FpdGggdGhlIExPUkQgb2YgaG9zdHMsIHRoZSBHb2Qgb2YgSXNyYWVsLCBBbWVuZCB5b3VyIHdheXMgYW5kIHlvdXIgZG9pbmdzLCBhbmQgSSB3aWxsIGNhdXNlIHlvdSB0byBkd2VsbCBpbiB0aGlzIHBsYWNlLgpUcnVzdCB5ZSBub3QgaW4gbHlpbmcgd29yZHMsIHNheWluZywgVGhlIHRlbXBsZSBvZiB0aGUgTE9SRCwgVGhlIHRlbXBsZSBvZiB0aGUgTE9SRCwgVGhlIHRlbXBsZSBvZiB0aGUgTE9SRCwgYXJlIHRoZXNlLgpGb3IgaWYgeWUgdGhyb3VnaGx5IGFtZW5kIHlvdXIgd2F5cyBhbmQgeW91ciBkb2luZ3M7IGlmIHllIHRocm91Z2hseSBleGVjdXRlIGp1ZGdtZW50IGJldHdlZW4gYSBtYW4gYW5kIGhpcyBuZWlnaGJvdXI7CklmIHllIG9wcHJlc3Mgbm90IHRoZSBzdHJhbmdlciwgdGhlIGZhdGhlcmxlc3MsIGFuZCB0aGUgd2lkb3csIGFuZCBzaGVkIG5vdCBpbm5vY2VudCBibG9vZCBpbiB0aGlzIHBsYWNlLCBuZWl0aGVyIHdhbGsgYWZ0ZXIgb3RoZXIgZ29kcyB0byB5b3VyIGh1cnQ6ClRoZW4gd2lsbCBJIGNhdXNlIHlvdSB0byBkd2VsbCBpbiB0aGlzIHBsYWNlLCBpbiB0aGUgbGFuZCB0aGF0IEkgZ2F2ZSB0byB5b3VyIGZhdGhlcnMsIGZvciBldmVyIGFuZCBldmVyLgpCZWhvbGQsIHllIHRydXN0IGluIGx5aW5nIHdvcmRzLCB0aGF0IGNhbm5vdCBwcm9maXQuCldpbGwgeWUgc3RlYWwsIG11cmRlciwgYW5kIGNvbW1pdCBhZHVsdGVyeSwgYW5kIHN3ZWFyIGZhbHNlbHksIGFuZCBidXJuIGluY2Vuc2UgdW50byBCYWFsLCBhbmQgd2FsayBhZnRlciBvdGhlciBnb2RzIHdob20geWUga25vdyBub3Q7CkFuZCBjb21lIGFuZCBzdGFuZCBiZWZvcmUgbWUgaW4gdGhpcyBob3VzZSwgd2hpY2ggaXMgY2FsbGVkIGJ5IG15IG5hbWUsIGFuZCBzYXksIFdlIGFyZSBkZWxpdmVyZWQgdG8gZG8gYWxsIHRoZXNlIGFib21pbmF0aW9ucz8KSXMgdGhpcyBob3VzZSwgd2hpY2ggaXMgY2FsbGVkIGJ5IG15IG5hbWUsIGJlY29tZSBhIGRlbiBvZiByb2JiZXJzIGluIHlvdXIgZXllcz8gQmVob2xkLCBldmVuIEkgaGF2ZSBzZWVuIGl0LCBzYWl0aCB0aGUgTE9SRC4KQnV0IGdvIHllIG5vdyB1bnRvIG15IHBsYWNlIHdoaWNoIHdhcyBpbiBTaGlsb2gsIHdoZXJlIEkgc2V0IG15IG5hbWUgYXQgdGhlIGZpcnN0LCBhbmQgc2VlIHdoYXQgSSBkaWQgdG8gaXQgZm9yIHRoZSB3aWNrZWRuZXNzIG9mIG15IHBlb3BsZSBJc3JhZWwuCkFuZCBub3csIGJlY2F1c2UgeWUgaGF2ZSBkb25lIGFsbCB0aGVzZSB3b3Jrcywgc2FpdGggdGhlIExPUkQsIGFuZCBJIHNwYWtlIHVudG8geW91LCByaXNpbmcgdXAgZWFybHkgYW5kIHNwZWFraW5nLCBidXQgeWUgaGVhcmQgbm90OyBhbmQgSSBjYWxsZWQgeW91LCBidXQgeWUgYW5zd2VyZWQgbm90OwpUaGVyZWZvcmUgd2lsbCBJIGRvIHVudG8gdGhpcyBob3VzZSwgd2hpY2ggaXMgY2FsbGVkIGJ5IG15IG5hbWUsIHdoZXJlaW4geWUgdHJ1c3QsIGFuZCB1bnRvIHRoZSBwbGFjZSB3aGljaCBJIGdhdmUgdG8geW91IGFuZCB0byB5b3VyIGZhdGhlcnMsIGFzIEkgaGF2ZSBkb25lIHRvIFNoaWxvaC4KQW5kIEkgd2lsbCBjYXN0IHlvdSBvdXQgb2YgbXkgc2lnaHQsIGFzIEkgaGF2ZSBjYXN0IG91dCBhbGwgeW91ciBicmV0aHJlbiwgZXZlbiB0aGUgd2hvbGUgc2VlZCBvZiBFcGhyYWltLgpUaGVyZWZvcmUgcHJheSBub3QgdGhvdSBmb3IgdGhpcyBwZW9wbGUsIG5laXRoZXIgbGlmdCB1cCBjcnkgbm9yIHByYXllciBmb3IgdGhlbSwgbmVpdGhlciBtYWtlIGludGVyY2Vzc2lvbiB0byBtZTogZm9yIEkgd2lsbCBub3QgaGVhciB0aGVlLgpTZWVzdCB0aG91IG5vdCB3aGF0IHRoZXkgZG8gaW4gdGhlIGNpdGllcyBvZiBKdWRhaCBhbmQgaW4gdGhlIHN0cmVldHMgb2YgSmVydXNhbGVtPwpUaGUgY2hpbGRyZW4gZ2F0aGVyIHdvb2QsIGFuZCB0aGUgZmF0aGVycyBraW5kbGUgdGhlIGZpcmUsIGFuZCB0aGUgd29tZW4ga25lYWQgdGhlaXIgZG91Z2gsIHRvIG1ha2UgY2FrZXMgdG8gdGhlIHF1ZWVuIG9mIGhlYXZlbiwgYW5kIHRvIHBvdXIgb3V0IGRyaW5rIG9mZmVyaW5ncyB1bnRvIG90aGVyIGdvZHMsIHRoYXQgdGhleSBtYXkgcHJvdm9rZSBtZSB0byBhbmdlci4KRG8gdGhleSBwcm92b2tlIG1lIHRvIGFuZ2VyPyBzYWl0aCB0aGUgTE9SRDogZG8gdGhleSBub3QgcHJvdm9rZSB0aGVtc2VsdmVzIHRvIHRoZSBjb25mdXNpb24gb2YgdGhlaXIgb3duIGZhY2VzPwpUaGVyZWZvcmUgdGh1cyBzYWl0aCB0aGUgTG9yZCBHT0Q7IEJlaG9sZCwgbWluZSBhbmdlciBhbmQgbXkgZnVyeSBzaGFsbCBiZSBwb3VyZWQgb3V0IHVwb24gdGhpcyBwbGFjZSwgdXBvbiBtYW4sIGFuZCB1cG9uIGJlYXN0LCBhbmQgdXBvbiB0aGUgdHJlZXMgb2YgdGhlIGZpZWxkLCBhbmQgdXBvbiB0aGUgZnJ1aXQgb2YgdGhlIGdyb3VuZDsgYW5kIGl0IHNoYWxsIGJ1cm4sIGFuZCBzaGFsbCBub3QgYmUgcXVlbmNoZWQuClRodXMgc2FpdGggdGhlIExPUkQgb2YgaG9zdHMsIHRoZSBHb2Qgb2YgSXNyYWVsOyBQdXQgeW91ciBidXJudCBvZmZlcmluZ3MgdW50byB5b3VyIHNhY3JpZmljZXMsIGFuZCBlYXQgZmxlc2guCkZvciBJIHNwYWtlIG5vdCB1bnRvIHlvdXIgZmF0aGVycywgbm9yIGNvbW1hbmRlZCB0aGVtIGluIHRoZSBkYXkgdGhhdCBJIGJyb3VnaHQgdGhlbSBvdXQgb2YgdGhlIGxhbmQgb2YgRWd5cHQsIGNvbmNlcm5pbmcgYnVybnQgb2ZmZXJpbmdzIG9yIHNhY3JpZmljZXM6CkJ1dCB0aGlzIHRoaW5nIGNvbW1hbmRlZCBJIHRoZW0sIHNheWluZywgT2JleSBteSB2b2ljZSwgYW5kIEkgd2lsbCBiZSB5b3VyIEdvZCwgYW5kIHllIHNoYWxsIGJlIG15IHBlb3BsZTogYW5kIHdhbGsgeWUgaW4gYWxsIHRoZSB3YXlzIHRoYXQgSSBoYXZlIGNvbW1hbmRlZCB5b3UsIHRoYXQgaXQgbWF5IGJlIHdlbGwgdW50byB5b3UuCkJ1dCB0aGV5IGhlYXJrZW5lZCBub3QsIG5vciBpbmNsaW5lZCB0aGVpciBlYXIsIGJ1dCB3YWxrZWQgaW4gdGhlIGNvdW5zZWxzIGFuZCBpbiB0aGUgaW1hZ2luYXRpb24gb2YgdGhlaXIgZXZpbCBoZWFydCwgYW5kIHdlbnQgYmFja3dhcmQsIGFuZCBub3QgZm9yd2FyZC4KU2luY2UgdGhlIGRheSB0aGF0IHlvdXIgZmF0aGVycyBjYW1lIGZvcnRoIG91dCBvZiB0aGUgbGFuZCBvZiBFZ3lwdCB1bnRvIHRoaXMgZGF5IEkgaGF2ZSBldmVuIHNlbnQgdW50byB5b3UgYWxsIG15IHNlcnZhbnRzIHRoZSBwcm9waGV0cywgZGFpbHkgcmlzaW5nIHVwIGVhcmx5IGFuZCBzZW5kaW5nIHRoZW06CllldCB0aGV5IGhlYXJrZW5lZCBub3QgdW50byBtZSwgbm9yIGluY2xpbmVkIHRoZWlyIGVhciwgYnV0IGhhcmRlbmVkIHRoZWlyIG5lY2s6IHRoZXkgZGlkIHdvcnNlIHRoYW4gdGhlaXIgZmF0aGVycy4KVGhlcmVmb3JlIHRob3Ugc2hhbHQgc3BlYWsgYWxsIHRoZXNlIHdvcmRzIHVudG8gdGhlbTsgYnV0IHRoZXkgd2lsbCBub3QgaGVhcmtlbiB0byB0aGVlOiB0aG91IHNoYWx0IGFsc28gY2FsbCB1bnRvIHRoZW07IGJ1dCB0aGV5IHdpbGwgbm90IGFuc3dlciB0aGVlLgpCdXQgdGhvdSBzaGFsdCBzYXkgdW50byB0aGVtLCBUaGlzIGlzIGEgbmF0aW9uIHRoYXQgb2JleWV0aCBub3QgdGhlIHZvaWNlIG9mIHRoZSBMT1JEIHRoZWlyIEdvZCwgbm9yIHJlY2VpdmV0aCBjb3JyZWN0aW9uOiB0cnV0aCBpcyBwZXJpc2hlZCwgYW5kIGlzIGN1dCBvZmYgZnJvbSB0aGVpciBtb3V0aC4KQ3V0IG9mZiB0aGluZSBoYWlyLCBPIEplcnVzYWxlbSwgYW5kIGNhc3QgaXQgYXdheSwgYW5kIHRha2UgdXAgYSBsYW1lbnRhdGlvbiBvbiBoaWdoIHBsYWNlczsgZm9yIHRoZSBMT1JEIGhhdGggcmVqZWN0ZWQgYW5kIGZvcnNha2VuIHRoZSBnZW5lcmF0aW9uIG9mIGhpcyB3cmF0aC4KRm9yIHRoZSBjaGlsZHJlbiBvZiBKdWRhaCBoYXZlIGRvbmUgZXZpbCBpbiBteSBzaWdodCwgc2FpdGggdGhlIExPUkQ6IHRoZXkgaGF2ZSBzZXQgdGhlaXIgYWJvbWluYXRpb25zIGluIHRoZSBob3VzZSB3aGljaCBpcyBjYWxsZWQgYnkgbXkgbmFtZSwgdG8gcG9sbHV0ZSBpdC4KQW5kIHRoZXkgaGF2ZSBidWlsdCB0aGUgaGlnaCBwbGFjZXMgb2YgVG9waGV0LCB3aGljaCBpcyBpbiB0aGUgdmFsbGV5IG9mIHRoZSBzb24gb2YgSGlubm9tLCB0byBidXJuIHRoZWlyIHNvbnMgYW5kIHRoZWlyIGRhdWdodGVycyBpbiB0aGUgZmlyZTsgd2hpY2ggSSBjb21tYW5kZWQgdGhlbSBub3QsIG5laXRoZXIgY2FtZSBpdCBpbnRvIG15IGhlYXJ0LgpUaGVyZWZvcmUsIGJlaG9sZCwgdGhlIGRheXMgY29tZSwgc2FpdGggdGhlIExPUkQsIHRoYXQgaXQgc2hhbGwgbm8gbW9yZSBiZSBjYWxsZWQgVG9waGV0LCBub3IgdGhlIHZhbGxleSBvZiB0aGUgc29uIG9mIEhpbm5vbSwgYnV0IHRoZSB2YWxsZXkgb2Ygc2xhdWdodGVyOiBmb3IgdGhleSBzaGFsbCBidXJ5IGluIFRvcGhldCwgdGlsbCB0aGVyZSBiZSBubyBwbGFjZS4KQW5kIHRoZSBjYXJjYXNlcyBvZiB0aGlzIHBlb3BsZSBzaGFsbCBiZSBtZWF0IGZvciB0aGUgZm93bHMgb2YgdGhlIGhlYXZlbiwgYW5kIGZvciB0aGUgYmVhc3RzIG9mIHRoZSBlYXJ0aDsgYW5kIG5vbmUgc2hhbGwgZnJheSB0aGVtIGF3YXkuClRoZW4gd2lsbCBJIGNhdXNlIHRvIGNlYXNlIGZyb20gdGhlIGNpdGllcyBvZiBKdWRhaCwgYW5kIGZyb20gdGhlIHN0cmVldHMgb2YgSmVydXNhbGVtLCB0aGUgdm9pY2Ugb2YgbWlydGgsIGFuZCB0aGUgdm9pY2Ugb2YgZ2xhZG5lc3MsIHRoZSB2b2ljZSBvZiB0aGUgYnJpZGVncm9vbSwgYW5kIHRoZSB2b2ljZSBvZiB0aGUgYnJpZGU6IGZvciB0aGUgbGFuZCBzaGFsbCBiZSBkZXNvbGF0ZS4KQXQgdGhhdCB0aW1lLCBzYWl0aCB0aGUgTE9SRCwgdGhleSBzaGFsbCBicmluZyBvdXQgdGhlIGJvbmVzIG9mIHRoZSBraW5ncyBvZiBKdWRhaCwgYW5kIHRoZSBib25lcyBvZiBoaXMgcHJpbmNlcywgYW5kIHRoZSBib25lcyBvZiB0aGUgcHJpZXN0cywgYW5kIHRoZSBib25lcyBvZiB0aGUgcHJvcGhldHMsIGFuZCB0aGUgYm9uZXMgb2YgdGhlIGluaGFiaXRhbnRzIG9mIEplcnVzYWxlbSwgb3V0IG9mIHRoZWlyIGdyYXZlczoKQW5kIHRoZXkgc2hhbGwgc3ByZWFkIHRoZW0gYmVmb3JlIHRoZSBzdW4sIGFuZCB0aGUgbW9vbiwgYW5kIGFsbCB0aGUgaG9zdCBvZiBoZWF2ZW4sIHdob20gdGhleSBoYXZlIGxvdmVkLCBhbmQgd2hvbSB0aGV5IGhhdmUgc2VydmVkLCBhbmQgYWZ0ZXIgd2hvbSB0aGV5IGhhdmUgd2Fsa2VkLCBhbmQgd2hvbSB0aGV5IGhhdmUgc291Z2h0LCBhbmQgd2hvbSB0aGV5IGhhdmUgd29yc2hpcHBlZDogdGhleSBzaGFsbCBub3QgYmUgZ2F0aGVyZWQsIG5vciBiZSBidXJpZWQ7IHRoZXkgc2hhbGwgYmUgZm9yIGR1bmcgdXBvbiB0aGUgZmFjZSBvZiB0aGUgZWFydGguCkFuZCBkZWF0aCBzaGFsbCBiZSBjaG9zZW4gcmF0aGVyIHRoYW4gbGlmZSBieSBhbGwgdGhlIHJlc2lkdWUgb2YgdGhlbSB0aGF0IHJlbWFpbiBvZiB0aGlzIGV2aWwgZmFtaWx5LCB3aGljaCByZW1haW4gaW4gYWxsIHRoZSBwbGFjZXMgd2hpdGhlciBJIGhhdmUgZHJpdmVuIHRoZW0sIHNhaXRoIHRoZSBMT1JEIG9mIGhvc3RzLgpNb3Jlb3ZlciB0aG91IHNoYWx0IHNheSB1bnRvIHRoZW0sIFRodXMgc2FpdGggdGhlIExPUkQ7IFNoYWxsIHRoZXkgZmFsbCwgYW5kIG5vdCBhcmlzZT8gc2hhbGwgaGUgdHVybiBhd2F5LCBhbmQgbm90IHJldHVybj8KV2h5IHRoZW4gaXMgdGhpcyBwZW9wbGUgb2YgSmVydXNhbGVtIHNsaWRkZW4gYmFjayBieSBhIHBlcnBldHVhbCBiYWNrc2xpZGluZz8gdGhleSBob2xkIGZhc3QgZGVjZWl0LCB0aGV5IHJlZnVzZSB0byByZXR1cm4uCkkgaGVhcmtlbmVkIGFuZCBoZWFyZCwgYnV0IHRoZXkgc3Bha2Ugbm90IGFyaWdodDogbm8gbWFuIHJlcGVudGVkIGhpbSBvZiBoaXMgd2lja2VkbmVzcywgc2F5aW5nLCBXaGF0IGhhdmUgSSBkb25lPyBldmVyeSBvbmUgdHVybmVkIHRvIGhpcyBjb3Vyc2UsIGFzIHRoZSBob3JzZSBydXNoZXRoIGludG8gdGhlIGJhdHRsZS4KWWVhLCB0aGUgc3RvcmsgaW4gdGhlIGhlYXZlbiBrbm93ZXRoIGhlciBhcHBvaW50ZWQgdGltZXM7IGFuZCB0aGUgdHVydGxlIGFuZCB0aGUgY3JhbmUgYW5kIHRoZSBzd2FsbG93IG9ic2VydmUgdGhlIHRpbWUgb2YgdGhlaXIgY29taW5nOyBidXQgbXkgcGVvcGxlIGtub3cgbm90IHRoZSBqdWRnbWVudCBvZiB0aGUgTE9SRC4KSG93IGRvIHllIHNheSwgV2UgYXJlIHdpc2UsIGFuZCB0aGUgbGF3IG9mIHRoZSBMT1JEIGlzIHdpdGggdXM/IExvLCBjZXJ0YWlubHkgaW4gdmFpbiBtYWRlIGhlIGl0OyB0aGUgcGVuIG9mIHRoZSBzY3JpYmVzIGlzIGluIHZhaW4uClRoZSB3aXNlIG1lbiBhcmUgYXNoYW1lZCwgdGhleSBhcmUgZGlzbWF5ZWQgYW5kIHRha2VuOiBsbywgdGhleSBoYXZlIHJlamVjdGVkIHRoZSB3b3JkIG9mIHRoZSBMT1JEOyBhbmQgd2hhdCB3aXNkb20gaXMgaW4gdGhlbT8KVGhlcmVmb3JlIHdpbGwgSSBnaXZlIHRoZWlyIHdpdmVzIHVudG8gb3RoZXJzLCBhbmQgdGhlaXIgZmllbGRzIHRvIHRoZW0gdGhhdCBzaGFsbCBpbmhlcml0IHRoZW06IGZvciBldmVyeSBvbmUgZnJvbSB0aGUgbGVhc3QgZXZlbiB1bnRvIHRoZSBncmVhdGVzdCBpcyBnaXZlbiB0byBjb3ZldG91c25lc3MsIGZyb20gdGhlIHByb3BoZXQgZXZlbiB1bnRvIHRoZSBwcmllc3QgZXZlcnkgb25lIGRlYWxldGggZmFsc2VseS4KRm9yIHRoZXkgaGF2ZSBoZWFsZWQgdGhlIGh1cnQgb2YgdGhlIGRhdWdodGVyIG9mIG15IHBlb3BsZSBzbGlnaHRseSwgc2F5aW5nLCBQZWFjZSwgcGVhY2U7IHdoZW4gdGhlcmUgaXMgbm8gcGVhY2UuCldlcmUgdGhleSBhc2hhbWVkIHdoZW4gdGhleSBoYWQgY29tbWl0dGVkIGFib21pbmF0aW9uPyBuYXksIHRoZXkgd2VyZSBub3QgYXQgYWxsIGFzaGFtZWQsIG5laXRoZXIgY291bGQgdGhleSBibHVzaDogdGhlcmVmb3JlIHNoYWxsIHRoZXkgZmFsbCBhbW9uZyB0aGVtIHRoYXQgZmFsbDogaW4gdGhlIHRpbWUgb2YgdGhlaXIgdmlzaXRhdGlvbiB0aGV5IHNoYWxsIGJlIGNhc3QgZG93biwgc2FpdGggdGhlIExPUkQuCkkgd2lsbCBzdXJlbHkgY29uc3VtZSB0aGVtLCBzYWl0aCB0aGUgTE9SRDogdGhlcmUgc2hhbGwgYmUgbm8gZ3JhcGVzIG9uIHRoZSB2aW5lLCBub3IgZmlncyBvbiB0aGUgZmlnIHRyZWUsIGFuZCB0aGUgbGVhZiBzaGFsbCBmYWRlOyBhbmQgdGhlIHRoaW5ncyB0aGF0IEkgaGF2ZSBnaXZlbiB0aGVtIHNoYWxsIHBhc3MgYXdheSBmcm9tIHRoZW0uCldoeSBkbyB3ZSBzaXQgc3RpbGw/IGFzc2VtYmxlIHlvdXJzZWx2ZXMsIGFuZCBsZXQgdXMgZW50ZXIgaW50byB0aGUgZGVmZW5jZWQgY2l0aWVzLCBhbmQgbGV0IHVzIGJlIHNpbGVudCB0aGVyZTogZm9yIHRoZSBMT1JEIG91ciBHb2QgaGF0aCBwdXQgdXMgdG8gc2lsZW5jZSwgYW5kIGdpdmVuIHVzIHdhdGVyIG9mIGdhbGwgdG8gZHJpbmssIGJlY2F1c2Ugd2UgaGF2ZSBzaW5uZWQgYWdhaW5zdCB0aGUgTE9SRC4KV2UgbG9va2VkIGZvciBwZWFjZSwgYnV0IG5vIGdvb2QgY2FtZTsgYW5kIGZvciBhIHRpbWUgb2YgaGVhbHRoLCBhbmQgYmVob2xkIHRyb3VibGUhClRoZSBzbm9ydGluZyBvZiBoaXMgaG9yc2VzIHdhcyBoZWFyZCBmcm9tIERhbjogdGhlIHdob2xlIGxhbmQgdHJlbWJsZWQgYXQgdGhlIHNvdW5kIG9mIHRoZSBuZWlnaGluZyBvZiBoaXMgc3Ryb25nIG9uZXM7IGZvciB0aGV5IGFyZSBjb21lLCBhbmQgaGF2ZSBkZXZvdXJlZCB0aGUgbGFuZCwgYW5kIGFsbCB0aGF0IGlzIGluIGl0OyB0aGUgY2l0eSwgYW5kIHRob3NlIHRoYXQgZHdlbGwgdGhlcmVpbi4KRm9yLCBiZWhvbGQsIEkgd2lsbCBzZW5kIHNlcnBlbnRzLCBjb2NrYXRyaWNlcywgYW1vbmcgeW91LCB3aGljaCB3aWxsIG5vdCBiZSBjaGFybWVkLCBhbmQgdGhleSBzaGFsbCBiaXRlIHlvdSwgc2FpdGggdGhlIExPUkQuCldoZW4gSSB3b3VsZCBjb21mb3J0IG15c2VsZiBhZ2FpbnN0IHNvcnJvdywgbXkgaGVhcnQgaXMgZmFpbnQgaW4gbWUuCkJlaG9sZCB0aGUgdm9pY2Ugb2YgdGhlIGNyeSBvZiB0aGUgZGF1Z2h0ZXIgb2YgbXkgcGVvcGxlIGJlY2F1c2Ugb2YgdGhlbSB0aGF0IGR3ZWxsIGluIGEgZmFyIGNvdW50cnk6IElzIG5vdCB0aGUgTE9SRCBpbiBaaW9uPyBpcyBub3QgaGVyIGtpbmcgaW4gaGVyPyBXaHkgaGF2ZSB0aGV5IHByb3Zva2VkIG1lIHRvIGFuZ2VyIHdpdGggdGhlaXIgZ3JhdmVuIGltYWdlcywgYW5kIHdpdGggc3RyYW5nZSB2YW5pdGllcz8KVGhlIGhhcnZlc3QgaXMgcGFzdCwgdGhlIHN1bW1lciBpcyBlbmRlZCwgYW5kIHdlIGFyZSBub3Qgc2F2ZWQuCkZvciB0aGUgaHVydCBvZiB0aGUgZGF1Z2h0ZXIgb2YgbXkgcGVvcGxlIGFtIEkgaHVydDsgSSBhbSBibGFjazsgYXN0b25pc2htZW50IGhhdGggdGFrZW4gaG9sZCBvbiBtZS4KSXMgdGhlcmUgbm8gYmFsbSBpbiBHaWxlYWQ7IGlzIHRoZXJlIG5vIHBoeXNpY2lhbiB0aGVyZT8gd2h5IHRoZW4gaXMgbm90IHRoZSBoZWFsdGggb2YgdGhlIGRhdWdodGVyIG9mIG15IHBlb3BsZSByZWNvdmVyZWQ/Ck9oIHRoYXQgbXkgaGVhZCB3ZXJlIHdhdGVycywgYW5kIG1pbmUgZXllcyBhIGZvdW50YWluIG9mIHRlYXJzLCB0aGF0IEkgbWlnaHQgd2VlcCBkYXkgYW5kIG5pZ2h0IGZvciB0aGUgc2xhaW4gb2YgdGhlIGRhdWdodGVyIG9mIG15IHBlb3BsZSEKT2ggdGhhdCBJIGhhZCBpbiB0aGUgd2lsZGVybmVzcyBhIGxvZGdpbmcgcGxhY2Ugb2Ygd2F5ZmFyaW5nIG1lbjsgdGhhdCBJIG1pZ2h0IGxlYXZlIG15IHBlb3BsZSwgYW5kIGdvIGZyb20gdGhlbSEgZm9yIHRoZXkgYmUgYWxsIGFkdWx0ZXJlcnMsIGFuIGFzc2VtYmx5IG9mIHRyZWFjaGVyb3VzIG1lbi4KQW5kIHRoZXkgYmVuZCB0aGVpciB0b25ndWVzIGxpa2UgdGhlaXIgYm93IGZvciBsaWVzOiBidXQgdGhleSBhcmUgbm90IHZhbGlhbnQgZm9yIHRoZSB0cnV0aCB1cG9uIHRoZSBlYXJ0aDsgZm9yIHRoZXkgcHJvY2VlZCBmcm9tIGV2aWwgdG8gZXZpbCwgYW5kIHRoZXkga25vdyBub3QgbWUsIHNhaXRoIHRoZSBMT1JELgpUYWtlIHllIGhlZWQgZXZlcnkgb25lIG9mIGhpcyBuZWlnaGJvdXIsIGFuZCB0cnVzdCB5ZSBub3QgaW4gYW55IGJyb3RoZXI6IGZvciBldmVyeSBicm90aGVyIHdpbGwgdXR0ZXJseSBzdXBwbGFudCwgYW5kIGV2ZXJ5IG5laWdoYm91ciB3aWxsIHdhbGsgd2l0aCBzbGFuZGVycy4KQW5kIHRoZXkgd2lsbCBkZWNlaXZlIGV2ZXJ5IG9uZSBoaXMgbmVpZ2hib3VyLCBhbmQgd2lsbCBub3Qgc3BlYWsgdGhlIHRydXRoOiB0aGV5IGhhdmUgdGF1Z2h0IHRoZWlyIHRvbmd1ZSB0byBzcGVhayBsaWVzLCBhbmQgd2VhcnkgdGhlbXNlbHZlcyB0byBjb21taXQgaW5pcXVpdHkuClRoaW5lIGhhYml0YXRpb24gaXMgaW4gdGhlIG1pZHN0IG9mIGRlY2VpdDsgdGhyb3VnaCBkZWNlaXQgdGhleSByZWZ1c2UgdG8ga25vdyBtZSwgc2FpdGggdGhlIExPUkQuClRoZXJlZm9yZSB0aHVzIHNhaXRoIHRoZSBMT1JEIG9mIGhvc3RzLCBCZWhvbGQsIEkgd2lsbCBtZWx0IHRoZW0sIGFuZCB0cnkgdGhlbTsgZm9yIGhvdyBzaGFsbCBJIGRvIGZvciB0aGUgZGF1Z2h0ZXIgb2YgbXkgcGVvcGxlPwpUaGVpciB0b25ndWUgaXMgYXMgYW4gYXJyb3cgc2hvdCBvdXQ7IGl0IHNwZWFrZXRoIGRlY2VpdDogb25lIHNwZWFrZXRoIHBlYWNlYWJseSB0byBoaXMgbmVpZ2hib3VyIHdpdGggaGlzIG1vdXRoLCBidXQgaW4gaGVhcnQgaGUgbGF5ZXRoIGhpcyB3YWl0LgpTaGFsbCBJIG5vdCB2aXNpdCB0aGVtIGZvciB0aGVzZSB0aGluZ3M/IHNhaXRoIHRoZSBMT1JEOiBzaGFsbCBub3QgbXkgc291bCBiZSBhdmVuZ2VkIG9uIHN1Y2ggYSBuYXRpb24gYXMgdGhpcz8KRm9yIHRoZSBtb3VudGFpbnMgd2lsbCBJIHRha2UgdXAgYSB3ZWVwaW5nIGFuZCB3YWlsaW5nLCBhbmQgZm9yIHRoZSBoYWJpdGF0aW9ucyBvZiB0aGUgd2lsZGVybmVzcyBhIGxhbWVudGF0aW9uLCBiZWNhdXNlIHRoZXkgYXJlIGJ1cm5lZCB1cCwgc28gdGhhdCBub25lIGNhbiBwYXNzIHRocm91Z2ggdGhlbTsgbmVpdGhlciBjYW4gbWVuIGhlYXIgdGhlIHZvaWNlIG9mIHRoZSBjYXR0bGU7IGJvdGggdGhlIGZvd2wgb2YgdGhlIGhlYXZlbnMgYW5kIHRoZSBiZWFzdCBhcmUgZmxlZDsgdGhleSBhcmUgZ29uZS4KQW5kIEkgd2lsbCBtYWtlIEplcnVzYWxlbSBoZWFwcywgYW5kIGEgZGVuIG9mIGRyYWdvbnM7IGFuZCBJIHdpbGwgbWFrZSB0aGUgY2l0aWVzIG9mIEp1ZGFoIGRlc29sYXRlLCB3aXRob3V0IGFuIGluaGFiaXRhbnQuCldobyBpcyB0aGUgd2lzZSBtYW4sIHRoYXQgbWF5IHVuZGVyc3RhbmQgdGhpcz8gYW5kIHdobyBpcyBoZSB0byB3aG9tIHRoZSBtb3V0aCBvZiB0aGUgTE9SRCBoYXRoIHNwb2tlbiwgdGhhdCBoZSBtYXkgZGVjbGFyZSBpdCwgZm9yIHdoYXQgdGhlIGxhbmQgcGVyaXNoZXRoIGFuZCBpcyBidXJuZWQgdXAgbGlrZSBhIHdpbGRlcm5lc3MsIHRoYXQgbm9uZSBwYXNzZXRoIHRocm91Z2g/CkFuZCB0aGUgTE9SRCBzYWl0aCwgQmVjYXVzZSB0aGV5IGhhdmUgZm9yc2FrZW4gbXkgbGF3IHdoaWNoIEkgc2V0IGJlZm9yZSB0aGVtLCBhbmQgaGF2ZSBub3Qgb2JleWVkIG15IHZvaWNlLCBuZWl0aGVyIHdhbGtlZCB0aGVyZWluOwpCdXQgaGF2ZSB3YWxrZWQgYWZ0ZXIgdGhlIGltYWdpbmF0aW9uIG9mIHRoZWlyIG93biBoZWFydCwgYW5kIGFmdGVyIEJhYWxpbSwgd2hpY2ggdGhlaXIgZmF0aGVycyB0YXVnaHQgdGhlbToKVGhlcmVmb3JlIHRodXMgc2FpdGggdGhlIExPUkQgb2YgaG9zdHMsIHRoZSBHb2Qgb2YgSXNyYWVsOyBCZWhvbGQsIEkgd2lsbCBmZWVkIHRoZW0sIGV2ZW4gdGhpcyBwZW9wbGUsIHdpdGggd29ybXdvb2QsIGFuZCBnaXZlIHRoZW0gd2F0ZXIgb2YgZ2FsbCB0byBkcmluay4KSSB3aWxsIHNjYXR0ZXIgdGhlbSBhbHNvIGFtb25nIHRoZSBoZWF0aGVuLCB3aG9tIG5laXRoZXIgdGhleSBub3IgdGhlaXIgZmF0aGVycyBoYXZlIGtub3duOiBhbmQgSSB3aWxsIHNlbmQgYSBzd29yZCBhZnRlciB0aGVtLCB0aWxsIEkgaGF2ZSBjb25zdW1lZCB0aGVtLgpUaHVzIHNhaXRoIHRoZSBMT1JEIG9mIGhvc3RzLCBDb25zaWRlciB5ZSwgYW5kIGNhbGwgZm9yIHRoZSBtb3VybmluZyB3b21lbiwgdGhhdCB0aGV5IG1heSBjb21lOyBhbmQgc2VuZCBmb3IgY3VubmluZyB3b21lbiwgdGhhdCB0aGV5IG1heSBjb21lOgpBbmQgbGV0IHRoZW0gbWFrZSBoYXN0ZSwgYW5kIHRha2UgdXAgYSB3YWlsaW5nIGZvciB1cywgdGhhdCBvdXIgZXllcyBtYXkgcnVuIGRvd24gd2l0aCB0ZWFycywgYW5kIG91ciBleWVsaWRzIGd1c2ggb3V0IHdpdGggd2F0ZXJzLgpGb3IgYSB2b2ljZSBvZiB3YWlsaW5nIGlzIGhlYXJkIG91dCBvZiBaaW9uLCBIb3cgYXJlIHdlIHNwb2lsZWQhIHdlIGFyZSBncmVhdGx5IGNvbmZvdW5kZWQsIGJlY2F1c2Ugd2UgaGF2ZSBmb3JzYWtlbiB0aGUgbGFuZCwgYmVjYXVzZSBvdXIgZHdlbGxpbmdzIGhhdmUgY2FzdCB1cyBvdXQuCllldCBoZWFyIHRoZSB3b3JkIG9mIHRoZSBMT1JELCBPIHllIHdvbWVuLCBhbmQgbGV0IHlvdXIgZWFyIHJlY2VpdmUgdGhlIHdvcmQgb2YgaGlzIG1vdXRoLCBhbmQgdGVhY2ggeW91ciBkYXVnaHRlcnMgd2FpbGluZywgYW5kIGV2ZXJ5IG9uZSBoZXIgbmVpZ2hib3VyIGxhbWVudGF0aW9uLgpGb3IgZGVhdGggaXMgY29tZSB1cCBpbnRvIG91ciB3aW5kb3dzLCBhbmQgaXMgZW50ZXJlZCBpbnRvIG91ciBwYWxhY2VzLCB0byBjdXQgb2ZmIHRoZSBjaGlsZHJlbiBmcm9tIHdpdGhvdXQsIGFuZCB0aGUgeW91bmcgbWVuIGZyb20gdGhlIHN0cmVldHMuClNwZWFrLCBUaHVzIHNhaXRoIHRoZSBMT1JELCBFdmVuIHRoZSBjYXJjYXNlcyBvZiBtZW4gc2hhbGwgZmFsbCBhcyBkdW5nIHVwb24gdGhlIG9wZW4gZmllbGQsIGFuZCBhcyB0aGUgaGFuZGZ1bCBhZnRlciB0aGUgaGFydmVzdG1hbiwgYW5kIG5vbmUgc2hhbGwgZ2F0aGVyIHRoZW0uClRodXMgc2FpdGggdGhlIExPUkQsIExldCBub3QgdGhlIHdpc2UgbWFuIGdsb3J5IGluIGhpcyB3aXNkb20sIG5laXRoZXIgbGV0IHRoZSBtaWdodHkgbWFuIGdsb3J5IGluIGhpcyBtaWdodCwgbGV0IG5vdCB0aGUgcmljaCBtYW4gZ2xvcnkgaW4gaGlzIHJpY2hlczoKQnV0IGxldCBoaW0gdGhhdCBnbG9yaWV0aCBnbG9yeSBpbiB0aGlzLCB0aGF0IGhlIHVuZGVyc3RhbmRldGggYW5kIGtub3dldGggbWUsIHRoYXQgSSBhbSB0aGUgTE9SRCB3aGljaCBleGVyY2lzZSBsb3ZpbmdraW5kbmVzcywganVkZ21lbnQsIGFuZCByaWdodGVvdXNuZXNzLCBpbiB0aGUgZWFydGg6IGZvciBpbiB0aGVzZSB0aGluZ3MgSSBkZWxpZ2h0LCBzYWl0aCB0aGUgTE9SRC4KQmVob2xkLCB0aGUgZGF5cyBjb21lLCBzYWl0aCB0aGUgTE9SRCwgdGhhdCBJIHdpbGwgcHVuaXNoIGFsbCB0aGVtIHdoaWNoIGFyZSBjaXJjdW1jaXNlZCB3aXRoIHRoZSB1bmNpcmN1bWNpc2VkOwpFZ3lwdCwgYW5kIEp1ZGFoLCBhbmQgRWRvbSwgYW5kIHRoZSBjaGlsZHJlbiBvZiBBbW1vbiwgYW5kIE1vYWIsIGFuZCBhbGwgdGhhdCBhcmUgaW4gdGhlIHV0bW9zdCBjb3JuZXJzLCB0aGF0IGR3ZWxsIGluIHRoZSB3aWxkZXJuZXNzOiBmb3IgYWxsIHRoZXNlIG5hdGlvbnMgYXJlIHVuY2lyY3VtY2lzZWQsIGFuZCBhbGwgdGhlIGhvdXNlIG9mIElzcmFlbCBhcmUgdW5jaXJjdW1jaXNlZCBpbiB0aGUgaGVhcnQuCkhlYXIgeWUgdGhlIHdvcmQgd2hpY2ggdGhlIExPUkQgc3BlYWtldGggdW50byB5b3UsIE8gaG91c2Ugb2YgSXNyYWVsOgpUaHVzIHNhaXRoIHRoZSBMT1JELCBMZWFybiBub3QgdGhlIHdheSBvZiB0aGUgaGVhdGhlbiwgYW5kIGJlIG5vdCBkaXNtYXllZCBhdCB0aGUgc2lnbnMgb2YgaGVhdmVuOyBmb3IgdGhlIGhlYXRoZW4gYXJlIGRpc21heWVkIGF0IHRoZW0uCkZvciB0aGUgY3VzdG9tcyBvZiB0aGUgcGVvcGxlIGFyZSB2YWluOiBmb3Igb25lIGN1dHRldGggYSB0cmVlIG91dCBvZiB0aGUgZm9yZXN0LCB0aGUgd29yayBvZiB0aGUgaGFuZHMgb2YgdGhlIHdvcmttYW4sIHdpdGggdGhlIGF4ZS4KVGhleSBkZWNrIGl0IHdpdGggc2lsdmVyIGFuZCB3aXRoIGdvbGQ7IHRoZXkgZmFzdGVuIGl0IHdpdGggbmFpbHMgYW5kIHdpdGggaGFtbWVycywgdGhhdCBpdCBtb3ZlIG5vdC4KVGhleSBhcmUgdXByaWdodCBhcyB0aGUgcGFsbSB0cmVlLCBidXQgc3BlYWsgbm90OiB0aGV5IG11c3QgbmVlZHMgYmUgYm9ybmUsIGJlY2F1c2UgdGhleSBjYW5ub3QgZ28uIEJlIG5vdCBhZnJhaWQgb2YgdGhlbTsgZm9yIHRoZXkgY2Fubm90IGRvIGV2aWwsIG5laXRoZXIgYWxzbyBpcyBpdCBpbiB0aGVtIHRvIGRvIGdvb2QuCkZvcmFzbXVjaCBhcyB0aGVyZSBpcyBub25lIGxpa2UgdW50byB0aGVlLCBPIExPUkQ7IHRob3UgYXJ0IGdyZWF0LCBhbmQgdGh5IG5hbWUgaXMgZ3JlYXQgaW4gbWlnaHQuCldobyB3b3VsZCBub3QgZmVhciB0aGVlLCBPIEtpbmcgb2YgbmF0aW9ucz8gZm9yIHRvIHRoZWUgZG90aCBpdCBhcHBlcnRhaW46IGZvcmFzbXVjaCBhcyBhbW9uZyBhbGwgdGhlIHdpc2UgbWVuIG9mIHRoZSBuYXRpb25zLCBhbmQgaW4gYWxsIHRoZWlyIGtpbmdkb21zLCB0aGVyZSBpcyBub25lIGxpa2UgdW50byB0aGVlLgpCdXQgdGhleSBhcmUgYWx0b2dldGhlciBicnV0aXNoIGFuZCBmb29saXNoOiB0aGUgc3RvY2sgaXMgYSBkb2N0cmluZSBvZiB2YW5pdGllcy4KU2lsdmVyIHNwcmVhZCBpbnRvIHBsYXRlcyBpcyBicm91Z2h0IGZyb20gVGFyc2hpc2gsIGFuZCBnb2xkIGZyb20gVXBoYXosIHRoZSB3b3JrIG9mIHRoZSB3b3JrbWFuLCBhbmQgb2YgdGhlIGhhbmRzIG9mIHRoZSBmb3VuZGVyOiBibHVlIGFuZCBwdXJwbGUgaXMgdGhlaXIgY2xvdGhpbmc6IHRoZXkgYXJlIGFsbCB0aGUgd29yayBvZiBjdW5uaW5nIG1lbi4KQnV0IHRoZSBMT1JEIGlzIHRoZSB0cnVlIEdvZCwgaGUgaXMgdGhlIGxpdmluZyBHb2QsIGFuZCBhbiBldmVybGFzdGluZyBraW5nOiBhdCBoaXMgd3JhdGggdGhlIGVhcnRoIHNoYWxsIHRyZW1ibGUsIGFuZCB0aGUgbmF0aW9ucyBzaGFsbCBub3QgYmUgYWJsZSB0byBhYmlkZSBoaXMgaW5kaWduYXRpb24uClRodXMgc2hhbGwgeWUgc2F5IHVudG8gdGhlbSwgVGhlIGdvZHMgdGhhdCBoYXZlIG5vdCBtYWRlIHRoZSBoZWF2ZW5zIGFuZCB0aGUgZWFydGgsIGV2ZW4gdGhleSBzaGFsbCBwZXJpc2ggZnJvbSB0aGUgZWFydGgsIGFuZCBmcm9tIHVuZGVyIHRoZXNlIGhlYXZlbnMuCkhlIGhhdGggbWFkZSB0aGUgZWFydGggYnkgaGlzIHBvd2VyLCBoZSBoYXRoIGVzdGFibGlzaGVkIHRoZSB3b3JsZCBieSBoaXMgd2lzZG9tLCBhbmQgaGF0aCBzdHJldGNoZWQgb3V0IHRoZSBoZWF2ZW5zIGJ5IGhpcyBkaXNjcmV0aW9uLgpXaGVuIGhlIHV0dGVyZXRoIGhpcyB2b2ljZSwgdGhlcmUgaXMgYSBtdWx0aXR1ZGUgb2Ygd2F0ZXJzIGluIHRoZSBoZWF2ZW5zLCBhbmQgaGUgY2F1c2V0aCB0aGUgdmFwb3VycyB0byBhc2NlbmQgZnJvbSB0aGUgZW5kcyBvZiB0aGUgZWFydGg7IGhlIG1ha2V0aCBsaWdodG5pbmdzIHdpdGggcmFpbiwgYW5kIGJyaW5nZXRoIGZvcnRoIHRoZSB3aW5kIG91dCBvZiBoaXMgdHJlYXN1cmVzLgpFdmVyeSBtYW4gaXMgYnJ1dGlzaCBpbiBoaXMga25vd2xlZGdlOiBldmVyeSBmb3VuZGVyIGlzIGNvbmZvdW5kZWQgYnkgdGhlIGdyYXZlbiBpbWFnZTogZm9yIGhpcyBtb2x0ZW4gaW1hZ2UgaXMgZmFsc2Vob29kLCBhbmQgdGhlcmUgaXMgbm8gYnJlYXRoIGluIHRoZW0uClRoZXkgYXJlIHZhbml0eSwgYW5kIHRoZSB3b3JrIG9mIGVycm9yczogaW4gdGhlIHRpbWUgb2YgdGhlaXIgdmlzaXRhdGlvbiB0aGV5IHNoYWxsIHBlcmlzaC4KVGhlIHBvcnRpb24gb2YgSmFjb2IgaXMgbm90IGxpa2UgdGhlbTogZm9yIGhlIGlzIHRoZSBmb3JtZXIgb2YgYWxsIHRoaW5nczsgYW5kIElzcmFlbCBpcyB0aGUgcm9kIG9mIGhpcyBpbmhlcml0YW5jZTogVGhlIExPUkQgb2YgaG9zdHMgaXMgaGlzIG5hbWUuCkdhdGhlciB1cCB0aHkgd2FyZXMgb3V0IG9mIHRoZSBsYW5kLCBPIGluaGFiaXRhbnQgb2YgdGhlIGZvcnRyZXNzLgpGb3IgdGh1cyBzYWl0aCB0aGUgTE9SRCwgQmVob2xkLCBJIHdpbGwgc2xpbmcgb3V0IHRoZSBpbmhhYml0YW50cyBvZiB0aGUgbGFuZCBhdCB0aGlzIG9uY2UsIGFuZCB3aWxsIGRpc3RyZXNzIHRoZW0sIHRoYXQgdGhleSBtYXkgZmluZCBpdCBzby4KV29lIGlzIG1lIGZvciBteSBodXJ0ISBteSB3b3VuZCBpcyBncmlldm91czsgYnV0IEkgc2FpZCwgVHJ1bHkgdGhpcyBpcyBhIGdyaWVmLCBhbmQgSSBtdXN0IGJlYXIgaXQuCk15IHRhYmVybmFjbGUgaXMgc3BvaWxlZCwgYW5kIGFsbCBteSBjb3JkcyBhcmUgYnJva2VuOiBteSBjaGlsZHJlbiBhcmUgZ29uZSBmb3J0aCBvZiBtZSwgYW5kIHRoZXkgYXJlIG5vdDogdGhlcmUgaXMgbm9uZSB0byBzdHJldGNoIGZvcnRoIG15IHRlbnQgYW55IG1vcmUsIGFuZCB0byBzZXQgdXAgbXkgY3VydGFpbnMuCkZvciB0aGUgcGFzdG9ycyBhcmUgYmVjb21lIGJydXRpc2gsIGFuZCBoYXZlIG5vdCBzb3VnaHQgdGhlIExPUkQ6IHRoZXJlZm9yZSB0aGV5IHNoYWxsIG5vdCBwcm9zcGVyLCBhbmQgYWxsIHRoZWlyIGZsb2NrcyBzaGFsbCBiZSBzY2F0dGVyZWQuCkJlaG9sZCwgdGhlIG5vaXNlIG9mIHRoZSBicnVpdCBpcyBjb21lLCBhbmQgYSBncmVhdCBjb21tb3Rpb24gb3V0IG9mIHRoZSBub3J0aCBjb3VudHJ5LCB0byBtYWtlIHRoZSBjaXRpZXMgb2YgSnVkYWggZGVzb2xhdGUsIGFuZCBhIGRlbiBvZiBkcmFnb25zLgpPIExPUkQsIEkga25vdyB0aGF0IHRoZSB3YXkgb2YgbWFuIGlzIG5vdCBpbiBoaW1zZWxmOiBpdCBpcyBub3QgaW4gbWFuIHRoYXQgd2Fsa2V0aCB0byBkaXJlY3QgaGlzIHN0ZXBzLgpPIExPUkQsIGNvcnJlY3QgbWUsIGJ1dCB3aXRoIGp1ZGdtZW50OyBub3QgaW4gdGhpbmUgYW5nZXIsIGxlc3QgdGhvdSBicmluZyBtZSB0byBub3RoaW5nLgpQb3VyIG91dCB0aHkgZnVyeSB1cG9uIHRoZSBoZWF0aGVuIHRoYXQga25vdyB0aGVlIG5vdCwgYW5kIHVwb24gdGhlIGZhbWlsaWVzIHRoYXQgY2FsbCBub3Qgb24gdGh5IG5hbWU6IGZvciB0aGV5IGhhdmUgZWF0ZW4gdXAgSmFjb2IsIGFuZCBkZXZvdXJlZCBoaW0sIGFuZCBjb25zdW1lZCBoaW0sIGFuZCBoYXZlIG1hZGUgaGlzIGhhYml0YXRpb24gZGVzb2xhdGUuClRoZSB3b3JkIHRoYXQgY2FtZSB0byBKZXJlbWlhaCBmcm9tIHRoZSBMT1JEIHNheWluZywKSGVhciB5ZSB0aGUgd29yZHMgb2YgdGhpcyBjb3ZlbmFudCwgYW5kIHNwZWFrIHVudG8gdGhlIG1lbiBvZiBKdWRhaCwgYW5kIHRvIHRoZSBpbmhhYml0YW50cyBvZiBKZXJ1c2FsZW07CkFuZCBzYXkgdGhvdSB1bnRvIHRoZW0sIFRodXMgc2FpdGggdGhlIExPUkQgR29kIG9mIElzcmFlbDsgQ3Vyc2VkIGJlIHRoZSBtYW4gdGhhdCBvYmV5ZXRoIG5vdCB0aGUgd29yZHMgb2YgdGhpcyBjb3ZlbmFudCwKV2hpY2ggSSBjb21tYW5kZWQgeW91ciBmYXRoZXJzIGluIHRoZSBkYXkgdGhhdCBJIGJyb3VnaHQgdGhlbSBmb3J0aCBvdXQgb2YgdGhlIGxhbmQgb2YgRWd5cHQsIGZyb20gdGhlIGlyb24gZnVybmFjZSwgc2F5aW5nLCBPYmV5IG15IHZvaWNlLCBhbmQgZG8gdGhlbSwgYWNjb3JkaW5nIHRvIGFsbCB3aGljaCBJIGNvbW1hbmQgeW91OiBzbyBzaGFsbCB5ZSBiZSBteSBwZW9wbGUsIGFuZCBJIHdpbGwgYmUgeW91ciBHb2Q6ClRoYXQgSSBtYXkgcGVyZm9ybSB0aGUgb2F0aCB3aGljaCBJIGhhdmUgc3dvcm4gdW50byB5b3VyIGZhdGhlcnMsIHRvIGdpdmUgdGhlbSBhIGxhbmQgZmxvd2luZyB3aXRoIG1pbGsgYW5kIGhvbmV5LCBhcyBpdCBpcyB0aGlzIGRheS4gVGhlbiBhbnN3ZXJlZCBJLCBhbmQgc2FpZCwgU28gYmUgaXQsIE8gTE9SRC4KVGhlbiB0aGUgTE9SRCBzYWlkIHVudG8gbWUsIFByb2NsYWltIGFsbCB0aGVzZSB3b3JkcyBpbiB0aGUgY2l0aWVzIG9mIEp1ZGFoLCBhbmQgaW4gdGhlIHN0cmVldHMgb2YgSmVydXNhbGVtLCBzYXlpbmcsIEhlYXIgeWUgdGhlIHdvcmRzIG9mIHRoaXMgY292ZW5hbnQsIGFuZCBkbyB0aGVtLgpGb3IgSSBlYXJuZXN0bHkgcHJvdGVzdGVkIHVudG8geW91ciBmYXRoZXJzIGluIHRoZSBkYXkgdGhhdCBJIGJyb3VnaHQgdGhlbSB1cCBvdXQgb2YgdGhlIGxhbmQgb2YgRWd5cHQsIGV2ZW4gdW50byB0aGlzIGRheSwgcmlzaW5nIGVhcmx5IGFuZCBwcm90ZXN0aW5nLCBzYXlpbmcsIE9iZXkgbXkgdm9pY2UuCllldCB0aGV5IG9iZXllZCBub3QsIG5vciBpbmNsaW5lZCB0aGVpciBlYXIsIGJ1dCB3YWxrZWQgZXZlcnkgb25lIGluIHRoZSBpbWFnaW5hdGlvbiBvZiB0aGVpciBldmlsIGhlYXJ0OiB0aGVyZWZvcmUgSSB3aWxsIGJyaW5nIHVwb24gdGhlbSBhbGwgdGhlIHdvcmRzIG9mIHRoaXMgY292ZW5hbnQsIHdoaWNoIEkgY29tbWFuZGVkIHRoZW0gdG8gZG86IGJ1dCB0aGV5IGRpZCB0aGVtIG5vdC4KQW5kIHRoZSBMT1JEIHNhaWQgdW50byBtZSwgQSBjb25zcGlyYWN5IGlzIGZvdW5kIGFtb25nIHRoZSBtZW4gb2YgSnVkYWgsIGFuZCBhbW9uZyB0aGUgaW5oYWJpdGFudHMgb2YgSmVydXNhbGVtLgpUaGV5IGFyZSB0dXJuZWQgYmFjayB0byB0aGUgaW5pcXVpdGllcyBvZiB0aGVpciBmb3JlZmF0aGVycywgd2hpY2ggcmVmdXNlZCB0byBoZWFyIG15IHdvcmRzOyBhbmQgdGhleSB3ZW50IGFmdGVyIG90aGVyIGdvZHMgdG8gc2VydmUgdGhlbTogdGhlIGhvdXNlIG9mIElzcmFlbCBhbmQgdGhlIGhvdXNlIG9mIEp1ZGFoIGhhdmUgYnJva2VuIG15IGNvdmVuYW50IHdoaWNoIEkgbWFkZSB3aXRoIHRoZWlyIGZhdGhlcnMuClRoZXJlZm9yZSB0aHVzIHNhaXRoIHRoZSBMT1JELCBCZWhvbGQsIEkgd2lsbCBicmluZyBldmlsIHVwb24gdGhlbSwgd2hpY2ggdGhleSBzaGFsbCBub3QgYmUgYWJsZSB0byBlc2NhcGU7IGFuZCB0aG91Z2ggdGhleSBzaGFsbCBjcnkgdW50byBtZSwgSSB3aWxsIG5vdCBoZWFya2VuIHVudG8gdGhlbS4KVGhlbiBzaGFsbCB0aGUgY2l0aWVzIG9mIEp1ZGFoIGFuZCBpbmhhYml0YW50cyBvZiBKZXJ1c2FsZW0gZ28sIGFuZCBjcnkgdW50byB0aGUgZ29kcyB1bnRvIHdob20gdGhleSBvZmZlciBpbmNlbnNlOiBidXQgdGhleSBzaGFsbCBub3Qgc2F2ZSB0aGVtIGF0IGFsbCBpbiB0aGUgdGltZSBvZiB0aGVpciB0cm91YmxlLgpGb3IgYWNjb3JkaW5nIHRvIHRoZSBudW1iZXIgb2YgdGh5IGNpdGllcyB3ZXJlIHRoeSBnb2RzLCBPIEp1ZGFoOyBhbmQgYWNjb3JkaW5nIHRvIHRoZSBudW1iZXIgb2YgdGhlIHN0cmVldHMgb2YgSmVydXNhbGVtIGhhdmUgeWUgc2V0IHVwIGFsdGFycyB0byB0aGF0IHNoYW1lZnVsIHRoaW5nLCBldmVuIGFsdGFycyB0byBidXJuIGluY2Vuc2UgdW50byBCYWFsLgpUaGVyZWZvcmUgcHJheSBub3QgdGhvdSBmb3IgdGhpcyBwZW9wbGUsIG5laXRoZXIgbGlmdCB1cCBhIGNyeSBvciBwcmF5ZXIgZm9yIHRoZW06IGZvciBJIHdpbGwgbm90IGhlYXIgdGhlbSBpbiB0aGUgdGltZSB0aGF0IHRoZXkgY3J5IHVudG8gbWUgZm9yIHRoZWlyIHRyb3VibGUuCldoYXQgaGF0aCBteSBiZWxvdmVkIHRvIGRvIGluIG1pbmUgaG91c2UsIHNlZWluZyBzaGUgaGF0aCB3cm91Z2h0IGxld2RuZXNzIHdpdGggbWFueSwgYW5kIHRoZSBob2x5IGZsZXNoIGlzIHBhc3NlZCBmcm9tIHRoZWU/IHdoZW4gdGhvdSBkb2VzdCBldmlsLCB0aGVuIHRob3UgcmVqb2ljZXN0LgpUaGUgTE9SRCBjYWxsZWQgdGh5IG5hbWUsIEEgZ3JlZW4gb2xpdmUgdHJlZSwgZmFpciwgYW5kIG9mIGdvb2RseSBmcnVpdDogd2l0aCB0aGUgbm9pc2Ugb2YgYSBncmVhdCB0dW11bHQgaGUgaGF0aCBraW5kbGVkIGZpcmUgdXBvbiBpdCwgYW5kIHRoZSBicmFuY2hlcyBvZiBpdCBhcmUgYnJva2VuLgpGb3IgdGhlIExPUkQgb2YgaG9zdHMsIHRoYXQgcGxhbnRlZCB0aGVlLCBoYXRoIHByb25vdW5jZWQgZXZpbCBhZ2FpbnN0IHRoZWUsIGZvciB0aGUgZXZpbCBvZiB0aGUgaG91c2Ugb2YgSXNyYWVsIGFuZCBvZiB0aGUgaG91c2Ugb2YgSnVkYWgsIHdoaWNoIHRoZXkgaGF2ZSBkb25lIGFnYWluc3QgdGhlbXNlbHZlcyB0byBwcm92b2tlIG1lIHRvIGFuZ2VyIGluIG9mZmVyaW5nIGluY2Vuc2UgdW50byBCYWFsLgpBbmQgdGhlIExPUkQgaGF0aCBnaXZlbiBtZSBrbm93bGVkZ2Ugb2YgaXQsIGFuZCBJIGtub3cgaXQ6IHRoZW4gdGhvdSBzaGV3ZWRzdCBtZSB0aGVpciBkb2luZ3MuCkJ1dCBJIHdhcyBsaWtlIGEgbGFtYiBvciBhbiBveCB0aGF0IGlzIGJyb3VnaHQgdG8gdGhlIHNsYXVnaHRlcjsgYW5kIEkga25ldyBub3QgdGhhdCB0aGV5IGhhZCBkZXZpc2VkIGRldmljZXMgYWdhaW5zdCBtZSwgc2F5aW5nLCBMZXQgdXMgZGVzdHJveSB0aGUgdHJlZSB3aXRoIHRoZSBmcnVpdCB0aGVyZW9mLCBhbmQgbGV0IHVzIGN1dCBoaW0gb2ZmIGZyb20gdGhlIGxhbmQgb2YgdGhlIGxpdmluZywgdGhhdCBoaXMgbmFtZSBtYXkgYmUgbm8gbW9yZSByZW1lbWJlcmVkLgpCdXQsIE8gTE9SRCBvZiBob3N0cywgdGhhdCBqdWRnZXN0IHJpZ2h0ZW91c2x5LCB0aGF0IHRyaWVzdCB0aGUgcmVpbnMgYW5kIHRoZSBoZWFydCwgbGV0IG1lIHNlZSB0aHkgdmVuZ2VhbmNlIG9uIHRoZW06IGZvciB1bnRvIHRoZWUgaGF2ZSBJIHJldmVhbGVkIG15IGNhdXNlLgpUaGVyZWZvcmUgdGh1cyBzYWl0aCB0aGUgTE9SRCBvZiB0aGUgbWVuIG9mIEFuYXRob3RoLCB0aGF0IHNlZWsgdGh5IGxpZmUsIHNheWluZywgUHJvcGhlc3kgbm90IGluIHRoZSBuYW1lIG9mIHRoZSBMT1JELCB0aGF0IHRob3UgZGllIG5vdCBieSBvdXIgaGFuZDoKVGhlcmVmb3JlIHRodXMgc2FpdGggdGhlIExPUkQgb2YgaG9zdHMsIEJlaG9sZCwgSSB3aWxsIHB1bmlzaCB0aGVtOiB0aGUgeW91bmcgbWVuIHNoYWxsIGRpZSBieSB0aGUgc3dvcmQ7IHRoZWlyIHNvbnMgYW5kIHRoZWlyIGRhdWdodGVycyBzaGFsbCBkaWUgYnkgZmFtaW5lOgpBbmQgdGhlcmUgc2hhbGwgYmUgbm8gcmVtbmFudCBvZiB0aGVtOiBmb3IgSSB3aWxsIGJyaW5nIGV2aWwgdXBvbiB0aGUgbWVuIG9mIEFuYXRob3RoLCBldmVuIHRoZSB5ZWFyIG9mIHRoZWlyIHZpc2l0YXRpb24uClJpZ2h0ZW91cyBhcnQgdGhvdSwgTyBMT1JELCB3aGVuIEkgcGxlYWQgd2l0aCB0aGVlOiB5ZXQgbGV0IG1lIHRhbGsgd2l0aCB0aGVlIG9mIHRoeSBqdWRnbWVudHM6IFdoZXJlZm9yZSBkb3RoIHRoZSB3YXkgb2YgdGhlIHdpY2tlZCBwcm9zcGVyPyB3aGVyZWZvcmUgYXJlIGFsbCB0aGV5IGhhcHB5IHRoYXQgZGVhbCB2ZXJ5IHRyZWFjaGVyb3VzbHk/ClRob3UgaGFzdCBwbGFudGVkIHRoZW0sIHllYSwgdGhleSBoYXZlIHRha2VuIHJvb3Q6IHRoZXkgZ3JvdywgeWVhLCB0aGV5IGJyaW5nIGZvcnRoIGZydWl0OiB0aG91IGFydCBuZWFyIGluIHRoZWlyIG1vdXRoLCBhbmQgZmFyIGZyb20gdGhlaXIgcmVpbnMuCkJ1dCB0aG91LCBPIExPUkQsIGtub3dlc3QgbWU6IHRob3UgaGFzdCBzZWVuIG1lLCBhbmQgdHJpZWQgbWluZSBoZWFydCB0b3dhcmQgdGhlZTogcHVsbCB0aGVtIG91dCBsaWtlIHNoZWVwIGZvciB0aGUgc2xhdWdodGVyLCBhbmQgcHJlcGFyZSB0aGVtIGZvciB0aGUgZGF5IG9mIHNsYXVnaHRlci4KSG93IGxvbmcgc2hhbGwgdGhlIGxhbmQgbW91cm4sIGFuZCB0aGUgaGVyYnMgb2YgZXZlcnkgZmllbGQgd2l0aGVyLCBmb3IgdGhlIHdpY2tlZG5lc3Mgb2YgdGhlbSB0aGF0IGR3ZWxsIHRoZXJlaW4/IHRoZSBiZWFzdHMgYXJlIGNvbnN1bWVkLCBhbmQgdGhlIGJpcmRzOyBiZWNhdXNlIHRoZXkgc2FpZCwgSGUgc2hhbGwgbm90IHNlZSBvdXIgbGFzdCBlbmQuCklmIHRob3UgaGFzdCBydW4gd2l0aCB0aGUgZm9vdG1lbiwgYW5kIHRoZXkgaGF2ZSB3ZWFyaWVkIHRoZWUsIHRoZW4gaG93IGNhbnN0IHRob3UgY29udGVuZCB3aXRoIGhvcnNlcz8gYW5kIGlmIGluIHRoZSBsYW5kIG9mIHBlYWNlLCB3aGVyZWluIHRob3UgdHJ1c3RlZHN0LCB0aGV5IHdlYXJpZWQgdGhlZSwgdGhlbiBob3cgd2lsdCB0aG91IGRvIGluIHRoZSBzd2VsbGluZyBvZiBKb3JkYW4/CkZvciBldmVuIHRoeSBicmV0aHJlbiwgYW5kIHRoZSBob3VzZSBvZiB0aHkgZmF0aGVyLCBldmVuIHRoZXkgaGF2ZSBkZWFsdCB0cmVhY2hlcm91c2x5IHdpdGggdGhlZTsgeWVhLCB0aGV5IGhhdmUgY2FsbGVkIGEgbXVsdGl0dWRlIGFmdGVyIHRoZWU6IGJlbGlldmUgdGhlbSBub3QsIHRob3VnaCB0aGV5IHNwZWFrIGZhaXIgd29yZHMgdW50byB0aGVlLgpJIGhhdmUgZm9yc2FrZW4gbWluZSBob3VzZSwgSSBoYXZlIGxlZnQgbWluZSBoZXJpdGFnZTsgSSBoYXZlIGdpdmVuIHRoZSBkZWFybHkgYmVsb3ZlZCBvZiBteSBzb3VsIGludG8gdGhlIGhhbmQgb2YgaGVyIGVuZW1pZXMuCk1pbmUgaGVyaXRhZ2UgaXMgdW50byBtZSBhcyBhIGxpb24gaW4gdGhlIGZvcmVzdDsgaXQgY3JpZXRoIG91dCBhZ2FpbnN0IG1lOiB0aGVyZWZvcmUgaGF2ZSBJIGhhdGVkIGl0LgpNaW5lIGhlcml0YWdlIGlzIHVudG8gbWUgYXMgYSBzcGVja2xlZCBiaXJkLCB0aGUgYmlyZHMgcm91bmQgYWJvdXQgYXJlIGFnYWluc3QgaGVyOyBjb21lIHllLCBhc3NlbWJsZSBhbGwgdGhlIGJlYXN0cyBvZiB0aGUgZmllbGQsIGNvbWUgdG8gZGV2b3VyLgpNYW55IHBhc3RvcnMgaGF2ZSBkZXN0cm95ZWQgbXkgdmluZXlhcmQsIHRoZXkgaGF2ZSB0cm9kZGVuIG15IHBvcnRpb24gdW5kZXIgZm9vdCwgdGhleSBoYXZlIG1hZGUgbXkgcGxlYXNhbnQgcG9ydGlvbiBhIGRlc29sYXRlIHdpbGRlcm5lc3MuClRoZXkgaGF2ZSBtYWRlIGl0IGRlc29sYXRlLCBhbmQgYmVpbmcgZGVzb2xhdGUgaXQgbW91cm5ldGggdW50byBtZTsgdGhlIHdob2xlIGxhbmQgaXMgbWFkZSBkZXNvbGF0ZSwgYmVjYXVzZSBubyBtYW4gbGF5ZXRoIGl0IHRvIGhlYXJ0LgpUaGUgc3BvaWxlcnMgYXJlIGNvbWUgdXBvbiBhbGwgaGlnaCBwbGFjZXMgdGhyb3VnaCB0aGUgd2lsZGVybmVzczogZm9yIHRoZSBzd29yZCBvZiB0aGUgTE9SRCBzaGFsbCBkZXZvdXIgZnJvbSB0aGUgb25lIGVuZCBvZiB0aGUgbGFuZCBldmVuIHRvIHRoZSBvdGhlciBlbmQgb2YgdGhlIGxhbmQ6IG5vIGZsZXNoIHNoYWxsIGhhdmUgcGVhY2UuClRoZXkgaGF2ZSBzb3duIHdoZWF0LCBidXQgc2hhbGwgcmVhcCB0aG9ybnM6IHRoZXkgaGF2ZSBwdXQgdGhlbXNlbHZlcyB0byBwYWluLCBidXQgc2hhbGwgbm90IHByb2ZpdDogYW5kIHRoZXkgc2hhbGwgYmUgYXNoYW1lZCBvZiB5b3VyIHJldmVudWVzIGJlY2F1c2Ugb2YgdGhlIGZpZXJjZSBhbmdlciBvZiB0aGUgTE9SRC4KVGh1cyBzYWl0aCB0aGUgTE9SRCBhZ2FpbnN0IGFsbCBtaW5lIGV2aWwgbmVpZ2hib3VycywgdGhhdCB0b3VjaCB0aGUgaW5oZXJpdGFuY2Ugd2hpY2ggSSBoYXZlIGNhdXNlZCBteSBwZW9wbGUgSXNyYWVsIHRvIGluaGVyaXQ7IEJlaG9sZCwgSSB3aWxsIHBsdWNrIHRoZW0gb3V0IG9mIHRoZWlyIGxhbmQsIGFuZCBwbHVjayBvdXQgdGhlIGhvdXNlIG9mIEp1ZGFoIGZyb20gYW1vbmcgdGhlbS4KQW5kIGl0IHNoYWxsIGNvbWUgdG8gcGFzcywgYWZ0ZXIgdGhhdCBJIGhhdmUgcGx1Y2tlZCB0aGVtIG91dCBJIHdpbGwgcmV0dXJuLCBhbmQgaGF2ZSBjb21wYXNzaW9uIG9uIHRoZW0sIGFuZCB3aWxsIGJyaW5nIHRoZW0gYWdhaW4sIGV2ZXJ5IG1hbiB0byBoaXMgaGVyaXRhZ2UsIGFuZCBldmVyeSBtYW4gdG8gaGlzIGxhbmQuCkFuZCBpdCBzaGFsbCBjb21lIHRvIHBhc3MsIGlmIHRoZXkgd2lsbCBkaWxpZ2VudGx5IGxlYXJuIHRoZSB3YXlzIG9mIG15IHBlb3BsZSwgdG8gc3dlYXIgYnkgbXkgbmFtZSwgVGhlIExPUkQgbGl2ZXRoOyBhcyB0aGV5IHRhdWdodCBteSBwZW9wbGUgdG8gc3dlYXIgYnkgQmFhbDsgdGhlbiBzaGFsbCB0aGV5IGJlIGJ1aWx0IGluIHRoZSBtaWRzdCBvZiBteSBwZW9wbGUuCkJ1dCBpZiB0aGV5IHdpbGwgbm90IG9iZXksIEkgd2lsbCB1dHRlcmx5IHBsdWNrIHVwIGFuZCBkZXN0cm95IHRoYXQgbmF0aW9uLCBzYWl0aCB0aGUgTE9SRC4KVGh1cyBzYWl0aCB0aGUgTE9SRCB1bnRvIG1lLCBHbyBhbmQgZ2V0IHRoZWUgYSBsaW5lbiBnaXJkbGUsIGFuZCBwdXQgaXQgdXBvbiB0aHkgbG9pbnMsIGFuZCBwdXQgaXQgbm90IGluIHdhdGVyLgpTbyBJIGdvdCBhIGdpcmRsZSBhY2NvcmRpbmcgdG8gdGhlIHdvcmQgb2YgdGhlIExPUkQsIGFuZCBwdXQgaXQgb24gbXkgbG9pbnMuCkFuZCB0aGUgd29yZCBvZiB0aGUgTE9SRCBjYW1lIHVudG8gbWUgdGhlIHNlY29uZCB0aW1lLCBzYXlpbmcsClRha2UgdGhlIGdpcmRsZSB0aGF0IHRob3UgaGFzdCBnb3QsIHdoaWNoIGlzIHVwb24gdGh5IGxvaW5zLCBhbmQgYXJpc2UsIGdvIHRvIEV1cGhyYXRlcywgYW5kIGhpZGUgaXQgdGhlcmUgaW4gYSBob2xlIG9mIHRoZSByb2NrLgpTbyBJIHdlbnQsIGFuZCBoaWQgaXQgYnkgRXVwaHJhdGVzLCBhcyB0aGUgTE9SRCBjb21tYW5kZWQgbWUuCkFuZCBpdCBjYW1lIHRvIHBhc3MgYWZ0ZXIgbWFueSBkYXlzLCB0aGF0IHRoZSBMT1JEIHNhaWQgdW50byBtZSwgQXJpc2UsIGdvIHRvIEV1cGhyYXRlcywgYW5kIHRha2UgdGhlIGdpcmRsZSBmcm9tIHRoZW5jZSwgd2hpY2ggSSBjb21tYW5kZWQgdGhlZSB0byBoaWRlIHRoZXJlLgpUaGVuIEkgd2VudCB0byBFdXBocmF0ZXMsIGFuZCBkaWdnZWQsIGFuZCB0b29rIHRoZSBnaXJkbGUgZnJvbSB0aGUgcGxhY2Ugd2hlcmUgSSBoYWQgaGlkIGl0OiBhbmQsIGJlaG9sZCwgdGhlIGdpcmRsZSB3YXMgbWFycmVkLCBpdCB3YXMgcHJvZml0YWJsZSBmb3Igbm90aGluZy4KVGhlbiB0aGUgd29yZCBvZiB0aGUgTE9SRCBjYW1lIHVudG8gbWUsIHNheWluZywKVGh1cyBzYWl0aCB0aGUgTE9SRCwgQWZ0ZXIgdGhpcyBtYW5uZXIgd2lsbCBJIG1hciB0aGUgcHJpZGUgb2YgSnVkYWgsIGFuZCB0aGUgZ3JlYXQgcHJpZGUgb2YgSmVydXNhbGVtLgpUaGlzIGV2aWwgcGVvcGxlLCB3aGljaCByZWZ1c2UgdG8gaGVhciBteSB3b3Jkcywgd2hpY2ggd2FsayBpbiB0aGUgaW1hZ2luYXRpb24gb2YgdGhlaXIgaGVhcnQsIGFuZCB3YWxrIGFmdGVyIG90aGVyIGdvZHMsIHRvIHNlcnZlIHRoZW0sIGFuZCB0byB3b3JzaGlwIHRoZW0sIHNoYWxsIGV2ZW4gYmUgYXMgdGhpcyBnaXJkbGUsIHdoaWNoIGlzIGdvb2QgZm9yIG5vdGhpbmcuCkZvciBhcyB0aGUgZ2lyZGxlIGNsZWF2ZXRoIHRvIHRoZSBsb2lucyBvZiBhIG1hbiwgc28gaGF2ZSBJIGNhdXNlZCB0byBjbGVhdmUgdW50byBtZSB0aGUgd2hvbGUgaG91c2Ugb2YgSXNyYWVsIGFuZCB0aGUgd2hvbGUgaG91c2Ugb2YgSnVkYWgsIHNhaXRoIHRoZSBMT1JEOyB0aGF0IHRoZXkgbWlnaHQgYmUgdW50byBtZSBmb3IgYSBwZW9wbGUsIGFuZCBmb3IgYSBuYW1lLCBhbmQgZm9yIGEgcHJhaXNlLCBhbmQgZm9yIGEgZ2xvcnk6IGJ1dCB0aGV5IHdvdWxkIG5vdCBoZWFyLgpUaGVyZWZvcmUgdGhvdSBzaGFsdCBzcGVhayB1bnRvIHRoZW0gdGhpcyB3b3JkOyBUaHVzIHNhaXRoIHRoZSBMT1JEIEdvZCBvZiBJc3JhZWwsIEV2ZXJ5IGJvdHRsZSBzaGFsbCBiZSBmaWxsZWQgd2l0aCB3aW5lOiBhbmQgdGhleSBzaGFsbCBzYXkgdW50byB0aGVlLCBEbyB3ZSBub3QgY2VydGFpbmx5IGtub3cgdGhhdCBldmVyeSBib3R0bGUgc2hhbGwgYmUgZmlsbGVkIHdpdGggd2luZT8KVGhlbiBzaGFsdCB0aG91IHNheSB1bnRvIHRoZW0sIFRodXMgc2FpdGggdGhlIExPUkQsIEJlaG9sZCwgSSB3aWxsIGZpbGwgYWxsIHRoZSBpbmhhYml0YW50cyBvZiB0aGlzIGxhbmQsIGV2ZW4gdGhlIGtpbmdzIHRoYXQgc2l0IHVwb24gRGF2aWQncyB0aHJvbmUsIGFuZCB0aGUgcHJpZXN0cywgYW5kIHRoZSBwcm9waGV0cywgYW5kIGFsbCB0aGUgaW5oYWJpdGFudHMgb2YgSmVydXNhbGVtLCB3aXRoIGRydW5rZW5uZXNzLgpBbmQgSSB3aWxsIGRhc2ggdGhlbSBvbmUgYWdhaW5zdCBhbm90aGVyLCBldmVuIHRoZSBmYXRoZXJzIGFuZCB0aGUgc29ucyB0b2dldGhlciwgc2FpdGggdGhlIExPUkQ6IEkgd2lsbCBub3QgcGl0eSwgbm9yIHNwYXJlLCBub3IgaGF2ZSBtZXJjeSwgYnV0IGRlc3Ryb3kgdGhlbS4KSGVhciB5ZSwgYW5kIGdpdmUgZWFyOyBiZSBub3QgcHJvdWQ6IGZvciB0aGUgTE9SRCBoYXRoIHNwb2tlbi4KR2l2ZSBnbG9yeSB0byB0aGUgTE9SRCB5b3VyIEdvZCwgYmVmb3JlIGhlIGNhdXNlIGRhcmtuZXNzLCBhbmQgYmVmb3JlIHlvdXIgZmVldCBzdHVtYmxlIHVwb24gdGhlIGRhcmsgbW91bnRhaW5zLCBhbmQsIHdoaWxlIHllIGxvb2sgZm9yIGxpZ2h0LCBoZSB0dXJuIGl0IGludG8gdGhlIHNoYWRvdyBvZiBkZWF0aCwgYW5kIG1ha2UgaXQgZ3Jvc3MgZGFya25lc3MuCkJ1dCBpZiB5ZSB3aWxsIG5vdCBoZWFyIGl0LCBteSBzb3VsIHNoYWxsIHdlZXAgaW4gc2VjcmV0IHBsYWNlcyBmb3IgeW91ciBwcmlkZTsgYW5kIG1pbmUgZXllIHNoYWxsIHdlZXAgc29yZSwgYW5kIHJ1biBkb3duIHdpdGggdGVhcnMsIGJlY2F1c2UgdGhlIExPUkQncyBmbG9jayBpcyBjYXJyaWVkIGF3YXkgY2FwdGl2ZS4KU2F5IHVudG8gdGhlIGtpbmcgYW5kIHRvIHRoZSBxdWVlbiwgSHVtYmxlIHlvdXJzZWx2ZXMsIHNpdCBkb3duOiBmb3IgeW91ciBwcmluY2lwYWxpdGllcyBzaGFsbCBjb21lIGRvd24sIGV2ZW4gdGhlIGNyb3duIG9mIHlvdXIgZ2xvcnkuClRoZSBjaXRpZXMgb2YgdGhlIHNvdXRoIHNoYWxsIGJlIHNodXQgdXAsIGFuZCBub25lIHNoYWxsIG9wZW4gdGhlbTogSnVkYWggc2hhbGwgYmUgY2FycmllZCBhd2F5IGNhcHRpdmUgYWxsIG9mIGl0LCBpdCBzaGFsbCBiZSB3aG9sbHkgY2FycmllZCBhd2F5IGNhcHRpdmUuCkxpZnQgdXAgeW91ciBleWVzLCBhbmQgYmVob2xkIHRoZW0gdGhhdCBjb21lIGZyb20gdGhlIG5vcnRoOiB3aGVyZSBpcyB0aGUgZmxvY2sgdGhhdCB3YXMgZ2l2ZW4gdGhlZSwgdGh5IGJlYXV0aWZ1bCBmbG9jaz8KV2hhdCB3aWx0IHRob3Ugc2F5IHdoZW4gaGUgc2hhbGwgcHVuaXNoIHRoZWU/IGZvciB0aG91IGhhc3QgdGF1Z2h0IHRoZW0gdG8gYmUgY2FwdGFpbnMsIGFuZCBhcyBjaGllZiBvdmVyIHRoZWU6IHNoYWxsIG5vdCBzb3Jyb3dzIHRha2UgdGhlZSwgYXMgYSB3b21hbiBpbiB0cmF2YWlsPwpBbmQgaWYgdGhvdSBzYXkgaW4gdGhpbmUgaGVhcnQsIFdoZXJlZm9yZSBjb21lIHRoZXNlIHRoaW5ncyB1cG9uIG1lPyBGb3IgdGhlIGdyZWF0bmVzcyBvZiB0aGluZSBpbmlxdWl0eSBhcmUgdGh5IHNraXJ0cyBkaXNjb3ZlcmVkLCBhbmQgdGh5IGhlZWxzIG1hZGUgYmFyZS4KQ2FuIHRoZSBFdGhpb3BpYW4gY2hhbmdlIGhpcyBza2luLCBvciB0aGUgbGVvcGFyZCBoaXMgc3BvdHM/IHRoZW4gbWF5IHllIGFsc28gZG8gZ29vZCwgdGhhdCBhcmUgYWNjdXN0b21lZCB0byBkbyBldmlsLgpUaGVyZWZvcmUgd2lsbCBJIHNjYXR0ZXIgdGhlbSBhcyB0aGUgc3R1YmJsZSB0aGF0IHBhc3NldGggYXdheSBieSB0aGUgd2luZCBvZiB0aGUgd2lsZGVybmVzcy4KVGhpcyBpcyB0aHkgbG90LCB0aGUgcG9ydGlvbiBvZiB0aHkgbWVhc3VyZXMgZnJvbSBtZSwgc2FpdGggdGhlIExPUkQ7IGJlY2F1c2UgdGhvdSBoYXN0IGZvcmdvdHRlbiBtZSwgYW5kIHRydXN0ZWQgaW4gZmFsc2Vob29kLgpUaGVyZWZvcmUgd2lsbCBJIGRpc2NvdmVyIHRoeSBza2lydHMgdXBvbiB0aHkgZmFjZSwgdGhhdCB0aHkgc2hhbWUgbWF5IGFwcGVhci4KSSBoYXZlIHNlZW4gdGhpbmUgYWR1bHRlcmllcywgYW5kIHRoeSBuZWlnaGluZ3MsIHRoZSBsZXdkbmVzcyBvZiB0aHkgd2hvcmVkb20sIGFuZCB0aGluZSBhYm9taW5hdGlvbnMgb24gdGhlIGhpbGxzIGluIHRoZSBmaWVsZHMuIFdvZSB1bnRvIHRoZWUsIE8gSmVydXNhbGVtISB3aWx0IHRob3Ugbm90IGJlIG1hZGUgY2xlYW4/IHdoZW4gc2hhbGwgaXQgb25jZSBiZT8KVGhlIHdvcmQgb2YgdGhlIExPUkQgdGhhdCBjYW1lIHRvIEplcmVtaWFoIGNvbmNlcm5pbmcgdGhlIGRlYXJ0aC4KSnVkYWggbW91cm5ldGgsIGFuZCB0aGUgZ2F0ZXMgdGhlcmVvZiBsYW5ndWlzaDsgdGhleSBhcmUgYmxhY2sgdW50byB0aGUgZ3JvdW5kOyBhbmQgdGhlIGNyeSBvZiBKZXJ1c2FsZW0gaXMgZ29uZSB1cC4KQW5kIHRoZWlyIG5vYmxlcyBoYXZlIHNlbnQgdGhlaXIgbGl0dGxlIG9uZXMgdG8gdGhlIHdhdGVyczogdGhleSBjYW1lIHRvIHRoZSBwaXRzLCBhbmQgZm91bmQgbm8gd2F0ZXI7IHRoZXkgcmV0dXJuZWQgd2l0aCB0aGVpciB2ZXNzZWxzIGVtcHR5OyB0aGV5IHdlcmUgYXNoYW1lZCBhbmQgY29uZm91bmRlZCwgYW5kIGNvdmVyZWQgdGhlaXIgaGVhZHMuCkJlY2F1c2UgdGhlIGdyb3VuZCBpcyBjaGFwdCwgZm9yIHRoZXJlIHdhcyBubyByYWluIGluIHRoZSBlYXJ0aCwgdGhlIHBsb3dtZW4gd2VyZSBhc2hhbWVkLCB0aGV5IGNvdmVyZWQgdGhlaXIgaGVhZHMuClllYSwgdGhlIGhpbmQgYWxzbyBjYWx2ZWQgaW4gdGhlIGZpZWxkLCBhbmQgZm9yc29vayBpdCwgYmVjYXVzZSB0aGVyZSB3YXMgbm8gZ3Jhc3MuCkFuZCB0aGUgd2lsZCBhc3NlcyBkaWQgc3RhbmQgaW4gdGhlIGhpZ2ggcGxhY2VzLCB0aGV5IHNudWZmZWQgdXAgdGhlIHdpbmQgbGlrZSBkcmFnb25zOyB0aGVpciBleWVzIGRpZCBmYWlsLCBiZWNhdXNlIHRoZXJlIHdhcyBubyBncmFzcy4KTyBMT1JELCB0aG91Z2ggb3VyIGluaXF1aXRpZXMgdGVzdGlmeSBhZ2FpbnN0IHVzLCBkbyB0aG91IGl0IGZvciB0aHkgbmFtZSdzIHNha2U6IGZvciBvdXIgYmFja3NsaWRpbmdzIGFyZSBtYW55OyB3ZSBoYXZlIHNpbm5lZCBhZ2FpbnN0IHRoZWUuCk8gdGhlIGhvcGUgb2YgSXNyYWVsLCB0aGUgc2F2aW91ciB0aGVyZW9mIGluIHRpbWUgb2YgdHJvdWJsZSwgd2h5IHNob3VsZGVzdCB0aG91IGJlIGFzIGEgc3RyYW5nZXIgaW4gdGhlIGxhbmQsIGFuZCBhcyBhIHdheWZhcmluZyBtYW4gdGhhdCB0dXJuZXRoIGFzaWRlIHRvIHRhcnJ5IGZvciBhIG5pZ2h0PwpXaHkgc2hvdWxkZXN0IHRob3UgYmUgYXMgYSBtYW4gYXN0b25pZWQsIGFzIGEgbWlnaHR5IG1hbiB0aGF0IGNhbm5vdCBzYXZlPyB5ZXQgdGhvdSwgTyBMT1JELCBhcnQgaW4gdGhlIG1pZHN0IG9mIHVzLCBhbmQgd2UgYXJlIGNhbGxlZCBieSB0aHkgbmFtZTsgbGVhdmUgdXMgbm90LgpUaHVzIHNhaXRoIHRoZSBMT1JEIHVudG8gdGhpcyBwZW9wbGUsIFRodXMgaGF2ZSB0aGV5IGxvdmVkIHRvIHdhbmRlciwgdGhleSBoYXZlIG5vdCByZWZyYWluZWQgdGhlaXIgZmVldCwgdGhlcmVmb3JlIHRoZSBMT1JEIGRvdGggbm90IGFjY2VwdCB0aGVtOyBoZSB3aWxsIG5vdyByZW1lbWJlciB0aGVpciBpbmlxdWl0eSwgYW5kIHZpc2l0IHRoZWlyIHNpbnMuClRoZW4gc2FpZCB0aGUgTE9SRCB1bnRvIG1lLCBQcmF5IG5vdCBmb3IgdGhpcyBwZW9wbGUgZm9yIHRoZWlyIGdvb2QuCldoZW4gdGhleSBmYXN0LCBJIHdpbGwgbm90IGhlYXIgdGhlaXIgY3J5OyBhbmQgd2hlbiB0aGV5IG9mZmVyIGJ1cm50IG9mZmVyaW5nIGFuZCBhbiBvYmxhdGlvbiwgSSB3aWxsIG5vdCBhY2NlcHQgdGhlbTogYnV0IEkgd2lsbCBjb25zdW1lIHRoZW0gYnkgdGhlIHN3b3JkLCBhbmQgYnkgdGhlIGZhbWluZSwgYW5kIGJ5IHRoZSBwZXN0aWxlbmNlLgpUaGVuIHNhaWQgSSwgQWgsIExvcmQgR09EISBiZWhvbGQsIHRoZSBwcm9waGV0cyBzYXkgdW50byB0aGVtLCBZZSBzaGFsbCBub3Qgc2VlIHRoZSBzd29yZCwgbmVpdGhlciBzaGFsbCB5ZSBoYXZlIGZhbWluZTsgYnV0IEkgd2lsbCBnaXZlIHlvdSBhc3N1cmVkIHBlYWNlIGluIHRoaXMgcGxhY2UuClRoZW4gdGhlIExPUkQgc2FpZCB1bnRvIG1lLCBUaGUgcHJvcGhldHMgcHJvcGhlc3kgbGllcyBpbiBteSBuYW1lOiBJIHNlbnQgdGhlbSBub3QsIG5laXRoZXIgaGF2ZSBJIGNvbW1hbmRlZCB0aGVtLCBuZWl0aGVyIHNwYWtlIHVudG8gdGhlbTogdGhleSBwcm9waGVzeSB1bnRvIHlvdSBhIGZhbHNlIHZpc2lvbiBhbmQgZGl2aW5hdGlvbiwgYW5kIGEgdGhpbmcgb2Ygbm91Z2h0LCBhbmQgdGhlIGRlY2VpdCBvZiB0aGVpciBoZWFydC4KVGhlcmVmb3JlIHRodXMgc2FpdGggdGhlIExPUkQgY29uY2VybmluZyB0aGUgcHJvcGhldHMgdGhhdCBwcm9waGVzeSBpbiBteSBuYW1lLCBhbmQgSSBzZW50IHRoZW0gbm90LCB5ZXQgdGhleSBzYXksIFN3b3JkIGFuZCBmYW1pbmUgc2hhbGwgbm90IGJlIGluIHRoaXMgbGFuZDsgQnkgc3dvcmQgYW5kIGZhbWluZSBzaGFsbCB0aG9zZSBwcm9waGV0cyBiZSBjb25zdW1lZC4KQW5kIHRoZSBwZW9wbGUgdG8gd2hvbSB0aGV5IHByb3BoZXN5IHNoYWxsIGJlIGNhc3Qgb3V0IGluIHRoZSBzdHJlZXRzIG9mIEplcnVzYWxlbSBiZWNhdXNlIG9mIHRoZSBmYW1pbmUgYW5kIHRoZSBzd29yZDsgYW5kIHRoZXkgc2hhbGwgaGF2ZSBub25lIHRvIGJ1cnkgdGhlbSwgdGhlbSwgdGhlaXIgd2l2ZXMsIG5vciB0aGVpciBzb25zLCBub3IgdGhlaXIgZGF1Z2h0ZXJzOiBmb3IgSSB3aWxsIHBvdXIgdGhlaXIgd2lja2VkbmVzcyB1cG9uIHRoZW0uClRoZXJlZm9yZSB0aG91IHNoYWx0IHNheSB0aGlzIHdvcmQgdW50byB0aGVtOyBMZXQgbWluZSBleWVzIHJ1biBkb3duIHdpdGggdGVhcnMgbmlnaHQgYW5kIGRheSwgYW5kIGxldCB0aGVtIG5vdCBjZWFzZTogZm9yIHRoZSB2aXJnaW4gZGF1Z2h0ZXIgb2YgbXkgcGVvcGxlIGlzIGJyb2tlbiB3aXRoIGEgZ3JlYXQgYnJlYWNoLCB3aXRoIGEgdmVyeSBncmlldm91cyBibG93LgpJZiBJIGdvIGZvcnRoIGludG8gdGhlIGZpZWxkLCB0aGVuIGJlaG9sZCB0aGUgc2xhaW4gd2l0aCB0aGUgc3dvcmQhIGFuZCBpZiBJIGVudGVyIGludG8gdGhlIGNpdHksIHRoZW4gYmVob2xkIHRoZW0gdGhhdCBhcmUgc2ljayB3aXRoIGZhbWluZSEgeWVhLCBib3RoIHRoZSBwcm9waGV0IGFuZCB0aGUgcHJpZXN0IGdvIGFib3V0IGludG8gYSBsYW5kIHRoYXQgdGhleSBrbm93IG5vdC4KSGFzdCB0aG91IHV0dGVybHkgcmVqZWN0ZWQgSnVkYWg/IGhhdGggdGh5IHNvdWwgbG90aGVkIFppb24/IHdoeSBoYXN0IHRob3Ugc21pdHRlbiB1cywgYW5kIHRoZXJlIGlzIG5vIGhlYWxpbmcgZm9yIHVzPyB3ZSBsb29rZWQgZm9yIHBlYWNlLCBhbmQgdGhlcmUgaXMgbm8gZ29vZDsgYW5kIGZvciB0aGUgdGltZSBvZiBoZWFsaW5nLCBhbmQgYmVob2xkIHRyb3VibGUhCldlIGFja25vd2xlZGdlLCBPIExPUkQsIG91ciB3aWNrZWRuZXNzLCBhbmQgdGhlIGluaXF1aXR5IG9mIG91ciBmYXRoZXJzOiBmb3Igd2UgaGF2ZSBzaW5uZWQgYWdhaW5zdCB0aGVlLgpEbyBub3QgYWJob3IgdXMsIGZvciB0aHkgbmFtZSdzIHNha2UsIGRvIG5vdCBkaXNncmFjZSB0aGUgdGhyb25lIG9mIHRoeSBnbG9yeTogcmVtZW1iZXIsIGJyZWFrIG5vdCB0aHkgY292ZW5hbnQgd2l0aCB1cy4KQXJlIHRoZXJlIGFueSBhbW9uZyB0aGUgdmFuaXRpZXMgb2YgdGhlIEdlbnRpbGVzIHRoYXQgY2FuIGNhdXNlIHJhaW4/IG9yIGNhbiB0aGUgaGVhdmVucyBnaXZlIHNob3dlcnM/IGFydCBub3QgdGhvdSBoZSwgTyBMT1JEIG91ciBHb2Q/IHRoZXJlZm9yZSB3ZSB3aWxsIHdhaXQgdXBvbiB0aGVlOiBmb3IgdGhvdSBoYXN0IG1hZGUgYWxsIHRoZXNlIHRoaW5ncy4KVGhlbiBzYWlkIHRoZSBMT1JEIHVudG8gbWUsIFRob3VnaCBNb3NlcyBhbmQgU2FtdWVsIHN0b29kIGJlZm9yZSBtZSwgeWV0IG15IG1pbmQgY291bGQgbm90IGJlIHRvd2FyZCB0aGlzIHBlb3BsZTogY2FzdCB0aGVtIG91dCBvZiBteSBzaWdodCwgYW5kIGxldCB0aGVtIGdvIGZvcnRoLgpBbmQgaXQgc2hhbGwgY29tZSB0byBwYXNzLCBpZiB0aGV5IHNheSB1bnRvIHRoZWUsIFdoaXRoZXIgc2hhbGwgd2UgZ28gZm9ydGg/IHRoZW4gdGhvdSBzaGFsdCB0ZWxsIHRoZW0sIFRodXMgc2FpdGggdGhlIExPUkQ7IFN1Y2ggYXMgYXJlIGZvciBkZWF0aCwgdG8gZGVhdGg7IGFuZCBzdWNoIGFzIGFyZSBmb3IgdGhlIHN3b3JkLCB0byB0aGUgc3dvcmQ7IGFuZCBzdWNoIGFzIGFyZSBmb3IgdGhlIGZhbWluZSwgdG8gdGhlIGZhbWluZTsgYW5kIHN1Y2ggYXMgYXJlIGZvciB0aGUgY2FwdGl2aXR5LCB0byB0aGUgY2FwdGl2aXR5LgpBbmQgSSB3aWxsIGFwcG9pbnQgb3ZlciB0aGVtIGZvdXIga2luZHMsIHNhaXRoIHRoZSBMT1JEOiB0aGUgc3dvcmQgdG8gc2xheSwgYW5kIHRoZSBkb2dzIHRvIHRlYXIsIGFuZCB0aGUgZm93bHMgb2YgdGhlIGhlYXZlbiwgYW5kIHRoZSBiZWFzdHMgb2YgdGhlIGVhcnRoLCB0byBkZXZvdXIgYW5kIGRlc3Ryb3kuCkFuZCBJIHdpbGwgY2F1c2UgdGhlbSB0byBiZSByZW1vdmVkIGludG8gYWxsIGtpbmdkb21zIG9mIHRoZSBlYXJ0aCwgYmVjYXVzZSBvZiBNYW5hc3NlaCB0aGUgc29uIG9mIEhlemVraWFoIGtpbmcgb2YgSnVkYWgsIGZvciB0aGF0IHdoaWNoIGhlIGRpZCBpbiBKZXJ1c2FsZW0uCkZvciB3aG8gc2hhbGwgaGF2ZSBwaXR5IHVwb24gdGhlZSwgTyBKZXJ1c2FsZW0/IG9yIHdobyBzaGFsbCBiZW1vYW4gdGhlZT8gb3Igd2hvIHNoYWxsIGdvIGFzaWRlIHRvIGFzayBob3cgdGhvdSBkb2VzdD8KVGhvdSBoYXN0IGZvcnNha2VuIG1lLCBzYWl0aCB0aGUgTE9SRCwgdGhvdSBhcnQgZ29uZSBiYWNrd2FyZDogdGhlcmVmb3JlIHdpbGwgSSBzdHJldGNoIG91dCBteSBoYW5kIGFnYWluc3QgdGhlZSwgYW5kIGRlc3Ryb3kgdGhlZTsgSSBhbSB3ZWFyeSB3aXRoIHJlcGVudGluZy4KQW5kIEkgd2lsbCBmYW4gdGhlbSB3aXRoIGEgZmFuIGluIHRoZSBnYXRlcyBvZiB0aGUgbGFuZDsgSSB3aWxsIGJlcmVhdmUgdGhlbSBvZiBjaGlsZHJlbiwgSSB3aWxsIGRlc3Ryb3kgbXkgcGVvcGxlIHNpbmNlIHRoZXkgcmV0dXJuIG5vdCBmcm9tIHRoZWlyIHdheXMuClRoZWlyIHdpZG93cyBhcmUgaW5jcmVhc2VkIHRvIG1lIGFib3ZlIHRoZSBzYW5kIG9mIHRoZSBzZWFzOiBJIGhhdmUgYnJvdWdodCB1cG9uIHRoZW0gYWdhaW5zdCB0aGUgbW90aGVyIG9mIHRoZSB5b3VuZyBtZW4gYSBzcG9pbGVyIGF0IG5vb25kYXk6IEkgaGF2ZSBjYXVzZWQgaGltIHRvIGZhbGwgdXBvbiBpdCBzdWRkZW5seSwgYW5kIHRlcnJvcnMgdXBvbiB0aGUgY2l0eS4KU2hlIHRoYXQgaGF0aCBib3JuZSBzZXZlbiBsYW5ndWlzaGV0aDogc2hlIGhhdGggZ2l2ZW4gdXAgdGhlIGdob3N0OyBoZXIgc3VuIGlzIGdvbmUgZG93biB3aGlsZSBpdCB3YXMgeWV0IGRheTogc2hlIGhhdGggYmVlbiBhc2hhbWVkIGFuZCBjb25mb3VuZGVkOiBhbmQgdGhlIHJlc2lkdWUgb2YgdGhlbSB3aWxsIEkgZGVsaXZlciB0byB0aGUgc3dvcmQgYmVmb3JlIHRoZWlyIGVuZW1pZXMsIHNhaXRoIHRoZSBMT1JELgpXb2UgaXMgbWUsIG15IG1vdGhlciwgdGhhdCB0aG91IGhhc3QgYm9ybmUgbWUgYSBtYW4gb2Ygc3RyaWZlIGFuZCBhIG1hbiBvZiBjb250ZW50aW9uIHRvIHRoZSB3aG9sZSBlYXJ0aCEgSSBoYXZlIG5laXRoZXIgbGVudCBvbiB1c3VyeSwgbm9yIG1lbiBoYXZlIGxlbnQgdG8gbWUgb24gdXN1cnk7IHlldCBldmVyeSBvbmUgb2YgdGhlbSBkb3RoIGN1cnNlIG1lLgpUaGUgTE9SRCBzYWlkLCBWZXJpbHkgaXQgc2hhbGwgYmUgd2VsbCB3aXRoIHRoeSByZW1uYW50OyB2ZXJpbHkgSSB3aWxsIGNhdXNlIHRoZSBlbmVteSB0byBlbnRyZWF0IHRoZWUgd2VsbCBpbiB0aGUgdGltZSBvZiBldmlsIGFuZCBpbiB0aGUgdGltZSBvZiBhZmZsaWN0aW9uLgpTaGFsbCBpcm9uIGJyZWFrIHRoZSBub3J0aGVybiBpcm9uIGFuZCB0aGUgc3RlZWw/ClRoeSBzdWJzdGFuY2UgYW5kIHRoeSB0cmVhc3VyZXMgd2lsbCBJIGdpdmUgdG8gdGhlIHNwb2lsIHdpdGhvdXQgcHJpY2UsIGFuZCB0aGF0IGZvciBhbGwgdGh5IHNpbnMsIGV2ZW4gaW4gYWxsIHRoeSBib3JkZXJzLgpBbmQgSSB3aWxsIG1ha2UgdGhlZSB0byBwYXNzIHdpdGggdGhpbmUgZW5lbWllcyBpbnRvIGEgbGFuZCB3aGljaCB0aG91IGtub3dlc3Qgbm90OiBmb3IgYSBmaXJlIGlzIGtpbmRsZWQgaW4gbWluZSBhbmdlciwgd2hpY2ggc2hhbGwgYnVybiB1cG9uIHlvdS4KTyBMT1JELCB0aG91IGtub3dlc3Q6IHJlbWVtYmVyIG1lLCBhbmQgdmlzaXQgbWUsIGFuZCByZXZlbmdlIG1lIG9mIG15IHBlcnNlY3V0b3JzOyB0YWtlIG1lIG5vdCBhd2F5IGluIHRoeSBsb25nc3VmZmVyaW5nOiBrbm93IHRoYXQgZm9yIHRoeSBzYWtlIEkgaGF2ZSBzdWZmZXJlZCByZWJ1a2UuClRoeSB3b3JkcyB3ZXJlIGZvdW5kLCBhbmQgSSBkaWQgZWF0IHRoZW07IGFuZCB0aHkgd29yZCB3YXMgdW50byBtZSB0aGUgam95IGFuZCByZWpvaWNpbmcgb2YgbWluZSBoZWFydDogZm9yIEkgYW0gY2FsbGVkIGJ5IHRoeSBuYW1lLCBPIExPUkQgR29kIG9mIGhvc3RzLgpJIHNhdCBub3QgaW4gdGhlIGFzc2VtYmx5IG9mIHRoZSBtb2NrZXJzLCBub3IgcmVqb2ljZWQ7IEkgc2F0IGFsb25lIGJlY2F1c2Ugb2YgdGh5IGhhbmQ6IGZvciB0aG91IGhhc3QgZmlsbGVkIG1lIHdpdGggaW5kaWduYXRpb24uCldoeSBpcyBteSBwYWluIHBlcnBldHVhbCwgYW5kIG15IHdvdW5kIGluY3VyYWJsZSwgd2hpY2ggcmVmdXNldGggdG8gYmUgaGVhbGVkPyB3aWx0IHRob3UgYmUgYWx0b2dldGhlciB1bnRvIG1lIGFzIGEgbGlhciwgYW5kIGFzIHdhdGVycyB0aGF0IGZhaWw/ClRoZXJlZm9yZSB0aHVzIHNhaXRoIHRoZSBMT1JELCBJZiB0aG91IHJldHVybiwgdGhlbiB3aWxsIEkgYnJpbmcgdGhlZSBhZ2FpbiwgYW5kIHRob3Ugc2hhbHQgc3RhbmQgYmVmb3JlIG1lOiBhbmQgaWYgdGhvdSB0YWtlIGZvcnRoIHRoZSBwcmVjaW91cyBmcm9tIHRoZSB2aWxlLCB0aG91IHNoYWx0IGJlIGFzIG15IG1vdXRoOiBsZXQgdGhlbSByZXR1cm4gdW50byB0aGVlOyBidXQgcmV0dXJuIG5vdCB0aG91IHVudG8gdGhlbS4KQW5kIEkgd2lsbCBtYWtlIHRoZWUgdW50byB0aGlzIHBlb3BsZSBhIGZlbmNlZCBicmFzZW4gd2FsbDogYW5kIHRoZXkgc2hhbGwgZmlnaHQgYWdhaW5zdCB0aGVlLCBidXQgdGhleSBzaGFsbCBub3QgcHJldmFpbCBhZ2FpbnN0IHRoZWU6IGZvciBJIGFtIHdpdGggdGhlZSB0byBzYXZlIHRoZWUgYW5kIHRvIGRlbGl2ZXIgdGhlZSwgc2FpdGggdGhlIExPUkQuCkFuZCBJIHdpbGwgZGVsaXZlciB0aGVlIG91dCBvZiB0aGUgaGFuZCBvZiB0aGUgd2lja2VkLCBhbmQgSSB3aWxsIHJlZGVlbSB0aGVlIG91dCBvZiB0aGUgaGFuZCBvZiB0aGUgdGVycmlibGUuClRoZSB3b3JkIG9mIHRoZSBMT1JEIGNhbWUgYWxzbyB1bnRvIG1lLCBzYXlpbmcsClRob3Ugc2hhbHQgbm90IHRha2UgdGhlZSBhIHdpZmUsIG5laXRoZXIgc2hhbHQgdGhvdSBoYXZlIHNvbnMgb3IgZGF1Z2h0ZXJzIGluIHRoaXMgcGxhY2UuCkZvciB0aHVzIHNhaXRoIHRoZSBMT1JEIGNvbmNlcm5pbmcgdGhlIHNvbnMgYW5kIGNvbmNlcm5pbmcgdGhlIGRhdWdodGVycyB0aGF0IGFyZSBib3JuIGluIHRoaXMgcGxhY2UsIGFuZCBjb25jZXJuaW5nIHRoZWlyIG1vdGhlcnMgdGhhdCBiYXJlIHRoZW0sIGFuZCBjb25jZXJuaW5nIHRoZWlyIGZhdGhlcnMgdGhhdCBiZWdhdCB0aGVtIGluIHRoaXMgbGFuZDsKVGhleSBzaGFsbCBkaWUgb2YgZ3JpZXZvdXMgZGVhdGhzOyB0aGV5IHNoYWxsIG5vdCBiZSBsYW1lbnRlZDsgbmVpdGhlciBzaGFsbCB0aGV5IGJlIGJ1cmllZDsgYnV0IHRoZXkgc2hhbGwgYmUgYXMgZHVuZyB1cG9uIHRoZSBmYWNlIG9mIHRoZSBlYXJ0aDogYW5kIHRoZXkgc2hhbGwgYmUgY29uc3VtZWQgYnkgdGhlIHN3b3JkLCBhbmQgYnkgZmFtaW5lOyBhbmQgdGhlaXIgY2FyY2FzZXMgc2hhbGwgYmUgbWVhdCBmb3IgdGhlIGZvd2xzIG9mIGhlYXZlbiwgYW5kIGZvciB0aGUgYmVhc3RzIG9mIHRoZSBlYXJ0aC4KRm9yIHRodXMgc2FpdGggdGhlIExPUkQsIEVudGVyIG5vdCBpbnRvIHRoZSBob3VzZSBvZiBtb3VybmluZywgbmVpdGhlciBnbyB0byBsYW1lbnQgbm9yIGJlbW9hbiB0aGVtOiBmb3IgSSBoYXZlIHRha2VuIGF3YXkgbXkgcGVhY2UgZnJvbSB0aGlzIHBlb3BsZSwgc2FpdGggdGhlIExPUkQsIGV2ZW4gbG92aW5na2luZG5lc3MgYW5kIG1lcmNpZXMuCkJvdGggdGhlIGdyZWF0IGFuZCB0aGUgc21hbGwgc2hhbGwgZGllIGluIHRoaXMgbGFuZDogdGhleSBzaGFsbCBub3QgYmUgYnVyaWVkLCBuZWl0aGVyIHNoYWxsIG1lbiBsYW1lbnQgZm9yIHRoZW0sIG5vciBjdXQgdGhlbXNlbHZlcywgbm9yIG1ha2UgdGhlbXNlbHZlcyBiYWxkIGZvciB0aGVtOgpOZWl0aGVyIHNoYWxsIG1lbiB0ZWFyIHRoZW1zZWx2ZXMgZm9yIHRoZW0gaW4gbW91cm5pbmcsIHRvIGNvbWZvcnQgdGhlbSBmb3IgdGhlIGRlYWQ7IG5laXRoZXIgc2hhbGwgbWVuIGdpdmUgdGhlbSB0aGUgY3VwIG9mIGNvbnNvbGF0aW9uIHRvIGRyaW5rIGZvciB0aGVpciBmYXRoZXIgb3IgZm9yIHRoZWlyIG1vdGhlci4KVGhvdSBzaGFsdCBub3QgYWxzbyBnbyBpbnRvIHRoZSBob3VzZSBvZiBmZWFzdGluZywgdG8gc2l0IHdpdGggdGhlbSB0byBlYXQgYW5kIHRvIGRyaW5rLgpGb3IgdGh1cyBzYWl0aCB0aGUgTE9SRCBvZiBob3N0cywgdGhlIEdvZCBvZiBJc3JhZWw7IEJlaG9sZCwgSSB3aWxsIGNhdXNlIHRvIGNlYXNlIG91dCBvZiB0aGlzIHBsYWNlIGluIHlvdXIgZXllcywgYW5kIGluIHlvdXIgZGF5cywgdGhlIHZvaWNlIG9mIG1pcnRoLCBhbmQgdGhlIHZvaWNlIG9mIGdsYWRuZXNzLCB0aGUgdm9pY2Ugb2YgdGhlIGJyaWRlZ3Jvb20sIGFuZCB0aGUgdm9pY2Ugb2YgdGhlIGJyaWRlLgpBbmQgaXQgc2hhbGwgY29tZSB0byBwYXNzLCB3aGVuIHRob3Ugc2hhbHQgc2hldyB0aGlzIHBlb3BsZSBhbGwgdGhlc2Ugd29yZHMsIGFuZCB0aGV5IHNoYWxsIHNheSB1bnRvIHRoZWUsIFdoZXJlZm9yZSBoYXRoIHRoZSBMT1JEIHByb25vdW5jZWQgYWxsIHRoaXMgZ3JlYXQgZXZpbCBhZ2FpbnN0IHVzPyBvciB3aGF0IGlzIG91ciBpbmlxdWl0eT8gb3Igd2hhdCBpcyBvdXIgc2luIHRoYXQgd2UgaGF2ZSBjb21taXR0ZWQgYWdhaW5zdCB0aGUgTE9SRCBvdXIgR29kPwpUaGVuIHNoYWx0IHRob3Ugc2F5IHVudG8gdGhlbSwgQmVjYXVzZSB5b3VyIGZhdGhlcnMgaGF2ZSBmb3JzYWtlbiBtZSwgc2FpdGggdGhlIExPUkQsIGFuZCBoYXZlIHdhbGtlZCBhZnRlciBvdGhlciBnb2RzLCBhbmQgaGF2ZSBzZXJ2ZWQgdGhlbSwgYW5kIGhhdmUgd29yc2hpcHBlZCB0aGVtLCBhbmQgaGF2ZSBmb3JzYWtlbiBtZSwgYW5kIGhhdmUgbm90IGtlcHQgbXkgbGF3OwpBbmQgeWUgaGF2ZSBkb25lIHdvcnNlIHRoYW4geW91ciBmYXRoZXJzOyBmb3IsIGJlaG9sZCwgeWUgd2FsayBldmVyeSBvbmUgYWZ0ZXIgdGhlIGltYWdpbmF0aW9uIG9mIGhpcyBldmlsIGhlYXJ0LCB0aGF0IHRoZXkgbWF5IG5vdCBoZWFya2VuIHVudG8gbWU6ClRoZXJlZm9yZSB3aWxsIEkgY2FzdCB5b3Ugb3V0IG9mIHRoaXMgbGFuZCBpbnRvIGEgbGFuZCB0aGF0IHllIGtub3cgbm90LCBuZWl0aGVyIHllIG5vciB5b3VyIGZhdGhlcnM7IGFuZCB0aGVyZSBzaGFsbCB5ZSBzZXJ2ZSBvdGhlciBnb2RzIGRheSBhbmQgbmlnaHQ7IHdoZXJlIEkgd2lsbCBub3Qgc2hldyB5b3UgZmF2b3VyLgpUaGVyZWZvcmUsIGJlaG9sZCwgdGhlIGRheXMgY29tZSwgc2FpdGggdGhlIExPUkQsIHRoYXQgaXQgc2hhbGwgbm8gbW9yZSBiZSBzYWlkLCBUaGUgTE9SRCBsaXZldGgsIHRoYXQgYnJvdWdodCB1cCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIG91dCBvZiB0aGUgbGFuZCBvZiBFZ3lwdDsKQnV0LCBUaGUgTE9SRCBsaXZldGgsIHRoYXQgYnJvdWdodCB1cCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGZyb20gdGhlIGxhbmQgb2YgdGhlIG5vcnRoLCBhbmQgZnJvbSBhbGwgdGhlIGxhbmRzIHdoaXRoZXIgaGUgaGFkIGRyaXZlbiB0aGVtOiBhbmQgSSB3aWxsIGJyaW5nIHRoZW0gYWdhaW4gaW50byB0aGVpciBsYW5kIHRoYXQgSSBnYXZlIHVudG8gdGhlaXIgZmF0aGVycy4KQmVob2xkLCBJIHdpbGwgc2VuZCBmb3IgbWFueSBmaXNoZXJzLCBzYWl0aCB0aGUgTE9SRCwgYW5kIHRoZXkgc2hhbGwgZmlzaCB0aGVtOyBhbmQgYWZ0ZXIgd2lsbCBJIHNlbmQgZm9yIG1hbnkgaHVudGVycywgYW5kIHRoZXkgc2hhbGwgaHVudCB0aGVtIGZyb20gZXZlcnkgbW91bnRhaW4sIGFuZCBmcm9tIGV2ZXJ5IGhpbGwsIGFuZCBvdXQgb2YgdGhlIGhvbGVzIG9mIHRoZSByb2Nrcy4KRm9yIG1pbmUgZXllcyBhcmUgdXBvbiBhbGwgdGhlaXIgd2F5czogdGhleSBhcmUgbm90IGhpZCBmcm9tIG15IGZhY2UsIG5laXRoZXIgaXMgdGhlaXIgaW5pcXVpdHkgaGlkIGZyb20gbWluZSBleWVzLgpBbmQgZmlyc3QgSSB3aWxsIHJlY29tcGVuc2UgdGhlaXIgaW5pcXVpdHkgYW5kIHRoZWlyIHNpbiBkb3VibGU7IGJlY2F1c2UgdGhleSBoYXZlIGRlZmlsZWQgbXkgbGFuZCwgdGhleSBoYXZlIGZpbGxlZCBtaW5lIGluaGVyaXRhbmNlIHdpdGggdGhlIGNhcmNhc2VzIG9mIHRoZWlyIGRldGVzdGFibGUgYW5kIGFib21pbmFibGUgdGhpbmdzLgpPIExPUkQsIG15IHN0cmVuZ3RoLCBhbmQgbXkgZm9ydHJlc3MsIGFuZCBteSByZWZ1Z2UgaW4gdGhlIGRheSBvZiBhZmZsaWN0aW9uLCB0aGUgR2VudGlsZXMgc2hhbGwgY29tZSB1bnRvIHRoZWUgZnJvbSB0aGUgZW5kcyBvZiB0aGUgZWFydGgsIGFuZCBzaGFsbCBzYXksIFN1cmVseSBvdXIgZmF0aGVycyBoYXZlIGluaGVyaXRlZCBsaWVzLCB2YW5pdHksIGFuZCB0aGluZ3Mgd2hlcmVpbiB0aGVyZSBpcyBubyBwcm9maXQuClNoYWxsIGEgbWFuIG1ha2UgZ29kcyB1bnRvIGhpbXNlbGYsIGFuZCB0aGV5IGFyZSBubyBnb2RzPwpUaGVyZWZvcmUsIGJlaG9sZCwgSSB3aWxsIHRoaXMgb25jZSBjYXVzZSB0aGVtIHRvIGtub3csIEkgd2lsbCBjYXVzZSB0aGVtIHRvIGtub3cgbWluZSBoYW5kIGFuZCBteSBtaWdodDsgYW5kIHRoZXkgc2hhbGwga25vdyB0aGF0IG15IG5hbWUgaXMgVGhlIExPUkQuClRoZSBzaW4gb2YgSnVkYWggaXMgd3JpdHRlbiB3aXRoIGEgcGVuIG9mIGlyb24sIGFuZCB3aXRoIHRoZSBwb2ludCBvZiBhIGRpYW1vbmQ6IGl0IGlzIGdyYXZlbiB1cG9uIHRoZSB0YWJsZSBvZiB0aGVpciBoZWFydCwgYW5kIHVwb24gdGhlIGhvcm5zIG9mIHlvdXIgYWx0YXJzOwpXaGlsc3QgdGhlaXIgY2hpbGRyZW4gcmVtZW1iZXIgdGhlaXIgYWx0YXJzIGFuZCB0aGVpciBncm92ZXMgYnkgdGhlIGdyZWVuIHRyZWVzIHVwb24gdGhlIGhpZ2ggaGlsbHMuCk8gbXkgbW91bnRhaW4gaW4gdGhlIGZpZWxkLCBJIHdpbGwgZ2l2ZSB0aHkgc3Vic3RhbmNlIGFuZCBhbGwgdGh5IHRyZWFzdXJlcyB0byB0aGUgc3BvaWwsIGFuZCB0aHkgaGlnaCBwbGFjZXMgZm9yIHNpbiwgdGhyb3VnaG91dCBhbGwgdGh5IGJvcmRlcnMuCkFuZCB0aG91LCBldmVuIHRoeXNlbGYsIHNoYWx0IGRpc2NvbnRpbnVlIGZyb20gdGhpbmUgaGVyaXRhZ2UgdGhhdCBJIGdhdmUgdGhlZTsgYW5kIEkgd2lsbCBjYXVzZSB0aGVlIHRvIHNlcnZlIHRoaW5lIGVuZW1pZXMgaW4gdGhlIGxhbmQgd2hpY2ggdGhvdSBrbm93ZXN0IG5vdDogZm9yIHllIGhhdmUga2luZGxlZCBhIGZpcmUgaW4gbWluZSBhbmdlciwgd2hpY2ggc2hhbGwgYnVybiBmb3IgZXZlci4KVGh1cyBzYWl0aCB0aGUgTE9SRDsgQ3Vyc2VkIGJlIHRoZSBtYW4gdGhhdCB0cnVzdGV0aCBpbiBtYW4sIGFuZCBtYWtldGggZmxlc2ggaGlzIGFybSwgYW5kIHdob3NlIGhlYXJ0IGRlcGFydGV0aCBmcm9tIHRoZSBMT1JELgpGb3IgaGUgc2hhbGwgYmUgbGlrZSB0aGUgaGVhdGggaW4gdGhlIGRlc2VydCwgYW5kIHNoYWxsIG5vdCBzZWUgd2hlbiBnb29kIGNvbWV0aDsgYnV0IHNoYWxsIGluaGFiaXQgdGhlIHBhcmNoZWQgcGxhY2VzIGluIHRoZSB3aWxkZXJuZXNzLCBpbiBhIHNhbHQgbGFuZCBhbmQgbm90IGluaGFiaXRlZC4KQmxlc3NlZCBpcyB0aGUgbWFuIHRoYXQgdHJ1c3RldGggaW4gdGhlIExPUkQsIGFuZCB3aG9zZSBob3BlIHRoZSBMT1JEIGlzLgpGb3IgaGUgc2hhbGwgYmUgYXMgYSB0cmVlIHBsYW50ZWQgYnkgdGhlIHdhdGVycywgYW5kIHRoYXQgc3ByZWFkZXRoIG91dCBoZXIgcm9vdHMgYnkgdGhlIHJpdmVyLCBhbmQgc2hhbGwgbm90IHNlZSB3aGVuIGhlYXQgY29tZXRoLCBidXQgaGVyIGxlYWYgc2hhbGwgYmUgZ3JlZW47IGFuZCBzaGFsbCBub3QgYmUgY2FyZWZ1bCBpbiB0aGUgeWVhciBvZiBkcm91Z2h0LCBuZWl0aGVyIHNoYWxsIGNlYXNlIGZyb20geWllbGRpbmcgZnJ1aXQuClRoZSBoZWFydCBpcyBkZWNlaXRmdWwgYWJvdmUgYWxsIHRoaW5ncywgYW5kIGRlc3BlcmF0ZWx5IHdpY2tlZDogd2hvIGNhbiBrbm93IGl0PwpJIHRoZSBMT1JEIHNlYXJjaCB0aGUgaGVhcnQsIEkgdHJ5IHRoZSByZWlucywgZXZlbiB0byBnaXZlIGV2ZXJ5IG1hbiBhY2NvcmRpbmcgdG8gaGlzIHdheXMsIGFuZCBhY2NvcmRpbmcgdG8gdGhlIGZydWl0IG9mIGhpcyBkb2luZ3MuCkFzIHRoZSBwYXJ0cmlkZ2Ugc2l0dGV0aCBvbiBlZ2dzLCBhbmQgaGF0Y2hldGggdGhlbSBub3Q7IHNvIGhlIHRoYXQgZ2V0dGV0aCByaWNoZXMsIGFuZCBub3QgYnkgcmlnaHQsIHNoYWxsIGxlYXZlIHRoZW0gaW4gdGhlIG1pZHN0IG9mIGhpcyBkYXlzLCBhbmQgYXQgaGlzIGVuZCBzaGFsbCBiZSBhIGZvb2wuCkEgZ2xvcmlvdXMgaGlnaCB0aHJvbmUgZnJvbSB0aGUgYmVnaW5uaW5nIGlzIHRoZSBwbGFjZSBvZiBvdXIgc2FuY3R1YXJ5LgpPIExPUkQsIHRoZSBob3BlIG9mIElzcmFlbCwgYWxsIHRoYXQgZm9yc2FrZSB0aGVlIHNoYWxsIGJlIGFzaGFtZWQsIGFuZCB0aGV5IHRoYXQgZGVwYXJ0IGZyb20gbWUgc2hhbGwgYmUgd3JpdHRlbiBpbiB0aGUgZWFydGgsIGJlY2F1c2UgdGhleSBoYXZlIGZvcnNha2VuIHRoZSBMT1JELCB0aGUgZm91bnRhaW4gb2YgbGl2aW5nIHdhdGVycy4KSGVhbCBtZSwgTyBMT1JELCBhbmQgSSBzaGFsbCBiZSBoZWFsZWQ7IHNhdmUgbWUsIGFuZCBJIHNoYWxsIGJlIHNhdmVkOiBmb3IgdGhvdSBhcnQgbXkgcHJhaXNlLgpCZWhvbGQsIHRoZXkgc2F5IHVudG8gbWUsIFdoZXJlIGlzIHRoZSB3b3JkIG9mIHRoZSBMT1JEPyBsZXQgaXQgY29tZSBub3cuCkFzIGZvciBtZSwgSSBoYXZlIG5vdCBoYXN0ZW5lZCBmcm9tIGJlaW5nIGEgcGFzdG9yIHRvIGZvbGxvdyB0aGVlOiBuZWl0aGVyIGhhdmUgSSBkZXNpcmVkIHRoZSB3b2VmdWwgZGF5OyB0aG91IGtub3dlc3Q6IHRoYXQgd2hpY2ggY2FtZSBvdXQgb2YgbXkgbGlwcyB3YXMgcmlnaHQgYmVmb3JlIHRoZWUuCkJlIG5vdCBhIHRlcnJvciB1bnRvIG1lOiB0aG91IGFydCBteSBob3BlIGluIHRoZSBkYXkgb2YgZXZpbC4KTGV0IHRoZW0gYmUgY29uZm91bmRlZCB0aGF0IHBlcnNlY3V0ZSBtZSwgYnV0IGxldCBub3QgbWUgYmUgY29uZm91bmRlZDogbGV0IHRoZW0gYmUgZGlzbWF5ZWQsIGJ1dCBsZXQgbm90IG1lIGJlIGRpc21heWVkOiBicmluZyB1cG9uIHRoZW0gdGhlIGRheSBvZiBldmlsLCBhbmQgZGVzdHJveSB0aGVtIHdpdGggZG91YmxlIGRlc3RydWN0aW9uLgpUaHVzIHNhaWQgdGhlIExPUkQgdW50byBtZTsgR28gYW5kIHN0YW5kIGluIHRoZSBnYXRlIG9mIHRoZSBjaGlsZHJlbiBvZiB0aGUgcGVvcGxlLCB3aGVyZWJ5IHRoZSBraW5ncyBvZiBKdWRhaCBjb21lIGluLCBhbmQgYnkgdGhlIHdoaWNoIHRoZXkgZ28gb3V0LCBhbmQgaW4gYWxsIHRoZSBnYXRlcyBvZiBKZXJ1c2FsZW07CkFuZCBzYXkgdW50byB0aGVtLCBIZWFyIHllIHRoZSB3b3JkIG9mIHRoZSBMT1JELCB5ZSBraW5ncyBvZiBKdWRhaCwgYW5kIGFsbCBKdWRhaCwgYW5kIGFsbCB0aGUgaW5oYWJpdGFudHMgb2YgSmVydXNhbGVtLCB0aGF0IGVudGVyIGluIGJ5IHRoZXNlIGdhdGVzOgpUaHVzIHNhaXRoIHRoZSBMT1JEOyBUYWtlIGhlZWQgdG8geW91cnNlbHZlcywgYW5kIGJlYXIgbm8gYnVyZGVuIG9uIHRoZSBzYWJiYXRoIGRheSwgbm9yIGJyaW5nIGl0IGluIGJ5IHRoZSBnYXRlcyBvZiBKZXJ1c2FsZW07Ck5laXRoZXIgY2FycnkgZm9ydGggYSBidXJkZW4gb3V0IG9mIHlvdXIgaG91c2VzIG9uIHRoZSBzYWJiYXRoIGRheSwgbmVpdGhlciBkbyB5ZSBhbnkgd29yaywgYnV0IGhhbGxvdyB5ZSB0aGUgc2FiYmF0aCBkYXksIGFzIEkgY29tbWFuZGVkIHlvdXIgZmF0aGVycy4KQnV0IHRoZXkgb2JleWVkIG5vdCwgbmVpdGhlciBpbmNsaW5lZCB0aGVpciBlYXIsIGJ1dCBtYWRlIHRoZWlyIG5lY2sgc3RpZmYsIHRoYXQgdGhleSBtaWdodCBub3QgaGVhciwgbm9yIHJlY2VpdmUgaW5zdHJ1Y3Rpb24uCkFuZCBpdCBzaGFsbCBjb21lIHRvIHBhc3MsIGlmIHllIGRpbGlnZW50bHkgaGVhcmtlbiB1bnRvIG1lLCBzYWl0aCB0aGUgTE9SRCwgdG8gYnJpbmcgaW4gbm8gYnVyZGVuIHRocm91Z2ggdGhlIGdhdGVzIG9mIHRoaXMgY2l0eSBvbiB0aGUgc2FiYmF0aCBkYXksIGJ1dCBoYWxsb3cgdGhlIHNhYmJhdGggZGF5LCB0byBkbyBubyB3b3JrIHRoZXJlaW47ClRoZW4gc2hhbGwgdGhlcmUgZW50ZXIgaW50byB0aGUgZ2F0ZXMgb2YgdGhpcyBjaXR5IGtpbmdzIGFuZCBwcmluY2VzIHNpdHRpbmcgdXBvbiB0aGUgdGhyb25lIG9mIERhdmlkLCByaWRpbmcgaW4gY2hhcmlvdHMgYW5kIG9uIGhvcnNlcywgdGhleSwgYW5kIHRoZWlyIHByaW5jZXMsIHRoZSBtZW4gb2YgSnVkYWgsIGFuZCB0aGUgaW5oYWJpdGFudHMgb2YgSmVydXNhbGVtOiBhbmQgdGhpcyBjaXR5IHNoYWxsIHJlbWFpbiBmb3IgZXZlci4KQW5kIHRoZXkgc2hhbGwgY29tZSBmcm9tIHRoZSBjaXRpZXMgb2YgSnVkYWgsIGFuZCBmcm9tIHRoZSBwbGFjZXMgYWJvdXQgSmVydXNhbGVtLCBhbmQgZnJvbSB0aGUgbGFuZCBvZiBCZW5qYW1pbiwgYW5kIGZyb20gdGhlIHBsYWluLCBhbmQgZnJvbSB0aGUgbW91bnRhaW5zLCBhbmQgZnJvbSB0aGUgc291dGgsIGJyaW5naW5nIGJ1cm50IG9mZmVyaW5ncywgYW5kIHNhY3JpZmljZXMsIGFuZCBtZWF0IG9mZmVyaW5ncywgYW5kIGluY2Vuc2UsIGFuZCBicmluZ2luZyBzYWNyaWZpY2VzIG9mIHByYWlzZSwgdW50byB0aGUgaG91c2Ugb2YgdGhlIExPUkQuCkJ1dCBpZiB5ZSB3aWxsIG5vdCBoZWFya2VuIHVudG8gbWUgdG8gaGFsbG93IHRoZSBzYWJiYXRoIGRheSwgYW5kIG5vdCB0byBiZWFyIGEgYnVyZGVuLCBldmVuIGVudGVyaW5nIGluIGF0IHRoZSBnYXRlcyBvZiBKZXJ1c2FsZW0gb24gdGhlIHNhYmJhdGggZGF5OyB0aGVuIHdpbGwgSSBraW5kbGUgYSBmaXJlIGluIHRoZSBnYXRlcyB0aGVyZW9mLCBhbmQgaXQgc2hhbGwgZGV2b3VyIHRoZSBwYWxhY2VzIG9mIEplcnVzYWxlbSwgYW5kIGl0IHNoYWxsIG5vdCBiZSBxdWVuY2hlZC4KVGhlIHdvcmQgd2hpY2ggY2FtZSB0byBKZXJlbWlhaCBmcm9tIHRoZSBMT1JELCBzYXlpbmcsCkFyaXNlLCBhbmQgZ28gZG93biB0byB0aGUgcG90dGVyJ3MgaG91c2UsIGFuZCB0aGVyZSBJIHdpbGwgY2F1c2UgdGhlZSB0byBoZWFyIG15IHdvcmRzLgpUaGVuIEkgd2VudCBkb3duIHRvIHRoZSBwb3R0ZXIncyBob3VzZSwgYW5kLCBiZWhvbGQsIGhlIHdyb3VnaHQgYSB3b3JrIG9uIHRoZSB3aGVlbHMuCkFuZCB0aGUgdmVzc2VsIHRoYXQgaGUgbWFkZSBvZiBjbGF5IHdhcyBtYXJyZWQgaW4gdGhlIGhhbmQgb2YgdGhlIHBvdHRlcjogc28gaGUgbWFkZSBpdCBhZ2FpbiBhbm90aGVyIHZlc3NlbCwgYXMgc2VlbWVkIGdvb2QgdG8gdGhlIHBvdHRlciB0byBtYWtlIGl0LgpUaGVuIHRoZSB3b3JkIG9mIHRoZSBMT1JEIGNhbWUgdG8gbWUsIHNheWluZywKTyBob3VzZSBvZiBJc3JhZWwsIGNhbm5vdCBJIGRvIHdpdGggeW91IGFzIHRoaXMgcG90dGVyPyBzYWl0aCB0aGUgTE9SRC4gQmVob2xkLCBhcyB0aGUgY2xheSBpcyBpbiB0aGUgcG90dGVyJ3MgaGFuZCwgc28gYXJlIHllIGluIG1pbmUgaGFuZCwgTyBob3VzZSBvZiBJc3JhZWwuCkF0IHdoYXQgaW5zdGFudCBJIHNoYWxsIHNwZWFrIGNvbmNlcm5pbmcgYSBuYXRpb24sIGFuZCBjb25jZXJuaW5nIGEga2luZ2RvbSwgdG8gcGx1Y2sgdXAsIGFuZCB0byBwdWxsIGRvd24sIGFuZCB0byBkZXN0cm95IGl0OwpJZiB0aGF0IG5hdGlvbiwgYWdhaW5zdCB3aG9tIEkgaGF2ZSBwcm9ub3VuY2VkLCB0dXJuIGZyb20gdGhlaXIgZXZpbCwgSSB3aWxsIHJlcGVudCBvZiB0aGUgZXZpbCB0aGF0IEkgdGhvdWdodCB0byBkbyB1bnRvIHRoZW0uCkFuZCBhdCB3aGF0IGluc3RhbnQgSSBzaGFsbCBzcGVhayBjb25jZXJuaW5nIGEgbmF0aW9uLCBhbmQgY29uY2VybmluZyBhIGtpbmdkb20sIHRvIGJ1aWxkIGFuZCB0byBwbGFudCBpdDsKSWYgaXQgZG8gZXZpbCBpbiBteSBzaWdodCwgdGhhdCBpdCBvYmV5IG5vdCBteSB2b2ljZSwgdGhlbiBJIHdpbGwgcmVwZW50IG9mIHRoZSBnb29kLCB3aGVyZXdpdGggSSBzYWlkIEkgd291bGQgYmVuZWZpdCB0aGVtLgpOb3cgdGhlcmVmb3JlIGdvIHRvLCBzcGVhayB0byB0aGUgbWVuIG9mIEp1ZGFoLCBhbmQgdG8gdGhlIGluaGFiaXRhbnRzIG9mIEplcnVzYWxlbSwgc2F5aW5nLCBUaHVzIHNhaXRoIHRoZSBMT1JEOyBCZWhvbGQsIEkgZnJhbWUgZXZpbCBhZ2FpbnN0IHlvdSwgYW5kIGRldmlzZSBhIGRldmljZSBhZ2FpbnN0IHlvdTogcmV0dXJuIHllIG5vdyBldmVyeSBvbmUgZnJvbSBoaXMgZXZpbCB3YXksIGFuZCBtYWtlIHlvdXIgd2F5cyBhbmQgeW91ciBkb2luZ3MgZ29vZC4KQW5kIHRoZXkgc2FpZCwgVGhlcmUgaXMgbm8gaG9wZTogYnV0IHdlIHdpbGwgd2FsayBhZnRlciBvdXIgb3duIGRldmljZXMsIGFuZCB3ZSB3aWxsIGV2ZXJ5IG9uZSBkbyB0aGUgaW1hZ2luYXRpb24gb2YgaGlzIGV2aWwgaGVhcnQuClRoZXJlZm9yZSB0aHVzIHNhaXRoIHRoZSBMT1JEOyBBc2sgeWUgbm93IGFtb25nIHRoZSBoZWF0aGVuLCB3aG8gaGF0aCBoZWFyZCBzdWNoIHRoaW5nczogdGhlIHZpcmdpbiBvZiBJc3JhZWwgaGF0aCBkb25lIGEgdmVyeSBob3JyaWJsZSB0aGluZy4KV2lsbCBhIG1hbiBsZWF2ZSB0aGUgc25vdyBvZiBMZWJhbm9uIHdoaWNoIGNvbWV0aCBmcm9tIHRoZSByb2NrIG9mIHRoZSBmaWVsZD8gb3Igc2hhbGwgdGhlIGNvbGQgZmxvd2luZyB3YXRlcnMgdGhhdCBjb21lIGZyb20gYW5vdGhlciBwbGFjZSBiZSBmb3JzYWtlbj8KQmVjYXVzZSBteSBwZW9wbGUgaGF0aCBmb3Jnb3R0ZW4gbWUsIHRoZXkgaGF2ZSBidXJuZWQgaW5jZW5zZSB0byB2YW5pdHksIGFuZCB0aGV5IGhhdmUgY2F1c2VkIHRoZW0gdG8gc3R1bWJsZSBpbiB0aGVpciB3YXlzIGZyb20gdGhlIGFuY2llbnQgcGF0aHMsIHRvIHdhbGsgaW4gcGF0aHMsIGluIGEgd2F5IG5vdCBjYXN0IHVwOwpUbyBtYWtlIHRoZWlyIGxhbmQgZGVzb2xhdGUsIGFuZCBhIHBlcnBldHVhbCBoaXNzaW5nOyBldmVyeSBvbmUgdGhhdCBwYXNzZXRoIHRoZXJlYnkgc2hhbGwgYmUgYXN0b25pc2hlZCwgYW5kIHdhZyBoaXMgaGVhZC4KSSB3aWxsIHNjYXR0ZXIgdGhlbSBhcyB3aXRoIGFuIGVhc3Qgd2luZCBiZWZvcmUgdGhlIGVuZW15OyBJIHdpbGwgc2hldyB0aGVtIHRoZSBiYWNrLCBhbmQgbm90IHRoZSBmYWNlLCBpbiB0aGUgZGF5IG9mIHRoZWlyIGNhbGFtaXR5LgpUaGVuIHNhaWQgdGhleSwgQ29tZSBhbmQgbGV0IHVzIGRldmlzZSBkZXZpY2VzIGFnYWluc3QgSmVyZW1pYWg7IGZvciB0aGUgbGF3IHNoYWxsIG5vdCBwZXJpc2ggZnJvbSB0aGUgcHJpZXN0LCBub3IgY291bnNlbCBmcm9tIHRoZSB3aXNlLCBub3IgdGhlIHdvcmQgZnJvbSB0aGUgcHJvcGhldC4gQ29tZSwgYW5kIGxldCB1cyBzbWl0ZSBoaW0gd2l0aCB0aGUgdG9uZ3VlLCBhbmQgbGV0IHVzIG5vdCBnaXZlIGhlZWQgdG8gYW55IG9mIGhpcyB3b3Jkcy4KR2l2ZSBoZWVkIHRvIG1lLCBPIExPUkQsIGFuZCBoZWFya2VuIHRvIHRoZSB2b2ljZSBvZiB0aGVtIHRoYXQgY29udGVuZCB3aXRoIG1lLgpTaGFsbCBldmlsIGJlIHJlY29tcGVuc2VkIGZvciBnb29kPyBmb3IgdGhleSBoYXZlIGRpZ2dlZCBhIHBpdCBmb3IgbXkgc291bC4gUmVtZW1iZXIgdGhhdCBJIHN0b29kIGJlZm9yZSB0aGVlIHRvIHNwZWFrIGdvb2QgZm9yIHRoZW0sIGFuZCB0byB0dXJuIGF3YXkgdGh5IHdyYXRoIGZyb20gdGhlbS4KVGhlcmVmb3JlIGRlbGl2ZXIgdXAgdGhlaXIgY2hpbGRyZW4gdG8gdGhlIGZhbWluZSwgYW5kIHBvdXIgb3V0IHRoZWlyIGJsb29kIGJ5IHRoZSBmb3JjZSBvZiB0aGUgc3dvcmQ7IGFuZCBsZXQgdGhlaXIgd2l2ZXMgYmUgYmVyZWF2ZWQgb2YgdGhlaXIgY2hpbGRyZW4sIGFuZCBiZSB3aWRvd3M7IGFuZCBsZXQgdGhlaXIgbWVuIGJlIHB1dCB0byBkZWF0aDsgbGV0IHRoZWlyIHlvdW5nIG1lbiBiZSBzbGFpbiBieSB0aGUgc3dvcmQgaW4gYmF0dGxlLgpMZXQgYSBjcnkgYmUgaGVhcmQgZnJvbSB0aGVpciBob3VzZXMsIHdoZW4gdGhvdSBzaGFsdCBicmluZyBhIHRyb29wIHN1ZGRlbmx5IHVwb24gdGhlbTogZm9yIHRoZXkgaGF2ZSBkaWdnZWQgYSBwaXQgdG8gdGFrZSBtZSwgYW5kIGhpZCBzbmFyZXMgZm9yIG15IGZlZXQuCllldCwgTE9SRCwgdGhvdSBrbm93ZXN0IGFsbCB0aGVpciBjb3Vuc2VsIGFnYWluc3QgbWUgdG8gc2xheSBtZTogZm9yZ2l2ZSBub3QgdGhlaXIgaW5pcXVpdHksIG5laXRoZXIgYmxvdCBvdXQgdGhlaXIgc2luIGZyb20gdGh5IHNpZ2h0LCBidXQgbGV0IHRoZW0gYmUgb3ZlcnRocm93biBiZWZvcmUgdGhlZTsgZGVhbCB0aHVzIHdpdGggdGhlbSBpbiB0aGUgdGltZSBvZiB0aGluZSBhbmdlci4KVGh1cyBzYWl0aCB0aGUgTE9SRCwgR28gYW5kIGdldCBhIHBvdHRlcidzIGVhcnRoZW4gYm90dGxlLCBhbmQgdGFrZSBvZiB0aGUgYW5jaWVudHMgb2YgdGhlIHBlb3BsZSwgYW5kIG9mIHRoZSBhbmNpZW50cyBvZiB0aGUgcHJpZXN0czsKQW5kIGdvIGZvcnRoIHVudG8gdGhlIHZhbGxleSBvZiB0aGUgc29uIG9mIEhpbm5vbSwgd2hpY2ggaXMgYnkgdGhlIGVudHJ5IG9mIHRoZSBlYXN0IGdhdGUsIGFuZCBwcm9jbGFpbSB0aGVyZSB0aGUgd29yZHMgdGhhdCBJIHNoYWxsIHRlbGwgdGhlZSwKQW5kIHNheSwgSGVhciB5ZSB0aGUgd29yZCBvZiB0aGUgTE9SRCwgTyBraW5ncyBvZiBKdWRhaCwgYW5kIGluaGFiaXRhbnRzIG9mIEplcnVzYWxlbTsgVGh1cyBzYWl0aCB0aGUgTE9SRCBvZiBob3N0cywgdGhlIEdvZCBvZiBJc3JhZWw7IEJlaG9sZCwgSSB3aWxsIGJyaW5nIGV2aWwgdXBvbiB0aGlzIHBsYWNlLCB0aGUgd2hpY2ggd2hvc29ldmVyIGhlYXJldGgsIGhpcyBlYXJzIHNoYWxsIHRpbmdsZS4KQmVjYXVzZSB0aGV5IGhhdmUgZm9yc2FrZW4gbWUsIGFuZCBoYXZlIGVzdHJhbmdlZCB0aGlzIHBsYWNlLCBhbmQgaGF2ZSBidXJuZWQgaW5jZW5zZSBpbiBpdCB1bnRvIG90aGVyIGdvZHMsIHdob20gbmVpdGhlciB0aGV5IG5vciB0aGVpciBmYXRoZXJzIGhhdmUga25vd24sIG5vciB0aGUga2luZ3Mgb2YgSnVkYWgsIGFuZCBoYXZlIGZpbGxlZCB0aGlzIHBsYWNlIHdpdGggdGhlIGJsb29kIG9mIGlubm9jZW50czsKVGhleSBoYXZlIGJ1aWx0IGFsc28gdGhlIGhpZ2ggcGxhY2VzIG9mIEJhYWwsIHRvIGJ1cm4gdGhlaXIgc29ucyB3aXRoIGZpcmUgZm9yIGJ1cm50IG9mZmVyaW5ncyB1bnRvIEJhYWwsIHdoaWNoIEkgY29tbWFuZGVkIG5vdCwgbm9yIHNwYWtlIGl0LCBuZWl0aGVyIGNhbWUgaXQgaW50byBteSBtaW5kOgpUaGVyZWZvcmUsIGJlaG9sZCwgdGhlIGRheXMgY29tZSwgc2FpdGggdGhlIExPUkQsIHRoYXQgdGhpcyBwbGFjZSBzaGFsbCBubyBtb3JlIGJlIGNhbGxlZCBUb3BoZXQsIG5vciBUaGUgdmFsbGV5IG9mIHRoZSBzb24gb2YgSGlubm9tLCBidXQgVGhlIHZhbGxleSBvZiBzbGF1Z2h0ZXIuCkFuZCBJIHdpbGwgbWFrZSB2b2lkIHRoZSBjb3Vuc2VsIG9mIEp1ZGFoIGFuZCBKZXJ1c2FsZW0gaW4gdGhpcyBwbGFjZTsgYW5kIEkgd2lsbCBjYXVzZSB0aGVtIHRvIGZhbGwgYnkgdGhlIHN3b3JkIGJlZm9yZSB0aGVpciBlbmVtaWVzLCBhbmQgYnkgdGhlIGhhbmRzIG9mIHRoZW0gdGhhdCBzZWVrIHRoZWlyIGxpdmVzOiBhbmQgdGhlaXIgY2FyY2FzZXMgd2lsbCBJIGdpdmUgdG8gYmUgbWVhdCBmb3IgdGhlIGZvd2xzIG9mIHRoZSBoZWF2ZW4sIGFuZCBmb3IgdGhlIGJlYXN0cyBvZiB0aGUgZWFydGguCkFuZCBJIHdpbGwgbWFrZSB0aGlzIGNpdHkgZGVzb2xhdGUsIGFuZCBhbiBoaXNzaW5nOyBldmVyeSBvbmUgdGhhdCBwYXNzZXRoIHRoZXJlYnkgc2hhbGwgYmUgYXN0b25pc2hlZCBhbmQgaGlzcyBiZWNhdXNlIG9mIGFsbCB0aGUgcGxhZ3VlcyB0aGVyZW9mLgpBbmQgSSB3aWxsIGNhdXNlIHRoZW0gdG8gZWF0IHRoZSBmbGVzaCBvZiB0aGVpciBzb25zIGFuZCB0aGUgZmxlc2ggb2YgdGhlaXIgZGF1Z2h0ZXJzLCBhbmQgdGhleSBzaGFsbCBlYXQgZXZlcnkgb25lIHRoZSBmbGVzaCBvZiBoaXMgZnJpZW5kIGluIHRoZSBzaWVnZSBhbmQgc3RyYWl0bmVzcywgd2hlcmV3aXRoIHRoZWlyIGVuZW1pZXMsIGFuZCB0aGV5IHRoYXQgc2VlayB0aGVpciBsaXZlcywgc2hhbGwgc3RyYWl0ZW4gdGhlbS4KVGhlbiBzaGFsdCB0aG91IGJyZWFrIHRoZSBib3R0bGUgaW4gdGhlIHNpZ2h0IG9mIHRoZSBtZW4gdGhhdCBnbyB3aXRoIHRoZWUsCkFuZCBzaGFsdCBzYXkgdW50byB0aGVtLCBUaHVzIHNhaXRoIHRoZSBMT1JEIG9mIGhvc3RzOyBFdmVuIHNvIHdpbGwgSSBicmVhayB0aGlzIHBlb3BsZSBhbmQgdGhpcyBjaXR5LCBhcyBvbmUgYnJlYWtldGggYSBwb3R0ZXIncyB2ZXNzZWwsIHRoYXQgY2Fubm90IGJlIG1hZGUgd2hvbGUgYWdhaW46IGFuZCB0aGV5IHNoYWxsIGJ1cnkgdGhlbSBpbiBUb3BoZXQsIHRpbGwgdGhlcmUgYmUgbm8gcGxhY2UgdG8gYnVyeS4KVGh1cyB3aWxsIEkgZG8gdW50byB0aGlzIHBsYWNlLCBzYWl0aCB0aGUgTE9SRCwgYW5kIHRvIHRoZSBpbmhhYml0YW50cyB0aGVyZW9mLCBhbmQgZXZlbiBtYWtlIHRoaXMgY2l0eSBhcyBUb3BoZXQ6CkFuZCB0aGUgaG91c2VzIG9mIEplcnVzYWxlbSwgYW5kIHRoZSBob3VzZXMgb2YgdGhlIGtpbmdzIG9mIEp1ZGFoLCBzaGFsbCBiZSBkZWZpbGVkIGFzIHRoZSBwbGFjZSBvZiBUb3BoZXQsIGJlY2F1c2Ugb2YgYWxsIHRoZSBob3VzZXMgdXBvbiB3aG9zZSByb29mcyB0aGV5IGhhdmUgYnVybmVkIGluY2Vuc2UgdW50byBhbGwgdGhlIGhvc3Qgb2YgaGVhdmVuLCBhbmQgaGF2ZSBwb3VyZWQgb3V0IGRyaW5rIG9mZmVyaW5ncyB1bnRvIG90aGVyIGdvZHMuClRoZW4gY2FtZSBKZXJlbWlhaCBmcm9tIFRvcGhldCwgd2hpdGhlciB0aGUgTE9SRCBoYWQgc2VudCBoaW0gdG8gcHJvcGhlc3k7IGFuZCBoZSBzdG9vZCBpbiB0aGUgY291cnQgb2YgdGhlIExPUkQncyBob3VzZTsgYW5kIHNhaWQgdG8gYWxsIHRoZSBwZW9wbGUsClRodXMgc2FpdGggdGhlIExPUkQgb2YgaG9zdHMsIHRoZSBHb2Qgb2YgSXNyYWVsOyBCZWhvbGQsIEkgd2lsbCBicmluZyB1cG9uIHRoaXMgY2l0eSBhbmQgdXBvbiBhbGwgaGVyIHRvd25zIGFsbCB0aGUgZXZpbCB0aGF0IEkgaGF2ZSBwcm9ub3VuY2VkIGFnYWluc3QgaXQsIGJlY2F1c2UgdGhleSBoYXZlIGhhcmRlbmVkIHRoZWlyIG5lY2tzLCB0aGF0IHRoZXkgbWlnaHQgbm90IGhlYXIgbXkgd29yZHMuCk5vdyBQYXNodXIgdGhlIHNvbiBvZiBJbW1lciB0aGUgcHJpZXN0LCB3aG8gd2FzIGFsc28gY2hpZWYgZ292ZXJub3IgaW4gdGhlIGhvdXNlIG9mIHRoZSBMT1JELCBoZWFyZCB0aGF0IEplcmVtaWFoIHByb3BoZXNpZWQgdGhlc2UgdGhpbmdzLgpUaGVuIFBhc2h1ciBzbW90ZSBKZXJlbWlhaCB0aGUgcHJvcGhldCwgYW5kIHB1dCBoaW0gaW4gdGhlIHN0b2NrcyB0aGF0IHdlcmUgaW4gdGhlIGhpZ2ggZ2F0ZSBvZiBCZW5qYW1pbiwgd2hpY2ggd2FzIGJ5IHRoZSBob3VzZSBvZiB0aGUgTE9SRC4KQW5kIGl0IGNhbWUgdG8gcGFzcyBvbiB0aGUgbW9ycm93LCB0aGF0IFBhc2h1ciBicm91Z2h0IGZvcnRoIEplcmVtaWFoIG91dCBvZiB0aGUgc3RvY2tzLiBUaGVuIHNhaWQgSmVyZW1pYWggdW50byBoaW0sIFRoZSBMT1JEIGhhdGggbm90IGNhbGxlZCB0aHkgbmFtZSBQYXNodXIsIGJ1dCBNYWdvcm1pc3NhYmliLgpGb3IgdGh1cyBzYWl0aCB0aGUgTE9SRCwgQmVob2xkLCBJIHdpbGwgbWFrZSB0aGVlIGEgdGVycm9yIHRvIHRoeXNlbGYsIGFuZCB0byBhbGwgdGh5IGZyaWVuZHM6IGFuZCB0aGV5IHNoYWxsIGZhbGwgYnkgdGhlIHN3b3JkIG9mIHRoZWlyIGVuZW1pZXMsIGFuZCB0aGluZSBleWVzIHNoYWxsIGJlaG9sZCBpdDogYW5kIEkgd2lsbCBnaXZlIGFsbCBKdWRhaCBpbnRvIHRoZSBoYW5kIG9mIHRoZSBraW5nIG9mIEJhYnlsb24sIGFuZCBoZSBzaGFsbCBjYXJyeSB0aGVtIGNhcHRpdmUgaW50byBCYWJ5bG9uLCBhbmQgc2hhbGwgc2xheSB0aGVtIHdpdGggdGhlIHN3b3JkLgpNb3Jlb3ZlciBJIHdpbGwgZGVsaXZlciBhbGwgdGhlIHN0cmVuZ3RoIG9mIHRoaXMgY2l0eSwgYW5kIGFsbCB0aGUgbGFib3VycyB0aGVyZW9mLCBhbmQgYWxsIHRoZSBwcmVjaW91cyB0aGluZ3MgdGhlcmVvZiwgYW5kIGFsbCB0aGUgdHJlYXN1cmVzIG9mIHRoZSBraW5ncyBvZiBKdWRhaCB3aWxsIEkgZ2l2ZSBpbnRvIHRoZSBoYW5kIG9mIHRoZWlyIGVuZW1pZXMsIHdoaWNoIHNoYWxsIHNwb2lsIHRoZW0sIGFuZCB0YWtlIHRoZW0sIGFuZCBjYXJyeSB0aGVtIHRvIEJhYnlsb24uCkFuZCB0aG91LCBQYXNodXIsIGFuZCBhbGwgdGhhdCBkd2VsbCBpbiB0aGluZSBob3VzZSBzaGFsbCBnbyBpbnRvIGNhcHRpdml0eTogYW5kIHRob3Ugc2hhbHQgY29tZSB0byBCYWJ5bG9uLCBhbmQgdGhlcmUgdGhvdSBzaGFsdCBkaWUsIGFuZCBzaGFsdCBiZSBidXJpZWQgdGhlcmUsIHRob3UsIGFuZCBhbGwgdGh5IGZyaWVuZHMsIHRvIHdob20gdGhvdSBoYXN0IHByb3BoZXNpZWQgbGllcy4KTyBMT1JELCB0aG91IGhhc3QgZGVjZWl2ZWQgbWUsIGFuZCBJIHdhcyBkZWNlaXZlZDsgdGhvdSBhcnQgc3Ryb25nZXIgdGhhbiBJLCBhbmQgaGFzdCBwcmV2YWlsZWQ6IEkgYW0gaW4gZGVyaXNpb24gZGFpbHksIGV2ZXJ5IG9uZSBtb2NrZXRoIG1lLgpGb3Igc2luY2UgSSBzcGFrZSwgSSBjcmllZCBvdXQsIEkgY3JpZWQgdmlvbGVuY2UgYW5kIHNwb2lsOyBiZWNhdXNlIHRoZSB3b3JkIG9mIHRoZSBMT1JEIHdhcyBtYWRlIGEgcmVwcm9hY2ggdW50byBtZSwgYW5kIGEgZGVyaXNpb24sIGRhaWx5LgpUaGVuIEkgc2FpZCwgSSB3aWxsIG5vdCBtYWtlIG1lbnRpb24gb2YgaGltLCBub3Igc3BlYWsgYW55IG1vcmUgaW4gaGlzIG5hbWUuIEJ1dCBoaXMgd29yZCB3YXMgaW4gbWluZSBoZWFydCBhcyBhIGJ1cm5pbmcgZmlyZSBzaHV0IHVwIGluIG15IGJvbmVzLCBhbmQgSSB3YXMgd2Vhcnkgd2l0aCBmb3JiZWFyaW5nLCBhbmQgSSBjb3VsZCBub3Qgc3RheS4KRm9yIEkgaGVhcmQgdGhlIGRlZmFtaW5nIG9mIG1hbnksIGZlYXIgb24gZXZlcnkgc2lkZS4gUmVwb3J0LCBzYXkgdGhleSwgYW5kIHdlIHdpbGwgcmVwb3J0IGl0LiBBbGwgbXkgZmFtaWxpYXJzIHdhdGNoZWQgZm9yIG15IGhhbHRpbmcsIHNheWluZywgUGVyYWR2ZW50dXJlIGhlIHdpbGwgYmUgZW50aWNlZCwgYW5kIHdlIHNoYWxsIHByZXZhaWwgYWdhaW5zdCBoaW0sIGFuZCB3ZSBzaGFsbCB0YWtlIG91ciByZXZlbmdlIG9uIGhpbS4KQnV0IHRoZSBMT1JEIGlzIHdpdGggbWUgYXMgYSBtaWdodHkgdGVycmlibGUgb25lOiB0aGVyZWZvcmUgbXkgcGVyc2VjdXRvcnMgc2hhbGwgc3R1bWJsZSwgYW5kIHRoZXkgc2hhbGwgbm90IHByZXZhaWw6IHRoZXkgc2hhbGwgYmUgZ3JlYXRseSBhc2hhbWVkOyBmb3IgdGhleSBzaGFsbCBub3QgcHJvc3BlcjogdGhlaXIgZXZlcmxhc3RpbmcgY29uZnVzaW9uIHNoYWxsIG5ldmVyIGJlIGZvcmdvdHRlbi4KQnV0LCBPIExPUkQgb2YgaG9zdHMsIHRoYXQgdHJpZXN0IHRoZSByaWdodGVvdXMsIGFuZCBzZWVzdCB0aGUgcmVpbnMgYW5kIHRoZSBoZWFydCwgbGV0IG1lIHNlZSB0aHkgdmVuZ2VhbmNlIG9uIHRoZW06IGZvciB1bnRvIHRoZWUgaGF2ZSBJIG9wZW5lZCBteSBjYXVzZS4KU2luZyB1bnRvIHRoZSBMT1JELCBwcmFpc2UgeWUgdGhlIExPUkQ6IGZvciBoZSBoYXRoIGRlbGl2ZXJlZCB0aGUgc291bCBvZiB0aGUgcG9vciBmcm9tIHRoZSBoYW5kIG9mIGV2aWxkb2Vycy4KQ3Vyc2VkIGJlIHRoZSBkYXkgd2hlcmVpbiBJIHdhcyBib3JuOiBsZXQgbm90IHRoZSBkYXkgd2hlcmVpbiBteSBtb3RoZXIgYmFyZSBtZSBiZSBibGVzc2VkLgpDdXJzZWQgYmUgdGhlIG1hbiB3aG8gYnJvdWdodCB0aWRpbmdzIHRvIG15IGZhdGhlciwgc2F5aW5nLCBBIG1hbiBjaGlsZCBpcyBib3JuIHVudG8gdGhlZTsgbWFraW5nIGhpbSB2ZXJ5IGdsYWQuCkFuZCBsZXQgdGhhdCBtYW4gYmUgYXMgdGhlIGNpdGllcyB3aGljaCB0aGUgTE9SRCBvdmVydGhyZXcsIGFuZCByZXBlbnRlZCBub3Q6IGFuZCBsZXQgaGltIGhlYXIgdGhlIGNyeSBpbiB0aGUgbW9ybmluZywgYW5kIHRoZSBzaG91dGluZyBhdCBub29udGlkZTsKQmVjYXVzZSBoZSBzbGV3IG1lIG5vdCBmcm9tIHRoZSB3b21iOyBvciB0aGF0IG15IG1vdGhlciBtaWdodCBoYXZlIGJlZW4gbXkgZ3JhdmUsIGFuZCBoZXIgd29tYiB0byBiZSBhbHdheXMgZ3JlYXQgd2l0aCBtZS4KV2hlcmVmb3JlIGNhbWUgSSBmb3J0aCBvdXQgb2YgdGhlIHdvbWIgdG8gc2VlIGxhYm91ciBhbmQgc29ycm93LCB0aGF0IG15IGRheXMgc2hvdWxkIGJlIGNvbnN1bWVkIHdpdGggc2hhbWU/ClRoZSB3b3JkIHdoaWNoIGNhbWUgdW50byBKZXJlbWlhaCBmcm9tIHRoZSBMT1JELCB3aGVuIGtpbmcgWmVkZWtpYWggc2VudCB1bnRvIGhpbSBQYXNodXIgdGhlIHNvbiBvZiBNZWxjaGlhaCwgYW5kIFplcGhhbmlhaCB0aGUgc29uIG9mIE1hYXNlaWFoIHRoZSBwcmllc3QsIHNheWluZywKRW5xdWlyZSwgSSBwcmF5IHRoZWUsIG9mIHRoZSBMT1JEIGZvciB1czsgZm9yIE5lYnVjaGFkcmV6emFyIGtpbmcgb2YgQmFieWxvbiBtYWtldGggd2FyIGFnYWluc3QgdXM7IGlmIHNvIGJlIHRoYXQgdGhlIExPUkQgd2lsbCBkZWFsIHdpdGggdXMgYWNjb3JkaW5nIHRvIGFsbCBoaXMgd29uZHJvdXMgd29ya3MsIHRoYXQgaGUgbWF5IGdvIHVwIGZyb20gdXMuClRoZW4gc2FpZCBKZXJlbWlhaCB1bnRvIHRoZW0sIFRodXMgc2hhbGwgeWUgc2F5IHRvIFplZGVraWFoOgpUaHVzIHNhaXRoIHRoZSBMT1JEIEdvZCBvZiBJc3JhZWw7IEJlaG9sZCwgSSB3aWxsIHR1cm4gYmFjayB0aGUgd2VhcG9ucyBvZiB3YXIgdGhhdCBhcmUgaW4geW91ciBoYW5kcywgd2hlcmV3aXRoIHllIGZpZ2h0IGFnYWluc3QgdGhlIGtpbmcgb2YgQmFieWxvbiwgYW5kIGFnYWluc3QgdGhlIENoYWxkZWFucywgd2hpY2ggYmVzaWVnZSB5b3Ugd2l0aG91dCB0aGUgd2FsbHMsIGFuZCBJIHdpbGwgYXNzZW1ibGUgdGhlbSBpbnRvIHRoZSBtaWRzdCBvZiB0aGlzIGNpdHkuCkFuZCBJIG15c2VsZiB3aWxsIGZpZ2h0IGFnYWluc3QgeW91IHdpdGggYW4gb3V0c3RyZXRjaGVkIGhhbmQgYW5kIHdpdGggYSBzdHJvbmcgYXJtLCBldmVuIGluIGFuZ2VyLCBhbmQgaW4gZnVyeSwgYW5kIGluIGdyZWF0IHdyYXRoLgpBbmQgSSB3aWxsIHNtaXRlIHRoZSBpbmhhYml0YW50cyBvZiB0aGlzIGNpdHksIGJvdGggbWFuIGFuZCBiZWFzdDogdGhleSBzaGFsbCBkaWUgb2YgYSBncmVhdCBwZXN0aWxlbmNlLgpBbmQgYWZ0ZXJ3YXJkLCBzYWl0aCB0aGUgTE9SRCwgSSB3aWxsIGRlbGl2ZXIgWmVkZWtpYWgga2luZyBvZiBKdWRhaCwgYW5kIGhpcyBzZXJ2YW50cywgYW5kIHRoZSBwZW9wbGUsIGFuZCBzdWNoIGFzIGFyZSBsZWZ0IGluIHRoaXMgY2l0eSBmcm9tIHRoZSBwZXN0aWxlbmNlLCBmcm9tIHRoZSBzd29yZCwgYW5kIGZyb20gdGhlIGZhbWluZSwgaW50byB0aGUgaGFuZCBvZiBOZWJ1Y2hhZHJlenphciBraW5nIG9mIEJhYnlsb24sIGFuZCBpbnRvIHRoZSBoYW5kIG9mIHRoZWlyIGVuZW1pZXMsIGFuZCBpbnRvIHRoZSBoYW5kIG9mIHRob3NlIHRoYXQgc2VlayB0aGVpciBsaWZlOiBhbmQgaGUgc2hhbGwgc21pdGUgdGhlbSB3aXRoIHRoZSBlZGdlIG9mIHRoZSBzd29yZDsgaGUgc2hhbGwgbm90IHNwYXJlIHRoZW0sIG5laXRoZXIgaGF2ZSBwaXR5LCBub3IgaGF2ZSBtZXJjeS4KQW5kIHVudG8gdGhpcyBwZW9wbGUgdGhvdSBzaGFsdCBzYXksIFRodXMgc2FpdGggdGhlIExPUkQ7IEJlaG9sZCwgSSBzZXQgYmVmb3JlIHlvdSB0aGUgd2F5IG9mIGxpZmUsIGFuZCB0aGUgd2F5IG9mIGRlYXRoLgpIZSB0aGF0IGFiaWRldGggaW4gdGhpcyBjaXR5IHNoYWxsIGRpZSBieSB0aGUgc3dvcmQsIGFuZCBieSB0aGUgZmFtaW5lLCBhbmQgYnkgdGhlIHBlc3RpbGVuY2U6IGJ1dCBoZSB0aGF0IGdvZXRoIG91dCwgYW5kIGZhbGxldGggdG8gdGhlIENoYWxkZWFucyB0aGF0IGJlc2llZ2UgeW91LCBoZSBzaGFsbCBsaXZlLCBhbmQgaGlzIGxpZmUgc2hhbGwgYmUgdW50byBoaW0gZm9yIGEgcHJleS4KRm9yIEkgaGF2ZSBzZXQgbXkgZmFjZSBhZ2FpbnN0IHRoaXMgY2l0eSBmb3IgZXZpbCwgYW5kIG5vdCBmb3IgZ29vZCwgc2FpdGggdGhlIExPUkQ6IGl0IHNoYWxsIGJlIGdpdmVuIGludG8gdGhlIGhhbmQgb2YgdGhlIGtpbmcgb2YgQmFieWxvbiwgYW5kIGhlIHNoYWxsIGJ1cm4gaXQgd2l0aCBmaXJlLgpBbmQgdG91Y2hpbmcgdGhlIGhvdXNlIG9mIHRoZSBraW5nIG9mIEp1ZGFoLCBzYXksIEhlYXIgeWUgdGhlIHdvcmQgb2YgdGhlIExPUkQ7Ck8gaG91c2Ugb2YgRGF2aWQsIHRodXMgc2FpdGggdGhlIExPUkQ7IEV4ZWN1dGUganVkZ21lbnQgaW4gdGhlIG1vcm5pbmcsIGFuZCBkZWxpdmVyIGhpbSB0aGF0IGlzIHNwb2lsZWQgb3V0IG9mIHRoZSBoYW5kIG9mIHRoZSBvcHByZXNzb3IsIGxlc3QgbXkgZnVyeSBnbyBvdXQgbGlrZSBmaXJlLCBhbmQgYnVybiB0aGF0IG5vbmUgY2FuIHF1ZW5jaCBpdCwgYmVjYXVzZSBvZiB0aGUgZXZpbCBvZiB5b3VyIGRvaW5ncy4KQmVob2xkLCBJIGFtIGFnYWluc3QgdGhlZSwgTyBpbmhhYml0YW50IG9mIHRoZSB2YWxsZXksIGFuZCByb2NrIG9mIHRoZSBwbGFpbiwgc2FpdGggdGhlIExPUkQ7IHdoaWNoIHNheSwgV2hvIHNoYWxsIGNvbWUgZG93biBhZ2FpbnN0IHVzPyBvciB3aG8gc2hhbGwgZW50ZXIgaW50byBvdXIgaGFiaXRhdGlvbnM/CkJ1dCBJIHdpbGwgcHVuaXNoIHlvdSBhY2NvcmRpbmcgdG8gdGhlIGZydWl0IG9mIHlvdXIgZG9pbmdzLCBzYWl0aCB0aGUgTE9SRDogYW5kIEkgd2lsbCBraW5kbGUgYSBmaXJlIGluIHRoZSBmb3Jlc3QgdGhlcmVvZiwgYW5kIGl0IHNoYWxsIGRldm91ciBhbGwgdGhpbmdzIHJvdW5kIGFib3V0IGl0LgpUaHVzIHNhaXRoIHRoZSBMT1JEOyBHbyBkb3duIHRvIHRoZSBob3VzZSBvZiB0aGUga2luZyBvZiBKdWRhaCwgYW5kIHNwZWFrIHRoZXJlIHRoaXMgd29yZCwKQW5kIHNheSwgSGVhciB0aGUgd29yZCBvZiB0aGUgTE9SRCwgTyBraW5nIG9mIEp1ZGFoLCB0aGF0IHNpdHRlc3QgdXBvbiB0aGUgdGhyb25lIG9mIERhdmlkLCB0aG91LCBhbmQgdGh5IHNlcnZhbnRzLCBhbmQgdGh5IHBlb3BsZSB0aGF0IGVudGVyIGluIGJ5IHRoZXNlIGdhdGVzOgpUaHVzIHNhaXRoIHRoZSBMT1JEOyBFeGVjdXRlIHllIGp1ZGdtZW50IGFuZCByaWdodGVvdXNuZXNzLCBhbmQgZGVsaXZlciB0aGUgc3BvaWxlZCBvdXQgb2YgdGhlIGhhbmQgb2YgdGhlIG9wcHJlc3NvcjogYW5kIGRvIG5vIHdyb25nLCBkbyBubyB2aW9sZW5jZSB0byB0aGUgc3RyYW5nZXIsIHRoZSBmYXRoZXJsZXNzLCBub3IgdGhlIHdpZG93LCBuZWl0aGVyIHNoZWQgaW5ub2NlbnQgYmxvb2QgaW4gdGhpcyBwbGFjZS4KRm9yIGlmIHllIGRvIHRoaXMgdGhpbmcgaW5kZWVkLCB0aGVuIHNoYWxsIHRoZXJlIGVudGVyIGluIGJ5IHRoZSBnYXRlcyBvZiB0aGlzIGhvdXNlIGtpbmdzIHNpdHRpbmcgdXBvbiB0aGUgdGhyb25lIG9mIERhdmlkLCByaWRpbmcgaW4gY2hhcmlvdHMgYW5kIG9uIGhvcnNlcywgaGUsIGFuZCBoaXMgc2VydmFudHMsIGFuZCBoaXMgcGVvcGxlLgpCdXQgaWYgeWUgd2lsbCBub3QgaGVhciB0aGVzZSB3b3JkcywgSSBzd2VhciBieSBteXNlbGYsIHNhaXRoIHRoZSBMT1JELCB0aGF0IHRoaXMgaG91c2Ugc2hhbGwgYmVjb21lIGEgZGVzb2xhdGlvbi4KRm9yIHRodXMgc2FpdGggdGhlIExPUkQgdW50byB0aGUga2luZydzIGhvdXNlIG9mIEp1ZGFoOyBUaG91IGFydCBHaWxlYWQgdW50byBtZSwgYW5kIHRoZSBoZWFkIG9mIExlYmFub246IHlldCBzdXJlbHkgSSB3aWxsIG1ha2UgdGhlZSBhIHdpbGRlcm5lc3MsIGFuZCBjaXRpZXMgd2hpY2ggYXJlIG5vdCBpbmhhYml0ZWQuCkFuZCBJIHdpbGwgcHJlcGFyZSBkZXN0cm95ZXJzIGFnYWluc3QgdGhlZSwgZXZlcnkgb25lIHdpdGggaGlzIHdlYXBvbnM6IGFuZCB0aGV5IHNoYWxsIGN1dCBkb3duIHRoeSBjaG9pY2UgY2VkYXJzLCBhbmQgY2FzdCB0aGVtIGludG8gdGhlIGZpcmUuCkFuZCBtYW55IG5hdGlvbnMgc2hhbGwgcGFzcyBieSB0aGlzIGNpdHksIGFuZCB0aGV5IHNoYWxsIHNheSBldmVyeSBtYW4gdG8gaGlzIG5laWdoYm91ciwgV2hlcmVmb3JlIGhhdGggdGhlIExPUkQgZG9uZSB0aHVzIHVudG8gdGhpcyBncmVhdCBjaXR5PwpUaGVuIHRoZXkgc2hhbGwgYW5zd2VyLCBCZWNhdXNlIHRoZXkgaGF2ZSBmb3JzYWtlbiB0aGUgY292ZW5hbnQgb2YgdGhlIExPUkQgdGhlaXIgR29kLCBhbmQgd29yc2hpcHBlZCBvdGhlciBnb2RzLCBhbmQgc2VydmVkIHRoZW0uCldlZXAgeWUgbm90IGZvciB0aGUgZGVhZCwgbmVpdGhlciBiZW1vYW4gaGltOiBidXQgd2VlcCBzb3JlIGZvciBoaW0gdGhhdCBnb2V0aCBhd2F5OiBmb3IgaGUgc2hhbGwgcmV0dXJuIG5vIG1vcmUsIG5vciBzZWUgaGlzIG5hdGl2ZSBjb3VudHJ5LgpGb3IgdGh1cyBzYWl0aCB0aGUgTE9SRCB0b3VjaGluZyBTaGFsbHVtIHRoZSBzb24gb2YgSm9zaWFoIGtpbmcgb2YgSnVkYWgsIHdoaWNoIHJlaWduZWQgaW5zdGVhZCBvZiBKb3NpYWggaGlzIGZhdGhlciwgd2hpY2ggd2VudCBmb3J0aCBvdXQgb2YgdGhpcyBwbGFjZTsgSGUgc2hhbGwgbm90IHJldHVybiB0aGl0aGVyIGFueSBtb3JlOgpCdXQgaGUgc2hhbGwgZGllIGluIHRoZSBwbGFjZSB3aGl0aGVyIHRoZXkgaGF2ZSBsZWQgaGltIGNhcHRpdmUsIGFuZCBzaGFsbCBzZWUgdGhpcyBsYW5kIG5vIG1vcmUuCldvZSB1bnRvIGhpbSB0aGF0IGJ1aWxkZXRoIGhpcyBob3VzZSBieSB1bnJpZ2h0ZW91c25lc3MsIGFuZCBoaXMgY2hhbWJlcnMgYnkgd3Jvbmc7IHRoYXQgdXNldGggaGlzIG5laWdoYm91cidzIHNlcnZpY2Ugd2l0aG91dCB3YWdlcywgYW5kIGdpdmV0aCBoaW0gbm90IGZvciBoaXMgd29yazsKVGhhdCBzYWl0aCwgSSB3aWxsIGJ1aWxkIG1lIGEgd2lkZSBob3VzZSBhbmQgbGFyZ2UgY2hhbWJlcnMsIGFuZCBjdXR0ZXRoIGhpbSBvdXQgd2luZG93czsgYW5kIGl0IGlzIGNpZWxlZCB3aXRoIGNlZGFyLCBhbmQgcGFpbnRlZCB3aXRoIHZlcm1pbGlvbi4KU2hhbHQgdGhvdSByZWlnbiwgYmVjYXVzZSB0aG91IGNsb3Nlc3QgdGh5c2VsZiBpbiBjZWRhcj8gZGlkIG5vdCB0aHkgZmF0aGVyIGVhdCBhbmQgZHJpbmssIGFuZCBkbyBqdWRnbWVudCBhbmQganVzdGljZSwgYW5kIHRoZW4gaXQgd2FzIHdlbGwgd2l0aCBoaW0/CkhlIGp1ZGdlZCB0aGUgY2F1c2Ugb2YgdGhlIHBvb3IgYW5kIG5lZWR5OyB0aGVuIGl0IHdhcyB3ZWxsIHdpdGggaGltOiB3YXMgbm90IHRoaXMgdG8ga25vdyBtZT8gc2FpdGggdGhlIExPUkQuCkJ1dCB0aGluZSBleWVzIGFuZCB0aGluZSBoZWFydCBhcmUgbm90IGJ1dCBmb3IgdGh5IGNvdmV0b3VzbmVzcywgYW5kIGZvciB0byBzaGVkIGlubm9jZW50IGJsb29kLCBhbmQgZm9yIG9wcHJlc3Npb24sIGFuZCBmb3IgdmlvbGVuY2UsIHRvIGRvIGl0LgpUaGVyZWZvcmUgdGh1cyBzYWl0aCB0aGUgTE9SRCBjb25jZXJuaW5nIEplaG9pYWtpbSB0aGUgc29uIG9mIEpvc2lhaCBraW5nIG9mIEp1ZGFoOyBUaGV5IHNoYWxsIG5vdCBsYW1lbnQgZm9yIGhpbSwgc2F5aW5nLCBBaCBteSBicm90aGVyISBvciwgQWggc2lzdGVyISB0aGV5IHNoYWxsIG5vdCBsYW1lbnQgZm9yIGhpbSwgc2F5aW5nLCBBaCBsb3JkISBvciwgQWggaGlzIGdsb3J5IQpIZSBzaGFsbCBiZSBidXJpZWQgd2l0aCB0aGUgYnVyaWFsIG9mIGFuIGFzcywgZHJhd24gYW5kIGNhc3QgZm9ydGggYmV5b25kIHRoZSBnYXRlcyBvZiBKZXJ1c2FsZW0uCkdvIHVwIHRvIExlYmFub24sIGFuZCBjcnk7IGFuZCBsaWZ0IHVwIHRoeSB2b2ljZSBpbiBCYXNoYW4sIGFuZCBjcnkgZnJvbSB0aGUgcGFzc2FnZXM6IGZvciBhbGwgdGh5IGxvdmVycyBhcmUgZGVzdHJveWVkLgpJIHNwYWtlIHVudG8gdGhlZSBpbiB0aHkgcHJvc3Blcml0eTsgYnV0IHRob3Ugc2FpZHN0LCBJIHdpbGwgbm90IGhlYXIuIFRoaXMgaGF0aCBiZWVuIHRoeSBtYW5uZXIgZnJvbSB0aHkgeW91dGgsIHRoYXQgdGhvdSBvYmV5ZWRzdCBub3QgbXkgdm9pY2UuClRoZSB3aW5kIHNoYWxsIGVhdCB1cCBhbGwgdGh5IHBhc3RvcnMsIGFuZCB0aHkgbG92ZXJzIHNoYWxsIGdvIGludG8gY2FwdGl2aXR5OiBzdXJlbHkgdGhlbiBzaGFsdCB0aG91IGJlIGFzaGFtZWQgYW5kIGNvbmZvdW5kZWQgZm9yIGFsbCB0aHkgd2lja2VkbmVzcy4KTyBpbmhhYml0YW50IG9mIExlYmFub24sIHRoYXQgbWFrZXN0IHRoeSBuZXN0IGluIHRoZSBjZWRhcnMsIGhvdyBncmFjaW91cyBzaGFsdCB0aG91IGJlIHdoZW4gcGFuZ3MgY29tZSB1cG9uIHRoZWUsIHRoZSBwYWluIGFzIG9mIGEgd29tYW4gaW4gdHJhdmFpbCEKQXMgSSBsaXZlLCBzYWl0aCB0aGUgTE9SRCwgdGhvdWdoIENvbmlhaCB0aGUgc29uIG9mIEplaG9pYWtpbSBraW5nIG9mIEp1ZGFoIHdlcmUgdGhlIHNpZ25ldCB1cG9uIG15IHJpZ2h0IGhhbmQsIHlldCB3b3VsZCBJIHBsdWNrIHRoZWUgdGhlbmNlOwpBbmQgSSB3aWxsIGdpdmUgdGhlZSBpbnRvIHRoZSBoYW5kIG9mIHRoZW0gdGhhdCBzZWVrIHRoeSBsaWZlLCBhbmQgaW50byB0aGUgaGFuZCBvZiB0aGVtIHdob3NlIGZhY2UgdGhvdSBmZWFyZXN0LCBldmVuIGludG8gdGhlIGhhbmQgb2YgTmVidWNoYWRyZXp6YXIga2luZyBvZiBCYWJ5bG9uLCBhbmQgaW50byB0aGUgaGFuZCBvZiB0aGUgQ2hhbGRlYW5zLgpBbmQgSSB3aWxsIGNhc3QgdGhlZSBvdXQsIGFuZCB0aHkgbW90aGVyIHRoYXQgYmFyZSB0aGVlLCBpbnRvIGFub3RoZXIgY291bnRyeSwgd2hlcmUgeWUgd2VyZSBub3QgYm9ybjsgYW5kIHRoZXJlIHNoYWxsIHllIGRpZS4KQnV0IHRvIHRoZSBsYW5kIHdoZXJldW50byB0aGV5IGRlc2lyZSB0byByZXR1cm4sIHRoaXRoZXIgc2hhbGwgdGhleSBub3QgcmV0dXJuLgpJcyB0aGlzIG1hbiBDb25pYWggYSBkZXNwaXNlZCBicm9rZW4gaWRvbD8gaXMgaGUgYSB2ZXNzZWwgd2hlcmVpbiBpcyBubyBwbGVhc3VyZT8gd2hlcmVmb3JlIGFyZSB0aGV5IGNhc3Qgb3V0LCBoZSBhbmQgaGlzIHNlZWQsIGFuZCBhcmUgY2FzdCBpbnRvIGEgbGFuZCB3aGljaCB0aGV5IGtub3cgbm90PwpPIGVhcnRoLCBlYXJ0aCwgZWFydGgsIGhlYXIgdGhlIHdvcmQgb2YgdGhlIExPUkQuClRodXMgc2FpdGggdGhlIExPUkQsIFdyaXRlIHllIHRoaXMgbWFuIGNoaWxkbGVzcywgYSBtYW4gdGhhdCBzaGFsbCBub3QgcHJvc3BlciBpbiBoaXMgZGF5czogZm9yIG5vIG1hbiBvZiBoaXMgc2VlZCBzaGFsbCBwcm9zcGVyLCBzaXR0aW5nIHVwb24gdGhlIHRocm9uZSBvZiBEYXZpZCwgYW5kIHJ1bGluZyBhbnkgbW9yZSBpbiBKdWRhaC4KV29lIGJlIHVudG8gdGhlIHBhc3RvcnMgdGhhdCBkZXN0cm95IGFuZCBzY2F0dGVyIHRoZSBzaGVlcCBvZiBteSBwYXN0dXJlISBzYWl0aCB0aGUgTE9SRC4KVGhlcmVmb3JlIHRodXMgc2FpdGggdGhlIExPUkQgR29kIG9mIElzcmFlbCBhZ2FpbnN0IHRoZSBwYXN0b3JzIHRoYXQgZmVlZCBteSBwZW9wbGU7IFllIGhhdmUgc2NhdHRlcmVkIG15IGZsb2NrLCBhbmQgZHJpdmVuIHRoZW0gYXdheSwgYW5kIGhhdmUgbm90IHZpc2l0ZWQgdGhlbTogYmVob2xkLCBJIHdpbGwgdmlzaXQgdXBvbiB5b3UgdGhlIGV2aWwgb2YgeW91ciBkb2luZ3MsIHNhaXRoIHRoZSBMT1JELgpBbmQgSSB3aWxsIGdhdGhlciB0aGUgcmVtbmFudCBvZiBteSBmbG9jayBvdXQgb2YgYWxsIGNvdW50cmllcyB3aGl0aGVyIEkgaGF2ZSBkcml2ZW4gdGhlbSwgYW5kIHdpbGwgYnJpbmcgdGhlbSBhZ2FpbiB0byB0aGVpciBmb2xkczsgYW5kIHRoZXkgc2hhbGwgYmUgZnJ1aXRmdWwgYW5kIGluY3JlYXNlLgpBbmQgSSB3aWxsIHNldCB1cCBzaGVwaGVyZHMgb3ZlciB0aGVtIHdoaWNoIHNoYWxsIGZlZWQgdGhlbTogYW5kIHRoZXkgc2hhbGwgZmVhciBubyBtb3JlLCBub3IgYmUgZGlzbWF5ZWQsIG5laXRoZXIgc2hhbGwgdGhleSBiZSBsYWNraW5nLCBzYWl0aCB0aGUgTE9SRC4KQmVob2xkLCB0aGUgZGF5cyBjb21lLCBzYWl0aCB0aGUgTE9SRCwgdGhhdCBJIHdpbGwgcmFpc2UgdW50byBEYXZpZCBhIHJpZ2h0ZW91cyBCcmFuY2gsIGFuZCBhIEtpbmcgc2hhbGwgcmVpZ24gYW5kIHByb3NwZXIsIGFuZCBzaGFsbCBleGVjdXRlIGp1ZGdtZW50IGFuZCBqdXN0aWNlIGluIHRoZSBlYXJ0aC4KSW4gaGlzIGRheXMgSnVkYWggc2hhbGwgYmUgc2F2ZWQsIGFuZCBJc3JhZWwgc2hhbGwgZHdlbGwgc2FmZWx5OiBhbmQgdGhpcyBpcyBoaXMgbmFtZSB3aGVyZWJ5IGhlIHNoYWxsIGJlIGNhbGxlZCwgVEhFIExPUkQgT1VSIFJJR0hURU9VU05FU1MuClRoZXJlZm9yZSwgYmVob2xkLCB0aGUgZGF5cyBjb21lLCBzYWl0aCB0aGUgTE9SRCwgdGhhdCB0aGV5IHNoYWxsIG5vIG1vcmUgc2F5LCBUaGUgTE9SRCBsaXZldGgsIHdoaWNoIGJyb3VnaHQgdXAgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBvdXQgb2YgdGhlIGxhbmQgb2YgRWd5cHQ7CkJ1dCwgVGhlIExPUkQgbGl2ZXRoLCB3aGljaCBicm91Z2h0IHVwIGFuZCB3aGljaCBsZWQgdGhlIHNlZWQgb2YgdGhlIGhvdXNlIG9mIElzcmFlbCBvdXQgb2YgdGhlIG5vcnRoIGNvdW50cnksIGFuZCBmcm9tIGFsbCBjb3VudHJpZXMgd2hpdGhlciBJIGhhZCBkcml2ZW4gdGhlbTsgYW5kIHRoZXkgc2hhbGwgZHdlbGwgaW4gdGhlaXIgb3duIGxhbmQuCk1pbmUgaGVhcnQgd2l0aGluIG1lIGlzIGJyb2tlbiBiZWNhdXNlIG9mIHRoZSBwcm9waGV0czsgYWxsIG15IGJvbmVzIHNoYWtlOyBJIGFtIGxpa2UgYSBkcnVua2VuIG1hbiwgYW5kIGxpa2UgYSBtYW4gd2hvbSB3aW5lIGhhdGggb3ZlcmNvbWUsIGJlY2F1c2Ugb2YgdGhlIExPUkQsIGFuZCBiZWNhdXNlIG9mIHRoZSB3b3JkcyBvZiBoaXMgaG9saW5lc3MuCkZvciB0aGUgbGFuZCBpcyBmdWxsIG9mIGFkdWx0ZXJlcnM7IGZvciBiZWNhdXNlIG9mIHN3ZWFyaW5nIHRoZSBsYW5kIG1vdXJuZXRoOyB0aGUgcGxlYXNhbnQgcGxhY2VzIG9mIHRoZSB3aWxkZXJuZXNzIGFyZSBkcmllZCB1cCwgYW5kIHRoZWlyIGNvdXJzZSBpcyBldmlsLCBhbmQgdGhlaXIgZm9yY2UgaXMgbm90IHJpZ2h0LgpGb3IgYm90aCBwcm9waGV0IGFuZCBwcmllc3QgYXJlIHByb2ZhbmU7IHllYSwgaW4gbXkgaG91c2UgaGF2ZSBJIGZvdW5kIHRoZWlyIHdpY2tlZG5lc3MsIHNhaXRoIHRoZSBMT1JELgpXaGVyZWZvcmUgdGhlaXIgd2F5IHNoYWxsIGJlIHVudG8gdGhlbSBhcyBzbGlwcGVyeSB3YXlzIGluIHRoZSBkYXJrbmVzczogdGhleSBzaGFsbCBiZSBkcml2ZW4gb24sIGFuZCBmYWxsIHRoZXJlaW46IGZvciBJIHdpbGwgYnJpbmcgZXZpbCB1cG9uIHRoZW0sIGV2ZW4gdGhlIHllYXIgb2YgdGhlaXIgdmlzaXRhdGlvbiwgc2FpdGggdGhlIExPUkQuCkFuZCBJIGhhdmUgc2VlbiBmb2xseSBpbiB0aGUgcHJvcGhldHMgb2YgU2FtYXJpYTsgdGhleSBwcm9waGVzaWVkIGluIEJhYWwsIGFuZCBjYXVzZWQgbXkgcGVvcGxlIElzcmFlbCB0byBlcnIuCkkgaGF2ZSBzZWVuIGFsc28gaW4gdGhlIHByb3BoZXRzIG9mIEplcnVzYWxlbSBhbiBob3JyaWJsZSB0aGluZzogdGhleSBjb21taXQgYWR1bHRlcnksIGFuZCB3YWxrIGluIGxpZXM6IHRoZXkgc3RyZW5ndGhlbiBhbHNvIHRoZSBoYW5kcyBvZiBldmlsZG9lcnMsIHRoYXQgbm9uZSBkb3RoIHJldHVybiBmcm9tIGhpcyB3aWNrZWRuZXNzOyB0aGV5IGFyZSBhbGwgb2YgdGhlbSB1bnRvIG1lIGFzIFNvZG9tLCBhbmQgdGhlIGluaGFiaXRhbnRzIHRoZXJlb2YgYXMgR29tb3JyYWguClRoZXJlZm9yZSB0aHVzIHNhaXRoIHRoZSBMT1JEIG9mIGhvc3RzIGNvbmNlcm5pbmcgdGhlIHByb3BoZXRzOyBCZWhvbGQsIEkgd2lsbCBmZWVkIHRoZW0gd2l0aCB3b3Jtd29vZCwgYW5kIG1ha2UgdGhlbSBkcmluayB0aGUgd2F0ZXIgb2YgZ2FsbDogZm9yIGZyb20gdGhlIHByb3BoZXRzIG9mIEplcnVzYWxlbSBpcyBwcm9mYW5lbmVzcyBnb25lIGZvcnRoIGludG8gYWxsIHRoZSBsYW5kLgpUaHVzIHNhaXRoIHRoZSBMT1JEIG9mIGhvc3RzLCBIZWFya2VuIG5vdCB1bnRvIHRoZSB3b3JkcyBvZiB0aGUgcHJvcGhldHMgdGhhdCBwcm9waGVzeSB1bnRvIHlvdTogdGhleSBtYWtlIHlvdSB2YWluOiB0aGV5IHNwZWFrIGEgdmlzaW9uIG9mIHRoZWlyIG93biBoZWFydCwgYW5kIG5vdCBvdXQgb2YgdGhlIG1vdXRoIG9mIHRoZSBMT1JELgpUaGV5IHNheSBzdGlsbCB1bnRvIHRoZW0gdGhhdCBkZXNwaXNlIG1lLCBUaGUgTE9SRCBoYXRoIHNhaWQsIFllIHNoYWxsIGhhdmUgcGVhY2U7IGFuZCB0aGV5IHNheSB1bnRvIGV2ZXJ5IG9uZSB0aGF0IHdhbGtldGggYWZ0ZXIgdGhlIGltYWdpbmF0aW9uIG9mIGhpcyBvd24gaGVhcnQsIE5vIGV2aWwgc2hhbGwgY29tZSB1cG9uIHlvdS4KRm9yIHdobyBoYXRoIHN0b29kIGluIHRoZSBjb3Vuc2VsIG9mIHRoZSBMT1JELCBhbmQgaGF0aCBwZXJjZWl2ZWQgYW5kIGhlYXJkIGhpcyB3b3JkPyB3aG8gaGF0aCBtYXJrZWQgaGlzIHdvcmQsIGFuZCBoZWFyZCBpdD8KQmVob2xkLCBhIHdoaXJsd2luZCBvZiB0aGUgTE9SRCBpcyBnb25lIGZvcnRoIGluIGZ1cnksIGV2ZW4gYSBncmlldm91cyB3aGlybHdpbmQ6IGl0IHNoYWxsIGZhbGwgZ3JpZXZvdXNseSB1cG9uIHRoZSBoZWFkIG9mIHRoZSB3aWNrZWQuClRoZSBhbmdlciBvZiB0aGUgTE9SRCBzaGFsbCBub3QgcmV0dXJuLCB1bnRpbCBoZSBoYXZlIGV4ZWN1dGVkLCBhbmQgdGlsbCBoZSBoYXZlIHBlcmZvcm1lZCB0aGUgdGhvdWdodHMgb2YgaGlzIGhlYXJ0OiBpbiB0aGUgbGF0dGVyIGRheXMgeWUgc2hhbGwgY29uc2lkZXIgaXQgcGVyZmVjdGx5LgpJIGhhdmUgbm90IHNlbnQgdGhlc2UgcHJvcGhldHMsIHlldCB0aGV5IHJhbjogSSBoYXZlIG5vdCBzcG9rZW4gdG8gdGhlbSwgeWV0IHRoZXkgcHJvcGhlc2llZC4KQnV0IGlmIHRoZXkgaGFkIHN0b29kIGluIG15IGNvdW5zZWwsIGFuZCBoYWQgY2F1c2VkIG15IHBlb3BsZSB0byBoZWFyIG15IHdvcmRzLCB0aGVuIHRoZXkgc2hvdWxkIGhhdmUgdHVybmVkIHRoZW0gZnJvbSB0aGVpciBldmlsIHdheSwgYW5kIGZyb20gdGhlIGV2aWwgb2YgdGhlaXIgZG9pbmdzLgpBbSBJIGEgR29kIGF0IGhhbmQsIHNhaXRoIHRoZSBMT1JELCBhbmQgbm90IGEgR29kIGFmYXIgb2ZmPwpDYW4gYW55IGhpZGUgaGltc2VsZiBpbiBzZWNyZXQgcGxhY2VzIHRoYXQgSSBzaGFsbCBub3Qgc2VlIGhpbT8gc2FpdGggdGhlIExPUkQuIERvIG5vdCBJIGZpbGwgaGVhdmVuIGFuZCBlYXJ0aD8gc2FpdGggdGhlIExPUkQuCkkgaGF2ZSBoZWFyZCB3aGF0IHRoZSBwcm9waGV0cyBzYWlkLCB0aGF0IHByb3BoZXN5IGxpZXMgaW4gbXkgbmFtZSwgc2F5aW5nLCBJIGhhdmUgZHJlYW1lZCwgSSBoYXZlIGRyZWFtZWQuCkhvdyBsb25nIHNoYWxsIHRoaXMgYmUgaW4gdGhlIGhlYXJ0IG9mIHRoZSBwcm9waGV0cyB0aGF0IHByb3BoZXN5IGxpZXM/IHllYSwgdGhleSBhcmUgcHJvcGhldHMgb2YgdGhlIGRlY2VpdCBvZiB0aGVpciBvd24gaGVhcnQ7CldoaWNoIHRoaW5rIHRvIGNhdXNlIG15IHBlb3BsZSB0byBmb3JnZXQgbXkgbmFtZSBieSB0aGVpciBkcmVhbXMgd2hpY2ggdGhleSB0ZWxsIGV2ZXJ5IG1hbiB0byBoaXMgbmVpZ2hib3VyLCBhcyB0aGVpciBmYXRoZXJzIGhhdmUgZm9yZ290dGVuIG15IG5hbWUgZm9yIEJhYWwuClRoZSBwcm9waGV0IHRoYXQgaGF0aCBhIGRyZWFtLCBsZXQgaGltIHRlbGwgYSBkcmVhbTsgYW5kIGhlIHRoYXQgaGF0aCBteSB3b3JkLCBsZXQgaGltIHNwZWFrIG15IHdvcmQgZmFpdGhmdWxseS4gV2hhdCBpcyB0aGUgY2hhZmYgdG8gdGhlIHdoZWF0PyBzYWl0aCB0aGUgTE9SRC4KSXMgbm90IG15IHdvcmQgbGlrZSBhcyBhIGZpcmU/IHNhaXRoIHRoZSBMT1JEOyBhbmQgbGlrZSBhIGhhbW1lciB0aGF0IGJyZWFrZXRoIHRoZSByb2NrIGluIHBpZWNlcz8KVGhlcmVmb3JlLCBiZWhvbGQsIEkgYW0gYWdhaW5zdCB0aGUgcHJvcGhldHMsIHNhaXRoIHRoZSBMT1JELCB0aGF0IHN0ZWFsIG15IHdvcmRzIGV2ZXJ5IG9uZSBmcm9tIGhpcyBuZWlnaGJvdXIuCkJlaG9sZCwgSSBhbSBhZ2FpbnN0IHRoZSBwcm9waGV0cywgc2FpdGggdGhlIExPUkQsIHRoYXQgdXNlIHRoZWlyIHRvbmd1ZXMsIGFuZCBzYXksIEhlIHNhaXRoLgpCZWhvbGQsIEkgYW0gYWdhaW5zdCB0aGVtIHRoYXQgcHJvcGhlc3kgZmFsc2UgZHJlYW1zLCBzYWl0aCB0aGUgTE9SRCwgYW5kIGRvIHRlbGwgdGhlbSwgYW5kIGNhdXNlIG15IHBlb3BsZSB0byBlcnIgYnkgdGhlaXIgbGllcywgYW5kIGJ5IHRoZWlyIGxpZ2h0bmVzczsgeWV0IEkgc2VudCB0aGVtIG5vdCwgbm9yIGNvbW1hbmRlZCB0aGVtOiB0aGVyZWZvcmUgdGhleSBzaGFsbCBub3QgcHJvZml0IHRoaXMgcGVvcGxlIGF0IGFsbCwgc2FpdGggdGhlIExPUkQuCkFuZCB3aGVuIHRoaXMgcGVvcGxlLCBvciB0aGUgcHJvcGhldCwgb3IgYSBwcmllc3QsIHNoYWxsIGFzayB0aGVlLCBzYXlpbmcsIFdoYXQgaXMgdGhlIGJ1cmRlbiBvZiB0aGUgTE9SRD8gdGhvdSBzaGFsdCB0aGVuIHNheSB1bnRvIHRoZW0sIFdoYXQgYnVyZGVuPyBJIHdpbGwgZXZlbiBmb3JzYWtlIHlvdSwgc2FpdGggdGhlIExPUkQuCkFuZCBhcyBmb3IgdGhlIHByb3BoZXQsIGFuZCB0aGUgcHJpZXN0LCBhbmQgdGhlIHBlb3BsZSwgdGhhdCBzaGFsbCBzYXksIFRoZSBidXJkZW4gb2YgdGhlIExPUkQsIEkgd2lsbCBldmVuIHB1bmlzaCB0aGF0IG1hbiBhbmQgaGlzIGhvdXNlLgpUaHVzIHNoYWxsIHllIHNheSBldmVyeSBvbmUgdG8gaGlzIG5laWdoYm91ciwgYW5kIGV2ZXJ5IG9uZSB0byBoaXMgYnJvdGhlciwgV2hhdCBoYXRoIHRoZSBMT1JEIGFuc3dlcmVkPyBhbmQsIFdoYXQgaGF0aCB0aGUgTE9SRCBzcG9rZW4/CkFuZCB0aGUgYnVyZGVuIG9mIHRoZSBMT1JEIHNoYWxsIHllIG1lbnRpb24gbm8gbW9yZTogZm9yIGV2ZXJ5IG1hbidzIHdvcmQgc2hhbGwgYmUgaGlzIGJ1cmRlbjsgZm9yIHllIGhhdmUgcGVydmVydGVkIHRoZSB3b3JkcyBvZiB0aGUgbGl2aW5nIEdvZCwgb2YgdGhlIExPUkQgb2YgaG9zdHMgb3VyIEdvZC4KVGh1cyBzaGFsdCB0aG91IHNheSB0byB0aGUgcHJvcGhldCwgV2hhdCBoYXRoIHRoZSBMT1JEIGFuc3dlcmVkIHRoZWU/IGFuZCwgV2hhdCBoYXRoIHRoZSBMT1JEIHNwb2tlbj8KQnV0IHNpbmNlIHllIHNheSwgVGhlIGJ1cmRlbiBvZiB0aGUgTE9SRDsgdGhlcmVmb3JlIHRodXMgc2FpdGggdGhlIExPUkQ7IEJlY2F1c2UgeWUgc2F5IHRoaXMgd29yZCwgVGhlIGJ1cmRlbiBvZiB0aGUgTE9SRCwgYW5kIEkgaGF2ZSBzZW50IHVudG8geW91LCBzYXlpbmcsIFllIHNoYWxsIG5vdCBzYXksIFRoZSBidXJkZW4gb2YgdGhlIExPUkQ7ClRoZXJlZm9yZSwgYmVob2xkLCBJLCBldmVuIEksIHdpbGwgdXR0ZXJseSBmb3JnZXQgeW91LCBhbmQgSSB3aWxsIGZvcnNha2UgeW91LCBhbmQgdGhlIGNpdHkgdGhhdCBJIGdhdmUgeW91IGFuZCB5b3VyIGZhdGhlcnMsIGFuZCBjYXN0IHlvdSBvdXQgb2YgbXkgcHJlc2VuY2U6CkFuZCBJIHdpbGwgYnJpbmcgYW4gZXZlcmxhc3RpbmcgcmVwcm9hY2ggdXBvbiB5b3UsIGFuZCBhIHBlcnBldHVhbCBzaGFtZSwgd2hpY2ggc2hhbGwgbm90IGJlIGZvcmdvdHRlbi4KVGhlIExPUkQgc2hld2VkIG1lLCBhbmQsIGJlaG9sZCwgdHdvIGJhc2tldHMgb2YgZmlncyB3ZXJlIHNldCBiZWZvcmUgdGhlIHRlbXBsZSBvZiB0aGUgTE9SRCwgYWZ0ZXIgdGhhdCBOZWJ1Y2hhZHJlenphciBraW5nIG9mIEJhYnlsb24gaGFkIGNhcnJpZWQgYXdheSBjYXB0aXZlIEplY29uaWFoIHRoZSBzb24gb2YgSmVob2lha2ltIGtpbmcgb2YgSnVkYWgsIGFuZCB0aGUgcHJpbmNlcyBvZiBKdWRhaCwgd2l0aCB0aGUgY2FycGVudGVycyBhbmQgc21pdGhzLCBmcm9tIEplcnVzYWxlbSwgYW5kIGhhZCBicm91Z2h0IHRoZW0gdG8gQmFieWxvbi4KT25lIGJhc2tldCBoYWQgdmVyeSBnb29kIGZpZ3MsIGV2ZW4gbGlrZSB0aGUgZmlncyB0aGF0IGFyZSBmaXJzdCByaXBlOiBhbmQgdGhlIG90aGVyIGJhc2tldCBoYWQgdmVyeSBuYXVnaHR5IGZpZ3MsIHdoaWNoIGNvdWxkIG5vdCBiZSBlYXRlbiwgdGhleSB3ZXJlIHNvIGJhZC4KVGhlbiBzYWlkIHRoZSBMT1JEIHVudG8gbWUsIFdoYXQgc2Vlc3QgdGhvdSwgSmVyZW1pYWg/IEFuZCBJIHNhaWQsIEZpZ3M7IHRoZSBnb29kIGZpZ3MsIHZlcnkgZ29vZDsgYW5kIHRoZSBldmlsLCB2ZXJ5IGV2aWwsIHRoYXQgY2Fubm90IGJlIGVhdGVuLCB0aGV5IGFyZSBzbyBldmlsLgpBZ2FpbiB0aGUgd29yZCBvZiB0aGUgTE9SRCBjYW1lIHVudG8gbWUsIHNheWluZywKVGh1cyBzYWl0aCB0aGUgTE9SRCwgdGhlIEdvZCBvZiBJc3JhZWw7IExpa2UgdGhlc2UgZ29vZCBmaWdzLCBzbyB3aWxsIEkgYWNrbm93bGVkZ2UgdGhlbSB0aGF0IGFyZSBjYXJyaWVkIGF3YXkgY2FwdGl2ZSBvZiBKdWRhaCwgd2hvbSBJIGhhdmUgc2VudCBvdXQgb2YgdGhpcyBwbGFjZSBpbnRvIHRoZSBsYW5kIG9mIHRoZSBDaGFsZGVhbnMgZm9yIHRoZWlyIGdvb2QuCkZvciBJIHdpbGwgc2V0IG1pbmUgZXllcyB1cG9uIHRoZW0gZm9yIGdvb2QsIGFuZCBJIHdpbGwgYnJpbmcgdGhlbSBhZ2FpbiB0byB0aGlzIGxhbmQ6IGFuZCBJIHdpbGwgYnVpbGQgdGhlbSwgYW5kIG5vdCBwdWxsIHRoZW0gZG93bjsgYW5kIEkgd2lsbCBwbGFudCB0aGVtLCBhbmQgbm90IHBsdWNrIHRoZW0gdXAuCkFuZCBJIHdpbGwgZ2l2ZSB0aGVtIGFuIGhlYXJ0IHRvIGtub3cgbWUsIHRoYXQgSSBhbSB0aGUgTE9SRDogYW5kIHRoZXkgc2hhbGwgYmUgbXkgcGVvcGxlLCBhbmQgSSB3aWxsIGJlIHRoZWlyIEdvZDogZm9yIHRoZXkgc2hhbGwgcmV0dXJuIHVudG8gbWUgd2l0aCB0aGVpciB3aG9sZSBoZWFydC4KQW5kIGFzIHRoZSBldmlsIGZpZ3MsIHdoaWNoIGNhbm5vdCBiZSBlYXRlbiwgdGhleSBhcmUgc28gZXZpbDsgc3VyZWx5IHRodXMgc2FpdGggdGhlIExPUkQsIFNvIHdpbGwgSSBnaXZlIFplZGVraWFoIHRoZSBraW5nIG9mIEp1ZGFoLCBhbmQgaGlzIHByaW5jZXMsIGFuZCB0aGUgcmVzaWR1ZSBvZiBKZXJ1c2FsZW0sIHRoYXQgcmVtYWluIGluIHRoaXMgbGFuZCwgYW5kIHRoZW0gdGhhdCBkd2VsbCBpbiB0aGUgbGFuZCBvZiBFZ3lwdDoKQW5kIEkgd2lsbCBkZWxpdmVyIHRoZW0gdG8gYmUgcmVtb3ZlZCBpbnRvIGFsbCB0aGUga2luZ2RvbXMgb2YgdGhlIGVhcnRoIGZvciB0aGVpciBodXJ0LCB0byBiZSBhIHJlcHJvYWNoIGFuZCBhIHByb3ZlcmIsIGEgdGF1bnQgYW5kIGEgY3Vyc2UsIGluIGFsbCBwbGFjZXMgd2hpdGhlciBJIHNoYWxsIGRyaXZlIHRoZW0uCkFuZCBJIHdpbGwgc2VuZCB0aGUgc3dvcmQsIHRoZSBmYW1pbmUsIGFuZCB0aGUgcGVzdGlsZW5jZSwgYW1vbmcgdGhlbSwgdGlsbCB0aGV5IGJlIGNvbnN1bWVkIGZyb20gb2ZmIHRoZSBsYW5kIHRoYXQgSSBnYXZlIHVudG8gdGhlbSBhbmQgdG8gdGhlaXIgZmF0aGVycy4KVGhlIHdvcmQgdGhhdCBjYW1lIHRvIEplcmVtaWFoIGNvbmNlcm5pbmcgYWxsIHRoZSBwZW9wbGUgb2YgSnVkYWggaW4gdGhlIGZvdXJ0aCB5ZWFyIG9mIEplaG9pYWtpbSB0aGUgc29uIG9mIEpvc2lhaCBraW5nIG9mIEp1ZGFoLCB0aGF0IHdhcyB0aGUgZmlyc3QgeWVhciBvZiBOZWJ1Y2hhZHJlenphciBraW5nIG9mIEJhYnlsb247ClRoZSB3aGljaCBKZXJlbWlhaCB0aGUgcHJvcGhldCBzcGFrZSB1bnRvIGFsbCB0aGUgcGVvcGxlIG9mIEp1ZGFoLCBhbmQgdG8gYWxsIHRoZSBpbmhhYml0YW50cyBvZiBKZXJ1c2FsZW0sIHNheWluZywKRnJvbSB0aGUgdGhpcnRlZW50aCB5ZWFyIG9mIEpvc2lhaCB0aGUgc29uIG9mIEFtb24ga2luZyBvZiBKdWRhaCwgZXZlbiB1bnRvIHRoaXMgZGF5LCB0aGF0IGlzIHRoZSB0aHJlZSBhbmQgdHdlbnRpZXRoIHllYXIsIHRoZSB3b3JkIG9mIHRoZSBMT1JEIGhhdGggY29tZSB1bnRvIG1lLCBhbmQgSSBoYXZlIHNwb2tlbiB1bnRvIHlvdSwgcmlzaW5nIGVhcmx5IGFuZCBzcGVha2luZzsgYnV0IHllIGhhdmUgbm90IGhlYXJrZW5lZC4KQW5kIHRoZSBMT1JEIGhhdGggc2VudCB1bnRvIHlvdSBhbGwgaGlzIHNlcnZhbnRzIHRoZSBwcm9waGV0cywgcmlzaW5nIGVhcmx5IGFuZCBzZW5kaW5nIHRoZW07IGJ1dCB5ZSBoYXZlIG5vdCBoZWFya2VuZWQsIG5vciBpbmNsaW5lZCB5b3VyIGVhciB0byBoZWFyLgpUaGV5IHNhaWQsIFR1cm4geWUgYWdhaW4gbm93IGV2ZXJ5IG9uZSBmcm9tIGhpcyBldmlsIHdheSwgYW5kIGZyb20gdGhlIGV2aWwgb2YgeW91ciBkb2luZ3MsIGFuZCBkd2VsbCBpbiB0aGUgbGFuZCB0aGF0IHRoZSBMT1JEIGhhdGggZ2l2ZW4gdW50byB5b3UgYW5kIHRvIHlvdXIgZmF0aGVycyBmb3IgZXZlciBhbmQgZXZlcjoKQW5kIGdvIG5vdCBhZnRlciBvdGhlciBnb2RzIHRvIHNlcnZlIHRoZW0sIGFuZCB0byB3b3JzaGlwIHRoZW0sIGFuZCBwcm92b2tlIG1lIG5vdCB0byBhbmdlciB3aXRoIHRoZSB3b3JrcyBvZiB5b3VyIGhhbmRzOyBhbmQgSSB3aWxsIGRvIHlvdSBubyBodXJ0LgpZZXQgeWUgaGF2ZSBub3QgaGVhcmtlbmVkIHVudG8gbWUsIHNhaXRoIHRoZSBMT1JEOyB0aGF0IHllIG1pZ2h0IHByb3Zva2UgbWUgdG8gYW5nZXIgd2l0aCB0aGUgd29ya3Mgb2YgeW91ciBoYW5kcyB0byB5b3VyIG93biBodXJ0LgpUaGVyZWZvcmUgdGh1cyBzYWl0aCB0aGUgTE9SRCBvZiBob3N0czsgQmVjYXVzZSB5ZSBoYXZlIG5vdCBoZWFyZCBteSB3b3JkcywKQmVob2xkLCBJIHdpbGwgc2VuZCBhbmQgdGFrZSBhbGwgdGhlIGZhbWlsaWVzIG9mIHRoZSBub3J0aCwgc2FpdGggdGhlIExPUkQsIGFuZCBOZWJ1Y2hhZHJlenphciB0aGUga2luZyBvZiBCYWJ5bG9uLCBteSBzZXJ2YW50LCBhbmQgd2lsbCBicmluZyB0aGVtIGFnYWluc3QgdGhpcyBsYW5kLCBhbmQgYWdhaW5zdCB0aGUgaW5oYWJpdGFudHMgdGhlcmVvZiwgYW5kIGFnYWluc3QgYWxsIHRoZXNlIG5hdGlvbnMgcm91bmQgYWJvdXQsIGFuZCB3aWxsIHV0dGVybHkgZGVzdHJveSB0aGVtLCBhbmQgbWFrZSB0aGVtIGFuIGFzdG9uaXNobWVudCwgYW5kIGFuIGhpc3NpbmcsIGFuZCBwZXJwZXR1YWwgZGVzb2xhdGlvbnMuCk1vcmVvdmVyIEkgd2lsbCB0YWtlIGZyb20gdGhlbSB0aGUgdm9pY2Ugb2YgbWlydGgsIGFuZCB0aGUgdm9pY2Ugb2YgZ2xhZG5lc3MsIHRoZSB2b2ljZSBvZiB0aGUgYnJpZGVncm9vbSwgYW5kIHRoZSB2b2ljZSBvZiB0aGUgYnJpZGUsIHRoZSBzb3VuZCBvZiB0aGUgbWlsbHN0b25lcywgYW5kIHRoZSBsaWdodCBvZiB0aGUgY2FuZGxlLgpBbmQgdGhpcyB3aG9sZSBsYW5kIHNoYWxsIGJlIGEgZGVzb2xhdGlvbiwgYW5kIGFuIGFzdG9uaXNobWVudDsgYW5kIHRoZXNlIG5hdGlvbnMgc2hhbGwgc2VydmUgdGhlIGtpbmcgb2YgQmFieWxvbiBzZXZlbnR5IHllYXJzLgpBbmQgaXQgc2hhbGwgY29tZSB0byBwYXNzLCB3aGVuIHNldmVudHkgeWVhcnMgYXJlIGFjY29tcGxpc2hlZCwgdGhhdCBJIHdpbGwgcHVuaXNoIHRoZSBraW5nIG9mIEJhYnlsb24sIGFuZCB0aGF0IG5hdGlvbiwgc2FpdGggdGhlIExPUkQsIGZvciB0aGVpciBpbmlxdWl0eSwgYW5kIHRoZSBsYW5kIG9mIHRoZSBDaGFsZGVhbnMsIGFuZCB3aWxsIG1ha2UgaXQgcGVycGV0dWFsIGRlc29sYXRpb25zLgpBbmQgSSB3aWxsIGJyaW5nIHVwb24gdGhhdCBsYW5kIGFsbCBteSB3b3JkcyB3aGljaCBJIGhhdmUgcHJvbm91bmNlZCBhZ2FpbnN0IGl0LCBldmVuIGFsbCB0aGF0IGlzIHdyaXR0ZW4gaW4gdGhpcyBib29rLCB3aGljaCBKZXJlbWlhaCBoYXRoIHByb3BoZXNpZWQgYWdhaW5zdCBhbGwgdGhlIG5hdGlvbnMuCkZvciBtYW55IG5hdGlvbnMgYW5kIGdyZWF0IGtpbmdzIHNoYWxsIHNlcnZlIHRoZW1zZWx2ZXMgb2YgdGhlbSBhbHNvOiBhbmQgSSB3aWxsIHJlY29tcGVuc2UgdGhlbSBhY2NvcmRpbmcgdG8gdGhlaXIgZGVlZHMsIGFuZCBhY2NvcmRpbmcgdG8gdGhlIHdvcmtzIG9mIHRoZWlyIG93biBoYW5kcy4KRm9yIHRodXMgc2FpdGggdGhlIExPUkQgR29kIG9mIElzcmFlbCB1bnRvIG1lOyBUYWtlIHRoZSB3aW5lIGN1cCBvZiB0aGlzIGZ1cnkgYXQgbXkgaGFuZCwgYW5kIGNhdXNlIGFsbCB0aGUgbmF0aW9ucywgdG8gd2hvbSBJIHNlbmQgdGhlZSwgdG8gZHJpbmsgaXQuCkFuZCB0aGV5IHNoYWxsIGRyaW5rLCBhbmQgYmUgbW92ZWQsIGFuZCBiZSBtYWQsIGJlY2F1c2Ugb2YgdGhlIHN3b3JkIHRoYXQgSSB3aWxsIHNlbmQgYW1vbmcgdGhlbS4KVGhlbiB0b29rIEkgdGhlIGN1cCBhdCB0aGUgTE9SRCdzIGhhbmQsIGFuZCBtYWRlIGFsbCB0aGUgbmF0aW9ucyB0byBkcmluaywgdW50byB3aG9tIHRoZSBMT1JEIGhhZCBzZW50IG1lOgpUbyB3aXQsIEplcnVzYWxlbSwgYW5kIHRoZSBjaXRpZXMgb2YgSnVkYWgsIGFuZCB0aGUga2luZ3MgdGhlcmVvZiwgYW5kIHRoZSBwcmluY2VzIHRoZXJlb2YsIHRvIG1ha2UgdGhlbSBhIGRlc29sYXRpb24sIGFuIGFzdG9uaXNobWVudCwgYW4gaGlzc2luZywgYW5kIGEgY3Vyc2U7IGFzIGl0IGlzIHRoaXMgZGF5OwpQaGFyYW9oIGtpbmcgb2YgRWd5cHQsIGFuZCBoaXMgc2VydmFudHMsIGFuZCBoaXMgcHJpbmNlcywgYW5kIGFsbCBoaXMgcGVvcGxlOwpBbmQgYWxsIHRoZSBtaW5nbGVkIHBlb3BsZSwgYW5kIGFsbCB0aGUga2luZ3Mgb2YgdGhlIGxhbmQgb2YgVXosIGFuZCBhbGwgdGhlIGtpbmdzIG9mIHRoZSBsYW5kIG9mIHRoZSBQaGlsaXN0aW5lcywgYW5kIEFzaGtlbG9uLCBhbmQgQXp6YWgsIGFuZCBFa3JvbiwgYW5kIHRoZSByZW1uYW50IG9mIEFzaGRvZCwKRWRvbSwgYW5kIE1vYWIsIGFuZCB0aGUgY2hpbGRyZW4gb2YgQW1tb24sCkFuZCBhbGwgdGhlIGtpbmdzIG9mIFR5cnVzLCBhbmQgYWxsIHRoZSBraW5ncyBvZiBaaWRvbiwgYW5kIHRoZSBraW5ncyBvZiB0aGUgaXNsZXMgd2hpY2ggYXJlIGJleW9uZCB0aGUgc2VhLApEZWRhbiwgYW5kIFRlbWEsIGFuZCBCdXosIGFuZCBhbGwgdGhhdCBhcmUgaW4gdGhlIHV0bW9zdCBjb3JuZXJzLApBbmQgYWxsIHRoZSBraW5ncyBvZiBBcmFiaWEsIGFuZCBhbGwgdGhlIGtpbmdzIG9mIHRoZSBtaW5nbGVkIHBlb3BsZSB0aGF0IGR3ZWxsIGluIHRoZSBkZXNlcnQsCkFuZCBhbGwgdGhlIGtpbmdzIG9mIFppbXJpLCBhbmQgYWxsIHRoZSBraW5ncyBvZiBFbGFtLCBhbmQgYWxsIHRoZSBraW5ncyBvZiB0aGUgTWVkZXMsCkFuZCBhbGwgdGhlIGtpbmdzIG9mIHRoZSBub3J0aCwgZmFyIGFuZCBuZWFyLCBvbmUgd2l0aCBhbm90aGVyLCBhbmQgYWxsIHRoZSBraW5nZG9tcyBvZiB0aGUgd29ybGQsIHdoaWNoIGFyZSB1cG9uIHRoZSBmYWNlIG9mIHRoZSBlYXJ0aDogYW5kIHRoZSBraW5nIG9mIFNoZXNoYWNoIHNoYWxsIGRyaW5rIGFmdGVyIHRoZW0uClRoZXJlZm9yZSB0aG91IHNoYWx0IHNheSB1bnRvIHRoZW0sIFRodXMgc2FpdGggdGhlIExPUkQgb2YgaG9zdHMsIHRoZSBHb2Qgb2YgSXNyYWVsOyBEcmluayB5ZSwgYW5kIGJlIGRydW5rZW4sIGFuZCBzcHVlLCBhbmQgZmFsbCwgYW5kIHJpc2Ugbm8gbW9yZSwgYmVjYXVzZSBvZiB0aGUgc3dvcmQgd2hpY2ggSSB3aWxsIHNlbmQgYW1vbmcgeW91LgpBbmQgaXQgc2hhbGwgYmUsIGlmIHRoZXkgcmVmdXNlIHRvIHRha2UgdGhlIGN1cCBhdCB0aGluZSBoYW5kIHRvIGRyaW5rLCB0aGVuIHNoYWx0IHRob3Ugc2F5IHVudG8gdGhlbSwgVGh1cyBzYWl0aCB0aGUgTE9SRCBvZiBob3N0czsgWWUgc2hhbGwgY2VydGFpbmx5IGRyaW5rLgpGb3IsIGxvLCBJIGJlZ2luIHRvIGJyaW5nIGV2aWwgb24gdGhlIGNpdHkgd2hpY2ggaXMgY2FsbGVkIGJ5IG15IG5hbWUsIGFuZCBzaG91bGQgeWUgYmUgdXR0ZXJseSB1bnB1bmlzaGVkPyBZZSBzaGFsbCBub3QgYmUgdW5wdW5pc2hlZDogZm9yIEkgd2lsbCBjYWxsIGZvciBhIHN3b3JkIHVwb24gYWxsIHRoZSBpbmhhYml0YW50cyBvZiB0aGUgZWFydGgsIHNhaXRoIHRoZSBMT1JEIG9mIGhvc3RzLgpUaGVyZWZvcmUgcHJvcGhlc3kgdGhvdSBhZ2FpbnN0IHRoZW0gYWxsIHRoZXNlIHdvcmRzLCBhbmQgc2F5IHVudG8gdGhlbSwgVGhlIExPUkQgc2hhbGwgcm9hciBmcm9tIG9uIGhpZ2gsIGFuZCB1dHRlciBoaXMgdm9pY2UgZnJvbSBoaXMgaG9seSBoYWJpdGF0aW9uOyBoZSBzaGFsbCBtaWdodGlseSByb2FyIHVwb24gaGlzIGhhYml0YXRpb247IGhlIHNoYWxsIGdpdmUgYSBzaG91dCwgYXMgdGhleSB0aGF0IHRyZWFkIHRoZSBncmFwZXMsIGFnYWluc3QgYWxsIHRoZSBpbmhhYml0YW50cyBvZiB0aGUgZWFydGguCkEgbm9pc2Ugc2hhbGwgY29tZSBldmVuIHRvIHRoZSBlbmRzIG9mIHRoZSBlYXJ0aDsgZm9yIHRoZSBMT1JEIGhhdGggYSBjb250cm92ZXJzeSB3aXRoIHRoZSBuYXRpb25zLCBoZSB3aWxsIHBsZWFkIHdpdGggYWxsIGZsZXNoOyBoZSB3aWxsIGdpdmUgdGhlbSB0aGF0IGFyZSB3aWNrZWQgdG8gdGhlIHN3b3JkLCBzYWl0aCB0aGUgTE9SRC4KVGh1cyBzYWl0aCB0aGUgTE9SRCBvZiBob3N0cywgQmVob2xkLCBldmlsIHNoYWxsIGdvIGZvcnRoIGZyb20gbmF0aW9uIHRvIG5hdGlvbiwgYW5kIGEgZ3JlYXQgd2hpcmx3aW5kIHNoYWxsIGJlIHJhaXNlZCB1cCBmcm9tIHRoZSBjb2FzdHMgb2YgdGhlIGVhcnRoLgpBbmQgdGhlIHNsYWluIG9mIHRoZSBMT1JEIHNoYWxsIGJlIGF0IHRoYXQgZGF5IGZyb20gb25lIGVuZCBvZiB0aGUgZWFydGggZXZlbiB1bnRvIHRoZSBvdGhlciBlbmQgb2YgdGhlIGVhcnRoOiB0aGV5IHNoYWxsIG5vdCBiZSBsYW1lbnRlZCwgbmVpdGhlciBnYXRoZXJlZCwgbm9yIGJ1cmllZDsgdGhleSBzaGFsbCBiZSBkdW5nIHVwb24gdGhlIGdyb3VuZC4KSG93bCwgeWUgc2hlcGhlcmRzLCBhbmQgY3J5OyBhbmQgd2FsbG93IHlvdXJzZWx2ZXMgaW4gdGhlIGFzaGVzLCB5ZSBwcmluY2lwYWwgb2YgdGhlIGZsb2NrOiBmb3IgdGhlIGRheXMgb2YgeW91ciBzbGF1Z2h0ZXIgYW5kIG9mIHlvdXIgZGlzcGVyc2lvbnMgYXJlIGFjY29tcGxpc2hlZDsgYW5kIHllIHNoYWxsIGZhbGwgbGlrZSBhIHBsZWFzYW50IHZlc3NlbC4KQW5kIHRoZSBzaGVwaGVyZHMgc2hhbGwgaGF2ZSBubyB3YXkgdG8gZmxlZSwgbm9yIHRoZSBwcmluY2lwYWwgb2YgdGhlIGZsb2NrIHRvIGVzY2FwZS4KQSB2b2ljZSBvZiB0aGUgY3J5IG9mIHRoZSBzaGVwaGVyZHMsIGFuZCBhbiBob3dsaW5nIG9mIHRoZSBwcmluY2lwYWwgb2YgdGhlIGZsb2NrLCBzaGFsbCBiZSBoZWFyZDogZm9yIHRoZSBMT1JEIGhhdGggc3BvaWxlZCB0aGVpciBwYXN0dXJlLgpBbmQgdGhlIHBlYWNlYWJsZSBoYWJpdGF0aW9ucyBhcmUgY3V0IGRvd24gYmVjYXVzZSBvZiB0aGUgZmllcmNlIGFuZ2VyIG9mIHRoZSBMT1JELgpIZSBoYXRoIGZvcnNha2VuIGhpcyBjb3ZlcnQsIGFzIHRoZSBsaW9uOiBmb3IgdGhlaXIgbGFuZCBpcyBkZXNvbGF0ZSBiZWNhdXNlIG9mIHRoZSBmaWVyY2VuZXNzIG9mIHRoZSBvcHByZXNzb3IsIGFuZCBiZWNhdXNlIG9mIGhpcyBmaWVyY2UgYW5nZXIuCkluIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHJlaWduIG9mIEplaG9pYWtpbSB0aGUgc29uIG9mIEpvc2lhaCBraW5nIG9mIEp1ZGFoIGNhbWUgdGhpcyB3b3JkIGZyb20gdGhlIExPUkQsIHNheWluZywKVGh1cyBzYWl0aCB0aGUgTE9SRDsgU3RhbmQgaW4gdGhlIGNvdXJ0IG9mIHRoZSBMT1JEJ3MgaG91c2UsIGFuZCBzcGVhayB1bnRvIGFsbCB0aGUgY2l0aWVzIG9mIEp1ZGFoLCB3aGljaCBjb21lIHRvIHdvcnNoaXAgaW4gdGhlIExPUkQncyBob3VzZSwgYWxsIHRoZSB3b3JkcyB0aGF0IEkgY29tbWFuZCB0aGVlIHRvIHNwZWFrIHVudG8gdGhlbTsgZGltaW5pc2ggbm90IGEgd29yZDoKSWYgc28gYmUgdGhleSB3aWxsIGhlYXJrZW4sIGFuZCB0dXJuIGV2ZXJ5IG1hbiBmcm9tIGhpcyBldmlsIHdheSwgdGhhdCBJIG1heSByZXBlbnQgbWUgb2YgdGhlIGV2aWwsIHdoaWNoIEkgcHVycG9zZSB0byBkbyB1bnRvIHRoZW0gYmVjYXVzZSBvZiB0aGUgZXZpbCBvZiB0aGVpciBkb2luZ3MuCkFuZCB0aG91IHNoYWx0IHNheSB1bnRvIHRoZW0sIFRodXMgc2FpdGggdGhlIExPUkQ7IElmIHllIHdpbGwgbm90IGhlYXJrZW4gdG8gbWUsIHRvIHdhbGsgaW4gbXkgbGF3LCB3aGljaCBJIGhhdmUgc2V0IGJlZm9yZSB5b3UsClRvIGhlYXJrZW4gdG8gdGhlIHdvcmRzIG9mIG15IHNlcnZhbnRzIHRoZSBwcm9waGV0cywgd2hvbSBJIHNlbnQgdW50byB5b3UsIGJvdGggcmlzaW5nIHVwIGVhcmx5LCBhbmQgc2VuZGluZyB0aGVtLCBidXQgeWUgaGF2ZSBub3QgaGVhcmtlbmVkOwpUaGVuIHdpbGwgSSBtYWtlIHRoaXMgaG91c2UgbGlrZSBTaGlsb2gsIGFuZCB3aWxsIG1ha2UgdGhpcyBjaXR5IGEgY3Vyc2UgdG8gYWxsIHRoZSBuYXRpb25zIG9mIHRoZSBlYXJ0aC4KU28gdGhlIHByaWVzdHMgYW5kIHRoZSBwcm9waGV0cyBhbmQgYWxsIHRoZSBwZW9wbGUgaGVhcmQgSmVyZW1pYWggc3BlYWtpbmcgdGhlc2Ugd29yZHMgaW4gdGhlIGhvdXNlIG9mIHRoZSBMT1JELgpOb3cgaXQgY2FtZSB0byBwYXNzLCB3aGVuIEplcmVtaWFoIGhhZCBtYWRlIGFuIGVuZCBvZiBzcGVha2luZyBhbGwgdGhhdCB0aGUgTE9SRCBoYWQgY29tbWFuZGVkIGhpbSB0byBzcGVhayB1bnRvIGFsbCB0aGUgcGVvcGxlLCB0aGF0IHRoZSBwcmllc3RzIGFuZCB0aGUgcHJvcGhldHMgYW5kIGFsbCB0aGUgcGVvcGxlIHRvb2sgaGltLCBzYXlpbmcsIFRob3Ugc2hhbHQgc3VyZWx5IGRpZS4KV2h5IGhhc3QgdGhvdSBwcm9waGVzaWVkIGluIHRoZSBuYW1lIG9mIHRoZSBMT1JELCBzYXlpbmcsIFRoaXMgaG91c2Ugc2hhbGwgYmUgbGlrZSBTaGlsb2gsIGFuZCB0aGlzIGNpdHkgc2hhbGwgYmUgZGVzb2xhdGUgd2l0aG91dCBhbiBpbmhhYml0YW50PyBBbmQgYWxsIHRoZSBwZW9wbGUgd2VyZSBnYXRoZXJlZCBhZ2FpbnN0IEplcmVtaWFoIGluIHRoZSBob3VzZSBvZiB0aGUgTE9SRC4KV2hlbiB0aGUgcHJpbmNlcyBvZiBKdWRhaCBoZWFyZCB0aGVzZSB0aGluZ3MsIHRoZW4gdGhleSBjYW1lIHVwIGZyb20gdGhlIGtpbmcncyBob3VzZSB1bnRvIHRoZSBob3VzZSBvZiB0aGUgTE9SRCwgYW5kIHNhdCBkb3duIGluIHRoZSBlbnRyeSBvZiB0aGUgbmV3IGdhdGUgb2YgdGhlIExPUkQncyBob3VzZS4KVGhlbiBzcGFrZSB0aGUgcHJpZXN0cyBhbmQgdGhlIHByb3BoZXRzIHVudG8gdGhlIHByaW5jZXMgYW5kIHRvIGFsbCB0aGUgcGVvcGxlLCBzYXlpbmcsIFRoaXMgbWFuIGlzIHdvcnRoeSB0byBkaWU7IGZvciBoZSBoYXRoIHByb3BoZXNpZWQgYWdhaW5zdCB0aGlzIGNpdHksIGFzIHllIGhhdmUgaGVhcmQgd2l0aCB5b3VyIGVhcnMuClRoZW4gc3Bha2UgSmVyZW1pYWggdW50byBhbGwgdGhlIHByaW5jZXMgYW5kIHRvIGFsbCB0aGUgcGVvcGxlLCBzYXlpbmcsIFRoZSBMT1JEIHNlbnQgbWUgdG8gcHJvcGhlc3kgYWdhaW5zdCB0aGlzIGhvdXNlIGFuZCBhZ2FpbnN0IHRoaXMgY2l0eSBhbGwgdGhlIHdvcmRzIHRoYXQgeWUgaGF2ZSBoZWFyZC4KVGhlcmVmb3JlIG5vdyBhbWVuZCB5b3VyIHdheXMgYW5kIHlvdXIgZG9pbmdzLCBhbmQgb2JleSB0aGUgdm9pY2Ugb2YgdGhlIExPUkQgeW91ciBHb2Q7IGFuZCB0aGUgTE9SRCB3aWxsIHJlcGVudCBoaW0gb2YgdGhlIGV2aWwgdGhhdCBoZSBoYXRoIHByb25vdW5jZWQgYWdhaW5zdCB5b3UuCkFzIGZvciBtZSwgYmVob2xkLCBJIGFtIGluIHlvdXIgaGFuZDogZG8gd2l0aCBtZSBhcyBzZWVtZXRoIGdvb2QgYW5kIG1lZXQgdW50byB5b3UuCkJ1dCBrbm93IHllIGZvciBjZXJ0YWluLCB0aGF0IGlmIHllIHB1dCBtZSB0byBkZWF0aCwgeWUgc2hhbGwgc3VyZWx5IGJyaW5nIGlubm9jZW50IGJsb29kIHVwb24geW91cnNlbHZlcywgYW5kIHVwb24gdGhpcyBjaXR5LCBhbmQgdXBvbiB0aGUgaW5oYWJpdGFudHMgdGhlcmVvZjogZm9yIG9mIGEgdHJ1dGggdGhlIExPUkQgaGF0aCBzZW50IG1lIHVudG8geW91IHRvIHNwZWFrIGFsbCB0aGVzZSB3b3JkcyBpbiB5b3VyIGVhcnMuClRoZW4gc2FpZCB0aGUgcHJpbmNlcyBhbmQgYWxsIHRoZSBwZW9wbGUgdW50byB0aGUgcHJpZXN0cyBhbmQgdG8gdGhlIHByb3BoZXRzOyBUaGlzIG1hbiBpcyBub3Qgd29ydGh5IHRvIGRpZTogZm9yIGhlIGhhdGggc3Bva2VuIHRvIHVzIGluIHRoZSBuYW1lIG9mIHRoZSBMT1JEIG91ciBHb2QuClRoZW4gcm9zZSB1cCBjZXJ0YWluIG9mIHRoZSBlbGRlcnMgb2YgdGhlIGxhbmQsIGFuZCBzcGFrZSB0byBhbGwgdGhlIGFzc2VtYmx5IG9mIHRoZSBwZW9wbGUsIHNheWluZywKTWljYWggdGhlIE1vcmFzdGhpdGUgcHJvcGhlc2llZCBpbiB0aGUgZGF5cyBvZiBIZXpla2lhaCBraW5nIG9mIEp1ZGFoLCBhbmQgc3Bha2UgdG8gYWxsIHRoZSBwZW9wbGUgb2YgSnVkYWgsIHNheWluZywgVGh1cyBzYWl0aCB0aGUgTE9SRCBvZiBob3N0czsgWmlvbiBzaGFsbCBiZSBwbG93ZWQgbGlrZSBhIGZpZWxkLCBhbmQgSmVydXNhbGVtIHNoYWxsIGJlY29tZSBoZWFwcywgYW5kIHRoZSBtb3VudGFpbiBvZiB0aGUgaG91c2UgYXMgdGhlIGhpZ2ggcGxhY2VzIG9mIGEgZm9yZXN0LgpEaWQgSGV6ZWtpYWgga2luZyBvZiBKdWRhaCBhbmQgYWxsIEp1ZGFoIHB1dCBoaW0gYXQgYWxsIHRvIGRlYXRoPyBkaWQgaGUgbm90IGZlYXIgdGhlIExPUkQsIGFuZCBiZXNvdWdodCB0aGUgTE9SRCwgYW5kIHRoZSBMT1JEIHJlcGVudGVkIGhpbSBvZiB0aGUgZXZpbCB3aGljaCBoZSBoYWQgcHJvbm91bmNlZCBhZ2FpbnN0IHRoZW0/IFRodXMgbWlnaHQgd2UgcHJvY3VyZSBncmVhdCBldmlsIGFnYWluc3Qgb3VyIHNvdWxzLgpBbmQgdGhlcmUgd2FzIGFsc28gYSBtYW4gdGhhdCBwcm9waGVzaWVkIGluIHRoZSBuYW1lIG9mIHRoZSBMT1JELCBVcmlqYWggdGhlIHNvbiBvZiBTaGVtYWlhaCBvZiBLaXJqYXRoamVhcmltLCB3aG8gcHJvcGhlc2llZCBhZ2FpbnN0IHRoaXMgY2l0eSBhbmQgYWdhaW5zdCB0aGlzIGxhbmQgYWNjb3JkaW5nIHRvIGFsbCB0aGUgd29yZHMgb2YgSmVyZW1pYWguCkFuZCB3aGVuIEplaG9pYWtpbSB0aGUga2luZywgd2l0aCBhbGwgaGlzIG1pZ2h0eSBtZW4sIGFuZCBhbGwgdGhlIHByaW5jZXMsIGhlYXJkIGhpcyB3b3JkcywgdGhlIGtpbmcgc291Z2h0IHRvIHB1dCBoaW0gdG8gZGVhdGg6IGJ1dCB3aGVuIFVyaWphaCBoZWFyZCBpdCwgaGUgd2FzIGFmcmFpZCwgYW5kIGZsZWQsIGFuZCB3ZW50IGludG8gRWd5cHQ7CkFuZCBKZWhvaWFraW0gdGhlIGtpbmcgc2VudCBtZW4gaW50byBFZ3lwdCwgbmFtZWx5LCBFbG5hdGhhbiB0aGUgc29uIG9mIEFjaGJvciwgYW5kIGNlcnRhaW4gbWVuIHdpdGggaGltIGludG8gRWd5cHQuCkFuZCB0aGV5IGZldGNoZWQgZm9ydGggVXJpamFoIG91dCBvZiBFZ3lwdCwgYW5kIGJyb3VnaHQgaGltIHVudG8gSmVob2lha2ltIHRoZSBraW5nOyB3aG8gc2xldyBoaW0gd2l0aCB0aGUgc3dvcmQsIGFuZCBjYXN0IGhpcyBkZWFkIGJvZHkgaW50byB0aGUgZ3JhdmVzIG9mIHRoZSBjb21tb24gcGVvcGxlLgpOZXZlcnRoZWxlc3MgdGhlIGhhbmQgb2YgQWhpa2FtIHRoZSBzb24gb2YgU2hhcGhhbiB3YXMgd2l0aCBKZXJlbWlhaCwgdGhhdCB0aGV5IHNob3VsZCBub3QgZ2l2ZSBoaW0gaW50byB0aGUgaGFuZCBvZiB0aGUgcGVvcGxlIHRvIHB1dCBoaW0gdG8gZGVhdGguCkluIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHJlaWduIG9mIEplaG9pYWtpbSB0aGUgc29uIG9mIEpvc2lhaCBraW5nIG9mIEp1ZGFoIGNhbWUgdGhpcyB3b3JkIHVudG8gSmVyZW1pYWggZnJvbSB0aGUgTE9SRCwgc2F5aW5nLApUaHVzIHNhaXRoIHRoZSBMT1JEIHRvIG1lOyBNYWtlIHRoZWUgYm9uZHMgYW5kIHlva2VzLCBhbmQgcHV0IHRoZW0gdXBvbiB0aHkgbmVjaywKQW5kIHNlbmQgdGhlbSB0byB0aGUga2luZyBvZiBFZG9tLCBhbmQgdG8gdGhlIGtpbmcgb2YgTW9hYiwgYW5kIHRvIHRoZSBraW5nIG9mIHRoZSBBbW1vbml0ZXMsIGFuZCB0byB0aGUga2luZyBvZiBUeXJ1cywgYW5kIHRvIHRoZSBraW5nIG9mIFppZG9uLCBieSB0aGUgaGFuZCBvZiB0aGUgbWVzc2VuZ2VycyB3aGljaCBjb21lIHRvIEplcnVzYWxlbSB1bnRvIFplZGVraWFoIGtpbmcgb2YgSnVkYWg7CkFuZCBjb21tYW5kIHRoZW0gdG8gc2F5IHVudG8gdGhlaXIgbWFzdGVycywgVGh1cyBzYWl0aCB0aGUgTE9SRCBvZiBob3N0cywgdGhlIEdvZCBvZiBJc3JhZWw7IFRodXMgc2hhbGwgeWUgc2F5IHVudG8geW91ciBtYXN0ZXJzOwpJIGhhdmUgbWFkZSB0aGUgZWFydGgsIHRoZSBtYW4gYW5kIHRoZSBiZWFzdCB0aGF0IGFyZSB1cG9uIHRoZSBncm91bmQsIGJ5IG15IGdyZWF0IHBvd2VyIGFuZCBieSBteSBvdXRzdHJldGNoZWQgYXJtLCBhbmQgaGF2ZSBnaXZlbiBpdCB1bnRvIHdob20gaXQgc2VlbWVkIG1lZXQgdW50byBtZS4KQW5kIG5vdyBoYXZlIEkgZ2l2ZW4gYWxsIHRoZXNlIGxhbmRzIGludG8gdGhlIGhhbmQgb2YgTmVidWNoYWRuZXp6YXIgdGhlIGtpbmcgb2YgQmFieWxvbiwgbXkgc2VydmFudDsgYW5kIHRoZSBiZWFzdHMgb2YgdGhlIGZpZWxkIGhhdmUgSSBnaXZlbiBoaW0gYWxzbyB0byBzZXJ2ZSBoaW0uCkFuZCBhbGwgbmF0aW9ucyBzaGFsbCBzZXJ2ZSBoaW0sIGFuZCBoaXMgc29uLCBhbmQgaGlzIHNvbidzIHNvbiwgdW50aWwgdGhlIHZlcnkgdGltZSBvZiBoaXMgbGFuZCBjb21lOiBhbmQgdGhlbiBtYW55IG5hdGlvbnMgYW5kIGdyZWF0IGtpbmdzIHNoYWxsIHNlcnZlIHRoZW1zZWx2ZXMgb2YgaGltLgpBbmQgaXQgc2hhbGwgY29tZSB0byBwYXNzLCB0aGF0IHRoZSBuYXRpb24gYW5kIGtpbmdkb20gd2hpY2ggd2lsbCBub3Qgc2VydmUgdGhlIHNhbWUgTmVidWNoYWRuZXp6YXIgdGhlIGtpbmcgb2YgQmFieWxvbiwgYW5kIHRoYXQgd2lsbCBub3QgcHV0IHRoZWlyIG5lY2sgdW5kZXIgdGhlIHlva2Ugb2YgdGhlIGtpbmcgb2YgQmFieWxvbiwgdGhhdCBuYXRpb24gd2lsbCBJIHB1bmlzaCwgc2FpdGggdGhlIExPUkQsIHdpdGggdGhlIHN3b3JkLCBhbmQgd2l0aCB0aGUgZmFtaW5lLCBhbmQgd2l0aCB0aGUgcGVzdGlsZW5jZSwgdW50aWwgSSBoYXZlIGNvbnN1bWVkIHRoZW0gYnkgaGlzIGhhbmQuClRoZXJlZm9yZSBoZWFya2VuIG5vdCB5ZSB0byB5b3VyIHByb3BoZXRzLCBub3IgdG8geW91ciBkaXZpbmVycywgbm9yIHRvIHlvdXIgZHJlYW1lcnMsIG5vciB0byB5b3VyIGVuY2hhbnRlcnMsIG5vciB0byB5b3VyIHNvcmNlcmVycywgd2hpY2ggc3BlYWsgdW50byB5b3UsIHNheWluZywgWWUgc2hhbGwgbm90IHNlcnZlIHRoZSBraW5nIG9mIEJhYnlsb246CkZvciB0aGV5IHByb3BoZXN5IGEgbGllIHVudG8geW91LCB0byByZW1vdmUgeW91IGZhciBmcm9tIHlvdXIgbGFuZDsgYW5kIHRoYXQgSSBzaG91bGQgZHJpdmUgeW91IG91dCwgYW5kIHllIHNob3VsZCBwZXJpc2guCkJ1dCB0aGUgbmF0aW9ucyB0aGF0IGJyaW5nIHRoZWlyIG5lY2sgdW5kZXIgdGhlIHlva2Ugb2YgdGhlIGtpbmcgb2YgQmFieWxvbiwgYW5kIHNlcnZlIGhpbSwgdGhvc2Ugd2lsbCBJIGxldCByZW1haW4gc3RpbGwgaW4gdGhlaXIgb3duIGxhbmQsIHNhaXRoIHRoZSBMT1JEOyBhbmQgdGhleSBzaGFsbCB0aWxsIGl0LCBhbmQgZHdlbGwgdGhlcmVpbi4KSSBzcGFrZSBhbHNvIHRvIFplZGVraWFoIGtpbmcgb2YgSnVkYWggYWNjb3JkaW5nIHRvIGFsbCB0aGVzZSB3b3Jkcywgc2F5aW5nLCBCcmluZyB5b3VyIG5lY2tzIHVuZGVyIHRoZSB5b2tlIG9mIHRoZSBraW5nIG9mIEJhYnlsb24sIGFuZCBzZXJ2ZSBoaW0gYW5kIGhpcyBwZW9wbGUsIGFuZCBsaXZlLgpXaHkgd2lsbCB5ZSBkaWUsIHRob3UgYW5kIHRoeSBwZW9wbGUsIGJ5IHRoZSBzd29yZCwgYnkgdGhlIGZhbWluZSwgYW5kIGJ5IHRoZSBwZXN0aWxlbmNlLCBhcyB0aGUgTE9SRCBoYXRoIHNwb2tlbiBhZ2FpbnN0IHRoZSBuYXRpb24gdGhhdCB3aWxsIG5vdCBzZXJ2ZSB0aGUga2luZyBvZiBCYWJ5bG9uPwpUaGVyZWZvcmUgaGVhcmtlbiBub3QgdW50byB0aGUgd29yZHMgb2YgdGhlIHByb3BoZXRzIHRoYXQgc3BlYWsgdW50byB5b3UsIHNheWluZywgWWUgc2hhbGwgbm90IHNlcnZlIHRoZSBraW5nIG9mIEJhYnlsb246IGZvciB0aGV5IHByb3BoZXN5IGEgbGllIHVudG8geW91LgpGb3IgSSBoYXZlIG5vdCBzZW50IHRoZW0sIHNhaXRoIHRoZSBMT1JELCB5ZXQgdGhleSBwcm9waGVzeSBhIGxpZSBpbiBteSBuYW1lOyB0aGF0IEkgbWlnaHQgZHJpdmUgeW91IG91dCwgYW5kIHRoYXQgeWUgbWlnaHQgcGVyaXNoLCB5ZSwgYW5kIHRoZSBwcm9waGV0cyB0aGF0IHByb3BoZXN5IHVudG8geW91LgpBbHNvIEkgc3Bha2UgdG8gdGhlIHByaWVzdHMgYW5kIHRvIGFsbCB0aGlzIHBlb3BsZSwgc2F5aW5nLCBUaHVzIHNhaXRoIHRoZSBMT1JEOyBIZWFya2VuIG5vdCB0byB0aGUgd29yZHMgb2YgeW91ciBwcm9waGV0cyB0aGF0IHByb3BoZXN5IHVudG8geW91LCBzYXlpbmcsIEJlaG9sZCwgdGhlIHZlc3NlbHMgb2YgdGhlIExPUkQncyBob3VzZSBzaGFsbCBub3cgc2hvcnRseSBiZSBicm91Z2h0IGFnYWluIGZyb20gQmFieWxvbjogZm9yIHRoZXkgcHJvcGhlc3kgYSBsaWUgdW50byB5b3UuCkhlYXJrZW4gbm90IHVudG8gdGhlbTsgc2VydmUgdGhlIGtpbmcgb2YgQmFieWxvbiwgYW5kIGxpdmU6IHdoZXJlZm9yZSBzaG91bGQgdGhpcyBjaXR5IGJlIGxhaWQgd2FzdGU/CkJ1dCBpZiB0aGV5IGJlIHByb3BoZXRzLCBhbmQgaWYgdGhlIHdvcmQgb2YgdGhlIExPUkQgYmUgd2l0aCB0aGVtLCBsZXQgdGhlbSBub3cgbWFrZSBpbnRlcmNlc3Npb24gdG8gdGhlIExPUkQgb2YgaG9zdHMsIHRoYXQgdGhlIHZlc3NlbHMgd2hpY2ggYXJlIGxlZnQgaW4gdGhlIGhvdXNlIG9mIHRoZSBMT1JELCBhbmQgaW4gdGhlIGhvdXNlIG9mIHRoZSBraW5nIG9mIEp1ZGFoLCBhbmQgYXQgSmVydXNhbGVtLCBnbyBub3QgdG8gQmFieWxvbi4KRm9yIHRodXMgc2FpdGggdGhlIExPUkQgb2YgaG9zdHMgY29uY2VybmluZyB0aGUgcGlsbGFycywgYW5kIGNvbmNlcm5pbmcgdGhlIHNlYSwgYW5kIGNvbmNlcm5pbmcgdGhlIGJhc2VzLCBhbmQgY29uY2VybmluZyB0aGUgcmVzaWR1ZSBvZiB0aGUgdmVzc2VscyB0aGF0IHJlbWFpbiBpbiB0aGlzIGNpdHkuCldoaWNoIE5lYnVjaGFkbmV6emFyIGtpbmcgb2YgQmFieWxvbiB0b29rIG5vdCwgd2hlbiBoZSBjYXJyaWVkIGF3YXkgY2FwdGl2ZSBKZWNvbmlhaCB0aGUgc29uIG9mIEplaG9pYWtpbSBraW5nIG9mIEp1ZGFoIGZyb20gSmVydXNhbGVtIHRvIEJhYnlsb24sIGFuZCBhbGwgdGhlIG5vYmxlcyBvZiBKdWRhaCBhbmQgSmVydXNhbGVtOwpZZWEsIHRodXMgc2FpdGggdGhlIExPUkQgb2YgaG9zdHMsIHRoZSBHb2Qgb2YgSXNyYWVsLCBjb25jZXJuaW5nIHRoZSB2ZXNzZWxzIHRoYXQgcmVtYWluIGluIHRoZSBob3VzZSBvZiB0aGUgTE9SRCwgYW5kIGluIHRoZSBob3VzZSBvZiB0aGUga2luZyBvZiBKdWRhaCBhbmQgb2YgSmVydXNhbGVtOwpUaGV5IHNoYWxsIGJlIGNhcnJpZWQgdG8gQmFieWxvbiwgYW5kIHRoZXJlIHNoYWxsIHRoZXkgYmUgdW50aWwgdGhlIGRheSB0aGF0IEkgdmlzaXQgdGhlbSwgc2FpdGggdGhlIExPUkQ7IHRoZW4gd2lsbCBJIGJyaW5nIHRoZW0gdXAsIGFuZCByZXN0b3JlIHRoZW0gdG8gdGhpcyBwbGFjZS4KQW5kIGl0IGNhbWUgdG8gcGFzcyB0aGUgc2FtZSB5ZWFyLCBpbiB0aGUgYmVnaW5uaW5nIG9mIHRoZSByZWlnbiBvZiBaZWRla2lhaCBraW5nIG9mIEp1ZGFoLCBpbiB0aGUgZm91cnRoIHllYXIsIGFuZCBpbiB0aGUgZmlmdGggbW9udGgsIHRoYXQgSGFuYW5pYWggdGhlIHNvbiBvZiBBenVyIHRoZSBwcm9waGV0LCB3aGljaCB3YXMgb2YgR2liZW9uLCBzcGFrZSB1bnRvIG1lIGluIHRoZSBob3VzZSBvZiB0aGUgTE9SRCwgaW4gdGhlIHByZXNlbmNlIG9mIHRoZSBwcmllc3RzIGFuZCBvZiBhbGwgdGhlIHBlb3BsZSwgc2F5aW5nLApUaHVzIHNwZWFrZXRoIHRoZSBMT1JEIG9mIGhvc3RzLCB0aGUgR29kIG9mIElzcmFlbCwgc2F5aW5nLCBJIGhhdmUgYnJva2VuIHRoZSB5b2tlIG9mIHRoZSBraW5nIG9mIEJhYnlsb24uCldpdGhpbiB0d28gZnVsbCB5ZWFycyB3aWxsIEkgYnJpbmcgYWdhaW4gaW50byB0aGlzIHBsYWNlIGFsbCB0aGUgdmVzc2VscyBvZiB0aGUgTE9SRCdzIGhvdXNlLCB0aGF0IE5lYnVjaGFkbmV6emFyIGtpbmcgb2YgQmFieWxvbiB0b29rIGF3YXkgZnJvbSB0aGlzIHBsYWNlLCBhbmQgY2FycmllZCB0aGVtIHRvIEJhYnlsb246CkFuZCBJIHdpbGwgYnJpbmcgYWdhaW4gdG8gdGhpcyBwbGFjZSBKZWNvbmlhaCB0aGUgc29uIG9mIEplaG9pYWtpbSBraW5nIG9mIEp1ZGFoLCB3aXRoIGFsbCB0aGUgY2FwdGl2ZXMgb2YgSnVkYWgsIHRoYXQgd2VudCBpbnRvIEJhYnlsb24sIHNhaXRoIHRoZSBMT1JEOiBmb3IgSSB3aWxsIGJyZWFrIHRoZSB5b2tlIG9mIHRoZSBraW5nIG9mIEJhYnlsb24uClRoZW4gdGhlIHByb3BoZXQgSmVyZW1pYWggc2FpZCB1bnRvIHRoZSBwcm9waGV0IEhhbmFuaWFoIGluIHRoZSBwcmVzZW5jZSBvZiB0aGUgcHJpZXN0cywgYW5kIGluIHRoZSBwcmVzZW5jZSBvZiBhbGwgdGhlIHBlb3BsZSB0aGF0IHN0b29kIGluIHRoZSBob3VzZSBvZiB0aGUgTE9SRCwKRXZlbiB0aGUgcHJvcGhldCBKZXJlbWlhaCBzYWlkLCBBbWVuOiB0aGUgTE9SRCBkbyBzbzogdGhlIExPUkQgcGVyZm9ybSB0aHkgd29yZHMgd2hpY2ggdGhvdSBoYXN0IHByb3BoZXNpZWQsIHRvIGJyaW5nIGFnYWluIHRoZSB2ZXNzZWxzIG9mIHRoZSBMT1JEJ3MgaG91c2UsIGFuZCBhbGwgdGhhdCBpcyBjYXJyaWVkIGF3YXkgY2FwdGl2ZSwgZnJvbSBCYWJ5bG9uIGludG8gdGhpcyBwbGFjZS4KTmV2ZXJ0aGVsZXNzIGhlYXIgdGhvdSBub3cgdGhpcyB3b3JkIHRoYXQgSSBzcGVhayBpbiB0aGluZSBlYXJzLCBhbmQgaW4gdGhlIGVhcnMgb2YgYWxsIHRoZSBwZW9wbGU7ClRoZSBwcm9waGV0cyB0aGF0IGhhdmUgYmVlbiBiZWZvcmUgbWUgYW5kIGJlZm9yZSB0aGVlIG9mIG9sZCBwcm9waGVzaWVkIGJvdGggYWdhaW5zdCBtYW55IGNvdW50cmllcywgYW5kIGFnYWluc3QgZ3JlYXQga2luZ2RvbXMsIG9mIHdhciwgYW5kIG9mIGV2aWwsIGFuZCBvZiBwZXN0aWxlbmNlLgpUaGUgcHJvcGhldCB3aGljaCBwcm9waGVzaWV0aCBvZiBwZWFjZSwgd2hlbiB0aGUgd29yZCBvZiB0aGUgcHJvcGhldCBzaGFsbCBjb21lIHRvIHBhc3MsIHRoZW4gc2hhbGwgdGhlIHByb3BoZXQgYmUga25vd24sIHRoYXQgdGhlIExPUkQgaGF0aCB0cnVseSBzZW50IGhpbS4KVGhlbiBIYW5hbmlhaCB0aGUgcHJvcGhldCB0b29rIHRoZSB5b2tlIGZyb20gb2ZmIHRoZSBwcm9waGV0IEplcmVtaWFoJ3MgbmVjaywgYW5kIGJyYWtlIGl0LgpBbmQgSGFuYW5pYWggc3Bha2UgaW4gdGhlIHByZXNlbmNlIG9mIGFsbCB0aGUgcGVvcGxlLCBzYXlpbmcsIFRodXMgc2FpdGggdGhlIExPUkQ7IEV2ZW4gc28gd2lsbCBJIGJyZWFrIHRoZSB5b2tlIG9mIE5lYnVjaGFkbmV6emFyIGtpbmcgb2YgQmFieWxvbiBmcm9tIHRoZSBuZWNrIG9mIGFsbCBuYXRpb25zIHdpdGhpbiB0aGUgc3BhY2Ugb2YgdHdvIGZ1bGwgeWVhcnMuIEFuZCB0aGUgcHJvcGhldCBKZXJlbWlhaCB3ZW50IGhpcyB3YXkuClRoZW4gdGhlIHdvcmQgb2YgdGhlIExPUkQgY2FtZSB1bnRvIEplcmVtaWFoIHRoZSBwcm9waGV0LCBhZnRlciB0aGF0IEhhbmFuaWFoIHRoZSBwcm9waGV0IGhhZCBicm9rZW4gdGhlIHlva2UgZnJvbSBvZmYgdGhlIG5lY2sgb2YgdGhlIHByb3BoZXQgSmVyZW1pYWgsIHNheWluZywKR28gYW5kIHRlbGwgSGFuYW5pYWgsIHNheWluZywgVGh1cyBzYWl0aCB0aGUgTE9SRDsgVGhvdSBoYXN0IGJyb2tlbiB0aGUgeW9rZXMgb2Ygd29vZDsgYnV0IHRob3Ugc2hhbHQgbWFrZSBmb3IgdGhlbSB5b2tlcyBvZiBpcm9uLgpGb3IgdGh1cyBzYWl0aCB0aGUgTE9SRCBvZiBob3N0cywgdGhlIEdvZCBvZiBJc3JhZWw7IEkgaGF2ZSBwdXQgYSB5b2tlIG9mIGlyb24gdXBvbiB0aGUgbmVjayBvZiBhbGwgdGhlc2UgbmF0aW9ucywgdGhhdCB0aGV5IG1heSBzZXJ2ZSBOZWJ1Y2hhZG5lenphciBraW5nIG9mIEJhYnlsb247IGFuZCB0aGV5IHNoYWxsIHNlcnZlIGhpbTogYW5kIEkgaGF2ZSBnaXZlbiBoaW0gdGhlIGJlYXN0cyBvZiB0aGUgZmllbGQgYWxzby4KVGhlbiBzYWlkIHRoZSBwcm9waGV0IEplcmVtaWFoIHVudG8gSGFuYW5pYWggdGhlIHByb3BoZXQsIEhlYXIgbm93LCBIYW5hbmlhaDsgVGhlIExPUkQgaGF0aCBub3Qgc2VudCB0aGVlOyBidXQgdGhvdSBtYWtlc3QgdGhpcyBwZW9wbGUgdG8gdHJ1c3QgaW4gYSBsaWUuClRoZXJlZm9yZSB0aHVzIHNhaXRoIHRoZSBMT1JEOyBCZWhvbGQsIEkgd2lsbCBjYXN0IHRoZWUgZnJvbSBvZmYgdGhlIGZhY2Ugb2YgdGhlIGVhcnRoOiB0aGlzIHllYXIgdGhvdSBzaGFsdCBkaWUsIGJlY2F1c2UgdGhvdSBoYXN0IHRhdWdodCByZWJlbGxpb24gYWdhaW5zdCB0aGUgTE9SRC4KU28gSGFuYW5pYWggdGhlIHByb3BoZXQgZGllZCB0aGUgc2FtZSB5ZWFyIGluIHRoZSBzZXZlbnRoIG1vbnRoLgpOb3cgdGhlc2UgYXJlIHRoZSB3b3JkcyBvZiB0aGUgbGV0dGVyIHRoYXQgSmVyZW1pYWggdGhlIHByb3BoZXQgc2VudCBmcm9tIEplcnVzYWxlbSB1bnRvIHRoZSByZXNpZHVlIG9mIHRoZSBlbGRlcnMgd2hpY2ggd2VyZSBjYXJyaWVkIGF3YXkgY2FwdGl2ZXMsIGFuZCB0byB0aGUgcHJpZXN0cywgYW5kIHRvIHRoZSBwcm9waGV0cywgYW5kIHRvIGFsbCB0aGUgcGVvcGxlIHdob20gTmVidWNoYWRuZXp6YXIgaGFkIGNhcnJpZWQgYXdheSBjYXB0aXZlIGZyb20gSmVydXNhbGVtIHRvIEJhYnlsb247CihBZnRlciB0aGF0IEplY29uaWFoIHRoZSBraW5nLCBhbmQgdGhlIHF1ZWVuLCBhbmQgdGhlIGV1bnVjaHMsIHRoZSBwcmluY2VzIG9mIEp1ZGFoIGFuZCBKZXJ1c2FsZW0sIGFuZCB0aGUgY2FycGVudGVycywgYW5kIHRoZSBzbWl0aHMsIHdlcmUgZGVwYXJ0ZWQgZnJvbSBKZXJ1c2FsZW07KQpCeSB0aGUgaGFuZCBvZiBFbGFzYWggdGhlIHNvbiBvZiBTaGFwaGFuLCBhbmQgR2VtYXJpYWggdGhlIHNvbiBvZiBIaWxraWFoLCAod2hvbSBaZWRla2lhaCBraW5nIG9mIEp1ZGFoIHNlbnQgdW50byBCYWJ5bG9uIHRvIE5lYnVjaGFkbmV6emFyIGtpbmcgb2YgQmFieWxvbikgc2F5aW5nLApUaHVzIHNhaXRoIHRoZSBMT1JEIG9mIGhvc3RzLCB0aGUgR29kIG9mIElzcmFlbCwgdW50byBhbGwgdGhhdCBhcmUgY2FycmllZCBhd2F5IGNhcHRpdmVzLCB3aG9tIEkgaGF2ZSBjYXVzZWQgdG8gYmUgY2FycmllZCBhd2F5IGZyb20gSmVydXNhbGVtIHVudG8gQmFieWxvbjsKQnVpbGQgeWUgaG91c2VzLCBhbmQgZHdlbGwgaW4gdGhlbTsgYW5kIHBsYW50IGdhcmRlbnMsIGFuZCBlYXQgdGhlIGZydWl0IG9mIHRoZW07ClRha2UgeWUgd2l2ZXMsIGFuZCBiZWdldCBzb25zIGFuZCBkYXVnaHRlcnM7IGFuZCB0YWtlIHdpdmVzIGZvciB5b3VyIHNvbnMsIGFuZCBnaXZlIHlvdXIgZGF1Z2h0ZXJzIHRvIGh1c2JhbmRzLCB0aGF0IHRoZXkgbWF5IGJlYXIgc29ucyBhbmQgZGF1Z2h0ZXJzOyB0aGF0IHllIG1heSBiZSBpbmNyZWFzZWQgdGhlcmUsIGFuZCBub3QgZGltaW5pc2hlZC4KQW5kIHNlZWsgdGhlIHBlYWNlIG9mIHRoZSBjaXR5IHdoaXRoZXIgSSBoYXZlIGNhdXNlZCB5b3UgdG8gYmUgY2FycmllZCBhd2F5IGNhcHRpdmVzLCBhbmQgcHJheSB1bnRvIHRoZSBMT1JEIGZvciBpdDogZm9yIGluIHRoZSBwZWFjZSB0aGVyZW9mIHNoYWxsIHllIGhhdmUgcGVhY2UuCkZvciB0aHVzIHNhaXRoIHRoZSBMT1JEIG9mIGhvc3RzLCB0aGUgR29kIG9mIElzcmFlbDsgTGV0IG5vdCB5b3VyIHByb3BoZXRzIGFuZCB5b3VyIGRpdmluZXJzLCB0aGF0IGJlIGluIHRoZSBtaWRzdCBvZiB5b3UsIGRlY2VpdmUgeW91LCBuZWl0aGVyIGhlYXJrZW4gdG8geW91ciBkcmVhbXMgd2hpY2ggeWUgY2F1c2UgdG8gYmUgZHJlYW1lZC4KRm9yIHRoZXkgcHJvcGhlc3kgZmFsc2VseSB1bnRvIHlvdSBpbiBteSBuYW1lOiBJIGhhdmUgbm90IHNlbnQgdGhlbSwgc2FpdGggdGhlIExPUkQuCkZvciB0aHVzIHNhaXRoIHRoZSBMT1JELCBUaGF0IGFmdGVyIHNldmVudHkgeWVhcnMgYmUgYWNjb21wbGlzaGVkIGF0IEJhYnlsb24gSSB3aWxsIHZpc2l0IHlvdSwgYW5kIHBlcmZvcm0gbXkgZ29vZCB3b3JkIHRvd2FyZCB5b3UsIGluIGNhdXNpbmcgeW91IHRvIHJldHVybiB0byB0aGlzIHBsYWNlLgpGb3IgSSBrbm93IHRoZSB0aG91Z2h0cyB0aGF0IEkgdGhpbmsgdG93YXJkIHlvdSwgc2FpdGggdGhlIExPUkQsIHRob3VnaHRzIG9mIHBlYWNlLCBhbmQgbm90IG9mIGV2aWwsIHRvIGdpdmUgeW91IGFuIGV4cGVjdGVkIGVuZC4KVGhlbiBzaGFsbCB5ZSBjYWxsIHVwb24gbWUsIGFuZCB5ZSBzaGFsbCBnbyBhbmQgcHJheSB1bnRvIG1lLCBhbmQgSSB3aWxsIGhlYXJrZW4gdW50byB5b3UuCkFuZCB5ZSBzaGFsbCBzZWVrIG1lLCBhbmQgZmluZCBtZSwgd2hlbiB5ZSBzaGFsbCBzZWFyY2ggZm9yIG1lIHdpdGggYWxsIHlvdXIgaGVhcnQuCkFuZCBJIHdpbGwgYmUgZm91bmQgb2YgeW91LCBzYWl0aCB0aGUgTE9SRDogYW5kIEkgd2lsbCB0dXJuIGF3YXkgeW91ciBjYXB0aXZpdHksIGFuZCBJIHdpbGwgZ2F0aGVyIHlvdSBmcm9tIGFsbCB0aGUgbmF0aW9ucywgYW5kIGZyb20gYWxsIHRoZSBwbGFjZXMgd2hpdGhlciBJIGhhdmUgZHJpdmVuIHlvdSwgc2FpdGggdGhlIExPUkQ7IGFuZCBJIHdpbGwgYnJpbmcgeW91IGFnYWluIGludG8gdGhlIHBsYWNlIHdoZW5jZSBJIGNhdXNlZCB5b3UgdG8gYmUgY2FycmllZCBhd2F5IGNhcHRpdmUuCkJlY2F1c2UgeWUgaGF2ZSBzYWlkLCBUaGUgTE9SRCBoYXRoIHJhaXNlZCB1cyB1cCBwcm9waGV0cyBpbiBCYWJ5bG9uOwpLbm93IHRoYXQgdGh1cyBzYWl0aCB0aGUgTE9SRCBvZiB0aGUga2luZyB0aGF0IHNpdHRldGggdXBvbiB0aGUgdGhyb25lIG9mIERhdmlkLCBhbmQgb2YgYWxsIHRoZSBwZW9wbGUgdGhhdCBkd2VsbGV0aCBpbiB0aGlzIGNpdHksIGFuZCBvZiB5b3VyIGJyZXRocmVuIHRoYXQgYXJlIG5vdCBnb25lIGZvcnRoIHdpdGggeW91IGludG8gY2FwdGl2aXR5OwpUaHVzIHNhaXRoIHRoZSBMT1JEIG9mIGhvc3RzOyBCZWhvbGQsIEkgd2lsbCBzZW5kIHVwb24gdGhlbSB0aGUgc3dvcmQsIHRoZSBmYW1pbmUsIGFuZCB0aGUgcGVzdGlsZW5jZSwgYW5kIHdpbGwgbWFrZSB0aGVtIGxpa2UgdmlsZSBmaWdzLCB0aGF0IGNhbm5vdCBiZSBlYXRlbiwgdGhleSBhcmUgc28gZXZpbC4KQW5kIEkgd2lsbCBwZXJzZWN1dGUgdGhlbSB3aXRoIHRoZSBzd29yZCwgd2l0aCB0aGUgZmFtaW5lLCBhbmQgd2l0aCB0aGUgcGVzdGlsZW5jZSwgYW5kIHdpbGwgZGVsaXZlciB0aGVtIHRvIGJlIHJlbW92ZWQgdG8gYWxsIHRoZSBraW5nZG9tcyBvZiB0aGUgZWFydGgsIHRvIGJlIGEgY3Vyc2UsIGFuZCBhbiBhc3RvbmlzaG1lbnQsIGFuZCBhbiBoaXNzaW5nLCBhbmQgYSByZXByb2FjaCwgYW1vbmcgYWxsIHRoZSBuYXRpb25zIHdoaXRoZXIgSSBoYXZlIGRyaXZlbiB0aGVtOgpCZWNhdXNlIHRoZXkgaGF2ZSBub3QgaGVhcmtlbmVkIHRvIG15IHdvcmRzLCBzYWl0aCB0aGUgTE9SRCwgd2hpY2ggSSBzZW50IHVudG8gdGhlbSBieSBteSBzZXJ2YW50cyB0aGUgcHJvcGhldHMsIHJpc2luZyB1cCBlYXJseSBhbmQgc2VuZGluZyB0aGVtOyBidXQgeWUgd291bGQgbm90IGhlYXIsIHNhaXRoIHRoZSBMT1JELgpIZWFyIHllIHRoZXJlZm9yZSB0aGUgd29yZCBvZiB0aGUgTE9SRCwgYWxsIHllIG9mIHRoZSBjYXB0aXZpdHksIHdob20gSSBoYXZlIHNlbnQgZnJvbSBKZXJ1c2FsZW0gdG8gQmFieWxvbjoKVGh1cyBzYWl0aCB0aGUgTE9SRCBvZiBob3N0cywgdGhlIEdvZCBvZiBJc3JhZWwsIG9mIEFoYWIgdGhlIHNvbiBvZiBLb2xhaWFoLCBhbmQgb2YgWmVkZWtpYWggdGhlIHNvbiBvZiBNYWFzZWlhaCwgd2hpY2ggcHJvcGhlc3kgYSBsaWUgdW50byB5b3UgaW4gbXkgbmFtZTsgQmVob2xkLCBJIHdpbGwgZGVsaXZlciB0aGVtIGludG8gdGhlIGhhbmQgb2YgTmVidWNoYWRyZXp6YXIga2luZyBvZiBCYWJ5bG9uOyBhbmQgaGUgc2hhbGwgc2xheSB0aGVtIGJlZm9yZSB5b3VyIGV5ZXM7CkFuZCBvZiB0aGVtIHNoYWxsIGJlIHRha2VuIHVwIGEgY3Vyc2UgYnkgYWxsIHRoZSBjYXB0aXZpdHkgb2YgSnVkYWggd2hpY2ggYXJlIGluIEJhYnlsb24sIHNheWluZywgVGhlIExPUkQgbWFrZSB0aGVlIGxpa2UgWmVkZWtpYWggYW5kIGxpa2UgQWhhYiwgd2hvbSB0aGUga2luZyBvZiBCYWJ5bG9uIHJvYXN0ZWQgaW4gdGhlIGZpcmU7CkJlY2F1c2UgdGhleSBoYXZlIGNvbW1pdHRlZCB2aWxsYW55IGluIElzcmFlbCwgYW5kIGhhdmUgY29tbWl0dGVkIGFkdWx0ZXJ5IHdpdGggdGhlaXIgbmVpZ2hib3Vycycgd2l2ZXMsIGFuZCBoYXZlIHNwb2tlbiBseWluZyB3b3JkcyBpbiBteSBuYW1lLCB3aGljaCBJIGhhdmUgbm90IGNvbW1hbmRlZCB0aGVtOyBldmVuIEkga25vdywgYW5kIGFtIGEgd2l0bmVzcywgc2FpdGggdGhlIExPUkQuClRodXMgc2hhbHQgdGhvdSBhbHNvIHNwZWFrIHRvIFNoZW1haWFoIHRoZSBOZWhlbGFtaXRlLCBzYXlpbmcsClRodXMgc3BlYWtldGggdGhlIExPUkQgb2YgaG9zdHMsIHRoZSBHb2Qgb2YgSXNyYWVsLCBzYXlpbmcsIEJlY2F1c2UgdGhvdSBoYXN0IHNlbnQgbGV0dGVycyBpbiB0aHkgbmFtZSB1bnRvIGFsbCB0aGUgcGVvcGxlIHRoYXQgYXJlIGF0IEplcnVzYWxlbSwgYW5kIHRvIFplcGhhbmlhaCB0aGUgc29uIG9mIE1hYXNlaWFoIHRoZSBwcmllc3QsIGFuZCB0byBhbGwgdGhlIHByaWVzdHMsIHNheWluZywKVGhlIExPUkQgaGF0aCBtYWRlIHRoZWUgcHJpZXN0IGluIHRoZSBzdGVhZCBvZiBKZWhvaWFkYSB0aGUgcHJpZXN0LCB0aGF0IHllIHNob3VsZCBiZSBvZmZpY2VycyBpbiB0aGUgaG91c2Ugb2YgdGhlIExPUkQsIGZvciBldmVyeSBtYW4gdGhhdCBpcyBtYWQsIGFuZCBtYWtldGggaGltc2VsZiBhIHByb3BoZXQsIHRoYXQgdGhvdSBzaG91bGRlc3QgcHV0IGhpbSBpbiBwcmlzb24sIGFuZCBpbiB0aGUgc3RvY2tzLgpOb3cgdGhlcmVmb3JlIHdoeSBoYXN0IHRob3Ugbm90IHJlcHJvdmVkIEplcmVtaWFoIG9mIEFuYXRob3RoLCB3aGljaCBtYWtldGggaGltc2VsZiBhIHByb3BoZXQgdG8geW91PwpGb3IgdGhlcmVmb3JlIGhlIHNlbnQgdW50byB1cyBpbiBCYWJ5bG9uLCBzYXlpbmcsIFRoaXMgY2FwdGl2aXR5IGlzIGxvbmc6IGJ1aWxkIHllIGhvdXNlcywgYW5kIGR3ZWxsIGluIHRoZW07IGFuZCBwbGFudCBnYXJkZW5zLCBhbmQgZWF0IHRoZSBmcnVpdCBvZiB0aGVtLgpBbmQgWmVwaGFuaWFoIHRoZSBwcmllc3QgcmVhZCB0aGlzIGxldHRlciBpbiB0aGUgZWFycyBvZiBKZXJlbWlhaCB0aGUgcHJvcGhldC4KVGhlbiBjYW1lIHRoZSB3b3JkIG9mIHRoZSBMT1JEIHVudG8gSmVyZW1pYWgsIHNheWluZywKU2VuZCB0byBhbGwgdGhlbSBvZiB0aGUgY2FwdGl2aXR5LCBzYXlpbmcsIFRodXMgc2FpdGggdGhlIExPUkQgY29uY2VybmluZyBTaGVtYWlhaCB0aGUgTmVoZWxhbWl0ZTsgQmVjYXVzZSB0aGF0IFNoZW1haWFoIGhhdGggcHJvcGhlc2llZCB1bnRvIHlvdSwgYW5kIEkgc2VudCBoaW0gbm90LCBhbmQgaGUgY2F1c2VkIHlvdSB0byB0cnVzdCBpbiBhIGxpZToKVGhlcmVmb3JlIHRodXMgc2FpdGggdGhlIExPUkQ7IEJlaG9sZCwgSSB3aWxsIHB1bmlzaCBTaGVtYWlhaCB0aGUgTmVoZWxhbWl0ZSwgYW5kIGhpcyBzZWVkOiBoZSBzaGFsbCBub3QgaGF2ZSBhIG1hbiB0byBkd2VsbCBhbW9uZyB0aGlzIHBlb3BsZTsgbmVpdGhlciBzaGFsbCBoZSBiZWhvbGQgdGhlIGdvb2QgdGhhdCBJIHdpbGwgZG8gZm9yIG15IHBlb3BsZSwgc2FpdGggdGhlIExPUkQ7IGJlY2F1c2UgaGUgaGF0aCB0YXVnaHQgcmViZWxsaW9uIGFnYWluc3QgdGhlIExPUkQuClRoZSB3b3JkIHRoYXQgY2FtZSB0byBKZXJlbWlhaCBmcm9tIHRoZSBMT1JELCBzYXlpbmcsClRodXMgc3BlYWtldGggdGhlIExPUkQgR29kIG9mIElzcmFlbCwgc2F5aW5nLCBXcml0ZSB0aGVlIGFsbCB0aGUgd29yZHMgdGhhdCBJIGhhdmUgc3Bva2VuIHVudG8gdGhlZSBpbiBhIGJvb2suCkZvciwgbG8sIHRoZSBkYXlzIGNvbWUsIHNhaXRoIHRoZSBMT1JELCB0aGF0IEkgd2lsbCBicmluZyBhZ2FpbiB0aGUgY2FwdGl2aXR5IG9mIG15IHBlb3BsZSBJc3JhZWwgYW5kIEp1ZGFoLCBzYWl0aCB0aGUgTE9SRDogYW5kIEkgd2lsbCBjYXVzZSB0aGVtIHRvIHJldHVybiB0byB0aGUgbGFuZCB0aGF0IEkgZ2F2ZSB0byB0aGVpciBmYXRoZXJzLCBhbmQgdGhleSBzaGFsbCBwb3NzZXNzIGl0LgpBbmQgdGhlc2UgYXJlIHRoZSB3b3JkcyB0aGF0IHRoZSBMT1JEIHNwYWtlIGNvbmNlcm5pbmcgSXNyYWVsIGFuZCBjb25jZXJuaW5nIEp1ZGFoLgpGb3IgdGh1cyBzYWl0aCB0aGUgTE9SRDsgV2UgaGF2ZSBoZWFyZCBhIHZvaWNlIG9mIHRyZW1ibGluZywgb2YgZmVhciwgYW5kIG5vdCBvZiBwZWFjZS4KQXNrIHllIG5vdywgYW5kIHNlZSB3aGV0aGVyIGEgbWFuIGRvdGggdHJhdmFpbCB3aXRoIGNoaWxkPyB3aGVyZWZvcmUgZG8gSSBzZWUgZXZlcnkgbWFuIHdpdGggaGlzIGhhbmRzIG9uIGhpcyBsb2lucywgYXMgYSB3b21hbiBpbiB0cmF2YWlsLCBhbmQgYWxsIGZhY2VzIGFyZSB0dXJuZWQgaW50byBwYWxlbmVzcz8KQWxhcyEgZm9yIHRoYXQgZGF5IGlzIGdyZWF0LCBzbyB0aGF0IG5vbmUgaXMgbGlrZSBpdDogaXQgaXMgZXZlbiB0aGUgdGltZSBvZiBKYWNvYidzIHRyb3VibGUsIGJ1dCBoZSBzaGFsbCBiZSBzYXZlZCBvdXQgb2YgaXQuCkZvciBpdCBzaGFsbCBjb21lIHRvIHBhc3MgaW4gdGhhdCBkYXksIHNhaXRoIHRoZSBMT1JEIG9mIGhvc3RzLCB0aGF0IEkgd2lsbCBicmVhayBoaXMgeW9rZSBmcm9tIG9mZiB0aHkgbmVjaywgYW5kIHdpbGwgYnVyc3QgdGh5IGJvbmRzLCBhbmQgc3RyYW5nZXJzIHNoYWxsIG5vIG1vcmUgc2VydmUgdGhlbXNlbHZlcyBvZiBoaW06CkJ1dCB0aGV5IHNoYWxsIHNlcnZlIHRoZSBMT1JEIHRoZWlyIEdvZCwgYW5kIERhdmlkIHRoZWlyIGtpbmcsIHdob20gSSB3aWxsIHJhaXNlIHVwIHVudG8gdGhlbS4KVGhlcmVmb3JlIGZlYXIgdGhvdSBub3QsIE8gbXkgc2VydmFudCBKYWNvYiwgc2FpdGggdGhlIExPUkQ7IG5laXRoZXIgYmUgZGlzbWF5ZWQsIE8gSXNyYWVsOiBmb3IsIGxvLCBJIHdpbGwgc2F2ZSB0aGVlIGZyb20gYWZhciwgYW5kIHRoeSBzZWVkIGZyb20gdGhlIGxhbmQgb2YgdGhlaXIgY2FwdGl2aXR5OyBhbmQgSmFjb2Igc2hhbGwgcmV0dXJuLCBhbmQgc2hhbGwgYmUgaW4gcmVzdCwgYW5kIGJlIHF1aWV0LCBhbmQgbm9uZSBzaGFsbCBtYWtlIGhpbSBhZnJhaWQuCkZvciBJIGFtIHdpdGggdGhlZSwgc2FpdGggdGhlIExPUkQsIHRvIHNhdmUgdGhlZTogdGhvdWdoIEkgbWFrZSBhIGZ1bGwgZW5kIG9mIGFsbCBuYXRpb25zIHdoaXRoZXIgSSBoYXZlIHNjYXR0ZXJlZCB0aGVlLCB5ZXQgSSB3aWxsIG5vdCBtYWtlIGEgZnVsbCBlbmQgb2YgdGhlZTogYnV0IEkgd2lsbCBjb3JyZWN0IHRoZWUgaW4gbWVhc3VyZSwgYW5kIHdpbGwgbm90IGxlYXZlIHRoZWUgYWx0b2dldGhlciB1bnB1bmlzaGVkLgpGb3IgdGh1cyBzYWl0aCB0aGUgTE9SRCwgVGh5IGJydWlzZSBpcyBpbmN1cmFibGUsIGFuZCB0aHkgd291bmQgaXMgZ3JpZXZvdXMuClRoZXJlIGlzIG5vbmUgdG8gcGxlYWQgdGh5IGNhdXNlLCB0aGF0IHRob3UgbWF5ZXN0IGJlIGJvdW5kIHVwOiB0aG91IGhhc3Qgbm8gaGVhbGluZyBtZWRpY2luZXMuCkFsbCB0aHkgbG92ZXJzIGhhdmUgZm9yZ290dGVuIHRoZWU7IHRoZXkgc2VlayB0aGVlIG5vdDsgZm9yIEkgaGF2ZSB3b3VuZGVkIHRoZWUgd2l0aCB0aGUgd291bmQgb2YgYW4gZW5lbXksIHdpdGggdGhlIGNoYXN0aXNlbWVudCBvZiBhIGNydWVsIG9uZSwgZm9yIHRoZSBtdWx0aXR1ZGUgb2YgdGhpbmUgaW5pcXVpdHk7IGJlY2F1c2UgdGh5IHNpbnMgd2VyZSBpbmNyZWFzZWQuCldoeSBjcmllc3QgdGhvdSBmb3IgdGhpbmUgYWZmbGljdGlvbj8gdGh5IHNvcnJvdyBpcyBpbmN1cmFibGUgZm9yIHRoZSBtdWx0aXR1ZGUgb2YgdGhpbmUgaW5pcXVpdHk6IGJlY2F1c2UgdGh5IHNpbnMgd2VyZSBpbmNyZWFzZWQsIEkgaGF2ZSBkb25lIHRoZXNlIHRoaW5ncyB1bnRvIHRoZWUuClRoZXJlZm9yZSBhbGwgdGhleSB0aGF0IGRldm91ciB0aGVlIHNoYWxsIGJlIGRldm91cmVkOyBhbmQgYWxsIHRoaW5lIGFkdmVyc2FyaWVzLCBldmVyeSBvbmUgb2YgdGhlbSwgc2hhbGwgZ28gaW50byBjYXB0aXZpdHk7IGFuZCB0aGV5IHRoYXQgc3BvaWwgdGhlZSBzaGFsbCBiZSBhIHNwb2lsLCBhbmQgYWxsIHRoYXQgcHJleSB1cG9uIHRoZWUgd2lsbCBJIGdpdmUgZm9yIGEgcHJleS4KRm9yIEkgd2lsbCByZXN0b3JlIGhlYWx0aCB1bnRvIHRoZWUsIGFuZCBJIHdpbGwgaGVhbCB0aGVlIG9mIHRoeSB3b3VuZHMsIHNhaXRoIHRoZSBMT1JEOyBiZWNhdXNlIHRoZXkgY2FsbGVkIHRoZWUgYW4gT3V0Y2FzdCwgc2F5aW5nLCBUaGlzIGlzIFppb24sIHdob20gbm8gbWFuIHNlZWtldGggYWZ0ZXIuClRodXMgc2FpdGggdGhlIExPUkQ7IEJlaG9sZCwgSSB3aWxsIGJyaW5nIGFnYWluIHRoZSBjYXB0aXZpdHkgb2YgSmFjb2IncyB0ZW50cywgYW5kIGhhdmUgbWVyY3kgb24gaGlzIGR3ZWxsaW5ncGxhY2VzOyBhbmQgdGhlIGNpdHkgc2hhbGwgYmUgYnVpbGRlZCB1cG9uIGhlciBvd24gaGVhcCwgYW5kIHRoZSBwYWxhY2Ugc2hhbGwgcmVtYWluIGFmdGVyIHRoZSBtYW5uZXIgdGhlcmVvZi4KQW5kIG91dCBvZiB0aGVtIHNoYWxsIHByb2NlZWQgdGhhbmtzZ2l2aW5nIGFuZCB0aGUgdm9pY2Ugb2YgdGhlbSB0aGF0IG1ha2UgbWVycnk6IGFuZCBJIHdpbGwgbXVsdGlwbHkgdGhlbSwgYW5kIHRoZXkgc2hhbGwgbm90IGJlIGZldzsgSSB3aWxsIGFsc28gZ2xvcmlmeSB0aGVtLCBhbmQgdGhleSBzaGFsbCBub3QgYmUgc21hbGwuClRoZWlyIGNoaWxkcmVuIGFsc28gc2hhbGwgYmUgYXMgYWZvcmV0aW1lLCBhbmQgdGhlaXIgY29uZ3JlZ2F0aW9uIHNoYWxsIGJlIGVzdGFibGlzaGVkIGJlZm9yZSBtZSwgYW5kIEkgd2lsbCBwdW5pc2ggYWxsIHRoYXQgb3BwcmVzcyB0aGVtLgpBbmQgdGhlaXIgbm9ibGVzIHNoYWxsIGJlIG9mIHRoZW1zZWx2ZXMsIGFuZCB0aGVpciBnb3Zlcm5vciBzaGFsbCBwcm9jZWVkIGZyb20gdGhlIG1pZHN0IG9mIHRoZW07IGFuZCBJIHdpbGwgY2F1c2UgaGltIHRvIGRyYXcgbmVhciwgYW5kIGhlIHNoYWxsIGFwcHJvYWNoIHVudG8gbWU6IGZvciB3aG8gaXMgdGhpcyB0aGF0IGVuZ2FnZWQgaGlzIGhlYXJ0IHRvIGFwcHJvYWNoIHVudG8gbWU/IHNhaXRoIHRoZSBMT1JELgpBbmQgeWUgc2hhbGwgYmUgbXkgcGVvcGxlLCBhbmQgSSB3aWxsIGJlIHlvdXIgR29kLgpCZWhvbGQsIHRoZSB3aGlybHdpbmQgb2YgdGhlIExPUkQgZ29ldGggZm9ydGggd2l0aCBmdXJ5LCBhIGNvbnRpbnVpbmcgd2hpcmx3aW5kOiBpdCBzaGFsbCBmYWxsIHdpdGggcGFpbiB1cG9uIHRoZSBoZWFkIG9mIHRoZSB3aWNrZWQuClRoZSBmaWVyY2UgYW5nZXIgb2YgdGhlIExPUkQgc2hhbGwgbm90IHJldHVybiwgdW50aWwgaGUgaGF0aCBkb25lIGl0LCBhbmQgdW50aWwgaGUgaGF2ZSBwZXJmb3JtZWQgdGhlIGludGVudHMgb2YgaGlzIGhlYXJ0OiBpbiB0aGUgbGF0dGVyIGRheXMgeWUgc2hhbGwgY29uc2lkZXIgaXQuCkF0IHRoZSBzYW1lIHRpbWUsIHNhaXRoIHRoZSBMT1JELCB3aWxsIEkgYmUgdGhlIEdvZCBvZiBhbGwgdGhlIGZhbWlsaWVzIG9mIElzcmFlbCwgYW5kIHRoZXkgc2hhbGwgYmUgbXkgcGVvcGxlLgpUaHVzIHNhaXRoIHRoZSBMT1JELCBUaGUgcGVvcGxlIHdoaWNoIHdlcmUgbGVmdCBvZiB0aGUgc3dvcmQgZm91bmQgZ3JhY2UgaW4gdGhlIHdpbGRlcm5lc3M7IGV2ZW4gSXNyYWVsLCB3aGVuIEkgd2VudCB0byBjYXVzZSBoaW0gdG8gcmVzdC4KVGhlIExPUkQgaGF0aCBhcHBlYXJlZCBvZiBvbGQgdW50byBtZSwgc2F5aW5nLCBZZWEsIEkgaGF2ZSBsb3ZlZCB0aGVlIHdpdGggYW4gZXZlcmxhc3RpbmcgbG92ZTogdGhlcmVmb3JlIHdpdGggbG92aW5na2luZG5lc3MgaGF2ZSBJIGRyYXduIHRoZWUuCkFnYWluIEkgd2lsbCBidWlsZCB0aGVlLCBhbmQgdGhvdSBzaGFsdCBiZSBidWlsdCwgTyB2aXJnaW4gb2YgSXNyYWVsOiB0aG91IHNoYWx0IGFnYWluIGJlIGFkb3JuZWQgd2l0aCB0aHkgdGFicmV0cywgYW5kIHNoYWx0IGdvIGZvcnRoIGluIHRoZSBkYW5jZXMgb2YgdGhlbSB0aGF0IG1ha2UgbWVycnkuClRob3Ugc2hhbHQgeWV0IHBsYW50IHZpbmVzIHVwb24gdGhlIG1vdW50YWlucyBvZiBTYW1hcmlhOiB0aGUgcGxhbnRlcnMgc2hhbGwgcGxhbnQsIGFuZCBzaGFsbCBlYXQgdGhlbSBhcyBjb21tb24gdGhpbmdzLgpGb3IgdGhlcmUgc2hhbGwgYmUgYSBkYXksIHRoYXQgdGhlIHdhdGNobWVuIHVwb24gdGhlIG1vdW50IEVwaHJhaW0gc2hhbGwgY3J5LCBBcmlzZSB5ZSwgYW5kIGxldCB1cyBnbyB1cCB0byBaaW9uIHVudG8gdGhlIExPUkQgb3VyIEdvZC4KRm9yIHRodXMgc2FpdGggdGhlIExPUkQ7IFNpbmcgd2l0aCBnbGFkbmVzcyBmb3IgSmFjb2IsIGFuZCBzaG91dCBhbW9uZyB0aGUgY2hpZWYgb2YgdGhlIG5hdGlvbnM6IHB1Ymxpc2ggeWUsIHByYWlzZSB5ZSwgYW5kIHNheSwgTyBMT1JELCBzYXZlIHRoeSBwZW9wbGUsIHRoZSByZW1uYW50IG9mIElzcmFlbC4KQmVob2xkLCBJIHdpbGwgYnJpbmcgdGhlbSBmcm9tIHRoZSBub3J0aCBjb3VudHJ5LCBhbmQgZ2F0aGVyIHRoZW0gZnJvbSB0aGUgY29hc3RzIG9mIHRoZSBlYXJ0aCwgYW5kIHdpdGggdGhlbSB0aGUgYmxpbmQgYW5kIHRoZSBsYW1lLCB0aGUgd29tYW4gd2l0aCBjaGlsZCBhbmQgaGVyIHRoYXQgdHJhdmFpbGV0aCB3aXRoIGNoaWxkIHRvZ2V0aGVyOiBhIGdyZWF0IGNvbXBhbnkgc2hhbGwgcmV0dXJuIHRoaXRoZXIuClRoZXkgc2hhbGwgY29tZSB3aXRoIHdlZXBpbmcsIGFuZCB3aXRoIHN1cHBsaWNhdGlvbnMgd2lsbCBJIGxlYWQgdGhlbTogSSB3aWxsIGNhdXNlIHRoZW0gdG8gd2FsayBieSB0aGUgcml2ZXJzIG9mIHdhdGVycyBpbiBhIHN0cmFpZ2h0IHdheSwgd2hlcmVpbiB0aGV5IHNoYWxsIG5vdCBzdHVtYmxlOiBmb3IgSSBhbSBhIGZhdGhlciB0byBJc3JhZWwsIGFuZCBFcGhyYWltIGlzIG15IGZpcnN0Ym9ybi4KSGVhciB0aGUgd29yZCBvZiB0aGUgTE9SRCwgTyB5ZSBuYXRpb25zLCBhbmQgZGVjbGFyZSBpdCBpbiB0aGUgaXNsZXMgYWZhciBvZmYsIGFuZCBzYXksIEhlIHRoYXQgc2NhdHRlcmVkIElzcmFlbCB3aWxsIGdhdGhlciBoaW0sIGFuZCBrZWVwIGhpbSwgYXMgYSBzaGVwaGVyZCBkb3RoIGhpcyBmbG9jay4KRm9yIHRoZSBMT1JEIGhhdGggcmVkZWVtZWQgSmFjb2IsIGFuZCByYW5zb21lZCBoaW0gZnJvbSB0aGUgaGFuZCBvZiBoaW0gdGhhdCB3YXMgc3Ryb25nZXIgdGhhbiBoZS4KVGhlcmVmb3JlIHRoZXkgc2hhbGwgY29tZSBhbmQgc2luZyBpbiB0aGUgaGVpZ2h0IG9mIFppb24sIGFuZCBzaGFsbCBmbG93IHRvZ2V0aGVyIHRvIHRoZSBnb29kbmVzcyBvZiB0aGUgTE9SRCwgZm9yIHdoZWF0LCBhbmQgZm9yIHdpbmUsIGFuZCBmb3Igb2lsLCBhbmQgZm9yIHRoZSB5b3VuZyBvZiB0aGUgZmxvY2sgYW5kIG9mIHRoZSBoZXJkOiBhbmQgdGhlaXIgc291bCBzaGFsbCBiZSBhcyBhIHdhdGVyZWQgZ2FyZGVuOyBhbmQgdGhleSBzaGFsbCBub3Qgc29ycm93IGFueSBtb3JlIGF0IGFsbC4KVGhlbiBzaGFsbCB0aGUgdmlyZ2luIHJlam9pY2UgaW4gdGhlIGRhbmNlLCBib3RoIHlvdW5nIG1lbiBhbmQgb2xkIHRvZ2V0aGVyOiBmb3IgSSB3aWxsIHR1cm4gdGhlaXIgbW91cm5pbmcgaW50byBqb3ksIGFuZCB3aWxsIGNvbWZvcnQgdGhlbSwgYW5kIG1ha2UgdGhlbSByZWpvaWNlIGZyb20gdGhlaXIgc29ycm93LgpBbmQgSSB3aWxsIHNhdGlhdGUgdGhlIHNvdWwgb2YgdGhlIHByaWVzdHMgd2l0aCBmYXRuZXNzLCBhbmQgbXkgcGVvcGxlIHNoYWxsIGJlIHNhdGlzZmllZCB3aXRoIG15IGdvb2RuZXNzLCBzYWl0aCB0aGUgTE9SRC4KVGh1cyBzYWl0aCB0aGUgTE9SRDsgQSB2b2ljZSB3YXMgaGVhcmQgaW4gUmFtYWgsIGxhbWVudGF0aW9uLCBhbmQgYml0dGVyIHdlZXBpbmc7IFJhaGVsIHdlZXBpbmcgZm9yIGhlciBjaGlsZHJlbiByZWZ1c2VkIHRvIGJlIGNvbWZvcnRlZCBmb3IgaGVyIGNoaWxkcmVuLCBiZWNhdXNlIHRoZXkgd2VyZSBub3QuClRodXMgc2FpdGggdGhlIExPUkQ7IFJlZnJhaW4gdGh5IHZvaWNlIGZyb20gd2VlcGluZywgYW5kIHRoaW5lIGV5ZXMgZnJvbSB0ZWFyczogZm9yIHRoeSB3b3JrIHNoYWxsIGJlIHJld2FyZGVkLCBzYWl0aCB0aGUgTE9SRDsgYW5kIHRoZXkgc2hhbGwgY29tZSBhZ2FpbiBmcm9tIHRoZSBsYW5kIG9mIHRoZSBlbmVteS4KQW5kIHRoZXJlIGlzIGhvcGUgaW4gdGhpbmUgZW5kLCBzYWl0aCB0aGUgTE9SRCwgdGhhdCB0aHkgY2hpbGRyZW4gc2hhbGwgY29tZSBhZ2FpbiB0byB0aGVpciBvd24gYm9yZGVyLgpJIGhhdmUgc3VyZWx5IGhlYXJkIEVwaHJhaW0gYmVtb2FuaW5nIGhpbXNlbGYgdGh1czsgVGhvdSBoYXN0IGNoYXN0aXNlZCBtZSwgYW5kIEkgd2FzIGNoYXN0aXNlZCwgYXMgYSBidWxsb2NrIHVuYWNjdXN0b21lZCB0byB0aGUgeW9rZTogdHVybiB0aG91IG1lLCBhbmQgSSBzaGFsbCBiZSB0dXJuZWQ7IGZvciB0aG91IGFydCB0aGUgTE9SRCBteSBHb2QuClN1cmVseSBhZnRlciB0aGF0IEkgd2FzIHR1cm5lZCwgSSByZXBlbnRlZDsgYW5kIGFmdGVyIHRoYXQgSSB3YXMgaW5zdHJ1Y3RlZCwgSSBzbW90ZSB1cG9uIG15IHRoaWdoOiBJIHdhcyBhc2hhbWVkLCB5ZWEsIGV2ZW4gY29uZm91bmRlZCwgYmVjYXVzZSBJIGRpZCBiZWFyIHRoZSByZXByb2FjaCBvZiBteSB5b3V0aC4KSXMgRXBocmFpbSBteSBkZWFyIHNvbj8gaXMgaGUgYSBwbGVhc2FudCBjaGlsZD8gZm9yIHNpbmNlIEkgc3Bha2UgYWdhaW5zdCBoaW0sIEkgZG8gZWFybmVzdGx5IHJlbWVtYmVyIGhpbSBzdGlsbDogdGhlcmVmb3JlIG15IGJvd2VscyBhcmUgdHJvdWJsZWQgZm9yIGhpbTsgSSB3aWxsIHN1cmVseSBoYXZlIG1lcmN5IHVwb24gaGltLCBzYWl0aCB0aGUgTE9SRC4KU2V0IHRoZWUgdXAgd2F5bWFya3MsIG1ha2UgdGhlZSBoaWdoIGhlYXBzOiBzZXQgdGhpbmUgaGVhcnQgdG93YXJkIHRoZSBoaWdod2F5LCBldmVuIHRoZSB3YXkgd2hpY2ggdGhvdSB3ZW50ZXN0OiB0dXJuIGFnYWluLCBPIHZpcmdpbiBvZiBJc3JhZWwsIHR1cm4gYWdhaW4gdG8gdGhlc2UgdGh5IGNpdGllcy4KSG93IGxvbmcgd2lsdCB0aG91IGdvIGFib3V0LCBPIHRob3UgYmFja3NsaWRpbmcgZGF1Z2h0ZXI/IGZvciB0aGUgTE9SRCBoYXRoIGNyZWF0ZWQgYSBuZXcgdGhpbmcgaW4gdGhlIGVhcnRoLCBBIHdvbWFuIHNoYWxsIGNvbXBhc3MgYSBtYW4uClRodXMgc2FpdGggdGhlIExPUkQgb2YgaG9zdHMsIHRoZSBHb2Qgb2YgSXNyYWVsOyBBcyB5ZXQgdGhleSBzaGFsbCB1c2UgdGhpcyBzcGVlY2ggaW4gdGhlIGxhbmQgb2YgSnVkYWggYW5kIGluIHRoZSBjaXRpZXMgdGhlcmVvZiwgd2hlbiBJIHNoYWxsIGJyaW5nIGFnYWluIHRoZWlyIGNhcHRpdml0eTsgVGhlIExPUkQgYmxlc3MgdGhlZSwgTyBoYWJpdGF0aW9uIG9mIGp1c3RpY2UsIGFuZCBtb3VudGFpbiBvZiBob2xpbmVzcy4KQW5kIHRoZXJlIHNoYWxsIGR3ZWxsIGluIEp1ZGFoIGl0c2VsZiwgYW5kIGluIGFsbCB0aGUgY2l0aWVzIHRoZXJlb2YgdG9nZXRoZXIsIGh1c2JhbmRtZW4sIGFuZCB0aGV5IHRoYXQgZ28gZm9ydGggd2l0aCBmbG9ja3MuCkZvciBJIGhhdmUgc2F0aWF0ZWQgdGhlIHdlYXJ5IHNvdWwsIGFuZCBJIGhhdmUgcmVwbGVuaXNoZWQgZXZlcnkgc29ycm93ZnVsIHNvdWwuClVwb24gdGhpcyBJIGF3YWtlZCwgYW5kIGJlaGVsZDsgYW5kIG15IHNsZWVwIHdhcyBzd2VldCB1bnRvIG1lLgpCZWhvbGQsIHRoZSBkYXlzIGNvbWUsIHNhaXRoIHRoZSBMT1JELCB0aGF0IEkgd2lsbCBzb3cgdGhlIGhvdXNlIG9mIElzcmFlbCBhbmQgdGhlIGhvdXNlIG9mIEp1ZGFoIHdpdGggdGhlIHNlZWQgb2YgbWFuLCBhbmQgd2l0aCB0aGUgc2VlZCBvZiBiZWFzdC4KQW5kIGl0IHNoYWxsIGNvbWUgdG8gcGFzcywgdGhhdCBsaWtlIGFzIEkgaGF2ZSB3YXRjaGVkIG92ZXIgdGhlbSwgdG8gcGx1Y2sgdXAsIGFuZCB0byBicmVhayBkb3duLCBhbmQgdG8gdGhyb3cgZG93biwgYW5kIHRvIGRlc3Ryb3ksIGFuZCB0byBhZmZsaWN0OyBzbyB3aWxsIEkgd2F0Y2ggb3ZlciB0aGVtLCB0byBidWlsZCwgYW5kIHRvIHBsYW50LCBzYWl0aCB0aGUgTE9SRC4KSW4gdGhvc2UgZGF5cyB0aGV5IHNoYWxsIHNheSBubyBtb3JlLCBUaGUgZmF0aGVycyBoYXZlIGVhdGVuIGEgc291ciBncmFwZSwgYW5kIHRoZSBjaGlsZHJlbidzIHRlZXRoIGFyZSBzZXQgb24gZWRnZS4KQnV0IGV2ZXJ5IG9uZSBzaGFsbCBkaWUgZm9yIGhpcyBvd24gaW5pcXVpdHk6IGV2ZXJ5IG1hbiB0aGF0IGVhdGV0aCB0aGUgc291ciBncmFwZSwgaGlzIHRlZXRoIHNoYWxsIGJlIHNldCBvbiBlZGdlLgpCZWhvbGQsIHRoZSBkYXlzIGNvbWUsIHNhaXRoIHRoZSBMT1JELCB0aGF0IEkgd2lsbCBtYWtlIGEgbmV3IGNvdmVuYW50IHdpdGggdGhlIGhvdXNlIG9mIElzcmFlbCwgYW5kIHdpdGggdGhlIGhvdXNlIG9mIEp1ZGFoOgpOb3QgYWNjb3JkaW5nIHRvIHRoZSBjb3ZlbmFudCB0aGF0IEkgbWFkZSB3aXRoIHRoZWlyIGZhdGhlcnMgaW4gdGhlIGRheSB0aGF0IEkgdG9vayB0aGVtIGJ5IHRoZSBoYW5kIHRvIGJyaW5nIHRoZW0gb3V0IG9mIHRoZSBsYW5kIG9mIEVneXB0OyB3aGljaCBteSBjb3ZlbmFudCB0aGV5IGJyYWtlLCBhbHRob3VnaCBJIHdhcyBhbiBodXNiYW5kIHVudG8gdGhlbSwgc2FpdGggdGhlIExPUkQ6CkJ1dCB0aGlzIHNoYWxsIGJlIHRoZSBjb3ZlbmFudCB0aGF0IEkgd2lsbCBtYWtlIHdpdGggdGhlIGhvdXNlIG9mIElzcmFlbDsgQWZ0ZXIgdGhvc2UgZGF5cywgc2FpdGggdGhlIExPUkQsIEkgd2lsbCBwdXQgbXkgbGF3IGluIHRoZWlyIGlud2FyZCBwYXJ0cywgYW5kIHdyaXRlIGl0IGluIHRoZWlyIGhlYXJ0czsgYW5kIHdpbGwgYmUgdGhlaXIgR29kLCBhbmQgdGhleSBzaGFsbCBiZSBteSBwZW9wbGUuCkFuZCB0aGV5IHNoYWxsIHRlYWNoIG5vIG1vcmUgZXZlcnkgbWFuIGhpcyBuZWlnaGJvdXIsIGFuZCBldmVyeSBtYW4gaGlzIGJyb3RoZXIsIHNheWluZywgS25vdyB0aGUgTE9SRDogZm9yIHRoZXkgc2hhbGwgYWxsIGtub3cgbWUsIGZyb20gdGhlIGxlYXN0IG9mIHRoZW0gdW50byB0aGUgZ3JlYXRlc3Qgb2YgdGhlbSwgc2FpdGggdGhlIExPUkQ6IGZvciBJIHdpbGwgZm9yZ2l2ZSB0aGVpciBpbmlxdWl0eSwgYW5kIEkgd2lsbCByZW1lbWJlciB0aGVpciBzaW4gbm8gbW9yZS4KVGh1cyBzYWl0aCB0aGUgTE9SRCwgd2hpY2ggZ2l2ZXRoIHRoZSBzdW4gZm9yIGEgbGlnaHQgYnkgZGF5LCBhbmQgdGhlIG9yZGluYW5jZXMgb2YgdGhlIG1vb24gYW5kIG9mIHRoZSBzdGFycyBmb3IgYSBsaWdodCBieSBuaWdodCwgd2hpY2ggZGl2aWRldGggdGhlIHNlYSB3aGVuIHRoZSB3YXZlcyB0aGVyZW9mIHJvYXI7IFRoZSBMT1JEIG9mIGhvc3RzIGlzIGhpcyBuYW1lOgpJZiB0aG9zZSBvcmRpbmFuY2VzIGRlcGFydCBmcm9tIGJlZm9yZSBtZSwgc2FpdGggdGhlIExPUkQsIHRoZW4gdGhlIHNlZWQgb2YgSXNyYWVsIGFsc28gc2hhbGwgY2Vhc2UgZnJvbSBiZWluZyBhIG5hdGlvbiBiZWZvcmUgbWUgZm9yIGV2ZXIuClRodXMgc2FpdGggdGhlIExPUkQ7IElmIGhlYXZlbiBhYm92ZSBjYW4gYmUgbWVhc3VyZWQsIGFuZCB0aGUgZm91bmRhdGlvbnMgb2YgdGhlIGVhcnRoIHNlYXJjaGVkIG91dCBiZW5lYXRoLCBJIHdpbGwgYWxzbyBjYXN0IG9mZiBhbGwgdGhlIHNlZWQgb2YgSXNyYWVsIGZvciBhbGwgdGhhdCB0aGV5IGhhdmUgZG9uZSwgc2FpdGggdGhlIExPUkQuCkJlaG9sZCwgdGhlIGRheXMgY29tZSwgc2FpdGggdGhlIExPUkQsIHRoYXQgdGhlIGNpdHkgc2hhbGwgYmUgYnVpbHQgdG8gdGhlIExPUkQgZnJvbSB0aGUgdG93ZXIgb2YgSGFuYW5lZWwgdW50byB0aGUgZ2F0ZSBvZiB0aGUgY29ybmVyLgpBbmQgdGhlIG1lYXN1cmluZyBsaW5lIHNoYWxsIHlldCBnbyBmb3J0aCBvdmVyIGFnYWluc3QgaXQgdXBvbiB0aGUgaGlsbCBHYXJlYiwgYW5kIHNoYWxsIGNvbXBhc3MgYWJvdXQgdG8gR29hdGguCkFuZCB0aGUgd2hvbGUgdmFsbGV5IG9mIHRoZSBkZWFkIGJvZGllcywgYW5kIG9mIHRoZSBhc2hlcywgYW5kIGFsbCB0aGUgZmllbGRzIHVudG8gdGhlIGJyb29rIG9mIEtpZHJvbiwgdW50byB0aGUgY29ybmVyIG9mIHRoZSBob3JzZSBnYXRlIHRvd2FyZCB0aGUgZWFzdCwgc2hhbGwgYmUgaG9seSB1bnRvIHRoZSBMT1JEOyBpdCBzaGFsbCBub3QgYmUgcGx1Y2tlZCB1cCwgbm9yIHRocm93biBkb3duIGFueSBtb3JlIGZvciBldmVyLgpUaGUgd29yZCB0aGF0IGNhbWUgdG8gSmVyZW1pYWggZnJvbSB0aGUgTE9SRCBpbiB0aGUgdGVudGggeWVhciBvZiBaZWRla2lhaCBraW5nIG9mIEp1ZGFoLCB3aGljaCB3YXMgdGhlIGVpZ2h0ZWVudGggeWVhciBvZiBOZWJ1Y2hhZHJlenphci4KRm9yIHRoZW4gdGhlIGtpbmcgb2YgQmFieWxvbidzIGFybXkgYmVzaWVnZWQgSmVydXNhbGVtOiBhbmQgSmVyZW1pYWggdGhlIHByb3BoZXQgd2FzIHNodXQgdXAgaW4gdGhlIGNvdXJ0IG9mIHRoZSBwcmlzb24sIHdoaWNoIHdhcyBpbiB0aGUga2luZyBvZiBKdWRhaCdzIGhvdXNlLgpGb3IgWmVkZWtpYWgga2luZyBvZiBKdWRhaCBoYWQgc2h1dCBoaW0gdXAsIHNheWluZywgV2hlcmVmb3JlIGRvc3QgdGhvdSBwcm9waGVzeSwgYW5kIHNheSwgVGh1cyBzYWl0aCB0aGUgTE9SRCwgQmVob2xkLCBJIHdpbGwgZ2l2ZSB0aGlzIGNpdHkgaW50byB0aGUgaGFuZCBvZiB0aGUga2luZyBvZiBCYWJ5bG9uLCBhbmQgaGUgc2hhbGwgdGFrZSBpdDsKQW5kIFplZGVraWFoIGtpbmcgb2YgSnVkYWggc2hhbGwgbm90IGVzY2FwZSBvdXQgb2YgdGhlIGhhbmQgb2YgdGhlIENoYWxkZWFucywgYnV0IHNoYWxsIHN1cmVseSBiZSBkZWxpdmVyZWQgaW50byB0aGUgaGFuZCBvZiB0aGUga2luZyBvZiBCYWJ5bG9uLCBhbmQgc2hhbGwgc3BlYWsgd2l0aCBoaW0gbW91dGggdG8gbW91dGgsIGFuZCBoaXMgZXllcyBzaGFsbCBiZWhvbGQgaGlzIGV5ZXM7CkFuZCBoZSBzaGFsbCBsZWFkIFplZGVraWFoIHRvIEJhYnlsb24sIGFuZCB0aGVyZSBzaGFsbCBoZSBiZSB1bnRpbCBJIHZpc2l0IGhpbSwgc2FpdGggdGhlIExPUkQ6IHRob3VnaCB5ZSBmaWdodCB3aXRoIHRoZSBDaGFsZGVhbnMsIHllIHNoYWxsIG5vdCBwcm9zcGVyLgpBbmQgSmVyZW1pYWggc2FpZCwgVGhlIHdvcmQgb2YgdGhlIExPUkQgY2FtZSB1bnRvIG1lLCBzYXlpbmcsCkJlaG9sZCwgSGFuYW1lZWwgdGhlIHNvbiBvZiBTaGFsbHVtIHRoaW5lIHVuY2xlIHNoYWxsIGNvbWUgdW50byB0aGVlIHNheWluZywgQnV5IHRoZWUgbXkgZmllbGQgdGhhdCBpcyBpbiBBbmF0aG90aDogZm9yIHRoZSByaWdodCBvZiByZWRlbXB0aW9uIGlzIHRoaW5lIHRvIGJ1eSBpdC4KU28gSGFuYW1lZWwgbWluZSB1bmNsZSdzIHNvbiBjYW1lIHRvIG1lIGluIHRoZSBjb3VydCBvZiB0aGUgcHJpc29uIGFjY29yZGluZyB0byB0aGUgd29yZCBvZiB0aGUgTE9SRCwgYW5kIHNhaWQgdW50byBtZSwgQnV5IG15IGZpZWxkLCBJIHByYXkgdGhlZSwgdGhhdCBpcyBpbiBBbmF0aG90aCwgd2hpY2ggaXMgaW4gdGhlIGNvdW50cnkgb2YgQmVuamFtaW46IGZvciB0aGUgcmlnaHQgb2YgaW5oZXJpdGFuY2UgaXMgdGhpbmUsIGFuZCB0aGUgcmVkZW1wdGlvbiBpcyB0aGluZTsgYnV5IGl0IGZvciB0aHlzZWxmLiBUaGVuIEkga25ldyB0aGF0IHRoaXMgd2FzIHRoZSB3b3JkIG9mIHRoZSBMT1JELgpBbmQgSSBib3VnaHQgdGhlIGZpZWxkIG9mIEhhbmFtZWVsIG15IHVuY2xlJ3Mgc29uLCB0aGF0IHdhcyBpbiBBbmF0aG90aCwgYW5kIHdlaWdoZWQgaGltIHRoZSBtb25leSwgZXZlbiBzZXZlbnRlZW4gc2hla2VscyBvZiBzaWx2ZXIuCkFuZCBJIHN1YnNjcmliZWQgdGhlIGV2aWRlbmNlLCBhbmQgc2VhbGVkIGl0LCBhbmQgdG9vayB3aXRuZXNzZXMsIGFuZCB3ZWlnaGVkIGhpbSB0aGUgbW9uZXkgaW4gdGhlIGJhbGFuY2VzLgpTbyBJIHRvb2sgdGhlIGV2aWRlbmNlIG9mIHRoZSBwdXJjaGFzZSwgYm90aCB0aGF0IHdoaWNoIHdhcyBzZWFsZWQgYWNjb3JkaW5nIHRvIHRoZSBsYXcgYW5kIGN1c3RvbSwgYW5kIHRoYXQgd2hpY2ggd2FzIG9wZW46CkFuZCBJIGdhdmUgdGhlIGV2aWRlbmNlIG9mIHRoZSBwdXJjaGFzZSB1bnRvIEJhcnVjaCB0aGUgc29uIG9mIE5lcmlhaCwgdGhlIHNvbiBvZiBNYWFzZWlhaCwgaW4gdGhlIHNpZ2h0IG9mIEhhbmFtZWVsIG1pbmUgdW5jbGUncyBzb24sIGFuZCBpbiB0aGUgcHJlc2VuY2Ugb2YgdGhlIHdpdG5lc3NlcyB0aGF0IHN1YnNjcmliZWQgdGhlIGJvb2sgb2YgdGhlIHB1cmNoYXNlLCBiZWZvcmUgYWxsIHRoZSBKZXdzIHRoYXQgc2F0IGluIHRoZSBjb3VydCBvZiB0aGUgcHJpc29uLgpBbmQgSSBjaGFyZ2VkIEJhcnVjaCBiZWZvcmUgdGhlbSwgc2F5aW5nLApUaHVzIHNhaXRoIHRoZSBMT1JEIG9mIGhvc3RzLCB0aGUgR29kIG9mIElzcmFlbDsgVGFrZSB0aGVzZSBldmlkZW5jZXMsIHRoaXMgZXZpZGVuY2Ugb2YgdGhlIHB1cmNoYXNlLCBib3RoIHdoaWNoIGlzIHNlYWxlZCwgYW5kIHRoaXMgZXZpZGVuY2Ugd2hpY2ggaXMgb3BlbjsgYW5kIHB1dCB0aGVtIGluIGFuIGVhcnRoZW4gdmVzc2VsLCB0aGF0IHRoZXkgbWF5IGNvbnRpbnVlIG1hbnkgZGF5cy4KRm9yIHRodXMgc2FpdGggdGhlIExPUkQgb2YgaG9zdHMsIHRoZSBHb2Qgb2YgSXNyYWVsOyBIb3VzZXMgYW5kIGZpZWxkcyBhbmQgdmluZXlhcmRzIHNoYWxsIGJlIHBvc3Nlc3NlZCBhZ2FpbiBpbiB0aGlzIGxhbmQuCk5vdyB3aGVuIEkgaGFkIGRlbGl2ZXJlZCB0aGUgZXZpZGVuY2Ugb2YgdGhlIHB1cmNoYXNlIHVudG8gQmFydWNoIHRoZSBzb24gb2YgTmVyaWFoLCBJIHByYXllZCB1bnRvIHRoZSBMT1JELCBzYXlpbmcsCkFoIExvcmQgR09EISBiZWhvbGQsIHRob3UgaGFzdCBtYWRlIHRoZSBoZWF2ZW4gYW5kIHRoZSBlYXJ0aCBieSB0aHkgZ3JlYXQgcG93ZXIgYW5kIHN0cmV0Y2hlZCBvdXQgYXJtLCBhbmQgdGhlcmUgaXMgbm90aGluZyB0b28gaGFyZCBmb3IgdGhlZToKVGhvdSBzaGV3ZXN0IGxvdmluZ2tpbmRuZXNzIHVudG8gdGhvdXNhbmRzLCBhbmQgcmVjb21wZW5zZXN0IHRoZSBpbmlxdWl0eSBvZiB0aGUgZmF0aGVycyBpbnRvIHRoZSBib3NvbSBvZiB0aGVpciBjaGlsZHJlbiBhZnRlciB0aGVtOiB0aGUgR3JlYXQsIHRoZSBNaWdodHkgR29kLCB0aGUgTE9SRCBvZiBob3N0cywgaXMgaGlzIG5hbWUsCkdyZWF0IGluIGNvdW5zZWwsIGFuZCBtaWdodHkgaW4gd29yazogZm9yIHRoaW5lIGV5ZXMgYXJlIG9wZW4gdXBvbiBhbGwgdGhlIHdheXMgb2YgdGhlIHNvbnMgb2YgbWVuOiB0byBnaXZlIGV2ZXJ5IG9uZSBhY2NvcmRpbmcgdG8gaGlzIHdheXMsIGFuZCBhY2NvcmRpbmcgdG8gdGhlIGZydWl0IG9mIGhpcyBkb2luZ3M6CldoaWNoIGhhc3Qgc2V0IHNpZ25zIGFuZCB3b25kZXJzIGluIHRoZSBsYW5kIG9mIEVneXB0LCBldmVuIHVudG8gdGhpcyBkYXksIGFuZCBpbiBJc3JhZWwsIGFuZCBhbW9uZyBvdGhlciBtZW47IGFuZCBoYXN0IG1hZGUgdGhlZSBhIG5hbWUsIGFzIGF0IHRoaXMgZGF5OwpBbmQgaGFzdCBicm91Z2h0IGZvcnRoIHRoeSBwZW9wbGUgSXNyYWVsIG91dCBvZiB0aGUgbGFuZCBvZiBFZ3lwdCB3aXRoIHNpZ25zLCBhbmQgd2l0aCB3b25kZXJzLCBhbmQgd2l0aCBhIHN0cm9uZyBoYW5kLCBhbmQgd2l0aCBhIHN0cmV0Y2hlZCBvdXQgYXJtLCBhbmQgd2l0aCBncmVhdCB0ZXJyb3I7CkFuZCBoYXN0IGdpdmVuIHRoZW0gdGhpcyBsYW5kLCB3aGljaCB0aG91IGRpZHN0IHN3ZWFyIHRvIHRoZWlyIGZhdGhlcnMgdG8gZ2l2ZSB0aGVtLCBhIGxhbmQgZmxvd2luZyB3aXRoIG1pbGsgYW5kIGhvbmV5OwpBbmQgdGhleSBjYW1lIGluLCBhbmQgcG9zc2Vzc2VkIGl0OyBidXQgdGhleSBvYmV5ZWQgbm90IHRoeSB2b2ljZSwgbmVpdGhlciB3YWxrZWQgaW4gdGh5IGxhdzsgdGhleSBoYXZlIGRvbmUgbm90aGluZyBvZiBhbGwgdGhhdCB0aG91IGNvbW1hbmRlZHN0IHRoZW0gdG8gZG86IHRoZXJlZm9yZSB0aG91IGhhc3QgY2F1c2VkIGFsbCB0aGlzIGV2aWwgdG8gY29tZSB1cG9uIHRoZW06CkJlaG9sZCB0aGUgbW91bnRzLCB0aGV5IGFyZSBjb21lIHVudG8gdGhlIGNpdHkgdG8gdGFrZSBpdDsgYW5kIHRoZSBjaXR5IGlzIGdpdmVuIGludG8gdGhlIGhhbmQgb2YgdGhlIENoYWxkZWFucywgdGhhdCBmaWdodCBhZ2FpbnN0IGl0LCBiZWNhdXNlIG9mIHRoZSBzd29yZCwgYW5kIG9mIHRoZSBmYW1pbmUsIGFuZCBvZiB0aGUgcGVzdGlsZW5jZTogYW5kIHdoYXQgdGhvdSBoYXN0IHNwb2tlbiBpcyBjb21lIHRvIHBhc3M7IGFuZCwgYmVob2xkLCB0aG91IHNlZXN0IGl0LgpBbmQgdGhvdSBoYXN0IHNhaWQgdW50byBtZSwgTyBMb3JkIEdPRCwgQnV5IHRoZWUgdGhlIGZpZWxkIGZvciBtb25leSwgYW5kIHRha2Ugd2l0bmVzc2VzOyBmb3IgdGhlIGNpdHkgaXMgZ2l2ZW4gaW50byB0aGUgaGFuZCBvZiB0aGUgQ2hhbGRlYW5zLgpUaGVuIGNhbWUgdGhlIHdvcmQgb2YgdGhlIExPUkQgdW50byBKZXJlbWlhaCwgc2F5aW5nLApCZWhvbGQsIEkgYW0gdGhlIExPUkQsIHRoZSBHb2Qgb2YgYWxsIGZsZXNoOiBpcyB0aGVyZSBhbnkgdGhpbmcgdG9vIGhhcmQgZm9yIG1lPwpUaGVyZWZvcmUgdGh1cyBzYWl0aCB0aGUgTE9SRDsgQmVob2xkLCBJIHdpbGwgZ2l2ZSB0aGlzIGNpdHkgaW50byB0aGUgaGFuZCBvZiB0aGUgQ2hhbGRlYW5zLCBhbmQgaW50byB0aGUgaGFuZCBvZiBOZWJ1Y2hhZHJlenphciBraW5nIG9mIEJhYnlsb24sIGFuZCBoZSBzaGFsbCB0YWtlIGl0OgpBbmQgdGhlIENoYWxkZWFucywgdGhhdCBmaWdodCBhZ2FpbnN0IHRoaXMgY2l0eSwgc2hhbGwgY29tZSBhbmQgc2V0IGZpcmUgb24gdGhpcyBjaXR5LCBhbmQgYnVybiBpdCB3aXRoIHRoZSBob3VzZXMsIHVwb24gd2hvc2Ugcm9vZnMgdGhleSBoYXZlIG9mZmVyZWQgaW5jZW5zZSB1bnRvIEJhYWwsIGFuZCBwb3VyZWQgb3V0IGRyaW5rIG9mZmVyaW5ncyB1bnRvIG90aGVyIGdvZHMsIHRvIHByb3Zva2UgbWUgdG8gYW5nZXIuCkZvciB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGFuZCB0aGUgY2hpbGRyZW4gb2YgSnVkYWggaGF2ZSBvbmx5IGRvbmUgZXZpbCBiZWZvcmUgbWUgZnJvbSB0aGVpciB5b3V0aDogZm9yIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgaGF2ZSBvbmx5IHByb3Zva2VkIG1lIHRvIGFuZ2VyIHdpdGggdGhlIHdvcmsgb2YgdGhlaXIgaGFuZHMsIHNhaXRoIHRoZSBMT1JELgpGb3IgdGhpcyBjaXR5IGhhdGggYmVlbiB0byBtZSBhcyBhIHByb3ZvY2F0aW9uIG9mIG1pbmUgYW5nZXIgYW5kIG9mIG15IGZ1cnkgZnJvbSB0aGUgZGF5IHRoYXQgdGhleSBidWlsdCBpdCBldmVuIHVudG8gdGhpcyBkYXk7IHRoYXQgSSBzaG91bGQgcmVtb3ZlIGl0IGZyb20gYmVmb3JlIG15IGZhY2UsCkJlY2F1c2Ugb2YgYWxsIHRoZSBldmlsIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgYW5kIG9mIHRoZSBjaGlsZHJlbiBvZiBKdWRhaCwgd2hpY2ggdGhleSBoYXZlIGRvbmUgdG8gcHJvdm9rZSBtZSB0byBhbmdlciwgdGhleSwgdGhlaXIga2luZ3MsIHRoZWlyIHByaW5jZXMsIHRoZWlyIHByaWVzdHMsIGFuZCB0aGVpciBwcm9waGV0cywgYW5kIHRoZSBtZW4gb2YgSnVkYWgsIGFuZCB0aGUgaW5oYWJpdGFudHMgb2YgSmVydXNhbGVtLgpBbmQgdGhleSBoYXZlIHR1cm5lZCB1bnRvIG1lIHRoZSBiYWNrLCBhbmQgbm90IHRoZSBmYWNlOiB0aG91Z2ggSSB0YXVnaHQgdGhlbSwgcmlzaW5nIHVwIGVhcmx5IGFuZCB0ZWFjaGluZyB0aGVtLCB5ZXQgdGhleSBoYXZlIG5vdCBoZWFya2VuZWQgdG8gcmVjZWl2ZSBpbnN0cnVjdGlvbi4KQnV0IHRoZXkgc2V0IHRoZWlyIGFib21pbmF0aW9ucyBpbiB0aGUgaG91c2UsIHdoaWNoIGlzIGNhbGxlZCBieSBteSBuYW1lLCB0byBkZWZpbGUgaXQuCkFuZCB0aGV5IGJ1aWx0IHRoZSBoaWdoIHBsYWNlcyBvZiBCYWFsLCB3aGljaCBhcmUgaW4gdGhlIHZhbGxleSBvZiB0aGUgc29uIG9mIEhpbm5vbSwgdG8gY2F1c2UgdGhlaXIgc29ucyBhbmQgdGhlaXIgZGF1Z2h0ZXJzIHRvIHBhc3MgdGhyb3VnaCB0aGUgZmlyZSB1bnRvIE1vbGVjaDsgd2hpY2ggSSBjb21tYW5kZWQgdGhlbSBub3QsIG5laXRoZXIgY2FtZSBpdCBpbnRvIG15IG1pbmQsIHRoYXQgdGhleSBzaG91bGQgZG8gdGhpcyBhYm9taW5hdGlvbiwgdG8gY2F1c2UgSnVkYWggdG8gc2luLgpBbmQgbm93IHRoZXJlZm9yZSB0aHVzIHNhaXRoIHRoZSBMT1JELCB0aGUgR29kIG9mIElzcmFlbCwgY29uY2VybmluZyB0aGlzIGNpdHksIHdoZXJlb2YgeWUgc2F5LCBJdCBzaGFsbCBiZSBkZWxpdmVyZWQgaW50byB0aGUgaGFuZCBvZiB0aGUga2luZyBvZiBCYWJ5bG9uIGJ5IHRoZSBzd29yZCwgYW5kIGJ5IHRoZSBmYW1pbmUsIGFuZCBieSB0aGUgcGVzdGlsZW5jZTsKQmVob2xkLCBJIHdpbGwgZ2F0aGVyIHRoZW0gb3V0IG9mIGFsbCBjb3VudHJpZXMsIHdoaXRoZXIgSSBoYXZlIGRyaXZlbiB0aGVtIGluIG1pbmUgYW5nZXIsIGFuZCBpbiBteSBmdXJ5LCBhbmQgaW4gZ3JlYXQgd3JhdGg7IGFuZCBJIHdpbGwgYnJpbmcgdGhlbSBhZ2FpbiB1bnRvIHRoaXMgcGxhY2UsIGFuZCBJIHdpbGwgY2F1c2UgdGhlbSB0byBkd2VsbCBzYWZlbHk6CkFuZCB0aGV5IHNoYWxsIGJlIG15IHBlb3BsZSwgYW5kIEkgd2lsbCBiZSB0aGVpciBHb2Q6CkFuZCBJIHdpbGwgZ2l2ZSB0aGVtIG9uZSBoZWFydCwgYW5kIG9uZSB3YXksIHRoYXQgdGhleSBtYXkgZmVhciBtZSBmb3IgZXZlciwgZm9yIHRoZSBnb29kIG9mIHRoZW0sIGFuZCBvZiB0aGVpciBjaGlsZHJlbiBhZnRlciB0aGVtOgpBbmQgSSB3aWxsIG1ha2UgYW4gZXZlcmxhc3RpbmcgY292ZW5hbnQgd2l0aCB0aGVtLCB0aGF0IEkgd2lsbCBub3QgdHVybiBhd2F5IGZyb20gdGhlbSwgdG8gZG8gdGhlbSBnb29kOyBidXQgSSB3aWxsIHB1dCBteSBmZWFyIGluIHRoZWlyIGhlYXJ0cywgdGhhdCB0aGV5IHNoYWxsIG5vdCBkZXBhcnQgZnJvbSBtZS4KWWVhLCBJIHdpbGwgcmVqb2ljZSBvdmVyIHRoZW0gdG8gZG8gdGhlbSBnb29kLCBhbmQgSSB3aWxsIHBsYW50IHRoZW0gaW4gdGhpcyBsYW5kIGFzc3VyZWRseSB3aXRoIG15IHdob2xlIGhlYXJ0IGFuZCB3aXRoIG15IHdob2xlIHNvdWwuCkZvciB0aHVzIHNhaXRoIHRoZSBMT1JEOyBMaWtlIGFzIEkgaGF2ZSBicm91Z2h0IGFsbCB0aGlzIGdyZWF0IGV2aWwgdXBvbiB0aGlzIHBlb3BsZSwgc28gd2lsbCBJIGJyaW5nIHVwb24gdGhlbSBhbGwgdGhlIGdvb2QgdGhhdCBJIGhhdmUgcHJvbWlzZWQgdGhlbS4KQW5kIGZpZWxkcyBzaGFsbCBiZSBib3VnaHQgaW4gdGhpcyBsYW5kLCB3aGVyZW9mIHllIHNheSwgSXQgaXMgZGVzb2xhdGUgd2l0aG91dCBtYW4gb3IgYmVhc3Q7IGl0IGlzIGdpdmVuIGludG8gdGhlIGhhbmQgb2YgdGhlIENoYWxkZWFucy4KTWVuIHNoYWxsIGJ1eSBmaWVsZHMgZm9yIG1vbmV5LCBhbmQgc3Vic2NyaWJlIGV2aWRlbmNlcywgYW5kIHNlYWwgdGhlbSwgYW5kIHRha2Ugd2l0bmVzc2VzIGluIHRoZSBsYW5kIG9mIEJlbmphbWluLCBhbmQgaW4gdGhlIHBsYWNlcyBhYm91dCBKZXJ1c2FsZW0sIGFuZCBpbiB0aGUgY2l0aWVzIG9mIEp1ZGFoLCBhbmQgaW4gdGhlIGNpdGllcyBvZiB0aGUgbW91bnRhaW5zLCBhbmQgaW4gdGhlIGNpdGllcyBvZiB0aGUgdmFsbGV5LCBhbmQgaW4gdGhlIGNpdGllcyBvZiB0aGUgc291dGg6IGZvciBJIHdpbGwgY2F1c2UgdGhlaXIgY2FwdGl2aXR5IHRvIHJldHVybiwgc2FpdGggdGhlIExPUkQuCk1vcmVvdmVyIHRoZSB3b3JkIG9mIHRoZSBMT1JEIGNhbWUgdW50byBKZXJlbWlhaCB0aGUgc2Vjb25kIHRpbWUsIHdoaWxlIGhlIHdhcyB5ZXQgc2h1dCB1cCBpbiB0aGUgY291cnQgb2YgdGhlIHByaXNvbiwgc2F5aW5nLApUaHVzIHNhaXRoIHRoZSBMT1JEIHRoZSBtYWtlciB0aGVyZW9mLCB0aGUgTE9SRCB0aGF0IGZvcm1lZCBpdCwgdG8gZXN0YWJsaXNoIGl0OyB0aGUgTE9SRCBpcyBoaXMgbmFtZTsKQ2FsbCB1bnRvIG1lLCBhbmQgSSB3aWxsIGFuc3dlciB0aGVlLCBhbmQgc2hldyB0aGVlIGdyZWF0IGFuZCBtaWdodHkgdGhpbmdzLCB3aGljaCB0aG91IGtub3dlc3Qgbm90LgpGb3IgdGh1cyBzYWl0aCB0aGUgTE9SRCwgdGhlIEdvZCBvZiBJc3JhZWwsIGNvbmNlcm5pbmcgdGhlIGhvdXNlcyBvZiB0aGlzIGNpdHksIGFuZCBjb25jZXJuaW5nIHRoZSBob3VzZXMgb2YgdGhlIGtpbmdzIG9mIEp1ZGFoLCB3aGljaCBhcmUgdGhyb3duIGRvd24gYnkgdGhlIG1vdW50cywgYW5kIGJ5IHRoZSBzd29yZDsKVGhleSBjb21lIHRvIGZpZ2h0IHdpdGggdGhlIENoYWxkZWFucywgYnV0IGl0IGlzIHRvIGZpbGwgdGhlbSB3aXRoIHRoZSBkZWFkIGJvZGllcyBvZiBtZW4sIHdob20gSSBoYXZlIHNsYWluIGluIG1pbmUgYW5nZXIgYW5kIGluIG15IGZ1cnksIGFuZCBmb3IgYWxsIHdob3NlIHdpY2tlZG5lc3MgSSBoYXZlIGhpZCBteSBmYWNlIGZyb20gdGhpcyBjaXR5LgpCZWhvbGQsIEkgd2lsbCBicmluZyBpdCBoZWFsdGggYW5kIGN1cmUsIGFuZCBJIHdpbGwgY3VyZSB0aGVtLCBhbmQgd2lsbCByZXZlYWwgdW50byB0aGVtIHRoZSBhYnVuZGFuY2Ugb2YgcGVhY2UgYW5kIHRydXRoLgpBbmQgSSB3aWxsIGNhdXNlIHRoZSBjYXB0aXZpdHkgb2YgSnVkYWggYW5kIHRoZSBjYXB0aXZpdHkgb2YgSXNyYWVsIHRvIHJldHVybiwgYW5kIHdpbGwgYnVpbGQgdGhlbSwgYXMgYXQgdGhlIGZpcnN0LgpBbmQgSSB3aWxsIGNsZWFuc2UgdGhlbSBmcm9tIGFsbCB0aGVpciBpbmlxdWl0eSwgd2hlcmVieSB0aGV5IGhhdmUgc2lubmVkIGFnYWluc3QgbWU7IGFuZCBJIHdpbGwgcGFyZG9uIGFsbCB0aGVpciBpbmlxdWl0aWVzLCB3aGVyZWJ5IHRoZXkgaGF2ZSBzaW5uZWQsIGFuZCB3aGVyZWJ5IHRoZXkgaGF2ZSB0cmFuc2dyZXNzZWQgYWdhaW5zdCBtZS4KQW5kIGl0IHNoYWxsIGJlIHRvIG1lIGEgbmFtZSBvZiBqb3ksIGEgcHJhaXNlIGFuZCBhbiBob25vdXIgYmVmb3JlIGFsbCB0aGUgbmF0aW9ucyBvZiB0aGUgZWFydGgsIHdoaWNoIHNoYWxsIGhlYXIgYWxsIHRoZSBnb29kIHRoYXQgSSBkbyB1bnRvIHRoZW06IGFuZCB0aGV5IHNoYWxsIGZlYXIgYW5kIHRyZW1ibGUgZm9yIGFsbCB0aGUgZ29vZG5lc3MgYW5kIGZvciBhbGwgdGhlIHByb3NwZXJpdHkgdGhhdCBJIHByb2N1cmUgdW50byBpdC4KVGh1cyBzYWl0aCB0aGUgTE9SRDsgQWdhaW4gdGhlcmUgc2hhbGwgYmUgaGVhcmQgaW4gdGhpcyBwbGFjZSwgd2hpY2ggeWUgc2F5IHNoYWxsIGJlIGRlc29sYXRlIHdpdGhvdXQgbWFuIGFuZCB3aXRob3V0IGJlYXN0LCBldmVuIGluIHRoZSBjaXRpZXMgb2YgSnVkYWgsIGFuZCBpbiB0aGUgc3RyZWV0cyBvZiBKZXJ1c2FsZW0sIHRoYXQgYXJlIGRlc29sYXRlLCB3aXRob3V0IG1hbiwgYW5kIHdpdGhvdXQgaW5oYWJpdGFudCwgYW5kIHdpdGhvdXQgYmVhc3QsClRoZSB2b2ljZSBvZiBqb3ksIGFuZCB0aGUgdm9pY2Ugb2YgZ2xhZG5lc3MsIHRoZSB2b2ljZSBvZiB0aGUgYnJpZGVncm9vbSwgYW5kIHRoZSB2b2ljZSBvZiB0aGUgYnJpZGUsIHRoZSB2b2ljZSBvZiB0aGVtIHRoYXQgc2hhbGwgc2F5LCBQcmFpc2UgdGhlIExPUkQgb2YgaG9zdHM6IGZvciB0aGUgTE9SRCBpcyBnb29kOyBmb3IgaGlzIG1lcmN5IGVuZHVyZXRoIGZvciBldmVyOiBhbmQgb2YgdGhlbSB0aGF0IHNoYWxsIGJyaW5nIHRoZSBzYWNyaWZpY2Ugb2YgcHJhaXNlIGludG8gdGhlIGhvdXNlIG9mIHRoZSBMT1JELiBGb3IgSSB3aWxsIGNhdXNlIHRvIHJldHVybiB0aGUgY2FwdGl2aXR5IG9mIHRoZSBsYW5kLCBhcyBhdCB0aGUgZmlyc3QsIHNhaXRoIHRoZSBMT1JELgpUaHVzIHNhaXRoIHRoZSBMT1JEIG9mIGhvc3RzOyBBZ2FpbiBpbiB0aGlzIHBsYWNlLCB3aGljaCBpcyBkZXNvbGF0ZSB3aXRob3V0IG1hbiBhbmQgd2l0aG91dCBiZWFzdCwgYW5kIGluIGFsbCB0aGUgY2l0aWVzIHRoZXJlb2YsIHNoYWxsIGJlIGFuIGhhYml0YXRpb24gb2Ygc2hlcGhlcmRzIGNhdXNpbmcgdGhlaXIgZmxvY2tzIHRvIGxpZSBkb3duLgpJbiB0aGUgY2l0aWVzIG9mIHRoZSBtb3VudGFpbnMsIGluIHRoZSBjaXRpZXMgb2YgdGhlIHZhbGUsIGFuZCBpbiB0aGUgY2l0aWVzIG9mIHRoZSBzb3V0aCwgYW5kIGluIHRoZSBsYW5kIG9mIEJlbmphbWluLCBhbmQgaW4gdGhlIHBsYWNlcyBhYm91dCBKZXJ1c2FsZW0sIGFuZCBpbiB0aGUgY2l0aWVzIG9mIEp1ZGFoLCBzaGFsbCB0aGUgZmxvY2tzIHBhc3MgYWdhaW4gdW5kZXIgdGhlIGhhbmRzIG9mIGhpbSB0aGF0IHRlbGxldGggdGhlbSwgc2FpdGggdGhlIExPUkQuCkJlaG9sZCwgdGhlIGRheXMgY29tZSwgc2FpdGggdGhlIExPUkQsIHRoYXQgSSB3aWxsIHBlcmZvcm0gdGhhdCBnb29kIHRoaW5nIHdoaWNoIEkgaGF2ZSBwcm9taXNlZCB1bnRvIHRoZSBob3VzZSBvZiBJc3JhZWwgYW5kIHRvIHRoZSBob3VzZSBvZiBKdWRhaC4KSW4gdGhvc2UgZGF5cywgYW5kIGF0IHRoYXQgdGltZSwgd2lsbCBJIGNhdXNlIHRoZSBCcmFuY2ggb2YgcmlnaHRlb3VzbmVzcyB0byBncm93IHVwIHVudG8gRGF2aWQ7IGFuZCBoZSBzaGFsbCBleGVjdXRlIGp1ZGdtZW50IGFuZCByaWdodGVvdXNuZXNzIGluIHRoZSBsYW5kLgpJbiB0aG9zZSBkYXlzIHNoYWxsIEp1ZGFoIGJlIHNhdmVkLCBhbmQgSmVydXNhbGVtIHNoYWxsIGR3ZWxsIHNhZmVseTogYW5kIHRoaXMgaXMgdGhlIG5hbWUgd2hlcmV3aXRoIHNoZSBzaGFsbCBiZSBjYWxsZWQsIFRoZSBMT1JEIG91ciByaWdodGVvdXNuZXNzLgpGb3IgdGh1cyBzYWl0aCB0aGUgTE9SRDsgRGF2aWQgc2hhbGwgbmV2ZXIgd2FudCBhIG1hbiB0byBzaXQgdXBvbiB0aGUgdGhyb25lIG9mIHRoZSBob3VzZSBvZiBJc3JhZWw7Ck5laXRoZXIgc2hhbGwgdGhlIHByaWVzdHMgdGhlIExldml0ZXMgd2FudCBhIG1hbiBiZWZvcmUgbWUgdG8gb2ZmZXIgYnVybnQgb2ZmZXJpbmdzLCBhbmQgdG8ga2luZGxlIG1lYXQgb2ZmZXJpbmdzLCBhbmQgdG8gZG8gc2FjcmlmaWNlIGNvbnRpbnVhbGx5LgpBbmQgdGhlIHdvcmQgb2YgdGhlIExPUkQgY2FtZSB1bnRvIEplcmVtaWFoLCBzYXlpbmcsClRodXMgc2FpdGggdGhlIExPUkQ7IElmIHllIGNhbiBicmVhayBteSBjb3ZlbmFudCBvZiB0aGUgZGF5LCBhbmQgbXkgY292ZW5hbnQgb2YgdGhlIG5pZ2h0LCBhbmQgdGhhdCB0aGVyZSBzaG91bGQgbm90IGJlIGRheSBhbmQgbmlnaHQgaW4gdGhlaXIgc2Vhc29uOwpUaGVuIG1heSBhbHNvIG15IGNvdmVuYW50IGJlIGJyb2tlbiB3aXRoIERhdmlkIG15IHNlcnZhbnQsIHRoYXQgaGUgc2hvdWxkIG5vdCBoYXZlIGEgc29uIHRvIHJlaWduIHVwb24gaGlzIHRocm9uZTsgYW5kIHdpdGggdGhlIExldml0ZXMgdGhlIHByaWVzdHMsIG15IG1pbmlzdGVycy4KQXMgdGhlIGhvc3Qgb2YgaGVhdmVuIGNhbm5vdCBiZSBudW1iZXJlZCwgbmVpdGhlciB0aGUgc2FuZCBvZiB0aGUgc2VhIG1lYXN1cmVkOiBzbyB3aWxsIEkgbXVsdGlwbHkgdGhlIHNlZWQgb2YgRGF2aWQgbXkgc2VydmFudCwgYW5kIHRoZSBMZXZpdGVzIHRoYXQgbWluaXN0ZXIgdW50byBtZS4KTW9yZW92ZXIgdGhlIHdvcmQgb2YgdGhlIExPUkQgY2FtZSB0byBKZXJlbWlhaCwgc2F5aW5nLApDb25zaWRlcmVzdCB0aG91IG5vdCB3aGF0IHRoaXMgcGVvcGxlIGhhdmUgc3Bva2VuLCBzYXlpbmcsIFRoZSB0d28gZmFtaWxpZXMgd2hpY2ggdGhlIExPUkQgaGF0aCBjaG9zZW4sIGhlIGhhdGggZXZlbiBjYXN0IHRoZW0gb2ZmPyB0aHVzIHRoZXkgaGF2ZSBkZXNwaXNlZCBteSBwZW9wbGUsIHRoYXQgdGhleSBzaG91bGQgYmUgbm8gbW9yZSBhIG5hdGlvbiBiZWZvcmUgdGhlbS4KVGh1cyBzYWl0aCB0aGUgTE9SRDsgSWYgbXkgY292ZW5hbnQgYmUgbm90IHdpdGggZGF5IGFuZCBuaWdodCwgYW5kIGlmIEkgaGF2ZSBub3QgYXBwb2ludGVkIHRoZSBvcmRpbmFuY2VzIG9mIGhlYXZlbiBhbmQgZWFydGg7ClRoZW4gd2lsbCBJIGNhc3QgYXdheSB0aGUgc2VlZCBvZiBKYWNvYiBhbmQgRGF2aWQgbXkgc2VydmFudCwgc28gdGhhdCBJIHdpbGwgbm90IHRha2UgYW55IG9mIGhpcyBzZWVkIHRvIGJlIHJ1bGVycyBvdmVyIHRoZSBzZWVkIG9mIEFicmFoYW0sIElzYWFjLCBhbmQgSmFjb2I6IGZvciBJIHdpbGwgY2F1c2UgdGhlaXIgY2FwdGl2aXR5IHRvIHJldHVybiwgYW5kIGhhdmUgbWVyY3kgb24gdGhlbS4KVGhlIHdvcmQgd2hpY2ggY2FtZSB1bnRvIEplcmVtaWFoIGZyb20gdGhlIExPUkQsIHdoZW4gTmVidWNoYWRuZXp6YXIga2luZyBvZiBCYWJ5bG9uLCBhbmQgYWxsIGhpcyBhcm15LCBhbmQgYWxsIHRoZSBraW5nZG9tcyBvZiB0aGUgZWFydGggb2YgaGlzIGRvbWluaW9uLCBhbmQgYWxsIHRoZSBwZW9wbGUsIGZvdWdodCBhZ2FpbnN0IEplcnVzYWxlbSwgYW5kIGFnYWluc3QgYWxsIHRoZSBjaXRpZXMgdGhlcmVvZiwgc2F5aW5nLApUaHVzIHNhaXRoIHRoZSBMT1JELCB0aGUgR29kIG9mIElzcmFlbDsgR28gYW5kIHNwZWFrIHRvIFplZGVraWFoIGtpbmcgb2YgSnVkYWgsIGFuZCB0ZWxsIGhpbSwgVGh1cyBzYWl0aCB0aGUgTE9SRDsgQmVob2xkLCBJIHdpbGwgZ2l2ZSB0aGlzIGNpdHkgaW50byB0aGUgaGFuZCBvZiB0aGUga2luZyBvZiBCYWJ5bG9uLCBhbmQgaGUgc2hhbGwgYnVybiBpdCB3aXRoIGZpcmU6CkFuZCB0aG91IHNoYWx0IG5vdCBlc2NhcGUgb3V0IG9mIGhpcyBoYW5kLCBidXQgc2hhbHQgc3VyZWx5IGJlIHRha2VuLCBhbmQgZGVsaXZlcmVkIGludG8gaGlzIGhhbmQ7IGFuZCB0aGluZSBleWVzIHNoYWxsIGJlaG9sZCB0aGUgZXllcyBvZiB0aGUga2luZyBvZiBCYWJ5bG9uLCBhbmQgaGUgc2hhbGwgc3BlYWsgd2l0aCB0aGVlIG1vdXRoIHRvIG1vdXRoLCBhbmQgdGhvdSBzaGFsdCBnbyB0byBCYWJ5bG9uLgpZZXQgaGVhciB0aGUgd29yZCBvZiB0aGUgTE9SRCwgTyBaZWRla2lhaCBraW5nIG9mIEp1ZGFoOyBUaHVzIHNhaXRoIHRoZSBMT1JEIG9mIHRoZWUsIFRob3Ugc2hhbHQgbm90IGRpZSBieSB0aGUgc3dvcmQ6CkJ1dCB0aG91IHNoYWx0IGRpZSBpbiBwZWFjZTogYW5kIHdpdGggdGhlIGJ1cm5pbmdzIG9mIHRoeSBmYXRoZXJzLCB0aGUgZm9ybWVyIGtpbmdzIHdoaWNoIHdlcmUgYmVmb3JlIHRoZWUsIHNvIHNoYWxsIHRoZXkgYnVybiBvZG91cnMgZm9yIHRoZWU7IGFuZCB0aGV5IHdpbGwgbGFtZW50IHRoZWUsIHNheWluZywgQWggbG9yZCEgZm9yIEkgaGF2ZSBwcm9ub3VuY2VkIHRoZSB3b3JkLCBzYWl0aCB0aGUgTE9SRC4KVGhlbiBKZXJlbWlhaCB0aGUgcHJvcGhldCBzcGFrZSBhbGwgdGhlc2Ugd29yZHMgdW50byBaZWRla2lhaCBraW5nIG9mIEp1ZGFoIGluIEplcnVzYWxlbSwKV2hlbiB0aGUga2luZyBvZiBCYWJ5bG9uJ3MgYXJteSBmb3VnaHQgYWdhaW5zdCBKZXJ1c2FsZW0sIGFuZCBhZ2FpbnN0IGFsbCB0aGUgY2l0aWVzIG9mIEp1ZGFoIHRoYXQgd2VyZSBsZWZ0LCBhZ2FpbnN0IExhY2hpc2gsIGFuZCBhZ2FpbnN0IEF6ZWthaDogZm9yIHRoZXNlIGRlZmVuY2VkIGNpdGllcyByZW1haW5lZCBvZiB0aGUgY2l0aWVzIG9mIEp1ZGFoLgpUaGlzIGlzIHRoZSB3b3JkIHRoYXQgY2FtZSB1bnRvIEplcmVtaWFoIGZyb20gdGhlIExPUkQsIGFmdGVyIHRoYXQgdGhlIGtpbmcgWmVkZWtpYWggaGFkIG1hZGUgYSBjb3ZlbmFudCB3aXRoIGFsbCB0aGUgcGVvcGxlIHdoaWNoIHdlcmUgYXQgSmVydXNhbGVtLCB0byBwcm9jbGFpbSBsaWJlcnR5IHVudG8gdGhlbTsKVGhhdCBldmVyeSBtYW4gc2hvdWxkIGxldCBoaXMgbWFuc2VydmFudCwgYW5kIGV2ZXJ5IG1hbiBoaXMgbWFpZHNlcnZhbnQsIGJlaW5nIGFuIEhlYnJldyBvciBhbiBIZWJyZXdlc3MsIGdvIGZyZWU7IHRoYXQgbm9uZSBzaG91bGQgc2VydmUgaGltc2VsZiBvZiB0aGVtLCB0byB3aXQsIG9mIGEgSmV3IGhpcyBicm90aGVyLgpOb3cgd2hlbiBhbGwgdGhlIHByaW5jZXMsIGFuZCBhbGwgdGhlIHBlb3BsZSwgd2hpY2ggaGFkIGVudGVyZWQgaW50byB0aGUgY292ZW5hbnQsIGhlYXJkIHRoYXQgZXZlcnkgb25lIHNob3VsZCBsZXQgaGlzIG1hbnNlcnZhbnQsIGFuZCBldmVyeSBvbmUgaGlzIG1haWRzZXJ2YW50LCBnbyBmcmVlLCB0aGF0IG5vbmUgc2hvdWxkIHNlcnZlIHRoZW1zZWx2ZXMgb2YgdGhlbSBhbnkgbW9yZSwgdGhlbiB0aGV5IG9iZXllZCwgYW5kIGxldCB0aGVtIGdvLgpCdXQgYWZ0ZXJ3YXJkIHRoZXkgdHVybmVkLCBhbmQgY2F1c2VkIHRoZSBzZXJ2YW50cyBhbmQgdGhlIGhhbmRtYWlkcywgd2hvbSB0aGV5IGhhZCBsZXQgZ28gZnJlZSwgdG8gcmV0dXJuLCBhbmQgYnJvdWdodCB0aGVtIGludG8gc3ViamVjdGlvbiBmb3Igc2VydmFudHMgYW5kIGZvciBoYW5kbWFpZHMuClRoZXJlZm9yZSB0aGUgd29yZCBvZiB0aGUgTE9SRCBjYW1lIHRvIEplcmVtaWFoIGZyb20gdGhlIExPUkQsIHNheWluZywKVGh1cyBzYWl0aCB0aGUgTE9SRCwgdGhlIEdvZCBvZiBJc3JhZWw7IEkgbWFkZSBhIGNvdmVuYW50IHdpdGggeW91ciBmYXRoZXJzIGluIHRoZSBkYXkgdGhhdCBJIGJyb3VnaHQgdGhlbSBmb3J0aCBvdXQgb2YgdGhlIGxhbmQgb2YgRWd5cHQsIG91dCBvZiB0aGUgaG91c2Ugb2YgYm9uZG1lbiwgc2F5aW5nLApBdCB0aGUgZW5kIG9mIHNldmVuIHllYXJzIGxldCB5ZSBnbyBldmVyeSBtYW4gaGlzIGJyb3RoZXIgYW4gSGVicmV3LCB3aGljaCBoYXRoIGJlZW4gc29sZCB1bnRvIHRoZWU7IGFuZCB3aGVuIGhlIGhhdGggc2VydmVkIHRoZWUgc2l4IHllYXJzLCB0aG91IHNoYWx0IGxldCBoaW0gZ28gZnJlZSBmcm9tIHRoZWU6IGJ1dCB5b3VyIGZhdGhlcnMgaGVhcmtlbmVkIG5vdCB1bnRvIG1lLCBuZWl0aGVyIGluY2xpbmVkIHRoZWlyIGVhci4KQW5kIHllIHdlcmUgbm93IHR1cm5lZCwgYW5kIGhhZCBkb25lIHJpZ2h0IGluIG15IHNpZ2h0LCBpbiBwcm9jbGFpbWluZyBsaWJlcnR5IGV2ZXJ5IG1hbiB0byBoaXMgbmVpZ2hib3VyOyBhbmQgeWUgaGFkIG1hZGUgYSBjb3ZlbmFudCBiZWZvcmUgbWUgaW4gdGhlIGhvdXNlIHdoaWNoIGlzIGNhbGxlZCBieSBteSBuYW1lOgpCdXQgeWUgdHVybmVkIGFuZCBwb2xsdXRlZCBteSBuYW1lLCBhbmQgY2F1c2VkIGV2ZXJ5IG1hbiBoaXMgc2VydmFudCwgYW5kIGV2ZXJ5IG1hbiBoaXMgaGFuZG1haWQsIHdob20gaGUgaGFkIHNldCBhdCBsaWJlcnR5IGF0IHRoZWlyIHBsZWFzdXJlLCB0byByZXR1cm4sIGFuZCBicm91Z2h0IHRoZW0gaW50byBzdWJqZWN0aW9uLCB0byBiZSB1bnRvIHlvdSBmb3Igc2VydmFudHMgYW5kIGZvciBoYW5kbWFpZHMuClRoZXJlZm9yZSB0aHVzIHNhaXRoIHRoZSBMT1JEOyBZZSBoYXZlIG5vdCBoZWFya2VuZWQgdW50byBtZSwgaW4gcHJvY2xhaW1pbmcgbGliZXJ0eSwgZXZlcnkgb25lIHRvIGhpcyBicm90aGVyLCBhbmQgZXZlcnkgbWFuIHRvIGhpcyBuZWlnaGJvdXI6IGJlaG9sZCwgSSBwcm9jbGFpbSBhIGxpYmVydHkgZm9yIHlvdSwgc2FpdGggdGhlIExPUkQsIHRvIHRoZSBzd29yZCwgdG8gdGhlIHBlc3RpbGVuY2UsIGFuZCB0byB0aGUgZmFtaW5lOyBhbmQgSSB3aWxsIG1ha2UgeW91IHRvIGJlIHJlbW92ZWQgaW50byBhbGwgdGhlIGtpbmdkb21zIG9mIHRoZSBlYXJ0aC4KQW5kIEkgd2lsbCBnaXZlIHRoZSBtZW4gdGhhdCBoYXZlIHRyYW5zZ3Jlc3NlZCBteSBjb3ZlbmFudCwgd2hpY2ggaGF2ZSBub3QgcGVyZm9ybWVkIHRoZSB3b3JkcyBvZiB0aGUgY292ZW5hbnQgd2hpY2ggdGhleSBoYWQgbWFkZSBiZWZvcmUgbWUsIHdoZW4gdGhleSBjdXQgdGhlIGNhbGYgaW4gdHdhaW4sIGFuZCBwYXNzZWQgYmV0d2VlbiB0aGUgcGFydHMgdGhlcmVvZiwKVGhlIHByaW5jZXMgb2YgSnVkYWgsIGFuZCB0aGUgcHJpbmNlcyBvZiBKZXJ1c2FsZW0sIHRoZSBldW51Y2hzLCBhbmQgdGhlIHByaWVzdHMsIGFuZCBhbGwgdGhlIHBlb3BsZSBvZiB0aGUgbGFuZCwgd2hpY2ggcGFzc2VkIGJldHdlZW4gdGhlIHBhcnRzIG9mIHRoZSBjYWxmOwpJIHdpbGwgZXZlbiBnaXZlIHRoZW0gaW50byB0aGUgaGFuZCBvZiB0aGVpciBlbmVtaWVzLCBhbmQgaW50byB0aGUgaGFuZCBvZiB0aGVtIHRoYXQgc2VlayB0aGVpciBsaWZlOiBhbmQgdGhlaXIgZGVhZCBib2RpZXMgc2hhbGwgYmUgZm9yIG1lYXQgdW50byB0aGUgZm93bHMgb2YgdGhlIGhlYXZlbiwgYW5kIHRvIHRoZSBiZWFzdHMgb2YgdGhlIGVhcnRoLgpBbmQgWmVkZWtpYWgga2luZyBvZiBKdWRhaCBhbmQgaGlzIHByaW5jZXMgd2lsbCBJIGdpdmUgaW50byB0aGUgaGFuZCBvZiB0aGVpciBlbmVtaWVzLCBhbmQgaW50byB0aGUgaGFuZCBvZiB0aGVtIHRoYXQgc2VlayB0aGVpciBsaWZlLCBhbmQgaW50byB0aGUgaGFuZCBvZiB0aGUga2luZyBvZiBCYWJ5bG9uJ3MgYXJteSwgd2hpY2ggYXJlIGdvbmUgdXAgZnJvbSB5b3UuCkJlaG9sZCwgSSB3aWxsIGNvbW1hbmQsIHNhaXRoIHRoZSBMT1JELCBhbmQgY2F1c2UgdGhlbSB0byByZXR1cm4gdG8gdGhpcyBjaXR5OyBhbmQgdGhleSBzaGFsbCBmaWdodCBhZ2FpbnN0IGl0LCBhbmQgdGFrZSBpdCwgYW5kIGJ1cm4gaXQgd2l0aCBmaXJlOiBhbmQgSSB3aWxsIG1ha2UgdGhlIGNpdGllcyBvZiBKdWRhaCBhIGRlc29sYXRpb24gd2l0aG91dCBhbiBpbmhhYml0YW50LgpUaGUgd29yZCB3aGljaCBjYW1lIHVudG8gSmVyZW1pYWggZnJvbSB0aGUgTE9SRCBpbiB0aGUgZGF5cyBvZiBKZWhvaWFraW0gdGhlIHNvbiBvZiBKb3NpYWgga2luZyBvZiBKdWRhaCwgc2F5aW5nLApHbyB1bnRvIHRoZSBob3VzZSBvZiB0aGUgUmVjaGFiaXRlcywgYW5kIHNwZWFrIHVudG8gdGhlbSwgYW5kIGJyaW5nIHRoZW0gaW50byB0aGUgaG91c2Ugb2YgdGhlIExPUkQsIGludG8gb25lIG9mIHRoZSBjaGFtYmVycywgYW5kIGdpdmUgdGhlbSB3aW5lIHRvIGRyaW5rLgpUaGVuIEkgdG9vayBKYWF6YW5pYWggdGhlIHNvbiBvZiBKZXJlbWlhaCwgdGhlIHNvbiBvZiBIYWJhemluaWFoLCBhbmQgaGlzIGJyZXRocmVuLCBhbmQgYWxsIGhpcyBzb25zLCBhbmQgdGhlIHdob2xlIGhvdXNlIG9mIHRoZSBSZWNoYWJpdGVzOwpBbmQgSSBicm91Z2h0IHRoZW0gaW50byB0aGUgaG91c2Ugb2YgdGhlIExPUkQsIGludG8gdGhlIGNoYW1iZXIgb2YgdGhlIHNvbnMgb2YgSGFuYW4sIHRoZSBzb24gb2YgSWdkYWxpYWgsIGEgbWFuIG9mIEdvZCwgd2hpY2ggd2FzIGJ5IHRoZSBjaGFtYmVyIG9mIHRoZSBwcmluY2VzLCB3aGljaCB3YXMgYWJvdmUgdGhlIGNoYW1iZXIgb2YgTWFhc2VpYWggdGhlIHNvbiBvZiBTaGFsbHVtLCB0aGUga2VlcGVyIG9mIHRoZSBkb29yOgpBbmQgSSBzZXQgYmVmb3JlIHRoZSBzb25zIG9mIHRoZSBob3VzZSBvZiB0aGUgUmVjaGFiaXRlcyBwb3RzIGZ1bGwgb2Ygd2luZSwgYW5kIGN1cHMsIGFuZCBJIHNhaWQgdW50byB0aGVtLCBEcmluayB5ZSB3aW5lLgpCdXQgdGhleSBzYWlkLCBXZSB3aWxsIGRyaW5rIG5vIHdpbmU6IGZvciBKb25hZGFiIHRoZSBzb24gb2YgUmVjaGFiIG91ciBmYXRoZXIgY29tbWFuZGVkIHVzLCBzYXlpbmcsIFllIHNoYWxsIGRyaW5rIG5vIHdpbmUsIG5laXRoZXIgeWUsIG5vciB5b3VyIHNvbnMgZm9yIGV2ZXI6Ck5laXRoZXIgc2hhbGwgeWUgYnVpbGQgaG91c2UsIG5vciBzb3cgc2VlZCwgbm9yIHBsYW50IHZpbmV5YXJkLCBub3IgaGF2ZSBhbnk6IGJ1dCBhbGwgeW91ciBkYXlzIHllIHNoYWxsIGR3ZWxsIGluIHRlbnRzOyB0aGF0IHllIG1heSBsaXZlIG1hbnkgZGF5cyBpbiB0aGUgbGFuZCB3aGVyZSB5ZSBiZSBzdHJhbmdlcnMuClRodXMgaGF2ZSB3ZSBvYmV5ZWQgdGhlIHZvaWNlIG9mIEpvbmFkYWIgdGhlIHNvbiBvZiBSZWNoYWIgb3VyIGZhdGhlciBpbiBhbGwgdGhhdCBoZSBoYXRoIGNoYXJnZWQgdXMsIHRvIGRyaW5rIG5vIHdpbmUgYWxsIG91ciBkYXlzLCB3ZSwgb3VyIHdpdmVzLCBvdXIgc29ucywgbm9yIG91ciBkYXVnaHRlcnM7Ck5vciB0byBidWlsZCBob3VzZXMgZm9yIHVzIHRvIGR3ZWxsIGluOiBuZWl0aGVyIGhhdmUgd2UgdmluZXlhcmQsIG5vciBmaWVsZCwgbm9yIHNlZWQ6CkJ1dCB3ZSBoYXZlIGR3ZWx0IGluIHRlbnRzLCBhbmQgaGF2ZSBvYmV5ZWQsIGFuZCBkb25lIGFjY29yZGluZyB0byBhbGwgdGhhdCBKb25hZGFiIG91ciBmYXRoZXIgY29tbWFuZGVkIHVzLgpCdXQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIE5lYnVjaGFkcmV6emFyIGtpbmcgb2YgQmFieWxvbiBjYW1lIHVwIGludG8gdGhlIGxhbmQsIHRoYXQgd2Ugc2FpZCwgQ29tZSwgYW5kIGxldCB1cyBnbyB0byBKZXJ1c2FsZW0gZm9yIGZlYXIgb2YgdGhlIGFybXkgb2YgdGhlIENoYWxkZWFucywgYW5kIGZvciBmZWFyIG9mIHRoZSBhcm15IG9mIHRoZSBTeXJpYW5zOiBzbyB3ZSBkd2VsbCBhdCBKZXJ1c2FsZW0uClRoZW4gY2FtZSB0aGUgd29yZCBvZiB0aGUgTE9SRCB1bnRvIEplcmVtaWFoLCBzYXlpbmcsClRodXMgc2FpdGggdGhlIExPUkQgb2YgaG9zdHMsIHRoZSBHb2Qgb2YgSXNyYWVsOyBHbyBhbmQgdGVsbCB0aGUgbWVuIG9mIEp1ZGFoIGFuZCB0aGUgaW5oYWJpdGFudHMgb2YgSmVydXNhbGVtLCBXaWxsIHllIG5vdCByZWNlaXZlIGluc3RydWN0aW9uIHRvIGhlYXJrZW4gdG8gbXkgd29yZHM/IHNhaXRoIHRoZSBMT1JELgpUaGUgd29yZHMgb2YgSm9uYWRhYiB0aGUgc29uIG9mIFJlY2hhYiwgdGhhdCBoZSBjb21tYW5kZWQgaGlzIHNvbnMgbm90IHRvIGRyaW5rIHdpbmUsIGFyZSBwZXJmb3JtZWQ7IGZvciB1bnRvIHRoaXMgZGF5IHRoZXkgZHJpbmsgbm9uZSwgYnV0IG9iZXkgdGhlaXIgZmF0aGVyJ3MgY29tbWFuZG1lbnQ6IG5vdHdpdGhzdGFuZGluZyBJIGhhdmUgc3Bva2VuIHVudG8geW91LCByaXNpbmcgZWFybHkgYW5kIHNwZWFraW5nOyBidXQgeWUgaGVhcmtlbmVkIG5vdCB1bnRvIG1lLgpJIGhhdmUgc2VudCBhbHNvIHVudG8geW91IGFsbCBteSBzZXJ2YW50cyB0aGUgcHJvcGhldHMsIHJpc2luZyB1cCBlYXJseSBhbmQgc2VuZGluZyB0aGVtLCBzYXlpbmcsIFJldHVybiB5ZSBub3cgZXZlcnkgbWFuIGZyb20gaGlzIGV2aWwgd2F5LCBhbmQgYW1lbmQgeW91ciBkb2luZ3MsIGFuZCBnbyBub3QgYWZ0ZXIgb3RoZXIgZ29kcyB0byBzZXJ2ZSB0aGVtLCBhbmQgeWUgc2hhbGwgZHdlbGwgaW4gdGhlIGxhbmQgd2hpY2ggSSBoYXZlIGdpdmVuIHRvIHlvdSBhbmQgdG8geW91ciBmYXRoZXJzOiBidXQgeWUgaGF2ZSBub3QgaW5jbGluZWQgeW91ciBlYXIsIG5vciBoZWFya2VuZWQgdW50byBtZS4KQmVjYXVzZSB0aGUgc29ucyBvZiBKb25hZGFiIHRoZSBzb24gb2YgUmVjaGFiIGhhdmUgcGVyZm9ybWVkIHRoZSBjb21tYW5kbWVudCBvZiB0aGVpciBmYXRoZXIsIHdoaWNoIGhlIGNvbW1hbmRlZCB0aGVtOyBidXQgdGhpcyBwZW9wbGUgaGF0aCBub3QgaGVhcmtlbmVkIHVudG8gbWU6ClRoZXJlZm9yZSB0aHVzIHNhaXRoIHRoZSBMT1JEIEdvZCBvZiBob3N0cywgdGhlIEdvZCBvZiBJc3JhZWw7IEJlaG9sZCwgSSB3aWxsIGJyaW5nIHVwb24gSnVkYWggYW5kIHVwb24gYWxsIHRoZSBpbmhhYml0YW50cyBvZiBKZXJ1c2FsZW0gYWxsIHRoZSBldmlsIHRoYXQgSSBoYXZlIHByb25vdW5jZWQgYWdhaW5zdCB0aGVtOiBiZWNhdXNlIEkgaGF2ZSBzcG9rZW4gdW50byB0aGVtLCBidXQgdGhleSBoYXZlIG5vdCBoZWFyZDsgYW5kIEkgaGF2ZSBjYWxsZWQgdW50byB0aGVtLCBidXQgdGhleSBoYXZlIG5vdCBhbnN3ZXJlZC4KQW5kIEplcmVtaWFoIHNhaWQgdW50byB0aGUgaG91c2Ugb2YgdGhlIFJlY2hhYml0ZXMsIFRodXMgc2FpdGggdGhlIExPUkQgb2YgaG9zdHMsIHRoZSBHb2Qgb2YgSXNyYWVsOyBCZWNhdXNlIHllIGhhdmUgb2JleWVkIHRoZSBjb21tYW5kbWVudCBvZiBKb25hZGFiIHlvdXIgZmF0aGVyLCBhbmQga2VwdCBhbGwgaGlzIHByZWNlcHRzLCBhbmQgZG9uZSBhY2NvcmRpbmcgdW50byBhbGwgdGhhdCBoZSBoYXRoIGNvbW1hbmRlZCB5b3U6ClRoZXJlZm9yZSB0aHVzIHNhaXRoIHRoZSBMT1JEIG9mIGhvc3RzLCB0aGUgR29kIG9mIElzcmFlbDsgSm9uYWRhYiB0aGUgc29uIG9mIFJlY2hhYiBzaGFsbCBub3Qgd2FudCBhIG1hbiB0byBzdGFuZCBiZWZvcmUgbWUgZm9yIGV2ZXIuCkFuZCBpdCBjYW1lIHRvIHBhc3MgaW4gdGhlIGZvdXJ0aCB5ZWFyIG9mIEplaG9pYWtpbSB0aGUgc29uIG9mIEpvc2lhaCBraW5nIG9mIEp1ZGFoLCB0aGF0IHRoaXMgd29yZCBjYW1lIHVudG8gSmVyZW1pYWggZnJvbSB0aGUgTE9SRCwgc2F5aW5nLApUYWtlIHRoZWUgYSByb2xsIG9mIGEgYm9vaywgYW5kIHdyaXRlIHRoZXJlaW4gYWxsIHRoZSB3b3JkcyB0aGF0IEkgaGF2ZSBzcG9rZW4gdW50byB0aGVlIGFnYWluc3QgSXNyYWVsLCBhbmQgYWdhaW5zdCBKdWRhaCwgYW5kIGFnYWluc3QgYWxsIHRoZSBuYXRpb25zLCBmcm9tIHRoZSBkYXkgSSBzcGFrZSB1bnRvIHRoZWUsIGZyb20gdGhlIGRheXMgb2YgSm9zaWFoLCBldmVuIHVudG8gdGhpcyBkYXkuCkl0IG1heSBiZSB0aGF0IHRoZSBob3VzZSBvZiBKdWRhaCB3aWxsIGhlYXIgYWxsIHRoZSBldmlsIHdoaWNoIEkgcHVycG9zZSB0byBkbyB1bnRvIHRoZW07IHRoYXQgdGhleSBtYXkgcmV0dXJuIGV2ZXJ5IG1hbiBmcm9tIGhpcyBldmlsIHdheTsgdGhhdCBJIG1heSBmb3JnaXZlIHRoZWlyIGluaXF1aXR5IGFuZCB0aGVpciBzaW4uClRoZW4gSmVyZW1pYWggY2FsbGVkIEJhcnVjaCB0aGUgc29uIG9mIE5lcmlhaDogYW5kIEJhcnVjaCB3cm90ZSBmcm9tIHRoZSBtb3V0aCBvZiBKZXJlbWlhaCBhbGwgdGhlIHdvcmRzIG9mIHRoZSBMT1JELCB3aGljaCBoZSBoYWQgc3Bva2VuIHVudG8gaGltLCB1cG9uIGEgcm9sbCBvZiBhIGJvb2suCkFuZCBKZXJlbWlhaCBjb21tYW5kZWQgQmFydWNoLCBzYXlpbmcsIEkgYW0gc2h1dCB1cDsgSSBjYW5ub3QgZ28gaW50byB0aGUgaG91c2Ugb2YgdGhlIExPUkQ6ClRoZXJlZm9yZSBnbyB0aG91LCBhbmQgcmVhZCBpbiB0aGUgcm9sbCwgd2hpY2ggdGhvdSBoYXN0IHdyaXR0ZW4gZnJvbSBteSBtb3V0aCwgdGhlIHdvcmRzIG9mIHRoZSBMT1JEIGluIHRoZSBlYXJzIG9mIHRoZSBwZW9wbGUgaW4gdGhlIExPUkQncyBob3VzZSB1cG9uIHRoZSBmYXN0aW5nIGRheTogYW5kIGFsc28gdGhvdSBzaGFsdCByZWFkIHRoZW0gaW4gdGhlIGVhcnMgb2YgYWxsIEp1ZGFoIHRoYXQgY29tZSBvdXQgb2YgdGhlaXIgY2l0aWVzLgpJdCBtYXkgYmUgdGhleSB3aWxsIHByZXNlbnQgdGhlaXIgc3VwcGxpY2F0aW9uIGJlZm9yZSB0aGUgTE9SRCwgYW5kIHdpbGwgcmV0dXJuIGV2ZXJ5IG9uZSBmcm9tIGhpcyBldmlsIHdheTogZm9yIGdyZWF0IGlzIHRoZSBhbmdlciBhbmQgdGhlIGZ1cnkgdGhhdCB0aGUgTE9SRCBoYXRoIHByb25vdW5jZWQgYWdhaW5zdCB0aGlzIHBlb3BsZS4KQW5kIEJhcnVjaCB0aGUgc29uIG9mIE5lcmlhaCBkaWQgYWNjb3JkaW5nIHRvIGFsbCB0aGF0IEplcmVtaWFoIHRoZSBwcm9waGV0IGNvbW1hbmRlZCBoaW0sIHJlYWRpbmcgaW4gdGhlIGJvb2sgdGhlIHdvcmRzIG9mIHRoZSBMT1JEIGluIHRoZSBMT1JEJ3MgaG91c2UuCkFuZCBpdCBjYW1lIHRvIHBhc3MgaW4gdGhlIGZpZnRoIHllYXIgb2YgSmVob2lha2ltIHRoZSBzb24gb2YgSm9zaWFoIGtpbmcgb2YgSnVkYWgsIGluIHRoZSBuaW50aCBtb250aCwgdGhhdCB0aGV5IHByb2NsYWltZWQgYSBmYXN0IGJlZm9yZSB0aGUgTE9SRCB0byBhbGwgdGhlIHBlb3BsZSBpbiBKZXJ1c2FsZW0sIGFuZCB0byBhbGwgdGhlIHBlb3BsZSB0aGF0IGNhbWUgZnJvbSB0aGUgY2l0aWVzIG9mIEp1ZGFoIHVudG8gSmVydXNhbGVtLgpUaGVuIHJlYWQgQmFydWNoIGluIHRoZSBib29rIHRoZSB3b3JkcyBvZiBKZXJlbWlhaCBpbiB0aGUgaG91c2Ugb2YgdGhlIExPUkQsIGluIHRoZSBjaGFtYmVyIG9mIEdlbWFyaWFoIHRoZSBzb24gb2YgU2hhcGhhbiB0aGUgc2NyaWJlLCBpbiB0aGUgaGlnaGVyIGNvdXJ0LCBhdCB0aGUgZW50cnkgb2YgdGhlIG5ldyBnYXRlIG9mIHRoZSBMT1JEJ3MgaG91c2UsIGluIHRoZSBlYXJzIG9mIGFsbCB0aGUgcGVvcGxlLgpXaGVuIE1pY2hhaWFoIHRoZSBzb24gb2YgR2VtYXJpYWgsIHRoZSBzb24gb2YgU2hhcGhhbiwgaGFkIGhlYXJkIG91dCBvZiB0aGUgYm9vayBhbGwgdGhlIHdvcmRzIG9mIHRoZSBMT1JELApUaGVuIGhlIHdlbnQgZG93biBpbnRvIHRoZSBraW5nJ3MgaG91c2UsIGludG8gdGhlIHNjcmliZSdzIGNoYW1iZXI6IGFuZCwgbG8sIGFsbCB0aGUgcHJpbmNlcyBzYXQgdGhlcmUsIGV2ZW4gRWxpc2hhbWEgdGhlIHNjcmliZSwgYW5kIERlbGFpYWggdGhlIHNvbiBvZiBTaGVtYWlhaCwgYW5kIEVsbmF0aGFuIHRoZSBzb24gb2YgQWNoYm9yLCBhbmQgR2VtYXJpYWggdGhlIHNvbiBvZiBTaGFwaGFuLCBhbmQgWmVkZWtpYWggdGhlIHNvbiBvZiBIYW5hbmlhaCwgYW5kIGFsbCB0aGUgcHJpbmNlcy4KVGhlbiBNaWNoYWlhaCBkZWNsYXJlZCB1bnRvIHRoZW0gYWxsIHRoZSB3b3JkcyB0aGF0IGhlIGhhZCBoZWFyZCwgd2hlbiBCYXJ1Y2ggcmVhZCB0aGUgYm9vayBpbiB0aGUgZWFycyBvZiB0aGUgcGVvcGxlLgpUaGVyZWZvcmUgYWxsIHRoZSBwcmluY2VzIHNlbnQgSmVodWRpIHRoZSBzb24gb2YgTmV0aGFuaWFoLCB0aGUgc29uIG9mIFNoZWxlbWlhaCwgdGhlIHNvbiBvZiBDdXNoaSwgdW50byBCYXJ1Y2gsIHNheWluZywgVGFrZSBpbiB0aGluZSBoYW5kIHRoZSByb2xsIHdoZXJlaW4gdGhvdSBoYXN0IHJlYWQgaW4gdGhlIGVhcnMgb2YgdGhlIHBlb3BsZSwgYW5kIGNvbWUuIFNvIEJhcnVjaCB0aGUgc29uIG9mIE5lcmlhaCB0b29rIHRoZSByb2xsIGluIGhpcyBoYW5kLCBhbmQgY2FtZSB1bnRvIHRoZW0uCkFuZCB0aGV5IHNhaWQgdW50byBoaW0sIFNpdCBkb3duIG5vdywgYW5kIHJlYWQgaXQgaW4gb3VyIGVhcnMuIFNvIEJhcnVjaCByZWFkIGl0IGluIHRoZWlyIGVhcnMuCk5vdyBpdCBjYW1lIHRvIHBhc3MsIHdoZW4gdGhleSBoYWQgaGVhcmQgYWxsIHRoZSB3b3JkcywgdGhleSB3ZXJlIGFmcmFpZCBib3RoIG9uZSBhbmQgb3RoZXIsIGFuZCBzYWlkIHVudG8gQmFydWNoLCBXZSB3aWxsIHN1cmVseSB0ZWxsIHRoZSBraW5nIG9mIGFsbCB0aGVzZSB3b3Jkcy4KQW5kIHRoZXkgYXNrZWQgQmFydWNoLCBzYXlpbmcsIFRlbGwgdXMgbm93LCBIb3cgZGlkc3QgdGhvdSB3cml0ZSBhbGwgdGhlc2Ugd29yZHMgYXQgaGlzIG1vdXRoPwpUaGVuIEJhcnVjaCBhbnN3ZXJlZCB0aGVtLCBIZSBwcm9ub3VuY2VkIGFsbCB0aGVzZSB3b3JkcyB1bnRvIG1lIHdpdGggaGlzIG1vdXRoLCBhbmQgSSB3cm90ZSB0aGVtIHdpdGggaW5rIGluIHRoZSBib29rLgpUaGVuIHNhaWQgdGhlIHByaW5jZXMgdW50byBCYXJ1Y2gsIEdvLCBoaWRlIHRoZWUsIHRob3UgYW5kIEplcmVtaWFoOyBhbmQgbGV0IG5vIG1hbiBrbm93IHdoZXJlIHllIGJlLgpBbmQgdGhleSB3ZW50IGluIHRvIHRoZSBraW5nIGludG8gdGhlIGNvdXJ0LCBidXQgdGhleSBsYWlkIHVwIHRoZSByb2xsIGluIHRoZSBjaGFtYmVyIG9mIEVsaXNoYW1hIHRoZSBzY3JpYmUsIGFuZCB0b2xkIGFsbCB0aGUgd29yZHMgaW4gdGhlIGVhcnMgb2YgdGhlIGtpbmcuClNvIHRoZSBraW5nIHNlbnQgSmVodWRpIHRvIGZldGNoIHRoZSByb2xsOiBhbmQgaGUgdG9vayBpdCBvdXQgb2YgRWxpc2hhbWEgdGhlIHNjcmliZSdzIGNoYW1iZXIuIEFuZCBKZWh1ZGkgcmVhZCBpdCBpbiB0aGUgZWFycyBvZiB0aGUga2luZywgYW5kIGluIHRoZSBlYXJzIG9mIGFsbCB0aGUgcHJpbmNlcyB3aGljaCBzdG9vZCBiZXNpZGUgdGhlIGtpbmcuCk5vdyB0aGUga2luZyBzYXQgaW4gdGhlIHdpbnRlcmhvdXNlIGluIHRoZSBuaW50aCBtb250aDogYW5kIHRoZXJlIHdhcyBhIGZpcmUgb24gdGhlIGhlYXJ0aCBidXJuaW5nIGJlZm9yZSBoaW0uCkFuZCBpdCBjYW1lIHRvIHBhc3MsIHRoYXQgd2hlbiBKZWh1ZGkgaGFkIHJlYWQgdGhyZWUgb3IgZm91ciBsZWF2ZXMsIGhlIGN1dCBpdCB3aXRoIHRoZSBwZW5rbmlmZSwgYW5kIGNhc3QgaXQgaW50byB0aGUgZmlyZSB0aGF0IHdhcyBvbiB0aGUgaGVhcnRoLCB1bnRpbCBhbGwgdGhlIHJvbGwgd2FzIGNvbnN1bWVkIGluIHRoZSBmaXJlIHRoYXQgd2FzIG9uIHRoZSBoZWFydGguCllldCB0aGV5IHdlcmUgbm90IGFmcmFpZCwgbm9yIHJlbnQgdGhlaXIgZ2FybWVudHMsIG5laXRoZXIgdGhlIGtpbmcsIG5vciBhbnkgb2YgaGlzIHNlcnZhbnRzIHRoYXQgaGVhcmQgYWxsIHRoZXNlIHdvcmRzLgpOZXZlcnRoZWxlc3MgRWxuYXRoYW4gYW5kIERlbGFpYWggYW5kIEdlbWFyaWFoIGhhZCBtYWRlIGludGVyY2Vzc2lvbiB0byB0aGUga2luZyB0aGF0IGhlIHdvdWxkIG5vdCBidXJuIHRoZSByb2xsOiBidXQgaGUgd291bGQgbm90IGhlYXIgdGhlbS4KQnV0IHRoZSBraW5nIGNvbW1hbmRlZCBKZXJhaG1lZWwgdGhlIHNvbiBvZiBIYW1tZWxlY2gsIGFuZCBTZXJhaWFoIHRoZSBzb24gb2YgQXpyaWVsLCBhbmQgU2hlbGVtaWFoIHRoZSBzb24gb2YgQWJkZWVsLCB0byB0YWtlIEJhcnVjaCB0aGUgc2NyaWJlIGFuZCBKZXJlbWlhaCB0aGUgcHJvcGhldDogYnV0IHRoZSBMT1JEIGhpZCB0aGVtLgpUaGVuIHRoZSB3b3JkIG9mIHRoZSBMT1JEIGNhbWUgdG8gSmVyZW1pYWgsIGFmdGVyIHRoYXQgdGhlIGtpbmcgaGFkIGJ1cm5lZCB0aGUgcm9sbCwgYW5kIHRoZSB3b3JkcyB3aGljaCBCYXJ1Y2ggd3JvdGUgYXQgdGhlIG1vdXRoIG9mIEplcmVtaWFoLCBzYXlpbmcsClRha2UgdGhlZSBhZ2FpbiBhbm90aGVyIHJvbGwsIGFuZCB3cml0ZSBpbiBpdCBhbGwgdGhlIGZvcm1lciB3b3JkcyB0aGF0IHdlcmUgaW4gdGhlIGZpcnN0IHJvbGwsIHdoaWNoIEplaG9pYWtpbSB0aGUga2luZyBvZiBKdWRhaCBoYXRoIGJ1cm5lZC4KQW5kIHRob3Ugc2hhbHQgc2F5IHRvIEplaG9pYWtpbSBraW5nIG9mIEp1ZGFoLCBUaHVzIHNhaXRoIHRoZSBMT1JEOyBUaG91IGhhc3QgYnVybmVkIHRoaXMgcm9sbCwgc2F5aW5nLCBXaHkgaGFzdCB0aG91IHdyaXR0ZW4gdGhlcmVpbiwgc2F5aW5nLCBUaGUga2luZyBvZiBCYWJ5bG9uIHNoYWxsIGNlcnRhaW5seSBjb21lIGFuZCBkZXN0cm95IHRoaXMgbGFuZCwgYW5kIHNoYWxsIGNhdXNlIHRvIGNlYXNlIGZyb20gdGhlbmNlIG1hbiBhbmQgYmVhc3Q/ClRoZXJlZm9yZSB0aHVzIHNhaXRoIHRoZSBMT1JEIG9mIEplaG9pYWtpbSBraW5nIG9mIEp1ZGFoOyBIZSBzaGFsbCBoYXZlIG5vbmUgdG8gc2l0IHVwb24gdGhlIHRocm9uZSBvZiBEYXZpZDogYW5kIGhpcyBkZWFkIGJvZHkgc2hhbGwgYmUgY2FzdCBvdXQgaW4gdGhlIGRheSB0byB0aGUgaGVhdCwgYW5kIGluIHRoZSBuaWdodCB0byB0aGUgZnJvc3QuCkFuZCBJIHdpbGwgcHVuaXNoIGhpbSBhbmQgaGlzIHNlZWQgYW5kIGhpcyBzZXJ2YW50cyBmb3IgdGhlaXIgaW5pcXVpdHk7IGFuZCBJIHdpbGwgYnJpbmcgdXBvbiB0aGVtLCBhbmQgdXBvbiB0aGUgaW5oYWJpdGFudHMgb2YgSmVydXNhbGVtLCBhbmQgdXBvbiB0aGUgbWVuIG9mIEp1ZGFoLCBhbGwgdGhlIGV2aWwgdGhhdCBJIGhhdmUgcHJvbm91bmNlZCBhZ2FpbnN0IHRoZW07IGJ1dCB0aGV5IGhlYXJrZW5lZCBub3QuClRoZW4gdG9vayBKZXJlbWlhaCBhbm90aGVyIHJvbGwsIGFuZCBnYXZlIGl0IHRvIEJhcnVjaCB0aGUgc2NyaWJlLCB0aGUgc29uIG9mIE5lcmlhaDsgd2hvIHdyb3RlIHRoZXJlaW4gZnJvbSB0aGUgbW91dGggb2YgSmVyZW1pYWggYWxsIHRoZSB3b3JkcyBvZiB0aGUgYm9vayB3aGljaCBKZWhvaWFraW0ga2luZyBvZiBKdWRhaCBoYWQgYnVybmVkIGluIHRoZSBmaXJlOiBhbmQgdGhlcmUgd2VyZSBhZGRlZCBiZXNpZGVzIHVudG8gdGhlbSBtYW55IGxpa2Ugd29yZHMuCkFuZCBraW5nIFplZGVraWFoIHRoZSBzb24gb2YgSm9zaWFoIHJlaWduZWQgaW5zdGVhZCBvZiBDb25pYWggdGhlIHNvbiBvZiBKZWhvaWFraW0sIHdob20gTmVidWNoYWRyZXp6YXIga2luZyBvZiBCYWJ5bG9uIG1hZGUga2luZyBpbiB0aGUgbGFuZCBvZiBKdWRhaC4KQnV0IG5laXRoZXIgaGUsIG5vciBoaXMgc2VydmFudHMsIG5vciB0aGUgcGVvcGxlIG9mIHRoZSBsYW5kLCBkaWQgaGVhcmtlbiB1bnRvIHRoZSB3b3JkcyBvZiB0aGUgTE9SRCwgd2hpY2ggaGUgc3Bha2UgYnkgdGhlIHByb3BoZXQgSmVyZW1pYWguCkFuZCBaZWRla2lhaCB0aGUga2luZyBzZW50IEplaHVjYWwgdGhlIHNvbiBvZiBTaGVsZW1pYWggYW5kIFplcGhhbmlhaCB0aGUgc29uIG9mIE1hYXNlaWFoIHRoZSBwcmllc3QgdG8gdGhlIHByb3BoZXQgSmVyZW1pYWgsIHNheWluZywgUHJheSBub3cgdW50byB0aGUgTE9SRCBvdXIgR29kIGZvciB1cy4KTm93IEplcmVtaWFoIGNhbWUgaW4gYW5kIHdlbnQgb3V0IGFtb25nIHRoZSBwZW9wbGU6IGZvciB0aGV5IGhhZCBub3QgcHV0IGhpbSBpbnRvIHByaXNvbi4KVGhlbiBQaGFyYW9oJ3MgYXJteSB3YXMgY29tZSBmb3J0aCBvdXQgb2YgRWd5cHQ6IGFuZCB3aGVuIHRoZSBDaGFsZGVhbnMgdGhhdCBiZXNpZWdlZCBKZXJ1c2FsZW0gaGVhcmQgdGlkaW5ncyBvZiB0aGVtLCB0aGV5IGRlcGFydGVkIGZyb20gSmVydXNhbGVtLgpUaGVuIGNhbWUgdGhlIHdvcmQgb2YgdGhlIExPUkQgdW50byB0aGUgcHJvcGhldCBKZXJlbWlhaCBzYXlpbmcsClRodXMgc2FpdGggdGhlIExPUkQsIHRoZSBHb2Qgb2YgSXNyYWVsOyBUaHVzIHNoYWxsIHllIHNheSB0byB0aGUga2luZyBvZiBKdWRhaCwgdGhhdCBzZW50IHlvdSB1bnRvIG1lIHRvIGVucXVpcmUgb2YgbWU7IEJlaG9sZCwgUGhhcmFvaCdzIGFybXksIHdoaWNoIGlzIGNvbWUgZm9ydGggdG8gaGVscCB5b3UsIHNoYWxsIHJldHVybiB0byBFZ3lwdCBpbnRvIHRoZWlyIG93biBsYW5kLgpBbmQgdGhlIENoYWxkZWFucyBzaGFsbCBjb21lIGFnYWluLCBhbmQgZmlnaHQgYWdhaW5zdCB0aGlzIGNpdHksIGFuZCB0YWtlIGl0LCBhbmQgYnVybiBpdCB3aXRoIGZpcmUuClRodXMgc2FpdGggdGhlIExPUkQ7IERlY2VpdmUgbm90IHlvdXJzZWx2ZXMsIHNheWluZywgVGhlIENoYWxkZWFucyBzaGFsbCBzdXJlbHkgZGVwYXJ0IGZyb20gdXM6IGZvciB0aGV5IHNoYWxsIG5vdCBkZXBhcnQuCkZvciB0aG91Z2ggeWUgaGFkIHNtaXR0ZW4gdGhlIHdob2xlIGFybXkgb2YgdGhlIENoYWxkZWFucyB0aGF0IGZpZ2h0IGFnYWluc3QgeW91LCBhbmQgdGhlcmUgcmVtYWluZWQgYnV0IHdvdW5kZWQgbWVuIGFtb25nIHRoZW0sIHlldCBzaG91bGQgdGhleSByaXNlIHVwIGV2ZXJ5IG1hbiBpbiBoaXMgdGVudCwgYW5kIGJ1cm4gdGhpcyBjaXR5IHdpdGggZmlyZS4KQW5kIGl0IGNhbWUgdG8gcGFzcywgdGhhdCB3aGVuIHRoZSBhcm15IG9mIHRoZSBDaGFsZGVhbnMgd2FzIGJyb2tlbiB1cCBmcm9tIEplcnVzYWxlbSBmb3IgZmVhciBvZiBQaGFyYW9oJ3MgYXJteSwKVGhlbiBKZXJlbWlhaCB3ZW50IGZvcnRoIG91dCBvZiBKZXJ1c2FsZW0gdG8gZ28gaW50byB0aGUgbGFuZCBvZiBCZW5qYW1pbiwgdG8gc2VwYXJhdGUgaGltc2VsZiB0aGVuY2UgaW4gdGhlIG1pZHN0IG9mIHRoZSBwZW9wbGUuCkFuZCB3aGVuIGhlIHdhcyBpbiB0aGUgZ2F0ZSBvZiBCZW5qYW1pbiwgYSBjYXB0YWluIG9mIHRoZSB3YXJkIHdhcyB0aGVyZSwgd2hvc2UgbmFtZSB3YXMgSXJpamFoLCB0aGUgc29uIG9mIFNoZWxlbWlhaCwgdGhlIHNvbiBvZiBIYW5hbmlhaDsgYW5kIGhlIHRvb2sgSmVyZW1pYWggdGhlIHByb3BoZXQsIHNheWluZywgVGhvdSBmYWxsZXN0IGF3YXkgdG8gdGhlIENoYWxkZWFucy4KVGhlbiBzYWlkIEplcmVtaWFoLCBJdCBpcyBmYWxzZTsgSSBmYWxsIG5vdCBhd2F5IHRvIHRoZSBDaGFsZGVhbnMuIEJ1dCBoZSBoZWFya2VuZWQgbm90IHRvIGhpbTogc28gSXJpamFoIHRvb2sgSmVyZW1pYWgsIGFuZCBicm91Z2h0IGhpbSB0byB0aGUgcHJpbmNlcy4KV2hlcmVmb3JlIHRoZSBwcmluY2VzIHdlcmUgd3JvdGggd2l0aCBKZXJlbWlhaCwgYW5kIHNtb3RlIGhpbSwgYW5kIHB1dCBoaW0gaW4gcHJpc29uIGluIHRoZSBob3VzZSBvZiBKb25hdGhhbiB0aGUgc2NyaWJlOiBmb3IgdGhleSBoYWQgbWFkZSB0aGF0IHRoZSBwcmlzb24uCldoZW4gSmVyZW1pYWggd2FzIGVudGVyZWQgaW50byB0aGUgZHVuZ2VvbiwgYW5kIGludG8gdGhlIGNhYmlucywgYW5kIEplcmVtaWFoIGhhZCByZW1haW5lZCB0aGVyZSBtYW55IGRheXM7ClRoZW4gWmVkZWtpYWggdGhlIGtpbmcgc2VudCwgYW5kIHRvb2sgaGltIG91dDogYW5kIHRoZSBraW5nIGFza2VkIGhpbSBzZWNyZXRseSBpbiBoaXMgaG91c2UsIGFuZCBzYWlkLCBJcyB0aGVyZSBhbnkgd29yZCBmcm9tIHRoZSBMT1JEPyBBbmQgSmVyZW1pYWggc2FpZCwgVGhlcmUgaXM6IGZvciwgc2FpZCBoZSwgdGhvdSBzaGFsdCBiZSBkZWxpdmVyZWQgaW50byB0aGUgaGFuZCBvZiB0aGUga2luZyBvZiBCYWJ5bG9uLgpNb3Jlb3ZlciBKZXJlbWlhaCBzYWlkIHVudG8ga2luZyBaZWRla2lhaCwgV2hhdCBoYXZlIEkgb2ZmZW5kZWQgYWdhaW5zdCB0aGVlLCBvciBhZ2FpbnN0IHRoeSBzZXJ2YW50cywgb3IgYWdhaW5zdCB0aGlzIHBlb3BsZSwgdGhhdCB5ZSBoYXZlIHB1dCBtZSBpbiBwcmlzb24/CldoZXJlIGFyZSBub3cgeW91ciBwcm9waGV0cyB3aGljaCBwcm9waGVzaWVkIHVudG8geW91LCBzYXlpbmcsIFRoZSBraW5nIG9mIEJhYnlsb24gc2hhbGwgbm90IGNvbWUgYWdhaW5zdCB5b3UsIG5vciBhZ2FpbnN0IHRoaXMgbGFuZD8KVGhlcmVmb3JlIGhlYXIgbm93LCBJIHByYXkgdGhlZSwgTyBteSBsb3JkIHRoZSBraW5nOiBsZXQgbXkgc3VwcGxpY2F0aW9uLCBJIHByYXkgdGhlZSwgYmUgYWNjZXB0ZWQgYmVmb3JlIHRoZWU7IHRoYXQgdGhvdSBjYXVzZSBtZSBub3QgdG8gcmV0dXJuIHRvIHRoZSBob3VzZSBvZiBKb25hdGhhbiB0aGUgc2NyaWJlLCBsZXN0IEkgZGllIHRoZXJlLgpUaGVuIFplZGVraWFoIHRoZSBraW5nIGNvbW1hbmRlZCB0aGF0IHRoZXkgc2hvdWxkIGNvbW1pdCBKZXJlbWlhaCBpbnRvIHRoZSBjb3VydCBvZiB0aGUgcHJpc29uLCBhbmQgdGhhdCB0aGV5IHNob3VsZCBnaXZlIGhpbSBkYWlseSBhIHBpZWNlIG9mIGJyZWFkIG91dCBvZiB0aGUgYmFrZXJzJyBzdHJlZXQsIHVudGlsIGFsbCB0aGUgYnJlYWQgaW4gdGhlIGNpdHkgd2VyZSBzcGVudC4gVGh1cyBKZXJlbWlhaCByZW1haW5lZCBpbiB0aGUgY291cnQgb2YgdGhlIHByaXNvbi4KVGhlbiBTaGVwaGF0aWFoIHRoZSBzb24gb2YgTWF0dGFuLCBhbmQgR2VkYWxpYWggdGhlIHNvbiBvZiBQYXNodXIsIGFuZCBKdWNhbCB0aGUgc29uIG9mIFNoZWxlbWlhaCwgYW5kIFBhc2h1ciB0aGUgc29uIG9mIE1hbGNoaWFoLCBoZWFyZCB0aGUgd29yZHMgdGhhdCBKZXJlbWlhaCBoYWQgc3Bva2VuIHVudG8gYWxsIHRoZSBwZW9wbGUsIHNheWluZywKVGh1cyBzYWl0aCB0aGUgTE9SRCwgSGUgdGhhdCByZW1haW5ldGggaW4gdGhpcyBjaXR5IHNoYWxsIGRpZSBieSB0aGUgc3dvcmQsIGJ5IHRoZSBmYW1pbmUsIGFuZCBieSB0aGUgcGVzdGlsZW5jZTogYnV0IGhlIHRoYXQgZ29ldGggZm9ydGggdG8gdGhlIENoYWxkZWFucyBzaGFsbCBsaXZlOyBmb3IgaGUgc2hhbGwgaGF2ZSBoaXMgbGlmZSBmb3IgYSBwcmV5LCBhbmQgc2hhbGwgbGl2ZS4KVGh1cyBzYWl0aCB0aGUgTE9SRCwgVGhpcyBjaXR5IHNoYWxsIHN1cmVseSBiZSBnaXZlbiBpbnRvIHRoZSBoYW5kIG9mIHRoZSBraW5nIG9mIEJhYnlsb24ncyBhcm15LCB3aGljaCBzaGFsbCB0YWtlIGl0LgpUaGVyZWZvcmUgdGhlIHByaW5jZXMgc2FpZCB1bnRvIHRoZSBraW5nLCBXZSBiZXNlZWNoIHRoZWUsIGxldCB0aGlzIG1hbiBiZSBwdXQgdG8gZGVhdGg6IGZvciB0aHVzIGhlIHdlYWtlbmV0aCB0aGUgaGFuZHMgb2YgdGhlIG1lbiBvZiB3YXIgdGhhdCByZW1haW4gaW4gdGhpcyBjaXR5LCBhbmQgdGhlIGhhbmRzIG9mIGFsbCB0aGUgcGVvcGxlLCBpbiBzcGVha2luZyBzdWNoIHdvcmRzIHVudG8gdGhlbTogZm9yIHRoaXMgbWFuIHNlZWtldGggbm90IHRoZSB3ZWxmYXJlIG9mIHRoaXMgcGVvcGxlLCBidXQgdGhlIGh1cnQuClRoZW4gWmVkZWtpYWggdGhlIGtpbmcgc2FpZCwgQmVob2xkLCBoZSBpcyBpbiB5b3VyIGhhbmQ6IGZvciB0aGUga2luZyBpcyBub3QgaGUgdGhhdCBjYW4gZG8gYW55IHRoaW5nIGFnYWluc3QgeW91LgpUaGVuIHRvb2sgdGhleSBKZXJlbWlhaCwgYW5kIGNhc3QgaGltIGludG8gdGhlIGR1bmdlb24gb2YgTWFsY2hpYWggdGhlIHNvbiBvZiBIYW1tZWxlY2gsIHRoYXQgd2FzIGluIHRoZSBjb3VydCBvZiB0aGUgcHJpc29uOiBhbmQgdGhleSBsZXQgZG93biBKZXJlbWlhaCB3aXRoIGNvcmRzLiBBbmQgaW4gdGhlIGR1bmdlb24gdGhlcmUgd2FzIG5vIHdhdGVyLCBidXQgbWlyZTogc28gSmVyZW1pYWggc3VuayBpbiB0aGUgbWlyZS4KTm93IHdoZW4gRWJlZG1lbGVjaCB0aGUgRXRoaW9waWFuLCBvbmUgb2YgdGhlIGV1bnVjaHMgd2hpY2ggd2FzIGluIHRoZSBraW5nJ3MgaG91c2UsIGhlYXJkIHRoYXQgdGhleSBoYWQgcHV0IEplcmVtaWFoIGluIHRoZSBkdW5nZW9uOyB0aGUga2luZyB0aGVuIHNpdHRpbmcgaW4gdGhlIGdhdGUgb2YgQmVuamFtaW47CkViZWRtZWxlY2ggd2VudCBmb3J0aCBvdXQgb2YgdGhlIGtpbmcncyBob3VzZSwgYW5kIHNwYWtlIHRvIHRoZSBraW5nIHNheWluZywKTXkgbG9yZCB0aGUga2luZywgdGhlc2UgbWVuIGhhdmUgZG9uZSBldmlsIGluIGFsbCB0aGF0IHRoZXkgaGF2ZSBkb25lIHRvIEplcmVtaWFoIHRoZSBwcm9waGV0LCB3aG9tIHRoZXkgaGF2ZSBjYXN0IGludG8gdGhlIGR1bmdlb247IGFuZCBoZSBpcyBsaWtlIHRvIGRpZSBmb3IgaHVuZ2VyIGluIHRoZSBwbGFjZSB3aGVyZSBoZSBpczogZm9yIHRoZXJlIGlzIG5vIG1vcmUgYnJlYWQgaW4gdGhlIGNpdHkuClRoZW4gdGhlIGtpbmcgY29tbWFuZGVkIEViZWRtZWxlY2ggdGhlIEV0aGlvcGlhbiwgc2F5aW5nLCBUYWtlIGZyb20gaGVuY2UgdGhpcnR5IG1lbiB3aXRoIHRoZWUsIGFuZCB0YWtlIHVwIEplcmVtaWFoIHRoZSBwcm9waGV0IG91dCBvZiB0aGUgZHVuZ2VvbiwgYmVmb3JlIGhlIGRpZS4KU28gRWJlZG1lbGVjaCB0b29rIHRoZSBtZW4gd2l0aCBoaW0sIGFuZCB3ZW50IGludG8gdGhlIGhvdXNlIG9mIHRoZSBraW5nIHVuZGVyIHRoZSB0cmVhc3VyeSwgYW5kIHRvb2sgdGhlbmNlIG9sZCBjYXN0IGNsb3V0cyBhbmQgb2xkIHJvdHRlbiByYWdzLCBhbmQgbGV0IHRoZW0gZG93biBieSBjb3JkcyBpbnRvIHRoZSBkdW5nZW9uIHRvIEplcmVtaWFoLgpBbmQgRWJlZG1lbGVjaCB0aGUgRXRoaW9waWFuIHNhaWQgdW50byBKZXJlbWlhaCwgUHV0IG5vdyB0aGVzZSBvbGQgY2FzdCBjbG91dHMgYW5kIHJvdHRlbiByYWdzIHVuZGVyIHRoaW5lIGFybWhvbGVzIHVuZGVyIHRoZSBjb3Jkcy4gQW5kIEplcmVtaWFoIGRpZCBzby4KU28gdGhleSBkcmV3IHVwIEplcmVtaWFoIHdpdGggY29yZHMsIGFuZCB0b29rIGhpbSB1cCBvdXQgb2YgdGhlIGR1bmdlb246IGFuZCBKZXJlbWlhaCByZW1haW5lZCBpbiB0aGUgY291cnQgb2YgdGhlIHByaXNvbi4KVGhlbiBaZWRla2lhaCB0aGUga2luZyBzZW50LCBhbmQgdG9vayBKZXJlbWlhaCB0aGUgcHJvcGhldCB1bnRvIGhpbSBpbnRvIHRoZSB0aGlyZCBlbnRyeSB0aGF0IGlzIGluIHRoZSBob3VzZSBvZiB0aGUgTE9SRDogYW5kIHRoZSBraW5nIHNhaWQgdW50byBKZXJlbWlhaCwgSSB3aWxsIGFzayB0aGVlIGEgdGhpbmc7IGhpZGUgbm90aGluZyBmcm9tIG1lLgpUaGVuIEplcmVtaWFoIHNhaWQgdW50byBaZWRla2lhaCwgSWYgSSBkZWNsYXJlIGl0IHVudG8gdGhlZSwgd2lsdCB0aG91IG5vdCBzdXJlbHkgcHV0IG1lIHRvIGRlYXRoPyBhbmQgaWYgSSBnaXZlIHRoZWUgY291bnNlbCwgd2lsdCB0aG91IG5vdCBoZWFya2VuIHVudG8gbWU/ClNvIFplZGVraWFoIHRoZSBraW5nIHN3YXJlIHNlY3JldGx5IHVudG8gSmVyZW1pYWgsIHNheWluZywgQXMgdGhlIExPUkQgbGl2ZXRoLCB0aGF0IG1hZGUgdXMgdGhpcyBzb3VsLCBJIHdpbGwgbm90IHB1dCB0aGVlIHRvIGRlYXRoLCBuZWl0aGVyIHdpbGwgSSBnaXZlIHRoZWUgaW50byB0aGUgaGFuZCBvZiB0aGVzZSBtZW4gdGhhdCBzZWVrIHRoeSBsaWZlLgpUaGVuIHNhaWQgSmVyZW1pYWggdW50byBaZWRla2lhaCwgVGh1cyBzYWl0aCB0aGUgTE9SRCwgdGhlIEdvZCBvZiBob3N0cywgdGhlIEdvZCBvZiBJc3JhZWw7IElmIHRob3Ugd2lsdCBhc3N1cmVkbHkgZ28gZm9ydGggdW50byB0aGUga2luZyBvZiBCYWJ5bG9uJ3MgcHJpbmNlcywgdGhlbiB0aHkgc291bCBzaGFsbCBsaXZlLCBhbmQgdGhpcyBjaXR5IHNoYWxsIG5vdCBiZSBidXJuZWQgd2l0aCBmaXJlOyBhbmQgdGhvdSBzaGFsdCBsaXZlLCBhbmQgdGhpbmUgaG91c2U6CkJ1dCBpZiB0aG91IHdpbHQgbm90IGdvIGZvcnRoIHRvIHRoZSBraW5nIG9mIEJhYnlsb24ncyBwcmluY2VzLCB0aGVuIHNoYWxsIHRoaXMgY2l0eSBiZSBnaXZlbiBpbnRvIHRoZSBoYW5kIG9mIHRoZSBDaGFsZGVhbnMsIGFuZCB0aGV5IHNoYWxsIGJ1cm4gaXQgd2l0aCBmaXJlLCBhbmQgdGhvdSBzaGFsdCBub3QgZXNjYXBlIG91dCBvZiB0aGVpciBoYW5kLgpBbmQgWmVkZWtpYWggdGhlIGtpbmcgc2FpZCB1bnRvIEplcmVtaWFoLCBJIGFtIGFmcmFpZCBvZiB0aGUgSmV3cyB0aGF0IGFyZSBmYWxsZW4gdG8gdGhlIENoYWxkZWFucywgbGVzdCB0aGV5IGRlbGl2ZXIgbWUgaW50byB0aGVpciBoYW5kLCBhbmQgdGhleSBtb2NrIG1lLgpCdXQgSmVyZW1pYWggc2FpZCwgVGhleSBzaGFsbCBub3QgZGVsaXZlciB0aGVlLiBPYmV5LCBJIGJlc2VlY2ggdGhlZSwgdGhlIHZvaWNlIG9mIHRoZSBMT1JELCB3aGljaCBJIHNwZWFrIHVudG8gdGhlZTogc28gaXQgc2hhbGwgYmUgd2VsbCB1bnRvIHRoZWUsIGFuZCB0aHkgc291bCBzaGFsbCBsaXZlLgpCdXQgaWYgdGhvdSByZWZ1c2UgdG8gZ28gZm9ydGgsIHRoaXMgaXMgdGhlIHdvcmQgdGhhdCB0aGUgTE9SRCBoYXRoIHNoZXdlZCBtZToKQW5kLCBiZWhvbGQsIGFsbCB0aGUgd29tZW4gdGhhdCBhcmUgbGVmdCBpbiB0aGUga2luZyBvZiBKdWRhaCdzIGhvdXNlIHNoYWxsIGJlIGJyb3VnaHQgZm9ydGggdG8gdGhlIGtpbmcgb2YgQmFieWxvbidzIHByaW5jZXMsIGFuZCB0aG9zZSB3b21lbiBzaGFsbCBzYXksIFRoeSBmcmllbmRzIGhhdmUgc2V0IHRoZWUgb24sIGFuZCBoYXZlIHByZXZhaWxlZCBhZ2FpbnN0IHRoZWU6IHRoeSBmZWV0IGFyZSBzdW5rIGluIHRoZSBtaXJlLCBhbmQgdGhleSBhcmUgdHVybmVkIGF3YXkgYmFjay4KU28gdGhleSBzaGFsbCBicmluZyBvdXQgYWxsIHRoeSB3aXZlcyBhbmQgdGh5IGNoaWxkcmVuIHRvIHRoZSBDaGFsZGVhbnM6IGFuZCB0aG91IHNoYWx0IG5vdCBlc2NhcGUgb3V0IG9mIHRoZWlyIGhhbmQsIGJ1dCBzaGFsdCBiZSB0YWtlbiBieSB0aGUgaGFuZCBvZiB0aGUga2luZyBvZiBCYWJ5bG9uOiBhbmQgdGhvdSBzaGFsdCBjYXVzZSB0aGlzIGNpdHkgdG8gYmUgYnVybmVkIHdpdGggZmlyZS4KVGhlbiBzYWlkIFplZGVraWFoIHVudG8gSmVyZW1pYWgsIExldCBubyBtYW4ga25vdyBvZiB0aGVzZSB3b3JkcywgYW5kIHRob3Ugc2hhbHQgbm90IGRpZS4KQnV0IGlmIHRoZSBwcmluY2VzIGhlYXIgdGhhdCBJIGhhdmUgdGFsa2VkIHdpdGggdGhlZSwgYW5kIHRoZXkgY29tZSB1bnRvIHRoZWUsIGFuZCBzYXkgdW50byB0aGVlLCBEZWNsYXJlIHVudG8gdXMgbm93IHdoYXQgdGhvdSBoYXN0IHNhaWQgdW50byB0aGUga2luZywgaGlkZSBpdCBub3QgZnJvbSB1cywgYW5kIHdlIHdpbGwgbm90IHB1dCB0aGVlIHRvIGRlYXRoOyBhbHNvIHdoYXQgdGhlIGtpbmcgc2FpZCB1bnRvIHRoZWU6ClRoZW4gdGhvdSBzaGFsdCBzYXkgdW50byB0aGVtLCBJIHByZXNlbnRlZCBteSBzdXBwbGljYXRpb24gYmVmb3JlIHRoZSBraW5nLCB0aGF0IGhlIHdvdWxkIG5vdCBjYXVzZSBtZSB0byByZXR1cm4gdG8gSm9uYXRoYW4ncyBob3VzZSwgdG8gZGllIHRoZXJlLgpUaGVuIGNhbWUgYWxsIHRoZSBwcmluY2VzIHVudG8gSmVyZW1pYWgsIGFuZCBhc2tlZCBoaW06IGFuZCBoZSB0b2xkIHRoZW0gYWNjb3JkaW5nIHRvIGFsbCB0aGVzZSB3b3JkcyB0aGF0IHRoZSBraW5nIGhhZCBjb21tYW5kZWQuIFNvIHRoZXkgbGVmdCBvZmYgc3BlYWtpbmcgd2l0aCBoaW07IGZvciB0aGUgbWF0dGVyIHdhcyBub3QgcGVyY2VpdmVkLgpTbyBKZXJlbWlhaCBhYm9kZSBpbiB0aGUgY291cnQgb2YgdGhlIHByaXNvbiB1bnRpbCB0aGUgZGF5IHRoYXQgSmVydXNhbGVtIHdhcyB0YWtlbjogYW5kIGhlIHdhcyB0aGVyZSB3aGVuIEplcnVzYWxlbSB3YXMgdGFrZW4uCkluIHRoZSBuaW50aCB5ZWFyIG9mIFplZGVraWFoIGtpbmcgb2YgSnVkYWgsIGluIHRoZSB0ZW50aCBtb250aCwgY2FtZSBOZWJ1Y2hhZHJlenphciBraW5nIG9mIEJhYnlsb24gYW5kIGFsbCBoaXMgYXJteSBhZ2FpbnN0IEplcnVzYWxlbSwgYW5kIHRoZXkgYmVzaWVnZWQgaXQuCkFuZCBpbiB0aGUgZWxldmVudGggeWVhciBvZiBaZWRla2lhaCwgaW4gdGhlIGZvdXJ0aCBtb250aCwgdGhlIG5pbnRoIGRheSBvZiB0aGUgbW9udGgsIHRoZSBjaXR5IHdhcyBicm9rZW4gdXAuCkFuZCBhbGwgdGhlIHByaW5jZXMgb2YgdGhlIGtpbmcgb2YgQmFieWxvbiBjYW1lIGluLCBhbmQgc2F0IGluIHRoZSBtaWRkbGUgZ2F0ZSwgZXZlbiBOZXJnYWxzaGFyZXplciwgU2FtZ2FybmVibywgU2Fyc2VjaGltLCBSYWJzYXJpcywgTmVyZ2Fsc2hhcmV6ZXIsIFJhYm1hZywgd2l0aCBhbGwgdGhlIHJlc2lkdWUgb2YgdGhlIHByaW5jZXMgb2YgdGhlIGtpbmcgb2YgQmFieWxvbi4KQW5kIGl0IGNhbWUgdG8gcGFzcywgdGhhdCB3aGVuIFplZGVraWFoIHRoZSBraW5nIG9mIEp1ZGFoIHNhdyB0aGVtLCBhbmQgYWxsIHRoZSBtZW4gb2Ygd2FyLCB0aGVuIHRoZXkgZmxlZCwgYW5kIHdlbnQgZm9ydGggb3V0IG9mIHRoZSBjaXR5IGJ5IG5pZ2h0LCBieSB0aGUgd2F5IG9mIHRoZSBraW5nJ3MgZ2FyZGVuLCBieSB0aGUgZ2F0ZSBiZXR3aXh0IHRoZSB0d28gd2FsbHM6IGFuZCBoZSB3ZW50IG91dCB0aGUgd2F5IG9mIHRoZSBwbGFpbi4KQnV0IHRoZSBDaGFsZGVhbnMnIGFybXkgcHVyc3VlZCBhZnRlciB0aGVtLCBhbmQgb3ZlcnRvb2sgWmVkZWtpYWggaW4gdGhlIHBsYWlucyBvZiBKZXJpY2hvOiBhbmQgd2hlbiB0aGV5IGhhZCB0YWtlbiBoaW0sIHRoZXkgYnJvdWdodCBoaW0gdXAgdG8gTmVidWNoYWRuZXp6YXIga2luZyBvZiBCYWJ5bG9uIHRvIFJpYmxhaCBpbiB0aGUgbGFuZCBvZiBIYW1hdGgsIHdoZXJlIGhlIGdhdmUganVkZ21lbnQgdXBvbiBoaW0uClRoZW4gdGhlIGtpbmcgb2YgQmFieWxvbiBzbGV3IHRoZSBzb25zIG9mIFplZGVraWFoIGluIFJpYmxhaCBiZWZvcmUgaGlzIGV5ZXM6IGFsc28gdGhlIGtpbmcgb2YgQmFieWxvbiBzbGV3IGFsbCB0aGUgbm9ibGVzIG9mIEp1ZGFoLgpNb3Jlb3ZlciBoZSBwdXQgb3V0IFplZGVraWFoJ3MgZXllcywgYW5kIGJvdW5kIGhpbSB3aXRoIGNoYWlucywgdG8gY2FycnkgaGltIHRvIEJhYnlsb24uCkFuZCB0aGUgQ2hhbGRlYW5zIGJ1cm5lZCB0aGUga2luZydzIGhvdXNlLCBhbmQgdGhlIGhvdXNlcyBvZiB0aGUgcGVvcGxlLCB3aXRoIGZpcmUsIGFuZCBicmFrZSBkb3duIHRoZSB3YWxscyBvZiBKZXJ1c2FsZW0uClRoZW4gTmVidXphcmFkYW4gdGhlIGNhcHRhaW4gb2YgdGhlIGd1YXJkIGNhcnJpZWQgYXdheSBjYXB0aXZlIGludG8gQmFieWxvbiB0aGUgcmVtbmFudCBvZiB0aGUgcGVvcGxlIHRoYXQgcmVtYWluZWQgaW4gdGhlIGNpdHksIGFuZCB0aG9zZSB0aGF0IGZlbGwgYXdheSwgdGhhdCBmZWxsIHRvIGhpbSwgd2l0aCB0aGUgcmVzdCBvZiB0aGUgcGVvcGxlIHRoYXQgcmVtYWluZWQuCkJ1dCBOZWJ1emFyYWRhbiB0aGUgY2FwdGFpbiBvZiB0aGUgZ3VhcmQgbGVmdCBvZiB0aGUgcG9vciBvZiB0aGUgcGVvcGxlLCB3aGljaCBoYWQgbm90aGluZywgaW4gdGhlIGxhbmQgb2YgSnVkYWgsIGFuZCBnYXZlIHRoZW0gdmluZXlhcmRzIGFuZCBmaWVsZHMgYXQgdGhlIHNhbWUgdGltZS4KTm93IE5lYnVjaGFkcmV6emFyIGtpbmcgb2YgQmFieWxvbiBnYXZlIGNoYXJnZSBjb25jZXJuaW5nIEplcmVtaWFoIHRvIE5lYnV6YXJhZGFuIHRoZSBjYXB0YWluIG9mIHRoZSBndWFyZCwgc2F5aW5nLApUYWtlIGhpbSwgYW5kIGxvb2sgd2VsbCB0byBoaW0sIGFuZCBkbyBoaW0gbm8gaGFybTsgYnV0IGRvIHVudG8gaGltIGV2ZW4gYXMgaGUgc2hhbGwgc2F5IHVudG8gdGhlZS4KU28gTmVidXphcmFkYW4gdGhlIGNhcHRhaW4gb2YgdGhlIGd1YXJkIHNlbnQsIGFuZCBOZWJ1c2hhc2JhbiwgUmFic2FyaXMsIGFuZCBOZXJnYWxzaGFyZXplciwgUmFibWFnLCBhbmQgYWxsIHRoZSBraW5nIG9mIEJhYnlsb24ncyBwcmluY2VzOwpFdmVuIHRoZXkgc2VudCwgYW5kIHRvb2sgSmVyZW1pYWggb3V0IG9mIHRoZSBjb3VydCBvZiB0aGUgcHJpc29uLCBhbmQgY29tbWl0dGVkIGhpbSB1bnRvIEdlZGFsaWFoIHRoZSBzb24gb2YgQWhpa2FtIHRoZSBzb24gb2YgU2hhcGhhbiwgdGhhdCBoZSBzaG91bGQgY2FycnkgaGltIGhvbWU6IHNvIGhlIGR3ZWx0IGFtb25nIHRoZSBwZW9wbGUuCk5vdyB0aGUgd29yZCBvZiB0aGUgTE9SRCBjYW1lIHVudG8gSmVyZW1pYWgsIHdoaWxlIGhlIHdhcyBzaHV0IHVwIGluIHRoZSBjb3VydCBvZiB0aGUgcHJpc29uLCBzYXlpbmcsCkdvIGFuZCBzcGVhayB0byBFYmVkbWVsZWNoIHRoZSBFdGhpb3BpYW4sIHNheWluZywgVGh1cyBzYWl0aCB0aGUgTE9SRCBvZiBob3N0cywgdGhlIEdvZCBvZiBJc3JhZWw7IEJlaG9sZCwgSSB3aWxsIGJyaW5nIG15IHdvcmRzIHVwb24gdGhpcyBjaXR5IGZvciBldmlsLCBhbmQgbm90IGZvciBnb29kOyBhbmQgdGhleSBzaGFsbCBiZSBhY2NvbXBsaXNoZWQgaW4gdGhhdCBkYXkgYmVmb3JlIHRoZWUuCkJ1dCBJIHdpbGwgZGVsaXZlciB0aGVlIGluIHRoYXQgZGF5LCBzYWl0aCB0aGUgTE9SRDogYW5kIHRob3Ugc2hhbHQgbm90IGJlIGdpdmVuIGludG8gdGhlIGhhbmQgb2YgdGhlIG1lbiBvZiB3aG9tIHRob3UgYXJ0IGFmcmFpZC4KRm9yIEkgd2lsbCBzdXJlbHkgZGVsaXZlciB0aGVlLCBhbmQgdGhvdSBzaGFsdCBub3QgZmFsbCBieSB0aGUgc3dvcmQsIGJ1dCB0aHkgbGlmZSBzaGFsbCBiZSBmb3IgYSBwcmV5IHVudG8gdGhlZTogYmVjYXVzZSB0aG91IGhhc3QgcHV0IHRoeSB0cnVzdCBpbiBtZSwgc2FpdGggdGhlIExPUkQuClRoZSB3b3JkIHRoYXQgY2FtZSB0byBKZXJlbWlhaCBmcm9tIHRoZSBMT1JELCBhZnRlciB0aGF0IE5lYnV6YXJhZGFuIHRoZSBjYXB0YWluIG9mIHRoZSBndWFyZCBoYWQgbGV0IGhpbSBnbyBmcm9tIFJhbWFoLCB3aGVuIGhlIGhhZCB0YWtlbiBoaW0gYmVpbmcgYm91bmQgaW4gY2hhaW5zIGFtb25nIGFsbCB0aGF0IHdlcmUgY2FycmllZCBhd2F5IGNhcHRpdmUgb2YgSmVydXNhbGVtIGFuZCBKdWRhaCwgd2hpY2ggd2VyZSBjYXJyaWVkIGF3YXkgY2FwdGl2ZSB1bnRvIEJhYnlsb24uCkFuZCB0aGUgY2FwdGFpbiBvZiB0aGUgZ3VhcmQgdG9vayBKZXJlbWlhaCwgYW5kIHNhaWQgdW50byBoaW0sIFRoZSBMT1JEIHRoeSBHb2QgaGF0aCBwcm9ub3VuY2VkIHRoaXMgZXZpbCB1cG9uIHRoaXMgcGxhY2UuCk5vdyB0aGUgTE9SRCBoYXRoIGJyb3VnaHQgaXQsIGFuZCBkb25lIGFjY29yZGluZyBhcyBoZSBoYXRoIHNhaWQ6IGJlY2F1c2UgeWUgaGF2ZSBzaW5uZWQgYWdhaW5zdCB0aGUgTE9SRCwgYW5kIGhhdmUgbm90IG9iZXllZCBoaXMgdm9pY2UsIHRoZXJlZm9yZSB0aGlzIHRoaW5nIGlzIGNvbWUgdXBvbiB5b3UuCkFuZCBub3csIGJlaG9sZCwgSSBsb29zZSB0aGVlIHRoaXMgZGF5IGZyb20gdGhlIGNoYWlucyB3aGljaCB3ZXJlIHVwb24gdGhpbmUgaGFuZC4gSWYgaXQgc2VlbSBnb29kIHVudG8gdGhlZSB0byBjb21lIHdpdGggbWUgaW50byBCYWJ5bG9uLCBjb21lOyBhbmQgSSB3aWxsIGxvb2sgd2VsbCB1bnRvIHRoZWU6IGJ1dCBpZiBpdCBzZWVtIGlsbCB1bnRvIHRoZWUgdG8gY29tZSB3aXRoIG1lIGludG8gQmFieWxvbiwgZm9yYmVhcjogYmVob2xkLCBhbGwgdGhlIGxhbmQgaXMgYmVmb3JlIHRoZWU6IHdoaXRoZXIgaXQgc2VlbWV0aCBnb29kIGFuZCBjb252ZW5pZW50IGZvciB0aGVlIHRvIGdvLCB0aGl0aGVyIGdvLgpOb3cgd2hpbGUgaGUgd2FzIG5vdCB5ZXQgZ29uZSBiYWNrLCBoZSBzYWlkLCBHbyBiYWNrIGFsc28gdG8gR2VkYWxpYWggdGhlIHNvbiBvZiBBaGlrYW0gdGhlIHNvbiBvZiBTaGFwaGFuLCB3aG9tIHRoZSBraW5nIG9mIEJhYnlsb24gaGF0aCBtYWRlIGdvdmVybm9yIG92ZXIgdGhlIGNpdGllcyBvZiBKdWRhaCwgYW5kIGR3ZWxsIHdpdGggaGltIGFtb25nIHRoZSBwZW9wbGU6IG9yIGdvIHdoZXJlc29ldmVyIGl0IHNlZW1ldGggY29udmVuaWVudCB1bnRvIHRoZWUgdG8gZ28uIFNvIHRoZSBjYXB0YWluIG9mIHRoZSBndWFyZCBnYXZlIGhpbSB2aWN0dWFscyBhbmQgYSByZXdhcmQsIGFuZCBsZXQgaGltIGdvLgpUaGVuIHdlbnQgSmVyZW1pYWggdW50byBHZWRhbGlhaCB0aGUgc29uIG9mIEFoaWthbSB0byBNaXpwYWg7IGFuZCBkd2VsdCB3aXRoIGhpbSBhbW9uZyB0aGUgcGVvcGxlIHRoYXQgd2VyZSBsZWZ0IGluIHRoZSBsYW5kLgpOb3cgd2hlbiBhbGwgdGhlIGNhcHRhaW5zIG9mIHRoZSBmb3JjZXMgd2hpY2ggd2VyZSBpbiB0aGUgZmllbGRzLCBldmVuIHRoZXkgYW5kIHRoZWlyIG1lbiwgaGVhcmQgdGhhdCB0aGUga2luZyBvZiBCYWJ5bG9uIGhhZCBtYWRlIEdlZGFsaWFoIHRoZSBzb24gb2YgQWhpa2FtIGdvdmVybm9yIGluIHRoZSBsYW5kLCBhbmQgaGFkIGNvbW1pdHRlZCB1bnRvIGhpbSBtZW4sIGFuZCB3b21lbiwgYW5kIGNoaWxkcmVuLCBhbmQgb2YgdGhlIHBvb3Igb2YgdGhlIGxhbmQsIG9mIHRoZW0gdGhhdCB3ZXJlIG5vdCBjYXJyaWVkIGF3YXkgY2FwdGl2ZSB0byBCYWJ5bG9uOwpUaGVuIHRoZXkgY2FtZSB0byBHZWRhbGlhaCB0byBNaXpwYWgsIGV2ZW4gSXNobWFlbCB0aGUgc29uIG9mIE5ldGhhbmlhaCwgYW5kIEpvaGFuYW4gYW5kIEpvbmF0aGFuIHRoZSBzb25zIG9mIEthcmVhaCwgYW5kIFNlcmFpYWggdGhlIHNvbiBvZiBUYW5odW1ldGgsIGFuZCB0aGUgc29ucyBvZiBFcGhhaSB0aGUgTmV0b3BoYXRoaXRlLCBhbmQgSmV6YW5pYWggdGhlIHNvbiBvZiBhIE1hYWNoYXRoaXRlLCB0aGV5IGFuZCB0aGVpciBtZW4uCkFuZCBHZWRhbGlhaCB0aGUgc29uIG9mIEFoaWthbSB0aGUgc29uIG9mIFNoYXBoYW4gc3dhcmUgdW50byB0aGVtIGFuZCB0byB0aGVpciBtZW4sIHNheWluZywgRmVhciBub3QgdG8gc2VydmUgdGhlIENoYWxkZWFuczogZHdlbGwgaW4gdGhlIGxhbmQsIGFuZCBzZXJ2ZSB0aGUga2luZyBvZiBCYWJ5bG9uLCBhbmQgaXQgc2hhbGwgYmUgd2VsbCB3aXRoIHlvdS4KQXMgZm9yIG1lLCBiZWhvbGQsIEkgd2lsbCBkd2VsbCBhdCBNaXpwYWgsIHRvIHNlcnZlIHRoZSBDaGFsZGVhbnMsIHdoaWNoIHdpbGwgY29tZSB1bnRvIHVzOiBidXQgeWUsIGdhdGhlciB5ZSB3aW5lLCBhbmQgc3VtbWVyIGZydWl0cywgYW5kIG9pbCwgYW5kIHB1dCB0aGVtIGluIHlvdXIgdmVzc2VscywgYW5kIGR3ZWxsIGluIHlvdXIgY2l0aWVzIHRoYXQgeWUgaGF2ZSB0YWtlbi4KTGlrZXdpc2Ugd2hlbiBhbGwgdGhlIEpld3MgdGhhdCB3ZXJlIGluIE1vYWIsIGFuZCBhbW9uZyB0aGUgQW1tb25pdGVzLCBhbmQgaW4gRWRvbSwgYW5kIHRoYXQgd2VyZSBpbiBhbGwgdGhlIGNvdW50cmllcywgaGVhcmQgdGhhdCB0aGUga2luZyBvZiBCYWJ5bG9uIGhhZCBsZWZ0IGEgcmVtbmFudCBvZiBKdWRhaCwgYW5kIHRoYXQgaGUgaGFkIHNldCBvdmVyIHRoZW0gR2VkYWxpYWggdGhlIHNvbiBvZiBBaGlrYW0gdGhlIHNvbiBvZiBTaGFwaGFuOwpFdmVuIGFsbCB0aGUgSmV3cyByZXR1cm5lZCBvdXQgb2YgYWxsIHBsYWNlcyB3aGl0aGVyIHRoZXkgd2VyZSBkcml2ZW4sIGFuZCBjYW1lIHRvIHRoZSBsYW5kIG9mIEp1ZGFoLCB0byBHZWRhbGlhaCwgdW50byBNaXpwYWgsIGFuZCBnYXRoZXJlZCB3aW5lIGFuZCBzdW1tZXIgZnJ1aXRzIHZlcnkgbXVjaC4KTW9yZW92ZXIgSm9oYW5hbiB0aGUgc29uIG9mIEthcmVhaCwgYW5kIGFsbCB0aGUgY2FwdGFpbnMgb2YgdGhlIGZvcmNlcyB0aGF0IHdlcmUgaW4gdGhlIGZpZWxkcywgY2FtZSB0byBHZWRhbGlhaCB0byBNaXpwYWgsCkFuZCBzYWlkIHVudG8gaGltLCBEb3N0IHRob3UgY2VydGFpbmx5IGtub3cgdGhhdCBCYWFsaXMgdGhlIGtpbmcgb2YgdGhlIEFtbW9uaXRlcyBoYXRoIHNlbnQgSXNobWFlbCB0aGUgc29uIG9mIE5ldGhhbmlhaCB0byBzbGF5IHRoZWU/IEJ1dCBHZWRhbGlhaCB0aGUgc29uIG9mIEFoaWthbSBiZWxpZXZlZCB0aGVtIG5vdC4KVGhlbiBKb2hhbmFuIHRoZSBzb24gb2YgS2FyZWFoIHNwYWtlIHRvIEdlZGFsaWFoIGluIE1penBhaCBzZWNyZXRseSBzYXlpbmcsIExldCBtZSBnbywgSSBwcmF5IHRoZWUsIGFuZCBJIHdpbGwgc2xheSBJc2htYWVsIHRoZSBzb24gb2YgTmV0aGFuaWFoLCBhbmQgbm8gbWFuIHNoYWxsIGtub3cgaXQ6IHdoZXJlZm9yZSBzaG91bGQgaGUgc2xheSB0aGVlLCB0aGF0IGFsbCB0aGUgSmV3cyB3aGljaCBhcmUgZ2F0aGVyZWQgdW50byB0aGVlIHNob3VsZCBiZSBzY2F0dGVyZWQsIGFuZCB0aGUgcmVtbmFudCBpbiBKdWRhaCBwZXJpc2g/CkJ1dCBHZWRhbGlhaCB0aGUgc29uIG9mIEFoaWthbSBzYWlkIHVudG8gSm9oYW5hbiB0aGUgc29uIG9mIEthcmVhaCwgVGhvdSBzaGFsdCBub3QgZG8gdGhpcyB0aGluZzogZm9yIHRob3Ugc3BlYWtlc3QgZmFsc2VseSBvZiBJc2htYWVsLgpOb3cgaXQgY2FtZSB0byBwYXNzIGluIHRoZSBzZXZlbnRoIG1vbnRoLCB0aGF0IElzaG1hZWwgdGhlIHNvbiBvZiBOZXRoYW5pYWggdGhlIHNvbiBvZiBFbGlzaGFtYSwgb2YgdGhlIHNlZWQgcm95YWwsIGFuZCB0aGUgcHJpbmNlcyBvZiB0aGUga2luZywgZXZlbiB0ZW4gbWVuIHdpdGggaGltLCBjYW1lIHVudG8gR2VkYWxpYWggdGhlIHNvbiBvZiBBaGlrYW0gdG8gTWl6cGFoOyBhbmQgdGhlcmUgdGhleSBkaWQgZWF0IGJyZWFkIHRvZ2V0aGVyIGluIE1penBhaC4KVGhlbiBhcm9zZSBJc2htYWVsIHRoZSBzb24gb2YgTmV0aGFuaWFoLCBhbmQgdGhlIHRlbiBtZW4gdGhhdCB3ZXJlIHdpdGggaGltLCBhbmQgc21vdGUgR2VkYWxpYWggdGhlIHNvbiBvZiBBaGlrYW0gdGhlIHNvbiBvZiBTaGFwaGFuIHdpdGggdGhlIHN3b3JkLCBhbmQgc2xldyBoaW0sIHdob20gdGhlIGtpbmcgb2YgQmFieWxvbiBoYWQgbWFkZSBnb3Zlcm5vciBvdmVyIHRoZSBsYW5kLgpJc2htYWVsIGFsc28gc2xldyBhbGwgdGhlIEpld3MgdGhhdCB3ZXJlIHdpdGggaGltLCBldmVuIHdpdGggR2VkYWxpYWgsIGF0IE1penBhaCwgYW5kIHRoZSBDaGFsZGVhbnMgdGhhdCB3ZXJlIGZvdW5kIHRoZXJlLCBhbmQgdGhlIG1lbiBvZiB3YXIuCkFuZCBpdCBjYW1lIHRvIHBhc3MgdGhlIHNlY29uZCBkYXkgYWZ0ZXIgaGUgaGFkIHNsYWluIEdlZGFsaWFoLCBhbmQgbm8gbWFuIGtuZXcgaXQsClRoYXQgdGhlcmUgY2FtZSBjZXJ0YWluIGZyb20gU2hlY2hlbSwgZnJvbSBTaGlsb2gsIGFuZCBmcm9tIFNhbWFyaWEsIGV2ZW4gZm91cnNjb3JlIG1lbiwgaGF2aW5nIHRoZWlyIGJlYXJkcyBzaGF2ZW4sIGFuZCB0aGVpciBjbG90aGVzIHJlbnQsIGFuZCBoYXZpbmcgY3V0IHRoZW1zZWx2ZXMsIHdpdGggb2ZmZXJpbmdzIGFuZCBpbmNlbnNlIGluIHRoZWlyIGhhbmQsIHRvIGJyaW5nIHRoZW0gdG8gdGhlIGhvdXNlIG9mIHRoZSBMT1JELgpBbmQgSXNobWFlbCB0aGUgc29uIG9mIE5ldGhhbmlhaCB3ZW50IGZvcnRoIGZyb20gTWl6cGFoIHRvIG1lZXQgdGhlbSwgd2VlcGluZyBhbGwgYWxvbmcgYXMgaGUgd2VudDogYW5kIGl0IGNhbWUgdG8gcGFzcywgYXMgaGUgbWV0IHRoZW0sIGhlIHNhaWQgdW50byB0aGVtLCBDb21lIHRvIEdlZGFsaWFoIHRoZSBzb24gb2YgQWhpa2FtLgpBbmQgaXQgd2FzIHNvLCB3aGVuIHRoZXkgY2FtZSBpbnRvIHRoZSBtaWRzdCBvZiB0aGUgY2l0eSwgdGhhdCBJc2htYWVsIHRoZSBzb24gb2YgTmV0aGFuaWFoIHNsZXcgdGhlbSwgYW5kIGNhc3QgdGhlbSBpbnRvIHRoZSBtaWRzdCBvZiB0aGUgcGl0LCBoZSwgYW5kIHRoZSBtZW4gdGhhdCB3ZXJlIHdpdGggaGltLgpCdXQgdGVuIG1lbiB3ZXJlIGZvdW5kIGFtb25nIHRoZW0gdGhhdCBzYWlkIHVudG8gSXNobWFlbCwgU2xheSB1cyBub3Q6IGZvciB3ZSBoYXZlIHRyZWFzdXJlcyBpbiB0aGUgZmllbGQsIG9mIHdoZWF0LCBhbmQgb2YgYmFybGV5LCBhbmQgb2Ygb2lsLCBhbmQgb2YgaG9uZXkuIFNvIGhlIGZvcmJhcmUsIGFuZCBzbGV3IHRoZW0gbm90IGFtb25nIHRoZWlyIGJyZXRocmVuLgpOb3cgdGhlIHBpdCB3aGVyZWluIElzaG1hZWwgaGFkIGNhc3QgYWxsIHRoZSBkZWFkIGJvZGllcyBvZiB0aGUgbWVuLCB3aG9tIGhlIGhhZCBzbGFpbiBiZWNhdXNlIG9mIEdlZGFsaWFoLCB3YXMgaXQgd2hpY2ggQXNhIHRoZSBraW5nIGhhZCBtYWRlIGZvciBmZWFyIG9mIEJhYXNoYSBraW5nIG9mIElzcmFlbDogYW5kIElzaG1hZWwgdGhlIHNvbiBvZiBOZXRoYW5pYWggZmlsbGVkIGl0IHdpdGggdGhlbSB0aGF0IHdlcmUgc2xhaW4uClRoZW4gSXNobWFlbCBjYXJyaWVkIGF3YXkgY2FwdGl2ZSBhbGwgdGhlIHJlc2lkdWUgb2YgdGhlIHBlb3BsZSB0aGF0IHdlcmUgaW4gTWl6cGFoLCBldmVuIHRoZSBraW5nJ3MgZGF1Z2h0ZXJzLCBhbmQgYWxsIHRoZSBwZW9wbGUgdGhhdCByZW1haW5lZCBpbiBNaXpwYWgsIHdob20gTmVidXphcmFkYW4gdGhlIGNhcHRhaW4gb2YgdGhlIGd1YXJkIGhhZCBjb21taXR0ZWQgdG8gR2VkYWxpYWggdGhlIHNvbiBvZiBBaGlrYW06IGFuZCBJc2htYWVsIHRoZSBzb24gb2YgTmV0aGFuaWFoIGNhcnJpZWQgdGhlbSBhd2F5IGNhcHRpdmUsIGFuZCBkZXBhcnRlZCB0byBnbyBvdmVyIHRvIHRoZSBBbW1vbml0ZXMuCkJ1dCB3aGVuIEpvaGFuYW4gdGhlIHNvbiBvZiBLYXJlYWgsIGFuZCBhbGwgdGhlIGNhcHRhaW5zIG9mIHRoZSBmb3JjZXMgdGhhdCB3ZXJlIHdpdGggaGltLCBoZWFyZCBvZiBhbGwgdGhlIGV2aWwgdGhhdCBJc2htYWVsIHRoZSBzb24gb2YgTmV0aGFuaWFoIGhhZCBkb25lLApUaGVuIHRoZXkgdG9vayBhbGwgdGhlIG1lbiwgYW5kIHdlbnQgdG8gZmlnaHQgd2l0aCBJc2htYWVsIHRoZSBzb24gb2YgTmV0aGFuaWFoLCBhbmQgZm91bmQgaGltIGJ5IHRoZSBncmVhdCB3YXRlcnMgdGhhdCBhcmUgaW4gR2liZW9uLgpOb3cgaXQgY2FtZSB0byBwYXNzLCB0aGF0IHdoZW4gYWxsIHRoZSBwZW9wbGUgd2hpY2ggd2VyZSB3aXRoIElzaG1hZWwgc2F3IEpvaGFuYW4gdGhlIHNvbiBvZiBLYXJlYWgsIGFuZCBhbGwgdGhlIGNhcHRhaW5zIG9mIHRoZSBmb3JjZXMgdGhhdCB3ZXJlIHdpdGggaGltLCB0aGVuIHRoZXkgd2VyZSBnbGFkLgpTbyBhbGwgdGhlIHBlb3BsZSB0aGF0IElzaG1hZWwgaGFkIGNhcnJpZWQgYXdheSBjYXB0aXZlIGZyb20gTWl6cGFoIGNhc3QgYWJvdXQgYW5kIHJldHVybmVkLCBhbmQgd2VudCB1bnRvIEpvaGFuYW4gdGhlIHNvbiBvZiBLYXJlYWguCkJ1dCBJc2htYWVsIHRoZSBzb24gb2YgTmV0aGFuaWFoIGVzY2FwZWQgZnJvbSBKb2hhbmFuIHdpdGggZWlnaHQgbWVuLCBhbmQgd2VudCB0byB0aGUgQW1tb25pdGVzLgpUaGVuIHRvb2sgSm9oYW5hbiB0aGUgc29uIG9mIEthcmVhaCwgYW5kIGFsbCB0aGUgY2FwdGFpbnMgb2YgdGhlIGZvcmNlcyB0aGF0IHdlcmUgd2l0aCBoaW0sIGFsbCB0aGUgcmVtbmFudCBvZiB0aGUgcGVvcGxlIHdob20gaGUgaGFkIHJlY292ZXJlZCBmcm9tIElzaG1hZWwgdGhlIHNvbiBvZiBOZXRoYW5pYWgsIGZyb20gTWl6cGFoLCBhZnRlciB0aGF0IGhlIGhhZCBzbGFpbiBHZWRhbGlhaCB0aGUgc29uIG9mIEFoaWthbSwgZXZlbiBtaWdodHkgbWVuIG9mIHdhciwgYW5kIHRoZSB3b21lbiwgYW5kIHRoZSBjaGlsZHJlbiwgYW5kIHRoZSBldW51Y2hzLCB3aG9tIGhlIGhhZCBicm91Z2h0IGFnYWluIGZyb20gR2liZW9uOgpBbmQgdGhleSBkZXBhcnRlZCwgYW5kIGR3ZWx0IGluIHRoZSBoYWJpdGF0aW9uIG9mIENoaW1oYW0sIHdoaWNoIGlzIGJ5IEJldGhsZWhlbSwgdG8gZ28gdG8gZW50ZXIgaW50byBFZ3lwdCwKQmVjYXVzZSBvZiB0aGUgQ2hhbGRlYW5zOiBmb3IgdGhleSB3ZXJlIGFmcmFpZCBvZiB0aGVtLCBiZWNhdXNlIElzaG1hZWwgdGhlIHNvbiBvZiBOZXRoYW5pYWggaGFkIHNsYWluIEdlZGFsaWFoIHRoZSBzb24gb2YgQWhpa2FtLCB3aG9tIHRoZSBraW5nIG9mIEJhYnlsb24gbWFkZSBnb3Zlcm5vciBpbiB0aGUgbGFuZC4KVGhlbiBhbGwgdGhlIGNhcHRhaW5zIG9mIHRoZSBmb3JjZXMsIGFuZCBKb2hhbmFuIHRoZSBzb24gb2YgS2FyZWFoLCBhbmQgSmV6YW5pYWggdGhlIHNvbiBvZiBIb3NoYWlhaCwgYW5kIGFsbCB0aGUgcGVvcGxlIGZyb20gdGhlIGxlYXN0IGV2ZW4gdW50byB0aGUgZ3JlYXRlc3QsIGNhbWUgbmVhciwKQW5kIHNhaWQgdW50byBKZXJlbWlhaCB0aGUgcHJvcGhldCwgTGV0LCB3ZSBiZXNlZWNoIHRoZWUsIG91ciBzdXBwbGljYXRpb24gYmUgYWNjZXB0ZWQgYmVmb3JlIHRoZWUsIGFuZCBwcmF5IGZvciB1cyB1bnRvIHRoZSBMT1JEIHRoeSBHb2QsIGV2ZW4gZm9yIGFsbCB0aGlzIHJlbW5hbnQ7IChmb3Igd2UgYXJlIGxlZnQgYnV0IGEgZmV3IG9mIG1hbnksIGFzIHRoaW5lIGV5ZXMgZG8gYmVob2xkIHVzOikKVGhhdCB0aGUgTE9SRCB0aHkgR29kIG1heSBzaGV3IHVzIHRoZSB3YXkgd2hlcmVpbiB3ZSBtYXkgd2FsaywgYW5kIHRoZSB0aGluZyB0aGF0IHdlIG1heSBkby4KVGhlbiBKZXJlbWlhaCB0aGUgcHJvcGhldCBzYWlkIHVudG8gdGhlbSwgSSBoYXZlIGhlYXJkIHlvdTsgYmVob2xkLCBJIHdpbGwgcHJheSB1bnRvIHRoZSBMT1JEIHlvdXIgR29kIGFjY29yZGluZyB0byB5b3VyIHdvcmRzOyBhbmQgaXQgc2hhbGwgY29tZSB0byBwYXNzLCB0aGF0IHdoYXRzb2V2ZXIgdGhpbmcgdGhlIExPUkQgc2hhbGwgYW5zd2VyIHlvdSwgSSB3aWxsIGRlY2xhcmUgaXQgdW50byB5b3U7IEkgd2lsbCBrZWVwIG5vdGhpbmcgYmFjayBmcm9tIHlvdS4KVGhlbiB0aGV5IHNhaWQgdG8gSmVyZW1pYWgsIFRoZSBMT1JEIGJlIGEgdHJ1ZSBhbmQgZmFpdGhmdWwgd2l0bmVzcyBiZXR3ZWVuIHVzLCBpZiB3ZSBkbyBub3QgZXZlbiBhY2NvcmRpbmcgdG8gYWxsIHRoaW5ncyBmb3IgdGhlIHdoaWNoIHRoZSBMT1JEIHRoeSBHb2Qgc2hhbGwgc2VuZCB0aGVlIHRvIHVzLgpXaGV0aGVyIGl0IGJlIGdvb2QsIG9yIHdoZXRoZXIgaXQgYmUgZXZpbCwgd2Ugd2lsbCBvYmV5IHRoZSB2b2ljZSBvZiB0aGUgTE9SRCBvdXIgR29kLCB0byB3aG9tIHdlIHNlbmQgdGhlZTsgdGhhdCBpdCBtYXkgYmUgd2VsbCB3aXRoIHVzLCB3aGVuIHdlIG9iZXkgdGhlIHZvaWNlIG9mIHRoZSBMT1JEIG91ciBHb2QuCkFuZCBpdCBjYW1lIHRvIHBhc3MgYWZ0ZXIgdGVuIGRheXMsIHRoYXQgdGhlIHdvcmQgb2YgdGhlIExPUkQgY2FtZSB1bnRvIEplcmVtaWFoLgpUaGVuIGNhbGxlZCBoZSBKb2hhbmFuIHRoZSBzb24gb2YgS2FyZWFoLCBhbmQgYWxsIHRoZSBjYXB0YWlucyBvZiB0aGUgZm9yY2VzIHdoaWNoIHdlcmUgd2l0aCBoaW0sIGFuZCBhbGwgdGhlIHBlb3BsZSBmcm9tIHRoZSBsZWFzdCBldmVuIHRvIHRoZSBncmVhdGVzdCwKQW5kIHNhaWQgdW50byB0aGVtLCBUaHVzIHNhaXRoIHRoZSBMT1JELCB0aGUgR29kIG9mIElzcmFlbCwgdW50byB3aG9tIHllIHNlbnQgbWUgdG8gcHJlc2VudCB5b3VyIHN1cHBsaWNhdGlvbiBiZWZvcmUgaGltOwpJZiB5ZSB3aWxsIHN0aWxsIGFiaWRlIGluIHRoaXMgbGFuZCwgdGhlbiB3aWxsIEkgYnVpbGQgeW91LCBhbmQgbm90IHB1bGwgeW91IGRvd24sIGFuZCBJIHdpbGwgcGxhbnQgeW91LCBhbmQgbm90IHBsdWNrIHlvdSB1cDogZm9yIEkgcmVwZW50IG1lIG9mIHRoZSBldmlsIHRoYXQgSSBoYXZlIGRvbmUgdW50byB5b3UuCkJlIG5vdCBhZnJhaWQgb2YgdGhlIGtpbmcgb2YgQmFieWxvbiwgb2Ygd2hvbSB5ZSBhcmUgYWZyYWlkOyBiZSBub3QgYWZyYWlkIG9mIGhpbSwgc2FpdGggdGhlIExPUkQ6IGZvciBJIGFtIHdpdGggeW91IHRvIHNhdmUgeW91LCBhbmQgdG8gZGVsaXZlciB5b3UgZnJvbSBoaXMgaGFuZC4KQW5kIEkgd2lsbCBzaGV3IG1lcmNpZXMgdW50byB5b3UsIHRoYXQgaGUgbWF5IGhhdmUgbWVyY3kgdXBvbiB5b3UsIGFuZCBjYXVzZSB5b3UgdG8gcmV0dXJuIHRvIHlvdXIgb3duIGxhbmQuCkJ1dCBpZiB5ZSBzYXksIFdlIHdpbGwgbm90IGR3ZWxsIGluIHRoaXMgbGFuZCwgbmVpdGhlciBvYmV5IHRoZSB2b2ljZSBvZiB0aGUgTE9SRCB5b3VyIEdvZCwKU2F5aW5nLCBObzsgYnV0IHdlIHdpbGwgZ28gaW50byB0aGUgbGFuZCBvZiBFZ3lwdCwgd2hlcmUgd2Ugc2hhbGwgc2VlIG5vIHdhciwgbm9yIGhlYXIgdGhlIHNvdW5kIG9mIHRoZSB0cnVtcGV0LCBub3IgaGF2ZSBodW5nZXIgb2YgYnJlYWQ7IGFuZCB0aGVyZSB3aWxsIHdlIGR3ZWxsOgpBbmQgbm93IHRoZXJlZm9yZSBoZWFyIHRoZSB3b3JkIG9mIHRoZSBMT1JELCB5ZSByZW1uYW50IG9mIEp1ZGFoOyBUaHVzIHNhaXRoIHRoZSBMT1JEIG9mIGhvc3RzLCB0aGUgR29kIG9mIElzcmFlbDsgSWYgeWUgd2hvbGx5IHNldCB5b3VyIGZhY2VzIHRvIGVudGVyIGludG8gRWd5cHQsIGFuZCBnbyB0byBzb2pvdXJuIHRoZXJlOwpUaGVuIGl0IHNoYWxsIGNvbWUgdG8gcGFzcywgdGhhdCB0aGUgc3dvcmQsIHdoaWNoIHllIGZlYXJlZCwgc2hhbGwgb3ZlcnRha2UgeW91IHRoZXJlIGluIHRoZSBsYW5kIG9mIEVneXB0LCBhbmQgdGhlIGZhbWluZSwgd2hlcmVvZiB5ZSB3ZXJlIGFmcmFpZCwgc2hhbGwgZm9sbG93IGNsb3NlIGFmdGVyIHlvdSB0aGVyZSBpbiBFZ3lwdDsgYW5kIHRoZXJlIHllIHNoYWxsIGRpZS4KU28gc2hhbGwgaXQgYmUgd2l0aCBhbGwgdGhlIG1lbiB0aGF0IHNldCB0aGVpciBmYWNlcyB0byBnbyBpbnRvIEVneXB0IHRvIHNvam91cm4gdGhlcmU7IHRoZXkgc2hhbGwgZGllIGJ5IHRoZSBzd29yZCwgYnkgdGhlIGZhbWluZSwgYW5kIGJ5IHRoZSBwZXN0aWxlbmNlOiBhbmQgbm9uZSBvZiB0aGVtIHNoYWxsIHJlbWFpbiBvciBlc2NhcGUgZnJvbSB0aGUgZXZpbCB0aGF0IEkgd2lsbCBicmluZyB1cG9uIHRoZW0uCkZvciB0aHVzIHNhaXRoIHRoZSBMT1JEIG9mIGhvc3RzLCB0aGUgR29kIG9mIElzcmFlbDsgQXMgbWluZSBhbmdlciBhbmQgbXkgZnVyeSBoYXRoIGJlZW4gcG91cmVkIGZvcnRoIHVwb24gdGhlIGluaGFiaXRhbnRzIG9mIEplcnVzYWxlbTsgc28gc2hhbGwgbXkgZnVyeSBiZSBwb3VyZWQgZm9ydGggdXBvbiB5b3UsIHdoZW4geWUgc2hhbGwgZW50ZXIgaW50byBFZ3lwdDogYW5kIHllIHNoYWxsIGJlIGFuIGV4ZWNyYXRpb24sIGFuZCBhbiBhc3RvbmlzaG1lbnQsIGFuZCBhIGN1cnNlLCBhbmQgYSByZXByb2FjaDsgYW5kIHllIHNoYWxsIHNlZSB0aGlzIHBsYWNlIG5vIG1vcmUuClRoZSBMT1JEIGhhdGggc2FpZCBjb25jZXJuaW5nIHlvdSwgTyB5ZSByZW1uYW50IG9mIEp1ZGFoOyBHbyB5ZSBub3QgaW50byBFZ3lwdDoga25vdyBjZXJ0YWlubHkgdGhhdCBJIGhhdmUgYWRtb25pc2hlZCB5b3UgdGhpcyBkYXkuCkZvciB5ZSBkaXNzZW1ibGVkIGluIHlvdXIgaGVhcnRzLCB3aGVuIHllIHNlbnQgbWUgdW50byB0aGUgTE9SRCB5b3VyIEdvZCwgc2F5aW5nLCBQcmF5IGZvciB1cyB1bnRvIHRoZSBMT1JEIG91ciBHb2Q7IGFuZCBhY2NvcmRpbmcgdW50byBhbGwgdGhhdCB0aGUgTE9SRCBvdXIgR29kIHNoYWxsIHNheSwgc28gZGVjbGFyZSB1bnRvIHVzLCBhbmQgd2Ugd2lsbCBkbyBpdC4KQW5kIG5vdyBJIGhhdmUgdGhpcyBkYXkgZGVjbGFyZWQgaXQgdG8geW91OyBidXQgeWUgaGF2ZSBub3Qgb2JleWVkIHRoZSB2b2ljZSBvZiB0aGUgTE9SRCB5b3VyIEdvZCwgbm9yIGFueSB0aGluZyBmb3IgdGhlIHdoaWNoIGhlIGhhdGggc2VudCBtZSB1bnRvIHlvdS4KTm93IHRoZXJlZm9yZSBrbm93IGNlcnRhaW5seSB0aGF0IHllIHNoYWxsIGRpZSBieSB0aGUgc3dvcmQsIGJ5IHRoZSBmYW1pbmUsIGFuZCBieSB0aGUgcGVzdGlsZW5jZSwgaW4gdGhlIHBsYWNlIHdoaXRoZXIgeWUgZGVzaXJlIHRvIGdvIGFuZCB0byBzb2pvdXJuLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB0aGF0IHdoZW4gSmVyZW1pYWggaGFkIG1hZGUgYW4gZW5kIG9mIHNwZWFraW5nIHVudG8gYWxsIHRoZSBwZW9wbGUgYWxsIHRoZSB3b3JkcyBvZiB0aGUgTE9SRCB0aGVpciBHb2QsIGZvciB3aGljaCB0aGUgTE9SRCB0aGVpciBHb2QgaGFkIHNlbnQgaGltIHRvIHRoZW0sIGV2ZW4gYWxsIHRoZXNlIHdvcmRzLApUaGVuIHNwYWtlIEF6YXJpYWggdGhlIHNvbiBvZiBIb3NoYWlhaCwgYW5kIEpvaGFuYW4gdGhlIHNvbiBvZiBLYXJlYWgsIGFuZCBhbGwgdGhlIHByb3VkIG1lbiwgc2F5aW5nIHVudG8gSmVyZW1pYWgsIFRob3Ugc3BlYWtlc3QgZmFsc2VseTogdGhlIExPUkQgb3VyIEdvZCBoYXRoIG5vdCBzZW50IHRoZWUgdG8gc2F5LCBHbyBub3QgaW50byBFZ3lwdCB0byBzb2pvdXJuIHRoZXJlOgpCdXQgQmFydWNoIHRoZSBzb24gb2YgTmVyaWFoIHNldHRldGggdGhlZSBvbiBhZ2FpbnN0IHVzLCBmb3IgdG8gZGVsaXZlciB1cyBpbnRvIHRoZSBoYW5kIG9mIHRoZSBDaGFsZGVhbnMsIHRoYXQgdGhleSBtaWdodCBwdXQgdXMgdG8gZGVhdGgsIGFuZCBjYXJyeSB1cyBhd2F5IGNhcHRpdmVzIGludG8gQmFieWxvbi4KU28gSm9oYW5hbiB0aGUgc29uIG9mIEthcmVhaCwgYW5kIGFsbCB0aGUgY2FwdGFpbnMgb2YgdGhlIGZvcmNlcywgYW5kIGFsbCB0aGUgcGVvcGxlLCBvYmV5ZWQgbm90IHRoZSB2b2ljZSBvZiB0aGUgTE9SRCwgdG8gZHdlbGwgaW4gdGhlIGxhbmQgb2YgSnVkYWguCkJ1dCBKb2hhbmFuIHRoZSBzb24gb2YgS2FyZWFoLCBhbmQgYWxsIHRoZSBjYXB0YWlucyBvZiB0aGUgZm9yY2VzLCB0b29rIGFsbCB0aGUgcmVtbmFudCBvZiBKdWRhaCwgdGhhdCB3ZXJlIHJldHVybmVkIGZyb20gYWxsIG5hdGlvbnMsIHdoaXRoZXIgdGhleSBoYWQgYmVlbiBkcml2ZW4sIHRvIGR3ZWxsIGluIHRoZSBsYW5kIG9mIEp1ZGFoOwpFdmVuIG1lbiwgYW5kIHdvbWVuLCBhbmQgY2hpbGRyZW4sIGFuZCB0aGUga2luZydzIGRhdWdodGVycywgYW5kIGV2ZXJ5IHBlcnNvbiB0aGF0IE5lYnV6YXJhZGFuIHRoZSBjYXB0YWluIG9mIHRoZSBndWFyZCBoYWQgbGVmdCB3aXRoIEdlZGFsaWFoIHRoZSBzb24gb2YgQWhpa2FtIHRoZSBzb24gb2YgU2hhcGhhbiwgYW5kIEplcmVtaWFoIHRoZSBwcm9waGV0LCBhbmQgQmFydWNoIHRoZSBzb24gb2YgTmVyaWFoLgpTbyB0aGV5IGNhbWUgaW50byB0aGUgbGFuZCBvZiBFZ3lwdDogZm9yIHRoZXkgb2JleWVkIG5vdCB0aGUgdm9pY2Ugb2YgdGhlIExPUkQ6IHRodXMgY2FtZSB0aGV5IGV2ZW4gdG8gVGFocGFuaGVzLgpUaGVuIGNhbWUgdGhlIHdvcmQgb2YgdGhlIExPUkQgdW50byBKZXJlbWlhaCBpbiBUYWhwYW5oZXMsIHNheWluZywKVGFrZSBncmVhdCBzdG9uZXMgaW4gdGhpbmUgaGFuZCwgYW5kIGhpZGUgdGhlbSBpbiB0aGUgY2xheSBpbiB0aGUgYnJpY2traWxuLCB3aGljaCBpcyBhdCB0aGUgZW50cnkgb2YgUGhhcmFvaCdzIGhvdXNlIGluIFRhaHBhbmhlcywgaW4gdGhlIHNpZ2h0IG9mIHRoZSBtZW4gb2YgSnVkYWg7CkFuZCBzYXkgdW50byB0aGVtLCBUaHVzIHNhaXRoIHRoZSBMT1JEIG9mIGhvc3RzLCB0aGUgR29kIG9mIElzcmFlbDsgQmVob2xkLCBJIHdpbGwgc2VuZCBhbmQgdGFrZSBOZWJ1Y2hhZHJlenphciB0aGUga2luZyBvZiBCYWJ5bG9uLCBteSBzZXJ2YW50LCBhbmQgd2lsbCBzZXQgaGlzIHRocm9uZSB1cG9uIHRoZXNlIHN0b25lcyB0aGF0IEkgaGF2ZSBoaWQ7IGFuZCBoZSBzaGFsbCBzcHJlYWQgaGlzIHJveWFsIHBhdmlsaW9uIG92ZXIgdGhlbS4KQW5kIHdoZW4gaGUgY29tZXRoLCBoZSBzaGFsbCBzbWl0ZSB0aGUgbGFuZCBvZiBFZ3lwdCwgYW5kIGRlbGl2ZXIgc3VjaCBhcyBhcmUgZm9yIGRlYXRoIHRvIGRlYXRoOyBhbmQgc3VjaCBhcyBhcmUgZm9yIGNhcHRpdml0eSB0byBjYXB0aXZpdHk7IGFuZCBzdWNoIGFzIGFyZSBmb3IgdGhlIHN3b3JkIHRvIHRoZSBzd29yZC4KQW5kIEkgd2lsbCBraW5kbGUgYSBmaXJlIGluIHRoZSBob3VzZXMgb2YgdGhlIGdvZHMgb2YgRWd5cHQ7IGFuZCBoZSBzaGFsbCBidXJuIHRoZW0sIGFuZCBjYXJyeSB0aGVtIGF3YXkgY2FwdGl2ZXM6IGFuZCBoZSBzaGFsbCBhcnJheSBoaW1zZWxmIHdpdGggdGhlIGxhbmQgb2YgRWd5cHQsIGFzIGEgc2hlcGhlcmQgcHV0dGV0aCBvbiBoaXMgZ2FybWVudDsgYW5kIGhlIHNoYWxsIGdvIGZvcnRoIGZyb20gdGhlbmNlIGluIHBlYWNlLgpIZSBzaGFsbCBicmVhayBhbHNvIHRoZSBpbWFnZXMgb2YgQmV0aHNoZW1lc2gsIHRoYXQgaXMgaW4gdGhlIGxhbmQgb2YgRWd5cHQ7IGFuZCB0aGUgaG91c2VzIG9mIHRoZSBnb2RzIG9mIHRoZSBFZ3lwdGlhbnMgc2hhbGwgaGUgYnVybiB3aXRoIGZpcmUuClRoZSB3b3JkIHRoYXQgY2FtZSB0byBKZXJlbWlhaCBjb25jZXJuaW5nIGFsbCB0aGUgSmV3cyB3aGljaCBkd2VsbCBpbiB0aGUgbGFuZCBvZiBFZ3lwdCwgd2hpY2ggZHdlbGwgYXQgTWlnZG9sLCBhbmQgYXQgVGFocGFuaGVzLCBhbmQgYXQgTm9waCwgYW5kIGluIHRoZSBjb3VudHJ5IG9mIFBhdGhyb3MsIHNheWluZywKVGh1cyBzYWl0aCB0aGUgTE9SRCBvZiBob3N0cywgdGhlIEdvZCBvZiBJc3JhZWw7IFllIGhhdmUgc2VlbiBhbGwgdGhlIGV2aWwgdGhhdCBJIGhhdmUgYnJvdWdodCB1cG9uIEplcnVzYWxlbSwgYW5kIHVwb24gYWxsIHRoZSBjaXRpZXMgb2YgSnVkYWg7IGFuZCwgYmVob2xkLCB0aGlzIGRheSB0aGV5IGFyZSBhIGRlc29sYXRpb24sIGFuZCBubyBtYW4gZHdlbGxldGggdGhlcmVpbiwKQmVjYXVzZSBvZiB0aGVpciB3aWNrZWRuZXNzIHdoaWNoIHRoZXkgaGF2ZSBjb21taXR0ZWQgdG8gcHJvdm9rZSBtZSB0byBhbmdlciwgaW4gdGhhdCB0aGV5IHdlbnQgdG8gYnVybiBpbmNlbnNlLCBhbmQgdG8gc2VydmUgb3RoZXIgZ29kcywgd2hvbSB0aGV5IGtuZXcgbm90LCBuZWl0aGVyIHRoZXksIHllLCBub3IgeW91ciBmYXRoZXJzLgpIb3diZWl0IEkgc2VudCB1bnRvIHlvdSBhbGwgbXkgc2VydmFudHMgdGhlIHByb3BoZXRzLCByaXNpbmcgZWFybHkgYW5kIHNlbmRpbmcgdGhlbSwgc2F5aW5nLCBPaCwgZG8gbm90IHRoaXMgYWJvbWluYWJsZSB0aGluZyB0aGF0IEkgaGF0ZS4KQnV0IHRoZXkgaGVhcmtlbmVkIG5vdCwgbm9yIGluY2xpbmVkIHRoZWlyIGVhciB0byB0dXJuIGZyb20gdGhlaXIgd2lja2VkbmVzcywgdG8gYnVybiBubyBpbmNlbnNlIHVudG8gb3RoZXIgZ29kcy4KV2hlcmVmb3JlIG15IGZ1cnkgYW5kIG1pbmUgYW5nZXIgd2FzIHBvdXJlZCBmb3J0aCwgYW5kIHdhcyBraW5kbGVkIGluIHRoZSBjaXRpZXMgb2YgSnVkYWggYW5kIGluIHRoZSBzdHJlZXRzIG9mIEplcnVzYWxlbTsgYW5kIHRoZXkgYXJlIHdhc3RlZCBhbmQgZGVzb2xhdGUsIGFzIGF0IHRoaXMgZGF5LgpUaGVyZWZvcmUgbm93IHRodXMgc2FpdGggdGhlIExPUkQsIHRoZSBHb2Qgb2YgaG9zdHMsIHRoZSBHb2Qgb2YgSXNyYWVsOyBXaGVyZWZvcmUgY29tbWl0IHllIHRoaXMgZ3JlYXQgZXZpbCBhZ2FpbnN0IHlvdXIgc291bHMsIHRvIGN1dCBvZmYgZnJvbSB5b3UgbWFuIGFuZCB3b21hbiwgY2hpbGQgYW5kIHN1Y2tsaW5nLCBvdXQgb2YgSnVkYWgsIHRvIGxlYXZlIHlvdSBub25lIHRvIHJlbWFpbjsKSW4gdGhhdCB5ZSBwcm92b2tlIG1lIHVudG8gd3JhdGggd2l0aCB0aGUgd29ya3Mgb2YgeW91ciBoYW5kcywgYnVybmluZyBpbmNlbnNlIHVudG8gb3RoZXIgZ29kcyBpbiB0aGUgbGFuZCBvZiBFZ3lwdCwgd2hpdGhlciB5ZSBiZSBnb25lIHRvIGR3ZWxsLCB0aGF0IHllIG1pZ2h0IGN1dCB5b3Vyc2VsdmVzIG9mZiwgYW5kIHRoYXQgeWUgbWlnaHQgYmUgYSBjdXJzZSBhbmQgYSByZXByb2FjaCBhbW9uZyBhbGwgdGhlIG5hdGlvbnMgb2YgdGhlIGVhcnRoPwpIYXZlIHllIGZvcmdvdHRlbiB0aGUgd2lja2VkbmVzcyBvZiB5b3VyIGZhdGhlcnMsIGFuZCB0aGUgd2lja2VkbmVzcyBvZiB0aGUga2luZ3Mgb2YgSnVkYWgsIGFuZCB0aGUgd2lja2VkbmVzcyBvZiB0aGVpciB3aXZlcywgYW5kIHlvdXIgb3duIHdpY2tlZG5lc3MsIGFuZCB0aGUgd2lja2VkbmVzcyBvZiB5b3VyIHdpdmVzLCB3aGljaCB0aGV5IGhhdmUgY29tbWl0dGVkIGluIHRoZSBsYW5kIG9mIEp1ZGFoLCBhbmQgaW4gdGhlIHN0cmVldHMgb2YgSmVydXNhbGVtPwpUaGV5IGFyZSBub3QgaHVtYmxlZCBldmVuIHVudG8gdGhpcyBkYXksIG5laXRoZXIgaGF2ZSB0aGV5IGZlYXJlZCwgbm9yIHdhbGtlZCBpbiBteSBsYXcsIG5vciBpbiBteSBzdGF0dXRlcywgdGhhdCBJIHNldCBiZWZvcmUgeW91IGFuZCBiZWZvcmUgeW91ciBmYXRoZXJzLgpUaGVyZWZvcmUgdGh1cyBzYWl0aCB0aGUgTE9SRCBvZiBob3N0cywgdGhlIEdvZCBvZiBJc3JhZWw7IEJlaG9sZCwgSSB3aWxsIHNldCBteSBmYWNlIGFnYWluc3QgeW91IGZvciBldmlsLCBhbmQgdG8gY3V0IG9mZiBhbGwgSnVkYWguCkFuZCBJIHdpbGwgdGFrZSB0aGUgcmVtbmFudCBvZiBKdWRhaCwgdGhhdCBoYXZlIHNldCB0aGVpciBmYWNlcyB0byBnbyBpbnRvIHRoZSBsYW5kIG9mIEVneXB0IHRvIHNvam91cm4gdGhlcmUsIGFuZCB0aGV5IHNoYWxsIGFsbCBiZSBjb25zdW1lZCwgYW5kIGZhbGwgaW4gdGhlIGxhbmQgb2YgRWd5cHQ7IHRoZXkgc2hhbGwgZXZlbiBiZSBjb25zdW1lZCBieSB0aGUgc3dvcmQgYW5kIGJ5IHRoZSBmYW1pbmU6IHRoZXkgc2hhbGwgZGllLCBmcm9tIHRoZSBsZWFzdCBldmVuIHVudG8gdGhlIGdyZWF0ZXN0LCBieSB0aGUgc3dvcmQgYW5kIGJ5IHRoZSBmYW1pbmU6IGFuZCB0aGV5IHNoYWxsIGJlIGFuIGV4ZWNyYXRpb24sIGFuZCBhbiBhc3RvbmlzaG1lbnQsIGFuZCBhIGN1cnNlLCBhbmQgYSByZXByb2FjaC4KRm9yIEkgd2lsbCBwdW5pc2ggdGhlbSB0aGF0IGR3ZWxsIGluIHRoZSBsYW5kIG9mIEVneXB0LCBhcyBJIGhhdmUgcHVuaXNoZWQgSmVydXNhbGVtLCBieSB0aGUgc3dvcmQsIGJ5IHRoZSBmYW1pbmUsIGFuZCBieSB0aGUgcGVzdGlsZW5jZToKU28gdGhhdCBub25lIG9mIHRoZSByZW1uYW50IG9mIEp1ZGFoLCB3aGljaCBhcmUgZ29uZSBpbnRvIHRoZSBsYW5kIG9mIEVneXB0IHRvIHNvam91cm4gdGhlcmUsIHNoYWxsIGVzY2FwZSBvciByZW1haW4sIHRoYXQgdGhleSBzaG91bGQgcmV0dXJuIGludG8gdGhlIGxhbmQgb2YgSnVkYWgsIHRvIHRoZSB3aGljaCB0aGV5IGhhdmUgYSBkZXNpcmUgdG8gcmV0dXJuIHRvIGR3ZWxsIHRoZXJlOiBmb3Igbm9uZSBzaGFsbCByZXR1cm4gYnV0IHN1Y2ggYXMgc2hhbGwgZXNjYXBlLgpUaGVuIGFsbCB0aGUgbWVuIHdoaWNoIGtuZXcgdGhhdCB0aGVpciB3aXZlcyBoYWQgYnVybmVkIGluY2Vuc2UgdW50byBvdGhlciBnb2RzLCBhbmQgYWxsIHRoZSB3b21lbiB0aGF0IHN0b29kIGJ5LCBhIGdyZWF0IG11bHRpdHVkZSwgZXZlbiBhbGwgdGhlIHBlb3BsZSB0aGF0IGR3ZWx0IGluIHRoZSBsYW5kIG9mIEVneXB0LCBpbiBQYXRocm9zLCBhbnN3ZXJlZCBKZXJlbWlhaCwgc2F5aW5nLApBcyBmb3IgdGhlIHdvcmQgdGhhdCB0aG91IGhhc3Qgc3Bva2VuIHVudG8gdXMgaW4gdGhlIG5hbWUgb2YgdGhlIExPUkQsIHdlIHdpbGwgbm90IGhlYXJrZW4gdW50byB0aGVlLgpCdXQgd2Ugd2lsbCBjZXJ0YWlubHkgZG8gd2hhdHNvZXZlciB0aGluZyBnb2V0aCBmb3J0aCBvdXQgb2Ygb3VyIG93biBtb3V0aCwgdG8gYnVybiBpbmNlbnNlIHVudG8gdGhlIHF1ZWVuIG9mIGhlYXZlbiwgYW5kIHRvIHBvdXIgb3V0IGRyaW5rIG9mZmVyaW5ncyB1bnRvIGhlciwgYXMgd2UgaGF2ZSBkb25lLCB3ZSwgYW5kIG91ciBmYXRoZXJzLCBvdXIga2luZ3MsIGFuZCBvdXIgcHJpbmNlcywgaW4gdGhlIGNpdGllcyBvZiBKdWRhaCwgYW5kIGluIHRoZSBzdHJlZXRzIG9mIEplcnVzYWxlbTogZm9yIHRoZW4gaGFkIHdlIHBsZW50eSBvZiB2aWN0dWFscywgYW5kIHdlcmUgd2VsbCwgYW5kIHNhdyBubyBldmlsLgpCdXQgc2luY2Ugd2UgbGVmdCBvZmYgdG8gYnVybiBpbmNlbnNlIHRvIHRoZSBxdWVlbiBvZiBoZWF2ZW4sIGFuZCB0byBwb3VyIG91dCBkcmluayBvZmZlcmluZ3MgdW50byBoZXIsIHdlIGhhdmUgd2FudGVkIGFsbCB0aGluZ3MsIGFuZCBoYXZlIGJlZW4gY29uc3VtZWQgYnkgdGhlIHN3b3JkIGFuZCBieSB0aGUgZmFtaW5lLgpBbmQgd2hlbiB3ZSBidXJuZWQgaW5jZW5zZSB0byB0aGUgcXVlZW4gb2YgaGVhdmVuLCBhbmQgcG91cmVkIG91dCBkcmluayBvZmZlcmluZ3MgdW50byBoZXIsIGRpZCB3ZSBtYWtlIGhlciBjYWtlcyB0byB3b3JzaGlwIGhlciwgYW5kIHBvdXIgb3V0IGRyaW5rIG9mZmVyaW5ncyB1bnRvIGhlciwgd2l0aG91dCBvdXIgbWVuPwpUaGVuIEplcmVtaWFoIHNhaWQgdW50byBhbGwgdGhlIHBlb3BsZSwgdG8gdGhlIG1lbiwgYW5kIHRvIHRoZSB3b21lbiwgYW5kIHRvIGFsbCB0aGUgcGVvcGxlIHdoaWNoIGhhZCBnaXZlbiBoaW0gdGhhdCBhbnN3ZXIsIHNheWluZywKVGhlIGluY2Vuc2UgdGhhdCB5ZSBidXJuZWQgaW4gdGhlIGNpdGllcyBvZiBKdWRhaCwgYW5kIGluIHRoZSBzdHJlZXRzIG9mIEplcnVzYWxlbSwgeWUsIGFuZCB5b3VyIGZhdGhlcnMsIHlvdXIga2luZ3MsIGFuZCB5b3VyIHByaW5jZXMsIGFuZCB0aGUgcGVvcGxlIG9mIHRoZSBsYW5kLCBkaWQgbm90IHRoZSBMT1JEIHJlbWVtYmVyIHRoZW0sIGFuZCBjYW1lIGl0IG5vdCBpbnRvIGhpcyBtaW5kPwpTbyB0aGF0IHRoZSBMT1JEIGNvdWxkIG5vIGxvbmdlciBiZWFyLCBiZWNhdXNlIG9mIHRoZSBldmlsIG9mIHlvdXIgZG9pbmdzLCBhbmQgYmVjYXVzZSBvZiB0aGUgYWJvbWluYXRpb25zIHdoaWNoIHllIGhhdmUgY29tbWl0dGVkOyB0aGVyZWZvcmUgaXMgeW91ciBsYW5kIGEgZGVzb2xhdGlvbiwgYW5kIGFuIGFzdG9uaXNobWVudCwgYW5kIGEgY3Vyc2UsIHdpdGhvdXQgYW4gaW5oYWJpdGFudCwgYXMgYXQgdGhpcyBkYXkuCkJlY2F1c2UgeWUgaGF2ZSBidXJuZWQgaW5jZW5zZSwgYW5kIGJlY2F1c2UgeWUgaGF2ZSBzaW5uZWQgYWdhaW5zdCB0aGUgTE9SRCwgYW5kIGhhdmUgbm90IG9iZXllZCB0aGUgdm9pY2Ugb2YgdGhlIExPUkQsIG5vciB3YWxrZWQgaW4gaGlzIGxhdywgbm9yIGluIGhpcyBzdGF0dXRlcywgbm9yIGluIGhpcyB0ZXN0aW1vbmllczsgdGhlcmVmb3JlIHRoaXMgZXZpbCBpcyBoYXBwZW5lZCB1bnRvIHlvdSwgYXMgYXQgdGhpcyBkYXkuCk1vcmVvdmVyIEplcmVtaWFoIHNhaWQgdW50byBhbGwgdGhlIHBlb3BsZSwgYW5kIHRvIGFsbCB0aGUgd29tZW4sIEhlYXIgdGhlIHdvcmQgb2YgdGhlIExPUkQsIGFsbCBKdWRhaCB0aGF0IGFyZSBpbiB0aGUgbGFuZCBvZiBFZ3lwdDoKVGh1cyBzYWl0aCB0aGUgTE9SRCBvZiBob3N0cywgdGhlIEdvZCBvZiBJc3JhZWwsIHNheWluZzsgWWUgYW5kIHlvdXIgd2l2ZXMgaGF2ZSBib3RoIHNwb2tlbiB3aXRoIHlvdXIgbW91dGhzLCBhbmQgZnVsZmlsbGVkIHdpdGggeW91ciBoYW5kLCBzYXlpbmcsIFdlIHdpbGwgc3VyZWx5IHBlcmZvcm0gb3VyIHZvd3MgdGhhdCB3ZSBoYXZlIHZvd2VkLCB0byBidXJuIGluY2Vuc2UgdG8gdGhlIHF1ZWVuIG9mIGhlYXZlbiwgYW5kIHRvIHBvdXIgb3V0IGRyaW5rIG9mZmVyaW5ncyB1bnRvIGhlcjogeWUgd2lsbCBzdXJlbHkgYWNjb21wbGlzaCB5b3VyIHZvd3MsIGFuZCBzdXJlbHkgcGVyZm9ybSB5b3VyIHZvd3MuClRoZXJlZm9yZSBoZWFyIHllIHRoZSB3b3JkIG9mIHRoZSBMT1JELCBhbGwgSnVkYWggdGhhdCBkd2VsbCBpbiB0aGUgbGFuZCBvZiBFZ3lwdDsgQmVob2xkLCBJIGhhdmUgc3dvcm4gYnkgbXkgZ3JlYXQgbmFtZSwgc2FpdGggdGhlIExPUkQsIHRoYXQgbXkgbmFtZSBzaGFsbCBubyBtb3JlIGJlIG5hbWVkIGluIHRoZSBtb3V0aCBvZiBhbnkgbWFuIG9mIEp1ZGFoIGluIGFsbCB0aGUgbGFuZCBvZiBFZ3lwdCwgc2F5aW5nLCBUaGUgTG9yZCBHT0QgbGl2ZXRoLgpCZWhvbGQsIEkgd2lsbCB3YXRjaCBvdmVyIHRoZW0gZm9yIGV2aWwsIGFuZCBub3QgZm9yIGdvb2Q6IGFuZCBhbGwgdGhlIG1lbiBvZiBKdWRhaCB0aGF0IGFyZSBpbiB0aGUgbGFuZCBvZiBFZ3lwdCBzaGFsbCBiZSBjb25zdW1lZCBieSB0aGUgc3dvcmQgYW5kIGJ5IHRoZSBmYW1pbmUsIHVudGlsIHRoZXJlIGJlIGFuIGVuZCBvZiB0aGVtLgpZZXQgYSBzbWFsbCBudW1iZXIgdGhhdCBlc2NhcGUgdGhlIHN3b3JkIHNoYWxsIHJldHVybiBvdXQgb2YgdGhlIGxhbmQgb2YgRWd5cHQgaW50byB0aGUgbGFuZCBvZiBKdWRhaCwgYW5kIGFsbCB0aGUgcmVtbmFudCBvZiBKdWRhaCwgdGhhdCBhcmUgZ29uZSBpbnRvIHRoZSBsYW5kIG9mIEVneXB0IHRvIHNvam91cm4gdGhlcmUsIHNoYWxsIGtub3cgd2hvc2Ugd29yZHMgc2hhbGwgc3RhbmQsIG1pbmUsIG9yIHRoZWlyJ3MuCkFuZCB0aGlzIHNoYWxsIGJlIGEgc2lnbiB1bnRvIHlvdSwgc2FpdGggdGhlIExPUkQsIHRoYXQgSSB3aWxsIHB1bmlzaCB5b3UgaW4gdGhpcyBwbGFjZSwgdGhhdCB5ZSBtYXkga25vdyB0aGF0IG15IHdvcmRzIHNoYWxsIHN1cmVseSBzdGFuZCBhZ2FpbnN0IHlvdSBmb3IgZXZpbDoKVGh1cyBzYWl0aCB0aGUgTE9SRDsgQmVob2xkLCBJIHdpbGwgZ2l2ZSBQaGFyYW9oaG9waHJhIGtpbmcgb2YgRWd5cHQgaW50byB0aGUgaGFuZCBvZiBoaXMgZW5lbWllcywgYW5kIGludG8gdGhlIGhhbmQgb2YgdGhlbSB0aGF0IHNlZWsgaGlzIGxpZmU7IGFzIEkgZ2F2ZSBaZWRla2lhaCBraW5nIG9mIEp1ZGFoIGludG8gdGhlIGhhbmQgb2YgTmVidWNoYWRyZXp6YXIga2luZyBvZiBCYWJ5bG9uLCBoaXMgZW5lbXksIGFuZCB0aGF0IHNvdWdodCBoaXMgbGlmZS4KVGhlIHdvcmQgdGhhdCBKZXJlbWlhaCB0aGUgcHJvcGhldCBzcGFrZSB1bnRvIEJhcnVjaCB0aGUgc29uIG9mIE5lcmlhaCwgd2hlbiBoZSBoYWQgd3JpdHRlbiB0aGVzZSB3b3JkcyBpbiBhIGJvb2sgYXQgdGhlIG1vdXRoIG9mIEplcmVtaWFoLCBpbiB0aGUgZm91cnRoIHllYXIgb2YgSmVob2lha2ltIHRoZSBzb24gb2YgSm9zaWFoIGtpbmcgb2YgSnVkYWgsIHNheWluZywKVGh1cyBzYWl0aCB0aGUgTE9SRCwgdGhlIEdvZCBvZiBJc3JhZWwsIHVudG8gdGhlZSwgTyBCYXJ1Y2g6ClRob3UgZGlkc3Qgc2F5LCBXb2UgaXMgbWUgbm93ISBmb3IgdGhlIExPUkQgaGF0aCBhZGRlZCBncmllZiB0byBteSBzb3Jyb3c7IEkgZmFpbnRlZCBpbiBteSBzaWdoaW5nLCBhbmQgSSBmaW5kIG5vIHJlc3QuClRodXMgc2hhbHQgdGhvdSBzYXkgdW50byBoaW0sIFRoZSBMT1JEIHNhaXRoIHRodXM7IEJlaG9sZCwgdGhhdCB3aGljaCBJIGhhdmUgYnVpbHQgd2lsbCBJIGJyZWFrIGRvd24sIGFuZCB0aGF0IHdoaWNoIEkgaGF2ZSBwbGFudGVkIEkgd2lsbCBwbHVjayB1cCwgZXZlbiB0aGlzIHdob2xlIGxhbmQuCkFuZCBzZWVrZXN0IHRob3UgZ3JlYXQgdGhpbmdzIGZvciB0aHlzZWxmPyBzZWVrIHRoZW0gbm90OiBmb3IsIGJlaG9sZCwgSSB3aWxsIGJyaW5nIGV2aWwgdXBvbiBhbGwgZmxlc2gsIHNhaXRoIHRoZSBMT1JEOiBidXQgdGh5IGxpZmUgd2lsbCBJIGdpdmUgdW50byB0aGVlIGZvciBhIHByZXkgaW4gYWxsIHBsYWNlcyB3aGl0aGVyIHRob3UgZ29lc3QuClRoZSB3b3JkIG9mIHRoZSBMT1JEIHdoaWNoIGNhbWUgdG8gSmVyZW1pYWggdGhlIHByb3BoZXQgYWdhaW5zdCB0aGUgR2VudGlsZXM7CkFnYWluc3QgRWd5cHQsIGFnYWluc3QgdGhlIGFybXkgb2YgUGhhcmFvaG5lY2hvIGtpbmcgb2YgRWd5cHQsIHdoaWNoIHdhcyBieSB0aGUgcml2ZXIgRXVwaHJhdGVzIGluIENhcmNoZW1pc2gsIHdoaWNoIE5lYnVjaGFkcmV6emFyIGtpbmcgb2YgQmFieWxvbiBzbW90ZSBpbiB0aGUgZm91cnRoIHllYXIgb2YgSmVob2lha2ltIHRoZSBzb24gb2YgSm9zaWFoIGtpbmcgb2YgSnVkYWguCk9yZGVyIHllIHRoZSBidWNrbGVyIGFuZCBzaGllbGQsIGFuZCBkcmF3IG5lYXIgdG8gYmF0dGxlLgpIYXJuZXNzIHRoZSBob3JzZXM7IGFuZCBnZXQgdXAsIHllIGhvcnNlbWVuLCBhbmQgc3RhbmQgZm9ydGggd2l0aCB5b3VyIGhlbG1ldHM7IGZ1cmJpc2ggdGhlIHNwZWFycywgYW5kIHB1dCBvbiB0aGUgYnJpZ2FuZGluZXMuCldoZXJlZm9yZSBoYXZlIEkgc2VlbiB0aGVtIGRpc21heWVkIGFuZCB0dXJuZWQgYXdheSBiYWNrPyBhbmQgdGhlaXIgbWlnaHR5IG9uZXMgYXJlIGJlYXRlbiBkb3duLCBhbmQgYXJlIGZsZWQgYXBhY2UsIGFuZCBsb29rIG5vdCBiYWNrOiBmb3IgZmVhciB3YXMgcm91bmQgYWJvdXQsIHNhaXRoIHRoZSBMT1JELgpMZXQgbm90IHRoZSBzd2lmdCBmbGVlIGF3YXksIG5vciB0aGUgbWlnaHR5IG1hbiBlc2NhcGU7IHRoZXkgc2hhbGwgc3R1bWJsZSwgYW5kIGZhbGwgdG93YXJkIHRoZSBub3J0aCBieSB0aGUgcml2ZXIgRXVwaHJhdGVzLgpXaG8gaXMgdGhpcyB0aGF0IGNvbWV0aCB1cCBhcyBhIGZsb29kLCB3aG9zZSB3YXRlcnMgYXJlIG1vdmVkIGFzIHRoZSByaXZlcnM/CkVneXB0IHJpc2V0aCB1cCBsaWtlIGEgZmxvb2QsIGFuZCBoaXMgd2F0ZXJzIGFyZSBtb3ZlZCBsaWtlIHRoZSByaXZlcnM7IGFuZCBoZSBzYWl0aCwgSSB3aWxsIGdvIHVwLCBhbmQgd2lsbCBjb3ZlciB0aGUgZWFydGg7IEkgd2lsbCBkZXN0cm95IHRoZSBjaXR5IGFuZCB0aGUgaW5oYWJpdGFudHMgdGhlcmVvZi4KQ29tZSB1cCwgeWUgaG9yc2VzOyBhbmQgcmFnZSwgeWUgY2hhcmlvdHM7IGFuZCBsZXQgdGhlIG1pZ2h0eSBtZW4gY29tZSBmb3J0aDsgdGhlIEV0aGlvcGlhbnMgYW5kIHRoZSBMaWJ5YW5zLCB0aGF0IGhhbmRsZSB0aGUgc2hpZWxkOyBhbmQgdGhlIEx5ZGlhbnMsIHRoYXQgaGFuZGxlIGFuZCBiZW5kIHRoZSBib3cuCkZvciB0aGlzIGlzIHRoZSBkYXkgb2YgdGhlIExvcmQgR09EIG9mIGhvc3RzLCBhIGRheSBvZiB2ZW5nZWFuY2UsIHRoYXQgaGUgbWF5IGF2ZW5nZSBoaW0gb2YgaGlzIGFkdmVyc2FyaWVzOiBhbmQgdGhlIHN3b3JkIHNoYWxsIGRldm91ciwgYW5kIGl0IHNoYWxsIGJlIHNhdGlhdGUgYW5kIG1hZGUgZHJ1bmsgd2l0aCB0aGVpciBibG9vZDogZm9yIHRoZSBMb3JkIEdPRCBvZiBob3N0cyBoYXRoIGEgc2FjcmlmaWNlIGluIHRoZSBub3J0aCBjb3VudHJ5IGJ5IHRoZSByaXZlciBFdXBocmF0ZXMuCkdvIHVwIGludG8gR2lsZWFkLCBhbmQgdGFrZSBiYWxtLCBPIHZpcmdpbiwgdGhlIGRhdWdodGVyIG9mIEVneXB0OiBpbiB2YWluIHNoYWx0IHRob3UgdXNlIG1hbnkgbWVkaWNpbmVzOyBmb3IgdGhvdSBzaGFsdCBub3QgYmUgY3VyZWQuClRoZSBuYXRpb25zIGhhdmUgaGVhcmQgb2YgdGh5IHNoYW1lLCBhbmQgdGh5IGNyeSBoYXRoIGZpbGxlZCB0aGUgbGFuZDogZm9yIHRoZSBtaWdodHkgbWFuIGhhdGggc3R1bWJsZWQgYWdhaW5zdCB0aGUgbWlnaHR5LCBhbmQgdGhleSBhcmUgZmFsbGVuIGJvdGggdG9nZXRoZXIuClRoZSB3b3JkIHRoYXQgdGhlIExPUkQgc3Bha2UgdG8gSmVyZW1pYWggdGhlIHByb3BoZXQsIGhvdyBOZWJ1Y2hhZHJlenphciBraW5nIG9mIEJhYnlsb24gc2hvdWxkIGNvbWUgYW5kIHNtaXRlIHRoZSBsYW5kIG9mIEVneXB0LgpEZWNsYXJlIHllIGluIEVneXB0LCBhbmQgcHVibGlzaCBpbiBNaWdkb2wsIGFuZCBwdWJsaXNoIGluIE5vcGggYW5kIGluIFRhaHBhbmhlczogc2F5IHllLCBTdGFuZCBmYXN0LCBhbmQgcHJlcGFyZSB0aGVlOyBmb3IgdGhlIHN3b3JkIHNoYWxsIGRldm91ciByb3VuZCBhYm91dCB0aGVlLgpXaHkgYXJlIHRoeSB2YWxpYW50IG1lbiBzd2VwdCBhd2F5PyB0aGV5IHN0b29kIG5vdCwgYmVjYXVzZSB0aGUgTE9SRCBkaWQgZHJpdmUgdGhlbS4KSGUgbWFkZSBtYW55IHRvIGZhbGwsIHllYSwgb25lIGZlbGwgdXBvbiBhbm90aGVyOiBhbmQgdGhleSBzYWlkLCBBcmlzZSwgYW5kIGxldCB1cyBnbyBhZ2FpbiB0byBvdXIgb3duIHBlb3BsZSwgYW5kIHRvIHRoZSBsYW5kIG9mIG91ciBuYXRpdml0eSwgZnJvbSB0aGUgb3BwcmVzc2luZyBzd29yZC4KVGhleSBkaWQgY3J5IHRoZXJlLCBQaGFyYW9oIGtpbmcgb2YgRWd5cHQgaXMgYnV0IGEgbm9pc2U7IGhlIGhhdGggcGFzc2VkIHRoZSB0aW1lIGFwcG9pbnRlZC4KQXMgSSBsaXZlLCBzYWl0aCB0aGUgS2luZywgd2hvc2UgbmFtZSBpcyB0aGUgTE9SRCBvZiBob3N0cywgU3VyZWx5IGFzIFRhYm9yIGlzIGFtb25nIHRoZSBtb3VudGFpbnMsIGFuZCBhcyBDYXJtZWwgYnkgdGhlIHNlYSwgc28gc2hhbGwgaGUgY29tZS4KTyB0aG91IGRhdWdodGVyIGR3ZWxsaW5nIGluIEVneXB0LCBmdXJuaXNoIHRoeXNlbGYgdG8gZ28gaW50byBjYXB0aXZpdHk6IGZvciBOb3BoIHNoYWxsIGJlIHdhc3RlIGFuZCBkZXNvbGF0ZSB3aXRob3V0IGFuIGluaGFiaXRhbnQuCkVneXB0IGlzIGxpa2UgYSB2ZXJ5IGZhaXIgaGVpZmVyLCBidXQgZGVzdHJ1Y3Rpb24gY29tZXRoOyBpdCBjb21ldGggb3V0IG9mIHRoZSBub3J0aC4KQWxzbyBoZXIgaGlyZWQgbWVuIGFyZSBpbiB0aGUgbWlkc3Qgb2YgaGVyIGxpa2UgZmF0dGVkIGJ1bGxvY2tzOyBmb3IgdGhleSBhbHNvIGFyZSB0dXJuZWQgYmFjaywgYW5kIGFyZSBmbGVkIGF3YXkgdG9nZXRoZXI6IHRoZXkgZGlkIG5vdCBzdGFuZCwgYmVjYXVzZSB0aGUgZGF5IG9mIHRoZWlyIGNhbGFtaXR5IHdhcyBjb21lIHVwb24gdGhlbSwgYW5kIHRoZSB0aW1lIG9mIHRoZWlyIHZpc2l0YXRpb24uClRoZSB2b2ljZSB0aGVyZW9mIHNoYWxsIGdvIGxpa2UgYSBzZXJwZW50OyBmb3IgdGhleSBzaGFsbCBtYXJjaCB3aXRoIGFuIGFybXksIGFuZCBjb21lIGFnYWluc3QgaGVyIHdpdGggYXhlcywgYXMgaGV3ZXJzIG9mIHdvb2QuClRoZXkgc2hhbGwgY3V0IGRvd24gaGVyIGZvcmVzdCwgc2FpdGggdGhlIExPUkQsIHRob3VnaCBpdCBjYW5ub3QgYmUgc2VhcmNoZWQ7IGJlY2F1c2UgdGhleSBhcmUgbW9yZSB0aGFuIHRoZSBncmFzc2hvcHBlcnMsIGFuZCBhcmUgaW5udW1lcmFibGUuClRoZSBkYXVnaHRlciBvZiBFZ3lwdCBzaGFsbCBiZSBjb25mb3VuZGVkOyBzaGUgc2hhbGwgYmUgZGVsaXZlcmVkIGludG8gdGhlIGhhbmQgb2YgdGhlIHBlb3BsZSBvZiB0aGUgbm9ydGguClRoZSBMT1JEIG9mIGhvc3RzLCB0aGUgR29kIG9mIElzcmFlbCwgc2FpdGg7IEJlaG9sZCwgSSB3aWxsIHB1bmlzaCB0aGUgbXVsdGl0dWRlIG9mIE5vLCBhbmQgUGhhcmFvaCwgYW5kIEVneXB0LCB3aXRoIHRoZWlyIGdvZHMsIGFuZCB0aGVpciBraW5nczsgZXZlbiBQaGFyYW9oLCBhbmQgYWxsIHRoZW0gdGhhdCB0cnVzdCBpbiBoaW06CkFuZCBJIHdpbGwgZGVsaXZlciB0aGVtIGludG8gdGhlIGhhbmQgb2YgdGhvc2UgdGhhdCBzZWVrIHRoZWlyIGxpdmVzLCBhbmQgaW50byB0aGUgaGFuZCBvZiBOZWJ1Y2hhZHJlenphciBraW5nIG9mIEJhYnlsb24sIGFuZCBpbnRvIHRoZSBoYW5kIG9mIGhpcyBzZXJ2YW50czogYW5kIGFmdGVyd2FyZCBpdCBzaGFsbCBiZSBpbmhhYml0ZWQsIGFzIGluIHRoZSBkYXlzIG9mIG9sZCwgc2FpdGggdGhlIExPUkQuCkJ1dCBmZWFyIG5vdCB0aG91LCBPIG15IHNlcnZhbnQgSmFjb2IsIGFuZCBiZSBub3QgZGlzbWF5ZWQsIE8gSXNyYWVsOiBmb3IsIGJlaG9sZCwgSSB3aWxsIHNhdmUgdGhlZSBmcm9tIGFmYXIgb2ZmLCBhbmQgdGh5IHNlZWQgZnJvbSB0aGUgbGFuZCBvZiB0aGVpciBjYXB0aXZpdHk7IGFuZCBKYWNvYiBzaGFsbCByZXR1cm4sIGFuZCBiZSBpbiByZXN0IGFuZCBhdCBlYXNlLCBhbmQgbm9uZSBzaGFsbCBtYWtlIGhpbSBhZnJhaWQuCkZlYXIgdGhvdSBub3QsIE8gSmFjb2IgbXkgc2VydmFudCwgc2FpdGggdGhlIExPUkQ6IGZvciBJIGFtIHdpdGggdGhlZTsgZm9yIEkgd2lsbCBtYWtlIGEgZnVsbCBlbmQgb2YgYWxsIHRoZSBuYXRpb25zIHdoaXRoZXIgSSBoYXZlIGRyaXZlbiB0aGVlOiBidXQgSSB3aWxsIG5vdCBtYWtlIGEgZnVsbCBlbmQgb2YgdGhlZSwgYnV0IGNvcnJlY3QgdGhlZSBpbiBtZWFzdXJlOyB5ZXQgd2lsbCBJIG5vdCBsZWF2ZSB0aGVlIHdob2xseSB1bnB1bmlzaGVkLgpUaGUgd29yZCBvZiB0aGUgTE9SRCB0aGF0IGNhbWUgdG8gSmVyZW1pYWggdGhlIHByb3BoZXQgYWdhaW5zdCB0aGUgUGhpbGlzdGluZXMsIGJlZm9yZSB0aGF0IFBoYXJhb2ggc21vdGUgR2F6YS4KVGh1cyBzYWl0aCB0aGUgTE9SRDsgQmVob2xkLCB3YXRlcnMgcmlzZSB1cCBvdXQgb2YgdGhlIG5vcnRoLCBhbmQgc2hhbGwgYmUgYW4gb3ZlcmZsb3dpbmcgZmxvb2QsIGFuZCBzaGFsbCBvdmVyZmxvdyB0aGUgbGFuZCwgYW5kIGFsbCB0aGF0IGlzIHRoZXJlaW47IHRoZSBjaXR5LCBhbmQgdGhlbSB0aGF0IGR3ZWxsIHRoZXJlaW46IHRoZW4gdGhlIG1lbiBzaGFsbCBjcnksIGFuZCBhbGwgdGhlIGluaGFiaXRhbnRzIG9mIHRoZSBsYW5kIHNoYWxsIGhvd2wuCkF0IHRoZSBub2lzZSBvZiB0aGUgc3RhbXBpbmcgb2YgdGhlIGhvb2ZzIG9mIGhpcyBzdHJvbmcgaG9yc2VzLCBhdCB0aGUgcnVzaGluZyBvZiBoaXMgY2hhcmlvdHMsIGFuZCBhdCB0aGUgcnVtYmxpbmcgb2YgaGlzIHdoZWVscywgdGhlIGZhdGhlcnMgc2hhbGwgbm90IGxvb2sgYmFjayB0byB0aGVpciBjaGlsZHJlbiBmb3IgZmVlYmxlbmVzcyBvZiBoYW5kczsKQmVjYXVzZSBvZiB0aGUgZGF5IHRoYXQgY29tZXRoIHRvIHNwb2lsIGFsbCB0aGUgUGhpbGlzdGluZXMsIGFuZCB0byBjdXQgb2ZmIGZyb20gVHlydXMgYW5kIFppZG9uIGV2ZXJ5IGhlbHBlciB0aGF0IHJlbWFpbmV0aDogZm9yIHRoZSBMT1JEIHdpbGwgc3BvaWwgdGhlIFBoaWxpc3RpbmVzLCB0aGUgcmVtbmFudCBvZiB0aGUgY291bnRyeSBvZiBDYXBodG9yLgpCYWxkbmVzcyBpcyBjb21lIHVwb24gR2F6YTsgQXNoa2Vsb24gaXMgY3V0IG9mZiB3aXRoIHRoZSByZW1uYW50IG9mIHRoZWlyIHZhbGxleTogaG93IGxvbmcgd2lsdCB0aG91IGN1dCB0aHlzZWxmPwpPIHRob3Ugc3dvcmQgb2YgdGhlIExPUkQsIGhvdyBsb25nIHdpbGwgaXQgYmUgZXJlIHRob3UgYmUgcXVpZXQ/IHB1dCB1cCB0aHlzZWxmIGludG8gdGh5IHNjYWJiYXJkLCByZXN0LCBhbmQgYmUgc3RpbGwuCkhvdyBjYW4gaXQgYmUgcXVpZXQsIHNlZWluZyB0aGUgTE9SRCBoYXRoIGdpdmVuIGl0IGEgY2hhcmdlIGFnYWluc3QgQXNoa2Vsb24sIGFuZCBhZ2FpbnN0IHRoZSBzZWEgc2hvcmU/IHRoZXJlIGhhdGggaGUgYXBwb2ludGVkIGl0LgpBZ2FpbnN0IE1vYWIgdGh1cyBzYWl0aCB0aGUgTE9SRCBvZiBob3N0cywgdGhlIEdvZCBvZiBJc3JhZWw7IFdvZSB1bnRvIE5lYm8hIGZvciBpdCBpcyBzcG9pbGVkOiBLaXJpYXRoYWltIGlzIGNvbmZvdW5kZWQgYW5kIHRha2VuOiBNaXNnYWIgaXMgY29uZm91bmRlZCBhbmQgZGlzbWF5ZWQuClRoZXJlIHNoYWxsIGJlIG5vIG1vcmUgcHJhaXNlIG9mIE1vYWI6IGluIEhlc2hib24gdGhleSBoYXZlIGRldmlzZWQgZXZpbCBhZ2FpbnN0IGl0OyBjb21lLCBhbmQgbGV0IHVzIGN1dCBpdCBvZmYgZnJvbSBiZWluZyBhIG5hdGlvbi4gQWxzbyB0aG91IHNoYWx0IGJlIGN1dCBkb3duLCBPIE1hZG1lbjsgdGhlIHN3b3JkIHNoYWxsIHB1cnN1ZSB0aGVlLgpBIHZvaWNlIG9mIGNyeWluZyBzaGFsbCBiZSBmcm9tIEhvcm9uYWltLCBzcG9pbGluZyBhbmQgZ3JlYXQgZGVzdHJ1Y3Rpb24uCk1vYWIgaXMgZGVzdHJveWVkOyBoZXIgbGl0dGxlIG9uZXMgaGF2ZSBjYXVzZWQgYSBjcnkgdG8gYmUgaGVhcmQuCkZvciBpbiB0aGUgZ29pbmcgdXAgb2YgTHVoaXRoIGNvbnRpbnVhbCB3ZWVwaW5nIHNoYWxsIGdvIHVwOyBmb3IgaW4gdGhlIGdvaW5nIGRvd24gb2YgSG9yb25haW0gdGhlIGVuZW1pZXMgaGF2ZSBoZWFyZCBhIGNyeSBvZiBkZXN0cnVjdGlvbi4KRmxlZSwgc2F2ZSB5b3VyIGxpdmVzLCBhbmQgYmUgbGlrZSB0aGUgaGVhdGggaW4gdGhlIHdpbGRlcm5lc3MuCkZvciBiZWNhdXNlIHRob3UgaGFzdCB0cnVzdGVkIGluIHRoeSB3b3JrcyBhbmQgaW4gdGh5IHRyZWFzdXJlcywgdGhvdSBzaGFsdCBhbHNvIGJlIHRha2VuOiBhbmQgQ2hlbW9zaCBzaGFsbCBnbyBmb3J0aCBpbnRvIGNhcHRpdml0eSB3aXRoIGhpcyBwcmllc3RzIGFuZCBoaXMgcHJpbmNlcyB0b2dldGhlci4KQW5kIHRoZSBzcG9pbGVyIHNoYWxsIGNvbWUgdXBvbiBldmVyeSBjaXR5LCBhbmQgbm8gY2l0eSBzaGFsbCBlc2NhcGU6IHRoZSB2YWxsZXkgYWxzbyBzaGFsbCBwZXJpc2gsIGFuZCB0aGUgcGxhaW4gc2hhbGwgYmUgZGVzdHJveWVkLCBhcyB0aGUgTE9SRCBoYXRoIHNwb2tlbi4KR2l2ZSB3aW5ncyB1bnRvIE1vYWIsIHRoYXQgaXQgbWF5IGZsZWUgYW5kIGdldCBhd2F5OiBmb3IgdGhlIGNpdGllcyB0aGVyZW9mIHNoYWxsIGJlIGRlc29sYXRlLCB3aXRob3V0IGFueSB0byBkd2VsbCB0aGVyZWluLgpDdXJzZWQgYmUgaGUgdGhhdCBkb2V0aCB0aGUgd29yayBvZiB0aGUgTE9SRCBkZWNlaXRmdWxseSwgYW5kIGN1cnNlZCBiZSBoZSB0aGF0IGtlZXBldGggYmFjayBoaXMgc3dvcmQgZnJvbSBibG9vZC4KTW9hYiBoYXRoIGJlZW4gYXQgZWFzZSBmcm9tIGhpcyB5b3V0aCwgYW5kIGhlIGhhdGggc2V0dGxlZCBvbiBoaXMgbGVlcywgYW5kIGhhdGggbm90IGJlZW4gZW1wdGllZCBmcm9tIHZlc3NlbCB0byB2ZXNzZWwsIG5laXRoZXIgaGF0aCBoZSBnb25lIGludG8gY2FwdGl2aXR5OiB0aGVyZWZvcmUgaGlzIHRhc3RlIHJlbWFpbmVkIGluIGhpbSwgYW5kIGhpcyBzY2VudCBpcyBub3QgY2hhbmdlZC4KVGhlcmVmb3JlLCBiZWhvbGQsIHRoZSBkYXlzIGNvbWUsIHNhaXRoIHRoZSBMT1JELCB0aGF0IEkgd2lsbCBzZW5kIHVudG8gaGltIHdhbmRlcmVycywgdGhhdCBzaGFsbCBjYXVzZSBoaW0gdG8gd2FuZGVyLCBhbmQgc2hhbGwgZW1wdHkgaGlzIHZlc3NlbHMsIGFuZCBicmVhayB0aGVpciBib3R0bGVzLgpBbmQgTW9hYiBzaGFsbCBiZSBhc2hhbWVkIG9mIENoZW1vc2gsIGFzIHRoZSBob3VzZSBvZiBJc3JhZWwgd2FzIGFzaGFtZWQgb2YgQmV0aGVsIHRoZWlyIGNvbmZpZGVuY2UuCkhvdyBzYXkgeWUsIFdlIGFyZSBtaWdodHkgYW5kIHN0cm9uZyBtZW4gZm9yIHRoZSB3YXI/Ck1vYWIgaXMgc3BvaWxlZCwgYW5kIGdvbmUgdXAgb3V0IG9mIGhlciBjaXRpZXMsIGFuZCBoaXMgY2hvc2VuIHlvdW5nIG1lbiBhcmUgZ29uZSBkb3duIHRvIHRoZSBzbGF1Z2h0ZXIsIHNhaXRoIHRoZSBLaW5nLCB3aG9zZSBuYW1lIGlzIHRoZSBMT1JEIG9mIGhvc3RzLgpUaGUgY2FsYW1pdHkgb2YgTW9hYiBpcyBuZWFyIHRvIGNvbWUsIGFuZCBoaXMgYWZmbGljdGlvbiBoYXN0ZXRoIGZhc3QuCkFsbCB5ZSB0aGF0IGFyZSBhYm91dCBoaW0sIGJlbW9hbiBoaW07IGFuZCBhbGwgeWUgdGhhdCBrbm93IGhpcyBuYW1lLCBzYXksIEhvdyBpcyB0aGUgc3Ryb25nIHN0YWZmIGJyb2tlbiwgYW5kIHRoZSBiZWF1dGlmdWwgcm9kIQpUaG91IGRhdWdodGVyIHRoYXQgZG9zdCBpbmhhYml0IERpYm9uLCBjb21lIGRvd24gZnJvbSB0aHkgZ2xvcnksIGFuZCBzaXQgaW4gdGhpcnN0OyBmb3IgdGhlIHNwb2lsZXIgb2YgTW9hYiBzaGFsbCBjb21lIHVwb24gdGhlZSwgYW5kIGhlIHNoYWxsIGRlc3Ryb3kgdGh5IHN0cm9uZyBob2xkcy4KTyBpbmhhYml0YW50IG9mIEFyb2VyLCBzdGFuZCBieSB0aGUgd2F5LCBhbmQgZXNweTsgYXNrIGhpbSB0aGF0IGZsZWV0aCwgYW5kIGhlciB0aGF0IGVzY2FwZXRoLCBhbmQgc2F5LCBXaGF0IGlzIGRvbmU/Ck1vYWIgaXMgY29uZm91bmRlZDsgZm9yIGl0IGlzIGJyb2tlbiBkb3duOiBob3dsIGFuZCBjcnk7IHRlbGwgeWUgaXQgaW4gQXJub24sIHRoYXQgTW9hYiBpcyBzcG9pbGVkLApBbmQganVkZ21lbnQgaXMgY29tZSB1cG9uIHRoZSBwbGFpbiBjb3VudHJ5OyB1cG9uIEhvbG9uLCBhbmQgdXBvbiBKYWhhemFoLCBhbmQgdXBvbiBNZXBoYWF0aCwKQW5kIHVwb24gRGlib24sIGFuZCB1cG9uIE5lYm8sIGFuZCB1cG9uIEJldGhkaWJsYXRoYWltLApBbmQgdXBvbiBLaXJpYXRoYWltLCBhbmQgdXBvbiBCZXRoZ2FtdWwsIGFuZCB1cG9uIEJldGhtZW9uLApBbmQgdXBvbiBLZXJpb3RoLCBhbmQgdXBvbiBCb3pyYWgsIGFuZCB1cG9uIGFsbCB0aGUgY2l0aWVzIG9mIHRoZSBsYW5kIG9mIE1vYWIsIGZhciBvciBuZWFyLgpUaGUgaG9ybiBvZiBNb2FiIGlzIGN1dCBvZmYsIGFuZCBoaXMgYXJtIGlzIGJyb2tlbiwgc2FpdGggdGhlIExPUkQuCk1ha2UgeWUgaGltIGRydW5rZW46IGZvciBoZSBtYWduaWZpZWQgaGltc2VsZiBhZ2FpbnN0IHRoZSBMT1JEOiBNb2FiIGFsc28gc2hhbGwgd2FsbG93IGluIGhpcyB2b21pdCwgYW5kIGhlIGFsc28gc2hhbGwgYmUgaW4gZGVyaXNpb24uCkZvciB3YXMgbm90IElzcmFlbCBhIGRlcmlzaW9uIHVudG8gdGhlZT8gd2FzIGhlIGZvdW5kIGFtb25nIHRoaWV2ZXM/IGZvciBzaW5jZSB0aG91IHNwYWtlc3Qgb2YgaGltLCB0aG91IHNraXBwZWRzdCBmb3Igam95LgpPIHllIHRoYXQgZHdlbGwgaW4gTW9hYiwgbGVhdmUgdGhlIGNpdGllcywgYW5kIGR3ZWxsIGluIHRoZSByb2NrLCBhbmQgYmUgbGlrZSB0aGUgZG92ZSB0aGF0IG1ha2V0aCBoZXIgbmVzdCBpbiB0aGUgc2lkZXMgb2YgdGhlIGhvbGUncyBtb3V0aC4KV2UgaGF2ZSBoZWFyZCB0aGUgcHJpZGUgb2YgTW9hYiwgKGhlIGlzIGV4Y2VlZGluZyBwcm91ZCkgaGlzIGxvZnRpbmVzcywgYW5kIGhpcyBhcnJvZ2FuY3ksIGFuZCBoaXMgcHJpZGUsIGFuZCB0aGUgaGF1Z2h0aW5lc3Mgb2YgaGlzIGhlYXJ0LgpJIGtub3cgaGlzIHdyYXRoLCBzYWl0aCB0aGUgTE9SRDsgYnV0IGl0IHNoYWxsIG5vdCBiZSBzbzsgaGlzIGxpZXMgc2hhbGwgbm90IHNvIGVmZmVjdCBpdC4KVGhlcmVmb3JlIHdpbGwgSSBob3dsIGZvciBNb2FiLCBhbmQgSSB3aWxsIGNyeSBvdXQgZm9yIGFsbCBNb2FiOyBtaW5lIGhlYXJ0IHNoYWxsIG1vdXJuIGZvciB0aGUgbWVuIG9mIEtpcmhlcmVzLgpPIHZpbmUgb2YgU2libWFoLCBJIHdpbGwgd2VlcCBmb3IgdGhlZSB3aXRoIHRoZSB3ZWVwaW5nIG9mIEphemVyOiB0aHkgcGxhbnRzIGFyZSBnb25lIG92ZXIgdGhlIHNlYSwgdGhleSByZWFjaCBldmVuIHRvIHRoZSBzZWEgb2YgSmF6ZXI6IHRoZSBzcG9pbGVyIGlzIGZhbGxlbiB1cG9uIHRoeSBzdW1tZXIgZnJ1aXRzIGFuZCB1cG9uIHRoeSB2aW50YWdlLgpBbmQgam95IGFuZCBnbGFkbmVzcyBpcyB0YWtlbiBmcm9tIHRoZSBwbGVudGlmdWwgZmllbGQsIGFuZCBmcm9tIHRoZSBsYW5kIG9mIE1vYWIsIGFuZCBJIGhhdmUgY2F1c2VkIHdpbmUgdG8gZmFpbCBmcm9tIHRoZSB3aW5lcHJlc3Nlczogbm9uZSBzaGFsbCB0cmVhZCB3aXRoIHNob3V0aW5nOyB0aGVpciBzaG91dGluZyBzaGFsbCBiZSBubyBzaG91dGluZy4KRnJvbSB0aGUgY3J5IG9mIEhlc2hib24gZXZlbiB1bnRvIEVsZWFsZWgsIGFuZCBldmVuIHVudG8gSmFoYXosIGhhdmUgdGhleSB1dHRlcmVkIHRoZWlyIHZvaWNlLCBmcm9tIFpvYXIgZXZlbiB1bnRvIEhvcm9uYWltLCBhcyBhbiBoZWlmZXIgb2YgdGhyZWUgeWVhcnMgb2xkOiBmb3IgdGhlIHdhdGVycyBhbHNvIG9mIE5pbXJpbSBzaGFsbCBiZSBkZXNvbGF0ZS4KTW9yZW92ZXIgSSB3aWxsIGNhdXNlIHRvIGNlYXNlIGluIE1vYWIsIHNhaXRoIHRoZSBMT1JELCBoaW0gdGhhdCBvZmZlcmV0aCBpbiB0aGUgaGlnaCBwbGFjZXMsIGFuZCBoaW0gdGhhdCBidXJuZXRoIGluY2Vuc2UgdG8gaGlzIGdvZHMuClRoZXJlZm9yZSBtaW5lIGhlYXJ0IHNoYWxsIHNvdW5kIGZvciBNb2FiIGxpa2UgcGlwZXMsIGFuZCBtaW5lIGhlYXJ0IHNoYWxsIHNvdW5kIGxpa2UgcGlwZXMgZm9yIHRoZSBtZW4gb2YgS2lyaGVyZXM6IGJlY2F1c2UgdGhlIHJpY2hlcyB0aGF0IGhlIGhhdGggZ290dGVuIGFyZSBwZXJpc2hlZC4KRm9yIGV2ZXJ5IGhlYWQgc2hhbGwgYmUgYmFsZCwgYW5kIGV2ZXJ5IGJlYXJkIGNsaXBwZWQ6IHVwb24gYWxsIHRoZSBoYW5kcyBzaGFsbCBiZSBjdXR0aW5ncywgYW5kIHVwb24gdGhlIGxvaW5zIHNhY2tjbG90aC4KVGhlcmUgc2hhbGwgYmUgbGFtZW50YXRpb24gZ2VuZXJhbGx5IHVwb24gYWxsIHRoZSBob3VzZXRvcHMgb2YgTW9hYiwgYW5kIGluIHRoZSBzdHJlZXRzIHRoZXJlb2Y6IGZvciBJIGhhdmUgYnJva2VuIE1vYWIgbGlrZSBhIHZlc3NlbCB3aGVyZWluIGlzIG5vIHBsZWFzdXJlLCBzYWl0aCB0aGUgTE9SRC4KVGhleSBzaGFsbCBob3dsLCBzYXlpbmcsIEhvdyBpcyBpdCBicm9rZW4gZG93biEgaG93IGhhdGggTW9hYiB0dXJuZWQgdGhlIGJhY2sgd2l0aCBzaGFtZSEgc28gc2hhbGwgTW9hYiBiZSBhIGRlcmlzaW9uIGFuZCBhIGRpc21heWluZyB0byBhbGwgdGhlbSBhYm91dCBoaW0uCkZvciB0aHVzIHNhaXRoIHRoZSBMT1JEOyBCZWhvbGQsIGhlIHNoYWxsIGZseSBhcyBhbiBlYWdsZSwgYW5kIHNoYWxsIHNwcmVhZCBoaXMgd2luZ3Mgb3ZlciBNb2FiLgpLZXJpb3RoIGlzIHRha2VuLCBhbmQgdGhlIHN0cm9uZyBob2xkcyBhcmUgc3VycHJpc2VkLCBhbmQgdGhlIG1pZ2h0eSBtZW4ncyBoZWFydHMgaW4gTW9hYiBhdCB0aGF0IGRheSBzaGFsbCBiZSBhcyB0aGUgaGVhcnQgb2YgYSB3b21hbiBpbiBoZXIgcGFuZ3MuCkFuZCBNb2FiIHNoYWxsIGJlIGRlc3Ryb3llZCBmcm9tIGJlaW5nIGEgcGVvcGxlLCBiZWNhdXNlIGhlIGhhdGggbWFnbmlmaWVkIGhpbXNlbGYgYWdhaW5zdCB0aGUgTE9SRC4KRmVhciwgYW5kIHRoZSBwaXQsIGFuZCB0aGUgc25hcmUsIHNoYWxsIGJlIHVwb24gdGhlZSwgTyBpbmhhYml0YW50IG9mIE1vYWIsIHNhaXRoIHRoZSBMT1JELgpIZSB0aGF0IGZsZWV0aCBmcm9tIHRoZSBmZWFyIHNoYWxsIGZhbGwgaW50byB0aGUgcGl0OyBhbmQgaGUgdGhhdCBnZXR0ZXRoIHVwIG91dCBvZiB0aGUgcGl0IHNoYWxsIGJlIHRha2VuIGluIHRoZSBzbmFyZTogZm9yIEkgd2lsbCBicmluZyB1cG9uIGl0LCBldmVuIHVwb24gTW9hYiwgdGhlIHllYXIgb2YgdGhlaXIgdmlzaXRhdGlvbiwgc2FpdGggdGhlIExPUkQuClRoZXkgdGhhdCBmbGVkIHN0b29kIHVuZGVyIHRoZSBzaGFkb3cgb2YgSGVzaGJvbiBiZWNhdXNlIG9mIHRoZSBmb3JjZTogYnV0IGEgZmlyZSBzaGFsbCBjb21lIGZvcnRoIG91dCBvZiBIZXNoYm9uLCBhbmQgYSBmbGFtZSBmcm9tIHRoZSBtaWRzdCBvZiBTaWhvbiwgYW5kIHNoYWxsIGRldm91ciB0aGUgY29ybmVyIG9mIE1vYWIsIGFuZCB0aGUgY3Jvd24gb2YgdGhlIGhlYWQgb2YgdGhlIHR1bXVsdHVvdXMgb25lcy4KV29lIGJlIHVudG8gdGhlZSwgTyBNb2FiISB0aGUgcGVvcGxlIG9mIENoZW1vc2ggcGVyaXNoZXRoOiBmb3IgdGh5IHNvbnMgYXJlIHRha2VuIGNhcHRpdmVzLCBhbmQgdGh5IGRhdWdodGVycyBjYXB0aXZlcy4KWWV0IHdpbGwgSSBicmluZyBhZ2FpbiB0aGUgY2FwdGl2aXR5IG9mIE1vYWIgaW4gdGhlIGxhdHRlciBkYXlzLCBzYWl0aCB0aGUgTE9SRC4gVGh1cyBmYXIgaXMgdGhlIGp1ZGdtZW50IG9mIE1vYWIuCkNvbmNlcm5pbmcgdGhlIEFtbW9uaXRlcywgdGh1cyBzYWl0aCB0aGUgTE9SRDsgSGF0aCBJc3JhZWwgbm8gc29ucz8gaGF0aCBoZSBubyBoZWlyPyB3aHkgdGhlbiBkb3RoIHRoZWlyIGtpbmcgaW5oZXJpdCBHYWQsIGFuZCBoaXMgcGVvcGxlIGR3ZWxsIGluIGhpcyBjaXRpZXM/ClRoZXJlZm9yZSwgYmVob2xkLCB0aGUgZGF5cyBjb21lLCBzYWl0aCB0aGUgTE9SRCwgdGhhdCBJIHdpbGwgY2F1c2UgYW4gYWxhcm0gb2Ygd2FyIHRvIGJlIGhlYXJkIGluIFJhYmJhaCBvZiB0aGUgQW1tb25pdGVzOyBhbmQgaXQgc2hhbGwgYmUgYSBkZXNvbGF0ZSBoZWFwLCBhbmQgaGVyIGRhdWdodGVycyBzaGFsbCBiZSBidXJuZWQgd2l0aCBmaXJlOiB0aGVuIHNoYWxsIElzcmFlbCBiZSBoZWlyIHVudG8gdGhlbSB0aGF0IHdlcmUgaGlzIGhlaXJzLCBzYWl0aCB0aGUgTE9SRC4KSG93bCwgTyBIZXNoYm9uLCBmb3IgQWkgaXMgc3BvaWxlZDogY3J5LCB5ZSBkYXVnaHRlcnMgb2YgUmFiYmFoLCBnaXJkIHlvdSB3aXRoIHNhY2tjbG90aDsgbGFtZW50LCBhbmQgcnVuIHRvIGFuZCBmcm8gYnkgdGhlIGhlZGdlczsgZm9yIHRoZWlyIGtpbmcgc2hhbGwgZ28gaW50byBjYXB0aXZpdHksIGFuZCBoaXMgcHJpZXN0cyBhbmQgaGlzIHByaW5jZXMgdG9nZXRoZXIuCldoZXJlZm9yZSBnbG9yaWVzdCB0aG91IGluIHRoZSB2YWxsZXlzLCB0aHkgZmxvd2luZyB2YWxsZXksIE8gYmFja3NsaWRpbmcgZGF1Z2h0ZXI/IHRoYXQgdHJ1c3RlZCBpbiBoZXIgdHJlYXN1cmVzLCBzYXlpbmcsIFdobyBzaGFsbCBjb21lIHVudG8gbWU/CkJlaG9sZCwgSSB3aWxsIGJyaW5nIGEgZmVhciB1cG9uIHRoZWUsIHNhaXRoIHRoZSBMb3JkIEdPRCBvZiBob3N0cywgZnJvbSBhbGwgdGhvc2UgdGhhdCBiZSBhYm91dCB0aGVlOyBhbmQgeWUgc2hhbGwgYmUgZHJpdmVuIG91dCBldmVyeSBtYW4gcmlnaHQgZm9ydGg7IGFuZCBub25lIHNoYWxsIGdhdGhlciB1cCBoaW0gdGhhdCB3YW5kZXJldGguCkFuZCBhZnRlcndhcmQgSSB3aWxsIGJyaW5nIGFnYWluIHRoZSBjYXB0aXZpdHkgb2YgdGhlIGNoaWxkcmVuIG9mIEFtbW9uLCBzYWl0aCB0aGUgTE9SRC4KQ29uY2VybmluZyBFZG9tLCB0aHVzIHNhaXRoIHRoZSBMT1JEIG9mIGhvc3RzOyBJcyB3aXNkb20gbm8gbW9yZSBpbiBUZW1hbj8gaXMgY291bnNlbCBwZXJpc2hlZCBmcm9tIHRoZSBwcnVkZW50PyBpcyB0aGVpciB3aXNkb20gdmFuaXNoZWQ/CkZsZWUgeWUsIHR1cm4gYmFjaywgZHdlbGwgZGVlcCwgTyBpbmhhYml0YW50cyBvZiBEZWRhbjsgZm9yIEkgd2lsbCBicmluZyB0aGUgY2FsYW1pdHkgb2YgRXNhdSB1cG9uIGhpbSwgdGhlIHRpbWUgdGhhdCBJIHdpbGwgdmlzaXQgaGltLgpJZiBncmFwZWdhdGhlcmVycyBjb21lIHRvIHRoZWUsIHdvdWxkIHRoZXkgbm90IGxlYXZlIHNvbWUgZ2xlYW5pbmcgZ3JhcGVzPyBpZiB0aGlldmVzIGJ5IG5pZ2h0LCB0aGV5IHdpbGwgZGVzdHJveSB0aWxsIHRoZXkgaGF2ZSBlbm91Z2guCkJ1dCBJIGhhdmUgbWFkZSBFc2F1IGJhcmUsIEkgaGF2ZSB1bmNvdmVyZWQgaGlzIHNlY3JldCBwbGFjZXMsIGFuZCBoZSBzaGFsbCBub3QgYmUgYWJsZSB0byBoaWRlIGhpbXNlbGY6IGhpcyBzZWVkIGlzIHNwb2lsZWQsIGFuZCBoaXMgYnJldGhyZW4sIGFuZCBoaXMgbmVpZ2hib3VycywgYW5kIGhlIGlzIG5vdC4KTGVhdmUgdGh5IGZhdGhlcmxlc3MgY2hpbGRyZW4sIEkgd2lsbCBwcmVzZXJ2ZSB0aGVtIGFsaXZlOyBhbmQgbGV0IHRoeSB3aWRvd3MgdHJ1c3QgaW4gbWUuCkZvciB0aHVzIHNhaXRoIHRoZSBMT1JEOyBCZWhvbGQsIHRoZXkgd2hvc2UganVkZ21lbnQgd2FzIG5vdCB0byBkcmluayBvZiB0aGUgY3VwIGhhdmUgYXNzdXJlZGx5IGRydW5rZW47IGFuZCBhcnQgdGhvdSBoZSB0aGF0IHNoYWxsIGFsdG9nZXRoZXIgZ28gdW5wdW5pc2hlZD8gdGhvdSBzaGFsdCBub3QgZ28gdW5wdW5pc2hlZCwgYnV0IHRob3Ugc2hhbHQgc3VyZWx5IGRyaW5rIG9mIGl0LgpGb3IgSSBoYXZlIHN3b3JuIGJ5IG15c2VsZiwgc2FpdGggdGhlIExPUkQsIHRoYXQgQm96cmFoIHNoYWxsIGJlY29tZSBhIGRlc29sYXRpb24sIGEgcmVwcm9hY2gsIGEgd2FzdGUsIGFuZCBhIGN1cnNlOyBhbmQgYWxsIHRoZSBjaXRpZXMgdGhlcmVvZiBzaGFsbCBiZSBwZXJwZXR1YWwgd2FzdGVzLgpJIGhhdmUgaGVhcmQgYSBydW1vdXIgZnJvbSB0aGUgTE9SRCwgYW5kIGFuIGFtYmFzc2Fkb3IgaXMgc2VudCB1bnRvIHRoZSBoZWF0aGVuLCBzYXlpbmcsIEdhdGhlciB5ZSB0b2dldGhlciwgYW5kIGNvbWUgYWdhaW5zdCBoZXIsIGFuZCByaXNlIHVwIHRvIHRoZSBiYXR0bGUuCkZvciwgbG8sIEkgd2lsbCBtYWtlIHRoZWUgc21hbGwgYW1vbmcgdGhlIGhlYXRoZW4sIGFuZCBkZXNwaXNlZCBhbW9uZyBtZW4uClRoeSB0ZXJyaWJsZW5lc3MgaGF0aCBkZWNlaXZlZCB0aGVlLCBhbmQgdGhlIHByaWRlIG9mIHRoaW5lIGhlYXJ0LCBPIHRob3UgdGhhdCBkd2VsbGVzdCBpbiB0aGUgY2xlZnRzIG9mIHRoZSByb2NrLCB0aGF0IGhvbGRlc3QgdGhlIGhlaWdodCBvZiB0aGUgaGlsbDogdGhvdWdoIHRob3Ugc2hvdWxkZXN0IG1ha2UgdGh5IG5lc3QgYXMgaGlnaCBhcyB0aGUgZWFnbGUsIEkgd2lsbCBicmluZyB0aGVlIGRvd24gZnJvbSB0aGVuY2UsIHNhaXRoIHRoZSBMT1JELgpBbHNvIEVkb20gc2hhbGwgYmUgYSBkZXNvbGF0aW9uOiBldmVyeSBvbmUgdGhhdCBnb2V0aCBieSBpdCBzaGFsbCBiZSBhc3RvbmlzaGVkLCBhbmQgc2hhbGwgaGlzcyBhdCBhbGwgdGhlIHBsYWd1ZXMgdGhlcmVvZi4KQXMgaW4gdGhlIG92ZXJ0aHJvdyBvZiBTb2RvbSBhbmQgR29tb3JyYWggYW5kIHRoZSBuZWlnaGJvdXIgY2l0aWVzIHRoZXJlb2YsIHNhaXRoIHRoZSBMT1JELCBubyBtYW4gc2hhbGwgYWJpZGUgdGhlcmUsIG5laXRoZXIgc2hhbGwgYSBzb24gb2YgbWFuIGR3ZWxsIGluIGl0LgpCZWhvbGQsIGhlIHNoYWxsIGNvbWUgdXAgbGlrZSBhIGxpb24gZnJvbSB0aGUgc3dlbGxpbmcgb2YgSm9yZGFuIGFnYWluc3QgdGhlIGhhYml0YXRpb24gb2YgdGhlIHN0cm9uZzogYnV0IEkgd2lsbCBzdWRkZW5seSBtYWtlIGhpbSBydW4gYXdheSBmcm9tIGhlcjogYW5kIHdobyBpcyBhIGNob3NlbiBtYW4sIHRoYXQgSSBtYXkgYXBwb2ludCBvdmVyIGhlcj8gZm9yIHdobyBpcyBsaWtlIG1lPyBhbmQgd2hvIHdpbGwgYXBwb2ludCBtZSB0aGUgdGltZT8gYW5kIHdobyBpcyB0aGF0IHNoZXBoZXJkIHRoYXQgd2lsbCBzdGFuZCBiZWZvcmUgbWU/ClRoZXJlZm9yZSBoZWFyIHRoZSBjb3Vuc2VsIG9mIHRoZSBMT1JELCB0aGF0IGhlIGhhdGggdGFrZW4gYWdhaW5zdCBFZG9tOyBhbmQgaGlzIHB1cnBvc2VzLCB0aGF0IGhlIGhhdGggcHVycG9zZWQgYWdhaW5zdCB0aGUgaW5oYWJpdGFudHMgb2YgVGVtYW46IFN1cmVseSB0aGUgbGVhc3Qgb2YgdGhlIGZsb2NrIHNoYWxsIGRyYXcgdGhlbSBvdXQ6IHN1cmVseSBoZSBzaGFsbCBtYWtlIHRoZWlyIGhhYml0YXRpb25zIGRlc29sYXRlIHdpdGggdGhlbS4KVGhlIGVhcnRoIGlzIG1vdmVkIGF0IHRoZSBub2lzZSBvZiB0aGVpciBmYWxsLCBhdCB0aGUgY3J5IHRoZSBub2lzZSB0aGVyZW9mIHdhcyBoZWFyZCBpbiB0aGUgUmVkIHNlYS4KQmVob2xkLCBoZSBzaGFsbCBjb21lIHVwIGFuZCBmbHkgYXMgdGhlIGVhZ2xlLCBhbmQgc3ByZWFkIGhpcyB3aW5ncyBvdmVyIEJvenJhaDogYW5kIGF0IHRoYXQgZGF5IHNoYWxsIHRoZSBoZWFydCBvZiB0aGUgbWlnaHR5IG1lbiBvZiBFZG9tIGJlIGFzIHRoZSBoZWFydCBvZiBhIHdvbWFuIGluIGhlciBwYW5ncy4KQ29uY2VybmluZyBEYW1hc2N1cy4gSGFtYXRoIGlzIGNvbmZvdW5kZWQsIGFuZCBBcnBhZDogZm9yIHRoZXkgaGF2ZSBoZWFyZCBldmlsIHRpZGluZ3M6IHRoZXkgYXJlIGZhaW50aGVhcnRlZDsgdGhlcmUgaXMgc29ycm93IG9uIHRoZSBzZWE7IGl0IGNhbm5vdCBiZSBxdWlldC4KRGFtYXNjdXMgaXMgd2F4ZWQgZmVlYmxlLCBhbmQgdHVybmV0aCBoZXJzZWxmIHRvIGZsZWUsIGFuZCBmZWFyIGhhdGggc2VpemVkIG9uIGhlcjogYW5ndWlzaCBhbmQgc29ycm93cyBoYXZlIHRha2VuIGhlciwgYXMgYSB3b21hbiBpbiB0cmF2YWlsLgpIb3cgaXMgdGhlIGNpdHkgb2YgcHJhaXNlIG5vdCBsZWZ0LCB0aGUgY2l0eSBvZiBteSBqb3khClRoZXJlZm9yZSBoZXIgeW91bmcgbWVuIHNoYWxsIGZhbGwgaW4gaGVyIHN0cmVldHMsIGFuZCBhbGwgdGhlIG1lbiBvZiB3YXIgc2hhbGwgYmUgY3V0IG9mZiBpbiB0aGF0IGRheSwgc2FpdGggdGhlIExPUkQgb2YgaG9zdHMuCkFuZCBJIHdpbGwga2luZGxlIGEgZmlyZSBpbiB0aGUgd2FsbCBvZiBEYW1hc2N1cywgYW5kIGl0IHNoYWxsIGNvbnN1bWUgdGhlIHBhbGFjZXMgb2YgQmVuaGFkYWQuCkNvbmNlcm5pbmcgS2VkYXIsIGFuZCBjb25jZXJuaW5nIHRoZSBraW5nZG9tcyBvZiBIYXpvciwgd2hpY2ggTmVidWNoYWRyZXp6YXIga2luZyBvZiBCYWJ5bG9uIHNoYWxsIHNtaXRlLCB0aHVzIHNhaXRoIHRoZSBMT1JEOyBBcmlzZSB5ZSwgZ28gdXAgdG8gS2VkYXIsIGFuZCBzcG9pbCB0aGUgbWVuIG9mIHRoZSBlYXN0LgpUaGVpciB0ZW50cyBhbmQgdGhlaXIgZmxvY2tzIHNoYWxsIHRoZXkgdGFrZSBhd2F5OiB0aGV5IHNoYWxsIHRha2UgdG8gdGhlbXNlbHZlcyB0aGVpciBjdXJ0YWlucywgYW5kIGFsbCB0aGVpciB2ZXNzZWxzLCBhbmQgdGhlaXIgY2FtZWxzOyBhbmQgdGhleSBzaGFsbCBjcnkgdW50byB0aGVtLCBGZWFyIGlzIG9uIGV2ZXJ5IHNpZGUuCkZsZWUsIGdldCB5b3UgZmFyIG9mZiwgZHdlbGwgZGVlcCwgTyB5ZSBpbmhhYml0YW50cyBvZiBIYXpvciwgc2FpdGggdGhlIExPUkQ7IGZvciBOZWJ1Y2hhZHJlenphciBraW5nIG9mIEJhYnlsb24gaGF0aCB0YWtlbiBjb3Vuc2VsIGFnYWluc3QgeW91LCBhbmQgaGF0aCBjb25jZWl2ZWQgYSBwdXJwb3NlIGFnYWluc3QgeW91LgpBcmlzZSwgZ2V0IHlvdSB1cCB1bnRvIHRoZSB3ZWFsdGh5IG5hdGlvbiwgdGhhdCBkd2VsbGV0aCB3aXRob3V0IGNhcmUsIHNhaXRoIHRoZSBMT1JELCB3aGljaCBoYXZlIG5laXRoZXIgZ2F0ZXMgbm9yIGJhcnMsIHdoaWNoIGR3ZWxsIGFsb25lLgpBbmQgdGhlaXIgY2FtZWxzIHNoYWxsIGJlIGEgYm9vdHksIGFuZCB0aGUgbXVsdGl0dWRlIG9mIHRoZWlyIGNhdHRsZSBhIHNwb2lsOiBhbmQgSSB3aWxsIHNjYXR0ZXIgaW50byBhbGwgd2luZHMgdGhlbSB0aGF0IGFyZSBpbiB0aGUgdXRtb3N0IGNvcm5lcnM7IGFuZCBJIHdpbGwgYnJpbmcgdGhlaXIgY2FsYW1pdHkgZnJvbSBhbGwgc2lkZXMgdGhlcmVvZiwgc2FpdGggdGhlIExPUkQuCkFuZCBIYXpvciBzaGFsbCBiZSBhIGR3ZWxsaW5nIGZvciBkcmFnb25zLCBhbmQgYSBkZXNvbGF0aW9uIGZvciBldmVyOiB0aGVyZSBzaGFsbCBubyBtYW4gYWJpZGUgdGhlcmUsIG5vciBhbnkgc29uIG9mIG1hbiBkd2VsbCBpbiBpdC4KVGhlIHdvcmQgb2YgdGhlIExPUkQgdGhhdCBjYW1lIHRvIEplcmVtaWFoIHRoZSBwcm9waGV0IGFnYWluc3QgRWxhbSBpbiB0aGUgYmVnaW5uaW5nIG9mIHRoZSByZWlnbiBvZiBaZWRla2lhaCBraW5nIG9mIEp1ZGFoLCBzYXlpbmcsClRodXMgc2FpdGggdGhlIExPUkQgb2YgaG9zdHM7IEJlaG9sZCwgSSB3aWxsIGJyZWFrIHRoZSBib3cgb2YgRWxhbSwgdGhlIGNoaWVmIG9mIHRoZWlyIG1pZ2h0LgpBbmQgdXBvbiBFbGFtIHdpbGwgSSBicmluZyB0aGUgZm91ciB3aW5kcyBmcm9tIHRoZSBmb3VyIHF1YXJ0ZXJzIG9mIGhlYXZlbiwgYW5kIHdpbGwgc2NhdHRlciB0aGVtIHRvd2FyZCBhbGwgdGhvc2Ugd2luZHM7IGFuZCB0aGVyZSBzaGFsbCBiZSBubyBuYXRpb24gd2hpdGhlciB0aGUgb3V0Y2FzdHMgb2YgRWxhbSBzaGFsbCBub3QgY29tZS4KRm9yIEkgd2lsbCBjYXVzZSBFbGFtIHRvIGJlIGRpc21heWVkIGJlZm9yZSB0aGVpciBlbmVtaWVzLCBhbmQgYmVmb3JlIHRoZW0gdGhhdCBzZWVrIHRoZWlyIGxpZmU6IGFuZCBJIHdpbGwgYnJpbmcgZXZpbCB1cG9uIHRoZW0sIGV2ZW4gbXkgZmllcmNlIGFuZ2VyLCBzYWl0aCB0aGUgTE9SRDsgYW5kIEkgd2lsbCBzZW5kIHRoZSBzd29yZCBhZnRlciB0aGVtLCB0aWxsIEkgaGF2ZSBjb25zdW1lZCB0aGVtOgpBbmQgSSB3aWxsIHNldCBteSB0aHJvbmUgaW4gRWxhbSwgYW5kIHdpbGwgZGVzdHJveSBmcm9tIHRoZW5jZSB0aGUga2luZyBhbmQgdGhlIHByaW5jZXMsIHNhaXRoIHRoZSBMT1JELgpCdXQgaXQgc2hhbGwgY29tZSB0byBwYXNzIGluIHRoZSBsYXR0ZXIgZGF5cywgdGhhdCBJIHdpbGwgYnJpbmcgYWdhaW4gdGhlIGNhcHRpdml0eSBvZiBFbGFtLCBzYWl0aCB0aGUgTE9SRC4KVGhlIHdvcmQgdGhhdCB0aGUgTE9SRCBzcGFrZSBhZ2FpbnN0IEJhYnlsb24gYW5kIGFnYWluc3QgdGhlIGxhbmQgb2YgdGhlIENoYWxkZWFucyBieSBKZXJlbWlhaCB0aGUgcHJvcGhldC4KRGVjbGFyZSB5ZSBhbW9uZyB0aGUgbmF0aW9ucywgYW5kIHB1Ymxpc2gsIGFuZCBzZXQgdXAgYSBzdGFuZGFyZDsgcHVibGlzaCwgYW5kIGNvbmNlYWwgbm90OiBzYXksIEJhYnlsb24gaXMgdGFrZW4sIEJlbCBpcyBjb25mb3VuZGVkLCBNZXJvZGFjaCBpcyBicm9rZW4gaW4gcGllY2VzOyBoZXIgaWRvbHMgYXJlIGNvbmZvdW5kZWQsIGhlciBpbWFnZXMgYXJlIGJyb2tlbiBpbiBwaWVjZXMuCkZvciBvdXQgb2YgdGhlIG5vcnRoIHRoZXJlIGNvbWV0aCB1cCBhIG5hdGlvbiBhZ2FpbnN0IGhlciwgd2hpY2ggc2hhbGwgbWFrZSBoZXIgbGFuZCBkZXNvbGF0ZSwgYW5kIG5vbmUgc2hhbGwgZHdlbGwgdGhlcmVpbjogdGhleSBzaGFsbCByZW1vdmUsIHRoZXkgc2hhbGwgZGVwYXJ0LCBib3RoIG1hbiBhbmQgYmVhc3QuCkluIHRob3NlIGRheXMsIGFuZCBpbiB0aGF0IHRpbWUsIHNhaXRoIHRoZSBMT1JELCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIHNoYWxsIGNvbWUsIHRoZXkgYW5kIHRoZSBjaGlsZHJlbiBvZiBKdWRhaCB0b2dldGhlciwgZ29pbmcgYW5kIHdlZXBpbmc6IHRoZXkgc2hhbGwgZ28sIGFuZCBzZWVrIHRoZSBMT1JEIHRoZWlyIEdvZC4KVGhleSBzaGFsbCBhc2sgdGhlIHdheSB0byBaaW9uIHdpdGggdGhlaXIgZmFjZXMgdGhpdGhlcndhcmQsIHNheWluZywgQ29tZSwgYW5kIGxldCB1cyBqb2luIG91cnNlbHZlcyB0byB0aGUgTE9SRCBpbiBhIHBlcnBldHVhbCBjb3ZlbmFudCB0aGF0IHNoYWxsIG5vdCBiZSBmb3Jnb3R0ZW4uCk15IHBlb3BsZSBoYXRoIGJlZW4gbG9zdCBzaGVlcDogdGhlaXIgc2hlcGhlcmRzIGhhdmUgY2F1c2VkIHRoZW0gdG8gZ28gYXN0cmF5LCB0aGV5IGhhdmUgdHVybmVkIHRoZW0gYXdheSBvbiB0aGUgbW91bnRhaW5zOiB0aGV5IGhhdmUgZ29uZSBmcm9tIG1vdW50YWluIHRvIGhpbGwsIHRoZXkgaGF2ZSBmb3Jnb3R0ZW4gdGhlaXIgcmVzdGluZ3BsYWNlLgpBbGwgdGhhdCBmb3VuZCB0aGVtIGhhdmUgZGV2b3VyZWQgdGhlbTogYW5kIHRoZWlyIGFkdmVyc2FyaWVzIHNhaWQsIFdlIG9mZmVuZCBub3QsIGJlY2F1c2UgdGhleSBoYXZlIHNpbm5lZCBhZ2FpbnN0IHRoZSBMT1JELCB0aGUgaGFiaXRhdGlvbiBvZiBqdXN0aWNlLCBldmVuIHRoZSBMT1JELCB0aGUgaG9wZSBvZiB0aGVpciBmYXRoZXJzLgpSZW1vdmUgb3V0IG9mIHRoZSBtaWRzdCBvZiBCYWJ5bG9uLCBhbmQgZ28gZm9ydGggb3V0IG9mIHRoZSBsYW5kIG9mIHRoZSBDaGFsZGVhbnMsIGFuZCBiZSBhcyB0aGUgaGUgZ29hdHMgYmVmb3JlIHRoZSBmbG9ja3MuCkZvciwgbG8sIEkgd2lsbCByYWlzZSBhbmQgY2F1c2UgdG8gY29tZSB1cCBhZ2FpbnN0IEJhYnlsb24gYW4gYXNzZW1ibHkgb2YgZ3JlYXQgbmF0aW9ucyBmcm9tIHRoZSBub3J0aCBjb3VudHJ5OiBhbmQgdGhleSBzaGFsbCBzZXQgdGhlbXNlbHZlcyBpbiBhcnJheSBhZ2FpbnN0IGhlcjsgZnJvbSB0aGVuY2Ugc2hlIHNoYWxsIGJlIHRha2VuOiB0aGVpciBhcnJvd3Mgc2hhbGwgYmUgYXMgb2YgYSBtaWdodHkgZXhwZXJ0IG1hbjsgbm9uZSBzaGFsbCByZXR1cm4gaW4gdmFpbi4KQW5kIENoYWxkZWEgc2hhbGwgYmUgYSBzcG9pbDogYWxsIHRoYXQgc3BvaWwgaGVyIHNoYWxsIGJlIHNhdGlzZmllZCwgc2FpdGggdGhlIExPUkQuCkJlY2F1c2UgeWUgd2VyZSBnbGFkLCBiZWNhdXNlIHllIHJlam9pY2VkLCBPIHllIGRlc3Ryb3llcnMgb2YgbWluZSBoZXJpdGFnZSwgYmVjYXVzZSB5ZSBhcmUgZ3Jvd24gZmF0IGFzIHRoZSBoZWlmZXIgYXQgZ3Jhc3MsIGFuZCBiZWxsb3cgYXMgYnVsbHM7CllvdXIgbW90aGVyIHNoYWxsIGJlIHNvcmUgY29uZm91bmRlZDsgc2hlIHRoYXQgYmFyZSB5b3Ugc2hhbGwgYmUgYXNoYW1lZDogYmVob2xkLCB0aGUgaGluZGVybW9zdCBvZiB0aGUgbmF0aW9ucyBzaGFsbCBiZSBhIHdpbGRlcm5lc3MsIGEgZHJ5IGxhbmQsIGFuZCBhIGRlc2VydC4KQmVjYXVzZSBvZiB0aGUgd3JhdGggb2YgdGhlIExPUkQgaXQgc2hhbGwgbm90IGJlIGluaGFiaXRlZCwgYnV0IGl0IHNoYWxsIGJlIHdob2xseSBkZXNvbGF0ZTogZXZlcnkgb25lIHRoYXQgZ29ldGggYnkgQmFieWxvbiBzaGFsbCBiZSBhc3RvbmlzaGVkLCBhbmQgaGlzcyBhdCBhbGwgaGVyIHBsYWd1ZXMuClB1dCB5b3Vyc2VsdmVzIGluIGFycmF5IGFnYWluc3QgQmFieWxvbiByb3VuZCBhYm91dDogYWxsIHllIHRoYXQgYmVuZCB0aGUgYm93LCBzaG9vdCBhdCBoZXIsIHNwYXJlIG5vIGFycm93czogZm9yIHNoZSBoYXRoIHNpbm5lZCBhZ2FpbnN0IHRoZSBMT1JELgpTaG91dCBhZ2FpbnN0IGhlciByb3VuZCBhYm91dDogc2hlIGhhdGggZ2l2ZW4gaGVyIGhhbmQ6IGhlciBmb3VuZGF0aW9ucyBhcmUgZmFsbGVuLCBoZXIgd2FsbHMgYXJlIHRocm93biBkb3duOiBmb3IgaXQgaXMgdGhlIHZlbmdlYW5jZSBvZiB0aGUgTE9SRDogdGFrZSB2ZW5nZWFuY2UgdXBvbiBoZXI7IGFzIHNoZSBoYXRoIGRvbmUsIGRvIHVudG8gaGVyLgpDdXQgb2ZmIHRoZSBzb3dlciBmcm9tIEJhYnlsb24sIGFuZCBoaW0gdGhhdCBoYW5kbGV0aCB0aGUgc2lja2xlIGluIHRoZSB0aW1lIG9mIGhhcnZlc3Q6IGZvciBmZWFyIG9mIHRoZSBvcHByZXNzaW5nIHN3b3JkIHRoZXkgc2hhbGwgdHVybiBldmVyeSBvbmUgdG8gaGlzIHBlb3BsZSwgYW5kIHRoZXkgc2hhbGwgZmxlZSBldmVyeSBvbmUgdG8gaGlzIG93biBsYW5kLgpJc3JhZWwgaXMgYSBzY2F0dGVyZWQgc2hlZXA7IHRoZSBsaW9ucyBoYXZlIGRyaXZlbiBoaW0gYXdheTogZmlyc3QgdGhlIGtpbmcgb2YgQXNzeXJpYSBoYXRoIGRldm91cmVkIGhpbTsgYW5kIGxhc3QgdGhpcyBOZWJ1Y2hhZHJlenphciBraW5nIG9mIEJhYnlsb24gaGF0aCBicm9rZW4gaGlzIGJvbmVzLgpUaGVyZWZvcmUgdGh1cyBzYWl0aCB0aGUgTE9SRCBvZiBob3N0cywgdGhlIEdvZCBvZiBJc3JhZWw7IEJlaG9sZCwgSSB3aWxsIHB1bmlzaCB0aGUga2luZyBvZiBCYWJ5bG9uIGFuZCBoaXMgbGFuZCwgYXMgSSBoYXZlIHB1bmlzaGVkIHRoZSBraW5nIG9mIEFzc3lyaWEuCkFuZCBJIHdpbGwgYnJpbmcgSXNyYWVsIGFnYWluIHRvIGhpcyBoYWJpdGF0aW9uLCBhbmQgaGUgc2hhbGwgZmVlZCBvbiBDYXJtZWwgYW5kIEJhc2hhbiwgYW5kIGhpcyBzb3VsIHNoYWxsIGJlIHNhdGlzZmllZCB1cG9uIG1vdW50IEVwaHJhaW0gYW5kIEdpbGVhZC4KSW4gdGhvc2UgZGF5cywgYW5kIGluIHRoYXQgdGltZSwgc2FpdGggdGhlIExPUkQsIHRoZSBpbmlxdWl0eSBvZiBJc3JhZWwgc2hhbGwgYmUgc291Z2h0IGZvciwgYW5kIHRoZXJlIHNoYWxsIGJlIG5vbmU7IGFuZCB0aGUgc2lucyBvZiBKdWRhaCwgYW5kIHRoZXkgc2hhbGwgbm90IGJlIGZvdW5kOiBmb3IgSSB3aWxsIHBhcmRvbiB0aGVtIHdob20gSSByZXNlcnZlLgpHbyB1cCBhZ2FpbnN0IHRoZSBsYW5kIG9mIE1lcmF0aGFpbSwgZXZlbiBhZ2FpbnN0IGl0LCBhbmQgYWdhaW5zdCB0aGUgaW5oYWJpdGFudHMgb2YgUGVrb2Q6IHdhc3RlIGFuZCB1dHRlcmx5IGRlc3Ryb3kgYWZ0ZXIgdGhlbSwgc2FpdGggdGhlIExPUkQsIGFuZCBkbyBhY2NvcmRpbmcgdG8gYWxsIHRoYXQgSSBoYXZlIGNvbW1hbmRlZCB0aGVlLgpBIHNvdW5kIG9mIGJhdHRsZSBpcyBpbiB0aGUgbGFuZCwgYW5kIG9mIGdyZWF0IGRlc3RydWN0aW9uLgpIb3cgaXMgdGhlIGhhbW1lciBvZiB0aGUgd2hvbGUgZWFydGggY3V0IGFzdW5kZXIgYW5kIGJyb2tlbiEgaG93IGlzIEJhYnlsb24gYmVjb21lIGEgZGVzb2xhdGlvbiBhbW9uZyB0aGUgbmF0aW9ucyEKSSBoYXZlIGxhaWQgYSBzbmFyZSBmb3IgdGhlZSwgYW5kIHRob3UgYXJ0IGFsc28gdGFrZW4sIE8gQmFieWxvbiwgYW5kIHRob3Ugd2FzdCBub3QgYXdhcmU6IHRob3UgYXJ0IGZvdW5kLCBhbmQgYWxzbyBjYXVnaHQsIGJlY2F1c2UgdGhvdSBoYXN0IHN0cml2ZW4gYWdhaW5zdCB0aGUgTE9SRC4KVGhlIExPUkQgaGF0aCBvcGVuZWQgaGlzIGFybW91cnksIGFuZCBoYXRoIGJyb3VnaHQgZm9ydGggdGhlIHdlYXBvbnMgb2YgaGlzIGluZGlnbmF0aW9uOiBmb3IgdGhpcyBpcyB0aGUgd29yayBvZiB0aGUgTG9yZCBHT0Qgb2YgaG9zdHMgaW4gdGhlIGxhbmQgb2YgdGhlIENoYWxkZWFucy4KQ29tZSBhZ2FpbnN0IGhlciBmcm9tIHRoZSB1dG1vc3QgYm9yZGVyLCBvcGVuIGhlciBzdG9yZWhvdXNlczogY2FzdCBoZXIgdXAgYXMgaGVhcHMsIGFuZCBkZXN0cm95IGhlciB1dHRlcmx5OiBsZXQgbm90aGluZyBvZiBoZXIgYmUgbGVmdC4KU2xheSBhbGwgaGVyIGJ1bGxvY2tzOyBsZXQgdGhlbSBnbyBkb3duIHRvIHRoZSBzbGF1Z2h0ZXI6IHdvZSB1bnRvIHRoZW0hIGZvciB0aGVpciBkYXkgaXMgY29tZSwgdGhlIHRpbWUgb2YgdGhlaXIgdmlzaXRhdGlvbi4KVGhlIHZvaWNlIG9mIHRoZW0gdGhhdCBmbGVlIGFuZCBlc2NhcGUgb3V0IG9mIHRoZSBsYW5kIG9mIEJhYnlsb24sIHRvIGRlY2xhcmUgaW4gWmlvbiB0aGUgdmVuZ2VhbmNlIG9mIHRoZSBMT1JEIG91ciBHb2QsIHRoZSB2ZW5nZWFuY2Ugb2YgaGlzIHRlbXBsZS4KQ2FsbCB0b2dldGhlciB0aGUgYXJjaGVycyBhZ2FpbnN0IEJhYnlsb246IGFsbCB5ZSB0aGF0IGJlbmQgdGhlIGJvdywgY2FtcCBhZ2FpbnN0IGl0IHJvdW5kIGFib3V0OyBsZXQgbm9uZSB0aGVyZW9mIGVzY2FwZTogcmVjb21wZW5zZSBoZXIgYWNjb3JkaW5nIHRvIGhlciB3b3JrOyBhY2NvcmRpbmcgdG8gYWxsIHRoYXQgc2hlIGhhdGggZG9uZSwgZG8gdW50byBoZXI6IGZvciBzaGUgaGF0aCBiZWVuIHByb3VkIGFnYWluc3QgdGhlIExPUkQsIGFnYWluc3QgdGhlIEhvbHkgT25lIG9mIElzcmFlbC4KVGhlcmVmb3JlIHNoYWxsIGhlciB5b3VuZyBtZW4gZmFsbCBpbiB0aGUgc3RyZWV0cywgYW5kIGFsbCBoZXIgbWVuIG9mIHdhciBzaGFsbCBiZSBjdXQgb2ZmIGluIHRoYXQgZGF5LCBzYWl0aCB0aGUgTE9SRC4KQmVob2xkLCBJIGFtIGFnYWluc3QgdGhlZSwgTyB0aG91IG1vc3QgcHJvdWQsIHNhaXRoIHRoZSBMb3JkIEdPRCBvZiBob3N0czogZm9yIHRoeSBkYXkgaXMgY29tZSwgdGhlIHRpbWUgdGhhdCBJIHdpbGwgdmlzaXQgdGhlZS4KQW5kIHRoZSBtb3N0IHByb3VkIHNoYWxsIHN0dW1ibGUgYW5kIGZhbGwsIGFuZCBub25lIHNoYWxsIHJhaXNlIGhpbSB1cDogYW5kIEkgd2lsbCBraW5kbGUgYSBmaXJlIGluIGhpcyBjaXRpZXMsIGFuZCBpdCBzaGFsbCBkZXZvdXIgYWxsIHJvdW5kIGFib3V0IGhpbS4KVGh1cyBzYWl0aCB0aGUgTE9SRCBvZiBob3N0czsgVGhlIGNoaWxkcmVuIG9mIElzcmFlbCBhbmQgdGhlIGNoaWxkcmVuIG9mIEp1ZGFoIHdlcmUgb3BwcmVzc2VkIHRvZ2V0aGVyOiBhbmQgYWxsIHRoYXQgdG9vayB0aGVtIGNhcHRpdmVzIGhlbGQgdGhlbSBmYXN0OyB0aGV5IHJlZnVzZWQgdG8gbGV0IHRoZW0gZ28uClRoZWlyIFJlZGVlbWVyIGlzIHN0cm9uZzsgdGhlIExPUkQgb2YgaG9zdHMgaXMgaGlzIG5hbWU6IGhlIHNoYWxsIHRocm91Z2hseSBwbGVhZCB0aGVpciBjYXVzZSwgdGhhdCBoZSBtYXkgZ2l2ZSByZXN0IHRvIHRoZSBsYW5kLCBhbmQgZGlzcXVpZXQgdGhlIGluaGFiaXRhbnRzIG9mIEJhYnlsb24uCkEgc3dvcmQgaXMgdXBvbiB0aGUgQ2hhbGRlYW5zLCBzYWl0aCB0aGUgTE9SRCwgYW5kIHVwb24gdGhlIGluaGFiaXRhbnRzIG9mIEJhYnlsb24sIGFuZCB1cG9uIGhlciBwcmluY2VzLCBhbmQgdXBvbiBoZXIgd2lzZSBtZW4uCkEgc3dvcmQgaXMgdXBvbiB0aGUgbGlhcnM7IGFuZCB0aGV5IHNoYWxsIGRvdGU6IGEgc3dvcmQgaXMgdXBvbiBoZXIgbWlnaHR5IG1lbjsgYW5kIHRoZXkgc2hhbGwgYmUgZGlzbWF5ZWQuCkEgc3dvcmQgaXMgdXBvbiB0aGVpciBob3JzZXMsIGFuZCB1cG9uIHRoZWlyIGNoYXJpb3RzLCBhbmQgdXBvbiBhbGwgdGhlIG1pbmdsZWQgcGVvcGxlIHRoYXQgYXJlIGluIHRoZSBtaWRzdCBvZiBoZXI7IGFuZCB0aGV5IHNoYWxsIGJlY29tZSBhcyB3b21lbjogYSBzd29yZCBpcyB1cG9uIGhlciB0cmVhc3VyZXM7IGFuZCB0aGV5IHNoYWxsIGJlIHJvYmJlZC4KQSBkcm91Z2h0IGlzIHVwb24gaGVyIHdhdGVyczsgYW5kIHRoZXkgc2hhbGwgYmUgZHJpZWQgdXA6IGZvciBpdCBpcyB0aGUgbGFuZCBvZiBncmF2ZW4gaW1hZ2VzLCBhbmQgdGhleSBhcmUgbWFkIHVwb24gdGhlaXIgaWRvbHMuClRoZXJlZm9yZSB0aGUgd2lsZCBiZWFzdHMgb2YgdGhlIGRlc2VydCB3aXRoIHRoZSB3aWxkIGJlYXN0cyBvZiB0aGUgaXNsYW5kcyBzaGFsbCBkd2VsbCB0aGVyZSwgYW5kIHRoZSBvd2xzIHNoYWxsIGR3ZWxsIHRoZXJlaW46IGFuZCBpdCBzaGFsbCBiZSBubyBtb3JlIGluaGFiaXRlZCBmb3IgZXZlcjsgbmVpdGhlciBzaGFsbCBpdCBiZSBkd2VsdCBpbiBmcm9tIGdlbmVyYXRpb24gdG8gZ2VuZXJhdGlvbi4KQXMgR29kIG92ZXJ0aHJldyBTb2RvbSBhbmQgR29tb3JyYWggYW5kIHRoZSBuZWlnaGJvdXIgY2l0aWVzIHRoZXJlb2YsIHNhaXRoIHRoZSBMT1JEOyBzbyBzaGFsbCBubyBtYW4gYWJpZGUgdGhlcmUsIG5laXRoZXIgc2hhbGwgYW55IHNvbiBvZiBtYW4gZHdlbGwgdGhlcmVpbi4KQmVob2xkLCBhIHBlb3BsZSBzaGFsbCBjb21lIGZyb20gdGhlIG5vcnRoLCBhbmQgYSBncmVhdCBuYXRpb24sIGFuZCBtYW55IGtpbmdzIHNoYWxsIGJlIHJhaXNlZCB1cCBmcm9tIHRoZSBjb2FzdHMgb2YgdGhlIGVhcnRoLgpUaGV5IHNoYWxsIGhvbGQgdGhlIGJvdyBhbmQgdGhlIGxhbmNlOiB0aGV5IGFyZSBjcnVlbCwgYW5kIHdpbGwgbm90IHNoZXcgbWVyY3k6IHRoZWlyIHZvaWNlIHNoYWxsIHJvYXIgbGlrZSB0aGUgc2VhLCBhbmQgdGhleSBzaGFsbCByaWRlIHVwb24gaG9yc2VzLCBldmVyeSBvbmUgcHV0IGluIGFycmF5LCBsaWtlIGEgbWFuIHRvIHRoZSBiYXR0bGUsIGFnYWluc3QgdGhlZSwgTyBkYXVnaHRlciBvZiBCYWJ5bG9uLgpUaGUga2luZyBvZiBCYWJ5bG9uIGhhdGggaGVhcmQgdGhlIHJlcG9ydCBvZiB0aGVtLCBhbmQgaGlzIGhhbmRzIHdheGVkIGZlZWJsZTogYW5ndWlzaCB0b29rIGhvbGQgb2YgaGltLCBhbmQgcGFuZ3MgYXMgb2YgYSB3b21hbiBpbiB0cmF2YWlsLgpCZWhvbGQsIGhlIHNoYWxsIGNvbWUgdXAgbGlrZSBhIGxpb24gZnJvbSB0aGUgc3dlbGxpbmcgb2YgSm9yZGFuIHVudG8gdGhlIGhhYml0YXRpb24gb2YgdGhlIHN0cm9uZzogYnV0IEkgd2lsbCBtYWtlIHRoZW0gc3VkZGVubHkgcnVuIGF3YXkgZnJvbSBoZXI6IGFuZCB3aG8gaXMgYSBjaG9zZW4gbWFuLCB0aGF0IEkgbWF5IGFwcG9pbnQgb3ZlciBoZXI/IGZvciB3aG8gaXMgbGlrZSBtZT8gYW5kIHdobyB3aWxsIGFwcG9pbnQgbWUgdGhlIHRpbWU/IGFuZCB3aG8gaXMgdGhhdCBzaGVwaGVyZCB0aGF0IHdpbGwgc3RhbmQgYmVmb3JlIG1lPwpUaGVyZWZvcmUgaGVhciB5ZSB0aGUgY291bnNlbCBvZiB0aGUgTE9SRCwgdGhhdCBoZSBoYXRoIHRha2VuIGFnYWluc3QgQmFieWxvbjsgYW5kIGhpcyBwdXJwb3NlcywgdGhhdCBoZSBoYXRoIHB1cnBvc2VkIGFnYWluc3QgdGhlIGxhbmQgb2YgdGhlIENoYWxkZWFuczogU3VyZWx5IHRoZSBsZWFzdCBvZiB0aGUgZmxvY2sgc2hhbGwgZHJhdyB0aGVtIG91dDogc3VyZWx5IGhlIHNoYWxsIG1ha2UgdGhlaXIgaGFiaXRhdGlvbiBkZXNvbGF0ZSB3aXRoIHRoZW0uCkF0IHRoZSBub2lzZSBvZiB0aGUgdGFraW5nIG9mIEJhYnlsb24gdGhlIGVhcnRoIGlzIG1vdmVkLCBhbmQgdGhlIGNyeSBpcyBoZWFyZCBhbW9uZyB0aGUgbmF0aW9ucy4KVGh1cyBzYWl0aCB0aGUgTE9SRDsgQmVob2xkLCBJIHdpbGwgcmFpc2UgdXAgYWdhaW5zdCBCYWJ5bG9uLCBhbmQgYWdhaW5zdCB0aGVtIHRoYXQgZHdlbGwgaW4gdGhlIG1pZHN0IG9mIHRoZW0gdGhhdCByaXNlIHVwIGFnYWluc3QgbWUsIGEgZGVzdHJveWluZyB3aW5kOwpBbmQgd2lsbCBzZW5kIHVudG8gQmFieWxvbiBmYW5uZXJzLCB0aGF0IHNoYWxsIGZhbiBoZXIsIGFuZCBzaGFsbCBlbXB0eSBoZXIgbGFuZDogZm9yIGluIHRoZSBkYXkgb2YgdHJvdWJsZSB0aGV5IHNoYWxsIGJlIGFnYWluc3QgaGVyIHJvdW5kIGFib3V0LgpBZ2FpbnN0IGhpbSB0aGF0IGJlbmRldGggbGV0IHRoZSBhcmNoZXIgYmVuZCBoaXMgYm93LCBhbmQgYWdhaW5zdCBoaW0gdGhhdCBsaWZ0ZXRoIGhpbXNlbGYgdXAgaW4gaGlzIGJyaWdhbmRpbmU6IGFuZCBzcGFyZSB5ZSBub3QgaGVyIHlvdW5nIG1lbjsgZGVzdHJveSB5ZSB1dHRlcmx5IGFsbCBoZXIgaG9zdC4KVGh1cyB0aGUgc2xhaW4gc2hhbGwgZmFsbCBpbiB0aGUgbGFuZCBvZiB0aGUgQ2hhbGRlYW5zLCBhbmQgdGhleSB0aGF0IGFyZSB0aHJ1c3QgdGhyb3VnaCBpbiBoZXIgc3RyZWV0cy4KRm9yIElzcmFlbCBoYXRoIG5vdCBiZWVuIGZvcnNha2VuLCBub3IgSnVkYWggb2YgaGlzIEdvZCwgb2YgdGhlIExPUkQgb2YgaG9zdHM7IHRob3VnaCB0aGVpciBsYW5kIHdhcyBmaWxsZWQgd2l0aCBzaW4gYWdhaW5zdCB0aGUgSG9seSBPbmUgb2YgSXNyYWVsLgpGbGVlIG91dCBvZiB0aGUgbWlkc3Qgb2YgQmFieWxvbiwgYW5kIGRlbGl2ZXIgZXZlcnkgbWFuIGhpcyBzb3VsOiBiZSBub3QgY3V0IG9mZiBpbiBoZXIgaW5pcXVpdHk7IGZvciB0aGlzIGlzIHRoZSB0aW1lIG9mIHRoZSBMT1JEJ3MgdmVuZ2VhbmNlOyBoZSB3aWxsIHJlbmRlciB1bnRvIGhlciBhIHJlY29tcGVuY2UuCkJhYnlsb24gaGF0aCBiZWVuIGEgZ29sZGVuIGN1cCBpbiB0aGUgTE9SRCdzIGhhbmQsIHRoYXQgbWFkZSBhbGwgdGhlIGVhcnRoIGRydW5rZW46IHRoZSBuYXRpb25zIGhhdmUgZHJ1bmtlbiBvZiBoZXIgd2luZTsgdGhlcmVmb3JlIHRoZSBuYXRpb25zIGFyZSBtYWQuCkJhYnlsb24gaXMgc3VkZGVubHkgZmFsbGVuIGFuZCBkZXN0cm95ZWQ6IGhvd2wgZm9yIGhlcjsgdGFrZSBiYWxtIGZvciBoZXIgcGFpbiwgaWYgc28gYmUgc2hlIG1heSBiZSBoZWFsZWQuCldlIHdvdWxkIGhhdmUgaGVhbGVkIEJhYnlsb24sIGJ1dCBzaGUgaXMgbm90IGhlYWxlZDogZm9yc2FrZSBoZXIsIGFuZCBsZXQgdXMgZ28gZXZlcnkgb25lIGludG8gaGlzIG93biBjb3VudHJ5OiBmb3IgaGVyIGp1ZGdtZW50IHJlYWNoZXRoIHVudG8gaGVhdmVuLCBhbmQgaXMgbGlmdGVkIHVwIGV2ZW4gdG8gdGhlIHNraWVzLgpUaGUgTE9SRCBoYXRoIGJyb3VnaHQgZm9ydGggb3VyIHJpZ2h0ZW91c25lc3M6IGNvbWUsIGFuZCBsZXQgdXMgZGVjbGFyZSBpbiBaaW9uIHRoZSB3b3JrIG9mIHRoZSBMT1JEIG91ciBHb2QuCk1ha2UgYnJpZ2h0IHRoZSBhcnJvd3M7IGdhdGhlciB0aGUgc2hpZWxkczogdGhlIExPUkQgaGF0aCByYWlzZWQgdXAgdGhlIHNwaXJpdCBvZiB0aGUga2luZ3Mgb2YgdGhlIE1lZGVzOiBmb3IgaGlzIGRldmljZSBpcyBhZ2FpbnN0IEJhYnlsb24sIHRvIGRlc3Ryb3kgaXQ7IGJlY2F1c2UgaXQgaXMgdGhlIHZlbmdlYW5jZSBvZiB0aGUgTE9SRCwgdGhlIHZlbmdlYW5jZSBvZiBoaXMgdGVtcGxlLgpTZXQgdXAgdGhlIHN0YW5kYXJkIHVwb24gdGhlIHdhbGxzIG9mIEJhYnlsb24sIG1ha2UgdGhlIHdhdGNoIHN0cm9uZywgc2V0IHVwIHRoZSB3YXRjaG1lbiwgcHJlcGFyZSB0aGUgYW1idXNoZXM6IGZvciB0aGUgTE9SRCBoYXRoIGJvdGggZGV2aXNlZCBhbmQgZG9uZSB0aGF0IHdoaWNoIGhlIHNwYWtlIGFnYWluc3QgdGhlIGluaGFiaXRhbnRzIG9mIEJhYnlsb24uCk8gdGhvdSB0aGF0IGR3ZWxsZXN0IHVwb24gbWFueSB3YXRlcnMsIGFidW5kYW50IGluIHRyZWFzdXJlcywgdGhpbmUgZW5kIGlzIGNvbWUsIGFuZCB0aGUgbWVhc3VyZSBvZiB0aHkgY292ZXRvdXNuZXNzLgpUaGUgTE9SRCBvZiBob3N0cyBoYXRoIHN3b3JuIGJ5IGhpbXNlbGYsIHNheWluZywgU3VyZWx5IEkgd2lsbCBmaWxsIHRoZWUgd2l0aCBtZW4sIGFzIHdpdGggY2F0ZXJwaWxsZXJzOyBhbmQgdGhleSBzaGFsbCBsaWZ0IHVwIGEgc2hvdXQgYWdhaW5zdCB0aGVlLgpIZSBoYXRoIG1hZGUgdGhlIGVhcnRoIGJ5IGhpcyBwb3dlciwgaGUgaGF0aCBlc3RhYmxpc2hlZCB0aGUgd29ybGQgYnkgaGlzIHdpc2RvbSwgYW5kIGhhdGggc3RyZXRjaGVkIG91dCB0aGUgaGVhdmVuIGJ5IGhpcyB1bmRlcnN0YW5kaW5nLgpXaGVuIGhlIHV0dGVyZXRoIGhpcyB2b2ljZSwgdGhlcmUgaXMgYSBtdWx0aXR1ZGUgb2Ygd2F0ZXJzIGluIHRoZSBoZWF2ZW5zOyBhbmQgaGUgY2F1c2V0aCB0aGUgdmFwb3VycyB0byBhc2NlbmQgZnJvbSB0aGUgZW5kcyBvZiB0aGUgZWFydGg6IGhlIG1ha2V0aCBsaWdodG5pbmdzIHdpdGggcmFpbiwgYW5kIGJyaW5nZXRoIGZvcnRoIHRoZSB3aW5kIG91dCBvZiBoaXMgdHJlYXN1cmVzLgpFdmVyeSBtYW4gaXMgYnJ1dGlzaCBieSBoaXMga25vd2xlZGdlOyBldmVyeSBmb3VuZGVyIGlzIGNvbmZvdW5kZWQgYnkgdGhlIGdyYXZlbiBpbWFnZTogZm9yIGhpcyBtb2x0ZW4gaW1hZ2UgaXMgZmFsc2Vob29kLCBhbmQgdGhlcmUgaXMgbm8gYnJlYXRoIGluIHRoZW0uClRoZXkgYXJlIHZhbml0eSwgdGhlIHdvcmsgb2YgZXJyb3JzOiBpbiB0aGUgdGltZSBvZiB0aGVpciB2aXNpdGF0aW9uIHRoZXkgc2hhbGwgcGVyaXNoLgpUaGUgcG9ydGlvbiBvZiBKYWNvYiBpcyBub3QgbGlrZSB0aGVtOyBmb3IgaGUgaXMgdGhlIGZvcm1lciBvZiBhbGwgdGhpbmdzOiBhbmQgSXNyYWVsIGlzIHRoZSByb2Qgb2YgaGlzIGluaGVyaXRhbmNlOiB0aGUgTE9SRCBvZiBob3N0cyBpcyBoaXMgbmFtZS4KVGhvdSBhcnQgbXkgYmF0dGxlIGF4ZSBhbmQgd2VhcG9ucyBvZiB3YXI6IGZvciB3aXRoIHRoZWUgd2lsbCBJIGJyZWFrIGluIHBpZWNlcyB0aGUgbmF0aW9ucywgYW5kIHdpdGggdGhlZSB3aWxsIEkgZGVzdHJveSBraW5nZG9tczsKQW5kIHdpdGggdGhlZSB3aWxsIEkgYnJlYWsgaW4gcGllY2VzIHRoZSBob3JzZSBhbmQgaGlzIHJpZGVyOyBhbmQgd2l0aCB0aGVlIHdpbGwgSSBicmVhayBpbiBwaWVjZXMgdGhlIGNoYXJpb3QgYW5kIGhpcyByaWRlcjsKV2l0aCB0aGVlIGFsc28gd2lsbCBJIGJyZWFrIGluIHBpZWNlcyBtYW4gYW5kIHdvbWFuOyBhbmQgd2l0aCB0aGVlIHdpbGwgSSBicmVhayBpbiBwaWVjZXMgb2xkIGFuZCB5b3VuZzsgYW5kIHdpdGggdGhlZSB3aWxsIEkgYnJlYWsgaW4gcGllY2VzIHRoZSB5b3VuZyBtYW4gYW5kIHRoZSBtYWlkOwpJIHdpbGwgYWxzbyBicmVhayBpbiBwaWVjZXMgd2l0aCB0aGVlIHRoZSBzaGVwaGVyZCBhbmQgaGlzIGZsb2NrOyBhbmQgd2l0aCB0aGVlIHdpbGwgSSBicmVhayBpbiBwaWVjZXMgdGhlIGh1c2JhbmRtYW4gYW5kIGhpcyB5b2tlIG9mIG94ZW47IGFuZCB3aXRoIHRoZWUgd2lsbCBJIGJyZWFrIGluIHBpZWNlcyBjYXB0YWlucyBhbmQgcnVsZXJzLgpBbmQgSSB3aWxsIHJlbmRlciB1bnRvIEJhYnlsb24gYW5kIHRvIGFsbCB0aGUgaW5oYWJpdGFudHMgb2YgQ2hhbGRlYSBhbGwgdGhlaXIgZXZpbCB0aGF0IHRoZXkgaGF2ZSBkb25lIGluIFppb24gaW4geW91ciBzaWdodCwgc2FpdGggdGhlIExPUkQuCkJlaG9sZCwgSSBhbSBhZ2FpbnN0IHRoZWUsIE8gZGVzdHJveWluZyBtb3VudGFpbiwgc2FpdGggdGhlIExPUkQsIHdoaWNoIGRlc3Ryb3llc3QgYWxsIHRoZSBlYXJ0aDogYW5kIEkgd2lsbCBzdHJldGNoIG91dCBtaW5lIGhhbmQgdXBvbiB0aGVlLCBhbmQgcm9sbCB0aGVlIGRvd24gZnJvbSB0aGUgcm9ja3MsIGFuZCB3aWxsIG1ha2UgdGhlZSBhIGJ1cm50IG1vdW50YWluLgpBbmQgdGhleSBzaGFsbCBub3QgdGFrZSBvZiB0aGVlIGEgc3RvbmUgZm9yIGEgY29ybmVyLCBub3IgYSBzdG9uZSBmb3IgZm91bmRhdGlvbnM7IGJ1dCB0aG91IHNoYWx0IGJlIGRlc29sYXRlIGZvciBldmVyLCBzYWl0aCB0aGUgTE9SRC4KU2V0IHllIHVwIGEgc3RhbmRhcmQgaW4gdGhlIGxhbmQsIGJsb3cgdGhlIHRydW1wZXQgYW1vbmcgdGhlIG5hdGlvbnMsIHByZXBhcmUgdGhlIG5hdGlvbnMgYWdhaW5zdCBoZXIsIGNhbGwgdG9nZXRoZXIgYWdhaW5zdCBoZXIgdGhlIGtpbmdkb21zIG9mIEFyYXJhdCwgTWlubmksIGFuZCBBc2hjaGVuYXo7IGFwcG9pbnQgYSBjYXB0YWluIGFnYWluc3QgaGVyOyBjYXVzZSB0aGUgaG9yc2VzIHRvIGNvbWUgdXAgYXMgdGhlIHJvdWdoIGNhdGVycGlsbGVycy4KUHJlcGFyZSBhZ2FpbnN0IGhlciB0aGUgbmF0aW9ucyB3aXRoIHRoZSBraW5ncyBvZiB0aGUgTWVkZXMsIHRoZSBjYXB0YWlucyB0aGVyZW9mLCBhbmQgYWxsIHRoZSBydWxlcnMgdGhlcmVvZiwgYW5kIGFsbCB0aGUgbGFuZCBvZiBoaXMgZG9taW5pb24uCkFuZCB0aGUgbGFuZCBzaGFsbCB0cmVtYmxlIGFuZCBzb3Jyb3c6IGZvciBldmVyeSBwdXJwb3NlIG9mIHRoZSBMT1JEIHNoYWxsIGJlIHBlcmZvcm1lZCBhZ2FpbnN0IEJhYnlsb24sIHRvIG1ha2UgdGhlIGxhbmQgb2YgQmFieWxvbiBhIGRlc29sYXRpb24gd2l0aG91dCBhbiBpbmhhYml0YW50LgpUaGUgbWlnaHR5IG1lbiBvZiBCYWJ5bG9uIGhhdmUgZm9yYm9ybiB0byBmaWdodCwgdGhleSBoYXZlIHJlbWFpbmVkIGluIHRoZWlyIGhvbGRzOiB0aGVpciBtaWdodCBoYXRoIGZhaWxlZDsgdGhleSBiZWNhbWUgYXMgd29tZW46IHRoZXkgaGF2ZSBidXJuZWQgaGVyIGR3ZWxsaW5ncGxhY2VzOyBoZXIgYmFycyBhcmUgYnJva2VuLgpPbmUgcG9zdCBzaGFsbCBydW4gdG8gbWVldCBhbm90aGVyLCBhbmQgb25lIG1lc3NlbmdlciB0byBtZWV0IGFub3RoZXIsIHRvIHNoZXcgdGhlIGtpbmcgb2YgQmFieWxvbiB0aGF0IGhpcyBjaXR5IGlzIHRha2VuIGF0IG9uZSBlbmQsCkFuZCB0aGF0IHRoZSBwYXNzYWdlcyBhcmUgc3RvcHBlZCwgYW5kIHRoZSByZWVkcyB0aGV5IGhhdmUgYnVybmVkIHdpdGggZmlyZSwgYW5kIHRoZSBtZW4gb2Ygd2FyIGFyZSBhZmZyaWdodGVkLgpGb3IgdGh1cyBzYWl0aCB0aGUgTE9SRCBvZiBob3N0cywgdGhlIEdvZCBvZiBJc3JhZWw7IFRoZSBkYXVnaHRlciBvZiBCYWJ5bG9uIGlzIGxpa2UgYSB0aHJlc2hpbmdmbG9vciwgaXQgaXMgdGltZSB0byB0aHJlc2ggaGVyOiB5ZXQgYSBsaXR0bGUgd2hpbGUsIGFuZCB0aGUgdGltZSBvZiBoZXIgaGFydmVzdCBzaGFsbCBjb21lLgpOZWJ1Y2hhZHJlenphciB0aGUga2luZyBvZiBCYWJ5bG9uIGhhdGggZGV2b3VyZWQgbWUsIGhlIGhhdGggY3J1c2hlZCBtZSwgaGUgaGF0aCBtYWRlIG1lIGFuIGVtcHR5IHZlc3NlbCwgaGUgaGF0aCBzd2FsbG93ZWQgbWUgdXAgbGlrZSBhIGRyYWdvbiwgaGUgaGF0aCBmaWxsZWQgaGlzIGJlbGx5IHdpdGggbXkgZGVsaWNhdGVzLCBoZSBoYXRoIGNhc3QgbWUgb3V0LgpUaGUgdmlvbGVuY2UgZG9uZSB0byBtZSBhbmQgdG8gbXkgZmxlc2ggYmUgdXBvbiBCYWJ5bG9uLCBzaGFsbCB0aGUgaW5oYWJpdGFudCBvZiBaaW9uIHNheTsgYW5kIG15IGJsb29kIHVwb24gdGhlIGluaGFiaXRhbnRzIG9mIENoYWxkZWEsIHNoYWxsIEplcnVzYWxlbSBzYXkuClRoZXJlZm9yZSB0aHVzIHNhaXRoIHRoZSBMT1JEOyBCZWhvbGQsIEkgd2lsbCBwbGVhZCB0aHkgY2F1c2UsIGFuZCB0YWtlIHZlbmdlYW5jZSBmb3IgdGhlZTsgYW5kIEkgd2lsbCBkcnkgdXAgaGVyIHNlYSwgYW5kIG1ha2UgaGVyIHNwcmluZ3MgZHJ5LgpBbmQgQmFieWxvbiBzaGFsbCBiZWNvbWUgaGVhcHMsIGEgZHdlbGxpbmdwbGFjZSBmb3IgZHJhZ29ucywgYW4gYXN0b25pc2htZW50LCBhbmQgYW4gaGlzc2luZywgd2l0aG91dCBhbiBpbmhhYml0YW50LgpUaGV5IHNoYWxsIHJvYXIgdG9nZXRoZXIgbGlrZSBsaW9uczogdGhleSBzaGFsbCB5ZWxsIGFzIGxpb25zJyB3aGVscHMuCkluIHRoZWlyIGhlYXQgSSB3aWxsIG1ha2UgdGhlaXIgZmVhc3RzLCBhbmQgSSB3aWxsIG1ha2UgdGhlbSBkcnVua2VuLCB0aGF0IHRoZXkgbWF5IHJlam9pY2UsIGFuZCBzbGVlcCBhIHBlcnBldHVhbCBzbGVlcCwgYW5kIG5vdCB3YWtlLCBzYWl0aCB0aGUgTE9SRC4KSSB3aWxsIGJyaW5nIHRoZW0gZG93biBsaWtlIGxhbWJzIHRvIHRoZSBzbGF1Z2h0ZXIsIGxpa2UgcmFtcyB3aXRoIGhlIGdvYXRzLgpIb3cgaXMgU2hlc2hhY2ggdGFrZW4hIGFuZCBob3cgaXMgdGhlIHByYWlzZSBvZiB0aGUgd2hvbGUgZWFydGggc3VycHJpc2VkISBob3cgaXMgQmFieWxvbiBiZWNvbWUgYW4gYXN0b25pc2htZW50IGFtb25nIHRoZSBuYXRpb25zIQpUaGUgc2VhIGlzIGNvbWUgdXAgdXBvbiBCYWJ5bG9uOiBzaGUgaXMgY292ZXJlZCB3aXRoIHRoZSBtdWx0aXR1ZGUgb2YgdGhlIHdhdmVzIHRoZXJlb2YuCkhlciBjaXRpZXMgYXJlIGEgZGVzb2xhdGlvbiwgYSBkcnkgbGFuZCwgYW5kIGEgd2lsZGVybmVzcywgYSBsYW5kIHdoZXJlaW4gbm8gbWFuIGR3ZWxsZXRoLCBuZWl0aGVyIGRvdGggYW55IHNvbiBvZiBtYW4gcGFzcyB0aGVyZWJ5LgpBbmQgSSB3aWxsIHB1bmlzaCBCZWwgaW4gQmFieWxvbiwgYW5kIEkgd2lsbCBicmluZyBmb3J0aCBvdXQgb2YgaGlzIG1vdXRoIHRoYXQgd2hpY2ggaGUgaGF0aCBzd2FsbG93ZWQgdXA6IGFuZCB0aGUgbmF0aW9ucyBzaGFsbCBub3QgZmxvdyB0b2dldGhlciBhbnkgbW9yZSB1bnRvIGhpbTogeWVhLCB0aGUgd2FsbCBvZiBCYWJ5bG9uIHNoYWxsIGZhbGwuCk15IHBlb3BsZSwgZ28geWUgb3V0IG9mIHRoZSBtaWRzdCBvZiBoZXIsIGFuZCBkZWxpdmVyIHllIGV2ZXJ5IG1hbiBoaXMgc291bCBmcm9tIHRoZSBmaWVyY2UgYW5nZXIgb2YgdGhlIExPUkQuCkFuZCBsZXN0IHlvdXIgaGVhcnQgZmFpbnQsIGFuZCB5ZSBmZWFyIGZvciB0aGUgcnVtb3VyIHRoYXQgc2hhbGwgYmUgaGVhcmQgaW4gdGhlIGxhbmQ7IGEgcnVtb3VyIHNoYWxsIGJvdGggY29tZSBvbmUgeWVhciwgYW5kIGFmdGVyIHRoYXQgaW4gYW5vdGhlciB5ZWFyIHNoYWxsIGNvbWUgYSBydW1vdXIsIGFuZCB2aW9sZW5jZSBpbiB0aGUgbGFuZCwgcnVsZXIgYWdhaW5zdCBydWxlci4KVGhlcmVmb3JlLCBiZWhvbGQsIHRoZSBkYXlzIGNvbWUsIHRoYXQgSSB3aWxsIGRvIGp1ZGdtZW50IHVwb24gdGhlIGdyYXZlbiBpbWFnZXMgb2YgQmFieWxvbjogYW5kIGhlciB3aG9sZSBsYW5kIHNoYWxsIGJlIGNvbmZvdW5kZWQsIGFuZCBhbGwgaGVyIHNsYWluIHNoYWxsIGZhbGwgaW4gdGhlIG1pZHN0IG9mIGhlci4KVGhlbiB0aGUgaGVhdmVuIGFuZCB0aGUgZWFydGgsIGFuZCBhbGwgdGhhdCBpcyB0aGVyZWluLCBzaGFsbCBzaW5nIGZvciBCYWJ5bG9uOiBmb3IgdGhlIHNwb2lsZXJzIHNoYWxsIGNvbWUgdW50byBoZXIgZnJvbSB0aGUgbm9ydGgsIHNhaXRoIHRoZSBMT1JELgpBcyBCYWJ5bG9uIGhhdGggY2F1c2VkIHRoZSBzbGFpbiBvZiBJc3JhZWwgdG8gZmFsbCwgc28gYXQgQmFieWxvbiBzaGFsbCBmYWxsIHRoZSBzbGFpbiBvZiBhbGwgdGhlIGVhcnRoLgpZZSB0aGF0IGhhdmUgZXNjYXBlZCB0aGUgc3dvcmQsIGdvIGF3YXksIHN0YW5kIG5vdCBzdGlsbDogcmVtZW1iZXIgdGhlIExPUkQgYWZhciBvZmYsIGFuZCBsZXQgSmVydXNhbGVtIGNvbWUgaW50byB5b3VyIG1pbmQuCldlIGFyZSBjb25mb3VuZGVkLCBiZWNhdXNlIHdlIGhhdmUgaGVhcmQgcmVwcm9hY2g6IHNoYW1lIGhhdGggY292ZXJlZCBvdXIgZmFjZXM6IGZvciBzdHJhbmdlcnMgYXJlIGNvbWUgaW50byB0aGUgc2FuY3R1YXJpZXMgb2YgdGhlIExPUkQncyBob3VzZS4KV2hlcmVmb3JlLCBiZWhvbGQsIHRoZSBkYXlzIGNvbWUsIHNhaXRoIHRoZSBMT1JELCB0aGF0IEkgd2lsbCBkbyBqdWRnbWVudCB1cG9uIGhlciBncmF2ZW4gaW1hZ2VzOiBhbmQgdGhyb3VnaCBhbGwgaGVyIGxhbmQgdGhlIHdvdW5kZWQgc2hhbGwgZ3JvYW4uClRob3VnaCBCYWJ5bG9uIHNob3VsZCBtb3VudCB1cCB0byBoZWF2ZW4sIGFuZCB0aG91Z2ggc2hlIHNob3VsZCBmb3J0aWZ5IHRoZSBoZWlnaHQgb2YgaGVyIHN0cmVuZ3RoLCB5ZXQgZnJvbSBtZSBzaGFsbCBzcG9pbGVycyBjb21lIHVudG8gaGVyLCBzYWl0aCB0aGUgTE9SRC4KQSBzb3VuZCBvZiBhIGNyeSBjb21ldGggZnJvbSBCYWJ5bG9uLCBhbmQgZ3JlYXQgZGVzdHJ1Y3Rpb24gZnJvbSB0aGUgbGFuZCBvZiB0aGUgQ2hhbGRlYW5zOgpCZWNhdXNlIHRoZSBMT1JEIGhhdGggc3BvaWxlZCBCYWJ5bG9uLCBhbmQgZGVzdHJveWVkIG91dCBvZiBoZXIgdGhlIGdyZWF0IHZvaWNlOyB3aGVuIGhlciB3YXZlcyBkbyByb2FyIGxpa2UgZ3JlYXQgd2F0ZXJzLCBhIG5vaXNlIG9mIHRoZWlyIHZvaWNlIGlzIHV0dGVyZWQ6CkJlY2F1c2UgdGhlIHNwb2lsZXIgaXMgY29tZSB1cG9uIGhlciwgZXZlbiB1cG9uIEJhYnlsb24sIGFuZCBoZXIgbWlnaHR5IG1lbiBhcmUgdGFrZW4sIGV2ZXJ5IG9uZSBvZiB0aGVpciBib3dzIGlzIGJyb2tlbjogZm9yIHRoZSBMT1JEIEdvZCBvZiByZWNvbXBlbmNlcyBzaGFsbCBzdXJlbHkgcmVxdWl0ZS4KQW5kIEkgd2lsbCBtYWtlIGRydW5rIGhlciBwcmluY2VzLCBhbmQgaGVyIHdpc2UgbWVuLCBoZXIgY2FwdGFpbnMsIGFuZCBoZXIgcnVsZXJzLCBhbmQgaGVyIG1pZ2h0eSBtZW46IGFuZCB0aGV5IHNoYWxsIHNsZWVwIGEgcGVycGV0dWFsIHNsZWVwLCBhbmQgbm90IHdha2UsIHNhaXRoIHRoZSBLaW5nLCB3aG9zZSBuYW1lIGlzIHRoZSBMT1JEIG9mIGhvc3RzLgpUaHVzIHNhaXRoIHRoZSBMT1JEIG9mIGhvc3RzOyBUaGUgYnJvYWQgd2FsbHMgb2YgQmFieWxvbiBzaGFsbCBiZSB1dHRlcmx5IGJyb2tlbiwgYW5kIGhlciBoaWdoIGdhdGVzIHNoYWxsIGJlIGJ1cm5lZCB3aXRoIGZpcmU7IGFuZCB0aGUgcGVvcGxlIHNoYWxsIGxhYm91ciBpbiB2YWluLCBhbmQgdGhlIGZvbGsgaW4gdGhlIGZpcmUsIGFuZCB0aGV5IHNoYWxsIGJlIHdlYXJ5LgpUaGUgd29yZCB3aGljaCBKZXJlbWlhaCB0aGUgcHJvcGhldCBjb21tYW5kZWQgU2VyYWlhaCB0aGUgc29uIG9mIE5lcmlhaCwgdGhlIHNvbiBvZiBNYWFzZWlhaCwgd2hlbiBoZSB3ZW50IHdpdGggWmVkZWtpYWggdGhlIGtpbmcgb2YgSnVkYWggaW50byBCYWJ5bG9uIGluIHRoZSBmb3VydGggeWVhciBvZiBoaXMgcmVpZ24uIEFuZCB0aGlzIFNlcmFpYWggd2FzIGEgcXVpZXQgcHJpbmNlLgpTbyBKZXJlbWlhaCB3cm90ZSBpbiBhIGJvb2sgYWxsIHRoZSBldmlsIHRoYXQgc2hvdWxkIGNvbWUgdXBvbiBCYWJ5bG9uLCBldmVuIGFsbCB0aGVzZSB3b3JkcyB0aGF0IGFyZSB3cml0dGVuIGFnYWluc3QgQmFieWxvbi4KQW5kIEplcmVtaWFoIHNhaWQgdG8gU2VyYWlhaCwgV2hlbiB0aG91IGNvbWVzdCB0byBCYWJ5bG9uLCBhbmQgc2hhbHQgc2VlLCBhbmQgc2hhbHQgcmVhZCBhbGwgdGhlc2Ugd29yZHM7ClRoZW4gc2hhbHQgdGhvdSBzYXksIE8gTE9SRCwgdGhvdSBoYXN0IHNwb2tlbiBhZ2FpbnN0IHRoaXMgcGxhY2UsIHRvIGN1dCBpdCBvZmYsIHRoYXQgbm9uZSBzaGFsbCByZW1haW4gaW4gaXQsIG5laXRoZXIgbWFuIG5vciBiZWFzdCwgYnV0IHRoYXQgaXQgc2hhbGwgYmUgZGVzb2xhdGUgZm9yIGV2ZXIuCkFuZCBpdCBzaGFsbCBiZSwgd2hlbiB0aG91IGhhc3QgbWFkZSBhbiBlbmQgb2YgcmVhZGluZyB0aGlzIGJvb2ssIHRoYXQgdGhvdSBzaGFsdCBiaW5kIGEgc3RvbmUgdG8gaXQsIGFuZCBjYXN0IGl0IGludG8gdGhlIG1pZHN0IG9mIEV1cGhyYXRlczoKQW5kIHRob3Ugc2hhbHQgc2F5LCBUaHVzIHNoYWxsIEJhYnlsb24gc2luaywgYW5kIHNoYWxsIG5vdCByaXNlIGZyb20gdGhlIGV2aWwgdGhhdCBJIHdpbGwgYnJpbmcgdXBvbiBoZXI6IGFuZCB0aGV5IHNoYWxsIGJlIHdlYXJ5LiBUaHVzIGZhciBhcmUgdGhlIHdvcmRzIG9mIEplcmVtaWFoLgpaZWRla2lhaCB3YXMgb25lIGFuZCB0d2VudHkgeWVhcnMgb2xkIHdoZW4gaGUgYmVnYW4gdG8gcmVpZ24sIGFuZCBoZSByZWlnbmVkIGVsZXZlbiB5ZWFycyBpbiBKZXJ1c2FsZW0uIEFuZCBoaXMgbW90aGVyJ3MgbmFtZSB3YXMgSGFtdXRhbCB0aGUgZGF1Z2h0ZXIgb2YgSmVyZW1pYWggb2YgTGlibmFoLgpBbmQgaGUgZGlkIHRoYXQgd2hpY2ggd2FzIGV2aWwgaW4gdGhlIGV5ZXMgb2YgdGhlIExPUkQsIGFjY29yZGluZyB0byBhbGwgdGhhdCBKZWhvaWFraW0gaGFkIGRvbmUuCkZvciB0aHJvdWdoIHRoZSBhbmdlciBvZiB0aGUgTE9SRCBpdCBjYW1lIHRvIHBhc3MgaW4gSmVydXNhbGVtIGFuZCBKdWRhaCwgdGlsbCBoZSBoYWQgY2FzdCB0aGVtIG91dCBmcm9tIGhpcyBwcmVzZW5jZSwgdGhhdCBaZWRla2lhaCByZWJlbGxlZCBhZ2FpbnN0IHRoZSBraW5nIG9mIEJhYnlsb24uCkFuZCBpdCBjYW1lIHRvIHBhc3MgaW4gdGhlIG5pbnRoIHllYXIgb2YgaGlzIHJlaWduLCBpbiB0aGUgdGVudGggbW9udGgsIGluIHRoZSB0ZW50aCBkYXkgb2YgdGhlIG1vbnRoLCB0aGF0IE5lYnVjaGFkcmV6emFyIGtpbmcgb2YgQmFieWxvbiBjYW1lLCBoZSBhbmQgYWxsIGhpcyBhcm15LCBhZ2FpbnN0IEplcnVzYWxlbSwgYW5kIHBpdGNoZWQgYWdhaW5zdCBpdCwgYW5kIGJ1aWx0IGZvcnRzIGFnYWluc3QgaXQgcm91bmQgYWJvdXQuClNvIHRoZSBjaXR5IHdhcyBiZXNpZWdlZCB1bnRvIHRoZSBlbGV2ZW50aCB5ZWFyIG9mIGtpbmcgWmVkZWtpYWguCkFuZCBpbiB0aGUgZm91cnRoIG1vbnRoLCBpbiB0aGUgbmludGggZGF5IG9mIHRoZSBtb250aCwgdGhlIGZhbWluZSB3YXMgc29yZSBpbiB0aGUgY2l0eSwgc28gdGhhdCB0aGVyZSB3YXMgbm8gYnJlYWQgZm9yIHRoZSBwZW9wbGUgb2YgdGhlIGxhbmQuClRoZW4gdGhlIGNpdHkgd2FzIGJyb2tlbiB1cCwgYW5kIGFsbCB0aGUgbWVuIG9mIHdhciBmbGVkLCBhbmQgd2VudCBmb3J0aCBvdXQgb2YgdGhlIGNpdHkgYnkgbmlnaHQgYnkgdGhlIHdheSBvZiB0aGUgZ2F0ZSBiZXR3ZWVuIHRoZSB0d28gd2FsbHMsIHdoaWNoIHdhcyBieSB0aGUga2luZydzIGdhcmRlbjsgKG5vdyB0aGUgQ2hhbGRlYW5zIHdlcmUgYnkgdGhlIGNpdHkgcm91bmQgYWJvdXQ6KSBhbmQgdGhleSB3ZW50IGJ5IHRoZSB3YXkgb2YgdGhlIHBsYWluLgpCdXQgdGhlIGFybXkgb2YgdGhlIENoYWxkZWFucyBwdXJzdWVkIGFmdGVyIHRoZSBraW5nLCBhbmQgb3ZlcnRvb2sgWmVkZWtpYWggaW4gdGhlIHBsYWlucyBvZiBKZXJpY2hvOyBhbmQgYWxsIGhpcyBhcm15IHdhcyBzY2F0dGVyZWQgZnJvbSBoaW0uClRoZW4gdGhleSB0b29rIHRoZSBraW5nLCBhbmQgY2FycmllZCBoaW0gdXAgdW50byB0aGUga2luZyBvZiBCYWJ5bG9uIHRvIFJpYmxhaCBpbiB0aGUgbGFuZCBvZiBIYW1hdGg7IHdoZXJlIGhlIGdhdmUganVkZ21lbnQgdXBvbiBoaW0uCkFuZCB0aGUga2luZyBvZiBCYWJ5bG9uIHNsZXcgdGhlIHNvbnMgb2YgWmVkZWtpYWggYmVmb3JlIGhpcyBleWVzOiBoZSBzbGV3IGFsc28gYWxsIHRoZSBwcmluY2VzIG9mIEp1ZGFoIGluIFJpYmxhaC4KVGhlbiBoZSBwdXQgb3V0IHRoZSBleWVzIG9mIFplZGVraWFoOyBhbmQgdGhlIGtpbmcgb2YgQmFieWxvbiBib3VuZCBoaW0gaW4gY2hhaW5zLCBhbmQgY2FycmllZCBoaW0gdG8gQmFieWxvbiwgYW5kIHB1dCBoaW0gaW4gcHJpc29uIHRpbGwgdGhlIGRheSBvZiBoaXMgZGVhdGguCk5vdyBpbiB0aGUgZmlmdGggbW9udGgsIGluIHRoZSB0ZW50aCBkYXkgb2YgdGhlIG1vbnRoLCB3aGljaCB3YXMgdGhlIG5pbmV0ZWVudGggeWVhciBvZiBOZWJ1Y2hhZHJlenphciBraW5nIG9mIEJhYnlsb24sIGNhbWUgTmVidXphcmFkYW4sIGNhcHRhaW4gb2YgdGhlIGd1YXJkLCB3aGljaCBzZXJ2ZWQgdGhlIGtpbmcgb2YgQmFieWxvbiwgaW50byBKZXJ1c2FsZW0sCkFuZCBidXJuZWQgdGhlIGhvdXNlIG9mIHRoZSBMT1JELCBhbmQgdGhlIGtpbmcncyBob3VzZTsgYW5kIGFsbCB0aGUgaG91c2VzIG9mIEplcnVzYWxlbSwgYW5kIGFsbCB0aGUgaG91c2VzIG9mIHRoZSBncmVhdCBtZW4sIGJ1cm5lZCBoZSB3aXRoIGZpcmU6CkFuZCBhbGwgdGhlIGFybXkgb2YgdGhlIENoYWxkZWFucywgdGhhdCB3ZXJlIHdpdGggdGhlIGNhcHRhaW4gb2YgdGhlIGd1YXJkLCBicmFrZSBkb3duIGFsbCB0aGUgd2FsbHMgb2YgSmVydXNhbGVtIHJvdW5kIGFib3V0LgpUaGVuIE5lYnV6YXJhZGFuIHRoZSBjYXB0YWluIG9mIHRoZSBndWFyZCBjYXJyaWVkIGF3YXkgY2FwdGl2ZSBjZXJ0YWluIG9mIHRoZSBwb29yIG9mIHRoZSBwZW9wbGUsIGFuZCB0aGUgcmVzaWR1ZSBvZiB0aGUgcGVvcGxlIHRoYXQgcmVtYWluZWQgaW4gdGhlIGNpdHksIGFuZCB0aG9zZSB0aGF0IGZlbGwgYXdheSwgdGhhdCBmZWxsIHRvIHRoZSBraW5nIG9mIEJhYnlsb24sIGFuZCB0aGUgcmVzdCBvZiB0aGUgbXVsdGl0dWRlLgpCdXQgTmVidXphcmFkYW4gdGhlIGNhcHRhaW4gb2YgdGhlIGd1YXJkIGxlZnQgY2VydGFpbiBvZiB0aGUgcG9vciBvZiB0aGUgbGFuZCBmb3IgdmluZWRyZXNzZXJzIGFuZCBmb3IgaHVzYmFuZG1lbi4KQWxzbyB0aGUgcGlsbGFycyBvZiBicmFzcyB0aGF0IHdlcmUgaW4gdGhlIGhvdXNlIG9mIHRoZSBMT1JELCBhbmQgdGhlIGJhc2VzLCBhbmQgdGhlIGJyYXNlbiBzZWEgdGhhdCB3YXMgaW4gdGhlIGhvdXNlIG9mIHRoZSBMT1JELCB0aGUgQ2hhbGRlYW5zIGJyYWtlLCBhbmQgY2FycmllZCBhbGwgdGhlIGJyYXNzIG9mIHRoZW0gdG8gQmFieWxvbi4KVGhlIGNhbGRyb25zIGFsc28sIGFuZCB0aGUgc2hvdmVscywgYW5kIHRoZSBzbnVmZmVycywgYW5kIHRoZSBib3dscywgYW5kIHRoZSBzcG9vbnMsIGFuZCBhbGwgdGhlIHZlc3NlbHMgb2YgYnJhc3Mgd2hlcmV3aXRoIHRoZXkgbWluaXN0ZXJlZCwgdG9vayB0aGV5IGF3YXkuCkFuZCB0aGUgYmFzb25zLCBhbmQgdGhlIGZpcmVwYW5zLCBhbmQgdGhlIGJvd2xzLCBhbmQgdGhlIGNhbGRyb25zLCBhbmQgdGhlIGNhbmRsZXN0aWNrcywgYW5kIHRoZSBzcG9vbnMsIGFuZCB0aGUgY3VwczsgdGhhdCB3aGljaCB3YXMgb2YgZ29sZCBpbiBnb2xkLCBhbmQgdGhhdCB3aGljaCB3YXMgb2Ygc2lsdmVyIGluIHNpbHZlciwgdG9vayB0aGUgY2FwdGFpbiBvZiB0aGUgZ3VhcmQgYXdheS4KVGhlIHR3byBwaWxsYXJzLCBvbmUgc2VhLCBhbmQgdHdlbHZlIGJyYXNlbiBidWxscyB0aGF0IHdlcmUgdW5kZXIgdGhlIGJhc2VzLCB3aGljaCBraW5nIFNvbG9tb24gaGFkIG1hZGUgaW4gdGhlIGhvdXNlIG9mIHRoZSBMT1JEOiB0aGUgYnJhc3Mgb2YgYWxsIHRoZXNlIHZlc3NlbHMgd2FzIHdpdGhvdXQgd2VpZ2h0LgpBbmQgY29uY2VybmluZyB0aGUgcGlsbGFycywgdGhlIGhlaWdodCBvZiBvbmUgcGlsbGFyIHdhcyBlaWdodGVlbiBjdWJpdHM7IGFuZCBhIGZpbGxldCBvZiB0d2VsdmUgY3ViaXRzIGRpZCBjb21wYXNzIGl0OyBhbmQgdGhlIHRoaWNrbmVzcyB0aGVyZW9mIHdhcyBmb3VyIGZpbmdlcnM6IGl0IHdhcyBob2xsb3cuCkFuZCBhIGNoYXBpdGVyIG9mIGJyYXNzIHdhcyB1cG9uIGl0OyBhbmQgdGhlIGhlaWdodCBvZiBvbmUgY2hhcGl0ZXIgd2FzIGZpdmUgY3ViaXRzLCB3aXRoIG5ldHdvcmsgYW5kIHBvbWVncmFuYXRlcyB1cG9uIHRoZSBjaGFwaXRlcnMgcm91bmQgYWJvdXQsIGFsbCBvZiBicmFzcy4gVGhlIHNlY29uZCBwaWxsYXIgYWxzbyBhbmQgdGhlIHBvbWVncmFuYXRlcyB3ZXJlIGxpa2UgdW50byB0aGVzZS4KQW5kIHRoZXJlIHdlcmUgbmluZXR5IGFuZCBzaXggcG9tZWdyYW5hdGVzIG9uIGEgc2lkZTsgYW5kIGFsbCB0aGUgcG9tZWdyYW5hdGVzIHVwb24gdGhlIG5ldHdvcmsgd2VyZSBhbiBodW5kcmVkIHJvdW5kIGFib3V0LgpBbmQgdGhlIGNhcHRhaW4gb2YgdGhlIGd1YXJkIHRvb2sgU2VyYWlhaCB0aGUgY2hpZWYgcHJpZXN0LCBhbmQgWmVwaGFuaWFoIHRoZSBzZWNvbmQgcHJpZXN0LCBhbmQgdGhlIHRocmVlIGtlZXBlcnMgb2YgdGhlIGRvb3I6CkhlIHRvb2sgYWxzbyBvdXQgb2YgdGhlIGNpdHkgYW4gZXVudWNoLCB3aGljaCBoYWQgdGhlIGNoYXJnZSBvZiB0aGUgbWVuIG9mIHdhcjsgYW5kIHNldmVuIG1lbiBvZiB0aGVtIHRoYXQgd2VyZSBuZWFyIHRoZSBraW5nJ3MgcGVyc29uLCB3aGljaCB3ZXJlIGZvdW5kIGluIHRoZSBjaXR5OyBhbmQgdGhlIHByaW5jaXBhbCBzY3JpYmUgb2YgdGhlIGhvc3QsIHdobyBtdXN0ZXJlZCB0aGUgcGVvcGxlIG9mIHRoZSBsYW5kOyBhbmQgdGhyZWVzY29yZSBtZW4gb2YgdGhlIHBlb3BsZSBvZiB0aGUgbGFuZCwgdGhhdCB3ZXJlIGZvdW5kIGluIHRoZSBtaWRzdCBvZiB0aGUgY2l0eS4KU28gTmVidXphcmFkYW4gdGhlIGNhcHRhaW4gb2YgdGhlIGd1YXJkIHRvb2sgdGhlbSwgYW5kIGJyb3VnaHQgdGhlbSB0byB0aGUga2luZyBvZiBCYWJ5bG9uIHRvIFJpYmxhaC4KQW5kIHRoZSBraW5nIG9mIEJhYnlsb24gc21vdGUgdGhlbSwgYW5kIHB1dCB0aGVtIHRvIGRlYXRoIGluIFJpYmxhaCBpbiB0aGUgbGFuZCBvZiBIYW1hdGguIFRodXMgSnVkYWggd2FzIGNhcnJpZWQgYXdheSBjYXB0aXZlIG91dCBvZiBoaXMgb3duIGxhbmQuClRoaXMgaXMgdGhlIHBlb3BsZSB3aG9tIE5lYnVjaGFkcmV6emFyIGNhcnJpZWQgYXdheSBjYXB0aXZlOiBpbiB0aGUgc2V2ZW50aCB5ZWFyIHRocmVlIHRob3VzYW5kIEpld3MgYW5kIHRocmVlIGFuZCB0d2VudHk6CkluIHRoZSBlaWdodGVlbnRoIHllYXIgb2YgTmVidWNoYWRyZXp6YXIgaGUgY2FycmllZCBhd2F5IGNhcHRpdmUgZnJvbSBKZXJ1c2FsZW0gZWlnaHQgaHVuZHJlZCB0aGlydHkgYW5kIHR3byBwZXJzb25zOgpJbiB0aGUgdGhyZWUgYW5kIHR3ZW50aWV0aCB5ZWFyIG9mIE5lYnVjaGFkcmV6emFyIE5lYnV6YXJhZGFuIHRoZSBjYXB0YWluIG9mIHRoZSBndWFyZCBjYXJyaWVkIGF3YXkgY2FwdGl2ZSBvZiB0aGUgSmV3cyBzZXZlbiBodW5kcmVkIGZvcnR5IGFuZCBmaXZlIHBlcnNvbnM6IGFsbCB0aGUgcGVyc29ucyB3ZXJlIGZvdXIgdGhvdXNhbmQgYW5kIHNpeCBodW5kcmVkLgpBbmQgaXQgY2FtZSB0byBwYXNzIGluIHRoZSBzZXZlbiBhbmQgdGhpcnRpZXRoIHllYXIgb2YgdGhlIGNhcHRpdml0eSBvZiBKZWhvaWFjaGluIGtpbmcgb2YgSnVkYWgsIGluIHRoZSB0d2VsZnRoIG1vbnRoLCBpbiB0aGUgZml2ZSBhbmQgdHdlbnRpZXRoIGRheSBvZiB0aGUgbW9udGgsIHRoYXQgRXZpbG1lcm9kYWNoIGtpbmcgb2YgQmFieWxvbiBpbiB0aGUgZmlyc3QgeWVhciBvZiBoaXMgcmVpZ24gbGlmdGVkIHVwIHRoZSBoZWFkIG9mIEplaG9pYWNoaW4ga2luZyBvZiBKdWRhaCwgYW5kIGJyb3VnaHQgaGltIGZvcnRoIG91dCBvZiBwcmlzb24uCkFuZCBzcGFrZSBraW5kbHkgdW50byBoaW0sIGFuZCBzZXQgaGlzIHRocm9uZSBhYm92ZSB0aGUgdGhyb25lIG9mIHRoZSBraW5ncyB0aGF0IHdlcmUgd2l0aCBoaW0gaW4gQmFieWxvbiwKQW5kIGNoYW5nZWQgaGlzIHByaXNvbiBnYXJtZW50czogYW5kIGhlIGRpZCBjb250aW51YWxseSBlYXQgYnJlYWQgYmVmb3JlIGhpbSBhbGwgdGhlIGRheXMgb2YgaGlzIGxpZmUuCkFuZCBmb3IgaGlzIGRpZXQsIHRoZXJlIHdhcyBhIGNvbnRpbnVhbCBkaWV0IGdpdmVuIGhpbSBvZiB0aGUga2luZyBvZiBCYWJ5bG9uLCBldmVyeSBkYXkgYSBwb3J0aW9uIHVudGlsIHRoZSBkYXkgb2YgaGlzIGRlYXRoLCBhbGwgdGhlIGRheXMgb2YgaGlzIGxpZmUuCkhvdyBkb3RoIHRoZSBjaXR5IHNpdCBzb2xpdGFyeSwgdGhhdCB3YXMgZnVsbCBvZiBwZW9wbGUhIGhvdyBpcyBzaGUgYmVjb21lIGFzIGEgd2lkb3chIHNoZSB0aGF0IHdhcyBncmVhdCBhbW9uZyB0aGUgbmF0aW9ucywgYW5kIHByaW5jZXNzIGFtb25nIHRoZSBwcm92aW5jZXMsIGhvdyBpcyBzaGUgYmVjb21lIHRyaWJ1dGFyeSEKU2hlIHdlZXBldGggc29yZSBpbiB0aGUgbmlnaHQsIGFuZCBoZXIgdGVhcnMgYXJlIG9uIGhlciBjaGVla3M6IGFtb25nIGFsbCBoZXIgbG92ZXJzIHNoZSBoYXRoIG5vbmUgdG8gY29tZm9ydCBoZXI6IGFsbCBoZXIgZnJpZW5kcyBoYXZlIGRlYWx0IHRyZWFjaGVyb3VzbHkgd2l0aCBoZXIsIHRoZXkgYXJlIGJlY29tZSBoZXIgZW5lbWllcy4KSnVkYWggaXMgZ29uZSBpbnRvIGNhcHRpdml0eSBiZWNhdXNlIG9mIGFmZmxpY3Rpb24sIGFuZCBiZWNhdXNlIG9mIGdyZWF0IHNlcnZpdHVkZTogc2hlIGR3ZWxsZXRoIGFtb25nIHRoZSBoZWF0aGVuLCBzaGUgZmluZGV0aCBubyByZXN0OiBhbGwgaGVyIHBlcnNlY3V0b3JzIG92ZXJ0b29rIGhlciBiZXR3ZWVuIHRoZSBzdHJhaXRzLgpUaGUgd2F5cyBvZiBaaW9uIGRvIG1vdXJuLCBiZWNhdXNlIG5vbmUgY29tZSB0byB0aGUgc29sZW1uIGZlYXN0czogYWxsIGhlciBnYXRlcyBhcmUgZGVzb2xhdGU6IGhlciBwcmllc3RzIHNpZ2gsIGhlciB2aXJnaW5zIGFyZSBhZmZsaWN0ZWQsIGFuZCBzaGUgaXMgaW4gYml0dGVybmVzcy4KSGVyIGFkdmVyc2FyaWVzIGFyZSB0aGUgY2hpZWYsIGhlciBlbmVtaWVzIHByb3NwZXI7IGZvciB0aGUgTE9SRCBoYXRoIGFmZmxpY3RlZCBoZXIgZm9yIHRoZSBtdWx0aXR1ZGUgb2YgaGVyIHRyYW5zZ3Jlc3Npb25zOiBoZXIgY2hpbGRyZW4gYXJlIGdvbmUgaW50byBjYXB0aXZpdHkgYmVmb3JlIHRoZSBlbmVteS4KQW5kIGZyb20gdGhlIGRhdWdodGVyIG9mIFppb24gYWxsIGhlciBiZWF1dHkgaXMgZGVwYXJ0ZWQ6IGhlciBwcmluY2VzIGFyZSBiZWNvbWUgbGlrZSBoYXJ0cyB0aGF0IGZpbmQgbm8gcGFzdHVyZSwgYW5kIHRoZXkgYXJlIGdvbmUgd2l0aG91dCBzdHJlbmd0aCBiZWZvcmUgdGhlIHB1cnN1ZXIuCkplcnVzYWxlbSByZW1lbWJlcmVkIGluIHRoZSBkYXlzIG9mIGhlciBhZmZsaWN0aW9uIGFuZCBvZiBoZXIgbWlzZXJpZXMgYWxsIGhlciBwbGVhc2FudCB0aGluZ3MgdGhhdCBzaGUgaGFkIGluIHRoZSBkYXlzIG9mIG9sZCwgd2hlbiBoZXIgcGVvcGxlIGZlbGwgaW50byB0aGUgaGFuZCBvZiB0aGUgZW5lbXksIGFuZCBub25lIGRpZCBoZWxwIGhlcjogdGhlIGFkdmVyc2FyaWVzIHNhdyBoZXIsIGFuZCBkaWQgbW9jayBhdCBoZXIgc2FiYmF0aHMuCkplcnVzYWxlbSBoYXRoIGdyaWV2b3VzbHkgc2lubmVkOyB0aGVyZWZvcmUgc2hlIGlzIHJlbW92ZWQ6IGFsbCB0aGF0IGhvbm91cmVkIGhlciBkZXNwaXNlIGhlciwgYmVjYXVzZSB0aGV5IGhhdmUgc2VlbiBoZXIgbmFrZWRuZXNzOiB5ZWEsIHNoZSBzaWdoZXRoLCBhbmQgdHVybmV0aCBiYWNrd2FyZC4KSGVyIGZpbHRoaW5lc3MgaXMgaW4gaGVyIHNraXJ0czsgc2hlIHJlbWVtYmVyZXRoIG5vdCBoZXIgbGFzdCBlbmQ7IHRoZXJlZm9yZSBzaGUgY2FtZSBkb3duIHdvbmRlcmZ1bGx5OiBzaGUgaGFkIG5vIGNvbWZvcnRlci4gTyBMT1JELCBiZWhvbGQgbXkgYWZmbGljdGlvbjogZm9yIHRoZSBlbmVteSBoYXRoIG1hZ25pZmllZCBoaW1zZWxmLgpUaGUgYWR2ZXJzYXJ5IGhhdGggc3ByZWFkIG91dCBoaXMgaGFuZCB1cG9uIGFsbCBoZXIgcGxlYXNhbnQgdGhpbmdzOiBmb3Igc2hlIGhhdGggc2VlbiB0aGF0IHRoZSBoZWF0aGVuIGVudGVyZWQgaW50byBoZXIgc2FuY3R1YXJ5LCB3aG9tIHRob3UgZGlkc3QgY29tbWFuZCB0aGF0IHRoZXkgc2hvdWxkIG5vdCBlbnRlciBpbnRvIHRoeSBjb25ncmVnYXRpb24uCkFsbCBoZXIgcGVvcGxlIHNpZ2gsIHRoZXkgc2VlayBicmVhZDsgdGhleSBoYXZlIGdpdmVuIHRoZWlyIHBsZWFzYW50IHRoaW5ncyBmb3IgbWVhdCB0byByZWxpZXZlIHRoZSBzb3VsOiBzZWUsIE8gTE9SRCwgYW5kIGNvbnNpZGVyOyBmb3IgSSBhbSBiZWNvbWUgdmlsZS4KSXMgaXQgbm90aGluZyB0byB5b3UsIGFsbCB5ZSB0aGF0IHBhc3MgYnk/IGJlaG9sZCwgYW5kIHNlZSBpZiB0aGVyZSBiZSBhbnkgc29ycm93IGxpa2UgdW50byBteSBzb3Jyb3csIHdoaWNoIGlzIGRvbmUgdW50byBtZSwgd2hlcmV3aXRoIHRoZSBMT1JEIGhhdGggYWZmbGljdGVkIG1lIGluIHRoZSBkYXkgb2YgaGlzIGZpZXJjZSBhbmdlci4KRnJvbSBhYm92ZSBoYXRoIGhlIHNlbnQgZmlyZSBpbnRvIG15IGJvbmVzLCBhbmQgaXQgcHJldmFpbGV0aCBhZ2FpbnN0IHRoZW06IGhlIGhhdGggc3ByZWFkIGEgbmV0IGZvciBteSBmZWV0LCBoZSBoYXRoIHR1cm5lZCBtZSBiYWNrOiBoZSBoYXRoIG1hZGUgbWUgZGVzb2xhdGUgYW5kIGZhaW50IGFsbCB0aGUgZGF5LgpUaGUgeW9rZSBvZiBteSB0cmFuc2dyZXNzaW9ucyBpcyBib3VuZCBieSBoaXMgaGFuZDogdGhleSBhcmUgd3JlYXRoZWQsIGFuZCBjb21lIHVwIHVwb24gbXkgbmVjazogaGUgaGF0aCBtYWRlIG15IHN0cmVuZ3RoIHRvIGZhbGwsIHRoZSBMT1JEIGhhdGggZGVsaXZlcmVkIG1lIGludG8gdGhlaXIgaGFuZHMsIGZyb20gd2hvbSBJIGFtIG5vdCBhYmxlIHRvIHJpc2UgdXAuClRoZSBMT1JEIGhhdGggdHJvZGRlbiB1bmRlciBmb290IGFsbCBteSBtaWdodHkgbWVuIGluIHRoZSBtaWRzdCBvZiBtZTogaGUgaGF0aCBjYWxsZWQgYW4gYXNzZW1ibHkgYWdhaW5zdCBtZSB0byBjcnVzaCBteSB5b3VuZyBtZW46IHRoZSBMT1JEIGhhdGggdHJvZGRlbiB0aGUgdmlyZ2luLCB0aGUgZGF1Z2h0ZXIgb2YgSnVkYWgsIGFzIGluIGEgd2luZXByZXNzLgpGb3IgdGhlc2UgdGhpbmdzIEkgd2VlcDsgbWluZSBleWUsIG1pbmUgZXllIHJ1bm5ldGggZG93biB3aXRoIHdhdGVyLCBiZWNhdXNlIHRoZSBjb21mb3J0ZXIgdGhhdCBzaG91bGQgcmVsaWV2ZSBteSBzb3VsIGlzIGZhciBmcm9tIG1lOiBteSBjaGlsZHJlbiBhcmUgZGVzb2xhdGUsIGJlY2F1c2UgdGhlIGVuZW15IHByZXZhaWxlZC4KWmlvbiBzcHJlYWRldGggZm9ydGggaGVyIGhhbmRzLCBhbmQgdGhlcmUgaXMgbm9uZSB0byBjb21mb3J0IGhlcjogdGhlIExPUkQgaGF0aCBjb21tYW5kZWQgY29uY2VybmluZyBKYWNvYiwgdGhhdCBoaXMgYWR2ZXJzYXJpZXMgc2hvdWxkIGJlIHJvdW5kIGFib3V0IGhpbTogSmVydXNhbGVtIGlzIGFzIGEgbWVuc3RydW91cyB3b21hbiBhbW9uZyB0aGVtLgpUaGUgTE9SRCBpcyByaWdodGVvdXM7IGZvciBJIGhhdmUgcmViZWxsZWQgYWdhaW5zdCBoaXMgY29tbWFuZG1lbnQ6IGhlYXIsIEkgcHJheSB5b3UsIGFsbCBwZW9wbGUsIGFuZCBiZWhvbGQgbXkgc29ycm93OiBteSB2aXJnaW5zIGFuZCBteSB5b3VuZyBtZW4gYXJlIGdvbmUgaW50byBjYXB0aXZpdHkuCkkgY2FsbGVkIGZvciBteSBsb3ZlcnMsIGJ1dCB0aGV5IGRlY2VpdmVkIG1lOiBteSBwcmllc3RzIGFuZCBtaW5lIGVsZGVycyBnYXZlIHVwIHRoZSBnaG9zdCBpbiB0aGUgY2l0eSwgd2hpbGUgdGhleSBzb3VnaHQgdGhlaXIgbWVhdCB0byByZWxpZXZlIHRoZWlyIHNvdWxzLgpCZWhvbGQsIE8gTE9SRDsgZm9yIEkgYW0gaW4gZGlzdHJlc3M6IG15IGJvd2VscyBhcmUgdHJvdWJsZWQ7IG1pbmUgaGVhcnQgaXMgdHVybmVkIHdpdGhpbiBtZTsgZm9yIEkgaGF2ZSBncmlldm91c2x5IHJlYmVsbGVkOiBhYnJvYWQgdGhlIHN3b3JkIGJlcmVhdmV0aCwgYXQgaG9tZSB0aGVyZSBpcyBhcyBkZWF0aC4KVGhleSBoYXZlIGhlYXJkIHRoYXQgSSBzaWdoOiB0aGVyZSBpcyBub25lIHRvIGNvbWZvcnQgbWU6IGFsbCBtaW5lIGVuZW1pZXMgaGF2ZSBoZWFyZCBvZiBteSB0cm91YmxlOyB0aGV5IGFyZSBnbGFkIHRoYXQgdGhvdSBoYXN0IGRvbmUgaXQ6IHRob3Ugd2lsdCBicmluZyB0aGUgZGF5IHRoYXQgdGhvdSBoYXN0IGNhbGxlZCwgYW5kIHRoZXkgc2hhbGwgYmUgbGlrZSB1bnRvIG1lLgpMZXQgYWxsIHRoZWlyIHdpY2tlZG5lc3MgY29tZSBiZWZvcmUgdGhlZTsgYW5kIGRvIHVudG8gdGhlbSwgYXMgdGhvdSBoYXN0IGRvbmUgdW50byBtZSBmb3IgYWxsIG15IHRyYW5zZ3Jlc3Npb25zOiBmb3IgbXkgc2lnaHMgYXJlIG1hbnksIGFuZCBteSBoZWFydCBpcyBmYWludC4KSG93IGhhdGggdGhlIExPUkQgY292ZXJlZCB0aGUgZGF1Z2h0ZXIgb2YgWmlvbiB3aXRoIGEgY2xvdWQgaW4gaGlzIGFuZ2VyLCBhbmQgY2FzdCBkb3duIGZyb20gaGVhdmVuIHVudG8gdGhlIGVhcnRoIHRoZSBiZWF1dHkgb2YgSXNyYWVsLCBhbmQgcmVtZW1iZXJlZCBub3QgaGlzIGZvb3RzdG9vbCBpbiB0aGUgZGF5IG9mIGhpcyBhbmdlciEKVGhlIExPUkQgaGF0aCBzd2FsbG93ZWQgdXAgYWxsIHRoZSBoYWJpdGF0aW9ucyBvZiBKYWNvYiwgYW5kIGhhdGggbm90IHBpdGllZDogaGUgaGF0aCB0aHJvd24gZG93biBpbiBoaXMgd3JhdGggdGhlIHN0cm9uZyBob2xkcyBvZiB0aGUgZGF1Z2h0ZXIgb2YgSnVkYWg7IGhlIGhhdGggYnJvdWdodCB0aGVtIGRvd24gdG8gdGhlIGdyb3VuZDogaGUgaGF0aCBwb2xsdXRlZCB0aGUga2luZ2RvbSBhbmQgdGhlIHByaW5jZXMgdGhlcmVvZi4KSGUgaGF0aCBjdXQgb2ZmIGluIGhpcyBmaWVyY2UgYW5nZXIgYWxsIHRoZSBob3JuIG9mIElzcmFlbDogaGUgaGF0aCBkcmF3biBiYWNrIGhpcyByaWdodCBoYW5kIGZyb20gYmVmb3JlIHRoZSBlbmVteSwgYW5kIGhlIGJ1cm5lZCBhZ2FpbnN0IEphY29iIGxpa2UgYSBmbGFtaW5nIGZpcmUsIHdoaWNoIGRldm91cmV0aCByb3VuZCBhYm91dC4KSGUgaGF0aCBiZW50IGhpcyBib3cgbGlrZSBhbiBlbmVteTogaGUgc3Rvb2Qgd2l0aCBoaXMgcmlnaHQgaGFuZCBhcyBhbiBhZHZlcnNhcnksIGFuZCBzbGV3IGFsbCB0aGF0IHdlcmUgcGxlYXNhbnQgdG8gdGhlIGV5ZSBpbiB0aGUgdGFiZXJuYWNsZSBvZiB0aGUgZGF1Z2h0ZXIgb2YgWmlvbjogaGUgcG91cmVkIG91dCBoaXMgZnVyeSBsaWtlIGZpcmUuClRoZSBMT1JEIHdhcyBhcyBhbiBlbmVteTogaGUgaGF0aCBzd2FsbG93ZWQgdXAgSXNyYWVsLCBoZSBoYXRoIHN3YWxsb3dlZCB1cCBhbGwgaGVyIHBhbGFjZXM6IGhlIGhhdGggZGVzdHJveWVkIGhpcyBzdHJvbmcgaG9sZHMsIGFuZCBoYXRoIGluY3JlYXNlZCBpbiB0aGUgZGF1Z2h0ZXIgb2YgSnVkYWggbW91cm5pbmcgYW5kIGxhbWVudGF0aW9uLgpBbmQgaGUgaGF0aCB2aW9sZW50bHkgdGFrZW4gYXdheSBoaXMgdGFiZXJuYWNsZSwgYXMgaWYgaXQgd2VyZSBvZiBhIGdhcmRlbjogaGUgaGF0aCBkZXN0cm95ZWQgaGlzIHBsYWNlcyBvZiB0aGUgYXNzZW1ibHk6IHRoZSBMT1JEIGhhdGggY2F1c2VkIHRoZSBzb2xlbW4gZmVhc3RzIGFuZCBzYWJiYXRocyB0byBiZSBmb3Jnb3R0ZW4gaW4gWmlvbiwgYW5kIGhhdGggZGVzcGlzZWQgaW4gdGhlIGluZGlnbmF0aW9uIG9mIGhpcyBhbmdlciB0aGUga2luZyBhbmQgdGhlIHByaWVzdC4KVGhlIExPUkQgaGF0aCBjYXN0IG9mZiBoaXMgYWx0YXIsIGhlIGhhdGggYWJob3JyZWQgaGlzIHNhbmN0dWFyeSwgaGUgaGF0aCBnaXZlbiB1cCBpbnRvIHRoZSBoYW5kIG9mIHRoZSBlbmVteSB0aGUgd2FsbHMgb2YgaGVyIHBhbGFjZXM7IHRoZXkgaGF2ZSBtYWRlIGEgbm9pc2UgaW4gdGhlIGhvdXNlIG9mIHRoZSBMT1JELCBhcyBpbiB0aGUgZGF5IG9mIGEgc29sZW1uIGZlYXN0LgpUaGUgTE9SRCBoYXRoIHB1cnBvc2VkIHRvIGRlc3Ryb3kgdGhlIHdhbGwgb2YgdGhlIGRhdWdodGVyIG9mIFppb246IGhlIGhhdGggc3RyZXRjaGVkIG91dCBhIGxpbmUsIGhlIGhhdGggbm90IHdpdGhkcmF3biBoaXMgaGFuZCBmcm9tIGRlc3Ryb3lpbmc6IHRoZXJlZm9yZSBoZSBtYWRlIHRoZSByYW1wYXJ0IGFuZCB0aGUgd2FsbCB0byBsYW1lbnQ7IHRoZXkgbGFuZ3Vpc2hlZCB0b2dldGhlci4KSGVyIGdhdGVzIGFyZSBzdW5rIGludG8gdGhlIGdyb3VuZDsgaGUgaGF0aCBkZXN0cm95ZWQgYW5kIGJyb2tlbiBoZXIgYmFyczogaGVyIGtpbmcgYW5kIGhlciBwcmluY2VzIGFyZSBhbW9uZyB0aGUgR2VudGlsZXM6IHRoZSBsYXcgaXMgbm8gbW9yZTsgaGVyIHByb3BoZXRzIGFsc28gZmluZCBubyB2aXNpb24gZnJvbSB0aGUgTE9SRC4KVGhlIGVsZGVycyBvZiB0aGUgZGF1Z2h0ZXIgb2YgWmlvbiBzaXQgdXBvbiB0aGUgZ3JvdW5kLCBhbmQga2VlcCBzaWxlbmNlOiB0aGV5IGhhdmUgY2FzdCB1cCBkdXN0IHVwb24gdGhlaXIgaGVhZHM7IHRoZXkgaGF2ZSBnaXJkZWQgdGhlbXNlbHZlcyB3aXRoIHNhY2tjbG90aDogdGhlIHZpcmdpbnMgb2YgSmVydXNhbGVtIGhhbmcgZG93biB0aGVpciBoZWFkcyB0byB0aGUgZ3JvdW5kLgpNaW5lIGV5ZXMgZG8gZmFpbCB3aXRoIHRlYXJzLCBteSBib3dlbHMgYXJlIHRyb3VibGVkLCBteSBsaXZlciBpcyBwb3VyZWQgdXBvbiB0aGUgZWFydGgsIGZvciB0aGUgZGVzdHJ1Y3Rpb24gb2YgdGhlIGRhdWdodGVyIG9mIG15IHBlb3BsZTsgYmVjYXVzZSB0aGUgY2hpbGRyZW4gYW5kIHRoZSBzdWNrbGluZ3Mgc3dvb24gaW4gdGhlIHN0cmVldHMgb2YgdGhlIGNpdHkuClRoZXkgc2F5IHRvIHRoZWlyIG1vdGhlcnMsIFdoZXJlIGlzIGNvcm4gYW5kIHdpbmU/IHdoZW4gdGhleSBzd29vbmVkIGFzIHRoZSB3b3VuZGVkIGluIHRoZSBzdHJlZXRzIG9mIHRoZSBjaXR5LCB3aGVuIHRoZWlyIHNvdWwgd2FzIHBvdXJlZCBvdXQgaW50byB0aGVpciBtb3RoZXJzJyBib3NvbS4KV2hhdCB0aGluZyBzaGFsbCBJIHRha2UgdG8gd2l0bmVzcyBmb3IgdGhlZT8gd2hhdCB0aGluZyBzaGFsbCBJIGxpa2VuIHRvIHRoZWUsIE8gZGF1Z2h0ZXIgb2YgSmVydXNhbGVtPyB3aGF0IHNoYWxsIEkgZXF1YWwgdG8gdGhlZSwgdGhhdCBJIG1heSBjb21mb3J0IHRoZWUsIE8gdmlyZ2luIGRhdWdodGVyIG9mIFppb24/IGZvciB0aHkgYnJlYWNoIGlzIGdyZWF0IGxpa2UgdGhlIHNlYTogd2hvIGNhbiBoZWFsIHRoZWU/ClRoeSBwcm9waGV0cyBoYXZlIHNlZW4gdmFpbiBhbmQgZm9vbGlzaCB0aGluZ3MgZm9yIHRoZWU6IGFuZCB0aGV5IGhhdmUgbm90IGRpc2NvdmVyZWQgdGhpbmUgaW5pcXVpdHksIHRvIHR1cm4gYXdheSB0aHkgY2FwdGl2aXR5OyBidXQgaGF2ZSBzZWVuIGZvciB0aGVlIGZhbHNlIGJ1cmRlbnMgYW5kIGNhdXNlcyBvZiBiYW5pc2htZW50LgpBbGwgdGhhdCBwYXNzIGJ5IGNsYXAgdGhlaXIgaGFuZHMgYXQgdGhlZTsgdGhleSBoaXNzIGFuZCB3YWcgdGhlaXIgaGVhZCBhdCB0aGUgZGF1Z2h0ZXIgb2YgSmVydXNhbGVtLCBzYXlpbmcsIElzIHRoaXMgdGhlIGNpdHkgdGhhdCBtZW4gY2FsbCBUaGUgcGVyZmVjdGlvbiBvZiBiZWF1dHksIFRoZSBqb3kgb2YgdGhlIHdob2xlIGVhcnRoPwpBbGwgdGhpbmUgZW5lbWllcyBoYXZlIG9wZW5lZCB0aGVpciBtb3V0aCBhZ2FpbnN0IHRoZWU6IHRoZXkgaGlzcyBhbmQgZ25hc2ggdGhlIHRlZXRoOiB0aGV5IHNheSwgV2UgaGF2ZSBzd2FsbG93ZWQgaGVyIHVwOiBjZXJ0YWlubHkgdGhpcyBpcyB0aGUgZGF5IHRoYXQgd2UgbG9va2VkIGZvcjsgd2UgaGF2ZSBmb3VuZCwgd2UgaGF2ZSBzZWVuIGl0LgpUaGUgTE9SRCBoYXRoIGRvbmUgdGhhdCB3aGljaCBoZSBoYWQgZGV2aXNlZDsgaGUgaGF0aCBmdWxmaWxsZWQgaGlzIHdvcmQgdGhhdCBoZSBoYWQgY29tbWFuZGVkIGluIHRoZSBkYXlzIG9mIG9sZDogaGUgaGF0aCB0aHJvd24gZG93biwgYW5kIGhhdGggbm90IHBpdGllZDogYW5kIGhlIGhhdGggY2F1c2VkIHRoaW5lIGVuZW15IHRvIHJlam9pY2Ugb3ZlciB0aGVlLCBoZSBoYXRoIHNldCB1cCB0aGUgaG9ybiBvZiB0aGluZSBhZHZlcnNhcmllcy4KVGhlaXIgaGVhcnQgY3JpZWQgdW50byB0aGUgTE9SRCwgTyB3YWxsIG9mIHRoZSBkYXVnaHRlciBvZiBaaW9uLCBsZXQgdGVhcnMgcnVuIGRvd24gbGlrZSBhIHJpdmVyIGRheSBhbmQgbmlnaHQ6IGdpdmUgdGh5c2VsZiBubyByZXN0OyBsZXQgbm90IHRoZSBhcHBsZSBvZiB0aGluZSBleWUgY2Vhc2UuCkFyaXNlLCBjcnkgb3V0IGluIHRoZSBuaWdodDogaW4gdGhlIGJlZ2lubmluZyBvZiB0aGUgd2F0Y2hlcyBwb3VyIG91dCB0aGluZSBoZWFydCBsaWtlIHdhdGVyIGJlZm9yZSB0aGUgZmFjZSBvZiB0aGUgTE9SRDogbGlmdCB1cCB0aHkgaGFuZHMgdG93YXJkIGhpbSBmb3IgdGhlIGxpZmUgb2YgdGh5IHlvdW5nIGNoaWxkcmVuLCB0aGF0IGZhaW50IGZvciBodW5nZXIgaW4gdGhlIHRvcCBvZiBldmVyeSBzdHJlZXQuCkJlaG9sZCwgTyBMT1JELCBhbmQgY29uc2lkZXIgdG8gd2hvbSB0aG91IGhhc3QgZG9uZSB0aGlzLiBTaGFsbCB0aGUgd29tZW4gZWF0IHRoZWlyIGZydWl0LCBhbmQgY2hpbGRyZW4gb2YgYSBzcGFuIGxvbmc/IHNoYWxsIHRoZSBwcmllc3QgYW5kIHRoZSBwcm9waGV0IGJlIHNsYWluIGluIHRoZSBzYW5jdHVhcnkgb2YgdGhlIExvcmQ/ClRoZSB5b3VuZyBhbmQgdGhlIG9sZCBsaWUgb24gdGhlIGdyb3VuZCBpbiB0aGUgc3RyZWV0czogbXkgdmlyZ2lucyBhbmQgbXkgeW91bmcgbWVuIGFyZSBmYWxsZW4gYnkgdGhlIHN3b3JkOyB0aG91IGhhc3Qgc2xhaW4gdGhlbSBpbiB0aGUgZGF5IG9mIHRoaW5lIGFuZ2VyOyB0aG91IGhhc3Qga2lsbGVkLCBhbmQgbm90IHBpdGllZC4KVGhvdSBoYXN0IGNhbGxlZCBhcyBpbiBhIHNvbGVtbiBkYXkgbXkgdGVycm9ycyByb3VuZCBhYm91dCwgc28gdGhhdCBpbiB0aGUgZGF5IG9mIHRoZSBMT1JEJ3MgYW5nZXIgbm9uZSBlc2NhcGVkIG5vciByZW1haW5lZDogdGhvc2UgdGhhdCBJIGhhdmUgc3dhZGRsZWQgYW5kIGJyb3VnaHQgdXAgaGF0aCBtaW5lIGVuZW15IGNvbnN1bWVkLgpJIEFNIHRoZSBtYW4gdGhhdCBoYXRoIHNlZW4gYWZmbGljdGlvbiBieSB0aGUgcm9kIG9mIGhpcyB3cmF0aC4KSGUgaGF0aCBsZWQgbWUsIGFuZCBicm91Z2h0IG1lIGludG8gZGFya25lc3MsIGJ1dCBub3QgaW50byBsaWdodC4KU3VyZWx5IGFnYWluc3QgbWUgaXMgaGUgdHVybmVkOyBoZSB0dXJuZXRoIGhpcyBoYW5kIGFnYWluc3QgbWUgYWxsIHRoZSBkYXkuCk15IGZsZXNoIGFuZCBteSBza2luIGhhdGggaGUgbWFkZSBvbGQ7IGhlIGhhdGggYnJva2VuIG15IGJvbmVzLgpIZSBoYXRoIGJ1aWxkZWQgYWdhaW5zdCBtZSwgYW5kIGNvbXBhc3NlZCBtZSB3aXRoIGdhbGwgYW5kIHRyYXZhaWwuCkhlIGhhdGggc2V0IG1lIGluIGRhcmsgcGxhY2VzLCBhcyB0aGV5IHRoYXQgYmUgZGVhZCBvZiBvbGQuCkhlIGhhdGggaGVkZ2VkIG1lIGFib3V0LCB0aGF0IEkgY2Fubm90IGdldCBvdXQ6IGhlIGhhdGggbWFkZSBteSBjaGFpbiBoZWF2eS4KQWxzbyB3aGVuIEkgY3J5IGFuZCBzaG91dCwgaGUgc2h1dHRldGggb3V0IG15IHByYXllci4KSGUgaGF0aCBpbmNsb3NlZCBteSB3YXlzIHdpdGggaGV3biBzdG9uZSwgaGUgaGF0aCBtYWRlIG15IHBhdGhzIGNyb29rZWQuCkhlIHdhcyB1bnRvIG1lIGFzIGEgYmVhciBseWluZyBpbiB3YWl0LCBhbmQgYXMgYSBsaW9uIGluIHNlY3JldCBwbGFjZXMuCkhlIGhhdGggdHVybmVkIGFzaWRlIG15IHdheXMsIGFuZCBwdWxsZWQgbWUgaW4gcGllY2VzOiBoZSBoYXRoIG1hZGUgbWUgZGVzb2xhdGUuCkhlIGhhdGggYmVudCBoaXMgYm93LCBhbmQgc2V0IG1lIGFzIGEgbWFyayBmb3IgdGhlIGFycm93LgpIZSBoYXRoIGNhdXNlZCB0aGUgYXJyb3dzIG9mIGhpcyBxdWl2ZXIgdG8gZW50ZXIgaW50byBteSByZWlucy4KSSB3YXMgYSBkZXJpc2lvbiB0byBhbGwgbXkgcGVvcGxlOyBhbmQgdGhlaXIgc29uZyBhbGwgdGhlIGRheS4KSGUgaGF0aCBmaWxsZWQgbWUgd2l0aCBiaXR0ZXJuZXNzLCBoZSBoYXRoIG1hZGUgbWUgZHJ1bmtlbiB3aXRoIHdvcm13b29kLgpIZSBoYXRoIGFsc28gYnJva2VuIG15IHRlZXRoIHdpdGggZ3JhdmVsIHN0b25lcywgaGUgaGF0aCBjb3ZlcmVkIG1lIHdpdGggYXNoZXMuCkFuZCB0aG91IGhhc3QgcmVtb3ZlZCBteSBzb3VsIGZhciBvZmYgZnJvbSBwZWFjZTogSSBmb3JnYXQgcHJvc3Blcml0eS4KQW5kIEkgc2FpZCwgTXkgc3RyZW5ndGggYW5kIG15IGhvcGUgaXMgcGVyaXNoZWQgZnJvbSB0aGUgTE9SRDoKUmVtZW1iZXJpbmcgbWluZSBhZmZsaWN0aW9uIGFuZCBteSBtaXNlcnksIHRoZSB3b3Jtd29vZCBhbmQgdGhlIGdhbGwuCk15IHNvdWwgaGF0aCB0aGVtIHN0aWxsIGluIHJlbWVtYnJhbmNlLCBhbmQgaXMgaHVtYmxlZCBpbiBtZS4KVGhpcyBJIHJlY2FsbCB0byBteSBtaW5kLCB0aGVyZWZvcmUgaGF2ZSBJIGhvcGUuCkl0IGlzIG9mIHRoZSBMT1JEJ3MgbWVyY2llcyB0aGF0IHdlIGFyZSBub3QgY29uc3VtZWQsIGJlY2F1c2UgaGlzIGNvbXBhc3Npb25zIGZhaWwgbm90LgpUaGV5IGFyZSBuZXcgZXZlcnkgbW9ybmluZzogZ3JlYXQgaXMgdGh5IGZhaXRoZnVsbmVzcy4KVGhlIExPUkQgaXMgbXkgcG9ydGlvbiwgc2FpdGggbXkgc291bDsgdGhlcmVmb3JlIHdpbGwgSSBob3BlIGluIGhpbS4KVGhlIExPUkQgaXMgZ29vZCB1bnRvIHRoZW0gdGhhdCB3YWl0IGZvciBoaW0sIHRvIHRoZSBzb3VsIHRoYXQgc2Vla2V0aCBoaW0uCkl0IGlzIGdvb2QgdGhhdCBhIG1hbiBzaG91bGQgYm90aCBob3BlIGFuZCBxdWlldGx5IHdhaXQgZm9yIHRoZSBzYWx2YXRpb24gb2YgdGhlIExPUkQuCkl0IGlzIGdvb2QgZm9yIGEgbWFuIHRoYXQgaGUgYmVhciB0aGUgeW9rZSBvZiBoaXMgeW91dGguCkhlIHNpdHRldGggYWxvbmUgYW5kIGtlZXBldGggc2lsZW5jZSwgYmVjYXVzZSBoZSBoYXRoIGJvcm5lIGl0IHVwb24gaGltLgpIZSBwdXR0ZXRoIGhpcyBtb3V0aCBpbiB0aGUgZHVzdDsgaWYgc28gYmUgdGhlcmUgbWF5IGJlIGhvcGUuCkhlIGdpdmV0aCBoaXMgY2hlZWsgdG8gaGltIHRoYXQgc21pdGV0aCBoaW06IGhlIGlzIGZpbGxlZCBmdWxsIHdpdGggcmVwcm9hY2guCkZvciB0aGUgTE9SRCB3aWxsIG5vdCBjYXN0IG9mZiBmb3IgZXZlcjoKQnV0IHRob3VnaCBoZSBjYXVzZSBncmllZiwgeWV0IHdpbGwgaGUgaGF2ZSBjb21wYXNzaW9uIGFjY29yZGluZyB0byB0aGUgbXVsdGl0dWRlIG9mIGhpcyBtZXJjaWVzLgpGb3IgaGUgZG90aCBub3QgYWZmbGljdCB3aWxsaW5nbHkgbm9yIGdyaWV2ZSB0aGUgY2hpbGRyZW4gb2YgbWVuLgpUbyBjcnVzaCB1bmRlciBoaXMgZmVldCBhbGwgdGhlIHByaXNvbmVycyBvZiB0aGUgZWFydGguClRvIHR1cm4gYXNpZGUgdGhlIHJpZ2h0IG9mIGEgbWFuIGJlZm9yZSB0aGUgZmFjZSBvZiB0aGUgbW9zdCBIaWdoLApUbyBzdWJ2ZXJ0IGEgbWFuIGluIGhpcyBjYXVzZSwgdGhlIExPUkQgYXBwcm92ZXRoIG5vdC4KV2hvIGlzIGhlIHRoYXQgc2FpdGgsIGFuZCBpdCBjb21ldGggdG8gcGFzcywgd2hlbiB0aGUgTG9yZCBjb21tYW5kZXRoIGl0IG5vdD8KT3V0IG9mIHRoZSBtb3V0aCBvZiB0aGUgbW9zdCBIaWdoIHByb2NlZWRldGggbm90IGV2aWwgYW5kIGdvb2Q/CldoZXJlZm9yZSBkb3RoIGEgbGl2aW5nIG1hbiBjb21wbGFpbiwgYSBtYW4gZm9yIHRoZSBwdW5pc2htZW50IG9mIGhpcyBzaW5zPwpMZXQgdXMgc2VhcmNoIGFuZCB0cnkgb3VyIHdheXMsIGFuZCB0dXJuIGFnYWluIHRvIHRoZSBMT1JELgpMZXQgdXMgbGlmdCB1cCBvdXIgaGVhcnQgd2l0aCBvdXIgaGFuZHMgdW50byBHb2QgaW4gdGhlIGhlYXZlbnMuCldlIGhhdmUgdHJhbnNncmVzc2VkIGFuZCBoYXZlIHJlYmVsbGVkOiB0aG91IGhhc3Qgbm90IHBhcmRvbmVkLgpUaG91IGhhc3QgY292ZXJlZCB3aXRoIGFuZ2VyLCBhbmQgcGVyc2VjdXRlZCB1czogdGhvdSBoYXN0IHNsYWluLCB0aG91IGhhc3Qgbm90IHBpdGllZC4KVGhvdSBoYXN0IGNvdmVyZWQgdGh5c2VsZiB3aXRoIGEgY2xvdWQsIHRoYXQgb3VyIHByYXllciBzaG91bGQgbm90IHBhc3MgdGhyb3VnaC4KVGhvdSBoYXN0IG1hZGUgdXMgYXMgdGhlIG9mZnNjb3VyaW5nIGFuZCByZWZ1c2UgaW4gdGhlIG1pZHN0IG9mIHRoZSBwZW9wbGUuCkFsbCBvdXIgZW5lbWllcyBoYXZlIG9wZW5lZCB0aGVpciBtb3V0aHMgYWdhaW5zdCB1cy4KRmVhciBhbmQgYSBzbmFyZSBpcyBjb21lIHVwb24gdXMsIGRlc29sYXRpb24gYW5kIGRlc3RydWN0aW9uLgpNaW5lIGV5ZSBydW5uZXRoIGRvd24gd2l0aCByaXZlcnMgb2Ygd2F0ZXIgZm9yIHRoZSBkZXN0cnVjdGlvbiBvZiB0aGUgZGF1Z2h0ZXIgb2YgbXkgcGVvcGxlLgpNaW5lIGV5ZSB0cmlja2xldGggZG93biwgYW5kIGNlYXNldGggbm90LCB3aXRob3V0IGFueSBpbnRlcm1pc3Npb24uClRpbGwgdGhlIExPUkQgbG9vayBkb3duLCBhbmQgYmVob2xkIGZyb20gaGVhdmVuLgpNaW5lIGV5ZSBhZmZlY3RldGggbWluZSBoZWFydCBiZWNhdXNlIG9mIGFsbCB0aGUgZGF1Z2h0ZXJzIG9mIG15IGNpdHkuCk1pbmUgZW5lbWllcyBjaGFzZWQgbWUgc29yZSwgbGlrZSBhIGJpcmQsIHdpdGhvdXQgY2F1c2UuClRoZXkgaGF2ZSBjdXQgb2ZmIG15IGxpZmUgaW4gdGhlIGR1bmdlb24sIGFuZCBjYXN0IGEgc3RvbmUgdXBvbiBtZS4KV2F0ZXJzIGZsb3dlZCBvdmVyIG1pbmUgaGVhZDsgdGhlbiBJIHNhaWQsIEkgYW0gY3V0IG9mZi4KSSBjYWxsZWQgdXBvbiB0aHkgbmFtZSwgTyBMT1JELCBvdXQgb2YgdGhlIGxvdyBkdW5nZW9uLgpUaG91IGhhc3QgaGVhcmQgbXkgdm9pY2U6IGhpZGUgbm90IHRoaW5lIGVhciBhdCBteSBicmVhdGhpbmcsIGF0IG15IGNyeS4KVGhvdSBkcmV3ZXN0IG5lYXIgaW4gdGhlIGRheSB0aGF0IEkgY2FsbGVkIHVwb24gdGhlZTogdGhvdSBzYWlkc3QsIEZlYXIgbm90LgpPIExPUkQsIHRob3UgaGFzdCBwbGVhZGVkIHRoZSBjYXVzZXMgb2YgbXkgc291bDsgdGhvdSBoYXN0IHJlZGVlbWVkIG15IGxpZmUuCk8gTE9SRCwgdGhvdSBoYXN0IHNlZW4gbXkgd3Jvbmc6IGp1ZGdlIHRob3UgbXkgY2F1c2UuClRob3UgaGFzdCBzZWVuIGFsbCB0aGVpciB2ZW5nZWFuY2UgYW5kIGFsbCB0aGVpciBpbWFnaW5hdGlvbnMgYWdhaW5zdCBtZS4KVGhvdSBoYXN0IGhlYXJkIHRoZWlyIHJlcHJvYWNoLCBPIExPUkQsIGFuZCBhbGwgdGhlaXIgaW1hZ2luYXRpb25zIGFnYWluc3QgbWU7ClRoZSBsaXBzIG9mIHRob3NlIHRoYXQgcm9zZSB1cCBhZ2FpbnN0IG1lLCBhbmQgdGhlaXIgZGV2aWNlIGFnYWluc3QgbWUgYWxsIHRoZSBkYXkuCkJlaG9sZCB0aGVpciBzaXR0aW5nIGRvd24sIGFuZCB0aGVpciByaXNpbmcgdXA7IEkgYW0gdGhlaXIgbXVzaWNrLgpSZW5kZXIgdW50byB0aGVtIGEgcmVjb21wZW5jZSwgTyBMT1JELCBhY2NvcmRpbmcgdG8gdGhlIHdvcmsgb2YgdGhlaXIgaGFuZHMuCkdpdmUgdGhlbSBzb3Jyb3cgb2YgaGVhcnQsIHRoeSBjdXJzZSB1bnRvIHRoZW0uClBlcnNlY3V0ZSBhbmQgZGVzdHJveSB0aGVtIGluIGFuZ2VyIGZyb20gdW5kZXIgdGhlIGhlYXZlbnMgb2YgdGhlIExPUkQuCkhvdyBpcyB0aGUgZ29sZCBiZWNvbWUgZGltISBob3cgaXMgdGhlIG1vc3QgZmluZSBnb2xkIGNoYW5nZWQhIHRoZSBzdG9uZXMgb2YgdGhlIHNhbmN0dWFyeSBhcmUgcG91cmVkIG91dCBpbiB0aGUgdG9wIG9mIGV2ZXJ5IHN0cmVldC4KVGhlIHByZWNpb3VzIHNvbnMgb2YgWmlvbiwgY29tcGFyYWJsZSB0byBmaW5lIGdvbGQsIGhvdyBhcmUgdGhleSBlc3RlZW1lZCBhcyBlYXJ0aGVuIHBpdGNoZXJzLCB0aGUgd29yayBvZiB0aGUgaGFuZHMgb2YgdGhlIHBvdHRlciEKRXZlbiB0aGUgc2VhIG1vbnN0ZXJzIGRyYXcgb3V0IHRoZSBicmVhc3QsIHRoZXkgZ2l2ZSBzdWNrIHRvIHRoZWlyIHlvdW5nIG9uZXM6IHRoZSBkYXVnaHRlciBvZiBteSBwZW9wbGUgaXMgYmVjb21lIGNydWVsLCBsaWtlIHRoZSBvc3RyaWNoZXMgaW4gdGhlIHdpbGRlcm5lc3MuClRoZSB0b25ndWUgb2YgdGhlIHN1Y2tpbmcgY2hpbGQgY2xlYXZldGggdG8gdGhlIHJvb2Ygb2YgaGlzIG1vdXRoIGZvciB0aGlyc3Q6IHRoZSB5b3VuZyBjaGlsZHJlbiBhc2sgYnJlYWQsIGFuZCBubyBtYW4gYnJlYWtldGggaXQgdW50byB0aGVtLgpUaGV5IHRoYXQgZGlkIGZlZWQgZGVsaWNhdGVseSBhcmUgZGVzb2xhdGUgaW4gdGhlIHN0cmVldHM6IHRoZXkgdGhhdCB3ZXJlIGJyb3VnaHQgdXAgaW4gc2NhcmxldCBlbWJyYWNlIGR1bmdoaWxscy4KRm9yIHRoZSBwdW5pc2htZW50IG9mIHRoZSBpbmlxdWl0eSBvZiB0aGUgZGF1Z2h0ZXIgb2YgbXkgcGVvcGxlIGlzIGdyZWF0ZXIgdGhhbiB0aGUgcHVuaXNobWVudCBvZiB0aGUgc2luIG9mIFNvZG9tLCB0aGF0IHdhcyBvdmVydGhyb3duIGFzIGluIGEgbW9tZW50LCBhbmQgbm8gaGFuZHMgc3RheWVkIG9uIGhlci4KSGVyIE5hemFyaXRlcyB3ZXJlIHB1cmVyIHRoYW4gc25vdywgdGhleSB3ZXJlIHdoaXRlciB0aGFuIG1pbGssIHRoZXkgd2VyZSBtb3JlIHJ1ZGR5IGluIGJvZHkgdGhhbiBydWJpZXMsIHRoZWlyIHBvbGlzaGluZyB3YXMgb2Ygc2FwcGhpcmU6ClRoZWlyIHZpc2FnZSBpcyBibGFja2VyIHRoYW4gYSBjb2FsOyB0aGV5IGFyZSBub3Qga25vd24gaW4gdGhlIHN0cmVldHM6IHRoZWlyIHNraW4gY2xlYXZldGggdG8gdGhlaXIgYm9uZXM7IGl0IGlzIHdpdGhlcmVkLCBpdCBpcyBiZWNvbWUgbGlrZSBhIHN0aWNrLgpUaGV5IHRoYXQgYmUgc2xhaW4gd2l0aCB0aGUgc3dvcmQgYXJlIGJldHRlciB0aGFuIHRoZXkgdGhhdCBiZSBzbGFpbiB3aXRoIGh1bmdlcjogZm9yIHRoZXNlIHBpbmUgYXdheSwgc3RyaWNrZW4gdGhyb3VnaCBmb3Igd2FudCBvZiB0aGUgZnJ1aXRzIG9mIHRoZSBmaWVsZC4KVGhlIGhhbmRzIG9mIHRoZSBwaXRpZnVsIHdvbWVuIGhhdmUgc29kZGVuIHRoZWlyIG93biBjaGlsZHJlbjogdGhleSB3ZXJlIHRoZWlyIG1lYXQgaW4gdGhlIGRlc3RydWN0aW9uIG9mIHRoZSBkYXVnaHRlciBvZiBteSBwZW9wbGUuClRoZSBMT1JEIGhhdGggYWNjb21wbGlzaGVkIGhpcyBmdXJ5OyBoZSBoYXRoIHBvdXJlZCBvdXQgaGlzIGZpZXJjZSBhbmdlciwgYW5kIGhhdGgga2luZGxlZCBhIGZpcmUgaW4gWmlvbiwgYW5kIGl0IGhhdGggZGV2b3VyZWQgdGhlIGZvdW5kYXRpb25zIHRoZXJlb2YuClRoZSBraW5ncyBvZiB0aGUgZWFydGgsIGFuZCBhbGwgdGhlIGluaGFiaXRhbnRzIG9mIHRoZSB3b3JsZCwgd291bGQgbm90IGhhdmUgYmVsaWV2ZWQgdGhhdCB0aGUgYWR2ZXJzYXJ5IGFuZCB0aGUgZW5lbXkgc2hvdWxkIGhhdmUgZW50ZXJlZCBpbnRvIHRoZSBnYXRlcyBvZiBKZXJ1c2FsZW0uCkZvciB0aGUgc2lucyBvZiBoZXIgcHJvcGhldHMsIGFuZCB0aGUgaW5pcXVpdGllcyBvZiBoZXIgcHJpZXN0cywgdGhhdCBoYXZlIHNoZWQgdGhlIGJsb29kIG9mIHRoZSBqdXN0IGluIHRoZSBtaWRzdCBvZiBoZXIsClRoZXkgaGF2ZSB3YW5kZXJlZCBhcyBibGluZCBtZW4gaW4gdGhlIHN0cmVldHMsIHRoZXkgaGF2ZSBwb2xsdXRlZCB0aGVtc2VsdmVzIHdpdGggYmxvb2QsIHNvIHRoYXQgbWVuIGNvdWxkIG5vdCB0b3VjaCB0aGVpciBnYXJtZW50cy4KVGhleSBjcmllZCB1bnRvIHRoZW0sIERlcGFydCB5ZTsgaXQgaXMgdW5jbGVhbjsgZGVwYXJ0LCBkZXBhcnQsIHRvdWNoIG5vdDogd2hlbiB0aGV5IGZsZWQgYXdheSBhbmQgd2FuZGVyZWQsIHRoZXkgc2FpZCBhbW9uZyB0aGUgaGVhdGhlbiwgVGhleSBzaGFsbCBubyBtb3JlIHNvam91cm4gdGhlcmUuClRoZSBhbmdlciBvZiB0aGUgTE9SRCBoYXRoIGRpdmlkZWQgdGhlbTsgaGUgd2lsbCBubyBtb3JlIHJlZ2FyZCB0aGVtOiB0aGV5IHJlc3BlY3RlZCBub3QgdGhlIHBlcnNvbnMgb2YgdGhlIHByaWVzdHMsIHRoZXkgZmF2b3VyZWQgbm90IHRoZSBlbGRlcnMuCkFzIGZvciB1cywgb3VyIGV5ZXMgYXMgeWV0IGZhaWxlZCBmb3Igb3VyIHZhaW4gaGVscDogaW4gb3VyIHdhdGNoaW5nIHdlIGhhdmUgd2F0Y2hlZCBmb3IgYSBuYXRpb24gdGhhdCBjb3VsZCBub3Qgc2F2ZSB1cy4KVGhleSBodW50IG91ciBzdGVwcywgdGhhdCB3ZSBjYW5ub3QgZ28gaW4gb3VyIHN0cmVldHM6IG91ciBlbmQgaXMgbmVhciwgb3VyIGRheXMgYXJlIGZ1bGZpbGxlZDsgZm9yIG91ciBlbmQgaXMgY29tZS4KT3VyIHBlcnNlY3V0b3JzIGFyZSBzd2lmdGVyIHRoYW4gdGhlIGVhZ2xlcyBvZiB0aGUgaGVhdmVuOiB0aGV5IHB1cnN1ZWQgdXMgdXBvbiB0aGUgbW91bnRhaW5zLCB0aGV5IGxhaWQgd2FpdCBmb3IgdXMgaW4gdGhlIHdpbGRlcm5lc3MuClRoZSBicmVhdGggb2Ygb3VyIG5vc3RyaWxzLCB0aGUgYW5vaW50ZWQgb2YgdGhlIExPUkQsIHdhcyB0YWtlbiBpbiB0aGVpciBwaXRzLCBvZiB3aG9tIHdlIHNhaWQsIFVuZGVyIGhpcyBzaGFkb3cgd2Ugc2hhbGwgbGl2ZSBhbW9uZyB0aGUgaGVhdGhlbi4KUmVqb2ljZSBhbmQgYmUgZ2xhZCwgTyBkYXVnaHRlciBvZiBFZG9tLCB0aGF0IGR3ZWxsZXN0IGluIHRoZSBsYW5kIG9mIFV6OyB0aGUgY3VwIGFsc28gc2hhbGwgcGFzcyB0aHJvdWdoIHVudG8gdGhlZTogdGhvdSBzaGFsdCBiZSBkcnVua2VuLCBhbmQgc2hhbHQgbWFrZSB0aHlzZWxmIG5ha2VkLgpUaGUgcHVuaXNobWVudCBvZiB0aGluZSBpbmlxdWl0eSBpcyBhY2NvbXBsaXNoZWQsIE8gZGF1Z2h0ZXIgb2YgWmlvbjsgaGUgd2lsbCBubyBtb3JlIGNhcnJ5IHRoZWUgYXdheSBpbnRvIGNhcHRpdml0eTogaGUgd2lsbCB2aXNpdCB0aGluZSBpbmlxdWl0eSwgTyBkYXVnaHRlciBvZiBFZG9tOyBoZSB3aWxsIGRpc2NvdmVyIHRoeSBzaW5zLgpSZW1lbWJlciwgTyBMT1JELCB3aGF0IGlzIGNvbWUgdXBvbiB1czogY29uc2lkZXIsIGFuZCBiZWhvbGQgb3VyIHJlcHJvYWNoLgpPdXIgaW5oZXJpdGFuY2UgaXMgdHVybmVkIHRvIHN0cmFuZ2Vycywgb3VyIGhvdXNlcyB0byBhbGllbnMuCldlIGFyZSBvcnBoYW5zIGFuZCBmYXRoZXJsZXNzLCBvdXIgbW90aGVycyBhcmUgYXMgd2lkb3dzLgpXZSBoYXZlIGRydW5rZW4gb3VyIHdhdGVyIGZvciBtb25leTsgb3VyIHdvb2QgaXMgc29sZCB1bnRvIHVzLgpPdXIgbmVja3MgYXJlIHVuZGVyIHBlcnNlY3V0aW9uOiB3ZSBsYWJvdXIsIGFuZCBoYXZlIG5vIHJlc3QuCldlIGhhdmUgZ2l2ZW4gdGhlIGhhbmQgdG8gdGhlIEVneXB0aWFucywgYW5kIHRvIHRoZSBBc3N5cmlhbnMsIHRvIGJlIHNhdGlzZmllZCB3aXRoIGJyZWFkLgpPdXIgZmF0aGVycyBoYXZlIHNpbm5lZCwgYW5kIGFyZSBub3Q7IGFuZCB3ZSBoYXZlIGJvcm5lIHRoZWlyIGluaXF1aXRpZXMuClNlcnZhbnRzIGhhdmUgcnVsZWQgb3ZlciB1czogdGhlcmUgaXMgbm9uZSB0aGF0IGRvdGggZGVsaXZlciB1cyBvdXQgb2YgdGhlaXIgaGFuZC4KV2UgZ2F0IG91ciBicmVhZCB3aXRoIHRoZSBwZXJpbCBvZiBvdXIgbGl2ZXMgYmVjYXVzZSBvZiB0aGUgc3dvcmQgb2YgdGhlIHdpbGRlcm5lc3MuCk91ciBza2luIHdhcyBibGFjayBsaWtlIGFuIG92ZW4gYmVjYXVzZSBvZiB0aGUgdGVycmlibGUgZmFtaW5lLgpUaGV5IHJhdmlzaGVkIHRoZSB3b21lbiBpbiBaaW9uLCBhbmQgdGhlIG1haWRzIGluIHRoZSBjaXRpZXMgb2YgSnVkYWguClByaW5jZXMgYXJlIGhhbmdlZCB1cCBieSB0aGVpciBoYW5kOiB0aGUgZmFjZXMgb2YgZWxkZXJzIHdlcmUgbm90IGhvbm91cmVkLgpUaGV5IHRvb2sgdGhlIHlvdW5nIG1lbiB0byBncmluZCwgYW5kIHRoZSBjaGlsZHJlbiBmZWxsIHVuZGVyIHRoZSB3b29kLgpUaGUgZWxkZXJzIGhhdmUgY2Vhc2VkIGZyb20gdGhlIGdhdGUsIHRoZSB5b3VuZyBtZW4gZnJvbSB0aGVpciBtdXNpY2suClRoZSBqb3kgb2Ygb3VyIGhlYXJ0IGlzIGNlYXNlZDsgb3VyIGRhbmNlIGlzIHR1cm5lZCBpbnRvIG1vdXJuaW5nLgpUaGUgY3Jvd24gaXMgZmFsbGVuIGZyb20gb3VyIGhlYWQ6IHdvZSB1bnRvIHVzLCB0aGF0IHdlIGhhdmUgc2lubmVkIQpGb3IgdGhpcyBvdXIgaGVhcnQgaXMgZmFpbnQ7IGZvciB0aGVzZSB0aGluZ3Mgb3VyIGV5ZXMgYXJlIGRpbS4KQmVjYXVzZSBvZiB0aGUgbW91bnRhaW4gb2YgWmlvbiwgd2hpY2ggaXMgZGVzb2xhdGUsIHRoZSBmb3hlcyB3YWxrIHVwb24gaXQuClRob3UsIE8gTE9SRCwgcmVtYWluZXN0IGZvciBldmVyOyB0aHkgdGhyb25lIGZyb20gZ2VuZXJhdGlvbiB0byBnZW5lcmF0aW9uLgpXaGVyZWZvcmUgZG9zdCB0aG91IGZvcmdldCB1cyBmb3IgZXZlciwgYW5kIGZvcnNha2UgdXMgc28gbG9uZyB0aW1lPwpUdXJuIHRob3UgdXMgdW50byB0aGVlLCBPIExPUkQsIGFuZCB3ZSBzaGFsbCBiZSB0dXJuZWQ7IHJlbmV3IG91ciBkYXlzIGFzIG9mIG9sZC4KQnV0IHRob3UgaGFzdCB1dHRlcmx5IHJlamVjdGVkIHVzOyB0aG91IGFydCB2ZXJ5IHdyb3RoIGFnYWluc3QgdXMuCk5vdyBpdCBjYW1lIHRvIHBhc3MgaW4gdGhlIHRoaXJ0aWV0aCB5ZWFyLCBpbiB0aGUgZm91cnRoIG1vbnRoLCBpbiB0aGUgZmlmdGggZGF5IG9mIHRoZSBtb250aCwgYXMgSSB3YXMgYW1vbmcgdGhlIGNhcHRpdmVzIGJ5IHRoZSByaXZlciBvZiBDaGViYXIsIHRoYXQgdGhlIGhlYXZlbnMgd2VyZSBvcGVuZWQsIGFuZCBJIHNhdyB2aXNpb25zIG9mIEdvZC4KSW4gdGhlIGZpZnRoIGRheSBvZiB0aGUgbW9udGgsIHdoaWNoIHdhcyB0aGUgZmlmdGggeWVhciBvZiBraW5nIEplaG9pYWNoaW4ncyBjYXB0aXZpdHksClRoZSB3b3JkIG9mIHRoZSBMT1JEIGNhbWUgZXhwcmVzc2x5IHVudG8gRXpla2llbCB0aGUgcHJpZXN0LCB0aGUgc29uIG9mIEJ1emksIGluIHRoZSBsYW5kIG9mIHRoZSBDaGFsZGVhbnMgYnkgdGhlIHJpdmVyIENoZWJhcjsgYW5kIHRoZSBoYW5kIG9mIHRoZSBMT1JEIHdhcyB0aGVyZSB1cG9uIGhpbS4KQW5kIEkgbG9va2VkLCBhbmQsIGJlaG9sZCwgYSB3aGlybHdpbmQgY2FtZSBvdXQgb2YgdGhlIG5vcnRoLCBhIGdyZWF0IGNsb3VkLCBhbmQgYSBmaXJlIGluZm9sZGluZyBpdHNlbGYsIGFuZCBhIGJyaWdodG5lc3Mgd2FzIGFib3V0IGl0LCBhbmQgb3V0IG9mIHRoZSBtaWRzdCB0aGVyZW9mIGFzIHRoZSBjb2xvdXIgb2YgYW1iZXIsIG91dCBvZiB0aGUgbWlkc3Qgb2YgdGhlIGZpcmUuCkFsc28gb3V0IG9mIHRoZSBtaWRzdCB0aGVyZW9mIGNhbWUgdGhlIGxpa2VuZXNzIG9mIGZvdXIgbGl2aW5nIGNyZWF0dXJlcy4gQW5kIHRoaXMgd2FzIHRoZWlyIGFwcGVhcmFuY2U7IHRoZXkgaGFkIHRoZSBsaWtlbmVzcyBvZiBhIG1hbi4KQW5kIGV2ZXJ5IG9uZSBoYWQgZm91ciBmYWNlcywgYW5kIGV2ZXJ5IG9uZSBoYWQgZm91ciB3aW5ncy4KQW5kIHRoZWlyIGZlZXQgd2VyZSBzdHJhaWdodCBmZWV0OyBhbmQgdGhlIHNvbGUgb2YgdGhlaXIgZmVldCB3YXMgbGlrZSB0aGUgc29sZSBvZiBhIGNhbGYncyBmb290OiBhbmQgdGhleSBzcGFya2xlZCBsaWtlIHRoZSBjb2xvdXIgb2YgYnVybmlzaGVkIGJyYXNzLgpBbmQgdGhleSBoYWQgdGhlIGhhbmRzIG9mIGEgbWFuIHVuZGVyIHRoZWlyIHdpbmdzIG9uIHRoZWlyIGZvdXIgc2lkZXM7IGFuZCB0aGV5IGZvdXIgaGFkIHRoZWlyIGZhY2VzIGFuZCB0aGVpciB3aW5ncy4KVGhlaXIgd2luZ3Mgd2VyZSBqb2luZWQgb25lIHRvIGFub3RoZXI7IHRoZXkgdHVybmVkIG5vdCB3aGVuIHRoZXkgd2VudDsgdGhleSB3ZW50IGV2ZXJ5IG9uZSBzdHJhaWdodCBmb3J3YXJkLgpBcyBmb3IgdGhlIGxpa2VuZXNzIG9mIHRoZWlyIGZhY2VzLCB0aGV5IGZvdXIgaGFkIHRoZSBmYWNlIG9mIGEgbWFuLCBhbmQgdGhlIGZhY2Ugb2YgYSBsaW9uLCBvbiB0aGUgcmlnaHQgc2lkZTogYW5kIHRoZXkgZm91ciBoYWQgdGhlIGZhY2Ugb2YgYW4gb3ggb24gdGhlIGxlZnQgc2lkZTsgdGhleSBmb3VyIGFsc28gaGFkIHRoZSBmYWNlIG9mIGFuIGVhZ2xlLgpUaHVzIHdlcmUgdGhlaXIgZmFjZXM6IGFuZCB0aGVpciB3aW5ncyB3ZXJlIHN0cmV0Y2hlZCB1cHdhcmQ7IHR3byB3aW5ncyBvZiBldmVyeSBvbmUgd2VyZSBqb2luZWQgb25lIHRvIGFub3RoZXIsIGFuZCB0d28gY292ZXJlZCB0aGVpciBib2RpZXMuCkFuZCB0aGV5IHdlbnQgZXZlcnkgb25lIHN0cmFpZ2h0IGZvcndhcmQ6IHdoaXRoZXIgdGhlIHNwaXJpdCB3YXMgdG8gZ28sIHRoZXkgd2VudDsgYW5kIHRoZXkgdHVybmVkIG5vdCB3aGVuIHRoZXkgd2VudC4KQXMgZm9yIHRoZSBsaWtlbmVzcyBvZiB0aGUgbGl2aW5nIGNyZWF0dXJlcywgdGhlaXIgYXBwZWFyYW5jZSB3YXMgbGlrZSBidXJuaW5nIGNvYWxzIG9mIGZpcmUsIGFuZCBsaWtlIHRoZSBhcHBlYXJhbmNlIG9mIGxhbXBzOiBpdCB3ZW50IHVwIGFuZCBkb3duIGFtb25nIHRoZSBsaXZpbmcgY3JlYXR1cmVzOyBhbmQgdGhlIGZpcmUgd2FzIGJyaWdodCwgYW5kIG91dCBvZiB0aGUgZmlyZSB3ZW50IGZvcnRoIGxpZ2h0bmluZy4KQW5kIHRoZSBsaXZpbmcgY3JlYXR1cmVzIHJhbiBhbmQgcmV0dXJuZWQgYXMgdGhlIGFwcGVhcmFuY2Ugb2YgYSBmbGFzaCBvZiBsaWdodG5pbmcuCk5vdyBhcyBJIGJlaGVsZCB0aGUgbGl2aW5nIGNyZWF0dXJlcywgYmVob2xkIG9uZSB3aGVlbCB1cG9uIHRoZSBlYXJ0aCBieSB0aGUgbGl2aW5nIGNyZWF0dXJlcywgd2l0aCBoaXMgZm91ciBmYWNlcy4KVGhlIGFwcGVhcmFuY2Ugb2YgdGhlIHdoZWVscyBhbmQgdGhlaXIgd29yayB3YXMgbGlrZSB1bnRvIHRoZSBjb2xvdXIgb2YgYSBiZXJ5bDogYW5kIHRoZXkgZm91ciBoYWQgb25lIGxpa2VuZXNzOiBhbmQgdGhlaXIgYXBwZWFyYW5jZSBhbmQgdGhlaXIgd29yayB3YXMgYXMgaXQgd2VyZSBhIHdoZWVsIGluIHRoZSBtaWRkbGUgb2YgYSB3aGVlbC4KV2hlbiB0aGV5IHdlbnQsIHRoZXkgd2VudCB1cG9uIHRoZWlyIGZvdXIgc2lkZXM6IGFuZCB0aGV5IHR1cm5lZCBub3Qgd2hlbiB0aGV5IHdlbnQuCkFzIGZvciB0aGVpciByaW5ncywgdGhleSB3ZXJlIHNvIGhpZ2ggdGhhdCB0aGV5IHdlcmUgZHJlYWRmdWw7IGFuZCB0aGVpciByaW5ncyB3ZXJlIGZ1bGwgb2YgZXllcyByb3VuZCBhYm91dCB0aGVtIGZvdXIuCkFuZCB3aGVuIHRoZSBsaXZpbmcgY3JlYXR1cmVzIHdlbnQsIHRoZSB3aGVlbHMgd2VudCBieSB0aGVtOiBhbmQgd2hlbiB0aGUgbGl2aW5nIGNyZWF0dXJlcyB3ZXJlIGxpZnRlZCB1cCBmcm9tIHRoZSBlYXJ0aCwgdGhlIHdoZWVscyB3ZXJlIGxpZnRlZCB1cC4KV2hpdGhlcnNvZXZlciB0aGUgc3Bpcml0IHdhcyB0byBnbywgdGhleSB3ZW50LCB0aGl0aGVyIHdhcyB0aGVpciBzcGlyaXQgdG8gZ287IGFuZCB0aGUgd2hlZWxzIHdlcmUgbGlmdGVkIHVwIG92ZXIgYWdhaW5zdCB0aGVtOiBmb3IgdGhlIHNwaXJpdCBvZiB0aGUgbGl2aW5nIGNyZWF0dXJlIHdhcyBpbiB0aGUgd2hlZWxzLgpXaGVuIHRob3NlIHdlbnQsIHRoZXNlIHdlbnQ7IGFuZCB3aGVuIHRob3NlIHN0b29kLCB0aGVzZSBzdG9vZDsgYW5kIHdoZW4gdGhvc2Ugd2VyZSBsaWZ0ZWQgdXAgZnJvbSB0aGUgZWFydGgsIHRoZSB3aGVlbHMgd2VyZSBsaWZ0ZWQgdXAgb3ZlciBhZ2FpbnN0IHRoZW06IGZvciB0aGUgc3Bpcml0IG9mIHRoZSBsaXZpbmcgY3JlYXR1cmUgd2FzIGluIHRoZSB3aGVlbHMuCkFuZCB0aGUgbGlrZW5lc3Mgb2YgdGhlIGZpcm1hbWVudCB1cG9uIHRoZSBoZWFkcyBvZiB0aGUgbGl2aW5nIGNyZWF0dXJlIHdhcyBhcyB0aGUgY29sb3VyIG9mIHRoZSB0ZXJyaWJsZSBjcnlzdGFsLCBzdHJldGNoZWQgZm9ydGggb3ZlciB0aGVpciBoZWFkcyBhYm92ZS4KQW5kIHVuZGVyIHRoZSBmaXJtYW1lbnQgd2VyZSB0aGVpciB3aW5ncyBzdHJhaWdodCwgdGhlIG9uZSB0b3dhcmQgdGhlIG90aGVyOiBldmVyeSBvbmUgaGFkIHR3bywgd2hpY2ggY292ZXJlZCBvbiB0aGlzIHNpZGUsIGFuZCBldmVyeSBvbmUgaGFkIHR3bywgd2hpY2ggY292ZXJlZCBvbiB0aGF0IHNpZGUsIHRoZWlyIGJvZGllcy4KQW5kIHdoZW4gdGhleSB3ZW50LCBJIGhlYXJkIHRoZSBub2lzZSBvZiB0aGVpciB3aW5ncywgbGlrZSB0aGUgbm9pc2Ugb2YgZ3JlYXQgd2F0ZXJzLCBhcyB0aGUgdm9pY2Ugb2YgdGhlIEFsbWlnaHR5LCB0aGUgdm9pY2Ugb2Ygc3BlZWNoLCBhcyB0aGUgbm9pc2Ugb2YgYW4gaG9zdDogd2hlbiB0aGV5IHN0b29kLCB0aGV5IGxldCBkb3duIHRoZWlyIHdpbmdzLgpBbmQgdGhlcmUgd2FzIGEgdm9pY2UgZnJvbSB0aGUgZmlybWFtZW50IHRoYXQgd2FzIG92ZXIgdGhlaXIgaGVhZHMsIHdoZW4gdGhleSBzdG9vZCwgYW5kIGhhZCBsZXQgZG93biB0aGVpciB3aW5ncy4KQW5kIGFib3ZlIHRoZSBmaXJtYW1lbnQgdGhhdCB3YXMgb3ZlciB0aGVpciBoZWFkcyB3YXMgdGhlIGxpa2VuZXNzIG9mIGEgdGhyb25lLCBhcyB0aGUgYXBwZWFyYW5jZSBvZiBhIHNhcHBoaXJlIHN0b25lOiBhbmQgdXBvbiB0aGUgbGlrZW5lc3Mgb2YgdGhlIHRocm9uZSB3YXMgdGhlIGxpa2VuZXNzIGFzIHRoZSBhcHBlYXJhbmNlIG9mIGEgbWFuIGFib3ZlIHVwb24gaXQuCkFuZCBJIHNhdyBhcyB0aGUgY29sb3VyIG9mIGFtYmVyLCBhcyB0aGUgYXBwZWFyYW5jZSBvZiBmaXJlIHJvdW5kIGFib3V0IHdpdGhpbiBpdCwgZnJvbSB0aGUgYXBwZWFyYW5jZSBvZiBoaXMgbG9pbnMgZXZlbiB1cHdhcmQsIGFuZCBmcm9tIHRoZSBhcHBlYXJhbmNlIG9mIGhpcyBsb2lucyBldmVuIGRvd253YXJkLCBJIHNhdyBhcyBpdCB3ZXJlIHRoZSBhcHBlYXJhbmNlIG9mIGZpcmUsIGFuZCBpdCBoYWQgYnJpZ2h0bmVzcyByb3VuZCBhYm91dC4KQXMgdGhlIGFwcGVhcmFuY2Ugb2YgdGhlIGJvdyB0aGF0IGlzIGluIHRoZSBjbG91ZCBpbiB0aGUgZGF5IG9mIHJhaW4sIHNvIHdhcyB0aGUgYXBwZWFyYW5jZSBvZiB0aGUgYnJpZ2h0bmVzcyByb3VuZCBhYm91dC4gVGhpcyB3YXMgdGhlIGFwcGVhcmFuY2Ugb2YgdGhlIGxpa2VuZXNzIG9mIHRoZSBnbG9yeSBvZiB0aGUgTE9SRC4gQW5kIHdoZW4gSSBzYXcgaXQsIEkgZmVsbCB1cG9uIG15IGZhY2UsIGFuZCBJIGhlYXJkIGEgdm9pY2Ugb2Ygb25lIHRoYXQgc3Bha2UuCkFuZCBoZSBzYWlkIHVudG8gbWUsIFNvbiBvZiBtYW4sIHN0YW5kIHVwb24gdGh5IGZlZXQsIGFuZCBJIHdpbGwgc3BlYWsgdW50byB0aGVlLgpBbmQgdGhlIHNwaXJpdCBlbnRlcmVkIGludG8gbWUgd2hlbiBoZSBzcGFrZSB1bnRvIG1lLCBhbmQgc2V0IG1lIHVwb24gbXkgZmVldCwgdGhhdCBJIGhlYXJkIGhpbSB0aGF0IHNwYWtlIHVudG8gbWUuCkFuZCBoZSBzYWlkIHVudG8gbWUsIFNvbiBvZiBtYW4sIEkgc2VuZCB0aGVlIHRvIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIHRvIGEgcmViZWxsaW91cyBuYXRpb24gdGhhdCBoYXRoIHJlYmVsbGVkIGFnYWluc3QgbWU6IHRoZXkgYW5kIHRoZWlyIGZhdGhlcnMgaGF2ZSB0cmFuc2dyZXNzZWQgYWdhaW5zdCBtZSwgZXZlbiB1bnRvIHRoaXMgdmVyeSBkYXkuCkZvciB0aGV5IGFyZSBpbXB1ZGVudCBjaGlsZHJlbiBhbmQgc3RpZmZoZWFydGVkLiBJIGRvIHNlbmQgdGhlZSB1bnRvIHRoZW07IGFuZCB0aG91IHNoYWx0IHNheSB1bnRvIHRoZW0sIFRodXMgc2FpdGggdGhlIExvcmQgR09ELgpBbmQgdGhleSwgd2hldGhlciB0aGV5IHdpbGwgaGVhciwgb3Igd2hldGhlciB0aGV5IHdpbGwgZm9yYmVhciwgKGZvciB0aGV5IGFyZSBhIHJlYmVsbGlvdXMgaG91c2UsKSB5ZXQgc2hhbGwga25vdyB0aGF0IHRoZXJlIGhhdGggYmVlbiBhIHByb3BoZXQgYW1vbmcgdGhlbS4KQW5kIHRob3UsIHNvbiBvZiBtYW4sIGJlIG5vdCBhZnJhaWQgb2YgdGhlbSwgbmVpdGhlciBiZSBhZnJhaWQgb2YgdGhlaXIgd29yZHMsIHRob3VnaCBicmllcnMgYW5kIHRob3JucyBiZSB3aXRoIHRoZWUsIGFuZCB0aG91IGRvc3QgZHdlbGwgYW1vbmcgc2NvcnBpb25zOiBiZSBub3QgYWZyYWlkIG9mIHRoZWlyIHdvcmRzLCBub3IgYmUgZGlzbWF5ZWQgYXQgdGhlaXIgbG9va3MsIHRob3VnaCB0aGV5IGJlIGEgcmViZWxsaW91cyBob3VzZS4KQW5kIHRob3Ugc2hhbHQgc3BlYWsgbXkgd29yZHMgdW50byB0aGVtLCB3aGV0aGVyIHRoZXkgd2lsbCBoZWFyLCBvciB3aGV0aGVyIHRoZXkgd2lsbCBmb3JiZWFyOiBmb3IgdGhleSBhcmUgbW9zdCByZWJlbGxpb3VzLgpCdXQgdGhvdSwgc29uIG9mIG1hbiwgaGVhciB3aGF0IEkgc2F5IHVudG8gdGhlZTsgQmUgbm90IHRob3UgcmViZWxsaW91cyBsaWtlIHRoYXQgcmViZWxsaW91cyBob3VzZTogb3BlbiB0aHkgbW91dGgsIGFuZCBlYXQgdGhhdCBJIGdpdmUgdGhlZS4KQW5kIHdoZW4gSSBsb29rZWQsIGJlaG9sZCwgYW4gaGFuZCB3YXMgc2VudCB1bnRvIG1lOyBhbmQsIGxvLCBhIHJvbGwgb2YgYSBib29rIHdhcyB0aGVyZWluOwpBbmQgaGUgc3ByZWFkIGl0IGJlZm9yZSBtZTsgYW5kIGl0IHdhcyB3cml0dGVuIHdpdGhpbiBhbmQgd2l0aG91dDogYW5kIHRoZXJlIHdhcyB3cml0dGVuIHRoZXJlaW4gbGFtZW50YXRpb25zLCBhbmQgbW91cm5pbmcsIGFuZCB3b2UuCk1vcmVvdmVyIGhlIHNhaWQgdW50byBtZSwgU29uIG9mIG1hbiwgZWF0IHRoYXQgdGhvdSBmaW5kZXN0OyBlYXQgdGhpcyByb2xsLCBhbmQgZ28gc3BlYWsgdW50byB0aGUgaG91c2Ugb2YgSXNyYWVsLgpTbyBJIG9wZW5lZCBteSBtb3V0aCwgYW5kIGhlIGNhdXNlZCBtZSB0byBlYXQgdGhhdCByb2xsLgpBbmQgaGUgc2FpZCB1bnRvIG1lLCBTb24gb2YgbWFuLCBjYXVzZSB0aHkgYmVsbHkgdG8gZWF0LCBhbmQgZmlsbCB0aHkgYm93ZWxzIHdpdGggdGhpcyByb2xsIHRoYXQgSSBnaXZlIHRoZWUuIFRoZW4gZGlkIEkgZWF0IGl0OyBhbmQgaXQgd2FzIGluIG15IG1vdXRoIGFzIGhvbmV5IGZvciBzd2VldG5lc3MuCkFuZCBoZSBzYWlkIHVudG8gbWUsIFNvbiBvZiBtYW4sIGdvLCBnZXQgdGhlZSB1bnRvIHRoZSBob3VzZSBvZiBJc3JhZWwsIGFuZCBzcGVhayB3aXRoIG15IHdvcmRzIHVudG8gdGhlbS4KRm9yIHRob3UgYXJ0IG5vdCBzZW50IHRvIGEgcGVvcGxlIG9mIGEgc3RyYW5nZSBzcGVlY2ggYW5kIG9mIGFuIGhhcmQgbGFuZ3VhZ2UsIGJ1dCB0byB0aGUgaG91c2Ugb2YgSXNyYWVsOwpOb3QgdG8gbWFueSBwZW9wbGUgb2YgYSBzdHJhbmdlIHNwZWVjaCBhbmQgb2YgYW4gaGFyZCBsYW5ndWFnZSwgd2hvc2Ugd29yZHMgdGhvdSBjYW5zdCBub3QgdW5kZXJzdGFuZC4gU3VyZWx5LCBoYWQgSSBzZW50IHRoZWUgdG8gdGhlbSwgdGhleSB3b3VsZCBoYXZlIGhlYXJrZW5lZCB1bnRvIHRoZWUuCkJ1dCB0aGUgaG91c2Ugb2YgSXNyYWVsIHdpbGwgbm90IGhlYXJrZW4gdW50byB0aGVlOyBmb3IgdGhleSB3aWxsIG5vdCBoZWFya2VuIHVudG8gbWU6IGZvciBhbGwgdGhlIGhvdXNlIG9mIElzcmFlbCBhcmUgaW1wdWRlbnQgYW5kIGhhcmRoZWFydGVkLgpCZWhvbGQsIEkgaGF2ZSBtYWRlIHRoeSBmYWNlIHN0cm9uZyBhZ2FpbnN0IHRoZWlyIGZhY2VzLCBhbmQgdGh5IGZvcmVoZWFkIHN0cm9uZyBhZ2FpbnN0IHRoZWlyIGZvcmVoZWFkcy4KQXMgYW4gYWRhbWFudCBoYXJkZXIgdGhhbiBmbGludCBoYXZlIEkgbWFkZSB0aHkgZm9yZWhlYWQ6IGZlYXIgdGhlbSBub3QsIG5laXRoZXIgYmUgZGlzbWF5ZWQgYXQgdGhlaXIgbG9va3MsIHRob3VnaCB0aGV5IGJlIGEgcmViZWxsaW91cyBob3VzZS4KTW9yZW92ZXIgaGUgc2FpZCB1bnRvIG1lLCBTb24gb2YgbWFuLCBhbGwgbXkgd29yZHMgdGhhdCBJIHNoYWxsIHNwZWFrIHVudG8gdGhlZSByZWNlaXZlIGluIHRoaW5lIGhlYXJ0LCBhbmQgaGVhciB3aXRoIHRoaW5lIGVhcnMuCkFuZCBnbywgZ2V0IHRoZWUgdG8gdGhlbSBvZiB0aGUgY2FwdGl2aXR5LCB1bnRvIHRoZSBjaGlsZHJlbiBvZiB0aHkgcGVvcGxlLCBhbmQgc3BlYWsgdW50byB0aGVtLCBhbmQgdGVsbCB0aGVtLCBUaHVzIHNhaXRoIHRoZSBMb3JkIEdPRDsgd2hldGhlciB0aGV5IHdpbGwgaGVhciwgb3Igd2hldGhlciB0aGV5IHdpbGwgZm9yYmVhci4KVGhlbiB0aGUgc3Bpcml0IHRvb2sgbWUgdXAsIGFuZCBJIGhlYXJkIGJlaGluZCBtZSBhIHZvaWNlIG9mIGEgZ3JlYXQgcnVzaGluZywgc2F5aW5nLCBCbGVzc2VkIGJlIHRoZSBnbG9yeSBvZiB0aGUgTE9SRCBmcm9tIGhpcyBwbGFjZS4KSSBoZWFyZCBhbHNvIHRoZSBub2lzZSBvZiB0aGUgd2luZ3Mgb2YgdGhlIGxpdmluZyBjcmVhdHVyZXMgdGhhdCB0b3VjaGVkIG9uZSBhbm90aGVyLCBhbmQgdGhlIG5vaXNlIG9mIHRoZSB3aGVlbHMgb3ZlciBhZ2FpbnN0IHRoZW0sIGFuZCBhIG5vaXNlIG9mIGEgZ3JlYXQgcnVzaGluZy4KU28gdGhlIHNwaXJpdCBsaWZ0ZWQgbWUgdXAsIGFuZCB0b29rIG1lIGF3YXksIGFuZCBJIHdlbnQgaW4gYml0dGVybmVzcywgaW4gdGhlIGhlYXQgb2YgbXkgc3Bpcml0OyBidXQgdGhlIGhhbmQgb2YgdGhlIExPUkQgd2FzIHN0cm9uZyB1cG9uIG1lLgpUaGVuIEkgY2FtZSB0byB0aGVtIG9mIHRoZSBjYXB0aXZpdHkgYXQgVGVsYWJpYiwgdGhhdCBkd2VsdCBieSB0aGUgcml2ZXIgb2YgQ2hlYmFyLCBhbmQgSSBzYXQgd2hlcmUgdGhleSBzYXQsIGFuZCByZW1haW5lZCB0aGVyZSBhc3RvbmlzaGVkIGFtb25nIHRoZW0gc2V2ZW4gZGF5cy4KQW5kIGl0IGNhbWUgdG8gcGFzcyBhdCB0aGUgZW5kIG9mIHNldmVuIGRheXMsIHRoYXQgdGhlIHdvcmQgb2YgdGhlIExPUkQgY2FtZSB1bnRvIG1lLCBzYXlpbmcsClNvbiBvZiBtYW4sIEkgaGF2ZSBtYWRlIHRoZWUgYSB3YXRjaG1hbiB1bnRvIHRoZSBob3VzZSBvZiBJc3JhZWw6IHRoZXJlZm9yZSBoZWFyIHRoZSB3b3JkIGF0IG15IG1vdXRoLCBhbmQgZ2l2ZSB0aGVtIHdhcm5pbmcgZnJvbSBtZS4KV2hlbiBJIHNheSB1bnRvIHRoZSB3aWNrZWQsIFRob3Ugc2hhbHQgc3VyZWx5IGRpZTsgYW5kIHRob3UgZ2l2ZXN0IGhpbSBub3Qgd2FybmluZywgbm9yIHNwZWFrZXN0IHRvIHdhcm4gdGhlIHdpY2tlZCBmcm9tIGhpcyB3aWNrZWQgd2F5LCB0byBzYXZlIGhpcyBsaWZlOyB0aGUgc2FtZSB3aWNrZWQgbWFuIHNoYWxsIGRpZSBpbiBoaXMgaW5pcXVpdHk7IGJ1dCBoaXMgYmxvb2Qgd2lsbCBJIHJlcXVpcmUgYXQgdGhpbmUgaGFuZC4KWWV0IGlmIHRob3Ugd2FybiB0aGUgd2lja2VkLCBhbmQgaGUgdHVybiBub3QgZnJvbSBoaXMgd2lja2VkbmVzcywgbm9yIGZyb20gaGlzIHdpY2tlZCB3YXksIGhlIHNoYWxsIGRpZSBpbiBoaXMgaW5pcXVpdHk7IGJ1dCB0aG91IGhhc3QgZGVsaXZlcmVkIHRoeSBzb3VsLgpBZ2FpbiwgV2hlbiBhIHJpZ2h0ZW91cyBtYW4gZG90aCB0dXJuIGZyb20gaGlzIHJpZ2h0ZW91c25lc3MsIGFuZCBjb21taXQgaW5pcXVpdHksIGFuZCBJIGxheSBhIHN0dW1ibGluZy1ibG9jayBiZWZvcmUgaGltLCBoZSBzaGFsbCBkaWU6IGJlY2F1c2UgdGhvdSBoYXN0IG5vdCBnaXZlbiBoaW0gd2FybmluZywgaGUgc2hhbGwgZGllIGluIGhpcyBzaW4sIGFuZCBoaXMgcmlnaHRlb3VzbmVzcyB3aGljaCBoZSBoYXRoIGRvbmUgc2hhbGwgbm90IGJlIHJlbWVtYmVyZWQ7IGJ1dCBoaXMgYmxvb2Qgd2lsbCBJIHJlcXVpcmUgYXQgdGhpbmUgaGFuZC4KTmV2ZXJ0aGVsZXNzIGlmIHRob3Ugd2FybiB0aGUgcmlnaHRlb3VzIG1hbiwgdGhhdCB0aGUgcmlnaHRlb3VzIHNpbiBub3QsIGFuZCBoZSBkb3RoIG5vdCBzaW4sIGhlIHNoYWxsIHN1cmVseSBsaXZlLCBiZWNhdXNlIGhlIGlzIHdhcm5lZDsgYWxzbyB0aG91IGhhc3QgZGVsaXZlcmVkIHRoeSBzb3VsLgpBbmQgdGhlIGhhbmQgb2YgdGhlIExPUkQgd2FzIHRoZXJlIHVwb24gbWU7IGFuZCBoZSBzYWlkIHVudG8gbWUsIEFyaXNlLCBnbyBmb3J0aCBpbnRvIHRoZSBwbGFpbiwgYW5kIEkgd2lsbCB0aGVyZSB0YWxrIHdpdGggdGhlZS4KVGhlbiBJIGFyb3NlLCBhbmQgd2VudCBmb3J0aCBpbnRvIHRoZSBwbGFpbjogYW5kLCBiZWhvbGQsIHRoZSBnbG9yeSBvZiB0aGUgTE9SRCBzdG9vZCB0aGVyZSwgYXMgdGhlIGdsb3J5IHdoaWNoIEkgc2F3IGJ5IHRoZSByaXZlciBvZiBDaGViYXI6IGFuZCBJIGZlbGwgb24gbXkgZmFjZS4KVGhlbiB0aGUgc3Bpcml0IGVudGVyZWQgaW50byBtZSwgYW5kIHNldCBtZSB1cG9uIG15IGZlZXQsIGFuZCBzcGFrZSB3aXRoIG1lLCBhbmQgc2FpZCB1bnRvIG1lLCBHbywgc2h1dCB0aHlzZWxmIHdpdGhpbiB0aGluZSBob3VzZS4KQnV0IHRob3UsIE8gc29uIG9mIG1hbiwgYmVob2xkLCB0aGV5IHNoYWxsIHB1dCBiYW5kcyB1cG9uIHRoZWUsIGFuZCBzaGFsbCBiaW5kIHRoZWUgd2l0aCB0aGVtLCBhbmQgdGhvdSBzaGFsdCBub3QgZ28gb3V0IGFtb25nIHRoZW06CkFuZCBJIHdpbGwgbWFrZSB0aHkgdG9uZ3VlIGNsZWF2ZSB0byB0aGUgcm9vZiBvZiB0aHkgbW91dGgsIHRoYXQgdGhvdSBzaGFsdCBiZSBkdW1iLCBhbmQgc2hhbHQgbm90IGJlIHRvIHRoZW0gYSByZXByb3ZlcjogZm9yIHRoZXkgYXJlIGEgcmViZWxsaW91cyBob3VzZS4KQnV0IHdoZW4gSSBzcGVhayB3aXRoIHRoZWUsIEkgd2lsbCBvcGVuIHRoeSBtb3V0aCwgYW5kIHRob3Ugc2hhbHQgc2F5IHVudG8gdGhlbSwgVGh1cyBzYWl0aCB0aGUgTG9yZCBHT0Q7IEhlIHRoYXQgaGVhcmV0aCwgbGV0IGhpbSBoZWFyOyBhbmQgaGUgdGhhdCBmb3JiZWFyZXRoLCBsZXQgaGltIGZvcmJlYXI6IGZvciB0aGV5IGFyZSBhIHJlYmVsbGlvdXMgaG91c2UuClRob3UgYWxzbywgc29uIG9mIG1hbiwgdGFrZSB0aGVlIGEgdGlsZSwgYW5kIGxheSBpdCBiZWZvcmUgdGhlZSwgYW5kIHBvdXJ0cmF5IHVwb24gaXQgdGhlIGNpdHksIGV2ZW4gSmVydXNhbGVtOgpBbmQgbGF5IHNpZWdlIGFnYWluc3QgaXQsIGFuZCBidWlsZCBhIGZvcnQgYWdhaW5zdCBpdCwgYW5kIGNhc3QgYSBtb3VudCBhZ2FpbnN0IGl0OyBzZXQgdGhlIGNhbXAgYWxzbyBhZ2FpbnN0IGl0LCBhbmQgc2V0IGJhdHRlcmluZyByYW1zIGFnYWluc3QgaXQgcm91bmQgYWJvdXQuCk1vcmVvdmVyIHRha2UgdGhvdSB1bnRvIHRoZWUgYW4gaXJvbiBwYW4sIGFuZCBzZXQgaXQgZm9yIGEgd2FsbCBvZiBpcm9uIGJldHdlZW4gdGhlZSBhbmQgdGhlIGNpdHk6IGFuZCBzZXQgdGh5IGZhY2UgYWdhaW5zdCBpdCwgYW5kIGl0IHNoYWxsIGJlIGJlc2llZ2VkLCBhbmQgdGhvdSBzaGFsdCBsYXkgc2llZ2UgYWdhaW5zdCBpdC4gVGhpcyBzaGFsbCBiZSBhIHNpZ24gdG8gdGhlIGhvdXNlIG9mIElzcmFlbC4KTGllIHRob3UgYWxzbyB1cG9uIHRoeSBsZWZ0IHNpZGUsIGFuZCBsYXkgdGhlIGluaXF1aXR5IG9mIHRoZSBob3VzZSBvZiBJc3JhZWwgdXBvbiBpdDogYWNjb3JkaW5nIHRvIHRoZSBudW1iZXIgb2YgdGhlIGRheXMgdGhhdCB0aG91IHNoYWx0IGxpZSB1cG9uIGl0IHRob3Ugc2hhbHQgYmVhciB0aGVpciBpbmlxdWl0eS4KRm9yIEkgaGF2ZSBsYWlkIHVwb24gdGhlZSB0aGUgeWVhcnMgb2YgdGhlaXIgaW5pcXVpdHksIGFjY29yZGluZyB0byB0aGUgbnVtYmVyIG9mIHRoZSBkYXlzLCB0aHJlZSBodW5kcmVkIGFuZCBuaW5ldHkgZGF5czogc28gc2hhbHQgdGhvdSBiZWFyIHRoZSBpbmlxdWl0eSBvZiB0aGUgaG91c2Ugb2YgSXNyYWVsLgpBbmQgd2hlbiB0aG91IGhhc3QgYWNjb21wbGlzaGVkIHRoZW0sIGxpZSBhZ2FpbiBvbiB0aHkgcmlnaHQgc2lkZSwgYW5kIHRob3Ugc2hhbHQgYmVhciB0aGUgaW5pcXVpdHkgb2YgdGhlIGhvdXNlIG9mIEp1ZGFoIGZvcnR5IGRheXM6IEkgaGF2ZSBhcHBvaW50ZWQgdGhlZSBlYWNoIGRheSBmb3IgYSB5ZWFyLgpUaGVyZWZvcmUgdGhvdSBzaGFsdCBzZXQgdGh5IGZhY2UgdG93YXJkIHRoZSBzaWVnZSBvZiBKZXJ1c2FsZW0sIGFuZCB0aGluZSBhcm0gc2hhbGwgYmUgdW5jb3ZlcmVkLCBhbmQgdGhvdSBzaGFsdCBwcm9waGVzeSBhZ2FpbnN0IGl0LgpBbmQsIGJlaG9sZCwgSSB3aWxsIGxheSBiYW5kcyB1cG9uIHRoZWUsIGFuZCB0aG91IHNoYWx0IG5vdCB0dXJuIHRoZWUgZnJvbSBvbmUgc2lkZSB0byBhbm90aGVyLCB0aWxsIHRob3UgaGFzdCBlbmRlZCB0aGUgZGF5cyBvZiB0aHkgc2llZ2UuClRha2UgdGhvdSBhbHNvIHVudG8gdGhlZSB3aGVhdCwgYW5kIGJhcmxleSwgYW5kIGJlYW5zLCBhbmQgbGVudGlsZXMsIGFuZCBtaWxsZXQsIGFuZCBmaXRjaGVzLCBhbmQgcHV0IHRoZW0gaW4gb25lIHZlc3NlbCwgYW5kIG1ha2UgdGhlZSBicmVhZCB0aGVyZW9mLCBhY2NvcmRpbmcgdG8gdGhlIG51bWJlciBvZiB0aGUgZGF5cyB0aGF0IHRob3Ugc2hhbHQgbGllIHVwb24gdGh5IHNpZGUsIHRocmVlIGh1bmRyZWQgYW5kIG5pbmV0eSBkYXlzIHNoYWx0IHRob3UgZWF0IHRoZXJlb2YuCkFuZCB0aHkgbWVhdCB3aGljaCB0aG91IHNoYWx0IGVhdCBzaGFsbCBiZSBieSB3ZWlnaHQsIHR3ZW50eSBzaGVrZWxzIGEgZGF5OiBmcm9tIHRpbWUgdG8gdGltZSBzaGFsdCB0aG91IGVhdCBpdC4KVGhvdSBzaGFsdCBkcmluayBhbHNvIHdhdGVyIGJ5IG1lYXN1cmUsIHRoZSBzaXh0aCBwYXJ0IG9mIGFuIGhpbjogZnJvbSB0aW1lIHRvIHRpbWUgc2hhbHQgdGhvdSBkcmluay4KQW5kIHRob3Ugc2hhbHQgZWF0IGl0IGFzIGJhcmxleSBjYWtlcywgYW5kIHRob3Ugc2hhbHQgYmFrZSBpdCB3aXRoIGR1bmcgdGhhdCBjb21ldGggb3V0IG9mIG1hbiwgaW4gdGhlaXIgc2lnaHQuCkFuZCB0aGUgTE9SRCBzYWlkLCBFdmVuIHRodXMgc2hhbGwgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBlYXQgdGhlaXIgZGVmaWxlZCBicmVhZCBhbW9uZyB0aGUgR2VudGlsZXMsIHdoaXRoZXIgSSB3aWxsIGRyaXZlIHRoZW0uClRoZW4gc2FpZCBJLCBBaCBMb3JkIEdPRCEgYmVob2xkLCBteSBzb3VsIGhhdGggbm90IGJlZW4gcG9sbHV0ZWQ6IGZvciBmcm9tIG15IHlvdXRoIHVwIGV2ZW4gdGlsbCBub3cgaGF2ZSBJIG5vdCBlYXRlbiBvZiB0aGF0IHdoaWNoIGRpZXRoIG9mIGl0c2VsZiwgb3IgaXMgdG9ybiBpbiBwaWVjZXM7IG5laXRoZXIgY2FtZSB0aGVyZSBhYm9taW5hYmxlIGZsZXNoIGludG8gbXkgbW91dGguClRoZW4gaGUgc2FpZCB1bnRvIG1lLCBMbywgSSBoYXZlIGdpdmVuIHRoZWUgY293J3MgZHVuZyBmb3IgbWFuJ3MgZHVuZywgYW5kIHRob3Ugc2hhbHQgcHJlcGFyZSB0aHkgYnJlYWQgdGhlcmV3aXRoLgpNb3Jlb3ZlciBoZSBzYWlkIHVudG8gbWUsIFNvbiBvZiBtYW4sIGJlaG9sZCwgSSB3aWxsIGJyZWFrIHRoZSBzdGFmZiBvZiBicmVhZCBpbiBKZXJ1c2FsZW06IGFuZCB0aGV5IHNoYWxsIGVhdCBicmVhZCBieSB3ZWlnaHQsIGFuZCB3aXRoIGNhcmU7IGFuZCB0aGV5IHNoYWxsIGRyaW5rIHdhdGVyIGJ5IG1lYXN1cmUsIGFuZCB3aXRoIGFzdG9uaXNobWVudDoKVGhhdCB0aGV5IG1heSB3YW50IGJyZWFkIGFuZCB3YXRlciwgYW5kIGJlIGFzdG9uaWVkIG9uZSB3aXRoIGFub3RoZXIsIGFuZCBjb25zdW1lIGF3YXkgZm9yIHRoZWlyIGluaXF1aXR5LgpBbmQgdGhvdSwgc29uIG9mIG1hbiwgdGFrZSB0aGVlIGEgc2hhcnAga25pZmUsIHRha2UgdGhlZSBhIGJhcmJlcidzIHJhem9yLCBhbmQgY2F1c2UgaXQgdG8gcGFzcyB1cG9uIHRoaW5lIGhlYWQgYW5kIHVwb24gdGh5IGJlYXJkOiB0aGVuIHRha2UgdGhlZSBiYWxhbmNlcyB0byB3ZWlnaCwgYW5kIGRpdmlkZSB0aGUgaGFpci4KVGhvdSBzaGFsdCBidXJuIHdpdGggZmlyZSBhIHRoaXJkIHBhcnQgaW4gdGhlIG1pZHN0IG9mIHRoZSBjaXR5LCB3aGVuIHRoZSBkYXlzIG9mIHRoZSBzaWVnZSBhcmUgZnVsZmlsbGVkOiBhbmQgdGhvdSBzaGFsdCB0YWtlIGEgdGhpcmQgcGFydCwgYW5kIHNtaXRlIGFib3V0IGl0IHdpdGggYSBrbmlmZTogYW5kIGEgdGhpcmQgcGFydCB0aG91IHNoYWx0IHNjYXR0ZXIgaW4gdGhlIHdpbmQ7IGFuZCBJIHdpbGwgZHJhdyBvdXQgYSBzd29yZCBhZnRlciB0aGVtLgpUaG91IHNoYWx0IGFsc28gdGFrZSB0aGVyZW9mIGEgZmV3IGluIG51bWJlciwgYW5kIGJpbmQgdGhlbSBpbiB0aHkgc2tpcnRzLgpUaGVuIHRha2Ugb2YgdGhlbSBhZ2FpbiwgYW5kIGNhc3QgdGhlbSBpbnRvIHRoZSBtaWRzdCBvZiB0aGUgZmlyZSwgYW5kIGJ1cm4gdGhlbSBpbiB0aGUgZmlyZTsgZm9yIHRoZXJlb2Ygc2hhbGwgYSBmaXJlIGNvbWUgZm9ydGggaW50byBhbGwgdGhlIGhvdXNlIG9mIElzcmFlbC4KVGh1cyBzYWl0aCB0aGUgTG9yZCBHT0Q7IFRoaXMgaXMgSmVydXNhbGVtOiBJIGhhdmUgc2V0IGl0IGluIHRoZSBtaWRzdCBvZiB0aGUgbmF0aW9ucyBhbmQgY291bnRyaWVzIHRoYXQgYXJlIHJvdW5kIGFib3V0IGhlci4KQW5kIHNoZSBoYXRoIGNoYW5nZWQgbXkganVkZ21lbnRzIGludG8gd2lja2VkbmVzcyBtb3JlIHRoYW4gdGhlIG5hdGlvbnMsIGFuZCBteSBzdGF0dXRlcyBtb3JlIHRoYW4gdGhlIGNvdW50cmllcyB0aGF0IGFyZSByb3VuZCBhYm91dCBoZXI6IGZvciB0aGV5IGhhdmUgcmVmdXNlZCBteSBqdWRnbWVudHMgYW5kIG15IHN0YXR1dGVzLCB0aGV5IGhhdmUgbm90IHdhbGtlZCBpbiB0aGVtLgpUaGVyZWZvcmUgdGh1cyBzYWl0aCB0aGUgTG9yZCBHT0Q7IEJlY2F1c2UgeWUgbXVsdGlwbGllZCBtb3JlIHRoYW4gdGhlIG5hdGlvbnMgdGhhdCBhcmUgcm91bmQgYWJvdXQgeW91LCBhbmQgaGF2ZSBub3Qgd2Fsa2VkIGluIG15IHN0YXR1dGVzLCBuZWl0aGVyIGhhdmUga2VwdCBteSBqdWRnbWVudHMsIG5laXRoZXIgaGF2ZSBkb25lIGFjY29yZGluZyB0byB0aGUganVkZ21lbnRzIG9mIHRoZSBuYXRpb25zIHRoYXQgYXJlIHJvdW5kIGFib3V0IHlvdTsKVGhlcmVmb3JlIHRodXMgc2FpdGggdGhlIExvcmQgR09EOyBCZWhvbGQsIEksIGV2ZW4gSSwgYW0gYWdhaW5zdCB0aGVlLCBhbmQgd2lsbCBleGVjdXRlIGp1ZGdtZW50cyBpbiB0aGUgbWlkc3Qgb2YgdGhlZSBpbiB0aGUgc2lnaHQgb2YgdGhlIG5hdGlvbnMuCkFuZCBJIHdpbGwgZG8gaW4gdGhlZSB0aGF0IHdoaWNoIEkgaGF2ZSBub3QgZG9uZSwgYW5kIHdoZXJldW50byBJIHdpbGwgbm90IGRvIGFueSBtb3JlIHRoZSBsaWtlLCBiZWNhdXNlIG9mIGFsbCB0aGluZSBhYm9taW5hdGlvbnMuClRoZXJlZm9yZSB0aGUgZmF0aGVycyBzaGFsbCBlYXQgdGhlIHNvbnMgaW4gdGhlIG1pZHN0IG9mIHRoZWUsIGFuZCB0aGUgc29ucyBzaGFsbCBlYXQgdGhlaXIgZmF0aGVyczsgYW5kIEkgd2lsbCBleGVjdXRlIGp1ZGdtZW50cyBpbiB0aGVlLCBhbmQgdGhlIHdob2xlIHJlbW5hbnQgb2YgdGhlZSB3aWxsIEkgc2NhdHRlciBpbnRvIGFsbCB0aGUgd2luZHMuCldoZXJlZm9yZSwgYXMgSSBsaXZlLCBzYWl0aCB0aGUgTG9yZCBHT0Q7IFN1cmVseSwgYmVjYXVzZSB0aG91IGhhc3QgZGVmaWxlZCBteSBzYW5jdHVhcnkgd2l0aCBhbGwgdGh5IGRldGVzdGFibGUgdGhpbmdzLCBhbmQgd2l0aCBhbGwgdGhpbmUgYWJvbWluYXRpb25zLCB0aGVyZWZvcmUgd2lsbCBJIGFsc28gZGltaW5pc2ggdGhlZTsgbmVpdGhlciBzaGFsbCBtaW5lIGV5ZSBzcGFyZSwgbmVpdGhlciB3aWxsIEkgaGF2ZSBhbnkgcGl0eS4KQSB0aGlyZCBwYXJ0IG9mIHRoZWUgc2hhbGwgZGllIHdpdGggdGhlIHBlc3RpbGVuY2UsIGFuZCB3aXRoIGZhbWluZSBzaGFsbCB0aGV5IGJlIGNvbnN1bWVkIGluIHRoZSBtaWRzdCBvZiB0aGVlOiBhbmQgYSB0aGlyZCBwYXJ0IHNoYWxsIGZhbGwgYnkgdGhlIHN3b3JkIHJvdW5kIGFib3V0IHRoZWU7IGFuZCBJIHdpbGwgc2NhdHRlciBhIHRoaXJkIHBhcnQgaW50byBhbGwgdGhlIHdpbmRzLCBhbmQgSSB3aWxsIGRyYXcgb3V0IGEgc3dvcmQgYWZ0ZXIgdGhlbS4KVGh1cyBzaGFsbCBtaW5lIGFuZ2VyIGJlIGFjY29tcGxpc2hlZCwgYW5kIEkgd2lsbCBjYXVzZSBteSBmdXJ5IHRvIHJlc3QgdXBvbiB0aGVtLCBhbmQgSSB3aWxsIGJlIGNvbWZvcnRlZDogYW5kIHRoZXkgc2hhbGwga25vdyB0aGF0IEkgdGhlIExPUkQgaGF2ZSBzcG9rZW4gaXQgaW4gbXkgemVhbCwgd2hlbiBJIGhhdmUgYWNjb21wbGlzaGVkIG15IGZ1cnkgaW4gdGhlbS4KTW9yZW92ZXIgSSB3aWxsIG1ha2UgdGhlZSB3YXN0ZSwgYW5kIGEgcmVwcm9hY2ggYW1vbmcgdGhlIG5hdGlvbnMgdGhhdCBhcmUgcm91bmQgYWJvdXQgdGhlZSwgaW4gdGhlIHNpZ2h0IG9mIGFsbCB0aGF0IHBhc3MgYnkuClNvIGl0IHNoYWxsIGJlIGEgcmVwcm9hY2ggYW5kIGEgdGF1bnQsIGFuIGluc3RydWN0aW9uIGFuZCBhbiBhc3RvbmlzaG1lbnQgdW50byB0aGUgbmF0aW9ucyB0aGF0IGFyZSByb3VuZCBhYm91dCB0aGVlLCB3aGVuIEkgc2hhbGwgZXhlY3V0ZSBqdWRnbWVudHMgaW4gdGhlZSBpbiBhbmdlciBhbmQgaW4gZnVyeSBhbmQgaW4gZnVyaW91cyByZWJ1a2VzLiBJIHRoZSBMT1JEIGhhdmUgc3Bva2VuIGl0LgpXaGVuIEkgc2hhbGwgc2VuZCB1cG9uIHRoZW0gdGhlIGV2aWwgYXJyb3dzIG9mIGZhbWluZSwgd2hpY2ggc2hhbGwgYmUgZm9yIHRoZWlyIGRlc3RydWN0aW9uLCBhbmQgd2hpY2ggSSB3aWxsIHNlbmQgdG8gZGVzdHJveSB5b3U6IGFuZCBJIHdpbGwgaW5jcmVhc2UgdGhlIGZhbWluZSB1cG9uIHlvdSwgYW5kIHdpbGwgYnJlYWsgeW91ciBzdGFmZiBvZiBicmVhZDoKU28gd2lsbCBJIHNlbmQgdXBvbiB5b3UgZmFtaW5lIGFuZCBldmlsIGJlYXN0cywgYW5kIHRoZXkgc2hhbGwgYmVyZWF2ZSB0aGVlOiBhbmQgcGVzdGlsZW5jZSBhbmQgYmxvb2Qgc2hhbGwgcGFzcyB0aHJvdWdoIHRoZWU7IGFuZCBJIHdpbGwgYnJpbmcgdGhlIHN3b3JkIHVwb24gdGhlZS4gSSB0aGUgTE9SRCBoYXZlIHNwb2tlbiBpdC4KQW5kIHRoZSB3b3JkIG9mIHRoZSBMT1JEIGNhbWUgdW50byBtZSwgc2F5aW5nLApTb24gb2YgbWFuLCBzZXQgdGh5IGZhY2UgdG93YXJkIHRoZSBtb3VudGFpbnMgb2YgSXNyYWVsLCBhbmQgcHJvcGhlc3kgYWdhaW5zdCB0aGVtLApBbmQgc2F5LCBZZSBtb3VudGFpbnMgb2YgSXNyYWVsLCBoZWFyIHRoZSB3b3JkIG9mIHRoZSBMb3JkIEdPRDsgVGh1cyBzYWl0aCB0aGUgTG9yZCBHT0QgdG8gdGhlIG1vdW50YWlucywgYW5kIHRvIHRoZSBoaWxscywgdG8gdGhlIHJpdmVycywgYW5kIHRvIHRoZSB2YWxsZXlzOyBCZWhvbGQsIEksIGV2ZW4gSSwgd2lsbCBicmluZyBhIHN3b3JkIHVwb24geW91LCBhbmQgSSB3aWxsIGRlc3Ryb3kgeW91ciBoaWdoIHBsYWNlcy4KQW5kIHlvdXIgYWx0YXJzIHNoYWxsIGJlIGRlc29sYXRlLCBhbmQgeW91ciBpbWFnZXMgc2hhbGwgYmUgYnJva2VuOiBhbmQgSSB3aWxsIGNhc3QgZG93biB5b3VyIHNsYWluIG1lbiBiZWZvcmUgeW91ciBpZG9scy4KQW5kIEkgd2lsbCBsYXkgdGhlIGRlYWQgY2FyY2FzZXMgb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBiZWZvcmUgdGhlaXIgaWRvbHM7IGFuZCBJIHdpbGwgc2NhdHRlciB5b3VyIGJvbmVzIHJvdW5kIGFib3V0IHlvdXIgYWx0YXJzLgpJbiBhbGwgeW91ciBkd2VsbGluZ3BsYWNlcyB0aGUgY2l0aWVzIHNoYWxsIGJlIGxhaWQgd2FzdGUsIGFuZCB0aGUgaGlnaCBwbGFjZXMgc2hhbGwgYmUgZGVzb2xhdGU7IHRoYXQgeW91ciBhbHRhcnMgbWF5IGJlIGxhaWQgd2FzdGUgYW5kIG1hZGUgZGVzb2xhdGUsIGFuZCB5b3VyIGlkb2xzIG1heSBiZSBicm9rZW4gYW5kIGNlYXNlLCBhbmQgeW91ciBpbWFnZXMgbWF5IGJlIGN1dCBkb3duLCBhbmQgeW91ciB3b3JrcyBtYXkgYmUgYWJvbGlzaGVkLgpBbmQgdGhlIHNsYWluIHNoYWxsIGZhbGwgaW4gdGhlIG1pZHN0IG9mIHlvdSwgYW5kIHllIHNoYWxsIGtub3cgdGhhdCBJIGFtIHRoZSBMT1JELgpZZXQgd2lsbCBJIGxlYXZlIGEgcmVtbmFudCwgdGhhdCB5ZSBtYXkgaGF2ZSBzb21lIHRoYXQgc2hhbGwgZXNjYXBlIHRoZSBzd29yZCBhbW9uZyB0aGUgbmF0aW9ucywgd2hlbiB5ZSBzaGFsbCBiZSBzY2F0dGVyZWQgdGhyb3VnaCB0aGUgY291bnRyaWVzLgpBbmQgdGhleSB0aGF0IGVzY2FwZSBvZiB5b3Ugc2hhbGwgcmVtZW1iZXIgbWUgYW1vbmcgdGhlIG5hdGlvbnMgd2hpdGhlciB0aGV5IHNoYWxsIGJlIGNhcnJpZWQgY2FwdGl2ZXMsIGJlY2F1c2UgSSBhbSBicm9rZW4gd2l0aCB0aGVpciB3aG9yaXNoIGhlYXJ0LCB3aGljaCBoYXRoIGRlcGFydGVkIGZyb20gbWUsIGFuZCB3aXRoIHRoZWlyIGV5ZXMsIHdoaWNoIGdvIGEgd2hvcmluZyBhZnRlciB0aGVpciBpZG9sczogYW5kIHRoZXkgc2hhbGwgbG90aGUgdGhlbXNlbHZlcyBmb3IgdGhlIGV2aWxzIHdoaWNoIHRoZXkgaGF2ZSBjb21taXR0ZWQgaW4gYWxsIHRoZWlyIGFib21pbmF0aW9ucy4KQW5kIHRoZXkgc2hhbGwga25vdyB0aGF0IEkgYW0gdGhlIExPUkQsIGFuZCB0aGF0IEkgaGF2ZSBub3Qgc2FpZCBpbiB2YWluIHRoYXQgSSB3b3VsZCBkbyB0aGlzIGV2aWwgdW50byB0aGVtLgpUaHVzIHNhaXRoIHRoZSBMb3JkIEdPRDsgU21pdGUgd2l0aCB0aGluZSBoYW5kLCBhbmQgc3RhbXAgd2l0aCB0aHkgZm9vdCwgYW5kIHNheSwgQWxhcyBmb3IgYWxsIHRoZSBldmlsIGFib21pbmF0aW9ucyBvZiB0aGUgaG91c2Ugb2YgSXNyYWVsISBmb3IgdGhleSBzaGFsbCBmYWxsIGJ5IHRoZSBzd29yZCwgYnkgdGhlIGZhbWluZSwgYW5kIGJ5IHRoZSBwZXN0aWxlbmNlLgpIZSB0aGF0IGlzIGZhciBvZmYgc2hhbGwgZGllIG9mIHRoZSBwZXN0aWxlbmNlOyBhbmQgaGUgdGhhdCBpcyBuZWFyIHNoYWxsIGZhbGwgYnkgdGhlIHN3b3JkOyBhbmQgaGUgdGhhdCByZW1haW5ldGggYW5kIGlzIGJlc2llZ2VkIHNoYWxsIGRpZSBieSB0aGUgZmFtaW5lOiB0aHVzIHdpbGwgSSBhY2NvbXBsaXNoIG15IGZ1cnkgdXBvbiB0aGVtLgpUaGVuIHNoYWxsIHllIGtub3cgdGhhdCBJIGFtIHRoZSBMT1JELCB3aGVuIHRoZWlyIHNsYWluIG1lbiBzaGFsbCBiZSBhbW9uZyB0aGVpciBpZG9scyByb3VuZCBhYm91dCB0aGVpciBhbHRhcnMsIHVwb24gZXZlcnkgaGlnaCBoaWxsLCBpbiBhbGwgdGhlIHRvcHMgb2YgdGhlIG1vdW50YWlucywgYW5kIHVuZGVyIGV2ZXJ5IGdyZWVuIHRyZWUsIGFuZCB1bmRlciBldmVyeSB0aGljayBvYWssIHRoZSBwbGFjZSB3aGVyZSB0aGV5IGRpZCBvZmZlciBzd2VldCBzYXZvdXIgdG8gYWxsIHRoZWlyIGlkb2xzLgpTbyB3aWxsIEkgc3RyZXRjaCBvdXQgbXkgaGFuZCB1cG9uIHRoZW0sIGFuZCBtYWtlIHRoZSBsYW5kIGRlc29sYXRlLCB5ZWEsIG1vcmUgZGVzb2xhdGUgdGhhbiB0aGUgd2lsZGVybmVzcyB0b3dhcmQgRGlibGF0aCwgaW4gYWxsIHRoZWlyIGhhYml0YXRpb25zOiBhbmQgdGhleSBzaGFsbCBrbm93IHRoYXQgSSBhbSB0aGUgTE9SRC4KTW9yZW92ZXIgdGhlIHdvcmQgb2YgdGhlIExPUkQgY2FtZSB1bnRvIG1lLCBzYXlpbmcsCkFsc28sIHRob3Ugc29uIG9mIG1hbiwgdGh1cyBzYWl0aCB0aGUgTG9yZCBHT0QgdW50byB0aGUgbGFuZCBvZiBJc3JhZWw7IEFuIGVuZCwgdGhlIGVuZCBpcyBjb21lIHVwb24gdGhlIGZvdXIgY29ybmVycyBvZiB0aGUgbGFuZC4KTm93IGlzIHRoZSBlbmQgY29tZSB1cG9uIHRoZWUsIGFuZCBJIHdpbGwgc2VuZCBtaW5lIGFuZ2VyIHVwb24gdGhlZSwgYW5kIHdpbGwganVkZ2UgdGhlZSBhY2NvcmRpbmcgdG8gdGh5IHdheXMsIGFuZCB3aWxsIHJlY29tcGVuc2UgdXBvbiB0aGVlIGFsbCB0aGluZSBhYm9taW5hdGlvbnMuCkFuZCBtaW5lIGV5ZSBzaGFsbCBub3Qgc3BhcmUgdGhlZSwgbmVpdGhlciB3aWxsIEkgaGF2ZSBwaXR5OiBidXQgSSB3aWxsIHJlY29tcGVuc2UgdGh5IHdheXMgdXBvbiB0aGVlLCBhbmQgdGhpbmUgYWJvbWluYXRpb25zIHNoYWxsIGJlIGluIHRoZSBtaWRzdCBvZiB0aGVlOiBhbmQgeWUgc2hhbGwga25vdyB0aGF0IEkgYW0gdGhlIExPUkQuClRodXMgc2FpdGggdGhlIExvcmQgR09EOyBBbiBldmlsLCBhbiBvbmx5IGV2aWwsIGJlaG9sZCwgaXMgY29tZS4KQW4gZW5kIGlzIGNvbWUsIHRoZSBlbmQgaXMgY29tZTogaXQgd2F0Y2hldGggZm9yIHRoZWU7IGJlaG9sZCwgaXQgaXMgY29tZS4KVGhlIG1vcm5pbmcgaXMgY29tZSB1bnRvIHRoZWUsIE8gdGhvdSB0aGF0IGR3ZWxsZXN0IGluIHRoZSBsYW5kOiB0aGUgdGltZSBpcyBjb21lLCB0aGUgZGF5IG9mIHRyb3VibGUgaXMgbmVhciwgYW5kIG5vdCB0aGUgc291bmRpbmcgYWdhaW4gb2YgdGhlIG1vdW50YWlucy4KTm93IHdpbGwgSSBzaG9ydGx5IHBvdXIgb3V0IG15IGZ1cnkgdXBvbiB0aGVlLCBhbmQgYWNjb21wbGlzaCBtaW5lIGFuZ2VyIHVwb24gdGhlZTogYW5kIEkgd2lsbCBqdWRnZSB0aGVlIGFjY29yZGluZyB0byB0aHkgd2F5cywgYW5kIHdpbGwgcmVjb21wZW5zZSB0aGVlIGZvciBhbGwgdGhpbmUgYWJvbWluYXRpb25zLgpBbmQgbWluZSBleWUgc2hhbGwgbm90IHNwYXJlLCBuZWl0aGVyIHdpbGwgSSBoYXZlIHBpdHk6IEkgd2lsbCByZWNvbXBlbnNlIHRoZWUgYWNjb3JkaW5nIHRvIHRoeSB3YXlzIGFuZCB0aGluZSBhYm9taW5hdGlvbnMgdGhhdCBhcmUgaW4gdGhlIG1pZHN0IG9mIHRoZWU7IGFuZCB5ZSBzaGFsbCBrbm93IHRoYXQgSSBhbSB0aGUgTE9SRCB0aGF0IHNtaXRldGguCkJlaG9sZCB0aGUgZGF5LCBiZWhvbGQsIGl0IGlzIGNvbWU6IHRoZSBtb3JuaW5nIGlzIGdvbmUgZm9ydGg7IHRoZSByb2QgaGF0aCBibG9zc29tZWQsIHByaWRlIGhhdGggYnVkZGVkLgpWaW9sZW5jZSBpcyByaXNlbiB1cCBpbnRvIGEgcm9kIG9mIHdpY2tlZG5lc3M6IG5vbmUgb2YgdGhlbSBzaGFsbCByZW1haW4sIG5vciBvZiB0aGVpciBtdWx0aXR1ZGUsIG5vciBvZiBhbnkgb2YgdGhlaXInczogbmVpdGhlciBzaGFsbCB0aGVyZSBiZSB3YWlsaW5nIGZvciB0aGVtLgpUaGUgdGltZSBpcyBjb21lLCB0aGUgZGF5IGRyYXdldGggbmVhcjogbGV0IG5vdCB0aGUgYnV5ZXIgcmVqb2ljZSwgbm9yIHRoZSBzZWxsZXIgbW91cm46IGZvciB3cmF0aCBpcyB1cG9uIGFsbCB0aGUgbXVsdGl0dWRlIHRoZXJlb2YuCkZvciB0aGUgc2VsbGVyIHNoYWxsIG5vdCByZXR1cm4gdG8gdGhhdCB3aGljaCBpcyBzb2xkLCBhbHRob3VnaCB0aGV5IHdlcmUgeWV0IGFsaXZlOiBmb3IgdGhlIHZpc2lvbiBpcyB0b3VjaGluZyB0aGUgd2hvbGUgbXVsdGl0dWRlIHRoZXJlb2YsIHdoaWNoIHNoYWxsIG5vdCByZXR1cm47IG5laXRoZXIgc2hhbGwgYW55IHN0cmVuZ3RoZW4gaGltc2VsZiBpbiB0aGUgaW5pcXVpdHkgb2YgaGlzIGxpZmUuClRoZXkgaGF2ZSBibG93biB0aGUgdHJ1bXBldCwgZXZlbiB0byBtYWtlIGFsbCByZWFkeTsgYnV0IG5vbmUgZ29ldGggdG8gdGhlIGJhdHRsZTogZm9yIG15IHdyYXRoIGlzIHVwb24gYWxsIHRoZSBtdWx0aXR1ZGUgdGhlcmVvZi4KVGhlIHN3b3JkIGlzIHdpdGhvdXQsIGFuZCB0aGUgcGVzdGlsZW5jZSBhbmQgdGhlIGZhbWluZSB3aXRoaW46IGhlIHRoYXQgaXMgaW4gdGhlIGZpZWxkIHNoYWxsIGRpZSB3aXRoIHRoZSBzd29yZDsgYW5kIGhlIHRoYXQgaXMgaW4gdGhlIGNpdHksIGZhbWluZSBhbmQgcGVzdGlsZW5jZSBzaGFsbCBkZXZvdXIgaGltLgpCdXQgdGhleSB0aGF0IGVzY2FwZSBvZiB0aGVtIHNoYWxsIGVzY2FwZSwgYW5kIHNoYWxsIGJlIG9uIHRoZSBtb3VudGFpbnMgbGlrZSBkb3ZlcyBvZiB0aGUgdmFsbGV5cywgYWxsIG9mIHRoZW0gbW91cm5pbmcsIGV2ZXJ5IG9uZSBmb3IgaGlzIGluaXF1aXR5LgpBbGwgaGFuZHMgc2hhbGwgYmUgZmVlYmxlLCBhbmQgYWxsIGtuZWVzIHNoYWxsIGJlIHdlYWsgYXMgd2F0ZXIuClRoZXkgc2hhbGwgYWxzbyBnaXJkIHRoZW1zZWx2ZXMgd2l0aCBzYWNrY2xvdGgsIGFuZCBob3Jyb3Igc2hhbGwgY292ZXIgdGhlbTsgYW5kIHNoYW1lIHNoYWxsIGJlIHVwb24gYWxsIGZhY2VzLCBhbmQgYmFsZG5lc3MgdXBvbiBhbGwgdGhlaXIgaGVhZHMuClRoZXkgc2hhbGwgY2FzdCB0aGVpciBzaWx2ZXIgaW4gdGhlIHN0cmVldHMsIGFuZCB0aGVpciBnb2xkIHNoYWxsIGJlIHJlbW92ZWQ6IHRoZWlyIHNpbHZlciBhbmQgdGhlaXIgZ29sZCBzaGFsbCBub3QgYmUgYWJsZSB0byBkZWxpdmVyIHRoZW0gaW4gdGhlIGRheSBvZiB0aGUgd3JhdGggb2YgdGhlIExPUkQ6IHRoZXkgc2hhbGwgbm90IHNhdGlzZnkgdGhlaXIgc291bHMsIG5laXRoZXIgZmlsbCB0aGVpciBib3dlbHM6IGJlY2F1c2UgaXQgaXMgdGhlIHN0dW1ibGluZ2Jsb2NrIG9mIHRoZWlyIGluaXF1aXR5LgpBcyBmb3IgdGhlIGJlYXV0eSBvZiBoaXMgb3JuYW1lbnQsIGhlIHNldCBpdCBpbiBtYWplc3R5OiBidXQgdGhleSBtYWRlIHRoZSBpbWFnZXMgb2YgdGhlaXIgYWJvbWluYXRpb25zIGFuZCBvZiB0aGVpciBkZXRlc3RhYmxlIHRoaW5ncyB0aGVyZWluOiB0aGVyZWZvcmUgaGF2ZSBJIHNldCBpdCBmYXIgZnJvbSB0aGVtLgpBbmQgSSB3aWxsIGdpdmUgaXQgaW50byB0aGUgaGFuZHMgb2YgdGhlIHN0cmFuZ2VycyBmb3IgYSBwcmV5LCBhbmQgdG8gdGhlIHdpY2tlZCBvZiB0aGUgZWFydGggZm9yIGEgc3BvaWw7IGFuZCB0aGV5IHNoYWxsIHBvbGx1dGUgaXQuCk15IGZhY2Ugd2lsbCBJIHR1cm4gYWxzbyBmcm9tIHRoZW0sIGFuZCB0aGV5IHNoYWxsIHBvbGx1dGUgbXkgc2VjcmV0IHBsYWNlOiBmb3IgdGhlIHJvYmJlcnMgc2hhbGwgZW50ZXIgaW50byBpdCwgYW5kIGRlZmlsZSBpdC4KTWFrZSBhIGNoYWluOiBmb3IgdGhlIGxhbmQgaXMgZnVsbCBvZiBibG9vZHkgY3JpbWVzLCBhbmQgdGhlIGNpdHkgaXMgZnVsbCBvZiB2aW9sZW5jZS4KV2hlcmVmb3JlIEkgd2lsbCBicmluZyB0aGUgd29yc3Qgb2YgdGhlIGhlYXRoZW4sIGFuZCB0aGV5IHNoYWxsIHBvc3Nlc3MgdGhlaXIgaG91c2VzOiBJIHdpbGwgYWxzbyBtYWtlIHRoZSBwb21wIG9mIHRoZSBzdHJvbmcgdG8gY2Vhc2U7IGFuZCB0aGVpciBob2x5IHBsYWNlcyBzaGFsbCBiZSBkZWZpbGVkLgpEZXN0cnVjdGlvbiBjb21ldGg7IGFuZCB0aGV5IHNoYWxsIHNlZWsgcGVhY2UsIGFuZCB0aGVyZSBzaGFsbCBiZSBub25lLgpNaXNjaGllZiBzaGFsbCBjb21lIHVwb24gbWlzY2hpZWYsIGFuZCBydW1vdXIgc2hhbGwgYmUgdXBvbiBydW1vdXI7IHRoZW4gc2hhbGwgdGhleSBzZWVrIGEgdmlzaW9uIG9mIHRoZSBwcm9waGV0OyBidXQgdGhlIGxhdyBzaGFsbCBwZXJpc2ggZnJvbSB0aGUgcHJpZXN0LCBhbmQgY291bnNlbCBmcm9tIHRoZSBhbmNpZW50cy4KVGhlIGtpbmcgc2hhbGwgbW91cm4sIGFuZCB0aGUgcHJpbmNlIHNoYWxsIGJlIGNsb3RoZWQgd2l0aCBkZXNvbGF0aW9uLCBhbmQgdGhlIGhhbmRzIG9mIHRoZSBwZW9wbGUgb2YgdGhlIGxhbmQgc2hhbGwgYmUgdHJvdWJsZWQ6IEkgd2lsbCBkbyB1bnRvIHRoZW0gYWZ0ZXIgdGhlaXIgd2F5LCBhbmQgYWNjb3JkaW5nIHRvIHRoZWlyIGRlc2VydHMgd2lsbCBJIGp1ZGdlIHRoZW07IGFuZCB0aGV5IHNoYWxsIGtub3cgdGhhdCBJIGFtIHRoZSBMT1JELgpBbmQgaXQgY2FtZSB0byBwYXNzIGluIHRoZSBzaXh0aCB5ZWFyLCBpbiB0aGUgc2l4dGggbW9udGgsIGluIHRoZSBmaWZ0aCBkYXkgb2YgdGhlIG1vbnRoLCBhcyBJIHNhdCBpbiBtaW5lIGhvdXNlLCBhbmQgdGhlIGVsZGVycyBvZiBKdWRhaCBzYXQgYmVmb3JlIG1lLCB0aGF0IHRoZSBoYW5kIG9mIHRoZSBMb3JkIEdPRCBmZWxsIHRoZXJlIHVwb24gbWUuClRoZW4gSSBiZWhlbGQsIGFuZCBsbyBhIGxpa2VuZXNzIGFzIHRoZSBhcHBlYXJhbmNlIG9mIGZpcmU6IGZyb20gdGhlIGFwcGVhcmFuY2Ugb2YgaGlzIGxvaW5zIGV2ZW4gZG93bndhcmQsIGZpcmU7IGFuZCBmcm9tIGhpcyBsb2lucyBldmVuIHVwd2FyZCwgYXMgdGhlIGFwcGVhcmFuY2Ugb2YgYnJpZ2h0bmVzcywgYXMgdGhlIGNvbG91ciBvZiBhbWJlci4KQW5kIGhlIHB1dCBmb3J0aCB0aGUgZm9ybSBvZiBhbiBoYW5kLCBhbmQgdG9vayBtZSBieSBhIGxvY2sgb2YgbWluZSBoZWFkOyBhbmQgdGhlIHNwaXJpdCBsaWZ0ZWQgbWUgdXAgYmV0d2VlbiB0aGUgZWFydGggYW5kIHRoZSBoZWF2ZW4sIGFuZCBicm91Z2h0IG1lIGluIHRoZSB2aXNpb25zIG9mIEdvZCB0byBKZXJ1c2FsZW0sIHRvIHRoZSBkb29yIG9mIHRoZSBpbm5lciBnYXRlIHRoYXQgbG9va2V0aCB0b3dhcmQgdGhlIG5vcnRoOyB3aGVyZSB3YXMgdGhlIHNlYXQgb2YgdGhlIGltYWdlIG9mIGplYWxvdXN5LCB3aGljaCBwcm92b2tldGggdG8gamVhbG91c3kuCkFuZCwgYmVob2xkLCB0aGUgZ2xvcnkgb2YgdGhlIEdvZCBvZiBJc3JhZWwgd2FzIHRoZXJlLCBhY2NvcmRpbmcgdG8gdGhlIHZpc2lvbiB0aGF0IEkgc2F3IGluIHRoZSBwbGFpbi4KVGhlbiBzYWlkIGhlIHVudG8gbWUsIFNvbiBvZiBtYW4sIGxpZnQgdXAgdGhpbmUgZXllcyBub3cgdGhlIHdheSB0b3dhcmQgdGhlIG5vcnRoLiBTbyBJIGxpZnRlZCB1cCBtaW5lIGV5ZXMgdGhlIHdheSB0b3dhcmQgdGhlIG5vcnRoLCBhbmQgYmVob2xkIG5vcnRod2FyZCBhdCB0aGUgZ2F0ZSBvZiB0aGUgYWx0YXIgdGhpcyBpbWFnZSBvZiBqZWFsb3VzeSBpbiB0aGUgZW50cnkuCkhlIHNhaWQgZnVydGhlcm1vcmUgdW50byBtZSwgU29uIG9mIG1hbiwgc2Vlc3QgdGhvdSB3aGF0IHRoZXkgZG8/IGV2ZW4gdGhlIGdyZWF0IGFib21pbmF0aW9ucyB0aGF0IHRoZSBob3VzZSBvZiBJc3JhZWwgY29tbWl0dGV0aCBoZXJlLCB0aGF0IEkgc2hvdWxkIGdvIGZhciBvZmYgZnJvbSBteSBzYW5jdHVhcnk/IGJ1dCB0dXJuIHRoZWUgeWV0IGFnYWluLCBhbmQgdGhvdSBzaGFsdCBzZWUgZ3JlYXRlciBhYm9taW5hdGlvbnMuCkFuZCBoZSBicm91Z2h0IG1lIHRvIHRoZSBkb29yIG9mIHRoZSBjb3VydDsgYW5kIHdoZW4gSSBsb29rZWQsIGJlaG9sZCBhIGhvbGUgaW4gdGhlIHdhbGwuClRoZW4gc2FpZCBoZSB1bnRvIG1lLCBTb24gb2YgbWFuLCBkaWcgbm93IGluIHRoZSB3YWxsOiBhbmQgd2hlbiBJIGhhZCBkaWdnZWQgaW4gdGhlIHdhbGwsIGJlaG9sZCBhIGRvb3IuCkFuZCBoZSBzYWlkIHVudG8gbWUsIEdvIGluLCBhbmQgYmVob2xkIHRoZSB3aWNrZWQgYWJvbWluYXRpb25zIHRoYXQgdGhleSBkbyBoZXJlLgpTbyBJIHdlbnQgaW4gYW5kIHNhdzsgYW5kIGJlaG9sZCBldmVyeSBmb3JtIG9mIGNyZWVwaW5nIHRoaW5ncywgYW5kIGFib21pbmFibGUgYmVhc3RzLCBhbmQgYWxsIHRoZSBpZG9scyBvZiB0aGUgaG91c2Ugb2YgSXNyYWVsLCBwb3VydHJheWVkIHVwb24gdGhlIHdhbGwgcm91bmQgYWJvdXQuCkFuZCB0aGVyZSBzdG9vZCBiZWZvcmUgdGhlbSBzZXZlbnR5IG1lbiBvZiB0aGUgYW5jaWVudHMgb2YgdGhlIGhvdXNlIG9mIElzcmFlbCwgYW5kIGluIHRoZSBtaWRzdCBvZiB0aGVtIHN0b29kIEphYXphbmlhaCB0aGUgc29uIG9mIFNoYXBoYW4sIHdpdGggZXZlcnkgbWFuIGhpcyBjZW5zZXIgaW4gaGlzIGhhbmQ7IGFuZCBhIHRoaWNrIGNsb3VkIG9mIGluY2Vuc2Ugd2VudCB1cC4KVGhlbiBzYWlkIGhlIHVudG8gbWUsIFNvbiBvZiBtYW4sIGhhc3QgdGhvdSBzZWVuIHdoYXQgdGhlIGFuY2llbnRzIG9mIHRoZSBob3VzZSBvZiBJc3JhZWwgZG8gaW4gdGhlIGRhcmssIGV2ZXJ5IG1hbiBpbiB0aGUgY2hhbWJlcnMgb2YgaGlzIGltYWdlcnk/IGZvciB0aGV5IHNheSwgdGhlIExPUkQgc2VldGggdXMgbm90OyB0aGUgTE9SRCBoYXRoIGZvcnNha2VuIHRoZSBlYXJ0aC4KSGUgc2FpZCBhbHNvIHVudG8gbWUsIFR1cm4gdGhlZSB5ZXQgYWdhaW4sIGFuZCB0aG91IHNoYWx0IHNlZSBncmVhdGVyIGFib21pbmF0aW9ucyB0aGF0IHRoZXkgZG8uClRoZW4gaGUgYnJvdWdodCBtZSB0byB0aGUgZG9vciBvZiB0aGUgZ2F0ZSBvZiB0aGUgTE9SRCdzIGhvdXNlIHdoaWNoIHdhcyB0b3dhcmQgdGhlIG5vcnRoOyBhbmQsIGJlaG9sZCwgdGhlcmUgc2F0IHdvbWVuIHdlZXBpbmcgZm9yIFRhbW11ei4KVGhlbiBzYWlkIGhlIHVudG8gbWUsIEhhc3QgdGhvdSBzZWVuIHRoaXMsIE8gc29uIG9mIG1hbj8gdHVybiB0aGVlIHlldCBhZ2FpbiwgYW5kIHRob3Ugc2hhbHQgc2VlIGdyZWF0ZXIgYWJvbWluYXRpb25zIHRoYW4gdGhlc2UuCkFuZCBoZSBicm91Z2h0IG1lIGludG8gdGhlIGlubmVyIGNvdXJ0IG9mIHRoZSBMT1JEJ3MgaG91c2UsIGFuZCwgYmVob2xkLCBhdCB0aGUgZG9vciBvZiB0aGUgdGVtcGxlIG9mIHRoZSBMT1JELCBiZXR3ZWVuIHRoZSBwb3JjaCBhbmQgdGhlIGFsdGFyLCB3ZXJlIGFib3V0IGZpdmUgYW5kIHR3ZW50eSBtZW4sIHdpdGggdGhlaXIgYmFja3MgdG93YXJkIHRoZSB0ZW1wbGUgb2YgdGhlIExPUkQsIGFuZCB0aGVpciBmYWNlcyB0b3dhcmQgdGhlIGVhc3Q7IGFuZCB0aGV5IHdvcnNoaXBwZWQgdGhlIHN1biB0b3dhcmQgdGhlIGVhc3QuClRoZW4gaGUgc2FpZCB1bnRvIG1lLCBIYXN0IHRob3Ugc2VlbiB0aGlzLCBPIHNvbiBvZiBtYW4/IElzIGl0IGEgbGlnaHQgdGhpbmcgdG8gdGhlIGhvdXNlIG9mIEp1ZGFoIHRoYXQgdGhleSBjb21taXQgdGhlIGFib21pbmF0aW9ucyB3aGljaCB0aGV5IGNvbW1pdCBoZXJlPyBmb3IgdGhleSBoYXZlIGZpbGxlZCB0aGUgbGFuZCB3aXRoIHZpb2xlbmNlLCBhbmQgaGF2ZSByZXR1cm5lZCB0byBwcm92b2tlIG1lIHRvIGFuZ2VyOiBhbmQsIGxvLCB0aGV5IHB1dCB0aGUgYnJhbmNoIHRvIHRoZWlyIG5vc2UuClRoZXJlZm9yZSB3aWxsIEkgYWxzbyBkZWFsIGluIGZ1cnk6IG1pbmUgZXllIHNoYWxsIG5vdCBzcGFyZSwgbmVpdGhlciB3aWxsIEkgaGF2ZSBwaXR5OiBhbmQgdGhvdWdoIHRoZXkgY3J5IGluIG1pbmUgZWFycyB3aXRoIGEgbG91ZCB2b2ljZSwgeWV0IHdpbGwgSSBub3QgaGVhciB0aGVtLgpIZSBjcmllZCBhbHNvIGluIG1pbmUgZWFycyB3aXRoIGEgbG91ZCB2b2ljZSwgc2F5aW5nLCBDYXVzZSB0aGVtIHRoYXQgaGF2ZSBjaGFyZ2Ugb3ZlciB0aGUgY2l0eSB0byBkcmF3IG5lYXIsIGV2ZW4gZXZlcnkgbWFuIHdpdGggaGlzIGRlc3Ryb3lpbmcgd2VhcG9uIGluIGhpcyBoYW5kLgpBbmQsIGJlaG9sZCwgc2l4IG1lbiBjYW1lIGZyb20gdGhlIHdheSBvZiB0aGUgaGlnaGVyIGdhdGUsIHdoaWNoIGxpZXRoIHRvd2FyZCB0aGUgbm9ydGgsIGFuZCBldmVyeSBtYW4gYSBzbGF1Z2h0ZXIgd2VhcG9uIGluIGhpcyBoYW5kOyBhbmQgb25lIG1hbiBhbW9uZyB0aGVtIHdhcyBjbG90aGVkIHdpdGggbGluZW4sIHdpdGggYSB3cml0ZXIncyBpbmtob3JuIGJ5IGhpcyBzaWRlOiBhbmQgdGhleSB3ZW50IGluLCBhbmQgc3Rvb2QgYmVzaWRlIHRoZSBicmFzZW4gYWx0YXIuCkFuZCB0aGUgZ2xvcnkgb2YgdGhlIEdvZCBvZiBJc3JhZWwgd2FzIGdvbmUgdXAgZnJvbSB0aGUgY2hlcnViLCB3aGVyZXVwb24gaGUgd2FzLCB0byB0aGUgdGhyZXNob2xkIG9mIHRoZSBob3VzZS4gQW5kIGhlIGNhbGxlZCB0byB0aGUgbWFuIGNsb3RoZWQgd2l0aCBsaW5lbiwgd2hpY2ggaGFkIHRoZSB3cml0ZXIncyBpbmtob3JuIGJ5IGhpcyBzaWRlOwpBbmQgdGhlIExPUkQgc2FpZCB1bnRvIGhpbSwgR28gdGhyb3VnaCB0aGUgbWlkc3Qgb2YgdGhlIGNpdHksIHRocm91Z2ggdGhlIG1pZHN0IG9mIEplcnVzYWxlbSwgYW5kIHNldCBhIG1hcmsgdXBvbiB0aGUgZm9yZWhlYWRzIG9mIHRoZSBtZW4gdGhhdCBzaWdoIGFuZCB0aGF0IGNyeSBmb3IgYWxsIHRoZSBhYm9taW5hdGlvbnMgdGhhdCBiZSBkb25lIGluIHRoZSBtaWRzdCB0aGVyZW9mLgpBbmQgdG8gdGhlIG90aGVycyBoZSBzYWlkIGluIG1pbmUgaGVhcmluZywgR28geWUgYWZ0ZXIgaGltIHRocm91Z2ggdGhlIGNpdHksIGFuZCBzbWl0ZTogbGV0IG5vdCB5b3VyIGV5ZSBzcGFyZSwgbmVpdGhlciBoYXZlIHllIHBpdHk6ClNsYXkgdXR0ZXJseSBvbGQgYW5kIHlvdW5nLCBib3RoIG1haWRzLCBhbmQgbGl0dGxlIGNoaWxkcmVuLCBhbmQgd29tZW46IGJ1dCBjb21lIG5vdCBuZWFyIGFueSBtYW4gdXBvbiB3aG9tIGlzIHRoZSBtYXJrOyBhbmQgYmVnaW4gYXQgbXkgc2FuY3R1YXJ5LiBUaGVuIHRoZXkgYmVnYW4gYXQgdGhlIGFuY2llbnQgbWVuIHdoaWNoIHdlcmUgYmVmb3JlIHRoZSBob3VzZS4KQW5kIGhlIHNhaWQgdW50byB0aGVtLCBEZWZpbGUgdGhlIGhvdXNlLCBhbmQgZmlsbCB0aGUgY291cnRzIHdpdGggdGhlIHNsYWluOiBnbyB5ZSBmb3J0aC4gQW5kIHRoZXkgd2VudCBmb3J0aCwgYW5kIHNsZXcgaW4gdGhlIGNpdHkuCkFuZCBpdCBjYW1lIHRvIHBhc3MsIHdoaWxlIHRoZXkgd2VyZSBzbGF5aW5nIHRoZW0sIGFuZCBJIHdhcyBsZWZ0LCB0aGF0IEkgZmVsbCB1cG9uIG15IGZhY2UsIGFuZCBjcmllZCwgYW5kIHNhaWQsIEFoIExvcmQgR09EISB3aWx0IHRob3UgZGVzdHJveSBhbGwgdGhlIHJlc2lkdWUgb2YgSXNyYWVsIGluIHRoeSBwb3VyaW5nIG91dCBvZiB0aHkgZnVyeSB1cG9uIEplcnVzYWxlbT8KVGhlbiBzYWlkIGhlIHVudG8gbWUsIFRoZSBpbmlxdWl0eSBvZiB0aGUgaG91c2Ugb2YgSXNyYWVsIGFuZCBKdWRhaCBpcyBleGNlZWRpbmcgZ3JlYXQsIGFuZCB0aGUgbGFuZCBpcyBmdWxsIG9mIGJsb29kLCBhbmQgdGhlIGNpdHkgZnVsbCBvZiBwZXJ2ZXJzZW5lc3M6IGZvciB0aGV5IHNheSwgVGhlIExPUkQgaGF0aCBmb3JzYWtlbiB0aGUgZWFydGgsIGFuZCB0aGUgTE9SRCBzZWV0aCBub3QuCkFuZCBhcyBmb3IgbWUgYWxzbywgbWluZSBleWUgc2hhbGwgbm90IHNwYXJlLCBuZWl0aGVyIHdpbGwgSSBoYXZlIHBpdHksIGJ1dCBJIHdpbGwgcmVjb21wZW5zZSB0aGVpciB3YXkgdXBvbiB0aGVpciBoZWFkLgpBbmQsIGJlaG9sZCwgdGhlIG1hbiBjbG90aGVkIHdpdGggbGluZW4sIHdoaWNoIGhhZCB0aGUgaW5raG9ybiBieSBoaXMgc2lkZSwgcmVwb3J0ZWQgdGhlIG1hdHRlciwgc2F5aW5nLCBJIGhhdmUgZG9uZSBhcyB0aG91IGhhc3QgY29tbWFuZGVkIG1lLgpUaGVuIEkgbG9va2VkLCBhbmQsIGJlaG9sZCwgaW4gdGhlIGZpcm1hbWVudCB0aGF0IHdhcyBhYm92ZSB0aGUgaGVhZCBvZiB0aGUgY2hlcnViaW1zIHRoZXJlIGFwcGVhcmVkIG92ZXIgdGhlbSBhcyBpdCB3ZXJlIGEgc2FwcGhpcmUgc3RvbmUsIGFzIHRoZSBhcHBlYXJhbmNlIG9mIHRoZSBsaWtlbmVzcyBvZiBhIHRocm9uZS4KQW5kIGhlIHNwYWtlIHVudG8gdGhlIG1hbiBjbG90aGVkIHdpdGggbGluZW4sIGFuZCBzYWlkLCBHbyBpbiBiZXR3ZWVuIHRoZSB3aGVlbHMsIGV2ZW4gdW5kZXIgdGhlIGNoZXJ1YiwgYW5kIGZpbGwgdGhpbmUgaGFuZCB3aXRoIGNvYWxzIG9mIGZpcmUgZnJvbSBiZXR3ZWVuIHRoZSBjaGVydWJpbXMsIGFuZCBzY2F0dGVyIHRoZW0gb3ZlciB0aGUgY2l0eS4gQW5kIGhlIHdlbnQgaW4gaW4gbXkgc2lnaHQuCk5vdyB0aGUgY2hlcnViaW1zIHN0b29kIG9uIHRoZSByaWdodCBzaWRlIG9mIHRoZSBob3VzZSwgd2hlbiB0aGUgbWFuIHdlbnQgaW47IGFuZCB0aGUgY2xvdWQgZmlsbGVkIHRoZSBpbm5lciBjb3VydC4KVGhlbiB0aGUgZ2xvcnkgb2YgdGhlIExPUkQgd2VudCB1cCBmcm9tIHRoZSBjaGVydWIsIGFuZCBzdG9vZCBvdmVyIHRoZSB0aHJlc2hvbGQgb2YgdGhlIGhvdXNlOyBhbmQgdGhlIGhvdXNlIHdhcyBmaWxsZWQgd2l0aCB0aGUgY2xvdWQsIGFuZCB0aGUgY291cnQgd2FzIGZ1bGwgb2YgdGhlIGJyaWdodG5lc3Mgb2YgdGhlIExPUkQncyBnbG9yeS4KQW5kIHRoZSBzb3VuZCBvZiB0aGUgY2hlcnViaW1zJyB3aW5ncyB3YXMgaGVhcmQgZXZlbiB0byB0aGUgb3V0ZXIgY291cnQsIGFzIHRoZSB2b2ljZSBvZiB0aGUgQWxtaWdodHkgR29kIHdoZW4gaGUgc3BlYWtldGguCkFuZCBpdCBjYW1lIHRvIHBhc3MsIHRoYXQgd2hlbiBoZSBoYWQgY29tbWFuZGVkIHRoZSBtYW4gY2xvdGhlZCB3aXRoIGxpbmVuLCBzYXlpbmcsIFRha2UgZmlyZSBmcm9tIGJldHdlZW4gdGhlIHdoZWVscywgZnJvbSBiZXR3ZWVuIHRoZSBjaGVydWJpbXM7IHRoZW4gaGUgd2VudCBpbiwgYW5kIHN0b29kIGJlc2lkZSB0aGUgd2hlZWxzLgpBbmQgb25lIGNoZXJ1YiBzdHJldGNoZWQgZm9ydGggaGlzIGhhbmQgZnJvbSBiZXR3ZWVuIHRoZSBjaGVydWJpbXMgdW50byB0aGUgZmlyZSB0aGF0IHdhcyBiZXR3ZWVuIHRoZSBjaGVydWJpbXMsIGFuZCB0b29rIHRoZXJlb2YsIGFuZCBwdXQgaXQgaW50byB0aGUgaGFuZHMgb2YgaGltIHRoYXQgd2FzIGNsb3RoZWQgd2l0aCBsaW5lbjogd2hvIHRvb2sgaXQsIGFuZCB3ZW50IG91dC4KQW5kIHRoZXJlIGFwcGVhcmVkIGluIHRoZSBjaGVydWJpbXMgdGhlIGZvcm0gb2YgYSBtYW4ncyBoYW5kIHVuZGVyIHRoZWlyIHdpbmdzLgpBbmQgd2hlbiBJIGxvb2tlZCwgYmVob2xkIHRoZSBmb3VyIHdoZWVscyBieSB0aGUgY2hlcnViaW1zLCBvbmUgd2hlZWwgYnkgb25lIGNoZXJ1YiwgYW5kIGFub3RoZXIgd2hlZWwgYnkgYW5vdGhlciBjaGVydWI6IGFuZCB0aGUgYXBwZWFyYW5jZSBvZiB0aGUgd2hlZWxzIHdhcyBhcyB0aGUgY29sb3VyIG9mIGEgYmVyeWwgc3RvbmUuCkFuZCBhcyBmb3IgdGhlaXIgYXBwZWFyYW5jZXMsIHRoZXkgZm91ciBoYWQgb25lIGxpa2VuZXNzLCBhcyBpZiBhIHdoZWVsIGhhZCBiZWVuIGluIHRoZSBtaWRzdCBvZiBhIHdoZWVsLgpXaGVuIHRoZXkgd2VudCwgdGhleSB3ZW50IHVwb24gdGhlaXIgZm91ciBzaWRlczsgdGhleSB0dXJuZWQgbm90IGFzIHRoZXkgd2VudCwgYnV0IHRvIHRoZSBwbGFjZSB3aGl0aGVyIHRoZSBoZWFkIGxvb2tlZCB0aGV5IGZvbGxvd2VkIGl0OyB0aGV5IHR1cm5lZCBub3QgYXMgdGhleSB3ZW50LgpBbmQgdGhlaXIgd2hvbGUgYm9keSwgYW5kIHRoZWlyIGJhY2tzLCBhbmQgdGhlaXIgaGFuZHMsIGFuZCB0aGVpciB3aW5ncywgYW5kIHRoZSB3aGVlbHMsIHdlcmUgZnVsbCBvZiBleWVzIHJvdW5kIGFib3V0LCBldmVuIHRoZSB3aGVlbHMgdGhhdCB0aGV5IGZvdXIgaGFkLgpBcyBmb3IgdGhlIHdoZWVscywgaXQgd2FzIGNyaWVkIHVudG8gdGhlbSBpbiBteSBoZWFyaW5nLCBPIHdoZWVsLgpBbmQgZXZlcnkgb25lIGhhZCBmb3VyIGZhY2VzOiB0aGUgZmlyc3QgZmFjZSB3YXMgdGhlIGZhY2Ugb2YgYSBjaGVydWIsIGFuZCB0aGUgc2Vjb25kIGZhY2Ugd2FzIHRoZSBmYWNlIG9mIGEgbWFuLCBhbmQgdGhlIHRoaXJkIHRoZSBmYWNlIG9mIGEgbGlvbiwgYW5kIHRoZSBmb3VydGggdGhlIGZhY2Ugb2YgYW4gZWFnbGUuCkFuZCB0aGUgY2hlcnViaW1zIHdlcmUgbGlmdGVkIHVwLiBUaGlzIGlzIHRoZSBsaXZpbmcgY3JlYXR1cmUgdGhhdCBJIHNhdyBieSB0aGUgcml2ZXIgb2YgQ2hlYmFyLgpBbmQgd2hlbiB0aGUgY2hlcnViaW1zIHdlbnQsIHRoZSB3aGVlbHMgd2VudCBieSB0aGVtOiBhbmQgd2hlbiB0aGUgY2hlcnViaW1zIGxpZnRlZCB1cCB0aGVpciB3aW5ncyB0byBtb3VudCB1cCBmcm9tIHRoZSBlYXJ0aCwgdGhlIHNhbWUgd2hlZWxzIGFsc28gdHVybmVkIG5vdCBmcm9tIGJlc2lkZSB0aGVtLgpXaGVuIHRoZXkgc3Rvb2QsIHRoZXNlIHN0b29kOyBhbmQgd2hlbiB0aGV5IHdlcmUgbGlmdGVkIHVwLCB0aGVzZSBsaWZ0ZWQgdXAgdGhlbXNlbHZlcyBhbHNvOiBmb3IgdGhlIHNwaXJpdCBvZiB0aGUgbGl2aW5nIGNyZWF0dXJlIHdhcyBpbiB0aGVtLgpUaGVuIHRoZSBnbG9yeSBvZiB0aGUgTE9SRCBkZXBhcnRlZCBmcm9tIG9mZiB0aGUgdGhyZXNob2xkIG9mIHRoZSBob3VzZSwgYW5kIHN0b29kIG92ZXIgdGhlIGNoZXJ1Ymltcy4KQW5kIHRoZSBjaGVydWJpbXMgbGlmdGVkIHVwIHRoZWlyIHdpbmdzLCBhbmQgbW91bnRlZCB1cCBmcm9tIHRoZSBlYXJ0aCBpbiBteSBzaWdodDogd2hlbiB0aGV5IHdlbnQgb3V0LCB0aGUgd2hlZWxzIGFsc28gd2VyZSBiZXNpZGUgdGhlbSwgYW5kIGV2ZXJ5IG9uZSBzdG9vZCBhdCB0aGUgZG9vciBvZiB0aGUgZWFzdCBnYXRlIG9mIHRoZSBMT1JEJ3MgaG91c2U7IGFuZCB0aGUgZ2xvcnkgb2YgdGhlIEdvZCBvZiBJc3JhZWwgd2FzIG92ZXIgdGhlbSBhYm92ZS4KVGhpcyBpcyB0aGUgbGl2aW5nIGNyZWF0dXJlIHRoYXQgSSBzYXcgdW5kZXIgdGhlIEdvZCBvZiBJc3JhZWwgYnkgdGhlIHJpdmVyIG9mIENoZWJhcjsgYW5kIEkga25ldyB0aGF0IHRoZXkgd2VyZSB0aGUgY2hlcnViaW1zLgpFdmVyeSBvbmUgaGFkIGZvdXIgZmFjZXMgYXBpZWNlLCBhbmQgZXZlcnkgb25lIGZvdXIgd2luZ3M7IGFuZCB0aGUgbGlrZW5lc3Mgb2YgdGhlIGhhbmRzIG9mIGEgbWFuIHdhcyB1bmRlciB0aGVpciB3aW5ncy4KQW5kIHRoZSBsaWtlbmVzcyBvZiB0aGVpciBmYWNlcyB3YXMgdGhlIHNhbWUgZmFjZXMgd2hpY2ggSSBzYXcgYnkgdGhlIHJpdmVyIG9mIENoZWJhciwgdGhlaXIgYXBwZWFyYW5jZXMgYW5kIHRoZW1zZWx2ZXM6IHRoZXkgd2VudCBldmVyeSBvbmUgc3RyYWlnaHQgZm9yd2FyZC4KTW9yZW92ZXIgdGhlIHNwaXJpdCBsaWZ0ZWQgbWUgdXAsIGFuZCBicm91Z2h0IG1lIHVudG8gdGhlIGVhc3QgZ2F0ZSBvZiB0aGUgTE9SRCdzIGhvdXNlLCB3aGljaCBsb29rZXRoIGVhc3R3YXJkOiBhbmQgYmVob2xkIGF0IHRoZSBkb29yIG9mIHRoZSBnYXRlIGZpdmUgYW5kIHR3ZW50eSBtZW47IGFtb25nIHdob20gSSBzYXcgSmFhemFuaWFoIHRoZSBzb24gb2YgQXp1ciwgYW5kIFBlbGF0aWFoIHRoZSBzb24gb2YgQmVuYWlhaCwgcHJpbmNlcyBvZiB0aGUgcGVvcGxlLgpUaGVuIHNhaWQgaGUgdW50byBtZSwgU29uIG9mIG1hbiwgdGhlc2UgYXJlIHRoZSBtZW4gdGhhdCBkZXZpc2UgbWlzY2hpZWYsIGFuZCBnaXZlIHdpY2tlZCBjb3Vuc2VsIGluIHRoaXMgY2l0eToKV2hpY2ggc2F5LCBJdCBpcyBub3QgbmVhcjsgbGV0IHVzIGJ1aWxkIGhvdXNlczogdGhpcyBjaXR5IGlzIHRoZSBjYWxkcm9uLCBhbmQgd2UgYmUgdGhlIGZsZXNoLgpUaGVyZWZvcmUgcHJvcGhlc3kgYWdhaW5zdCB0aGVtLCBwcm9waGVzeSwgTyBzb24gb2YgbWFuLgpBbmQgdGhlIFNwaXJpdCBvZiB0aGUgTE9SRCBmZWxsIHVwb24gbWUsIGFuZCBzYWlkIHVudG8gbWUsIFNwZWFrOyBUaHVzIHNhaXRoIHRoZSBMT1JEOyBUaHVzIGhhdmUgeWUgc2FpZCwgTyBob3VzZSBvZiBJc3JhZWw6IGZvciBJIGtub3cgdGhlIHRoaW5ncyB0aGF0IGNvbWUgaW50byB5b3VyIG1pbmQsIGV2ZXJ5IG9uZSBvZiB0aGVtLgpZZSBoYXZlIG11bHRpcGxpZWQgeW91ciBzbGFpbiBpbiB0aGlzIGNpdHksIGFuZCB5ZSBoYXZlIGZpbGxlZCB0aGUgc3RyZWV0cyB0aGVyZW9mIHdpdGggdGhlIHNsYWluLgpUaGVyZWZvcmUgdGh1cyBzYWl0aCB0aGUgTG9yZCBHT0Q7IFlvdXIgc2xhaW4gd2hvbSB5ZSBoYXZlIGxhaWQgaW4gdGhlIG1pZHN0IG9mIGl0LCB0aGV5IGFyZSB0aGUgZmxlc2gsIGFuZCB0aGlzIGNpdHkgaXMgdGhlIGNhbGRyb246IGJ1dCBJIHdpbGwgYnJpbmcgeW91IGZvcnRoIG91dCBvZiB0aGUgbWlkc3Qgb2YgaXQuClllIGhhdmUgZmVhcmVkIHRoZSBzd29yZDsgYW5kIEkgd2lsbCBicmluZyBhIHN3b3JkIHVwb24geW91LCBzYWl0aCB0aGUgTG9yZCBHT0QuCkFuZCBJIHdpbGwgYnJpbmcgeW91IG91dCBvZiB0aGUgbWlkc3QgdGhlcmVvZiwgYW5kIGRlbGl2ZXIgeW91IGludG8gdGhlIGhhbmRzIG9mIHN0cmFuZ2VycywgYW5kIHdpbGwgZXhlY3V0ZSBqdWRnbWVudHMgYW1vbmcgeW91LgpZZSBzaGFsbCBmYWxsIGJ5IHRoZSBzd29yZDsgSSB3aWxsIGp1ZGdlIHlvdSBpbiB0aGUgYm9yZGVyIG9mIElzcmFlbDsgYW5kIHllIHNoYWxsIGtub3cgdGhhdCBJIGFtIHRoZSBMT1JELgpUaGlzIGNpdHkgc2hhbGwgbm90IGJlIHlvdXIgY2FsZHJvbiwgbmVpdGhlciBzaGFsbCB5ZSBiZSB0aGUgZmxlc2ggaW4gdGhlIG1pZHN0IHRoZXJlb2Y7IGJ1dCBJIHdpbGwganVkZ2UgeW91IGluIHRoZSBib3JkZXIgb2YgSXNyYWVsOgpBbmQgeWUgc2hhbGwga25vdyB0aGF0IEkgYW0gdGhlIExPUkQ6IGZvciB5ZSBoYXZlIG5vdCB3YWxrZWQgaW4gbXkgc3RhdHV0ZXMsIG5laXRoZXIgZXhlY3V0ZWQgbXkganVkZ21lbnRzLCBidXQgaGF2ZSBkb25lIGFmdGVyIHRoZSBtYW5uZXJzIG9mIHRoZSBoZWF0aGVuIHRoYXQgYXJlIHJvdW5kIGFib3V0IHlvdS4KQW5kIGl0IGNhbWUgdG8gcGFzcywgd2hlbiBJIHByb3BoZXNpZWQsIHRoYXQgUGVsYXRpYWggdGhlIHNvbiBvZiBCZW5haWFoIGRpZWQuIFRoZW4gZmVsbCBJIGRvd24gdXBvbiBteSBmYWNlLCBhbmQgY3JpZWQgd2l0aCBhIGxvdWQgdm9pY2UsIGFuZCBzYWlkLCBBaCBMb3JkIEdPRCEgd2lsdCB0aG91IG1ha2UgYSBmdWxsIGVuZCBvZiB0aGUgcmVtbmFudCBvZiBJc3JhZWw/CkFnYWluIHRoZSB3b3JkIG9mIHRoZSBMT1JEIGNhbWUgdW50byBtZSwgc2F5aW5nLApTb24gb2YgbWFuLCB0aHkgYnJldGhyZW4sIGV2ZW4gdGh5IGJyZXRocmVuLCB0aGUgbWVuIG9mIHRoeSBraW5kcmVkLCBhbmQgYWxsIHRoZSBob3VzZSBvZiBJc3JhZWwgd2hvbGx5LCBhcmUgdGhleSB1bnRvIHdob20gdGhlIGluaGFiaXRhbnRzIG9mIEplcnVzYWxlbSBoYXZlIHNhaWQsIEdldCB5b3UgZmFyIGZyb20gdGhlIExPUkQ6IHVudG8gdXMgaXMgdGhpcyBsYW5kIGdpdmVuIGluIHBvc3Nlc3Npb24uClRoZXJlZm9yZSBzYXksIFRodXMgc2FpdGggdGhlIExvcmQgR09EOyBBbHRob3VnaCBJIGhhdmUgY2FzdCB0aGVtIGZhciBvZmYgYW1vbmcgdGhlIGhlYXRoZW4sIGFuZCBhbHRob3VnaCBJIGhhdmUgc2NhdHRlcmVkIHRoZW0gYW1vbmcgdGhlIGNvdW50cmllcywgeWV0IHdpbGwgSSBiZSB0byB0aGVtIGFzIGEgbGl0dGxlIHNhbmN0dWFyeSBpbiB0aGUgY291bnRyaWVzIHdoZXJlIHRoZXkgc2hhbGwgY29tZS4KVGhlcmVmb3JlIHNheSwgVGh1cyBzYWl0aCB0aGUgTG9yZCBHT0Q7IEkgd2lsbCBldmVuIGdhdGhlciB5b3UgZnJvbSB0aGUgcGVvcGxlLCBhbmQgYXNzZW1ibGUgeW91IG91dCBvZiB0aGUgY291bnRyaWVzIHdoZXJlIHllIGhhdmUgYmVlbiBzY2F0dGVyZWQsIGFuZCBJIHdpbGwgZ2l2ZSB5b3UgdGhlIGxhbmQgb2YgSXNyYWVsLgpBbmQgdGhleSBzaGFsbCBjb21lIHRoaXRoZXIsIGFuZCB0aGV5IHNoYWxsIHRha2UgYXdheSBhbGwgdGhlIGRldGVzdGFibGUgdGhpbmdzIHRoZXJlb2YgYW5kIGFsbCB0aGUgYWJvbWluYXRpb25zIHRoZXJlb2YgZnJvbSB0aGVuY2UuCkFuZCBJIHdpbGwgZ2l2ZSB0aGVtIG9uZSBoZWFydCwgYW5kIEkgd2lsbCBwdXQgYSBuZXcgc3Bpcml0IHdpdGhpbiB5b3U7IGFuZCBJIHdpbGwgdGFrZSB0aGUgc3RvbnkgaGVhcnQgb3V0IG9mIHRoZWlyIGZsZXNoLCBhbmQgd2lsbCBnaXZlIHRoZW0gYW4gaGVhcnQgb2YgZmxlc2g6ClRoYXQgdGhleSBtYXkgd2FsayBpbiBteSBzdGF0dXRlcywgYW5kIGtlZXAgbWluZSBvcmRpbmFuY2VzLCBhbmQgZG8gdGhlbTogYW5kIHRoZXkgc2hhbGwgYmUgbXkgcGVvcGxlLCBhbmQgSSB3aWxsIGJlIHRoZWlyIEdvZC4KQnV0IGFzIGZvciB0aGVtIHdob3NlIGhlYXJ0IHdhbGtldGggYWZ0ZXIgdGhlIGhlYXJ0IG9mIHRoZWlyIGRldGVzdGFibGUgdGhpbmdzIGFuZCB0aGVpciBhYm9taW5hdGlvbnMsIEkgd2lsbCByZWNvbXBlbnNlIHRoZWlyIHdheSB1cG9uIHRoZWlyIG93biBoZWFkcywgc2FpdGggdGhlIExvcmQgR09ELgpUaGVuIGRpZCB0aGUgY2hlcnViaW1zIGxpZnQgdXAgdGhlaXIgd2luZ3MsIGFuZCB0aGUgd2hlZWxzIGJlc2lkZSB0aGVtOyBhbmQgdGhlIGdsb3J5IG9mIHRoZSBHb2Qgb2YgSXNyYWVsIHdhcyBvdmVyIHRoZW0gYWJvdmUuCkFuZCB0aGUgZ2xvcnkgb2YgdGhlIExPUkQgd2VudCB1cCBmcm9tIHRoZSBtaWRzdCBvZiB0aGUgY2l0eSwgYW5kIHN0b29kIHVwb24gdGhlIG1vdW50YWluIHdoaWNoIGlzIG9uIHRoZSBlYXN0IHNpZGUgb2YgdGhlIGNpdHkuCkFmdGVyd2FyZHMgdGhlIHNwaXJpdCB0b29rIG1lIHVwLCBhbmQgYnJvdWdodCBtZSBpbiBhIHZpc2lvbiBieSB0aGUgU3Bpcml0IG9mIEdvZCBpbnRvIENoYWxkZWEsIHRvIHRoZW0gb2YgdGhlIGNhcHRpdml0eS4gU28gdGhlIHZpc2lvbiB0aGF0IEkgaGFkIHNlZW4gd2VudCB1cCBmcm9tIG1lLgpUaGVuIEkgc3Bha2UgdW50byB0aGVtIG9mIHRoZSBjYXB0aXZpdHkgYWxsIHRoZSB0aGluZ3MgdGhhdCB0aGUgTE9SRCBoYWQgc2hld2VkIG1lLgpUaGUgd29yZCBvZiB0aGUgTE9SRCBhbHNvIGNhbWUgdW50byBtZSwgc2F5aW5nLApTb24gb2YgbWFuLCB0aG91IGR3ZWxsZXN0IGluIHRoZSBtaWRzdCBvZiBhIHJlYmVsbGlvdXMgaG91c2UsIHdoaWNoIGhhdmUgZXllcyB0byBzZWUsIGFuZCBzZWUgbm90OyB0aGV5IGhhdmUgZWFycyB0byBoZWFyLCBhbmQgaGVhciBub3Q6IGZvciB0aGV5IGFyZSBhIHJlYmVsbGlvdXMgaG91c2UuClRoZXJlZm9yZSwgdGhvdSBzb24gb2YgbWFuLCBwcmVwYXJlIHRoZWUgc3R1ZmYgZm9yIHJlbW92aW5nLCBhbmQgcmVtb3ZlIGJ5IGRheSBpbiB0aGVpciBzaWdodDsgYW5kIHRob3Ugc2hhbHQgcmVtb3ZlIGZyb20gdGh5IHBsYWNlIHRvIGFub3RoZXIgcGxhY2UgaW4gdGhlaXIgc2lnaHQ6IGl0IG1heSBiZSB0aGV5IHdpbGwgY29uc2lkZXIsIHRob3VnaCB0aGV5IGJlIGEgcmViZWxsaW91cyBob3VzZS4KVGhlbiBzaGFsdCB0aG91IGJyaW5nIGZvcnRoIHRoeSBzdHVmZiBieSBkYXkgaW4gdGhlaXIgc2lnaHQsIGFzIHN0dWZmIGZvciByZW1vdmluZzogYW5kIHRob3Ugc2hhbHQgZ28gZm9ydGggYXQgZXZlbiBpbiB0aGVpciBzaWdodCwgYXMgdGhleSB0aGF0IGdvIGZvcnRoIGludG8gY2FwdGl2aXR5LgpEaWcgdGhvdSB0aHJvdWdoIHRoZSB3YWxsIGluIHRoZWlyIHNpZ2h0LCBhbmQgY2Fycnkgb3V0IHRoZXJlYnkuCkluIHRoZWlyIHNpZ2h0IHNoYWx0IHRob3UgYmVhciBpdCB1cG9uIHRoeSBzaG91bGRlcnMsIGFuZCBjYXJyeSBpdCBmb3J0aCBpbiB0aGUgdHdpbGlnaHQ6IHRob3Ugc2hhbHQgY292ZXIgdGh5IGZhY2UsIHRoYXQgdGhvdSBzZWUgbm90IHRoZSBncm91bmQ6IGZvciBJIGhhdmUgc2V0IHRoZWUgZm9yIGEgc2lnbiB1bnRvIHRoZSBob3VzZSBvZiBJc3JhZWwuCkFuZCBJIGRpZCBzbyBhcyBJIHdhcyBjb21tYW5kZWQ6IEkgYnJvdWdodCBmb3J0aCBteSBzdHVmZiBieSBkYXksIGFzIHN0dWZmIGZvciBjYXB0aXZpdHksIGFuZCBpbiB0aGUgZXZlbiBJIGRpZ2dlZCB0aHJvdWdoIHRoZSB3YWxsIHdpdGggbWluZSBoYW5kOyBJIGJyb3VnaHQgaXQgZm9ydGggaW4gdGhlIHR3aWxpZ2h0LCBhbmQgSSBiYXJlIGl0IHVwb24gbXkgc2hvdWxkZXIgaW4gdGhlaXIgc2lnaHQuCkFuZCBpbiB0aGUgbW9ybmluZyBjYW1lIHRoZSB3b3JkIG9mIHRoZSBMT1JEIHVudG8gbWUsIHNheWluZywKU29uIG9mIG1hbiwgaGF0aCBub3QgdGhlIGhvdXNlIG9mIElzcmFlbCwgdGhlIHJlYmVsbGlvdXMgaG91c2UsIHNhaWQgdW50byB0aGVlLCBXaGF0IGRvZXN0IHRob3U/ClNheSB0aG91IHVudG8gdGhlbSwgVGh1cyBzYWl0aCB0aGUgTG9yZCBHT0Q7IFRoaXMgYnVyZGVuIGNvbmNlcm5ldGggdGhlIHByaW5jZSBpbiBKZXJ1c2FsZW0sIGFuZCBhbGwgdGhlIGhvdXNlIG9mIElzcmFlbCB0aGF0IGFyZSBhbW9uZyB0aGVtLgpTYXksIEkgYW0geW91ciBzaWduOiBsaWtlIGFzIEkgaGF2ZSBkb25lLCBzbyBzaGFsbCBpdCBiZSBkb25lIHVudG8gdGhlbTogdGhleSBzaGFsbCByZW1vdmUgYW5kIGdvIGludG8gY2FwdGl2aXR5LgpBbmQgdGhlIHByaW5jZSB0aGF0IGlzIGFtb25nIHRoZW0gc2hhbGwgYmVhciB1cG9uIGhpcyBzaG91bGRlciBpbiB0aGUgdHdpbGlnaHQsIGFuZCBzaGFsbCBnbyBmb3J0aDogdGhleSBzaGFsbCBkaWcgdGhyb3VnaCB0aGUgd2FsbCB0byBjYXJyeSBvdXQgdGhlcmVieTogaGUgc2hhbGwgY292ZXIgaGlzIGZhY2UsIHRoYXQgaGUgc2VlIG5vdCB0aGUgZ3JvdW5kIHdpdGggaGlzIGV5ZXMuCk15IG5ldCBhbHNvIHdpbGwgSSBzcHJlYWQgdXBvbiBoaW0sIGFuZCBoZSBzaGFsbCBiZSB0YWtlbiBpbiBteSBzbmFyZTogYW5kIEkgd2lsbCBicmluZyBoaW0gdG8gQmFieWxvbiB0byB0aGUgbGFuZCBvZiB0aGUgQ2hhbGRlYW5zOyB5ZXQgc2hhbGwgaGUgbm90IHNlZSBpdCwgdGhvdWdoIGhlIHNoYWxsIGRpZSB0aGVyZS4KQW5kIEkgd2lsbCBzY2F0dGVyIHRvd2FyZCBldmVyeSB3aW5kIGFsbCB0aGF0IGFyZSBhYm91dCBoaW0gdG8gaGVscCBoaW0sIGFuZCBhbGwgaGlzIGJhbmRzOyBhbmQgSSB3aWxsIGRyYXcgb3V0IHRoZSBzd29yZCBhZnRlciB0aGVtLgpBbmQgdGhleSBzaGFsbCBrbm93IHRoYXQgSSBhbSB0aGUgTE9SRCwgd2hlbiBJIHNoYWxsIHNjYXR0ZXIgdGhlbSBhbW9uZyB0aGUgbmF0aW9ucywgYW5kIGRpc3BlcnNlIHRoZW0gaW4gdGhlIGNvdW50cmllcy4KQnV0IEkgd2lsbCBsZWF2ZSBhIGZldyBtZW4gb2YgdGhlbSBmcm9tIHRoZSBzd29yZCwgZnJvbSB0aGUgZmFtaW5lLCBhbmQgZnJvbSB0aGUgcGVzdGlsZW5jZTsgdGhhdCB0aGV5IG1heSBkZWNsYXJlIGFsbCB0aGVpciBhYm9taW5hdGlvbnMgYW1vbmcgdGhlIGhlYXRoZW4gd2hpdGhlciB0aGV5IGNvbWU7IGFuZCB0aGV5IHNoYWxsIGtub3cgdGhhdCBJIGFtIHRoZSBMT1JELgpNb3Jlb3ZlciB0aGUgd29yZCBvZiB0aGUgTE9SRCBjYW1lIHRvIG1lLCBzYXlpbmcsClNvbiBvZiBtYW4sIGVhdCB0aHkgYnJlYWQgd2l0aCBxdWFraW5nLCBhbmQgZHJpbmsgdGh5IHdhdGVyIHdpdGggdHJlbWJsaW5nIGFuZCB3aXRoIGNhcmVmdWxuZXNzOwpBbmQgc2F5IHVudG8gdGhlIHBlb3BsZSBvZiB0aGUgbGFuZCwgVGh1cyBzYWl0aCB0aGUgTG9yZCBHT0Qgb2YgdGhlIGluaGFiaXRhbnRzIG9mIEplcnVzYWxlbSwgYW5kIG9mIHRoZSBsYW5kIG9mIElzcmFlbDsgVGhleSBzaGFsbCBlYXQgdGhlaXIgYnJlYWQgd2l0aCBjYXJlZnVsbmVzcywgYW5kIGRyaW5rIHRoZWlyIHdhdGVyIHdpdGggYXN0b25pc2htZW50LCB0aGF0IGhlciBsYW5kIG1heSBiZSBkZXNvbGF0ZSBmcm9tIGFsbCB0aGF0IGlzIHRoZXJlaW4sIGJlY2F1c2Ugb2YgdGhlIHZpb2xlbmNlIG9mIGFsbCB0aGVtIHRoYXQgZHdlbGwgdGhlcmVpbi4KQW5kIHRoZSBjaXRpZXMgdGhhdCBhcmUgaW5oYWJpdGVkIHNoYWxsIGJlIGxhaWQgd2FzdGUsIGFuZCB0aGUgbGFuZCBzaGFsbCBiZSBkZXNvbGF0ZTsgYW5kIHllIHNoYWxsIGtub3cgdGhhdCBJIGFtIHRoZSBMT1JELgpBbmQgdGhlIHdvcmQgb2YgdGhlIExPUkQgY2FtZSB1bnRvIG1lLCBzYXlpbmcsClNvbiBvZiBtYW4sIHdoYXQgaXMgdGhhdCBwcm92ZXJiIHRoYXQgeWUgaGF2ZSBpbiB0aGUgbGFuZCBvZiBJc3JhZWwsIHNheWluZywgVGhlIGRheXMgYXJlIHByb2xvbmdlZCwgYW5kIGV2ZXJ5IHZpc2lvbiBmYWlsZXRoPwpUZWxsIHRoZW0gdGhlcmVmb3JlLCBUaHVzIHNhaXRoIHRoZSBMb3JkIEdPRDsgSSB3aWxsIG1ha2UgdGhpcyBwcm92ZXJiIHRvIGNlYXNlLCBhbmQgdGhleSBzaGFsbCBubyBtb3JlIHVzZSBpdCBhcyBhIHByb3ZlcmIgaW4gSXNyYWVsOyBidXQgc2F5IHVudG8gdGhlbSwgVGhlIGRheXMgYXJlIGF0IGhhbmQsIGFuZCB0aGUgZWZmZWN0IG9mIGV2ZXJ5IHZpc2lvbi4KRm9yIHRoZXJlIHNoYWxsIGJlIG5vIG1vcmUgYW55IHZhaW4gdmlzaW9uIG5vciBmbGF0dGVyaW5nIGRpdmluYXRpb24gd2l0aGluIHRoZSBob3VzZSBvZiBJc3JhZWwuCkZvciBJIGFtIHRoZSBMT1JEOiBJIHdpbGwgc3BlYWssIGFuZCB0aGUgd29yZCB0aGF0IEkgc2hhbGwgc3BlYWsgc2hhbGwgY29tZSB0byBwYXNzOyBpdCBzaGFsbCBiZSBubyBtb3JlIHByb2xvbmdlZDogZm9yIGluIHlvdXIgZGF5cywgTyByZWJlbGxpb3VzIGhvdXNlLCB3aWxsIEkgc2F5IHRoZSB3b3JkLCBhbmQgd2lsbCBwZXJmb3JtIGl0LCBzYWl0aCB0aGUgTG9yZCBHT0QuCkFnYWluIHRoZSB3b3JkIG9mIHRoZSBMT1JEIGNhbWUgdG8gbWUsIHNheWluZy4KU29uIG9mIG1hbiwgYmVob2xkLCB0aGV5IG9mIHRoZSBob3VzZSBvZiBJc3JhZWwgc2F5LCBUaGUgdmlzaW9uIHRoYXQgaGUgc2VldGggaXMgZm9yIG1hbnkgZGF5cyB0byBjb21lLCBhbmQgaGUgcHJvcGhlc2lldGggb2YgdGhlIHRpbWVzIHRoYXQgYXJlIGZhciBvZmYuClRoZXJlZm9yZSBzYXkgdW50byB0aGVtLCBUaHVzIHNhaXRoIHRoZSBMb3JkIEdPRDsgVGhlcmUgc2hhbGwgbm9uZSBvZiBteSB3b3JkcyBiZSBwcm9sb25nZWQgYW55IG1vcmUsIGJ1dCB0aGUgd29yZCB3aGljaCBJIGhhdmUgc3Bva2VuIHNoYWxsIGJlIGRvbmUsIHNhaXRoIHRoZSBMb3JkIEdPRC4KQW5kIHRoZSB3b3JkIG9mIHRoZSBMT1JEIGNhbWUgdW50byBtZSwgc2F5aW5nLApTb24gb2YgbWFuLCBwcm9waGVzeSBhZ2FpbnN0IHRoZSBwcm9waGV0cyBvZiBJc3JhZWwgdGhhdCBwcm9waGVzeSwgYW5kIHNheSB0aG91IHVudG8gdGhlbSB0aGF0IHByb3BoZXN5IG91dCBvZiB0aGVpciBvd24gaGVhcnRzLCBIZWFyIHllIHRoZSB3b3JkIG9mIHRoZSBMT1JEOwpUaHVzIHNhaXRoIHRoZSBMb3JkIEdPRDsgV29lIHVudG8gdGhlIGZvb2xpc2ggcHJvcGhldHMsIHRoYXQgZm9sbG93IHRoZWlyIG93biBzcGlyaXQsIGFuZCBoYXZlIHNlZW4gbm90aGluZyEKTyBJc3JhZWwsIHRoeSBwcm9waGV0cyBhcmUgbGlrZSB0aGUgZm94ZXMgaW4gdGhlIGRlc2VydHMuClllIGhhdmUgbm90IGdvbmUgdXAgaW50byB0aGUgZ2FwcywgbmVpdGhlciBtYWRlIHVwIHRoZSBoZWRnZSBmb3IgdGhlIGhvdXNlIG9mIElzcmFlbCB0byBzdGFuZCBpbiB0aGUgYmF0dGxlIGluIHRoZSBkYXkgb2YgdGhlIExPUkQuClRoZXkgaGF2ZSBzZWVuIHZhbml0eSBhbmQgbHlpbmcgZGl2aW5hdGlvbiwgc2F5aW5nLCBUaGUgTE9SRCBzYWl0aDogYW5kIHRoZSBMT1JEIGhhdGggbm90IHNlbnQgdGhlbTogYW5kIHRoZXkgaGF2ZSBtYWRlIG90aGVycyB0byBob3BlIHRoYXQgdGhleSB3b3VsZCBjb25maXJtIHRoZSB3b3JkLgpIYXZlIHllIG5vdCBzZWVuIGEgdmFpbiB2aXNpb24sIGFuZCBoYXZlIHllIG5vdCBzcG9rZW4gYSBseWluZyBkaXZpbmF0aW9uLCB3aGVyZWFzIHllIHNheSwgVGhlIExPUkQgc2FpdGggaXQ7IGFsYmVpdCBJIGhhdmUgbm90IHNwb2tlbj8KVGhlcmVmb3JlIHRodXMgc2FpdGggdGhlIExvcmQgR09EOyBCZWNhdXNlIHllIGhhdmUgc3Bva2VuIHZhbml0eSwgYW5kIHNlZW4gbGllcywgdGhlcmVmb3JlLCBiZWhvbGQsIEkgYW0gYWdhaW5zdCB5b3UsIHNhaXRoIHRoZSBMb3JkIEdPRC4KQW5kIG1pbmUgaGFuZCBzaGFsbCBiZSB1cG9uIHRoZSBwcm9waGV0cyB0aGF0IHNlZSB2YW5pdHksIGFuZCB0aGF0IGRpdmluZSBsaWVzOiB0aGV5IHNoYWxsIG5vdCBiZSBpbiB0aGUgYXNzZW1ibHkgb2YgbXkgcGVvcGxlLCBuZWl0aGVyIHNoYWxsIHRoZXkgYmUgd3JpdHRlbiBpbiB0aGUgd3JpdGluZyBvZiB0aGUgaG91c2Ugb2YgSXNyYWVsLCBuZWl0aGVyIHNoYWxsIHRoZXkgZW50ZXIgaW50byB0aGUgbGFuZCBvZiBJc3JhZWw7IGFuZCB5ZSBzaGFsbCBrbm93IHRoYXQgSSBhbSB0aGUgTG9yZCBHT0QuCkJlY2F1c2UsIGV2ZW4gYmVjYXVzZSB0aGV5IGhhdmUgc2VkdWNlZCBteSBwZW9wbGUsIHNheWluZywgUGVhY2U7IGFuZCB0aGVyZSB3YXMgbm8gcGVhY2U7IGFuZCBvbmUgYnVpbHQgdXAgYSB3YWxsLCBhbmQsIGxvLCBvdGhlcnMgZGF1YmVkIGl0IHdpdGggdW50ZW1wZXJlZCBtb3J0ZXI6ClNheSB1bnRvIHRoZW0gd2hpY2ggZGF1YiBpdCB3aXRoIHVudGVtcGVyZWQgbW9ydGVyLCB0aGF0IGl0IHNoYWxsIGZhbGw6IHRoZXJlIHNoYWxsIGJlIGFuIG92ZXJmbG93aW5nIHNob3dlcjsgYW5kIHllLCBPIGdyZWF0IGhhaWxzdG9uZXMsIHNoYWxsIGZhbGw7IGFuZCBhIHN0b3JteSB3aW5kIHNoYWxsIHJlbmQgaXQuCkxvLCB3aGVuIHRoZSB3YWxsIGlzIGZhbGxlbiwgc2hhbGwgaXQgbm90IGJlIHNhaWQgdW50byB5b3UsIFdoZXJlIGlzIHRoZSBkYXViaW5nIHdoZXJld2l0aCB5ZSBoYXZlIGRhdWJlZCBpdD8KVGhlcmVmb3JlIHRodXMgc2FpdGggdGhlIExvcmQgR09EOyBJIHdpbGwgZXZlbiByZW5kIGl0IHdpdGggYSBzdG9ybXkgd2luZCBpbiBteSBmdXJ5OyBhbmQgdGhlcmUgc2hhbGwgYmUgYW4gb3ZlcmZsb3dpbmcgc2hvd2VyIGluIG1pbmUgYW5nZXIsIGFuZCBncmVhdCBoYWlsc3RvbmVzIGluIG15IGZ1cnkgdG8gY29uc3VtZSBpdC4KU28gd2lsbCBJIGJyZWFrIGRvd24gdGhlIHdhbGwgdGhhdCB5ZSBoYXZlIGRhdWJlZCB3aXRoIHVudGVtcGVyZWQgbW9ydGVyLCBhbmQgYnJpbmcgaXQgZG93biB0byB0aGUgZ3JvdW5kLCBzbyB0aGF0IHRoZSBmb3VuZGF0aW9uIHRoZXJlb2Ygc2hhbGwgYmUgZGlzY292ZXJlZCwgYW5kIGl0IHNoYWxsIGZhbGwsIGFuZCB5ZSBzaGFsbCBiZSBjb25zdW1lZCBpbiB0aGUgbWlkc3QgdGhlcmVvZjogYW5kIHllIHNoYWxsIGtub3cgdGhhdCBJIGFtIHRoZSBMT1JELgpUaHVzIHdpbGwgSSBhY2NvbXBsaXNoIG15IHdyYXRoIHVwb24gdGhlIHdhbGwsIGFuZCB1cG9uIHRoZW0gdGhhdCBoYXZlIGRhdWJlZCBpdCB3aXRoIHVudGVtcGVyZWQgbW9ydGVyLCBhbmQgd2lsbCBzYXkgdW50byB5b3UsIFRoZSB3YWxsIGlzIG5vIG1vcmUsIG5laXRoZXIgdGhleSB0aGF0IGRhdWJlZCBpdDsKVG8gd2l0LCB0aGUgcHJvcGhldHMgb2YgSXNyYWVsIHdoaWNoIHByb3BoZXN5IGNvbmNlcm5pbmcgSmVydXNhbGVtLCBhbmQgd2hpY2ggc2VlIHZpc2lvbnMgb2YgcGVhY2UgZm9yIGhlciwgYW5kIHRoZXJlIGlzIG5vIHBlYWNlLCBzYWl0aCB0aGUgTG9yZCBHT0QuCkxpa2V3aXNlLCB0aG91IHNvbiBvZiBtYW4sIHNldCB0aHkgZmFjZSBhZ2FpbnN0IHRoZSBkYXVnaHRlcnMgb2YgdGh5IHBlb3BsZSwgd2hpY2ggcHJvcGhlc3kgb3V0IG9mIHRoZWlyIG93biBoZWFydDsgYW5kIHByb3BoZXN5IHRob3UgYWdhaW5zdCB0aGVtLApBbmQgc2F5LCBUaHVzIHNhaXRoIHRoZSBMb3JkIEdPRDsgV29lIHRvIHRoZSB3b21lbiB0aGF0IHNldyBwaWxsb3dzIHRvIGFsbCBhcm1ob2xlcywgYW5kIG1ha2Uga2VyY2hpZWZzIHVwb24gdGhlIGhlYWQgb2YgZXZlcnkgc3RhdHVyZSB0byBodW50IHNvdWxzISBXaWxsIHllIGh1bnQgdGhlIHNvdWxzIG9mIG15IHBlb3BsZSwgYW5kIHdpbGwgeWUgc2F2ZSB0aGUgc291bHMgYWxpdmUgdGhhdCBjb21lIHVudG8geW91PwpBbmQgd2lsbCB5ZSBwb2xsdXRlIG1lIGFtb25nIG15IHBlb3BsZSBmb3IgaGFuZGZ1bHMgb2YgYmFybGV5IGFuZCBmb3IgcGllY2VzIG9mIGJyZWFkLCB0byBzbGF5IHRoZSBzb3VscyB0aGF0IHNob3VsZCBub3QgZGllLCBhbmQgdG8gc2F2ZSB0aGUgc291bHMgYWxpdmUgdGhhdCBzaG91bGQgbm90IGxpdmUsIGJ5IHlvdXIgbHlpbmcgdG8gbXkgcGVvcGxlIHRoYXQgaGVhciB5b3VyIGxpZXM/CldoZXJlZm9yZSB0aHVzIHNhaXRoIHRoZSBMb3JkIEdPRDsgQmVob2xkLCBJIGFtIGFnYWluc3QgeW91ciBwaWxsb3dzLCB3aGVyZXdpdGggeWUgdGhlcmUgaHVudCB0aGUgc291bHMgdG8gbWFrZSB0aGVtIGZseSwgYW5kIEkgd2lsbCB0ZWFyIHRoZW0gZnJvbSB5b3VyIGFybXMsIGFuZCB3aWxsIGxldCB0aGUgc291bHMgZ28sIGV2ZW4gdGhlIHNvdWxzIHRoYXQgeWUgaHVudCB0byBtYWtlIHRoZW0gZmx5LgpZb3VyIGtlcmNoaWVmcyBhbHNvIHdpbGwgSSB0ZWFyLCBhbmQgZGVsaXZlciBteSBwZW9wbGUgb3V0IG9mIHlvdXIgaGFuZCwgYW5kIHRoZXkgc2hhbGwgYmUgbm8gbW9yZSBpbiB5b3VyIGhhbmQgdG8gYmUgaHVudGVkOyBhbmQgeWUgc2hhbGwga25vdyB0aGF0IEkgYW0gdGhlIExPUkQuCkJlY2F1c2Ugd2l0aCBsaWVzIHllIGhhdmUgbWFkZSB0aGUgaGVhcnQgb2YgdGhlIHJpZ2h0ZW91cyBzYWQsIHdob20gSSBoYXZlIG5vdCBtYWRlIHNhZDsgYW5kIHN0cmVuZ3RoZW5lZCB0aGUgaGFuZHMgb2YgdGhlIHdpY2tlZCwgdGhhdCBoZSBzaG91bGQgbm90IHJldHVybiBmcm9tIGhpcyB3aWNrZWQgd2F5LCBieSBwcm9taXNpbmcgaGltIGxpZmU6ClRoZXJlZm9yZSB5ZSBzaGFsbCBzZWUgbm8gbW9yZSB2YW5pdHksIG5vciBkaXZpbmUgZGl2aW5hdGlvbnM6IGZvciBJIHdpbGwgZGVsaXZlciBteSBwZW9wbGUgb3V0IG9mIHlvdXIgaGFuZDogYW5kIHllIHNoYWxsIGtub3cgdGhhdCBJIGFtIHRoZSBMT1JELgpUaGVuIGNhbWUgY2VydGFpbiBvZiB0aGUgZWxkZXJzIG9mIElzcmFlbCB1bnRvIG1lLCBhbmQgc2F0IGJlZm9yZSBtZS4KQW5kIHRoZSB3b3JkIG9mIHRoZSBMT1JEIGNhbWUgdW50byBtZSwgc2F5aW5nLApTb24gb2YgbWFuLCB0aGVzZSBtZW4gaGF2ZSBzZXQgdXAgdGhlaXIgaWRvbHMgaW4gdGhlaXIgaGVhcnQsIGFuZCBwdXQgdGhlIHN0dW1ibGluZ2Jsb2NrIG9mIHRoZWlyIGluaXF1aXR5IGJlZm9yZSB0aGVpciBmYWNlOiBzaG91bGQgSSBiZSBlbnF1aXJlZCBvZiBhdCBhbGwgYnkgdGhlbT8KVGhlcmVmb3JlIHNwZWFrIHVudG8gdGhlbSwgYW5kIHNheSB1bnRvIHRoZW0sIFRodXMgc2FpdGggdGhlIExvcmQgR09EOyBFdmVyeSBtYW4gb2YgdGhlIGhvdXNlIG9mIElzcmFlbCB0aGF0IHNldHRldGggdXAgaGlzIGlkb2xzIGluIGhpcyBoZWFydCwgYW5kIHB1dHRldGggdGhlIHN0dW1ibGluZ2Jsb2NrIG9mIGhpcyBpbmlxdWl0eSBiZWZvcmUgaGlzIGZhY2UsIGFuZCBjb21ldGggdG8gdGhlIHByb3BoZXQ7IEkgdGhlIExPUkQgd2lsbCBhbnN3ZXIgaGltIHRoYXQgY29tZXRoIGFjY29yZGluZyB0byB0aGUgbXVsdGl0dWRlIG9mIGhpcyBpZG9sczsKVGhhdCBJIG1heSB0YWtlIHRoZSBob3VzZSBvZiBJc3JhZWwgaW4gdGhlaXIgb3duIGhlYXJ0LCBiZWNhdXNlIHRoZXkgYXJlIGFsbCBlc3RyYW5nZWQgZnJvbSBtZSB0aHJvdWdoIHRoZWlyIGlkb2xzLgpUaGVyZWZvcmUgc2F5IHVudG8gdGhlIGhvdXNlIG9mIElzcmFlbCwgVGh1cyBzYWl0aCB0aGUgTG9yZCBHT0Q7IFJlcGVudCwgYW5kIHR1cm4geW91cnNlbHZlcyBmcm9tIHlvdXIgaWRvbHM7IGFuZCB0dXJuIGF3YXkgeW91ciBmYWNlcyBmcm9tIGFsbCB5b3VyIGFib21pbmF0aW9ucy4KRm9yIGV2ZXJ5IG9uZSBvZiB0aGUgaG91c2Ugb2YgSXNyYWVsLCBvciBvZiB0aGUgc3RyYW5nZXIgdGhhdCBzb2pvdXJuZXRoIGluIElzcmFlbCwgd2hpY2ggc2VwYXJhdGV0aCBoaW1zZWxmIGZyb20gbWUsIGFuZCBzZXR0ZXRoIHVwIGhpcyBpZG9scyBpbiBoaXMgaGVhcnQsIGFuZCBwdXR0ZXRoIHRoZSBzdHVtYmxpbmdibG9jayBvZiBoaXMgaW5pcXVpdHkgYmVmb3JlIGhpcyBmYWNlLCBhbmQgY29tZXRoIHRvIGEgcHJvcGhldCB0byBlbnF1aXJlIG9mIGhpbSBjb25jZXJuaW5nIG1lOyBJIHRoZSBMT1JEIHdpbGwgYW5zd2VyIGhpbSBieSBteXNlbGY6CkFuZCBJIHdpbGwgc2V0IG15IGZhY2UgYWdhaW5zdCB0aGF0IG1hbiwgYW5kIHdpbGwgbWFrZSBoaW0gYSBzaWduIGFuZCBhIHByb3ZlcmIsIGFuZCBJIHdpbGwgY3V0IGhpbSBvZmYgZnJvbSB0aGUgbWlkc3Qgb2YgbXkgcGVvcGxlOyBhbmQgeWUgc2hhbGwga25vdyB0aGF0IEkgYW0gdGhlIExPUkQuCkFuZCBpZiB0aGUgcHJvcGhldCBiZSBkZWNlaXZlZCB3aGVuIGhlIGhhdGggc3Bva2VuIGEgdGhpbmcsIEkgdGhlIExPUkQgaGF2ZSBkZWNlaXZlZCB0aGF0IHByb3BoZXQsIGFuZCBJIHdpbGwgc3RyZXRjaCBvdXQgbXkgaGFuZCB1cG9uIGhpbSwgYW5kIHdpbGwgZGVzdHJveSBoaW0gZnJvbSB0aGUgbWlkc3Qgb2YgbXkgcGVvcGxlIElzcmFlbC4KQW5kIHRoZXkgc2hhbGwgYmVhciB0aGUgcHVuaXNobWVudCBvZiB0aGVpciBpbmlxdWl0eTogdGhlIHB1bmlzaG1lbnQgb2YgdGhlIHByb3BoZXQgc2hhbGwgYmUgZXZlbiBhcyB0aGUgcHVuaXNobWVudCBvZiBoaW0gdGhhdCBzZWVrZXRoIHVudG8gaGltOwpUaGF0IHRoZSBob3VzZSBvZiBJc3JhZWwgbWF5IGdvIG5vIG1vcmUgYXN0cmF5IGZyb20gbWUsIG5laXRoZXIgYmUgcG9sbHV0ZWQgYW55IG1vcmUgd2l0aCBhbGwgdGhlaXIgdHJhbnNncmVzc2lvbnM7IGJ1dCB0aGF0IHRoZXkgbWF5IGJlIG15IHBlb3BsZSwgYW5kIEkgbWF5IGJlIHRoZWlyIEdvZCwgc2FpdGggdGhlIExvcmQgR09ELgpUaGUgd29yZCBvZiB0aGUgTE9SRCBjYW1lIGFnYWluIHRvIG1lLCBzYXlpbmcsClNvbiBvZiBtYW4sIHdoZW4gdGhlIGxhbmQgc2lubmV0aCBhZ2FpbnN0IG1lIGJ5IHRyZXNwYXNzaW5nIGdyaWV2b3VzbHksIHRoZW4gd2lsbCBJIHN0cmV0Y2ggb3V0IG1pbmUgaGFuZCB1cG9uIGl0LCBhbmQgd2lsbCBicmVhayB0aGUgc3RhZmYgb2YgdGhlIGJyZWFkIHRoZXJlb2YsIGFuZCB3aWxsIHNlbmQgZmFtaW5lIHVwb24gaXQsIGFuZCB3aWxsIGN1dCBvZmYgbWFuIGFuZCBiZWFzdCBmcm9tIGl0OgpUaG91Z2ggdGhlc2UgdGhyZWUgbWVuLCBOb2FoLCBEYW5pZWwsIGFuZCBKb2IsIHdlcmUgaW4gaXQsIHRoZXkgc2hvdWxkIGRlbGl2ZXIgYnV0IHRoZWlyIG93biBzb3VscyBieSB0aGVpciByaWdodGVvdXNuZXNzLCBzYWl0aCB0aGUgTG9yZCBHT0QuCklmIEkgY2F1c2Ugbm9pc29tZSBiZWFzdHMgdG8gcGFzcyB0aHJvdWdoIHRoZSBsYW5kLCBhbmQgdGhleSBzcG9pbCBpdCwgc28gdGhhdCBpdCBiZSBkZXNvbGF0ZSwgdGhhdCBubyBtYW4gbWF5IHBhc3MgdGhyb3VnaCBiZWNhdXNlIG9mIHRoZSBiZWFzdHM6ClRob3VnaCB0aGVzZSB0aHJlZSBtZW4gd2VyZSBpbiBpdCwgYXMgSSBsaXZlLCBzYWl0aCB0aGUgTG9yZCBHT0QsIHRoZXkgc2hhbGwgZGVsaXZlciBuZWl0aGVyIHNvbnMgbm9yIGRhdWdodGVyczsgdGhleSBvbmx5IHNoYWxsIGJlIGRlbGl2ZXJlZCwgYnV0IHRoZSBsYW5kIHNoYWxsIGJlIGRlc29sYXRlLgpPciBpZiBJIGJyaW5nIGEgc3dvcmQgdXBvbiB0aGF0IGxhbmQsIGFuZCBzYXksIFN3b3JkLCBnbyB0aHJvdWdoIHRoZSBsYW5kOyBzbyB0aGF0IEkgY3V0IG9mZiBtYW4gYW5kIGJlYXN0IGZyb20gaXQ6ClRob3VnaCB0aGVzZSB0aHJlZSBtZW4gd2VyZSBpbiBpdCwgYXMgSSBsaXZlLCBzYWl0aCB0aGUgTG9yZCBHT0QsIHRoZXkgc2hhbGwgZGVsaXZlciBuZWl0aGVyIHNvbnMgbm9yIGRhdWdodGVycywgYnV0IHRoZXkgb25seSBzaGFsbCBiZSBkZWxpdmVyZWQgdGhlbXNlbHZlcy4KT3IgaWYgSSBzZW5kIGEgcGVzdGlsZW5jZSBpbnRvIHRoYXQgbGFuZCwgYW5kIHBvdXIgb3V0IG15IGZ1cnkgdXBvbiBpdCBpbiBibG9vZCwgdG8gY3V0IG9mZiBmcm9tIGl0IG1hbiBhbmQgYmVhc3Q6ClRob3VnaCBOb2FoLCBEYW5pZWwsIGFuZCBKb2Igd2VyZSBpbiBpdCwgYXMgSSBsaXZlLCBzYWl0aCB0aGUgTG9yZCBHT0QsIHRoZXkgc2hhbGwgZGVsaXZlciBuZWl0aGVyIHNvbiBub3IgZGF1Z2h0ZXI7IHRoZXkgc2hhbGwgYnV0IGRlbGl2ZXIgdGhlaXIgb3duIHNvdWxzIGJ5IHRoZWlyIHJpZ2h0ZW91c25lc3MuCkZvciB0aHVzIHNhaXRoIHRoZSBMb3JkIEdPRDsgSG93IG11Y2ggbW9yZSB3aGVuIEkgc2VuZCBteSBmb3VyIHNvcmUganVkZ21lbnRzIHVwb24gSmVydXNhbGVtLCB0aGUgc3dvcmQsIGFuZCB0aGUgZmFtaW5lLCBhbmQgdGhlIG5vaXNvbWUgYmVhc3QsIGFuZCB0aGUgcGVzdGlsZW5jZSwgdG8gY3V0IG9mZiBmcm9tIGl0IG1hbiBhbmQgYmVhc3Q/CllldCwgYmVob2xkLCB0aGVyZWluIHNoYWxsIGJlIGxlZnQgYSByZW1uYW50IHRoYXQgc2hhbGwgYmUgYnJvdWdodCBmb3J0aCwgYm90aCBzb25zIGFuZCBkYXVnaHRlcnM6IGJlaG9sZCwgdGhleSBzaGFsbCBjb21lIGZvcnRoIHVudG8geW91LCBhbmQgeWUgc2hhbGwgc2VlIHRoZWlyIHdheSBhbmQgdGhlaXIgZG9pbmdzOiBhbmQgeWUgc2hhbGwgYmUgY29tZm9ydGVkIGNvbmNlcm5pbmcgdGhlIGV2aWwgdGhhdCBJIGhhdmUgYnJvdWdodCB1cG9uIEplcnVzYWxlbSwgZXZlbiBjb25jZXJuaW5nIGFsbCB0aGF0IEkgaGF2ZSBicm91Z2h0IHVwb24gaXQuCkFuZCB0aGV5IHNoYWxsIGNvbWZvcnQgeW91LCB3aGVuIHllIHNlZSB0aGVpciB3YXlzIGFuZCB0aGVpciBkb2luZ3M6IGFuZCB5ZSBzaGFsbCBrbm93IHRoYXQgSSBoYXZlIG5vdCBkb25lIHdpdGhvdXQgY2F1c2UgYWxsIHRoYXQgSSBoYXZlIGRvbmUgaW4gaXQsIHNhaXRoIHRoZSBMb3JkIEdPRC4KQW5kIHRoZSB3b3JkIG9mIHRoZSBMT1JEIGNhbWUgdW50byBtZSwgc2F5aW5nLApTb24gb2YgbWFuLCB3aGF0IGlzIHRoZSB2aW5lIHRyZWUgbW9yZSB0aGFuIGFueSB0cmVlLCBvciB0aGFuIGEgYnJhbmNoIHdoaWNoIGlzIGFtb25nIHRoZSB0cmVlcyBvZiB0aGUgZm9yZXN0PwpTaGFsbCB3b29kIGJlIHRha2VuIHRoZXJlb2YgdG8gZG8gYW55IHdvcms/IG9yIHdpbGwgbWVuIHRha2UgYSBwaW4gb2YgaXQgdG8gaGFuZyBhbnkgdmVzc2VsIHRoZXJlb24/CkJlaG9sZCwgaXQgaXMgY2FzdCBpbnRvIHRoZSBmaXJlIGZvciBmdWVsOyB0aGUgZmlyZSBkZXZvdXJldGggYm90aCB0aGUgZW5kcyBvZiBpdCwgYW5kIHRoZSBtaWRzdCBvZiBpdCBpcyBidXJuZWQuIElzIGl0IG1lZXQgZm9yIGFueSB3b3JrPwpCZWhvbGQsIHdoZW4gaXQgd2FzIHdob2xlLCBpdCB3YXMgbWVldCBmb3Igbm8gd29yazogaG93IG11Y2ggbGVzcyBzaGFsbCBpdCBiZSBtZWV0IHlldCBmb3IgYW55IHdvcmssIHdoZW4gdGhlIGZpcmUgaGF0aCBkZXZvdXJlZCBpdCwgYW5kIGl0IGlzIGJ1cm5lZD8KVGhlcmVmb3JlIHRodXMgc2FpdGggdGhlIExvcmQgR09EOyBBcyB0aGUgdmluZSB0cmVlIGFtb25nIHRoZSB0cmVlcyBvZiB0aGUgZm9yZXN0LCB3aGljaCBJIGhhdmUgZ2l2ZW4gdG8gdGhlIGZpcmUgZm9yIGZ1ZWwsIHNvIHdpbGwgSSBnaXZlIHRoZSBpbmhhYml0YW50cyBvZiBKZXJ1c2FsZW0uCkFuZCBJIHdpbGwgc2V0IG15IGZhY2UgYWdhaW5zdCB0aGVtOyB0aGV5IHNoYWxsIGdvIG91dCBmcm9tIG9uZSBmaXJlLCBhbmQgYW5vdGhlciBmaXJlIHNoYWxsIGRldm91ciB0aGVtOyBhbmQgeWUgc2hhbGwga25vdyB0aGF0IEkgYW0gdGhlIExPUkQsIHdoZW4gSSBzZXQgbXkgZmFjZSBhZ2FpbnN0IHRoZW0uCkFuZCBJIHdpbGwgbWFrZSB0aGUgbGFuZCBkZXNvbGF0ZSwgYmVjYXVzZSB0aGV5IGhhdmUgY29tbWl0dGVkIGEgdHJlc3Bhc3MsIHNhaXRoIHRoZSBMb3JkIEdPRC4KQWdhaW4gdGhlIHdvcmQgb2YgdGhlIExPUkQgY2FtZSB1bnRvIG1lLCBzYXlpbmcsClNvbiBvZiBtYW4sIGNhdXNlIEplcnVzYWxlbSB0byBrbm93IGhlciBhYm9taW5hdGlvbnMsCkFuZCBzYXksIFRodXMgc2FpdGggdGhlIExvcmQgR09EIHVudG8gSmVydXNhbGVtOyBUaHkgYmlydGggYW5kIHRoeSBuYXRpdml0eSBpcyBvZiB0aGUgbGFuZCBvZiBDYW5hYW47IHRoeSBmYXRoZXIgd2FzIGFuIEFtb3JpdGUsIGFuZCB0aHkgbW90aGVyIGFuIEhpdHRpdGUuCkFuZCBhcyBmb3IgdGh5IG5hdGl2aXR5LCBpbiB0aGUgZGF5IHRob3Ugd2FzdCBib3JuIHRoeSBuYXZlbCB3YXMgbm90IGN1dCwgbmVpdGhlciB3YXN0IHRob3Ugd2FzaGVkIGluIHdhdGVyIHRvIHN1cHBsZSB0aGVlOyB0aG91IHdhc3Qgbm90IHNhbHRlZCBhdCBhbGwsIG5vciBzd2FkZGxlZCBhdCBhbGwuCk5vbmUgZXllIHBpdGllZCB0aGVlLCB0byBkbyBhbnkgb2YgdGhlc2UgdW50byB0aGVlLCB0byBoYXZlIGNvbXBhc3Npb24gdXBvbiB0aGVlOyBidXQgdGhvdSB3YXN0IGNhc3Qgb3V0IGluIHRoZSBvcGVuIGZpZWxkLCB0byB0aGUgbG90aGluZyBvZiB0aHkgcGVyc29uLCBpbiB0aGUgZGF5IHRoYXQgdGhvdSB3YXN0IGJvcm4uCkFuZCB3aGVuIEkgcGFzc2VkIGJ5IHRoZWUsIGFuZCBzYXcgdGhlZSBwb2xsdXRlZCBpbiB0aGluZSBvd24gYmxvb2QsIEkgc2FpZCB1bnRvIHRoZWUgd2hlbiB0aG91IHdhc3QgaW4gdGh5IGJsb29kLCBMaXZlOyB5ZWEsIEkgc2FpZCB1bnRvIHRoZWUgd2hlbiB0aG91IHdhc3QgaW4gdGh5IGJsb29kLCBMaXZlLgpJIGhhdmUgY2F1c2VkIHRoZWUgdG8gbXVsdGlwbHkgYXMgdGhlIGJ1ZCBvZiB0aGUgZmllbGQsIGFuZCB0aG91IGhhc3QgaW5jcmVhc2VkIGFuZCB3YXhlbiBncmVhdCwgYW5kIHRob3UgYXJ0IGNvbWUgdG8gZXhjZWxsZW50IG9ybmFtZW50czogdGh5IGJyZWFzdHMgYXJlIGZhc2hpb25lZCwgYW5kIHRoaW5lIGhhaXIgaXMgZ3Jvd24sIHdoZXJlYXMgdGhvdSB3YXN0IG5ha2VkIGFuZCBiYXJlLgpOb3cgd2hlbiBJIHBhc3NlZCBieSB0aGVlLCBhbmQgbG9va2VkIHVwb24gdGhlZSwgYmVob2xkLCB0aHkgdGltZSB3YXMgdGhlIHRpbWUgb2YgbG92ZTsgYW5kIEkgc3ByZWFkIG15IHNraXJ0IG92ZXIgdGhlZSwgYW5kIGNvdmVyZWQgdGh5IG5ha2VkbmVzczogeWVhLCBJIHN3YXJlIHVudG8gdGhlZSwgYW5kIGVudGVyZWQgaW50byBhIGNvdmVuYW50IHdpdGggdGhlZSwgc2FpdGggdGhlIExvcmQgR09ELCBhbmQgdGhvdSBiZWNhbWVzdCBtaW5lLgpUaGVuIHdhc2hlZCBJIHRoZWUgd2l0aCB3YXRlcjsgeWVhLCBJIHRocm91Z2hseSB3YXNoZWQgYXdheSB0aHkgYmxvb2QgZnJvbSB0aGVlLCBhbmQgSSBhbm9pbnRlZCB0aGVlIHdpdGggb2lsLgpJIGNsb3RoZWQgdGhlZSBhbHNvIHdpdGggYnJvaWRlcmVkIHdvcmssIGFuZCBzaG9kIHRoZWUgd2l0aCBiYWRnZXJzJyBza2luLCBhbmQgSSBnaXJkZWQgdGhlZSBhYm91dCB3aXRoIGZpbmUgbGluZW4sIGFuZCBJIGNvdmVyZWQgdGhlZSB3aXRoIHNpbGsuCkkgZGVja2VkIHRoZWUgYWxzbyB3aXRoIG9ybmFtZW50cywgYW5kIEkgcHV0IGJyYWNlbGV0cyB1cG9uIHRoeSBoYW5kcywgYW5kIGEgY2hhaW4gb24gdGh5IG5lY2suCkFuZCBJIHB1dCBhIGpld2VsIG9uIHRoeSBmb3JlaGVhZCwgYW5kIGVhcnJpbmdzIGluIHRoaW5lIGVhcnMsIGFuZCBhIGJlYXV0aWZ1bCBjcm93biB1cG9uIHRoaW5lIGhlYWQuClRodXMgd2FzdCB0aG91IGRlY2tlZCB3aXRoIGdvbGQgYW5kIHNpbHZlcjsgYW5kIHRoeSByYWltZW50IHdhcyBvZiBmaW5lIGxpbmVuLCBhbmQgc2lsaywgYW5kIGJyb2lkZXJlZCB3b3JrOyB0aG91IGRpZHN0IGVhdCBmaW5lIGZsb3VyLCBhbmQgaG9uZXksIGFuZCBvaWw6IGFuZCB0aG91IHdhc3QgZXhjZWVkaW5nIGJlYXV0aWZ1bCwgYW5kIHRob3UgZGlkc3QgcHJvc3BlciBpbnRvIGEga2luZ2RvbS4KQW5kIHRoeSByZW5vd24gd2VudCBmb3J0aCBhbW9uZyB0aGUgaGVhdGhlbiBmb3IgdGh5IGJlYXV0eTogZm9yIGl0IHdhcyBwZXJmZWN0IHRocm91Z2ggbXkgY29tZWxpbmVzcywgd2hpY2ggSSBoYWQgcHV0IHVwb24gdGhlZSwgc2FpdGggdGhlIExvcmQgR09ELgpCdXQgdGhvdSBkaWRzdCB0cnVzdCBpbiB0aGluZSBvd24gYmVhdXR5LCBhbmQgcGxheWVkc3QgdGhlIGhhcmxvdCBiZWNhdXNlIG9mIHRoeSByZW5vd24sIGFuZCBwb3VyZWRzdCBvdXQgdGh5IGZvcm5pY2F0aW9ucyBvbiBldmVyeSBvbmUgdGhhdCBwYXNzZWQgYnk7IGhpcyBpdCB3YXMuCkFuZCBvZiB0aHkgZ2FybWVudHMgdGhvdSBkaWRzdCB0YWtlLCBhbmQgZGVja2Vkc3QgdGh5IGhpZ2ggcGxhY2VzIHdpdGggZGl2ZXJzIGNvbG91cnMsIGFuZCBwbGF5ZWRzdCB0aGUgaGFybG90IHRoZXJldXBvbjogdGhlIGxpa2UgdGhpbmdzIHNoYWxsIG5vdCBjb21lLCBuZWl0aGVyIHNoYWxsIGl0IGJlIHNvLgpUaG91IGhhc3QgYWxzbyB0YWtlbiB0aHkgZmFpciBqZXdlbHMgb2YgbXkgZ29sZCBhbmQgb2YgbXkgc2lsdmVyLCB3aGljaCBJIGhhZCBnaXZlbiB0aGVlLCBhbmQgbWFkZXN0IHRvIHRoeXNlbGYgaW1hZ2VzIG9mIG1lbiwgYW5kIGRpZHN0IGNvbW1pdCB3aG9yZWRvbSB3aXRoIHRoZW0sCkFuZCB0b29rZXN0IHRoeSBicm9pZGVyZWQgZ2FybWVudHMsIGFuZCBjb3ZlcmVkc3QgdGhlbTogYW5kIHRob3UgaGFzdCBzZXQgbWluZSBvaWwgYW5kIG1pbmUgaW5jZW5zZSBiZWZvcmUgdGhlbS4KTXkgbWVhdCBhbHNvIHdoaWNoIEkgZ2F2ZSB0aGVlLCBmaW5lIGZsb3VyLCBhbmQgb2lsLCBhbmQgaG9uZXksIHdoZXJld2l0aCBJIGZlZCB0aGVlLCB0aG91IGhhc3QgZXZlbiBzZXQgaXQgYmVmb3JlIHRoZW0gZm9yIGEgc3dlZXQgc2F2b3VyOiBhbmQgdGh1cyBpdCB3YXMsIHNhaXRoIHRoZSBMb3JkIEdPRC4KTW9yZW92ZXIgdGhvdSBoYXN0IHRha2VuIHRoeSBzb25zIGFuZCB0aHkgZGF1Z2h0ZXJzLCB3aG9tIHRob3UgaGFzdCBib3JuZSB1bnRvIG1lLCBhbmQgdGhlc2UgaGFzdCB0aG91IHNhY3JpZmljZWQgdW50byB0aGVtIHRvIGJlIGRldm91cmVkLiBJcyB0aGlzIG9mIHRoeSB3aG9yZWRvbXMgYSBzbWFsbCBtYXR0ZXIsClRoYXQgdGhvdSBoYXN0IHNsYWluIG15IGNoaWxkcmVuLCBhbmQgZGVsaXZlcmVkIHRoZW0gdG8gY2F1c2UgdGhlbSB0byBwYXNzIHRocm91Z2ggdGhlIGZpcmUgZm9yIHRoZW0/CkFuZCBpbiBhbGwgdGhpbmUgYWJvbWluYXRpb25zIGFuZCB0aHkgd2hvcmVkb21zIHRob3UgaGFzdCBub3QgcmVtZW1iZXJlZCB0aGUgZGF5cyBvZiB0aHkgeW91dGgsIHdoZW4gdGhvdSB3YXN0IG5ha2VkIGFuZCBiYXJlLCBhbmQgd2FzdCBwb2xsdXRlZCBpbiB0aHkgYmxvb2QuCkFuZCBpdCBjYW1lIHRvIHBhc3MgYWZ0ZXIgYWxsIHRoeSB3aWNrZWRuZXNzLCAod29lLCB3b2UgdW50byB0aGVlISBzYWl0aCB0aGUgTE9SRCBHT0Q7KQpUaGF0IHRob3UgaGFzdCBhbHNvIGJ1aWx0IHVudG8gdGhlZSBhbiBlbWluZW50IHBsYWNlLCBhbmQgaGFzdCBtYWRlIHRoZWUgYW4gaGlnaCBwbGFjZSBpbiBldmVyeSBzdHJlZXQuClRob3UgaGFzdCBidWlsdCB0aHkgaGlnaCBwbGFjZSBhdCBldmVyeSBoZWFkIG9mIHRoZSB3YXksIGFuZCBoYXN0IG1hZGUgdGh5IGJlYXV0eSB0byBiZSBhYmhvcnJlZCwgYW5kIGhhc3Qgb3BlbmVkIHRoeSBmZWV0IHRvIGV2ZXJ5IG9uZSB0aGF0IHBhc3NlZCBieSwgYW5kIG11bHRpcGxpZWQgdGh5IHdob3JlZG9tcy4KVGhvdSBoYXN0IGFsc28gY29tbWl0dGVkIGZvcm5pY2F0aW9uIHdpdGggdGhlIEVneXB0aWFucyB0aHkgbmVpZ2hib3VycywgZ3JlYXQgb2YgZmxlc2g7IGFuZCBoYXN0IGluY3JlYXNlZCB0aHkgd2hvcmVkb21zLCB0byBwcm92b2tlIG1lIHRvIGFuZ2VyLgpCZWhvbGQsIHRoZXJlZm9yZSBJIGhhdmUgc3RyZXRjaGVkIG91dCBteSBoYW5kIG92ZXIgdGhlZSwgYW5kIGhhdmUgZGltaW5pc2hlZCB0aGluZSBvcmRpbmFyeSBmb29kLCBhbmQgZGVsaXZlcmVkIHRoZWUgdW50byB0aGUgd2lsbCBvZiB0aGVtIHRoYXQgaGF0ZSB0aGVlLCB0aGUgZGF1Z2h0ZXJzIG9mIHRoZSBQaGlsaXN0aW5lcywgd2hpY2ggYXJlIGFzaGFtZWQgb2YgdGh5IGxld2Qgd2F5LgpUaG91IGhhc3QgcGxheWVkIHRoZSB3aG9yZSBhbHNvIHdpdGggdGhlIEFzc3lyaWFucywgYmVjYXVzZSB0aG91IHdhc3QgdW5zYXRpYWJsZTsgeWVhLCB0aG91IGhhc3QgcGxheWVkIHRoZSBoYXJsb3Qgd2l0aCB0aGVtLCBhbmQgeWV0IGNvdWxkZXN0IG5vdCBiZSBzYXRpc2ZpZWQuClRob3UgaGFzdCBtb3Jlb3ZlciBtdWx0aXBsaWVkIHRoeSBmb3JuaWNhdGlvbiBpbiB0aGUgbGFuZCBvZiBDYW5hYW4gdW50byBDaGFsZGVhOyBhbmQgeWV0IHRob3Ugd2FzdCBub3Qgc2F0aXNmaWVkIHRoZXJld2l0aC4KSG93IHdlYWsgaXMgdGhpbmUgaGVhcnQsIHNhaXRoIHRoZSBMT1JEIEdPRCwgc2VlaW5nIHRob3UgZG9lc3QgYWxsIHRoZXNlIHRoaW5ncywgdGhlIHdvcmsgb2YgYW4gaW1wZXJpb3VzIHdob3Jpc2ggd29tYW47CkluIHRoYXQgdGhvdSBidWlsZGVzdCB0aGluZSBlbWluZW50IHBsYWNlIGluIHRoZSBoZWFkIG9mIGV2ZXJ5IHdheSwgYW5kIG1ha2VzdCB0aGluZSBoaWdoIHBsYWNlIGluIGV2ZXJ5IHN0cmVldDsgYW5kIGhhc3Qgbm90IGJlZW4gYXMgYW4gaGFybG90LCBpbiB0aGF0IHRob3Ugc2Nvcm5lc3QgaGlyZTsKQnV0IGFzIGEgd2lmZSB0aGF0IGNvbW1pdHRldGggYWR1bHRlcnksIHdoaWNoIHRha2V0aCBzdHJhbmdlcnMgaW5zdGVhZCBvZiBoZXIgaHVzYmFuZCEKVGhleSBnaXZlIGdpZnRzIHRvIGFsbCB3aG9yZXM6IGJ1dCB0aG91IGdpdmVzdCB0aHkgZ2lmdHMgdG8gYWxsIHRoeSBsb3ZlcnMsIGFuZCBoaXJlc3QgdGhlbSwgdGhhdCB0aGV5IG1heSBjb21lIHVudG8gdGhlZSBvbiBldmVyeSBzaWRlIGZvciB0aHkgd2hvcmVkb20uCkFuZCB0aGUgY29udHJhcnkgaXMgaW4gdGhlZSBmcm9tIG90aGVyIHdvbWVuIGluIHRoeSB3aG9yZWRvbXMsIHdoZXJlYXMgbm9uZSBmb2xsb3dldGggdGhlZSB0byBjb21taXQgd2hvcmVkb21zOiBhbmQgaW4gdGhhdCB0aG91IGdpdmVzdCBhIHJld2FyZCwgYW5kIG5vIHJld2FyZCBpcyBnaXZlbiB1bnRvIHRoZWUsIHRoZXJlZm9yZSB0aG91IGFydCBjb250cmFyeS4KV2hlcmVmb3JlLCBPIGhhcmxvdCwgaGVhciB0aGUgd29yZCBvZiB0aGUgTE9SRDoKVGh1cyBzYWl0aCB0aGUgTG9yZCBHT0Q7IEJlY2F1c2UgdGh5IGZpbHRoaW5lc3Mgd2FzIHBvdXJlZCBvdXQsIGFuZCB0aHkgbmFrZWRuZXNzIGRpc2NvdmVyZWQgdGhyb3VnaCB0aHkgd2hvcmVkb21zIHdpdGggdGh5IGxvdmVycywgYW5kIHdpdGggYWxsIHRoZSBpZG9scyBvZiB0aHkgYWJvbWluYXRpb25zLCBhbmQgYnkgdGhlIGJsb29kIG9mIHRoeSBjaGlsZHJlbiwgd2hpY2ggdGhvdSBkaWRzdCBnaXZlIHVudG8gdGhlbTsKQmVob2xkLCB0aGVyZWZvcmUgSSB3aWxsIGdhdGhlciBhbGwgdGh5IGxvdmVycywgd2l0aCB3aG9tIHRob3UgaGFzdCB0YWtlbiBwbGVhc3VyZSwgYW5kIGFsbCB0aGVtIHRoYXQgdGhvdSBoYXN0IGxvdmVkLCB3aXRoIGFsbCB0aGVtIHRoYXQgdGhvdSBoYXN0IGhhdGVkOyBJIHdpbGwgZXZlbiBnYXRoZXIgdGhlbSByb3VuZCBhYm91dCBhZ2FpbnN0IHRoZWUsIGFuZCB3aWxsIGRpc2NvdmVyIHRoeSBuYWtlZG5lc3MgdW50byB0aGVtLCB0aGF0IHRoZXkgbWF5IHNlZSBhbGwgdGh5IG5ha2VkbmVzcy4KQW5kIEkgd2lsbCBqdWRnZSB0aGVlLCBhcyB3b21lbiB0aGF0IGJyZWFrIHdlZGxvY2sgYW5kIHNoZWQgYmxvb2QgYXJlIGp1ZGdlZDsgYW5kIEkgd2lsbCBnaXZlIHRoZWUgYmxvb2QgaW4gZnVyeSBhbmQgamVhbG91c3kuCkFuZCBJIHdpbGwgYWxzbyBnaXZlIHRoZWUgaW50byB0aGVpciBoYW5kLCBhbmQgdGhleSBzaGFsbCB0aHJvdyBkb3duIHRoaW5lIGVtaW5lbnQgcGxhY2UsIGFuZCBzaGFsbCBicmVhayBkb3duIHRoeSBoaWdoIHBsYWNlczogdGhleSBzaGFsbCBzdHJpcCB0aGVlIGFsc28gb2YgdGh5IGNsb3RoZXMsIGFuZCBzaGFsbCB0YWtlIHRoeSBmYWlyIGpld2VscywgYW5kIGxlYXZlIHRoZWUgbmFrZWQgYW5kIGJhcmUuClRoZXkgc2hhbGwgYWxzbyBicmluZyB1cCBhIGNvbXBhbnkgYWdhaW5zdCB0aGVlLCBhbmQgdGhleSBzaGFsbCBzdG9uZSB0aGVlIHdpdGggc3RvbmVzLCBhbmQgdGhydXN0IHRoZWUgdGhyb3VnaCB3aXRoIHRoZWlyIHN3b3Jkcy4KQW5kIHRoZXkgc2hhbGwgYnVybiB0aGluZSBob3VzZXMgd2l0aCBmaXJlLCBhbmQgZXhlY3V0ZSBqdWRnbWVudHMgdXBvbiB0aGVlIGluIHRoZSBzaWdodCBvZiBtYW55IHdvbWVuOiBhbmQgSSB3aWxsIGNhdXNlIHRoZWUgdG8gY2Vhc2UgZnJvbSBwbGF5aW5nIHRoZSBoYXJsb3QsIGFuZCB0aG91IGFsc28gc2hhbHQgZ2l2ZSBubyBoaXJlIGFueSBtb3JlLgpTbyB3aWxsIEkgbWFrZSBteSBmdXJ5IHRvd2FyZCB0aGVlIHRvIHJlc3QsIGFuZCBteSBqZWFsb3VzeSBzaGFsbCBkZXBhcnQgZnJvbSB0aGVlLCBhbmQgSSB3aWxsIGJlIHF1aWV0LCBhbmQgd2lsbCBiZSBubyBtb3JlIGFuZ3J5LgpCZWNhdXNlIHRob3UgaGFzdCBub3QgcmVtZW1iZXJlZCB0aGUgZGF5cyBvZiB0aHkgeW91dGgsIGJ1dCBoYXN0IGZyZXR0ZWQgbWUgaW4gYWxsIHRoZXNlIHRoaW5nczsgYmVob2xkLCB0aGVyZWZvcmUgSSBhbHNvIHdpbGwgcmVjb21wZW5zZSB0aHkgd2F5IHVwb24gdGhpbmUgaGVhZCwgc2FpdGggdGhlIExvcmQgR09EOiBhbmQgdGhvdSBzaGFsdCBub3QgY29tbWl0IHRoaXMgbGV3ZG5lc3MgYWJvdmUgYWxsIHRoaW5lIGFib21pbmF0aW9ucy4KQmVob2xkLCBldmVyeSBvbmUgdGhhdCB1c2V0aCBwcm92ZXJicyBzaGFsbCB1c2UgdGhpcyBwcm92ZXJiIGFnYWluc3QgdGhlZSwgc2F5aW5nLCBBcyBpcyB0aGUgbW90aGVyLCBzbyBpcyBoZXIgZGF1Z2h0ZXIuClRob3UgYXJ0IHRoeSBtb3RoZXIncyBkYXVnaHRlciwgdGhhdCBsb3RoZXRoIGhlciBodXNiYW5kIGFuZCBoZXIgY2hpbGRyZW47IGFuZCB0aG91IGFydCB0aGUgc2lzdGVyIG9mIHRoeSBzaXN0ZXJzLCB3aGljaCBsb3RoZWQgdGhlaXIgaHVzYmFuZHMgYW5kIHRoZWlyIGNoaWxkcmVuOiB5b3VyIG1vdGhlciB3YXMgYW4gSGl0dGl0ZSwgYW5kIHlvdXIgZmF0aGVyIGFuIEFtb3JpdGUuCkFuZCB0aGluZSBlbGRlciBzaXN0ZXIgaXMgU2FtYXJpYSwgc2hlIGFuZCBoZXIgZGF1Z2h0ZXJzIHRoYXQgZHdlbGwgYXQgdGh5IGxlZnQgaGFuZDogYW5kIHRoeSB5b3VuZ2VyIHNpc3RlciwgdGhhdCBkd2VsbGV0aCBhdCB0aHkgcmlnaHQgaGFuZCwgaXMgU29kb20gYW5kIGhlciBkYXVnaHRlcnMuCllldCBoYXN0IHRob3Ugbm90IHdhbGtlZCBhZnRlciB0aGVpciB3YXlzLCBub3IgZG9uZSBhZnRlciB0aGVpciBhYm9taW5hdGlvbnM6IGJ1dCwgYXMgaWYgdGhhdCB3ZXJlIGEgdmVyeSBsaXR0bGUgdGhpbmcsIHRob3Ugd2FzdCBjb3JydXB0ZWQgbW9yZSB0aGFuIHRoZXkgaW4gYWxsIHRoeSB3YXlzLgpBcyBJIGxpdmUsIHNhaXRoIHRoZSBMb3JkIEdPRCwgU29kb20gdGh5IHNpc3RlciBoYXRoIG5vdCBkb25lLCBzaGUgbm9yIGhlciBkYXVnaHRlcnMsIGFzIHRob3UgaGFzdCBkb25lLCB0aG91IGFuZCB0aHkgZGF1Z2h0ZXJzLgpCZWhvbGQsIHRoaXMgd2FzIHRoZSBpbmlxdWl0eSBvZiB0aHkgc2lzdGVyIFNvZG9tLCBwcmlkZSwgZnVsbmVzcyBvZiBicmVhZCwgYW5kIGFidW5kYW5jZSBvZiBpZGxlbmVzcyB3YXMgaW4gaGVyIGFuZCBpbiBoZXIgZGF1Z2h0ZXJzLCBuZWl0aGVyIGRpZCBzaGUgc3RyZW5ndGhlbiB0aGUgaGFuZCBvZiB0aGUgcG9vciBhbmQgbmVlZHkuCkFuZCB0aGV5IHdlcmUgaGF1Z2h0eSwgYW5kIGNvbW1pdHRlZCBhYm9taW5hdGlvbiBiZWZvcmUgbWU6IHRoZXJlZm9yZSBJIHRvb2sgdGhlbSBhd2F5IGFzIEkgc2F3IGdvb2QuCk5laXRoZXIgaGF0aCBTYW1hcmlhIGNvbW1pdHRlZCBoYWxmIG9mIHRoeSBzaW5zOyBidXQgdGhvdSBoYXN0IG11bHRpcGxpZWQgdGhpbmUgYWJvbWluYXRpb25zIG1vcmUgdGhhbiB0aGV5LCBhbmQgaGFzdCBqdXN0aWZpZWQgdGh5IHNpc3RlcnMgaW4gYWxsIHRoaW5lIGFib21pbmF0aW9ucyB3aGljaCB0aG91IGhhc3QgZG9uZS4KVGhvdSBhbHNvLCB3aGljaCBoYXN0IGp1ZGdlZCB0aHkgc2lzdGVycywgYmVhciB0aGluZSBvd24gc2hhbWUgZm9yIHRoeSBzaW5zIHRoYXQgdGhvdSBoYXN0IGNvbW1pdHRlZCBtb3JlIGFib21pbmFibGUgdGhhbiB0aGV5OiB0aGV5IGFyZSBtb3JlIHJpZ2h0ZW91cyB0aGFuIHRob3U6IHllYSwgYmUgdGhvdSBjb25mb3VuZGVkIGFsc28sIGFuZCBiZWFyIHRoeSBzaGFtZSwgaW4gdGhhdCB0aG91IGhhc3QganVzdGlmaWVkIHRoeSBzaXN0ZXJzLgpXaGVuIEkgc2hhbGwgYnJpbmcgYWdhaW4gdGhlaXIgY2FwdGl2aXR5LCB0aGUgY2FwdGl2aXR5IG9mIFNvZG9tIGFuZCBoZXIgZGF1Z2h0ZXJzLCBhbmQgdGhlIGNhcHRpdml0eSBvZiBTYW1hcmlhIGFuZCBoZXIgZGF1Z2h0ZXJzLCB0aGVuIHdpbGwgSSBicmluZyBhZ2FpbiB0aGUgY2FwdGl2aXR5IG9mIHRoeSBjYXB0aXZlcyBpbiB0aGUgbWlkc3Qgb2YgdGhlbToKVGhhdCB0aG91IG1heWVzdCBiZWFyIHRoaW5lIG93biBzaGFtZSwgYW5kIG1heWVzdCBiZSBjb25mb3VuZGVkIGluIGFsbCB0aGF0IHRob3UgaGFzdCBkb25lLCBpbiB0aGF0IHRob3UgYXJ0IGEgY29tZm9ydCB1bnRvIHRoZW0uCldoZW4gdGh5IHNpc3RlcnMsIFNvZG9tIGFuZCBoZXIgZGF1Z2h0ZXJzLCBzaGFsbCByZXR1cm4gdG8gdGhlaXIgZm9ybWVyIGVzdGF0ZSwgYW5kIFNhbWFyaWEgYW5kIGhlciBkYXVnaHRlcnMgc2hhbGwgcmV0dXJuIHRvIHRoZWlyIGZvcm1lciBlc3RhdGUsIHRoZW4gdGhvdSBhbmQgdGh5IGRhdWdodGVycyBzaGFsbCByZXR1cm4gdG8geW91ciBmb3JtZXIgZXN0YXRlLgpGb3IgdGh5IHNpc3RlciBTb2RvbSB3YXMgbm90IG1lbnRpb25lZCBieSB0aHkgbW91dGggaW4gdGhlIGRheSBvZiB0aHkgcHJpZGUsCkJlZm9yZSB0aHkgd2lja2VkbmVzcyB3YXMgZGlzY292ZXJlZCwgYXMgYXQgdGhlIHRpbWUgb2YgdGh5IHJlcHJvYWNoIG9mIHRoZSBkYXVnaHRlcnMgb2YgU3lyaWEsIGFuZCBhbGwgdGhhdCBhcmUgcm91bmQgYWJvdXQgaGVyLCB0aGUgZGF1Z2h0ZXJzIG9mIHRoZSBQaGlsaXN0aW5lcywgd2hpY2ggZGVzcGlzZSB0aGVlIHJvdW5kIGFib3V0LgpUaG91IGhhc3QgYm9ybmUgdGh5IGxld2RuZXNzIGFuZCB0aGluZSBhYm9taW5hdGlvbnMsIHNhaXRoIHRoZSBMT1JELgpGb3IgdGh1cyBzYWl0aCB0aGUgTG9yZCBHT0Q7IEkgd2lsbCBldmVuIGRlYWwgd2l0aCB0aGVlIGFzIHRob3UgaGFzdCBkb25lLCB3aGljaCBoYXN0IGRlc3Bpc2VkIHRoZSBvYXRoIGluIGJyZWFraW5nIHRoZSBjb3ZlbmFudC4KTmV2ZXJ0aGVsZXNzIEkgd2lsbCByZW1lbWJlciBteSBjb3ZlbmFudCB3aXRoIHRoZWUgaW4gdGhlIGRheXMgb2YgdGh5IHlvdXRoLCBhbmQgSSB3aWxsIGVzdGFibGlzaCB1bnRvIHRoZWUgYW4gZXZlcmxhc3RpbmcgY292ZW5hbnQuClRoZW4gdGhvdSBzaGFsdCByZW1lbWJlciB0aHkgd2F5cywgYW5kIGJlIGFzaGFtZWQsIHdoZW4gdGhvdSBzaGFsdCByZWNlaXZlIHRoeSBzaXN0ZXJzLCB0aGluZSBlbGRlciBhbmQgdGh5IHlvdW5nZXI6IGFuZCBJIHdpbGwgZ2l2ZSB0aGVtIHVudG8gdGhlZSBmb3IgZGF1Z2h0ZXJzLCBidXQgbm90IGJ5IHRoeSBjb3ZlbmFudC4KQW5kIEkgd2lsbCBlc3RhYmxpc2ggbXkgY292ZW5hbnQgd2l0aCB0aGVlOyBhbmQgdGhvdSBzaGFsdCBrbm93IHRoYXQgSSBhbSB0aGUgTE9SRDoKVGhhdCB0aG91IG1heWVzdCByZW1lbWJlciwgYW5kIGJlIGNvbmZvdW5kZWQsIGFuZCBuZXZlciBvcGVuIHRoeSBtb3V0aCBhbnkgbW9yZSBiZWNhdXNlIG9mIHRoeSBzaGFtZSwgd2hlbiBJIGFtIHBhY2lmaWVkIHRvd2FyZCB0aGVlIGZvciBhbGwgdGhhdCB0aG91IGhhc3QgZG9uZSwgc2FpdGggdGhlIExvcmQgR09ELgpBbmQgdGhlIHdvcmQgb2YgdGhlIExPUkQgY2FtZSB1bnRvIG1lLCBzYXlpbmcsClNvbiBvZiBtYW4sIHB1dCBmb3J0aCBhIHJpZGRsZSwgYW5kIHNwZWFrIGEgcGFyYWJsZSB1bnRvIHRoZSBob3VzZSBvZiBJc3JhZWw7CkFuZCBzYXksIFRodXMgc2FpdGggdGhlIExvcmQgR09EOyBBIGdyZWF0IGVhZ2xlIHdpdGggZ3JlYXQgd2luZ3MsIGxvbmd3aW5nZWQsIGZ1bGwgb2YgZmVhdGhlcnMsIHdoaWNoIGhhZCBkaXZlcnMgY29sb3VycywgY2FtZSB1bnRvIExlYmFub24sIGFuZCB0b29rIHRoZSBoaWdoZXN0IGJyYW5jaCBvZiB0aGUgY2VkYXI6CkhlIGNyb3BwZWQgb2ZmIHRoZSB0b3Agb2YgaGlzIHlvdW5nIHR3aWdzLCBhbmQgY2FycmllZCBpdCBpbnRvIGEgbGFuZCBvZiB0cmFmZmljazsgaGUgc2V0IGl0IGluIGEgY2l0eSBvZiBtZXJjaGFudHMuCkhlIHRvb2sgYWxzbyBvZiB0aGUgc2VlZCBvZiB0aGUgbGFuZCwgYW5kIHBsYW50ZWQgaXQgaW4gYSBmcnVpdGZ1bCBmaWVsZDsgaGUgcGxhY2VkIGl0IGJ5IGdyZWF0IHdhdGVycywgYW5kIHNldCBpdCBhcyBhIHdpbGxvdyB0cmVlLgpBbmQgaXQgZ3JldywgYW5kIGJlY2FtZSBhIHNwcmVhZGluZyB2aW5lIG9mIGxvdyBzdGF0dXJlLCB3aG9zZSBicmFuY2hlcyB0dXJuZWQgdG93YXJkIGhpbSwgYW5kIHRoZSByb290cyB0aGVyZW9mIHdlcmUgdW5kZXIgaGltOiBzbyBpdCBiZWNhbWUgYSB2aW5lLCBhbmQgYnJvdWdodCBmb3J0aCBicmFuY2hlcywgYW5kIHNob3QgZm9ydGggc3ByaWdzLgpUaGVyZSB3YXMgYWxzbyBhbm90aGVyIGdyZWF0IGVhZ2xlIHdpdGggZ3JlYXQgd2luZ3MgYW5kIG1hbnkgZmVhdGhlcnM6IGFuZCwgYmVob2xkLCB0aGlzIHZpbmUgZGlkIGJlbmQgaGVyIHJvb3RzIHRvd2FyZCBoaW0sIGFuZCBzaG90IGZvcnRoIGhlciBicmFuY2hlcyB0b3dhcmQgaGltLCB0aGF0IGhlIG1pZ2h0IHdhdGVyIGl0IGJ5IHRoZSBmdXJyb3dzIG9mIGhlciBwbGFudGF0aW9uLgpJdCB3YXMgcGxhbnRlZCBpbiBhIGdvb2Qgc29pbCBieSBncmVhdCB3YXRlcnMsIHRoYXQgaXQgbWlnaHQgYnJpbmcgZm9ydGggYnJhbmNoZXMsIGFuZCB0aGF0IGl0IG1pZ2h0IGJlYXIgZnJ1aXQsIHRoYXQgaXQgbWlnaHQgYmUgYSBnb29kbHkgdmluZS4KU2F5IHRob3UsIFRodXMgc2FpdGggdGhlIExvcmQgR09EOyBTaGFsbCBpdCBwcm9zcGVyPyBzaGFsbCBoZSBub3QgcHVsbCB1cCB0aGUgcm9vdHMgdGhlcmVvZiwgYW5kIGN1dCBvZmYgdGhlIGZydWl0IHRoZXJlb2YsIHRoYXQgaXQgd2l0aGVyPyBpdCBzaGFsbCB3aXRoZXIgaW4gYWxsIHRoZSBsZWF2ZXMgb2YgaGVyIHNwcmluZywgZXZlbiB3aXRob3V0IGdyZWF0IHBvd2VyIG9yIG1hbnkgcGVvcGxlIHRvIHBsdWNrIGl0IHVwIGJ5IHRoZSByb290cyB0aGVyZW9mLgpZZWEsIGJlaG9sZCwgYmVpbmcgcGxhbnRlZCwgc2hhbGwgaXQgcHJvc3Blcj8gc2hhbGwgaXQgbm90IHV0dGVybHkgd2l0aGVyLCB3aGVuIHRoZSBlYXN0IHdpbmQgdG91Y2hldGggaXQ/IGl0IHNoYWxsIHdpdGhlciBpbiB0aGUgZnVycm93cyB3aGVyZSBpdCBncmV3LgpNb3Jlb3ZlciB0aGUgd29yZCBvZiB0aGUgTE9SRCBjYW1lIHVudG8gbWUsIHNheWluZywKU2F5IG5vdyB0byB0aGUgcmViZWxsaW91cyBob3VzZSwgS25vdyB5ZSBub3Qgd2hhdCB0aGVzZSB0aGluZ3MgbWVhbj8gdGVsbCB0aGVtLCBCZWhvbGQsIHRoZSBraW5nIG9mIEJhYnlsb24gaXMgY29tZSB0byBKZXJ1c2FsZW0sIGFuZCBoYXRoIHRha2VuIHRoZSBraW5nIHRoZXJlb2YsIGFuZCB0aGUgcHJpbmNlcyB0aGVyZW9mLCBhbmQgbGVkIHRoZW0gd2l0aCBoaW0gdG8gQmFieWxvbjsKQW5kIGhhdGggdGFrZW4gb2YgdGhlIGtpbmcncyBzZWVkLCBhbmQgbWFkZSBhIGNvdmVuYW50IHdpdGggaGltLCBhbmQgaGF0aCB0YWtlbiBhbiBvYXRoIG9mIGhpbTogaGUgaGF0aCBhbHNvIHRha2VuIHRoZSBtaWdodHkgb2YgdGhlIGxhbmQ6ClRoYXQgdGhlIGtpbmdkb20gbWlnaHQgYmUgYmFzZSwgdGhhdCBpdCBtaWdodCBub3QgbGlmdCBpdHNlbGYgdXAsIGJ1dCB0aGF0IGJ5IGtlZXBpbmcgb2YgaGlzIGNvdmVuYW50IGl0IG1pZ2h0IHN0YW5kLgpCdXQgaGUgcmViZWxsZWQgYWdhaW5zdCBoaW0gaW4gc2VuZGluZyBoaXMgYW1iYXNzYWRvcnMgaW50byBFZ3lwdCwgdGhhdCB0aGV5IG1pZ2h0IGdpdmUgaGltIGhvcnNlcyBhbmQgbXVjaCBwZW9wbGUuIFNoYWxsIGhlIHByb3NwZXI/IHNoYWxsIGhlIGVzY2FwZSB0aGF0IGRvZXRoIHN1Y2ggdGhpbmdzPyBvciBzaGFsbCBoZSBicmVhayB0aGUgY292ZW5hbnQsIGFuZCBiZSBkZWxpdmVyZWQ/CkFzIEkgbGl2ZSwgc2FpdGggdGhlIExvcmQgR09ELCBzdXJlbHkgaW4gdGhlIHBsYWNlIHdoZXJlIHRoZSBraW5nIGR3ZWxsZXRoIHRoYXQgbWFkZSBoaW0ga2luZywgd2hvc2Ugb2F0aCBoZSBkZXNwaXNlZCwgYW5kIHdob3NlIGNvdmVuYW50IGhlIGJyYWtlLCBldmVuIHdpdGggaGltIGluIHRoZSBtaWRzdCBvZiBCYWJ5bG9uIGhlIHNoYWxsIGRpZS4KTmVpdGhlciBzaGFsbCBQaGFyYW9oIHdpdGggaGlzIG1pZ2h0eSBhcm15IGFuZCBncmVhdCBjb21wYW55IG1ha2UgZm9yIGhpbSBpbiB0aGUgd2FyLCBieSBjYXN0aW5nIHVwIG1vdW50cywgYW5kIGJ1aWxkaW5nIGZvcnRzLCB0byBjdXQgb2ZmIG1hbnkgcGVyc29uczoKU2VlaW5nIGhlIGRlc3Bpc2VkIHRoZSBvYXRoIGJ5IGJyZWFraW5nIHRoZSBjb3ZlbmFudCwgd2hlbiwgbG8sIGhlIGhhZCBnaXZlbiBoaXMgaGFuZCwgYW5kIGhhdGggZG9uZSBhbGwgdGhlc2UgdGhpbmdzLCBoZSBzaGFsbCBub3QgZXNjYXBlLgpUaGVyZWZvcmUgdGh1cyBzYWl0aCB0aGUgTG9yZCBHT0Q7IEFzIEkgbGl2ZSwgc3VyZWx5IG1pbmUgb2F0aCB0aGF0IGhlIGhhdGggZGVzcGlzZWQsIGFuZCBteSBjb3ZlbmFudCB0aGF0IGhlIGhhdGggYnJva2VuLCBldmVuIGl0IHdpbGwgSSByZWNvbXBlbnNlIHVwb24gaGlzIG93biBoZWFkLgpBbmQgSSB3aWxsIHNwcmVhZCBteSBuZXQgdXBvbiBoaW0sIGFuZCBoZSBzaGFsbCBiZSB0YWtlbiBpbiBteSBzbmFyZSwgYW5kIEkgd2lsbCBicmluZyBoaW0gdG8gQmFieWxvbiwgYW5kIHdpbGwgcGxlYWQgd2l0aCBoaW0gdGhlcmUgZm9yIGhpcyB0cmVzcGFzcyB0aGF0IGhlIGhhdGggdHJlc3Bhc3NlZCBhZ2FpbnN0IG1lLgpBbmQgYWxsIGhpcyBmdWdpdGl2ZXMgd2l0aCBhbGwgaGlzIGJhbmRzIHNoYWxsIGZhbGwgYnkgdGhlIHN3b3JkLCBhbmQgdGhleSB0aGF0IHJlbWFpbiBzaGFsbCBiZSBzY2F0dGVyZWQgdG93YXJkIGFsbCB3aW5kczogYW5kIHllIHNoYWxsIGtub3cgdGhhdCBJIHRoZSBMT1JEIGhhdmUgc3Bva2VuIGl0LgpUaHVzIHNhaXRoIHRoZSBMb3JkIEdPRDsgSSB3aWxsIGFsc28gdGFrZSBvZiB0aGUgaGlnaGVzdCBicmFuY2ggb2YgdGhlIGhpZ2ggY2VkYXIsIGFuZCB3aWxsIHNldCBpdDsgSSB3aWxsIGNyb3Agb2ZmIGZyb20gdGhlIHRvcCBvZiBoaXMgeW91bmcgdHdpZ3MgYSB0ZW5kZXIgb25lLCBhbmQgd2lsbCBwbGFudCBpdCB1cG9uIGFuIGhpZ2ggbW91bnRhaW4gYW5kIGVtaW5lbnQ6CkluIHRoZSBtb3VudGFpbiBvZiB0aGUgaGVpZ2h0IG9mIElzcmFlbCB3aWxsIEkgcGxhbnQgaXQ6IGFuZCBpdCBzaGFsbCBicmluZyBmb3J0aCBib3VnaHMsIGFuZCBiZWFyIGZydWl0LCBhbmQgYmUgYSBnb29kbHkgY2VkYXI6IGFuZCB1bmRlciBpdCBzaGFsbCBkd2VsbCBhbGwgZm93bCBvZiBldmVyeSB3aW5nOyBpbiB0aGUgc2hhZG93IG9mIHRoZSBicmFuY2hlcyB0aGVyZW9mIHNoYWxsIHRoZXkgZHdlbGwuCkFuZCBhbGwgdGhlIHRyZWVzIG9mIHRoZSBmaWVsZCBzaGFsbCBrbm93IHRoYXQgSSB0aGUgTE9SRCBoYXZlIGJyb3VnaHQgZG93biB0aGUgaGlnaCB0cmVlLCBoYXZlIGV4YWx0ZWQgdGhlIGxvdyB0cmVlLCBoYXZlIGRyaWVkIHVwIHRoZSBncmVlbiB0cmVlLCBhbmQgaGF2ZSBtYWRlIHRoZSBkcnkgdHJlZSB0byBmbG91cmlzaDogSSB0aGUgTE9SRCBoYXZlIHNwb2tlbiBhbmQgaGF2ZSBkb25lIGl0LgpUaGUgd29yZCBvZiB0aGUgTE9SRCBjYW1lIHVudG8gbWUgYWdhaW4sIHNheWluZywKV2hhdCBtZWFuIHllLCB0aGF0IHllIHVzZSB0aGlzIHByb3ZlcmIgY29uY2VybmluZyB0aGUgbGFuZCBvZiBJc3JhZWwsIHNheWluZywgVGhlIGZhdGhlcnMgaGF2ZSBlYXRlbiBzb3VyIGdyYXBlcywgYW5kIHRoZSBjaGlsZHJlbidzIHRlZXRoIGFyZSBzZXQgb24gZWRnZT8KQXMgSSBsaXZlLCBzYWl0aCB0aGUgTG9yZCBHT0QsIHllIHNoYWxsIG5vdCBoYXZlIG9jY2FzaW9uIGFueSBtb3JlIHRvIHVzZSB0aGlzIHByb3ZlcmIgaW4gSXNyYWVsLgpCZWhvbGQsIGFsbCBzb3VscyBhcmUgbWluZTsgYXMgdGhlIHNvdWwgb2YgdGhlIGZhdGhlciwgc28gYWxzbyB0aGUgc291bCBvZiB0aGUgc29uIGlzIG1pbmU6IHRoZSBzb3VsIHRoYXQgc2lubmV0aCwgaXQgc2hhbGwgZGllLgpCdXQgaWYgYSBtYW4gYmUganVzdCwgYW5kIGRvIHRoYXQgd2hpY2ggaXMgbGF3ZnVsIGFuZCByaWdodCwKQW5kIGhhdGggbm90IGVhdGVuIHVwb24gdGhlIG1vdW50YWlucywgbmVpdGhlciBoYXRoIGxpZnRlZCB1cCBoaXMgZXllcyB0byB0aGUgaWRvbHMgb2YgdGhlIGhvdXNlIG9mIElzcmFlbCwgbmVpdGhlciBoYXRoIGRlZmlsZWQgaGlzIG5laWdoYm91cidzIHdpZmUsIG5laXRoZXIgaGF0aCBjb21lIG5lYXIgdG8gYSBtZW5zdHJ1b3VzIHdvbWFuLApBbmQgaGF0aCBub3Qgb3BwcmVzc2VkIGFueSwgYnV0IGhhdGggcmVzdG9yZWQgdG8gdGhlIGRlYnRvciBoaXMgcGxlZGdlLCBoYXRoIHNwb2lsZWQgbm9uZSBieSB2aW9sZW5jZSwgaGF0aCBnaXZlbiBoaXMgYnJlYWQgdG8gdGhlIGh1bmdyeSwgYW5kIGhhdGggY292ZXJlZCB0aGUgbmFrZWQgd2l0aCBhIGdhcm1lbnQ7CkhlIHRoYXQgaGF0aCBub3QgZ2l2ZW4gZm9ydGggdXBvbiB1c3VyeSwgbmVpdGhlciBoYXRoIHRha2VuIGFueSBpbmNyZWFzZSwgdGhhdCBoYXRoIHdpdGhkcmF3biBoaXMgaGFuZCBmcm9tIGluaXF1aXR5LCBoYXRoIGV4ZWN1dGVkIHRydWUganVkZ21lbnQgYmV0d2VlbiBtYW4gYW5kIG1hbiwKSGF0aCB3YWxrZWQgaW4gbXkgc3RhdHV0ZXMsIGFuZCBoYXRoIGtlcHQgbXkganVkZ21lbnRzLCB0byBkZWFsIHRydWx5OyBoZSBpcyBqdXN0LCBoZSBzaGFsbCBzdXJlbHkgbGl2ZSwgc2FpdGggdGhlIExvcmQgR09ELgpJZiBoZSBiZWdldCBhIHNvbiB0aGF0IGlzIGEgcm9iYmVyLCBhIHNoZWRkZXIgb2YgYmxvb2QsIGFuZCB0aGF0IGRvZXRoIHRoZSBsaWtlIHRvIGFueSBvbmUgb2YgdGhlc2UgdGhpbmdzLApBbmQgdGhhdCBkb2V0aCBub3QgYW55IG9mIHRob3NlIGR1dGllcywgYnV0IGV2ZW4gaGF0aCBlYXRlbiB1cG9uIHRoZSBtb3VudGFpbnMsIGFuZCBkZWZpbGVkIGhpcyBuZWlnaGJvdXIncyB3aWZlLApIYXRoIG9wcHJlc3NlZCB0aGUgcG9vciBhbmQgbmVlZHksIGhhdGggc3BvaWxlZCBieSB2aW9sZW5jZSwgaGF0aCBub3QgcmVzdG9yZWQgdGhlIHBsZWRnZSwgYW5kIGhhdGggbGlmdGVkIHVwIGhpcyBleWVzIHRvIHRoZSBpZG9scywgaGF0aCBjb21taXR0ZWQgYWJvbWluYXRpb24sCkhhdGggZ2l2ZW4gZm9ydGggdXBvbiB1c3VyeSwgYW5kIGhhdGggdGFrZW4gaW5jcmVhc2U6IHNoYWxsIGhlIHRoZW4gbGl2ZT8gaGUgc2hhbGwgbm90IGxpdmU6IGhlIGhhdGggZG9uZSBhbGwgdGhlc2UgYWJvbWluYXRpb25zOyBoZSBzaGFsbCBzdXJlbHkgZGllOyBoaXMgYmxvb2Qgc2hhbGwgYmUgdXBvbiBoaW0uCk5vdywgbG8sIGlmIGhlIGJlZ2V0IGEgc29uLCB0aGF0IHNlZXRoIGFsbCBoaXMgZmF0aGVyJ3Mgc2lucyB3aGljaCBoZSBoYXRoIGRvbmUsIGFuZCBjb25zaWRlcmV0aCwgYW5kIGRvZXRoIG5vdCBzdWNoIGxpa2UsClRoYXQgaGF0aCBub3QgZWF0ZW4gdXBvbiB0aGUgbW91bnRhaW5zLCBuZWl0aGVyIGhhdGggbGlmdGVkIHVwIGhpcyBleWVzIHRvIHRoZSBpZG9scyBvZiB0aGUgaG91c2Ugb2YgSXNyYWVsLCBoYXRoIG5vdCBkZWZpbGVkIGhpcyBuZWlnaGJvdXIncyB3aWZlLApOZWl0aGVyIGhhdGggb3BwcmVzc2VkIGFueSwgaGF0aCBub3Qgd2l0aGhvbGRlbiB0aGUgcGxlZGdlLCBuZWl0aGVyIGhhdGggc3BvaWxlZCBieSB2aW9sZW5jZSwgYnV0IGhhdGggZ2l2ZW4gaGlzIGJyZWFkIHRvIHRoZSBodW5ncnksIGFuZCBoYXRoIGNvdmVyZWQgdGhlIG5ha2VkIHdpdGggYSBnYXJtZW50LApUaGF0IGhhdGggdGFrZW4gb2ZmIGhpcyBoYW5kIGZyb20gdGhlIHBvb3IsIHRoYXQgaGF0aCBub3QgcmVjZWl2ZWQgdXN1cnkgbm9yIGluY3JlYXNlLCBoYXRoIGV4ZWN1dGVkIG15IGp1ZGdtZW50cywgaGF0aCB3YWxrZWQgaW4gbXkgc3RhdHV0ZXM7IGhlIHNoYWxsIG5vdCBkaWUgZm9yIHRoZSBpbmlxdWl0eSBvZiBoaXMgZmF0aGVyLCBoZSBzaGFsbCBzdXJlbHkgbGl2ZS4KQXMgZm9yIGhpcyBmYXRoZXIsIGJlY2F1c2UgaGUgY3J1ZWxseSBvcHByZXNzZWQsIHNwb2lsZWQgaGlzIGJyb3RoZXIgYnkgdmlvbGVuY2UsIGFuZCBkaWQgdGhhdCB3aGljaCBpcyBub3QgZ29vZCBhbW9uZyBoaXMgcGVvcGxlLCBsbywgZXZlbiBoZSBzaGFsbCBkaWUgaW4gaGlzIGluaXF1aXR5LgpZZXQgc2F5IHllLCBXaHk/IGRvdGggbm90IHRoZSBzb24gYmVhciB0aGUgaW5pcXVpdHkgb2YgdGhlIGZhdGhlcj8gV2hlbiB0aGUgc29uIGhhdGggZG9uZSB0aGF0IHdoaWNoIGlzIGxhd2Z1bCBhbmQgcmlnaHQsIGFuZCBoYXRoIGtlcHQgYWxsIG15IHN0YXR1dGVzLCBhbmQgaGF0aCBkb25lIHRoZW0sIGhlIHNoYWxsIHN1cmVseSBsaXZlLgpUaGUgc291bCB0aGF0IHNpbm5ldGgsIGl0IHNoYWxsIGRpZS4gVGhlIHNvbiBzaGFsbCBub3QgYmVhciB0aGUgaW5pcXVpdHkgb2YgdGhlIGZhdGhlciwgbmVpdGhlciBzaGFsbCB0aGUgZmF0aGVyIGJlYXIgdGhlIGluaXF1aXR5IG9mIHRoZSBzb246IHRoZSByaWdodGVvdXNuZXNzIG9mIHRoZSByaWdodGVvdXMgc2hhbGwgYmUgdXBvbiBoaW0sIGFuZCB0aGUgd2lja2VkbmVzcyBvZiB0aGUgd2lja2VkIHNoYWxsIGJlIHVwb24gaGltLgpCdXQgaWYgdGhlIHdpY2tlZCB3aWxsIHR1cm4gZnJvbSBhbGwgaGlzIHNpbnMgdGhhdCBoZSBoYXRoIGNvbW1pdHRlZCwgYW5kIGtlZXAgYWxsIG15IHN0YXR1dGVzLCBhbmQgZG8gdGhhdCB3aGljaCBpcyBsYXdmdWwgYW5kIHJpZ2h0LCBoZSBzaGFsbCBzdXJlbHkgbGl2ZSwgaGUgc2hhbGwgbm90IGRpZS4KQWxsIGhpcyB0cmFuc2dyZXNzaW9ucyB0aGF0IGhlIGhhdGggY29tbWl0dGVkLCB0aGV5IHNoYWxsIG5vdCBiZSBtZW50aW9uZWQgdW50byBoaW06IGluIGhpcyByaWdodGVvdXNuZXNzIHRoYXQgaGUgaGF0aCBkb25lIGhlIHNoYWxsIGxpdmUuCkhhdmUgSSBhbnkgcGxlYXN1cmUgYXQgYWxsIHRoYXQgdGhlIHdpY2tlZCBzaG91bGQgZGllPyBzYWl0aCB0aGUgTG9yZCBHT0Q6IGFuZCBub3QgdGhhdCBoZSBzaG91bGQgcmV0dXJuIGZyb20gaGlzIHdheXMsIGFuZCBsaXZlPwpCdXQgd2hlbiB0aGUgcmlnaHRlb3VzIHR1cm5ldGggYXdheSBmcm9tIGhpcyByaWdodGVvdXNuZXNzLCBhbmQgY29tbWl0dGV0aCBpbmlxdWl0eSwgYW5kIGRvZXRoIGFjY29yZGluZyB0byBhbGwgdGhlIGFib21pbmF0aW9ucyB0aGF0IHRoZSB3aWNrZWQgbWFuIGRvZXRoLCBzaGFsbCBoZSBsaXZlPyBBbGwgaGlzIHJpZ2h0ZW91c25lc3MgdGhhdCBoZSBoYXRoIGRvbmUgc2hhbGwgbm90IGJlIG1lbnRpb25lZDogaW4gaGlzIHRyZXNwYXNzIHRoYXQgaGUgaGF0aCB0cmVzcGFzc2VkLCBhbmQgaW4gaGlzIHNpbiB0aGF0IGhlIGhhdGggc2lubmVkLCBpbiB0aGVtIHNoYWxsIGhlIGRpZS4KWWV0IHllIHNheSwgVGhlIHdheSBvZiB0aGUgTE9SRCBpcyBub3QgZXF1YWwuIEhlYXIgbm93LCBPIGhvdXNlIG9mIElzcmFlbDsgSXMgbm90IG15IHdheSBlcXVhbD8gYXJlIG5vdCB5b3VyIHdheXMgdW5lcXVhbD8KV2hlbiBhIHJpZ2h0ZW91cyBtYW4gdHVybmV0aCBhd2F5IGZyb20gaGlzIHJpZ2h0ZW91c25lc3MsIGFuZCBjb21taXR0ZXRoIGluaXF1aXR5LCBhbmQgZGlldGggaW4gdGhlbTsgZm9yIGhpcyBpbmlxdWl0eSB0aGF0IGhlIGhhdGggZG9uZSBzaGFsbCBoZSBkaWUuCkFnYWluLCB3aGVuIHRoZSB3aWNrZWQgbWFuIHR1cm5ldGggYXdheSBmcm9tIGhpcyB3aWNrZWRuZXNzIHRoYXQgaGUgaGF0aCBjb21taXR0ZWQsIGFuZCBkb2V0aCB0aGF0IHdoaWNoIGlzIGxhd2Z1bCBhbmQgcmlnaHQsIGhlIHNoYWxsIHNhdmUgaGlzIHNvdWwgYWxpdmUuCkJlY2F1c2UgaGUgY29uc2lkZXJldGgsIGFuZCB0dXJuZXRoIGF3YXkgZnJvbSBhbGwgaGlzIHRyYW5zZ3Jlc3Npb25zIHRoYXQgaGUgaGF0aCBjb21taXR0ZWQsIGhlIHNoYWxsIHN1cmVseSBsaXZlLCBoZSBzaGFsbCBub3QgZGllLgpZZXQgc2FpdGggdGhlIGhvdXNlIG9mIElzcmFlbCwgVGhlIHdheSBvZiB0aGUgTE9SRCBpcyBub3QgZXF1YWwuIE8gaG91c2Ugb2YgSXNyYWVsLCBhcmUgbm90IG15IHdheXMgZXF1YWw/IGFyZSBub3QgeW91ciB3YXlzIHVuZXF1YWw/ClRoZXJlZm9yZSBJIHdpbGwganVkZ2UgeW91LCBPIGhvdXNlIG9mIElzcmFlbCwgZXZlcnkgb25lIGFjY29yZGluZyB0byBoaXMgd2F5cywgc2FpdGggdGhlIExvcmQgR09ELiBSZXBlbnQsIGFuZCB0dXJuIHlvdXJzZWx2ZXMgZnJvbSBhbGwgeW91ciB0cmFuc2dyZXNzaW9uczsgc28gaW5pcXVpdHkgc2hhbGwgbm90IGJlIHlvdXIgcnVpbi4KQ2FzdCBhd2F5IGZyb20geW91IGFsbCB5b3VyIHRyYW5zZ3Jlc3Npb25zLCB3aGVyZWJ5IHllIGhhdmUgdHJhbnNncmVzc2VkOyBhbmQgbWFrZSB5b3UgYSBuZXcgaGVhcnQgYW5kIGEgbmV3IHNwaXJpdDogZm9yIHdoeSB3aWxsIHllIGRpZSwgTyBob3VzZSBvZiBJc3JhZWw/CkZvciBJIGhhdmUgbm8gcGxlYXN1cmUgaW4gdGhlIGRlYXRoIG9mIGhpbSB0aGF0IGRpZXRoLCBzYWl0aCB0aGUgTG9yZCBHT0Q6IHdoZXJlZm9yZSB0dXJuIHlvdXJzZWx2ZXMsIGFuZCBsaXZlIHllLgpNb3Jlb3ZlciB0YWtlIHRob3UgdXAgYSBsYW1lbnRhdGlvbiBmb3IgdGhlIHByaW5jZXMgb2YgSXNyYWVsLApBbmQgc2F5LCBXaGF0IGlzIHRoeSBtb3RoZXI/IEEgbGlvbmVzczogc2hlIGxheSBkb3duIGFtb25nIGxpb25zLCBzaGUgbm91cmlzaGVkIGhlciB3aGVscHMgYW1vbmcgeW91bmcgbGlvbnMuCkFuZCBzaGUgYnJvdWdodCB1cCBvbmUgb2YgaGVyIHdoZWxwczogaXQgYmVjYW1lIGEgeW91bmcgbGlvbiwgYW5kIGl0IGxlYXJuZWQgdG8gY2F0Y2ggdGhlIHByZXk7IGl0IGRldm91cmVkIG1lbi4KVGhlIG5hdGlvbnMgYWxzbyBoZWFyZCBvZiBoaW07IGhlIHdhcyB0YWtlbiBpbiB0aGVpciBwaXQsIGFuZCB0aGV5IGJyb3VnaHQgaGltIHdpdGggY2hhaW5zIHVudG8gdGhlIGxhbmQgb2YgRWd5cHQuCk5vdyB3aGVuIHNoZSBzYXcgdGhhdCBzaGUgaGFkIHdhaXRlZCwgYW5kIGhlciBob3BlIHdhcyBsb3N0LCB0aGVuIHNoZSB0b29rIGFub3RoZXIgb2YgaGVyIHdoZWxwcywgYW5kIG1hZGUgaGltIGEgeW91bmcgbGlvbi4KQW5kIGhlIHdlbnQgdXAgYW5kIGRvd24gYW1vbmcgdGhlIGxpb25zLCBoZSBiZWNhbWUgYSB5b3VuZyBsaW9uLCBhbmQgbGVhcm5lZCB0byBjYXRjaCB0aGUgcHJleSwgYW5kIGRldm91cmVkIG1lbi4KQW5kIGhlIGtuZXcgdGhlaXIgZGVzb2xhdGUgcGFsYWNlcywgYW5kIGhlIGxhaWQgd2FzdGUgdGhlaXIgY2l0aWVzOyBhbmQgdGhlIGxhbmQgd2FzIGRlc29sYXRlLCBhbmQgdGhlIGZ1bG5lc3MgdGhlcmVvZiwgYnkgdGhlIG5vaXNlIG9mIGhpcyByb2FyaW5nLgpUaGVuIHRoZSBuYXRpb25zIHNldCBhZ2FpbnN0IGhpbSBvbiBldmVyeSBzaWRlIGZyb20gdGhlIHByb3ZpbmNlcywgYW5kIHNwcmVhZCB0aGVpciBuZXQgb3ZlciBoaW06IGhlIHdhcyB0YWtlbiBpbiB0aGVpciBwaXQuCkFuZCB0aGV5IHB1dCBoaW0gaW4gd2FyZCBpbiBjaGFpbnMsIGFuZCBicm91Z2h0IGhpbSB0byB0aGUga2luZyBvZiBCYWJ5bG9uOiB0aGV5IGJyb3VnaHQgaGltIGludG8gaG9sZHMsIHRoYXQgaGlzIHZvaWNlIHNob3VsZCBubyBtb3JlIGJlIGhlYXJkIHVwb24gdGhlIG1vdW50YWlucyBvZiBJc3JhZWwuClRoeSBtb3RoZXIgaXMgbGlrZSBhIHZpbmUgaW4gdGh5IGJsb29kLCBwbGFudGVkIGJ5IHRoZSB3YXRlcnM6IHNoZSB3YXMgZnJ1aXRmdWwgYW5kIGZ1bGwgb2YgYnJhbmNoZXMgYnkgcmVhc29uIG9mIG1hbnkgd2F0ZXJzLgpBbmQgc2hlIGhhZCBzdHJvbmcgcm9kcyBmb3IgdGhlIHNjZXB0cmVzIG9mIHRoZW0gdGhhdCBiYXJlIHJ1bGUsIGFuZCBoZXIgc3RhdHVyZSB3YXMgZXhhbHRlZCBhbW9uZyB0aGUgdGhpY2sgYnJhbmNoZXMsIGFuZCBzaGUgYXBwZWFyZWQgaW4gaGVyIGhlaWdodCB3aXRoIHRoZSBtdWx0aXR1ZGUgb2YgaGVyIGJyYW5jaGVzLgpCdXQgc2hlIHdhcyBwbHVja2VkIHVwIGluIGZ1cnksIHNoZSB3YXMgY2FzdCBkb3duIHRvIHRoZSBncm91bmQsIGFuZCB0aGUgZWFzdCB3aW5kIGRyaWVkIHVwIGhlciBmcnVpdDogaGVyIHN0cm9uZyByb2RzIHdlcmUgYnJva2VuIGFuZCB3aXRoZXJlZDsgdGhlIGZpcmUgY29uc3VtZWQgdGhlbS4KQW5kIG5vdyBzaGUgaXMgcGxhbnRlZCBpbiB0aGUgd2lsZGVybmVzcywgaW4gYSBkcnkgYW5kIHRoaXJzdHkgZ3JvdW5kLgpBbmQgZmlyZSBpcyBnb25lIG91dCBvZiBhIHJvZCBvZiBoZXIgYnJhbmNoZXMsIHdoaWNoIGhhdGggZGV2b3VyZWQgaGVyIGZydWl0LCBzbyB0aGF0IHNoZSBoYXRoIG5vIHN0cm9uZyByb2QgdG8gYmUgYSBzY2VwdHJlIHRvIHJ1bGUuIFRoaXMgaXMgYSBsYW1lbnRhdGlvbiwgYW5kIHNoYWxsIGJlIGZvciBhIGxhbWVudGF0aW9uLgpBbmQgaXQgY2FtZSB0byBwYXNzIGluIHRoZSBzZXZlbnRoIHllYXIsIGluIHRoZSBmaWZ0aCBtb250aCwgdGhlIHRlbnRoIGRheSBvZiB0aGUgbW9udGgsIHRoYXQgY2VydGFpbiBvZiB0aGUgZWxkZXJzIG9mIElzcmFlbCBjYW1lIHRvIGVucXVpcmUgb2YgdGhlIExPUkQsIGFuZCBzYXQgYmVmb3JlIG1lLgpUaGVuIGNhbWUgdGhlIHdvcmQgb2YgdGhlIExPUkQgdW50byBtZSwgc2F5aW5nLApTb24gb2YgbWFuLCBzcGVhayB1bnRvIHRoZSBlbGRlcnMgb2YgSXNyYWVsLCBhbmQgc2F5IHVudG8gdGhlbSwgVGh1cyBzYWl0aCB0aGUgTG9yZCBHT0Q7IEFyZSB5ZSBjb21lIHRvIGVucXVpcmUgb2YgbWU/IEFzIEkgbGl2ZSwgc2FpdGggdGhlIExvcmQgR09ELCBJIHdpbGwgbm90IGJlIGVucXVpcmVkIG9mIGJ5IHlvdS4KV2lsdCB0aG91IGp1ZGdlIHRoZW0sIHNvbiBvZiBtYW4sIHdpbHQgdGhvdSBqdWRnZSB0aGVtPyBjYXVzZSB0aGVtIHRvIGtub3cgdGhlIGFib21pbmF0aW9ucyBvZiB0aGVpciBmYXRoZXJzOgpBbmQgc2F5IHVudG8gdGhlbSwgVGh1cyBzYWl0aCB0aGUgTG9yZCBHT0Q7IEluIHRoZSBkYXkgd2hlbiBJIGNob3NlIElzcmFlbCwgYW5kIGxpZnRlZCB1cCBtaW5lIGhhbmQgdW50byB0aGUgc2VlZCBvZiB0aGUgaG91c2Ugb2YgSmFjb2IsIGFuZCBtYWRlIG15c2VsZiBrbm93biB1bnRvIHRoZW0gaW4gdGhlIGxhbmQgb2YgRWd5cHQsIHdoZW4gSSBsaWZ0ZWQgdXAgbWluZSBoYW5kIHVudG8gdGhlbSwgc2F5aW5nLCBJIGFtIHRoZSBMT1JEIHlvdXIgR29kOwpJbiB0aGUgZGF5IHRoYXQgSSBsaWZ0ZWQgdXAgbWluZSBoYW5kIHVudG8gdGhlbSwgdG8gYnJpbmcgdGhlbSBmb3J0aCBvZiB0aGUgbGFuZCBvZiBFZ3lwdCBpbnRvIGEgbGFuZCB0aGF0IEkgaGFkIGVzcGllZCBmb3IgdGhlbSwgZmxvd2luZyB3aXRoIG1pbGsgYW5kIGhvbmV5LCB3aGljaCBpcyB0aGUgZ2xvcnkgb2YgYWxsIGxhbmRzOgpUaGVuIHNhaWQgSSB1bnRvIHRoZW0sIENhc3QgeWUgYXdheSBldmVyeSBtYW4gdGhlIGFib21pbmF0aW9ucyBvZiBoaXMgZXllcywgYW5kIGRlZmlsZSBub3QgeW91cnNlbHZlcyB3aXRoIHRoZSBpZG9scyBvZiBFZ3lwdDogSSBhbSB0aGUgTE9SRCB5b3VyIEdvZC4KQnV0IHRoZXkgcmViZWxsZWQgYWdhaW5zdCBtZSwgYW5kIHdvdWxkIG5vdCBoZWFya2VuIHVudG8gbWU6IHRoZXkgZGlkIG5vdCBldmVyeSBtYW4gY2FzdCBhd2F5IHRoZSBhYm9taW5hdGlvbnMgb2YgdGhlaXIgZXllcywgbmVpdGhlciBkaWQgdGhleSBmb3JzYWtlIHRoZSBpZG9scyBvZiBFZ3lwdDogdGhlbiBJIHNhaWQsIEkgd2lsbCBwb3VyIG91dCBteSBmdXJ5IHVwb24gdGhlbSwgdG8gYWNjb21wbGlzaCBteSBhbmdlciBhZ2FpbnN0IHRoZW0gaW4gdGhlIG1pZHN0IG9mIHRoZSBsYW5kIG9mIEVneXB0LgpCdXQgSSB3cm91Z2h0IGZvciBteSBuYW1lJ3Mgc2FrZSwgdGhhdCBpdCBzaG91bGQgbm90IGJlIHBvbGx1dGVkIGJlZm9yZSB0aGUgaGVhdGhlbiwgYW1vbmcgd2hvbSB0aGV5IHdlcmUsIGluIHdob3NlIHNpZ2h0IEkgbWFkZSBteXNlbGYga25vd24gdW50byB0aGVtLCBpbiBicmluZ2luZyB0aGVtIGZvcnRoIG91dCBvZiB0aGUgbGFuZCBvZiBFZ3lwdC4KV2hlcmVmb3JlIEkgY2F1c2VkIHRoZW0gdG8gZ28gZm9ydGggb3V0IG9mIHRoZSBsYW5kIG9mIEVneXB0LCBhbmQgYnJvdWdodCB0aGVtIGludG8gdGhlIHdpbGRlcm5lc3MuCkFuZCBJIGdhdmUgdGhlbSBteSBzdGF0dXRlcywgYW5kIHNoZXdlZCB0aGVtIG15IGp1ZGdtZW50cywgd2hpY2ggaWYgYSBtYW4gZG8sIGhlIHNoYWxsIGV2ZW4gbGl2ZSBpbiB0aGVtLgpNb3Jlb3ZlciBhbHNvIEkgZ2F2ZSB0aGVtIG15IHNhYmJhdGhzLCB0byBiZSBhIHNpZ24gYmV0d2VlbiBtZSBhbmQgdGhlbSwgdGhhdCB0aGV5IG1pZ2h0IGtub3cgdGhhdCBJIGFtIHRoZSBMT1JEIHRoYXQgc2FuY3RpZnkgdGhlbS4KQnV0IHRoZSBob3VzZSBvZiBJc3JhZWwgcmViZWxsZWQgYWdhaW5zdCBtZSBpbiB0aGUgd2lsZGVybmVzczogdGhleSB3YWxrZWQgbm90IGluIG15IHN0YXR1dGVzLCBhbmQgdGhleSBkZXNwaXNlZCBteSBqdWRnbWVudHMsIHdoaWNoIGlmIGEgbWFuIGRvLCBoZSBzaGFsbCBldmVuIGxpdmUgaW4gdGhlbTsgYW5kIG15IHNhYmJhdGhzIHRoZXkgZ3JlYXRseSBwb2xsdXRlZDogdGhlbiBJIHNhaWQsIEkgd291bGQgcG91ciBvdXQgbXkgZnVyeSB1cG9uIHRoZW0gaW4gdGhlIHdpbGRlcm5lc3MsIHRvIGNvbnN1bWUgdGhlbS4KQnV0IEkgd3JvdWdodCBmb3IgbXkgbmFtZSdzIHNha2UsIHRoYXQgaXQgc2hvdWxkIG5vdCBiZSBwb2xsdXRlZCBiZWZvcmUgdGhlIGhlYXRoZW4sIGluIHdob3NlIHNpZ2h0IEkgYnJvdWdodCB0aGVtIG91dC4KWWV0IGFsc28gSSBsaWZ0ZWQgdXAgbXkgaGFuZCB1bnRvIHRoZW0gaW4gdGhlIHdpbGRlcm5lc3MsIHRoYXQgSSB3b3VsZCBub3QgYnJpbmcgdGhlbSBpbnRvIHRoZSBsYW5kIHdoaWNoIEkgaGFkIGdpdmVuIHRoZW0sIGZsb3dpbmcgd2l0aCBtaWxrIGFuZCBob25leSwgd2hpY2ggaXMgdGhlIGdsb3J5IG9mIGFsbCBsYW5kczsKQmVjYXVzZSB0aGV5IGRlc3Bpc2VkIG15IGp1ZGdtZW50cywgYW5kIHdhbGtlZCBub3QgaW4gbXkgc3RhdHV0ZXMsIGJ1dCBwb2xsdXRlZCBteSBzYWJiYXRoczogZm9yIHRoZWlyIGhlYXJ0IHdlbnQgYWZ0ZXIgdGhlaXIgaWRvbHMuCk5ldmVydGhlbGVzcyBtaW5lIGV5ZSBzcGFyZWQgdGhlbSBmcm9tIGRlc3Ryb3lpbmcgdGhlbSwgbmVpdGhlciBkaWQgSSBtYWtlIGFuIGVuZCBvZiB0aGVtIGluIHRoZSB3aWxkZXJuZXNzLgpCdXQgSSBzYWlkIHVudG8gdGhlaXIgY2hpbGRyZW4gaW4gdGhlIHdpbGRlcm5lc3MsIFdhbGsgeWUgbm90IGluIHRoZSBzdGF0dXRlcyBvZiB5b3VyIGZhdGhlcnMsIG5laXRoZXIgb2JzZXJ2ZSB0aGVpciBqdWRnbWVudHMsIG5vciBkZWZpbGUgeW91cnNlbHZlcyB3aXRoIHRoZWlyIGlkb2xzOgpJIGFtIHRoZSBMT1JEIHlvdXIgR29kOyB3YWxrIGluIG15IHN0YXR1dGVzLCBhbmQga2VlcCBteSBqdWRnbWVudHMsIGFuZCBkbyB0aGVtOwpBbmQgaGFsbG93IG15IHNhYmJhdGhzOyBhbmQgdGhleSBzaGFsbCBiZSBhIHNpZ24gYmV0d2VlbiBtZSBhbmQgeW91LCB0aGF0IHllIG1heSBrbm93IHRoYXQgSSBhbSB0aGUgTE9SRCB5b3VyIEdvZC4KTm90d2l0aHN0YW5kaW5nIHRoZSBjaGlsZHJlbiByZWJlbGxlZCBhZ2FpbnN0IG1lOiB0aGV5IHdhbGtlZCBub3QgaW4gbXkgc3RhdHV0ZXMsIG5laXRoZXIga2VwdCBteSBqdWRnbWVudHMgdG8gZG8gdGhlbSwgd2hpY2ggaWYgYSBtYW4gZG8sIGhlIHNoYWxsIGV2ZW4gbGl2ZSBpbiB0aGVtOyB0aGV5IHBvbGx1dGVkIG15IHNhYmJhdGhzOiB0aGVuIEkgc2FpZCwgSSB3b3VsZCBwb3VyIG91dCBteSBmdXJ5IHVwb24gdGhlbSwgdG8gYWNjb21wbGlzaCBteSBhbmdlciBhZ2FpbnN0IHRoZW0gaW4gdGhlIHdpbGRlcm5lc3MuCk5ldmVydGhlbGVzcyBJIHdpdGhkcmV3IG1pbmUgaGFuZCwgYW5kIHdyb3VnaHQgZm9yIG15IG5hbWUncyBzYWtlLCB0aGF0IGl0IHNob3VsZCBub3QgYmUgcG9sbHV0ZWQgaW4gdGhlIHNpZ2h0IG9mIHRoZSBoZWF0aGVuLCBpbiB3aG9zZSBzaWdodCBJIGJyb3VnaHQgdGhlbSBmb3J0aC4KSSBsaWZ0ZWQgdXAgbWluZSBoYW5kIHVudG8gdGhlbSBhbHNvIGluIHRoZSB3aWxkZXJuZXNzLCB0aGF0IEkgd291bGQgc2NhdHRlciB0aGVtIGFtb25nIHRoZSBoZWF0aGVuLCBhbmQgZGlzcGVyc2UgdGhlbSB0aHJvdWdoIHRoZSBjb3VudHJpZXM7CkJlY2F1c2UgdGhleSBoYWQgbm90IGV4ZWN1dGVkIG15IGp1ZGdtZW50cywgYnV0IGhhZCBkZXNwaXNlZCBteSBzdGF0dXRlcywgYW5kIGhhZCBwb2xsdXRlZCBteSBzYWJiYXRocywgYW5kIHRoZWlyIGV5ZXMgd2VyZSBhZnRlciB0aGVpciBmYXRoZXJzJyBpZG9scy4KV2hlcmVmb3JlIEkgZ2F2ZSB0aGVtIGFsc28gc3RhdHV0ZXMgdGhhdCB3ZXJlIG5vdCBnb29kLCBhbmQganVkZ21lbnRzIHdoZXJlYnkgdGhleSBzaG91bGQgbm90IGxpdmU7CkFuZCBJIHBvbGx1dGVkIHRoZW0gaW4gdGhlaXIgb3duIGdpZnRzLCBpbiB0aGF0IHRoZXkgY2F1c2VkIHRvIHBhc3MgdGhyb3VnaCB0aGUgZmlyZSBhbGwgdGhhdCBvcGVuZXRoIHRoZSB3b21iLCB0aGF0IEkgbWlnaHQgbWFrZSB0aGVtIGRlc29sYXRlLCB0byB0aGUgZW5kIHRoYXQgdGhleSBtaWdodCBrbm93IHRoYXQgSSBhbSB0aGUgTE9SRC4KVGhlcmVmb3JlLCBzb24gb2YgbWFuLCBzcGVhayB1bnRvIHRoZSBob3VzZSBvZiBJc3JhZWwsIGFuZCBzYXkgdW50byB0aGVtLCBUaHVzIHNhaXRoIHRoZSBMb3JkIEdPRDsgWWV0IGluIHRoaXMgeW91ciBmYXRoZXJzIGhhdmUgYmxhc3BoZW1lZCBtZSwgaW4gdGhhdCB0aGV5IGhhdmUgY29tbWl0dGVkIGEgdHJlc3Bhc3MgYWdhaW5zdCBtZS4KRm9yIHdoZW4gSSBoYWQgYnJvdWdodCB0aGVtIGludG8gdGhlIGxhbmQsIGZvciB0aGUgd2hpY2ggSSBsaWZ0ZWQgdXAgbWluZSBoYW5kIHRvIGdpdmUgaXQgdG8gdGhlbSwgdGhlbiB0aGV5IHNhdyBldmVyeSBoaWdoIGhpbGwsIGFuZCBhbGwgdGhlIHRoaWNrIHRyZWVzLCBhbmQgdGhleSBvZmZlcmVkIHRoZXJlIHRoZWlyIHNhY3JpZmljZXMsIGFuZCB0aGVyZSB0aGV5IHByZXNlbnRlZCB0aGUgcHJvdm9jYXRpb24gb2YgdGhlaXIgb2ZmZXJpbmc6IHRoZXJlIGFsc28gdGhleSBtYWRlIHRoZWlyIHN3ZWV0IHNhdm91ciwgYW5kIHBvdXJlZCBvdXQgdGhlcmUgdGhlaXIgZHJpbmsgb2ZmZXJpbmdzLgpUaGVuIEkgc2FpZCB1bnRvIHRoZW0sIFdoYXQgaXMgdGhlIGhpZ2ggcGxhY2Ugd2hlcmV1bnRvIHllIGdvPyBBbmQgdGhlIG5hbWUgd2hlcmVvZiBpcyBjYWxsZWQgQmFtYWggdW50byB0aGlzIGRheS4KV2hlcmVmb3JlIHNheSB1bnRvIHRoZSBob3VzZSBvZiBJc3JhZWwsIFRodXMgc2FpdGggdGhlIExvcmQgR09EOyBBcmUgeWUgcG9sbHV0ZWQgYWZ0ZXIgdGhlIG1hbm5lciBvZiB5b3VyIGZhdGhlcnM/IGFuZCBjb21taXQgeWUgd2hvcmVkb20gYWZ0ZXIgdGhlaXIgYWJvbWluYXRpb25zPwpGb3Igd2hlbiB5ZSBvZmZlciB5b3VyIGdpZnRzLCB3aGVuIHllIG1ha2UgeW91ciBzb25zIHRvIHBhc3MgdGhyb3VnaCB0aGUgZmlyZSwgeWUgcG9sbHV0ZSB5b3Vyc2VsdmVzIHdpdGggYWxsIHlvdXIgaWRvbHMsIGV2ZW4gdW50byB0aGlzIGRheTogYW5kIHNoYWxsIEkgYmUgZW5xdWlyZWQgb2YgYnkgeW91LCBPIGhvdXNlIG9mIElzcmFlbD8gQXMgSSBsaXZlLCBzYWl0aCB0aGUgTG9yZCBHT0QsIEkgd2lsbCBub3QgYmUgZW5xdWlyZWQgb2YgYnkgeW91LgpBbmQgdGhhdCB3aGljaCBjb21ldGggaW50byB5b3VyIG1pbmQgc2hhbGwgbm90IGJlIGF0IGFsbCwgdGhhdCB5ZSBzYXksIFdlIHdpbGwgYmUgYXMgdGhlIGhlYXRoZW4sIGFzIHRoZSBmYW1pbGllcyBvZiB0aGUgY291bnRyaWVzLCB0byBzZXJ2ZSB3b29kIGFuZCBzdG9uZS4KQXMgSSBsaXZlLCBzYWl0aCB0aGUgTG9yZCBHT0QsIHN1cmVseSB3aXRoIGEgbWlnaHR5IGhhbmQsIGFuZCB3aXRoIGEgc3RyZXRjaGVkIG91dCBhcm0sIGFuZCB3aXRoIGZ1cnkgcG91cmVkIG91dCwgd2lsbCBJIHJ1bGUgb3ZlciB5b3U6CkFuZCBJIHdpbGwgYnJpbmcgeW91IG91dCBmcm9tIHRoZSBwZW9wbGUsIGFuZCB3aWxsIGdhdGhlciB5b3Ugb3V0IG9mIHRoZSBjb3VudHJpZXMgd2hlcmVpbiB5ZSBhcmUgc2NhdHRlcmVkLCB3aXRoIGEgbWlnaHR5IGhhbmQsIGFuZCB3aXRoIGEgc3RyZXRjaGVkIG91dCBhcm0sIGFuZCB3aXRoIGZ1cnkgcG91cmVkIG91dC4KQW5kIEkgd2lsbCBicmluZyB5b3UgaW50byB0aGUgd2lsZGVybmVzcyBvZiB0aGUgcGVvcGxlLCBhbmQgdGhlcmUgd2lsbCBJIHBsZWFkIHdpdGggeW91IGZhY2UgdG8gZmFjZS4KTGlrZSBhcyBJIHBsZWFkZWQgd2l0aCB5b3VyIGZhdGhlcnMgaW4gdGhlIHdpbGRlcm5lc3Mgb2YgdGhlIGxhbmQgb2YgRWd5cHQsIHNvIHdpbGwgSSBwbGVhZCB3aXRoIHlvdSwgc2FpdGggdGhlIExvcmQgR09ELgpBbmQgSSB3aWxsIGNhdXNlIHlvdSB0byBwYXNzIHVuZGVyIHRoZSByb2QsIGFuZCBJIHdpbGwgYnJpbmcgeW91IGludG8gdGhlIGJvbmQgb2YgdGhlIGNvdmVuYW50OgpBbmQgSSB3aWxsIHB1cmdlIG91dCBmcm9tIGFtb25nIHlvdSB0aGUgcmViZWxzLCBhbmQgdGhlbSB0aGF0IHRyYW5zZ3Jlc3MgYWdhaW5zdCBtZTogSSB3aWxsIGJyaW5nIHRoZW0gZm9ydGggb3V0IG9mIHRoZSBjb3VudHJ5IHdoZXJlIHRoZXkgc29qb3VybiwgYW5kIHRoZXkgc2hhbGwgbm90IGVudGVyIGludG8gdGhlIGxhbmQgb2YgSXNyYWVsOiBhbmQgeWUgc2hhbGwga25vdyB0aGF0IEkgYW0gdGhlIExPUkQuCkFzIGZvciB5b3UsIE8gaG91c2Ugb2YgSXNyYWVsLCB0aHVzIHNhaXRoIHRoZSBMb3JkIEdPRDsgR28geWUsIHNlcnZlIHllIGV2ZXJ5IG9uZSBoaXMgaWRvbHMsIGFuZCBoZXJlYWZ0ZXIgYWxzbywgaWYgeWUgd2lsbCBub3QgaGVhcmtlbiB1bnRvIG1lOiBidXQgcG9sbHV0ZSB5ZSBteSBob2x5IG5hbWUgbm8gbW9yZSB3aXRoIHlvdXIgZ2lmdHMsIGFuZCB3aXRoIHlvdXIgaWRvbHMuCkZvciBpbiBtaW5lIGhvbHkgbW91bnRhaW4sIGluIHRoZSBtb3VudGFpbiBvZiB0aGUgaGVpZ2h0IG9mIElzcmFlbCwgc2FpdGggdGhlIExvcmQgR09ELCB0aGVyZSBzaGFsbCBhbGwgdGhlIGhvdXNlIG9mIElzcmFlbCwgYWxsIG9mIHRoZW0gaW4gdGhlIGxhbmQsIHNlcnZlIG1lOiB0aGVyZSB3aWxsIEkgYWNjZXB0IHRoZW0sIGFuZCB0aGVyZSB3aWxsIEkgcmVxdWlyZSB5b3VyIG9mZmVyaW5ncywgYW5kIHRoZSBmaXJzdGZydWl0cyBvZiB5b3VyIG9ibGF0aW9ucywgd2l0aCBhbGwgeW91ciBob2x5IHRoaW5ncy4KSSB3aWxsIGFjY2VwdCB5b3Ugd2l0aCB5b3VyIHN3ZWV0IHNhdm91ciwgd2hlbiBJIGJyaW5nIHlvdSBvdXQgZnJvbSB0aGUgcGVvcGxlLCBhbmQgZ2F0aGVyIHlvdSBvdXQgb2YgdGhlIGNvdW50cmllcyB3aGVyZWluIHllIGhhdmUgYmVlbiBzY2F0dGVyZWQ7IGFuZCBJIHdpbGwgYmUgc2FuY3RpZmllZCBpbiB5b3UgYmVmb3JlIHRoZSBoZWF0aGVuLgpBbmQgeWUgc2hhbGwga25vdyB0aGF0IEkgYW0gdGhlIExPUkQsIHdoZW4gSSBzaGFsbCBicmluZyB5b3UgaW50byB0aGUgbGFuZCBvZiBJc3JhZWwsIGludG8gdGhlIGNvdW50cnkgZm9yIHRoZSB3aGljaCBJIGxpZnRlZCB1cCBtaW5lIGhhbmQgdG8gZ2l2ZSBpdCB0byB5b3VyIGZhdGhlcnMuCkFuZCB0aGVyZSBzaGFsbCB5ZSByZW1lbWJlciB5b3VyIHdheXMsIGFuZCBhbGwgeW91ciBkb2luZ3MsIHdoZXJlaW4geWUgaGF2ZSBiZWVuIGRlZmlsZWQ7IGFuZCB5ZSBzaGFsbCBsb3RoZSB5b3Vyc2VsdmVzIGluIHlvdXIgb3duIHNpZ2h0IGZvciBhbGwgeW91ciBldmlscyB0aGF0IHllIGhhdmUgY29tbWl0dGVkLgpBbmQgeWUgc2hhbGwga25vdyB0aGF0IEkgYW0gdGhlIExPUkQgd2hlbiBJIGhhdmUgd3JvdWdodCB3aXRoIHlvdSBmb3IgbXkgbmFtZSdzIHNha2UsIG5vdCBhY2NvcmRpbmcgdG8geW91ciB3aWNrZWQgd2F5cywgbm9yIGFjY29yZGluZyB0byB5b3VyIGNvcnJ1cHQgZG9pbmdzLCBPIHllIGhvdXNlIG9mIElzcmFlbCwgc2FpdGggdGhlIExvcmQgR09ELgpNb3Jlb3ZlciB0aGUgd29yZCBvZiB0aGUgTE9SRCBjYW1lIHVudG8gbWUsIHNheWluZywKU29uIG9mIG1hbiwgc2V0IHRoeSBmYWNlIHRvd2FyZCB0aGUgc291dGgsIGFuZCBkcm9wIHRoeSB3b3JkIHRvd2FyZCB0aGUgc291dGgsIGFuZCBwcm9waGVzeSBhZ2FpbnN0IHRoZSBmb3Jlc3Qgb2YgdGhlIHNvdXRoIGZpZWxkOwpBbmQgc2F5IHRvIHRoZSBmb3Jlc3Qgb2YgdGhlIHNvdXRoLCBIZWFyIHRoZSB3b3JkIG9mIHRoZSBMT1JEOyBUaHVzIHNhaXRoIHRoZSBMb3JkIEdPRDsgQmVob2xkLCBJIHdpbGwga2luZGxlIGEgZmlyZSBpbiB0aGVlLCBhbmQgaXQgc2hhbGwgZGV2b3VyIGV2ZXJ5IGdyZWVuIHRyZWUgaW4gdGhlZSwgYW5kIGV2ZXJ5IGRyeSB0cmVlOiB0aGUgZmxhbWluZyBmbGFtZSBzaGFsbCBub3QgYmUgcXVlbmNoZWQsIGFuZCBhbGwgZmFjZXMgZnJvbSB0aGUgc291dGggdG8gdGhlIG5vcnRoIHNoYWxsIGJlIGJ1cm5lZCB0aGVyZWluLgpBbmQgYWxsIGZsZXNoIHNoYWxsIHNlZSB0aGF0IEkgdGhlIExPUkQgaGF2ZSBraW5kbGVkIGl0OiBpdCBzaGFsbCBub3QgYmUgcXVlbmNoZWQuClRoZW4gc2FpZCBJLCBBaCBMb3JkIEdPRCEgdGhleSBzYXkgb2YgbWUsIERvdGggaGUgbm90IHNwZWFrIHBhcmFibGVzPwpBbmQgdGhlIHdvcmQgb2YgdGhlIExPUkQgY2FtZSB1bnRvIG1lLCBzYXlpbmcsClNvbiBvZiBtYW4sIHNldCB0aHkgZmFjZSB0b3dhcmQgSmVydXNhbGVtLCBhbmQgZHJvcCB0aHkgd29yZCB0b3dhcmQgdGhlIGhvbHkgcGxhY2VzLCBhbmQgcHJvcGhlc3kgYWdhaW5zdCB0aGUgbGFuZCBvZiBJc3JhZWwsCkFuZCBzYXkgdG8gdGhlIGxhbmQgb2YgSXNyYWVsLCBUaHVzIHNhaXRoIHRoZSBMT1JEOyBCZWhvbGQsIEkgYW0gYWdhaW5zdCB0aGVlLCBhbmQgd2lsbCBkcmF3IGZvcnRoIG15IHN3b3JkIG91dCBvZiBoaXMgc2hlYXRoLCBhbmQgd2lsbCBjdXQgb2ZmIGZyb20gdGhlZSB0aGUgcmlnaHRlb3VzIGFuZCB0aGUgd2lja2VkLgpTZWVpbmcgdGhlbiB0aGF0IEkgd2lsbCBjdXQgb2ZmIGZyb20gdGhlZSB0aGUgcmlnaHRlb3VzIGFuZCB0aGUgd2lja2VkLCB0aGVyZWZvcmUgc2hhbGwgbXkgc3dvcmQgZ28gZm9ydGggb3V0IG9mIGhpcyBzaGVhdGggYWdhaW5zdCBhbGwgZmxlc2ggZnJvbSB0aGUgc291dGggdG8gdGhlIG5vcnRoOgpUaGF0IGFsbCBmbGVzaCBtYXkga25vdyB0aGF0IEkgdGhlIExPUkQgaGF2ZSBkcmF3biBmb3J0aCBteSBzd29yZCBvdXQgb2YgaGlzIHNoZWF0aDogaXQgc2hhbGwgbm90IHJldHVybiBhbnkgbW9yZS4KU2lnaCB0aGVyZWZvcmUsIHRob3Ugc29uIG9mIG1hbiwgd2l0aCB0aGUgYnJlYWtpbmcgb2YgdGh5IGxvaW5zOyBhbmQgd2l0aCBiaXR0ZXJuZXNzIHNpZ2ggYmVmb3JlIHRoZWlyIGV5ZXMuCkFuZCBpdCBzaGFsbCBiZSwgd2hlbiB0aGV5IHNheSB1bnRvIHRoZWUsIFdoZXJlZm9yZSBzaWdoZXN0IHRob3U/IHRoYXQgdGhvdSBzaGFsdCBhbnN3ZXIsIEZvciB0aGUgdGlkaW5nczsgYmVjYXVzZSBpdCBjb21ldGg6IGFuZCBldmVyeSBoZWFydCBzaGFsbCBtZWx0LCBhbmQgYWxsIGhhbmRzIHNoYWxsIGJlIGZlZWJsZSwgYW5kIGV2ZXJ5IHNwaXJpdCBzaGFsbCBmYWludCwgYW5kIGFsbCBrbmVlcyBzaGFsbCBiZSB3ZWFrIGFzIHdhdGVyOiBiZWhvbGQsIGl0IGNvbWV0aCwgYW5kIHNoYWxsIGJlIGJyb3VnaHQgdG8gcGFzcywgc2FpdGggdGhlIExvcmQgR09ELgpBZ2FpbiB0aGUgd29yZCBvZiB0aGUgTE9SRCBjYW1lIHVudG8gbWUsIHNheWluZywKU29uIG9mIG1hbiwgcHJvcGhlc3ksIGFuZCBzYXksIFRodXMgc2FpdGggdGhlIExPUkQ7IFNheSwgQSBzd29yZCwgYSBzd29yZCBpcyBzaGFycGVuZWQsIGFuZCBhbHNvIGZ1cmJpc2hlZDoKSXQgaXMgc2hhcnBlbmVkIHRvIG1ha2UgYSBzb3JlIHNsYXVnaHRlcjsgaXQgaXMgZnVyYmlzaGVkIHRoYXQgaXQgbWF5IGdsaXR0ZXI6IHNob3VsZCB3ZSB0aGVuIG1ha2UgbWlydGg/IGl0IGNvbnRlbW5ldGggdGhlIHJvZCBvZiBteSBzb24sIGFzIGV2ZXJ5IHRyZWUuCkFuZCBoZSBoYXRoIGdpdmVuIGl0IHRvIGJlIGZ1cmJpc2hlZCwgdGhhdCBpdCBtYXkgYmUgaGFuZGxlZDogdGhpcyBzd29yZCBpcyBzaGFycGVuZWQsIGFuZCBpdCBpcyBmdXJiaXNoZWQsIHRvIGdpdmUgaXQgaW50byB0aGUgaGFuZCBvZiB0aGUgc2xheWVyLgpDcnkgYW5kIGhvd2wsIHNvbiBvZiBtYW46IGZvciBpdCBzaGFsbCBiZSB1cG9uIG15IHBlb3BsZSwgaXQgc2hhbGwgYmUgdXBvbiBhbGwgdGhlIHByaW5jZXMgb2YgSXNyYWVsOiB0ZXJyb3JzIGJ5IHJlYXNvbiBvZiB0aGUgc3dvcmQgc2hhbGwgYmUgdXBvbiBteSBwZW9wbGU6IHNtaXRlIHRoZXJlZm9yZSB1cG9uIHRoeSB0aGlnaC4KQmVjYXVzZSBpdCBpcyBhIHRyaWFsLCBhbmQgd2hhdCBpZiB0aGUgc3dvcmQgY29udGVtbiBldmVuIHRoZSByb2Q/IGl0IHNoYWxsIGJlIG5vIG1vcmUsIHNhaXRoIHRoZSBMb3JkIEdPRC4KVGhvdSB0aGVyZWZvcmUsIHNvbiBvZiBtYW4sIHByb3BoZXN5LCBhbmQgc21pdGUgdGhpbmUgaGFuZHMgdG9nZXRoZXIuIGFuZCBsZXQgdGhlIHN3b3JkIGJlIGRvdWJsZWQgdGhlIHRoaXJkIHRpbWUsIHRoZSBzd29yZCBvZiB0aGUgc2xhaW46IGl0IGlzIHRoZSBzd29yZCBvZiB0aGUgZ3JlYXQgbWVuIHRoYXQgYXJlIHNsYWluLCB3aGljaCBlbnRlcmV0aCBpbnRvIHRoZWlyIHByaXZ5IGNoYW1iZXJzLgpJIGhhdmUgc2V0IHRoZSBwb2ludCBvZiB0aGUgc3dvcmQgYWdhaW5zdCBhbGwgdGhlaXIgZ2F0ZXMsIHRoYXQgdGhlaXIgaGVhcnQgbWF5IGZhaW50LCBhbmQgdGhlaXIgcnVpbnMgYmUgbXVsdGlwbGllZDogYWghIGl0IGlzIG1hZGUgYnJpZ2h0LCBpdCBpcyB3cmFwcGVkIHVwIGZvciB0aGUgc2xhdWdodGVyLgpHbyB0aGVlIG9uZSB3YXkgb3Igb3RoZXIsIGVpdGhlciBvbiB0aGUgcmlnaHQgaGFuZCwgb3Igb24gdGhlIGxlZnQsIHdoaXRoZXJzb2V2ZXIgdGh5IGZhY2UgaXMgc2V0LgpJIHdpbGwgYWxzbyBzbWl0ZSBtaW5lIGhhbmRzIHRvZ2V0aGVyLCBhbmQgSSB3aWxsIGNhdXNlIG15IGZ1cnkgdG8gcmVzdDogSSB0aGUgTE9SRCBoYXZlIHNhaWQgaXQuClRoZSB3b3JkIG9mIHRoZSBMT1JEIGNhbWUgdW50byBtZSBhZ2Fpbiwgc2F5aW5nLApBbHNvLCB0aG91IHNvbiBvZiBtYW4sIGFwcG9pbnQgdGhlZSB0d28gd2F5cywgdGhhdCB0aGUgc3dvcmQgb2YgdGhlIGtpbmcgb2YgQmFieWxvbiBtYXkgY29tZTogYm90aCB0d2FpbiBzaGFsbCBjb21lIGZvcnRoIG91dCBvZiBvbmUgbGFuZDogYW5kIGNob29zZSB0aG91IGEgcGxhY2UsIGNob29zZSBpdCBhdCB0aGUgaGVhZCBvZiB0aGUgd2F5IHRvIHRoZSBjaXR5LgpBcHBvaW50IGEgd2F5LCB0aGF0IHRoZSBzd29yZCBtYXkgY29tZSB0byBSYWJiYXRoIG9mIHRoZSBBbW1vbml0ZXMsIGFuZCB0byBKdWRhaCBpbiBKZXJ1c2FsZW0gdGhlIGRlZmVuY2VkLgpGb3IgdGhlIGtpbmcgb2YgQmFieWxvbiBzdG9vZCBhdCB0aGUgcGFydGluZyBvZiB0aGUgd2F5LCBhdCB0aGUgaGVhZCBvZiB0aGUgdHdvIHdheXMsIHRvIHVzZSBkaXZpbmF0aW9uOiBoZSBtYWRlIGhpcyBhcnJvd3MgYnJpZ2h0LCBoZSBjb25zdWx0ZWQgd2l0aCBpbWFnZXMsIGhlIGxvb2tlZCBpbiB0aGUgbGl2ZXIuCkF0IGhpcyByaWdodCBoYW5kIHdhcyB0aGUgZGl2aW5hdGlvbiBmb3IgSmVydXNhbGVtLCB0byBhcHBvaW50IGNhcHRhaW5zLCB0byBvcGVuIHRoZSBtb3V0aCBpbiB0aGUgc2xhdWdodGVyLCB0byBsaWZ0IHVwIHRoZSB2b2ljZSB3aXRoIHNob3V0aW5nLCB0byBhcHBvaW50IGJhdHRlcmluZyByYW1zIGFnYWluc3QgdGhlIGdhdGVzLCB0byBjYXN0IGEgbW91bnQsIGFuZCB0byBidWlsZCBhIGZvcnQuCkFuZCBpdCBzaGFsbCBiZSB1bnRvIHRoZW0gYXMgYSBmYWxzZSBkaXZpbmF0aW9uIGluIHRoZWlyIHNpZ2h0LCB0byB0aGVtIHRoYXQgaGF2ZSBzd29ybiBvYXRoczogYnV0IGhlIHdpbGwgY2FsbCB0byByZW1lbWJyYW5jZSB0aGUgaW5pcXVpdHksIHRoYXQgdGhleSBtYXkgYmUgdGFrZW4uClRoZXJlZm9yZSB0aHVzIHNhaXRoIHRoZSBMb3JkIEdPRDsgQmVjYXVzZSB5ZSBoYXZlIG1hZGUgeW91ciBpbmlxdWl0eSB0byBiZSByZW1lbWJlcmVkLCBpbiB0aGF0IHlvdXIgdHJhbnNncmVzc2lvbnMgYXJlIGRpc2NvdmVyZWQsIHNvIHRoYXQgaW4gYWxsIHlvdXIgZG9pbmdzIHlvdXIgc2lucyBkbyBhcHBlYXI7IGJlY2F1c2UsIEkgc2F5LCB0aGF0IHllIGFyZSBjb21lIHRvIHJlbWVtYnJhbmNlLCB5ZSBzaGFsbCBiZSB0YWtlbiB3aXRoIHRoZSBoYW5kLgpBbmQgdGhvdSwgcHJvZmFuZSB3aWNrZWQgcHJpbmNlIG9mIElzcmFlbCwgd2hvc2UgZGF5IGlzIGNvbWUsIHdoZW4gaW5pcXVpdHkgc2hhbGwgaGF2ZSBhbiBlbmQsClRodXMgc2FpdGggdGhlIExvcmQgR09EOyBSZW1vdmUgdGhlIGRpYWRlbSwgYW5kIHRha2Ugb2ZmIHRoZSBjcm93bjogdGhpcyBzaGFsbCBub3QgYmUgdGhlIHNhbWU6IGV4YWx0IGhpbSB0aGF0IGlzIGxvdywgYW5kIGFiYXNlIGhpbSB0aGF0IGlzIGhpZ2guCkkgd2lsbCBvdmVydHVybiwgb3ZlcnR1cm4sIG92ZXJ0dXJuLCBpdDogYW5kIGl0IHNoYWxsIGJlIG5vIG1vcmUsIHVudGlsIGhlIGNvbWUgd2hvc2UgcmlnaHQgaXQgaXM7IGFuZCBJIHdpbGwgZ2l2ZSBpdCBoaW0uCkFuZCB0aG91LCBzb24gb2YgbWFuLCBwcm9waGVzeSBhbmQgc2F5LCBUaHVzIHNhaXRoIHRoZSBMb3JkIEdPRCBjb25jZXJuaW5nIHRoZSBBbW1vbml0ZXMsIGFuZCBjb25jZXJuaW5nIHRoZWlyIHJlcHJvYWNoOyBldmVuIHNheSB0aG91LCBUaGUgc3dvcmQsIHRoZSBzd29yZCBpcyBkcmF3bjogZm9yIHRoZSBzbGF1Z2h0ZXIgaXQgaXMgZnVyYmlzaGVkLCB0byBjb25zdW1lIGJlY2F1c2Ugb2YgdGhlIGdsaXR0ZXJpbmc6CldoaWxlcyB0aGV5IHNlZSB2YW5pdHkgdW50byB0aGVlLCB3aGlsZXMgdGhleSBkaXZpbmUgYSBsaWUgdW50byB0aGVlLCB0byBicmluZyB0aGVlIHVwb24gdGhlIG5lY2tzIG9mIHRoZW0gdGhhdCBhcmUgc2xhaW4sIG9mIHRoZSB3aWNrZWQsIHdob3NlIGRheSBpcyBjb21lLCB3aGVuIHRoZWlyIGluaXF1aXR5IHNoYWxsIGhhdmUgYW4gZW5kLgpTaGFsbCBJIGNhdXNlIGl0IHRvIHJldHVybiBpbnRvIGhpcyBzaGVhdGg/IEkgd2lsbCBqdWRnZSB0aGVlIGluIHRoZSBwbGFjZSB3aGVyZSB0aG91IHdhc3QgY3JlYXRlZCwgaW4gdGhlIGxhbmQgb2YgdGh5IG5hdGl2aXR5LgpBbmQgSSB3aWxsIHBvdXIgb3V0IG1pbmUgaW5kaWduYXRpb24gdXBvbiB0aGVlLCBJIHdpbGwgYmxvdyBhZ2FpbnN0IHRoZWUgaW4gdGhlIGZpcmUgb2YgbXkgd3JhdGgsIGFuZCBkZWxpdmVyIHRoZWUgaW50byB0aGUgaGFuZCBvZiBicnV0aXNoIG1lbiwgYW5kIHNraWxmdWwgdG8gZGVzdHJveS4KVGhvdSBzaGFsdCBiZSBmb3IgZnVlbCB0byB0aGUgZmlyZTsgdGh5IGJsb29kIHNoYWxsIGJlIGluIHRoZSBtaWRzdCBvZiB0aGUgbGFuZDsgdGhvdSBzaGFsdCBiZSBubyBtb3JlIHJlbWVtYmVyZWQ6IGZvciBJIHRoZSBMT1JEIGhhdmUgc3Bva2VuIGl0LgpNb3Jlb3ZlciB0aGUgd29yZCBvZiB0aGUgTE9SRCBjYW1lIHVudG8gbWUsIHNheWluZywKTm93LCB0aG91IHNvbiBvZiBtYW4sIHdpbHQgdGhvdSBqdWRnZSwgd2lsdCB0aG91IGp1ZGdlIHRoZSBibG9vZHkgY2l0eT8geWVhLCB0aG91IHNoYWx0IHNoZXcgaGVyIGFsbCBoZXIgYWJvbWluYXRpb25zLgpUaGVuIHNheSB0aG91LCBUaHVzIHNhaXRoIHRoZSBMb3JkIEdPRCwgVGhlIGNpdHkgc2hlZGRldGggYmxvb2QgaW4gdGhlIG1pZHN0IG9mIGl0LCB0aGF0IGhlciB0aW1lIG1heSBjb21lLCBhbmQgbWFrZXRoIGlkb2xzIGFnYWluc3QgaGVyc2VsZiB0byBkZWZpbGUgaGVyc2VsZi4KVGhvdSBhcnQgYmVjb21lIGd1aWx0eSBpbiB0aHkgYmxvb2QgdGhhdCB0aG91IGhhc3Qgc2hlZDsgYW5kIGhhc3QgZGVmaWxlZCB0aHlzZWxmIGluIHRoaW5lIGlkb2xzIHdoaWNoIHRob3UgaGFzdCBtYWRlOyBhbmQgdGhvdSBoYXN0IGNhdXNlZCB0aHkgZGF5cyB0byBkcmF3IG5lYXIsIGFuZCBhcnQgY29tZSBldmVuIHVudG8gdGh5IHllYXJzOiB0aGVyZWZvcmUgaGF2ZSBJIG1hZGUgdGhlZSBhIHJlcHJvYWNoIHVudG8gdGhlIGhlYXRoZW4sIGFuZCBhIG1vY2tpbmcgdG8gYWxsIGNvdW50cmllcy4KVGhvc2UgdGhhdCBiZSBuZWFyLCBhbmQgdGhvc2UgdGhhdCBiZSBmYXIgZnJvbSB0aGVlLCBzaGFsbCBtb2NrIHRoZWUsIHdoaWNoIGFydCBpbmZhbW91cyBhbmQgbXVjaCB2ZXhlZC4KQmVob2xkLCB0aGUgcHJpbmNlcyBvZiBJc3JhZWwsIGV2ZXJ5IG9uZSB3ZXJlIGluIHRoZWUgdG8gdGhlaXIgcG93ZXIgdG8gc2hlZCBibG9vZC4KSW4gdGhlZSBoYXZlIHRoZXkgc2V0IGxpZ2h0IGJ5IGZhdGhlciBhbmQgbW90aGVyOiBpbiB0aGUgbWlkc3Qgb2YgdGhlZSBoYXZlIHRoZXkgZGVhbHQgYnkgb3BwcmVzc2lvbiB3aXRoIHRoZSBzdHJhbmdlcjogaW4gdGhlZSBoYXZlIHRoZXkgdmV4ZWQgdGhlIGZhdGhlcmxlc3MgYW5kIHRoZSB3aWRvdy4KVGhvdSBoYXN0IGRlc3Bpc2VkIG1pbmUgaG9seSB0aGluZ3MsIGFuZCBoYXN0IHByb2ZhbmVkIG15IHNhYmJhdGhzLgpJbiB0aGVlIGFyZSBtZW4gdGhhdCBjYXJyeSB0YWxlcyB0byBzaGVkIGJsb29kOiBhbmQgaW4gdGhlZSB0aGV5IGVhdCB1cG9uIHRoZSBtb3VudGFpbnM6IGluIHRoZSBtaWRzdCBvZiB0aGVlIHRoZXkgY29tbWl0IGxld2RuZXNzLgpJbiB0aGVlIGhhdmUgdGhleSBkaXNjb3ZlcmVkIHRoZWlyIGZhdGhlcnMnIG5ha2VkbmVzczogaW4gdGhlZSBoYXZlIHRoZXkgaHVtYmxlZCBoZXIgdGhhdCB3YXMgc2V0IGFwYXJ0IGZvciBwb2xsdXRpb24uCkFuZCBvbmUgaGF0aCBjb21taXR0ZWQgYWJvbWluYXRpb24gd2l0aCBoaXMgbmVpZ2hib3VyJ3Mgd2lmZTsgYW5kIGFub3RoZXIgaGF0aCBsZXdkbHkgZGVmaWxlZCBoaXMgZGF1Z2h0ZXIgaW4gbGF3OyBhbmQgYW5vdGhlciBpbiB0aGVlIGhhdGggaHVtYmxlZCBoaXMgc2lzdGVyLCBoaXMgZmF0aGVyJ3MgZGF1Z2h0ZXIuCkluIHRoZWUgaGF2ZSB0aGV5IHRha2VuIGdpZnRzIHRvIHNoZWQgYmxvb2Q7IHRob3UgaGFzdCB0YWtlbiB1c3VyeSBhbmQgaW5jcmVhc2UsIGFuZCB0aG91IGhhc3QgZ3JlZWRpbHkgZ2FpbmVkIG9mIHRoeSBuZWlnaGJvdXJzIGJ5IGV4dG9ydGlvbiwgYW5kIGhhc3QgZm9yZ290dGVuIG1lLCBzYWl0aCB0aGUgTG9yZCBHT0QuCkJlaG9sZCwgdGhlcmVmb3JlIEkgaGF2ZSBzbWl0dGVuIG1pbmUgaGFuZCBhdCB0aHkgZGlzaG9uZXN0IGdhaW4gd2hpY2ggdGhvdSBoYXN0IG1hZGUsIGFuZCBhdCB0aHkgYmxvb2Qgd2hpY2ggaGF0aCBiZWVuIGluIHRoZSBtaWRzdCBvZiB0aGVlLgpDYW4gdGhpbmUgaGVhcnQgZW5kdXJlLCBvciBjYW4gdGhpbmUgaGFuZHMgYmUgc3Ryb25nLCBpbiB0aGUgZGF5cyB0aGF0IEkgc2hhbGwgZGVhbCB3aXRoIHRoZWU/IEkgdGhlIExPUkQgaGF2ZSBzcG9rZW4gaXQsIGFuZCB3aWxsIGRvIGl0LgpBbmQgSSB3aWxsIHNjYXR0ZXIgdGhlZSBhbW9uZyB0aGUgaGVhdGhlbiwgYW5kIGRpc3BlcnNlIHRoZWUgaW4gdGhlIGNvdW50cmllcywgYW5kIHdpbGwgY29uc3VtZSB0aHkgZmlsdGhpbmVzcyBvdXQgb2YgdGhlZS4KQW5kIHRob3Ugc2hhbHQgdGFrZSB0aGluZSBpbmhlcml0YW5jZSBpbiB0aHlzZWxmIGluIHRoZSBzaWdodCBvZiB0aGUgaGVhdGhlbiwgYW5kIHRob3Ugc2hhbHQga25vdyB0aGF0IEkgYW0gdGhlIExPUkQuCkFuZCB0aGUgd29yZCBvZiB0aGUgTE9SRCBjYW1lIHVudG8gbWUsIHNheWluZywKU29uIG9mIG1hbiwgdGhlIGhvdXNlIG9mIElzcmFlbCBpcyB0byBtZSBiZWNvbWUgZHJvc3M6IGFsbCB0aGV5IGFyZSBicmFzcywgYW5kIHRpbiwgYW5kIGlyb24sIGFuZCBsZWFkLCBpbiB0aGUgbWlkc3Qgb2YgdGhlIGZ1cm5hY2U7IHRoZXkgYXJlIGV2ZW4gdGhlIGRyb3NzIG9mIHNpbHZlci4KVGhlcmVmb3JlIHRodXMgc2FpdGggdGhlIExvcmQgR09EOyBCZWNhdXNlIHllIGFyZSBhbGwgYmVjb21lIGRyb3NzLCBiZWhvbGQsIHRoZXJlZm9yZSBJIHdpbGwgZ2F0aGVyIHlvdSBpbnRvIHRoZSBtaWRzdCBvZiBKZXJ1c2FsZW0uCkFzIHRoZXkgZ2F0aGVyIHNpbHZlciwgYW5kIGJyYXNzLCBhbmQgaXJvbiwgYW5kIGxlYWQsIGFuZCB0aW4sIGludG8gdGhlIG1pZHN0IG9mIHRoZSBmdXJuYWNlLCB0byBibG93IHRoZSBmaXJlIHVwb24gaXQsIHRvIG1lbHQgaXQ7IHNvIHdpbGwgSSBnYXRoZXIgeW91IGluIG1pbmUgYW5nZXIgYW5kIGluIG15IGZ1cnksIGFuZCBJIHdpbGwgbGVhdmUgeW91IHRoZXJlLCBhbmQgbWVsdCB5b3UuClllYSwgSSB3aWxsIGdhdGhlciB5b3UsIGFuZCBibG93IHVwb24geW91IGluIHRoZSBmaXJlIG9mIG15IHdyYXRoLCBhbmQgeWUgc2hhbGwgYmUgbWVsdGVkIGluIHRoZSBtaWRzdCB0aGVyb2YuCkFzIHNpbHZlciBpcyBtZWx0ZWQgaW4gdGhlIG1pZHN0IG9mIHRoZSBmdXJuYWNlLCBzbyBzaGFsbCB5ZSBiZSBtZWx0ZWQgaW4gdGhlIG1pZHN0IHRoZXJlb2Y7IGFuZCB5ZSBzaGFsbCBrbm93IHRoYXQgSSB0aGUgTE9SRCBoYXZlIHBvdXJlZCBvdXQgbXkgZnVyeSB1cG9uIHlvdS4KQW5kIHRoZSB3b3JkIG9mIHRoZSBMT1JEIGNhbWUgdW50byBtZSwgc2F5aW5nLApTb24gb2YgbWFuLCBzYXkgdW50byBoZXIsIFRob3UgYXJ0IHRoZSBsYW5kIHRoYXQgaXMgbm90IGNsZWFuc2VkLCBub3IgcmFpbmVkIHVwb24gaW4gdGhlIGRheSBvZiBpbmRpZ25hdGlvbi4KVGhlcmUgaXMgYSBjb25zcGlyYWN5IG9mIGhlciBwcm9waGV0cyBpbiB0aGUgbWlkc3QgdGhlcmVvZiwgbGlrZSBhIHJvYXJpbmcgbGlvbiByYXZlbmluZyB0aGUgcHJleTsgdGhleSBoYXZlIGRldm91cmVkIHNvdWxzOyB0aGV5IGhhdmUgdGFrZW4gdGhlIHRyZWFzdXJlIGFuZCBwcmVjaW91cyB0aGluZ3M7IHRoZXkgaGF2ZSBtYWRlIGhlciBtYW55IHdpZG93cyBpbiB0aGUgbWlkc3QgdGhlcmVvZi4KSGVyIHByaWVzdHMgaGF2ZSB2aW9sYXRlZCBteSBsYXcsIGFuZCBoYXZlIHByb2ZhbmVkIG1pbmUgaG9seSB0aGluZ3M6IHRoZXkgaGF2ZSBwdXQgbm8gZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBob2x5IGFuZCBwcm9mYW5lLCBuZWl0aGVyIGhhdmUgdGhleSBzaGV3ZWQgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB1bmNsZWFuIGFuZCB0aGUgY2xlYW4sIGFuZCBoYXZlIGhpZCB0aGVpciBleWVzIGZyb20gbXkgc2FiYmF0aHMsIGFuZCBJIGFtIHByb2ZhbmVkIGFtb25nIHRoZW0uCkhlciBwcmluY2VzIGluIHRoZSBtaWRzdCB0aGVyZW9mIGFyZSBsaWtlIHdvbHZlcyByYXZlbmluZyB0aGUgcHJleSwgdG8gc2hlZCBibG9vZCwgYW5kIHRvIGRlc3Ryb3kgc291bHMsIHRvIGdldCBkaXNob25lc3QgZ2Fpbi4KQW5kIGhlciBwcm9waGV0cyBoYXZlIGRhdWJlZCB0aGVtIHdpdGggdW50ZW1wZXJlZCBtb3J0ZXIsIHNlZWluZyB2YW5pdHksIGFuZCBkaXZpbmluZyBsaWVzIHVudG8gdGhlbSwgc2F5aW5nLCBUaHVzIHNhaXRoIHRoZSBMb3JkIEdPRCwgd2hlbiB0aGUgTE9SRCBoYXRoIG5vdCBzcG9rZW4uClRoZSBwZW9wbGUgb2YgdGhlIGxhbmQgaGF2ZSB1c2VkIG9wcHJlc3Npb24sIGFuZCBleGVyY2lzZWQgcm9iYmVyeSwgYW5kIGhhdmUgdmV4ZWQgdGhlIHBvb3IgYW5kIG5lZWR5OiB5ZWEsIHRoZXkgaGF2ZSBvcHByZXNzZWQgdGhlIHN0cmFuZ2VyIHdyb25nZnVsbHkuCkFuZCBJIHNvdWdodCBmb3IgYSBtYW4gYW1vbmcgdGhlbSwgdGhhdCBzaG91bGQgbWFrZSB1cCB0aGUgaGVkZ2UsIGFuZCBzdGFuZCBpbiB0aGUgZ2FwIGJlZm9yZSBtZSBmb3IgdGhlIGxhbmQsIHRoYXQgSSBzaG91bGQgbm90IGRlc3Ryb3kgaXQ6IGJ1dCBJIGZvdW5kIG5vbmUuClRoZXJlZm9yZSBoYXZlIEkgcG91cmVkIG91dCBtaW5lIGluZGlnbmF0aW9uIHVwb24gdGhlbTsgSSBoYXZlIGNvbnN1bWVkIHRoZW0gd2l0aCB0aGUgZmlyZSBvZiBteSB3cmF0aDogdGhlaXIgb3duIHdheSBoYXZlIEkgcmVjb21wZW5zZWQgdXBvbiB0aGVpciBoZWFkcywgc2FpdGggdGhlIExvcmQgR09ELgpUaGUgd29yZCBvZiB0aGUgTE9SRCBjYW1lIGFnYWluIHVudG8gbWUsIHNheWluZywKU29uIG9mIG1hbiwgdGhlcmUgd2VyZSB0d28gd29tZW4sIHRoZSBkYXVnaHRlcnMgb2Ygb25lIG1vdGhlcjoKQW5kIHRoZXkgY29tbWl0dGVkIHdob3JlZG9tcyBpbiBFZ3lwdDsgdGhleSBjb21taXR0ZWQgd2hvcmVkb21zIGluIHRoZWlyIHlvdXRoOiB0aGVyZSB3ZXJlIHRoZWlyIGJyZWFzdHMgcHJlc3NlZCwgYW5kIHRoZXJlIHRoZXkgYnJ1aXNlZCB0aGUgdGVhdHMgb2YgdGhlaXIgdmlyZ2luaXR5LgpBbmQgdGhlIG5hbWVzIG9mIHRoZW0gd2VyZSBBaG9sYWggdGhlIGVsZGVyLCBhbmQgQWhvbGliYWggaGVyIHNpc3RlcjogYW5kIHRoZXkgd2VyZSBtaW5lLCBhbmQgdGhleSBiYXJlIHNvbnMgYW5kIGRhdWdodGVycy4gVGh1cyB3ZXJlIHRoZWlyIG5hbWVzOyBTYW1hcmlhIGlzIEFob2xhaCwgYW5kIEplcnVzYWxlbSBBaG9saWJhaC4KQW5kIEFob2xhaCBwbGF5ZWQgdGhlIGhhcmxvdCB3aGVuIHNoZSB3YXMgbWluZTsgYW5kIHNoZSBkb3RlZCBvbiBoZXIgbG92ZXJzLCBvbiB0aGUgQXNzeXJpYW5zIGhlciBuZWlnaGJvdXJzLApXaGljaCB3ZXJlIGNsb3RoZWQgd2l0aCBibHVlLCBjYXB0YWlucyBhbmQgcnVsZXJzLCBhbGwgb2YgdGhlbSBkZXNpcmFibGUgeW91bmcgbWVuLCBob3JzZW1lbiByaWRpbmcgdXBvbiBob3JzZXMuClRodXMgc2hlIGNvbW1pdHRlZCBoZXIgd2hvcmVkb21zIHdpdGggdGhlbSwgd2l0aCBhbGwgdGhlbSB0aGF0IHdlcmUgdGhlIGNob3NlbiBtZW4gb2YgQXNzeXJpYSwgYW5kIHdpdGggYWxsIG9uIHdob20gc2hlIGRvdGVkOiB3aXRoIGFsbCB0aGVpciBpZG9scyBzaGUgZGVmaWxlZCBoZXJzZWxmLgpOZWl0aGVyIGxlZnQgc2hlIGhlciB3aG9yZWRvbXMgYnJvdWdodCBmcm9tIEVneXB0OiBmb3IgaW4gaGVyIHlvdXRoIHRoZXkgbGF5IHdpdGggaGVyLCBhbmQgdGhleSBicnVpc2VkIHRoZSBicmVhc3RzIG9mIGhlciB2aXJnaW5pdHksIGFuZCBwb3VyZWQgdGhlaXIgd2hvcmVkb20gdXBvbiBoZXIuCldoZXJlZm9yZSBJIGhhdmUgZGVsaXZlcmVkIGhlciBpbnRvIHRoZSBoYW5kIG9mIGhlciBsb3ZlcnMsIGludG8gdGhlIGhhbmQgb2YgdGhlIEFzc3lyaWFucywgdXBvbiB3aG9tIHNoZSBkb3RlZC4KVGhlc2UgZGlzY292ZXJlZCBoZXIgbmFrZWRuZXNzOiB0aGV5IHRvb2sgaGVyIHNvbnMgYW5kIGhlciBkYXVnaHRlcnMsIGFuZCBzbGV3IGhlciB3aXRoIHRoZSBzd29yZDogYW5kIHNoZSBiZWNhbWUgZmFtb3VzIGFtb25nIHdvbWVuOyBmb3IgdGhleSBoYWQgZXhlY3V0ZWQganVkZ21lbnQgdXBvbiBoZXIuCkFuZCB3aGVuIGhlciBzaXN0ZXIgQWhvbGliYWggc2F3IHRoaXMsIHNoZSB3YXMgbW9yZSBjb3JydXB0IGluIGhlciBpbm9yZGluYXRlIGxvdmUgdGhhbiBzaGUsIGFuZCBpbiBoZXIgd2hvcmVkb21zIG1vcmUgdGhhbiBoZXIgc2lzdGVyIGluIGhlciB3aG9yZWRvbXMuClNoZSBkb3RlZCB1cG9uIHRoZSBBc3N5cmlhbnMgaGVyIG5laWdoYm91cnMsIGNhcHRhaW5zIGFuZCBydWxlcnMgY2xvdGhlZCBtb3N0IGdvcmdlb3VzbHksIGhvcnNlbWVuIHJpZGluZyB1cG9uIGhvcnNlcywgYWxsIG9mIHRoZW0gZGVzaXJhYmxlIHlvdW5nIG1lbi4KVGhlbiBJIHNhdyB0aGF0IHNoZSB3YXMgZGVmaWxlZCwgdGhhdCB0aGV5IHRvb2sgYm90aCBvbmUgd2F5LApBbmQgdGhhdCBzaGUgaW5jcmVhc2VkIGhlciB3aG9yZWRvbXM6IGZvciB3aGVuIHNoZSBzYXcgbWVuIHBvdXJ0cmF5ZWQgdXBvbiB0aGUgd2FsbCwgdGhlIGltYWdlcyBvZiB0aGUgQ2hhbGRlYW5zIHBvdXJ0cmF5ZWQgd2l0aCB2ZXJtaWxpb24sCkdpcmRlZCB3aXRoIGdpcmRsZXMgdXBvbiB0aGVpciBsb2lucywgZXhjZWVkaW5nIGluIGR5ZWQgYXR0aXJlIHVwb24gdGhlaXIgaGVhZHMsIGFsbCBvZiB0aGVtIHByaW5jZXMgdG8gbG9vayB0bywgYWZ0ZXIgdGhlIG1hbm5lciBvZiB0aGUgQmFieWxvbmlhbnMgb2YgQ2hhbGRlYSwgdGhlIGxhbmQgb2YgdGhlaXIgbmF0aXZpdHk6CkFuZCBhcyBzb29uIGFzIHNoZSBzYXcgdGhlbSB3aXRoIGhlciBleWVzLCBzaGUgZG90ZWQgdXBvbiB0aGVtLCBhbmQgc2VudCBtZXNzZW5nZXJzIHVudG8gdGhlbSBpbnRvIENoYWxkZWEuCkFuZCB0aGUgQmFieWxvbmlhbnMgY2FtZSB0byBoZXIgaW50byB0aGUgYmVkIG9mIGxvdmUsIGFuZCB0aGV5IGRlZmlsZWQgaGVyIHdpdGggdGhlaXIgd2hvcmVkb20sIGFuZCBzaGUgd2FzIHBvbGx1dGVkIHdpdGggdGhlbSwgYW5kIGhlciBtaW5kIHdhcyBhbGllbmF0ZWQgZnJvbSB0aGVtLgpTbyBzaGUgZGlzY292ZXJlZCBoZXIgd2hvcmVkb21zLCBhbmQgZGlzY292ZXJlZCBoZXIgbmFrZWRuZXNzOiB0aGVuIG15IG1pbmQgd2FzIGFsaWVuYXRlZCBmcm9tIGhlciwgbGlrZSBhcyBteSBtaW5kIHdhcyBhbGllbmF0ZWQgZnJvbSBoZXIgc2lzdGVyLgpZZXQgc2hlIG11bHRpcGxpZWQgaGVyIHdob3JlZG9tcywgaW4gY2FsbGluZyB0byByZW1lbWJyYW5jZSB0aGUgZGF5cyBvZiBoZXIgeW91dGgsIHdoZXJlaW4gc2hlIGhhZCBwbGF5ZWQgdGhlIGhhcmxvdCBpbiB0aGUgbGFuZCBvZiBFZ3lwdC4KRm9yIHNoZSBkb3RlZCB1cG9uIHRoZWlyIHBhcmFtb3Vycywgd2hvc2UgZmxlc2ggaXMgYXMgdGhlIGZsZXNoIG9mIGFzc2VzLCBhbmQgd2hvc2UgaXNzdWUgaXMgbGlrZSB0aGUgaXNzdWUgb2YgaG9yc2VzLgpUaHVzIHRob3UgY2FsbGVkc3QgdG8gcmVtZW1icmFuY2UgdGhlIGxld2RuZXNzIG9mIHRoeSB5b3V0aCwgaW4gYnJ1aXNpbmcgdGh5IHRlYXRzIGJ5IHRoZSBFZ3lwdGlhbnMgZm9yIHRoZSBwYXBzIG9mIHRoeSB5b3V0aC4KVGhlcmVmb3JlLCBPIEFob2xpYmFoLCB0aHVzIHNhaXRoIHRoZSBMb3JkIEdPRDsgQmVob2xkLCBJIHdpbGwgcmFpc2UgdXAgdGh5IGxvdmVycyBhZ2FpbnN0IHRoZWUsIGZyb20gd2hvbSB0aHkgbWluZCBpcyBhbGllbmF0ZWQsIGFuZCBJIHdpbGwgYnJpbmcgdGhlbSBhZ2FpbnN0IHRoZWUgb24gZXZlcnkgc2lkZTsKVGhlIEJhYnlsb25pYW5zLCBhbmQgYWxsIHRoZSBDaGFsZGVhbnMsIFBla29kLCBhbmQgU2hvYSwgYW5kIEtvYSwgYW5kIGFsbCB0aGUgQXNzeXJpYW5zIHdpdGggdGhlbTogYWxsIG9mIHRoZW0gZGVzaXJhYmxlIHlvdW5nIG1lbiwgY2FwdGFpbnMgYW5kIHJ1bGVycywgZ3JlYXQgbG9yZHMgYW5kIHJlbm93bmVkLCBhbGwgb2YgdGhlbSByaWRpbmcgdXBvbiBob3JzZXMuCkFuZCB0aGV5IHNoYWxsIGNvbWUgYWdhaW5zdCB0aGVlIHdpdGggY2hhcmlvdHMsIHdhZ29ucywgYW5kIHdoZWVscywgYW5kIHdpdGggYW4gYXNzZW1ibHkgb2YgcGVvcGxlLCB3aGljaCBzaGFsbCBzZXQgYWdhaW5zdCB0aGVlIGJ1Y2tsZXIgYW5kIHNoaWVsZCBhbmQgaGVsbWV0IHJvdW5kIGFib3V0OiBhbmQgSSB3aWxsIHNldCBqdWRnbWVudCBiZWZvcmUgdGhlbSwgYW5kIHRoZXkgc2hhbGwganVkZ2UgdGhlZSBhY2NvcmRpbmcgdG8gdGhlaXIganVkZ21lbnRzLgpBbmQgSSB3aWxsIHNldCBteSBqZWFsb3VzeSBhZ2FpbnN0IHRoZWUsIGFuZCB0aGV5IHNoYWxsIGRlYWwgZnVyaW91c2x5IHdpdGggdGhlZTogdGhleSBzaGFsbCB0YWtlIGF3YXkgdGh5IG5vc2UgYW5kIHRoaW5lIGVhcnM7IGFuZCB0aHkgcmVtbmFudCBzaGFsbCBmYWxsIGJ5IHRoZSBzd29yZDogdGhleSBzaGFsbCB0YWtlIHRoeSBzb25zIGFuZCB0aHkgZGF1Z2h0ZXJzOyBhbmQgdGh5IHJlc2lkdWUgc2hhbGwgYmUgZGV2b3VyZWQgYnkgdGhlIGZpcmUuClRoZXkgc2hhbGwgYWxzbyBzdHJpcCB0aGVlIG91dCBvZiB0aHkgY2xvdGhlcywgYW5kIHRha2UgYXdheSB0aHkgZmFpciBqZXdlbHMuClRodXMgd2lsbCBJIG1ha2UgdGh5IGxld2RuZXNzIHRvIGNlYXNlIGZyb20gdGhlZSwgYW5kIHRoeSB3aG9yZWRvbSBicm91Z2h0IGZyb20gdGhlIGxhbmQgb2YgRWd5cHQ6IHNvIHRoYXQgdGhvdSBzaGFsdCBub3QgbGlmdCB1cCB0aGluZSBleWVzIHVudG8gdGhlbSwgbm9yIHJlbWVtYmVyIEVneXB0IGFueSBtb3JlLgpGb3IgdGh1cyBzYWl0aCB0aGUgTG9yZCBHT0Q7IEJlaG9sZCwgSSB3aWxsIGRlbGl2ZXIgdGhlZSBpbnRvIHRoZSBoYW5kIG9mIHRoZW0gd2hvbSB0aG91IGhhdGVzdCwgaW50byB0aGUgaGFuZCBvZiB0aGVtIGZyb20gd2hvbSB0aHkgbWluZCBpcyBhbGllbmF0ZWQ6CkFuZCB0aGV5IHNoYWxsIGRlYWwgd2l0aCB0aGVlIGhhdGVmdWxseSwgYW5kIHNoYWxsIHRha2UgYXdheSBhbGwgdGh5IGxhYm91ciwgYW5kIHNoYWxsIGxlYXZlIHRoZWUgbmFrZWQgYW5kIGJhcmU6IGFuZCB0aGUgbmFrZWRuZXNzIG9mIHRoeSB3aG9yZWRvbXMgc2hhbGwgYmUgZGlzY292ZXJlZCwgYm90aCB0aHkgbGV3ZG5lc3MgYW5kIHRoeSB3aG9yZWRvbXMuCkkgd2lsbCBkbyB0aGVzZSB0aGluZ3MgdW50byB0aGVlLCBiZWNhdXNlIHRob3UgaGFzdCBnb25lIGEgd2hvcmluZyBhZnRlciB0aGUgaGVhdGhlbiwgYW5kIGJlY2F1c2UgdGhvdSBhcnQgcG9sbHV0ZWQgd2l0aCB0aGVpciBpZG9scy4KVGhvdSBoYXN0IHdhbGtlZCBpbiB0aGUgd2F5IG9mIHRoeSBzaXN0ZXI7IHRoZXJlZm9yZSB3aWxsIEkgZ2l2ZSBoZXIgY3VwIGludG8gdGhpbmUgaGFuZC4KVGh1cyBzYWl0aCB0aGUgTG9yZCBHT0Q7IFRob3Ugc2hhbHQgZHJpbmsgb2YgdGh5IHNpc3RlcidzIGN1cCBkZWVwIGFuZCBsYXJnZTogdGhvdSBzaGFsdCBiZSBsYXVnaGVkIHRvIHNjb3JuIGFuZCBoYWQgaW4gZGVyaXNpb247IGl0IGNvbnRhaW5ldGggbXVjaC4KVGhvdSBzaGFsdCBiZSBmaWxsZWQgd2l0aCBkcnVua2VubmVzcyBhbmQgc29ycm93LCB3aXRoIHRoZSBjdXAgb2YgYXN0b25pc2htZW50IGFuZCBkZXNvbGF0aW9uLCB3aXRoIHRoZSBjdXAgb2YgdGh5IHNpc3RlciBTYW1hcmlhLgpUaG91IHNoYWx0IGV2ZW4gZHJpbmsgaXQgYW5kIHN1Y2sgaXQgb3V0LCBhbmQgdGhvdSBzaGFsdCBicmVhayB0aGUgc2hlcmRzIHRoZXJlb2YsIGFuZCBwbHVjayBvZmYgdGhpbmUgb3duIGJyZWFzdHM6IGZvciBJIGhhdmUgc3Bva2VuIGl0LCBzYWl0aCB0aGUgTG9yZCBHT0QuClRoZXJlZm9yZSB0aHVzIHNhaXRoIHRoZSBMb3JkIEdPRDsgQmVjYXVzZSB0aG91IGhhc3QgZm9yZ290dGVuIG1lLCBhbmQgY2FzdCBtZSBiZWhpbmQgdGh5IGJhY2ssIHRoZXJlZm9yZSBiZWFyIHRob3UgYWxzbyB0aHkgbGV3ZG5lc3MgYW5kIHRoeSB3aG9yZWRvbXMuClRoZSBMT1JEIHNhaWQgbW9yZW92ZXIgdW50byBtZTsgU29uIG9mIG1hbiwgd2lsdCB0aG91IGp1ZGdlIEFob2xhaCBhbmQgQWhvbGliYWg/IHllYSwgZGVjbGFyZSB1bnRvIHRoZW0gdGhlaXIgYWJvbWluYXRpb25zOwpUaGF0IHRoZXkgaGF2ZSBjb21taXR0ZWQgYWR1bHRlcnksIGFuZCBibG9vZCBpcyBpbiB0aGVpciBoYW5kcywgYW5kIHdpdGggdGhlaXIgaWRvbHMgaGF2ZSB0aGV5IGNvbW1pdHRlZCBhZHVsdGVyeSwgYW5kIGhhdmUgYWxzbyBjYXVzZWQgdGhlaXIgc29ucywgd2hvbSB0aGV5IGJhcmUgdW50byBtZSwgdG8gcGFzcyBmb3IgdGhlbSB0aHJvdWdoIHRoZSBmaXJlLCB0byBkZXZvdXIgdGhlbS4KTW9yZW92ZXIgdGhpcyB0aGV5IGhhdmUgZG9uZSB1bnRvIG1lOiB0aGV5IGhhdmUgZGVmaWxlZCBteSBzYW5jdHVhcnkgaW4gdGhlIHNhbWUgZGF5LCBhbmQgaGF2ZSBwcm9mYW5lZCBteSBzYWJiYXRocy4KRm9yIHdoZW4gdGhleSBoYWQgc2xhaW4gdGhlaXIgY2hpbGRyZW4gdG8gdGhlaXIgaWRvbHMsIHRoZW4gdGhleSBjYW1lIHRoZSBzYW1lIGRheSBpbnRvIG15IHNhbmN0dWFyeSB0byBwcm9mYW5lIGl0OyBhbmQsIGxvLCB0aHVzIGhhdmUgdGhleSBkb25lIGluIHRoZSBtaWRzdCBvZiBtaW5lIGhvdXNlLgpBbmQgZnVydGhlcm1vcmUsIHRoYXQgeWUgaGF2ZSBzZW50IGZvciBtZW4gdG8gY29tZSBmcm9tIGZhciwgdW50byB3aG9tIGEgbWVzc2VuZ2VyIHdhcyBzZW50OyBhbmQsIGxvLCB0aGV5IGNhbWU6IGZvciB3aG9tIHRob3UgZGlkc3Qgd2FzaCB0aHlzZWxmLCBwYWludGVkc3QgdGh5IGV5ZXMsIGFuZCBkZWNrZWRzdCB0aHlzZWxmIHdpdGggb3JuYW1lbnRzLApBbmQgc2F0ZXN0IHVwb24gYSBzdGF0ZWx5IGJlZCwgYW5kIGEgdGFibGUgcHJlcGFyZWQgYmVmb3JlIGl0LCB3aGVyZXVwb24gdGhvdSBoYXN0IHNldCBtaW5lIGluY2Vuc2UgYW5kIG1pbmUgb2lsLgpBbmQgYSB2b2ljZSBvZiBhIG11bHRpdHVkZSBiZWluZyBhdCBlYXNlIHdhcyB3aXRoIGhlcjogYW5kIHdpdGggdGhlIG1lbiBvZiB0aGUgY29tbW9uIHNvcnQgd2VyZSBicm91Z2h0IFNhYmVhbnMgZnJvbSB0aGUgd2lsZGVybmVzcywgd2hpY2ggcHV0IGJyYWNlbGV0cyB1cG9uIHRoZWlyIGhhbmRzLCBhbmQgYmVhdXRpZnVsIGNyb3ducyB1cG9uIHRoZWlyIGhlYWRzLgpUaGVuIHNhaWQgSSB1bnRvIGhlciB0aGF0IHdhcyBvbGQgaW4gYWR1bHRlcmllcywgV2lsbCB0aGV5IG5vdyBjb21taXQgd2hvcmVkb21zIHdpdGggaGVyLCBhbmQgc2hlIHdpdGggdGhlbT8KWWV0IHRoZXkgd2VudCBpbiB1bnRvIGhlciwgYXMgdGhleSBnbyBpbiB1bnRvIGEgd29tYW4gdGhhdCBwbGF5ZXRoIHRoZSBoYXJsb3Q6IHNvIHdlbnQgdGhleSBpbiB1bnRvIEFob2xhaCBhbmQgdW50byBBaG9saWJhaCwgdGhlIGxld2Qgd29tZW4uCkFuZCB0aGUgcmlnaHRlb3VzIG1lbiwgdGhleSBzaGFsbCBqdWRnZSB0aGVtIGFmdGVyIHRoZSBtYW5uZXIgb2YgYWR1bHRlcmVzc2VzLCBhbmQgYWZ0ZXIgdGhlIG1hbm5lciBvZiB3b21lbiB0aGF0IHNoZWQgYmxvb2Q7IGJlY2F1c2UgdGhleSBhcmUgYWR1bHRlcmVzc2VzLCBhbmQgYmxvb2QgaXMgaW4gdGhlaXIgaGFuZHMuCkZvciB0aHVzIHNhaXRoIHRoZSBMb3JkIEdPRDsgSSB3aWxsIGJyaW5nIHVwIGEgY29tcGFueSB1cG9uIHRoZW0sIGFuZCB3aWxsIGdpdmUgdGhlbSB0byBiZSByZW1vdmVkIGFuZCBzcG9pbGVkLgpBbmQgdGhlIGNvbXBhbnkgc2hhbGwgc3RvbmUgdGhlbSB3aXRoIHN0b25lcywgYW5kIGRpc3BhdGNoIHRoZW0gd2l0aCB0aGVpciBzd29yZHM7IHRoZXkgc2hhbGwgc2xheSB0aGVpciBzb25zIGFuZCB0aGVpciBkYXVnaHRlcnMsIGFuZCBidXJuIHVwIHRoZWlyIGhvdXNlcyB3aXRoIGZpcmUuClRodXMgd2lsbCBJIGNhdXNlIGxld2RuZXNzIHRvIGNlYXNlIG91dCBvZiB0aGUgbGFuZCwgdGhhdCBhbGwgd29tZW4gbWF5IGJlIHRhdWdodCBub3QgdG8gZG8gYWZ0ZXIgeW91ciBsZXdkbmVzcy4KQW5kIHRoZXkgc2hhbGwgcmVjb21wZW5zZSB5b3VyIGxld2RuZXNzIHVwb24geW91LCBhbmQgeWUgc2hhbGwgYmVhciB0aGUgc2lucyBvZiB5b3VyIGlkb2xzOiBhbmQgeWUgc2hhbGwga25vdyB0aGF0IEkgYW0gdGhlIExvcmQgR09ELgpBZ2FpbiBpbiB0aGUgbmludGggeWVhciwgaW4gdGhlIHRlbnRoIG1vbnRoLCBpbiB0aGUgdGVudGggZGF5IG9mIHRoZSBtb250aCwgdGhlIHdvcmQgb2YgdGhlIExPUkQgY2FtZSB1bnRvIG1lLCBzYXlpbmcsClNvbiBvZiBtYW4sIHdyaXRlIHRoZWUgdGhlIG5hbWUgb2YgdGhlIGRheSwgZXZlbiBvZiB0aGlzIHNhbWUgZGF5OiB0aGUga2luZyBvZiBCYWJ5bG9uIHNldCBoaW1zZWxmIGFnYWluc3QgSmVydXNhbGVtIHRoaXMgc2FtZSBkYXkuCkFuZCB1dHRlciBhIHBhcmFibGUgdW50byB0aGUgcmViZWxsaW91cyBob3VzZSwgYW5kIHNheSB1bnRvIHRoZW0sIFRodXMgc2FpdGggdGhlIExvcmQgR09EOyBTZXQgb24gYSBwb3QsIHNldCBpdCBvbiwgYW5kIGFsc28gcG91ciB3YXRlciBpbnRvIGl0OgpHYXRoZXIgdGhlIHBpZWNlcyB0aGVyZW9mIGludG8gaXQsIGV2ZW4gZXZlcnkgZ29vZCBwaWVjZSwgdGhlIHRoaWdoLCBhbmQgdGhlIHNob3VsZGVyOyBmaWxsIGl0IHdpdGggdGhlIGNob2ljZSBib25lcy4KVGFrZSB0aGUgY2hvaWNlIG9mIHRoZSBmbG9jaywgYW5kIGJ1cm4gYWxzbyB0aGUgYm9uZXMgdW5kZXIgaXQsIGFuZCBtYWtlIGl0IGJvaWwgd2VsbCwgYW5kIGxldCB0aGVtIHNlZXRoZSB0aGUgYm9uZXMgb2YgaXQgdGhlcmVpbi4KV2hlcmVmb3JlIHRodXMgc2FpdGggdGhlIExvcmQgR09EOyBXb2UgdG8gdGhlIGJsb29keSBjaXR5LCB0byB0aGUgcG90IHdob3NlIHNjdW0gaXMgdGhlcmVpbiwgYW5kIHdob3NlIHNjdW0gaXMgbm90IGdvbmUgb3V0IG9mIGl0ISBicmluZyBpdCBvdXQgcGllY2UgYnkgcGllY2U7IGxldCBubyBsb3QgZmFsbCB1cG9uIGl0LgpGb3IgaGVyIGJsb29kIGlzIGluIHRoZSBtaWRzdCBvZiBoZXI7IHNoZSBzZXQgaXQgdXBvbiB0aGUgdG9wIG9mIGEgcm9jazsgc2hlIHBvdXJlZCBpdCBub3QgdXBvbiB0aGUgZ3JvdW5kLCB0byBjb3ZlciBpdCB3aXRoIGR1c3Q7ClRoYXQgaXQgbWlnaHQgY2F1c2UgZnVyeSB0byBjb21lIHVwIHRvIHRha2UgdmVuZ2VhbmNlOyBJIGhhdmUgc2V0IGhlciBibG9vZCB1cG9uIHRoZSB0b3Agb2YgYSByb2NrLCB0aGF0IGl0IHNob3VsZCBub3QgYmUgY292ZXJlZC4KVGhlcmVmb3JlIHRodXMgc2FpdGggdGhlIExvcmQgR09EOyBXb2UgdG8gdGhlIGJsb29keSBjaXR5ISBJIHdpbGwgZXZlbiBtYWtlIHRoZSBwaWxlIGZvciBmaXJlIGdyZWF0LgpIZWFwIG9uIHdvb2QsIGtpbmRsZSB0aGUgZmlyZSwgY29uc3VtZSB0aGUgZmxlc2gsIGFuZCBzcGljZSBpdCB3ZWxsLCBhbmQgbGV0IHRoZSBib25lcyBiZSBidXJuZWQuClRoZW4gc2V0IGl0IGVtcHR5IHVwb24gdGhlIGNvYWxzIHRoZXJlb2YsIHRoYXQgdGhlIGJyYXNzIG9mIGl0IG1heSBiZSBob3QsIGFuZCBtYXkgYnVybiwgYW5kIHRoYXQgdGhlIGZpbHRoaW5lc3Mgb2YgaXQgbWF5IGJlIG1vbHRlbiBpbiBpdCwgdGhhdCB0aGUgc2N1bSBvZiBpdCBtYXkgYmUgY29uc3VtZWQuClNoZSBoYXRoIHdlYXJpZWQgaGVyc2VsZiB3aXRoIGxpZXMsIGFuZCBoZXIgZ3JlYXQgc2N1bSB3ZW50IG5vdCBmb3J0aCBvdXQgb2YgaGVyOiBoZXIgc2N1bSBzaGFsbCBiZSBpbiB0aGUgZmlyZS4KSW4gdGh5IGZpbHRoaW5lc3MgaXMgbGV3ZG5lc3M6IGJlY2F1c2UgSSBoYXZlIHB1cmdlZCB0aGVlLCBhbmQgdGhvdSB3YXN0IG5vdCBwdXJnZWQsIHRob3Ugc2hhbHQgbm90IGJlIHB1cmdlZCBmcm9tIHRoeSBmaWx0aGluZXNzIGFueSBtb3JlLCB0aWxsIEkgaGF2ZSBjYXVzZWQgbXkgZnVyeSB0byByZXN0IHVwb24gdGhlZS4KSSB0aGUgTE9SRCBoYXZlIHNwb2tlbiBpdDogaXQgc2hhbGwgY29tZSB0byBwYXNzLCBhbmQgSSB3aWxsIGRvIGl0OyBJIHdpbGwgbm90IGdvIGJhY2ssIG5laXRoZXIgd2lsbCBJIHNwYXJlLCBuZWl0aGVyIHdpbGwgSSByZXBlbnQ7IGFjY29yZGluZyB0byB0aHkgd2F5cywgYW5kIGFjY29yZGluZyB0byB0aHkgZG9pbmdzLCBzaGFsbCB0aGV5IGp1ZGdlIHRoZWUsIHNhaXRoIHRoZSBMb3JkIEdPRC4KQWxzbyB0aGUgd29yZCBvZiB0aGUgTE9SRCBjYW1lIHVudG8gbWUsIHNheWluZywKU29uIG9mIG1hbiwgYmVob2xkLCBJIHRha2UgYXdheSBmcm9tIHRoZWUgdGhlIGRlc2lyZSBvZiB0aGluZSBleWVzIHdpdGggYSBzdHJva2U6IHlldCBuZWl0aGVyIHNoYWx0IHRob3UgbW91cm4gbm9yIHdlZXAsIG5laXRoZXIgc2hhbGwgdGh5IHRlYXJzIHJ1biBkb3duLgpGb3JiZWFyIHRvIGNyeSwgbWFrZSBubyBtb3VybmluZyBmb3IgdGhlIGRlYWQsIGJpbmQgdGhlIHRpcmUgb2YgdGhpbmUgaGVhZCB1cG9uIHRoZWUsIGFuZCBwdXQgb24gdGh5IHNob2VzIHVwb24gdGh5IGZlZXQsIGFuZCBjb3ZlciBub3QgdGh5IGxpcHMsIGFuZCBlYXQgbm90IHRoZSBicmVhZCBvZiBtZW4uClNvIEkgc3Bha2UgdW50byB0aGUgcGVvcGxlIGluIHRoZSBtb3JuaW5nOiBhbmQgYXQgZXZlbiBteSB3aWZlIGRpZWQ7IGFuZCBJIGRpZCBpbiB0aGUgbW9ybmluZyBhcyBJIHdhcyBjb21tYW5kZWQuCkFuZCB0aGUgcGVvcGxlIHNhaWQgdW50byBtZSwgV2lsdCB0aG91IG5vdCB0ZWxsIHVzIHdoYXQgdGhlc2UgdGhpbmdzIGFyZSB0byB1cywgdGhhdCB0aG91IGRvZXN0IHNvPwpUaGVuIEkgYW5zd2VyZWQgdGhlbSwgVGhlIHdvcmQgb2YgdGhlIExPUkQgY2FtZSB1bnRvIG1lLCBzYXlpbmcsClNwZWFrIHVudG8gdGhlIGhvdXNlIG9mIElzcmFlbCwgVGh1cyBzYWl0aCB0aGUgTG9yZCBHT0Q7IEJlaG9sZCwgSSB3aWxsIHByb2ZhbmUgbXkgc2FuY3R1YXJ5LCB0aGUgZXhjZWxsZW5jeSBvZiB5b3VyIHN0cmVuZ3RoLCB0aGUgZGVzaXJlIG9mIHlvdXIgZXllcywgYW5kIHRoYXQgd2hpY2ggeW91ciBzb3VsIHBpdGlldGg7IGFuZCB5b3VyIHNvbnMgYW5kIHlvdXIgZGF1Z2h0ZXJzIHdob20geWUgaGF2ZSBsZWZ0IHNoYWxsIGZhbGwgYnkgdGhlIHN3b3JkLgpBbmQgeWUgc2hhbGwgZG8gYXMgSSBoYXZlIGRvbmU6IHllIHNoYWxsIG5vdCBjb3ZlciB5b3VyIGxpcHMsIG5vciBlYXQgdGhlIGJyZWFkIG9mIG1lbi4KQW5kIHlvdXIgdGlyZXMgc2hhbGwgYmUgdXBvbiB5b3VyIGhlYWRzLCBhbmQgeW91ciBzaG9lcyB1cG9uIHlvdXIgZmVldDogeWUgc2hhbGwgbm90IG1vdXJuIG5vciB3ZWVwOyBidXQgeWUgc2hhbGwgcGluZSBhd2F5IGZvciB5b3VyIGluaXF1aXRpZXMsIGFuZCBtb3VybiBvbmUgdG93YXJkIGFub3RoZXIuClRodXMgRXpla2llbCBpcyB1bnRvIHlvdSBhIHNpZ246IGFjY29yZGluZyB0byBhbGwgdGhhdCBoZSBoYXRoIGRvbmUgc2hhbGwgeWUgZG86IGFuZCB3aGVuIHRoaXMgY29tZXRoLCB5ZSBzaGFsbCBrbm93IHRoYXQgSSBhbSB0aGUgTG9yZCBHT0QuCkFsc28sIHRob3Ugc29uIG9mIG1hbiwgc2hhbGwgaXQgbm90IGJlIGluIHRoZSBkYXkgd2hlbiBJIHRha2UgZnJvbSB0aGVtIHRoZWlyIHN0cmVuZ3RoLCB0aGUgam95IG9mIHRoZWlyIGdsb3J5LCB0aGUgZGVzaXJlIG9mIHRoZWlyIGV5ZXMsIGFuZCB0aGF0IHdoZXJldXBvbiB0aGV5IHNldCB0aGVpciBtaW5kcywgdGhlaXIgc29ucyBhbmQgdGhlaXIgZGF1Z2h0ZXJzLApUaGF0IGhlIHRoYXQgZXNjYXBldGggaW4gdGhhdCBkYXkgc2hhbGwgY29tZSB1bnRvIHRoZWUsIHRvIGNhdXNlIHRoZWUgdG8gaGVhciBpdCB3aXRoIHRoaW5lIGVhcnM/CkluIHRoYXQgZGF5IHNoYWxsIHRoeSBtb3V0aCBiZSBvcGVuZWQgdG8gaGltIHdoaWNoIGlzIGVzY2FwZWQsIGFuZCB0aG91IHNoYWx0IHNwZWFrLCBhbmQgYmUgbm8gbW9yZSBkdW1iOiBhbmQgdGhvdSBzaGFsdCBiZSBhIHNpZ24gdW50byB0aGVtOyBhbmQgdGhleSBzaGFsbCBrbm93IHRoYXQgSSBhbSB0aGUgTE9SRC4KVGhlIHdvcmQgb2YgdGhlIExPUkQgY2FtZSBhZ2FpbiB1bnRvIG1lLCBzYXlpbmcsClNvbiBvZiBtYW4sIHNldCB0aHkgZmFjZSBhZ2FpbnN0IHRoZSBBbW1vbml0ZXMsIGFuZCBwcm9waGVzeSBhZ2FpbnN0IHRoZW07CkFuZCBzYXkgdW50byB0aGUgQW1tb25pdGVzLCBIZWFyIHRoZSB3b3JkIG9mIHRoZSBMb3JkIEdPRDsgVGh1cyBzYWl0aCB0aGUgTG9yZCBHT0Q7IEJlY2F1c2UgdGhvdSBzYWlkc3QsIEFoYSwgYWdhaW5zdCBteSBzYW5jdHVhcnksIHdoZW4gaXQgd2FzIHByb2ZhbmVkOyBhbmQgYWdhaW5zdCB0aGUgbGFuZCBvZiBJc3JhZWwsIHdoZW4gaXQgd2FzIGRlc29sYXRlOyBhbmQgYWdhaW5zdCB0aGUgaG91c2Ugb2YgSnVkYWgsIHdoZW4gdGhleSB3ZW50IGludG8gY2FwdGl2aXR5OwpCZWhvbGQsIHRoZXJlZm9yZSBJIHdpbGwgZGVsaXZlciB0aGVlIHRvIHRoZSBtZW4gb2YgdGhlIGVhc3QgZm9yIGEgcG9zc2Vzc2lvbiwgYW5kIHRoZXkgc2hhbGwgc2V0IHRoZWlyIHBhbGFjZXMgaW4gdGhlZSwgYW5kIG1ha2UgdGhlaXIgZHdlbGxpbmdzIGluIHRoZWU6IHRoZXkgc2hhbGwgZWF0IHRoeSBmcnVpdCwgYW5kIHRoZXkgc2hhbGwgZHJpbmsgdGh5IG1pbGsuCkFuZCBJIHdpbGwgbWFrZSBSYWJiYWggYSBzdGFibGUgZm9yIGNhbWVscywgYW5kIHRoZSBBbW1vbml0ZXMgYSBjb3VjaGluZyBwbGFjZSBmb3IgZmxvY2tzOiBhbmQgeWUgc2hhbGwga25vdyB0aGF0IEkgYW0gdGhlIExPUkQuCkZvciB0aHVzIHNhaXRoIHRoZSBMb3JkIEdPRDsgQmVjYXVzZSB0aG91IGhhc3QgY2xhcHBlZCB0aGluZSBoYW5kcywgYW5kIHN0YW1wZWQgd2l0aCB0aGUgZmVldCwgYW5kIHJlam9pY2VkIGluIGhlYXJ0IHdpdGggYWxsIHRoeSBkZXNwaXRlIGFnYWluc3QgdGhlIGxhbmQgb2YgSXNyYWVsOwpCZWhvbGQsIHRoZXJlZm9yZSBJIHdpbGwgc3RyZXRjaCBvdXQgbWluZSBoYW5kIHVwb24gdGhlZSwgYW5kIHdpbGwgZGVsaXZlciB0aGVlIGZvciBhIHNwb2lsIHRvIHRoZSBoZWF0aGVuOyBhbmQgSSB3aWxsIGN1dCB0aGVlIG9mZiBmcm9tIHRoZSBwZW9wbGUsIGFuZCBJIHdpbGwgY2F1c2UgdGhlZSB0byBwZXJpc2ggb3V0IG9mIHRoZSBjb3VudHJpZXM6IEkgd2lsbCBkZXN0cm95IHRoZWU7IGFuZCB0aG91IHNoYWx0IGtub3cgdGhhdCBJIGFtIHRoZSBMT1JELgpUaHVzIHNhaXRoIHRoZSBMb3JkIEdPRDsgQmVjYXVzZSB0aGF0IE1vYWIgYW5kIFNlaXIgZG8gc2F5LCBCZWhvbGQsIHRoZSBob3VzZSBvZiBKdWRhaCBpcyBsaWtlIHVudG8gYWxsIHRoZSBoZWF0aGVuOwpUaGVyZWZvcmUsIGJlaG9sZCwgSSB3aWxsIG9wZW4gdGhlIHNpZGUgb2YgTW9hYiBmcm9tIHRoZSBjaXRpZXMsIGZyb20gaGlzIGNpdGllcyB3aGljaCBhcmUgb24gaGlzIGZyb250aWVycywgdGhlIGdsb3J5IG9mIHRoZSBjb3VudHJ5LCBCZXRoamVzaGltb3RoLCBCYWFsbWVvbiwgYW5kIEtpcmlhdGhhaW0sClVudG8gdGhlIG1lbiBvZiB0aGUgZWFzdCB3aXRoIHRoZSBBbW1vbml0ZXMsIGFuZCB3aWxsIGdpdmUgdGhlbSBpbiBwb3NzZXNzaW9uLCB0aGF0IHRoZSBBbW1vbml0ZXMgbWF5IG5vdCBiZSByZW1lbWJlcmVkIGFtb25nIHRoZSBuYXRpb25zLgpBbmQgSSB3aWxsIGV4ZWN1dGUganVkZ21lbnRzIHVwb24gTW9hYjsgYW5kIHRoZXkgc2hhbGwga25vdyB0aGF0IEkgYW0gdGhlIExPUkQuClRodXMgc2FpdGggdGhlIExvcmQgR09EOyBCZWNhdXNlIHRoYXQgRWRvbSBoYXRoIGRlYWx0IGFnYWluc3QgdGhlIGhvdXNlIG9mIEp1ZGFoIGJ5IHRha2luZyB2ZW5nZWFuY2UsIGFuZCBoYXRoIGdyZWF0bHkgb2ZmZW5kZWQsIGFuZCByZXZlbmdlZCBoaW1zZWxmIHVwb24gdGhlbTsKVGhlcmVmb3JlIHRodXMgc2FpdGggdGhlIExvcmQgR09EOyBJIHdpbGwgYWxzbyBzdHJldGNoIG91dCBtaW5lIGhhbmQgdXBvbiBFZG9tLCBhbmQgd2lsbCBjdXQgb2ZmIG1hbiBhbmQgYmVhc3QgZnJvbSBpdDsgYW5kIEkgd2lsbCBtYWtlIGl0IGRlc29sYXRlIGZyb20gVGVtYW47IGFuZCB0aGV5IG9mIERlZGFuIHNoYWxsIGZhbGwgYnkgdGhlIHN3b3JkLgpBbmQgSSB3aWxsIGxheSBteSB2ZW5nZWFuY2UgdXBvbiBFZG9tIGJ5IHRoZSBoYW5kIG9mIG15IHBlb3BsZSBJc3JhZWw6IGFuZCB0aGV5IHNoYWxsIGRvIGluIEVkb20gYWNjb3JkaW5nIHRvIG1pbmUgYW5nZXIgYW5kIGFjY29yZGluZyB0byBteSBmdXJ5OyBhbmQgdGhleSBzaGFsbCBrbm93IG15IHZlbmdlYW5jZSwgc2FpdGggdGhlIExvcmQgR09ELgpUaHVzIHNhaXRoIHRoZSBMb3JkIEdPRDsgQmVjYXVzZSB0aGUgUGhpbGlzdGluZXMgaGF2ZSBkZWFsdCBieSByZXZlbmdlLCBhbmQgaGF2ZSB0YWtlbiB2ZW5nZWFuY2Ugd2l0aCBhIGRlc3BpdGVmdWwgaGVhcnQsIHRvIGRlc3Ryb3kgaXQgZm9yIHRoZSBvbGQgaGF0cmVkOwpUaGVyZWZvcmUgdGh1cyBzYWl0aCB0aGUgTG9yZCBHT0Q7IEJlaG9sZCwgSSB3aWxsIHN0cmV0Y2ggb3V0IG1pbmUgaGFuZCB1cG9uIHRoZSBQaGlsaXN0aW5lcywgYW5kIEkgd2lsbCBjdXQgb2ZmIHRoZSBDaGVyZXRoaW1zLCBhbmQgZGVzdHJveSB0aGUgcmVtbmFudCBvZiB0aGUgc2VhIGNvYXN0LgpBbmQgSSB3aWxsIGV4ZWN1dGUgZ3JlYXQgdmVuZ2VhbmNlIHVwb24gdGhlbSB3aXRoIGZ1cmlvdXMgcmVidWtlczsgYW5kIHRoZXkgc2hhbGwga25vdyB0aGF0IEkgYW0gdGhlIExPUkQsIHdoZW4gSSBzaGFsbCBsYXkgbXkgdmVuZ2VhbmNlIHVwb24gdGhlbS4KQW5kIGl0IGNhbWUgdG8gcGFzcyBpbiB0aGUgZWxldmVudGggeWVhciwgaW4gdGhlIGZpcnN0IGRheSBvZiB0aGUgbW9udGgsIHRoYXQgdGhlIHdvcmQgb2YgdGhlIExPUkQgY2FtZSB1bnRvIG1lLCBzYXlpbmcsClNvbiBvZiBtYW4sIGJlY2F1c2UgdGhhdCBUeXJ1cyBoYXRoIHNhaWQgYWdhaW5zdCBKZXJ1c2FsZW0sIEFoYSwgc2hlIGlzIGJyb2tlbiB0aGF0IHdhcyB0aGUgZ2F0ZXMgb2YgdGhlIHBlb3BsZTogc2hlIGlzIHR1cm5lZCB1bnRvIG1lOiBJIHNoYWxsIGJlIHJlcGxlbmlzaGVkLCBub3cgc2hlIGlzIGxhaWQgd2FzdGU6ClRoZXJlZm9yZSB0aHVzIHNhaXRoIHRoZSBMb3JkIEdPRDsgQmVob2xkLCBJIGFtIGFnYWluc3QgdGhlZSwgTyBUeXJ1cywgYW5kIHdpbGwgY2F1c2UgbWFueSBuYXRpb25zIHRvIGNvbWUgdXAgYWdhaW5zdCB0aGVlLCBhcyB0aGUgc2VhIGNhdXNldGggaGlzIHdhdmVzIHRvIGNvbWUgdXAuCkFuZCB0aGV5IHNoYWxsIGRlc3Ryb3kgdGhlIHdhbGxzIG9mIFR5cnVzLCBhbmQgYnJlYWsgZG93biBoZXIgdG93ZXJzOiBJIHdpbGwgYWxzbyBzY3JhcGUgaGVyIGR1c3QgZnJvbSBoZXIsIGFuZCBtYWtlIGhlciBsaWtlIHRoZSB0b3Agb2YgYSByb2NrLgpJdCBzaGFsbCBiZSBhIHBsYWNlIGZvciB0aGUgc3ByZWFkaW5nIG9mIG5ldHMgaW4gdGhlIG1pZHN0IG9mIHRoZSBzZWE6IGZvciBJIGhhdmUgc3Bva2VuIGl0LCBzYWl0aCB0aGUgTG9yZCBHT0Q6IGFuZCBpdCBzaGFsbCBiZWNvbWUgYSBzcG9pbCB0byB0aGUgbmF0aW9ucy4KQW5kIGhlciBkYXVnaHRlcnMgd2hpY2ggYXJlIGluIHRoZSBmaWVsZCBzaGFsbCBiZSBzbGFpbiBieSB0aGUgc3dvcmQ7IGFuZCB0aGV5IHNoYWxsIGtub3cgdGhhdCBJIGFtIHRoZSBMT1JELgpGb3IgdGh1cyBzYWl0aCB0aGUgTG9yZCBHT0Q7IEJlaG9sZCwgSSB3aWxsIGJyaW5nIHVwb24gVHlydXMgTmVidWNoYWRyZXp6YXIga2luZyBvZiBCYWJ5bG9uLCBhIGtpbmcgb2Yga2luZ3MsIGZyb20gdGhlIG5vcnRoLCB3aXRoIGhvcnNlcywgYW5kIHdpdGggY2hhcmlvdHMsIGFuZCB3aXRoIGhvcnNlbWVuLCBhbmQgY29tcGFuaWVzLCBhbmQgbXVjaCBwZW9wbGUuCkhlIHNoYWxsIHNsYXkgd2l0aCB0aGUgc3dvcmQgdGh5IGRhdWdodGVycyBpbiB0aGUgZmllbGQ6IGFuZCBoZSBzaGFsbCBtYWtlIGEgZm9ydCBhZ2FpbnN0IHRoZWUsIGFuZCBjYXN0IGEgbW91bnQgYWdhaW5zdCB0aGVlLCBhbmQgbGlmdCB1cCB0aGUgYnVja2xlciBhZ2FpbnN0IHRoZWUuCkFuZCBoZSBzaGFsbCBzZXQgZW5naW5lcyBvZiB3YXIgYWdhaW5zdCB0aHkgd2FsbHMsIGFuZCB3aXRoIGhpcyBheGVzIGhlIHNoYWxsIGJyZWFrIGRvd24gdGh5IHRvd2Vycy4KQnkgcmVhc29uIG9mIHRoZSBhYnVuZGFuY2Ugb2YgaGlzIGhvcnNlcyB0aGVpciBkdXN0IHNoYWxsIGNvdmVyIHRoZWU6IHRoeSB3YWxscyBzaGFsbCBzaGFrZSBhdCB0aGUgbm9pc2Ugb2YgdGhlIGhvcnNlbWVuLCBhbmQgb2YgdGhlIHdoZWVscywgYW5kIG9mIHRoZSBjaGFyaW90cywgd2hlbiBoZSBzaGFsbCBlbnRlciBpbnRvIHRoeSBnYXRlcywgYXMgbWVuIGVudGVyIGludG8gYSBjaXR5IHdoZXJlaW4gaXMgbWFkZSBhIGJyZWFjaC4KV2l0aCB0aGUgaG9vZnMgb2YgaGlzIGhvcnNlcyBzaGFsbCBoZSB0cmVhZCBkb3duIGFsbCB0aHkgc3RyZWV0czogaGUgc2hhbGwgc2xheSB0aHkgcGVvcGxlIGJ5IHRoZSBzd29yZCwgYW5kIHRoeSBzdHJvbmcgZ2Fycmlzb25zIHNoYWxsIGdvIGRvd24gdG8gdGhlIGdyb3VuZC4KQW5kIHRoZXkgc2hhbGwgbWFrZSBhIHNwb2lsIG9mIHRoeSByaWNoZXMsIGFuZCBtYWtlIGEgcHJleSBvZiB0aHkgbWVyY2hhbmRpc2U6IGFuZCB0aGV5IHNoYWxsIGJyZWFrIGRvd24gdGh5IHdhbGxzLCBhbmQgZGVzdHJveSB0aHkgcGxlYXNhbnQgaG91c2VzOiBhbmQgdGhleSBzaGFsbCBsYXkgdGh5IHN0b25lcyBhbmQgdGh5IHRpbWJlciBhbmQgdGh5IGR1c3QgaW4gdGhlIG1pZHN0IG9mIHRoZSB3YXRlci4KQW5kIEkgd2lsbCBjYXVzZSB0aGUgbm9pc2Ugb2YgdGh5IHNvbmdzIHRvIGNlYXNlOyBhbmQgdGhlIHNvdW5kIG9mIHRoeSBoYXJwcyBzaGFsbCBiZSBubyBtb3JlIGhlYXJkLgpBbmQgSSB3aWxsIG1ha2UgdGhlZSBsaWtlIHRoZSB0b3Agb2YgYSByb2NrOiB0aG91IHNoYWx0IGJlIGEgcGxhY2UgdG8gc3ByZWFkIG5ldHMgdXBvbjsgdGhvdSBzaGFsdCBiZSBidWlsdCBubyBtb3JlOiBmb3IgSSB0aGUgTE9SRCBoYXZlIHNwb2tlbiBpdCwgc2FpdGggdGhlIExvcmQgR09ELgpUaHVzIHNhaXRoIHRoZSBMb3JkIEdPRCB0byBUeXJ1czsgU2hhbGwgbm90IHRoZSBpc2xlcyBzaGFrZSBhdCB0aGUgc291bmQgb2YgdGh5IGZhbGwsIHdoZW4gdGhlIHdvdW5kZWQgY3J5LCB3aGVuIHRoZSBzbGF1Z2h0ZXIgaXMgbWFkZSBpbiB0aGUgbWlkc3Qgb2YgdGhlZT8KVGhlbiBhbGwgdGhlIHByaW5jZXMgb2YgdGhlIHNlYSBzaGFsbCBjb21lIGRvd24gZnJvbSB0aGVpciB0aHJvbmVzLCBhbmQgbGF5IGF3YXkgdGhlaXIgcm9iZXMsIGFuZCBwdXQgb2ZmIHRoZWlyIGJyb2lkZXJlZCBnYXJtZW50czogdGhleSBzaGFsbCBjbG90aGUgdGhlbXNlbHZlcyB3aXRoIHRyZW1ibGluZzsgdGhleSBzaGFsbCBzaXQgdXBvbiB0aGUgZ3JvdW5kLCBhbmQgc2hhbGwgdHJlbWJsZSBhdCBldmVyeSBtb21lbnQsIGFuZCBiZSBhc3RvbmlzaGVkIGF0IHRoZWUuCkFuZCB0aGV5IHNoYWxsIHRha2UgdXAgYSBsYW1lbnRhdGlvbiBmb3IgdGhlZSwgYW5kIHNheSB0byB0aGVlLCBIb3cgYXJ0IHRob3UgZGVzdHJveWVkLCB0aGF0IHdhc3QgaW5oYWJpdGVkIG9mIHNlYWZhcmluZyBtZW4sIHRoZSByZW5vd25lZCBjaXR5LCB3aGljaCB3YXN0IHN0cm9uZyBpbiB0aGUgc2VhLCBzaGUgYW5kIGhlciBpbmhhYml0YW50cywgd2hpY2ggY2F1c2UgdGhlaXIgdGVycm9yIHRvIGJlIG9uIGFsbCB0aGF0IGhhdW50IGl0IQpOb3cgc2hhbGwgdGhlIGlzbGVzIHRyZW1ibGUgaW4gdGhlIGRheSBvZiB0aHkgZmFsbDsgeWVhLCB0aGUgaXNsZXMgdGhhdCBhcmUgaW4gdGhlIHNlYSBzaGFsbCBiZSB0cm91YmxlZCBhdCB0aHkgZGVwYXJ0dXJlLgpGb3IgdGh1cyBzYWl0aCB0aGUgTG9yZCBHT0Q7IFdoZW4gSSBzaGFsbCBtYWtlIHRoZWUgYSBkZXNvbGF0ZSBjaXR5LCBsaWtlIHRoZSBjaXRpZXMgdGhhdCBhcmUgbm90IGluaGFiaXRlZDsgd2hlbiBJIHNoYWxsIGJyaW5nIHVwIHRoZSBkZWVwIHVwb24gdGhlZSwgYW5kIGdyZWF0IHdhdGVycyBzaGFsbCBjb3ZlciB0aGVlOwpXaGVuIEkgc2hhbGwgYnJpbmcgdGhlZSBkb3duIHdpdGggdGhlbSB0aGF0IGRlc2NlbmQgaW50byB0aGUgcGl0LCB3aXRoIHRoZSBwZW9wbGUgb2Ygb2xkIHRpbWUsIGFuZCBzaGFsbCBzZXQgdGhlZSBpbiB0aGUgbG93IHBhcnRzIG9mIHRoZSBlYXJ0aCwgaW4gcGxhY2VzIGRlc29sYXRlIG9mIG9sZCwgd2l0aCB0aGVtIHRoYXQgZ28gZG93biB0byB0aGUgcGl0LCB0aGF0IHRob3UgYmUgbm90IGluaGFiaXRlZDsgYW5kIEkgc2hhbGwgc2V0IGdsb3J5IGluIHRoZSBsYW5kIG9mIHRoZSBsaXZpbmc7Ckkgd2lsbCBtYWtlIHRoZWUgYSB0ZXJyb3IsIGFuZCB0aG91IHNoYWx0IGJlIG5vIG1vcmU6IHRob3VnaCB0aG91IGJlIHNvdWdodCBmb3IsIHlldCBzaGFsdCB0aG91IG5ldmVyIGJlIGZvdW5kIGFnYWluLCBzYWl0aCB0aGUgTG9yZCBHT0QuClRoZSB3b3JkIG9mIHRoZSBMT1JEIGNhbWUgYWdhaW4gdW50byBtZSwgc2F5aW5nLApOb3csIHRob3Ugc29uIG9mIG1hbiwgdGFrZSB1cCBhIGxhbWVudGF0aW9uIGZvciBUeXJ1czsKQW5kIHNheSB1bnRvIFR5cnVzLCBPIHRob3UgdGhhdCBhcnQgc2l0dWF0ZSBhdCB0aGUgZW50cnkgb2YgdGhlIHNlYSwgd2hpY2ggYXJ0IGEgbWVyY2hhbnQgb2YgdGhlIHBlb3BsZSBmb3IgbWFueSBpc2xlcywgVGh1cyBzYWl0aCB0aGUgTG9yZCBHT0Q7IE8gVHlydXMsIHRob3UgaGFzdCBzYWlkLCBJIGFtIG9mIHBlcmZlY3QgYmVhdXR5LgpUaHkgYm9yZGVycyBhcmUgaW4gdGhlIG1pZHN0IG9mIHRoZSBzZWFzLCB0aHkgYnVpbGRlcnMgaGF2ZSBwZXJmZWN0ZWQgdGh5IGJlYXV0eS4KVGhleSBoYXZlIG1hZGUgYWxsIHRoeSBzaGlwIGJvYXJkcyBvZiBmaXIgdHJlZXMgb2YgU2VuaXI6IHRoZXkgaGF2ZSB0YWtlbiBjZWRhcnMgZnJvbSBMZWJhbm9uIHRvIG1ha2UgbWFzdHMgZm9yIHRoZWUuCk9mIHRoZSBvYWtzIG9mIEJhc2hhbiBoYXZlIHRoZXkgbWFkZSB0aGluZSBvYXJzOyB0aGUgY29tcGFueSBvZiB0aGUgQXNodXJpdGVzIGhhdmUgbWFkZSB0aHkgYmVuY2hlcyBvZiBpdm9yeSwgYnJvdWdodCBvdXQgb2YgdGhlIGlzbGVzIG9mIENoaXR0aW0uCkZpbmUgbGluZW4gd2l0aCBicm9pZGVyZWQgd29yayBmcm9tIEVneXB0IHdhcyB0aGF0IHdoaWNoIHRob3Ugc3ByZWFkZXN0IGZvcnRoIHRvIGJlIHRoeSBzYWlsOyBibHVlIGFuZCBwdXJwbGUgZnJvbSB0aGUgaXNsZXMgb2YgRWxpc2hhaCB3YXMgdGhhdCB3aGljaCBjb3ZlcmVkIHRoZWUuClRoZSBpbmhhYml0YW50cyBvZiBaaWRvbiBhbmQgQXJ2YWQgd2VyZSB0aHkgbWFyaW5lcnM6IHRoeSB3aXNlIG1lbiwgTyBUeXJ1cywgdGhhdCB3ZXJlIGluIHRoZWUsIHdlcmUgdGh5IHBpbG90cy4KVGhlIGFuY2llbnRzIG9mIEdlYmFsIGFuZCB0aGUgd2lzZSBtZW4gdGhlcmVvZiB3ZXJlIGluIHRoZWUgdGh5IGNhbGtlcnM6IGFsbCB0aGUgc2hpcHMgb2YgdGhlIHNlYSB3aXRoIHRoZWlyIG1hcmluZXJzIHdlcmUgaW4gdGhlZSB0byBvY2N1cHkgdGh5IG1lcmNoYW5kaXNlLgpUaGV5IG9mIFBlcnNpYSBhbmQgb2YgTHVkIGFuZCBvZiBQaHV0IHdlcmUgaW4gdGhpbmUgYXJteSwgdGh5IG1lbiBvZiB3YXI6IHRoZXkgaGFuZ2VkIHRoZSBzaGllbGQgYW5kIGhlbG1ldCBpbiB0aGVlOyB0aGV5IHNldCBmb3J0aCB0aHkgY29tZWxpbmVzcy4KVGhlIG1lbiBvZiBBcnZhZCB3aXRoIHRoaW5lIGFybXkgd2VyZSB1cG9uIHRoeSB3YWxscyByb3VuZCBhYm91dCwgYW5kIHRoZSBHYW1tYWRpbXMgd2VyZSBpbiB0aHkgdG93ZXJzOiB0aGV5IGhhbmdlZCB0aGVpciBzaGllbGRzIHVwb24gdGh5IHdhbGxzIHJvdW5kIGFib3V0OyB0aGV5IGhhdmUgbWFkZSB0aHkgYmVhdXR5IHBlcmZlY3QuClRhcnNoaXNoIHdhcyB0aHkgbWVyY2hhbnQgYnkgcmVhc29uIG9mIHRoZSBtdWx0aXR1ZGUgb2YgYWxsIGtpbmQgb2YgcmljaGVzOyB3aXRoIHNpbHZlciwgaXJvbiwgdGluLCBhbmQgbGVhZCwgdGhleSB0cmFkZWQgaW4gdGh5IGZhaXJzLgpKYXZhbiwgVHViYWwsIGFuZCBNZXNoZWNoLCB0aGV5IHdlcmUgdGh5IG1lcmNoYW50czogdGhleSB0cmFkZWQgdGhlIHBlcnNvbnMgb2YgbWVuIGFuZCB2ZXNzZWxzIG9mIGJyYXNzIGluIHRoeSBtYXJrZXQuClRoZXkgb2YgdGhlIGhvdXNlIG9mIFRvZ2FybWFoIHRyYWRlZCBpbiB0aHkgZmFpcnMgd2l0aCBob3JzZXMgYW5kIGhvcnNlbWVuIGFuZCBtdWxlcy4KVGhlIG1lbiBvZiBEZWRhbiB3ZXJlIHRoeSBtZXJjaGFudHM7IG1hbnkgaXNsZXMgd2VyZSB0aGUgbWVyY2hhbmRpc2Ugb2YgdGhpbmUgaGFuZDogdGhleSBicm91Z2h0IHRoZWUgZm9yIGEgcHJlc2VudCBob3JucyBvZiBpdm9yeSBhbmQgZWJvbnkuClN5cmlhIHdhcyB0aHkgbWVyY2hhbnQgYnkgcmVhc29uIG9mIHRoZSBtdWx0aXR1ZGUgb2YgdGhlIHdhcmVzIG9mIHRoeSBtYWtpbmc6IHRoZXkgb2NjdXBpZWQgaW4gdGh5IGZhaXJzIHdpdGggZW1lcmFsZHMsIHB1cnBsZSwgYW5kIGJyb2lkZXJlZCB3b3JrLCBhbmQgZmluZSBsaW5lbiwgYW5kIGNvcmFsLCBhbmQgYWdhdGUuCkp1ZGFoLCBhbmQgdGhlIGxhbmQgb2YgSXNyYWVsLCB0aGV5IHdlcmUgdGh5IG1lcmNoYW50czogdGhleSB0cmFkZWQgaW4gdGh5IG1hcmtldCB3aGVhdCBvZiBNaW5uaXRoLCBhbmQgUGFubmFnLCBhbmQgaG9uZXksIGFuZCBvaWwsIGFuZCBiYWxtLgpEYW1hc2N1cyB3YXMgdGh5IG1lcmNoYW50IGluIHRoZSBtdWx0aXR1ZGUgb2YgdGhlIHdhcmVzIG9mIHRoeSBtYWtpbmcsIGZvciB0aGUgbXVsdGl0dWRlIG9mIGFsbCByaWNoZXM7IGluIHRoZSB3aW5lIG9mIEhlbGJvbiwgYW5kIHdoaXRlIHdvb2wuCkRhbiBhbHNvIGFuZCBKYXZhbiBnb2luZyB0byBhbmQgZnJvIG9jY3VwaWVkIGluIHRoeSBmYWlyczogYnJpZ2h0IGlyb24sIGNhc3NpYSwgYW5kIGNhbGFtdXMsIHdlcmUgaW4gdGh5IG1hcmtldC4KRGVkYW4gd2FzIHRoeSBtZXJjaGFudCBpbiBwcmVjaW91cyBjbG90aGVzIGZvciBjaGFyaW90cy4KQXJhYmlhLCBhbmQgYWxsIHRoZSBwcmluY2VzIG9mIEtlZGFyLCB0aGV5IG9jY3VwaWVkIHdpdGggdGhlZSBpbiBsYW1icywgYW5kIHJhbXMsIGFuZCBnb2F0czogaW4gdGhlc2Ugd2VyZSB0aGV5IHRoeSBtZXJjaGFudHMuClRoZSBtZXJjaGFudHMgb2YgU2hlYmEgYW5kIFJhYW1haCwgdGhleSB3ZXJlIHRoeSBtZXJjaGFudHM6IHRoZXkgb2NjdXBpZWQgaW4gdGh5IGZhaXJzIHdpdGggY2hpZWYgb2YgYWxsIHNwaWNlcywgYW5kIHdpdGggYWxsIHByZWNpb3VzIHN0b25lcywgYW5kIGdvbGQuCkhhcmFuLCBhbmQgQ2FubmVoLCBhbmQgRWRlbiwgdGhlIG1lcmNoYW50cyBvZiBTaGViYSwgQXNzaHVyLCBhbmQgQ2hpbG1hZCwgd2VyZSB0aHkgbWVyY2hhbnRzLgpUaGVzZSB3ZXJlIHRoeSBtZXJjaGFudHMgaW4gYWxsIHNvcnRzIG9mIHRoaW5ncywgaW4gYmx1ZSBjbG90aGVzLCBhbmQgYnJvaWRlcmVkIHdvcmssIGFuZCBpbiBjaGVzdHMgb2YgcmljaCBhcHBhcmVsLCBib3VuZCB3aXRoIGNvcmRzLCBhbmQgbWFkZSBvZiBjZWRhciwgYW1vbmcgdGh5IG1lcmNoYW5kaXNlLgpUaGUgc2hpcHMgb2YgVGFyc2hpc2ggZGlkIHNpbmcgb2YgdGhlZSBpbiB0aHkgbWFya2V0OiBhbmQgdGhvdSB3YXN0IHJlcGxlbmlzaGVkLCBhbmQgbWFkZSB2ZXJ5IGdsb3Jpb3VzIGluIHRoZSBtaWRzdCBvZiB0aGUgc2Vhcy4KVGh5IHJvd2VycyBoYXZlIGJyb3VnaHQgdGhlZSBpbnRvIGdyZWF0IHdhdGVyczogdGhlIGVhc3Qgd2luZCBoYXRoIGJyb2tlbiB0aGVlIGluIHRoZSBtaWRzdCBvZiB0aGUgc2Vhcy4KVGh5IHJpY2hlcywgYW5kIHRoeSBmYWlycywgdGh5IG1lcmNoYW5kaXNlLCB0aHkgbWFyaW5lcnMsIGFuZCB0aHkgcGlsb3RzLCB0aHkgY2Fsa2VycywgYW5kIHRoZSBvY2N1cGllcnMgb2YgdGh5IG1lcmNoYW5kaXNlLCBhbmQgYWxsIHRoeSBtZW4gb2Ygd2FyLCB0aGF0IGFyZSBpbiB0aGVlLCBhbmQgaW4gYWxsIHRoeSBjb21wYW55IHdoaWNoIGlzIGluIHRoZSBtaWRzdCBvZiB0aGVlLCBzaGFsbCBmYWxsIGludG8gdGhlIG1pZHN0IG9mIHRoZSBzZWFzIGluIHRoZSBkYXkgb2YgdGh5IHJ1aW4uClRoZSBzdWJ1cmJzIHNoYWxsIHNoYWtlIGF0IHRoZSBzb3VuZCBvZiB0aGUgY3J5IG9mIHRoeSBwaWxvdHMuCkFuZCBhbGwgdGhhdCBoYW5kbGUgdGhlIG9hciwgdGhlIG1hcmluZXJzLCBhbmQgYWxsIHRoZSBwaWxvdHMgb2YgdGhlIHNlYSwgc2hhbGwgY29tZSBkb3duIGZyb20gdGhlaXIgc2hpcHMsIHRoZXkgc2hhbGwgc3RhbmQgdXBvbiB0aGUgbGFuZDsKQW5kIHNoYWxsIGNhdXNlIHRoZWlyIHZvaWNlIHRvIGJlIGhlYXJkIGFnYWluc3QgdGhlZSwgYW5kIHNoYWxsIGNyeSBiaXR0ZXJseSwgYW5kIHNoYWxsIGNhc3QgdXAgZHVzdCB1cG9uIHRoZWlyIGhlYWRzLCB0aGV5IHNoYWxsIHdhbGxvdyB0aGVtc2VsdmVzIGluIHRoZSBhc2hlczoKQW5kIHRoZXkgc2hhbGwgbWFrZSB0aGVtc2VsdmVzIHV0dGVybHkgYmFsZCBmb3IgdGhlZSwgYW5kIGdpcmQgdGhlbSB3aXRoIHNhY2tjbG90aCwgYW5kIHRoZXkgc2hhbGwgd2VlcCBmb3IgdGhlZSB3aXRoIGJpdHRlcm5lc3Mgb2YgaGVhcnQgYW5kIGJpdHRlciB3YWlsaW5nLgpBbmQgaW4gdGhlaXIgd2FpbGluZyB0aGV5IHNoYWxsIHRha2UgdXAgYSBsYW1lbnRhdGlvbiBmb3IgdGhlZSwgYW5kIGxhbWVudCBvdmVyIHRoZWUsIHNheWluZywgV2hhdCBjaXR5IGlzIGxpa2UgVHlydXMsIGxpa2UgdGhlIGRlc3Ryb3llZCBpbiB0aGUgbWlkc3Qgb2YgdGhlIHNlYT8KV2hlbiB0aHkgd2FyZXMgd2VudCBmb3J0aCBvdXQgb2YgdGhlIHNlYXMsIHRob3UgZmlsbGVkc3QgbWFueSBwZW9wbGU7IHRob3UgZGlkc3QgZW5yaWNoIHRoZSBraW5ncyBvZiB0aGUgZWFydGggd2l0aCB0aGUgbXVsdGl0dWRlIG9mIHRoeSByaWNoZXMgYW5kIG9mIHRoeSBtZXJjaGFuZGlzZS4KSW4gdGhlIHRpbWUgd2hlbiB0aG91IHNoYWx0IGJlIGJyb2tlbiBieSB0aGUgc2VhcyBpbiB0aGUgZGVwdGhzIG9mIHRoZSB3YXRlcnMgdGh5IG1lcmNoYW5kaXNlIGFuZCBhbGwgdGh5IGNvbXBhbnkgaW4gdGhlIG1pZHN0IG9mIHRoZWUgc2hhbGwgZmFsbC4KQWxsIHRoZSBpbmhhYml0YW50cyBvZiB0aGUgaXNsZXMgc2hhbGwgYmUgYXN0b25pc2hlZCBhdCB0aGVlLCBhbmQgdGhlaXIga2luZ3Mgc2hhbGwgYmUgc29yZSBhZnJhaWQsIHRoZXkgc2hhbGwgYmUgdHJvdWJsZWQgaW4gdGhlaXIgY291bnRlbmFuY2UuClRoZSBtZXJjaGFudHMgYW1vbmcgdGhlIHBlb3BsZSBzaGFsbCBoaXNzIGF0IHRoZWU7IHRob3Ugc2hhbHQgYmUgYSB0ZXJyb3IsIGFuZCBuZXZlciBzaGFsdCBiZSBhbnkgbW9yZS4KVGhlIHdvcmQgb2YgdGhlIExPUkQgY2FtZSBhZ2FpbiB1bnRvIG1lLCBzYXlpbmcsClNvbiBvZiBtYW4sIHNheSB1bnRvIHRoZSBwcmluY2Ugb2YgVHlydXMsIFRodXMgc2FpdGggdGhlIExvcmQgR09EOyBCZWNhdXNlIHRoaW5lIGhlYXJ0IGlzIGxpZnRlZCB1cCwgYW5kIHRob3UgaGFzdCBzYWlkLCBJIGFtIGEgR29kLCBJIHNpdCBpbiB0aGUgc2VhdCBvZiBHb2QsIGluIHRoZSBtaWRzdCBvZiB0aGUgc2VhczsgeWV0IHRob3UgYXJ0IGEgbWFuLCBhbmQgbm90IEdvZCwgdGhvdWdoIHRob3Ugc2V0IHRoaW5lIGhlYXJ0IGFzIHRoZSBoZWFydCBvZiBHb2Q6CkJlaG9sZCwgdGhvdSBhcnQgd2lzZXIgdGhhbiBEYW5pZWw7IHRoZXJlIGlzIG5vIHNlY3JldCB0aGF0IHRoZXkgY2FuIGhpZGUgZnJvbSB0aGVlOgpXaXRoIHRoeSB3aXNkb20gYW5kIHdpdGggdGhpbmUgdW5kZXJzdGFuZGluZyB0aG91IGhhc3QgZ290dGVuIHRoZWUgcmljaGVzLCBhbmQgaGFzdCBnb3R0ZW4gZ29sZCBhbmQgc2lsdmVyIGludG8gdGh5IHRyZWFzdXJlczoKQnkgdGh5IGdyZWF0IHdpc2RvbSBhbmQgYnkgdGh5IHRyYWZmaWNrIGhhc3QgdGhvdSBpbmNyZWFzZWQgdGh5IHJpY2hlcywgYW5kIHRoaW5lIGhlYXJ0IGlzIGxpZnRlZCB1cCBiZWNhdXNlIG9mIHRoeSByaWNoZXM6ClRoZXJlZm9yZSB0aHVzIHNhaXRoIHRoZSBMb3JkIEdPRDsgQmVjYXVzZSB0aG91IGhhc3Qgc2V0IHRoaW5lIGhlYXJ0IGFzIHRoZSBoZWFydCBvZiBHb2Q7CkJlaG9sZCwgdGhlcmVmb3JlIEkgd2lsbCBicmluZyBzdHJhbmdlcnMgdXBvbiB0aGVlLCB0aGUgdGVycmlibGUgb2YgdGhlIG5hdGlvbnM6IGFuZCB0aGV5IHNoYWxsIGRyYXcgdGhlaXIgc3dvcmRzIGFnYWluc3QgdGhlIGJlYXV0eSBvZiB0aHkgd2lzZG9tLCBhbmQgdGhleSBzaGFsbCBkZWZpbGUgdGh5IGJyaWdodG5lc3MuClRoZXkgc2hhbGwgYnJpbmcgdGhlZSBkb3duIHRvIHRoZSBwaXQsIGFuZCB0aG91IHNoYWx0IGRpZSB0aGUgZGVhdGhzIG9mIHRoZW0gdGhhdCBhcmUgc2xhaW4gaW4gdGhlIG1pZHN0IG9mIHRoZSBzZWFzLgpXaWx0IHRob3UgeWV0IHNheSBiZWZvcmUgaGltIHRoYXQgc2xheWV0aCB0aGVlLCBJIGFtIEdvZD8gYnV0IHRob3Ugc2hhbHQgYmUgYSBtYW4sIGFuZCBubyBHb2QsIGluIHRoZSBoYW5kIG9mIGhpbSB0aGF0IHNsYXlldGggdGhlZS4KVGhvdSBzaGFsdCBkaWUgdGhlIGRlYXRocyBvZiB0aGUgdW5jaXJjdW1jaXNlZCBieSB0aGUgaGFuZCBvZiBzdHJhbmdlcnM6IGZvciBJIGhhdmUgc3Bva2VuIGl0LCBzYWl0aCB0aGUgTG9yZCBHT0QuCk1vcmVvdmVyIHRoZSB3b3JkIG9mIHRoZSBMT1JEIGNhbWUgdW50byBtZSwgc2F5aW5nLApTb24gb2YgbWFuLCB0YWtlIHVwIGEgbGFtZW50YXRpb24gdXBvbiB0aGUga2luZyBvZiBUeXJ1cywgYW5kIHNheSB1bnRvIGhpbSwgVGh1cyBzYWl0aCB0aGUgTG9yZCBHT0Q7IFRob3Ugc2VhbGVzdCB1cCB0aGUgc3VtLCBmdWxsIG9mIHdpc2RvbSwgYW5kIHBlcmZlY3QgaW4gYmVhdXR5LgpUaG91IGhhc3QgYmVlbiBpbiBFZGVuIHRoZSBnYXJkZW4gb2YgR29kOyBldmVyeSBwcmVjaW91cyBzdG9uZSB3YXMgdGh5IGNvdmVyaW5nLCB0aGUgc2FyZGl1cywgdG9wYXosIGFuZCB0aGUgZGlhbW9uZCwgdGhlIGJlcnlsLCB0aGUgb255eCwgYW5kIHRoZSBqYXNwZXIsIHRoZSBzYXBwaGlyZSwgdGhlIGVtZXJhbGQsIGFuZCB0aGUgY2FyYnVuY2xlLCBhbmQgZ29sZDogdGhlIHdvcmttYW5zaGlwIG9mIHRoeSB0YWJyZXRzIGFuZCBvZiB0aHkgcGlwZXMgd2FzIHByZXBhcmVkIGluIHRoZWUgaW4gdGhlIGRheSB0aGF0IHRob3Ugd2FzdCBjcmVhdGVkLgpUaG91IGFydCB0aGUgYW5vaW50ZWQgY2hlcnViIHRoYXQgY292ZXJldGg7IGFuZCBJIGhhdmUgc2V0IHRoZWUgc286IHRob3Ugd2FzdCB1cG9uIHRoZSBob2x5IG1vdW50YWluIG9mIEdvZDsgdGhvdSBoYXN0IHdhbGtlZCB1cCBhbmQgZG93biBpbiB0aGUgbWlkc3Qgb2YgdGhlIHN0b25lcyBvZiBmaXJlLgpUaG91IHdhc3QgcGVyZmVjdCBpbiB0aHkgd2F5cyBmcm9tIHRoZSBkYXkgdGhhdCB0aG91IHdhc3QgY3JlYXRlZCwgdGlsbCBpbmlxdWl0eSB3YXMgZm91bmQgaW4gdGhlZS4KQnkgdGhlIG11bHRpdHVkZSBvZiB0aHkgbWVyY2hhbmRpc2UgdGhleSBoYXZlIGZpbGxlZCB0aGUgbWlkc3Qgb2YgdGhlZSB3aXRoIHZpb2xlbmNlLCBhbmQgdGhvdSBoYXN0IHNpbm5lZDogdGhlcmVmb3JlIEkgd2lsbCBjYXN0IHRoZWUgYXMgcHJvZmFuZSBvdXQgb2YgdGhlIG1vdW50YWluIG9mIEdvZDogYW5kIEkgd2lsbCBkZXN0cm95IHRoZWUsIE8gY292ZXJpbmcgY2hlcnViLCBmcm9tIHRoZSBtaWRzdCBvZiB0aGUgc3RvbmVzIG9mIGZpcmUuClRoaW5lIGhlYXJ0IHdhcyBsaWZ0ZWQgdXAgYmVjYXVzZSBvZiB0aHkgYmVhdXR5LCB0aG91IGhhc3QgY29ycnVwdGVkIHRoeSB3aXNkb20gYnkgcmVhc29uIG9mIHRoeSBicmlnaHRuZXNzOiBJIHdpbGwgY2FzdCB0aGVlIHRvIHRoZSBncm91bmQsIEkgd2lsbCBsYXkgdGhlZSBiZWZvcmUga2luZ3MsIHRoYXQgdGhleSBtYXkgYmVob2xkIHRoZWUuClRob3UgaGFzdCBkZWZpbGVkIHRoeSBzYW5jdHVhcmllcyBieSB0aGUgbXVsdGl0dWRlIG9mIHRoaW5lIGluaXF1aXRpZXMsIGJ5IHRoZSBpbmlxdWl0eSBvZiB0aHkgdHJhZmZpY2s7IHRoZXJlZm9yZSB3aWxsIEkgYnJpbmcgZm9ydGggYSBmaXJlIGZyb20gdGhlIG1pZHN0IG9mIHRoZWUsIGl0IHNoYWxsIGRldm91ciB0aGVlLCBhbmQgSSB3aWxsIGJyaW5nIHRoZWUgdG8gYXNoZXMgdXBvbiB0aGUgZWFydGggaW4gdGhlIHNpZ2h0IG9mIGFsbCB0aGVtIHRoYXQgYmVob2xkIHRoZWUuCkFsbCB0aGV5IHRoYXQga25vdyB0aGVlIGFtb25nIHRoZSBwZW9wbGUgc2hhbGwgYmUgYXN0b25pc2hlZCBhdCB0aGVlOiB0aG91IHNoYWx0IGJlIGEgdGVycm9yLCBhbmQgbmV2ZXIgc2hhbHQgdGhvdSBiZSBhbnkgbW9yZS4KQWdhaW4gdGhlIHdvcmQgb2YgdGhlIExPUkQgY2FtZSB1bnRvIG1lLCBzYXlpbmcsClNvbiBvZiBtYW4sIHNldCB0aHkgZmFjZSBhZ2FpbnN0IFppZG9uLCBhbmQgcHJvcGhlc3kgYWdhaW5zdCBpdCwKQW5kIHNheSwgVGh1cyBzYWl0aCB0aGUgTG9yZCBHT0Q7IEJlaG9sZCwgSSBhbSBhZ2FpbnN0IHRoZWUsIE8gWmlkb247IGFuZCBJIHdpbGwgYmUgZ2xvcmlmaWVkIGluIHRoZSBtaWRzdCBvZiB0aGVlOiBhbmQgdGhleSBzaGFsbCBrbm93IHRoYXQgSSBhbSB0aGUgTE9SRCwgd2hlbiBJIHNoYWxsIGhhdmUgZXhlY3V0ZWQganVkZ21lbnRzIGluIGhlciwgYW5kIHNoYWxsIGJlIHNhbmN0aWZpZWQgaW4gaGVyLgpGb3IgSSB3aWxsIHNlbmQgaW50byBoZXIgcGVzdGlsZW5jZSwgYW5kIGJsb29kIGludG8gaGVyIHN0cmVldHM7IGFuZCB0aGUgd291bmRlZCBzaGFsbCBiZSBqdWRnZWQgaW4gdGhlIG1pZHN0IG9mIGhlciBieSB0aGUgc3dvcmQgdXBvbiBoZXIgb24gZXZlcnkgc2lkZTsgYW5kIHRoZXkgc2hhbGwga25vdyB0aGF0IEkgYW0gdGhlIExPUkQuCkFuZCB0aGVyZSBzaGFsbCBiZSBubyBtb3JlIGEgcHJpY2tpbmcgYnJpZXIgdW50byB0aGUgaG91c2Ugb2YgSXNyYWVsLCBub3IgYW55IGdyaWV2aW5nIHRob3JuIG9mIGFsbCB0aGF0IGFyZSByb3VuZCBhYm91dCB0aGVtLCB0aGF0IGRlc3Bpc2VkIHRoZW07IGFuZCB0aGV5IHNoYWxsIGtub3cgdGhhdCBJIGFtIHRoZSBMb3JkIEdPRC4KVGh1cyBzYWl0aCB0aGUgTG9yZCBHT0Q7IFdoZW4gSSBzaGFsbCBoYXZlIGdhdGhlcmVkIHRoZSBob3VzZSBvZiBJc3JhZWwgZnJvbSB0aGUgcGVvcGxlIGFtb25nIHdob20gdGhleSBhcmUgc2NhdHRlcmVkLCBhbmQgc2hhbGwgYmUgc2FuY3RpZmllZCBpbiB0aGVtIGluIHRoZSBzaWdodCBvZiB0aGUgaGVhdGhlbiwgdGhlbiBzaGFsbCB0aGV5IGR3ZWxsIGluIHRoZWlyIGxhbmQgdGhhdCBJIGhhdmUgZ2l2ZW4gdG8gbXkgc2VydmFudCBKYWNvYi4KQW5kIHRoZXkgc2hhbGwgZHdlbGwgc2FmZWx5IHRoZXJlaW4sIGFuZCBzaGFsbCBidWlsZCBob3VzZXMsIGFuZCBwbGFudCB2aW5leWFyZHM7IHllYSwgdGhleSBzaGFsbCBkd2VsbCB3aXRoIGNvbmZpZGVuY2UsIHdoZW4gSSBoYXZlIGV4ZWN1dGVkIGp1ZGdtZW50cyB1cG9uIGFsbCB0aG9zZSB0aGF0IGRlc3Bpc2UgdGhlbSByb3VuZCBhYm91dCB0aGVtOyBhbmQgdGhleSBzaGFsbCBrbm93IHRoYXQgSSBhbSB0aGUgTE9SRCB0aGVpciBHb2QuCkluIHRoZSB0ZW50aCB5ZWFyLCBpbiB0aGUgdGVudGggbW9udGgsIGluIHRoZSB0d2VsZnRoIGRheSBvZiB0aGUgbW9udGgsIHRoZSB3b3JkIG9mIHRoZSBMT1JEIGNhbWUgdW50byBtZSwgc2F5aW5nLApTb24gb2YgbWFuLCBzZXQgdGh5IGZhY2UgYWdhaW5zdCBQaGFyYW9oIGtpbmcgb2YgRWd5cHQsIGFuZCBwcm9waGVzeSBhZ2FpbnN0IGhpbSwgYW5kIGFnYWluc3QgYWxsIEVneXB0OgpTcGVhaywgYW5kIHNheSwgVGh1cyBzYWl0aCB0aGUgTG9yZCBHT0Q7IEJlaG9sZCwgSSBhbSBhZ2FpbnN0IHRoZWUsIFBoYXJhb2gga2luZyBvZiBFZ3lwdCwgdGhlIGdyZWF0IGRyYWdvbiB0aGF0IGxpZXRoIGluIHRoZSBtaWRzdCBvZiBoaXMgcml2ZXJzLCB3aGljaCBoYXRoIHNhaWQsIE15IHJpdmVyIGlzIG1pbmUgb3duLCBhbmQgSSBoYXZlIG1hZGUgaXQgZm9yIG15c2VsZi4KQnV0IEkgd2lsbCBwdXQgaG9va3MgaW4gdGh5IGphd3MsIGFuZCBJIHdpbGwgY2F1c2UgdGhlIGZpc2ggb2YgdGh5IHJpdmVycyB0byBzdGljayB1bnRvIHRoeSBzY2FsZXMsIGFuZCBJIHdpbGwgYnJpbmcgdGhlZSB1cCBvdXQgb2YgdGhlIG1pZHN0IG9mIHRoeSByaXZlcnMsIGFuZCBhbGwgdGhlIGZpc2ggb2YgdGh5IHJpdmVycyBzaGFsbCBzdGljayB1bnRvIHRoeSBzY2FsZXMuCkFuZCBJIHdpbGwgbGVhdmUgdGhlZSB0aHJvd24gaW50byB0aGUgd2lsZGVybmVzcywgdGhlZSBhbmQgYWxsIHRoZSBmaXNoIG9mIHRoeSByaXZlcnM6IHRob3Ugc2hhbHQgZmFsbCB1cG9uIHRoZSBvcGVuIGZpZWxkczsgdGhvdSBzaGFsdCBub3QgYmUgYnJvdWdodCB0b2dldGhlciwgbm9yIGdhdGhlcmVkOiBJIGhhdmUgZ2l2ZW4gdGhlZSBmb3IgbWVhdCB0byB0aGUgYmVhc3RzIG9mIHRoZSBmaWVsZCBhbmQgdG8gdGhlIGZvd2xzIG9mIHRoZSBoZWF2ZW4uCkFuZCBhbGwgdGhlIGluaGFiaXRhbnRzIG9mIEVneXB0IHNoYWxsIGtub3cgdGhhdCBJIGFtIHRoZSBMT1JELCBiZWNhdXNlIHRoZXkgaGF2ZSBiZWVuIGEgc3RhZmYgb2YgcmVlZCB0byB0aGUgaG91c2Ugb2YgSXNyYWVsLgpXaGVuIHRoZXkgdG9vayBob2xkIG9mIHRoZWUgYnkgdGh5IGhhbmQsIHRob3UgZGlkc3QgYnJlYWssIGFuZCByZW5kIGFsbCB0aGVpciBzaG91bGRlcjogYW5kIHdoZW4gdGhleSBsZWFuZWQgdXBvbiB0aGVlLCB0aG91IGJyYWtlc3QsIGFuZCBtYWRlc3QgYWxsIHRoZWlyIGxvaW5zIHRvIGJlIGF0IGEgc3RhbmQuClRoZXJlZm9yZSB0aHVzIHNhaXRoIHRoZSBMb3JkIEdPRDsgQmVob2xkLCBJIHdpbGwgYnJpbmcgYSBzd29yZCB1cG9uIHRoZWUsIGFuZCBjdXQgb2ZmIG1hbiBhbmQgYmVhc3Qgb3V0IG9mIHRoZWUuCkFuZCB0aGUgbGFuZCBvZiBFZ3lwdCBzaGFsbCBiZSBkZXNvbGF0ZSBhbmQgd2FzdGU7IGFuZCB0aGV5IHNoYWxsIGtub3cgdGhhdCBJIGFtIHRoZSBMT1JEOiBiZWNhdXNlIGhlIGhhdGggc2FpZCwgVGhlIHJpdmVyIGlzIG1pbmUsIGFuZCBJIGhhdmUgbWFkZSBpdC4KQmVob2xkLCB0aGVyZWZvcmUgSSBhbSBhZ2FpbnN0IHRoZWUsIGFuZCBhZ2FpbnN0IHRoeSByaXZlcnMsIGFuZCBJIHdpbGwgbWFrZSB0aGUgbGFuZCBvZiBFZ3lwdCB1dHRlcmx5IHdhc3RlIGFuZCBkZXNvbGF0ZSwgZnJvbSB0aGUgdG93ZXIgb2YgU3llbmUgZXZlbiB1bnRvIHRoZSBib3JkZXIgb2YgRXRoaW9waWEuCk5vIGZvb3Qgb2YgbWFuIHNoYWxsIHBhc3MgdGhyb3VnaCBpdCwgbm9yIGZvb3Qgb2YgYmVhc3Qgc2hhbGwgcGFzcyB0aHJvdWdoIGl0LCBuZWl0aGVyIHNoYWxsIGl0IGJlIGluaGFiaXRlZCBmb3J0eSB5ZWFycy4KQW5kIEkgd2lsbCBtYWtlIHRoZSBsYW5kIG9mIEVneXB0IGRlc29sYXRlIGluIHRoZSBtaWRzdCBvZiB0aGUgY291bnRyaWVzIHRoYXQgYXJlIGRlc29sYXRlLCBhbmQgaGVyIGNpdGllcyBhbW9uZyB0aGUgY2l0aWVzIHRoYXQgYXJlIGxhaWQgd2FzdGUgc2hhbGwgYmUgZGVzb2xhdGUgZm9ydHkgeWVhcnM6IGFuZCBJIHdpbGwgc2NhdHRlciB0aGUgRWd5cHRpYW5zIGFtb25nIHRoZSBuYXRpb25zLCBhbmQgd2lsbCBkaXNwZXJzZSB0aGVtIHRocm91Z2ggdGhlIGNvdW50cmllcy4KWWV0IHRodXMgc2FpdGggdGhlIExvcmQgR09EOyBBdCB0aGUgZW5kIG9mIGZvcnR5IHllYXJzIHdpbGwgSSBnYXRoZXIgdGhlIEVneXB0aWFucyBmcm9tIHRoZSBwZW9wbGUgd2hpdGhlciB0aGV5IHdlcmUgc2NhdHRlcmVkOgpBbmQgSSB3aWxsIGJyaW5nIGFnYWluIHRoZSBjYXB0aXZpdHkgb2YgRWd5cHQsIGFuZCB3aWxsIGNhdXNlIHRoZW0gdG8gcmV0dXJuIGludG8gdGhlIGxhbmQgb2YgUGF0aHJvcywgaW50byB0aGUgbGFuZCBvZiB0aGVpciBoYWJpdGF0aW9uOyBhbmQgdGhleSBzaGFsbCBiZSB0aGVyZSBhIGJhc2Uga2luZ2RvbS4KSXQgc2hhbGwgYmUgdGhlIGJhc2VzdCBvZiB0aGUga2luZ2RvbXM7IG5laXRoZXIgc2hhbGwgaXQgZXhhbHQgaXRzZWxmIGFueSBtb3JlIGFib3ZlIHRoZSBuYXRpb25zOiBmb3IgSSB3aWxsIGRpbWluaXNoIHRoZW0sIHRoYXQgdGhleSBzaGFsbCBubyBtb3JlIHJ1bGUgb3ZlciB0aGUgbmF0aW9ucy4KQW5kIGl0IHNoYWxsIGJlIG5vIG1vcmUgdGhlIGNvbmZpZGVuY2Ugb2YgdGhlIGhvdXNlIG9mIElzcmFlbCwgd2hpY2ggYnJpbmdldGggdGhlaXIgaW5pcXVpdHkgdG8gcmVtZW1icmFuY2UsIHdoZW4gdGhleSBzaGFsbCBsb29rIGFmdGVyIHRoZW06IGJ1dCB0aGV5IHNoYWxsIGtub3cgdGhhdCBJIGFtIHRoZSBMb3JkIEdPRC4KQW5kIGl0IGNhbWUgdG8gcGFzcyBpbiB0aGUgc2V2ZW4gYW5kIHR3ZW50aWV0aCB5ZWFyLCBpbiB0aGUgZmlyc3QgbW9udGgsIGluIHRoZSBmaXJzdCBkYXkgb2YgdGhlIG1vbnRoLCB0aGUgd29yZCBvZiB0aGUgTE9SRCBjYW1lIHVudG8gbWUsIHNheWluZywKU29uIG9mIG1hbiwgTmVidWNoYWRyZXp6YXIga2luZyBvZiBCYWJ5bG9uIGNhdXNlZCBoaXMgYXJteSB0byBzZXJ2ZSBhIGdyZWF0IHNlcnZpY2UgYWdhaW5zdCBUeXJ1czogZXZlcnkgaGVhZCB3YXMgbWFkZSBiYWxkLCBhbmQgZXZlcnkgc2hvdWxkZXIgd2FzIHBlZWxlZDogeWV0IGhhZCBoZSBubyB3YWdlcywgbm9yIGhpcyBhcm15LCBmb3IgVHlydXMsIGZvciB0aGUgc2VydmljZSB0aGF0IGhlIGhhZCBzZXJ2ZWQgYWdhaW5zdCBpdDoKVGhlcmVmb3JlIHRodXMgc2FpdGggdGhlIExvcmQgR09EOyBCZWhvbGQsIEkgd2lsbCBnaXZlIHRoZSBsYW5kIG9mIEVneXB0IHVudG8gTmVidWNoYWRyZXp6YXIga2luZyBvZiBCYWJ5bG9uOyBhbmQgaGUgc2hhbGwgdGFrZSBoZXIgbXVsdGl0dWRlLCBhbmQgdGFrZSBoZXIgc3BvaWwsIGFuZCB0YWtlIGhlciBwcmV5OyBhbmQgaXQgc2hhbGwgYmUgdGhlIHdhZ2VzIGZvciBoaXMgYXJteS4KSSBoYXZlIGdpdmVuIGhpbSB0aGUgbGFuZCBvZiBFZ3lwdCBmb3IgaGlzIGxhYm91ciB3aGVyZXdpdGggaGUgc2VydmVkIGFnYWluc3QgaXQsIGJlY2F1c2UgdGhleSB3cm91Z2h0IGZvciBtZSwgc2FpdGggdGhlIExvcmQgR09ELgpJbiB0aGF0IGRheSB3aWxsIEkgY2F1c2UgdGhlIGhvcm4gb2YgdGhlIGhvdXNlIG9mIElzcmFlbCB0byBidWQgZm9ydGgsIGFuZCBJIHdpbGwgZ2l2ZSB0aGVlIHRoZSBvcGVuaW5nIG9mIHRoZSBtb3V0aCBpbiB0aGUgbWlkc3Qgb2YgdGhlbTsgYW5kIHRoZXkgc2hhbGwga25vdyB0aGF0IEkgYW0gdGhlIExPUkQuClRoZSB3b3JkIG9mIHRoZSBMT1JEIGNhbWUgYWdhaW4gdW50byBtZSwgc2F5aW5nLApTb24gb2YgbWFuLCBwcm9waGVzeSBhbmQgc2F5LCBUaHVzIHNhaXRoIHRoZSBMb3JkIEdPRDsgSG93bCB5ZSwgV29lIHdvcnRoIHRoZSBkYXkhCkZvciB0aGUgZGF5IGlzIG5lYXIsIGV2ZW4gdGhlIGRheSBvZiB0aGUgTE9SRCBpcyBuZWFyLCBhIGNsb3VkeSBkYXk7IGl0IHNoYWxsIGJlIHRoZSB0aW1lIG9mIHRoZSBoZWF0aGVuLgpBbmQgdGhlIHN3b3JkIHNoYWxsIGNvbWUgdXBvbiBFZ3lwdCwgYW5kIGdyZWF0IHBhaW4gc2hhbGwgYmUgaW4gRXRoaW9waWEsIHdoZW4gdGhlIHNsYWluIHNoYWxsIGZhbGwgaW4gRWd5cHQsIGFuZCB0aGV5IHNoYWxsIHRha2UgYXdheSBoZXIgbXVsdGl0dWRlLCBhbmQgaGVyIGZvdW5kYXRpb25zIHNoYWxsIGJlIGJyb2tlbiBkb3duLgpFdGhpb3BpYSwgYW5kIExpYnlhLCBhbmQgTHlkaWEsIGFuZCBhbGwgdGhlIG1pbmdsZWQgcGVvcGxlLCBhbmQgQ2h1YiwgYW5kIHRoZSBtZW4gb2YgdGhlIGxhbmQgdGhhdCBpcyBpbiBsZWFndWUsIHNoYWxsIGZhbGwgd2l0aCB0aGVtIGJ5IHRoZSBzd29yZC4KVGh1cyBzYWl0aCB0aGUgTE9SRDsgVGhleSBhbHNvIHRoYXQgdXBob2xkIEVneXB0IHNoYWxsIGZhbGw7IGFuZCB0aGUgcHJpZGUgb2YgaGVyIHBvd2VyIHNoYWxsIGNvbWUgZG93bjogZnJvbSB0aGUgdG93ZXIgb2YgU3llbmUgc2hhbGwgdGhleSBmYWxsIGluIGl0IGJ5IHRoZSBzd29yZCwgc2FpdGggdGhlIExvcmQgR09ELgpBbmQgdGhleSBzaGFsbCBiZSBkZXNvbGF0ZSBpbiB0aGUgbWlkc3Qgb2YgdGhlIGNvdW50cmllcyB0aGF0IGFyZSBkZXNvbGF0ZSwgYW5kIGhlciBjaXRpZXMgc2hhbGwgYmUgaW4gdGhlIG1pZHN0IG9mIHRoZSBjaXRpZXMgdGhhdCBhcmUgd2FzdGVkLgpBbmQgdGhleSBzaGFsbCBrbm93IHRoYXQgSSBhbSB0aGUgTE9SRCwgd2hlbiBJIGhhdmUgc2V0IGEgZmlyZSBpbiBFZ3lwdCwgYW5kIHdoZW4gYWxsIGhlciBoZWxwZXJzIHNoYWxsIGJlIGRlc3Ryb3llZC4KSW4gdGhhdCBkYXkgc2hhbGwgbWVzc2VuZ2VycyBnbyBmb3J0aCBmcm9tIG1lIGluIHNoaXBzIHRvIG1ha2UgdGhlIGNhcmVsZXNzIEV0aGlvcGlhbnMgYWZyYWlkLCBhbmQgZ3JlYXQgcGFpbiBzaGFsbCBjb21lIHVwb24gdGhlbSwgYXMgaW4gdGhlIGRheSBvZiBFZ3lwdDogZm9yLCBsbywgaXQgY29tZXRoLgpUaHVzIHNhaXRoIHRoZSBMb3JkIEdPRDsgSSB3aWxsIGFsc28gbWFrZSB0aGUgbXVsdGl0dWRlIG9mIEVneXB0IHRvIGNlYXNlIGJ5IHRoZSBoYW5kIG9mIE5lYnVjaGFkcmV6emFyIGtpbmcgb2YgQmFieWxvbi4KSGUgYW5kIGhpcyBwZW9wbGUgd2l0aCBoaW0sIHRoZSB0ZXJyaWJsZSBvZiB0aGUgbmF0aW9ucywgc2hhbGwgYmUgYnJvdWdodCB0byBkZXN0cm95IHRoZSBsYW5kOiBhbmQgdGhleSBzaGFsbCBkcmF3IHRoZWlyIHN3b3JkcyBhZ2FpbnN0IEVneXB0LCBhbmQgZmlsbCB0aGUgbGFuZCB3aXRoIHRoZSBzbGFpbi4KQW5kIEkgd2lsbCBtYWtlIHRoZSByaXZlcnMgZHJ5LCBhbmQgc2VsbCB0aGUgbGFuZCBpbnRvIHRoZSBoYW5kIG9mIHRoZSB3aWNrZWQ6IGFuZCBJIHdpbGwgbWFrZSB0aGUgbGFuZCB3YXN0ZSwgYW5kIGFsbCB0aGF0IGlzIHRoZXJlaW4sIGJ5IHRoZSBoYW5kIG9mIHN0cmFuZ2VyczogSSB0aGUgTE9SRCBoYXZlIHNwb2tlbiBpdC4KVGh1cyBzYWl0aCB0aGUgTG9yZCBHT0Q7IEkgd2lsbCBhbHNvIGRlc3Ryb3kgdGhlIGlkb2xzLCBhbmQgSSB3aWxsIGNhdXNlIHRoZWlyIGltYWdlcyB0byBjZWFzZSBvdXQgb2YgTm9waDsgYW5kIHRoZXJlIHNoYWxsIGJlIG5vIG1vcmUgYSBwcmluY2Ugb2YgdGhlIGxhbmQgb2YgRWd5cHQ6IGFuZCBJIHdpbGwgcHV0IGEgZmVhciBpbiB0aGUgbGFuZCBvZiBFZ3lwdC4KQW5kIEkgd2lsbCBtYWtlIFBhdGhyb3MgZGVzb2xhdGUsIGFuZCB3aWxsIHNldCBmaXJlIGluIFpvYW4sIGFuZCB3aWxsIGV4ZWN1dGUganVkZ21lbnRzIGluIE5vLgpBbmQgSSB3aWxsIHBvdXIgbXkgZnVyeSB1cG9uIFNpbiwgdGhlIHN0cmVuZ3RoIG9mIEVneXB0OyBhbmQgSSB3aWxsIGN1dCBvZmYgdGhlIG11bHRpdHVkZSBvZiBOby4KQW5kIEkgd2lsbCBzZXQgZmlyZSBpbiBFZ3lwdDogU2luIHNoYWxsIGhhdmUgZ3JlYXQgcGFpbiwgYW5kIE5vIHNoYWxsIGJlIHJlbnQgYXN1bmRlciwgYW5kIE5vcGggc2hhbGwgaGF2ZSBkaXN0cmVzc2VzIGRhaWx5LgpUaGUgeW91bmcgbWVuIG9mIEF2ZW4gYW5kIG9mIFBpYmVzZXRoIHNoYWxsIGZhbGwgYnkgdGhlIHN3b3JkOiBhbmQgdGhlc2UgY2l0aWVzIHNoYWxsIGdvIGludG8gY2FwdGl2aXR5LgpBdCBUZWhhcGhuZWhlcyBhbHNvIHRoZSBkYXkgc2hhbGwgYmUgZGFya2VuZWQsIHdoZW4gSSBzaGFsbCBicmVhayB0aGVyZSB0aGUgeW9rZXMgb2YgRWd5cHQ6IGFuZCB0aGUgcG9tcCBvZiBoZXIgc3RyZW5ndGggc2hhbGwgY2Vhc2UgaW4gaGVyOiBhcyBmb3IgaGVyLCBhIGNsb3VkIHNoYWxsIGNvdmVyIGhlciwgYW5kIGhlciBkYXVnaHRlcnMgc2hhbGwgZ28gaW50byBjYXB0aXZpdHkuClRodXMgd2lsbCBJIGV4ZWN1dGUganVkZ21lbnRzIGluIEVneXB0OiBhbmQgdGhleSBzaGFsbCBrbm93IHRoYXQgSSBhbSB0aGUgTE9SRC4KQW5kIGl0IGNhbWUgdG8gcGFzcyBpbiB0aGUgZWxldmVudGggeWVhciwgaW4gdGhlIGZpcnN0IG1vbnRoLCBpbiB0aGUgc2V2ZW50aCBkYXkgb2YgdGhlIG1vbnRoLCB0aGF0IHRoZSB3b3JkIG9mIHRoZSBMT1JEIGNhbWUgdW50byBtZSwgc2F5aW5nLApTb24gb2YgbWFuLCBJIGhhdmUgYnJva2VuIHRoZSBhcm0gb2YgUGhhcmFvaCBraW5nIG9mIEVneXB0OyBhbmQsIGxvLCBpdCBzaGFsbCBub3QgYmUgYm91bmQgdXAgdG8gYmUgaGVhbGVkLCB0byBwdXQgYSByb2xsZXIgdG8gYmluZCBpdCwgdG8gbWFrZSBpdCBzdHJvbmcgdG8gaG9sZCB0aGUgc3dvcmQuClRoZXJlZm9yZSB0aHVzIHNhaXRoIHRoZSBMb3JkIEdPRDsgQmVob2xkLCBJIGFtIGFnYWluc3QgUGhhcmFvaCBraW5nIG9mIEVneXB0LCBhbmQgd2lsbCBicmVhayBoaXMgYXJtcywgdGhlIHN0cm9uZywgYW5kIHRoYXQgd2hpY2ggd2FzIGJyb2tlbjsgYW5kIEkgd2lsbCBjYXVzZSB0aGUgc3dvcmQgdG8gZmFsbCBvdXQgb2YgaGlzIGhhbmQuCkFuZCBJIHdpbGwgc2NhdHRlciB0aGUgRWd5cHRpYW5zIGFtb25nIHRoZSBuYXRpb25zLCBhbmQgd2lsbCBkaXNwZXJzZSB0aGVtIHRocm91Z2ggdGhlIGNvdW50cmllcy4KQW5kIEkgd2lsbCBzdHJlbmd0aGVuIHRoZSBhcm1zIG9mIHRoZSBraW5nIG9mIEJhYnlsb24sIGFuZCBwdXQgbXkgc3dvcmQgaW4gaGlzIGhhbmQ6IGJ1dCBJIHdpbGwgYnJlYWsgUGhhcmFvaCdzIGFybXMsIGFuZCBoZSBzaGFsbCBncm9hbiBiZWZvcmUgaGltIHdpdGggdGhlIGdyb2FuaW5ncyBvZiBhIGRlYWRseSB3b3VuZGVkIG1hbi4KQnV0IEkgd2lsbCBzdHJlbmd0aGVuIHRoZSBhcm1zIG9mIHRoZSBraW5nIG9mIEJhYnlsb24sIGFuZCB0aGUgYXJtcyBvZiBQaGFyYW9oIHNoYWxsIGZhbGwgZG93bjsgYW5kIHRoZXkgc2hhbGwga25vdyB0aGF0IEkgYW0gdGhlIExPUkQsIHdoZW4gSSBzaGFsbCBwdXQgbXkgc3dvcmQgaW50byB0aGUgaGFuZCBvZiB0aGUga2luZyBvZiBCYWJ5bG9uLCBhbmQgaGUgc2hhbGwgc3RyZXRjaCBpdCBvdXQgdXBvbiB0aGUgbGFuZCBvZiBFZ3lwdC4KQW5kIEkgd2lsbCBzY2F0dGVyIHRoZSBFZ3lwdGlhbnMgYW1vbmcgdGhlIG5hdGlvbnMsIGFuZCBkaXNwZXJzZSB0aGVtIGFtb25nIHRoZSBjb3VudHJpZXM7IGFuZCB0aGV5IHNoYWxsIGtub3cgdGhhdCBJIGFtIHRoZSBMT1JELgpBbmQgaXQgY2FtZSB0byBwYXNzIGluIHRoZSBlbGV2ZW50aCB5ZWFyLCBpbiB0aGUgdGhpcmQgbW9udGgsIGluIHRoZSBmaXJzdCBkYXkgb2YgdGhlIG1vbnRoLCB0aGF0IHRoZSB3b3JkIG9mIHRoZSBMT1JEIGNhbWUgdW50byBtZSwgc2F5aW5nLApTb24gb2YgbWFuLCBzcGVhayB1bnRvIFBoYXJhb2gga2luZyBvZiBFZ3lwdCwgYW5kIHRvIGhpcyBtdWx0aXR1ZGU7IFdob20gYXJ0IHRob3UgbGlrZSBpbiB0aHkgZ3JlYXRuZXNzPwpCZWhvbGQsIHRoZSBBc3N5cmlhbiB3YXMgYSBjZWRhciBpbiBMZWJhbm9uIHdpdGggZmFpciBicmFuY2hlcywgYW5kIHdpdGggYSBzaGFkb3dpbmcgc2hyb3VkLCBhbmQgb2YgYW4gaGlnaCBzdGF0dXJlOyBhbmQgaGlzIHRvcCB3YXMgYW1vbmcgdGhlIHRoaWNrIGJvdWdocy4KVGhlIHdhdGVycyBtYWRlIGhpbSBncmVhdCwgdGhlIGRlZXAgc2V0IGhpbSB1cCBvbiBoaWdoIHdpdGggaGVyIHJpdmVycyBydW5uaW5nIHJvdW5kIGFib3V0IGhpcyBwbGFudHMsIGFuZCBzZW50IGhlciBsaXR0bGUgcml2ZXJzIHVudG8gYWxsIHRoZSB0cmVlcyBvZiB0aGUgZmllbGQuClRoZXJlZm9yZSBoaXMgaGVpZ2h0IHdhcyBleGFsdGVkIGFib3ZlIGFsbCB0aGUgdHJlZXMgb2YgdGhlIGZpZWxkLCBhbmQgaGlzIGJvdWdocyB3ZXJlIG11bHRpcGxpZWQsIGFuZCBoaXMgYnJhbmNoZXMgYmVjYW1lIGxvbmcgYmVjYXVzZSBvZiB0aGUgbXVsdGl0dWRlIG9mIHdhdGVycywgd2hlbiBoZSBzaG90IGZvcnRoLgpBbGwgdGhlIGZvd2xzIG9mIGhlYXZlbiBtYWRlIHRoZWlyIG5lc3RzIGluIGhpcyBib3VnaHMsIGFuZCB1bmRlciBoaXMgYnJhbmNoZXMgZGlkIGFsbCB0aGUgYmVhc3RzIG9mIHRoZSBmaWVsZCBicmluZyBmb3J0aCB0aGVpciB5b3VuZywgYW5kIHVuZGVyIGhpcyBzaGFkb3cgZHdlbHQgYWxsIGdyZWF0IG5hdGlvbnMuClRodXMgd2FzIGhlIGZhaXIgaW4gaGlzIGdyZWF0bmVzcywgaW4gdGhlIGxlbmd0aCBvZiBoaXMgYnJhbmNoZXM6IGZvciBoaXMgcm9vdCB3YXMgYnkgZ3JlYXQgd2F0ZXJzLgpUaGUgY2VkYXJzIGluIHRoZSBnYXJkZW4gb2YgR29kIGNvdWxkIG5vdCBoaWRlIGhpbTogdGhlIGZpciB0cmVlcyB3ZXJlIG5vdCBsaWtlIGhpcyBib3VnaHMsIGFuZCB0aGUgY2hlc3RudXQgdHJlZXMgd2VyZSBub3QgbGlrZSBoaXMgYnJhbmNoZXM7IG5vciBhbnkgdHJlZSBpbiB0aGUgZ2FyZGVuIG9mIEdvZCB3YXMgbGlrZSB1bnRvIGhpbSBpbiBoaXMgYmVhdXR5LgpJIGhhdmUgbWFkZSBoaW0gZmFpciBieSB0aGUgbXVsdGl0dWRlIG9mIGhpcyBicmFuY2hlczogc28gdGhhdCBhbGwgdGhlIHRyZWVzIG9mIEVkZW4sIHRoYXQgd2VyZSBpbiB0aGUgZ2FyZGVuIG9mIEdvZCwgZW52aWVkIGhpbS4KVGhlcmVmb3JlIHRodXMgc2FpdGggdGhlIExvcmQgR09EOyBCZWNhdXNlIHRob3UgaGFzdCBsaWZ0ZWQgdXAgdGh5c2VsZiBpbiBoZWlnaHQsIGFuZCBoZSBoYXRoIHNob3QgdXAgaGlzIHRvcCBhbW9uZyB0aGUgdGhpY2sgYm91Z2hzLCBhbmQgaGlzIGhlYXJ0IGlzIGxpZnRlZCB1cCBpbiBoaXMgaGVpZ2h0OwpJIGhhdmUgdGhlcmVmb3JlIGRlbGl2ZXJlZCBoaW0gaW50byB0aGUgaGFuZCBvZiB0aGUgbWlnaHR5IG9uZSBvZiB0aGUgaGVhdGhlbjsgaGUgc2hhbGwgc3VyZWx5IGRlYWwgd2l0aCBoaW06IEkgaGF2ZSBkcml2ZW4gaGltIG91dCBmb3IgaGlzIHdpY2tlZG5lc3MuCkFuZCBzdHJhbmdlcnMsIHRoZSB0ZXJyaWJsZSBvZiB0aGUgbmF0aW9ucywgaGF2ZSBjdXQgaGltIG9mZiwgYW5kIGhhdmUgbGVmdCBoaW06IHVwb24gdGhlIG1vdW50YWlucyBhbmQgaW4gYWxsIHRoZSB2YWxsZXlzIGhpcyBicmFuY2hlcyBhcmUgZmFsbGVuLCBhbmQgaGlzIGJvdWdocyBhcmUgYnJva2VuIGJ5IGFsbCB0aGUgcml2ZXJzIG9mIHRoZSBsYW5kOyBhbmQgYWxsIHRoZSBwZW9wbGUgb2YgdGhlIGVhcnRoIGFyZSBnb25lIGRvd24gZnJvbSBoaXMgc2hhZG93LCBhbmQgaGF2ZSBsZWZ0IGhpbS4KVXBvbiBoaXMgcnVpbiBzaGFsbCBhbGwgdGhlIGZvd2xzIG9mIHRoZSBoZWF2ZW4gcmVtYWluLCBhbmQgYWxsIHRoZSBiZWFzdHMgb2YgdGhlIGZpZWxkIHNoYWxsIGJlIHVwb24gaGlzIGJyYW5jaGVzOgpUbyB0aGUgZW5kIHRoYXQgbm9uZSBvZiBhbGwgdGhlIHRyZWVzIGJ5IHRoZSB3YXRlcnMgZXhhbHQgdGhlbXNlbHZlcyBmb3IgdGhlaXIgaGVpZ2h0LCBuZWl0aGVyIHNob290IHVwIHRoZWlyIHRvcCBhbW9uZyB0aGUgdGhpY2sgYm91Z2hzLCBuZWl0aGVyIHRoZWlyIHRyZWVzIHN0YW5kIHVwIGluIHRoZWlyIGhlaWdodCwgYWxsIHRoYXQgZHJpbmsgd2F0ZXI6IGZvciB0aGV5IGFyZSBhbGwgZGVsaXZlcmVkIHVudG8gZGVhdGgsIHRvIHRoZSBuZXRoZXIgcGFydHMgb2YgdGhlIGVhcnRoLCBpbiB0aGUgbWlkc3Qgb2YgdGhlIGNoaWxkcmVuIG9mIG1lbiwgd2l0aCB0aGVtIHRoYXQgZ28gZG93biB0byB0aGUgcGl0LgpUaHVzIHNhaXRoIHRoZSBMb3JkIEdPRDsgSW4gdGhlIGRheSB3aGVuIGhlIHdlbnQgZG93biB0byB0aGUgZ3JhdmUgSSBjYXVzZWQgYSBtb3VybmluZzogSSBjb3ZlcmVkIHRoZSBkZWVwIGZvciBoaW0sIGFuZCBJIHJlc3RyYWluZWQgdGhlIGZsb29kcyB0aGVyZW9mLCBhbmQgdGhlIGdyZWF0IHdhdGVycyB3ZXJlIHN0YXllZDogYW5kIEkgY2F1c2VkIExlYmFub24gdG8gbW91cm4gZm9yIGhpbSwgYW5kIGFsbCB0aGUgdHJlZXMgb2YgdGhlIGZpZWxkIGZhaW50ZWQgZm9yIGhpbS4KSSBtYWRlIHRoZSBuYXRpb25zIHRvIHNoYWtlIGF0IHRoZSBzb3VuZCBvZiBoaXMgZmFsbCwgd2hlbiBJIGNhc3QgaGltIGRvd24gdG8gaGVsbCB3aXRoIHRoZW0gdGhhdCBkZXNjZW5kIGludG8gdGhlIHBpdDogYW5kIGFsbCB0aGUgdHJlZXMgb2YgRWRlbiwgdGhlIGNob2ljZSBhbmQgYmVzdCBvZiBMZWJhbm9uLCBhbGwgdGhhdCBkcmluayB3YXRlciwgc2hhbGwgYmUgY29tZm9ydGVkIGluIHRoZSBuZXRoZXIgcGFydHMgb2YgdGhlIGVhcnRoLgpUaGV5IGFsc28gd2VudCBkb3duIGludG8gaGVsbCB3aXRoIGhpbSB1bnRvIHRoZW0gdGhhdCBiZSBzbGFpbiB3aXRoIHRoZSBzd29yZDsgYW5kIHRoZXkgdGhhdCB3ZXJlIGhpcyBhcm0sIHRoYXQgZHdlbHQgdW5kZXIgaGlzIHNoYWRvdyBpbiB0aGUgbWlkc3Qgb2YgdGhlIGhlYXRoZW4uClRvIHdob20gYXJ0IHRob3UgdGh1cyBsaWtlIGluIGdsb3J5IGFuZCBpbiBncmVhdG5lc3MgYW1vbmcgdGhlIHRyZWVzIG9mIEVkZW4/IHlldCBzaGFsdCB0aG91IGJlIGJyb3VnaHQgZG93biB3aXRoIHRoZSB0cmVlcyBvZiBFZGVuIHVudG8gdGhlIG5ldGhlciBwYXJ0cyBvZiB0aGUgZWFydGg6IHRob3Ugc2hhbHQgbGllIGluIHRoZSBtaWRzdCBvZiB0aGUgdW5jaXJjdW1jaXNlZCB3aXRoIHRoZW0gdGhhdCBiZSBzbGFpbiBieSB0aGUgc3dvcmQuIFRoaXMgaXMgUGhhcmFvaCBhbmQgYWxsIGhpcyBtdWx0aXR1ZGUsIHNhaXRoIHRoZSBMb3JkIEdPRC4KQW5kIGl0IGNhbWUgdG8gcGFzcyBpbiB0aGUgdHdlbGZ0aCB5ZWFyLCBpbiB0aGUgdHdlbGZ0aCBtb250aCwgaW4gdGhlIGZpcnN0IGRheSBvZiB0aGUgbW9udGgsIHRoYXQgdGhlIHdvcmQgb2YgdGhlIExPUkQgY2FtZSB1bnRvIG1lLCBzYXlpbmcsClNvbiBvZiBtYW4sIHRha2UgdXAgYSBsYW1lbnRhdGlvbiBmb3IgUGhhcmFvaCBraW5nIG9mIEVneXB0LCBhbmQgc2F5IHVudG8gaGltLCBUaG91IGFydCBsaWtlIGEgeW91bmcgbGlvbiBvZiB0aGUgbmF0aW9ucywgYW5kIHRob3UgYXJ0IGFzIGEgd2hhbGUgaW4gdGhlIHNlYXM6IGFuZCB0aG91IGNhbWVzdCBmb3J0aCB3aXRoIHRoeSByaXZlcnMsIGFuZCB0cm91YmxlZHN0IHRoZSB3YXRlcnMgd2l0aCB0aHkgZmVldCwgYW5kIGZvdWxlZHN0IHRoZWlyIHJpdmVycy4KVGh1cyBzYWl0aCB0aGUgTG9yZCBHT0Q7IEkgd2lsbCB0aGVyZWZvcmUgc3ByZWFkIG91dCBteSBuZXQgb3ZlciB0aGVlIHdpdGggYSBjb21wYW55IG9mIG1hbnkgcGVvcGxlOyBhbmQgdGhleSBzaGFsbCBicmluZyB0aGVlIHVwIGluIG15IG5ldC4KVGhlbiB3aWxsIEkgbGVhdmUgdGhlZSB1cG9uIHRoZSBsYW5kLCBJIHdpbGwgY2FzdCB0aGVlIGZvcnRoIHVwb24gdGhlIG9wZW4gZmllbGQsIGFuZCB3aWxsIGNhdXNlIGFsbCB0aGUgZm93bHMgb2YgdGhlIGhlYXZlbiB0byByZW1haW4gdXBvbiB0aGVlLCBhbmQgSSB3aWxsIGZpbGwgdGhlIGJlYXN0cyBvZiB0aGUgd2hvbGUgZWFydGggd2l0aCB0aGVlLgpBbmQgSSB3aWxsIGxheSB0aHkgZmxlc2ggdXBvbiB0aGUgbW91bnRhaW5zLCBhbmQgZmlsbCB0aGUgdmFsbGV5cyB3aXRoIHRoeSBoZWlnaHQuCkkgd2lsbCBhbHNvIHdhdGVyIHdpdGggdGh5IGJsb29kIHRoZSBsYW5kIHdoZXJlaW4gdGhvdSBzd2ltbWVzdCwgZXZlbiB0byB0aGUgbW91bnRhaW5zOyBhbmQgdGhlIHJpdmVycyBzaGFsbCBiZSBmdWxsIG9mIHRoZWUuCkFuZCB3aGVuIEkgc2hhbGwgcHV0IHRoZWUgb3V0LCBJIHdpbGwgY292ZXIgdGhlIGhlYXZlbiwgYW5kIG1ha2UgdGhlIHN0YXJzIHRoZXJlb2YgZGFyazsgSSB3aWxsIGNvdmVyIHRoZSBzdW4gd2l0aCBhIGNsb3VkLCBhbmQgdGhlIG1vb24gc2hhbGwgbm90IGdpdmUgaGVyIGxpZ2h0LgpBbGwgdGhlIGJyaWdodCBsaWdodHMgb2YgaGVhdmVuIHdpbGwgSSBtYWtlIGRhcmsgb3ZlciB0aGVlLCBhbmQgc2V0IGRhcmtuZXNzIHVwb24gdGh5IGxhbmQsIHNhaXRoIHRoZSBMb3JkIEdPRC4KSSB3aWxsIGFsc28gdmV4IHRoZSBoZWFydHMgb2YgbWFueSBwZW9wbGUsIHdoZW4gSSBzaGFsbCBicmluZyB0aHkgZGVzdHJ1Y3Rpb24gYW1vbmcgdGhlIG5hdGlvbnMsIGludG8gdGhlIGNvdW50cmllcyB3aGljaCB0aG91IGhhc3Qgbm90IGtub3duLgpZZWEsIEkgd2lsbCBtYWtlIG1hbnkgcGVvcGxlIGFtYXplZCBhdCB0aGVlLCBhbmQgdGhlaXIga2luZ3Mgc2hhbGwgYmUgaG9ycmlibHkgYWZyYWlkIGZvciB0aGVlLCB3aGVuIEkgc2hhbGwgYnJhbmRpc2ggbXkgc3dvcmQgYmVmb3JlIHRoZW07IGFuZCB0aGV5IHNoYWxsIHRyZW1ibGUgYXQgZXZlcnkgbW9tZW50LCBldmVyeSBtYW4gZm9yIGhpcyBvd24gbGlmZSwgaW4gdGhlIGRheSBvZiB0aHkgZmFsbC4KRm9yIHRodXMgc2FpdGggdGhlIExvcmQgR09EOyBUaGUgc3dvcmQgb2YgdGhlIGtpbmcgb2YgQmFieWxvbiBzaGFsbCBjb21lIHVwb24gdGhlZS4KQnkgdGhlIHN3b3JkcyBvZiB0aGUgbWlnaHR5IHdpbGwgSSBjYXVzZSB0aHkgbXVsdGl0dWRlIHRvIGZhbGwsIHRoZSB0ZXJyaWJsZSBvZiB0aGUgbmF0aW9ucywgYWxsIG9mIHRoZW06IGFuZCB0aGV5IHNoYWxsIHNwb2lsIHRoZSBwb21wIG9mIEVneXB0LCBhbmQgYWxsIHRoZSBtdWx0aXR1ZGUgdGhlcmVvZiBzaGFsbCBiZSBkZXN0cm95ZWQuCkkgd2lsbCBkZXN0cm95IGFsc28gYWxsIHRoZSBiZWFzdHMgdGhlcmVvZiBmcm9tIGJlc2lkZSB0aGUgZ3JlYXQgd2F0ZXJzOyBuZWl0aGVyIHNoYWxsIHRoZSBmb290IG9mIG1hbiB0cm91YmxlIHRoZW0gYW55IG1vcmUsIG5vciB0aGUgaG9vZnMgb2YgYmVhc3RzIHRyb3VibGUgdGhlbS4KVGhlbiB3aWxsIEkgbWFrZSB0aGVpciB3YXRlcnMgZGVlcCwgYW5kIGNhdXNlIHRoZWlyIHJpdmVycyB0byBydW4gbGlrZSBvaWwsIHNhaXRoIHRoZSBMb3JkIEdPRC4KV2hlbiBJIHNoYWxsIG1ha2UgdGhlIGxhbmQgb2YgRWd5cHQgZGVzb2xhdGUsIGFuZCB0aGUgY291bnRyeSBzaGFsbCBiZSBkZXN0aXR1dGUgb2YgdGhhdCB3aGVyZW9mIGl0IHdhcyBmdWxsLCB3aGVuIEkgc2hhbGwgc21pdGUgYWxsIHRoZW0gdGhhdCBkd2VsbCB0aGVyZWluLCB0aGVuIHNoYWxsIHRoZXkga25vdyB0aGF0IEkgYW0gdGhlIExPUkQuClRoaXMgaXMgdGhlIGxhbWVudGF0aW9uIHdoZXJld2l0aCB0aGV5IHNoYWxsIGxhbWVudCBoZXI6IHRoZSBkYXVnaHRlcnMgb2YgdGhlIG5hdGlvbnMgc2hhbGwgbGFtZW50IGhlcjogdGhleSBzaGFsbCBsYW1lbnQgZm9yIGhlciwgZXZlbiBmb3IgRWd5cHQsIGFuZCBmb3IgYWxsIGhlciBtdWx0aXR1ZGUsIHNhaXRoIHRoZSBMb3JkIEdPRC4KSXQgY2FtZSB0byBwYXNzIGFsc28gaW4gdGhlIHR3ZWxmdGggeWVhciwgaW4gdGhlIGZpZnRlZW50aCBkYXkgb2YgdGhlIG1vbnRoLCB0aGF0IHRoZSB3b3JkIG9mIHRoZSBMT1JEIGNhbWUgdW50byBtZSwgc2F5aW5nLApTb24gb2YgbWFuLCB3YWlsIGZvciB0aGUgbXVsdGl0dWRlIG9mIEVneXB0LCBhbmQgY2FzdCB0aGVtIGRvd24sIGV2ZW4gaGVyLCBhbmQgdGhlIGRhdWdodGVycyBvZiB0aGUgZmFtb3VzIG5hdGlvbnMsIHVudG8gdGhlIG5ldGhlciBwYXJ0cyBvZiB0aGUgZWFydGgsIHdpdGggdGhlbSB0aGF0IGdvIGRvd24gaW50byB0aGUgcGl0LgpXaG9tIGRvc3QgdGhvdSBwYXNzIGluIGJlYXV0eT8gZ28gZG93biwgYW5kIGJlIHRob3UgbGFpZCB3aXRoIHRoZSB1bmNpcmN1bWNpc2VkLgpUaGV5IHNoYWxsIGZhbGwgaW4gdGhlIG1pZHN0IG9mIHRoZW0gdGhhdCBhcmUgc2xhaW4gYnkgdGhlIHN3b3JkOiBzaGUgaXMgZGVsaXZlcmVkIHRvIHRoZSBzd29yZDogZHJhdyBoZXIgYW5kIGFsbCBoZXIgbXVsdGl0dWRlcy4KVGhlIHN0cm9uZyBhbW9uZyB0aGUgbWlnaHR5IHNoYWxsIHNwZWFrIHRvIGhpbSBvdXQgb2YgdGhlIG1pZHN0IG9mIGhlbGwgd2l0aCB0aGVtIHRoYXQgaGVscCBoaW06IHRoZXkgYXJlIGdvbmUgZG93biwgdGhleSBsaWUgdW5jaXJjdW1jaXNlZCwgc2xhaW4gYnkgdGhlIHN3b3JkLgpBc3NodXIgaXMgdGhlcmUgYW5kIGFsbCBoZXIgY29tcGFueTogaGlzIGdyYXZlcyBhcmUgYWJvdXQgaGltOiBhbGwgb2YgdGhlbSBzbGFpbiwgZmFsbGVuIGJ5IHRoZSBzd29yZDoKV2hvc2UgZ3JhdmVzIGFyZSBzZXQgaW4gdGhlIHNpZGVzIG9mIHRoZSBwaXQsIGFuZCBoZXIgY29tcGFueSBpcyByb3VuZCBhYm91dCBoZXIgZ3JhdmU6IGFsbCBvZiB0aGVtIHNsYWluLCBmYWxsZW4gYnkgdGhlIHN3b3JkLCB3aGljaCBjYXVzZWQgdGVycm9yIGluIHRoZSBsYW5kIG9mIHRoZSBsaXZpbmcuClRoZXJlIGlzIEVsYW0gYW5kIGFsbCBoZXIgbXVsdGl0dWRlIHJvdW5kIGFib3V0IGhlciBncmF2ZSwgYWxsIG9mIHRoZW0gc2xhaW4sIGZhbGxlbiBieSB0aGUgc3dvcmQsIHdoaWNoIGFyZSBnb25lIGRvd24gdW5jaXJjdW1jaXNlZCBpbnRvIHRoZSBuZXRoZXIgcGFydHMgb2YgdGhlIGVhcnRoLCB3aGljaCBjYXVzZWQgdGhlaXIgdGVycm9yIGluIHRoZSBsYW5kIG9mIHRoZSBsaXZpbmc7IHlldCBoYXZlIHRoZXkgYm9ybmUgdGhlaXIgc2hhbWUgd2l0aCB0aGVtIHRoYXQgZ28gZG93biB0byB0aGUgcGl0LgpUaGV5IGhhdmUgc2V0IGhlciBhIGJlZCBpbiB0aGUgbWlkc3Qgb2YgdGhlIHNsYWluIHdpdGggYWxsIGhlciBtdWx0aXR1ZGU6IGhlciBncmF2ZXMgYXJlIHJvdW5kIGFib3V0IGhpbTogYWxsIG9mIHRoZW0gdW5jaXJjdW1jaXNlZCwgc2xhaW4gYnkgdGhlIHN3b3JkOiB0aG91Z2ggdGhlaXIgdGVycm9yIHdhcyBjYXVzZWQgaW4gdGhlIGxhbmQgb2YgdGhlIGxpdmluZywgeWV0IGhhdmUgdGhleSBib3JuZSB0aGVpciBzaGFtZSB3aXRoIHRoZW0gdGhhdCBnbyBkb3duIHRvIHRoZSBwaXQ6IGhlIGlzIHB1dCBpbiB0aGUgbWlkc3Qgb2YgdGhlbSB0aGF0IGJlIHNsYWluLgpUaGVyZSBpcyBNZXNoZWNoLCBUdWJhbCwgYW5kIGFsbCBoZXIgbXVsdGl0dWRlOiBoZXIgZ3JhdmVzIGFyZSByb3VuZCBhYm91dCBoaW06IGFsbCBvZiB0aGVtIHVuY2lyY3VtY2lzZWQsIHNsYWluIGJ5IHRoZSBzd29yZCwgdGhvdWdoIHRoZXkgY2F1c2VkIHRoZWlyIHRlcnJvciBpbiB0aGUgbGFuZCBvZiB0aGUgbGl2aW5nLgpBbmQgdGhleSBzaGFsbCBub3QgbGllIHdpdGggdGhlIG1pZ2h0eSB0aGF0IGFyZSBmYWxsZW4gb2YgdGhlIHVuY2lyY3VtY2lzZWQsIHdoaWNoIGFyZSBnb25lIGRvd24gdG8gaGVsbCB3aXRoIHRoZWlyIHdlYXBvbnMgb2Ygd2FyOiBhbmQgdGhleSBoYXZlIGxhaWQgdGhlaXIgc3dvcmRzIHVuZGVyIHRoZWlyIGhlYWRzLCBidXQgdGhlaXIgaW5pcXVpdGllcyBzaGFsbCBiZSB1cG9uIHRoZWlyIGJvbmVzLCB0aG91Z2ggdGhleSB3ZXJlIHRoZSB0ZXJyb3Igb2YgdGhlIG1pZ2h0eSBpbiB0aGUgbGFuZCBvZiB0aGUgbGl2aW5nLgpZZWEsIHRob3Ugc2hhbHQgYmUgYnJva2VuIGluIHRoZSBtaWRzdCBvZiB0aGUgdW5jaXJjdW1jaXNlZCwgYW5kIHNoYWx0IGxpZSB3aXRoIHRoZW0gdGhhdCBhcmUgc2xhaW4gd2l0aCB0aGUgc3dvcmQuClRoZXJlIGlzIEVkb20sIGhlciBraW5ncywgYW5kIGFsbCBoZXIgcHJpbmNlcywgd2hpY2ggd2l0aCB0aGVpciBtaWdodCBhcmUgbGFpZCBieSB0aGVtIHRoYXQgd2VyZSBzbGFpbiBieSB0aGUgc3dvcmQ6IHRoZXkgc2hhbGwgbGllIHdpdGggdGhlIHVuY2lyY3VtY2lzZWQsIGFuZCB3aXRoIHRoZW0gdGhhdCBnbyBkb3duIHRvIHRoZSBwaXQuClRoZXJlIGJlIHRoZSBwcmluY2VzIG9mIHRoZSBub3J0aCwgYWxsIG9mIHRoZW0sIGFuZCBhbGwgdGhlIFppZG9uaWFucywgd2hpY2ggYXJlIGdvbmUgZG93biB3aXRoIHRoZSBzbGFpbjsgd2l0aCB0aGVpciB0ZXJyb3IgdGhleSBhcmUgYXNoYW1lZCBvZiB0aGVpciBtaWdodDsgYW5kIHRoZXkgbGllIHVuY2lyY3VtY2lzZWQgd2l0aCB0aGVtIHRoYXQgYmUgc2xhaW4gYnkgdGhlIHN3b3JkLCBhbmQgYmVhciB0aGVpciBzaGFtZSB3aXRoIHRoZW0gdGhhdCBnbyBkb3duIHRvIHRoZSBwaXQuClBoYXJhb2ggc2hhbGwgc2VlIHRoZW0sIGFuZCBzaGFsbCBiZSBjb21mb3J0ZWQgb3ZlciBhbGwgaGlzIG11bHRpdHVkZSwgZXZlbiBQaGFyYW9oIGFuZCBhbGwgaGlzIGFybXkgc2xhaW4gYnkgdGhlIHN3b3JkLCBzYWl0aCB0aGUgTG9yZCBHT0QuCkZvciBJIGhhdmUgY2F1c2VkIG15IHRlcnJvciBpbiB0aGUgbGFuZCBvZiB0aGUgbGl2aW5nOiBhbmQgaGUgc2hhbGwgYmUgbGFpZCBpbiB0aGUgbWlkc3Qgb2YgdGhlIHVuY2lyY3VtY2lzZWQgd2l0aCB0aGVtIHRoYXQgYXJlIHNsYWluIHdpdGggdGhlIHN3b3JkLCBldmVuIFBoYXJhb2ggYW5kIGFsbCBoaXMgbXVsdGl0dWRlLCBzYWl0aCB0aGUgTG9yZCBHT0QuCkFnYWluIHRoZSB3b3JkIG9mIHRoZSBMT1JEIGNhbWUgdW50byBtZSwgc2F5aW5nLApTb24gb2YgbWFuLCBzcGVhayB0byB0aGUgY2hpbGRyZW4gb2YgdGh5IHBlb3BsZSwgYW5kIHNheSB1bnRvIHRoZW0sIFdoZW4gSSBicmluZyB0aGUgc3dvcmQgdXBvbiBhIGxhbmQsIGlmIHRoZSBwZW9wbGUgb2YgdGhlIGxhbmQgdGFrZSBhIG1hbiBvZiB0aGVpciBjb2FzdHMsIGFuZCBzZXQgaGltIGZvciB0aGVpciB3YXRjaG1hbjoKSWYgd2hlbiBoZSBzZWV0aCB0aGUgc3dvcmQgY29tZSB1cG9uIHRoZSBsYW5kLCBoZSBibG93IHRoZSB0cnVtcGV0LCBhbmQgd2FybiB0aGUgcGVvcGxlOwpUaGVuIHdob3NvZXZlciBoZWFyZXRoIHRoZSBzb3VuZCBvZiB0aGUgdHJ1bXBldCwgYW5kIHRha2V0aCBub3Qgd2FybmluZzsgaWYgdGhlIHN3b3JkIGNvbWUsIGFuZCB0YWtlIGhpbSBhd2F5LCBoaXMgYmxvb2Qgc2hhbGwgYmUgdXBvbiBoaXMgb3duIGhlYWQuCkhlIGhlYXJkIHRoZSBzb3VuZCBvZiB0aGUgdHJ1bXBldCwgYW5kIHRvb2sgbm90IHdhcm5pbmc7IGhpcyBibG9vZCBzaGFsbCBiZSB1cG9uIGhpbS4gQnV0IGhlIHRoYXQgdGFrZXRoIHdhcm5pbmcgc2hhbGwgZGVsaXZlciBoaXMgc291bC4KQnV0IGlmIHRoZSB3YXRjaG1hbiBzZWUgdGhlIHN3b3JkIGNvbWUsIGFuZCBibG93IG5vdCB0aGUgdHJ1bXBldCwgYW5kIHRoZSBwZW9wbGUgYmUgbm90IHdhcm5lZDsgaWYgdGhlIHN3b3JkIGNvbWUsIGFuZCB0YWtlIGFueSBwZXJzb24gZnJvbSBhbW9uZyB0aGVtLCBoZSBpcyB0YWtlbiBhd2F5IGluIGhpcyBpbmlxdWl0eTsgYnV0IGhpcyBibG9vZCB3aWxsIEkgcmVxdWlyZSBhdCB0aGUgd2F0Y2htYW4ncyBoYW5kLgpTbyB0aG91LCBPIHNvbiBvZiBtYW4sIEkgaGF2ZSBzZXQgdGhlZSBhIHdhdGNobWFuIHVudG8gdGhlIGhvdXNlIG9mIElzcmFlbDsgdGhlcmVmb3JlIHRob3Ugc2hhbHQgaGVhciB0aGUgd29yZCBhdCBteSBtb3V0aCwgYW5kIHdhcm4gdGhlbSBmcm9tIG1lLgpXaGVuIEkgc2F5IHVudG8gdGhlIHdpY2tlZCwgTyB3aWNrZWQgbWFuLCB0aG91IHNoYWx0IHN1cmVseSBkaWU7IGlmIHRob3UgZG9zdCBub3Qgc3BlYWsgdG8gd2FybiB0aGUgd2lja2VkIGZyb20gaGlzIHdheSwgdGhhdCB3aWNrZWQgbWFuIHNoYWxsIGRpZSBpbiBoaXMgaW5pcXVpdHk7IGJ1dCBoaXMgYmxvb2Qgd2lsbCBJIHJlcXVpcmUgYXQgdGhpbmUgaGFuZC4KTmV2ZXJ0aGVsZXNzLCBpZiB0aG91IHdhcm4gdGhlIHdpY2tlZCBvZiBoaXMgd2F5IHRvIHR1cm4gZnJvbSBpdDsgaWYgaGUgZG8gbm90IHR1cm4gZnJvbSBoaXMgd2F5LCBoZSBzaGFsbCBkaWUgaW4gaGlzIGluaXF1aXR5OyBidXQgdGhvdSBoYXN0IGRlbGl2ZXJlZCB0aHkgc291bC4KVGhlcmVmb3JlLCBPIHRob3Ugc29uIG9mIG1hbiwgc3BlYWsgdW50byB0aGUgaG91c2Ugb2YgSXNyYWVsOyBUaHVzIHllIHNwZWFrLCBzYXlpbmcsIElmIG91ciB0cmFuc2dyZXNzaW9ucyBhbmQgb3VyIHNpbnMgYmUgdXBvbiB1cywgYW5kIHdlIHBpbmUgYXdheSBpbiB0aGVtLCBob3cgc2hvdWxkIHdlIHRoZW4gbGl2ZT8KU2F5IHVudG8gdGhlbSwgQXMgSSBsaXZlLCBzYWl0aCB0aGUgTG9yZCBHT0QsIEkgaGF2ZSBubyBwbGVhc3VyZSBpbiB0aGUgZGVhdGggb2YgdGhlIHdpY2tlZDsgYnV0IHRoYXQgdGhlIHdpY2tlZCB0dXJuIGZyb20gaGlzIHdheSBhbmQgbGl2ZTogdHVybiB5ZSwgdHVybiB5ZSBmcm9tIHlvdXIgZXZpbCB3YXlzOyBmb3Igd2h5IHdpbGwgeWUgZGllLCBPIGhvdXNlIG9mIElzcmFlbD8KVGhlcmVmb3JlLCB0aG91IHNvbiBvZiBtYW4sIHNheSB1bnRvIHRoZSBjaGlsZHJlbiBvZiB0aHkgcGVvcGxlLCBUaGUgcmlnaHRlb3VzbmVzcyBvZiB0aGUgcmlnaHRlb3VzIHNoYWxsIG5vdCBkZWxpdmVyIGhpbSBpbiB0aGUgZGF5IG9mIGhpcyB0cmFuc2dyZXNzaW9uOiBhcyBmb3IgdGhlIHdpY2tlZG5lc3Mgb2YgdGhlIHdpY2tlZCwgaGUgc2hhbGwgbm90IGZhbGwgdGhlcmVieSBpbiB0aGUgZGF5IHRoYXQgaGUgdHVybmV0aCBmcm9tIGhpcyB3aWNrZWRuZXNzOyBuZWl0aGVyIHNoYWxsIHRoZSByaWdodGVvdXMgYmUgYWJsZSB0byBsaXZlIGZvciBoaXMgcmlnaHRlb3VzbmVzcyBpbiB0aGUgZGF5IHRoYXQgaGUgc2lubmV0aC4KV2hlbiBJIHNoYWxsIHNheSB0byB0aGUgcmlnaHRlb3VzLCB0aGF0IGhlIHNoYWxsIHN1cmVseSBsaXZlOyBpZiBoZSB0cnVzdCB0byBoaXMgb3duIHJpZ2h0ZW91c25lc3MsIGFuZCBjb21taXQgaW5pcXVpdHksIGFsbCBoaXMgcmlnaHRlb3VzbmVzc2VzIHNoYWxsIG5vdCBiZSByZW1lbWJlcmVkOyBidXQgZm9yIGhpcyBpbmlxdWl0eSB0aGF0IGhlIGhhdGggY29tbWl0dGVkLCBoZSBzaGFsbCBkaWUgZm9yIGl0LgpBZ2Fpbiwgd2hlbiBJIHNheSB1bnRvIHRoZSB3aWNrZWQsIFRob3Ugc2hhbHQgc3VyZWx5IGRpZTsgaWYgaGUgdHVybiBmcm9tIGhpcyBzaW4sIGFuZCBkbyB0aGF0IHdoaWNoIGlzIGxhd2Z1bCBhbmQgcmlnaHQ7CklmIHRoZSB3aWNrZWQgcmVzdG9yZSB0aGUgcGxlZGdlLCBnaXZlIGFnYWluIHRoYXQgaGUgaGFkIHJvYmJlZCwgd2FsayBpbiB0aGUgc3RhdHV0ZXMgb2YgbGlmZSwgd2l0aG91dCBjb21taXR0aW5nIGluaXF1aXR5OyBoZSBzaGFsbCBzdXJlbHkgbGl2ZSwgaGUgc2hhbGwgbm90IGRpZS4KTm9uZSBvZiBoaXMgc2lucyB0aGF0IGhlIGhhdGggY29tbWl0dGVkIHNoYWxsIGJlIG1lbnRpb25lZCB1bnRvIGhpbTogaGUgaGF0aCBkb25lIHRoYXQgd2hpY2ggaXMgbGF3ZnVsIGFuZCByaWdodDsgaGUgc2hhbGwgc3VyZWx5IGxpdmUuCllldCB0aGUgY2hpbGRyZW4gb2YgdGh5IHBlb3BsZSBzYXksIFRoZSB3YXkgb2YgdGhlIExvcmQgaXMgbm90IGVxdWFsOiBidXQgYXMgZm9yIHRoZW0sIHRoZWlyIHdheSBpcyBub3QgZXF1YWwuCldoZW4gdGhlIHJpZ2h0ZW91cyB0dXJuZXRoIGZyb20gaGlzIHJpZ2h0ZW91c25lc3MsIGFuZCBjb21taXR0ZXRoIGluaXF1aXR5LCBoZSBzaGFsbCBldmVuIGRpZSB0aGVyZWJ5LgpCdXQgaWYgdGhlIHdpY2tlZCB0dXJuIGZyb20gaGlzIHdpY2tlZG5lc3MsIGFuZCBkbyB0aGF0IHdoaWNoIGlzIGxhd2Z1bCBhbmQgcmlnaHQsIGhlIHNoYWxsIGxpdmUgdGhlcmVieS4KWWV0IHllIHNheSwgVGhlIHdheSBvZiB0aGUgTG9yZCBpcyBub3QgZXF1YWwuIE8geWUgaG91c2Ugb2YgSXNyYWVsLCBJIHdpbGwganVkZ2UgeW91IGV2ZXJ5IG9uZSBhZnRlciBoaXMgd2F5cy4KQW5kIGl0IGNhbWUgdG8gcGFzcyBpbiB0aGUgdHdlbGZ0aCB5ZWFyIG9mIG91ciBjYXB0aXZpdHksIGluIHRoZSB0ZW50aCBtb250aCwgaW4gdGhlIGZpZnRoIGRheSBvZiB0aGUgbW9udGgsIHRoYXQgb25lIHRoYXQgaGFkIGVzY2FwZWQgb3V0IG9mIEplcnVzYWxlbSBjYW1lIHVudG8gbWUsIHNheWluZywgVGhlIGNpdHkgaXMgc21pdHRlbi4KTm93IHRoZSBoYW5kIG9mIHRoZSBMT1JEIHdhcyB1cG9uIG1lIGluIHRoZSBldmVuaW5nLCBhZm9yZSBoZSB0aGF0IHdhcyBlc2NhcGVkIGNhbWU7IGFuZCBoYWQgb3BlbmVkIG15IG1vdXRoLCB1bnRpbCBoZSBjYW1lIHRvIG1lIGluIHRoZSBtb3JuaW5nOyBhbmQgbXkgbW91dGggd2FzIG9wZW5lZCwgYW5kIEkgd2FzIG5vIG1vcmUgZHVtYi4KVGhlbiB0aGUgd29yZCBvZiB0aGUgTE9SRCBjYW1lIHVudG8gbWUsIHNheWluZywKU29uIG9mIG1hbiwgdGhleSB0aGF0IGluaGFiaXQgdGhvc2Ugd2FzdGVzIG9mIHRoZSBsYW5kIG9mIElzcmFlbCBzcGVhaywgc2F5aW5nLCBBYnJhaGFtIHdhcyBvbmUsIGFuZCBoZSBpbmhlcml0ZWQgdGhlIGxhbmQ6IGJ1dCB3ZSBhcmUgbWFueTsgdGhlIGxhbmQgaXMgZ2l2ZW4gdXMgZm9yIGluaGVyaXRhbmNlLgpXaGVyZWZvcmUgc2F5IHVudG8gdGhlbSwgVGh1cyBzYWl0aCB0aGUgTG9yZCBHT0Q7IFllIGVhdCB3aXRoIHRoZSBibG9vZCwgYW5kIGxpZnQgdXAgeW91ciBleWVzIHRvd2FyZCB5b3VyIGlkb2xzLCBhbmQgc2hlZCBibG9vZDogYW5kIHNoYWxsIHllIHBvc3Nlc3MgdGhlIGxhbmQ/ClllIHN0YW5kIHVwb24geW91ciBzd29yZCwgeWUgd29yayBhYm9taW5hdGlvbiwgYW5kIHllIGRlZmlsZSBldmVyeSBvbmUgaGlzIG5laWdoYm91cidzIHdpZmU6IGFuZCBzaGFsbCB5ZSBwb3NzZXNzIHRoZSBsYW5kPwpTYXkgdGhvdSB0aHVzIHVudG8gdGhlbSwgVGh1cyBzYWl0aCB0aGUgTG9yZCBHT0Q7IEFzIEkgbGl2ZSwgc3VyZWx5IHRoZXkgdGhhdCBhcmUgaW4gdGhlIHdhc3RlcyBzaGFsbCBmYWxsIGJ5IHRoZSBzd29yZCwgYW5kIGhpbSB0aGF0IGlzIGluIHRoZSBvcGVuIGZpZWxkIHdpbGwgSSBnaXZlIHRvIHRoZSBiZWFzdHMgdG8gYmUgZGV2b3VyZWQsIGFuZCB0aGV5IHRoYXQgYmUgaW4gdGhlIGZvcnRzIGFuZCBpbiB0aGUgY2F2ZXMgc2hhbGwgZGllIG9mIHRoZSBwZXN0aWxlbmNlLgpGb3IgSSB3aWxsIGxheSB0aGUgbGFuZCBtb3N0IGRlc29sYXRlLCBhbmQgdGhlIHBvbXAgb2YgaGVyIHN0cmVuZ3RoIHNoYWxsIGNlYXNlOyBhbmQgdGhlIG1vdW50YWlucyBvZiBJc3JhZWwgc2hhbGwgYmUgZGVzb2xhdGUsIHRoYXQgbm9uZSBzaGFsbCBwYXNzIHRocm91Z2guClRoZW4gc2hhbGwgdGhleSBrbm93IHRoYXQgSSBhbSB0aGUgTE9SRCwgd2hlbiBJIGhhdmUgbGFpZCB0aGUgbGFuZCBtb3N0IGRlc29sYXRlIGJlY2F1c2Ugb2YgYWxsIHRoZWlyIGFib21pbmF0aW9ucyB3aGljaCB0aGV5IGhhdmUgY29tbWl0dGVkLgpBbHNvLCB0aG91IHNvbiBvZiBtYW4sIHRoZSBjaGlsZHJlbiBvZiB0aHkgcGVvcGxlIHN0aWxsIGFyZSB0YWxraW5nIGFnYWluc3QgdGhlZSBieSB0aGUgd2FsbHMgYW5kIGluIHRoZSBkb29ycyBvZiB0aGUgaG91c2VzLCBhbmQgc3BlYWsgb25lIHRvIGFub3RoZXIsIGV2ZXJ5IG9uZSB0byBoaXMgYnJvdGhlciwgc2F5aW5nLCBDb21lLCBJIHByYXkgeW91LCBhbmQgaGVhciB3aGF0IGlzIHRoZSB3b3JkIHRoYXQgY29tZXRoIGZvcnRoIGZyb20gdGhlIExPUkQuCkFuZCB0aGV5IGNvbWUgdW50byB0aGVlIGFzIHRoZSBwZW9wbGUgY29tZXRoLCBhbmQgdGhleSBzaXQgYmVmb3JlIHRoZWUgYXMgbXkgcGVvcGxlLCBhbmQgdGhleSBoZWFyIHRoeSB3b3JkcywgYnV0IHRoZXkgd2lsbCBub3QgZG8gdGhlbTogZm9yIHdpdGggdGhlaXIgbW91dGggdGhleSBzaGV3IG11Y2ggbG92ZSwgYnV0IHRoZWlyIGhlYXJ0IGdvZXRoIGFmdGVyIHRoZWlyIGNvdmV0b3VzbmVzcy4KQW5kLCBsbywgdGhvdSBhcnQgdW50byB0aGVtIGFzIGEgdmVyeSBsb3ZlbHkgc29uZyBvZiBvbmUgdGhhdCBoYXRoIGEgcGxlYXNhbnQgdm9pY2UsIGFuZCBjYW4gcGxheSB3ZWxsIG9uIGFuIGluc3RydW1lbnQ6IGZvciB0aGV5IGhlYXIgdGh5IHdvcmRzLCBidXQgdGhleSBkbyB0aGVtIG5vdC4KQW5kIHdoZW4gdGhpcyBjb21ldGggdG8gcGFzcywgKGxvLCBpdCB3aWxsIGNvbWUsKSB0aGVuIHNoYWxsIHRoZXkga25vdyB0aGF0IGEgcHJvcGhldCBoYXRoIGJlZW4gYW1vbmcgdGhlbS4KQW5kIHRoZSB3b3JkIG9mIHRoZSBMT1JEIGNhbWUgdW50byBtZSwgc2F5aW5nLApTb24gb2YgbWFuLCBwcm9waGVzeSBhZ2FpbnN0IHRoZSBzaGVwaGVyZHMgb2YgSXNyYWVsLCBwcm9waGVzeSwgYW5kIHNheSB1bnRvIHRoZW0sIFRodXMgc2FpdGggdGhlIExvcmQgR09EIHVudG8gdGhlIHNoZXBoZXJkczsgV29lIGJlIHRvIHRoZSBzaGVwaGVyZHMgb2YgSXNyYWVsIHRoYXQgZG8gZmVlZCB0aGVtc2VsdmVzISBzaG91bGQgbm90IHRoZSBzaGVwaGVyZHMgZmVlZCB0aGUgZmxvY2tzPwpZZSBlYXQgdGhlIGZhdCwgYW5kIHllIGNsb3RoZSB5b3Ugd2l0aCB0aGUgd29vbCwgeWUga2lsbCB0aGVtIHRoYXQgYXJlIGZlZDogYnV0IHllIGZlZWQgbm90IHRoZSBmbG9jay4KVGhlIGRpc2Vhc2VkIGhhdmUgeWUgbm90IHN0cmVuZ3RoZW5lZCwgbmVpdGhlciBoYXZlIHllIGhlYWxlZCB0aGF0IHdoaWNoIHdhcyBzaWNrLCBuZWl0aGVyIGhhdmUgeWUgYm91bmQgdXAgdGhhdCB3aGljaCB3YXMgYnJva2VuLCBuZWl0aGVyIGhhdmUgeWUgYnJvdWdodCBhZ2FpbiB0aGF0IHdoaWNoIHdhcyBkcml2ZW4gYXdheSwgbmVpdGhlciBoYXZlIHllIHNvdWdodCB0aGF0IHdoaWNoIHdhcyBsb3N0OyBidXQgd2l0aCBmb3JjZSBhbmQgd2l0aCBjcnVlbHR5IGhhdmUgeWUgcnVsZWQgdGhlbS4KQW5kIHRoZXkgd2VyZSBzY2F0dGVyZWQsIGJlY2F1c2UgdGhlcmUgaXMgbm8gc2hlcGhlcmQ6IGFuZCB0aGV5IGJlY2FtZSBtZWF0IHRvIGFsbCB0aGUgYmVhc3RzIG9mIHRoZSBmaWVsZCwgd2hlbiB0aGV5IHdlcmUgc2NhdHRlcmVkLgpNeSBzaGVlcCB3YW5kZXJlZCB0aHJvdWdoIGFsbCB0aGUgbW91bnRhaW5zLCBhbmQgdXBvbiBldmVyeSBoaWdoIGhpbGw6IHllYSwgbXkgZmxvY2sgd2FzIHNjYXR0ZXJlZCB1cG9uIGFsbCB0aGUgZmFjZSBvZiB0aGUgZWFydGgsIGFuZCBub25lIGRpZCBzZWFyY2ggb3Igc2VlayBhZnRlciB0aGVtLgpUaGVyZWZvcmUsIHllIHNoZXBoZXJkcywgaGVhciB0aGUgd29yZCBvZiB0aGUgTE9SRDsKQXMgSSBsaXZlLCBzYWl0aCB0aGUgTG9yZCBHT0QsIHN1cmVseSBiZWNhdXNlIG15IGZsb2NrIGJlY2FtZSBhIHByZXksIGFuZCBteSBmbG9jayBiZWNhbWUgbWVhdCB0byBldmVyeSBiZWFzdCBvZiB0aGUgZmllbGQsIGJlY2F1c2UgdGhlcmUgd2FzIG5vIHNoZXBoZXJkLCBuZWl0aGVyIGRpZCBteSBzaGVwaGVyZHMgc2VhcmNoIGZvciBteSBmbG9jaywgYnV0IHRoZSBzaGVwaGVyZHMgZmVkIHRoZW1zZWx2ZXMsIGFuZCBmZWQgbm90IG15IGZsb2NrOwpUaGVyZWZvcmUsIE8geWUgc2hlcGhlcmRzLCBoZWFyIHRoZSB3b3JkIG9mIHRoZSBMT1JEOwpUaHVzIHNhaXRoIHRoZSBMb3JkIEdPRDsgQmVob2xkLCBJIGFtIGFnYWluc3QgdGhlIHNoZXBoZXJkczsgYW5kIEkgd2lsbCByZXF1aXJlIG15IGZsb2NrIGF0IHRoZWlyIGhhbmQsIGFuZCBjYXVzZSB0aGVtIHRvIGNlYXNlIGZyb20gZmVlZGluZyB0aGUgZmxvY2s7IG5laXRoZXIgc2hhbGwgdGhlIHNoZXBoZXJkcyBmZWVkIHRoZW1zZWx2ZXMgYW55IG1vcmU7IGZvciBJIHdpbGwgZGVsaXZlciBteSBmbG9jayBmcm9tIHRoZWlyIG1vdXRoLCB0aGF0IHRoZXkgbWF5IG5vdCBiZSBtZWF0IGZvciB0aGVtLgpGb3IgdGh1cyBzYWl0aCB0aGUgTG9yZCBHT0Q7IEJlaG9sZCwgSSwgZXZlbiBJLCB3aWxsIGJvdGggc2VhcmNoIG15IHNoZWVwLCBhbmQgc2VlayB0aGVtIG91dC4KQXMgYSBzaGVwaGVyZCBzZWVrZXRoIG91dCBoaXMgZmxvY2sgaW4gdGhlIGRheSB0aGF0IGhlIGlzIGFtb25nIGhpcyBzaGVlcCB0aGF0IGFyZSBzY2F0dGVyZWQ7IHNvIHdpbGwgSSBzZWVrIG91dCBteSBzaGVlcCwgYW5kIHdpbGwgZGVsaXZlciB0aGVtIG91dCBvZiBhbGwgcGxhY2VzIHdoZXJlIHRoZXkgaGF2ZSBiZWVuIHNjYXR0ZXJlZCBpbiB0aGUgY2xvdWR5IGFuZCBkYXJrIGRheS4KQW5kIEkgd2lsbCBicmluZyB0aGVtIG91dCBmcm9tIHRoZSBwZW9wbGUsIGFuZCBnYXRoZXIgdGhlbSBmcm9tIHRoZSBjb3VudHJpZXMsIGFuZCB3aWxsIGJyaW5nIHRoZW0gdG8gdGhlaXIgb3duIGxhbmQsIGFuZCBmZWVkIHRoZW0gdXBvbiB0aGUgbW91bnRhaW5zIG9mIElzcmFlbCBieSB0aGUgcml2ZXJzLCBhbmQgaW4gYWxsIHRoZSBpbmhhYml0ZWQgcGxhY2VzIG9mIHRoZSBjb3VudHJ5LgpJIHdpbGwgZmVlZCB0aGVtIGluIGEgZ29vZCBwYXN0dXJlLCBhbmQgdXBvbiB0aGUgaGlnaCBtb3VudGFpbnMgb2YgSXNyYWVsIHNoYWxsIHRoZWlyIGZvbGQgYmU6IHRoZXJlIHNoYWxsIHRoZXkgbGllIGluIGEgZ29vZCBmb2xkLCBhbmQgaW4gYSBmYXQgcGFzdHVyZSBzaGFsbCB0aGV5IGZlZWQgdXBvbiB0aGUgbW91bnRhaW5zIG9mIElzcmFlbC4KSSB3aWxsIGZlZWQgbXkgZmxvY2ssIGFuZCBJIHdpbGwgY2F1c2UgdGhlbSB0byBsaWUgZG93biwgc2FpdGggdGhlIExvcmQgR09ELgpJIHdpbGwgc2VlayB0aGF0IHdoaWNoIHdhcyBsb3N0LCBhbmQgYnJpbmcgYWdhaW4gdGhhdCB3aGljaCB3YXMgZHJpdmVuIGF3YXksIGFuZCB3aWxsIGJpbmQgdXAgdGhhdCB3aGljaCB3YXMgYnJva2VuLCBhbmQgd2lsbCBzdHJlbmd0aGVuIHRoYXQgd2hpY2ggd2FzIHNpY2s6IGJ1dCBJIHdpbGwgZGVzdHJveSB0aGUgZmF0IGFuZCB0aGUgc3Ryb25nOyBJIHdpbGwgZmVlZCB0aGVtIHdpdGgganVkZ21lbnQuCkFuZCBhcyBmb3IgeW91LCBPIG15IGZsb2NrLCB0aHVzIHNhaXRoIHRoZSBMb3JkIEdPRDsgQmVob2xkLCBJIGp1ZGdlIGJldHdlZW4gY2F0dGxlIGFuZCBjYXR0bGUsIGJldHdlZW4gdGhlIHJhbXMgYW5kIHRoZSBoZSBnb2F0cy4KU2VlbWV0aCBpdCBhIHNtYWxsIHRoaW5nIHVudG8geW91IHRvIGhhdmUgZWF0ZW4gdXAgdGhlIGdvb2QgcGFzdHVyZSwgYnV0IHllIG11c3QgdHJlYWQgZG93biB3aXRoIHlvdXIgZmVldCB0aGUgcmVzaWR1ZSBvZiB5b3VyIHBhc3R1cmVzPyBhbmQgdG8gaGF2ZSBkcnVuayBvZiB0aGUgZGVlcCB3YXRlcnMsIGJ1dCB5ZSBtdXN0IGZvdWwgdGhlIHJlc2lkdWUgd2l0aCB5b3VyIGZlZXQ/CkFuZCBhcyBmb3IgbXkgZmxvY2ssIHRoZXkgZWF0IHRoYXQgd2hpY2ggeWUgaGF2ZSB0cm9kZGVuIHdpdGggeW91ciBmZWV0OyBhbmQgdGhleSBkcmluayB0aGF0IHdoaWNoIHllIGhhdmUgZm91bGVkIHdpdGggeW91ciBmZWV0LgpUaGVyZWZvcmUgdGh1cyBzYWl0aCB0aGUgTG9yZCBHT0QgdW50byB0aGVtOyBCZWhvbGQsIEksIGV2ZW4gSSwgd2lsbCBqdWRnZSBiZXR3ZWVuIHRoZSBmYXQgY2F0dGxlIGFuZCBiZXR3ZWVuIHRoZSBsZWFuIGNhdHRsZS4KQmVjYXVzZSB5ZSBoYXZlIHRocnVzdCB3aXRoIHNpZGUgYW5kIHdpdGggc2hvdWxkZXIsIGFuZCBwdXNoZWQgYWxsIHRoZSBkaXNlYXNlZCB3aXRoIHlvdXIgaG9ybnMsIHRpbGwgeWUgaGF2ZSBzY2F0dGVyZWQgdGhlbSBhYnJvYWQ7ClRoZXJlZm9yZSB3aWxsIEkgc2F2ZSBteSBmbG9jaywgYW5kIHRoZXkgc2hhbGwgbm8gbW9yZSBiZSBhIHByZXk7IGFuZCBJIHdpbGwganVkZ2UgYmV0d2VlbiBjYXR0bGUgYW5kIGNhdHRsZS4KQW5kIEkgd2lsbCBzZXQgdXAgb25lIHNoZXBoZXJkIG92ZXIgdGhlbSwgYW5kIGhlIHNoYWxsIGZlZWQgdGhlbSwgZXZlbiBteSBzZXJ2YW50IERhdmlkOyBoZSBzaGFsbCBmZWVkIHRoZW0sIGFuZCBoZSBzaGFsbCBiZSB0aGVpciBzaGVwaGVyZC4KQW5kIEkgdGhlIExPUkQgd2lsbCBiZSB0aGVpciBHb2QsIGFuZCBteSBzZXJ2YW50IERhdmlkIGEgcHJpbmNlIGFtb25nIHRoZW07IEkgdGhlIExPUkQgaGF2ZSBzcG9rZW4gaXQuCkFuZCBJIHdpbGwgbWFrZSB3aXRoIHRoZW0gYSBjb3ZlbmFudCBvZiBwZWFjZSwgYW5kIHdpbGwgY2F1c2UgdGhlIGV2aWwgYmVhc3RzIHRvIGNlYXNlIG91dCBvZiB0aGUgbGFuZDogYW5kIHRoZXkgc2hhbGwgZHdlbGwgc2FmZWx5IGluIHRoZSB3aWxkZXJuZXNzLCBhbmQgc2xlZXAgaW4gdGhlIHdvb2RzLgpBbmQgSSB3aWxsIG1ha2UgdGhlbSBhbmQgdGhlIHBsYWNlcyByb3VuZCBhYm91dCBteSBoaWxsIGEgYmxlc3Npbmc7IGFuZCBJIHdpbGwgY2F1c2UgdGhlIHNob3dlciB0byBjb21lIGRvd24gaW4gaGlzIHNlYXNvbjsgdGhlcmUgc2hhbGwgYmUgc2hvd2VycyBvZiBibGVzc2luZy4KQW5kIHRoZSB0cmVlIG9mIHRoZSBmaWVsZCBzaGFsbCB5aWVsZCBoZXIgZnJ1aXQsIGFuZCB0aGUgZWFydGggc2hhbGwgeWllbGQgaGVyIGluY3JlYXNlLCBhbmQgdGhleSBzaGFsbCBiZSBzYWZlIGluIHRoZWlyIGxhbmQsIGFuZCBzaGFsbCBrbm93IHRoYXQgSSBhbSB0aGUgTE9SRCwgd2hlbiBJIGhhdmUgYnJva2VuIHRoZSBiYW5kcyBvZiB0aGVpciB5b2tlLCBhbmQgZGVsaXZlcmVkIHRoZW0gb3V0IG9mIHRoZSBoYW5kIG9mIHRob3NlIHRoYXQgc2VydmVkIHRoZW1zZWx2ZXMgb2YgdGhlbS4KQW5kIHRoZXkgc2hhbGwgbm8gbW9yZSBiZSBhIHByZXkgdG8gdGhlIGhlYXRoZW4sIG5laXRoZXIgc2hhbGwgdGhlIGJlYXN0IG9mIHRoZSBsYW5kIGRldm91ciB0aGVtOyBidXQgdGhleSBzaGFsbCBkd2VsbCBzYWZlbHksIGFuZCBub25lIHNoYWxsIG1ha2UgdGhlbSBhZnJhaWQuCkFuZCBJIHdpbGwgcmFpc2UgdXAgZm9yIHRoZW0gYSBwbGFudCBvZiByZW5vd24sIGFuZCB0aGV5IHNoYWxsIGJlIG5vIG1vcmUgY29uc3VtZWQgd2l0aCBodW5nZXIgaW4gdGhlIGxhbmQsIG5laXRoZXIgYmVhciB0aGUgc2hhbWUgb2YgdGhlIGhlYXRoZW4gYW55IG1vcmUuClRodXMgc2hhbGwgdGhleSBrbm93IHRoYXQgSSB0aGUgTE9SRCB0aGVpciBHb2QgYW0gd2l0aCB0aGVtLCBhbmQgdGhhdCB0aGV5LCBldmVuIHRoZSBob3VzZSBvZiBJc3JhZWwsIGFyZSBteSBwZW9wbGUsIHNhaXRoIHRoZSBMb3JkIEdPRC4KQW5kIHllIG15IGZsb2NrLCB0aGUgZmxvY2sgb2YgbXkgcGFzdHVyZSwgYXJlIG1lbiwgYW5kIEkgYW0geW91ciBHb2QsIHNhaXRoIHRoZSBMb3JkIEdPRC4KTW9yZW92ZXIgdGhlIHdvcmQgb2YgdGhlIExPUkQgY2FtZSB1bnRvIG1lLCBzYXlpbmcsClNvbiBvZiBtYW4sIHNldCB0aHkgZmFjZSBhZ2FpbnN0IG1vdW50IFNlaXIsIGFuZCBwcm9waGVzeSBhZ2FpbnN0IGl0LApBbmQgc2F5IHVudG8gaXQsIFRodXMgc2FpdGggdGhlIExvcmQgR09EOyBCZWhvbGQsIE8gbW91bnQgU2VpciwgSSBhbSBhZ2FpbnN0IHRoZWUsIGFuZCBJIHdpbGwgc3RyZXRjaCBvdXQgbWluZSBoYW5kIGFnYWluc3QgdGhlZSwgYW5kIEkgd2lsbCBtYWtlIHRoZWUgbW9zdCBkZXNvbGF0ZS4KSSB3aWxsIGxheSB0aHkgY2l0aWVzIHdhc3RlLCBhbmQgdGhvdSBzaGFsdCBiZSBkZXNvbGF0ZSwgYW5kIHRob3Ugc2hhbHQga25vdyB0aGF0IEkgYW0gdGhlIExPUkQuCkJlY2F1c2UgdGhvdSBoYXN0IGhhZCBhIHBlcnBldHVhbCBoYXRyZWQsIGFuZCBoYXN0IHNoZWQgdGhlIGJsb29kIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgYnkgdGhlIGZvcmNlIG9mIHRoZSBzd29yZCBpbiB0aGUgdGltZSBvZiB0aGVpciBjYWxhbWl0eSwgaW4gdGhlIHRpbWUgdGhhdCB0aGVpciBpbmlxdWl0eSBoYWQgYW4gZW5kOgpUaGVyZWZvcmUsIGFzIEkgbGl2ZSwgc2FpdGggdGhlIExvcmQgR09ELCBJIHdpbGwgcHJlcGFyZSB0aGVlIHVudG8gYmxvb2QsIGFuZCBibG9vZCBzaGFsbCBwdXJzdWUgdGhlZTogc2l0aCB0aG91IGhhc3Qgbm90IGhhdGVkIGJsb29kLCBldmVuIGJsb29kIHNoYWxsIHB1cnN1ZSB0aGVlLgpUaHVzIHdpbGwgSSBtYWtlIG1vdW50IFNlaXIgbW9zdCBkZXNvbGF0ZSwgYW5kIGN1dCBvZmYgZnJvbSBpdCBoaW0gdGhhdCBwYXNzZXRoIG91dCBhbmQgaGltIHRoYXQgcmV0dXJuZXRoLgpBbmQgSSB3aWxsIGZpbGwgaGlzIG1vdW50YWlucyB3aXRoIGhpcyBzbGFpbiBtZW46IGluIHRoeSBoaWxscywgYW5kIGluIHRoeSB2YWxsZXlzLCBhbmQgaW4gYWxsIHRoeSByaXZlcnMsIHNoYWxsIHRoZXkgZmFsbCB0aGF0IGFyZSBzbGFpbiB3aXRoIHRoZSBzd29yZC4KSSB3aWxsIG1ha2UgdGhlZSBwZXJwZXR1YWwgZGVzb2xhdGlvbnMsIGFuZCB0aHkgY2l0aWVzIHNoYWxsIG5vdCByZXR1cm46IGFuZCB5ZSBzaGFsbCBrbm93IHRoYXQgSSBhbSB0aGUgTE9SRC4KQmVjYXVzZSB0aG91IGhhc3Qgc2FpZCwgVGhlc2UgdHdvIG5hdGlvbnMgYW5kIHRoZXNlIHR3byBjb3VudHJpZXMgc2hhbGwgYmUgbWluZSwgYW5kIHdlIHdpbGwgcG9zc2VzcyBpdDsgd2hlcmVhcyB0aGUgTE9SRCB3YXMgdGhlcmU6ClRoZXJlZm9yZSwgYXMgSSBsaXZlLCBzYWl0aCB0aGUgTG9yZCBHT0QsIEkgd2lsbCBldmVuIGRvIGFjY29yZGluZyB0byB0aGluZSBhbmdlciwgYW5kIGFjY29yZGluZyB0byB0aGluZSBlbnZ5IHdoaWNoIHRob3UgaGFzdCB1c2VkIG91dCBvZiB0aHkgaGF0cmVkIGFnYWluc3QgdGhlbTsgYW5kIEkgd2lsbCBtYWtlIG15c2VsZiBrbm93biBhbW9uZyB0aGVtLCB3aGVuIEkgaGF2ZSBqdWRnZWQgdGhlZS4KQW5kIHRob3Ugc2hhbHQga25vdyB0aGF0IEkgYW0gdGhlIExPUkQsIGFuZCB0aGF0IEkgaGF2ZSBoZWFyZCBhbGwgdGh5IGJsYXNwaGVtaWVzIHdoaWNoIHRob3UgaGFzdCBzcG9rZW4gYWdhaW5zdCB0aGUgbW91bnRhaW5zIG9mIElzcmFlbCwgc2F5aW5nLCBUaGV5IGFyZSBsYWlkIGRlc29sYXRlLCB0aGV5IGFyZSBnaXZlbiB1cyB0byBjb25zdW1lLgpUaHVzIHdpdGggeW91ciBtb3V0aCB5ZSBoYXZlIGJvYXN0ZWQgYWdhaW5zdCBtZSwgYW5kIGhhdmUgbXVsdGlwbGllZCB5b3VyIHdvcmRzIGFnYWluc3QgbWU6IEkgaGF2ZSBoZWFyZCB0aGVtLgpUaHVzIHNhaXRoIHRoZSBMb3JkIEdPRDsgV2hlbiB0aGUgd2hvbGUgZWFydGggcmVqb2ljZXRoLCBJIHdpbGwgbWFrZSB0aGVlIGRlc29sYXRlLgpBcyB0aG91IGRpZHN0IHJlam9pY2UgYXQgdGhlIGluaGVyaXRhbmNlIG9mIHRoZSBob3VzZSBvZiBJc3JhZWwsIGJlY2F1c2UgaXQgd2FzIGRlc29sYXRlLCBzbyB3aWxsIEkgZG8gdW50byB0aGVlOiB0aG91IHNoYWx0IGJlIGRlc29sYXRlLCBPIG1vdW50IFNlaXIsIGFuZCBhbGwgSWR1bWVhLCBldmVuIGFsbCBvZiBpdDogYW5kIHRoZXkgc2hhbGwga25vdyB0aGF0IEkgYW0gdGhlIExPUkQuCkFsc28sIHRob3Ugc29uIG9mIG1hbiwgcHJvcGhlc3kgdW50byB0aGUgbW91bnRhaW5zIG9mIElzcmFlbCwgYW5kIHNheSwgWWUgbW91bnRhaW5zIG9mIElzcmFlbCwgaGVhciB0aGUgd29yZCBvZiB0aGUgTE9SRDoKVGh1cyBzYWl0aCB0aGUgTG9yZCBHT0Q7IEJlY2F1c2UgdGhlIGVuZW15IGhhdGggc2FpZCBhZ2FpbnN0IHlvdSwgQWhhLCBldmVuIHRoZSBhbmNpZW50IGhpZ2ggcGxhY2VzIGFyZSBvdXJzIGluIHBvc3Nlc3Npb246ClRoZXJlZm9yZSBwcm9waGVzeSBhbmQgc2F5LCBUaHVzIHNhaXRoIHRoZSBMb3JkIEdPRDsgQmVjYXVzZSB0aGV5IGhhdmUgbWFkZSB5b3UgZGVzb2xhdGUsIGFuZCBzd2FsbG93ZWQgeW91IHVwIG9uIGV2ZXJ5IHNpZGUsIHRoYXQgeWUgbWlnaHQgYmUgYSBwb3NzZXNzaW9uIHVudG8gdGhlIHJlc2lkdWUgb2YgdGhlIGhlYXRoZW4sIGFuZCB5ZSBhcmUgdGFrZW4gdXAgaW4gdGhlIGxpcHMgb2YgdGFsa2VycywgYW5kIGFyZSBhbiBpbmZhbXkgb2YgdGhlIHBlb3BsZToKVGhlcmVmb3JlLCB5ZSBtb3VudGFpbnMgb2YgSXNyYWVsLCBoZWFyIHRoZSB3b3JkIG9mIHRoZSBMb3JkIEdPRDsgVGh1cyBzYWl0aCB0aGUgTG9yZCBHT0QgdG8gdGhlIG1vdW50YWlucywgYW5kIHRvIHRoZSBoaWxscywgdG8gdGhlIHJpdmVycywgYW5kIHRvIHRoZSB2YWxsZXlzLCB0byB0aGUgZGVzb2xhdGUgd2FzdGVzLCBhbmQgdG8gdGhlIGNpdGllcyB0aGF0IGFyZSBmb3JzYWtlbiwgd2hpY2ggYmVjYW1lIGEgcHJleSBhbmQgZGVyaXNpb24gdG8gdGhlIHJlc2lkdWUgb2YgdGhlIGhlYXRoZW4gdGhhdCBhcmUgcm91bmQgYWJvdXQ7ClRoZXJlZm9yZSB0aHVzIHNhaXRoIHRoZSBMb3JkIEdPRDsgU3VyZWx5IGluIHRoZSBmaXJlIG9mIG15IGplYWxvdXN5IGhhdmUgSSBzcG9rZW4gYWdhaW5zdCB0aGUgcmVzaWR1ZSBvZiB0aGUgaGVhdGhlbiwgYW5kIGFnYWluc3QgYWxsIElkdW1lYSwgd2hpY2ggaGF2ZSBhcHBvaW50ZWQgbXkgbGFuZCBpbnRvIHRoZWlyIHBvc3Nlc3Npb24gd2l0aCB0aGUgam95IG9mIGFsbCB0aGVpciBoZWFydCwgd2l0aCBkZXNwaXRlZnVsIG1pbmRzLCB0byBjYXN0IGl0IG91dCBmb3IgYSBwcmV5LgpQcm9waGVzeSB0aGVyZWZvcmUgY29uY2VybmluZyB0aGUgbGFuZCBvZiBJc3JhZWwsIGFuZCBzYXkgdW50byB0aGUgbW91bnRhaW5zLCBhbmQgdG8gdGhlIGhpbGxzLCB0byB0aGUgcml2ZXJzLCBhbmQgdG8gdGhlIHZhbGxleXMsIFRodXMgc2FpdGggdGhlIExvcmQgR09EOyBCZWhvbGQsIEkgaGF2ZSBzcG9rZW4gaW4gbXkgamVhbG91c3kgYW5kIGluIG15IGZ1cnksIGJlY2F1c2UgeWUgaGF2ZSBib3JuZSB0aGUgc2hhbWUgb2YgdGhlIGhlYXRoZW46ClRoZXJlZm9yZSB0aHVzIHNhaXRoIHRoZSBMb3JkIEdPRDsgSSBoYXZlIGxpZnRlZCB1cCBtaW5lIGhhbmQsIFN1cmVseSB0aGUgaGVhdGhlbiB0aGF0IGFyZSBhYm91dCB5b3UsIHRoZXkgc2hhbGwgYmVhciB0aGVpciBzaGFtZS4KQnV0IHllLCBPIG1vdW50YWlucyBvZiBJc3JhZWwsIHllIHNoYWxsIHNob290IGZvcnRoIHlvdXIgYnJhbmNoZXMsIGFuZCB5aWVsZCB5b3VyIGZydWl0IHRvIG15IHBlb3BsZSBvZiBJc3JhZWw7IGZvciB0aGV5IGFyZSBhdCBoYW5kIHRvIGNvbWUuCkZvciwgYmVob2xkLCBJIGFtIGZvciB5b3UsIGFuZCBJIHdpbGwgdHVybiB1bnRvIHlvdSwgYW5kIHllIHNoYWxsIGJlIHRpbGxlZCBhbmQgc293bjoKQW5kIEkgd2lsbCBtdWx0aXBseSBtZW4gdXBvbiB5b3UsIGFsbCB0aGUgaG91c2Ugb2YgSXNyYWVsLCBldmVuIGFsbCBvZiBpdDogYW5kIHRoZSBjaXRpZXMgc2hhbGwgYmUgaW5oYWJpdGVkLCBhbmQgdGhlIHdhc3RlcyBzaGFsbCBiZSBidWlsZGVkOgpBbmQgSSB3aWxsIG11bHRpcGx5IHVwb24geW91IG1hbiBhbmQgYmVhc3Q7IGFuZCB0aGV5IHNoYWxsIGluY3JlYXNlIGFuZCBicmluZyBmcnVpdDogYW5kIEkgd2lsbCBzZXR0bGUgeW91IGFmdGVyIHlvdXIgb2xkIGVzdGF0ZXMsIGFuZCB3aWxsIGRvIGJldHRlciB1bnRvIHlvdSB0aGFuIGF0IHlvdXIgYmVnaW5uaW5nczogYW5kIHllIHNoYWxsIGtub3cgdGhhdCBJIGFtIHRoZSBMT1JELgpZZWEsIEkgd2lsbCBjYXVzZSBtZW4gdG8gd2FsayB1cG9uIHlvdSwgZXZlbiBteSBwZW9wbGUgSXNyYWVsOyBhbmQgdGhleSBzaGFsbCBwb3NzZXNzIHRoZWUsIGFuZCB0aG91IHNoYWx0IGJlIHRoZWlyIGluaGVyaXRhbmNlLCBhbmQgdGhvdSBzaGFsdCBubyBtb3JlIGhlbmNlZm9ydGggYmVyZWF2ZSB0aGVtIG9mIG1lbi4KVGh1cyBzYWl0aCB0aGUgTG9yZCBHT0Q7IEJlY2F1c2UgdGhleSBzYXkgdW50byB5b3UsIFRob3UgbGFuZCBkZXZvdXJlc3QgdXAgbWVuLCBhbmQgaGFzdCBiZXJlYXZlZCB0aHkgbmF0aW9uczoKVGhlcmVmb3JlIHRob3Ugc2hhbHQgZGV2b3VyIG1lbiBubyBtb3JlLCBuZWl0aGVyIGJlcmVhdmUgdGh5IG5hdGlvbnMgYW55IG1vcmUsIHNhaXRoIHRoZSBMb3JkIEdPRC4KTmVpdGhlciB3aWxsIEkgY2F1c2UgbWVuIHRvIGhlYXIgaW4gdGhlZSB0aGUgc2hhbWUgb2YgdGhlIGhlYXRoZW4gYW55IG1vcmUsIG5laXRoZXIgc2hhbHQgdGhvdSBiZWFyIHRoZSByZXByb2FjaCBvZiB0aGUgcGVvcGxlIGFueSBtb3JlLCBuZWl0aGVyIHNoYWx0IHRob3UgY2F1c2UgdGh5IG5hdGlvbnMgdG8gZmFsbCBhbnkgbW9yZSwgc2FpdGggdGhlIExvcmQgR09ELgpNb3Jlb3ZlciB0aGUgd29yZCBvZiB0aGUgTE9SRCBjYW1lIHVudG8gbWUsIHNheWluZywKU29uIG9mIG1hbiwgd2hlbiB0aGUgaG91c2Ugb2YgSXNyYWVsIGR3ZWx0IGluIHRoZWlyIG93biBsYW5kLCB0aGV5IGRlZmlsZWQgaXQgYnkgdGhlaXIgb3duIHdheSBhbmQgYnkgdGhlaXIgZG9pbmdzOiB0aGVpciB3YXkgd2FzIGJlZm9yZSBtZSBhcyB0aGUgdW5jbGVhbm5lc3Mgb2YgYSByZW1vdmVkIHdvbWFuLgpXaGVyZWZvcmUgSSBwb3VyZWQgbXkgZnVyeSB1cG9uIHRoZW0gZm9yIHRoZSBibG9vZCB0aGF0IHRoZXkgaGFkIHNoZWQgdXBvbiB0aGUgbGFuZCwgYW5kIGZvciB0aGVpciBpZG9scyB3aGVyZXdpdGggdGhleSBoYWQgcG9sbHV0ZWQgaXQ6CkFuZCBJIHNjYXR0ZXJlZCB0aGVtIGFtb25nIHRoZSBoZWF0aGVuLCBhbmQgdGhleSB3ZXJlIGRpc3BlcnNlZCB0aHJvdWdoIHRoZSBjb3VudHJpZXM6IGFjY29yZGluZyB0byB0aGVpciB3YXkgYW5kIGFjY29yZGluZyB0byB0aGVpciBkb2luZ3MgSSBqdWRnZWQgdGhlbS4KQW5kIHdoZW4gdGhleSBlbnRlcmVkIHVudG8gdGhlIGhlYXRoZW4sIHdoaXRoZXIgdGhleSB3ZW50LCB0aGV5IHByb2ZhbmVkIG15IGhvbHkgbmFtZSwgd2hlbiB0aGV5IHNhaWQgdG8gdGhlbSwgVGhlc2UgYXJlIHRoZSBwZW9wbGUgb2YgdGhlIExPUkQsIGFuZCBhcmUgZ29uZSBmb3J0aCBvdXQgb2YgaGlzIGxhbmQuCkJ1dCBJIGhhZCBwaXR5IGZvciBtaW5lIGhvbHkgbmFtZSwgd2hpY2ggdGhlIGhvdXNlIG9mIElzcmFlbCBoYWQgcHJvZmFuZWQgYW1vbmcgdGhlIGhlYXRoZW4sIHdoaXRoZXIgdGhleSB3ZW50LgpUaGVyZWZvcmUgc2F5IHVudG8gdGhlIGhvdXNlIG9mIElzcmFlbCwgdGh1cyBzYWl0aCB0aGUgTG9yZCBHT0Q7IEkgZG8gbm90IHRoaXMgZm9yIHlvdXIgc2FrZXMsIE8gaG91c2Ugb2YgSXNyYWVsLCBidXQgZm9yIG1pbmUgaG9seSBuYW1lJ3Mgc2FrZSwgd2hpY2ggeWUgaGF2ZSBwcm9mYW5lZCBhbW9uZyB0aGUgaGVhdGhlbiwgd2hpdGhlciB5ZSB3ZW50LgpBbmQgSSB3aWxsIHNhbmN0aWZ5IG15IGdyZWF0IG5hbWUsIHdoaWNoIHdhcyBwcm9mYW5lZCBhbW9uZyB0aGUgaGVhdGhlbiwgd2hpY2ggeWUgaGF2ZSBwcm9mYW5lZCBpbiB0aGUgbWlkc3Qgb2YgdGhlbTsgYW5kIHRoZSBoZWF0aGVuIHNoYWxsIGtub3cgdGhhdCBJIGFtIHRoZSBMT1JELCBzYWl0aCB0aGUgTG9yZCBHT0QsIHdoZW4gSSBzaGFsbCBiZSBzYW5jdGlmaWVkIGluIHlvdSBiZWZvcmUgdGhlaXIgZXllcy4KRm9yIEkgd2lsbCB0YWtlIHlvdSBmcm9tIGFtb25nIHRoZSBoZWF0aGVuLCBhbmQgZ2F0aGVyIHlvdSBvdXQgb2YgYWxsIGNvdW50cmllcywgYW5kIHdpbGwgYnJpbmcgeW91IGludG8geW91ciBvd24gbGFuZC4KVGhlbiB3aWxsIEkgc3ByaW5rbGUgY2xlYW4gd2F0ZXIgdXBvbiB5b3UsIGFuZCB5ZSBzaGFsbCBiZSBjbGVhbjogZnJvbSBhbGwgeW91ciBmaWx0aGluZXNzLCBhbmQgZnJvbSBhbGwgeW91ciBpZG9scywgd2lsbCBJIGNsZWFuc2UgeW91LgpBIG5ldyBoZWFydCBhbHNvIHdpbGwgSSBnaXZlIHlvdSwgYW5kIGEgbmV3IHNwaXJpdCB3aWxsIEkgcHV0IHdpdGhpbiB5b3U6IGFuZCBJIHdpbGwgdGFrZSBhd2F5IHRoZSBzdG9ueSBoZWFydCBvdXQgb2YgeW91ciBmbGVzaCwgYW5kIEkgd2lsbCBnaXZlIHlvdSBhbiBoZWFydCBvZiBmbGVzaC4KQW5kIEkgd2lsbCBwdXQgbXkgc3Bpcml0IHdpdGhpbiB5b3UsIGFuZCBjYXVzZSB5b3UgdG8gd2FsayBpbiBteSBzdGF0dXRlcywgYW5kIHllIHNoYWxsIGtlZXAgbXkganVkZ21lbnRzLCBhbmQgZG8gdGhlbS4KQW5kIHllIHNoYWxsIGR3ZWxsIGluIHRoZSBsYW5kIHRoYXQgSSBnYXZlIHRvIHlvdXIgZmF0aGVyczsgYW5kIHllIHNoYWxsIGJlIG15IHBlb3BsZSwgYW5kIEkgd2lsbCBiZSB5b3VyIEdvZC4KSSB3aWxsIGFsc28gc2F2ZSB5b3UgZnJvbSBhbGwgeW91ciB1bmNsZWFubmVzc2VzOiBhbmQgSSB3aWxsIGNhbGwgZm9yIHRoZSBjb3JuLCBhbmQgd2lsbCBpbmNyZWFzZSBpdCwgYW5kIGxheSBubyBmYW1pbmUgdXBvbiB5b3UuCkFuZCBJIHdpbGwgbXVsdGlwbHkgdGhlIGZydWl0IG9mIHRoZSB0cmVlLCBhbmQgdGhlIGluY3JlYXNlIG9mIHRoZSBmaWVsZCwgdGhhdCB5ZSBzaGFsbCByZWNlaXZlIG5vIG1vcmUgcmVwcm9hY2ggb2YgZmFtaW5lIGFtb25nIHRoZSBoZWF0aGVuLgpUaGVuIHNoYWxsIHllIHJlbWVtYmVyIHlvdXIgb3duIGV2aWwgd2F5cywgYW5kIHlvdXIgZG9pbmdzIHRoYXQgd2VyZSBub3QgZ29vZCwgYW5kIHNoYWxsIGxvdGhlIHlvdXJzZWx2ZXMgaW4geW91ciBvd24gc2lnaHQgZm9yIHlvdXIgaW5pcXVpdGllcyBhbmQgZm9yIHlvdXIgYWJvbWluYXRpb25zLgpOb3QgZm9yIHlvdXIgc2FrZXMgZG8gSSB0aGlzLCBzYWl0aCB0aGUgTG9yZCBHT0QsIGJlIGl0IGtub3duIHVudG8geW91OiBiZSBhc2hhbWVkIGFuZCBjb25mb3VuZGVkIGZvciB5b3VyIG93biB3YXlzLCBPIGhvdXNlIG9mIElzcmFlbC4KVGh1cyBzYWl0aCB0aGUgTG9yZCBHT0Q7IEluIHRoZSBkYXkgdGhhdCBJIHNoYWxsIGhhdmUgY2xlYW5zZWQgeW91IGZyb20gYWxsIHlvdXIgaW5pcXVpdGllcyBJIHdpbGwgYWxzbyBjYXVzZSB5b3UgdG8gZHdlbGwgaW4gdGhlIGNpdGllcywgYW5kIHRoZSB3YXN0ZXMgc2hhbGwgYmUgYnVpbGRlZC4KQW5kIHRoZSBkZXNvbGF0ZSBsYW5kIHNoYWxsIGJlIHRpbGxlZCwgd2hlcmVhcyBpdCBsYXkgZGVzb2xhdGUgaW4gdGhlIHNpZ2h0IG9mIGFsbCB0aGF0IHBhc3NlZCBieS4KQW5kIHRoZXkgc2hhbGwgc2F5LCBUaGlzIGxhbmQgdGhhdCB3YXMgZGVzb2xhdGUgaXMgYmVjb21lIGxpa2UgdGhlIGdhcmRlbiBvZiBFZGVuOyBhbmQgdGhlIHdhc3RlIGFuZCBkZXNvbGF0ZSBhbmQgcnVpbmVkIGNpdGllcyBhcmUgYmVjb21lIGZlbmNlZCwgYW5kIGFyZSBpbmhhYml0ZWQuClRoZW4gdGhlIGhlYXRoZW4gdGhhdCBhcmUgbGVmdCByb3VuZCBhYm91dCB5b3Ugc2hhbGwga25vdyB0aGF0IEkgdGhlIExPUkQgYnVpbGQgdGhlIHJ1aW5lZCBwbGFjZXMsIGFuZCBwbGFudCB0aGF0IHRoYXQgd2FzIGRlc29sYXRlOiBJIHRoZSBMT1JEIGhhdmUgc3Bva2VuIGl0LCBhbmQgSSB3aWxsIGRvIGl0LgpUaHVzIHNhaXRoIHRoZSBMb3JkIEdPRDsgSSB3aWxsIHlldCBmb3IgdGhpcyBiZSBlbnF1aXJlZCBvZiBieSB0aGUgaG91c2Ugb2YgSXNyYWVsLCB0byBkbyBpdCBmb3IgdGhlbTsgSSB3aWxsIGluY3JlYXNlIHRoZW0gd2l0aCBtZW4gbGlrZSBhIGZsb2NrLgpBcyB0aGUgaG9seSBmbG9jaywgYXMgdGhlIGZsb2NrIG9mIEplcnVzYWxlbSBpbiBoZXIgc29sZW1uIGZlYXN0czsgc28gc2hhbGwgdGhlIHdhc3RlIGNpdGllcyBiZSBmaWxsZWQgd2l0aCBmbG9ja3Mgb2YgbWVuOiBhbmQgdGhleSBzaGFsbCBrbm93IHRoYXQgSSBhbSB0aGUgTE9SRC4KVGhlIGhhbmQgb2YgdGhlIExPUkQgd2FzIHVwb24gbWUsIGFuZCBjYXJyaWVkIG1lIG91dCBpbiB0aGUgc3Bpcml0IG9mIHRoZSBMT1JELCBhbmQgc2V0IG1lIGRvd24gaW4gdGhlIG1pZHN0IG9mIHRoZSB2YWxsZXkgd2hpY2ggd2FzIGZ1bGwgb2YgYm9uZXMsCkFuZCBjYXVzZWQgbWUgdG8gcGFzcyBieSB0aGVtIHJvdW5kIGFib3V0OiBhbmQsIGJlaG9sZCwgdGhlcmUgd2VyZSB2ZXJ5IG1hbnkgaW4gdGhlIG9wZW4gdmFsbGV5OyBhbmQsIGxvLCB0aGV5IHdlcmUgdmVyeSBkcnkuCkFuZCBoZSBzYWlkIHVudG8gbWUsIFNvbiBvZiBtYW4sIGNhbiB0aGVzZSBib25lcyBsaXZlPyBBbmQgSSBhbnN3ZXJlZCwgTyBMb3JkIEdPRCwgdGhvdSBrbm93ZXN0LgpBZ2FpbiBoZSBzYWlkIHVudG8gbWUsIFByb3BoZXN5IHVwb24gdGhlc2UgYm9uZXMsIGFuZCBzYXkgdW50byB0aGVtLCBPIHllIGRyeSBib25lcywgaGVhciB0aGUgd29yZCBvZiB0aGUgTE9SRC4KVGh1cyBzYWl0aCB0aGUgTG9yZCBHT0QgdW50byB0aGVzZSBib25lczsgQmVob2xkLCBJIHdpbGwgY2F1c2UgYnJlYXRoIHRvIGVudGVyIGludG8geW91LCBhbmQgeWUgc2hhbGwgbGl2ZToKQW5kIEkgd2lsbCBsYXkgc2luZXdzIHVwb24geW91LCBhbmQgd2lsbCBicmluZyB1cCBmbGVzaCB1cG9uIHlvdSwgYW5kIGNvdmVyIHlvdSB3aXRoIHNraW4sIGFuZCBwdXQgYnJlYXRoIGluIHlvdSwgYW5kIHllIHNoYWxsIGxpdmU7IGFuZCB5ZSBzaGFsbCBrbm93IHRoYXQgSSBhbSB0aGUgTE9SRC4KU28gSSBwcm9waGVzaWVkIGFzIEkgd2FzIGNvbW1hbmRlZDogYW5kIGFzIEkgcHJvcGhlc2llZCwgdGhlcmUgd2FzIGEgbm9pc2UsIGFuZCBiZWhvbGQgYSBzaGFraW5nLCBhbmQgdGhlIGJvbmVzIGNhbWUgdG9nZXRoZXIsIGJvbmUgdG8gaGlzIGJvbmUuCkFuZCB3aGVuIEkgYmVoZWxkLCBsbywgdGhlIHNpbmV3cyBhbmQgdGhlIGZsZXNoIGNhbWUgdXAgdXBvbiB0aGVtLCBhbmQgdGhlIHNraW4gY292ZXJlZCB0aGVtIGFib3ZlOiBidXQgdGhlcmUgd2FzIG5vIGJyZWF0aCBpbiB0aGVtLgpUaGVuIHNhaWQgaGUgdW50byBtZSwgUHJvcGhlc3kgdW50byB0aGUgd2luZCwgcHJvcGhlc3ksIHNvbiBvZiBtYW4sIGFuZCBzYXkgdG8gdGhlIHdpbmQsIFRodXMgc2FpdGggdGhlIExvcmQgR09EOyBDb21lIGZyb20gdGhlIGZvdXIgd2luZHMsIE8gYnJlYXRoLCBhbmQgYnJlYXRoZSB1cG9uIHRoZXNlIHNsYWluLCB0aGF0IHRoZXkgbWF5IGxpdmUuClNvIEkgcHJvcGhlc2llZCBhcyBoZSBjb21tYW5kZWQgbWUsIGFuZCB0aGUgYnJlYXRoIGNhbWUgaW50byB0aGVtLCBhbmQgdGhleSBsaXZlZCwgYW5kIHN0b29kIHVwIHVwb24gdGhlaXIgZmVldCwgYW4gZXhjZWVkaW5nIGdyZWF0IGFybXkuClRoZW4gaGUgc2FpZCB1bnRvIG1lLCBTb24gb2YgbWFuLCB0aGVzZSBib25lcyBhcmUgdGhlIHdob2xlIGhvdXNlIG9mIElzcmFlbDogYmVob2xkLCB0aGV5IHNheSwgT3VyIGJvbmVzIGFyZSBkcmllZCwgYW5kIG91ciBob3BlIGlzIGxvc3Q6IHdlIGFyZSBjdXQgb2ZmIGZvciBvdXIgcGFydHMuClRoZXJlZm9yZSBwcm9waGVzeSBhbmQgc2F5IHVudG8gdGhlbSwgVGh1cyBzYWl0aCB0aGUgTG9yZCBHT0Q7IEJlaG9sZCwgTyBteSBwZW9wbGUsIEkgd2lsbCBvcGVuIHlvdXIgZ3JhdmVzLCBhbmQgY2F1c2UgeW91IHRvIGNvbWUgdXAgb3V0IG9mIHlvdXIgZ3JhdmVzLCBhbmQgYnJpbmcgeW91IGludG8gdGhlIGxhbmQgb2YgSXNyYWVsLgpBbmQgeWUgc2hhbGwga25vdyB0aGF0IEkgYW0gdGhlIExPUkQsIHdoZW4gSSBoYXZlIG9wZW5lZCB5b3VyIGdyYXZlcywgTyBteSBwZW9wbGUsIGFuZCBicm91Z2h0IHlvdSB1cCBvdXQgb2YgeW91ciBncmF2ZXMsCkFuZCBzaGFsbCBwdXQgbXkgc3Bpcml0IGluIHlvdSwgYW5kIHllIHNoYWxsIGxpdmUsIGFuZCBJIHNoYWxsIHBsYWNlIHlvdSBpbiB5b3VyIG93biBsYW5kOiB0aGVuIHNoYWxsIHllIGtub3cgdGhhdCBJIHRoZSBMT1JEIGhhdmUgc3Bva2VuIGl0LCBhbmQgcGVyZm9ybWVkIGl0LCBzYWl0aCB0aGUgTE9SRC4KVGhlIHdvcmQgb2YgdGhlIExPUkQgY2FtZSBhZ2FpbiB1bnRvIG1lLCBzYXlpbmcsCk1vcmVvdmVyLCB0aG91IHNvbiBvZiBtYW4sIHRha2UgdGhlZSBvbmUgc3RpY2ssIGFuZCB3cml0ZSB1cG9uIGl0LCBGb3IgSnVkYWgsIGFuZCBmb3IgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBoaXMgY29tcGFuaW9uczogdGhlbiB0YWtlIGFub3RoZXIgc3RpY2ssIGFuZCB3cml0ZSB1cG9uIGl0LCBGb3IgSm9zZXBoLCB0aGUgc3RpY2sgb2YgRXBocmFpbSBhbmQgZm9yIGFsbCB0aGUgaG91c2Ugb2YgSXNyYWVsIGhpcyBjb21wYW5pb25zOgpBbmQgam9pbiB0aGVtIG9uZSB0byBhbm90aGVyIGludG8gb25lIHN0aWNrOyBhbmQgdGhleSBzaGFsbCBiZWNvbWUgb25lIGluIHRoaW5lIGhhbmQuCkFuZCB3aGVuIHRoZSBjaGlsZHJlbiBvZiB0aHkgcGVvcGxlIHNoYWxsIHNwZWFrIHVudG8gdGhlZSwgc2F5aW5nLCBXaWx0IHRob3Ugbm90IHNoZXcgdXMgd2hhdCB0aG91IG1lYW5lc3QgYnkgdGhlc2U/ClNheSB1bnRvIHRoZW0sIFRodXMgc2FpdGggdGhlIExvcmQgR09EOyBCZWhvbGQsIEkgd2lsbCB0YWtlIHRoZSBzdGljayBvZiBKb3NlcGgsIHdoaWNoIGlzIGluIHRoZSBoYW5kIG9mIEVwaHJhaW0sIGFuZCB0aGUgdHJpYmVzIG9mIElzcmFlbCBoaXMgZmVsbG93cywgYW5kIHdpbGwgcHV0IHRoZW0gd2l0aCBoaW0sIGV2ZW4gd2l0aCB0aGUgc3RpY2sgb2YgSnVkYWgsIGFuZCBtYWtlIHRoZW0gb25lIHN0aWNrLCBhbmQgdGhleSBzaGFsbCBiZSBvbmUgaW4gbWluZSBoYW5kLgpBbmQgdGhlIHN0aWNrcyB3aGVyZW9uIHRob3Ugd3JpdGVzdCBzaGFsbCBiZSBpbiB0aGluZSBoYW5kIGJlZm9yZSB0aGVpciBleWVzLgpBbmQgc2F5IHVudG8gdGhlbSwgVGh1cyBzYWl0aCB0aGUgTG9yZCBHT0Q7IEJlaG9sZCwgSSB3aWxsIHRha2UgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBmcm9tIGFtb25nIHRoZSBoZWF0aGVuLCB3aGl0aGVyIHRoZXkgYmUgZ29uZSwgYW5kIHdpbGwgZ2F0aGVyIHRoZW0gb24gZXZlcnkgc2lkZSwgYW5kIGJyaW5nIHRoZW0gaW50byB0aGVpciBvd24gbGFuZDoKQW5kIEkgd2lsbCBtYWtlIHRoZW0gb25lIG5hdGlvbiBpbiB0aGUgbGFuZCB1cG9uIHRoZSBtb3VudGFpbnMgb2YgSXNyYWVsOyBhbmQgb25lIGtpbmcgc2hhbGwgYmUga2luZyB0byB0aGVtIGFsbDogYW5kIHRoZXkgc2hhbGwgYmUgbm8gbW9yZSB0d28gbmF0aW9ucywgbmVpdGhlciBzaGFsbCB0aGV5IGJlIGRpdmlkZWQgaW50byB0d28ga2luZ2RvbXMgYW55IG1vcmUgYXQgYWxsLgpOZWl0aGVyIHNoYWxsIHRoZXkgZGVmaWxlIHRoZW1zZWx2ZXMgYW55IG1vcmUgd2l0aCB0aGVpciBpZG9scywgbm9yIHdpdGggdGhlaXIgZGV0ZXN0YWJsZSB0aGluZ3MsIG5vciB3aXRoIGFueSBvZiB0aGVpciB0cmFuc2dyZXNzaW9uczogYnV0IEkgd2lsbCBzYXZlIHRoZW0gb3V0IG9mIGFsbCB0aGVpciBkd2VsbGluZ3BsYWNlcywgd2hlcmVpbiB0aGV5IGhhdmUgc2lubmVkLCBhbmQgd2lsbCBjbGVhbnNlIHRoZW06IHNvIHNoYWxsIHRoZXkgYmUgbXkgcGVvcGxlLCBhbmQgSSB3aWxsIGJlIHRoZWlyIEdvZC4KQW5kIERhdmlkIG15IHNlcnZhbnQgc2hhbGwgYmUga2luZyBvdmVyIHRoZW07IGFuZCB0aGV5IGFsbCBzaGFsbCBoYXZlIG9uZSBzaGVwaGVyZDogdGhleSBzaGFsbCBhbHNvIHdhbGsgaW4gbXkganVkZ21lbnRzLCBhbmQgb2JzZXJ2ZSBteSBzdGF0dXRlcywgYW5kIGRvIHRoZW0uCkFuZCB0aGV5IHNoYWxsIGR3ZWxsIGluIHRoZSBsYW5kIHRoYXQgSSBoYXZlIGdpdmVuIHVudG8gSmFjb2IgbXkgc2VydmFudCwgd2hlcmVpbiB5b3VyIGZhdGhlcnMgaGF2ZSBkd2VsdDsgYW5kIHRoZXkgc2hhbGwgZHdlbGwgdGhlcmVpbiwgZXZlbiB0aGV5LCBhbmQgdGhlaXIgY2hpbGRyZW4sIGFuZCB0aGVpciBjaGlsZHJlbidzIGNoaWxkcmVuIGZvciBldmVyOiBhbmQgbXkgc2VydmFudCBEYXZpZCBzaGFsbCBiZSB0aGVpciBwcmluY2UgZm9yIGV2ZXIuCk1vcmVvdmVyIEkgd2lsbCBtYWtlIGEgY292ZW5hbnQgb2YgcGVhY2Ugd2l0aCB0aGVtOyBpdCBzaGFsbCBiZSBhbiBldmVybGFzdGluZyBjb3ZlbmFudCB3aXRoIHRoZW06IGFuZCBJIHdpbGwgcGxhY2UgdGhlbSwgYW5kIG11bHRpcGx5IHRoZW0sIGFuZCB3aWxsIHNldCBteSBzYW5jdHVhcnkgaW4gdGhlIG1pZHN0IG9mIHRoZW0gZm9yIGV2ZXJtb3JlLgpNeSB0YWJlcm5hY2xlIGFsc28gc2hhbGwgYmUgd2l0aCB0aGVtOiB5ZWEsIEkgd2lsbCBiZSB0aGVpciBHb2QsIGFuZCB0aGV5IHNoYWxsIGJlIG15IHBlb3BsZS4KQW5kIHRoZSBoZWF0aGVuIHNoYWxsIGtub3cgdGhhdCBJIHRoZSBMT1JEIGRvIHNhbmN0aWZ5IElzcmFlbCwgd2hlbiBteSBzYW5jdHVhcnkgc2hhbGwgYmUgaW4gdGhlIG1pZHN0IG9mIHRoZW0gZm9yIGV2ZXJtb3JlLgpBbmQgdGhlIHdvcmQgb2YgdGhlIExPUkQgY2FtZSB1bnRvIG1lLCBzYXlpbmcsClNvbiBvZiBtYW4sIHNldCB0aHkgZmFjZSBhZ2FpbnN0IEdvZywgdGhlIGxhbmQgb2YgTWFnb2csIHRoZSBjaGllZiBwcmluY2Ugb2YgTWVzaGVjaCBhbmQgVHViYWwsIGFuZCBwcm9waGVzeSBhZ2FpbnN0IGhpbSwKQW5kIHNheSwgVGh1cyBzYWl0aCB0aGUgTG9yZCBHT0Q7IEJlaG9sZCwgSSBhbSBhZ2FpbnN0IHRoZWUsIE8gR29nLCB0aGUgY2hpZWYgcHJpbmNlIG9mIE1lc2hlY2ggYW5kIFR1YmFsOgpBbmQgSSB3aWxsIHR1cm4gdGhlZSBiYWNrLCBhbmQgcHV0IGhvb2tzIGludG8gdGh5IGphd3MsIGFuZCBJIHdpbGwgYnJpbmcgdGhlZSBmb3J0aCwgYW5kIGFsbCB0aGluZSBhcm15LCBob3JzZXMgYW5kIGhvcnNlbWVuLCBhbGwgb2YgdGhlbSBjbG90aGVkIHdpdGggYWxsIHNvcnRzIG9mIGFybW91ciwgZXZlbiBhIGdyZWF0IGNvbXBhbnkgd2l0aCBidWNrbGVycyBhbmQgc2hpZWxkcywgYWxsIG9mIHRoZW0gaGFuZGxpbmcgc3dvcmRzOgpQZXJzaWEsIEV0aGlvcGlhLCBhbmQgTGlieWEgd2l0aCB0aGVtOyBhbGwgb2YgdGhlbSB3aXRoIHNoaWVsZCBhbmQgaGVsbWV0OgpHb21lciwgYW5kIGFsbCBoaXMgYmFuZHM7IHRoZSBob3VzZSBvZiBUb2dhcm1haCBvZiB0aGUgbm9ydGggcXVhcnRlcnMsIGFuZCBhbGwgaGlzIGJhbmRzOiBhbmQgbWFueSBwZW9wbGUgd2l0aCB0aGVlLgpCZSB0aG91IHByZXBhcmVkLCBhbmQgcHJlcGFyZSBmb3IgdGh5c2VsZiwgdGhvdSwgYW5kIGFsbCB0aHkgY29tcGFueSB0aGF0IGFyZSBhc3NlbWJsZWQgdW50byB0aGVlLCBhbmQgYmUgdGhvdSBhIGd1YXJkIHVudG8gdGhlbS4KQWZ0ZXIgbWFueSBkYXlzIHRob3Ugc2hhbHQgYmUgdmlzaXRlZDogaW4gdGhlIGxhdHRlciB5ZWFycyB0aG91IHNoYWx0IGNvbWUgaW50byB0aGUgbGFuZCB0aGF0IGlzIGJyb3VnaHQgYmFjayBmcm9tIHRoZSBzd29yZCwgYW5kIGlzIGdhdGhlcmVkIG91dCBvZiBtYW55IHBlb3BsZSwgYWdhaW5zdCB0aGUgbW91bnRhaW5zIG9mIElzcmFlbCwgd2hpY2ggaGF2ZSBiZWVuIGFsd2F5cyB3YXN0ZTogYnV0IGl0IGlzIGJyb3VnaHQgZm9ydGggb3V0IG9mIHRoZSBuYXRpb25zLCBhbmQgdGhleSBzaGFsbCBkd2VsbCBzYWZlbHkgYWxsIG9mIHRoZW0uClRob3Ugc2hhbHQgYXNjZW5kIGFuZCBjb21lIGxpa2UgYSBzdG9ybSwgdGhvdSBzaGFsdCBiZSBsaWtlIGEgY2xvdWQgdG8gY292ZXIgdGhlIGxhbmQsIHRob3UsIGFuZCBhbGwgdGh5IGJhbmRzLCBhbmQgbWFueSBwZW9wbGUgd2l0aCB0aGVlLgpUaHVzIHNhaXRoIHRoZSBMb3JkIEdPRDsgSXQgc2hhbGwgYWxzbyBjb21lIHRvIHBhc3MsIHRoYXQgYXQgdGhlIHNhbWUgdGltZSBzaGFsbCB0aGluZ3MgY29tZSBpbnRvIHRoeSBtaW5kLCBhbmQgdGhvdSBzaGFsdCB0aGluayBhbiBldmlsIHRob3VnaHQ6CkFuZCB0aG91IHNoYWx0IHNheSwgSSB3aWxsIGdvIHVwIHRvIHRoZSBsYW5kIG9mIHVud2FsbGVkIHZpbGxhZ2VzOyBJIHdpbGwgZ28gdG8gdGhlbSB0aGF0IGFyZSBhdCByZXN0LCB0aGF0IGR3ZWxsIHNhZmVseSwgYWxsIG9mIHRoZW0gZHdlbGxpbmcgd2l0aG91dCB3YWxscywgYW5kIGhhdmluZyBuZWl0aGVyIGJhcnMgbm9yIGdhdGVzLApUbyB0YWtlIGEgc3BvaWwsIGFuZCB0byB0YWtlIGEgcHJleTsgdG8gdHVybiB0aGluZSBoYW5kIHVwb24gdGhlIGRlc29sYXRlIHBsYWNlcyB0aGF0IGFyZSBub3cgaW5oYWJpdGVkLCBhbmQgdXBvbiB0aGUgcGVvcGxlIHRoYXQgYXJlIGdhdGhlcmVkIG91dCBvZiB0aGUgbmF0aW9ucywgd2hpY2ggaGF2ZSBnb3R0ZW4gY2F0dGxlIGFuZCBnb29kcywgdGhhdCBkd2VsbCBpbiB0aGUgbWlkc3Qgb2YgdGhlIGxhbmQuClNoZWJhLCBhbmQgRGVkYW4sIGFuZCB0aGUgbWVyY2hhbnRzIG9mIFRhcnNoaXNoLCB3aXRoIGFsbCB0aGUgeW91bmcgbGlvbnMgdGhlcmVvZiwgc2hhbGwgc2F5IHVudG8gdGhlZSwgQXJ0IHRob3UgY29tZSB0byB0YWtlIGEgc3BvaWw/IGhhc3QgdGhvdSBnYXRoZXJlZCB0aHkgY29tcGFueSB0byB0YWtlIGEgcHJleT8gdG8gY2FycnkgYXdheSBzaWx2ZXIgYW5kIGdvbGQsIHRvIHRha2UgYXdheSBjYXR0bGUgYW5kIGdvb2RzLCB0byB0YWtlIGEgZ3JlYXQgc3BvaWw/ClRoZXJlZm9yZSwgc29uIG9mIG1hbiwgcHJvcGhlc3kgYW5kIHNheSB1bnRvIEdvZywgVGh1cyBzYWl0aCB0aGUgTG9yZCBHT0Q7IEluIHRoYXQgZGF5IHdoZW4gbXkgcGVvcGxlIG9mIElzcmFlbCBkd2VsbGV0aCBzYWZlbHksIHNoYWx0IHRob3Ugbm90IGtub3cgaXQ/CkFuZCB0aG91IHNoYWx0IGNvbWUgZnJvbSB0aHkgcGxhY2Ugb3V0IG9mIHRoZSBub3J0aCBwYXJ0cywgdGhvdSwgYW5kIG1hbnkgcGVvcGxlIHdpdGggdGhlZSwgYWxsIG9mIHRoZW0gcmlkaW5nIHVwb24gaG9yc2VzLCBhIGdyZWF0IGNvbXBhbnksIGFuZCBhIG1pZ2h0eSBhcm15OgpBbmQgdGhvdSBzaGFsdCBjb21lIHVwIGFnYWluc3QgbXkgcGVvcGxlIG9mIElzcmFlbCwgYXMgYSBjbG91ZCB0byBjb3ZlciB0aGUgbGFuZDsgaXQgc2hhbGwgYmUgaW4gdGhlIGxhdHRlciBkYXlzLCBhbmQgSSB3aWxsIGJyaW5nIHRoZWUgYWdhaW5zdCBteSBsYW5kLCB0aGF0IHRoZSBoZWF0aGVuIG1heSBrbm93IG1lLCB3aGVuIEkgc2hhbGwgYmUgc2FuY3RpZmllZCBpbiB0aGVlLCBPIEdvZywgYmVmb3JlIHRoZWlyIGV5ZXMuClRodXMgc2FpdGggdGhlIExvcmQgR09EOyBBcnQgdGhvdSBoZSBvZiB3aG9tIEkgaGF2ZSBzcG9rZW4gaW4gb2xkIHRpbWUgYnkgbXkgc2VydmFudHMgdGhlIHByb3BoZXRzIG9mIElzcmFlbCwgd2hpY2ggcHJvcGhlc2llZCBpbiB0aG9zZSBkYXlzIG1hbnkgeWVhcnMgdGhhdCBJIHdvdWxkIGJyaW5nIHRoZWUgYWdhaW5zdCB0aGVtPwpBbmQgaXQgc2hhbGwgY29tZSB0byBwYXNzIGF0IHRoZSBzYW1lIHRpbWUgd2hlbiBHb2cgc2hhbGwgY29tZSBhZ2FpbnN0IHRoZSBsYW5kIG9mIElzcmFlbCwgc2FpdGggdGhlIExvcmQgR09ELCB0aGF0IG15IGZ1cnkgc2hhbGwgY29tZSB1cCBpbiBteSBmYWNlLgpGb3IgaW4gbXkgamVhbG91c3kgYW5kIGluIHRoZSBmaXJlIG9mIG15IHdyYXRoIGhhdmUgSSBzcG9rZW4sIFN1cmVseSBpbiB0aGF0IGRheSB0aGVyZSBzaGFsbCBiZSBhIGdyZWF0IHNoYWtpbmcgaW4gdGhlIGxhbmQgb2YgSXNyYWVsOwpTbyB0aGF0IHRoZSBmaXNoZXMgb2YgdGhlIHNlYSwgYW5kIHRoZSBmb3dscyBvZiB0aGUgaGVhdmVuLCBhbmQgdGhlIGJlYXN0cyBvZiB0aGUgZmllbGQsIGFuZCBhbGwgY3JlZXBpbmcgdGhpbmdzIHRoYXQgY3JlZXAgdXBvbiB0aGUgZWFydGgsIGFuZCBhbGwgdGhlIG1lbiB0aGF0IGFyZSB1cG9uIHRoZSBmYWNlIG9mIHRoZSBlYXJ0aCwgc2hhbGwgc2hha2UgYXQgbXkgcHJlc2VuY2UsIGFuZCB0aGUgbW91bnRhaW5zIHNoYWxsIGJlIHRocm93biBkb3duLCBhbmQgdGhlIHN0ZWVwIHBsYWNlcyBzaGFsbCBmYWxsLCBhbmQgZXZlcnkgd2FsbCBzaGFsbCBmYWxsIHRvIHRoZSBncm91bmQuCkFuZCBJIHdpbGwgY2FsbCBmb3IgYSBzd29yZCBhZ2FpbnN0IGhpbSB0aHJvdWdob3V0IGFsbCBteSBtb3VudGFpbnMsIHNhaXRoIHRoZSBMb3JkIEdPRDogZXZlcnkgbWFuJ3Mgc3dvcmQgc2hhbGwgYmUgYWdhaW5zdCBoaXMgYnJvdGhlci4KQW5kIEkgd2lsbCBwbGVhZCBhZ2FpbnN0IGhpbSB3aXRoIHBlc3RpbGVuY2UgYW5kIHdpdGggYmxvb2Q7IGFuZCBJIHdpbGwgcmFpbiB1cG9uIGhpbSwgYW5kIHVwb24gaGlzIGJhbmRzLCBhbmQgdXBvbiB0aGUgbWFueSBwZW9wbGUgdGhhdCBhcmUgd2l0aCBoaW0sIGFuIG92ZXJmbG93aW5nIHJhaW4sIGFuZCBncmVhdCBoYWlsc3RvbmVzLCBmaXJlLCBhbmQgYnJpbXN0b25lLgpUaHVzIHdpbGwgSSBtYWduaWZ5IG15c2VsZiwgYW5kIHNhbmN0aWZ5IG15c2VsZjsgYW5kIEkgd2lsbCBiZSBrbm93biBpbiB0aGUgZXllcyBvZiBtYW55IG5hdGlvbnMsIGFuZCB0aGV5IHNoYWxsIGtub3cgdGhhdCBJIGFtIHRoZSBMT1JELgpUaGVyZWZvcmUsIHRob3Ugc29uIG9mIG1hbiwgcHJvcGhlc3kgYWdhaW5zdCBHb2csIGFuZCBzYXksIFRodXMgc2FpdGggdGhlIExvcmQgR09EOyBCZWhvbGQsIEkgYW0gYWdhaW5zdCB0aGVlLCBPIEdvZywgdGhlIGNoaWVmIHByaW5jZSBvZiBNZXNoZWNoIGFuZCBUdWJhbDoKQW5kIEkgd2lsbCB0dXJuIHRoZWUgYmFjaywgYW5kIGxlYXZlIGJ1dCB0aGUgc2l4dGggcGFydCBvZiB0aGVlLCBhbmQgd2lsbCBjYXVzZSB0aGVlIHRvIGNvbWUgdXAgZnJvbSB0aGUgbm9ydGggcGFydHMsIGFuZCB3aWxsIGJyaW5nIHRoZWUgdXBvbiB0aGUgbW91bnRhaW5zIG9mIElzcmFlbDoKQW5kIEkgd2lsbCBzbWl0ZSB0aHkgYm93IG91dCBvZiB0aHkgbGVmdCBoYW5kLCBhbmQgd2lsbCBjYXVzZSB0aGluZSBhcnJvd3MgdG8gZmFsbCBvdXQgb2YgdGh5IHJpZ2h0IGhhbmQuClRob3Ugc2hhbHQgZmFsbCB1cG9uIHRoZSBtb3VudGFpbnMgb2YgSXNyYWVsLCB0aG91LCBhbmQgYWxsIHRoeSBiYW5kcywgYW5kIHRoZSBwZW9wbGUgdGhhdCBpcyB3aXRoIHRoZWU6IEkgd2lsbCBnaXZlIHRoZWUgdW50byB0aGUgcmF2ZW5vdXMgYmlyZHMgb2YgZXZlcnkgc29ydCwgYW5kIHRvIHRoZSBiZWFzdHMgb2YgdGhlIGZpZWxkIHRvIGJlIGRldm91cmVkLgpUaG91IHNoYWx0IGZhbGwgdXBvbiB0aGUgb3BlbiBmaWVsZDogZm9yIEkgaGF2ZSBzcG9rZW4gaXQsIHNhaXRoIHRoZSBMb3JkIEdPRC4KQW5kIEkgd2lsbCBzZW5kIGEgZmlyZSBvbiBNYWdvZywgYW5kIGFtb25nIHRoZW0gdGhhdCBkd2VsbCBjYXJlbGVzc2x5IGluIHRoZSBpc2xlczogYW5kIHRoZXkgc2hhbGwga25vdyB0aGF0IEkgYW0gdGhlIExPUkQuClNvIHdpbGwgSSBtYWtlIG15IGhvbHkgbmFtZSBrbm93biBpbiB0aGUgbWlkc3Qgb2YgbXkgcGVvcGxlIElzcmFlbDsgYW5kIEkgd2lsbCBub3QgbGV0IHRoZW0gcG9sbHV0ZSBteSBob2x5IG5hbWUgYW55IG1vcmU6IGFuZCB0aGUgaGVhdGhlbiBzaGFsbCBrbm93IHRoYXQgSSBhbSB0aGUgTE9SRCwgdGhlIEhvbHkgT25lIGluIElzcmFlbC4KQmVob2xkLCBpdCBpcyBjb21lLCBhbmQgaXQgaXMgZG9uZSwgc2FpdGggdGhlIExvcmQgR09EOyB0aGlzIGlzIHRoZSBkYXkgd2hlcmVvZiBJIGhhdmUgc3Bva2VuLgpBbmQgdGhleSB0aGF0IGR3ZWxsIGluIHRoZSBjaXRpZXMgb2YgSXNyYWVsIHNoYWxsIGdvIGZvcnRoLCBhbmQgc2hhbGwgc2V0IG9uIGZpcmUgYW5kIGJ1cm4gdGhlIHdlYXBvbnMsIGJvdGggdGhlIHNoaWVsZHMgYW5kIHRoZSBidWNrbGVycywgdGhlIGJvd3MgYW5kIHRoZSBhcnJvd3MsIGFuZCB0aGUgaGFuZHN0YXZlcywgYW5kIHRoZSBzcGVhcnMsIGFuZCB0aGV5IHNoYWxsIGJ1cm4gdGhlbSB3aXRoIGZpcmUgc2V2ZW4geWVhcnM6ClNvIHRoYXQgdGhleSBzaGFsbCB0YWtlIG5vIHdvb2Qgb3V0IG9mIHRoZSBmaWVsZCwgbmVpdGhlciBjdXQgZG93biBhbnkgb3V0IG9mIHRoZSBmb3Jlc3RzOyBmb3IgdGhleSBzaGFsbCBidXJuIHRoZSB3ZWFwb25zIHdpdGggZmlyZTogYW5kIHRoZXkgc2hhbGwgc3BvaWwgdGhvc2UgdGhhdCBzcG9pbGVkIHRoZW0sIGFuZCByb2IgdGhvc2UgdGhhdCByb2JiZWQgdGhlbSwgc2FpdGggdGhlIExvcmQgR09ELgpBbmQgaXQgc2hhbGwgY29tZSB0byBwYXNzIGluIHRoYXQgZGF5LCB0aGF0IEkgd2lsbCBnaXZlIHVudG8gR29nIGEgcGxhY2UgdGhlcmUgb2YgZ3JhdmVzIGluIElzcmFlbCwgdGhlIHZhbGxleSBvZiB0aGUgcGFzc2VuZ2VycyBvbiB0aGUgZWFzdCBvZiB0aGUgc2VhOiBhbmQgaXQgc2hhbGwgc3RvcCB0aGUgbm9zZXMgb2YgdGhlIHBhc3NlbmdlcnM6IGFuZCB0aGVyZSBzaGFsbCB0aGV5IGJ1cnkgR29nIGFuZCBhbGwgaGlzIG11bHRpdHVkZTogYW5kIHRoZXkgc2hhbGwgY2FsbCBpdCBUaGUgdmFsbGV5IG9mIEhhbW9uZ29nLgpBbmQgc2V2ZW4gbW9udGhzIHNoYWxsIHRoZSBob3VzZSBvZiBJc3JhZWwgYmUgYnVyeWluZyBvZiB0aGVtLCB0aGF0IHRoZXkgbWF5IGNsZWFuc2UgdGhlIGxhbmQuClllYSwgYWxsIHRoZSBwZW9wbGUgb2YgdGhlIGxhbmQgc2hhbGwgYnVyeSB0aGVtOyBhbmQgaXQgc2hhbGwgYmUgdG8gdGhlbSBhIHJlbm93biB0aGUgZGF5IHRoYXQgSSBzaGFsbCBiZSBnbG9yaWZpZWQsIHNhaXRoIHRoZSBMb3JkIEdPRC4KQW5kIHRoZXkgc2hhbGwgc2V2ZXIgb3V0IG1lbiBvZiBjb250aW51YWwgZW1wbG95bWVudCwgcGFzc2luZyB0aHJvdWdoIHRoZSBsYW5kIHRvIGJ1cnkgd2l0aCB0aGUgcGFzc2VuZ2VycyB0aG9zZSB0aGF0IHJlbWFpbiB1cG9uIHRoZSBmYWNlIG9mIHRoZSBlYXJ0aCwgdG8gY2xlYW5zZSBpdDogYWZ0ZXIgdGhlIGVuZCBvZiBzZXZlbiBtb250aHMgc2hhbGwgdGhleSBzZWFyY2guCkFuZCB0aGUgcGFzc2VuZ2VycyB0aGF0IHBhc3MgdGhyb3VnaCB0aGUgbGFuZCwgd2hlbiBhbnkgc2VldGggYSBtYW4ncyBib25lLCB0aGVuIHNoYWxsIGhlIHNldCB1cCBhIHNpZ24gYnkgaXQsIHRpbGwgdGhlIGJ1cmllcnMgaGF2ZSBidXJpZWQgaXQgaW4gdGhlIHZhbGxleSBvZiBIYW1vbmdvZy4KQW5kIGFsc28gdGhlIG5hbWUgb2YgdGhlIGNpdHkgc2hhbGwgYmUgSGFtb25haC4gVGh1cyBzaGFsbCB0aGV5IGNsZWFuc2UgdGhlIGxhbmQuCkFuZCwgdGhvdSBzb24gb2YgbWFuLCB0aHVzIHNhaXRoIHRoZSBMb3JkIEdPRDsgU3BlYWsgdW50byBldmVyeSBmZWF0aGVyZWQgZm93bCwgYW5kIHRvIGV2ZXJ5IGJlYXN0IG9mIHRoZSBmaWVsZCwgQXNzZW1ibGUgeW91cnNlbHZlcywgYW5kIGNvbWU7IGdhdGhlciB5b3Vyc2VsdmVzIG9uIGV2ZXJ5IHNpZGUgdG8gbXkgc2FjcmlmaWNlIHRoYXQgSSBkbyBzYWNyaWZpY2UgZm9yIHlvdSwgZXZlbiBhIGdyZWF0IHNhY3JpZmljZSB1cG9uIHRoZSBtb3VudGFpbnMgb2YgSXNyYWVsLCB0aGF0IHllIG1heSBlYXQgZmxlc2gsIGFuZCBkcmluayBibG9vZC4KWWUgc2hhbGwgZWF0IHRoZSBmbGVzaCBvZiB0aGUgbWlnaHR5LCBhbmQgZHJpbmsgdGhlIGJsb29kIG9mIHRoZSBwcmluY2VzIG9mIHRoZSBlYXJ0aCwgb2YgcmFtcywgb2YgbGFtYnMsIGFuZCBvZiBnb2F0cywgb2YgYnVsbG9ja3MsIGFsbCBvZiB0aGVtIGZhdGxpbmdzIG9mIEJhc2hhbi4KQW5kIHllIHNoYWxsIGVhdCBmYXQgdGlsbCB5ZSBiZSBmdWxsLCBhbmQgZHJpbmsgYmxvb2QgdGlsbCB5ZSBiZSBkcnVua2VuLCBvZiBteSBzYWNyaWZpY2Ugd2hpY2ggSSBoYXZlIHNhY3JpZmljZWQgZm9yIHlvdS4KVGh1cyB5ZSBzaGFsbCBiZSBmaWxsZWQgYXQgbXkgdGFibGUgd2l0aCBob3JzZXMgYW5kIGNoYXJpb3RzLCB3aXRoIG1pZ2h0eSBtZW4sIGFuZCB3aXRoIGFsbCBtZW4gb2Ygd2FyLCBzYWl0aCB0aGUgTG9yZCBHT0QuCkFuZCBJIHdpbGwgc2V0IG15IGdsb3J5IGFtb25nIHRoZSBoZWF0aGVuLCBhbmQgYWxsIHRoZSBoZWF0aGVuIHNoYWxsIHNlZSBteSBqdWRnbWVudCB0aGF0IEkgaGF2ZSBleGVjdXRlZCwgYW5kIG15IGhhbmQgdGhhdCBJIGhhdmUgbGFpZCB1cG9uIHRoZW0uClNvIHRoZSBob3VzZSBvZiBJc3JhZWwgc2hhbGwga25vdyB0aGF0IEkgYW0gdGhlIExPUkQgdGhlaXIgR29kIGZyb20gdGhhdCBkYXkgYW5kIGZvcndhcmQuCkFuZCB0aGUgaGVhdGhlbiBzaGFsbCBrbm93IHRoYXQgdGhlIGhvdXNlIG9mIElzcmFlbCB3ZW50IGludG8gY2FwdGl2aXR5IGZvciB0aGVpciBpbmlxdWl0eTogYmVjYXVzZSB0aGV5IHRyZXNwYXNzZWQgYWdhaW5zdCBtZSwgdGhlcmVmb3JlIGhpZCBJIG15IGZhY2UgZnJvbSB0aGVtLCBhbmQgZ2F2ZSB0aGVtIGludG8gdGhlIGhhbmQgb2YgdGhlaXIgZW5lbWllczogc28gZmVsbCB0aGV5IGFsbCBieSB0aGUgc3dvcmQuCkFjY29yZGluZyB0byB0aGVpciB1bmNsZWFubmVzcyBhbmQgYWNjb3JkaW5nIHRvIHRoZWlyIHRyYW5zZ3Jlc3Npb25zIGhhdmUgSSBkb25lIHVudG8gdGhlbSwgYW5kIGhpZCBteSBmYWNlIGZyb20gdGhlbS4KVGhlcmVmb3JlIHRodXMgc2FpdGggdGhlIExvcmQgR09EOyBOb3cgd2lsbCBJIGJyaW5nIGFnYWluIHRoZSBjYXB0aXZpdHkgb2YgSmFjb2IsIGFuZCBoYXZlIG1lcmN5IHVwb24gdGhlIHdob2xlIGhvdXNlIG9mIElzcmFlbCwgYW5kIHdpbGwgYmUgamVhbG91cyBmb3IgbXkgaG9seSBuYW1lOwpBZnRlciB0aGF0IHRoZXkgaGF2ZSBib3JuZSB0aGVpciBzaGFtZSwgYW5kIGFsbCB0aGVpciB0cmVzcGFzc2VzIHdoZXJlYnkgdGhleSBoYXZlIHRyZXNwYXNzZWQgYWdhaW5zdCBtZSwgd2hlbiB0aGV5IGR3ZWx0IHNhZmVseSBpbiB0aGVpciBsYW5kLCBhbmQgbm9uZSBtYWRlIHRoZW0gYWZyYWlkLgpXaGVuIEkgaGF2ZSBicm91Z2h0IHRoZW0gYWdhaW4gZnJvbSB0aGUgcGVvcGxlLCBhbmQgZ2F0aGVyZWQgdGhlbSBvdXQgb2YgdGhlaXIgZW5lbWllcycgbGFuZHMsIGFuZCBhbSBzYW5jdGlmaWVkIGluIHRoZW0gaW4gdGhlIHNpZ2h0IG9mIG1hbnkgbmF0aW9uczsKVGhlbiBzaGFsbCB0aGV5IGtub3cgdGhhdCBJIGFtIHRoZSBMT1JEIHRoZWlyIEdvZCwgd2hpY2ggY2F1c2VkIHRoZW0gdG8gYmUgbGVkIGludG8gY2FwdGl2aXR5IGFtb25nIHRoZSBoZWF0aGVuOiBidXQgSSBoYXZlIGdhdGhlcmVkIHRoZW0gdW50byB0aGVpciBvd24gbGFuZCwgYW5kIGhhdmUgbGVmdCBub25lIG9mIHRoZW0gYW55IG1vcmUgdGhlcmUuCk5laXRoZXIgd2lsbCBJIGhpZGUgbXkgZmFjZSBhbnkgbW9yZSBmcm9tIHRoZW06IGZvciBJIGhhdmUgcG91cmVkIG91dCBteSBzcGlyaXQgdXBvbiB0aGUgaG91c2Ugb2YgSXNyYWVsLCBzYWl0aCB0aGUgTG9yZCBHT0QuCkluIHRoZSBmaXZlIGFuZCB0d2VudGlldGggeWVhciBvZiBvdXIgY2FwdGl2aXR5LCBpbiB0aGUgYmVnaW5uaW5nIG9mIHRoZSB5ZWFyLCBpbiB0aGUgdGVudGggZGF5IG9mIHRoZSBtb250aCwgaW4gdGhlIGZvdXJ0ZWVudGggeWVhciBhZnRlciB0aGF0IHRoZSBjaXR5IHdhcyBzbWl0dGVuLCBpbiB0aGUgc2VsZnNhbWUgZGF5IHRoZSBoYW5kIG9mIHRoZSBMT1JEIHdhcyB1cG9uIG1lLCBhbmQgYnJvdWdodCBtZSB0aGl0aGVyLgpJbiB0aGUgdmlzaW9ucyBvZiBHb2QgYnJvdWdodCBoZSBtZSBpbnRvIHRoZSBsYW5kIG9mIElzcmFlbCwgYW5kIHNldCBtZSB1cG9uIGEgdmVyeSBoaWdoIG1vdW50YWluLCBieSB3aGljaCB3YXMgYXMgdGhlIGZyYW1lIG9mIGEgY2l0eSBvbiB0aGUgc291dGguCkFuZCBoZSBicm91Z2h0IG1lIHRoaXRoZXIsIGFuZCwgYmVob2xkLCB0aGVyZSB3YXMgYSBtYW4sIHdob3NlIGFwcGVhcmFuY2Ugd2FzIGxpa2UgdGhlIGFwcGVhcmFuY2Ugb2YgYnJhc3MsIHdpdGggYSBsaW5lIG9mIGZsYXggaW4gaGlzIGhhbmQsIGFuZCBhIG1lYXN1cmluZyByZWVkOyBhbmQgaGUgc3Rvb2QgaW4gdGhlIGdhdGUuCkFuZCB0aGUgbWFuIHNhaWQgdW50byBtZSwgU29uIG9mIG1hbiwgYmVob2xkIHdpdGggdGhpbmUgZXllcywgYW5kIGhlYXIgd2l0aCB0aGluZSBlYXJzLCBhbmQgc2V0IHRoaW5lIGhlYXJ0IHVwb24gYWxsIHRoYXQgSSBzaGFsbCBzaGV3IHRoZWU7IGZvciB0byB0aGUgaW50ZW50IHRoYXQgSSBtaWdodCBzaGV3IHRoZW0gdW50byB0aGVlIGFydCB0aG91IGJyb3VnaHQgaGl0aGVyOiBkZWNsYXJlIGFsbCB0aGF0IHRob3Ugc2Vlc3QgdG8gdGhlIGhvdXNlIG9mIElzcmFlbC4KQW5kIGJlaG9sZCBhIHdhbGwgb24gdGhlIG91dHNpZGUgb2YgdGhlIGhvdXNlIHJvdW5kIGFib3V0LCBhbmQgaW4gdGhlIG1hbidzIGhhbmQgYSBtZWFzdXJpbmcgcmVlZCBvZiBzaXggY3ViaXRzIGxvbmcgYnkgdGhlIGN1Yml0IGFuZCBhbiBoYW5kIGJyZWFkdGg6IHNvIGhlIG1lYXN1cmVkIHRoZSBicmVhZHRoIG9mIHRoZSBidWlsZGluZywgb25lIHJlZWQ7IGFuZCB0aGUgaGVpZ2h0LCBvbmUgcmVlZC4KVGhlbiBjYW1lIGhlIHVudG8gdGhlIGdhdGUgd2hpY2ggbG9va2V0aCB0b3dhcmQgdGhlIGVhc3QsIGFuZCB3ZW50IHVwIHRoZSBzdGFpcnMgdGhlcmVvZiwgYW5kIG1lYXN1cmVkIHRoZSB0aHJlc2hvbGQgb2YgdGhlIGdhdGUsIHdoaWNoIHdhcyBvbmUgcmVlZCBicm9hZDsgYW5kIHRoZSBvdGhlciB0aHJlc2hvbGQgb2YgdGhlIGdhdGUsIHdoaWNoIHdhcyBvbmUgcmVlZCBicm9hZC4KQW5kIGV2ZXJ5IGxpdHRsZSBjaGFtYmVyIHdhcyBvbmUgcmVlZCBsb25nLCBhbmQgb25lIHJlZWQgYnJvYWQ7IGFuZCBiZXR3ZWVuIHRoZSBsaXR0bGUgY2hhbWJlcnMgd2VyZSBmaXZlIGN1Yml0czsgYW5kIHRoZSB0aHJlc2hvbGQgb2YgdGhlIGdhdGUgYnkgdGhlIHBvcmNoIG9mIHRoZSBnYXRlIHdpdGhpbiB3YXMgb25lIHJlZWQuCkhlIG1lYXN1cmVkIGFsc28gdGhlIHBvcmNoIG9mIHRoZSBnYXRlIHdpdGhpbiwgb25lIHJlZWQuClRoZW4gbWVhc3VyZWQgaGUgdGhlIHBvcmNoIG9mIHRoZSBnYXRlLCBlaWdodCBjdWJpdHM7IGFuZCB0aGUgcG9zdHMgdGhlcmVvZiwgdHdvIGN1Yml0czsgYW5kIHRoZSBwb3JjaCBvZiB0aGUgZ2F0ZSB3YXMgaW53YXJkLgpBbmQgdGhlIGxpdHRsZSBjaGFtYmVycyBvZiB0aGUgZ2F0ZSBlYXN0d2FyZCB3ZXJlIHRocmVlIG9uIHRoaXMgc2lkZSwgYW5kIHRocmVlIG9uIHRoYXQgc2lkZTsgdGhleSB0aHJlZSB3ZXJlIG9mIG9uZSBtZWFzdXJlOiBhbmQgdGhlIHBvc3RzIGhhZCBvbmUgbWVhc3VyZSBvbiB0aGlzIHNpZGUgYW5kIG9uIHRoYXQgc2lkZS4KQW5kIGhlIG1lYXN1cmVkIHRoZSBicmVhZHRoIG9mIHRoZSBlbnRyeSBvZiB0aGUgZ2F0ZSwgdGVuIGN1Yml0czsgYW5kIHRoZSBsZW5ndGggb2YgdGhlIGdhdGUsIHRoaXJ0ZWVuIGN1Yml0cy4KVGhlIHNwYWNlIGFsc28gYmVmb3JlIHRoZSBsaXR0bGUgY2hhbWJlcnMgd2FzIG9uZSBjdWJpdCBvbiB0aGlzIHNpZGUsIGFuZCB0aGUgc3BhY2Ugd2FzIG9uZSBjdWJpdCBvbiB0aGF0IHNpZGU6IGFuZCB0aGUgbGl0dGxlIGNoYW1iZXJzIHdlcmUgc2l4IGN1Yml0cyBvbiB0aGlzIHNpZGUsIGFuZCBzaXggY3ViaXRzIG9uIHRoYXQgc2lkZS4KSGUgbWVhc3VyZWQgdGhlbiB0aGUgZ2F0ZSBmcm9tIHRoZSByb29mIG9mIG9uZSBsaXR0bGUgY2hhbWJlciB0byB0aGUgcm9vZiBvZiBhbm90aGVyOiB0aGUgYnJlYWR0aCB3YXMgZml2ZSBhbmQgdHdlbnR5IGN1Yml0cywgZG9vciBhZ2FpbnN0IGRvb3IuCkhlIG1hZGUgYWxzbyBwb3N0cyBvZiB0aHJlZXNjb3JlIGN1Yml0cywgZXZlbiB1bnRvIHRoZSBwb3N0IG9mIHRoZSBjb3VydCByb3VuZCBhYm91dCB0aGUgZ2F0ZS4KQW5kIGZyb20gdGhlIGZhY2Ugb2YgdGhlIGdhdGUgb2YgdGhlIGVudHJhbmNlIHVudG8gdGhlIGZhY2Ugb2YgdGhlIHBvcmNoIG9mIHRoZSBpbm5lciBnYXRlIHdlcmUgZmlmdHkgY3ViaXRzLgpBbmQgdGhlcmUgd2VyZSBuYXJyb3cgd2luZG93cyB0byB0aGUgbGl0dGxlIGNoYW1iZXJzLCBhbmQgdG8gdGhlaXIgcG9zdHMgd2l0aGluIHRoZSBnYXRlIHJvdW5kIGFib3V0LCBhbmQgbGlrZXdpc2UgdG8gdGhlIGFyY2hlczogYW5kIHdpbmRvd3Mgd2VyZSByb3VuZCBhYm91dCBpbndhcmQ6IGFuZCB1cG9uIGVhY2ggcG9zdCB3ZXJlIHBhbG0gdHJlZXMuClRoZW4gYnJvdWdodCBoZSBtZSBpbnRvIHRoZSBvdXR3YXJkIGNvdXJ0LCBhbmQsIGxvLCB0aGVyZSB3ZXJlIGNoYW1iZXJzLCBhbmQgYSBwYXZlbWVudCBtYWRlIGZvciB0aGUgY291cnQgcm91bmQgYWJvdXQ6IHRoaXJ0eSBjaGFtYmVycyB3ZXJlIHVwb24gdGhlIHBhdmVtZW50LgpBbmQgdGhlIHBhdmVtZW50IGJ5IHRoZSBzaWRlIG9mIHRoZSBnYXRlcyBvdmVyIGFnYWluc3QgdGhlIGxlbmd0aCBvZiB0aGUgZ2F0ZXMgd2FzIHRoZSBsb3dlciBwYXZlbWVudC4KVGhlbiBoZSBtZWFzdXJlZCB0aGUgYnJlYWR0aCBmcm9tIHRoZSBmb3JlZnJvbnQgb2YgdGhlIGxvd2VyIGdhdGUgdW50byB0aGUgZm9yZWZyb250IG9mIHRoZSBpbm5lciBjb3VydCB3aXRob3V0LCBhbiBodW5kcmVkIGN1Yml0cyBlYXN0d2FyZCBhbmQgbm9ydGh3YXJkLgpBbmQgdGhlIGdhdGUgb2YgdGhlIG91dHdhcmQgY291cnQgdGhhdCBsb29rZWQgdG93YXJkIHRoZSBub3J0aCwgaGUgbWVhc3VyZWQgdGhlIGxlbmd0aCB0aGVyZW9mLCBhbmQgdGhlIGJyZWFkdGggdGhlcmVvZi4KQW5kIHRoZSBsaXR0bGUgY2hhbWJlcnMgdGhlcmVvZiB3ZXJlIHRocmVlIG9uIHRoaXMgc2lkZSBhbmQgdGhyZWUgb24gdGhhdCBzaWRlOyBhbmQgdGhlIHBvc3RzIHRoZXJlb2YgYW5kIHRoZSBhcmNoZXMgdGhlcmVvZiB3ZXJlIGFmdGVyIHRoZSBtZWFzdXJlIG9mIHRoZSBmaXJzdCBnYXRlOiB0aGUgbGVuZ3RoIHRoZXJlb2Ygd2FzIGZpZnR5IGN1Yml0cywgYW5kIHRoZSBicmVhZHRoIGZpdmUgYW5kIHR3ZW50eSBjdWJpdHMuCkFuZCB0aGVpciB3aW5kb3dzLCBhbmQgdGhlaXIgYXJjaGVzLCBhbmQgdGhlaXIgcGFsbSB0cmVlcywgd2VyZSBhZnRlciB0aGUgbWVhc3VyZSBvZiB0aGUgZ2F0ZSB0aGF0IGxvb2tldGggdG93YXJkIHRoZSBlYXN0OyBhbmQgdGhleSB3ZW50IHVwIHVudG8gaXQgYnkgc2V2ZW4gc3RlcHM7IGFuZCB0aGUgYXJjaGVzIHRoZXJlb2Ygd2VyZSBiZWZvcmUgdGhlbS4KQW5kIHRoZSBnYXRlIG9mIHRoZSBpbm5lciBjb3VydCB3YXMgb3ZlciBhZ2FpbnN0IHRoZSBnYXRlIHRvd2FyZCB0aGUgbm9ydGgsIGFuZCB0b3dhcmQgdGhlIGVhc3Q7IGFuZCBoZSBtZWFzdXJlZCBmcm9tIGdhdGUgdG8gZ2F0ZSBhbiBodW5kcmVkIGN1Yml0cy4KQWZ0ZXIgdGhhdCBoZSBicm91Z2h0IG1lIHRvd2FyZCB0aGUgc291dGgsIGFuZCBiZWhvbGQgYSBnYXRlIHRvd2FyZCB0aGUgc291dGg6IGFuZCBoZSBtZWFzdXJlZCB0aGUgcG9zdHMgdGhlcmVvZiBhbmQgdGhlIGFyY2hlcyB0aGVyZW9mIGFjY29yZGluZyB0byB0aGVzZSBtZWFzdXJlcy4KQW5kIHRoZXJlIHdlcmUgd2luZG93cyBpbiBpdCBhbmQgaW4gdGhlIGFyY2hlcyB0aGVyZW9mIHJvdW5kIGFib3V0LCBsaWtlIHRob3NlIHdpbmRvd3M6IHRoZSBsZW5ndGggd2FzIGZpZnR5IGN1Yml0cywgYW5kIHRoZSBicmVhZHRoIGZpdmUgYW5kIHR3ZW50eSBjdWJpdHMuCkFuZCB0aGVyZSB3ZXJlIHNldmVuIHN0ZXBzIHRvIGdvIHVwIHRvIGl0LCBhbmQgdGhlIGFyY2hlcyB0aGVyZW9mIHdlcmUgYmVmb3JlIHRoZW06IGFuZCBpdCBoYWQgcGFsbSB0cmVlcywgb25lIG9uIHRoaXMgc2lkZSwgYW5kIGFub3RoZXIgb24gdGhhdCBzaWRlLCB1cG9uIHRoZSBwb3N0cyB0aGVyZW9mLgpBbmQgdGhlcmUgd2FzIGEgZ2F0ZSBpbiB0aGUgaW5uZXIgY291cnQgdG93YXJkIHRoZSBzb3V0aDogYW5kIGhlIG1lYXN1cmVkIGZyb20gZ2F0ZSB0byBnYXRlIHRvd2FyZCB0aGUgc291dGggYW4gaHVuZHJlZCBjdWJpdHMuCkFuZCBoZSBicm91Z2h0IG1lIHRvIHRoZSBpbm5lciBjb3VydCBieSB0aGUgc291dGggZ2F0ZTogYW5kIGhlIG1lYXN1cmVkIHRoZSBzb3V0aCBnYXRlIGFjY29yZGluZyB0byB0aGVzZSBtZWFzdXJlczsKQW5kIHRoZSBsaXR0bGUgY2hhbWJlcnMgdGhlcmVvZiwgYW5kIHRoZSBwb3N0cyB0aGVyZW9mLCBhbmQgdGhlIGFyY2hlcyB0aGVyZW9mLCBhY2NvcmRpbmcgdG8gdGhlc2UgbWVhc3VyZXM6IGFuZCB0aGVyZSB3ZXJlIHdpbmRvd3MgaW4gaXQgYW5kIGluIHRoZSBhcmNoZXMgdGhlcmVvZiByb3VuZCBhYm91dDogaXQgd2FzIGZpZnR5IGN1Yml0cyBsb25nLCBhbmQgZml2ZSBhbmQgdHdlbnR5IGN1Yml0cyBicm9hZC4KQW5kIHRoZSBhcmNoZXMgcm91bmQgYWJvdXQgd2VyZSBmaXZlIGFuZCB0d2VudHkgY3ViaXRzIGxvbmcsIGFuZCBmaXZlIGN1Yml0cyBicm9hZC4KQW5kIHRoZSBhcmNoZXMgdGhlcmVvZiB3ZXJlIHRvd2FyZCB0aGUgdXR0ZXIgY291cnQ7IGFuZCBwYWxtIHRyZWVzIHdlcmUgdXBvbiB0aGUgcG9zdHMgdGhlcmVvZjogYW5kIHRoZSBnb2luZyB1cCB0byBpdCBoYWQgZWlnaHQgc3RlcHMuCkFuZCBoZSBicm91Z2h0IG1lIGludG8gdGhlIGlubmVyIGNvdXJ0IHRvd2FyZCB0aGUgZWFzdDogYW5kIGhlIG1lYXN1cmVkIHRoZSBnYXRlIGFjY29yZGluZyB0byB0aGVzZSBtZWFzdXJlcy4KQW5kIHRoZSBsaXR0bGUgY2hhbWJlcnMgdGhlcmVvZiwgYW5kIHRoZSBwb3N0cyB0aGVyZW9mLCBhbmQgdGhlIGFyY2hlcyB0aGVyZW9mLCB3ZXJlIGFjY29yZGluZyB0byB0aGVzZSBtZWFzdXJlczogYW5kIHRoZXJlIHdlcmUgd2luZG93cyB0aGVyZWluIGFuZCBpbiB0aGUgYXJjaGVzIHRoZXJlb2Ygcm91bmQgYWJvdXQ6IGl0IHdhcyBmaWZ0eSBjdWJpdHMgbG9uZywgYW5kIGZpdmUgYW5kIHR3ZW50eSBjdWJpdHMgYnJvYWQuCkFuZCB0aGUgYXJjaGVzIHRoZXJlb2Ygd2VyZSB0b3dhcmQgdGhlIG91dHdhcmQgY291cnQ7IGFuZCBwYWxtIHRyZWVzIHdlcmUgdXBvbiB0aGUgcG9zdHMgdGhlcmVvZiwgb24gdGhpcyBzaWRlLCBhbmQgb24gdGhhdCBzaWRlOiBhbmQgdGhlIGdvaW5nIHVwIHRvIGl0IGhhZCBlaWdodCBzdGVwcy4KQW5kIGhlIGJyb3VnaHQgbWUgdG8gdGhlIG5vcnRoIGdhdGUsIGFuZCBtZWFzdXJlZCBpdCBhY2NvcmRpbmcgdG8gdGhlc2UgbWVhc3VyZXM7ClRoZSBsaXR0bGUgY2hhbWJlcnMgdGhlcmVvZiwgdGhlIHBvc3RzIHRoZXJlb2YsIGFuZCB0aGUgYXJjaGVzIHRoZXJlb2YsIGFuZCB0aGUgd2luZG93cyB0byBpdCByb3VuZCBhYm91dDogdGhlIGxlbmd0aCB3YXMgZmlmdHkgY3ViaXRzLCBhbmQgdGhlIGJyZWFkdGggZml2ZSBhbmQgdHdlbnR5IGN1Yml0cy4KQW5kIHRoZSBwb3N0cyB0aGVyZW9mIHdlcmUgdG93YXJkIHRoZSB1dHRlciBjb3VydDsgYW5kIHBhbG0gdHJlZXMgd2VyZSB1cG9uIHRoZSBwb3N0cyB0aGVyZW9mLCBvbiB0aGlzIHNpZGUsIGFuZCBvbiB0aGF0IHNpZGU6IGFuZCB0aGUgZ29pbmcgdXAgdG8gaXQgaGFkIGVpZ2h0IHN0ZXBzLgpBbmQgdGhlIGNoYW1iZXJzIGFuZCB0aGUgZW50cmllcyB0aGVyZW9mIHdlcmUgYnkgdGhlIHBvc3RzIG9mIHRoZSBnYXRlcywgd2hlcmUgdGhleSB3YXNoZWQgdGhlIGJ1cm50IG9mZmVyaW5nLgpBbmQgaW4gdGhlIHBvcmNoIG9mIHRoZSBnYXRlIHdlcmUgdHdvIHRhYmxlcyBvbiB0aGlzIHNpZGUsIGFuZCB0d28gdGFibGVzIG9uIHRoYXQgc2lkZSwgdG8gc2xheSB0aGVyZW9uIHRoZSBidXJudCBvZmZlcmluZyBhbmQgdGhlIHNpbiBvZmZlcmluZyBhbmQgdGhlIHRyZXNwYXNzIG9mZmVyaW5nLgpBbmQgYXQgdGhlIHNpZGUgd2l0aG91dCwgYXMgb25lIGdvZXRoIHVwIHRvIHRoZSBlbnRyeSBvZiB0aGUgbm9ydGggZ2F0ZSwgd2VyZSB0d28gdGFibGVzOyBhbmQgb24gdGhlIG90aGVyIHNpZGUsIHdoaWNoIHdhcyBhdCB0aGUgcG9yY2ggb2YgdGhlIGdhdGUsIHdlcmUgdHdvIHRhYmxlcy4KRm91ciB0YWJsZXMgd2VyZSBvbiB0aGlzIHNpZGUsIGFuZCBmb3VyIHRhYmxlcyBvbiB0aGF0IHNpZGUsIGJ5IHRoZSBzaWRlIG9mIHRoZSBnYXRlOyBlaWdodCB0YWJsZXMsIHdoZXJldXBvbiB0aGV5IHNsZXcgdGhlaXIgc2FjcmlmaWNlcy4KQW5kIHRoZSBmb3VyIHRhYmxlcyB3ZXJlIG9mIGhld24gc3RvbmUgZm9yIHRoZSBidXJudCBvZmZlcmluZywgb2YgYSBjdWJpdCBhbmQgYW4gaGFsZiBsb25nLCBhbmQgYSBjdWJpdCBhbmQgYW4gaGFsZiBicm9hZCwgYW5kIG9uZSBjdWJpdCBoaWdoOiB3aGVyZXVwb24gYWxzbyB0aGV5IGxhaWQgdGhlIGluc3RydW1lbnRzIHdoZXJld2l0aCB0aGV5IHNsZXcgdGhlIGJ1cm50IG9mZmVyaW5nIGFuZCB0aGUgc2FjcmlmaWNlLgpBbmQgd2l0aGluIHdlcmUgaG9va3MsIGFuIGhhbmQgYnJvYWQsIGZhc3RlbmVkIHJvdW5kIGFib3V0OiBhbmQgdXBvbiB0aGUgdGFibGVzIHdhcyB0aGUgZmxlc2ggb2YgdGhlIG9mZmVyaW5nLgpBbmQgd2l0aG91dCB0aGUgaW5uZXIgZ2F0ZSB3ZXJlIHRoZSBjaGFtYmVycyBvZiB0aGUgc2luZ2VycyBpbiB0aGUgaW5uZXIgY291cnQsIHdoaWNoIHdhcyBhdCB0aGUgc2lkZSBvZiB0aGUgbm9ydGggZ2F0ZTsgYW5kIHRoZWlyIHByb3NwZWN0IHdhcyB0b3dhcmQgdGhlIHNvdXRoOiBvbmUgYXQgdGhlIHNpZGUgb2YgdGhlIGVhc3QgZ2F0ZSBoYXZpbmcgdGhlIHByb3NwZWN0IHRvd2FyZCB0aGUgbm9ydGguCkFuZCBoZSBzYWlkIHVudG8gbWUsIFRoaXMgY2hhbWJlciwgd2hvc2UgcHJvc3BlY3QgaXMgdG93YXJkIHRoZSBzb3V0aCwgaXMgZm9yIHRoZSBwcmllc3RzLCB0aGUga2VlcGVycyBvZiB0aGUgY2hhcmdlIG9mIHRoZSBob3VzZS4KQW5kIHRoZSBjaGFtYmVyIHdob3NlIHByb3NwZWN0IGlzIHRvd2FyZCB0aGUgbm9ydGggaXMgZm9yIHRoZSBwcmllc3RzLCB0aGUga2VlcGVycyBvZiB0aGUgY2hhcmdlIG9mIHRoZSBhbHRhcjogdGhlc2UgYXJlIHRoZSBzb25zIG9mIFphZG9rIGFtb25nIHRoZSBzb25zIG9mIExldmksIHdoaWNoIGNvbWUgbmVhciB0byB0aGUgTE9SRCB0byBtaW5pc3RlciB1bnRvIGhpbS4KU28gaGUgbWVhc3VyZWQgdGhlIGNvdXJ0LCBhbiBodW5kcmVkIGN1Yml0cyBsb25nLCBhbmQgYW4gaHVuZHJlZCBjdWJpdHMgYnJvYWQsIGZvdXJzcXVhcmU7IGFuZCB0aGUgYWx0YXIgdGhhdCB3YXMgYmVmb3JlIHRoZSBob3VzZS4KQW5kIGhlIGJyb3VnaHQgbWUgdG8gdGhlIHBvcmNoIG9mIHRoZSBob3VzZSwgYW5kIG1lYXN1cmVkIGVhY2ggcG9zdCBvZiB0aGUgcG9yY2gsIGZpdmUgY3ViaXRzIG9uIHRoaXMgc2lkZSwgYW5kIGZpdmUgY3ViaXRzIG9uIHRoYXQgc2lkZTogYW5kIHRoZSBicmVhZHRoIG9mIHRoZSBnYXRlIHdhcyB0aHJlZSBjdWJpdHMgb24gdGhpcyBzaWRlLCBhbmQgdGhyZWUgY3ViaXRzIG9uIHRoYXQgc2lkZS4KVGhlIGxlbmd0aCBvZiB0aGUgcG9yY2ggd2FzIHR3ZW50eSBjdWJpdHMsIGFuZCB0aGUgYnJlYWR0aCBlbGV2ZW4gY3ViaXRzLCBhbmQgaGUgYnJvdWdodCBtZSBieSB0aGUgc3RlcHMgd2hlcmVieSB0aGV5IHdlbnQgdXAgdG8gaXQ6IGFuZCB0aGVyZSB3ZXJlIHBpbGxhcnMgYnkgdGhlIHBvc3RzLCBvbmUgb24gdGhpcyBzaWRlLCBhbmQgYW5vdGhlciBvbiB0aGF0IHNpZGUuCkFmdGVyd2FyZCBoZSBicm91Z2h0IG1lIHRvIHRoZSB0ZW1wbGUsIGFuZCBtZWFzdXJlZCB0aGUgcG9zdHMsIHNpeCBjdWJpdHMgYnJvYWQgb24gdGhlIG9uZSBzaWRlLCBhbmQgc2l4IGN1Yml0cyBicm9hZCBvbiB0aGUgb3RoZXIgc2lkZSwgd2hpY2ggd2FzIHRoZSBicmVhZHRoIG9mIHRoZSB0YWJlcm5hY2xlLgpBbmQgdGhlIGJyZWFkdGggb2YgdGhlIGRvb3Igd2FzIHRlbiBjdWJpdHM7IGFuZCB0aGUgc2lkZXMgb2YgdGhlIGRvb3Igd2VyZSBmaXZlIGN1Yml0cyBvbiB0aGUgb25lIHNpZGUsIGFuZCBmaXZlIGN1Yml0cyBvbiB0aGUgb3RoZXIgc2lkZTogYW5kIGhlIG1lYXN1cmVkIHRoZSBsZW5ndGggdGhlcmVvZiwgZm9ydHkgY3ViaXRzOiBhbmQgdGhlIGJyZWFkdGgsIHR3ZW50eSBjdWJpdHMuClRoZW4gd2VudCBoZSBpbndhcmQsIGFuZCBtZWFzdXJlZCB0aGUgcG9zdCBvZiB0aGUgZG9vciwgdHdvIGN1Yml0czsgYW5kIHRoZSBkb29yLCBzaXggY3ViaXRzOyBhbmQgdGhlIGJyZWFkdGggb2YgdGhlIGRvb3IsIHNldmVuIGN1Yml0cy4KU28gaGUgbWVhc3VyZWQgdGhlIGxlbmd0aCB0aGVyZW9mLCB0d2VudHkgY3ViaXRzOyBhbmQgdGhlIGJyZWFkdGgsIHR3ZW50eSBjdWJpdHMsIGJlZm9yZSB0aGUgdGVtcGxlOiBhbmQgaGUgc2FpZCB1bnRvIG1lLCBUaGlzIGlzIHRoZSBtb3N0IGhvbHkgcGxhY2UuCkFmdGVyIGhlIG1lYXN1cmVkIHRoZSB3YWxsIG9mIHRoZSBob3VzZSwgc2l4IGN1Yml0czsgYW5kIHRoZSBicmVhZHRoIG9mIGV2ZXJ5IHNpZGUgY2hhbWJlciwgZm91ciBjdWJpdHMsIHJvdW5kIGFib3V0IHRoZSBob3VzZSBvbiBldmVyeSBzaWRlLgpBbmQgdGhlIHNpZGUgY2hhbWJlcnMgd2VyZSB0aHJlZSwgb25lIG92ZXIgYW5vdGhlciwgYW5kIHRoaXJ0eSBpbiBvcmRlcjsgYW5kIHRoZXkgZW50ZXJlZCBpbnRvIHRoZSB3YWxsIHdoaWNoIHdhcyBvZiB0aGUgaG91c2UgZm9yIHRoZSBzaWRlIGNoYW1iZXJzIHJvdW5kIGFib3V0LCB0aGF0IHRoZXkgbWlnaHQgaGF2ZSBob2xkLCBidXQgdGhleSBoYWQgbm90IGhvbGQgaW4gdGhlIHdhbGwgb2YgdGhlIGhvdXNlLgpBbmQgdGhlcmUgd2FzIGFuIGVubGFyZ2luZywgYW5kIGEgd2luZGluZyBhYm91dCBzdGlsbCB1cHdhcmQgdG8gdGhlIHNpZGUgY2hhbWJlcnM6IGZvciB0aGUgd2luZGluZyBhYm91dCBvZiB0aGUgaG91c2Ugd2VudCBzdGlsbCB1cHdhcmQgcm91bmQgYWJvdXQgdGhlIGhvdXNlOiB0aGVyZWZvcmUgdGhlIGJyZWFkdGggb2YgdGhlIGhvdXNlIHdhcyBzdGlsbCB1cHdhcmQsIGFuZCBzbyBpbmNyZWFzZWQgZnJvbSB0aGUgbG93ZXN0IGNoYW1iZXIgdG8gdGhlIGhpZ2hlc3QgYnkgdGhlIG1pZHN0LgpJIHNhdyBhbHNvIHRoZSBoZWlnaHQgb2YgdGhlIGhvdXNlIHJvdW5kIGFib3V0OiB0aGUgZm91bmRhdGlvbnMgb2YgdGhlIHNpZGUgY2hhbWJlcnMgd2VyZSBhIGZ1bGwgcmVlZCBvZiBzaXggZ3JlYXQgY3ViaXRzLgpUaGUgdGhpY2tuZXNzIG9mIHRoZSB3YWxsLCB3aGljaCB3YXMgZm9yIHRoZSBzaWRlIGNoYW1iZXIgd2l0aG91dCwgd2FzIGZpdmUgY3ViaXRzOiBhbmQgdGhhdCB3aGljaCB3YXMgbGVmdCB3YXMgdGhlIHBsYWNlIG9mIHRoZSBzaWRlIGNoYW1iZXJzIHRoYXQgd2VyZSB3aXRoaW4uCkFuZCBiZXR3ZWVuIHRoZSBjaGFtYmVycyB3YXMgdGhlIHdpZGVuZXNzIG9mIHR3ZW50eSBjdWJpdHMgcm91bmQgYWJvdXQgdGhlIGhvdXNlIG9uIGV2ZXJ5IHNpZGUuCkFuZCB0aGUgZG9vcnMgb2YgdGhlIHNpZGUgY2hhbWJlcnMgd2VyZSB0b3dhcmQgdGhlIHBsYWNlIHRoYXQgd2FzIGxlZnQsIG9uZSBkb29yIHRvd2FyZCB0aGUgbm9ydGgsIGFuZCBhbm90aGVyIGRvb3IgdG93YXJkIHRoZSBzb3V0aDogYW5kIHRoZSBicmVhZHRoIG9mIHRoZSBwbGFjZSB0aGF0IHdhcyBsZWZ0IHdhcyBmaXZlIGN1Yml0cyByb3VuZCBhYm91dC4KTm93IHRoZSBidWlsZGluZyB0aGF0IHdhcyBiZWZvcmUgdGhlIHNlcGFyYXRlIHBsYWNlIGF0IHRoZSBlbmQgdG93YXJkIHRoZSB3ZXN0IHdhcyBzZXZlbnR5IGN1Yml0cyBicm9hZDsgYW5kIHRoZSB3YWxsIG9mIHRoZSBidWlsZGluZyB3YXMgZml2ZSBjdWJpdHMgdGhpY2sgcm91bmQgYWJvdXQsIGFuZCB0aGUgbGVuZ3RoIHRoZXJlb2YgbmluZXR5IGN1Yml0cy4KU28gaGUgbWVhc3VyZWQgdGhlIGhvdXNlLCBhbiBodW5kcmVkIGN1Yml0cyBsb25nOyBhbmQgdGhlIHNlcGFyYXRlIHBsYWNlLCBhbmQgdGhlIGJ1aWxkaW5nLCB3aXRoIHRoZSB3YWxscyB0aGVyZW9mLCBhbiBodW5kcmVkIGN1Yml0cyBsb25nOwpBbHNvIHRoZSBicmVhZHRoIG9mIHRoZSBmYWNlIG9mIHRoZSBob3VzZSwgYW5kIG9mIHRoZSBzZXBhcmF0ZSBwbGFjZSB0b3dhcmQgdGhlIGVhc3QsIGFuIGh1bmRyZWQgY3ViaXRzLgpBbmQgaGUgbWVhc3VyZWQgdGhlIGxlbmd0aCBvZiB0aGUgYnVpbGRpbmcgb3ZlciBhZ2FpbnN0IHRoZSBzZXBhcmF0ZSBwbGFjZSB3aGljaCB3YXMgYmVoaW5kIGl0LCBhbmQgdGhlIGdhbGxlcmllcyB0aGVyZW9mIG9uIHRoZSBvbmUgc2lkZSBhbmQgb24gdGhlIG90aGVyIHNpZGUsIGFuIGh1bmRyZWQgY3ViaXRzLCB3aXRoIHRoZSBpbm5lciB0ZW1wbGUsIGFuZCB0aGUgcG9yY2hlcyBvZiB0aGUgY291cnQ7ClRoZSBkb29yIHBvc3RzLCBhbmQgdGhlIG5hcnJvdyB3aW5kb3dzLCBhbmQgdGhlIGdhbGxlcmllcyByb3VuZCBhYm91dCBvbiB0aGVpciB0aHJlZSBzdG9yaWVzLCBvdmVyIGFnYWluc3QgdGhlIGRvb3IsIGNpZWxlZCB3aXRoIHdvb2Qgcm91bmQgYWJvdXQsIGFuZCBmcm9tIHRoZSBncm91bmQgdXAgdG8gdGhlIHdpbmRvd3MsIGFuZCB0aGUgd2luZG93cyB3ZXJlIGNvdmVyZWQ7ClRvIHRoYXQgYWJvdmUgdGhlIGRvb3IsIGV2ZW4gdW50byB0aGUgaW5uZXIgaG91c2UsIGFuZCB3aXRob3V0LCBhbmQgYnkgYWxsIHRoZSB3YWxsIHJvdW5kIGFib3V0IHdpdGhpbiBhbmQgd2l0aG91dCwgYnkgbWVhc3VyZS4KQW5kIGl0IHdhcyBtYWRlIHdpdGggY2hlcnViaW1zIGFuZCBwYWxtIHRyZWVzLCBzbyB0aGF0IGEgcGFsbSB0cmVlIHdhcyBiZXR3ZWVuIGEgY2hlcnViIGFuZCBhIGNoZXJ1YjsgYW5kIGV2ZXJ5IGNoZXJ1YiBoYWQgdHdvIGZhY2VzOwpTbyB0aGF0IHRoZSBmYWNlIG9mIGEgbWFuIHdhcyB0b3dhcmQgdGhlIHBhbG0gdHJlZSBvbiB0aGUgb25lIHNpZGUsIGFuZCB0aGUgZmFjZSBvZiBhIHlvdW5nIGxpb24gdG93YXJkIHRoZSBwYWxtIHRyZWUgb24gdGhlIG90aGVyIHNpZGU6IGl0IHdhcyBtYWRlIHRocm91Z2ggYWxsIHRoZSBob3VzZSByb3VuZCBhYm91dC4KRnJvbSB0aGUgZ3JvdW5kIHVudG8gYWJvdmUgdGhlIGRvb3Igd2VyZSBjaGVydWJpbXMgYW5kIHBhbG0gdHJlZXMgbWFkZSwgYW5kIG9uIHRoZSB3YWxsIG9mIHRoZSB0ZW1wbGUuClRoZSBwb3N0cyBvZiB0aGUgdGVtcGxlIHdlcmUgc3F1YXJlZCwgYW5kIHRoZSBmYWNlIG9mIHRoZSBzYW5jdHVhcnk7IHRoZSBhcHBlYXJhbmNlIG9mIHRoZSBvbmUgYXMgdGhlIGFwcGVhcmFuY2Ugb2YgdGhlIG90aGVyLgpUaGUgYWx0YXIgb2Ygd29vZCB3YXMgdGhyZWUgY3ViaXRzIGhpZ2gsIGFuZCB0aGUgbGVuZ3RoIHRoZXJlb2YgdHdvIGN1Yml0czsgYW5kIHRoZSBjb3JuZXJzIHRoZXJlb2YsIGFuZCB0aGUgbGVuZ3RoIHRoZXJlb2YsIGFuZCB0aGUgd2FsbHMgdGhlcmVvZiwgd2VyZSBvZiB3b29kOiBhbmQgaGUgc2FpZCB1bnRvIG1lLCBUaGlzIGlzIHRoZSB0YWJsZSB0aGF0IGlzIGJlZm9yZSB0aGUgTE9SRC4KQW5kIHRoZSB0ZW1wbGUgYW5kIHRoZSBzYW5jdHVhcnkgaGFkIHR3byBkb29ycy4KQW5kIHRoZSBkb29ycyBoYWQgdHdvIGxlYXZlcyBhcGllY2UsIHR3byB0dXJuaW5nIGxlYXZlczsgdHdvIGxlYXZlcyBmb3IgdGhlIG9uZSBkb29yLCBhbmQgdHdvIGxlYXZlcyBmb3IgdGhlIG90aGVyIGRvb3IuCkFuZCB0aGVyZSB3ZXJlIG1hZGUgb24gdGhlbSwgb24gdGhlIGRvb3JzIG9mIHRoZSB0ZW1wbGUsIGNoZXJ1YmltcyBhbmQgcGFsbSB0cmVlcywgbGlrZSBhcyB3ZXJlIG1hZGUgdXBvbiB0aGUgd2FsbHM7IGFuZCB0aGVyZSB3ZXJlIHRoaWNrIHBsYW5rcyB1cG9uIHRoZSBmYWNlIG9mIHRoZSBwb3JjaCB3aXRob3V0LgpBbmQgdGhlcmUgd2VyZSBuYXJyb3cgd2luZG93cyBhbmQgcGFsbSB0cmVlcyBvbiB0aGUgb25lIHNpZGUgYW5kIG9uIHRoZSBvdGhlciBzaWRlLCBvbiB0aGUgc2lkZXMgb2YgdGhlIHBvcmNoLCBhbmQgdXBvbiB0aGUgc2lkZSBjaGFtYmVycyBvZiB0aGUgaG91c2UsIGFuZCB0aGljayBwbGFua3MuClRoZW4gaGUgYnJvdWdodCBtZSBmb3J0aCBpbnRvIHRoZSB1dHRlciBjb3VydCwgdGhlIHdheSB0b3dhcmQgdGhlIG5vcnRoOiBhbmQgaGUgYnJvdWdodCBtZSBpbnRvIHRoZSBjaGFtYmVyIHRoYXQgd2FzIG92ZXIgYWdhaW5zdCB0aGUgc2VwYXJhdGUgcGxhY2UsIGFuZCB3aGljaCB3YXMgYmVmb3JlIHRoZSBidWlsZGluZyB0b3dhcmQgdGhlIG5vcnRoLgpCZWZvcmUgdGhlIGxlbmd0aCBvZiBhbiBodW5kcmVkIGN1Yml0cyB3YXMgdGhlIG5vcnRoIGRvb3IsIGFuZCB0aGUgYnJlYWR0aCB3YXMgZmlmdHkgY3ViaXRzLgpPdmVyIGFnYWluc3QgdGhlIHR3ZW50eSBjdWJpdHMgd2hpY2ggd2VyZSBmb3IgdGhlIGlubmVyIGNvdXJ0LCBhbmQgb3ZlciBhZ2FpbnN0IHRoZSBwYXZlbWVudCB3aGljaCB3YXMgZm9yIHRoZSB1dHRlciBjb3VydCwgd2FzIGdhbGxlcnkgYWdhaW5zdCBnYWxsZXJ5IGluIHRocmVlIHN0b3JpZXMuCkFuZCBiZWZvcmUgdGhlIGNoYW1iZXJzIHdhcyBhIHdhbGsgdG8gdGVuIGN1Yml0cyBicmVhZHRoIGlud2FyZCwgYSB3YXkgb2Ygb25lIGN1Yml0OyBhbmQgdGhlaXIgZG9vcnMgdG93YXJkIHRoZSBub3J0aC4KTm93IHRoZSB1cHBlciBjaGFtYmVycyB3ZXJlIHNob3J0ZXI6IGZvciB0aGUgZ2FsbGVyaWVzIHdlcmUgaGlnaGVyIHRoYW4gdGhlc2UsIHRoYW4gdGhlIGxvd2VyLCBhbmQgdGhhbiB0aGUgbWlkZGxlbW9zdCBvZiB0aGUgYnVpbGRpbmcuCkZvciB0aGV5IHdlcmUgaW4gdGhyZWUgc3RvcmllcywgYnV0IGhhZCBub3QgcGlsbGFycyBhcyB0aGUgcGlsbGFycyBvZiB0aGUgY291cnRzOiB0aGVyZWZvcmUgdGhlIGJ1aWxkaW5nIHdhcyBzdHJhaXRlbmVkIG1vcmUgdGhhbiB0aGUgbG93ZXN0IGFuZCB0aGUgbWlkZGxlbW9zdCBmcm9tIHRoZSBncm91bmQuCkFuZCB0aGUgd2FsbCB0aGF0IHdhcyB3aXRob3V0IG92ZXIgYWdhaW5zdCB0aGUgY2hhbWJlcnMsIHRvd2FyZCB0aGUgdXR0ZXIgY291cnQgb24gdGhlIGZvcmVwYXJ0IG9mIHRoZSBjaGFtYmVycywgdGhlIGxlbmd0aCB0aGVyZW9mIHdhcyBmaWZ0eSBjdWJpdHMuCkZvciB0aGUgbGVuZ3RoIG9mIHRoZSBjaGFtYmVycyB0aGF0IHdlcmUgaW4gdGhlIHV0dGVyIGNvdXJ0IHdhcyBmaWZ0eSBjdWJpdHM6IGFuZCwgbG8sIGJlZm9yZSB0aGUgdGVtcGxlIHdlcmUgYW4gaHVuZHJlZCBjdWJpdHMuCkFuZCBmcm9tIHVuZGVyIHRoZXNlIGNoYW1iZXJzIHdhcyB0aGUgZW50cnkgb24gdGhlIGVhc3Qgc2lkZSwgYXMgb25lIGdvZXRoIGludG8gdGhlbSBmcm9tIHRoZSB1dHRlciBjb3VydC4KVGhlIGNoYW1iZXJzIHdlcmUgaW4gdGhlIHRoaWNrbmVzcyBvZiB0aGUgd2FsbCBvZiB0aGUgY291cnQgdG93YXJkIHRoZSBlYXN0LCBvdmVyIGFnYWluc3QgdGhlIHNlcGFyYXRlIHBsYWNlLCBhbmQgb3ZlciBhZ2FpbnN0IHRoZSBidWlsZGluZy4KQW5kIHRoZSB3YXkgYmVmb3JlIHRoZW0gd2FzIGxpa2UgdGhlIGFwcGVhcmFuY2Ugb2YgdGhlIGNoYW1iZXJzIHdoaWNoIHdlcmUgdG93YXJkIHRoZSBub3J0aCwgYXMgbG9uZyBhcyB0aGV5LCBhbmQgYXMgYnJvYWQgYXMgdGhleTogYW5kIGFsbCB0aGVpciBnb2luZ3Mgb3V0IHdlcmUgYm90aCBhY2NvcmRpbmcgdG8gdGhlaXIgZmFzaGlvbnMsIGFuZCBhY2NvcmRpbmcgdG8gdGhlaXIgZG9vcnMuCkFuZCBhY2NvcmRpbmcgdG8gdGhlIGRvb3JzIG9mIHRoZSBjaGFtYmVycyB0aGF0IHdlcmUgdG93YXJkIHRoZSBzb3V0aCB3YXMgYSBkb29yIGluIHRoZSBoZWFkIG9mIHRoZSB3YXksIGV2ZW4gdGhlIHdheSBkaXJlY3RseSBiZWZvcmUgdGhlIHdhbGwgdG93YXJkIHRoZSBlYXN0LCBhcyBvbmUgZW50ZXJldGggaW50byB0aGVtLgpUaGVuIHNhaWQgaGUgdW50byBtZSwgVGhlIG5vcnRoIGNoYW1iZXJzIGFuZCB0aGUgc291dGggY2hhbWJlcnMsIHdoaWNoIGFyZSBiZWZvcmUgdGhlIHNlcGFyYXRlIHBsYWNlLCB0aGV5IGJlIGhvbHkgY2hhbWJlcnMsIHdoZXJlIHRoZSBwcmllc3RzIHRoYXQgYXBwcm9hY2ggdW50byB0aGUgTE9SRCBzaGFsbCBlYXQgdGhlIG1vc3QgaG9seSB0aGluZ3M6IHRoZXJlIHNoYWxsIHRoZXkgbGF5IHRoZSBtb3N0IGhvbHkgdGhpbmdzLCBhbmQgdGhlIG1lYXQgb2ZmZXJpbmcsIGFuZCB0aGUgc2luIG9mZmVyaW5nLCBhbmQgdGhlIHRyZXNwYXNzIG9mZmVyaW5nOyBmb3IgdGhlIHBsYWNlIGlzIGhvbHkuCldoZW4gdGhlIHByaWVzdHMgZW50ZXIgdGhlcmVpbiwgdGhlbiBzaGFsbCB0aGV5IG5vdCBnbyBvdXQgb2YgdGhlIGhvbHkgcGxhY2UgaW50byB0aGUgdXR0ZXIgY291cnQsIGJ1dCB0aGVyZSB0aGV5IHNoYWxsIGxheSB0aGVpciBnYXJtZW50cyB3aGVyZWluIHRoZXkgbWluaXN0ZXI7IGZvciB0aGV5IGFyZSBob2x5OyBhbmQgc2hhbGwgcHV0IG9uIG90aGVyIGdhcm1lbnRzLCBhbmQgc2hhbGwgYXBwcm9hY2ggdG8gdGhvc2UgdGhpbmdzIHdoaWNoIGFyZSBmb3IgdGhlIHBlb3BsZS4KTm93IHdoZW4gaGUgaGFkIG1hZGUgYW4gZW5kIG9mIG1lYXN1cmluZyB0aGUgaW5uZXIgaG91c2UsIGhlIGJyb3VnaHQgbWUgZm9ydGggdG93YXJkIHRoZSBnYXRlIHdob3NlIHByb3NwZWN0IGlzIHRvd2FyZCB0aGUgZWFzdCwgYW5kIG1lYXN1cmVkIGl0IHJvdW5kIGFib3V0LgpIZSBtZWFzdXJlZCB0aGUgZWFzdCBzaWRlIHdpdGggdGhlIG1lYXN1cmluZyByZWVkLCBmaXZlIGh1bmRyZWQgcmVlZHMsIHdpdGggdGhlIG1lYXN1cmluZyByZWVkIHJvdW5kIGFib3V0LgpIZSBtZWFzdXJlZCB0aGUgbm9ydGggc2lkZSwgZml2ZSBodW5kcmVkIHJlZWRzLCB3aXRoIHRoZSBtZWFzdXJpbmcgcmVlZCByb3VuZCBhYm91dC4KSGUgbWVhc3VyZWQgdGhlIHNvdXRoIHNpZGUsIGZpdmUgaHVuZHJlZCByZWVkcywgd2l0aCB0aGUgbWVhc3VyaW5nIHJlZWQuCkhlIHR1cm5lZCBhYm91dCB0byB0aGUgd2VzdCBzaWRlLCBhbmQgbWVhc3VyZWQgZml2ZSBodW5kcmVkIHJlZWRzIHdpdGggdGhlIG1lYXN1cmluZyByZWVkLgpIZSBtZWFzdXJlZCBpdCBieSB0aGUgZm91ciBzaWRlczogaXQgaGFkIGEgd2FsbCByb3VuZCBhYm91dCwgZml2ZSBodW5kcmVkIHJlZWRzIGxvbmcsIGFuZCBmaXZlIGh1bmRyZWQgYnJvYWQsIHRvIG1ha2UgYSBzZXBhcmF0aW9uIGJldHdlZW4gdGhlIHNhbmN0dWFyeSBhbmQgdGhlIHByb2ZhbmUgcGxhY2UuCkFmdGVyd2FyZCBoZSBicm91Z2h0IG1lIHRvIHRoZSBnYXRlLCBldmVuIHRoZSBnYXRlIHRoYXQgbG9va2V0aCB0b3dhcmQgdGhlIGVhc3Q6CkFuZCwgYmVob2xkLCB0aGUgZ2xvcnkgb2YgdGhlIEdvZCBvZiBJc3JhZWwgY2FtZSBmcm9tIHRoZSB3YXkgb2YgdGhlIGVhc3Q6IGFuZCBoaXMgdm9pY2Ugd2FzIGxpa2UgYSBub2lzZSBvZiBtYW55IHdhdGVyczogYW5kIHRoZSBlYXJ0aCBzaGluZWQgd2l0aCBoaXMgZ2xvcnkuCkFuZCBpdCB3YXMgYWNjb3JkaW5nIHRvIHRoZSBhcHBlYXJhbmNlIG9mIHRoZSB2aXNpb24gd2hpY2ggSSBzYXcsIGV2ZW4gYWNjb3JkaW5nIHRvIHRoZSB2aXNpb24gdGhhdCBJIHNhdyB3aGVuIEkgY2FtZSB0byBkZXN0cm95IHRoZSBjaXR5OiBhbmQgdGhlIHZpc2lvbnMgd2VyZSBsaWtlIHRoZSB2aXNpb24gdGhhdCBJIHNhdyBieSB0aGUgcml2ZXIgQ2hlYmFyOyBhbmQgSSBmZWxsIHVwb24gbXkgZmFjZS4KQW5kIHRoZSBnbG9yeSBvZiB0aGUgTE9SRCBjYW1lIGludG8gdGhlIGhvdXNlIGJ5IHRoZSB3YXkgb2YgdGhlIGdhdGUgd2hvc2UgcHJvc3BlY3QgaXMgdG93YXJkIHRoZSBlYXN0LgpTbyB0aGUgc3Bpcml0IHRvb2sgbWUgdXAsIGFuZCBicm91Z2h0IG1lIGludG8gdGhlIGlubmVyIGNvdXJ0OyBhbmQsIGJlaG9sZCwgdGhlIGdsb3J5IG9mIHRoZSBMT1JEIGZpbGxlZCB0aGUgaG91c2UuCkFuZCBJIGhlYXJkIGhpbSBzcGVha2luZyB1bnRvIG1lIG91dCBvZiB0aGUgaG91c2U7IGFuZCB0aGUgbWFuIHN0b29kIGJ5IG1lLgpBbmQgaGUgc2FpZCB1bnRvIG1lLCBTb24gb2YgbWFuLCB0aGUgcGxhY2Ugb2YgbXkgdGhyb25lLCBhbmQgdGhlIHBsYWNlIG9mIHRoZSBzb2xlcyBvZiBteSBmZWV0LCB3aGVyZSBJIHdpbGwgZHdlbGwgaW4gdGhlIG1pZHN0IG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgZm9yIGV2ZXIsIGFuZCBteSBob2x5IG5hbWUsIHNoYWxsIHRoZSBob3VzZSBvZiBJc3JhZWwgbm8gbW9yZSBkZWZpbGUsIG5laXRoZXIgdGhleSwgbm9yIHRoZWlyIGtpbmdzLCBieSB0aGVpciB3aG9yZWRvbSwgbm9yIGJ5IHRoZSBjYXJjYXNlcyBvZiB0aGVpciBraW5ncyBpbiB0aGVpciBoaWdoIHBsYWNlcy4KSW4gdGhlaXIgc2V0dGluZyBvZiB0aGVpciB0aHJlc2hvbGQgYnkgbXkgdGhyZXNob2xkcywgYW5kIHRoZWlyIHBvc3QgYnkgbXkgcG9zdHMsIGFuZCB0aGUgd2FsbCBiZXR3ZWVuIG1lIGFuZCB0aGVtLCB0aGV5IGhhdmUgZXZlbiBkZWZpbGVkIG15IGhvbHkgbmFtZSBieSB0aGVpciBhYm9taW5hdGlvbnMgdGhhdCB0aGV5IGhhdmUgY29tbWl0dGVkOiB3aGVyZWZvcmUgSSBoYXZlIGNvbnN1bWVkIHRoZW0gaW4gbWluZSBhbmdlci4KTm93IGxldCB0aGVtIHB1dCBhd2F5IHRoZWlyIHdob3JlZG9tLCBhbmQgdGhlIGNhcmNhc2VzIG9mIHRoZWlyIGtpbmdzLCBmYXIgZnJvbSBtZSwgYW5kIEkgd2lsbCBkd2VsbCBpbiB0aGUgbWlkc3Qgb2YgdGhlbSBmb3IgZXZlci4KVGhvdSBzb24gb2YgbWFuLCBzaGV3IHRoZSBob3VzZSB0byB0aGUgaG91c2Ugb2YgSXNyYWVsLCB0aGF0IHRoZXkgbWF5IGJlIGFzaGFtZWQgb2YgdGhlaXIgaW5pcXVpdGllczogYW5kIGxldCB0aGVtIG1lYXN1cmUgdGhlIHBhdHRlcm4uCkFuZCBpZiB0aGV5IGJlIGFzaGFtZWQgb2YgYWxsIHRoYXQgdGhleSBoYXZlIGRvbmUsIHNoZXcgdGhlbSB0aGUgZm9ybSBvZiB0aGUgaG91c2UsIGFuZCB0aGUgZmFzaGlvbiB0aGVyZW9mLCBhbmQgdGhlIGdvaW5ncyBvdXQgdGhlcmVvZiwgYW5kIHRoZSBjb21pbmdzIGluIHRoZXJlb2YsIGFuZCBhbGwgdGhlIGZvcm1zIHRoZXJlb2YsIGFuZCBhbGwgdGhlIG9yZGluYW5jZXMgdGhlcmVvZiwgYW5kIGFsbCB0aGUgZm9ybXMgdGhlcmVvZiwgYW5kIGFsbCB0aGUgbGF3cyB0aGVyZW9mOiBhbmQgd3JpdGUgaXQgaW4gdGhlaXIgc2lnaHQsIHRoYXQgdGhleSBtYXkga2VlcCB0aGUgd2hvbGUgZm9ybSB0aGVyZW9mLCBhbmQgYWxsIHRoZSBvcmRpbmFuY2VzIHRoZXJlb2YsIGFuZCBkbyB0aGVtLgpUaGlzIGlzIHRoZSBsYXcgb2YgdGhlIGhvdXNlOyBVcG9uIHRoZSB0b3Agb2YgdGhlIG1vdW50YWluIHRoZSB3aG9sZSBsaW1pdCB0aGVyZW9mIHJvdW5kIGFib3V0IHNoYWxsIGJlIG1vc3QgaG9seS4gQmVob2xkLCB0aGlzIGlzIHRoZSBsYXcgb2YgdGhlIGhvdXNlLgpBbmQgdGhlc2UgYXJlIHRoZSBtZWFzdXJlcyBvZiB0aGUgYWx0YXIgYWZ0ZXIgdGhlIGN1Yml0czogVGhlIGN1Yml0IGlzIGEgY3ViaXQgYW5kIGFuIGhhbmQgYnJlYWR0aDsgZXZlbiB0aGUgYm90dG9tIHNoYWxsIGJlIGEgY3ViaXQsIGFuZCB0aGUgYnJlYWR0aCBhIGN1Yml0LCBhbmQgdGhlIGJvcmRlciB0aGVyZW9mIGJ5IHRoZSBlZGdlIHRoZXJlb2Ygcm91bmQgYWJvdXQgc2hhbGwgYmUgYSBzcGFuOiBhbmQgdGhpcyBzaGFsbCBiZSB0aGUgaGlnaGVyIHBsYWNlIG9mIHRoZSBhbHRhci4KQW5kIGZyb20gdGhlIGJvdHRvbSB1cG9uIHRoZSBncm91bmQgZXZlbiB0byB0aGUgbG93ZXIgc2V0dGxlIHNoYWxsIGJlIHR3byBjdWJpdHMsIGFuZCB0aGUgYnJlYWR0aCBvbmUgY3ViaXQ7IGFuZCBmcm9tIHRoZSBsZXNzZXIgc2V0dGxlIGV2ZW4gdG8gdGhlIGdyZWF0ZXIgc2V0dGxlIHNoYWxsIGJlIGZvdXIgY3ViaXRzLCBhbmQgdGhlIGJyZWFkdGggb25lIGN1Yml0LgpTbyB0aGUgYWx0YXIgc2hhbGwgYmUgZm91ciBjdWJpdHM7IGFuZCBmcm9tIHRoZSBhbHRhciBhbmQgdXB3YXJkIHNoYWxsIGJlIGZvdXIgaG9ybnMuCkFuZCB0aGUgYWx0YXIgc2hhbGwgYmUgdHdlbHZlIGN1Yml0cyBsb25nLCB0d2VsdmUgYnJvYWQsIHNxdWFyZSBpbiB0aGUgZm91ciBzcXVhcmVzIHRoZXJlb2YuCkFuZCB0aGUgc2V0dGxlIHNoYWxsIGJlIGZvdXJ0ZWVuIGN1Yml0cyBsb25nIGFuZCBmb3VydGVlbiBicm9hZCBpbiB0aGUgZm91ciBzcXVhcmVzIHRoZXJlb2Y7IGFuZCB0aGUgYm9yZGVyIGFib3V0IGl0IHNoYWxsIGJlIGhhbGYgYSBjdWJpdDsgYW5kIHRoZSBib3R0b20gdGhlcmVvZiBzaGFsbCBiZSBhIGN1Yml0IGFib3V0OyBhbmQgaGlzIHN0YWlycyBzaGFsbCBsb29rIHRvd2FyZCB0aGUgZWFzdC4KQW5kIGhlIHNhaWQgdW50byBtZSwgU29uIG9mIG1hbiwgdGh1cyBzYWl0aCB0aGUgTG9yZCBHT0Q7IFRoZXNlIGFyZSB0aGUgb3JkaW5hbmNlcyBvZiB0aGUgYWx0YXIgaW4gdGhlIGRheSB3aGVuIHRoZXkgc2hhbGwgbWFrZSBpdCwgdG8gb2ZmZXIgYnVybnQgb2ZmZXJpbmdzIHRoZXJlb24sIGFuZCB0byBzcHJpbmtsZSBibG9vZCB0aGVyZW9uLgpBbmQgdGhvdSBzaGFsdCBnaXZlIHRvIHRoZSBwcmllc3RzIHRoZSBMZXZpdGVzIHRoYXQgYmUgb2YgdGhlIHNlZWQgb2YgWmFkb2ssIHdoaWNoIGFwcHJvYWNoIHVudG8gbWUsIHRvIG1pbmlzdGVyIHVudG8gbWUsIHNhaXRoIHRoZSBMb3JkIEdPRCwgYSB5b3VuZyBidWxsb2NrIGZvciBhIHNpbiBvZmZlcmluZy4KQW5kIHRob3Ugc2hhbHQgdGFrZSBvZiB0aGUgYmxvb2QgdGhlcmVvZiwgYW5kIHB1dCBpdCBvbiB0aGUgZm91ciBob3JucyBvZiBpdCwgYW5kIG9uIHRoZSBmb3VyIGNvcm5lcnMgb2YgdGhlIHNldHRsZSwgYW5kIHVwb24gdGhlIGJvcmRlciByb3VuZCBhYm91dDogdGh1cyBzaGFsdCB0aG91IGNsZWFuc2UgYW5kIHB1cmdlIGl0LgpUaG91IHNoYWx0IHRha2UgdGhlIGJ1bGxvY2sgYWxzbyBvZiB0aGUgc2luIG9mZmVyaW5nLCBhbmQgaGUgc2hhbGwgYnVybiBpdCBpbiB0aGUgYXBwb2ludGVkIHBsYWNlIG9mIHRoZSBob3VzZSwgd2l0aG91dCB0aGUgc2FuY3R1YXJ5LgpBbmQgb24gdGhlIHNlY29uZCBkYXkgdGhvdSBzaGFsdCBvZmZlciBhIGtpZCBvZiB0aGUgZ29hdHMgd2l0aG91dCBibGVtaXNoIGZvciBhIHNpbiBvZmZlcmluZzsgYW5kIHRoZXkgc2hhbGwgY2xlYW5zZSB0aGUgYWx0YXIsIGFzIHRoZXkgZGlkIGNsZWFuc2UgaXQgd2l0aCB0aGUgYnVsbG9jay4KV2hlbiB0aG91IGhhc3QgbWFkZSBhbiBlbmQgb2YgY2xlYW5zaW5nIGl0LCB0aG91IHNoYWx0IG9mZmVyIGEgeW91bmcgYnVsbG9jayB3aXRob3V0IGJsZW1pc2gsIGFuZCBhIHJhbSBvdXQgb2YgdGhlIGZsb2NrIHdpdGhvdXQgYmxlbWlzaC4KQW5kIHRob3Ugc2hhbHQgb2ZmZXIgdGhlbSBiZWZvcmUgdGhlIExPUkQsIGFuZCB0aGUgcHJpZXN0cyBzaGFsbCBjYXN0IHNhbHQgdXBvbiB0aGVtLCBhbmQgdGhleSBzaGFsbCBvZmZlciB0aGVtIHVwIGZvciBhIGJ1cm50IG9mZmVyaW5nIHVudG8gdGhlIExPUkQuClNldmVuIGRheXMgc2hhbHQgdGhvdSBwcmVwYXJlIGV2ZXJ5IGRheSBhIGdvYXQgZm9yIGEgc2luIG9mZmVyaW5nOiB0aGV5IHNoYWxsIGFsc28gcHJlcGFyZSBhIHlvdW5nIGJ1bGxvY2ssIGFuZCBhIHJhbSBvdXQgb2YgdGhlIGZsb2NrLCB3aXRob3V0IGJsZW1pc2guClNldmVuIGRheXMgc2hhbGwgdGhleSBwdXJnZSB0aGUgYWx0YXIgYW5kIHB1cmlmeSBpdDsgYW5kIHRoZXkgc2hhbGwgY29uc2VjcmF0ZSB0aGVtc2VsdmVzLgpBbmQgd2hlbiB0aGVzZSBkYXlzIGFyZSBleHBpcmVkLCBpdCBzaGFsbCBiZSwgdGhhdCB1cG9uIHRoZSBlaWdodGggZGF5LCBhbmQgc28gZm9yd2FyZCwgdGhlIHByaWVzdHMgc2hhbGwgbWFrZSB5b3VyIGJ1cm50IG9mZmVyaW5ncyB1cG9uIHRoZSBhbHRhciwgYW5kIHlvdXIgcGVhY2Ugb2ZmZXJpbmdzOyBhbmQgSSB3aWxsIGFjY2VwdCB5b3UsIHNhaXRoIHRoZSBMb3JkIEdPRC4KVGhlbiBoZSBicm91Z2h0IG1lIGJhY2sgdGhlIHdheSBvZiB0aGUgZ2F0ZSBvZiB0aGUgb3V0d2FyZCBzYW5jdHVhcnkgd2hpY2ggbG9va2V0aCB0b3dhcmQgdGhlIGVhc3Q7IGFuZCBpdCB3YXMgc2h1dC4KVGhlbiBzYWlkIHRoZSBMT1JEIHVudG8gbWU7IFRoaXMgZ2F0ZSBzaGFsbCBiZSBzaHV0LCBpdCBzaGFsbCBub3QgYmUgb3BlbmVkLCBhbmQgbm8gbWFuIHNoYWxsIGVudGVyIGluIGJ5IGl0OyBiZWNhdXNlIHRoZSBMT1JELCB0aGUgR29kIG9mIElzcmFlbCwgaGF0aCBlbnRlcmVkIGluIGJ5IGl0LCB0aGVyZWZvcmUgaXQgc2hhbGwgYmUgc2h1dC4KSXQgaXMgZm9yIHRoZSBwcmluY2U7IHRoZSBwcmluY2UsIGhlIHNoYWxsIHNpdCBpbiBpdCB0byBlYXQgYnJlYWQgYmVmb3JlIHRoZSBMT1JEOyBoZSBzaGFsbCBlbnRlciBieSB0aGUgd2F5IG9mIHRoZSBwb3JjaCBvZiB0aGF0IGdhdGUsIGFuZCBzaGFsbCBnbyBvdXQgYnkgdGhlIHdheSBvZiB0aGUgc2FtZS4KVGhlbiBicm91Z2h0IGhlIG1lIHRoZSB3YXkgb2YgdGhlIG5vcnRoIGdhdGUgYmVmb3JlIHRoZSBob3VzZTogYW5kIEkgbG9va2VkLCBhbmQsIGJlaG9sZCwgdGhlIGdsb3J5IG9mIHRoZSBMT1JEIGZpbGxlZCB0aGUgaG91c2Ugb2YgdGhlIExPUkQ6IGFuZCBJIGZlbGwgdXBvbiBteSBmYWNlLgpBbmQgdGhlIExPUkQgc2FpZCB1bnRvIG1lLCBTb24gb2YgbWFuLCBtYXJrIHdlbGwsIGFuZCBiZWhvbGQgd2l0aCB0aGluZSBleWVzLCBhbmQgaGVhciB3aXRoIHRoaW5lIGVhcnMgYWxsIHRoYXQgSSBzYXkgdW50byB0aGVlIGNvbmNlcm5pbmcgYWxsIHRoZSBvcmRpbmFuY2VzIG9mIHRoZSBob3VzZSBvZiB0aGUgTE9SRCwgYW5kIGFsbCB0aGUgbGF3cyB0aGVyZW9mOyBhbmQgbWFyayB3ZWxsIHRoZSBlbnRlcmluZyBpbiBvZiB0aGUgaG91c2UsIHdpdGggZXZlcnkgZ29pbmcgZm9ydGggb2YgdGhlIHNhbmN0dWFyeS4KQW5kIHRob3Ugc2hhbHQgc2F5IHRvIHRoZSByZWJlbGxpb3VzLCBldmVuIHRvIHRoZSBob3VzZSBvZiBJc3JhZWwsIFRodXMgc2FpdGggdGhlIExvcmQgR09EOyBPIHllIGhvdXNlIG9mIElzcmFlbCwgbGV0IGl0IHN1ZmZpY2UgeW91IG9mIGFsbCB5b3VyIGFib21pbmF0aW9ucywKSW4gdGhhdCB5ZSBoYXZlIGJyb3VnaHQgaW50byBteSBzYW5jdHVhcnkgc3RyYW5nZXJzLCB1bmNpcmN1bWNpc2VkIGluIGhlYXJ0LCBhbmQgdW5jaXJjdW1jaXNlZCBpbiBmbGVzaCwgdG8gYmUgaW4gbXkgc2FuY3R1YXJ5LCB0byBwb2xsdXRlIGl0LCBldmVuIG15IGhvdXNlLCB3aGVuIHllIG9mZmVyIG15IGJyZWFkLCB0aGUgZmF0IGFuZCB0aGUgYmxvb2QsIGFuZCB0aGV5IGhhdmUgYnJva2VuIG15IGNvdmVuYW50IGJlY2F1c2Ugb2YgYWxsIHlvdXIgYWJvbWluYXRpb25zLgpBbmQgeWUgaGF2ZSBub3Qga2VwdCB0aGUgY2hhcmdlIG9mIG1pbmUgaG9seSB0aGluZ3M6IGJ1dCB5ZSBoYXZlIHNldCBrZWVwZXJzIG9mIG15IGNoYXJnZSBpbiBteSBzYW5jdHVhcnkgZm9yIHlvdXJzZWx2ZXMuClRodXMgc2FpdGggdGhlIExvcmQgR09EOyBObyBzdHJhbmdlciwgdW5jaXJjdW1jaXNlZCBpbiBoZWFydCwgbm9yIHVuY2lyY3VtY2lzZWQgaW4gZmxlc2gsIHNoYWxsIGVudGVyIGludG8gbXkgc2FuY3R1YXJ5LCBvZiBhbnkgc3RyYW5nZXIgdGhhdCBpcyBhbW9uZyB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLgpBbmQgdGhlIExldml0ZXMgdGhhdCBhcmUgZ29uZSBhd2F5IGZhciBmcm9tIG1lLCB3aGVuIElzcmFlbCB3ZW50IGFzdHJheSwgd2hpY2ggd2VudCBhc3RyYXkgYXdheSBmcm9tIG1lIGFmdGVyIHRoZWlyIGlkb2xzOyB0aGV5IHNoYWxsIGV2ZW4gYmVhciB0aGVpciBpbmlxdWl0eS4KWWV0IHRoZXkgc2hhbGwgYmUgbWluaXN0ZXJzIGluIG15IHNhbmN0dWFyeSwgaGF2aW5nIGNoYXJnZSBhdCB0aGUgZ2F0ZXMgb2YgdGhlIGhvdXNlLCBhbmQgbWluaXN0ZXJpbmcgdG8gdGhlIGhvdXNlOiB0aGV5IHNoYWxsIHNsYXkgdGhlIGJ1cm50IG9mZmVyaW5nIGFuZCB0aGUgc2FjcmlmaWNlIGZvciB0aGUgcGVvcGxlLCBhbmQgdGhleSBzaGFsbCBzdGFuZCBiZWZvcmUgdGhlbSB0byBtaW5pc3RlciB1bnRvIHRoZW0uCkJlY2F1c2UgdGhleSBtaW5pc3RlcmVkIHVudG8gdGhlbSBiZWZvcmUgdGhlaXIgaWRvbHMsIGFuZCBjYXVzZWQgdGhlIGhvdXNlIG9mIElzcmFlbCB0byBmYWxsIGludG8gaW5pcXVpdHk7IHRoZXJlZm9yZSBoYXZlIEkgbGlmdGVkIHVwIG1pbmUgaGFuZCBhZ2FpbnN0IHRoZW0sIHNhaXRoIHRoZSBMb3JkIEdPRCwgYW5kIHRoZXkgc2hhbGwgYmVhciB0aGVpciBpbmlxdWl0eS4KQW5kIHRoZXkgc2hhbGwgbm90IGNvbWUgbmVhciB1bnRvIG1lLCB0byBkbyB0aGUgb2ZmaWNlIG9mIGEgcHJpZXN0IHVudG8gbWUsIG5vciB0byBjb21lIG5lYXIgdG8gYW55IG9mIG15IGhvbHkgdGhpbmdzLCBpbiB0aGUgbW9zdCBob2x5IHBsYWNlOiBidXQgdGhleSBzaGFsbCBiZWFyIHRoZWlyIHNoYW1lLCBhbmQgdGhlaXIgYWJvbWluYXRpb25zIHdoaWNoIHRoZXkgaGF2ZSBjb21taXR0ZWQuCkJ1dCBJIHdpbGwgbWFrZSB0aGVtIGtlZXBlcnMgb2YgdGhlIGNoYXJnZSBvZiB0aGUgaG91c2UsIGZvciBhbGwgdGhlIHNlcnZpY2UgdGhlcmVvZiwgYW5kIGZvciBhbGwgdGhhdCBzaGFsbCBiZSBkb25lIHRoZXJlaW4uCkJ1dCB0aGUgcHJpZXN0cyB0aGUgTGV2aXRlcywgdGhlIHNvbnMgb2YgWmFkb2ssIHRoYXQga2VwdCB0aGUgY2hhcmdlIG9mIG15IHNhbmN0dWFyeSB3aGVuIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgd2VudCBhc3RyYXkgZnJvbSBtZSwgdGhleSBzaGFsbCBjb21lIG5lYXIgdG8gbWUgdG8gbWluaXN0ZXIgdW50byBtZSwgYW5kIHRoZXkgc2hhbGwgc3RhbmQgYmVmb3JlIG1lIHRvIG9mZmVyIHVudG8gbWUgdGhlIGZhdCBhbmQgdGhlIGJsb29kLCBzYWl0aCB0aGUgTG9yZCBHT0Q6ClRoZXkgc2hhbGwgZW50ZXIgaW50byBteSBzYW5jdHVhcnksIGFuZCB0aGV5IHNoYWxsIGNvbWUgbmVhciB0byBteSB0YWJsZSwgdG8gbWluaXN0ZXIgdW50byBtZSwgYW5kIHRoZXkgc2hhbGwga2VlcCBteSBjaGFyZ2UuCkFuZCBpdCBzaGFsbCBjb21lIHRvIHBhc3MsIHRoYXQgd2hlbiB0aGV5IGVudGVyIGluIGF0IHRoZSBnYXRlcyBvZiB0aGUgaW5uZXIgY291cnQsIHRoZXkgc2hhbGwgYmUgY2xvdGhlZCB3aXRoIGxpbmVuIGdhcm1lbnRzOyBhbmQgbm8gd29vbCBzaGFsbCBjb21lIHVwb24gdGhlbSwgd2hpbGVzIHRoZXkgbWluaXN0ZXIgaW4gdGhlIGdhdGVzIG9mIHRoZSBpbm5lciBjb3VydCwgYW5kIHdpdGhpbi4KVGhleSBzaGFsbCBoYXZlIGxpbmVuIGJvbm5ldHMgdXBvbiB0aGVpciBoZWFkcywgYW5kIHNoYWxsIGhhdmUgbGluZW4gYnJlZWNoZXMgdXBvbiB0aGVpciBsb2luczsgdGhleSBzaGFsbCBub3QgZ2lyZCB0aGVtc2VsdmVzIHdpdGggYW55IHRoaW5nIHRoYXQgY2F1c2V0aCBzd2VhdC4KQW5kIHdoZW4gdGhleSBnbyBmb3J0aCBpbnRvIHRoZSB1dHRlciBjb3VydCwgZXZlbiBpbnRvIHRoZSB1dHRlciBjb3VydCB0byB0aGUgcGVvcGxlLCB0aGV5IHNoYWxsIHB1dCBvZmYgdGhlaXIgZ2FybWVudHMgd2hlcmVpbiB0aGV5IG1pbmlzdGVyZWQsIGFuZCBsYXkgdGhlbSBpbiB0aGUgaG9seSBjaGFtYmVycywgYW5kIHRoZXkgc2hhbGwgcHV0IG9uIG90aGVyIGdhcm1lbnRzOyBhbmQgdGhleSBzaGFsbCBub3Qgc2FuY3RpZnkgdGhlIHBlb3BsZSB3aXRoIHRoZWlyIGdhcm1lbnRzLgpOZWl0aGVyIHNoYWxsIHRoZXkgc2hhdmUgdGhlaXIgaGVhZHMsIG5vciBzdWZmZXIgdGhlaXIgbG9ja3MgdG8gZ3JvdyBsb25nOyB0aGV5IHNoYWxsIG9ubHkgcG9sbCB0aGVpciBoZWFkcy4KTmVpdGhlciBzaGFsbCBhbnkgcHJpZXN0IGRyaW5rIHdpbmUsIHdoZW4gdGhleSBlbnRlciBpbnRvIHRoZSBpbm5lciBjb3VydC4KTmVpdGhlciBzaGFsbCB0aGV5IHRha2UgZm9yIHRoZWlyIHdpdmVzIGEgd2lkb3csIG5vciBoZXIgdGhhdCBpcyBwdXQgYXdheTogYnV0IHRoZXkgc2hhbGwgdGFrZSBtYWlkZW5zIG9mIHRoZSBzZWVkIG9mIHRoZSBob3VzZSBvZiBJc3JhZWwsIG9yIGEgd2lkb3cgdGhhdCBoYWQgYSBwcmllc3QgYmVmb3JlLgpBbmQgdGhleSBzaGFsbCB0ZWFjaCBteSBwZW9wbGUgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgaG9seSBhbmQgcHJvZmFuZSwgYW5kIGNhdXNlIHRoZW0gdG8gZGlzY2VybiBiZXR3ZWVuIHRoZSB1bmNsZWFuIGFuZCB0aGUgY2xlYW4uCkFuZCBpbiBjb250cm92ZXJzeSB0aGV5IHNoYWxsIHN0YW5kIGluIGp1ZGdtZW50OyBhbmQgdGhleSBzaGFsbCBqdWRnZSBpdCBhY2NvcmRpbmcgdG8gbXkganVkZ21lbnRzOiBhbmQgdGhleSBzaGFsbCBrZWVwIG15IGxhd3MgYW5kIG15IHN0YXR1dGVzIGluIGFsbCBtaW5lIGFzc2VtYmxpZXM7IGFuZCB0aGV5IHNoYWxsIGhhbGxvdyBteSBzYWJiYXRocy4KQW5kIHRoZXkgc2hhbGwgY29tZSBhdCBubyBkZWFkIHBlcnNvbiB0byBkZWZpbGUgdGhlbXNlbHZlczogYnV0IGZvciBmYXRoZXIsIG9yIGZvciBtb3RoZXIsIG9yIGZvciBzb24sIG9yIGZvciBkYXVnaHRlciwgZm9yIGJyb3RoZXIsIG9yIGZvciBzaXN0ZXIgdGhhdCBoYXRoIGhhZCBubyBodXNiYW5kLCB0aGV5IG1heSBkZWZpbGUgdGhlbXNlbHZlcy4KQW5kIGFmdGVyIGhlIGlzIGNsZWFuc2VkLCB0aGV5IHNoYWxsIHJlY2tvbiB1bnRvIGhpbSBzZXZlbiBkYXlzLgpBbmQgaW4gdGhlIGRheSB0aGF0IGhlIGdvZXRoIGludG8gdGhlIHNhbmN0dWFyeSwgdW50byB0aGUgaW5uZXIgY291cnQsIHRvIG1pbmlzdGVyIGluIHRoZSBzYW5jdHVhcnksIGhlIHNoYWxsIG9mZmVyIGhpcyBzaW4gb2ZmZXJpbmcsIHNhaXRoIHRoZSBMb3JkIEdPRC4KQW5kIGl0IHNoYWxsIGJlIHVudG8gdGhlbSBmb3IgYW4gaW5oZXJpdGFuY2U6IEkgYW0gdGhlaXIgaW5oZXJpdGFuY2U6IGFuZCB5ZSBzaGFsbCBnaXZlIHRoZW0gbm8gcG9zc2Vzc2lvbiBpbiBJc3JhZWw6IEkgYW0gdGhlaXIgcG9zc2Vzc2lvbi4KVGhleSBzaGFsbCBlYXQgdGhlIG1lYXQgb2ZmZXJpbmcsIGFuZCB0aGUgc2luIG9mZmVyaW5nLCBhbmQgdGhlIHRyZXNwYXNzIG9mZmVyaW5nOiBhbmQgZXZlcnkgZGVkaWNhdGVkIHRoaW5nIGluIElzcmFlbCBzaGFsbCBiZSB0aGVpcnMuCkFuZCB0aGUgZmlyc3Qgb2YgYWxsIHRoZSBmaXJzdGZydWl0cyBvZiBhbGwgdGhpbmdzLCBhbmQgZXZlcnkgb2JsYXRpb24gb2YgYWxsLCBvZiBldmVyeSBzb3J0IG9mIHlvdXIgb2JsYXRpb25zLCBzaGFsbCBiZSB0aGUgcHJpZXN0J3M6IHllIHNoYWxsIGFsc28gZ2l2ZSB1bnRvIHRoZSBwcmllc3QgdGhlIGZpcnN0IG9mIHlvdXIgZG91Z2gsIHRoYXQgaGUgbWF5IGNhdXNlIHRoZSBibGVzc2luZyB0byByZXN0IGluIHRoaW5lIGhvdXNlLgpUaGUgcHJpZXN0cyBzaGFsbCBub3QgZWF0IG9mIGFueSB0aGluZyB0aGF0IGlzIGRlYWQgb2YgaXRzZWxmLCBvciB0b3JuLCB3aGV0aGVyIGl0IGJlIGZvd2wgb3IgYmVhc3QuCk1vcmVvdmVyLCB3aGVuIHllIHNoYWxsIGRpdmlkZSBieSBsb3QgdGhlIGxhbmQgZm9yIGluaGVyaXRhbmNlLCB5ZSBzaGFsbCBvZmZlciBhbiBvYmxhdGlvbiB1bnRvIHRoZSBMT1JELCBhbiBob2x5IHBvcnRpb24gb2YgdGhlIGxhbmQ6IHRoZSBsZW5ndGggc2hhbGwgYmUgdGhlIGxlbmd0aCBvZiBmaXZlIGFuZCB0d2VudHkgdGhvdXNhbmQgcmVlZHMsIGFuZCB0aGUgYnJlYWR0aCBzaGFsbCBiZSB0ZW4gdGhvdXNhbmQuIFRoaXMgc2hhbGwgYmUgaG9seSBpbiBhbGwgdGhlIGJvcmRlcnMgdGhlcmVvZiByb3VuZCBhYm91dC4KT2YgdGhpcyB0aGVyZSBzaGFsbCBiZSBmb3IgdGhlIHNhbmN0dWFyeSBmaXZlIGh1bmRyZWQgaW4gbGVuZ3RoLCB3aXRoIGZpdmUgaHVuZHJlZCBpbiBicmVhZHRoLCBzcXVhcmUgcm91bmQgYWJvdXQ7IGFuZCBmaWZ0eSBjdWJpdHMgcm91bmQgYWJvdXQgZm9yIHRoZSBzdWJ1cmJzIHRoZXJlb2YuCkFuZCBvZiB0aGlzIG1lYXN1cmUgc2hhbHQgdGhvdSBtZWFzdXJlIHRoZSBsZW5ndGggb2YgZml2ZSBhbmQgdHdlbnR5IHRob3VzYW5kLCBhbmQgdGhlIGJyZWFkdGggb2YgdGVuIHRob3VzYW5kOiBhbmQgaW4gaXQgc2hhbGwgYmUgdGhlIHNhbmN0dWFyeSBhbmQgdGhlIG1vc3QgaG9seSBwbGFjZS4KVGhlIGhvbHkgcG9ydGlvbiBvZiB0aGUgbGFuZCBzaGFsbCBiZSBmb3IgdGhlIHByaWVzdHMgdGhlIG1pbmlzdGVycyBvZiB0aGUgc2FuY3R1YXJ5LCB3aGljaCBzaGFsbCBjb21lIG5lYXIgdG8gbWluaXN0ZXIgdW50byB0aGUgTE9SRDogYW5kIGl0IHNoYWxsIGJlIGEgcGxhY2UgZm9yIHRoZWlyIGhvdXNlcywgYW5kIGFuIGhvbHkgcGxhY2UgZm9yIHRoZSBzYW5jdHVhcnkuCkFuZCB0aGUgZml2ZSBhbmQgdHdlbnR5IHRob3VzYW5kIG9mIGxlbmd0aCwgYW5kIHRoZSB0ZW4gdGhvdXNhbmQgb2YgYnJlYWR0aCBzaGFsbCBhbHNvIHRoZSBMZXZpdGVzLCB0aGUgbWluaXN0ZXJzIG9mIHRoZSBob3VzZSwgaGF2ZSBmb3IgdGhlbXNlbHZlcywgZm9yIGEgcG9zc2Vzc2lvbiBmb3IgdHdlbnR5IGNoYW1iZXJzLgpBbmQgeWUgc2hhbGwgYXBwb2ludCB0aGUgcG9zc2Vzc2lvbiBvZiB0aGUgY2l0eSBmaXZlIHRob3VzYW5kIGJyb2FkLCBhbmQgZml2ZSBhbmQgdHdlbnR5IHRob3VzYW5kIGxvbmcsIG92ZXIgYWdhaW5zdCB0aGUgb2JsYXRpb24gb2YgdGhlIGhvbHkgcG9ydGlvbjogaXQgc2hhbGwgYmUgZm9yIHRoZSB3aG9sZSBob3VzZSBvZiBJc3JhZWwuCkFuZCBhIHBvcnRpb24gc2hhbGwgYmUgZm9yIHRoZSBwcmluY2Ugb24gdGhlIG9uZSBzaWRlIGFuZCBvbiB0aGUgb3RoZXIgc2lkZSBvZiB0aGUgb2JsYXRpb24gb2YgdGhlIGhvbHkgcG9ydGlvbiwgYW5kIG9mIHRoZSBwb3NzZXNzaW9uIG9mIHRoZSBjaXR5LCBiZWZvcmUgdGhlIG9ibGF0aW9uIG9mIHRoZSBob2x5IHBvcnRpb24sIGFuZCBiZWZvcmUgdGhlIHBvc3Nlc3Npb24gb2YgdGhlIGNpdHksIGZyb20gdGhlIHdlc3Qgc2lkZSB3ZXN0d2FyZCwgYW5kIGZyb20gdGhlIGVhc3Qgc2lkZSBlYXN0d2FyZDogYW5kIHRoZSBsZW5ndGggc2hhbGwgYmUgb3ZlciBhZ2FpbnN0IG9uZSBvZiB0aGUgcG9ydGlvbnMsIGZyb20gdGhlIHdlc3QgYm9yZGVyIHVudG8gdGhlIGVhc3QgYm9yZGVyLgpJbiB0aGUgbGFuZCBzaGFsbCBiZSBoaXMgcG9zc2Vzc2lvbiBpbiBJc3JhZWw6IGFuZCBteSBwcmluY2VzIHNoYWxsIG5vIG1vcmUgb3BwcmVzcyBteSBwZW9wbGU7IGFuZCB0aGUgcmVzdCBvZiB0aGUgbGFuZCBzaGFsbCB0aGV5IGdpdmUgdG8gdGhlIGhvdXNlIG9mIElzcmFlbCBhY2NvcmRpbmcgdG8gdGhlaXIgdHJpYmVzLgpUaHVzIHNhaXRoIHRoZSBMb3JkIEdPRDsgTGV0IGl0IHN1ZmZpY2UgeW91LCBPIHByaW5jZXMgb2YgSXNyYWVsOiByZW1vdmUgdmlvbGVuY2UgYW5kIHNwb2lsLCBhbmQgZXhlY3V0ZSBqdWRnbWVudCBhbmQganVzdGljZSwgdGFrZSBhd2F5IHlvdXIgZXhhY3Rpb25zIGZyb20gbXkgcGVvcGxlLCBzYWl0aCB0aGUgTG9yZCBHT0QuClllIHNoYWxsIGhhdmUganVzdCBiYWxhbmNlcywgYW5kIGEganVzdCBlcGhhaCwgYW5kIGEganVzdCBiYXRoLgpUaGUgZXBoYWggYW5kIHRoZSBiYXRoIHNoYWxsIGJlIG9mIG9uZSBtZWFzdXJlLCB0aGF0IHRoZSBiYXRoIG1heSBjb250YWluIHRoZSB0ZW50aCBwYXJ0IG9mIGFuIGhvbWVyLCBhbmQgdGhlIGVwaGFoIHRoZSB0ZW50aCBwYXJ0IG9mIGFuIGhvbWVyOiB0aGUgbWVhc3VyZSB0aGVyZW9mIHNoYWxsIGJlIGFmdGVyIHRoZSBob21lci4KQW5kIHRoZSBzaGVrZWwgc2hhbGwgYmUgdHdlbnR5IGdlcmFoczogdHdlbnR5IHNoZWtlbHMsIGZpdmUgYW5kIHR3ZW50eSBzaGVrZWxzLCBmaWZ0ZWVuIHNoZWtlbHMsIHNoYWxsIGJlIHlvdXIgbWFuZWguClRoaXMgaXMgdGhlIG9ibGF0aW9uIHRoYXQgeWUgc2hhbGwgb2ZmZXI7IHRoZSBzaXh0aCBwYXJ0IG9mIGFuIGVwaGFoIG9mIGFuIGhvbWVyIG9mIHdoZWF0LCBhbmQgeWUgc2hhbGwgZ2l2ZSB0aGUgc2l4dGggcGFydCBvZiBhbiBlcGhhaCBvZiBhbiBob21lciBvZiBiYXJsZXk6CkNvbmNlcm5pbmcgdGhlIG9yZGluYW5jZSBvZiBvaWwsIHRoZSBiYXRoIG9mIG9pbCwgeWUgc2hhbGwgb2ZmZXIgdGhlIHRlbnRoIHBhcnQgb2YgYSBiYXRoIG91dCBvZiB0aGUgY29yLCB3aGljaCBpcyBhbiBob21lciBvZiB0ZW4gYmF0aHM7IGZvciB0ZW4gYmF0aHMgYXJlIGFuIGhvbWVyOgpBbmQgb25lIGxhbWIgb3V0IG9mIHRoZSBmbG9jaywgb3V0IG9mIHR3byBodW5kcmVkLCBvdXQgb2YgdGhlIGZhdCBwYXN0dXJlcyBvZiBJc3JhZWw7IGZvciBhIG1lYXQgb2ZmZXJpbmcsIGFuZCBmb3IgYSBidXJudCBvZmZlcmluZywgYW5kIGZvciBwZWFjZSBvZmZlcmluZ3MsIHRvIG1ha2UgcmVjb25jaWxpYXRpb24gZm9yIHRoZW0sIHNhaXRoIHRoZSBMb3JkIEdPRC4KQWxsIHRoZSBwZW9wbGUgb2YgdGhlIGxhbmQgc2hhbGwgZ2l2ZSB0aGlzIG9ibGF0aW9uIGZvciB0aGUgcHJpbmNlIGluIElzcmFlbC4KQW5kIGl0IHNoYWxsIGJlIHRoZSBwcmluY2UncyBwYXJ0IHRvIGdpdmUgYnVybnQgb2ZmZXJpbmdzLCBhbmQgbWVhdCBvZmZlcmluZ3MsIGFuZCBkcmluayBvZmZlcmluZ3MsIGluIHRoZSBmZWFzdHMsIGFuZCBpbiB0aGUgbmV3IG1vb25zLCBhbmQgaW4gdGhlIHNhYmJhdGhzLCBpbiBhbGwgc29sZW1uaXRpZXMgb2YgdGhlIGhvdXNlIG9mIElzcmFlbDogaGUgc2hhbGwgcHJlcGFyZSB0aGUgc2luIG9mZmVyaW5nLCBhbmQgdGhlIG1lYXQgb2ZmZXJpbmcsIGFuZCB0aGUgYnVybnQgb2ZmZXJpbmcsIGFuZCB0aGUgcGVhY2Ugb2ZmZXJpbmdzLCB0byBtYWtlIHJlY29uY2lsaWF0aW9uIGZvciB0aGUgaG91c2Ugb2YgSXNyYWVsLgpUaHVzIHNhaXRoIHRoZSBMb3JkIEdPRDsgSW4gdGhlIGZpcnN0IG1vbnRoLCBpbiB0aGUgZmlyc3QgZGF5IG9mIHRoZSBtb250aCwgdGhvdSBzaGFsdCB0YWtlIGEgeW91bmcgYnVsbG9jayB3aXRob3V0IGJsZW1pc2gsIGFuZCBjbGVhbnNlIHRoZSBzYW5jdHVhcnk6CkFuZCB0aGUgcHJpZXN0IHNoYWxsIHRha2Ugb2YgdGhlIGJsb29kIG9mIHRoZSBzaW4gb2ZmZXJpbmcsIGFuZCBwdXQgaXQgdXBvbiB0aGUgcG9zdHMgb2YgdGhlIGhvdXNlLCBhbmQgdXBvbiB0aGUgZm91ciBjb3JuZXJzIG9mIHRoZSBzZXR0bGUgb2YgdGhlIGFsdGFyLCBhbmQgdXBvbiB0aGUgcG9zdHMgb2YgdGhlIGdhdGUgb2YgdGhlIGlubmVyIGNvdXJ0LgpBbmQgc28gdGhvdSBzaGFsdCBkbyB0aGUgc2V2ZW50aCBkYXkgb2YgdGhlIG1vbnRoIGZvciBldmVyeSBvbmUgdGhhdCBlcnJldGgsIGFuZCBmb3IgaGltIHRoYXQgaXMgc2ltcGxlOiBzbyBzaGFsbCB5ZSByZWNvbmNpbGUgdGhlIGhvdXNlLgpJbiB0aGUgZmlyc3QgbW9udGgsIGluIHRoZSBmb3VydGVlbnRoIGRheSBvZiB0aGUgbW9udGgsIHllIHNoYWxsIGhhdmUgdGhlIHBhc3NvdmVyLCBhIGZlYXN0IG9mIHNldmVuIGRheXM7IHVubGVhdmVuZWQgYnJlYWQgc2hhbGwgYmUgZWF0ZW4uCkFuZCB1cG9uIHRoYXQgZGF5IHNoYWxsIHRoZSBwcmluY2UgcHJlcGFyZSBmb3IgaGltc2VsZiBhbmQgZm9yIGFsbCB0aGUgcGVvcGxlIG9mIHRoZSBsYW5kIGEgYnVsbG9jayBmb3IgYSBzaW4gb2ZmZXJpbmcuCkFuZCBzZXZlbiBkYXlzIG9mIHRoZSBmZWFzdCBoZSBzaGFsbCBwcmVwYXJlIGEgYnVybnQgb2ZmZXJpbmcgdG8gdGhlIExPUkQsIHNldmVuIGJ1bGxvY2tzIGFuZCBzZXZlbiByYW1zIHdpdGhvdXQgYmxlbWlzaCBkYWlseSB0aGUgc2V2ZW4gZGF5czsgYW5kIGEga2lkIG9mIHRoZSBnb2F0cyBkYWlseSBmb3IgYSBzaW4gb2ZmZXJpbmcuCkFuZCBoZSBzaGFsbCBwcmVwYXJlIGEgbWVhdCBvZmZlcmluZyBvZiBhbiBlcGhhaCBmb3IgYSBidWxsb2NrLCBhbmQgYW4gZXBoYWggZm9yIGEgcmFtLCBhbmQgYW4gaGluIG9mIG9pbCBmb3IgYW4gZXBoYWguCkluIHRoZSBzZXZlbnRoIG1vbnRoLCBpbiB0aGUgZmlmdGVlbnRoIGRheSBvZiB0aGUgbW9udGgsIHNoYWxsIGhlIGRvIHRoZSBsaWtlIGluIHRoZSBmZWFzdCBvZiB0aGUgc2V2ZW4gZGF5cywgYWNjb3JkaW5nIHRvIHRoZSBzaW4gb2ZmZXJpbmcsIGFjY29yZGluZyB0byB0aGUgYnVybnQgb2ZmZXJpbmcsIGFuZCBhY2NvcmRpbmcgdG8gdGhlIG1lYXQgb2ZmZXJpbmcsIGFuZCBhY2NvcmRpbmcgdG8gdGhlIG9pbC4KVGh1cyBzYWl0aCB0aGUgTG9yZCBHT0Q7IFRoZSBnYXRlIG9mIHRoZSBpbm5lciBjb3VydCB0aGF0IGxvb2tldGggdG93YXJkIHRoZSBlYXN0IHNoYWxsIGJlIHNodXQgdGhlIHNpeCB3b3JraW5nIGRheXM7IGJ1dCBvbiB0aGUgc2FiYmF0aCBpdCBzaGFsbCBiZSBvcGVuZWQsIGFuZCBpbiB0aGUgZGF5IG9mIHRoZSBuZXcgbW9vbiBpdCBzaGFsbCBiZSBvcGVuZWQuCkFuZCB0aGUgcHJpbmNlIHNoYWxsIGVudGVyIGJ5IHRoZSB3YXkgb2YgdGhlIHBvcmNoIG9mIHRoYXQgZ2F0ZSB3aXRob3V0LCBhbmQgc2hhbGwgc3RhbmQgYnkgdGhlIHBvc3Qgb2YgdGhlIGdhdGUsIGFuZCB0aGUgcHJpZXN0cyBzaGFsbCBwcmVwYXJlIGhpcyBidXJudCBvZmZlcmluZyBhbmQgaGlzIHBlYWNlIG9mZmVyaW5ncywgYW5kIGhlIHNoYWxsIHdvcnNoaXAgYXQgdGhlIHRocmVzaG9sZCBvZiB0aGUgZ2F0ZTogdGhlbiBoZSBzaGFsbCBnbyBmb3J0aDsgYnV0IHRoZSBnYXRlIHNoYWxsIG5vdCBiZSBzaHV0IHVudGlsIHRoZSBldmVuaW5nLgpMaWtld2lzZSB0aGUgcGVvcGxlIG9mIHRoZSBsYW5kIHNoYWxsIHdvcnNoaXAgYXQgdGhlIGRvb3Igb2YgdGhpcyBnYXRlIGJlZm9yZSB0aGUgTE9SRCBpbiB0aGUgc2FiYmF0aHMgYW5kIGluIHRoZSBuZXcgbW9vbnMuCkFuZCB0aGUgYnVybnQgb2ZmZXJpbmcgdGhhdCB0aGUgcHJpbmNlIHNoYWxsIG9mZmVyIHVudG8gdGhlIExPUkQgaW4gdGhlIHNhYmJhdGggZGF5IHNoYWxsIGJlIHNpeCBsYW1icyB3aXRob3V0IGJsZW1pc2gsIGFuZCBhIHJhbSB3aXRob3V0IGJsZW1pc2guCkFuZCB0aGUgbWVhdCBvZmZlcmluZyBzaGFsbCBiZSBhbiBlcGhhaCBmb3IgYSByYW0sIGFuZCB0aGUgbWVhdCBvZmZlcmluZyBmb3IgdGhlIGxhbWJzIGFzIGhlIHNoYWxsIGJlIGFibGUgdG8gZ2l2ZSwgYW5kIGFuIGhpbiBvZiBvaWwgdG8gYW4gZXBoYWguCkFuZCBpbiB0aGUgZGF5IG9mIHRoZSBuZXcgbW9vbiBpdCBzaGFsbCBiZSBhIHlvdW5nIGJ1bGxvY2sgd2l0aG91dCBibGVtaXNoLCBhbmQgc2l4IGxhbWJzLCBhbmQgYSByYW06IHRoZXkgc2hhbGwgYmUgd2l0aG91dCBibGVtaXNoLgpBbmQgaGUgc2hhbGwgcHJlcGFyZSBhIG1lYXQgb2ZmZXJpbmcsIGFuIGVwaGFoIGZvciBhIGJ1bGxvY2ssIGFuZCBhbiBlcGhhaCBmb3IgYSByYW0sIGFuZCBmb3IgdGhlIGxhbWJzIGFjY29yZGluZyBhcyBoaXMgaGFuZCBzaGFsbCBhdHRhaW4gdW50bywgYW5kIGFuIGhpbiBvZiBvaWwgdG8gYW4gZXBoYWguCkFuZCB3aGVuIHRoZSBwcmluY2Ugc2hhbGwgZW50ZXIsIGhlIHNoYWxsIGdvIGluIGJ5IHRoZSB3YXkgb2YgdGhlIHBvcmNoIG9mIHRoYXQgZ2F0ZSwgYW5kIGhlIHNoYWxsIGdvIGZvcnRoIGJ5IHRoZSB3YXkgdGhlcmVvZi4KQnV0IHdoZW4gdGhlIHBlb3BsZSBvZiB0aGUgbGFuZCBzaGFsbCBjb21lIGJlZm9yZSB0aGUgTE9SRCBpbiB0aGUgc29sZW1uIGZlYXN0cywgaGUgdGhhdCBlbnRlcmV0aCBpbiBieSB0aGUgd2F5IG9mIHRoZSBub3J0aCBnYXRlIHRvIHdvcnNoaXAgc2hhbGwgZ28gb3V0IGJ5IHRoZSB3YXkgb2YgdGhlIHNvdXRoIGdhdGU7IGFuZCBoZSB0aGF0IGVudGVyZXRoIGJ5IHRoZSB3YXkgb2YgdGhlIHNvdXRoIGdhdGUgc2hhbGwgZ28gZm9ydGggYnkgdGhlIHdheSBvZiB0aGUgbm9ydGggZ2F0ZTogaGUgc2hhbGwgbm90IHJldHVybiBieSB0aGUgd2F5IG9mIHRoZSBnYXRlIHdoZXJlYnkgaGUgY2FtZSBpbiwgYnV0IHNoYWxsIGdvIGZvcnRoIG92ZXIgYWdhaW5zdCBpdC4KQW5kIHRoZSBwcmluY2UgaW4gdGhlIG1pZHN0IG9mIHRoZW0sIHdoZW4gdGhleSBnbyBpbiwgc2hhbGwgZ28gaW47IGFuZCB3aGVuIHRoZXkgZ28gZm9ydGgsIHNoYWxsIGdvIGZvcnRoLgpBbmQgaW4gdGhlIGZlYXN0cyBhbmQgaW4gdGhlIHNvbGVtbml0aWVzIHRoZSBtZWF0IG9mZmVyaW5nIHNoYWxsIGJlIGFuIGVwaGFoIHRvIGEgYnVsbG9jaywgYW5kIGFuIGVwaGFoIHRvIGEgcmFtLCBhbmQgdG8gdGhlIGxhbWJzIGFzIGhlIGlzIGFibGUgdG8gZ2l2ZSwgYW5kIGFuIGhpbiBvZiBvaWwgdG8gYW4gZXBoYWguCk5vdyB3aGVuIHRoZSBwcmluY2Ugc2hhbGwgcHJlcGFyZSBhIHZvbHVudGFyeSBidXJudCBvZmZlcmluZyBvciBwZWFjZSBvZmZlcmluZ3Mgdm9sdW50YXJpbHkgdW50byB0aGUgTE9SRCwgb25lIHNoYWxsIHRoZW4gb3BlbiBoaW0gdGhlIGdhdGUgdGhhdCBsb29rZXRoIHRvd2FyZCB0aGUgZWFzdCwgYW5kIGhlIHNoYWxsIHByZXBhcmUgaGlzIGJ1cm50IG9mZmVyaW5nIGFuZCBoaXMgcGVhY2Ugb2ZmZXJpbmdzLCBhcyBoZSBkaWQgb24gdGhlIHNhYmJhdGggZGF5OiB0aGVuIGhlIHNoYWxsIGdvIGZvcnRoOyBhbmQgYWZ0ZXIgaGlzIGdvaW5nIGZvcnRoIG9uZSBzaGFsbCBzaHV0IHRoZSBnYXRlLgpUaG91IHNoYWx0IGRhaWx5IHByZXBhcmUgYSBidXJudCBvZmZlcmluZyB1bnRvIHRoZSBMT1JEIG9mIGEgbGFtYiBvZiB0aGUgZmlyc3QgeWVhciB3aXRob3V0IGJsZW1pc2g6IHRob3Ugc2hhbHQgcHJlcGFyZSBpdCBldmVyeSBtb3JuaW5nLgpBbmQgdGhvdSBzaGFsdCBwcmVwYXJlIGEgbWVhdCBvZmZlcmluZyBmb3IgaXQgZXZlcnkgbW9ybmluZywgdGhlIHNpeHRoIHBhcnQgb2YgYW4gZXBoYWgsIGFuZCB0aGUgdGhpcmQgcGFydCBvZiBhbiBoaW4gb2Ygb2lsLCB0byB0ZW1wZXIgd2l0aCB0aGUgZmluZSBmbG91cjsgYSBtZWF0IG9mZmVyaW5nIGNvbnRpbnVhbGx5IGJ5IGEgcGVycGV0dWFsIG9yZGluYW5jZSB1bnRvIHRoZSBMT1JELgpUaHVzIHNoYWxsIHRoZXkgcHJlcGFyZSB0aGUgbGFtYiwgYW5kIHRoZSBtZWF0IG9mZmVyaW5nLCBhbmQgdGhlIG9pbCwgZXZlcnkgbW9ybmluZyBmb3IgYSBjb250aW51YWwgYnVybnQgb2ZmZXJpbmcuClRodXMgc2FpdGggdGhlIExvcmQgR09EOyBJZiB0aGUgcHJpbmNlIGdpdmUgYSBnaWZ0IHVudG8gYW55IG9mIGhpcyBzb25zLCB0aGUgaW5oZXJpdGFuY2UgdGhlcmVvZiBzaGFsbCBiZSBoaXMgc29ucyc7IGl0IHNoYWxsIGJlIHRoZWlyIHBvc3Nlc3Npb24gYnkgaW5oZXJpdGFuY2UuCkJ1dCBpZiBoZSBnaXZlIGEgZ2lmdCBvZiBoaXMgaW5oZXJpdGFuY2UgdG8gb25lIG9mIGhpcyBzZXJ2YW50cywgdGhlbiBpdCBzaGFsbCBiZSBoaXMgdG8gdGhlIHllYXIgb2YgbGliZXJ0eTsgYWZ0ZXIgaXQgc2hhbGwgcmV0dXJuIHRvIHRoZSBwcmluY2U6IGJ1dCBoaXMgaW5oZXJpdGFuY2Ugc2hhbGwgYmUgaGlzIHNvbnMnIGZvciB0aGVtLgpNb3Jlb3ZlciB0aGUgcHJpbmNlIHNoYWxsIG5vdCB0YWtlIG9mIHRoZSBwZW9wbGUncyBpbmhlcml0YW5jZSBieSBvcHByZXNzaW9uLCB0byB0aHJ1c3QgdGhlbSBvdXQgb2YgdGhlaXIgcG9zc2Vzc2lvbjsgYnV0IGhlIHNoYWxsIGdpdmUgaGlzIHNvbnMgaW5oZXJpdGFuY2Ugb3V0IG9mIGhpcyBvd24gcG9zc2Vzc2lvbjogdGhhdCBteSBwZW9wbGUgYmUgbm90IHNjYXR0ZXJlZCBldmVyeSBtYW4gZnJvbSBoaXMgcG9zc2Vzc2lvbi4KQWZ0ZXIgaGUgYnJvdWdodCBtZSB0aHJvdWdoIHRoZSBlbnRyeSwgd2hpY2ggd2FzIGF0IHRoZSBzaWRlIG9mIHRoZSBnYXRlLCBpbnRvIHRoZSBob2x5IGNoYW1iZXJzIG9mIHRoZSBwcmllc3RzLCB3aGljaCBsb29rZWQgdG93YXJkIHRoZSBub3J0aDogYW5kLCBiZWhvbGQsIHRoZXJlIHdhcyBhIHBsYWNlIG9uIHRoZSB0d28gc2lkZXMgd2VzdHdhcmQuClRoZW4gc2FpZCBoZSB1bnRvIG1lLCBUaGlzIGlzIHRoZSBwbGFjZSB3aGVyZSB0aGUgcHJpZXN0cyBzaGFsbCBib2lsIHRoZSB0cmVzcGFzcyBvZmZlcmluZyBhbmQgdGhlIHNpbiBvZmZlcmluZywgd2hlcmUgdGhleSBzaGFsbCBiYWtlIHRoZSBtZWF0IG9mZmVyaW5nOyB0aGF0IHRoZXkgYmVhciB0aGVtIG5vdCBvdXQgaW50byB0aGUgdXR0ZXIgY291cnQsIHRvIHNhbmN0aWZ5IHRoZSBwZW9wbGUuClRoZW4gaGUgYnJvdWdodCBtZSBmb3J0aCBpbnRvIHRoZSB1dHRlciBjb3VydCwgYW5kIGNhdXNlZCBtZSB0byBwYXNzIGJ5IHRoZSBmb3VyIGNvcm5lcnMgb2YgdGhlIGNvdXJ0OyBhbmQsIGJlaG9sZCwgaW4gZXZlcnkgY29ybmVyIG9mIHRoZSBjb3VydCB0aGVyZSB3YXMgYSBjb3VydC4KSW4gdGhlIGZvdXIgY29ybmVycyBvZiB0aGUgY291cnQgdGhlcmUgd2VyZSBjb3VydHMgam9pbmVkIG9mIGZvcnR5IGN1Yml0cyBsb25nIGFuZCB0aGlydHkgYnJvYWQ6IHRoZXNlIGZvdXIgY29ybmVycyB3ZXJlIG9mIG9uZSBtZWFzdXJlLgpBbmQgdGhlcmUgd2FzIGEgcm93IG9mIGJ1aWxkaW5nIHJvdW5kIGFib3V0IGluIHRoZW0sIHJvdW5kIGFib3V0IHRoZW0gZm91ciwgYW5kIGl0IHdhcyBtYWRlIHdpdGggYm9pbGluZyBwbGFjZXMgdW5kZXIgdGhlIHJvd3Mgcm91bmQgYWJvdXQuClRoZW4gc2FpZCBoZSB1bnRvIG1lLCBUaGVzZSBhcmUgdGhlIHBsYWNlcyBvZiB0aGVtIHRoYXQgYm9pbCwgd2hlcmUgdGhlIG1pbmlzdGVycyBvZiB0aGUgaG91c2Ugc2hhbGwgYm9pbCB0aGUgc2FjcmlmaWNlIG9mIHRoZSBwZW9wbGUuCkFmdGVyd2FyZCBoZSBicm91Z2h0IG1lIGFnYWluIHVudG8gdGhlIGRvb3Igb2YgdGhlIGhvdXNlOyBhbmQsIGJlaG9sZCwgd2F0ZXJzIGlzc3VlZCBvdXQgZnJvbSB1bmRlciB0aGUgdGhyZXNob2xkIG9mIHRoZSBob3VzZSBlYXN0d2FyZDogZm9yIHRoZSBmb3JlZnJvbnQgb2YgdGhlIGhvdXNlIHN0b29kIHRvd2FyZCB0aGUgZWFzdCwgYW5kIHRoZSB3YXRlcnMgY2FtZSBkb3duIGZyb20gdW5kZXIgZnJvbSB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgaG91c2UsIGF0IHRoZSBzb3V0aCBzaWRlIG9mIHRoZSBhbHRhci4KVGhlbiBicm91Z2h0IGhlIG1lIG91dCBvZiB0aGUgd2F5IG9mIHRoZSBnYXRlIG5vcnRod2FyZCwgYW5kIGxlZCBtZSBhYm91dCB0aGUgd2F5IHdpdGhvdXQgdW50byB0aGUgdXR0ZXIgZ2F0ZSBieSB0aGUgd2F5IHRoYXQgbG9va2V0aCBlYXN0d2FyZDsgYW5kLCBiZWhvbGQsIHRoZXJlIHJhbiBvdXQgd2F0ZXJzIG9uIHRoZSByaWdodCBzaWRlLgpBbmQgd2hlbiB0aGUgbWFuIHRoYXQgaGFkIHRoZSBsaW5lIGluIGhpcyBoYW5kIHdlbnQgZm9ydGggZWFzdHdhcmQsIGhlIG1lYXN1cmVkIGEgdGhvdXNhbmQgY3ViaXRzLCBhbmQgaGUgYnJvdWdodCBtZSB0aHJvdWdoIHRoZSB3YXRlcnM7IHRoZSB3YXRlcnMgd2VyZSB0byB0aGUgYW5rbGVzLgpBZ2FpbiBoZSBtZWFzdXJlZCBhIHRob3VzYW5kLCBhbmQgYnJvdWdodCBtZSB0aHJvdWdoIHRoZSB3YXRlcnM7IHRoZSB3YXRlcnMgd2VyZSB0byB0aGUga25lZXMuIEFnYWluIGhlIG1lYXN1cmVkIGEgdGhvdXNhbmQsIGFuZCBicm91Z2h0IG1lIHRocm91Z2g7IHRoZSB3YXRlcnMgd2VyZSB0byB0aGUgbG9pbnMuCkFmdGVyd2FyZCBoZSBtZWFzdXJlZCBhIHRob3VzYW5kOyBhbmQgaXQgd2FzIGEgcml2ZXIgdGhhdCBJIGNvdWxkIG5vdCBwYXNzIG92ZXI6IGZvciB0aGUgd2F0ZXJzIHdlcmUgcmlzZW4sIHdhdGVycyB0byBzd2ltIGluLCBhIHJpdmVyIHRoYXQgY291bGQgbm90IGJlIHBhc3NlZCBvdmVyLgpBbmQgaGUgc2FpZCB1bnRvIG1lLCBTb24gb2YgbWFuLCBoYXN0IHRob3Ugc2VlbiB0aGlzPyBUaGVuIGhlIGJyb3VnaHQgbWUsIGFuZCBjYXVzZWQgbWUgdG8gcmV0dXJuIHRvIHRoZSBicmluayBvZiB0aGUgcml2ZXIuCk5vdyB3aGVuIEkgaGFkIHJldHVybmVkLCBiZWhvbGQsIGF0IHRoZSBiYW5rIG9mIHRoZSByaXZlciB3ZXJlIHZlcnkgbWFueSB0cmVlcyBvbiB0aGUgb25lIHNpZGUgYW5kIG9uIHRoZSBvdGhlci4KVGhlbiBzYWlkIGhlIHVudG8gbWUsIFRoZXNlIHdhdGVycyBpc3N1ZSBvdXQgdG93YXJkIHRoZSBlYXN0IGNvdW50cnksIGFuZCBnbyBkb3duIGludG8gdGhlIGRlc2VydCwgYW5kIGdvIGludG8gdGhlIHNlYTogd2hpY2ggYmVpbmcgYnJvdWdodCBmb3J0aCBpbnRvIHRoZSBzZWEsIHRoZSB3YXRlcnMgc2hhbGwgYmUgaGVhbGVkLgpBbmQgaXQgc2hhbGwgY29tZSB0byBwYXNzLCB0aGF0IGV2ZXJ5IHRoaW5nIHRoYXQgbGl2ZXRoLCB3aGljaCBtb3ZldGgsIHdoaXRoZXJzb2V2ZXIgdGhlIHJpdmVycyBzaGFsbCBjb21lLCBzaGFsbCBsaXZlOiBhbmQgdGhlcmUgc2hhbGwgYmUgYSB2ZXJ5IGdyZWF0IG11bHRpdHVkZSBvZiBmaXNoLCBiZWNhdXNlIHRoZXNlIHdhdGVycyBzaGFsbCBjb21lIHRoaXRoZXI6IGZvciB0aGV5IHNoYWxsIGJlIGhlYWxlZDsgYW5kIGV2ZXJ5IHRoaW5nIHNoYWxsIGxpdmUgd2hpdGhlciB0aGUgcml2ZXIgY29tZXRoLgpBbmQgaXQgc2hhbGwgY29tZSB0byBwYXNzLCB0aGF0IHRoZSBmaXNoZXJzIHNoYWxsIHN0YW5kIHVwb24gaXQgZnJvbSBFbmdlZGkgZXZlbiB1bnRvIEVuZWdsYWltOyB0aGV5IHNoYWxsIGJlIGEgcGxhY2UgdG8gc3ByZWFkIGZvcnRoIG5ldHM7IHRoZWlyIGZpc2ggc2hhbGwgYmUgYWNjb3JkaW5nIHRvIHRoZWlyIGtpbmRzLCBhcyB0aGUgZmlzaCBvZiB0aGUgZ3JlYXQgc2VhLCBleGNlZWRpbmcgbWFueS4KQnV0IHRoZSBtaXJ5IHBsYWNlcyB0aGVyZW9mIGFuZCB0aGUgbWFyaXNoZXMgdGhlcmVvZiBzaGFsbCBub3QgYmUgaGVhbGVkOyB0aGV5IHNoYWxsIGJlIGdpdmVuIHRvIHNhbHQuCkFuZCBieSB0aGUgcml2ZXIgdXBvbiB0aGUgYmFuayB0aGVyZW9mLCBvbiB0aGlzIHNpZGUgYW5kIG9uIHRoYXQgc2lkZSwgc2hhbGwgZ3JvdyBhbGwgdHJlZXMgZm9yIG1lYXQsIHdob3NlIGxlYWYgc2hhbGwgbm90IGZhZGUsIG5laXRoZXIgc2hhbGwgdGhlIGZydWl0IHRoZXJlb2YgYmUgY29uc3VtZWQ6IGl0IHNoYWxsIGJyaW5nIGZvcnRoIG5ldyBmcnVpdCBhY2NvcmRpbmcgdG8gaGlzIG1vbnRocywgYmVjYXVzZSB0aGVpciB3YXRlcnMgdGhleSBpc3N1ZWQgb3V0IG9mIHRoZSBzYW5jdHVhcnk6IGFuZCB0aGUgZnJ1aXQgdGhlcmVvZiBzaGFsbCBiZSBmb3IgbWVhdCwgYW5kIHRoZSBsZWFmIHRoZXJlb2YgZm9yIG1lZGljaW5lLgpUaHVzIHNhaXRoIHRoZSBMb3JkIEdPRDsgVGhpcyBzaGFsbCBiZSB0aGUgYm9yZGVyLCB3aGVyZWJ5IHllIHNoYWxsIGluaGVyaXQgdGhlIGxhbmQgYWNjb3JkaW5nIHRvIHRoZSB0d2VsdmUgdHJpYmVzIG9mIElzcmFlbDogSm9zZXBoIHNoYWxsIGhhdmUgdHdvIHBvcnRpb25zLgpBbmQgeWUgc2hhbGwgaW5oZXJpdCBpdCwgb25lIGFzIHdlbGwgYXMgYW5vdGhlcjogY29uY2VybmluZyB0aGUgd2hpY2ggSSBsaWZ0ZWQgdXAgbWluZSBoYW5kIHRvIGdpdmUgaXQgdW50byB5b3VyIGZhdGhlcnM6IGFuZCB0aGlzIGxhbmQgc2hhbGwgZmFsbCB1bnRvIHlvdSBmb3IgaW5oZXJpdGFuY2UuCkFuZCB0aGlzIHNoYWxsIGJlIHRoZSBib3JkZXIgb2YgdGhlIGxhbmQgdG93YXJkIHRoZSBub3J0aCBzaWRlLCBmcm9tIHRoZSBncmVhdCBzZWEsIHRoZSB3YXkgb2YgSGV0aGxvbiwgYXMgbWVuIGdvIHRvIFplZGFkOwpIYW1hdGgsIEJlcm90aGFoLCBTaWJyYWltLCB3aGljaCBpcyBiZXR3ZWVuIHRoZSBib3JkZXIgb2YgRGFtYXNjdXMgYW5kIHRoZSBib3JkZXIgb2YgSGFtYXRoOyBIYXphcmhhdHRpY29uLCB3aGljaCBpcyBieSB0aGUgY29hc3Qgb2YgSGF1cmFuLgpBbmQgdGhlIGJvcmRlciBmcm9tIHRoZSBzZWEgc2hhbGwgYmUgSGF6YXJlbmFuLCB0aGUgYm9yZGVyIG9mIERhbWFzY3VzLCBhbmQgdGhlIG5vcnRoIG5vcnRod2FyZCwgYW5kIHRoZSBib3JkZXIgb2YgSGFtYXRoLiBBbmQgdGhpcyBpcyB0aGUgbm9ydGggc2lkZS4KQW5kIHRoZSBlYXN0IHNpZGUgeWUgc2hhbGwgbWVhc3VyZSBmcm9tIEhhdXJhbiwgYW5kIGZyb20gRGFtYXNjdXMsIGFuZCBmcm9tIEdpbGVhZCwgYW5kIGZyb20gdGhlIGxhbmQgb2YgSXNyYWVsIGJ5IEpvcmRhbiwgZnJvbSB0aGUgYm9yZGVyIHVudG8gdGhlIGVhc3Qgc2VhLiBBbmQgdGhpcyBpcyB0aGUgZWFzdCBzaWRlLgpBbmQgdGhlIHNvdXRoIHNpZGUgc291dGh3YXJkLCBmcm9tIFRhbWFyIGV2ZW4gdG8gdGhlIHdhdGVycyBvZiBzdHJpZmUgaW4gS2FkZXNoLCB0aGUgcml2ZXIgdG8gdGhlIGdyZWF0IHNlYS4gQW5kIHRoaXMgaXMgdGhlIHNvdXRoIHNpZGUgc291dGh3YXJkLgpUaGUgd2VzdCBzaWRlIGFsc28gc2hhbGwgYmUgdGhlIGdyZWF0IHNlYSBmcm9tIHRoZSBib3JkZXIsIHRpbGwgYSBtYW4gY29tZSBvdmVyIGFnYWluc3QgSGFtYXRoLiBUaGlzIGlzIHRoZSB3ZXN0IHNpZGUuClNvIHNoYWxsIHllIGRpdmlkZSB0aGlzIGxhbmQgdW50byB5b3UgYWNjb3JkaW5nIHRvIHRoZSB0cmliZXMgb2YgSXNyYWVsLgpBbmQgaXQgc2hhbGwgY29tZSB0byBwYXNzLCB0aGF0IHllIHNoYWxsIGRpdmlkZSBpdCBieSBsb3QgZm9yIGFuIGluaGVyaXRhbmNlIHVudG8geW91LCBhbmQgdG8gdGhlIHN0cmFuZ2VycyB0aGF0IHNvam91cm4gYW1vbmcgeW91LCB3aGljaCBzaGFsbCBiZWdldCBjaGlsZHJlbiBhbW9uZyB5b3U6IGFuZCB0aGV5IHNoYWxsIGJlIHVudG8geW91IGFzIGJvcm4gaW4gdGhlIGNvdW50cnkgYW1vbmcgdGhlIGNoaWxkcmVuIG9mIElzcmFlbDsgdGhleSBzaGFsbCBoYXZlIGluaGVyaXRhbmNlIHdpdGggeW91IGFtb25nIHRoZSB0cmliZXMgb2YgSXNyYWVsLgpBbmQgaXQgc2hhbGwgY29tZSB0byBwYXNzLCB0aGF0IGluIHdoYXQgdHJpYmUgdGhlIHN0cmFuZ2VyIHNvam91cm5ldGgsIHRoZXJlIHNoYWxsIHllIGdpdmUgaGltIGhpcyBpbmhlcml0YW5jZSwgc2FpdGggdGhlIExvcmQgR09ELgpOb3cgdGhlc2UgYXJlIHRoZSBuYW1lcyBvZiB0aGUgdHJpYmVzLiBGcm9tIHRoZSBub3J0aCBlbmQgdG8gdGhlIGNvYXN0IG9mIHRoZSB3YXkgb2YgSGV0aGxvbiwgYXMgb25lIGdvZXRoIHRvIEhhbWF0aCwgSGF6YXJlbmFuLCB0aGUgYm9yZGVyIG9mIERhbWFzY3VzIG5vcnRod2FyZCwgdG8gdGhlIGNvYXN0IG9mIEhhbWF0aDsgZm9yIHRoZXNlIGFyZSBoaXMgc2lkZXMgZWFzdCBhbmQgd2VzdDsgYSBwb3J0aW9uIGZvciBEYW4uCkFuZCBieSB0aGUgYm9yZGVyIG9mIERhbiwgZnJvbSB0aGUgZWFzdCBzaWRlIHVudG8gdGhlIHdlc3Qgc2lkZSwgYSBwb3J0aW9uIGZvciBBc2hlci4KQW5kIGJ5IHRoZSBib3JkZXIgb2YgQXNoZXIsIGZyb20gdGhlIGVhc3Qgc2lkZSBldmVuIHVudG8gdGhlIHdlc3Qgc2lkZSwgYSBwb3J0aW9uIGZvciBOYXBodGFsaS4KQW5kIGJ5IHRoZSBib3JkZXIgb2YgTmFwaHRhbGksIGZyb20gdGhlIGVhc3Qgc2lkZSB1bnRvIHRoZSB3ZXN0IHNpZGUsIGEgcG9ydGlvbiBmb3IgTWFuYXNzZWguCkFuZCBieSB0aGUgYm9yZGVyIG9mIE1hbmFzc2VoLCBmcm9tIHRoZSBlYXN0IHNpZGUgdW50byB0aGUgd2VzdCBzaWRlLCBhIHBvcnRpb24gZm9yIEVwaHJhaW0uCkFuZCBieSB0aGUgYm9yZGVyIG9mIEVwaHJhaW0sIGZyb20gdGhlIGVhc3Qgc2lkZSBldmVuIHVudG8gdGhlIHdlc3Qgc2lkZSwgYSBwb3J0aW9uIGZvciBSZXViZW4uCkFuZCBieSB0aGUgYm9yZGVyIG9mIFJldWJlbiwgZnJvbSB0aGUgZWFzdCBzaWRlIHVudG8gdGhlIHdlc3Qgc2lkZSwgYSBwb3J0aW9uIGZvciBKdWRhaC4KQW5kIGJ5IHRoZSBib3JkZXIgb2YgSnVkYWgsIGZyb20gdGhlIGVhc3Qgc2lkZSB1bnRvIHRoZSB3ZXN0IHNpZGUsIHNoYWxsIGJlIHRoZSBvZmZlcmluZyB3aGljaCB5ZSBzaGFsbCBvZmZlciBvZiBmaXZlIGFuZCB0d2VudHkgdGhvdXNhbmQgcmVlZHMgaW4gYnJlYWR0aCwgYW5kIGluIGxlbmd0aCBhcyBvbmUgb2YgdGhlIG90aGVyIHBhcnRzLCBmcm9tIHRoZSBlYXN0IHNpZGUgdW50byB0aGUgd2VzdCBzaWRlOiBhbmQgdGhlIHNhbmN0dWFyeSBzaGFsbCBiZSBpbiB0aGUgbWlkc3Qgb2YgaXQuClRoZSBvYmxhdGlvbiB0aGF0IHllIHNoYWxsIG9mZmVyIHVudG8gdGhlIExPUkQgc2hhbGwgYmUgb2YgZml2ZSBhbmQgdHdlbnR5IHRob3VzYW5kIGluIGxlbmd0aCwgYW5kIG9mIHRlbiB0aG91c2FuZCBpbiBicmVhZHRoLgpBbmQgZm9yIHRoZW0sIGV2ZW4gZm9yIHRoZSBwcmllc3RzLCBzaGFsbCBiZSB0aGlzIGhvbHkgb2JsYXRpb247IHRvd2FyZCB0aGUgbm9ydGggZml2ZSBhbmQgdHdlbnR5IHRob3VzYW5kIGluIGxlbmd0aCwgYW5kIHRvd2FyZCB0aGUgd2VzdCB0ZW4gdGhvdXNhbmQgaW4gYnJlYWR0aCwgYW5kIHRvd2FyZCB0aGUgZWFzdCB0ZW4gdGhvdXNhbmQgaW4gYnJlYWR0aCwgYW5kIHRvd2FyZCB0aGUgc291dGggZml2ZSBhbmQgdHdlbnR5IHRob3VzYW5kIGluIGxlbmd0aDogYW5kIHRoZSBzYW5jdHVhcnkgb2YgdGhlIExPUkQgc2hhbGwgYmUgaW4gdGhlIG1pZHN0IHRoZXJlb2YuCkl0IHNoYWxsIGJlIGZvciB0aGUgcHJpZXN0cyB0aGF0IGFyZSBzYW5jdGlmaWVkIG9mIHRoZSBzb25zIG9mIFphZG9rOyB3aGljaCBoYXZlIGtlcHQgbXkgY2hhcmdlLCB3aGljaCB3ZW50IG5vdCBhc3RyYXkgd2hlbiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIHdlbnQgYXN0cmF5LCBhcyB0aGUgTGV2aXRlcyB3ZW50IGFzdHJheS4KQW5kIHRoaXMgb2JsYXRpb24gb2YgdGhlIGxhbmQgdGhhdCBpcyBvZmZlcmVkIHNoYWxsIGJlIHVudG8gdGhlbSBhIHRoaW5nIG1vc3QgaG9seSBieSB0aGUgYm9yZGVyIG9mIHRoZSBMZXZpdGVzLgpBbmQgb3ZlciBhZ2FpbnN0IHRoZSBib3JkZXIgb2YgdGhlIHByaWVzdHMgdGhlIExldml0ZXMgc2hhbGwgaGF2ZSBmaXZlIGFuZCB0d2VudHkgdGhvdXNhbmQgaW4gbGVuZ3RoLCBhbmQgdGVuIHRob3VzYW5kIGluIGJyZWFkdGg6IGFsbCB0aGUgbGVuZ3RoIHNoYWxsIGJlIGZpdmUgYW5kIHR3ZW50eSB0aG91c2FuZCwgYW5kIHRoZSBicmVhZHRoIHRlbiB0aG91c2FuZC4KQW5kIHRoZXkgc2hhbGwgbm90IHNlbGwgb2YgaXQsIG5laXRoZXIgZXhjaGFuZ2UsIG5vciBhbGllbmF0ZSB0aGUgZmlyc3RmcnVpdHMgb2YgdGhlIGxhbmQ6IGZvciBpdCBpcyBob2x5IHVudG8gdGhlIExPUkQuCkFuZCB0aGUgZml2ZSB0aG91c2FuZCwgdGhhdCBhcmUgbGVmdCBpbiB0aGUgYnJlYWR0aCBvdmVyIGFnYWluc3QgdGhlIGZpdmUgYW5kIHR3ZW50eSB0aG91c2FuZCwgc2hhbGwgYmUgYSBwcm9mYW5lIHBsYWNlIGZvciB0aGUgY2l0eSwgZm9yIGR3ZWxsaW5nLCBhbmQgZm9yIHN1YnVyYnM6IGFuZCB0aGUgY2l0eSBzaGFsbCBiZSBpbiB0aGUgbWlkc3QgdGhlcmVvZi4KQW5kIHRoZXNlIHNoYWxsIGJlIHRoZSBtZWFzdXJlcyB0aGVyZW9mOyB0aGUgbm9ydGggc2lkZSBmb3VyIHRob3VzYW5kIGFuZCBmaXZlIGh1bmRyZWQsIGFuZCB0aGUgc291dGggc2lkZSBmb3VyIHRob3VzYW5kIGFuZCBmaXZlIGh1bmRyZWQsIGFuZCBvbiB0aGUgZWFzdCBzaWRlIGZvdXIgdGhvdXNhbmQgYW5kIGZpdmUgaHVuZHJlZCwgYW5kIHRoZSB3ZXN0IHNpZGUgZm91ciB0aG91c2FuZCBhbmQgZml2ZSBodW5kcmVkLgpBbmQgdGhlIHN1YnVyYnMgb2YgdGhlIGNpdHkgc2hhbGwgYmUgdG93YXJkIHRoZSBub3J0aCB0d28gaHVuZHJlZCBhbmQgZmlmdHksIGFuZCB0b3dhcmQgdGhlIHNvdXRoIHR3byBodW5kcmVkIGFuZCBmaWZ0eSwgYW5kIHRvd2FyZCB0aGUgZWFzdCB0d28gaHVuZHJlZCBhbmQgZmlmdHksIGFuZCB0b3dhcmQgdGhlIHdlc3QgdHdvIGh1bmRyZWQgYW5kIGZpZnR5LgpBbmQgdGhlIHJlc2lkdWUgaW4gbGVuZ3RoIG92ZXIgYWdhaW5zdCB0aGUgb2JsYXRpb24gb2YgdGhlIGhvbHkgcG9ydGlvbiBzaGFsbCBiZSB0ZW4gdGhvdXNhbmQgZWFzdHdhcmQsIGFuZCB0ZW4gdGhvdXNhbmQgd2VzdHdhcmQ6IGFuZCBpdCBzaGFsbCBiZSBvdmVyIGFnYWluc3QgdGhlIG9ibGF0aW9uIG9mIHRoZSBob2x5IHBvcnRpb247IGFuZCB0aGUgaW5jcmVhc2UgdGhlcmVvZiBzaGFsbCBiZSBmb3IgZm9vZCB1bnRvIHRoZW0gdGhhdCBzZXJ2ZSB0aGUgY2l0eS4KQW5kIHRoZXkgdGhhdCBzZXJ2ZSB0aGUgY2l0eSBzaGFsbCBzZXJ2ZSBpdCBvdXQgb2YgYWxsIHRoZSB0cmliZXMgb2YgSXNyYWVsLgpBbGwgdGhlIG9ibGF0aW9uIHNoYWxsIGJlIGZpdmUgYW5kIHR3ZW50eSB0aG91c2FuZCBieSBmaXZlIGFuZCB0d2VudHkgdGhvdXNhbmQ6IHllIHNoYWxsIG9mZmVyIHRoZSBob2x5IG9ibGF0aW9uIGZvdXJzcXVhcmUsIHdpdGggdGhlIHBvc3Nlc3Npb24gb2YgdGhlIGNpdHkuCkFuZCB0aGUgcmVzaWR1ZSBzaGFsbCBiZSBmb3IgdGhlIHByaW5jZSwgb24gdGhlIG9uZSBzaWRlIGFuZCBvbiB0aGUgb3RoZXIgb2YgdGhlIGhvbHkgb2JsYXRpb24sIGFuZCBvZiB0aGUgcG9zc2Vzc2lvbiBvZiB0aGUgY2l0eSwgb3ZlciBhZ2FpbnN0IHRoZSBmaXZlIGFuZCB0d2VudHkgdGhvdXNhbmQgb2YgdGhlIG9ibGF0aW9uIHRvd2FyZCB0aGUgZWFzdCBib3JkZXIsIGFuZCB3ZXN0d2FyZCBvdmVyIGFnYWluc3QgdGhlIGZpdmUgYW5kIHR3ZW50eSB0aG91c2FuZCB0b3dhcmQgdGhlIHdlc3QgYm9yZGVyLCBvdmVyIGFnYWluc3QgdGhlIHBvcnRpb25zIGZvciB0aGUgcHJpbmNlOiBhbmQgaXQgc2hhbGwgYmUgdGhlIGhvbHkgb2JsYXRpb247IGFuZCB0aGUgc2FuY3R1YXJ5IG9mIHRoZSBob3VzZSBzaGFsbCBiZSBpbiB0aGUgbWlkc3QgdGhlcmVvZi4KTW9yZW92ZXIgZnJvbSB0aGUgcG9zc2Vzc2lvbiBvZiB0aGUgTGV2aXRlcywgYW5kIGZyb20gdGhlIHBvc3Nlc3Npb24gb2YgdGhlIGNpdHksIGJlaW5nIGluIHRoZSBtaWRzdCBvZiB0aGF0IHdoaWNoIGlzIHRoZSBwcmluY2UncywgYmV0d2VlbiB0aGUgYm9yZGVyIG9mIEp1ZGFoIGFuZCB0aGUgYm9yZGVyIG9mIEJlbmphbWluLCBzaGFsbCBiZSBmb3IgdGhlIHByaW5jZS4KQXMgZm9yIHRoZSByZXN0IG9mIHRoZSB0cmliZXMsIGZyb20gdGhlIGVhc3Qgc2lkZSB1bnRvIHRoZSB3ZXN0IHNpZGUsIEJlbmphbWluIHNoYWxsIGhhdmUgYSBwb3J0aW9uLgpBbmQgYnkgdGhlIGJvcmRlciBvZiBCZW5qYW1pbiwgZnJvbSB0aGUgZWFzdCBzaWRlIHVudG8gdGhlIHdlc3Qgc2lkZSwgU2ltZW9uIHNoYWxsIGhhdmUgYSBwb3J0aW9uLgpBbmQgYnkgdGhlIGJvcmRlciBvZiBTaW1lb24sIGZyb20gdGhlIGVhc3Qgc2lkZSB1bnRvIHRoZSB3ZXN0IHNpZGUsIElzc2FjaGFyIGEgcG9ydGlvbi4KQW5kIGJ5IHRoZSBib3JkZXIgb2YgSXNzYWNoYXIsIGZyb20gdGhlIGVhc3Qgc2lkZSB1bnRvIHRoZSB3ZXN0IHNpZGUsIFplYnVsdW4gYSBwb3J0aW9uLgpBbmQgYnkgdGhlIGJvcmRlciBvZiBaZWJ1bHVuLCBmcm9tIHRoZSBlYXN0IHNpZGUgdW50byB0aGUgd2VzdCBzaWRlLCBHYWQgYSBwb3J0aW9uLgpBbmQgYnkgdGhlIGJvcmRlciBvZiBHYWQsIGF0IHRoZSBzb3V0aCBzaWRlIHNvdXRod2FyZCwgdGhlIGJvcmRlciBzaGFsbCBiZSBldmVuIGZyb20gVGFtYXIgdW50byB0aGUgd2F0ZXJzIG9mIHN0cmlmZSBpbiBLYWRlc2gsIGFuZCB0byB0aGUgcml2ZXIgdG93YXJkIHRoZSBncmVhdCBzZWEuClRoaXMgaXMgdGhlIGxhbmQgd2hpY2ggeWUgc2hhbGwgZGl2aWRlIGJ5IGxvdCB1bnRvIHRoZSB0cmliZXMgb2YgSXNyYWVsIGZvciBpbmhlcml0YW5jZSwgYW5kIHRoZXNlIGFyZSB0aGVpciBwb3J0aW9ucywgc2FpdGggdGhlIExvcmQgR09ELgpBbmQgdGhlc2UgYXJlIHRoZSBnb2luZ3Mgb3V0IG9mIHRoZSBjaXR5IG9uIHRoZSBub3J0aCBzaWRlLCBmb3VyIHRob3VzYW5kIGFuZCBmaXZlIGh1bmRyZWQgbWVhc3VyZXMuCkFuZCB0aGUgZ2F0ZXMgb2YgdGhlIGNpdHkgc2hhbGwgYmUgYWZ0ZXIgdGhlIG5hbWVzIG9mIHRoZSB0cmliZXMgb2YgSXNyYWVsOiB0aHJlZSBnYXRlcyBub3J0aHdhcmQ7IG9uZSBnYXRlIG9mIFJldWJlbiwgb25lIGdhdGUgb2YgSnVkYWgsIG9uZSBnYXRlIG9mIExldmkuCkFuZCBhdCB0aGUgZWFzdCBzaWRlIGZvdXIgdGhvdXNhbmQgYW5kIGZpdmUgaHVuZHJlZDogYW5kIHRocmVlIGdhdGVzOyBhbmQgb25lIGdhdGUgb2YgSm9zZXBoLCBvbmUgZ2F0ZSBvZiBCZW5qYW1pbiwgb25lIGdhdGUgb2YgRGFuLgpBbmQgYXQgdGhlIHNvdXRoIHNpZGUgZm91ciB0aG91c2FuZCBhbmQgZml2ZSBodW5kcmVkIG1lYXN1cmVzOiBhbmQgdGhyZWUgZ2F0ZXM7IG9uZSBnYXRlIG9mIFNpbWVvbiwgb25lIGdhdGUgb2YgSXNzYWNoYXIsIG9uZSBnYXRlIG9mIFplYnVsdW4uCkF0IHRoZSB3ZXN0IHNpZGUgZm91ciB0aG91c2FuZCBhbmQgZml2ZSBodW5kcmVkLCB3aXRoIHRoZWlyIHRocmVlIGdhdGVzOyBvbmUgZ2F0ZSBvZiBHYWQsIG9uZSBnYXRlIG9mIEFzaGVyLCBvbmUgZ2F0ZSBvZiBOYXBodGFsaS4KSXQgd2FzIHJvdW5kIGFib3V0IGVpZ2h0ZWVuIHRob3VzYW5kIG1lYXN1cmVzOiBhbmQgdGhlIG5hbWUgb2YgdGhlIGNpdHkgZnJvbSB0aGF0IGRheSBzaGFsbCBiZSwgVGhlIExPUkQgaXMgdGhlcmUuCkluIHRoZSB0aGlyZCB5ZWFyIG9mIHRoZSByZWlnbiBvZiBKZWhvaWFraW0ga2luZyBvZiBKdWRhaCBjYW1lIE5lYnVjaGFkbmV6emFyIGtpbmcgb2YgQmFieWxvbiB1bnRvIEplcnVzYWxlbSwgYW5kIGJlc2llZ2VkIGl0LgpBbmQgdGhlIExvcmQgZ2F2ZSBKZWhvaWFraW0ga2luZyBvZiBKdWRhaCBpbnRvIGhpcyBoYW5kLCB3aXRoIHBhcnQgb2YgdGhlIHZlc3NlbHMgb2YgdGhlIGhvdXNlIG9mIEdvZDogd2hpY2ggaGUgY2FycmllZCBpbnRvIHRoZSBsYW5kIG9mIFNoaW5hciB0byB0aGUgaG91c2Ugb2YgaGlzIGdvZDsgYW5kIGhlIGJyb3VnaHQgdGhlIHZlc3NlbHMgaW50byB0aGUgdHJlYXN1cmUgaG91c2Ugb2YgaGlzIGdvZC4KQW5kIHRoZSBraW5nIHNwYWtlIHVudG8gQXNocGVuYXogdGhlIG1hc3RlciBvZiBoaXMgZXVudWNocywgdGhhdCBoZSBzaG91bGQgYnJpbmcgY2VydGFpbiBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLCBhbmQgb2YgdGhlIGtpbmcncyBzZWVkLCBhbmQgb2YgdGhlIHByaW5jZXM7CkNoaWxkcmVuIGluIHdob20gd2FzIG5vIGJsZW1pc2gsIGJ1dCB3ZWxsIGZhdm91cmVkLCBhbmQgc2tpbGZ1bCBpbiBhbGwgd2lzZG9tLCBhbmQgY3VubmluZyBpbiBrbm93bGVkZ2UsIGFuZCB1bmRlcnN0YW5kaW5nIHNjaWVuY2UsIGFuZCBzdWNoIGFzIGhhZCBhYmlsaXR5IGluIHRoZW0gdG8gc3RhbmQgaW4gdGhlIGtpbmcncyBwYWxhY2UsIGFuZCB3aG9tIHRoZXkgbWlnaHQgdGVhY2ggdGhlIGxlYXJuaW5nIGFuZCB0aGUgdG9uZ3VlIG9mIHRoZSBDaGFsZGVhbnMuCkFuZCB0aGUga2luZyBhcHBvaW50ZWQgdGhlbSBhIGRhaWx5IHByb3Zpc2lvbiBvZiB0aGUga2luZydzIG1lYXQsIGFuZCBvZiB0aGUgd2luZSB3aGljaCBoZSBkcmFuazogc28gbm91cmlzaGluZyB0aGVtIHRocmVlIHllYXJzLCB0aGF0IGF0IHRoZSBlbmQgdGhlcmVvZiB0aGV5IG1pZ2h0IHN0YW5kIGJlZm9yZSB0aGUga2luZy4KTm93IGFtb25nIHRoZXNlIHdlcmUgb2YgdGhlIGNoaWxkcmVuIG9mIEp1ZGFoLCBEYW5pZWwsIEhhbmFuaWFoLCBNaXNoYWVsLCBhbmQgQXphcmlhaDoKVW50byB3aG9tIHRoZSBwcmluY2Ugb2YgdGhlIGV1bnVjaHMgZ2F2ZSBuYW1lczogZm9yIGhlIGdhdmUgdW50byBEYW5pZWwgdGhlIG5hbWUgb2YgQmVsdGVzaGF6emFyOyBhbmQgdG8gSGFuYW5pYWgsIG9mIFNoYWRyYWNoOyBhbmQgdG8gTWlzaGFlbCwgb2YgTWVzaGFjaDsgYW5kIHRvIEF6YXJpYWgsIG9mIEFiZWRuZWdvLgpCdXQgRGFuaWVsIHB1cnBvc2VkIGluIGhpcyBoZWFydCB0aGF0IGhlIHdvdWxkIG5vdCBkZWZpbGUgaGltc2VsZiB3aXRoIHRoZSBwb3J0aW9uIG9mIHRoZSBraW5nJ3MgbWVhdCwgbm9yIHdpdGggdGhlIHdpbmUgd2hpY2ggaGUgZHJhbms6IHRoZXJlZm9yZSBoZSByZXF1ZXN0ZWQgb2YgdGhlIHByaW5jZSBvZiB0aGUgZXVudWNocyB0aGF0IGhlIG1pZ2h0IG5vdCBkZWZpbGUgaGltc2VsZi4KTm93IEdvZCBoYWQgYnJvdWdodCBEYW5pZWwgaW50byBmYXZvdXIgYW5kIHRlbmRlciBsb3ZlIHdpdGggdGhlIHByaW5jZSBvZiB0aGUgZXVudWNocy4KQW5kIHRoZSBwcmluY2Ugb2YgdGhlIGV1bnVjaHMgc2FpZCB1bnRvIERhbmllbCwgSSBmZWFyIG15IGxvcmQgdGhlIGtpbmcsIHdobyBoYXRoIGFwcG9pbnRlZCB5b3VyIG1lYXQgYW5kIHlvdXIgZHJpbms6IGZvciB3aHkgc2hvdWxkIGhlIHNlZSB5b3VyIGZhY2VzIHdvcnNlIGxpa2luZyB0aGFuIHRoZSBjaGlsZHJlbiB3aGljaCBhcmUgb2YgeW91ciBzb3J0PyB0aGVuIHNoYWxsIHllIG1ha2UgbWUgZW5kYW5nZXIgbXkgaGVhZCB0byB0aGUga2luZy4KVGhlbiBzYWlkIERhbmllbCB0byBNZWx6YXIsIHdob20gdGhlIHByaW5jZSBvZiB0aGUgZXVudWNocyBoYWQgc2V0IG92ZXIgRGFuaWVsLCBIYW5hbmlhaCwgTWlzaGFlbCwgYW5kIEF6YXJpYWgsClByb3ZlIHRoeSBzZXJ2YW50cywgSSBiZXNlZWNoIHRoZWUsIHRlbiBkYXlzOyBhbmQgbGV0IHRoZW0gZ2l2ZSB1cyBwdWxzZSB0byBlYXQsIGFuZCB3YXRlciB0byBkcmluay4KVGhlbiBsZXQgb3VyIGNvdW50ZW5hbmNlcyBiZSBsb29rZWQgdXBvbiBiZWZvcmUgdGhlZSwgYW5kIHRoZSBjb3VudGVuYW5jZSBvZiB0aGUgY2hpbGRyZW4gdGhhdCBlYXQgb2YgdGhlIHBvcnRpb24gb2YgdGhlIGtpbmcncyBtZWF0OiBhbmQgYXMgdGhvdSBzZWVzdCwgZGVhbCB3aXRoIHRoeSBzZXJ2YW50cy4KU28gaGUgY29uc2VudGVkIHRvIHRoZW0gaW4gdGhpcyBtYXR0ZXIsIGFuZCBwcm92ZWQgdGhlbSB0ZW4gZGF5cy4KQW5kIGF0IHRoZSBlbmQgb2YgdGVuIGRheXMgdGhlaXIgY291bnRlbmFuY2VzIGFwcGVhcmVkIGZhaXJlciBhbmQgZmF0dGVyIGluIGZsZXNoIHRoYW4gYWxsIHRoZSBjaGlsZHJlbiB3aGljaCBkaWQgZWF0IHRoZSBwb3J0aW9uIG9mIHRoZSBraW5nJ3MgbWVhdC4KVGh1cyBNZWx6YXIgdG9vayBhd2F5IHRoZSBwb3J0aW9uIG9mIHRoZWlyIG1lYXQsIGFuZCB0aGUgd2luZSB0aGF0IHRoZXkgc2hvdWxkIGRyaW5rOyBhbmQgZ2F2ZSB0aGVtIHB1bHNlLgpBcyBmb3IgdGhlc2UgZm91ciBjaGlsZHJlbiwgR29kIGdhdmUgdGhlbSBrbm93bGVkZ2UgYW5kIHNraWxsIGluIGFsbCBsZWFybmluZyBhbmQgd2lzZG9tOiBhbmQgRGFuaWVsIGhhZCB1bmRlcnN0YW5kaW5nIGluIGFsbCB2aXNpb25zIGFuZCBkcmVhbXMuCk5vdyBhdCB0aGUgZW5kIG9mIHRoZSBkYXlzIHRoYXQgdGhlIGtpbmcgaGFkIHNhaWQgaGUgc2hvdWxkIGJyaW5nIHRoZW0gaW4sIHRoZW4gdGhlIHByaW5jZSBvZiB0aGUgZXVudWNocyBicm91Z2h0IHRoZW0gaW4gYmVmb3JlIE5lYnVjaGFkbmV6emFyLgpBbmQgdGhlIGtpbmcgY29tbXVuZWQgd2l0aCB0aGVtOyBhbmQgYW1vbmcgdGhlbSBhbGwgd2FzIGZvdW5kIG5vbmUgbGlrZSBEYW5pZWwsIEhhbmFuaWFoLCBNaXNoYWVsLCBhbmQgQXphcmlhaDogdGhlcmVmb3JlIHN0b29kIHRoZXkgYmVmb3JlIHRoZSBraW5nLgpBbmQgaW4gYWxsIG1hdHRlcnMgb2Ygd2lzZG9tIGFuZCB1bmRlcnN0YW5kaW5nLCB0aGF0IHRoZSBraW5nIGVucXVpcmVkIG9mIHRoZW0sIGhlIGZvdW5kIHRoZW0gdGVuIHRpbWVzIGJldHRlciB0aGFuIGFsbCB0aGUgbWFnaWNpYW5zIGFuZCBhc3Ryb2xvZ2VycyB0aGF0IHdlcmUgaW4gYWxsIGhpcyByZWFsbS4KQW5kIERhbmllbCBjb250aW51ZWQgZXZlbiB1bnRvIHRoZSBmaXJzdCB5ZWFyIG9mIGtpbmcgQ3lydXMuCkFuZCBpbiB0aGUgc2Vjb25kIHllYXIgb2YgdGhlIHJlaWduIG9mIE5lYnVjaGFkbmV6emFyIE5lYnVjaGFkbmV6emFyIGRyZWFtZWQgZHJlYW1zLCB3aGVyZXdpdGggaGlzIHNwaXJpdCB3YXMgdHJvdWJsZWQsIGFuZCBoaXMgc2xlZXAgYnJha2UgZnJvbSBoaW0uClRoZW4gdGhlIGtpbmcgY29tbWFuZGVkIHRvIGNhbGwgdGhlIG1hZ2ljaWFucywgYW5kIHRoZSBhc3Ryb2xvZ2VycywgYW5kIHRoZSBzb3JjZXJlcnMsIGFuZCB0aGUgQ2hhbGRlYW5zLCBmb3IgdG8gc2hldyB0aGUga2luZyBoaXMgZHJlYW1zLiBTbyB0aGV5IGNhbWUgYW5kIHN0b29kIGJlZm9yZSB0aGUga2luZy4KQW5kIHRoZSBraW5nIHNhaWQgdW50byB0aGVtLCBJIGhhdmUgZHJlYW1lZCBhIGRyZWFtLCBhbmQgbXkgc3Bpcml0IHdhcyB0cm91YmxlZCB0byBrbm93IHRoZSBkcmVhbS4KVGhlbiBzcGFrZSB0aGUgQ2hhbGRlYW5zIHRvIHRoZSBraW5nIGluIFN5cmlhY2ssIE8ga2luZywgbGl2ZSBmb3IgZXZlcjogdGVsbCB0aHkgc2VydmFudHMgdGhlIGRyZWFtLCBhbmQgd2Ugd2lsbCBzaGV3IHRoZSBpbnRlcnByZXRhdGlvbi4KVGhlIGtpbmcgYW5zd2VyZWQgYW5kIHNhaWQgdG8gdGhlIENoYWxkZWFucywgVGhlIHRoaW5nIGlzIGdvbmUgZnJvbSBtZTogaWYgeWUgd2lsbCBub3QgbWFrZSBrbm93biB1bnRvIG1lIHRoZSBkcmVhbSwgd2l0aCB0aGUgaW50ZXJwcmV0YXRpb24gdGhlcmVvZiwgeWUgc2hhbGwgYmUgY3V0IGluIHBpZWNlcywgYW5kIHlvdXIgaG91c2VzIHNoYWxsIGJlIG1hZGUgYSBkdW5naGlsbC4KQnV0IGlmIHllIHNoZXcgdGhlIGRyZWFtLCBhbmQgdGhlIGludGVycHJldGF0aW9uIHRoZXJlb2YsIHllIHNoYWxsIHJlY2VpdmUgb2YgbWUgZ2lmdHMgYW5kIHJld2FyZHMgYW5kIGdyZWF0IGhvbm91cjogdGhlcmVmb3JlIHNoZXcgbWUgdGhlIGRyZWFtLCBhbmQgdGhlIGludGVycHJldGF0aW9uIHRoZXJlb2YuClRoZXkgYW5zd2VyZWQgYWdhaW4gYW5kIHNhaWQsIExldCB0aGUga2luZyB0ZWxsIGhpcyBzZXJ2YW50cyB0aGUgZHJlYW0sIGFuZCB3ZSB3aWxsIHNoZXcgdGhlIGludGVycHJldGF0aW9uIG9mIGl0LgpUaGUga2luZyBhbnN3ZXJlZCBhbmQgc2FpZCwgSSBrbm93IG9mIGNlcnRhaW50eSB0aGF0IHllIHdvdWxkIGdhaW4gdGhlIHRpbWUsIGJlY2F1c2UgeWUgc2VlIHRoZSB0aGluZyBpcyBnb25lIGZyb20gbWUuCkJ1dCBpZiB5ZSB3aWxsIG5vdCBtYWtlIGtub3duIHVudG8gbWUgdGhlIGRyZWFtLCB0aGVyZSBpcyBidXQgb25lIGRlY3JlZSBmb3IgeW91OiBmb3IgeWUgaGF2ZSBwcmVwYXJlZCBseWluZyBhbmQgY29ycnVwdCB3b3JkcyB0byBzcGVhayBiZWZvcmUgbWUsIHRpbGwgdGhlIHRpbWUgYmUgY2hhbmdlZDogdGhlcmVmb3JlIHRlbGwgbWUgdGhlIGRyZWFtLCBhbmQgSSBzaGFsbCBrbm93IHRoYXQgeWUgY2FuIHNoZXcgbWUgdGhlIGludGVycHJldGF0aW9uIHRoZXJlb2YuClRoZSBDaGFsZGVhbnMgYW5zd2VyZWQgYmVmb3JlIHRoZSBraW5nLCBhbmQgc2FpZCwgVGhlcmUgaXMgbm90IGEgbWFuIHVwb24gdGhlIGVhcnRoIHRoYXQgY2FuIHNoZXcgdGhlIGtpbmcncyBtYXR0ZXI6IHRoZXJlZm9yZSB0aGVyZSBpcyBubyBraW5nLCBsb3JkLCBub3IgcnVsZXIsIHRoYXQgYXNrZWQgc3VjaCB0aGluZ3MgYXQgYW55IG1hZ2ljaWFuLCBvciBhc3Ryb2xvZ2VyLCBvciBDaGFsZGVhbi4KQW5kIGl0IGlzIGEgcmFyZSB0aGluZyB0aGF0IHRoZSBraW5nIHJlcXVpcmV0aCwgYW5kIHRoZXJlIGlzIG5vbmUgb3RoZXIgdGhhdCBjYW4gc2hldyBpdCBiZWZvcmUgdGhlIGtpbmcsIGV4Y2VwdCB0aGUgZ29kcywgd2hvc2UgZHdlbGxpbmcgaXMgbm90IHdpdGggZmxlc2guCkZvciB0aGlzIGNhdXNlIHRoZSBraW5nIHdhcyBhbmdyeSBhbmQgdmVyeSBmdXJpb3VzLCBhbmQgY29tbWFuZGVkIHRvIGRlc3Ryb3kgYWxsIHRoZSB3aXNlIG1lbiBvZiBCYWJ5bG9uLgpBbmQgdGhlIGRlY3JlZSB3ZW50IGZvcnRoIHRoYXQgdGhlIHdpc2UgbWVuIHNob3VsZCBiZSBzbGFpbjsgYW5kIHRoZXkgc291Z2h0IERhbmllbCBhbmQgaGlzIGZlbGxvd3MgdG8gYmUgc2xhaW4uClRoZW4gRGFuaWVsIGFuc3dlcmVkIHdpdGggY291bnNlbCBhbmQgd2lzZG9tIHRvIEFyaW9jaCB0aGUgY2FwdGFpbiBvZiB0aGUga2luZydzIGd1YXJkLCB3aGljaCB3YXMgZ29uZSBmb3J0aCB0byBzbGF5IHRoZSB3aXNlIG1lbiBvZiBCYWJ5bG9uOgpIZSBhbnN3ZXJlZCBhbmQgc2FpZCB0byBBcmlvY2ggdGhlIGtpbmcncyBjYXB0YWluLCBXaHkgaXMgdGhlIGRlY3JlZSBzbyBoYXN0eSBmcm9tIHRoZSBraW5nPyBUaGVuIEFyaW9jaCBtYWRlIHRoZSB0aGluZyBrbm93biB0byBEYW5pZWwuClRoZW4gRGFuaWVsIHdlbnQgaW4sIGFuZCBkZXNpcmVkIG9mIHRoZSBraW5nIHRoYXQgaGUgd291bGQgZ2l2ZSBoaW0gdGltZSwgYW5kIHRoYXQgaGUgd291bGQgc2hldyB0aGUga2luZyB0aGUgaW50ZXJwcmV0YXRpb24uClRoZW4gRGFuaWVsIHdlbnQgdG8gaGlzIGhvdXNlLCBhbmQgbWFkZSB0aGUgdGhpbmcga25vd24gdG8gSGFuYW5pYWgsIE1pc2hhZWwsIGFuZCBBemFyaWFoLCBoaXMgY29tcGFuaW9uczoKVGhhdCB0aGV5IHdvdWxkIGRlc2lyZSBtZXJjaWVzIG9mIHRoZSBHb2Qgb2YgaGVhdmVuIGNvbmNlcm5pbmcgdGhpcyBzZWNyZXQ7IHRoYXQgRGFuaWVsIGFuZCBoaXMgZmVsbG93cyBzaG91bGQgbm90IHBlcmlzaCB3aXRoIHRoZSByZXN0IG9mIHRoZSB3aXNlIG1lbiBvZiBCYWJ5bG9uLgpUaGVuIHdhcyB0aGUgc2VjcmV0IHJldmVhbGVkIHVudG8gRGFuaWVsIGluIGEgbmlnaHQgdmlzaW9uLiBUaGVuIERhbmllbCBibGVzc2VkIHRoZSBHb2Qgb2YgaGVhdmVuLgpEYW5pZWwgYW5zd2VyZWQgYW5kIHNhaWQsIEJsZXNzZWQgYmUgdGhlIG5hbWUgb2YgR29kIGZvciBldmVyIGFuZCBldmVyOiBmb3Igd2lzZG9tIGFuZCBtaWdodCBhcmUgaGlzOgpBbmQgaGUgY2hhbmdldGggdGhlIHRpbWVzIGFuZCB0aGUgc2Vhc29uczogaGUgcmVtb3ZldGgga2luZ3MsIGFuZCBzZXR0ZXRoIHVwIGtpbmdzOiBoZSBnaXZldGggd2lzZG9tIHVudG8gdGhlIHdpc2UsIGFuZCBrbm93bGVkZ2UgdG8gdGhlbSB0aGF0IGtub3cgdW5kZXJzdGFuZGluZzoKSGUgcmV2ZWFsZXRoIHRoZSBkZWVwIGFuZCBzZWNyZXQgdGhpbmdzOiBoZSBrbm93ZXRoIHdoYXQgaXMgaW4gdGhlIGRhcmtuZXNzLCBhbmQgdGhlIGxpZ2h0IGR3ZWxsZXRoIHdpdGggaGltLgpJIHRoYW5rIHRoZWUsIGFuZCBwcmFpc2UgdGhlZSwgTyB0aG91IEdvZCBvZiBteSBmYXRoZXJzLCB3aG8gaGFzdCBnaXZlbiBtZSB3aXNkb20gYW5kIG1pZ2h0LCBhbmQgaGFzdCBtYWRlIGtub3duIHVudG8gbWUgbm93IHdoYXQgd2UgZGVzaXJlZCBvZiB0aGVlOiBmb3IgdGhvdSBoYXN0IG5vdyBtYWRlIGtub3duIHVudG8gdXMgdGhlIGtpbmcncyBtYXR0ZXIuClRoZXJlZm9yZSBEYW5pZWwgd2VudCBpbiB1bnRvIEFyaW9jaCwgd2hvbSB0aGUga2luZyBoYWQgb3JkYWluZWQgdG8gZGVzdHJveSB0aGUgd2lzZSBtZW4gb2YgQmFieWxvbjogaGUgd2VudCBhbmQgc2FpZCB0aHVzIHVudG8gaGltOyBEZXN0cm95IG5vdCB0aGUgd2lzZSBtZW4gb2YgQmFieWxvbjogYnJpbmcgbWUgaW4gYmVmb3JlIHRoZSBraW5nLCBhbmQgSSB3aWxsIHNoZXcgdW50byB0aGUga2luZyB0aGUgaW50ZXJwcmV0YXRpb24uClRoZW4gQXJpb2NoIGJyb3VnaHQgaW4gRGFuaWVsIGJlZm9yZSB0aGUga2luZyBpbiBoYXN0ZSwgYW5kIHNhaWQgdGh1cyB1bnRvIGhpbSwgSSBoYXZlIGZvdW5kIGEgbWFuIG9mIHRoZSBjYXB0aXZlcyBvZiBKdWRhaCwgdGhhdCB3aWxsIG1ha2Uga25vd24gdW50byB0aGUga2luZyB0aGUgaW50ZXJwcmV0YXRpb24uClRoZSBraW5nIGFuc3dlcmVkIGFuZCBzYWlkIHRvIERhbmllbCwgd2hvc2UgbmFtZSB3YXMgQmVsdGVzaGF6emFyLCBBcnQgdGhvdSBhYmxlIHRvIG1ha2Uga25vd24gdW50byBtZSB0aGUgZHJlYW0gd2hpY2ggSSBoYXZlIHNlZW4sIGFuZCB0aGUgaW50ZXJwcmV0YXRpb24gdGhlcmVvZj8KRGFuaWVsIGFuc3dlcmVkIGluIHRoZSBwcmVzZW5jZSBvZiB0aGUga2luZywgYW5kIHNhaWQsIFRoZSBzZWNyZXQgd2hpY2ggdGhlIGtpbmcgaGF0aCBkZW1hbmRlZCBjYW5ub3QgdGhlIHdpc2UgbWVuLCB0aGUgYXN0cm9sb2dlcnMsIHRoZSBtYWdpY2lhbnMsIHRoZSBzb290aHNheWVycywgc2hldyB1bnRvIHRoZSBraW5nOwpCdXQgdGhlcmUgaXMgYSBHb2QgaW4gaGVhdmVuIHRoYXQgcmV2ZWFsZXRoIHNlY3JldHMsIGFuZCBtYWtldGgga25vd24gdG8gdGhlIGtpbmcgTmVidWNoYWRuZXp6YXIgd2hhdCBzaGFsbCBiZSBpbiB0aGUgbGF0dGVyIGRheXMuIFRoeSBkcmVhbSwgYW5kIHRoZSB2aXNpb25zIG9mIHRoeSBoZWFkIHVwb24gdGh5IGJlZCwgYXJlIHRoZXNlOwpBcyBmb3IgdGhlZSwgTyBraW5nLCB0aHkgdGhvdWdodHMgY2FtZSBpbnRvIHRoeSBtaW5kIHVwb24gdGh5IGJlZCwgd2hhdCBzaG91bGQgY29tZSB0byBwYXNzIGhlcmVhZnRlcjogYW5kIGhlIHRoYXQgcmV2ZWFsZXRoIHNlY3JldHMgbWFrZXRoIGtub3duIHRvIHRoZWUgd2hhdCBzaGFsbCBjb21lIHRvIHBhc3MuCkJ1dCBhcyBmb3IgbWUsIHRoaXMgc2VjcmV0IGlzIG5vdCByZXZlYWxlZCB0byBtZSBmb3IgYW55IHdpc2RvbSB0aGF0IEkgaGF2ZSBtb3JlIHRoYW4gYW55IGxpdmluZywgYnV0IGZvciB0aGVpciBzYWtlcyB0aGF0IHNoYWxsIG1ha2Uga25vd24gdGhlIGludGVycHJldGF0aW9uIHRvIHRoZSBraW5nLCBhbmQgdGhhdCB0aG91IG1pZ2h0ZXN0IGtub3cgdGhlIHRob3VnaHRzIG9mIHRoeSBoZWFydC4KVGhvdSwgTyBraW5nLCBzYXdlc3QsIGFuZCBiZWhvbGQgYSBncmVhdCBpbWFnZS4gVGhpcyBncmVhdCBpbWFnZSwgd2hvc2UgYnJpZ2h0bmVzcyB3YXMgZXhjZWxsZW50LCBzdG9vZCBiZWZvcmUgdGhlZTsgYW5kIHRoZSBmb3JtIHRoZXJlb2Ygd2FzIHRlcnJpYmxlLgpUaGlzIGltYWdlJ3MgaGVhZCB3YXMgb2YgZmluZSBnb2xkLCBoaXMgYnJlYXN0IGFuZCBoaXMgYXJtcyBvZiBzaWx2ZXIsIGhpcyBiZWxseSBhbmQgaGlzIHRoaWdocyBvZiBicmFzcywKSGlzIGxlZ3Mgb2YgaXJvbiwgaGlzIGZlZXQgcGFydCBvZiBpcm9uIGFuZCBwYXJ0IG9mIGNsYXkuClRob3Ugc2F3ZXN0IHRpbGwgdGhhdCBhIHN0b25lIHdhcyBjdXQgb3V0IHdpdGhvdXQgaGFuZHMsIHdoaWNoIHNtb3RlIHRoZSBpbWFnZSB1cG9uIGhpcyBmZWV0IHRoYXQgd2VyZSBvZiBpcm9uIGFuZCBjbGF5LCBhbmQgYnJha2UgdGhlbSB0byBwaWVjZXMuClRoZW4gd2FzIHRoZSBpcm9uLCB0aGUgY2xheSwgdGhlIGJyYXNzLCB0aGUgc2lsdmVyLCBhbmQgdGhlIGdvbGQsIGJyb2tlbiB0byBwaWVjZXMgdG9nZXRoZXIsIGFuZCBiZWNhbWUgbGlrZSB0aGUgY2hhZmYgb2YgdGhlIHN1bW1lciB0aHJlc2hpbmdmbG9vcnM7IGFuZCB0aGUgd2luZCBjYXJyaWVkIHRoZW0gYXdheSwgdGhhdCBubyBwbGFjZSB3YXMgZm91bmQgZm9yIHRoZW06IGFuZCB0aGUgc3RvbmUgdGhhdCBzbW90ZSB0aGUgaW1hZ2UgYmVjYW1lIGEgZ3JlYXQgbW91bnRhaW4sIGFuZCBmaWxsZWQgdGhlIHdob2xlIGVhcnRoLgpUaGlzIGlzIHRoZSBkcmVhbTsgYW5kIHdlIHdpbGwgdGVsbCB0aGUgaW50ZXJwcmV0YXRpb24gdGhlcmVvZiBiZWZvcmUgdGhlIGtpbmcuClRob3UsIE8ga2luZywgYXJ0IGEga2luZyBvZiBraW5nczogZm9yIHRoZSBHb2Qgb2YgaGVhdmVuIGhhdGggZ2l2ZW4gdGhlZSBhIGtpbmdkb20sIHBvd2VyLCBhbmQgc3RyZW5ndGgsIGFuZCBnbG9yeS4KQW5kIHdoZXJlc29ldmVyIHRoZSBjaGlsZHJlbiBvZiBtZW4gZHdlbGwsIHRoZSBiZWFzdHMgb2YgdGhlIGZpZWxkIGFuZCB0aGUgZm93bHMgb2YgdGhlIGhlYXZlbiBoYXRoIGhlIGdpdmVuIGludG8gdGhpbmUgaGFuZCwgYW5kIGhhdGggbWFkZSB0aGVlIHJ1bGVyIG92ZXIgdGhlbSBhbGwuIFRob3UgYXJ0IHRoaXMgaGVhZCBvZiBnb2xkLgpBbmQgYWZ0ZXIgdGhlZSBzaGFsbCBhcmlzZSBhbm90aGVyIGtpbmdkb20gaW5mZXJpb3IgdG8gdGhlZSwgYW5kIGFub3RoZXIgdGhpcmQga2luZ2RvbSBvZiBicmFzcywgd2hpY2ggc2hhbGwgYmVhciBydWxlIG92ZXIgYWxsIHRoZSBlYXJ0aC4KQW5kIHRoZSBmb3VydGgga2luZ2RvbSBzaGFsbCBiZSBzdHJvbmcgYXMgaXJvbjogZm9yYXNtdWNoIGFzIGlyb24gYnJlYWtldGggaW4gcGllY2VzIGFuZCBzdWJkdWV0aCBhbGwgdGhpbmdzOiBhbmQgYXMgaXJvbiB0aGF0IGJyZWFrZXRoIGFsbCB0aGVzZSwgc2hhbGwgaXQgYnJlYWsgaW4gcGllY2VzIGFuZCBicnVpc2UuCkFuZCB3aGVyZWFzIHRob3Ugc2F3ZXN0IHRoZSBmZWV0IGFuZCB0b2VzLCBwYXJ0IG9mIHBvdHRlcnMnIGNsYXksIGFuZCBwYXJ0IG9mIGlyb24sIHRoZSBraW5nZG9tIHNoYWxsIGJlIGRpdmlkZWQ7IGJ1dCB0aGVyZSBzaGFsbCBiZSBpbiBpdCBvZiB0aGUgc3RyZW5ndGggb2YgdGhlIGlyb24sIGZvcmFzbXVjaCBhcyB0aG91IHNhd2VzdCB0aGUgaXJvbiBtaXhlZCB3aXRoIG1pcnkgY2xheS4KQW5kIGFzIHRoZSB0b2VzIG9mIHRoZSBmZWV0IHdlcmUgcGFydCBvZiBpcm9uLCBhbmQgcGFydCBvZiBjbGF5LCBzbyB0aGUga2luZ2RvbSBzaGFsbCBiZSBwYXJ0bHkgc3Ryb25nLCBhbmQgcGFydGx5IGJyb2tlbi4KQW5kIHdoZXJlYXMgdGhvdSBzYXdlc3QgaXJvbiBtaXhlZCB3aXRoIG1pcnkgY2xheSwgdGhleSBzaGFsbCBtaW5nbGUgdGhlbXNlbHZlcyB3aXRoIHRoZSBzZWVkIG9mIG1lbjogYnV0IHRoZXkgc2hhbGwgbm90IGNsZWF2ZSBvbmUgdG8gYW5vdGhlciwgZXZlbiBhcyBpcm9uIGlzIG5vdCBtaXhlZCB3aXRoIGNsYXkuCkFuZCBpbiB0aGUgZGF5cyBvZiB0aGVzZSBraW5ncyBzaGFsbCB0aGUgR29kIG9mIGhlYXZlbiBzZXQgdXAgYSBraW5nZG9tLCB3aGljaCBzaGFsbCBuZXZlciBiZSBkZXN0cm95ZWQ6IGFuZCB0aGUga2luZ2RvbSBzaGFsbCBub3QgYmUgbGVmdCB0byBvdGhlciBwZW9wbGUsIGJ1dCBpdCBzaGFsbCBicmVhayBpbiBwaWVjZXMgYW5kIGNvbnN1bWUgYWxsIHRoZXNlIGtpbmdkb21zLCBhbmQgaXQgc2hhbGwgc3RhbmQgZm9yIGV2ZXIuCkZvcmFzbXVjaCBhcyB0aG91IHNhd2VzdCB0aGF0IHRoZSBzdG9uZSB3YXMgY3V0IG91dCBvZiB0aGUgbW91bnRhaW4gd2l0aG91dCBoYW5kcywgYW5kIHRoYXQgaXQgYnJha2UgaW4gcGllY2VzIHRoZSBpcm9uLCB0aGUgYnJhc3MsIHRoZSBjbGF5LCB0aGUgc2lsdmVyLCBhbmQgdGhlIGdvbGQ7IHRoZSBncmVhdCBHb2QgaGF0aCBtYWRlIGtub3duIHRvIHRoZSBraW5nIHdoYXQgc2hhbGwgY29tZSB0byBwYXNzIGhlcmVhZnRlcjogYW5kIHRoZSBkcmVhbSBpcyBjZXJ0YWluLCBhbmQgdGhlIGludGVycHJldGF0aW9uIHRoZXJlb2Ygc3VyZS4KVGhlbiB0aGUga2luZyBOZWJ1Y2hhZG5lenphciBmZWxsIHVwb24gaGlzIGZhY2UsIGFuZCB3b3JzaGlwcGVkIERhbmllbCwgYW5kIGNvbW1hbmRlZCB0aGF0IHRoZXkgc2hvdWxkIG9mZmVyIGFuIG9ibGF0aW9uIGFuZCBzd2VldCBvZG91cnMgdW50byBoaW0uClRoZSBraW5nIGFuc3dlcmVkIHVudG8gRGFuaWVsLCBhbmQgc2FpZCwgT2YgYSB0cnV0aCBpdCBpcywgdGhhdCB5b3VyIEdvZCBpcyBhIEdvZCBvZiBnb2RzLCBhbmQgYSBMb3JkIG9mIGtpbmdzLCBhbmQgYSByZXZlYWxlciBvZiBzZWNyZXRzLCBzZWVpbmcgdGhvdSBjb3VsZGVzdCByZXZlYWwgdGhpcyBzZWNyZXQuClRoZW4gdGhlIGtpbmcgbWFkZSBEYW5pZWwgYSBncmVhdCBtYW4sIGFuZCBnYXZlIGhpbSBtYW55IGdyZWF0IGdpZnRzLCBhbmQgbWFkZSBoaW0gcnVsZXIgb3ZlciB0aGUgd2hvbGUgcHJvdmluY2Ugb2YgQmFieWxvbiwgYW5kIGNoaWVmIG9mIHRoZSBnb3Zlcm5vcnMgb3ZlciBhbGwgdGhlIHdpc2UgbWVuIG9mIEJhYnlsb24uClRoZW4gRGFuaWVsIHJlcXVlc3RlZCBvZiB0aGUga2luZywgYW5kIGhlIHNldCBTaGFkcmFjaCwgTWVzaGFjaCwgYW5kIEFiZWRuZWdvLCBvdmVyIHRoZSBhZmZhaXJzIG9mIHRoZSBwcm92aW5jZSBvZiBCYWJ5bG9uOiBidXQgRGFuaWVsIHNhdCBpbiB0aGUgZ2F0ZSBvZiB0aGUga2luZy4KTmVidWNoYWRuZXp6YXIgdGhlIGtpbmcgbWFkZSBhbiBpbWFnZSBvZiBnb2xkLCB3aG9zZSBoZWlnaHQgd2FzIHRocmVlc2NvcmUgY3ViaXRzLCBhbmQgdGhlIGJyZWFkdGggdGhlcmVvZiBzaXggY3ViaXRzOiBoZSBzZXQgaXQgdXAgaW4gdGhlIHBsYWluIG9mIER1cmEsIGluIHRoZSBwcm92aW5jZSBvZiBCYWJ5bG9uLgpUaGVuIE5lYnVjaGFkbmV6emFyIHRoZSBraW5nIHNlbnQgdG8gZ2F0aGVyIHRvZ2V0aGVyIHRoZSBwcmluY2VzLCB0aGUgZ292ZXJub3JzLCBhbmQgdGhlIGNhcHRhaW5zLCB0aGUganVkZ2VzLCB0aGUgdHJlYXN1cmVycywgdGhlIGNvdW5zZWxsb3JzLCB0aGUgc2hlcmlmZnMsIGFuZCBhbGwgdGhlIHJ1bGVycyBvZiB0aGUgcHJvdmluY2VzLCB0byBjb21lIHRvIHRoZSBkZWRpY2F0aW9uIG9mIHRoZSBpbWFnZSB3aGljaCBOZWJ1Y2hhZG5lenphciB0aGUga2luZyBoYWQgc2V0IHVwLgpUaGVuIHRoZSBwcmluY2VzLCB0aGUgZ292ZXJub3JzLCBhbmQgY2FwdGFpbnMsIHRoZSBqdWRnZXMsIHRoZSB0cmVhc3VyZXJzLCB0aGUgY291bnNlbGxvcnMsIHRoZSBzaGVyaWZmcywgYW5kIGFsbCB0aGUgcnVsZXJzIG9mIHRoZSBwcm92aW5jZXMsIHdlcmUgZ2F0aGVyZWQgdG9nZXRoZXIgdW50byB0aGUgZGVkaWNhdGlvbiBvZiB0aGUgaW1hZ2UgdGhhdCBOZWJ1Y2hhZG5lenphciB0aGUga2luZyBoYWQgc2V0IHVwOyBhbmQgdGhleSBzdG9vZCBiZWZvcmUgdGhlIGltYWdlIHRoYXQgTmVidWNoYWRuZXp6YXIgaGFkIHNldCB1cC4KVGhlbiBhbiBoZXJhbGQgY3JpZWQgYWxvdWQsIFRvIHlvdSBpdCBpcyBjb21tYW5kZWQsIE8gcGVvcGxlLCBuYXRpb25zLCBhbmQgbGFuZ3VhZ2VzLApUaGF0IGF0IHdoYXQgdGltZSB5ZSBoZWFyIHRoZSBzb3VuZCBvZiB0aGUgY29ybmV0LCBmbHV0ZSwgaGFycCwgc2Fja2J1dCwgcHNhbHRlcnksIGR1bGNpbWVyLCBhbmQgYWxsIGtpbmRzIG9mIG11c2ljaywgeWUgZmFsbCBkb3duIGFuZCB3b3JzaGlwIHRoZSBnb2xkZW4gaW1hZ2UgdGhhdCBOZWJ1Y2hhZG5lenphciB0aGUga2luZyBoYXRoIHNldCB1cDoKQW5kIHdob3NvIGZhbGxldGggbm90IGRvd24gYW5kIHdvcnNoaXBwZXRoIHNoYWxsIHRoZSBzYW1lIGhvdXIgYmUgY2FzdCBpbnRvIHRoZSBtaWRzdCBvZiBhIGJ1cm5pbmcgZmllcnkgZnVybmFjZS4KVGhlcmVmb3JlIGF0IHRoYXQgdGltZSwgd2hlbiBhbGwgdGhlIHBlb3BsZSBoZWFyZCB0aGUgc291bmQgb2YgdGhlIGNvcm5ldCwgZmx1dGUsIGhhcnAsIHNhY2tidXQsIHBzYWx0ZXJ5LCBhbmQgYWxsIGtpbmRzIG9mIG11c2ljaywgYWxsIHRoZSBwZW9wbGUsIHRoZSBuYXRpb25zLCBhbmQgdGhlIGxhbmd1YWdlcywgZmVsbCBkb3duIGFuZCB3b3JzaGlwcGVkIHRoZSBnb2xkZW4gaW1hZ2UgdGhhdCBOZWJ1Y2hhZG5lenphciB0aGUga2luZyBoYWQgc2V0IHVwLgpXaGVyZWZvcmUgYXQgdGhhdCB0aW1lIGNlcnRhaW4gQ2hhbGRlYW5zIGNhbWUgbmVhciwgYW5kIGFjY3VzZWQgdGhlIEpld3MuClRoZXkgc3Bha2UgYW5kIHNhaWQgdG8gdGhlIGtpbmcgTmVidWNoYWRuZXp6YXIsIE8ga2luZywgbGl2ZSBmb3IgZXZlci4KVGhvdSwgTyBraW5nLCBoYXN0IG1hZGUgYSBkZWNyZWUsIHRoYXQgZXZlcnkgbWFuIHRoYXQgc2hhbGwgaGVhciB0aGUgc291bmQgb2YgdGhlIGNvcm5ldCwgZmx1dGUsIGhhcnAsIHNhY2tidXQsIHBzYWx0ZXJ5LCBhbmQgZHVsY2ltZXIsIGFuZCBhbGwga2luZHMgb2YgbXVzaWNrLCBzaGFsbCBmYWxsIGRvd24gYW5kIHdvcnNoaXAgdGhlIGdvbGRlbiBpbWFnZToKQW5kIHdob3NvIGZhbGxldGggbm90IGRvd24gYW5kIHdvcnNoaXBwZXRoLCB0aGF0IGhlIHNob3VsZCBiZSBjYXN0IGludG8gdGhlIG1pZHN0IG9mIGEgYnVybmluZyBmaWVyeSBmdXJuYWNlLgpUaGVyZSBhcmUgY2VydGFpbiBKZXdzIHdob20gdGhvdSBoYXN0IHNldCBvdmVyIHRoZSBhZmZhaXJzIG9mIHRoZSBwcm92aW5jZSBvZiBCYWJ5bG9uLCBTaGFkcmFjaCwgTWVzaGFjaCwgYW5kIEFiZWRuZWdvOyB0aGVzZSBtZW4sIE8ga2luZywgaGF2ZSBub3QgcmVnYXJkZWQgdGhlZTogdGhleSBzZXJ2ZSBub3QgdGh5IGdvZHMsIG5vciB3b3JzaGlwIHRoZSBnb2xkZW4gaW1hZ2Ugd2hpY2ggdGhvdSBoYXN0IHNldCB1cC4KVGhlbiBOZWJ1Y2hhZG5lenphciBpbiBoaXMgcmFnZSBhbmQgZnVyeSBjb21tYW5kZWQgdG8gYnJpbmcgU2hhZHJhY2gsIE1lc2hhY2gsIGFuZCBBYmVkbmVnby4gVGhlbiB0aGV5IGJyb3VnaHQgdGhlc2UgbWVuIGJlZm9yZSB0aGUga2luZy4KTmVidWNoYWRuZXp6YXIgc3Bha2UgYW5kIHNhaWQgdW50byB0aGVtLCBJcyBpdCB0cnVlLCBPIFNoYWRyYWNoLCBNZXNoYWNoLCBhbmQgQWJlZG5lZ28sIGRvIG5vdCB5ZSBzZXJ2ZSBteSBnb2RzLCBub3Igd29yc2hpcCB0aGUgZ29sZGVuIGltYWdlIHdoaWNoIEkgaGF2ZSBzZXQgdXA/Ck5vdyBpZiB5ZSBiZSByZWFkeSB0aGF0IGF0IHdoYXQgdGltZSB5ZSBoZWFyIHRoZSBzb3VuZCBvZiB0aGUgY29ybmV0LCBmbHV0ZSwgaGFycCwgc2Fja2J1dCwgcHNhbHRlcnksIGFuZCBkdWxjaW1lciwgYW5kIGFsbCBraW5kcyBvZiBtdXNpY2ssIHllIGZhbGwgZG93biBhbmQgd29yc2hpcCB0aGUgaW1hZ2Ugd2hpY2ggSSBoYXZlIG1hZGU7IHdlbGw6IGJ1dCBpZiB5ZSB3b3JzaGlwIG5vdCwgeWUgc2hhbGwgYmUgY2FzdCB0aGUgc2FtZSBob3VyIGludG8gdGhlIG1pZHN0IG9mIGEgYnVybmluZyBmaWVyeSBmdXJuYWNlOyBhbmQgd2hvIGlzIHRoYXQgR29kIHRoYXQgc2hhbGwgZGVsaXZlciB5b3Ugb3V0IG9mIG15IGhhbmRzPwpTaGFkcmFjaCwgTWVzaGFjaCwgYW5kIEFiZWRuZWdvLCBhbnN3ZXJlZCBhbmQgc2FpZCB0byB0aGUga2luZywgTyBOZWJ1Y2hhZG5lenphciwgd2UgYXJlIG5vdCBjYXJlZnVsIHRvIGFuc3dlciB0aGVlIGluIHRoaXMgbWF0dGVyLgpJZiBpdCBiZSBzbywgb3VyIEdvZCB3aG9tIHdlIHNlcnZlIGlzIGFibGUgdG8gZGVsaXZlciB1cyBmcm9tIHRoZSBidXJuaW5nIGZpZXJ5IGZ1cm5hY2UsIGFuZCBoZSB3aWxsIGRlbGl2ZXIgdXMgb3V0IG9mIHRoaW5lIGhhbmQsIE8ga2luZy4KQnV0IGlmIG5vdCwgYmUgaXQga25vd24gdW50byB0aGVlLCBPIGtpbmcsIHRoYXQgd2Ugd2lsbCBub3Qgc2VydmUgdGh5IGdvZHMsIG5vciB3b3JzaGlwIHRoZSBnb2xkZW4gaW1hZ2Ugd2hpY2ggdGhvdSBoYXN0IHNldCB1cC4KVGhlbiB3YXMgTmVidWNoYWRuZXp6YXIgZnVsbCBvZiBmdXJ5LCBhbmQgdGhlIGZvcm0gb2YgaGlzIHZpc2FnZSB3YXMgY2hhbmdlZCBhZ2FpbnN0IFNoYWRyYWNoLCBNZXNoYWNoLCBhbmQgQWJlZG5lZ286IHRoZXJlZm9yZSBoZSBzcGFrZSwgYW5kIGNvbW1hbmRlZCB0aGF0IHRoZXkgc2hvdWxkIGhlYXQgdGhlIGZ1cm5hY2Ugb25lIHNldmVuIHRpbWVzIG1vcmUgdGhhbiBpdCB3YXMgd29udCB0byBiZSBoZWF0ZWQuCkFuZCBoZSBjb21tYW5kZWQgdGhlIG1vc3QgbWlnaHR5IG1lbiB0aGF0IHdlcmUgaW4gaGlzIGFybXkgdG8gYmluZCBTaGFkcmFjaCwgTWVzaGFjaCwgYW5kIEFiZWRuZWdvLCBhbmQgdG8gY2FzdCB0aGVtIGludG8gdGhlIGJ1cm5pbmcgZmllcnkgZnVybmFjZS4KVGhlbiB0aGVzZSBtZW4gd2VyZSBib3VuZCBpbiB0aGVpciBjb2F0cywgdGhlaXIgaG9zZW4sIGFuZCB0aGVpciBoYXRzLCBhbmQgdGhlaXIgb3RoZXIgZ2FybWVudHMsIGFuZCB3ZXJlIGNhc3QgaW50byB0aGUgbWlkc3Qgb2YgdGhlIGJ1cm5pbmcgZmllcnkgZnVybmFjZS4KVGhlcmVmb3JlIGJlY2F1c2UgdGhlIGtpbmcncyBjb21tYW5kbWVudCB3YXMgdXJnZW50LCBhbmQgdGhlIGZ1cm5hY2UgZXhjZWVkaW5nIGhvdCwgdGhlIGZsYW1lcyBvZiB0aGUgZmlyZSBzbGV3IHRob3NlIG1lbiB0aGF0IHRvb2sgdXAgU2hhZHJhY2gsIE1lc2hhY2gsIGFuZCBBYmVkbmVnby4KQW5kIHRoZXNlIHRocmVlIG1lbiwgU2hhZHJhY2gsIE1lc2hhY2gsIGFuZCBBYmVkbmVnbywgZmVsbCBkb3duIGJvdW5kIGludG8gdGhlIG1pZHN0IG9mIHRoZSBidXJuaW5nIGZpZXJ5IGZ1cm5hY2UuClRoZW4gTmVidWNoYWRuZXp6YXIgdGhlIGtpbmcgd2FzIGFzdG9uaWVkLCBhbmQgcm9zZSB1cCBpbiBoYXN0ZSwgYW5kIHNwYWtlLCBhbmQgc2FpZCB1bnRvIGhpcyBjb3Vuc2VsbG9ycywgRGlkIG5vdCB3ZSBjYXN0IHRocmVlIG1lbiBib3VuZCBpbnRvIHRoZSBtaWRzdCBvZiB0aGUgZmlyZT8gVGhleSBhbnN3ZXJlZCBhbmQgc2FpZCB1bnRvIHRoZSBraW5nLCBUcnVlLCBPIGtpbmcuCkhlIGFuc3dlcmVkIGFuZCBzYWlkLCBMbywgSSBzZWUgZm91ciBtZW4gbG9vc2UsIHdhbGtpbmcgaW4gdGhlIG1pZHN0IG9mIHRoZSBmaXJlLCBhbmQgdGhleSBoYXZlIG5vIGh1cnQ7IGFuZCB0aGUgZm9ybSBvZiB0aGUgZm91cnRoIGlzIGxpa2UgdGhlIFNvbiBvZiBHb2QuClRoZW4gTmVidWNoYWRuZXp6YXIgY2FtZSBuZWFyIHRvIHRoZSBtb3V0aCBvZiB0aGUgYnVybmluZyBmaWVyeSBmdXJuYWNlLCBhbmQgc3Bha2UsIGFuZCBzYWlkLCBTaGFkcmFjaCwgTWVzaGFjaCwgYW5kIEFiZWRuZWdvLCB5ZSBzZXJ2YW50cyBvZiB0aGUgbW9zdCBoaWdoIEdvZCwgY29tZSBmb3J0aCwgYW5kIGNvbWUgaGl0aGVyLiBUaGVuIFNoYWRyYWNoLCBNZXNoYWNoLCBhbmQgQWJlZG5lZ28sIGNhbWUgZm9ydGggb2YgdGhlIG1pZHN0IG9mIHRoZSBmaXJlLgpBbmQgdGhlIHByaW5jZXMsIGdvdmVybm9ycywgYW5kIGNhcHRhaW5zLCBhbmQgdGhlIGtpbmcncyBjb3Vuc2VsbG9ycywgYmVpbmcgZ2F0aGVyZWQgdG9nZXRoZXIsIHNhdyB0aGVzZSBtZW4sIHVwb24gd2hvc2UgYm9kaWVzIHRoZSBmaXJlIGhhZCBubyBwb3dlciwgbm9yIHdhcyBhbiBoYWlyIG9mIHRoZWlyIGhlYWQgc2luZ2VkLCBuZWl0aGVyIHdlcmUgdGhlaXIgY29hdHMgY2hhbmdlZCwgbm9yIHRoZSBzbWVsbCBvZiBmaXJlIGhhZCBwYXNzZWQgb24gdGhlbS4KVGhlbiBOZWJ1Y2hhZG5lenphciBzcGFrZSwgYW5kIHNhaWQsIEJsZXNzZWQgYmUgdGhlIEdvZCBvZiBTaGFkcmFjaCwgTWVzaGFjaCwgYW5kIEFiZWRuZWdvLCB3aG8gaGF0aCBzZW50IGhpcyBhbmdlbCwgYW5kIGRlbGl2ZXJlZCBoaXMgc2VydmFudHMgdGhhdCB0cnVzdGVkIGluIGhpbSwgYW5kIGhhdmUgY2hhbmdlZCB0aGUga2luZydzIHdvcmQsIGFuZCB5aWVsZGVkIHRoZWlyIGJvZGllcywgdGhhdCB0aGV5IG1pZ2h0IG5vdCBzZXJ2ZSBub3Igd29yc2hpcCBhbnkgZ29kLCBleGNlcHQgdGhlaXIgb3duIEdvZC4KVGhlcmVmb3JlIEkgbWFrZSBhIGRlY3JlZSwgVGhhdCBldmVyeSBwZW9wbGUsIG5hdGlvbiwgYW5kIGxhbmd1YWdlLCB3aGljaCBzcGVhayBhbnkgdGhpbmcgYW1pc3MgYWdhaW5zdCB0aGUgR29kIG9mIFNoYWRyYWNoLCBNZXNoYWNoLCBhbmQgQWJlZG5lZ28sIHNoYWxsIGJlIGN1dCBpbiBwaWVjZXMsIGFuZCB0aGVpciBob3VzZXMgc2hhbGwgYmUgbWFkZSBhIGR1bmdoaWxsOiBiZWNhdXNlIHRoZXJlIGlzIG5vIG90aGVyIEdvZCB0aGF0IGNhbiBkZWxpdmVyIGFmdGVyIHRoaXMgc29ydC4KVGhlbiB0aGUga2luZyBwcm9tb3RlZCBTaGFkcmFjaCwgTWVzaGFjaCwgYW5kIEFiZWRuZWdvLCBpbiB0aGUgcHJvdmluY2Ugb2YgQmFieWxvbi4KTmVidWNoYWRuZXp6YXIgdGhlIGtpbmcsIHVudG8gYWxsIHBlb3BsZSwgbmF0aW9ucywgYW5kIGxhbmd1YWdlcywgdGhhdCBkd2VsbCBpbiBhbGwgdGhlIGVhcnRoOyBQZWFjZSBiZSBtdWx0aXBsaWVkIHVudG8geW91LgpJIHRob3VnaHQgaXQgZ29vZCB0byBzaGV3IHRoZSBzaWducyBhbmQgd29uZGVycyB0aGF0IHRoZSBoaWdoIEdvZCBoYXRoIHdyb3VnaHQgdG93YXJkIG1lLgpIb3cgZ3JlYXQgYXJlIGhpcyBzaWducyEgYW5kIGhvdyBtaWdodHkgYXJlIGhpcyB3b25kZXJzISBoaXMga2luZ2RvbSBpcyBhbiBldmVybGFzdGluZyBraW5nZG9tLCBhbmQgaGlzIGRvbWluaW9uIGlzIGZyb20gZ2VuZXJhdGlvbiB0byBnZW5lcmF0aW9uLgpJIE5lYnVjaGFkbmV6emFyIHdhcyBhdCByZXN0IGluIG1pbmUgaG91c2UsIGFuZCBmbG91cmlzaGluZyBpbiBteSBwYWxhY2U6Ckkgc2F3IGEgZHJlYW0gd2hpY2ggbWFkZSBtZSBhZnJhaWQsIGFuZCB0aGUgdGhvdWdodHMgdXBvbiBteSBiZWQgYW5kIHRoZSB2aXNpb25zIG9mIG15IGhlYWQgdHJvdWJsZWQgbWUuClRoZXJlZm9yZSBtYWRlIEkgYSBkZWNyZWUgdG8gYnJpbmcgaW4gYWxsIHRoZSB3aXNlIG1lbiBvZiBCYWJ5bG9uIGJlZm9yZSBtZSwgdGhhdCB0aGV5IG1pZ2h0IG1ha2Uga25vd24gdW50byBtZSB0aGUgaW50ZXJwcmV0YXRpb24gb2YgdGhlIGRyZWFtLgpUaGVuIGNhbWUgaW4gdGhlIG1hZ2ljaWFucywgdGhlIGFzdHJvbG9nZXJzLCB0aGUgQ2hhbGRlYW5zLCBhbmQgdGhlIHNvb3Roc2F5ZXJzOiBhbmQgSSB0b2xkIHRoZSBkcmVhbSBiZWZvcmUgdGhlbTsgYnV0IHRoZXkgZGlkIG5vdCBtYWtlIGtub3duIHVudG8gbWUgdGhlIGludGVycHJldGF0aW9uIHRoZXJlb2YuCkJ1dCBhdCB0aGUgbGFzdCBEYW5pZWwgY2FtZSBpbiBiZWZvcmUgbWUsIHdob3NlIG5hbWUgd2FzIEJlbHRlc2hhenphciwgYWNjb3JkaW5nIHRvIHRoZSBuYW1lIG9mIG15IEdvZCwgYW5kIGluIHdob20gaXMgdGhlIHNwaXJpdCBvZiB0aGUgaG9seSBnb2RzOiBhbmQgYmVmb3JlIGhpbSBJIHRvbGQgdGhlIGRyZWFtLCBzYXlpbmcsCk8gQmVsdGVzaGF6emFyLCBtYXN0ZXIgb2YgdGhlIG1hZ2ljaWFucywgYmVjYXVzZSBJIGtub3cgdGhhdCB0aGUgc3Bpcml0IG9mIHRoZSBob2x5IGdvZHMgaXMgaW4gdGhlZSwgYW5kIG5vIHNlY3JldCB0cm91YmxldGggdGhlZSwgdGVsbCBtZSB0aGUgdmlzaW9ucyBvZiBteSBkcmVhbSB0aGF0IEkgaGF2ZSBzZWVuLCBhbmQgdGhlIGludGVycHJldGF0aW9uIHRoZXJlb2YuClRodXMgd2VyZSB0aGUgdmlzaW9ucyBvZiBtaW5lIGhlYWQgaW4gbXkgYmVkOyBJIHNhdywgYW5kIGJlaG9sZCBhIHRyZWUgaW4gdGhlIG1pZHN0IG9mIHRoZSBlYXJ0aCwgYW5kIHRoZSBoZWlnaHQgdGhlcmVvZiB3YXMgZ3JlYXQuClRoZSB0cmVlIGdyZXcsIGFuZCB3YXMgc3Ryb25nLCBhbmQgdGhlIGhlaWdodCB0aGVyZW9mIHJlYWNoZWQgdW50byBoZWF2ZW4sIGFuZCB0aGUgc2lnaHQgdGhlcmVvZiB0byB0aGUgZW5kIG9mIGFsbCB0aGUgZWFydGg6ClRoZSBsZWF2ZXMgdGhlcmVvZiB3ZXJlIGZhaXIsIGFuZCB0aGUgZnJ1aXQgdGhlcmVvZiBtdWNoLCBhbmQgaW4gaXQgd2FzIG1lYXQgZm9yIGFsbDogdGhlIGJlYXN0cyBvZiB0aGUgZmllbGQgaGFkIHNoYWRvdyB1bmRlciBpdCwgYW5kIHRoZSBmb3dscyBvZiB0aGUgaGVhdmVuIGR3ZWx0IGluIHRoZSBib3VnaHMgdGhlcmVvZiwgYW5kIGFsbCBmbGVzaCB3YXMgZmVkIG9mIGl0LgpJIHNhdyBpbiB0aGUgdmlzaW9ucyBvZiBteSBoZWFkIHVwb24gbXkgYmVkLCBhbmQsIGJlaG9sZCwgYSB3YXRjaGVyIGFuZCBhbiBob2x5IG9uZSBjYW1lIGRvd24gZnJvbSBoZWF2ZW47CkhlIGNyaWVkIGFsb3VkLCBhbmQgc2FpZCB0aHVzLCBIZXcgZG93biB0aGUgdHJlZSwgYW5kIGN1dCBvZmYgaGlzIGJyYW5jaGVzLCBzaGFrZSBvZmYgaGlzIGxlYXZlcywgYW5kIHNjYXR0ZXIgaGlzIGZydWl0OiBsZXQgdGhlIGJlYXN0cyBnZXQgYXdheSBmcm9tIHVuZGVyIGl0LCBhbmQgdGhlIGZvd2xzIGZyb20gaGlzIGJyYW5jaGVzOgpOZXZlcnRoZWxlc3MgbGVhdmUgdGhlIHN0dW1wIG9mIGhpcyByb290cyBpbiB0aGUgZWFydGgsIGV2ZW4gd2l0aCBhIGJhbmQgb2YgaXJvbiBhbmQgYnJhc3MsIGluIHRoZSB0ZW5kZXIgZ3Jhc3Mgb2YgdGhlIGZpZWxkOyBhbmQgbGV0IGl0IGJlIHdldCB3aXRoIHRoZSBkZXcgb2YgaGVhdmVuLCBhbmQgbGV0IGhpcyBwb3J0aW9uIGJlIHdpdGggdGhlIGJlYXN0cyBpbiB0aGUgZ3Jhc3Mgb2YgdGhlIGVhcnRoOgpMZXQgaGlzIGhlYXJ0IGJlIGNoYW5nZWQgZnJvbSBtYW4ncywgYW5kIGxldCBhIGJlYXN0J3MgaGVhcnQgYmUgZ2l2ZW4gdW50byBoaW07IGFuZCBsZXQgc2V2ZW4gdGltZXMgcGFzcyBvdmVyIGhpbS4KVGhpcyBtYXR0ZXIgaXMgYnkgdGhlIGRlY3JlZSBvZiB0aGUgd2F0Y2hlcnMsIGFuZCB0aGUgZGVtYW5kIGJ5IHRoZSB3b3JkIG9mIHRoZSBob2x5IG9uZXM6IHRvIHRoZSBpbnRlbnQgdGhhdCB0aGUgbGl2aW5nIG1heSBrbm93IHRoYXQgdGhlIG1vc3QgSGlnaCBydWxldGggaW4gdGhlIGtpbmdkb20gb2YgbWVuLCBhbmQgZ2l2ZXRoIGl0IHRvIHdob21zb2V2ZXIgaGUgd2lsbCwgYW5kIHNldHRldGggdXAgb3ZlciBpdCB0aGUgYmFzZXN0IG9mIG1lbi4KVGhpcyBkcmVhbSBJIGtpbmcgTmVidWNoYWRuZXp6YXIgaGF2ZSBzZWVuLiBOb3cgdGhvdSwgTyBCZWx0ZXNoYXp6YXIsIGRlY2xhcmUgdGhlIGludGVycHJldGF0aW9uIHRoZXJlb2YsIGZvcmFzbXVjaCBhcyBhbGwgdGhlIHdpc2UgbWVuIG9mIG15IGtpbmdkb20gYXJlIG5vdCBhYmxlIHRvIG1ha2Uga25vd24gdW50byBtZSB0aGUgaW50ZXJwcmV0YXRpb246IGJ1dCB0aG91IGFydCBhYmxlOyBmb3IgdGhlIHNwaXJpdCBvZiB0aGUgaG9seSBnb2RzIGlzIGluIHRoZWUuClRoZW4gRGFuaWVsLCB3aG9zZSBuYW1lIHdhcyBCZWx0ZXNoYXp6YXIsIHdhcyBhc3RvbmllZCBmb3Igb25lIGhvdXIsIGFuZCBoaXMgdGhvdWdodHMgdHJvdWJsZWQgaGltLiBUaGUga2luZyBzcGFrZSwgYW5kIHNhaWQsIEJlbHRlc2hhenphciwgbGV0IG5vdCB0aGUgZHJlYW0sIG9yIHRoZSBpbnRlcnByZXRhdGlvbiB0aGVyZW9mLCB0cm91YmxlIHRoZWUuIEJlbHRlc2hhenphciBhbnN3ZXJlZCBhbmQgc2FpZCwgTXkgbG9yZCwgdGhlIGRyZWFtIGJlIHRvIHRoZW0gdGhhdCBoYXRlIHRoZWUsIGFuZCB0aGUgaW50ZXJwcmV0YXRpb24gdGhlcmVvZiB0byB0aGluZSBlbmVtaWVzLgpUaGUgdHJlZSB0aGF0IHRob3Ugc2F3ZXN0LCB3aGljaCBncmV3LCBhbmQgd2FzIHN0cm9uZywgd2hvc2UgaGVpZ2h0IHJlYWNoZWQgdW50byB0aGUgaGVhdmVuLCBhbmQgdGhlIHNpZ2h0IHRoZXJlb2YgdG8gYWxsIHRoZSBlYXJ0aDsKV2hvc2UgbGVhdmVzIHdlcmUgZmFpciwgYW5kIHRoZSBmcnVpdCB0aGVyZW9mIG11Y2gsIGFuZCBpbiBpdCB3YXMgbWVhdCBmb3IgYWxsOyB1bmRlciB3aGljaCB0aGUgYmVhc3RzIG9mIHRoZSBmaWVsZCBkd2VsdCwgYW5kIHVwb24gd2hvc2UgYnJhbmNoZXMgdGhlIGZvd2xzIG9mIHRoZSBoZWF2ZW4gaGFkIHRoZWlyIGhhYml0YXRpb246Ckl0IGlzIHRob3UsIE8ga2luZywgdGhhdCBhcnQgZ3Jvd24gYW5kIGJlY29tZSBzdHJvbmc6IGZvciB0aHkgZ3JlYXRuZXNzIGlzIGdyb3duLCBhbmQgcmVhY2hldGggdW50byBoZWF2ZW4sIGFuZCB0aHkgZG9taW5pb24gdG8gdGhlIGVuZCBvZiB0aGUgZWFydGguCkFuZCB3aGVyZWFzIHRoZSBraW5nIHNhdyBhIHdhdGNoZXIgYW5kIGFuIGhvbHkgb25lIGNvbWluZyBkb3duIGZyb20gaGVhdmVuLCBhbmQgc2F5aW5nLCBIZXcgdGhlIHRyZWUgZG93biwgYW5kIGRlc3Ryb3kgaXQ7IHlldCBsZWF2ZSB0aGUgc3R1bXAgb2YgdGhlIHJvb3RzIHRoZXJlb2YgaW4gdGhlIGVhcnRoLCBldmVuIHdpdGggYSBiYW5kIG9mIGlyb24gYW5kIGJyYXNzLCBpbiB0aGUgdGVuZGVyIGdyYXNzIG9mIHRoZSBmaWVsZDsgYW5kIGxldCBpdCBiZSB3ZXQgd2l0aCB0aGUgZGV3IG9mIGhlYXZlbiwgYW5kIGxldCBoaXMgcG9ydGlvbiBiZSB3aXRoIHRoZSBiZWFzdHMgb2YgdGhlIGZpZWxkLCB0aWxsIHNldmVuIHRpbWVzIHBhc3Mgb3ZlciBoaW07ClRoaXMgaXMgdGhlIGludGVycHJldGF0aW9uLCBPIGtpbmcsIGFuZCB0aGlzIGlzIHRoZSBkZWNyZWUgb2YgdGhlIG1vc3QgSGlnaCwgd2hpY2ggaXMgY29tZSB1cG9uIG15IGxvcmQgdGhlIGtpbmc6ClRoYXQgdGhleSBzaGFsbCBkcml2ZSB0aGVlIGZyb20gbWVuLCBhbmQgdGh5IGR3ZWxsaW5nIHNoYWxsIGJlIHdpdGggdGhlIGJlYXN0cyBvZiB0aGUgZmllbGQsIGFuZCB0aGV5IHNoYWxsIG1ha2UgdGhlZSB0byBlYXQgZ3Jhc3MgYXMgb3hlbiwgYW5kIHRoZXkgc2hhbGwgd2V0IHRoZWUgd2l0aCB0aGUgZGV3IG9mIGhlYXZlbiwgYW5kIHNldmVuIHRpbWVzIHNoYWxsIHBhc3Mgb3ZlciB0aGVlLCB0aWxsIHRob3Uga25vdyB0aGF0IHRoZSBtb3N0IEhpZ2ggcnVsZXRoIGluIHRoZSBraW5nZG9tIG9mIG1lbiwgYW5kIGdpdmV0aCBpdCB0byB3aG9tc29ldmVyIGhlIHdpbGwuCkFuZCB3aGVyZWFzIHRoZXkgY29tbWFuZGVkIHRvIGxlYXZlIHRoZSBzdHVtcCBvZiB0aGUgdHJlZSByb290czsgdGh5IGtpbmdkb20gc2hhbGwgYmUgc3VyZSB1bnRvIHRoZWUsIGFmdGVyIHRoYXQgdGhvdSBzaGFsdCBoYXZlIGtub3duIHRoYXQgdGhlIGhlYXZlbnMgZG8gcnVsZS4KV2hlcmVmb3JlLCBPIGtpbmcsIGxldCBteSBjb3Vuc2VsIGJlIGFjY2VwdGFibGUgdW50byB0aGVlLCBhbmQgYnJlYWsgb2ZmIHRoeSBzaW5zIGJ5IHJpZ2h0ZW91c25lc3MsIGFuZCB0aGluZSBpbmlxdWl0aWVzIGJ5IHNoZXdpbmcgbWVyY3kgdG8gdGhlIHBvb3I7IGlmIGl0IG1heSBiZSBhIGxlbmd0aGVuaW5nIG9mIHRoeSB0cmFucXVpbGxpdHkuCkFsbCB0aGlzIGNhbWUgdXBvbiB0aGUga2luZyBOZWJ1Y2hhZG5lenphci4KQXQgdGhlIGVuZCBvZiB0d2VsdmUgbW9udGhzIGhlIHdhbGtlZCBpbiB0aGUgcGFsYWNlIG9mIHRoZSBraW5nZG9tIG9mIEJhYnlsb24uClRoZSBraW5nIHNwYWtlLCBhbmQgc2FpZCwgSXMgbm90IHRoaXMgZ3JlYXQgQmFieWxvbiwgdGhhdCBJIGhhdmUgYnVpbHQgZm9yIHRoZSBob3VzZSBvZiB0aGUga2luZ2RvbSBieSB0aGUgbWlnaHQgb2YgbXkgcG93ZXIsIGFuZCBmb3IgdGhlIGhvbm91ciBvZiBteSBtYWplc3R5PwpXaGlsZSB0aGUgd29yZCB3YXMgaW4gdGhlIGtpbmcncyBtb3V0aCwgdGhlcmUgZmVsbCBhIHZvaWNlIGZyb20gaGVhdmVuLCBzYXlpbmcsIE8ga2luZyBOZWJ1Y2hhZG5lenphciwgdG8gdGhlZSBpdCBpcyBzcG9rZW47IFRoZSBraW5nZG9tIGlzIGRlcGFydGVkIGZyb20gdGhlZS4KQW5kIHRoZXkgc2hhbGwgZHJpdmUgdGhlZSBmcm9tIG1lbiwgYW5kIHRoeSBkd2VsbGluZyBzaGFsbCBiZSB3aXRoIHRoZSBiZWFzdHMgb2YgdGhlIGZpZWxkOiB0aGV5IHNoYWxsIG1ha2UgdGhlZSB0byBlYXQgZ3Jhc3MgYXMgb3hlbiwgYW5kIHNldmVuIHRpbWVzIHNoYWxsIHBhc3Mgb3ZlciB0aGVlLCB1bnRpbCB0aG91IGtub3cgdGhhdCB0aGUgbW9zdCBIaWdoIHJ1bGV0aCBpbiB0aGUga2luZ2RvbSBvZiBtZW4sIGFuZCBnaXZldGggaXQgdG8gd2hvbXNvZXZlciBoZSB3aWxsLgpUaGUgc2FtZSBob3VyIHdhcyB0aGUgdGhpbmcgZnVsZmlsbGVkIHVwb24gTmVidWNoYWRuZXp6YXI6IGFuZCBoZSB3YXMgZHJpdmVuIGZyb20gbWVuLCBhbmQgZGlkIGVhdCBncmFzcyBhcyBveGVuLCBhbmQgaGlzIGJvZHkgd2FzIHdldCB3aXRoIHRoZSBkZXcgb2YgaGVhdmVuLCB0aWxsIGhpcyBoYWlycyB3ZXJlIGdyb3duIGxpa2UgZWFnbGVzJyBmZWF0aGVycywgYW5kIGhpcyBuYWlscyBsaWtlIGJpcmRzJyBjbGF3cy4KQW5kIGF0IHRoZSBlbmQgb2YgdGhlIGRheXMgSSBOZWJ1Y2hhZG5lenphciBsaWZ0ZWQgdXAgbWluZSBleWVzIHVudG8gaGVhdmVuLCBhbmQgbWluZSB1bmRlcnN0YW5kaW5nIHJldHVybmVkIHVudG8gbWUsIGFuZCBJIGJsZXNzZWQgdGhlIG1vc3QgSGlnaCwgYW5kIEkgcHJhaXNlZCBhbmQgaG9ub3VyZWQgaGltIHRoYXQgbGl2ZXRoIGZvciBldmVyLCB3aG9zZSBkb21pbmlvbiBpcyBhbiBldmVybGFzdGluZyBkb21pbmlvbiwgYW5kIGhpcyBraW5nZG9tIGlzIGZyb20gZ2VuZXJhdGlvbiB0byBnZW5lcmF0aW9uOgpBbmQgYWxsIHRoZSBpbmhhYml0YW50cyBvZiB0aGUgZWFydGggYXJlIHJlcHV0ZWQgYXMgbm90aGluZzogYW5kIGhlIGRvZXRoIGFjY29yZGluZyB0byBoaXMgd2lsbCBpbiB0aGUgYXJteSBvZiBoZWF2ZW4sIGFuZCBhbW9uZyB0aGUgaW5oYWJpdGFudHMgb2YgdGhlIGVhcnRoOiBhbmQgbm9uZSBjYW4gc3RheSBoaXMgaGFuZCwgb3Igc2F5IHVudG8gaGltLCBXaGF0IGRvZXN0IHRob3U/CkF0IHRoZSBzYW1lIHRpbWUgbXkgcmVhc29uIHJldHVybmVkIHVudG8gbWU7IGFuZCBmb3IgdGhlIGdsb3J5IG9mIG15IGtpbmdkb20sIG1pbmUgaG9ub3VyIGFuZCBicmlnaHRuZXNzIHJldHVybmVkIHVudG8gbWU7IGFuZCBteSBjb3Vuc2VsbG9ycyBhbmQgbXkgbG9yZHMgc291Z2h0IHVudG8gbWU7IGFuZCBJIHdhcyBlc3RhYmxpc2hlZCBpbiBteSBraW5nZG9tLCBhbmQgZXhjZWxsZW50IG1hamVzdHkgd2FzIGFkZGVkIHVudG8gbWUuCk5vdyBJIE5lYnVjaGFkbmV6emFyIHByYWlzZSBhbmQgZXh0b2wgYW5kIGhvbm91ciB0aGUgS2luZyBvZiBoZWF2ZW4sIGFsbCB3aG9zZSB3b3JrcyBhcmUgdHJ1dGgsIGFuZCBoaXMgd2F5cyBqdWRnbWVudDogYW5kIHRob3NlIHRoYXQgd2FsayBpbiBwcmlkZSBoZSBpcyBhYmxlIHRvIGFiYXNlLgpCZWxzaGF6emFyIHRoZSBraW5nIG1hZGUgYSBncmVhdCBmZWFzdCB0byBhIHRob3VzYW5kIG9mIGhpcyBsb3JkcywgYW5kIGRyYW5rIHdpbmUgYmVmb3JlIHRoZSB0aG91c2FuZC4KQmVsc2hhenphciwgd2hpbGVzIGhlIHRhc3RlZCB0aGUgd2luZSwgY29tbWFuZGVkIHRvIGJyaW5nIHRoZSBnb2xkZW4gYW5kIHNpbHZlciB2ZXNzZWxzIHdoaWNoIGhpcyBmYXRoZXIgTmVidWNoYWRuZXp6YXIgaGFkIHRha2VuIG91dCBvZiB0aGUgdGVtcGxlIHdoaWNoIHdhcyBpbiBKZXJ1c2FsZW07IHRoYXQgdGhlIGtpbmcsIGFuZCBoaXMgcHJpbmNlcywgaGlzIHdpdmVzLCBhbmQgaGlzIGNvbmN1YmluZXMsIG1pZ2h0IGRyaW5rIHRoZXJlaW4uClRoZW4gdGhleSBicm91Z2h0IHRoZSBnb2xkZW4gdmVzc2VscyB0aGF0IHdlcmUgdGFrZW4gb3V0IG9mIHRoZSB0ZW1wbGUgb2YgdGhlIGhvdXNlIG9mIEdvZCB3aGljaCB3YXMgYXQgSmVydXNhbGVtOyBhbmQgdGhlIGtpbmcsIGFuZCBoaXMgcHJpbmNlcywgaGlzIHdpdmVzLCBhbmQgaGlzIGNvbmN1YmluZXMsIGRyYW5rIGluIHRoZW0uClRoZXkgZHJhbmsgd2luZSwgYW5kIHByYWlzZWQgdGhlIGdvZHMgb2YgZ29sZCwgYW5kIG9mIHNpbHZlciwgb2YgYnJhc3MsIG9mIGlyb24sIG9mIHdvb2QsIGFuZCBvZiBzdG9uZS4KSW4gdGhlIHNhbWUgaG91ciBjYW1lIGZvcnRoIGZpbmdlcnMgb2YgYSBtYW4ncyBoYW5kLCBhbmQgd3JvdGUgb3ZlciBhZ2FpbnN0IHRoZSBjYW5kbGVzdGljayB1cG9uIHRoZSBwbGFpc3RlciBvZiB0aGUgd2FsbCBvZiB0aGUga2luZydzIHBhbGFjZTogYW5kIHRoZSBraW5nIHNhdyB0aGUgcGFydCBvZiB0aGUgaGFuZCB0aGF0IHdyb3RlLgpUaGVuIHRoZSBraW5nJ3MgY291bnRlbmFuY2Ugd2FzIGNoYW5nZWQsIGFuZCBoaXMgdGhvdWdodHMgdHJvdWJsZWQgaGltLCBzbyB0aGF0IHRoZSBqb2ludHMgb2YgaGlzIGxvaW5zIHdlcmUgbG9vc2VkLCBhbmQgaGlzIGtuZWVzIHNtb3RlIG9uZSBhZ2FpbnN0IGFub3RoZXIuClRoZSBraW5nIGNyaWVkIGFsb3VkIHRvIGJyaW5nIGluIHRoZSBhc3Ryb2xvZ2VycywgdGhlIENoYWxkZWFucywgYW5kIHRoZSBzb290aHNheWVycy4gQW5kIHRoZSBraW5nIHNwYWtlLCBhbmQgc2FpZCB0byB0aGUgd2lzZSBtZW4gb2YgQmFieWxvbiwgV2hvc29ldmVyIHNoYWxsIHJlYWQgdGhpcyB3cml0aW5nLCBhbmQgc2hldyBtZSB0aGUgaW50ZXJwcmV0YXRpb24gdGhlcmVvZiwgc2hhbGwgYmUgY2xvdGhlZCB3aXRoIHNjYXJsZXQsIGFuZCBoYXZlIGEgY2hhaW4gb2YgZ29sZCBhYm91dCBoaXMgbmVjaywgYW5kIHNoYWxsIGJlIHRoZSB0aGlyZCBydWxlciBpbiB0aGUga2luZ2RvbS4KVGhlbiBjYW1lIGluIGFsbCB0aGUga2luZydzIHdpc2UgbWVuOiBidXQgdGhleSBjb3VsZCBub3QgcmVhZCB0aGUgd3JpdGluZywgbm9yIG1ha2Uga25vd24gdG8gdGhlIGtpbmcgdGhlIGludGVycHJldGF0aW9uIHRoZXJlb2YuClRoZW4gd2FzIGtpbmcgQmVsc2hhenphciBncmVhdGx5IHRyb3VibGVkLCBhbmQgaGlzIGNvdW50ZW5hbmNlIHdhcyBjaGFuZ2VkIGluIGhpbSwgYW5kIGhpcyBsb3JkcyB3ZXJlIGFzdG9uaWVkLgpOb3cgdGhlIHF1ZWVuIGJ5IHJlYXNvbiBvZiB0aGUgd29yZHMgb2YgdGhlIGtpbmcgYW5kIGhpcyBsb3JkcyBjYW1lIGludG8gdGhlIGJhbnF1ZXQgaG91c2U6IGFuZCB0aGUgcXVlZW4gc3Bha2UgYW5kIHNhaWQsIE8ga2luZywgbGl2ZSBmb3IgZXZlcjogbGV0IG5vdCB0aHkgdGhvdWdodHMgdHJvdWJsZSB0aGVlLCBub3IgbGV0IHRoeSBjb3VudGVuYW5jZSBiZSBjaGFuZ2VkOgpUaGVyZSBpcyBhIG1hbiBpbiB0aHkga2luZ2RvbSwgaW4gd2hvbSBpcyB0aGUgc3Bpcml0IG9mIHRoZSBob2x5IGdvZHM7IGFuZCBpbiB0aGUgZGF5cyBvZiB0aHkgZmF0aGVyIGxpZ2h0IGFuZCB1bmRlcnN0YW5kaW5nIGFuZCB3aXNkb20sIGxpa2UgdGhlIHdpc2RvbSBvZiB0aGUgZ29kcywgd2FzIGZvdW5kIGluIGhpbTsgd2hvbSB0aGUga2luZyBOZWJ1Y2hhZG5lenphciB0aHkgZmF0aGVyLCB0aGUga2luZywgSSBzYXksIHRoeSBmYXRoZXIsIG1hZGUgbWFzdGVyIG9mIHRoZSBtYWdpY2lhbnMsIGFzdHJvbG9nZXJzLCBDaGFsZGVhbnMsIGFuZCBzb290aHNheWVyczsKRm9yYXNtdWNoIGFzIGFuIGV4Y2VsbGVudCBzcGlyaXQsIGFuZCBrbm93bGVkZ2UsIGFuZCB1bmRlcnN0YW5kaW5nLCBpbnRlcnByZXRpbmcgb2YgZHJlYW1zLCBhbmQgc2hld2luZyBvZiBoYXJkIHNlbnRlbmNlcywgYW5kIGRpc3NvbHZpbmcgb2YgZG91YnRzLCB3ZXJlIGZvdW5kIGluIHRoZSBzYW1lIERhbmllbCwgd2hvbSB0aGUga2luZyBuYW1lZCBCZWx0ZXNoYXp6YXI6IG5vdyBsZXQgRGFuaWVsIGJlIGNhbGxlZCwgYW5kIGhlIHdpbGwgc2hldyB0aGUgaW50ZXJwcmV0YXRpb24uClRoZW4gd2FzIERhbmllbCBicm91Z2h0IGluIGJlZm9yZSB0aGUga2luZy4gQW5kIHRoZSBraW5nIHNwYWtlIGFuZCBzYWlkIHVudG8gRGFuaWVsLCBBcnQgdGhvdSB0aGF0IERhbmllbCwgd2hpY2ggYXJ0IG9mIHRoZSBjaGlsZHJlbiBvZiB0aGUgY2FwdGl2aXR5IG9mIEp1ZGFoLCB3aG9tIHRoZSBraW5nIG15IGZhdGhlciBicm91Z2h0IG91dCBvZiBKZXdyeT8KSSBoYXZlIGV2ZW4gaGVhcmQgb2YgdGhlZSwgdGhhdCB0aGUgc3Bpcml0IG9mIHRoZSBnb2RzIGlzIGluIHRoZWUsIGFuZCB0aGF0IGxpZ2h0IGFuZCB1bmRlcnN0YW5kaW5nIGFuZCBleGNlbGxlbnQgd2lzZG9tIGlzIGZvdW5kIGluIHRoZWUuCkFuZCBub3cgdGhlIHdpc2UgbWVuLCB0aGUgYXN0cm9sb2dlcnMsIGhhdmUgYmVlbiBicm91Z2h0IGluIGJlZm9yZSBtZSwgdGhhdCB0aGV5IHNob3VsZCByZWFkIHRoaXMgd3JpdGluZywgYW5kIG1ha2Uga25vd24gdW50byBtZSB0aGUgaW50ZXJwcmV0YXRpb24gdGhlcmVvZjogYnV0IHRoZXkgY291bGQgbm90IHNoZXcgdGhlIGludGVycHJldGF0aW9uIG9mIHRoZSB0aGluZzoKQW5kIEkgaGF2ZSBoZWFyZCBvZiB0aGVlLCB0aGF0IHRob3UgY2Fuc3QgbWFrZSBpbnRlcnByZXRhdGlvbnMsIGFuZCBkaXNzb2x2ZSBkb3VidHM6IG5vdyBpZiB0aG91IGNhbnN0IHJlYWQgdGhlIHdyaXRpbmcsIGFuZCBtYWtlIGtub3duIHRvIG1lIHRoZSBpbnRlcnByZXRhdGlvbiB0aGVyZW9mLCB0aG91IHNoYWx0IGJlIGNsb3RoZWQgd2l0aCBzY2FybGV0LCBhbmQgaGF2ZSBhIGNoYWluIG9mIGdvbGQgYWJvdXQgdGh5IG5lY2ssIGFuZCBzaGFsdCBiZSB0aGUgdGhpcmQgcnVsZXIgaW4gdGhlIGtpbmdkb20uClRoZW4gRGFuaWVsIGFuc3dlcmVkIGFuZCBzYWlkIGJlZm9yZSB0aGUga2luZywgTGV0IHRoeSBnaWZ0cyBiZSB0byB0aHlzZWxmLCBhbmQgZ2l2ZSB0aHkgcmV3YXJkcyB0byBhbm90aGVyOyB5ZXQgSSB3aWxsIHJlYWQgdGhlIHdyaXRpbmcgdW50byB0aGUga2luZywgYW5kIG1ha2Uga25vd24gdG8gaGltIHRoZSBpbnRlcnByZXRhdGlvbi4KTyB0aG91IGtpbmcsIHRoZSBtb3N0IGhpZ2ggR29kIGdhdmUgTmVidWNoYWRuZXp6YXIgdGh5IGZhdGhlciBhIGtpbmdkb20sIGFuZCBtYWplc3R5LCBhbmQgZ2xvcnksIGFuZCBob25vdXI6CkFuZCBmb3IgdGhlIG1hamVzdHkgdGhhdCBoZSBnYXZlIGhpbSwgYWxsIHBlb3BsZSwgbmF0aW9ucywgYW5kIGxhbmd1YWdlcywgdHJlbWJsZWQgYW5kIGZlYXJlZCBiZWZvcmUgaGltOiB3aG9tIGhlIHdvdWxkIGhlIHNsZXc7IGFuZCB3aG9tIGhlIHdvdWxkIGhlIGtlcHQgYWxpdmU7IGFuZCB3aG9tIGhlIHdvdWxkIGhlIHNldCB1cDsgYW5kIHdob20gaGUgd291bGQgaGUgcHV0IGRvd24uCkJ1dCB3aGVuIGhpcyBoZWFydCB3YXMgbGlmdGVkIHVwLCBhbmQgaGlzIG1pbmQgaGFyZGVuZWQgaW4gcHJpZGUsIGhlIHdhcyBkZXBvc2VkIGZyb20gaGlzIGtpbmdseSB0aHJvbmUsIGFuZCB0aGV5IHRvb2sgaGlzIGdsb3J5IGZyb20gaGltOgpBbmQgaGUgd2FzIGRyaXZlbiBmcm9tIHRoZSBzb25zIG9mIG1lbjsgYW5kIGhpcyBoZWFydCB3YXMgbWFkZSBsaWtlIHRoZSBiZWFzdHMsIGFuZCBoaXMgZHdlbGxpbmcgd2FzIHdpdGggdGhlIHdpbGQgYXNzZXM6IHRoZXkgZmVkIGhpbSB3aXRoIGdyYXNzIGxpa2Ugb3hlbiwgYW5kIGhpcyBib2R5IHdhcyB3ZXQgd2l0aCB0aGUgZGV3IG9mIGhlYXZlbjsgdGlsbCBoZSBrbmV3IHRoYXQgdGhlIG1vc3QgaGlnaCBHb2QgcnVsZWQgaW4gdGhlIGtpbmdkb20gb2YgbWVuLCBhbmQgdGhhdCBoZSBhcHBvaW50ZXRoIG92ZXIgaXQgd2hvbXNvZXZlciBoZSB3aWxsLgpBbmQgdGhvdSBoaXMgc29uLCBPIEJlbHNoYXp6YXIsIGhhc3Qgbm90IGh1bWJsZWQgdGhpbmUgaGVhcnQsIHRob3VnaCB0aG91IGtuZXdlc3QgYWxsIHRoaXM7CkJ1dCBoYXN0IGxpZnRlZCB1cCB0aHlzZWxmIGFnYWluc3QgdGhlIExvcmQgb2YgaGVhdmVuOyBhbmQgdGhleSBoYXZlIGJyb3VnaHQgdGhlIHZlc3NlbHMgb2YgaGlzIGhvdXNlIGJlZm9yZSB0aGVlLCBhbmQgdGhvdSwgYW5kIHRoeSBsb3JkcywgdGh5IHdpdmVzLCBhbmQgdGh5IGNvbmN1YmluZXMsIGhhdmUgZHJ1bmsgd2luZSBpbiB0aGVtOyBhbmQgdGhvdSBoYXN0IHByYWlzZWQgdGhlIGdvZHMgb2Ygc2lsdmVyLCBhbmQgZ29sZCwgb2YgYnJhc3MsIGlyb24sIHdvb2QsIGFuZCBzdG9uZSwgd2hpY2ggc2VlIG5vdCwgbm9yIGhlYXIsIG5vciBrbm93OiBhbmQgdGhlIEdvZCBpbiB3aG9zZSBoYW5kIHRoeSBicmVhdGggaXMsIGFuZCB3aG9zZSBhcmUgYWxsIHRoeSB3YXlzLCBoYXN0IHRob3Ugbm90IGdsb3JpZmllZDoKVGhlbiB3YXMgdGhlIHBhcnQgb2YgdGhlIGhhbmQgc2VudCBmcm9tIGhpbTsgYW5kIHRoaXMgd3JpdGluZyB3YXMgd3JpdHRlbi4KQW5kIHRoaXMgaXMgdGhlIHdyaXRpbmcgdGhhdCB3YXMgd3JpdHRlbiwgTUVORSwgTUVORSwgVEVLRUwsIFVQSEFSU0lOLgpUaGlzIGlzIHRoZSBpbnRlcnByZXRhdGlvbiBvZiB0aGUgdGhpbmc6IE1FTkU7IEdvZCBoYXRoIG51bWJlcmVkIHRoeSBraW5nZG9tLCBhbmQgZmluaXNoZWQgaXQuClRFS0VMOyBUaG91IGFydCB3ZWlnaGVkIGluIHRoZSBiYWxhbmNlcywgYW5kIGFydCBmb3VuZCB3YW50aW5nLgpQRVJFUzsgVGh5IGtpbmdkb20gaXMgZGl2aWRlZCwgYW5kIGdpdmVuIHRvIHRoZSBNZWRlcyBhbmQgUGVyc2lhbnMuClRoZW4gY29tbWFuZGVkIEJlbHNoYXp6YXIsIGFuZCB0aGV5IGNsb3RoZWQgRGFuaWVsIHdpdGggc2NhcmxldCwgYW5kIHB1dCBhIGNoYWluIG9mIGdvbGQgYWJvdXQgaGlzIG5lY2ssIGFuZCBtYWRlIGEgcHJvY2xhbWF0aW9uIGNvbmNlcm5pbmcgaGltLCB0aGF0IGhlIHNob3VsZCBiZSB0aGUgdGhpcmQgcnVsZXIgaW4gdGhlIGtpbmdkb20uCkluIHRoYXQgbmlnaHQgd2FzIEJlbHNoYXp6YXIgdGhlIGtpbmcgb2YgdGhlIENoYWxkZWFucyBzbGFpbi4KQW5kIERhcml1cyB0aGUgTWVkaWFuIHRvb2sgdGhlIGtpbmdkb20sIGJlaW5nIGFib3V0IHRocmVlc2NvcmUgYW5kIHR3byB5ZWFycyBvbGQuCkl0IHBsZWFzZWQgRGFyaXVzIHRvIHNldCBvdmVyIHRoZSBraW5nZG9tIGFuIGh1bmRyZWQgYW5kIHR3ZW50eSBwcmluY2VzLCB3aGljaCBzaG91bGQgYmUgb3ZlciB0aGUgd2hvbGUga2luZ2RvbTsKQW5kIG92ZXIgdGhlc2UgdGhyZWUgcHJlc2lkZW50czsgb2Ygd2hvbSBEYW5pZWwgd2FzIGZpcnN0OiB0aGF0IHRoZSBwcmluY2VzIG1pZ2h0IGdpdmUgYWNjb3VudHMgdW50byB0aGVtLCBhbmQgdGhlIGtpbmcgc2hvdWxkIGhhdmUgbm8gZGFtYWdlLgpUaGVuIHRoaXMgRGFuaWVsIHdhcyBwcmVmZXJyZWQgYWJvdmUgdGhlIHByZXNpZGVudHMgYW5kIHByaW5jZXMsIGJlY2F1c2UgYW4gZXhjZWxsZW50IHNwaXJpdCB3YXMgaW4gaGltOyBhbmQgdGhlIGtpbmcgdGhvdWdodCB0byBzZXQgaGltIG92ZXIgdGhlIHdob2xlIHJlYWxtLgpUaGVuIHRoZSBwcmVzaWRlbnRzIGFuZCBwcmluY2VzIHNvdWdodCB0byBmaW5kIG9jY2FzaW9uIGFnYWluc3QgRGFuaWVsIGNvbmNlcm5pbmcgdGhlIGtpbmdkb207IGJ1dCB0aGV5IGNvdWxkIGZpbmQgbm9uZSBvY2Nhc2lvbiBub3IgZmF1bHQ7IGZvcmFzbXVjaCBhcyBoZSB3YXMgZmFpdGhmdWwsIG5laXRoZXIgd2FzIHRoZXJlIGFueSBlcnJvciBvciBmYXVsdCBmb3VuZCBpbiBoaW0uClRoZW4gc2FpZCB0aGVzZSBtZW4sIFdlIHNoYWxsIG5vdCBmaW5kIGFueSBvY2Nhc2lvbiBhZ2FpbnN0IHRoaXMgRGFuaWVsLCBleGNlcHQgd2UgZmluZCBpdCBhZ2FpbnN0IGhpbSBjb25jZXJuaW5nIHRoZSBsYXcgb2YgaGlzIEdvZC4KVGhlbiB0aGVzZSBwcmVzaWRlbnRzIGFuZCBwcmluY2VzIGFzc2VtYmxlZCB0b2dldGhlciB0byB0aGUga2luZywgYW5kIHNhaWQgdGh1cyB1bnRvIGhpbSwgS2luZyBEYXJpdXMsIGxpdmUgZm9yIGV2ZXIuCkFsbCB0aGUgcHJlc2lkZW50cyBvZiB0aGUga2luZ2RvbSwgdGhlIGdvdmVybm9ycywgYW5kIHRoZSBwcmluY2VzLCB0aGUgY291bnNlbGxvcnMsIGFuZCB0aGUgY2FwdGFpbnMsIGhhdmUgY29uc3VsdGVkIHRvZ2V0aGVyIHRvIGVzdGFibGlzaCBhIHJveWFsIHN0YXR1dGUsIGFuZCB0byBtYWtlIGEgZmlybSBkZWNyZWUsIHRoYXQgd2hvc29ldmVyIHNoYWxsIGFzayBhIHBldGl0aW9uIG9mIGFueSBHb2Qgb3IgbWFuIGZvciB0aGlydHkgZGF5cywgc2F2ZSBvZiB0aGVlLCBPIGtpbmcsIGhlIHNoYWxsIGJlIGNhc3QgaW50byB0aGUgZGVuIG9mIGxpb25zLgpOb3csIE8ga2luZywgZXN0YWJsaXNoIHRoZSBkZWNyZWUsIGFuZCBzaWduIHRoZSB3cml0aW5nLCB0aGF0IGl0IGJlIG5vdCBjaGFuZ2VkLCBhY2NvcmRpbmcgdG8gdGhlIGxhdyBvZiB0aGUgTWVkZXMgYW5kIFBlcnNpYW5zLCB3aGljaCBhbHRlcmV0aCBub3QuCldoZXJlZm9yZSBraW5nIERhcml1cyBzaWduZWQgdGhlIHdyaXRpbmcgYW5kIHRoZSBkZWNyZWUuCk5vdyB3aGVuIERhbmllbCBrbmV3IHRoYXQgdGhlIHdyaXRpbmcgd2FzIHNpZ25lZCwgaGUgd2VudCBpbnRvIGhpcyBob3VzZTsgYW5kIGhpcyB3aW5kb3dzIGJlaW5nIG9wZW4gaW4gaGlzIGNoYW1iZXIgdG93YXJkIEplcnVzYWxlbSwgaGUga25lZWxlZCB1cG9uIGhpcyBrbmVlcyB0aHJlZSB0aW1lcyBhIGRheSwgYW5kIHByYXllZCwgYW5kIGdhdmUgdGhhbmtzIGJlZm9yZSBoaXMgR29kLCBhcyBoZSBkaWQgYWZvcmV0aW1lLgpUaGVuIHRoZXNlIG1lbiBhc3NlbWJsZWQsIGFuZCBmb3VuZCBEYW5pZWwgcHJheWluZyBhbmQgbWFraW5nIHN1cHBsaWNhdGlvbiBiZWZvcmUgaGlzIEdvZC4KVGhlbiB0aGV5IGNhbWUgbmVhciwgYW5kIHNwYWtlIGJlZm9yZSB0aGUga2luZyBjb25jZXJuaW5nIHRoZSBraW5nJ3MgZGVjcmVlOyBIYXN0IHRob3Ugbm90IHNpZ25lZCBhIGRlY3JlZSwgdGhhdCBldmVyeSBtYW4gdGhhdCBzaGFsbCBhc2sgYSBwZXRpdGlvbiBvZiBhbnkgR29kIG9yIG1hbiB3aXRoaW4gdGhpcnR5IGRheXMsIHNhdmUgb2YgdGhlZSwgTyBraW5nLCBzaGFsbCBiZSBjYXN0IGludG8gdGhlIGRlbiBvZiBsaW9ucz8gVGhlIGtpbmcgYW5zd2VyZWQgYW5kIHNhaWQsIFRoZSB0aGluZyBpcyB0cnVlLCBhY2NvcmRpbmcgdG8gdGhlIGxhdyBvZiB0aGUgTWVkZXMgYW5kIFBlcnNpYW5zLCB3aGljaCBhbHRlcmV0aCBub3QuClRoZW4gYW5zd2VyZWQgdGhleSBhbmQgc2FpZCBiZWZvcmUgdGhlIGtpbmcsIFRoYXQgRGFuaWVsLCB3aGljaCBpcyBvZiB0aGUgY2hpbGRyZW4gb2YgdGhlIGNhcHRpdml0eSBvZiBKdWRhaCwgcmVnYXJkZXRoIG5vdCB0aGVlLCBPIGtpbmcsIG5vciB0aGUgZGVjcmVlIHRoYXQgdGhvdSBoYXN0IHNpZ25lZCwgYnV0IG1ha2V0aCBoaXMgcGV0aXRpb24gdGhyZWUgdGltZXMgYSBkYXkuClRoZW4gdGhlIGtpbmcsIHdoZW4gaGUgaGVhcmQgdGhlc2Ugd29yZHMsIHdhcyBzb3JlIGRpc3BsZWFzZWQgd2l0aCBoaW1zZWxmLCBhbmQgc2V0IGhpcyBoZWFydCBvbiBEYW5pZWwgdG8gZGVsaXZlciBoaW06IGFuZCBoZSBsYWJvdXJlZCB0aWxsIHRoZSBnb2luZyBkb3duIG9mIHRoZSBzdW4gdG8gZGVsaXZlciBoaW0uClRoZW4gdGhlc2UgbWVuIGFzc2VtYmxlZCB1bnRvIHRoZSBraW5nLCBhbmQgc2FpZCB1bnRvIHRoZSBraW5nLCBLbm93LCBPIGtpbmcsIHRoYXQgdGhlIGxhdyBvZiB0aGUgTWVkZXMgYW5kIFBlcnNpYW5zIGlzLCBUaGF0IG5vIGRlY3JlZSBub3Igc3RhdHV0ZSB3aGljaCB0aGUga2luZyBlc3RhYmxpc2hldGggbWF5IGJlIGNoYW5nZWQuClRoZW4gdGhlIGtpbmcgY29tbWFuZGVkLCBhbmQgdGhleSBicm91Z2h0IERhbmllbCwgYW5kIGNhc3QgaGltIGludG8gdGhlIGRlbiBvZiBsaW9ucy4gTm93IHRoZSBraW5nIHNwYWtlIGFuZCBzYWlkIHVudG8gRGFuaWVsLCBUaHkgR29kIHdob20gdGhvdSBzZXJ2ZXN0IGNvbnRpbnVhbGx5LCBoZSB3aWxsIGRlbGl2ZXIgdGhlZS4KQW5kIGEgc3RvbmUgd2FzIGJyb3VnaHQsIGFuZCBsYWlkIHVwb24gdGhlIG1vdXRoIG9mIHRoZSBkZW47IGFuZCB0aGUga2luZyBzZWFsZWQgaXQgd2l0aCBoaXMgb3duIHNpZ25ldCwgYW5kIHdpdGggdGhlIHNpZ25ldCBvZiBoaXMgbG9yZHM7IHRoYXQgdGhlIHB1cnBvc2UgbWlnaHQgbm90IGJlIGNoYW5nZWQgY29uY2VybmluZyBEYW5pZWwuClRoZW4gdGhlIGtpbmcgd2VudCB0byBoaXMgcGFsYWNlLCBhbmQgcGFzc2VkIHRoZSBuaWdodCBmYXN0aW5nOiBuZWl0aGVyIHdlcmUgaW5zdHJ1bWVudHMgb2YgbXVzaWNrIGJyb3VnaHQgYmVmb3JlIGhpbTogYW5kIGhpcyBzbGVlcCB3ZW50IGZyb20gaGltLgpUaGVuIHRoZSBraW5nIGFyb3NlIHZlcnkgZWFybHkgaW4gdGhlIG1vcm5pbmcsIGFuZCB3ZW50IGluIGhhc3RlIHVudG8gdGhlIGRlbiBvZiBsaW9ucy4KQW5kIHdoZW4gaGUgY2FtZSB0byB0aGUgZGVuLCBoZSBjcmllZCB3aXRoIGEgbGFtZW50YWJsZSB2b2ljZSB1bnRvIERhbmllbDogYW5kIHRoZSBraW5nIHNwYWtlIGFuZCBzYWlkIHRvIERhbmllbCwgTyBEYW5pZWwsIHNlcnZhbnQgb2YgdGhlIGxpdmluZyBHb2QsIGlzIHRoeSBHb2QsIHdob20gdGhvdSBzZXJ2ZXN0IGNvbnRpbnVhbGx5LCBhYmxlIHRvIGRlbGl2ZXIgdGhlZSBmcm9tIHRoZSBsaW9ucz8KVGhlbiBzYWlkIERhbmllbCB1bnRvIHRoZSBraW5nLCBPIGtpbmcsIGxpdmUgZm9yIGV2ZXIuCk15IEdvZCBoYXRoIHNlbnQgaGlzIGFuZ2VsLCBhbmQgaGF0aCBzaHV0IHRoZSBsaW9ucycgbW91dGhzLCB0aGF0IHRoZXkgaGF2ZSBub3QgaHVydCBtZTogZm9yYXNtdWNoIGFzIGJlZm9yZSBoaW0gaW5ub2NlbmN5IHdhcyBmb3VuZCBpbiBtZTsgYW5kIGFsc28gYmVmb3JlIHRoZWUsIE8ga2luZywgaGF2ZSBJIGRvbmUgbm8gaHVydC4KVGhlbiB3YXMgdGhlIGtpbmcgZXhjZWVkaW5nbHkgZ2xhZCBmb3IgaGltLCBhbmQgY29tbWFuZGVkIHRoYXQgdGhleSBzaG91bGQgdGFrZSBEYW5pZWwgdXAgb3V0IG9mIHRoZSBkZW4uIFNvIERhbmllbCB3YXMgdGFrZW4gdXAgb3V0IG9mIHRoZSBkZW4sIGFuZCBubyBtYW5uZXIgb2YgaHVydCB3YXMgZm91bmQgdXBvbiBoaW0sIGJlY2F1c2UgaGUgYmVsaWV2ZWQgaW4gaGlzIEdvZC4KQW5kIHRoZSBraW5nIGNvbW1hbmRlZCwgYW5kIHRoZXkgYnJvdWdodCB0aG9zZSBtZW4gd2hpY2ggaGFkIGFjY3VzZWQgRGFuaWVsLCBhbmQgdGhleSBjYXN0IHRoZW0gaW50byB0aGUgZGVuIG9mIGxpb25zLCB0aGVtLCB0aGVpciBjaGlsZHJlbiwgYW5kIHRoZWlyIHdpdmVzOyBhbmQgdGhlIGxpb25zIGhhZCB0aGUgbWFzdGVyeSBvZiB0aGVtLCBhbmQgYnJha2UgYWxsIHRoZWlyIGJvbmVzIGluIHBpZWNlcyBvciBldmVyIHRoZXkgY2FtZSBhdCB0aGUgYm90dG9tIG9mIHRoZSBkZW4uClRoZW4ga2luZyBEYXJpdXMgd3JvdGUgdW50byBhbGwgcGVvcGxlLCBuYXRpb25zLCBhbmQgbGFuZ3VhZ2VzLCB0aGF0IGR3ZWxsIGluIGFsbCB0aGUgZWFydGg7IFBlYWNlIGJlIG11bHRpcGxpZWQgdW50byB5b3UuCkkgbWFrZSBhIGRlY3JlZSwgVGhhdCBpbiBldmVyeSBkb21pbmlvbiBvZiBteSBraW5nZG9tIG1lbiB0cmVtYmxlIGFuZCBmZWFyIGJlZm9yZSB0aGUgR29kIG9mIERhbmllbDogZm9yIGhlIGlzIHRoZSBsaXZpbmcgR29kLCBhbmQgc3RlZGZhc3QgZm9yIGV2ZXIsIGFuZCBoaXMga2luZ2RvbSB0aGF0IHdoaWNoIHNoYWxsIG5vdCBiZSBkZXN0cm95ZWQsIGFuZCBoaXMgZG9taW5pb24gc2hhbGwgYmUgZXZlbiB1bnRvIHRoZSBlbmQuCkhlIGRlbGl2ZXJldGggYW5kIHJlc2N1ZXRoLCBhbmQgaGUgd29ya2V0aCBzaWducyBhbmQgd29uZGVycyBpbiBoZWF2ZW4gYW5kIGluIGVhcnRoLCB3aG8gaGF0aCBkZWxpdmVyZWQgRGFuaWVsIGZyb20gdGhlIHBvd2VyIG9mIHRoZSBsaW9ucy4KU28gdGhpcyBEYW5pZWwgcHJvc3BlcmVkIGluIHRoZSByZWlnbiBvZiBEYXJpdXMsIGFuZCBpbiB0aGUgcmVpZ24gb2YgQ3lydXMgdGhlIFBlcnNpYW4uCkluIHRoZSBmaXJzdCB5ZWFyIG9mIEJlbHNoYXp6YXIga2luZyBvZiBCYWJ5bG9uIERhbmllbCBoYWQgYSBkcmVhbSBhbmQgdmlzaW9ucyBvZiBoaXMgaGVhZCB1cG9uIGhpcyBiZWQ6IHRoZW4gaGUgd3JvdGUgdGhlIGRyZWFtLCBhbmQgdG9sZCB0aGUgc3VtIG9mIHRoZSBtYXR0ZXJzLgpEYW5pZWwgc3Bha2UgYW5kIHNhaWQsIEkgc2F3IGluIG15IHZpc2lvbiBieSBuaWdodCwgYW5kLCBiZWhvbGQsIHRoZSBmb3VyIHdpbmRzIG9mIHRoZSBoZWF2ZW4gc3Ryb3ZlIHVwb24gdGhlIGdyZWF0IHNlYS4KQW5kIGZvdXIgZ3JlYXQgYmVhc3RzIGNhbWUgdXAgZnJvbSB0aGUgc2VhLCBkaXZlcnNlIG9uZSBmcm9tIGFub3RoZXIuClRoZSBmaXJzdCB3YXMgbGlrZSBhIGxpb24sIGFuZCBoYWQgZWFnbGUncyB3aW5nczogSSBiZWhlbGQgdGlsbCB0aGUgd2luZ3MgdGhlcmVvZiB3ZXJlIHBsdWNrZWQsIGFuZCBpdCB3YXMgbGlmdGVkIHVwIGZyb20gdGhlIGVhcnRoLCBhbmQgbWFkZSBzdGFuZCB1cG9uIHRoZSBmZWV0IGFzIGEgbWFuLCBhbmQgYSBtYW4ncyBoZWFydCB3YXMgZ2l2ZW4gdG8gaXQuCkFuZCBiZWhvbGQgYW5vdGhlciBiZWFzdCwgYSBzZWNvbmQsIGxpa2UgdG8gYSBiZWFyLCBhbmQgaXQgcmFpc2VkIHVwIGl0c2VsZiBvbiBvbmUgc2lkZSwgYW5kIGl0IGhhZCB0aHJlZSByaWJzIGluIHRoZSBtb3V0aCBvZiBpdCBiZXR3ZWVuIHRoZSB0ZWV0aCBvZiBpdDogYW5kIHRoZXkgc2FpZCB0aHVzIHVudG8gaXQsIEFyaXNlLCBkZXZvdXIgbXVjaCBmbGVzaC4KQWZ0ZXIgdGhpcyBJIGJlaGVsZCwgYW5kIGxvIGFub3RoZXIsIGxpa2UgYSBsZW9wYXJkLCB3aGljaCBoYWQgdXBvbiB0aGUgYmFjayBvZiBpdCBmb3VyIHdpbmdzIG9mIGEgZm93bDsgdGhlIGJlYXN0IGhhZCBhbHNvIGZvdXIgaGVhZHM7IGFuZCBkb21pbmlvbiB3YXMgZ2l2ZW4gdG8gaXQuCkFmdGVyIHRoaXMgSSBzYXcgaW4gdGhlIG5pZ2h0IHZpc2lvbnMsIGFuZCBiZWhvbGQgYSBmb3VydGggYmVhc3QsIGRyZWFkZnVsIGFuZCB0ZXJyaWJsZSwgYW5kIHN0cm9uZyBleGNlZWRpbmdseTsgYW5kIGl0IGhhZCBncmVhdCBpcm9uIHRlZXRoOiBpdCBkZXZvdXJlZCBhbmQgYnJha2UgaW4gcGllY2VzLCBhbmQgc3RhbXBlZCB0aGUgcmVzaWR1ZSB3aXRoIHRoZSBmZWV0IG9mIGl0OiBhbmQgaXQgd2FzIGRpdmVyc2UgZnJvbSBhbGwgdGhlIGJlYXN0cyB0aGF0IHdlcmUgYmVmb3JlIGl0OyBhbmQgaXQgaGFkIHRlbiBob3Jucy4KSSBjb25zaWRlcmVkIHRoZSBob3JucywgYW5kLCBiZWhvbGQsIHRoZXJlIGNhbWUgdXAgYW1vbmcgdGhlbSBhbm90aGVyIGxpdHRsZSBob3JuLCBiZWZvcmUgd2hvbSB0aGVyZSB3ZXJlIHRocmVlIG9mIHRoZSBmaXJzdCBob3JucyBwbHVja2VkIHVwIGJ5IHRoZSByb290czogYW5kLCBiZWhvbGQsIGluIHRoaXMgaG9ybiB3ZXJlIGV5ZXMgbGlrZSB0aGUgZXllcyBvZiBtYW4sIGFuZCBhIG1vdXRoIHNwZWFraW5nIGdyZWF0IHRoaW5ncy4KSSBiZWhlbGQgdGlsbCB0aGUgdGhyb25lcyB3ZXJlIGNhc3QgZG93biwgYW5kIHRoZSBBbmNpZW50IG9mIGRheXMgZGlkIHNpdCwgd2hvc2UgZ2FybWVudCB3YXMgd2hpdGUgYXMgc25vdywgYW5kIHRoZSBoYWlyIG9mIGhpcyBoZWFkIGxpa2UgdGhlIHB1cmUgd29vbDogaGlzIHRocm9uZSB3YXMgbGlrZSB0aGUgZmllcnkgZmxhbWUsIGFuZCBoaXMgd2hlZWxzIGFzIGJ1cm5pbmcgZmlyZS4KQSBmaWVyeSBzdHJlYW0gaXNzdWVkIGFuZCBjYW1lIGZvcnRoIGZyb20gYmVmb3JlIGhpbTogdGhvdXNhbmQgdGhvdXNhbmRzIG1pbmlzdGVyZWQgdW50byBoaW0sIGFuZCB0ZW4gdGhvdXNhbmQgdGltZXMgdGVuIHRob3VzYW5kIHN0b29kIGJlZm9yZSBoaW06IHRoZSBqdWRnbWVudCB3YXMgc2V0LCBhbmQgdGhlIGJvb2tzIHdlcmUgb3BlbmVkLgpJIGJlaGVsZCB0aGVuIGJlY2F1c2Ugb2YgdGhlIHZvaWNlIG9mIHRoZSBncmVhdCB3b3JkcyB3aGljaCB0aGUgaG9ybiBzcGFrZTogSSBiZWhlbGQgZXZlbiB0aWxsIHRoZSBiZWFzdCB3YXMgc2xhaW4sIGFuZCBoaXMgYm9keSBkZXN0cm95ZWQsIGFuZCBnaXZlbiB0byB0aGUgYnVybmluZyBmbGFtZS4KQXMgY29uY2VybmluZyB0aGUgcmVzdCBvZiB0aGUgYmVhc3RzLCB0aGV5IGhhZCB0aGVpciBkb21pbmlvbiB0YWtlbiBhd2F5OiB5ZXQgdGhlaXIgbGl2ZXMgd2VyZSBwcm9sb25nZWQgZm9yIGEgc2Vhc29uIGFuZCB0aW1lLgpJIHNhdyBpbiB0aGUgbmlnaHQgdmlzaW9ucywgYW5kLCBiZWhvbGQsIG9uZSBsaWtlIHRoZSBTb24gb2YgbWFuIGNhbWUgd2l0aCB0aGUgY2xvdWRzIG9mIGhlYXZlbiwgYW5kIGNhbWUgdG8gdGhlIEFuY2llbnQgb2YgZGF5cywgYW5kIHRoZXkgYnJvdWdodCBoaW0gbmVhciBiZWZvcmUgaGltLgpBbmQgdGhlcmUgd2FzIGdpdmVuIGhpbSBkb21pbmlvbiwgYW5kIGdsb3J5LCBhbmQgYSBraW5nZG9tLCB0aGF0IGFsbCBwZW9wbGUsIG5hdGlvbnMsIGFuZCBsYW5ndWFnZXMsIHNob3VsZCBzZXJ2ZSBoaW06IGhpcyBkb21pbmlvbiBpcyBhbiBldmVybGFzdGluZyBkb21pbmlvbiwgd2hpY2ggc2hhbGwgbm90IHBhc3MgYXdheSwgYW5kIGhpcyBraW5nZG9tIHRoYXQgd2hpY2ggc2hhbGwgbm90IGJlIGRlc3Ryb3llZC4KSSBEYW5pZWwgd2FzIGdyaWV2ZWQgaW4gbXkgc3Bpcml0IGluIHRoZSBtaWRzdCBvZiBteSBib2R5LCBhbmQgdGhlIHZpc2lvbnMgb2YgbXkgaGVhZCB0cm91YmxlZCBtZS4KSSBjYW1lIG5lYXIgdW50byBvbmUgb2YgdGhlbSB0aGF0IHN0b29kIGJ5LCBhbmQgYXNrZWQgaGltIHRoZSB0cnV0aCBvZiBhbGwgdGhpcy4gU28gaGUgdG9sZCBtZSwgYW5kIG1hZGUgbWUga25vdyB0aGUgaW50ZXJwcmV0YXRpb24gb2YgdGhlIHRoaW5ncy4KVGhlc2UgZ3JlYXQgYmVhc3RzLCB3aGljaCBhcmUgZm91ciwgYXJlIGZvdXIga2luZ3MsIHdoaWNoIHNoYWxsIGFyaXNlIG91dCBvZiB0aGUgZWFydGguCkJ1dCB0aGUgc2FpbnRzIG9mIHRoZSBtb3N0IEhpZ2ggc2hhbGwgdGFrZSB0aGUga2luZ2RvbSwgYW5kIHBvc3Nlc3MgdGhlIGtpbmdkb20gZm9yIGV2ZXIsIGV2ZW4gZm9yIGV2ZXIgYW5kIGV2ZXIuClRoZW4gSSB3b3VsZCBrbm93IHRoZSB0cnV0aCBvZiB0aGUgZm91cnRoIGJlYXN0LCB3aGljaCB3YXMgZGl2ZXJzZSBmcm9tIGFsbCB0aGUgb3RoZXJzLCBleGNlZWRpbmcgZHJlYWRmdWwsIHdob3NlIHRlZXRoIHdlcmUgb2YgaXJvbiwgYW5kIGhpcyBuYWlscyBvZiBicmFzczsgd2hpY2ggZGV2b3VyZWQsIGJyYWtlIGluIHBpZWNlcywgYW5kIHN0YW1wZWQgdGhlIHJlc2lkdWUgd2l0aCBoaXMgZmVldDsKQW5kIG9mIHRoZSB0ZW4gaG9ybnMgdGhhdCB3ZXJlIGluIGhpcyBoZWFkLCBhbmQgb2YgdGhlIG90aGVyIHdoaWNoIGNhbWUgdXAsIGFuZCBiZWZvcmUgd2hvbSB0aHJlZSBmZWxsOyBldmVuIG9mIHRoYXQgaG9ybiB0aGF0IGhhZCBleWVzLCBhbmQgYSBtb3V0aCB0aGF0IHNwYWtlIHZlcnkgZ3JlYXQgdGhpbmdzLCB3aG9zZSBsb29rIHdhcyBtb3JlIHN0b3V0IHRoYW4gaGlzIGZlbGxvd3MuCkkgYmVoZWxkLCBhbmQgdGhlIHNhbWUgaG9ybiBtYWRlIHdhciB3aXRoIHRoZSBzYWludHMsIGFuZCBwcmV2YWlsZWQgYWdhaW5zdCB0aGVtOwpVbnRpbCB0aGUgQW5jaWVudCBvZiBkYXlzIGNhbWUsIGFuZCBqdWRnbWVudCB3YXMgZ2l2ZW4gdG8gdGhlIHNhaW50cyBvZiB0aGUgbW9zdCBIaWdoOyBhbmQgdGhlIHRpbWUgY2FtZSB0aGF0IHRoZSBzYWludHMgcG9zc2Vzc2VkIHRoZSBraW5nZG9tLgpUaHVzIGhlIHNhaWQsIFRoZSBmb3VydGggYmVhc3Qgc2hhbGwgYmUgdGhlIGZvdXJ0aCBraW5nZG9tIHVwb24gZWFydGgsIHdoaWNoIHNoYWxsIGJlIGRpdmVyc2UgZnJvbSBhbGwga2luZ2RvbXMsIGFuZCBzaGFsbCBkZXZvdXIgdGhlIHdob2xlIGVhcnRoLCBhbmQgc2hhbGwgdHJlYWQgaXQgZG93biwgYW5kIGJyZWFrIGl0IGluIHBpZWNlcy4KQW5kIHRoZSB0ZW4gaG9ybnMgb3V0IG9mIHRoaXMga2luZ2RvbSBhcmUgdGVuIGtpbmdzIHRoYXQgc2hhbGwgYXJpc2U6IGFuZCBhbm90aGVyIHNoYWxsIHJpc2UgYWZ0ZXIgdGhlbTsgYW5kIGhlIHNoYWxsIGJlIGRpdmVyc2UgZnJvbSB0aGUgZmlyc3QsIGFuZCBoZSBzaGFsbCBzdWJkdWUgdGhyZWUga2luZ3MuCkFuZCBoZSBzaGFsbCBzcGVhayBncmVhdCB3b3JkcyBhZ2FpbnN0IHRoZSBtb3N0IEhpZ2gsIGFuZCBzaGFsbCB3ZWFyIG91dCB0aGUgc2FpbnRzIG9mIHRoZSBtb3N0IEhpZ2gsIGFuZCB0aGluayB0byBjaGFuZ2UgdGltZXMgYW5kIGxhd3M6IGFuZCB0aGV5IHNoYWxsIGJlIGdpdmVuIGludG8gaGlzIGhhbmQgdW50aWwgYSB0aW1lIGFuZCB0aW1lcyBhbmQgdGhlIGRpdmlkaW5nIG9mIHRpbWUuCkJ1dCB0aGUganVkZ21lbnQgc2hhbGwgc2l0LCBhbmQgdGhleSBzaGFsbCB0YWtlIGF3YXkgaGlzIGRvbWluaW9uLCB0byBjb25zdW1lIGFuZCB0byBkZXN0cm95IGl0IHVudG8gdGhlIGVuZC4KQW5kIHRoZSBraW5nZG9tIGFuZCBkb21pbmlvbiwgYW5kIHRoZSBncmVhdG5lc3Mgb2YgdGhlIGtpbmdkb20gdW5kZXIgdGhlIHdob2xlIGhlYXZlbiwgc2hhbGwgYmUgZ2l2ZW4gdG8gdGhlIHBlb3BsZSBvZiB0aGUgc2FpbnRzIG9mIHRoZSBtb3N0IEhpZ2gsIHdob3NlIGtpbmdkb20gaXMgYW4gZXZlcmxhc3Rpbmcga2luZ2RvbSwgYW5kIGFsbCBkb21pbmlvbnMgc2hhbGwgc2VydmUgYW5kIG9iZXkgaGltLgpIaXRoZXJ0byBpcyB0aGUgZW5kIG9mIHRoZSBtYXR0ZXIuIEFzIGZvciBtZSBEYW5pZWwsIG15IGNvZ2l0YXRpb25zIG11Y2ggdHJvdWJsZWQgbWUsIGFuZCBteSBjb3VudGVuYW5jZSBjaGFuZ2VkIGluIG1lOiBidXQgSSBrZXB0IHRoZSBtYXR0ZXIgaW4gbXkgaGVhcnQuCkluIHRoZSB0aGlyZCB5ZWFyIG9mIHRoZSByZWlnbiBvZiBraW5nIEJlbHNoYXp6YXIgYSB2aXNpb24gYXBwZWFyZWQgdW50byBtZSwgZXZlbiB1bnRvIG1lIERhbmllbCwgYWZ0ZXIgdGhhdCB3aGljaCBhcHBlYXJlZCB1bnRvIG1lIGF0IHRoZSBmaXJzdC4KQW5kIEkgc2F3IGluIGEgdmlzaW9uOyBhbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIEkgc2F3LCB0aGF0IEkgd2FzIGF0IFNodXNoYW4gaW4gdGhlIHBhbGFjZSwgd2hpY2ggaXMgaW4gdGhlIHByb3ZpbmNlIG9mIEVsYW07IGFuZCBJIHNhdyBpbiBhIHZpc2lvbiwgYW5kIEkgd2FzIGJ5IHRoZSByaXZlciBvZiBVbGFpLgpUaGVuIEkgbGlmdGVkIHVwIG1pbmUgZXllcywgYW5kIHNhdywgYW5kLCBiZWhvbGQsIHRoZXJlIHN0b29kIGJlZm9yZSB0aGUgcml2ZXIgYSByYW0gd2hpY2ggaGFkIHR3byBob3JuczogYW5kIHRoZSB0d28gaG9ybnMgd2VyZSBoaWdoOyBidXQgb25lIHdhcyBoaWdoZXIgdGhhbiB0aGUgb3RoZXIsIGFuZCB0aGUgaGlnaGVyIGNhbWUgdXAgbGFzdC4KSSBzYXcgdGhlIHJhbSBwdXNoaW5nIHdlc3R3YXJkLCBhbmQgbm9ydGh3YXJkLCBhbmQgc291dGh3YXJkOyBzbyB0aGF0IG5vIGJlYXN0cyBtaWdodCBzdGFuZCBiZWZvcmUgaGltLCBuZWl0aGVyIHdhcyB0aGVyZSBhbnkgdGhhdCBjb3VsZCBkZWxpdmVyIG91dCBvZiBoaXMgaGFuZDsgYnV0IGhlIGRpZCBhY2NvcmRpbmcgdG8gaGlzIHdpbGwsIGFuZCBiZWNhbWUgZ3JlYXQuCkFuZCBhcyBJIHdhcyBjb25zaWRlcmluZywgYmVob2xkLCBhbiBoZSBnb2F0IGNhbWUgZnJvbSB0aGUgd2VzdCBvbiB0aGUgZmFjZSBvZiB0aGUgd2hvbGUgZWFydGgsIGFuZCB0b3VjaGVkIG5vdCB0aGUgZ3JvdW5kOiBhbmQgdGhlIGdvYXQgaGFkIGEgbm90YWJsZSBob3JuIGJldHdlZW4gaGlzIGV5ZXMuCkFuZCBoZSBjYW1lIHRvIHRoZSByYW0gdGhhdCBoYWQgdHdvIGhvcm5zLCB3aGljaCBJIGhhZCBzZWVuIHN0YW5kaW5nIGJlZm9yZSB0aGUgcml2ZXIsIGFuZCByYW4gdW50byBoaW0gaW4gdGhlIGZ1cnkgb2YgaGlzIHBvd2VyLgpBbmQgSSBzYXcgaGltIGNvbWUgY2xvc2UgdW50byB0aGUgcmFtLCBhbmQgaGUgd2FzIG1vdmVkIHdpdGggY2hvbGVyIGFnYWluc3QgaGltLCBhbmQgc21vdGUgdGhlIHJhbSwgYW5kIGJyYWtlIGhpcyB0d28gaG9ybnM6IGFuZCB0aGVyZSB3YXMgbm8gcG93ZXIgaW4gdGhlIHJhbSB0byBzdGFuZCBiZWZvcmUgaGltLCBidXQgaGUgY2FzdCBoaW0gZG93biB0byB0aGUgZ3JvdW5kLCBhbmQgc3RhbXBlZCB1cG9uIGhpbTogYW5kIHRoZXJlIHdhcyBub25lIHRoYXQgY291bGQgZGVsaXZlciB0aGUgcmFtIG91dCBvZiBoaXMgaGFuZC4KVGhlcmVmb3JlIHRoZSBoZSBnb2F0IHdheGVkIHZlcnkgZ3JlYXQ6IGFuZCB3aGVuIGhlIHdhcyBzdHJvbmcsIHRoZSBncmVhdCBob3JuIHdhcyBicm9rZW47IGFuZCBmb3IgaXQgY2FtZSB1cCBmb3VyIG5vdGFibGUgb25lcyB0b3dhcmQgdGhlIGZvdXIgd2luZHMgb2YgaGVhdmVuLgpBbmQgb3V0IG9mIG9uZSBvZiB0aGVtIGNhbWUgZm9ydGggYSBsaXR0bGUgaG9ybiwgd2hpY2ggd2F4ZWQgZXhjZWVkaW5nIGdyZWF0LCB0b3dhcmQgdGhlIHNvdXRoLCBhbmQgdG93YXJkIHRoZSBlYXN0LCBhbmQgdG93YXJkIHRoZSBwbGVhc2FudCBsYW5kLgpBbmQgaXQgd2F4ZWQgZ3JlYXQsIGV2ZW4gdG8gdGhlIGhvc3Qgb2YgaGVhdmVuOyBhbmQgaXQgY2FzdCBkb3duIHNvbWUgb2YgdGhlIGhvc3QgYW5kIG9mIHRoZSBzdGFycyB0byB0aGUgZ3JvdW5kLCBhbmQgc3RhbXBlZCB1cG9uIHRoZW0uClllYSwgaGUgbWFnbmlmaWVkIGhpbXNlbGYgZXZlbiB0byB0aGUgcHJpbmNlIG9mIHRoZSBob3N0LCBhbmQgYnkgaGltIHRoZSBkYWlseSBzYWNyaWZpY2Ugd2FzIHRha2VuIGF3YXksIGFuZCB0aGUgcGxhY2Ugb2YgdGhlIHNhbmN0dWFyeSB3YXMgY2FzdCBkb3duLgpBbmQgYW4gaG9zdCB3YXMgZ2l2ZW4gaGltIGFnYWluc3QgdGhlIGRhaWx5IHNhY3JpZmljZSBieSByZWFzb24gb2YgdHJhbnNncmVzc2lvbiwgYW5kIGl0IGNhc3QgZG93biB0aGUgdHJ1dGggdG8gdGhlIGdyb3VuZDsgYW5kIGl0IHByYWN0aXNlZCwgYW5kIHByb3NwZXJlZC4KVGhlbiBJIGhlYXJkIG9uZSBzYWludCBzcGVha2luZywgYW5kIGFub3RoZXIgc2FpbnQgc2FpZCB1bnRvIHRoYXQgY2VydGFpbiBzYWludCB3aGljaCBzcGFrZSwgSG93IGxvbmcgc2hhbGwgYmUgdGhlIHZpc2lvbiBjb25jZXJuaW5nIHRoZSBkYWlseSBzYWNyaWZpY2UsIGFuZCB0aGUgdHJhbnNncmVzc2lvbiBvZiBkZXNvbGF0aW9uLCB0byBnaXZlIGJvdGggdGhlIHNhbmN0dWFyeSBhbmQgdGhlIGhvc3QgdG8gYmUgdHJvZGRlbiB1bmRlciBmb290PwpBbmQgaGUgc2FpZCB1bnRvIG1lLCBVbnRvIHR3byB0aG91c2FuZCBhbmQgdGhyZWUgaHVuZHJlZCBkYXlzOyB0aGVuIHNoYWxsIHRoZSBzYW5jdHVhcnkgYmUgY2xlYW5zZWQuCkFuZCBpdCBjYW1lIHRvIHBhc3MsIHdoZW4gSSwgZXZlbiBJIERhbmllbCwgaGFkIHNlZW4gdGhlIHZpc2lvbiwgYW5kIHNvdWdodCBmb3IgdGhlIG1lYW5pbmcsIHRoZW4sIGJlaG9sZCwgdGhlcmUgc3Rvb2QgYmVmb3JlIG1lIGFzIHRoZSBhcHBlYXJhbmNlIG9mIGEgbWFuLgpBbmQgSSBoZWFyZCBhIG1hbidzIHZvaWNlIGJldHdlZW4gdGhlIGJhbmtzIG9mIFVsYWksIHdoaWNoIGNhbGxlZCwgYW5kIHNhaWQsIEdhYnJpZWwsIG1ha2UgdGhpcyBtYW4gdG8gdW5kZXJzdGFuZCB0aGUgdmlzaW9uLgpTbyBoZSBjYW1lIG5lYXIgd2hlcmUgSSBzdG9vZDogYW5kIHdoZW4gaGUgY2FtZSwgSSB3YXMgYWZyYWlkLCBhbmQgZmVsbCB1cG9uIG15IGZhY2U6IGJ1dCBoZSBzYWlkIHVudG8gbWUsIFVuZGVyc3RhbmQsIE8gc29uIG9mIG1hbjogZm9yIGF0IHRoZSB0aW1lIG9mIHRoZSBlbmQgc2hhbGwgYmUgdGhlIHZpc2lvbi4KTm93IGFzIGhlIHdhcyBzcGVha2luZyB3aXRoIG1lLCBJIHdhcyBpbiBhIGRlZXAgc2xlZXAgb24gbXkgZmFjZSB0b3dhcmQgdGhlIGdyb3VuZDogYnV0IGhlIHRvdWNoZWQgbWUsIGFuZCBzZXQgbWUgdXByaWdodC4KQW5kIGhlIHNhaWQsIEJlaG9sZCwgSSB3aWxsIG1ha2UgdGhlZSBrbm93IHdoYXQgc2hhbGwgYmUgaW4gdGhlIGxhc3QgZW5kIG9mIHRoZSBpbmRpZ25hdGlvbjogZm9yIGF0IHRoZSB0aW1lIGFwcG9pbnRlZCB0aGUgZW5kIHNoYWxsIGJlLgpUaGUgcmFtIHdoaWNoIHRob3Ugc2F3ZXN0IGhhdmluZyB0d28gaG9ybnMgYXJlIHRoZSBraW5ncyBvZiBNZWRpYSBhbmQgUGVyc2lhLgpBbmQgdGhlIHJvdWdoIGdvYXQgaXMgdGhlIGtpbmcgb2YgR3JlY2lhOiBhbmQgdGhlIGdyZWF0IGhvcm4gdGhhdCBpcyBiZXR3ZWVuIGhpcyBleWVzIGlzIHRoZSBmaXJzdCBraW5nLgpOb3cgdGhhdCBiZWluZyBicm9rZW4sIHdoZXJlYXMgZm91ciBzdG9vZCB1cCBmb3IgaXQsIGZvdXIga2luZ2RvbXMgc2hhbGwgc3RhbmQgdXAgb3V0IG9mIHRoZSBuYXRpb24sIGJ1dCBub3QgaW4gaGlzIHBvd2VyLgpBbmQgaW4gdGhlIGxhdHRlciB0aW1lIG9mIHRoZWlyIGtpbmdkb20sIHdoZW4gdGhlIHRyYW5zZ3Jlc3NvcnMgYXJlIGNvbWUgdG8gdGhlIGZ1bGwsIGEga2luZyBvZiBmaWVyY2UgY291bnRlbmFuY2UsIGFuZCB1bmRlcnN0YW5kaW5nIGRhcmsgc2VudGVuY2VzLCBzaGFsbCBzdGFuZCB1cC4KQW5kIGhpcyBwb3dlciBzaGFsbCBiZSBtaWdodHksIGJ1dCBub3QgYnkgaGlzIG93biBwb3dlcjogYW5kIGhlIHNoYWxsIGRlc3Ryb3kgd29uZGVyZnVsbHksIGFuZCBzaGFsbCBwcm9zcGVyLCBhbmQgcHJhY3Rpc2UsIGFuZCBzaGFsbCBkZXN0cm95IHRoZSBtaWdodHkgYW5kIHRoZSBob2x5IHBlb3BsZS4KQW5kIHRocm91Z2ggaGlzIHBvbGljeSBhbHNvIGhlIHNoYWxsIGNhdXNlIGNyYWZ0IHRvIHByb3NwZXIgaW4gaGlzIGhhbmQ7IGFuZCBoZSBzaGFsbCBtYWduaWZ5IGhpbXNlbGYgaW4gaGlzIGhlYXJ0LCBhbmQgYnkgcGVhY2Ugc2hhbGwgZGVzdHJveSBtYW55OiBoZSBzaGFsbCBhbHNvIHN0YW5kIHVwIGFnYWluc3QgdGhlIFByaW5jZSBvZiBwcmluY2VzOyBidXQgaGUgc2hhbGwgYmUgYnJva2VuIHdpdGhvdXQgaGFuZC4KQW5kIHRoZSB2aXNpb24gb2YgdGhlIGV2ZW5pbmcgYW5kIHRoZSBtb3JuaW5nIHdoaWNoIHdhcyB0b2xkIGlzIHRydWU6IHdoZXJlZm9yZSBzaHV0IHRob3UgdXAgdGhlIHZpc2lvbjsgZm9yIGl0IHNoYWxsIGJlIGZvciBtYW55IGRheXMuCkFuZCBJIERhbmllbCBmYWludGVkLCBhbmQgd2FzIHNpY2sgY2VydGFpbiBkYXlzOyBhZnRlcndhcmQgSSByb3NlIHVwLCBhbmQgZGlkIHRoZSBraW5nJ3MgYnVzaW5lc3M7IGFuZCBJIHdhcyBhc3RvbmlzaGVkIGF0IHRoZSB2aXNpb24sIGJ1dCBub25lIHVuZGVyc3Rvb2QgaXQuCkluIHRoZSBmaXJzdCB5ZWFyIG9mIERhcml1cyB0aGUgc29uIG9mIEFoYXN1ZXJ1cywgb2YgdGhlIHNlZWQgb2YgdGhlIE1lZGVzLCB3aGljaCB3YXMgbWFkZSBraW5nIG92ZXIgdGhlIHJlYWxtIG9mIHRoZSBDaGFsZGVhbnM7CkluIHRoZSBmaXJzdCB5ZWFyIG9mIGhpcyByZWlnbiBJIERhbmllbCB1bmRlcnN0b29kIGJ5IGJvb2tzIHRoZSBudW1iZXIgb2YgdGhlIHllYXJzLCB3aGVyZW9mIHRoZSB3b3JkIG9mIHRoZSBMT1JEIGNhbWUgdG8gSmVyZW1pYWggdGhlIHByb3BoZXQsIHRoYXQgaGUgd291bGQgYWNjb21wbGlzaCBzZXZlbnR5IHllYXJzIGluIHRoZSBkZXNvbGF0aW9ucyBvZiBKZXJ1c2FsZW0uCkFuZCBJIHNldCBteSBmYWNlIHVudG8gdGhlIExvcmQgR29kLCB0byBzZWVrIGJ5IHByYXllciBhbmQgc3VwcGxpY2F0aW9ucywgd2l0aCBmYXN0aW5nLCBhbmQgc2Fja2Nsb3RoLCBhbmQgYXNoZXM6CkFuZCBJIHByYXllZCB1bnRvIHRoZSBMT1JEIG15IEdvZCwgYW5kIG1hZGUgbXkgY29uZmVzc2lvbiwgYW5kIHNhaWQsIE8gTG9yZCwgdGhlIGdyZWF0IGFuZCBkcmVhZGZ1bCBHb2QsIGtlZXBpbmcgdGhlIGNvdmVuYW50IGFuZCBtZXJjeSB0byB0aGVtIHRoYXQgbG92ZSBoaW0sIGFuZCB0byB0aGVtIHRoYXQga2VlcCBoaXMgY29tbWFuZG1lbnRzOwpXZSBoYXZlIHNpbm5lZCwgYW5kIGhhdmUgY29tbWl0dGVkIGluaXF1aXR5LCBhbmQgaGF2ZSBkb25lIHdpY2tlZGx5LCBhbmQgaGF2ZSByZWJlbGxlZCwgZXZlbiBieSBkZXBhcnRpbmcgZnJvbSB0aHkgcHJlY2VwdHMgYW5kIGZyb20gdGh5IGp1ZGdtZW50czoKTmVpdGhlciBoYXZlIHdlIGhlYXJrZW5lZCB1bnRvIHRoeSBzZXJ2YW50cyB0aGUgcHJvcGhldHMsIHdoaWNoIHNwYWtlIGluIHRoeSBuYW1lIHRvIG91ciBraW5ncywgb3VyIHByaW5jZXMsIGFuZCBvdXIgZmF0aGVycywgYW5kIHRvIGFsbCB0aGUgcGVvcGxlIG9mIHRoZSBsYW5kLgpPIExPUkQsIHJpZ2h0ZW91c25lc3MgYmVsb25nZXRoIHVudG8gdGhlZSwgYnV0IHVudG8gdXMgY29uZnVzaW9uIG9mIGZhY2VzLCBhcyBhdCB0aGlzIGRheTsgdG8gdGhlIG1lbiBvZiBKdWRhaCwgYW5kIHRvIHRoZSBpbmhhYml0YW50cyBvZiBKZXJ1c2FsZW0sIGFuZCB1bnRvIGFsbCBJc3JhZWwsIHRoYXQgYXJlIG5lYXIsIGFuZCB0aGF0IGFyZSBmYXIgb2ZmLCB0aHJvdWdoIGFsbCB0aGUgY291bnRyaWVzIHdoaXRoZXIgdGhvdSBoYXN0IGRyaXZlbiB0aGVtLCBiZWNhdXNlIG9mIHRoZWlyIHRyZXNwYXNzIHRoYXQgdGhleSBoYXZlIHRyZXNwYXNzZWQgYWdhaW5zdCB0aGVlLgpPIExvcmQsIHRvIHVzIGJlbG9uZ2V0aCBjb25mdXNpb24gb2YgZmFjZSwgdG8gb3VyIGtpbmdzLCB0byBvdXIgcHJpbmNlcywgYW5kIHRvIG91ciBmYXRoZXJzLCBiZWNhdXNlIHdlIGhhdmUgc2lubmVkIGFnYWluc3QgdGhlZS4KVG8gdGhlIExvcmQgb3VyIEdvZCBiZWxvbmcgbWVyY2llcyBhbmQgZm9yZ2l2ZW5lc3NlcywgdGhvdWdoIHdlIGhhdmUgcmViZWxsZWQgYWdhaW5zdCBoaW07Ck5laXRoZXIgaGF2ZSB3ZSBvYmV5ZWQgdGhlIHZvaWNlIG9mIHRoZSBMT1JEIG91ciBHb2QsIHRvIHdhbGsgaW4gaGlzIGxhd3MsIHdoaWNoIGhlIHNldCBiZWZvcmUgdXMgYnkgaGlzIHNlcnZhbnRzIHRoZSBwcm9waGV0cy4KWWVhLCBhbGwgSXNyYWVsIGhhdmUgdHJhbnNncmVzc2VkIHRoeSBsYXcsIGV2ZW4gYnkgZGVwYXJ0aW5nLCB0aGF0IHRoZXkgbWlnaHQgbm90IG9iZXkgdGh5IHZvaWNlOyB0aGVyZWZvcmUgdGhlIGN1cnNlIGlzIHBvdXJlZCB1cG9uIHVzLCBhbmQgdGhlIG9hdGggdGhhdCBpcyB3cml0dGVuIGluIHRoZSBsYXcgb2YgTW9zZXMgdGhlIHNlcnZhbnQgb2YgR29kLCBiZWNhdXNlIHdlIGhhdmUgc2lubmVkIGFnYWluc3QgaGltLgpBbmQgaGUgaGF0aCBjb25maXJtZWQgaGlzIHdvcmRzLCB3aGljaCBoZSBzcGFrZSBhZ2FpbnN0IHVzLCBhbmQgYWdhaW5zdCBvdXIganVkZ2VzIHRoYXQganVkZ2VkIHVzLCBieSBicmluZ2luZyB1cG9uIHVzIGEgZ3JlYXQgZXZpbDogZm9yIHVuZGVyIHRoZSB3aG9sZSBoZWF2ZW4gaGF0aCBub3QgYmVlbiBkb25lIGFzIGhhdGggYmVlbiBkb25lIHVwb24gSmVydXNhbGVtLgpBcyBpdCBpcyB3cml0dGVuIGluIHRoZSBsYXcgb2YgTW9zZXMsIGFsbCB0aGlzIGV2aWwgaXMgY29tZSB1cG9uIHVzOiB5ZXQgbWFkZSB3ZSBub3Qgb3VyIHByYXllciBiZWZvcmUgdGhlIExPUkQgb3VyIEdvZCwgdGhhdCB3ZSBtaWdodCB0dXJuIGZyb20gb3VyIGluaXF1aXRpZXMsIGFuZCB1bmRlcnN0YW5kIHRoeSB0cnV0aC4KVGhlcmVmb3JlIGhhdGggdGhlIExPUkQgd2F0Y2hlZCB1cG9uIHRoZSBldmlsLCBhbmQgYnJvdWdodCBpdCB1cG9uIHVzOiBmb3IgdGhlIExPUkQgb3VyIEdvZCBpcyByaWdodGVvdXMgaW4gYWxsIGhpcyB3b3JrcyB3aGljaCBoZSBkb2V0aDogZm9yIHdlIG9iZXllZCBub3QgaGlzIHZvaWNlLgpBbmQgbm93LCBPIExvcmQgb3VyIEdvZCwgdGhhdCBoYXN0IGJyb3VnaHQgdGh5IHBlb3BsZSBmb3J0aCBvdXQgb2YgdGhlIGxhbmQgb2YgRWd5cHQgd2l0aCBhIG1pZ2h0eSBoYW5kLCBhbmQgaGFzdCBnb3R0ZW4gdGhlZSByZW5vd24sIGFzIGF0IHRoaXMgZGF5OyB3ZSBoYXZlIHNpbm5lZCwgd2UgaGF2ZSBkb25lIHdpY2tlZGx5LgpPIExPUkQsIGFjY29yZGluZyB0byBhbGwgdGh5IHJpZ2h0ZW91c25lc3MsIEkgYmVzZWVjaCB0aGVlLCBsZXQgdGhpbmUgYW5nZXIgYW5kIHRoeSBmdXJ5IGJlIHR1cm5lZCBhd2F5IGZyb20gdGh5IGNpdHkgSmVydXNhbGVtLCB0aHkgaG9seSBtb3VudGFpbjogYmVjYXVzZSBmb3Igb3VyIHNpbnMsIGFuZCBmb3IgdGhlIGluaXF1aXRpZXMgb2Ygb3VyIGZhdGhlcnMsIEplcnVzYWxlbSBhbmQgdGh5IHBlb3BsZSBhcmUgYmVjb21lIGEgcmVwcm9hY2ggdG8gYWxsIHRoYXQgYXJlIGFib3V0IHVzLgpOb3cgdGhlcmVmb3JlLCBPIG91ciBHb2QsIGhlYXIgdGhlIHByYXllciBvZiB0aHkgc2VydmFudCwgYW5kIGhpcyBzdXBwbGljYXRpb25zLCBhbmQgY2F1c2UgdGh5IGZhY2UgdG8gc2hpbmUgdXBvbiB0aHkgc2FuY3R1YXJ5IHRoYXQgaXMgZGVzb2xhdGUsIGZvciB0aGUgTG9yZCdzIHNha2UuCk8gbXkgR29kLCBpbmNsaW5lIHRoaW5lIGVhciwgYW5kIGhlYXI7IG9wZW4gdGhpbmUgZXllcywgYW5kIGJlaG9sZCBvdXIgZGVzb2xhdGlvbnMsIGFuZCB0aGUgY2l0eSB3aGljaCBpcyBjYWxsZWQgYnkgdGh5IG5hbWU6IGZvciB3ZSBkbyBub3QgcHJlc2VudCBvdXIgc3VwcGxpY2F0aW9ucyBiZWZvcmUgdGhlZSBmb3Igb3VyIHJpZ2h0ZW91c25lc3NlcywgYnV0IGZvciB0aHkgZ3JlYXQgbWVyY2llcy4KTyBMb3JkLCBoZWFyOyBPIExvcmQsIGZvcmdpdmU7IE8gTG9yZCwgaGVhcmtlbiBhbmQgZG87IGRlZmVyIG5vdCwgZm9yIHRoaW5lIG93biBzYWtlLCBPIG15IEdvZDogZm9yIHRoeSBjaXR5IGFuZCB0aHkgcGVvcGxlIGFyZSBjYWxsZWQgYnkgdGh5IG5hbWUuCkFuZCB3aGlsZXMgSSB3YXMgc3BlYWtpbmcsIGFuZCBwcmF5aW5nLCBhbmQgY29uZmVzc2luZyBteSBzaW4gYW5kIHRoZSBzaW4gb2YgbXkgcGVvcGxlIElzcmFlbCwgYW5kIHByZXNlbnRpbmcgbXkgc3VwcGxpY2F0aW9uIGJlZm9yZSB0aGUgTE9SRCBteSBHb2QgZm9yIHRoZSBob2x5IG1vdW50YWluIG9mIG15IEdvZDsKWWVhLCB3aGlsZXMgSSB3YXMgc3BlYWtpbmcgaW4gcHJheWVyLCBldmVuIHRoZSBtYW4gR2FicmllbCwgd2hvbSBJIGhhZCBzZWVuIGluIHRoZSB2aXNpb24gYXQgdGhlIGJlZ2lubmluZywgYmVpbmcgY2F1c2VkIHRvIGZseSBzd2lmdGx5LCB0b3VjaGVkIG1lIGFib3V0IHRoZSB0aW1lIG9mIHRoZSBldmVuaW5nIG9ibGF0aW9uLgpBbmQgaGUgaW5mb3JtZWQgbWUsIGFuZCB0YWxrZWQgd2l0aCBtZSwgYW5kIHNhaWQsIE8gRGFuaWVsLCBJIGFtIG5vdyBjb21lIGZvcnRoIHRvIGdpdmUgdGhlZSBza2lsbCBhbmQgdW5kZXJzdGFuZGluZy4KQXQgdGhlIGJlZ2lubmluZyBvZiB0aHkgc3VwcGxpY2F0aW9ucyB0aGUgY29tbWFuZG1lbnQgY2FtZSBmb3J0aCwgYW5kIEkgYW0gY29tZSB0byBzaGV3IHRoZWU7IGZvciB0aG91IGFydCBncmVhdGx5IGJlbG92ZWQ6IHRoZXJlZm9yZSB1bmRlcnN0YW5kIHRoZSBtYXR0ZXIsIGFuZCBjb25zaWRlciB0aGUgdmlzaW9uLgpTZXZlbnR5IHdlZWtzIGFyZSBkZXRlcm1pbmVkIHVwb24gdGh5IHBlb3BsZSBhbmQgdXBvbiB0aHkgaG9seSBjaXR5LCB0byBmaW5pc2ggdGhlIHRyYW5zZ3Jlc3Npb24sIGFuZCB0byBtYWtlIGFuIGVuZCBvZiBzaW5zLCBhbmQgdG8gbWFrZSByZWNvbmNpbGlhdGlvbiBmb3IgaW5pcXVpdHksIGFuZCB0byBicmluZyBpbiBldmVybGFzdGluZyByaWdodGVvdXNuZXNzLCBhbmQgdG8gc2VhbCB1cCB0aGUgdmlzaW9uIGFuZCBwcm9waGVjeSwgYW5kIHRvIGFub2ludCB0aGUgbW9zdCBIb2x5LgpLbm93IHRoZXJlZm9yZSBhbmQgdW5kZXJzdGFuZCwgdGhhdCBmcm9tIHRoZSBnb2luZyBmb3J0aCBvZiB0aGUgY29tbWFuZG1lbnQgdG8gcmVzdG9yZSBhbmQgdG8gYnVpbGQgSmVydXNhbGVtIHVudG8gdGhlIE1lc3NpYWggdGhlIFByaW5jZSBzaGFsbCBiZSBzZXZlbiB3ZWVrcywgYW5kIHRocmVlc2NvcmUgYW5kIHR3byB3ZWVrczogdGhlIHN0cmVldCBzaGFsbCBiZSBidWlsdCBhZ2FpbiwgYW5kIHRoZSB3YWxsLCBldmVuIGluIHRyb3VibG91cyB0aW1lcy4KQW5kIGFmdGVyIHRocmVlc2NvcmUgYW5kIHR3byB3ZWVrcyBzaGFsbCBNZXNzaWFoIGJlIGN1dCBvZmYsIGJ1dCBub3QgZm9yIGhpbXNlbGY6IGFuZCB0aGUgcGVvcGxlIG9mIHRoZSBwcmluY2UgdGhhdCBzaGFsbCBjb21lIHNoYWxsIGRlc3Ryb3kgdGhlIGNpdHkgYW5kIHRoZSBzYW5jdHVhcnk7IGFuZCB0aGUgZW5kIHRoZXJlb2Ygc2hhbGwgYmUgd2l0aCBhIGZsb29kLCBhbmQgdW50byB0aGUgZW5kIG9mIHRoZSB3YXIgZGVzb2xhdGlvbnMgYXJlIGRldGVybWluZWQuCkFuZCBoZSBzaGFsbCBjb25maXJtIHRoZSBjb3ZlbmFudCB3aXRoIG1hbnkgZm9yIG9uZSB3ZWVrOiBhbmQgaW4gdGhlIG1pZHN0IG9mIHRoZSB3ZWVrIGhlIHNoYWxsIGNhdXNlIHRoZSBzYWNyaWZpY2UgYW5kIHRoZSBvYmxhdGlvbiB0byBjZWFzZSwgYW5kIGZvciB0aGUgb3ZlcnNwcmVhZGluZyBvZiBhYm9taW5hdGlvbnMgaGUgc2hhbGwgbWFrZSBpdCBkZXNvbGF0ZSwgZXZlbiB1bnRpbCB0aGUgY29uc3VtbWF0aW9uLCBhbmQgdGhhdCBkZXRlcm1pbmVkIHNoYWxsIGJlIHBvdXJlZCB1cG9uIHRoZSBkZXNvbGF0ZS4KSW4gdGhlIHRoaXJkIHllYXIgb2YgQ3lydXMga2luZyBvZiBQZXJzaWEgYSB0aGluZyB3YXMgcmV2ZWFsZWQgdW50byBEYW5pZWwsIHdob3NlIG5hbWUgd2FzIGNhbGxlZCBCZWx0ZXNoYXp6YXI7IGFuZCB0aGUgdGhpbmcgd2FzIHRydWUsIGJ1dCB0aGUgdGltZSBhcHBvaW50ZWQgd2FzIGxvbmc6IGFuZCBoZSB1bmRlcnN0b29kIHRoZSB0aGluZywgYW5kIGhhZCB1bmRlcnN0YW5kaW5nIG9mIHRoZSB2aXNpb24uCkluIHRob3NlIGRheXMgSSBEYW5pZWwgd2FzIG1vdXJuaW5nIHRocmVlIGZ1bGwgd2Vla3MuCkkgYXRlIG5vIHBsZWFzYW50IGJyZWFkLCBuZWl0aGVyIGNhbWUgZmxlc2ggbm9yIHdpbmUgaW4gbXkgbW91dGgsIG5laXRoZXIgZGlkIEkgYW5vaW50IG15c2VsZiBhdCBhbGwsIHRpbGwgdGhyZWUgd2hvbGUgd2Vla3Mgd2VyZSBmdWxmaWxsZWQuCkFuZCBpbiB0aGUgZm91ciBhbmQgdHdlbnRpZXRoIGRheSBvZiB0aGUgZmlyc3QgbW9udGgsIGFzIEkgd2FzIGJ5IHRoZSBzaWRlIG9mIHRoZSBncmVhdCByaXZlciwgd2hpY2ggaXMgSGlkZGVrZWw7ClRoZW4gSSBsaWZ0ZWQgdXAgbWluZSBleWVzLCBhbmQgbG9va2VkLCBhbmQgYmVob2xkIGEgY2VydGFpbiBtYW4gY2xvdGhlZCBpbiBsaW5lbiwgd2hvc2UgbG9pbnMgd2VyZSBnaXJkZWQgd2l0aCBmaW5lIGdvbGQgb2YgVXBoYXo6CkhpcyBib2R5IGFsc28gd2FzIGxpa2UgdGhlIGJlcnlsLCBhbmQgaGlzIGZhY2UgYXMgdGhlIGFwcGVhcmFuY2Ugb2YgbGlnaHRuaW5nLCBhbmQgaGlzIGV5ZXMgYXMgbGFtcHMgb2YgZmlyZSwgYW5kIGhpcyBhcm1zIGFuZCBoaXMgZmVldCBsaWtlIGluIGNvbG91ciB0byBwb2xpc2hlZCBicmFzcywgYW5kIHRoZSB2b2ljZSBvZiBoaXMgd29yZHMgbGlrZSB0aGUgdm9pY2Ugb2YgYSBtdWx0aXR1ZGUuCkFuZCBJIERhbmllbCBhbG9uZSBzYXcgdGhlIHZpc2lvbjogZm9yIHRoZSBtZW4gdGhhdCB3ZXJlIHdpdGggbWUgc2F3IG5vdCB0aGUgdmlzaW9uOyBidXQgYSBncmVhdCBxdWFraW5nIGZlbGwgdXBvbiB0aGVtLCBzbyB0aGF0IHRoZXkgZmxlZCB0byBoaWRlIHRoZW1zZWx2ZXMuClRoZXJlZm9yZSBJIHdhcyBsZWZ0IGFsb25lLCBhbmQgc2F3IHRoaXMgZ3JlYXQgdmlzaW9uLCBhbmQgdGhlcmUgcmVtYWluZWQgbm8gc3RyZW5ndGggaW4gbWU6IGZvciBteSBjb21lbGluZXNzIHdhcyB0dXJuZWQgaW4gbWUgaW50byBjb3JydXB0aW9uLCBhbmQgSSByZXRhaW5lZCBubyBzdHJlbmd0aC4KWWV0IGhlYXJkIEkgdGhlIHZvaWNlIG9mIGhpcyB3b3JkczogYW5kIHdoZW4gSSBoZWFyZCB0aGUgdm9pY2Ugb2YgaGlzIHdvcmRzLCB0aGVuIHdhcyBJIGluIGEgZGVlcCBzbGVlcCBvbiBteSBmYWNlLCBhbmQgbXkgZmFjZSB0b3dhcmQgdGhlIGdyb3VuZC4KQW5kLCBiZWhvbGQsIGFuIGhhbmQgdG91Y2hlZCBtZSwgd2hpY2ggc2V0IG1lIHVwb24gbXkga25lZXMgYW5kIHVwb24gdGhlIHBhbG1zIG9mIG15IGhhbmRzLgpBbmQgaGUgc2FpZCB1bnRvIG1lLCBPIERhbmllbCwgYSBtYW4gZ3JlYXRseSBiZWxvdmVkLCB1bmRlcnN0YW5kIHRoZSB3b3JkcyB0aGF0IEkgc3BlYWsgdW50byB0aGVlLCBhbmQgc3RhbmQgdXByaWdodDogZm9yIHVudG8gdGhlZSBhbSBJIG5vdyBzZW50LiBBbmQgd2hlbiBoZSBoYWQgc3Bva2VuIHRoaXMgd29yZCB1bnRvIG1lLCBJIHN0b29kIHRyZW1ibGluZy4KVGhlbiBzYWlkIGhlIHVudG8gbWUsIEZlYXIgbm90LCBEYW5pZWw6IGZvciBmcm9tIHRoZSBmaXJzdCBkYXkgdGhhdCB0aG91IGRpZHN0IHNldCB0aGluZSBoZWFydCB0byB1bmRlcnN0YW5kLCBhbmQgdG8gY2hhc3RlbiB0aHlzZWxmIGJlZm9yZSB0aHkgR29kLCB0aHkgd29yZHMgd2VyZSBoZWFyZCwgYW5kIEkgYW0gY29tZSBmb3IgdGh5IHdvcmRzLgpCdXQgdGhlIHByaW5jZSBvZiB0aGUga2luZ2RvbSBvZiBQZXJzaWEgd2l0aHN0b29kIG1lIG9uZSBhbmQgdHdlbnR5IGRheXM6IGJ1dCwgbG8sIE1pY2hhZWwsIG9uZSBvZiB0aGUgY2hpZWYgcHJpbmNlcywgY2FtZSB0byBoZWxwIG1lOyBhbmQgSSByZW1haW5lZCB0aGVyZSB3aXRoIHRoZSBraW5ncyBvZiBQZXJzaWEuCk5vdyBJIGFtIGNvbWUgdG8gbWFrZSB0aGVlIHVuZGVyc3RhbmQgd2hhdCBzaGFsbCBiZWZhbGwgdGh5IHBlb3BsZSBpbiB0aGUgbGF0dGVyIGRheXM6IGZvciB5ZXQgdGhlIHZpc2lvbiBpcyBmb3IgbWFueSBkYXlzLgpBbmQgd2hlbiBoZSBoYWQgc3Bva2VuIHN1Y2ggd29yZHMgdW50byBtZSwgSSBzZXQgbXkgZmFjZSB0b3dhcmQgdGhlIGdyb3VuZCwgYW5kIEkgYmVjYW1lIGR1bWIuCkFuZCwgYmVob2xkLCBvbmUgbGlrZSB0aGUgc2ltaWxpdHVkZSBvZiB0aGUgc29ucyBvZiBtZW4gdG91Y2hlZCBteSBsaXBzOiB0aGVuIEkgb3BlbmVkIG15IG1vdXRoLCBhbmQgc3Bha2UsIGFuZCBzYWlkIHVudG8gaGltIHRoYXQgc3Rvb2QgYmVmb3JlIG1lLCBPIG15IGxvcmQsIGJ5IHRoZSB2aXNpb24gbXkgc29ycm93cyBhcmUgdHVybmVkIHVwb24gbWUsIGFuZCBJIGhhdmUgcmV0YWluZWQgbm8gc3RyZW5ndGguCkZvciBob3cgY2FuIHRoZSBzZXJ2YW50IG9mIHRoaXMgbXkgbG9yZCB0YWxrIHdpdGggdGhpcyBteSBsb3JkPyBmb3IgYXMgZm9yIG1lLCBzdHJhaWdodHdheSB0aGVyZSByZW1haW5lZCBubyBzdHJlbmd0aCBpbiBtZSwgbmVpdGhlciBpcyB0aGVyZSBicmVhdGggbGVmdCBpbiBtZS4KVGhlbiB0aGVyZSBjYW1lIGFnYWluIGFuZCB0b3VjaGVkIG1lIG9uZSBsaWtlIHRoZSBhcHBlYXJhbmNlIG9mIGEgbWFuLCBhbmQgaGUgc3RyZW5ndGhlbmVkIG1lLApBbmQgc2FpZCwgTyBtYW4gZ3JlYXRseSBiZWxvdmVkLCBmZWFyIG5vdDogcGVhY2UgYmUgdW50byB0aGVlLCBiZSBzdHJvbmcsIHllYSwgYmUgc3Ryb25nLiBBbmQgd2hlbiBoZSBoYWQgc3Bva2VuIHVudG8gbWUsIEkgd2FzIHN0cmVuZ3RoZW5lZCwgYW5kIHNhaWQsIExldCBteSBsb3JkIHNwZWFrOyBmb3IgdGhvdSBoYXN0IHN0cmVuZ3RoZW5lZCBtZS4KVGhlbiBzYWlkIGhlLCBLbm93ZXN0IHRob3Ugd2hlcmVmb3JlIEkgY29tZSB1bnRvIHRoZWU/IGFuZCBub3cgd2lsbCBJIHJldHVybiB0byBmaWdodCB3aXRoIHRoZSBwcmluY2Ugb2YgUGVyc2lhOiBhbmQgd2hlbiBJIGFtIGdvbmUgZm9ydGgsIGxvLCB0aGUgcHJpbmNlIG9mIEdyZWNpYSBzaGFsbCBjb21lLgpCdXQgSSB3aWxsIHNoZXcgdGhlZSB0aGF0IHdoaWNoIGlzIG5vdGVkIGluIHRoZSBzY3JpcHR1cmUgb2YgdHJ1dGg6IGFuZCB0aGVyZSBpcyBub25lIHRoYXQgaG9sZGV0aCB3aXRoIG1lIGluIHRoZXNlIHRoaW5ncywgYnV0IE1pY2hhZWwgeW91ciBwcmluY2UuCkFsc28gSSBpbiB0aGUgZmlyc3QgeWVhciBvZiBEYXJpdXMgdGhlIE1lZGUsIGV2ZW4gSSwgc3Rvb2QgdG8gY29uZmlybSBhbmQgdG8gc3RyZW5ndGhlbiBoaW0uCkFuZCBub3cgd2lsbCBJIHNoZXcgdGhlZSB0aGUgdHJ1dGguIEJlaG9sZCwgdGhlcmUgc2hhbGwgc3RhbmQgdXAgeWV0IHRocmVlIGtpbmdzIGluIFBlcnNpYTsgYW5kIHRoZSBmb3VydGggc2hhbGwgYmUgZmFyIHJpY2hlciB0aGFuIHRoZXkgYWxsOiBhbmQgYnkgaGlzIHN0cmVuZ3RoIHRocm91Z2ggaGlzIHJpY2hlcyBoZSBzaGFsbCBzdGlyIHVwIGFsbCBhZ2FpbnN0IHRoZSByZWFsbSBvZiBHcmVjaWEuCkFuZCBhIG1pZ2h0eSBraW5nIHNoYWxsIHN0YW5kIHVwLCB0aGF0IHNoYWxsIHJ1bGUgd2l0aCBncmVhdCBkb21pbmlvbiwgYW5kIGRvIGFjY29yZGluZyB0byBoaXMgd2lsbC4KQW5kIHdoZW4gaGUgc2hhbGwgc3RhbmQgdXAsIGhpcyBraW5nZG9tIHNoYWxsIGJlIGJyb2tlbiwgYW5kIHNoYWxsIGJlIGRpdmlkZWQgdG93YXJkIHRoZSBmb3VyIHdpbmRzIG9mIGhlYXZlbjsgYW5kIG5vdCB0byBoaXMgcG9zdGVyaXR5LCBub3IgYWNjb3JkaW5nIHRvIGhpcyBkb21pbmlvbiB3aGljaCBoZSBydWxlZDogZm9yIGhpcyBraW5nZG9tIHNoYWxsIGJlIHBsdWNrZWQgdXAsIGV2ZW4gZm9yIG90aGVycyBiZXNpZGUgdGhvc2UuCkFuZCB0aGUga2luZyBvZiB0aGUgc291dGggc2hhbGwgYmUgc3Ryb25nLCBhbmQgb25lIG9mIGhpcyBwcmluY2VzOyBhbmQgaGUgc2hhbGwgYmUgc3Ryb25nIGFib3ZlIGhpbSwgYW5kIGhhdmUgZG9taW5pb247IGhpcyBkb21pbmlvbiBzaGFsbCBiZSBhIGdyZWF0IGRvbWluaW9uLgpBbmQgaW4gdGhlIGVuZCBvZiB5ZWFycyB0aGV5IHNoYWxsIGpvaW4gdGhlbXNlbHZlcyB0b2dldGhlcjsgZm9yIHRoZSBraW5nJ3MgZGF1Z2h0ZXIgb2YgdGhlIHNvdXRoIHNoYWxsIGNvbWUgdG8gdGhlIGtpbmcgb2YgdGhlIG5vcnRoIHRvIG1ha2UgYW4gYWdyZWVtZW50OiBidXQgc2hlIHNoYWxsIG5vdCByZXRhaW4gdGhlIHBvd2VyIG9mIHRoZSBhcm07IG5laXRoZXIgc2hhbGwgaGUgc3RhbmQsIG5vciBoaXMgYXJtOiBidXQgc2hlIHNoYWxsIGJlIGdpdmVuIHVwLCBhbmQgdGhleSB0aGF0IGJyb3VnaHQgaGVyLCBhbmQgaGUgdGhhdCBiZWdhdCBoZXIsIGFuZCBoZSB0aGF0IHN0cmVuZ3RoZW5lZCBoZXIgaW4gdGhlc2UgdGltZXMuCkJ1dCBvdXQgb2YgYSBicmFuY2ggb2YgaGVyIHJvb3RzIHNoYWxsIG9uZSBzdGFuZCB1cCBpbiBoaXMgZXN0YXRlLCB3aGljaCBzaGFsbCBjb21lIHdpdGggYW4gYXJteSwgYW5kIHNoYWxsIGVudGVyIGludG8gdGhlIGZvcnRyZXNzIG9mIHRoZSBraW5nIG9mIHRoZSBub3J0aCwgYW5kIHNoYWxsIGRlYWwgYWdhaW5zdCB0aGVtLCBhbmQgc2hhbGwgcHJldmFpbDoKQW5kIHNoYWxsIGFsc28gY2FycnkgY2FwdGl2ZXMgaW50byBFZ3lwdCB0aGVpciBnb2RzLCB3aXRoIHRoZWlyIHByaW5jZXMsIGFuZCB3aXRoIHRoZWlyIHByZWNpb3VzIHZlc3NlbHMgb2Ygc2lsdmVyIGFuZCBvZiBnb2xkOyBhbmQgaGUgc2hhbGwgY29udGludWUgbW9yZSB5ZWFycyB0aGFuIHRoZSBraW5nIG9mIHRoZSBub3J0aC4KU28gdGhlIGtpbmcgb2YgdGhlIHNvdXRoIHNoYWxsIGNvbWUgaW50byBoaXMga2luZ2RvbSwgYW5kIHNoYWxsIHJldHVybiBpbnRvIGhpcyBvd24gbGFuZC4KQnV0IGhpcyBzb25zIHNoYWxsIGJlIHN0aXJyZWQgdXAsIGFuZCBzaGFsbCBhc3NlbWJsZSBhIG11bHRpdHVkZSBvZiBncmVhdCBmb3JjZXM6IGFuZCBvbmUgc2hhbGwgY2VydGFpbmx5IGNvbWUsIGFuZCBvdmVyZmxvdywgYW5kIHBhc3MgdGhyb3VnaDogdGhlbiBzaGFsbCBoZSByZXR1cm4sIGFuZCBiZSBzdGlycmVkIHVwLCBldmVuIHRvIGhpcyBmb3J0cmVzcy4KQW5kIHRoZSBraW5nIG9mIHRoZSBzb3V0aCBzaGFsbCBiZSBtb3ZlZCB3aXRoIGNob2xlciwgYW5kIHNoYWxsIGNvbWUgZm9ydGggYW5kIGZpZ2h0IHdpdGggaGltLCBldmVuIHdpdGggdGhlIGtpbmcgb2YgdGhlIG5vcnRoOiBhbmQgaGUgc2hhbGwgc2V0IGZvcnRoIGEgZ3JlYXQgbXVsdGl0dWRlOyBidXQgdGhlIG11bHRpdHVkZSBzaGFsbCBiZSBnaXZlbiBpbnRvIGhpcyBoYW5kLgpBbmQgd2hlbiBoZSBoYXRoIHRha2VuIGF3YXkgdGhlIG11bHRpdHVkZSwgaGlzIGhlYXJ0IHNoYWxsIGJlIGxpZnRlZCB1cDsgYW5kIGhlIHNoYWxsIGNhc3QgZG93biBtYW55IHRlbiB0aG91c2FuZHM6IGJ1dCBoZSBzaGFsbCBub3QgYmUgc3RyZW5ndGhlbmVkIGJ5IGl0LgpGb3IgdGhlIGtpbmcgb2YgdGhlIG5vcnRoIHNoYWxsIHJldHVybiwgYW5kIHNoYWxsIHNldCBmb3J0aCBhIG11bHRpdHVkZSBncmVhdGVyIHRoYW4gdGhlIGZvcm1lciwgYW5kIHNoYWxsIGNlcnRhaW5seSBjb21lIGFmdGVyIGNlcnRhaW4geWVhcnMgd2l0aCBhIGdyZWF0IGFybXkgYW5kIHdpdGggbXVjaCByaWNoZXMuCkFuZCBpbiB0aG9zZSB0aW1lcyB0aGVyZSBzaGFsbCBtYW55IHN0YW5kIHVwIGFnYWluc3QgdGhlIGtpbmcgb2YgdGhlIHNvdXRoOiBhbHNvIHRoZSByb2JiZXJzIG9mIHRoeSBwZW9wbGUgc2hhbGwgZXhhbHQgdGhlbXNlbHZlcyB0byBlc3RhYmxpc2ggdGhlIHZpc2lvbjsgYnV0IHRoZXkgc2hhbGwgZmFsbC4KU28gdGhlIGtpbmcgb2YgdGhlIG5vcnRoIHNoYWxsIGNvbWUsIGFuZCBjYXN0IHVwIGEgbW91bnQsIGFuZCB0YWtlIHRoZSBtb3N0IGZlbmNlZCBjaXRpZXM6IGFuZCB0aGUgYXJtcyBvZiB0aGUgc291dGggc2hhbGwgbm90IHdpdGhzdGFuZCwgbmVpdGhlciBoaXMgY2hvc2VuIHBlb3BsZSwgbmVpdGhlciBzaGFsbCB0aGVyZSBiZSBhbnkgc3RyZW5ndGggdG8gd2l0aHN0YW5kLgpCdXQgaGUgdGhhdCBjb21ldGggYWdhaW5zdCBoaW0gc2hhbGwgZG8gYWNjb3JkaW5nIHRvIGhpcyBvd24gd2lsbCwgYW5kIG5vbmUgc2hhbGwgc3RhbmQgYmVmb3JlIGhpbTogYW5kIGhlIHNoYWxsIHN0YW5kIGluIHRoZSBnbG9yaW91cyBsYW5kLCB3aGljaCBieSBoaXMgaGFuZCBzaGFsbCBiZSBjb25zdW1lZC4KSGUgc2hhbGwgYWxzbyBzZXQgaGlzIGZhY2UgdG8gZW50ZXIgd2l0aCB0aGUgc3RyZW5ndGggb2YgaGlzIHdob2xlIGtpbmdkb20sIGFuZCB1cHJpZ2h0IG9uZXMgd2l0aCBoaW07IHRodXMgc2hhbGwgaGUgZG86IGFuZCBoZSBzaGFsbCBnaXZlIGhpbSB0aGUgZGF1Z2h0ZXIgb2Ygd29tZW4sIGNvcnJ1cHRpbmcgaGVyOiBidXQgc2hlIHNoYWxsIG5vdCBzdGFuZCBvbiBoaXMgc2lkZSwgbmVpdGhlciBiZSBmb3IgaGltLgpBZnRlciB0aGlzIHNoYWxsIGhlIHR1cm4gaGlzIGZhY2UgdW50byB0aGUgaXNsZXMsIGFuZCBzaGFsbCB0YWtlIG1hbnk6IGJ1dCBhIHByaW5jZSBmb3IgaGlzIG93biBiZWhhbGYgc2hhbGwgY2F1c2UgdGhlIHJlcHJvYWNoIG9mZmVyZWQgYnkgaGltIHRvIGNlYXNlOyB3aXRob3V0IGhpcyBvd24gcmVwcm9hY2ggaGUgc2hhbGwgY2F1c2UgaXQgdG8gdHVybiB1cG9uIGhpbS4KVGhlbiBoZSBzaGFsbCB0dXJuIGhpcyBmYWNlIHRvd2FyZCB0aGUgZm9ydCBvZiBoaXMgb3duIGxhbmQ6IGJ1dCBoZSBzaGFsbCBzdHVtYmxlIGFuZCBmYWxsLCBhbmQgbm90IGJlIGZvdW5kLgpUaGVuIHNoYWxsIHN0YW5kIHVwIGluIGhpcyBlc3RhdGUgYSByYWlzZXIgb2YgdGF4ZXMgaW4gdGhlIGdsb3J5IG9mIHRoZSBraW5nZG9tOiBidXQgd2l0aGluIGZldyBkYXlzIGhlIHNoYWxsIGJlIGRlc3Ryb3llZCwgbmVpdGhlciBpbiBhbmdlciwgbm9yIGluIGJhdHRsZS4KQW5kIGluIGhpcyBlc3RhdGUgc2hhbGwgc3RhbmQgdXAgYSB2aWxlIHBlcnNvbiwgdG8gd2hvbSB0aGV5IHNoYWxsIG5vdCBnaXZlIHRoZSBob25vdXIgb2YgdGhlIGtpbmdkb206IGJ1dCBoZSBzaGFsbCBjb21lIGluIHBlYWNlYWJseSwgYW5kIG9idGFpbiB0aGUga2luZ2RvbSBieSBmbGF0dGVyaWVzLgpBbmQgd2l0aCB0aGUgYXJtcyBvZiBhIGZsb29kIHNoYWxsIHRoZXkgYmUgb3ZlcmZsb3duIGZyb20gYmVmb3JlIGhpbSwgYW5kIHNoYWxsIGJlIGJyb2tlbjsgeWVhLCBhbHNvIHRoZSBwcmluY2Ugb2YgdGhlIGNvdmVuYW50LgpBbmQgYWZ0ZXIgdGhlIGxlYWd1ZSBtYWRlIHdpdGggaGltIGhlIHNoYWxsIHdvcmsgZGVjZWl0ZnVsbHk6IGZvciBoZSBzaGFsbCBjb21lIHVwLCBhbmQgc2hhbGwgYmVjb21lIHN0cm9uZyB3aXRoIGEgc21hbGwgcGVvcGxlLgpIZSBzaGFsbCBlbnRlciBwZWFjZWFibHkgZXZlbiB1cG9uIHRoZSBmYXR0ZXN0IHBsYWNlcyBvZiB0aGUgcHJvdmluY2U7IGFuZCBoZSBzaGFsbCBkbyB0aGF0IHdoaWNoIGhpcyBmYXRoZXJzIGhhdmUgbm90IGRvbmUsIG5vciBoaXMgZmF0aGVycycgZmF0aGVyczsgaGUgc2hhbGwgc2NhdHRlciBhbW9uZyB0aGVtIHRoZSBwcmV5LCBhbmQgc3BvaWwsIGFuZCByaWNoZXM6IHllYSwgYW5kIGhlIHNoYWxsIGZvcmVjYXN0IGhpcyBkZXZpY2VzIGFnYWluc3QgdGhlIHN0cm9uZyBob2xkcywgZXZlbiBmb3IgYSB0aW1lLgpBbmQgaGUgc2hhbGwgc3RpciB1cCBoaXMgcG93ZXIgYW5kIGhpcyBjb3VyYWdlIGFnYWluc3QgdGhlIGtpbmcgb2YgdGhlIHNvdXRoIHdpdGggYSBncmVhdCBhcm15OyBhbmQgdGhlIGtpbmcgb2YgdGhlIHNvdXRoIHNoYWxsIGJlIHN0aXJyZWQgdXAgdG8gYmF0dGxlIHdpdGggYSB2ZXJ5IGdyZWF0IGFuZCBtaWdodHkgYXJteTsgYnV0IGhlIHNoYWxsIG5vdCBzdGFuZDogZm9yIHRoZXkgc2hhbGwgZm9yZWNhc3QgZGV2aWNlcyBhZ2FpbnN0IGhpbS4KWWVhLCB0aGV5IHRoYXQgZmVlZCBvZiB0aGUgcG9ydGlvbiBvZiBoaXMgbWVhdCBzaGFsbCBkZXN0cm95IGhpbSwgYW5kIGhpcyBhcm15IHNoYWxsIG92ZXJmbG93OiBhbmQgbWFueSBzaGFsbCBmYWxsIGRvd24gc2xhaW4uCkFuZCBib3RoIG9mIHRoZXNlIGtpbmdzJyBoZWFydHMgc2hhbGwgYmUgdG8gZG8gbWlzY2hpZWYsIGFuZCB0aGV5IHNoYWxsIHNwZWFrIGxpZXMgYXQgb25lIHRhYmxlOyBidXQgaXQgc2hhbGwgbm90IHByb3NwZXI6IGZvciB5ZXQgdGhlIGVuZCBzaGFsbCBiZSBhdCB0aGUgdGltZSBhcHBvaW50ZWQuClRoZW4gc2hhbGwgaGUgcmV0dXJuIGludG8gaGlzIGxhbmQgd2l0aCBncmVhdCByaWNoZXM7IGFuZCBoaXMgaGVhcnQgc2hhbGwgYmUgYWdhaW5zdCB0aGUgaG9seSBjb3ZlbmFudDsgYW5kIGhlIHNoYWxsIGRvIGV4cGxvaXRzLCBhbmQgcmV0dXJuIHRvIGhpcyBvd24gbGFuZC4KQXQgdGhlIHRpbWUgYXBwb2ludGVkIGhlIHNoYWxsIHJldHVybiwgYW5kIGNvbWUgdG93YXJkIHRoZSBzb3V0aDsgYnV0IGl0IHNoYWxsIG5vdCBiZSBhcyB0aGUgZm9ybWVyLCBvciBhcyB0aGUgbGF0dGVyLgpGb3IgdGhlIHNoaXBzIG9mIENoaXR0aW0gc2hhbGwgY29tZSBhZ2FpbnN0IGhpbTogdGhlcmVmb3JlIGhlIHNoYWxsIGJlIGdyaWV2ZWQsIGFuZCByZXR1cm4sIGFuZCBoYXZlIGluZGlnbmF0aW9uIGFnYWluc3QgdGhlIGhvbHkgY292ZW5hbnQ6IHNvIHNoYWxsIGhlIGRvOyBoZSBzaGFsbCBldmVuIHJldHVybiwgYW5kIGhhdmUgaW50ZWxsaWdlbmNlIHdpdGggdGhlbSB0aGF0IGZvcnNha2UgdGhlIGhvbHkgY292ZW5hbnQuCkFuZCBhcm1zIHNoYWxsIHN0YW5kIG9uIGhpcyBwYXJ0LCBhbmQgdGhleSBzaGFsbCBwb2xsdXRlIHRoZSBzYW5jdHVhcnkgb2Ygc3RyZW5ndGgsIGFuZCBzaGFsbCB0YWtlIGF3YXkgdGhlIGRhaWx5IHNhY3JpZmljZSwgYW5kIHRoZXkgc2hhbGwgcGxhY2UgdGhlIGFib21pbmF0aW9uIHRoYXQgbWFrZXRoIGRlc29sYXRlLgpBbmQgc3VjaCBhcyBkbyB3aWNrZWRseSBhZ2FpbnN0IHRoZSBjb3ZlbmFudCBzaGFsbCBoZSBjb3JydXB0IGJ5IGZsYXR0ZXJpZXM6IGJ1dCB0aGUgcGVvcGxlIHRoYXQgZG8ga25vdyB0aGVpciBHb2Qgc2hhbGwgYmUgc3Ryb25nLCBhbmQgZG8gZXhwbG9pdHMuCkFuZCB0aGV5IHRoYXQgdW5kZXJzdGFuZCBhbW9uZyB0aGUgcGVvcGxlIHNoYWxsIGluc3RydWN0IG1hbnk6IHlldCB0aGV5IHNoYWxsIGZhbGwgYnkgdGhlIHN3b3JkLCBhbmQgYnkgZmxhbWUsIGJ5IGNhcHRpdml0eSwgYW5kIGJ5IHNwb2lsLCBtYW55IGRheXMuCk5vdyB3aGVuIHRoZXkgc2hhbGwgZmFsbCwgdGhleSBzaGFsbCBiZSBob2xwZW4gd2l0aCBhIGxpdHRsZSBoZWxwOiBidXQgbWFueSBzaGFsbCBjbGVhdmUgdG8gdGhlbSB3aXRoIGZsYXR0ZXJpZXMuCkFuZCBzb21lIG9mIHRoZW0gb2YgdW5kZXJzdGFuZGluZyBzaGFsbCBmYWxsLCB0byB0cnkgdGhlbSwgYW5kIHRvIHB1cmdlLCBhbmQgdG8gbWFrZSB0aGVtIHdoaXRlLCBldmVuIHRvIHRoZSB0aW1lIG9mIHRoZSBlbmQ6IGJlY2F1c2UgaXQgaXMgeWV0IGZvciBhIHRpbWUgYXBwb2ludGVkLgpBbmQgdGhlIGtpbmcgc2hhbGwgZG8gYWNjb3JkaW5nIHRvIGhpcyB3aWxsOyBhbmQgaGUgc2hhbGwgZXhhbHQgaGltc2VsZiwgYW5kIG1hZ25pZnkgaGltc2VsZiBhYm92ZSBldmVyeSBnb2QsIGFuZCBzaGFsbCBzcGVhayBtYXJ2ZWxsb3VzIHRoaW5ncyBhZ2FpbnN0IHRoZSBHb2Qgb2YgZ29kcywgYW5kIHNoYWxsIHByb3NwZXIgdGlsbCB0aGUgaW5kaWduYXRpb24gYmUgYWNjb21wbGlzaGVkOiBmb3IgdGhhdCB0aGF0IGlzIGRldGVybWluZWQgc2hhbGwgYmUgZG9uZS4KTmVpdGhlciBzaGFsbCBoZSByZWdhcmQgdGhlIEdvZCBvZiBoaXMgZmF0aGVycywgbm9yIHRoZSBkZXNpcmUgb2Ygd29tZW4sIG5vciByZWdhcmQgYW55IGdvZDogZm9yIGhlIHNoYWxsIG1hZ25pZnkgaGltc2VsZiBhYm92ZSBhbGwuCkJ1dCBpbiBoaXMgZXN0YXRlIHNoYWxsIGhlIGhvbm91ciB0aGUgR29kIG9mIGZvcmNlczogYW5kIGEgZ29kIHdob20gaGlzIGZhdGhlcnMga25ldyBub3Qgc2hhbGwgaGUgaG9ub3VyIHdpdGggZ29sZCwgYW5kIHNpbHZlciwgYW5kIHdpdGggcHJlY2lvdXMgc3RvbmVzLCBhbmQgcGxlYXNhbnQgdGhpbmdzLgpUaHVzIHNoYWxsIGhlIGRvIGluIHRoZSBtb3N0IHN0cm9uZyBob2xkcyB3aXRoIGEgc3RyYW5nZSBnb2QsIHdob20gaGUgc2hhbGwgYWNrbm93bGVkZ2UgYW5kIGluY3JlYXNlIHdpdGggZ2xvcnk6IGFuZCBoZSBzaGFsbCBjYXVzZSB0aGVtIHRvIHJ1bGUgb3ZlciBtYW55LCBhbmQgc2hhbGwgZGl2aWRlIHRoZSBsYW5kIGZvciBnYWluLgpBbmQgYXQgdGhlIHRpbWUgb2YgdGhlIGVuZCBzaGFsbCB0aGUga2luZyBvZiB0aGUgc291dGggcHVzaCBhdCBoaW06IGFuZCB0aGUga2luZyBvZiB0aGUgbm9ydGggc2hhbGwgY29tZSBhZ2FpbnN0IGhpbSBsaWtlIGEgd2hpcmx3aW5kLCB3aXRoIGNoYXJpb3RzLCBhbmQgd2l0aCBob3JzZW1lbiwgYW5kIHdpdGggbWFueSBzaGlwczsgYW5kIGhlIHNoYWxsIGVudGVyIGludG8gdGhlIGNvdW50cmllcywgYW5kIHNoYWxsIG92ZXJmbG93IGFuZCBwYXNzIG92ZXIuCkhlIHNoYWxsIGVudGVyIGFsc28gaW50byB0aGUgZ2xvcmlvdXMgbGFuZCwgYW5kIG1hbnkgY291bnRyaWVzIHNoYWxsIGJlIG92ZXJ0aHJvd246IGJ1dCB0aGVzZSBzaGFsbCBlc2NhcGUgb3V0IG9mIGhpcyBoYW5kLCBldmVuIEVkb20sIGFuZCBNb2FiLCBhbmQgdGhlIGNoaWVmIG9mIHRoZSBjaGlsZHJlbiBvZiBBbW1vbi4KSGUgc2hhbGwgc3RyZXRjaCBmb3J0aCBoaXMgaGFuZCBhbHNvIHVwb24gdGhlIGNvdW50cmllczogYW5kIHRoZSBsYW5kIG9mIEVneXB0IHNoYWxsIG5vdCBlc2NhcGUuCkJ1dCBoZSBzaGFsbCBoYXZlIHBvd2VyIG92ZXIgdGhlIHRyZWFzdXJlcyBvZiBnb2xkIGFuZCBvZiBzaWx2ZXIsIGFuZCBvdmVyIGFsbCB0aGUgcHJlY2lvdXMgdGhpbmdzIG9mIEVneXB0OiBhbmQgdGhlIExpYnlhbnMgYW5kIHRoZSBFdGhpb3BpYW5zIHNoYWxsIGJlIGF0IGhpcyBzdGVwcy4KQnV0IHRpZGluZ3Mgb3V0IG9mIHRoZSBlYXN0IGFuZCBvdXQgb2YgdGhlIG5vcnRoIHNoYWxsIHRyb3VibGUgaGltOiB0aGVyZWZvcmUgaGUgc2hhbGwgZ28gZm9ydGggd2l0aCBncmVhdCBmdXJ5IHRvIGRlc3Ryb3ksIGFuZCB1dHRlcmx5IHRvIG1ha2UgYXdheSBtYW55LgpBbmQgaGUgc2hhbGwgcGxhbnQgdGhlIHRhYmVybmFjbGVzIG9mIGhpcyBwYWxhY2UgYmV0d2VlbiB0aGUgc2VhcyBpbiB0aGUgZ2xvcmlvdXMgaG9seSBtb3VudGFpbjsgeWV0IGhlIHNoYWxsIGNvbWUgdG8gaGlzIGVuZCwgYW5kIG5vbmUgc2hhbGwgaGVscCBoaW0uCkFuZCBhdCB0aGF0IHRpbWUgc2hhbGwgTWljaGFlbCBzdGFuZCB1cCwgdGhlIGdyZWF0IHByaW5jZSB3aGljaCBzdGFuZGV0aCBmb3IgdGhlIGNoaWxkcmVuIG9mIHRoeSBwZW9wbGU6IGFuZCB0aGVyZSBzaGFsbCBiZSBhIHRpbWUgb2YgdHJvdWJsZSwgc3VjaCBhcyBuZXZlciB3YXMgc2luY2UgdGhlcmUgd2FzIGEgbmF0aW9uIGV2ZW4gdG8gdGhhdCBzYW1lIHRpbWU6IGFuZCBhdCB0aGF0IHRpbWUgdGh5IHBlb3BsZSBzaGFsbCBiZSBkZWxpdmVyZWQsIGV2ZXJ5IG9uZSB0aGF0IHNoYWxsIGJlIGZvdW5kIHdyaXR0ZW4gaW4gdGhlIGJvb2suCkFuZCBtYW55IG9mIHRoZW0gdGhhdCBzbGVlcCBpbiB0aGUgZHVzdCBvZiB0aGUgZWFydGggc2hhbGwgYXdha2UsIHNvbWUgdG8gZXZlcmxhc3RpbmcgbGlmZSwgYW5kIHNvbWUgdG8gc2hhbWUgYW5kIGV2ZXJsYXN0aW5nIGNvbnRlbXB0LgpBbmQgdGhleSB0aGF0IGJlIHdpc2Ugc2hhbGwgc2hpbmUgYXMgdGhlIGJyaWdodG5lc3Mgb2YgdGhlIGZpcm1hbWVudDsgYW5kIHRoZXkgdGhhdCB0dXJuIG1hbnkgdG8gcmlnaHRlb3VzbmVzcyBhcyB0aGUgc3RhcnMgZm9yIGV2ZXIgYW5kIGV2ZXIuCkJ1dCB0aG91LCBPIERhbmllbCwgc2h1dCB1cCB0aGUgd29yZHMsIGFuZCBzZWFsIHRoZSBib29rLCBldmVuIHRvIHRoZSB0aW1lIG9mIHRoZSBlbmQ6IG1hbnkgc2hhbGwgcnVuIHRvIGFuZCBmcm8sIGFuZCBrbm93bGVkZ2Ugc2hhbGwgYmUgaW5jcmVhc2VkLgpUaGVuIEkgRGFuaWVsIGxvb2tlZCwgYW5kLCBiZWhvbGQsIHRoZXJlIHN0b29kIG90aGVyIHR3bywgdGhlIG9uZSBvbiB0aGlzIHNpZGUgb2YgdGhlIGJhbmsgb2YgdGhlIHJpdmVyLCBhbmQgdGhlIG90aGVyIG9uIHRoYXQgc2lkZSBvZiB0aGUgYmFuayBvZiB0aGUgcml2ZXIuCkFuZCBvbmUgc2FpZCB0byB0aGUgbWFuIGNsb3RoZWQgaW4gbGluZW4sIHdoaWNoIHdhcyB1cG9uIHRoZSB3YXRlcnMgb2YgdGhlIHJpdmVyLCBIb3cgbG9uZyBzaGFsbCBpdCBiZSB0byB0aGUgZW5kIG9mIHRoZXNlIHdvbmRlcnM/CkFuZCBJIGhlYXJkIHRoZSBtYW4gY2xvdGhlZCBpbiBsaW5lbiwgd2hpY2ggd2FzIHVwb24gdGhlIHdhdGVycyBvZiB0aGUgcml2ZXIsIHdoZW4gaGUgaGVsZCB1cCBoaXMgcmlnaHQgaGFuZCBhbmQgaGlzIGxlZnQgaGFuZCB1bnRvIGhlYXZlbiwgYW5kIHN3YXJlIGJ5IGhpbSB0aGF0IGxpdmV0aCBmb3IgZXZlciB0aGF0IGl0IHNoYWxsIGJlIGZvciBhIHRpbWUsIHRpbWVzLCBhbmQgYW4gaGFsZjsgYW5kIHdoZW4gaGUgc2hhbGwgaGF2ZSBhY2NvbXBsaXNoZWQgdG8gc2NhdHRlciB0aGUgcG93ZXIgb2YgdGhlIGhvbHkgcGVvcGxlLCBhbGwgdGhlc2UgdGhpbmdzIHNoYWxsIGJlIGZpbmlzaGVkLgpBbmQgSSBoZWFyZCwgYnV0IEkgdW5kZXJzdG9vZCBub3Q6IHRoZW4gc2FpZCBJLCBPIG15IExvcmQsIHdoYXQgc2hhbGwgYmUgdGhlIGVuZCBvZiB0aGVzZSB0aGluZ3M/CkFuZCBoZSBzYWlkLCBHbyB0aHkgd2F5LCBEYW5pZWw6IGZvciB0aGUgd29yZHMgYXJlIGNsb3NlZCB1cCBhbmQgc2VhbGVkIHRpbGwgdGhlIHRpbWUgb2YgdGhlIGVuZC4KTWFueSBzaGFsbCBiZSBwdXJpZmllZCwgYW5kIG1hZGUgd2hpdGUsIGFuZCB0cmllZDsgYnV0IHRoZSB3aWNrZWQgc2hhbGwgZG8gd2lja2VkbHk6IGFuZCBub25lIG9mIHRoZSB3aWNrZWQgc2hhbGwgdW5kZXJzdGFuZDsgYnV0IHRoZSB3aXNlIHNoYWxsIHVuZGVyc3RhbmQuCkFuZCBmcm9tIHRoZSB0aW1lIHRoYXQgdGhlIGRhaWx5IHNhY3JpZmljZSBzaGFsbCBiZSB0YWtlbiBhd2F5LCBhbmQgdGhlIGFib21pbmF0aW9uIHRoYXQgbWFrZXRoIGRlc29sYXRlIHNldCB1cCwgdGhlcmUgc2hhbGwgYmUgYSB0aG91c2FuZCB0d28gaHVuZHJlZCBhbmQgbmluZXR5IGRheXMuCkJsZXNzZWQgaXMgaGUgdGhhdCB3YWl0ZXRoLCBhbmQgY29tZXRoIHRvIHRoZSB0aG91c2FuZCB0aHJlZSBodW5kcmVkIGFuZCBmaXZlIGFuZCB0aGlydHkgZGF5cy4KQnV0IGdvIHRob3UgdGh5IHdheSB0aWxsIHRoZSBlbmQgYmU6IGZvciB0aG91IHNoYWx0IHJlc3QsIGFuZCBzdGFuZCBpbiB0aHkgbG90IGF0IHRoZSBlbmQgb2YgdGhlIGRheXMuClRoZSB3b3JkIG9mIHRoZSBMT1JEIHRoYXQgY2FtZSB1bnRvIEhvc2VhLCB0aGUgc29uIG9mIEJlZXJpLCBpbiB0aGUgZGF5cyBvZiBVenppYWgsIEpvdGhhbSwgQWhheiwgYW5kIEhlemVraWFoLCBraW5ncyBvZiBKdWRhaCwgYW5kIGluIHRoZSBkYXlzIG9mIEplcm9ib2FtIHRoZSBzb24gb2YgSm9hc2gsIGtpbmcgb2YgSXNyYWVsLgpUaGUgYmVnaW5uaW5nIG9mIHRoZSB3b3JkIG9mIHRoZSBMT1JEIGJ5IEhvc2VhLiBBbmQgdGhlIExPUkQgc2FpZCB0byBIb3NlYSwgR28sIHRha2UgdW50byB0aGVlIGEgd2lmZSBvZiB3aG9yZWRvbXMgYW5kIGNoaWxkcmVuIG9mIHdob3JlZG9tczogZm9yIHRoZSBsYW5kIGhhdGggY29tbWl0dGVkIGdyZWF0IHdob3JlZG9tLCBkZXBhcnRpbmcgZnJvbSB0aGUgTE9SRC4KU28gaGUgd2VudCBhbmQgdG9vayBHb21lciB0aGUgZGF1Z2h0ZXIgb2YgRGlibGFpbTsgd2hpY2ggY29uY2VpdmVkLCBhbmQgYmFyZSBoaW0gYSBzb24uCkFuZCB0aGUgTE9SRCBzYWlkIHVudG8gaGltLCBDYWxsIGhpcyBuYW1lIEplenJlZWw7IGZvciB5ZXQgYSBsaXR0bGUgd2hpbGUsIGFuZCBJIHdpbGwgYXZlbmdlIHRoZSBibG9vZCBvZiBKZXpyZWVsIHVwb24gdGhlIGhvdXNlIG9mIEplaHUsIGFuZCB3aWxsIGNhdXNlIHRvIGNlYXNlIHRoZSBraW5nZG9tIG9mIHRoZSBob3VzZSBvZiBJc3JhZWwuCkFuZCBpdCBzaGFsbCBjb21lIHRvIHBhc3MgYXQgdGhhdCBkYXksIHRoYXQgSSB3aWxsIGJyZWFrIHRoZSBib3cgb2YgSXNyYWVsLCBpbiB0aGUgdmFsbGV5IG9mIEplenJlZWwuCkFuZCBzaGUgY29uY2VpdmVkIGFnYWluLCBhbmQgYmFyZSBhIGRhdWdodGVyLiBBbmQgR29kIHNhaWQgdW50byBoaW0sIENhbGwgaGVyIG5hbWUgTG9ydWhhbWFoOiBmb3IgSSB3aWxsIG5vIG1vcmUgaGF2ZSBtZXJjeSB1cG9uIHRoZSBob3VzZSBvZiBJc3JhZWw7IGJ1dCBJIHdpbGwgdXR0ZXJseSB0YWtlIHRoZW0gYXdheS4KQnV0IEkgd2lsbCBoYXZlIG1lcmN5IHVwb24gdGhlIGhvdXNlIG9mIEp1ZGFoLCBhbmQgd2lsbCBzYXZlIHRoZW0gYnkgdGhlIExPUkQgdGhlaXIgR29kLCBhbmQgd2lsbCBub3Qgc2F2ZSB0aGVtIGJ5IGJvdywgbm9yIGJ5IHN3b3JkLCBub3IgYnkgYmF0dGxlLCBieSBob3JzZXMsIG5vciBieSBob3JzZW1lbi4KTm93IHdoZW4gc2hlIGhhZCB3ZWFuZWQgTG9ydWhhbWFoLCBzaGUgY29uY2VpdmVkLCBhbmQgYmFyZSBhIHNvbi4KVGhlbiBzYWlkIEdvZCwgQ2FsbCBoaXMgbmFtZSBMb2FtbWk6IGZvciB5ZSBhcmUgbm90IG15IHBlb3BsZSwgYW5kIEkgd2lsbCBub3QgYmUgeW91ciBHb2QuCllldCB0aGUgbnVtYmVyIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgc2hhbGwgYmUgYXMgdGhlIHNhbmQgb2YgdGhlIHNlYSwgd2hpY2ggY2Fubm90IGJlIG1lYXN1cmVkIG5vciBudW1iZXJlZDsgYW5kIGl0IHNoYWxsIGNvbWUgdG8gcGFzcywgdGhhdCBpbiB0aGUgcGxhY2Ugd2hlcmUgaXQgd2FzIHNhaWQgdW50byB0aGVtLCBZZSBhcmUgbm90IG15IHBlb3BsZSwgdGhlcmUgaXQgc2hhbGwgYmUgc2FpZCB1bnRvIHRoZW0sIFllIGFyZSB0aGUgc29ucyBvZiB0aGUgbGl2aW5nIEdvZC4KVGhlbiBzaGFsbCB0aGUgY2hpbGRyZW4gb2YgSnVkYWggYW5kIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgYmUgZ2F0aGVyZWQgdG9nZXRoZXIsIGFuZCBhcHBvaW50IHRoZW1zZWx2ZXMgb25lIGhlYWQsIGFuZCB0aGV5IHNoYWxsIGNvbWUgdXAgb3V0IG9mIHRoZSBsYW5kOiBmb3IgZ3JlYXQgc2hhbGwgYmUgdGhlIGRheSBvZiBKZXpyZWVsLgpTYXkgeWUgdW50byB5b3VyIGJyZXRocmVuLCBBbW1pOyBhbmQgdG8geW91ciBzaXN0ZXJzLCBSdWhhbWFoLgpQbGVhZCB3aXRoIHlvdXIgbW90aGVyLCBwbGVhZDogZm9yIHNoZSBpcyBub3QgbXkgd2lmZSwgbmVpdGhlciBhbSBJIGhlciBodXNiYW5kOiBsZXQgaGVyIHRoZXJlZm9yZSBwdXQgYXdheSBoZXIgd2hvcmVkb21zIG91dCBvZiBoZXIgc2lnaHQsIGFuZCBoZXIgYWR1bHRlcmllcyBmcm9tIGJldHdlZW4gaGVyIGJyZWFzdHM7Ckxlc3QgSSBzdHJpcCBoZXIgbmFrZWQsIGFuZCBzZXQgaGVyIGFzIGluIHRoZSBkYXkgdGhhdCBzaGUgd2FzIGJvcm4sIGFuZCBtYWtlIGhlciBhcyBhIHdpbGRlcm5lc3MsIGFuZCBzZXQgaGVyIGxpa2UgYSBkcnkgbGFuZCwgYW5kIHNsYXkgaGVyIHdpdGggdGhpcnN0LgpBbmQgSSB3aWxsIG5vdCBoYXZlIG1lcmN5IHVwb24gaGVyIGNoaWxkcmVuOyBmb3IgdGhleSBiZSB0aGUgY2hpbGRyZW4gb2Ygd2hvcmVkb21zLgpGb3IgdGhlaXIgbW90aGVyIGhhdGggcGxheWVkIHRoZSBoYXJsb3Q6IHNoZSB0aGF0IGNvbmNlaXZlZCB0aGVtIGhhdGggZG9uZSBzaGFtZWZ1bGx5OiBmb3Igc2hlIHNhaWQsIEkgd2lsbCBnbyBhZnRlciBteSBsb3ZlcnMsIHRoYXQgZ2l2ZSBtZSBteSBicmVhZCBhbmQgbXkgd2F0ZXIsIG15IHdvb2wgYW5kIG15IGZsYXgsIG1pbmUgb2lsIGFuZCBteSBkcmluay4KVGhlcmVmb3JlLCBiZWhvbGQsIEkgd2lsbCBoZWRnZSB1cCB0aHkgd2F5IHdpdGggdGhvcm5zLCBhbmQgbWFrZSBhIHdhbGwsIHRoYXQgc2hlIHNoYWxsIG5vdCBmaW5kIGhlciBwYXRocy4KQW5kIHNoZSBzaGFsbCBmb2xsb3cgYWZ0ZXIgaGVyIGxvdmVycywgYnV0IHNoZSBzaGFsbCBub3Qgb3ZlcnRha2UgdGhlbTsgYW5kIHNoZSBzaGFsbCBzZWVrIHRoZW0sIGJ1dCBzaGFsbCBub3QgZmluZCB0aGVtOiB0aGVuIHNoYWxsIHNoZSBzYXksIEkgd2lsbCBnbyBhbmQgcmV0dXJuIHRvIG15IGZpcnN0IGh1c2JhbmQ7IGZvciB0aGVuIHdhcyBpdCBiZXR0ZXIgd2l0aCBtZSB0aGFuIG5vdy4KRm9yIHNoZSBkaWQgbm90IGtub3cgdGhhdCBJIGdhdmUgaGVyIGNvcm4sIGFuZCB3aW5lLCBhbmQgb2lsLCBhbmQgbXVsdGlwbGllZCBoZXIgc2lsdmVyIGFuZCBnb2xkLCB3aGljaCB0aGV5IHByZXBhcmVkIGZvciBCYWFsLgpUaGVyZWZvcmUgd2lsbCBJIHJldHVybiwgYW5kIHRha2UgYXdheSBteSBjb3JuIGluIHRoZSB0aW1lIHRoZXJlb2YsIGFuZCBteSB3aW5lIGluIHRoZSBzZWFzb24gdGhlcmVvZiwgYW5kIHdpbGwgcmVjb3ZlciBteSB3b29sIGFuZCBteSBmbGF4IGdpdmVuIHRvIGNvdmVyIGhlciBuYWtlZG5lc3MuCkFuZCBub3cgd2lsbCBJIGRpc2NvdmVyIGhlciBsZXdkbmVzcyBpbiB0aGUgc2lnaHQgb2YgaGVyIGxvdmVycywgYW5kIG5vbmUgc2hhbGwgZGVsaXZlciBoZXIgb3V0IG9mIG1pbmUgaGFuZC4KSSB3aWxsIGFsc28gY2F1c2UgYWxsIGhlciBtaXJ0aCB0byBjZWFzZSwgaGVyIGZlYXN0IGRheXMsIGhlciBuZXcgbW9vbnMsIGFuZCBoZXIgc2FiYmF0aHMsIGFuZCBhbGwgaGVyIHNvbGVtbiBmZWFzdHMuCkFuZCBJIHdpbGwgZGVzdHJveSBoZXIgdmluZXMgYW5kIGhlciBmaWcgdHJlZXMsIHdoZXJlb2Ygc2hlIGhhdGggc2FpZCwgVGhlc2UgYXJlIG15IHJld2FyZHMgdGhhdCBteSBsb3ZlcnMgaGF2ZSBnaXZlbiBtZTogYW5kIEkgd2lsbCBtYWtlIHRoZW0gYSBmb3Jlc3QsIGFuZCB0aGUgYmVhc3RzIG9mIHRoZSBmaWVsZCBzaGFsbCBlYXQgdGhlbS4KQW5kIEkgd2lsbCB2aXNpdCB1cG9uIGhlciB0aGUgZGF5cyBvZiBCYWFsaW0sIHdoZXJlaW4gc2hlIGJ1cm5lZCBpbmNlbnNlIHRvIHRoZW0sIGFuZCBzaGUgZGVja2VkIGhlcnNlbGYgd2l0aCBoZXIgZWFycmluZ3MgYW5kIGhlciBqZXdlbHMsIGFuZCBzaGUgd2VudCBhZnRlciBoZXIgbG92ZXJzLCBhbmQgZm9yZ2F0IG1lLCBzYWl0aCB0aGUgTE9SRC4KVGhlcmVmb3JlLCBiZWhvbGQsIEkgd2lsbCBhbGx1cmUgaGVyLCBhbmQgYnJpbmcgaGVyIGludG8gdGhlIHdpbGRlcm5lc3MsIGFuZCBzcGVhayBjb21mb3J0YWJseSB1bnRvIGhlci4KQW5kIEkgd2lsbCBnaXZlIGhlciBoZXIgdmluZXlhcmRzIGZyb20gdGhlbmNlLCBhbmQgdGhlIHZhbGxleSBvZiBBY2hvciBmb3IgYSBkb29yIG9mIGhvcGU6IGFuZCBzaGUgc2hhbGwgc2luZyB0aGVyZSwgYXMgaW4gdGhlIGRheXMgb2YgaGVyIHlvdXRoLCBhbmQgYXMgaW4gdGhlIGRheSB3aGVuIHNoZSBjYW1lIHVwIG91dCBvZiB0aGUgbGFuZCBvZiBFZ3lwdC4KQW5kIGl0IHNoYWxsIGJlIGF0IHRoYXQgZGF5LCBzYWl0aCB0aGUgTE9SRCwgdGhhdCB0aG91IHNoYWx0IGNhbGwgbWUgSXNoaTsgYW5kIHNoYWx0IGNhbGwgbWUgbm8gbW9yZSBCYWFsaS4KRm9yIEkgd2lsbCB0YWtlIGF3YXkgdGhlIG5hbWVzIG9mIEJhYWxpbSBvdXQgb2YgaGVyIG1vdXRoLCBhbmQgdGhleSBzaGFsbCBubyBtb3JlIGJlIHJlbWVtYmVyZWQgYnkgdGhlaXIgbmFtZS4KQW5kIGluIHRoYXQgZGF5IHdpbGwgSSBtYWtlIGEgY292ZW5hbnQgZm9yIHRoZW0gd2l0aCB0aGUgYmVhc3RzIG9mIHRoZSBmaWVsZCBhbmQgd2l0aCB0aGUgZm93bHMgb2YgaGVhdmVuLCBhbmQgd2l0aCB0aGUgY3JlZXBpbmcgdGhpbmdzIG9mIHRoZSBncm91bmQ6IGFuZCBJIHdpbGwgYnJlYWsgdGhlIGJvdyBhbmQgdGhlIHN3b3JkIGFuZCB0aGUgYmF0dGxlIG91dCBvZiB0aGUgZWFydGgsIGFuZCB3aWxsIG1ha2UgdGhlbSB0byBsaWUgZG93biBzYWZlbHkuCkFuZCBJIHdpbGwgYmV0cm90aCB0aGVlIHVudG8gbWUgZm9yIGV2ZXI7IHllYSwgSSB3aWxsIGJldHJvdGggdGhlZSB1bnRvIG1lIGluIHJpZ2h0ZW91c25lc3MsIGFuZCBpbiBqdWRnbWVudCwgYW5kIGluIGxvdmluZ2tpbmRuZXNzLCBhbmQgaW4gbWVyY2llcy4KSSB3aWxsIGV2ZW4gYmV0cm90aCB0aGVlIHVudG8gbWUgaW4gZmFpdGhmdWxuZXNzOiBhbmQgdGhvdSBzaGFsdCBrbm93IHRoZSBMT1JELgpBbmQgaXQgc2hhbGwgY29tZSB0byBwYXNzIGluIHRoYXQgZGF5LCBJIHdpbGwgaGVhciwgc2FpdGggdGhlIExPUkQsIEkgd2lsbCBoZWFyIHRoZSBoZWF2ZW5zLCBhbmQgdGhleSBzaGFsbCBoZWFyIHRoZSBlYXJ0aDsKQW5kIHRoZSBlYXJ0aCBzaGFsbCBoZWFyIHRoZSBjb3JuLCBhbmQgdGhlIHdpbmUsIGFuZCB0aGUgb2lsOyBhbmQgdGhleSBzaGFsbCBoZWFyIEplenJlZWwuCkFuZCBJIHdpbGwgc293IGhlciB1bnRvIG1lIGluIHRoZSBlYXJ0aDsgYW5kIEkgd2lsbCBoYXZlIG1lcmN5IHVwb24gaGVyIHRoYXQgaGFkIG5vdCBvYnRhaW5lZCBtZXJjeTsgYW5kIEkgd2lsbCBzYXkgdG8gdGhlbSB3aGljaCB3ZXJlIG5vdCBteSBwZW9wbGUsIFRob3UgYXJ0IG15IHBlb3BsZTsgYW5kIHRoZXkgc2hhbGwgc2F5LCBUaG91IGFydCBteSBHb2QuClRoZW4gc2FpZCB0aGUgTE9SRCB1bnRvIG1lLCBHbyB5ZXQsIGxvdmUgYSB3b21hbiBiZWxvdmVkIG9mIGhlciBmcmllbmQsIHlldCBhbiBhZHVsdGVyZXNzLCBhY2NvcmRpbmcgdG8gdGhlIGxvdmUgb2YgdGhlIExPUkQgdG93YXJkIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIHdobyBsb29rIHRvIG90aGVyIGdvZHMsIGFuZCBsb3ZlIGZsYWdvbnMgb2Ygd2luZS4KU28gSSBib3VnaHQgaGVyIHRvIG1lIGZvciBmaWZ0ZWVuIHBpZWNlcyBvZiBzaWx2ZXIsIGFuZCBmb3IgYW4gaG9tZXIgb2YgYmFybGV5LCBhbmQgYW4gaGFsZiBob21lciBvZiBiYXJsZXk6CkFuZCBJIHNhaWQgdW50byBoZXIsIFRob3Ugc2hhbHQgYWJpZGUgZm9yIG1lIG1hbnkgZGF5czsgdGhvdSBzaGFsdCBub3QgcGxheSB0aGUgaGFybG90LCBhbmQgdGhvdSBzaGFsdCBub3QgYmUgZm9yIGFub3RoZXIgbWFuOiBzbyB3aWxsIEkgYWxzbyBiZSBmb3IgdGhlZS4KRm9yIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwgc2hhbGwgYWJpZGUgbWFueSBkYXlzIHdpdGhvdXQgYSBraW5nLCBhbmQgd2l0aG91dCBhIHByaW5jZSwgYW5kIHdpdGhvdXQgYSBzYWNyaWZpY2UsIGFuZCB3aXRob3V0IGFuIGltYWdlLCBhbmQgd2l0aG91dCBhbiBlcGhvZCwgYW5kIHdpdGhvdXQgdGVyYXBoaW06CkFmdGVyd2FyZCBzaGFsbCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIHJldHVybiwgYW5kIHNlZWsgdGhlIExPUkQgdGhlaXIgR29kLCBhbmQgRGF2aWQgdGhlaXIga2luZzsgYW5kIHNoYWxsIGZlYXIgdGhlIExPUkQgYW5kIGhpcyBnb29kbmVzcyBpbiB0aGUgbGF0dGVyIGRheXMuCkhlYXIgdGhlIHdvcmQgb2YgdGhlIExPUkQsIHllIGNoaWxkcmVuIG9mIElzcmFlbDogZm9yIHRoZSBMT1JEIGhhdGggYSBjb250cm92ZXJzeSB3aXRoIHRoZSBpbmhhYml0YW50cyBvZiB0aGUgbGFuZCwgYmVjYXVzZSB0aGVyZSBpcyBubyB0cnV0aCwgbm9yIG1lcmN5LCBub3Iga25vd2xlZGdlIG9mIEdvZCBpbiB0aGUgbGFuZC4KQnkgc3dlYXJpbmcsIGFuZCBseWluZywgYW5kIGtpbGxpbmcsIGFuZCBzdGVhbGluZywgYW5kIGNvbW1pdHRpbmcgYWR1bHRlcnksIHRoZXkgYnJlYWsgb3V0LCBhbmQgYmxvb2QgdG91Y2hldGggYmxvb2QuClRoZXJlZm9yZSBzaGFsbCB0aGUgbGFuZCBtb3VybiwgYW5kIGV2ZXJ5IG9uZSB0aGF0IGR3ZWxsZXRoIHRoZXJlaW4gc2hhbGwgbGFuZ3Vpc2gsIHdpdGggdGhlIGJlYXN0cyBvZiB0aGUgZmllbGQsIGFuZCB3aXRoIHRoZSBmb3dscyBvZiBoZWF2ZW47IHllYSwgdGhlIGZpc2hlcyBvZiB0aGUgc2VhIGFsc28gc2hhbGwgYmUgdGFrZW4gYXdheS4KWWV0IGxldCBubyBtYW4gc3RyaXZlLCBub3IgcmVwcm92ZSBhbm90aGVyOiBmb3IgdGh5IHBlb3BsZSBhcmUgYXMgdGhleSB0aGF0IHN0cml2ZSB3aXRoIHRoZSBwcmllc3QuClRoZXJlZm9yZSBzaGFsdCB0aG91IGZhbGwgaW4gdGhlIGRheSwgYW5kIHRoZSBwcm9waGV0IGFsc28gc2hhbGwgZmFsbCB3aXRoIHRoZWUgaW4gdGhlIG5pZ2h0LCBhbmQgSSB3aWxsIGRlc3Ryb3kgdGh5IG1vdGhlci4KTXkgcGVvcGxlIGFyZSBkZXN0cm95ZWQgZm9yIGxhY2sgb2Yga25vd2xlZGdlOiBiZWNhdXNlIHRob3UgaGFzdCByZWplY3RlZCBrbm93bGVkZ2UsIEkgd2lsbCBhbHNvIHJlamVjdCB0aGVlLCB0aGF0IHRob3Ugc2hhbHQgYmUgbm8gcHJpZXN0IHRvIG1lOiBzZWVpbmcgdGhvdSBoYXN0IGZvcmdvdHRlbiB0aGUgbGF3IG9mIHRoeSBHb2QsIEkgd2lsbCBhbHNvIGZvcmdldCB0aHkgY2hpbGRyZW4uCkFzIHRoZXkgd2VyZSBpbmNyZWFzZWQsIHNvIHRoZXkgc2lubmVkIGFnYWluc3QgbWU6IHRoZXJlZm9yZSB3aWxsIEkgY2hhbmdlIHRoZWlyIGdsb3J5IGludG8gc2hhbWUuClRoZXkgZWF0IHVwIHRoZSBzaW4gb2YgbXkgcGVvcGxlLCBhbmQgdGhleSBzZXQgdGhlaXIgaGVhcnQgb24gdGhlaXIgaW5pcXVpdHkuCkFuZCB0aGVyZSBzaGFsbCBiZSwgbGlrZSBwZW9wbGUsIGxpa2UgcHJpZXN0OiBhbmQgSSB3aWxsIHB1bmlzaCB0aGVtIGZvciB0aGVpciB3YXlzLCBhbmQgcmV3YXJkIHRoZW0gdGhlaXIgZG9pbmdzLgpGb3IgdGhleSBzaGFsbCBlYXQsIGFuZCBub3QgaGF2ZSBlbm91Z2g6IHRoZXkgc2hhbGwgY29tbWl0IHdob3JlZG9tLCBhbmQgc2hhbGwgbm90IGluY3JlYXNlOiBiZWNhdXNlIHRoZXkgaGF2ZSBsZWZ0IG9mZiB0byB0YWtlIGhlZWQgdG8gdGhlIExPUkQuCldob3JlZG9tIGFuZCB3aW5lIGFuZCBuZXcgd2luZSB0YWtlIGF3YXkgdGhlIGhlYXJ0LgpNeSBwZW9wbGUgYXNrIGNvdW5zZWwgYXQgdGhlaXIgc3RvY2tzLCBhbmQgdGhlaXIgc3RhZmYgZGVjbGFyZXRoIHVudG8gdGhlbTogZm9yIHRoZSBzcGlyaXQgb2Ygd2hvcmVkb21zIGhhdGggY2F1c2VkIHRoZW0gdG8gZXJyLCBhbmQgdGhleSBoYXZlIGdvbmUgYSB3aG9yaW5nIGZyb20gdW5kZXIgdGhlaXIgR29kLgpUaGV5IHNhY3JpZmljZSB1cG9uIHRoZSB0b3BzIG9mIHRoZSBtb3VudGFpbnMsIGFuZCBidXJuIGluY2Vuc2UgdXBvbiB0aGUgaGlsbHMsIHVuZGVyIG9ha3MgYW5kIHBvcGxhcnMgYW5kIGVsbXMsIGJlY2F1c2UgdGhlIHNoYWRvdyB0aGVyZW9mIGlzIGdvb2Q6IHRoZXJlZm9yZSB5b3VyIGRhdWdodGVycyBzaGFsbCBjb21taXQgd2hvcmVkb20sIGFuZCB5b3VyIHNwb3VzZXMgc2hhbGwgY29tbWl0IGFkdWx0ZXJ5LgpJIHdpbGwgbm90IHB1bmlzaCB5b3VyIGRhdWdodGVycyB3aGVuIHRoZXkgY29tbWl0IHdob3JlZG9tLCBub3IgeW91ciBzcG91c2VzIHdoZW4gdGhleSBjb21taXQgYWR1bHRlcnk6IGZvciB0aGVtc2VsdmVzIGFyZSBzZXBhcmF0ZWQgd2l0aCB3aG9yZXMsIGFuZCB0aGV5IHNhY3JpZmljZSB3aXRoIGhhcmxvdHM6IHRoZXJlZm9yZSB0aGUgcGVvcGxlIHRoYXQgZG90aCBub3QgdW5kZXJzdGFuZCBzaGFsbCBmYWxsLgpUaG91Z2ggdGhvdSwgSXNyYWVsLCBwbGF5IHRoZSBoYXJsb3QsIHlldCBsZXQgbm90IEp1ZGFoIG9mZmVuZDsgYW5kIGNvbWUgbm90IHllIHVudG8gR2lsZ2FsLCBuZWl0aGVyIGdvIHllIHVwIHRvIEJldGhhdmVuLCBub3Igc3dlYXIsIFRoZSBMT1JEIGxpdmV0aC4KRm9yIElzcmFlbCBzbGlkZXRoIGJhY2sgYXMgYSBiYWNrc2xpZGluZyBoZWlmZXI6IG5vdyB0aGUgTE9SRCB3aWxsIGZlZWQgdGhlbSBhcyBhIGxhbWIgaW4gYSBsYXJnZSBwbGFjZS4KRXBocmFpbSBpcyBqb2luZWQgdG8gaWRvbHM6IGxldCBoaW0gYWxvbmUuClRoZWlyIGRyaW5rIGlzIHNvdXI6IHRoZXkgaGF2ZSBjb21taXR0ZWQgd2hvcmVkb20gY29udGludWFsbHk6IGhlciBydWxlcnMgd2l0aCBzaGFtZSBkbyBsb3ZlLCBHaXZlIHllLgpUaGUgd2luZCBoYXRoIGJvdW5kIGhlciB1cCBpbiBoZXIgd2luZ3MsIGFuZCB0aGV5IHNoYWxsIGJlIGFzaGFtZWQgYmVjYXVzZSBvZiB0aGVpciBzYWNyaWZpY2VzLgpIZWFyIHllIHRoaXMsIE8gcHJpZXN0czsgYW5kIGhlYXJrZW4sIHllIGhvdXNlIG9mIElzcmFlbDsgYW5kIGdpdmUgeWUgZWFyLCBPIGhvdXNlIG9mIHRoZSBraW5nOyBmb3IganVkZ21lbnQgaXMgdG93YXJkIHlvdSwgYmVjYXVzZSB5ZSBoYXZlIGJlZW4gYSBzbmFyZSBvbiBNaXpwYWgsIGFuZCBhIG5ldCBzcHJlYWQgdXBvbiBUYWJvci4KQW5kIHRoZSByZXZvbHRlcnMgYXJlIHByb2ZvdW5kIHRvIG1ha2Ugc2xhdWdodGVyLCB0aG91Z2ggSSBoYXZlIGJlZW4gYSByZWJ1a2VyIG9mIHRoZW0gYWxsLgpJIGtub3cgRXBocmFpbSwgYW5kIElzcmFlbCBpcyBub3QgaGlkIGZyb20gbWU6IGZvciBub3csIE8gRXBocmFpbSwgdGhvdSBjb21taXR0ZXN0IHdob3JlZG9tLCBhbmQgSXNyYWVsIGlzIGRlZmlsZWQuClRoZXkgd2lsbCBub3QgZnJhbWUgdGhlaXIgZG9pbmdzIHRvIHR1cm4gdW50byB0aGVpciBHb2Q6IGZvciB0aGUgc3Bpcml0IG9mIHdob3JlZG9tcyBpcyBpbiB0aGUgbWlkc3Qgb2YgdGhlbSwgYW5kIHRoZXkgaGF2ZSBub3Qga25vd24gdGhlIExPUkQuCkFuZCB0aGUgcHJpZGUgb2YgSXNyYWVsIGRvdGggdGVzdGlmeSB0byBoaXMgZmFjZTogdGhlcmVmb3JlIHNoYWxsIElzcmFlbCBhbmQgRXBocmFpbSBmYWxsIGluIHRoZWlyIGluaXF1aXR5OiBKdWRhaCBhbHNvIHNoYWxsIGZhbGwgd2l0aCB0aGVtLgpUaGV5IHNoYWxsIGdvIHdpdGggdGhlaXIgZmxvY2tzIGFuZCB3aXRoIHRoZWlyIGhlcmRzIHRvIHNlZWsgdGhlIExPUkQ7IGJ1dCB0aGV5IHNoYWxsIG5vdCBmaW5kIGhpbTsgaGUgaGF0aCB3aXRoZHJhd24gaGltc2VsZiBmcm9tIHRoZW0uClRoZXkgaGF2ZSBkZWFsdCB0cmVhY2hlcm91c2x5IGFnYWluc3QgdGhlIExPUkQ6IGZvciB0aGV5IGhhdmUgYmVnb3R0ZW4gc3RyYW5nZSBjaGlsZHJlbjogbm93IHNoYWxsIGEgbW9udGggZGV2b3VyIHRoZW0gd2l0aCB0aGVpciBwb3J0aW9ucy4KQmxvdyB5ZSB0aGUgY29ybmV0IGluIEdpYmVhaCwgYW5kIHRoZSB0cnVtcGV0IGluIFJhbWFoOiBjcnkgYWxvdWQgYXQgQmV0aGF2ZW4sIGFmdGVyIHRoZWUsIE8gQmVuamFtaW4uCkVwaHJhaW0gc2hhbGwgYmUgZGVzb2xhdGUgaW4gdGhlIGRheSBvZiByZWJ1a2U6IGFtb25nIHRoZSB0cmliZXMgb2YgSXNyYWVsIGhhdmUgSSBtYWRlIGtub3duIHRoYXQgd2hpY2ggc2hhbGwgc3VyZWx5IGJlLgpUaGUgcHJpbmNlcyBvZiBKdWRhaCB3ZXJlIGxpa2UgdGhlbSB0aGF0IHJlbW92ZSB0aGUgYm91bmQ6IHRoZXJlZm9yZSBJIHdpbGwgcG91ciBvdXQgbXkgd3JhdGggdXBvbiB0aGVtIGxpa2Ugd2F0ZXIuCkVwaHJhaW0gaXMgb3BwcmVzc2VkIGFuZCBicm9rZW4gaW4ganVkZ21lbnQsIGJlY2F1c2UgaGUgd2lsbGluZ2x5IHdhbGtlZCBhZnRlciB0aGUgY29tbWFuZG1lbnQuClRoZXJlZm9yZSB3aWxsIEkgYmUgdW50byBFcGhyYWltIGFzIGEgbW90aCwgYW5kIHRvIHRoZSBob3VzZSBvZiBKdWRhaCBhcyByb3R0ZW5uZXNzLgpXaGVuIEVwaHJhaW0gc2F3IGhpcyBzaWNrbmVzcywgYW5kIEp1ZGFoIHNhdyBoaXMgd291bmQsIHRoZW4gd2VudCBFcGhyYWltIHRvIHRoZSBBc3N5cmlhbiwgYW5kIHNlbnQgdG8ga2luZyBKYXJlYjogeWV0IGNvdWxkIGhlIG5vdCBoZWFsIHlvdSwgbm9yIGN1cmUgeW91IG9mIHlvdXIgd291bmQuCkZvciBJIHdpbGwgYmUgdW50byBFcGhyYWltIGFzIGEgbGlvbiwgYW5kIGFzIGEgeW91bmcgbGlvbiB0byB0aGUgaG91c2Ugb2YgSnVkYWg6IEksIGV2ZW4gSSwgd2lsbCB0ZWFyIGFuZCBnbyBhd2F5OyBJIHdpbGwgdGFrZSBhd2F5LCBhbmQgbm9uZSBzaGFsbCByZXNjdWUgaGltLgpJIHdpbGwgZ28gYW5kIHJldHVybiB0byBteSBwbGFjZSwgdGlsbCB0aGV5IGFja25vd2xlZGdlIHRoZWlyIG9mZmVuY2UsIGFuZCBzZWVrIG15IGZhY2U6IGluIHRoZWlyIGFmZmxpY3Rpb24gdGhleSB3aWxsIHNlZWsgbWUgZWFybHkuCkNvbWUsIGFuZCBsZXQgdXMgcmV0dXJuIHVudG8gdGhlIExPUkQ6IGZvciBoZSBoYXRoIHRvcm4sIGFuZCBoZSB3aWxsIGhlYWwgdXM7IGhlIGhhdGggc21pdHRlbiwgYW5kIGhlIHdpbGwgYmluZCB1cyB1cC4KQWZ0ZXIgdHdvIGRheXMgd2lsbCBoZSByZXZpdmUgdXM6IGluIHRoZSB0aGlyZCBkYXkgaGUgd2lsbCByYWlzZSB1cyB1cCwgYW5kIHdlIHNoYWxsIGxpdmUgaW4gaGlzIHNpZ2h0LgpUaGVuIHNoYWxsIHdlIGtub3csIGlmIHdlIGZvbGxvdyBvbiB0byBrbm93IHRoZSBMT1JEOiBoaXMgZ29pbmcgZm9ydGggaXMgcHJlcGFyZWQgYXMgdGhlIG1vcm5pbmc7IGFuZCBoZSBzaGFsbCBjb21lIHVudG8gdXMgYXMgdGhlIHJhaW4sIGFzIHRoZSBsYXR0ZXIgYW5kIGZvcm1lciByYWluIHVudG8gdGhlIGVhcnRoLgpPIEVwaHJhaW0sIHdoYXQgc2hhbGwgSSBkbyB1bnRvIHRoZWU/IE8gSnVkYWgsIHdoYXQgc2hhbGwgSSBkbyB1bnRvIHRoZWU/IGZvciB5b3VyIGdvb2RuZXNzIGlzIGFzIGEgbW9ybmluZyBjbG91ZCwgYW5kIGFzIHRoZSBlYXJseSBkZXcgaXQgZ29ldGggYXdheS4KVGhlcmVmb3JlIGhhdmUgSSBoZXdlZCB0aGVtIGJ5IHRoZSBwcm9waGV0czsgSSBoYXZlIHNsYWluIHRoZW0gYnkgdGhlIHdvcmRzIG9mIG15IG1vdXRoOiBhbmQgdGh5IGp1ZGdtZW50cyBhcmUgYXMgdGhlIGxpZ2h0IHRoYXQgZ29ldGggZm9ydGguCkZvciBJIGRlc2lyZWQgbWVyY3ksIGFuZCBub3Qgc2FjcmlmaWNlOyBhbmQgdGhlIGtub3dsZWRnZSBvZiBHb2QgbW9yZSB0aGFuIGJ1cm50IG9mZmVyaW5ncy4KQnV0IHRoZXkgbGlrZSBtZW4gaGF2ZSB0cmFuc2dyZXNzZWQgdGhlIGNvdmVuYW50OiB0aGVyZSBoYXZlIHRoZXkgZGVhbHQgdHJlYWNoZXJvdXNseSBhZ2FpbnN0IG1lLgpHaWxlYWQgaXMgYSBjaXR5IG9mIHRoZW0gdGhhdCB3b3JrIGluaXF1aXR5LCBhbmQgaXMgcG9sbHV0ZWQgd2l0aCBibG9vZC4KQW5kIGFzIHRyb29wcyBvZiByb2JiZXJzIHdhaXQgZm9yIGEgbWFuLCBzbyB0aGUgY29tcGFueSBvZiBwcmllc3RzIG11cmRlciBpbiB0aGUgd2F5IGJ5IGNvbnNlbnQ6IGZvciB0aGV5IGNvbW1pdCBsZXdkbmVzcy4KSSBoYXZlIHNlZW4gYW4gaG9ycmlibGUgdGhpbmcgaW4gdGhlIGhvdXNlIG9mIElzcmFlbDogdGhlcmUgaXMgdGhlIHdob3JlZG9tIG9mIEVwaHJhaW0sIElzcmFlbCBpcyBkZWZpbGVkLgpBbHNvLCBPIEp1ZGFoLCBoZSBoYXRoIHNldCBhbiBoYXJ2ZXN0IGZvciB0aGVlLCB3aGVuIEkgcmV0dXJuZWQgdGhlIGNhcHRpdml0eSBvZiBteSBwZW9wbGUuCldoZW4gSSB3b3VsZCBoYXZlIGhlYWxlZCBJc3JhZWwsIHRoZW4gdGhlIGluaXF1aXR5IG9mIEVwaHJhaW0gd2FzIGRpc2NvdmVyZWQsIGFuZCB0aGUgd2lja2VkbmVzcyBvZiBTYW1hcmlhOiBmb3IgdGhleSBjb21taXQgZmFsc2Vob29kOyBhbmQgdGhlIHRoaWVmIGNvbWV0aCBpbiwgYW5kIHRoZSB0cm9vcCBvZiByb2JiZXJzIHNwb2lsZXRoIHdpdGhvdXQuCkFuZCB0aGV5IGNvbnNpZGVyIG5vdCBpbiB0aGVpciBoZWFydHMgdGhhdCBJIHJlbWVtYmVyIGFsbCB0aGVpciB3aWNrZWRuZXNzOiBub3cgdGhlaXIgb3duIGRvaW5ncyBoYXZlIGJlc2V0IHRoZW0gYWJvdXQ7IHRoZXkgYXJlIGJlZm9yZSBteSBmYWNlLgpUaGV5IG1ha2UgdGhlIGtpbmcgZ2xhZCB3aXRoIHRoZWlyIHdpY2tlZG5lc3MsIGFuZCB0aGUgcHJpbmNlcyB3aXRoIHRoZWlyIGxpZXMuClRoZXkgYXJlIGFsbCBhZHVsdGVyZXJzLCBhcyBhbiBvdmVuIGhlYXRlZCBieSB0aGUgYmFrZXIsIHdobyBjZWFzZXRoIGZyb20gcmFpc2luZyBhZnRlciBoZSBoYXRoIGtuZWFkZWQgdGhlIGRvdWdoLCB1bnRpbCBpdCBiZSBsZWF2ZW5lZC4KSW4gdGhlIGRheSBvZiBvdXIga2luZyB0aGUgcHJpbmNlcyBoYXZlIG1hZGUgaGltIHNpY2sgd2l0aCBib3R0bGVzIG9mIHdpbmU7IGhlIHN0cmV0Y2hlZCBvdXQgaGlzIGhhbmQgd2l0aCBzY29ybmVycy4KRm9yIHRoZXkgaGF2ZSBtYWRlIHJlYWR5IHRoZWlyIGhlYXJ0IGxpa2UgYW4gb3Zlbiwgd2hpbGVzIHRoZXkgbGllIGluIHdhaXQ6IHRoZWlyIGJha2VyIHNsZWVwZXRoIGFsbCB0aGUgbmlnaHQ7IGluIHRoZSBtb3JuaW5nIGl0IGJ1cm5ldGggYXMgYSBmbGFtaW5nIGZpcmUuClRoZXkgYXJlIGFsbCBob3QgYXMgYW4gb3ZlbiwgYW5kIGhhdmUgZGV2b3VyZWQgdGhlaXIganVkZ2VzOyBhbGwgdGhlaXIga2luZ3MgYXJlIGZhbGxlbjogdGhlcmUgaXMgbm9uZSBhbW9uZyB0aGVtIHRoYXQgY2FsbGV0aCB1bnRvIG1lLgpFcGhyYWltLCBoZSBoYXRoIG1peGVkIGhpbXNlbGYgYW1vbmcgdGhlIHBlb3BsZTsgRXBocmFpbSBpcyBhIGNha2Ugbm90IHR1cm5lZC4KU3RyYW5nZXJzIGhhdmUgZGV2b3VyZWQgaGlzIHN0cmVuZ3RoLCBhbmQgaGUga25vd2V0aCBpdCBub3Q6IHllYSwgZ3JheSBoYWlycyBhcmUgaGVyZSBhbmQgdGhlcmUgdXBvbiBoaW0sIHlldCBoZSBrbm93ZXRoIG5vdC4KQW5kIHRoZSBwcmlkZSBvZiBJc3JhZWwgdGVzdGlmaWV0aCB0byBoaXMgZmFjZTogYW5kIHRoZXkgZG8gbm90IHJldHVybiB0byB0aGUgTE9SRCB0aGVpciBHb2QsIG5vciBzZWVrIGhpbSBmb3IgYWxsIHRoaXMuCkVwaHJhaW0gYWxzbyBpcyBsaWtlIGEgc2lsbHkgZG92ZSB3aXRob3V0IGhlYXJ0OiB0aGV5IGNhbGwgdG8gRWd5cHQsIHRoZXkgZ28gdG8gQXNzeXJpYS4KV2hlbiB0aGV5IHNoYWxsIGdvLCBJIHdpbGwgc3ByZWFkIG15IG5ldCB1cG9uIHRoZW07IEkgd2lsbCBicmluZyB0aGVtIGRvd24gYXMgdGhlIGZvd2xzIG9mIHRoZSBoZWF2ZW47IEkgd2lsbCBjaGFzdGlzZSB0aGVtLCBhcyB0aGVpciBjb25ncmVnYXRpb24gaGF0aCBoZWFyZC4KV29lIHVudG8gdGhlbSEgZm9yIHRoZXkgaGF2ZSBmbGVkIGZyb20gbWU6IGRlc3RydWN0aW9uIHVudG8gdGhlbSEgYmVjYXVzZSB0aGV5IGhhdmUgdHJhbnNncmVzc2VkIGFnYWluc3QgbWU6IHRob3VnaCBJIGhhdmUgcmVkZWVtZWQgdGhlbSwgeWV0IHRoZXkgaGF2ZSBzcG9rZW4gbGllcyBhZ2FpbnN0IG1lLgpBbmQgdGhleSBoYXZlIG5vdCBjcmllZCB1bnRvIG1lIHdpdGggdGhlaXIgaGVhcnQsIHdoZW4gdGhleSBob3dsZWQgdXBvbiB0aGVpciBiZWRzOiB0aGV5IGFzc2VtYmxlIHRoZW1zZWx2ZXMgZm9yIGNvcm4gYW5kIHdpbmUsIGFuZCB0aGV5IHJlYmVsIGFnYWluc3QgbWUuClRob3VnaCBJIGhhdmUgYm91bmQgYW5kIHN0cmVuZ3RoZW5lZCB0aGVpciBhcm1zLCB5ZXQgZG8gdGhleSBpbWFnaW5lIG1pc2NoaWVmIGFnYWluc3QgbWUuClRoZXkgcmV0dXJuLCBidXQgbm90IHRvIHRoZSBtb3N0IEhpZ2g6IHRoZXkgYXJlIGxpa2UgYSBkZWNlaXRmdWwgYm93OiB0aGVpciBwcmluY2VzIHNoYWxsIGZhbGwgYnkgdGhlIHN3b3JkIGZvciB0aGUgcmFnZSBvZiB0aGVpciB0b25ndWU6IHRoaXMgc2hhbGwgYmUgdGhlaXIgZGVyaXNpb24gaW4gdGhlIGxhbmQgb2YgRWd5cHQuClNldCB0aGUgdHJ1bXBldCB0byB0aHkgbW91dGguIEhlIHNoYWxsIGNvbWUgYXMgYW4gZWFnbGUgYWdhaW5zdCB0aGUgaG91c2Ugb2YgdGhlIExPUkQsIGJlY2F1c2UgdGhleSBoYXZlIHRyYW5zZ3Jlc3NlZCBteSBjb3ZlbmFudCwgYW5kIHRyZXNwYXNzZWQgYWdhaW5zdCBteSBsYXcuCklzcmFlbCBzaGFsbCBjcnkgdW50byBtZSwgTXkgR29kLCB3ZSBrbm93IHRoZWUuCklzcmFlbCBoYXRoIGNhc3Qgb2ZmIHRoZSB0aGluZyB0aGF0IGlzIGdvb2Q6IHRoZSBlbmVteSBzaGFsbCBwdXJzdWUgaGltLgpUaGV5IGhhdmUgc2V0IHVwIGtpbmdzLCBidXQgbm90IGJ5IG1lOiB0aGV5IGhhdmUgbWFkZSBwcmluY2VzLCBhbmQgSSBrbmV3IGl0IG5vdDogb2YgdGhlaXIgc2lsdmVyIGFuZCB0aGVpciBnb2xkIGhhdmUgdGhleSBtYWRlIHRoZW0gaWRvbHMsIHRoYXQgdGhleSBtYXkgYmUgY3V0IG9mZi4KVGh5IGNhbGYsIE8gU2FtYXJpYSwgaGF0aCBjYXN0IHRoZWUgb2ZmOyBtaW5lIGFuZ2VyIGlzIGtpbmRsZWQgYWdhaW5zdCB0aGVtOiBob3cgbG9uZyB3aWxsIGl0IGJlIGVyZSB0aGV5IGF0dGFpbiB0byBpbm5vY2VuY3k/CkZvciBmcm9tIElzcmFlbCB3YXMgaXQgYWxzbzogdGhlIHdvcmttYW4gbWFkZSBpdDsgdGhlcmVmb3JlIGl0IGlzIG5vdCBHb2Q6IGJ1dCB0aGUgY2FsZiBvZiBTYW1hcmlhIHNoYWxsIGJlIGJyb2tlbiBpbiBwaWVjZXMuCkZvciB0aGV5IGhhdmUgc293biB0aGUgd2luZCwgYW5kIHRoZXkgc2hhbGwgcmVhcCB0aGUgd2hpcmx3aW5kOiBpdCBoYXRoIG5vIHN0YWxrOyB0aGUgYnVkIHNoYWxsIHlpZWxkIG5vIG1lYWw6IGlmIHNvIGJlIGl0IHlpZWxkLCB0aGUgc3RyYW5nZXJzIHNoYWxsIHN3YWxsb3cgaXQgdXAuCklzcmFlbCBpcyBzd2FsbG93ZWQgdXA6IG5vdyBzaGFsbCB0aGV5IGJlIGFtb25nIHRoZSBHZW50aWxlcyBhcyBhIHZlc3NlbCB3aGVyZWluIGlzIG5vIHBsZWFzdXJlLgpGb3IgdGhleSBhcmUgZ29uZSB1cCB0byBBc3N5cmlhLCBhIHdpbGQgYXNzIGFsb25lIGJ5IGhpbXNlbGY6IEVwaHJhaW0gaGF0aCBoaXJlZCBsb3ZlcnMuClllYSwgdGhvdWdoIHRoZXkgaGF2ZSBoaXJlZCBhbW9uZyB0aGUgbmF0aW9ucywgbm93IHdpbGwgSSBnYXRoZXIgdGhlbSwgYW5kIHRoZXkgc2hhbGwgc29ycm93IGEgbGl0dGxlIGZvciB0aGUgYnVyZGVuIG9mIHRoZSBraW5nIG9mIHByaW5jZXMuCkJlY2F1c2UgRXBocmFpbSBoYXRoIG1hZGUgbWFueSBhbHRhcnMgdG8gc2luLCBhbHRhcnMgc2hhbGwgYmUgdW50byBoaW0gdG8gc2luLgpJIGhhdmUgd3JpdHRlbiB0byBoaW0gdGhlIGdyZWF0IHRoaW5ncyBvZiBteSBsYXcsIGJ1dCB0aGV5IHdlcmUgY291bnRlZCBhcyBhIHN0cmFuZ2UgdGhpbmcuClRoZXkgc2FjcmlmaWNlIGZsZXNoIGZvciB0aGUgc2FjcmlmaWNlcyBvZiBtaW5lIG9mZmVyaW5ncywgYW5kIGVhdCBpdDsgYnV0IHRoZSBMT1JEIGFjY2VwdGV0aCB0aGVtIG5vdDsgbm93IHdpbGwgaGUgcmVtZW1iZXIgdGhlaXIgaW5pcXVpdHksIGFuZCB2aXNpdCB0aGVpciBzaW5zOiB0aGV5IHNoYWxsIHJldHVybiB0byBFZ3lwdC4KRm9yIElzcmFlbCBoYXRoIGZvcmdvdHRlbiBoaXMgTWFrZXIsIGFuZCBidWlsZGV0aCB0ZW1wbGVzOyBhbmQgSnVkYWggaGF0aCBtdWx0aXBsaWVkIGZlbmNlZCBjaXRpZXM6IGJ1dCBJIHdpbGwgc2VuZCBhIGZpcmUgdXBvbiBoaXMgY2l0aWVzLCBhbmQgaXQgc2hhbGwgZGV2b3VyIHRoZSBwYWxhY2VzIHRoZXJlb2YuClJlam9pY2Ugbm90LCBPIElzcmFlbCwgZm9yIGpveSwgYXMgb3RoZXIgcGVvcGxlOiBmb3IgdGhvdSBoYXN0IGdvbmUgYSB3aG9yaW5nIGZyb20gdGh5IEdvZCwgdGhvdSBoYXN0IGxvdmVkIGEgcmV3YXJkIHVwb24gZXZlcnkgY29ybmZsb29yLgpUaGUgZmxvb3IgYW5kIHRoZSB3aW5lcHJlc3Mgc2hhbGwgbm90IGZlZWQgdGhlbSwgYW5kIHRoZSBuZXcgd2luZSBzaGFsbCBmYWlsIGluIGhlci4KVGhleSBzaGFsbCBub3QgZHdlbGwgaW4gdGhlIExPUkQncyBsYW5kOyBidXQgRXBocmFpbSBzaGFsbCByZXR1cm4gdG8gRWd5cHQsIGFuZCB0aGV5IHNoYWxsIGVhdCB1bmNsZWFuIHRoaW5ncyBpbiBBc3N5cmlhLgpUaGV5IHNoYWxsIG5vdCBvZmZlciB3aW5lIG9mZmVyaW5ncyB0byB0aGUgTE9SRCwgbmVpdGhlciBzaGFsbCB0aGV5IGJlIHBsZWFzaW5nIHVudG8gaGltOiB0aGVpciBzYWNyaWZpY2VzIHNoYWxsIGJlIHVudG8gdGhlbSBhcyB0aGUgYnJlYWQgb2YgbW91cm5lcnM7IGFsbCB0aGF0IGVhdCB0aGVyZW9mIHNoYWxsIGJlIHBvbGx1dGVkOiBmb3IgdGhlaXIgYnJlYWQgZm9yIHRoZWlyIHNvdWwgc2hhbGwgbm90IGNvbWUgaW50byB0aGUgaG91c2Ugb2YgdGhlIExPUkQuCldoYXQgd2lsbCB5ZSBkbyBpbiB0aGUgc29sZW1uIGRheSwgYW5kIGluIHRoZSBkYXkgb2YgdGhlIGZlYXN0IG9mIHRoZSBMT1JEPwpGb3IsIGxvLCB0aGV5IGFyZSBnb25lIGJlY2F1c2Ugb2YgZGVzdHJ1Y3Rpb246IEVneXB0IHNoYWxsIGdhdGhlciB0aGVtIHVwLCBNZW1waGlzIHNoYWxsIGJ1cnkgdGhlbTogdGhlIHBsZWFzYW50IHBsYWNlcyBmb3IgdGhlaXIgc2lsdmVyLCBuZXR0bGVzIHNoYWxsIHBvc3Nlc3MgdGhlbTogdGhvcm5zIHNoYWxsIGJlIGluIHRoZWlyIHRhYmVybmFjbGVzLgpUaGUgZGF5cyBvZiB2aXNpdGF0aW9uIGFyZSBjb21lLCB0aGUgZGF5cyBvZiByZWNvbXBlbmNlIGFyZSBjb21lOyBJc3JhZWwgc2hhbGwga25vdyBpdDogdGhlIHByb3BoZXQgaXMgYSBmb29sLCB0aGUgc3Bpcml0dWFsIG1hbiBpcyBtYWQsIGZvciB0aGUgbXVsdGl0dWRlIG9mIHRoaW5lIGluaXF1aXR5LCBhbmQgdGhlIGdyZWF0IGhhdHJlZC4KVGhlIHdhdGNobWFuIG9mIEVwaHJhaW0gd2FzIHdpdGggbXkgR29kOiBidXQgdGhlIHByb3BoZXQgaXMgYSBzbmFyZSBvZiBhIGZvd2xlciBpbiBhbGwgaGlzIHdheXMsIGFuZCBoYXRyZWQgaW4gdGhlIGhvdXNlIG9mIGhpcyBHb2QuClRoZXkgaGF2ZSBkZWVwbHkgY29ycnVwdGVkIHRoZW1zZWx2ZXMsIGFzIGluIHRoZSBkYXlzIG9mIEdpYmVhaDogdGhlcmVmb3JlIGhlIHdpbGwgcmVtZW1iZXIgdGhlaXIgaW5pcXVpdHksIGhlIHdpbGwgdmlzaXQgdGhlaXIgc2lucy4KSSBmb3VuZCBJc3JhZWwgbGlrZSBncmFwZXMgaW4gdGhlIHdpbGRlcm5lc3M7IEkgc2F3IHlvdXIgZmF0aGVycyBhcyB0aGUgZmlyc3RyaXBlIGluIHRoZSBmaWcgdHJlZSBhdCBoZXIgZmlyc3QgdGltZTogYnV0IHRoZXkgd2VudCB0byBCYWFscGVvciwgYW5kIHNlcGFyYXRlZCB0aGVtc2VsdmVzIHVudG8gdGhhdCBzaGFtZTsgYW5kIHRoZWlyIGFib21pbmF0aW9ucyB3ZXJlIGFjY29yZGluZyBhcyB0aGV5IGxvdmVkLgpBcyBmb3IgRXBocmFpbSwgdGhlaXIgZ2xvcnkgc2hhbGwgZmx5IGF3YXkgbGlrZSBhIGJpcmQsIGZyb20gdGhlIGJpcnRoLCBhbmQgZnJvbSB0aGUgd29tYiwgYW5kIGZyb20gdGhlIGNvbmNlcHRpb24uClRob3VnaCB0aGV5IGJyaW5nIHVwIHRoZWlyIGNoaWxkcmVuLCB5ZXQgd2lsbCBJIGJlcmVhdmUgdGhlbSwgdGhhdCB0aGVyZSBzaGFsbCBub3QgYmUgYSBtYW4gbGVmdDogeWVhLCB3b2UgYWxzbyB0byB0aGVtIHdoZW4gSSBkZXBhcnQgZnJvbSB0aGVtIQpFcGhyYWltLCBhcyBJIHNhdyBUeXJ1cywgaXMgcGxhbnRlZCBpbiBhIHBsZWFzYW50IHBsYWNlOiBidXQgRXBocmFpbSBzaGFsbCBicmluZyBmb3J0aCBoaXMgY2hpbGRyZW4gdG8gdGhlIG11cmRlcmVyLgpHaXZlIHRoZW0sIE8gTE9SRDogd2hhdCB3aWx0IHRob3UgZ2l2ZT8gZ2l2ZSB0aGVtIGEgbWlzY2Fycnlpbmcgd29tYiBhbmQgZHJ5IGJyZWFzdHMuCkFsbCB0aGVpciB3aWNrZWRuZXNzIGlzIGluIEdpbGdhbDogZm9yIHRoZXJlIEkgaGF0ZWQgdGhlbTogZm9yIHRoZSB3aWNrZWRuZXNzIG9mIHRoZWlyIGRvaW5ncyBJIHdpbGwgZHJpdmUgdGhlbSBvdXQgb2YgbWluZSBob3VzZSwgSSB3aWxsIGxvdmUgdGhlbSBubyBtb3JlOiBhbGwgdGhlaXIgcHJpbmNlcyBhcmUgcmV2b2x0ZXJzLgpFcGhyYWltIGlzIHNtaXR0ZW4sIHRoZWlyIHJvb3QgaXMgZHJpZWQgdXAsIHRoZXkgc2hhbGwgYmVhciBubyBmcnVpdDogeWVhLCB0aG91Z2ggdGhleSBicmluZyBmb3J0aCwgeWV0IHdpbGwgSSBzbGF5IGV2ZW4gdGhlIGJlbG92ZWQgZnJ1aXQgb2YgdGhlaXIgd29tYi4KTXkgR29kIHdpbGwgY2FzdCB0aGVtIGF3YXksIGJlY2F1c2UgdGhleSBkaWQgbm90IGhlYXJrZW4gdW50byBoaW06IGFuZCB0aGV5IHNoYWxsIGJlIHdhbmRlcmVycyBhbW9uZyB0aGUgbmF0aW9ucy4KSXNyYWVsIGlzIGFuIGVtcHR5IHZpbmUsIGhlIGJyaW5nZXRoIGZvcnRoIGZydWl0IHVudG8gaGltc2VsZjogYWNjb3JkaW5nIHRvIHRoZSBtdWx0aXR1ZGUgb2YgaGlzIGZydWl0IGhlIGhhdGggaW5jcmVhc2VkIHRoZSBhbHRhcnM7IGFjY29yZGluZyB0byB0aGUgZ29vZG5lc3Mgb2YgaGlzIGxhbmQgdGhleSBoYXZlIG1hZGUgZ29vZGx5IGltYWdlcy4KVGhlaXIgaGVhcnQgaXMgZGl2aWRlZDsgbm93IHNoYWxsIHRoZXkgYmUgZm91bmQgZmF1bHR5OiBoZSBzaGFsbCBicmVhayBkb3duIHRoZWlyIGFsdGFycywgaGUgc2hhbGwgc3BvaWwgdGhlaXIgaW1hZ2VzLgpGb3Igbm93IHRoZXkgc2hhbGwgc2F5LCBXZSBoYXZlIG5vIGtpbmcsIGJlY2F1c2Ugd2UgZmVhcmVkIG5vdCB0aGUgTE9SRDsgd2hhdCB0aGVuIHNob3VsZCBhIGtpbmcgZG8gdG8gdXM/ClRoZXkgaGF2ZSBzcG9rZW4gd29yZHMsIHN3ZWFyaW5nIGZhbHNlbHkgaW4gbWFraW5nIGEgY292ZW5hbnQ6IHRodXMganVkZ21lbnQgc3ByaW5nZXRoIHVwIGFzIGhlbWxvY2sgaW4gdGhlIGZ1cnJvd3Mgb2YgdGhlIGZpZWxkLgpUaGUgaW5oYWJpdGFudHMgb2YgU2FtYXJpYSBzaGFsbCBmZWFyIGJlY2F1c2Ugb2YgdGhlIGNhbHZlcyBvZiBCZXRoYXZlbjogZm9yIHRoZSBwZW9wbGUgdGhlcmVvZiBzaGFsbCBtb3VybiBvdmVyIGl0LCBhbmQgdGhlIHByaWVzdHMgdGhlcmVvZiB0aGF0IHJlam9pY2VkIG9uIGl0LCBmb3IgdGhlIGdsb3J5IHRoZXJlb2YsIGJlY2F1c2UgaXQgaXMgZGVwYXJ0ZWQgZnJvbSBpdC4KSXQgc2hhbGwgYmUgYWxzbyBjYXJyaWVkIHVudG8gQXNzeXJpYSBmb3IgYSBwcmVzZW50IHRvIGtpbmcgSmFyZWI6IEVwaHJhaW0gc2hhbGwgcmVjZWl2ZSBzaGFtZSwgYW5kIElzcmFlbCBzaGFsbCBiZSBhc2hhbWVkIG9mIGhpcyBvd24gY291bnNlbC4KQXMgZm9yIFNhbWFyaWEsIGhlciBraW5nIGlzIGN1dCBvZmYgYXMgdGhlIGZvYW0gdXBvbiB0aGUgd2F0ZXIuClRoZSBoaWdoIHBsYWNlcyBhbHNvIG9mIEF2ZW4sIHRoZSBzaW4gb2YgSXNyYWVsLCBzaGFsbCBiZSBkZXN0cm95ZWQ6IHRoZSB0aG9ybiBhbmQgdGhlIHRoaXN0bGUgc2hhbGwgY29tZSB1cCBvbiB0aGVpciBhbHRhcnM7IGFuZCB0aGV5IHNoYWxsIHNheSB0byB0aGUgbW91bnRhaW5zLCBDb3ZlciB1czsgYW5kIHRvIHRoZSBoaWxscywgRmFsbCBvbiB1cy4KTyBJc3JhZWwsIHRob3UgaGFzdCBzaW5uZWQgZnJvbSB0aGUgZGF5cyBvZiBHaWJlYWg6IHRoZXJlIHRoZXkgc3Rvb2Q6IHRoZSBiYXR0bGUgaW4gR2liZWFoIGFnYWluc3QgdGhlIGNoaWxkcmVuIG9mIGluaXF1aXR5IGRpZCBub3Qgb3ZlcnRha2UgdGhlbS4KSXQgaXMgaW4gbXkgZGVzaXJlIHRoYXQgSSBzaG91bGQgY2hhc3Rpc2UgdGhlbTsgYW5kIHRoZSBwZW9wbGUgc2hhbGwgYmUgZ2F0aGVyZWQgYWdhaW5zdCB0aGVtLCB3aGVuIHRoZXkgc2hhbGwgYmluZCB0aGVtc2VsdmVzIGluIHRoZWlyIHR3byBmdXJyb3dzLgpBbmQgRXBocmFpbSBpcyBhcyBhbiBoZWlmZXIgdGhhdCBpcyB0YXVnaHQsIGFuZCBsb3ZldGggdG8gdHJlYWQgb3V0IHRoZSBjb3JuOyBidXQgSSBwYXNzZWQgb3ZlciB1cG9uIGhlciBmYWlyIG5lY2s6IEkgd2lsbCBtYWtlIEVwaHJhaW0gdG8gcmlkZTsgSnVkYWggc2hhbGwgcGxvdywgYW5kIEphY29iIHNoYWxsIGJyZWFrIGhpcyBjbG9kcy4KU293IHRvIHlvdXJzZWx2ZXMgaW4gcmlnaHRlb3VzbmVzcywgcmVhcCBpbiBtZXJjeTsgYnJlYWsgdXAgeW91ciBmYWxsb3cgZ3JvdW5kOiBmb3IgaXQgaXMgdGltZSB0byBzZWVrIHRoZSBMT1JELCB0aWxsIGhlIGNvbWUgYW5kIHJhaW4gcmlnaHRlb3VzbmVzcyB1cG9uIHlvdS4KWWUgaGF2ZSBwbG93ZWQgd2lja2VkbmVzcywgeWUgaGF2ZSByZWFwZWQgaW5pcXVpdHk7IHllIGhhdmUgZWF0ZW4gdGhlIGZydWl0IG9mIGxpZXM6IGJlY2F1c2UgdGhvdSBkaWRzdCB0cnVzdCBpbiB0aHkgd2F5LCBpbiB0aGUgbXVsdGl0dWRlIG9mIHRoeSBtaWdodHkgbWVuLgpUaGVyZWZvcmUgc2hhbGwgYSB0dW11bHQgYXJpc2UgYW1vbmcgdGh5IHBlb3BsZSwgYW5kIGFsbCB0aHkgZm9ydHJlc3NlcyBzaGFsbCBiZSBzcG9pbGVkLCBhcyBTaGFsbWFuIHNwb2lsZWQgQmV0aGFyYmVsIGluIHRoZSBkYXkgb2YgYmF0dGxlOiB0aGUgbW90aGVyIHdhcyBkYXNoZWQgaW4gcGllY2VzIHVwb24gaGVyIGNoaWxkcmVuLgpTbyBzaGFsbCBCZXRoZWwgZG8gdW50byB5b3UgYmVjYXVzZSBvZiB5b3VyIGdyZWF0IHdpY2tlZG5lc3M6IGluIGEgbW9ybmluZyBzaGFsbCB0aGUga2luZyBvZiBJc3JhZWwgdXR0ZXJseSBiZSBjdXQgb2ZmLgpXaGVuIElzcmFlbCB3YXMgYSBjaGlsZCwgdGhlbiBJIGxvdmVkIGhpbSwgYW5kIGNhbGxlZCBteSBzb24gb3V0IG9mIEVneXB0LgpBcyB0aGV5IGNhbGxlZCB0aGVtLCBzbyB0aGV5IHdlbnQgZnJvbSB0aGVtOiB0aGV5IHNhY3JpZmljZWQgdW50byBCYWFsaW0sIGFuZCBidXJuZWQgaW5jZW5zZSB0byBncmF2ZW4gaW1hZ2VzLgpJIHRhdWdodCBFcGhyYWltIGFsc28gdG8gZ28sIHRha2luZyB0aGVtIGJ5IHRoZWlyIGFybXM7IGJ1dCB0aGV5IGtuZXcgbm90IHRoYXQgSSBoZWFsZWQgdGhlbS4KSSBkcmV3IHRoZW0gd2l0aCBjb3JkcyBvZiBhIG1hbiwgd2l0aCBiYW5kcyBvZiBsb3ZlOiBhbmQgSSB3YXMgdG8gdGhlbSBhcyB0aGV5IHRoYXQgdGFrZSBvZmYgdGhlIHlva2Ugb24gdGhlaXIgamF3cywgYW5kIEkgbGFpZCBtZWF0IHVudG8gdGhlbS4KSGUgc2hhbGwgbm90IHJldHVybiBpbnRvIHRoZSBsYW5kIG9mIEVneXB0LCBhbmQgdGhlIEFzc3lyaWFuIHNoYWxsIGJlIGhpcyBraW5nLCBiZWNhdXNlIHRoZXkgcmVmdXNlZCB0byByZXR1cm4uCkFuZCB0aGUgc3dvcmQgc2hhbGwgYWJpZGUgb24gaGlzIGNpdGllcywgYW5kIHNoYWxsIGNvbnN1bWUgaGlzIGJyYW5jaGVzLCBhbmQgZGV2b3VyIHRoZW0sIGJlY2F1c2Ugb2YgdGhlaXIgb3duIGNvdW5zZWxzLgpBbmQgbXkgcGVvcGxlIGFyZSBiZW50IHRvIGJhY2tzbGlkaW5nIGZyb20gbWU6IHRob3VnaCB0aGV5IGNhbGxlZCB0aGVtIHRvIHRoZSBtb3N0IEhpZ2gsIG5vbmUgYXQgYWxsIHdvdWxkIGV4YWx0IGhpbS4KSG93IHNoYWxsIEkgZ2l2ZSB0aGVlIHVwLCBFcGhyYWltPyBob3cgc2hhbGwgSSBkZWxpdmVyIHRoZWUsIElzcmFlbD8gaG93IHNoYWxsIEkgbWFrZSB0aGVlIGFzIEFkbWFoPyBob3cgc2hhbGwgSSBzZXQgdGhlZSBhcyBaZWJvaW0/IG1pbmUgaGVhcnQgaXMgdHVybmVkIHdpdGhpbiBtZSwgbXkgcmVwZW50aW5ncyBhcmUga2luZGxlZCB0b2dldGhlci4KSSB3aWxsIG5vdCBleGVjdXRlIHRoZSBmaWVyY2VuZXNzIG9mIG1pbmUgYW5nZXIsIEkgd2lsbCBub3QgcmV0dXJuIHRvIGRlc3Ryb3kgRXBocmFpbTogZm9yIEkgYW0gR29kLCBhbmQgbm90IG1hbjsgdGhlIEhvbHkgT25lIGluIHRoZSBtaWRzdCBvZiB0aGVlOiBhbmQgSSB3aWxsIG5vdCBlbnRlciBpbnRvIHRoZSBjaXR5LgpUaGV5IHNoYWxsIHdhbGsgYWZ0ZXIgdGhlIExPUkQ6IGhlIHNoYWxsIHJvYXIgbGlrZSBhIGxpb246IHdoZW4gaGUgc2hhbGwgcm9hciwgdGhlbiB0aGUgY2hpbGRyZW4gc2hhbGwgdHJlbWJsZSBmcm9tIHRoZSB3ZXN0LgpUaGV5IHNoYWxsIHRyZW1ibGUgYXMgYSBiaXJkIG91dCBvZiBFZ3lwdCwgYW5kIGFzIGEgZG92ZSBvdXQgb2YgdGhlIGxhbmQgb2YgQXNzeXJpYTogYW5kIEkgd2lsbCBwbGFjZSB0aGVtIGluIHRoZWlyIGhvdXNlcywgc2FpdGggdGhlIExPUkQuCkVwaHJhaW0gY29tcGFzc2V0aCBtZSBhYm91dCB3aXRoIGxpZXMsIGFuZCB0aGUgaG91c2Ugb2YgSXNyYWVsIHdpdGggZGVjZWl0OiBidXQgSnVkYWggeWV0IHJ1bGV0aCB3aXRoIEdvZCwgYW5kIGlzIGZhaXRoZnVsIHdpdGggdGhlIHNhaW50cy4KRXBocmFpbSBmZWVkZXRoIG9uIHdpbmQsIGFuZCBmb2xsb3dldGggYWZ0ZXIgdGhlIGVhc3Qgd2luZDogaGUgZGFpbHkgaW5jcmVhc2V0aCBsaWVzIGFuZCBkZXNvbGF0aW9uOyBhbmQgdGhleSBkbyBtYWtlIGEgY292ZW5hbnQgd2l0aCB0aGUgQXNzeXJpYW5zLCBhbmQgb2lsIGlzIGNhcnJpZWQgaW50byBFZ3lwdC4KVGhlIExPUkQgaGF0aCBhbHNvIGEgY29udHJvdmVyc3kgd2l0aCBKdWRhaCwgYW5kIHdpbGwgcHVuaXNoIEphY29iIGFjY29yZGluZyB0byBoaXMgd2F5czsgYWNjb3JkaW5nIHRvIGhpcyBkb2luZ3Mgd2lsbCBoZSByZWNvbXBlbnNlIGhpbS4KSGUgdG9vayBoaXMgYnJvdGhlciBieSB0aGUgaGVlbCBpbiB0aGUgd29tYiwgYW5kIGJ5IGhpcyBzdHJlbmd0aCBoZSBoYWQgcG93ZXIgd2l0aCBHb2Q6ClllYSwgaGUgaGFkIHBvd2VyIG92ZXIgdGhlIGFuZ2VsLCBhbmQgcHJldmFpbGVkOiBoZSB3ZXB0LCBhbmQgbWFkZSBzdXBwbGljYXRpb24gdW50byBoaW06IGhlIGZvdW5kIGhpbSBpbiBCZXRoZWwsIGFuZCB0aGVyZSBoZSBzcGFrZSB3aXRoIHVzOwpFdmVuIHRoZSBMT1JEIEdvZCBvZiBob3N0czsgdGhlIExPUkQgaXMgaGlzIG1lbW9yaWFsLgpUaGVyZWZvcmUgdHVybiB0aG91IHRvIHRoeSBHb2Q6IGtlZXAgbWVyY3kgYW5kIGp1ZGdtZW50IGFuZCB3YWl0IG9uIHRoeSBHb2QgY29udGludWFsbHkuCkhlIGlzIGEgbWVyY2hhbnQsIHRoZSBiYWxhbmNlcyBvZiBkZWNlaXQgYXJlIGluIGhpcyBoYW5kOiBoZSBsb3ZldGggdG8gb3BwcmVzcy4KQW5kIEVwaHJhaW0gc2FpZCwgWWV0IEkgYW0gYmVjb21lIHJpY2gsIEkgaGF2ZSBmb3VuZCBtZSBvdXQgc3Vic3RhbmNlOiBpbiBhbGwgbXkgbGFib3VycyB0aGV5IHNoYWxsIGZpbmQgbm9uZSBpbmlxdWl0eSBpbiBtZSB0aGF0IHdlcmUgc2luLgpBbmQgSSB0aGF0IGFtIHRoZSBMT1JEIHRoeSBHb2QgZnJvbSB0aGUgbGFuZCBvZiBFZ3lwdCB3aWxsIHlldCBtYWtlIHRoZWUgdG8gZHdlbGwgaW4gdGFiZXJuYWNsZXMsIGFzIGluIHRoZSBkYXlzIG9mIHRoZSBzb2xlbW4gZmVhc3QuCkkgaGF2ZSBhbHNvIHNwb2tlbiBieSB0aGUgcHJvcGhldHMsIGFuZCBJIGhhdmUgbXVsdGlwbGllZCB2aXNpb25zLCBhbmQgdXNlZCBzaW1pbGl0dWRlcywgYnkgdGhlIG1pbmlzdHJ5IG9mIHRoZSBwcm9waGV0cy4KSXMgdGhlcmUgaW5pcXVpdHkgaW4gR2lsZWFkPyBzdXJlbHkgdGhleSBhcmUgdmFuaXR5OiB0aGV5IHNhY3JpZmljZSBidWxsb2NrcyBpbiBHaWxnYWw7IHllYSwgdGhlaXIgYWx0YXJzIGFyZSBhcyBoZWFwcyBpbiB0aGUgZnVycm93cyBvZiB0aGUgZmllbGRzLgpBbmQgSmFjb2IgZmxlZCBpbnRvIHRoZSBjb3VudHJ5IG9mIFN5cmlhLCBhbmQgSXNyYWVsIHNlcnZlZCBmb3IgYSB3aWZlLCBhbmQgZm9yIGEgd2lmZSBoZSBrZXB0IHNoZWVwLgpBbmQgYnkgYSBwcm9waGV0IHRoZSBMT1JEIGJyb3VnaHQgSXNyYWVsIG91dCBvZiBFZ3lwdCwgYW5kIGJ5IGEgcHJvcGhldCB3YXMgaGUgcHJlc2VydmVkLgpFcGhyYWltIHByb3Zva2VkIGhpbSB0byBhbmdlciBtb3N0IGJpdHRlcmx5OiB0aGVyZWZvcmUgc2hhbGwgaGUgbGVhdmUgaGlzIGJsb29kIHVwb24gaGltLCBhbmQgaGlzIHJlcHJvYWNoIHNoYWxsIGhpcyBMT1JEIHJldHVybiB1bnRvIGhpbS4KV2hlbiBFcGhyYWltIHNwYWtlIHRyZW1ibGluZywgaGUgZXhhbHRlZCBoaW1zZWxmIGluIElzcmFlbDsgYnV0IHdoZW4gaGUgb2ZmZW5kZWQgaW4gQmFhbCwgaGUgZGllZC4KQW5kIG5vdyB0aGV5IHNpbiBtb3JlIGFuZCBtb3JlLCBhbmQgaGF2ZSBtYWRlIHRoZW0gbW9sdGVuIGltYWdlcyBvZiB0aGVpciBzaWx2ZXIsIGFuZCBpZG9scyBhY2NvcmRpbmcgdG8gdGhlaXIgb3duIHVuZGVyc3RhbmRpbmcsIGFsbCBvZiBpdCB0aGUgd29yayBvZiB0aGUgY3JhZnRzbWVuOiB0aGV5IHNheSBvZiB0aGVtLCBMZXQgdGhlIG1lbiB0aGF0IHNhY3JpZmljZSBraXNzIHRoZSBjYWx2ZXMuClRoZXJlZm9yZSB0aGV5IHNoYWxsIGJlIGFzIHRoZSBtb3JuaW5nIGNsb3VkIGFuZCBhcyB0aGUgZWFybHkgZGV3IHRoYXQgcGFzc2V0aCBhd2F5LCBhcyB0aGUgY2hhZmYgdGhhdCBpcyBkcml2ZW4gd2l0aCB0aGUgd2hpcmx3aW5kIG91dCBvZiB0aGUgZmxvb3IsIGFuZCBhcyB0aGUgc21va2Ugb3V0IG9mIHRoZSBjaGltbmV5LgpZZXQgSSBhbSB0aGUgTE9SRCB0aHkgR29kIGZyb20gdGhlIGxhbmQgb2YgRWd5cHQsIGFuZCB0aG91IHNoYWx0IGtub3cgbm8gZ29kIGJ1dCBtZTogZm9yIHRoZXJlIGlzIG5vIHNhdmlvdXIgYmVzaWRlIG1lLgpJIGRpZCBrbm93IHRoZWUgaW4gdGhlIHdpbGRlcm5lc3MsIGluIHRoZSBsYW5kIG9mIGdyZWF0IGRyb3VnaHQuCkFjY29yZGluZyB0byB0aGVpciBwYXN0dXJlLCBzbyB3ZXJlIHRoZXkgZmlsbGVkOyB0aGV5IHdlcmUgZmlsbGVkLCBhbmQgdGhlaXIgaGVhcnQgd2FzIGV4YWx0ZWQ7IHRoZXJlZm9yZSBoYXZlIHRoZXkgZm9yZ290dGVuIG1lLgpUaGVyZWZvcmUgSSB3aWxsIGJlIHVudG8gdGhlbSBhcyBhIGxpb246IGFzIGEgbGVvcGFyZCBieSB0aGUgd2F5IHdpbGwgSSBvYnNlcnZlIHRoZW06Ckkgd2lsbCBtZWV0IHRoZW0gYXMgYSBiZWFyIHRoYXQgaXMgYmVyZWF2ZWQgb2YgaGVyIHdoZWxwcywgYW5kIHdpbGwgcmVuZCB0aGUgY2F1bCBvZiB0aGVpciBoZWFydCwgYW5kIHRoZXJlIHdpbGwgSSBkZXZvdXIgdGhlbSBsaWtlIGEgbGlvbjogdGhlIHdpbGQgYmVhc3Qgc2hhbGwgdGVhciB0aGVtLgpPIElzcmFlbCwgdGhvdSBoYXN0IGRlc3Ryb3llZCB0aHlzZWxmOyBidXQgaW4gbWUgaXMgdGhpbmUgaGVscC4KSSB3aWxsIGJlIHRoeSBraW5nOiB3aGVyZSBpcyBhbnkgb3RoZXIgdGhhdCBtYXkgc2F2ZSB0aGVlIGluIGFsbCB0aHkgY2l0aWVzPyBhbmQgdGh5IGp1ZGdlcyBvZiB3aG9tIHRob3Ugc2FpZHN0LCBHaXZlIG1lIGEga2luZyBhbmQgcHJpbmNlcz8KSSBnYXZlIHRoZWUgYSBraW5nIGluIG1pbmUgYW5nZXIsIGFuZCB0b29rIGhpbSBhd2F5IGluIG15IHdyYXRoLgpUaGUgaW5pcXVpdHkgb2YgRXBocmFpbSBpcyBib3VuZCB1cDsgaGlzIHNpbiBpcyBoaWQuClRoZSBzb3Jyb3dzIG9mIGEgdHJhdmFpbGluZyB3b21hbiBzaGFsbCBjb21lIHVwb24gaGltOiBoZSBpcyBhbiB1bndpc2Ugc29uOyBmb3IgaGUgc2hvdWxkIG5vdCBzdGF5IGxvbmcgaW4gdGhlIHBsYWNlIG9mIHRoZSBicmVha2luZyBmb3J0aCBvZiBjaGlsZHJlbi4KSSB3aWxsIHJhbnNvbSB0aGVtIGZyb20gdGhlIHBvd2VyIG9mIHRoZSBncmF2ZTsgSSB3aWxsIHJlZGVlbSB0aGVtIGZyb20gZGVhdGg6IE8gZGVhdGgsIEkgd2lsbCBiZSB0aHkgcGxhZ3VlczsgTyBncmF2ZSwgSSB3aWxsIGJlIHRoeSBkZXN0cnVjdGlvbjogcmVwZW50YW5jZSBzaGFsbCBiZSBoaWQgZnJvbSBtaW5lIGV5ZXMuClRob3VnaCBoZSBiZSBmcnVpdGZ1bCBhbW9uZyBoaXMgYnJldGhyZW4sIGFuIGVhc3Qgd2luZCBzaGFsbCBjb21lLCB0aGUgd2luZCBvZiB0aGUgTE9SRCBzaGFsbCBjb21lIHVwIGZyb20gdGhlIHdpbGRlcm5lc3MsIGFuZCBoaXMgc3ByaW5nIHNoYWxsIGJlY29tZSBkcnksIGFuZCBoaXMgZm91bnRhaW4gc2hhbGwgYmUgZHJpZWQgdXA6IGhlIHNoYWxsIHNwb2lsIHRoZSB0cmVhc3VyZSBvZiBhbGwgcGxlYXNhbnQgdmVzc2Vscy4KU2FtYXJpYSBzaGFsbCBiZWNvbWUgZGVzb2xhdGU7IGZvciBzaGUgaGF0aCByZWJlbGxlZCBhZ2FpbnN0IGhlciBHb2Q6IHRoZXkgc2hhbGwgZmFsbCBieSB0aGUgc3dvcmQ6IHRoZWlyIGluZmFudHMgc2hhbGwgYmUgZGFzaGVkIGluIHBpZWNlcywgYW5kIHRoZWlyIHdvbWVuIHdpdGggY2hpbGQgc2hhbGwgYmUgcmlwcGVkIHVwLgpPIGlzcmFlbCwgcmV0dXJuIHVudG8gdGhlIExPUkQgdGh5IEdvZDsgZm9yIHRob3UgaGFzdCBmYWxsZW4gYnkgdGhpbmUgaW5pcXVpdHkuClRha2Ugd2l0aCB5b3Ugd29yZHMsIGFuZCB0dXJuIHRvIHRoZSBMT1JEOiBzYXkgdW50byBoaW0sIFRha2UgYXdheSBhbGwgaW5pcXVpdHksIGFuZCByZWNlaXZlIHVzIGdyYWNpb3VzbHk6IHNvIHdpbGwgd2UgcmVuZGVyIHRoZSBjYWx2ZXMgb2Ygb3VyIGxpcHMuCkFzc2h1ciBzaGFsbCBub3Qgc2F2ZSB1czsgd2Ugd2lsbCBub3QgcmlkZSB1cG9uIGhvcnNlczogbmVpdGhlciB3aWxsIHdlIHNheSBhbnkgbW9yZSB0byB0aGUgd29yayBvZiBvdXIgaGFuZHMsIFllIGFyZSBvdXIgZ29kczogZm9yIGluIHRoZWUgdGhlIGZhdGhlcmxlc3MgZmluZGV0aCBtZXJjeS4KSSB3aWxsIGhlYWwgdGhlaXIgYmFja3NsaWRpbmcsIEkgd2lsbCBsb3ZlIHRoZW0gZnJlZWx5OiBmb3IgbWluZSBhbmdlciBpcyB0dXJuZWQgYXdheSBmcm9tIGhpbS4KSSB3aWxsIGJlIGFzIHRoZSBkZXcgdW50byBJc3JhZWw6IGhlIHNoYWxsIGdyb3cgYXMgdGhlIGxpbHksIGFuZCBjYXN0IGZvcnRoIGhpcyByb290cyBhcyBMZWJhbm9uLgpIaXMgYnJhbmNoZXMgc2hhbGwgc3ByZWFkLCBhbmQgaGlzIGJlYXV0eSBzaGFsbCBiZSBhcyB0aGUgb2xpdmUgdHJlZSwgYW5kIGhpcyBzbWVsbCBhcyBMZWJhbm9uLgpUaGV5IHRoYXQgZHdlbGwgdW5kZXIgaGlzIHNoYWRvdyBzaGFsbCByZXR1cm47IHRoZXkgc2hhbGwgcmV2aXZlIGFzIHRoZSBjb3JuLCBhbmQgZ3JvdyBhcyB0aGUgdmluZTogdGhlIHNjZW50IHRoZXJlb2Ygc2hhbGwgYmUgYXMgdGhlIHdpbmUgb2YgTGViYW5vbi4KRXBocmFpbSBzaGFsbCBzYXksIFdoYXQgaGF2ZSBJIHRvIGRvIGFueSBtb3JlIHdpdGggaWRvbHM/IEkgaGF2ZSBoZWFyZCBoaW0sIGFuZCBvYnNlcnZlZCBoaW06IEkgYW0gbGlrZSBhIGdyZWVuIGZpciB0cmVlLiBGcm9tIG1lIGlzIHRoeSBmcnVpdCBmb3VuZC4KV2hvIGlzIHdpc2UsIGFuZCBoZSBzaGFsbCB1bmRlcnN0YW5kIHRoZXNlIHRoaW5ncz8gcHJ1ZGVudCwgYW5kIGhlIHNoYWxsIGtub3cgdGhlbT8gZm9yIHRoZSB3YXlzIG9mIHRoZSBMT1JEIGFyZSByaWdodCwgYW5kIHRoZSBqdXN0IHNoYWxsIHdhbGsgaW4gdGhlbTogYnV0IHRoZSB0cmFuc2dyZXNzb3JzIHNoYWxsIGZhbGwgdGhlcmVpbi4KVGhlIHdvcmQgb2YgdGhlIExPUkQgdGhhdCBjYW1lIHRvIEpvZWwgdGhlIHNvbiBvZiBQZXRodWVsLgpIZWFyIHRoaXMsIHllIG9sZCBtZW4sIGFuZCBnaXZlIGVhciwgYWxsIHllIGluaGFiaXRhbnRzIG9mIHRoZSBsYW5kLiBIYXRoIHRoaXMgYmVlbiBpbiB5b3VyIGRheXMsIG9yIGV2ZW4gaW4gdGhlIGRheXMgb2YgeW91ciBmYXRoZXJzPwpUZWxsIHllIHlvdXIgY2hpbGRyZW4gb2YgaXQsIGFuZCBsZXQgeW91ciBjaGlsZHJlbiB0ZWxsIHRoZWlyIGNoaWxkcmVuLCBhbmQgdGhlaXIgY2hpbGRyZW4gYW5vdGhlciBnZW5lcmF0aW9uLgpUaGF0IHdoaWNoIHRoZSBwYWxtZXJ3b3JtIGhhdGggbGVmdCBoYXRoIHRoZSBsb2N1c3QgZWF0ZW47IGFuZCB0aGF0IHdoaWNoIHRoZSBsb2N1c3QgaGF0aCBsZWZ0IGhhdGggdGhlIGNhbmtlcndvcm0gZWF0ZW47IGFuZCB0aGF0IHdoaWNoIHRoZSBjYW5rZXJ3b3JtIGhhdGggbGVmdCBoYXRoIHRoZSBjYXRlcnBpbGxlciBlYXRlbi4KQXdha2UsIHllIGRydW5rYXJkcywgYW5kIHdlZXA7IGFuZCBob3dsLCBhbGwgeWUgZHJpbmtlcnMgb2Ygd2luZSwgYmVjYXVzZSBvZiB0aGUgbmV3IHdpbmU7IGZvciBpdCBpcyBjdXQgb2ZmIGZyb20geW91ciBtb3V0aC4KRm9yIGEgbmF0aW9uIGlzIGNvbWUgdXAgdXBvbiBteSBsYW5kLCBzdHJvbmcsIGFuZCB3aXRob3V0IG51bWJlciwgd2hvc2UgdGVldGggYXJlIHRoZSB0ZWV0aCBvZiBhIGxpb24sIGFuZCBoZSBoYXRoIHRoZSBjaGVlayB0ZWV0aCBvZiBhIGdyZWF0IGxpb24uCkhlIGhhdGggbGFpZCBteSB2aW5lIHdhc3RlLCBhbmQgYmFya2VkIG15IGZpZyB0cmVlOiBoZSBoYXRoIG1hZGUgaXQgY2xlYW4gYmFyZSwgYW5kIGNhc3QgaXQgYXdheTsgdGhlIGJyYW5jaGVzIHRoZXJlb2YgYXJlIG1hZGUgd2hpdGUuCkxhbWVudCBsaWtlIGEgdmlyZ2luIGdpcmRlZCB3aXRoIHNhY2tjbG90aCBmb3IgdGhlIGh1c2JhbmQgb2YgaGVyIHlvdXRoLgpUaGUgbWVhdCBvZmZlcmluZyBhbmQgdGhlIGRyaW5rIG9mZmVyaW5nIGlzIGN1dCBvZmYgZnJvbSB0aGUgaG91c2Ugb2YgdGhlIExPUkQ7IHRoZSBwcmllc3RzLCB0aGUgTE9SRCdzIG1pbmlzdGVycywgbW91cm4uClRoZSBmaWVsZCBpcyB3YXN0ZWQsIHRoZSBsYW5kIG1vdXJuZXRoOyBmb3IgdGhlIGNvcm4gaXMgd2FzdGVkOiB0aGUgbmV3IHdpbmUgaXMgZHJpZWQgdXAsIHRoZSBvaWwgbGFuZ3Vpc2hldGguCkJlIHllIGFzaGFtZWQsIE8geWUgaHVzYmFuZG1lbjsgaG93bCwgTyB5ZSB2aW5lZHJlc3NlcnMsIGZvciB0aGUgd2hlYXQgYW5kIGZvciB0aGUgYmFybGV5OyBiZWNhdXNlIHRoZSBoYXJ2ZXN0IG9mIHRoZSBmaWVsZCBpcyBwZXJpc2hlZC4KVGhlIHZpbmUgaXMgZHJpZWQgdXAsIGFuZCB0aGUgZmlnIHRyZWUgbGFuZ3Vpc2hldGg7IHRoZSBwb21lZ3JhbmF0ZSB0cmVlLCB0aGUgcGFsbSB0cmVlIGFsc28sIGFuZCB0aGUgYXBwbGUgdHJlZSwgZXZlbiBhbGwgdGhlIHRyZWVzIG9mIHRoZSBmaWVsZCwgYXJlIHdpdGhlcmVkOiBiZWNhdXNlIGpveSBpcyB3aXRoZXJlZCBhd2F5IGZyb20gdGhlIHNvbnMgb2YgbWVuLgpHaXJkIHlvdXJzZWx2ZXMsIGFuZCBsYW1lbnQsIHllIHByaWVzdHM6IGhvd2wsIHllIG1pbmlzdGVycyBvZiB0aGUgYWx0YXI6IGNvbWUsIGxpZSBhbGwgbmlnaHQgaW4gc2Fja2Nsb3RoLCB5ZSBtaW5pc3RlcnMgb2YgbXkgR29kOiBmb3IgdGhlIG1lYXQgb2ZmZXJpbmcgYW5kIHRoZSBkcmluayBvZmZlcmluZyBpcyB3aXRoaG9sZGVuIGZyb20gdGhlIGhvdXNlIG9mIHlvdXIgR29kLgpTYW5jdGlmeSB5ZSBhIGZhc3QsIGNhbGwgYSBzb2xlbW4gYXNzZW1ibHksIGdhdGhlciB0aGUgZWxkZXJzIGFuZCBhbGwgdGhlIGluaGFiaXRhbnRzIG9mIHRoZSBsYW5kIGludG8gdGhlIGhvdXNlIG9mIHRoZSBMT1JEIHlvdXIgR29kLCBhbmQgY3J5IHVudG8gdGhlIExPUkQsCkFsYXMgZm9yIHRoZSBkYXkhIGZvciB0aGUgZGF5IG9mIHRoZSBMT1JEIGlzIGF0IGhhbmQsIGFuZCBhcyBhIGRlc3RydWN0aW9uIGZyb20gdGhlIEFsbWlnaHR5IHNoYWxsIGl0IGNvbWUuCklzIG5vdCB0aGUgbWVhdCBjdXQgb2ZmIGJlZm9yZSBvdXIgZXllcywgeWVhLCBqb3kgYW5kIGdsYWRuZXNzIGZyb20gdGhlIGhvdXNlIG9mIG91ciBHb2Q/ClRoZSBzZWVkIGlzIHJvdHRlbiB1bmRlciB0aGVpciBjbG9kcywgdGhlIGdhcm5lcnMgYXJlIGxhaWQgZGVzb2xhdGUsIHRoZSBiYXJucyBhcmUgYnJva2VuIGRvd247IGZvciB0aGUgY29ybiBpcyB3aXRoZXJlZC4KSG93IGRvIHRoZSBiZWFzdHMgZ3JvYW4hIHRoZSBoZXJkcyBvZiBjYXR0bGUgYXJlIHBlcnBsZXhlZCwgYmVjYXVzZSB0aGV5IGhhdmUgbm8gcGFzdHVyZTsgeWVhLCB0aGUgZmxvY2tzIG9mIHNoZWVwIGFyZSBtYWRlIGRlc29sYXRlLgpPIExPUkQsIHRvIHRoZWUgd2lsbCBJIGNyeTogZm9yIHRoZSBmaXJlIGhhdGggZGV2b3VyZWQgdGhlIHBhc3R1cmVzIG9mIHRoZSB3aWxkZXJuZXNzLCBhbmQgdGhlIGZsYW1lIGhhdGggYnVybmVkIGFsbCB0aGUgdHJlZXMgb2YgdGhlIGZpZWxkLgpUaGUgYmVhc3RzIG9mIHRoZSBmaWVsZCBjcnkgYWxzbyB1bnRvIHRoZWU6IGZvciB0aGUgcml2ZXJzIG9mIHdhdGVycyBhcmUgZHJpZWQgdXAsIGFuZCB0aGUgZmlyZSBoYXRoIGRldm91cmVkIHRoZSBwYXN0dXJlcyBvZiB0aGUgd2lsZGVybmVzcy4KQmxvdyB5ZSB0aGUgdHJ1bXBldCBpbiBaaW9uLCBhbmQgc291bmQgYW4gYWxhcm0gaW4gbXkgaG9seSBtb3VudGFpbjogbGV0IGFsbCB0aGUgaW5oYWJpdGFudHMgb2YgdGhlIGxhbmQgdHJlbWJsZTogZm9yIHRoZSBkYXkgb2YgdGhlIExPUkQgY29tZXRoLCBmb3IgaXQgaXMgbmlnaCBhdCBoYW5kOwpBIGRheSBvZiBkYXJrbmVzcyBhbmQgb2YgZ2xvb21pbmVzcywgYSBkYXkgb2YgY2xvdWRzIGFuZCBvZiB0aGljayBkYXJrbmVzcywgYXMgdGhlIG1vcm5pbmcgc3ByZWFkIHVwb24gdGhlIG1vdW50YWluczogYSBncmVhdCBwZW9wbGUgYW5kIGEgc3Ryb25nOyB0aGVyZSBoYXRoIG5vdCBiZWVuIGV2ZXIgdGhlIGxpa2UsIG5laXRoZXIgc2hhbGwgYmUgYW55IG1vcmUgYWZ0ZXIgaXQsIGV2ZW4gdG8gdGhlIHllYXJzIG9mIG1hbnkgZ2VuZXJhdGlvbnMuCkEgZmlyZSBkZXZvdXJldGggYmVmb3JlIHRoZW07IGFuZCBiZWhpbmQgdGhlbSBhIGZsYW1lIGJ1cm5ldGg6IHRoZSBsYW5kIGlzIGFzIHRoZSBnYXJkZW4gb2YgRWRlbiBiZWZvcmUgdGhlbSwgYW5kIGJlaGluZCB0aGVtIGEgZGVzb2xhdGUgd2lsZGVybmVzczsgeWVhLCBhbmQgbm90aGluZyBzaGFsbCBlc2NhcGUgdGhlbS4KVGhlIGFwcGVhcmFuY2Ugb2YgdGhlbSBpcyBhcyB0aGUgYXBwZWFyYW5jZSBvZiBob3JzZXM7IGFuZCBhcyBob3JzZW1lbiwgc28gc2hhbGwgdGhleSBydW4uCkxpa2UgdGhlIG5vaXNlIG9mIGNoYXJpb3RzIG9uIHRoZSB0b3BzIG9mIG1vdW50YWlucyBzaGFsbCB0aGV5IGxlYXAsIGxpa2UgdGhlIG5vaXNlIG9mIGEgZmxhbWUgb2YgZmlyZSB0aGF0IGRldm91cmV0aCB0aGUgc3R1YmJsZSwgYXMgYSBzdHJvbmcgcGVvcGxlIHNldCBpbiBiYXR0bGUgYXJyYXkuCkJlZm9yZSB0aGVpciBmYWNlIHRoZSBwZW9wbGUgc2hhbGwgYmUgbXVjaCBwYWluZWQ6IGFsbCBmYWNlcyBzaGFsbCBnYXRoZXIgYmxhY2tuZXNzLgpUaGV5IHNoYWxsIHJ1biBsaWtlIG1pZ2h0eSBtZW47IHRoZXkgc2hhbGwgY2xpbWIgdGhlIHdhbGwgbGlrZSBtZW4gb2Ygd2FyOyBhbmQgdGhleSBzaGFsbCBtYXJjaCBldmVyeSBvbmUgb24gaGlzIHdheXMsIGFuZCB0aGV5IHNoYWxsIG5vdCBicmVhayB0aGVpciByYW5rczoKTmVpdGhlciBzaGFsbCBvbmUgdGhydXN0IGFub3RoZXI7IHRoZXkgc2hhbGwgd2FsayBldmVyeSBvbmUgaW4gaGlzIHBhdGg6IGFuZCB3aGVuIHRoZXkgZmFsbCB1cG9uIHRoZSBzd29yZCwgdGhleSBzaGFsbCBub3QgYmUgd291bmRlZC4KVGhleSBzaGFsbCBydW4gdG8gYW5kIGZybyBpbiB0aGUgY2l0eTsgdGhleSBzaGFsbCBydW4gdXBvbiB0aGUgd2FsbCwgdGhleSBzaGFsbCBjbGltYiB1cCB1cG9uIHRoZSBob3VzZXM7IHRoZXkgc2hhbGwgZW50ZXIgaW4gYXQgdGhlIHdpbmRvd3MgbGlrZSBhIHRoaWVmLgpUaGUgZWFydGggc2hhbGwgcXVha2UgYmVmb3JlIHRoZW07IHRoZSBoZWF2ZW5zIHNoYWxsIHRyZW1ibGU6IHRoZSBzdW4gYW5kIHRoZSBtb29uIHNoYWxsIGJlIGRhcmssIGFuZCB0aGUgc3RhcnMgc2hhbGwgd2l0aGRyYXcgdGhlaXIgc2hpbmluZzoKQW5kIHRoZSBMT1JEIHNoYWxsIHV0dGVyIGhpcyB2b2ljZSBiZWZvcmUgaGlzIGFybXk6IGZvciBoaXMgY2FtcCBpcyB2ZXJ5IGdyZWF0OiBmb3IgaGUgaXMgc3Ryb25nIHRoYXQgZXhlY3V0ZXRoIGhpcyB3b3JkOiBmb3IgdGhlIGRheSBvZiB0aGUgTE9SRCBpcyBncmVhdCBhbmQgdmVyeSB0ZXJyaWJsZTsgYW5kIHdobyBjYW4gYWJpZGUgaXQ/ClRoZXJlZm9yZSBhbHNvIG5vdywgc2FpdGggdGhlIExPUkQsIHR1cm4geWUgZXZlbiB0byBtZSB3aXRoIGFsbCB5b3VyIGhlYXJ0LCBhbmQgd2l0aCBmYXN0aW5nLCBhbmQgd2l0aCB3ZWVwaW5nLCBhbmQgd2l0aCBtb3VybmluZzoKQW5kIHJlbmQgeW91ciBoZWFydCwgYW5kIG5vdCB5b3VyIGdhcm1lbnRzLCBhbmQgdHVybiB1bnRvIHRoZSBMT1JEIHlvdXIgR29kOiBmb3IgaGUgaXMgZ3JhY2lvdXMgYW5kIG1lcmNpZnVsLCBzbG93IHRvIGFuZ2VyLCBhbmQgb2YgZ3JlYXQga2luZG5lc3MsIGFuZCByZXBlbnRldGggaGltIG9mIHRoZSBldmlsLgpXaG8ga25vd2V0aCBpZiBoZSB3aWxsIHJldHVybiBhbmQgcmVwZW50LCBhbmQgbGVhdmUgYSBibGVzc2luZyBiZWhpbmQgaGltOyBldmVuIGEgbWVhdCBvZmZlcmluZyBhbmQgYSBkcmluayBvZmZlcmluZyB1bnRvIHRoZSBMT1JEIHlvdXIgR29kPwpCbG93IHRoZSB0cnVtcGV0IGluIFppb24sIHNhbmN0aWZ5IGEgZmFzdCwgY2FsbCBhIHNvbGVtbiBhc3NlbWJseToKR2F0aGVyIHRoZSBwZW9wbGUsIHNhbmN0aWZ5IHRoZSBjb25ncmVnYXRpb24sIGFzc2VtYmxlIHRoZSBlbGRlcnMsIGdhdGhlciB0aGUgY2hpbGRyZW4sIGFuZCB0aG9zZSB0aGF0IHN1Y2sgdGhlIGJyZWFzdHM6IGxldCB0aGUgYnJpZGVncm9vbSBnbyBmb3J0aCBvZiBoaXMgY2hhbWJlciwgYW5kIHRoZSBicmlkZSBvdXQgb2YgaGVyIGNsb3NldC4KTGV0IHRoZSBwcmllc3RzLCB0aGUgbWluaXN0ZXJzIG9mIHRoZSBMT1JELCB3ZWVwIGJldHdlZW4gdGhlIHBvcmNoIGFuZCB0aGUgYWx0YXIsIGFuZCBsZXQgdGhlbSBzYXksIFNwYXJlIHRoeSBwZW9wbGUsIE8gTE9SRCwgYW5kIGdpdmUgbm90IHRoaW5lIGhlcml0YWdlIHRvIHJlcHJvYWNoLCB0aGF0IHRoZSBoZWF0aGVuIHNob3VsZCBydWxlIG92ZXIgdGhlbTogd2hlcmVmb3JlIHNob3VsZCB0aGV5IHNheSBhbW9uZyB0aGUgcGVvcGxlLCBXaGVyZSBpcyB0aGVpciBHb2Q/ClRoZW4gd2lsbCB0aGUgTE9SRCBiZSBqZWFsb3VzIGZvciBoaXMgbGFuZCwgYW5kIHBpdHkgaGlzIHBlb3BsZS4KWWVhLCB0aGUgTE9SRCB3aWxsIGFuc3dlciBhbmQgc2F5IHVudG8gaGlzIHBlb3BsZSwgQmVob2xkLCBJIHdpbGwgc2VuZCB5b3UgY29ybiwgYW5kIHdpbmUsIGFuZCBvaWwsIGFuZCB5ZSBzaGFsbCBiZSBzYXRpc2ZpZWQgdGhlcmV3aXRoOiBhbmQgSSB3aWxsIG5vIG1vcmUgbWFrZSB5b3UgYSByZXByb2FjaCBhbW9uZyB0aGUgaGVhdGhlbjoKQnV0IEkgd2lsbCByZW1vdmUgZmFyIG9mZiBmcm9tIHlvdSB0aGUgbm9ydGhlcm4gYXJteSwgYW5kIHdpbGwgZHJpdmUgaGltIGludG8gYSBsYW5kIGJhcnJlbiBhbmQgZGVzb2xhdGUsIHdpdGggaGlzIGZhY2UgdG93YXJkIHRoZSBlYXN0IHNlYSwgYW5kIGhpcyBoaW5kZXIgcGFydCB0b3dhcmQgdGhlIHV0bW9zdCBzZWEsIGFuZCBoaXMgc3Rpbmsgc2hhbGwgY29tZSB1cCwgYW5kIGhpcyBpbGwgc2F2b3VyIHNoYWxsIGNvbWUgdXAsIGJlY2F1c2UgaGUgaGF0aCBkb25lIGdyZWF0IHRoaW5ncy4KRmVhciBub3QsIE8gbGFuZDsgYmUgZ2xhZCBhbmQgcmVqb2ljZTogZm9yIHRoZSBMT1JEIHdpbGwgZG8gZ3JlYXQgdGhpbmdzLgpCZSBub3QgYWZyYWlkLCB5ZSBiZWFzdHMgb2YgdGhlIGZpZWxkOiBmb3IgdGhlIHBhc3R1cmVzIG9mIHRoZSB3aWxkZXJuZXNzIGRvIHNwcmluZywgZm9yIHRoZSB0cmVlIGJlYXJldGggaGVyIGZydWl0LCB0aGUgZmlnIHRyZWUgYW5kIHRoZSB2aW5lIGRvIHlpZWxkIHRoZWlyIHN0cmVuZ3RoLgpCZSBnbGFkIHRoZW4sIHllIGNoaWxkcmVuIG9mIFppb24sIGFuZCByZWpvaWNlIGluIHRoZSBMT1JEIHlvdXIgR29kOiBmb3IgaGUgaGF0aCBnaXZlbiB5b3UgdGhlIGZvcm1lciByYWluIG1vZGVyYXRlbHksIGFuZCBoZSB3aWxsIGNhdXNlIHRvIGNvbWUgZG93biBmb3IgeW91IHRoZSByYWluLCB0aGUgZm9ybWVyIHJhaW4sIGFuZCB0aGUgbGF0dGVyIHJhaW4gaW4gdGhlIGZpcnN0IG1vbnRoLgpBbmQgdGhlIGZsb29ycyBzaGFsbCBiZSBmdWxsIG9mIHdoZWF0LCBhbmQgdGhlIHZhdHMgc2hhbGwgb3ZlcmZsb3cgd2l0aCB3aW5lIGFuZCBvaWwuCkFuZCBJIHdpbGwgcmVzdG9yZSB0byB5b3UgdGhlIHllYXJzIHRoYXQgdGhlIGxvY3VzdCBoYXRoIGVhdGVuLCB0aGUgY2Fua2Vyd29ybSwgYW5kIHRoZSBjYXRlcnBpbGxlciwgYW5kIHRoZSBwYWxtZXJ3b3JtLCBteSBncmVhdCBhcm15IHdoaWNoIEkgc2VudCBhbW9uZyB5b3UuCkFuZCB5ZSBzaGFsbCBlYXQgaW4gcGxlbnR5LCBhbmQgYmUgc2F0aXNmaWVkLCBhbmQgcHJhaXNlIHRoZSBuYW1lIG9mIHRoZSBMT1JEIHlvdXIgR29kLCB0aGF0IGhhdGggZGVhbHQgd29uZHJvdXNseSB3aXRoIHlvdTogYW5kIG15IHBlb3BsZSBzaGFsbCBuZXZlciBiZSBhc2hhbWVkLgpBbmQgeWUgc2hhbGwga25vdyB0aGF0IEkgYW0gaW4gdGhlIG1pZHN0IG9mIElzcmFlbCwgYW5kIHRoYXQgSSBhbSB0aGUgTE9SRCB5b3VyIEdvZCwgYW5kIG5vbmUgZWxzZTogYW5kIG15IHBlb3BsZSBzaGFsbCBuZXZlciBiZSBhc2hhbWVkLgpBbmQgaXQgc2hhbGwgY29tZSB0byBwYXNzIGFmdGVyd2FyZCwgdGhhdCBJIHdpbGwgcG91ciBvdXQgbXkgc3Bpcml0IHVwb24gYWxsIGZsZXNoOyBhbmQgeW91ciBzb25zIGFuZCB5b3VyIGRhdWdodGVycyBzaGFsbCBwcm9waGVzeSwgeW91ciBvbGQgbWVuIHNoYWxsIGRyZWFtIGRyZWFtcywgeW91ciB5b3VuZyBtZW4gc2hhbGwgc2VlIHZpc2lvbnM6CkFuZCBhbHNvIHVwb24gdGhlIHNlcnZhbnRzIGFuZCB1cG9uIHRoZSBoYW5kbWFpZHMgaW4gdGhvc2UgZGF5cyB3aWxsIEkgcG91ciBvdXQgbXkgc3Bpcml0LgpBbmQgSSB3aWxsIHNoZXcgd29uZGVycyBpbiB0aGUgaGVhdmVucyBhbmQgaW4gdGhlIGVhcnRoLCBibG9vZCwgYW5kIGZpcmUsIGFuZCBwaWxsYXJzIG9mIHNtb2tlLgpUaGUgc3VuIHNoYWxsIGJlIHR1cm5lZCBpbnRvIGRhcmtuZXNzLCBhbmQgdGhlIG1vb24gaW50byBibG9vZCwgYmVmb3JlIHRoZSBncmVhdCBhbmQgdGVycmlibGUgZGF5IG9mIHRoZSBMT1JEIGNvbWUuCkFuZCBpdCBzaGFsbCBjb21lIHRvIHBhc3MsIHRoYXQgd2hvc29ldmVyIHNoYWxsIGNhbGwgb24gdGhlIG5hbWUgb2YgdGhlIExPUkQgc2hhbGwgYmUgZGVsaXZlcmVkOiBmb3IgaW4gbW91bnQgWmlvbiBhbmQgaW4gSmVydXNhbGVtIHNoYWxsIGJlIGRlbGl2ZXJhbmNlLCBhcyB0aGUgTE9SRCBoYXRoIHNhaWQsIGFuZCBpbiB0aGUgcmVtbmFudCB3aG9tIHRoZSBMT1JEIHNoYWxsIGNhbGwuCkZvciwgYmVob2xkLCBpbiB0aG9zZSBkYXlzLCBhbmQgaW4gdGhhdCB0aW1lLCB3aGVuIEkgc2hhbGwgYnJpbmcgYWdhaW4gdGhlIGNhcHRpdml0eSBvZiBKdWRhaCBhbmQgSmVydXNhbGVtLApJIHdpbGwgYWxzbyBnYXRoZXIgYWxsIG5hdGlvbnMsIGFuZCB3aWxsIGJyaW5nIHRoZW0gZG93biBpbnRvIHRoZSB2YWxsZXkgb2YgSmVob3NoYXBoYXQsIGFuZCB3aWxsIHBsZWFkIHdpdGggdGhlbSB0aGVyZSBmb3IgbXkgcGVvcGxlIGFuZCBmb3IgbXkgaGVyaXRhZ2UgSXNyYWVsLCB3aG9tIHRoZXkgaGF2ZSBzY2F0dGVyZWQgYW1vbmcgdGhlIG5hdGlvbnMsIGFuZCBwYXJ0ZWQgbXkgbGFuZC4KQW5kIHRoZXkgaGF2ZSBjYXN0IGxvdHMgZm9yIG15IHBlb3BsZTsgYW5kIGhhdmUgZ2l2ZW4gYSBib3kgZm9yIGFuIGhhcmxvdCwgYW5kIHNvbGQgYSBnaXJsIGZvciB3aW5lLCB0aGF0IHRoZXkgbWlnaHQgZHJpbmsuClllYSwgYW5kIHdoYXQgaGF2ZSB5ZSB0byBkbyB3aXRoIG1lLCBPIFR5cmUsIGFuZCBaaWRvbiwgYW5kIGFsbCB0aGUgY29hc3RzIG9mIFBhbGVzdGluZT8gd2lsbCB5ZSByZW5kZXIgbWUgYSByZWNvbXBlbmNlPyBhbmQgaWYgeWUgcmVjb21wZW5zZSBtZSwgc3dpZnRseSBhbmQgc3BlZWRpbHkgd2lsbCBJIHJldHVybiB5b3VyIHJlY29tcGVuY2UgdXBvbiB5b3VyIG93biBoZWFkOwpCZWNhdXNlIHllIGhhdmUgdGFrZW4gbXkgc2lsdmVyIGFuZCBteSBnb2xkLCBhbmQgaGF2ZSBjYXJyaWVkIGludG8geW91ciB0ZW1wbGVzIG15IGdvb2RseSBwbGVhc2FudCB0aGluZ3M6ClRoZSBjaGlsZHJlbiBhbHNvIG9mIEp1ZGFoIGFuZCB0aGUgY2hpbGRyZW4gb2YgSmVydXNhbGVtIGhhdmUgeWUgc29sZCB1bnRvIHRoZSBHcmVjaWFucywgdGhhdCB5ZSBtaWdodCByZW1vdmUgdGhlbSBmYXIgZnJvbSB0aGVpciBib3JkZXIuCkJlaG9sZCwgSSB3aWxsIHJhaXNlIHRoZW0gb3V0IG9mIHRoZSBwbGFjZSB3aGl0aGVyIHllIGhhdmUgc29sZCB0aGVtLCBhbmQgd2lsbCByZXR1cm4geW91ciByZWNvbXBlbmNlIHVwb24geW91ciBvd24gaGVhZDoKQW5kIEkgd2lsbCBzZWxsIHlvdXIgc29ucyBhbmQgeW91ciBkYXVnaHRlcnMgaW50byB0aGUgaGFuZCBvZiB0aGUgY2hpbGRyZW4gb2YgSnVkYWgsIGFuZCB0aGV5IHNoYWxsIHNlbGwgdGhlbSB0byB0aGUgU2FiZWFucywgdG8gYSBwZW9wbGUgZmFyIG9mZjogZm9yIHRoZSBMT1JEIGhhdGggc3Bva2VuIGl0LgpQcm9jbGFpbSB5ZSB0aGlzIGFtb25nIHRoZSBHZW50aWxlczsgUHJlcGFyZSB3YXIsIHdha2UgdXAgdGhlIG1pZ2h0eSBtZW4sIGxldCBhbGwgdGhlIG1lbiBvZiB3YXIgZHJhdyBuZWFyOyBsZXQgdGhlbSBjb21lIHVwOgpCZWF0IHlvdXIgcGxvd3NoYXJlcyBpbnRvIHN3b3JkcyBhbmQgeW91ciBwcnVuaW5naG9va3MgaW50byBzcGVhcnM6IGxldCB0aGUgd2VhayBzYXksIEkgYW0gc3Ryb25nLgpBc3NlbWJsZSB5b3Vyc2VsdmVzLCBhbmQgY29tZSwgYWxsIHllIGhlYXRoZW4sIGFuZCBnYXRoZXIgeW91cnNlbHZlcyB0b2dldGhlciByb3VuZCBhYm91dDogdGhpdGhlciBjYXVzZSB0aHkgbWlnaHR5IG9uZXMgdG8gY29tZSBkb3duLCBPIExPUkQuCkxldCB0aGUgaGVhdGhlbiBiZSB3YWtlbmVkLCBhbmQgY29tZSB1cCB0byB0aGUgdmFsbGV5IG9mIEplaG9zaGFwaGF0OiBmb3IgdGhlcmUgd2lsbCBJIHNpdCB0byBqdWRnZSBhbGwgdGhlIGhlYXRoZW4gcm91bmQgYWJvdXQuClB1dCB5ZSBpbiB0aGUgc2lja2xlLCBmb3IgdGhlIGhhcnZlc3QgaXMgcmlwZTogY29tZSwgZ2V0IHlvdSBkb3duOyBmb3IgdGhlIHByZXNzIGlzIGZ1bGwsIHRoZSBmYXRzIG92ZXJmbG93OyBmb3IgdGhlaXIgd2lja2VkbmVzcyBpcyBncmVhdC4KTXVsdGl0dWRlcywgbXVsdGl0dWRlcyBpbiB0aGUgdmFsbGV5IG9mIGRlY2lzaW9uOiBmb3IgdGhlIGRheSBvZiB0aGUgTE9SRCBpcyBuZWFyIGluIHRoZSB2YWxsZXkgb2YgZGVjaXNpb24uClRoZSBzdW4gYW5kIHRoZSBtb29uIHNoYWxsIGJlIGRhcmtlbmVkLCBhbmQgdGhlIHN0YXJzIHNoYWxsIHdpdGhkcmF3IHRoZWlyIHNoaW5pbmcuClRoZSBMT1JEIGFsc28gc2hhbGwgcm9hciBvdXQgb2YgWmlvbiwgYW5kIHV0dGVyIGhpcyB2b2ljZSBmcm9tIEplcnVzYWxlbTsgYW5kIHRoZSBoZWF2ZW5zIGFuZCB0aGUgZWFydGggc2hhbGwgc2hha2U6IGJ1dCB0aGUgTE9SRCB3aWxsIGJlIHRoZSBob3BlIG9mIGhpcyBwZW9wbGUsIGFuZCB0aGUgc3RyZW5ndGggb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbC4KU28gc2hhbGwgeWUga25vdyB0aGF0IEkgYW0gdGhlIExPUkQgeW91ciBHb2QgZHdlbGxpbmcgaW4gWmlvbiwgbXkgaG9seSBtb3VudGFpbjogdGhlbiBzaGFsbCBKZXJ1c2FsZW0gYmUgaG9seSwgYW5kIHRoZXJlIHNoYWxsIG5vIHN0cmFuZ2VycyBwYXNzIHRocm91Z2ggaGVyIGFueSBtb3JlLgpBbmQgaXQgc2hhbGwgY29tZSB0byBwYXNzIGluIHRoYXQgZGF5LCB0aGF0IHRoZSBtb3VudGFpbnMgc2hhbGwgZHJvcCBkb3duIG5ldyB3aW5lLCBhbmQgdGhlIGhpbGxzIHNoYWxsIGZsb3cgd2l0aCBtaWxrLCBhbmQgYWxsIHRoZSByaXZlcnMgb2YgSnVkYWggc2hhbGwgZmxvdyB3aXRoIHdhdGVycywgYW5kIGEgZm91bnRhaW4gc2hhbGwgY29tZSBmb3J0aCBvdXQgb2YgdGhlIGhvdXNlIG9mIHRoZSBMT1JELCBhbmQgc2hhbGwgd2F0ZXIgdGhlIHZhbGxleSBvZiBTaGl0dGltLgpFZ3lwdCBzaGFsbCBiZSBhIGRlc29sYXRpb24sIGFuZCBFZG9tIHNoYWxsIGJlIGEgZGVzb2xhdGUgd2lsZGVybmVzcywgZm9yIHRoZSB2aW9sZW5jZSBhZ2FpbnN0IHRoZSBjaGlsZHJlbiBvZiBKdWRhaCwgYmVjYXVzZSB0aGV5IGhhdmUgc2hlZCBpbm5vY2VudCBibG9vZCBpbiB0aGVpciBsYW5kLgpCdXQgSnVkYWggc2hhbGwgZHdlbGwgZm9yIGV2ZXIsIGFuZCBKZXJ1c2FsZW0gZnJvbSBnZW5lcmF0aW9uIHRvIGdlbmVyYXRpb24uCkZvciBJIHdpbGwgY2xlYW5zZSB0aGVpciBibG9vZCB0aGF0IEkgaGF2ZSBub3QgY2xlYW5zZWQ6IGZvciB0aGUgTE9SRCBkd2VsbGV0aCBpbiBaaW9uLgpUaGUgd29yZHMgb2YgQW1vcywgd2hvIHdhcyBhbW9uZyB0aGUgaGVyZG1lbiBvZiBUZWtvYSwgd2hpY2ggaGUgc2F3IGNvbmNlcm5pbmcgSXNyYWVsIGluIHRoZSBkYXlzIG9mIFV6emlhaCBraW5nIG9mIEp1ZGFoLCBhbmQgaW4gdGhlIGRheXMgb2YgSmVyb2JvYW0gdGhlIHNvbiBvZiBKb2FzaCBraW5nIG9mIElzcmFlbCwgdHdvIHllYXJzIGJlZm9yZSB0aGUgZWFydGhxdWFrZS4KQW5kIGhlIHNhaWQsIFRoZSBMT1JEIHdpbGwgcm9hciBmcm9tIFppb24sIGFuZCB1dHRlciBoaXMgdm9pY2UgZnJvbSBKZXJ1c2FsZW07IGFuZCB0aGUgaGFiaXRhdGlvbnMgb2YgdGhlIHNoZXBoZXJkcyBzaGFsbCBtb3VybiwgYW5kIHRoZSB0b3Agb2YgQ2FybWVsIHNoYWxsIHdpdGhlci4KVGh1cyBzYWl0aCB0aGUgTE9SRDsgRm9yIHRocmVlIHRyYW5zZ3Jlc3Npb25zIG9mIERhbWFzY3VzLCBhbmQgZm9yIGZvdXIsIEkgd2lsbCBub3QgdHVybiBhd2F5IHRoZSBwdW5pc2htZW50IHRoZXJlb2Y7IGJlY2F1c2UgdGhleSBoYXZlIHRocmVzaGVkIEdpbGVhZCB3aXRoIHRocmVzaGluZyBpbnN0cnVtZW50cyBvZiBpcm9uOgpCdXQgSSB3aWxsIHNlbmQgYSBmaXJlIGludG8gdGhlIGhvdXNlIG9mIEhhemFlbCwgd2hpY2ggc2hhbGwgZGV2b3VyIHRoZSBwYWxhY2VzIG9mIEJlbmhhZGFkLgpJIHdpbGwgYnJlYWsgYWxzbyB0aGUgYmFyIG9mIERhbWFzY3VzLCBhbmQgY3V0IG9mZiB0aGUgaW5oYWJpdGFudCBmcm9tIHRoZSBwbGFpbiBvZiBBdmVuLCBhbmQgaGltIHRoYXQgaG9sZGV0aCB0aGUgc2NlcHRyZSBmcm9tIHRoZSBob3VzZSBvZiBFZGVuOiBhbmQgdGhlIHBlb3BsZSBvZiBTeXJpYSBzaGFsbCBnbyBpbnRvIGNhcHRpdml0eSB1bnRvIEtpciwgc2FpdGggdGhlIExPUkQuClRodXMgc2FpdGggdGhlIExPUkQ7IEZvciB0aHJlZSB0cmFuc2dyZXNzaW9ucyBvZiBHYXphLCBhbmQgZm9yIGZvdXIsIEkgd2lsbCBub3QgdHVybiBhd2F5IHRoZSBwdW5pc2htZW50IHRoZXJlb2Y7IGJlY2F1c2UgdGhleSBjYXJyaWVkIGF3YXkgY2FwdGl2ZSB0aGUgd2hvbGUgY2FwdGl2aXR5LCB0byBkZWxpdmVyIHRoZW0gdXAgdG8gRWRvbToKQnV0IEkgd2lsbCBzZW5kIGEgZmlyZSBvbiB0aGUgd2FsbCBvZiBHYXphLCB3aGljaCBzaGFsbCBkZXZvdXIgdGhlIHBhbGFjZXMgdGhlcmVvZjoKQW5kIEkgd2lsbCBjdXQgb2ZmIHRoZSBpbmhhYml0YW50IGZyb20gQXNoZG9kLCBhbmQgaGltIHRoYXQgaG9sZGV0aCB0aGUgc2NlcHRyZSBmcm9tIEFzaGtlbG9uLCBhbmQgSSB3aWxsIHR1cm4gbWluZSBoYW5kIGFnYWluc3QgRWtyb246IGFuZCB0aGUgcmVtbmFudCBvZiB0aGUgUGhpbGlzdGluZXMgc2hhbGwgcGVyaXNoLCBzYWl0aCB0aGUgTG9yZCBHT0QuClRodXMgc2FpdGggdGhlIExPUkQ7IEZvciB0aHJlZSB0cmFuc2dyZXNzaW9ucyBvZiBUeXJ1cywgYW5kIGZvciBmb3VyLCBJIHdpbGwgbm90IHR1cm4gYXdheSB0aGUgcHVuaXNobWVudCB0aGVyZW9mOyBiZWNhdXNlIHRoZXkgZGVsaXZlcmVkIHVwIHRoZSB3aG9sZSBjYXB0aXZpdHkgdG8gRWRvbSwgYW5kIHJlbWVtYmVyZWQgbm90IHRoZSBicm90aGVybHkgY292ZW5hbnQ6CkJ1dCBJIHdpbGwgc2VuZCBhIGZpcmUgb24gdGhlIHdhbGwgb2YgVHlydXMsIHdoaWNoIHNoYWxsIGRldm91ciB0aGUgcGFsYWNlcyB0aGVyZW9mLgpUaHVzIHNhaXRoIHRoZSBMT1JEOyBGb3IgdGhyZWUgdHJhbnNncmVzc2lvbnMgb2YgRWRvbSwgYW5kIGZvciBmb3VyLCBJIHdpbGwgbm90IHR1cm4gYXdheSB0aGUgcHVuaXNobWVudCB0aGVyZW9mOyBiZWNhdXNlIGhlIGRpZCBwdXJzdWUgaGlzIGJyb3RoZXIgd2l0aCB0aGUgc3dvcmQsIGFuZCBkaWQgY2FzdCBvZmYgYWxsIHBpdHksIGFuZCBoaXMgYW5nZXIgZGlkIHRlYXIgcGVycGV0dWFsbHksIGFuZCBoZSBrZXB0IGhpcyB3cmF0aCBmb3IgZXZlcjoKQnV0IEkgd2lsbCBzZW5kIGEgZmlyZSB1cG9uIFRlbWFuLCB3aGljaCBzaGFsbCBkZXZvdXIgdGhlIHBhbGFjZXMgb2YgQm96cmFoLgpUaHVzIHNhaXRoIHRoZSBMT1JEOyBGb3IgdGhyZWUgdHJhbnNncmVzc2lvbnMgb2YgdGhlIGNoaWxkcmVuIG9mIEFtbW9uLCBhbmQgZm9yIGZvdXIsIEkgd2lsbCBub3QgdHVybiBhd2F5IHRoZSBwdW5pc2htZW50IHRoZXJlb2Y7IGJlY2F1c2UgdGhleSBoYXZlIHJpcHBlZCB1cCB0aGUgd29tZW4gd2l0aCBjaGlsZCBvZiBHaWxlYWQsIHRoYXQgdGhleSBtaWdodCBlbmxhcmdlIHRoZWlyIGJvcmRlcjoKQnV0IEkgd2lsbCBraW5kbGUgYSBmaXJlIGluIHRoZSB3YWxsIG9mIFJhYmJhaCwgYW5kIGl0IHNoYWxsIGRldm91ciB0aGUgcGFsYWNlcyB0aGVyZW9mLCB3aXRoIHNob3V0aW5nIGluIHRoZSBkYXkgb2YgYmF0dGxlLCB3aXRoIGEgdGVtcGVzdCBpbiB0aGUgZGF5IG9mIHRoZSB3aGlybHdpbmQ6CkFuZCB0aGVpciBraW5nIHNoYWxsIGdvIGludG8gY2FwdGl2aXR5LCBoZSBhbmQgaGlzIHByaW5jZXMgdG9nZXRoZXIsIHNhaXRoIHRoZSBMT1JELgpUaHVzIHNhaXRoIHRoZSBMT1JEOyBGb3IgdGhyZWUgdHJhbnNncmVzc2lvbnMgb2YgTW9hYiwgYW5kIGZvciBmb3VyLCBJIHdpbGwgbm90IHR1cm4gYXdheSB0aGUgcHVuaXNobWVudCB0aGVyZW9mOyBiZWNhdXNlIGhlIGJ1cm5lZCB0aGUgYm9uZXMgb2YgdGhlIGtpbmcgb2YgRWRvbSBpbnRvIGxpbWU6CkJ1dCBJIHdpbGwgc2VuZCBhIGZpcmUgdXBvbiBNb2FiLCBhbmQgaXQgc2hhbGwgZGV2b3VyIHRoZSBwYWxhY2VzIG9mIEtpcmlvdGg6IGFuZCBNb2FiIHNoYWxsIGRpZSB3aXRoIHR1bXVsdCwgd2l0aCBzaG91dGluZywgYW5kIHdpdGggdGhlIHNvdW5kIG9mIHRoZSB0cnVtcGV0OgpBbmQgSSB3aWxsIGN1dCBvZmYgdGhlIGp1ZGdlIGZyb20gdGhlIG1pZHN0IHRoZXJlb2YsIGFuZCB3aWxsIHNsYXkgYWxsIHRoZSBwcmluY2VzIHRoZXJlb2Ygd2l0aCBoaW0sIHNhaXRoIHRoZSBMT1JELgpUaHVzIHNhaXRoIHRoZSBMT1JEOyBGb3IgdGhyZWUgdHJhbnNncmVzc2lvbnMgb2YgSnVkYWgsIGFuZCBmb3IgZm91ciwgSSB3aWxsIG5vdCB0dXJuIGF3YXkgdGhlIHB1bmlzaG1lbnQgdGhlcmVvZjsgYmVjYXVzZSB0aGV5IGhhdmUgZGVzcGlzZWQgdGhlIGxhdyBvZiB0aGUgTE9SRCwgYW5kIGhhdmUgbm90IGtlcHQgaGlzIGNvbW1hbmRtZW50cywgYW5kIHRoZWlyIGxpZXMgY2F1c2VkIHRoZW0gdG8gZXJyLCBhZnRlciB0aGUgd2hpY2ggdGhlaXIgZmF0aGVycyBoYXZlIHdhbGtlZDoKQnV0IEkgd2lsbCBzZW5kIGEgZmlyZSB1cG9uIEp1ZGFoLCBhbmQgaXQgc2hhbGwgZGV2b3VyIHRoZSBwYWxhY2VzIG9mIEplcnVzYWxlbS4KVGh1cyBzYWl0aCB0aGUgTE9SRDsgRm9yIHRocmVlIHRyYW5zZ3Jlc3Npb25zIG9mIElzcmFlbCwgYW5kIGZvciBmb3VyLCBJIHdpbGwgbm90IHR1cm4gYXdheSB0aGUgcHVuaXNobWVudCB0aGVyZW9mOyBiZWNhdXNlIHRoZXkgc29sZCB0aGUgcmlnaHRlb3VzIGZvciBzaWx2ZXIsIGFuZCB0aGUgcG9vciBmb3IgYSBwYWlyIG9mIHNob2VzOwpUaGF0IHBhbnQgYWZ0ZXIgdGhlIGR1c3Qgb2YgdGhlIGVhcnRoIG9uIHRoZSBoZWFkIG9mIHRoZSBwb29yLCBhbmQgdHVybiBhc2lkZSB0aGUgd2F5IG9mIHRoZSBtZWVrOiBhbmQgYSBtYW4gYW5kIGhpcyBmYXRoZXIgd2lsbCBnbyBpbiB1bnRvIHRoZSBzYW1lIG1haWQsIHRvIHByb2ZhbmUgbXkgaG9seSBuYW1lOgpBbmQgdGhleSBsYXkgdGhlbXNlbHZlcyBkb3duIHVwb24gY2xvdGhlcyBsYWlkIHRvIHBsZWRnZSBieSBldmVyeSBhbHRhciwgYW5kIHRoZXkgZHJpbmsgdGhlIHdpbmUgb2YgdGhlIGNvbmRlbW5lZCBpbiB0aGUgaG91c2Ugb2YgdGhlaXIgZ29kLgpZZXQgZGVzdHJveWVkIEkgdGhlIEFtb3JpdGUgYmVmb3JlIHRoZW0sIHdob3NlIGhlaWdodCB3YXMgbGlrZSB0aGUgaGVpZ2h0IG9mIHRoZSBjZWRhcnMsIGFuZCBoZSB3YXMgc3Ryb25nIGFzIHRoZSBvYWtzOyB5ZXQgSSBkZXN0cm95ZWQgaGlzIGZydWl0IGZyb20gYWJvdmUsIGFuZCBoaXMgcm9vdHMgZnJvbSBiZW5lYXRoLgpBbHNvIEkgYnJvdWdodCB5b3UgdXAgZnJvbSB0aGUgbGFuZCBvZiBFZ3lwdCwgYW5kIGxlZCB5b3UgZm9ydHkgeWVhcnMgdGhyb3VnaCB0aGUgd2lsZGVybmVzcywgdG8gcG9zc2VzcyB0aGUgbGFuZCBvZiB0aGUgQW1vcml0ZS4KQW5kIEkgcmFpc2VkIHVwIG9mIHlvdXIgc29ucyBmb3IgcHJvcGhldHMsIGFuZCBvZiB5b3VyIHlvdW5nIG1lbiBmb3IgTmF6YXJpdGVzLiBJcyBpdCBub3QgZXZlbiB0aHVzLCBPIHllIGNoaWxkcmVuIG9mIElzcmFlbD8gc2FpdGggdGhlIExPUkQuCkJ1dCB5ZSBnYXZlIHRoZSBOYXphcml0ZXMgd2luZSB0byBkcmluazsgYW5kIGNvbW1hbmRlZCB0aGUgcHJvcGhldHMsIHNheWluZywgUHJvcGhlc3kgbm90LgpCZWhvbGQsIEkgYW0gcHJlc3NlZCB1bmRlciB5b3UsIGFzIGEgY2FydCBpcyBwcmVzc2VkIHRoYXQgaXMgZnVsbCBvZiBzaGVhdmVzLgpUaGVyZWZvcmUgdGhlIGZsaWdodCBzaGFsbCBwZXJpc2ggZnJvbSB0aGUgc3dpZnQsIGFuZCB0aGUgc3Ryb25nIHNoYWxsIG5vdCBzdHJlbmd0aGVuIGhpcyBmb3JjZSwgbmVpdGhlciBzaGFsbCB0aGUgbWlnaHR5IGRlbGl2ZXIgaGltc2VsZjoKTmVpdGhlciBzaGFsbCBoZSBzdGFuZCB0aGF0IGhhbmRsZXRoIHRoZSBib3c7IGFuZCBoZSB0aGF0IGlzIHN3aWZ0IG9mIGZvb3Qgc2hhbGwgbm90IGRlbGl2ZXIgaGltc2VsZjogbmVpdGhlciBzaGFsbCBoZSB0aGF0IHJpZGV0aCB0aGUgaG9yc2UgZGVsaXZlciBoaW1zZWxmLgpBbmQgaGUgdGhhdCBpcyBjb3VyYWdlb3VzIGFtb25nIHRoZSBtaWdodHkgc2hhbGwgZmxlZSBhd2F5IG5ha2VkIGluIHRoYXQgZGF5LCBzYWl0aCB0aGUgTE9SRC4KSGVhciB0aGlzIHdvcmQgdGhhdCB0aGUgTE9SRCBoYXRoIHNwb2tlbiBhZ2FpbnN0IHlvdSwgTyBjaGlsZHJlbiBvZiBJc3JhZWwsIGFnYWluc3QgdGhlIHdob2xlIGZhbWlseSB3aGljaCBJIGJyb3VnaHQgdXAgZnJvbSB0aGUgbGFuZCBvZiBFZ3lwdCwgc2F5aW5nLApZb3Ugb25seSBoYXZlIEkga25vd24gb2YgYWxsIHRoZSBmYW1pbGllcyBvZiB0aGUgZWFydGg6IHRoZXJlZm9yZSBJIHdpbGwgcHVuaXNoIHlvdSBmb3IgYWxsIHlvdXIgaW5pcXVpdGllcy4KQ2FuIHR3byB3YWxrIHRvZ2V0aGVyLCBleGNlcHQgdGhleSBiZSBhZ3JlZWQ/CldpbGwgYSBsaW9uIHJvYXIgaW4gdGhlIGZvcmVzdCwgd2hlbiBoZSBoYXRoIG5vIHByZXk/IHdpbGwgYSB5b3VuZyBsaW9uIGNyeSBvdXQgb2YgaGlzIGRlbiwgaWYgaGUgaGF2ZSB0YWtlbiBub3RoaW5nPwpDYW4gYSBiaXJkIGZhbGwgaW4gYSBzbmFyZSB1cG9uIHRoZSBlYXJ0aCwgd2hlcmUgbm8gZ2luIGlzIGZvciBoaW0/IHNoYWxsIG9uZSB0YWtlIHVwIGEgc25hcmUgZnJvbSB0aGUgZWFydGgsIGFuZCBoYXZlIHRha2VuIG5vdGhpbmcgYXQgYWxsPwpTaGFsbCBhIHRydW1wZXQgYmUgYmxvd24gaW4gdGhlIGNpdHksIGFuZCB0aGUgcGVvcGxlIG5vdCBiZSBhZnJhaWQ/IHNoYWxsIHRoZXJlIGJlIGV2aWwgaW4gYSBjaXR5LCBhbmQgdGhlIExPUkQgaGF0aCBub3QgZG9uZSBpdD8KU3VyZWx5IHRoZSBMb3JkIEdPRCB3aWxsIGRvIG5vdGhpbmcsIGJ1dCBoZSByZXZlYWxldGggaGlzIHNlY3JldCB1bnRvIGhpcyBzZXJ2YW50cyB0aGUgcHJvcGhldHMuClRoZSBsaW9uIGhhdGggcm9hcmVkLCB3aG8gd2lsbCBub3QgZmVhcj8gdGhlIExvcmQgR09EIGhhdGggc3Bva2VuLCB3aG8gY2FuIGJ1dCBwcm9waGVzeT8KUHVibGlzaCBpbiB0aGUgcGFsYWNlcyBhdCBBc2hkb2QsIGFuZCBpbiB0aGUgcGFsYWNlcyBpbiB0aGUgbGFuZCBvZiBFZ3lwdCwgYW5kIHNheSwgQXNzZW1ibGUgeW91cnNlbHZlcyB1cG9uIHRoZSBtb3VudGFpbnMgb2YgU2FtYXJpYSwgYW5kIGJlaG9sZCB0aGUgZ3JlYXQgdHVtdWx0cyBpbiB0aGUgbWlkc3QgdGhlcmVvZiwgYW5kIHRoZSBvcHByZXNzZWQgaW4gdGhlIG1pZHN0IHRoZXJlb2YuCkZvciB0aGV5IGtub3cgbm90IHRvIGRvIHJpZ2h0LCBzYWl0aCB0aGUgTE9SRCwgd2hvIHN0b3JlIHVwIHZpb2xlbmNlIGFuZCByb2JiZXJ5IGluIHRoZWlyIHBhbGFjZXMuClRoZXJlZm9yZSB0aHVzIHNhaXRoIHRoZSBMb3JkIEdPRDsgQW4gYWR2ZXJzYXJ5IHRoZXJlIHNoYWxsIGJlIGV2ZW4gcm91bmQgYWJvdXQgdGhlIGxhbmQ7IGFuZCBoZSBzaGFsbCBicmluZyBkb3duIHRoeSBzdHJlbmd0aCBmcm9tIHRoZWUsIGFuZCB0aHkgcGFsYWNlcyBzaGFsbCBiZSBzcG9pbGVkLgpUaHVzIHNhaXRoIHRoZSBMT1JEOyBBcyB0aGUgc2hlcGhlcmQgdGFrZXRoIG91dCBvZiB0aGUgbW91dGggb2YgdGhlIGxpb24gdHdvIGxlZ3MsIG9yIGEgcGllY2Ugb2YgYW4gZWFyOyBzbyBzaGFsbCB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIGJlIHRha2VuIG91dCB0aGF0IGR3ZWxsIGluIFNhbWFyaWEgaW4gdGhlIGNvcm5lciBvZiBhIGJlZCwgYW5kIGluIERhbWFzY3VzIGluIGEgY291Y2guCkhlYXIgeWUsIGFuZCB0ZXN0aWZ5IGluIHRoZSBob3VzZSBvZiBKYWNvYiwgc2FpdGggdGhlIExvcmQgR09ELCB0aGUgR29kIG9mIGhvc3RzLApUaGF0IGluIHRoZSBkYXkgdGhhdCBJIHNoYWxsIHZpc2l0IHRoZSB0cmFuc2dyZXNzaW9ucyBvZiBJc3JhZWwgdXBvbiBoaW0gSSB3aWxsIGFsc28gdmlzaXQgdGhlIGFsdGFycyBvZiBCZXRoZWw6IGFuZCB0aGUgaG9ybnMgb2YgdGhlIGFsdGFyIHNoYWxsIGJlIGN1dCBvZmYsIGFuZCBmYWxsIHRvIHRoZSBncm91bmQuCkFuZCBJIHdpbGwgc21pdGUgdGhlIHdpbnRlciBob3VzZSB3aXRoIHRoZSBzdW1tZXIgaG91c2U7IGFuZCB0aGUgaG91c2VzIG9mIGl2b3J5IHNoYWxsIHBlcmlzaCwgYW5kIHRoZSBncmVhdCBob3VzZXMgc2hhbGwgaGF2ZSBhbiBlbmQsIHNhaXRoIHRoZSBMT1JELgpIZWFyIHRoaXMgd29yZCwgeWUga2luZSBvZiBCYXNoYW4sIHRoYXQgYXJlIGluIHRoZSBtb3VudGFpbiBvZiBTYW1hcmlhLCB3aGljaCBvcHByZXNzIHRoZSBwb29yLCB3aGljaCBjcnVzaCB0aGUgbmVlZHksIHdoaWNoIHNheSB0byB0aGVpciBtYXN0ZXJzLCBCcmluZywgYW5kIGxldCB1cyBkcmluay4KVGhlIExvcmQgR09EIGhhdGggc3dvcm4gYnkgaGlzIGhvbGluZXNzLCB0aGF0LCBsbywgdGhlIGRheXMgc2hhbGwgY29tZSB1cG9uIHlvdSwgdGhhdCBoZSB3aWxsIHRha2UgeW91IGF3YXkgd2l0aCBob29rcywgYW5kIHlvdXIgcG9zdGVyaXR5IHdpdGggZmlzaGhvb2tzLgpBbmQgeWUgc2hhbGwgZ28gb3V0IGF0IHRoZSBicmVhY2hlcywgZXZlcnkgY293IGF0IHRoYXQgd2hpY2ggaXMgYmVmb3JlIGhlcjsgYW5kIHllIHNoYWxsIGNhc3QgdGhlbSBpbnRvIHRoZSBwYWxhY2UsIHNhaXRoIHRoZSBMT1JELgpDb21lIHRvIEJldGhlbCwgYW5kIHRyYW5zZ3Jlc3M7IGF0IEdpbGdhbCBtdWx0aXBseSB0cmFuc2dyZXNzaW9uOyBhbmQgYnJpbmcgeW91ciBzYWNyaWZpY2VzIGV2ZXJ5IG1vcm5pbmcsIGFuZCB5b3VyIHRpdGhlcyBhZnRlciB0aHJlZSB5ZWFyczoKQW5kIG9mZmVyIGEgc2FjcmlmaWNlIG9mIHRoYW5rc2dpdmluZyB3aXRoIGxlYXZlbiwgYW5kIHByb2NsYWltIGFuZCBwdWJsaXNoIHRoZSBmcmVlIG9mZmVyaW5nczogZm9yIHRoaXMgbGlrZXRoIHlvdSwgTyB5ZSBjaGlsZHJlbiBvZiBJc3JhZWwsIHNhaXRoIHRoZSBMb3JkIEdPRC4KQW5kIEkgYWxzbyBoYXZlIGdpdmVuIHlvdSBjbGVhbm5lc3Mgb2YgdGVldGggaW4gYWxsIHlvdXIgY2l0aWVzLCBhbmQgd2FudCBvZiBicmVhZCBpbiBhbGwgeW91ciBwbGFjZXM6IHlldCBoYXZlIHllIG5vdCByZXR1cm5lZCB1bnRvIG1lLCBzYWl0aCB0aGUgTE9SRC4KQW5kIGFsc28gSSBoYXZlIHdpdGhob2xkZW4gdGhlIHJhaW4gZnJvbSB5b3UsIHdoZW4gdGhlcmUgd2VyZSB5ZXQgdGhyZWUgbW9udGhzIHRvIHRoZSBoYXJ2ZXN0OiBhbmQgSSBjYXVzZWQgaXQgdG8gcmFpbiB1cG9uIG9uZSBjaXR5LCBhbmQgY2F1c2VkIGl0IG5vdCB0byByYWluIHVwb24gYW5vdGhlciBjaXR5OiBvbmUgcGllY2Ugd2FzIHJhaW5lZCB1cG9uLCBhbmQgdGhlIHBpZWNlIHdoZXJldXBvbiBpdCByYWluZWQgbm90IHdpdGhlcmVkLgpTbyB0d28gb3IgdGhyZWUgY2l0aWVzIHdhbmRlcmVkIHVudG8gb25lIGNpdHksIHRvIGRyaW5rIHdhdGVyOyBidXQgdGhleSB3ZXJlIG5vdCBzYXRpc2ZpZWQ6IHlldCBoYXZlIHllIG5vdCByZXR1cm5lZCB1bnRvIG1lLCBzYWl0aCB0aGUgTE9SRC4KSSBoYXZlIHNtaXR0ZW4geW91IHdpdGggYmxhc3RpbmcgYW5kIG1pbGRldzogd2hlbiB5b3VyIGdhcmRlbnMgYW5kIHlvdXIgdmluZXlhcmRzIGFuZCB5b3VyIGZpZyB0cmVlcyBhbmQgeW91ciBvbGl2ZSB0cmVlcyBpbmNyZWFzZWQsIHRoZSBwYWxtZXJ3b3JtIGRldm91cmVkIHRoZW06IHlldCBoYXZlIHllIG5vdCByZXR1cm5lZCB1bnRvIG1lLCBzYWl0aCB0aGUgTE9SRC4KSSBoYXZlIHNlbnQgYW1vbmcgeW91IHRoZSBwZXN0aWxlbmNlIGFmdGVyIHRoZSBtYW5uZXIgb2YgRWd5cHQ6IHlvdXIgeW91bmcgbWVuIGhhdmUgSSBzbGFpbiB3aXRoIHRoZSBzd29yZCwgYW5kIGhhdmUgdGFrZW4gYXdheSB5b3VyIGhvcnNlczsgYW5kIEkgaGF2ZSBtYWRlIHRoZSBzdGluayBvZiB5b3VyIGNhbXBzIHRvIGNvbWUgdXAgdW50byB5b3VyIG5vc3RyaWxzOiB5ZXQgaGF2ZSB5ZSBub3QgcmV0dXJuZWQgdW50byBtZSwgc2FpdGggdGhlIExPUkQuCkkgaGF2ZSBvdmVydGhyb3duIHNvbWUgb2YgeW91LCBhcyBHb2Qgb3ZlcnRocmV3IFNvZG9tIGFuZCBHb21vcnJhaCwgYW5kIHllIHdlcmUgYXMgYSBmaXJlYnJhbmQgcGx1Y2tlZCBvdXQgb2YgdGhlIGJ1cm5pbmc6IHlldCBoYXZlIHllIG5vdCByZXR1cm5lZCB1bnRvIG1lLCBzYWl0aCB0aGUgTE9SRC4KVGhlcmVmb3JlIHRodXMgd2lsbCBJIGRvIHVudG8gdGhlZSwgTyBJc3JhZWw6IGFuZCBiZWNhdXNlIEkgd2lsbCBkbyB0aGlzIHVudG8gdGhlZSwgcHJlcGFyZSB0byBtZWV0IHRoeSBHb2QsIE8gSXNyYWVsLgpGb3IsIGxvLCBoZSB0aGF0IGZvcm1ldGggdGhlIG1vdW50YWlucywgYW5kIGNyZWF0ZXRoIHRoZSB3aW5kLCBhbmQgZGVjbGFyZXRoIHVudG8gbWFuIHdoYXQgaXMgaGlzIHRob3VnaHQsIHRoYXQgbWFrZXRoIHRoZSBtb3JuaW5nIGRhcmtuZXNzLCBhbmQgdHJlYWRldGggdXBvbiB0aGUgaGlnaCBwbGFjZXMgb2YgdGhlIGVhcnRoLCBUaGUgTE9SRCwgVGhlIEdvZCBvZiBob3N0cywgaXMgaGlzIG5hbWUuCkhlYXIgeWUgdGhpcyB3b3JkIHdoaWNoIEkgdGFrZSB1cCBhZ2FpbnN0IHlvdSwgZXZlbiBhIGxhbWVudGF0aW9uLCBPIGhvdXNlIG9mIElzcmFlbC4KVGhlIHZpcmdpbiBvZiBJc3JhZWwgaXMgZmFsbGVuOyBzaGUgc2hhbGwgbm8gbW9yZSByaXNlOiBzaGUgaXMgZm9yc2FrZW4gdXBvbiBoZXIgbGFuZDsgdGhlcmUgaXMgbm9uZSB0byByYWlzZSBoZXIgdXAuCkZvciB0aHVzIHNhaXRoIHRoZSBMb3JkIEdPRDsgVGhlIGNpdHkgdGhhdCB3ZW50IG91dCBieSBhIHRob3VzYW5kIHNoYWxsIGxlYXZlIGFuIGh1bmRyZWQsIGFuZCB0aGF0IHdoaWNoIHdlbnQgZm9ydGggYnkgYW4gaHVuZHJlZCBzaGFsbCBsZWF2ZSB0ZW4sIHRvIHRoZSBob3VzZSBvZiBJc3JhZWwuCkZvciB0aHVzIHNhaXRoIHRoZSBMT1JEIHVudG8gdGhlIGhvdXNlIG9mIElzcmFlbCwgU2VlayB5ZSBtZSwgYW5kIHllIHNoYWxsIGxpdmU6CkJ1dCBzZWVrIG5vdCBCZXRoZWwsIG5vciBlbnRlciBpbnRvIEdpbGdhbCwgYW5kIHBhc3Mgbm90IHRvIEJlZXJzaGViYTogZm9yIEdpbGdhbCBzaGFsbCBzdXJlbHkgZ28gaW50byBjYXB0aXZpdHksIGFuZCBCZXRoZWwgc2hhbGwgY29tZSB0byBub3VnaHQuClNlZWsgdGhlIExPUkQsIGFuZCB5ZSBzaGFsbCBsaXZlOyBsZXN0IGhlIGJyZWFrIG91dCBsaWtlIGZpcmUgaW4gdGhlIGhvdXNlIG9mIEpvc2VwaCwgYW5kIGRldm91ciBpdCwgYW5kIHRoZXJlIGJlIG5vbmUgdG8gcXVlbmNoIGl0IGluIEJldGhlbC4KWWUgd2hvIHR1cm4ganVkZ21lbnQgdG8gd29ybXdvb2QsIGFuZCBsZWF2ZSBvZmYgcmlnaHRlb3VzbmVzcyBpbiB0aGUgZWFydGgsClNlZWsgaGltIHRoYXQgbWFrZXRoIHRoZSBzZXZlbiBzdGFycyBhbmQgT3Jpb24sIGFuZCB0dXJuZXRoIHRoZSBzaGFkb3cgb2YgZGVhdGggaW50byB0aGUgbW9ybmluZywgYW5kIG1ha2V0aCB0aGUgZGF5IGRhcmsgd2l0aCBuaWdodDogdGhhdCBjYWxsZXRoIGZvciB0aGUgd2F0ZXJzIG9mIHRoZSBzZWEsIGFuZCBwb3VyZXRoIHRoZW0gb3V0IHVwb24gdGhlIGZhY2Ugb2YgdGhlIGVhcnRoOiBUaGUgTE9SRCBpcyBoaXMgbmFtZToKVGhhdCBzdHJlbmd0aGVuZXRoIHRoZSBzcG9pbGVkIGFnYWluc3QgdGhlIHN0cm9uZywgc28gdGhhdCB0aGUgc3BvaWxlZCBzaGFsbCBjb21lIGFnYWluc3QgdGhlIGZvcnRyZXNzLgpUaGV5IGhhdGUgaGltIHRoYXQgcmVidWtldGggaW4gdGhlIGdhdGUsIGFuZCB0aGV5IGFiaG9yIGhpbSB0aGF0IHNwZWFrZXRoIHVwcmlnaHRseS4KRm9yYXNtdWNoIHRoZXJlZm9yZSBhcyB5b3VyIHRyZWFkaW5nIGlzIHVwb24gdGhlIHBvb3IsIGFuZCB5ZSB0YWtlIGZyb20gaGltIGJ1cmRlbnMgb2Ygd2hlYXQ6IHllIGhhdmUgYnVpbHQgaG91c2VzIG9mIGhld24gc3RvbmUsIGJ1dCB5ZSBzaGFsbCBub3QgZHdlbGwgaW4gdGhlbTsgeWUgaGF2ZSBwbGFudGVkIHBsZWFzYW50IHZpbmV5YXJkcywgYnV0IHllIHNoYWxsIG5vdCBkcmluayB3aW5lIG9mIHRoZW0uCkZvciBJIGtub3cgeW91ciBtYW5pZm9sZCB0cmFuc2dyZXNzaW9ucyBhbmQgeW91ciBtaWdodHkgc2luczogdGhleSBhZmZsaWN0IHRoZSBqdXN0LCB0aGV5IHRha2UgYSBicmliZSwgYW5kIHRoZXkgdHVybiBhc2lkZSB0aGUgcG9vciBpbiB0aGUgZ2F0ZSBmcm9tIHRoZWlyIHJpZ2h0LgpUaGVyZWZvcmUgdGhlIHBydWRlbnQgc2hhbGwga2VlcCBzaWxlbmNlIGluIHRoYXQgdGltZTsgZm9yIGl0IGlzIGFuIGV2aWwgdGltZS4KU2VlayBnb29kLCBhbmQgbm90IGV2aWwsIHRoYXQgeWUgbWF5IGxpdmU6IGFuZCBzbyB0aGUgTE9SRCwgdGhlIEdvZCBvZiBob3N0cywgc2hhbGwgYmUgd2l0aCB5b3UsIGFzIHllIGhhdmUgc3Bva2VuLgpIYXRlIHRoZSBldmlsLCBhbmQgbG92ZSB0aGUgZ29vZCwgYW5kIGVzdGFibGlzaCBqdWRnbWVudCBpbiB0aGUgZ2F0ZTogaXQgbWF5IGJlIHRoYXQgdGhlIExPUkQgR29kIG9mIGhvc3RzIHdpbGwgYmUgZ3JhY2lvdXMgdW50byB0aGUgcmVtbmFudCBvZiBKb3NlcGguClRoZXJlZm9yZSB0aGUgTE9SRCwgdGhlIEdvZCBvZiBob3N0cywgdGhlIExPUkQsIHNhaXRoIHRodXM7IFdhaWxpbmcgc2hhbGwgYmUgaW4gYWxsIHN0cmVldHM7IGFuZCB0aGV5IHNoYWxsIHNheSBpbiBhbGwgdGhlIGhpZ2h3YXlzLCBBbGFzISBhbGFzISBhbmQgdGhleSBzaGFsbCBjYWxsIHRoZSBodXNiYW5kbWFuIHRvIG1vdXJuaW5nLCBhbmQgc3VjaCBhcyBhcmUgc2tpbGZ1bCBvZiBsYW1lbnRhdGlvbiB0byB3YWlsaW5nLgpBbmQgaW4gYWxsIHZpbmV5YXJkcyBzaGFsbCBiZSB3YWlsaW5nOiBmb3IgSSB3aWxsIHBhc3MgdGhyb3VnaCB0aGVlLCBzYWl0aCB0aGUgTE9SRC4KV29lIHVudG8geW91IHRoYXQgZGVzaXJlIHRoZSBkYXkgb2YgdGhlIExPUkQhIHRvIHdoYXQgZW5kIGlzIGl0IGZvciB5b3U/IHRoZSBkYXkgb2YgdGhlIExPUkQgaXMgZGFya25lc3MsIGFuZCBub3QgbGlnaHQuCkFzIGlmIGEgbWFuIGRpZCBmbGVlIGZyb20gYSBsaW9uLCBhbmQgYSBiZWFyIG1ldCBoaW07IG9yIHdlbnQgaW50byB0aGUgaG91c2UsIGFuZCBsZWFuZWQgaGlzIGhhbmQgb24gdGhlIHdhbGwsIGFuZCBhIHNlcnBlbnQgYml0IGhpbS4KU2hhbGwgbm90IHRoZSBkYXkgb2YgdGhlIExPUkQgYmUgZGFya25lc3MsIGFuZCBub3QgbGlnaHQ/IGV2ZW4gdmVyeSBkYXJrLCBhbmQgbm8gYnJpZ2h0bmVzcyBpbiBpdD8KSSBoYXRlLCBJIGRlc3Bpc2UgeW91ciBmZWFzdCBkYXlzLCBhbmQgSSB3aWxsIG5vdCBzbWVsbCBpbiB5b3VyIHNvbGVtbiBhc3NlbWJsaWVzLgpUaG91Z2ggeWUgb2ZmZXIgbWUgYnVybnQgb2ZmZXJpbmdzIGFuZCB5b3VyIG1lYXQgb2ZmZXJpbmdzLCBJIHdpbGwgbm90IGFjY2VwdCB0aGVtOiBuZWl0aGVyIHdpbGwgSSByZWdhcmQgdGhlIHBlYWNlIG9mZmVyaW5ncyBvZiB5b3VyIGZhdCBiZWFzdHMuClRha2UgdGhvdSBhd2F5IGZyb20gbWUgdGhlIG5vaXNlIG9mIHRoeSBzb25nczsgZm9yIEkgd2lsbCBub3QgaGVhciB0aGUgbWVsb2R5IG9mIHRoeSB2aW9scy4KQnV0IGxldCBqdWRnbWVudCBydW4gZG93biBhcyB3YXRlcnMsIGFuZCByaWdodGVvdXNuZXNzIGFzIGEgbWlnaHR5IHN0cmVhbS4KSGF2ZSB5ZSBvZmZlcmVkIHVudG8gbWUgc2FjcmlmaWNlcyBhbmQgb2ZmZXJpbmdzIGluIHRoZSB3aWxkZXJuZXNzIGZvcnR5IHllYXJzLCBPIGhvdXNlIG9mIElzcmFlbD8KQnV0IHllIGhhdmUgYm9ybmUgdGhlIHRhYmVybmFjbGUgb2YgeW91ciBNb2xvY2ggYW5kIENoaXVuIHlvdXIgaW1hZ2VzLCB0aGUgc3RhciBvZiB5b3VyIGdvZCwgd2hpY2ggeWUgbWFkZSB0byB5b3Vyc2VsdmVzLgpUaGVyZWZvcmUgd2lsbCBJIGNhdXNlIHlvdSB0byBnbyBpbnRvIGNhcHRpdml0eSBiZXlvbmQgRGFtYXNjdXMsIHNhaXRoIHRoZSBMT1JELCB3aG9zZSBuYW1lIGlzIFRoZSBHb2Qgb2YgaG9zdHMuCldvZSB0byB0aGVtIHRoYXQgYXJlIGF0IGVhc2UgaW4gWmlvbiwgYW5kIHRydXN0IGluIHRoZSBtb3VudGFpbiBvZiBTYW1hcmlhLCB3aGljaCBhcmUgbmFtZWQgY2hpZWYgb2YgdGhlIG5hdGlvbnMsIHRvIHdob20gdGhlIGhvdXNlIG9mIElzcmFlbCBjYW1lIQpQYXNzIHllIHVudG8gQ2FsbmVoLCBhbmQgc2VlOyBhbmQgZnJvbSB0aGVuY2UgZ28geWUgdG8gSGFtYXRoIHRoZSBncmVhdDogdGhlbiBnbyBkb3duIHRvIEdhdGggb2YgdGhlIFBoaWxpc3RpbmVzOiBiZSB0aGV5IGJldHRlciB0aGFuIHRoZXNlIGtpbmdkb21zPyBvciB0aGVpciBib3JkZXIgZ3JlYXRlciB0aGFuIHlvdXIgYm9yZGVyPwpZZSB0aGF0IHB1dCBmYXIgYXdheSB0aGUgZXZpbCBkYXksIGFuZCBjYXVzZSB0aGUgc2VhdCBvZiB2aW9sZW5jZSB0byBjb21lIG5lYXI7ClRoYXQgbGllIHVwb24gYmVkcyBvZiBpdm9yeSwgYW5kIHN0cmV0Y2ggdGhlbXNlbHZlcyB1cG9uIHRoZWlyIGNvdWNoZXMsIGFuZCBlYXQgdGhlIGxhbWJzIG91dCBvZiB0aGUgZmxvY2ssIGFuZCB0aGUgY2FsdmVzIG91dCBvZiB0aGUgbWlkc3Qgb2YgdGhlIHN0YWxsOwpUaGF0IGNoYW50IHRvIHRoZSBzb3VuZCBvZiB0aGUgdmlvbCwgYW5kIGludmVudCB0byB0aGVtc2VsdmVzIGluc3RydW1lbnRzIG9mIG11c2ljaywgbGlrZSBEYXZpZDsKVGhhdCBkcmluayB3aW5lIGluIGJvd2xzLCBhbmQgYW5vaW50IHRoZW1zZWx2ZXMgd2l0aCB0aGUgY2hpZWYgb2ludG1lbnRzOiBidXQgdGhleSBhcmUgbm90IGdyaWV2ZWQgZm9yIHRoZSBhZmZsaWN0aW9uIG9mIEpvc2VwaC4KVGhlcmVmb3JlIG5vdyBzaGFsbCB0aGV5IGdvIGNhcHRpdmUgd2l0aCB0aGUgZmlyc3QgdGhhdCBnbyBjYXB0aXZlLCBhbmQgdGhlIGJhbnF1ZXQgb2YgdGhlbSB0aGF0IHN0cmV0Y2hlZCB0aGVtc2VsdmVzIHNoYWxsIGJlIHJlbW92ZWQuClRoZSBMb3JkIEdPRCBoYXRoIHN3b3JuIGJ5IGhpbXNlbGYsIHNhaXRoIHRoZSBMT1JEIHRoZSBHb2Qgb2YgaG9zdHMsIEkgYWJob3IgdGhlIGV4Y2VsbGVuY3kgb2YgSmFjb2IsIGFuZCBoYXRlIGhpcyBwYWxhY2VzOiB0aGVyZWZvcmUgd2lsbCBJIGRlbGl2ZXIgdXAgdGhlIGNpdHkgd2l0aCBhbGwgdGhhdCBpcyB0aGVyZWluLgpBbmQgaXQgc2hhbGwgY29tZSB0byBwYXNzLCBpZiB0aGVyZSByZW1haW4gdGVuIG1lbiBpbiBvbmUgaG91c2UsIHRoYXQgdGhleSBzaGFsbCBkaWUuCkFuZCBhIG1hbidzIHVuY2xlIHNoYWxsIHRha2UgaGltIHVwLCBhbmQgaGUgdGhhdCBidXJuZXRoIGhpbSwgdG8gYnJpbmcgb3V0IHRoZSBib25lcyBvdXQgb2YgdGhlIGhvdXNlLCBhbmQgc2hhbGwgc2F5IHVudG8gaGltIHRoYXQgaXMgYnkgdGhlIHNpZGVzIG9mIHRoZSBob3VzZSwgSXMgdGhlcmUgeWV0IGFueSB3aXRoIHRoZWU/IGFuZCBoZSBzaGFsbCBzYXksIE5vLiBUaGVuIHNoYWxsIGhlIHNheSwgSG9sZCB0aHkgdG9uZ3VlOiBmb3Igd2UgbWF5IG5vdCBtYWtlIG1lbnRpb24gb2YgdGhlIG5hbWUgb2YgdGhlIExPUkQuCkZvciwgYmVob2xkLCB0aGUgTE9SRCBjb21tYW5kZXRoLCBhbmQgaGUgd2lsbCBzbWl0ZSB0aGUgZ3JlYXQgaG91c2Ugd2l0aCBicmVhY2hlcywgYW5kIHRoZSBsaXR0bGUgaG91c2Ugd2l0aCBjbGVmdHMuClNoYWxsIGhvcnNlcyBydW4gdXBvbiB0aGUgcm9jaz8gd2lsbCBvbmUgcGxvdyB0aGVyZSB3aXRoIG94ZW4/IGZvciB5ZSBoYXZlIHR1cm5lZCBqdWRnbWVudCBpbnRvIGdhbGwsIGFuZCB0aGUgZnJ1aXQgb2YgcmlnaHRlb3VzbmVzcyBpbnRvIGhlbWxvY2s6ClllIHdoaWNoIHJlam9pY2UgaW4gYSB0aGluZyBvZiBub3VnaHQsIHdoaWNoIHNheSwgSGF2ZSB3ZSBub3QgdGFrZW4gdG8gdXMgaG9ybnMgYnkgb3VyIG93biBzdHJlbmd0aD8KQnV0LCBiZWhvbGQsIEkgd2lsbCByYWlzZSB1cCBhZ2FpbnN0IHlvdSBhIG5hdGlvbiwgTyBob3VzZSBvZiBJc3JhZWwsIHNhaXRoIHRoZSBMT1JEIHRoZSBHb2Qgb2YgaG9zdHM7IGFuZCB0aGV5IHNoYWxsIGFmZmxpY3QgeW91IGZyb20gdGhlIGVudGVyaW5nIGluIG9mIEhlbWF0aCB1bnRvIHRoZSByaXZlciBvZiB0aGUgd2lsZGVybmVzcy4KVGh1cyBoYXRoIHRoZSBMb3JkIEdPRCBzaGV3ZWQgdW50byBtZTsgYW5kLCBiZWhvbGQsIGhlIGZvcm1lZCBncmFzc2hvcHBlcnMgaW4gdGhlIGJlZ2lubmluZyBvZiB0aGUgc2hvb3RpbmcgdXAgb2YgdGhlIGxhdHRlciBncm93dGg7IGFuZCwgbG8sIGl0IHdhcyB0aGUgbGF0dGVyIGdyb3d0aCBhZnRlciB0aGUga2luZydzIG1vd2luZ3MuCkFuZCBpdCBjYW1lIHRvIHBhc3MsIHRoYXQgd2hlbiB0aGV5IGhhZCBtYWRlIGFuIGVuZCBvZiBlYXRpbmcgdGhlIGdyYXNzIG9mIHRoZSBsYW5kLCB0aGVuIEkgc2FpZCwgTyBMb3JkIEdPRCwgZm9yZ2l2ZSwgSSBiZXNlZWNoIHRoZWU6IGJ5IHdob20gc2hhbGwgSmFjb2IgYXJpc2U/IGZvciBoZSBpcyBzbWFsbC4KVGhlIExPUkQgcmVwZW50ZWQgZm9yIHRoaXM6IEl0IHNoYWxsIG5vdCBiZSwgc2FpdGggdGhlIExPUkQuClRodXMgaGF0aCB0aGUgTG9yZCBHT0Qgc2hld2VkIHVudG8gbWU6IGFuZCwgYmVob2xkLCB0aGUgTG9yZCBHT0QgY2FsbGVkIHRvIGNvbnRlbmQgYnkgZmlyZSwgYW5kIGl0IGRldm91cmVkIHRoZSBncmVhdCBkZWVwLCBhbmQgZGlkIGVhdCB1cCBhIHBhcnQuClRoZW4gc2FpZCBJLCBPIExvcmQgR09ELCBjZWFzZSwgSSBiZXNlZWNoIHRoZWU6IGJ5IHdob20gc2hhbGwgSmFjb2IgYXJpc2U/IGZvciBoZSBpcyBzbWFsbC4KVGhlIExPUkQgcmVwZW50ZWQgZm9yIHRoaXM6IFRoaXMgYWxzbyBzaGFsbCBub3QgYmUsIHNhaXRoIHRoZSBMb3JkIEdPRC4KVGh1cyBoZSBzaGV3ZWQgbWU6IGFuZCwgYmVob2xkLCB0aGUgTE9SRCBzdG9vZCB1cG9uIGEgd2FsbCBtYWRlIGJ5IGEgcGx1bWJsaW5lLCB3aXRoIGEgcGx1bWJsaW5lIGluIGhpcyBoYW5kLgpBbmQgdGhlIExPUkQgc2FpZCB1bnRvIG1lLCBBbW9zLCB3aGF0IHNlZXN0IHRob3U/IEFuZCBJIHNhaWQsIEEgcGx1bWJsaW5lLiBUaGVuIHNhaWQgdGhlIExPUkQsIEJlaG9sZCwgSSB3aWxsIHNldCBhIHBsdW1ibGluZSBpbiB0aGUgbWlkc3Qgb2YgbXkgcGVvcGxlIElzcmFlbDogSSB3aWxsIG5vdCBhZ2FpbiBwYXNzIGJ5IHRoZW0gYW55IG1vcmU6CkFuZCB0aGUgaGlnaCBwbGFjZXMgb2YgSXNhYWMgc2hhbGwgYmUgZGVzb2xhdGUsIGFuZCB0aGUgc2FuY3R1YXJpZXMgb2YgSXNyYWVsIHNoYWxsIGJlIGxhaWQgd2FzdGU7IGFuZCBJIHdpbGwgcmlzZSBhZ2FpbnN0IHRoZSBob3VzZSBvZiBKZXJvYm9hbSB3aXRoIHRoZSBzd29yZC4KVGhlbiBBbWF6aWFoIHRoZSBwcmllc3Qgb2YgQmV0aGVsIHNlbnQgdG8gSmVyb2JvYW0ga2luZyBvZiBJc3JhZWwsIHNheWluZywgQW1vcyBoYXRoIGNvbnNwaXJlZCBhZ2FpbnN0IHRoZWUgaW4gdGhlIG1pZHN0IG9mIHRoZSBob3VzZSBvZiBJc3JhZWw6IHRoZSBsYW5kIGlzIG5vdCBhYmxlIHRvIGJlYXIgYWxsIGhpcyB3b3Jkcy4KRm9yIHRodXMgQW1vcyBzYWl0aCwgSmVyb2JvYW0gc2hhbGwgZGllIGJ5IHRoZSBzd29yZCwgYW5kIElzcmFlbCBzaGFsbCBzdXJlbHkgYmUgbGVkIGF3YXkgY2FwdGl2ZSBvdXQgb2YgdGhlaXIgb3duIGxhbmQuCkFsc28gQW1hemlhaCBzYWlkIHVudG8gQW1vcywgTyB0aG91IHNlZXIsIGdvLCBmbGVlIHRoZWUgYXdheSBpbnRvIHRoZSBsYW5kIG9mIEp1ZGFoLCBhbmQgdGhlcmUgZWF0IGJyZWFkLCBhbmQgcHJvcGhlc3kgdGhlcmU6CkJ1dCBwcm9waGVzeSBub3QgYWdhaW4gYW55IG1vcmUgYXQgQmV0aGVsOiBmb3IgaXQgaXMgdGhlIGtpbmcncyBjaGFwZWwsIGFuZCBpdCBpcyB0aGUga2luZydzIGNvdXJ0LgpUaGVuIGFuc3dlcmVkIEFtb3MsIGFuZCBzYWlkIHRvIEFtYXppYWgsIEkgd2FzIG5vIHByb3BoZXQsIG5laXRoZXIgd2FzIEkgYSBwcm9waGV0J3Mgc29uOyBidXQgSSB3YXMgYW4gaGVyZG1hbiwgYW5kIGEgZ2F0aGVyZXIgb2Ygc3ljb21vcmUgZnJ1aXQ6CkFuZCB0aGUgTE9SRCB0b29rIG1lIGFzIEkgZm9sbG93ZWQgdGhlIGZsb2NrLCBhbmQgdGhlIExPUkQgc2FpZCB1bnRvIG1lLCBHbywgcHJvcGhlc3kgdW50byBteSBwZW9wbGUgSXNyYWVsLgpOb3cgdGhlcmVmb3JlIGhlYXIgdGhvdSB0aGUgd29yZCBvZiB0aGUgTE9SRDogVGhvdSBzYXllc3QsIFByb3BoZXN5IG5vdCBhZ2FpbnN0IElzcmFlbCwgYW5kIGRyb3Agbm90IHRoeSB3b3JkIGFnYWluc3QgdGhlIGhvdXNlIG9mIElzYWFjLgpUaGVyZWZvcmUgdGh1cyBzYWl0aCB0aGUgTE9SRDsgVGh5IHdpZmUgc2hhbGwgYmUgYW4gaGFybG90IGluIHRoZSBjaXR5LCBhbmQgdGh5IHNvbnMgYW5kIHRoeSBkYXVnaHRlcnMgc2hhbGwgZmFsbCBieSB0aGUgc3dvcmQsIGFuZCB0aHkgbGFuZCBzaGFsbCBiZSBkaXZpZGVkIGJ5IGxpbmU7IGFuZCB0aG91IHNoYWx0IGRpZSBpbiBhIHBvbGx1dGVkIGxhbmQ6IGFuZCBJc3JhZWwgc2hhbGwgc3VyZWx5IGdvIGludG8gY2FwdGl2aXR5IGZvcnRoIG9mIGhpcyBsYW5kLgpUaHVzIGhhdGggdGhlIExvcmQgR09EIHNoZXdlZCB1bnRvIG1lOiBhbmQgYmVob2xkIGEgYmFza2V0IG9mIHN1bW1lciBmcnVpdC4KQW5kIGhlIHNhaWQsIEFtb3MsIHdoYXQgc2Vlc3QgdGhvdT8gQW5kIEkgc2FpZCwgQSBiYXNrZXQgb2Ygc3VtbWVyIGZydWl0LiBUaGVuIHNhaWQgdGhlIExPUkQgdW50byBtZSwgVGhlIGVuZCBpcyBjb21lIHVwb24gbXkgcGVvcGxlIG9mIElzcmFlbDsgSSB3aWxsIG5vdCBhZ2FpbiBwYXNzIGJ5IHRoZW0gYW55IG1vcmUuCkFuZCB0aGUgc29uZ3Mgb2YgdGhlIHRlbXBsZSBzaGFsbCBiZSBob3dsaW5ncyBpbiB0aGF0IGRheSwgc2FpdGggdGhlIExvcmQgR09EOiB0aGVyZSBzaGFsbCBiZSBtYW55IGRlYWQgYm9kaWVzIGluIGV2ZXJ5IHBsYWNlOyB0aGV5IHNoYWxsIGNhc3QgdGhlbSBmb3J0aCB3aXRoIHNpbGVuY2UuCkhlYXIgdGhpcywgTyB5ZSB0aGF0IHN3YWxsb3cgdXAgdGhlIG5lZWR5LCBldmVuIHRvIG1ha2UgdGhlIHBvb3Igb2YgdGhlIGxhbmQgdG8gZmFpbCwKU2F5aW5nLCBXaGVuIHdpbGwgdGhlIG5ldyBtb29uIGJlIGdvbmUsIHRoYXQgd2UgbWF5IHNlbGwgY29ybj8gYW5kIHRoZSBzYWJiYXRoLCB0aGF0IHdlIG1heSBzZXQgZm9ydGggd2hlYXQsIG1ha2luZyB0aGUgZXBoYWggc21hbGwsIGFuZCB0aGUgc2hla2VsIGdyZWF0LCBhbmQgZmFsc2lmeWluZyB0aGUgYmFsYW5jZXMgYnkgZGVjZWl0PwpUaGF0IHdlIG1heSBidXkgdGhlIHBvb3IgZm9yIHNpbHZlciwgYW5kIHRoZSBuZWVkeSBmb3IgYSBwYWlyIG9mIHNob2VzOyB5ZWEsIGFuZCBzZWxsIHRoZSByZWZ1c2Ugb2YgdGhlIHdoZWF0PwpUaGUgTE9SRCBoYXRoIHN3b3JuIGJ5IHRoZSBleGNlbGxlbmN5IG9mIEphY29iLCBTdXJlbHkgSSB3aWxsIG5ldmVyIGZvcmdldCBhbnkgb2YgdGhlaXIgd29ya3MuClNoYWxsIG5vdCB0aGUgbGFuZCB0cmVtYmxlIGZvciB0aGlzLCBhbmQgZXZlcnkgb25lIG1vdXJuIHRoYXQgZHdlbGxldGggdGhlcmVpbj8gYW5kIGl0IHNoYWxsIHJpc2UgdXAgd2hvbGx5IGFzIGEgZmxvb2Q7IGFuZCBpdCBzaGFsbCBiZSBjYXN0IG91dCBhbmQgZHJvd25lZCwgYXMgYnkgdGhlIGZsb29kIG9mIEVneXB0LgpBbmQgaXQgc2hhbGwgY29tZSB0byBwYXNzIGluIHRoYXQgZGF5LCBzYWl0aCB0aGUgTG9yZCBHT0QsIHRoYXQgSSB3aWxsIGNhdXNlIHRoZSBzdW4gdG8gZ28gZG93biBhdCBub29uLCBhbmQgSSB3aWxsIGRhcmtlbiB0aGUgZWFydGggaW4gdGhlIGNsZWFyIGRheToKQW5kIEkgd2lsbCB0dXJuIHlvdXIgZmVhc3RzIGludG8gbW91cm5pbmcsIGFuZCBhbGwgeW91ciBzb25ncyBpbnRvIGxhbWVudGF0aW9uOyBhbmQgSSB3aWxsIGJyaW5nIHVwIHNhY2tjbG90aCB1cG9uIGFsbCBsb2lucywgYW5kIGJhbGRuZXNzIHVwb24gZXZlcnkgaGVhZDsgYW5kIEkgd2lsbCBtYWtlIGl0IGFzIHRoZSBtb3VybmluZyBvZiBhbiBvbmx5IHNvbiwgYW5kIHRoZSBlbmQgdGhlcmVvZiBhcyBhIGJpdHRlciBkYXkuCkJlaG9sZCwgdGhlIGRheXMgY29tZSwgc2FpdGggdGhlIExvcmQgR09ELCB0aGF0IEkgd2lsbCBzZW5kIGEgZmFtaW5lIGluIHRoZSBsYW5kLCBub3QgYSBmYW1pbmUgb2YgYnJlYWQsIG5vciBhIHRoaXJzdCBmb3Igd2F0ZXIsIGJ1dCBvZiBoZWFyaW5nIHRoZSB3b3JkcyBvZiB0aGUgTE9SRDoKQW5kIHRoZXkgc2hhbGwgd2FuZGVyIGZyb20gc2VhIHRvIHNlYSwgYW5kIGZyb20gdGhlIG5vcnRoIGV2ZW4gdG8gdGhlIGVhc3QsIHRoZXkgc2hhbGwgcnVuIHRvIGFuZCBmcm8gdG8gc2VlayB0aGUgd29yZCBvZiB0aGUgTE9SRCwgYW5kIHNoYWxsIG5vdCBmaW5kIGl0LgpJbiB0aGF0IGRheSBzaGFsbCB0aGUgZmFpciB2aXJnaW5zIGFuZCB5b3VuZyBtZW4gZmFpbnQgZm9yIHRoaXJzdC4KVGhleSB0aGF0IHN3ZWFyIGJ5IHRoZSBzaW4gb2YgU2FtYXJpYSwgYW5kIHNheSwgVGh5IGdvZCwgTyBEYW4sIGxpdmV0aDsgYW5kLCBUaGUgbWFubmVyIG9mIEJlZXJzaGViYSBsaXZldGg7IGV2ZW4gdGhleSBzaGFsbCBmYWxsLCBhbmQgbmV2ZXIgcmlzZSB1cCBhZ2Fpbi4KSSBzYXcgdGhlIExPUkQgc3RhbmRpbmcgdXBvbiB0aGUgYWx0YXI6IGFuZCBoZSBzYWlkLCBTbWl0ZSB0aGUgbGludGVsIG9mIHRoZSBkb29yLCB0aGF0IHRoZSBwb3N0cyBtYXkgc2hha2U6IGFuZCBjdXQgdGhlbSBpbiB0aGUgaGVhZCwgYWxsIG9mIHRoZW07IGFuZCBJIHdpbGwgc2xheSB0aGUgbGFzdCBvZiB0aGVtIHdpdGggdGhlIHN3b3JkOiBoZSB0aGF0IGZsZWV0aCBvZiB0aGVtIHNoYWxsIG5vdCBmbGVlIGF3YXksIGFuZCBoZSB0aGF0IGVzY2FwZXRoIG9mIHRoZW0gc2hhbGwgbm90IGJlIGRlbGl2ZXJlZC4KVGhvdWdoIHRoZXkgZGlnIGludG8gaGVsbCwgdGhlbmNlIHNoYWxsIG1pbmUgaGFuZCB0YWtlIHRoZW07IHRob3VnaCB0aGV5IGNsaW1iIHVwIHRvIGhlYXZlbiwgdGhlbmNlIHdpbGwgSSBicmluZyB0aGVtIGRvd246CkFuZCB0aG91Z2ggdGhleSBoaWRlIHRoZW1zZWx2ZXMgaW4gdGhlIHRvcCBvZiBDYXJtZWwsIEkgd2lsbCBzZWFyY2ggYW5kIHRha2UgdGhlbSBvdXQgdGhlbmNlOyBhbmQgdGhvdWdoIHRoZXkgYmUgaGlkIGZyb20gbXkgc2lnaHQgaW4gdGhlIGJvdHRvbSBvZiB0aGUgc2VhLCB0aGVuY2Ugd2lsbCBJIGNvbW1hbmQgdGhlIHNlcnBlbnQsIGFuZCBoZSBzaGFsbCBiaXRlIHRoZW06CkFuZCB0aG91Z2ggdGhleSBnbyBpbnRvIGNhcHRpdml0eSBiZWZvcmUgdGhlaXIgZW5lbWllcywgdGhlbmNlIHdpbGwgSSBjb21tYW5kIHRoZSBzd29yZCwgYW5kIGl0IHNoYWxsIHNsYXkgdGhlbTogYW5kIEkgd2lsbCBzZXQgbWluZSBleWVzIHVwb24gdGhlbSBmb3IgZXZpbCwgYW5kIG5vdCBmb3IgZ29vZC4KQW5kIHRoZSBMb3JkIEdPRCBvZiBob3N0cyBpcyBoZSB0aGF0IHRvdWNoZXRoIHRoZSBsYW5kLCBhbmQgaXQgc2hhbGwgbWVsdCwgYW5kIGFsbCB0aGF0IGR3ZWxsIHRoZXJlaW4gc2hhbGwgbW91cm46IGFuZCBpdCBzaGFsbCByaXNlIHVwIHdob2xseSBsaWtlIGEgZmxvb2Q7IGFuZCBzaGFsbCBiZSBkcm93bmVkLCBhcyBieSB0aGUgZmxvb2Qgb2YgRWd5cHQuCkl0IGlzIGhlIHRoYXQgYnVpbGRldGggaGlzIHN0b3JpZXMgaW4gdGhlIGhlYXZlbiwgYW5kIGhhdGggZm91bmRlZCBoaXMgdHJvb3AgaW4gdGhlIGVhcnRoOyBoZSB0aGF0IGNhbGxldGggZm9yIHRoZSB3YXRlcnMgb2YgdGhlIHNlYSwgYW5kIHBvdXJldGggdGhlbSBvdXQgdXBvbiB0aGUgZmFjZSBvZiB0aGUgZWFydGg6IFRoZSBMT1JEIGlzIGhpcyBuYW1lLgpBcmUgeWUgbm90IGFzIGNoaWxkcmVuIG9mIHRoZSBFdGhpb3BpYW5zIHVudG8gbWUsIE8gY2hpbGRyZW4gb2YgSXNyYWVsPyBzYWl0aCB0aGUgTE9SRC4gSGF2ZSBub3QgSSBicm91Z2h0IHVwIElzcmFlbCBvdXQgb2YgdGhlIGxhbmQgb2YgRWd5cHQ/IGFuZCB0aGUgUGhpbGlzdGluZXMgZnJvbSBDYXBodG9yLCBhbmQgdGhlIFN5cmlhbnMgZnJvbSBLaXI/CkJlaG9sZCwgdGhlIGV5ZXMgb2YgdGhlIExvcmQgR09EIGFyZSB1cG9uIHRoZSBzaW5mdWwga2luZ2RvbSwgYW5kIEkgd2lsbCBkZXN0cm95IGl0IGZyb20gb2ZmIHRoZSBmYWNlIG9mIHRoZSBlYXJ0aDsgc2F2aW5nIHRoYXQgSSB3aWxsIG5vdCB1dHRlcmx5IGRlc3Ryb3kgdGhlIGhvdXNlIG9mIEphY29iLCBzYWl0aCB0aGUgTE9SRC4KRm9yLCBsbywgSSB3aWxsIGNvbW1hbmQsIGFuZCBJIHdpbGwgc2lmdCB0aGUgaG91c2Ugb2YgSXNyYWVsIGFtb25nIGFsbCBuYXRpb25zLCBsaWtlIGFzIGNvcm4gaXMgc2lmdGVkIGluIGEgc2lldmUsIHlldCBzaGFsbCBub3QgdGhlIGxlYXN0IGdyYWluIGZhbGwgdXBvbiB0aGUgZWFydGguCkFsbCB0aGUgc2lubmVycyBvZiBteSBwZW9wbGUgc2hhbGwgZGllIGJ5IHRoZSBzd29yZCwgd2hpY2ggc2F5LCBUaGUgZXZpbCBzaGFsbCBub3Qgb3ZlcnRha2Ugbm9yIHByZXZlbnQgdXMuCkluIHRoYXQgZGF5IHdpbGwgSSByYWlzZSB1cCB0aGUgdGFiZXJuYWNsZSBvZiBEYXZpZCB0aGF0IGlzIGZhbGxlbiwgYW5kIGNsb3NlIHVwIHRoZSBicmVhY2hlcyB0aGVyZW9mOyBhbmQgSSB3aWxsIHJhaXNlIHVwIGhpcyBydWlucywgYW5kIEkgd2lsbCBidWlsZCBpdCBhcyBpbiB0aGUgZGF5cyBvZiBvbGQ6ClRoYXQgdGhleSBtYXkgcG9zc2VzcyB0aGUgcmVtbmFudCBvZiBFZG9tLCBhbmQgb2YgYWxsIHRoZSBoZWF0aGVuLCB3aGljaCBhcmUgY2FsbGVkIGJ5IG15IG5hbWUsIHNhaXRoIHRoZSBMT1JEIHRoYXQgZG9ldGggdGhpcy4KQmVob2xkLCB0aGUgZGF5cyBjb21lLCBzYWl0aCB0aGUgTE9SRCwgdGhhdCB0aGUgcGxvd21hbiBzaGFsbCBvdmVydGFrZSB0aGUgcmVhcGVyLCBhbmQgdGhlIHRyZWFkZXIgb2YgZ3JhcGVzIGhpbSB0aGF0IHNvd2V0aCBzZWVkOyBhbmQgdGhlIG1vdW50YWlucyBzaGFsbCBkcm9wIHN3ZWV0IHdpbmUsIGFuZCBhbGwgdGhlIGhpbGxzIHNoYWxsIG1lbHQuCkFuZCBJIHdpbGwgYnJpbmcgYWdhaW4gdGhlIGNhcHRpdml0eSBvZiBteSBwZW9wbGUgb2YgSXNyYWVsLCBhbmQgdGhleSBzaGFsbCBidWlsZCB0aGUgd2FzdGUgY2l0aWVzLCBhbmQgaW5oYWJpdCB0aGVtOyBhbmQgdGhleSBzaGFsbCBwbGFudCB2aW5leWFyZHMsIGFuZCBkcmluayB0aGUgd2luZSB0aGVyZW9mOyB0aGV5IHNoYWxsIGFsc28gbWFrZSBnYXJkZW5zLCBhbmQgZWF0IHRoZSBmcnVpdCBvZiB0aGVtLgpBbmQgSSB3aWxsIHBsYW50IHRoZW0gdXBvbiB0aGVpciBsYW5kLCBhbmQgdGhleSBzaGFsbCBubyBtb3JlIGJlIHB1bGxlZCB1cCBvdXQgb2YgdGhlaXIgbGFuZCB3aGljaCBJIGhhdmUgZ2l2ZW4gdGhlbSwgc2FpdGggdGhlIExPUkQgdGh5IEdvZC4KVGhlIHZpc2lvbiBvZiBPYmFkaWFoLiBUaHVzIHNhaXRoIHRoZSBMb3JkIEdPRCBjb25jZXJuaW5nIEVkb207IFdlIGhhdmUgaGVhcmQgYSBydW1vdXIgZnJvbSB0aGUgTE9SRCwgYW5kIGFuIGFtYmFzc2Fkb3IgaXMgc2VudCBhbW9uZyB0aGUgaGVhdGhlbiwgQXJpc2UgeWUsIGFuZCBsZXQgdXMgcmlzZSB1cCBhZ2FpbnN0IGhlciBpbiBiYXR0bGUuCkJlaG9sZCwgSSBoYXZlIG1hZGUgdGhlZSBzbWFsbCBhbW9uZyB0aGUgaGVhdGhlbjogdGhvdSBhcnQgZ3JlYXRseSBkZXNwaXNlZC4KVGhlIHByaWRlIG9mIHRoaW5lIGhlYXJ0IGhhdGggZGVjZWl2ZWQgdGhlZSwgdGhvdSB0aGF0IGR3ZWxsZXN0IGluIHRoZSBjbGVmdHMgb2YgdGhlIHJvY2ssIHdob3NlIGhhYml0YXRpb24gaXMgaGlnaDsgdGhhdCBzYWl0aCBpbiBoaXMgaGVhcnQsIFdobyBzaGFsbCBicmluZyBtZSBkb3duIHRvIHRoZSBncm91bmQ/ClRob3VnaCB0aG91IGV4YWx0IHRoeXNlbGYgYXMgdGhlIGVhZ2xlLCBhbmQgdGhvdWdoIHRob3Ugc2V0IHRoeSBuZXN0IGFtb25nIHRoZSBzdGFycywgdGhlbmNlIHdpbGwgSSBicmluZyB0aGVlIGRvd24sIHNhaXRoIHRoZSBMT1JELgpJZiB0aGlldmVzIGNhbWUgdG8gdGhlZSwgaWYgcm9iYmVycyBieSBuaWdodCwgKGhvdyBhcnQgdGhvdSBjdXQgb2ZmISkgd291bGQgdGhleSBub3QgaGF2ZSBzdG9sZW4gdGlsbCB0aGV5IGhhZCBlbm91Z2g/IGlmIHRoZSBncmFwZWdhdGhlcmVycyBjYW1lIHRvIHRoZWUsIHdvdWxkIHRoZXkgbm90IGxlYXZlIHNvbWUgZ3JhcGVzPwpIb3cgYXJlIHRoZSB0aGluZ3Mgb2YgRXNhdSBzZWFyY2hlZCBvdXQhIGhvdyBhcmUgaGlzIGhpZGRlbiB0aGluZ3Mgc291Z2h0IHVwIQpBbGwgdGhlIG1lbiBvZiB0aHkgY29uZmVkZXJhY3kgaGF2ZSBicm91Z2h0IHRoZWUgZXZlbiB0byB0aGUgYm9yZGVyOiB0aGUgbWVuIHRoYXQgd2VyZSBhdCBwZWFjZSB3aXRoIHRoZWUgaGF2ZSBkZWNlaXZlZCB0aGVlLCBhbmQgcHJldmFpbGVkIGFnYWluc3QgdGhlZTsgdGhhdCB0aGV5IGVhdCB0aHkgYnJlYWQgaGF2ZSBsYWlkIGEgd291bmQgdW5kZXIgdGhlZTogdGhlcmUgaXMgbm9uZSB1bmRlcnN0YW5kaW5nIGluIGhpbS4KU2hhbGwgSSBub3QgaW4gdGhhdCBkYXksIHNhaXRoIHRoZSBMT1JELCBldmVuIGRlc3Ryb3kgdGhlIHdpc2UgbWVuIG91dCBvZiBFZG9tLCBhbmQgdW5kZXJzdGFuZGluZyBvdXQgb2YgdGhlIG1vdW50IG9mIEVzYXU/CkFuZCB0aHkgbWlnaHR5IG1lbiwgTyBUZW1hbiwgc2hhbGwgYmUgZGlzbWF5ZWQsIHRvIHRoZSBlbmQgdGhhdCBldmVyeSBvbmUgb2YgdGhlIG1vdW50IG9mIEVzYXUgbWF5IGJlIGN1dCBvZmYgYnkgc2xhdWdodGVyLgpGb3IgdGh5IHZpb2xlbmNlIGFnYWluc3QgdGh5IGJyb3RoZXIgSmFjb2Igc2hhbWUgc2hhbGwgY292ZXIgdGhlZSwgYW5kIHRob3Ugc2hhbHQgYmUgY3V0IG9mZiBmb3IgZXZlci4KSW4gdGhlIGRheSB0aGF0IHRob3Ugc3Rvb2Rlc3Qgb24gdGhlIG90aGVyIHNpZGUsIGluIHRoZSBkYXkgdGhhdCB0aGUgc3RyYW5nZXJzIGNhcnJpZWQgYXdheSBjYXB0aXZlIGhpcyBmb3JjZXMsIGFuZCBmb3JlaWduZXJzIGVudGVyZWQgaW50byBoaXMgZ2F0ZXMsIGFuZCBjYXN0IGxvdHMgdXBvbiBKZXJ1c2FsZW0sIGV2ZW4gdGhvdSB3YXN0IGFzIG9uZSBvZiB0aGVtLgpCdXQgdGhvdSBzaG91bGRlc3Qgbm90IGhhdmUgbG9va2VkIG9uIHRoZSBkYXkgb2YgdGh5IGJyb3RoZXIgaW4gdGhlIGRheSB0aGF0IGhlIGJlY2FtZSBhIHN0cmFuZ2VyOyBuZWl0aGVyIHNob3VsZGVzdCB0aG91IGhhdmUgcmVqb2ljZWQgb3ZlciB0aGUgY2hpbGRyZW4gb2YgSnVkYWggaW4gdGhlIGRheSBvZiB0aGVpciBkZXN0cnVjdGlvbjsgbmVpdGhlciBzaG91bGRlc3QgdGhvdSBoYXZlIHNwb2tlbiBwcm91ZGx5IGluIHRoZSBkYXkgb2YgZGlzdHJlc3MuClRob3Ugc2hvdWxkZXN0IG5vdCBoYXZlIGVudGVyZWQgaW50byB0aGUgZ2F0ZSBvZiBteSBwZW9wbGUgaW4gdGhlIGRheSBvZiB0aGVpciBjYWxhbWl0eTsgeWVhLCB0aG91IHNob3VsZGVzdCBub3QgaGF2ZSBsb29rZWQgb24gdGhlaXIgYWZmbGljdGlvbiBpbiB0aGUgZGF5IG9mIHRoZWlyIGNhbGFtaXR5LCBub3IgaGF2ZSBsYWlkIGhhbmRzIG9uIHRoZWlyIHN1YnN0YW5jZSBpbiB0aGUgZGF5IG9mIHRoZWlyIGNhbGFtaXR5OwpOZWl0aGVyIHNob3VsZGVzdCB0aG91IGhhdmUgc3Rvb2QgaW4gdGhlIGNyb3Nzd2F5LCB0byBjdXQgb2ZmIHRob3NlIG9mIGhpcyB0aGF0IGRpZCBlc2NhcGU7IG5laXRoZXIgc2hvdWxkZXN0IHRob3UgaGF2ZSBkZWxpdmVyZWQgdXAgdGhvc2Ugb2YgaGlzIHRoYXQgZGlkIHJlbWFpbiBpbiB0aGUgZGF5IG9mIGRpc3RyZXNzLgpGb3IgdGhlIGRheSBvZiB0aGUgTE9SRCBpcyBuZWFyIHVwb24gYWxsIHRoZSBoZWF0aGVuOiBhcyB0aG91IGhhc3QgZG9uZSwgaXQgc2hhbGwgYmUgZG9uZSB1bnRvIHRoZWU6IHRoeSByZXdhcmQgc2hhbGwgcmV0dXJuIHVwb24gdGhpbmUgb3duIGhlYWQuCkZvciBhcyB5ZSBoYXZlIGRydW5rIHVwb24gbXkgaG9seSBtb3VudGFpbiwgc28gc2hhbGwgYWxsIHRoZSBoZWF0aGVuIGRyaW5rIGNvbnRpbnVhbGx5LCB5ZWEsIHRoZXkgc2hhbGwgZHJpbmssIGFuZCB0aGV5IHNoYWxsIHN3YWxsb3cgZG93biwgYW5kIHRoZXkgc2hhbGwgYmUgYXMgdGhvdWdoIHRoZXkgaGFkIG5vdCBiZWVuLgpCdXQgdXBvbiBtb3VudCBaaW9uIHNoYWxsIGJlIGRlbGl2ZXJhbmNlLCBhbmQgdGhlcmUgc2hhbGwgYmUgaG9saW5lc3M7IGFuZCB0aGUgaG91c2Ugb2YgSmFjb2Igc2hhbGwgcG9zc2VzcyB0aGVpciBwb3NzZXNzaW9ucy4KQW5kIHRoZSBob3VzZSBvZiBKYWNvYiBzaGFsbCBiZSBhIGZpcmUsIGFuZCB0aGUgaG91c2Ugb2YgSm9zZXBoIGEgZmxhbWUsIGFuZCB0aGUgaG91c2Ugb2YgRXNhdSBmb3Igc3R1YmJsZSwgYW5kIHRoZXkgc2hhbGwga2luZGxlIGluIHRoZW0sIGFuZCBkZXZvdXIgdGhlbTsgYW5kIHRoZXJlIHNoYWxsIG5vdCBiZSBhbnkgcmVtYWluaW5nIG9mIHRoZSBob3VzZSBvZiBFc2F1OyBmb3IgdGhlIExPUkQgaGF0aCBzcG9rZW4gaXQuCkFuZCB0aGV5IG9mIHRoZSBzb3V0aCBzaGFsbCBwb3NzZXNzIHRoZSBtb3VudCBvZiBFc2F1OyBhbmQgdGhleSBvZiB0aGUgcGxhaW4gdGhlIFBoaWxpc3RpbmVzOiBhbmQgdGhleSBzaGFsbCBwb3NzZXNzIHRoZSBmaWVsZHMgb2YgRXBocmFpbSwgYW5kIHRoZSBmaWVsZHMgb2YgU2FtYXJpYTogYW5kIEJlbmphbWluIHNoYWxsIHBvc3Nlc3MgR2lsZWFkLgpBbmQgdGhlIGNhcHRpdml0eSBvZiB0aGlzIGhvc3Qgb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBzaGFsbCBwb3NzZXNzIHRoYXQgb2YgdGhlIENhbmFhbml0ZXMsIGV2ZW4gdW50byBaYXJlcGhhdGg7IGFuZCB0aGUgY2FwdGl2aXR5IG9mIEplcnVzYWxlbSwgd2hpY2ggaXMgaW4gU2VwaGFyYWQsIHNoYWxsIHBvc3Nlc3MgdGhlIGNpdGllcyBvZiB0aGUgc291dGguCkFuZCBzYXZpb3VycyBzaGFsbCBjb21lIHVwIG9uIG1vdW50IFppb24gdG8ganVkZ2UgdGhlIG1vdW50IG9mIEVzYXU7IGFuZCB0aGUga2luZ2RvbSBzaGFsbCBiZSB0aGUgTE9SRCdzLgpOb3cgdGhlIHdvcmQgb2YgdGhlIExPUkQgY2FtZSB1bnRvIEpvbmFoIHRoZSBzb24gb2YgQW1pdHRhaSwgc2F5aW5nLApBcmlzZSwgZ28gdG8gTmluZXZlaCwgdGhhdCBncmVhdCBjaXR5LCBhbmQgY3J5IGFnYWluc3QgaXQ7IGZvciB0aGVpciB3aWNrZWRuZXNzIGlzIGNvbWUgdXAgYmVmb3JlIG1lLgpCdXQgSm9uYWggcm9zZSB1cCB0byBmbGVlIHVudG8gVGFyc2hpc2ggZnJvbSB0aGUgcHJlc2VuY2Ugb2YgdGhlIExPUkQsIGFuZCB3ZW50IGRvd24gdG8gSm9wcGE7IGFuZCBoZSBmb3VuZCBhIHNoaXAgZ29pbmcgdG8gVGFyc2hpc2g6IHNvIGhlIHBhaWQgdGhlIGZhcmUgdGhlcmVvZiwgYW5kIHdlbnQgZG93biBpbnRvIGl0LCB0byBnbyB3aXRoIHRoZW0gdW50byBUYXJzaGlzaCBmcm9tIHRoZSBwcmVzZW5jZSBvZiB0aGUgTE9SRC4KQnV0IHRoZSBMT1JEIHNlbnQgb3V0IGEgZ3JlYXQgd2luZCBpbnRvIHRoZSBzZWEsIGFuZCB0aGVyZSB3YXMgYSBtaWdodHkgdGVtcGVzdCBpbiB0aGUgc2VhLCBzbyB0aGF0IHRoZSBzaGlwIHdhcyBsaWtlIHRvIGJlIGJyb2tlbi4KVGhlbiB0aGUgbWFyaW5lcnMgd2VyZSBhZnJhaWQsIGFuZCBjcmllZCBldmVyeSBtYW4gdW50byBoaXMgZ29kLCBhbmQgY2FzdCBmb3J0aCB0aGUgd2FyZXMgdGhhdCB3ZXJlIGluIHRoZSBzaGlwIGludG8gdGhlIHNlYSwgdG8gbGlnaHRlbiBpdCBvZiB0aGVtLiBCdXQgSm9uYWggd2FzIGdvbmUgZG93biBpbnRvIHRoZSBzaWRlcyBvZiB0aGUgc2hpcDsgYW5kIGhlIGxheSwgYW5kIHdhcyBmYXN0IGFzbGVlcC4KU28gdGhlIHNoaXBtYXN0ZXIgY2FtZSB0byBoaW0sIGFuZCBzYWlkIHVudG8gaGltLCBXaGF0IG1lYW5lc3QgdGhvdSwgTyBzbGVlcGVyPyBhcmlzZSwgY2FsbCB1cG9uIHRoeSBHb2QsIGlmIHNvIGJlIHRoYXQgR29kIHdpbGwgdGhpbmsgdXBvbiB1cywgdGhhdCB3ZSBwZXJpc2ggbm90LgpBbmQgdGhleSBzYWlkIGV2ZXJ5IG9uZSB0byBoaXMgZmVsbG93LCBDb21lLCBhbmQgbGV0IHVzIGNhc3QgbG90cywgdGhhdCB3ZSBtYXkga25vdyBmb3Igd2hvc2UgY2F1c2UgdGhpcyBldmlsIGlzIHVwb24gdXMuIFNvIHRoZXkgY2FzdCBsb3RzLCBhbmQgdGhlIGxvdCBmZWxsIHVwb24gSm9uYWguClRoZW4gc2FpZCB0aGV5IHVudG8gaGltLCBUZWxsIHVzLCB3ZSBwcmF5IHRoZWUsIGZvciB3aG9zZSBjYXVzZSB0aGlzIGV2aWwgaXMgdXBvbiB1czsgV2hhdCBpcyB0aGluZSBvY2N1cGF0aW9uPyBhbmQgd2hlbmNlIGNvbWVzdCB0aG91PyB3aGF0IGlzIHRoeSBjb3VudHJ5PyBhbmQgb2Ygd2hhdCBwZW9wbGUgYXJ0IHRob3U/CkFuZCBoZSBzYWlkIHVudG8gdGhlbSwgSSBhbSBhbiBIZWJyZXc7IGFuZCBJIGZlYXIgdGhlIExPUkQsIHRoZSBHb2Qgb2YgaGVhdmVuLCB3aGljaCBoYXRoIG1hZGUgdGhlIHNlYSBhbmQgdGhlIGRyeSBsYW5kLgpUaGVuIHdlcmUgdGhlIG1lbiBleGNlZWRpbmdseSBhZnJhaWQsIGFuZCBzYWlkIHVudG8gaGltLiBXaHkgaGFzdCB0aG91IGRvbmUgdGhpcz8gRm9yIHRoZSBtZW4ga25ldyB0aGF0IGhlIGZsZWQgZnJvbSB0aGUgcHJlc2VuY2Ugb2YgdGhlIExPUkQsIGJlY2F1c2UgaGUgaGFkIHRvbGQgdGhlbS4KVGhlbiBzYWlkIHRoZXkgdW50byBoaW0sIFdoYXQgc2hhbGwgd2UgZG8gdW50byB0aGVlLCB0aGF0IHRoZSBzZWEgbWF5IGJlIGNhbG0gdW50byB1cz8gZm9yIHRoZSBzZWEgd3JvdWdodCwgYW5kIHdhcyB0ZW1wZXN0dW91cy4KQW5kIGhlIHNhaWQgdW50byB0aGVtLCBUYWtlIG1lIHVwLCBhbmQgY2FzdCBtZSBmb3J0aCBpbnRvIHRoZSBzZWE7IHNvIHNoYWxsIHRoZSBzZWEgYmUgY2FsbSB1bnRvIHlvdTogZm9yIEkga25vdyB0aGF0IGZvciBteSBzYWtlIHRoaXMgZ3JlYXQgdGVtcGVzdCBpcyB1cG9uIHlvdS4KTmV2ZXJ0aGVsZXNzIHRoZSBtZW4gcm93ZWQgaGFyZCB0byBicmluZyBpdCB0byB0aGUgbGFuZDsgYnV0IHRoZXkgY291bGQgbm90OiBmb3IgdGhlIHNlYSB3cm91Z2h0LCBhbmQgd2FzIHRlbXBlc3R1b3VzIGFnYWluc3QgdGhlbS4KV2hlcmVmb3JlIHRoZXkgY3JpZWQgdW50byB0aGUgTE9SRCwgYW5kIHNhaWQsIFdlIGJlc2VlY2ggdGhlZSwgTyBMT1JELCB3ZSBiZXNlZWNoIHRoZWUsIGxldCB1cyBub3QgcGVyaXNoIGZvciB0aGlzIG1hbidzIGxpZmUsIGFuZCBsYXkgbm90IHVwb24gdXMgaW5ub2NlbnQgYmxvb2Q6IGZvciB0aG91LCBPIExPUkQsIGhhc3QgZG9uZSBhcyBpdCBwbGVhc2VkIHRoZWUuClNvIHRoZXkgbG9vayB1cCBKb25haCwgYW5kIGNhc3QgaGltIGZvcnRoIGludG8gdGhlIHNlYTogYW5kIHRoZSBzZWEgY2Vhc2VkIGZyb20gaGVyIHJhZ2luZy4KVGhlbiB0aGUgbWVuIGZlYXJlZCB0aGUgTE9SRCBleGNlZWRpbmdseSwgYW5kIG9mZmVyZWQgYSBzYWNyaWZpY2UgdW50byB0aGUgTE9SRCwgYW5kIG1hZGUgdm93cy4KTm93IHRoZSBMT1JEIGhhZCBwcmVwYXJlZCBhIGdyZWF0IGZpc2ggdG8gc3dhbGxvdyB1cCBKb25haC4gQW5kIEpvbmFoIHdhcyBpbiB0aGUgYmVsbHkgb2YgdGhlIGZpc2ggdGhyZWUgZGF5cyBhbmQgdGhyZWUgbmlnaHRzLgpUaGVuIEpvbmFoIHByYXllZCB1bnRvIHRoZSBMT1JEIGhpcyBHb2Qgb3V0IG9mIHRoZSBmaXNoJ3MgYmVsbHksCkFuZCBzYWlkLCBJIGNyaWVkIGJ5IHJlYXNvbiBvZiBtaW5lIGFmZmxpY3Rpb24gdW50byB0aGUgTE9SRCwgYW5kIGhlIGhlYXJkIG1lOyBvdXQgb2YgdGhlIGJlbGx5IG9mIGhlbGwgY3JpZWQgSSwgYW5kIHRob3UgaGVhcmRlc3QgbXkgdm9pY2UuCkZvciB0aG91IGhhZHN0IGNhc3QgbWUgaW50byB0aGUgZGVlcCwgaW4gdGhlIG1pZHN0IG9mIHRoZSBzZWFzOyBhbmQgdGhlIGZsb29kcyBjb21wYXNzZWQgbWUgYWJvdXQ6IGFsbCB0aHkgYmlsbG93cyBhbmQgdGh5IHdhdmVzIHBhc3NlZCBvdmVyIG1lLgpUaGVuIEkgc2FpZCwgSSBhbSBjYXN0IG91dCBvZiB0aHkgc2lnaHQ7IHlldCBJIHdpbGwgbG9vayBhZ2FpbiB0b3dhcmQgdGh5IGhvbHkgdGVtcGxlLgpUaGUgd2F0ZXJzIGNvbXBhc3NlZCBtZSBhYm91dCwgZXZlbiB0byB0aGUgc291bDogdGhlIGRlcHRoIGNsb3NlZCBtZSByb3VuZCBhYm91dCwgdGhlIHdlZWRzIHdlcmUgd3JhcHBlZCBhYm91dCBteSBoZWFkLgpJIHdlbnQgZG93biB0byB0aGUgYm90dG9tcyBvZiB0aGUgbW91bnRhaW5zOyB0aGUgZWFydGggd2l0aCBoZXIgYmFycyB3YXMgYWJvdXQgbWUgZm9yIGV2ZXI6IHlldCBoYXN0IHRob3UgYnJvdWdodCB1cCBteSBsaWZlIGZyb20gY29ycnVwdGlvbiwgTyBMT1JEIG15IEdvZC4KV2hlbiBteSBzb3VsIGZhaW50ZWQgd2l0aGluIG1lIEkgcmVtZW1iZXJlZCB0aGUgTE9SRDogYW5kIG15IHByYXllciBjYW1lIGluIHVudG8gdGhlZSwgaW50byB0aGluZSBob2x5IHRlbXBsZS4KVGhleSB0aGF0IG9ic2VydmUgbHlpbmcgdmFuaXRpZXMgZm9yc2FrZSB0aGVpciBvd24gbWVyY3kuCkJ1dCBJIHdpbGwgc2FjcmlmaWNlIHVudG8gdGhlZSB3aXRoIHRoZSB2b2ljZSBvZiB0aGFua3NnaXZpbmc7IEkgd2lsbCBwYXkgdGhhdCB0aGF0IEkgaGF2ZSB2b3dlZC4gU2FsdmF0aW9uIGlzIG9mIHRoZSBMT1JELgpBbmQgdGhlIExPUkQgc3Bha2UgdW50byB0aGUgZmlzaCwgYW5kIGl0IHZvbWl0ZWQgb3V0IEpvbmFoIHVwb24gdGhlIGRyeSBsYW5kLgpBbmQgdGhlIHdvcmQgb2YgdGhlIExPUkQgY2FtZSB1bnRvIEpvbmFoIHRoZSBzZWNvbmQgdGltZSwgc2F5aW5nLApBcmlzZSwgZ28gdW50byBOaW5ldmVoLCB0aGF0IGdyZWF0IGNpdHksIGFuZCBwcmVhY2ggdW50byBpdCB0aGUgcHJlYWNoaW5nIHRoYXQgSSBiaWQgdGhlZS4KU28gSm9uYWggYXJvc2UsIGFuZCB3ZW50IHVudG8gTmluZXZlaCwgYWNjb3JkaW5nIHRvIHRoZSB3b3JkIG9mIHRoZSBMT1JELiBOb3cgTmluZXZlaCB3YXMgYW4gZXhjZWVkaW5nIGdyZWF0IGNpdHkgb2YgdGhyZWUgZGF5cycgam91cm5leS4KQW5kIEpvbmFoIGJlZ2FuIHRvIGVudGVyIGludG8gdGhlIGNpdHkgYSBkYXkncyBqb3VybmV5LCBhbmQgaGUgY3JpZWQsIGFuZCBzYWlkLCBZZXQgZm9ydHkgZGF5cywgYW5kIE5pbmV2ZWggc2hhbGwgYmUgb3ZlcnRocm93bi4KU28gdGhlIHBlb3BsZSBvZiBOaW5ldmVoIGJlbGlldmVkIEdvZCwgYW5kIHByb2NsYWltZWQgYSBmYXN0LCBhbmQgcHV0IG9uIHNhY2tjbG90aCwgZnJvbSB0aGUgZ3JlYXRlc3Qgb2YgdGhlbSBldmVuIHRvIHRoZSBsZWFzdCBvZiB0aGVtLgpGb3Igd29yZCBjYW1lIHVudG8gdGhlIGtpbmcgb2YgTmluZXZlaCwgYW5kIGhlIGFyb3NlIGZyb20gaGlzIHRocm9uZSwgYW5kIGhlIGxhaWQgaGlzIHJvYmUgZnJvbSBoaW0sIGFuZCBjb3ZlcmVkIGhpbSB3aXRoIHNhY2tjbG90aCwgYW5kIHNhdCBpbiBhc2hlcy4KQW5kIGhlIGNhdXNlZCBpdCB0byBiZSBwcm9jbGFpbWVkIGFuZCBwdWJsaXNoZWQgdGhyb3VnaCBOaW5ldmVoIGJ5IHRoZSBkZWNyZWUgb2YgdGhlIGtpbmcgYW5kIGhpcyBub2JsZXMsIHNheWluZywgTGV0IG5laXRoZXIgbWFuIG5vciBiZWFzdCwgaGVyZCBub3IgZmxvY2ssIHRhc3RlIGFueSB0aGluZzogbGV0IHRoZW0gbm90IGZlZWQsIG5vciBkcmluayB3YXRlcjoKQnV0IGxldCBtYW4gYW5kIGJlYXN0IGJlIGNvdmVyZWQgd2l0aCBzYWNrY2xvdGgsIGFuZCBjcnkgbWlnaHRpbHkgdW50byBHb2Q6IHllYSwgbGV0IHRoZW0gdHVybiBldmVyeSBvbmUgZnJvbSBoaXMgZXZpbCB3YXksIGFuZCBmcm9tIHRoZSB2aW9sZW5jZSB0aGF0IGlzIGluIHRoZWlyIGhhbmRzLgpXaG8gY2FuIHRlbGwgaWYgR29kIHdpbGwgdHVybiBhbmQgcmVwZW50LCBhbmQgdHVybiBhd2F5IGZyb20gaGlzIGZpZXJjZSBhbmdlciwgdGhhdCB3ZSBwZXJpc2ggbm90PwpBbmQgR29kIHNhdyB0aGVpciB3b3JrcywgdGhhdCB0aGV5IHR1cm5lZCBmcm9tIHRoZWlyIGV2aWwgd2F5OyBhbmQgR29kIHJlcGVudGVkIG9mIHRoZSBldmlsLCB0aGF0IGhlIGhhZCBzYWlkIHRoYXQgaGUgd291bGQgZG8gdW50byB0aGVtOyBhbmQgaGUgZGlkIGl0IG5vdC4KQnV0IGl0IGRpc3BsZWFzZWQgSm9uYWggZXhjZWVkaW5nbHksIGFuZCBoZSB3YXMgdmVyeSBhbmdyeS4KQW5kIGhlIHByYXllZCB1bnRvIHRoZSBMT1JELCBhbmQgc2FpZCwgSSBwcmF5IHRoZWUsIE8gTE9SRCwgd2FzIG5vdCB0aGlzIG15IHNheWluZywgd2hlbiBJIHdhcyB5ZXQgaW4gbXkgY291bnRyeT8gVGhlcmVmb3JlIEkgZmxlZCBiZWZvcmUgdW50byBUYXJzaGlzaDogZm9yIEkga25ldyB0aGF0IHRob3UgYXJ0IGEgZ3JhY2lvdXMgR29kLCBhbmQgbWVyY2lmdWwsIHNsb3cgdG8gYW5nZXIsIGFuZCBvZiBncmVhdCBraW5kbmVzcywgYW5kIHJlcGVudGVzdCB0aGVlIG9mIHRoZSBldmlsLgpUaGVyZWZvcmUgbm93LCBPIExPUkQsIHRha2UsIEkgYmVzZWVjaCB0aGVlLCBteSBsaWZlIGZyb20gbWU7IGZvciBpdCBpcyBiZXR0ZXIgZm9yIG1lIHRvIGRpZSB0aGFuIHRvIGxpdmUuClRoZW4gc2FpZCB0aGUgTE9SRCwgRG9lc3QgdGhvdSB3ZWxsIHRvIGJlIGFuZ3J5PwpTbyBKb25haCB3ZW50IG91dCBvZiB0aGUgY2l0eSwgYW5kIHNhdCBvbiB0aGUgZWFzdCBzaWRlIG9mIHRoZSBjaXR5LCBhbmQgdGhlcmUgbWFkZSBoaW0gYSBib290aCwgYW5kIHNhdCB1bmRlciBpdCBpbiB0aGUgc2hhZG93LCB0aWxsIGhlIG1pZ2h0IHNlZSB3aGF0IHdvdWxkIGJlY29tZSBvZiB0aGUgY2l0eS4KQW5kIHRoZSBMT1JEIEdvZCBwcmVwYXJlZCBhIGdvdXJkLCBhbmQgbWFkZSBpdCB0byBjb21lIHVwIG92ZXIgSm9uYWgsIHRoYXQgaXQgbWlnaHQgYmUgYSBzaGFkb3cgb3ZlciBoaXMgaGVhZCwgdG8gZGVsaXZlciBoaW0gZnJvbSBoaXMgZ3JpZWYuIFNvIEpvbmFoIHdhcyBleGNlZWRpbmcgZ2xhZCBvZiB0aGUgZ291cmQuCkJ1dCBHb2QgcHJlcGFyZWQgYSB3b3JtIHdoZW4gdGhlIG1vcm5pbmcgcm9zZSB0aGUgbmV4dCBkYXksIGFuZCBpdCBzbW90ZSB0aGUgZ291cmQgdGhhdCBpdCB3aXRoZXJlZC4KQW5kIGl0IGNhbWUgdG8gcGFzcywgd2hlbiB0aGUgc3VuIGRpZCBhcmlzZSwgdGhhdCBHb2QgcHJlcGFyZWQgYSB2ZWhlbWVudCBlYXN0IHdpbmQ7IGFuZCB0aGUgc3VuIGJlYXQgdXBvbiB0aGUgaGVhZCBvZiBKb25haCwgdGhhdCBoZSBmYWludGVkLCBhbmQgd2lzaGVkIGluIGhpbXNlbGYgdG8gZGllLCBhbmQgc2FpZCwgSXQgaXMgYmV0dGVyIGZvciBtZSB0byBkaWUgdGhhbiB0byBsaXZlLgpBbmQgR29kIHNhaWQgdG8gSm9uYWgsIERvZXN0IHRob3Ugd2VsbCB0byBiZSBhbmdyeSBmb3IgdGhlIGdvdXJkPyBBbmQgaGUgc2FpZCwgSSBkbyB3ZWxsIHRvIGJlIGFuZ3J5LCBldmVuIHVudG8gZGVhdGguClRoZW4gc2FpZCB0aGUgTE9SRCwgVGhvdSBoYXN0IGhhZCBwaXR5IG9uIHRoZSBnb3VyZCwgZm9yIHRoZSB3aGljaCB0aG91IGhhc3Qgbm90IGxhYm91cmVkLCBuZWl0aGVyIG1hZGVzdCBpdCBncm93OyB3aGljaCBjYW1lIHVwIGluIGEgbmlnaHQsIGFuZCBwZXJpc2hlZCBpbiBhIG5pZ2h0OgpBbmQgc2hvdWxkIG5vdCBJIHNwYXJlIE5pbmV2ZWgsIHRoYXQgZ3JlYXQgY2l0eSwgd2hlcmVpbiBhcmUgbW9yZSB0aGVuIHNpeHNjb3JlIHRob3VzYW5kIHBlcnNvbnMgdGhhdCBjYW5ub3QgZGlzY2VybiBiZXR3ZWVuIHRoZWlyIHJpZ2h0IGhhbmQgYW5kIHRoZWlyIGxlZnQgaGFuZDsgYW5kIGFsc28gbXVjaCBjYXR0bGU/ClRoZSB3b3JkIG9mIHRoZSBMT1JEIHRoYXQgY2FtZSB0byBNaWNhaCB0aGUgTW9yYXN0aGl0ZSBpbiB0aGUgZGF5cyBvZiBKb3RoYW0sIEFoYXosIGFuZCBIZXpla2lhaCwga2luZ3Mgb2YgSnVkYWgsIHdoaWNoIGhlIHNhdyBjb25jZXJuaW5nIFNhbWFyaWEgYW5kIEplcnVzYWxlbS4KSGVhciwgYWxsIHllIHBlb3BsZTsgaGVhcmtlbiwgTyBlYXJ0aCwgYW5kIGFsbCB0aGF0IHRoZXJlaW4gaXM6IGFuZCBsZXQgdGhlIExvcmQgR09EIGJlIHdpdG5lc3MgYWdhaW5zdCB5b3UsIHRoZSBMT1JEIGZyb20gaGlzIGhvbHkgdGVtcGxlLgpGb3IsIGJlaG9sZCwgdGhlIExPUkQgY29tZXRoIGZvcnRoIG91dCBvZiBoaXMgcGxhY2UsIGFuZCB3aWxsIGNvbWUgZG93biwgYW5kIHRyZWFkIHVwb24gdGhlIGhpZ2ggcGxhY2VzIG9mIHRoZSBlYXJ0aC4KQW5kIHRoZSBtb3VudGFpbnMgc2hhbGwgYmUgbW9sdGVuIHVuZGVyIGhpbSwgYW5kIHRoZSB2YWxsZXlzIHNoYWxsIGJlIGNsZWZ0LCBhcyB3YXggYmVmb3JlIHRoZSBmaXJlLCBhbmQgYXMgdGhlIHdhdGVycyB0aGF0IGFyZSBwb3VyZWQgZG93biBhIHN0ZWVwIHBsYWNlLgpGb3IgdGhlIHRyYW5zZ3Jlc3Npb24gb2YgSmFjb2IgaXMgYWxsIHRoaXMsIGFuZCBmb3IgdGhlIHNpbnMgb2YgdGhlIGhvdXNlIG9mIElzcmFlbC4gV2hhdCBpcyB0aGUgdHJhbnNncmVzc2lvbiBvZiBKYWNvYj8gaXMgaXQgbm90IFNhbWFyaWE/IGFuZCB3aGF0IGFyZSB0aGUgaGlnaCBwbGFjZXMgb2YgSnVkYWg/IGFyZSB0aGV5IG5vdCBKZXJ1c2FsZW0/ClRoZXJlZm9yZSBJIHdpbGwgbWFrZSBTYW1hcmlhIGFzIGFuIGhlYXAgb2YgdGhlIGZpZWxkLCBhbmQgYXMgcGxhbnRpbmdzIG9mIGEgdmluZXlhcmQ6IGFuZCBJIHdpbGwgcG91ciBkb3duIHRoZSBzdG9uZXMgdGhlcmVvZiBpbnRvIHRoZSB2YWxsZXksIGFuZCBJIHdpbGwgZGlzY292ZXIgdGhlIGZvdW5kYXRpb25zIHRoZXJlb2YuCkFuZCBhbGwgdGhlIGdyYXZlbiBpbWFnZXMgdGhlcmVvZiBzaGFsbCBiZSBiZWF0ZW4gdG8gcGllY2VzLCBhbmQgYWxsIHRoZSBoaXJlcyB0aGVyZW9mIHNoYWxsIGJlIGJ1cm5lZCB3aXRoIHRoZSBmaXJlLCBhbmQgYWxsIHRoZSBpZG9scyB0aGVyZW9mIHdpbGwgSSBsYXkgZGVzb2xhdGU6IGZvciBzaGUgZ2F0aGVyZWQgaXQgb2YgdGhlIGhpcmUgb2YgYW4gaGFybG90LCBhbmQgdGhleSBzaGFsbCByZXR1cm4gdG8gdGhlIGhpcmUgb2YgYW4gaGFybG90LgpUaGVyZWZvcmUgSSB3aWxsIHdhaWwgYW5kIGhvd2wsIEkgd2lsbCBnbyBzdHJpcHBlZCBhbmQgbmFrZWQ6IEkgd2lsbCBtYWtlIGEgd2FpbGluZyBsaWtlIHRoZSBkcmFnb25zLCBhbmQgbW91cm5pbmcgYXMgdGhlIG93bHMuCkZvciBoZXIgd291bmQgaXMgaW5jdXJhYmxlOyBmb3IgaXQgaXMgY29tZSB1bnRvIEp1ZGFoOyBoZSBpcyBjb21lIHVudG8gdGhlIGdhdGUgb2YgbXkgcGVvcGxlLCBldmVuIHRvIEplcnVzYWxlbS4KRGVjbGFyZSB5ZSBpdCBub3QgYXQgR2F0aCwgd2VlcCB5ZSBub3QgYXQgYWxsOiBpbiB0aGUgaG91c2Ugb2YgQXBocmFoIHJvbGwgdGh5c2VsZiBpbiB0aGUgZHVzdC4KUGFzcyB5ZSBhd2F5LCB0aG91IGluaGFiaXRhbnQgb2YgU2FwaGlyLCBoYXZpbmcgdGh5IHNoYW1lIG5ha2VkOiB0aGUgaW5oYWJpdGFudCBvZiBaYWFuYW4gY2FtZSBub3QgZm9ydGggaW4gdGhlIG1vdXJuaW5nIG9mIEJldGhlemVsOyBoZSBzaGFsbCByZWNlaXZlIG9mIHlvdSBoaXMgc3RhbmRpbmcuCkZvciB0aGUgaW5oYWJpdGFudCBvZiBNYXJvdGggd2FpdGVkIGNhcmVmdWxseSBmb3IgZ29vZDogYnV0IGV2aWwgY2FtZSBkb3duIGZyb20gdGhlIExPUkQgdW50byB0aGUgZ2F0ZSBvZiBKZXJ1c2FsZW0uCk8gdGhvdSBpbmhhYml0YW50IG9mIExhY2hpc2gsIGJpbmQgdGhlIGNoYXJpb3QgdG8gdGhlIHN3aWZ0IGJlYXN0OiBzaGUgaXMgdGhlIGJlZ2lubmluZyBvZiB0aGUgc2luIHRvIHRoZSBkYXVnaHRlciBvZiBaaW9uOiBmb3IgdGhlIHRyYW5zZ3Jlc3Npb25zIG9mIElzcmFlbCB3ZXJlIGZvdW5kIGluIHRoZWUuClRoZXJlZm9yZSBzaGFsdCB0aG91IGdpdmUgcHJlc2VudHMgdG8gTW9yZXNoZXRoZ2F0aDogdGhlIGhvdXNlcyBvZiBBY2h6aWIgc2hhbGwgYmUgYSBsaWUgdG8gdGhlIGtpbmdzIG9mIElzcmFlbC4KWWV0IHdpbGwgSSBicmluZyBhbiBoZWlyIHVudG8gdGhlZSwgTyBpbmhhYml0YW50IG9mIE1hcmVzaGFoOiBoZSBzaGFsbCBjb21lIHVudG8gQWR1bGxhbSB0aGUgZ2xvcnkgb2YgSXNyYWVsLgpNYWtlIHRoZWUgYmFsZCwgYW5kIHBvbGwgdGhlZSBmb3IgdGh5IGRlbGljYXRlIGNoaWxkcmVuOyBlbmxhcmdlIHRoeSBiYWxkbmVzcyBhcyB0aGUgZWFnbGU7IGZvciB0aGV5IGFyZSBnb25lIGludG8gY2FwdGl2aXR5IGZyb20gdGhlZS4KV29lIHRvIHRoZW0gdGhhdCBkZXZpc2UgaW5pcXVpdHksIGFuZCB3b3JrIGV2aWwgdXBvbiB0aGVpciBiZWRzISB3aGVuIHRoZSBtb3JuaW5nIGlzIGxpZ2h0LCB0aGV5IHByYWN0aXNlIGl0LCBiZWNhdXNlIGl0IGlzIGluIHRoZSBwb3dlciBvZiB0aGVpciBoYW5kLgpBbmQgdGhleSBjb3ZldCBmaWVsZHMsIGFuZCB0YWtlIHRoZW0gYnkgdmlvbGVuY2U7IGFuZCBob3VzZXMsIGFuZCB0YWtlIHRoZW0gYXdheTogc28gdGhleSBvcHByZXNzIGEgbWFuIGFuZCBoaXMgaG91c2UsIGV2ZW4gYSBtYW4gYW5kIGhpcyBoZXJpdGFnZS4KVGhlcmVmb3JlIHRodXMgc2FpdGggdGhlIExPUkQ7IEJlaG9sZCwgYWdhaW5zdCB0aGlzIGZhbWlseSBkbyBJIGRldmlzZSBhbiBldmlsLCBmcm9tIHdoaWNoIHllIHNoYWxsIG5vdCByZW1vdmUgeW91ciBuZWNrczsgbmVpdGhlciBzaGFsbCB5ZSBnbyBoYXVnaHRpbHk6IGZvciB0aGlzIHRpbWUgaXMgZXZpbC4KSW4gdGhhdCBkYXkgc2hhbGwgb25lIHRha2UgdXAgYSBwYXJhYmxlIGFnYWluc3QgeW91LCBhbmQgbGFtZW50IHdpdGggYSBkb2xlZnVsIGxhbWVudGF0aW9uLCBhbmQgc2F5LCBXZSBiZSB1dHRlcmx5IHNwb2lsZWQ6IGhlIGhhdGggY2hhbmdlZCB0aGUgcG9ydGlvbiBvZiBteSBwZW9wbGU6IGhvdyBoYXRoIGhlIHJlbW92ZWQgaXQgZnJvbSBtZSEgdHVybmluZyBhd2F5IGhlIGhhdGggZGl2aWRlZCBvdXIgZmllbGRzLgpUaGVyZWZvcmUgdGhvdSBzaGFsdCBoYXZlIG5vbmUgdGhhdCBzaGFsbCBjYXN0IGEgY29yZCBieSBsb3QgaW4gdGhlIGNvbmdyZWdhdGlvbiBvZiB0aGUgTE9SRC4KUHJvcGhlc3kgeWUgbm90LCBzYXkgdGhleSB0byB0aGVtIHRoYXQgcHJvcGhlc3k6IHRoZXkgc2hhbGwgbm90IHByb3BoZXN5IHRvIHRoZW0sIHRoYXQgdGhleSBzaGFsbCBub3QgdGFrZSBzaGFtZS4KTyB0aG91IHRoYXQgYXJ0IG5hbWVkIHRoZSBob3VzZSBvZiBKYWNvYiwgaXMgdGhlIHNwaXJpdCBvZiB0aGUgTE9SRCBzdHJhaXRlbmVkPyBhcmUgdGhlc2UgaGlzIGRvaW5ncz8gZG8gbm90IG15IHdvcmRzIGRvIGdvb2QgdG8gaGltIHRoYXQgd2Fsa2V0aCB1cHJpZ2h0bHk/CkV2ZW4gb2YgbGF0ZSBteSBwZW9wbGUgaXMgcmlzZW4gdXAgYXMgYW4gZW5lbXk6IHllIHB1bGwgb2ZmIHRoZSByb2JlIHdpdGggdGhlIGdhcm1lbnQgZnJvbSB0aGVtIHRoYXQgcGFzcyBieSBzZWN1cmVseSBhcyBtZW4gYXZlcnNlIGZyb20gd2FyLgpUaGUgd29tZW4gb2YgbXkgcGVvcGxlIGhhdmUgeWUgY2FzdCBvdXQgZnJvbSB0aGVpciBwbGVhc2FudCBob3VzZXM7IGZyb20gdGhlaXIgY2hpbGRyZW4gaGF2ZSB5ZSB0YWtlbiBhd2F5IG15IGdsb3J5IGZvciBldmVyLgpBcmlzZSB5ZSwgYW5kIGRlcGFydDsgZm9yIHRoaXMgaXMgbm90IHlvdXIgcmVzdDogYmVjYXVzZSBpdCBpcyBwb2xsdXRlZCwgaXQgc2hhbGwgZGVzdHJveSB5b3UsIGV2ZW4gd2l0aCBhIHNvcmUgZGVzdHJ1Y3Rpb24uCklmIGEgbWFuIHdhbGtpbmcgaW4gdGhlIHNwaXJpdCBhbmQgZmFsc2Vob29kIGRvIGxpZSwgc2F5aW5nLCBJIHdpbGwgcHJvcGhlc3kgdW50byB0aGVlIG9mIHdpbmUgYW5kIG9mIHN0cm9uZyBkcmluazsgaGUgc2hhbGwgZXZlbiBiZSB0aGUgcHJvcGhldCBvZiB0aGlzIHBlb3BsZS4KSSB3aWxsIHN1cmVseSBhc3NlbWJsZSwgTyBKYWNvYiwgYWxsIG9mIHRoZWU7IEkgd2lsbCBzdXJlbHkgZ2F0aGVyIHRoZSByZW1uYW50IG9mIElzcmFlbDsgSSB3aWxsIHB1dCB0aGVtIHRvZ2V0aGVyIGFzIHRoZSBzaGVlcCBvZiBCb3pyYWgsIGFzIHRoZSBmbG9jayBpbiB0aGUgbWlkc3Qgb2YgdGhlaXIgZm9sZDogdGhleSBzaGFsbCBtYWtlIGdyZWF0IG5vaXNlIGJ5IHJlYXNvbiBvZiB0aGUgbXVsdGl0dWRlIG9mIG1lbi4KVGhlIGJyZWFrZXIgaXMgY29tZSB1cCBiZWZvcmUgdGhlbTogdGhleSBoYXZlIGJyb2tlbiB1cCwgYW5kIGhhdmUgcGFzc2VkIHRocm91Z2ggdGhlIGdhdGUsIGFuZCBhcmUgZ29uZSBvdXQgYnkgaXQ6IGFuZCB0aGVpciBraW5nIHNoYWxsIHBhc3MgYmVmb3JlIHRoZW0sIGFuZCB0aGUgTE9SRCBvbiB0aGUgaGVhZCBvZiB0aGVtLgpBbmQgSSBzYWlkLCBIZWFyLCBJIHByYXkgeW91LCBPIGhlYWRzIG9mIEphY29iLCBhbmQgeWUgcHJpbmNlcyBvZiB0aGUgaG91c2Ugb2YgSXNyYWVsOyBJcyBpdCBub3QgZm9yIHlvdSB0byBrbm93IGp1ZGdtZW50PwpXaG8gaGF0ZSB0aGUgZ29vZCwgYW5kIGxvdmUgdGhlIGV2aWw7IHdobyBwbHVjayBvZmYgdGhlaXIgc2tpbiBmcm9tIG9mZiB0aGVtLCBhbmQgdGhlaXIgZmxlc2ggZnJvbSBvZmYgdGhlaXIgYm9uZXM7CldobyBhbHNvIGVhdCB0aGUgZmxlc2ggb2YgbXkgcGVvcGxlLCBhbmQgZmxheSB0aGVpciBza2luIGZyb20gb2ZmIHRoZW07IGFuZCB0aGV5IGJyZWFrIHRoZWlyIGJvbmVzLCBhbmQgY2hvcCB0aGVtIGluIHBpZWNlcywgYXMgZm9yIHRoZSBwb3QsIGFuZCBhcyBmbGVzaCB3aXRoaW4gdGhlIGNhbGRyb24uClRoZW4gc2hhbGwgdGhleSBjcnkgdW50byB0aGUgTE9SRCwgYnV0IGhlIHdpbGwgbm90IGhlYXIgdGhlbTogaGUgd2lsbCBldmVuIGhpZGUgaGlzIGZhY2UgZnJvbSB0aGVtIGF0IHRoYXQgdGltZSwgYXMgdGhleSBoYXZlIGJlaGF2ZWQgdGhlbXNlbHZlcyBpbGwgaW4gdGhlaXIgZG9pbmdzLgpUaHVzIHNhaXRoIHRoZSBMT1JEIGNvbmNlcm5pbmcgdGhlIHByb3BoZXRzIHRoYXQgbWFrZSBteSBwZW9wbGUgZXJyLCB0aGF0IGJpdGUgd2l0aCB0aGVpciB0ZWV0aCwgYW5kIGNyeSwgUGVhY2U7IGFuZCBoZSB0aGF0IHB1dHRldGggbm90IGludG8gdGhlaXIgbW91dGhzLCB0aGV5IGV2ZW4gcHJlcGFyZSB3YXIgYWdhaW5zdCBoaW0uClRoZXJlZm9yZSBuaWdodCBzaGFsbCBiZSB1bnRvIHlvdSwgdGhhdCB5ZSBzaGFsbCBub3QgaGF2ZSBhIHZpc2lvbjsgYW5kIGl0IHNoYWxsIGJlIGRhcmsgdW50byB5b3UsIHRoYXQgeWUgc2hhbGwgbm90IGRpdmluZTsgYW5kIHRoZSBzdW4gc2hhbGwgZ28gZG93biBvdmVyIHRoZSBwcm9waGV0cywgYW5kIHRoZSBkYXkgc2hhbGwgYmUgZGFyayBvdmVyIHRoZW0uClRoZW4gc2hhbGwgdGhlIHNlZXJzIGJlIGFzaGFtZWQsIGFuZCB0aGUgZGl2aW5lcnMgY29uZm91bmRlZDogeWVhLCB0aGV5IHNoYWxsIGFsbCBjb3ZlciB0aGVpciBsaXBzOyBmb3IgdGhlcmUgaXMgbm8gYW5zd2VyIG9mIEdvZC4KQnV0IHRydWx5IEkgYW0gZnVsbCBvZiBwb3dlciBieSB0aGUgc3Bpcml0IG9mIHRoZSBMT1JELCBhbmQgb2YganVkZ21lbnQsIGFuZCBvZiBtaWdodCwgdG8gZGVjbGFyZSB1bnRvIEphY29iIGhpcyB0cmFuc2dyZXNzaW9uLCBhbmQgdG8gSXNyYWVsIGhpcyBzaW4uCkhlYXIgdGhpcywgSSBwcmF5IHlvdSwgeWUgaGVhZHMgb2YgdGhlIGhvdXNlIG9mIEphY29iLCBhbmQgcHJpbmNlcyBvZiB0aGUgaG91c2Ugb2YgSXNyYWVsLCB0aGF0IGFiaG9yIGp1ZGdtZW50LCBhbmQgcGVydmVydCBhbGwgZXF1aXR5LgpUaGV5IGJ1aWxkIHVwIFppb24gd2l0aCBibG9vZCwgYW5kIEplcnVzYWxlbSB3aXRoIGluaXF1aXR5LgpUaGUgaGVhZHMgdGhlcmVvZiBqdWRnZSBmb3IgcmV3YXJkLCBhbmQgdGhlIHByaWVzdHMgdGhlcmVvZiB0ZWFjaCBmb3IgaGlyZSwgYW5kIHRoZSBwcm9waGV0cyB0aGVyZW9mIGRpdmluZSBmb3IgbW9uZXk6IHlldCB3aWxsIHRoZXkgbGVhbiB1cG9uIHRoZSBMT1JELCBhbmQgc2F5LCBJcyBub3QgdGhlIExPUkQgYW1vbmcgdXM/IG5vbmUgZXZpbCBjYW4gY29tZSB1cG9uIHVzLgpUaGVyZWZvcmUgc2hhbGwgWmlvbiBmb3IgeW91ciBzYWtlIGJlIHBsb3dlZCBhcyBhIGZpZWxkLCBhbmQgSmVydXNhbGVtIHNoYWxsIGJlY29tZSBoZWFwcywgYW5kIHRoZSBtb3VudGFpbiBvZiB0aGUgaG91c2UgYXMgdGhlIGhpZ2ggcGxhY2VzIG9mIHRoZSBmb3Jlc3QuCkJ1dCBpbiB0aGUgbGFzdCBkYXlzIGl0IHNoYWxsIGNvbWUgdG8gcGFzcywgdGhhdCB0aGUgbW91bnRhaW4gb2YgdGhlIGhvdXNlIG9mIHRoZSBMT1JEIHNoYWxsIGJlIGVzdGFibGlzaGVkIGluIHRoZSB0b3Agb2YgdGhlIG1vdW50YWlucywgYW5kIGl0IHNoYWxsIGJlIGV4YWx0ZWQgYWJvdmUgdGhlIGhpbGxzOyBhbmQgcGVvcGxlIHNoYWxsIGZsb3cgdW50byBpdC4KQW5kIG1hbnkgbmF0aW9ucyBzaGFsbCBjb21lLCBhbmQgc2F5LCBDb21lLCBhbmQgbGV0IHVzIGdvIHVwIHRvIHRoZSBtb3VudGFpbiBvZiB0aGUgTE9SRCwgYW5kIHRvIHRoZSBob3VzZSBvZiB0aGUgR29kIG9mIEphY29iOyBhbmQgaGUgd2lsbCB0ZWFjaCB1cyBvZiBoaXMgd2F5cywgYW5kIHdlIHdpbGwgd2FsayBpbiBoaXMgcGF0aHM6IGZvciB0aGUgbGF3IHNoYWxsIGdvIGZvcnRoIG9mIFppb24sIGFuZCB0aGUgd29yZCBvZiB0aGUgTE9SRCBmcm9tIEplcnVzYWxlbS4KQW5kIGhlIHNoYWxsIGp1ZGdlIGFtb25nIG1hbnkgcGVvcGxlLCBhbmQgcmVidWtlIHN0cm9uZyBuYXRpb25zIGFmYXIgb2ZmOyBhbmQgdGhleSBzaGFsbCBiZWF0IHRoZWlyIHN3b3JkcyBpbnRvIHBsb3dzaGFyZXMsIGFuZCB0aGVpciBzcGVhcnMgaW50byBwcnVuaW5naG9va3M6IG5hdGlvbiBzaGFsbCBub3QgbGlmdCB1cCBhIHN3b3JkIGFnYWluc3QgbmF0aW9uLCBuZWl0aGVyIHNoYWxsIHRoZXkgbGVhcm4gd2FyIGFueSBtb3JlLgpCdXQgdGhleSBzaGFsbCBzaXQgZXZlcnkgbWFuIHVuZGVyIGhpcyB2aW5lIGFuZCB1bmRlciBoaXMgZmlnIHRyZWU7IGFuZCBub25lIHNoYWxsIG1ha2UgdGhlbSBhZnJhaWQ6IGZvciB0aGUgbW91dGggb2YgdGhlIExPUkQgb2YgaG9zdHMgaGF0aCBzcG9rZW4gaXQuCkZvciBhbGwgcGVvcGxlIHdpbGwgd2FsayBldmVyeSBvbmUgaW4gdGhlIG5hbWUgb2YgaGlzIGdvZCwgYW5kIHdlIHdpbGwgd2FsayBpbiB0aGUgbmFtZSBvZiB0aGUgTE9SRCBvdXIgR29kIGZvciBldmVyIGFuZCBldmVyLgpJbiB0aGF0IGRheSwgc2FpdGggdGhlIExPUkQsIHdpbGwgSSBhc3NlbWJsZSBoZXIgdGhhdCBoYWx0ZXRoLCBhbmQgSSB3aWxsIGdhdGhlciBoZXIgdGhhdCBpcyBkcml2ZW4gb3V0LCBhbmQgaGVyIHRoYXQgSSBoYXZlIGFmZmxpY3RlZDsKQW5kIEkgd2lsbCBtYWtlIGhlciB0aGF0IGhhbHRlZCBhIHJlbW5hbnQsIGFuZCBoZXIgdGhhdCB3YXMgY2FzdCBmYXIgb2ZmIGEgc3Ryb25nIG5hdGlvbjogYW5kIHRoZSBMT1JEIHNoYWxsIHJlaWduIG92ZXIgdGhlbSBpbiBtb3VudCBaaW9uIGZyb20gaGVuY2Vmb3J0aCwgZXZlbiBmb3IgZXZlci4KQW5kIHRob3UsIE8gdG93ZXIgb2YgdGhlIGZsb2NrLCB0aGUgc3Ryb25nIGhvbGQgb2YgdGhlIGRhdWdodGVyIG9mIFppb24sIHVudG8gdGhlZSBzaGFsbCBpdCBjb21lLCBldmVuIHRoZSBmaXJzdCBkb21pbmlvbjsgdGhlIGtpbmdkb20gc2hhbGwgY29tZSB0byB0aGUgZGF1Z2h0ZXIgb2YgSmVydXNhbGVtLgpOb3cgd2h5IGRvc3QgdGhvdSBjcnkgb3V0IGFsb3VkPyBpcyB0aGVyZSBubyBraW5nIGluIHRoZWU/IGlzIHRoeSBjb3Vuc2VsbG9yIHBlcmlzaGVkPyBmb3IgcGFuZ3MgaGF2ZSB0YWtlbiB0aGVlIGFzIGEgd29tYW4gaW4gdHJhdmFpbC4KQmUgaW4gcGFpbiwgYW5kIGxhYm91ciB0byBicmluZyBmb3J0aCwgTyBkYXVnaHRlciBvZiBaaW9uLCBsaWtlIGEgd29tYW4gaW4gdHJhdmFpbDogZm9yIG5vdyBzaGFsdCB0aG91IGdvIGZvcnRoIG91dCBvZiB0aGUgY2l0eSwgYW5kIHRob3Ugc2hhbHQgZHdlbGwgaW4gdGhlIGZpZWxkLCBhbmQgdGhvdSBzaGFsdCBnbyBldmVuIHRvIEJhYnlsb247IHRoZXJlIHNoYWx0IHRob3UgYmUgZGVsaXZlcmVkOyB0aGVyZSB0aGUgTE9SRCBzaGFsbCByZWRlZW0gdGhlZSBmcm9tIHRoZSBoYW5kIG9mIHRoaW5lIGVuZW1pZXMuCk5vdyBhbHNvIG1hbnkgbmF0aW9ucyBhcmUgZ2F0aGVyZWQgYWdhaW5zdCB0aGVlLCB0aGF0IHNheSwgTGV0IGhlciBiZSBkZWZpbGVkLCBhbmQgbGV0IG91ciBleWUgbG9vayB1cG9uIFppb24uCkJ1dCB0aGV5IGtub3cgbm90IHRoZSB0aG91Z2h0cyBvZiB0aGUgTE9SRCwgbmVpdGhlciB1bmRlcnN0YW5kIHRoZXkgaGlzIGNvdW5zZWw6IGZvciBoZSBzaGFsbCBnYXRoZXIgdGhlbSBhcyB0aGUgc2hlYXZlcyBpbnRvIHRoZSBmbG9vci4KQXJpc2UgYW5kIHRocmVzaCwgTyBkYXVnaHRlciBvZiBaaW9uOiBmb3IgSSB3aWxsIG1ha2UgdGhpbmUgaG9ybiBpcm9uLCBhbmQgSSB3aWxsIG1ha2UgdGh5IGhvb2ZzIGJyYXNzOiBhbmQgdGhvdSBzaGFsdCBiZWF0IGluIHBpZWNlcyBtYW55IHBlb3BsZTogYW5kIEkgd2lsbCBjb25zZWNyYXRlIHRoZWlyIGdhaW4gdW50byB0aGUgTE9SRCwgYW5kIHRoZWlyIHN1YnN0YW5jZSB1bnRvIHRoZSBMb3JkIG9mIHRoZSB3aG9sZSBlYXJ0aC4KTm93IGdhdGhlciB0aHlzZWxmIGluIHRyb29wcywgTyBkYXVnaHRlciBvZiB0cm9vcHM6IGhlIGhhdGggbGFpZCBzaWVnZSBhZ2FpbnN0IHVzOiB0aGV5IHNoYWxsIHNtaXRlIHRoZSBqdWRnZSBvZiBJc3JhZWwgd2l0aCBhIHJvZCB1cG9uIHRoZSBjaGVlay4KQnV0IHRob3UsIEJldGhsZWhlbSBFcGhyYXRhaCwgdGhvdWdoIHRob3UgYmUgbGl0dGxlIGFtb25nIHRoZSB0aG91c2FuZHMgb2YgSnVkYWgsIHlldCBvdXQgb2YgdGhlZSBzaGFsbCBoZSBjb21lIGZvcnRoIHVudG8gbWUgdGhhdCBpcyB0byBiZSBydWxlciBpbiBJc3JhZWw7IHdob3NlIGdvaW5ncyBmb3J0aCBoYXZlIGJlZW4gZnJvbSBvZiBvbGQsIGZyb20gZXZlcmxhc3RpbmcuClRoZXJlZm9yZSB3aWxsIGhlIGdpdmUgdGhlbSB1cCwgdW50aWwgdGhlIHRpbWUgdGhhdCBzaGUgd2hpY2ggdHJhdmFpbGV0aCBoYXRoIGJyb3VnaHQgZm9ydGg6IHRoZW4gdGhlIHJlbW5hbnQgb2YgaGlzIGJyZXRocmVuIHNoYWxsIHJldHVybiB1bnRvIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwuCkFuZCBoZSBzaGFsbCBzdGFuZCBhbmQgZmVlZCBpbiB0aGUgc3RyZW5ndGggb2YgdGhlIExPUkQsIGluIHRoZSBtYWplc3R5IG9mIHRoZSBuYW1lIG9mIHRoZSBMT1JEIGhpcyBHb2Q7IGFuZCB0aGV5IHNoYWxsIGFiaWRlOiBmb3Igbm93IHNoYWxsIGhlIGJlIGdyZWF0IHVudG8gdGhlIGVuZHMgb2YgdGhlIGVhcnRoLgpBbmQgdGhpcyBtYW4gc2hhbGwgYmUgdGhlIHBlYWNlLCB3aGVuIHRoZSBBc3N5cmlhbiBzaGFsbCBjb21lIGludG8gb3VyIGxhbmQ6IGFuZCB3aGVuIGhlIHNoYWxsIHRyZWFkIGluIG91ciBwYWxhY2VzLCB0aGVuIHNoYWxsIHdlIHJhaXNlIGFnYWluc3QgaGltIHNldmVuIHNoZXBoZXJkcywgYW5kIGVpZ2h0IHByaW5jaXBhbCBtZW4uCkFuZCB0aGV5IHNoYWxsIHdhc3RlIHRoZSBsYW5kIG9mIEFzc3lyaWEgd2l0aCB0aGUgc3dvcmQsIGFuZCB0aGUgbGFuZCBvZiBOaW1yb2QgaW4gdGhlIGVudHJhbmNlcyB0aGVyZW9mOiB0aHVzIHNoYWxsIGhlIGRlbGl2ZXIgdXMgZnJvbSB0aGUgQXNzeXJpYW4sIHdoZW4gaGUgY29tZXRoIGludG8gb3VyIGxhbmQsIGFuZCB3aGVuIGhlIHRyZWFkZXRoIHdpdGhpbiBvdXIgYm9yZGVycy4KQW5kIHRoZSByZW1uYW50IG9mIEphY29iIHNoYWxsIGJlIGluIHRoZSBtaWRzdCBvZiBtYW55IHBlb3BsZSBhcyBhIGRldyBmcm9tIHRoZSBMT1JELCBhcyB0aGUgc2hvd2VycyB1cG9uIHRoZSBncmFzcywgdGhhdCB0YXJyaWV0aCBub3QgZm9yIG1hbiwgbm9yIHdhaXRldGggZm9yIHRoZSBzb25zIG9mIG1lbi4KQW5kIHRoZSByZW1uYW50IG9mIEphY29iIHNoYWxsIGJlIGFtb25nIHRoZSBHZW50aWxlcyBpbiB0aGUgbWlkc3Qgb2YgbWFueSBwZW9wbGUgYXMgYSBsaW9uIGFtb25nIHRoZSBiZWFzdHMgb2YgdGhlIGZvcmVzdCwgYXMgYSB5b3VuZyBsaW9uIGFtb25nIHRoZSBmbG9ja3Mgb2Ygc2hlZXA6IHdobywgaWYgaGUgZ28gdGhyb3VnaCwgYm90aCB0cmVhZGV0aCBkb3duLCBhbmQgdGVhcmV0aCBpbiBwaWVjZXMsIGFuZCBub25lIGNhbiBkZWxpdmVyLgpUaGluZSBoYW5kIHNoYWxsIGJlIGxpZnRlZCB1cCB1cG9uIHRoaW5lIGFkdmVyc2FyaWVzLCBhbmQgYWxsIHRoaW5lIGVuZW1pZXMgc2hhbGwgYmUgY3V0IG9mZi4KQW5kIGl0IHNoYWxsIGNvbWUgdG8gcGFzcyBpbiB0aGF0IGRheSwgc2FpdGggdGhlIExPUkQsIHRoYXQgSSB3aWxsIGN1dCBvZmYgdGh5IGhvcnNlcyBvdXQgb2YgdGhlIG1pZHN0IG9mIHRoZWUsIGFuZCBJIHdpbGwgZGVzdHJveSB0aHkgY2hhcmlvdHM6CkFuZCBJIHdpbGwgY3V0IG9mZiB0aGUgY2l0aWVzIG9mIHRoeSBsYW5kLCBhbmQgdGhyb3cgZG93biBhbGwgdGh5IHN0cm9uZyBob2xkczoKQW5kIEkgd2lsbCBjdXQgb2ZmIHdpdGNoY3JhZnRzIG91dCBvZiB0aGluZSBoYW5kOyBhbmQgdGhvdSBzaGFsdCBoYXZlIG5vIG1vcmUgc29vdGhzYXllcnM6ClRoeSBncmF2ZW4gaW1hZ2VzIGFsc28gd2lsbCBJIGN1dCBvZmYsIGFuZCB0aHkgc3RhbmRpbmcgaW1hZ2VzIG91dCBvZiB0aGUgbWlkc3Qgb2YgdGhlZTsgYW5kIHRob3Ugc2hhbHQgbm8gbW9yZSB3b3JzaGlwIHRoZSB3b3JrIG9mIHRoaW5lIGhhbmRzLgpBbmQgSSB3aWxsIHBsdWNrIHVwIHRoeSBncm92ZXMgb3V0IG9mIHRoZSBtaWRzdCBvZiB0aGVlOiBzbyB3aWxsIEkgZGVzdHJveSB0aHkgY2l0aWVzLgpBbmQgSSB3aWxsIGV4ZWN1dGUgdmVuZ2VhbmNlIGluIGFuZ2VyIGFuZCBmdXJ5IHVwb24gdGhlIGhlYXRoZW4sIHN1Y2ggYXMgdGhleSBoYXZlIG5vdCBoZWFyZC4KSGVhciB5ZSBub3cgd2hhdCB0aGUgTE9SRCBzYWl0aDsgQXJpc2UsIGNvbnRlbmQgdGhvdSBiZWZvcmUgdGhlIG1vdW50YWlucywgYW5kIGxldCB0aGUgaGlsbHMgaGVhciB0aHkgdm9pY2UuCkhlYXIgeWUsIE8gbW91bnRhaW5zLCB0aGUgTE9SRCdzIGNvbnRyb3ZlcnN5LCBhbmQgeWUgc3Ryb25nIGZvdW5kYXRpb25zIG9mIHRoZSBlYXJ0aDogZm9yIHRoZSBMT1JEIGhhdGggYSBjb250cm92ZXJzeSB3aXRoIGhpcyBwZW9wbGUsIGFuZCBoZSB3aWxsIHBsZWFkIHdpdGggSXNyYWVsLgpPIG15IHBlb3BsZSwgd2hhdCBoYXZlIEkgZG9uZSB1bnRvIHRoZWU/IGFuZCB3aGVyZWluIGhhdmUgSSB3ZWFyaWVkIHRoZWU/IHRlc3RpZnkgYWdhaW5zdCBtZS4KRm9yIEkgYnJvdWdodCB0aGVlIHVwIG91dCBvZiB0aGUgbGFuZCBvZiBFZ3lwdCwgYW5kIHJlZGVlbWVkIHRoZWUgb3V0IG9mIHRoZSBob3VzZSBvZiBzZXJ2YW50czsgYW5kIEkgc2VudCBiZWZvcmUgdGhlZSBNb3NlcywgQWFyb24sIGFuZCBNaXJpYW0uCk8gbXkgcGVvcGxlLCByZW1lbWJlciBub3cgd2hhdCBCYWxhayBraW5nIG9mIE1vYWIgY29uc3VsdGVkLCBhbmQgd2hhdCBCYWxhYW0gdGhlIHNvbiBvZiBCZW9yIGFuc3dlcmVkIGhpbSBmcm9tIFNoaXR0aW0gdW50byBHaWxnYWw7IHRoYXQgeWUgbWF5IGtub3cgdGhlIHJpZ2h0ZW91c25lc3Mgb2YgdGhlIExPUkQuCldoZXJld2l0aCBzaGFsbCBJIGNvbWUgYmVmb3JlIHRoZSBMT1JELCBhbmQgYm93IG15c2VsZiBiZWZvcmUgdGhlIGhpZ2ggR29kPyBzaGFsbCBJIGNvbWUgYmVmb3JlIGhpbSB3aXRoIGJ1cm50IG9mZmVyaW5ncywgd2l0aCBjYWx2ZXMgb2YgYSB5ZWFyIG9sZD8KV2lsbCB0aGUgTE9SRCBiZSBwbGVhc2VkIHdpdGggdGhvdXNhbmRzIG9mIHJhbXMsIG9yIHdpdGggdGVuIHRob3VzYW5kcyBvZiByaXZlcnMgb2Ygb2lsPyBzaGFsbCBJIGdpdmUgbXkgZmlyc3Rib3JuIGZvciBteSB0cmFuc2dyZXNzaW9uLCB0aGUgZnJ1aXQgb2YgbXkgYm9keSBmb3IgdGhlIHNpbiBvZiBteSBzb3VsPwpIZSBoYXRoIHNoZXdlZCB0aGVlLCBPIG1hbiwgd2hhdCBpcyBnb29kOyBhbmQgd2hhdCBkb3RoIHRoZSBMT1JEIHJlcXVpcmUgb2YgdGhlZSwgYnV0IHRvIGRvIGp1c3RseSwgYW5kIHRvIGxvdmUgbWVyY3ksIGFuZCB0byB3YWxrIGh1bWJseSB3aXRoIHRoeSBHb2Q/ClRoZSBMT1JEJ3Mgdm9pY2UgY3JpZXRoIHVudG8gdGhlIGNpdHksIGFuZCB0aGUgbWFuIG9mIHdpc2RvbSBzaGFsbCBzZWUgdGh5IG5hbWU6IGhlYXIgeWUgdGhlIHJvZCwgYW5kIHdobyBoYXRoIGFwcG9pbnRlZCBpdC4KQXJlIHRoZXJlIHlldCB0aGUgdHJlYXN1cmVzIG9mIHdpY2tlZG5lc3MgaW4gdGhlIGhvdXNlIG9mIHRoZSB3aWNrZWQsIGFuZCB0aGUgc2NhbnQgbWVhc3VyZSB0aGF0IGlzIGFib21pbmFibGU/ClNoYWxsIEkgY291bnQgdGhlbSBwdXJlIHdpdGggdGhlIHdpY2tlZCBiYWxhbmNlcywgYW5kIHdpdGggdGhlIGJhZyBvZiBkZWNlaXRmdWwgd2VpZ2h0cz8KRm9yIHRoZSByaWNoIG1lbiB0aGVyZW9mIGFyZSBmdWxsIG9mIHZpb2xlbmNlLCBhbmQgdGhlIGluaGFiaXRhbnRzIHRoZXJlb2YgaGF2ZSBzcG9rZW4gbGllcywgYW5kIHRoZWlyIHRvbmd1ZSBpcyBkZWNlaXRmdWwgaW4gdGhlaXIgbW91dGguClRoZXJlZm9yZSBhbHNvIHdpbGwgSSBtYWtlIHRoZWUgc2ljayBpbiBzbWl0aW5nIHRoZWUsIGluIG1ha2luZyB0aGVlIGRlc29sYXRlIGJlY2F1c2Ugb2YgdGh5IHNpbnMuClRob3Ugc2hhbHQgZWF0LCBidXQgbm90IGJlIHNhdGlzZmllZDsgYW5kIHRoeSBjYXN0aW5nIGRvd24gc2hhbGwgYmUgaW4gdGhlIG1pZHN0IG9mIHRoZWU7IGFuZCB0aG91IHNoYWx0IHRha2UgaG9sZCwgYnV0IHNoYWx0IG5vdCBkZWxpdmVyOyBhbmQgdGhhdCB3aGljaCB0aG91IGRlbGl2ZXJlc3Qgd2lsbCBJIGdpdmUgdXAgdG8gdGhlIHN3b3JkLgpUaG91IHNoYWx0IHNvdywgYnV0IHRob3Ugc2hhbHQgbm90IHJlYXA7IHRob3Ugc2hhbHQgdHJlYWQgdGhlIG9saXZlcywgYnV0IHRob3Ugc2hhbHQgbm90IGFub2ludCB0aGVlIHdpdGggb2lsOyBhbmQgc3dlZXQgd2luZSwgYnV0IHNoYWx0IG5vdCBkcmluayB3aW5lLgpGb3IgdGhlIHN0YXR1dGVzIG9mIE9tcmkgYXJlIGtlcHQsIGFuZCBhbGwgdGhlIHdvcmtzIG9mIHRoZSBob3VzZSBvZiBBaGFiLCBhbmQgeWUgd2FsayBpbiB0aGVpciBjb3Vuc2VsczsgdGhhdCBJIHNob3VsZCBtYWtlIHRoZWUgYSBkZXNvbGF0aW9uLCBhbmQgdGhlIGluaGFiaXRhbnRzIHRoZXJlb2YgYW4gaGlzc2luZzogdGhlcmVmb3JlIHllIHNoYWxsIGJlYXIgdGhlIHJlcHJvYWNoIG9mIG15IHBlb3BsZS4KV29lIGlzIG1lISBmb3IgSSBhbSBhcyB3aGVuIHRoZXkgaGF2ZSBnYXRoZXJlZCB0aGUgc3VtbWVyIGZydWl0cywgYXMgdGhlIGdyYXBlZ2xlYW5pbmdzIG9mIHRoZSB2aW50YWdlOiB0aGVyZSBpcyBubyBjbHVzdGVyIHRvIGVhdDogbXkgc291bCBkZXNpcmVkIHRoZSBmaXJzdHJpcGUgZnJ1aXQuClRoZSBnb29kIG1hbiBpcyBwZXJpc2hlZCBvdXQgb2YgdGhlIGVhcnRoOiBhbmQgdGhlcmUgaXMgbm9uZSB1cHJpZ2h0IGFtb25nIG1lbjogdGhleSBhbGwgbGllIGluIHdhaXQgZm9yIGJsb29kOyB0aGV5IGh1bnQgZXZlcnkgbWFuIGhpcyBicm90aGVyIHdpdGggYSBuZXQuClRoYXQgdGhleSBtYXkgZG8gZXZpbCB3aXRoIGJvdGggaGFuZHMgZWFybmVzdGx5LCB0aGUgcHJpbmNlIGFza2V0aCwgYW5kIHRoZSBqdWRnZSBhc2tldGggZm9yIGEgcmV3YXJkOyBhbmQgdGhlIGdyZWF0IG1hbiwgaGUgdXR0ZXJldGggaGlzIG1pc2NoaWV2b3VzIGRlc2lyZTogc28gdGhleSB3cmFwIGl0IHVwLgpUaGUgYmVzdCBvZiB0aGVtIGlzIGFzIGEgYnJpZXI6IHRoZSBtb3N0IHVwcmlnaHQgaXMgc2hhcnBlciB0aGFuIGEgdGhvcm4gaGVkZ2U6IHRoZSBkYXkgb2YgdGh5IHdhdGNobWVuIGFuZCB0aHkgdmlzaXRhdGlvbiBjb21ldGg7IG5vdyBzaGFsbCBiZSB0aGVpciBwZXJwbGV4aXR5LgpUcnVzdCB5ZSBub3QgaW4gYSBmcmllbmQsIHB1dCB5ZSBub3QgY29uZmlkZW5jZSBpbiBhIGd1aWRlOiBrZWVwIHRoZSBkb29ycyBvZiB0aHkgbW91dGggZnJvbSBoZXIgdGhhdCBsaWV0aCBpbiB0aHkgYm9zb20uCkZvciB0aGUgc29uIGRpc2hvbm91cmV0aCB0aGUgZmF0aGVyLCB0aGUgZGF1Z2h0ZXIgcmlzZXRoIHVwIGFnYWluc3QgaGVyIG1vdGhlciwgdGhlIGRhdWdodGVyIGluIGxhdyBhZ2FpbnN0IGhlciBtb3RoZXIgaW4gbGF3OyBhIG1hbidzIGVuZW1pZXMgYXJlIHRoZSBtZW4gb2YgaGlzIG93biBob3VzZS4KVGhlcmVmb3JlIEkgd2lsbCBsb29rIHVudG8gdGhlIExPUkQ7IEkgd2lsbCB3YWl0IGZvciB0aGUgR29kIG9mIG15IHNhbHZhdGlvbjogbXkgR29kIHdpbGwgaGVhciBtZS4KUmVqb2ljZSBub3QgYWdhaW5zdCBtZSwgTyBtaW5lIGVuZW15OiB3aGVuIEkgZmFsbCwgSSBzaGFsbCBhcmlzZTsgd2hlbiBJIHNpdCBpbiBkYXJrbmVzcywgdGhlIExPUkQgc2hhbGwgYmUgYSBsaWdodCB1bnRvIG1lLgpJIHdpbGwgYmVhciB0aGUgaW5kaWduYXRpb24gb2YgdGhlIExPUkQsIGJlY2F1c2UgSSBoYXZlIHNpbm5lZCBhZ2FpbnN0IGhpbSwgdW50aWwgaGUgcGxlYWQgbXkgY2F1c2UsIGFuZCBleGVjdXRlIGp1ZGdtZW50IGZvciBtZTogaGUgd2lsbCBicmluZyBtZSBmb3J0aCB0byB0aGUgbGlnaHQsIGFuZCBJIHNoYWxsIGJlaG9sZCBoaXMgcmlnaHRlb3VzbmVzcy4KVGhlbiBzaGUgdGhhdCBpcyBtaW5lIGVuZW15IHNoYWxsIHNlZSBpdCwgYW5kIHNoYW1lIHNoYWxsIGNvdmVyIGhlciB3aGljaCBzYWlkIHVudG8gbWUsIFdoZXJlIGlzIHRoZSBMT1JEIHRoeSBHb2Q/IG1pbmUgZXllcyBzaGFsbCBiZWhvbGQgaGVyOiBub3cgc2hhbGwgc2hlIGJlIHRyb2RkZW4gZG93biBhcyB0aGUgbWlyZSBvZiB0aGUgc3RyZWV0cy4KSW4gdGhlIGRheSB0aGF0IHRoeSB3YWxscyBhcmUgdG8gYmUgYnVpbHQsIGluIHRoYXQgZGF5IHNoYWxsIHRoZSBkZWNyZWUgYmUgZmFyIHJlbW92ZWQuCkluIHRoYXQgZGF5IGFsc28gaGUgc2hhbGwgY29tZSBldmVuIHRvIHRoZWUgZnJvbSBBc3N5cmlhLCBhbmQgZnJvbSB0aGUgZm9ydGlmaWVkIGNpdGllcywgYW5kIGZyb20gdGhlIGZvcnRyZXNzIGV2ZW4gdG8gdGhlIHJpdmVyLCBhbmQgZnJvbSBzZWEgdG8gc2VhLCBhbmQgZnJvbSBtb3VudGFpbiB0byBtb3VudGFpbi4KTm90d2l0aHN0YW5kaW5nIHRoZSBsYW5kIHNoYWxsIGJlIGRlc29sYXRlIGJlY2F1c2Ugb2YgdGhlbSB0aGF0IGR3ZWxsIHRoZXJlaW4sIGZvciB0aGUgZnJ1aXQgb2YgdGhlaXIgZG9pbmdzLgpGZWVkIHRoeSBwZW9wbGUgd2l0aCB0aHkgcm9kLCB0aGUgZmxvY2sgb2YgdGhpbmUgaGVyaXRhZ2UsIHdoaWNoIGR3ZWxsIHNvbGl0YXJpbHkgaW4gdGhlIHdvb2QsIGluIHRoZSBtaWRzdCBvZiBDYXJtZWw6IGxldCB0aGVtIGZlZWQgaW4gQmFzaGFuIGFuZCBHaWxlYWQsIGFzIGluIHRoZSBkYXlzIG9mIG9sZC4KQWNjb3JkaW5nIHRvIHRoZSBkYXlzIG9mIHRoeSBjb21pbmcgb3V0IG9mIHRoZSBsYW5kIG9mIEVneXB0IHdpbGwgSSBzaGV3IHVudG8gaGltIG1hcnZlbGxvdXMgdGhpbmdzLgpUaGUgbmF0aW9ucyBzaGFsbCBzZWUgYW5kIGJlIGNvbmZvdW5kZWQgYXQgYWxsIHRoZWlyIG1pZ2h0OiB0aGV5IHNoYWxsIGxheSB0aGVpciBoYW5kIHVwb24gdGhlaXIgbW91dGgsIHRoZWlyIGVhcnMgc2hhbGwgYmUgZGVhZi4KVGhleSBzaGFsbCBsaWNrIHRoZSBkdXN0IGxpa2UgYSBzZXJwZW50LCB0aGV5IHNoYWxsIG1vdmUgb3V0IG9mIHRoZWlyIGhvbGVzIGxpa2Ugd29ybXMgb2YgdGhlIGVhcnRoOiB0aGV5IHNoYWxsIGJlIGFmcmFpZCBvZiB0aGUgTE9SRCBvdXIgR29kLCBhbmQgc2hhbGwgZmVhciBiZWNhdXNlIG9mIHRoZWUuCldobyBpcyBhIEdvZCBsaWtlIHVudG8gdGhlZSwgdGhhdCBwYXJkb25ldGggaW5pcXVpdHksIGFuZCBwYXNzZXRoIGJ5IHRoZSB0cmFuc2dyZXNzaW9uIG9mIHRoZSByZW1uYW50IG9mIGhpcyBoZXJpdGFnZT8gaGUgcmV0YWluZXRoIG5vdCBoaXMgYW5nZXIgZm9yIGV2ZXIsIGJlY2F1c2UgaGUgZGVsaWdodGV0aCBpbiBtZXJjeS4KSGUgd2lsbCB0dXJuIGFnYWluLCBoZSB3aWxsIGhhdmUgY29tcGFzc2lvbiB1cG9uIHVzOyBoZSB3aWxsIHN1YmR1ZSBvdXIgaW5pcXVpdGllczsgYW5kIHRob3Ugd2lsdCBjYXN0IGFsbCB0aGVpciBzaW5zIGludG8gdGhlIGRlcHRocyBvZiB0aGUgc2VhLgpUaG91IHdpbHQgcGVyZm9ybSB0aGUgdHJ1dGggdG8gSmFjb2IsIGFuZCB0aGUgbWVyY3kgdG8gQWJyYWhhbSwgd2hpY2ggdGhvdSBoYXN0IHN3b3JuIHVudG8gb3VyIGZhdGhlcnMgZnJvbSB0aGUgZGF5cyBvZiBvbGQuClRoZSBidXJkZW4gb2YgTmluZXZlaC4gVGhlIGJvb2sgb2YgdGhlIHZpc2lvbiBvZiBOYWh1bSB0aGUgRWxrb3NoaXRlLgpHb2QgaXMgamVhbG91cywgYW5kIHRoZSBMT1JEIHJldmVuZ2V0aDsgdGhlIExPUkQgcmV2ZW5nZXRoLCBhbmQgaXMgZnVyaW91czsgdGhlIExPUkQgd2lsbCB0YWtlIHZlbmdlYW5jZSBvbiBoaXMgYWR2ZXJzYXJpZXMsIGFuZCBoZSByZXNlcnZldGggd3JhdGggZm9yIGhpcyBlbmVtaWVzLgpUaGUgTE9SRCBpcyBzbG93IHRvIGFuZ2VyLCBhbmQgZ3JlYXQgaW4gcG93ZXIsIGFuZCB3aWxsIG5vdCBhdCBhbGwgYWNxdWl0IHRoZSB3aWNrZWQ6IHRoZSBMT1JEIGhhdGggaGlzIHdheSBpbiB0aGUgd2hpcmx3aW5kIGFuZCBpbiB0aGUgc3Rvcm0sIGFuZCB0aGUgY2xvdWRzIGFyZSB0aGUgZHVzdCBvZiBoaXMgZmVldC4KSGUgcmVidWtldGggdGhlIHNlYSwgYW5kIG1ha2V0aCBpdCBkcnksIGFuZCBkcmlldGggdXAgYWxsIHRoZSByaXZlcnM6IEJhc2hhbiBsYW5ndWlzaGV0aCwgYW5kIENhcm1lbCwgYW5kIHRoZSBmbG93ZXIgb2YgTGViYW5vbiBsYW5ndWlzaGV0aC4KVGhlIG1vdW50YWlucyBxdWFrZSBhdCBoaW0sIGFuZCB0aGUgaGlsbHMgbWVsdCwgYW5kIHRoZSBlYXJ0aCBpcyBidXJuZWQgYXQgaGlzIHByZXNlbmNlLCB5ZWEsIHRoZSB3b3JsZCwgYW5kIGFsbCB0aGF0IGR3ZWxsIHRoZXJlaW4uCldobyBjYW4gc3RhbmQgYmVmb3JlIGhpcyBpbmRpZ25hdGlvbj8gYW5kIHdobyBjYW4gYWJpZGUgaW4gdGhlIGZpZXJjZW5lc3Mgb2YgaGlzIGFuZ2VyPyBoaXMgZnVyeSBpcyBwb3VyZWQgb3V0IGxpa2UgZmlyZSwgYW5kIHRoZSByb2NrcyBhcmUgdGhyb3duIGRvd24gYnkgaGltLgpUaGUgTE9SRCBpcyBnb29kLCBhIHN0cm9uZyBob2xkIGluIHRoZSBkYXkgb2YgdHJvdWJsZTsgYW5kIGhlIGtub3dldGggdGhlbSB0aGF0IHRydXN0IGluIGhpbS4KQnV0IHdpdGggYW4gb3ZlcnJ1bm5pbmcgZmxvb2QgaGUgd2lsbCBtYWtlIGFuIHV0dGVyIGVuZCBvZiB0aGUgcGxhY2UgdGhlcmVvZiwgYW5kIGRhcmtuZXNzIHNoYWxsIHB1cnN1ZSBoaXMgZW5lbWllcy4KV2hhdCBkbyB5ZSBpbWFnaW5lIGFnYWluc3QgdGhlIExPUkQ/IGhlIHdpbGwgbWFrZSBhbiB1dHRlciBlbmQ6IGFmZmxpY3Rpb24gc2hhbGwgbm90IHJpc2UgdXAgdGhlIHNlY29uZCB0aW1lLgpGb3Igd2hpbGUgdGhleSBiZSBmb2xkZW4gdG9nZXRoZXIgYXMgdGhvcm5zLCBhbmQgd2hpbGUgdGhleSBhcmUgZHJ1bmtlbiBhcyBkcnVua2FyZHMsIHRoZXkgc2hhbGwgYmUgZGV2b3VyZWQgYXMgc3R1YmJsZSBmdWxseSBkcnkuClRoZXJlIGlzIG9uZSBjb21lIG91dCBvZiB0aGVlLCB0aGF0IGltYWdpbmV0aCBldmlsIGFnYWluc3QgdGhlIExPUkQsIGEgd2lja2VkIGNvdW5zZWxsb3IuClRodXMgc2FpdGggdGhlIExPUkQ7IFRob3VnaCB0aGV5IGJlIHF1aWV0LCBhbmQgbGlrZXdpc2UgbWFueSwgeWV0IHRodXMgc2hhbGwgdGhleSBiZSBjdXQgZG93biwgd2hlbiBoZSBzaGFsbCBwYXNzIHRocm91Z2guIFRob3VnaCBJIGhhdmUgYWZmbGljdGVkIHRoZWUsIEkgd2lsbCBhZmZsaWN0IHRoZWUgbm8gbW9yZS4KRm9yIG5vdyB3aWxsIEkgYnJlYWsgaGlzIHlva2UgZnJvbSBvZmYgdGhlZSwgYW5kIHdpbGwgYnVyc3QgdGh5IGJvbmRzIGluIHN1bmRlci4KQW5kIHRoZSBMT1JEIGhhdGggZ2l2ZW4gYSBjb21tYW5kbWVudCBjb25jZXJuaW5nIHRoZWUsIHRoYXQgbm8gbW9yZSBvZiB0aHkgbmFtZSBiZSBzb3duOiBvdXQgb2YgdGhlIGhvdXNlIG9mIHRoeSBnb2RzIHdpbGwgSSBjdXQgb2ZmIHRoZSBncmF2ZW4gaW1hZ2UgYW5kIHRoZSBtb2x0ZW4gaW1hZ2U6IEkgd2lsbCBtYWtlIHRoeSBncmF2ZTsgZm9yIHRob3UgYXJ0IHZpbGUuCkJlaG9sZCB1cG9uIHRoZSBtb3VudGFpbnMgdGhlIGZlZXQgb2YgaGltIHRoYXQgYnJpbmdldGggZ29vZCB0aWRpbmdzLCB0aGF0IHB1Ymxpc2hldGggcGVhY2UhIE8gSnVkYWgsIGtlZXAgdGh5IHNvbGVtbiBmZWFzdHMsIHBlcmZvcm0gdGh5IHZvd3M6IGZvciB0aGUgd2lja2VkIHNoYWxsIG5vIG1vcmUgcGFzcyB0aHJvdWdoIHRoZWU7IGhlIGlzIHV0dGVybHkgY3V0IG9mZi4KSGUgdGhhdCBkYXNoZXRoIGluIHBpZWNlcyBpcyBjb21lIHVwIGJlZm9yZSB0aHkgZmFjZToga2VlcCB0aGUgbXVuaXRpb24sIHdhdGNoIHRoZSB3YXksIG1ha2UgdGh5IGxvaW5zIHN0cm9uZywgZm9ydGlmeSB0aHkgcG93ZXIgbWlnaHRpbHkuCkZvciB0aGUgTE9SRCBoYXRoIHR1cm5lZCBhd2F5IHRoZSBleGNlbGxlbmN5IG9mIEphY29iLCBhcyB0aGUgZXhjZWxsZW5jeSBvZiBJc3JhZWw6IGZvciB0aGUgZW1wdGllcnMgaGF2ZSBlbXB0aWVkIHRoZW0gb3V0LCBhbmQgbWFycmVkIHRoZWlyIHZpbmUgYnJhbmNoZXMuClRoZSBzaGllbGQgb2YgaGlzIG1pZ2h0eSBtZW4gaXMgbWFkZSByZWQsIHRoZSB2YWxpYW50IG1lbiBhcmUgaW4gc2NhcmxldDogdGhlIGNoYXJpb3RzIHNoYWxsIGJlIHdpdGggZmxhbWluZyB0b3JjaGVzIGluIHRoZSBkYXkgb2YgaGlzIHByZXBhcmF0aW9uLCBhbmQgdGhlIGZpciB0cmVlcyBzaGFsbCBiZSB0ZXJyaWJseSBzaGFrZW4uClRoZSBjaGFyaW90cyBzaGFsbCByYWdlIGluIHRoZSBzdHJlZXRzLCB0aGV5IHNoYWxsIGp1c3RsZSBvbmUgYWdhaW5zdCBhbm90aGVyIGluIHRoZSBicm9hZCB3YXlzOiB0aGV5IHNoYWxsIHNlZW0gbGlrZSB0b3JjaGVzLCB0aGV5IHNoYWxsIHJ1biBsaWtlIHRoZSBsaWdodG5pbmdzLgpIZSBzaGFsbCByZWNvdW50IGhpcyB3b3J0aGllczogdGhleSBzaGFsbCBzdHVtYmxlIGluIHRoZWlyIHdhbGs7IHRoZXkgc2hhbGwgbWFrZSBoYXN0ZSB0byB0aGUgd2FsbCB0aGVyZW9mLCBhbmQgdGhlIGRlZmVuY2Ugc2hhbGwgYmUgcHJlcGFyZWQuClRoZSBnYXRlcyBvZiB0aGUgcml2ZXJzIHNoYWxsIGJlIG9wZW5lZCwgYW5kIHRoZSBwYWxhY2Ugc2hhbGwgYmUgZGlzc29sdmVkLgpBbmQgSHV6emFiIHNoYWxsIGJlIGxlZCBhd2F5IGNhcHRpdmUsIHNoZSBzaGFsbCBiZSBicm91Z2h0IHVwLCBhbmQgaGVyIG1haWRzIHNoYWxsIGxlYWQgaGVyIGFzIHdpdGggdGhlIHZvaWNlIG9mIGRvdmVzLCB0YWJlcmluZyB1cG9uIHRoZWlyIGJyZWFzdHMuCkJ1dCBOaW5ldmVoIGlzIG9mIG9sZCBsaWtlIGEgcG9vbCBvZiB3YXRlcjogeWV0IHRoZXkgc2hhbGwgZmxlZSBhd2F5LiBTdGFuZCwgc3RhbmQsIHNoYWxsIHRoZXkgY3J5OyBidXQgbm9uZSBzaGFsbCBsb29rIGJhY2suClRha2UgeWUgdGhlIHNwb2lsIG9mIHNpbHZlciwgdGFrZSB0aGUgc3BvaWwgb2YgZ29sZDogZm9yIHRoZXJlIGlzIG5vbmUgZW5kIG9mIHRoZSBzdG9yZSBhbmQgZ2xvcnkgb3V0IG9mIGFsbCB0aGUgcGxlYXNhbnQgZnVybml0dXJlLgpTaGUgaXMgZW1wdHksIGFuZCB2b2lkLCBhbmQgd2FzdGU6IGFuZCB0aGUgaGVhcnQgbWVsdGV0aCwgYW5kIHRoZSBrbmVlcyBzbWl0ZSB0b2dldGhlciwgYW5kIG11Y2ggcGFpbiBpcyBpbiBhbGwgbG9pbnMsIGFuZCB0aGUgZmFjZXMgb2YgdGhlbSBhbGwgZ2F0aGVyIGJsYWNrbmVzcy4KV2hlcmUgaXMgdGhlIGR3ZWxsaW5nIG9mIHRoZSBsaW9ucywgYW5kIHRoZSBmZWVkaW5ncGxhY2Ugb2YgdGhlIHlvdW5nIGxpb25zLCB3aGVyZSB0aGUgbGlvbiwgZXZlbiB0aGUgb2xkIGxpb24sIHdhbGtlZCwgYW5kIHRoZSBsaW9uJ3Mgd2hlbHAsIGFuZCBub25lIG1hZGUgdGhlbSBhZnJhaWQ/ClRoZSBsaW9uIGRpZCB0ZWFyIGluIHBpZWNlcyBlbm91Z2ggZm9yIGhpcyB3aGVscHMsIGFuZCBzdHJhbmdsZWQgZm9yIGhpcyBsaW9uZXNzZXMsIGFuZCBmaWxsZWQgaGlzIGhvbGVzIHdpdGggcHJleSwgYW5kIGhpcyBkZW5zIHdpdGggcmF2aW4uCkJlaG9sZCwgSSBhbSBhZ2FpbnN0IHRoZWUsIHNhaXRoIHRoZSBMT1JEIG9mIGhvc3RzLCBhbmQgSSB3aWxsIGJ1cm4gaGVyIGNoYXJpb3RzIGluIHRoZSBzbW9rZSwgYW5kIHRoZSBzd29yZCBzaGFsbCBkZXZvdXIgdGh5IHlvdW5nIGxpb25zOiBhbmQgSSB3aWxsIGN1dCBvZmYgdGh5IHByZXkgZnJvbSB0aGUgZWFydGgsIGFuZCB0aGUgdm9pY2Ugb2YgdGh5IG1lc3NlbmdlcnMgc2hhbGwgbm8gbW9yZSBiZSBoZWFyZC4KV29lIHRvIHRoZSBibG9vZHkgY2l0eSEgaXQgaXMgYWxsIGZ1bGwgb2YgbGllcyBhbmQgcm9iYmVyeTsgdGhlIHByZXkgZGVwYXJ0ZXRoIG5vdDsKVGhlIG5vaXNlIG9mIGEgd2hpcCwgYW5kIHRoZSBub2lzZSBvZiB0aGUgcmF0dGxpbmcgb2YgdGhlIHdoZWVscywgYW5kIG9mIHRoZSBwcmFuc2luZyBob3JzZXMsIGFuZCBvZiB0aGUganVtcGluZyBjaGFyaW90cy4KVGhlIGhvcnNlbWFuIGxpZnRldGggdXAgYm90aCB0aGUgYnJpZ2h0IHN3b3JkIGFuZCB0aGUgZ2xpdHRlcmluZyBzcGVhcjogYW5kIHRoZXJlIGlzIGEgbXVsdGl0dWRlIG9mIHNsYWluLCBhbmQgYSBncmVhdCBudW1iZXIgb2YgY2FyY2FzZXM7IGFuZCB0aGVyZSBpcyBub25lIGVuZCBvZiB0aGVpciBjb3Jwc2VzOyB0aGV5IHN0dW1ibGUgdXBvbiB0aGVpciBjb3Jwc2VzOgpCZWNhdXNlIG9mIHRoZSBtdWx0aXR1ZGUgb2YgdGhlIHdob3JlZG9tcyBvZiB0aGUgd2VsbGZhdm91cmVkIGhhcmxvdCwgdGhlIG1pc3RyZXNzIG9mIHdpdGNoY3JhZnRzLCB0aGF0IHNlbGxldGggbmF0aW9ucyB0aHJvdWdoIGhlciB3aG9yZWRvbXMsIGFuZCBmYW1pbGllcyB0aHJvdWdoIGhlciB3aXRjaGNyYWZ0cy4KQmVob2xkLCBJIGFtIGFnYWluc3QgdGhlZSwgc2FpdGggdGhlIExPUkQgb2YgaG9zdHM7IGFuZCBJIHdpbGwgZGlzY292ZXIgdGh5IHNraXJ0cyB1cG9uIHRoeSBmYWNlLCBhbmQgSSB3aWxsIHNoZXcgdGhlIG5hdGlvbnMgdGh5IG5ha2VkbmVzcywgYW5kIHRoZSBraW5nZG9tcyB0aHkgc2hhbWUuCkFuZCBJIHdpbGwgY2FzdCBhYm9taW5hYmxlIGZpbHRoIHVwb24gdGhlZSwgYW5kIG1ha2UgdGhlZSB2aWxlLCBhbmQgd2lsbCBzZXQgdGhlZSBhcyBhIGdhemluZ3N0b2NrLgpBbmQgaXQgc2hhbGwgY29tZSB0byBwYXNzLCB0aGF0IGFsbCB0aGV5IHRoYXQgbG9vayB1cG9uIHRoZWUgc2hhbGwgZmxlZSBmcm9tIHRoZWUsIGFuZCBzYXksIE5pbmV2ZWggaXMgbGFpZCB3YXN0ZTogd2hvIHdpbGwgYmVtb2FuIGhlcj8gd2hlbmNlIHNoYWxsIEkgc2VlayBjb21mb3J0ZXJzIGZvciB0aGVlPwpBcnQgdGhvdSBiZXR0ZXIgdGhhbiBwb3B1bG91cyBObywgdGhhdCB3YXMgc2l0dWF0ZSBhbW9uZyB0aGUgcml2ZXJzLCB0aGF0IGhhZCB0aGUgd2F0ZXJzIHJvdW5kIGFib3V0IGl0LCB3aG9zZSByYW1wYXJ0IHdhcyB0aGUgc2VhLCBhbmQgaGVyIHdhbGwgd2FzIGZyb20gdGhlIHNlYT8KRXRoaW9waWEgYW5kIEVneXB0IHdlcmUgaGVyIHN0cmVuZ3RoLCBhbmQgaXQgd2FzIGluZmluaXRlOyBQdXQgYW5kIEx1YmltIHdlcmUgdGh5IGhlbHBlcnMuCllldCB3YXMgc2hlIGNhcnJpZWQgYXdheSwgc2hlIHdlbnQgaW50byBjYXB0aXZpdHk6IGhlciB5b3VuZyBjaGlsZHJlbiBhbHNvIHdlcmUgZGFzaGVkIGluIHBpZWNlcyBhdCB0aGUgdG9wIG9mIGFsbCB0aGUgc3RyZWV0czogYW5kIHRoZXkgY2FzdCBsb3RzIGZvciBoZXIgaG9ub3VyYWJsZSBtZW4sIGFuZCBhbGwgaGVyIGdyZWF0IG1lbiB3ZXJlIGJvdW5kIGluIGNoYWlucy4KVGhvdSBhbHNvIHNoYWx0IGJlIGRydW5rZW46IHRob3Ugc2hhbHQgYmUgaGlkLCB0aG91IGFsc28gc2hhbHQgc2VlayBzdHJlbmd0aCBiZWNhdXNlIG9mIHRoZSBlbmVteS4KQWxsIHRoeSBzdHJvbmcgaG9sZHMgc2hhbGwgYmUgbGlrZSBmaWcgdHJlZXMgd2l0aCB0aGUgZmlyc3RyaXBlIGZpZ3M6IGlmIHRoZXkgYmUgc2hha2VuLCB0aGV5IHNoYWxsIGV2ZW4gZmFsbCBpbnRvIHRoZSBtb3V0aCBvZiB0aGUgZWF0ZXIuCkJlaG9sZCwgdGh5IHBlb3BsZSBpbiB0aGUgbWlkc3Qgb2YgdGhlZSBhcmUgd29tZW46IHRoZSBnYXRlcyBvZiB0aHkgbGFuZCBzaGFsbCBiZSBzZXQgd2lkZSBvcGVuIHVudG8gdGhpbmUgZW5lbWllczogdGhlIGZpcmUgc2hhbGwgZGV2b3VyIHRoeSBiYXJzLgpEcmF3IHRoZWUgd2F0ZXJzIGZvciB0aGUgc2llZ2UsIGZvcnRpZnkgdGh5IHN0cm9uZyBob2xkczogZ28gaW50byBjbGF5LCBhbmQgdHJlYWQgdGhlIG1vcnRlciwgbWFrZSBzdHJvbmcgdGhlIGJyaWNra2lsbi4KVGhlcmUgc2hhbGwgdGhlIGZpcmUgZGV2b3VyIHRoZWU7IHRoZSBzd29yZCBzaGFsbCBjdXQgdGhlZSBvZmYsIGl0IHNoYWxsIGVhdCB0aGVlIHVwIGxpa2UgdGhlIGNhbmtlcndvcm06IG1ha2UgdGh5c2VsZiBtYW55IGFzIHRoZSBjYW5rZXJ3b3JtLCBtYWtlIHRoeXNlbGYgbWFueSBhcyB0aGUgbG9jdXN0cy4KVGhvdSBoYXN0IG11bHRpcGxpZWQgdGh5IG1lcmNoYW50cyBhYm92ZSB0aGUgc3RhcnMgb2YgaGVhdmVuOiB0aGUgY2Fua2Vyd29ybSBzcG9pbGV0aCwgYW5kIGZsZWV0aCBhd2F5LgpUaHkgY3Jvd25lZCBhcmUgYXMgdGhlIGxvY3VzdHMsIGFuZCB0aHkgY2FwdGFpbnMgYXMgdGhlIGdyZWF0IGdyYXNzaG9wcGVycywgd2hpY2ggY2FtcCBpbiB0aGUgaGVkZ2VzIGluIHRoZSBjb2xkIGRheSwgYnV0IHdoZW4gdGhlIHN1biBhcmlzZXRoIHRoZXkgZmxlZSBhd2F5LCBhbmQgdGhlaXIgcGxhY2UgaXMgbm90IGtub3duIHdoZXJlIHRoZXkgYXJlLgpUaHkgc2hlcGhlcmRzIHNsdW1iZXIsIE8ga2luZyBvZiBBc3N5cmlhOiB0aHkgbm9ibGVzIHNoYWxsIGR3ZWxsIGluIHRoZSBkdXN0OiB0aHkgcGVvcGxlIGlzIHNjYXR0ZXJlZCB1cG9uIHRoZSBtb3VudGFpbnMsIGFuZCBubyBtYW4gZ2F0aGVyZXRoIHRoZW0uClRoZXJlIGlzIG5vIGhlYWxpbmcgb2YgdGh5IGJydWlzZTsgdGh5IHdvdW5kIGlzIGdyaWV2b3VzOiBhbGwgdGhhdCBoZWFyIHRoZSBicnVpdCBvZiB0aGVlIHNoYWxsIGNsYXAgdGhlIGhhbmRzIG92ZXIgdGhlZTogZm9yIHVwb24gd2hvbSBoYXRoIG5vdCB0aHkgd2lja2VkbmVzcyBwYXNzZWQgY29udGludWFsbHk/ClRoZSBidXJkZW4gd2hpY2ggSGFiYWtrdWsgdGhlIHByb3BoZXQgZGlkIHNlZS4KTyBMT1JELCBob3cgbG9uZyBzaGFsbCBJIGNyeSwgYW5kIHRob3Ugd2lsdCBub3QgaGVhciEgZXZlbiBjcnkgb3V0IHVudG8gdGhlZSBvZiB2aW9sZW5jZSwgYW5kIHRob3Ugd2lsdCBub3Qgc2F2ZSEKV2h5IGRvc3QgdGhvdSBzaGV3IG1lIGluaXF1aXR5LCBhbmQgY2F1c2UgbWUgdG8gYmVob2xkIGdyaWV2YW5jZT8gZm9yIHNwb2lsaW5nIGFuZCB2aW9sZW5jZSBhcmUgYmVmb3JlIG1lOiBhbmQgdGhlcmUgYXJlIHRoYXQgcmFpc2UgdXAgc3RyaWZlIGFuZCBjb250ZW50aW9uLgpUaGVyZWZvcmUgdGhlIGxhdyBpcyBzbGFja2VkLCBhbmQganVkZ21lbnQgZG90aCBuZXZlciBnbyBmb3J0aDogZm9yIHRoZSB3aWNrZWQgZG90aCBjb21wYXNzIGFib3V0IHRoZSByaWdodGVvdXM7IHRoZXJlZm9yZSB3cm9uZyBqdWRnbWVudCBwcm9jZWVkZXRoLgpCZWhvbGQgeWUgYW1vbmcgdGhlIGhlYXRoZW4sIGFuZCByZWdhcmQsIGFuZCB3b25kZXIgbWFydmVsb3VzbHk6IGZvciBJIHdpbGwgd29yayBhIHdvcmsgaW4geW91ciBkYXlzIHdoaWNoIHllIHdpbGwgbm90IGJlbGlldmUsIHRob3VnaCBpdCBiZSB0b2xkIHlvdS4KRm9yLCBsbywgSSByYWlzZSB1cCB0aGUgQ2hhbGRlYW5zLCB0aGF0IGJpdHRlciBhbmQgaGFzdHkgbmF0aW9uLCB3aGljaCBzaGFsbCBtYXJjaCB0aHJvdWdoIHRoZSBicmVhZHRoIG9mIHRoZSBsYW5kLCB0byBwb3NzZXNzIHRoZSBkd2VsbGluZ3BsYWNlcyB0aGF0IGFyZSBub3QgdGhlaXIncy4KVGhleSBhcmUgdGVycmlibGUgYW5kIGRyZWFkZnVsOiB0aGVpciBqdWRnbWVudCBhbmQgdGhlaXIgZGlnbml0eSBzaGFsbCBwcm9jZWVkIG9mIHRoZW1zZWx2ZXMuClRoZWlyIGhvcnNlcyBhbHNvIGFyZSBzd2lmdGVyIHRoYW4gdGhlIGxlb3BhcmRzLCBhbmQgYXJlIG1vcmUgZmllcmNlIHRoYW4gdGhlIGV2ZW5pbmcgd29sdmVzOiBhbmQgdGhlaXIgaG9yc2VtZW4gc2hhbGwgc3ByZWFkIHRoZW1zZWx2ZXMsIGFuZCB0aGVpciBob3JzZW1lbiBzaGFsbCBjb21lIGZyb20gZmFyOyB0aGV5IHNoYWxsIGZseSBhcyB0aGUgZWFnbGUgdGhhdCBoYXN0ZXRoIHRvIGVhdC4KVGhleSBzaGFsbCBjb21lIGFsbCBmb3IgdmlvbGVuY2U6IHRoZWlyIGZhY2VzIHNoYWxsIHN1cCB1cCBhcyB0aGUgZWFzdCB3aW5kLCBhbmQgdGhleSBzaGFsbCBnYXRoZXIgdGhlIGNhcHRpdml0eSBhcyB0aGUgc2FuZC4KQW5kIHRoZXkgc2hhbGwgc2NvZmYgYXQgdGhlIGtpbmdzLCBhbmQgdGhlIHByaW5jZXMgc2hhbGwgYmUgYSBzY29ybiB1bnRvIHRoZW06IHRoZXkgc2hhbGwgZGVyaWRlIGV2ZXJ5IHN0cm9uZyBob2xkOyBmb3IgdGhleSBzaGFsbCBoZWFwIGR1c3QsIGFuZCB0YWtlIGl0LgpUaGVuIHNoYWxsIGhpcyBtaW5kIGNoYW5nZSwgYW5kIGhlIHNoYWxsIHBhc3Mgb3ZlciwgYW5kIG9mZmVuZCwgaW1wdXRpbmcgdGhpcyBoaXMgcG93ZXIgdW50byBoaXMgZ29kLgpBcnQgdGhvdSBub3QgZnJvbSBldmVybGFzdGluZywgTyBMT1JEIG15IEdvZCwgbWluZSBIb2x5IE9uZT8gd2Ugc2hhbGwgbm90IGRpZS4gTyBMT1JELCB0aG91IGhhc3Qgb3JkYWluZWQgdGhlbSBmb3IganVkZ21lbnQ7IGFuZCwgTyBtaWdodHkgR29kLCB0aG91IGhhc3QgZXN0YWJsaXNoZWQgdGhlbSBmb3IgY29ycmVjdGlvbi4KVGhvdSBhcnQgb2YgcHVyZXIgZXllcyB0aGFuIHRvIGJlaG9sZCBldmlsLCBhbmQgY2Fuc3Qgbm90IGxvb2sgb24gaW5pcXVpdHk6IHdoZXJlZm9yZSBsb29rZXN0IHRob3UgdXBvbiB0aGVtIHRoYXQgZGVhbCB0cmVhY2hlcm91c2x5LCBhbmQgaG9sZGVzdCB0aHkgdG9uZ3VlIHdoZW4gdGhlIHdpY2tlZCBkZXZvdXJldGggdGhlIG1hbiB0aGF0IGlzIG1vcmUgcmlnaHRlb3VzIHRoYW4gaGU/CkFuZCBtYWtlc3QgbWVuIGFzIHRoZSBmaXNoZXMgb2YgdGhlIHNlYSwgYXMgdGhlIGNyZWVwaW5nIHRoaW5ncywgdGhhdCBoYXZlIG5vIHJ1bGVyIG92ZXIgdGhlbT8KVGhleSB0YWtlIHVwIGFsbCBvZiB0aGVtIHdpdGggdGhlIGFuZ2xlLCB0aGV5IGNhdGNoIHRoZW0gaW4gdGhlaXIgbmV0LCBhbmQgZ2F0aGVyIHRoZW0gaW4gdGhlaXIgZHJhZzogdGhlcmVmb3JlIHRoZXkgcmVqb2ljZSBhbmQgYXJlIGdsYWQuClRoZXJlZm9yZSB0aGV5IHNhY3JpZmljZSB1bnRvIHRoZWlyIG5ldCwgYW5kIGJ1cm4gaW5jZW5zZSB1bnRvIHRoZWlyIGRyYWc7IGJlY2F1c2UgYnkgdGhlbSB0aGVpciBwb3J0aW9uIGlzIGZhdCwgYW5kIHRoZWlyIG1lYXQgcGxlbnRlb3VzLgpTaGFsbCB0aGV5IHRoZXJlZm9yZSBlbXB0eSB0aGVpciBuZXQsIGFuZCBub3Qgc3BhcmUgY29udGludWFsbHkgdG8gc2xheSB0aGUgbmF0aW9ucz8KSSB3aWxsIHN0YW5kIHVwb24gbXkgd2F0Y2gsIGFuZCBzZXQgbWUgdXBvbiB0aGUgdG93ZXIsIGFuZCB3aWxsIHdhdGNoIHRvIHNlZSB3aGF0IGhlIHdpbGwgc2F5IHVudG8gbWUsIGFuZCB3aGF0IEkgc2hhbGwgYW5zd2VyIHdoZW4gSSBhbSByZXByb3ZlZC4KQW5kIHRoZSBMT1JEIGFuc3dlcmVkIG1lLCBhbmQgc2FpZCwgV3JpdGUgdGhlIHZpc2lvbiwgYW5kIG1ha2UgaXQgcGxhaW4gdXBvbiB0YWJsZXMsIHRoYXQgaGUgbWF5IHJ1biB0aGF0IHJlYWRldGggaXQuCkZvciB0aGUgdmlzaW9uIGlzIHlldCBmb3IgYW4gYXBwb2ludGVkIHRpbWUsIGJ1dCBhdCB0aGUgZW5kIGl0IHNoYWxsIHNwZWFrLCBhbmQgbm90IGxpZTogdGhvdWdoIGl0IHRhcnJ5LCB3YWl0IGZvciBpdDsgYmVjYXVzZSBpdCB3aWxsIHN1cmVseSBjb21lLCBpdCB3aWxsIG5vdCB0YXJyeS4KQmVob2xkLCBoaXMgc291bCB3aGljaCBpcyBsaWZ0ZWQgdXAgaXMgbm90IHVwcmlnaHQgaW4gaGltOiBidXQgdGhlIGp1c3Qgc2hhbGwgbGl2ZSBieSBoaXMgZmFpdGguClllYSBhbHNvLCBiZWNhdXNlIGhlIHRyYW5zZ3Jlc3NldGggYnkgd2luZSwgaGUgaXMgYSBwcm91ZCBtYW4sIG5laXRoZXIga2VlcGV0aCBhdCBob21lLCB3aG8gZW5sYXJnZXRoIGhpcyBkZXNpcmUgYXMgaGVsbCwgYW5kIGlzIGFzIGRlYXRoLCBhbmQgY2Fubm90IGJlIHNhdGlzZmllZCwgYnV0IGdhdGhlcmV0aCB1bnRvIGhpbSBhbGwgbmF0aW9ucywgYW5kIGhlYXBldGggdW50byBoaW0gYWxsIHBlb3BsZToKU2hhbGwgbm90IGFsbCB0aGVzZSB0YWtlIHVwIGEgcGFyYWJsZSBhZ2FpbnN0IGhpbSwgYW5kIGEgdGF1bnRpbmcgcHJvdmVyYiBhZ2FpbnN0IGhpbSwgYW5kIHNheSwgV29lIHRvIGhpbSB0aGF0IGluY3JlYXNldGggdGhhdCB3aGljaCBpcyBub3QgaGlzISBob3cgbG9uZz8gYW5kIHRvIGhpbSB0aGF0IGxhZGV0aCBoaW1zZWxmIHdpdGggdGhpY2sgY2xheSEKU2hhbGwgdGhleSBub3QgcmlzZSB1cCBzdWRkZW5seSB0aGF0IHNoYWxsIGJpdGUgdGhlZSwgYW5kIGF3YWtlIHRoYXQgc2hhbGwgdmV4IHRoZWUsIGFuZCB0aG91IHNoYWx0IGJlIGZvciBib290aWVzIHVudG8gdGhlbT8KQmVjYXVzZSB0aG91IGhhc3Qgc3BvaWxlZCBtYW55IG5hdGlvbnMsIGFsbCB0aGUgcmVtbmFudCBvZiB0aGUgcGVvcGxlIHNoYWxsIHNwb2lsIHRoZWU7IGJlY2F1c2Ugb2YgbWVuJ3MgYmxvb2QsIGFuZCBmb3IgdGhlIHZpb2xlbmNlIG9mIHRoZSBsYW5kLCBvZiB0aGUgY2l0eSwgYW5kIG9mIGFsbCB0aGF0IGR3ZWxsIHRoZXJlaW4uCldvZSB0byBoaW0gdGhhdCBjb3ZldGV0aCBhbiBldmlsIGNvdmV0b3VzbmVzcyB0byBoaXMgaG91c2UsIHRoYXQgaGUgbWF5IHNldCBoaXMgbmVzdCBvbiBoaWdoLCB0aGF0IGhlIG1heSBiZSBkZWxpdmVyZWQgZnJvbSB0aGUgcG93ZXIgb2YgZXZpbCEKVGhvdSBoYXN0IGNvbnN1bHRlZCBzaGFtZSB0byB0aHkgaG91c2UgYnkgY3V0dGluZyBvZmYgbWFueSBwZW9wbGUsIGFuZCBoYXN0IHNpbm5lZCBhZ2FpbnN0IHRoeSBzb3VsLgpGb3IgdGhlIHN0b25lIHNoYWxsIGNyeSBvdXQgb2YgdGhlIHdhbGwsIGFuZCB0aGUgYmVhbSBvdXQgb2YgdGhlIHRpbWJlciBzaGFsbCBhbnN3ZXIgaXQuCldvZSB0byBoaW0gdGhhdCBidWlsZGV0aCBhIHRvd24gd2l0aCBibG9vZCwgYW5kIHN0YWJsaXNoZXRoIGEgY2l0eSBieSBpbmlxdWl0eSEKQmVob2xkLCBpcyBpdCBub3Qgb2YgdGhlIExPUkQgb2YgaG9zdHMgdGhhdCB0aGUgcGVvcGxlIHNoYWxsIGxhYm91ciBpbiB0aGUgdmVyeSBmaXJlLCBhbmQgdGhlIHBlb3BsZSBzaGFsbCB3ZWFyeSB0aGVtc2VsdmVzIGZvciB2ZXJ5IHZhbml0eT8KRm9yIHRoZSBlYXJ0aCBzaGFsbCBiZSBmaWxsZWQgd2l0aCB0aGUga25vd2xlZGdlIG9mIHRoZSBnbG9yeSBvZiB0aGUgTE9SRCwgYXMgdGhlIHdhdGVycyBjb3ZlciB0aGUgc2VhLgpXb2UgdW50byBoaW0gdGhhdCBnaXZldGggaGlzIG5laWdoYm91ciBkcmluaywgdGhhdCBwdXR0ZXN0IHRoeSBib3R0bGUgdG8gaGltLCBhbmQgbWFrZXN0IGhpbSBkcnVua2VuIGFsc28sIHRoYXQgdGhvdSBtYXllc3QgbG9vayBvbiB0aGVpciBuYWtlZG5lc3MhClRob3UgYXJ0IGZpbGxlZCB3aXRoIHNoYW1lIGZvciBnbG9yeTogZHJpbmsgdGhvdSBhbHNvLCBhbmQgbGV0IHRoeSBmb3Jlc2tpbiBiZSB1bmNvdmVyZWQ6IHRoZSBjdXAgb2YgdGhlIExPUkQncyByaWdodCBoYW5kIHNoYWxsIGJlIHR1cm5lZCB1bnRvIHRoZWUsIGFuZCBzaGFtZWZ1bCBzcGV3aW5nIHNoYWxsIGJlIG9uIHRoeSBnbG9yeS4KRm9yIHRoZSB2aW9sZW5jZSBvZiBMZWJhbm9uIHNoYWxsIGNvdmVyIHRoZWUsIGFuZCB0aGUgc3BvaWwgb2YgYmVhc3RzLCB3aGljaCBtYWRlIHRoZW0gYWZyYWlkLCBiZWNhdXNlIG9mIG1lbidzIGJsb29kLCBhbmQgZm9yIHRoZSB2aW9sZW5jZSBvZiB0aGUgbGFuZCwgb2YgdGhlIGNpdHksIGFuZCBvZiBhbGwgdGhhdCBkd2VsbCB0aGVyZWluLgpXaGF0IHByb2ZpdGV0aCB0aGUgZ3JhdmVuIGltYWdlIHRoYXQgdGhlIG1ha2VyIHRoZXJlb2YgaGF0aCBncmF2ZW4gaXQ7IHRoZSBtb2x0ZW4gaW1hZ2UsIGFuZCBhIHRlYWNoZXIgb2YgbGllcywgdGhhdCB0aGUgbWFrZXIgb2YgaGlzIHdvcmsgdHJ1c3RldGggdGhlcmVpbiwgdG8gbWFrZSBkdW1iIGlkb2xzPwpXb2UgdW50byBoaW0gdGhhdCBzYWl0aCB0byB0aGUgd29vZCwgQXdha2U7IHRvIHRoZSBkdW1iIHN0b25lLCBBcmlzZSwgaXQgc2hhbGwgdGVhY2ghIEJlaG9sZCwgaXQgaXMgbGFpZCBvdmVyIHdpdGggZ29sZCBhbmQgc2lsdmVyLCBhbmQgdGhlcmUgaXMgbm8gYnJlYXRoIGF0IGFsbCBpbiB0aGUgbWlkc3Qgb2YgaXQuCkJ1dCB0aGUgTE9SRCBpcyBpbiBoaXMgaG9seSB0ZW1wbGU6IGxldCBhbGwgdGhlIGVhcnRoIGtlZXAgc2lsZW5jZSBiZWZvcmUgaGltLgpBIHByYXllciBvZiBIYWJha2t1ayB0aGUgcHJvcGhldCB1cG9uIFNoaWdpb25vdGguCk8gTE9SRCwgSSBoYXZlIGhlYXJkIHRoeSBzcGVlY2gsIGFuZCB3YXMgYWZyYWlkOiBPIExPUkQsIHJldml2ZSB0aHkgd29yayBpbiB0aGUgbWlkc3Qgb2YgdGhlIHllYXJzLCBpbiB0aGUgbWlkc3Qgb2YgdGhlIHllYXJzIG1ha2Uga25vd247IGluIHdyYXRoIHJlbWVtYmVyIG1lcmN5LgpHb2QgY2FtZSBmcm9tIFRlbWFuLCBhbmQgdGhlIEhvbHkgT25lIGZyb20gbW91bnQgUGFyYW4uIFNlbGFoLiBIaXMgZ2xvcnkgY292ZXJlZCB0aGUgaGVhdmVucywgYW5kIHRoZSBlYXJ0aCB3YXMgZnVsbCBvZiBoaXMgcHJhaXNlLgpBbmQgaGlzIGJyaWdodG5lc3Mgd2FzIGFzIHRoZSBsaWdodDsgaGUgaGFkIGhvcm5zIGNvbWluZyBvdXQgb2YgaGlzIGhhbmQ6IGFuZCB0aGVyZSB3YXMgdGhlIGhpZGluZyBvZiBoaXMgcG93ZXIuCkJlZm9yZSBoaW0gd2VudCB0aGUgcGVzdGlsZW5jZSwgYW5kIGJ1cm5pbmcgY29hbHMgd2VudCBmb3J0aCBhdCBoaXMgZmVldC4KSGUgc3Rvb2QsIGFuZCBtZWFzdXJlZCB0aGUgZWFydGg6IGhlIGJlaGVsZCwgYW5kIGRyb3ZlIGFzdW5kZXIgdGhlIG5hdGlvbnM7IGFuZCB0aGUgZXZlcmxhc3RpbmcgbW91bnRhaW5zIHdlcmUgc2NhdHRlcmVkLCB0aGUgcGVycGV0dWFsIGhpbGxzIGRpZCBib3c6IGhpcyB3YXlzIGFyZSBldmVybGFzdGluZy4KSSBzYXcgdGhlIHRlbnRzIG9mIEN1c2hhbiBpbiBhZmZsaWN0aW9uOiBhbmQgdGhlIGN1cnRhaW5zIG9mIHRoZSBsYW5kIG9mIE1pZGlhbiBkaWQgdHJlbWJsZS4KV2FzIHRoZSBMT1JEIGRpc3BsZWFzZWQgYWdhaW5zdCB0aGUgcml2ZXJzPyB3YXMgdGhpbmUgYW5nZXIgYWdhaW5zdCB0aGUgcml2ZXJzPyB3YXMgdGh5IHdyYXRoIGFnYWluc3QgdGhlIHNlYSwgdGhhdCB0aG91IGRpZHN0IHJpZGUgdXBvbiB0aGluZSBob3JzZXMgYW5kIHRoeSBjaGFyaW90cyBvZiBzYWx2YXRpb24/ClRoeSBib3cgd2FzIG1hZGUgcXVpdGUgbmFrZWQsIGFjY29yZGluZyB0byB0aGUgb2F0aHMgb2YgdGhlIHRyaWJlcywgZXZlbiB0aHkgd29yZC4gU2VsYWguIFRob3UgZGlkc3QgY2xlYXZlIHRoZSBlYXJ0aCB3aXRoIHJpdmVycy4KVGhlIG1vdW50YWlucyBzYXcgdGhlZSwgYW5kIHRoZXkgdHJlbWJsZWQ6IHRoZSBvdmVyZmxvd2luZyBvZiB0aGUgd2F0ZXIgcGFzc2VkIGJ5OiB0aGUgZGVlcCB1dHRlcmVkIGhpcyB2b2ljZSwgYW5kIGxpZnRlZCB1cCBoaXMgaGFuZHMgb24gaGlnaC4KVGhlIHN1biBhbmQgbW9vbiBzdG9vZCBzdGlsbCBpbiB0aGVpciBoYWJpdGF0aW9uOiBhdCB0aGUgbGlnaHQgb2YgdGhpbmUgYXJyb3dzIHRoZXkgd2VudCwgYW5kIGF0IHRoZSBzaGluaW5nIG9mIHRoeSBnbGl0dGVyaW5nIHNwZWFyLgpUaG91IGRpZHN0IG1hcmNoIHRocm91Z2ggdGhlIGxhbmQgaW4gaW5kaWduYXRpb24sIHRob3UgZGlkc3QgdGhyZXNoIHRoZSBoZWF0aGVuIGluIGFuZ2VyLgpUaG91IHdlbnRlc3QgZm9ydGggZm9yIHRoZSBzYWx2YXRpb24gb2YgdGh5IHBlb3BsZSwgZXZlbiBmb3Igc2FsdmF0aW9uIHdpdGggdGhpbmUgYW5vaW50ZWQ7IHRob3Ugd291bmRlZHN0IHRoZSBoZWFkIG91dCBvZiB0aGUgaG91c2Ugb2YgdGhlIHdpY2tlZCwgYnkgZGlzY292ZXJpbmcgdGhlIGZvdW5kYXRpb24gdW50byB0aGUgbmVjay4gU2VsYWguClRob3UgZGlkc3Qgc3RyaWtlIHRocm91Z2ggd2l0aCBoaXMgc3RhdmVzIHRoZSBoZWFkIG9mIGhpcyB2aWxsYWdlczogdGhleSBjYW1lIG91dCBhcyBhIHdoaXJsd2luZCB0byBzY2F0dGVyIG1lOiB0aGVpciByZWpvaWNpbmcgd2FzIGFzIHRvIGRldm91ciB0aGUgcG9vciBzZWNyZXRseS4KVGhvdSBkaWRzdCB3YWxrIHRocm91Z2ggdGhlIHNlYSB3aXRoIHRoaW5lIGhvcnNlcywgdGhyb3VnaCB0aGUgaGVhcCBvZiBncmVhdCB3YXRlcnMuCldoZW4gSSBoZWFyZCwgbXkgYmVsbHkgdHJlbWJsZWQ7IG15IGxpcHMgcXVpdmVyZWQgYXQgdGhlIHZvaWNlOiByb3R0ZW5uZXNzIGVudGVyZWQgaW50byBteSBib25lcywgYW5kIEkgdHJlbWJsZWQgaW4gbXlzZWxmLCB0aGF0IEkgbWlnaHQgcmVzdCBpbiB0aGUgZGF5IG9mIHRyb3VibGU6IHdoZW4gaGUgY29tZXRoIHVwIHVudG8gdGhlIHBlb3BsZSwgaGUgd2lsbCBpbnZhZGUgdGhlbSB3aXRoIGhpcyB0cm9vcHMuCkFsdGhvdWdoIHRoZSBmaWcgdHJlZSBzaGFsbCBub3QgYmxvc3NvbSwgbmVpdGhlciBzaGFsbCBmcnVpdCBiZSBpbiB0aGUgdmluZXM7IHRoZSBsYWJvdXIgb2YgdGhlIG9saXZlIHNoYWxsIGZhaWwsIGFuZCB0aGUgZmllbGRzIHNoYWxsIHlpZWxkIG5vIG1lYXQ7IHRoZSBmbG9jayBzaGFsbCBiZSBjdXQgb2ZmIGZyb20gdGhlIGZvbGQsIGFuZCB0aGVyZSBzaGFsbCBiZSBubyBoZXJkIGluIHRoZSBzdGFsbHM6CllldCBJIHdpbGwgcmVqb2ljZSBpbiB0aGUgTE9SRCwgSSB3aWxsIGpveSBpbiB0aGUgR29kIG9mIG15IHNhbHZhdGlvbi4KVGhlIExPUkQgR29kIGlzIG15IHN0cmVuZ3RoLCBhbmQgaGUgd2lsbCBtYWtlIG15IGZlZXQgbGlrZSBoaW5kcycgZmVldCwgYW5kIGhlIHdpbGwgbWFrZSBtZSB0byB3YWxrIHVwb24gbWluZSBoaWdoIHBsYWNlcy4gVG8gdGhlIGNoaWVmIHNpbmdlciBvbiBteSBzdHJpbmdlZCBpbnN0cnVtZW50cy4KVGhlIHdvcmQgb2YgdGhlIExPUkQgd2hpY2ggY2FtZSB1bnRvIFplcGhhbmlhaCB0aGUgc29uIG9mIEN1c2hpLCB0aGUgc29uIG9mIEdlZGFsaWFoLCB0aGUgc29uIG9mIEFtYXJpYWgsIHRoZSBzb24gb2YgSGl6a2lhaCwgaW4gdGhlIGRheXMgb2YgSm9zaWFoIHRoZSBzb24gb2YgQW1vbiwga2luZyBvZiBKdWRhaC4KSSB3aWxsIHV0dGVybHkgY29uc3VtZSBhbGwgW3RoaW5nc10gZnJvbSBvZmYgdGhlIGxhbmQsIHNhaXRoIHRoZSBMT1JELgpJIHdpbGwgY29uc3VtZSBtYW4gYW5kIGJlYXN0OyBJIHdpbGwgY29uc3VtZSB0aGUgZm93bHMgb2YgdGhlIGhlYXZlbiwgYW5kIHRoZSBmaXNoZXMgb2YgdGhlIHNlYSwgYW5kIHRoZSBzdHVtYmxpbmdibG9ja3Mgd2l0aCB0aGUgd2lja2VkOyBhbmQgSSB3aWxsIGN1dCBvZmYgbWFuIGZyb20gb2ZmIHRoZSBsYW5kLCBzYWl0aCB0aGUgTE9SRC4KSSB3aWxsIGFsc28gc3RyZXRjaCBvdXQgbWluZSBoYW5kIHVwb24gSnVkYWgsIGFuZCB1cG9uIGFsbCB0aGUgaW5oYWJpdGFudHMgb2YgSmVydXNhbGVtOyBhbmQgSSB3aWxsIGN1dCBvZmYgdGhlIHJlbW5hbnQgb2YgQmFhbCBmcm9tIHRoaXMgcGxhY2UsIFthbmRdIHRoZSBuYW1lIG9mIHRoZSBDaGVtYXJpbXMgd2l0aCB0aGUgcHJpZXN0czsKQW5kIHRoZW0gdGhhdCB3b3JzaGlwIHRoZSBob3N0IG9mIGhlYXZlbiB1cG9uIHRoZSBob3VzZXRvcHM7IGFuZCB0aGVtIHRoYXQgd29yc2hpcCBbYW5kXSB0aGF0IHN3ZWFyIGJ5IHRoZSBMT1JELCBhbmQgdGhhdCBzd2VhciBieSBNYWxjaGFtOwpBbmQgdGhlbSB0aGF0IGFyZSB0dXJuZWQgYmFjayBmcm9tIHRoZSBMT1JEOyBhbmQgW3Rob3NlXSB0aGF0IGhhdmUgbm90IHNvdWdodCB0aGUgTE9SRCwgbm9yIGlucXVpcmVkIGZvciBoaW0uCkhvbGQgdGh5IHBlYWNlIGF0IHRoZSBwcmVzZW5jZSBvZiB0aGUgTG9yZCBHT0Q6IGZvciB0aGUgZGF5IG9mIHRoZSBMT1JEIFtpc10gYXQgaGFuZDogZm9yIHRoZSBMT1JEIGhhdGggcHJlcGFyZWQgYSBzYWNyaWZpY2UsIGhlIGhhdGggYmlkIGhpcyBndWVzdHMuCkFuZCBpdCBzaGFsbCBjb21lIHRvIHBhc3MgaW4gdGhlIGRheSBvZiB0aGUgTE9SRCdTIHNhY3JpZmljZSwgdGhhdCBJIHdpbGwgcHVuaXNoIHRoZSBwcmluY2VzLCBhbmQgdGhlIGtpbmcncyBjaGlsZHJlbiwgYW5kIGFsbCBzdWNoIGFzIGFyZSBjbG90aGVkIHdpdGggc3RyYW5nZSBhcHBhcmVsLgpJbiB0aGUgc2FtZSBkYXkgYWxzbyB3aWxsIEkgcHVuaXNoIGFsbCB0aG9zZSB0aGF0IGxlYXAgb24gdGhlIHRocmVzaG9sZCwgd2hpY2ggZmlsbCB0aGVpciBtYXN0ZXJzJyBob3VzZXMgd2l0aCB2aW9sZW5jZSBhbmQgZGVjZWl0LgpBbmQgaXQgc2hhbGwgY29tZSB0byBwYXNzIGluIHRoYXQgZGF5LCBzYWl0aCB0aGUgTE9SRCwgW3RoYXQgdGhlcmUgc2hhbGwgYmVdIHRoZSBub2lzZSBvZiBhIGNyeSBmcm9tIHRoZSBmaXNoIGdhdGUsIGFuZCBhbiBob3dsaW5nIGZyb20gdGhlIHNlY29uZCwgYW5kIGEgZ3JlYXQgY3Jhc2hpbmcgZnJvbSB0aGUgaGlsbHMuCkhvd2wsIHllIGluaGFiaXRhbnRzIG9mIE1ha3Rlc2gsIGZvciBhbGwgdGhlIG1lcmNoYW50IHBlb3BsZSBhcmUgY3V0IGRvd247IGFsbCB0aGV5IHRoYXQgYmVhciBzaWx2ZXIgYXJlIGN1dCBvZmYuCkFuZCBpdCBzaGFsbCBjb21lIHRvIHBhc3MgYXQgdGhhdCB0aW1lLCBbdGhhdF0gSSB3aWxsIHNlYXJjaCBKZXJ1c2FsZW0gd2l0aCBjYW5kbGVzLCBhbmQgcHVuaXNoIHRoZSBtZW4gdGhhdCBhcmUgc2V0dGxlZCBvbiB0aGVpciBsZWVzOiB0aGF0IHNheSBpbiB0aGVpciBoZWFydCwgVGhlIExPUkQgd2lsbCBub3QgZG8gZ29vZCwgbmVpdGhlciB3aWxsIGhlIGRvIGV2aWwuClRoZXJlZm9yZSB0aGVpciBnb29kcyBzaGFsbCBiZWNvbWUgYSBib290eSwgYW5kIHRoZWlyIGhvdXNlcyBhIGRlc29sYXRpb246IHRoZXkgc2hhbGwgYWxzbyBidWlsZCBob3VzZXMsIGJ1dCBub3QgaW5oYWJpdCBbdGhlbV07IGFuZCB0aGV5IHNoYWxsIHBsYW50IHZpbmV5YXJkcywgYnV0IG5vdCBkcmluayB0aGUgd2luZSB0aGVyZW9mLgpUaGUgZ3JlYXQgZGF5IG9mIHRoZSBMT1JEIFtpc10gbmVhciwgW2l0IGlzXSBuZWFyLCBhbmQgaGFzdGV0aCBncmVhdGx5LCBbZXZlbl0gdGhlIHZvaWNlIG9mIHRoZSBkYXkgb2YgdGhlIExPUkQ6IHRoZSBtaWdodHkgbWFuIHNoYWxsIGNyeSB0aGVyZSBiaXR0ZXJseS4KVGhhdCBkYXkgW2lzXSBhIGRheSBvZiB3cmF0aCwgYSBkYXkgb2YgdHJvdWJsZSBhbmQgZGlzdHJlc3MsIGEgZGF5IG9mIHdhc3RlbmVzcyBhbmQgZGVzb2xhdGlvbiwgYSBkYXkgb2YgZGFya25lc3MgYW5kIGdsb29taW5lc3MsIGEgZGF5IG9mIGNsb3VkcyBhbmQgdGhpY2sgZGFya25lc3MsCkEgZGF5IG9mIHRoZSB0cnVtcGV0IGFuZCBhbGFybSBhZ2FpbnN0IHRoZSBmZW5jZWQgY2l0aWVzLCBhbmQgYWdhaW5zdCB0aGUgaGlnaCB0b3dlcnMuCkFuZCBJIHdpbGwgYnJpbmcgZGlzdHJlc3MgdXBvbiBtZW4sIHRoYXQgdGhleSBzaGFsbCB3YWxrIGxpa2UgYmxpbmQgbWVuLCBiZWNhdXNlIHRoZXkgaGF2ZSBzaW5uZWQgYWdhaW5zdCB0aGUgTE9SRDogYW5kIHRoZWlyIGJsb29kIHNoYWxsIGJlIHBvdXJlZCBvdXQgYXMgZHVzdCwgYW5kIHRoZWlyIGZsZXNoIGFzIHRoZSBkdW5nLgpOZWl0aGVyIHRoZWlyIHNpbHZlciBub3IgdGhlaXIgZ29sZCBzaGFsbCBiZSBhYmxlIHRvIGRlbGl2ZXIgdGhlbSBpbiB0aGUgZGF5IG9mIHRoZSBMT1JEJ1Mgd3JhdGg7IGJ1dCB0aGUgd2hvbGUgbGFuZCBzaGFsbCBiZSBkZXZvdXJlZCBieSB0aGUgZmlyZSBvZiBoaXMgamVhbG91c3k6IGZvciBoZSBzaGFsbCBtYWtlIGV2ZW4gYSBzcGVlZHkgcmlkZGFuY2Ugb2YgYWxsIHRoZW0gdGhhdCBkd2VsbCBpbiB0aGUgbGFuZC4KR2F0aGVyIHlvdXJzZWx2ZXMgdG9nZXRoZXIsIHllYSwgZ2F0aGVyIHRvZ2V0aGVyLCBPIG5hdGlvbiBub3QgZGVzaXJlZDsKQmVmb3JlIHRoZSBkZWNyZWUgYnJpbmcgZm9ydGgsIFtiZWZvcmVdIHRoZSBkYXkgcGFzcyBhcyB0aGUgY2hhZmYsIGJlZm9yZSB0aGUgZmllcmNlIGFuZ2VyIG9mIHRoZSBMT1JEIGNvbWUgdXBvbiB5b3UsIGJlZm9yZSB0aGUgZGF5IG9mIHRoZSBMT1JEJ1MgYW5nZXIgY29tZSB1cG9uIHlvdS4KU2VlayB5ZSB0aGUgTE9SRCwgYWxsIHllIG1lZWsgb2YgdGhlIGVhcnRoLCB3aGljaCBoYXZlIHdyb3VnaHQgaGlzIGp1ZGdtZW50OyBzZWVrIHJpZ2h0ZW91c25lc3MsIHNlZWsgbWVla25lc3M6IGl0IG1heSBiZSB5ZSBzaGFsbCBiZSBoaWQgaW4gdGhlIGRheSBvZiB0aGUgTE9SRCdTIGFuZ2VyLgpGb3IgR2F6YSBzaGFsbCBiZSBmb3JzYWtlbiwgYW5kIEFzaGtlbG9uIGEgZGVzb2xhdGlvbjogdGhleSBzaGFsbCBkcml2ZSBvdXQgQXNoZG9kIGF0IHRoZSBub29uIGRheSwgYW5kIEVrcm9uIHNoYWxsIGJlIHJvb3RlZCB1cC4KV29lIHVudG8gdGhlIGluaGFiaXRhbnRzIG9mIHRoZSBzZWEgY29hc3QsIHRoZSBuYXRpb24gb2YgdGhlIENoZXJldGhpdGVzISB0aGUgd29yZCBvZiB0aGUgTE9SRCBbaXNdIGFnYWluc3QgeW91OyBPIENhbmFhbiwgdGhlIGxhbmQgb2YgdGhlIFBoaWxpc3RpbmVzLCBJIHdpbGwgZXZlbiBkZXN0cm95IHRoZWUsIHRoYXQgdGhlcmUgc2hhbGwgYmUgbm8gaW5oYWJpdGFudC4KQW5kIHRoZSBzZWEgY29hc3Qgc2hhbGwgYmUgZHdlbGxpbmdzIFthbmRdIGNvdHRhZ2VzIGZvciBzaGVwaGVyZHMsIGFuZCBmb2xkcyBmb3IgZmxvY2tzLgpBbmQgdGhlIGNvYXN0IHNoYWxsIGJlIGZvciB0aGUgcmVtbmFudCBvZiB0aGUgaG91c2Ugb2YgSnVkYWg7IHRoZXkgc2hhbGwgZmVlZCB0aGVyZXVwb246IGluIHRoZSBob3VzZXMgb2YgQXNoa2Vsb24gc2hhbGwgdGhleSBsaWUgZG93biBpbiB0aGUgZXZlbmluZzogZm9yIHRoZSBMT1JEIHRoZWlyIEdvZCBzaGFsbCB2aXNpdCB0aGVtLCBhbmQgdHVybiBhd2F5IHRoZWlyIGNhcHRpdml0eS4KSSBoYXZlIGhlYXJkIHRoZSByZXByb2FjaCBvZiBNb2FiLCBhbmQgdGhlIHJldmlsaW5ncyBvZiB0aGUgY2hpbGRyZW4gb2YgQW1tb24sIHdoZXJlYnkgdGhleSBoYXZlIHJlcHJvYWNoZWQgbXkgcGVvcGxlLCBhbmQgbWFnbmlmaWVkIFt0aGVtc2VsdmVzXSBhZ2FpbnN0IHRoZWlyIGJvcmRlci4KVGhlcmVmb3JlIFthc10gSSBsaXZlLCBzYWl0aCB0aGUgTE9SRCBvZiBob3N0cywgdGhlIEdvZCBvZiBJc3JhZWwsIFN1cmVseSBNb2FiIHNoYWxsIGJlIGFzIFNvZG9tLCBhbmQgdGhlIGNoaWxkcmVuIG9mIEFtbW9uIGFzIEdvbW9ycmFoLCBbZXZlbl0gdGhlIGJyZWVkaW5nIG9mIG5ldHRsZXMsIGFuZCBzYWx0cGl0cywgYW5kIGEgcGVycGV0dWFsIGRlc29sYXRpb246IHRoZSByZXNpZHVlIG9mIG15IHBlb3BsZSBzaGFsbCBzcG9pbCB0aGVtLCBhbmQgdGhlIHJlbW5hbnQgb2YgbXkgcGVvcGxlIHNoYWxsIHBvc3Nlc3MgdGhlbS4KVGhpcyBzaGFsbCB0aGV5IGhhdmUgZm9yIHRoZWlyIHByaWRlLCBiZWNhdXNlIHRoZXkgaGF2ZSByZXByb2FjaGVkIGFuZCBtYWduaWZpZWQgW3RoZW1zZWx2ZXNdIGFnYWluc3QgdGhlIHBlb3BsZSBvZiB0aGUgTE9SRCBvZiBob3N0cy4KVGhlIExPUkQgW3dpbGwgYmVdIHRlcnJpYmxlIHVudG8gdGhlbTogZm9yIGhlIHdpbGwgZmFtaXNoIGFsbCB0aGUgZ29kcyBvZiB0aGUgZWFydGg7IGFuZCBbbWVuXSBzaGFsbCB3b3JzaGlwIGhpbSwgZXZlcnkgb25lIGZyb20gaGlzIHBsYWNlLCBbZXZlbl0gYWxsIHRoZSBpc2xlcyBvZiB0aGUgaGVhdGhlbi4KWWUgRXRoaW9waWFucyBhbHNvLCB5ZSBbc2hhbGwgYmVdIHNsYWluIGJ5IG15IHN3b3JkLgpBbmQgaGUgd2lsbCBzdHJldGNoIG91dCBoaXMgaGFuZCBhZ2FpbnN0IHRoZSBub3J0aCwgYW5kIGRlc3Ryb3kgQXNzeXJpYTsgYW5kIHdpbGwgbWFrZSBOaW5ldmVoIGEgZGVzb2xhdGlvbiwgW2FuZF0gZHJ5IGxpa2UgYSB3aWxkZXJuZXNzLgpBbmQgZmxvY2tzIHNoYWxsIGxpZSBkb3duIGluIHRoZSBtaWRzdCBvZiBoZXIsIGFsbCB0aGUgYmVhc3RzIG9mIHRoZSBuYXRpb25zOiBib3RoIHRoZSBjb3Jtb3JhbnQgYW5kIHRoZSBiaXR0ZXJuIHNoYWxsIGxvZGdlIGluIHRoZSB1cHBlciBsaW50ZWxzIG9mIGl0OyBbdGhlaXJdIHZvaWNlIHNoYWxsIHNpbmcgaW4gdGhlIHdpbmRvd3M7IGRlc29sYXRpb24gW3NoYWxsIGJlXSBpbiB0aGUgdGhyZXNob2xkczogZm9yIGhlIHNoYWxsIHVuY292ZXIgdGhlIGNlZGFyIHdvcmsuClRoaXMgW2lzXSB0aGUgcmVqb2ljaW5nIGNpdHkgdGhhdCBkd2VsdCBjYXJlbGVzc2x5LCB0aGF0IHNhaWQgaW4gaGVyIGhlYXJ0LCBJIFthbV0sIGFuZCBbdGhlcmUgaXNdIG5vbmUgYmVzaWRlIG1lOiBob3cgaXMgc2hlIGJlY29tZSBhIGRlc29sYXRpb24sIGEgcGxhY2UgZm9yIGJlYXN0cyB0byBsaWUgZG93biBpbiEgZXZlcnkgb25lIHRoYXQgcGFzc2V0aCBieSBoZXIgc2hhbGwgaGlzcywgW2FuZF0gd2FnIGhpcyBoYW5kLgpXb2UgdG8gaGVyIHRoYXQgaXMgZmlsdGh5IGFuZCBwb2xsdXRlZCwgdG8gdGhlIG9wcHJlc3NpbmcgY2l0eSEKU2hlIG9iZXllZCBub3QgdGhlIHZvaWNlOyBzaGUgcmVjZWl2ZWQgbm90IGNvcnJlY3Rpb247IHNoZSB0cnVzdGVkIG5vdCBpbiB0aGUgTE9SRDsgc2hlIGRyZXcgbm90IG5lYXIgdG8gaGVyIEdvZC4KSGVyIHByaW5jZXMgd2l0aGluIGhlciBbYXJlXSByb2FyaW5nIGxpb25zOyBoZXIganVkZ2VzIFthcmVdIGV2ZW5pbmcgd29sdmVzOyB0aGV5IGduYXcgbm90IHRoZSBib25lcyB0aWxsIHRoZSBtb3Jyb3cuCkhlciBwcm9waGV0cyBbYXJlXSBsaWdodCBbYW5kXSB0cmVhY2hlcm91cyBwZXJzb25zOiBoZXIgcHJpZXN0cyBoYXZlIHBvbGx1dGVkIHRoZSBzYW5jdHVhcnksIHRoZXkgaGF2ZSBkb25lIHZpb2xlbmNlIHRvIHRoZSBsYXcuClRoZSBqdXN0IExPUkQgW2lzXSBpbiB0aGUgbWlkc3QgdGhlcmVvZjsgaGUgd2lsbCBub3QgZG8gaW5pcXVpdHk6IGV2ZXJ5IG1vcm5pbmcgZG90aCBoZSBicmluZyBoaXMganVkZ21lbnQgdG8gbGlnaHQsIGhlIGZhaWxldGggbm90OyBidXQgdGhlIHVuanVzdCBrbm93ZXRoIG5vIHNoYW1lLgpJIGhhdmUgY3V0IG9mZiB0aGUgbmF0aW9uczogdGhlaXIgdG93ZXJzIGFyZSBkZXNvbGF0ZTsgSSBtYWRlIHRoZWlyIHN0cmVldHMgd2FzdGUsIHRoYXQgbm9uZSBwYXNzZXRoIGJ5OiB0aGVpciBjaXRpZXMgYXJlIGRlc3Ryb3llZCwgc28gdGhhdCB0aGVyZSBpcyBubyBtYW4sIHRoYXQgdGhlcmUgaXMgbm9uZSBpbmhhYml0YW50LgpJIHNhaWQsIFN1cmVseSB0aG91IHdpbHQgZmVhciBtZSwgdGhvdSB3aWx0IHJlY2VpdmUgaW5zdHJ1Y3Rpb247IHNvIHRoZWlyIGR3ZWxsaW5nIHNob3VsZCBub3QgYmUgY3V0IG9mZiwgaG93c29ldmVyIEkgcHVuaXNoZWQgdGhlbTogYnV0IHRoZXkgcm9zZSBlYXJseSwgW2FuZF0gY29ycnVwdGVkIGFsbCB0aGVpciBkb2luZ3MuClRoZXJlZm9yZSB3YWl0IHllIHVwb24gbWUsIHNhaXRoIHRoZSBMT1JELCB1bnRpbCB0aGUgZGF5IHRoYXQgSSByaXNlIHVwIHRvIHRoZSBwcmV5OiBmb3IgbXkgZGV0ZXJtaW5hdGlvbiBbaXNdIHRvIGdhdGhlciB0aGUgbmF0aW9ucywgdGhhdCBJIG1heSBhc3NlbWJsZSB0aGUga2luZ2RvbXMsIHRvIHBvdXIgdXBvbiB0aGVtIG1pbmUgaW5kaWduYXRpb24sIFtldmVuXSBhbGwgbXkgZmllcmNlIGFuZ2VyOiBmb3IgYWxsIHRoZSBlYXJ0aCBzaGFsbCBiZSBkZXZvdXJlZCB3aXRoIHRoZSBmaXJlIG9mIG15IGplYWxvdXN5LgpGb3IgdGhlbiB3aWxsIEkgdHVybiB0byB0aGUgcGVvcGxlIGEgcHVyZSBsYW5ndWFnZSwgdGhhdCB0aGV5IG1heSBhbGwgY2FsbCB1cG9uIHRoZSBuYW1lIG9mIHRoZSBMT1JELCB0byBzZXJ2ZSBoaW0gd2l0aCBvbmUgY29uc2VudC4KRnJvbSBiZXlvbmQgdGhlIHJpdmVycyBvZiBFdGhpb3BpYSBteSBzdXBwbGlhbnRzLCBbZXZlbl0gdGhlIGRhdWdodGVyIG9mIG15IGRpc3BlcnNlZCwgc2hhbGwgYnJpbmcgbWluZSBvZmZlcmluZy4KSW4gdGhhdCBkYXkgc2hhbHQgdGhvdSBub3QgYmUgYXNoYW1lZCBmb3IgYWxsIHRoeSBkb2luZ3MsIHdoZXJlaW4gdGhvdSBoYXN0IHRyYW5zZ3Jlc3NlZCBhZ2FpbnN0IG1lOiBmb3IgdGhlbiBJIHdpbGwgdGFrZSBhd2F5IG91dCBvZiB0aGUgbWlkc3Qgb2YgdGhlZSB0aGVtIHRoYXQgcmVqb2ljZSBpbiB0aHkgcHJpZGUsIGFuZCB0aG91IHNoYWx0IG5vIG1vcmUgYmUgaGF1Z2h0eSBiZWNhdXNlIG9mIG15IGhvbHkgbW91bnRhaW4uCkkgd2lsbCBhbHNvIGxlYXZlIGluIHRoZSBtaWRzdCBvZiB0aGVlIGFuIGFmZmxpY3RlZCBhbmQgcG9vciBwZW9wbGUsIGFuZCB0aGV5IHNoYWxsIHRydXN0IGluIHRoZSBuYW1lIG9mIHRoZSBMT1JELgpUaGUgcmVtbmFudCBvZiBJc3JhZWwgc2hhbGwgbm90IGRvIGluaXF1aXR5LCBub3Igc3BlYWsgbGllczsgbmVpdGhlciBzaGFsbCBhIGRlY2VpdGZ1bCB0b25ndWUgYmUgZm91bmQgaW4gdGhlaXIgbW91dGg6IGZvciB0aGV5IHNoYWxsIGZlZWQgYW5kIGxpZSBkb3duLCBhbmQgbm9uZSBzaGFsbCBtYWtlIFt0aGVtXSBhZnJhaWQuClNpbmcsIE8gZGF1Z2h0ZXIgb2YgWmlvbjsgc2hvdXQsIE8gSXNyYWVsOyBiZSBnbGFkIGFuZCByZWpvaWNlIHdpdGggYWxsIHRoZSBoZWFydCwgTyBkYXVnaHRlciBvZiBKZXJ1c2FsZW0uClRoZSBMT1JEIGhhdGggdGFrZW4gYXdheSB0aHkganVkZ21lbnRzLCBoZSBoYXRoIGNhc3Qgb3V0IHRoaW5lIGVuZW15OiB0aGUga2luZyBvZiBJc3JhZWwsIFtldmVuXSB0aGUgTE9SRCwgW2lzXSBpbiB0aGUgbWlkc3Qgb2YgdGhlZTogdGhvdSBzaGFsdCBub3Qgc2VlIGV2aWwgYW55IG1vcmUuCkluIHRoYXQgZGF5IGl0IHNoYWxsIGJlIHNhaWQgdG8gSmVydXNhbGVtLCBGZWFyIHRob3Ugbm90OiBbYW5kIHRvXSBaaW9uLCBMZXQgbm90IHRoaW5lIGhhbmRzIGJlIHNsYWNrLgpUaGUgTE9SRCB0aHkgR29kIGluIHRoZSBtaWRzdCBvZiB0aGVlIFtpc10gbWlnaHR5OyBoZSB3aWxsIHNhdmUsIGhlIHdpbGwgcmVqb2ljZSBvdmVyIHRoZWUgd2l0aCBqb3k7IGhlIHdpbGwgcmVzdCBpbiBoaXMgbG92ZSwgaGUgd2lsbCBqb3kgb3ZlciB0aGVlIHdpdGggc2luZ2luZy4KSSB3aWxsIGdhdGhlciBbdGhlbSB0aGF0IGFyZV0gc29ycm93ZnVsIGZvciB0aGUgc29sZW1uIGFzc2VtYmx5LCBbd2hvXSBhcmUgb2YgdGhlZSwgW3RvIHdob21dIHRoZSByZXByb2FjaCBvZiBpdCBbd2FzXSBhIGJ1cmRlbi4KQmVob2xkLCBhdCB0aGF0IHRpbWUgSSB3aWxsIHVuZG8gYWxsIHRoYXQgYWZmbGljdCB0aGVlOiBhbmQgSSB3aWxsIHNhdmUgaGVyIHRoYXQgaGFsdGV0aCwgYW5kIGdhdGhlciBoZXIgdGhhdCB3YXMgZHJpdmVuIG91dDsgYW5kIEkgd2lsbCBnZXQgdGhlbSBwcmFpc2UgYW5kIGZhbWUgaW4gZXZlcnkgbGFuZCB3aGVyZSB0aGV5IGhhdmUgYmVlbiBwdXQgdG8gc2hhbWUuCkF0IHRoYXQgdGltZSB3aWxsIEkgYnJpbmcgeW91IFthZ2Fpbl0sIGV2ZW4gaW4gdGhlIHRpbWUgdGhhdCBJIGdhdGhlciB5b3U6IGZvciBJIHdpbGwgbWFrZSB5b3UgYSBuYW1lIGFuZCBhIHByYWlzZSBhbW9uZyBhbGwgcGVvcGxlIG9mIHRoZSBlYXJ0aCwgd2hlbiBJIHR1cm4gYmFjayB5b3VyIGNhcHRpdml0eSBiZWZvcmUgeW91ciBleWVzLCBzYWl0aCB0aGUgTE9SRC4KSW4gdGhlIHNlY29uZCB5ZWFyIG9mIERhcml1cyB0aGUga2luZywgaW4gdGhlIHNpeHRoIG1vbnRoLCBpbiB0aGUgZmlyc3QgZGF5IG9mIHRoZSBtb250aCwgY2FtZSB0aGUgd29yZCBvZiB0aGUgTE9SRCBieSBIYWdnYWkgdGhlIHByb3BoZXQgdW50byBaZXJ1YmJhYmVsIHRoZSBzb24gb2YgU2hlYWx0aWVsLCBnb3Zlcm5vciBvZiBKdWRhaCwgYW5kIHRvIEpvc2h1YSB0aGUgc29uIG9mIEpvc2VkZWNoLCB0aGUgaGlnaCBwcmllc3QsIHNheWluZywKVGh1cyBzcGVha2V0aCB0aGUgTE9SRCBvZiBob3N0cywgc2F5aW5nLCBUaGlzIHBlb3BsZSBzYXksIFRoZSB0aW1lIGlzIG5vdCBjb21lLCB0aGUgdGltZSB0aGF0IHRoZSBMT1JEJ3MgaG91c2Ugc2hvdWxkIGJlIGJ1aWx0LgpUaGVuIGNhbWUgdGhlIHdvcmQgb2YgdGhlIExPUkQgYnkgSGFnZ2FpIHRoZSBwcm9waGV0LCBzYXlpbmcsCklzIGl0IHRpbWUgZm9yIHlvdSwgTyB5ZSwgdG8gZHdlbGwgaW4geW91ciBjaWVsZWQgaG91c2VzLCBhbmQgdGhpcyBob3VzZSBsaWUgd2FzdGU/Ck5vdyB0aGVyZWZvcmUgdGh1cyBzYWl0aCB0aGUgTE9SRCBvZiBob3N0czsgQ29uc2lkZXIgeW91ciB3YXlzLgpZZSBoYXZlIHNvd24gbXVjaCwgYW5kIGJyaW5nIGluIGxpdHRsZTsgeWUgZWF0LCBidXQgeWUgaGF2ZSBub3QgZW5vdWdoOyB5ZSBkcmluaywgYnV0IHllIGFyZSBub3QgZmlsbGVkIHdpdGggZHJpbms7IHllIGNsb3RoZSB5b3UsIGJ1dCB0aGVyZSBpcyBub25lIHdhcm07IGFuZCBoZSB0aGF0IGVhcm5ldGggd2FnZXMgZWFybmV0aCB3YWdlcyB0byBwdXQgaXQgaW50byBhIGJhZyB3aXRoIGhvbGVzLgpUaHVzIHNhaXRoIHRoZSBMT1JEIG9mIGhvc3RzOyBDb25zaWRlciB5b3VyIHdheXMuCkdvIHVwIHRvIHRoZSBtb3VudGFpbiwgYW5kIGJyaW5nIHdvb2QsIGFuZCBidWlsZCB0aGUgaG91c2U7IGFuZCBJIHdpbGwgdGFrZSBwbGVhc3VyZSBpbiBpdCwgYW5kIEkgd2lsbCBiZSBnbG9yaWZpZWQsIHNhaXRoIHRoZSBMT1JELgpZZSBsb29rZWQgZm9yIG11Y2gsIGFuZCwgbG8gaXQgY2FtZSB0byBsaXR0bGU7IGFuZCB3aGVuIHllIGJyb3VnaHQgaXQgaG9tZSwgSSBkaWQgYmxvdyB1cG9uIGl0LiBXaHk/IHNhaXRoIHRoZSBMT1JEIG9mIGhvc3RzLiBCZWNhdXNlIG9mIG1pbmUgaG91c2UgdGhhdCBpcyB3YXN0ZSwgYW5kIHllIHJ1biBldmVyeSBtYW4gdW50byBoaXMgb3duIGhvdXNlLgpUaGVyZWZvcmUgdGhlIGhlYXZlbiBvdmVyIHlvdSBpcyBzdGF5ZWQgZnJvbSBkZXcsIGFuZCB0aGUgZWFydGggaXMgc3RheWVkIGZyb20gaGVyIGZydWl0LgpBbmQgSSBjYWxsZWQgZm9yIGEgZHJvdWdodCB1cG9uIHRoZSBsYW5kLCBhbmQgdXBvbiB0aGUgbW91bnRhaW5zLCBhbmQgdXBvbiB0aGUgY29ybiwgYW5kIHVwb24gdGhlIG5ldyB3aW5lLCBhbmQgdXBvbiB0aGUgb2lsLCBhbmQgdXBvbiB0aGF0IHdoaWNoIHRoZSBncm91bmQgYnJpbmdldGggZm9ydGgsIGFuZCB1cG9uIG1lbiwgYW5kIHVwb24gY2F0dGxlLCBhbmQgdXBvbiBhbGwgdGhlIGxhYm91ciBvZiB0aGUgaGFuZHMuClRoZW4gWmVydWJiYWJlbCB0aGUgc29uIG9mIFNoZWFsdGllbCwgYW5kIEpvc2h1YSB0aGUgc29uIG9mIEpvc2VkZWNoLCB0aGUgaGlnaCBwcmllc3QsIHdpdGggYWxsIHRoZSByZW1uYW50IG9mIHRoZSBwZW9wbGUsIG9iZXllZCB0aGUgdm9pY2Ugb2YgdGhlIExPUkQgdGhlaXIgR29kLCBhbmQgdGhlIHdvcmRzIG9mIEhhZ2dhaSB0aGUgcHJvcGhldCwgYXMgdGhlIExPUkQgdGhlaXIgR29kIGhhZCBzZW50IGhpbSwgYW5kIHRoZSBwZW9wbGUgZGlkIGZlYXIgYmVmb3JlIHRoZSBMT1JELgpUaGVuIHNwYWtlIEhhZ2dhaSB0aGUgTE9SRCdzIG1lc3NlbmdlciBpbiB0aGUgTE9SRCdzIG1lc3NhZ2UgdW50byB0aGUgcGVvcGxlLCBzYXlpbmcsIEkgYW0gd2l0aCB5b3UsIHNhaXRoIHRoZSBMT1JELgpBbmQgdGhlIExPUkQgc3RpcnJlZCB1cCB0aGUgc3Bpcml0IG9mIFplcnViYmFiZWwgdGhlIHNvbiBvZiBTaGVhbHRpZWwsIGdvdmVybm9yIG9mIEp1ZGFoLCBhbmQgdGhlIHNwaXJpdCBvZiBKb3NodWEgdGhlIHNvbiBvZiBKb3NlZGVjaCwgdGhlIGhpZ2ggcHJpZXN0LCBhbmQgdGhlIHNwaXJpdCBvZiBhbGwgdGhlIHJlbW5hbnQgb2YgdGhlIHBlb3BsZTsgYW5kIHRoZXkgY2FtZSBhbmQgZGlkIHdvcmsgaW4gdGhlIGhvdXNlIG9mIHRoZSBMT1JEIG9mIGhvc3RzLCB0aGVpciBHb2QsCkluIHRoZSBmb3VyIGFuZCB0d2VudGlldGggZGF5IG9mIHRoZSBzaXh0aCBtb250aCwgaW4gdGhlIHNlY29uZCB5ZWFyIG9mIERhcml1cyB0aGUga2luZy4KSW4gdGhlIHNldmVudGggbW9udGgsIGluIHRoZSBvbmUgYW5kIHR3ZW50aWV0aCBkYXkgb2YgdGhlIG1vbnRoLCBjYW1lIHRoZSB3b3JkIG9mIHRoZSBMT1JEIGJ5IHRoZSBwcm9waGV0IEhhZ2dhaSwgc2F5aW5nLApTcGVhayBub3cgdG8gWmVydWJiYWJlbCB0aGUgc29uIG9mIFNoZWFsdGllbCwgZ292ZXJub3Igb2YgSnVkYWgsIGFuZCB0byBKb3NodWEgdGhlIHNvbiBvZiBKb3NlZGVjaCwgdGhlIGhpZ2ggcHJpZXN0LCBhbmQgdG8gdGhlIHJlc2lkdWUgb2YgdGhlIHBlb3BsZSwgc2F5aW5nLApXaG8gaXMgbGVmdCBhbW9uZyB5b3UgdGhhdCBzYXcgdGhpcyBob3VzZSBpbiBoZXIgZmlyc3QgZ2xvcnk/IGFuZCBob3cgZG8geWUgc2VlIGl0IG5vdz8gaXMgaXQgbm90IGluIHlvdXIgZXllcyBpbiBjb21wYXJpc29uIG9mIGl0IGFzIG5vdGhpbmc/CllldCBub3cgYmUgc3Ryb25nLCBPIFplcnViYmFiZWwsIHNhaXRoIHRoZSBMT1JEOyBhbmQgYmUgc3Ryb25nLCBPIEpvc2h1YSwgc29uIG9mIEpvc2VkZWNoLCB0aGUgaGlnaCBwcmllc3Q7IGFuZCBiZSBzdHJvbmcsIGFsbCB5ZSBwZW9wbGUgb2YgdGhlIGxhbmQsIHNhaXRoIHRoZSBMT1JELCBhbmQgd29yazogZm9yIEkgYW0gd2l0aCB5b3UsIHNhaXRoIHRoZSBMT1JEIG9mIGhvc3RzOgpBY2NvcmRpbmcgdG8gdGhlIHdvcmQgdGhhdCBJIGNvdmVuYW50ZWQgd2l0aCB5b3Ugd2hlbiB5ZSBjYW1lIG91dCBvZiBFZ3lwdCwgc28gbXkgc3Bpcml0IHJlbWFpbmV0aCBhbW9uZyB5b3U6IGZlYXIgeWUgbm90LgpGb3IgdGh1cyBzYWl0aCB0aGUgTE9SRCBvZiBob3N0czsgWWV0IG9uY2UsIGl0IGlzIGEgbGl0dGxlIHdoaWxlLCBhbmQgSSB3aWxsIHNoYWtlIHRoZSBoZWF2ZW5zLCBhbmQgdGhlIGVhcnRoLCBhbmQgdGhlIHNlYSwgYW5kIHRoZSBkcnkgbGFuZDsKQW5kIEkgd2lsbCBzaGFrZSBhbGwgbmF0aW9ucywgYW5kIHRoZSBkZXNpcmUgb2YgYWxsIG5hdGlvbnMgc2hhbGwgY29tZTogYW5kIEkgd2lsbCBmaWxsIHRoaXMgaG91c2Ugd2l0aCBnbG9yeSwgc2FpdGggdGhlIExPUkQgb2YgaG9zdHMuClRoZSBzaWx2ZXIgaXMgbWluZSwgYW5kIHRoZSBnb2xkIGlzIG1pbmUsIHNhaXRoIHRoZSBMT1JEIG9mIGhvc3RzLgpUaGUgZ2xvcnkgb2YgdGhpcyBsYXR0ZXIgaG91c2Ugc2hhbGwgYmUgZ3JlYXRlciB0aGFuIG9mIHRoZSBmb3JtZXIsIHNhaXRoIHRoZSBMT1JEIG9mIGhvc3RzOiBhbmQgaW4gdGhpcyBwbGFjZSB3aWxsIEkgZ2l2ZSBwZWFjZSwgc2FpdGggdGhlIExPUkQgb2YgaG9zdHMuCkluIHRoZSBmb3VyIGFuZCB0d2VudGlldGggZGF5IG9mIHRoZSBuaW50aCBtb250aCwgaW4gdGhlIHNlY29uZCB5ZWFyIG9mIERhcml1cywgY2FtZSB0aGUgd29yZCBvZiB0aGUgTE9SRCBieSBIYWdnYWkgdGhlIHByb3BoZXQsIHNheWluZywKVGh1cyBzYWl0aCB0aGUgTE9SRCBvZiBob3N0czsgQXNrIG5vdyB0aGUgcHJpZXN0cyBjb25jZXJuaW5nIHRoZSBsYXcsIHNheWluZywKSWYgb25lIGJlYXIgaG9seSBmbGVzaCBpbiB0aGUgc2tpcnQgb2YgaGlzIGdhcm1lbnQsIGFuZCB3aXRoIGhpcyBza2lydCBkbyB0b3VjaCBicmVhZCwgb3IgcG90dGFnZSwgb3Igd2luZSwgb3Igb2lsLCBvciBhbnkgbWVhdCwgc2hhbGwgaXQgYmUgaG9seT8gQW5kIHRoZSBwcmllc3RzIGFuc3dlcmVkIGFuZCBzYWlkLCBOby4KVGhlbiBzYWlkIEhhZ2dhaSwgSWYgb25lIHRoYXQgaXMgdW5jbGVhbiBieSBhIGRlYWQgYm9keSB0b3VjaCBhbnkgb2YgdGhlc2UsIHNoYWxsIGl0IGJlIHVuY2xlYW4/IEFuZCB0aGUgcHJpZXN0cyBhbnN3ZXJlZCBhbmQgc2FpZCwgSXQgc2hhbGwgYmUgdW5jbGVhbi4KVGhlbiBhbnN3ZXJlZCBIYWdnYWksIGFuZCBzYWlkLCBTbyBpcyB0aGlzIHBlb3BsZSwgYW5kIHNvIGlzIHRoaXMgbmF0aW9uIGJlZm9yZSBtZSwgc2FpdGggdGhlIExPUkQ7IGFuZCBzbyBpcyBldmVyeSB3b3JrIG9mIHRoZWlyIGhhbmRzOyBhbmQgdGhhdCB3aGljaCB0aGV5IG9mZmVyIHRoZXJlIGlzIHVuY2xlYW4uCkFuZCBub3csIEkgcHJheSB5b3UsIGNvbnNpZGVyIGZyb20gdGhpcyBkYXkgYW5kIHVwd2FyZCwgZnJvbSBiZWZvcmUgYSBzdG9uZSB3YXMgbGFpZCB1cG9uIGEgc3RvbmUgaW4gdGhlIHRlbXBsZSBvZiB0aGUgTE9SRDoKU2luY2UgdGhvc2UgZGF5cyB3ZXJlLCB3aGVuIG9uZSBjYW1lIHRvIGFuIGhlYXAgb2YgdHdlbnR5IG1lYXN1cmVzLCB0aGVyZSB3ZXJlIGJ1dCB0ZW46IHdoZW4gb25lIGNhbWUgdG8gdGhlIHByZXNzZmF0IGZvciB0byBkcmF3IG91dCBmaWZ0eSB2ZXNzZWxzIG91dCBvZiB0aGUgcHJlc3MsIHRoZXJlIHdlcmUgYnV0IHR3ZW50eS4KSSBzbW90ZSB5b3Ugd2l0aCBibGFzdGluZyBhbmQgd2l0aCBtaWxkZXcgYW5kIHdpdGggaGFpbCBpbiBhbGwgdGhlIGxhYm91cnMgb2YgeW91ciBoYW5kczsgeWV0IHllIHR1cm5lZCBub3QgdG8gbWUsIHNhaXRoIHRoZSBMT1JELgpDb25zaWRlciBub3cgZnJvbSB0aGlzIGRheSBhbmQgdXB3YXJkLCBmcm9tIHRoZSBmb3VyIGFuZCB0d2VudGlldGggZGF5IG9mIHRoZSBuaW50aCBtb250aCwgZXZlbiBmcm9tIHRoZSBkYXkgdGhhdCB0aGUgZm91bmRhdGlvbiBvZiB0aGUgTE9SRCdzIHRlbXBsZSB3YXMgbGFpZCwgY29uc2lkZXIgaXQuCklzIHRoZSBzZWVkIHlldCBpbiB0aGUgYmFybj8geWVhLCBhcyB5ZXQgdGhlIHZpbmUsIGFuZCB0aGUgZmlnIHRyZWUsIGFuZCB0aGUgcG9tZWdyYW5hdGUsIGFuZCB0aGUgb2xpdmUgdHJlZSwgaGF0aCBub3QgYnJvdWdodCBmb3J0aDogZnJvbSB0aGlzIGRheSB3aWxsIEkgYmxlc3MgeW91LgpBbmQgYWdhaW4gdGhlIHdvcmQgb2YgdGhlIExPUkQgY2FtZSB1bnRvIEhhZ2dhaSBpbiB0aGUgZm91ciBhbmQgdHdlbnRpZXRoIGRheSBvZiB0aGUgbW9udGgsIHNheWluZywKU3BlYWsgdG8gWmVydWJiYWJlbCwgZ292ZXJub3Igb2YgSnVkYWgsIHNheWluZywgSSB3aWxsIHNoYWtlIHRoZSBoZWF2ZW5zIGFuZCB0aGUgZWFydGg7CkFuZCBJIHdpbGwgb3ZlcnRocm93IHRoZSB0aHJvbmUgb2Yga2luZ2RvbXMsIGFuZCBJIHdpbGwgZGVzdHJveSB0aGUgc3RyZW5ndGggb2YgdGhlIGtpbmdkb21zIG9mIHRoZSBoZWF0aGVuOyBhbmQgSSB3aWxsIG92ZXJ0aHJvdyB0aGUgY2hhcmlvdHMsIGFuZCB0aG9zZSB0aGF0IHJpZGUgaW4gdGhlbTsgYW5kIHRoZSBob3JzZXMgYW5kIHRoZWlyIHJpZGVycyBzaGFsbCBjb21lIGRvd24sIGV2ZXJ5IG9uZSBieSB0aGUgc3dvcmQgb2YgaGlzIGJyb3RoZXIuCkluIHRoYXQgZGF5LCBzYWl0aCB0aGUgTE9SRCBvZiBob3N0cywgd2lsbCBJIHRha2UgdGhlZSwgTyBaZXJ1YmJhYmVsLCBteSBzZXJ2YW50LCB0aGUgc29uIG9mIFNoZWFsdGllbCwgc2FpdGggdGhlIExPUkQsIGFuZCB3aWxsIG1ha2UgdGhlZSBhcyBhIHNpZ25ldDogZm9yIEkgaGF2ZSBjaG9zZW4gdGhlZSwgc2FpdGggdGhlIExPUkQgb2YgaG9zdHMuCkluIHRoZSBlaWdodGggbW9udGgsIGluIHRoZSBzZWNvbmQgeWVhciBvZiBEYXJpdXMsIGNhbWUgdGhlIHdvcmQgb2YgdGhlIExPUkQgdW50byBaZWNoYXJpYWgsIHRoZSBzb24gb2YgQmVyZWNoaWFoLCB0aGUgc29uIG9mIElkZG8gdGhlIHByb3BoZXQsIHNheWluZywKVGhlIExPUkQgaGF0aCBiZWVuIHNvcmUgZGlzcGxlYXNlZCB3aXRoIHlvdXIgZmF0aGVycy4KVGhlcmVmb3JlIHNheSB0aG91IHVudG8gdGhlbSwgVGh1cyBzYWl0aCB0aGUgTE9SRCBvZiBob3N0czsgVHVybiB5ZSB1bnRvIG1lLCBzYWl0aCB0aGUgTE9SRCBvZiBob3N0cywgYW5kIEkgd2lsbCB0dXJuIHVudG8geW91LCBzYWl0aCB0aGUgTE9SRCBvZiBob3N0cy4KQmUgeWUgbm90IGFzIHlvdXIgZmF0aGVycywgdW50byB3aG9tIHRoZSBmb3JtZXIgcHJvcGhldHMgaGF2ZSBjcmllZCwgc2F5aW5nLCBUaHVzIHNhaXRoIHRoZSBMT1JEIG9mIGhvc3RzOyBUdXJuIHllIG5vdyBmcm9tIHlvdXIgZXZpbCB3YXlzLCBhbmQgZnJvbSB5b3VyIGV2aWwgZG9pbmdzOiBidXQgdGhleSBkaWQgbm90IGhlYXIsIG5vciBoZWFya2VuIHVudG8gbWUsIHNhaXRoIHRoZSBMT1JELgpZb3VyIGZhdGhlcnMsIHdoZXJlIGFyZSB0aGV5PyBhbmQgdGhlIHByb3BoZXRzLCBkbyB0aGV5IGxpdmUgZm9yIGV2ZXI/CkJ1dCBteSB3b3JkcyBhbmQgbXkgc3RhdHV0ZXMsIHdoaWNoIEkgY29tbWFuZGVkIG15IHNlcnZhbnRzIHRoZSBwcm9waGV0cywgZGlkIHRoZXkgbm90IHRha2UgaG9sZCBvZiB5b3VyIGZhdGhlcnM/IGFuZCB0aGV5IHJldHVybmVkIGFuZCBzYWlkLCBMaWtlIGFzIHRoZSBMT1JEIG9mIGhvc3RzIHRob3VnaHQgdG8gZG8gdW50byB1cywgYWNjb3JkaW5nIHRvIG91ciB3YXlzLCBhbmQgYWNjb3JkaW5nIHRvIG91ciBkb2luZ3MsIHNvIGhhdGggaGUgZGVhbHQgd2l0aCB1cy4KVXBvbiB0aGUgZm91ciBhbmQgdHdlbnRpZXRoIGRheSBvZiB0aGUgZWxldmVudGggbW9udGgsIHdoaWNoIGlzIHRoZSBtb250aCBTZWJhdCwgaW4gdGhlIHNlY29uZCB5ZWFyIG9mIERhcml1cywgY2FtZSB0aGUgd29yZCBvZiB0aGUgTE9SRCB1bnRvIFplY2hhcmlhaCwgdGhlIHNvbiBvZiBCZXJlY2hpYWgsIHRoZSBzb24gb2YgSWRkbyB0aGUgcHJvcGhldCwgc2F5aW5nLApJIHNhdyBieSBuaWdodCwgYW5kIGJlaG9sZCBhIG1hbiByaWRpbmcgdXBvbiBhIHJlZCBob3JzZSwgYW5kIGhlIHN0b29kIGFtb25nIHRoZSBteXJ0bGUgdHJlZXMgdGhhdCB3ZXJlIGluIHRoZSBib3R0b207IGFuZCBiZWhpbmQgaGltIHdlcmUgdGhlcmUgcmVkIGhvcnNlcywgc3BlY2tsZWQsIGFuZCB3aGl0ZS4KVGhlbiBzYWlkIEksIE8gbXkgbG9yZCwgd2hhdCBhcmUgdGhlc2U/IEFuZCB0aGUgYW5nZWwgdGhhdCB0YWxrZWQgd2l0aCBtZSBzYWlkIHVudG8gbWUsIEkgd2lsbCBzaGV3IHRoZWUgd2hhdCB0aGVzZSBiZS4KQW5kIHRoZSBtYW4gdGhhdCBzdG9vZCBhbW9uZyB0aGUgbXlydGxlIHRyZWVzIGFuc3dlcmVkIGFuZCBzYWlkLCBUaGVzZSBhcmUgdGhleSB3aG9tIHRoZSBMT1JEIGhhdGggc2VudCB0byB3YWxrIHRvIGFuZCBmcm8gdGhyb3VnaCB0aGUgZWFydGguCkFuZCB0aGV5IGFuc3dlcmVkIHRoZSBhbmdlbCBvZiB0aGUgTE9SRCB0aGF0IHN0b29kIGFtb25nIHRoZSBteXJ0bGUgdHJlZXMsIGFuZCBzYWlkLCBXZSBoYXZlIHdhbGtlZCB0byBhbmQgZnJvIHRocm91Z2ggdGhlIGVhcnRoLCBhbmQsIGJlaG9sZCwgYWxsIHRoZSBlYXJ0aCBzaXR0ZXRoIHN0aWxsLCBhbmQgaXMgYXQgcmVzdC4KVGhlbiB0aGUgYW5nZWwgb2YgdGhlIExPUkQgYW5zd2VyZWQgYW5kIHNhaWQsIE8gTE9SRCBvZiBob3N0cywgaG93IGxvbmcgd2lsdCB0aG91IG5vdCBoYXZlIG1lcmN5IG9uIEplcnVzYWxlbSBhbmQgb24gdGhlIGNpdGllcyBvZiBKdWRhaCwgYWdhaW5zdCB3aGljaCB0aG91IGhhc3QgaGFkIGluZGlnbmF0aW9uIHRoZXNlIHRocmVlc2NvcmUgYW5kIHRlbiB5ZWFycz8KQW5kIHRoZSBMT1JEIGFuc3dlcmVkIHRoZSBhbmdlbCB0aGF0IHRhbGtlZCB3aXRoIG1lIHdpdGggZ29vZCB3b3JkcyBhbmQgY29tZm9ydGFibGUgd29yZHMuClNvIHRoZSBhbmdlbCB0aGF0IGNvbW11bmVkIHdpdGggbWUgc2FpZCB1bnRvIG1lLCBDcnkgdGhvdSwgc2F5aW5nLCBUaHVzIHNhaXRoIHRoZSBMT1JEIG9mIGhvc3RzOyBJIGFtIGplYWxvdXMgZm9yIEplcnVzYWxlbSBhbmQgZm9yIFppb24gd2l0aCBhIGdyZWF0IGplYWxvdXN5LgpBbmQgSSBhbSB2ZXJ5IHNvcmUgZGlzcGxlYXNlZCB3aXRoIHRoZSBoZWF0aGVuIHRoYXQgYXJlIGF0IGVhc2U6IGZvciBJIHdhcyBidXQgYSBsaXR0bGUgZGlzcGxlYXNlZCwgYW5kIHRoZXkgaGVscGVkIGZvcndhcmQgdGhlIGFmZmxpY3Rpb24uClRoZXJlZm9yZSB0aHVzIHNhaXRoIHRoZSBMT1JEOyBJIGFtIHJldHVybmVkIHRvIEplcnVzYWxlbSB3aXRoIG1lcmNpZXM6IG15IGhvdXNlIHNoYWxsIGJlIGJ1aWx0IGluIGl0LCBzYWl0aCB0aGUgTE9SRCBvZiBob3N0cywgYW5kIGEgbGluZSBzaGFsbCBiZSBzdHJldGNoZWQgZm9ydGggdXBvbiBKZXJ1c2FsZW0uCkNyeSB5ZXQsIHNheWluZywgVGh1cyBzYWl0aCB0aGUgTE9SRCBvZiBob3N0czsgTXkgY2l0aWVzIHRocm91Z2ggcHJvc3Blcml0eSBzaGFsbCB5ZXQgYmUgc3ByZWFkIGFicm9hZDsgYW5kIHRoZSBMT1JEIHNoYWxsIHlldCBjb21mb3J0IFppb24sIGFuZCBzaGFsbCB5ZXQgY2hvb3NlIEplcnVzYWxlbS4KVGhlbiBsaWZ0ZWQgSSB1cCBtaW5lIGV5ZXMsIGFuZCBzYXcsIGFuZCBiZWhvbGQgZm91ciBob3Jucy4KQW5kIEkgc2FpZCB1bnRvIHRoZSBhbmdlbCB0aGF0IHRhbGtlZCB3aXRoIG1lLCBXaGF0IGJlIHRoZXNlPyBBbmQgaGUgYW5zd2VyZWQgbWUsIFRoZXNlIGFyZSB0aGUgaG9ybnMgd2hpY2ggaGF2ZSBzY2F0dGVyZWQgSnVkYWgsIElzcmFlbCwgYW5kIEplcnVzYWxlbS4KQW5kIHRoZSBMT1JEIHNoZXdlZCBtZSBmb3VyIGNhcnBlbnRlcnMuClRoZW4gc2FpZCBJLCBXaGF0IGNvbWUgdGhlc2UgdG8gZG8/IEFuZCBoZSBzcGFrZSwgc2F5aW5nLCBUaGVzZSBhcmUgdGhlIGhvcm5zIHdoaWNoIGhhdmUgc2NhdHRlcmVkIEp1ZGFoLCBzbyB0aGF0IG5vIG1hbiBkaWQgbGlmdCB1cCBoaXMgaGVhZDogYnV0IHRoZXNlIGFyZSBjb21lIHRvIGZyYXkgdGhlbSwgdG8gY2FzdCBvdXQgdGhlIGhvcm5zIG9mIHRoZSBHZW50aWxlcywgd2hpY2ggbGlmdGVkIHVwIHRoZWlyIGhvcm4gb3ZlciB0aGUgbGFuZCBvZiBKdWRhaCB0byBzY2F0dGVyIGl0LgpJIGxpZnRlZCB1cCBtaW5lIGV5ZXMgYWdhaW4sIGFuZCBsb29rZWQsIGFuZCBiZWhvbGQgYSBtYW4gd2l0aCBhIG1lYXN1cmluZyBsaW5lIGluIGhpcyBoYW5kLgpUaGVuIHNhaWQgSSwgV2hpdGhlciBnb2VzdCB0aG91PyBBbmQgaGUgc2FpZCB1bnRvIG1lLCBUbyBtZWFzdXJlIEplcnVzYWxlbSwgdG8gc2VlIHdoYXQgaXMgdGhlIGJyZWFkdGggdGhlcmVvZiwgYW5kIHdoYXQgaXMgdGhlIGxlbmd0aCB0aGVyZW9mLgpBbmQsIGJlaG9sZCwgdGhlIGFuZ2VsIHRoYXQgdGFsa2VkIHdpdGggbWUgd2VudCBmb3J0aCwgYW5kIGFub3RoZXIgYW5nZWwgd2VudCBvdXQgdG8gbWVldCBoaW0sCkFuZCBzYWlkIHVudG8gaGltLCBSdW4sIHNwZWFrIHRvIHRoaXMgeW91bmcgbWFuLCBzYXlpbmcsIEplcnVzYWxlbSBzaGFsbCBiZSBpbmhhYml0ZWQgYXMgdG93bnMgd2l0aG91dCB3YWxscyBmb3IgdGhlIG11bHRpdHVkZSBvZiBtZW4gYW5kIGNhdHRsZSB0aGVyZWluOgpGb3IgSSwgc2FpdGggdGhlIExPUkQsIHdpbGwgYmUgdW50byBoZXIgYSB3YWxsIG9mIGZpcmUgcm91bmQgYWJvdXQsIGFuZCB3aWxsIGJlIHRoZSBnbG9yeSBpbiB0aGUgbWlkc3Qgb2YgaGVyLgpIbywgaG8sIGNvbWUgZm9ydGgsIGFuZCBmbGVlIGZyb20gdGhlIGxhbmQgb2YgdGhlIG5vcnRoLCBzYWl0aCB0aGUgTE9SRDogZm9yIEkgaGF2ZSBzcHJlYWQgeW91IGFicm9hZCBhcyB0aGUgZm91ciB3aW5kcyBvZiB0aGUgaGVhdmVuLCBzYWl0aCB0aGUgTE9SRC4KRGVsaXZlciB0aHlzZWxmLCBPIFppb24sIHRoYXQgZHdlbGxlc3Qgd2l0aCB0aGUgZGF1Z2h0ZXIgb2YgQmFieWxvbi4KRm9yIHRodXMgc2FpdGggdGhlIExPUkQgb2YgaG9zdHM7IEFmdGVyIHRoZSBnbG9yeSBoYXRoIGhlIHNlbnQgbWUgdW50byB0aGUgbmF0aW9ucyB3aGljaCBzcG9pbGVkIHlvdTogZm9yIGhlIHRoYXQgdG91Y2hldGggeW91IHRvdWNoZXRoIHRoZSBhcHBsZSBvZiBoaXMgZXllLgpGb3IsIGJlaG9sZCwgSSB3aWxsIHNoYWtlIG1pbmUgaGFuZCB1cG9uIHRoZW0sIGFuZCB0aGV5IHNoYWxsIGJlIGEgc3BvaWwgdG8gdGhlaXIgc2VydmFudHM6IGFuZCB5ZSBzaGFsbCBrbm93IHRoYXQgdGhlIExPUkQgb2YgaG9zdHMgaGF0aCBzZW50IG1lLgpTaW5nIGFuZCByZWpvaWNlLCBPIGRhdWdodGVyIG9mIFppb246IGZvciwgbG8sIEkgY29tZSwgYW5kIEkgd2lsbCBkd2VsbCBpbiB0aGUgbWlkc3Qgb2YgdGhlZSwgc2FpdGggdGhlIExPUkQuCkFuZCBtYW55IG5hdGlvbnMgc2hhbGwgYmUgam9pbmVkIHRvIHRoZSBMT1JEIGluIHRoYXQgZGF5LCBhbmQgc2hhbGwgYmUgbXkgcGVvcGxlOiBhbmQgSSB3aWxsIGR3ZWxsIGluIHRoZSBtaWRzdCBvZiB0aGVlLCBhbmQgdGhvdSBzaGFsdCBrbm93IHRoYXQgdGhlIExPUkQgb2YgaG9zdHMgaGF0aCBzZW50IG1lIHVudG8gdGhlZS4KQW5kIHRoZSBMT1JEIHNoYWxsIGluaGVyaXQgSnVkYWggaGlzIHBvcnRpb24gaW4gdGhlIGhvbHkgbGFuZCwgYW5kIHNoYWxsIGNob29zZSBKZXJ1c2FsZW0gYWdhaW4uCkJlIHNpbGVudCwgTyBhbGwgZmxlc2gsIGJlZm9yZSB0aGUgTE9SRDogZm9yIGhlIGlzIHJhaXNlZCB1cCBvdXQgb2YgaGlzIGhvbHkgaGFiaXRhdGlvbi4KQW5kIGhlIHNoZXdlZCBtZSBKb3NodWEgdGhlIGhpZ2ggcHJpZXN0IHN0YW5kaW5nIGJlZm9yZSB0aGUgYW5nZWwgb2YgdGhlIExPUkQsIGFuZCBTYXRhbiBzdGFuZGluZyBhdCBoaXMgcmlnaHQgaGFuZCB0byByZXNpc3QgaGltLgpBbmQgdGhlIExPUkQgc2FpZCB1bnRvIFNhdGFuLCBUaGUgTE9SRCByZWJ1a2UgdGhlZSwgTyBTYXRhbjsgZXZlbiB0aGUgTE9SRCB0aGF0IGhhdGggY2hvc2VuIEplcnVzYWxlbSByZWJ1a2UgdGhlZTogaXMgbm90IHRoaXMgYSBicmFuZCBwbHVja2VkIG91dCBvZiB0aGUgZmlyZT8KTm93IEpvc2h1YSB3YXMgY2xvdGhlZCB3aXRoIGZpbHRoeSBnYXJtZW50cywgYW5kIHN0b29kIGJlZm9yZSB0aGUgYW5nZWwuCkFuZCBoZSBhbnN3ZXJlZCBhbmQgc3Bha2UgdW50byB0aG9zZSB0aGF0IHN0b29kIGJlZm9yZSBoaW0sIHNheWluZywgVGFrZSBhd2F5IHRoZSBmaWx0aHkgZ2FybWVudHMgZnJvbSBoaW0uIEFuZCB1bnRvIGhpbSBoZSBzYWlkLCBCZWhvbGQsIEkgaGF2ZSBjYXVzZWQgdGhpbmUgaW5pcXVpdHkgdG8gcGFzcyBmcm9tIHRoZWUsIGFuZCBJIHdpbGwgY2xvdGhlIHRoZWUgd2l0aCBjaGFuZ2Ugb2YgcmFpbWVudC4KQW5kIEkgc2FpZCwgTGV0IHRoZW0gc2V0IGEgZmFpciBtaXRyZSB1cG9uIGhpcyBoZWFkLiBTbyB0aGV5IHNldCBhIGZhaXIgbWl0cmUgdXBvbiBoaXMgaGVhZCwgYW5kIGNsb3RoZWQgaGltIHdpdGggZ2FybWVudHMuIEFuZCB0aGUgYW5nZWwgb2YgdGhlIExPUkQgc3Rvb2QgYnkuCkFuZCB0aGUgYW5nZWwgb2YgdGhlIExPUkQgcHJvdGVzdGVkIHVudG8gSm9zaHVhLCBzYXlpbmcsClRodXMgc2FpdGggdGhlIExPUkQgb2YgaG9zdHM7IElmIHRob3Ugd2lsdCB3YWxrIGluIG15IHdheXMsIGFuZCBpZiB0aG91IHdpbHQga2VlcCBteSBjaGFyZ2UsIHRoZW4gdGhvdSBzaGFsdCBhbHNvIGp1ZGdlIG15IGhvdXNlLCBhbmQgc2hhbHQgYWxzbyBrZWVwIG15IGNvdXJ0cywgYW5kIEkgd2lsbCBnaXZlIHRoZWUgcGxhY2VzIHRvIHdhbGsgYW1vbmcgdGhlc2UgdGhhdCBzdGFuZCBieS4KSGVhciBub3csIE8gSm9zaHVhIHRoZSBoaWdoIHByaWVzdCwgdGhvdSwgYW5kIHRoeSBmZWxsb3dzIHRoYXQgc2l0IGJlZm9yZSB0aGVlOiBmb3IgdGhleSBhcmUgbWVuIHdvbmRlcmVkIGF0OiBmb3IsIGJlaG9sZCwgSSB3aWxsIGJyaW5nIGZvcnRoIG15IHNlcnZhbnQgdGhlIEJSQU5DSC4KRm9yIGJlaG9sZCB0aGUgc3RvbmUgdGhhdCBJIGhhdmUgbGFpZCBiZWZvcmUgSm9zaHVhOyB1cG9uIG9uZSBzdG9uZSBzaGFsbCBiZSBzZXZlbiBleWVzOiBiZWhvbGQsIEkgd2lsbCBlbmdyYXZlIHRoZSBncmF2aW5nIHRoZXJlb2YsIHNhaXRoIHRoZSBMT1JEIG9mIGhvc3RzLCBhbmQgSSB3aWxsIHJlbW92ZSB0aGUgaW5pcXVpdHkgb2YgdGhhdCBsYW5kIGluIG9uZSBkYXkuCkluIHRoYXQgZGF5LCBzYWl0aCB0aGUgTE9SRCBvZiBob3N0cywgc2hhbGwgeWUgY2FsbCBldmVyeSBtYW4gaGlzIG5laWdoYm91ciB1bmRlciB0aGUgdmluZSBhbmQgdW5kZXIgdGhlIGZpZyB0cmVlLgpBbmQgdGhlIGFuZ2VsIHRoYXQgdGFsa2VkIHdpdGggbWUgY2FtZSBhZ2FpbiwgYW5kIHdha2VkIG1lLCBhcyBhIG1hbiB0aGF0IGlzIHdha2VuZWQgb3V0IG9mIGhpcyBzbGVlcC4KQW5kIHNhaWQgdW50byBtZSwgV2hhdCBzZWVzdCB0aG91PyBBbmQgSSBzYWlkLCBJIGhhdmUgbG9va2VkLCBhbmQgYmVob2xkIGEgY2FuZGxlc3RpY2sgYWxsIG9mIGdvbGQsIHdpdGggYSBib3dsIHVwb24gdGhlIHRvcCBvZiBpdCwgYW5kIGhpcyBzZXZlbiBsYW1wcyB0aGVyZW9uLCBhbmQgc2V2ZW4gcGlwZXMgdG8gdGhlIHNldmVuIGxhbXBzLCB3aGljaCBhcmUgdXBvbiB0aGUgdG9wIHRoZXJlb2Y6CkFuZCB0d28gb2xpdmUgdHJlZXMgYnkgaXQsIG9uZSB1cG9uIHRoZSByaWdodCBzaWRlIG9mIHRoZSBib3dsLCBhbmQgdGhlIG90aGVyIHVwb24gdGhlIGxlZnQgc2lkZSB0aGVyZW9mLgpTbyBJIGFuc3dlcmVkIGFuZCBzcGFrZSB0byB0aGUgYW5nZWwgdGhhdCB0YWxrZWQgd2l0aCBtZSwgc2F5aW5nLCBXaGF0IGFyZSB0aGVzZSwgbXkgbG9yZD8KVGhlbiB0aGUgYW5nZWwgdGhhdCB0YWxrZWQgd2l0aCBtZSBhbnN3ZXJlZCBhbmQgc2FpZCB1bnRvIG1lLCBLbm93ZXN0IHRob3Ugbm90IHdoYXQgdGhlc2UgYmU/IEFuZCBJIHNhaWQsIE5vLCBteSBsb3JkLgpUaGVuIGhlIGFuc3dlcmVkIGFuZCBzcGFrZSB1bnRvIG1lLCBzYXlpbmcsIFRoaXMgaXMgdGhlIHdvcmQgb2YgdGhlIExPUkQgdW50byBaZXJ1YmJhYmVsLCBzYXlpbmcsIE5vdCBieSBtaWdodCwgbm9yIGJ5IHBvd2VyLCBidXQgYnkgbXkgc3Bpcml0LCBzYWl0aCB0aGUgTE9SRCBvZiBob3N0cy4KV2hvIGFydCB0aG91LCBPIGdyZWF0IG1vdW50YWluPyBiZWZvcmUgWmVydWJiYWJlbCB0aG91IHNoYWx0IGJlY29tZSBhIHBsYWluOiBhbmQgaGUgc2hhbGwgYnJpbmcgZm9ydGggdGhlIGhlYWRzdG9uZSB0aGVyZW9mIHdpdGggc2hvdXRpbmdzLCBjcnlpbmcsIEdyYWNlLCBncmFjZSB1bnRvIGl0LgpNb3Jlb3ZlciB0aGUgd29yZCBvZiB0aGUgTE9SRCBjYW1lIHVudG8gbWUsIHNheWluZywKVGhlIGhhbmRzIG9mIFplcnViYmFiZWwgaGF2ZSBsYWlkIHRoZSBmb3VuZGF0aW9uIG9mIHRoaXMgaG91c2U7IGhpcyBoYW5kcyBzaGFsbCBhbHNvIGZpbmlzaCBpdDsgYW5kIHRob3Ugc2hhbHQga25vdyB0aGF0IHRoZSBMT1JEIG9mIGhvc3RzIGhhdGggc2VudCBtZSB1bnRvIHlvdS4KRm9yIHdobyBoYXRoIGRlc3Bpc2VkIHRoZSBkYXkgb2Ygc21hbGwgdGhpbmdzPyBmb3IgdGhleSBzaGFsbCByZWpvaWNlLCBhbmQgc2hhbGwgc2VlIHRoZSBwbHVtbWV0IGluIHRoZSBoYW5kIG9mIFplcnViYmFiZWwgd2l0aCB0aG9zZSBzZXZlbjsgdGhleSBhcmUgdGhlIGV5ZXMgb2YgdGhlIExPUkQsIHdoaWNoIHJ1biB0byBhbmQgZnJvIHRocm91Z2ggdGhlIHdob2xlIGVhcnRoLgpUaGVuIGFuc3dlcmVkIEksIGFuZCBzYWlkIHVudG8gaGltLCBXaGF0IGFyZSB0aGVzZSB0d28gb2xpdmUgdHJlZXMgdXBvbiB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgY2FuZGxlc3RpY2sgYW5kIHVwb24gdGhlIGxlZnQgc2lkZSB0aGVyZW9mPwpBbmQgSSBhbnN3ZXJlZCBhZ2FpbiwgYW5kIHNhaWQgdW50byBoaW0sIFdoYXQgYmUgdGhlc2UgdHdvIG9saXZlIGJyYW5jaGVzIHdoaWNoIHRocm91Z2ggdGhlIHR3byBnb2xkZW4gcGlwZXMgZW1wdHkgdGhlIGdvbGRlbiBvaWwgb3V0IG9mIHRoZW1zZWx2ZXM/CkFuZCBoZSBhbnN3ZXJlZCBtZSBhbmQgc2FpZCwgS25vd2VzdCB0aG91IG5vdCB3aGF0IHRoZXNlIGJlPyBBbmQgSSBzYWlkLCBObywgbXkgbG9yZC4KVGhlbiBzYWlkIGhlLCBUaGVzZSBhcmUgdGhlIHR3byBhbm9pbnRlZCBvbmVzLCB0aGF0IHN0YW5kIGJ5IHRoZSBMT1JEIG9mIHRoZSB3aG9sZSBlYXJ0aC4KVGhlbiBJIHR1cm5lZCwgYW5kIGxpZnRlZCB1cCBtaW5lIGV5ZXMsIGFuZCBsb29rZWQsIGFuZCBiZWhvbGQgYSBmbHlpbmcgcm9sbC4KQW5kIGhlIHNhaWQgdW50byBtZSwgV2hhdCBzZWVzdCB0aG91PyBBbmQgSSBhbnN3ZXJlZCwgSSBzZWUgYSBmbHlpbmcgcm9sbDsgdGhlIGxlbmd0aCB0aGVyZW9mIGlzIHR3ZW50eSBjdWJpdHMsIGFuZCB0aGUgYnJlYWR0aCB0aGVyZW9mIHRlbiBjdWJpdHMuClRoZW4gc2FpZCBoZSB1bnRvIG1lLCBUaGlzIGlzIHRoZSBjdXJzZSB0aGF0IGdvZXRoIGZvcnRoIG92ZXIgdGhlIGZhY2Ugb2YgdGhlIHdob2xlIGVhcnRoOiBmb3IgZXZlcnkgb25lIHRoYXQgc3RlYWxldGggc2hhbGwgYmUgY3V0IG9mZiBhcyBvbiB0aGlzIHNpZGUgYWNjb3JkaW5nIHRvIGl0OyBhbmQgZXZlcnkgb25lIHRoYXQgc3dlYXJldGggc2hhbGwgYmUgY3V0IG9mZiBhcyBvbiB0aGF0IHNpZGUgYWNjb3JkaW5nIHRvIGl0LgpJIHdpbGwgYnJpbmcgaXQgZm9ydGgsIHNhaXRoIHRoZSBMT1JEIG9mIGhvc3RzLCBhbmQgaXQgc2hhbGwgZW50ZXIgaW50byB0aGUgaG91c2Ugb2YgdGhlIHRoaWVmLCBhbmQgaW50byB0aGUgaG91c2Ugb2YgaGltIHRoYXQgc3dlYXJldGggZmFsc2VseSBieSBteSBuYW1lOiBhbmQgaXQgc2hhbGwgcmVtYWluIGluIHRoZSBtaWRzdCBvZiBoaXMgaG91c2UsIGFuZCBzaGFsbCBjb25zdW1lIGl0IHdpdGggdGhlIHRpbWJlciB0aGVyZW9mIGFuZCB0aGUgc3RvbmVzIHRoZXJlb2YuClRoZW4gdGhlIGFuZ2VsIHRoYXQgdGFsa2VkIHdpdGggbWUgd2VudCBmb3J0aCwgYW5kIHNhaWQgdW50byBtZSwgTGlmdCB1cCBub3cgdGhpbmUgZXllcywgYW5kIHNlZSB3aGF0IGlzIHRoaXMgdGhhdCBnb2V0aCBmb3J0aC4KQW5kIEkgc2FpZCwgV2hhdCBpcyBpdD8gQW5kIGhlIHNhaWQsIFRoaXMgaXMgYW4gZXBoYWggdGhhdCBnb2V0aCBmb3J0aC4gSGUgc2FpZCBtb3Jlb3ZlciwgVGhpcyBpcyB0aGVpciByZXNlbWJsYW5jZSB0aHJvdWdoIGFsbCB0aGUgZWFydGguCkFuZCwgYmVob2xkLCB0aGVyZSB3YXMgbGlmdGVkIHVwIGEgdGFsZW50IG9mIGxlYWQ6IGFuZCB0aGlzIGlzIGEgd29tYW4gdGhhdCBzaXR0ZXRoIGluIHRoZSBtaWRzdCBvZiB0aGUgZXBoYWguCkFuZCBoZSBzYWlkLCBUaGlzIGlzIHdpY2tlZG5lc3MuIEFuZCBoZSBjYXN0IGl0IGludG8gdGhlIG1pZHN0IG9mIHRoZSBlcGhhaDsgYW5kIGhlIGNhc3QgdGhlIHdlaWdodCBvZiBsZWFkIHVwb24gdGhlIG1vdXRoIHRoZXJlb2YuClRoZW4gbGlmdGVkIEkgdXAgbWluZSBleWVzLCBhbmQgbG9va2VkLCBhbmQsIGJlaG9sZCwgdGhlcmUgY2FtZSBvdXQgdHdvIHdvbWVuLCBhbmQgdGhlIHdpbmQgd2FzIGluIHRoZWlyIHdpbmdzOyBmb3IgdGhleSBoYWQgd2luZ3MgbGlrZSB0aGUgd2luZ3Mgb2YgYSBzdG9yazogYW5kIHRoZXkgbGlmdGVkIHVwIHRoZSBlcGhhaCBiZXR3ZWVuIHRoZSBlYXJ0aCBhbmQgdGhlIGhlYXZlbi4KVGhlbiBzYWlkIEkgdG8gdGhlIGFuZ2VsIHRoYXQgdGFsa2VkIHdpdGggbWUsIFdoaXRoZXIgZG8gdGhlc2UgYmVhciB0aGUgZXBoYWg/CkFuZCBoZSBzYWlkIHVudG8gbWUsIFRvIGJ1aWxkIGl0IGFuIGhvdXNlIGluIHRoZSBsYW5kIG9mIFNoaW5hcjogYW5kIGl0IHNoYWxsIGJlIGVzdGFibGlzaGVkLCBhbmQgc2V0IHRoZXJlIHVwb24gaGVyIG93biBiYXNlLgpBbmQgSSB0dXJuZWQsIGFuZCBsaWZ0ZWQgdXAgbWluZSBleWVzLCBhbmQgbG9va2VkLCBhbmQsIGJlaG9sZCwgdGhlcmUgY2FtZSBmb3VyIGNoYXJpb3RzIG91dCBmcm9tIGJldHdlZW4gdHdvIG1vdW50YWluczsgYW5kIHRoZSBtb3VudGFpbnMgd2VyZSBtb3VudGFpbnMgb2YgYnJhc3MuCkluIHRoZSBmaXJzdCBjaGFyaW90IHdlcmUgcmVkIGhvcnNlczsgYW5kIGluIHRoZSBzZWNvbmQgY2hhcmlvdCBibGFjayBob3JzZXM7CkFuZCBpbiB0aGUgdGhpcmQgY2hhcmlvdCB3aGl0ZSBob3JzZXM7IGFuZCBpbiB0aGUgZm91cnRoIGNoYXJpb3QgZ3Jpc2xlZCBhbmQgYmF5IGhvcnNlcy4KVGhlbiBJIGFuc3dlcmVkIGFuZCBzYWlkIHVudG8gdGhlIGFuZ2VsIHRoYXQgdGFsa2VkIHdpdGggbWUsIFdoYXQgYXJlIHRoZXNlLCBteSBsb3JkPwpBbmQgdGhlIGFuZ2VsIGFuc3dlcmVkIGFuZCBzYWlkIHVudG8gbWUsIFRoZXNlIGFyZSB0aGUgZm91ciBzcGlyaXRzIG9mIHRoZSBoZWF2ZW5zLCB3aGljaCBnbyBmb3J0aCBmcm9tIHN0YW5kaW5nIGJlZm9yZSB0aGUgTE9SRCBvZiBhbGwgdGhlIGVhcnRoLgpUaGUgYmxhY2sgaG9yc2VzIHdoaWNoIGFyZSB0aGVyZWluIGdvIGZvcnRoIGludG8gdGhlIG5vcnRoIGNvdW50cnk7IGFuZCB0aGUgd2hpdGUgZ28gZm9ydGggYWZ0ZXIgdGhlbTsgYW5kIHRoZSBncmlzbGVkIGdvIGZvcnRoIHRvd2FyZCB0aGUgc291dGggY291bnRyeS4KQW5kIHRoZSBiYXkgd2VudCBmb3J0aCwgYW5kIHNvdWdodCB0byBnbyB0aGF0IHRoZXkgbWlnaHQgd2FsayB0byBhbmQgZnJvIHRocm91Z2ggdGhlIGVhcnRoOiBhbmQgaGUgc2FpZCwgR2V0IHlvdSBoZW5jZSwgd2FsayB0byBhbmQgZnJvIHRocm91Z2ggdGhlIGVhcnRoLiBTbyB0aGV5IHdhbGtlZCB0byBhbmQgZnJvIHRocm91Z2ggdGhlIGVhcnRoLgpUaGVuIGNyaWVkIGhlIHVwb24gbWUsIGFuZCBzcGFrZSB1bnRvIG1lLCBzYXlpbmcsIEJlaG9sZCwgdGhlc2UgdGhhdCBnbyB0b3dhcmQgdGhlIG5vcnRoIGNvdW50cnkgaGF2ZSBxdWlldGVkIG15IHNwaXJpdCBpbiB0aGUgbm9ydGggY291bnRyeS4KQW5kIHRoZSB3b3JkIG9mIHRoZSBMT1JEIGNhbWUgdW50byBtZSwgc2F5aW5nLApUYWtlIG9mIHRoZW0gb2YgdGhlIGNhcHRpdml0eSwgZXZlbiBvZiBIZWxkYWksIG9mIFRvYmlqYWgsIGFuZCBvZiBKZWRhaWFoLCB3aGljaCBhcmUgY29tZSBmcm9tIEJhYnlsb24sIGFuZCBjb21lIHRob3UgdGhlIHNhbWUgZGF5LCBhbmQgZ28gaW50byB0aGUgaG91c2Ugb2YgSm9zaWFoIHRoZSBzb24gb2YgWmVwaGFuaWFoOwpUaGVuIHRha2Ugc2lsdmVyIGFuZCBnb2xkLCBhbmQgbWFrZSBjcm93bnMsIGFuZCBzZXQgdGhlbSB1cG9uIHRoZSBoZWFkIG9mIEpvc2h1YSB0aGUgc29uIG9mIEpvc2VkZWNoLCB0aGUgaGlnaCBwcmllc3Q7CkFuZCBzcGVhayB1bnRvIGhpbSwgc2F5aW5nLCBUaHVzIHNwZWFrZXRoIHRoZSBMT1JEIG9mIGhvc3RzLCBzYXlpbmcsIEJlaG9sZCB0aGUgbWFuIHdob3NlIG5hbWUgaXMgVGhlIEJSQU5DSDsgYW5kIGhlIHNoYWxsIGdyb3cgdXAgb3V0IG9mIGhpcyBwbGFjZSwgYW5kIGhlIHNoYWxsIGJ1aWxkIHRoZSB0ZW1wbGUgb2YgdGhlIExPUkQ6CkV2ZW4gaGUgc2hhbGwgYnVpbGQgdGhlIHRlbXBsZSBvZiB0aGUgTE9SRDsgYW5kIGhlIHNoYWxsIGJlYXIgdGhlIGdsb3J5LCBhbmQgc2hhbGwgc2l0IGFuZCBydWxlIHVwb24gaGlzIHRocm9uZTsgYW5kIGhlIHNoYWxsIGJlIGEgcHJpZXN0IHVwb24gaGlzIHRocm9uZTogYW5kIHRoZSBjb3Vuc2VsIG9mIHBlYWNlIHNoYWxsIGJlIGJldHdlZW4gdGhlbSBib3RoLgpBbmQgdGhlIGNyb3ducyBzaGFsbCBiZSB0byBIZWxlbSwgYW5kIHRvIFRvYmlqYWgsIGFuZCB0byBKZWRhaWFoLCBhbmQgdG8gSGVuIHRoZSBzb24gb2YgWmVwaGFuaWFoLCBmb3IgYSBtZW1vcmlhbCBpbiB0aGUgdGVtcGxlIG9mIHRoZSBMT1JELgpBbmQgdGhleSB0aGF0IGFyZSBmYXIgb2ZmIHNoYWxsIGNvbWUgYW5kIGJ1aWxkIGluIHRoZSB0ZW1wbGUgb2YgdGhlIExPUkQsIGFuZCB5ZSBzaGFsbCBrbm93IHRoYXQgdGhlIExPUkQgb2YgaG9zdHMgaGF0aCBzZW50IG1lIHVudG8geW91LiBBbmQgdGhpcyBzaGFsbCBjb21lIHRvIHBhc3MsIGlmIHllIHdpbGwgZGlsaWdlbnRseSBvYmV5IHRoZSB2b2ljZSBvZiB0aGUgTE9SRCB5b3VyIEdvZC4KQW5kIGl0IGNhbWUgdG8gcGFzcyBpbiB0aGUgZm91cnRoIHllYXIgb2Yga2luZyBEYXJpdXMsIHRoYXQgdGhlIHdvcmQgb2YgdGhlIExPUkQgY2FtZSB1bnRvIFplY2hhcmlhaCBpbiB0aGUgZm91cnRoIGRheSBvZiB0aGUgbmludGggbW9udGgsIGV2ZW4gaW4gQ2hpc2xldTsKV2hlbiB0aGV5IGhhZCBzZW50IHVudG8gdGhlIGhvdXNlIG9mIEdvZCBTaGVyZXplciBhbmQgUmVnZW1tZWxlY2gsIGFuZCB0aGVpciBtZW4sIHRvIHByYXkgYmVmb3JlIHRoZSBMT1JELApBbmQgdG8gc3BlYWsgdW50byB0aGUgcHJpZXN0cyB3aGljaCB3ZXJlIGluIHRoZSBob3VzZSBvZiB0aGUgTE9SRCBvZiBob3N0cywgYW5kIHRvIHRoZSBwcm9waGV0cywgc2F5aW5nLCBTaG91bGQgSSB3ZWVwIGluIHRoZSBmaWZ0aCBtb250aCwgc2VwYXJhdGluZyBteXNlbGYsIGFzIEkgaGF2ZSBkb25lIHRoZXNlIHNvIG1hbnkgeWVhcnM/ClRoZW4gY2FtZSB0aGUgd29yZCBvZiB0aGUgTE9SRCBvZiBob3N0cyB1bnRvIG1lLCBzYXlpbmcsClNwZWFrIHVudG8gYWxsIHRoZSBwZW9wbGUgb2YgdGhlIGxhbmQsIGFuZCB0byB0aGUgcHJpZXN0cywgc2F5aW5nLCBXaGVuIHllIGZhc3RlZCBhbmQgbW91cm5lZCBpbiB0aGUgZmlmdGggYW5kIHNldmVudGggbW9udGgsIGV2ZW4gdGhvc2Ugc2V2ZW50eSB5ZWFycywgZGlkIHllIGF0IGFsbCBmYXN0IHVudG8gbWUsIGV2ZW4gdG8gbWU/CkFuZCB3aGVuIHllIGRpZCBlYXQsIGFuZCB3aGVuIHllIGRpZCBkcmluaywgZGlkIG5vdCB5ZSBlYXQgZm9yIHlvdXJzZWx2ZXMsIGFuZCBkcmluayBmb3IgeW91cnNlbHZlcz8KU2hvdWxkIHllIG5vdCBoZWFyIHRoZSB3b3JkcyB3aGljaCB0aGUgTE9SRCBoYXRoIGNyaWVkIGJ5IHRoZSBmb3JtZXIgcHJvcGhldHMsIHdoZW4gSmVydXNhbGVtIHdhcyBpbmhhYml0ZWQgYW5kIGluIHByb3NwZXJpdHksIGFuZCB0aGUgY2l0aWVzIHRoZXJlb2Ygcm91bmQgYWJvdXQgaGVyLCB3aGVuIG1lbiBpbmhhYml0ZWQgdGhlIHNvdXRoIGFuZCB0aGUgcGxhaW4/CkFuZCB0aGUgd29yZCBvZiB0aGUgTE9SRCBjYW1lIHVudG8gWmVjaGFyaWFoLCBzYXlpbmcsClRodXMgc3BlYWtldGggdGhlIExPUkQgb2YgaG9zdHMsIHNheWluZywgRXhlY3V0ZSB0cnVlIGp1ZGdtZW50LCBhbmQgc2hldyBtZXJjeSBhbmQgY29tcGFzc2lvbnMgZXZlcnkgbWFuIHRvIGhpcyBicm90aGVyOgpBbmQgb3BwcmVzcyBub3QgdGhlIHdpZG93LCBub3IgdGhlIGZhdGhlcmxlc3MsIHRoZSBzdHJhbmdlciwgbm9yIHRoZSBwb29yOyBhbmQgbGV0IG5vbmUgb2YgeW91IGltYWdpbmUgZXZpbCBhZ2FpbnN0IGhpcyBicm90aGVyIGluIHlvdXIgaGVhcnQuCkJ1dCB0aGV5IHJlZnVzZWQgdG8gaGVhcmtlbiwgYW5kIHB1bGxlZCBhd2F5IHRoZSBzaG91bGRlciwgYW5kIHN0b3BwZWQgdGhlaXIgZWFycywgdGhhdCB0aGV5IHNob3VsZCBub3QgaGVhci4KWWVhLCB0aGV5IG1hZGUgdGhlaXIgaGVhcnRzIGFzIGFuIGFkYW1hbnQgc3RvbmUsIGxlc3QgdGhleSBzaG91bGQgaGVhciB0aGUgbGF3LCBhbmQgdGhlIHdvcmRzIHdoaWNoIHRoZSBMT1JEIG9mIGhvc3RzIGhhdGggc2VudCBpbiBoaXMgc3Bpcml0IGJ5IHRoZSBmb3JtZXIgcHJvcGhldHM6IHRoZXJlZm9yZSBjYW1lIGEgZ3JlYXQgd3JhdGggZnJvbSB0aGUgTE9SRCBvZiBob3N0cy4KVGhlcmVmb3JlIGl0IGlzIGNvbWUgdG8gcGFzcywgdGhhdCBhcyBoZSBjcmllZCwgYW5kIHRoZXkgd291bGQgbm90IGhlYXI7IHNvIHRoZXkgY3JpZWQsIGFuZCBJIHdvdWxkIG5vdCBoZWFyLCBzYWl0aCB0aGUgTE9SRCBvZiBob3N0czoKQnV0IEkgc2NhdHRlcmVkIHRoZW0gd2l0aCBhIHdoaXJsd2luZCBhbW9uZyBhbGwgdGhlIG5hdGlvbnMgd2hvbSB0aGV5IGtuZXcgbm90LiBUaHVzIHRoZSBsYW5kIHdhcyBkZXNvbGF0ZSBhZnRlciB0aGVtLCB0aGF0IG5vIG1hbiBwYXNzZWQgdGhyb3VnaCBub3IgcmV0dXJuZWQ6IGZvciB0aGV5IGxhaWQgdGhlIHBsZWFzYW50IGxhbmQgZGVzb2xhdGUuCkFnYWluIHRoZSB3b3JkIG9mIHRoZSBMT1JEIG9mIGhvc3RzIGNhbWUgdG8gbWUsIHNheWluZywKVGh1cyBzYWl0aCB0aGUgTE9SRCBvZiBob3N0czsgSSB3YXMgamVhbG91cyBmb3IgWmlvbiB3aXRoIGdyZWF0IGplYWxvdXN5LCBhbmQgSSB3YXMgamVhbG91cyBmb3IgaGVyIHdpdGggZ3JlYXQgZnVyeS4KVGh1cyBzYWl0aCB0aGUgTE9SRDsgSSBhbSByZXR1cm5lZCB1bnRvIFppb24sIGFuZCB3aWxsIGR3ZWxsIGluIHRoZSBtaWRzdCBvZiBKZXJ1c2FsZW06IGFuZCBKZXJ1c2FsZW0gc2hhbGwgYmUgY2FsbGVkIGEgY2l0eSBvZiB0cnV0aDsgYW5kIHRoZSBtb3VudGFpbiBvZiB0aGUgTE9SRCBvZiBob3N0cyB0aGUgaG9seSBtb3VudGFpbi4KVGh1cyBzYWl0aCB0aGUgTE9SRCBvZiBob3N0czsgVGhlcmUgc2hhbGwgeWV0IG9sZCBtZW4gYW5kIG9sZCB3b21lbiBkd2VsbCBpbiB0aGUgc3RyZWV0cyBvZiBKZXJ1c2FsZW0sIGFuZCBldmVyeSBtYW4gd2l0aCBoaXMgc3RhZmYgaW4gaGlzIGhhbmQgZm9yIHZlcnkgYWdlLgpBbmQgdGhlIHN0cmVldHMgb2YgdGhlIGNpdHkgc2hhbGwgYmUgZnVsbCBvZiBib3lzIGFuZCBnaXJscyBwbGF5aW5nIGluIHRoZSBzdHJlZXRzIHRoZXJlb2YuClRodXMgc2FpdGggdGhlIExPUkQgb2YgaG9zdHM7IElmIGl0IGJlIG1hcnZlbGxvdXMgaW4gdGhlIGV5ZXMgb2YgdGhlIHJlbW5hbnQgb2YgdGhpcyBwZW9wbGUgaW4gdGhlc2UgZGF5cywgc2hvdWxkIGl0IGFsc28gYmUgbWFydmVsbG91cyBpbiBtaW5lIGV5ZXM/IHNhaXRoIHRoZSBMT1JEIG9mIGhvc3RzLgpUaHVzIHNhaXRoIHRoZSBMT1JEIG9mIGhvc3RzOyBCZWhvbGQsIEkgd2lsbCBzYXZlIG15IHBlb3BsZSBmcm9tIHRoZSBlYXN0IGNvdW50cnksIGFuZCBmcm9tIHRoZSB3ZXN0IGNvdW50cnk7CkFuZCBJIHdpbGwgYnJpbmcgdGhlbSwgYW5kIHRoZXkgc2hhbGwgZHdlbGwgaW4gdGhlIG1pZHN0IG9mIEplcnVzYWxlbTogYW5kIHRoZXkgc2hhbGwgYmUgbXkgcGVvcGxlLCBhbmQgSSB3aWxsIGJlIHRoZWlyIEdvZCwgaW4gdHJ1dGggYW5kIGluIHJpZ2h0ZW91c25lc3MuClRodXMgc2FpdGggdGhlIExPUkQgb2YgaG9zdHM7IExldCB5b3VyIGhhbmRzIGJlIHN0cm9uZywgeWUgdGhhdCBoZWFyIGluIHRoZXNlIGRheXMgdGhlc2Ugd29yZHMgYnkgdGhlIG1vdXRoIG9mIHRoZSBwcm9waGV0cywgd2hpY2ggd2VyZSBpbiB0aGUgZGF5IHRoYXQgdGhlIGZvdW5kYXRpb24gb2YgdGhlIGhvdXNlIG9mIHRoZSBMT1JEIG9mIGhvc3RzIHdhcyBsYWlkLCB0aGF0IHRoZSB0ZW1wbGUgbWlnaHQgYmUgYnVpbHQuCkZvciBiZWZvcmUgdGhlc2UgZGF5cyB0aGVyZSB3YXMgbm8gaGlyZSBmb3IgbWFuLCBub3IgYW55IGhpcmUgZm9yIGJlYXN0OyBuZWl0aGVyIHdhcyB0aGVyZSBhbnkgcGVhY2UgdG8gaGltIHRoYXQgd2VudCBvdXQgb3IgY2FtZSBpbiBiZWNhdXNlIG9mIHRoZSBhZmZsaWN0aW9uOiBmb3IgSSBzZXQgYWxsIG1lbiBldmVyeSBvbmUgYWdhaW5zdCBoaXMgbmVpZ2hib3VyLgpCdXQgbm93IEkgd2lsbCBub3QgYmUgdW50byB0aGUgcmVzaWR1ZSBvZiB0aGlzIHBlb3BsZSBhcyBpbiB0aGUgZm9ybWVyIGRheXMsIHNhaXRoIHRoZSBMT1JEIG9mIGhvc3RzLgpGb3IgdGhlIHNlZWQgc2hhbGwgYmUgcHJvc3Blcm91czsgdGhlIHZpbmUgc2hhbGwgZ2l2ZSBoZXIgZnJ1aXQsIGFuZCB0aGUgZ3JvdW5kIHNoYWxsIGdpdmUgaGVyIGluY3JlYXNlLCBhbmQgdGhlIGhlYXZlbnMgc2hhbGwgZ2l2ZSB0aGVpciBkZXc7IGFuZCBJIHdpbGwgY2F1c2UgdGhlIHJlbW5hbnQgb2YgdGhpcyBwZW9wbGUgdG8gcG9zc2VzcyBhbGwgdGhlc2UgdGhpbmdzLgpBbmQgaXQgc2hhbGwgY29tZSB0byBwYXNzLCB0aGF0IGFzIHllIHdlcmUgYSBjdXJzZSBhbW9uZyB0aGUgaGVhdGhlbiwgTyBob3VzZSBvZiBKdWRhaCwgYW5kIGhvdXNlIG9mIElzcmFlbDsgc28gd2lsbCBJIHNhdmUgeW91LCBhbmQgeWUgc2hhbGwgYmUgYSBibGVzc2luZzogZmVhciBub3QsIGJ1dCBsZXQgeW91ciBoYW5kcyBiZSBzdHJvbmcuCkZvciB0aHVzIHNhaXRoIHRoZSBMT1JEIG9mIGhvc3RzOyBBcyBJIHRob3VnaHQgdG8gcHVuaXNoIHlvdSwgd2hlbiB5b3VyIGZhdGhlcnMgcHJvdm9rZWQgbWUgdG8gd3JhdGgsIHNhaXRoIHRoZSBMT1JEIG9mIGhvc3RzLCBhbmQgSSByZXBlbnRlZCBub3Q6ClNvIGFnYWluIGhhdmUgSSB0aG91Z2h0IGluIHRoZXNlIGRheXMgdG8gZG8gd2VsbCB1bnRvIEplcnVzYWxlbSBhbmQgdG8gdGhlIGhvdXNlIG9mIEp1ZGFoOiBmZWFyIHllIG5vdC4KVGhlc2UgYXJlIHRoZSB0aGluZ3MgdGhhdCB5ZSBzaGFsbCBkbzsgU3BlYWsgeWUgZXZlcnkgbWFuIHRoZSB0cnV0aCB0byBoaXMgbmVpZ2hib3VyOyBleGVjdXRlIHRoZSBqdWRnbWVudCBvZiB0cnV0aCBhbmQgcGVhY2UgaW4geW91ciBnYXRlczoKQW5kIGxldCBub25lIG9mIHlvdSBpbWFnaW5lIGV2aWwgaW4geW91ciBoZWFydHMgYWdhaW5zdCBoaXMgbmVpZ2hib3VyOyBhbmQgbG92ZSBubyBmYWxzZSBvYXRoOiBmb3IgYWxsIHRoZXNlIGFyZSB0aGluZ3MgdGhhdCBJIGhhdGUsIHNhaXRoIHRoZSBMT1JELgpBbmQgdGhlIHdvcmQgb2YgdGhlIExPUkQgb2YgaG9zdHMgY2FtZSB1bnRvIG1lLCBzYXlpbmcsClRodXMgc2FpdGggdGhlIExPUkQgb2YgaG9zdHM7IFRoZSBmYXN0IG9mIHRoZSBmb3VydGggbW9udGgsIGFuZCB0aGUgZmFzdCBvZiB0aGUgZmlmdGgsIGFuZCB0aGUgZmFzdCBvZiB0aGUgc2V2ZW50aCwgYW5kIHRoZSBmYXN0IG9mIHRoZSB0ZW50aCwgc2hhbGwgYmUgdG8gdGhlIGhvdXNlIG9mIEp1ZGFoIGpveSBhbmQgZ2xhZG5lc3MsIGFuZCBjaGVlcmZ1bCBmZWFzdHM7IHRoZXJlZm9yZSBsb3ZlIHRoZSB0cnV0aCBhbmQgcGVhY2UuClRodXMgc2FpdGggdGhlIExPUkQgb2YgaG9zdHM7IEl0IHNoYWxsIHlldCBjb21lIHRvIHBhc3MsIHRoYXQgdGhlcmUgc2hhbGwgY29tZSBwZW9wbGUsIGFuZCB0aGUgaW5oYWJpdGFudHMgb2YgbWFueSBjaXRpZXM6CkFuZCB0aGUgaW5oYWJpdGFudHMgb2Ygb25lIGNpdHkgc2hhbGwgZ28gdG8gYW5vdGhlciwgc2F5aW5nLCBMZXQgdXMgZ28gc3BlZWRpbHkgdG8gcHJheSBiZWZvcmUgdGhlIExPUkQsIGFuZCB0byBzZWVrIHRoZSBMT1JEIG9mIGhvc3RzOiBJIHdpbGwgZ28gYWxzby4KWWVhLCBtYW55IHBlb3BsZSBhbmQgc3Ryb25nIG5hdGlvbnMgc2hhbGwgY29tZSB0byBzZWVrIHRoZSBMT1JEIG9mIGhvc3RzIGluIEplcnVzYWxlbSwgYW5kIHRvIHByYXkgYmVmb3JlIHRoZSBMT1JELgpUaHVzIHNhaXRoIHRoZSBMT1JEIG9mIGhvc3RzOyBJbiB0aG9zZSBkYXlzIGl0IHNoYWxsIGNvbWUgdG8gcGFzcywgdGhhdCB0ZW4gbWVuIHNoYWxsIHRha2UgaG9sZCBvdXQgb2YgYWxsIGxhbmd1YWdlcyBvZiB0aGUgbmF0aW9ucywgZXZlbiBzaGFsbCB0YWtlIGhvbGQgb2YgdGhlIHNraXJ0IG9mIGhpbSB0aGF0IGlzIGEgSmV3LCBzYXlpbmcsIFdlIHdpbGwgZ28gd2l0aCB5b3U6IGZvciB3ZSBoYXZlIGhlYXJkIHRoYXQgR29kIGlzIHdpdGggeW91LgpUaGUgYnVyZGVuIG9mIHRoZSB3b3JkIG9mIHRoZSBMT1JEIGluIHRoZSBsYW5kIG9mIEhhZHJhY2gsIGFuZCBEYW1hc2N1cyBzaGFsbCBiZSB0aGUgcmVzdCB0aGVyZW9mOiB3aGVuIHRoZSBleWVzIG9mIG1hbiwgYXMgb2YgYWxsIHRoZSB0cmliZXMgb2YgSXNyYWVsLCBzaGFsbCBiZSB0b3dhcmQgdGhlIExPUkQuCkFuZCBIYW1hdGggYWxzbyBzaGFsbCBib3JkZXIgdGhlcmVieTsgVHlydXMsIGFuZCBaaWRvbiwgdGhvdWdoIGl0IGJlIHZlcnkgd2lzZS4KQW5kIFR5cnVzIGRpZCBidWlsZCBoZXJzZWxmIGEgc3Ryb25nIGhvbGQsIGFuZCBoZWFwZWQgdXAgc2lsdmVyIGFzIHRoZSBkdXN0LCBhbmQgZmluZSBnb2xkIGFzIHRoZSBtaXJlIG9mIHRoZSBzdHJlZXRzLgpCZWhvbGQsIHRoZSBMT1JEIHdpbGwgY2FzdCBoZXIgb3V0LCBhbmQgaGUgd2lsbCBzbWl0ZSBoZXIgcG93ZXIgaW4gdGhlIHNlYTsgYW5kIHNoZSBzaGFsbCBiZSBkZXZvdXJlZCB3aXRoIGZpcmUuCkFzaGtlbG9uIHNoYWxsIHNlZSBpdCwgYW5kIGZlYXI7IEdhemEgYWxzbyBzaGFsbCBzZWUgaXQsIGFuZCBiZSB2ZXJ5IHNvcnJvd2Z1bCwgYW5kIEVrcm9uOyBmb3IgaGVyIGV4cGVjdGF0aW9uIHNoYWxsIGJlIGFzaGFtZWQ7IGFuZCB0aGUga2luZyBzaGFsbCBwZXJpc2ggZnJvbSBHYXphLCBhbmQgQXNoa2Vsb24gc2hhbGwgbm90IGJlIGluaGFiaXRlZC4KQW5kIGEgYmFzdGFyZCBzaGFsbCBkd2VsbCBpbiBBc2hkb2QsIGFuZCBJIHdpbGwgY3V0IG9mZiB0aGUgcHJpZGUgb2YgdGhlIFBoaWxpc3RpbmVzLgpBbmQgSSB3aWxsIHRha2UgYXdheSBoaXMgYmxvb2Qgb3V0IG9mIGhpcyBtb3V0aCwgYW5kIGhpcyBhYm9taW5hdGlvbnMgZnJvbSBiZXR3ZWVuIGhpcyB0ZWV0aDogYnV0IGhlIHRoYXQgcmVtYWluZXRoLCBldmVuIGhlLCBzaGFsbCBiZSBmb3Igb3VyIEdvZCwgYW5kIGhlIHNoYWxsIGJlIGFzIGEgZ292ZXJub3IgaW4gSnVkYWgsIGFuZCBFa3JvbiBhcyBhIEplYnVzaXRlLgpBbmQgSSB3aWxsIGVuY2FtcCBhYm91dCBtaW5lIGhvdXNlIGJlY2F1c2Ugb2YgdGhlIGFybXksIGJlY2F1c2Ugb2YgaGltIHRoYXQgcGFzc2V0aCBieSwgYW5kIGJlY2F1c2Ugb2YgaGltIHRoYXQgcmV0dXJuZXRoOiBhbmQgbm8gb3BwcmVzc29yIHNoYWxsIHBhc3MgdGhyb3VnaCB0aGVtIGFueSBtb3JlOiBmb3Igbm93IGhhdmUgSSBzZWVuIHdpdGggbWluZSBleWVzLgpSZWpvaWNlIGdyZWF0bHksIE8gZGF1Z2h0ZXIgb2YgWmlvbjsgc2hvdXQsIE8gZGF1Z2h0ZXIgb2YgSmVydXNhbGVtOiBiZWhvbGQsIHRoeSBLaW5nIGNvbWV0aCB1bnRvIHRoZWU6IGhlIGlzIGp1c3QsIGFuZCBoYXZpbmcgc2FsdmF0aW9uOyBsb3dseSwgYW5kIHJpZGluZyB1cG9uIGFuIGFzcywgYW5kIHVwb24gYSBjb2x0IHRoZSBmb2FsIG9mIGFuIGFzcy4KQW5kIEkgd2lsbCBjdXQgb2ZmIHRoZSBjaGFyaW90IGZyb20gRXBocmFpbSwgYW5kIHRoZSBob3JzZSBmcm9tIEplcnVzYWxlbSwgYW5kIHRoZSBiYXR0bGUgYm93IHNoYWxsIGJlIGN1dCBvZmY6IGFuZCBoZSBzaGFsbCBzcGVhayBwZWFjZSB1bnRvIHRoZSBoZWF0aGVuOiBhbmQgaGlzIGRvbWluaW9uIHNoYWxsIGJlIGZyb20gc2VhIGV2ZW4gdG8gc2VhLCBhbmQgZnJvbSB0aGUgcml2ZXIgZXZlbiB0byB0aGUgZW5kcyBvZiB0aGUgZWFydGguCkFzIGZvciB0aGVlIGFsc28sIGJ5IHRoZSBibG9vZCBvZiB0aHkgY292ZW5hbnQgSSBoYXZlIHNlbnQgZm9ydGggdGh5IHByaXNvbmVycyBvdXQgb2YgdGhlIHBpdCB3aGVyZWluIGlzIG5vIHdhdGVyLgpUdXJuIHlvdSB0byB0aGUgc3Ryb25nIGhvbGQsIHllIHByaXNvbmVycyBvZiBob3BlOiBldmVuIHRvIGRheSBkbyBJIGRlY2xhcmUgdGhhdCBJIHdpbGwgcmVuZGVyIGRvdWJsZSB1bnRvIHRoZWU7CldoZW4gSSBoYXZlIGJlbnQgSnVkYWggZm9yIG1lLCBmaWxsZWQgdGhlIGJvdyB3aXRoIEVwaHJhaW0sIGFuZCByYWlzZWQgdXAgdGh5IHNvbnMsIE8gWmlvbiwgYWdhaW5zdCB0aHkgc29ucywgTyBHcmVlY2UsIGFuZCBtYWRlIHRoZWUgYXMgdGhlIHN3b3JkIG9mIGEgbWlnaHR5IG1hbi4KQW5kIHRoZSBMT1JEIHNoYWxsIGJlIHNlZW4gb3ZlciB0aGVtLCBhbmQgaGlzIGFycm93IHNoYWxsIGdvIGZvcnRoIGFzIHRoZSBsaWdodG5pbmc6IGFuZCB0aGUgTE9SRCBHb2Qgc2hhbGwgYmxvdyB0aGUgdHJ1bXBldCwgYW5kIHNoYWxsIGdvIHdpdGggd2hpcmx3aW5kcyBvZiB0aGUgc291dGguClRoZSBMT1JEIG9mIGhvc3RzIHNoYWxsIGRlZmVuZCB0aGVtOyBhbmQgdGhleSBzaGFsbCBkZXZvdXIsIGFuZCBzdWJkdWUgd2l0aCBzbGluZyBzdG9uZXM7IGFuZCB0aGV5IHNoYWxsIGRyaW5rLCBhbmQgbWFrZSBhIG5vaXNlIGFzIHRocm91Z2ggd2luZTsgYW5kIHRoZXkgc2hhbGwgYmUgZmlsbGVkIGxpa2UgYm93bHMsIGFuZCBhcyB0aGUgY29ybmVycyBvZiB0aGUgYWx0YXIuCkFuZCB0aGUgTE9SRCB0aGVpciBHb2Qgc2hhbGwgc2F2ZSB0aGVtIGluIHRoYXQgZGF5IGFzIHRoZSBmbG9jayBvZiBoaXMgcGVvcGxlOiBmb3IgdGhleSBzaGFsbCBiZSBhcyB0aGUgc3RvbmVzIG9mIGEgY3Jvd24sIGxpZnRlZCB1cCBhcyBhbiBlbnNpZ24gdXBvbiBoaXMgbGFuZC4KRm9yIGhvdyBncmVhdCBpcyBoaXMgZ29vZG5lc3MsIGFuZCBob3cgZ3JlYXQgaXMgaGlzIGJlYXV0eSEgY29ybiBzaGFsbCBtYWtlIHRoZSB5b3VuZyBtZW4gY2hlZXJmdWwsIGFuZCBuZXcgd2luZSB0aGUgbWFpZHMuCkFzayB5ZSBvZiB0aGUgTE9SRCByYWluIGluIHRoZSB0aW1lIG9mIHRoZSBsYXR0ZXIgcmFpbjsgc28gdGhlIExPUkQgc2hhbGwgbWFrZSBicmlnaHQgY2xvdWRzLCBhbmQgZ2l2ZSB0aGVtIHNob3dlcnMgb2YgcmFpbiwgdG8gZXZlcnkgb25lIGdyYXNzIGluIHRoZSBmaWVsZC4KRm9yIHRoZSBpZG9scyBoYXZlIHNwb2tlbiB2YW5pdHksIGFuZCB0aGUgZGl2aW5lcnMgaGF2ZSBzZWVuIGEgbGllLCBhbmQgaGF2ZSB0b2xkIGZhbHNlIGRyZWFtczsgdGhleSBjb21mb3J0IGluIHZhaW46IHRoZXJlZm9yZSB0aGV5IHdlbnQgdGhlaXIgd2F5IGFzIGEgZmxvY2ssIHRoZXkgd2VyZSB0cm91YmxlZCwgYmVjYXVzZSB0aGVyZSB3YXMgbm8gc2hlcGhlcmQuCk1pbmUgYW5nZXIgd2FzIGtpbmRsZWQgYWdhaW5zdCB0aGUgc2hlcGhlcmRzLCBhbmQgSSBwdW5pc2hlZCB0aGUgZ29hdHM6IGZvciB0aGUgTE9SRCBvZiBob3N0cyBoYXRoIHZpc2l0ZWQgaGlzIGZsb2NrIHRoZSBob3VzZSBvZiBKdWRhaCwgYW5kIGhhdGggbWFkZSB0aGVtIGFzIGhpcyBnb29kbHkgaG9yc2UgaW4gdGhlIGJhdHRsZS4KT3V0IG9mIGhpbSBjYW1lIGZvcnRoIHRoZSBjb3JuZXIsIG91dCBvZiBoaW0gdGhlIG5haWwsIG91dCBvZiBoaW0gdGhlIGJhdHRsZSBib3csIG91dCBvZiBoaW0gZXZlcnkgb3BwcmVzc29yIHRvZ2V0aGVyLgpBbmQgdGhleSBzaGFsbCBiZSBhcyBtaWdodHkgbWVuLCB3aGljaCB0cmVhZCBkb3duIHRoZWlyIGVuZW1pZXMgaW4gdGhlIG1pcmUgb2YgdGhlIHN0cmVldHMgaW4gdGhlIGJhdHRsZTogYW5kIHRoZXkgc2hhbGwgZmlnaHQsIGJlY2F1c2UgdGhlIExPUkQgaXMgd2l0aCB0aGVtLCBhbmQgdGhlIHJpZGVycyBvbiBob3JzZXMgc2hhbGwgYmUgY29uZm91bmRlZC4KQW5kIEkgd2lsbCBzdHJlbmd0aGVuIHRoZSBob3VzZSBvZiBKdWRhaCwgYW5kIEkgd2lsbCBzYXZlIHRoZSBob3VzZSBvZiBKb3NlcGgsIGFuZCBJIHdpbGwgYnJpbmcgdGhlbSBhZ2FpbiB0byBwbGFjZSB0aGVtOyBmb3IgSSBoYXZlIG1lcmN5IHVwb24gdGhlbTogYW5kIHRoZXkgc2hhbGwgYmUgYXMgdGhvdWdoIEkgaGFkIG5vdCBjYXN0IHRoZW0gb2ZmOiBmb3IgSSBhbSB0aGUgTE9SRCB0aGVpciBHb2QsIGFuZCB3aWxsIGhlYXIgdGhlbS4KQW5kIHRoZXkgb2YgRXBocmFpbSBzaGFsbCBiZSBsaWtlIGEgbWlnaHR5IG1hbiwgYW5kIHRoZWlyIGhlYXJ0IHNoYWxsIHJlam9pY2UgYXMgdGhyb3VnaCB3aW5lOiB5ZWEsIHRoZWlyIGNoaWxkcmVuIHNoYWxsIHNlZSBpdCwgYW5kIGJlIGdsYWQ7IHRoZWlyIGhlYXJ0IHNoYWxsIHJlam9pY2UgaW4gdGhlIExPUkQuCkkgd2lsbCBoaXNzIGZvciB0aGVtLCBhbmQgZ2F0aGVyIHRoZW07IGZvciBJIGhhdmUgcmVkZWVtZWQgdGhlbTogYW5kIHRoZXkgc2hhbGwgaW5jcmVhc2UgYXMgdGhleSBoYXZlIGluY3JlYXNlZC4KQW5kIEkgd2lsbCBzb3cgdGhlbSBhbW9uZyB0aGUgcGVvcGxlOiBhbmQgdGhleSBzaGFsbCByZW1lbWJlciBtZSBpbiBmYXIgY291bnRyaWVzOyBhbmQgdGhleSBzaGFsbCBsaXZlIHdpdGggdGhlaXIgY2hpbGRyZW4sIGFuZCB0dXJuIGFnYWluLgpJIHdpbGwgYnJpbmcgdGhlbSBhZ2FpbiBhbHNvIG91dCBvZiB0aGUgbGFuZCBvZiBFZ3lwdCwgYW5kIGdhdGhlciB0aGVtIG91dCBvZiBBc3N5cmlhOyBhbmQgSSB3aWxsIGJyaW5nIHRoZW0gaW50byB0aGUgbGFuZCBvZiBHaWxlYWQgYW5kIExlYmFub247IGFuZCBwbGFjZSBzaGFsbCBub3QgYmUgZm91bmQgZm9yIHRoZW0uCkFuZCBoZSBzaGFsbCBwYXNzIHRocm91Z2ggdGhlIHNlYSB3aXRoIGFmZmxpY3Rpb24sIGFuZCBzaGFsbCBzbWl0ZSB0aGUgd2F2ZXMgaW4gdGhlIHNlYSwgYW5kIGFsbCB0aGUgZGVlcHMgb2YgdGhlIHJpdmVyIHNoYWxsIGRyeSB1cDogYW5kIHRoZSBwcmlkZSBvZiBBc3N5cmlhIHNoYWxsIGJlIGJyb3VnaHQgZG93biwgYW5kIHRoZSBzY2VwdHJlIG9mIEVneXB0IHNoYWxsIGRlcGFydCBhd2F5LgpBbmQgSSB3aWxsIHN0cmVuZ3RoZW4gdGhlbSBpbiB0aGUgTE9SRDsgYW5kIHRoZXkgc2hhbGwgd2FsayB1cCBhbmQgZG93biBpbiBoaXMgbmFtZSwgc2FpdGggdGhlIExPUkQuCk9wZW4gdGh5IGRvb3JzLCBPIExlYmFub24sIHRoYXQgdGhlIGZpcmUgbWF5IGRldm91ciB0aHkgY2VkYXJzLgpIb3dsLCBmaXIgdHJlZTsgZm9yIHRoZSBjZWRhciBpcyBmYWxsZW47IGJlY2F1c2UgdGhlIG1pZ2h0eSBhcmUgc3BvaWxlZDogaG93bCwgTyB5ZSBvYWtzIG9mIEJhc2hhbjsgZm9yIHRoZSBmb3Jlc3Qgb2YgdGhlIHZpbnRhZ2UgaXMgY29tZSBkb3duLgpUaGVyZSBpcyBhIHZvaWNlIG9mIHRoZSBob3dsaW5nIG9mIHRoZSBzaGVwaGVyZHM7IGZvciB0aGVpciBnbG9yeSBpcyBzcG9pbGVkOiBhIHZvaWNlIG9mIHRoZSByb2FyaW5nIG9mIHlvdW5nIGxpb25zOyBmb3IgdGhlIHByaWRlIG9mIEpvcmRhbiBpcyBzcG9pbGVkLgpUaHVzIHNhaXRoIHRoZSBMT1JEIG15IEdvZDsgRmVlZCB0aGUgZmxvY2sgb2YgdGhlIHNsYXVnaHRlcjsKV2hvc2UgcG9zc2Vzc29ycyBzbGF5IHRoZW0sIGFuZCBob2xkIHRoZW1zZWx2ZXMgbm90IGd1aWx0eTogYW5kIHRoZXkgdGhhdCBzZWxsIHRoZW0gc2F5LCBCbGVzc2VkIGJlIHRoZSBMT1JEOyBmb3IgSSBhbSByaWNoOiBhbmQgdGhlaXIgb3duIHNoZXBoZXJkcyBwaXR5IHRoZW0gbm90LgpGb3IgSSB3aWxsIG5vIG1vcmUgcGl0eSB0aGUgaW5oYWJpdGFudHMgb2YgdGhlIGxhbmQsIHNhaXRoIHRoZSBMT1JEOiBidXQsIGxvLCBJIHdpbGwgZGVsaXZlciB0aGUgbWVuIGV2ZXJ5IG9uZSBpbnRvIGhpcyBuZWlnaGJvdXIncyBoYW5kLCBhbmQgaW50byB0aGUgaGFuZCBvZiBoaXMga2luZzogYW5kIHRoZXkgc2hhbGwgc21pdGUgdGhlIGxhbmQsIGFuZCBvdXQgb2YgdGhlaXIgaGFuZCBJIHdpbGwgbm90IGRlbGl2ZXIgdGhlbS4KQW5kIEkgd2lsbCBmZWVkIHRoZSBmbG9jayBvZiBzbGF1Z2h0ZXIsIGV2ZW4geW91LCBPIHBvb3Igb2YgdGhlIGZsb2NrLiBBbmQgSSB0b29rIHVudG8gbWUgdHdvIHN0YXZlczsgdGhlIG9uZSBJIGNhbGxlZCBCZWF1dHksIGFuZCB0aGUgb3RoZXIgSSBjYWxsZWQgQmFuZHM7IGFuZCBJIGZlZCB0aGUgZmxvY2suClRocmVlIHNoZXBoZXJkcyBhbHNvIEkgY3V0IG9mZiBpbiBvbmUgbW9udGg7IGFuZCBteSBzb3VsIGxvdGhlZCB0aGVtLCBhbmQgdGhlaXIgc291bCBhbHNvIGFiaG9ycmVkIG1lLgpUaGVuIHNhaWQgSSwgSSB3aWxsIG5vdCBmZWVkIHlvdTogdGhhdCB0aGF0IGRpZXRoLCBsZXQgaXQgZGllOyBhbmQgdGhhdCB0aGF0IGlzIHRvIGJlIGN1dCBvZmYsIGxldCBpdCBiZSBjdXQgb2ZmOyBhbmQgbGV0IHRoZSByZXN0IGVhdCBldmVyeSBvbmUgdGhlIGZsZXNoIG9mIGFub3RoZXIuCkFuZCBJIHRvb2sgbXkgc3RhZmYsIGV2ZW4gQmVhdXR5LCBhbmQgY3V0IGl0IGFzdW5kZXIsIHRoYXQgSSBtaWdodCBicmVhayBteSBjb3ZlbmFudCB3aGljaCBJIGhhZCBtYWRlIHdpdGggYWxsIHRoZSBwZW9wbGUuCkFuZCBpdCB3YXMgYnJva2VuIGluIHRoYXQgZGF5OiBhbmQgc28gdGhlIHBvb3Igb2YgdGhlIGZsb2NrIHRoYXQgd2FpdGVkIHVwb24gbWUga25ldyB0aGF0IGl0IHdhcyB0aGUgd29yZCBvZiB0aGUgTE9SRC4KQW5kIEkgc2FpZCB1bnRvIHRoZW0sIElmIHllIHRoaW5rIGdvb2QsIGdpdmUgbWUgbXkgcHJpY2U7IGFuZCBpZiBub3QsIGZvcmJlYXIuIFNvIHRoZXkgd2VpZ2hlZCBmb3IgbXkgcHJpY2UgdGhpcnR5IHBpZWNlcyBvZiBzaWx2ZXIuCkFuZCB0aGUgTE9SRCBzYWlkIHVudG8gbWUsIENhc3QgaXQgdW50byB0aGUgcG90dGVyOiBhIGdvb2RseSBwcmljZSB0aGF0IEkgd2FzIHByaXNlZCBhdCBvZiB0aGVtLiBBbmQgSSB0b29rIHRoZSB0aGlydHkgcGllY2VzIG9mIHNpbHZlciwgYW5kIGNhc3QgdGhlbSB0byB0aGUgcG90dGVyIGluIHRoZSBob3VzZSBvZiB0aGUgTE9SRC4KVGhlbiBJIGN1dCBhc3VuZGVyIG1pbmUgb3RoZXIgc3RhZmYsIGV2ZW4gQmFuZHMsIHRoYXQgSSBtaWdodCBicmVhayB0aGUgYnJvdGhlcmhvb2QgYmV0d2VlbiBKdWRhaCBhbmQgSXNyYWVsLgpBbmQgdGhlIExPUkQgc2FpZCB1bnRvIG1lLCBUYWtlIHVudG8gdGhlZSB5ZXQgdGhlIGluc3RydW1lbnRzIG9mIGEgZm9vbGlzaCBzaGVwaGVyZC4KRm9yLCBsbywgSSB3aWxsIHJhaXNlIHVwIGEgc2hlcGhlcmQgaW4gdGhlIGxhbmQsIHdoaWNoIHNoYWxsIG5vdCB2aXNpdCB0aG9zZSB0aGF0IGJlIGN1dCBvZmYsIG5laXRoZXIgc2hhbGwgc2VlayB0aGUgeW91bmcgb25lLCBub3IgaGVhbCB0aGF0IHRoYXQgaXMgYnJva2VuLCBub3IgZmVlZCB0aGF0IHRoYXQgc3RhbmRldGggc3RpbGw6IGJ1dCBoZSBzaGFsbCBlYXQgdGhlIGZsZXNoIG9mIHRoZSBmYXQsIGFuZCB0ZWFyIHRoZWlyIGNsYXdzIGluIHBpZWNlcy4KV29lIHRvIHRoZSBpZG9sIHNoZXBoZXJkIHRoYXQgbGVhdmV0aCB0aGUgZmxvY2shIHRoZSBzd29yZCBzaGFsbCBiZSB1cG9uIGhpcyBhcm0sIGFuZCB1cG9uIGhpcyByaWdodCBleWU6IGhpcyBhcm0gc2hhbGwgYmUgY2xlYW4gZHJpZWQgdXAsIGFuZCBoaXMgcmlnaHQgZXllIHNoYWxsIGJlIHV0dGVybHkgZGFya2VuZWQuClRoZSBidXJkZW4gb2YgdGhlIHdvcmQgb2YgdGhlIExPUkQgZm9yIElzcmFlbCwgc2FpdGggdGhlIExPUkQsIHdoaWNoIHN0cmV0Y2hldGggZm9ydGggdGhlIGhlYXZlbnMsIGFuZCBsYXlldGggdGhlIGZvdW5kYXRpb24gb2YgdGhlIGVhcnRoLCBhbmQgZm9ybWV0aCB0aGUgc3Bpcml0IG9mIG1hbiB3aXRoaW4gaGltLgpCZWhvbGQsIEkgd2lsbCBtYWtlIEplcnVzYWxlbSBhIGN1cCBvZiB0cmVtYmxpbmcgdW50byBhbGwgdGhlIHBlb3BsZSByb3VuZCBhYm91dCwgd2hlbiB0aGV5IHNoYWxsIGJlIGluIHRoZSBzaWVnZSBib3RoIGFnYWluc3QgSnVkYWggYW5kIGFnYWluc3QgSmVydXNhbGVtLgpBbmQgaW4gdGhhdCBkYXkgd2lsbCBJIG1ha2UgSmVydXNhbGVtIGEgYnVyZGVuc29tZSBzdG9uZSBmb3IgYWxsIHBlb3BsZTogYWxsIHRoYXQgYnVyZGVuIHRoZW1zZWx2ZXMgd2l0aCBpdCBzaGFsbCBiZSBjdXQgaW4gcGllY2VzLCB0aG91Z2ggYWxsIHRoZSBwZW9wbGUgb2YgdGhlIGVhcnRoIGJlIGdhdGhlcmVkIHRvZ2V0aGVyIGFnYWluc3QgaXQuCkluIHRoYXQgZGF5LCBzYWl0aCB0aGUgTE9SRCwgSSB3aWxsIHNtaXRlIGV2ZXJ5IGhvcnNlIHdpdGggYXN0b25pc2htZW50LCBhbmQgaGlzIHJpZGVyIHdpdGggbWFkbmVzczogYW5kIEkgd2lsbCBvcGVuIG1pbmUgZXllcyB1cG9uIHRoZSBob3VzZSBvZiBKdWRhaCwgYW5kIHdpbGwgc21pdGUgZXZlcnkgaG9yc2Ugb2YgdGhlIHBlb3BsZSB3aXRoIGJsaW5kbmVzcy4KQW5kIHRoZSBnb3Zlcm5vcnMgb2YgSnVkYWggc2hhbGwgc2F5IGluIHRoZWlyIGhlYXJ0LCBUaGUgaW5oYWJpdGFudHMgb2YgSmVydXNhbGVtIHNoYWxsIGJlIG15IHN0cmVuZ3RoIGluIHRoZSBMT1JEIG9mIGhvc3RzIHRoZWlyIEdvZC4KSW4gdGhhdCBkYXkgd2lsbCBJIG1ha2UgdGhlIGdvdmVybm9ycyBvZiBKdWRhaCBsaWtlIGFuIGhlYXJ0aCBvZiBmaXJlIGFtb25nIHRoZSB3b29kLCBhbmQgbGlrZSBhIHRvcmNoIG9mIGZpcmUgaW4gYSBzaGVhZjsgYW5kIHRoZXkgc2hhbGwgZGV2b3VyIGFsbCB0aGUgcGVvcGxlIHJvdW5kIGFib3V0LCBvbiB0aGUgcmlnaHQgaGFuZCBhbmQgb24gdGhlIGxlZnQ6IGFuZCBKZXJ1c2FsZW0gc2hhbGwgYmUgaW5oYWJpdGVkIGFnYWluIGluIGhlciBvd24gcGxhY2UsIGV2ZW4gaW4gSmVydXNhbGVtLgpUaGUgTE9SRCBhbHNvIHNoYWxsIHNhdmUgdGhlIHRlbnRzIG9mIEp1ZGFoIGZpcnN0LCB0aGF0IHRoZSBnbG9yeSBvZiB0aGUgaG91c2Ugb2YgRGF2aWQgYW5kIHRoZSBnbG9yeSBvZiB0aGUgaW5oYWJpdGFudHMgb2YgSmVydXNhbGVtIGRvIG5vdCBtYWduaWZ5IHRoZW1zZWx2ZXMgYWdhaW5zdCBKdWRhaC4KSW4gdGhhdCBkYXkgc2hhbGwgdGhlIExPUkQgZGVmZW5kIHRoZSBpbmhhYml0YW50cyBvZiBKZXJ1c2FsZW07IGFuZCBoZSB0aGF0IGlzIGZlZWJsZSBhbW9uZyB0aGVtIGF0IHRoYXQgZGF5IHNoYWxsIGJlIGFzIERhdmlkOyBhbmQgdGhlIGhvdXNlIG9mIERhdmlkIHNoYWxsIGJlIGFzIEdvZCwgYXMgdGhlIGFuZ2VsIG9mIHRoZSBMT1JEIGJlZm9yZSB0aGVtLgpBbmQgaXQgc2hhbGwgY29tZSB0byBwYXNzIGluIHRoYXQgZGF5LCB0aGF0IEkgd2lsbCBzZWVrIHRvIGRlc3Ryb3kgYWxsIHRoZSBuYXRpb25zIHRoYXQgY29tZSBhZ2FpbnN0IEplcnVzYWxlbS4KQW5kIEkgd2lsbCBwb3VyIHVwb24gdGhlIGhvdXNlIG9mIERhdmlkLCBhbmQgdXBvbiB0aGUgaW5oYWJpdGFudHMgb2YgSmVydXNhbGVtLCB0aGUgc3Bpcml0IG9mIGdyYWNlIGFuZCBvZiBzdXBwbGljYXRpb25zOiBhbmQgdGhleSBzaGFsbCBsb29rIHVwb24gbWUgd2hvbSB0aGV5IGhhdmUgcGllcmNlZCwgYW5kIHRoZXkgc2hhbGwgbW91cm4gZm9yIGhpbSwgYXMgb25lIG1vdXJuZXRoIGZvciBoaXMgb25seSBzb24sIGFuZCBzaGFsbCBiZSBpbiBiaXR0ZXJuZXNzIGZvciBoaW0sIGFzIG9uZSB0aGF0IGlzIGluIGJpdHRlcm5lc3MgZm9yIGhpcyBmaXJzdGJvcm4uCkluIHRoYXQgZGF5IHNoYWxsIHRoZXJlIGJlIGEgZ3JlYXQgbW91cm5pbmcgaW4gSmVydXNhbGVtLCBhcyB0aGUgbW91cm5pbmcgb2YgSGFkYWRyaW1tb24gaW4gdGhlIHZhbGxleSBvZiBNZWdpZGRvbi4KQW5kIHRoZSBsYW5kIHNoYWxsIG1vdXJuLCBldmVyeSBmYW1pbHkgYXBhcnQ7IHRoZSBmYW1pbHkgb2YgdGhlIGhvdXNlIG9mIERhdmlkIGFwYXJ0LCBhbmQgdGhlaXIgd2l2ZXMgYXBhcnQ7IHRoZSBmYW1pbHkgb2YgdGhlIGhvdXNlIG9mIE5hdGhhbiBhcGFydCwgYW5kIHRoZWlyIHdpdmVzIGFwYXJ0OwpUaGUgZmFtaWx5IG9mIHRoZSBob3VzZSBvZiBMZXZpIGFwYXJ0LCBhbmQgdGhlaXIgd2l2ZXMgYXBhcnQ7IHRoZSBmYW1pbHkgb2YgU2hpbWVpIGFwYXJ0LCBhbmQgdGhlaXIgd2l2ZXMgYXBhcnQ7CkFsbCB0aGUgZmFtaWxpZXMgdGhhdCByZW1haW4sIGV2ZXJ5IGZhbWlseSBhcGFydCwgYW5kIHRoZWlyIHdpdmVzIGFwYXJ0LgpJbiB0aGF0IGRheSB0aGVyZSBzaGFsbCBiZSBhIGZvdW50YWluIG9wZW5lZCB0byB0aGUgaG91c2Ugb2YgRGF2aWQgYW5kIHRvIHRoZSBpbmhhYml0YW50cyBvZiBKZXJ1c2FsZW0gZm9yIHNpbiBhbmQgZm9yIHVuY2xlYW5uZXNzLgpBbmQgaXQgc2hhbGwgY29tZSB0byBwYXNzIGluIHRoYXQgZGF5LCBzYWl0aCB0aGUgTE9SRCBvZiBob3N0cywgdGhhdCBJIHdpbGwgY3V0IG9mZiB0aGUgbmFtZXMgb2YgdGhlIGlkb2xzIG91dCBvZiB0aGUgbGFuZCwgYW5kIHRoZXkgc2hhbGwgbm8gbW9yZSBiZSByZW1lbWJlcmVkOiBhbmQgYWxzbyBJIHdpbGwgY2F1c2UgdGhlIHByb3BoZXRzIGFuZCB0aGUgdW5jbGVhbiBzcGlyaXQgdG8gcGFzcyBvdXQgb2YgdGhlIGxhbmQuCkFuZCBpdCBzaGFsbCBjb21lIHRvIHBhc3MsIHRoYXQgd2hlbiBhbnkgc2hhbGwgeWV0IHByb3BoZXN5LCB0aGVuIGhpcyBmYXRoZXIgYW5kIGhpcyBtb3RoZXIgdGhhdCBiZWdhdCBoaW0gc2hhbGwgc2F5IHVudG8gaGltLCBUaG91IHNoYWx0IG5vdCBsaXZlOyBmb3IgdGhvdSBzcGVha2VzdCBsaWVzIGluIHRoZSBuYW1lIG9mIHRoZSBMT1JEOiBhbmQgaGlzIGZhdGhlciBhbmQgaGlzIG1vdGhlciB0aGF0IGJlZ2F0IGhpbSBzaGFsbCB0aHJ1c3QgaGltIHRocm91Z2ggd2hlbiBoZSBwcm9waGVzaWV0aC4KQW5kIGl0IHNoYWxsIGNvbWUgdG8gcGFzcyBpbiB0aGF0IGRheSwgdGhhdCB0aGUgcHJvcGhldHMgc2hhbGwgYmUgYXNoYW1lZCBldmVyeSBvbmUgb2YgaGlzIHZpc2lvbiwgd2hlbiBoZSBoYXRoIHByb3BoZXNpZWQ7IG5laXRoZXIgc2hhbGwgdGhleSB3ZWFyIGEgcm91Z2ggZ2FybWVudCB0byBkZWNlaXZlOgpCdXQgaGUgc2hhbGwgc2F5LCBJIGFtIG5vIHByb3BoZXQsIEkgYW0gYW4gaHVzYmFuZG1hbjsgZm9yIG1hbiB0YXVnaHQgbWUgdG8ga2VlcCBjYXR0bGUgZnJvbSBteSB5b3V0aC4KQW5kIG9uZSBzaGFsbCBzYXkgdW50byBoaW0sIFdoYXQgYXJlIHRoZXNlIHdvdW5kcyBpbiB0aGluZSBoYW5kcz8gVGhlbiBoZSBzaGFsbCBhbnN3ZXIsIFRob3NlIHdpdGggd2hpY2ggSSB3YXMgd291bmRlZCBpbiB0aGUgaG91c2Ugb2YgbXkgZnJpZW5kcy4KQXdha2UsIE8gc3dvcmQsIGFnYWluc3QgbXkgc2hlcGhlcmQsIGFuZCBhZ2FpbnN0IHRoZSBtYW4gdGhhdCBpcyBteSBmZWxsb3csIHNhaXRoIHRoZSBMT1JEIG9mIGhvc3RzOiBzbWl0ZSB0aGUgc2hlcGhlcmQsIGFuZCB0aGUgc2hlZXAgc2hhbGwgYmUgc2NhdHRlcmVkOiBhbmQgSSB3aWxsIHR1cm4gbWluZSBoYW5kIHVwb24gdGhlIGxpdHRsZSBvbmVzLgpBbmQgaXQgc2hhbGwgY29tZSB0byBwYXNzLCB0aGF0IGluIGFsbCB0aGUgbGFuZCwgc2FpdGggdGhlIExPUkQsIHR3byBwYXJ0cyB0aGVyZWluIHNoYWxsIGJlIGN1dCBvZmYgYW5kIGRpZTsgYnV0IHRoZSB0aGlyZCBzaGFsbCBiZSBsZWZ0IHRoZXJlaW4uCkFuZCBJIHdpbGwgYnJpbmcgdGhlIHRoaXJkIHBhcnQgdGhyb3VnaCB0aGUgZmlyZSwgYW5kIHdpbGwgcmVmaW5lIHRoZW0gYXMgc2lsdmVyIGlzIHJlZmluZWQsIGFuZCB3aWxsIHRyeSB0aGVtIGFzIGdvbGQgaXMgdHJpZWQ6IHRoZXkgc2hhbGwgY2FsbCBvbiBteSBuYW1lLCBhbmQgSSB3aWxsIGhlYXIgdGhlbTogSSB3aWxsIHNheSwgSXQgaXMgbXkgcGVvcGxlOiBhbmQgdGhleSBzaGFsbCBzYXksIFRoZSBMT1JEIGlzIG15IEdvZC4KQmVob2xkLCB0aGUgZGF5IG9mIHRoZSBMT1JEIGNvbWV0aCwgYW5kIHRoeSBzcG9pbCBzaGFsbCBiZSBkaXZpZGVkIGluIHRoZSBtaWRzdCBvZiB0aGVlLgpGb3IgSSB3aWxsIGdhdGhlciBhbGwgbmF0aW9ucyBhZ2FpbnN0IEplcnVzYWxlbSB0byBiYXR0bGU7IGFuZCB0aGUgY2l0eSBzaGFsbCBiZSB0YWtlbiwgYW5kIHRoZSBob3VzZXMgcmlmbGVkLCBhbmQgdGhlIHdvbWVuIHJhdmlzaGVkOyBhbmQgaGFsZiBvZiB0aGUgY2l0eSBzaGFsbCBnbyBmb3J0aCBpbnRvIGNhcHRpdml0eSwgYW5kIHRoZSByZXNpZHVlIG9mIHRoZSBwZW9wbGUgc2hhbGwgbm90IGJlIGN1dCBvZmYgZnJvbSB0aGUgY2l0eS4KVGhlbiBzaGFsbCB0aGUgTE9SRCBnbyBmb3J0aCwgYW5kIGZpZ2h0IGFnYWluc3QgdGhvc2UgbmF0aW9ucywgYXMgd2hlbiBoZSBmb3VnaHQgaW4gdGhlIGRheSBvZiBiYXR0bGUuCkFuZCBoaXMgZmVldCBzaGFsbCBzdGFuZCBpbiB0aGF0IGRheSB1cG9uIHRoZSBtb3VudCBvZiBPbGl2ZXMsIHdoaWNoIGlzIGJlZm9yZSBKZXJ1c2FsZW0gb24gdGhlIGVhc3QsIGFuZCB0aGUgbW91bnQgb2YgT2xpdmVzIHNoYWxsIGNsZWF2ZSBpbiB0aGUgbWlkc3QgdGhlcmVvZiB0b3dhcmQgdGhlIGVhc3QgYW5kIHRvd2FyZCB0aGUgd2VzdCwgYW5kIHRoZXJlIHNoYWxsIGJlIGEgdmVyeSBncmVhdCB2YWxsZXk7IGFuZCBoYWxmIG9mIHRoZSBtb3VudGFpbiBzaGFsbCByZW1vdmUgdG93YXJkIHRoZSBub3J0aCwgYW5kIGhhbGYgb2YgaXQgdG93YXJkIHRoZSBzb3V0aC4KQW5kIHllIHNoYWxsIGZsZWUgdG8gdGhlIHZhbGxleSBvZiB0aGUgbW91bnRhaW5zOyBmb3IgdGhlIHZhbGxleSBvZiB0aGUgbW91bnRhaW5zIHNoYWxsIHJlYWNoIHVudG8gQXphbDogeWVhLCB5ZSBzaGFsbCBmbGVlLCBsaWtlIGFzIHllIGZsZWQgZnJvbSBiZWZvcmUgdGhlIGVhcnRocXVha2UgaW4gdGhlIGRheXMgb2YgVXp6aWFoIGtpbmcgb2YgSnVkYWg6IGFuZCB0aGUgTE9SRCBteSBHb2Qgc2hhbGwgY29tZSwgYW5kIGFsbCB0aGUgc2FpbnRzIHdpdGggdGhlZS4KQW5kIGl0IHNoYWxsIGNvbWUgdG8gcGFzcyBpbiB0aGF0IGRheSwgdGhhdCB0aGUgbGlnaHQgc2hhbGwgbm90IGJlIGNsZWFyLCBub3IgZGFyazoKQnV0IGl0IHNoYWxsIGJlIG9uZSBkYXkgd2hpY2ggc2hhbGwgYmUga25vd24gdG8gdGhlIExPUkQsIG5vdCBkYXksIG5vciBuaWdodDogYnV0IGl0IHNoYWxsIGNvbWUgdG8gcGFzcywgdGhhdCBhdCBldmVuaW5nIHRpbWUgaXQgc2hhbGwgYmUgbGlnaHQuCkFuZCBpdCBzaGFsbCBiZSBpbiB0aGF0IGRheSwgdGhhdCBsaXZpbmcgd2F0ZXJzIHNoYWxsIGdvIG91dCBmcm9tIEplcnVzYWxlbTsgaGFsZiBvZiB0aGVtIHRvd2FyZCB0aGUgZm9ybWVyIHNlYSwgYW5kIGhhbGYgb2YgdGhlbSB0b3dhcmQgdGhlIGhpbmRlciBzZWE6IGluIHN1bW1lciBhbmQgaW4gd2ludGVyIHNoYWxsIGl0IGJlLgpBbmQgdGhlIExPUkQgc2hhbGwgYmUga2luZyBvdmVyIGFsbCB0aGUgZWFydGg6IGluIHRoYXQgZGF5IHNoYWxsIHRoZXJlIGJlIG9uZSBMT1JELCBhbmQgaGlzIG5hbWUgb25lLgpBbGwgdGhlIGxhbmQgc2hhbGwgYmUgdHVybmVkIGFzIGEgcGxhaW4gZnJvbSBHZWJhIHRvIFJpbW1vbiBzb3V0aCBvZiBKZXJ1c2FsZW06IGFuZCBpdCBzaGFsbCBiZSBsaWZ0ZWQgdXAsIGFuZCBpbmhhYml0ZWQgaW4gaGVyIHBsYWNlLCBmcm9tIEJlbmphbWluJ3MgZ2F0ZSB1bnRvIHRoZSBwbGFjZSBvZiB0aGUgZmlyc3QgZ2F0ZSwgdW50byB0aGUgY29ybmVyIGdhdGUsIGFuZCBmcm9tIHRoZSB0b3dlciBvZiBIYW5hbmVlbCB1bnRvIHRoZSBraW5nJ3Mgd2luZXByZXNzZXMuCkFuZCBtZW4gc2hhbGwgZHdlbGwgaW4gaXQsIGFuZCB0aGVyZSBzaGFsbCBiZSBubyBtb3JlIHV0dGVyIGRlc3RydWN0aW9uOyBidXQgSmVydXNhbGVtIHNoYWxsIGJlIHNhZmVseSBpbmhhYml0ZWQuCkFuZCB0aGlzIHNoYWxsIGJlIHRoZSBwbGFndWUgd2hlcmV3aXRoIHRoZSBMT1JEIHdpbGwgc21pdGUgYWxsIHRoZSBwZW9wbGUgdGhhdCBoYXZlIGZvdWdodCBhZ2FpbnN0IEplcnVzYWxlbTsgVGhlaXIgZmxlc2ggc2hhbGwgY29uc3VtZSBhd2F5IHdoaWxlIHRoZXkgc3RhbmQgdXBvbiB0aGVpciBmZWV0LCBhbmQgdGhlaXIgZXllcyBzaGFsbCBjb25zdW1lIGF3YXkgaW4gdGhlaXIgaG9sZXMsIGFuZCB0aGVpciB0b25ndWUgc2hhbGwgY29uc3VtZSBhd2F5IGluIHRoZWlyIG1vdXRoLgpBbmQgaXQgc2hhbGwgY29tZSB0byBwYXNzIGluIHRoYXQgZGF5LCB0aGF0IGEgZ3JlYXQgdHVtdWx0IGZyb20gdGhlIExPUkQgc2hhbGwgYmUgYW1vbmcgdGhlbTsgYW5kIHRoZXkgc2hhbGwgbGF5IGhvbGQgZXZlcnkgb25lIG9uIHRoZSBoYW5kIG9mIGhpcyBuZWlnaGJvdXIsIGFuZCBoaXMgaGFuZCBzaGFsbCByaXNlIHVwIGFnYWluc3QgdGhlIGhhbmQgb2YgaGlzIG5laWdoYm91ci4KQW5kIEp1ZGFoIGFsc28gc2hhbGwgZmlnaHQgYXQgSmVydXNhbGVtOyBhbmQgdGhlIHdlYWx0aCBvZiBhbGwgdGhlIGhlYXRoZW4gcm91bmQgYWJvdXQgc2hhbGwgYmUgZ2F0aGVyZWQgdG9nZXRoZXIsIGdvbGQsIGFuZCBzaWx2ZXIsIGFuZCBhcHBhcmVsLCBpbiBncmVhdCBhYnVuZGFuY2UuCkFuZCBzbyBzaGFsbCBiZSB0aGUgcGxhZ3VlIG9mIHRoZSBob3JzZSwgb2YgdGhlIG11bGUsIG9mIHRoZSBjYW1lbCwgYW5kIG9mIHRoZSBhc3MsIGFuZCBvZiBhbGwgdGhlIGJlYXN0cyB0aGF0IHNoYWxsIGJlIGluIHRoZXNlIHRlbnRzLCBhcyB0aGlzIHBsYWd1ZS4KQW5kIGl0IHNoYWxsIGNvbWUgdG8gcGFzcywgdGhhdCBldmVyeSBvbmUgdGhhdCBpcyBsZWZ0IG9mIGFsbCB0aGUgbmF0aW9ucyB3aGljaCBjYW1lIGFnYWluc3QgSmVydXNhbGVtIHNoYWxsIGV2ZW4gZ28gdXAgZnJvbSB5ZWFyIHRvIHllYXIgdG8gd29yc2hpcCB0aGUgS2luZywgdGhlIExPUkQgb2YgaG9zdHMsIGFuZCB0byBrZWVwIHRoZSBmZWFzdCBvZiB0YWJlcm5hY2xlcy4KQW5kIGl0IHNoYWxsIGJlLCB0aGF0IHdob3NvIHdpbGwgbm90IGNvbWUgdXAgb2YgYWxsIHRoZSBmYW1pbGllcyBvZiB0aGUgZWFydGggdW50byBKZXJ1c2FsZW0gdG8gd29yc2hpcCB0aGUgS2luZywgdGhlIExPUkQgb2YgaG9zdHMsIGV2ZW4gdXBvbiB0aGVtIHNoYWxsIGJlIG5vIHJhaW4uCkFuZCBpZiB0aGUgZmFtaWx5IG9mIEVneXB0IGdvIG5vdCB1cCwgYW5kIGNvbWUgbm90LCB0aGF0IGhhdmUgbm8gcmFpbjsgdGhlcmUgc2hhbGwgYmUgdGhlIHBsYWd1ZSwgd2hlcmV3aXRoIHRoZSBMT1JEIHdpbGwgc21pdGUgdGhlIGhlYXRoZW4gdGhhdCBjb21lIG5vdCB1cCB0byBrZWVwIHRoZSBmZWFzdCBvZiB0YWJlcm5hY2xlcy4KVGhpcyBzaGFsbCBiZSB0aGUgcHVuaXNobWVudCBvZiBFZ3lwdCwgYW5kIHRoZSBwdW5pc2htZW50IG9mIGFsbCBuYXRpb25zIHRoYXQgY29tZSBub3QgdXAgdG8ga2VlcCB0aGUgZmVhc3Qgb2YgdGFiZXJuYWNsZXMuCkluIHRoYXQgZGF5IHNoYWxsIHRoZXJlIGJlIHVwb24gdGhlIGJlbGxzIG9mIHRoZSBob3JzZXMsIEhPTElORVNTIFVOVE8gVEhFIExPUkQ7IGFuZCB0aGUgcG90cyBpbiB0aGUgTE9SRCdzIGhvdXNlIHNoYWxsIGJlIGxpa2UgdGhlIGJvd2xzIGJlZm9yZSB0aGUgYWx0YXIuClllYSwgZXZlcnkgcG90IGluIEplcnVzYWxlbSBhbmQgaW4gSnVkYWggc2hhbGwgYmUgaG9saW5lc3MgdW50byB0aGUgTE9SRCBvZiBob3N0czogYW5kIGFsbCB0aGV5IHRoYXQgc2FjcmlmaWNlIHNoYWxsIGNvbWUgYW5kIHRha2Ugb2YgdGhlbSwgYW5kIHNlZXRoZSB0aGVyZWluOiBhbmQgaW4gdGhhdCBkYXkgdGhlcmUgc2hhbGwgYmUgbm8gbW9yZSB0aGUgQ2FuYWFuaXRlIGluIHRoZSBob3VzZSBvZiB0aGUgTE9SRCBvZiBob3N0cy4KVGhlIGJ1cmRlbiBvZiB0aGUgd29yZCBvZiB0aGUgTE9SRCB0byBJc3JhZWwgYnkgTWFsYWNoaS4KSSBoYXZlIGxvdmVkIHlvdSwgc2FpdGggdGhlIExPUkQuIFlldCB5ZSBzYXksIFdoZXJlaW4gaGFzdCB0aG91IGxvdmVkIHVzPyBXYXMgbm90IEVzYXUgSmFjb2IncyBicm90aGVyPyBzYWl0aCB0aGUgTE9SRDogeWV0IEkgbG92ZWQgSmFjb2IsCkFuZCBJIGhhdGVkIEVzYXUsIGFuZCBsYWlkIGhpcyBtb3VudGFpbnMgYW5kIGhpcyBoZXJpdGFnZSB3YXN0ZSBmb3IgdGhlIGRyYWdvbnMgb2YgdGhlIHdpbGRlcm5lc3MuCldoZXJlYXMgRWRvbSBzYWl0aCwgV2UgYXJlIGltcG92ZXJpc2hlZCwgYnV0IHdlIHdpbGwgcmV0dXJuIGFuZCBidWlsZCB0aGUgZGVzb2xhdGUgcGxhY2VzOyB0aHVzIHNhaXRoIHRoZSBMT1JEIG9mIGhvc3RzLCBUaGV5IHNoYWxsIGJ1aWxkLCBidXQgSSB3aWxsIHRocm93IGRvd247IGFuZCB0aGV5IHNoYWxsIGNhbGwgdGhlbSwgVGhlIGJvcmRlciBvZiB3aWNrZWRuZXNzLCBhbmQsIFRoZSBwZW9wbGUgYWdhaW5zdCB3aG9tIHRoZSBMT1JEIGhhdGggaW5kaWduYXRpb24gZm9yIGV2ZXIuCkFuZCB5b3VyIGV5ZXMgc2hhbGwgc2VlLCBhbmQgeWUgc2hhbGwgc2F5LCBUaGUgTE9SRCB3aWxsIGJlIG1hZ25pZmllZCBmcm9tIHRoZSBib3JkZXIgb2YgSXNyYWVsLgpBIHNvbiBob25vdXJldGggaGlzIGZhdGhlciwgYW5kIGEgc2VydmFudCBoaXMgbWFzdGVyOiBpZiB0aGVuIEkgYmUgYSBmYXRoZXIsIHdoZXJlIGlzIG1pbmUgaG9ub3VyPyBhbmQgaWYgSSBiZSBhIG1hc3Rlciwgd2hlcmUgaXMgbXkgZmVhcj8gc2FpdGggdGhlIExPUkQgb2YgaG9zdHMgdW50byB5b3UsIE8gcHJpZXN0cywgdGhhdCBkZXNwaXNlIG15IG5hbWUuIEFuZCB5ZSBzYXksIFdoZXJlaW4gaGF2ZSB3ZSBkZXNwaXNlZCB0aHkgbmFtZT8KWWUgb2ZmZXIgcG9sbHV0ZWQgYnJlYWQgdXBvbiBtaW5lIGFsdGFyOyBhbmQgeWUgc2F5LCBXaGVyZWluIGhhdmUgd2UgcG9sbHV0ZWQgdGhlZT8gSW4gdGhhdCB5ZSBzYXksIFRoZSB0YWJsZSBvZiB0aGUgTE9SRCBpcyBjb250ZW1wdGlibGUuCkFuZCBpZiB5ZSBvZmZlciB0aGUgYmxpbmQgZm9yIHNhY3JpZmljZSwgaXMgaXQgbm90IGV2aWw/IGFuZCBpZiB5ZSBvZmZlciB0aGUgbGFtZSBhbmQgc2ljaywgaXMgaXQgbm90IGV2aWw/IG9mZmVyIGl0IG5vdyB1bnRvIHRoeSBnb3Zlcm5vcjsgd2lsbCBoZSBiZSBwbGVhc2VkIHdpdGggdGhlZSwgb3IgYWNjZXB0IHRoeSBwZXJzb24/IHNhaXRoIHRoZSBMT1JEIG9mIGhvc3RzLgpBbmQgbm93LCBJIHByYXkgeW91LCBiZXNlZWNoIEdvZCB0aGF0IGhlIHdpbGwgYmUgZ3JhY2lvdXMgdW50byB1czogdGhpcyBoYXRoIGJlZW4gYnkgeW91ciBtZWFuczogd2lsbCBoZSByZWdhcmQgeW91ciBwZXJzb25zPyBzYWl0aCB0aGUgTE9SRCBvZiBob3N0cy4KV2hvIGlzIHRoZXJlIGV2ZW4gYW1vbmcgeW91IHRoYXQgd291bGQgc2h1dCB0aGUgZG9vcnMgZm9yIG5vdWdodD8gbmVpdGhlciBkbyB5ZSBraW5kbGUgZmlyZSBvbiBtaW5lIGFsdGFyIGZvciBub3VnaHQuIEkgaGF2ZSBubyBwbGVhc3VyZSBpbiB5b3UsIHNhaXRoIHRoZSBMT1JEIG9mIGhvc3RzLCBuZWl0aGVyIHdpbGwgSSBhY2NlcHQgYW4gb2ZmZXJpbmcgYXQgeW91ciBoYW5kLgpGb3IgZnJvbSB0aGUgcmlzaW5nIG9mIHRoZSBzdW4gZXZlbiB1bnRvIHRoZSBnb2luZyBkb3duIG9mIHRoZSBzYW1lIG15IG5hbWUgc2hhbGwgYmUgZ3JlYXQgYW1vbmcgdGhlIEdlbnRpbGVzOyBhbmQgaW4gZXZlcnkgcGxhY2UgaW5jZW5zZSBzaGFsbCBiZSBvZmZlcmVkIHVudG8gbXkgbmFtZSwgYW5kIGEgcHVyZSBvZmZlcmluZzogZm9yIG15IG5hbWUgc2hhbGwgYmUgZ3JlYXQgYW1vbmcgdGhlIGhlYXRoZW4sIHNhaXRoIHRoZSBMT1JEIG9mIGhvc3RzLgpCdXQgeWUgaGF2ZSBwcm9mYW5lZCBpdCwgaW4gdGhhdCB5ZSBzYXksIFRoZSB0YWJsZSBvZiB0aGUgTE9SRCBpcyBwb2xsdXRlZDsgYW5kIHRoZSBmcnVpdCB0aGVyZW9mLCBldmVuIGhpcyBtZWF0LCBpcyBjb250ZW1wdGlibGUuClllIHNhaWQgYWxzbywgQmVob2xkLCB3aGF0IGEgd2VhcmluZXNzIGlzIGl0ISBhbmQgeWUgaGF2ZSBzbnVmZmVkIGF0IGl0LCBzYWl0aCB0aGUgTE9SRCBvZiBob3N0czsgYW5kIHllIGJyb3VnaHQgdGhhdCB3aGljaCB3YXMgdG9ybiwgYW5kIHRoZSBsYW1lLCBhbmQgdGhlIHNpY2s7IHRodXMgeWUgYnJvdWdodCBhbiBvZmZlcmluZzogc2hvdWxkIEkgYWNjZXB0IHRoaXMgb2YgeW91ciBoYW5kPyBzYWl0aCB0aGUgTE9SRC4KQnV0IGN1cnNlZCBiZSB0aGUgZGVjZWl2ZXIsIHdoaWNoIGhhdGggaW4gaGlzIGZsb2NrIGEgbWFsZSwgYW5kIHZvd2V0aCwgYW5kIHNhY3JpZmljZXRoIHVudG8gdGhlIExPUkQgYSBjb3JydXB0IHRoaW5nOiBmb3IgSSBhbSBhIGdyZWF0IEtpbmcsIHNhaXRoIHRoZSBMT1JEIG9mIGhvc3RzLCBhbmQgbXkgbmFtZSBpcyBkcmVhZGZ1bCBhbW9uZyB0aGUgaGVhdGhlbi4KQW5kIG5vdywgTyB5ZSBwcmllc3RzLCB0aGlzIGNvbW1hbmRtZW50IGlzIGZvciB5b3UuCklmIHllIHdpbGwgbm90IGhlYXIsIGFuZCBpZiB5ZSB3aWxsIG5vdCBsYXkgaXQgdG8gaGVhcnQsIHRvIGdpdmUgZ2xvcnkgdW50byBteSBuYW1lLCBzYWl0aCB0aGUgTE9SRCBvZiBob3N0cywgSSB3aWxsIGV2ZW4gc2VuZCBhIGN1cnNlIHVwb24geW91LCBhbmQgSSB3aWxsIGN1cnNlIHlvdXIgYmxlc3NpbmdzOiB5ZWEsIEkgaGF2ZSBjdXJzZWQgdGhlbSBhbHJlYWR5LCBiZWNhdXNlIHllIGRvIG5vdCBsYXkgaXQgdG8gaGVhcnQuCkJlaG9sZCwgSSB3aWxsIGNvcnJ1cHQgeW91ciBzZWVkLCBhbmQgc3ByZWFkIGR1bmcgdXBvbiB5b3VyIGZhY2VzLCBldmVuIHRoZSBkdW5nIG9mIHlvdXIgc29sZW1uIGZlYXN0czsgYW5kIG9uZSBzaGFsbCB0YWtlIHlvdSBhd2F5IHdpdGggaXQuCkFuZCB5ZSBzaGFsbCBrbm93IHRoYXQgSSBoYXZlIHNlbnQgdGhpcyBjb21tYW5kbWVudCB1bnRvIHlvdSwgdGhhdCBteSBjb3ZlbmFudCBtaWdodCBiZSB3aXRoIExldmksIHNhaXRoIHRoZSBMT1JEIG9mIGhvc3RzLgpNeSBjb3ZlbmFudCB3YXMgd2l0aCBoaW0gb2YgbGlmZSBhbmQgcGVhY2U7IGFuZCBJIGdhdmUgdGhlbSB0byBoaW0gZm9yIHRoZSBmZWFyIHdoZXJld2l0aCBoZSBmZWFyZWQgbWUsIGFuZCB3YXMgYWZyYWlkIGJlZm9yZSBteSBuYW1lLgpUaGUgbGF3IG9mIHRydXRoIHdhcyBpbiBoaXMgbW91dGgsIGFuZCBpbmlxdWl0eSB3YXMgbm90IGZvdW5kIGluIGhpcyBsaXBzOiBoZSB3YWxrZWQgd2l0aCBtZSBpbiBwZWFjZSBhbmQgZXF1aXR5LCBhbmQgZGlkIHR1cm4gbWFueSBhd2F5IGZyb20gaW5pcXVpdHkuCkZvciB0aGUgcHJpZXN0J3MgbGlwcyBzaG91bGQga2VlcCBrbm93bGVkZ2UsIGFuZCB0aGV5IHNob3VsZCBzZWVrIHRoZSBsYXcgYXQgaGlzIG1vdXRoOiBmb3IgaGUgaXMgdGhlIG1lc3NlbmdlciBvZiB0aGUgTE9SRCBvZiBob3N0cy4KQnV0IHllIGFyZSBkZXBhcnRlZCBvdXQgb2YgdGhlIHdheTsgeWUgaGF2ZSBjYXVzZWQgbWFueSB0byBzdHVtYmxlIGF0IHRoZSBsYXc7IHllIGhhdmUgY29ycnVwdGVkIHRoZSBjb3ZlbmFudCBvZiBMZXZpLCBzYWl0aCB0aGUgTE9SRCBvZiBob3N0cy4KVGhlcmVmb3JlIGhhdmUgSSBhbHNvIG1hZGUgeW91IGNvbnRlbXB0aWJsZSBhbmQgYmFzZSBiZWZvcmUgYWxsIHRoZSBwZW9wbGUsIGFjY29yZGluZyBhcyB5ZSBoYXZlIG5vdCBrZXB0IG15IHdheXMsIGJ1dCBoYXZlIGJlZW4gcGFydGlhbCBpbiB0aGUgbGF3LgpIYXZlIHdlIG5vdCBhbGwgb25lIGZhdGhlcj8gaGF0aCBub3Qgb25lIEdvZCBjcmVhdGVkIHVzPyB3aHkgZG8gd2UgZGVhbCB0cmVhY2hlcm91c2x5IGV2ZXJ5IG1hbiBhZ2FpbnN0IGhpcyBicm90aGVyLCBieSBwcm9mYW5pbmcgdGhlIGNvdmVuYW50IG9mIG91ciBmYXRoZXJzPwpKdWRhaCBoYXRoIGRlYWx0IHRyZWFjaGVyb3VzbHksIGFuZCBhbiBhYm9taW5hdGlvbiBpcyBjb21taXR0ZWQgaW4gSXNyYWVsIGFuZCBpbiBKZXJ1c2FsZW07IGZvciBKdWRhaCBoYXRoIHByb2ZhbmVkIHRoZSBob2xpbmVzcyBvZiB0aGUgTE9SRCB3aGljaCBoZSBsb3ZlZCwgYW5kIGhhdGggbWFycmllZCB0aGUgZGF1Z2h0ZXIgb2YgYSBzdHJhbmdlIGdvZC4KVGhlIExPUkQgd2lsbCBjdXQgb2ZmIHRoZSBtYW4gdGhhdCBkb2V0aCB0aGlzLCB0aGUgbWFzdGVyIGFuZCB0aGUgc2Nob2xhciwgb3V0IG9mIHRoZSB0YWJlcm5hY2xlcyBvZiBKYWNvYiwgYW5kIGhpbSB0aGF0IG9mZmVyZXRoIGFuIG9mZmVyaW5nIHVudG8gdGhlIExPUkQgb2YgaG9zdHMuCkFuZCB0aGlzIGhhdmUgeWUgZG9uZSBhZ2FpbiwgY292ZXJpbmcgdGhlIGFsdGFyIG9mIHRoZSBMT1JEIHdpdGggdGVhcnMsIHdpdGggd2VlcGluZywgYW5kIHdpdGggY3J5aW5nIG91dCwgaW5zb211Y2ggdGhhdCBoZSByZWdhcmRldGggbm90IHRoZSBvZmZlcmluZyBhbnkgbW9yZSwgb3IgcmVjZWl2ZXRoIGl0IHdpdGggZ29vZCB3aWxsIGF0IHlvdXIgaGFuZC4KWWV0IHllIHNheSwgV2hlcmVmb3JlPyBCZWNhdXNlIHRoZSBMT1JEIGhhdGggYmVlbiB3aXRuZXNzIGJldHdlZW4gdGhlZSBhbmQgdGhlIHdpZmUgb2YgdGh5IHlvdXRoLCBhZ2FpbnN0IHdob20gdGhvdSBoYXN0IGRlYWx0IHRyZWFjaGVyb3VzbHk6IHlldCBpcyBzaGUgdGh5IGNvbXBhbmlvbiwgYW5kIHRoZSB3aWZlIG9mIHRoeSBjb3ZlbmFudC4KQW5kIGRpZCBub3QgaGUgbWFrZSBvbmU/IFlldCBoYWQgaGUgdGhlIHJlc2lkdWUgb2YgdGhlIHNwaXJpdC4gQW5kIHdoZXJlZm9yZSBvbmU/IFRoYXQgaGUgbWlnaHQgc2VlayBhIGdvZGx5IHNlZWQuIFRoZXJlZm9yZSB0YWtlIGhlZWQgdG8geW91ciBzcGlyaXQsIGFuZCBsZXQgbm9uZSBkZWFsIHRyZWFjaGVyb3VzbHkgYWdhaW5zdCB0aGUgd2lmZSBvZiBoaXMgeW91dGguCkZvciB0aGUgTE9SRCwgdGhlIEdvZCBvZiBJc3JhZWwsIHNhaXRoIHRoYXQgaGUgaGF0ZXRoIHB1dHRpbmcgYXdheTogZm9yIG9uZSBjb3ZlcmV0aCB2aW9sZW5jZSB3aXRoIGhpcyBnYXJtZW50LCBzYWl0aCB0aGUgTE9SRCBvZiBob3N0czogdGhlcmVmb3JlIHRha2UgaGVlZCB0byB5b3VyIHNwaXJpdCwgdGhhdCB5ZSBkZWFsIG5vdCB0cmVhY2hlcm91c2x5LgpZZSBoYXZlIHdlYXJpZWQgdGhlIExPUkQgd2l0aCB5b3VyIHdvcmRzLiBZZXQgeWUgc2F5LCBXaGVyZWluIGhhdmUgd2Ugd2VhcmllZCBoaW0/IFdoZW4geWUgc2F5LCBFdmVyeSBvbmUgdGhhdCBkb2V0aCBldmlsIGlzIGdvb2QgaW4gdGhlIHNpZ2h0IG9mIHRoZSBMT1JELCBhbmQgaGUgZGVsaWdodGV0aCBpbiB0aGVtOyBvciwgV2hlcmUgaXMgdGhlIEdvZCBvZiBqdWRnbWVudD8KQmVob2xkLCBJIHdpbGwgc2VuZCBteSBtZXNzZW5nZXIsIGFuZCBoZSBzaGFsbCBwcmVwYXJlIHRoZSB3YXkgYmVmb3JlIG1lOiBhbmQgdGhlIExPUkQsIHdob20geWUgc2Vlaywgc2hhbGwgc3VkZGVubHkgY29tZSB0byBoaXMgdGVtcGxlLCBldmVuIHRoZSBtZXNzZW5nZXIgb2YgdGhlIGNvdmVuYW50LCB3aG9tIHllIGRlbGlnaHQgaW46IGJlaG9sZCwgaGUgc2hhbGwgY29tZSwgc2FpdGggdGhlIExPUkQgb2YgaG9zdHMuCkJ1dCB3aG8gbWF5IGFiaWRlIHRoZSBkYXkgb2YgaGlzIGNvbWluZz8gYW5kIHdobyBzaGFsbCBzdGFuZCB3aGVuIGhlIGFwcGVhcmV0aD8gZm9yIGhlIGlzIGxpa2UgYSByZWZpbmVyJ3MgZmlyZSwgYW5kIGxpa2UgZnVsbGVycycgc29hcDoKQW5kIGhlIHNoYWxsIHNpdCBhcyBhIHJlZmluZXIgYW5kIHB1cmlmaWVyIG9mIHNpbHZlcjogYW5kIGhlIHNoYWxsIHB1cmlmeSB0aGUgc29ucyBvZiBMZXZpLCBhbmQgcHVyZ2UgdGhlbSBhcyBnb2xkIGFuZCBzaWx2ZXIsIHRoYXQgdGhleSBtYXkgb2ZmZXIgdW50byB0aGUgTE9SRCBhbiBvZmZlcmluZyBpbiByaWdodGVvdXNuZXNzLgpUaGVuIHNoYWxsIHRoZSBvZmZlcmluZyBvZiBKdWRhaCBhbmQgSmVydXNhbGVtIGJlIHBsZWFzYW50IHVudG8gdGhlIExPUkQsIGFzIGluIHRoZSBkYXlzIG9mIG9sZCwgYW5kIGFzIGluIGZvcm1lciB5ZWFycy4KQW5kIEkgd2lsbCBjb21lIG5lYXIgdG8geW91IHRvIGp1ZGdtZW50OyBhbmQgSSB3aWxsIGJlIGEgc3dpZnQgd2l0bmVzcyBhZ2FpbnN0IHRoZSBzb3JjZXJlcnMsIGFuZCBhZ2FpbnN0IHRoZSBhZHVsdGVyZXJzLCBhbmQgYWdhaW5zdCBmYWxzZSBzd2VhcmVycywgYW5kIGFnYWluc3QgdGhvc2UgdGhhdCBvcHByZXNzIHRoZSBoaXJlbGluZyBpbiBoaXMgd2FnZXMsIHRoZSB3aWRvdywgYW5kIHRoZSBmYXRoZXJsZXNzLCBhbmQgdGhhdCB0dXJuIGFzaWRlIHRoZSBzdHJhbmdlciBmcm9tIGhpcyByaWdodCwgYW5kIGZlYXIgbm90IG1lLCBzYWl0aCB0aGUgTE9SRCBvZiBob3N0cy4KRm9yIEkgYW0gdGhlIExPUkQsIEkgY2hhbmdlIG5vdDsgdGhlcmVmb3JlIHllIHNvbnMgb2YgSmFjb2IgYXJlIG5vdCBjb25zdW1lZC4KRXZlbiBmcm9tIHRoZSBkYXlzIG9mIHlvdXIgZmF0aGVycyB5ZSBhcmUgZ29uZSBhd2F5IGZyb20gbWluZSBvcmRpbmFuY2VzLCBhbmQgaGF2ZSBub3Qga2VwdCB0aGVtLiBSZXR1cm4gdW50byBtZSwgYW5kIEkgd2lsbCByZXR1cm4gdW50byB5b3UsIHNhaXRoIHRoZSBMT1JEIG9mIGhvc3RzLiBCdXQgeWUgc2FpZCwgV2hlcmVpbiBzaGFsbCB3ZSByZXR1cm4/CldpbGwgYSBtYW4gcm9iIEdvZD8gWWV0IHllIGhhdmUgcm9iYmVkIG1lLiBCdXQgeWUgc2F5LCBXaGVyZWluIGhhdmUgd2Ugcm9iYmVkIHRoZWU/IEluIHRpdGhlcyBhbmQgb2ZmZXJpbmdzLgpZZSBhcmUgY3Vyc2VkIHdpdGggYSBjdXJzZTogZm9yIHllIGhhdmUgcm9iYmVkIG1lLCBldmVuIHRoaXMgd2hvbGUgbmF0aW9uLgpCcmluZyB5ZSBhbGwgdGhlIHRpdGhlcyBpbnRvIHRoZSBzdG9yZWhvdXNlLCB0aGF0IHRoZXJlIG1heSBiZSBtZWF0IGluIG1pbmUgaG91c2UsIGFuZCBwcm92ZSBtZSBub3cgaGVyZXdpdGgsIHNhaXRoIHRoZSBMT1JEIG9mIGhvc3RzLCBpZiBJIHdpbGwgbm90IG9wZW4geW91IHRoZSB3aW5kb3dzIG9mIGhlYXZlbiwgYW5kIHBvdXIgeW91IG91dCBhIGJsZXNzaW5nLCB0aGF0IHRoZXJlIHNoYWxsIG5vdCBiZSByb29tIGVub3VnaCB0byByZWNlaXZlIGl0LgpBbmQgSSB3aWxsIHJlYnVrZSB0aGUgZGV2b3VyZXIgZm9yIHlvdXIgc2FrZXMsIGFuZCBoZSBzaGFsbCBub3QgZGVzdHJveSB0aGUgZnJ1aXRzIG9mIHlvdXIgZ3JvdW5kOyBuZWl0aGVyIHNoYWxsIHlvdXIgdmluZSBjYXN0IGhlciBmcnVpdCBiZWZvcmUgdGhlIHRpbWUgaW4gdGhlIGZpZWxkLCBzYWl0aCB0aGUgTE9SRCBvZiBob3N0cy4KQW5kIGFsbCBuYXRpb25zIHNoYWxsIGNhbGwgeW91IGJsZXNzZWQ6IGZvciB5ZSBzaGFsbCBiZSBhIGRlbGlnaHRzb21lIGxhbmQsIHNhaXRoIHRoZSBMT1JEIG9mIGhvc3RzLgpZb3VyIHdvcmRzIGhhdmUgYmVlbiBzdG91dCBhZ2FpbnN0IG1lLCBzYWl0aCB0aGUgTE9SRC4gWWV0IHllIHNheSwgV2hhdCBoYXZlIHdlIHNwb2tlbiBzbyBtdWNoIGFnYWluc3QgdGhlZT8KWWUgaGF2ZSBzYWlkLCBJdCBpcyB2YWluIHRvIHNlcnZlIEdvZDogYW5kIHdoYXQgcHJvZml0IGlzIGl0IHRoYXQgd2UgaGF2ZSBrZXB0IGhpcyBvcmRpbmFuY2UsIGFuZCB0aGF0IHdlIGhhdmUgd2Fsa2VkIG1vdXJuZnVsbHkgYmVmb3JlIHRoZSBMT1JEIG9mIGhvc3RzPwpBbmQgbm93IHdlIGNhbGwgdGhlIHByb3VkIGhhcHB5OyB5ZWEsIHRoZXkgdGhhdCB3b3JrIHdpY2tlZG5lc3MgYXJlIHNldCB1cDsgeWVhLCB0aGV5IHRoYXQgdGVtcHQgR29kIGFyZSBldmVuIGRlbGl2ZXJlZC4KVGhlbiB0aGV5IHRoYXQgZmVhcmVkIHRoZSBMT1JEIHNwYWtlIG9mdGVuIG9uZSB0byBhbm90aGVyOiBhbmQgdGhlIExPUkQgaGVhcmtlbmVkLCBhbmQgaGVhcmQgaXQsIGFuZCBhIGJvb2sgb2YgcmVtZW1icmFuY2Ugd2FzIHdyaXR0ZW4gYmVmb3JlIGhpbSBmb3IgdGhlbSB0aGF0IGZlYXJlZCB0aGUgTE9SRCwgYW5kIHRoYXQgdGhvdWdodCB1cG9uIGhpcyBuYW1lLgpBbmQgdGhleSBzaGFsbCBiZSBtaW5lLCBzYWl0aCB0aGUgTE9SRCBvZiBob3N0cywgaW4gdGhhdCBkYXkgd2hlbiBJIG1ha2UgdXAgbXkgamV3ZWxzOyBhbmQgSSB3aWxsIHNwYXJlIHRoZW0sIGFzIGEgbWFuIHNwYXJldGggaGlzIG93biBzb24gdGhhdCBzZXJ2ZXRoIGhpbS4KVGhlbiBzaGFsbCB5ZSByZXR1cm4sIGFuZCBkaXNjZXJuIGJldHdlZW4gdGhlIHJpZ2h0ZW91cyBhbmQgdGhlIHdpY2tlZCwgYmV0d2VlbiBoaW0gdGhhdCBzZXJ2ZXRoIEdvZCBhbmQgaGltIHRoYXQgc2VydmV0aCBoaW0gbm90LgpGb3IsIGJlaG9sZCwgdGhlIGRheSBjb21ldGgsIHRoYXQgc2hhbGwgYnVybiBhcyBhbiBvdmVuOyBhbmQgYWxsIHRoZSBwcm91ZCwgeWVhLCBhbmQgYWxsIHRoYXQgZG8gd2lja2VkbHksIHNoYWxsIGJlIHN0dWJibGU6IGFuZCB0aGUgZGF5IHRoYXQgY29tZXRoIHNoYWxsIGJ1cm4gdGhlbSB1cCwgc2FpdGggdGhlIExPUkQgb2YgaG9zdHMsIHRoYXQgaXQgc2hhbGwgbGVhdmUgdGhlbSBuZWl0aGVyIHJvb3Qgbm9yIGJyYW5jaC4KQnV0IHVudG8geW91IHRoYXQgZmVhciBteSBuYW1lIHNoYWxsIHRoZSBTdW4gb2YgcmlnaHRlb3VzbmVzcyBhcmlzZSB3aXRoIGhlYWxpbmcgaW4gaGlzIHdpbmdzOyBhbmQgeWUgc2hhbGwgZ28gZm9ydGgsIGFuZCBncm93IHVwIGFzIGNhbHZlcyBvZiB0aGUgc3RhbGwuCkFuZCB5ZSBzaGFsbCB0cmVhZCBkb3duIHRoZSB3aWNrZWQ7IGZvciB0aGV5IHNoYWxsIGJlIGFzaGVzIHVuZGVyIHRoZSBzb2xlcyBvZiB5b3VyIGZlZXQgaW4gdGhlIGRheSB0aGF0IEkgc2hhbGwgZG8gdGhpcywgc2FpdGggdGhlIExPUkQgb2YgaG9zdHMuClJlbWVtYmVyIHllIHRoZSBsYXcgb2YgTW9zZXMgbXkgc2VydmFudCwgd2hpY2ggSSBjb21tYW5kZWQgdW50byBoaW0gaW4gSG9yZWIgZm9yIGFsbCBJc3JhZWwsIHdpdGggdGhlIHN0YXR1dGVzIGFuZCBqdWRnbWVudHMuCkJlaG9sZCwgSSB3aWxsIHNlbmQgeW91IEVsaWphaCB0aGUgcHJvcGhldCBiZWZvcmUgdGhlIGNvbWluZyBvZiB0aGUgZ3JlYXQgYW5kIGRyZWFkZnVsIGRheSBvZiB0aGUgTE9SRDoKQW5kIGhlIHNoYWxsIHR1cm4gdGhlIGhlYXJ0IG9mIHRoZSBmYXRoZXJzIHRvIHRoZSBjaGlsZHJlbiwgYW5kIHRoZSBoZWFydCBvZiB0aGUgY2hpbGRyZW4gdG8gdGhlaXIgZmF0aGVycywgbGVzdCBJIGNvbWUgYW5kIHNtaXRlIHRoZSBlYXJ0aCB3aXRoIGEgY3Vyc2UuClRoZSBib29rIG9mIHRoZSBnZW5lcmF0aW9uIG9mIEplc3VzIENocmlzdCwgdGhlIHNvbiBvZiBEYXZpZCwgdGhlIHNvbiBvZiBBYnJhaGFtLgpBYnJhaGFtIGJlZ2F0IElzYWFjOyBhbmQgSXNhYWMgYmVnYXQgSmFjb2I7IGFuZCBKYWNvYiBiZWdhdCBKdWRhcyBhbmQgaGlzIGJyZXRocmVuOwpBbmQgSnVkYXMgYmVnYXQgUGhhcmVzIGFuZCBaYXJhIG9mIFRoYW1hcjsgYW5kIFBoYXJlcyBiZWdhdCBFc3JvbTsgYW5kIEVzcm9tIGJlZ2F0IEFyYW07CkFuZCBBcmFtIGJlZ2F0IEFtaW5hZGFiOyBhbmQgQW1pbmFkYWIgYmVnYXQgTmFhc3NvbjsgYW5kIE5hYXNzb24gYmVnYXQgU2FsbW9uOwpBbmQgU2FsbW9uIGJlZ2F0IEJvb3ogb2YgUmFjaGFiOyBhbmQgQm9veiBiZWdhdCBPYmVkIG9mIFJ1dGg7IGFuZCBPYmVkIGJlZ2F0IEplc3NlOwpBbmQgSmVzc2UgYmVnYXQgRGF2aWQgdGhlIGtpbmc7IGFuZCBEYXZpZCB0aGUga2luZyBiZWdhdCBTb2xvbW9uIG9mIGhlciB0aGF0IGhhZCBiZWVuIHRoZSB3aWZlIG9mIFVyaWFzOwpBbmQgU29sb21vbiBiZWdhdCBSb2JvYW07IGFuZCBSb2JvYW0gYmVnYXQgQWJpYTsgYW5kIEFiaWEgYmVnYXQgQXNhOwpBbmQgQXNhIGJlZ2F0IEpvc2FwaGF0OyBhbmQgSm9zYXBoYXQgYmVnYXQgSm9yYW07IGFuZCBKb3JhbSBiZWdhdCBPemlhczsKQW5kIE96aWFzIGJlZ2F0IEpvYXRoYW07IGFuZCBKb2F0aGFtIGJlZ2F0IEFjaGF6OyBhbmQgQWNoYXogYmVnYXQgRXpla2lhczsKQW5kIEV6ZWtpYXMgYmVnYXQgTWFuYXNzZXM7IGFuZCBNYW5hc3NlcyBiZWdhdCBBbW9uOyBhbmQgQW1vbiBiZWdhdCBKb3NpYXM7CkFuZCBKb3NpYXMgYmVnYXQgSmVjaG9uaWFzIGFuZCBoaXMgYnJldGhyZW4sIGFib3V0IHRoZSB0aW1lIHRoZXkgd2VyZSBjYXJyaWVkIGF3YXkgdG8gQmFieWxvbjoKQW5kIGFmdGVyIHRoZXkgd2VyZSBicm91Z2h0IHRvIEJhYnlsb24sIEplY2hvbmlhcyBiZWdhdCBTYWxhdGhpZWw7IGFuZCBTYWxhdGhpZWwgYmVnYXQgWm9yb2JhYmVsOwpBbmQgWm9yb2JhYmVsIGJlZ2F0IEFiaXVkOyBhbmQgQWJpdWQgYmVnYXQgRWxpYWtpbTsgYW5kIEVsaWFraW0gYmVnYXQgQXpvcjsKQW5kIEF6b3IgYmVnYXQgU2Fkb2M7IGFuZCBTYWRvYyBiZWdhdCBBY2hpbTsgYW5kIEFjaGltIGJlZ2F0IEVsaXVkOwpBbmQgRWxpdWQgYmVnYXQgRWxlYXphcjsgYW5kIEVsZWF6YXIgYmVnYXQgTWF0dGhhbjsgYW5kIE1hdHRoYW4gYmVnYXQgSmFjb2I7CkFuZCBKYWNvYiBiZWdhdCBKb3NlcGggdGhlIGh1c2JhbmQgb2YgTWFyeSwgb2Ygd2hvbSB3YXMgYm9ybiBKZXN1cywgd2hvIGlzIGNhbGxlZCBDaHJpc3QuClNvIGFsbCB0aGUgZ2VuZXJhdGlvbnMgZnJvbSBBYnJhaGFtIHRvIERhdmlkIGFyZSBmb3VydGVlbiBnZW5lcmF0aW9uczsgYW5kIGZyb20gRGF2aWQgdW50aWwgdGhlIGNhcnJ5aW5nIGF3YXkgaW50byBCYWJ5bG9uIGFyZSBmb3VydGVlbiBnZW5lcmF0aW9uczsgYW5kIGZyb20gdGhlIGNhcnJ5aW5nIGF3YXkgaW50byBCYWJ5bG9uIHVudG8gQ2hyaXN0IGFyZSBmb3VydGVlbiBnZW5lcmF0aW9ucy4KTm93IHRoZSBiaXJ0aCBvZiBKZXN1cyBDaHJpc3Qgd2FzIG9uIHRoaXMgd2lzZTogV2hlbiBhcyBoaXMgbW90aGVyIE1hcnkgd2FzIGVzcG91c2VkIHRvIEpvc2VwaCwgYmVmb3JlIHRoZXkgY2FtZSB0b2dldGhlciwgc2hlIHdhcyBmb3VuZCB3aXRoIGNoaWxkIG9mIHRoZSBIb2x5IEdob3N0LgpUaGVuIEpvc2VwaCBoZXIgaHVzYmFuZCwgYmVpbmcgYSBqdXN0IG1hbiwgYW5kIG5vdCB3aWxsaW5nIHRvIG1ha2UgaGVyIGEgcHVibGljayBleGFtcGxlLCB3YXMgbWluZGVkIHRvIHB1dCBoZXIgYXdheSBwcml2aWx5LgpCdXQgd2hpbGUgaGUgdGhvdWdodCBvbiB0aGVzZSB0aGluZ3MsIGJlaG9sZCwgdGhlIGFuZ2VsIG9mIHRoZSBMT1JEIGFwcGVhcmVkIHVudG8gaGltIGluIGEgZHJlYW0sIHNheWluZywgSm9zZXBoLCB0aG91IHNvbiBvZiBEYXZpZCwgZmVhciBub3QgdG8gdGFrZSB1bnRvIHRoZWUgTWFyeSB0aHkgd2lmZTogZm9yIHRoYXQgd2hpY2ggaXMgY29uY2VpdmVkIGluIGhlciBpcyBvZiB0aGUgSG9seSBHaG9zdC4KQW5kIHNoZSBzaGFsbCBicmluZyBmb3J0aCBhIHNvbiwgYW5kIHRob3Ugc2hhbHQgY2FsbCBoaXMgbmFtZSBKRVNVUzogZm9yIGhlIHNoYWxsIHNhdmUgaGlzIHBlb3BsZSBmcm9tIHRoZWlyIHNpbnMuCk5vdyBhbGwgdGhpcyB3YXMgZG9uZSwgdGhhdCBpdCBtaWdodCBiZSBmdWxmaWxsZWQgd2hpY2ggd2FzIHNwb2tlbiBvZiB0aGUgTG9yZCBieSB0aGUgcHJvcGhldCwgc2F5aW5nLApCZWhvbGQsIGEgdmlyZ2luIHNoYWxsIGJlIHdpdGggY2hpbGQsIGFuZCBzaGFsbCBicmluZyBmb3J0aCBhIHNvbiwgYW5kIHRoZXkgc2hhbGwgY2FsbCBoaXMgbmFtZSBFbW1hbnVlbCwgd2hpY2ggYmVpbmcgaW50ZXJwcmV0ZWQgaXMsIEdvZCB3aXRoIHVzLgpUaGVuIEpvc2VwaCBiZWluZyByYWlzZWQgZnJvbSBzbGVlcCBkaWQgYXMgdGhlIGFuZ2VsIG9mIHRoZSBMb3JkIGhhZCBiaWRkZW4gaGltLCBhbmQgdG9vayB1bnRvIGhpbSBoaXMgd2lmZToKQW5kIGtuZXcgaGVyIG5vdCB0aWxsIHNoZSBoYWQgYnJvdWdodCBmb3J0aCBoZXIgZmlyc3Rib3JuIHNvbjogYW5kIGhlIGNhbGxlZCBoaXMgbmFtZSBKRVNVUy4KTm93IHdoZW4gSmVzdXMgd2FzIGJvcm4gaW4gQmV0aGxlaGVtIG9mIEp1ZGFlYSBpbiB0aGUgZGF5cyBvZiBIZXJvZCB0aGUga2luZywgYmVob2xkLCB0aGVyZSBjYW1lIHdpc2UgbWVuIGZyb20gdGhlIGVhc3QgdG8gSmVydXNhbGVtLApTYXlpbmcsIFdoZXJlIGlzIGhlIHRoYXQgaXMgYm9ybiBLaW5nIG9mIHRoZSBKZXdzPyBmb3Igd2UgaGF2ZSBzZWVuIGhpcyBzdGFyIGluIHRoZSBlYXN0LCBhbmQgYXJlIGNvbWUgdG8gd29yc2hpcCBoaW0uCldoZW4gSGVyb2QgdGhlIGtpbmcgaGFkIGhlYXJkIHRoZXNlIHRoaW5ncywgaGUgd2FzIHRyb3VibGVkLCBhbmQgYWxsIEplcnVzYWxlbSB3aXRoIGhpbS4KQW5kIHdoZW4gaGUgaGFkIGdhdGhlcmVkIGFsbCB0aGUgY2hpZWYgcHJpZXN0cyBhbmQgc2NyaWJlcyBvZiB0aGUgcGVvcGxlIHRvZ2V0aGVyLCBoZSBkZW1hbmRlZCBvZiB0aGVtIHdoZXJlIENocmlzdCBzaG91bGQgYmUgYm9ybi4KQW5kIHRoZXkgc2FpZCB1bnRvIGhpbSwgSW4gQmV0aGxlaGVtIG9mIEp1ZGFlYTogZm9yIHRodXMgaXQgaXMgd3JpdHRlbiBieSB0aGUgcHJvcGhldCwKQW5kIHRob3UgQmV0aGxlaGVtLCBpbiB0aGUgbGFuZCBvZiBKdWRhLCBhcnQgbm90IHRoZSBsZWFzdCBhbW9uZyB0aGUgcHJpbmNlcyBvZiBKdWRhOiBmb3Igb3V0IG9mIHRoZWUgc2hhbGwgY29tZSBhIEdvdmVybm9yLCB0aGF0IHNoYWxsIHJ1bGUgbXkgcGVvcGxlIElzcmFlbC4KVGhlbiBIZXJvZCwgd2hlbiBoZSBoYWQgcHJpdmlseSBjYWxsZWQgdGhlIHdpc2UgbWVuLCBlbnF1aXJlZCBvZiB0aGVtIGRpbGlnZW50bHkgd2hhdCB0aW1lIHRoZSBzdGFyIGFwcGVhcmVkLgpBbmQgaGUgc2VudCB0aGVtIHRvIEJldGhsZWhlbSwgYW5kIHNhaWQsIEdvIGFuZCBzZWFyY2ggZGlsaWdlbnRseSBmb3IgdGhlIHlvdW5nIGNoaWxkOyBhbmQgd2hlbiB5ZSBoYXZlIGZvdW5kIGhpbSwgYnJpbmcgbWUgd29yZCBhZ2FpbiwgdGhhdCBJIG1heSBjb21lIGFuZCB3b3JzaGlwIGhpbSBhbHNvLgpXaGVuIHRoZXkgaGFkIGhlYXJkIHRoZSBraW5nLCB0aGV5IGRlcGFydGVkOyBhbmQsIGxvLCB0aGUgc3Rhciwgd2hpY2ggdGhleSBzYXcgaW4gdGhlIGVhc3QsIHdlbnQgYmVmb3JlIHRoZW0sIHRpbGwgaXQgY2FtZSBhbmQgc3Rvb2Qgb3ZlciB3aGVyZSB0aGUgeW91bmcgY2hpbGQgd2FzLgpXaGVuIHRoZXkgc2F3IHRoZSBzdGFyLCB0aGV5IHJlam9pY2VkIHdpdGggZXhjZWVkaW5nIGdyZWF0IGpveS4KQW5kIHdoZW4gdGhleSB3ZXJlIGNvbWUgaW50byB0aGUgaG91c2UsIHRoZXkgc2F3IHRoZSB5b3VuZyBjaGlsZCB3aXRoIE1hcnkgaGlzIG1vdGhlciwgYW5kIGZlbGwgZG93biwgYW5kIHdvcnNoaXBwZWQgaGltOiBhbmQgd2hlbiB0aGV5IGhhZCBvcGVuZWQgdGhlaXIgdHJlYXN1cmVzLCB0aGV5IHByZXNlbnRlZCB1bnRvIGhpbSBnaWZ0czsgZ29sZCwgYW5kIGZyYW5raW5jZW5zZSBhbmQgbXlycmguCkFuZCBiZWluZyB3YXJuZWQgb2YgR29kIGluIGEgZHJlYW0gdGhhdCB0aGV5IHNob3VsZCBub3QgcmV0dXJuIHRvIEhlcm9kLCB0aGV5IGRlcGFydGVkIGludG8gdGhlaXIgb3duIGNvdW50cnkgYW5vdGhlciB3YXkuCkFuZCB3aGVuIHRoZXkgd2VyZSBkZXBhcnRlZCwgYmVob2xkLCB0aGUgYW5nZWwgb2YgdGhlIExvcmQgYXBwZWFyZXRoIHRvIEpvc2VwaCBpbiBhIGRyZWFtLCBzYXlpbmcsIEFyaXNlLCBhbmQgdGFrZSB0aGUgeW91bmcgY2hpbGQgYW5kIGhpcyBtb3RoZXIsIGFuZCBmbGVlIGludG8gRWd5cHQsIGFuZCBiZSB0aG91IHRoZXJlIHVudGlsIEkgYnJpbmcgdGhlZSB3b3JkOiBmb3IgSGVyb2Qgd2lsbCBzZWVrIHRoZSB5b3VuZyBjaGlsZCB0byBkZXN0cm95IGhpbS4KV2hlbiBoZSBhcm9zZSwgaGUgdG9vayB0aGUgeW91bmcgY2hpbGQgYW5kIGhpcyBtb3RoZXIgYnkgbmlnaHQsIGFuZCBkZXBhcnRlZCBpbnRvIEVneXB0OgpBbmQgd2FzIHRoZXJlIHVudGlsIHRoZSBkZWF0aCBvZiBIZXJvZDogdGhhdCBpdCBtaWdodCBiZSBmdWxmaWxsZWQgd2hpY2ggd2FzIHNwb2tlbiBvZiB0aGUgTG9yZCBieSB0aGUgcHJvcGhldCwgc2F5aW5nLCBPdXQgb2YgRWd5cHQgaGF2ZSBJIGNhbGxlZCBteSBzb24uClRoZW4gSGVyb2QsIHdoZW4gaGUgc2F3IHRoYXQgaGUgd2FzIG1vY2tlZCBvZiB0aGUgd2lzZSBtZW4sIHdhcyBleGNlZWRpbmcgd3JvdGgsIGFuZCBzZW50IGZvcnRoLCBhbmQgc2xldyBhbGwgdGhlIGNoaWxkcmVuIHRoYXQgd2VyZSBpbiBCZXRobGVoZW0sIGFuZCBpbiBhbGwgdGhlIGNvYXN0cyB0aGVyZW9mLCBmcm9tIHR3byB5ZWFycyBvbGQgYW5kIHVuZGVyLCBhY2NvcmRpbmcgdG8gdGhlIHRpbWUgd2hpY2ggaGUgaGFkIGRpbGlnZW50bHkgZW5xdWlyZWQgb2YgdGhlIHdpc2UgbWVuLgpUaGVuIHdhcyBmdWxmaWxsZWQgdGhhdCB3aGljaCB3YXMgc3Bva2VuIGJ5IEplcmVteSB0aGUgcHJvcGhldCwgc2F5aW5nLApJbiBSYW1hIHdhcyB0aGVyZSBhIHZvaWNlIGhlYXJkLCBsYW1lbnRhdGlvbiwgYW5kIHdlZXBpbmcsIGFuZCBncmVhdCBtb3VybmluZywgUmFjaGVsIHdlZXBpbmcgZm9yIGhlciBjaGlsZHJlbiwgYW5kIHdvdWxkIG5vdCBiZSBjb21mb3J0ZWQsIGJlY2F1c2UgdGhleSBhcmUgbm90LgpCdXQgd2hlbiBIZXJvZCB3YXMgZGVhZCwgYmVob2xkLCBhbiBhbmdlbCBvZiB0aGUgTG9yZCBhcHBlYXJldGggaW4gYSBkcmVhbSB0byBKb3NlcGggaW4gRWd5cHQsClNheWluZywgQXJpc2UsIGFuZCB0YWtlIHRoZSB5b3VuZyBjaGlsZCBhbmQgaGlzIG1vdGhlciwgYW5kIGdvIGludG8gdGhlIGxhbmQgb2YgSXNyYWVsOiBmb3IgdGhleSBhcmUgZGVhZCB3aGljaCBzb3VnaHQgdGhlIHlvdW5nIGNoaWxkJ3MgbGlmZS4KQW5kIGhlIGFyb3NlLCBhbmQgdG9vayB0aGUgeW91bmcgY2hpbGQgYW5kIGhpcyBtb3RoZXIsIGFuZCBjYW1lIGludG8gdGhlIGxhbmQgb2YgSXNyYWVsLgpCdXQgd2hlbiBoZSBoZWFyZCB0aGF0IEFyY2hlbGF1cyBkaWQgcmVpZ24gaW4gSnVkYWVhIGluIHRoZSByb29tIG9mIGhpcyBmYXRoZXIgSGVyb2QsIGhlIHdhcyBhZnJhaWQgdG8gZ28gdGhpdGhlcjogbm90d2l0aHN0YW5kaW5nLCBiZWluZyB3YXJuZWQgb2YgR29kIGluIGEgZHJlYW0sIGhlIHR1cm5lZCBhc2lkZSBpbnRvIHRoZSBwYXJ0cyBvZiBHYWxpbGVlOgpBbmQgaGUgY2FtZSBhbmQgZHdlbHQgaW4gYSBjaXR5IGNhbGxlZCBOYXphcmV0aDogdGhhdCBpdCBtaWdodCBiZSBmdWxmaWxsZWQgd2hpY2ggd2FzIHNwb2tlbiBieSB0aGUgcHJvcGhldHMsIEhlIHNoYWxsIGJlIGNhbGxlZCBhIE5hemFyZW5lLgpJbiB0aG9zZSBkYXlzIGNhbWUgSm9obiB0aGUgQmFwdGlzdCwgcHJlYWNoaW5nIGluIHRoZSB3aWxkZXJuZXNzIG9mIEp1ZGFlYSwKQW5kIHNheWluZywgUmVwZW50IHllOiBmb3IgdGhlIGtpbmdkb20gb2YgaGVhdmVuIGlzIGF0IGhhbmQuCkZvciB0aGlzIGlzIGhlIHRoYXQgd2FzIHNwb2tlbiBvZiBieSB0aGUgcHJvcGhldCBFc2FpYXMsIHNheWluZywgVGhlIHZvaWNlIG9mIG9uZSBjcnlpbmcgaW4gdGhlIHdpbGRlcm5lc3MsIFByZXBhcmUgeWUgdGhlIHdheSBvZiB0aGUgTG9yZCwgbWFrZSBoaXMgcGF0aHMgc3RyYWlnaHQuCkFuZCB0aGUgc2FtZSBKb2huIGhhZCBoaXMgcmFpbWVudCBvZiBjYW1lbCdzIGhhaXIsIGFuZCBhIGxlYXRoZXJuIGdpcmRsZSBhYm91dCBoaXMgbG9pbnM7IGFuZCBoaXMgbWVhdCB3YXMgbG9jdXN0cyBhbmQgd2lsZCBob25leS4KVGhlbiB3ZW50IG91dCB0byBoaW0gSmVydXNhbGVtLCBhbmQgYWxsIEp1ZGFlYSwgYW5kIGFsbCB0aGUgcmVnaW9uIHJvdW5kIGFib3V0IEpvcmRhbiwKQW5kIHdlcmUgYmFwdGl6ZWQgb2YgaGltIGluIEpvcmRhbiwgY29uZmVzc2luZyB0aGVpciBzaW5zLgpCdXQgd2hlbiBoZSBzYXcgbWFueSBvZiB0aGUgUGhhcmlzZWVzIGFuZCBTYWRkdWNlZXMgY29tZSB0byBoaXMgYmFwdGlzbSwgaGUgc2FpZCB1bnRvIHRoZW0sIE8gZ2VuZXJhdGlvbiBvZiB2aXBlcnMsIHdobyBoYXRoIHdhcm5lZCB5b3UgdG8gZmxlZSBmcm9tIHRoZSB3cmF0aCB0byBjb21lPwpCcmluZyBmb3J0aCB0aGVyZWZvcmUgZnJ1aXRzIG1lZXQgZm9yIHJlcGVudGFuY2U6CkFuZCB0aGluayBub3QgdG8gc2F5IHdpdGhpbiB5b3Vyc2VsdmVzLCBXZSBoYXZlIEFicmFoYW0gdG8gb3VyIGZhdGhlcjogZm9yIEkgc2F5IHVudG8geW91LCB0aGF0IEdvZCBpcyBhYmxlIG9mIHRoZXNlIHN0b25lcyB0byByYWlzZSB1cCBjaGlsZHJlbiB1bnRvIEFicmFoYW0uCkFuZCBub3cgYWxzbyB0aGUgYXhlIGlzIGxhaWQgdW50byB0aGUgcm9vdCBvZiB0aGUgdHJlZXM6IHRoZXJlZm9yZSBldmVyeSB0cmVlIHdoaWNoIGJyaW5nZXRoIG5vdCBmb3J0aCBnb29kIGZydWl0IGlzIGhld24gZG93biwgYW5kIGNhc3QgaW50byB0aGUgZmlyZS4KSSBpbmRlZWQgYmFwdGl6ZSB5b3Ugd2l0aCB3YXRlciB1bnRvIHJlcGVudGFuY2UuIGJ1dCBoZSB0aGF0IGNvbWV0aCBhZnRlciBtZSBpcyBtaWdodGllciB0aGFuIEksIHdob3NlIHNob2VzIEkgYW0gbm90IHdvcnRoeSB0byBiZWFyOiBoZSBzaGFsbCBiYXB0aXplIHlvdSB3aXRoIHRoZSBIb2x5IEdob3N0LCBhbmQgd2l0aCBmaXJlOgpXaG9zZSBmYW4gaXMgaW4gaGlzIGhhbmQsIGFuZCBoZSB3aWxsIHRocm91Z2hseSBwdXJnZSBoaXMgZmxvb3IsIGFuZCBnYXRoZXIgaGlzIHdoZWF0IGludG8gdGhlIGdhcm5lcjsgYnV0IGhlIHdpbGwgYnVybiB1cCB0aGUgY2hhZmYgd2l0aCB1bnF1ZW5jaGFibGUgZmlyZS4KVGhlbiBjb21ldGggSmVzdXMgZnJvbSBHYWxpbGVlIHRvIEpvcmRhbiB1bnRvIEpvaG4sIHRvIGJlIGJhcHRpemVkIG9mIGhpbS4KQnV0IEpvaG4gZm9yYmFkIGhpbSwgc2F5aW5nLCBJIGhhdmUgbmVlZCB0byBiZSBiYXB0aXplZCBvZiB0aGVlLCBhbmQgY29tZXN0IHRob3UgdG8gbWU/CkFuZCBKZXN1cyBhbnN3ZXJpbmcgc2FpZCB1bnRvIGhpbSwgU3VmZmVyIGl0IHRvIGJlIHNvIG5vdzogZm9yIHRodXMgaXQgYmVjb21ldGggdXMgdG8gZnVsZmlsIGFsbCByaWdodGVvdXNuZXNzLiBUaGVuIGhlIHN1ZmZlcmVkIGhpbS4KQW5kIEplc3VzLCB3aGVuIGhlIHdhcyBiYXB0aXplZCwgd2VudCB1cCBzdHJhaWdodHdheSBvdXQgb2YgdGhlIHdhdGVyOiBhbmQsIGxvLCB0aGUgaGVhdmVucyB3ZXJlIG9wZW5lZCB1bnRvIGhpbSwgYW5kIGhlIHNhdyB0aGUgU3Bpcml0IG9mIEdvZCBkZXNjZW5kaW5nIGxpa2UgYSBkb3ZlLCBhbmQgbGlnaHRpbmcgdXBvbiBoaW06CkFuZCBsbyBhIHZvaWNlIGZyb20gaGVhdmVuLCBzYXlpbmcsIFRoaXMgaXMgbXkgYmVsb3ZlZCBTb24sIGluIHdob20gSSBhbSB3ZWxsIHBsZWFzZWQuClRoZW4gd2FzIEplc3VzIGxlZCB1cCBvZiB0aGUgc3Bpcml0IGludG8gdGhlIHdpbGRlcm5lc3MgdG8gYmUgdGVtcHRlZCBvZiB0aGUgZGV2aWwuCkFuZCB3aGVuIGhlIGhhZCBmYXN0ZWQgZm9ydHkgZGF5cyBhbmQgZm9ydHkgbmlnaHRzLCBoZSB3YXMgYWZ0ZXJ3YXJkIGFuIGh1bmdyZWQuCkFuZCB3aGVuIHRoZSB0ZW1wdGVyIGNhbWUgdG8gaGltLCBoZSBzYWlkLCBJZiB0aG91IGJlIHRoZSBTb24gb2YgR29kLCBjb21tYW5kIHRoYXQgdGhlc2Ugc3RvbmVzIGJlIG1hZGUgYnJlYWQuCkJ1dCBoZSBhbnN3ZXJlZCBhbmQgc2FpZCwgSXQgaXMgd3JpdHRlbiwgTWFuIHNoYWxsIG5vdCBsaXZlIGJ5IGJyZWFkIGFsb25lLCBidXQgYnkgZXZlcnkgd29yZCB0aGF0IHByb2NlZWRldGggb3V0IG9mIHRoZSBtb3V0aCBvZiBHb2QuClRoZW4gdGhlIGRldmlsIHRha2V0aCBoaW0gdXAgaW50byB0aGUgaG9seSBjaXR5LCBhbmQgc2V0dGV0aCBoaW0gb24gYSBwaW5uYWNsZSBvZiB0aGUgdGVtcGxlLApBbmQgc2FpdGggdW50byBoaW0sIElmIHRob3UgYmUgdGhlIFNvbiBvZiBHb2QsIGNhc3QgdGh5c2VsZiBkb3duOiBmb3IgaXQgaXMgd3JpdHRlbiwgSGUgc2hhbGwgZ2l2ZSBoaXMgYW5nZWxzIGNoYXJnZSBjb25jZXJuaW5nIHRoZWU6IGFuZCBpbiB0aGVpciBoYW5kcyB0aGV5IHNoYWxsIGJlYXIgdGhlZSB1cCwgbGVzdCBhdCBhbnkgdGltZSB0aG91IGRhc2ggdGh5IGZvb3QgYWdhaW5zdCBhIHN0b25lLgpKZXN1cyBzYWlkIHVudG8gaGltLCBJdCBpcyB3cml0dGVuIGFnYWluLCBUaG91IHNoYWx0IG5vdCB0ZW1wdCB0aGUgTG9yZCB0aHkgR29kLgpBZ2FpbiwgdGhlIGRldmlsIHRha2V0aCBoaW0gdXAgaW50byBhbiBleGNlZWRpbmcgaGlnaCBtb3VudGFpbiwgYW5kIHNoZXdldGggaGltIGFsbCB0aGUga2luZ2RvbXMgb2YgdGhlIHdvcmxkLCBhbmQgdGhlIGdsb3J5IG9mIHRoZW07CkFuZCBzYWl0aCB1bnRvIGhpbSwgQWxsIHRoZXNlIHRoaW5ncyB3aWxsIEkgZ2l2ZSB0aGVlLCBpZiB0aG91IHdpbHQgZmFsbCBkb3duIGFuZCB3b3JzaGlwIG1lLgpUaGVuIHNhaXRoIEplc3VzIHVudG8gaGltLCBHZXQgdGhlZSBoZW5jZSwgU2F0YW46IGZvciBpdCBpcyB3cml0dGVuLCBUaG91IHNoYWx0IHdvcnNoaXAgdGhlIExvcmQgdGh5IEdvZCwgYW5kIGhpbSBvbmx5IHNoYWx0IHRob3Ugc2VydmUuClRoZW4gdGhlIGRldmlsIGxlYXZldGggaGltLCBhbmQsIGJlaG9sZCwgYW5nZWxzIGNhbWUgYW5kIG1pbmlzdGVyZWQgdW50byBoaW0uCk5vdyB3aGVuIEplc3VzIGhhZCBoZWFyZCB0aGF0IEpvaG4gd2FzIGNhc3QgaW50byBwcmlzb24sIGhlIGRlcGFydGVkIGludG8gR2FsaWxlZTsKQW5kIGxlYXZpbmcgTmF6YXJldGgsIGhlIGNhbWUgYW5kIGR3ZWx0IGluIENhcGVybmF1bSwgd2hpY2ggaXMgdXBvbiB0aGUgc2VhIGNvYXN0LCBpbiB0aGUgYm9yZGVycyBvZiBaYWJ1bG9uIGFuZCBOZXBodGhhbGltOgpUaGF0IGl0IG1pZ2h0IGJlIGZ1bGZpbGxlZCB3aGljaCB3YXMgc3Bva2VuIGJ5IEVzYWlhcyB0aGUgcHJvcGhldCwgc2F5aW5nLApUaGUgbGFuZCBvZiBaYWJ1bG9uLCBhbmQgdGhlIGxhbmQgb2YgTmVwaHRoYWxpbSwgYnkgdGhlIHdheSBvZiB0aGUgc2VhLCBiZXlvbmQgSm9yZGFuLCBHYWxpbGVlIG9mIHRoZSBHZW50aWxlczsKVGhlIHBlb3BsZSB3aGljaCBzYXQgaW4gZGFya25lc3Mgc2F3IGdyZWF0IGxpZ2h0OyBhbmQgdG8gdGhlbSB3aGljaCBzYXQgaW4gdGhlIHJlZ2lvbiBhbmQgc2hhZG93IG9mIGRlYXRoIGxpZ2h0IGlzIHNwcnVuZyB1cC4KRnJvbSB0aGF0IHRpbWUgSmVzdXMgYmVnYW4gdG8gcHJlYWNoLCBhbmQgdG8gc2F5LCBSZXBlbnQ6IGZvciB0aGUga2luZ2RvbSBvZiBoZWF2ZW4gaXMgYXQgaGFuZC4KQW5kIEplc3VzLCB3YWxraW5nIGJ5IHRoZSBzZWEgb2YgR2FsaWxlZSwgc2F3IHR3byBicmV0aHJlbiwgU2ltb24gY2FsbGVkIFBldGVyLCBhbmQgQW5kcmV3IGhpcyBicm90aGVyLCBjYXN0aW5nIGEgbmV0IGludG8gdGhlIHNlYTogZm9yIHRoZXkgd2VyZSBmaXNoZXJzLgpBbmQgaGUgc2FpdGggdW50byB0aGVtLCBGb2xsb3cgbWUsIGFuZCBJIHdpbGwgbWFrZSB5b3UgZmlzaGVycyBvZiBtZW4uCkFuZCB0aGV5IHN0cmFpZ2h0d2F5IGxlZnQgdGhlaXIgbmV0cywgYW5kIGZvbGxvd2VkIGhpbS4KQW5kIGdvaW5nIG9uIGZyb20gdGhlbmNlLCBoZSBzYXcgb3RoZXIgdHdvIGJyZXRocmVuLCBKYW1lcyB0aGUgc29uIG9mIFplYmVkZWUsIGFuZCBKb2huIGhpcyBicm90aGVyLCBpbiBhIHNoaXAgd2l0aCBaZWJlZGVlIHRoZWlyIGZhdGhlciwgbWVuZGluZyB0aGVpciBuZXRzOyBhbmQgaGUgY2FsbGVkIHRoZW0uCkFuZCB0aGV5IGltbWVkaWF0ZWx5IGxlZnQgdGhlIHNoaXAgYW5kIHRoZWlyIGZhdGhlciwgYW5kIGZvbGxvd2VkIGhpbS4KQW5kIEplc3VzIHdlbnQgYWJvdXQgYWxsIEdhbGlsZWUsIHRlYWNoaW5nIGluIHRoZWlyIHN5bmFnb2d1ZXMsIGFuZCBwcmVhY2hpbmcgdGhlIGdvc3BlbCBvZiB0aGUga2luZ2RvbSwgYW5kIGhlYWxpbmcgYWxsIG1hbm5lciBvZiBzaWNrbmVzcyBhbmQgYWxsIG1hbm5lciBvZiBkaXNlYXNlIGFtb25nIHRoZSBwZW9wbGUuCkFuZCBoaXMgZmFtZSB3ZW50IHRocm91Z2hvdXQgYWxsIFN5cmlhOiBhbmQgdGhleSBicm91Z2h0IHVudG8gaGltIGFsbCBzaWNrIHBlb3BsZSB0aGF0IHdlcmUgdGFrZW4gd2l0aCBkaXZlcnMgZGlzZWFzZXMgYW5kIHRvcm1lbnRzLCBhbmQgdGhvc2Ugd2hpY2ggd2VyZSBwb3NzZXNzZWQgd2l0aCBkZXZpbHMsIGFuZCB0aG9zZSB3aGljaCB3ZXJlIGx1bmF0aWNrLCBhbmQgdGhvc2UgdGhhdCBoYWQgdGhlIHBhbHN5OyBhbmQgaGUgaGVhbGVkIHRoZW0uCkFuZCB0aGVyZSBmb2xsb3dlZCBoaW0gZ3JlYXQgbXVsdGl0dWRlcyBvZiBwZW9wbGUgZnJvbSBHYWxpbGVlLCBhbmQgZnJvbSBEZWNhcG9saXMsIGFuZCBmcm9tIEplcnVzYWxlbSwgYW5kIGZyb20gSnVkYWVhLCBhbmQgZnJvbSBiZXlvbmQgSm9yZGFuLgpBbmQgc2VlaW5nIHRoZSBtdWx0aXR1ZGVzLCBoZSB3ZW50IHVwIGludG8gYSBtb3VudGFpbjogYW5kIHdoZW4gaGUgd2FzIHNldCwgaGlzIGRpc2NpcGxlcyBjYW1lIHVudG8gaGltOgpBbmQgaGUgb3BlbmVkIGhpcyBtb3V0aCwgYW5kIHRhdWdodCB0aGVtLCBzYXlpbmcsCkJsZXNzZWQgYXJlIHRoZSBwb29yIGluIHNwaXJpdDogZm9yIHRoZWlycyBpcyB0aGUga2luZ2RvbSBvZiBoZWF2ZW4uCkJsZXNzZWQgYXJlIHRoZXkgdGhhdCBtb3VybjogZm9yIHRoZXkgc2hhbGwgYmUgY29tZm9ydGVkLgpCbGVzc2VkIGFyZSB0aGUgbWVlazogZm9yIHRoZXkgc2hhbGwgaW5oZXJpdCB0aGUgZWFydGguCkJsZXNzZWQgYXJlIHRoZXkgd2hpY2ggZG8gaHVuZ2VyIGFuZCB0aGlyc3QgYWZ0ZXIgcmlnaHRlb3VzbmVzczogZm9yIHRoZXkgc2hhbGwgYmUgZmlsbGVkLgpCbGVzc2VkIGFyZSB0aGUgbWVyY2lmdWw6IGZvciB0aGV5IHNoYWxsIG9idGFpbiBtZXJjeS4KQmxlc3NlZCBhcmUgdGhlIHB1cmUgaW4gaGVhcnQ6IGZvciB0aGV5IHNoYWxsIHNlZSBHb2QuCkJsZXNzZWQgYXJlIHRoZSBwZWFjZW1ha2VyczogZm9yIHRoZXkgc2hhbGwgYmUgY2FsbGVkIHRoZSBjaGlsZHJlbiBvZiBHb2QuCkJsZXNzZWQgYXJlIHRoZXkgd2hpY2ggYXJlIHBlcnNlY3V0ZWQgZm9yIHJpZ2h0ZW91c25lc3MnIHNha2U6IGZvciB0aGVpcnMgaXMgdGhlIGtpbmdkb20gb2YgaGVhdmVuLgpCbGVzc2VkIGFyZSB5ZSwgd2hlbiBtZW4gc2hhbGwgcmV2aWxlIHlvdSwgYW5kIHBlcnNlY3V0ZSB5b3UsIGFuZCBzaGFsbCBzYXkgYWxsIG1hbm5lciBvZiBldmlsIGFnYWluc3QgeW91IGZhbHNlbHksIGZvciBteSBzYWtlLgpSZWpvaWNlLCBhbmQgYmUgZXhjZWVkaW5nIGdsYWQ6IGZvciBncmVhdCBpcyB5b3VyIHJld2FyZCBpbiBoZWF2ZW46IGZvciBzbyBwZXJzZWN1dGVkIHRoZXkgdGhlIHByb3BoZXRzIHdoaWNoIHdlcmUgYmVmb3JlIHlvdS4KWWUgYXJlIHRoZSBzYWx0IG9mIHRoZSBlYXJ0aDogYnV0IGlmIHRoZSBzYWx0IGhhdmUgbG9zdCBoaXMgc2F2b3VyLCB3aGVyZXdpdGggc2hhbGwgaXQgYmUgc2FsdGVkPyBpdCBpcyB0aGVuY2Vmb3J0aCBnb29kIGZvciBub3RoaW5nLCBidXQgdG8gYmUgY2FzdCBvdXQsIGFuZCB0byBiZSB0cm9kZGVuIHVuZGVyIGZvb3Qgb2YgbWVuLgpZZSBhcmUgdGhlIGxpZ2h0IG9mIHRoZSB3b3JsZC4gQSBjaXR5IHRoYXQgaXMgc2V0IG9uIGFuIGhpbGwgY2Fubm90IGJlIGhpZC4KTmVpdGhlciBkbyBtZW4gbGlnaHQgYSBjYW5kbGUsIGFuZCBwdXQgaXQgdW5kZXIgYSBidXNoZWwsIGJ1dCBvbiBhIGNhbmRsZXN0aWNrOyBhbmQgaXQgZ2l2ZXRoIGxpZ2h0IHVudG8gYWxsIHRoYXQgYXJlIGluIHRoZSBob3VzZS4KTGV0IHlvdXIgbGlnaHQgc28gc2hpbmUgYmVmb3JlIG1lbiwgdGhhdCB0aGV5IG1heSBzZWUgeW91ciBnb29kIHdvcmtzLCBhbmQgZ2xvcmlmeSB5b3VyIEZhdGhlciB3aGljaCBpcyBpbiBoZWF2ZW4uClRoaW5rIG5vdCB0aGF0IEkgYW0gY29tZSB0byBkZXN0cm95IHRoZSBsYXcsIG9yIHRoZSBwcm9waGV0czogSSBhbSBub3QgY29tZSB0byBkZXN0cm95LCBidXQgdG8gZnVsZmlsLgpGb3IgdmVyaWx5IEkgc2F5IHVudG8geW91LCBUaWxsIGhlYXZlbiBhbmQgZWFydGggcGFzcywgb25lIGpvdCBvciBvbmUgdGl0dGxlIHNoYWxsIGluIG5vIHdpc2UgcGFzcyBmcm9tIHRoZSBsYXcsIHRpbGwgYWxsIGJlIGZ1bGZpbGxlZC4KV2hvc29ldmVyIHRoZXJlZm9yZSBzaGFsbCBicmVhayBvbmUgb2YgdGhlc2UgbGVhc3QgY29tbWFuZG1lbnRzLCBhbmQgc2hhbGwgdGVhY2ggbWVuIHNvLCBoZSBzaGFsbCBiZSBjYWxsZWQgdGhlIGxlYXN0IGluIHRoZSBraW5nZG9tIG9mIGhlYXZlbjogYnV0IHdob3NvZXZlciBzaGFsbCBkbyBhbmQgdGVhY2ggdGhlbSwgdGhlIHNhbWUgc2hhbGwgYmUgY2FsbGVkIGdyZWF0IGluIHRoZSBraW5nZG9tIG9mIGhlYXZlbi4KRm9yIEkgc2F5IHVudG8geW91LCBUaGF0IGV4Y2VwdCB5b3VyIHJpZ2h0ZW91c25lc3Mgc2hhbGwgZXhjZWVkIHRoZSByaWdodGVvdXNuZXNzIG9mIHRoZSBzY3JpYmVzIGFuZCBQaGFyaXNlZXMsIHllIHNoYWxsIGluIG5vIGNhc2UgZW50ZXIgaW50byB0aGUga2luZ2RvbSBvZiBoZWF2ZW4uClllIGhhdmUgaGVhcmQgdGhhdCBpdCB3YXMgc2FpZCBvZiB0aGVtIG9mIG9sZCB0aW1lLCBUaG91IHNoYWx0IG5vdCBraWxsOyBhbmQgd2hvc29ldmVyIHNoYWxsIGtpbGwgc2hhbGwgYmUgaW4gZGFuZ2VyIG9mIHRoZSBqdWRnbWVudDoKQnV0IEkgc2F5IHVudG8geW91LCBUaGF0IHdob3NvZXZlciBpcyBhbmdyeSB3aXRoIGhpcyBicm90aGVyIHdpdGhvdXQgYSBjYXVzZSBzaGFsbCBiZSBpbiBkYW5nZXIgb2YgdGhlIGp1ZGdtZW50OiBhbmQgd2hvc29ldmVyIHNoYWxsIHNheSB0byBoaXMgYnJvdGhlciwgUmFjYSwgc2hhbGwgYmUgaW4gZGFuZ2VyIG9mIHRoZSBjb3VuY2lsOiBidXQgd2hvc29ldmVyIHNoYWxsIHNheSwgVGhvdSBmb29sLCBzaGFsbCBiZSBpbiBkYW5nZXIgb2YgaGVsbCBmaXJlLgpUaGVyZWZvcmUgaWYgdGhvdSBicmluZyB0aHkgZ2lmdCB0byB0aGUgYWx0YXIsIGFuZCB0aGVyZSByZW1lbWJlcmVzdCB0aGF0IHRoeSBicm90aGVyIGhhdGggb3VnaHQgYWdhaW5zdCB0aGVlOwpMZWF2ZSB0aGVyZSB0aHkgZ2lmdCBiZWZvcmUgdGhlIGFsdGFyLCBhbmQgZ28gdGh5IHdheTsgZmlyc3QgYmUgcmVjb25jaWxlZCB0byB0aHkgYnJvdGhlciwgYW5kIHRoZW4gY29tZSBhbmQgb2ZmZXIgdGh5IGdpZnQuCkFncmVlIHdpdGggdGhpbmUgYWR2ZXJzYXJ5IHF1aWNrbHksIHdoaWxlcyB0aG91IGFydCBpbiB0aGUgd2F5IHdpdGggaGltOyBsZXN0IGF0IGFueSB0aW1lIHRoZSBhZHZlcnNhcnkgZGVsaXZlciB0aGVlIHRvIHRoZSBqdWRnZSwgYW5kIHRoZSBqdWRnZSBkZWxpdmVyIHRoZWUgdG8gdGhlIG9mZmljZXIsIGFuZCB0aG91IGJlIGNhc3QgaW50byBwcmlzb24uClZlcmlseSBJIHNheSB1bnRvIHRoZWUsIFRob3Ugc2hhbHQgYnkgbm8gbWVhbnMgY29tZSBvdXQgdGhlbmNlLCB0aWxsIHRob3UgaGFzdCBwYWlkIHRoZSB1dHRlcm1vc3QgZmFydGhpbmcuClllIGhhdmUgaGVhcmQgdGhhdCBpdCB3YXMgc2FpZCBieSB0aGVtIG9mIG9sZCB0aW1lLCBUaG91IHNoYWx0IG5vdCBjb21taXQgYWR1bHRlcnk6CkJ1dCBJIHNheSB1bnRvIHlvdSwgVGhhdCB3aG9zb2V2ZXIgbG9va2V0aCBvbiBhIHdvbWFuIHRvIGx1c3QgYWZ0ZXIgaGVyIGhhdGggY29tbWl0dGVkIGFkdWx0ZXJ5IHdpdGggaGVyIGFscmVhZHkgaW4gaGlzIGhlYXJ0LgpBbmQgaWYgdGh5IHJpZ2h0IGV5ZSBvZmZlbmQgdGhlZSwgcGx1Y2sgaXQgb3V0LCBhbmQgY2FzdCBpdCBmcm9tIHRoZWU6IGZvciBpdCBpcyBwcm9maXRhYmxlIGZvciB0aGVlIHRoYXQgb25lIG9mIHRoeSBtZW1iZXJzIHNob3VsZCBwZXJpc2gsIGFuZCBub3QgdGhhdCB0aHkgd2hvbGUgYm9keSBzaG91bGQgYmUgY2FzdCBpbnRvIGhlbGwuCkFuZCBpZiB0aHkgcmlnaHQgaGFuZCBvZmZlbmQgdGhlZSwgY3V0IGl0IG9mZiwgYW5kIGNhc3QgaXQgZnJvbSB0aGVlOiBmb3IgaXQgaXMgcHJvZml0YWJsZSBmb3IgdGhlZSB0aGF0IG9uZSBvZiB0aHkgbWVtYmVycyBzaG91bGQgcGVyaXNoLCBhbmQgbm90IHRoYXQgdGh5IHdob2xlIGJvZHkgc2hvdWxkIGJlIGNhc3QgaW50byBoZWxsLgpJdCBoYXRoIGJlZW4gc2FpZCwgV2hvc29ldmVyIHNoYWxsIHB1dCBhd2F5IGhpcyB3aWZlLCBsZXQgaGltIGdpdmUgaGVyIGEgd3JpdGluZyBvZiBkaXZvcmNlbWVudDoKQnV0IEkgc2F5IHVudG8geW91LCBUaGF0IHdob3NvZXZlciBzaGFsbCBwdXQgYXdheSBoaXMgd2lmZSwgc2F2aW5nIGZvciB0aGUgY2F1c2Ugb2YgZm9ybmljYXRpb24sIGNhdXNldGggaGVyIHRvIGNvbW1pdCBhZHVsdGVyeTogYW5kIHdob3NvZXZlciBzaGFsbCBtYXJyeSBoZXIgdGhhdCBpcyBkaXZvcmNlZCBjb21taXR0ZXRoIGFkdWx0ZXJ5LgpBZ2FpbiwgeWUgaGF2ZSBoZWFyZCB0aGF0IGl0IGhhdGggYmVlbiBzYWlkIGJ5IHRoZW0gb2Ygb2xkIHRpbWUsIFRob3Ugc2hhbHQgbm90IGZvcnN3ZWFyIHRoeXNlbGYsIGJ1dCBzaGFsdCBwZXJmb3JtIHVudG8gdGhlIExvcmQgdGhpbmUgb2F0aHM6CkJ1dCBJIHNheSB1bnRvIHlvdSwgU3dlYXIgbm90IGF0IGFsbDsgbmVpdGhlciBieSBoZWF2ZW47IGZvciBpdCBpcyBHb2QncyB0aHJvbmU6Ck5vciBieSB0aGUgZWFydGg7IGZvciBpdCBpcyBoaXMgZm9vdHN0b29sOiBuZWl0aGVyIGJ5IEplcnVzYWxlbTsgZm9yIGl0IGlzIHRoZSBjaXR5IG9mIHRoZSBncmVhdCBLaW5nLgpOZWl0aGVyIHNoYWx0IHRob3Ugc3dlYXIgYnkgdGh5IGhlYWQsIGJlY2F1c2UgdGhvdSBjYW5zdCBub3QgbWFrZSBvbmUgaGFpciB3aGl0ZSBvciBibGFjay4KQnV0IGxldCB5b3VyIGNvbW11bmljYXRpb24gYmUsIFllYSwgeWVhOyBOYXksIG5heTogZm9yIHdoYXRzb2V2ZXIgaXMgbW9yZSB0aGFuIHRoZXNlIGNvbWV0aCBvZiBldmlsLgpZZSBoYXZlIGhlYXJkIHRoYXQgaXQgaGF0aCBiZWVuIHNhaWQsIEFuIGV5ZSBmb3IgYW4gZXllLCBhbmQgYSB0b290aCBmb3IgYSB0b290aDoKQnV0IEkgc2F5IHVudG8geW91LCBUaGF0IHllIHJlc2lzdCBub3QgZXZpbDogYnV0IHdob3NvZXZlciBzaGFsbCBzbWl0ZSB0aGVlIG9uIHRoeSByaWdodCBjaGVlaywgdHVybiB0byBoaW0gdGhlIG90aGVyIGFsc28uCkFuZCBpZiBhbnkgbWFuIHdpbGwgc3VlIHRoZWUgYXQgdGhlIGxhdywgYW5kIHRha2UgYXdheSB0aHkgY29hdCwgbGV0IGhpbSBoYXZlIHRoeSBjbG9hayBhbHNvLgpBbmQgd2hvc29ldmVyIHNoYWxsIGNvbXBlbCB0aGVlIHRvIGdvIGEgbWlsZSwgZ28gd2l0aCBoaW0gdHdhaW4uCkdpdmUgdG8gaGltIHRoYXQgYXNrZXRoIHRoZWUsIGFuZCBmcm9tIGhpbSB0aGF0IHdvdWxkIGJvcnJvdyBvZiB0aGVlIHR1cm4gbm90IHRob3UgYXdheS4KWWUgaGF2ZSBoZWFyZCB0aGF0IGl0IGhhdGggYmVlbiBzYWlkLCBUaG91IHNoYWx0IGxvdmUgdGh5IG5laWdoYm91ciwgYW5kIGhhdGUgdGhpbmUgZW5lbXkuCkJ1dCBJIHNheSB1bnRvIHlvdSwgTG92ZSB5b3VyIGVuZW1pZXMsIGJsZXNzIHRoZW0gdGhhdCBjdXJzZSB5b3UsIGRvIGdvb2QgdG8gdGhlbSB0aGF0IGhhdGUgeW91LCBhbmQgcHJheSBmb3IgdGhlbSB3aGljaCBkZXNwaXRlZnVsbHkgdXNlIHlvdSwgYW5kIHBlcnNlY3V0ZSB5b3U7ClRoYXQgeWUgbWF5IGJlIHRoZSBjaGlsZHJlbiBvZiB5b3VyIEZhdGhlciB3aGljaCBpcyBpbiBoZWF2ZW46IGZvciBoZSBtYWtldGggaGlzIHN1biB0byByaXNlIG9uIHRoZSBldmlsIGFuZCBvbiB0aGUgZ29vZCwgYW5kIHNlbmRldGggcmFpbiBvbiB0aGUganVzdCBhbmQgb24gdGhlIHVuanVzdC4KRm9yIGlmIHllIGxvdmUgdGhlbSB3aGljaCBsb3ZlIHlvdSwgd2hhdCByZXdhcmQgaGF2ZSB5ZT8gZG8gbm90IGV2ZW4gdGhlIHB1YmxpY2FucyB0aGUgc2FtZT8KQW5kIGlmIHllIHNhbHV0ZSB5b3VyIGJyZXRocmVuIG9ubHksIHdoYXQgZG8geWUgbW9yZSB0aGFuIG90aGVycz8gZG8gbm90IGV2ZW4gdGhlIHB1YmxpY2FucyBzbz8KQmUgeWUgdGhlcmVmb3JlIHBlcmZlY3QsIGV2ZW4gYXMgeW91ciBGYXRoZXIgd2hpY2ggaXMgaW4gaGVhdmVuIGlzIHBlcmZlY3QuClRha2UgaGVlZCB0aGF0IHllIGRvIG5vdCB5b3VyIGFsbXMgYmVmb3JlIG1lbiwgdG8gYmUgc2VlbiBvZiB0aGVtOiBvdGhlcndpc2UgeWUgaGF2ZSBubyByZXdhcmQgb2YgeW91ciBGYXRoZXIgd2hpY2ggaXMgaW4gaGVhdmVuLgpUaGVyZWZvcmUgd2hlbiB0aG91IGRvZXN0IHRoaW5lIGFsbXMsIGRvIG5vdCBzb3VuZCBhIHRydW1wZXQgYmVmb3JlIHRoZWUsIGFzIHRoZSBoeXBvY3JpdGVzIGRvIGluIHRoZSBzeW5hZ29ndWVzIGFuZCBpbiB0aGUgc3RyZWV0cywgdGhhdCB0aGV5IG1heSBoYXZlIGdsb3J5IG9mIG1lbi4gVmVyaWx5IEkgc2F5IHVudG8geW91LCBUaGV5IGhhdmUgdGhlaXIgcmV3YXJkLgpCdXQgd2hlbiB0aG91IGRvZXN0IGFsbXMsIGxldCBub3QgdGh5IGxlZnQgaGFuZCBrbm93IHdoYXQgdGh5IHJpZ2h0IGhhbmQgZG9ldGg6ClRoYXQgdGhpbmUgYWxtcyBtYXkgYmUgaW4gc2VjcmV0OiBhbmQgdGh5IEZhdGhlciB3aGljaCBzZWV0aCBpbiBzZWNyZXQgaGltc2VsZiBzaGFsbCByZXdhcmQgdGhlZSBvcGVubHkuCkFuZCB3aGVuIHRob3UgcHJheWVzdCwgdGhvdSBzaGFsdCBub3QgYmUgYXMgdGhlIGh5cG9jcml0ZXMgYXJlOiBmb3IgdGhleSBsb3ZlIHRvIHByYXkgc3RhbmRpbmcgaW4gdGhlIHN5bmFnb2d1ZXMgYW5kIGluIHRoZSBjb3JuZXJzIG9mIHRoZSBzdHJlZXRzLCB0aGF0IHRoZXkgbWF5IGJlIHNlZW4gb2YgbWVuLiBWZXJpbHkgSSBzYXkgdW50byB5b3UsIFRoZXkgaGF2ZSB0aGVpciByZXdhcmQuCkJ1dCB0aG91LCB3aGVuIHRob3UgcHJheWVzdCwgZW50ZXIgaW50byB0aHkgY2xvc2V0LCBhbmQgd2hlbiB0aG91IGhhc3Qgc2h1dCB0aHkgZG9vciwgcHJheSB0byB0aHkgRmF0aGVyIHdoaWNoIGlzIGluIHNlY3JldDsgYW5kIHRoeSBGYXRoZXIgd2hpY2ggc2VldGggaW4gc2VjcmV0IHNoYWxsIHJld2FyZCB0aGVlIG9wZW5seS4KQnV0IHdoZW4geWUgcHJheSwgdXNlIG5vdCB2YWluIHJlcGV0aXRpb25zLCBhcyB0aGUgaGVhdGhlbiBkbzogZm9yIHRoZXkgdGhpbmsgdGhhdCB0aGV5IHNoYWxsIGJlIGhlYXJkIGZvciB0aGVpciBtdWNoIHNwZWFraW5nLgpCZSBub3QgeWUgdGhlcmVmb3JlIGxpa2UgdW50byB0aGVtOiBmb3IgeW91ciBGYXRoZXIga25vd2V0aCB3aGF0IHRoaW5ncyB5ZSBoYXZlIG5lZWQgb2YsIGJlZm9yZSB5ZSBhc2sgaGltLgpBZnRlciB0aGlzIG1hbm5lciB0aGVyZWZvcmUgcHJheSB5ZTogT3VyIEZhdGhlciB3aGljaCBhcnQgaW4gaGVhdmVuLCBIYWxsb3dlZCBiZSB0aHkgbmFtZS4KVGh5IGtpbmdkb20gY29tZSwgVGh5IHdpbGwgYmUgZG9uZSBpbiBlYXJ0aCwgYXMgaXQgaXMgaW4gaGVhdmVuLgpHaXZlIHVzIHRoaXMgZGF5IG91ciBkYWlseSBicmVhZC4KQW5kIGZvcmdpdmUgdXMgb3VyIGRlYnRzLCBhcyB3ZSBmb3JnaXZlIG91ciBkZWJ0b3JzLgpBbmQgbGVhZCB1cyBub3QgaW50byB0ZW1wdGF0aW9uLCBidXQgZGVsaXZlciB1cyBmcm9tIGV2aWw6IEZvciB0aGluZSBpcyB0aGUga2luZ2RvbSwgYW5kIHRoZSBwb3dlciwgYW5kIHRoZSBnbG9yeSwgZm9yIGV2ZXIuIEFtZW4uCkZvciBpZiB5ZSBmb3JnaXZlIG1lbiB0aGVpciB0cmVzcGFzc2VzLCB5b3VyIGhlYXZlbmx5IEZhdGhlciB3aWxsIGFsc28gZm9yZ2l2ZSB5b3U6CkJ1dCBpZiB5ZSBmb3JnaXZlIG5vdCBtZW4gdGhlaXIgdHJlc3Bhc3NlcywgbmVpdGhlciB3aWxsIHlvdXIgRmF0aGVyIGZvcmdpdmUgeW91ciB0cmVzcGFzc2VzLgpNb3Jlb3ZlciB3aGVuIHllIGZhc3QsIGJlIG5vdCwgYXMgdGhlIGh5cG9jcml0ZXMsIG9mIGEgc2FkIGNvdW50ZW5hbmNlOiBmb3IgdGhleSBkaXNmaWd1cmUgdGhlaXIgZmFjZXMsIHRoYXQgdGhleSBtYXkgYXBwZWFyIHVudG8gbWVuIHRvIGZhc3QuIFZlcmlseSBJIHNheSB1bnRvIHlvdSwgVGhleSBoYXZlIHRoZWlyIHJld2FyZC4KQnV0IHRob3UsIHdoZW4gdGhvdSBmYXN0ZXN0LCBhbm9pbnQgdGhpbmUgaGVhZCwgYW5kIHdhc2ggdGh5IGZhY2U7ClRoYXQgdGhvdSBhcHBlYXIgbm90IHVudG8gbWVuIHRvIGZhc3QsIGJ1dCB1bnRvIHRoeSBGYXRoZXIgd2hpY2ggaXMgaW4gc2VjcmV0OiBhbmQgdGh5IEZhdGhlciwgd2hpY2ggc2VldGggaW4gc2VjcmV0LCBzaGFsbCByZXdhcmQgdGhlZSBvcGVubHkuCkxheSBub3QgdXAgZm9yIHlvdXJzZWx2ZXMgdHJlYXN1cmVzIHVwb24gZWFydGgsIHdoZXJlIG1vdGggYW5kIHJ1c3QgZG90aCBjb3JydXB0LCBhbmQgd2hlcmUgdGhpZXZlcyBicmVhayB0aHJvdWdoIGFuZCBzdGVhbDoKQnV0IGxheSB1cCBmb3IgeW91cnNlbHZlcyB0cmVhc3VyZXMgaW4gaGVhdmVuLCB3aGVyZSBuZWl0aGVyIG1vdGggbm9yIHJ1c3QgZG90aCBjb3JydXB0LCBhbmQgd2hlcmUgdGhpZXZlcyBkbyBub3QgYnJlYWsgdGhyb3VnaCBub3Igc3RlYWw6CkZvciB3aGVyZSB5b3VyIHRyZWFzdXJlIGlzLCB0aGVyZSB3aWxsIHlvdXIgaGVhcnQgYmUgYWxzby4KVGhlIGxpZ2h0IG9mIHRoZSBib2R5IGlzIHRoZSBleWU6IGlmIHRoZXJlZm9yZSB0aGluZSBleWUgYmUgc2luZ2xlLCB0aHkgd2hvbGUgYm9keSBzaGFsbCBiZSBmdWxsIG9mIGxpZ2h0LgpCdXQgaWYgdGhpbmUgZXllIGJlIGV2aWwsIHRoeSB3aG9sZSBib2R5IHNoYWxsIGJlIGZ1bGwgb2YgZGFya25lc3MuIElmIHRoZXJlZm9yZSB0aGUgbGlnaHQgdGhhdCBpcyBpbiB0aGVlIGJlIGRhcmtuZXNzLCBob3cgZ3JlYXQgaXMgdGhhdCBkYXJrbmVzcyEKTm8gbWFuIGNhbiBzZXJ2ZSB0d28gbWFzdGVyczogZm9yIGVpdGhlciBoZSB3aWxsIGhhdGUgdGhlIG9uZSwgYW5kIGxvdmUgdGhlIG90aGVyOyBvciBlbHNlIGhlIHdpbGwgaG9sZCB0byB0aGUgb25lLCBhbmQgZGVzcGlzZSB0aGUgb3RoZXIuIFllIGNhbm5vdCBzZXJ2ZSBHb2QgYW5kIG1hbW1vbi4KVGhlcmVmb3JlIEkgc2F5IHVudG8geW91LCBUYWtlIG5vIHRob3VnaHQgZm9yIHlvdXIgbGlmZSwgd2hhdCB5ZSBzaGFsbCBlYXQsIG9yIHdoYXQgeWUgc2hhbGwgZHJpbms7IG5vciB5ZXQgZm9yIHlvdXIgYm9keSwgd2hhdCB5ZSBzaGFsbCBwdXQgb24uIElzIG5vdCB0aGUgbGlmZSBtb3JlIHRoYW4gbWVhdCwgYW5kIHRoZSBib2R5IHRoYW4gcmFpbWVudD8KQmVob2xkIHRoZSBmb3dscyBvZiB0aGUgYWlyOiBmb3IgdGhleSBzb3cgbm90LCBuZWl0aGVyIGRvIHRoZXkgcmVhcCwgbm9yIGdhdGhlciBpbnRvIGJhcm5zOyB5ZXQgeW91ciBoZWF2ZW5seSBGYXRoZXIgZmVlZGV0aCB0aGVtLiBBcmUgeWUgbm90IG11Y2ggYmV0dGVyIHRoYW4gdGhleT8KV2hpY2ggb2YgeW91IGJ5IHRha2luZyB0aG91Z2h0IGNhbiBhZGQgb25lIGN1Yml0IHVudG8gaGlzIHN0YXR1cmU/CkFuZCB3aHkgdGFrZSB5ZSB0aG91Z2h0IGZvciByYWltZW50PyBDb25zaWRlciB0aGUgbGlsaWVzIG9mIHRoZSBmaWVsZCwgaG93IHRoZXkgZ3JvdzsgdGhleSB0b2lsIG5vdCwgbmVpdGhlciBkbyB0aGV5IHNwaW46CkFuZCB5ZXQgSSBzYXkgdW50byB5b3UsIFRoYXQgZXZlbiBTb2xvbW9uIGluIGFsbCBoaXMgZ2xvcnkgd2FzIG5vdCBhcnJheWVkIGxpa2Ugb25lIG9mIHRoZXNlLgpXaGVyZWZvcmUsIGlmIEdvZCBzbyBjbG90aGUgdGhlIGdyYXNzIG9mIHRoZSBmaWVsZCwgd2hpY2ggdG8gZGF5IGlzLCBhbmQgdG8gbW9ycm93IGlzIGNhc3QgaW50byB0aGUgb3Zlbiwgc2hhbGwgaGUgbm90IG11Y2ggbW9yZSBjbG90aGUgeW91LCBPIHllIG9mIGxpdHRsZSBmYWl0aD8KVGhlcmVmb3JlIHRha2Ugbm8gdGhvdWdodCwgc2F5aW5nLCBXaGF0IHNoYWxsIHdlIGVhdD8gb3IsIFdoYXQgc2hhbGwgd2UgZHJpbms/IG9yLCBXaGVyZXdpdGhhbCBzaGFsbCB3ZSBiZSBjbG90aGVkPwooRm9yIGFmdGVyIGFsbCB0aGVzZSB0aGluZ3MgZG8gdGhlIEdlbnRpbGVzIHNlZWs6KSBmb3IgeW91ciBoZWF2ZW5seSBGYXRoZXIga25vd2V0aCB0aGF0IHllIGhhdmUgbmVlZCBvZiBhbGwgdGhlc2UgdGhpbmdzLgpCdXQgc2VlayB5ZSBmaXJzdCB0aGUga2luZ2RvbSBvZiBHb2QsIGFuZCBoaXMgcmlnaHRlb3VzbmVzczsgYW5kIGFsbCB0aGVzZSB0aGluZ3Mgc2hhbGwgYmUgYWRkZWQgdW50byB5b3UuClRha2UgdGhlcmVmb3JlIG5vIHRob3VnaHQgZm9yIHRoZSBtb3Jyb3c6IGZvciB0aGUgbW9ycm93IHNoYWxsIHRha2UgdGhvdWdodCBmb3IgdGhlIHRoaW5ncyBvZiBpdHNlbGYuIFN1ZmZpY2llbnQgdW50byB0aGUgZGF5IGlzIHRoZSBldmlsIHRoZXJlb2YuCkp1ZGdlIG5vdCwgdGhhdCB5ZSBiZSBub3QganVkZ2VkLgpGb3Igd2l0aCB3aGF0IGp1ZGdtZW50IHllIGp1ZGdlLCB5ZSBzaGFsbCBiZSBqdWRnZWQ6IGFuZCB3aXRoIHdoYXQgbWVhc3VyZSB5ZSBtZXRlLCBpdCBzaGFsbCBiZSBtZWFzdXJlZCB0byB5b3UgYWdhaW4uCkFuZCB3aHkgYmVob2xkZXN0IHRob3UgdGhlIG1vdGUgdGhhdCBpcyBpbiB0aHkgYnJvdGhlcidzIGV5ZSwgYnV0IGNvbnNpZGVyZXN0IG5vdCB0aGUgYmVhbSB0aGF0IGlzIGluIHRoaW5lIG93biBleWU/Ck9yIGhvdyB3aWx0IHRob3Ugc2F5IHRvIHRoeSBicm90aGVyLCBMZXQgbWUgcHVsbCBvdXQgdGhlIG1vdGUgb3V0IG9mIHRoaW5lIGV5ZTsgYW5kLCBiZWhvbGQsIGEgYmVhbSBpcyBpbiB0aGluZSBvd24gZXllPwpUaG91IGh5cG9jcml0ZSwgZmlyc3QgY2FzdCBvdXQgdGhlIGJlYW0gb3V0IG9mIHRoaW5lIG93biBleWU7IGFuZCB0aGVuIHNoYWx0IHRob3Ugc2VlIGNsZWFybHkgdG8gY2FzdCBvdXQgdGhlIG1vdGUgb3V0IG9mIHRoeSBicm90aGVyJ3MgZXllLgpHaXZlIG5vdCB0aGF0IHdoaWNoIGlzIGhvbHkgdW50byB0aGUgZG9ncywgbmVpdGhlciBjYXN0IHllIHlvdXIgcGVhcmxzIGJlZm9yZSBzd2luZSwgbGVzdCB0aGV5IHRyYW1wbGUgdGhlbSB1bmRlciB0aGVpciBmZWV0LCBhbmQgdHVybiBhZ2FpbiBhbmQgcmVuZCB5b3UuCkFzaywgYW5kIGl0IHNoYWxsIGJlIGdpdmVuIHlvdTsgc2VlaywgYW5kIHllIHNoYWxsIGZpbmQ7IGtub2NrLCBhbmQgaXQgc2hhbGwgYmUgb3BlbmVkIHVudG8geW91OgpGb3IgZXZlcnkgb25lIHRoYXQgYXNrZXRoIHJlY2VpdmV0aDsgYW5kIGhlIHRoYXQgc2Vla2V0aCBmaW5kZXRoOyBhbmQgdG8gaGltIHRoYXQga25vY2tldGggaXQgc2hhbGwgYmUgb3BlbmVkLgpPciB3aGF0IG1hbiBpcyB0aGVyZSBvZiB5b3UsIHdob20gaWYgaGlzIHNvbiBhc2sgYnJlYWQsIHdpbGwgaGUgZ2l2ZSBoaW0gYSBzdG9uZT8KT3IgaWYgaGUgYXNrIGEgZmlzaCwgd2lsbCBoZSBnaXZlIGhpbSBhIHNlcnBlbnQ/CklmIHllIHRoZW4sIGJlaW5nIGV2aWwsIGtub3cgaG93IHRvIGdpdmUgZ29vZCBnaWZ0cyB1bnRvIHlvdXIgY2hpbGRyZW4sIGhvdyBtdWNoIG1vcmUgc2hhbGwgeW91ciBGYXRoZXIgd2hpY2ggaXMgaW4gaGVhdmVuIGdpdmUgZ29vZCB0aGluZ3MgdG8gdGhlbSB0aGF0IGFzayBoaW0/ClRoZXJlZm9yZSBhbGwgdGhpbmdzIHdoYXRzb2V2ZXIgeWUgd291bGQgdGhhdCBtZW4gc2hvdWxkIGRvIHRvIHlvdSwgZG8geWUgZXZlbiBzbyB0byB0aGVtOiBmb3IgdGhpcyBpcyB0aGUgbGF3IGFuZCB0aGUgcHJvcGhldHMuCkVudGVyIHllIGluIGF0IHRoZSBzdHJhaXQgZ2F0ZTogZm9yIHdpZGUgaXMgdGhlIGdhdGUsIGFuZCBicm9hZCBpcyB0aGUgd2F5LCB0aGF0IGxlYWRldGggdG8gZGVzdHJ1Y3Rpb24sIGFuZCBtYW55IHRoZXJlIGJlIHdoaWNoIGdvIGluIHRoZXJlYXQ6CkJlY2F1c2Ugc3RyYWl0IGlzIHRoZSBnYXRlLCBhbmQgbmFycm93IGlzIHRoZSB3YXksIHdoaWNoIGxlYWRldGggdW50byBsaWZlLCBhbmQgZmV3IHRoZXJlIGJlIHRoYXQgZmluZCBpdC4KQmV3YXJlIG9mIGZhbHNlIHByb3BoZXRzLCB3aGljaCBjb21lIHRvIHlvdSBpbiBzaGVlcCdzIGNsb3RoaW5nLCBidXQgaW53YXJkbHkgdGhleSBhcmUgcmF2ZW5pbmcgd29sdmVzLgpZZSBzaGFsbCBrbm93IHRoZW0gYnkgdGhlaXIgZnJ1aXRzLiBEbyBtZW4gZ2F0aGVyIGdyYXBlcyBvZiB0aG9ybnMsIG9yIGZpZ3Mgb2YgdGhpc3RsZXM/CkV2ZW4gc28gZXZlcnkgZ29vZCB0cmVlIGJyaW5nZXRoIGZvcnRoIGdvb2QgZnJ1aXQ7IGJ1dCBhIGNvcnJ1cHQgdHJlZSBicmluZ2V0aCBmb3J0aCBldmlsIGZydWl0LgpBIGdvb2QgdHJlZSBjYW5ub3QgYnJpbmcgZm9ydGggZXZpbCBmcnVpdCwgbmVpdGhlciBjYW4gYSBjb3JydXB0IHRyZWUgYnJpbmcgZm9ydGggZ29vZCBmcnVpdC4KRXZlcnkgdHJlZSB0aGF0IGJyaW5nZXRoIG5vdCBmb3J0aCBnb29kIGZydWl0IGlzIGhld24gZG93biwgYW5kIGNhc3QgaW50byB0aGUgZmlyZS4KV2hlcmVmb3JlIGJ5IHRoZWlyIGZydWl0cyB5ZSBzaGFsbCBrbm93IHRoZW0uCk5vdCBldmVyeSBvbmUgdGhhdCBzYWl0aCB1bnRvIG1lLCBMb3JkLCBMb3JkLCBzaGFsbCBlbnRlciBpbnRvIHRoZSBraW5nZG9tIG9mIGhlYXZlbjsgYnV0IGhlIHRoYXQgZG9ldGggdGhlIHdpbGwgb2YgbXkgRmF0aGVyIHdoaWNoIGlzIGluIGhlYXZlbi4KTWFueSB3aWxsIHNheSB0byBtZSBpbiB0aGF0IGRheSwgTG9yZCwgTG9yZCwgaGF2ZSB3ZSBub3QgcHJvcGhlc2llZCBpbiB0aHkgbmFtZT8gYW5kIGluIHRoeSBuYW1lIGhhdmUgY2FzdCBvdXQgZGV2aWxzPyBhbmQgaW4gdGh5IG5hbWUgZG9uZSBtYW55IHdvbmRlcmZ1bCB3b3Jrcz8KQW5kIHRoZW4gd2lsbCBJIHByb2Zlc3MgdW50byB0aGVtLCBJIG5ldmVyIGtuZXcgeW91OiBkZXBhcnQgZnJvbSBtZSwgeWUgdGhhdCB3b3JrIGluaXF1aXR5LgpUaGVyZWZvcmUgd2hvc29ldmVyIGhlYXJldGggdGhlc2Ugc2F5aW5ncyBvZiBtaW5lLCBhbmQgZG9ldGggdGhlbSwgSSB3aWxsIGxpa2VuIGhpbSB1bnRvIGEgd2lzZSBtYW4sIHdoaWNoIGJ1aWx0IGhpcyBob3VzZSB1cG9uIGEgcm9jazoKQW5kIHRoZSByYWluIGRlc2NlbmRlZCwgYW5kIHRoZSBmbG9vZHMgY2FtZSwgYW5kIHRoZSB3aW5kcyBibGV3LCBhbmQgYmVhdCB1cG9uIHRoYXQgaG91c2U7IGFuZCBpdCBmZWxsIG5vdDogZm9yIGl0IHdhcyBmb3VuZGVkIHVwb24gYSByb2NrLgpBbmQgZXZlcnkgb25lIHRoYXQgaGVhcmV0aCB0aGVzZSBzYXlpbmdzIG9mIG1pbmUsIGFuZCBkb2V0aCB0aGVtIG5vdCwgc2hhbGwgYmUgbGlrZW5lZCB1bnRvIGEgZm9vbGlzaCBtYW4sIHdoaWNoIGJ1aWx0IGhpcyBob3VzZSB1cG9uIHRoZSBzYW5kOgpBbmQgdGhlIHJhaW4gZGVzY2VuZGVkLCBhbmQgdGhlIGZsb29kcyBjYW1lLCBhbmQgdGhlIHdpbmRzIGJsZXcsIGFuZCBiZWF0IHVwb24gdGhhdCBob3VzZTsgYW5kIGl0IGZlbGw6IGFuZCBncmVhdCB3YXMgdGhlIGZhbGwgb2YgaXQuCkFuZCBpdCBjYW1lIHRvIHBhc3MsIHdoZW4gSmVzdXMgaGFkIGVuZGVkIHRoZXNlIHNheWluZ3MsIHRoZSBwZW9wbGUgd2VyZSBhc3RvbmlzaGVkIGF0IGhpcyBkb2N0cmluZToKRm9yIGhlIHRhdWdodCB0aGVtIGFzIG9uZSBoYXZpbmcgYXV0aG9yaXR5LCBhbmQgbm90IGFzIHRoZSBzY3JpYmVzLgpXaGVuIGhlIHdhcyBjb21lIGRvd24gZnJvbSB0aGUgbW91bnRhaW4sIGdyZWF0IG11bHRpdHVkZXMgZm9sbG93ZWQgaGltLgpBbmQsIGJlaG9sZCwgdGhlcmUgY2FtZSBhIGxlcGVyIGFuZCB3b3JzaGlwcGVkIGhpbSwgc2F5aW5nLCBMb3JkLCBpZiB0aG91IHdpbHQsIHRob3UgY2Fuc3QgbWFrZSBtZSBjbGVhbi4KQW5kIEplc3VzIHB1dCBmb3J0aCBoaXMgaGFuZCwgYW5kIHRvdWNoZWQgaGltLCBzYXlpbmcsIEkgd2lsbDsgYmUgdGhvdSBjbGVhbi4gQW5kIGltbWVkaWF0ZWx5IGhpcyBsZXByb3N5IHdhcyBjbGVhbnNlZC4KQW5kIEplc3VzIHNhaXRoIHVudG8gaGltLCBTZWUgdGhvdSB0ZWxsIG5vIG1hbjsgYnV0IGdvIHRoeSB3YXksIHNoZXcgdGh5c2VsZiB0byB0aGUgcHJpZXN0LCBhbmQgb2ZmZXIgdGhlIGdpZnQgdGhhdCBNb3NlcyBjb21tYW5kZWQsIGZvciBhIHRlc3RpbW9ueSB1bnRvIHRoZW0uCkFuZCB3aGVuIEplc3VzIHdhcyBlbnRlcmVkIGludG8gQ2FwZXJuYXVtLCB0aGVyZSBjYW1lIHVudG8gaGltIGEgY2VudHVyaW9uLCBiZXNlZWNoaW5nIGhpbSwKQW5kIHNheWluZywgTG9yZCwgbXkgc2VydmFudCBsaWV0aCBhdCBob21lIHNpY2sgb2YgdGhlIHBhbHN5LCBncmlldm91c2x5IHRvcm1lbnRlZC4KQW5kIEplc3VzIHNhaXRoIHVudG8gaGltLCBJIHdpbGwgY29tZSBhbmQgaGVhbCBoaW0uClRoZSBjZW50dXJpb24gYW5zd2VyZWQgYW5kIHNhaWQsIExvcmQsIEkgYW0gbm90IHdvcnRoeSB0aGF0IHRob3Ugc2hvdWxkZXN0IGNvbWUgdW5kZXIgbXkgcm9vZjogYnV0IHNwZWFrIHRoZSB3b3JkIG9ubHksIGFuZCBteSBzZXJ2YW50IHNoYWxsIGJlIGhlYWxlZC4KRm9yIEkgYW0gYSBtYW4gdW5kZXIgYXV0aG9yaXR5LCBoYXZpbmcgc29sZGllcnMgdW5kZXIgbWU6IGFuZCBJIHNheSB0byB0aGlzIG1hbiwgR28sIGFuZCBoZSBnb2V0aDsgYW5kIHRvIGFub3RoZXIsIENvbWUsIGFuZCBoZSBjb21ldGg7IGFuZCB0byBteSBzZXJ2YW50LCBEbyB0aGlzLCBhbmQgaGUgZG9ldGggaXQuCldoZW4gSmVzdXMgaGVhcmQgaXQsIGhlIG1hcnZlbGxlZCwgYW5kIHNhaWQgdG8gdGhlbSB0aGF0IGZvbGxvd2VkLCBWZXJpbHkgSSBzYXkgdW50byB5b3UsIEkgaGF2ZSBub3QgZm91bmQgc28gZ3JlYXQgZmFpdGgsIG5vLCBub3QgaW4gSXNyYWVsLgpBbmQgSSBzYXkgdW50byB5b3UsIFRoYXQgbWFueSBzaGFsbCBjb21lIGZyb20gdGhlIGVhc3QgYW5kIHdlc3QsIGFuZCBzaGFsbCBzaXQgZG93biB3aXRoIEFicmFoYW0sIGFuZCBJc2FhYywgYW5kIEphY29iLCBpbiB0aGUga2luZ2RvbSBvZiBoZWF2ZW4uCkJ1dCB0aGUgY2hpbGRyZW4gb2YgdGhlIGtpbmdkb20gc2hhbGwgYmUgY2FzdCBvdXQgaW50byBvdXRlciBkYXJrbmVzczogdGhlcmUgc2hhbGwgYmUgd2VlcGluZyBhbmQgZ25hc2hpbmcgb2YgdGVldGguCkFuZCBKZXN1cyBzYWlkIHVudG8gdGhlIGNlbnR1cmlvbiwgR28gdGh5IHdheTsgYW5kIGFzIHRob3UgaGFzdCBiZWxpZXZlZCwgc28gYmUgaXQgZG9uZSB1bnRvIHRoZWUuIEFuZCBoaXMgc2VydmFudCB3YXMgaGVhbGVkIGluIHRoZSBzZWxmc2FtZSBob3VyLgpBbmQgd2hlbiBKZXN1cyB3YXMgY29tZSBpbnRvIFBldGVyJ3MgaG91c2UsIGhlIHNhdyBoaXMgd2lmZSdzIG1vdGhlciBsYWlkLCBhbmQgc2ljayBvZiBhIGZldmVyLgpBbmQgaGUgdG91Y2hlZCBoZXIgaGFuZCwgYW5kIHRoZSBmZXZlciBsZWZ0IGhlcjogYW5kIHNoZSBhcm9zZSwgYW5kIG1pbmlzdGVyZWQgdW50byB0aGVtLgpXaGVuIHRoZSBldmVuIHdhcyBjb21lLCB0aGV5IGJyb3VnaHQgdW50byBoaW0gbWFueSB0aGF0IHdlcmUgcG9zc2Vzc2VkIHdpdGggZGV2aWxzOiBhbmQgaGUgY2FzdCBvdXQgdGhlIHNwaXJpdHMgd2l0aCBoaXMgd29yZCwgYW5kIGhlYWxlZCBhbGwgdGhhdCB3ZXJlIHNpY2s6ClRoYXQgaXQgbWlnaHQgYmUgZnVsZmlsbGVkIHdoaWNoIHdhcyBzcG9rZW4gYnkgRXNhaWFzIHRoZSBwcm9waGV0LCBzYXlpbmcsIEhpbXNlbGYgdG9vayBvdXIgaW5maXJtaXRpZXMsIGFuZCBiYXJlIG91ciBzaWNrbmVzc2VzLgpOb3cgd2hlbiBKZXN1cyBzYXcgZ3JlYXQgbXVsdGl0dWRlcyBhYm91dCBoaW0sIGhlIGdhdmUgY29tbWFuZG1lbnQgdG8gZGVwYXJ0IHVudG8gdGhlIG90aGVyIHNpZGUuCkFuZCBhIGNlcnRhaW4gc2NyaWJlIGNhbWUsIGFuZCBzYWlkIHVudG8gaGltLCBNYXN0ZXIsIEkgd2lsbCBmb2xsb3cgdGhlZSB3aGl0aGVyc29ldmVyIHRob3UgZ29lc3QuCkFuZCBKZXN1cyBzYWl0aCB1bnRvIGhpbSwgVGhlIGZveGVzIGhhdmUgaG9sZXMsIGFuZCB0aGUgYmlyZHMgb2YgdGhlIGFpciBoYXZlIG5lc3RzOyBidXQgdGhlIFNvbiBvZiBtYW4gaGF0aCBub3Qgd2hlcmUgdG8gbGF5IGhpcyBoZWFkLgpBbmQgYW5vdGhlciBvZiBoaXMgZGlzY2lwbGVzIHNhaWQgdW50byBoaW0sIExvcmQsIHN1ZmZlciBtZSBmaXJzdCB0byBnbyBhbmQgYnVyeSBteSBmYXRoZXIuCkJ1dCBKZXN1cyBzYWlkIHVudG8gaGltLCBGb2xsb3cgbWU7IGFuZCBsZXQgdGhlIGRlYWQgYnVyeSB0aGVpciBkZWFkLgpBbmQgd2hlbiBoZSB3YXMgZW50ZXJlZCBpbnRvIGEgc2hpcCwgaGlzIGRpc2NpcGxlcyBmb2xsb3dlZCBoaW0uCkFuZCwgYmVob2xkLCB0aGVyZSBhcm9zZSBhIGdyZWF0IHRlbXBlc3QgaW4gdGhlIHNlYSwgaW5zb211Y2ggdGhhdCB0aGUgc2hpcCB3YXMgY292ZXJlZCB3aXRoIHRoZSB3YXZlczogYnV0IGhlIHdhcyBhc2xlZXAuCkFuZCBoaXMgZGlzY2lwbGVzIGNhbWUgdG8gaGltLCBhbmQgYXdva2UgaGltLCBzYXlpbmcsIExvcmQsIHNhdmUgdXM6IHdlIHBlcmlzaC4KQW5kIGhlIHNhaXRoIHVudG8gdGhlbSwgV2h5IGFyZSB5ZSBmZWFyZnVsLCBPIHllIG9mIGxpdHRsZSBmYWl0aD8gVGhlbiBoZSBhcm9zZSwgYW5kIHJlYnVrZWQgdGhlIHdpbmRzIGFuZCB0aGUgc2VhOyBhbmQgdGhlcmUgd2FzIGEgZ3JlYXQgY2FsbS4KQnV0IHRoZSBtZW4gbWFydmVsbGVkLCBzYXlpbmcsIFdoYXQgbWFubmVyIG9mIG1hbiBpcyB0aGlzLCB0aGF0IGV2ZW4gdGhlIHdpbmRzIGFuZCB0aGUgc2VhIG9iZXkgaGltIQpBbmQgd2hlbiBoZSB3YXMgY29tZSB0byB0aGUgb3RoZXIgc2lkZSBpbnRvIHRoZSBjb3VudHJ5IG9mIHRoZSBHZXJnZXNlbmVzLCB0aGVyZSBtZXQgaGltIHR3byBwb3NzZXNzZWQgd2l0aCBkZXZpbHMsIGNvbWluZyBvdXQgb2YgdGhlIHRvbWJzLCBleGNlZWRpbmcgZmllcmNlLCBzbyB0aGF0IG5vIG1hbiBtaWdodCBwYXNzIGJ5IHRoYXQgd2F5LgpBbmQsIGJlaG9sZCwgdGhleSBjcmllZCBvdXQsIHNheWluZywgV2hhdCBoYXZlIHdlIHRvIGRvIHdpdGggdGhlZSwgSmVzdXMsIHRob3UgU29uIG9mIEdvZD8gYXJ0IHRob3UgY29tZSBoaXRoZXIgdG8gdG9ybWVudCB1cyBiZWZvcmUgdGhlIHRpbWU/CkFuZCB0aGVyZSB3YXMgYSBnb29kIHdheSBvZmYgZnJvbSB0aGVtIGFuIGhlcmQgb2YgbWFueSBzd2luZSBmZWVkaW5nLgpTbyB0aGUgZGV2aWxzIGJlc291Z2h0IGhpbSwgc2F5aW5nLCBJZiB0aG91IGNhc3QgdXMgb3V0LCBzdWZmZXIgdXMgdG8gZ28gYXdheSBpbnRvIHRoZSBoZXJkIG9mIHN3aW5lLgpBbmQgaGUgc2FpZCB1bnRvIHRoZW0sIEdvLiBBbmQgd2hlbiB0aGV5IHdlcmUgY29tZSBvdXQsIHRoZXkgd2VudCBpbnRvIHRoZSBoZXJkIG9mIHN3aW5lOiBhbmQsIGJlaG9sZCwgdGhlIHdob2xlIGhlcmQgb2Ygc3dpbmUgcmFuIHZpb2xlbnRseSBkb3duIGEgc3RlZXAgcGxhY2UgaW50byB0aGUgc2VhLCBhbmQgcGVyaXNoZWQgaW4gdGhlIHdhdGVycy4KQW5kIHRoZXkgdGhhdCBrZXB0IHRoZW0gZmxlZCwgYW5kIHdlbnQgdGhlaXIgd2F5cyBpbnRvIHRoZSBjaXR5LCBhbmQgdG9sZCBldmVyeSB0aGluZywgYW5kIHdoYXQgd2FzIGJlZmFsbGVuIHRvIHRoZSBwb3NzZXNzZWQgb2YgdGhlIGRldmlscy4KQW5kLCBiZWhvbGQsIHRoZSB3aG9sZSBjaXR5IGNhbWUgb3V0IHRvIG1lZXQgSmVzdXM6IGFuZCB3aGVuIHRoZXkgc2F3IGhpbSwgdGhleSBiZXNvdWdodCBoaW0gdGhhdCBoZSB3b3VsZCBkZXBhcnQgb3V0IG9mIHRoZWlyIGNvYXN0cy4KQW5kIGhlIGVudGVyZWQgaW50byBhIHNoaXAsIGFuZCBwYXNzZWQgb3ZlciwgYW5kIGNhbWUgaW50byBoaXMgb3duIGNpdHkuCkFuZCwgYmVob2xkLCB0aGV5IGJyb3VnaHQgdG8gaGltIGEgbWFuIHNpY2sgb2YgdGhlIHBhbHN5LCBseWluZyBvbiBhIGJlZDogYW5kIEplc3VzIHNlZWluZyB0aGVpciBmYWl0aCBzYWlkIHVudG8gdGhlIHNpY2sgb2YgdGhlIHBhbHN5OyBTb24sIGJlIG9mIGdvb2QgY2hlZXI7IHRoeSBzaW5zIGJlIGZvcmdpdmVuIHRoZWUuCkFuZCwgYmVob2xkLCBjZXJ0YWluIG9mIHRoZSBzY3JpYmVzIHNhaWQgd2l0aGluIHRoZW1zZWx2ZXMsIFRoaXMgbWFuIGJsYXNwaGVtZXRoLgpBbmQgSmVzdXMga25vd2luZyB0aGVpciB0aG91Z2h0cyBzYWlkLCBXaGVyZWZvcmUgdGhpbmsgeWUgZXZpbCBpbiB5b3VyIGhlYXJ0cz8KRm9yIHdoZXRoZXIgaXMgZWFzaWVyLCB0byBzYXksIFRoeSBzaW5zIGJlIGZvcmdpdmVuIHRoZWU7IG9yIHRvIHNheSwgQXJpc2UsIGFuZCB3YWxrPwpCdXQgdGhhdCB5ZSBtYXkga25vdyB0aGF0IHRoZSBTb24gb2YgbWFuIGhhdGggcG93ZXIgb24gZWFydGggdG8gZm9yZ2l2ZSBzaW5zLCAodGhlbiBzYWl0aCBoZSB0byB0aGUgc2ljayBvZiB0aGUgcGFsc3ksKSBBcmlzZSwgdGFrZSB1cCB0aHkgYmVkLCBhbmQgZ28gdW50byB0aGluZSBob3VzZS4KQW5kIGhlIGFyb3NlLCBhbmQgZGVwYXJ0ZWQgdG8gaGlzIGhvdXNlLgpCdXQgd2hlbiB0aGUgbXVsdGl0dWRlcyBzYXcgaXQsIHRoZXkgbWFydmVsbGVkLCBhbmQgZ2xvcmlmaWVkIEdvZCwgd2hpY2ggaGFkIGdpdmVuIHN1Y2ggcG93ZXIgdW50byBtZW4uCkFuZCBhcyBKZXN1cyBwYXNzZWQgZm9ydGggZnJvbSB0aGVuY2UsIGhlIHNhdyBhIG1hbiwgbmFtZWQgTWF0dGhldywgc2l0dGluZyBhdCB0aGUgcmVjZWlwdCBvZiBjdXN0b206IGFuZCBoZSBzYWl0aCB1bnRvIGhpbSwgRm9sbG93IG1lLiBBbmQgaGUgYXJvc2UsIGFuZCBmb2xsb3dlZCBoaW0uCkFuZCBpdCBjYW1lIHRvIHBhc3MsIGFzIEplc3VzIHNhdCBhdCBtZWF0IGluIHRoZSBob3VzZSwgYmVob2xkLCBtYW55IHB1YmxpY2FucyBhbmQgc2lubmVycyBjYW1lIGFuZCBzYXQgZG93biB3aXRoIGhpbSBhbmQgaGlzIGRpc2NpcGxlcy4KQW5kIHdoZW4gdGhlIFBoYXJpc2VlcyBzYXcgaXQsIHRoZXkgc2FpZCB1bnRvIGhpcyBkaXNjaXBsZXMsIFdoeSBlYXRldGggeW91ciBNYXN0ZXIgd2l0aCBwdWJsaWNhbnMgYW5kIHNpbm5lcnM/CkJ1dCB3aGVuIEplc3VzIGhlYXJkIHRoYXQsIGhlIHNhaWQgdW50byB0aGVtLCBUaGV5IHRoYXQgYmUgd2hvbGUgbmVlZCBub3QgYSBwaHlzaWNpYW4sIGJ1dCB0aGV5IHRoYXQgYXJlIHNpY2suCkJ1dCBnbyB5ZSBhbmQgbGVhcm4gd2hhdCB0aGF0IG1lYW5ldGgsIEkgd2lsbCBoYXZlIG1lcmN5LCBhbmQgbm90IHNhY3JpZmljZTogZm9yIEkgYW0gbm90IGNvbWUgdG8gY2FsbCB0aGUgcmlnaHRlb3VzLCBidXQgc2lubmVycyB0byByZXBlbnRhbmNlLgpUaGVuIGNhbWUgdG8gaGltIHRoZSBkaXNjaXBsZXMgb2YgSm9obiwgc2F5aW5nLCBXaHkgZG8gd2UgYW5kIHRoZSBQaGFyaXNlZXMgZmFzdCBvZnQsIGJ1dCB0aHkgZGlzY2lwbGVzIGZhc3Qgbm90PwpBbmQgSmVzdXMgc2FpZCB1bnRvIHRoZW0sIENhbiB0aGUgY2hpbGRyZW4gb2YgdGhlIGJyaWRlY2hhbWJlciBtb3VybiwgYXMgbG9uZyBhcyB0aGUgYnJpZGVncm9vbSBpcyB3aXRoIHRoZW0/IGJ1dCB0aGUgZGF5cyB3aWxsIGNvbWUsIHdoZW4gdGhlIGJyaWRlZ3Jvb20gc2hhbGwgYmUgdGFrZW4gZnJvbSB0aGVtLCBhbmQgdGhlbiBzaGFsbCB0aGV5IGZhc3QuCk5vIG1hbiBwdXR0ZXRoIGEgcGllY2Ugb2YgbmV3IGNsb3RoIHVudG8gYW4gb2xkIGdhcm1lbnQsIGZvciB0aGF0IHdoaWNoIGlzIHB1dCBpbiB0byBmaWxsIGl0IHVwIHRha2V0aCBmcm9tIHRoZSBnYXJtZW50LCBhbmQgdGhlIHJlbnQgaXMgbWFkZSB3b3JzZS4KTmVpdGhlciBkbyBtZW4gcHV0IG5ldyB3aW5lIGludG8gb2xkIGJvdHRsZXM6IGVsc2UgdGhlIGJvdHRsZXMgYnJlYWssIGFuZCB0aGUgd2luZSBydW5uZXRoIG91dCwgYW5kIHRoZSBib3R0bGVzIHBlcmlzaDogYnV0IHRoZXkgcHV0IG5ldyB3aW5lIGludG8gbmV3IGJvdHRsZXMsIGFuZCBib3RoIGFyZSBwcmVzZXJ2ZWQuCldoaWxlIGhlIHNwYWtlIHRoZXNlIHRoaW5ncyB1bnRvIHRoZW0sIGJlaG9sZCwgdGhlcmUgY2FtZSBhIGNlcnRhaW4gcnVsZXIsIGFuZCB3b3JzaGlwcGVkIGhpbSwgc2F5aW5nLCBNeSBkYXVnaHRlciBpcyBldmVuIG5vdyBkZWFkOiBidXQgY29tZSBhbmQgbGF5IHRoeSBoYW5kIHVwb24gaGVyLCBhbmQgc2hlIHNoYWxsIGxpdmUuCkFuZCBKZXN1cyBhcm9zZSwgYW5kIGZvbGxvd2VkIGhpbSwgYW5kIHNvIGRpZCBoaXMgZGlzY2lwbGVzLgpBbmQsIGJlaG9sZCwgYSB3b21hbiwgd2hpY2ggd2FzIGRpc2Vhc2VkIHdpdGggYW4gaXNzdWUgb2YgYmxvb2QgdHdlbHZlIHllYXJzLCBjYW1lIGJlaGluZCBoaW0sIGFuZCB0b3VjaGVkIHRoZSBoZW0gb2YgaGlzIGdhcm1lbnQ6CkZvciBzaGUgc2FpZCB3aXRoaW4gaGVyc2VsZiwgSWYgSSBtYXkgYnV0IHRvdWNoIGhpcyBnYXJtZW50LCBJIHNoYWxsIGJlIHdob2xlLgpCdXQgSmVzdXMgdHVybmVkIGhpbSBhYm91dCwgYW5kIHdoZW4gaGUgc2F3IGhlciwgaGUgc2FpZCwgRGF1Z2h0ZXIsIGJlIG9mIGdvb2QgY29tZm9ydDsgdGh5IGZhaXRoIGhhdGggbWFkZSB0aGVlIHdob2xlLiBBbmQgdGhlIHdvbWFuIHdhcyBtYWRlIHdob2xlIGZyb20gdGhhdCBob3VyLgpBbmQgd2hlbiBKZXN1cyBjYW1lIGludG8gdGhlIHJ1bGVyJ3MgaG91c2UsIGFuZCBzYXcgdGhlIG1pbnN0cmVscyBhbmQgdGhlIHBlb3BsZSBtYWtpbmcgYSBub2lzZSwKSGUgc2FpZCB1bnRvIHRoZW0sIEdpdmUgcGxhY2U6IGZvciB0aGUgbWFpZCBpcyBub3QgZGVhZCwgYnV0IHNsZWVwZXRoLiBBbmQgdGhleSBsYXVnaGVkIGhpbSB0byBzY29ybi4KQnV0IHdoZW4gdGhlIHBlb3BsZSB3ZXJlIHB1dCBmb3J0aCwgaGUgd2VudCBpbiwgYW5kIHRvb2sgaGVyIGJ5IHRoZSBoYW5kLCBhbmQgdGhlIG1haWQgYXJvc2UuCkFuZCB0aGUgZmFtZSBoZXJlb2Ygd2VudCBhYnJvYWQgaW50byBhbGwgdGhhdCBsYW5kLgpBbmQgd2hlbiBKZXN1cyBkZXBhcnRlZCB0aGVuY2UsIHR3byBibGluZCBtZW4gZm9sbG93ZWQgaGltLCBjcnlpbmcsIGFuZCBzYXlpbmcsIFRob3Ugc29uIG9mIERhdmlkLCBoYXZlIG1lcmN5IG9uIHVzLgpBbmQgd2hlbiBoZSB3YXMgY29tZSBpbnRvIHRoZSBob3VzZSwgdGhlIGJsaW5kIG1lbiBjYW1lIHRvIGhpbTogYW5kIEplc3VzIHNhaXRoIHVudG8gdGhlbSwgQmVsaWV2ZSB5ZSB0aGF0IEkgYW0gYWJsZSB0byBkbyB0aGlzPyBUaGV5IHNhaWQgdW50byBoaW0sIFllYSwgTG9yZC4KVGhlbiB0b3VjaGVkIGhlIHRoZWlyIGV5ZXMsIHNheWluZywgQWNjb3JkaW5nIHRvIHlvdXIgZmFpdGggYmUgaXQgdW50byB5b3UuCkFuZCB0aGVpciBleWVzIHdlcmUgb3BlbmVkOyBhbmQgSmVzdXMgc3RyYWl0bHkgY2hhcmdlZCB0aGVtLCBzYXlpbmcsIFNlZSB0aGF0IG5vIG1hbiBrbm93IGl0LgpCdXQgdGhleSwgd2hlbiB0aGV5IHdlcmUgZGVwYXJ0ZWQsIHNwcmVhZCBhYnJvYWQgaGlzIGZhbWUgaW4gYWxsIHRoYXQgY291bnRyeS4KQXMgdGhleSB3ZW50IG91dCwgYmVob2xkLCB0aGV5IGJyb3VnaHQgdG8gaGltIGEgZHVtYiBtYW4gcG9zc2Vzc2VkIHdpdGggYSBkZXZpbC4KQW5kIHdoZW4gdGhlIGRldmlsIHdhcyBjYXN0IG91dCwgdGhlIGR1bWIgc3Bha2U6IGFuZCB0aGUgbXVsdGl0dWRlcyBtYXJ2ZWxsZWQsIHNheWluZywgSXQgd2FzIG5ldmVyIHNvIHNlZW4gaW4gSXNyYWVsLgpCdXQgdGhlIFBoYXJpc2VlcyBzYWlkLCBIZSBjYXN0ZXRoIG91dCBkZXZpbHMgdGhyb3VnaCB0aGUgcHJpbmNlIG9mIHRoZSBkZXZpbHMuCkFuZCBKZXN1cyB3ZW50IGFib3V0IGFsbCB0aGUgY2l0aWVzIGFuZCB2aWxsYWdlcywgdGVhY2hpbmcgaW4gdGhlaXIgc3luYWdvZ3VlcywgYW5kIHByZWFjaGluZyB0aGUgZ29zcGVsIG9mIHRoZSBraW5nZG9tLCBhbmQgaGVhbGluZyBldmVyeSBzaWNrbmVzcyBhbmQgZXZlcnkgZGlzZWFzZSBhbW9uZyB0aGUgcGVvcGxlLgpCdXQgd2hlbiBoZSBzYXcgdGhlIG11bHRpdHVkZXMsIGhlIHdhcyBtb3ZlZCB3aXRoIGNvbXBhc3Npb24gb24gdGhlbSwgYmVjYXVzZSB0aGV5IGZhaW50ZWQsIGFuZCB3ZXJlIHNjYXR0ZXJlZCBhYnJvYWQsIGFzIHNoZWVwIGhhdmluZyBubyBzaGVwaGVyZC4KVGhlbiBzYWl0aCBoZSB1bnRvIGhpcyBkaXNjaXBsZXMsIFRoZSBoYXJ2ZXN0IHRydWx5IGlzIHBsZW50ZW91cywgYnV0IHRoZSBsYWJvdXJlcnMgYXJlIGZldzsKUHJheSB5ZSB0aGVyZWZvcmUgdGhlIExvcmQgb2YgdGhlIGhhcnZlc3QsIHRoYXQgaGUgd2lsbCBzZW5kIGZvcnRoIGxhYm91cmVycyBpbnRvIGhpcyBoYXJ2ZXN0LgpBbmQgd2hlbiBoZSBoYWQgY2FsbGVkIHVudG8gaGltIGhpcyB0d2VsdmUgZGlzY2lwbGVzLCBoZSBnYXZlIHRoZW0gcG93ZXIgYWdhaW5zdCB1bmNsZWFuIHNwaXJpdHMsIHRvIGNhc3QgdGhlbSBvdXQsIGFuZCB0byBoZWFsIGFsbCBtYW5uZXIgb2Ygc2lja25lc3MgYW5kIGFsbCBtYW5uZXIgb2YgZGlzZWFzZS4KTm93IHRoZSBuYW1lcyBvZiB0aGUgdHdlbHZlIGFwb3N0bGVzIGFyZSB0aGVzZTsgVGhlIGZpcnN0LCBTaW1vbiwgd2hvIGlzIGNhbGxlZCBQZXRlciwgYW5kIEFuZHJldyBoaXMgYnJvdGhlcjsgSmFtZXMgdGhlIHNvbiBvZiBaZWJlZGVlLCBhbmQgSm9obiBoaXMgYnJvdGhlcjsKUGhpbGlwLCBhbmQgQmFydGhvbG9tZXc7IFRob21hcywgYW5kIE1hdHRoZXcgdGhlIHB1YmxpY2FuOyBKYW1lcyB0aGUgc29uIG9mIEFscGhhZXVzLCBhbmQgTGViYmFldXMsIHdob3NlIHN1cm5hbWUgd2FzIFRoYWRkYWV1czsKU2ltb24gdGhlIENhbmFhbml0ZSwgYW5kIEp1ZGFzIElzY2FyaW90LCB3aG8gYWxzbyBiZXRyYXllZCBoaW0uClRoZXNlIHR3ZWx2ZSBKZXN1cyBzZW50IGZvcnRoLCBhbmQgY29tbWFuZGVkIHRoZW0sIHNheWluZywgR28gbm90IGludG8gdGhlIHdheSBvZiB0aGUgR2VudGlsZXMsIGFuZCBpbnRvIGFueSBjaXR5IG9mIHRoZSBTYW1hcml0YW5zIGVudGVyIHllIG5vdDoKQnV0IGdvIHJhdGhlciB0byB0aGUgbG9zdCBzaGVlcCBvZiB0aGUgaG91c2Ugb2YgSXNyYWVsLgpBbmQgYXMgeWUgZ28sIHByZWFjaCwgc2F5aW5nLCBUaGUga2luZ2RvbSBvZiBoZWF2ZW4gaXMgYXQgaGFuZC4KSGVhbCB0aGUgc2ljaywgY2xlYW5zZSB0aGUgbGVwZXJzLCByYWlzZSB0aGUgZGVhZCwgY2FzdCBvdXQgZGV2aWxzOiBmcmVlbHkgeWUgaGF2ZSByZWNlaXZlZCwgZnJlZWx5IGdpdmUuClByb3ZpZGUgbmVpdGhlciBnb2xkLCBub3Igc2lsdmVyLCBub3IgYnJhc3MgaW4geW91ciBwdXJzZXMsCk5vciBzY3JpcCBmb3IgeW91ciBqb3VybmV5LCBuZWl0aGVyIHR3byBjb2F0cywgbmVpdGhlciBzaG9lcywgbm9yIHlldCBzdGF2ZXM6IGZvciB0aGUgd29ya21hbiBpcyB3b3J0aHkgb2YgaGlzIG1lYXQuCkFuZCBpbnRvIHdoYXRzb2V2ZXIgY2l0eSBvciB0b3duIHllIHNoYWxsIGVudGVyLCBlbnF1aXJlIHdobyBpbiBpdCBpcyB3b3J0aHk7IGFuZCB0aGVyZSBhYmlkZSB0aWxsIHllIGdvIHRoZW5jZS4KQW5kIHdoZW4geWUgY29tZSBpbnRvIGFuIGhvdXNlLCBzYWx1dGUgaXQuCkFuZCBpZiB0aGUgaG91c2UgYmUgd29ydGh5LCBsZXQgeW91ciBwZWFjZSBjb21lIHVwb24gaXQ6IGJ1dCBpZiBpdCBiZSBub3Qgd29ydGh5LCBsZXQgeW91ciBwZWFjZSByZXR1cm4gdG8geW91LgpBbmQgd2hvc29ldmVyIHNoYWxsIG5vdCByZWNlaXZlIHlvdSwgbm9yIGhlYXIgeW91ciB3b3Jkcywgd2hlbiB5ZSBkZXBhcnQgb3V0IG9mIHRoYXQgaG91c2Ugb3IgY2l0eSwgc2hha2Ugb2ZmIHRoZSBkdXN0IG9mIHlvdXIgZmVldC4KVmVyaWx5IEkgc2F5IHVudG8geW91LCBJdCBzaGFsbCBiZSBtb3JlIHRvbGVyYWJsZSBmb3IgdGhlIGxhbmQgb2YgU29kb20gYW5kIEdvbW9ycmhhIGluIHRoZSBkYXkgb2YganVkZ21lbnQsIHRoYW4gZm9yIHRoYXQgY2l0eS4KQmVob2xkLCBJIHNlbmQgeW91IGZvcnRoIGFzIHNoZWVwIGluIHRoZSBtaWRzdCBvZiB3b2x2ZXM6IGJlIHllIHRoZXJlZm9yZSB3aXNlIGFzIHNlcnBlbnRzLCBhbmQgaGFybWxlc3MgYXMgZG92ZXMuCkJ1dCBiZXdhcmUgb2YgbWVuOiBmb3IgdGhleSB3aWxsIGRlbGl2ZXIgeW91IHVwIHRvIHRoZSBjb3VuY2lscywgYW5kIHRoZXkgd2lsbCBzY291cmdlIHlvdSBpbiB0aGVpciBzeW5hZ29ndWVzOwpBbmQgeWUgc2hhbGwgYmUgYnJvdWdodCBiZWZvcmUgZ292ZXJub3JzIGFuZCBraW5ncyBmb3IgbXkgc2FrZSwgZm9yIGEgdGVzdGltb255IGFnYWluc3QgdGhlbSBhbmQgdGhlIEdlbnRpbGVzLgpCdXQgd2hlbiB0aGV5IGRlbGl2ZXIgeW91IHVwLCB0YWtlIG5vIHRob3VnaHQgaG93IG9yIHdoYXQgeWUgc2hhbGwgc3BlYWs6IGZvciBpdCBzaGFsbCBiZSBnaXZlbiB5b3UgaW4gdGhhdCBzYW1lIGhvdXIgd2hhdCB5ZSBzaGFsbCBzcGVhay4KRm9yIGl0IGlzIG5vdCB5ZSB0aGF0IHNwZWFrLCBidXQgdGhlIFNwaXJpdCBvZiB5b3VyIEZhdGhlciB3aGljaCBzcGVha2V0aCBpbiB5b3UuCkFuZCB0aGUgYnJvdGhlciBzaGFsbCBkZWxpdmVyIHVwIHRoZSBicm90aGVyIHRvIGRlYXRoLCBhbmQgdGhlIGZhdGhlciB0aGUgY2hpbGQ6IGFuZCB0aGUgY2hpbGRyZW4gc2hhbGwgcmlzZSB1cCBhZ2FpbnN0IHRoZWlyIHBhcmVudHMsIGFuZCBjYXVzZSB0aGVtIHRvIGJlIHB1dCB0byBkZWF0aC4KQW5kIHllIHNoYWxsIGJlIGhhdGVkIG9mIGFsbCBtZW4gZm9yIG15IG5hbWUncyBzYWtlOiBidXQgaGUgdGhhdCBlbmR1cmV0aCB0byB0aGUgZW5kIHNoYWxsIGJlIHNhdmVkLgpCdXQgd2hlbiB0aGV5IHBlcnNlY3V0ZSB5b3UgaW4gdGhpcyBjaXR5LCBmbGVlIHllIGludG8gYW5vdGhlcjogZm9yIHZlcmlseSBJIHNheSB1bnRvIHlvdSwgWWUgc2hhbGwgbm90IGhhdmUgZ29uZSBvdmVyIHRoZSBjaXRpZXMgb2YgSXNyYWVsLCB0aWxsIHRoZSBTb24gb2YgbWFuIGJlIGNvbWUuClRoZSBkaXNjaXBsZSBpcyBub3QgYWJvdmUgaGlzIG1hc3Rlciwgbm9yIHRoZSBzZXJ2YW50IGFib3ZlIGhpcyBsb3JkLgpJdCBpcyBlbm91Z2ggZm9yIHRoZSBkaXNjaXBsZSB0aGF0IGhlIGJlIGFzIGhpcyBtYXN0ZXIsIGFuZCB0aGUgc2VydmFudCBhcyBoaXMgbG9yZC4gSWYgdGhleSBoYXZlIGNhbGxlZCB0aGUgbWFzdGVyIG9mIHRoZSBob3VzZSBCZWVsemVidWIsIGhvdyBtdWNoIG1vcmUgc2hhbGwgdGhleSBjYWxsIHRoZW0gb2YgaGlzIGhvdXNlaG9sZD8KRmVhciB0aGVtIG5vdCB0aGVyZWZvcmU6IGZvciB0aGVyZSBpcyBub3RoaW5nIGNvdmVyZWQsIHRoYXQgc2hhbGwgbm90IGJlIHJldmVhbGVkOyBhbmQgaGlkLCB0aGF0IHNoYWxsIG5vdCBiZSBrbm93bi4KV2hhdCBJIHRlbGwgeW91IGluIGRhcmtuZXNzLCB0aGF0IHNwZWFrIHllIGluIGxpZ2h0OiBhbmQgd2hhdCB5ZSBoZWFyIGluIHRoZSBlYXIsIHRoYXQgcHJlYWNoIHllIHVwb24gdGhlIGhvdXNldG9wcy4KQW5kIGZlYXIgbm90IHRoZW0gd2hpY2gga2lsbCB0aGUgYm9keSwgYnV0IGFyZSBub3QgYWJsZSB0byBraWxsIHRoZSBzb3VsOiBidXQgcmF0aGVyIGZlYXIgaGltIHdoaWNoIGlzIGFibGUgdG8gZGVzdHJveSBib3RoIHNvdWwgYW5kIGJvZHkgaW4gaGVsbC4KQXJlIG5vdCB0d28gc3BhcnJvd3Mgc29sZCBmb3IgYSBmYXJ0aGluZz8gYW5kIG9uZSBvZiB0aGVtIHNoYWxsIG5vdCBmYWxsIG9uIHRoZSBncm91bmQgd2l0aG91dCB5b3VyIEZhdGhlci4KQnV0IHRoZSB2ZXJ5IGhhaXJzIG9mIHlvdXIgaGVhZCBhcmUgYWxsIG51bWJlcmVkLgpGZWFyIHllIG5vdCB0aGVyZWZvcmUsIHllIGFyZSBvZiBtb3JlIHZhbHVlIHRoYW4gbWFueSBzcGFycm93cy4KV2hvc29ldmVyIHRoZXJlZm9yZSBzaGFsbCBjb25mZXNzIG1lIGJlZm9yZSBtZW4sIGhpbSB3aWxsIEkgY29uZmVzcyBhbHNvIGJlZm9yZSBteSBGYXRoZXIgd2hpY2ggaXMgaW4gaGVhdmVuLgpCdXQgd2hvc29ldmVyIHNoYWxsIGRlbnkgbWUgYmVmb3JlIG1lbiwgaGltIHdpbGwgSSBhbHNvIGRlbnkgYmVmb3JlIG15IEZhdGhlciB3aGljaCBpcyBpbiBoZWF2ZW4uClRoaW5rIG5vdCB0aGF0IEkgYW0gY29tZSB0byBzZW5kIHBlYWNlIG9uIGVhcnRoOiBJIGNhbWUgbm90IHRvIHNlbmQgcGVhY2UsIGJ1dCBhIHN3b3JkLgpGb3IgSSBhbSBjb21lIHRvIHNldCBhIG1hbiBhdCB2YXJpYW5jZSBhZ2FpbnN0IGhpcyBmYXRoZXIsIGFuZCB0aGUgZGF1Z2h0ZXIgYWdhaW5zdCBoZXIgbW90aGVyLCBhbmQgdGhlIGRhdWdodGVyIGluIGxhdyBhZ2FpbnN0IGhlciBtb3RoZXIgaW4gbGF3LgpBbmQgYSBtYW4ncyBmb2VzIHNoYWxsIGJlIHRoZXkgb2YgaGlzIG93biBob3VzZWhvbGQuCkhlIHRoYXQgbG92ZXRoIGZhdGhlciBvciBtb3RoZXIgbW9yZSB0aGFuIG1lIGlzIG5vdCB3b3J0aHkgb2YgbWU6IGFuZCBoZSB0aGF0IGxvdmV0aCBzb24gb3IgZGF1Z2h0ZXIgbW9yZSB0aGFuIG1lIGlzIG5vdCB3b3J0aHkgb2YgbWUuCkFuZCBoZSB0aGF0IHRha2V0aCBub3QgaGlzIGNyb3NzLCBhbmQgZm9sbG93ZXRoIGFmdGVyIG1lLCBpcyBub3Qgd29ydGh5IG9mIG1lLgpIZSB0aGF0IGZpbmRldGggaGlzIGxpZmUgc2hhbGwgbG9zZSBpdDogYW5kIGhlIHRoYXQgbG9zZXRoIGhpcyBsaWZlIGZvciBteSBzYWtlIHNoYWxsIGZpbmQgaXQuCkhlIHRoYXQgcmVjZWl2ZXRoIHlvdSByZWNlaXZldGggbWUsIGFuZCBoZSB0aGF0IHJlY2VpdmV0aCBtZSByZWNlaXZldGggaGltIHRoYXQgc2VudCBtZS4KSGUgdGhhdCByZWNlaXZldGggYSBwcm9waGV0IGluIHRoZSBuYW1lIG9mIGEgcHJvcGhldCBzaGFsbCByZWNlaXZlIGEgcHJvcGhldCdzIHJld2FyZDsgYW5kIGhlIHRoYXQgcmVjZWl2ZXRoIGEgcmlnaHRlb3VzIG1hbiBpbiB0aGUgbmFtZSBvZiBhIHJpZ2h0ZW91cyBtYW4gc2hhbGwgcmVjZWl2ZSBhIHJpZ2h0ZW91cyBtYW4ncyByZXdhcmQuCkFuZCB3aG9zb2V2ZXIgc2hhbGwgZ2l2ZSB0byBkcmluayB1bnRvIG9uZSBvZiB0aGVzZSBsaXR0bGUgb25lcyBhIGN1cCBvZiBjb2xkIHdhdGVyIG9ubHkgaW4gdGhlIG5hbWUgb2YgYSBkaXNjaXBsZSwgdmVyaWx5IEkgc2F5IHVudG8geW91LCBoZSBzaGFsbCBpbiBubyB3aXNlIGxvc2UgaGlzIHJld2FyZC4KQW5kIGl0IGNhbWUgdG8gcGFzcywgd2hlbiBKZXN1cyBoYWQgbWFkZSBhbiBlbmQgb2YgY29tbWFuZGluZyBoaXMgdHdlbHZlIGRpc2NpcGxlcywgaGUgZGVwYXJ0ZWQgdGhlbmNlIHRvIHRlYWNoIGFuZCB0byBwcmVhY2ggaW4gdGhlaXIgY2l0aWVzLgpOb3cgd2hlbiBKb2huIGhhZCBoZWFyZCBpbiB0aGUgcHJpc29uIHRoZSB3b3JrcyBvZiBDaHJpc3QsIGhlIHNlbnQgdHdvIG9mIGhpcyBkaXNjaXBsZXMsCkFuZCBzYWlkIHVudG8gaGltLCBBcnQgdGhvdSBoZSB0aGF0IHNob3VsZCBjb21lLCBvciBkbyB3ZSBsb29rIGZvciBhbm90aGVyPwpKZXN1cyBhbnN3ZXJlZCBhbmQgc2FpZCB1bnRvIHRoZW0sIEdvIGFuZCBzaGV3IEpvaG4gYWdhaW4gdGhvc2UgdGhpbmdzIHdoaWNoIHllIGRvIGhlYXIgYW5kIHNlZToKVGhlIGJsaW5kIHJlY2VpdmUgdGhlaXIgc2lnaHQsIGFuZCB0aGUgbGFtZSB3YWxrLCB0aGUgbGVwZXJzIGFyZSBjbGVhbnNlZCwgYW5kIHRoZSBkZWFmIGhlYXIsIHRoZSBkZWFkIGFyZSByYWlzZWQgdXAsIGFuZCB0aGUgcG9vciBoYXZlIHRoZSBnb3NwZWwgcHJlYWNoZWQgdG8gdGhlbS4KQW5kIGJsZXNzZWQgaXMgaGUsIHdob3NvZXZlciBzaGFsbCBub3QgYmUgb2ZmZW5kZWQgaW4gbWUuCkFuZCBhcyB0aGV5IGRlcGFydGVkLCBKZXN1cyBiZWdhbiB0byBzYXkgdW50byB0aGUgbXVsdGl0dWRlcyBjb25jZXJuaW5nIEpvaG4sIFdoYXQgd2VudCB5ZSBvdXQgaW50byB0aGUgd2lsZGVybmVzcyB0byBzZWU/IEEgcmVlZCBzaGFrZW4gd2l0aCB0aGUgd2luZD8KQnV0IHdoYXQgd2VudCB5ZSBvdXQgZm9yIHRvIHNlZT8gQSBtYW4gY2xvdGhlZCBpbiBzb2Z0IHJhaW1lbnQ/IGJlaG9sZCwgdGhleSB0aGF0IHdlYXIgc29mdCBjbG90aGluZyBhcmUgaW4ga2luZ3MnIGhvdXNlcy4KQnV0IHdoYXQgd2VudCB5ZSBvdXQgZm9yIHRvIHNlZT8gQSBwcm9waGV0PyB5ZWEsIEkgc2F5IHVudG8geW91LCBhbmQgbW9yZSB0aGFuIGEgcHJvcGhldC4KRm9yIHRoaXMgaXMgaGUsIG9mIHdob20gaXQgaXMgd3JpdHRlbiwgQmVob2xkLCBJIHNlbmQgbXkgbWVzc2VuZ2VyIGJlZm9yZSB0aHkgZmFjZSwgd2hpY2ggc2hhbGwgcHJlcGFyZSB0aHkgd2F5IGJlZm9yZSB0aGVlLgpWZXJpbHkgSSBzYXkgdW50byB5b3UsIEFtb25nIHRoZW0gdGhhdCBhcmUgYm9ybiBvZiB3b21lbiB0aGVyZSBoYXRoIG5vdCByaXNlbiBhIGdyZWF0ZXIgdGhhbiBKb2huIHRoZSBCYXB0aXN0OiBub3R3aXRoc3RhbmRpbmcgaGUgdGhhdCBpcyBsZWFzdCBpbiB0aGUga2luZ2RvbSBvZiBoZWF2ZW4gaXMgZ3JlYXRlciB0aGFuIGhlLgpBbmQgZnJvbSB0aGUgZGF5cyBvZiBKb2huIHRoZSBCYXB0aXN0IHVudGlsIG5vdyB0aGUga2luZ2RvbSBvZiBoZWF2ZW4gc3VmZmVyZXRoIHZpb2xlbmNlLCBhbmQgdGhlIHZpb2xlbnQgdGFrZSBpdCBieSBmb3JjZS4KRm9yIGFsbCB0aGUgcHJvcGhldHMgYW5kIHRoZSBsYXcgcHJvcGhlc2llZCB1bnRpbCBKb2huLgpBbmQgaWYgeWUgd2lsbCByZWNlaXZlIGl0LCB0aGlzIGlzIEVsaWFzLCB3aGljaCB3YXMgZm9yIHRvIGNvbWUuCkhlIHRoYXQgaGF0aCBlYXJzIHRvIGhlYXIsIGxldCBoaW0gaGVhci4KQnV0IHdoZXJldW50byBzaGFsbCBJIGxpa2VuIHRoaXMgZ2VuZXJhdGlvbj8gSXQgaXMgbGlrZSB1bnRvIGNoaWxkcmVuIHNpdHRpbmcgaW4gdGhlIG1hcmtldHMsIGFuZCBjYWxsaW5nIHVudG8gdGhlaXIgZmVsbG93cywKQW5kIHNheWluZywgV2UgaGF2ZSBwaXBlZCB1bnRvIHlvdSwgYW5kIHllIGhhdmUgbm90IGRhbmNlZDsgd2UgaGF2ZSBtb3VybmVkIHVudG8geW91LCBhbmQgeWUgaGF2ZSBub3QgbGFtZW50ZWQuCkZvciBKb2huIGNhbWUgbmVpdGhlciBlYXRpbmcgbm9yIGRyaW5raW5nLCBhbmQgdGhleSBzYXksIEhlIGhhdGggYSBkZXZpbC4KVGhlIFNvbiBvZiBtYW4gY2FtZSBlYXRpbmcgYW5kIGRyaW5raW5nLCBhbmQgdGhleSBzYXksIEJlaG9sZCBhIG1hbiBnbHV0dG9ub3VzLCBhbmQgYSB3aW5lYmliYmVyLCBhIGZyaWVuZCBvZiBwdWJsaWNhbnMgYW5kIHNpbm5lcnMuIEJ1dCB3aXNkb20gaXMganVzdGlmaWVkIG9mIGhlciBjaGlsZHJlbi4KVGhlbiBiZWdhbiBoZSB0byB1cGJyYWlkIHRoZSBjaXRpZXMgd2hlcmVpbiBtb3N0IG9mIGhpcyBtaWdodHkgd29ya3Mgd2VyZSBkb25lLCBiZWNhdXNlIHRoZXkgcmVwZW50ZWQgbm90OgpXb2UgdW50byB0aGVlLCBDaG9yYXppbiEgd29lIHVudG8gdGhlZSwgQmV0aHNhaWRhISBmb3IgaWYgdGhlIG1pZ2h0eSB3b3Jrcywgd2hpY2ggd2VyZSBkb25lIGluIHlvdSwgaGFkIGJlZW4gZG9uZSBpbiBUeXJlIGFuZCBTaWRvbiwgdGhleSB3b3VsZCBoYXZlIHJlcGVudGVkIGxvbmcgYWdvIGluIHNhY2tjbG90aCBhbmQgYXNoZXMuCkJ1dCBJIHNheSB1bnRvIHlvdSwgSXQgc2hhbGwgYmUgbW9yZSB0b2xlcmFibGUgZm9yIFR5cmUgYW5kIFNpZG9uIGF0IHRoZSBkYXkgb2YganVkZ21lbnQsIHRoYW4gZm9yIHlvdS4KQW5kIHRob3UsIENhcGVybmF1bSwgd2hpY2ggYXJ0IGV4YWx0ZWQgdW50byBoZWF2ZW4sIHNoYWx0IGJlIGJyb3VnaHQgZG93biB0byBoZWxsOiBmb3IgaWYgdGhlIG1pZ2h0eSB3b3Jrcywgd2hpY2ggaGF2ZSBiZWVuIGRvbmUgaW4gdGhlZSwgaGFkIGJlZW4gZG9uZSBpbiBTb2RvbSwgaXQgd291bGQgaGF2ZSByZW1haW5lZCB1bnRpbCB0aGlzIGRheS4KQnV0IEkgc2F5IHVudG8geW91LCBUaGF0IGl0IHNoYWxsIGJlIG1vcmUgdG9sZXJhYmxlIGZvciB0aGUgbGFuZCBvZiBTb2RvbSBpbiB0aGUgZGF5IG9mIGp1ZGdtZW50LCB0aGFuIGZvciB0aGVlLgpBdCB0aGF0IHRpbWUgSmVzdXMgYW5zd2VyZWQgYW5kIHNhaWQsIEkgdGhhbmsgdGhlZSwgTyBGYXRoZXIsIExvcmQgb2YgaGVhdmVuIGFuZCBlYXJ0aCwgYmVjYXVzZSB0aG91IGhhc3QgaGlkIHRoZXNlIHRoaW5ncyBmcm9tIHRoZSB3aXNlIGFuZCBwcnVkZW50LCBhbmQgaGFzdCByZXZlYWxlZCB0aGVtIHVudG8gYmFiZXMuCkV2ZW4gc28sIEZhdGhlcjogZm9yIHNvIGl0IHNlZW1lZCBnb29kIGluIHRoeSBzaWdodC4KQWxsIHRoaW5ncyBhcmUgZGVsaXZlcmVkIHVudG8gbWUgb2YgbXkgRmF0aGVyOiBhbmQgbm8gbWFuIGtub3dldGggdGhlIFNvbiwgYnV0IHRoZSBGYXRoZXI7IG5laXRoZXIga25vd2V0aCBhbnkgbWFuIHRoZSBGYXRoZXIsIHNhdmUgdGhlIFNvbiwgYW5kIGhlIHRvIHdob21zb2V2ZXIgdGhlIFNvbiB3aWxsIHJldmVhbCBoaW0uCkNvbWUgdW50byBtZSwgYWxsIHllIHRoYXQgbGFib3VyIGFuZCBhcmUgaGVhdnkgbGFkZW4sIGFuZCBJIHdpbGwgZ2l2ZSB5b3UgcmVzdC4KVGFrZSBteSB5b2tlIHVwb24geW91LCBhbmQgbGVhcm4gb2YgbWU7IGZvciBJIGFtIG1lZWsgYW5kIGxvd2x5IGluIGhlYXJ0OiBhbmQgeWUgc2hhbGwgZmluZCByZXN0IHVudG8geW91ciBzb3Vscy4KRm9yIG15IHlva2UgaXMgZWFzeSwgYW5kIG15IGJ1cmRlbiBpcyBsaWdodC4KQXQgdGhhdCB0aW1lIEplc3VzIHdlbnQgb24gdGhlIHNhYmJhdGggZGF5IHRocm91Z2ggdGhlIGNvcm47IGFuZCBoaXMgZGlzY2lwbGVzIHdlcmUgYW4gaHVuZ3JlZCwgYW5kIGJlZ2FuIHRvIHBsdWNrIHRoZSBlYXJzIG9mIGNvcm4gYW5kIHRvIGVhdC4KQnV0IHdoZW4gdGhlIFBoYXJpc2VlcyBzYXcgaXQsIHRoZXkgc2FpZCB1bnRvIGhpbSwgQmVob2xkLCB0aHkgZGlzY2lwbGVzIGRvIHRoYXQgd2hpY2ggaXMgbm90IGxhd2Z1bCB0byBkbyB1cG9uIHRoZSBzYWJiYXRoIGRheS4KQnV0IGhlIHNhaWQgdW50byB0aGVtLCBIYXZlIHllIG5vdCByZWFkIHdoYXQgRGF2aWQgZGlkLCB3aGVuIGhlIHdhcyBhbiBodW5ncmVkLCBhbmQgdGhleSB0aGF0IHdlcmUgd2l0aCBoaW07CkhvdyBoZSBlbnRlcmVkIGludG8gdGhlIGhvdXNlIG9mIEdvZCwgYW5kIGRpZCBlYXQgdGhlIHNoZXdicmVhZCwgd2hpY2ggd2FzIG5vdCBsYXdmdWwgZm9yIGhpbSB0byBlYXQsIG5laXRoZXIgZm9yIHRoZW0gd2hpY2ggd2VyZSB3aXRoIGhpbSwgYnV0IG9ubHkgZm9yIHRoZSBwcmllc3RzPwpPciBoYXZlIHllIG5vdCByZWFkIGluIHRoZSBsYXcsIGhvdyB0aGF0IG9uIHRoZSBzYWJiYXRoIGRheXMgdGhlIHByaWVzdHMgaW4gdGhlIHRlbXBsZSBwcm9mYW5lIHRoZSBzYWJiYXRoLCBhbmQgYXJlIGJsYW1lbGVzcz8KQnV0IEkgc2F5IHVudG8geW91LCBUaGF0IGluIHRoaXMgcGxhY2UgaXMgb25lIGdyZWF0ZXIgdGhhbiB0aGUgdGVtcGxlLgpCdXQgaWYgeWUgaGFkIGtub3duIHdoYXQgdGhpcyBtZWFuZXRoLCBJIHdpbGwgaGF2ZSBtZXJjeSwgYW5kIG5vdCBzYWNyaWZpY2UsIHllIHdvdWxkIG5vdCBoYXZlIGNvbmRlbW5lZCB0aGUgZ3VpbHRsZXNzLgpGb3IgdGhlIFNvbiBvZiBtYW4gaXMgTG9yZCBldmVuIG9mIHRoZSBzYWJiYXRoIGRheS4KQW5kIHdoZW4gaGUgd2FzIGRlcGFydGVkIHRoZW5jZSwgaGUgd2VudCBpbnRvIHRoZWlyIHN5bmFnb2d1ZToKQW5kLCBiZWhvbGQsIHRoZXJlIHdhcyBhIG1hbiB3aGljaCBoYWQgaGlzIGhhbmQgd2l0aGVyZWQuIEFuZCB0aGV5IGFza2VkIGhpbSwgc2F5aW5nLCBJcyBpdCBsYXdmdWwgdG8gaGVhbCBvbiB0aGUgc2FiYmF0aCBkYXlzPyB0aGF0IHRoZXkgbWlnaHQgYWNjdXNlIGhpbS4KQW5kIGhlIHNhaWQgdW50byB0aGVtLCBXaGF0IG1hbiBzaGFsbCB0aGVyZSBiZSBhbW9uZyB5b3UsIHRoYXQgc2hhbGwgaGF2ZSBvbmUgc2hlZXAsIGFuZCBpZiBpdCBmYWxsIGludG8gYSBwaXQgb24gdGhlIHNhYmJhdGggZGF5LCB3aWxsIGhlIG5vdCBsYXkgaG9sZCBvbiBpdCwgYW5kIGxpZnQgaXQgb3V0PwpIb3cgbXVjaCB0aGVuIGlzIGEgbWFuIGJldHRlciB0aGFuIGEgc2hlZXA/IFdoZXJlZm9yZSBpdCBpcyBsYXdmdWwgdG8gZG8gd2VsbCBvbiB0aGUgc2FiYmF0aCBkYXlzLgpUaGVuIHNhaXRoIGhlIHRvIHRoZSBtYW4sIFN0cmV0Y2ggZm9ydGggdGhpbmUgaGFuZC4gQW5kIGhlIHN0cmV0Y2hlZCBpdCBmb3J0aDsgYW5kIGl0IHdhcyByZXN0b3JlZCB3aG9sZSwgbGlrZSBhcyB0aGUgb3RoZXIuClRoZW4gdGhlIFBoYXJpc2VlcyB3ZW50IG91dCwgYW5kIGhlbGQgYSBjb3VuY2lsIGFnYWluc3QgaGltLCBob3cgdGhleSBtaWdodCBkZXN0cm95IGhpbS4KQnV0IHdoZW4gSmVzdXMga25ldyBpdCwgaGUgd2l0aGRyZXcgaGltc2VsZiBmcm9tIHRoZW5jZTogYW5kIGdyZWF0IG11bHRpdHVkZXMgZm9sbG93ZWQgaGltLCBhbmQgaGUgaGVhbGVkIHRoZW0gYWxsOwpBbmQgY2hhcmdlZCB0aGVtIHRoYXQgdGhleSBzaG91bGQgbm90IG1ha2UgaGltIGtub3duOgpUaGF0IGl0IG1pZ2h0IGJlIGZ1bGZpbGxlZCB3aGljaCB3YXMgc3Bva2VuIGJ5IEVzYWlhcyB0aGUgcHJvcGhldCwgc2F5aW5nLApCZWhvbGQgbXkgc2VydmFudCwgd2hvbSBJIGhhdmUgY2hvc2VuOyBteSBiZWxvdmVkLCBpbiB3aG9tIG15IHNvdWwgaXMgd2VsbCBwbGVhc2VkOiBJIHdpbGwgcHV0IG15IHNwaXJpdCB1cG9uIGhpbSwgYW5kIGhlIHNoYWxsIHNoZXcganVkZ21lbnQgdG8gdGhlIEdlbnRpbGVzLgpIZSBzaGFsbCBub3Qgc3RyaXZlLCBub3IgY3J5OyBuZWl0aGVyIHNoYWxsIGFueSBtYW4gaGVhciBoaXMgdm9pY2UgaW4gdGhlIHN0cmVldHMuCkEgYnJ1aXNlZCByZWVkIHNoYWxsIGhlIG5vdCBicmVhaywgYW5kIHNtb2tpbmcgZmxheCBzaGFsbCBoZSBub3QgcXVlbmNoLCB0aWxsIGhlIHNlbmQgZm9ydGgganVkZ21lbnQgdW50byB2aWN0b3J5LgpBbmQgaW4gaGlzIG5hbWUgc2hhbGwgdGhlIEdlbnRpbGVzIHRydXN0LgpUaGVuIHdhcyBicm91Z2h0IHVudG8gaGltIG9uZSBwb3NzZXNzZWQgd2l0aCBhIGRldmlsLCBibGluZCwgYW5kIGR1bWI6IGFuZCBoZSBoZWFsZWQgaGltLCBpbnNvbXVjaCB0aGF0IHRoZSBibGluZCBhbmQgZHVtYiBib3RoIHNwYWtlIGFuZCBzYXcuCkFuZCBhbGwgdGhlIHBlb3BsZSB3ZXJlIGFtYXplZCwgYW5kIHNhaWQsIElzIG5vdCB0aGlzIHRoZSBzb24gb2YgRGF2aWQ/CkJ1dCB3aGVuIHRoZSBQaGFyaXNlZXMgaGVhcmQgaXQsIHRoZXkgc2FpZCwgVGhpcyBmZWxsb3cgZG90aCBub3QgY2FzdCBvdXQgZGV2aWxzLCBidXQgYnkgQmVlbHplYnViIHRoZSBwcmluY2Ugb2YgdGhlIGRldmlscy4KQW5kIEplc3VzIGtuZXcgdGhlaXIgdGhvdWdodHMsIGFuZCBzYWlkIHVudG8gdGhlbSwgRXZlcnkga2luZ2RvbSBkaXZpZGVkIGFnYWluc3QgaXRzZWxmIGlzIGJyb3VnaHQgdG8gZGVzb2xhdGlvbjsgYW5kIGV2ZXJ5IGNpdHkgb3IgaG91c2UgZGl2aWRlZCBhZ2FpbnN0IGl0c2VsZiBzaGFsbCBub3Qgc3RhbmQ6CkFuZCBpZiBTYXRhbiBjYXN0IG91dCBTYXRhbiwgaGUgaXMgZGl2aWRlZCBhZ2FpbnN0IGhpbXNlbGY7IGhvdyBzaGFsbCB0aGVuIGhpcyBraW5nZG9tIHN0YW5kPwpBbmQgaWYgSSBieSBCZWVsemVidWIgY2FzdCBvdXQgZGV2aWxzLCBieSB3aG9tIGRvIHlvdXIgY2hpbGRyZW4gY2FzdCB0aGVtIG91dD8gdGhlcmVmb3JlIHRoZXkgc2hhbGwgYmUgeW91ciBqdWRnZXMuCkJ1dCBpZiBJIGNhc3Qgb3V0IGRldmlscyBieSB0aGUgU3Bpcml0IG9mIEdvZCwgdGhlbiB0aGUga2luZ2RvbSBvZiBHb2QgaXMgY29tZSB1bnRvIHlvdS4KT3IgZWxzZSBob3cgY2FuIG9uZSBlbnRlciBpbnRvIGEgc3Ryb25nIG1hbidzIGhvdXNlLCBhbmQgc3BvaWwgaGlzIGdvb2RzLCBleGNlcHQgaGUgZmlyc3QgYmluZCB0aGUgc3Ryb25nIG1hbj8gYW5kIHRoZW4gaGUgd2lsbCBzcG9pbCBoaXMgaG91c2UuCkhlIHRoYXQgaXMgbm90IHdpdGggbWUgaXMgYWdhaW5zdCBtZTsgYW5kIGhlIHRoYXQgZ2F0aGVyZXRoIG5vdCB3aXRoIG1lIHNjYXR0ZXJldGggYWJyb2FkLgpXaGVyZWZvcmUgSSBzYXkgdW50byB5b3UsIEFsbCBtYW5uZXIgb2Ygc2luIGFuZCBibGFzcGhlbXkgc2hhbGwgYmUgZm9yZ2l2ZW4gdW50byBtZW46IGJ1dCB0aGUgYmxhc3BoZW15IGFnYWluc3QgdGhlIEhvbHkgR2hvc3Qgc2hhbGwgbm90IGJlIGZvcmdpdmVuIHVudG8gbWVuLgpBbmQgd2hvc29ldmVyIHNwZWFrZXRoIGEgd29yZCBhZ2FpbnN0IHRoZSBTb24gb2YgbWFuLCBpdCBzaGFsbCBiZSBmb3JnaXZlbiBoaW06IGJ1dCB3aG9zb2V2ZXIgc3BlYWtldGggYWdhaW5zdCB0aGUgSG9seSBHaG9zdCwgaXQgc2hhbGwgbm90IGJlIGZvcmdpdmVuIGhpbSwgbmVpdGhlciBpbiB0aGlzIHdvcmxkLCBuZWl0aGVyIGluIHRoZSB3b3JsZCB0byBjb21lLgpFaXRoZXIgbWFrZSB0aGUgdHJlZSBnb29kLCBhbmQgaGlzIGZydWl0IGdvb2Q7IG9yIGVsc2UgbWFrZSB0aGUgdHJlZSBjb3JydXB0LCBhbmQgaGlzIGZydWl0IGNvcnJ1cHQ6IGZvciB0aGUgdHJlZSBpcyBrbm93biBieSBoaXMgZnJ1aXQuCk8gZ2VuZXJhdGlvbiBvZiB2aXBlcnMsIGhvdyBjYW4geWUsIGJlaW5nIGV2aWwsIHNwZWFrIGdvb2QgdGhpbmdzPyBmb3Igb3V0IG9mIHRoZSBhYnVuZGFuY2Ugb2YgdGhlIGhlYXJ0IHRoZSBtb3V0aCBzcGVha2V0aC4KQSBnb29kIG1hbiBvdXQgb2YgdGhlIGdvb2QgdHJlYXN1cmUgb2YgdGhlIGhlYXJ0IGJyaW5nZXRoIGZvcnRoIGdvb2QgdGhpbmdzOiBhbmQgYW4gZXZpbCBtYW4gb3V0IG9mIHRoZSBldmlsIHRyZWFzdXJlIGJyaW5nZXRoIGZvcnRoIGV2aWwgdGhpbmdzLgpCdXQgSSBzYXkgdW50byB5b3UsIFRoYXQgZXZlcnkgaWRsZSB3b3JkIHRoYXQgbWVuIHNoYWxsIHNwZWFrLCB0aGV5IHNoYWxsIGdpdmUgYWNjb3VudCB0aGVyZW9mIGluIHRoZSBkYXkgb2YganVkZ21lbnQuCkZvciBieSB0aHkgd29yZHMgdGhvdSBzaGFsdCBiZSBqdXN0aWZpZWQsIGFuZCBieSB0aHkgd29yZHMgdGhvdSBzaGFsdCBiZSBjb25kZW1uZWQuClRoZW4gY2VydGFpbiBvZiB0aGUgc2NyaWJlcyBhbmQgb2YgdGhlIFBoYXJpc2VlcyBhbnN3ZXJlZCwgc2F5aW5nLCBNYXN0ZXIsIHdlIHdvdWxkIHNlZSBhIHNpZ24gZnJvbSB0aGVlLgpCdXQgaGUgYW5zd2VyZWQgYW5kIHNhaWQgdW50byB0aGVtLCBBbiBldmlsIGFuZCBhZHVsdGVyb3VzIGdlbmVyYXRpb24gc2Vla2V0aCBhZnRlciBhIHNpZ247IGFuZCB0aGVyZSBzaGFsbCBubyBzaWduIGJlIGdpdmVuIHRvIGl0LCBidXQgdGhlIHNpZ24gb2YgdGhlIHByb3BoZXQgSm9uYXM6CkZvciBhcyBKb25hcyB3YXMgdGhyZWUgZGF5cyBhbmQgdGhyZWUgbmlnaHRzIGluIHRoZSB3aGFsZSdzIGJlbGx5OyBzbyBzaGFsbCB0aGUgU29uIG9mIG1hbiBiZSB0aHJlZSBkYXlzIGFuZCB0aHJlZSBuaWdodHMgaW4gdGhlIGhlYXJ0IG9mIHRoZSBlYXJ0aC4KVGhlIG1lbiBvZiBOaW5ldmVoIHNoYWxsIHJpc2UgaW4ganVkZ21lbnQgd2l0aCB0aGlzIGdlbmVyYXRpb24sIGFuZCBzaGFsbCBjb25kZW1uIGl0OiBiZWNhdXNlIHRoZXkgcmVwZW50ZWQgYXQgdGhlIHByZWFjaGluZyBvZiBKb25hczsgYW5kLCBiZWhvbGQsIGEgZ3JlYXRlciB0aGFuIEpvbmFzIGlzIGhlcmUuClRoZSBxdWVlbiBvZiB0aGUgc291dGggc2hhbGwgcmlzZSB1cCBpbiB0aGUganVkZ21lbnQgd2l0aCB0aGlzIGdlbmVyYXRpb24sIGFuZCBzaGFsbCBjb25kZW1uIGl0OiBmb3Igc2hlIGNhbWUgZnJvbSB0aGUgdXR0ZXJtb3N0IHBhcnRzIG9mIHRoZSBlYXJ0aCB0byBoZWFyIHRoZSB3aXNkb20gb2YgU29sb21vbjsgYW5kLCBiZWhvbGQsIGEgZ3JlYXRlciB0aGFuIFNvbG9tb24gaXMgaGVyZS4KV2hlbiB0aGUgdW5jbGVhbiBzcGlyaXQgaXMgZ29uZSBvdXQgb2YgYSBtYW4sIGhlIHdhbGtldGggdGhyb3VnaCBkcnkgcGxhY2VzLCBzZWVraW5nIHJlc3QsIGFuZCBmaW5kZXRoIG5vbmUuClRoZW4gaGUgc2FpdGgsIEkgd2lsbCByZXR1cm4gaW50byBteSBob3VzZSBmcm9tIHdoZW5jZSBJIGNhbWUgb3V0OyBhbmQgd2hlbiBoZSBpcyBjb21lLCBoZSBmaW5kZXRoIGl0IGVtcHR5LCBzd2VwdCwgYW5kIGdhcm5pc2hlZC4KVGhlbiBnb2V0aCBoZSwgYW5kIHRha2V0aCB3aXRoIGhpbXNlbGYgc2V2ZW4gb3RoZXIgc3Bpcml0cyBtb3JlIHdpY2tlZCB0aGFuIGhpbXNlbGYsIGFuZCB0aGV5IGVudGVyIGluIGFuZCBkd2VsbCB0aGVyZTogYW5kIHRoZSBsYXN0IHN0YXRlIG9mIHRoYXQgbWFuIGlzIHdvcnNlIHRoYW4gdGhlIGZpcnN0LiBFdmVuIHNvIHNoYWxsIGl0IGJlIGFsc28gdW50byB0aGlzIHdpY2tlZCBnZW5lcmF0aW9uLgpXaGlsZSBoZSB5ZXQgdGFsa2VkIHRvIHRoZSBwZW9wbGUsIGJlaG9sZCwgaGlzIG1vdGhlciBhbmQgaGlzIGJyZXRocmVuIHN0b29kIHdpdGhvdXQsIGRlc2lyaW5nIHRvIHNwZWFrIHdpdGggaGltLgpUaGVuIG9uZSBzYWlkIHVudG8gaGltLCBCZWhvbGQsIHRoeSBtb3RoZXIgYW5kIHRoeSBicmV0aHJlbiBzdGFuZCB3aXRob3V0LCBkZXNpcmluZyB0byBzcGVhayB3aXRoIHRoZWUuCkJ1dCBoZSBhbnN3ZXJlZCBhbmQgc2FpZCB1bnRvIGhpbSB0aGF0IHRvbGQgaGltLCBXaG8gaXMgbXkgbW90aGVyPyBhbmQgd2hvIGFyZSBteSBicmV0aHJlbj8KQW5kIGhlIHN0cmV0Y2hlZCBmb3J0aCBoaXMgaGFuZCB0b3dhcmQgaGlzIGRpc2NpcGxlcywgYW5kIHNhaWQsIEJlaG9sZCBteSBtb3RoZXIgYW5kIG15IGJyZXRocmVuIQpGb3Igd2hvc29ldmVyIHNoYWxsIGRvIHRoZSB3aWxsIG9mIG15IEZhdGhlciB3aGljaCBpcyBpbiBoZWF2ZW4sIHRoZSBzYW1lIGlzIG15IGJyb3RoZXIsIGFuZCBzaXN0ZXIsIGFuZCBtb3RoZXIuClRoZSBzYW1lIGRheSB3ZW50IEplc3VzIG91dCBvZiB0aGUgaG91c2UsIGFuZCBzYXQgYnkgdGhlIHNlYSBzaWRlLgpBbmQgZ3JlYXQgbXVsdGl0dWRlcyB3ZXJlIGdhdGhlcmVkIHRvZ2V0aGVyIHVudG8gaGltLCBzbyB0aGF0IGhlIHdlbnQgaW50byBhIHNoaXAsIGFuZCBzYXQ7IGFuZCB0aGUgd2hvbGUgbXVsdGl0dWRlIHN0b29kIG9uIHRoZSBzaG9yZS4KQW5kIGhlIHNwYWtlIG1hbnkgdGhpbmdzIHVudG8gdGhlbSBpbiBwYXJhYmxlcywgc2F5aW5nLCBCZWhvbGQsIGEgc293ZXIgd2VudCBmb3J0aCB0byBzb3c7CkFuZCB3aGVuIGhlIHNvd2VkLCBzb21lIHNlZWRzIGZlbGwgYnkgdGhlIHdheSBzaWRlLCBhbmQgdGhlIGZvd2xzIGNhbWUgYW5kIGRldm91cmVkIHRoZW0gdXA6ClNvbWUgZmVsbCB1cG9uIHN0b255IHBsYWNlcywgd2hlcmUgdGhleSBoYWQgbm90IG11Y2ggZWFydGg6IGFuZCBmb3J0aHdpdGggdGhleSBzcHJ1bmcgdXAsIGJlY2F1c2UgdGhleSBoYWQgbm8gZGVlcG5lc3Mgb2YgZWFydGg6CkFuZCB3aGVuIHRoZSBzdW4gd2FzIHVwLCB0aGV5IHdlcmUgc2NvcmNoZWQ7IGFuZCBiZWNhdXNlIHRoZXkgaGFkIG5vIHJvb3QsIHRoZXkgd2l0aGVyZWQgYXdheS4KQW5kIHNvbWUgZmVsbCBhbW9uZyB0aG9ybnM7IGFuZCB0aGUgdGhvcm5zIHNwcnVuZyB1cCwgYW5kIGNob2tlZCB0aGVtOgpCdXQgb3RoZXIgZmVsbCBpbnRvIGdvb2QgZ3JvdW5kLCBhbmQgYnJvdWdodCBmb3J0aCBmcnVpdCwgc29tZSBhbiBodW5kcmVkZm9sZCwgc29tZSBzaXh0eWZvbGQsIHNvbWUgdGhpcnR5Zm9sZC4KV2hvIGhhdGggZWFycyB0byBoZWFyLCBsZXQgaGltIGhlYXIuCkFuZCB0aGUgZGlzY2lwbGVzIGNhbWUsIGFuZCBzYWlkIHVudG8gaGltLCBXaHkgc3BlYWtlc3QgdGhvdSB1bnRvIHRoZW0gaW4gcGFyYWJsZXM/CkhlIGFuc3dlcmVkIGFuZCBzYWlkIHVudG8gdGhlbSwgQmVjYXVzZSBpdCBpcyBnaXZlbiB1bnRvIHlvdSB0byBrbm93IHRoZSBteXN0ZXJpZXMgb2YgdGhlIGtpbmdkb20gb2YgaGVhdmVuLCBidXQgdG8gdGhlbSBpdCBpcyBub3QgZ2l2ZW4uCkZvciB3aG9zb2V2ZXIgaGF0aCwgdG8gaGltIHNoYWxsIGJlIGdpdmVuLCBhbmQgaGUgc2hhbGwgaGF2ZSBtb3JlIGFidW5kYW5jZTogYnV0IHdob3NvZXZlciBoYXRoIG5vdCwgZnJvbSBoaW0gc2hhbGwgYmUgdGFrZW4gYXdheSBldmVuIHRoYXQgaGUgaGF0aC4KVGhlcmVmb3JlIHNwZWFrIEkgdG8gdGhlbSBpbiBwYXJhYmxlczogYmVjYXVzZSB0aGV5IHNlZWluZyBzZWUgbm90OyBhbmQgaGVhcmluZyB0aGV5IGhlYXIgbm90LCBuZWl0aGVyIGRvIHRoZXkgdW5kZXJzdGFuZC4KQW5kIGluIHRoZW0gaXMgZnVsZmlsbGVkIHRoZSBwcm9waGVjeSBvZiBFc2FpYXMsIHdoaWNoIHNhaXRoLCBCeSBoZWFyaW5nIHllIHNoYWxsIGhlYXIsIGFuZCBzaGFsbCBub3QgdW5kZXJzdGFuZDsgYW5kIHNlZWluZyB5ZSBzaGFsbCBzZWUsIGFuZCBzaGFsbCBub3QgcGVyY2VpdmU6CkZvciB0aGlzIHBlb3BsZSdzIGhlYXJ0IGlzIHdheGVkIGdyb3NzLCBhbmQgdGhlaXIgZWFycyBhcmUgZHVsbCBvZiBoZWFyaW5nLCBhbmQgdGhlaXIgZXllcyB0aGV5IGhhdmUgY2xvc2VkOyBsZXN0IGF0IGFueSB0aW1lIHRoZXkgc2hvdWxkIHNlZSB3aXRoIHRoZWlyIGV5ZXMgYW5kIGhlYXIgd2l0aCB0aGVpciBlYXJzLCBhbmQgc2hvdWxkIHVuZGVyc3RhbmQgd2l0aCB0aGVpciBoZWFydCwgYW5kIHNob3VsZCBiZSBjb252ZXJ0ZWQsIGFuZCBJIHNob3VsZCBoZWFsIHRoZW0uCkJ1dCBibGVzc2VkIGFyZSB5b3VyIGV5ZXMsIGZvciB0aGV5IHNlZTogYW5kIHlvdXIgZWFycywgZm9yIHRoZXkgaGVhci4KRm9yIHZlcmlseSBJIHNheSB1bnRvIHlvdSwgVGhhdCBtYW55IHByb3BoZXRzIGFuZCByaWdodGVvdXMgbWVuIGhhdmUgZGVzaXJlZCB0byBzZWUgdGhvc2UgdGhpbmdzIHdoaWNoIHllIHNlZSwgYW5kIGhhdmUgbm90IHNlZW4gdGhlbTsgYW5kIHRvIGhlYXIgdGhvc2UgdGhpbmdzIHdoaWNoIHllIGhlYXIsIGFuZCBoYXZlIG5vdCBoZWFyZCB0aGVtLgpIZWFyIHllIHRoZXJlZm9yZSB0aGUgcGFyYWJsZSBvZiB0aGUgc293ZXIuCldoZW4gYW55IG9uZSBoZWFyZXRoIHRoZSB3b3JkIG9mIHRoZSBraW5nZG9tLCBhbmQgdW5kZXJzdGFuZGV0aCBpdCBub3QsIHRoZW4gY29tZXRoIHRoZSB3aWNrZWQgb25lLCBhbmQgY2F0Y2hldGggYXdheSB0aGF0IHdoaWNoIHdhcyBzb3duIGluIGhpcyBoZWFydC4gVGhpcyBpcyBoZSB3aGljaCByZWNlaXZlZCBzZWVkIGJ5IHRoZSB3YXkgc2lkZS4KQnV0IGhlIHRoYXQgcmVjZWl2ZWQgdGhlIHNlZWQgaW50byBzdG9ueSBwbGFjZXMsIHRoZSBzYW1lIGlzIGhlIHRoYXQgaGVhcmV0aCB0aGUgd29yZCwgYW5kIGFub24gd2l0aCBqb3kgcmVjZWl2ZXRoIGl0OwpZZXQgaGF0aCBoZSBub3Qgcm9vdCBpbiBoaW1zZWxmLCBidXQgZHVyZXRoIGZvciBhIHdoaWxlOiBmb3Igd2hlbiB0cmlidWxhdGlvbiBvciBwZXJzZWN1dGlvbiBhcmlzZXRoIGJlY2F1c2Ugb2YgdGhlIHdvcmQsIGJ5IGFuZCBieSBoZSBpcyBvZmZlbmRlZC4KSGUgYWxzbyB0aGF0IHJlY2VpdmVkIHNlZWQgYW1vbmcgdGhlIHRob3JucyBpcyBoZSB0aGF0IGhlYXJldGggdGhlIHdvcmQ7IGFuZCB0aGUgY2FyZSBvZiB0aGlzIHdvcmxkLCBhbmQgdGhlIGRlY2VpdGZ1bG5lc3Mgb2YgcmljaGVzLCBjaG9rZSB0aGUgd29yZCwgYW5kIGhlIGJlY29tZXRoIHVuZnJ1aXRmdWwuCkJ1dCBoZSB0aGF0IHJlY2VpdmVkIHNlZWQgaW50byB0aGUgZ29vZCBncm91bmQgaXMgaGUgdGhhdCBoZWFyZXRoIHRoZSB3b3JkLCBhbmQgdW5kZXJzdGFuZGV0aCBpdDsgd2hpY2ggYWxzbyBiZWFyZXRoIGZydWl0LCBhbmQgYnJpbmdldGggZm9ydGgsIHNvbWUgYW4gaHVuZHJlZGZvbGQsIHNvbWUgc2l4dHksIHNvbWUgdGhpcnR5LgpBbm90aGVyIHBhcmFibGUgcHV0IGhlIGZvcnRoIHVudG8gdGhlbSwgc2F5aW5nLCBUaGUga2luZ2RvbSBvZiBoZWF2ZW4gaXMgbGlrZW5lZCB1bnRvIGEgbWFuIHdoaWNoIHNvd2VkIGdvb2Qgc2VlZCBpbiBoaXMgZmllbGQ6CkJ1dCB3aGlsZSBtZW4gc2xlcHQsIGhpcyBlbmVteSBjYW1lIGFuZCBzb3dlZCB0YXJlcyBhbW9uZyB0aGUgd2hlYXQsIGFuZCB3ZW50IGhpcyB3YXkuCkJ1dCB3aGVuIHRoZSBibGFkZSB3YXMgc3BydW5nIHVwLCBhbmQgYnJvdWdodCBmb3J0aCBmcnVpdCwgdGhlbiBhcHBlYXJlZCB0aGUgdGFyZXMgYWxzby4KU28gdGhlIHNlcnZhbnRzIG9mIHRoZSBob3VzZWhvbGRlciBjYW1lIGFuZCBzYWlkIHVudG8gaGltLCBTaXIsIGRpZHN0IG5vdCB0aG91IHNvdyBnb29kIHNlZWQgaW4gdGh5IGZpZWxkPyBmcm9tIHdoZW5jZSB0aGVuIGhhdGggaXQgdGFyZXM/CkhlIHNhaWQgdW50byB0aGVtLCBBbiBlbmVteSBoYXRoIGRvbmUgdGhpcy4gVGhlIHNlcnZhbnRzIHNhaWQgdW50byBoaW0sIFdpbHQgdGhvdSB0aGVuIHRoYXQgd2UgZ28gYW5kIGdhdGhlciB0aGVtIHVwPwpCdXQgaGUgc2FpZCwgTmF5OyBsZXN0IHdoaWxlIHllIGdhdGhlciB1cCB0aGUgdGFyZXMsIHllIHJvb3QgdXAgYWxzbyB0aGUgd2hlYXQgd2l0aCB0aGVtLgpMZXQgYm90aCBncm93IHRvZ2V0aGVyIHVudGlsIHRoZSBoYXJ2ZXN0OiBhbmQgaW4gdGhlIHRpbWUgb2YgaGFydmVzdCBJIHdpbGwgc2F5IHRvIHRoZSByZWFwZXJzLCBHYXRoZXIgeWUgdG9nZXRoZXIgZmlyc3QgdGhlIHRhcmVzLCBhbmQgYmluZCB0aGVtIGluIGJ1bmRsZXMgdG8gYnVybiB0aGVtOiBidXQgZ2F0aGVyIHRoZSB3aGVhdCBpbnRvIG15IGJhcm4uCkFub3RoZXIgcGFyYWJsZSBwdXQgaGUgZm9ydGggdW50byB0aGVtLCBzYXlpbmcsIFRoZSBraW5nZG9tIG9mIGhlYXZlbiBpcyBsaWtlIHRvIGEgZ3JhaW4gb2YgbXVzdGFyZCBzZWVkLCB3aGljaCBhIG1hbiB0b29rLCBhbmQgc293ZWQgaW4gaGlzIGZpZWxkOgpXaGljaCBpbmRlZWQgaXMgdGhlIGxlYXN0IG9mIGFsbCBzZWVkczogYnV0IHdoZW4gaXQgaXMgZ3Jvd24sIGl0IGlzIHRoZSBncmVhdGVzdCBhbW9uZyBoZXJicywgYW5kIGJlY29tZXRoIGEgdHJlZSwgc28gdGhhdCB0aGUgYmlyZHMgb2YgdGhlIGFpciBjb21lIGFuZCBsb2RnZSBpbiB0aGUgYnJhbmNoZXMgdGhlcmVvZi4KQW5vdGhlciBwYXJhYmxlIHNwYWtlIGhlIHVudG8gdGhlbTsgVGhlIGtpbmdkb20gb2YgaGVhdmVuIGlzIGxpa2UgdW50byBsZWF2ZW4sIHdoaWNoIGEgd29tYW4gdG9vaywgYW5kIGhpZCBpbiB0aHJlZSBtZWFzdXJlcyBvZiBtZWFsLCB0aWxsIHRoZSB3aG9sZSB3YXMgbGVhdmVuZWQuCkFsbCB0aGVzZSB0aGluZ3Mgc3Bha2UgSmVzdXMgdW50byB0aGUgbXVsdGl0dWRlIGluIHBhcmFibGVzOyBhbmQgd2l0aG91dCBhIHBhcmFibGUgc3Bha2UgaGUgbm90IHVudG8gdGhlbToKVGhhdCBpdCBtaWdodCBiZSBmdWxmaWxsZWQgd2hpY2ggd2FzIHNwb2tlbiBieSB0aGUgcHJvcGhldCwgc2F5aW5nLCBJIHdpbGwgb3BlbiBteSBtb3V0aCBpbiBwYXJhYmxlczsgSSB3aWxsIHV0dGVyIHRoaW5ncyB3aGljaCBoYXZlIGJlZW4ga2VwdCBzZWNyZXQgZnJvbSB0aGUgZm91bmRhdGlvbiBvZiB0aGUgd29ybGQuClRoZW4gSmVzdXMgc2VudCB0aGUgbXVsdGl0dWRlIGF3YXksIGFuZCB3ZW50IGludG8gdGhlIGhvdXNlOiBhbmQgaGlzIGRpc2NpcGxlcyBjYW1lIHVudG8gaGltLCBzYXlpbmcsIERlY2xhcmUgdW50byB1cyB0aGUgcGFyYWJsZSBvZiB0aGUgdGFyZXMgb2YgdGhlIGZpZWxkLgpIZSBhbnN3ZXJlZCBhbmQgc2FpZCB1bnRvIHRoZW0sIEhlIHRoYXQgc293ZXRoIHRoZSBnb29kIHNlZWQgaXMgdGhlIFNvbiBvZiBtYW47ClRoZSBmaWVsZCBpcyB0aGUgd29ybGQ7IHRoZSBnb29kIHNlZWQgYXJlIHRoZSBjaGlsZHJlbiBvZiB0aGUga2luZ2RvbTsgYnV0IHRoZSB0YXJlcyBhcmUgdGhlIGNoaWxkcmVuIG9mIHRoZSB3aWNrZWQgb25lOwpUaGUgZW5lbXkgdGhhdCBzb3dlZCB0aGVtIGlzIHRoZSBkZXZpbDsgdGhlIGhhcnZlc3QgaXMgdGhlIGVuZCBvZiB0aGUgd29ybGQ7IGFuZCB0aGUgcmVhcGVycyBhcmUgdGhlIGFuZ2Vscy4KQXMgdGhlcmVmb3JlIHRoZSB0YXJlcyBhcmUgZ2F0aGVyZWQgYW5kIGJ1cm5lZCBpbiB0aGUgZmlyZTsgc28gc2hhbGwgaXQgYmUgaW4gdGhlIGVuZCBvZiB0aGlzIHdvcmxkLgpUaGUgU29uIG9mIG1hbiBzaGFsbCBzZW5kIGZvcnRoIGhpcyBhbmdlbHMsIGFuZCB0aGV5IHNoYWxsIGdhdGhlciBvdXQgb2YgaGlzIGtpbmdkb20gYWxsIHRoaW5ncyB0aGF0IG9mZmVuZCwgYW5kIHRoZW0gd2hpY2ggZG8gaW5pcXVpdHk7CkFuZCBzaGFsbCBjYXN0IHRoZW0gaW50byBhIGZ1cm5hY2Ugb2YgZmlyZTogdGhlcmUgc2hhbGwgYmUgd2FpbGluZyBhbmQgZ25hc2hpbmcgb2YgdGVldGguClRoZW4gc2hhbGwgdGhlIHJpZ2h0ZW91cyBzaGluZSBmb3J0aCBhcyB0aGUgc3VuIGluIHRoZSBraW5nZG9tIG9mIHRoZWlyIEZhdGhlci4gV2hvIGhhdGggZWFycyB0byBoZWFyLCBsZXQgaGltIGhlYXIuCkFnYWluLCB0aGUga2luZ2RvbSBvZiBoZWF2ZW4gaXMgbGlrZSB1bnRvIHRyZWFzdXJlIGhpZCBpbiBhIGZpZWxkOyB0aGUgd2hpY2ggd2hlbiBhIG1hbiBoYXRoIGZvdW5kLCBoZSBoaWRldGgsIGFuZCBmb3Igam95IHRoZXJlb2YgZ29ldGggYW5kIHNlbGxldGggYWxsIHRoYXQgaGUgaGF0aCwgYW5kIGJ1eWV0aCB0aGF0IGZpZWxkLgpBZ2FpbiwgdGhlIGtpbmdkb20gb2YgaGVhdmVuIGlzIGxpa2UgdW50byBhIG1lcmNoYW50IG1hbiwgc2Vla2luZyBnb29kbHkgcGVhcmxzOgpXaG8sIHdoZW4gaGUgaGFkIGZvdW5kIG9uZSBwZWFybCBvZiBncmVhdCBwcmljZSwgd2VudCBhbmQgc29sZCBhbGwgdGhhdCBoZSBoYWQsIGFuZCBib3VnaHQgaXQuCkFnYWluLCB0aGUga2luZ2RvbSBvZiBoZWF2ZW4gaXMgbGlrZSB1bnRvIGEgbmV0LCB0aGF0IHdhcyBjYXN0IGludG8gdGhlIHNlYSwgYW5kIGdhdGhlcmVkIG9mIGV2ZXJ5IGtpbmQ6CldoaWNoLCB3aGVuIGl0IHdhcyBmdWxsLCB0aGV5IGRyZXcgdG8gc2hvcmUsIGFuZCBzYXQgZG93biwgYW5kIGdhdGhlcmVkIHRoZSBnb29kIGludG8gdmVzc2VscywgYnV0IGNhc3QgdGhlIGJhZCBhd2F5LgpTbyBzaGFsbCBpdCBiZSBhdCB0aGUgZW5kIG9mIHRoZSB3b3JsZDogdGhlIGFuZ2VscyBzaGFsbCBjb21lIGZvcnRoLCBhbmQgc2V2ZXIgdGhlIHdpY2tlZCBmcm9tIGFtb25nIHRoZSBqdXN0LApBbmQgc2hhbGwgY2FzdCB0aGVtIGludG8gdGhlIGZ1cm5hY2Ugb2YgZmlyZTogdGhlcmUgc2hhbGwgYmUgd2FpbGluZyBhbmQgZ25hc2hpbmcgb2YgdGVldGguCkplc3VzIHNhaXRoIHVudG8gdGhlbSwgSGF2ZSB5ZSB1bmRlcnN0b29kIGFsbCB0aGVzZSB0aGluZ3M/IFRoZXkgc2F5IHVudG8gaGltLCBZZWEsIExvcmQuClRoZW4gc2FpZCBoZSB1bnRvIHRoZW0sIFRoZXJlZm9yZSBldmVyeSBzY3JpYmUgd2hpY2ggaXMgaW5zdHJ1Y3RlZCB1bnRvIHRoZSBraW5nZG9tIG9mIGhlYXZlbiBpcyBsaWtlIHVudG8gYSBtYW4gdGhhdCBpcyBhbiBob3VzZWhvbGRlciwgd2hpY2ggYnJpbmdldGggZm9ydGggb3V0IG9mIGhpcyB0cmVhc3VyZSB0aGluZ3MgbmV3IGFuZCBvbGQuCkFuZCBpdCBjYW1lIHRvIHBhc3MsIHRoYXQgd2hlbiBKZXN1cyBoYWQgZmluaXNoZWQgdGhlc2UgcGFyYWJsZXMsIGhlIGRlcGFydGVkIHRoZW5jZS4KQW5kIHdoZW4gaGUgd2FzIGNvbWUgaW50byBoaXMgb3duIGNvdW50cnksIGhlIHRhdWdodCB0aGVtIGluIHRoZWlyIHN5bmFnb2d1ZSwgaW5zb211Y2ggdGhhdCB0aGV5IHdlcmUgYXN0b25pc2hlZCwgYW5kIHNhaWQsIFdoZW5jZSBoYXRoIHRoaXMgbWFuIHRoaXMgd2lzZG9tLCBhbmQgdGhlc2UgbWlnaHR5IHdvcmtzPwpJcyBub3QgdGhpcyB0aGUgY2FycGVudGVyJ3Mgc29uPyBpcyBub3QgaGlzIG1vdGhlciBjYWxsZWQgTWFyeT8gYW5kIGhpcyBicmV0aHJlbiwgSmFtZXMsIGFuZCBKb3NlcywgYW5kIFNpbW9uLCBhbmQgSnVkYXM/CkFuZCBoaXMgc2lzdGVycywgYXJlIHRoZXkgbm90IGFsbCB3aXRoIHVzPyBXaGVuY2UgdGhlbiBoYXRoIHRoaXMgbWFuIGFsbCB0aGVzZSB0aGluZ3M/CkFuZCB0aGV5IHdlcmUgb2ZmZW5kZWQgaW4gaGltLiBCdXQgSmVzdXMgc2FpZCB1bnRvIHRoZW0sIEEgcHJvcGhldCBpcyBub3Qgd2l0aG91dCBob25vdXIsIHNhdmUgaW4gaGlzIG93biBjb3VudHJ5LCBhbmQgaW4gaGlzIG93biBob3VzZS4KQW5kIGhlIGRpZCBub3QgbWFueSBtaWdodHkgd29ya3MgdGhlcmUgYmVjYXVzZSBvZiB0aGVpciB1bmJlbGllZi4KQXQgdGhhdCB0aW1lIEhlcm9kIHRoZSB0ZXRyYXJjaCBoZWFyZCBvZiB0aGUgZmFtZSBvZiBKZXN1cywKQW5kIHNhaWQgdW50byBoaXMgc2VydmFudHMsIFRoaXMgaXMgSm9obiB0aGUgQmFwdGlzdDsgaGUgaXMgcmlzZW4gZnJvbSB0aGUgZGVhZDsgYW5kIHRoZXJlZm9yZSBtaWdodHkgd29ya3MgZG8gc2hldyBmb3J0aCB0aGVtc2VsdmVzIGluIGhpbS4KRm9yIEhlcm9kIGhhZCBsYWlkIGhvbGQgb24gSm9obiwgYW5kIGJvdW5kIGhpbSwgYW5kIHB1dCBoaW0gaW4gcHJpc29uIGZvciBIZXJvZGlhcycgc2FrZSwgaGlzIGJyb3RoZXIgUGhpbGlwJ3Mgd2lmZS4KRm9yIEpvaG4gc2FpZCB1bnRvIGhpbSwgSXQgaXMgbm90IGxhd2Z1bCBmb3IgdGhlZSB0byBoYXZlIGhlci4KQW5kIHdoZW4gaGUgd291bGQgaGF2ZSBwdXQgaGltIHRvIGRlYXRoLCBoZSBmZWFyZWQgdGhlIG11bHRpdHVkZSwgYmVjYXVzZSB0aGV5IGNvdW50ZWQgaGltIGFzIGEgcHJvcGhldC4KQnV0IHdoZW4gSGVyb2QncyBiaXJ0aGRheSB3YXMga2VwdCwgdGhlIGRhdWdodGVyIG9mIEhlcm9kaWFzIGRhbmNlZCBiZWZvcmUgdGhlbSwgYW5kIHBsZWFzZWQgSGVyb2QuCldoZXJldXBvbiBoZSBwcm9taXNlZCB3aXRoIGFuIG9hdGggdG8gZ2l2ZSBoZXIgd2hhdHNvZXZlciBzaGUgd291bGQgYXNrLgpBbmQgc2hlLCBiZWluZyBiZWZvcmUgaW5zdHJ1Y3RlZCBvZiBoZXIgbW90aGVyLCBzYWlkLCBHaXZlIG1lIGhlcmUgSm9obiBCYXB0aXN0J3MgaGVhZCBpbiBhIGNoYXJnZXIuCkFuZCB0aGUga2luZyB3YXMgc29ycnk6IG5ldmVydGhlbGVzcyBmb3IgdGhlIG9hdGgncyBzYWtlLCBhbmQgdGhlbSB3aGljaCBzYXQgd2l0aCBoaW0gYXQgbWVhdCwgaGUgY29tbWFuZGVkIGl0IHRvIGJlIGdpdmVuIGhlci4KQW5kIGhlIHNlbnQsIGFuZCBiZWhlYWRlZCBKb2huIGluIHRoZSBwcmlzb24uCkFuZCBoaXMgaGVhZCB3YXMgYnJvdWdodCBpbiBhIGNoYXJnZXIsIGFuZCBnaXZlbiB0byB0aGUgZGFtc2VsOiBhbmQgc2hlIGJyb3VnaHQgaXQgdG8gaGVyIG1vdGhlci4KQW5kIGhpcyBkaXNjaXBsZXMgY2FtZSwgYW5kIHRvb2sgdXAgdGhlIGJvZHksIGFuZCBidXJpZWQgaXQsIGFuZCB3ZW50IGFuZCB0b2xkIEplc3VzLgpXaGVuIEplc3VzIGhlYXJkIG9mIGl0LCBoZSBkZXBhcnRlZCB0aGVuY2UgYnkgc2hpcCBpbnRvIGEgZGVzZXJ0IHBsYWNlIGFwYXJ0OiBhbmQgd2hlbiB0aGUgcGVvcGxlIGhhZCBoZWFyZCB0aGVyZW9mLCB0aGV5IGZvbGxvd2VkIGhpbSBvbiBmb290IG91dCBvZiB0aGUgY2l0aWVzLgpBbmQgSmVzdXMgd2VudCBmb3J0aCwgYW5kIHNhdyBhIGdyZWF0IG11bHRpdHVkZSwgYW5kIHdhcyBtb3ZlZCB3aXRoIGNvbXBhc3Npb24gdG93YXJkIHRoZW0sIGFuZCBoZSBoZWFsZWQgdGhlaXIgc2ljay4KQW5kIHdoZW4gaXQgd2FzIGV2ZW5pbmcsIGhpcyBkaXNjaXBsZXMgY2FtZSB0byBoaW0sIHNheWluZywgVGhpcyBpcyBhIGRlc2VydCBwbGFjZSwgYW5kIHRoZSB0aW1lIGlzIG5vdyBwYXN0OyBzZW5kIHRoZSBtdWx0aXR1ZGUgYXdheSwgdGhhdCB0aGV5IG1heSBnbyBpbnRvIHRoZSB2aWxsYWdlcywgYW5kIGJ1eSB0aGVtc2VsdmVzIHZpY3R1YWxzLgpCdXQgSmVzdXMgc2FpZCB1bnRvIHRoZW0sIFRoZXkgbmVlZCBub3QgZGVwYXJ0OyBnaXZlIHllIHRoZW0gdG8gZWF0LgpBbmQgdGhleSBzYXkgdW50byBoaW0sIFdlIGhhdmUgaGVyZSBidXQgZml2ZSBsb2F2ZXMsIGFuZCB0d28gZmlzaGVzLgpIZSBzYWlkLCBCcmluZyB0aGVtIGhpdGhlciB0byBtZS4KQW5kIGhlIGNvbW1hbmRlZCB0aGUgbXVsdGl0dWRlIHRvIHNpdCBkb3duIG9uIHRoZSBncmFzcywgYW5kIHRvb2sgdGhlIGZpdmUgbG9hdmVzLCBhbmQgdGhlIHR3byBmaXNoZXMsIGFuZCBsb29raW5nIHVwIHRvIGhlYXZlbiwgaGUgYmxlc3NlZCwgYW5kIGJyYWtlLCBhbmQgZ2F2ZSB0aGUgbG9hdmVzIHRvIGhpcyBkaXNjaXBsZXMsIGFuZCB0aGUgZGlzY2lwbGVzIHRvIHRoZSBtdWx0aXR1ZGUuCkFuZCB0aGV5IGRpZCBhbGwgZWF0LCBhbmQgd2VyZSBmaWxsZWQ6IGFuZCB0aGV5IHRvb2sgdXAgb2YgdGhlIGZyYWdtZW50cyB0aGF0IHJlbWFpbmVkIHR3ZWx2ZSBiYXNrZXRzIGZ1bGwuCkFuZCB0aGV5IHRoYXQgaGFkIGVhdGVuIHdlcmUgYWJvdXQgZml2ZSB0aG91c2FuZCBtZW4sIGJlc2lkZSB3b21lbiBhbmQgY2hpbGRyZW4uCkFuZCBzdHJhaWdodHdheSBKZXN1cyBjb25zdHJhaW5lZCBoaXMgZGlzY2lwbGVzIHRvIGdldCBpbnRvIGEgc2hpcCwgYW5kIHRvIGdvIGJlZm9yZSBoaW0gdW50byB0aGUgb3RoZXIgc2lkZSwgd2hpbGUgaGUgc2VudCB0aGUgbXVsdGl0dWRlcyBhd2F5LgpBbmQgd2hlbiBoZSBoYWQgc2VudCB0aGUgbXVsdGl0dWRlcyBhd2F5LCBoZSB3ZW50IHVwIGludG8gYSBtb3VudGFpbiBhcGFydCB0byBwcmF5OiBhbmQgd2hlbiB0aGUgZXZlbmluZyB3YXMgY29tZSwgaGUgd2FzIHRoZXJlIGFsb25lLgpCdXQgdGhlIHNoaXAgd2FzIG5vdyBpbiB0aGUgbWlkc3Qgb2YgdGhlIHNlYSwgdG9zc2VkIHdpdGggd2F2ZXM6IGZvciB0aGUgd2luZCB3YXMgY29udHJhcnkuCkFuZCBpbiB0aGUgZm91cnRoIHdhdGNoIG9mIHRoZSBuaWdodCBKZXN1cyB3ZW50IHVudG8gdGhlbSwgd2Fsa2luZyBvbiB0aGUgc2VhLgpBbmQgd2hlbiB0aGUgZGlzY2lwbGVzIHNhdyBoaW0gd2Fsa2luZyBvbiB0aGUgc2VhLCB0aGV5IHdlcmUgdHJvdWJsZWQsIHNheWluZywgSXQgaXMgYSBzcGlyaXQ7IGFuZCB0aGV5IGNyaWVkIG91dCBmb3IgZmVhci4KQnV0IHN0cmFpZ2h0d2F5IEplc3VzIHNwYWtlIHVudG8gdGhlbSwgc2F5aW5nLCBCZSBvZiBnb29kIGNoZWVyOyBpdCBpcyBJOyBiZSBub3QgYWZyYWlkLgpBbmQgUGV0ZXIgYW5zd2VyZWQgaGltIGFuZCBzYWlkLCBMb3JkLCBpZiBpdCBiZSB0aG91LCBiaWQgbWUgY29tZSB1bnRvIHRoZWUgb24gdGhlIHdhdGVyLgpBbmQgaGUgc2FpZCwgQ29tZS4gQW5kIHdoZW4gUGV0ZXIgd2FzIGNvbWUgZG93biBvdXQgb2YgdGhlIHNoaXAsIGhlIHdhbGtlZCBvbiB0aGUgd2F0ZXIsIHRvIGdvIHRvIEplc3VzLgpCdXQgd2hlbiBoZSBzYXcgdGhlIHdpbmQgYm9pc3Rlcm91cywgaGUgd2FzIGFmcmFpZDsgYW5kIGJlZ2lubmluZyB0byBzaW5rLCBoZSBjcmllZCwgc2F5aW5nLCBMb3JkLCBzYXZlIG1lLgpBbmQgaW1tZWRpYXRlbHkgSmVzdXMgc3RyZXRjaGVkIGZvcnRoIGhpcyBoYW5kLCBhbmQgY2F1Z2h0IGhpbSwgYW5kIHNhaWQgdW50byBoaW0sIE8gdGhvdSBvZiBsaXR0bGUgZmFpdGgsIHdoZXJlZm9yZSBkaWRzdCB0aG91IGRvdWJ0PwpBbmQgd2hlbiB0aGV5IHdlcmUgY29tZSBpbnRvIHRoZSBzaGlwLCB0aGUgd2luZCBjZWFzZWQuClRoZW4gdGhleSB0aGF0IHdlcmUgaW4gdGhlIHNoaXAgY2FtZSBhbmQgd29yc2hpcHBlZCBoaW0sIHNheWluZywgT2YgYSB0cnV0aCB0aG91IGFydCB0aGUgU29uIG9mIEdvZC4KQW5kIHdoZW4gdGhleSB3ZXJlIGdvbmUgb3ZlciwgdGhleSBjYW1lIGludG8gdGhlIGxhbmQgb2YgR2VubmVzYXJldC4KQW5kIHdoZW4gdGhlIG1lbiBvZiB0aGF0IHBsYWNlIGhhZCBrbm93bGVkZ2Ugb2YgaGltLCB0aGV5IHNlbnQgb3V0IGludG8gYWxsIHRoYXQgY291bnRyeSByb3VuZCBhYm91dCwgYW5kIGJyb3VnaHQgdW50byBoaW0gYWxsIHRoYXQgd2VyZSBkaXNlYXNlZDsKQW5kIGJlc291Z2h0IGhpbSB0aGF0IHRoZXkgbWlnaHQgb25seSB0b3VjaCB0aGUgaGVtIG9mIGhpcyBnYXJtZW50OiBhbmQgYXMgbWFueSBhcyB0b3VjaGVkIHdlcmUgbWFkZSBwZXJmZWN0bHkgd2hvbGUuClRoZW4gY2FtZSB0byBKZXN1cyBzY3JpYmVzIGFuZCBQaGFyaXNlZXMsIHdoaWNoIHdlcmUgb2YgSmVydXNhbGVtLCBzYXlpbmcsCldoeSBkbyB0aHkgZGlzY2lwbGVzIHRyYW5zZ3Jlc3MgdGhlIHRyYWRpdGlvbiBvZiB0aGUgZWxkZXJzPyBmb3IgdGhleSB3YXNoIG5vdCB0aGVpciBoYW5kcyB3aGVuIHRoZXkgZWF0IGJyZWFkLgpCdXQgaGUgYW5zd2VyZWQgYW5kIHNhaWQgdW50byB0aGVtLCBXaHkgZG8geWUgYWxzbyB0cmFuc2dyZXNzIHRoZSBjb21tYW5kbWVudCBvZiBHb2QgYnkgeW91ciB0cmFkaXRpb24/CkZvciBHb2QgY29tbWFuZGVkLCBzYXlpbmcsIEhvbm91ciB0aHkgZmF0aGVyIGFuZCBtb3RoZXI6IGFuZCwgSGUgdGhhdCBjdXJzZXRoIGZhdGhlciBvciBtb3RoZXIsIGxldCBoaW0gZGllIHRoZSBkZWF0aC4KQnV0IHllIHNheSwgV2hvc29ldmVyIHNoYWxsIHNheSB0byBoaXMgZmF0aGVyIG9yIGhpcyBtb3RoZXIsIEl0IGlzIGEgZ2lmdCwgYnkgd2hhdHNvZXZlciB0aG91IG1pZ2h0ZXN0IGJlIHByb2ZpdGVkIGJ5IG1lOwpBbmQgaG9ub3VyIG5vdCBoaXMgZmF0aGVyIG9yIGhpcyBtb3RoZXIsIGhlIHNoYWxsIGJlIGZyZWUuIFRodXMgaGF2ZSB5ZSBtYWRlIHRoZSBjb21tYW5kbWVudCBvZiBHb2Qgb2Ygbm9uZSBlZmZlY3QgYnkgeW91ciB0cmFkaXRpb24uClllIGh5cG9jcml0ZXMsIHdlbGwgZGlkIEVzYWlhcyBwcm9waGVzeSBvZiB5b3UsIHNheWluZywKVGhpcyBwZW9wbGUgZHJhd2V0aCBuaWdoIHVudG8gbWUgd2l0aCB0aGVpciBtb3V0aCwgYW5kIGhvbm91cmV0aCBtZSB3aXRoIHRoZWlyIGxpcHM7IGJ1dCB0aGVpciBoZWFydCBpcyBmYXIgZnJvbSBtZS4KQnV0IGluIHZhaW4gdGhleSBkbyB3b3JzaGlwIG1lLCB0ZWFjaGluZyBmb3IgZG9jdHJpbmVzIHRoZSBjb21tYW5kbWVudHMgb2YgbWVuLgpBbmQgaGUgY2FsbGVkIHRoZSBtdWx0aXR1ZGUsIGFuZCBzYWlkIHVudG8gdGhlbSwgSGVhciwgYW5kIHVuZGVyc3RhbmQ6Ck5vdCB0aGF0IHdoaWNoIGdvZXRoIGludG8gdGhlIG1vdXRoIGRlZmlsZXRoIGEgbWFuOyBidXQgdGhhdCB3aGljaCBjb21ldGggb3V0IG9mIHRoZSBtb3V0aCwgdGhpcyBkZWZpbGV0aCBhIG1hbi4KVGhlbiBjYW1lIGhpcyBkaXNjaXBsZXMsIGFuZCBzYWlkIHVudG8gaGltLCBLbm93ZXN0IHRob3UgdGhhdCB0aGUgUGhhcmlzZWVzIHdlcmUgb2ZmZW5kZWQsIGFmdGVyIHRoZXkgaGVhcmQgdGhpcyBzYXlpbmc/CkJ1dCBoZSBhbnN3ZXJlZCBhbmQgc2FpZCwgRXZlcnkgcGxhbnQsIHdoaWNoIG15IGhlYXZlbmx5IEZhdGhlciBoYXRoIG5vdCBwbGFudGVkLCBzaGFsbCBiZSByb290ZWQgdXAuCkxldCB0aGVtIGFsb25lOiB0aGV5IGJlIGJsaW5kIGxlYWRlcnMgb2YgdGhlIGJsaW5kLiBBbmQgaWYgdGhlIGJsaW5kIGxlYWQgdGhlIGJsaW5kLCBib3RoIHNoYWxsIGZhbGwgaW50byB0aGUgZGl0Y2guClRoZW4gYW5zd2VyZWQgUGV0ZXIgYW5kIHNhaWQgdW50byBoaW0sIERlY2xhcmUgdW50byB1cyB0aGlzIHBhcmFibGUuCkFuZCBKZXN1cyBzYWlkLCBBcmUgeWUgYWxzbyB5ZXQgd2l0aG91dCB1bmRlcnN0YW5kaW5nPwpEbyBub3QgeWUgeWV0IHVuZGVyc3RhbmQsIHRoYXQgd2hhdHNvZXZlciBlbnRlcmV0aCBpbiBhdCB0aGUgbW91dGggZ29ldGggaW50byB0aGUgYmVsbHksIGFuZCBpcyBjYXN0IG91dCBpbnRvIHRoZSBkcmF1Z2h0PwpCdXQgdGhvc2UgdGhpbmdzIHdoaWNoIHByb2NlZWQgb3V0IG9mIHRoZSBtb3V0aCBjb21lIGZvcnRoIGZyb20gdGhlIGhlYXJ0OyBhbmQgdGhleSBkZWZpbGUgdGhlIG1hbi4KRm9yIG91dCBvZiB0aGUgaGVhcnQgcHJvY2VlZCBldmlsIHRob3VnaHRzLCBtdXJkZXJzLCBhZHVsdGVyaWVzLCBmb3JuaWNhdGlvbnMsIHRoZWZ0cywgZmFsc2Ugd2l0bmVzcywgYmxhc3BoZW1pZXM6ClRoZXNlIGFyZSB0aGUgdGhpbmdzIHdoaWNoIGRlZmlsZSBhIG1hbjogYnV0IHRvIGVhdCB3aXRoIHVud2FzaGVuIGhhbmRzIGRlZmlsZXRoIG5vdCBhIG1hbi4KVGhlbiBKZXN1cyB3ZW50IHRoZW5jZSwgYW5kIGRlcGFydGVkIGludG8gdGhlIGNvYXN0cyBvZiBUeXJlIGFuZCBTaWRvbi4KQW5kLCBiZWhvbGQsIGEgd29tYW4gb2YgQ2FuYWFuIGNhbWUgb3V0IG9mIHRoZSBzYW1lIGNvYXN0cywgYW5kIGNyaWVkIHVudG8gaGltLCBzYXlpbmcsIEhhdmUgbWVyY3kgb24gbWUsIE8gTG9yZCwgdGhvdSBzb24gb2YgRGF2aWQ7IG15IGRhdWdodGVyIGlzIGdyaWV2b3VzbHkgdmV4ZWQgd2l0aCBhIGRldmlsLgpCdXQgaGUgYW5zd2VyZWQgaGVyIG5vdCBhIHdvcmQuIEFuZCBoaXMgZGlzY2lwbGVzIGNhbWUgYW5kIGJlc291Z2h0IGhpbSwgc2F5aW5nLCBTZW5kIGhlciBhd2F5OyBmb3Igc2hlIGNyaWV0aCBhZnRlciB1cy4KQnV0IGhlIGFuc3dlcmVkIGFuZCBzYWlkLCBJIGFtIG5vdCBzZW50IGJ1dCB1bnRvIHRoZSBsb3N0IHNoZWVwIG9mIHRoZSBob3VzZSBvZiBJc3JhZWwuClRoZW4gY2FtZSBzaGUgYW5kIHdvcnNoaXBwZWQgaGltLCBzYXlpbmcsIExvcmQsIGhlbHAgbWUuCkJ1dCBoZSBhbnN3ZXJlZCBhbmQgc2FpZCwgSXQgaXMgbm90IG1lZXQgdG8gdGFrZSB0aGUgY2hpbGRyZW4ncyBicmVhZCwgYW5kIHRvIGNhc3QgaXQgdG8gZG9ncy4KQW5kIHNoZSBzYWlkLCBUcnV0aCwgTG9yZDogeWV0IHRoZSBkb2dzIGVhdCBvZiB0aGUgY3J1bWJzIHdoaWNoIGZhbGwgZnJvbSB0aGVpciBtYXN0ZXJzJyB0YWJsZS4KVGhlbiBKZXN1cyBhbnN3ZXJlZCBhbmQgc2FpZCB1bnRvIGhlciwgTyB3b21hbiwgZ3JlYXQgaXMgdGh5IGZhaXRoOiBiZSBpdCB1bnRvIHRoZWUgZXZlbiBhcyB0aG91IHdpbHQuIEFuZCBoZXIgZGF1Z2h0ZXIgd2FzIG1hZGUgd2hvbGUgZnJvbSB0aGF0IHZlcnkgaG91ci4KQW5kIEplc3VzIGRlcGFydGVkIGZyb20gdGhlbmNlLCBhbmQgY2FtZSBuaWdoIHVudG8gdGhlIHNlYSBvZiBHYWxpbGVlOyBhbmQgd2VudCB1cCBpbnRvIGEgbW91bnRhaW4sIGFuZCBzYXQgZG93biB0aGVyZS4KQW5kIGdyZWF0IG11bHRpdHVkZXMgY2FtZSB1bnRvIGhpbSwgaGF2aW5nIHdpdGggdGhlbSB0aG9zZSB0aGF0IHdlcmUgbGFtZSwgYmxpbmQsIGR1bWIsIG1haW1lZCwgYW5kIG1hbnkgb3RoZXJzLCBhbmQgY2FzdCB0aGVtIGRvd24gYXQgSmVzdXMnIGZlZXQ7IGFuZCBoZSBoZWFsZWQgdGhlbToKSW5zb211Y2ggdGhhdCB0aGUgbXVsdGl0dWRlIHdvbmRlcmVkLCB3aGVuIHRoZXkgc2F3IHRoZSBkdW1iIHRvIHNwZWFrLCB0aGUgbWFpbWVkIHRvIGJlIHdob2xlLCB0aGUgbGFtZSB0byB3YWxrLCBhbmQgdGhlIGJsaW5kIHRvIHNlZTogYW5kIHRoZXkgZ2xvcmlmaWVkIHRoZSBHb2Qgb2YgSXNyYWVsLgpUaGVuIEplc3VzIGNhbGxlZCBoaXMgZGlzY2lwbGVzIHVudG8gaGltLCBhbmQgc2FpZCwgSSBoYXZlIGNvbXBhc3Npb24gb24gdGhlIG11bHRpdHVkZSwgYmVjYXVzZSB0aGV5IGNvbnRpbnVlIHdpdGggbWUgbm93IHRocmVlIGRheXMsIGFuZCBoYXZlIG5vdGhpbmcgdG8gZWF0OiBhbmQgSSB3aWxsIG5vdCBzZW5kIHRoZW0gYXdheSBmYXN0aW5nLCBsZXN0IHRoZXkgZmFpbnQgaW4gdGhlIHdheS4KQW5kIGhpcyBkaXNjaXBsZXMgc2F5IHVudG8gaGltLCBXaGVuY2Ugc2hvdWxkIHdlIGhhdmUgc28gbXVjaCBicmVhZCBpbiB0aGUgd2lsZGVybmVzcywgYXMgdG8gZmlsbCBzbyBncmVhdCBhIG11bHRpdHVkZT8KQW5kIEplc3VzIHNhaXRoIHVudG8gdGhlbSwgSG93IG1hbnkgbG9hdmVzIGhhdmUgeWU/IEFuZCB0aGV5IHNhaWQsIFNldmVuLCBhbmQgYSBmZXcgbGl0dGxlIGZpc2hlcy4KQW5kIGhlIGNvbW1hbmRlZCB0aGUgbXVsdGl0dWRlIHRvIHNpdCBkb3duIG9uIHRoZSBncm91bmQuCkFuZCBoZSB0b29rIHRoZSBzZXZlbiBsb2F2ZXMgYW5kIHRoZSBmaXNoZXMsIGFuZCBnYXZlIHRoYW5rcywgYW5kIGJyYWtlIHRoZW0sIGFuZCBnYXZlIHRvIGhpcyBkaXNjaXBsZXMsIGFuZCB0aGUgZGlzY2lwbGVzIHRvIHRoZSBtdWx0aXR1ZGUuCkFuZCB0aGV5IGRpZCBhbGwgZWF0LCBhbmQgd2VyZSBmaWxsZWQ6IGFuZCB0aGV5IHRvb2sgdXAgb2YgdGhlIGJyb2tlbiBtZWF0IHRoYXQgd2FzIGxlZnQgc2V2ZW4gYmFza2V0cyBmdWxsLgpBbmQgdGhleSB0aGF0IGRpZCBlYXQgd2VyZSBmb3VyIHRob3VzYW5kIG1lbiwgYmVzaWRlIHdvbWVuIGFuZCBjaGlsZHJlbi4KQW5kIGhlIHNlbnQgYXdheSB0aGUgbXVsdGl0dWRlLCBhbmQgdG9vayBzaGlwLCBhbmQgY2FtZSBpbnRvIHRoZSBjb2FzdHMgb2YgTWFnZGFsYS4KVGhlIFBoYXJpc2VlcyBhbHNvIHdpdGggdGhlIFNhZGR1Y2VlcyBjYW1lLCBhbmQgdGVtcHRpbmcgZGVzaXJlZCBoaW0gdGhhdCBoZSB3b3VsZCBzaGV3IHRoZW0gYSBzaWduIGZyb20gaGVhdmVuLgpIZSBhbnN3ZXJlZCBhbmQgc2FpZCB1bnRvIHRoZW0sIFdoZW4gaXQgaXMgZXZlbmluZywgeWUgc2F5LCBJdCB3aWxsIGJlIGZhaXIgd2VhdGhlcjogZm9yIHRoZSBza3kgaXMgcmVkLgpBbmQgaW4gdGhlIG1vcm5pbmcsIEl0IHdpbGwgYmUgZm91bCB3ZWF0aGVyIHRvIGRheTogZm9yIHRoZSBza3kgaXMgcmVkIGFuZCBsb3dlcmluZy4gTyB5ZSBoeXBvY3JpdGVzLCB5ZSBjYW4gZGlzY2VybiB0aGUgZmFjZSBvZiB0aGUgc2t5OyBidXQgY2FuIHllIG5vdCBkaXNjZXJuIHRoZSBzaWducyBvZiB0aGUgdGltZXM/CkEgd2lja2VkIGFuZCBhZHVsdGVyb3VzIGdlbmVyYXRpb24gc2Vla2V0aCBhZnRlciBhIHNpZ247IGFuZCB0aGVyZSBzaGFsbCBubyBzaWduIGJlIGdpdmVuIHVudG8gaXQsIGJ1dCB0aGUgc2lnbiBvZiB0aGUgcHJvcGhldCBKb25hcy4gQW5kIGhlIGxlZnQgdGhlbSwgYW5kIGRlcGFydGVkLgpBbmQgd2hlbiBoaXMgZGlzY2lwbGVzIHdlcmUgY29tZSB0byB0aGUgb3RoZXIgc2lkZSwgdGhleSBoYWQgZm9yZ290dGVuIHRvIHRha2UgYnJlYWQuClRoZW4gSmVzdXMgc2FpZCB1bnRvIHRoZW0sIFRha2UgaGVlZCBhbmQgYmV3YXJlIG9mIHRoZSBsZWF2ZW4gb2YgdGhlIFBoYXJpc2VlcyBhbmQgb2YgdGhlIFNhZGR1Y2Vlcy4KQW5kIHRoZXkgcmVhc29uZWQgYW1vbmcgdGhlbXNlbHZlcywgc2F5aW5nLCBJdCBpcyBiZWNhdXNlIHdlIGhhdmUgdGFrZW4gbm8gYnJlYWQuCldoaWNoIHdoZW4gSmVzdXMgcGVyY2VpdmVkLCBoZSBzYWlkIHVudG8gdGhlbSwgTyB5ZSBvZiBsaXR0bGUgZmFpdGgsIHdoeSByZWFzb24geWUgYW1vbmcgeW91cnNlbHZlcywgYmVjYXVzZSB5ZSBoYXZlIGJyb3VnaHQgbm8gYnJlYWQ/CkRvIHllIG5vdCB5ZXQgdW5kZXJzdGFuZCwgbmVpdGhlciByZW1lbWJlciB0aGUgZml2ZSBsb2F2ZXMgb2YgdGhlIGZpdmUgdGhvdXNhbmQsIGFuZCBob3cgbWFueSBiYXNrZXRzIHllIHRvb2sgdXA/Ck5laXRoZXIgdGhlIHNldmVuIGxvYXZlcyBvZiB0aGUgZm91ciB0aG91c2FuZCwgYW5kIGhvdyBtYW55IGJhc2tldHMgeWUgdG9vayB1cD8KSG93IGlzIGl0IHRoYXQgeWUgZG8gbm90IHVuZGVyc3RhbmQgdGhhdCBJIHNwYWtlIGl0IG5vdCB0byB5b3UgY29uY2VybmluZyBicmVhZCwgdGhhdCB5ZSBzaG91bGQgYmV3YXJlIG9mIHRoZSBsZWF2ZW4gb2YgdGhlIFBoYXJpc2VlcyBhbmQgb2YgdGhlIFNhZGR1Y2Vlcz8KVGhlbiB1bmRlcnN0b29kIHRoZXkgaG93IHRoYXQgaGUgYmFkZSB0aGVtIG5vdCBiZXdhcmUgb2YgdGhlIGxlYXZlbiBvZiBicmVhZCwgYnV0IG9mIHRoZSBkb2N0cmluZSBvZiB0aGUgUGhhcmlzZWVzIGFuZCBvZiB0aGUgU2FkZHVjZWVzLgpXaGVuIEplc3VzIGNhbWUgaW50byB0aGUgY29hc3RzIG9mIENhZXNhcmVhIFBoaWxpcHBpLCBoZSBhc2tlZCBoaXMgZGlzY2lwbGVzLCBzYXlpbmcsIFdob20gZG8gbWVuIHNheSB0aGF0IEkgdGhlIFNvbiBvZiBtYW4gYW0/CkFuZCB0aGV5IHNhaWQsIFNvbWUgc2F5IHRoYXQgdGhvdSBhcnQgSm9obiB0aGUgQmFwdGlzdDogc29tZSwgRWxpYXM7IGFuZCBvdGhlcnMsIEplcmVtaWFzLCBvciBvbmUgb2YgdGhlIHByb3BoZXRzLgpIZSBzYWl0aCB1bnRvIHRoZW0sIEJ1dCB3aG9tIHNheSB5ZSB0aGF0IEkgYW0/CkFuZCBTaW1vbiBQZXRlciBhbnN3ZXJlZCBhbmQgc2FpZCwgVGhvdSBhcnQgdGhlIENocmlzdCwgdGhlIFNvbiBvZiB0aGUgbGl2aW5nIEdvZC4KQW5kIEplc3VzIGFuc3dlcmVkIGFuZCBzYWlkIHVudG8gaGltLCBCbGVzc2VkIGFydCB0aG91LCBTaW1vbiBCYXJqb25hOiBmb3IgZmxlc2ggYW5kIGJsb29kIGhhdGggbm90IHJldmVhbGVkIGl0IHVudG8gdGhlZSwgYnV0IG15IEZhdGhlciB3aGljaCBpcyBpbiBoZWF2ZW4uCkFuZCBJIHNheSBhbHNvIHVudG8gdGhlZSwgVGhhdCB0aG91IGFydCBQZXRlciwgYW5kIHVwb24gdGhpcyByb2NrIEkgd2lsbCBidWlsZCBteSBjaHVyY2g7IGFuZCB0aGUgZ2F0ZXMgb2YgaGVsbCBzaGFsbCBub3QgcHJldmFpbCBhZ2FpbnN0IGl0LgpBbmQgSSB3aWxsIGdpdmUgdW50byB0aGVlIHRoZSBrZXlzIG9mIHRoZSBraW5nZG9tIG9mIGhlYXZlbjogYW5kIHdoYXRzb2V2ZXIgdGhvdSBzaGFsdCBiaW5kIG9uIGVhcnRoIHNoYWxsIGJlIGJvdW5kIGluIGhlYXZlbjogYW5kIHdoYXRzb2V2ZXIgdGhvdSBzaGFsdCBsb29zZSBvbiBlYXJ0aCBzaGFsbCBiZSBsb29zZWQgaW4gaGVhdmVuLgpUaGVuIGNoYXJnZWQgaGUgaGlzIGRpc2NpcGxlcyB0aGF0IHRoZXkgc2hvdWxkIHRlbGwgbm8gbWFuIHRoYXQgaGUgd2FzIEplc3VzIHRoZSBDaHJpc3QuCkZyb20gdGhhdCB0aW1lIGZvcnRoIGJlZ2FuIEplc3VzIHRvIHNoZXcgdW50byBoaXMgZGlzY2lwbGVzLCBob3cgdGhhdCBoZSBtdXN0IGdvIHVudG8gSmVydXNhbGVtLCBhbmQgc3VmZmVyIG1hbnkgdGhpbmdzIG9mIHRoZSBlbGRlcnMgYW5kIGNoaWVmIHByaWVzdHMgYW5kIHNjcmliZXMsIGFuZCBiZSBraWxsZWQsIGFuZCBiZSByYWlzZWQgYWdhaW4gdGhlIHRoaXJkIGRheS4KVGhlbiBQZXRlciB0b29rIGhpbSwgYW5kIGJlZ2FuIHRvIHJlYnVrZSBoaW0sIHNheWluZywgQmUgaXQgZmFyIGZyb20gdGhlZSwgTG9yZDogdGhpcyBzaGFsbCBub3QgYmUgdW50byB0aGVlLgpCdXQgaGUgdHVybmVkLCBhbmQgc2FpZCB1bnRvIFBldGVyLCBHZXQgdGhlZSBiZWhpbmQgbWUsIFNhdGFuOiB0aG91IGFydCBhbiBvZmZlbmNlIHVudG8gbWU6IGZvciB0aG91IHNhdm91cmVzdCBub3QgdGhlIHRoaW5ncyB0aGF0IGJlIG9mIEdvZCwgYnV0IHRob3NlIHRoYXQgYmUgb2YgbWVuLgpUaGVuIHNhaWQgSmVzdXMgdW50byBoaXMgZGlzY2lwbGVzLCBJZiBhbnkgbWFuIHdpbGwgY29tZSBhZnRlciBtZSwgbGV0IGhpbSBkZW55IGhpbXNlbGYsIGFuZCB0YWtlIHVwIGhpcyBjcm9zcywgYW5kIGZvbGxvdyBtZS4KRm9yIHdob3NvZXZlciB3aWxsIHNhdmUgaGlzIGxpZmUgc2hhbGwgbG9zZSBpdDogYW5kIHdob3NvZXZlciB3aWxsIGxvc2UgaGlzIGxpZmUgZm9yIG15IHNha2Ugc2hhbGwgZmluZCBpdC4KRm9yIHdoYXQgaXMgYSBtYW4gcHJvZml0ZWQsIGlmIGhlIHNoYWxsIGdhaW4gdGhlIHdob2xlIHdvcmxkLCBhbmQgbG9zZSBoaXMgb3duIHNvdWw/IG9yIHdoYXQgc2hhbGwgYSBtYW4gZ2l2ZSBpbiBleGNoYW5nZSBmb3IgaGlzIHNvdWw/CkZvciB0aGUgU29uIG9mIG1hbiBzaGFsbCBjb21lIGluIHRoZSBnbG9yeSBvZiBoaXMgRmF0aGVyIHdpdGggaGlzIGFuZ2VsczsgYW5kIHRoZW4gaGUgc2hhbGwgcmV3YXJkIGV2ZXJ5IG1hbiBhY2NvcmRpbmcgdG8gaGlzIHdvcmtzLgpWZXJpbHkgSSBzYXkgdW50byB5b3UsIFRoZXJlIGJlIHNvbWUgc3RhbmRpbmcgaGVyZSwgd2hpY2ggc2hhbGwgbm90IHRhc3RlIG9mIGRlYXRoLCB0aWxsIHRoZXkgc2VlIHRoZSBTb24gb2YgbWFuIGNvbWluZyBpbiBoaXMga2luZ2RvbS4KQW5kIGFmdGVyIHNpeCBkYXlzIEplc3VzIHRha2V0aCBQZXRlciwgSmFtZXMsIGFuZCBKb2huIGhpcyBicm90aGVyLCBhbmQgYnJpbmdldGggdGhlbSB1cCBpbnRvIGFuIGhpZ2ggbW91bnRhaW4gYXBhcnQsCkFuZCB3YXMgdHJhbnNmaWd1cmVkIGJlZm9yZSB0aGVtOiBhbmQgaGlzIGZhY2UgZGlkIHNoaW5lIGFzIHRoZSBzdW4sIGFuZCBoaXMgcmFpbWVudCB3YXMgd2hpdGUgYXMgdGhlIGxpZ2h0LgpBbmQsIGJlaG9sZCwgdGhlcmUgYXBwZWFyZWQgdW50byB0aGVtIE1vc2VzIGFuZCBFbGlhcyB0YWxraW5nIHdpdGggaGltLgpUaGVuIGFuc3dlcmVkIFBldGVyLCBhbmQgc2FpZCB1bnRvIEplc3VzLCBMb3JkLCBpdCBpcyBnb29kIGZvciB1cyB0byBiZSBoZXJlOiBpZiB0aG91IHdpbHQsIGxldCB1cyBtYWtlIGhlcmUgdGhyZWUgdGFiZXJuYWNsZXM7IG9uZSBmb3IgdGhlZSwgYW5kIG9uZSBmb3IgTW9zZXMsIGFuZCBvbmUgZm9yIEVsaWFzLgpXaGlsZSBoZSB5ZXQgc3Bha2UsIGJlaG9sZCwgYSBicmlnaHQgY2xvdWQgb3ZlcnNoYWRvd2VkIHRoZW06IGFuZCBiZWhvbGQgYSB2b2ljZSBvdXQgb2YgdGhlIGNsb3VkLCB3aGljaCBzYWlkLCBUaGlzIGlzIG15IGJlbG92ZWQgU29uLCBpbiB3aG9tIEkgYW0gd2VsbCBwbGVhc2VkOyBoZWFyIHllIGhpbS4KQW5kIHdoZW4gdGhlIGRpc2NpcGxlcyBoZWFyZCBpdCwgdGhleSBmZWxsIG9uIHRoZWlyIGZhY2UsIGFuZCB3ZXJlIHNvcmUgYWZyYWlkLgpBbmQgSmVzdXMgY2FtZSBhbmQgdG91Y2hlZCB0aGVtLCBhbmQgc2FpZCwgQXJpc2UsIGFuZCBiZSBub3QgYWZyYWlkLgpBbmQgd2hlbiB0aGV5IGhhZCBsaWZ0ZWQgdXAgdGhlaXIgZXllcywgdGhleSBzYXcgbm8gbWFuLCBzYXZlIEplc3VzIG9ubHkuCkFuZCBhcyB0aGV5IGNhbWUgZG93biBmcm9tIHRoZSBtb3VudGFpbiwgSmVzdXMgY2hhcmdlZCB0aGVtLCBzYXlpbmcsIFRlbGwgdGhlIHZpc2lvbiB0byBubyBtYW4sIHVudGlsIHRoZSBTb24gb2YgbWFuIGJlIHJpc2VuIGFnYWluIGZyb20gdGhlIGRlYWQuCkFuZCBoaXMgZGlzY2lwbGVzIGFza2VkIGhpbSwgc2F5aW5nLCBXaHkgdGhlbiBzYXkgdGhlIHNjcmliZXMgdGhhdCBFbGlhcyBtdXN0IGZpcnN0IGNvbWU/CkFuZCBKZXN1cyBhbnN3ZXJlZCBhbmQgc2FpZCB1bnRvIHRoZW0sIEVsaWFzIHRydWx5IHNoYWxsIGZpcnN0IGNvbWUsIGFuZCByZXN0b3JlIGFsbCB0aGluZ3MuCkJ1dCBJIHNheSB1bnRvIHlvdSwgVGhhdCBFbGlhcyBpcyBjb21lIGFscmVhZHksIGFuZCB0aGV5IGtuZXcgaGltIG5vdCwgYnV0IGhhdmUgZG9uZSB1bnRvIGhpbSB3aGF0c29ldmVyIHRoZXkgbGlzdGVkLiBMaWtld2lzZSBzaGFsbCBhbHNvIHRoZSBTb24gb2YgbWFuIHN1ZmZlciBvZiB0aGVtLgpUaGVuIHRoZSBkaXNjaXBsZXMgdW5kZXJzdG9vZCB0aGF0IGhlIHNwYWtlIHVudG8gdGhlbSBvZiBKb2huIHRoZSBCYXB0aXN0LgpBbmQgd2hlbiB0aGV5IHdlcmUgY29tZSB0byB0aGUgbXVsdGl0dWRlLCB0aGVyZSBjYW1lIHRvIGhpbSBhIGNlcnRhaW4gbWFuLCBrbmVlbGluZyBkb3duIHRvIGhpbSwgYW5kIHNheWluZywKTG9yZCwgaGF2ZSBtZXJjeSBvbiBteSBzb246IGZvciBoZSBpcyBsdW5hdGljaywgYW5kIHNvcmUgdmV4ZWQ6IGZvciBvZnR0aW1lcyBoZSBmYWxsZXRoIGludG8gdGhlIGZpcmUsIGFuZCBvZnQgaW50byB0aGUgd2F0ZXIuCkFuZCBJIGJyb3VnaHQgaGltIHRvIHRoeSBkaXNjaXBsZXMsIGFuZCB0aGV5IGNvdWxkIG5vdCBjdXJlIGhpbS4KVGhlbiBKZXN1cyBhbnN3ZXJlZCBhbmQgc2FpZCwgTyBmYWl0aGxlc3MgYW5kIHBlcnZlcnNlIGdlbmVyYXRpb24sIGhvdyBsb25nIHNoYWxsIEkgYmUgd2l0aCB5b3U/IGhvdyBsb25nIHNoYWxsIEkgc3VmZmVyIHlvdT8gYnJpbmcgaGltIGhpdGhlciB0byBtZS4KQW5kIEplc3VzIHJlYnVrZWQgdGhlIGRldmlsOyBhbmQgaGUgZGVwYXJ0ZWQgb3V0IG9mIGhpbTogYW5kIHRoZSBjaGlsZCB3YXMgY3VyZWQgZnJvbSB0aGF0IHZlcnkgaG91ci4KVGhlbiBjYW1lIHRoZSBkaXNjaXBsZXMgdG8gSmVzdXMgYXBhcnQsIGFuZCBzYWlkLCBXaHkgY291bGQgbm90IHdlIGNhc3QgaGltIG91dD8KQW5kIEplc3VzIHNhaWQgdW50byB0aGVtLCBCZWNhdXNlIG9mIHlvdXIgdW5iZWxpZWY6IGZvciB2ZXJpbHkgSSBzYXkgdW50byB5b3UsIElmIHllIGhhdmUgZmFpdGggYXMgYSBncmFpbiBvZiBtdXN0YXJkIHNlZWQsIHllIHNoYWxsIHNheSB1bnRvIHRoaXMgbW91bnRhaW4sIFJlbW92ZSBoZW5jZSB0byB5b25kZXIgcGxhY2U7IGFuZCBpdCBzaGFsbCByZW1vdmU7IGFuZCBub3RoaW5nIHNoYWxsIGJlIGltcG9zc2libGUgdW50byB5b3UuCkhvd2JlaXQgdGhpcyBraW5kIGdvZXRoIG5vdCBvdXQgYnV0IGJ5IHByYXllciBhbmQgZmFzdGluZy4KQW5kIHdoaWxlIHRoZXkgYWJvZGUgaW4gR2FsaWxlZSwgSmVzdXMgc2FpZCB1bnRvIHRoZW0sIFRoZSBTb24gb2YgbWFuIHNoYWxsIGJlIGJldHJheWVkIGludG8gdGhlIGhhbmRzIG9mIG1lbjoKQW5kIHRoZXkgc2hhbGwga2lsbCBoaW0sIGFuZCB0aGUgdGhpcmQgZGF5IGhlIHNoYWxsIGJlIHJhaXNlZCBhZ2Fpbi4gQW5kIHRoZXkgd2VyZSBleGNlZWRpbmcgc29ycnkuCkFuZCB3aGVuIHRoZXkgd2VyZSBjb21lIHRvIENhcGVybmF1bSwgdGhleSB0aGF0IHJlY2VpdmVkIHRyaWJ1dGUgbW9uZXkgY2FtZSB0byBQZXRlciwgYW5kIHNhaWQsIERvdGggbm90IHlvdXIgbWFzdGVyIHBheSB0cmlidXRlPwpIZSBzYWl0aCwgWWVzLiBBbmQgd2hlbiBoZSB3YXMgY29tZSBpbnRvIHRoZSBob3VzZSwgSmVzdXMgcHJldmVudGVkIGhpbSwgc2F5aW5nLCBXaGF0IHRoaW5rZXN0IHRob3UsIFNpbW9uPyBvZiB3aG9tIGRvIHRoZSBraW5ncyBvZiB0aGUgZWFydGggdGFrZSBjdXN0b20gb3IgdHJpYnV0ZT8gb2YgdGhlaXIgb3duIGNoaWxkcmVuLCBvciBvZiBzdHJhbmdlcnM/ClBldGVyIHNhaXRoIHVudG8gaGltLCBPZiBzdHJhbmdlcnMuIEplc3VzIHNhaXRoIHVudG8gaGltLCBUaGVuIGFyZSB0aGUgY2hpbGRyZW4gZnJlZS4KTm90d2l0aHN0YW5kaW5nLCBsZXN0IHdlIHNob3VsZCBvZmZlbmQgdGhlbSwgZ28gdGhvdSB0byB0aGUgc2VhLCBhbmQgY2FzdCBhbiBob29rLCBhbmQgdGFrZSB1cCB0aGUgZmlzaCB0aGF0IGZpcnN0IGNvbWV0aCB1cDsgYW5kIHdoZW4gdGhvdSBoYXN0IG9wZW5lZCBoaXMgbW91dGgsIHRob3Ugc2hhbHQgZmluZCBhIHBpZWNlIG9mIG1vbmV5OiB0aGF0IHRha2UsIGFuZCBnaXZlIHVudG8gdGhlbSBmb3IgbWUgYW5kIHRoZWUuCkF0IHRoZSBzYW1lIHRpbWUgY2FtZSB0aGUgZGlzY2lwbGVzIHVudG8gSmVzdXMsIHNheWluZywgV2hvIGlzIHRoZSBncmVhdGVzdCBpbiB0aGUga2luZ2RvbSBvZiBoZWF2ZW4/CkFuZCBKZXN1cyBjYWxsZWQgYSBsaXR0bGUgY2hpbGQgdW50byBoaW0sIGFuZCBzZXQgaGltIGluIHRoZSBtaWRzdCBvZiB0aGVtLApBbmQgc2FpZCwgVmVyaWx5IEkgc2F5IHVudG8geW91LCBFeGNlcHQgeWUgYmUgY29udmVydGVkLCBhbmQgYmVjb21lIGFzIGxpdHRsZSBjaGlsZHJlbiwgeWUgc2hhbGwgbm90IGVudGVyIGludG8gdGhlIGtpbmdkb20gb2YgaGVhdmVuLgpXaG9zb2V2ZXIgdGhlcmVmb3JlIHNoYWxsIGh1bWJsZSBoaW1zZWxmIGFzIHRoaXMgbGl0dGxlIGNoaWxkLCB0aGUgc2FtZSBpcyBncmVhdGVzdCBpbiB0aGUga2luZ2RvbSBvZiBoZWF2ZW4uCkFuZCB3aG9zbyBzaGFsbCByZWNlaXZlIG9uZSBzdWNoIGxpdHRsZSBjaGlsZCBpbiBteSBuYW1lIHJlY2VpdmV0aCBtZS4KQnV0IHdob3NvIHNoYWxsIG9mZmVuZCBvbmUgb2YgdGhlc2UgbGl0dGxlIG9uZXMgd2hpY2ggYmVsaWV2ZSBpbiBtZSwgaXQgd2VyZSBiZXR0ZXIgZm9yIGhpbSB0aGF0IGEgbWlsbHN0b25lIHdlcmUgaGFuZ2VkIGFib3V0IGhpcyBuZWNrLCBhbmQgdGhhdCBoZSB3ZXJlIGRyb3duZWQgaW4gdGhlIGRlcHRoIG9mIHRoZSBzZWEuCldvZSB1bnRvIHRoZSB3b3JsZCBiZWNhdXNlIG9mIG9mZmVuY2VzISBmb3IgaXQgbXVzdCBuZWVkcyBiZSB0aGF0IG9mZmVuY2VzIGNvbWU7IGJ1dCB3b2UgdG8gdGhhdCBtYW4gYnkgd2hvbSB0aGUgb2ZmZW5jZSBjb21ldGghCldoZXJlZm9yZSBpZiB0aHkgaGFuZCBvciB0aHkgZm9vdCBvZmZlbmQgdGhlZSwgY3V0IHRoZW0gb2ZmLCBhbmQgY2FzdCB0aGVtIGZyb20gdGhlZTogaXQgaXMgYmV0dGVyIGZvciB0aGVlIHRvIGVudGVyIGludG8gbGlmZSBoYWx0IG9yIG1haW1lZCwgcmF0aGVyIHRoYW4gaGF2aW5nIHR3byBoYW5kcyBvciB0d28gZmVldCB0byBiZSBjYXN0IGludG8gZXZlcmxhc3RpbmcgZmlyZS4KQW5kIGlmIHRoaW5lIGV5ZSBvZmZlbmQgdGhlZSwgcGx1Y2sgaXQgb3V0LCBhbmQgY2FzdCBpdCBmcm9tIHRoZWU6IGl0IGlzIGJldHRlciBmb3IgdGhlZSB0byBlbnRlciBpbnRvIGxpZmUgd2l0aCBvbmUgZXllLCByYXRoZXIgdGhhbiBoYXZpbmcgdHdvIGV5ZXMgdG8gYmUgY2FzdCBpbnRvIGhlbGwgZmlyZS4KVGFrZSBoZWVkIHRoYXQgeWUgZGVzcGlzZSBub3Qgb25lIG9mIHRoZXNlIGxpdHRsZSBvbmVzOyBmb3IgSSBzYXkgdW50byB5b3UsIFRoYXQgaW4gaGVhdmVuIHRoZWlyIGFuZ2VscyBkbyBhbHdheXMgYmVob2xkIHRoZSBmYWNlIG9mIG15IEZhdGhlciB3aGljaCBpcyBpbiBoZWF2ZW4uCkZvciB0aGUgU29uIG9mIG1hbiBpcyBjb21lIHRvIHNhdmUgdGhhdCB3aGljaCB3YXMgbG9zdC4KSG93IHRoaW5rIHllPyBpZiBhIG1hbiBoYXZlIGFuIGh1bmRyZWQgc2hlZXAsIGFuZCBvbmUgb2YgdGhlbSBiZSBnb25lIGFzdHJheSwgZG90aCBoZSBub3QgbGVhdmUgdGhlIG5pbmV0eSBhbmQgbmluZSwgYW5kIGdvZXRoIGludG8gdGhlIG1vdW50YWlucywgYW5kIHNlZWtldGggdGhhdCB3aGljaCBpcyBnb25lIGFzdHJheT8KQW5kIGlmIHNvIGJlIHRoYXQgaGUgZmluZCBpdCwgdmVyaWx5IEkgc2F5IHVudG8geW91LCBoZSByZWpvaWNldGggbW9yZSBvZiB0aGF0IHNoZWVwLCB0aGFuIG9mIHRoZSBuaW5ldHkgYW5kIG5pbmUgd2hpY2ggd2VudCBub3QgYXN0cmF5LgpFdmVuIHNvIGl0IGlzIG5vdCB0aGUgd2lsbCBvZiB5b3VyIEZhdGhlciB3aGljaCBpcyBpbiBoZWF2ZW4sIHRoYXQgb25lIG9mIHRoZXNlIGxpdHRsZSBvbmVzIHNob3VsZCBwZXJpc2guCk1vcmVvdmVyIGlmIHRoeSBicm90aGVyIHNoYWxsIHRyZXNwYXNzIGFnYWluc3QgdGhlZSwgZ28gYW5kIHRlbGwgaGltIGhpcyBmYXVsdCBiZXR3ZWVuIHRoZWUgYW5kIGhpbSBhbG9uZTogaWYgaGUgc2hhbGwgaGVhciB0aGVlLCB0aG91IGhhc3QgZ2FpbmVkIHRoeSBicm90aGVyLgpCdXQgaWYgaGUgd2lsbCBub3QgaGVhciB0aGVlLCB0aGVuIHRha2Ugd2l0aCB0aGVlIG9uZSBvciB0d28gbW9yZSwgdGhhdCBpbiB0aGUgbW91dGggb2YgdHdvIG9yIHRocmVlIHdpdG5lc3NlcyBldmVyeSB3b3JkIG1heSBiZSBlc3RhYmxpc2hlZC4KQW5kIGlmIGhlIHNoYWxsIG5lZ2xlY3QgdG8gaGVhciB0aGVtLCB0ZWxsIGl0IHVudG8gdGhlIGNodXJjaDogYnV0IGlmIGhlIG5lZ2xlY3QgdG8gaGVhciB0aGUgY2h1cmNoLCBsZXQgaGltIGJlIHVudG8gdGhlZSBhcyBhbiBoZWF0aGVuIG1hbiBhbmQgYSBwdWJsaWNhbi4KVmVyaWx5IEkgc2F5IHVudG8geW91LCBXaGF0c29ldmVyIHllIHNoYWxsIGJpbmQgb24gZWFydGggc2hhbGwgYmUgYm91bmQgaW4gaGVhdmVuOiBhbmQgd2hhdHNvZXZlciB5ZSBzaGFsbCBsb29zZSBvbiBlYXJ0aCBzaGFsbCBiZSBsb29zZWQgaW4gaGVhdmVuLgpBZ2FpbiBJIHNheSB1bnRvIHlvdSwgVGhhdCBpZiB0d28gb2YgeW91IHNoYWxsIGFncmVlIG9uIGVhcnRoIGFzIHRvdWNoaW5nIGFueSB0aGluZyB0aGF0IHRoZXkgc2hhbGwgYXNrLCBpdCBzaGFsbCBiZSBkb25lIGZvciB0aGVtIG9mIG15IEZhdGhlciB3aGljaCBpcyBpbiBoZWF2ZW4uCkZvciB3aGVyZSB0d28gb3IgdGhyZWUgYXJlIGdhdGhlcmVkIHRvZ2V0aGVyIGluIG15IG5hbWUsIHRoZXJlIGFtIEkgaW4gdGhlIG1pZHN0IG9mIHRoZW0uClRoZW4gY2FtZSBQZXRlciB0byBoaW0sIGFuZCBzYWlkLCBMb3JkLCBob3cgb2Z0IHNoYWxsIG15IGJyb3RoZXIgc2luIGFnYWluc3QgbWUsIGFuZCBJIGZvcmdpdmUgaGltPyB0aWxsIHNldmVuIHRpbWVzPwpKZXN1cyBzYWl0aCB1bnRvIGhpbSwgSSBzYXkgbm90IHVudG8gdGhlZSwgVW50aWwgc2V2ZW4gdGltZXM6IGJ1dCwgVW50aWwgc2V2ZW50eSB0aW1lcyBzZXZlbi4KVGhlcmVmb3JlIGlzIHRoZSBraW5nZG9tIG9mIGhlYXZlbiBsaWtlbmVkIHVudG8gYSBjZXJ0YWluIGtpbmcsIHdoaWNoIHdvdWxkIHRha2UgYWNjb3VudCBvZiBoaXMgc2VydmFudHMuCkFuZCB3aGVuIGhlIGhhZCBiZWd1biB0byByZWNrb24sIG9uZSB3YXMgYnJvdWdodCB1bnRvIGhpbSwgd2hpY2ggb3dlZCBoaW0gdGVuIHRob3VzYW5kIHRhbGVudHMuCkJ1dCBmb3Jhc211Y2ggYXMgaGUgaGFkIG5vdCB0byBwYXksIGhpcyBsb3JkIGNvbW1hbmRlZCBoaW0gdG8gYmUgc29sZCwgYW5kIGhpcyB3aWZlLCBhbmQgY2hpbGRyZW4sIGFuZCBhbGwgdGhhdCBoZSBoYWQsIGFuZCBwYXltZW50IHRvIGJlIG1hZGUuClRoZSBzZXJ2YW50IHRoZXJlZm9yZSBmZWxsIGRvd24sIGFuZCB3b3JzaGlwcGVkIGhpbSwgc2F5aW5nLCBMb3JkLCBoYXZlIHBhdGllbmNlIHdpdGggbWUsIGFuZCBJIHdpbGwgcGF5IHRoZWUgYWxsLgpUaGVuIHRoZSBsb3JkIG9mIHRoYXQgc2VydmFudCB3YXMgbW92ZWQgd2l0aCBjb21wYXNzaW9uLCBhbmQgbG9vc2VkIGhpbSwgYW5kIGZvcmdhdmUgaGltIHRoZSBkZWJ0LgpCdXQgdGhlIHNhbWUgc2VydmFudCB3ZW50IG91dCwgYW5kIGZvdW5kIG9uZSBvZiBoaXMgZmVsbG93c2VydmFudHMsIHdoaWNoIG93ZWQgaGltIGFuIGh1bmRyZWQgcGVuY2U6IGFuZCBoZSBsYWlkIGhhbmRzIG9uIGhpbSwgYW5kIHRvb2sgaGltIGJ5IHRoZSB0aHJvYXQsIHNheWluZywgUGF5IG1lIHRoYXQgdGhvdSBvd2VzdC4KQW5kIGhpcyBmZWxsb3dzZXJ2YW50IGZlbGwgZG93biBhdCBoaXMgZmVldCwgYW5kIGJlc291Z2h0IGhpbSwgc2F5aW5nLCBIYXZlIHBhdGllbmNlIHdpdGggbWUsIGFuZCBJIHdpbGwgcGF5IHRoZWUgYWxsLgpBbmQgaGUgd291bGQgbm90OiBidXQgd2VudCBhbmQgY2FzdCBoaW0gaW50byBwcmlzb24sIHRpbGwgaGUgc2hvdWxkIHBheSB0aGUgZGVidC4KU28gd2hlbiBoaXMgZmVsbG93c2VydmFudHMgc2F3IHdoYXQgd2FzIGRvbmUsIHRoZXkgd2VyZSB2ZXJ5IHNvcnJ5LCBhbmQgY2FtZSBhbmQgdG9sZCB1bnRvIHRoZWlyIGxvcmQgYWxsIHRoYXQgd2FzIGRvbmUuClRoZW4gaGlzIGxvcmQsIGFmdGVyIHRoYXQgaGUgaGFkIGNhbGxlZCBoaW0sIHNhaWQgdW50byBoaW0sIE8gdGhvdSB3aWNrZWQgc2VydmFudCwgSSBmb3JnYXZlIHRoZWUgYWxsIHRoYXQgZGVidCwgYmVjYXVzZSB0aG91IGRlc2lyZWRzdCBtZToKU2hvdWxkZXN0IG5vdCB0aG91IGFsc28gaGF2ZSBoYWQgY29tcGFzc2lvbiBvbiB0aHkgZmVsbG93c2VydmFudCwgZXZlbiBhcyBJIGhhZCBwaXR5IG9uIHRoZWU/CkFuZCBoaXMgbG9yZCB3YXMgd3JvdGgsIGFuZCBkZWxpdmVyZWQgaGltIHRvIHRoZSB0b3JtZW50b3JzLCB0aWxsIGhlIHNob3VsZCBwYXkgYWxsIHRoYXQgd2FzIGR1ZSB1bnRvIGhpbS4KU28gbGlrZXdpc2Ugc2hhbGwgbXkgaGVhdmVubHkgRmF0aGVyIGRvIGFsc28gdW50byB5b3UsIGlmIHllIGZyb20geW91ciBoZWFydHMgZm9yZ2l2ZSBub3QgZXZlcnkgb25lIGhpcyBicm90aGVyIHRoZWlyIHRyZXNwYXNzZXMuCkFuZCBpdCBjYW1lIHRvIHBhc3MsIHRoYXQgd2hlbiBKZXN1cyBoYWQgZmluaXNoZWQgdGhlc2Ugc2F5aW5ncywgaGUgZGVwYXJ0ZWQgZnJvbSBHYWxpbGVlLCBhbmQgY2FtZSBpbnRvIHRoZSBjb2FzdHMgb2YgSnVkYWVhIGJleW9uZCBKb3JkYW47CkFuZCBncmVhdCBtdWx0aXR1ZGVzIGZvbGxvd2VkIGhpbTsgYW5kIGhlIGhlYWxlZCB0aGVtIHRoZXJlLgpUaGUgUGhhcmlzZWVzIGFsc28gY2FtZSB1bnRvIGhpbSwgdGVtcHRpbmcgaGltLCBhbmQgc2F5aW5nIHVudG8gaGltLCBJcyBpdCBsYXdmdWwgZm9yIGEgbWFuIHRvIHB1dCBhd2F5IGhpcyB3aWZlIGZvciBldmVyeSBjYXVzZT8KQW5kIGhlIGFuc3dlcmVkIGFuZCBzYWlkIHVudG8gdGhlbSwgSGF2ZSB5ZSBub3QgcmVhZCwgdGhhdCBoZSB3aGljaCBtYWRlIHRoZW0gYXQgdGhlIGJlZ2lubmluZyBtYWRlIHRoZW0gbWFsZSBhbmQgZmVtYWxlLApBbmQgc2FpZCwgRm9yIHRoaXMgY2F1c2Ugc2hhbGwgYSBtYW4gbGVhdmUgZmF0aGVyIGFuZCBtb3RoZXIsIGFuZCBzaGFsbCBjbGVhdmUgdG8gaGlzIHdpZmU6IGFuZCB0aGV5IHR3YWluIHNoYWxsIGJlIG9uZSBmbGVzaD8KV2hlcmVmb3JlIHRoZXkgYXJlIG5vIG1vcmUgdHdhaW4sIGJ1dCBvbmUgZmxlc2guIFdoYXQgdGhlcmVmb3JlIEdvZCBoYXRoIGpvaW5lZCB0b2dldGhlciwgbGV0IG5vdCBtYW4gcHV0IGFzdW5kZXIuClRoZXkgc2F5IHVudG8gaGltLCBXaHkgZGlkIE1vc2VzIHRoZW4gY29tbWFuZCB0byBnaXZlIGEgd3JpdGluZyBvZiBkaXZvcmNlbWVudCwgYW5kIHRvIHB1dCBoZXIgYXdheT8KSGUgc2FpdGggdW50byB0aGVtLCBNb3NlcyBiZWNhdXNlIG9mIHRoZSBoYXJkbmVzcyBvZiB5b3VyIGhlYXJ0cyBzdWZmZXJlZCB5b3UgdG8gcHV0IGF3YXkgeW91ciB3aXZlczogYnV0IGZyb20gdGhlIGJlZ2lubmluZyBpdCB3YXMgbm90IHNvLgpBbmQgSSBzYXkgdW50byB5b3UsIFdob3NvZXZlciBzaGFsbCBwdXQgYXdheSBoaXMgd2lmZSwgZXhjZXB0IGl0IGJlIGZvciBmb3JuaWNhdGlvbiwgYW5kIHNoYWxsIG1hcnJ5IGFub3RoZXIsIGNvbW1pdHRldGggYWR1bHRlcnk6IGFuZCB3aG9zbyBtYXJyaWV0aCBoZXIgd2hpY2ggaXMgcHV0IGF3YXkgZG90aCBjb21taXQgYWR1bHRlcnkuCkhpcyBkaXNjaXBsZXMgc2F5IHVudG8gaGltLCBJZiB0aGUgY2FzZSBvZiB0aGUgbWFuIGJlIHNvIHdpdGggaGlzIHdpZmUsIGl0IGlzIG5vdCBnb29kIHRvIG1hcnJ5LgpCdXQgaGUgc2FpZCB1bnRvIHRoZW0sIEFsbCBtZW4gY2Fubm90IHJlY2VpdmUgdGhpcyBzYXlpbmcsIHNhdmUgdGhleSB0byB3aG9tIGl0IGlzIGdpdmVuLgpGb3IgdGhlcmUgYXJlIHNvbWUgZXVudWNocywgd2hpY2ggd2VyZSBzbyBib3JuIGZyb20gdGhlaXIgbW90aGVyJ3Mgd29tYjogYW5kIHRoZXJlIGFyZSBzb21lIGV1bnVjaHMsIHdoaWNoIHdlcmUgbWFkZSBldW51Y2hzIG9mIG1lbjogYW5kIHRoZXJlIGJlIGV1bnVjaHMsIHdoaWNoIGhhdmUgbWFkZSB0aGVtc2VsdmVzIGV1bnVjaHMgZm9yIHRoZSBraW5nZG9tIG9mIGhlYXZlbidzIHNha2UuIEhlIHRoYXQgaXMgYWJsZSB0byByZWNlaXZlIGl0LCBsZXQgaGltIHJlY2VpdmUgaXQuClRoZW4gd2VyZSB0aGVyZSBicm91Z2h0IHVudG8gaGltIGxpdHRsZSBjaGlsZHJlbiwgdGhhdCBoZSBzaG91bGQgcHV0IGhpcyBoYW5kcyBvbiB0aGVtLCBhbmQgcHJheTogYW5kIHRoZSBkaXNjaXBsZXMgcmVidWtlZCB0aGVtLgpCdXQgSmVzdXMgc2FpZCwgU3VmZmVyIGxpdHRsZSBjaGlsZHJlbiwgYW5kIGZvcmJpZCB0aGVtIG5vdCwgdG8gY29tZSB1bnRvIG1lOiBmb3Igb2Ygc3VjaCBpcyB0aGUga2luZ2RvbSBvZiBoZWF2ZW4uCkFuZCBoZSBsYWlkIGhpcyBoYW5kcyBvbiB0aGVtLCBhbmQgZGVwYXJ0ZWQgdGhlbmNlLgpBbmQsIGJlaG9sZCwgb25lIGNhbWUgYW5kIHNhaWQgdW50byBoaW0sIEdvb2QgTWFzdGVyLCB3aGF0IGdvb2QgdGhpbmcgc2hhbGwgSSBkbywgdGhhdCBJIG1heSBoYXZlIGV0ZXJuYWwgbGlmZT8KQW5kIGhlIHNhaWQgdW50byBoaW0sIFdoeSBjYWxsZXN0IHRob3UgbWUgZ29vZD8gdGhlcmUgaXMgbm9uZSBnb29kIGJ1dCBvbmUsIHRoYXQgaXMsIEdvZDogYnV0IGlmIHRob3Ugd2lsdCBlbnRlciBpbnRvIGxpZmUsIGtlZXAgdGhlIGNvbW1hbmRtZW50cy4KSGUgc2FpdGggdW50byBoaW0sIFdoaWNoPyBKZXN1cyBzYWlkLCBUaG91IHNoYWx0IGRvIG5vIG11cmRlciwgVGhvdSBzaGFsdCBub3QgY29tbWl0IGFkdWx0ZXJ5LCBUaG91IHNoYWx0IG5vdCBzdGVhbCwgVGhvdSBzaGFsdCBub3QgYmVhciBmYWxzZSB3aXRuZXNzLApIb25vdXIgdGh5IGZhdGhlciBhbmQgdGh5IG1vdGhlcjogYW5kLCBUaG91IHNoYWx0IGxvdmUgdGh5IG5laWdoYm91ciBhcyB0aHlzZWxmLgpUaGUgeW91bmcgbWFuIHNhaXRoIHVudG8gaGltLCBBbGwgdGhlc2UgdGhpbmdzIGhhdmUgSSBrZXB0IGZyb20gbXkgeW91dGggdXA6IHdoYXQgbGFjayBJIHlldD8KSmVzdXMgc2FpZCB1bnRvIGhpbSwgSWYgdGhvdSB3aWx0IGJlIHBlcmZlY3QsIGdvIGFuZCBzZWxsIHRoYXQgdGhvdSBoYXN0LCBhbmQgZ2l2ZSB0byB0aGUgcG9vciwgYW5kIHRob3Ugc2hhbHQgaGF2ZSB0cmVhc3VyZSBpbiBoZWF2ZW46IGFuZCBjb21lIGFuZCBmb2xsb3cgbWUuCkJ1dCB3aGVuIHRoZSB5b3VuZyBtYW4gaGVhcmQgdGhhdCBzYXlpbmcsIGhlIHdlbnQgYXdheSBzb3Jyb3dmdWw6IGZvciBoZSBoYWQgZ3JlYXQgcG9zc2Vzc2lvbnMuClRoZW4gc2FpZCBKZXN1cyB1bnRvIGhpcyBkaXNjaXBsZXMsIFZlcmlseSBJIHNheSB1bnRvIHlvdSwgVGhhdCBhIHJpY2ggbWFuIHNoYWxsIGhhcmRseSBlbnRlciBpbnRvIHRoZSBraW5nZG9tIG9mIGhlYXZlbi4KQW5kIGFnYWluIEkgc2F5IHVudG8geW91LCBJdCBpcyBlYXNpZXIgZm9yIGEgY2FtZWwgdG8gZ28gdGhyb3VnaCB0aGUgZXllIG9mIGEgbmVlZGxlLCB0aGFuIGZvciBhIHJpY2ggbWFuIHRvIGVudGVyIGludG8gdGhlIGtpbmdkb20gb2YgR29kLgpXaGVuIGhpcyBkaXNjaXBsZXMgaGVhcmQgaXQsIHRoZXkgd2VyZSBleGNlZWRpbmdseSBhbWF6ZWQsIHNheWluZywgV2hvIHRoZW4gY2FuIGJlIHNhdmVkPwpCdXQgSmVzdXMgYmVoZWxkIHRoZW0sIGFuZCBzYWlkIHVudG8gdGhlbSwgV2l0aCBtZW4gdGhpcyBpcyBpbXBvc3NpYmxlOyBidXQgd2l0aCBHb2QgYWxsIHRoaW5ncyBhcmUgcG9zc2libGUuClRoZW4gYW5zd2VyZWQgUGV0ZXIgYW5kIHNhaWQgdW50byBoaW0sIEJlaG9sZCwgd2UgaGF2ZSBmb3JzYWtlbiBhbGwsIGFuZCBmb2xsb3dlZCB0aGVlOyB3aGF0IHNoYWxsIHdlIGhhdmUgdGhlcmVmb3JlPwpBbmQgSmVzdXMgc2FpZCB1bnRvIHRoZW0sIFZlcmlseSBJIHNheSB1bnRvIHlvdSwgVGhhdCB5ZSB3aGljaCBoYXZlIGZvbGxvd2VkIG1lLCBpbiB0aGUgcmVnZW5lcmF0aW9uIHdoZW4gdGhlIFNvbiBvZiBtYW4gc2hhbGwgc2l0IGluIHRoZSB0aHJvbmUgb2YgaGlzIGdsb3J5LCB5ZSBhbHNvIHNoYWxsIHNpdCB1cG9uIHR3ZWx2ZSB0aHJvbmVzLCBqdWRnaW5nIHRoZSB0d2VsdmUgdHJpYmVzIG9mIElzcmFlbC4KQW5kIGV2ZXJ5IG9uZSB0aGF0IGhhdGggZm9yc2FrZW4gaG91c2VzLCBvciBicmV0aHJlbiwgb3Igc2lzdGVycywgb3IgZmF0aGVyLCBvciBtb3RoZXIsIG9yIHdpZmUsIG9yIGNoaWxkcmVuLCBvciBsYW5kcywgZm9yIG15IG5hbWUncyBzYWtlLCBzaGFsbCByZWNlaXZlIGFuIGh1bmRyZWRmb2xkLCBhbmQgc2hhbGwgaW5oZXJpdCBldmVybGFzdGluZyBsaWZlLgpCdXQgbWFueSB0aGF0IGFyZSBmaXJzdCBzaGFsbCBiZSBsYXN0OyBhbmQgdGhlIGxhc3Qgc2hhbGwgYmUgZmlyc3QuCkZvciB0aGUga2luZ2RvbSBvZiBoZWF2ZW4gaXMgbGlrZSB1bnRvIGEgbWFuIHRoYXQgaXMgYW4gaG91c2Vob2xkZXIsIHdoaWNoIHdlbnQgb3V0IGVhcmx5IGluIHRoZSBtb3JuaW5nIHRvIGhpcmUgbGFib3VyZXJzIGludG8gaGlzIHZpbmV5YXJkLgpBbmQgd2hlbiBoZSBoYWQgYWdyZWVkIHdpdGggdGhlIGxhYm91cmVycyBmb3IgYSBwZW5ueSBhIGRheSwgaGUgc2VudCB0aGVtIGludG8gaGlzIHZpbmV5YXJkLgpBbmQgaGUgd2VudCBvdXQgYWJvdXQgdGhlIHRoaXJkIGhvdXIsIGFuZCBzYXcgb3RoZXJzIHN0YW5kaW5nIGlkbGUgaW4gdGhlIG1hcmtldHBsYWNlLApBbmQgc2FpZCB1bnRvIHRoZW07IEdvIHllIGFsc28gaW50byB0aGUgdmluZXlhcmQsIGFuZCB3aGF0c29ldmVyIGlzIHJpZ2h0IEkgd2lsbCBnaXZlIHlvdS4gQW5kIHRoZXkgd2VudCB0aGVpciB3YXkuCkFnYWluIGhlIHdlbnQgb3V0IGFib3V0IHRoZSBzaXh0aCBhbmQgbmludGggaG91ciwgYW5kIGRpZCBsaWtld2lzZS4KQW5kIGFib3V0IHRoZSBlbGV2ZW50aCBob3VyIGhlIHdlbnQgb3V0LCBhbmQgZm91bmQgb3RoZXJzIHN0YW5kaW5nIGlkbGUsIGFuZCBzYWl0aCB1bnRvIHRoZW0sIFdoeSBzdGFuZCB5ZSBoZXJlIGFsbCB0aGUgZGF5IGlkbGU/ClRoZXkgc2F5IHVudG8gaGltLCBCZWNhdXNlIG5vIG1hbiBoYXRoIGhpcmVkIHVzLiBIZSBzYWl0aCB1bnRvIHRoZW0sIEdvIHllIGFsc28gaW50byB0aGUgdmluZXlhcmQ7IGFuZCB3aGF0c29ldmVyIGlzIHJpZ2h0LCB0aGF0IHNoYWxsIHllIHJlY2VpdmUuClNvIHdoZW4gZXZlbiB3YXMgY29tZSwgdGhlIGxvcmQgb2YgdGhlIHZpbmV5YXJkIHNhaXRoIHVudG8gaGlzIHN0ZXdhcmQsIENhbGwgdGhlIGxhYm91cmVycywgYW5kIGdpdmUgdGhlbSB0aGVpciBoaXJlLCBiZWdpbm5pbmcgZnJvbSB0aGUgbGFzdCB1bnRvIHRoZSBmaXJzdC4KQW5kIHdoZW4gdGhleSBjYW1lIHRoYXQgd2VyZSBoaXJlZCBhYm91dCB0aGUgZWxldmVudGggaG91ciwgdGhleSByZWNlaXZlZCBldmVyeSBtYW4gYSBwZW5ueS4KQnV0IHdoZW4gdGhlIGZpcnN0IGNhbWUsIHRoZXkgc3VwcG9zZWQgdGhhdCB0aGV5IHNob3VsZCBoYXZlIHJlY2VpdmVkIG1vcmU7IGFuZCB0aGV5IGxpa2V3aXNlIHJlY2VpdmVkIGV2ZXJ5IG1hbiBhIHBlbm55LgpBbmQgd2hlbiB0aGV5IGhhZCByZWNlaXZlZCBpdCwgdGhleSBtdXJtdXJlZCBhZ2FpbnN0IHRoZSBnb29kbWFuIG9mIHRoZSBob3VzZSwKU2F5aW5nLCBUaGVzZSBsYXN0IGhhdmUgd3JvdWdodCBidXQgb25lIGhvdXIsIGFuZCB0aG91IGhhc3QgbWFkZSB0aGVtIGVxdWFsIHVudG8gdXMsIHdoaWNoIGhhdmUgYm9ybmUgdGhlIGJ1cmRlbiBhbmQgaGVhdCBvZiB0aGUgZGF5LgpCdXQgaGUgYW5zd2VyZWQgb25lIG9mIHRoZW0sIGFuZCBzYWlkLCBGcmllbmQsIEkgZG8gdGhlZSBubyB3cm9uZzogZGlkc3Qgbm90IHRob3UgYWdyZWUgd2l0aCBtZSBmb3IgYSBwZW5ueT8KVGFrZSB0aGF0IHRoaW5lIGlzLCBhbmQgZ28gdGh5IHdheTogSSB3aWxsIGdpdmUgdW50byB0aGlzIGxhc3QsIGV2ZW4gYXMgdW50byB0aGVlLgpJcyBpdCBub3QgbGF3ZnVsIGZvciBtZSB0byBkbyB3aGF0IEkgd2lsbCB3aXRoIG1pbmUgb3duPyBJcyB0aGluZSBleWUgZXZpbCwgYmVjYXVzZSBJIGFtIGdvb2Q/ClNvIHRoZSBsYXN0IHNoYWxsIGJlIGZpcnN0LCBhbmQgdGhlIGZpcnN0IGxhc3Q6IGZvciBtYW55IGJlIGNhbGxlZCwgYnV0IGZldyBjaG9zZW4uCkFuZCBKZXN1cyBnb2luZyB1cCB0byBKZXJ1c2FsZW0gdG9vayB0aGUgdHdlbHZlIGRpc2NpcGxlcyBhcGFydCBpbiB0aGUgd2F5LCBhbmQgc2FpZCB1bnRvIHRoZW0sCkJlaG9sZCwgd2UgZ28gdXAgdG8gSmVydXNhbGVtOyBhbmQgdGhlIFNvbiBvZiBtYW4gc2hhbGwgYmUgYmV0cmF5ZWQgdW50byB0aGUgY2hpZWYgcHJpZXN0cyBhbmQgdW50byB0aGUgc2NyaWJlcywgYW5kIHRoZXkgc2hhbGwgY29uZGVtbiBoaW0gdG8gZGVhdGgsCkFuZCBzaGFsbCBkZWxpdmVyIGhpbSB0byB0aGUgR2VudGlsZXMgdG8gbW9jaywgYW5kIHRvIHNjb3VyZ2UsIGFuZCB0byBjcnVjaWZ5IGhpbTogYW5kIHRoZSB0aGlyZCBkYXkgaGUgc2hhbGwgcmlzZSBhZ2Fpbi4KVGhlbiBjYW1lIHRvIGhpbSB0aGUgbW90aGVyIG9mIFplYmVkZWVzIGNoaWxkcmVuIHdpdGggaGVyIHNvbnMsIHdvcnNoaXBwaW5nIGhpbSwgYW5kIGRlc2lyaW5nIGEgY2VydGFpbiB0aGluZyBvZiBoaW0uCkFuZCBoZSBzYWlkIHVudG8gaGVyLCBXaGF0IHdpbHQgdGhvdT8gU2hlIHNhaXRoIHVudG8gaGltLCBHcmFudCB0aGF0IHRoZXNlIG15IHR3byBzb25zIG1heSBzaXQsIHRoZSBvbmUgb24gdGh5IHJpZ2h0IGhhbmQsIGFuZCB0aGUgb3RoZXIgb24gdGhlIGxlZnQsIGluIHRoeSBraW5nZG9tLgpCdXQgSmVzdXMgYW5zd2VyZWQgYW5kIHNhaWQsIFllIGtub3cgbm90IHdoYXQgeWUgYXNrLiBBcmUgeWUgYWJsZSB0byBkcmluayBvZiB0aGUgY3VwIHRoYXQgSSBzaGFsbCBkcmluayBvZiwgYW5kIHRvIGJlIGJhcHRpemVkIHdpdGggdGhlIGJhcHRpc20gdGhhdCBJIGFtIGJhcHRpemVkIHdpdGg/IFRoZXkgc2F5IHVudG8gaGltLCBXZSBhcmUgYWJsZS4KQW5kIGhlIHNhaXRoIHVudG8gdGhlbSwgWWUgc2hhbGwgZHJpbmsgaW5kZWVkIG9mIG15IGN1cCwgYW5kIGJlIGJhcHRpemVkIHdpdGggdGhlIGJhcHRpc20gdGhhdCBJIGFtIGJhcHRpemVkIHdpdGg6IGJ1dCB0byBzaXQgb24gbXkgcmlnaHQgaGFuZCwgYW5kIG9uIG15IGxlZnQsIGlzIG5vdCBtaW5lIHRvIGdpdmUsIGJ1dCBpdCBzaGFsbCBiZSBnaXZlbiB0byB0aGVtIGZvciB3aG9tIGl0IGlzIHByZXBhcmVkIG9mIG15IEZhdGhlci4KQW5kIHdoZW4gdGhlIHRlbiBoZWFyZCBpdCwgdGhleSB3ZXJlIG1vdmVkIHdpdGggaW5kaWduYXRpb24gYWdhaW5zdCB0aGUgdHdvIGJyZXRocmVuLgpCdXQgSmVzdXMgY2FsbGVkIHRoZW0gdW50byBoaW0sIGFuZCBzYWlkLCBZZSBrbm93IHRoYXQgdGhlIHByaW5jZXMgb2YgdGhlIEdlbnRpbGVzIGV4ZXJjaXNlIGRvbWluaW9uIG92ZXIgdGhlbSwgYW5kIHRoZXkgdGhhdCBhcmUgZ3JlYXQgZXhlcmNpc2UgYXV0aG9yaXR5IHVwb24gdGhlbS4KQnV0IGl0IHNoYWxsIG5vdCBiZSBzbyBhbW9uZyB5b3U6IGJ1dCB3aG9zb2V2ZXIgd2lsbCBiZSBncmVhdCBhbW9uZyB5b3UsIGxldCBoaW0gYmUgeW91ciBtaW5pc3RlcjsKQW5kIHdob3NvZXZlciB3aWxsIGJlIGNoaWVmIGFtb25nIHlvdSwgbGV0IGhpbSBiZSB5b3VyIHNlcnZhbnQ6CkV2ZW4gYXMgdGhlIFNvbiBvZiBtYW4gY2FtZSBub3QgdG8gYmUgbWluaXN0ZXJlZCB1bnRvLCBidXQgdG8gbWluaXN0ZXIsIGFuZCB0byBnaXZlIGhpcyBsaWZlIGEgcmFuc29tIGZvciBtYW55LgpBbmQgYXMgdGhleSBkZXBhcnRlZCBmcm9tIEplcmljaG8sIGEgZ3JlYXQgbXVsdGl0dWRlIGZvbGxvd2VkIGhpbS4KQW5kLCBiZWhvbGQsIHR3byBibGluZCBtZW4gc2l0dGluZyBieSB0aGUgd2F5IHNpZGUsIHdoZW4gdGhleSBoZWFyZCB0aGF0IEplc3VzIHBhc3NlZCBieSwgY3JpZWQgb3V0LCBzYXlpbmcsIEhhdmUgbWVyY3kgb24gdXMsIE8gTG9yZCwgdGhvdSBzb24gb2YgRGF2aWQuCkFuZCB0aGUgbXVsdGl0dWRlIHJlYnVrZWQgdGhlbSwgYmVjYXVzZSB0aGV5IHNob3VsZCBob2xkIHRoZWlyIHBlYWNlOiBidXQgdGhleSBjcmllZCB0aGUgbW9yZSwgc2F5aW5nLCBIYXZlIG1lcmN5IG9uIHVzLCBPIExvcmQsIHRob3Ugc29uIG9mIERhdmlkLgpBbmQgSmVzdXMgc3Rvb2Qgc3RpbGwsIGFuZCBjYWxsZWQgdGhlbSwgYW5kIHNhaWQsIFdoYXQgd2lsbCB5ZSB0aGF0IEkgc2hhbGwgZG8gdW50byB5b3U/ClRoZXkgc2F5IHVudG8gaGltLCBMb3JkLCB0aGF0IG91ciBleWVzIG1heSBiZSBvcGVuZWQuClNvIEplc3VzIGhhZCBjb21wYXNzaW9uIG9uIHRoZW0sIGFuZCB0b3VjaGVkIHRoZWlyIGV5ZXM6IGFuZCBpbW1lZGlhdGVseSB0aGVpciBleWVzIHJlY2VpdmVkIHNpZ2h0LCBhbmQgdGhleSBmb2xsb3dlZCBoaW0uCkFuZCB3aGVuIHRoZXkgZHJldyBuaWdoIHVudG8gSmVydXNhbGVtLCBhbmQgd2VyZSBjb21lIHRvIEJldGhwaGFnZSwgdW50byB0aGUgbW91bnQgb2YgT2xpdmVzLCB0aGVuIHNlbnQgSmVzdXMgdHdvIGRpc2NpcGxlcywKU2F5aW5nIHVudG8gdGhlbSwgR28gaW50byB0aGUgdmlsbGFnZSBvdmVyIGFnYWluc3QgeW91LCBhbmQgc3RyYWlnaHR3YXkgeWUgc2hhbGwgZmluZCBhbiBhc3MgdGllZCwgYW5kIGEgY29sdCB3aXRoIGhlcjogbG9vc2UgdGhlbSwgYW5kIGJyaW5nIHRoZW0gdW50byBtZS4KQW5kIGlmIGFueSBtYW4gc2F5IG91Z2h0IHVudG8geW91LCB5ZSBzaGFsbCBzYXksIFRoZSBMb3JkIGhhdGggbmVlZCBvZiB0aGVtOyBhbmQgc3RyYWlnaHR3YXkgaGUgd2lsbCBzZW5kIHRoZW0uCkFsbCB0aGlzIHdhcyBkb25lLCB0aGF0IGl0IG1pZ2h0IGJlIGZ1bGZpbGxlZCB3aGljaCB3YXMgc3Bva2VuIGJ5IHRoZSBwcm9waGV0LCBzYXlpbmcsClRlbGwgeWUgdGhlIGRhdWdodGVyIG9mIFNpb24sIEJlaG9sZCwgdGh5IEtpbmcgY29tZXRoIHVudG8gdGhlZSwgbWVlaywgYW5kIHNpdHRpbmcgdXBvbiBhbiBhc3MsIGFuZCBhIGNvbHQgdGhlIGZvYWwgb2YgYW4gYXNzLgpBbmQgdGhlIGRpc2NpcGxlcyB3ZW50LCBhbmQgZGlkIGFzIEplc3VzIGNvbW1hbmRlZCB0aGVtLApBbmQgYnJvdWdodCB0aGUgYXNzLCBhbmQgdGhlIGNvbHQsIGFuZCBwdXQgb24gdGhlbSB0aGVpciBjbG90aGVzLCBhbmQgdGhleSBzZXQgaGltIHRoZXJlb24uCkFuZCBhIHZlcnkgZ3JlYXQgbXVsdGl0dWRlIHNwcmVhZCB0aGVpciBnYXJtZW50cyBpbiB0aGUgd2F5OyBvdGhlcnMgY3V0IGRvd24gYnJhbmNoZXMgZnJvbSB0aGUgdHJlZXMsIGFuZCBzdHJhd2VkIHRoZW0gaW4gdGhlIHdheS4KQW5kIHRoZSBtdWx0aXR1ZGVzIHRoYXQgd2VudCBiZWZvcmUsIGFuZCB0aGF0IGZvbGxvd2VkLCBjcmllZCwgc2F5aW5nLCBIb3Nhbm5hIHRvIHRoZSBzb24gb2YgRGF2aWQ6IEJsZXNzZWQgaXMgaGUgdGhhdCBjb21ldGggaW4gdGhlIG5hbWUgb2YgdGhlIExvcmQ7IEhvc2FubmEgaW4gdGhlIGhpZ2hlc3QuCkFuZCB3aGVuIGhlIHdhcyBjb21lIGludG8gSmVydXNhbGVtLCBhbGwgdGhlIGNpdHkgd2FzIG1vdmVkLCBzYXlpbmcsIFdobyBpcyB0aGlzPwpBbmQgdGhlIG11bHRpdHVkZSBzYWlkLCBUaGlzIGlzIEplc3VzIHRoZSBwcm9waGV0IG9mIE5hemFyZXRoIG9mIEdhbGlsZWUuCkFuZCBKZXN1cyB3ZW50IGludG8gdGhlIHRlbXBsZSBvZiBHb2QsIGFuZCBjYXN0IG91dCBhbGwgdGhlbSB0aGF0IHNvbGQgYW5kIGJvdWdodCBpbiB0aGUgdGVtcGxlLCBhbmQgb3ZlcnRocmV3IHRoZSB0YWJsZXMgb2YgdGhlIG1vbmV5Y2hhbmdlcnMsIGFuZCB0aGUgc2VhdHMgb2YgdGhlbSB0aGF0IHNvbGQgZG92ZXMsCkFuZCBzYWlkIHVudG8gdGhlbSwgSXQgaXMgd3JpdHRlbiwgTXkgaG91c2Ugc2hhbGwgYmUgY2FsbGVkIHRoZSBob3VzZSBvZiBwcmF5ZXI7IGJ1dCB5ZSBoYXZlIG1hZGUgaXQgYSBkZW4gb2YgdGhpZXZlcy4KQW5kIHRoZSBibGluZCBhbmQgdGhlIGxhbWUgY2FtZSB0byBoaW0gaW4gdGhlIHRlbXBsZTsgYW5kIGhlIGhlYWxlZCB0aGVtLgpBbmQgd2hlbiB0aGUgY2hpZWYgcHJpZXN0cyBhbmQgc2NyaWJlcyBzYXcgdGhlIHdvbmRlcmZ1bCB0aGluZ3MgdGhhdCBoZSBkaWQsIGFuZCB0aGUgY2hpbGRyZW4gY3J5aW5nIGluIHRoZSB0ZW1wbGUsIGFuZCBzYXlpbmcsIEhvc2FubmEgdG8gdGhlIHNvbiBvZiBEYXZpZDsgdGhleSB3ZXJlIHNvcmUgZGlzcGxlYXNlZCwKQW5kIHNhaWQgdW50byBoaW0sIEhlYXJlc3QgdGhvdSB3aGF0IHRoZXNlIHNheT8gQW5kIEplc3VzIHNhaXRoIHVudG8gdGhlbSwgWWVhOyBoYXZlIHllIG5ldmVyIHJlYWQsIE91dCBvZiB0aGUgbW91dGggb2YgYmFiZXMgYW5kIHN1Y2tsaW5ncyB0aG91IGhhc3QgcGVyZmVjdGVkIHByYWlzZT8KQW5kIGhlIGxlZnQgdGhlbSwgYW5kIHdlbnQgb3V0IG9mIHRoZSBjaXR5IGludG8gQmV0aGFueTsgYW5kIGhlIGxvZGdlZCB0aGVyZS4KTm93IGluIHRoZSBtb3JuaW5nIGFzIGhlIHJldHVybmVkIGludG8gdGhlIGNpdHksIGhlIGh1bmdlcmVkLgpBbmQgd2hlbiBoZSBzYXcgYSBmaWcgdHJlZSBpbiB0aGUgd2F5LCBoZSBjYW1lIHRvIGl0LCBhbmQgZm91bmQgbm90aGluZyB0aGVyZW9uLCBidXQgbGVhdmVzIG9ubHksIGFuZCBzYWlkIHVudG8gaXQsIExldCBubyBmcnVpdCBncm93IG9uIHRoZWUgaGVuY2Vmb3J3YXJkIGZvciBldmVyLiBBbmQgcHJlc2VudGx5IHRoZSBmaWcgdHJlZSB3aXRoZXJlZCBhd2F5LgpBbmQgd2hlbiB0aGUgZGlzY2lwbGVzIHNhdyBpdCwgdGhleSBtYXJ2ZWxsZWQsIHNheWluZywgSG93IHNvb24gaXMgdGhlIGZpZyB0cmVlIHdpdGhlcmVkIGF3YXkhCkplc3VzIGFuc3dlcmVkIGFuZCBzYWlkIHVudG8gdGhlbSwgVmVyaWx5IEkgc2F5IHVudG8geW91LCBJZiB5ZSBoYXZlIGZhaXRoLCBhbmQgZG91YnQgbm90LCB5ZSBzaGFsbCBub3Qgb25seSBkbyB0aGlzIHdoaWNoIGlzIGRvbmUgdG8gdGhlIGZpZyB0cmVlLCBidXQgYWxzbyBpZiB5ZSBzaGFsbCBzYXkgdW50byB0aGlzIG1vdW50YWluLCBCZSB0aG91IHJlbW92ZWQsIGFuZCBiZSB0aG91IGNhc3QgaW50byB0aGUgc2VhOyBpdCBzaGFsbCBiZSBkb25lLgpBbmQgYWxsIHRoaW5ncywgd2hhdHNvZXZlciB5ZSBzaGFsbCBhc2sgaW4gcHJheWVyLCBiZWxpZXZpbmcsIHllIHNoYWxsIHJlY2VpdmUuCkFuZCB3aGVuIGhlIHdhcyBjb21lIGludG8gdGhlIHRlbXBsZSwgdGhlIGNoaWVmIHByaWVzdHMgYW5kIHRoZSBlbGRlcnMgb2YgdGhlIHBlb3BsZSBjYW1lIHVudG8gaGltIGFzIGhlIHdhcyB0ZWFjaGluZywgYW5kIHNhaWQsIEJ5IHdoYXQgYXV0aG9yaXR5IGRvZXN0IHRob3UgdGhlc2UgdGhpbmdzPyBhbmQgd2hvIGdhdmUgdGhlZSB0aGlzIGF1dGhvcml0eT8KQW5kIEplc3VzIGFuc3dlcmVkIGFuZCBzYWlkIHVudG8gdGhlbSwgSSBhbHNvIHdpbGwgYXNrIHlvdSBvbmUgdGhpbmcsIHdoaWNoIGlmIHllIHRlbGwgbWUsIEkgaW4gbGlrZSB3aXNlIHdpbGwgdGVsbCB5b3UgYnkgd2hhdCBhdXRob3JpdHkgSSBkbyB0aGVzZSB0aGluZ3MuClRoZSBiYXB0aXNtIG9mIEpvaG4sIHdoZW5jZSB3YXMgaXQ/IGZyb20gaGVhdmVuLCBvciBvZiBtZW4/IEFuZCB0aGV5IHJlYXNvbmVkIHdpdGggdGhlbXNlbHZlcywgc2F5aW5nLCBJZiB3ZSBzaGFsbCBzYXksIEZyb20gaGVhdmVuOyBoZSB3aWxsIHNheSB1bnRvIHVzLCBXaHkgZGlkIHllIG5vdCB0aGVuIGJlbGlldmUgaGltPwpCdXQgaWYgd2Ugc2hhbGwgc2F5LCBPZiBtZW47IHdlIGZlYXIgdGhlIHBlb3BsZTsgZm9yIGFsbCBob2xkIEpvaG4gYXMgYSBwcm9waGV0LgpBbmQgdGhleSBhbnN3ZXJlZCBKZXN1cywgYW5kIHNhaWQsIFdlIGNhbm5vdCB0ZWxsLiBBbmQgaGUgc2FpZCB1bnRvIHRoZW0sIE5laXRoZXIgdGVsbCBJIHlvdSBieSB3aGF0IGF1dGhvcml0eSBJIGRvIHRoZXNlIHRoaW5ncy4KQnV0IHdoYXQgdGhpbmsgeWU/IEEgY2VydGFpbiBtYW4gaGFkIHR3byBzb25zOyBhbmQgaGUgY2FtZSB0byB0aGUgZmlyc3QsIGFuZCBzYWlkLCBTb24sIGdvIHdvcmsgdG8gZGF5IGluIG15IHZpbmV5YXJkLgpIZSBhbnN3ZXJlZCBhbmQgc2FpZCwgSSB3aWxsIG5vdDogYnV0IGFmdGVyd2FyZCBoZSByZXBlbnRlZCwgYW5kIHdlbnQuCkFuZCBoZSBjYW1lIHRvIHRoZSBzZWNvbmQsIGFuZCBzYWlkIGxpa2V3aXNlLiBBbmQgaGUgYW5zd2VyZWQgYW5kIHNhaWQsIEkgZ28sIHNpcjogYW5kIHdlbnQgbm90LgpXaGV0aGVyIG9mIHRoZW0gdHdhaW4gZGlkIHRoZSB3aWxsIG9mIGhpcyBmYXRoZXI/IFRoZXkgc2F5IHVudG8gaGltLCBUaGUgZmlyc3QuIEplc3VzIHNhaXRoIHVudG8gdGhlbSwgVmVyaWx5IEkgc2F5IHVudG8geW91LCBUaGF0IHRoZSBwdWJsaWNhbnMgYW5kIHRoZSBoYXJsb3RzIGdvIGludG8gdGhlIGtpbmdkb20gb2YgR29kIGJlZm9yZSB5b3UuCkZvciBKb2huIGNhbWUgdW50byB5b3UgaW4gdGhlIHdheSBvZiByaWdodGVvdXNuZXNzLCBhbmQgeWUgYmVsaWV2ZWQgaGltIG5vdDogYnV0IHRoZSBwdWJsaWNhbnMgYW5kIHRoZSBoYXJsb3RzIGJlbGlldmVkIGhpbTogYW5kIHllLCB3aGVuIHllIGhhZCBzZWVuIGl0LCByZXBlbnRlZCBub3QgYWZ0ZXJ3YXJkLCB0aGF0IHllIG1pZ2h0IGJlbGlldmUgaGltLgpIZWFyIGFub3RoZXIgcGFyYWJsZTogVGhlcmUgd2FzIGEgY2VydGFpbiBob3VzZWhvbGRlciwgd2hpY2ggcGxhbnRlZCBhIHZpbmV5YXJkLCBhbmQgaGVkZ2VkIGl0IHJvdW5kIGFib3V0LCBhbmQgZGlnZ2VkIGEgd2luZXByZXNzIGluIGl0LCBhbmQgYnVpbHQgYSB0b3dlciwgYW5kIGxldCBpdCBvdXQgdG8gaHVzYmFuZG1lbiwgYW5kIHdlbnQgaW50byBhIGZhciBjb3VudHJ5OgpBbmQgd2hlbiB0aGUgdGltZSBvZiB0aGUgZnJ1aXQgZHJldyBuZWFyLCBoZSBzZW50IGhpcyBzZXJ2YW50cyB0byB0aGUgaHVzYmFuZG1lbiwgdGhhdCB0aGV5IG1pZ2h0IHJlY2VpdmUgdGhlIGZydWl0cyBvZiBpdC4KQW5kIHRoZSBodXNiYW5kbWVuIHRvb2sgaGlzIHNlcnZhbnRzLCBhbmQgYmVhdCBvbmUsIGFuZCBraWxsZWQgYW5vdGhlciwgYW5kIHN0b25lZCBhbm90aGVyLgpBZ2FpbiwgaGUgc2VudCBvdGhlciBzZXJ2YW50cyBtb3JlIHRoYW4gdGhlIGZpcnN0OiBhbmQgdGhleSBkaWQgdW50byB0aGVtIGxpa2V3aXNlLgpCdXQgbGFzdCBvZiBhbGwgaGUgc2VudCB1bnRvIHRoZW0gaGlzIHNvbiwgc2F5aW5nLCBUaGV5IHdpbGwgcmV2ZXJlbmNlIG15IHNvbi4KQnV0IHdoZW4gdGhlIGh1c2JhbmRtZW4gc2F3IHRoZSBzb24sIHRoZXkgc2FpZCBhbW9uZyB0aGVtc2VsdmVzLCBUaGlzIGlzIHRoZSBoZWlyOyBjb21lLCBsZXQgdXMga2lsbCBoaW0sIGFuZCBsZXQgdXMgc2VpemUgb24gaGlzIGluaGVyaXRhbmNlLgpBbmQgdGhleSBjYXVnaHQgaGltLCBhbmQgY2FzdCBoaW0gb3V0IG9mIHRoZSB2aW5leWFyZCwgYW5kIHNsZXcgaGltLgpXaGVuIHRoZSBsb3JkIHRoZXJlZm9yZSBvZiB0aGUgdmluZXlhcmQgY29tZXRoLCB3aGF0IHdpbGwgaGUgZG8gdW50byB0aG9zZSBodXNiYW5kbWVuPwpUaGV5IHNheSB1bnRvIGhpbSwgSGUgd2lsbCBtaXNlcmFibHkgZGVzdHJveSB0aG9zZSB3aWNrZWQgbWVuLCBhbmQgd2lsbCBsZXQgb3V0IGhpcyB2aW5leWFyZCB1bnRvIG90aGVyIGh1c2JhbmRtZW4sIHdoaWNoIHNoYWxsIHJlbmRlciBoaW0gdGhlIGZydWl0cyBpbiB0aGVpciBzZWFzb25zLgpKZXN1cyBzYWl0aCB1bnRvIHRoZW0sIERpZCB5ZSBuZXZlciByZWFkIGluIHRoZSBzY3JpcHR1cmVzLCBUaGUgc3RvbmUgd2hpY2ggdGhlIGJ1aWxkZXJzIHJlamVjdGVkLCB0aGUgc2FtZSBpcyBiZWNvbWUgdGhlIGhlYWQgb2YgdGhlIGNvcm5lcjogdGhpcyBpcyB0aGUgTG9yZCdzIGRvaW5nLCBhbmQgaXQgaXMgbWFydmVsbG91cyBpbiBvdXIgZXllcz8KVGhlcmVmb3JlIHNheSBJIHVudG8geW91LCBUaGUga2luZ2RvbSBvZiBHb2Qgc2hhbGwgYmUgdGFrZW4gZnJvbSB5b3UsIGFuZCBnaXZlbiB0byBhIG5hdGlvbiBicmluZ2luZyBmb3J0aCB0aGUgZnJ1aXRzIHRoZXJlb2YuCkFuZCB3aG9zb2V2ZXIgc2hhbGwgZmFsbCBvbiB0aGlzIHN0b25lIHNoYWxsIGJlIGJyb2tlbjogYnV0IG9uIHdob21zb2V2ZXIgaXQgc2hhbGwgZmFsbCwgaXQgd2lsbCBncmluZCBoaW0gdG8gcG93ZGVyLgpBbmQgd2hlbiB0aGUgY2hpZWYgcHJpZXN0cyBhbmQgUGhhcmlzZWVzIGhhZCBoZWFyZCBoaXMgcGFyYWJsZXMsIHRoZXkgcGVyY2VpdmVkIHRoYXQgaGUgc3Bha2Ugb2YgdGhlbS4KQnV0IHdoZW4gdGhleSBzb3VnaHQgdG8gbGF5IGhhbmRzIG9uIGhpbSwgdGhleSBmZWFyZWQgdGhlIG11bHRpdHVkZSwgYmVjYXVzZSB0aGV5IHRvb2sgaGltIGZvciBhIHByb3BoZXQuCkFuZCBKZXN1cyBhbnN3ZXJlZCBhbmQgc3Bha2UgdW50byB0aGVtIGFnYWluIGJ5IHBhcmFibGVzLCBhbmQgc2FpZCwKVGhlIGtpbmdkb20gb2YgaGVhdmVuIGlzIGxpa2UgdW50byBhIGNlcnRhaW4ga2luZywgd2hpY2ggbWFkZSBhIG1hcnJpYWdlIGZvciBoaXMgc29uLApBbmQgc2VudCBmb3J0aCBoaXMgc2VydmFudHMgdG8gY2FsbCB0aGVtIHRoYXQgd2VyZSBiaWRkZW4gdG8gdGhlIHdlZGRpbmc6IGFuZCB0aGV5IHdvdWxkIG5vdCBjb21lLgpBZ2FpbiwgaGUgc2VudCBmb3J0aCBvdGhlciBzZXJ2YW50cywgc2F5aW5nLCBUZWxsIHRoZW0gd2hpY2ggYXJlIGJpZGRlbiwgQmVob2xkLCBJIGhhdmUgcHJlcGFyZWQgbXkgZGlubmVyOiBteSBveGVuIGFuZCBteSBmYXRsaW5ncyBhcmUga2lsbGVkLCBhbmQgYWxsIHRoaW5ncyBhcmUgcmVhZHk6IGNvbWUgdW50byB0aGUgbWFycmlhZ2UuCkJ1dCB0aGV5IG1hZGUgbGlnaHQgb2YgaXQsIGFuZCB3ZW50IHRoZWlyIHdheXMsIG9uZSB0byBoaXMgZmFybSwgYW5vdGhlciB0byBoaXMgbWVyY2hhbmRpc2U6CkFuZCB0aGUgcmVtbmFudCB0b29rIGhpcyBzZXJ2YW50cywgYW5kIGVudHJlYXRlZCB0aGVtIHNwaXRlZnVsbHksIGFuZCBzbGV3IHRoZW0uCkJ1dCB3aGVuIHRoZSBraW5nIGhlYXJkIHRoZXJlb2YsIGhlIHdhcyB3cm90aDogYW5kIGhlIHNlbnQgZm9ydGggaGlzIGFybWllcywgYW5kIGRlc3Ryb3llZCB0aG9zZSBtdXJkZXJlcnMsIGFuZCBidXJuZWQgdXAgdGhlaXIgY2l0eS4KVGhlbiBzYWl0aCBoZSB0byBoaXMgc2VydmFudHMsIFRoZSB3ZWRkaW5nIGlzIHJlYWR5LCBidXQgdGhleSB3aGljaCB3ZXJlIGJpZGRlbiB3ZXJlIG5vdCB3b3J0aHkuCkdvIHllIHRoZXJlZm9yZSBpbnRvIHRoZSBoaWdod2F5cywgYW5kIGFzIG1hbnkgYXMgeWUgc2hhbGwgZmluZCwgYmlkIHRvIHRoZSBtYXJyaWFnZS4KU28gdGhvc2Ugc2VydmFudHMgd2VudCBvdXQgaW50byB0aGUgaGlnaHdheXMsIGFuZCBnYXRoZXJlZCB0b2dldGhlciBhbGwgYXMgbWFueSBhcyB0aGV5IGZvdW5kLCBib3RoIGJhZCBhbmQgZ29vZDogYW5kIHRoZSB3ZWRkaW5nIHdhcyBmdXJuaXNoZWQgd2l0aCBndWVzdHMuCkFuZCB3aGVuIHRoZSBraW5nIGNhbWUgaW4gdG8gc2VlIHRoZSBndWVzdHMsIGhlIHNhdyB0aGVyZSBhIG1hbiB3aGljaCBoYWQgbm90IG9uIGEgd2VkZGluZyBnYXJtZW50OgpBbmQgaGUgc2FpdGggdW50byBoaW0sIEZyaWVuZCwgaG93IGNhbWVzdCB0aG91IGluIGhpdGhlciBub3QgaGF2aW5nIGEgd2VkZGluZyBnYXJtZW50PyBBbmQgaGUgd2FzIHNwZWVjaGxlc3MuClRoZW4gc2FpZCB0aGUga2luZyB0byB0aGUgc2VydmFudHMsIEJpbmQgaGltIGhhbmQgYW5kIGZvb3QsIGFuZCB0YWtlIGhpbSBhd2F5LCBhbmQgY2FzdCBoaW0gaW50byBvdXRlciBkYXJrbmVzcywgdGhlcmUgc2hhbGwgYmUgd2VlcGluZyBhbmQgZ25hc2hpbmcgb2YgdGVldGguCkZvciBtYW55IGFyZSBjYWxsZWQsIGJ1dCBmZXcgYXJlIGNob3Nlbi4KVGhlbiB3ZW50IHRoZSBQaGFyaXNlZXMsIGFuZCB0b29rIGNvdW5zZWwgaG93IHRoZXkgbWlnaHQgZW50YW5nbGUgaGltIGluIGhpcyB0YWxrLgpBbmQgdGhleSBzZW50IG91dCB1bnRvIGhpbSB0aGVpciBkaXNjaXBsZXMgd2l0aCB0aGUgSGVyb2RpYW5zLCBzYXlpbmcsIE1hc3Rlciwgd2Uga25vdyB0aGF0IHRob3UgYXJ0IHRydWUsIGFuZCB0ZWFjaGVzdCB0aGUgd2F5IG9mIEdvZCBpbiB0cnV0aCwgbmVpdGhlciBjYXJlc3QgdGhvdSBmb3IgYW55IG1hbjogZm9yIHRob3UgcmVnYXJkZXN0IG5vdCB0aGUgcGVyc29uIG9mIG1lbi4KVGVsbCB1cyB0aGVyZWZvcmUsIFdoYXQgdGhpbmtlc3QgdGhvdT8gSXMgaXQgbGF3ZnVsIHRvIGdpdmUgdHJpYnV0ZSB1bnRvIENhZXNhciwgb3Igbm90PwpCdXQgSmVzdXMgcGVyY2VpdmVkIHRoZWlyIHdpY2tlZG5lc3MsIGFuZCBzYWlkLCBXaHkgdGVtcHQgeWUgbWUsIHllIGh5cG9jcml0ZXM/ClNoZXcgbWUgdGhlIHRyaWJ1dGUgbW9uZXkuIEFuZCB0aGV5IGJyb3VnaHQgdW50byBoaW0gYSBwZW5ueS4KQW5kIGhlIHNhaXRoIHVudG8gdGhlbSwgV2hvc2UgaXMgdGhpcyBpbWFnZSBhbmQgc3VwZXJzY3JpcHRpb24/ClRoZXkgc2F5IHVudG8gaGltLCBDYWVzYXIncy4gVGhlbiBzYWl0aCBoZSB1bnRvIHRoZW0sIFJlbmRlciB0aGVyZWZvcmUgdW50byBDYWVzYXIgdGhlIHRoaW5ncyB3aGljaCBhcmUgQ2Flc2FyJ3M7IGFuZCB1bnRvIEdvZCB0aGUgdGhpbmdzIHRoYXQgYXJlIEdvZCdzLgpXaGVuIHRoZXkgaGFkIGhlYXJkIHRoZXNlIHdvcmRzLCB0aGV5IG1hcnZlbGxlZCwgYW5kIGxlZnQgaGltLCBhbmQgd2VudCB0aGVpciB3YXkuClRoZSBzYW1lIGRheSBjYW1lIHRvIGhpbSB0aGUgU2FkZHVjZWVzLCB3aGljaCBzYXkgdGhhdCB0aGVyZSBpcyBubyByZXN1cnJlY3Rpb24sIGFuZCBhc2tlZCBoaW0sClNheWluZywgTWFzdGVyLCBNb3NlcyBzYWlkLCBJZiBhIG1hbiBkaWUsIGhhdmluZyBubyBjaGlsZHJlbiwgaGlzIGJyb3RoZXIgc2hhbGwgbWFycnkgaGlzIHdpZmUsIGFuZCByYWlzZSB1cCBzZWVkIHVudG8gaGlzIGJyb3RoZXIuCk5vdyB0aGVyZSB3ZXJlIHdpdGggdXMgc2V2ZW4gYnJldGhyZW46IGFuZCB0aGUgZmlyc3QsIHdoZW4gaGUgaGFkIG1hcnJpZWQgYSB3aWZlLCBkZWNlYXNlZCwgYW5kLCBoYXZpbmcgbm8gaXNzdWUsIGxlZnQgaGlzIHdpZmUgdW50byBoaXMgYnJvdGhlcjoKTGlrZXdpc2UgdGhlIHNlY29uZCBhbHNvLCBhbmQgdGhlIHRoaXJkLCB1bnRvIHRoZSBzZXZlbnRoLgpBbmQgbGFzdCBvZiBhbGwgdGhlIHdvbWFuIGRpZWQgYWxzby4KVGhlcmVmb3JlIGluIHRoZSByZXN1cnJlY3Rpb24gd2hvc2Ugd2lmZSBzaGFsbCBzaGUgYmUgb2YgdGhlIHNldmVuPyBmb3IgdGhleSBhbGwgaGFkIGhlci4KSmVzdXMgYW5zd2VyZWQgYW5kIHNhaWQgdW50byB0aGVtLCBZZSBkbyBlcnIsIG5vdCBrbm93aW5nIHRoZSBzY3JpcHR1cmVzLCBub3IgdGhlIHBvd2VyIG9mIEdvZC4KRm9yIGluIHRoZSByZXN1cnJlY3Rpb24gdGhleSBuZWl0aGVyIG1hcnJ5LCBub3IgYXJlIGdpdmVuIGluIG1hcnJpYWdlLCBidXQgYXJlIGFzIHRoZSBhbmdlbHMgb2YgR29kIGluIGhlYXZlbi4KQnV0IGFzIHRvdWNoaW5nIHRoZSByZXN1cnJlY3Rpb24gb2YgdGhlIGRlYWQsIGhhdmUgeWUgbm90IHJlYWQgdGhhdCB3aGljaCB3YXMgc3Bva2VuIHVudG8geW91IGJ5IEdvZCwgc2F5aW5nLApJIGFtIHRoZSBHb2Qgb2YgQWJyYWhhbSwgYW5kIHRoZSBHb2Qgb2YgSXNhYWMsIGFuZCB0aGUgR29kIG9mIEphY29iPyBHb2QgaXMgbm90IHRoZSBHb2Qgb2YgdGhlIGRlYWQsIGJ1dCBvZiB0aGUgbGl2aW5nLgpBbmQgd2hlbiB0aGUgbXVsdGl0dWRlIGhlYXJkIHRoaXMsIHRoZXkgd2VyZSBhc3RvbmlzaGVkIGF0IGhpcyBkb2N0cmluZS4KQnV0IHdoZW4gdGhlIFBoYXJpc2VlcyBoYWQgaGVhcmQgdGhhdCBoZSBoYWQgcHV0IHRoZSBTYWRkdWNlZXMgdG8gc2lsZW5jZSwgdGhleSB3ZXJlIGdhdGhlcmVkIHRvZ2V0aGVyLgpUaGVuIG9uZSBvZiB0aGVtLCB3aGljaCB3YXMgYSBsYXd5ZXIsIGFza2VkIGhpbSBhIHF1ZXN0aW9uLCB0ZW1wdGluZyBoaW0sIGFuZCBzYXlpbmcsCk1hc3Rlciwgd2hpY2ggaXMgdGhlIGdyZWF0IGNvbW1hbmRtZW50IGluIHRoZSBsYXc/Ckplc3VzIHNhaWQgdW50byBoaW0sIFRob3Ugc2hhbHQgbG92ZSB0aGUgTG9yZCB0aHkgR29kIHdpdGggYWxsIHRoeSBoZWFydCwgYW5kIHdpdGggYWxsIHRoeSBzb3VsLCBhbmQgd2l0aCBhbGwgdGh5IG1pbmQuClRoaXMgaXMgdGhlIGZpcnN0IGFuZCBncmVhdCBjb21tYW5kbWVudC4KQW5kIHRoZSBzZWNvbmQgaXMgbGlrZSB1bnRvIGl0LCBUaG91IHNoYWx0IGxvdmUgdGh5IG5laWdoYm91ciBhcyB0aHlzZWxmLgpPbiB0aGVzZSB0d28gY29tbWFuZG1lbnRzIGhhbmcgYWxsIHRoZSBsYXcgYW5kIHRoZSBwcm9waGV0cy4KV2hpbGUgdGhlIFBoYXJpc2VlcyB3ZXJlIGdhdGhlcmVkIHRvZ2V0aGVyLCBKZXN1cyBhc2tlZCB0aGVtLApTYXlpbmcsIFdoYXQgdGhpbmsgeWUgb2YgQ2hyaXN0PyB3aG9zZSBzb24gaXMgaGU/IFRoZXkgc2F5IHVudG8gaGltLCBUaGUgc29uIG9mIERhdmlkLgpIZSBzYWl0aCB1bnRvIHRoZW0sIEhvdyB0aGVuIGRvdGggRGF2aWQgaW4gc3Bpcml0IGNhbGwgaGltIExvcmQsIHNheWluZywKVGhlIExPUkQgc2FpZCB1bnRvIG15IExvcmQsIFNpdCB0aG91IG9uIG15IHJpZ2h0IGhhbmQsIHRpbGwgSSBtYWtlIHRoaW5lIGVuZW1pZXMgdGh5IGZvb3RzdG9vbD8KSWYgRGF2aWQgdGhlbiBjYWxsIGhpbSBMb3JkLCBob3cgaXMgaGUgaGlzIHNvbj8KQW5kIG5vIG1hbiB3YXMgYWJsZSB0byBhbnN3ZXIgaGltIGEgd29yZCwgbmVpdGhlciBkdXJzdCBhbnkgbWFuIGZyb20gdGhhdCBkYXkgZm9ydGggYXNrIGhpbSBhbnkgbW9yZSBxdWVzdGlvbnMuClRoZW4gc3Bha2UgSmVzdXMgdG8gdGhlIG11bHRpdHVkZSwgYW5kIHRvIGhpcyBkaXNjaXBsZXMsClNheWluZyBUaGUgc2NyaWJlcyBhbmQgdGhlIFBoYXJpc2VlcyBzaXQgaW4gTW9zZXMnIHNlYXQ6CkFsbCB0aGVyZWZvcmUgd2hhdHNvZXZlciB0aGV5IGJpZCB5b3Ugb2JzZXJ2ZSwgdGhhdCBvYnNlcnZlIGFuZCBkbzsgYnV0IGRvIG5vdCB5ZSBhZnRlciB0aGVpciB3b3JrczogZm9yIHRoZXkgc2F5LCBhbmQgZG8gbm90LgpGb3IgdGhleSBiaW5kIGhlYXZ5IGJ1cmRlbnMgYW5kIGdyaWV2b3VzIHRvIGJlIGJvcm5lLCBhbmQgbGF5IHRoZW0gb24gbWVuJ3Mgc2hvdWxkZXJzOyBidXQgdGhleSB0aGVtc2VsdmVzIHdpbGwgbm90IG1vdmUgdGhlbSB3aXRoIG9uZSBvZiB0aGVpciBmaW5nZXJzLgpCdXQgYWxsIHRoZWlyIHdvcmtzIHRoZXkgZG8gZm9yIHRvIGJlIHNlZW4gb2YgbWVuOiB0aGV5IG1ha2UgYnJvYWQgdGhlaXIgcGh5bGFjdGVyaWVzLCBhbmQgZW5sYXJnZSB0aGUgYm9yZGVycyBvZiB0aGVpciBnYXJtZW50cywKQW5kIGxvdmUgdGhlIHVwcGVybW9zdCByb29tcyBhdCBmZWFzdHMsIGFuZCB0aGUgY2hpZWYgc2VhdHMgaW4gdGhlIHN5bmFnb2d1ZXMsCkFuZCBncmVldGluZ3MgaW4gdGhlIG1hcmtldHMsIGFuZCB0byBiZSBjYWxsZWQgb2YgbWVuLCBSYWJiaSwgUmFiYmkuCkJ1dCBiZSBub3QgeWUgY2FsbGVkIFJhYmJpOiBmb3Igb25lIGlzIHlvdXIgTWFzdGVyLCBldmVuIENocmlzdDsgYW5kIGFsbCB5ZSBhcmUgYnJldGhyZW4uCkFuZCBjYWxsIG5vIG1hbiB5b3VyIGZhdGhlciB1cG9uIHRoZSBlYXJ0aDogZm9yIG9uZSBpcyB5b3VyIEZhdGhlciwgd2hpY2ggaXMgaW4gaGVhdmVuLgpOZWl0aGVyIGJlIHllIGNhbGxlZCBtYXN0ZXJzOiBmb3Igb25lIGlzIHlvdXIgTWFzdGVyLCBldmVuIENocmlzdC4KQnV0IGhlIHRoYXQgaXMgZ3JlYXRlc3QgYW1vbmcgeW91IHNoYWxsIGJlIHlvdXIgc2VydmFudC4KQW5kIHdob3NvZXZlciBzaGFsbCBleGFsdCBoaW1zZWxmIHNoYWxsIGJlIGFiYXNlZDsgYW5kIGhlIHRoYXQgc2hhbGwgaHVtYmxlIGhpbXNlbGYgc2hhbGwgYmUgZXhhbHRlZC4KQnV0IHdvZSB1bnRvIHlvdSwgc2NyaWJlcyBhbmQgUGhhcmlzZWVzLCBoeXBvY3JpdGVzISBmb3IgeWUgc2h1dCB1cCB0aGUga2luZ2RvbSBvZiBoZWF2ZW4gYWdhaW5zdCBtZW46IGZvciB5ZSBuZWl0aGVyIGdvIGluIHlvdXJzZWx2ZXMsIG5laXRoZXIgc3VmZmVyIHllIHRoZW0gdGhhdCBhcmUgZW50ZXJpbmcgdG8gZ28gaW4uCldvZSB1bnRvIHlvdSwgc2NyaWJlcyBhbmQgUGhhcmlzZWVzLCBoeXBvY3JpdGVzISBmb3IgeWUgZGV2b3VyIHdpZG93cycgaG91c2VzLCBhbmQgZm9yIGEgcHJldGVuY2UgbWFrZSBsb25nIHByYXllcjogdGhlcmVmb3JlIHllIHNoYWxsIHJlY2VpdmUgdGhlIGdyZWF0ZXIgZGFtbmF0aW9uLgpXb2UgdW50byB5b3UsIHNjcmliZXMgYW5kIFBoYXJpc2VlcywgaHlwb2NyaXRlcyEgZm9yIHllIGNvbXBhc3Mgc2VhIGFuZCBsYW5kIHRvIG1ha2Ugb25lIHByb3NlbHl0ZSwgYW5kIHdoZW4gaGUgaXMgbWFkZSwgeWUgbWFrZSBoaW0gdHdvZm9sZCBtb3JlIHRoZSBjaGlsZCBvZiBoZWxsIHRoYW4geW91cnNlbHZlcy4KV29lIHVudG8geW91LCB5ZSBibGluZCBndWlkZXMsIHdoaWNoIHNheSwgV2hvc29ldmVyIHNoYWxsIHN3ZWFyIGJ5IHRoZSB0ZW1wbGUsIGl0IGlzIG5vdGhpbmc7IGJ1dCB3aG9zb2V2ZXIgc2hhbGwgc3dlYXIgYnkgdGhlIGdvbGQgb2YgdGhlIHRlbXBsZSwgaGUgaXMgYSBkZWJ0b3IhClllIGZvb2xzIGFuZCBibGluZDogZm9yIHdoZXRoZXIgaXMgZ3JlYXRlciwgdGhlIGdvbGQsIG9yIHRoZSB0ZW1wbGUgdGhhdCBzYW5jdGlmaWV0aCB0aGUgZ29sZD8KQW5kLCBXaG9zb2V2ZXIgc2hhbGwgc3dlYXIgYnkgdGhlIGFsdGFyLCBpdCBpcyBub3RoaW5nOyBidXQgd2hvc29ldmVyIHN3ZWFyZXRoIGJ5IHRoZSBnaWZ0IHRoYXQgaXMgdXBvbiBpdCwgaGUgaXMgZ3VpbHR5LgpZZSBmb29scyBhbmQgYmxpbmQ6IGZvciB3aGV0aGVyIGlzIGdyZWF0ZXIsIHRoZSBnaWZ0LCBvciB0aGUgYWx0YXIgdGhhdCBzYW5jdGlmaWV0aCB0aGUgZ2lmdD8KV2hvc28gdGhlcmVmb3JlIHNoYWxsIHN3ZWFyIGJ5IHRoZSBhbHRhciwgc3dlYXJldGggYnkgaXQsIGFuZCBieSBhbGwgdGhpbmdzIHRoZXJlb24uCkFuZCB3aG9zbyBzaGFsbCBzd2VhciBieSB0aGUgdGVtcGxlLCBzd2VhcmV0aCBieSBpdCwgYW5kIGJ5IGhpbSB0aGF0IGR3ZWxsZXRoIHRoZXJlaW4uCkFuZCBoZSB0aGF0IHNoYWxsIHN3ZWFyIGJ5IGhlYXZlbiwgc3dlYXJldGggYnkgdGhlIHRocm9uZSBvZiBHb2QsIGFuZCBieSBoaW0gdGhhdCBzaXR0ZXRoIHRoZXJlb24uCldvZSB1bnRvIHlvdSwgc2NyaWJlcyBhbmQgUGhhcmlzZWVzLCBoeXBvY3JpdGVzISBmb3IgeWUgcGF5IHRpdGhlIG9mIG1pbnQgYW5kIGFuaXNlIGFuZCBjdW1taW4sIGFuZCBoYXZlIG9taXR0ZWQgdGhlIHdlaWdodGllciBtYXR0ZXJzIG9mIHRoZSBsYXcsIGp1ZGdtZW50LCBtZXJjeSwgYW5kIGZhaXRoOiB0aGVzZSBvdWdodCB5ZSB0byBoYXZlIGRvbmUsIGFuZCBub3QgdG8gbGVhdmUgdGhlIG90aGVyIHVuZG9uZS4KWWUgYmxpbmQgZ3VpZGVzLCB3aGljaCBzdHJhaW4gYXQgYSBnbmF0LCBhbmQgc3dhbGxvdyBhIGNhbWVsLgpXb2UgdW50byB5b3UsIHNjcmliZXMgYW5kIFBoYXJpc2VlcywgaHlwb2NyaXRlcyEgZm9yIHllIG1ha2UgY2xlYW4gdGhlIG91dHNpZGUgb2YgdGhlIGN1cCBhbmQgb2YgdGhlIHBsYXR0ZXIsIGJ1dCB3aXRoaW4gdGhleSBhcmUgZnVsbCBvZiBleHRvcnRpb24gYW5kIGV4Y2Vzcy4KVGhvdSBibGluZCBQaGFyaXNlZSwgY2xlYW5zZSBmaXJzdCB0aGF0IHdoaWNoIGlzIHdpdGhpbiB0aGUgY3VwIGFuZCBwbGF0dGVyLCB0aGF0IHRoZSBvdXRzaWRlIG9mIHRoZW0gbWF5IGJlIGNsZWFuIGFsc28uCldvZSB1bnRvIHlvdSwgc2NyaWJlcyBhbmQgUGhhcmlzZWVzLCBoeXBvY3JpdGVzISBmb3IgeWUgYXJlIGxpa2UgdW50byB3aGl0ZWQgc2VwdWxjaHJlcywgd2hpY2ggaW5kZWVkIGFwcGVhciBiZWF1dGlmdWwgb3V0d2FyZCwgYnV0IGFyZSB3aXRoaW4gZnVsbCBvZiBkZWFkIG1lbidzIGJvbmVzLCBhbmQgb2YgYWxsIHVuY2xlYW5uZXNzLgpFdmVuIHNvIHllIGFsc28gb3V0d2FyZGx5IGFwcGVhciByaWdodGVvdXMgdW50byBtZW4sIGJ1dCB3aXRoaW4geWUgYXJlIGZ1bGwgb2YgaHlwb2NyaXN5IGFuZCBpbmlxdWl0eS4KV29lIHVudG8geW91LCBzY3JpYmVzIGFuZCBQaGFyaXNlZXMsIGh5cG9jcml0ZXMhIGJlY2F1c2UgeWUgYnVpbGQgdGhlIHRvbWJzIG9mIHRoZSBwcm9waGV0cywgYW5kIGdhcm5pc2ggdGhlIHNlcHVsY2hyZXMgb2YgdGhlIHJpZ2h0ZW91cywKQW5kIHNheSwgSWYgd2UgaGFkIGJlZW4gaW4gdGhlIGRheXMgb2Ygb3VyIGZhdGhlcnMsIHdlIHdvdWxkIG5vdCBoYXZlIGJlZW4gcGFydGFrZXJzIHdpdGggdGhlbSBpbiB0aGUgYmxvb2Qgb2YgdGhlIHByb3BoZXRzLgpXaGVyZWZvcmUgeWUgYmUgd2l0bmVzc2VzIHVudG8geW91cnNlbHZlcywgdGhhdCB5ZSBhcmUgdGhlIGNoaWxkcmVuIG9mIHRoZW0gd2hpY2gga2lsbGVkIHRoZSBwcm9waGV0cy4KRmlsbCB5ZSB1cCB0aGVuIHRoZSBtZWFzdXJlIG9mIHlvdXIgZmF0aGVycy4KWWUgc2VycGVudHMsIHllIGdlbmVyYXRpb24gb2YgdmlwZXJzLCBob3cgY2FuIHllIGVzY2FwZSB0aGUgZGFtbmF0aW9uIG9mIGhlbGw/CldoZXJlZm9yZSwgYmVob2xkLCBJIHNlbmQgdW50byB5b3UgcHJvcGhldHMsIGFuZCB3aXNlIG1lbiwgYW5kIHNjcmliZXM6IGFuZCBzb21lIG9mIHRoZW0geWUgc2hhbGwga2lsbCBhbmQgY3J1Y2lmeTsgYW5kIHNvbWUgb2YgdGhlbSBzaGFsbCB5ZSBzY291cmdlIGluIHlvdXIgc3luYWdvZ3VlcywgYW5kIHBlcnNlY3V0ZSB0aGVtIGZyb20gY2l0eSB0byBjaXR5OgpUaGF0IHVwb24geW91IG1heSBjb21lIGFsbCB0aGUgcmlnaHRlb3VzIGJsb29kIHNoZWQgdXBvbiB0aGUgZWFydGgsIGZyb20gdGhlIGJsb29kIG9mIHJpZ2h0ZW91cyBBYmVsIHVudG8gdGhlIGJsb29kIG9mIFphY2hhcmlhcyBzb24gb2YgQmFyYWNoaWFzLCB3aG9tIHllIHNsZXcgYmV0d2VlbiB0aGUgdGVtcGxlIGFuZCB0aGUgYWx0YXIuClZlcmlseSBJIHNheSB1bnRvIHlvdSwgQWxsIHRoZXNlIHRoaW5ncyBzaGFsbCBjb21lIHVwb24gdGhpcyBnZW5lcmF0aW9uLgpPIEplcnVzYWxlbSwgSmVydXNhbGVtLCB0aG91IHRoYXQga2lsbGVzdCB0aGUgcHJvcGhldHMsIGFuZCBzdG9uZXN0IHRoZW0gd2hpY2ggYXJlIHNlbnQgdW50byB0aGVlLCBob3cgb2Z0ZW4gd291bGQgSSBoYXZlIGdhdGhlcmVkIHRoeSBjaGlsZHJlbiB0b2dldGhlciwgZXZlbiBhcyBhIGhlbiBnYXRoZXJldGggaGVyIGNoaWNrZW5zIHVuZGVyIGhlciB3aW5ncywgYW5kIHllIHdvdWxkIG5vdCEKQmVob2xkLCB5b3VyIGhvdXNlIGlzIGxlZnQgdW50byB5b3UgZGVzb2xhdGUuCkZvciBJIHNheSB1bnRvIHlvdSwgWWUgc2hhbGwgbm90IHNlZSBtZSBoZW5jZWZvcnRoLCB0aWxsIHllIHNoYWxsIHNheSwgQmxlc3NlZCBpcyBoZSB0aGF0IGNvbWV0aCBpbiB0aGUgbmFtZSBvZiB0aGUgTG9yZC4KQW5kIEplc3VzIHdlbnQgb3V0LCBhbmQgZGVwYXJ0ZWQgZnJvbSB0aGUgdGVtcGxlOiBhbmQgaGlzIGRpc2NpcGxlcyBjYW1lIHRvIGhpbSBmb3IgdG8gc2hldyBoaW0gdGhlIGJ1aWxkaW5ncyBvZiB0aGUgdGVtcGxlLgpBbmQgSmVzdXMgc2FpZCB1bnRvIHRoZW0sIFNlZSB5ZSBub3QgYWxsIHRoZXNlIHRoaW5ncz8gdmVyaWx5IEkgc2F5IHVudG8geW91LCBUaGVyZSBzaGFsbCBub3QgYmUgbGVmdCBoZXJlIG9uZSBzdG9uZSB1cG9uIGFub3RoZXIsIHRoYXQgc2hhbGwgbm90IGJlIHRocm93biBkb3duLgpBbmQgYXMgaGUgc2F0IHVwb24gdGhlIG1vdW50IG9mIE9saXZlcywgdGhlIGRpc2NpcGxlcyBjYW1lIHVudG8gaGltIHByaXZhdGVseSwgc2F5aW5nLCBUZWxsIHVzLCB3aGVuIHNoYWxsIHRoZXNlIHRoaW5ncyBiZT8gYW5kIHdoYXQgc2hhbGwgYmUgdGhlIHNpZ24gb2YgdGh5IGNvbWluZywgYW5kIG9mIHRoZSBlbmQgb2YgdGhlIHdvcmxkPwpBbmQgSmVzdXMgYW5zd2VyZWQgYW5kIHNhaWQgdW50byB0aGVtLCBUYWtlIGhlZWQgdGhhdCBubyBtYW4gZGVjZWl2ZSB5b3UuCkZvciBtYW55IHNoYWxsIGNvbWUgaW4gbXkgbmFtZSwgc2F5aW5nLCBJIGFtIENocmlzdDsgYW5kIHNoYWxsIGRlY2VpdmUgbWFueS4KQW5kIHllIHNoYWxsIGhlYXIgb2Ygd2FycyBhbmQgcnVtb3VycyBvZiB3YXJzOiBzZWUgdGhhdCB5ZSBiZSBub3QgdHJvdWJsZWQ6IGZvciBhbGwgdGhlc2UgdGhpbmdzIG11c3QgY29tZSB0byBwYXNzLCBidXQgdGhlIGVuZCBpcyBub3QgeWV0LgpGb3IgbmF0aW9uIHNoYWxsIHJpc2UgYWdhaW5zdCBuYXRpb24sIGFuZCBraW5nZG9tIGFnYWluc3Qga2luZ2RvbTogYW5kIHRoZXJlIHNoYWxsIGJlIGZhbWluZXMsIGFuZCBwZXN0aWxlbmNlcywgYW5kIGVhcnRocXVha2VzLCBpbiBkaXZlcnMgcGxhY2VzLgpBbGwgdGhlc2UgYXJlIHRoZSBiZWdpbm5pbmcgb2Ygc29ycm93cy4KVGhlbiBzaGFsbCB0aGV5IGRlbGl2ZXIgeW91IHVwIHRvIGJlIGFmZmxpY3RlZCwgYW5kIHNoYWxsIGtpbGwgeW91OiBhbmQgeWUgc2hhbGwgYmUgaGF0ZWQgb2YgYWxsIG5hdGlvbnMgZm9yIG15IG5hbWUncyBzYWtlLgpBbmQgdGhlbiBzaGFsbCBtYW55IGJlIG9mZmVuZGVkLCBhbmQgc2hhbGwgYmV0cmF5IG9uZSBhbm90aGVyLCBhbmQgc2hhbGwgaGF0ZSBvbmUgYW5vdGhlci4KQW5kIG1hbnkgZmFsc2UgcHJvcGhldHMgc2hhbGwgcmlzZSwgYW5kIHNoYWxsIGRlY2VpdmUgbWFueS4KQW5kIGJlY2F1c2UgaW5pcXVpdHkgc2hhbGwgYWJvdW5kLCB0aGUgbG92ZSBvZiBtYW55IHNoYWxsIHdheCBjb2xkLgpCdXQgaGUgdGhhdCBzaGFsbCBlbmR1cmUgdW50byB0aGUgZW5kLCB0aGUgc2FtZSBzaGFsbCBiZSBzYXZlZC4KQW5kIHRoaXMgZ29zcGVsIG9mIHRoZSBraW5nZG9tIHNoYWxsIGJlIHByZWFjaGVkIGluIGFsbCB0aGUgd29ybGQgZm9yIGEgd2l0bmVzcyB1bnRvIGFsbCBuYXRpb25zOyBhbmQgdGhlbiBzaGFsbCB0aGUgZW5kIGNvbWUuCldoZW4geWUgdGhlcmVmb3JlIHNoYWxsIHNlZSB0aGUgYWJvbWluYXRpb24gb2YgZGVzb2xhdGlvbiwgc3Bva2VuIG9mIGJ5IERhbmllbCB0aGUgcHJvcGhldCwgc3RhbmQgaW4gdGhlIGhvbHkgcGxhY2UsICh3aG9zbyByZWFkZXRoLCBsZXQgaGltIHVuZGVyc3RhbmQ6KQpUaGVuIGxldCB0aGVtIHdoaWNoIGJlIGluIEp1ZGFlYSBmbGVlIGludG8gdGhlIG1vdW50YWluczoKTGV0IGhpbSB3aGljaCBpcyBvbiB0aGUgaG91c2V0b3Agbm90IGNvbWUgZG93biB0byB0YWtlIGFueSB0aGluZyBvdXQgb2YgaGlzIGhvdXNlOgpOZWl0aGVyIGxldCBoaW0gd2hpY2ggaXMgaW4gdGhlIGZpZWxkIHJldHVybiBiYWNrIHRvIHRha2UgaGlzIGNsb3RoZXMuCkFuZCB3b2UgdW50byB0aGVtIHRoYXQgYXJlIHdpdGggY2hpbGQsIGFuZCB0byB0aGVtIHRoYXQgZ2l2ZSBzdWNrIGluIHRob3NlIGRheXMhCkJ1dCBwcmF5IHllIHRoYXQgeW91ciBmbGlnaHQgYmUgbm90IGluIHRoZSB3aW50ZXIsIG5laXRoZXIgb24gdGhlIHNhYmJhdGggZGF5OgpGb3IgdGhlbiBzaGFsbCBiZSBncmVhdCB0cmlidWxhdGlvbiwgc3VjaCBhcyB3YXMgbm90IHNpbmNlIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHdvcmxkIHRvIHRoaXMgdGltZSwgbm8sIG5vciBldmVyIHNoYWxsIGJlLgpBbmQgZXhjZXB0IHRob3NlIGRheXMgc2hvdWxkIGJlIHNob3J0ZW5lZCwgdGhlcmUgc2hvdWxkIG5vIGZsZXNoIGJlIHNhdmVkOiBidXQgZm9yIHRoZSBlbGVjdCdzIHNha2UgdGhvc2UgZGF5cyBzaGFsbCBiZSBzaG9ydGVuZWQuClRoZW4gaWYgYW55IG1hbiBzaGFsbCBzYXkgdW50byB5b3UsIExvLCBoZXJlIGlzIENocmlzdCwgb3IgdGhlcmU7IGJlbGlldmUgaXQgbm90LgpGb3IgdGhlcmUgc2hhbGwgYXJpc2UgZmFsc2UgQ2hyaXN0cywgYW5kIGZhbHNlIHByb3BoZXRzLCBhbmQgc2hhbGwgc2hldyBncmVhdCBzaWducyBhbmQgd29uZGVyczsgaW5zb211Y2ggdGhhdCwgaWYgaXQgd2VyZSBwb3NzaWJsZSwgdGhleSBzaGFsbCBkZWNlaXZlIHRoZSB2ZXJ5IGVsZWN0LgpCZWhvbGQsIEkgaGF2ZSB0b2xkIHlvdSBiZWZvcmUuCldoZXJlZm9yZSBpZiB0aGV5IHNoYWxsIHNheSB1bnRvIHlvdSwgQmVob2xkLCBoZSBpcyBpbiB0aGUgZGVzZXJ0OyBnbyBub3QgZm9ydGg6IGJlaG9sZCwgaGUgaXMgaW4gdGhlIHNlY3JldCBjaGFtYmVyczsgYmVsaWV2ZSBpdCBub3QuCkZvciBhcyB0aGUgbGlnaHRuaW5nIGNvbWV0aCBvdXQgb2YgdGhlIGVhc3QsIGFuZCBzaGluZXRoIGV2ZW4gdW50byB0aGUgd2VzdDsgc28gc2hhbGwgYWxzbyB0aGUgY29taW5nIG9mIHRoZSBTb24gb2YgbWFuIGJlLgpGb3Igd2hlcmVzb2V2ZXIgdGhlIGNhcmNhc2UgaXMsIHRoZXJlIHdpbGwgdGhlIGVhZ2xlcyBiZSBnYXRoZXJlZCB0b2dldGhlci4KSW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIHRyaWJ1bGF0aW9uIG9mIHRob3NlIGRheXMgc2hhbGwgdGhlIHN1biBiZSBkYXJrZW5lZCwgYW5kIHRoZSBtb29uIHNoYWxsIG5vdCBnaXZlIGhlciBsaWdodCwgYW5kIHRoZSBzdGFycyBzaGFsbCBmYWxsIGZyb20gaGVhdmVuLCBhbmQgdGhlIHBvd2VycyBvZiB0aGUgaGVhdmVucyBzaGFsbCBiZSBzaGFrZW46CkFuZCB0aGVuIHNoYWxsIGFwcGVhciB0aGUgc2lnbiBvZiB0aGUgU29uIG9mIG1hbiBpbiBoZWF2ZW46IGFuZCB0aGVuIHNoYWxsIGFsbCB0aGUgdHJpYmVzIG9mIHRoZSBlYXJ0aCBtb3VybiwgYW5kIHRoZXkgc2hhbGwgc2VlIHRoZSBTb24gb2YgbWFuIGNvbWluZyBpbiB0aGUgY2xvdWRzIG9mIGhlYXZlbiB3aXRoIHBvd2VyIGFuZCBncmVhdCBnbG9yeS4KQW5kIGhlIHNoYWxsIHNlbmQgaGlzIGFuZ2VscyB3aXRoIGEgZ3JlYXQgc291bmQgb2YgYSB0cnVtcGV0LCBhbmQgdGhleSBzaGFsbCBnYXRoZXIgdG9nZXRoZXIgaGlzIGVsZWN0IGZyb20gdGhlIGZvdXIgd2luZHMsIGZyb20gb25lIGVuZCBvZiBoZWF2ZW4gdG8gdGhlIG90aGVyLgpOb3cgbGVhcm4gYSBwYXJhYmxlIG9mIHRoZSBmaWcgdHJlZTsgV2hlbiBoaXMgYnJhbmNoIGlzIHlldCB0ZW5kZXIsIGFuZCBwdXR0ZXRoIGZvcnRoIGxlYXZlcywgeWUga25vdyB0aGF0IHN1bW1lciBpcyBuaWdoOgpTbyBsaWtld2lzZSB5ZSwgd2hlbiB5ZSBzaGFsbCBzZWUgYWxsIHRoZXNlIHRoaW5ncywga25vdyB0aGF0IGl0IGlzIG5lYXIsIGV2ZW4gYXQgdGhlIGRvb3JzLgpWZXJpbHkgSSBzYXkgdW50byB5b3UsIFRoaXMgZ2VuZXJhdGlvbiBzaGFsbCBub3QgcGFzcywgdGlsbCBhbGwgdGhlc2UgdGhpbmdzIGJlIGZ1bGZpbGxlZC4KSGVhdmVuIGFuZCBlYXJ0aCBzaGFsbCBwYXNzIGF3YXksIGJ1dCBteSB3b3JkcyBzaGFsbCBub3QgcGFzcyBhd2F5LgpCdXQgb2YgdGhhdCBkYXkgYW5kIGhvdXIga25vd2V0aCBubyBtYW4sIG5vLCBub3QgdGhlIGFuZ2VscyBvZiBoZWF2ZW4sIGJ1dCBteSBGYXRoZXIgb25seS4KQnV0IGFzIHRoZSBkYXlzIG9mIE5vZSB3ZXJlLCBzbyBzaGFsbCBhbHNvIHRoZSBjb21pbmcgb2YgdGhlIFNvbiBvZiBtYW4gYmUuCkZvciBhcyBpbiB0aGUgZGF5cyB0aGF0IHdlcmUgYmVmb3JlIHRoZSBmbG9vZCB0aGV5IHdlcmUgZWF0aW5nIGFuZCBkcmlua2luZywgbWFycnlpbmcgYW5kIGdpdmluZyBpbiBtYXJyaWFnZSwgdW50aWwgdGhlIGRheSB0aGF0IE5vZSBlbnRlcmVkIGludG8gdGhlIGFyaywKQW5kIGtuZXcgbm90IHVudGlsIHRoZSBmbG9vZCBjYW1lLCBhbmQgdG9vayB0aGVtIGFsbCBhd2F5OyBzbyBzaGFsbCBhbHNvIHRoZSBjb21pbmcgb2YgdGhlIFNvbiBvZiBtYW4gYmUuClRoZW4gc2hhbGwgdHdvIGJlIGluIHRoZSBmaWVsZDsgdGhlIG9uZSBzaGFsbCBiZSB0YWtlbiwgYW5kIHRoZSBvdGhlciBsZWZ0LgpUd28gd29tZW4gc2hhbGwgYmUgZ3JpbmRpbmcgYXQgdGhlIG1pbGw7IHRoZSBvbmUgc2hhbGwgYmUgdGFrZW4sIGFuZCB0aGUgb3RoZXIgbGVmdC4KV2F0Y2ggdGhlcmVmb3JlOiBmb3IgeWUga25vdyBub3Qgd2hhdCBob3VyIHlvdXIgTG9yZCBkb3RoIGNvbWUuCkJ1dCBrbm93IHRoaXMsIHRoYXQgaWYgdGhlIGdvb2RtYW4gb2YgdGhlIGhvdXNlIGhhZCBrbm93biBpbiB3aGF0IHdhdGNoIHRoZSB0aGllZiB3b3VsZCBjb21lLCBoZSB3b3VsZCBoYXZlIHdhdGNoZWQsIGFuZCB3b3VsZCBub3QgaGF2ZSBzdWZmZXJlZCBoaXMgaG91c2UgdG8gYmUgYnJva2VuIHVwLgpUaGVyZWZvcmUgYmUgeWUgYWxzbyByZWFkeTogZm9yIGluIHN1Y2ggYW4gaG91ciBhcyB5ZSB0aGluayBub3QgdGhlIFNvbiBvZiBtYW4gY29tZXRoLgpXaG8gdGhlbiBpcyBhIGZhaXRoZnVsIGFuZCB3aXNlIHNlcnZhbnQsIHdob20gaGlzIGxvcmQgaGF0aCBtYWRlIHJ1bGVyIG92ZXIgaGlzIGhvdXNlaG9sZCwgdG8gZ2l2ZSB0aGVtIG1lYXQgaW4gZHVlIHNlYXNvbj8KQmxlc3NlZCBpcyB0aGF0IHNlcnZhbnQsIHdob20gaGlzIGxvcmQgd2hlbiBoZSBjb21ldGggc2hhbGwgZmluZCBzbyBkb2luZy4KVmVyaWx5IEkgc2F5IHVudG8geW91LCBUaGF0IGhlIHNoYWxsIG1ha2UgaGltIHJ1bGVyIG92ZXIgYWxsIGhpcyBnb29kcy4KQnV0IGFuZCBpZiB0aGF0IGV2aWwgc2VydmFudCBzaGFsbCBzYXkgaW4gaGlzIGhlYXJ0LCBNeSBsb3JkIGRlbGF5ZXRoIGhpcyBjb21pbmc7CkFuZCBzaGFsbCBiZWdpbiB0byBzbWl0ZSBoaXMgZmVsbG93c2VydmFudHMsIGFuZCB0byBlYXQgYW5kIGRyaW5rIHdpdGggdGhlIGRydW5rZW47ClRoZSBsb3JkIG9mIHRoYXQgc2VydmFudCBzaGFsbCBjb21lIGluIGEgZGF5IHdoZW4gaGUgbG9va2V0aCBub3QgZm9yIGhpbSwgYW5kIGluIGFuIGhvdXIgdGhhdCBoZSBpcyBub3QgYXdhcmUgb2YsCkFuZCBzaGFsbCBjdXQgaGltIGFzdW5kZXIsIGFuZCBhcHBvaW50IGhpbSBoaXMgcG9ydGlvbiB3aXRoIHRoZSBoeXBvY3JpdGVzOiB0aGVyZSBzaGFsbCBiZSB3ZWVwaW5nIGFuZCBnbmFzaGluZyBvZiB0ZWV0aC4KVGhlbiBzaGFsbCB0aGUga2luZ2RvbSBvZiBoZWF2ZW4gYmUgbGlrZW5lZCB1bnRvIHRlbiB2aXJnaW5zLCB3aGljaCB0b29rIHRoZWlyIGxhbXBzLCBhbmQgd2VudCBmb3J0aCB0byBtZWV0IHRoZSBicmlkZWdyb29tLgpBbmQgZml2ZSBvZiB0aGVtIHdlcmUgd2lzZSwgYW5kIGZpdmUgd2VyZSBmb29saXNoLgpUaGV5IHRoYXQgd2VyZSBmb29saXNoIHRvb2sgdGhlaXIgbGFtcHMsIGFuZCB0b29rIG5vIG9pbCB3aXRoIHRoZW06CkJ1dCB0aGUgd2lzZSB0b29rIG9pbCBpbiB0aGVpciB2ZXNzZWxzIHdpdGggdGhlaXIgbGFtcHMuCldoaWxlIHRoZSBicmlkZWdyb29tIHRhcnJpZWQsIHRoZXkgYWxsIHNsdW1iZXJlZCBhbmQgc2xlcHQuCkFuZCBhdCBtaWRuaWdodCB0aGVyZSB3YXMgYSBjcnkgbWFkZSwgQmVob2xkLCB0aGUgYnJpZGVncm9vbSBjb21ldGg7IGdvIHllIG91dCB0byBtZWV0IGhpbS4KVGhlbiBhbGwgdGhvc2UgdmlyZ2lucyBhcm9zZSwgYW5kIHRyaW1tZWQgdGhlaXIgbGFtcHMuCkFuZCB0aGUgZm9vbGlzaCBzYWlkIHVudG8gdGhlIHdpc2UsIEdpdmUgdXMgb2YgeW91ciBvaWw7IGZvciBvdXIgbGFtcHMgYXJlIGdvbmUgb3V0LgpCdXQgdGhlIHdpc2UgYW5zd2VyZWQsIHNheWluZywgTm90IHNvOyBsZXN0IHRoZXJlIGJlIG5vdCBlbm91Z2ggZm9yIHVzIGFuZCB5b3U6IGJ1dCBnbyB5ZSByYXRoZXIgdG8gdGhlbSB0aGF0IHNlbGwsIGFuZCBidXkgZm9yIHlvdXJzZWx2ZXMuCkFuZCB3aGlsZSB0aGV5IHdlbnQgdG8gYnV5LCB0aGUgYnJpZGVncm9vbSBjYW1lOyBhbmQgdGhleSB0aGF0IHdlcmUgcmVhZHkgd2VudCBpbiB3aXRoIGhpbSB0byB0aGUgbWFycmlhZ2U6IGFuZCB0aGUgZG9vciB3YXMgc2h1dC4KQWZ0ZXJ3YXJkIGNhbWUgYWxzbyB0aGUgb3RoZXIgdmlyZ2lucywgc2F5aW5nLCBMb3JkLCBMb3JkLCBvcGVuIHRvIHVzLgpCdXQgaGUgYW5zd2VyZWQgYW5kIHNhaWQsIFZlcmlseSBJIHNheSB1bnRvIHlvdSwgSSBrbm93IHlvdSBub3QuCldhdGNoIHRoZXJlZm9yZSwgZm9yIHllIGtub3cgbmVpdGhlciB0aGUgZGF5IG5vciB0aGUgaG91ciB3aGVyZWluIHRoZSBTb24gb2YgbWFuIGNvbWV0aC4KRm9yIHRoZSBraW5nZG9tIG9mIGhlYXZlbiBpcyBhcyBhIG1hbiB0cmF2ZWxsaW5nIGludG8gYSBmYXIgY291bnRyeSwgd2hvIGNhbGxlZCBoaXMgb3duIHNlcnZhbnRzLCBhbmQgZGVsaXZlcmVkIHVudG8gdGhlbSBoaXMgZ29vZHMuCkFuZCB1bnRvIG9uZSBoZSBnYXZlIGZpdmUgdGFsZW50cywgdG8gYW5vdGhlciB0d28sIGFuZCB0byBhbm90aGVyIG9uZTsgdG8gZXZlcnkgbWFuIGFjY29yZGluZyB0byBoaXMgc2V2ZXJhbCBhYmlsaXR5OyBhbmQgc3RyYWlnaHR3YXkgdG9vayBoaXMgam91cm5leS4KVGhlbiBoZSB0aGF0IGhhZCByZWNlaXZlZCB0aGUgZml2ZSB0YWxlbnRzIHdlbnQgYW5kIHRyYWRlZCB3aXRoIHRoZSBzYW1lLCBhbmQgbWFkZSB0aGVtIG90aGVyIGZpdmUgdGFsZW50cy4KQW5kIGxpa2V3aXNlIGhlIHRoYXQgaGFkIHJlY2VpdmVkIHR3bywgaGUgYWxzbyBnYWluZWQgb3RoZXIgdHdvLgpCdXQgaGUgdGhhdCBoYWQgcmVjZWl2ZWQgb25lIHdlbnQgYW5kIGRpZ2dlZCBpbiB0aGUgZWFydGgsIGFuZCBoaWQgaGlzIGxvcmQncyBtb25leS4KQWZ0ZXIgYSBsb25nIHRpbWUgdGhlIGxvcmQgb2YgdGhvc2Ugc2VydmFudHMgY29tZXRoLCBhbmQgcmVja29uZXRoIHdpdGggdGhlbS4KQW5kIHNvIGhlIHRoYXQgaGFkIHJlY2VpdmVkIGZpdmUgdGFsZW50cyBjYW1lIGFuZCBicm91Z2h0IG90aGVyIGZpdmUgdGFsZW50cywgc2F5aW5nLCBMb3JkLCB0aG91IGRlbGl2ZXJlZHN0IHVudG8gbWUgZml2ZSB0YWxlbnRzOiBiZWhvbGQsIEkgaGF2ZSBnYWluZWQgYmVzaWRlIHRoZW0gZml2ZSB0YWxlbnRzIG1vcmUuCkhpcyBsb3JkIHNhaWQgdW50byBoaW0sIFdlbGwgZG9uZSwgdGhvdSBnb29kIGFuZCBmYWl0aGZ1bCBzZXJ2YW50OiB0aG91IGhhc3QgYmVlbiBmYWl0aGZ1bCBvdmVyIGEgZmV3IHRoaW5ncywgSSB3aWxsIG1ha2UgdGhlZSBydWxlciBvdmVyIG1hbnkgdGhpbmdzOiBlbnRlciB0aG91IGludG8gdGhlIGpveSBvZiB0aHkgbG9yZC4KSGUgYWxzbyB0aGF0IGhhZCByZWNlaXZlZCB0d28gdGFsZW50cyBjYW1lIGFuZCBzYWlkLCBMb3JkLCB0aG91IGRlbGl2ZXJlZHN0IHVudG8gbWUgdHdvIHRhbGVudHM6IGJlaG9sZCwgSSBoYXZlIGdhaW5lZCB0d28gb3RoZXIgdGFsZW50cyBiZXNpZGUgdGhlbS4KSGlzIGxvcmQgc2FpZCB1bnRvIGhpbSwgV2VsbCBkb25lLCBnb29kIGFuZCBmYWl0aGZ1bCBzZXJ2YW50OyB0aG91IGhhc3QgYmVlbiBmYWl0aGZ1bCBvdmVyIGEgZmV3IHRoaW5ncywgSSB3aWxsIG1ha2UgdGhlZSBydWxlciBvdmVyIG1hbnkgdGhpbmdzOiBlbnRlciB0aG91IGludG8gdGhlIGpveSBvZiB0aHkgbG9yZC4KVGhlbiBoZSB3aGljaCBoYWQgcmVjZWl2ZWQgdGhlIG9uZSB0YWxlbnQgY2FtZSBhbmQgc2FpZCwgTG9yZCwgSSBrbmV3IHRoZWUgdGhhdCB0aG91IGFydCBhbiBoYXJkIG1hbiwgcmVhcGluZyB3aGVyZSB0aG91IGhhc3Qgbm90IHNvd24sIGFuZCBnYXRoZXJpbmcgd2hlcmUgdGhvdSBoYXN0IG5vdCBzdHJhd2VkOgpBbmQgSSB3YXMgYWZyYWlkLCBhbmQgd2VudCBhbmQgaGlkIHRoeSB0YWxlbnQgaW4gdGhlIGVhcnRoOiBsbywgdGhlcmUgdGhvdSBoYXN0IHRoYXQgaXMgdGhpbmUuCkhpcyBsb3JkIGFuc3dlcmVkIGFuZCBzYWlkIHVudG8gaGltLCBUaG91IHdpY2tlZCBhbmQgc2xvdGhmdWwgc2VydmFudCwgdGhvdSBrbmV3ZXN0IHRoYXQgSSByZWFwIHdoZXJlIEkgc293ZWQgbm90LCBhbmQgZ2F0aGVyIHdoZXJlIEkgaGF2ZSBub3Qgc3RyYXdlZDoKVGhvdSBvdWdodGVzdCB0aGVyZWZvcmUgdG8gaGF2ZSBwdXQgbXkgbW9uZXkgdG8gdGhlIGV4Y2hhbmdlcnMsIGFuZCB0aGVuIGF0IG15IGNvbWluZyBJIHNob3VsZCBoYXZlIHJlY2VpdmVkIG1pbmUgb3duIHdpdGggdXN1cnkuClRha2UgdGhlcmVmb3JlIHRoZSB0YWxlbnQgZnJvbSBoaW0sIGFuZCBnaXZlIGl0IHVudG8gaGltIHdoaWNoIGhhdGggdGVuIHRhbGVudHMuCkZvciB1bnRvIGV2ZXJ5IG9uZSB0aGF0IGhhdGggc2hhbGwgYmUgZ2l2ZW4sIGFuZCBoZSBzaGFsbCBoYXZlIGFidW5kYW5jZTogYnV0IGZyb20gaGltIHRoYXQgaGF0aCBub3Qgc2hhbGwgYmUgdGFrZW4gYXdheSBldmVuIHRoYXQgd2hpY2ggaGUgaGF0aC4KQW5kIGNhc3QgeWUgdGhlIHVucHJvZml0YWJsZSBzZXJ2YW50IGludG8gb3V0ZXIgZGFya25lc3M6IHRoZXJlIHNoYWxsIGJlIHdlZXBpbmcgYW5kIGduYXNoaW5nIG9mIHRlZXRoLgpXaGVuIHRoZSBTb24gb2YgbWFuIHNoYWxsIGNvbWUgaW4gaGlzIGdsb3J5LCBhbmQgYWxsIHRoZSBob2x5IGFuZ2VscyB3aXRoIGhpbSwgdGhlbiBzaGFsbCBoZSBzaXQgdXBvbiB0aGUgdGhyb25lIG9mIGhpcyBnbG9yeToKQW5kIGJlZm9yZSBoaW0gc2hhbGwgYmUgZ2F0aGVyZWQgYWxsIG5hdGlvbnM6IGFuZCBoZSBzaGFsbCBzZXBhcmF0ZSB0aGVtIG9uZSBmcm9tIGFub3RoZXIsIGFzIGEgc2hlcGhlcmQgZGl2aWRldGggaGlzIHNoZWVwIGZyb20gdGhlIGdvYXRzOgpBbmQgaGUgc2hhbGwgc2V0IHRoZSBzaGVlcCBvbiBoaXMgcmlnaHQgaGFuZCwgYnV0IHRoZSBnb2F0cyBvbiB0aGUgbGVmdC4KVGhlbiBzaGFsbCB0aGUgS2luZyBzYXkgdW50byB0aGVtIG9uIGhpcyByaWdodCBoYW5kLCBDb21lLCB5ZSBibGVzc2VkIG9mIG15IEZhdGhlciwgaW5oZXJpdCB0aGUga2luZ2RvbSBwcmVwYXJlZCBmb3IgeW91IGZyb20gdGhlIGZvdW5kYXRpb24gb2YgdGhlIHdvcmxkOgpGb3IgSSB3YXMgYW4gaHVuZ3JlZCwgYW5kIHllIGdhdmUgbWUgbWVhdDogSSB3YXMgdGhpcnN0eSwgYW5kIHllIGdhdmUgbWUgZHJpbms6IEkgd2FzIGEgc3RyYW5nZXIsIGFuZCB5ZSB0b29rIG1lIGluOgpOYWtlZCwgYW5kIHllIGNsb3RoZWQgbWU6IEkgd2FzIHNpY2ssIGFuZCB5ZSB2aXNpdGVkIG1lOiBJIHdhcyBpbiBwcmlzb24sIGFuZCB5ZSBjYW1lIHVudG8gbWUuClRoZW4gc2hhbGwgdGhlIHJpZ2h0ZW91cyBhbnN3ZXIgaGltLCBzYXlpbmcsIExvcmQsIHdoZW4gc2F3IHdlIHRoZWUgYW4gaHVuZ3JlZCwgYW5kIGZlZCB0aGVlPyBvciB0aGlyc3R5LCBhbmQgZ2F2ZSB0aGVlIGRyaW5rPwpXaGVuIHNhdyB3ZSB0aGVlIGEgc3RyYW5nZXIsIGFuZCB0b29rIHRoZWUgaW4/IG9yIG5ha2VkLCBhbmQgY2xvdGhlZCB0aGVlPwpPciB3aGVuIHNhdyB3ZSB0aGVlIHNpY2ssIG9yIGluIHByaXNvbiwgYW5kIGNhbWUgdW50byB0aGVlPwpBbmQgdGhlIEtpbmcgc2hhbGwgYW5zd2VyIGFuZCBzYXkgdW50byB0aGVtLCBWZXJpbHkgSSBzYXkgdW50byB5b3UsIEluYXNtdWNoIGFzIHllIGhhdmUgZG9uZSBpdCB1bnRvIG9uZSBvZiB0aGUgbGVhc3Qgb2YgdGhlc2UgbXkgYnJldGhyZW4sIHllIGhhdmUgZG9uZSBpdCB1bnRvIG1lLgpUaGVuIHNoYWxsIGhlIHNheSBhbHNvIHVudG8gdGhlbSBvbiB0aGUgbGVmdCBoYW5kLCBEZXBhcnQgZnJvbSBtZSwgeWUgY3Vyc2VkLCBpbnRvIGV2ZXJsYXN0aW5nIGZpcmUsIHByZXBhcmVkIGZvciB0aGUgZGV2aWwgYW5kIGhpcyBhbmdlbHM6CkZvciBJIHdhcyBhbiBodW5ncmVkLCBhbmQgeWUgZ2F2ZSBtZSBubyBtZWF0OiBJIHdhcyB0aGlyc3R5LCBhbmQgeWUgZ2F2ZSBtZSBubyBkcmluazoKSSB3YXMgYSBzdHJhbmdlciwgYW5kIHllIHRvb2sgbWUgbm90IGluOiBuYWtlZCwgYW5kIHllIGNsb3RoZWQgbWUgbm90OiBzaWNrLCBhbmQgaW4gcHJpc29uLCBhbmQgeWUgdmlzaXRlZCBtZSBub3QuClRoZW4gc2hhbGwgdGhleSBhbHNvIGFuc3dlciBoaW0sIHNheWluZywgTG9yZCwgd2hlbiBzYXcgd2UgdGhlZSBhbiBodW5ncmVkLCBvciBhdGhpcnN0LCBvciBhIHN0cmFuZ2VyLCBvciBuYWtlZCwgb3Igc2ljaywgb3IgaW4gcHJpc29uLCBhbmQgZGlkIG5vdCBtaW5pc3RlciB1bnRvIHRoZWU/ClRoZW4gc2hhbGwgaGUgYW5zd2VyIHRoZW0sIHNheWluZywgVmVyaWx5IEkgc2F5IHVudG8geW91LCBJbmFzbXVjaCBhcyB5ZSBkaWQgaXQgbm90IHRvIG9uZSBvZiB0aGUgbGVhc3Qgb2YgdGhlc2UsIHllIGRpZCBpdCBub3QgdG8gbWUuCkFuZCB0aGVzZSBzaGFsbCBnbyBhd2F5IGludG8gZXZlcmxhc3RpbmcgcHVuaXNobWVudDogYnV0IHRoZSByaWdodGVvdXMgaW50byBsaWZlIGV0ZXJuYWwuCkFuZCBpdCBjYW1lIHRvIHBhc3MsIHdoZW4gSmVzdXMgaGFkIGZpbmlzaGVkIGFsbCB0aGVzZSBzYXlpbmdzLCBoZSBzYWlkIHVudG8gaGlzIGRpc2NpcGxlcywKWWUga25vdyB0aGF0IGFmdGVyIHR3byBkYXlzIGlzIHRoZSBmZWFzdCBvZiB0aGUgcGFzc292ZXIsIGFuZCB0aGUgU29uIG9mIG1hbiBpcyBiZXRyYXllZCB0byBiZSBjcnVjaWZpZWQuClRoZW4gYXNzZW1ibGVkIHRvZ2V0aGVyIHRoZSBjaGllZiBwcmllc3RzLCBhbmQgdGhlIHNjcmliZXMsIGFuZCB0aGUgZWxkZXJzIG9mIHRoZSBwZW9wbGUsIHVudG8gdGhlIHBhbGFjZSBvZiB0aGUgaGlnaCBwcmllc3QsIHdobyB3YXMgY2FsbGVkIENhaWFwaGFzLApBbmQgY29uc3VsdGVkIHRoYXQgdGhleSBtaWdodCB0YWtlIEplc3VzIGJ5IHN1YnRpbHR5LCBhbmQga2lsbCBoaW0uCkJ1dCB0aGV5IHNhaWQsIE5vdCBvbiB0aGUgZmVhc3QgZGF5LCBsZXN0IHRoZXJlIGJlIGFuIHVwcm9hciBhbW9uZyB0aGUgcGVvcGxlLgpOb3cgd2hlbiBKZXN1cyB3YXMgaW4gQmV0aGFueSwgaW4gdGhlIGhvdXNlIG9mIFNpbW9uIHRoZSBsZXBlciwKVGhlcmUgY2FtZSB1bnRvIGhpbSBhIHdvbWFuIGhhdmluZyBhbiBhbGFiYXN0ZXIgYm94IG9mIHZlcnkgcHJlY2lvdXMgb2ludG1lbnQsIGFuZCBwb3VyZWQgaXQgb24gaGlzIGhlYWQsIGFzIGhlIHNhdCBhdCBtZWF0LgpCdXQgd2hlbiBoaXMgZGlzY2lwbGVzIHNhdyBpdCwgdGhleSBoYWQgaW5kaWduYXRpb24sIHNheWluZywgVG8gd2hhdCBwdXJwb3NlIGlzIHRoaXMgd2FzdGU/CkZvciB0aGlzIG9pbnRtZW50IG1pZ2h0IGhhdmUgYmVlbiBzb2xkIGZvciBtdWNoLCBhbmQgZ2l2ZW4gdG8gdGhlIHBvb3IuCldoZW4gSmVzdXMgdW5kZXJzdG9vZCBpdCwgaGUgc2FpZCB1bnRvIHRoZW0sIFdoeSB0cm91YmxlIHllIHRoZSB3b21hbj8gZm9yIHNoZSBoYXRoIHdyb3VnaHQgYSBnb29kIHdvcmsgdXBvbiBtZS4KRm9yIHllIGhhdmUgdGhlIHBvb3IgYWx3YXlzIHdpdGggeW91OyBidXQgbWUgeWUgaGF2ZSBub3QgYWx3YXlzLgpGb3IgaW4gdGhhdCBzaGUgaGF0aCBwb3VyZWQgdGhpcyBvaW50bWVudCBvbiBteSBib2R5LCBzaGUgZGlkIGl0IGZvciBteSBidXJpYWwuClZlcmlseSBJIHNheSB1bnRvIHlvdSwgV2hlcmVzb2V2ZXIgdGhpcyBnb3NwZWwgc2hhbGwgYmUgcHJlYWNoZWQgaW4gdGhlIHdob2xlIHdvcmxkLCB0aGVyZSBzaGFsbCBhbHNvIHRoaXMsIHRoYXQgdGhpcyB3b21hbiBoYXRoIGRvbmUsIGJlIHRvbGQgZm9yIGEgbWVtb3JpYWwgb2YgaGVyLgpUaGVuIG9uZSBvZiB0aGUgdHdlbHZlLCBjYWxsZWQgSnVkYXMgSXNjYXJpb3QsIHdlbnQgdW50byB0aGUgY2hpZWYgcHJpZXN0cywKQW5kIHNhaWQgdW50byB0aGVtLCBXaGF0IHdpbGwgeWUgZ2l2ZSBtZSwgYW5kIEkgd2lsbCBkZWxpdmVyIGhpbSB1bnRvIHlvdT8gQW5kIHRoZXkgY292ZW5hbnRlZCB3aXRoIGhpbSBmb3IgdGhpcnR5IHBpZWNlcyBvZiBzaWx2ZXIuCkFuZCBmcm9tIHRoYXQgdGltZSBoZSBzb3VnaHQgb3Bwb3J0dW5pdHkgdG8gYmV0cmF5IGhpbS4KTm93IHRoZSBmaXJzdCBkYXkgb2YgdGhlIGZlYXN0IG9mIHVubGVhdmVuZWQgYnJlYWQgdGhlIGRpc2NpcGxlcyBjYW1lIHRvIEplc3VzLCBzYXlpbmcgdW50byBoaW0sIFdoZXJlIHdpbHQgdGhvdSB0aGF0IHdlIHByZXBhcmUgZm9yIHRoZWUgdG8gZWF0IHRoZSBwYXNzb3Zlcj8KQW5kIGhlIHNhaWQsIEdvIGludG8gdGhlIGNpdHkgdG8gc3VjaCBhIG1hbiwgYW5kIHNheSB1bnRvIGhpbSwgVGhlIE1hc3RlciBzYWl0aCwgTXkgdGltZSBpcyBhdCBoYW5kOyBJIHdpbGwga2VlcCB0aGUgcGFzc292ZXIgYXQgdGh5IGhvdXNlIHdpdGggbXkgZGlzY2lwbGVzLgpBbmQgdGhlIGRpc2NpcGxlcyBkaWQgYXMgSmVzdXMgaGFkIGFwcG9pbnRlZCB0aGVtOyBhbmQgdGhleSBtYWRlIHJlYWR5IHRoZSBwYXNzb3Zlci4KTm93IHdoZW4gdGhlIGV2ZW4gd2FzIGNvbWUsIGhlIHNhdCBkb3duIHdpdGggdGhlIHR3ZWx2ZS4KQW5kIGFzIHRoZXkgZGlkIGVhdCwgaGUgc2FpZCwgVmVyaWx5IEkgc2F5IHVudG8geW91LCB0aGF0IG9uZSBvZiB5b3Ugc2hhbGwgYmV0cmF5IG1lLgpBbmQgdGhleSB3ZXJlIGV4Y2VlZGluZyBzb3Jyb3dmdWwsIGFuZCBiZWdhbiBldmVyeSBvbmUgb2YgdGhlbSB0byBzYXkgdW50byBoaW0sIExvcmQsIGlzIGl0IEk/CkFuZCBoZSBhbnN3ZXJlZCBhbmQgc2FpZCwgSGUgdGhhdCBkaXBwZXRoIGhpcyBoYW5kIHdpdGggbWUgaW4gdGhlIGRpc2gsIHRoZSBzYW1lIHNoYWxsIGJldHJheSBtZS4KVGhlIFNvbiBvZiBtYW4gZ29ldGggYXMgaXQgaXMgd3JpdHRlbiBvZiBoaW06IGJ1dCB3b2UgdW50byB0aGF0IG1hbiBieSB3aG9tIHRoZSBTb24gb2YgbWFuIGlzIGJldHJheWVkISBpdCBoYWQgYmVlbiBnb29kIGZvciB0aGF0IG1hbiBpZiBoZSBoYWQgbm90IGJlZW4gYm9ybi4KVGhlbiBKdWRhcywgd2hpY2ggYmV0cmF5ZWQgaGltLCBhbnN3ZXJlZCBhbmQgc2FpZCwgTWFzdGVyLCBpcyBpdCBJPyBIZSBzYWlkIHVudG8gaGltLCBUaG91IGhhc3Qgc2FpZC4KQW5kIGFzIHRoZXkgd2VyZSBlYXRpbmcsIEplc3VzIHRvb2sgYnJlYWQsIGFuZCBibGVzc2VkIGl0LCBhbmQgYnJha2UgaXQsIGFuZCBnYXZlIGl0IHRvIHRoZSBkaXNjaXBsZXMsIGFuZCBzYWlkLCBUYWtlLCBlYXQ7IHRoaXMgaXMgbXkgYm9keS4KQW5kIGhlIHRvb2sgdGhlIGN1cCwgYW5kIGdhdmUgdGhhbmtzLCBhbmQgZ2F2ZSBpdCB0byB0aGVtLCBzYXlpbmcsIERyaW5rIHllIGFsbCBvZiBpdDsKRm9yIHRoaXMgaXMgbXkgYmxvb2Qgb2YgdGhlIG5ldyB0ZXN0YW1lbnQsIHdoaWNoIGlzIHNoZWQgZm9yIG1hbnkgZm9yIHRoZSByZW1pc3Npb24gb2Ygc2lucy4KQnV0IEkgc2F5IHVudG8geW91LCBJIHdpbGwgbm90IGRyaW5rIGhlbmNlZm9ydGggb2YgdGhpcyBmcnVpdCBvZiB0aGUgdmluZSwgdW50aWwgdGhhdCBkYXkgd2hlbiBJIGRyaW5rIGl0IG5ldyB3aXRoIHlvdSBpbiBteSBGYXRoZXIncyBraW5nZG9tLgpBbmQgd2hlbiB0aGV5IGhhZCBzdW5nIGFuIGh5bW4sIHRoZXkgd2VudCBvdXQgaW50byB0aGUgbW91bnQgb2YgT2xpdmVzLgpUaGVuIHNhaXRoIEplc3VzIHVudG8gdGhlbSwgQWxsIHllIHNoYWxsIGJlIG9mZmVuZGVkIGJlY2F1c2Ugb2YgbWUgdGhpcyBuaWdodDogZm9yIGl0IGlzIHdyaXR0ZW4sIEkgd2lsbCBzbWl0ZSB0aGUgc2hlcGhlcmQsIGFuZCB0aGUgc2hlZXAgb2YgdGhlIGZsb2NrIHNoYWxsIGJlIHNjYXR0ZXJlZCBhYnJvYWQuCkJ1dCBhZnRlciBJIGFtIHJpc2VuIGFnYWluLCBJIHdpbGwgZ28gYmVmb3JlIHlvdSBpbnRvIEdhbGlsZWUuClBldGVyIGFuc3dlcmVkIGFuZCBzYWlkIHVudG8gaGltLCBUaG91Z2ggYWxsIG1lbiBzaGFsbCBiZSBvZmZlbmRlZCBiZWNhdXNlIG9mIHRoZWUsIHlldCB3aWxsIEkgbmV2ZXIgYmUgb2ZmZW5kZWQuCkplc3VzIHNhaWQgdW50byBoaW0sIFZlcmlseSBJIHNheSB1bnRvIHRoZWUsIFRoYXQgdGhpcyBuaWdodCwgYmVmb3JlIHRoZSBjb2NrIGNyb3csIHRob3Ugc2hhbHQgZGVueSBtZSB0aHJpY2UuClBldGVyIHNhaWQgdW50byBoaW0sIFRob3VnaCBJIHNob3VsZCBkaWUgd2l0aCB0aGVlLCB5ZXQgd2lsbCBJIG5vdCBkZW55IHRoZWUuIExpa2V3aXNlIGFsc28gc2FpZCBhbGwgdGhlIGRpc2NpcGxlcy4KVGhlbiBjb21ldGggSmVzdXMgd2l0aCB0aGVtIHVudG8gYSBwbGFjZSBjYWxsZWQgR2V0aHNlbWFuZSwgYW5kIHNhaXRoIHVudG8gdGhlIGRpc2NpcGxlcywgU2l0IHllIGhlcmUsIHdoaWxlIEkgZ28gYW5kIHByYXkgeW9uZGVyLgpBbmQgaGUgdG9vayB3aXRoIGhpbSBQZXRlciBhbmQgdGhlIHR3byBzb25zIG9mIFplYmVkZWUsIGFuZCBiZWdhbiB0byBiZSBzb3Jyb3dmdWwgYW5kIHZlcnkgaGVhdnkuClRoZW4gc2FpdGggaGUgdW50byB0aGVtLCBNeSBzb3VsIGlzIGV4Y2VlZGluZyBzb3Jyb3dmdWwsIGV2ZW4gdW50byBkZWF0aDogdGFycnkgeWUgaGVyZSwgYW5kIHdhdGNoIHdpdGggbWUuCkFuZCBoZSB3ZW50IGEgbGl0dGxlIGZhcnRoZXIsIGFuZCBmZWxsIG9uIGhpcyBmYWNlLCBhbmQgcHJheWVkLCBzYXlpbmcsIE8gbXkgRmF0aGVyLCBpZiBpdCBiZSBwb3NzaWJsZSwgbGV0IHRoaXMgY3VwIHBhc3MgZnJvbSBtZTogbmV2ZXJ0aGVsZXNzIG5vdCBhcyBJIHdpbGwsIGJ1dCBhcyB0aG91IHdpbHQuCkFuZCBoZSBjb21ldGggdW50byB0aGUgZGlzY2lwbGVzLCBhbmQgZmluZGV0aCB0aGVtIGFzbGVlcCwgYW5kIHNhaXRoIHVudG8gUGV0ZXIsIFdoYXQsIGNvdWxkIHllIG5vdCB3YXRjaCB3aXRoIG1lIG9uZSBob3VyPwpXYXRjaCBhbmQgcHJheSwgdGhhdCB5ZSBlbnRlciBub3QgaW50byB0ZW1wdGF0aW9uOiB0aGUgc3Bpcml0IGluZGVlZCBpcyB3aWxsaW5nLCBidXQgdGhlIGZsZXNoIGlzIHdlYWsuCkhlIHdlbnQgYXdheSBhZ2FpbiB0aGUgc2Vjb25kIHRpbWUsIGFuZCBwcmF5ZWQsIHNheWluZywgTyBteSBGYXRoZXIsIGlmIHRoaXMgY3VwIG1heSBub3QgcGFzcyBhd2F5IGZyb20gbWUsIGV4Y2VwdCBJIGRyaW5rIGl0LCB0aHkgd2lsbCBiZSBkb25lLgpBbmQgaGUgY2FtZSBhbmQgZm91bmQgdGhlbSBhc2xlZXAgYWdhaW46IGZvciB0aGVpciBleWVzIHdlcmUgaGVhdnkuCkFuZCBoZSBsZWZ0IHRoZW0sIGFuZCB3ZW50IGF3YXkgYWdhaW4sIGFuZCBwcmF5ZWQgdGhlIHRoaXJkIHRpbWUsIHNheWluZyB0aGUgc2FtZSB3b3Jkcy4KVGhlbiBjb21ldGggaGUgdG8gaGlzIGRpc2NpcGxlcywgYW5kIHNhaXRoIHVudG8gdGhlbSwgU2xlZXAgb24gbm93LCBhbmQgdGFrZSB5b3VyIHJlc3Q6IGJlaG9sZCwgdGhlIGhvdXIgaXMgYXQgaGFuZCwgYW5kIHRoZSBTb24gb2YgbWFuIGlzIGJldHJheWVkIGludG8gdGhlIGhhbmRzIG9mIHNpbm5lcnMuClJpc2UsIGxldCB1cyBiZSBnb2luZzogYmVob2xkLCBoZSBpcyBhdCBoYW5kIHRoYXQgZG90aCBiZXRyYXkgbWUuCkFuZCB3aGlsZSBoZSB5ZXQgc3Bha2UsIGxvLCBKdWRhcywgb25lIG9mIHRoZSB0d2VsdmUsIGNhbWUsIGFuZCB3aXRoIGhpbSBhIGdyZWF0IG11bHRpdHVkZSB3aXRoIHN3b3JkcyBhbmQgc3RhdmVzLCBmcm9tIHRoZSBjaGllZiBwcmllc3RzIGFuZCBlbGRlcnMgb2YgdGhlIHBlb3BsZS4KTm93IGhlIHRoYXQgYmV0cmF5ZWQgaGltIGdhdmUgdGhlbSBhIHNpZ24sIHNheWluZywgV2hvbXNvZXZlciBJIHNoYWxsIGtpc3MsIHRoYXQgc2FtZSBpcyBoZTogaG9sZCBoaW0gZmFzdC4KQW5kIGZvcnRod2l0aCBoZSBjYW1lIHRvIEplc3VzLCBhbmQgc2FpZCwgSGFpbCwgbWFzdGVyOyBhbmQga2lzc2VkIGhpbS4KQW5kIEplc3VzIHNhaWQgdW50byBoaW0sIEZyaWVuZCwgd2hlcmVmb3JlIGFydCB0aG91IGNvbWU/IFRoZW4gY2FtZSB0aGV5LCBhbmQgbGFpZCBoYW5kcyBvbiBKZXN1cyBhbmQgdG9vayBoaW0uCkFuZCwgYmVob2xkLCBvbmUgb2YgdGhlbSB3aGljaCB3ZXJlIHdpdGggSmVzdXMgc3RyZXRjaGVkIG91dCBoaXMgaGFuZCwgYW5kIGRyZXcgaGlzIHN3b3JkLCBhbmQgc3RydWNrIGEgc2VydmFudCBvZiB0aGUgaGlnaCBwcmllc3QncywgYW5kIHNtb3RlIG9mZiBoaXMgZWFyLgpUaGVuIHNhaWQgSmVzdXMgdW50byBoaW0sIFB1dCB1cCBhZ2FpbiB0aHkgc3dvcmQgaW50byBoaXMgcGxhY2U6IGZvciBhbGwgdGhleSB0aGF0IHRha2UgdGhlIHN3b3JkIHNoYWxsIHBlcmlzaCB3aXRoIHRoZSBzd29yZC4KVGhpbmtlc3QgdGhvdSB0aGF0IEkgY2Fubm90IG5vdyBwcmF5IHRvIG15IEZhdGhlciwgYW5kIGhlIHNoYWxsIHByZXNlbnRseSBnaXZlIG1lIG1vcmUgdGhhbiB0d2VsdmUgbGVnaW9ucyBvZiBhbmdlbHM/CkJ1dCBob3cgdGhlbiBzaGFsbCB0aGUgc2NyaXB0dXJlcyBiZSBmdWxmaWxsZWQsIHRoYXQgdGh1cyBpdCBtdXN0IGJlPwpJbiB0aGF0IHNhbWUgaG91ciBzYWlkIEplc3VzIHRvIHRoZSBtdWx0aXR1ZGVzLCBBcmUgeWUgY29tZSBvdXQgYXMgYWdhaW5zdCBhIHRoaWVmIHdpdGggc3dvcmRzIGFuZCBzdGF2ZXMgZm9yIHRvIHRha2UgbWU/IEkgc2F0IGRhaWx5IHdpdGggeW91IHRlYWNoaW5nIGluIHRoZSB0ZW1wbGUsIGFuZCB5ZSBsYWlkIG5vIGhvbGQgb24gbWUuCkJ1dCBhbGwgdGhpcyB3YXMgZG9uZSwgdGhhdCB0aGUgc2NyaXB0dXJlcyBvZiB0aGUgcHJvcGhldHMgbWlnaHQgYmUgZnVsZmlsbGVkLiBUaGVuIGFsbCB0aGUgZGlzY2lwbGVzIGZvcnNvb2sgaGltLCBhbmQgZmxlZC4KQW5kIHRoZXkgdGhhdCBoYWQgbGFpZCBob2xkIG9uIEplc3VzIGxlZCBoaW0gYXdheSB0byBDYWlhcGhhcyB0aGUgaGlnaCBwcmllc3QsIHdoZXJlIHRoZSBzY3JpYmVzIGFuZCB0aGUgZWxkZXJzIHdlcmUgYXNzZW1ibGVkLgpCdXQgUGV0ZXIgZm9sbG93ZWQgaGltIGFmYXIgb2ZmIHVudG8gdGhlIGhpZ2ggcHJpZXN0J3MgcGFsYWNlLCBhbmQgd2VudCBpbiwgYW5kIHNhdCB3aXRoIHRoZSBzZXJ2YW50cywgdG8gc2VlIHRoZSBlbmQuCk5vdyB0aGUgY2hpZWYgcHJpZXN0cywgYW5kIGVsZGVycywgYW5kIGFsbCB0aGUgY291bmNpbCwgc291Z2h0IGZhbHNlIHdpdG5lc3MgYWdhaW5zdCBKZXN1cywgdG8gcHV0IGhpbSB0byBkZWF0aDsKQnV0IGZvdW5kIG5vbmU6IHllYSwgdGhvdWdoIG1hbnkgZmFsc2Ugd2l0bmVzc2VzIGNhbWUsIHlldCBmb3VuZCB0aGV5IG5vbmUuIEF0IHRoZSBsYXN0IGNhbWUgdHdvIGZhbHNlIHdpdG5lc3NlcywKQW5kIHNhaWQsIFRoaXMgZmVsbG93IHNhaWQsIEkgYW0gYWJsZSB0byBkZXN0cm95IHRoZSB0ZW1wbGUgb2YgR29kLCBhbmQgdG8gYnVpbGQgaXQgaW4gdGhyZWUgZGF5cy4KQW5kIHRoZSBoaWdoIHByaWVzdCBhcm9zZSwgYW5kIHNhaWQgdW50byBoaW0sIEFuc3dlcmVzdCB0aG91IG5vdGhpbmc/IHdoYXQgaXMgaXQgd2hpY2ggdGhlc2Ugd2l0bmVzcyBhZ2FpbnN0IHRoZWU/CkJ1dCBKZXN1cyBoZWxkIGhpcyBwZWFjZSwgQW5kIHRoZSBoaWdoIHByaWVzdCBhbnN3ZXJlZCBhbmQgc2FpZCB1bnRvIGhpbSwgSSBhZGp1cmUgdGhlZSBieSB0aGUgbGl2aW5nIEdvZCwgdGhhdCB0aG91IHRlbGwgdXMgd2hldGhlciB0aG91IGJlIHRoZSBDaHJpc3QsIHRoZSBTb24gb2YgR29kLgpKZXN1cyBzYWl0aCB1bnRvIGhpbSwgVGhvdSBoYXN0IHNhaWQ6IG5ldmVydGhlbGVzcyBJIHNheSB1bnRvIHlvdSwgSGVyZWFmdGVyIHNoYWxsIHllIHNlZSB0aGUgU29uIG9mIG1hbiBzaXR0aW5nIG9uIHRoZSByaWdodCBoYW5kIG9mIHBvd2VyLCBhbmQgY29taW5nIGluIHRoZSBjbG91ZHMgb2YgaGVhdmVuLgpUaGVuIHRoZSBoaWdoIHByaWVzdCByZW50IGhpcyBjbG90aGVzLCBzYXlpbmcsIEhlIGhhdGggc3Bva2VuIGJsYXNwaGVteTsgd2hhdCBmdXJ0aGVyIG5lZWQgaGF2ZSB3ZSBvZiB3aXRuZXNzZXM/IGJlaG9sZCwgbm93IHllIGhhdmUgaGVhcmQgaGlzIGJsYXNwaGVteS4KV2hhdCB0aGluayB5ZT8gVGhleSBhbnN3ZXJlZCBhbmQgc2FpZCwgSGUgaXMgZ3VpbHR5IG9mIGRlYXRoLgpUaGVuIGRpZCB0aGV5IHNwaXQgaW4gaGlzIGZhY2UsIGFuZCBidWZmZXRlZCBoaW07IGFuZCBvdGhlcnMgc21vdGUgaGltIHdpdGggdGhlIHBhbG1zIG9mIHRoZWlyIGhhbmRzLApTYXlpbmcsIFByb3BoZXN5IHVudG8gdXMsIHRob3UgQ2hyaXN0LCBXaG8gaXMgaGUgdGhhdCBzbW90ZSB0aGVlPwpOb3cgUGV0ZXIgc2F0IHdpdGhvdXQgaW4gdGhlIHBhbGFjZTogYW5kIGEgZGFtc2VsIGNhbWUgdW50byBoaW0sIHNheWluZywgVGhvdSBhbHNvIHdhc3Qgd2l0aCBKZXN1cyBvZiBHYWxpbGVlLgpCdXQgaGUgZGVuaWVkIGJlZm9yZSB0aGVtIGFsbCwgc2F5aW5nLCBJIGtub3cgbm90IHdoYXQgdGhvdSBzYXllc3QuCkFuZCB3aGVuIGhlIHdhcyBnb25lIG91dCBpbnRvIHRoZSBwb3JjaCwgYW5vdGhlciBtYWlkIHNhdyBoaW0sIGFuZCBzYWlkIHVudG8gdGhlbSB0aGF0IHdlcmUgdGhlcmUsIFRoaXMgZmVsbG93IHdhcyBhbHNvIHdpdGggSmVzdXMgb2YgTmF6YXJldGguCkFuZCBhZ2FpbiBoZSBkZW5pZWQgd2l0aCBhbiBvYXRoLCBJIGRvIG5vdCBrbm93IHRoZSBtYW4uCkFuZCBhZnRlciBhIHdoaWxlIGNhbWUgdW50byBoaW0gdGhleSB0aGF0IHN0b29kIGJ5LCBhbmQgc2FpZCB0byBQZXRlciwgU3VyZWx5IHRob3UgYWxzbyBhcnQgb25lIG9mIHRoZW07IGZvciB0aHkgc3BlZWNoIGJld3JheWV0aCB0aGVlLgpUaGVuIGJlZ2FuIGhlIHRvIGN1cnNlIGFuZCB0byBzd2Vhciwgc2F5aW5nLCBJIGtub3cgbm90IHRoZSBtYW4uIEFuZCBpbW1lZGlhdGVseSB0aGUgY29jayBjcmV3LgpBbmQgUGV0ZXIgcmVtZW1iZXJlZCB0aGUgd29yZCBvZiBKZXN1cywgd2hpY2ggc2FpZCB1bnRvIGhpbSwgQmVmb3JlIHRoZSBjb2NrIGNyb3csIHRob3Ugc2hhbHQgZGVueSBtZSB0aHJpY2UuIEFuZCBoZSB3ZW50IG91dCwgYW5kIHdlcHQgYml0dGVybHkuCldoZW4gdGhlIG1vcm5pbmcgd2FzIGNvbWUsIGFsbCB0aGUgY2hpZWYgcHJpZXN0cyBhbmQgZWxkZXJzIG9mIHRoZSBwZW9wbGUgdG9vayBjb3Vuc2VsIGFnYWluc3QgSmVzdXMgdG8gcHV0IGhpbSB0byBkZWF0aDoKQW5kIHdoZW4gdGhleSBoYWQgYm91bmQgaGltLCB0aGV5IGxlZCBoaW0gYXdheSwgYW5kIGRlbGl2ZXJlZCBoaW0gdG8gUG9udGl1cyBQaWxhdGUgdGhlIGdvdmVybm9yLgpUaGVuIEp1ZGFzLCB3aGljaCBoYWQgYmV0cmF5ZWQgaGltLCB3aGVuIGhlIHNhdyB0aGF0IGhlIHdhcyBjb25kZW1uZWQsIHJlcGVudGVkIGhpbXNlbGYsIGFuZCBicm91Z2h0IGFnYWluIHRoZSB0aGlydHkgcGllY2VzIG9mIHNpbHZlciB0byB0aGUgY2hpZWYgcHJpZXN0cyBhbmQgZWxkZXJzLApTYXlpbmcsIEkgaGF2ZSBzaW5uZWQgaW4gdGhhdCBJIGhhdmUgYmV0cmF5ZWQgdGhlIGlubm9jZW50IGJsb29kLiBBbmQgdGhleSBzYWlkLCBXaGF0IGlzIHRoYXQgdG8gdXM/IHNlZSB0aG91IHRvIHRoYXQuCkFuZCBoZSBjYXN0IGRvd24gdGhlIHBpZWNlcyBvZiBzaWx2ZXIgaW4gdGhlIHRlbXBsZSwgYW5kIGRlcGFydGVkLCBhbmQgd2VudCBhbmQgaGFuZ2VkIGhpbXNlbGYuCkFuZCB0aGUgY2hpZWYgcHJpZXN0cyB0b29rIHRoZSBzaWx2ZXIgcGllY2VzLCBhbmQgc2FpZCwgSXQgaXMgbm90IGxhd2Z1bCBmb3IgdG8gcHV0IHRoZW0gaW50byB0aGUgdHJlYXN1cnksIGJlY2F1c2UgaXQgaXMgdGhlIHByaWNlIG9mIGJsb29kLgpBbmQgdGhleSB0b29rIGNvdW5zZWwsIGFuZCBib3VnaHQgd2l0aCB0aGVtIHRoZSBwb3R0ZXIncyBmaWVsZCwgdG8gYnVyeSBzdHJhbmdlcnMgaW4uCldoZXJlZm9yZSB0aGF0IGZpZWxkIHdhcyBjYWxsZWQsIFRoZSBmaWVsZCBvZiBibG9vZCwgdW50byB0aGlzIGRheS4KVGhlbiB3YXMgZnVsZmlsbGVkIHRoYXQgd2hpY2ggd2FzIHNwb2tlbiBieSBKZXJlbXkgdGhlIHByb3BoZXQsIHNheWluZywgQW5kIHRoZXkgdG9vayB0aGUgdGhpcnR5IHBpZWNlcyBvZiBzaWx2ZXIsIHRoZSBwcmljZSBvZiBoaW0gdGhhdCB3YXMgdmFsdWVkLCB3aG9tIHRoZXkgb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBkaWQgdmFsdWU7CkFuZCBnYXZlIHRoZW0gZm9yIHRoZSBwb3R0ZXIncyBmaWVsZCwgYXMgdGhlIExvcmQgYXBwb2ludGVkIG1lLgpBbmQgSmVzdXMgc3Rvb2QgYmVmb3JlIHRoZSBnb3Zlcm5vcjogYW5kIHRoZSBnb3Zlcm5vciBhc2tlZCBoaW0sIHNheWluZywgQXJ0IHRob3UgdGhlIEtpbmcgb2YgdGhlIEpld3M/IEFuZCBKZXN1cyBzYWlkIHVudG8gaGltLCBUaG91IHNheWVzdC4KQW5kIHdoZW4gaGUgd2FzIGFjY3VzZWQgb2YgdGhlIGNoaWVmIHByaWVzdHMgYW5kIGVsZGVycywgaGUgYW5zd2VyZWQgbm90aGluZy4KVGhlbiBzYWlkIFBpbGF0ZSB1bnRvIGhpbSwgSGVhcmVzdCB0aG91IG5vdCBob3cgbWFueSB0aGluZ3MgdGhleSB3aXRuZXNzIGFnYWluc3QgdGhlZT8KQW5kIGhlIGFuc3dlcmVkIGhpbSB0byBuZXZlciBhIHdvcmQ7IGluc29tdWNoIHRoYXQgdGhlIGdvdmVybm9yIG1hcnZlbGxlZCBncmVhdGx5LgpOb3cgYXQgdGhhdCBmZWFzdCB0aGUgZ292ZXJub3Igd2FzIHdvbnQgdG8gcmVsZWFzZSB1bnRvIHRoZSBwZW9wbGUgYSBwcmlzb25lciwgd2hvbSB0aGV5IHdvdWxkLgpBbmQgdGhleSBoYWQgdGhlbiBhIG5vdGFibGUgcHJpc29uZXIsIGNhbGxlZCBCYXJhYmJhcy4KVGhlcmVmb3JlIHdoZW4gdGhleSB3ZXJlIGdhdGhlcmVkIHRvZ2V0aGVyLCBQaWxhdGUgc2FpZCB1bnRvIHRoZW0sIFdob20gd2lsbCB5ZSB0aGF0IEkgcmVsZWFzZSB1bnRvIHlvdT8gQmFyYWJiYXMsIG9yIEplc3VzIHdoaWNoIGlzIGNhbGxlZCBDaHJpc3Q/CkZvciBoZSBrbmV3IHRoYXQgZm9yIGVudnkgdGhleSBoYWQgZGVsaXZlcmVkIGhpbS4KV2hlbiBoZSB3YXMgc2V0IGRvd24gb24gdGhlIGp1ZGdtZW50IHNlYXQsIGhpcyB3aWZlIHNlbnQgdW50byBoaW0sIHNheWluZywgSGF2ZSB0aG91IG5vdGhpbmcgdG8gZG8gd2l0aCB0aGF0IGp1c3QgbWFuOiBmb3IgSSBoYXZlIHN1ZmZlcmVkIG1hbnkgdGhpbmdzIHRoaXMgZGF5IGluIGEgZHJlYW0gYmVjYXVzZSBvZiBoaW0uCkJ1dCB0aGUgY2hpZWYgcHJpZXN0cyBhbmQgZWxkZXJzIHBlcnN1YWRlZCB0aGUgbXVsdGl0dWRlIHRoYXQgdGhleSBzaG91bGQgYXNrIEJhcmFiYmFzLCBhbmQgZGVzdHJveSBKZXN1cy4KVGhlIGdvdmVybm9yIGFuc3dlcmVkIGFuZCBzYWlkIHVudG8gdGhlbSwgV2hldGhlciBvZiB0aGUgdHdhaW4gd2lsbCB5ZSB0aGF0IEkgcmVsZWFzZSB1bnRvIHlvdT8gVGhleSBzYWlkLCBCYXJhYmJhcy4KUGlsYXRlIHNhaXRoIHVudG8gdGhlbSwgV2hhdCBzaGFsbCBJIGRvIHRoZW4gd2l0aCBKZXN1cyB3aGljaCBpcyBjYWxsZWQgQ2hyaXN0PyBUaGV5IGFsbCBzYXkgdW50byBoaW0sIExldCBoaW0gYmUgY3J1Y2lmaWVkLgpBbmQgdGhlIGdvdmVybm9yIHNhaWQsIFdoeSwgd2hhdCBldmlsIGhhdGggaGUgZG9uZT8gQnV0IHRoZXkgY3JpZWQgb3V0IHRoZSBtb3JlLCBzYXlpbmcsIExldCBoaW0gYmUgY3J1Y2lmaWVkLgpXaGVuIFBpbGF0ZSBzYXcgdGhhdCBoZSBjb3VsZCBwcmV2YWlsIG5vdGhpbmcsIGJ1dCB0aGF0IHJhdGhlciBhIHR1bXVsdCB3YXMgbWFkZSwgaGUgdG9vayB3YXRlciwgYW5kIHdhc2hlZCBoaXMgaGFuZHMgYmVmb3JlIHRoZSBtdWx0aXR1ZGUsIHNheWluZywgSSBhbSBpbm5vY2VudCBvZiB0aGUgYmxvb2Qgb2YgdGhpcyBqdXN0IHBlcnNvbjogc2VlIHllIHRvIGl0LgpUaGVuIGFuc3dlcmVkIGFsbCB0aGUgcGVvcGxlLCBhbmQgc2FpZCwgSGlzIGJsb29kIGJlIG9uIHVzLCBhbmQgb24gb3VyIGNoaWxkcmVuLgpUaGVuIHJlbGVhc2VkIGhlIEJhcmFiYmFzIHVudG8gdGhlbTogYW5kIHdoZW4gaGUgaGFkIHNjb3VyZ2VkIEplc3VzLCBoZSBkZWxpdmVyZWQgaGltIHRvIGJlIGNydWNpZmllZC4KVGhlbiB0aGUgc29sZGllcnMgb2YgdGhlIGdvdmVybm9yIHRvb2sgSmVzdXMgaW50byB0aGUgY29tbW9uIGhhbGwsIGFuZCBnYXRoZXJlZCB1bnRvIGhpbSB0aGUgd2hvbGUgYmFuZCBvZiBzb2xkaWVycy4KQW5kIHRoZXkgc3RyaXBwZWQgaGltLCBhbmQgcHV0IG9uIGhpbSBhIHNjYXJsZXQgcm9iZS4KQW5kIHdoZW4gdGhleSBoYWQgcGxhdHRlZCBhIGNyb3duIG9mIHRob3JucywgdGhleSBwdXQgaXQgdXBvbiBoaXMgaGVhZCwgYW5kIGEgcmVlZCBpbiBoaXMgcmlnaHQgaGFuZDogYW5kIHRoZXkgYm93ZWQgdGhlIGtuZWUgYmVmb3JlIGhpbSwgYW5kIG1vY2tlZCBoaW0sIHNheWluZywgSGFpbCwgS2luZyBvZiB0aGUgSmV3cyEKQW5kIHRoZXkgc3BpdCB1cG9uIGhpbSwgYW5kIHRvb2sgdGhlIHJlZWQsIGFuZCBzbW90ZSBoaW0gb24gdGhlIGhlYWQuCkFuZCBhZnRlciB0aGF0IHRoZXkgaGFkIG1vY2tlZCBoaW0sIHRoZXkgdG9vayB0aGUgcm9iZSBvZmYgZnJvbSBoaW0sIGFuZCBwdXQgaGlzIG93biByYWltZW50IG9uIGhpbSwgYW5kIGxlZCBoaW0gYXdheSB0byBjcnVjaWZ5IGhpbS4KQW5kIGFzIHRoZXkgY2FtZSBvdXQsIHRoZXkgZm91bmQgYSBtYW4gb2YgQ3lyZW5lLCBTaW1vbiBieSBuYW1lOiBoaW0gdGhleSBjb21wZWxsZWQgdG8gYmVhciBoaXMgY3Jvc3MuCkFuZCB3aGVuIHRoZXkgd2VyZSBjb21lIHVudG8gYSBwbGFjZSBjYWxsZWQgR29sZ290aGEsIHRoYXQgaXMgdG8gc2F5LCBhIHBsYWNlIG9mIGEgc2t1bGwsClRoZXkgZ2F2ZSBoaW0gdmluZWdhciB0byBkcmluayBtaW5nbGVkIHdpdGggZ2FsbDogYW5kIHdoZW4gaGUgaGFkIHRhc3RlZCB0aGVyZW9mLCBoZSB3b3VsZCBub3QgZHJpbmsuCkFuZCB0aGV5IGNydWNpZmllZCBoaW0sIGFuZCBwYXJ0ZWQgaGlzIGdhcm1lbnRzLCBjYXN0aW5nIGxvdHM6IHRoYXQgaXQgbWlnaHQgYmUgZnVsZmlsbGVkIHdoaWNoIHdhcyBzcG9rZW4gYnkgdGhlIHByb3BoZXQsIFRoZXkgcGFydGVkIG15IGdhcm1lbnRzIGFtb25nIHRoZW0sIGFuZCB1cG9uIG15IHZlc3R1cmUgZGlkIHRoZXkgY2FzdCBsb3RzLgpBbmQgc2l0dGluZyBkb3duIHRoZXkgd2F0Y2hlZCBoaW0gdGhlcmU7CkFuZCBzZXQgdXAgb3ZlciBoaXMgaGVhZCBoaXMgYWNjdXNhdGlvbiB3cml0dGVuLCBUSElTIElTIEpFU1VTIFRIRSBLSU5HIE9GIFRIRSBKRVdTLgpUaGVuIHdlcmUgdGhlcmUgdHdvIHRoaWV2ZXMgY3J1Y2lmaWVkIHdpdGggaGltLCBvbmUgb24gdGhlIHJpZ2h0IGhhbmQsIGFuZCBhbm90aGVyIG9uIHRoZSBsZWZ0LgpBbmQgdGhleSB0aGF0IHBhc3NlZCBieSByZXZpbGVkIGhpbSwgd2FnZ2luZyB0aGVpciBoZWFkcywKQW5kIHNheWluZywgVGhvdSB0aGF0IGRlc3Ryb3llc3QgdGhlIHRlbXBsZSwgYW5kIGJ1aWxkZXN0IGl0IGluIHRocmVlIGRheXMsIHNhdmUgdGh5c2VsZi4gSWYgdGhvdSBiZSB0aGUgU29uIG9mIEdvZCwgY29tZSBkb3duIGZyb20gdGhlIGNyb3NzLgpMaWtld2lzZSBhbHNvIHRoZSBjaGllZiBwcmllc3RzIG1vY2tpbmcgaGltLCB3aXRoIHRoZSBzY3JpYmVzIGFuZCBlbGRlcnMsIHNhaWQsCkhlIHNhdmVkIG90aGVyczsgaGltc2VsZiBoZSBjYW5ub3Qgc2F2ZS4gSWYgaGUgYmUgdGhlIEtpbmcgb2YgSXNyYWVsLCBsZXQgaGltIG5vdyBjb21lIGRvd24gZnJvbSB0aGUgY3Jvc3MsIGFuZCB3ZSB3aWxsIGJlbGlldmUgaGltLgpIZSB0cnVzdGVkIGluIEdvZDsgbGV0IGhpbSBkZWxpdmVyIGhpbSBub3csIGlmIGhlIHdpbGwgaGF2ZSBoaW06IGZvciBoZSBzYWlkLCBJIGFtIHRoZSBTb24gb2YgR29kLgpUaGUgdGhpZXZlcyBhbHNvLCB3aGljaCB3ZXJlIGNydWNpZmllZCB3aXRoIGhpbSwgY2FzdCB0aGUgc2FtZSBpbiBoaXMgdGVldGguCk5vdyBmcm9tIHRoZSBzaXh0aCBob3VyIHRoZXJlIHdhcyBkYXJrbmVzcyBvdmVyIGFsbCB0aGUgbGFuZCB1bnRvIHRoZSBuaW50aCBob3VyLgpBbmQgYWJvdXQgdGhlIG5pbnRoIGhvdXIgSmVzdXMgY3JpZWQgd2l0aCBhIGxvdWQgdm9pY2UsIHNheWluZywgRWxpLCBFbGksIGxhbWEgc2FiYWNodGhhbmk/IHRoYXQgaXMgdG8gc2F5LCBNeSBHb2QsIG15IEdvZCwgd2h5IGhhc3QgdGhvdSBmb3JzYWtlbiBtZT8KU29tZSBvZiB0aGVtIHRoYXQgc3Rvb2QgdGhlcmUsIHdoZW4gdGhleSBoZWFyZCB0aGF0LCBzYWlkLCBUaGlzIG1hbiBjYWxsZXRoIGZvciBFbGlhcy4KQW5kIHN0cmFpZ2h0d2F5IG9uZSBvZiB0aGVtIHJhbiwgYW5kIHRvb2sgYSBzcHVuZ2UsIGFuZCBmaWxsZWQgaXQgd2l0aCB2aW5lZ2FyLCBhbmQgcHV0IGl0IG9uIGEgcmVlZCwgYW5kIGdhdmUgaGltIHRvIGRyaW5rLgpUaGUgcmVzdCBzYWlkLCBMZXQgYmUsIGxldCB1cyBzZWUgd2hldGhlciBFbGlhcyB3aWxsIGNvbWUgdG8gc2F2ZSBoaW0uCkplc3VzLCB3aGVuIGhlIGhhZCBjcmllZCBhZ2FpbiB3aXRoIGEgbG91ZCB2b2ljZSwgeWllbGRlZCB1cCB0aGUgZ2hvc3QuCkFuZCwgYmVob2xkLCB0aGUgdmVpbCBvZiB0aGUgdGVtcGxlIHdhcyByZW50IGluIHR3YWluIGZyb20gdGhlIHRvcCB0byB0aGUgYm90dG9tOyBhbmQgdGhlIGVhcnRoIGRpZCBxdWFrZSwgYW5kIHRoZSByb2NrcyByZW50OwpBbmQgdGhlIGdyYXZlcyB3ZXJlIG9wZW5lZDsgYW5kIG1hbnkgYm9kaWVzIG9mIHRoZSBzYWludHMgd2hpY2ggc2xlcHQgYXJvc2UsCkFuZCBjYW1lIG91dCBvZiB0aGUgZ3JhdmVzIGFmdGVyIGhpcyByZXN1cnJlY3Rpb24sIGFuZCB3ZW50IGludG8gdGhlIGhvbHkgY2l0eSwgYW5kIGFwcGVhcmVkIHVudG8gbWFueS4KTm93IHdoZW4gdGhlIGNlbnR1cmlvbiwgYW5kIHRoZXkgdGhhdCB3ZXJlIHdpdGggaGltLCB3YXRjaGluZyBKZXN1cywgc2F3IHRoZSBlYXJ0aHF1YWtlLCBhbmQgdGhvc2UgdGhpbmdzIHRoYXQgd2VyZSBkb25lLCB0aGV5IGZlYXJlZCBncmVhdGx5LCBzYXlpbmcsIFRydWx5IHRoaXMgd2FzIHRoZSBTb24gb2YgR29kLgpBbmQgbWFueSB3b21lbiB3ZXJlIHRoZXJlIGJlaG9sZGluZyBhZmFyIG9mZiwgd2hpY2ggZm9sbG93ZWQgSmVzdXMgZnJvbSBHYWxpbGVlLCBtaW5pc3RlcmluZyB1bnRvIGhpbToKQW1vbmcgd2hpY2ggd2FzIE1hcnkgTWFnZGFsZW5lLCBhbmQgTWFyeSB0aGUgbW90aGVyIG9mIEphbWVzIGFuZCBKb3NlcywgYW5kIHRoZSBtb3RoZXIgb2YgWmViZWRlZXMgY2hpbGRyZW4uCldoZW4gdGhlIGV2ZW4gd2FzIGNvbWUsIHRoZXJlIGNhbWUgYSByaWNoIG1hbiBvZiBBcmltYXRoYWVhLCBuYW1lZCBKb3NlcGgsIHdobyBhbHNvIGhpbXNlbGYgd2FzIEplc3VzJyBkaXNjaXBsZToKSGUgd2VudCB0byBQaWxhdGUsIGFuZCBiZWdnZWQgdGhlIGJvZHkgb2YgSmVzdXMuIFRoZW4gUGlsYXRlIGNvbW1hbmRlZCB0aGUgYm9keSB0byBiZSBkZWxpdmVyZWQuCkFuZCB3aGVuIEpvc2VwaCBoYWQgdGFrZW4gdGhlIGJvZHksIGhlIHdyYXBwZWQgaXQgaW4gYSBjbGVhbiBsaW5lbiBjbG90aCwKQW5kIGxhaWQgaXQgaW4gaGlzIG93biBuZXcgdG9tYiwgd2hpY2ggaGUgaGFkIGhld24gb3V0IGluIHRoZSByb2NrOiBhbmQgaGUgcm9sbGVkIGEgZ3JlYXQgc3RvbmUgdG8gdGhlIGRvb3Igb2YgdGhlIHNlcHVsY2hyZSwgYW5kIGRlcGFydGVkLgpBbmQgdGhlcmUgd2FzIE1hcnkgTWFnZGFsZW5lLCBhbmQgdGhlIG90aGVyIE1hcnksIHNpdHRpbmcgb3ZlciBhZ2FpbnN0IHRoZSBzZXB1bGNocmUuCk5vdyB0aGUgbmV4dCBkYXksIHRoYXQgZm9sbG93ZWQgdGhlIGRheSBvZiB0aGUgcHJlcGFyYXRpb24sIHRoZSBjaGllZiBwcmllc3RzIGFuZCBQaGFyaXNlZXMgY2FtZSB0b2dldGhlciB1bnRvIFBpbGF0ZSwKU2F5aW5nLCBTaXIsIHdlIHJlbWVtYmVyIHRoYXQgdGhhdCBkZWNlaXZlciBzYWlkLCB3aGlsZSBoZSB3YXMgeWV0IGFsaXZlLCBBZnRlciB0aHJlZSBkYXlzIEkgd2lsbCByaXNlIGFnYWluLgpDb21tYW5kIHRoZXJlZm9yZSB0aGF0IHRoZSBzZXB1bGNocmUgYmUgbWFkZSBzdXJlIHVudGlsIHRoZSB0aGlyZCBkYXksIGxlc3QgaGlzIGRpc2NpcGxlcyBjb21lIGJ5IG5pZ2h0LCBhbmQgc3RlYWwgaGltIGF3YXksIGFuZCBzYXkgdW50byB0aGUgcGVvcGxlLCBIZSBpcyByaXNlbiBmcm9tIHRoZSBkZWFkOiBzbyB0aGUgbGFzdCBlcnJvciBzaGFsbCBiZSB3b3JzZSB0aGFuIHRoZSBmaXJzdC4KUGlsYXRlIHNhaWQgdW50byB0aGVtLCBZZSBoYXZlIGEgd2F0Y2g6IGdvIHlvdXIgd2F5LCBtYWtlIGl0IGFzIHN1cmUgYXMgeWUgY2FuLgpTbyB0aGV5IHdlbnQsIGFuZCBtYWRlIHRoZSBzZXB1bGNocmUgc3VyZSwgc2VhbGluZyB0aGUgc3RvbmUsIGFuZCBzZXR0aW5nIGEgd2F0Y2guCkluIHRoZSBlbmQgb2YgdGhlIHNhYmJhdGgsIGFzIGl0IGJlZ2FuIHRvIGRhd24gdG93YXJkIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWssIGNhbWUgTWFyeSBNYWdkYWxlbmUgYW5kIHRoZSBvdGhlciBNYXJ5IHRvIHNlZSB0aGUgc2VwdWxjaHJlLgpBbmQsIGJlaG9sZCwgdGhlcmUgd2FzIGEgZ3JlYXQgZWFydGhxdWFrZTogZm9yIHRoZSBhbmdlbCBvZiB0aGUgTG9yZCBkZXNjZW5kZWQgZnJvbSBoZWF2ZW4sIGFuZCBjYW1lIGFuZCByb2xsZWQgYmFjayB0aGUgc3RvbmUgZnJvbSB0aGUgZG9vciwgYW5kIHNhdCB1cG9uIGl0LgpIaXMgY291bnRlbmFuY2Ugd2FzIGxpa2UgbGlnaHRuaW5nLCBhbmQgaGlzIHJhaW1lbnQgd2hpdGUgYXMgc25vdzoKQW5kIGZvciBmZWFyIG9mIGhpbSB0aGUga2VlcGVycyBkaWQgc2hha2UsIGFuZCBiZWNhbWUgYXMgZGVhZCBtZW4uCkFuZCB0aGUgYW5nZWwgYW5zd2VyZWQgYW5kIHNhaWQgdW50byB0aGUgd29tZW4sIEZlYXIgbm90IHllOiBmb3IgSSBrbm93IHRoYXQgeWUgc2VlayBKZXN1cywgd2hpY2ggd2FzIGNydWNpZmllZC4KSGUgaXMgbm90IGhlcmU6IGZvciBoZSBpcyByaXNlbiwgYXMgaGUgc2FpZC4gQ29tZSwgc2VlIHRoZSBwbGFjZSB3aGVyZSB0aGUgTG9yZCBsYXkuCkFuZCBnbyBxdWlja2x5LCBhbmQgdGVsbCBoaXMgZGlzY2lwbGVzIHRoYXQgaGUgaXMgcmlzZW4gZnJvbSB0aGUgZGVhZDsgYW5kLCBiZWhvbGQsIGhlIGdvZXRoIGJlZm9yZSB5b3UgaW50byBHYWxpbGVlOyB0aGVyZSBzaGFsbCB5ZSBzZWUgaGltOiBsbywgSSBoYXZlIHRvbGQgeW91LgpBbmQgdGhleSBkZXBhcnRlZCBxdWlja2x5IGZyb20gdGhlIHNlcHVsY2hyZSB3aXRoIGZlYXIgYW5kIGdyZWF0IGpveTsgYW5kIGRpZCBydW4gdG8gYnJpbmcgaGlzIGRpc2NpcGxlcyB3b3JkLgpBbmQgYXMgdGhleSB3ZW50IHRvIHRlbGwgaGlzIGRpc2NpcGxlcywgYmVob2xkLCBKZXN1cyBtZXQgdGhlbSwgc2F5aW5nLCBBbGwgaGFpbC4gQW5kIHRoZXkgY2FtZSBhbmQgaGVsZCBoaW0gYnkgdGhlIGZlZXQsIGFuZCB3b3JzaGlwcGVkIGhpbS4KVGhlbiBzYWlkIEplc3VzIHVudG8gdGhlbSwgQmUgbm90IGFmcmFpZDogZ28gdGVsbCBteSBicmV0aHJlbiB0aGF0IHRoZXkgZ28gaW50byBHYWxpbGVlLCBhbmQgdGhlcmUgc2hhbGwgdGhleSBzZWUgbWUuCk5vdyB3aGVuIHRoZXkgd2VyZSBnb2luZywgYmVob2xkLCBzb21lIG9mIHRoZSB3YXRjaCBjYW1lIGludG8gdGhlIGNpdHksIGFuZCBzaGV3ZWQgdW50byB0aGUgY2hpZWYgcHJpZXN0cyBhbGwgdGhlIHRoaW5ncyB0aGF0IHdlcmUgZG9uZS4KQW5kIHdoZW4gdGhleSB3ZXJlIGFzc2VtYmxlZCB3aXRoIHRoZSBlbGRlcnMsIGFuZCBoYWQgdGFrZW4gY291bnNlbCwgdGhleSBnYXZlIGxhcmdlIG1vbmV5IHVudG8gdGhlIHNvbGRpZXJzLApTYXlpbmcsIFNheSB5ZSwgSGlzIGRpc2NpcGxlcyBjYW1lIGJ5IG5pZ2h0LCBhbmQgc3RvbGUgaGltIGF3YXkgd2hpbGUgd2Ugc2xlcHQuCkFuZCBpZiB0aGlzIGNvbWUgdG8gdGhlIGdvdmVybm9yJ3MgZWFycywgd2Ugd2lsbCBwZXJzdWFkZSBoaW0sIGFuZCBzZWN1cmUgeW91LgpTbyB0aGV5IHRvb2sgdGhlIG1vbmV5LCBhbmQgZGlkIGFzIHRoZXkgd2VyZSB0YXVnaHQ6IGFuZCB0aGlzIHNheWluZyBpcyBjb21tb25seSByZXBvcnRlZCBhbW9uZyB0aGUgSmV3cyB1bnRpbCB0aGlzIGRheS4KVGhlbiB0aGUgZWxldmVuIGRpc2NpcGxlcyB3ZW50IGF3YXkgaW50byBHYWxpbGVlLCBpbnRvIGEgbW91bnRhaW4gd2hlcmUgSmVzdXMgaGFkIGFwcG9pbnRlZCB0aGVtLgpBbmQgd2hlbiB0aGV5IHNhdyBoaW0sIHRoZXkgd29yc2hpcHBlZCBoaW06IGJ1dCBzb21lIGRvdWJ0ZWQuCkFuZCBKZXN1cyBjYW1lIGFuZCBzcGFrZSB1bnRvIHRoZW0sIHNheWluZywgQWxsIHBvd2VyIGlzIGdpdmVuIHVudG8gbWUgaW4gaGVhdmVuIGFuZCBpbiBlYXJ0aC4KR28geWUgdGhlcmVmb3JlLCBhbmQgdGVhY2ggYWxsIG5hdGlvbnMsIGJhcHRpemluZyB0aGVtIGluIHRoZSBuYW1lIG9mIHRoZSBGYXRoZXIsIGFuZCBvZiB0aGUgU29uLCBhbmQgb2YgdGhlIEhvbHkgR2hvc3Q6ClRlYWNoaW5nIHRoZW0gdG8gb2JzZXJ2ZSBhbGwgdGhpbmdzIHdoYXRzb2V2ZXIgSSBoYXZlIGNvbW1hbmRlZCB5b3U6IGFuZCwgbG8sIEkgYW0gd2l0aCB5b3UgYWx3YXksIGV2ZW4gdW50byB0aGUgZW5kIG9mIHRoZSB3b3JsZC4gQW1lbi4KVGhlIGJlZ2lubmluZyBvZiB0aGUgZ29zcGVsIG9mIEplc3VzIENocmlzdCwgdGhlIFNvbiBvZiBHb2Q7CkFzIGl0IGlzIHdyaXR0ZW4gaW4gdGhlIHByb3BoZXRzLCBCZWhvbGQsIEkgc2VuZCBteSBtZXNzZW5nZXIgYmVmb3JlIHRoeSBmYWNlLCB3aGljaCBzaGFsbCBwcmVwYXJlIHRoeSB3YXkgYmVmb3JlIHRoZWUuClRoZSB2b2ljZSBvZiBvbmUgY3J5aW5nIGluIHRoZSB3aWxkZXJuZXNzLCBQcmVwYXJlIHllIHRoZSB3YXkgb2YgdGhlIExvcmQsIG1ha2UgaGlzIHBhdGhzIHN0cmFpZ2h0LgpKb2huIGRpZCBiYXB0aXplIGluIHRoZSB3aWxkZXJuZXNzLCBhbmQgcHJlYWNoIHRoZSBiYXB0aXNtIG9mIHJlcGVudGFuY2UgZm9yIHRoZSByZW1pc3Npb24gb2Ygc2lucy4KQW5kIHRoZXJlIHdlbnQgb3V0IHVudG8gaGltIGFsbCB0aGUgbGFuZCBvZiBKdWRhZWEsIGFuZCB0aGV5IG9mIEplcnVzYWxlbSwgYW5kIHdlcmUgYWxsIGJhcHRpemVkIG9mIGhpbSBpbiB0aGUgcml2ZXIgb2YgSm9yZGFuLCBjb25mZXNzaW5nIHRoZWlyIHNpbnMuCkFuZCBKb2huIHdhcyBjbG90aGVkIHdpdGggY2FtZWwncyBoYWlyLCBhbmQgd2l0aCBhIGdpcmRsZSBvZiBhIHNraW4gYWJvdXQgaGlzIGxvaW5zOyBhbmQgaGUgZGlkIGVhdCBsb2N1c3RzIGFuZCB3aWxkIGhvbmV5OwpBbmQgcHJlYWNoZWQsIHNheWluZywgVGhlcmUgY29tZXRoIG9uZSBtaWdodGllciB0aGFuIEkgYWZ0ZXIgbWUsIHRoZSBsYXRjaGV0IG9mIHdob3NlIHNob2VzIEkgYW0gbm90IHdvcnRoeSB0byBzdG9vcCBkb3duIGFuZCB1bmxvb3NlLgpJIGluZGVlZCBoYXZlIGJhcHRpemVkIHlvdSB3aXRoIHdhdGVyOiBidXQgaGUgc2hhbGwgYmFwdGl6ZSB5b3Ugd2l0aCB0aGUgSG9seSBHaG9zdC4KQW5kIGl0IGNhbWUgdG8gcGFzcyBpbiB0aG9zZSBkYXlzLCB0aGF0IEplc3VzIGNhbWUgZnJvbSBOYXphcmV0aCBvZiBHYWxpbGVlLCBhbmQgd2FzIGJhcHRpemVkIG9mIEpvaG4gaW4gSm9yZGFuLgpBbmQgc3RyYWlnaHR3YXkgY29taW5nIHVwIG91dCBvZiB0aGUgd2F0ZXIsIGhlIHNhdyB0aGUgaGVhdmVucyBvcGVuZWQsIGFuZCB0aGUgU3Bpcml0IGxpa2UgYSBkb3ZlIGRlc2NlbmRpbmcgdXBvbiBoaW06CkFuZCB0aGVyZSBjYW1lIGEgdm9pY2UgZnJvbSBoZWF2ZW4sIHNheWluZywgVGhvdSBhcnQgbXkgYmVsb3ZlZCBTb24sIGluIHdob20gSSBhbSB3ZWxsIHBsZWFzZWQuCkFuZCBpbW1lZGlhdGVseSB0aGUgc3Bpcml0IGRyaXZldGggaGltIGludG8gdGhlIHdpbGRlcm5lc3MuCkFuZCBoZSB3YXMgdGhlcmUgaW4gdGhlIHdpbGRlcm5lc3MgZm9ydHkgZGF5cywgdGVtcHRlZCBvZiBTYXRhbjsgYW5kIHdhcyB3aXRoIHRoZSB3aWxkIGJlYXN0czsgYW5kIHRoZSBhbmdlbHMgbWluaXN0ZXJlZCB1bnRvIGhpbS4KTm93IGFmdGVyIHRoYXQgSm9obiB3YXMgcHV0IGluIHByaXNvbiwgSmVzdXMgY2FtZSBpbnRvIEdhbGlsZWUsIHByZWFjaGluZyB0aGUgZ29zcGVsIG9mIHRoZSBraW5nZG9tIG9mIEdvZCwKQW5kIHNheWluZywgVGhlIHRpbWUgaXMgZnVsZmlsbGVkLCBhbmQgdGhlIGtpbmdkb20gb2YgR29kIGlzIGF0IGhhbmQ6IHJlcGVudCB5ZSwgYW5kIGJlbGlldmUgdGhlIGdvc3BlbC4KTm93IGFzIGhlIHdhbGtlZCBieSB0aGUgc2VhIG9mIEdhbGlsZWUsIGhlIHNhdyBTaW1vbiBhbmQgQW5kcmV3IGhpcyBicm90aGVyIGNhc3RpbmcgYSBuZXQgaW50byB0aGUgc2VhOiBmb3IgdGhleSB3ZXJlIGZpc2hlcnMuCkFuZCBKZXN1cyBzYWlkIHVudG8gdGhlbSwgQ29tZSB5ZSBhZnRlciBtZSwgYW5kIEkgd2lsbCBtYWtlIHlvdSB0byBiZWNvbWUgZmlzaGVycyBvZiBtZW4uCkFuZCBzdHJhaWdodHdheSB0aGV5IGZvcnNvb2sgdGhlaXIgbmV0cywgYW5kIGZvbGxvd2VkIGhpbS4KQW5kIHdoZW4gaGUgaGFkIGdvbmUgYSBsaXR0bGUgZmFydGhlciB0aGVuY2UsIGhlIHNhdyBKYW1lcyB0aGUgc29uIG9mIFplYmVkZWUsIGFuZCBKb2huIGhpcyBicm90aGVyLCB3aG8gYWxzbyB3ZXJlIGluIHRoZSBzaGlwIG1lbmRpbmcgdGhlaXIgbmV0cy4KQW5kIHN0cmFpZ2h0d2F5IGhlIGNhbGxlZCB0aGVtOiBhbmQgdGhleSBsZWZ0IHRoZWlyIGZhdGhlciBaZWJlZGVlIGluIHRoZSBzaGlwIHdpdGggdGhlIGhpcmVkIHNlcnZhbnRzLCBhbmQgd2VudCBhZnRlciBoaW0uCkFuZCB0aGV5IHdlbnQgaW50byBDYXBlcm5hdW07IGFuZCBzdHJhaWdodHdheSBvbiB0aGUgc2FiYmF0aCBkYXkgaGUgZW50ZXJlZCBpbnRvIHRoZSBzeW5hZ29ndWUsIGFuZCB0YXVnaHQuCkFuZCB0aGV5IHdlcmUgYXN0b25pc2hlZCBhdCBoaXMgZG9jdHJpbmU6IGZvciBoZSB0YXVnaHQgdGhlbSBhcyBvbmUgdGhhdCBoYWQgYXV0aG9yaXR5LCBhbmQgbm90IGFzIHRoZSBzY3JpYmVzLgpBbmQgdGhlcmUgd2FzIGluIHRoZWlyIHN5bmFnb2d1ZSBhIG1hbiB3aXRoIGFuIHVuY2xlYW4gc3Bpcml0OyBhbmQgaGUgY3JpZWQgb3V0LApTYXlpbmcsIExldCB1cyBhbG9uZTsgd2hhdCBoYXZlIHdlIHRvIGRvIHdpdGggdGhlZSwgdGhvdSBKZXN1cyBvZiBOYXphcmV0aD8gYXJ0IHRob3UgY29tZSB0byBkZXN0cm95IHVzPyBJIGtub3cgdGhlZSB3aG8gdGhvdSBhcnQsIHRoZSBIb2x5IE9uZSBvZiBHb2QuCkFuZCBKZXN1cyByZWJ1a2VkIGhpbSwgc2F5aW5nLCBIb2xkIHRoeSBwZWFjZSwgYW5kIGNvbWUgb3V0IG9mIGhpbS4KQW5kIHdoZW4gdGhlIHVuY2xlYW4gc3Bpcml0IGhhZCB0b3JuIGhpbSwgYW5kIGNyaWVkIHdpdGggYSBsb3VkIHZvaWNlLCBoZSBjYW1lIG91dCBvZiBoaW0uCkFuZCB0aGV5IHdlcmUgYWxsIGFtYXplZCwgaW5zb211Y2ggdGhhdCB0aGV5IHF1ZXN0aW9uZWQgYW1vbmcgdGhlbXNlbHZlcywgc2F5aW5nLCBXaGF0IHRoaW5nIGlzIHRoaXM/IHdoYXQgbmV3IGRvY3RyaW5lIGlzIHRoaXM/IGZvciB3aXRoIGF1dGhvcml0eSBjb21tYW5kZXRoIGhlIGV2ZW4gdGhlIHVuY2xlYW4gc3Bpcml0cywgYW5kIHRoZXkgZG8gb2JleSBoaW0uCkFuZCBpbW1lZGlhdGVseSBoaXMgZmFtZSBzcHJlYWQgYWJyb2FkIHRocm91Z2hvdXQgYWxsIHRoZSByZWdpb24gcm91bmQgYWJvdXQgR2FsaWxlZS4KQW5kIGZvcnRod2l0aCwgd2hlbiB0aGV5IHdlcmUgY29tZSBvdXQgb2YgdGhlIHN5bmFnb2d1ZSwgdGhleSBlbnRlcmVkIGludG8gdGhlIGhvdXNlIG9mIFNpbW9uIGFuZCBBbmRyZXcsIHdpdGggSmFtZXMgYW5kIEpvaG4uCkJ1dCBTaW1vbidzIHdpZmUncyBtb3RoZXIgbGF5IHNpY2sgb2YgYSBmZXZlciwgYW5kIGFub24gdGhleSB0ZWxsIGhpbSBvZiBoZXIuCkFuZCBoZSBjYW1lIGFuZCB0b29rIGhlciBieSB0aGUgaGFuZCwgYW5kIGxpZnRlZCBoZXIgdXA7IGFuZCBpbW1lZGlhdGVseSB0aGUgZmV2ZXIgbGVmdCBoZXIsIGFuZCBzaGUgbWluaXN0ZXJlZCB1bnRvIHRoZW0uCkFuZCBhdCBldmVuLCB3aGVuIHRoZSBzdW4gZGlkIHNldCwgdGhleSBicm91Z2h0IHVudG8gaGltIGFsbCB0aGF0IHdlcmUgZGlzZWFzZWQsIGFuZCB0aGVtIHRoYXQgd2VyZSBwb3NzZXNzZWQgd2l0aCBkZXZpbHMuCkFuZCBhbGwgdGhlIGNpdHkgd2FzIGdhdGhlcmVkIHRvZ2V0aGVyIGF0IHRoZSBkb29yLgpBbmQgaGUgaGVhbGVkIG1hbnkgdGhhdCB3ZXJlIHNpY2sgb2YgZGl2ZXJzIGRpc2Vhc2VzLCBhbmQgY2FzdCBvdXQgbWFueSBkZXZpbHM7IGFuZCBzdWZmZXJlZCBub3QgdGhlIGRldmlscyB0byBzcGVhaywgYmVjYXVzZSB0aGV5IGtuZXcgaGltLgpBbmQgaW4gdGhlIG1vcm5pbmcsIHJpc2luZyB1cCBhIGdyZWF0IHdoaWxlIGJlZm9yZSBkYXksIGhlIHdlbnQgb3V0LCBhbmQgZGVwYXJ0ZWQgaW50byBhIHNvbGl0YXJ5IHBsYWNlLCBhbmQgdGhlcmUgcHJheWVkLgpBbmQgU2ltb24gYW5kIHRoZXkgdGhhdCB3ZXJlIHdpdGggaGltIGZvbGxvd2VkIGFmdGVyIGhpbS4KQW5kIHdoZW4gdGhleSBoYWQgZm91bmQgaGltLCB0aGV5IHNhaWQgdW50byBoaW0sIEFsbCBtZW4gc2VlayBmb3IgdGhlZS4KQW5kIGhlIHNhaWQgdW50byB0aGVtLCBMZXQgdXMgZ28gaW50byB0aGUgbmV4dCB0b3ducywgdGhhdCBJIG1heSBwcmVhY2ggdGhlcmUgYWxzbzogZm9yIHRoZXJlZm9yZSBjYW1lIEkgZm9ydGguCkFuZCBoZSBwcmVhY2hlZCBpbiB0aGVpciBzeW5hZ29ndWVzIHRocm91Z2hvdXQgYWxsIEdhbGlsZWUsIGFuZCBjYXN0IG91dCBkZXZpbHMuCkFuZCB0aGVyZSBjYW1lIGEgbGVwZXIgdG8gaGltLCBiZXNlZWNoaW5nIGhpbSwgYW5kIGtuZWVsaW5nIGRvd24gdG8gaGltLCBhbmQgc2F5aW5nIHVudG8gaGltLCBJZiB0aG91IHdpbHQsIHRob3UgY2Fuc3QgbWFrZSBtZSBjbGVhbi4KQW5kIEplc3VzLCBtb3ZlZCB3aXRoIGNvbXBhc3Npb24sIHB1dCBmb3J0aCBoaXMgaGFuZCwgYW5kIHRvdWNoZWQgaGltLCBhbmQgc2FpdGggdW50byBoaW0sIEkgd2lsbDsgYmUgdGhvdSBjbGVhbi4KQW5kIGFzIHNvb24gYXMgaGUgaGFkIHNwb2tlbiwgaW1tZWRpYXRlbHkgdGhlIGxlcHJvc3kgZGVwYXJ0ZWQgZnJvbSBoaW0sIGFuZCBoZSB3YXMgY2xlYW5zZWQuCkFuZCBoZSBzdHJhaXRseSBjaGFyZ2VkIGhpbSwgYW5kIGZvcnRod2l0aCBzZW50IGhpbSBhd2F5OwpBbmQgc2FpdGggdW50byBoaW0sIFNlZSB0aG91IHNheSBub3RoaW5nIHRvIGFueSBtYW46IGJ1dCBnbyB0aHkgd2F5LCBzaGV3IHRoeXNlbGYgdG8gdGhlIHByaWVzdCwgYW5kIG9mZmVyIGZvciB0aHkgY2xlYW5zaW5nIHRob3NlIHRoaW5ncyB3aGljaCBNb3NlcyBjb21tYW5kZWQsIGZvciBhIHRlc3RpbW9ueSB1bnRvIHRoZW0uCkJ1dCBoZSB3ZW50IG91dCwgYW5kIGJlZ2FuIHRvIHB1Ymxpc2ggaXQgbXVjaCwgYW5kIHRvIGJsYXplIGFicm9hZCB0aGUgbWF0dGVyLCBpbnNvbXVjaCB0aGF0IEplc3VzIGNvdWxkIG5vIG1vcmUgb3Blbmx5IGVudGVyIGludG8gdGhlIGNpdHksIGJ1dCB3YXMgd2l0aG91dCBpbiBkZXNlcnQgcGxhY2VzOiBhbmQgdGhleSBjYW1lIHRvIGhpbSBmcm9tIGV2ZXJ5IHF1YXJ0ZXIuCkFuZCBhZ2FpbiBoZSBlbnRlcmVkIGludG8gQ2FwZXJuYXVtIGFmdGVyIHNvbWUgZGF5czsgYW5kIGl0IHdhcyBub2lzZWQgdGhhdCBoZSB3YXMgaW4gdGhlIGhvdXNlLgpBbmQgc3RyYWlnaHR3YXkgbWFueSB3ZXJlIGdhdGhlcmVkIHRvZ2V0aGVyLCBpbnNvbXVjaCB0aGF0IHRoZXJlIHdhcyBubyByb29tIHRvIHJlY2VpdmUgdGhlbSwgbm8sIG5vdCBzbyBtdWNoIGFzIGFib3V0IHRoZSBkb29yOiBhbmQgaGUgcHJlYWNoZWQgdGhlIHdvcmQgdW50byB0aGVtLgpBbmQgdGhleSBjb21lIHVudG8gaGltLCBicmluZ2luZyBvbmUgc2ljayBvZiB0aGUgcGFsc3ksIHdoaWNoIHdhcyBib3JuZSBvZiBmb3VyLgpBbmQgd2hlbiB0aGV5IGNvdWxkIG5vdCBjb21lIG5pZ2ggdW50byBoaW0gZm9yIHRoZSBwcmVzcywgdGhleSB1bmNvdmVyZWQgdGhlIHJvb2Ygd2hlcmUgaGUgd2FzOiBhbmQgd2hlbiB0aGV5IGhhZCBicm9rZW4gaXQgdXAsIHRoZXkgbGV0IGRvd24gdGhlIGJlZCB3aGVyZWluIHRoZSBzaWNrIG9mIHRoZSBwYWxzeSBsYXkuCldoZW4gSmVzdXMgc2F3IHRoZWlyIGZhaXRoLCBoZSBzYWlkIHVudG8gdGhlIHNpY2sgb2YgdGhlIHBhbHN5LCBTb24sIHRoeSBzaW5zIGJlIGZvcmdpdmVuIHRoZWUuCkJ1dCB0aGVyZSB3YXMgY2VydGFpbiBvZiB0aGUgc2NyaWJlcyBzaXR0aW5nIHRoZXJlLCBhbmQgcmVhc29uaW5nIGluIHRoZWlyIGhlYXJ0cywKV2h5IGRvdGggdGhpcyBtYW4gdGh1cyBzcGVhayBibGFzcGhlbWllcz8gd2hvIGNhbiBmb3JnaXZlIHNpbnMgYnV0IEdvZCBvbmx5PwpBbmQgaW1tZWRpYXRlbHkgd2hlbiBKZXN1cyBwZXJjZWl2ZWQgaW4gaGlzIHNwaXJpdCB0aGF0IHRoZXkgc28gcmVhc29uZWQgd2l0aGluIHRoZW1zZWx2ZXMsIGhlIHNhaWQgdW50byB0aGVtLCBXaHkgcmVhc29uIHllIHRoZXNlIHRoaW5ncyBpbiB5b3VyIGhlYXJ0cz8KV2hldGhlciBpcyBpdCBlYXNpZXIgdG8gc2F5IHRvIHRoZSBzaWNrIG9mIHRoZSBwYWxzeSwgVGh5IHNpbnMgYmUgZm9yZ2l2ZW4gdGhlZTsgb3IgdG8gc2F5LCBBcmlzZSwgYW5kIHRha2UgdXAgdGh5IGJlZCwgYW5kIHdhbGs/CkJ1dCB0aGF0IHllIG1heSBrbm93IHRoYXQgdGhlIFNvbiBvZiBtYW4gaGF0aCBwb3dlciBvbiBlYXJ0aCB0byBmb3JnaXZlIHNpbnMsIChoZSBzYWl0aCB0byB0aGUgc2ljayBvZiB0aGUgcGFsc3ksKQpJIHNheSB1bnRvIHRoZWUsIEFyaXNlLCBhbmQgdGFrZSB1cCB0aHkgYmVkLCBhbmQgZ28gdGh5IHdheSBpbnRvIHRoaW5lIGhvdXNlLgpBbmQgaW1tZWRpYXRlbHkgaGUgYXJvc2UsIHRvb2sgdXAgdGhlIGJlZCwgYW5kIHdlbnQgZm9ydGggYmVmb3JlIHRoZW0gYWxsOyBpbnNvbXVjaCB0aGF0IHRoZXkgd2VyZSBhbGwgYW1hemVkLCBhbmQgZ2xvcmlmaWVkIEdvZCwgc2F5aW5nLCBXZSBuZXZlciBzYXcgaXQgb24gdGhpcyBmYXNoaW9uLgpBbmQgaGUgd2VudCBmb3J0aCBhZ2FpbiBieSB0aGUgc2VhIHNpZGU7IGFuZCBhbGwgdGhlIG11bHRpdHVkZSByZXNvcnRlZCB1bnRvIGhpbSwgYW5kIGhlIHRhdWdodCB0aGVtLgpBbmQgYXMgaGUgcGFzc2VkIGJ5LCBoZSBzYXcgTGV2aSB0aGUgc29uIG9mIEFscGhhZXVzIHNpdHRpbmcgYXQgdGhlIHJlY2VpcHQgb2YgY3VzdG9tLCBhbmQgc2FpZCB1bnRvIGhpbSwgRm9sbG93IG1lLiBBbmQgaGUgYXJvc2UgYW5kIGZvbGxvd2VkIGhpbS4KQW5kIGl0IGNhbWUgdG8gcGFzcywgdGhhdCwgYXMgSmVzdXMgc2F0IGF0IG1lYXQgaW4gaGlzIGhvdXNlLCBtYW55IHB1YmxpY2FucyBhbmQgc2lubmVycyBzYXQgYWxzbyB0b2dldGhlciB3aXRoIEplc3VzIGFuZCBoaXMgZGlzY2lwbGVzOiBmb3IgdGhlcmUgd2VyZSBtYW55LCBhbmQgdGhleSBmb2xsb3dlZCBoaW0uCkFuZCB3aGVuIHRoZSBzY3JpYmVzIGFuZCBQaGFyaXNlZXMgc2F3IGhpbSBlYXQgd2l0aCBwdWJsaWNhbnMgYW5kIHNpbm5lcnMsIHRoZXkgc2FpZCB1bnRvIGhpcyBkaXNjaXBsZXMsIEhvdyBpcyBpdCB0aGF0IGhlIGVhdGV0aCBhbmQgZHJpbmtldGggd2l0aCBwdWJsaWNhbnMgYW5kIHNpbm5lcnM/CldoZW4gSmVzdXMgaGVhcmQgaXQsIGhlIHNhaXRoIHVudG8gdGhlbSwgVGhleSB0aGF0IGFyZSB3aG9sZSBoYXZlIG5vIG5lZWQgb2YgdGhlIHBoeXNpY2lhbiwgYnV0IHRoZXkgdGhhdCBhcmUgc2ljazogSSBjYW1lIG5vdCB0byBjYWxsIHRoZSByaWdodGVvdXMsIGJ1dCBzaW5uZXJzIHRvIHJlcGVudGFuY2UuCkFuZCB0aGUgZGlzY2lwbGVzIG9mIEpvaG4gYW5kIG9mIHRoZSBQaGFyaXNlZXMgdXNlZCB0byBmYXN0OiBhbmQgdGhleSBjb21lIGFuZCBzYXkgdW50byBoaW0sIFdoeSBkbyB0aGUgZGlzY2lwbGVzIG9mIEpvaG4gYW5kIG9mIHRoZSBQaGFyaXNlZXMgZmFzdCwgYnV0IHRoeSBkaXNjaXBsZXMgZmFzdCBub3Q/CkFuZCBKZXN1cyBzYWlkIHVudG8gdGhlbSwgQ2FuIHRoZSBjaGlsZHJlbiBvZiB0aGUgYnJpZGVjaGFtYmVyIGZhc3QsIHdoaWxlIHRoZSBicmlkZWdyb29tIGlzIHdpdGggdGhlbT8gYXMgbG9uZyBhcyB0aGV5IGhhdmUgdGhlIGJyaWRlZ3Jvb20gd2l0aCB0aGVtLCB0aGV5IGNhbm5vdCBmYXN0LgpCdXQgdGhlIGRheXMgd2lsbCBjb21lLCB3aGVuIHRoZSBicmlkZWdyb29tIHNoYWxsIGJlIHRha2VuIGF3YXkgZnJvbSB0aGVtLCBhbmQgdGhlbiBzaGFsbCB0aGV5IGZhc3QgaW4gdGhvc2UgZGF5cy4KTm8gbWFuIGFsc28gc2V3ZXRoIGEgcGllY2Ugb2YgbmV3IGNsb3RoIG9uIGFuIG9sZCBnYXJtZW50OiBlbHNlIHRoZSBuZXcgcGllY2UgdGhhdCBmaWxsZWQgaXQgdXAgdGFrZXRoIGF3YXkgZnJvbSB0aGUgb2xkLCBhbmQgdGhlIHJlbnQgaXMgbWFkZSB3b3JzZS4KQW5kIG5vIG1hbiBwdXR0ZXRoIG5ldyB3aW5lIGludG8gb2xkIGJvdHRsZXM6IGVsc2UgdGhlIG5ldyB3aW5lIGRvdGggYnVyc3QgdGhlIGJvdHRsZXMsIGFuZCB0aGUgd2luZSBpcyBzcGlsbGVkLCBhbmQgdGhlIGJvdHRsZXMgd2lsbCBiZSBtYXJyZWQ6IGJ1dCBuZXcgd2luZSBtdXN0IGJlIHB1dCBpbnRvIG5ldyBib3R0bGVzLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB0aGF0IGhlIHdlbnQgdGhyb3VnaCB0aGUgY29ybiBmaWVsZHMgb24gdGhlIHNhYmJhdGggZGF5OyBhbmQgaGlzIGRpc2NpcGxlcyBiZWdhbiwgYXMgdGhleSB3ZW50LCB0byBwbHVjayB0aGUgZWFycyBvZiBjb3JuLgpBbmQgdGhlIFBoYXJpc2VlcyBzYWlkIHVudG8gaGltLCBCZWhvbGQsIHdoeSBkbyB0aGV5IG9uIHRoZSBzYWJiYXRoIGRheSB0aGF0IHdoaWNoIGlzIG5vdCBsYXdmdWw/CkFuZCBoZSBzYWlkIHVudG8gdGhlbSwgSGF2ZSB5ZSBuZXZlciByZWFkIHdoYXQgRGF2aWQgZGlkLCB3aGVuIGhlIGhhZCBuZWVkLCBhbmQgd2FzIGFuIGh1bmdyZWQsIGhlLCBhbmQgdGhleSB0aGF0IHdlcmUgd2l0aCBoaW0/CkhvdyBoZSB3ZW50IGludG8gdGhlIGhvdXNlIG9mIEdvZCBpbiB0aGUgZGF5cyBvZiBBYmlhdGhhciB0aGUgaGlnaCBwcmllc3QsIGFuZCBkaWQgZWF0IHRoZSBzaGV3YnJlYWQsIHdoaWNoIGlzIG5vdCBsYXdmdWwgdG8gZWF0IGJ1dCBmb3IgdGhlIHByaWVzdHMsIGFuZCBnYXZlIGFsc28gdG8gdGhlbSB3aGljaCB3ZXJlIHdpdGggaGltPwpBbmQgaGUgc2FpZCB1bnRvIHRoZW0sIFRoZSBzYWJiYXRoIHdhcyBtYWRlIGZvciBtYW4sIGFuZCBub3QgbWFuIGZvciB0aGUgc2FiYmF0aDoKVGhlcmVmb3JlIHRoZSBTb24gb2YgbWFuIGlzIExvcmQgYWxzbyBvZiB0aGUgc2FiYmF0aC4KQW5kIGhlIGVudGVyZWQgYWdhaW4gaW50byB0aGUgc3luYWdvZ3VlOyBhbmQgdGhlcmUgd2FzIGEgbWFuIHRoZXJlIHdoaWNoIGhhZCBhIHdpdGhlcmVkIGhhbmQuCkFuZCB0aGV5IHdhdGNoZWQgaGltLCB3aGV0aGVyIGhlIHdvdWxkIGhlYWwgaGltIG9uIHRoZSBzYWJiYXRoIGRheTsgdGhhdCB0aGV5IG1pZ2h0IGFjY3VzZSBoaW0uCkFuZCBoZSBzYWl0aCB1bnRvIHRoZSBtYW4gd2hpY2ggaGFkIHRoZSB3aXRoZXJlZCBoYW5kLCBTdGFuZCBmb3J0aC4KQW5kIGhlIHNhaXRoIHVudG8gdGhlbSwgSXMgaXQgbGF3ZnVsIHRvIGRvIGdvb2Qgb24gdGhlIHNhYmJhdGggZGF5cywgb3IgdG8gZG8gZXZpbD8gdG8gc2F2ZSBsaWZlLCBvciB0byBraWxsPyBCdXQgdGhleSBoZWxkIHRoZWlyIHBlYWNlLgpBbmQgd2hlbiBoZSBoYWQgbG9va2VkIHJvdW5kIGFib3V0IG9uIHRoZW0gd2l0aCBhbmdlciwgYmVpbmcgZ3JpZXZlZCBmb3IgdGhlIGhhcmRuZXNzIG9mIHRoZWlyIGhlYXJ0cywgaGUgc2FpdGggdW50byB0aGUgbWFuLCBTdHJldGNoIGZvcnRoIHRoaW5lIGhhbmQuIEFuZCBoZSBzdHJldGNoZWQgaXQgb3V0OiBhbmQgaGlzIGhhbmQgd2FzIHJlc3RvcmVkIHdob2xlIGFzIHRoZSBvdGhlci4KQW5kIHRoZSBQaGFyaXNlZXMgd2VudCBmb3J0aCwgYW5kIHN0cmFpZ2h0d2F5IHRvb2sgY291bnNlbCB3aXRoIHRoZSBIZXJvZGlhbnMgYWdhaW5zdCBoaW0sIGhvdyB0aGV5IG1pZ2h0IGRlc3Ryb3kgaGltLgpCdXQgSmVzdXMgd2l0aGRyZXcgaGltc2VsZiB3aXRoIGhpcyBkaXNjaXBsZXMgdG8gdGhlIHNlYTogYW5kIGEgZ3JlYXQgbXVsdGl0dWRlIGZyb20gR2FsaWxlZSBmb2xsb3dlZCBoaW0sIGFuZCBmcm9tIEp1ZGFlYSwKQW5kIGZyb20gSmVydXNhbGVtLCBhbmQgZnJvbSBJZHVtYWVhLCBhbmQgZnJvbSBiZXlvbmQgSm9yZGFuOyBhbmQgdGhleSBhYm91dCBUeXJlIGFuZCBTaWRvbiwgYSBncmVhdCBtdWx0aXR1ZGUsIHdoZW4gdGhleSBoYWQgaGVhcmQgd2hhdCBncmVhdCB0aGluZ3MgaGUgZGlkLCBjYW1lIHVudG8gaGltLgpBbmQgaGUgc3Bha2UgdG8gaGlzIGRpc2NpcGxlcywgdGhhdCBhIHNtYWxsIHNoaXAgc2hvdWxkIHdhaXQgb24gaGltIGJlY2F1c2Ugb2YgdGhlIG11bHRpdHVkZSwgbGVzdCB0aGV5IHNob3VsZCB0aHJvbmcgaGltLgpGb3IgaGUgaGFkIGhlYWxlZCBtYW55OyBpbnNvbXVjaCB0aGF0IHRoZXkgcHJlc3NlZCB1cG9uIGhpbSBmb3IgdG8gdG91Y2ggaGltLCBhcyBtYW55IGFzIGhhZCBwbGFndWVzLgpBbmQgdW5jbGVhbiBzcGlyaXRzLCB3aGVuIHRoZXkgc2F3IGhpbSwgZmVsbCBkb3duIGJlZm9yZSBoaW0sIGFuZCBjcmllZCwgc2F5aW5nLCBUaG91IGFydCB0aGUgU29uIG9mIEdvZC4KQW5kIGhlIHN0cmFpdGx5IGNoYXJnZWQgdGhlbSB0aGF0IHRoZXkgc2hvdWxkIG5vdCBtYWtlIGhpbSBrbm93bi4KQW5kIGhlIGdvZXRoIHVwIGludG8gYSBtb3VudGFpbiwgYW5kIGNhbGxldGggdW50byBoaW0gd2hvbSBoZSB3b3VsZDogYW5kIHRoZXkgY2FtZSB1bnRvIGhpbS4KQW5kIGhlIG9yZGFpbmVkIHR3ZWx2ZSwgdGhhdCB0aGV5IHNob3VsZCBiZSB3aXRoIGhpbSwgYW5kIHRoYXQgaGUgbWlnaHQgc2VuZCB0aGVtIGZvcnRoIHRvIHByZWFjaCwKQW5kIHRvIGhhdmUgcG93ZXIgdG8gaGVhbCBzaWNrbmVzc2VzLCBhbmQgdG8gY2FzdCBvdXQgZGV2aWxzOgpBbmQgU2ltb24gaGUgc3VybmFtZWQgUGV0ZXI7CkFuZCBKYW1lcyB0aGUgc29uIG9mIFplYmVkZWUsIGFuZCBKb2huIHRoZSBicm90aGVyIG9mIEphbWVzOyBhbmQgaGUgc3VybmFtZWQgdGhlbSBCb2FuZXJnZXMsIHdoaWNoIGlzLCBUaGUgc29ucyBvZiB0aHVuZGVyOgpBbmQgQW5kcmV3LCBhbmQgUGhpbGlwLCBhbmQgQmFydGhvbG9tZXcsIGFuZCBNYXR0aGV3LCBhbmQgVGhvbWFzLCBhbmQgSmFtZXMgdGhlIHNvbiBvZiBBbHBoYWV1cywgYW5kIFRoYWRkYWV1cywgYW5kIFNpbW9uIHRoZSBDYW5hYW5pdGUsCkFuZCBKdWRhcyBJc2NhcmlvdCwgd2hpY2ggYWxzbyBiZXRyYXllZCBoaW06IGFuZCB0aGV5IHdlbnQgaW50byBhbiBob3VzZS4KQW5kIHRoZSBtdWx0aXR1ZGUgY29tZXRoIHRvZ2V0aGVyIGFnYWluLCBzbyB0aGF0IHRoZXkgY291bGQgbm90IHNvIG11Y2ggYXMgZWF0IGJyZWFkLgpBbmQgd2hlbiBoaXMgZnJpZW5kcyBoZWFyZCBvZiBpdCwgdGhleSB3ZW50IG91dCB0byBsYXkgaG9sZCBvbiBoaW06IGZvciB0aGV5IHNhaWQsIEhlIGlzIGJlc2lkZSBoaW1zZWxmLgpBbmQgdGhlIHNjcmliZXMgd2hpY2ggY2FtZSBkb3duIGZyb20gSmVydXNhbGVtIHNhaWQsIEhlIGhhdGggQmVlbHplYnViLCBhbmQgYnkgdGhlIHByaW5jZSBvZiB0aGUgZGV2aWxzIGNhc3RldGggaGUgb3V0IGRldmlscy4KQW5kIGhlIGNhbGxlZCB0aGVtIHVudG8gaGltLCBhbmQgc2FpZCB1bnRvIHRoZW0gaW4gcGFyYWJsZXMsIEhvdyBjYW4gU2F0YW4gY2FzdCBvdXQgU2F0YW4/CkFuZCBpZiBhIGtpbmdkb20gYmUgZGl2aWRlZCBhZ2FpbnN0IGl0c2VsZiwgdGhhdCBraW5nZG9tIGNhbm5vdCBzdGFuZC4KQW5kIGlmIGEgaG91c2UgYmUgZGl2aWRlZCBhZ2FpbnN0IGl0c2VsZiwgdGhhdCBob3VzZSBjYW5ub3Qgc3RhbmQuCkFuZCBpZiBTYXRhbiByaXNlIHVwIGFnYWluc3QgaGltc2VsZiwgYW5kIGJlIGRpdmlkZWQsIGhlIGNhbm5vdCBzdGFuZCwgYnV0IGhhdGggYW4gZW5kLgpObyBtYW4gY2FuIGVudGVyIGludG8gYSBzdHJvbmcgbWFuJ3MgaG91c2UsIGFuZCBzcG9pbCBoaXMgZ29vZHMsIGV4Y2VwdCBoZSB3aWxsIGZpcnN0IGJpbmQgdGhlIHN0cm9uZyBtYW47IGFuZCB0aGVuIGhlIHdpbGwgc3BvaWwgaGlzIGhvdXNlLgpWZXJpbHkgSSBzYXkgdW50byB5b3UsIEFsbCBzaW5zIHNoYWxsIGJlIGZvcmdpdmVuIHVudG8gdGhlIHNvbnMgb2YgbWVuLCBhbmQgYmxhc3BoZW1pZXMgd2hlcmV3aXRoIHNvZXZlciB0aGV5IHNoYWxsIGJsYXNwaGVtZToKQnV0IGhlIHRoYXQgc2hhbGwgYmxhc3BoZW1lIGFnYWluc3QgdGhlIEhvbHkgR2hvc3QgaGF0aCBuZXZlciBmb3JnaXZlbmVzcywgYnV0IGlzIGluIGRhbmdlciBvZiBldGVybmFsIGRhbW5hdGlvbi4KQmVjYXVzZSB0aGV5IHNhaWQsIEhlIGhhdGggYW4gdW5jbGVhbiBzcGlyaXQuClRoZXJlIGNhbWUgdGhlbiBoaXMgYnJldGhyZW4gYW5kIGhpcyBtb3RoZXIsIGFuZCwgc3RhbmRpbmcgd2l0aG91dCwgc2VudCB1bnRvIGhpbSwgY2FsbGluZyBoaW0uCkFuZCB0aGUgbXVsdGl0dWRlIHNhdCBhYm91dCBoaW0sIGFuZCB0aGV5IHNhaWQgdW50byBoaW0sIEJlaG9sZCwgdGh5IG1vdGhlciBhbmQgdGh5IGJyZXRocmVuIHdpdGhvdXQgc2VlayBmb3IgdGhlZS4KQW5kIGhlIGFuc3dlcmVkIHRoZW0sIHNheWluZywgV2hvIGlzIG15IG1vdGhlciwgb3IgbXkgYnJldGhyZW4/CkFuZCBoZSBsb29rZWQgcm91bmQgYWJvdXQgb24gdGhlbSB3aGljaCBzYXQgYWJvdXQgaGltLCBhbmQgc2FpZCwgQmVob2xkIG15IG1vdGhlciBhbmQgbXkgYnJldGhyZW4hCkZvciB3aG9zb2V2ZXIgc2hhbGwgZG8gdGhlIHdpbGwgb2YgR29kLCB0aGUgc2FtZSBpcyBteSBicm90aGVyLCBhbmQgbXkgc2lzdGVyLCBhbmQgbW90aGVyLgpBbmQgaGUgYmVnYW4gYWdhaW4gdG8gdGVhY2ggYnkgdGhlIHNlYSBzaWRlOiBhbmQgdGhlcmUgd2FzIGdhdGhlcmVkIHVudG8gaGltIGEgZ3JlYXQgbXVsdGl0dWRlLCBzbyB0aGF0IGhlIGVudGVyZWQgaW50byBhIHNoaXAsIGFuZCBzYXQgaW4gdGhlIHNlYTsgYW5kIHRoZSB3aG9sZSBtdWx0aXR1ZGUgd2FzIGJ5IHRoZSBzZWEgb24gdGhlIGxhbmQuCkFuZCBoZSB0YXVnaHQgdGhlbSBtYW55IHRoaW5ncyBieSBwYXJhYmxlcywgYW5kIHNhaWQgdW50byB0aGVtIGluIGhpcyBkb2N0cmluZSwKSGVhcmtlbjsgQmVob2xkLCB0aGVyZSB3ZW50IG91dCBhIHNvd2VyIHRvIHNvdzoKQW5kIGl0IGNhbWUgdG8gcGFzcywgYXMgaGUgc293ZWQsIHNvbWUgZmVsbCBieSB0aGUgd2F5IHNpZGUsIGFuZCB0aGUgZm93bHMgb2YgdGhlIGFpciBjYW1lIGFuZCBkZXZvdXJlZCBpdCB1cC4KQW5kIHNvbWUgZmVsbCBvbiBzdG9ueSBncm91bmQsIHdoZXJlIGl0IGhhZCBub3QgbXVjaCBlYXJ0aDsgYW5kIGltbWVkaWF0ZWx5IGl0IHNwcmFuZyB1cCwgYmVjYXVzZSBpdCBoYWQgbm8gZGVwdGggb2YgZWFydGg6CkJ1dCB3aGVuIHRoZSBzdW4gd2FzIHVwLCBpdCB3YXMgc2NvcmNoZWQ7IGFuZCBiZWNhdXNlIGl0IGhhZCBubyByb290LCBpdCB3aXRoZXJlZCBhd2F5LgpBbmQgc29tZSBmZWxsIGFtb25nIHRob3JucywgYW5kIHRoZSB0aG9ybnMgZ3JldyB1cCwgYW5kIGNob2tlZCBpdCwgYW5kIGl0IHlpZWxkZWQgbm8gZnJ1aXQuCkFuZCBvdGhlciBmZWxsIG9uIGdvb2QgZ3JvdW5kLCBhbmQgZGlkIHlpZWxkIGZydWl0IHRoYXQgc3ByYW5nIHVwIGFuZCBpbmNyZWFzZWQ7IGFuZCBicm91Z2h0IGZvcnRoLCBzb21lIHRoaXJ0eSwgYW5kIHNvbWUgc2l4dHksIGFuZCBzb21lIGFuIGh1bmRyZWQuCkFuZCBoZSBzYWlkIHVudG8gdGhlbSwgSGUgdGhhdCBoYXRoIGVhcnMgdG8gaGVhciwgbGV0IGhpbSBoZWFyLgpBbmQgd2hlbiBoZSB3YXMgYWxvbmUsIHRoZXkgdGhhdCB3ZXJlIGFib3V0IGhpbSB3aXRoIHRoZSB0d2VsdmUgYXNrZWQgb2YgaGltIHRoZSBwYXJhYmxlLgpBbmQgaGUgc2FpZCB1bnRvIHRoZW0sIFVudG8geW91IGl0IGlzIGdpdmVuIHRvIGtub3cgdGhlIG15c3Rlcnkgb2YgdGhlIGtpbmdkb20gb2YgR29kOiBidXQgdW50byB0aGVtIHRoYXQgYXJlIHdpdGhvdXQsIGFsbCB0aGVzZSB0aGluZ3MgYXJlIGRvbmUgaW4gcGFyYWJsZXM6ClRoYXQgc2VlaW5nIHRoZXkgbWF5IHNlZSwgYW5kIG5vdCBwZXJjZWl2ZTsgYW5kIGhlYXJpbmcgdGhleSBtYXkgaGVhciwgYW5kIG5vdCB1bmRlcnN0YW5kOyBsZXN0IGF0IGFueSB0aW1lIHRoZXkgc2hvdWxkIGJlIGNvbnZlcnRlZCwgYW5kIHRoZWlyIHNpbnMgc2hvdWxkIGJlIGZvcmdpdmVuIHRoZW0uCkFuZCBoZSBzYWlkIHVudG8gdGhlbSwgS25vdyB5ZSBub3QgdGhpcyBwYXJhYmxlPyBhbmQgaG93IHRoZW4gd2lsbCB5ZSBrbm93IGFsbCBwYXJhYmxlcz8KVGhlIHNvd2VyIHNvd2V0aCB0aGUgd29yZC4KQW5kIHRoZXNlIGFyZSB0aGV5IGJ5IHRoZSB3YXkgc2lkZSwgd2hlcmUgdGhlIHdvcmQgaXMgc293bjsgYnV0IHdoZW4gdGhleSBoYXZlIGhlYXJkLCBTYXRhbiBjb21ldGggaW1tZWRpYXRlbHksIGFuZCB0YWtldGggYXdheSB0aGUgd29yZCB0aGF0IHdhcyBzb3duIGluIHRoZWlyIGhlYXJ0cy4KQW5kIHRoZXNlIGFyZSB0aGV5IGxpa2V3aXNlIHdoaWNoIGFyZSBzb3duIG9uIHN0b255IGdyb3VuZDsgd2hvLCB3aGVuIHRoZXkgaGF2ZSBoZWFyZCB0aGUgd29yZCwgaW1tZWRpYXRlbHkgcmVjZWl2ZSBpdCB3aXRoIGdsYWRuZXNzOwpBbmQgaGF2ZSBubyByb290IGluIHRoZW1zZWx2ZXMsIGFuZCBzbyBlbmR1cmUgYnV0IGZvciBhIHRpbWU6IGFmdGVyd2FyZCwgd2hlbiBhZmZsaWN0aW9uIG9yIHBlcnNlY3V0aW9uIGFyaXNldGggZm9yIHRoZSB3b3JkJ3Mgc2FrZSwgaW1tZWRpYXRlbHkgdGhleSBhcmUgb2ZmZW5kZWQuCkFuZCB0aGVzZSBhcmUgdGhleSB3aGljaCBhcmUgc293biBhbW9uZyB0aG9ybnM7IHN1Y2ggYXMgaGVhciB0aGUgd29yZCwKQW5kIHRoZSBjYXJlcyBvZiB0aGlzIHdvcmxkLCBhbmQgdGhlIGRlY2VpdGZ1bG5lc3Mgb2YgcmljaGVzLCBhbmQgdGhlIGx1c3RzIG9mIG90aGVyIHRoaW5ncyBlbnRlcmluZyBpbiwgY2hva2UgdGhlIHdvcmQsIGFuZCBpdCBiZWNvbWV0aCB1bmZydWl0ZnVsLgpBbmQgdGhlc2UgYXJlIHRoZXkgd2hpY2ggYXJlIHNvd24gb24gZ29vZCBncm91bmQ7IHN1Y2ggYXMgaGVhciB0aGUgd29yZCwgYW5kIHJlY2VpdmUgaXQsIGFuZCBicmluZyBmb3J0aCBmcnVpdCwgc29tZSB0aGlydHlmb2xkLCBzb21lIHNpeHR5LCBhbmQgc29tZSBhbiBodW5kcmVkLgpBbmQgaGUgc2FpZCB1bnRvIHRoZW0sIElzIGEgY2FuZGxlIGJyb3VnaHQgdG8gYmUgcHV0IHVuZGVyIGEgYnVzaGVsLCBvciB1bmRlciBhIGJlZD8gYW5kIG5vdCB0byBiZSBzZXQgb24gYSBjYW5kbGVzdGljaz8KRm9yIHRoZXJlIGlzIG5vdGhpbmcgaGlkLCB3aGljaCBzaGFsbCBub3QgYmUgbWFuaWZlc3RlZDsgbmVpdGhlciB3YXMgYW55IHRoaW5nIGtlcHQgc2VjcmV0LCBidXQgdGhhdCBpdCBzaG91bGQgY29tZSBhYnJvYWQuCklmIGFueSBtYW4gaGF2ZSBlYXJzIHRvIGhlYXIsIGxldCBoaW0gaGVhci4KQW5kIGhlIHNhaWQgdW50byB0aGVtLCBUYWtlIGhlZWQgd2hhdCB5ZSBoZWFyOiB3aXRoIHdoYXQgbWVhc3VyZSB5ZSBtZXRlLCBpdCBzaGFsbCBiZSBtZWFzdXJlZCB0byB5b3U6IGFuZCB1bnRvIHlvdSB0aGF0IGhlYXIgc2hhbGwgbW9yZSBiZSBnaXZlbi4KRm9yIGhlIHRoYXQgaGF0aCwgdG8gaGltIHNoYWxsIGJlIGdpdmVuOiBhbmQgaGUgdGhhdCBoYXRoIG5vdCwgZnJvbSBoaW0gc2hhbGwgYmUgdGFrZW4gZXZlbiB0aGF0IHdoaWNoIGhlIGhhdGguCkFuZCBoZSBzYWlkLCBTbyBpcyB0aGUga2luZ2RvbSBvZiBHb2QsIGFzIGlmIGEgbWFuIHNob3VsZCBjYXN0IHNlZWQgaW50byB0aGUgZ3JvdW5kOwpBbmQgc2hvdWxkIHNsZWVwLCBhbmQgcmlzZSBuaWdodCBhbmQgZGF5LCBhbmQgdGhlIHNlZWQgc2hvdWxkIHNwcmluZyBhbmQgZ3JvdyB1cCwgaGUga25vd2V0aCBub3QgaG93LgpGb3IgdGhlIGVhcnRoIGJyaW5nZXRoIGZvcnRoIGZydWl0IG9mIGhlcnNlbGY7IGZpcnN0IHRoZSBibGFkZSwgdGhlbiB0aGUgZWFyLCBhZnRlciB0aGF0IHRoZSBmdWxsIGNvcm4gaW4gdGhlIGVhci4KQnV0IHdoZW4gdGhlIGZydWl0IGlzIGJyb3VnaHQgZm9ydGgsIGltbWVkaWF0ZWx5IGhlIHB1dHRldGggaW4gdGhlIHNpY2tsZSwgYmVjYXVzZSB0aGUgaGFydmVzdCBpcyBjb21lLgpBbmQgaGUgc2FpZCwgV2hlcmV1bnRvIHNoYWxsIHdlIGxpa2VuIHRoZSBraW5nZG9tIG9mIEdvZD8gb3Igd2l0aCB3aGF0IGNvbXBhcmlzb24gc2hhbGwgd2UgY29tcGFyZSBpdD8KSXQgaXMgbGlrZSBhIGdyYWluIG9mIG11c3RhcmQgc2VlZCwgd2hpY2gsIHdoZW4gaXQgaXMgc293biBpbiB0aGUgZWFydGgsIGlzIGxlc3MgdGhhbiBhbGwgdGhlIHNlZWRzIHRoYXQgYmUgaW4gdGhlIGVhcnRoOgpCdXQgd2hlbiBpdCBpcyBzb3duLCBpdCBncm93ZXRoIHVwLCBhbmQgYmVjb21ldGggZ3JlYXRlciB0aGFuIGFsbCBoZXJicywgYW5kIHNob290ZXRoIG91dCBncmVhdCBicmFuY2hlczsgc28gdGhhdCB0aGUgZm93bHMgb2YgdGhlIGFpciBtYXkgbG9kZ2UgdW5kZXIgdGhlIHNoYWRvdyBvZiBpdC4KQW5kIHdpdGggbWFueSBzdWNoIHBhcmFibGVzIHNwYWtlIGhlIHRoZSB3b3JkIHVudG8gdGhlbSwgYXMgdGhleSB3ZXJlIGFibGUgdG8gaGVhciBpdC4KQnV0IHdpdGhvdXQgYSBwYXJhYmxlIHNwYWtlIGhlIG5vdCB1bnRvIHRoZW06IGFuZCB3aGVuIHRoZXkgd2VyZSBhbG9uZSwgaGUgZXhwb3VuZGVkIGFsbCB0aGluZ3MgdG8gaGlzIGRpc2NpcGxlcy4KQW5kIHRoZSBzYW1lIGRheSwgd2hlbiB0aGUgZXZlbiB3YXMgY29tZSwgaGUgc2FpdGggdW50byB0aGVtLCBMZXQgdXMgcGFzcyBvdmVyIHVudG8gdGhlIG90aGVyIHNpZGUuCkFuZCB3aGVuIHRoZXkgaGFkIHNlbnQgYXdheSB0aGUgbXVsdGl0dWRlLCB0aGV5IHRvb2sgaGltIGV2ZW4gYXMgaGUgd2FzIGluIHRoZSBzaGlwLiBBbmQgdGhlcmUgd2VyZSBhbHNvIHdpdGggaGltIG90aGVyIGxpdHRsZSBzaGlwcy4KQW5kIHRoZXJlIGFyb3NlIGEgZ3JlYXQgc3Rvcm0gb2Ygd2luZCwgYW5kIHRoZSB3YXZlcyBiZWF0IGludG8gdGhlIHNoaXAsIHNvIHRoYXQgaXQgd2FzIG5vdyBmdWxsLgpBbmQgaGUgd2FzIGluIHRoZSBoaW5kZXIgcGFydCBvZiB0aGUgc2hpcCwgYXNsZWVwIG9uIGEgcGlsbG93OiBhbmQgdGhleSBhd2FrZSBoaW0sIGFuZCBzYXkgdW50byBoaW0sIE1hc3RlciwgY2FyZXN0IHRob3Ugbm90IHRoYXQgd2UgcGVyaXNoPwpBbmQgaGUgYXJvc2UsIGFuZCByZWJ1a2VkIHRoZSB3aW5kLCBhbmQgc2FpZCB1bnRvIHRoZSBzZWEsIFBlYWNlLCBiZSBzdGlsbC4gQW5kIHRoZSB3aW5kIGNlYXNlZCwgYW5kIHRoZXJlIHdhcyBhIGdyZWF0IGNhbG0uCkFuZCBoZSBzYWlkIHVudG8gdGhlbSwgV2h5IGFyZSB5ZSBzbyBmZWFyZnVsPyBob3cgaXMgaXQgdGhhdCB5ZSBoYXZlIG5vIGZhaXRoPwpBbmQgdGhleSBmZWFyZWQgZXhjZWVkaW5nbHksIGFuZCBzYWlkIG9uZSB0byBhbm90aGVyLCBXaGF0IG1hbm5lciBvZiBtYW4gaXMgdGhpcywgdGhhdCBldmVuIHRoZSB3aW5kIGFuZCB0aGUgc2VhIG9iZXkgaGltPwpBbmQgdGhleSBjYW1lIG92ZXIgdW50byB0aGUgb3RoZXIgc2lkZSBvZiB0aGUgc2VhLCBpbnRvIHRoZSBjb3VudHJ5IG9mIHRoZSBHYWRhcmVuZXMuCkFuZCB3aGVuIGhlIHdhcyBjb21lIG91dCBvZiB0aGUgc2hpcCwgaW1tZWRpYXRlbHkgdGhlcmUgbWV0IGhpbSBvdXQgb2YgdGhlIHRvbWJzIGEgbWFuIHdpdGggYW4gdW5jbGVhbiBzcGlyaXQsCldobyBoYWQgaGlzIGR3ZWxsaW5nIGFtb25nIHRoZSB0b21iczsgYW5kIG5vIG1hbiBjb3VsZCBiaW5kIGhpbSwgbm8sIG5vdCB3aXRoIGNoYWluczoKQmVjYXVzZSB0aGF0IGhlIGhhZCBiZWVuIG9mdGVuIGJvdW5kIHdpdGggZmV0dGVycyBhbmQgY2hhaW5zLCBhbmQgdGhlIGNoYWlucyBoYWQgYmVlbiBwbHVja2VkIGFzdW5kZXIgYnkgaGltLCBhbmQgdGhlIGZldHRlcnMgYnJva2VuIGluIHBpZWNlczogbmVpdGhlciBjb3VsZCBhbnkgbWFuIHRhbWUgaGltLgpBbmQgYWx3YXlzLCBuaWdodCBhbmQgZGF5LCBoZSB3YXMgaW4gdGhlIG1vdW50YWlucywgYW5kIGluIHRoZSB0b21icywgY3J5aW5nLCBhbmQgY3V0dGluZyBoaW1zZWxmIHdpdGggc3RvbmVzLgpCdXQgd2hlbiBoZSBzYXcgSmVzdXMgYWZhciBvZmYsIGhlIHJhbiBhbmQgd29yc2hpcHBlZCBoaW0sCkFuZCBjcmllZCB3aXRoIGEgbG91ZCB2b2ljZSwgYW5kIHNhaWQsIFdoYXQgaGF2ZSBJIHRvIGRvIHdpdGggdGhlZSwgSmVzdXMsIHRob3UgU29uIG9mIHRoZSBtb3N0IGhpZ2ggR29kPyBJIGFkanVyZSB0aGVlIGJ5IEdvZCwgdGhhdCB0aG91IHRvcm1lbnQgbWUgbm90LgpGb3IgaGUgc2FpZCB1bnRvIGhpbSwgQ29tZSBvdXQgb2YgdGhlIG1hbiwgdGhvdSB1bmNsZWFuIHNwaXJpdC4KQW5kIGhlIGFza2VkIGhpbSwgV2hhdCBpcyB0aHkgbmFtZT8gQW5kIGhlIGFuc3dlcmVkLCBzYXlpbmcsIE15IG5hbWUgaXMgTGVnaW9uOiBmb3Igd2UgYXJlIG1hbnkuCkFuZCBoZSBiZXNvdWdodCBoaW0gbXVjaCB0aGF0IGhlIHdvdWxkIG5vdCBzZW5kIHRoZW0gYXdheSBvdXQgb2YgdGhlIGNvdW50cnkuCk5vdyB0aGVyZSB3YXMgdGhlcmUgbmlnaCB1bnRvIHRoZSBtb3VudGFpbnMgYSBncmVhdCBoZXJkIG9mIHN3aW5lIGZlZWRpbmcuCkFuZCBhbGwgdGhlIGRldmlscyBiZXNvdWdodCBoaW0sIHNheWluZywgU2VuZCB1cyBpbnRvIHRoZSBzd2luZSwgdGhhdCB3ZSBtYXkgZW50ZXIgaW50byB0aGVtLgpBbmQgZm9ydGh3aXRoIEplc3VzIGdhdmUgdGhlbSBsZWF2ZS4gQW5kIHRoZSB1bmNsZWFuIHNwaXJpdHMgd2VudCBvdXQsIGFuZCBlbnRlcmVkIGludG8gdGhlIHN3aW5lOiBhbmQgdGhlIGhlcmQgcmFuIHZpb2xlbnRseSBkb3duIGEgc3RlZXAgcGxhY2UgaW50byB0aGUgc2VhLCAodGhleSB3ZXJlIGFib3V0IHR3byB0aG91c2FuZDspIGFuZCB3ZXJlIGNob2tlZCBpbiB0aGUgc2VhLgpBbmQgdGhleSB0aGF0IGZlZCB0aGUgc3dpbmUgZmxlZCwgYW5kIHRvbGQgaXQgaW4gdGhlIGNpdHksIGFuZCBpbiB0aGUgY291bnRyeS4gQW5kIHRoZXkgd2VudCBvdXQgdG8gc2VlIHdoYXQgaXQgd2FzIHRoYXQgd2FzIGRvbmUuCkFuZCB0aGV5IGNvbWUgdG8gSmVzdXMsIGFuZCBzZWUgaGltIHRoYXQgd2FzIHBvc3Nlc3NlZCB3aXRoIHRoZSBkZXZpbCwgYW5kIGhhZCB0aGUgbGVnaW9uLCBzaXR0aW5nLCBhbmQgY2xvdGhlZCwgYW5kIGluIGhpcyByaWdodCBtaW5kOiBhbmQgdGhleSB3ZXJlIGFmcmFpZC4KQW5kIHRoZXkgdGhhdCBzYXcgaXQgdG9sZCB0aGVtIGhvdyBpdCBiZWZlbGwgdG8gaGltIHRoYXQgd2FzIHBvc3Nlc3NlZCB3aXRoIHRoZSBkZXZpbCwgYW5kIGFsc28gY29uY2VybmluZyB0aGUgc3dpbmUuCkFuZCB0aGV5IGJlZ2FuIHRvIHByYXkgaGltIHRvIGRlcGFydCBvdXQgb2YgdGhlaXIgY29hc3RzLgpBbmQgd2hlbiBoZSB3YXMgY29tZSBpbnRvIHRoZSBzaGlwLCBoZSB0aGF0IGhhZCBiZWVuIHBvc3Nlc3NlZCB3aXRoIHRoZSBkZXZpbCBwcmF5ZWQgaGltIHRoYXQgaGUgbWlnaHQgYmUgd2l0aCBoaW0uCkhvd2JlaXQgSmVzdXMgc3VmZmVyZWQgaGltIG5vdCwgYnV0IHNhaXRoIHVudG8gaGltLCBHbyBob21lIHRvIHRoeSBmcmllbmRzLCBhbmQgdGVsbCB0aGVtIGhvdyBncmVhdCB0aGluZ3MgdGhlIExvcmQgaGF0aCBkb25lIGZvciB0aGVlLCBhbmQgaGF0aCBoYWQgY29tcGFzc2lvbiBvbiB0aGVlLgpBbmQgaGUgZGVwYXJ0ZWQsIGFuZCBiZWdhbiB0byBwdWJsaXNoIGluIERlY2Fwb2xpcyBob3cgZ3JlYXQgdGhpbmdzIEplc3VzIGhhZCBkb25lIGZvciBoaW06IGFuZCBhbGwgbWVuIGRpZCBtYXJ2ZWwuCkFuZCB3aGVuIEplc3VzIHdhcyBwYXNzZWQgb3ZlciBhZ2FpbiBieSBzaGlwIHVudG8gdGhlIG90aGVyIHNpZGUsIG11Y2ggcGVvcGxlIGdhdGhlcmVkIHVudG8gaGltOiBhbmQgaGUgd2FzIG5pZ2ggdW50byB0aGUgc2VhLgpBbmQsIGJlaG9sZCwgdGhlcmUgY29tZXRoIG9uZSBvZiB0aGUgcnVsZXJzIG9mIHRoZSBzeW5hZ29ndWUsIEphaXJ1cyBieSBuYW1lOyBhbmQgd2hlbiBoZSBzYXcgaGltLCBoZSBmZWxsIGF0IGhpcyBmZWV0LApBbmQgYmVzb3VnaHQgaGltIGdyZWF0bHksIHNheWluZywgTXkgbGl0dGxlIGRhdWdodGVyIGxpZXRoIGF0IHRoZSBwb2ludCBvZiBkZWF0aDogSSBwcmF5IHRoZWUsIGNvbWUgYW5kIGxheSB0aHkgaGFuZHMgb24gaGVyLCB0aGF0IHNoZSBtYXkgYmUgaGVhbGVkOyBhbmQgc2hlIHNoYWxsIGxpdmUuCkFuZCBKZXN1cyB3ZW50IHdpdGggaGltOyBhbmQgbXVjaCBwZW9wbGUgZm9sbG93ZWQgaGltLCBhbmQgdGhyb25nZWQgaGltLgpBbmQgYSBjZXJ0YWluIHdvbWFuLCB3aGljaCBoYWQgYW4gaXNzdWUgb2YgYmxvb2QgdHdlbHZlIHllYXJzLApBbmQgaGFkIHN1ZmZlcmVkIG1hbnkgdGhpbmdzIG9mIG1hbnkgcGh5c2ljaWFucywgYW5kIGhhZCBzcGVudCBhbGwgdGhhdCBzaGUgaGFkLCBhbmQgd2FzIG5vdGhpbmcgYmV0dGVyZWQsIGJ1dCByYXRoZXIgZ3JldyB3b3JzZSwKV2hlbiBzaGUgaGFkIGhlYXJkIG9mIEplc3VzLCBjYW1lIGluIHRoZSBwcmVzcyBiZWhpbmQsIGFuZCB0b3VjaGVkIGhpcyBnYXJtZW50LgpGb3Igc2hlIHNhaWQsIElmIEkgbWF5IHRvdWNoIGJ1dCBoaXMgY2xvdGhlcywgSSBzaGFsbCBiZSB3aG9sZS4KQW5kIHN0cmFpZ2h0d2F5IHRoZSBmb3VudGFpbiBvZiBoZXIgYmxvb2Qgd2FzIGRyaWVkIHVwOyBhbmQgc2hlIGZlbHQgaW4gaGVyIGJvZHkgdGhhdCBzaGUgd2FzIGhlYWxlZCBvZiB0aGF0IHBsYWd1ZS4KQW5kIEplc3VzLCBpbW1lZGlhdGVseSBrbm93aW5nIGluIGhpbXNlbGYgdGhhdCB2aXJ0dWUgaGFkIGdvbmUgb3V0IG9mIGhpbSwgdHVybmVkIGhpbSBhYm91dCBpbiB0aGUgcHJlc3MsIGFuZCBzYWlkLCBXaG8gdG91Y2hlZCBteSBjbG90aGVzPwpBbmQgaGlzIGRpc2NpcGxlcyBzYWlkIHVudG8gaGltLCBUaG91IHNlZXN0IHRoZSBtdWx0aXR1ZGUgdGhyb25naW5nIHRoZWUsIGFuZCBzYXllc3QgdGhvdSwgV2hvIHRvdWNoZWQgbWU/CkFuZCBoZSBsb29rZWQgcm91bmQgYWJvdXQgdG8gc2VlIGhlciB0aGF0IGhhZCBkb25lIHRoaXMgdGhpbmcuCkJ1dCB0aGUgd29tYW4gZmVhcmluZyBhbmQgdHJlbWJsaW5nLCBrbm93aW5nIHdoYXQgd2FzIGRvbmUgaW4gaGVyLCBjYW1lIGFuZCBmZWxsIGRvd24gYmVmb3JlIGhpbSwgYW5kIHRvbGQgaGltIGFsbCB0aGUgdHJ1dGguCkFuZCBoZSBzYWlkIHVudG8gaGVyLCBEYXVnaHRlciwgdGh5IGZhaXRoIGhhdGggbWFkZSB0aGVlIHdob2xlOyBnbyBpbiBwZWFjZSwgYW5kIGJlIHdob2xlIG9mIHRoeSBwbGFndWUuCldoaWxlIGhlIHlldCBzcGFrZSwgdGhlcmUgY2FtZSBmcm9tIHRoZSBydWxlciBvZiB0aGUgc3luYWdvZ3VlJ3MgaG91c2UgY2VydGFpbiB3aGljaCBzYWlkLCBUaHkgZGF1Z2h0ZXIgaXMgZGVhZDogd2h5IHRyb3VibGVzdCB0aG91IHRoZSBNYXN0ZXIgYW55IGZ1cnRoZXI/CkFzIHNvb24gYXMgSmVzdXMgaGVhcmQgdGhlIHdvcmQgdGhhdCB3YXMgc3Bva2VuLCBoZSBzYWl0aCB1bnRvIHRoZSBydWxlciBvZiB0aGUgc3luYWdvZ3VlLCBCZSBub3QgYWZyYWlkLCBvbmx5IGJlbGlldmUuCkFuZCBoZSBzdWZmZXJlZCBubyBtYW4gdG8gZm9sbG93IGhpbSwgc2F2ZSBQZXRlciwgYW5kIEphbWVzLCBhbmQgSm9obiB0aGUgYnJvdGhlciBvZiBKYW1lcy4KQW5kIGhlIGNvbWV0aCB0byB0aGUgaG91c2Ugb2YgdGhlIHJ1bGVyIG9mIHRoZSBzeW5hZ29ndWUsIGFuZCBzZWV0aCB0aGUgdHVtdWx0LCBhbmQgdGhlbSB0aGF0IHdlcHQgYW5kIHdhaWxlZCBncmVhdGx5LgpBbmQgd2hlbiBoZSB3YXMgY29tZSBpbiwgaGUgc2FpdGggdW50byB0aGVtLCBXaHkgbWFrZSB5ZSB0aGlzIGFkbywgYW5kIHdlZXA/IHRoZSBkYW1zZWwgaXMgbm90IGRlYWQsIGJ1dCBzbGVlcGV0aC4KQW5kIHRoZXkgbGF1Z2hlZCBoaW0gdG8gc2Nvcm4uIEJ1dCB3aGVuIGhlIGhhZCBwdXQgdGhlbSBhbGwgb3V0LCBoZSB0YWtldGggdGhlIGZhdGhlciBhbmQgdGhlIG1vdGhlciBvZiB0aGUgZGFtc2VsLCBhbmQgdGhlbSB0aGF0IHdlcmUgd2l0aCBoaW0sIGFuZCBlbnRlcmV0aCBpbiB3aGVyZSB0aGUgZGFtc2VsIHdhcyBseWluZy4KQW5kIGhlIHRvb2sgdGhlIGRhbXNlbCBieSB0aGUgaGFuZCwgYW5kIHNhaWQgdW50byBoZXIsIFRhbGl0aGEgY3VtaTsgd2hpY2ggaXMsIGJlaW5nIGludGVycHJldGVkLCBEYW1zZWwsIEkgc2F5IHVudG8gdGhlZSwgYXJpc2UuCkFuZCBzdHJhaWdodHdheSB0aGUgZGFtc2VsIGFyb3NlLCBhbmQgd2Fsa2VkOyBmb3Igc2hlIHdhcyBvZiB0aGUgYWdlIG9mIHR3ZWx2ZSB5ZWFycy4gQW5kIHRoZXkgd2VyZSBhc3RvbmlzaGVkIHdpdGggYSBncmVhdCBhc3RvbmlzaG1lbnQuCkFuZCBoZSBjaGFyZ2VkIHRoZW0gc3RyYWl0bHkgdGhhdCBubyBtYW4gc2hvdWxkIGtub3cgaXQ7IGFuZCBjb21tYW5kZWQgdGhhdCBzb21ldGhpbmcgc2hvdWxkIGJlIGdpdmVuIGhlciB0byBlYXQuCkFuZCBoZSB3ZW50IG91dCBmcm9tIHRoZW5jZSwgYW5kIGNhbWUgaW50byBoaXMgb3duIGNvdW50cnk7IGFuZCBoaXMgZGlzY2lwbGVzIGZvbGxvdyBoaW0uCkFuZCB3aGVuIHRoZSBzYWJiYXRoIGRheSB3YXMgY29tZSwgaGUgYmVnYW4gdG8gdGVhY2ggaW4gdGhlIHN5bmFnb2d1ZTogYW5kIG1hbnkgaGVhcmluZyBoaW0gd2VyZSBhc3RvbmlzaGVkLCBzYXlpbmcsIEZyb20gd2hlbmNlIGhhdGggdGhpcyBtYW4gdGhlc2UgdGhpbmdzPyBhbmQgd2hhdCB3aXNkb20gaXMgdGhpcyB3aGljaCBpcyBnaXZlbiB1bnRvIGhpbSwgdGhhdCBldmVuIHN1Y2ggbWlnaHR5IHdvcmtzIGFyZSB3cm91Z2h0IGJ5IGhpcyBoYW5kcz8KSXMgbm90IHRoaXMgdGhlIGNhcnBlbnRlciwgdGhlIHNvbiBvZiBNYXJ5LCB0aGUgYnJvdGhlciBvZiBKYW1lcywgYW5kIEpvc2VzLCBhbmQgb2YgSnVkYSwgYW5kIFNpbW9uPyBhbmQgYXJlIG5vdCBoaXMgc2lzdGVycyBoZXJlIHdpdGggdXM/IEFuZCB0aGV5IHdlcmUgb2ZmZW5kZWQgYXQgaGltLgpCdXQgSmVzdXMsIHNhaWQgdW50byB0aGVtLCBBIHByb3BoZXQgaXMgbm90IHdpdGhvdXQgaG9ub3VyLCBidXQgaW4gaGlzIG93biBjb3VudHJ5LCBhbmQgYW1vbmcgaGlzIG93biBraW4sIGFuZCBpbiBoaXMgb3duIGhvdXNlLgpBbmQgaGUgY291bGQgdGhlcmUgZG8gbm8gbWlnaHR5IHdvcmssIHNhdmUgdGhhdCBoZSBsYWlkIGhpcyBoYW5kcyB1cG9uIGEgZmV3IHNpY2sgZm9saywgYW5kIGhlYWxlZCB0aGVtLgpBbmQgaGUgbWFydmVsbGVkIGJlY2F1c2Ugb2YgdGhlaXIgdW5iZWxpZWYuIEFuZCBoZSB3ZW50IHJvdW5kIGFib3V0IHRoZSB2aWxsYWdlcywgdGVhY2hpbmcuCkFuZCBoZSBjYWxsZWQgdW50byBoaW0gdGhlIHR3ZWx2ZSwgYW5kIGJlZ2FuIHRvIHNlbmQgdGhlbSBmb3J0aCBieSB0d28gYW5kIHR3bzsgYW5kIGdhdmUgdGhlbSBwb3dlciBvdmVyIHVuY2xlYW4gc3Bpcml0czsKQW5kIGNvbW1hbmRlZCB0aGVtIHRoYXQgdGhleSBzaG91bGQgdGFrZSBub3RoaW5nIGZvciB0aGVpciBqb3VybmV5LCBzYXZlIGEgc3RhZmYgb25seTsgbm8gc2NyaXAsIG5vIGJyZWFkLCBubyBtb25leSBpbiB0aGVpciBwdXJzZToKQnV0IGJlIHNob2Qgd2l0aCBzYW5kYWxzOyBhbmQgbm90IHB1dCBvbiB0d28gY29hdHMuCkFuZCBoZSBzYWlkIHVudG8gdGhlbSwgSW4gd2hhdCBwbGFjZSBzb2V2ZXIgeWUgZW50ZXIgaW50byBhbiBob3VzZSwgdGhlcmUgYWJpZGUgdGlsbCB5ZSBkZXBhcnQgZnJvbSB0aGF0IHBsYWNlLgpBbmQgd2hvc29ldmVyIHNoYWxsIG5vdCByZWNlaXZlIHlvdSwgbm9yIGhlYXIgeW91LCB3aGVuIHllIGRlcGFydCB0aGVuY2UsIHNoYWtlIG9mZiB0aGUgZHVzdCB1bmRlciB5b3VyIGZlZXQgZm9yIGEgdGVzdGltb255IGFnYWluc3QgdGhlbS4gVmVyaWx5IEkgc2F5IHVudG8geW91LCBJdCBzaGFsbCBiZSBtb3JlIHRvbGVyYWJsZSBmb3IgU29kb20gYW5kIEdvbW9ycmhhIGluIHRoZSBkYXkgb2YganVkZ21lbnQsIHRoYW4gZm9yIHRoYXQgY2l0eS4KQW5kIHRoZXkgd2VudCBvdXQsIGFuZCBwcmVhY2hlZCB0aGF0IG1lbiBzaG91bGQgcmVwZW50LgpBbmQgdGhleSBjYXN0IG91dCBtYW55IGRldmlscywgYW5kIGFub2ludGVkIHdpdGggb2lsIG1hbnkgdGhhdCB3ZXJlIHNpY2ssIGFuZCBoZWFsZWQgdGhlbS4KQW5kIGtpbmcgSGVyb2QgaGVhcmQgb2YgaGltOyAoZm9yIGhpcyBuYW1lIHdhcyBzcHJlYWQgYWJyb2FkOikgYW5kIGhlIHNhaWQsIFRoYXQgSm9obiB0aGUgQmFwdGlzdCB3YXMgcmlzZW4gZnJvbSB0aGUgZGVhZCwgYW5kIHRoZXJlZm9yZSBtaWdodHkgd29ya3MgZG8gc2hldyBmb3J0aCB0aGVtc2VsdmVzIGluIGhpbS4KT3RoZXJzIHNhaWQsIFRoYXQgaXQgaXMgRWxpYXMuIEFuZCBvdGhlcnMgc2FpZCwgVGhhdCBpdCBpcyBhIHByb3BoZXQsIG9yIGFzIG9uZSBvZiB0aGUgcHJvcGhldHMuCkJ1dCB3aGVuIEhlcm9kIGhlYXJkIHRoZXJlb2YsIGhlIHNhaWQsIEl0IGlzIEpvaG4sIHdob20gSSBiZWhlYWRlZDogaGUgaXMgcmlzZW4gZnJvbSB0aGUgZGVhZC4KRm9yIEhlcm9kIGhpbXNlbGYgaGFkIHNlbnQgZm9ydGggYW5kIGxhaWQgaG9sZCB1cG9uIEpvaG4sIGFuZCBib3VuZCBoaW0gaW4gcHJpc29uIGZvciBIZXJvZGlhcycgc2FrZSwgaGlzIGJyb3RoZXIgUGhpbGlwJ3Mgd2lmZTogZm9yIGhlIGhhZCBtYXJyaWVkIGhlci4KRm9yIEpvaG4gaGFkIHNhaWQgdW50byBIZXJvZCwgSXQgaXMgbm90IGxhd2Z1bCBmb3IgdGhlZSB0byBoYXZlIHRoeSBicm90aGVyJ3Mgd2lmZS4KVGhlcmVmb3JlIEhlcm9kaWFzIGhhZCBhIHF1YXJyZWwgYWdhaW5zdCBoaW0sIGFuZCB3b3VsZCBoYXZlIGtpbGxlZCBoaW07IGJ1dCBzaGUgY291bGQgbm90OgpGb3IgSGVyb2QgZmVhcmVkIEpvaG4sIGtub3dpbmcgdGhhdCBoZSB3YXMgYSBqdXN0IG1hbiBhbmQgYW4gaG9seSwgYW5kIG9ic2VydmVkIGhpbTsgYW5kIHdoZW4gaGUgaGVhcmQgaGltLCBoZSBkaWQgbWFueSB0aGluZ3MsIGFuZCBoZWFyZCBoaW0gZ2xhZGx5LgpBbmQgd2hlbiBhIGNvbnZlbmllbnQgZGF5IHdhcyBjb21lLCB0aGF0IEhlcm9kIG9uIGhpcyBiaXJ0aGRheSBtYWRlIGEgc3VwcGVyIHRvIGhpcyBsb3JkcywgaGlnaCBjYXB0YWlucywgYW5kIGNoaWVmIGVzdGF0ZXMgb2YgR2FsaWxlZTsKQW5kIHdoZW4gdGhlIGRhdWdodGVyIG9mIHRoZSBzYWlkIEhlcm9kaWFzIGNhbWUgaW4sIGFuZCBkYW5jZWQsIGFuZCBwbGVhc2VkIEhlcm9kIGFuZCB0aGVtIHRoYXQgc2F0IHdpdGggaGltLCB0aGUga2luZyBzYWlkIHVudG8gdGhlIGRhbXNlbCwgQXNrIG9mIG1lIHdoYXRzb2V2ZXIgdGhvdSB3aWx0LCBhbmQgSSB3aWxsIGdpdmUgaXQgdGhlZS4KQW5kIGhlIHN3YXJlIHVudG8gaGVyLCBXaGF0c29ldmVyIHRob3Ugc2hhbHQgYXNrIG9mIG1lLCBJIHdpbGwgZ2l2ZSBpdCB0aGVlLCB1bnRvIHRoZSBoYWxmIG9mIG15IGtpbmdkb20uCkFuZCBzaGUgd2VudCBmb3J0aCwgYW5kIHNhaWQgdW50byBoZXIgbW90aGVyLCBXaGF0IHNoYWxsIEkgYXNrPyBBbmQgc2hlIHNhaWQsIFRoZSBoZWFkIG9mIEpvaG4gdGhlIEJhcHRpc3QuCkFuZCBzaGUgY2FtZSBpbiBzdHJhaWdodHdheSB3aXRoIGhhc3RlIHVudG8gdGhlIGtpbmcsIGFuZCBhc2tlZCwgc2F5aW5nLCBJIHdpbGwgdGhhdCB0aG91IGdpdmUgbWUgYnkgYW5kIGJ5IGluIGEgY2hhcmdlciB0aGUgaGVhZCBvZiBKb2huIHRoZSBCYXB0aXN0LgpBbmQgdGhlIGtpbmcgd2FzIGV4Y2VlZGluZyBzb3JyeTsgeWV0IGZvciBoaXMgb2F0aCdzIHNha2UsIGFuZCBmb3IgdGhlaXIgc2FrZXMgd2hpY2ggc2F0IHdpdGggaGltLCBoZSB3b3VsZCBub3QgcmVqZWN0IGhlci4KQW5kIGltbWVkaWF0ZWx5IHRoZSBraW5nIHNlbnQgYW4gZXhlY3V0aW9uZXIsIGFuZCBjb21tYW5kZWQgaGlzIGhlYWQgdG8gYmUgYnJvdWdodDogYW5kIGhlIHdlbnQgYW5kIGJlaGVhZGVkIGhpbSBpbiB0aGUgcHJpc29uLApBbmQgYnJvdWdodCBoaXMgaGVhZCBpbiBhIGNoYXJnZXIsIGFuZCBnYXZlIGl0IHRvIHRoZSBkYW1zZWw6IGFuZCB0aGUgZGFtc2VsIGdhdmUgaXQgdG8gaGVyIG1vdGhlci4KQW5kIHdoZW4gaGlzIGRpc2NpcGxlcyBoZWFyZCBvZiBpdCwgdGhleSBjYW1lIGFuZCB0b29rIHVwIGhpcyBjb3Jwc2UsIGFuZCBsYWlkIGl0IGluIGEgdG9tYi4KQW5kIHRoZSBhcG9zdGxlcyBnYXRoZXJlZCB0aGVtc2VsdmVzIHRvZ2V0aGVyIHVudG8gSmVzdXMsIGFuZCB0b2xkIGhpbSBhbGwgdGhpbmdzLCBib3RoIHdoYXQgdGhleSBoYWQgZG9uZSwgYW5kIHdoYXQgdGhleSBoYWQgdGF1Z2h0LgpBbmQgaGUgc2FpZCB1bnRvIHRoZW0sIENvbWUgeWUgeW91cnNlbHZlcyBhcGFydCBpbnRvIGEgZGVzZXJ0IHBsYWNlLCBhbmQgcmVzdCBhIHdoaWxlOiBmb3IgdGhlcmUgd2VyZSBtYW55IGNvbWluZyBhbmQgZ29pbmcsIGFuZCB0aGV5IGhhZCBubyBsZWlzdXJlIHNvIG11Y2ggYXMgdG8gZWF0LgpBbmQgdGhleSBkZXBhcnRlZCBpbnRvIGEgZGVzZXJ0IHBsYWNlIGJ5IHNoaXAgcHJpdmF0ZWx5LgpBbmQgdGhlIHBlb3BsZSBzYXcgdGhlbSBkZXBhcnRpbmcsIGFuZCBtYW55IGtuZXcgaGltLCBhbmQgcmFuIGFmb290IHRoaXRoZXIgb3V0IG9mIGFsbCBjaXRpZXMsIGFuZCBvdXR3ZW50IHRoZW0sIGFuZCBjYW1lIHRvZ2V0aGVyIHVudG8gaGltLgpBbmQgSmVzdXMsIHdoZW4gaGUgY2FtZSBvdXQsIHNhdyBtdWNoIHBlb3BsZSwgYW5kIHdhcyBtb3ZlZCB3aXRoIGNvbXBhc3Npb24gdG93YXJkIHRoZW0sIGJlY2F1c2UgdGhleSB3ZXJlIGFzIHNoZWVwIG5vdCBoYXZpbmcgYSBzaGVwaGVyZDogYW5kIGhlIGJlZ2FuIHRvIHRlYWNoIHRoZW0gbWFueSB0aGluZ3MuCkFuZCB3aGVuIHRoZSBkYXkgd2FzIG5vdyBmYXIgc3BlbnQsIGhpcyBkaXNjaXBsZXMgY2FtZSB1bnRvIGhpbSwgYW5kIHNhaWQsIFRoaXMgaXMgYSBkZXNlcnQgcGxhY2UsIGFuZCBub3cgdGhlIHRpbWUgaXMgZmFyIHBhc3NlZDoKU2VuZCB0aGVtIGF3YXksIHRoYXQgdGhleSBtYXkgZ28gaW50byB0aGUgY291bnRyeSByb3VuZCBhYm91dCwgYW5kIGludG8gdGhlIHZpbGxhZ2VzLCBhbmQgYnV5IHRoZW1zZWx2ZXMgYnJlYWQ6IGZvciB0aGV5IGhhdmUgbm90aGluZyB0byBlYXQuCkhlIGFuc3dlcmVkIGFuZCBzYWlkIHVudG8gdGhlbSwgR2l2ZSB5ZSB0aGVtIHRvIGVhdC4gQW5kIHRoZXkgc2F5IHVudG8gaGltLCBTaGFsbCB3ZSBnbyBhbmQgYnV5IHR3byBodW5kcmVkIHBlbm55d29ydGggb2YgYnJlYWQsIGFuZCBnaXZlIHRoZW0gdG8gZWF0PwpIZSBzYWl0aCB1bnRvIHRoZW0sIEhvdyBtYW55IGxvYXZlcyBoYXZlIHllPyBnbyBhbmQgc2VlLiBBbmQgd2hlbiB0aGV5IGtuZXcsIHRoZXkgc2F5LCBGaXZlLCBhbmQgdHdvIGZpc2hlcy4KQW5kIGhlIGNvbW1hbmRlZCB0aGVtIHRvIG1ha2UgYWxsIHNpdCBkb3duIGJ5IGNvbXBhbmllcyB1cG9uIHRoZSBncmVlbiBncmFzcy4KQW5kIHRoZXkgc2F0IGRvd24gaW4gcmFua3MsIGJ5IGh1bmRyZWRzLCBhbmQgYnkgZmlmdGllcy4KQW5kIHdoZW4gaGUgaGFkIHRha2VuIHRoZSBmaXZlIGxvYXZlcyBhbmQgdGhlIHR3byBmaXNoZXMsIGhlIGxvb2tlZCB1cCB0byBoZWF2ZW4sIGFuZCBibGVzc2VkLCBhbmQgYnJha2UgdGhlIGxvYXZlcywgYW5kIGdhdmUgdGhlbSB0byBoaXMgZGlzY2lwbGVzIHRvIHNldCBiZWZvcmUgdGhlbTsgYW5kIHRoZSB0d28gZmlzaGVzIGRpdmlkZWQgaGUgYW1vbmcgdGhlbSBhbGwuCkFuZCB0aGV5IGRpZCBhbGwgZWF0LCBhbmQgd2VyZSBmaWxsZWQuCkFuZCB0aGV5IHRvb2sgdXAgdHdlbHZlIGJhc2tldHMgZnVsbCBvZiB0aGUgZnJhZ21lbnRzLCBhbmQgb2YgdGhlIGZpc2hlcy4KQW5kIHRoZXkgdGhhdCBkaWQgZWF0IG9mIHRoZSBsb2F2ZXMgd2VyZSBhYm91dCBmaXZlIHRob3VzYW5kIG1lbi4KQW5kIHN0cmFpZ2h0d2F5IGhlIGNvbnN0cmFpbmVkIGhpcyBkaXNjaXBsZXMgdG8gZ2V0IGludG8gdGhlIHNoaXAsIGFuZCB0byBnbyB0byB0aGUgb3RoZXIgc2lkZSBiZWZvcmUgdW50byBCZXRoc2FpZGEsIHdoaWxlIGhlIHNlbnQgYXdheSB0aGUgcGVvcGxlLgpBbmQgd2hlbiBoZSBoYWQgc2VudCB0aGVtIGF3YXksIGhlIGRlcGFydGVkIGludG8gYSBtb3VudGFpbiB0byBwcmF5LgpBbmQgd2hlbiBldmVuIHdhcyBjb21lLCB0aGUgc2hpcCB3YXMgaW4gdGhlIG1pZHN0IG9mIHRoZSBzZWEsIGFuZCBoZSBhbG9uZSBvbiB0aGUgbGFuZC4KQW5kIGhlIHNhdyB0aGVtIHRvaWxpbmcgaW4gcm93aW5nOyBmb3IgdGhlIHdpbmQgd2FzIGNvbnRyYXJ5IHVudG8gdGhlbTogYW5kIGFib3V0IHRoZSBmb3VydGggd2F0Y2ggb2YgdGhlIG5pZ2h0IGhlIGNvbWV0aCB1bnRvIHRoZW0sIHdhbGtpbmcgdXBvbiB0aGUgc2VhLCBhbmQgd291bGQgaGF2ZSBwYXNzZWQgYnkgdGhlbS4KQnV0IHdoZW4gdGhleSBzYXcgaGltIHdhbGtpbmcgdXBvbiB0aGUgc2VhLCB0aGV5IHN1cHBvc2VkIGl0IGhhZCBiZWVuIGEgc3Bpcml0LCBhbmQgY3JpZWQgb3V0OgpGb3IgdGhleSBhbGwgc2F3IGhpbSwgYW5kIHdlcmUgdHJvdWJsZWQuIEFuZCBpbW1lZGlhdGVseSBoZSB0YWxrZWQgd2l0aCB0aGVtLCBhbmQgc2FpdGggdW50byB0aGVtLCBCZSBvZiBnb29kIGNoZWVyOiBpdCBpcyBJOyBiZSBub3QgYWZyYWlkLgpBbmQgaGUgd2VudCB1cCB1bnRvIHRoZW0gaW50byB0aGUgc2hpcDsgYW5kIHRoZSB3aW5kIGNlYXNlZDogYW5kIHRoZXkgd2VyZSBzb3JlIGFtYXplZCBpbiB0aGVtc2VsdmVzIGJleW9uZCBtZWFzdXJlLCBhbmQgd29uZGVyZWQuCkZvciB0aGV5IGNvbnNpZGVyZWQgbm90IHRoZSBtaXJhY2xlIG9mIHRoZSBsb2F2ZXM6IGZvciB0aGVpciBoZWFydCB3YXMgaGFyZGVuZWQuCkFuZCB3aGVuIHRoZXkgaGFkIHBhc3NlZCBvdmVyLCB0aGV5IGNhbWUgaW50byB0aGUgbGFuZCBvZiBHZW5uZXNhcmV0LCBhbmQgZHJldyB0byB0aGUgc2hvcmUuCkFuZCB3aGVuIHRoZXkgd2VyZSBjb21lIG91dCBvZiB0aGUgc2hpcCwgc3RyYWlnaHR3YXkgdGhleSBrbmV3IGhpbSwKQW5kIHJhbiB0aHJvdWdoIHRoYXQgd2hvbGUgcmVnaW9uIHJvdW5kIGFib3V0LCBhbmQgYmVnYW4gdG8gY2FycnkgYWJvdXQgaW4gYmVkcyB0aG9zZSB0aGF0IHdlcmUgc2ljaywgd2hlcmUgdGhleSBoZWFyZCBoZSB3YXMuCkFuZCB3aGl0aGVyc29ldmVyIGhlIGVudGVyZWQsIGludG8gdmlsbGFnZXMsIG9yIGNpdGllcywgb3IgY291bnRyeSwgdGhleSBsYWlkIHRoZSBzaWNrIGluIHRoZSBzdHJlZXRzLCBhbmQgYmVzb3VnaHQgaGltIHRoYXQgdGhleSBtaWdodCB0b3VjaCBpZiBpdCB3ZXJlIGJ1dCB0aGUgYm9yZGVyIG9mIGhpcyBnYXJtZW50OiBhbmQgYXMgbWFueSBhcyB0b3VjaGVkIGhpbSB3ZXJlIG1hZGUgd2hvbGUuClRoZW4gY2FtZSB0b2dldGhlciB1bnRvIGhpbSB0aGUgUGhhcmlzZWVzLCBhbmQgY2VydGFpbiBvZiB0aGUgc2NyaWJlcywgd2hpY2ggY2FtZSBmcm9tIEplcnVzYWxlbS4KQW5kIHdoZW4gdGhleSBzYXcgc29tZSBvZiBoaXMgZGlzY2lwbGVzIGVhdCBicmVhZCB3aXRoIGRlZmlsZWQsIHRoYXQgaXMgdG8gc2F5LCB3aXRoIHVud2FzaGVuLCBoYW5kcywgdGhleSBmb3VuZCBmYXVsdC4KRm9yIHRoZSBQaGFyaXNlZXMsIGFuZCBhbGwgdGhlIEpld3MsIGV4Y2VwdCB0aGV5IHdhc2ggdGhlaXIgaGFuZHMgb2Z0LCBlYXQgbm90LCBob2xkaW5nIHRoZSB0cmFkaXRpb24gb2YgdGhlIGVsZGVycy4KQW5kIHdoZW4gdGhleSBjb21lIGZyb20gdGhlIG1hcmtldCwgZXhjZXB0IHRoZXkgd2FzaCwgdGhleSBlYXQgbm90LiBBbmQgbWFueSBvdGhlciB0aGluZ3MgdGhlcmUgYmUsIHdoaWNoIHRoZXkgaGF2ZSByZWNlaXZlZCB0byBob2xkLCBhcyB0aGUgd2FzaGluZyBvZiBjdXBzLCBhbmQgcG90cywgYnJhc2VuIHZlc3NlbHMsIGFuZCBvZiB0YWJsZXMuClRoZW4gdGhlIFBoYXJpc2VlcyBhbmQgc2NyaWJlcyBhc2tlZCBoaW0sIFdoeSB3YWxrIG5vdCB0aHkgZGlzY2lwbGVzIGFjY29yZGluZyB0byB0aGUgdHJhZGl0aW9uIG9mIHRoZSBlbGRlcnMsIGJ1dCBlYXQgYnJlYWQgd2l0aCB1bndhc2hlbiBoYW5kcz8KSGUgYW5zd2VyZWQgYW5kIHNhaWQgdW50byB0aGVtLCBXZWxsIGhhdGggRXNhaWFzIHByb3BoZXNpZWQgb2YgeW91IGh5cG9jcml0ZXMsIGFzIGl0IGlzIHdyaXR0ZW4sIFRoaXMgcGVvcGxlIGhvbm91cmV0aCBtZSB3aXRoIHRoZWlyIGxpcHMsIGJ1dCB0aGVpciBoZWFydCBpcyBmYXIgZnJvbSBtZS4KSG93YmVpdCBpbiB2YWluIGRvIHRoZXkgd29yc2hpcCBtZSwgdGVhY2hpbmcgZm9yIGRvY3RyaW5lcyB0aGUgY29tbWFuZG1lbnRzIG9mIG1lbi4KRm9yIGxheWluZyBhc2lkZSB0aGUgY29tbWFuZG1lbnQgb2YgR29kLCB5ZSBob2xkIHRoZSB0cmFkaXRpb24gb2YgbWVuLCBhcyB0aGUgd2FzaGluZyBvZiBwb3RzIGFuZCBjdXBzOiBhbmQgbWFueSBvdGhlciBzdWNoIGxpa2UgdGhpbmdzIHllIGRvLgpBbmQgaGUgc2FpZCB1bnRvIHRoZW0sIEZ1bGwgd2VsbCB5ZSByZWplY3QgdGhlIGNvbW1hbmRtZW50IG9mIEdvZCwgdGhhdCB5ZSBtYXkga2VlcCB5b3VyIG93biB0cmFkaXRpb24uCkZvciBNb3NlcyBzYWlkLCBIb25vdXIgdGh5IGZhdGhlciBhbmQgdGh5IG1vdGhlcjsgYW5kLCBXaG9zbyBjdXJzZXRoIGZhdGhlciBvciBtb3RoZXIsIGxldCBoaW0gZGllIHRoZSBkZWF0aDoKQnV0IHllIHNheSwgSWYgYSBtYW4gc2hhbGwgc2F5IHRvIGhpcyBmYXRoZXIgb3IgbW90aGVyLCBJdCBpcyBDb3JiYW4sIHRoYXQgaXMgdG8gc2F5LCBhIGdpZnQsIGJ5IHdoYXRzb2V2ZXIgdGhvdSBtaWdodGVzdCBiZSBwcm9maXRlZCBieSBtZTsgaGUgc2hhbGwgYmUgZnJlZS4KQW5kIHllIHN1ZmZlciBoaW0gbm8gbW9yZSB0byBkbyBvdWdodCBmb3IgaGlzIGZhdGhlciBvciBoaXMgbW90aGVyOwpNYWtpbmcgdGhlIHdvcmQgb2YgR29kIG9mIG5vbmUgZWZmZWN0IHRocm91Z2ggeW91ciB0cmFkaXRpb24sIHdoaWNoIHllIGhhdmUgZGVsaXZlcmVkOiBhbmQgbWFueSBzdWNoIGxpa2UgdGhpbmdzIGRvIHllLgpBbmQgd2hlbiBoZSBoYWQgY2FsbGVkIGFsbCB0aGUgcGVvcGxlIHVudG8gaGltLCBoZSBzYWlkIHVudG8gdGhlbSwgSGVhcmtlbiB1bnRvIG1lIGV2ZXJ5IG9uZSBvZiB5b3UsIGFuZCB1bmRlcnN0YW5kOgpUaGVyZSBpcyBub3RoaW5nIGZyb20gd2l0aG91dCBhIG1hbiwgdGhhdCBlbnRlcmluZyBpbnRvIGhpbSBjYW4gZGVmaWxlIGhpbTogYnV0IHRoZSB0aGluZ3Mgd2hpY2ggY29tZSBvdXQgb2YgaGltLCB0aG9zZSBhcmUgdGhleSB0aGF0IGRlZmlsZSB0aGUgbWFuLgpJZiBhbnkgbWFuIGhhdmUgZWFycyB0byBoZWFyLCBsZXQgaGltIGhlYXIuCkFuZCB3aGVuIGhlIHdhcyBlbnRlcmVkIGludG8gdGhlIGhvdXNlIGZyb20gdGhlIHBlb3BsZSwgaGlzIGRpc2NpcGxlcyBhc2tlZCBoaW0gY29uY2VybmluZyB0aGUgcGFyYWJsZS4KQW5kIGhlIHNhaXRoIHVudG8gdGhlbSwgQXJlIHllIHNvIHdpdGhvdXQgdW5kZXJzdGFuZGluZyBhbHNvPyBEbyB5ZSBub3QgcGVyY2VpdmUsIHRoYXQgd2hhdHNvZXZlciB0aGluZyBmcm9tIHdpdGhvdXQgZW50ZXJldGggaW50byB0aGUgbWFuLCBpdCBjYW5ub3QgZGVmaWxlIGhpbTsKQmVjYXVzZSBpdCBlbnRlcmV0aCBub3QgaW50byBoaXMgaGVhcnQsIGJ1dCBpbnRvIHRoZSBiZWxseSwgYW5kIGdvZXRoIG91dCBpbnRvIHRoZSBkcmF1Z2h0LCBwdXJnaW5nIGFsbCBtZWF0cz8KQW5kIGhlIHNhaWQsIFRoYXQgd2hpY2ggY29tZXRoIG91dCBvZiB0aGUgbWFuLCB0aGF0IGRlZmlsZXRoIHRoZSBtYW4uCkZvciBmcm9tIHdpdGhpbiwgb3V0IG9mIHRoZSBoZWFydCBvZiBtZW4sIHByb2NlZWQgZXZpbCB0aG91Z2h0cywgYWR1bHRlcmllcywgZm9ybmljYXRpb25zLCBtdXJkZXJzLApUaGVmdHMsIGNvdmV0b3VzbmVzcywgd2lja2VkbmVzcywgZGVjZWl0LCBsYXNjaXZpb3VzbmVzcywgYW4gZXZpbCBleWUsIGJsYXNwaGVteSwgcHJpZGUsIGZvb2xpc2huZXNzOgpBbGwgdGhlc2UgZXZpbCB0aGluZ3MgY29tZSBmcm9tIHdpdGhpbiwgYW5kIGRlZmlsZSB0aGUgbWFuLgpBbmQgZnJvbSB0aGVuY2UgaGUgYXJvc2UsIGFuZCB3ZW50IGludG8gdGhlIGJvcmRlcnMgb2YgVHlyZSBhbmQgU2lkb24sIGFuZCBlbnRlcmVkIGludG8gYW4gaG91c2UsIGFuZCB3b3VsZCBoYXZlIG5vIG1hbiBrbm93IGl0OiBidXQgaGUgY291bGQgbm90IGJlIGhpZC4KRm9yIGEgY2VydGFpbiB3b21hbiwgd2hvc2UgeW91bmcgZGF1Z2h0ZXIgaGFkIGFuIHVuY2xlYW4gc3Bpcml0LCBoZWFyZCBvZiBoaW0sIGFuZCBjYW1lIGFuZCBmZWxsIGF0IGhpcyBmZWV0OgpUaGUgd29tYW4gd2FzIGEgR3JlZWssIGEgU3lyb3BoZW5pY2lhbiBieSBuYXRpb247IGFuZCBzaGUgYmVzb3VnaHQgaGltIHRoYXQgaGUgd291bGQgY2FzdCBmb3J0aCB0aGUgZGV2aWwgb3V0IG9mIGhlciBkYXVnaHRlci4KQnV0IEplc3VzIHNhaWQgdW50byBoZXIsIExldCB0aGUgY2hpbGRyZW4gZmlyc3QgYmUgZmlsbGVkOiBmb3IgaXQgaXMgbm90IG1lZXQgdG8gdGFrZSB0aGUgY2hpbGRyZW4ncyBicmVhZCwgYW5kIHRvIGNhc3QgaXQgdW50byB0aGUgZG9ncy4KQW5kIHNoZSBhbnN3ZXJlZCBhbmQgc2FpZCB1bnRvIGhpbSwgWWVzLCBMb3JkOiB5ZXQgdGhlIGRvZ3MgdW5kZXIgdGhlIHRhYmxlIGVhdCBvZiB0aGUgY2hpbGRyZW4ncyBjcnVtYnMuCkFuZCBoZSBzYWlkIHVudG8gaGVyLCBGb3IgdGhpcyBzYXlpbmcgZ28gdGh5IHdheTsgdGhlIGRldmlsIGlzIGdvbmUgb3V0IG9mIHRoeSBkYXVnaHRlci4KQW5kIHdoZW4gc2hlIHdhcyBjb21lIHRvIGhlciBob3VzZSwgc2hlIGZvdW5kIHRoZSBkZXZpbCBnb25lIG91dCwgYW5kIGhlciBkYXVnaHRlciBsYWlkIHVwb24gdGhlIGJlZC4KQW5kIGFnYWluLCBkZXBhcnRpbmcgZnJvbSB0aGUgY29hc3RzIG9mIFR5cmUgYW5kIFNpZG9uLCBoZSBjYW1lIHVudG8gdGhlIHNlYSBvZiBHYWxpbGVlLCB0aHJvdWdoIHRoZSBtaWRzdCBvZiB0aGUgY29hc3RzIG9mIERlY2Fwb2xpcy4KQW5kIHRoZXkgYnJpbmcgdW50byBoaW0gb25lIHRoYXQgd2FzIGRlYWYsIGFuZCBoYWQgYW4gaW1wZWRpbWVudCBpbiBoaXMgc3BlZWNoOyBhbmQgdGhleSBiZXNlZWNoIGhpbSB0byBwdXQgaGlzIGhhbmQgdXBvbiBoaW0uCkFuZCBoZSB0b29rIGhpbSBhc2lkZSBmcm9tIHRoZSBtdWx0aXR1ZGUsIGFuZCBwdXQgaGlzIGZpbmdlcnMgaW50byBoaXMgZWFycywgYW5kIGhlIHNwaXQsIGFuZCB0b3VjaGVkIGhpcyB0b25ndWU7CkFuZCBsb29raW5nIHVwIHRvIGhlYXZlbiwgaGUgc2lnaGVkLCBhbmQgc2FpdGggdW50byBoaW0sIEVwaHBoYXRoYSwgdGhhdCBpcywgQmUgb3BlbmVkLgpBbmQgc3RyYWlnaHR3YXkgaGlzIGVhcnMgd2VyZSBvcGVuZWQsIGFuZCB0aGUgc3RyaW5nIG9mIGhpcyB0b25ndWUgd2FzIGxvb3NlZCwgYW5kIGhlIHNwYWtlIHBsYWluLgpBbmQgaGUgY2hhcmdlZCB0aGVtIHRoYXQgdGhleSBzaG91bGQgdGVsbCBubyBtYW46IGJ1dCB0aGUgbW9yZSBoZSBjaGFyZ2VkIHRoZW0sIHNvIG11Y2ggdGhlIG1vcmUgYSBncmVhdCBkZWFsIHRoZXkgcHVibGlzaGVkIGl0OwpBbmQgd2VyZSBiZXlvbmQgbWVhc3VyZSBhc3RvbmlzaGVkLCBzYXlpbmcsIEhlIGhhdGggZG9uZSBhbGwgdGhpbmdzIHdlbGw6IGhlIG1ha2V0aCBib3RoIHRoZSBkZWFmIHRvIGhlYXIsIGFuZCB0aGUgZHVtYiB0byBzcGVhay4KSW4gdGhvc2UgZGF5cyB0aGUgbXVsdGl0dWRlIGJlaW5nIHZlcnkgZ3JlYXQsIGFuZCBoYXZpbmcgbm90aGluZyB0byBlYXQsIEplc3VzIGNhbGxlZCBoaXMgZGlzY2lwbGVzIHVudG8gaGltLCBhbmQgc2FpdGggdW50byB0aGVtLApJIGhhdmUgY29tcGFzc2lvbiBvbiB0aGUgbXVsdGl0dWRlLCBiZWNhdXNlIHRoZXkgaGF2ZSBub3cgYmVlbiB3aXRoIG1lIHRocmVlIGRheXMsIGFuZCBoYXZlIG5vdGhpbmcgdG8gZWF0OgpBbmQgaWYgSSBzZW5kIHRoZW0gYXdheSBmYXN0aW5nIHRvIHRoZWlyIG93biBob3VzZXMsIHRoZXkgd2lsbCBmYWludCBieSB0aGUgd2F5OiBmb3IgZGl2ZXJzIG9mIHRoZW0gY2FtZSBmcm9tIGZhci4KQW5kIGhpcyBkaXNjaXBsZXMgYW5zd2VyZWQgaGltLCBGcm9tIHdoZW5jZSBjYW4gYSBtYW4gc2F0aXNmeSB0aGVzZSBtZW4gd2l0aCBicmVhZCBoZXJlIGluIHRoZSB3aWxkZXJuZXNzPwpBbmQgaGUgYXNrZWQgdGhlbSwgSG93IG1hbnkgbG9hdmVzIGhhdmUgeWU/IEFuZCB0aGV5IHNhaWQsIFNldmVuLgpBbmQgaGUgY29tbWFuZGVkIHRoZSBwZW9wbGUgdG8gc2l0IGRvd24gb24gdGhlIGdyb3VuZDogYW5kIGhlIHRvb2sgdGhlIHNldmVuIGxvYXZlcywgYW5kIGdhdmUgdGhhbmtzLCBhbmQgYnJha2UsIGFuZCBnYXZlIHRvIGhpcyBkaXNjaXBsZXMgdG8gc2V0IGJlZm9yZSB0aGVtOyBhbmQgdGhleSBkaWQgc2V0IHRoZW0gYmVmb3JlIHRoZSBwZW9wbGUuCkFuZCB0aGV5IGhhZCBhIGZldyBzbWFsbCBmaXNoZXM6IGFuZCBoZSBibGVzc2VkLCBhbmQgY29tbWFuZGVkIHRvIHNldCB0aGVtIGFsc28gYmVmb3JlIHRoZW0uClNvIHRoZXkgZGlkIGVhdCwgYW5kIHdlcmUgZmlsbGVkOiBhbmQgdGhleSB0b29rIHVwIG9mIHRoZSBicm9rZW4gbWVhdCB0aGF0IHdhcyBsZWZ0IHNldmVuIGJhc2tldHMuCkFuZCB0aGV5IHRoYXQgaGFkIGVhdGVuIHdlcmUgYWJvdXQgZm91ciB0aG91c2FuZDogYW5kIGhlIHNlbnQgdGhlbSBhd2F5LgpBbmQgc3RyYWlnaHR3YXkgaGUgZW50ZXJlZCBpbnRvIGEgc2hpcCB3aXRoIGhpcyBkaXNjaXBsZXMsIGFuZCBjYW1lIGludG8gdGhlIHBhcnRzIG9mIERhbG1hbnV0aGEuCkFuZCB0aGUgUGhhcmlzZWVzIGNhbWUgZm9ydGgsIGFuZCBiZWdhbiB0byBxdWVzdGlvbiB3aXRoIGhpbSwgc2Vla2luZyBvZiBoaW0gYSBzaWduIGZyb20gaGVhdmVuLCB0ZW1wdGluZyBoaW0uCkFuZCBoZSBzaWdoZWQgZGVlcGx5IGluIGhpcyBzcGlyaXQsIGFuZCBzYWl0aCwgV2h5IGRvdGggdGhpcyBnZW5lcmF0aW9uIHNlZWsgYWZ0ZXIgYSBzaWduPyB2ZXJpbHkgSSBzYXkgdW50byB5b3UsIFRoZXJlIHNoYWxsIG5vIHNpZ24gYmUgZ2l2ZW4gdW50byB0aGlzIGdlbmVyYXRpb24uCkFuZCBoZSBsZWZ0IHRoZW0sIGFuZCBlbnRlcmluZyBpbnRvIHRoZSBzaGlwIGFnYWluIGRlcGFydGVkIHRvIHRoZSBvdGhlciBzaWRlLgpOb3cgdGhlIGRpc2NpcGxlcyBoYWQgZm9yZ290dGVuIHRvIHRha2UgYnJlYWQsIG5laXRoZXIgaGFkIHRoZXkgaW4gdGhlIHNoaXAgd2l0aCB0aGVtIG1vcmUgdGhhbiBvbmUgbG9hZi4KQW5kIGhlIGNoYXJnZWQgdGhlbSwgc2F5aW5nLCBUYWtlIGhlZWQsIGJld2FyZSBvZiB0aGUgbGVhdmVuIG9mIHRoZSBQaGFyaXNlZXMsIGFuZCBvZiB0aGUgbGVhdmVuIG9mIEhlcm9kLgpBbmQgdGhleSByZWFzb25lZCBhbW9uZyB0aGVtc2VsdmVzLCBzYXlpbmcsIEl0IGlzIGJlY2F1c2Ugd2UgaGF2ZSBubyBicmVhZC4KQW5kIHdoZW4gSmVzdXMga25ldyBpdCwgaGUgc2FpdGggdW50byB0aGVtLCBXaHkgcmVhc29uIHllLCBiZWNhdXNlIHllIGhhdmUgbm8gYnJlYWQ/IHBlcmNlaXZlIHllIG5vdCB5ZXQsIG5laXRoZXIgdW5kZXJzdGFuZD8gaGF2ZSB5ZSB5b3VyIGhlYXJ0IHlldCBoYXJkZW5lZD8KSGF2aW5nIGV5ZXMsIHNlZSB5ZSBub3Q/IGFuZCBoYXZpbmcgZWFycywgaGVhciB5ZSBub3Q/IGFuZCBkbyB5ZSBub3QgcmVtZW1iZXI/CldoZW4gSSBicmFrZSB0aGUgZml2ZSBsb2F2ZXMgYW1vbmcgZml2ZSB0aG91c2FuZCwgaG93IG1hbnkgYmFza2V0cyBmdWxsIG9mIGZyYWdtZW50cyB0b29rIHllIHVwPyBUaGV5IHNheSB1bnRvIGhpbSwgVHdlbHZlLgpBbmQgd2hlbiB0aGUgc2V2ZW4gYW1vbmcgZm91ciB0aG91c2FuZCwgaG93IG1hbnkgYmFza2V0cyBmdWxsIG9mIGZyYWdtZW50cyB0b29rIHllIHVwPyBBbmQgdGhleSBzYWlkLCBTZXZlbi4KQW5kIGhlIHNhaWQgdW50byB0aGVtLCBIb3cgaXMgaXQgdGhhdCB5ZSBkbyBub3QgdW5kZXJzdGFuZD8KQW5kIGhlIGNvbWV0aCB0byBCZXRoc2FpZGE7IGFuZCB0aGV5IGJyaW5nIGEgYmxpbmQgbWFuIHVudG8gaGltLCBhbmQgYmVzb3VnaHQgaGltIHRvIHRvdWNoIGhpbS4KQW5kIGhlIHRvb2sgdGhlIGJsaW5kIG1hbiBieSB0aGUgaGFuZCwgYW5kIGxlZCBoaW0gb3V0IG9mIHRoZSB0b3duOyBhbmQgd2hlbiBoZSBoYWQgc3BpdCBvbiBoaXMgZXllcywgYW5kIHB1dCBoaXMgaGFuZHMgdXBvbiBoaW0sIGhlIGFza2VkIGhpbSBpZiBoZSBzYXcgb3VnaHQuCkFuZCBoZSBsb29rZWQgdXAsIGFuZCBzYWlkLCBJIHNlZSBtZW4gYXMgdHJlZXMsIHdhbGtpbmcuCkFmdGVyIHRoYXQgaGUgcHV0IGhpcyBoYW5kcyBhZ2FpbiB1cG9uIGhpcyBleWVzLCBhbmQgbWFkZSBoaW0gbG9vayB1cDogYW5kIGhlIHdhcyByZXN0b3JlZCwgYW5kIHNhdyBldmVyeSBtYW4gY2xlYXJseS4KQW5kIGhlIHNlbnQgaGltIGF3YXkgdG8gaGlzIGhvdXNlLCBzYXlpbmcsIE5laXRoZXIgZ28gaW50byB0aGUgdG93biwgbm9yIHRlbGwgaXQgdG8gYW55IGluIHRoZSB0b3duLgpBbmQgSmVzdXMgd2VudCBvdXQsIGFuZCBoaXMgZGlzY2lwbGVzLCBpbnRvIHRoZSB0b3ducyBvZiBDYWVzYXJlYSBQaGlsaXBwaTogYW5kIGJ5IHRoZSB3YXkgaGUgYXNrZWQgaGlzIGRpc2NpcGxlcywgc2F5aW5nIHVudG8gdGhlbSwgV2hvbSBkbyBtZW4gc2F5IHRoYXQgSSBhbT8KQW5kIHRoZXkgYW5zd2VyZWQsIEpvaG4gdGhlIEJhcHRpc3Q7IGJ1dCBzb21lIHNheSwgRWxpYXM7IGFuZCBvdGhlcnMsIE9uZSBvZiB0aGUgcHJvcGhldHMuCkFuZCBoZSBzYWl0aCB1bnRvIHRoZW0sIEJ1dCB3aG9tIHNheSB5ZSB0aGF0IEkgYW0/IEFuZCBQZXRlciBhbnN3ZXJldGggYW5kIHNhaXRoIHVudG8gaGltLCBUaG91IGFydCB0aGUgQ2hyaXN0LgpBbmQgaGUgY2hhcmdlZCB0aGVtIHRoYXQgdGhleSBzaG91bGQgdGVsbCBubyBtYW4gb2YgaGltLgpBbmQgaGUgYmVnYW4gdG8gdGVhY2ggdGhlbSwgdGhhdCB0aGUgU29uIG9mIG1hbiBtdXN0IHN1ZmZlciBtYW55IHRoaW5ncywgYW5kIGJlIHJlamVjdGVkIG9mIHRoZSBlbGRlcnMsIGFuZCBvZiB0aGUgY2hpZWYgcHJpZXN0cywgYW5kIHNjcmliZXMsIGFuZCBiZSBraWxsZWQsIGFuZCBhZnRlciB0aHJlZSBkYXlzIHJpc2UgYWdhaW4uCkFuZCBoZSBzcGFrZSB0aGF0IHNheWluZyBvcGVubHkuIEFuZCBQZXRlciB0b29rIGhpbSwgYW5kIGJlZ2FuIHRvIHJlYnVrZSBoaW0uCkJ1dCB3aGVuIGhlIGhhZCB0dXJuZWQgYWJvdXQgYW5kIGxvb2tlZCBvbiBoaXMgZGlzY2lwbGVzLCBoZSByZWJ1a2VkIFBldGVyLCBzYXlpbmcsIEdldCB0aGVlIGJlaGluZCBtZSwgU2F0YW46IGZvciB0aG91IHNhdm91cmVzdCBub3QgdGhlIHRoaW5ncyB0aGF0IGJlIG9mIEdvZCwgYnV0IHRoZSB0aGluZ3MgdGhhdCBiZSBvZiBtZW4uCkFuZCB3aGVuIGhlIGhhZCBjYWxsZWQgdGhlIHBlb3BsZSB1bnRvIGhpbSB3aXRoIGhpcyBkaXNjaXBsZXMgYWxzbywgaGUgc2FpZCB1bnRvIHRoZW0sIFdob3NvZXZlciB3aWxsIGNvbWUgYWZ0ZXIgbWUsIGxldCBoaW0gZGVueSBoaW1zZWxmLCBhbmQgdGFrZSB1cCBoaXMgY3Jvc3MsIGFuZCBmb2xsb3cgbWUuCkZvciB3aG9zb2V2ZXIgd2lsbCBzYXZlIGhpcyBsaWZlIHNoYWxsIGxvc2UgaXQ7IGJ1dCB3aG9zb2V2ZXIgc2hhbGwgbG9zZSBoaXMgbGlmZSBmb3IgbXkgc2FrZSBhbmQgdGhlIGdvc3BlbCdzLCB0aGUgc2FtZSBzaGFsbCBzYXZlIGl0LgpGb3Igd2hhdCBzaGFsbCBpdCBwcm9maXQgYSBtYW4sIGlmIGhlIHNoYWxsIGdhaW4gdGhlIHdob2xlIHdvcmxkLCBhbmQgbG9zZSBoaXMgb3duIHNvdWw/Ck9yIHdoYXQgc2hhbGwgYSBtYW4gZ2l2ZSBpbiBleGNoYW5nZSBmb3IgaGlzIHNvdWw/Cldob3NvZXZlciB0aGVyZWZvcmUgc2hhbGwgYmUgYXNoYW1lZCBvZiBtZSBhbmQgb2YgbXkgd29yZHMgaW4gdGhpcyBhZHVsdGVyb3VzIGFuZCBzaW5mdWwgZ2VuZXJhdGlvbjsgb2YgaGltIGFsc28gc2hhbGwgdGhlIFNvbiBvZiBtYW4gYmUgYXNoYW1lZCwgd2hlbiBoZSBjb21ldGggaW4gdGhlIGdsb3J5IG9mIGhpcyBGYXRoZXIgd2l0aCB0aGUgaG9seSBhbmdlbHMuCkFuZCBoZSBzYWlkIHVudG8gdGhlbSwgVmVyaWx5IEkgc2F5IHVudG8geW91LCBUaGF0IHRoZXJlIGJlIHNvbWUgb2YgdGhlbSB0aGF0IHN0YW5kIGhlcmUsIHdoaWNoIHNoYWxsIG5vdCB0YXN0ZSBvZiBkZWF0aCwgdGlsbCB0aGV5IGhhdmUgc2VlbiB0aGUga2luZ2RvbSBvZiBHb2QgY29tZSB3aXRoIHBvd2VyLgpBbmQgYWZ0ZXIgc2l4IGRheXMgSmVzdXMgdGFrZXRoIHdpdGggaGltIFBldGVyLCBhbmQgSmFtZXMsIGFuZCBKb2huLCBhbmQgbGVhZGV0aCB0aGVtIHVwIGludG8gYW4gaGlnaCBtb3VudGFpbiBhcGFydCBieSB0aGVtc2VsdmVzOiBhbmQgaGUgd2FzIHRyYW5zZmlndXJlZCBiZWZvcmUgdGhlbS4KQW5kIGhpcyByYWltZW50IGJlY2FtZSBzaGluaW5nLCBleGNlZWRpbmcgd2hpdGUgYXMgc25vdzsgc28gYXMgbm8gZnVsbGVyIG9uIGVhcnRoIGNhbiB3aGl0ZSB0aGVtLgpBbmQgdGhlcmUgYXBwZWFyZWQgdW50byB0aGVtIEVsaWFzIHdpdGggTW9zZXM6IGFuZCB0aGV5IHdlcmUgdGFsa2luZyB3aXRoIEplc3VzLgpBbmQgUGV0ZXIgYW5zd2VyZWQgYW5kIHNhaWQgdG8gSmVzdXMsIE1hc3RlciwgaXQgaXMgZ29vZCBmb3IgdXMgdG8gYmUgaGVyZTogYW5kIGxldCB1cyBtYWtlIHRocmVlIHRhYmVybmFjbGVzOyBvbmUgZm9yIHRoZWUsIGFuZCBvbmUgZm9yIE1vc2VzLCBhbmQgb25lIGZvciBFbGlhcy4KRm9yIGhlIHdpc3Qgbm90IHdoYXQgdG8gc2F5OyBmb3IgdGhleSB3ZXJlIHNvcmUgYWZyYWlkLgpBbmQgdGhlcmUgd2FzIGEgY2xvdWQgdGhhdCBvdmVyc2hhZG93ZWQgdGhlbTogYW5kIGEgdm9pY2UgY2FtZSBvdXQgb2YgdGhlIGNsb3VkLCBzYXlpbmcsIFRoaXMgaXMgbXkgYmVsb3ZlZCBTb246IGhlYXIgaGltLgpBbmQgc3VkZGVubHksIHdoZW4gdGhleSBoYWQgbG9va2VkIHJvdW5kIGFib3V0LCB0aGV5IHNhdyBubyBtYW4gYW55IG1vcmUsIHNhdmUgSmVzdXMgb25seSB3aXRoIHRoZW1zZWx2ZXMuCkFuZCBhcyB0aGV5IGNhbWUgZG93biBmcm9tIHRoZSBtb3VudGFpbiwgaGUgY2hhcmdlZCB0aGVtIHRoYXQgdGhleSBzaG91bGQgdGVsbCBubyBtYW4gd2hhdCB0aGluZ3MgdGhleSBoYWQgc2VlbiwgdGlsbCB0aGUgU29uIG9mIG1hbiB3ZXJlIHJpc2VuIGZyb20gdGhlIGRlYWQuCkFuZCB0aGV5IGtlcHQgdGhhdCBzYXlpbmcgd2l0aCB0aGVtc2VsdmVzLCBxdWVzdGlvbmluZyBvbmUgd2l0aCBhbm90aGVyIHdoYXQgdGhlIHJpc2luZyBmcm9tIHRoZSBkZWFkIHNob3VsZCBtZWFuLgpBbmQgdGhleSBhc2tlZCBoaW0sIHNheWluZywgV2h5IHNheSB0aGUgc2NyaWJlcyB0aGF0IEVsaWFzIG11c3QgZmlyc3QgY29tZT8KQW5kIGhlIGFuc3dlcmVkIGFuZCB0b2xkIHRoZW0sIEVsaWFzIHZlcmlseSBjb21ldGggZmlyc3QsIGFuZCByZXN0b3JldGggYWxsIHRoaW5nczsgYW5kIGhvdyBpdCBpcyB3cml0dGVuIG9mIHRoZSBTb24gb2YgbWFuLCB0aGF0IGhlIG11c3Qgc3VmZmVyIG1hbnkgdGhpbmdzLCBhbmQgYmUgc2V0IGF0IG5vdWdodC4KQnV0IEkgc2F5IHVudG8geW91LCBUaGF0IEVsaWFzIGlzIGluZGVlZCBjb21lLCBhbmQgdGhleSBoYXZlIGRvbmUgdW50byBoaW0gd2hhdHNvZXZlciB0aGV5IGxpc3RlZCwgYXMgaXQgaXMgd3JpdHRlbiBvZiBoaW0uCkFuZCB3aGVuIGhlIGNhbWUgdG8gaGlzIGRpc2NpcGxlcywgaGUgc2F3IGEgZ3JlYXQgbXVsdGl0dWRlIGFib3V0IHRoZW0sIGFuZCB0aGUgc2NyaWJlcyBxdWVzdGlvbmluZyB3aXRoIHRoZW0uCkFuZCBzdHJhaWdodHdheSBhbGwgdGhlIHBlb3BsZSwgd2hlbiB0aGV5IGJlaGVsZCBoaW0sIHdlcmUgZ3JlYXRseSBhbWF6ZWQsIGFuZCBydW5uaW5nIHRvIGhpbSBzYWx1dGVkIGhpbS4KQW5kIGhlIGFza2VkIHRoZSBzY3JpYmVzLCBXaGF0IHF1ZXN0aW9uIHllIHdpdGggdGhlbT8KQW5kIG9uZSBvZiB0aGUgbXVsdGl0dWRlIGFuc3dlcmVkIGFuZCBzYWlkLCBNYXN0ZXIsIEkgaGF2ZSBicm91Z2h0IHVudG8gdGhlZSBteSBzb24sIHdoaWNoIGhhdGggYSBkdW1iIHNwaXJpdDsKQW5kIHdoZXJlc29ldmVyIGhlIHRha2V0aCBoaW0sIGhlIHRlYXJldGggaGltOiBhbmQgaGUgZm9hbWV0aCwgYW5kIGduYXNoZXRoIHdpdGggaGlzIHRlZXRoLCBhbmQgcGluZXRoIGF3YXk6IGFuZCBJIHNwYWtlIHRvIHRoeSBkaXNjaXBsZXMgdGhhdCB0aGV5IHNob3VsZCBjYXN0IGhpbSBvdXQ7IGFuZCB0aGV5IGNvdWxkIG5vdC4KSGUgYW5zd2VyZXRoIGhpbSwgYW5kIHNhaXRoLCBPIGZhaXRobGVzcyBnZW5lcmF0aW9uLCBob3cgbG9uZyBzaGFsbCBJIGJlIHdpdGggeW91PyBob3cgbG9uZyBzaGFsbCBJIHN1ZmZlciB5b3U/IGJyaW5nIGhpbSB1bnRvIG1lLgpBbmQgdGhleSBicm91Z2h0IGhpbSB1bnRvIGhpbTogYW5kIHdoZW4gaGUgc2F3IGhpbSwgc3RyYWlnaHR3YXkgdGhlIHNwaXJpdCB0YXJlIGhpbTsgYW5kIGhlIGZlbGwgb24gdGhlIGdyb3VuZCwgYW5kIHdhbGxvd2VkIGZvYW1pbmcuCkFuZCBoZSBhc2tlZCBoaXMgZmF0aGVyLCBIb3cgbG9uZyBpcyBpdCBhZ28gc2luY2UgdGhpcyBjYW1lIHVudG8gaGltPyBBbmQgaGUgc2FpZCwgT2YgYSBjaGlsZC4KQW5kIG9mdHRpbWVzIGl0IGhhdGggY2FzdCBoaW0gaW50byB0aGUgZmlyZSwgYW5kIGludG8gdGhlIHdhdGVycywgdG8gZGVzdHJveSBoaW06IGJ1dCBpZiB0aG91IGNhbnN0IGRvIGFueSB0aGluZywgaGF2ZSBjb21wYXNzaW9uIG9uIHVzLCBhbmQgaGVscCB1cy4KSmVzdXMgc2FpZCB1bnRvIGhpbSwgSWYgdGhvdSBjYW5zdCBiZWxpZXZlLCBhbGwgdGhpbmdzIGFyZSBwb3NzaWJsZSB0byBoaW0gdGhhdCBiZWxpZXZldGguCkFuZCBzdHJhaWdodHdheSB0aGUgZmF0aGVyIG9mIHRoZSBjaGlsZCBjcmllZCBvdXQsIGFuZCBzYWlkIHdpdGggdGVhcnMsIExvcmQsIEkgYmVsaWV2ZTsgaGVscCB0aG91IG1pbmUgdW5iZWxpZWYuCldoZW4gSmVzdXMgc2F3IHRoYXQgdGhlIHBlb3BsZSBjYW1lIHJ1bm5pbmcgdG9nZXRoZXIsIGhlIHJlYnVrZWQgdGhlIGZvdWwgc3Bpcml0LCBzYXlpbmcgdW50byBoaW0sIFRob3UgZHVtYiBhbmQgZGVhZiBzcGlyaXQsIEkgY2hhcmdlIHRoZWUsIGNvbWUgb3V0IG9mIGhpbSwgYW5kIGVudGVyIG5vIG1vcmUgaW50byBoaW0uCkFuZCB0aGUgc3Bpcml0IGNyaWVkLCBhbmQgcmVudCBoaW0gc29yZSwgYW5kIGNhbWUgb3V0IG9mIGhpbTogYW5kIGhlIHdhcyBhcyBvbmUgZGVhZDsgaW5zb211Y2ggdGhhdCBtYW55IHNhaWQsIEhlIGlzIGRlYWQuCkJ1dCBKZXN1cyB0b29rIGhpbSBieSB0aGUgaGFuZCwgYW5kIGxpZnRlZCBoaW0gdXA7IGFuZCBoZSBhcm9zZS4KQW5kIHdoZW4gaGUgd2FzIGNvbWUgaW50byB0aGUgaG91c2UsIGhpcyBkaXNjaXBsZXMgYXNrZWQgaGltIHByaXZhdGVseSwgV2h5IGNvdWxkIG5vdCB3ZSBjYXN0IGhpbSBvdXQ/CkFuZCBoZSBzYWlkIHVudG8gdGhlbSwgVGhpcyBraW5kIGNhbiBjb21lIGZvcnRoIGJ5IG5vdGhpbmcsIGJ1dCBieSBwcmF5ZXIgYW5kIGZhc3RpbmcuCkFuZCB0aGV5IGRlcGFydGVkIHRoZW5jZSwgYW5kIHBhc3NlZCB0aHJvdWdoIEdhbGlsZWU7IGFuZCBoZSB3b3VsZCBub3QgdGhhdCBhbnkgbWFuIHNob3VsZCBrbm93IGl0LgpGb3IgaGUgdGF1Z2h0IGhpcyBkaXNjaXBsZXMsIGFuZCBzYWlkIHVudG8gdGhlbSwgVGhlIFNvbiBvZiBtYW4gaXMgZGVsaXZlcmVkIGludG8gdGhlIGhhbmRzIG9mIG1lbiwgYW5kIHRoZXkgc2hhbGwga2lsbCBoaW07IGFuZCBhZnRlciB0aGF0IGhlIGlzIGtpbGxlZCwgaGUgc2hhbGwgcmlzZSB0aGUgdGhpcmQgZGF5LgpCdXQgdGhleSB1bmRlcnN0b29kIG5vdCB0aGF0IHNheWluZywgYW5kIHdlcmUgYWZyYWlkIHRvIGFzayBoaW0uCkFuZCBoZSBjYW1lIHRvIENhcGVybmF1bTogYW5kIGJlaW5nIGluIHRoZSBob3VzZSBoZSBhc2tlZCB0aGVtLCBXaGF0IHdhcyBpdCB0aGF0IHllIGRpc3B1dGVkIGFtb25nIHlvdXJzZWx2ZXMgYnkgdGhlIHdheT8KQnV0IHRoZXkgaGVsZCB0aGVpciBwZWFjZTogZm9yIGJ5IHRoZSB3YXkgdGhleSBoYWQgZGlzcHV0ZWQgYW1vbmcgdGhlbXNlbHZlcywgd2hvIHNob3VsZCBiZSB0aGUgZ3JlYXRlc3QuCkFuZCBoZSBzYXQgZG93biwgYW5kIGNhbGxlZCB0aGUgdHdlbHZlLCBhbmQgc2FpdGggdW50byB0aGVtLCBJZiBhbnkgbWFuIGRlc2lyZSB0byBiZSBmaXJzdCwgdGhlIHNhbWUgc2hhbGwgYmUgbGFzdCBvZiBhbGwsIGFuZCBzZXJ2YW50IG9mIGFsbC4KQW5kIGhlIHRvb2sgYSBjaGlsZCwgYW5kIHNldCBoaW0gaW4gdGhlIG1pZHN0IG9mIHRoZW06IGFuZCB3aGVuIGhlIGhhZCB0YWtlbiBoaW0gaW4gaGlzIGFybXMsIGhlIHNhaWQgdW50byB0aGVtLApXaG9zb2V2ZXIgc2hhbGwgcmVjZWl2ZSBvbmUgb2Ygc3VjaCBjaGlsZHJlbiBpbiBteSBuYW1lLCByZWNlaXZldGggbWU6IGFuZCB3aG9zb2V2ZXIgc2hhbGwgcmVjZWl2ZSBtZSwgcmVjZWl2ZXRoIG5vdCBtZSwgYnV0IGhpbSB0aGF0IHNlbnQgbWUuCkFuZCBKb2huIGFuc3dlcmVkIGhpbSwgc2F5aW5nLCBNYXN0ZXIsIHdlIHNhdyBvbmUgY2FzdGluZyBvdXQgZGV2aWxzIGluIHRoeSBuYW1lLCBhbmQgaGUgZm9sbG93ZXRoIG5vdCB1czogYW5kIHdlIGZvcmJhZCBoaW0sIGJlY2F1c2UgaGUgZm9sbG93ZXRoIG5vdCB1cy4KQnV0IEplc3VzIHNhaWQsIEZvcmJpZCBoaW0gbm90OiBmb3IgdGhlcmUgaXMgbm8gbWFuIHdoaWNoIHNoYWxsIGRvIGEgbWlyYWNsZSBpbiBteSBuYW1lLCB0aGF0IGNhbiBsaWdodGx5IHNwZWFrIGV2aWwgb2YgbWUuCkZvciBoZSB0aGF0IGlzIG5vdCBhZ2FpbnN0IHVzIGlzIG9uIG91ciBwYXJ0LgpGb3Igd2hvc29ldmVyIHNoYWxsIGdpdmUgeW91IGEgY3VwIG9mIHdhdGVyIHRvIGRyaW5rIGluIG15IG5hbWUsIGJlY2F1c2UgeWUgYmVsb25nIHRvIENocmlzdCwgdmVyaWx5IEkgc2F5IHVudG8geW91LCBoZSBzaGFsbCBub3QgbG9zZSBoaXMgcmV3YXJkLgpBbmQgd2hvc29ldmVyIHNoYWxsIG9mZmVuZCBvbmUgb2YgdGhlc2UgbGl0dGxlIG9uZXMgdGhhdCBiZWxpZXZlIGluIG1lLCBpdCBpcyBiZXR0ZXIgZm9yIGhpbSB0aGF0IGEgbWlsbHN0b25lIHdlcmUgaGFuZ2VkIGFib3V0IGhpcyBuZWNrLCBhbmQgaGUgd2VyZSBjYXN0IGludG8gdGhlIHNlYS4KQW5kIGlmIHRoeSBoYW5kIG9mZmVuZCB0aGVlLCBjdXQgaXQgb2ZmOiBpdCBpcyBiZXR0ZXIgZm9yIHRoZWUgdG8gZW50ZXIgaW50byBsaWZlIG1haW1lZCwgdGhhbiBoYXZpbmcgdHdvIGhhbmRzIHRvIGdvIGludG8gaGVsbCwgaW50byB0aGUgZmlyZSB0aGF0IG5ldmVyIHNoYWxsIGJlIHF1ZW5jaGVkOgpXaGVyZSB0aGVpciB3b3JtIGRpZXRoIG5vdCwgYW5kIHRoZSBmaXJlIGlzIG5vdCBxdWVuY2hlZC4KQW5kIGlmIHRoeSBmb290IG9mZmVuZCB0aGVlLCBjdXQgaXQgb2ZmOiBpdCBpcyBiZXR0ZXIgZm9yIHRoZWUgdG8gZW50ZXIgaGFsdCBpbnRvIGxpZmUsIHRoYW4gaGF2aW5nIHR3byBmZWV0IHRvIGJlIGNhc3QgaW50byBoZWxsLCBpbnRvIHRoZSBmaXJlIHRoYXQgbmV2ZXIgc2hhbGwgYmUgcXVlbmNoZWQ6CldoZXJlIHRoZWlyIHdvcm0gZGlldGggbm90LCBhbmQgdGhlIGZpcmUgaXMgbm90IHF1ZW5jaGVkLgpBbmQgaWYgdGhpbmUgZXllIG9mZmVuZCB0aGVlLCBwbHVjayBpdCBvdXQ6IGl0IGlzIGJldHRlciBmb3IgdGhlZSB0byBlbnRlciBpbnRvIHRoZSBraW5nZG9tIG9mIEdvZCB3aXRoIG9uZSBleWUsIHRoYW4gaGF2aW5nIHR3byBleWVzIHRvIGJlIGNhc3QgaW50byBoZWxsIGZpcmU6CldoZXJlIHRoZWlyIHdvcm0gZGlldGggbm90LCBhbmQgdGhlIGZpcmUgaXMgbm90IHF1ZW5jaGVkLgpGb3IgZXZlcnkgb25lIHNoYWxsIGJlIHNhbHRlZCB3aXRoIGZpcmUsIGFuZCBldmVyeSBzYWNyaWZpY2Ugc2hhbGwgYmUgc2FsdGVkIHdpdGggc2FsdC4KU2FsdCBpcyBnb29kOiBidXQgaWYgdGhlIHNhbHQgaGF2ZSBsb3N0IGhpcyBzYWx0bmVzcywgd2hlcmV3aXRoIHdpbGwgeWUgc2Vhc29uIGl0PyBIYXZlIHNhbHQgaW4geW91cnNlbHZlcywgYW5kIGhhdmUgcGVhY2Ugb25lIHdpdGggYW5vdGhlci4KQW5kIGhlIGFyb3NlIGZyb20gdGhlbmNlLCBhbmQgY29tZXRoIGludG8gdGhlIGNvYXN0cyBvZiBKdWRhZWEgYnkgdGhlIGZhcnRoZXIgc2lkZSBvZiBKb3JkYW46IGFuZCB0aGUgcGVvcGxlIHJlc29ydCB1bnRvIGhpbSBhZ2FpbjsgYW5kLCBhcyBoZSB3YXMgd29udCwgaGUgdGF1Z2h0IHRoZW0gYWdhaW4uCkFuZCB0aGUgUGhhcmlzZWVzIGNhbWUgdG8gaGltLCBhbmQgYXNrZWQgaGltLCBJcyBpdCBsYXdmdWwgZm9yIGEgbWFuIHRvIHB1dCBhd2F5IGhpcyB3aWZlPyB0ZW1wdGluZyBoaW0uCkFuZCBoZSBhbnN3ZXJlZCBhbmQgc2FpZCB1bnRvIHRoZW0sIFdoYXQgZGlkIE1vc2VzIGNvbW1hbmQgeW91PwpBbmQgdGhleSBzYWlkLCBNb3NlcyBzdWZmZXJlZCB0byB3cml0ZSBhIGJpbGwgb2YgZGl2b3JjZW1lbnQsIGFuZCB0byBwdXQgaGVyIGF3YXkuCkFuZCBKZXN1cyBhbnN3ZXJlZCBhbmQgc2FpZCB1bnRvIHRoZW0sIEZvciB0aGUgaGFyZG5lc3Mgb2YgeW91ciBoZWFydCBoZSB3cm90ZSB5b3UgdGhpcyBwcmVjZXB0LgpCdXQgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBjcmVhdGlvbiBHb2QgbWFkZSB0aGVtIG1hbGUgYW5kIGZlbWFsZS4KRm9yIHRoaXMgY2F1c2Ugc2hhbGwgYSBtYW4gbGVhdmUgaGlzIGZhdGhlciBhbmQgbW90aGVyLCBhbmQgY2xlYXZlIHRvIGhpcyB3aWZlOwpBbmQgdGhleSB0d2FpbiBzaGFsbCBiZSBvbmUgZmxlc2g6IHNvIHRoZW4gdGhleSBhcmUgbm8gbW9yZSB0d2FpbiwgYnV0IG9uZSBmbGVzaC4KV2hhdCB0aGVyZWZvcmUgR29kIGhhdGggam9pbmVkIHRvZ2V0aGVyLCBsZXQgbm90IG1hbiBwdXQgYXN1bmRlci4KQW5kIGluIHRoZSBob3VzZSBoaXMgZGlzY2lwbGVzIGFza2VkIGhpbSBhZ2FpbiBvZiB0aGUgc2FtZSBtYXR0ZXIuCkFuZCBoZSBzYWl0aCB1bnRvIHRoZW0sIFdob3NvZXZlciBzaGFsbCBwdXQgYXdheSBoaXMgd2lmZSwgYW5kIG1hcnJ5IGFub3RoZXIsIGNvbW1pdHRldGggYWR1bHRlcnkgYWdhaW5zdCBoZXIuCkFuZCBpZiBhIHdvbWFuIHNoYWxsIHB1dCBhd2F5IGhlciBodXNiYW5kLCBhbmQgYmUgbWFycmllZCB0byBhbm90aGVyLCBzaGUgY29tbWl0dGV0aCBhZHVsdGVyeS4KQW5kIHRoZXkgYnJvdWdodCB5b3VuZyBjaGlsZHJlbiB0byBoaW0sIHRoYXQgaGUgc2hvdWxkIHRvdWNoIHRoZW06IGFuZCBoaXMgZGlzY2lwbGVzIHJlYnVrZWQgdGhvc2UgdGhhdCBicm91Z2h0IHRoZW0uCkJ1dCB3aGVuIEplc3VzIHNhdyBpdCwgaGUgd2FzIG11Y2ggZGlzcGxlYXNlZCwgYW5kIHNhaWQgdW50byB0aGVtLCBTdWZmZXIgdGhlIGxpdHRsZSBjaGlsZHJlbiB0byBjb21lIHVudG8gbWUsIGFuZCBmb3JiaWQgdGhlbSBub3Q6IGZvciBvZiBzdWNoIGlzIHRoZSBraW5nZG9tIG9mIEdvZC4KVmVyaWx5IEkgc2F5IHVudG8geW91LCBXaG9zb2V2ZXIgc2hhbGwgbm90IHJlY2VpdmUgdGhlIGtpbmdkb20gb2YgR29kIGFzIGEgbGl0dGxlIGNoaWxkLCBoZSBzaGFsbCBub3QgZW50ZXIgdGhlcmVpbi4KQW5kIGhlIHRvb2sgdGhlbSB1cCBpbiBoaXMgYXJtcywgcHV0IGhpcyBoYW5kcyB1cG9uIHRoZW0sIGFuZCBibGVzc2VkIHRoZW0uCkFuZCB3aGVuIGhlIHdhcyBnb25lIGZvcnRoIGludG8gdGhlIHdheSwgdGhlcmUgY2FtZSBvbmUgcnVubmluZywgYW5kIGtuZWVsZWQgdG8gaGltLCBhbmQgYXNrZWQgaGltLCBHb29kIE1hc3Rlciwgd2hhdCBzaGFsbCBJIGRvIHRoYXQgSSBtYXkgaW5oZXJpdCBldGVybmFsIGxpZmU/CkFuZCBKZXN1cyBzYWlkIHVudG8gaGltLCBXaHkgY2FsbGVzdCB0aG91IG1lIGdvb2Q/IHRoZXJlIGlzIG5vbmUgZ29vZCBidXQgb25lLCB0aGF0IGlzLCBHb2QuClRob3Uga25vd2VzdCB0aGUgY29tbWFuZG1lbnRzLCBEbyBub3QgY29tbWl0IGFkdWx0ZXJ5LCBEbyBub3Qga2lsbCwgRG8gbm90IHN0ZWFsLCBEbyBub3QgYmVhciBmYWxzZSB3aXRuZXNzLCBEZWZyYXVkIG5vdCwgSG9ub3VyIHRoeSBmYXRoZXIgYW5kIG1vdGhlci4KQW5kIGhlIGFuc3dlcmVkIGFuZCBzYWlkIHVudG8gaGltLCBNYXN0ZXIsIGFsbCB0aGVzZSBoYXZlIEkgb2JzZXJ2ZWQgZnJvbSBteSB5b3V0aC4KVGhlbiBKZXN1cyBiZWhvbGRpbmcgaGltIGxvdmVkIGhpbSwgYW5kIHNhaWQgdW50byBoaW0sIE9uZSB0aGluZyB0aG91IGxhY2tlc3Q6IGdvIHRoeSB3YXksIHNlbGwgd2hhdHNvZXZlciB0aG91IGhhc3QsIGFuZCBnaXZlIHRvIHRoZSBwb29yLCBhbmQgdGhvdSBzaGFsdCBoYXZlIHRyZWFzdXJlIGluIGhlYXZlbjogYW5kIGNvbWUsIHRha2UgdXAgdGhlIGNyb3NzLCBhbmQgZm9sbG93IG1lLgpBbmQgaGUgd2FzIHNhZCBhdCB0aGF0IHNheWluZywgYW5kIHdlbnQgYXdheSBncmlldmVkOiBmb3IgaGUgaGFkIGdyZWF0IHBvc3Nlc3Npb25zLgpBbmQgSmVzdXMgbG9va2VkIHJvdW5kIGFib3V0LCBhbmQgc2FpdGggdW50byBoaXMgZGlzY2lwbGVzLCBIb3cgaGFyZGx5IHNoYWxsIHRoZXkgdGhhdCBoYXZlIHJpY2hlcyBlbnRlciBpbnRvIHRoZSBraW5nZG9tIG9mIEdvZCEKQW5kIHRoZSBkaXNjaXBsZXMgd2VyZSBhc3RvbmlzaGVkIGF0IGhpcyB3b3Jkcy4gQnV0IEplc3VzIGFuc3dlcmV0aCBhZ2FpbiwgYW5kIHNhaXRoIHVudG8gdGhlbSwgQ2hpbGRyZW4sIGhvdyBoYXJkIGlzIGl0IGZvciB0aGVtIHRoYXQgdHJ1c3QgaW4gcmljaGVzIHRvIGVudGVyIGludG8gdGhlIGtpbmdkb20gb2YgR29kIQpJdCBpcyBlYXNpZXIgZm9yIGEgY2FtZWwgdG8gZ28gdGhyb3VnaCB0aGUgZXllIG9mIGEgbmVlZGxlLCB0aGFuIGZvciBhIHJpY2ggbWFuIHRvIGVudGVyIGludG8gdGhlIGtpbmdkb20gb2YgR29kLgpBbmQgdGhleSB3ZXJlIGFzdG9uaXNoZWQgb3V0IG9mIG1lYXN1cmUsIHNheWluZyBhbW9uZyB0aGVtc2VsdmVzLCBXaG8gdGhlbiBjYW4gYmUgc2F2ZWQ/CkFuZCBKZXN1cyBsb29raW5nIHVwb24gdGhlbSBzYWl0aCwgV2l0aCBtZW4gaXQgaXMgaW1wb3NzaWJsZSwgYnV0IG5vdCB3aXRoIEdvZDogZm9yIHdpdGggR29kIGFsbCB0aGluZ3MgYXJlIHBvc3NpYmxlLgpUaGVuIFBldGVyIGJlZ2FuIHRvIHNheSB1bnRvIGhpbSwgTG8sIHdlIGhhdmUgbGVmdCBhbGwsIGFuZCBoYXZlIGZvbGxvd2VkIHRoZWUuCkFuZCBKZXN1cyBhbnN3ZXJlZCBhbmQgc2FpZCwgVmVyaWx5IEkgc2F5IHVudG8geW91LCBUaGVyZSBpcyBubyBtYW4gdGhhdCBoYXRoIGxlZnQgaG91c2UsIG9yIGJyZXRocmVuLCBvciBzaXN0ZXJzLCBvciBmYXRoZXIsIG9yIG1vdGhlciwgb3Igd2lmZSwgb3IgY2hpbGRyZW4sIG9yIGxhbmRzLCBmb3IgbXkgc2FrZSwgYW5kIHRoZSBnb3NwZWwncywKQnV0IGhlIHNoYWxsIHJlY2VpdmUgYW4gaHVuZHJlZGZvbGQgbm93IGluIHRoaXMgdGltZSwgaG91c2VzLCBhbmQgYnJldGhyZW4sIGFuZCBzaXN0ZXJzLCBhbmQgbW90aGVycywgYW5kIGNoaWxkcmVuLCBhbmQgbGFuZHMsIHdpdGggcGVyc2VjdXRpb25zOyBhbmQgaW4gdGhlIHdvcmxkIHRvIGNvbWUgZXRlcm5hbCBsaWZlLgpCdXQgbWFueSB0aGF0IGFyZSBmaXJzdCBzaGFsbCBiZSBsYXN0OyBhbmQgdGhlIGxhc3QgZmlyc3QuCkFuZCB0aGV5IHdlcmUgaW4gdGhlIHdheSBnb2luZyB1cCB0byBKZXJ1c2FsZW07IGFuZCBKZXN1cyB3ZW50IGJlZm9yZSB0aGVtOiBhbmQgdGhleSB3ZXJlIGFtYXplZDsgYW5kIGFzIHRoZXkgZm9sbG93ZWQsIHRoZXkgd2VyZSBhZnJhaWQuIEFuZCBoZSB0b29rIGFnYWluIHRoZSB0d2VsdmUsIGFuZCBiZWdhbiB0byB0ZWxsIHRoZW0gd2hhdCB0aGluZ3Mgc2hvdWxkIGhhcHBlbiB1bnRvIGhpbSwKU2F5aW5nLCBCZWhvbGQsIHdlIGdvIHVwIHRvIEplcnVzYWxlbTsgYW5kIHRoZSBTb24gb2YgbWFuIHNoYWxsIGJlIGRlbGl2ZXJlZCB1bnRvIHRoZSBjaGllZiBwcmllc3RzLCBhbmQgdW50byB0aGUgc2NyaWJlczsgYW5kIHRoZXkgc2hhbGwgY29uZGVtbiBoaW0gdG8gZGVhdGgsIGFuZCBzaGFsbCBkZWxpdmVyIGhpbSB0byB0aGUgR2VudGlsZXM6CkFuZCB0aGV5IHNoYWxsIG1vY2sgaGltLCBhbmQgc2hhbGwgc2NvdXJnZSBoaW0sIGFuZCBzaGFsbCBzcGl0IHVwb24gaGltLCBhbmQgc2hhbGwga2lsbCBoaW06IGFuZCB0aGUgdGhpcmQgZGF5IGhlIHNoYWxsIHJpc2UgYWdhaW4uCkFuZCBKYW1lcyBhbmQgSm9obiwgdGhlIHNvbnMgb2YgWmViZWRlZSwgY29tZSB1bnRvIGhpbSwgc2F5aW5nLCBNYXN0ZXIsIHdlIHdvdWxkIHRoYXQgdGhvdSBzaG91bGRlc3QgZG8gZm9yIHVzIHdoYXRzb2V2ZXIgd2Ugc2hhbGwgZGVzaXJlLgpBbmQgaGUgc2FpZCB1bnRvIHRoZW0sIFdoYXQgd291bGQgeWUgdGhhdCBJIHNob3VsZCBkbyBmb3IgeW91PwpUaGV5IHNhaWQgdW50byBoaW0sIEdyYW50IHVudG8gdXMgdGhhdCB3ZSBtYXkgc2l0LCBvbmUgb24gdGh5IHJpZ2h0IGhhbmQsIGFuZCB0aGUgb3RoZXIgb24gdGh5IGxlZnQgaGFuZCwgaW4gdGh5IGdsb3J5LgpCdXQgSmVzdXMgc2FpZCB1bnRvIHRoZW0sIFllIGtub3cgbm90IHdoYXQgeWUgYXNrOiBjYW4geWUgZHJpbmsgb2YgdGhlIGN1cCB0aGF0IEkgZHJpbmsgb2Y/IGFuZCBiZSBiYXB0aXplZCB3aXRoIHRoZSBiYXB0aXNtIHRoYXQgSSBhbSBiYXB0aXplZCB3aXRoPwpBbmQgdGhleSBzYWlkIHVudG8gaGltLCBXZSBjYW4uIEFuZCBKZXN1cyBzYWlkIHVudG8gdGhlbSwgWWUgc2hhbGwgaW5kZWVkIGRyaW5rIG9mIHRoZSBjdXAgdGhhdCBJIGRyaW5rIG9mOyBhbmQgd2l0aCB0aGUgYmFwdGlzbSB0aGF0IEkgYW0gYmFwdGl6ZWQgd2l0aGFsIHNoYWxsIHllIGJlIGJhcHRpemVkOgpCdXQgdG8gc2l0IG9uIG15IHJpZ2h0IGhhbmQgYW5kIG9uIG15IGxlZnQgaGFuZCBpcyBub3QgbWluZSB0byBnaXZlOyBidXQgaXQgc2hhbGwgYmUgZ2l2ZW4gdG8gdGhlbSBmb3Igd2hvbSBpdCBpcyBwcmVwYXJlZC4KQW5kIHdoZW4gdGhlIHRlbiBoZWFyZCBpdCwgdGhleSBiZWdhbiB0byBiZSBtdWNoIGRpc3BsZWFzZWQgd2l0aCBKYW1lcyBhbmQgSm9obi4KQnV0IEplc3VzIGNhbGxlZCB0aGVtIHRvIGhpbSwgYW5kIHNhaXRoIHVudG8gdGhlbSwgWWUga25vdyB0aGF0IHRoZXkgd2hpY2ggYXJlIGFjY291bnRlZCB0byBydWxlIG92ZXIgdGhlIEdlbnRpbGVzIGV4ZXJjaXNlIGxvcmRzaGlwIG92ZXIgdGhlbTsgYW5kIHRoZWlyIGdyZWF0IG9uZXMgZXhlcmNpc2UgYXV0aG9yaXR5IHVwb24gdGhlbS4KQnV0IHNvIHNoYWxsIGl0IG5vdCBiZSBhbW9uZyB5b3U6IGJ1dCB3aG9zb2V2ZXIgd2lsbCBiZSBncmVhdCBhbW9uZyB5b3UsIHNoYWxsIGJlIHlvdXIgbWluaXN0ZXI6CkFuZCB3aG9zb2V2ZXIgb2YgeW91IHdpbGwgYmUgdGhlIGNoaWVmZXN0LCBzaGFsbCBiZSBzZXJ2YW50IG9mIGFsbC4KRm9yIGV2ZW4gdGhlIFNvbiBvZiBtYW4gY2FtZSBub3QgdG8gYmUgbWluaXN0ZXJlZCB1bnRvLCBidXQgdG8gbWluaXN0ZXIsIGFuZCB0byBnaXZlIGhpcyBsaWZlIGEgcmFuc29tIGZvciBtYW55LgpBbmQgdGhleSBjYW1lIHRvIEplcmljaG86IGFuZCBhcyBoZSB3ZW50IG91dCBvZiBKZXJpY2hvIHdpdGggaGlzIGRpc2NpcGxlcyBhbmQgYSBncmVhdCBudW1iZXIgb2YgcGVvcGxlLCBibGluZCBCYXJ0aW1hZXVzLCB0aGUgc29uIG9mIFRpbWFldXMsIHNhdCBieSB0aGUgaGlnaHdheSBzaWRlIGJlZ2dpbmcuCkFuZCB3aGVuIGhlIGhlYXJkIHRoYXQgaXQgd2FzIEplc3VzIG9mIE5hemFyZXRoLCBoZSBiZWdhbiB0byBjcnkgb3V0LCBhbmQgc2F5LCBKZXN1cywgdGhvdSBzb24gb2YgRGF2aWQsIGhhdmUgbWVyY3kgb24gbWUuCkFuZCBtYW55IGNoYXJnZWQgaGltIHRoYXQgaGUgc2hvdWxkIGhvbGQgaGlzIHBlYWNlOiBidXQgaGUgY3JpZWQgdGhlIG1vcmUgYSBncmVhdCBkZWFsLCBUaG91IHNvbiBvZiBEYXZpZCwgaGF2ZSBtZXJjeSBvbiBtZS4KQW5kIEplc3VzIHN0b29kIHN0aWxsLCBhbmQgY29tbWFuZGVkIGhpbSB0byBiZSBjYWxsZWQuIEFuZCB0aGV5IGNhbGwgdGhlIGJsaW5kIG1hbiwgc2F5aW5nIHVudG8gaGltLCBCZSBvZiBnb29kIGNvbWZvcnQsIHJpc2U7IGhlIGNhbGxldGggdGhlZS4KQW5kIGhlLCBjYXN0aW5nIGF3YXkgaGlzIGdhcm1lbnQsIHJvc2UsIGFuZCBjYW1lIHRvIEplc3VzLgpBbmQgSmVzdXMgYW5zd2VyZWQgYW5kIHNhaWQgdW50byBoaW0sIFdoYXQgd2lsdCB0aG91IHRoYXQgSSBzaG91bGQgZG8gdW50byB0aGVlPyBUaGUgYmxpbmQgbWFuIHNhaWQgdW50byBoaW0sIExvcmQsIHRoYXQgSSBtaWdodCByZWNlaXZlIG15IHNpZ2h0LgpBbmQgSmVzdXMgc2FpZCB1bnRvIGhpbSwgR28gdGh5IHdheTsgdGh5IGZhaXRoIGhhdGggbWFkZSB0aGVlIHdob2xlLiBBbmQgaW1tZWRpYXRlbHkgaGUgcmVjZWl2ZWQgaGlzIHNpZ2h0LCBhbmQgZm9sbG93ZWQgSmVzdXMgaW4gdGhlIHdheS4KQW5kIHdoZW4gdGhleSBjYW1lIG5pZ2ggdG8gSmVydXNhbGVtLCB1bnRvIEJldGhwaGFnZSBhbmQgQmV0aGFueSwgYXQgdGhlIG1vdW50IG9mIE9saXZlcywgaGUgc2VuZGV0aCBmb3J0aCB0d28gb2YgaGlzIGRpc2NpcGxlcywKQW5kIHNhaXRoIHVudG8gdGhlbSwgR28geW91ciB3YXkgaW50byB0aGUgdmlsbGFnZSBvdmVyIGFnYWluc3QgeW91OiBhbmQgYXMgc29vbiBhcyB5ZSBiZSBlbnRlcmVkIGludG8gaXQsIHllIHNoYWxsIGZpbmQgYSBjb2x0IHRpZWQsIHdoZXJlb24gbmV2ZXIgbWFuIHNhdDsgbG9vc2UgaGltLCBhbmQgYnJpbmcgaGltLgpBbmQgaWYgYW55IG1hbiBzYXkgdW50byB5b3UsIFdoeSBkbyB5ZSB0aGlzPyBzYXkgeWUgdGhhdCB0aGUgTG9yZCBoYXRoIG5lZWQgb2YgaGltOyBhbmQgc3RyYWlnaHR3YXkgaGUgd2lsbCBzZW5kIGhpbSBoaXRoZXIuCkFuZCB0aGV5IHdlbnQgdGhlaXIgd2F5LCBhbmQgZm91bmQgdGhlIGNvbHQgdGllZCBieSB0aGUgZG9vciB3aXRob3V0IGluIGEgcGxhY2Ugd2hlcmUgdHdvIHdheXMgbWV0OyBhbmQgdGhleSBsb29zZSBoaW0uCkFuZCBjZXJ0YWluIG9mIHRoZW0gdGhhdCBzdG9vZCB0aGVyZSBzYWlkIHVudG8gdGhlbSwgV2hhdCBkbyB5ZSwgbG9vc2luZyB0aGUgY29sdD8KQW5kIHRoZXkgc2FpZCB1bnRvIHRoZW0gZXZlbiBhcyBKZXN1cyBoYWQgY29tbWFuZGVkOiBhbmQgdGhleSBsZXQgdGhlbSBnby4KQW5kIHRoZXkgYnJvdWdodCB0aGUgY29sdCB0byBKZXN1cywgYW5kIGNhc3QgdGhlaXIgZ2FybWVudHMgb24gaGltOyBhbmQgaGUgc2F0IHVwb24gaGltLgpBbmQgbWFueSBzcHJlYWQgdGhlaXIgZ2FybWVudHMgaW4gdGhlIHdheTogYW5kIG90aGVycyBjdXQgZG93biBicmFuY2hlcyBvZmYgdGhlIHRyZWVzLCBhbmQgc3RyYXdlZCB0aGVtIGluIHRoZSB3YXkuCkFuZCB0aGV5IHRoYXQgd2VudCBiZWZvcmUsIGFuZCB0aGV5IHRoYXQgZm9sbG93ZWQsIGNyaWVkLCBzYXlpbmcsIEhvc2FubmE7IEJsZXNzZWQgaXMgaGUgdGhhdCBjb21ldGggaW4gdGhlIG5hbWUgb2YgdGhlIExvcmQ6CkJsZXNzZWQgYmUgdGhlIGtpbmdkb20gb2Ygb3VyIGZhdGhlciBEYXZpZCwgdGhhdCBjb21ldGggaW4gdGhlIG5hbWUgb2YgdGhlIExvcmQ6IEhvc2FubmEgaW4gdGhlIGhpZ2hlc3QuCkFuZCBKZXN1cyBlbnRlcmVkIGludG8gSmVydXNhbGVtLCBhbmQgaW50byB0aGUgdGVtcGxlOiBhbmQgd2hlbiBoZSBoYWQgbG9va2VkIHJvdW5kIGFib3V0IHVwb24gYWxsIHRoaW5ncywgYW5kIG5vdyB0aGUgZXZlbnRpZGUgd2FzIGNvbWUsIGhlIHdlbnQgb3V0IHVudG8gQmV0aGFueSB3aXRoIHRoZSB0d2VsdmUuCkFuZCBvbiB0aGUgbW9ycm93LCB3aGVuIHRoZXkgd2VyZSBjb21lIGZyb20gQmV0aGFueSwgaGUgd2FzIGh1bmdyeToKQW5kIHNlZWluZyBhIGZpZyB0cmVlIGFmYXIgb2ZmIGhhdmluZyBsZWF2ZXMsIGhlIGNhbWUsIGlmIGhhcGx5IGhlIG1pZ2h0IGZpbmQgYW55IHRoaW5nIHRoZXJlb246IGFuZCB3aGVuIGhlIGNhbWUgdG8gaXQsIGhlIGZvdW5kIG5vdGhpbmcgYnV0IGxlYXZlczsgZm9yIHRoZSB0aW1lIG9mIGZpZ3Mgd2FzIG5vdCB5ZXQuCkFuZCBKZXN1cyBhbnN3ZXJlZCBhbmQgc2FpZCB1bnRvIGl0LCBObyBtYW4gZWF0IGZydWl0IG9mIHRoZWUgaGVyZWFmdGVyIGZvciBldmVyLiBBbmQgaGlzIGRpc2NpcGxlcyBoZWFyZCBpdC4KQW5kIHRoZXkgY29tZSB0byBKZXJ1c2FsZW06IGFuZCBKZXN1cyB3ZW50IGludG8gdGhlIHRlbXBsZSwgYW5kIGJlZ2FuIHRvIGNhc3Qgb3V0IHRoZW0gdGhhdCBzb2xkIGFuZCBib3VnaHQgaW4gdGhlIHRlbXBsZSwgYW5kIG92ZXJ0aHJldyB0aGUgdGFibGVzIG9mIHRoZSBtb25leWNoYW5nZXJzLCBhbmQgdGhlIHNlYXRzIG9mIHRoZW0gdGhhdCBzb2xkIGRvdmVzOwpBbmQgd291bGQgbm90IHN1ZmZlciB0aGF0IGFueSBtYW4gc2hvdWxkIGNhcnJ5IGFueSB2ZXNzZWwgdGhyb3VnaCB0aGUgdGVtcGxlLgpBbmQgaGUgdGF1Z2h0LCBzYXlpbmcgdW50byB0aGVtLCBJcyBpdCBub3Qgd3JpdHRlbiwgTXkgaG91c2Ugc2hhbGwgYmUgY2FsbGVkIG9mIGFsbCBuYXRpb25zIHRoZSBob3VzZSBvZiBwcmF5ZXI/IGJ1dCB5ZSBoYXZlIG1hZGUgaXQgYSBkZW4gb2YgdGhpZXZlcy4KQW5kIHRoZSBzY3JpYmVzIGFuZCBjaGllZiBwcmllc3RzIGhlYXJkIGl0LCBhbmQgc291Z2h0IGhvdyB0aGV5IG1pZ2h0IGRlc3Ryb3kgaGltOiBmb3IgdGhleSBmZWFyZWQgaGltLCBiZWNhdXNlIGFsbCB0aGUgcGVvcGxlIHdhcyBhc3RvbmlzaGVkIGF0IGhpcyBkb2N0cmluZS4KQW5kIHdoZW4gZXZlbiB3YXMgY29tZSwgaGUgd2VudCBvdXQgb2YgdGhlIGNpdHkuCkFuZCBpbiB0aGUgbW9ybmluZywgYXMgdGhleSBwYXNzZWQgYnksIHRoZXkgc2F3IHRoZSBmaWcgdHJlZSBkcmllZCB1cCBmcm9tIHRoZSByb290cy4KQW5kIFBldGVyIGNhbGxpbmcgdG8gcmVtZW1icmFuY2Ugc2FpdGggdW50byBoaW0sIE1hc3RlciwgYmVob2xkLCB0aGUgZmlnIHRyZWUgd2hpY2ggdGhvdSBjdXJzZWRzdCBpcyB3aXRoZXJlZCBhd2F5LgpBbmQgSmVzdXMgYW5zd2VyaW5nIHNhaXRoIHVudG8gdGhlbSwgSGF2ZSBmYWl0aCBpbiBHb2QuCkZvciB2ZXJpbHkgSSBzYXkgdW50byB5b3UsIFRoYXQgd2hvc29ldmVyIHNoYWxsIHNheSB1bnRvIHRoaXMgbW91bnRhaW4sIEJlIHRob3UgcmVtb3ZlZCwgYW5kIGJlIHRob3UgY2FzdCBpbnRvIHRoZSBzZWE7IGFuZCBzaGFsbCBub3QgZG91YnQgaW4gaGlzIGhlYXJ0LCBidXQgc2hhbGwgYmVsaWV2ZSB0aGF0IHRob3NlIHRoaW5ncyB3aGljaCBoZSBzYWl0aCBzaGFsbCBjb21lIHRvIHBhc3M7IGhlIHNoYWxsIGhhdmUgd2hhdHNvZXZlciBoZSBzYWl0aC4KVGhlcmVmb3JlIEkgc2F5IHVudG8geW91LCBXaGF0IHRoaW5ncyBzb2V2ZXIgeWUgZGVzaXJlLCB3aGVuIHllIHByYXksIGJlbGlldmUgdGhhdCB5ZSByZWNlaXZlIHRoZW0sIGFuZCB5ZSBzaGFsbCBoYXZlIHRoZW0uCkFuZCB3aGVuIHllIHN0YW5kIHByYXlpbmcsIGZvcmdpdmUsIGlmIHllIGhhdmUgb3VnaHQgYWdhaW5zdCBhbnk6IHRoYXQgeW91ciBGYXRoZXIgYWxzbyB3aGljaCBpcyBpbiBoZWF2ZW4gbWF5IGZvcmdpdmUgeW91IHlvdXIgdHJlc3Bhc3Nlcy4KQnV0IGlmIHllIGRvIG5vdCBmb3JnaXZlLCBuZWl0aGVyIHdpbGwgeW91ciBGYXRoZXIgd2hpY2ggaXMgaW4gaGVhdmVuIGZvcmdpdmUgeW91ciB0cmVzcGFzc2VzLgpBbmQgdGhleSBjb21lIGFnYWluIHRvIEplcnVzYWxlbTogYW5kIGFzIGhlIHdhcyB3YWxraW5nIGluIHRoZSB0ZW1wbGUsIHRoZXJlIGNvbWUgdG8gaGltIHRoZSBjaGllZiBwcmllc3RzLCBhbmQgdGhlIHNjcmliZXMsIGFuZCB0aGUgZWxkZXJzLApBbmQgc2F5IHVudG8gaGltLCBCeSB3aGF0IGF1dGhvcml0eSBkb2VzdCB0aG91IHRoZXNlIHRoaW5ncz8gYW5kIHdobyBnYXZlIHRoZWUgdGhpcyBhdXRob3JpdHkgdG8gZG8gdGhlc2UgdGhpbmdzPwpBbmQgSmVzdXMgYW5zd2VyZWQgYW5kIHNhaWQgdW50byB0aGVtLCBJIHdpbGwgYWxzbyBhc2sgb2YgeW91IG9uZSBxdWVzdGlvbiwgYW5kIGFuc3dlciBtZSwgYW5kIEkgd2lsbCB0ZWxsIHlvdSBieSB3aGF0IGF1dGhvcml0eSBJIGRvIHRoZXNlIHRoaW5ncy4KVGhlIGJhcHRpc20gb2YgSm9obiwgd2FzIGl0IGZyb20gaGVhdmVuLCBvciBvZiBtZW4/IGFuc3dlciBtZS4KQW5kIHRoZXkgcmVhc29uZWQgd2l0aCB0aGVtc2VsdmVzLCBzYXlpbmcsIElmIHdlIHNoYWxsIHNheSwgRnJvbSBoZWF2ZW47IGhlIHdpbGwgc2F5LCBXaHkgdGhlbiBkaWQgeWUgbm90IGJlbGlldmUgaGltPwpCdXQgaWYgd2Ugc2hhbGwgc2F5LCBPZiBtZW47IHRoZXkgZmVhcmVkIHRoZSBwZW9wbGU6IGZvciBhbGwgbWVuIGNvdW50ZWQgSm9obiwgdGhhdCBoZSB3YXMgYSBwcm9waGV0IGluZGVlZC4KQW5kIHRoZXkgYW5zd2VyZWQgYW5kIHNhaWQgdW50byBKZXN1cywgV2UgY2Fubm90IHRlbGwuIEFuZCBKZXN1cyBhbnN3ZXJpbmcgc2FpdGggdW50byB0aGVtLCBOZWl0aGVyIGRvIEkgdGVsbCB5b3UgYnkgd2hhdCBhdXRob3JpdHkgSSBkbyB0aGVzZSB0aGluZ3MuCkFuZCBoZSBiZWdhbiB0byBzcGVhayB1bnRvIHRoZW0gYnkgcGFyYWJsZXMuIEEgY2VydGFpbiBtYW4gcGxhbnRlZCBhIHZpbmV5YXJkLCBhbmQgc2V0IGFuIGhlZGdlIGFib3V0IGl0LCBhbmQgZGlnZ2VkIGEgcGxhY2UgZm9yIHRoZSB3aW5lZmF0LCBhbmQgYnVpbHQgYSB0b3dlciwgYW5kIGxldCBpdCBvdXQgdG8gaHVzYmFuZG1lbiwgYW5kIHdlbnQgaW50byBhIGZhciBjb3VudHJ5LgpBbmQgYXQgdGhlIHNlYXNvbiBoZSBzZW50IHRvIHRoZSBodXNiYW5kbWVuIGEgc2VydmFudCwgdGhhdCBoZSBtaWdodCByZWNlaXZlIGZyb20gdGhlIGh1c2JhbmRtZW4gb2YgdGhlIGZydWl0IG9mIHRoZSB2aW5leWFyZC4KQW5kIHRoZXkgY2F1Z2h0IGhpbSwgYW5kIGJlYXQgaGltLCBhbmQgc2VudCBoaW0gYXdheSBlbXB0eS4KQW5kIGFnYWluIGhlIHNlbnQgdW50byB0aGVtIGFub3RoZXIgc2VydmFudDsgYW5kIGF0IGhpbSB0aGV5IGNhc3Qgc3RvbmVzLCBhbmQgd291bmRlZCBoaW0gaW4gdGhlIGhlYWQsIGFuZCBzZW50IGhpbSBhd2F5IHNoYW1lZnVsbHkgaGFuZGxlZC4KQW5kIGFnYWluIGhlIHNlbnQgYW5vdGhlcjsgYW5kIGhpbSB0aGV5IGtpbGxlZCwgYW5kIG1hbnkgb3RoZXJzOyBiZWF0aW5nIHNvbWUsIGFuZCBraWxsaW5nIHNvbWUuCkhhdmluZyB5ZXQgdGhlcmVmb3JlIG9uZSBzb24sIGhpcyB3ZWxsYmVsb3ZlZCwgaGUgc2VudCBoaW0gYWxzbyBsYXN0IHVudG8gdGhlbSwgc2F5aW5nLCBUaGV5IHdpbGwgcmV2ZXJlbmNlIG15IHNvbi4KQnV0IHRob3NlIGh1c2JhbmRtZW4gc2FpZCBhbW9uZyB0aGVtc2VsdmVzLCBUaGlzIGlzIHRoZSBoZWlyOyBjb21lLCBsZXQgdXMga2lsbCBoaW0sIGFuZCB0aGUgaW5oZXJpdGFuY2Ugc2hhbGwgYmUgb3VyJ3MuCkFuZCB0aGV5IHRvb2sgaGltLCBhbmQga2lsbGVkIGhpbSwgYW5kIGNhc3QgaGltIG91dCBvZiB0aGUgdmluZXlhcmQuCldoYXQgc2hhbGwgdGhlcmVmb3JlIHRoZSBsb3JkIG9mIHRoZSB2aW5leWFyZCBkbz8gaGUgd2lsbCBjb21lIGFuZCBkZXN0cm95IHRoZSBodXNiYW5kbWVuLCBhbmQgd2lsbCBnaXZlIHRoZSB2aW5leWFyZCB1bnRvIG90aGVycy4KQW5kIGhhdmUgeWUgbm90IHJlYWQgdGhpcyBzY3JpcHR1cmU7IFRoZSBzdG9uZSB3aGljaCB0aGUgYnVpbGRlcnMgcmVqZWN0ZWQgaXMgYmVjb21lIHRoZSBoZWFkIG9mIHRoZSBjb3JuZXI6ClRoaXMgd2FzIHRoZSBMb3JkJ3MgZG9pbmcsIGFuZCBpdCBpcyBtYXJ2ZWxsb3VzIGluIG91ciBleWVzPwpBbmQgdGhleSBzb3VnaHQgdG8gbGF5IGhvbGQgb24gaGltLCBidXQgZmVhcmVkIHRoZSBwZW9wbGU6IGZvciB0aGV5IGtuZXcgdGhhdCBoZSBoYWQgc3Bva2VuIHRoZSBwYXJhYmxlIGFnYWluc3QgdGhlbTogYW5kIHRoZXkgbGVmdCBoaW0sIGFuZCB3ZW50IHRoZWlyIHdheS4KQW5kIHRoZXkgc2VuZCB1bnRvIGhpbSBjZXJ0YWluIG9mIHRoZSBQaGFyaXNlZXMgYW5kIG9mIHRoZSBIZXJvZGlhbnMsIHRvIGNhdGNoIGhpbSBpbiBoaXMgd29yZHMuCkFuZCB3aGVuIHRoZXkgd2VyZSBjb21lLCB0aGV5IHNheSB1bnRvIGhpbSwgTWFzdGVyLCB3ZSBrbm93IHRoYXQgdGhvdSBhcnQgdHJ1ZSwgYW5kIGNhcmVzdCBmb3Igbm8gbWFuOiBmb3IgdGhvdSByZWdhcmRlc3Qgbm90IHRoZSBwZXJzb24gb2YgbWVuLCBidXQgdGVhY2hlc3QgdGhlIHdheSBvZiBHb2QgaW4gdHJ1dGg6IElzIGl0IGxhd2Z1bCB0byBnaXZlIHRyaWJ1dGUgdG8gQ2Flc2FyLCBvciBub3Q/ClNoYWxsIHdlIGdpdmUsIG9yIHNoYWxsIHdlIG5vdCBnaXZlPyBCdXQgaGUsIGtub3dpbmcgdGhlaXIgaHlwb2NyaXN5LCBzYWlkIHVudG8gdGhlbSwgV2h5IHRlbXB0IHllIG1lPyBicmluZyBtZSBhIHBlbm55LCB0aGF0IEkgbWF5IHNlZSBpdC4KQW5kIHRoZXkgYnJvdWdodCBpdC4gQW5kIGhlIHNhaXRoIHVudG8gdGhlbSwgV2hvc2UgaXMgdGhpcyBpbWFnZSBhbmQgc3VwZXJzY3JpcHRpb24/IEFuZCB0aGV5IHNhaWQgdW50byBoaW0sIENhZXNhcidzLgpBbmQgSmVzdXMgYW5zd2VyaW5nIHNhaWQgdW50byB0aGVtLCBSZW5kZXIgdG8gQ2Flc2FyIHRoZSB0aGluZ3MgdGhhdCBhcmUgQ2Flc2FyJ3MsIGFuZCB0byBHb2QgdGhlIHRoaW5ncyB0aGF0IGFyZSBHb2Qncy4gQW5kIHRoZXkgbWFydmVsbGVkIGF0IGhpbS4KVGhlbiBjb21lIHVudG8gaGltIHRoZSBTYWRkdWNlZXMsIHdoaWNoIHNheSB0aGVyZSBpcyBubyByZXN1cnJlY3Rpb247IGFuZCB0aGV5IGFza2VkIGhpbSwgc2F5aW5nLApNYXN0ZXIsIE1vc2VzIHdyb3RlIHVudG8gdXMsIElmIGEgbWFuJ3MgYnJvdGhlciBkaWUsIGFuZCBsZWF2ZSBoaXMgd2lmZSBiZWhpbmQgaGltLCBhbmQgbGVhdmUgbm8gY2hpbGRyZW4sIHRoYXQgaGlzIGJyb3RoZXIgc2hvdWxkIHRha2UgaGlzIHdpZmUsIGFuZCByYWlzZSB1cCBzZWVkIHVudG8gaGlzIGJyb3RoZXIuCk5vdyB0aGVyZSB3ZXJlIHNldmVuIGJyZXRocmVuOiBhbmQgdGhlIGZpcnN0IHRvb2sgYSB3aWZlLCBhbmQgZHlpbmcgbGVmdCBubyBzZWVkLgpBbmQgdGhlIHNlY29uZCB0b29rIGhlciwgYW5kIGRpZWQsIG5laXRoZXIgbGVmdCBoZSBhbnkgc2VlZDogYW5kIHRoZSB0aGlyZCBsaWtld2lzZS4KQW5kIHRoZSBzZXZlbiBoYWQgaGVyLCBhbmQgbGVmdCBubyBzZWVkOiBsYXN0IG9mIGFsbCB0aGUgd29tYW4gZGllZCBhbHNvLgpJbiB0aGUgcmVzdXJyZWN0aW9uIHRoZXJlZm9yZSwgd2hlbiB0aGV5IHNoYWxsIHJpc2UsIHdob3NlIHdpZmUgc2hhbGwgc2hlIGJlIG9mIHRoZW0/IGZvciB0aGUgc2V2ZW4gaGFkIGhlciB0byB3aWZlLgpBbmQgSmVzdXMgYW5zd2VyaW5nIHNhaWQgdW50byB0aGVtLCBEbyB5ZSBub3QgdGhlcmVmb3JlIGVyciwgYmVjYXVzZSB5ZSBrbm93IG5vdCB0aGUgc2NyaXB0dXJlcywgbmVpdGhlciB0aGUgcG93ZXIgb2YgR29kPwpGb3Igd2hlbiB0aGV5IHNoYWxsIHJpc2UgZnJvbSB0aGUgZGVhZCwgdGhleSBuZWl0aGVyIG1hcnJ5LCBub3IgYXJlIGdpdmVuIGluIG1hcnJpYWdlOyBidXQgYXJlIGFzIHRoZSBhbmdlbHMgd2hpY2ggYXJlIGluIGhlYXZlbi4KQW5kIGFzIHRvdWNoaW5nIHRoZSBkZWFkLCB0aGF0IHRoZXkgcmlzZTogaGF2ZSB5ZSBub3QgcmVhZCBpbiB0aGUgYm9vayBvZiBNb3NlcywgaG93IGluIHRoZSBidXNoIEdvZCBzcGFrZSB1bnRvIGhpbSwgc2F5aW5nLCBJIGFtIHRoZSBHb2Qgb2YgQWJyYWhhbSwgYW5kIHRoZSBHb2Qgb2YgSXNhYWMsIGFuZCB0aGUgR29kIG9mIEphY29iPwpIZSBpcyBub3QgdGhlIEdvZCBvZiB0aGUgZGVhZCwgYnV0IHRoZSBHb2Qgb2YgdGhlIGxpdmluZzogeWUgdGhlcmVmb3JlIGRvIGdyZWF0bHkgZXJyLgpBbmQgb25lIG9mIHRoZSBzY3JpYmVzIGNhbWUsIGFuZCBoYXZpbmcgaGVhcmQgdGhlbSByZWFzb25pbmcgdG9nZXRoZXIsIGFuZCBwZXJjZWl2aW5nIHRoYXQgaGUgaGFkIGFuc3dlcmVkIHRoZW0gd2VsbCwgYXNrZWQgaGltLCBXaGljaCBpcyB0aGUgZmlyc3QgY29tbWFuZG1lbnQgb2YgYWxsPwpBbmQgSmVzdXMgYW5zd2VyZWQgaGltLCBUaGUgZmlyc3Qgb2YgYWxsIHRoZSBjb21tYW5kbWVudHMgaXMsIEhlYXIsIE8gSXNyYWVsOyBUaGUgTG9yZCBvdXIgR29kIGlzIG9uZSBMb3JkOgpBbmQgdGhvdSBzaGFsdCBsb3ZlIHRoZSBMb3JkIHRoeSBHb2Qgd2l0aCBhbGwgdGh5IGhlYXJ0LCBhbmQgd2l0aCBhbGwgdGh5IHNvdWwsIGFuZCB3aXRoIGFsbCB0aHkgbWluZCwgYW5kIHdpdGggYWxsIHRoeSBzdHJlbmd0aDogdGhpcyBpcyB0aGUgZmlyc3QgY29tbWFuZG1lbnQuCkFuZCB0aGUgc2Vjb25kIGlzIGxpa2UsIG5hbWVseSB0aGlzLCBUaG91IHNoYWx0IGxvdmUgdGh5IG5laWdoYm91ciBhcyB0aHlzZWxmLiBUaGVyZSBpcyBub25lIG90aGVyIGNvbW1hbmRtZW50IGdyZWF0ZXIgdGhhbiB0aGVzZS4KQW5kIHRoZSBzY3JpYmUgc2FpZCB1bnRvIGhpbSwgV2VsbCwgTWFzdGVyLCB0aG91IGhhc3Qgc2FpZCB0aGUgdHJ1dGg6IGZvciB0aGVyZSBpcyBvbmUgR29kOyBhbmQgdGhlcmUgaXMgbm9uZSBvdGhlciBidXQgaGU6CkFuZCB0byBsb3ZlIGhpbSB3aXRoIGFsbCB0aGUgaGVhcnQsIGFuZCB3aXRoIGFsbCB0aGUgdW5kZXJzdGFuZGluZywgYW5kIHdpdGggYWxsIHRoZSBzb3VsLCBhbmQgd2l0aCBhbGwgdGhlIHN0cmVuZ3RoLCBhbmQgdG8gbG92ZSBoaXMgbmVpZ2hib3VyIGFzIGhpbXNlbGYsIGlzIG1vcmUgdGhhbiBhbGwgd2hvbGUgYnVybnQgb2ZmZXJpbmdzIGFuZCBzYWNyaWZpY2VzLgpBbmQgd2hlbiBKZXN1cyBzYXcgdGhhdCBoZSBhbnN3ZXJlZCBkaXNjcmVldGx5LCBoZSBzYWlkIHVudG8gaGltLCBUaG91IGFydCBub3QgZmFyIGZyb20gdGhlIGtpbmdkb20gb2YgR29kLiBBbmQgbm8gbWFuIGFmdGVyIHRoYXQgZHVyc3QgYXNrIGhpbSBhbnkgcXVlc3Rpb24uCkFuZCBKZXN1cyBhbnN3ZXJlZCBhbmQgc2FpZCwgd2hpbGUgaGUgdGF1Z2h0IGluIHRoZSB0ZW1wbGUsIEhvdyBzYXkgdGhlIHNjcmliZXMgdGhhdCBDaHJpc3QgaXMgdGhlIHNvbiBvZiBEYXZpZD8KRm9yIERhdmlkIGhpbXNlbGYgc2FpZCBieSB0aGUgSG9seSBHaG9zdCwgVGhlIExPUkQgc2FpZCB0byBteSBMb3JkLCBTaXQgdGhvdSBvbiBteSByaWdodCBoYW5kLCB0aWxsIEkgbWFrZSB0aGluZSBlbmVtaWVzIHRoeSBmb290c3Rvb2wuCkRhdmlkIHRoZXJlZm9yZSBoaW1zZWxmIGNhbGxldGggaGltIExvcmQ7IGFuZCB3aGVuY2UgaXMgaGUgdGhlbiBoaXMgc29uPyBBbmQgdGhlIGNvbW1vbiBwZW9wbGUgaGVhcmQgaGltIGdsYWRseS4KQW5kIGhlIHNhaWQgdW50byB0aGVtIGluIGhpcyBkb2N0cmluZSwgQmV3YXJlIG9mIHRoZSBzY3JpYmVzLCB3aGljaCBsb3ZlIHRvIGdvIGluIGxvbmcgY2xvdGhpbmcsIGFuZCBsb3ZlIHNhbHV0YXRpb25zIGluIHRoZSBtYXJrZXRwbGFjZXMsCkFuZCB0aGUgY2hpZWYgc2VhdHMgaW4gdGhlIHN5bmFnb2d1ZXMsIGFuZCB0aGUgdXBwZXJtb3N0IHJvb21zIGF0IGZlYXN0czoKV2hpY2ggZGV2b3VyIHdpZG93cycgaG91c2VzLCBhbmQgZm9yIGEgcHJldGVuY2UgbWFrZSBsb25nIHByYXllcnM6IHRoZXNlIHNoYWxsIHJlY2VpdmUgZ3JlYXRlciBkYW1uYXRpb24uCkFuZCBKZXN1cyBzYXQgb3ZlciBhZ2FpbnN0IHRoZSB0cmVhc3VyeSwgYW5kIGJlaGVsZCBob3cgdGhlIHBlb3BsZSBjYXN0IG1vbmV5IGludG8gdGhlIHRyZWFzdXJ5OiBhbmQgbWFueSB0aGF0IHdlcmUgcmljaCBjYXN0IGluIG11Y2guCkFuZCB0aGVyZSBjYW1lIGEgY2VydGFpbiBwb29yIHdpZG93LCBhbmQgc2hlIHRocmV3IGluIHR3byBtaXRlcywgd2hpY2ggbWFrZSBhIGZhcnRoaW5nLgpBbmQgaGUgY2FsbGVkIHVudG8gaGltIGhpcyBkaXNjaXBsZXMsIGFuZCBzYWl0aCB1bnRvIHRoZW0sIFZlcmlseSBJIHNheSB1bnRvIHlvdSwgVGhhdCB0aGlzIHBvb3Igd2lkb3cgaGF0aCBjYXN0IG1vcmUgaW4sIHRoYW4gYWxsIHRoZXkgd2hpY2ggaGF2ZSBjYXN0IGludG8gdGhlIHRyZWFzdXJ5OgpGb3IgYWxsIHRoZXkgZGlkIGNhc3QgaW4gb2YgdGhlaXIgYWJ1bmRhbmNlOyBidXQgc2hlIG9mIGhlciB3YW50IGRpZCBjYXN0IGluIGFsbCB0aGF0IHNoZSBoYWQsIGV2ZW4gYWxsIGhlciBsaXZpbmcuCkFuZCBhcyBoZSB3ZW50IG91dCBvZiB0aGUgdGVtcGxlLCBvbmUgb2YgaGlzIGRpc2NpcGxlcyBzYWl0aCB1bnRvIGhpbSwgTWFzdGVyLCBzZWUgd2hhdCBtYW5uZXIgb2Ygc3RvbmVzIGFuZCB3aGF0IGJ1aWxkaW5ncyBhcmUgaGVyZSEKQW5kIEplc3VzIGFuc3dlcmluZyBzYWlkIHVudG8gaGltLCBTZWVzdCB0aG91IHRoZXNlIGdyZWF0IGJ1aWxkaW5ncz8gdGhlcmUgc2hhbGwgbm90IGJlIGxlZnQgb25lIHN0b25lIHVwb24gYW5vdGhlciwgdGhhdCBzaGFsbCBub3QgYmUgdGhyb3duIGRvd24uCkFuZCBhcyBoZSBzYXQgdXBvbiB0aGUgbW91bnQgb2YgT2xpdmVzIG92ZXIgYWdhaW5zdCB0aGUgdGVtcGxlLCBQZXRlciBhbmQgSmFtZXMgYW5kIEpvaG4gYW5kIEFuZHJldyBhc2tlZCBoaW0gcHJpdmF0ZWx5LApUZWxsIHVzLCB3aGVuIHNoYWxsIHRoZXNlIHRoaW5ncyBiZT8gYW5kIHdoYXQgc2hhbGwgYmUgdGhlIHNpZ24gd2hlbiBhbGwgdGhlc2UgdGhpbmdzIHNoYWxsIGJlIGZ1bGZpbGxlZD8KQW5kIEplc3VzIGFuc3dlcmluZyB0aGVtIGJlZ2FuIHRvIHNheSwgVGFrZSBoZWVkIGxlc3QgYW55IG1hbiBkZWNlaXZlIHlvdToKRm9yIG1hbnkgc2hhbGwgY29tZSBpbiBteSBuYW1lLCBzYXlpbmcsIEkgYW0gQ2hyaXN0OyBhbmQgc2hhbGwgZGVjZWl2ZSBtYW55LgpBbmQgd2hlbiB5ZSBzaGFsbCBoZWFyIG9mIHdhcnMgYW5kIHJ1bW91cnMgb2Ygd2FycywgYmUgeWUgbm90IHRyb3VibGVkOiBmb3Igc3VjaCB0aGluZ3MgbXVzdCBuZWVkcyBiZTsgYnV0IHRoZSBlbmQgc2hhbGwgbm90IGJlIHlldC4KRm9yIG5hdGlvbiBzaGFsbCByaXNlIGFnYWluc3QgbmF0aW9uLCBhbmQga2luZ2RvbSBhZ2FpbnN0IGtpbmdkb206IGFuZCB0aGVyZSBzaGFsbCBiZSBlYXJ0aHF1YWtlcyBpbiBkaXZlcnMgcGxhY2VzLCBhbmQgdGhlcmUgc2hhbGwgYmUgZmFtaW5lcyBhbmQgdHJvdWJsZXM6IHRoZXNlIGFyZSB0aGUgYmVnaW5uaW5ncyBvZiBzb3Jyb3dzLgpCdXQgdGFrZSBoZWVkIHRvIHlvdXJzZWx2ZXM6IGZvciB0aGV5IHNoYWxsIGRlbGl2ZXIgeW91IHVwIHRvIGNvdW5jaWxzOyBhbmQgaW4gdGhlIHN5bmFnb2d1ZXMgeWUgc2hhbGwgYmUgYmVhdGVuOiBhbmQgeWUgc2hhbGwgYmUgYnJvdWdodCBiZWZvcmUgcnVsZXJzIGFuZCBraW5ncyBmb3IgbXkgc2FrZSwgZm9yIGEgdGVzdGltb255IGFnYWluc3QgdGhlbS4KQW5kIHRoZSBnb3NwZWwgbXVzdCBmaXJzdCBiZSBwdWJsaXNoZWQgYW1vbmcgYWxsIG5hdGlvbnMuCkJ1dCB3aGVuIHRoZXkgc2hhbGwgbGVhZCB5b3UsIGFuZCBkZWxpdmVyIHlvdSB1cCwgdGFrZSBubyB0aG91Z2h0IGJlZm9yZWhhbmQgd2hhdCB5ZSBzaGFsbCBzcGVhaywgbmVpdGhlciBkbyB5ZSBwcmVtZWRpdGF0ZTogYnV0IHdoYXRzb2V2ZXIgc2hhbGwgYmUgZ2l2ZW4geW91IGluIHRoYXQgaG91ciwgdGhhdCBzcGVhayB5ZTogZm9yIGl0IGlzIG5vdCB5ZSB0aGF0IHNwZWFrLCBidXQgdGhlIEhvbHkgR2hvc3QuCk5vdyB0aGUgYnJvdGhlciBzaGFsbCBiZXRyYXkgdGhlIGJyb3RoZXIgdG8gZGVhdGgsIGFuZCB0aGUgZmF0aGVyIHRoZSBzb247IGFuZCBjaGlsZHJlbiBzaGFsbCByaXNlIHVwIGFnYWluc3QgdGhlaXIgcGFyZW50cywgYW5kIHNoYWxsIGNhdXNlIHRoZW0gdG8gYmUgcHV0IHRvIGRlYXRoLgpBbmQgeWUgc2hhbGwgYmUgaGF0ZWQgb2YgYWxsIG1lbiBmb3IgbXkgbmFtZSdzIHNha2U6IGJ1dCBoZSB0aGF0IHNoYWxsIGVuZHVyZSB1bnRvIHRoZSBlbmQsIHRoZSBzYW1lIHNoYWxsIGJlIHNhdmVkLgpCdXQgd2hlbiB5ZSBzaGFsbCBzZWUgdGhlIGFib21pbmF0aW9uIG9mIGRlc29sYXRpb24sIHNwb2tlbiBvZiBieSBEYW5pZWwgdGhlIHByb3BoZXQsIHN0YW5kaW5nIHdoZXJlIGl0IG91Z2h0IG5vdCwgKGxldCBoaW0gdGhhdCByZWFkZXRoIHVuZGVyc3RhbmQsKSB0aGVuIGxldCB0aGVtIHRoYXQgYmUgaW4gSnVkYWVhIGZsZWUgdG8gdGhlIG1vdW50YWluczoKQW5kIGxldCBoaW0gdGhhdCBpcyBvbiB0aGUgaG91c2V0b3Agbm90IGdvIGRvd24gaW50byB0aGUgaG91c2UsIG5laXRoZXIgZW50ZXIgdGhlcmVpbiwgdG8gdGFrZSBhbnkgdGhpbmcgb3V0IG9mIGhpcyBob3VzZToKQW5kIGxldCBoaW0gdGhhdCBpcyBpbiB0aGUgZmllbGQgbm90IHR1cm4gYmFjayBhZ2FpbiBmb3IgdG8gdGFrZSB1cCBoaXMgZ2FybWVudC4KQnV0IHdvZSB0byB0aGVtIHRoYXQgYXJlIHdpdGggY2hpbGQsIGFuZCB0byB0aGVtIHRoYXQgZ2l2ZSBzdWNrIGluIHRob3NlIGRheXMhCkFuZCBwcmF5IHllIHRoYXQgeW91ciBmbGlnaHQgYmUgbm90IGluIHRoZSB3aW50ZXIuCkZvciBpbiB0aG9zZSBkYXlzIHNoYWxsIGJlIGFmZmxpY3Rpb24sIHN1Y2ggYXMgd2FzIG5vdCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGNyZWF0aW9uIHdoaWNoIEdvZCBjcmVhdGVkIHVudG8gdGhpcyB0aW1lLCBuZWl0aGVyIHNoYWxsIGJlLgpBbmQgZXhjZXB0IHRoYXQgdGhlIExvcmQgaGFkIHNob3J0ZW5lZCB0aG9zZSBkYXlzLCBubyBmbGVzaCBzaG91bGQgYmUgc2F2ZWQ6IGJ1dCBmb3IgdGhlIGVsZWN0J3Mgc2FrZSwgd2hvbSBoZSBoYXRoIGNob3NlbiwgaGUgaGF0aCBzaG9ydGVuZWQgdGhlIGRheXMuCkFuZCB0aGVuIGlmIGFueSBtYW4gc2hhbGwgc2F5IHRvIHlvdSwgTG8sIGhlcmUgaXMgQ2hyaXN0OyBvciwgbG8sIGhlIGlzIHRoZXJlOyBiZWxpZXZlIGhpbSBub3Q6CkZvciBmYWxzZSBDaHJpc3RzIGFuZCBmYWxzZSBwcm9waGV0cyBzaGFsbCByaXNlLCBhbmQgc2hhbGwgc2hldyBzaWducyBhbmQgd29uZGVycywgdG8gc2VkdWNlLCBpZiBpdCB3ZXJlIHBvc3NpYmxlLCBldmVuIHRoZSBlbGVjdC4KQnV0IHRha2UgeWUgaGVlZDogYmVob2xkLCBJIGhhdmUgZm9yZXRvbGQgeW91IGFsbCB0aGluZ3MuCkJ1dCBpbiB0aG9zZSBkYXlzLCBhZnRlciB0aGF0IHRyaWJ1bGF0aW9uLCB0aGUgc3VuIHNoYWxsIGJlIGRhcmtlbmVkLCBhbmQgdGhlIG1vb24gc2hhbGwgbm90IGdpdmUgaGVyIGxpZ2h0LApBbmQgdGhlIHN0YXJzIG9mIGhlYXZlbiBzaGFsbCBmYWxsLCBhbmQgdGhlIHBvd2VycyB0aGF0IGFyZSBpbiBoZWF2ZW4gc2hhbGwgYmUgc2hha2VuLgpBbmQgdGhlbiBzaGFsbCB0aGV5IHNlZSB0aGUgU29uIG9mIG1hbiBjb21pbmcgaW4gdGhlIGNsb3VkcyB3aXRoIGdyZWF0IHBvd2VyIGFuZCBnbG9yeS4KQW5kIHRoZW4gc2hhbGwgaGUgc2VuZCBoaXMgYW5nZWxzLCBhbmQgc2hhbGwgZ2F0aGVyIHRvZ2V0aGVyIGhpcyBlbGVjdCBmcm9tIHRoZSBmb3VyIHdpbmRzLCBmcm9tIHRoZSB1dHRlcm1vc3QgcGFydCBvZiB0aGUgZWFydGggdG8gdGhlIHV0dGVybW9zdCBwYXJ0IG9mIGhlYXZlbi4KTm93IGxlYXJuIGEgcGFyYWJsZSBvZiB0aGUgZmlnIHRyZWU7IFdoZW4gaGVyIGJyYW5jaCBpcyB5ZXQgdGVuZGVyLCBhbmQgcHV0dGV0aCBmb3J0aCBsZWF2ZXMsIHllIGtub3cgdGhhdCBzdW1tZXIgaXMgbmVhcjoKU28geWUgaW4gbGlrZSBtYW5uZXIsIHdoZW4geWUgc2hhbGwgc2VlIHRoZXNlIHRoaW5ncyBjb21lIHRvIHBhc3MsIGtub3cgdGhhdCBpdCBpcyBuaWdoLCBldmVuIGF0IHRoZSBkb29ycy4KVmVyaWx5IEkgc2F5IHVudG8geW91LCB0aGF0IHRoaXMgZ2VuZXJhdGlvbiBzaGFsbCBub3QgcGFzcywgdGlsbCBhbGwgdGhlc2UgdGhpbmdzIGJlIGRvbmUuCkhlYXZlbiBhbmQgZWFydGggc2hhbGwgcGFzcyBhd2F5OiBidXQgbXkgd29yZHMgc2hhbGwgbm90IHBhc3MgYXdheS4KQnV0IG9mIHRoYXQgZGF5IGFuZCB0aGF0IGhvdXIga25vd2V0aCBubyBtYW4sIG5vLCBub3QgdGhlIGFuZ2VscyB3aGljaCBhcmUgaW4gaGVhdmVuLCBuZWl0aGVyIHRoZSBTb24sIGJ1dCB0aGUgRmF0aGVyLgpUYWtlIHllIGhlZWQsIHdhdGNoIGFuZCBwcmF5OiBmb3IgeWUga25vdyBub3Qgd2hlbiB0aGUgdGltZSBpcy4KRm9yIHRoZSBTb24gb2YgTWFuIGlzIGFzIGEgbWFuIHRha2luZyBhIGZhciBqb3VybmV5LCB3aG8gbGVmdCBoaXMgaG91c2UsIGFuZCBnYXZlIGF1dGhvcml0eSB0byBoaXMgc2VydmFudHMsIGFuZCB0byBldmVyeSBtYW4gaGlzIHdvcmssIGFuZCBjb21tYW5kZWQgdGhlIHBvcnRlciB0byB3YXRjaC4KV2F0Y2ggeWUgdGhlcmVmb3JlOiBmb3IgeWUga25vdyBub3Qgd2hlbiB0aGUgbWFzdGVyIG9mIHRoZSBob3VzZSBjb21ldGgsIGF0IGV2ZW4sIG9yIGF0IG1pZG5pZ2h0LCBvciBhdCB0aGUgY29ja2Nyb3dpbmcsIG9yIGluIHRoZSBtb3JuaW5nOgpMZXN0IGNvbWluZyBzdWRkZW5seSBoZSBmaW5kIHlvdSBzbGVlcGluZy4KQW5kIHdoYXQgSSBzYXkgdW50byB5b3UgSSBzYXkgdW50byBhbGwsIFdhdGNoLgpBZnRlciB0d28gZGF5cyB3YXMgdGhlIGZlYXN0IG9mIHRoZSBwYXNzb3ZlciwgYW5kIG9mIHVubGVhdmVuZWQgYnJlYWQ6IGFuZCB0aGUgY2hpZWYgcHJpZXN0cyBhbmQgdGhlIHNjcmliZXMgc291Z2h0IGhvdyB0aGV5IG1pZ2h0IHRha2UgaGltIGJ5IGNyYWZ0LCBhbmQgcHV0IGhpbSB0byBkZWF0aC4KQnV0IHRoZXkgc2FpZCwgTm90IG9uIHRoZSBmZWFzdCBkYXksIGxlc3QgdGhlcmUgYmUgYW4gdXByb2FyIG9mIHRoZSBwZW9wbGUuCkFuZCBiZWluZyBpbiBCZXRoYW55IGluIHRoZSBob3VzZSBvZiBTaW1vbiB0aGUgbGVwZXIsIGFzIGhlIHNhdCBhdCBtZWF0LCB0aGVyZSBjYW1lIGEgd29tYW4gaGF2aW5nIGFuIGFsYWJhc3RlciBib3ggb2Ygb2ludG1lbnQgb2Ygc3Bpa2VuYXJkIHZlcnkgcHJlY2lvdXM7IGFuZCBzaGUgYnJha2UgdGhlIGJveCwgYW5kIHBvdXJlZCBpdCBvbiBoaXMgaGVhZC4KQW5kIHRoZXJlIHdlcmUgc29tZSB0aGF0IGhhZCBpbmRpZ25hdGlvbiB3aXRoaW4gdGhlbXNlbHZlcywgYW5kIHNhaWQsIFdoeSB3YXMgdGhpcyB3YXN0ZSBvZiB0aGUgb2ludG1lbnQgbWFkZT8KRm9yIGl0IG1pZ2h0IGhhdmUgYmVlbiBzb2xkIGZvciBtb3JlIHRoYW4gdGhyZWUgaHVuZHJlZCBwZW5jZSwgYW5kIGhhdmUgYmVlbiBnaXZlbiB0byB0aGUgcG9vci4gQW5kIHRoZXkgbXVybXVyZWQgYWdhaW5zdCBoZXIuCkFuZCBKZXN1cyBzYWlkLCBMZXQgaGVyIGFsb25lOyB3aHkgdHJvdWJsZSB5ZSBoZXI/IHNoZSBoYXRoIHdyb3VnaHQgYSBnb29kIHdvcmsgb24gbWUuCkZvciB5ZSBoYXZlIHRoZSBwb29yIHdpdGggeW91IGFsd2F5cywgYW5kIHdoZW5zb2V2ZXIgeWUgd2lsbCB5ZSBtYXkgZG8gdGhlbSBnb29kOiBidXQgbWUgeWUgaGF2ZSBub3QgYWx3YXlzLgpTaGUgaGF0aCBkb25lIHdoYXQgc2hlIGNvdWxkOiBzaGUgaXMgY29tZSBhZm9yZWhhbmQgdG8gYW5vaW50IG15IGJvZHkgdG8gdGhlIGJ1cnlpbmcuClZlcmlseSBJIHNheSB1bnRvIHlvdSwgV2hlcmVzb2V2ZXIgdGhpcyBnb3NwZWwgc2hhbGwgYmUgcHJlYWNoZWQgdGhyb3VnaG91dCB0aGUgd2hvbGUgd29ybGQsIHRoaXMgYWxzbyB0aGF0IHNoZSBoYXRoIGRvbmUgc2hhbGwgYmUgc3Bva2VuIG9mIGZvciBhIG1lbW9yaWFsIG9mIGhlci4KQW5kIEp1ZGFzIElzY2FyaW90LCBvbmUgb2YgdGhlIHR3ZWx2ZSwgd2VudCB1bnRvIHRoZSBjaGllZiBwcmllc3RzLCB0byBiZXRyYXkgaGltIHVudG8gdGhlbS4KQW5kIHdoZW4gdGhleSBoZWFyZCBpdCwgdGhleSB3ZXJlIGdsYWQsIGFuZCBwcm9taXNlZCB0byBnaXZlIGhpbSBtb25leS4gQW5kIGhlIHNvdWdodCBob3cgaGUgbWlnaHQgY29udmVuaWVudGx5IGJldHJheSBoaW0uCkFuZCB0aGUgZmlyc3QgZGF5IG9mIHVubGVhdmVuZWQgYnJlYWQsIHdoZW4gdGhleSBraWxsZWQgdGhlIHBhc3NvdmVyLCBoaXMgZGlzY2lwbGVzIHNhaWQgdW50byBoaW0sIFdoZXJlIHdpbHQgdGhvdSB0aGF0IHdlIGdvIGFuZCBwcmVwYXJlIHRoYXQgdGhvdSBtYXllc3QgZWF0IHRoZSBwYXNzb3Zlcj8KQW5kIGhlIHNlbmRldGggZm9ydGggdHdvIG9mIGhpcyBkaXNjaXBsZXMsIGFuZCBzYWl0aCB1bnRvIHRoZW0sIEdvIHllIGludG8gdGhlIGNpdHksIGFuZCB0aGVyZSBzaGFsbCBtZWV0IHlvdSBhIG1hbiBiZWFyaW5nIGEgcGl0Y2hlciBvZiB3YXRlcjogZm9sbG93IGhpbS4KQW5kIHdoZXJlc29ldmVyIGhlIHNoYWxsIGdvIGluLCBzYXkgeWUgdG8gdGhlIGdvb2RtYW4gb2YgdGhlIGhvdXNlLCBUaGUgTWFzdGVyIHNhaXRoLCBXaGVyZSBpcyB0aGUgZ3Vlc3RjaGFtYmVyLCB3aGVyZSBJIHNoYWxsIGVhdCB0aGUgcGFzc292ZXIgd2l0aCBteSBkaXNjaXBsZXM/CkFuZCBoZSB3aWxsIHNoZXcgeW91IGEgbGFyZ2UgdXBwZXIgcm9vbSBmdXJuaXNoZWQgYW5kIHByZXBhcmVkOiB0aGVyZSBtYWtlIHJlYWR5IGZvciB1cy4KQW5kIGhpcyBkaXNjaXBsZXMgd2VudCBmb3J0aCwgYW5kIGNhbWUgaW50byB0aGUgY2l0eSwgYW5kIGZvdW5kIGFzIGhlIGhhZCBzYWlkIHVudG8gdGhlbTogYW5kIHRoZXkgbWFkZSByZWFkeSB0aGUgcGFzc292ZXIuCkFuZCBpbiB0aGUgZXZlbmluZyBoZSBjb21ldGggd2l0aCB0aGUgdHdlbHZlLgpBbmQgYXMgdGhleSBzYXQgYW5kIGRpZCBlYXQsIEplc3VzIHNhaWQsIFZlcmlseSBJIHNheSB1bnRvIHlvdSwgT25lIG9mIHlvdSB3aGljaCBlYXRldGggd2l0aCBtZSBzaGFsbCBiZXRyYXkgbWUuCkFuZCB0aGV5IGJlZ2FuIHRvIGJlIHNvcnJvd2Z1bCwgYW5kIHRvIHNheSB1bnRvIGhpbSBvbmUgYnkgb25lLCBJcyBpdCBJPyBhbmQgYW5vdGhlciBzYWlkLCBJcyBpdCBJPwpBbmQgaGUgYW5zd2VyZWQgYW5kIHNhaWQgdW50byB0aGVtLCBJdCBpcyBvbmUgb2YgdGhlIHR3ZWx2ZSwgdGhhdCBkaXBwZXRoIHdpdGggbWUgaW4gdGhlIGRpc2guClRoZSBTb24gb2YgbWFuIGluZGVlZCBnb2V0aCwgYXMgaXQgaXMgd3JpdHRlbiBvZiBoaW06IGJ1dCB3b2UgdG8gdGhhdCBtYW4gYnkgd2hvbSB0aGUgU29uIG9mIG1hbiBpcyBiZXRyYXllZCEgZ29vZCB3ZXJlIGl0IGZvciB0aGF0IG1hbiBpZiBoZSBoYWQgbmV2ZXIgYmVlbiBib3JuLgpBbmQgYXMgdGhleSBkaWQgZWF0LCBKZXN1cyB0b29rIGJyZWFkLCBhbmQgYmxlc3NlZCwgYW5kIGJyYWtlIGl0LCBhbmQgZ2F2ZSB0byB0aGVtLCBhbmQgc2FpZCwgVGFrZSwgZWF0OiB0aGlzIGlzIG15IGJvZHkuCkFuZCBoZSB0b29rIHRoZSBjdXAsIGFuZCB3aGVuIGhlIGhhZCBnaXZlbiB0aGFua3MsIGhlIGdhdmUgaXQgdG8gdGhlbTogYW5kIHRoZXkgYWxsIGRyYW5rIG9mIGl0LgpBbmQgaGUgc2FpZCB1bnRvIHRoZW0sIFRoaXMgaXMgbXkgYmxvb2Qgb2YgdGhlIG5ldyB0ZXN0YW1lbnQsIHdoaWNoIGlzIHNoZWQgZm9yIG1hbnkuClZlcmlseSBJIHNheSB1bnRvIHlvdSwgSSB3aWxsIGRyaW5rIG5vIG1vcmUgb2YgdGhlIGZydWl0IG9mIHRoZSB2aW5lLCB1bnRpbCB0aGF0IGRheSB0aGF0IEkgZHJpbmsgaXQgbmV3IGluIHRoZSBraW5nZG9tIG9mIEdvZC4KQW5kIHdoZW4gdGhleSBoYWQgc3VuZyBhbiBoeW1uLCB0aGV5IHdlbnQgb3V0IGludG8gdGhlIG1vdW50IG9mIE9saXZlcy4KQW5kIEplc3VzIHNhaXRoIHVudG8gdGhlbSwgQWxsIHllIHNoYWxsIGJlIG9mZmVuZGVkIGJlY2F1c2Ugb2YgbWUgdGhpcyBuaWdodDogZm9yIGl0IGlzIHdyaXR0ZW4sIEkgd2lsbCBzbWl0ZSB0aGUgc2hlcGhlcmQsIGFuZCB0aGUgc2hlZXAgc2hhbGwgYmUgc2NhdHRlcmVkLgpCdXQgYWZ0ZXIgdGhhdCBJIGFtIHJpc2VuLCBJIHdpbGwgZ28gYmVmb3JlIHlvdSBpbnRvIEdhbGlsZWUuCkJ1dCBQZXRlciBzYWlkIHVudG8gaGltLCBBbHRob3VnaCBhbGwgc2hhbGwgYmUgb2ZmZW5kZWQsIHlldCB3aWxsIG5vdCBJLgpBbmQgSmVzdXMgc2FpdGggdW50byBoaW0sIFZlcmlseSBJIHNheSB1bnRvIHRoZWUsIFRoYXQgdGhpcyBkYXksIGV2ZW4gaW4gdGhpcyBuaWdodCwgYmVmb3JlIHRoZSBjb2NrIGNyb3cgdHdpY2UsIHRob3Ugc2hhbHQgZGVueSBtZSB0aHJpY2UuCkJ1dCBoZSBzcGFrZSB0aGUgbW9yZSB2ZWhlbWVudGx5LCBJZiBJIHNob3VsZCBkaWUgd2l0aCB0aGVlLCBJIHdpbGwgbm90IGRlbnkgdGhlZSBpbiBhbnkgd2lzZS4gTGlrZXdpc2UgYWxzbyBzYWlkIHRoZXkgYWxsLgpBbmQgdGhleSBjYW1lIHRvIGEgcGxhY2Ugd2hpY2ggd2FzIG5hbWVkIEdldGhzZW1hbmU6IGFuZCBoZSBzYWl0aCB0byBoaXMgZGlzY2lwbGVzLCBTaXQgeWUgaGVyZSwgd2hpbGUgSSBzaGFsbCBwcmF5LgpBbmQgaGUgdGFrZXRoIHdpdGggaGltIFBldGVyIGFuZCBKYW1lcyBhbmQgSm9obiwgYW5kIGJlZ2FuIHRvIGJlIHNvcmUgYW1hemVkLCBhbmQgdG8gYmUgdmVyeSBoZWF2eTsKQW5kIHNhaXRoIHVudG8gdGhlbSwgTXkgc291bCBpcyBleGNlZWRpbmcgc29ycm93ZnVsIHVudG8gZGVhdGg6IHRhcnJ5IHllIGhlcmUsIGFuZCB3YXRjaC4KQW5kIGhlIHdlbnQgZm9yd2FyZCBhIGxpdHRsZSwgYW5kIGZlbGwgb24gdGhlIGdyb3VuZCwgYW5kIHByYXllZCB0aGF0LCBpZiBpdCB3ZXJlIHBvc3NpYmxlLCB0aGUgaG91ciBtaWdodCBwYXNzIGZyb20gaGltLgpBbmQgaGUgc2FpZCwgQWJiYSwgRmF0aGVyLCBhbGwgdGhpbmdzIGFyZSBwb3NzaWJsZSB1bnRvIHRoZWU7IHRha2UgYXdheSB0aGlzIGN1cCBmcm9tIG1lOiBuZXZlcnRoZWxlc3Mgbm90IHdoYXQgSSB3aWxsLCBidXQgd2hhdCB0aG91IHdpbHQuCkFuZCBoZSBjb21ldGgsIGFuZCBmaW5kZXRoIHRoZW0gc2xlZXBpbmcsIGFuZCBzYWl0aCB1bnRvIFBldGVyLCBTaW1vbiwgc2xlZXBlc3QgdGhvdT8gY291bGRlc3Qgbm90IHRob3Ugd2F0Y2ggb25lIGhvdXI/CldhdGNoIHllIGFuZCBwcmF5LCBsZXN0IHllIGVudGVyIGludG8gdGVtcHRhdGlvbi4gVGhlIHNwaXJpdCB0cnVseSBpcyByZWFkeSwgYnV0IHRoZSBmbGVzaCBpcyB3ZWFrLgpBbmQgYWdhaW4gaGUgd2VudCBhd2F5LCBhbmQgcHJheWVkLCBhbmQgc3Bha2UgdGhlIHNhbWUgd29yZHMuCkFuZCB3aGVuIGhlIHJldHVybmVkLCBoZSBmb3VuZCB0aGVtIGFzbGVlcCBhZ2FpbiwgKGZvciB0aGVpciBleWVzIHdlcmUgaGVhdnksKSBuZWl0aGVyIHdpc3QgdGhleSB3aGF0IHRvIGFuc3dlciBoaW0uCkFuZCBoZSBjb21ldGggdGhlIHRoaXJkIHRpbWUsIGFuZCBzYWl0aCB1bnRvIHRoZW0sIFNsZWVwIG9uIG5vdywgYW5kIHRha2UgeW91ciByZXN0OiBpdCBpcyBlbm91Z2gsIHRoZSBob3VyIGlzIGNvbWU7IGJlaG9sZCwgdGhlIFNvbiBvZiBtYW4gaXMgYmV0cmF5ZWQgaW50byB0aGUgaGFuZHMgb2Ygc2lubmVycy4KUmlzZSB1cCwgbGV0IHVzIGdvOyBsbywgaGUgdGhhdCBiZXRyYXlldGggbWUgaXMgYXQgaGFuZC4KQW5kIGltbWVkaWF0ZWx5LCB3aGlsZSBoZSB5ZXQgc3Bha2UsIGNvbWV0aCBKdWRhcywgb25lIG9mIHRoZSB0d2VsdmUsIGFuZCB3aXRoIGhpbSBhIGdyZWF0IG11bHRpdHVkZSB3aXRoIHN3b3JkcyBhbmQgc3RhdmVzLCBmcm9tIHRoZSBjaGllZiBwcmllc3RzIGFuZCB0aGUgc2NyaWJlcyBhbmQgdGhlIGVsZGVycy4KQW5kIGhlIHRoYXQgYmV0cmF5ZWQgaGltIGhhZCBnaXZlbiB0aGVtIGEgdG9rZW4sIHNheWluZywgV2hvbXNvZXZlciBJIHNoYWxsIGtpc3MsIHRoYXQgc2FtZSBpcyBoZTsgdGFrZSBoaW0sIGFuZCBsZWFkIGhpbSBhd2F5IHNhZmVseS4KQW5kIGFzIHNvb24gYXMgaGUgd2FzIGNvbWUsIGhlIGdvZXRoIHN0cmFpZ2h0d2F5IHRvIGhpbSwgYW5kIHNhaXRoLCBNYXN0ZXIsIG1hc3RlcjsgYW5kIGtpc3NlZCBoaW0uCkFuZCB0aGV5IGxhaWQgdGhlaXIgaGFuZHMgb24gaGltLCBhbmQgdG9vayBoaW0uCkFuZCBvbmUgb2YgdGhlbSB0aGF0IHN0b29kIGJ5IGRyZXcgYSBzd29yZCwgYW5kIHNtb3RlIGEgc2VydmFudCBvZiB0aGUgaGlnaCBwcmllc3QsIGFuZCBjdXQgb2ZmIGhpcyBlYXIuCkFuZCBKZXN1cyBhbnN3ZXJlZCBhbmQgc2FpZCB1bnRvIHRoZW0sIEFyZSB5ZSBjb21lIG91dCwgYXMgYWdhaW5zdCBhIHRoaWVmLCB3aXRoIHN3b3JkcyBhbmQgd2l0aCBzdGF2ZXMgdG8gdGFrZSBtZT8KSSB3YXMgZGFpbHkgd2l0aCB5b3UgaW4gdGhlIHRlbXBsZSB0ZWFjaGluZywgYW5kIHllIHRvb2sgbWUgbm90OiBidXQgdGhlIHNjcmlwdHVyZXMgbXVzdCBiZSBmdWxmaWxsZWQuCkFuZCB0aGV5IGFsbCBmb3Jzb29rIGhpbSwgYW5kIGZsZWQuCkFuZCB0aGVyZSBmb2xsb3dlZCBoaW0gYSBjZXJ0YWluIHlvdW5nIG1hbiwgaGF2aW5nIGEgbGluZW4gY2xvdGggY2FzdCBhYm91dCBoaXMgbmFrZWQgYm9keTsgYW5kIHRoZSB5b3VuZyBtZW4gbGFpZCBob2xkIG9uIGhpbToKQW5kIGhlIGxlZnQgdGhlIGxpbmVuIGNsb3RoLCBhbmQgZmxlZCBmcm9tIHRoZW0gbmFrZWQuCkFuZCB0aGV5IGxlZCBKZXN1cyBhd2F5IHRvIHRoZSBoaWdoIHByaWVzdDogYW5kIHdpdGggaGltIHdlcmUgYXNzZW1ibGVkIGFsbCB0aGUgY2hpZWYgcHJpZXN0cyBhbmQgdGhlIGVsZGVycyBhbmQgdGhlIHNjcmliZXMuCkFuZCBQZXRlciBmb2xsb3dlZCBoaW0gYWZhciBvZmYsIGV2ZW4gaW50byB0aGUgcGFsYWNlIG9mIHRoZSBoaWdoIHByaWVzdDogYW5kIGhlIHNhdCB3aXRoIHRoZSBzZXJ2YW50cywgYW5kIHdhcm1lZCBoaW1zZWxmIGF0IHRoZSBmaXJlLgpBbmQgdGhlIGNoaWVmIHByaWVzdHMgYW5kIGFsbCB0aGUgY291bmNpbCBzb3VnaHQgZm9yIHdpdG5lc3MgYWdhaW5zdCBKZXN1cyB0byBwdXQgaGltIHRvIGRlYXRoOyBhbmQgZm91bmQgbm9uZS4KRm9yIG1hbnkgYmFyZSBmYWxzZSB3aXRuZXNzIGFnYWluc3QgaGltLCBidXQgdGhlaXIgd2l0bmVzcyBhZ3JlZWQgbm90IHRvZ2V0aGVyLgpBbmQgdGhlcmUgYXJvc2UgY2VydGFpbiwgYW5kIGJhcmUgZmFsc2Ugd2l0bmVzcyBhZ2FpbnN0IGhpbSwgc2F5aW5nLApXZSBoZWFyZCBoaW0gc2F5LCBJIHdpbGwgZGVzdHJveSB0aGlzIHRlbXBsZSB0aGF0IGlzIG1hZGUgd2l0aCBoYW5kcywgYW5kIHdpdGhpbiB0aHJlZSBkYXlzIEkgd2lsbCBidWlsZCBhbm90aGVyIG1hZGUgd2l0aG91dCBoYW5kcy4KQnV0IG5laXRoZXIgc28gZGlkIHRoZWlyIHdpdG5lc3MgYWdyZWUgdG9nZXRoZXIuCkFuZCB0aGUgaGlnaCBwcmllc3Qgc3Rvb2QgdXAgaW4gdGhlIG1pZHN0LCBhbmQgYXNrZWQgSmVzdXMsIHNheWluZywgQW5zd2VyZXN0IHRob3Ugbm90aGluZz8gd2hhdCBpcyBpdCB3aGljaCB0aGVzZSB3aXRuZXNzIGFnYWluc3QgdGhlZT8KQnV0IGhlIGhlbGQgaGlzIHBlYWNlLCBhbmQgYW5zd2VyZWQgbm90aGluZy4gQWdhaW4gdGhlIGhpZ2ggcHJpZXN0IGFza2VkIGhpbSwgYW5kIHNhaWQgdW50byBoaW0sIEFydCB0aG91IHRoZSBDaHJpc3QsIHRoZSBTb24gb2YgdGhlIEJsZXNzZWQ/CkFuZCBKZXN1cyBzYWlkLCBJIGFtOiBhbmQgeWUgc2hhbGwgc2VlIHRoZSBTb24gb2YgbWFuIHNpdHRpbmcgb24gdGhlIHJpZ2h0IGhhbmQgb2YgcG93ZXIsIGFuZCBjb21pbmcgaW4gdGhlIGNsb3VkcyBvZiBoZWF2ZW4uClRoZW4gdGhlIGhpZ2ggcHJpZXN0IHJlbnQgaGlzIGNsb3RoZXMsIGFuZCBzYWl0aCwgV2hhdCBuZWVkIHdlIGFueSBmdXJ0aGVyIHdpdG5lc3Nlcz8KWWUgaGF2ZSBoZWFyZCB0aGUgYmxhc3BoZW15OiB3aGF0IHRoaW5rIHllPyBBbmQgdGhleSBhbGwgY29uZGVtbmVkIGhpbSB0byBiZSBndWlsdHkgb2YgZGVhdGguCkFuZCBzb21lIGJlZ2FuIHRvIHNwaXQgb24gaGltLCBhbmQgdG8gY292ZXIgaGlzIGZhY2UsIGFuZCB0byBidWZmZXQgaGltLCBhbmQgdG8gc2F5IHVudG8gaGltLCBQcm9waGVzeTogYW5kIHRoZSBzZXJ2YW50cyBkaWQgc3RyaWtlIGhpbSB3aXRoIHRoZSBwYWxtcyBvZiB0aGVpciBoYW5kcy4KQW5kIGFzIFBldGVyIHdhcyBiZW5lYXRoIGluIHRoZSBwYWxhY2UsIHRoZXJlIGNvbWV0aCBvbmUgb2YgdGhlIG1haWRzIG9mIHRoZSBoaWdoIHByaWVzdDoKQW5kIHdoZW4gc2hlIHNhdyBQZXRlciB3YXJtaW5nIGhpbXNlbGYsIHNoZSBsb29rZWQgdXBvbiBoaW0sIGFuZCBzYWlkLCBBbmQgdGhvdSBhbHNvIHdhc3Qgd2l0aCBKZXN1cyBvZiBOYXphcmV0aC4KQnV0IGhlIGRlbmllZCwgc2F5aW5nLCBJIGtub3cgbm90LCBuZWl0aGVyIHVuZGVyc3RhbmQgSSB3aGF0IHRob3Ugc2F5ZXN0LiBBbmQgaGUgd2VudCBvdXQgaW50byB0aGUgcG9yY2g7IGFuZCB0aGUgY29jayBjcmV3LgpBbmQgYSBtYWlkIHNhdyBoaW0gYWdhaW4sIGFuZCBiZWdhbiB0byBzYXkgdG8gdGhlbSB0aGF0IHN0b29kIGJ5LCBUaGlzIGlzIG9uZSBvZiB0aGVtLgpBbmQgaGUgZGVuaWVkIGl0IGFnYWluLiBBbmQgYSBsaXR0bGUgYWZ0ZXIsIHRoZXkgdGhhdCBzdG9vZCBieSBzYWlkIGFnYWluIHRvIFBldGVyLCBTdXJlbHkgdGhvdSBhcnQgb25lIG9mIHRoZW06IGZvciB0aG91IGFydCBhIEdhbGlsYWVhbiwgYW5kIHRoeSBzcGVlY2ggYWdyZWV0aCB0aGVyZXRvLgpCdXQgaGUgYmVnYW4gdG8gY3Vyc2UgYW5kIHRvIHN3ZWFyLCBzYXlpbmcsIEkga25vdyBub3QgdGhpcyBtYW4gb2Ygd2hvbSB5ZSBzcGVhay4KQW5kIHRoZSBzZWNvbmQgdGltZSB0aGUgY29jayBjcmV3LiBBbmQgUGV0ZXIgY2FsbGVkIHRvIG1pbmQgdGhlIHdvcmQgdGhhdCBKZXN1cyBzYWlkIHVudG8gaGltLCBCZWZvcmUgdGhlIGNvY2sgY3JvdyB0d2ljZSwgdGhvdSBzaGFsdCBkZW55IG1lIHRocmljZS4gQW5kIHdoZW4gaGUgdGhvdWdodCB0aGVyZW9uLCBoZSB3ZXB0LgpBbmQgc3RyYWlnaHR3YXkgaW4gdGhlIG1vcm5pbmcgdGhlIGNoaWVmIHByaWVzdHMgaGVsZCBhIGNvbnN1bHRhdGlvbiB3aXRoIHRoZSBlbGRlcnMgYW5kIHNjcmliZXMgYW5kIHRoZSB3aG9sZSBjb3VuY2lsLCBhbmQgYm91bmQgSmVzdXMsIGFuZCBjYXJyaWVkIGhpbSBhd2F5LCBhbmQgZGVsaXZlcmVkIGhpbSB0byBQaWxhdGUuCkFuZCBQaWxhdGUgYXNrZWQgaGltLCBBcnQgdGhvdSB0aGUgS2luZyBvZiB0aGUgSmV3cz8gQW5kIGhlIGFuc3dlcmluZyBzYWlkIHVudG8gdGhlbSwgVGhvdSBzYXllc3QgaXQuCkFuZCB0aGUgY2hpZWYgcHJpZXN0cyBhY2N1c2VkIGhpbSBvZiBtYW55IHRoaW5nczogYnV0IGhlIGFuc3dlcmVkIG5vdGhpbmcuCkFuZCBQaWxhdGUgYXNrZWQgaGltIGFnYWluLCBzYXlpbmcsIEFuc3dlcmVzdCB0aG91IG5vdGhpbmc/IGJlaG9sZCBob3cgbWFueSB0aGluZ3MgdGhleSB3aXRuZXNzIGFnYWluc3QgdGhlZS4KQnV0IEplc3VzIHlldCBhbnN3ZXJlZCBub3RoaW5nOyBzbyB0aGF0IFBpbGF0ZSBtYXJ2ZWxsZWQuCk5vdyBhdCB0aGF0IGZlYXN0IGhlIHJlbGVhc2VkIHVudG8gdGhlbSBvbmUgcHJpc29uZXIsIHdob21zb2V2ZXIgdGhleSBkZXNpcmVkLgpBbmQgdGhlcmUgd2FzIG9uZSBuYW1lZCBCYXJhYmJhcywgd2hpY2ggbGF5IGJvdW5kIHdpdGggdGhlbSB0aGF0IGhhZCBtYWRlIGluc3VycmVjdGlvbiB3aXRoIGhpbSwgd2hvIGhhZCBjb21taXR0ZWQgbXVyZGVyIGluIHRoZSBpbnN1cnJlY3Rpb24uCkFuZCB0aGUgbXVsdGl0dWRlIGNyeWluZyBhbG91ZCBiZWdhbiB0byBkZXNpcmUgaGltIHRvIGRvIGFzIGhlIGhhZCBldmVyIGRvbmUgdW50byB0aGVtLgpCdXQgUGlsYXRlIGFuc3dlcmVkIHRoZW0sIHNheWluZywgV2lsbCB5ZSB0aGF0IEkgcmVsZWFzZSB1bnRvIHlvdSB0aGUgS2luZyBvZiB0aGUgSmV3cz8KRm9yIGhlIGtuZXcgdGhhdCB0aGUgY2hpZWYgcHJpZXN0cyBoYWQgZGVsaXZlcmVkIGhpbSBmb3IgZW52eS4KQnV0IHRoZSBjaGllZiBwcmllc3RzIG1vdmVkIHRoZSBwZW9wbGUsIHRoYXQgaGUgc2hvdWxkIHJhdGhlciByZWxlYXNlIEJhcmFiYmFzIHVudG8gdGhlbS4KQW5kIFBpbGF0ZSBhbnN3ZXJlZCBhbmQgc2FpZCBhZ2FpbiB1bnRvIHRoZW0sIFdoYXQgd2lsbCB5ZSB0aGVuIHRoYXQgSSBzaGFsbCBkbyB1bnRvIGhpbSB3aG9tIHllIGNhbGwgdGhlIEtpbmcgb2YgdGhlIEpld3M/CkFuZCB0aGV5IGNyaWVkIG91dCBhZ2FpbiwgQ3J1Y2lmeSBoaW0uClRoZW4gUGlsYXRlIHNhaWQgdW50byB0aGVtLCBXaHksIHdoYXQgZXZpbCBoYXRoIGhlIGRvbmU/IEFuZCB0aGV5IGNyaWVkIG91dCB0aGUgbW9yZSBleGNlZWRpbmdseSwgQ3J1Y2lmeSBoaW0uCkFuZCBzbyBQaWxhdGUsIHdpbGxpbmcgdG8gY29udGVudCB0aGUgcGVvcGxlLCByZWxlYXNlZCBCYXJhYmJhcyB1bnRvIHRoZW0sIGFuZCBkZWxpdmVyZWQgSmVzdXMsIHdoZW4gaGUgaGFkIHNjb3VyZ2VkIGhpbSwgdG8gYmUgY3J1Y2lmaWVkLgpBbmQgdGhlIHNvbGRpZXJzIGxlZCBoaW0gYXdheSBpbnRvIHRoZSBoYWxsLCBjYWxsZWQgUHJhZXRvcml1bTsgYW5kIHRoZXkgY2FsbCB0b2dldGhlciB0aGUgd2hvbGUgYmFuZC4KQW5kIHRoZXkgY2xvdGhlZCBoaW0gd2l0aCBwdXJwbGUsIGFuZCBwbGF0dGVkIGEgY3Jvd24gb2YgdGhvcm5zLCBhbmQgcHV0IGl0IGFib3V0IGhpcyBoZWFkLApBbmQgYmVnYW4gdG8gc2FsdXRlIGhpbSwgSGFpbCwgS2luZyBvZiB0aGUgSmV3cyEKQW5kIHRoZXkgc21vdGUgaGltIG9uIHRoZSBoZWFkIHdpdGggYSByZWVkLCBhbmQgZGlkIHNwaXQgdXBvbiBoaW0sIGFuZCBib3dpbmcgdGhlaXIga25lZXMgd29yc2hpcHBlZCBoaW0uCkFuZCB3aGVuIHRoZXkgaGFkIG1vY2tlZCBoaW0sIHRoZXkgdG9vayBvZmYgdGhlIHB1cnBsZSBmcm9tIGhpbSwgYW5kIHB1dCBoaXMgb3duIGNsb3RoZXMgb24gaGltLCBhbmQgbGVkIGhpbSBvdXQgdG8gY3J1Y2lmeSBoaW0uCkFuZCB0aGV5IGNvbXBlbCBvbmUgU2ltb24gYSBDeXJlbmlhbiwgd2hvIHBhc3NlZCBieSwgY29taW5nIG91dCBvZiB0aGUgY291bnRyeSwgdGhlIGZhdGhlciBvZiBBbGV4YW5kZXIgYW5kIFJ1ZnVzLCB0byBiZWFyIGhpcyBjcm9zcy4KQW5kIHRoZXkgYnJpbmcgaGltIHVudG8gdGhlIHBsYWNlIEdvbGdvdGhhLCB3aGljaCBpcywgYmVpbmcgaW50ZXJwcmV0ZWQsIFRoZSBwbGFjZSBvZiBhIHNrdWxsLgpBbmQgdGhleSBnYXZlIGhpbSB0byBkcmluayB3aW5lIG1pbmdsZWQgd2l0aCBteXJyaDogYnV0IGhlIHJlY2VpdmVkIGl0IG5vdC4KQW5kIHdoZW4gdGhleSBoYWQgY3J1Y2lmaWVkIGhpbSwgdGhleSBwYXJ0ZWQgaGlzIGdhcm1lbnRzLCBjYXN0aW5nIGxvdHMgdXBvbiB0aGVtLCB3aGF0IGV2ZXJ5IG1hbiBzaG91bGQgdGFrZS4KQW5kIGl0IHdhcyB0aGUgdGhpcmQgaG91ciwgYW5kIHRoZXkgY3J1Y2lmaWVkIGhpbS4KQW5kIHRoZSBzdXBlcnNjcmlwdGlvbiBvZiBoaXMgYWNjdXNhdGlvbiB3YXMgd3JpdHRlbiBvdmVyLCBUSEUgS0lORyBPRiBUSEUgSkVXUy4KQW5kIHdpdGggaGltIHRoZXkgY3J1Y2lmeSB0d28gdGhpZXZlczsgdGhlIG9uZSBvbiBoaXMgcmlnaHQgaGFuZCwgYW5kIHRoZSBvdGhlciBvbiBoaXMgbGVmdC4KQW5kIHRoZSBzY3JpcHR1cmUgd2FzIGZ1bGZpbGxlZCwgd2hpY2ggc2FpdGgsIEFuZCBoZSB3YXMgbnVtYmVyZWQgd2l0aCB0aGUgdHJhbnNncmVzc29ycy4KQW5kIHRoZXkgdGhhdCBwYXNzZWQgYnkgcmFpbGVkIG9uIGhpbSwgd2FnZ2luZyB0aGVpciBoZWFkcywgYW5kIHNheWluZywgQWgsIHRob3UgdGhhdCBkZXN0cm95ZXN0IHRoZSB0ZW1wbGUsIGFuZCBidWlsZGVzdCBpdCBpbiB0aHJlZSBkYXlzLApTYXZlIHRoeXNlbGYsIGFuZCBjb21lIGRvd24gZnJvbSB0aGUgY3Jvc3MuCkxpa2V3aXNlIGFsc28gdGhlIGNoaWVmIHByaWVzdHMgbW9ja2luZyBzYWlkIGFtb25nIHRoZW1zZWx2ZXMgd2l0aCB0aGUgc2NyaWJlcywgSGUgc2F2ZWQgb3RoZXJzOyBoaW1zZWxmIGhlIGNhbm5vdCBzYXZlLgpMZXQgQ2hyaXN0IHRoZSBLaW5nIG9mIElzcmFlbCBkZXNjZW5kIG5vdyBmcm9tIHRoZSBjcm9zcywgdGhhdCB3ZSBtYXkgc2VlIGFuZCBiZWxpZXZlLiBBbmQgdGhleSB0aGF0IHdlcmUgY3J1Y2lmaWVkIHdpdGggaGltIHJldmlsZWQgaGltLgpBbmQgd2hlbiB0aGUgc2l4dGggaG91ciB3YXMgY29tZSwgdGhlcmUgd2FzIGRhcmtuZXNzIG92ZXIgdGhlIHdob2xlIGxhbmQgdW50aWwgdGhlIG5pbnRoIGhvdXIuCkFuZCBhdCB0aGUgbmludGggaG91ciBKZXN1cyBjcmllZCB3aXRoIGEgbG91ZCB2b2ljZSwgc2F5aW5nLCBFbG9pLCBFbG9pLCBsYW1hIHNhYmFjaHRoYW5pPyB3aGljaCBpcywgYmVpbmcgaW50ZXJwcmV0ZWQsIE15IEdvZCwgbXkgR29kLCB3aHkgaGFzdCB0aG91IGZvcnNha2VuIG1lPwpBbmQgc29tZSBvZiB0aGVtIHRoYXQgc3Rvb2QgYnksIHdoZW4gdGhleSBoZWFyZCBpdCwgc2FpZCwgQmVob2xkLCBoZSBjYWxsZXRoIEVsaWFzLgpBbmQgb25lIHJhbiBhbmQgZmlsbGVkIGEgc3B1bmdlIGZ1bGwgb2YgdmluZWdhciwgYW5kIHB1dCBpdCBvbiBhIHJlZWQsIGFuZCBnYXZlIGhpbSB0byBkcmluaywgc2F5aW5nLCBMZXQgYWxvbmU7IGxldCB1cyBzZWUgd2hldGhlciBFbGlhcyB3aWxsIGNvbWUgdG8gdGFrZSBoaW0gZG93bi4KQW5kIEplc3VzIGNyaWVkIHdpdGggYSBsb3VkIHZvaWNlLCBhbmQgZ2F2ZSB1cCB0aGUgZ2hvc3QuCkFuZCB0aGUgdmVpbCBvZiB0aGUgdGVtcGxlIHdhcyByZW50IGluIHR3YWluIGZyb20gdGhlIHRvcCB0byB0aGUgYm90dG9tLgpBbmQgd2hlbiB0aGUgY2VudHVyaW9uLCB3aGljaCBzdG9vZCBvdmVyIGFnYWluc3QgaGltLCBzYXcgdGhhdCBoZSBzbyBjcmllZCBvdXQsIGFuZCBnYXZlIHVwIHRoZSBnaG9zdCwgaGUgc2FpZCwgVHJ1bHkgdGhpcyBtYW4gd2FzIHRoZSBTb24gb2YgR29kLgpUaGVyZSB3ZXJlIGFsc28gd29tZW4gbG9va2luZyBvbiBhZmFyIG9mZjogYW1vbmcgd2hvbSB3YXMgTWFyeSBNYWdkYWxlbmUsIGFuZCBNYXJ5IHRoZSBtb3RoZXIgb2YgSmFtZXMgdGhlIGxlc3MgYW5kIG9mIEpvc2VzLCBhbmQgU2Fsb21lOwooV2hvIGFsc28sIHdoZW4gaGUgd2FzIGluIEdhbGlsZWUsIGZvbGxvd2VkIGhpbSwgYW5kIG1pbmlzdGVyZWQgdW50byBoaW07KSBhbmQgbWFueSBvdGhlciB3b21lbiB3aGljaCBjYW1lIHVwIHdpdGggaGltIHVudG8gSmVydXNhbGVtLgpBbmQgbm93IHdoZW4gdGhlIGV2ZW4gd2FzIGNvbWUsIGJlY2F1c2UgaXQgd2FzIHRoZSBwcmVwYXJhdGlvbiwgdGhhdCBpcywgdGhlIGRheSBiZWZvcmUgdGhlIHNhYmJhdGgsCkpvc2VwaCBvZiBBcmltYXRoYWVhLCBhbiBob25vdXJhYmxlIGNvdW5zZWxsb3IsIHdoaWNoIGFsc28gd2FpdGVkIGZvciB0aGUga2luZ2RvbSBvZiBHb2QsIGNhbWUsIGFuZCB3ZW50IGluIGJvbGRseSB1bnRvIFBpbGF0ZSwgYW5kIGNyYXZlZCB0aGUgYm9keSBvZiBKZXN1cy4KQW5kIFBpbGF0ZSBtYXJ2ZWxsZWQgaWYgaGUgd2VyZSBhbHJlYWR5IGRlYWQ6IGFuZCBjYWxsaW5nIHVudG8gaGltIHRoZSBjZW50dXJpb24sIGhlIGFza2VkIGhpbSB3aGV0aGVyIGhlIGhhZCBiZWVuIGFueSB3aGlsZSBkZWFkLgpBbmQgd2hlbiBoZSBrbmV3IGl0IG9mIHRoZSBjZW50dXJpb24sIGhlIGdhdmUgdGhlIGJvZHkgdG8gSm9zZXBoLgpBbmQgaGUgYm91Z2h0IGZpbmUgbGluZW4sIGFuZCB0b29rIGhpbSBkb3duLCBhbmQgd3JhcHBlZCBoaW0gaW4gdGhlIGxpbmVuLCBhbmQgbGFpZCBoaW0gaW4gYSBzZXB1bGNocmUgd2hpY2ggd2FzIGhld24gb3V0IG9mIGEgcm9jaywgYW5kIHJvbGxlZCBhIHN0b25lIHVudG8gdGhlIGRvb3Igb2YgdGhlIHNlcHVsY2hyZS4KQW5kIE1hcnkgTWFnZGFsZW5lIGFuZCBNYXJ5IHRoZSBtb3RoZXIgb2YgSm9zZXMgYmVoZWxkIHdoZXJlIGhlIHdhcyBsYWlkLgpBbmQgd2hlbiB0aGUgc2FiYmF0aCB3YXMgcGFzdCwgTWFyeSBNYWdkYWxlbmUsIGFuZCBNYXJ5IHRoZSBtb3RoZXIgb2YgSmFtZXMsIGFuZCBTYWxvbWUsIGhhZCBib3VnaHQgc3dlZXQgc3BpY2VzLCB0aGF0IHRoZXkgbWlnaHQgY29tZSBhbmQgYW5vaW50IGhpbS4KQW5kIHZlcnkgZWFybHkgaW4gdGhlIG1vcm5pbmcgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlaywgdGhleSBjYW1lIHVudG8gdGhlIHNlcHVsY2hyZSBhdCB0aGUgcmlzaW5nIG9mIHRoZSBzdW4uCkFuZCB0aGV5IHNhaWQgYW1vbmcgdGhlbXNlbHZlcywgV2hvIHNoYWxsIHJvbGwgdXMgYXdheSB0aGUgc3RvbmUgZnJvbSB0aGUgZG9vciBvZiB0aGUgc2VwdWxjaHJlPwpBbmQgd2hlbiB0aGV5IGxvb2tlZCwgdGhleSBzYXcgdGhhdCB0aGUgc3RvbmUgd2FzIHJvbGxlZCBhd2F5OiBmb3IgaXQgd2FzIHZlcnkgZ3JlYXQuCkFuZCBlbnRlcmluZyBpbnRvIHRoZSBzZXB1bGNocmUsIHRoZXkgc2F3IGEgeW91bmcgbWFuIHNpdHRpbmcgb24gdGhlIHJpZ2h0IHNpZGUsIGNsb3RoZWQgaW4gYSBsb25nIHdoaXRlIGdhcm1lbnQ7IGFuZCB0aGV5IHdlcmUgYWZmcmlnaHRlZC4KQW5kIGhlIHNhaXRoIHVudG8gdGhlbSwgQmUgbm90IGFmZnJpZ2h0ZWQ6IFllIHNlZWsgSmVzdXMgb2YgTmF6YXJldGgsIHdoaWNoIHdhcyBjcnVjaWZpZWQ6IGhlIGlzIHJpc2VuOyBoZSBpcyBub3QgaGVyZTogYmVob2xkIHRoZSBwbGFjZSB3aGVyZSB0aGV5IGxhaWQgaGltLgpCdXQgZ28geW91ciB3YXksIHRlbGwgaGlzIGRpc2NpcGxlcyBhbmQgUGV0ZXIgdGhhdCBoZSBnb2V0aCBiZWZvcmUgeW91IGludG8gR2FsaWxlZTogdGhlcmUgc2hhbGwgeWUgc2VlIGhpbSwgYXMgaGUgc2FpZCB1bnRvIHlvdS4KQW5kIHRoZXkgd2VudCBvdXQgcXVpY2tseSwgYW5kIGZsZWQgZnJvbSB0aGUgc2VwdWxjaHJlOyBmb3IgdGhleSB0cmVtYmxlZCBhbmQgd2VyZSBhbWF6ZWQ6IG5laXRoZXIgc2FpZCB0aGV5IGFueSB0aGluZyB0byBhbnkgbWFuOyBmb3IgdGhleSB3ZXJlIGFmcmFpZC4KTm93IHdoZW4gSmVzdXMgd2FzIHJpc2VuIGVhcmx5IHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWssIGhlIGFwcGVhcmVkIGZpcnN0IHRvIE1hcnkgTWFnZGFsZW5lLCBvdXQgb2Ygd2hvbSBoZSBoYWQgY2FzdCBzZXZlbiBkZXZpbHMuCkFuZCBzaGUgd2VudCBhbmQgdG9sZCB0aGVtIHRoYXQgaGFkIGJlZW4gd2l0aCBoaW0sIGFzIHRoZXkgbW91cm5lZCBhbmQgd2VwdC4KQW5kIHRoZXksIHdoZW4gdGhleSBoYWQgaGVhcmQgdGhhdCBoZSB3YXMgYWxpdmUsIGFuZCBoYWQgYmVlbiBzZWVuIG9mIGhlciwgYmVsaWV2ZWQgbm90LgpBZnRlciB0aGF0IGhlIGFwcGVhcmVkIGluIGFub3RoZXIgZm9ybSB1bnRvIHR3byBvZiB0aGVtLCBhcyB0aGV5IHdhbGtlZCwgYW5kIHdlbnQgaW50byB0aGUgY291bnRyeS4KQW5kIHRoZXkgd2VudCBhbmQgdG9sZCBpdCB1bnRvIHRoZSByZXNpZHVlOiBuZWl0aGVyIGJlbGlldmVkIHRoZXkgdGhlbS4KQWZ0ZXJ3YXJkIGhlIGFwcGVhcmVkIHVudG8gdGhlIGVsZXZlbiBhcyB0aGV5IHNhdCBhdCBtZWF0LCBhbmQgdXBicmFpZGVkIHRoZW0gd2l0aCB0aGVpciB1bmJlbGllZiBhbmQgaGFyZG5lc3Mgb2YgaGVhcnQsIGJlY2F1c2UgdGhleSBiZWxpZXZlZCBub3QgdGhlbSB3aGljaCBoYWQgc2VlbiBoaW0gYWZ0ZXIgaGUgd2FzIHJpc2VuLgpBbmQgaGUgc2FpZCB1bnRvIHRoZW0sIEdvIHllIGludG8gYWxsIHRoZSB3b3JsZCwgYW5kIHByZWFjaCB0aGUgZ29zcGVsIHRvIGV2ZXJ5IGNyZWF0dXJlLgpIZSB0aGF0IGJlbGlldmV0aCBhbmQgaXMgYmFwdGl6ZWQgc2hhbGwgYmUgc2F2ZWQ7IGJ1dCBoZSB0aGF0IGJlbGlldmV0aCBub3Qgc2hhbGwgYmUgZGFtbmVkLgpBbmQgdGhlc2Ugc2lnbnMgc2hhbGwgZm9sbG93IHRoZW0gdGhhdCBiZWxpZXZlOyBJbiBteSBuYW1lIHNoYWxsIHRoZXkgY2FzdCBvdXQgZGV2aWxzOyB0aGV5IHNoYWxsIHNwZWFrIHdpdGggbmV3IHRvbmd1ZXM7ClRoZXkgc2hhbGwgdGFrZSB1cCBzZXJwZW50czsgYW5kIGlmIHRoZXkgZHJpbmsgYW55IGRlYWRseSB0aGluZywgaXQgc2hhbGwgbm90IGh1cnQgdGhlbTsgdGhleSBzaGFsbCBsYXkgaGFuZHMgb24gdGhlIHNpY2ssIGFuZCB0aGV5IHNoYWxsIHJlY292ZXIuClNvIHRoZW4gYWZ0ZXIgdGhlIExvcmQgaGFkIHNwb2tlbiB1bnRvIHRoZW0sIGhlIHdhcyByZWNlaXZlZCB1cCBpbnRvIGhlYXZlbiwgYW5kIHNhdCBvbiB0aGUgcmlnaHQgaGFuZCBvZiBHb2QuCkFuZCB0aGV5IHdlbnQgZm9ydGgsIGFuZCBwcmVhY2hlZCBldmVyeSB3aGVyZSwgdGhlIExvcmQgd29ya2luZyB3aXRoIHRoZW0sIGFuZCBjb25maXJtaW5nIHRoZSB3b3JkIHdpdGggc2lnbnMgZm9sbG93aW5nLiBBbWVuLgpGb3Jhc211Y2ggYXMgbWFueSBoYXZlIHRha2VuIGluIGhhbmQgdG8gc2V0IGZvcnRoIGluIG9yZGVyIGEgZGVjbGFyYXRpb24gb2YgdGhvc2UgdGhpbmdzIHdoaWNoIGFyZSBtb3N0IHN1cmVseSBiZWxpZXZlZCBhbW9uZyB1cywKRXZlbiBhcyB0aGV5IGRlbGl2ZXJlZCB0aGVtIHVudG8gdXMsIHdoaWNoIGZyb20gdGhlIGJlZ2lubmluZyB3ZXJlIGV5ZXdpdG5lc3NlcywgYW5kIG1pbmlzdGVycyBvZiB0aGUgd29yZDsKSXQgc2VlbWVkIGdvb2QgdG8gbWUgYWxzbywgaGF2aW5nIGhhZCBwZXJmZWN0IHVuZGVyc3RhbmRpbmcgb2YgYWxsIHRoaW5ncyBmcm9tIHRoZSB2ZXJ5IGZpcnN0LCB0byB3cml0ZSB1bnRvIHRoZWUgaW4gb3JkZXIsIG1vc3QgZXhjZWxsZW50IFRoZW9waGlsdXMsClRoYXQgdGhvdSBtaWdodGVzdCBrbm93IHRoZSBjZXJ0YWludHkgb2YgdGhvc2UgdGhpbmdzLCB3aGVyZWluIHRob3UgaGFzdCBiZWVuIGluc3RydWN0ZWQuClRIRVJFIHdhcyBpbiB0aGUgZGF5cyBvZiBIZXJvZCwgdGhlIGtpbmcgb2YgSnVkYWVhLCBhIGNlcnRhaW4gcHJpZXN0IG5hbWVkIFphY2hhcmlhcywgb2YgdGhlIGNvdXJzZSBvZiBBYmlhOiBhbmQgaGlzIHdpZmUgd2FzIG9mIHRoZSBkYXVnaHRlcnMgb2YgQWFyb24sIGFuZCBoZXIgbmFtZSB3YXMgRWxpc2FiZXRoLgpBbmQgdGhleSB3ZXJlIGJvdGggcmlnaHRlb3VzIGJlZm9yZSBHb2QsIHdhbGtpbmcgaW4gYWxsIHRoZSBjb21tYW5kbWVudHMgYW5kIG9yZGluYW5jZXMgb2YgdGhlIExvcmQgYmxhbWVsZXNzLgpBbmQgdGhleSBoYWQgbm8gY2hpbGQsIGJlY2F1c2UgdGhhdCBFbGlzYWJldGggd2FzIGJhcnJlbiwgYW5kIHRoZXkgYm90aCB3ZXJlIG5vdyB3ZWxsIHN0cmlja2VuIGluIHllYXJzLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB0aGF0IHdoaWxlIGhlIGV4ZWN1dGVkIHRoZSBwcmllc3QncyBvZmZpY2UgYmVmb3JlIEdvZCBpbiB0aGUgb3JkZXIgb2YgaGlzIGNvdXJzZSwKQWNjb3JkaW5nIHRvIHRoZSBjdXN0b20gb2YgdGhlIHByaWVzdCdzIG9mZmljZSwgaGlzIGxvdCB3YXMgdG8gYnVybiBpbmNlbnNlIHdoZW4gaGUgd2VudCBpbnRvIHRoZSB0ZW1wbGUgb2YgdGhlIExvcmQuCkFuZCB0aGUgd2hvbGUgbXVsdGl0dWRlIG9mIHRoZSBwZW9wbGUgd2VyZSBwcmF5aW5nIHdpdGhvdXQgYXQgdGhlIHRpbWUgb2YgaW5jZW5zZS4KQW5kIHRoZXJlIGFwcGVhcmVkIHVudG8gaGltIGFuIGFuZ2VsIG9mIHRoZSBMb3JkIHN0YW5kaW5nIG9uIHRoZSByaWdodCBzaWRlIG9mIHRoZSBhbHRhciBvZiBpbmNlbnNlLgpBbmQgd2hlbiBaYWNoYXJpYXMgc2F3IGhpbSwgaGUgd2FzIHRyb3VibGVkLCBhbmQgZmVhciBmZWxsIHVwb24gaGltLgpCdXQgdGhlIGFuZ2VsIHNhaWQgdW50byBoaW0sIEZlYXIgbm90LCBaYWNoYXJpYXM6IGZvciB0aHkgcHJheWVyIGlzIGhlYXJkOyBhbmQgdGh5IHdpZmUgRWxpc2FiZXRoIHNoYWxsIGJlYXIgdGhlZSBhIHNvbiwgYW5kIHRob3Ugc2hhbHQgY2FsbCBoaXMgbmFtZSBKb2huLgpBbmQgdGhvdSBzaGFsdCBoYXZlIGpveSBhbmQgZ2xhZG5lc3M7IGFuZCBtYW55IHNoYWxsIHJlam9pY2UgYXQgaGlzIGJpcnRoLgpGb3IgaGUgc2hhbGwgYmUgZ3JlYXQgaW4gdGhlIHNpZ2h0IG9mIHRoZSBMb3JkLCBhbmQgc2hhbGwgZHJpbmsgbmVpdGhlciB3aW5lIG5vciBzdHJvbmcgZHJpbms7IGFuZCBoZSBzaGFsbCBiZSBmaWxsZWQgd2l0aCB0aGUgSG9seSBHaG9zdCwgZXZlbiBmcm9tIGhpcyBtb3RoZXIncyB3b21iLgpBbmQgbWFueSBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsIHNoYWxsIGhlIHR1cm4gdG8gdGhlIExvcmQgdGhlaXIgR29kLgpBbmQgaGUgc2hhbGwgZ28gYmVmb3JlIGhpbSBpbiB0aGUgc3Bpcml0IGFuZCBwb3dlciBvZiBFbGlhcywgdG8gdHVybiB0aGUgaGVhcnRzIG9mIHRoZSBmYXRoZXJzIHRvIHRoZSBjaGlsZHJlbiwgYW5kIHRoZSBkaXNvYmVkaWVudCB0byB0aGUgd2lzZG9tIG9mIHRoZSBqdXN0OyB0byBtYWtlIHJlYWR5IGEgcGVvcGxlIHByZXBhcmVkIGZvciB0aGUgTG9yZC4KQW5kIFphY2hhcmlhcyBzYWlkIHVudG8gdGhlIGFuZ2VsLCBXaGVyZWJ5IHNoYWxsIEkga25vdyB0aGlzPyBmb3IgSSBhbSBhbiBvbGQgbWFuLCBhbmQgbXkgd2lmZSB3ZWxsIHN0cmlja2VuIGluIHllYXJzLgpBbmQgdGhlIGFuZ2VsIGFuc3dlcmluZyBzYWlkIHVudG8gaGltLCBJIGFtIEdhYnJpZWwsIHRoYXQgc3RhbmQgaW4gdGhlIHByZXNlbmNlIG9mIEdvZDsgYW5kIGFtIHNlbnQgdG8gc3BlYWsgdW50byB0aGVlLCBhbmQgdG8gc2hldyB0aGVlIHRoZXNlIGdsYWQgdGlkaW5ncy4KQW5kLCBiZWhvbGQsIHRob3Ugc2hhbHQgYmUgZHVtYiwgYW5kIG5vdCBhYmxlIHRvIHNwZWFrLCB1bnRpbCB0aGUgZGF5IHRoYXQgdGhlc2UgdGhpbmdzIHNoYWxsIGJlIHBlcmZvcm1lZCwgYmVjYXVzZSB0aG91IGJlbGlldmVzdCBub3QgbXkgd29yZHMsIHdoaWNoIHNoYWxsIGJlIGZ1bGZpbGxlZCBpbiB0aGVpciBzZWFzb24uCkFuZCB0aGUgcGVvcGxlIHdhaXRlZCBmb3IgWmFjaGFyaWFzLCBhbmQgbWFydmVsbGVkIHRoYXQgaGUgdGFycmllZCBzbyBsb25nIGluIHRoZSB0ZW1wbGUuCkFuZCB3aGVuIGhlIGNhbWUgb3V0LCBoZSBjb3VsZCBub3Qgc3BlYWsgdW50byB0aGVtOiBhbmQgdGhleSBwZXJjZWl2ZWQgdGhhdCBoZSBoYWQgc2VlbiBhIHZpc2lvbiBpbiB0aGUgdGVtcGxlOiBmb3IgaGUgYmVja29uZWQgdW50byB0aGVtLCBhbmQgcmVtYWluZWQgc3BlZWNobGVzcy4KQW5kIGl0IGNhbWUgdG8gcGFzcywgdGhhdCwgYXMgc29vbiBhcyB0aGUgZGF5cyBvZiBoaXMgbWluaXN0cmF0aW9uIHdlcmUgYWNjb21wbGlzaGVkLCBoZSBkZXBhcnRlZCB0byBoaXMgb3duIGhvdXNlLgpBbmQgYWZ0ZXIgdGhvc2UgZGF5cyBoaXMgd2lmZSBFbGlzYWJldGggY29uY2VpdmVkLCBhbmQgaGlkIGhlcnNlbGYgZml2ZSBtb250aHMsIHNheWluZywKVGh1cyBoYXRoIHRoZSBMb3JkIGRlYWx0IHdpdGggbWUgaW4gdGhlIGRheXMgd2hlcmVpbiBoZSBsb29rZWQgb24gbWUsIHRvIHRha2UgYXdheSBteSByZXByb2FjaCBhbW9uZyBtZW4uCkFuZCBpbiB0aGUgc2l4dGggbW9udGggdGhlIGFuZ2VsIEdhYnJpZWwgd2FzIHNlbnQgZnJvbSBHb2QgdW50byBhIGNpdHkgb2YgR2FsaWxlZSwgbmFtZWQgTmF6YXJldGgsClRvIGEgdmlyZ2luIGVzcG91c2VkIHRvIGEgbWFuIHdob3NlIG5hbWUgd2FzIEpvc2VwaCwgb2YgdGhlIGhvdXNlIG9mIERhdmlkOyBhbmQgdGhlIHZpcmdpbidzIG5hbWUgd2FzIE1hcnkuCkFuZCB0aGUgYW5nZWwgY2FtZSBpbiB1bnRvIGhlciwgYW5kIHNhaWQsIEhhaWwsIHRob3UgdGhhdCBhcnQgaGlnaGx5IGZhdm91cmVkLCB0aGUgTG9yZCBpcyB3aXRoIHRoZWU6IGJsZXNzZWQgYXJ0IHRob3UgYW1vbmcgd29tZW4uCkFuZCB3aGVuIHNoZSBzYXcgaGltLCBzaGUgd2FzIHRyb3VibGVkIGF0IGhpcyBzYXlpbmcsIGFuZCBjYXN0IGluIGhlciBtaW5kIHdoYXQgbWFubmVyIG9mIHNhbHV0YXRpb24gdGhpcyBzaG91bGQgYmUuCkFuZCB0aGUgYW5nZWwgc2FpZCB1bnRvIGhlciwgRmVhciBub3QsIE1hcnk6IGZvciB0aG91IGhhc3QgZm91bmQgZmF2b3VyIHdpdGggR29kLgpBbmQsIGJlaG9sZCwgdGhvdSBzaGFsdCBjb25jZWl2ZSBpbiB0aHkgd29tYiwgYW5kIGJyaW5nIGZvcnRoIGEgc29uLCBhbmQgc2hhbHQgY2FsbCBoaXMgbmFtZSBKRVNVUy4KSGUgc2hhbGwgYmUgZ3JlYXQsIGFuZCBzaGFsbCBiZSBjYWxsZWQgdGhlIFNvbiBvZiB0aGUgSGlnaGVzdDogYW5kIHRoZSBMb3JkIEdvZCBzaGFsbCBnaXZlIHVudG8gaGltIHRoZSB0aHJvbmUgb2YgaGlzIGZhdGhlciBEYXZpZDoKQW5kIGhlIHNoYWxsIHJlaWduIG92ZXIgdGhlIGhvdXNlIG9mIEphY29iIGZvciBldmVyOyBhbmQgb2YgaGlzIGtpbmdkb20gdGhlcmUgc2hhbGwgYmUgbm8gZW5kLgpUaGVuIHNhaWQgTWFyeSB1bnRvIHRoZSBhbmdlbCwgSG93IHNoYWxsIHRoaXMgYmUsIHNlZWluZyBJIGtub3cgbm90IGEgbWFuPwpBbmQgdGhlIGFuZ2VsIGFuc3dlcmVkIGFuZCBzYWlkIHVudG8gaGVyLCBUaGUgSG9seSBHaG9zdCBzaGFsbCBjb21lIHVwb24gdGhlZSwgYW5kIHRoZSBwb3dlciBvZiB0aGUgSGlnaGVzdCBzaGFsbCBvdmVyc2hhZG93IHRoZWU6IHRoZXJlZm9yZSBhbHNvIHRoYXQgaG9seSB0aGluZyB3aGljaCBzaGFsbCBiZSBib3JuIG9mIHRoZWUgc2hhbGwgYmUgY2FsbGVkIHRoZSBTb24gb2YgR29kLgpBbmQsIGJlaG9sZCwgdGh5IGNvdXNpbiBFbGlzYWJldGgsIHNoZSBoYXRoIGFsc28gY29uY2VpdmVkIGEgc29uIGluIGhlciBvbGQgYWdlOiBhbmQgdGhpcyBpcyB0aGUgc2l4dGggbW9udGggd2l0aCBoZXIsIHdobyB3YXMgY2FsbGVkIGJhcnJlbi4KRm9yIHdpdGggR29kIG5vdGhpbmcgc2hhbGwgYmUgaW1wb3NzaWJsZS4KQW5kIE1hcnkgc2FpZCwgQmVob2xkIHRoZSBoYW5kbWFpZCBvZiB0aGUgTG9yZDsgYmUgaXQgdW50byBtZSBhY2NvcmRpbmcgdG8gdGh5IHdvcmQuIEFuZCB0aGUgYW5nZWwgZGVwYXJ0ZWQgZnJvbSBoZXIuCkFuZCBNYXJ5IGFyb3NlIGluIHRob3NlIGRheXMsIGFuZCB3ZW50IGludG8gdGhlIGhpbGwgY291bnRyeSB3aXRoIGhhc3RlLCBpbnRvIGEgY2l0eSBvZiBKdWRhOwpBbmQgZW50ZXJlZCBpbnRvIHRoZSBob3VzZSBvZiBaYWNoYXJpYXMsIGFuZCBzYWx1dGVkIEVsaXNhYmV0aC4KQW5kIGl0IGNhbWUgdG8gcGFzcywgdGhhdCwgd2hlbiBFbGlzYWJldGggaGVhcmQgdGhlIHNhbHV0YXRpb24gb2YgTWFyeSwgdGhlIGJhYmUgbGVhcGVkIGluIGhlciB3b21iOyBhbmQgRWxpc2FiZXRoIHdhcyBmaWxsZWQgd2l0aCB0aGUgSG9seSBHaG9zdDoKQW5kIHNoZSBzcGFrZSBvdXQgd2l0aCBhIGxvdWQgdm9pY2UsIGFuZCBzYWlkLCBCbGVzc2VkIGFydCB0aG91IGFtb25nIHdvbWVuLCBhbmQgYmxlc3NlZCBpcyB0aGUgZnJ1aXQgb2YgdGh5IHdvbWIuCkFuZCB3aGVuY2UgaXMgdGhpcyB0byBtZSwgdGhhdCB0aGUgbW90aGVyIG9mIG15IExvcmQgc2hvdWxkIGNvbWUgdG8gbWU/CkZvciwgbG8sIGFzIHNvb24gYXMgdGhlIHZvaWNlIG9mIHRoeSBzYWx1dGF0aW9uIHNvdW5kZWQgaW4gbWluZSBlYXJzLCB0aGUgYmFiZSBsZWFwZWQgaW4gbXkgd29tYiBmb3Igam95LgpBbmQgYmxlc3NlZCBpcyBzaGUgdGhhdCBiZWxpZXZlZDogZm9yIHRoZXJlIHNoYWxsIGJlIGEgcGVyZm9ybWFuY2Ugb2YgdGhvc2UgdGhpbmdzIHdoaWNoIHdlcmUgdG9sZCBoZXIgZnJvbSB0aGUgTG9yZC4KQW5kIE1hcnkgc2FpZCwgTXkgc291bCBkb3RoIG1hZ25pZnkgdGhlIExvcmQsCkFuZCBteSBzcGlyaXQgaGF0aCByZWpvaWNlZCBpbiBHb2QgbXkgU2F2aW91ci4KRm9yIGhlIGhhdGggcmVnYXJkZWQgdGhlIGxvdyBlc3RhdGUgb2YgaGlzIGhhbmRtYWlkZW46IGZvciwgYmVob2xkLCBmcm9tIGhlbmNlZm9ydGggYWxsIGdlbmVyYXRpb25zIHNoYWxsIGNhbGwgbWUgYmxlc3NlZC4KRm9yIGhlIHRoYXQgaXMgbWlnaHR5IGhhdGggZG9uZSB0byBtZSBncmVhdCB0aGluZ3M7IGFuZCBob2x5IGlzIGhpcyBuYW1lLgpBbmQgaGlzIG1lcmN5IGlzIG9uIHRoZW0gdGhhdCBmZWFyIGhpbSBmcm9tIGdlbmVyYXRpb24gdG8gZ2VuZXJhdGlvbi4KSGUgaGF0aCBzaGV3ZWQgc3RyZW5ndGggd2l0aCBoaXMgYXJtOyBoZSBoYXRoIHNjYXR0ZXJlZCB0aGUgcHJvdWQgaW4gdGhlIGltYWdpbmF0aW9uIG9mIHRoZWlyIGhlYXJ0cy4KSGUgaGF0aCBwdXQgZG93biB0aGUgbWlnaHR5IGZyb20gdGhlaXIgc2VhdHMsIGFuZCBleGFsdGVkIHRoZW0gb2YgbG93IGRlZ3JlZS4KSGUgaGF0aCBmaWxsZWQgdGhlIGh1bmdyeSB3aXRoIGdvb2QgdGhpbmdzOyBhbmQgdGhlIHJpY2ggaGUgaGF0aCBzZW50IGVtcHR5IGF3YXkuCkhlIGhhdGggaG9scGVuIGhpcyBzZXJ2YW50IElzcmFlbCwgaW4gcmVtZW1icmFuY2Ugb2YgaGlzIG1lcmN5OwpBcyBoZSBzcGFrZSB0byBvdXIgZmF0aGVycywgdG8gQWJyYWhhbSwgYW5kIHRvIGhpcyBzZWVkIGZvciBldmVyLgpBbmQgTWFyeSBhYm9kZSB3aXRoIGhlciBhYm91dCB0aHJlZSBtb250aHMsIGFuZCByZXR1cm5lZCB0byBoZXIgb3duIGhvdXNlLgpOb3cgRWxpc2FiZXRoJ3MgZnVsbCB0aW1lIGNhbWUgdGhhdCBzaGUgc2hvdWxkIGJlIGRlbGl2ZXJlZDsgYW5kIHNoZSBicm91Z2h0IGZvcnRoIGEgc29uLgpBbmQgaGVyIG5laWdoYm91cnMgYW5kIGhlciBjb3VzaW5zIGhlYXJkIGhvdyB0aGUgTG9yZCBoYWQgc2hld2VkIGdyZWF0IG1lcmN5IHVwb24gaGVyOyBhbmQgdGhleSByZWpvaWNlZCB3aXRoIGhlci4KQW5kIGl0IGNhbWUgdG8gcGFzcywgdGhhdCBvbiB0aGUgZWlnaHRoIGRheSB0aGV5IGNhbWUgdG8gY2lyY3VtY2lzZSB0aGUgY2hpbGQ7IGFuZCB0aGV5IGNhbGxlZCBoaW0gWmFjaGFyaWFzLCBhZnRlciB0aGUgbmFtZSBvZiBoaXMgZmF0aGVyLgpBbmQgaGlzIG1vdGhlciBhbnN3ZXJlZCBhbmQgc2FpZCwgTm90IHNvOyBidXQgaGUgc2hhbGwgYmUgY2FsbGVkIEpvaG4uCkFuZCB0aGV5IHNhaWQgdW50byBoZXIsIFRoZXJlIGlzIG5vbmUgb2YgdGh5IGtpbmRyZWQgdGhhdCBpcyBjYWxsZWQgYnkgdGhpcyBuYW1lLgpBbmQgdGhleSBtYWRlIHNpZ25zIHRvIGhpcyBmYXRoZXIsIGhvdyBoZSB3b3VsZCBoYXZlIGhpbSBjYWxsZWQuCkFuZCBoZSBhc2tlZCBmb3IgYSB3cml0aW5nIHRhYmxlLCBhbmQgd3JvdGUsIHNheWluZywgSGlzIG5hbWUgaXMgSm9obi4gQW5kIHRoZXkgbWFydmVsbGVkIGFsbC4KQW5kIGhpcyBtb3V0aCB3YXMgb3BlbmVkIGltbWVkaWF0ZWx5LCBhbmQgaGlzIHRvbmd1ZSBsb29zZWQsIGFuZCBoZSBzcGFrZSwgYW5kIHByYWlzZWQgR29kLgpBbmQgZmVhciBjYW1lIG9uIGFsbCB0aGF0IGR3ZWx0IHJvdW5kIGFib3V0IHRoZW06IGFuZCBhbGwgdGhlc2Ugc2F5aW5ncyB3ZXJlIG5vaXNlZCBhYnJvYWQgdGhyb3VnaG91dCBhbGwgdGhlIGhpbGwgY291bnRyeSBvZiBKdWRhZWEuCkFuZCBhbGwgdGhleSB0aGF0IGhlYXJkIHRoZW0gbGFpZCB0aGVtIHVwIGluIHRoZWlyIGhlYXJ0cywgc2F5aW5nLCBXaGF0IG1hbm5lciBvZiBjaGlsZCBzaGFsbCB0aGlzIGJlISBBbmQgdGhlIGhhbmQgb2YgdGhlIExvcmQgd2FzIHdpdGggaGltLgpBbmQgaGlzIGZhdGhlciBaYWNoYXJpYXMgd2FzIGZpbGxlZCB3aXRoIHRoZSBIb2x5IEdob3N0LCBhbmQgcHJvcGhlc2llZCwgc2F5aW5nLApCbGVzc2VkIGJlIHRoZSBMb3JkIEdvZCBvZiBJc3JhZWw7IGZvciBoZSBoYXRoIHZpc2l0ZWQgYW5kIHJlZGVlbWVkIGhpcyBwZW9wbGUsCkFuZCBoYXRoIHJhaXNlZCB1cCBhbiBob3JuIG9mIHNhbHZhdGlvbiBmb3IgdXMgaW4gdGhlIGhvdXNlIG9mIGhpcyBzZXJ2YW50IERhdmlkOwpBcyBoZSBzcGFrZSBieSB0aGUgbW91dGggb2YgaGlzIGhvbHkgcHJvcGhldHMsIHdoaWNoIGhhdmUgYmVlbiBzaW5jZSB0aGUgd29ybGQgYmVnYW46ClRoYXQgd2Ugc2hvdWxkIGJlIHNhdmVkIGZyb20gb3VyIGVuZW1pZXMsIGFuZCBmcm9tIHRoZSBoYW5kIG9mIGFsbCB0aGF0IGhhdGUgdXM7ClRvIHBlcmZvcm0gdGhlIG1lcmN5IHByb21pc2VkIHRvIG91ciBmYXRoZXJzLCBhbmQgdG8gcmVtZW1iZXIgaGlzIGhvbHkgY292ZW5hbnQ7ClRoZSBvYXRoIHdoaWNoIGhlIHN3YXJlIHRvIG91ciBmYXRoZXIgQWJyYWhhbSwKVGhhdCBoZSB3b3VsZCBncmFudCB1bnRvIHVzLCB0aGF0IHdlIGJlaW5nIGRlbGl2ZXJlZCBvdXQgb2YgdGhlIGhhbmQgb2Ygb3VyIGVuZW1pZXMgbWlnaHQgc2VydmUgaGltIHdpdGhvdXQgZmVhciwKSW4gaG9saW5lc3MgYW5kIHJpZ2h0ZW91c25lc3MgYmVmb3JlIGhpbSwgYWxsIHRoZSBkYXlzIG9mIG91ciBsaWZlLgpBbmQgdGhvdSwgY2hpbGQsIHNoYWx0IGJlIGNhbGxlZCB0aGUgcHJvcGhldCBvZiB0aGUgSGlnaGVzdDogZm9yIHRob3Ugc2hhbHQgZ28gYmVmb3JlIHRoZSBmYWNlIG9mIHRoZSBMb3JkIHRvIHByZXBhcmUgaGlzIHdheXM7ClRvIGdpdmUga25vd2xlZGdlIG9mIHNhbHZhdGlvbiB1bnRvIGhpcyBwZW9wbGUgYnkgdGhlIHJlbWlzc2lvbiBvZiB0aGVpciBzaW5zLApUaHJvdWdoIHRoZSB0ZW5kZXIgbWVyY3kgb2Ygb3VyIEdvZDsgd2hlcmVieSB0aGUgZGF5c3ByaW5nIGZyb20gb24gaGlnaCBoYXRoIHZpc2l0ZWQgdXMsClRvIGdpdmUgbGlnaHQgdG8gdGhlbSB0aGF0IHNpdCBpbiBkYXJrbmVzcyBhbmQgaW4gdGhlIHNoYWRvdyBvZiBkZWF0aCwgdG8gZ3VpZGUgb3VyIGZlZXQgaW50byB0aGUgd2F5IG9mIHBlYWNlLgpBbmQgdGhlIGNoaWxkIGdyZXcsIGFuZCB3YXhlZCBzdHJvbmcgaW4gc3Bpcml0LCBhbmQgd2FzIGluIHRoZSBkZXNlcnRzIHRpbGwgdGhlIGRheSBvZiBoaXMgc2hld2luZyB1bnRvIElzcmFlbC4KQW5kIGl0IGNhbWUgdG8gcGFzcyBpbiB0aG9zZSBkYXlzLCB0aGF0IHRoZXJlIHdlbnQgb3V0IGEgZGVjcmVlIGZyb20gQ2Flc2FyIEF1Z3VzdHVzIHRoYXQgYWxsIHRoZSB3b3JsZCBzaG91bGQgYmUgdGF4ZWQuCihBbmQgdGhpcyB0YXhpbmcgd2FzIGZpcnN0IG1hZGUgd2hlbiBDeXJlbml1cyB3YXMgZ292ZXJub3Igb2YgU3lyaWEuKQpBbmQgYWxsIHdlbnQgdG8gYmUgdGF4ZWQsIGV2ZXJ5IG9uZSBpbnRvIGhpcyBvd24gY2l0eS4KQW5kIEpvc2VwaCBhbHNvIHdlbnQgdXAgZnJvbSBHYWxpbGVlLCBvdXQgb2YgdGhlIGNpdHkgb2YgTmF6YXJldGgsIGludG8gSnVkYWVhLCB1bnRvIHRoZSBjaXR5IG9mIERhdmlkLCB3aGljaCBpcyBjYWxsZWQgQmV0aGxlaGVtOyAoYmVjYXVzZSBoZSB3YXMgb2YgdGhlIGhvdXNlIGFuZCBsaW5lYWdlIG9mIERhdmlkOikKVG8gYmUgdGF4ZWQgd2l0aCBNYXJ5IGhpcyBlc3BvdXNlZCB3aWZlLCBiZWluZyBncmVhdCB3aXRoIGNoaWxkLgpBbmQgc28gaXQgd2FzLCB0aGF0LCB3aGlsZSB0aGV5IHdlcmUgdGhlcmUsIHRoZSBkYXlzIHdlcmUgYWNjb21wbGlzaGVkIHRoYXQgc2hlIHNob3VsZCBiZSBkZWxpdmVyZWQuCkFuZCBzaGUgYnJvdWdodCBmb3J0aCBoZXIgZmlyc3Rib3JuIHNvbiwgYW5kIHdyYXBwZWQgaGltIGluIHN3YWRkbGluZyBjbG90aGVzLCBhbmQgbGFpZCBoaW0gaW4gYSBtYW5nZXI7IGJlY2F1c2UgdGhlcmUgd2FzIG5vIHJvb20gZm9yIHRoZW0gaW4gdGhlIGlubi4KQW5kIHRoZXJlIHdlcmUgaW4gdGhlIHNhbWUgY291bnRyeSBzaGVwaGVyZHMgYWJpZGluZyBpbiB0aGUgZmllbGQsIGtlZXBpbmcgd2F0Y2ggb3ZlciB0aGVpciBmbG9jayBieSBuaWdodC4KQW5kLCBsbywgdGhlIGFuZ2VsIG9mIHRoZSBMb3JkIGNhbWUgdXBvbiB0aGVtLCBhbmQgdGhlIGdsb3J5IG9mIHRoZSBMb3JkIHNob25lIHJvdW5kIGFib3V0IHRoZW06IGFuZCB0aGV5IHdlcmUgc29yZSBhZnJhaWQuCkFuZCB0aGUgYW5nZWwgc2FpZCB1bnRvIHRoZW0sIEZlYXIgbm90OiBmb3IsIGJlaG9sZCwgSSBicmluZyB5b3UgZ29vZCB0aWRpbmdzIG9mIGdyZWF0IGpveSwgd2hpY2ggc2hhbGwgYmUgdG8gYWxsIHBlb3BsZS4KRm9yIHVudG8geW91IGlzIGJvcm4gdGhpcyBkYXkgaW4gdGhlIGNpdHkgb2YgRGF2aWQgYSBTYXZpb3VyLCB3aGljaCBpcyBDaHJpc3QgdGhlIExvcmQuCkFuZCB0aGlzIHNoYWxsIGJlIGEgc2lnbiB1bnRvIHlvdTsgWWUgc2hhbGwgZmluZCB0aGUgYmFiZSB3cmFwcGVkIGluIHN3YWRkbGluZyBjbG90aGVzLCBseWluZyBpbiBhIG1hbmdlci4KQW5kIHN1ZGRlbmx5IHRoZXJlIHdhcyB3aXRoIHRoZSBhbmdlbCBhIG11bHRpdHVkZSBvZiB0aGUgaGVhdmVubHkgaG9zdCBwcmFpc2luZyBHb2QsIGFuZCBzYXlpbmcsCkdsb3J5IHRvIEdvZCBpbiB0aGUgaGlnaGVzdCwgYW5kIG9uIGVhcnRoIHBlYWNlLCBnb29kIHdpbGwgdG93YXJkIG1lbi4KQW5kIGl0IGNhbWUgdG8gcGFzcywgYXMgdGhlIGFuZ2VscyB3ZXJlIGdvbmUgYXdheSBmcm9tIHRoZW0gaW50byBoZWF2ZW4sIHRoZSBzaGVwaGVyZHMgc2FpZCBvbmUgdG8gYW5vdGhlciwgTGV0IHVzIG5vdyBnbyBldmVuIHVudG8gQmV0aGxlaGVtLCBhbmQgc2VlIHRoaXMgdGhpbmcgd2hpY2ggaXMgY29tZSB0byBwYXNzLCB3aGljaCB0aGUgTG9yZCBoYXRoIG1hZGUga25vd24gdW50byB1cy4KQW5kIHRoZXkgY2FtZSB3aXRoIGhhc3RlLCBhbmQgZm91bmQgTWFyeSwgYW5kIEpvc2VwaCwgYW5kIHRoZSBiYWJlIGx5aW5nIGluIGEgbWFuZ2VyLgpBbmQgd2hlbiB0aGV5IGhhZCBzZWVuIGl0LCB0aGV5IG1hZGUga25vd24gYWJyb2FkIHRoZSBzYXlpbmcgd2hpY2ggd2FzIHRvbGQgdGhlbSBjb25jZXJuaW5nIHRoaXMgY2hpbGQuCkFuZCBhbGwgdGhleSB0aGF0IGhlYXJkIGl0IHdvbmRlcmVkIGF0IHRob3NlIHRoaW5ncyB3aGljaCB3ZXJlIHRvbGQgdGhlbSBieSB0aGUgc2hlcGhlcmRzLgpCdXQgTWFyeSBrZXB0IGFsbCB0aGVzZSB0aGluZ3MsIGFuZCBwb25kZXJlZCB0aGVtIGluIGhlciBoZWFydC4KQW5kIHRoZSBzaGVwaGVyZHMgcmV0dXJuZWQsIGdsb3JpZnlpbmcgYW5kIHByYWlzaW5nIEdvZCBmb3IgYWxsIHRoZSB0aGluZ3MgdGhhdCB0aGV5IGhhZCBoZWFyZCBhbmQgc2VlbiwgYXMgaXQgd2FzIHRvbGQgdW50byB0aGVtLgpBbmQgd2hlbiBlaWdodCBkYXlzIHdlcmUgYWNjb21wbGlzaGVkIGZvciB0aGUgY2lyY3VtY2lzaW5nIG9mIHRoZSBjaGlsZCwgaGlzIG5hbWUgd2FzIGNhbGxlZCBKRVNVUywgd2hpY2ggd2FzIHNvIG5hbWVkIG9mIHRoZSBhbmdlbCBiZWZvcmUgaGUgd2FzIGNvbmNlaXZlZCBpbiB0aGUgd29tYi4KQW5kIHdoZW4gdGhlIGRheXMgb2YgaGVyIHB1cmlmaWNhdGlvbiBhY2NvcmRpbmcgdG8gdGhlIGxhdyBvZiBNb3NlcyB3ZXJlIGFjY29tcGxpc2hlZCwgdGhleSBicm91Z2h0IGhpbSB0byBKZXJ1c2FsZW0sIHRvIHByZXNlbnQgaGltIHRvIHRoZSBMb3JkOwooQXMgaXQgaXMgd3JpdHRlbiBpbiB0aGUgbGF3IG9mIHRoZSBMT1JELCBFdmVyeSBtYWxlIHRoYXQgb3BlbmV0aCB0aGUgd29tYiBzaGFsbCBiZSBjYWxsZWQgaG9seSB0byB0aGUgTG9yZDspCkFuZCB0byBvZmZlciBhIHNhY3JpZmljZSBhY2NvcmRpbmcgdG8gdGhhdCB3aGljaCBpcyBzYWlkIGluIHRoZSBsYXcgb2YgdGhlIExvcmQsIEEgcGFpciBvZiB0dXJ0bGVkb3Zlcywgb3IgdHdvIHlvdW5nIHBpZ2VvbnMuCkFuZCwgYmVob2xkLCB0aGVyZSB3YXMgYSBtYW4gaW4gSmVydXNhbGVtLCB3aG9zZSBuYW1lIHdhcyBTaW1lb247IGFuZCB0aGUgc2FtZSBtYW4gd2FzIGp1c3QgYW5kIGRldm91dCwgd2FpdGluZyBmb3IgdGhlIGNvbnNvbGF0aW9uIG9mIElzcmFlbDogYW5kIHRoZSBIb2x5IEdob3N0IHdhcyB1cG9uIGhpbS4KQW5kIGl0IHdhcyByZXZlYWxlZCB1bnRvIGhpbSBieSB0aGUgSG9seSBHaG9zdCwgdGhhdCBoZSBzaG91bGQgbm90IHNlZSBkZWF0aCwgYmVmb3JlIGhlIGhhZCBzZWVuIHRoZSBMb3JkJ3MgQ2hyaXN0LgpBbmQgaGUgY2FtZSBieSB0aGUgU3Bpcml0IGludG8gdGhlIHRlbXBsZTogYW5kIHdoZW4gdGhlIHBhcmVudHMgYnJvdWdodCBpbiB0aGUgY2hpbGQgSmVzdXMsIHRvIGRvIGZvciBoaW0gYWZ0ZXIgdGhlIGN1c3RvbSBvZiB0aGUgbGF3LApUaGVuIHRvb2sgaGUgaGltIHVwIGluIGhpcyBhcm1zLCBhbmQgYmxlc3NlZCBHb2QsIGFuZCBzYWlkLApMb3JkLCBub3cgbGV0dGVzdCB0aG91IHRoeSBzZXJ2YW50IGRlcGFydCBpbiBwZWFjZSwgYWNjb3JkaW5nIHRvIHRoeSB3b3JkOgpGb3IgbWluZSBleWVzIGhhdmUgc2VlbiB0aHkgc2FsdmF0aW9uLApXaGljaCB0aG91IGhhc3QgcHJlcGFyZWQgYmVmb3JlIHRoZSBmYWNlIG9mIGFsbCBwZW9wbGU7CkEgbGlnaHQgdG8gbGlnaHRlbiB0aGUgR2VudGlsZXMsIGFuZCB0aGUgZ2xvcnkgb2YgdGh5IHBlb3BsZSBJc3JhZWwuCkFuZCBKb3NlcGggYW5kIGhpcyBtb3RoZXIgbWFydmVsbGVkIGF0IHRob3NlIHRoaW5ncyB3aGljaCB3ZXJlIHNwb2tlbiBvZiBoaW0uCkFuZCBTaW1lb24gYmxlc3NlZCB0aGVtLCBhbmQgc2FpZCB1bnRvIE1hcnkgaGlzIG1vdGhlciwgQmVob2xkLCB0aGlzIGNoaWxkIGlzIHNldCBmb3IgdGhlIGZhbGwgYW5kIHJpc2luZyBhZ2FpbiBvZiBtYW55IGluIElzcmFlbDsgYW5kIGZvciBhIHNpZ24gd2hpY2ggc2hhbGwgYmUgc3Bva2VuIGFnYWluc3Q7CihZZWEsIGEgc3dvcmQgc2hhbGwgcGllcmNlIHRocm91Z2ggdGh5IG93biBzb3VsIGFsc28sKSB0aGF0IHRoZSB0aG91Z2h0cyBvZiBtYW55IGhlYXJ0cyBtYXkgYmUgcmV2ZWFsZWQuCkFuZCB0aGVyZSB3YXMgb25lIEFubmEsIGEgcHJvcGhldGVzcywgdGhlIGRhdWdodGVyIG9mIFBoYW51ZWwsIG9mIHRoZSB0cmliZSBvZiBBc2VyOiBzaGUgd2FzIG9mIGEgZ3JlYXQgYWdlLCBhbmQgaGFkIGxpdmVkIHdpdGggYW4gaHVzYmFuZCBzZXZlbiB5ZWFycyBmcm9tIGhlciB2aXJnaW5pdHk7CkFuZCBzaGUgd2FzIGEgd2lkb3cgb2YgYWJvdXQgZm91cnNjb3JlIGFuZCBmb3VyIHllYXJzLCB3aGljaCBkZXBhcnRlZCBub3QgZnJvbSB0aGUgdGVtcGxlLCBidXQgc2VydmVkIEdvZCB3aXRoIGZhc3RpbmdzIGFuZCBwcmF5ZXJzIG5pZ2h0IGFuZCBkYXkuCkFuZCBzaGUgY29taW5nIGluIHRoYXQgaW5zdGFudCBnYXZlIHRoYW5rcyBsaWtld2lzZSB1bnRvIHRoZSBMb3JkLCBhbmQgc3Bha2Ugb2YgaGltIHRvIGFsbCB0aGVtIHRoYXQgbG9va2VkIGZvciByZWRlbXB0aW9uIGluIEplcnVzYWxlbS4KQW5kIHdoZW4gdGhleSBoYWQgcGVyZm9ybWVkIGFsbCB0aGluZ3MgYWNjb3JkaW5nIHRvIHRoZSBsYXcgb2YgdGhlIExvcmQsIHRoZXkgcmV0dXJuZWQgaW50byBHYWxpbGVlLCB0byB0aGVpciBvd24gY2l0eSBOYXphcmV0aC4KQW5kIHRoZSBjaGlsZCBncmV3LCBhbmQgd2F4ZWQgc3Ryb25nIGluIHNwaXJpdCwgZmlsbGVkIHdpdGggd2lzZG9tOiBhbmQgdGhlIGdyYWNlIG9mIEdvZCB3YXMgdXBvbiBoaW0uCk5vdyBoaXMgcGFyZW50cyB3ZW50IHRvIEplcnVzYWxlbSBldmVyeSB5ZWFyIGF0IHRoZSBmZWFzdCBvZiB0aGUgcGFzc292ZXIuCkFuZCB3aGVuIGhlIHdhcyB0d2VsdmUgeWVhcnMgb2xkLCB0aGV5IHdlbnQgdXAgdG8gSmVydXNhbGVtIGFmdGVyIHRoZSBjdXN0b20gb2YgdGhlIGZlYXN0LgpBbmQgd2hlbiB0aGV5IGhhZCBmdWxmaWxsZWQgdGhlIGRheXMsIGFzIHRoZXkgcmV0dXJuZWQsIHRoZSBjaGlsZCBKZXN1cyB0YXJyaWVkIGJlaGluZCBpbiBKZXJ1c2FsZW07IGFuZCBKb3NlcGggYW5kIGhpcyBtb3RoZXIga25ldyBub3Qgb2YgaXQuCkJ1dCB0aGV5LCBzdXBwb3NpbmcgaGltIHRvIGhhdmUgYmVlbiBpbiB0aGUgY29tcGFueSwgd2VudCBhIGRheSdzIGpvdXJuZXk7IGFuZCB0aGV5IHNvdWdodCBoaW0gYW1vbmcgdGhlaXIga2luc2ZvbGsgYW5kIGFjcXVhaW50YW5jZS4KQW5kIHdoZW4gdGhleSBmb3VuZCBoaW0gbm90LCB0aGV5IHR1cm5lZCBiYWNrIGFnYWluIHRvIEplcnVzYWxlbSwgc2Vla2luZyBoaW0uCkFuZCBpdCBjYW1lIHRvIHBhc3MsIHRoYXQgYWZ0ZXIgdGhyZWUgZGF5cyB0aGV5IGZvdW5kIGhpbSBpbiB0aGUgdGVtcGxlLCBzaXR0aW5nIGluIHRoZSBtaWRzdCBvZiB0aGUgZG9jdG9ycywgYm90aCBoZWFyaW5nIHRoZW0sIGFuZCBhc2tpbmcgdGhlbSBxdWVzdGlvbnMuCkFuZCBhbGwgdGhhdCBoZWFyZCBoaW0gd2VyZSBhc3RvbmlzaGVkIGF0IGhpcyB1bmRlcnN0YW5kaW5nIGFuZCBhbnN3ZXJzLgpBbmQgd2hlbiB0aGV5IHNhdyBoaW0sIHRoZXkgd2VyZSBhbWF6ZWQ6IGFuZCBoaXMgbW90aGVyIHNhaWQgdW50byBoaW0sIFNvbiwgd2h5IGhhc3QgdGhvdSB0aHVzIGRlYWx0IHdpdGggdXM/IGJlaG9sZCwgdGh5IGZhdGhlciBhbmQgSSBoYXZlIHNvdWdodCB0aGVlIHNvcnJvd2luZy4KQW5kIGhlIHNhaWQgdW50byB0aGVtLCBIb3cgaXMgaXQgdGhhdCB5ZSBzb3VnaHQgbWU/IHdpc3QgeWUgbm90IHRoYXQgSSBtdXN0IGJlIGFib3V0IG15IEZhdGhlcidzIGJ1c2luZXNzPwpBbmQgdGhleSB1bmRlcnN0b29kIG5vdCB0aGUgc2F5aW5nIHdoaWNoIGhlIHNwYWtlIHVudG8gdGhlbS4KQW5kIGhlIHdlbnQgZG93biB3aXRoIHRoZW0sIGFuZCBjYW1lIHRvIE5hemFyZXRoLCBhbmQgd2FzIHN1YmplY3QgdW50byB0aGVtOiBidXQgaGlzIG1vdGhlciBrZXB0IGFsbCB0aGVzZSBzYXlpbmdzIGluIGhlciBoZWFydC4KQW5kIEplc3VzIGluY3JlYXNlZCBpbiB3aXNkb20gYW5kIHN0YXR1cmUsIGFuZCBpbiBmYXZvdXIgd2l0aCBHb2QgYW5kIG1hbi4KTm93IGluIHRoZSBmaWZ0ZWVudGggeWVhciBvZiB0aGUgcmVpZ24gb2YgVGliZXJpdXMgQ2Flc2FyLCBQb250aXVzIFBpbGF0ZSBiZWluZyBnb3Zlcm5vciBvZiBKdWRhZWEsIGFuZCBIZXJvZCBiZWluZyB0ZXRyYXJjaCBvZiBHYWxpbGVlLCBhbmQgaGlzIGJyb3RoZXIgUGhpbGlwIHRldHJhcmNoIG9mIEl0dXJhZWEgYW5kIG9mIHRoZSByZWdpb24gb2YgVHJhY2hvbml0aXMsIGFuZCBMeXNhbmlhcyB0aGUgdGV0cmFyY2ggb2YgQWJpbGVuZSwKQW5uYXMgYW5kIENhaWFwaGFzIGJlaW5nIHRoZSBoaWdoIHByaWVzdHMsIHRoZSB3b3JkIG9mIEdvZCBjYW1lIHVudG8gSm9obiB0aGUgc29uIG9mIFphY2hhcmlhcyBpbiB0aGUgd2lsZGVybmVzcy4KQW5kIGhlIGNhbWUgaW50byBhbGwgdGhlIGNvdW50cnkgYWJvdXQgSm9yZGFuLCBwcmVhY2hpbmcgdGhlIGJhcHRpc20gb2YgcmVwZW50YW5jZSBmb3IgdGhlIHJlbWlzc2lvbiBvZiBzaW5zOwpBcyBpdCBpcyB3cml0dGVuIGluIHRoZSBib29rIG9mIHRoZSB3b3JkcyBvZiBFc2FpYXMgdGhlIHByb3BoZXQsIHNheWluZywgVGhlIHZvaWNlIG9mIG9uZSBjcnlpbmcgaW4gdGhlIHdpbGRlcm5lc3MsIFByZXBhcmUgeWUgdGhlIHdheSBvZiB0aGUgTG9yZCwgbWFrZSBoaXMgcGF0aHMgc3RyYWlnaHQuCkV2ZXJ5IHZhbGxleSBzaGFsbCBiZSBmaWxsZWQsIGFuZCBldmVyeSBtb3VudGFpbiBhbmQgaGlsbCBzaGFsbCBiZSBicm91Z2h0IGxvdzsgYW5kIHRoZSBjcm9va2VkIHNoYWxsIGJlIG1hZGUgc3RyYWlnaHQsIGFuZCB0aGUgcm91Z2ggd2F5cyBzaGFsbCBiZSBtYWRlIHNtb290aDsKQW5kIGFsbCBmbGVzaCBzaGFsbCBzZWUgdGhlIHNhbHZhdGlvbiBvZiBHb2QuClRoZW4gc2FpZCBoZSB0byB0aGUgbXVsdGl0dWRlIHRoYXQgY2FtZSBmb3J0aCB0byBiZSBiYXB0aXplZCBvZiBoaW0sIE8gZ2VuZXJhdGlvbiBvZiB2aXBlcnMsIHdobyBoYXRoIHdhcm5lZCB5b3UgdG8gZmxlZSBmcm9tIHRoZSB3cmF0aCB0byBjb21lPwpCcmluZyBmb3J0aCB0aGVyZWZvcmUgZnJ1aXRzIHdvcnRoeSBvZiByZXBlbnRhbmNlLCBhbmQgYmVnaW4gbm90IHRvIHNheSB3aXRoaW4geW91cnNlbHZlcywgV2UgaGF2ZSBBYnJhaGFtIHRvIG91ciBmYXRoZXI6IGZvciBJIHNheSB1bnRvIHlvdSwgVGhhdCBHb2QgaXMgYWJsZSBvZiB0aGVzZSBzdG9uZXMgdG8gcmFpc2UgdXAgY2hpbGRyZW4gdW50byBBYnJhaGFtLgpBbmQgbm93IGFsc28gdGhlIGF4ZSBpcyBsYWlkIHVudG8gdGhlIHJvb3Qgb2YgdGhlIHRyZWVzOiBldmVyeSB0cmVlIHRoZXJlZm9yZSB3aGljaCBicmluZ2V0aCBub3QgZm9ydGggZ29vZCBmcnVpdCBpcyBoZXduIGRvd24sIGFuZCBjYXN0IGludG8gdGhlIGZpcmUuCkFuZCB0aGUgcGVvcGxlIGFza2VkIGhpbSwgc2F5aW5nLCBXaGF0IHNoYWxsIHdlIGRvIHRoZW4/CkhlIGFuc3dlcmV0aCBhbmQgc2FpdGggdW50byB0aGVtLCBIZSB0aGF0IGhhdGggdHdvIGNvYXRzLCBsZXQgaGltIGltcGFydCB0byBoaW0gdGhhdCBoYXRoIG5vbmU7IGFuZCBoZSB0aGF0IGhhdGggbWVhdCwgbGV0IGhpbSBkbyBsaWtld2lzZS4KVGhlbiBjYW1lIGFsc28gcHVibGljYW5zIHRvIGJlIGJhcHRpemVkLCBhbmQgc2FpZCB1bnRvIGhpbSwgTWFzdGVyLCB3aGF0IHNoYWxsIHdlIGRvPwpBbmQgaGUgc2FpZCB1bnRvIHRoZW0sIEV4YWN0IG5vIG1vcmUgdGhhbiB0aGF0IHdoaWNoIGlzIGFwcG9pbnRlZCB5b3UuCkFuZCB0aGUgc29sZGllcnMgbGlrZXdpc2UgZGVtYW5kZWQgb2YgaGltLCBzYXlpbmcsIEFuZCB3aGF0IHNoYWxsIHdlIGRvPyBBbmQgaGUgc2FpZCB1bnRvIHRoZW0sIERvIHZpb2xlbmNlIHRvIG5vIG1hbiwgbmVpdGhlciBhY2N1c2UgYW55IGZhbHNlbHk7IGFuZCBiZSBjb250ZW50IHdpdGggeW91ciB3YWdlcy4KQW5kIGFzIHRoZSBwZW9wbGUgd2VyZSBpbiBleHBlY3RhdGlvbiwgYW5kIGFsbCBtZW4gbXVzZWQgaW4gdGhlaXIgaGVhcnRzIG9mIEpvaG4sIHdoZXRoZXIgaGUgd2VyZSB0aGUgQ2hyaXN0LCBvciBub3Q7CkpvaG4gYW5zd2VyZWQsIHNheWluZyB1bnRvIHRoZW0gYWxsLCBJIGluZGVlZCBiYXB0aXplIHlvdSB3aXRoIHdhdGVyOyBidXQgb25lIG1pZ2h0aWVyIHRoYW4gSSBjb21ldGgsIHRoZSBsYXRjaGV0IG9mIHdob3NlIHNob2VzIEkgYW0gbm90IHdvcnRoeSB0byB1bmxvb3NlOiBoZSBzaGFsbCBiYXB0aXplIHlvdSB3aXRoIHRoZSBIb2x5IEdob3N0IGFuZCB3aXRoIGZpcmU6Cldob3NlIGZhbiBpcyBpbiBoaXMgaGFuZCwgYW5kIGhlIHdpbGwgdGhyb3VnaGx5IHB1cmdlIGhpcyBmbG9vciwgYW5kIHdpbGwgZ2F0aGVyIHRoZSB3aGVhdCBpbnRvIGhpcyBnYXJuZXI7IGJ1dCB0aGUgY2hhZmYgaGUgd2lsbCBidXJuIHdpdGggZmlyZSB1bnF1ZW5jaGFibGUuCkFuZCBtYW55IG90aGVyIHRoaW5ncyBpbiBoaXMgZXhob3J0YXRpb24gcHJlYWNoZWQgaGUgdW50byB0aGUgcGVvcGxlLgpCdXQgSGVyb2QgdGhlIHRldHJhcmNoLCBiZWluZyByZXByb3ZlZCBieSBoaW0gZm9yIEhlcm9kaWFzIGhpcyBicm90aGVyIFBoaWxpcCdzIHdpZmUsIGFuZCBmb3IgYWxsIHRoZSBldmlscyB3aGljaCBIZXJvZCBoYWQgZG9uZSwKQWRkZWQgeWV0IHRoaXMgYWJvdmUgYWxsLCB0aGF0IGhlIHNodXQgdXAgSm9obiBpbiBwcmlzb24uCk5vdyB3aGVuIGFsbCB0aGUgcGVvcGxlIHdlcmUgYmFwdGl6ZWQsIGl0IGNhbWUgdG8gcGFzcywgdGhhdCBKZXN1cyBhbHNvIGJlaW5nIGJhcHRpemVkLCBhbmQgcHJheWluZywgdGhlIGhlYXZlbiB3YXMgb3BlbmVkLApBbmQgdGhlIEhvbHkgR2hvc3QgZGVzY2VuZGVkIGluIGEgYm9kaWx5IHNoYXBlIGxpa2UgYSBkb3ZlIHVwb24gaGltLCBhbmQgYSB2b2ljZSBjYW1lIGZyb20gaGVhdmVuLCB3aGljaCBzYWlkLCBUaG91IGFydCBteSBiZWxvdmVkIFNvbjsgaW4gdGhlZSBJIGFtIHdlbGwgcGxlYXNlZC4KQW5kIEplc3VzIGhpbXNlbGYgYmVnYW4gdG8gYmUgYWJvdXQgdGhpcnR5IHllYXJzIG9mIGFnZSwgYmVpbmcgKGFzIHdhcyBzdXBwb3NlZCkgdGhlIHNvbiBvZiBKb3NlcGgsIHdoaWNoIHdhcyB0aGUgc29uIG9mIEhlbGksCldoaWNoIHdhcyB0aGUgc29uIG9mIE1hdHRoYXQsIHdoaWNoIHdhcyB0aGUgc29uIG9mIExldmksIHdoaWNoIHdhcyB0aGUgc29uIG9mIE1lbGNoaSwgd2hpY2ggd2FzIHRoZSBzb24gb2YgSmFubmEsIHdoaWNoIHdhcyB0aGUgc29uIG9mIEpvc2VwaCwKV2hpY2ggd2FzIHRoZSBzb24gb2YgTWF0dGF0aGlhcywgd2hpY2ggd2FzIHRoZSBzb24gb2YgQW1vcywgd2hpY2ggd2FzIHRoZSBzb24gb2YgTmF1bSwgd2hpY2ggd2FzIHRoZSBzb24gb2YgRXNsaSwgd2hpY2ggd2FzIHRoZSBzb24gb2YgTmFnZ2UsCldoaWNoIHdhcyB0aGUgc29uIG9mIE1hYXRoLCB3aGljaCB3YXMgdGhlIHNvbiBvZiBNYXR0YXRoaWFzLCB3aGljaCB3YXMgdGhlIHNvbiBvZiBTZW1laSwgd2hpY2ggd2FzIHRoZSBzb24gb2YgSm9zZXBoLCB3aGljaCB3YXMgdGhlIHNvbiBvZiBKdWRhLApXaGljaCB3YXMgdGhlIHNvbiBvZiBKb2FubmEsIHdoaWNoIHdhcyB0aGUgc29uIG9mIFJoZXNhLCB3aGljaCB3YXMgdGhlIHNvbiBvZiBab3JvYmFiZWwsIHdoaWNoIHdhcyB0aGUgc29uIG9mIFNhbGF0aGllbCwgd2hpY2ggd2FzIHRoZSBzb24gb2YgTmVyaSwKV2hpY2ggd2FzIHRoZSBzb24gb2YgTWVsY2hpLCB3aGljaCB3YXMgdGhlIHNvbiBvZiBBZGRpLCB3aGljaCB3YXMgdGhlIHNvbiBvZiBDb3NhbSwgd2hpY2ggd2FzIHRoZSBzb24gb2YgRWxtb2RhbSwgd2hpY2ggd2FzIHRoZSBzb24gb2YgRXIsCldoaWNoIHdhcyB0aGUgc29uIG9mIEpvc2UsIHdoaWNoIHdhcyB0aGUgc29uIG9mIEVsaWV6ZXIsIHdoaWNoIHdhcyB0aGUgc29uIG9mIEpvcmltLCB3aGljaCB3YXMgdGhlIHNvbiBvZiBNYXR0aGF0LCB3aGljaCB3YXMgdGhlIHNvbiBvZiBMZXZpLApXaGljaCB3YXMgdGhlIHNvbiBvZiBTaW1lb24sIHdoaWNoIHdhcyB0aGUgc29uIG9mIEp1ZGEsIHdoaWNoIHdhcyB0aGUgc29uIG9mIEpvc2VwaCwgd2hpY2ggd2FzIHRoZSBzb24gb2YgSm9uYW4sIHdoaWNoIHdhcyB0aGUgc29uIG9mIEVsaWFraW0sCldoaWNoIHdhcyB0aGUgc29uIG9mIE1lbGVhLCB3aGljaCB3YXMgdGhlIHNvbiBvZiBNZW5hbiwgd2hpY2ggd2FzIHRoZSBzb24gb2YgTWF0dGF0aGEsIHdoaWNoIHdhcyB0aGUgc29uIG9mIE5hdGhhbiwgd2hpY2ggd2FzIHRoZSBzb24gb2YgRGF2aWQsCldoaWNoIHdhcyB0aGUgc29uIG9mIEplc3NlLCB3aGljaCB3YXMgdGhlIHNvbiBvZiBPYmVkLCB3aGljaCB3YXMgdGhlIHNvbiBvZiBCb296LCB3aGljaCB3YXMgdGhlIHNvbiBvZiBTYWxtb24sIHdoaWNoIHdhcyB0aGUgc29uIG9mIE5hYXNzb24sCldoaWNoIHdhcyB0aGUgc29uIG9mIEFtaW5hZGFiLCB3aGljaCB3YXMgdGhlIHNvbiBvZiBBcmFtLCB3aGljaCB3YXMgdGhlIHNvbiBvZiBFc3JvbSwgd2hpY2ggd2FzIHRoZSBzb24gb2YgUGhhcmVzLCB3aGljaCB3YXMgdGhlIHNvbiBvZiBKdWRhLApXaGljaCB3YXMgdGhlIHNvbiBvZiBKYWNvYiwgd2hpY2ggd2FzIHRoZSBzb24gb2YgSXNhYWMsIHdoaWNoIHdhcyB0aGUgc29uIG9mIEFicmFoYW0sIHdoaWNoIHdhcyB0aGUgc29uIG9mIFRoYXJhLCB3aGljaCB3YXMgdGhlIHNvbiBvZiBOYWNob3IsCldoaWNoIHdhcyB0aGUgc29uIG9mIFNhcnVjaCwgd2hpY2ggd2FzIHRoZSBzb24gb2YgUmFnYXUsIHdoaWNoIHdhcyB0aGUgc29uIG9mIFBoYWxlYywgd2hpY2ggd2FzIHRoZSBzb24gb2YgSGViZXIsIHdoaWNoIHdhcyB0aGUgc29uIG9mIFNhbGEsCldoaWNoIHdhcyB0aGUgc29uIG9mIENhaW5hbiwgd2hpY2ggd2FzIHRoZSBzb24gb2YgQXJwaGF4YWQsIHdoaWNoIHdhcyB0aGUgc29uIG9mIFNlbSwgd2hpY2ggd2FzIHRoZSBzb24gb2YgTm9lLCB3aGljaCB3YXMgdGhlIHNvbiBvZiBMYW1lY2gsCldoaWNoIHdhcyB0aGUgc29uIG9mIE1hdGh1c2FsYSwgd2hpY2ggd2FzIHRoZSBzb24gb2YgRW5vY2gsIHdoaWNoIHdhcyB0aGUgc29uIG9mIEphcmVkLCB3aGljaCB3YXMgdGhlIHNvbiBvZiBNYWxlbGVlbCwgd2hpY2ggd2FzIHRoZSBzb24gb2YgQ2FpbmFuLApXaGljaCB3YXMgdGhlIHNvbiBvZiBFbm9zLCB3aGljaCB3YXMgdGhlIHNvbiBvZiBTZXRoLCB3aGljaCB3YXMgdGhlIHNvbiBvZiBBZGFtLCB3aGljaCB3YXMgdGhlIHNvbiBvZiBHb2QuCkFuZCBKZXN1cyBiZWluZyBmdWxsIG9mIHRoZSBIb2x5IEdob3N0IHJldHVybmVkIGZyb20gSm9yZGFuLCBhbmQgd2FzIGxlZCBieSB0aGUgU3Bpcml0IGludG8gdGhlIHdpbGRlcm5lc3MsCkJlaW5nIGZvcnR5IGRheXMgdGVtcHRlZCBvZiB0aGUgZGV2aWwuIEFuZCBpbiB0aG9zZSBkYXlzIGhlIGRpZCBlYXQgbm90aGluZzogYW5kIHdoZW4gdGhleSB3ZXJlIGVuZGVkLCBoZSBhZnRlcndhcmQgaHVuZ2VyZWQuCkFuZCB0aGUgZGV2aWwgc2FpZCB1bnRvIGhpbSwgSWYgdGhvdSBiZSB0aGUgU29uIG9mIEdvZCwgY29tbWFuZCB0aGlzIHN0b25lIHRoYXQgaXQgYmUgbWFkZSBicmVhZC4KQW5kIEplc3VzIGFuc3dlcmVkIGhpbSwgc2F5aW5nLCBJdCBpcyB3cml0dGVuLCBUaGF0IG1hbiBzaGFsbCBub3QgbGl2ZSBieSBicmVhZCBhbG9uZSwgYnV0IGJ5IGV2ZXJ5IHdvcmQgb2YgR29kLgpBbmQgdGhlIGRldmlsLCB0YWtpbmcgaGltIHVwIGludG8gYW4gaGlnaCBtb3VudGFpbiwgc2hld2VkIHVudG8gaGltIGFsbCB0aGUga2luZ2RvbXMgb2YgdGhlIHdvcmxkIGluIGEgbW9tZW50IG9mIHRpbWUuCkFuZCB0aGUgZGV2aWwgc2FpZCB1bnRvIGhpbSwgQWxsIHRoaXMgcG93ZXIgd2lsbCBJIGdpdmUgdGhlZSwgYW5kIHRoZSBnbG9yeSBvZiB0aGVtOiBmb3IgdGhhdCBpcyBkZWxpdmVyZWQgdW50byBtZTsgYW5kIHRvIHdob21zb2V2ZXIgSSB3aWxsIEkgZ2l2ZSBpdC4KSWYgdGhvdSB0aGVyZWZvcmUgd2lsdCB3b3JzaGlwIG1lLCBhbGwgc2hhbGwgYmUgdGhpbmUuCkFuZCBKZXN1cyBhbnN3ZXJlZCBhbmQgc2FpZCB1bnRvIGhpbSwgR2V0IHRoZWUgYmVoaW5kIG1lLCBTYXRhbjogZm9yIGl0IGlzIHdyaXR0ZW4sIFRob3Ugc2hhbHQgd29yc2hpcCB0aGUgTG9yZCB0aHkgR29kLCBhbmQgaGltIG9ubHkgc2hhbHQgdGhvdSBzZXJ2ZS4KQW5kIGhlIGJyb3VnaHQgaGltIHRvIEplcnVzYWxlbSwgYW5kIHNldCBoaW0gb24gYSBwaW5uYWNsZSBvZiB0aGUgdGVtcGxlLCBhbmQgc2FpZCB1bnRvIGhpbSwgSWYgdGhvdSBiZSB0aGUgU29uIG9mIEdvZCwgY2FzdCB0aHlzZWxmIGRvd24gZnJvbSBoZW5jZToKRm9yIGl0IGlzIHdyaXR0ZW4sIEhlIHNoYWxsIGdpdmUgaGlzIGFuZ2VscyBjaGFyZ2Ugb3ZlciB0aGVlLCB0byBrZWVwIHRoZWU6CkFuZCBpbiB0aGVpciBoYW5kcyB0aGV5IHNoYWxsIGJlYXIgdGhlZSB1cCwgbGVzdCBhdCBhbnkgdGltZSB0aG91IGRhc2ggdGh5IGZvb3QgYWdhaW5zdCBhIHN0b25lLgpBbmQgSmVzdXMgYW5zd2VyaW5nIHNhaWQgdW50byBoaW0sIEl0IGlzIHNhaWQsIFRob3Ugc2hhbHQgbm90IHRlbXB0IHRoZSBMb3JkIHRoeSBHb2QuCkFuZCB3aGVuIHRoZSBkZXZpbCBoYWQgZW5kZWQgYWxsIHRoZSB0ZW1wdGF0aW9uLCBoZSBkZXBhcnRlZCBmcm9tIGhpbSBmb3IgYSBzZWFzb24uCkFuZCBKZXN1cyByZXR1cm5lZCBpbiB0aGUgcG93ZXIgb2YgdGhlIFNwaXJpdCBpbnRvIEdhbGlsZWU6IGFuZCB0aGVyZSB3ZW50IG91dCBhIGZhbWUgb2YgaGltIHRocm91Z2ggYWxsIHRoZSByZWdpb24gcm91bmQgYWJvdXQuCkFuZCBoZSB0YXVnaHQgaW4gdGhlaXIgc3luYWdvZ3VlcywgYmVpbmcgZ2xvcmlmaWVkIG9mIGFsbC4KQW5kIGhlIGNhbWUgdG8gTmF6YXJldGgsIHdoZXJlIGhlIGhhZCBiZWVuIGJyb3VnaHQgdXA6IGFuZCwgYXMgaGlzIGN1c3RvbSB3YXMsIGhlIHdlbnQgaW50byB0aGUgc3luYWdvZ3VlIG9uIHRoZSBzYWJiYXRoIGRheSwgYW5kIHN0b29kIHVwIGZvciB0byByZWFkLgpBbmQgdGhlcmUgd2FzIGRlbGl2ZXJlZCB1bnRvIGhpbSB0aGUgYm9vayBvZiB0aGUgcHJvcGhldCBFc2FpYXMuIEFuZCB3aGVuIGhlIGhhZCBvcGVuZWQgdGhlIGJvb2ssIGhlIGZvdW5kIHRoZSBwbGFjZSB3aGVyZSBpdCB3YXMgd3JpdHRlbiwKVGhlIFNwaXJpdCBvZiB0aGUgTG9yZCBpcyB1cG9uIG1lLCBiZWNhdXNlIGhlIGhhdGggYW5vaW50ZWQgbWUgdG8gcHJlYWNoIHRoZSBnb3NwZWwgdG8gdGhlIHBvb3I7IGhlIGhhdGggc2VudCBtZSB0byBoZWFsIHRoZSBicm9rZW5oZWFydGVkLCB0byBwcmVhY2ggZGVsaXZlcmFuY2UgdG8gdGhlIGNhcHRpdmVzLCBhbmQgcmVjb3ZlcmluZyBvZiBzaWdodCB0byB0aGUgYmxpbmQsIHRvIHNldCBhdCBsaWJlcnR5IHRoZW0gdGhhdCBhcmUgYnJ1aXNlZCwKVG8gcHJlYWNoIHRoZSBhY2NlcHRhYmxlIHllYXIgb2YgdGhlIExvcmQuCkFuZCBoZSBjbG9zZWQgdGhlIGJvb2ssIGFuZCBoZSBnYXZlIGl0IGFnYWluIHRvIHRoZSBtaW5pc3RlciwgYW5kIHNhdCBkb3duLiBBbmQgdGhlIGV5ZXMgb2YgYWxsIHRoZW0gdGhhdCB3ZXJlIGluIHRoZSBzeW5hZ29ndWUgd2VyZSBmYXN0ZW5lZCBvbiBoaW0uCkFuZCBoZSBiZWdhbiB0byBzYXkgdW50byB0aGVtLCBUaGlzIGRheSBpcyB0aGlzIHNjcmlwdHVyZSBmdWxmaWxsZWQgaW4geW91ciBlYXJzLgpBbmQgYWxsIGJhcmUgaGltIHdpdG5lc3MsIGFuZCB3b25kZXJlZCBhdCB0aGUgZ3JhY2lvdXMgd29yZHMgd2hpY2ggcHJvY2VlZGVkIG91dCBvZiBoaXMgbW91dGguIEFuZCB0aGV5IHNhaWQsIElzIG5vdCB0aGlzIEpvc2VwaCdzIHNvbj8KQW5kIGhlIHNhaWQgdW50byB0aGVtLCBZZSB3aWxsIHN1cmVseSBzYXkgdW50byBtZSB0aGlzIHByb3ZlcmIsIFBoeXNpY2lhbiwgaGVhbCB0aHlzZWxmOiB3aGF0c29ldmVyIHdlIGhhdmUgaGVhcmQgZG9uZSBpbiBDYXBlcm5hdW0sIGRvIGFsc28gaGVyZSBpbiB0aHkgY291bnRyeS4KQW5kIGhlIHNhaWQsIFZlcmlseSBJIHNheSB1bnRvIHlvdSwgTm8gcHJvcGhldCBpcyBhY2NlcHRlZCBpbiBoaXMgb3duIGNvdW50cnkuCkJ1dCBJIHRlbGwgeW91IG9mIGEgdHJ1dGgsIG1hbnkgd2lkb3dzIHdlcmUgaW4gSXNyYWVsIGluIHRoZSBkYXlzIG9mIEVsaWFzLCB3aGVuIHRoZSBoZWF2ZW4gd2FzIHNodXQgdXAgdGhyZWUgeWVhcnMgYW5kIHNpeCBtb250aHMsIHdoZW4gZ3JlYXQgZmFtaW5lIHdhcyB0aHJvdWdob3V0IGFsbCB0aGUgbGFuZDsKQnV0IHVudG8gbm9uZSBvZiB0aGVtIHdhcyBFbGlhcyBzZW50LCBzYXZlIHVudG8gU2FyZXB0YSwgYSBjaXR5IG9mIFNpZG9uLCB1bnRvIGEgd29tYW4gdGhhdCB3YXMgYSB3aWRvdy4KQW5kIG1hbnkgbGVwZXJzIHdlcmUgaW4gSXNyYWVsIGluIHRoZSB0aW1lIG9mIEVsaXNldXMgdGhlIHByb3BoZXQ7IGFuZCBub25lIG9mIHRoZW0gd2FzIGNsZWFuc2VkLCBzYXZpbmcgTmFhbWFuIHRoZSBTeXJpYW4uCkFuZCBhbGwgdGhleSBpbiB0aGUgc3luYWdvZ3VlLCB3aGVuIHRoZXkgaGVhcmQgdGhlc2UgdGhpbmdzLCB3ZXJlIGZpbGxlZCB3aXRoIHdyYXRoLApBbmQgcm9zZSB1cCwgYW5kIHRocnVzdCBoaW0gb3V0IG9mIHRoZSBjaXR5LCBhbmQgbGVkIGhpbSB1bnRvIHRoZSBicm93IG9mIHRoZSBoaWxsIHdoZXJlb24gdGhlaXIgY2l0eSB3YXMgYnVpbHQsIHRoYXQgdGhleSBtaWdodCBjYXN0IGhpbSBkb3duIGhlYWRsb25nLgpCdXQgaGUgcGFzc2luZyB0aHJvdWdoIHRoZSBtaWRzdCBvZiB0aGVtIHdlbnQgaGlzIHdheSwKQW5kIGNhbWUgZG93biB0byBDYXBlcm5hdW0sIGEgY2l0eSBvZiBHYWxpbGVlLCBhbmQgdGF1Z2h0IHRoZW0gb24gdGhlIHNhYmJhdGggZGF5cy4KQW5kIHRoZXkgd2VyZSBhc3RvbmlzaGVkIGF0IGhpcyBkb2N0cmluZTogZm9yIGhpcyB3b3JkIHdhcyB3aXRoIHBvd2VyLgpBbmQgaW4gdGhlIHN5bmFnb2d1ZSB0aGVyZSB3YXMgYSBtYW4sIHdoaWNoIGhhZCBhIHNwaXJpdCBvZiBhbiB1bmNsZWFuIGRldmlsLCBhbmQgY3JpZWQgb3V0IHdpdGggYSBsb3VkIHZvaWNlLApTYXlpbmcsIExldCB1cyBhbG9uZTsgd2hhdCBoYXZlIHdlIHRvIGRvIHdpdGggdGhlZSwgdGhvdSBKZXN1cyBvZiBOYXphcmV0aD8gYXJ0IHRob3UgY29tZSB0byBkZXN0cm95IHVzPyBJIGtub3cgdGhlZSB3aG8gdGhvdSBhcnQ7IHRoZSBIb2x5IE9uZSBvZiBHb2QuCkFuZCBKZXN1cyByZWJ1a2VkIGhpbSwgc2F5aW5nLCBIb2xkIHRoeSBwZWFjZSwgYW5kIGNvbWUgb3V0IG9mIGhpbS4gQW5kIHdoZW4gdGhlIGRldmlsIGhhZCB0aHJvd24gaGltIGluIHRoZSBtaWRzdCwgaGUgY2FtZSBvdXQgb2YgaGltLCBhbmQgaHVydCBoaW0gbm90LgpBbmQgdGhleSB3ZXJlIGFsbCBhbWF6ZWQsIGFuZCBzcGFrZSBhbW9uZyB0aGVtc2VsdmVzLCBzYXlpbmcsIFdoYXQgYSB3b3JkIGlzIHRoaXMhIGZvciB3aXRoIGF1dGhvcml0eSBhbmQgcG93ZXIgaGUgY29tbWFuZGV0aCB0aGUgdW5jbGVhbiBzcGlyaXRzLCBhbmQgdGhleSBjb21lIG91dC4KQW5kIHRoZSBmYW1lIG9mIGhpbSB3ZW50IG91dCBpbnRvIGV2ZXJ5IHBsYWNlIG9mIHRoZSBjb3VudHJ5IHJvdW5kIGFib3V0LgpBbmQgaGUgYXJvc2Ugb3V0IG9mIHRoZSBzeW5hZ29ndWUsIGFuZCBlbnRlcmVkIGludG8gU2ltb24ncyBob3VzZS4gQW5kIFNpbW9uJ3Mgd2lmZSdzIG1vdGhlciB3YXMgdGFrZW4gd2l0aCBhIGdyZWF0IGZldmVyOyBhbmQgdGhleSBiZXNvdWdodCBoaW0gZm9yIGhlci4KQW5kIGhlIHN0b29kIG92ZXIgaGVyLCBhbmQgcmVidWtlZCB0aGUgZmV2ZXI7IGFuZCBpdCBsZWZ0IGhlcjogYW5kIGltbWVkaWF0ZWx5IHNoZSBhcm9zZSBhbmQgbWluaXN0ZXJlZCB1bnRvIHRoZW0uCk5vdyB3aGVuIHRoZSBzdW4gd2FzIHNldHRpbmcsIGFsbCB0aGV5IHRoYXQgaGFkIGFueSBzaWNrIHdpdGggZGl2ZXJzIGRpc2Vhc2VzIGJyb3VnaHQgdGhlbSB1bnRvIGhpbTsgYW5kIGhlIGxhaWQgaGlzIGhhbmRzIG9uIGV2ZXJ5IG9uZSBvZiB0aGVtLCBhbmQgaGVhbGVkIHRoZW0uCkFuZCBkZXZpbHMgYWxzbyBjYW1lIG91dCBvZiBtYW55LCBjcnlpbmcgb3V0LCBhbmQgc2F5aW5nLCBUaG91IGFydCBDaHJpc3QgdGhlIFNvbiBvZiBHb2QuIEFuZCBoZSByZWJ1a2luZyB0aGVtIHN1ZmZlcmVkIHRoZW0gbm90IHRvIHNwZWFrOiBmb3IgdGhleSBrbmV3IHRoYXQgaGUgd2FzIENocmlzdC4KQW5kIHdoZW4gaXQgd2FzIGRheSwgaGUgZGVwYXJ0ZWQgYW5kIHdlbnQgaW50byBhIGRlc2VydCBwbGFjZTogYW5kIHRoZSBwZW9wbGUgc291Z2h0IGhpbSwgYW5kIGNhbWUgdW50byBoaW0sIGFuZCBzdGF5ZWQgaGltLCB0aGF0IGhlIHNob3VsZCBub3QgZGVwYXJ0IGZyb20gdGhlbS4KQW5kIGhlIHNhaWQgdW50byB0aGVtLCBJIG11c3QgcHJlYWNoIHRoZSBraW5nZG9tIG9mIEdvZCB0byBvdGhlciBjaXRpZXMgYWxzbzogZm9yIHRoZXJlZm9yZSBhbSBJIHNlbnQuCkFuZCBoZSBwcmVhY2hlZCBpbiB0aGUgc3luYWdvZ3VlcyBvZiBHYWxpbGVlLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB0aGF0LCBhcyB0aGUgcGVvcGxlIHByZXNzZWQgdXBvbiBoaW0gdG8gaGVhciB0aGUgd29yZCBvZiBHb2QsIGhlIHN0b29kIGJ5IHRoZSBsYWtlIG9mIEdlbm5lc2FyZXQsCkFuZCBzYXcgdHdvIHNoaXBzIHN0YW5kaW5nIGJ5IHRoZSBsYWtlOiBidXQgdGhlIGZpc2hlcm1lbiB3ZXJlIGdvbmUgb3V0IG9mIHRoZW0sIGFuZCB3ZXJlIHdhc2hpbmcgdGhlaXIgbmV0cy4KQW5kIGhlIGVudGVyZWQgaW50byBvbmUgb2YgdGhlIHNoaXBzLCB3aGljaCB3YXMgU2ltb24ncywgYW5kIHByYXllZCBoaW0gdGhhdCBoZSB3b3VsZCB0aHJ1c3Qgb3V0IGEgbGl0dGxlIGZyb20gdGhlIGxhbmQuIEFuZCBoZSBzYXQgZG93biwgYW5kIHRhdWdodCB0aGUgcGVvcGxlIG91dCBvZiB0aGUgc2hpcC4KTm93IHdoZW4gaGUgaGFkIGxlZnQgc3BlYWtpbmcsIGhlIHNhaWQgdW50byBTaW1vbiwgTGF1bmNoIG91dCBpbnRvIHRoZSBkZWVwLCBhbmQgbGV0IGRvd24geW91ciBuZXRzIGZvciBhIGRyYXVnaHQuCkFuZCBTaW1vbiBhbnN3ZXJpbmcgc2FpZCB1bnRvIGhpbSwgTWFzdGVyLCB3ZSBoYXZlIHRvaWxlZCBhbGwgdGhlIG5pZ2h0LCBhbmQgaGF2ZSB0YWtlbiBub3RoaW5nOiBuZXZlcnRoZWxlc3MgYXQgdGh5IHdvcmQgSSB3aWxsIGxldCBkb3duIHRoZSBuZXQuCkFuZCB3aGVuIHRoZXkgaGFkIHRoaXMgZG9uZSwgdGhleSBpbmNsb3NlZCBhIGdyZWF0IG11bHRpdHVkZSBvZiBmaXNoZXM6IGFuZCB0aGVpciBuZXQgYnJha2UuCkFuZCB0aGV5IGJlY2tvbmVkIHVudG8gdGhlaXIgcGFydG5lcnMsIHdoaWNoIHdlcmUgaW4gdGhlIG90aGVyIHNoaXAsIHRoYXQgdGhleSBzaG91bGQgY29tZSBhbmQgaGVscCB0aGVtLiBBbmQgdGhleSBjYW1lLCBhbmQgZmlsbGVkIGJvdGggdGhlIHNoaXBzLCBzbyB0aGF0IHRoZXkgYmVnYW4gdG8gc2luay4KV2hlbiBTaW1vbiBQZXRlciBzYXcgaXQsIGhlIGZlbGwgZG93biBhdCBKZXN1cycga25lZXMsIHNheWluZywgRGVwYXJ0IGZyb20gbWU7IGZvciBJIGFtIGEgc2luZnVsIG1hbiwgTyBMb3JkLgpGb3IgaGUgd2FzIGFzdG9uaXNoZWQsIGFuZCBhbGwgdGhhdCB3ZXJlIHdpdGggaGltLCBhdCB0aGUgZHJhdWdodCBvZiB0aGUgZmlzaGVzIHdoaWNoIHRoZXkgaGFkIHRha2VuOgpBbmQgc28gd2FzIGFsc28gSmFtZXMsIGFuZCBKb2huLCB0aGUgc29ucyBvZiBaZWJlZGVlLCB3aGljaCB3ZXJlIHBhcnRuZXJzIHdpdGggU2ltb24uIEFuZCBKZXN1cyBzYWlkIHVudG8gU2ltb24sIEZlYXIgbm90OyBmcm9tIGhlbmNlZm9ydGggdGhvdSBzaGFsdCBjYXRjaCBtZW4uCkFuZCB3aGVuIHRoZXkgaGFkIGJyb3VnaHQgdGhlaXIgc2hpcHMgdG8gbGFuZCwgdGhleSBmb3Jzb29rIGFsbCwgYW5kIGZvbGxvd2VkIGhpbS4KQW5kIGl0IGNhbWUgdG8gcGFzcywgd2hlbiBoZSB3YXMgaW4gYSBjZXJ0YWluIGNpdHksIGJlaG9sZCBhIG1hbiBmdWxsIG9mIGxlcHJvc3k6IHdobyBzZWVpbmcgSmVzdXMgZmVsbCBvbiBoaXMgZmFjZSwgYW5kIGJlc291Z2h0IGhpbSwgc2F5aW5nLCBMb3JkLCBpZiB0aG91IHdpbHQsIHRob3UgY2Fuc3QgbWFrZSBtZSBjbGVhbi4KQW5kIGhlIHB1dCBmb3J0aCBoaXMgaGFuZCwgYW5kIHRvdWNoZWQgaGltLCBzYXlpbmcsIEkgd2lsbDogYmUgdGhvdSBjbGVhbi4gQW5kIGltbWVkaWF0ZWx5IHRoZSBsZXByb3N5IGRlcGFydGVkIGZyb20gaGltLgpBbmQgaGUgY2hhcmdlZCBoaW0gdG8gdGVsbCBubyBtYW46IGJ1dCBnbywgYW5kIHNoZXcgdGh5c2VsZiB0byB0aGUgcHJpZXN0LCBhbmQgb2ZmZXIgZm9yIHRoeSBjbGVhbnNpbmcsIGFjY29yZGluZyBhcyBNb3NlcyBjb21tYW5kZWQsIGZvciBhIHRlc3RpbW9ueSB1bnRvIHRoZW0uCkJ1dCBzbyBtdWNoIHRoZSBtb3JlIHdlbnQgdGhlcmUgYSBmYW1lIGFicm9hZCBvZiBoaW06IGFuZCBncmVhdCBtdWx0aXR1ZGVzIGNhbWUgdG9nZXRoZXIgdG8gaGVhciwgYW5kIHRvIGJlIGhlYWxlZCBieSBoaW0gb2YgdGhlaXIgaW5maXJtaXRpZXMuCkFuZCBoZSB3aXRoZHJldyBoaW1zZWxmIGludG8gdGhlIHdpbGRlcm5lc3MsIGFuZCBwcmF5ZWQuCkFuZCBpdCBjYW1lIHRvIHBhc3Mgb24gYSBjZXJ0YWluIGRheSwgYXMgaGUgd2FzIHRlYWNoaW5nLCB0aGF0IHRoZXJlIHdlcmUgUGhhcmlzZWVzIGFuZCBkb2N0b3JzIG9mIHRoZSBsYXcgc2l0dGluZyBieSwgd2hpY2ggd2VyZSBjb21lIG91dCBvZiBldmVyeSB0b3duIG9mIEdhbGlsZWUsIGFuZCBKdWRhZWEsIGFuZCBKZXJ1c2FsZW06IGFuZCB0aGUgcG93ZXIgb2YgdGhlIExvcmQgd2FzIHByZXNlbnQgdG8gaGVhbCB0aGVtLgpBbmQsIGJlaG9sZCwgbWVuIGJyb3VnaHQgaW4gYSBiZWQgYSBtYW4gd2hpY2ggd2FzIHRha2VuIHdpdGggYSBwYWxzeTogYW5kIHRoZXkgc291Z2h0IG1lYW5zIHRvIGJyaW5nIGhpbSBpbiwgYW5kIHRvIGxheSBoaW0gYmVmb3JlIGhpbS4KQW5kIHdoZW4gdGhleSBjb3VsZCBub3QgZmluZCBieSB3aGF0IHdheSB0aGV5IG1pZ2h0IGJyaW5nIGhpbSBpbiBiZWNhdXNlIG9mIHRoZSBtdWx0aXR1ZGUsIHRoZXkgd2VudCB1cG9uIHRoZSBob3VzZXRvcCwgYW5kIGxldCBoaW0gZG93biB0aHJvdWdoIHRoZSB0aWxpbmcgd2l0aCBoaXMgY291Y2ggaW50byB0aGUgbWlkc3QgYmVmb3JlIEplc3VzLgpBbmQgd2hlbiBoZSBzYXcgdGhlaXIgZmFpdGgsIGhlIHNhaWQgdW50byBoaW0sIE1hbiwgdGh5IHNpbnMgYXJlIGZvcmdpdmVuIHRoZWUuCkFuZCB0aGUgc2NyaWJlcyBhbmQgdGhlIFBoYXJpc2VlcyBiZWdhbiB0byByZWFzb24sIHNheWluZywgV2hvIGlzIHRoaXMgd2hpY2ggc3BlYWtldGggYmxhc3BoZW1pZXM/IFdobyBjYW4gZm9yZ2l2ZSBzaW5zLCBidXQgR29kIGFsb25lPwpCdXQgd2hlbiBKZXN1cyBwZXJjZWl2ZWQgdGhlaXIgdGhvdWdodHMsIGhlIGFuc3dlcmluZyBzYWlkIHVudG8gdGhlbSwgV2hhdCByZWFzb24geWUgaW4geW91ciBoZWFydHM/CldoZXRoZXIgaXMgZWFzaWVyLCB0byBzYXksIFRoeSBzaW5zIGJlIGZvcmdpdmVuIHRoZWU7IG9yIHRvIHNheSwgUmlzZSB1cCBhbmQgd2Fsaz8KQnV0IHRoYXQgeWUgbWF5IGtub3cgdGhhdCB0aGUgU29uIG9mIG1hbiBoYXRoIHBvd2VyIHVwb24gZWFydGggdG8gZm9yZ2l2ZSBzaW5zLCAoaGUgc2FpZCB1bnRvIHRoZSBzaWNrIG9mIHRoZSBwYWxzeSwpIEkgc2F5IHVudG8gdGhlZSwgQXJpc2UsIGFuZCB0YWtlIHVwIHRoeSBjb3VjaCwgYW5kIGdvIGludG8gdGhpbmUgaG91c2UuCkFuZCBpbW1lZGlhdGVseSBoZSByb3NlIHVwIGJlZm9yZSB0aGVtLCBhbmQgdG9vayB1cCB0aGF0IHdoZXJlb24gaGUgbGF5LCBhbmQgZGVwYXJ0ZWQgdG8gaGlzIG93biBob3VzZSwgZ2xvcmlmeWluZyBHb2QuCkFuZCB0aGV5IHdlcmUgYWxsIGFtYXplZCwgYW5kIHRoZXkgZ2xvcmlmaWVkIEdvZCwgYW5kIHdlcmUgZmlsbGVkIHdpdGggZmVhciwgc2F5aW5nLCBXZSBoYXZlIHNlZW4gc3RyYW5nZSB0aGluZ3MgdG8gZGF5LgpBbmQgYWZ0ZXIgdGhlc2UgdGhpbmdzIGhlIHdlbnQgZm9ydGgsIGFuZCBzYXcgYSBwdWJsaWNhbiwgbmFtZWQgTGV2aSwgc2l0dGluZyBhdCB0aGUgcmVjZWlwdCBvZiBjdXN0b206IGFuZCBoZSBzYWlkIHVudG8gaGltLCBGb2xsb3cgbWUuCkFuZCBoZSBsZWZ0IGFsbCwgcm9zZSB1cCwgYW5kIGZvbGxvd2VkIGhpbS4KQW5kIExldmkgbWFkZSBoaW0gYSBncmVhdCBmZWFzdCBpbiBoaXMgb3duIGhvdXNlOiBhbmQgdGhlcmUgd2FzIGEgZ3JlYXQgY29tcGFueSBvZiBwdWJsaWNhbnMgYW5kIG9mIG90aGVycyB0aGF0IHNhdCBkb3duIHdpdGggdGhlbS4KQnV0IHRoZWlyIHNjcmliZXMgYW5kIFBoYXJpc2VlcyBtdXJtdXJlZCBhZ2FpbnN0IGhpcyBkaXNjaXBsZXMsIHNheWluZywgV2h5IGRvIHllIGVhdCBhbmQgZHJpbmsgd2l0aCBwdWJsaWNhbnMgYW5kIHNpbm5lcnM/CkFuZCBKZXN1cyBhbnN3ZXJpbmcgc2FpZCB1bnRvIHRoZW0sIFRoZXkgdGhhdCBhcmUgd2hvbGUgbmVlZCBub3QgYSBwaHlzaWNpYW47IGJ1dCB0aGV5IHRoYXQgYXJlIHNpY2suCkkgY2FtZSBub3QgdG8gY2FsbCB0aGUgcmlnaHRlb3VzLCBidXQgc2lubmVycyB0byByZXBlbnRhbmNlLgpBbmQgdGhleSBzYWlkIHVudG8gaGltLCBXaHkgZG8gdGhlIGRpc2NpcGxlcyBvZiBKb2huIGZhc3Qgb2Z0ZW4sIGFuZCBtYWtlIHByYXllcnMsIGFuZCBsaWtld2lzZSB0aGUgZGlzY2lwbGVzIG9mIHRoZSBQaGFyaXNlZXM7IGJ1dCB0aGluZSBlYXQgYW5kIGRyaW5rPwpBbmQgaGUgc2FpZCB1bnRvIHRoZW0sIENhbiB5ZSBtYWtlIHRoZSBjaGlsZHJlbiBvZiB0aGUgYnJpZGVjaGFtYmVyIGZhc3QsIHdoaWxlIHRoZSBicmlkZWdyb29tIGlzIHdpdGggdGhlbT8KQnV0IHRoZSBkYXlzIHdpbGwgY29tZSwgd2hlbiB0aGUgYnJpZGVncm9vbSBzaGFsbCBiZSB0YWtlbiBhd2F5IGZyb20gdGhlbSwgYW5kIHRoZW4gc2hhbGwgdGhleSBmYXN0IGluIHRob3NlIGRheXMuCkFuZCBoZSBzcGFrZSBhbHNvIGEgcGFyYWJsZSB1bnRvIHRoZW07IE5vIG1hbiBwdXR0ZXRoIGEgcGllY2Ugb2YgYSBuZXcgZ2FybWVudCB1cG9uIGFuIG9sZDsgaWYgb3RoZXJ3aXNlLCB0aGVuIGJvdGggdGhlIG5ldyBtYWtldGggYSByZW50LCBhbmQgdGhlIHBpZWNlIHRoYXQgd2FzIHRha2VuIG91dCBvZiB0aGUgbmV3IGFncmVldGggbm90IHdpdGggdGhlIG9sZC4KQW5kIG5vIG1hbiBwdXR0ZXRoIG5ldyB3aW5lIGludG8gb2xkIGJvdHRsZXM7IGVsc2UgdGhlIG5ldyB3aW5lIHdpbGwgYnVyc3QgdGhlIGJvdHRsZXMsIGFuZCBiZSBzcGlsbGVkLCBhbmQgdGhlIGJvdHRsZXMgc2hhbGwgcGVyaXNoLgpCdXQgbmV3IHdpbmUgbXVzdCBiZSBwdXQgaW50byBuZXcgYm90dGxlczsgYW5kIGJvdGggYXJlIHByZXNlcnZlZC4KTm8gbWFuIGFsc28gaGF2aW5nIGRydW5rIG9sZCB3aW5lIHN0cmFpZ2h0d2F5IGRlc2lyZXRoIG5ldzogZm9yIGhlIHNhaXRoLCBUaGUgb2xkIGlzIGJldHRlci4KQW5kIGl0IGNhbWUgdG8gcGFzcyBvbiB0aGUgc2Vjb25kIHNhYmJhdGggYWZ0ZXIgdGhlIGZpcnN0LCB0aGF0IGhlIHdlbnQgdGhyb3VnaCB0aGUgY29ybiBmaWVsZHM7IGFuZCBoaXMgZGlzY2lwbGVzIHBsdWNrZWQgdGhlIGVhcnMgb2YgY29ybiwgYW5kIGRpZCBlYXQsIHJ1YmJpbmcgdGhlbSBpbiB0aGVpciBoYW5kcy4KQW5kIGNlcnRhaW4gb2YgdGhlIFBoYXJpc2VlcyBzYWlkIHVudG8gdGhlbSwgV2h5IGRvIHllIHRoYXQgd2hpY2ggaXMgbm90IGxhd2Z1bCB0byBkbyBvbiB0aGUgc2FiYmF0aCBkYXlzPwpBbmQgSmVzdXMgYW5zd2VyaW5nIHRoZW0gc2FpZCwgSGF2ZSB5ZSBub3QgcmVhZCBzbyBtdWNoIGFzIHRoaXMsIHdoYXQgRGF2aWQgZGlkLCB3aGVuIGhpbXNlbGYgd2FzIGFuIGh1bmdyZWQsIGFuZCB0aGV5IHdoaWNoIHdlcmUgd2l0aCBoaW07CkhvdyBoZSB3ZW50IGludG8gdGhlIGhvdXNlIG9mIEdvZCwgYW5kIGRpZCB0YWtlIGFuZCBlYXQgdGhlIHNoZXdicmVhZCwgYW5kIGdhdmUgYWxzbyB0byB0aGVtIHRoYXQgd2VyZSB3aXRoIGhpbTsgd2hpY2ggaXQgaXMgbm90IGxhd2Z1bCB0byBlYXQgYnV0IGZvciB0aGUgcHJpZXN0cyBhbG9uZT8KQW5kIGhlIHNhaWQgdW50byB0aGVtLCBUaGF0IHRoZSBTb24gb2YgbWFuIGlzIExvcmQgYWxzbyBvZiB0aGUgc2FiYmF0aC4KQW5kIGl0IGNhbWUgdG8gcGFzcyBhbHNvIG9uIGFub3RoZXIgc2FiYmF0aCwgdGhhdCBoZSBlbnRlcmVkIGludG8gdGhlIHN5bmFnb2d1ZSBhbmQgdGF1Z2h0OiBhbmQgdGhlcmUgd2FzIGEgbWFuIHdob3NlIHJpZ2h0IGhhbmQgd2FzIHdpdGhlcmVkLgpBbmQgdGhlIHNjcmliZXMgYW5kIFBoYXJpc2VlcyB3YXRjaGVkIGhpbSwgd2hldGhlciBoZSB3b3VsZCBoZWFsIG9uIHRoZSBzYWJiYXRoIGRheTsgdGhhdCB0aGV5IG1pZ2h0IGZpbmQgYW4gYWNjdXNhdGlvbiBhZ2FpbnN0IGhpbS4KQnV0IGhlIGtuZXcgdGhlaXIgdGhvdWdodHMsIGFuZCBzYWlkIHRvIHRoZSBtYW4gd2hpY2ggaGFkIHRoZSB3aXRoZXJlZCBoYW5kLCBSaXNlIHVwLCBhbmQgc3RhbmQgZm9ydGggaW4gdGhlIG1pZHN0LiBBbmQgaGUgYXJvc2UgYW5kIHN0b29kIGZvcnRoLgpUaGVuIHNhaWQgSmVzdXMgdW50byB0aGVtLCBJIHdpbGwgYXNrIHlvdSBvbmUgdGhpbmc7IElzIGl0IGxhd2Z1bCBvbiB0aGUgc2FiYmF0aCBkYXlzIHRvIGRvIGdvb2QsIG9yIHRvIGRvIGV2aWw/IHRvIHNhdmUgbGlmZSwgb3IgdG8gZGVzdHJveSBpdD8KQW5kIGxvb2tpbmcgcm91bmQgYWJvdXQgdXBvbiB0aGVtIGFsbCwgaGUgc2FpZCB1bnRvIHRoZSBtYW4sIFN0cmV0Y2ggZm9ydGggdGh5IGhhbmQuIEFuZCBoZSBkaWQgc286IGFuZCBoaXMgaGFuZCB3YXMgcmVzdG9yZWQgd2hvbGUgYXMgdGhlIG90aGVyLgpBbmQgdGhleSB3ZXJlIGZpbGxlZCB3aXRoIG1hZG5lc3M7IGFuZCBjb21tdW5lZCBvbmUgd2l0aCBhbm90aGVyIHdoYXQgdGhleSBtaWdodCBkbyB0byBKZXN1cy4KQW5kIGl0IGNhbWUgdG8gcGFzcyBpbiB0aG9zZSBkYXlzLCB0aGF0IGhlIHdlbnQgb3V0IGludG8gYSBtb3VudGFpbiB0byBwcmF5LCBhbmQgY29udGludWVkIGFsbCBuaWdodCBpbiBwcmF5ZXIgdG8gR29kLgpBbmQgd2hlbiBpdCB3YXMgZGF5LCBoZSBjYWxsZWQgdW50byBoaW0gaGlzIGRpc2NpcGxlczogYW5kIG9mIHRoZW0gaGUgY2hvc2UgdHdlbHZlLCB3aG9tIGFsc28gaGUgbmFtZWQgYXBvc3RsZXM7ClNpbW9uLCAod2hvbSBoZSBhbHNvIG5hbWVkIFBldGVyLCkgYW5kIEFuZHJldyBoaXMgYnJvdGhlciwgSmFtZXMgYW5kIEpvaG4sIFBoaWxpcCBhbmQgQmFydGhvbG9tZXcsCk1hdHRoZXcgYW5kIFRob21hcywgSmFtZXMgdGhlIHNvbiBvZiBBbHBoYWV1cywgYW5kIFNpbW9uIGNhbGxlZCBaZWxvdGVzLApBbmQgSnVkYXMgdGhlIGJyb3RoZXIgb2YgSmFtZXMsIGFuZCBKdWRhcyBJc2NhcmlvdCwgd2hpY2ggYWxzbyB3YXMgdGhlIHRyYWl0b3IuCkFuZCBoZSBjYW1lIGRvd24gd2l0aCB0aGVtLCBhbmQgc3Rvb2QgaW4gdGhlIHBsYWluLCBhbmQgdGhlIGNvbXBhbnkgb2YgaGlzIGRpc2NpcGxlcywgYW5kIGEgZ3JlYXQgbXVsdGl0dWRlIG9mIHBlb3BsZSBvdXQgb2YgYWxsIEp1ZGFlYSBhbmQgSmVydXNhbGVtLCBhbmQgZnJvbSB0aGUgc2VhIGNvYXN0IG9mIFR5cmUgYW5kIFNpZG9uLCB3aGljaCBjYW1lIHRvIGhlYXIgaGltLCBhbmQgdG8gYmUgaGVhbGVkIG9mIHRoZWlyIGRpc2Vhc2VzOwpBbmQgdGhleSB0aGF0IHdlcmUgdmV4ZWQgd2l0aCB1bmNsZWFuIHNwaXJpdHM6IGFuZCB0aGV5IHdlcmUgaGVhbGVkLgpBbmQgdGhlIHdob2xlIG11bHRpdHVkZSBzb3VnaHQgdG8gdG91Y2ggaGltOiBmb3IgdGhlcmUgd2VudCB2aXJ0dWUgb3V0IG9mIGhpbSwgYW5kIGhlYWxlZCB0aGVtIGFsbC4KQW5kIGhlIGxpZnRlZCB1cCBoaXMgZXllcyBvbiBoaXMgZGlzY2lwbGVzLCBhbmQgc2FpZCwgQmxlc3NlZCBiZSB5ZSBwb29yOiBmb3IgeW91cnMgaXMgdGhlIGtpbmdkb20gb2YgR29kLgpCbGVzc2VkIGFyZSB5ZSB0aGF0IGh1bmdlciBub3c6IGZvciB5ZSBzaGFsbCBiZSBmaWxsZWQuIEJsZXNzZWQgYXJlIHllIHRoYXQgd2VlcCBub3c6IGZvciB5ZSBzaGFsbCBsYXVnaC4KQmxlc3NlZCBhcmUgeWUsIHdoZW4gbWVuIHNoYWxsIGhhdGUgeW91LCBhbmQgd2hlbiB0aGV5IHNoYWxsIHNlcGFyYXRlIHlvdSBmcm9tIHRoZWlyIGNvbXBhbnksIGFuZCBzaGFsbCByZXByb2FjaCB5b3UsIGFuZCBjYXN0IG91dCB5b3VyIG5hbWUgYXMgZXZpbCwgZm9yIHRoZSBTb24gb2YgbWFuJ3Mgc2FrZS4KUmVqb2ljZSB5ZSBpbiB0aGF0IGRheSwgYW5kIGxlYXAgZm9yIGpveTogZm9yLCBiZWhvbGQsIHlvdXIgcmV3YXJkIGlzIGdyZWF0IGluIGhlYXZlbjogZm9yIGluIHRoZSBsaWtlIG1hbm5lciBkaWQgdGhlaXIgZmF0aGVycyB1bnRvIHRoZSBwcm9waGV0cy4KQnV0IHdvZSB1bnRvIHlvdSB0aGF0IGFyZSByaWNoISBmb3IgeWUgaGF2ZSByZWNlaXZlZCB5b3VyIGNvbnNvbGF0aW9uLgpXb2UgdW50byB5b3UgdGhhdCBhcmUgZnVsbCEgZm9yIHllIHNoYWxsIGh1bmdlci4gV29lIHVudG8geW91IHRoYXQgbGF1Z2ggbm93ISBmb3IgeWUgc2hhbGwgbW91cm4gYW5kIHdlZXAuCldvZSB1bnRvIHlvdSwgd2hlbiBhbGwgbWVuIHNoYWxsIHNwZWFrIHdlbGwgb2YgeW91ISBmb3Igc28gZGlkIHRoZWlyIGZhdGhlcnMgdG8gdGhlIGZhbHNlIHByb3BoZXRzLgpCdXQgSSBzYXkgdW50byB5b3Ugd2hpY2ggaGVhciwgTG92ZSB5b3VyIGVuZW1pZXMsIGRvIGdvb2QgdG8gdGhlbSB3aGljaCBoYXRlIHlvdSwKQmxlc3MgdGhlbSB0aGF0IGN1cnNlIHlvdSwgYW5kIHByYXkgZm9yIHRoZW0gd2hpY2ggZGVzcGl0ZWZ1bGx5IHVzZSB5b3UuCkFuZCB1bnRvIGhpbSB0aGF0IHNtaXRldGggdGhlZSBvbiB0aGUgb25lIGNoZWVrIG9mZmVyIGFsc28gdGhlIG90aGVyOyBhbmQgaGltIHRoYXQgdGFrZXRoIGF3YXkgdGh5IGNsb2FrIGZvcmJpZCBub3QgdG8gdGFrZSB0aHkgY29hdCBhbHNvLgpHaXZlIHRvIGV2ZXJ5IG1hbiB0aGF0IGFza2V0aCBvZiB0aGVlOyBhbmQgb2YgaGltIHRoYXQgdGFrZXRoIGF3YXkgdGh5IGdvb2RzIGFzayB0aGVtIG5vdCBhZ2Fpbi4KQW5kIGFzIHllIHdvdWxkIHRoYXQgbWVuIHNob3VsZCBkbyB0byB5b3UsIGRvIHllIGFsc28gdG8gdGhlbSBsaWtld2lzZS4KRm9yIGlmIHllIGxvdmUgdGhlbSB3aGljaCBsb3ZlIHlvdSwgd2hhdCB0aGFuayBoYXZlIHllPyBmb3Igc2lubmVycyBhbHNvIGxvdmUgdGhvc2UgdGhhdCBsb3ZlIHRoZW0uCkFuZCBpZiB5ZSBkbyBnb29kIHRvIHRoZW0gd2hpY2ggZG8gZ29vZCB0byB5b3UsIHdoYXQgdGhhbmsgaGF2ZSB5ZT8gZm9yIHNpbm5lcnMgYWxzbyBkbyBldmVuIHRoZSBzYW1lLgpBbmQgaWYgeWUgbGVuZCB0byB0aGVtIG9mIHdob20geWUgaG9wZSB0byByZWNlaXZlLCB3aGF0IHRoYW5rIGhhdmUgeWU/IGZvciBzaW5uZXJzIGFsc28gbGVuZCB0byBzaW5uZXJzLCB0byByZWNlaXZlIGFzIG11Y2ggYWdhaW4uCkJ1dCBsb3ZlIHllIHlvdXIgZW5lbWllcywgYW5kIGRvIGdvb2QsIGFuZCBsZW5kLCBob3BpbmcgZm9yIG5vdGhpbmcgYWdhaW47IGFuZCB5b3VyIHJld2FyZCBzaGFsbCBiZSBncmVhdCwgYW5kIHllIHNoYWxsIGJlIHRoZSBjaGlsZHJlbiBvZiB0aGUgSGlnaGVzdDogZm9yIGhlIGlzIGtpbmQgdW50byB0aGUgdW50aGFua2Z1bCBhbmQgdG8gdGhlIGV2aWwuCkJlIHllIHRoZXJlZm9yZSBtZXJjaWZ1bCwgYXMgeW91ciBGYXRoZXIgYWxzbyBpcyBtZXJjaWZ1bC4KSnVkZ2Ugbm90LCBhbmQgeWUgc2hhbGwgbm90IGJlIGp1ZGdlZDogY29uZGVtbiBub3QsIGFuZCB5ZSBzaGFsbCBub3QgYmUgY29uZGVtbmVkOiBmb3JnaXZlLCBhbmQgeWUgc2hhbGwgYmUgZm9yZ2l2ZW46CkdpdmUsIGFuZCBpdCBzaGFsbCBiZSBnaXZlbiB1bnRvIHlvdTsgZ29vZCBtZWFzdXJlLCBwcmVzc2VkIGRvd24sIGFuZCBzaGFrZW4gdG9nZXRoZXIsIGFuZCBydW5uaW5nIG92ZXIsIHNoYWxsIG1lbiBnaXZlIGludG8geW91ciBib3NvbS4gRm9yIHdpdGggdGhlIHNhbWUgbWVhc3VyZSB0aGF0IHllIG1ldGUgd2l0aGFsIGl0IHNoYWxsIGJlIG1lYXN1cmVkIHRvIHlvdSBhZ2Fpbi4KQW5kIGhlIHNwYWtlIGEgcGFyYWJsZSB1bnRvIHRoZW0sIENhbiB0aGUgYmxpbmQgbGVhZCB0aGUgYmxpbmQ/IHNoYWxsIHRoZXkgbm90IGJvdGggZmFsbCBpbnRvIHRoZSBkaXRjaD8KVGhlIGRpc2NpcGxlIGlzIG5vdCBhYm92ZSBoaXMgbWFzdGVyOiBidXQgZXZlcnkgb25lIHRoYXQgaXMgcGVyZmVjdCBzaGFsbCBiZSBhcyBoaXMgbWFzdGVyLgpBbmQgd2h5IGJlaG9sZGVzdCB0aG91IHRoZSBtb3RlIHRoYXQgaXMgaW4gdGh5IGJyb3RoZXIncyBleWUsIGJ1dCBwZXJjZWl2ZXN0IG5vdCB0aGUgYmVhbSB0aGF0IGlzIGluIHRoaW5lIG93biBleWU/CkVpdGhlciBob3cgY2Fuc3QgdGhvdSBzYXkgdG8gdGh5IGJyb3RoZXIsIEJyb3RoZXIsIGxldCBtZSBwdWxsIG91dCB0aGUgbW90ZSB0aGF0IGlzIGluIHRoaW5lIGV5ZSwgd2hlbiB0aG91IHRoeXNlbGYgYmVob2xkZXN0IG5vdCB0aGUgYmVhbSB0aGF0IGlzIGluIHRoaW5lIG93biBleWU/IFRob3UgaHlwb2NyaXRlLCBjYXN0IG91dCBmaXJzdCB0aGUgYmVhbSBvdXQgb2YgdGhpbmUgb3duIGV5ZSwgYW5kIHRoZW4gc2hhbHQgdGhvdSBzZWUgY2xlYXJseSB0byBwdWxsIG91dCB0aGUgbW90ZSB0aGF0IGlzIGluIHRoeSBicm90aGVyJ3MgZXllLgpGb3IgYSBnb29kIHRyZWUgYnJpbmdldGggbm90IGZvcnRoIGNvcnJ1cHQgZnJ1aXQ7IG5laXRoZXIgZG90aCBhIGNvcnJ1cHQgdHJlZSBicmluZyBmb3J0aCBnb29kIGZydWl0LgpGb3IgZXZlcnkgdHJlZSBpcyBrbm93biBieSBoaXMgb3duIGZydWl0LiBGb3Igb2YgdGhvcm5zIG1lbiBkbyBub3QgZ2F0aGVyIGZpZ3MsIG5vciBvZiBhIGJyYW1ibGUgYnVzaCBnYXRoZXIgdGhleSBncmFwZXMuCkEgZ29vZCBtYW4gb3V0IG9mIHRoZSBnb29kIHRyZWFzdXJlIG9mIGhpcyBoZWFydCBicmluZ2V0aCBmb3J0aCB0aGF0IHdoaWNoIGlzIGdvb2Q7IGFuZCBhbiBldmlsIG1hbiBvdXQgb2YgdGhlIGV2aWwgdHJlYXN1cmUgb2YgaGlzIGhlYXJ0IGJyaW5nZXRoIGZvcnRoIHRoYXQgd2hpY2ggaXMgZXZpbDogZm9yIG9mIHRoZSBhYnVuZGFuY2Ugb2YgdGhlIGhlYXJ0IGhpcyBtb3V0aCBzcGVha2V0aC4KQW5kIHdoeSBjYWxsIHllIG1lLCBMb3JkLCBMb3JkLCBhbmQgZG8gbm90IHRoZSB0aGluZ3Mgd2hpY2ggSSBzYXk/Cldob3NvZXZlciBjb21ldGggdG8gbWUsIGFuZCBoZWFyZXRoIG15IHNheWluZ3MsIGFuZCBkb2V0aCB0aGVtLCBJIHdpbGwgc2hldyB5b3UgdG8gd2hvbSBoZSBpcyBsaWtlOgpIZSBpcyBsaWtlIGEgbWFuIHdoaWNoIGJ1aWx0IGFuIGhvdXNlLCBhbmQgZGlnZ2VkIGRlZXAsIGFuZCBsYWlkIHRoZSBmb3VuZGF0aW9uIG9uIGEgcm9jazogYW5kIHdoZW4gdGhlIGZsb29kIGFyb3NlLCB0aGUgc3RyZWFtIGJlYXQgdmVoZW1lbnRseSB1cG9uIHRoYXQgaG91c2UsIGFuZCBjb3VsZCBub3Qgc2hha2UgaXQ6IGZvciBpdCB3YXMgZm91bmRlZCB1cG9uIGEgcm9jay4KQnV0IGhlIHRoYXQgaGVhcmV0aCwgYW5kIGRvZXRoIG5vdCwgaXMgbGlrZSBhIG1hbiB0aGF0IHdpdGhvdXQgYSBmb3VuZGF0aW9uIGJ1aWx0IGFuIGhvdXNlIHVwb24gdGhlIGVhcnRoOyBhZ2FpbnN0IHdoaWNoIHRoZSBzdHJlYW0gZGlkIGJlYXQgdmVoZW1lbnRseSwgYW5kIGltbWVkaWF0ZWx5IGl0IGZlbGw7IGFuZCB0aGUgcnVpbiBvZiB0aGF0IGhvdXNlIHdhcyBncmVhdC4KTm93IHdoZW4gaGUgaGFkIGVuZGVkIGFsbCBoaXMgc2F5aW5ncyBpbiB0aGUgYXVkaWVuY2Ugb2YgdGhlIHBlb3BsZSwgaGUgZW50ZXJlZCBpbnRvIENhcGVybmF1bS4KQW5kIGEgY2VydGFpbiBjZW50dXJpb24ncyBzZXJ2YW50LCB3aG8gd2FzIGRlYXIgdW50byBoaW0sIHdhcyBzaWNrLCBhbmQgcmVhZHkgdG8gZGllLgpBbmQgd2hlbiBoZSBoZWFyZCBvZiBKZXN1cywgaGUgc2VudCB1bnRvIGhpbSB0aGUgZWxkZXJzIG9mIHRoZSBKZXdzLCBiZXNlZWNoaW5nIGhpbSB0aGF0IGhlIHdvdWxkIGNvbWUgYW5kIGhlYWwgaGlzIHNlcnZhbnQuCkFuZCB3aGVuIHRoZXkgY2FtZSB0byBKZXN1cywgdGhleSBiZXNvdWdodCBoaW0gaW5zdGFudGx5LCBzYXlpbmcsIFRoYXQgaGUgd2FzIHdvcnRoeSBmb3Igd2hvbSBoZSBzaG91bGQgZG8gdGhpczoKRm9yIGhlIGxvdmV0aCBvdXIgbmF0aW9uLCBhbmQgaGUgaGF0aCBidWlsdCB1cyBhIHN5bmFnb2d1ZS4KVGhlbiBKZXN1cyB3ZW50IHdpdGggdGhlbS4gQW5kIHdoZW4gaGUgd2FzIG5vdyBub3QgZmFyIGZyb20gdGhlIGhvdXNlLCB0aGUgY2VudHVyaW9uIHNlbnQgZnJpZW5kcyB0byBoaW0sIHNheWluZyB1bnRvIGhpbSwgTG9yZCwgdHJvdWJsZSBub3QgdGh5c2VsZjogZm9yIEkgYW0gbm90IHdvcnRoeSB0aGF0IHRob3Ugc2hvdWxkZXN0IGVudGVyIHVuZGVyIG15IHJvb2Y6CldoZXJlZm9yZSBuZWl0aGVyIHRob3VnaHQgSSBteXNlbGYgd29ydGh5IHRvIGNvbWUgdW50byB0aGVlOiBidXQgc2F5IGluIGEgd29yZCwgYW5kIG15IHNlcnZhbnQgc2hhbGwgYmUgaGVhbGVkLgpGb3IgSSBhbHNvIGFtIGEgbWFuIHNldCB1bmRlciBhdXRob3JpdHksIGhhdmluZyB1bmRlciBtZSBzb2xkaWVycywgYW5kIEkgc2F5IHVudG8gb25lLCBHbywgYW5kIGhlIGdvZXRoOyBhbmQgdG8gYW5vdGhlciwgQ29tZSwgYW5kIGhlIGNvbWV0aDsgYW5kIHRvIG15IHNlcnZhbnQsIERvIHRoaXMsIGFuZCBoZSBkb2V0aCBpdC4KV2hlbiBKZXN1cyBoZWFyZCB0aGVzZSB0aGluZ3MsIGhlIG1hcnZlbGxlZCBhdCBoaW0sIGFuZCB0dXJuZWQgaGltIGFib3V0LCBhbmQgc2FpZCB1bnRvIHRoZSBwZW9wbGUgdGhhdCBmb2xsb3dlZCBoaW0sIEkgc2F5IHVudG8geW91LCBJIGhhdmUgbm90IGZvdW5kIHNvIGdyZWF0IGZhaXRoLCBubywgbm90IGluIElzcmFlbC4KQW5kIHRoZXkgdGhhdCB3ZXJlIHNlbnQsIHJldHVybmluZyB0byB0aGUgaG91c2UsIGZvdW5kIHRoZSBzZXJ2YW50IHdob2xlIHRoYXQgaGFkIGJlZW4gc2ljay4KQW5kIGl0IGNhbWUgdG8gcGFzcyB0aGUgZGF5IGFmdGVyLCB0aGF0IGhlIHdlbnQgaW50byBhIGNpdHkgY2FsbGVkIE5haW47IGFuZCBtYW55IG9mIGhpcyBkaXNjaXBsZXMgd2VudCB3aXRoIGhpbSwgYW5kIG11Y2ggcGVvcGxlLgpOb3cgd2hlbiBoZSBjYW1lIG5pZ2ggdG8gdGhlIGdhdGUgb2YgdGhlIGNpdHksIGJlaG9sZCwgdGhlcmUgd2FzIGEgZGVhZCBtYW4gY2FycmllZCBvdXQsIHRoZSBvbmx5IHNvbiBvZiBoaXMgbW90aGVyLCBhbmQgc2hlIHdhcyBhIHdpZG93OiBhbmQgbXVjaCBwZW9wbGUgb2YgdGhlIGNpdHkgd2FzIHdpdGggaGVyLgpBbmQgd2hlbiB0aGUgTG9yZCBzYXcgaGVyLCBoZSBoYWQgY29tcGFzc2lvbiBvbiBoZXIsIGFuZCBzYWlkIHVudG8gaGVyLCBXZWVwIG5vdC4KQW5kIGhlIGNhbWUgYW5kIHRvdWNoZWQgdGhlIGJpZXI6IGFuZCB0aGV5IHRoYXQgYmFyZSBoaW0gc3Rvb2Qgc3RpbGwuIEFuZCBoZSBzYWlkLCBZb3VuZyBtYW4sIEkgc2F5IHVudG8gdGhlZSwgQXJpc2UuCkFuZCBoZSB0aGF0IHdhcyBkZWFkIHNhdCB1cCwgYW5kIGJlZ2FuIHRvIHNwZWFrLiBBbmQgaGUgZGVsaXZlcmVkIGhpbSB0byBoaXMgbW90aGVyLgpBbmQgdGhlcmUgY2FtZSBhIGZlYXIgb24gYWxsOiBhbmQgdGhleSBnbG9yaWZpZWQgR29kLCBzYXlpbmcsIFRoYXQgYSBncmVhdCBwcm9waGV0IGlzIHJpc2VuIHVwIGFtb25nIHVzOyBhbmQsIFRoYXQgR29kIGhhdGggdmlzaXRlZCBoaXMgcGVvcGxlLgpBbmQgdGhpcyBydW1vdXIgb2YgaGltIHdlbnQgZm9ydGggdGhyb3VnaG91dCBhbGwgSnVkYWVhLCBhbmQgdGhyb3VnaG91dCBhbGwgdGhlIHJlZ2lvbiByb3VuZCBhYm91dC4KQW5kIHRoZSBkaXNjaXBsZXMgb2YgSm9obiBzaGV3ZWQgaGltIG9mIGFsbCB0aGVzZSB0aGluZ3MuCkFuZCBKb2huIGNhbGxpbmcgdW50byBoaW0gdHdvIG9mIGhpcyBkaXNjaXBsZXMgc2VudCB0aGVtIHRvIEplc3VzLCBzYXlpbmcsIEFydCB0aG91IGhlIHRoYXQgc2hvdWxkIGNvbWU/IG9yIGxvb2sgd2UgZm9yIGFub3RoZXI/CldoZW4gdGhlIG1lbiB3ZXJlIGNvbWUgdW50byBoaW0sIHRoZXkgc2FpZCwgSm9obiBCYXB0aXN0IGhhdGggc2VudCB1cyB1bnRvIHRoZWUsIHNheWluZywgQXJ0IHRob3UgaGUgdGhhdCBzaG91bGQgY29tZT8gb3IgbG9vayB3ZSBmb3IgYW5vdGhlcj8KQW5kIGluIHRoYXQgc2FtZSBob3VyIGhlIGN1cmVkIG1hbnkgb2YgdGhlaXIgaW5maXJtaXRpZXMgYW5kIHBsYWd1ZXMsIGFuZCBvZiBldmlsIHNwaXJpdHM7IGFuZCB1bnRvIG1hbnkgdGhhdCB3ZXJlIGJsaW5kIGhlIGdhdmUgc2lnaHQuClRoZW4gSmVzdXMgYW5zd2VyaW5nIHNhaWQgdW50byB0aGVtLCBHbyB5b3VyIHdheSwgYW5kIHRlbGwgSm9obiB3aGF0IHRoaW5ncyB5ZSBoYXZlIHNlZW4gYW5kIGhlYXJkOyBob3cgdGhhdCB0aGUgYmxpbmQgc2VlLCB0aGUgbGFtZSB3YWxrLCB0aGUgbGVwZXJzIGFyZSBjbGVhbnNlZCwgdGhlIGRlYWYgaGVhciwgdGhlIGRlYWQgYXJlIHJhaXNlZCwgdG8gdGhlIHBvb3IgdGhlIGdvc3BlbCBpcyBwcmVhY2hlZC4KQW5kIGJsZXNzZWQgaXMgaGUsIHdob3NvZXZlciBzaGFsbCBub3QgYmUgb2ZmZW5kZWQgaW4gbWUuCkFuZCB3aGVuIHRoZSBtZXNzZW5nZXJzIG9mIEpvaG4gd2VyZSBkZXBhcnRlZCwgaGUgYmVnYW4gdG8gc3BlYWsgdW50byB0aGUgcGVvcGxlIGNvbmNlcm5pbmcgSm9obiwgV2hhdCB3ZW50IHllIG91dCBpbnRvIHRoZSB3aWxkZXJuZXNzIGZvciB0byBzZWU/IEEgcmVlZCBzaGFrZW4gd2l0aCB0aGUgd2luZD8KQnV0IHdoYXQgd2VudCB5ZSBvdXQgZm9yIHRvIHNlZT8gQSBtYW4gY2xvdGhlZCBpbiBzb2Z0IHJhaW1lbnQ/IEJlaG9sZCwgdGhleSB3aGljaCBhcmUgZ29yZ2VvdXNseSBhcHBhcmVsbGVkLCBhbmQgbGl2ZSBkZWxpY2F0ZWx5LCBhcmUgaW4ga2luZ3MnIGNvdXJ0cy4KQnV0IHdoYXQgd2VudCB5ZSBvdXQgZm9yIHRvIHNlZT8gQSBwcm9waGV0PyBZZWEsIEkgc2F5IHVudG8geW91LCBhbmQgbXVjaCBtb3JlIHRoYW4gYSBwcm9waGV0LgpUaGlzIGlzIGhlLCBvZiB3aG9tIGl0IGlzIHdyaXR0ZW4sIEJlaG9sZCwgSSBzZW5kIG15IG1lc3NlbmdlciBiZWZvcmUgdGh5IGZhY2UsIHdoaWNoIHNoYWxsIHByZXBhcmUgdGh5IHdheSBiZWZvcmUgdGhlZS4KRm9yIEkgc2F5IHVudG8geW91LCBBbW9uZyB0aG9zZSB0aGF0IGFyZSBib3JuIG9mIHdvbWVuIHRoZXJlIGlzIG5vdCBhIGdyZWF0ZXIgcHJvcGhldCB0aGFuIEpvaG4gdGhlIEJhcHRpc3Q6IGJ1dCBoZSB0aGF0IGlzIGxlYXN0IGluIHRoZSBraW5nZG9tIG9mIEdvZCBpcyBncmVhdGVyIHRoYW4gaGUuCkFuZCBhbGwgdGhlIHBlb3BsZSB0aGF0IGhlYXJkIGhpbSwgYW5kIHRoZSBwdWJsaWNhbnMsIGp1c3RpZmllZCBHb2QsIGJlaW5nIGJhcHRpemVkIHdpdGggdGhlIGJhcHRpc20gb2YgSm9obi4KQnV0IHRoZSBQaGFyaXNlZXMgYW5kIGxhd3llcnMgcmVqZWN0ZWQgdGhlIGNvdW5zZWwgb2YgR29kIGFnYWluc3QgdGhlbXNlbHZlcywgYmVpbmcgbm90IGJhcHRpemVkIG9mIGhpbS4KQW5kIHRoZSBMb3JkIHNhaWQsIFdoZXJldW50byB0aGVuIHNoYWxsIEkgbGlrZW4gdGhlIG1lbiBvZiB0aGlzIGdlbmVyYXRpb24/IGFuZCB0byB3aGF0IGFyZSB0aGV5IGxpa2U/ClRoZXkgYXJlIGxpa2UgdW50byBjaGlsZHJlbiBzaXR0aW5nIGluIHRoZSBtYXJrZXRwbGFjZSwgYW5kIGNhbGxpbmcgb25lIHRvIGFub3RoZXIsIGFuZCBzYXlpbmcsIFdlIGhhdmUgcGlwZWQgdW50byB5b3UsIGFuZCB5ZSBoYXZlIG5vdCBkYW5jZWQ7IHdlIGhhdmUgbW91cm5lZCB0byB5b3UsIGFuZCB5ZSBoYXZlIG5vdCB3ZXB0LgpGb3IgSm9obiB0aGUgQmFwdGlzdCBjYW1lIG5laXRoZXIgZWF0aW5nIGJyZWFkIG5vciBkcmlua2luZyB3aW5lOyBhbmQgeWUgc2F5LCBIZSBoYXRoIGEgZGV2aWwuClRoZSBTb24gb2YgbWFuIGlzIGNvbWUgZWF0aW5nIGFuZCBkcmlua2luZzsgYW5kIHllIHNheSwgQmVob2xkIGEgZ2x1dHRvbm91cyBtYW4sIGFuZCBhIHdpbmViaWJiZXIsIGEgZnJpZW5kIG9mIHB1YmxpY2FucyBhbmQgc2lubmVycyEKQnV0IHdpc2RvbSBpcyBqdXN0aWZpZWQgb2YgYWxsIGhlciBjaGlsZHJlbi4KQW5kIG9uZSBvZiB0aGUgUGhhcmlzZWVzIGRlc2lyZWQgaGltIHRoYXQgaGUgd291bGQgZWF0IHdpdGggaGltLiBBbmQgaGUgd2VudCBpbnRvIHRoZSBQaGFyaXNlZSdzIGhvdXNlLCBhbmQgc2F0IGRvd24gdG8gbWVhdC4KQW5kLCBiZWhvbGQsIGEgd29tYW4gaW4gdGhlIGNpdHksIHdoaWNoIHdhcyBhIHNpbm5lciwgd2hlbiBzaGUga25ldyB0aGF0IEplc3VzIHNhdCBhdCBtZWF0IGluIHRoZSBQaGFyaXNlZSdzIGhvdXNlLCBicm91Z2h0IGFuIGFsYWJhc3RlciBib3ggb2Ygb2ludG1lbnQsCkFuZCBzdG9vZCBhdCBoaXMgZmVldCBiZWhpbmQgaGltIHdlZXBpbmcsIGFuZCBiZWdhbiB0byB3YXNoIGhpcyBmZWV0IHdpdGggdGVhcnMsIGFuZCBkaWQgd2lwZSB0aGVtIHdpdGggdGhlIGhhaXJzIG9mIGhlciBoZWFkLCBhbmQga2lzc2VkIGhpcyBmZWV0LCBhbmQgYW5vaW50ZWQgdGhlbSB3aXRoIHRoZSBvaW50bWVudC4KTm93IHdoZW4gdGhlIFBoYXJpc2VlIHdoaWNoIGhhZCBiaWRkZW4gaGltIHNhdyBpdCwgaGUgc3Bha2Ugd2l0aGluIGhpbXNlbGYsIHNheWluZywgVGhpcyBtYW4sIGlmIGhlIHdlcmUgYSBwcm9waGV0LCB3b3VsZCBoYXZlIGtub3duIHdobyBhbmQgd2hhdCBtYW5uZXIgb2Ygd29tYW4gdGhpcyBpcyB0aGF0IHRvdWNoZXRoIGhpbTogZm9yIHNoZSBpcyBhIHNpbm5lci4KQW5kIEplc3VzIGFuc3dlcmluZyBzYWlkIHVudG8gaGltLCBTaW1vbiwgSSBoYXZlIHNvbWV3aGF0IHRvIHNheSB1bnRvIHRoZWUuIEFuZCBoZSBzYWl0aCwgTWFzdGVyLCBzYXkgb24uClRoZXJlIHdhcyBhIGNlcnRhaW4gY3JlZGl0b3Igd2hpY2ggaGFkIHR3byBkZWJ0b3JzOiB0aGUgb25lIG93ZWQgZml2ZSBodW5kcmVkIHBlbmNlLCBhbmQgdGhlIG90aGVyIGZpZnR5LgpBbmQgd2hlbiB0aGV5IGhhZCBub3RoaW5nIHRvIHBheSwgaGUgZnJhbmtseSBmb3JnYXZlIHRoZW0gYm90aC4gVGVsbCBtZSB0aGVyZWZvcmUsIHdoaWNoIG9mIHRoZW0gd2lsbCBsb3ZlIGhpbSBtb3N0PwpTaW1vbiBhbnN3ZXJlZCBhbmQgc2FpZCwgSSBzdXBwb3NlIHRoYXQgaGUsIHRvIHdob20gaGUgZm9yZ2F2ZSBtb3N0LiBBbmQgaGUgc2FpZCB1bnRvIGhpbSwgVGhvdSBoYXN0IHJpZ2h0bHkganVkZ2VkLgpBbmQgaGUgdHVybmVkIHRvIHRoZSB3b21hbiwgYW5kIHNhaWQgdW50byBTaW1vbiwgU2Vlc3QgdGhvdSB0aGlzIHdvbWFuPyBJIGVudGVyZWQgaW50byB0aGluZSBob3VzZSwgdGhvdSBnYXZlc3QgbWUgbm8gd2F0ZXIgZm9yIG15IGZlZXQ6IGJ1dCBzaGUgaGF0aCB3YXNoZWQgbXkgZmVldCB3aXRoIHRlYXJzLCBhbmQgd2lwZWQgdGhlbSB3aXRoIHRoZSBoYWlycyBvZiBoZXIgaGVhZC4KVGhvdSBnYXZlc3QgbWUgbm8ga2lzczogYnV0IHRoaXMgd29tYW4gc2luY2UgdGhlIHRpbWUgSSBjYW1lIGluIGhhdGggbm90IGNlYXNlZCB0byBraXNzIG15IGZlZXQuCk15IGhlYWQgd2l0aCBvaWwgdGhvdSBkaWRzdCBub3QgYW5vaW50OiBidXQgdGhpcyB3b21hbiBoYXRoIGFub2ludGVkIG15IGZlZXQgd2l0aCBvaW50bWVudC4KV2hlcmVmb3JlIEkgc2F5IHVudG8gdGhlZSwgSGVyIHNpbnMsIHdoaWNoIGFyZSBtYW55LCBhcmUgZm9yZ2l2ZW47IGZvciBzaGUgbG92ZWQgbXVjaDogYnV0IHRvIHdob20gbGl0dGxlIGlzIGZvcmdpdmVuLCB0aGUgc2FtZSBsb3ZldGggbGl0dGxlLgpBbmQgaGUgc2FpZCB1bnRvIGhlciwgVGh5IHNpbnMgYXJlIGZvcmdpdmVuLgpBbmQgdGhleSB0aGF0IHNhdCBhdCBtZWF0IHdpdGggaGltIGJlZ2FuIHRvIHNheSB3aXRoaW4gdGhlbXNlbHZlcywgV2hvIGlzIHRoaXMgdGhhdCBmb3JnaXZldGggc2lucyBhbHNvPwpBbmQgaGUgc2FpZCB0byB0aGUgd29tYW4sIFRoeSBmYWl0aCBoYXRoIHNhdmVkIHRoZWU7IGdvIGluIHBlYWNlLgpBbmQgaXQgY2FtZSB0byBwYXNzIGFmdGVyd2FyZCwgdGhhdCBoZSB3ZW50IHRocm91Z2hvdXQgZXZlcnkgY2l0eSBhbmQgdmlsbGFnZSwgcHJlYWNoaW5nIGFuZCBzaGV3aW5nIHRoZSBnbGFkIHRpZGluZ3Mgb2YgdGhlIGtpbmdkb20gb2YgR29kOiBhbmQgdGhlIHR3ZWx2ZSB3ZXJlIHdpdGggaGltLApBbmQgY2VydGFpbiB3b21lbiwgd2hpY2ggaGFkIGJlZW4gaGVhbGVkIG9mIGV2aWwgc3Bpcml0cyBhbmQgaW5maXJtaXRpZXMsIE1hcnkgY2FsbGVkIE1hZ2RhbGVuZSwgb3V0IG9mIHdob20gd2VudCBzZXZlbiBkZXZpbHMsCkFuZCBKb2FubmEgdGhlIHdpZmUgb2YgQ2h1emEgSGVyb2QncyBzdGV3YXJkLCBhbmQgU3VzYW5uYSwgYW5kIG1hbnkgb3RoZXJzLCB3aGljaCBtaW5pc3RlcmVkIHVudG8gaGltIG9mIHRoZWlyIHN1YnN0YW5jZS4KQW5kIHdoZW4gbXVjaCBwZW9wbGUgd2VyZSBnYXRoZXJlZCB0b2dldGhlciwgYW5kIHdlcmUgY29tZSB0byBoaW0gb3V0IG9mIGV2ZXJ5IGNpdHksIGhlIHNwYWtlIGJ5IGEgcGFyYWJsZToKQSBzb3dlciB3ZW50IG91dCB0byBzb3cgaGlzIHNlZWQ6IGFuZCBhcyBoZSBzb3dlZCwgc29tZSBmZWxsIGJ5IHRoZSB3YXkgc2lkZTsgYW5kIGl0IHdhcyB0cm9kZGVuIGRvd24sIGFuZCB0aGUgZm93bHMgb2YgdGhlIGFpciBkZXZvdXJlZCBpdC4KQW5kIHNvbWUgZmVsbCB1cG9uIGEgcm9jazsgYW5kIGFzIHNvb24gYXMgaXQgd2FzIHNwcnVuZyB1cCwgaXQgd2l0aGVyZWQgYXdheSwgYmVjYXVzZSBpdCBsYWNrZWQgbW9pc3R1cmUuCkFuZCBzb21lIGZlbGwgYW1vbmcgdGhvcm5zOyBhbmQgdGhlIHRob3JucyBzcHJhbmcgdXAgd2l0aCBpdCwgYW5kIGNob2tlZCBpdC4KQW5kIG90aGVyIGZlbGwgb24gZ29vZCBncm91bmQsIGFuZCBzcHJhbmcgdXAsIGFuZCBiYXJlIGZydWl0IGFuIGh1bmRyZWRmb2xkLiBBbmQgd2hlbiBoZSBoYWQgc2FpZCB0aGVzZSB0aGluZ3MsIGhlIGNyaWVkLCBIZSB0aGF0IGhhdGggZWFycyB0byBoZWFyLCBsZXQgaGltIGhlYXIuCkFuZCBoaXMgZGlzY2lwbGVzIGFza2VkIGhpbSwgc2F5aW5nLCBXaGF0IG1pZ2h0IHRoaXMgcGFyYWJsZSBiZT8KQW5kIGhlIHNhaWQsIFVudG8geW91IGl0IGlzIGdpdmVuIHRvIGtub3cgdGhlIG15c3RlcmllcyBvZiB0aGUga2luZ2RvbSBvZiBHb2Q6IGJ1dCB0byBvdGhlcnMgaW4gcGFyYWJsZXM7IHRoYXQgc2VlaW5nIHRoZXkgbWlnaHQgbm90IHNlZSwgYW5kIGhlYXJpbmcgdGhleSBtaWdodCBub3QgdW5kZXJzdGFuZC4KTm93IHRoZSBwYXJhYmxlIGlzIHRoaXM6IFRoZSBzZWVkIGlzIHRoZSB3b3JkIG9mIEdvZC4KVGhvc2UgYnkgdGhlIHdheSBzaWRlIGFyZSB0aGV5IHRoYXQgaGVhcjsgdGhlbiBjb21ldGggdGhlIGRldmlsLCBhbmQgdGFrZXRoIGF3YXkgdGhlIHdvcmQgb3V0IG9mIHRoZWlyIGhlYXJ0cywgbGVzdCB0aGV5IHNob3VsZCBiZWxpZXZlIGFuZCBiZSBzYXZlZC4KVGhleSBvbiB0aGUgcm9jayBhcmUgdGhleSwgd2hpY2gsIHdoZW4gdGhleSBoZWFyLCByZWNlaXZlIHRoZSB3b3JkIHdpdGggam95OyBhbmQgdGhlc2UgaGF2ZSBubyByb290LCB3aGljaCBmb3IgYSB3aGlsZSBiZWxpZXZlLCBhbmQgaW4gdGltZSBvZiB0ZW1wdGF0aW9uIGZhbGwgYXdheS4KQW5kIHRoYXQgd2hpY2ggZmVsbCBhbW9uZyB0aG9ybnMgYXJlIHRoZXksIHdoaWNoLCB3aGVuIHRoZXkgaGF2ZSBoZWFyZCwgZ28gZm9ydGgsIGFuZCBhcmUgY2hva2VkIHdpdGggY2FyZXMgYW5kIHJpY2hlcyBhbmQgcGxlYXN1cmVzIG9mIHRoaXMgbGlmZSwgYW5kIGJyaW5nIG5vIGZydWl0IHRvIHBlcmZlY3Rpb24uCkJ1dCB0aGF0IG9uIHRoZSBnb29kIGdyb3VuZCBhcmUgdGhleSwgd2hpY2ggaW4gYW4gaG9uZXN0IGFuZCBnb29kIGhlYXJ0LCBoYXZpbmcgaGVhcmQgdGhlIHdvcmQsIGtlZXAgaXQsIGFuZCBicmluZyBmb3J0aCBmcnVpdCB3aXRoIHBhdGllbmNlLgpObyBtYW4sIHdoZW4gaGUgaGF0aCBsaWdodGVkIGEgY2FuZGxlLCBjb3ZlcmV0aCBpdCB3aXRoIGEgdmVzc2VsLCBvciBwdXR0ZXRoIGl0IHVuZGVyIGEgYmVkOyBidXQgc2V0dGV0aCBpdCBvbiBhIGNhbmRsZXN0aWNrLCB0aGF0IHRoZXkgd2hpY2ggZW50ZXIgaW4gbWF5IHNlZSB0aGUgbGlnaHQuCkZvciBub3RoaW5nIGlzIHNlY3JldCwgdGhhdCBzaGFsbCBub3QgYmUgbWFkZSBtYW5pZmVzdDsgbmVpdGhlciBhbnkgdGhpbmcgaGlkLCB0aGF0IHNoYWxsIG5vdCBiZSBrbm93biBhbmQgY29tZSBhYnJvYWQuClRha2UgaGVlZCB0aGVyZWZvcmUgaG93IHllIGhlYXI6IGZvciB3aG9zb2V2ZXIgaGF0aCwgdG8gaGltIHNoYWxsIGJlIGdpdmVuOyBhbmQgd2hvc29ldmVyIGhhdGggbm90LCBmcm9tIGhpbSBzaGFsbCBiZSB0YWtlbiBldmVuIHRoYXQgd2hpY2ggaGUgc2VlbWV0aCB0byBoYXZlLgpUaGVuIGNhbWUgdG8gaGltIGhpcyBtb3RoZXIgYW5kIGhpcyBicmV0aHJlbiwgYW5kIGNvdWxkIG5vdCBjb21lIGF0IGhpbSBmb3IgdGhlIHByZXNzLgpBbmQgaXQgd2FzIHRvbGQgaGltIGJ5IGNlcnRhaW4gd2hpY2ggc2FpZCwgVGh5IG1vdGhlciBhbmQgdGh5IGJyZXRocmVuIHN0YW5kIHdpdGhvdXQsIGRlc2lyaW5nIHRvIHNlZSB0aGVlLgpBbmQgaGUgYW5zd2VyZWQgYW5kIHNhaWQgdW50byB0aGVtLCBNeSBtb3RoZXIgYW5kIG15IGJyZXRocmVuIGFyZSB0aGVzZSB3aGljaCBoZWFyIHRoZSB3b3JkIG9mIEdvZCwgYW5kIGRvIGl0LgpOb3cgaXQgY2FtZSB0byBwYXNzIG9uIGEgY2VydGFpbiBkYXksIHRoYXQgaGUgd2VudCBpbnRvIGEgc2hpcCB3aXRoIGhpcyBkaXNjaXBsZXM6IGFuZCBoZSBzYWlkIHVudG8gdGhlbSwgTGV0IHVzIGdvIG92ZXIgdW50byB0aGUgb3RoZXIgc2lkZSBvZiB0aGUgbGFrZS4gQW5kIHRoZXkgbGF1bmNoZWQgZm9ydGguCkJ1dCBhcyB0aGV5IHNhaWxlZCBoZSBmZWxsIGFzbGVlcDogYW5kIHRoZXJlIGNhbWUgZG93biBhIHN0b3JtIG9mIHdpbmQgb24gdGhlIGxha2U7IGFuZCB0aGV5IHdlcmUgZmlsbGVkIHdpdGggd2F0ZXIsIGFuZCB3ZXJlIGluIGplb3BhcmR5LgpBbmQgdGhleSBjYW1lIHRvIGhpbSwgYW5kIGF3b2tlIGhpbSwgc2F5aW5nLCBNYXN0ZXIsIG1hc3Rlciwgd2UgcGVyaXNoLiBUaGVuIGhlIGFyb3NlLCBhbmQgcmVidWtlZCB0aGUgd2luZCBhbmQgdGhlIHJhZ2luZyBvZiB0aGUgd2F0ZXI6IGFuZCB0aGV5IGNlYXNlZCwgYW5kIHRoZXJlIHdhcyBhIGNhbG0uCkFuZCBoZSBzYWlkIHVudG8gdGhlbSwgV2hlcmUgaXMgeW91ciBmYWl0aD8gQW5kIHRoZXkgYmVpbmcgYWZyYWlkIHdvbmRlcmVkLCBzYXlpbmcgb25lIHRvIGFub3RoZXIsIFdoYXQgbWFubmVyIG9mIG1hbiBpcyB0aGlzISBmb3IgaGUgY29tbWFuZGV0aCBldmVuIHRoZSB3aW5kcyBhbmQgd2F0ZXIsIGFuZCB0aGV5IG9iZXkgaGltLgpBbmQgdGhleSBhcnJpdmVkIGF0IHRoZSBjb3VudHJ5IG9mIHRoZSBHYWRhcmVuZXMsIHdoaWNoIGlzIG92ZXIgYWdhaW5zdCBHYWxpbGVlLgpBbmQgd2hlbiBoZSB3ZW50IGZvcnRoIHRvIGxhbmQsIHRoZXJlIG1ldCBoaW0gb3V0IG9mIHRoZSBjaXR5IGEgY2VydGFpbiBtYW4sIHdoaWNoIGhhZCBkZXZpbHMgbG9uZyB0aW1lLCBhbmQgd2FyZSBubyBjbG90aGVzLCBuZWl0aGVyIGFib2RlIGluIGFueSBob3VzZSwgYnV0IGluIHRoZSB0b21icy4KV2hlbiBoZSBzYXcgSmVzdXMsIGhlIGNyaWVkIG91dCwgYW5kIGZlbGwgZG93biBiZWZvcmUgaGltLCBhbmQgd2l0aCBhIGxvdWQgdm9pY2Ugc2FpZCwgV2hhdCBoYXZlIEkgdG8gZG8gd2l0aCB0aGVlLCBKZXN1cywgdGhvdSBTb24gb2YgR29kIG1vc3QgaGlnaD8gSSBiZXNlZWNoIHRoZWUsIHRvcm1lbnQgbWUgbm90LgooRm9yIGhlIGhhZCBjb21tYW5kZWQgdGhlIHVuY2xlYW4gc3Bpcml0IHRvIGNvbWUgb3V0IG9mIHRoZSBtYW4uIEZvciBvZnRlbnRpbWVzIGl0IGhhZCBjYXVnaHQgaGltOiBhbmQgaGUgd2FzIGtlcHQgYm91bmQgd2l0aCBjaGFpbnMgYW5kIGluIGZldHRlcnM7IGFuZCBoZSBicmFrZSB0aGUgYmFuZHMsIGFuZCB3YXMgZHJpdmVuIG9mIHRoZSBkZXZpbCBpbnRvIHRoZSB3aWxkZXJuZXNzLikKQW5kIEplc3VzIGFza2VkIGhpbSwgc2F5aW5nLCBXaGF0IGlzIHRoeSBuYW1lPyBBbmQgaGUgc2FpZCwgTGVnaW9uOiBiZWNhdXNlIG1hbnkgZGV2aWxzIHdlcmUgZW50ZXJlZCBpbnRvIGhpbS4KQW5kIHRoZXkgYmVzb3VnaHQgaGltIHRoYXQgaGUgd291bGQgbm90IGNvbW1hbmQgdGhlbSB0byBnbyBvdXQgaW50byB0aGUgZGVlcC4KQW5kIHRoZXJlIHdhcyB0aGVyZSBhbiBoZXJkIG9mIG1hbnkgc3dpbmUgZmVlZGluZyBvbiB0aGUgbW91bnRhaW46IGFuZCB0aGV5IGJlc291Z2h0IGhpbSB0aGF0IGhlIHdvdWxkIHN1ZmZlciB0aGVtIHRvIGVudGVyIGludG8gdGhlbS4gQW5kIGhlIHN1ZmZlcmVkIHRoZW0uClRoZW4gd2VudCB0aGUgZGV2aWxzIG91dCBvZiB0aGUgbWFuLCBhbmQgZW50ZXJlZCBpbnRvIHRoZSBzd2luZTogYW5kIHRoZSBoZXJkIHJhbiB2aW9sZW50bHkgZG93biBhIHN0ZWVwIHBsYWNlIGludG8gdGhlIGxha2UsIGFuZCB3ZXJlIGNob2tlZC4KV2hlbiB0aGV5IHRoYXQgZmVkIHRoZW0gc2F3IHdoYXQgd2FzIGRvbmUsIHRoZXkgZmxlZCwgYW5kIHdlbnQgYW5kIHRvbGQgaXQgaW4gdGhlIGNpdHkgYW5kIGluIHRoZSBjb3VudHJ5LgpUaGVuIHRoZXkgd2VudCBvdXQgdG8gc2VlIHdoYXQgd2FzIGRvbmU7IGFuZCBjYW1lIHRvIEplc3VzLCBhbmQgZm91bmQgdGhlIG1hbiwgb3V0IG9mIHdob20gdGhlIGRldmlscyB3ZXJlIGRlcGFydGVkLCBzaXR0aW5nIGF0IHRoZSBmZWV0IG9mIEplc3VzLCBjbG90aGVkLCBhbmQgaW4gaGlzIHJpZ2h0IG1pbmQ6IGFuZCB0aGV5IHdlcmUgYWZyYWlkLgpUaGV5IGFsc28gd2hpY2ggc2F3IGl0IHRvbGQgdGhlbSBieSB3aGF0IG1lYW5zIGhlIHRoYXQgd2FzIHBvc3Nlc3NlZCBvZiB0aGUgZGV2aWxzIHdhcyBoZWFsZWQuClRoZW4gdGhlIHdob2xlIG11bHRpdHVkZSBvZiB0aGUgY291bnRyeSBvZiB0aGUgR2FkYXJlbmVzIHJvdW5kIGFib3V0IGJlc291Z2h0IGhpbSB0byBkZXBhcnQgZnJvbSB0aGVtOyBmb3IgdGhleSB3ZXJlIHRha2VuIHdpdGggZ3JlYXQgZmVhcjogYW5kIGhlIHdlbnQgdXAgaW50byB0aGUgc2hpcCwgYW5kIHJldHVybmVkIGJhY2sgYWdhaW4uCk5vdyB0aGUgbWFuIG91dCBvZiB3aG9tIHRoZSBkZXZpbHMgd2VyZSBkZXBhcnRlZCBiZXNvdWdodCBoaW0gdGhhdCBoZSBtaWdodCBiZSB3aXRoIGhpbTogYnV0IEplc3VzIHNlbnQgaGltIGF3YXksIHNheWluZywKUmV0dXJuIHRvIHRoaW5lIG93biBob3VzZSwgYW5kIHNoZXcgaG93IGdyZWF0IHRoaW5ncyBHb2QgaGF0aCBkb25lIHVudG8gdGhlZS4gQW5kIGhlIHdlbnQgaGlzIHdheSwgYW5kIHB1Ymxpc2hlZCB0aHJvdWdob3V0IHRoZSB3aG9sZSBjaXR5IGhvdyBncmVhdCB0aGluZ3MgSmVzdXMgaGFkIGRvbmUgdW50byBoaW0uCkFuZCBpdCBjYW1lIHRvIHBhc3MsIHRoYXQsIHdoZW4gSmVzdXMgd2FzIHJldHVybmVkLCB0aGUgcGVvcGxlIGdsYWRseSByZWNlaXZlZCBoaW06IGZvciB0aGV5IHdlcmUgYWxsIHdhaXRpbmcgZm9yIGhpbS4KQW5kLCBiZWhvbGQsIHRoZXJlIGNhbWUgYSBtYW4gbmFtZWQgSmFpcnVzLCBhbmQgaGUgd2FzIGEgcnVsZXIgb2YgdGhlIHN5bmFnb2d1ZTogYW5kIGhlIGZlbGwgZG93biBhdCBKZXN1cycgZmVldCwgYW5kIGJlc291Z2h0IGhpbSB0aGF0IGhlIHdvdWxkIGNvbWUgaW50byBoaXMgaG91c2U6CkZvciBoZSBoYWQgb25lIG9ubHkgZGF1Z2h0ZXIsIGFib3V0IHR3ZWx2ZSB5ZWFycyBvZiBhZ2UsIGFuZCBzaGUgbGF5IGEgZHlpbmcuIEJ1dCBhcyBoZSB3ZW50IHRoZSBwZW9wbGUgdGhyb25nZWQgaGltLgpBbmQgYSB3b21hbiBoYXZpbmcgYW4gaXNzdWUgb2YgYmxvb2QgdHdlbHZlIHllYXJzLCB3aGljaCBoYWQgc3BlbnQgYWxsIGhlciBsaXZpbmcgdXBvbiBwaHlzaWNpYW5zLCBuZWl0aGVyIGNvdWxkIGJlIGhlYWxlZCBvZiBhbnksCkNhbWUgYmVoaW5kIGhpbSwgYW5kIHRvdWNoZWQgdGhlIGJvcmRlciBvZiBoaXMgZ2FybWVudDogYW5kIGltbWVkaWF0ZWx5IGhlciBpc3N1ZSBvZiBibG9vZCBzdGFuY2hlZC4KQW5kIEplc3VzIHNhaWQsIFdobyB0b3VjaGVkIG1lPyBXaGVuIGFsbCBkZW5pZWQsIFBldGVyIGFuZCB0aGV5IHRoYXQgd2VyZSB3aXRoIGhpbSBzYWlkLCBNYXN0ZXIsIHRoZSBtdWx0aXR1ZGUgdGhyb25nIHRoZWUgYW5kIHByZXNzIHRoZWUsIGFuZCBzYXllc3QgdGhvdSwgV2hvIHRvdWNoZWQgbWU/CkFuZCBKZXN1cyBzYWlkLCBTb21lYm9keSBoYXRoIHRvdWNoZWQgbWU6IGZvciBJIHBlcmNlaXZlIHRoYXQgdmlydHVlIGlzIGdvbmUgb3V0IG9mIG1lLgpBbmQgd2hlbiB0aGUgd29tYW4gc2F3IHRoYXQgc2hlIHdhcyBub3QgaGlkLCBzaGUgY2FtZSB0cmVtYmxpbmcsIGFuZCBmYWxsaW5nIGRvd24gYmVmb3JlIGhpbSwgc2hlIGRlY2xhcmVkIHVudG8gaGltIGJlZm9yZSBhbGwgdGhlIHBlb3BsZSBmb3Igd2hhdCBjYXVzZSBzaGUgaGFkIHRvdWNoZWQgaGltLCBhbmQgaG93IHNoZSB3YXMgaGVhbGVkIGltbWVkaWF0ZWx5LgpBbmQgaGUgc2FpZCB1bnRvIGhlciwgRGF1Z2h0ZXIsIGJlIG9mIGdvb2QgY29tZm9ydDogdGh5IGZhaXRoIGhhdGggbWFkZSB0aGVlIHdob2xlOyBnbyBpbiBwZWFjZS4KV2hpbGUgaGUgeWV0IHNwYWtlLCB0aGVyZSBjb21ldGggb25lIGZyb20gdGhlIHJ1bGVyIG9mIHRoZSBzeW5hZ29ndWUncyBob3VzZSwgc2F5aW5nIHRvIGhpbSwgVGh5IGRhdWdodGVyIGlzIGRlYWQ7IHRyb3VibGUgbm90IHRoZSBNYXN0ZXIuCkJ1dCB3aGVuIEplc3VzIGhlYXJkIGl0LCBoZSBhbnN3ZXJlZCBoaW0sIHNheWluZywgRmVhciBub3Q6IGJlbGlldmUgb25seSwgYW5kIHNoZSBzaGFsbCBiZSBtYWRlIHdob2xlLgpBbmQgd2hlbiBoZSBjYW1lIGludG8gdGhlIGhvdXNlLCBoZSBzdWZmZXJlZCBubyBtYW4gdG8gZ28gaW4sIHNhdmUgUGV0ZXIsIGFuZCBKYW1lcywgYW5kIEpvaG4sIGFuZCB0aGUgZmF0aGVyIGFuZCB0aGUgbW90aGVyIG9mIHRoZSBtYWlkZW4uCkFuZCBhbGwgd2VwdCwgYW5kIGJld2FpbGVkIGhlcjogYnV0IGhlIHNhaWQsIFdlZXAgbm90OyBzaGUgaXMgbm90IGRlYWQsIGJ1dCBzbGVlcGV0aC4KQW5kIHRoZXkgbGF1Z2hlZCBoaW0gdG8gc2Nvcm4sIGtub3dpbmcgdGhhdCBzaGUgd2FzIGRlYWQuCkFuZCBoZSBwdXQgdGhlbSBhbGwgb3V0LCBhbmQgdG9vayBoZXIgYnkgdGhlIGhhbmQsIGFuZCBjYWxsZWQsIHNheWluZywgTWFpZCwgYXJpc2UuCkFuZCBoZXIgc3Bpcml0IGNhbWUgYWdhaW4sIGFuZCBzaGUgYXJvc2Ugc3RyYWlnaHR3YXk6IGFuZCBoZSBjb21tYW5kZWQgdG8gZ2l2ZSBoZXIgbWVhdC4KQW5kIGhlciBwYXJlbnRzIHdlcmUgYXN0b25pc2hlZDogYnV0IGhlIGNoYXJnZWQgdGhlbSB0aGF0IHRoZXkgc2hvdWxkIHRlbGwgbm8gbWFuIHdoYXQgd2FzIGRvbmUuClRoZW4gaGUgY2FsbGVkIGhpcyB0d2VsdmUgZGlzY2lwbGVzIHRvZ2V0aGVyLCBhbmQgZ2F2ZSB0aGVtIHBvd2VyIGFuZCBhdXRob3JpdHkgb3ZlciBhbGwgZGV2aWxzLCBhbmQgdG8gY3VyZSBkaXNlYXNlcy4KQW5kIGhlIHNlbnQgdGhlbSB0byBwcmVhY2ggdGhlIGtpbmdkb20gb2YgR29kLCBhbmQgdG8gaGVhbCB0aGUgc2ljay4KQW5kIGhlIHNhaWQgdW50byB0aGVtLCBUYWtlIG5vdGhpbmcgZm9yIHlvdXIgam91cm5leSwgbmVpdGhlciBzdGF2ZXMsIG5vciBzY3JpcCwgbmVpdGhlciBicmVhZCwgbmVpdGhlciBtb25leTsgbmVpdGhlciBoYXZlIHR3byBjb2F0cyBhcGllY2UuCkFuZCB3aGF0c29ldmVyIGhvdXNlIHllIGVudGVyIGludG8sIHRoZXJlIGFiaWRlLCBhbmQgdGhlbmNlIGRlcGFydC4KQW5kIHdob3NvZXZlciB3aWxsIG5vdCByZWNlaXZlIHlvdSwgd2hlbiB5ZSBnbyBvdXQgb2YgdGhhdCBjaXR5LCBzaGFrZSBvZmYgdGhlIHZlcnkgZHVzdCBmcm9tIHlvdXIgZmVldCBmb3IgYSB0ZXN0aW1vbnkgYWdhaW5zdCB0aGVtLgpBbmQgdGhleSBkZXBhcnRlZCwgYW5kIHdlbnQgdGhyb3VnaCB0aGUgdG93bnMsIHByZWFjaGluZyB0aGUgZ29zcGVsLCBhbmQgaGVhbGluZyBldmVyeSB3aGVyZS4KTm93IEhlcm9kIHRoZSB0ZXRyYXJjaCBoZWFyZCBvZiBhbGwgdGhhdCB3YXMgZG9uZSBieSBoaW06IGFuZCBoZSB3YXMgcGVycGxleGVkLCBiZWNhdXNlIHRoYXQgaXQgd2FzIHNhaWQgb2Ygc29tZSwgdGhhdCBKb2huIHdhcyByaXNlbiBmcm9tIHRoZSBkZWFkOwpBbmQgb2Ygc29tZSwgdGhhdCBFbGlhcyBoYWQgYXBwZWFyZWQ7IGFuZCBvZiBvdGhlcnMsIHRoYXQgb25lIG9mIHRoZSBvbGQgcHJvcGhldHMgd2FzIHJpc2VuIGFnYWluLgpBbmQgSGVyb2Qgc2FpZCwgSm9obiBoYXZlIEkgYmVoZWFkZWQ6IGJ1dCB3aG8gaXMgdGhpcywgb2Ygd2hvbSBJIGhlYXIgc3VjaCB0aGluZ3M/IEFuZCBoZSBkZXNpcmVkIHRvIHNlZSBoaW0uCkFuZCB0aGUgYXBvc3RsZXMsIHdoZW4gdGhleSB3ZXJlIHJldHVybmVkLCB0b2xkIGhpbSBhbGwgdGhhdCB0aGV5IGhhZCBkb25lLiBBbmQgaGUgdG9vayB0aGVtLCBhbmQgd2VudCBhc2lkZSBwcml2YXRlbHkgaW50byBhIGRlc2VydCBwbGFjZSBiZWxvbmdpbmcgdG8gdGhlIGNpdHkgY2FsbGVkIEJldGhzYWlkYS4KQW5kIHRoZSBwZW9wbGUsIHdoZW4gdGhleSBrbmV3IGl0LCBmb2xsb3dlZCBoaW06IGFuZCBoZSByZWNlaXZlZCB0aGVtLCBhbmQgc3Bha2UgdW50byB0aGVtIG9mIHRoZSBraW5nZG9tIG9mIEdvZCwgYW5kIGhlYWxlZCB0aGVtIHRoYXQgaGFkIG5lZWQgb2YgaGVhbGluZy4KQW5kIHdoZW4gdGhlIGRheSBiZWdhbiB0byB3ZWFyIGF3YXksIHRoZW4gY2FtZSB0aGUgdHdlbHZlLCBhbmQgc2FpZCB1bnRvIGhpbSwgU2VuZCB0aGUgbXVsdGl0dWRlIGF3YXksIHRoYXQgdGhleSBtYXkgZ28gaW50byB0aGUgdG93bnMgYW5kIGNvdW50cnkgcm91bmQgYWJvdXQsIGFuZCBsb2RnZSwgYW5kIGdldCB2aWN0dWFsczogZm9yIHdlIGFyZSBoZXJlIGluIGEgZGVzZXJ0IHBsYWNlLgpCdXQgaGUgc2FpZCB1bnRvIHRoZW0sIEdpdmUgeWUgdGhlbSB0byBlYXQuIEFuZCB0aGV5IHNhaWQsIFdlIGhhdmUgbm8gbW9yZSBidXQgZml2ZSBsb2F2ZXMgYW5kIHR3byBmaXNoZXM7IGV4Y2VwdCB3ZSBzaG91bGQgZ28gYW5kIGJ1eSBtZWF0IGZvciBhbGwgdGhpcyBwZW9wbGUuCkZvciB0aGV5IHdlcmUgYWJvdXQgZml2ZSB0aG91c2FuZCBtZW4uIEFuZCBoZSBzYWlkIHRvIGhpcyBkaXNjaXBsZXMsIE1ha2UgdGhlbSBzaXQgZG93biBieSBmaWZ0aWVzIGluIGEgY29tcGFueS4KQW5kIHRoZXkgZGlkIHNvLCBhbmQgbWFkZSB0aGVtIGFsbCBzaXQgZG93bi4KVGhlbiBoZSB0b29rIHRoZSBmaXZlIGxvYXZlcyBhbmQgdGhlIHR3byBmaXNoZXMsIGFuZCBsb29raW5nIHVwIHRvIGhlYXZlbiwgaGUgYmxlc3NlZCB0aGVtLCBhbmQgYnJha2UsIGFuZCBnYXZlIHRvIHRoZSBkaXNjaXBsZXMgdG8gc2V0IGJlZm9yZSB0aGUgbXVsdGl0dWRlLgpBbmQgdGhleSBkaWQgZWF0LCBhbmQgd2VyZSBhbGwgZmlsbGVkOiBhbmQgdGhlcmUgd2FzIHRha2VuIHVwIG9mIGZyYWdtZW50cyB0aGF0IHJlbWFpbmVkIHRvIHRoZW0gdHdlbHZlIGJhc2tldHMuCkFuZCBpdCBjYW1lIHRvIHBhc3MsIGFzIGhlIHdhcyBhbG9uZSBwcmF5aW5nLCBoaXMgZGlzY2lwbGVzIHdlcmUgd2l0aCBoaW06IGFuZCBoZSBhc2tlZCB0aGVtLCBzYXlpbmcsIFdob20gc2F5IHRoZSBwZW9wbGUgdGhhdCBJIGFtPwpUaGV5IGFuc3dlcmluZyBzYWlkLCBKb2huIHRoZSBCYXB0aXN0OyBidXQgc29tZSBzYXksIEVsaWFzOyBhbmQgb3RoZXJzIHNheSwgdGhhdCBvbmUgb2YgdGhlIG9sZCBwcm9waGV0cyBpcyByaXNlbiBhZ2Fpbi4KSGUgc2FpZCB1bnRvIHRoZW0sIEJ1dCB3aG9tIHNheSB5ZSB0aGF0IEkgYW0/IFBldGVyIGFuc3dlcmluZyBzYWlkLCBUaGUgQ2hyaXN0IG9mIEdvZC4KQW5kIGhlIHN0cmFpdGx5IGNoYXJnZWQgdGhlbSwgYW5kIGNvbW1hbmRlZCB0aGVtIHRvIHRlbGwgbm8gbWFuIHRoYXQgdGhpbmc7ClNheWluZywgVGhlIFNvbiBvZiBtYW4gbXVzdCBzdWZmZXIgbWFueSB0aGluZ3MsIGFuZCBiZSByZWplY3RlZCBvZiB0aGUgZWxkZXJzIGFuZCBjaGllZiBwcmllc3RzIGFuZCBzY3JpYmVzLCBhbmQgYmUgc2xhaW4sIGFuZCBiZSByYWlzZWQgdGhlIHRoaXJkIGRheS4KQW5kIGhlIHNhaWQgdG8gdGhlbSBhbGwsIElmIGFueSBtYW4gd2lsbCBjb21lIGFmdGVyIG1lLCBsZXQgaGltIGRlbnkgaGltc2VsZiwgYW5kIHRha2UgdXAgaGlzIGNyb3NzIGRhaWx5LCBhbmQgZm9sbG93IG1lLgpGb3Igd2hvc29ldmVyIHdpbGwgc2F2ZSBoaXMgbGlmZSBzaGFsbCBsb3NlIGl0OiBidXQgd2hvc29ldmVyIHdpbGwgbG9zZSBoaXMgbGlmZSBmb3IgbXkgc2FrZSwgdGhlIHNhbWUgc2hhbGwgc2F2ZSBpdC4KRm9yIHdoYXQgaXMgYSBtYW4gYWR2YW50YWdlZCwgaWYgaGUgZ2FpbiB0aGUgd2hvbGUgd29ybGQsIGFuZCBsb3NlIGhpbXNlbGYsIG9yIGJlIGNhc3QgYXdheT8KRm9yIHdob3NvZXZlciBzaGFsbCBiZSBhc2hhbWVkIG9mIG1lIGFuZCBvZiBteSB3b3Jkcywgb2YgaGltIHNoYWxsIHRoZSBTb24gb2YgbWFuIGJlIGFzaGFtZWQsIHdoZW4gaGUgc2hhbGwgY29tZSBpbiBoaXMgb3duIGdsb3J5LCBhbmQgaW4gaGlzIEZhdGhlcidzLCBhbmQgb2YgdGhlIGhvbHkgYW5nZWxzLgpCdXQgSSB0ZWxsIHlvdSBvZiBhIHRydXRoLCB0aGVyZSBiZSBzb21lIHN0YW5kaW5nIGhlcmUsIHdoaWNoIHNoYWxsIG5vdCB0YXN0ZSBvZiBkZWF0aCwgdGlsbCB0aGV5IHNlZSB0aGUga2luZ2RvbSBvZiBHb2QuCkFuZCBpdCBjYW1lIHRvIHBhc3MgYWJvdXQgYW4gZWlnaHQgZGF5cyBhZnRlciB0aGVzZSBzYXlpbmdzLCBoZSB0b29rIFBldGVyIGFuZCBKb2huIGFuZCBKYW1lcywgYW5kIHdlbnQgdXAgaW50byBhIG1vdW50YWluIHRvIHByYXkuCkFuZCBhcyBoZSBwcmF5ZWQsIHRoZSBmYXNoaW9uIG9mIGhpcyBjb3VudGVuYW5jZSB3YXMgYWx0ZXJlZCwgYW5kIGhpcyByYWltZW50IHdhcyB3aGl0ZSBhbmQgZ2xpc3RlcmluZy4KQW5kLCBiZWhvbGQsIHRoZXJlIHRhbGtlZCB3aXRoIGhpbSB0d28gbWVuLCB3aGljaCB3ZXJlIE1vc2VzIGFuZCBFbGlhczoKV2hvIGFwcGVhcmVkIGluIGdsb3J5LCBhbmQgc3Bha2Ugb2YgaGlzIGRlY2Vhc2Ugd2hpY2ggaGUgc2hvdWxkIGFjY29tcGxpc2ggYXQgSmVydXNhbGVtLgpCdXQgUGV0ZXIgYW5kIHRoZXkgdGhhdCB3ZXJlIHdpdGggaGltIHdlcmUgaGVhdnkgd2l0aCBzbGVlcDogYW5kIHdoZW4gdGhleSB3ZXJlIGF3YWtlLCB0aGV5IHNhdyBoaXMgZ2xvcnksIGFuZCB0aGUgdHdvIG1lbiB0aGF0IHN0b29kIHdpdGggaGltLgpBbmQgaXQgY2FtZSB0byBwYXNzLCBhcyB0aGV5IGRlcGFydGVkIGZyb20gaGltLCBQZXRlciBzYWlkIHVudG8gSmVzdXMsIE1hc3RlciwgaXQgaXMgZ29vZCBmb3IgdXMgdG8gYmUgaGVyZTogYW5kIGxldCB1cyBtYWtlIHRocmVlIHRhYmVybmFjbGVzOyBvbmUgZm9yIHRoZWUsIGFuZCBvbmUgZm9yIE1vc2VzLCBhbmQgb25lIGZvciBFbGlhczogbm90IGtub3dpbmcgd2hhdCBoZSBzYWlkLgpXaGlsZSBoZSB0aHVzIHNwYWtlLCB0aGVyZSBjYW1lIGEgY2xvdWQsIGFuZCBvdmVyc2hhZG93ZWQgdGhlbTogYW5kIHRoZXkgZmVhcmVkIGFzIHRoZXkgZW50ZXJlZCBpbnRvIHRoZSBjbG91ZC4KQW5kIHRoZXJlIGNhbWUgYSB2b2ljZSBvdXQgb2YgdGhlIGNsb3VkLCBzYXlpbmcsIFRoaXMgaXMgbXkgYmVsb3ZlZCBTb246IGhlYXIgaGltLgpBbmQgd2hlbiB0aGUgdm9pY2Ugd2FzIHBhc3QsIEplc3VzIHdhcyBmb3VuZCBhbG9uZS4gQW5kIHRoZXkga2VwdCBpdCBjbG9zZSwgYW5kIHRvbGQgbm8gbWFuIGluIHRob3NlIGRheXMgYW55IG9mIHRob3NlIHRoaW5ncyB3aGljaCB0aGV5IGhhZCBzZWVuLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB0aGF0IG9uIHRoZSBuZXh0IGRheSwgd2hlbiB0aGV5IHdlcmUgY29tZSBkb3duIGZyb20gdGhlIGhpbGwsIG11Y2ggcGVvcGxlIG1ldCBoaW0uCkFuZCwgYmVob2xkLCBhIG1hbiBvZiB0aGUgY29tcGFueSBjcmllZCBvdXQsIHNheWluZywgTWFzdGVyLCBJIGJlc2VlY2ggdGhlZSwgbG9vayB1cG9uIG15IHNvbjogZm9yIGhlIGlzIG1pbmUgb25seSBjaGlsZC4KQW5kLCBsbywgYSBzcGlyaXQgdGFrZXRoIGhpbSwgYW5kIGhlIHN1ZGRlbmx5IGNyaWV0aCBvdXQ7IGFuZCBpdCB0ZWFyZXRoIGhpbSB0aGF0IGhlIGZvYW1ldGggYWdhaW4sIGFuZCBicnVpc2luZyBoaW0gaGFyZGx5IGRlcGFydGV0aCBmcm9tIGhpbS4KQW5kIEkgYmVzb3VnaHQgdGh5IGRpc2NpcGxlcyB0byBjYXN0IGhpbSBvdXQ7IGFuZCB0aGV5IGNvdWxkIG5vdC4KQW5kIEplc3VzIGFuc3dlcmluZyBzYWlkLCBPIGZhaXRobGVzcyBhbmQgcGVydmVyc2UgZ2VuZXJhdGlvbiwgaG93IGxvbmcgc2hhbGwgSSBiZSB3aXRoIHlvdSwgYW5kIHN1ZmZlciB5b3U/IEJyaW5nIHRoeSBzb24gaGl0aGVyLgpBbmQgYXMgaGUgd2FzIHlldCBhIGNvbWluZywgdGhlIGRldmlsIHRocmV3IGhpbSBkb3duLCBhbmQgdGFyZSBoaW0uIEFuZCBKZXN1cyByZWJ1a2VkIHRoZSB1bmNsZWFuIHNwaXJpdCwgYW5kIGhlYWxlZCB0aGUgY2hpbGQsIGFuZCBkZWxpdmVyZWQgaGltIGFnYWluIHRvIGhpcyBmYXRoZXIuCkFuZCB0aGV5IHdlcmUgYWxsIGFtYXplZCBhdCB0aGUgbWlnaHR5IHBvd2VyIG9mIEdvZC4gQnV0IHdoaWxlIHRoZXkgd29uZGVyZWQgZXZlcnkgb25lIGF0IGFsbCB0aGluZ3Mgd2hpY2ggSmVzdXMgZGlkLCBoZSBzYWlkIHVudG8gaGlzIGRpc2NpcGxlcywKTGV0IHRoZXNlIHNheWluZ3Mgc2luayBkb3duIGludG8geW91ciBlYXJzOiBmb3IgdGhlIFNvbiBvZiBtYW4gc2hhbGwgYmUgZGVsaXZlcmVkIGludG8gdGhlIGhhbmRzIG9mIG1lbi4KQnV0IHRoZXkgdW5kZXJzdG9vZCBub3QgdGhpcyBzYXlpbmcsIGFuZCBpdCB3YXMgaGlkIGZyb20gdGhlbSwgdGhhdCB0aGV5IHBlcmNlaXZlZCBpdCBub3Q6IGFuZCB0aGV5IGZlYXJlZCB0byBhc2sgaGltIG9mIHRoYXQgc2F5aW5nLgpUaGVuIHRoZXJlIGFyb3NlIGEgcmVhc29uaW5nIGFtb25nIHRoZW0sIHdoaWNoIG9mIHRoZW0gc2hvdWxkIGJlIGdyZWF0ZXN0LgpBbmQgSmVzdXMsIHBlcmNlaXZpbmcgdGhlIHRob3VnaHQgb2YgdGhlaXIgaGVhcnQsIHRvb2sgYSBjaGlsZCwgYW5kIHNldCBoaW0gYnkgaGltLApBbmQgc2FpZCB1bnRvIHRoZW0sIFdob3NvZXZlciBzaGFsbCByZWNlaXZlIHRoaXMgY2hpbGQgaW4gbXkgbmFtZSByZWNlaXZldGggbWU6IGFuZCB3aG9zb2V2ZXIgc2hhbGwgcmVjZWl2ZSBtZSByZWNlaXZldGggaGltIHRoYXQgc2VudCBtZTogZm9yIGhlIHRoYXQgaXMgbGVhc3QgYW1vbmcgeW91IGFsbCwgdGhlIHNhbWUgc2hhbGwgYmUgZ3JlYXQuCkFuZCBKb2huIGFuc3dlcmVkIGFuZCBzYWlkLCBNYXN0ZXIsIHdlIHNhdyBvbmUgY2FzdGluZyBvdXQgZGV2aWxzIGluIHRoeSBuYW1lOyBhbmQgd2UgZm9yYmFkIGhpbSwgYmVjYXVzZSBoZSBmb2xsb3dldGggbm90IHdpdGggdXMuCkFuZCBKZXN1cyBzYWlkIHVudG8gaGltLCBGb3JiaWQgaGltIG5vdDogZm9yIGhlIHRoYXQgaXMgbm90IGFnYWluc3QgdXMgaXMgZm9yIHVzLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB3aGVuIHRoZSB0aW1lIHdhcyBjb21lIHRoYXQgaGUgc2hvdWxkIGJlIHJlY2VpdmVkIHVwLCBoZSBzdGVkZmFzdGx5IHNldCBoaXMgZmFjZSB0byBnbyB0byBKZXJ1c2FsZW0sCkFuZCBzZW50IG1lc3NlbmdlcnMgYmVmb3JlIGhpcyBmYWNlOiBhbmQgdGhleSB3ZW50LCBhbmQgZW50ZXJlZCBpbnRvIGEgdmlsbGFnZSBvZiB0aGUgU2FtYXJpdGFucywgdG8gbWFrZSByZWFkeSBmb3IgaGltLgpBbmQgdGhleSBkaWQgbm90IHJlY2VpdmUgaGltLCBiZWNhdXNlIGhpcyBmYWNlIHdhcyBhcyB0aG91Z2ggaGUgd291bGQgZ28gdG8gSmVydXNhbGVtLgpBbmQgd2hlbiBoaXMgZGlzY2lwbGVzIEphbWVzIGFuZCBKb2huIHNhdyB0aGlzLCB0aGV5IHNhaWQsIExvcmQsIHdpbHQgdGhvdSB0aGF0IHdlIGNvbW1hbmQgZmlyZSB0byBjb21lIGRvd24gZnJvbSBoZWF2ZW4sIGFuZCBjb25zdW1lIHRoZW0sIGV2ZW4gYXMgRWxpYXMgZGlkPwpCdXQgaGUgdHVybmVkLCBhbmQgcmVidWtlZCB0aGVtLCBhbmQgc2FpZCwgWWUga25vdyBub3Qgd2hhdCBtYW5uZXIgb2Ygc3Bpcml0IHllIGFyZSBvZi4KRm9yIHRoZSBTb24gb2YgbWFuIGlzIG5vdCBjb21lIHRvIGRlc3Ryb3kgbWVuJ3MgbGl2ZXMsIGJ1dCB0byBzYXZlIHRoZW0uIEFuZCB0aGV5IHdlbnQgdG8gYW5vdGhlciB2aWxsYWdlLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB0aGF0LCBhcyB0aGV5IHdlbnQgaW4gdGhlIHdheSwgYSBjZXJ0YWluIG1hbiBzYWlkIHVudG8gaGltLCBMb3JkLCBJIHdpbGwgZm9sbG93IHRoZWUgd2hpdGhlcnNvZXZlciB0aG91IGdvZXN0LgpBbmQgSmVzdXMgc2FpZCB1bnRvIGhpbSwgRm94ZXMgaGF2ZSBob2xlcywgYW5kIGJpcmRzIG9mIHRoZSBhaXIgaGF2ZSBuZXN0czsgYnV0IHRoZSBTb24gb2YgbWFuIGhhdGggbm90IHdoZXJlIHRvIGxheSBoaXMgaGVhZC4KQW5kIGhlIHNhaWQgdW50byBhbm90aGVyLCBGb2xsb3cgbWUuIEJ1dCBoZSBzYWlkLCBMb3JkLCBzdWZmZXIgbWUgZmlyc3QgdG8gZ28gYW5kIGJ1cnkgbXkgZmF0aGVyLgpKZXN1cyBzYWlkIHVudG8gaGltLCBMZXQgdGhlIGRlYWQgYnVyeSB0aGVpciBkZWFkOiBidXQgZ28gdGhvdSBhbmQgcHJlYWNoIHRoZSBraW5nZG9tIG9mIEdvZC4KQW5kIGFub3RoZXIgYWxzbyBzYWlkLCBMb3JkLCBJIHdpbGwgZm9sbG93IHRoZWU7IGJ1dCBsZXQgbWUgZmlyc3QgZ28gYmlkIHRoZW0gZmFyZXdlbGwsIHdoaWNoIGFyZSBhdCBob21lIGF0IG15IGhvdXNlLgpBbmQgSmVzdXMgc2FpZCB1bnRvIGhpbSwgTm8gbWFuLCBoYXZpbmcgcHV0IGhpcyBoYW5kIHRvIHRoZSBwbG91Z2gsIGFuZCBsb29raW5nIGJhY2ssIGlzIGZpdCBmb3IgdGhlIGtpbmdkb20gb2YgR29kLgpBZnRlciB0aGVzZSB0aGluZ3MgdGhlIExPUkQgYXBwb2ludGVkIG90aGVyIHNldmVudHkgYWxzbywgYW5kIHNlbnQgdGhlbSB0d28gYW5kIHR3byBiZWZvcmUgaGlzIGZhY2UgaW50byBldmVyeSBjaXR5IGFuZCBwbGFjZSwgd2hpdGhlciBoZSBoaW1zZWxmIHdvdWxkIGNvbWUuClRoZXJlZm9yZSBzYWlkIGhlIHVudG8gdGhlbSwgVGhlIGhhcnZlc3QgdHJ1bHkgaXMgZ3JlYXQsIGJ1dCB0aGUgbGFib3VyZXJzIGFyZSBmZXc6IHByYXkgeWUgdGhlcmVmb3JlIHRoZSBMb3JkIG9mIHRoZSBoYXJ2ZXN0LCB0aGF0IGhlIHdvdWxkIHNlbmQgZm9ydGggbGFib3VyZXJzIGludG8gaGlzIGhhcnZlc3QuCkdvIHlvdXIgd2F5czogYmVob2xkLCBJIHNlbmQgeW91IGZvcnRoIGFzIGxhbWJzIGFtb25nIHdvbHZlcy4KQ2FycnkgbmVpdGhlciBwdXJzZSwgbm9yIHNjcmlwLCBub3Igc2hvZXM6IGFuZCBzYWx1dGUgbm8gbWFuIGJ5IHRoZSB3YXkuCkFuZCBpbnRvIHdoYXRzb2V2ZXIgaG91c2UgeWUgZW50ZXIsIGZpcnN0IHNheSwgUGVhY2UgYmUgdG8gdGhpcyBob3VzZS4KQW5kIGlmIHRoZSBzb24gb2YgcGVhY2UgYmUgdGhlcmUsIHlvdXIgcGVhY2Ugc2hhbGwgcmVzdCB1cG9uIGl0OiBpZiBub3QsIGl0IHNoYWxsIHR1cm4gdG8geW91IGFnYWluLgpBbmQgaW4gdGhlIHNhbWUgaG91c2UgcmVtYWluLCBlYXRpbmcgYW5kIGRyaW5raW5nIHN1Y2ggdGhpbmdzIGFzIHRoZXkgZ2l2ZTogZm9yIHRoZSBsYWJvdXJlciBpcyB3b3J0aHkgb2YgaGlzIGhpcmUuIEdvIG5vdCBmcm9tIGhvdXNlIHRvIGhvdXNlLgpBbmQgaW50byB3aGF0c29ldmVyIGNpdHkgeWUgZW50ZXIsIGFuZCB0aGV5IHJlY2VpdmUgeW91LCBlYXQgc3VjaCB0aGluZ3MgYXMgYXJlIHNldCBiZWZvcmUgeW91OgpBbmQgaGVhbCB0aGUgc2ljayB0aGF0IGFyZSB0aGVyZWluLCBhbmQgc2F5IHVudG8gdGhlbSwgVGhlIGtpbmdkb20gb2YgR29kIGlzIGNvbWUgbmlnaCB1bnRvIHlvdS4KQnV0IGludG8gd2hhdHNvZXZlciBjaXR5IHllIGVudGVyLCBhbmQgdGhleSByZWNlaXZlIHlvdSBub3QsIGdvIHlvdXIgd2F5cyBvdXQgaW50byB0aGUgc3RyZWV0cyBvZiB0aGUgc2FtZSwgYW5kIHNheSwKRXZlbiB0aGUgdmVyeSBkdXN0IG9mIHlvdXIgY2l0eSwgd2hpY2ggY2xlYXZldGggb24gdXMsIHdlIGRvIHdpcGUgb2ZmIGFnYWluc3QgeW91OiBub3R3aXRoc3RhbmRpbmcgYmUgeWUgc3VyZSBvZiB0aGlzLCB0aGF0IHRoZSBraW5nZG9tIG9mIEdvZCBpcyBjb21lIG5pZ2ggdW50byB5b3UuCkJ1dCBJIHNheSB1bnRvIHlvdSwgdGhhdCBpdCBzaGFsbCBiZSBtb3JlIHRvbGVyYWJsZSBpbiB0aGF0IGRheSBmb3IgU29kb20sIHRoYW4gZm9yIHRoYXQgY2l0eS4KV29lIHVudG8gdGhlZSwgQ2hvcmF6aW4hIHdvZSB1bnRvIHRoZWUsIEJldGhzYWlkYSEgZm9yIGlmIHRoZSBtaWdodHkgd29ya3MgaGFkIGJlZW4gZG9uZSBpbiBUeXJlIGFuZCBTaWRvbiwgd2hpY2ggaGF2ZSBiZWVuIGRvbmUgaW4geW91LCB0aGV5IGhhZCBhIGdyZWF0IHdoaWxlIGFnbyByZXBlbnRlZCwgc2l0dGluZyBpbiBzYWNrY2xvdGggYW5kIGFzaGVzLgpCdXQgaXQgc2hhbGwgYmUgbW9yZSB0b2xlcmFibGUgZm9yIFR5cmUgYW5kIFNpZG9uIGF0IHRoZSBqdWRnbWVudCwgdGhhbiBmb3IgeW91LgpBbmQgdGhvdSwgQ2FwZXJuYXVtLCB3aGljaCBhcnQgZXhhbHRlZCB0byBoZWF2ZW4sIHNoYWx0IGJlIHRocnVzdCBkb3duIHRvIGhlbGwuCkhlIHRoYXQgaGVhcmV0aCB5b3UgaGVhcmV0aCBtZTsgYW5kIGhlIHRoYXQgZGVzcGlzZXRoIHlvdSBkZXNwaXNldGggbWU7IGFuZCBoZSB0aGF0IGRlc3Bpc2V0aCBtZSBkZXNwaXNldGggaGltIHRoYXQgc2VudCBtZS4KQW5kIHRoZSBzZXZlbnR5IHJldHVybmVkIGFnYWluIHdpdGggam95LCBzYXlpbmcsIExvcmQsIGV2ZW4gdGhlIGRldmlscyBhcmUgc3ViamVjdCB1bnRvIHVzIHRocm91Z2ggdGh5IG5hbWUuCkFuZCBoZSBzYWlkIHVudG8gdGhlbSwgSSBiZWhlbGQgU2F0YW4gYXMgbGlnaHRuaW5nIGZhbGwgZnJvbSBoZWF2ZW4uCkJlaG9sZCwgSSBnaXZlIHVudG8geW91IHBvd2VyIHRvIHRyZWFkIG9uIHNlcnBlbnRzIGFuZCBzY29ycGlvbnMsIGFuZCBvdmVyIGFsbCB0aGUgcG93ZXIgb2YgdGhlIGVuZW15OiBhbmQgbm90aGluZyBzaGFsbCBieSBhbnkgbWVhbnMgaHVydCB5b3UuCk5vdHdpdGhzdGFuZGluZyBpbiB0aGlzIHJlam9pY2Ugbm90LCB0aGF0IHRoZSBzcGlyaXRzIGFyZSBzdWJqZWN0IHVudG8geW91OyBidXQgcmF0aGVyIHJlam9pY2UsIGJlY2F1c2UgeW91ciBuYW1lcyBhcmUgd3JpdHRlbiBpbiBoZWF2ZW4uCkluIHRoYXQgaG91ciBKZXN1cyByZWpvaWNlZCBpbiBzcGlyaXQsIGFuZCBzYWlkLCBJIHRoYW5rIHRoZWUsIE8gRmF0aGVyLCBMb3JkIG9mIGhlYXZlbiBhbmQgZWFydGgsIHRoYXQgdGhvdSBoYXN0IGhpZCB0aGVzZSB0aGluZ3MgZnJvbSB0aGUgd2lzZSBhbmQgcHJ1ZGVudCwgYW5kIGhhc3QgcmV2ZWFsZWQgdGhlbSB1bnRvIGJhYmVzOiBldmVuIHNvLCBGYXRoZXI7IGZvciBzbyBpdCBzZWVtZWQgZ29vZCBpbiB0aHkgc2lnaHQuCkFsbCB0aGluZ3MgYXJlIGRlbGl2ZXJlZCB0byBtZSBvZiBteSBGYXRoZXI6IGFuZCBubyBtYW4ga25vd2V0aCB3aG8gdGhlIFNvbiBpcywgYnV0IHRoZSBGYXRoZXI7IGFuZCB3aG8gdGhlIEZhdGhlciBpcywgYnV0IHRoZSBTb24sIGFuZCBoZSB0byB3aG9tIHRoZSBTb24gd2lsbCByZXZlYWwgaGltLgpBbmQgaGUgdHVybmVkIGhpbSB1bnRvIGhpcyBkaXNjaXBsZXMsIGFuZCBzYWlkIHByaXZhdGVseSwgQmxlc3NlZCBhcmUgdGhlIGV5ZXMgd2hpY2ggc2VlIHRoZSB0aGluZ3MgdGhhdCB5ZSBzZWU6CkZvciBJIHRlbGwgeW91LCB0aGF0IG1hbnkgcHJvcGhldHMgYW5kIGtpbmdzIGhhdmUgZGVzaXJlZCB0byBzZWUgdGhvc2UgdGhpbmdzIHdoaWNoIHllIHNlZSwgYW5kIGhhdmUgbm90IHNlZW4gdGhlbTsgYW5kIHRvIGhlYXIgdGhvc2UgdGhpbmdzIHdoaWNoIHllIGhlYXIsIGFuZCBoYXZlIG5vdCBoZWFyZCB0aGVtLgpBbmQsIGJlaG9sZCwgYSBjZXJ0YWluIGxhd3llciBzdG9vZCB1cCwgYW5kIHRlbXB0ZWQgaGltLCBzYXlpbmcsIE1hc3Rlciwgd2hhdCBzaGFsbCBJIGRvIHRvIGluaGVyaXQgZXRlcm5hbCBsaWZlPwpIZSBzYWlkIHVudG8gaGltLCBXaGF0IGlzIHdyaXR0ZW4gaW4gdGhlIGxhdz8gaG93IHJlYWRlc3QgdGhvdT8KQW5kIGhlIGFuc3dlcmluZyBzYWlkLCBUaG91IHNoYWx0IGxvdmUgdGhlIExvcmQgdGh5IEdvZCB3aXRoIGFsbCB0aHkgaGVhcnQsIGFuZCB3aXRoIGFsbCB0aHkgc291bCwgYW5kIHdpdGggYWxsIHRoeSBzdHJlbmd0aCwgYW5kIHdpdGggYWxsIHRoeSBtaW5kOyBhbmQgdGh5IG5laWdoYm91ciBhcyB0aHlzZWxmLgpBbmQgaGUgc2FpZCB1bnRvIGhpbSwgVGhvdSBoYXN0IGFuc3dlcmVkIHJpZ2h0OiB0aGlzIGRvLCBhbmQgdGhvdSBzaGFsdCBsaXZlLgpCdXQgaGUsIHdpbGxpbmcgdG8ganVzdGlmeSBoaW1zZWxmLCBzYWlkIHVudG8gSmVzdXMsIEFuZCB3aG8gaXMgbXkgbmVpZ2hib3VyPwpBbmQgSmVzdXMgYW5zd2VyaW5nIHNhaWQsIEEgY2VydGFpbiBtYW4gd2VudCBkb3duIGZyb20gSmVydXNhbGVtIHRvIEplcmljaG8sIGFuZCBmZWxsIGFtb25nIHRoaWV2ZXMsIHdoaWNoIHN0cmlwcGVkIGhpbSBvZiBoaXMgcmFpbWVudCwgYW5kIHdvdW5kZWQgaGltLCBhbmQgZGVwYXJ0ZWQsIGxlYXZpbmcgaGltIGhhbGYgZGVhZC4KQW5kIGJ5IGNoYW5jZSB0aGVyZSBjYW1lIGRvd24gYSBjZXJ0YWluIHByaWVzdCB0aGF0IHdheTogYW5kIHdoZW4gaGUgc2F3IGhpbSwgaGUgcGFzc2VkIGJ5IG9uIHRoZSBvdGhlciBzaWRlLgpBbmQgbGlrZXdpc2UgYSBMZXZpdGUsIHdoZW4gaGUgd2FzIGF0IHRoZSBwbGFjZSwgY2FtZSBhbmQgbG9va2VkIG9uIGhpbSwgYW5kIHBhc3NlZCBieSBvbiB0aGUgb3RoZXIgc2lkZS4KQnV0IGEgY2VydGFpbiBTYW1hcml0YW4sIGFzIGhlIGpvdXJuZXllZCwgY2FtZSB3aGVyZSBoZSB3YXM6IGFuZCB3aGVuIGhlIHNhdyBoaW0sIGhlIGhhZCBjb21wYXNzaW9uIG9uIGhpbSwKQW5kIHdlbnQgdG8gaGltLCBhbmQgYm91bmQgdXAgaGlzIHdvdW5kcywgcG91cmluZyBpbiBvaWwgYW5kIHdpbmUsIGFuZCBzZXQgaGltIG9uIGhpcyBvd24gYmVhc3QsIGFuZCBicm91Z2h0IGhpbSB0byBhbiBpbm4sIGFuZCB0b29rIGNhcmUgb2YgaGltLgpBbmQgb24gdGhlIG1vcnJvdyB3aGVuIGhlIGRlcGFydGVkLCBoZSB0b29rIG91dCB0d28gcGVuY2UsIGFuZCBnYXZlIHRoZW0gdG8gdGhlIGhvc3QsIGFuZCBzYWlkIHVudG8gaGltLCBUYWtlIGNhcmUgb2YgaGltOyBhbmQgd2hhdHNvZXZlciB0aG91IHNwZW5kZXN0IG1vcmUsIHdoZW4gSSBjb21lIGFnYWluLCBJIHdpbGwgcmVwYXkgdGhlZS4KV2hpY2ggbm93IG9mIHRoZXNlIHRocmVlLCB0aGlua2VzdCB0aG91LCB3YXMgbmVpZ2hib3VyIHVudG8gaGltIHRoYXQgZmVsbCBhbW9uZyB0aGUgdGhpZXZlcz8KQW5kIGhlIHNhaWQsIEhlIHRoYXQgc2hld2VkIG1lcmN5IG9uIGhpbS4gVGhlbiBzYWlkIEplc3VzIHVudG8gaGltLCBHbywgYW5kIGRvIHRob3UgbGlrZXdpc2UuCk5vdyBpdCBjYW1lIHRvIHBhc3MsIGFzIHRoZXkgd2VudCwgdGhhdCBoZSBlbnRlcmVkIGludG8gYSBjZXJ0YWluIHZpbGxhZ2U6IGFuZCBhIGNlcnRhaW4gd29tYW4gbmFtZWQgTWFydGhhIHJlY2VpdmVkIGhpbSBpbnRvIGhlciBob3VzZS4KQW5kIHNoZSBoYWQgYSBzaXN0ZXIgY2FsbGVkIE1hcnksIHdoaWNoIGFsc28gc2F0IGF0IEplc3VzJyBmZWV0LCBhbmQgaGVhcmQgaGlzIHdvcmQuCkJ1dCBNYXJ0aGEgd2FzIGN1bWJlcmVkIGFib3V0IG11Y2ggc2VydmluZywgYW5kIGNhbWUgdG8gaGltLCBhbmQgc2FpZCwgTG9yZCwgZG9zdCB0aG91IG5vdCBjYXJlIHRoYXQgbXkgc2lzdGVyIGhhdGggbGVmdCBtZSB0byBzZXJ2ZSBhbG9uZT8gYmlkIGhlciB0aGVyZWZvcmUgdGhhdCBzaGUgaGVscCBtZS4KQW5kIEplc3VzIGFuc3dlcmVkIGFuZCBzYWlkIHVudG8gaGVyLCBNYXJ0aGEsIE1hcnRoYSwgdGhvdSBhcnQgY2FyZWZ1bCBhbmQgdHJvdWJsZWQgYWJvdXQgbWFueSB0aGluZ3M6CkJ1dCBvbmUgdGhpbmcgaXMgbmVlZGZ1bDogYW5kIE1hcnkgaGF0aCBjaG9zZW4gdGhhdCBnb29kIHBhcnQsIHdoaWNoIHNoYWxsIG5vdCBiZSB0YWtlbiBhd2F5IGZyb20gaGVyLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB0aGF0LCBhcyBoZSB3YXMgcHJheWluZyBpbiBhIGNlcnRhaW4gcGxhY2UsIHdoZW4gaGUgY2Vhc2VkLCBvbmUgb2YgaGlzIGRpc2NpcGxlcyBzYWlkIHVudG8gaGltLCBMb3JkLCB0ZWFjaCB1cyB0byBwcmF5LCBhcyBKb2huIGFsc28gdGF1Z2h0IGhpcyBkaXNjaXBsZXMuCkFuZCBoZSBzYWlkIHVudG8gdGhlbSwgV2hlbiB5ZSBwcmF5LCBzYXksIE91ciBGYXRoZXIgd2hpY2ggYXJ0IGluIGhlYXZlbiwgSGFsbG93ZWQgYmUgdGh5IG5hbWUuIFRoeSBraW5nZG9tIGNvbWUuIFRoeSB3aWxsIGJlIGRvbmUsIGFzIGluIGhlYXZlbiwgc28gaW4gZWFydGguCkdpdmUgdXMgZGF5IGJ5IGRheSBvdXIgZGFpbHkgYnJlYWQuCkFuZCBmb3JnaXZlIHVzIG91ciBzaW5zOyBmb3Igd2UgYWxzbyBmb3JnaXZlIGV2ZXJ5IG9uZSB0aGF0IGlzIGluZGVidGVkIHRvIHVzLiBBbmQgbGVhZCB1cyBub3QgaW50byB0ZW1wdGF0aW9uOyBidXQgZGVsaXZlciB1cyBmcm9tIGV2aWwuCkFuZCBoZSBzYWlkIHVudG8gdGhlbSwgV2hpY2ggb2YgeW91IHNoYWxsIGhhdmUgYSBmcmllbmQsIGFuZCBzaGFsbCBnbyB1bnRvIGhpbSBhdCBtaWRuaWdodCwgYW5kIHNheSB1bnRvIGhpbSwgRnJpZW5kLCBsZW5kIG1lIHRocmVlIGxvYXZlczsKRm9yIGEgZnJpZW5kIG9mIG1pbmUgaW4gaGlzIGpvdXJuZXkgaXMgY29tZSB0byBtZSwgYW5kIEkgaGF2ZSBub3RoaW5nIHRvIHNldCBiZWZvcmUgaGltPwpBbmQgaGUgZnJvbSB3aXRoaW4gc2hhbGwgYW5zd2VyIGFuZCBzYXksIFRyb3VibGUgbWUgbm90OiB0aGUgZG9vciBpcyBub3cgc2h1dCwgYW5kIG15IGNoaWxkcmVuIGFyZSB3aXRoIG1lIGluIGJlZDsgSSBjYW5ub3QgcmlzZSBhbmQgZ2l2ZSB0aGVlLgpJIHNheSB1bnRvIHlvdSwgVGhvdWdoIGhlIHdpbGwgbm90IHJpc2UgYW5kIGdpdmUgaGltLCBiZWNhdXNlIGhlIGlzIGhpcyBmcmllbmQsIHlldCBiZWNhdXNlIG9mIGhpcyBpbXBvcnR1bml0eSBoZSB3aWxsIHJpc2UgYW5kIGdpdmUgaGltIGFzIG1hbnkgYXMgaGUgbmVlZGV0aC4KQW5kIEkgc2F5IHVudG8geW91LCBBc2ssIGFuZCBpdCBzaGFsbCBiZSBnaXZlbiB5b3U7IHNlZWssIGFuZCB5ZSBzaGFsbCBmaW5kOyBrbm9jaywgYW5kIGl0IHNoYWxsIGJlIG9wZW5lZCB1bnRvIHlvdS4KRm9yIGV2ZXJ5IG9uZSB0aGF0IGFza2V0aCByZWNlaXZldGg7IGFuZCBoZSB0aGF0IHNlZWtldGggZmluZGV0aDsgYW5kIHRvIGhpbSB0aGF0IGtub2NrZXRoIGl0IHNoYWxsIGJlIG9wZW5lZC4KSWYgYSBzb24gc2hhbGwgYXNrIGJyZWFkIG9mIGFueSBvZiB5b3UgdGhhdCBpcyBhIGZhdGhlciwgd2lsbCBoZSBnaXZlIGhpbSBhIHN0b25lPyBvciBpZiBoZSBhc2sgYSBmaXNoLCB3aWxsIGhlIGZvciBhIGZpc2ggZ2l2ZSBoaW0gYSBzZXJwZW50PwpPciBpZiBoZSBzaGFsbCBhc2sgYW4gZWdnLCB3aWxsIGhlIG9mZmVyIGhpbSBhIHNjb3JwaW9uPwpJZiB5ZSB0aGVuLCBiZWluZyBldmlsLCBrbm93IGhvdyB0byBnaXZlIGdvb2QgZ2lmdHMgdW50byB5b3VyIGNoaWxkcmVuOiBob3cgbXVjaCBtb3JlIHNoYWxsIHlvdXIgaGVhdmVubHkgRmF0aGVyIGdpdmUgdGhlIEhvbHkgU3Bpcml0IHRvIHRoZW0gdGhhdCBhc2sgaGltPwpBbmQgaGUgd2FzIGNhc3Rpbmcgb3V0IGEgZGV2aWwsIGFuZCBpdCB3YXMgZHVtYi4gQW5kIGl0IGNhbWUgdG8gcGFzcywgd2hlbiB0aGUgZGV2aWwgd2FzIGdvbmUgb3V0LCB0aGUgZHVtYiBzcGFrZTsgYW5kIHRoZSBwZW9wbGUgd29uZGVyZWQuCkJ1dCBzb21lIG9mIHRoZW0gc2FpZCwgSGUgY2FzdGV0aCBvdXQgZGV2aWxzIHRocm91Z2ggQmVlbHplYnViIHRoZSBjaGllZiBvZiB0aGUgZGV2aWxzLgpBbmQgb3RoZXJzLCB0ZW1wdGluZyBoaW0sIHNvdWdodCBvZiBoaW0gYSBzaWduIGZyb20gaGVhdmVuLgpCdXQgaGUsIGtub3dpbmcgdGhlaXIgdGhvdWdodHMsIHNhaWQgdW50byB0aGVtLCBFdmVyeSBraW5nZG9tIGRpdmlkZWQgYWdhaW5zdCBpdHNlbGYgaXMgYnJvdWdodCB0byBkZXNvbGF0aW9uOyBhbmQgYSBob3VzZSBkaXZpZGVkIGFnYWluc3QgYSBob3VzZSBmYWxsZXRoLgpJZiBTYXRhbiBhbHNvIGJlIGRpdmlkZWQgYWdhaW5zdCBoaW1zZWxmLCBob3cgc2hhbGwgaGlzIGtpbmdkb20gc3RhbmQ/IGJlY2F1c2UgeWUgc2F5IHRoYXQgSSBjYXN0IG91dCBkZXZpbHMgdGhyb3VnaCBCZWVsemVidWIuCkFuZCBpZiBJIGJ5IEJlZWx6ZWJ1YiBjYXN0IG91dCBkZXZpbHMsIGJ5IHdob20gZG8geW91ciBzb25zIGNhc3QgdGhlbSBvdXQ/IHRoZXJlZm9yZSBzaGFsbCB0aGV5IGJlIHlvdXIganVkZ2VzLgpCdXQgaWYgSSB3aXRoIHRoZSBmaW5nZXIgb2YgR29kIGNhc3Qgb3V0IGRldmlscywgbm8gZG91YnQgdGhlIGtpbmdkb20gb2YgR29kIGlzIGNvbWUgdXBvbiB5b3UuCldoZW4gYSBzdHJvbmcgbWFuIGFybWVkIGtlZXBldGggaGlzIHBhbGFjZSwgaGlzIGdvb2RzIGFyZSBpbiBwZWFjZToKQnV0IHdoZW4gYSBzdHJvbmdlciB0aGFuIGhlIHNoYWxsIGNvbWUgdXBvbiBoaW0sIGFuZCBvdmVyY29tZSBoaW0sIGhlIHRha2V0aCBmcm9tIGhpbSBhbGwgaGlzIGFybW91ciB3aGVyZWluIGhlIHRydXN0ZWQsIGFuZCBkaXZpZGV0aCBoaXMgc3BvaWxzLgpIZSB0aGF0IGlzIG5vdCB3aXRoIG1lIGlzIGFnYWluc3QgbWU6IGFuZCBoZSB0aGF0IGdhdGhlcmV0aCBub3Qgd2l0aCBtZSBzY2F0dGVyZXRoLgpXaGVuIHRoZSB1bmNsZWFuIHNwaXJpdCBpcyBnb25lIG91dCBvZiBhIG1hbiwgaGUgd2Fsa2V0aCB0aHJvdWdoIGRyeSBwbGFjZXMsIHNlZWtpbmcgcmVzdDsgYW5kIGZpbmRpbmcgbm9uZSwgaGUgc2FpdGgsIEkgd2lsbCByZXR1cm4gdW50byBteSBob3VzZSB3aGVuY2UgSSBjYW1lIG91dC4KQW5kIHdoZW4gaGUgY29tZXRoLCBoZSBmaW5kZXRoIGl0IHN3ZXB0IGFuZCBnYXJuaXNoZWQuClRoZW4gZ29ldGggaGUsIGFuZCB0YWtldGggdG8gaGltIHNldmVuIG90aGVyIHNwaXJpdHMgbW9yZSB3aWNrZWQgdGhhbiBoaW1zZWxmOyBhbmQgdGhleSBlbnRlciBpbiwgYW5kIGR3ZWxsIHRoZXJlOiBhbmQgdGhlIGxhc3Qgc3RhdGUgb2YgdGhhdCBtYW4gaXMgd29yc2UgdGhhbiB0aGUgZmlyc3QuCkFuZCBpdCBjYW1lIHRvIHBhc3MsIGFzIGhlIHNwYWtlIHRoZXNlIHRoaW5ncywgYSBjZXJ0YWluIHdvbWFuIG9mIHRoZSBjb21wYW55IGxpZnRlZCB1cCBoZXIgdm9pY2UsIGFuZCBzYWlkIHVudG8gaGltLCBCbGVzc2VkIGlzIHRoZSB3b21iIHRoYXQgYmFyZSB0aGVlLCBhbmQgdGhlIHBhcHMgd2hpY2ggdGhvdSBoYXN0IHN1Y2tlZC4KQnV0IGhlIHNhaWQsIFllYSByYXRoZXIsIGJsZXNzZWQgYXJlIHRoZXkgdGhhdCBoZWFyIHRoZSB3b3JkIG9mIEdvZCwgYW5kIGtlZXAgaXQuCkFuZCB3aGVuIHRoZSBwZW9wbGUgd2VyZSBnYXRoZXJlZCB0aGljayB0b2dldGhlciwgaGUgYmVnYW4gdG8gc2F5LCBUaGlzIGlzIGFuIGV2aWwgZ2VuZXJhdGlvbjogdGhleSBzZWVrIGEgc2lnbjsgYW5kIHRoZXJlIHNoYWxsIG5vIHNpZ24gYmUgZ2l2ZW4gaXQsIGJ1dCB0aGUgc2lnbiBvZiBKb25hcyB0aGUgcHJvcGhldC4KRm9yIGFzIEpvbmFzIHdhcyBhIHNpZ24gdW50byB0aGUgTmluZXZpdGVzLCBzbyBzaGFsbCBhbHNvIHRoZSBTb24gb2YgbWFuIGJlIHRvIHRoaXMgZ2VuZXJhdGlvbi4KVGhlIHF1ZWVuIG9mIHRoZSBzb3V0aCBzaGFsbCByaXNlIHVwIGluIHRoZSBqdWRnbWVudCB3aXRoIHRoZSBtZW4gb2YgdGhpcyBnZW5lcmF0aW9uLCBhbmQgY29uZGVtbiB0aGVtOiBmb3Igc2hlIGNhbWUgZnJvbSB0aGUgdXRtb3N0IHBhcnRzIG9mIHRoZSBlYXJ0aCB0byBoZWFyIHRoZSB3aXNkb20gb2YgU29sb21vbjsgYW5kLCBiZWhvbGQsIGEgZ3JlYXRlciB0aGFuIFNvbG9tb24gaXMgaGVyZS4KVGhlIG1lbiBvZiBOaW5ldmUgc2hhbGwgcmlzZSB1cCBpbiB0aGUganVkZ21lbnQgd2l0aCB0aGlzIGdlbmVyYXRpb24sIGFuZCBzaGFsbCBjb25kZW1uIGl0OiBmb3IgdGhleSByZXBlbnRlZCBhdCB0aGUgcHJlYWNoaW5nIG9mIEpvbmFzOyBhbmQsIGJlaG9sZCwgYSBncmVhdGVyIHRoYW4gSm9uYXMgaXMgaGVyZS4KTm8gbWFuLCB3aGVuIGhlIGhhdGggbGlnaHRlZCBhIGNhbmRsZSwgcHV0dGV0aCBpdCBpbiBhIHNlY3JldCBwbGFjZSwgbmVpdGhlciB1bmRlciBhIGJ1c2hlbCwgYnV0IG9uIGEgY2FuZGxlc3RpY2ssIHRoYXQgdGhleSB3aGljaCBjb21lIGluIG1heSBzZWUgdGhlIGxpZ2h0LgpUaGUgbGlnaHQgb2YgdGhlIGJvZHkgaXMgdGhlIGV5ZTogdGhlcmVmb3JlIHdoZW4gdGhpbmUgZXllIGlzIHNpbmdsZSwgdGh5IHdob2xlIGJvZHkgYWxzbyBpcyBmdWxsIG9mIGxpZ2h0OyBidXQgd2hlbiB0aGluZSBleWUgaXMgZXZpbCwgdGh5IGJvZHkgYWxzbyBpcyBmdWxsIG9mIGRhcmtuZXNzLgpUYWtlIGhlZWQgdGhlcmVmb3JlIHRoYXQgdGhlIGxpZ2h0IHdoaWNoIGlzIGluIHRoZWUgYmUgbm90IGRhcmtuZXNzLgpJZiB0aHkgd2hvbGUgYm9keSB0aGVyZWZvcmUgYmUgZnVsbCBvZiBsaWdodCwgaGF2aW5nIG5vIHBhcnQgZGFyaywgdGhlIHdob2xlIHNoYWxsIGJlIGZ1bGwgb2YgbGlnaHQsIGFzIHdoZW4gdGhlIGJyaWdodCBzaGluaW5nIG9mIGEgY2FuZGxlIGRvdGggZ2l2ZSB0aGVlIGxpZ2h0LgpBbmQgYXMgaGUgc3Bha2UsIGEgY2VydGFpbiBQaGFyaXNlZSBiZXNvdWdodCBoaW0gdG8gZGluZSB3aXRoIGhpbTogYW5kIGhlIHdlbnQgaW4sIGFuZCBzYXQgZG93biB0byBtZWF0LgpBbmQgd2hlbiB0aGUgUGhhcmlzZWUgc2F3IGl0LCBoZSBtYXJ2ZWxsZWQgdGhhdCBoZSBoYWQgbm90IGZpcnN0IHdhc2hlZCBiZWZvcmUgZGlubmVyLgpBbmQgdGhlIExvcmQgc2FpZCB1bnRvIGhpbSwgTm93IGRvIHllIFBoYXJpc2VlcyBtYWtlIGNsZWFuIHRoZSBvdXRzaWRlIG9mIHRoZSBjdXAgYW5kIHRoZSBwbGF0dGVyOyBidXQgeW91ciBpbndhcmQgcGFydCBpcyBmdWxsIG9mIHJhdmVuaW5nIGFuZCB3aWNrZWRuZXNzLgpZZSBmb29scywgZGlkIG5vdCBoZSB0aGF0IG1hZGUgdGhhdCB3aGljaCBpcyB3aXRob3V0IG1ha2UgdGhhdCB3aGljaCBpcyB3aXRoaW4gYWxzbz8KQnV0IHJhdGhlciBnaXZlIGFsbXMgb2Ygc3VjaCB0aGluZ3MgYXMgeWUgaGF2ZTsgYW5kLCBiZWhvbGQsIGFsbCB0aGluZ3MgYXJlIGNsZWFuIHVudG8geW91LgpCdXQgd29lIHVudG8geW91LCBQaGFyaXNlZXMhIGZvciB5ZSB0aXRoZSBtaW50IGFuZCBydWUgYW5kIGFsbCBtYW5uZXIgb2YgaGVyYnMsIGFuZCBwYXNzIG92ZXIganVkZ21lbnQgYW5kIHRoZSBsb3ZlIG9mIEdvZDogdGhlc2Ugb3VnaHQgeWUgdG8gaGF2ZSBkb25lLCBhbmQgbm90IHRvIGxlYXZlIHRoZSBvdGhlciB1bmRvbmUuCldvZSB1bnRvIHlvdSwgUGhhcmlzZWVzISBmb3IgeWUgbG92ZSB0aGUgdXBwZXJtb3N0IHNlYXRzIGluIHRoZSBzeW5hZ29ndWVzLCBhbmQgZ3JlZXRpbmdzIGluIHRoZSBtYXJrZXRzLgpXb2UgdW50byB5b3UsIHNjcmliZXMgYW5kIFBoYXJpc2VlcywgaHlwb2NyaXRlcyEgZm9yIHllIGFyZSBhcyBncmF2ZXMgd2hpY2ggYXBwZWFyIG5vdCwgYW5kIHRoZSBtZW4gdGhhdCB3YWxrIG92ZXIgdGhlbSBhcmUgbm90IGF3YXJlIG9mIHRoZW0uClRoZW4gYW5zd2VyZWQgb25lIG9mIHRoZSBsYXd5ZXJzLCBhbmQgc2FpZCB1bnRvIGhpbSwgTWFzdGVyLCB0aHVzIHNheWluZyB0aG91IHJlcHJvYWNoZXN0IHVzIGFsc28uCkFuZCBoZSBzYWlkLCBXb2UgdW50byB5b3UgYWxzbywgeWUgbGF3eWVycyEgZm9yIHllIGxhZGUgbWVuIHdpdGggYnVyZGVucyBncmlldm91cyB0byBiZSBib3JuZSwgYW5kIHllIHlvdXJzZWx2ZXMgdG91Y2ggbm90IHRoZSBidXJkZW5zIHdpdGggb25lIG9mIHlvdXIgZmluZ2Vycy4KV29lIHVudG8geW91ISBmb3IgeWUgYnVpbGQgdGhlIHNlcHVsY2hyZXMgb2YgdGhlIHByb3BoZXRzLCBhbmQgeW91ciBmYXRoZXJzIGtpbGxlZCB0aGVtLgpUcnVseSB5ZSBiZWFyIHdpdG5lc3MgdGhhdCB5ZSBhbGxvdyB0aGUgZGVlZHMgb2YgeW91ciBmYXRoZXJzOiBmb3IgdGhleSBpbmRlZWQga2lsbGVkIHRoZW0sIGFuZCB5ZSBidWlsZCB0aGVpciBzZXB1bGNocmVzLgpUaGVyZWZvcmUgYWxzbyBzYWlkIHRoZSB3aXNkb20gb2YgR29kLCBJIHdpbGwgc2VuZCB0aGVtIHByb3BoZXRzIGFuZCBhcG9zdGxlcywgYW5kIHNvbWUgb2YgdGhlbSB0aGV5IHNoYWxsIHNsYXkgYW5kIHBlcnNlY3V0ZToKVGhhdCB0aGUgYmxvb2Qgb2YgYWxsIHRoZSBwcm9waGV0cywgd2hpY2ggd2FzIHNoZWQgZnJvbSB0aGUgZm91bmRhdGlvbiBvZiB0aGUgd29ybGQsIG1heSBiZSByZXF1aXJlZCBvZiB0aGlzIGdlbmVyYXRpb247CkZyb20gdGhlIGJsb29kIG9mIEFiZWwgdW50byB0aGUgYmxvb2Qgb2YgWmFjaGFyaWFzIHdoaWNoIHBlcmlzaGVkIGJldHdlZW4gdGhlIGFsdGFyIGFuZCB0aGUgdGVtcGxlOiB2ZXJpbHkgSSBzYXkgdW50byB5b3UsIEl0IHNoYWxsIGJlIHJlcXVpcmVkIG9mIHRoaXMgZ2VuZXJhdGlvbi4KV29lIHVudG8geW91LCBsYXd5ZXJzISBmb3IgeWUgaGF2ZSB0YWtlbiBhd2F5IHRoZSBrZXkgb2Yga25vd2xlZGdlOiB5ZSBlbnRlcmVkIG5vdCBpbiB5b3Vyc2VsdmVzLCBhbmQgdGhlbSB0aGF0IHdlcmUgZW50ZXJpbmcgaW4geWUgaGluZGVyZWQuCkFuZCBhcyBoZSBzYWlkIHRoZXNlIHRoaW5ncyB1bnRvIHRoZW0sIHRoZSBzY3JpYmVzIGFuZCB0aGUgUGhhcmlzZWVzIGJlZ2FuIHRvIHVyZ2UgaGltIHZlaGVtZW50bHksIGFuZCB0byBwcm92b2tlIGhpbSB0byBzcGVhayBvZiBtYW55IHRoaW5nczoKTGF5aW5nIHdhaXQgZm9yIGhpbSwgYW5kIHNlZWtpbmcgdG8gY2F0Y2ggc29tZXRoaW5nIG91dCBvZiBoaXMgbW91dGgsIHRoYXQgdGhleSBtaWdodCBhY2N1c2UgaGltLgpJbiB0aGUgbWVhbiB0aW1lLCB3aGVuIHRoZXJlIHdlcmUgZ2F0aGVyZWQgdG9nZXRoZXIgYW4gaW5udW1lcmFibGUgbXVsdGl0dWRlIG9mIHBlb3BsZSwgaW5zb211Y2ggdGhhdCB0aGV5IHRyb2RlIG9uZSB1cG9uIGFub3RoZXIsIGhlIGJlZ2FuIHRvIHNheSB1bnRvIGhpcyBkaXNjaXBsZXMgZmlyc3Qgb2YgYWxsLCBCZXdhcmUgeWUgb2YgdGhlIGxlYXZlbiBvZiB0aGUgUGhhcmlzZWVzLCB3aGljaCBpcyBoeXBvY3Jpc3kuCkZvciB0aGVyZSBpcyBub3RoaW5nIGNvdmVyZWQsIHRoYXQgc2hhbGwgbm90IGJlIHJldmVhbGVkOyBuZWl0aGVyIGhpZCwgdGhhdCBzaGFsbCBub3QgYmUga25vd24uClRoZXJlZm9yZSB3aGF0c29ldmVyIHllIGhhdmUgc3Bva2VuIGluIGRhcmtuZXNzIHNoYWxsIGJlIGhlYXJkIGluIHRoZSBsaWdodDsgYW5kIHRoYXQgd2hpY2ggeWUgaGF2ZSBzcG9rZW4gaW4gdGhlIGVhciBpbiBjbG9zZXRzIHNoYWxsIGJlIHByb2NsYWltZWQgdXBvbiB0aGUgaG91c2V0b3BzLgpBbmQgSSBzYXkgdW50byB5b3UgbXkgZnJpZW5kcywgQmUgbm90IGFmcmFpZCBvZiB0aGVtIHRoYXQga2lsbCB0aGUgYm9keSwgYW5kIGFmdGVyIHRoYXQgaGF2ZSBubyBtb3JlIHRoYXQgdGhleSBjYW4gZG8uCkJ1dCBJIHdpbGwgZm9yZXdhcm4geW91IHdob20geWUgc2hhbGwgZmVhcjogRmVhciBoaW0sIHdoaWNoIGFmdGVyIGhlIGhhdGgga2lsbGVkIGhhdGggcG93ZXIgdG8gY2FzdCBpbnRvIGhlbGw7IHllYSwgSSBzYXkgdW50byB5b3UsIEZlYXIgaGltLgpBcmUgbm90IGZpdmUgc3BhcnJvd3Mgc29sZCBmb3IgdHdvIGZhcnRoaW5ncywgYW5kIG5vdCBvbmUgb2YgdGhlbSBpcyBmb3Jnb3R0ZW4gYmVmb3JlIEdvZD8KQnV0IGV2ZW4gdGhlIHZlcnkgaGFpcnMgb2YgeW91ciBoZWFkIGFyZSBhbGwgbnVtYmVyZWQuIEZlYXIgbm90IHRoZXJlZm9yZTogeWUgYXJlIG9mIG1vcmUgdmFsdWUgdGhhbiBtYW55IHNwYXJyb3dzLgpBbHNvIEkgc2F5IHVudG8geW91LCBXaG9zb2V2ZXIgc2hhbGwgY29uZmVzcyBtZSBiZWZvcmUgbWVuLCBoaW0gc2hhbGwgdGhlIFNvbiBvZiBtYW4gYWxzbyBjb25mZXNzIGJlZm9yZSB0aGUgYW5nZWxzIG9mIEdvZDoKQnV0IGhlIHRoYXQgZGVuaWV0aCBtZSBiZWZvcmUgbWVuIHNoYWxsIGJlIGRlbmllZCBiZWZvcmUgdGhlIGFuZ2VscyBvZiBHb2QuCkFuZCB3aG9zb2V2ZXIgc2hhbGwgc3BlYWsgYSB3b3JkIGFnYWluc3QgdGhlIFNvbiBvZiBtYW4sIGl0IHNoYWxsIGJlIGZvcmdpdmVuIGhpbTogYnV0IHVudG8gaGltIHRoYXQgYmxhc3BoZW1ldGggYWdhaW5zdCB0aGUgSG9seSBHaG9zdCBpdCBzaGFsbCBub3QgYmUgZm9yZ2l2ZW4uCkFuZCB3aGVuIHRoZXkgYnJpbmcgeW91IHVudG8gdGhlIHN5bmFnb2d1ZXMsIGFuZCB1bnRvIG1hZ2lzdHJhdGVzLCBhbmQgcG93ZXJzLCB0YWtlIHllIG5vIHRob3VnaHQgaG93IG9yIHdoYXQgdGhpbmcgeWUgc2hhbGwgYW5zd2VyLCBvciB3aGF0IHllIHNoYWxsIHNheToKRm9yIHRoZSBIb2x5IEdob3N0IHNoYWxsIHRlYWNoIHlvdSBpbiB0aGUgc2FtZSBob3VyIHdoYXQgeWUgb3VnaHQgdG8gc2F5LgpBbmQgb25lIG9mIHRoZSBjb21wYW55IHNhaWQgdW50byBoaW0sIE1hc3Rlciwgc3BlYWsgdG8gbXkgYnJvdGhlciwgdGhhdCBoZSBkaXZpZGUgdGhlIGluaGVyaXRhbmNlIHdpdGggbWUuCkFuZCBoZSBzYWlkIHVudG8gaGltLCBNYW4sIHdobyBtYWRlIG1lIGEganVkZ2Ugb3IgYSBkaXZpZGVyIG92ZXIgeW91PwpBbmQgaGUgc2FpZCB1bnRvIHRoZW0sIFRha2UgaGVlZCwgYW5kIGJld2FyZSBvZiBjb3ZldG91c25lc3M6IGZvciBhIG1hbidzIGxpZmUgY29uc2lzdGV0aCBub3QgaW4gdGhlIGFidW5kYW5jZSBvZiB0aGUgdGhpbmdzIHdoaWNoIGhlIHBvc3Nlc3NldGguCkFuZCBoZSBzcGFrZSBhIHBhcmFibGUgdW50byB0aGVtLCBzYXlpbmcsIFRoZSBncm91bmQgb2YgYSBjZXJ0YWluIHJpY2ggbWFuIGJyb3VnaHQgZm9ydGggcGxlbnRpZnVsbHk6CkFuZCBoZSB0aG91Z2h0IHdpdGhpbiBoaW1zZWxmLCBzYXlpbmcsIFdoYXQgc2hhbGwgSSBkbywgYmVjYXVzZSBJIGhhdmUgbm8gcm9vbSB3aGVyZSB0byBiZXN0b3cgbXkgZnJ1aXRzPwpBbmQgaGUgc2FpZCwgVGhpcyB3aWxsIEkgZG86IEkgd2lsbCBwdWxsIGRvd24gbXkgYmFybnMsIGFuZCBidWlsZCBncmVhdGVyOyBhbmQgdGhlcmUgd2lsbCBJIGJlc3RvdyBhbGwgbXkgZnJ1aXRzIGFuZCBteSBnb29kcy4KQW5kIEkgd2lsbCBzYXkgdG8gbXkgc291bCwgU291bCwgdGhvdSBoYXN0IG11Y2ggZ29vZHMgbGFpZCB1cCBmb3IgbWFueSB5ZWFyczsgdGFrZSB0aGluZSBlYXNlLCBlYXQsIGRyaW5rLCBhbmQgYmUgbWVycnkuCkJ1dCBHb2Qgc2FpZCB1bnRvIGhpbSwgVGhvdSBmb29sLCB0aGlzIG5pZ2h0IHRoeSBzb3VsIHNoYWxsIGJlIHJlcXVpcmVkIG9mIHRoZWU6IHRoZW4gd2hvc2Ugc2hhbGwgdGhvc2UgdGhpbmdzIGJlLCB3aGljaCB0aG91IGhhc3QgcHJvdmlkZWQ/ClNvIGlzIGhlIHRoYXQgbGF5ZXRoIHVwIHRyZWFzdXJlIGZvciBoaW1zZWxmLCBhbmQgaXMgbm90IHJpY2ggdG93YXJkIEdvZC4KQW5kIGhlIHNhaWQgdW50byBoaXMgZGlzY2lwbGVzLCBUaGVyZWZvcmUgSSBzYXkgdW50byB5b3UsIFRha2Ugbm8gdGhvdWdodCBmb3IgeW91ciBsaWZlLCB3aGF0IHllIHNoYWxsIGVhdDsgbmVpdGhlciBmb3IgdGhlIGJvZHksIHdoYXQgeWUgc2hhbGwgcHV0IG9uLgpUaGUgbGlmZSBpcyBtb3JlIHRoYW4gbWVhdCwgYW5kIHRoZSBib2R5IGlzIG1vcmUgdGhhbiByYWltZW50LgpDb25zaWRlciB0aGUgcmF2ZW5zOiBmb3IgdGhleSBuZWl0aGVyIHNvdyBub3IgcmVhcDsgd2hpY2ggbmVpdGhlciBoYXZlIHN0b3JlaG91c2Ugbm9yIGJhcm47IGFuZCBHb2QgZmVlZGV0aCB0aGVtOiBob3cgbXVjaCBtb3JlIGFyZSB5ZSBiZXR0ZXIgdGhhbiB0aGUgZm93bHM/CkFuZCB3aGljaCBvZiB5b3Ugd2l0aCB0YWtpbmcgdGhvdWdodCBjYW4gYWRkIHRvIGhpcyBzdGF0dXJlIG9uZSBjdWJpdD8KSWYgeWUgdGhlbiBiZSBub3QgYWJsZSB0byBkbyB0aGF0IHRoaW5nIHdoaWNoIGlzIGxlYXN0LCB3aHkgdGFrZSB5ZSB0aG91Z2h0IGZvciB0aGUgcmVzdD8KQ29uc2lkZXIgdGhlIGxpbGllcyBob3cgdGhleSBncm93OiB0aGV5IHRvaWwgbm90LCB0aGV5IHNwaW4gbm90OyBhbmQgeWV0IEkgc2F5IHVudG8geW91LCB0aGF0IFNvbG9tb24gaW4gYWxsIGhpcyBnbG9yeSB3YXMgbm90IGFycmF5ZWQgbGlrZSBvbmUgb2YgdGhlc2UuCklmIHRoZW4gR29kIHNvIGNsb3RoZSB0aGUgZ3Jhc3MsIHdoaWNoIGlzIHRvIGRheSBpbiB0aGUgZmllbGQsIGFuZCB0byBtb3Jyb3cgaXMgY2FzdCBpbnRvIHRoZSBvdmVuOyBob3cgbXVjaCBtb3JlIHdpbGwgaGUgY2xvdGhlIHlvdSwgTyB5ZSBvZiBsaXR0bGUgZmFpdGg/CkFuZCBzZWVrIG5vdCB5ZSB3aGF0IHllIHNoYWxsIGVhdCwgb3Igd2hhdCB5ZSBzaGFsbCBkcmluaywgbmVpdGhlciBiZSB5ZSBvZiBkb3VidGZ1bCBtaW5kLgpGb3IgYWxsIHRoZXNlIHRoaW5ncyBkbyB0aGUgbmF0aW9ucyBvZiB0aGUgd29ybGQgc2VlayBhZnRlcjogYW5kIHlvdXIgRmF0aGVyIGtub3dldGggdGhhdCB5ZSBoYXZlIG5lZWQgb2YgdGhlc2UgdGhpbmdzLgpCdXQgcmF0aGVyIHNlZWsgeWUgdGhlIGtpbmdkb20gb2YgR29kOyBhbmQgYWxsIHRoZXNlIHRoaW5ncyBzaGFsbCBiZSBhZGRlZCB1bnRvIHlvdS4KRmVhciBub3QsIGxpdHRsZSBmbG9jazsgZm9yIGl0IGlzIHlvdXIgRmF0aGVyJ3MgZ29vZCBwbGVhc3VyZSB0byBnaXZlIHlvdSB0aGUga2luZ2RvbS4KU2VsbCB0aGF0IHllIGhhdmUsIGFuZCBnaXZlIGFsbXM7IHByb3ZpZGUgeW91cnNlbHZlcyBiYWdzIHdoaWNoIHdheCBub3Qgb2xkLCBhIHRyZWFzdXJlIGluIHRoZSBoZWF2ZW5zIHRoYXQgZmFpbGV0aCBub3QsIHdoZXJlIG5vIHRoaWVmIGFwcHJvYWNoZXRoLCBuZWl0aGVyIG1vdGggY29ycnVwdGV0aC4KRm9yIHdoZXJlIHlvdXIgdHJlYXN1cmUgaXMsIHRoZXJlIHdpbGwgeW91ciBoZWFydCBiZSBhbHNvLgpMZXQgeW91ciBsb2lucyBiZSBnaXJkZWQgYWJvdXQsIGFuZCB5b3VyIGxpZ2h0cyBidXJuaW5nOwpBbmQgeWUgeW91cnNlbHZlcyBsaWtlIHVudG8gbWVuIHRoYXQgd2FpdCBmb3IgdGhlaXIgbG9yZCwgd2hlbiBoZSB3aWxsIHJldHVybiBmcm9tIHRoZSB3ZWRkaW5nOyB0aGF0IHdoZW4gaGUgY29tZXRoIGFuZCBrbm9ja2V0aCwgdGhleSBtYXkgb3BlbiB1bnRvIGhpbSBpbW1lZGlhdGVseS4KQmxlc3NlZCBhcmUgdGhvc2Ugc2VydmFudHMsIHdob20gdGhlIGxvcmQgd2hlbiBoZSBjb21ldGggc2hhbGwgZmluZCB3YXRjaGluZzogdmVyaWx5IEkgc2F5IHVudG8geW91LCB0aGF0IGhlIHNoYWxsIGdpcmQgaGltc2VsZiwgYW5kIG1ha2UgdGhlbSB0byBzaXQgZG93biB0byBtZWF0LCBhbmQgd2lsbCBjb21lIGZvcnRoIGFuZCBzZXJ2ZSB0aGVtLgpBbmQgaWYgaGUgc2hhbGwgY29tZSBpbiB0aGUgc2Vjb25kIHdhdGNoLCBvciBjb21lIGluIHRoZSB0aGlyZCB3YXRjaCwgYW5kIGZpbmQgdGhlbSBzbywgYmxlc3NlZCBhcmUgdGhvc2Ugc2VydmFudHMuCkFuZCB0aGlzIGtub3csIHRoYXQgaWYgdGhlIGdvb2RtYW4gb2YgdGhlIGhvdXNlIGhhZCBrbm93biB3aGF0IGhvdXIgdGhlIHRoaWVmIHdvdWxkIGNvbWUsIGhlIHdvdWxkIGhhdmUgd2F0Y2hlZCwgYW5kIG5vdCBoYXZlIHN1ZmZlcmVkIGhpcyBob3VzZSB0byBiZSBicm9rZW4gdGhyb3VnaC4KQmUgeWUgdGhlcmVmb3JlIHJlYWR5IGFsc286IGZvciB0aGUgU29uIG9mIG1hbiBjb21ldGggYXQgYW4gaG91ciB3aGVuIHllIHRoaW5rIG5vdC4KVGhlbiBQZXRlciBzYWlkIHVudG8gaGltLCBMb3JkLCBzcGVha2VzdCB0aG91IHRoaXMgcGFyYWJsZSB1bnRvIHVzLCBvciBldmVuIHRvIGFsbD8KQW5kIHRoZSBMb3JkIHNhaWQsIFdobyB0aGVuIGlzIHRoYXQgZmFpdGhmdWwgYW5kIHdpc2Ugc3Rld2FyZCwgd2hvbSBoaXMgbG9yZCBzaGFsbCBtYWtlIHJ1bGVyIG92ZXIgaGlzIGhvdXNlaG9sZCwgdG8gZ2l2ZSB0aGVtIHRoZWlyIHBvcnRpb24gb2YgbWVhdCBpbiBkdWUgc2Vhc29uPwpCbGVzc2VkIGlzIHRoYXQgc2VydmFudCwgd2hvbSBoaXMgbG9yZCB3aGVuIGhlIGNvbWV0aCBzaGFsbCBmaW5kIHNvIGRvaW5nLgpPZiBhIHRydXRoIEkgc2F5IHVudG8geW91LCB0aGF0IGhlIHdpbGwgbWFrZSBoaW0gcnVsZXIgb3ZlciBhbGwgdGhhdCBoZSBoYXRoLgpCdXQgYW5kIGlmIHRoYXQgc2VydmFudCBzYXkgaW4gaGlzIGhlYXJ0LCBNeSBsb3JkIGRlbGF5ZXRoIGhpcyBjb21pbmc7IGFuZCBzaGFsbCBiZWdpbiB0byBiZWF0IHRoZSBtZW5zZXJ2YW50cyBhbmQgbWFpZGVucywgYW5kIHRvIGVhdCBhbmQgZHJpbmssIGFuZCB0byBiZSBkcnVua2VuOwpUaGUgbG9yZCBvZiB0aGF0IHNlcnZhbnQgd2lsbCBjb21lIGluIGEgZGF5IHdoZW4gaGUgbG9va2V0aCBub3QgZm9yIGhpbSwgYW5kIGF0IGFuIGhvdXIgd2hlbiBoZSBpcyBub3QgYXdhcmUsIGFuZCB3aWxsIGN1dCBoaW0gaW4gc3VuZGVyLCBhbmQgd2lsbCBhcHBvaW50IGhpbSBoaXMgcG9ydGlvbiB3aXRoIHRoZSB1bmJlbGlldmVycy4KQW5kIHRoYXQgc2VydmFudCwgd2hpY2gga25ldyBoaXMgbG9yZCdzIHdpbGwsIGFuZCBwcmVwYXJlZCBub3QgaGltc2VsZiwgbmVpdGhlciBkaWQgYWNjb3JkaW5nIHRvIGhpcyB3aWxsLCBzaGFsbCBiZSBiZWF0ZW4gd2l0aCBtYW55IHN0cmlwZXMuCkJ1dCBoZSB0aGF0IGtuZXcgbm90LCBhbmQgZGlkIGNvbW1pdCB0aGluZ3Mgd29ydGh5IG9mIHN0cmlwZXMsIHNoYWxsIGJlIGJlYXRlbiB3aXRoIGZldyBzdHJpcGVzLiBGb3IgdW50byB3aG9tc29ldmVyIG11Y2ggaXMgZ2l2ZW4sIG9mIGhpbSBzaGFsbCBiZSBtdWNoIHJlcXVpcmVkOiBhbmQgdG8gd2hvbSBtZW4gaGF2ZSBjb21taXR0ZWQgbXVjaCwgb2YgaGltIHRoZXkgd2lsbCBhc2sgdGhlIG1vcmUuCkkgYW0gY29tZSB0byBzZW5kIGZpcmUgb24gdGhlIGVhcnRoOyBhbmQgd2hhdCB3aWxsIEksIGlmIGl0IGJlIGFscmVhZHkga2luZGxlZD8KQnV0IEkgaGF2ZSBhIGJhcHRpc20gdG8gYmUgYmFwdGl6ZWQgd2l0aDsgYW5kIGhvdyBhbSBJIHN0cmFpdGVuZWQgdGlsbCBpdCBiZSBhY2NvbXBsaXNoZWQhClN1cHBvc2UgeWUgdGhhdCBJIGFtIGNvbWUgdG8gZ2l2ZSBwZWFjZSBvbiBlYXJ0aD8gSSB0ZWxsIHlvdSwgTmF5OyBidXQgcmF0aGVyIGRpdmlzaW9uOgpGb3IgZnJvbSBoZW5jZWZvcnRoIHRoZXJlIHNoYWxsIGJlIGZpdmUgaW4gb25lIGhvdXNlIGRpdmlkZWQsIHRocmVlIGFnYWluc3QgdHdvLCBhbmQgdHdvIGFnYWluc3QgdGhyZWUuClRoZSBmYXRoZXIgc2hhbGwgYmUgZGl2aWRlZCBhZ2FpbnN0IHRoZSBzb24sIGFuZCB0aGUgc29uIGFnYWluc3QgdGhlIGZhdGhlcjsgdGhlIG1vdGhlciBhZ2FpbnN0IHRoZSBkYXVnaHRlciwgYW5kIHRoZSBkYXVnaHRlciBhZ2FpbnN0IHRoZSBtb3RoZXI7IHRoZSBtb3RoZXIgaW4gbGF3IGFnYWluc3QgaGVyIGRhdWdodGVyIGluIGxhdywgYW5kIHRoZSBkYXVnaHRlciBpbiBsYXcgYWdhaW5zdCBoZXIgbW90aGVyIGluIGxhdy4KQW5kIGhlIHNhaWQgYWxzbyB0byB0aGUgcGVvcGxlLCBXaGVuIHllIHNlZSBhIGNsb3VkIHJpc2Ugb3V0IG9mIHRoZSB3ZXN0LCBzdHJhaWdodHdheSB5ZSBzYXksIFRoZXJlIGNvbWV0aCBhIHNob3dlcjsgYW5kIHNvIGl0IGlzLgpBbmQgd2hlbiB5ZSBzZWUgdGhlIHNvdXRoIHdpbmQgYmxvdywgeWUgc2F5LCBUaGVyZSB3aWxsIGJlIGhlYXQ7IGFuZCBpdCBjb21ldGggdG8gcGFzcy4KWWUgaHlwb2NyaXRlcywgeWUgY2FuIGRpc2Nlcm4gdGhlIGZhY2Ugb2YgdGhlIHNreSBhbmQgb2YgdGhlIGVhcnRoOyBidXQgaG93IGlzIGl0IHRoYXQgeWUgZG8gbm90IGRpc2Nlcm4gdGhpcyB0aW1lPwpZZWEsIGFuZCB3aHkgZXZlbiBvZiB5b3Vyc2VsdmVzIGp1ZGdlIHllIG5vdCB3aGF0IGlzIHJpZ2h0PwpXaGVuIHRob3UgZ29lc3Qgd2l0aCB0aGluZSBhZHZlcnNhcnkgdG8gdGhlIG1hZ2lzdHJhdGUsIGFzIHRob3UgYXJ0IGluIHRoZSB3YXksIGdpdmUgZGlsaWdlbmNlIHRoYXQgdGhvdSBtYXllc3QgYmUgZGVsaXZlcmVkIGZyb20gaGltOyBsZXN0IGhlIGhhbGUgdGhlZSB0byB0aGUganVkZ2UsIGFuZCB0aGUganVkZ2UgZGVsaXZlciB0aGVlIHRvIHRoZSBvZmZpY2VyLCBhbmQgdGhlIG9mZmljZXIgY2FzdCB0aGVlIGludG8gcHJpc29uLgpJIHRlbGwgdGhlZSwgdGhvdSBzaGFsdCBub3QgZGVwYXJ0IHRoZW5jZSwgdGlsbCB0aG91IGhhc3QgcGFpZCB0aGUgdmVyeSBsYXN0IG1pdGUuClRoZXJlIHdlcmUgcHJlc2VudCBhdCB0aGF0IHNlYXNvbiBzb21lIHRoYXQgdG9sZCBoaW0gb2YgdGhlIEdhbGlsYWVhbnMsIHdob3NlIGJsb29kIFBpbGF0ZSBoYWQgbWluZ2xlZCB3aXRoIHRoZWlyIHNhY3JpZmljZXMuCkFuZCBKZXN1cyBhbnN3ZXJpbmcgc2FpZCB1bnRvIHRoZW0sIFN1cHBvc2UgeWUgdGhhdCB0aGVzZSBHYWxpbGFlYW5zIHdlcmUgc2lubmVycyBhYm92ZSBhbGwgdGhlIEdhbGlsYWVhbnMsIGJlY2F1c2UgdGhleSBzdWZmZXJlZCBzdWNoIHRoaW5ncz8KSSB0ZWxsIHlvdSwgTmF5OiBidXQsIGV4Y2VwdCB5ZSByZXBlbnQsIHllIHNoYWxsIGFsbCBsaWtld2lzZSBwZXJpc2guCk9yIHRob3NlIGVpZ2h0ZWVuLCB1cG9uIHdob20gdGhlIHRvd2VyIGluIFNpbG9hbSBmZWxsLCBhbmQgc2xldyB0aGVtLCB0aGluayB5ZSB0aGF0IHRoZXkgd2VyZSBzaW5uZXJzIGFib3ZlIGFsbCBtZW4gdGhhdCBkd2VsdCBpbiBKZXJ1c2FsZW0/CkkgdGVsbCB5b3UsIE5heTogYnV0LCBleGNlcHQgeWUgcmVwZW50LCB5ZSBzaGFsbCBhbGwgbGlrZXdpc2UgcGVyaXNoLgpIZSBzcGFrZSBhbHNvIHRoaXMgcGFyYWJsZTsgQSBjZXJ0YWluIG1hbiBoYWQgYSBmaWcgdHJlZSBwbGFudGVkIGluIGhpcyB2aW5leWFyZDsgYW5kIGhlIGNhbWUgYW5kIHNvdWdodCBmcnVpdCB0aGVyZW9uLCBhbmQgZm91bmQgbm9uZS4KVGhlbiBzYWlkIGhlIHVudG8gdGhlIGRyZXNzZXIgb2YgaGlzIHZpbmV5YXJkLCBCZWhvbGQsIHRoZXNlIHRocmVlIHllYXJzIEkgY29tZSBzZWVraW5nIGZydWl0IG9uIHRoaXMgZmlnIHRyZWUsIGFuZCBmaW5kIG5vbmU6IGN1dCBpdCBkb3duOyB3aHkgY3VtYmVyZXRoIGl0IHRoZSBncm91bmQ/CkFuZCBoZSBhbnN3ZXJpbmcgc2FpZCB1bnRvIGhpbSwgTG9yZCwgbGV0IGl0IGFsb25lIHRoaXMgeWVhciBhbHNvLCB0aWxsIEkgc2hhbGwgZGlnIGFib3V0IGl0LCBhbmQgZHVuZyBpdDoKQW5kIGlmIGl0IGJlYXIgZnJ1aXQsIHdlbGw6IGFuZCBpZiBub3QsIHRoZW4gYWZ0ZXIgdGhhdCB0aG91IHNoYWx0IGN1dCBpdCBkb3duLgpBbmQgaGUgd2FzIHRlYWNoaW5nIGluIG9uZSBvZiB0aGUgc3luYWdvZ3VlcyBvbiB0aGUgc2FiYmF0aC4KQW5kLCBiZWhvbGQsIHRoZXJlIHdhcyBhIHdvbWFuIHdoaWNoIGhhZCBhIHNwaXJpdCBvZiBpbmZpcm1pdHkgZWlnaHRlZW4geWVhcnMsIGFuZCB3YXMgYm93ZWQgdG9nZXRoZXIsIGFuZCBjb3VsZCBpbiBubyB3aXNlIGxpZnQgdXAgaGVyc2VsZi4KQW5kIHdoZW4gSmVzdXMgc2F3IGhlciwgaGUgY2FsbGVkIGhlciB0byBoaW0sIGFuZCBzYWlkIHVudG8gaGVyLCBXb21hbiwgdGhvdSBhcnQgbG9vc2VkIGZyb20gdGhpbmUgaW5maXJtaXR5LgpBbmQgaGUgbGFpZCBoaXMgaGFuZHMgb24gaGVyOiBhbmQgaW1tZWRpYXRlbHkgc2hlIHdhcyBtYWRlIHN0cmFpZ2h0LCBhbmQgZ2xvcmlmaWVkIEdvZC4KQW5kIHRoZSBydWxlciBvZiB0aGUgc3luYWdvZ3VlIGFuc3dlcmVkIHdpdGggaW5kaWduYXRpb24sIGJlY2F1c2UgdGhhdCBKZXN1cyBoYWQgaGVhbGVkIG9uIHRoZSBzYWJiYXRoIGRheSwgYW5kIHNhaWQgdW50byB0aGUgcGVvcGxlLCBUaGVyZSBhcmUgc2l4IGRheXMgaW4gd2hpY2ggbWVuIG91Z2h0IHRvIHdvcms6IGluIHRoZW0gdGhlcmVmb3JlIGNvbWUgYW5kIGJlIGhlYWxlZCwgYW5kIG5vdCBvbiB0aGUgc2FiYmF0aCBkYXkuClRoZSBMb3JkIHRoZW4gYW5zd2VyZWQgaGltLCBhbmQgc2FpZCwgVGhvdSBoeXBvY3JpdGUsIGRvdGggbm90IGVhY2ggb25lIG9mIHlvdSBvbiB0aGUgc2FiYmF0aCBsb29zZSBoaXMgb3ggb3IgaGlzIGFzcyBmcm9tIHRoZSBzdGFsbCwgYW5kIGxlYWQgaGltIGF3YXkgdG8gd2F0ZXJpbmc/CkFuZCBvdWdodCBub3QgdGhpcyB3b21hbiwgYmVpbmcgYSBkYXVnaHRlciBvZiBBYnJhaGFtLCB3aG9tIFNhdGFuIGhhdGggYm91bmQsIGxvLCB0aGVzZSBlaWdodGVlbiB5ZWFycywgYmUgbG9vc2VkIGZyb20gdGhpcyBib25kIG9uIHRoZSBzYWJiYXRoIGRheT8KQW5kIHdoZW4gaGUgaGFkIHNhaWQgdGhlc2UgdGhpbmdzLCBhbGwgaGlzIGFkdmVyc2FyaWVzIHdlcmUgYXNoYW1lZDogYW5kIGFsbCB0aGUgcGVvcGxlIHJlam9pY2VkIGZvciBhbGwgdGhlIGdsb3Jpb3VzIHRoaW5ncyB0aGF0IHdlcmUgZG9uZSBieSBoaW0uClRoZW4gc2FpZCBoZSwgVW50byB3aGF0IGlzIHRoZSBraW5nZG9tIG9mIEdvZCBsaWtlPyBhbmQgd2hlcmV1bnRvIHNoYWxsIEkgcmVzZW1ibGUgaXQ/Ckl0IGlzIGxpa2UgYSBncmFpbiBvZiBtdXN0YXJkIHNlZWQsIHdoaWNoIGEgbWFuIHRvb2ssIGFuZCBjYXN0IGludG8gaGlzIGdhcmRlbjsgYW5kIGl0IGdyZXcsIGFuZCB3YXhlZCBhIGdyZWF0IHRyZWU7IGFuZCB0aGUgZm93bHMgb2YgdGhlIGFpciBsb2RnZWQgaW4gdGhlIGJyYW5jaGVzIG9mIGl0LgpBbmQgYWdhaW4gaGUgc2FpZCwgV2hlcmV1bnRvIHNoYWxsIEkgbGlrZW4gdGhlIGtpbmdkb20gb2YgR29kPwpJdCBpcyBsaWtlIGxlYXZlbiwgd2hpY2ggYSB3b21hbiB0b29rIGFuZCBoaWQgaW4gdGhyZWUgbWVhc3VyZXMgb2YgbWVhbCwgdGlsbCB0aGUgd2hvbGUgd2FzIGxlYXZlbmVkLgpBbmQgaGUgd2VudCB0aHJvdWdoIHRoZSBjaXRpZXMgYW5kIHZpbGxhZ2VzLCB0ZWFjaGluZywgYW5kIGpvdXJuZXlpbmcgdG93YXJkIEplcnVzYWxlbS4KVGhlbiBzYWlkIG9uZSB1bnRvIGhpbSwgTG9yZCwgYXJlIHRoZXJlIGZldyB0aGF0IGJlIHNhdmVkPyBBbmQgaGUgc2FpZCB1bnRvIHRoZW0sClN0cml2ZSB0byBlbnRlciBpbiBhdCB0aGUgc3RyYWl0IGdhdGU6IGZvciBtYW55LCBJIHNheSB1bnRvIHlvdSwgd2lsbCBzZWVrIHRvIGVudGVyIGluLCBhbmQgc2hhbGwgbm90IGJlIGFibGUuCldoZW4gb25jZSB0aGUgbWFzdGVyIG9mIHRoZSBob3VzZSBpcyByaXNlbiB1cCwgYW5kIGhhdGggc2h1dCB0byB0aGUgZG9vciwgYW5kIHllIGJlZ2luIHRvIHN0YW5kIHdpdGhvdXQsIGFuZCB0byBrbm9jayBhdCB0aGUgZG9vciwgc2F5aW5nLCBMb3JkLCBMb3JkLCBvcGVuIHVudG8gdXM7IGFuZCBoZSBzaGFsbCBhbnN3ZXIgYW5kIHNheSB1bnRvIHlvdSwgSSBrbm93IHlvdSBub3Qgd2hlbmNlIHllIGFyZToKVGhlbiBzaGFsbCB5ZSBiZWdpbiB0byBzYXksIFdlIGhhdmUgZWF0ZW4gYW5kIGRydW5rIGluIHRoeSBwcmVzZW5jZSwgYW5kIHRob3UgaGFzdCB0YXVnaHQgaW4gb3VyIHN0cmVldHMuCkJ1dCBoZSBzaGFsbCBzYXksIEkgdGVsbCB5b3UsIEkga25vdyB5b3Ugbm90IHdoZW5jZSB5ZSBhcmU7IGRlcGFydCBmcm9tIG1lLCBhbGwgeWUgd29ya2VycyBvZiBpbmlxdWl0eS4KVGhlcmUgc2hhbGwgYmUgd2VlcGluZyBhbmQgZ25hc2hpbmcgb2YgdGVldGgsIHdoZW4geWUgc2hhbGwgc2VlIEFicmFoYW0sIGFuZCBJc2FhYywgYW5kIEphY29iLCBhbmQgYWxsIHRoZSBwcm9waGV0cywgaW4gdGhlIGtpbmdkb20gb2YgR29kLCBhbmQgeW91IHlvdXJzZWx2ZXMgdGhydXN0IG91dC4KQW5kIHRoZXkgc2hhbGwgY29tZSBmcm9tIHRoZSBlYXN0LCBhbmQgZnJvbSB0aGUgd2VzdCwgYW5kIGZyb20gdGhlIG5vcnRoLCBhbmQgZnJvbSB0aGUgc291dGgsIGFuZCBzaGFsbCBzaXQgZG93biBpbiB0aGUga2luZ2RvbSBvZiBHb2QuCkFuZCwgYmVob2xkLCB0aGVyZSBhcmUgbGFzdCB3aGljaCBzaGFsbCBiZSBmaXJzdCwgYW5kIHRoZXJlIGFyZSBmaXJzdCB3aGljaCBzaGFsbCBiZSBsYXN0LgpUaGUgc2FtZSBkYXkgdGhlcmUgY2FtZSBjZXJ0YWluIG9mIHRoZSBQaGFyaXNlZXMsIHNheWluZyB1bnRvIGhpbSwgR2V0IHRoZWUgb3V0LCBhbmQgZGVwYXJ0IGhlbmNlOiBmb3IgSGVyb2Qgd2lsbCBraWxsIHRoZWUuCkFuZCBoZSBzYWlkIHVudG8gdGhlbSwgR28geWUsIGFuZCB0ZWxsIHRoYXQgZm94LCBCZWhvbGQsIEkgY2FzdCBvdXQgZGV2aWxzLCBhbmQgSSBkbyBjdXJlcyB0byBkYXkgYW5kIHRvIG1vcnJvdywgYW5kIHRoZSB0aGlyZCBkYXkgSSBzaGFsbCBiZSBwZXJmZWN0ZWQuCk5ldmVydGhlbGVzcyBJIG11c3Qgd2FsayB0byBkYXksIGFuZCB0byBtb3Jyb3csIGFuZCB0aGUgZGF5IGZvbGxvd2luZzogZm9yIGl0IGNhbm5vdCBiZSB0aGF0IGEgcHJvcGhldCBwZXJpc2ggb3V0IG9mIEplcnVzYWxlbS4KTyBKZXJ1c2FsZW0sIEplcnVzYWxlbSwgd2hpY2gga2lsbGVzdCB0aGUgcHJvcGhldHMsIGFuZCBzdG9uZXN0IHRoZW0gdGhhdCBhcmUgc2VudCB1bnRvIHRoZWU7IGhvdyBvZnRlbiB3b3VsZCBJIGhhdmUgZ2F0aGVyZWQgdGh5IGNoaWxkcmVuIHRvZ2V0aGVyLCBhcyBhIGhlbiBkb3RoIGdhdGhlciBoZXIgYnJvb2QgdW5kZXIgaGVyIHdpbmdzLCBhbmQgeWUgd291bGQgbm90IQpCZWhvbGQsIHlvdXIgaG91c2UgaXMgbGVmdCB1bnRvIHlvdSBkZXNvbGF0ZTogYW5kIHZlcmlseSBJIHNheSB1bnRvIHlvdSwgWWUgc2hhbGwgbm90IHNlZSBtZSwgdW50aWwgdGhlIHRpbWUgY29tZSB3aGVuIHllIHNoYWxsIHNheSwgQmxlc3NlZCBpcyBoZSB0aGF0IGNvbWV0aCBpbiB0aGUgbmFtZSBvZiB0aGUgTG9yZC4KQW5kIGl0IGNhbWUgdG8gcGFzcywgYXMgaGUgd2VudCBpbnRvIHRoZSBob3VzZSBvZiBvbmUgb2YgdGhlIGNoaWVmIFBoYXJpc2VlcyB0byBlYXQgYnJlYWQgb24gdGhlIHNhYmJhdGggZGF5LCB0aGF0IHRoZXkgd2F0Y2hlZCBoaW0uCkFuZCwgYmVob2xkLCB0aGVyZSB3YXMgYSBjZXJ0YWluIG1hbiBiZWZvcmUgaGltIHdoaWNoIGhhZCB0aGUgZHJvcHN5LgpBbmQgSmVzdXMgYW5zd2VyaW5nIHNwYWtlIHVudG8gdGhlIGxhd3llcnMgYW5kIFBoYXJpc2Vlcywgc2F5aW5nLCBJcyBpdCBsYXdmdWwgdG8gaGVhbCBvbiB0aGUgc2FiYmF0aCBkYXk/CkFuZCB0aGV5IGhlbGQgdGhlaXIgcGVhY2UuIEFuZCBoZSB0b29rIGhpbSwgYW5kIGhlYWxlZCBoaW0sIGFuZCBsZXQgaGltIGdvOwpBbmQgYW5zd2VyZWQgdGhlbSwgc2F5aW5nLCBXaGljaCBvZiB5b3Ugc2hhbGwgaGF2ZSBhbiBhc3Mgb3IgYW4gb3ggZmFsbGVuIGludG8gYSBwaXQsIGFuZCB3aWxsIG5vdCBzdHJhaWdodHdheSBwdWxsIGhpbSBvdXQgb24gdGhlIHNhYmJhdGggZGF5PwpBbmQgdGhleSBjb3VsZCBub3QgYW5zd2VyIGhpbSBhZ2FpbiB0byB0aGVzZSB0aGluZ3MuCkFuZCBoZSBwdXQgZm9ydGggYSBwYXJhYmxlIHRvIHRob3NlIHdoaWNoIHdlcmUgYmlkZGVuLCB3aGVuIGhlIG1hcmtlZCBob3cgdGhleSBjaG9zZSBvdXQgdGhlIGNoaWVmIHJvb21zOyBzYXlpbmcgdW50byB0aGVtLgpXaGVuIHRob3UgYXJ0IGJpZGRlbiBvZiBhbnkgbWFuIHRvIGEgd2VkZGluZywgc2l0IG5vdCBkb3duIGluIHRoZSBoaWdoZXN0IHJvb207IGxlc3QgYSBtb3JlIGhvbm91cmFibGUgbWFuIHRoYW4gdGhvdSBiZSBiaWRkZW4gb2YgaGltOwpBbmQgaGUgdGhhdCBiYWRlIHRoZWUgYW5kIGhpbSBjb21lIGFuZCBzYXkgdG8gdGhlZSwgR2l2ZSB0aGlzIG1hbiBwbGFjZTsgYW5kIHRob3UgYmVnaW4gd2l0aCBzaGFtZSB0byB0YWtlIHRoZSBsb3dlc3Qgcm9vbS4KQnV0IHdoZW4gdGhvdSBhcnQgYmlkZGVuLCBnbyBhbmQgc2l0IGRvd24gaW4gdGhlIGxvd2VzdCByb29tOyB0aGF0IHdoZW4gaGUgdGhhdCBiYWRlIHRoZWUgY29tZXRoLCBoZSBtYXkgc2F5IHVudG8gdGhlZSwgRnJpZW5kLCBnbyB1cCBoaWdoZXI6IHRoZW4gc2hhbHQgdGhvdSBoYXZlIHdvcnNoaXAgaW4gdGhlIHByZXNlbmNlIG9mIHRoZW0gdGhhdCBzaXQgYXQgbWVhdCB3aXRoIHRoZWUuCkZvciB3aG9zb2V2ZXIgZXhhbHRldGggaGltc2VsZiBzaGFsbCBiZSBhYmFzZWQ7IGFuZCBoZSB0aGF0IGh1bWJsZXRoIGhpbXNlbGYgc2hhbGwgYmUgZXhhbHRlZC4KVGhlbiBzYWlkIGhlIGFsc28gdG8gaGltIHRoYXQgYmFkZSBoaW0sIFdoZW4gdGhvdSBtYWtlc3QgYSBkaW5uZXIgb3IgYSBzdXBwZXIsIGNhbGwgbm90IHRoeSBmcmllbmRzLCBub3IgdGh5IGJyZXRocmVuLCBuZWl0aGVyIHRoeSBraW5zbWVuLCBub3IgdGh5IHJpY2ggbmVpZ2hib3VyczsgbGVzdCB0aGV5IGFsc28gYmlkIHRoZWUgYWdhaW4sIGFuZCBhIHJlY29tcGVuY2UgYmUgbWFkZSB0aGVlLgpCdXQgd2hlbiB0aG91IG1ha2VzdCBhIGZlYXN0LCBjYWxsIHRoZSBwb29yLCB0aGUgbWFpbWVkLCB0aGUgbGFtZSwgdGhlIGJsaW5kOgpBbmQgdGhvdSBzaGFsdCBiZSBibGVzc2VkOyBmb3IgdGhleSBjYW5ub3QgcmVjb21wZW5zZSB0aGVlOiBmb3IgdGhvdSBzaGFsdCBiZSByZWNvbXBlbnNlZCBhdCB0aGUgcmVzdXJyZWN0aW9uIG9mIHRoZSBqdXN0LgpBbmQgd2hlbiBvbmUgb2YgdGhlbSB0aGF0IHNhdCBhdCBtZWF0IHdpdGggaGltIGhlYXJkIHRoZXNlIHRoaW5ncywgaGUgc2FpZCB1bnRvIGhpbSwgQmxlc3NlZCBpcyBoZSB0aGF0IHNoYWxsIGVhdCBicmVhZCBpbiB0aGUga2luZ2RvbSBvZiBHb2QuClRoZW4gc2FpZCBoZSB1bnRvIGhpbSwgQSBjZXJ0YWluIG1hbiBtYWRlIGEgZ3JlYXQgc3VwcGVyLCBhbmQgYmFkZSBtYW55OgpBbmQgc2VudCBoaXMgc2VydmFudCBhdCBzdXBwZXIgdGltZSB0byBzYXkgdG8gdGhlbSB0aGF0IHdlcmUgYmlkZGVuLCBDb21lOyBmb3IgYWxsIHRoaW5ncyBhcmUgbm93IHJlYWR5LgpBbmQgdGhleSBhbGwgd2l0aCBvbmUgY29uc2VudCBiZWdhbiB0byBtYWtlIGV4Y3VzZS4gVGhlIGZpcnN0IHNhaWQgdW50byBoaW0sIEkgaGF2ZSBib3VnaHQgYSBwaWVjZSBvZiBncm91bmQsIGFuZCBJIG11c3QgbmVlZHMgZ28gYW5kIHNlZSBpdDogSSBwcmF5IHRoZWUgaGF2ZSBtZSBleGN1c2VkLgpBbmQgYW5vdGhlciBzYWlkLCBJIGhhdmUgYm91Z2h0IGZpdmUgeW9rZSBvZiBveGVuLCBhbmQgSSBnbyB0byBwcm92ZSB0aGVtOiBJIHByYXkgdGhlZSBoYXZlIG1lIGV4Y3VzZWQuCkFuZCBhbm90aGVyIHNhaWQsIEkgaGF2ZSBtYXJyaWVkIGEgd2lmZSwgYW5kIHRoZXJlZm9yZSBJIGNhbm5vdCBjb21lLgpTbyB0aGF0IHNlcnZhbnQgY2FtZSwgYW5kIHNoZXdlZCBoaXMgbG9yZCB0aGVzZSB0aGluZ3MuIFRoZW4gdGhlIG1hc3RlciBvZiB0aGUgaG91c2UgYmVpbmcgYW5ncnkgc2FpZCB0byBoaXMgc2VydmFudCwgR28gb3V0IHF1aWNrbHkgaW50byB0aGUgc3RyZWV0cyBhbmQgbGFuZXMgb2YgdGhlIGNpdHksIGFuZCBicmluZyBpbiBoaXRoZXIgdGhlIHBvb3IsIGFuZCB0aGUgbWFpbWVkLCBhbmQgdGhlIGhhbHQsIGFuZCB0aGUgYmxpbmQuCkFuZCB0aGUgc2VydmFudCBzYWlkLCBMb3JkLCBpdCBpcyBkb25lIGFzIHRob3UgaGFzdCBjb21tYW5kZWQsIGFuZCB5ZXQgdGhlcmUgaXMgcm9vbS4KQW5kIHRoZSBsb3JkIHNhaWQgdW50byB0aGUgc2VydmFudCwgR28gb3V0IGludG8gdGhlIGhpZ2h3YXlzIGFuZCBoZWRnZXMsIGFuZCBjb21wZWwgdGhlbSB0byBjb21lIGluLCB0aGF0IG15IGhvdXNlIG1heSBiZSBmaWxsZWQuCkZvciBJIHNheSB1bnRvIHlvdSwgVGhhdCBub25lIG9mIHRob3NlIG1lbiB3aGljaCB3ZXJlIGJpZGRlbiBzaGFsbCB0YXN0ZSBvZiBteSBzdXBwZXIuCkFuZCB0aGVyZSB3ZW50IGdyZWF0IG11bHRpdHVkZXMgd2l0aCBoaW06IGFuZCBoZSB0dXJuZWQsIGFuZCBzYWlkIHVudG8gdGhlbSwKSWYgYW55IG1hbiBjb21lIHRvIG1lLCBhbmQgaGF0ZSBub3QgaGlzIGZhdGhlciwgYW5kIG1vdGhlciwgYW5kIHdpZmUsIGFuZCBjaGlsZHJlbiwgYW5kIGJyZXRocmVuLCBhbmQgc2lzdGVycywgeWVhLCBhbmQgaGlzIG93biBsaWZlIGFsc28sIGhlIGNhbm5vdCBiZSBteSBkaXNjaXBsZS4KQW5kIHdob3NvZXZlciBkb3RoIG5vdCBiZWFyIGhpcyBjcm9zcywgYW5kIGNvbWUgYWZ0ZXIgbWUsIGNhbm5vdCBiZSBteSBkaXNjaXBsZS4KRm9yIHdoaWNoIG9mIHlvdSwgaW50ZW5kaW5nIHRvIGJ1aWxkIGEgdG93ZXIsIHNpdHRldGggbm90IGRvd24gZmlyc3QsIGFuZCBjb3VudGV0aCB0aGUgY29zdCwgd2hldGhlciBoZSBoYXZlIHN1ZmZpY2llbnQgdG8gZmluaXNoIGl0PwpMZXN0IGhhcGx5LCBhZnRlciBoZSBoYXRoIGxhaWQgdGhlIGZvdW5kYXRpb24sIGFuZCBpcyBub3QgYWJsZSB0byBmaW5pc2ggaXQsIGFsbCB0aGF0IGJlaG9sZCBpdCBiZWdpbiB0byBtb2NrIGhpbSwKU2F5aW5nLCBUaGlzIG1hbiBiZWdhbiB0byBidWlsZCwgYW5kIHdhcyBub3QgYWJsZSB0byBmaW5pc2guCk9yIHdoYXQga2luZywgZ29pbmcgdG8gbWFrZSB3YXIgYWdhaW5zdCBhbm90aGVyIGtpbmcsIHNpdHRldGggbm90IGRvd24gZmlyc3QsIGFuZCBjb25zdWx0ZXRoIHdoZXRoZXIgaGUgYmUgYWJsZSB3aXRoIHRlbiB0aG91c2FuZCB0byBtZWV0IGhpbSB0aGF0IGNvbWV0aCBhZ2FpbnN0IGhpbSB3aXRoIHR3ZW50eSB0aG91c2FuZD8KT3IgZWxzZSwgd2hpbGUgdGhlIG90aGVyIGlzIHlldCBhIGdyZWF0IHdheSBvZmYsIGhlIHNlbmRldGggYW4gYW1iYXNzYWdlLCBhbmQgZGVzaXJldGggY29uZGl0aW9ucyBvZiBwZWFjZS4KU28gbGlrZXdpc2UsIHdob3NvZXZlciBoZSBiZSBvZiB5b3UgdGhhdCBmb3JzYWtldGggbm90IGFsbCB0aGF0IGhlIGhhdGgsIGhlIGNhbm5vdCBiZSBteSBkaXNjaXBsZS4KU2FsdCBpcyBnb29kOiBidXQgaWYgdGhlIHNhbHQgaGF2ZSBsb3N0IGhpcyBzYXZvdXIsIHdoZXJld2l0aCBzaGFsbCBpdCBiZSBzZWFzb25lZD8KSXQgaXMgbmVpdGhlciBmaXQgZm9yIHRoZSBsYW5kLCBub3IgeWV0IGZvciB0aGUgZHVuZ2hpbGw7IGJ1dCBtZW4gY2FzdCBpdCBvdXQuIEhlIHRoYXQgaGF0aCBlYXJzIHRvIGhlYXIsIGxldCBoaW0gaGVhci4KVGhlbiBkcmV3IG5lYXIgdW50byBoaW0gYWxsIHRoZSBwdWJsaWNhbnMgYW5kIHNpbm5lcnMgZm9yIHRvIGhlYXIgaGltLgpBbmQgdGhlIFBoYXJpc2VlcyBhbmQgc2NyaWJlcyBtdXJtdXJlZCwgc2F5aW5nLCBUaGlzIG1hbiByZWNlaXZldGggc2lubmVycywgYW5kIGVhdGV0aCB3aXRoIHRoZW0uCkFuZCBoZSBzcGFrZSB0aGlzIHBhcmFibGUgdW50byB0aGVtLCBzYXlpbmcsCldoYXQgbWFuIG9mIHlvdSwgaGF2aW5nIGFuIGh1bmRyZWQgc2hlZXAsIGlmIGhlIGxvc2Ugb25lIG9mIHRoZW0sIGRvdGggbm90IGxlYXZlIHRoZSBuaW5ldHkgYW5kIG5pbmUgaW4gdGhlIHdpbGRlcm5lc3MsIGFuZCBnbyBhZnRlciB0aGF0IHdoaWNoIGlzIGxvc3QsIHVudGlsIGhlIGZpbmQgaXQ/CkFuZCB3aGVuIGhlIGhhdGggZm91bmQgaXQsIGhlIGxheWV0aCBpdCBvbiBoaXMgc2hvdWxkZXJzLCByZWpvaWNpbmcuCkFuZCB3aGVuIGhlIGNvbWV0aCBob21lLCBoZSBjYWxsZXRoIHRvZ2V0aGVyIGhpcyBmcmllbmRzIGFuZCBuZWlnaGJvdXJzLCBzYXlpbmcgdW50byB0aGVtLCBSZWpvaWNlIHdpdGggbWU7IGZvciBJIGhhdmUgZm91bmQgbXkgc2hlZXAgd2hpY2ggd2FzIGxvc3QuCkkgc2F5IHVudG8geW91LCB0aGF0IGxpa2V3aXNlIGpveSBzaGFsbCBiZSBpbiBoZWF2ZW4gb3ZlciBvbmUgc2lubmVyIHRoYXQgcmVwZW50ZXRoLCBtb3JlIHRoYW4gb3ZlciBuaW5ldHkgYW5kIG5pbmUganVzdCBwZXJzb25zLCB3aGljaCBuZWVkIG5vIHJlcGVudGFuY2UuCkVpdGhlciB3aGF0IHdvbWFuIGhhdmluZyB0ZW4gcGllY2VzIG9mIHNpbHZlciwgaWYgc2hlIGxvc2Ugb25lIHBpZWNlLCBkb3RoIG5vdCBsaWdodCBhIGNhbmRsZSwgYW5kIHN3ZWVwIHRoZSBob3VzZSwgYW5kIHNlZWsgZGlsaWdlbnRseSB0aWxsIHNoZSBmaW5kIGl0PwpBbmQgd2hlbiBzaGUgaGF0aCBmb3VuZCBpdCwgc2hlIGNhbGxldGggaGVyIGZyaWVuZHMgYW5kIGhlciBuZWlnaGJvdXJzIHRvZ2V0aGVyLCBzYXlpbmcsIFJlam9pY2Ugd2l0aCBtZTsgZm9yIEkgaGF2ZSBmb3VuZCB0aGUgcGllY2Ugd2hpY2ggSSBoYWQgbG9zdC4KTGlrZXdpc2UsIEkgc2F5IHVudG8geW91LCB0aGVyZSBpcyBqb3kgaW4gdGhlIHByZXNlbmNlIG9mIHRoZSBhbmdlbHMgb2YgR29kIG92ZXIgb25lIHNpbm5lciB0aGF0IHJlcGVudGV0aC4KQW5kIGhlIHNhaWQsIEEgY2VydGFpbiBtYW4gaGFkIHR3byBzb25zOgpBbmQgdGhlIHlvdW5nZXIgb2YgdGhlbSBzYWlkIHRvIGhpcyBmYXRoZXIsIEZhdGhlciwgZ2l2ZSBtZSB0aGUgcG9ydGlvbiBvZiBnb29kcyB0aGF0IGZhbGxldGggdG8gbWUuIEFuZCBoZSBkaXZpZGVkIHVudG8gdGhlbSBoaXMgbGl2aW5nLgpBbmQgbm90IG1hbnkgZGF5cyBhZnRlciB0aGUgeW91bmdlciBzb24gZ2F0aGVyZWQgYWxsIHRvZ2V0aGVyLCBhbmQgdG9vayBoaXMgam91cm5leSBpbnRvIGEgZmFyIGNvdW50cnksIGFuZCB0aGVyZSB3YXN0ZWQgaGlzIHN1YnN0YW5jZSB3aXRoIHJpb3RvdXMgbGl2aW5nLgpBbmQgd2hlbiBoZSBoYWQgc3BlbnQgYWxsLCB0aGVyZSBhcm9zZSBhIG1pZ2h0eSBmYW1pbmUgaW4gdGhhdCBsYW5kOyBhbmQgaGUgYmVnYW4gdG8gYmUgaW4gd2FudC4KQW5kIGhlIHdlbnQgYW5kIGpvaW5lZCBoaW1zZWxmIHRvIGEgY2l0aXplbiBvZiB0aGF0IGNvdW50cnk7IGFuZCBoZSBzZW50IGhpbSBpbnRvIGhpcyBmaWVsZHMgdG8gZmVlZCBzd2luZS4KQW5kIGhlIHdvdWxkIGZhaW4gaGF2ZSBmaWxsZWQgaGlzIGJlbGx5IHdpdGggdGhlIGh1c2tzIHRoYXQgdGhlIHN3aW5lIGRpZCBlYXQ6IGFuZCBubyBtYW4gZ2F2ZSB1bnRvIGhpbS4KQW5kIHdoZW4gaGUgY2FtZSB0byBoaW1zZWxmLCBoZSBzYWlkLCBIb3cgbWFueSBoaXJlZCBzZXJ2YW50cyBvZiBteSBmYXRoZXIncyBoYXZlIGJyZWFkIGVub3VnaCBhbmQgdG8gc3BhcmUsIGFuZCBJIHBlcmlzaCB3aXRoIGh1bmdlciEKSSB3aWxsIGFyaXNlIGFuZCBnbyB0byBteSBmYXRoZXIsIGFuZCB3aWxsIHNheSB1bnRvIGhpbSwgRmF0aGVyLCBJIGhhdmUgc2lubmVkIGFnYWluc3QgaGVhdmVuLCBhbmQgYmVmb3JlIHRoZWUsCkFuZCBhbSBubyBtb3JlIHdvcnRoeSB0byBiZSBjYWxsZWQgdGh5IHNvbjogbWFrZSBtZSBhcyBvbmUgb2YgdGh5IGhpcmVkIHNlcnZhbnRzLgpBbmQgaGUgYXJvc2UsIGFuZCBjYW1lIHRvIGhpcyBmYXRoZXIuIEJ1dCB3aGVuIGhlIHdhcyB5ZXQgYSBncmVhdCB3YXkgb2ZmLCBoaXMgZmF0aGVyIHNhdyBoaW0sIGFuZCBoYWQgY29tcGFzc2lvbiwgYW5kIHJhbiwgYW5kIGZlbGwgb24gaGlzIG5lY2ssIGFuZCBraXNzZWQgaGltLgpBbmQgdGhlIHNvbiBzYWlkIHVudG8gaGltLCBGYXRoZXIsIEkgaGF2ZSBzaW5uZWQgYWdhaW5zdCBoZWF2ZW4sIGFuZCBpbiB0aHkgc2lnaHQsIGFuZCBhbSBubyBtb3JlIHdvcnRoeSB0byBiZSBjYWxsZWQgdGh5IHNvbi4KQnV0IHRoZSBmYXRoZXIgc2FpZCB0byBoaXMgc2VydmFudHMsIEJyaW5nIGZvcnRoIHRoZSBiZXN0IHJvYmUsIGFuZCBwdXQgaXQgb24gaGltOyBhbmQgcHV0IGEgcmluZyBvbiBoaXMgaGFuZCwgYW5kIHNob2VzIG9uIGhpcyBmZWV0OgpBbmQgYnJpbmcgaGl0aGVyIHRoZSBmYXR0ZWQgY2FsZiwgYW5kIGtpbGwgaXQ7IGFuZCBsZXQgdXMgZWF0LCBhbmQgYmUgbWVycnk6CkZvciB0aGlzIG15IHNvbiB3YXMgZGVhZCwgYW5kIGlzIGFsaXZlIGFnYWluOyBoZSB3YXMgbG9zdCwgYW5kIGlzIGZvdW5kLiBBbmQgdGhleSBiZWdhbiB0byBiZSBtZXJyeS4KTm93IGhpcyBlbGRlciBzb24gd2FzIGluIHRoZSBmaWVsZDogYW5kIGFzIGhlIGNhbWUgYW5kIGRyZXcgbmlnaCB0byB0aGUgaG91c2UsIGhlIGhlYXJkIG11c2ljayBhbmQgZGFuY2luZy4KQW5kIGhlIGNhbGxlZCBvbmUgb2YgdGhlIHNlcnZhbnRzLCBhbmQgYXNrZWQgd2hhdCB0aGVzZSB0aGluZ3MgbWVhbnQuCkFuZCBoZSBzYWlkIHVudG8gaGltLCBUaHkgYnJvdGhlciBpcyBjb21lOyBhbmQgdGh5IGZhdGhlciBoYXRoIGtpbGxlZCB0aGUgZmF0dGVkIGNhbGYsIGJlY2F1c2UgaGUgaGF0aCByZWNlaXZlZCBoaW0gc2FmZSBhbmQgc291bmQuCkFuZCBoZSB3YXMgYW5ncnksIGFuZCB3b3VsZCBub3QgZ28gaW46IHRoZXJlZm9yZSBjYW1lIGhpcyBmYXRoZXIgb3V0LCBhbmQgaW50cmVhdGVkIGhpbS4KQW5kIGhlIGFuc3dlcmluZyBzYWlkIHRvIGhpcyBmYXRoZXIsIExvLCB0aGVzZSBtYW55IHllYXJzIGRvIEkgc2VydmUgdGhlZSwgbmVpdGhlciB0cmFuc2dyZXNzZWQgSSBhdCBhbnkgdGltZSB0aHkgY29tbWFuZG1lbnQ6IGFuZCB5ZXQgdGhvdSBuZXZlciBnYXZlc3QgbWUgYSBraWQsIHRoYXQgSSBtaWdodCBtYWtlIG1lcnJ5IHdpdGggbXkgZnJpZW5kczoKQnV0IGFzIHNvb24gYXMgdGhpcyB0aHkgc29uIHdhcyBjb21lLCB3aGljaCBoYXRoIGRldm91cmVkIHRoeSBsaXZpbmcgd2l0aCBoYXJsb3RzLCB0aG91IGhhc3Qga2lsbGVkIGZvciBoaW0gdGhlIGZhdHRlZCBjYWxmLgpBbmQgaGUgc2FpZCB1bnRvIGhpbSwgU29uLCB0aG91IGFydCBldmVyIHdpdGggbWUsIGFuZCBhbGwgdGhhdCBJIGhhdmUgaXMgdGhpbmUuCkl0IHdhcyBtZWV0IHRoYXQgd2Ugc2hvdWxkIG1ha2UgbWVycnksIGFuZCBiZSBnbGFkOiBmb3IgdGhpcyB0aHkgYnJvdGhlciB3YXMgZGVhZCwgYW5kIGlzIGFsaXZlIGFnYWluOyBhbmQgd2FzIGxvc3QsIGFuZCBpcyBmb3VuZC4KQW5kIGhlIHNhaWQgYWxzbyB1bnRvIGhpcyBkaXNjaXBsZXMsIFRoZXJlIHdhcyBhIGNlcnRhaW4gcmljaCBtYW4sIHdoaWNoIGhhZCBhIHN0ZXdhcmQ7IGFuZCB0aGUgc2FtZSB3YXMgYWNjdXNlZCB1bnRvIGhpbSB0aGF0IGhlIGhhZCB3YXN0ZWQgaGlzIGdvb2RzLgpBbmQgaGUgY2FsbGVkIGhpbSwgYW5kIHNhaWQgdW50byBoaW0sIEhvdyBpcyBpdCB0aGF0IEkgaGVhciB0aGlzIG9mIHRoZWU/IGdpdmUgYW4gYWNjb3VudCBvZiB0aHkgc3Rld2FyZHNoaXA7IGZvciB0aG91IG1heWVzdCBiZSBubyBsb25nZXIgc3Rld2FyZC4KVGhlbiB0aGUgc3Rld2FyZCBzYWlkIHdpdGhpbiBoaW1zZWxmLCBXaGF0IHNoYWxsIEkgZG8/IGZvciBteSBsb3JkIHRha2V0aCBhd2F5IGZyb20gbWUgdGhlIHN0ZXdhcmRzaGlwOiBJIGNhbm5vdCBkaWc7IHRvIGJlZyBJIGFtIGFzaGFtZWQuCkkgYW0gcmVzb2x2ZWQgd2hhdCB0byBkbywgdGhhdCwgd2hlbiBJIGFtIHB1dCBvdXQgb2YgdGhlIHN0ZXdhcmRzaGlwLCB0aGV5IG1heSByZWNlaXZlIG1lIGludG8gdGhlaXIgaG91c2VzLgpTbyBoZSBjYWxsZWQgZXZlcnkgb25lIG9mIGhpcyBsb3JkJ3MgZGVidG9ycyB1bnRvIGhpbSwgYW5kIHNhaWQgdW50byB0aGUgZmlyc3QsIEhvdyBtdWNoIG93ZXN0IHRob3UgdW50byBteSBsb3JkPwpBbmQgaGUgc2FpZCwgQW4gaHVuZHJlZCBtZWFzdXJlcyBvZiBvaWwuIEFuZCBoZSBzYWlkIHVudG8gaGltLCBUYWtlIHRoeSBiaWxsLCBhbmQgc2l0IGRvd24gcXVpY2tseSwgYW5kIHdyaXRlIGZpZnR5LgpUaGVuIHNhaWQgaGUgdG8gYW5vdGhlciwgQW5kIGhvdyBtdWNoIG93ZXN0IHRob3U/IEFuZCBoZSBzYWlkLCBBbiBodW5kcmVkIG1lYXN1cmVzIG9mIHdoZWF0LiBBbmQgaGUgc2FpZCB1bnRvIGhpbSwgVGFrZSB0aHkgYmlsbCwgYW5kIHdyaXRlIGZvdXJzY29yZS4KQW5kIHRoZSBsb3JkIGNvbW1lbmRlZCB0aGUgdW5qdXN0IHN0ZXdhcmQsIGJlY2F1c2UgaGUgaGFkIGRvbmUgd2lzZWx5OiBmb3IgdGhlIGNoaWxkcmVuIG9mIHRoaXMgd29ybGQgYXJlIGluIHRoZWlyIGdlbmVyYXRpb24gd2lzZXIgdGhhbiB0aGUgY2hpbGRyZW4gb2YgbGlnaHQuCkFuZCBJIHNheSB1bnRvIHlvdSwgTWFrZSB0byB5b3Vyc2VsdmVzIGZyaWVuZHMgb2YgdGhlIG1hbW1vbiBvZiB1bnJpZ2h0ZW91c25lc3M7IHRoYXQsIHdoZW4geWUgZmFpbCwgdGhleSBtYXkgcmVjZWl2ZSB5b3UgaW50byBldmVybGFzdGluZyBoYWJpdGF0aW9ucy4KSGUgdGhhdCBpcyBmYWl0aGZ1bCBpbiB0aGF0IHdoaWNoIGlzIGxlYXN0IGlzIGZhaXRoZnVsIGFsc28gaW4gbXVjaDogYW5kIGhlIHRoYXQgaXMgdW5qdXN0IGluIHRoZSBsZWFzdCBpcyB1bmp1c3QgYWxzbyBpbiBtdWNoLgpJZiB0aGVyZWZvcmUgeWUgaGF2ZSBub3QgYmVlbiBmYWl0aGZ1bCBpbiB0aGUgdW5yaWdodGVvdXMgbWFtbW9uLCB3aG8gd2lsbCBjb21taXQgdG8geW91ciB0cnVzdCB0aGUgdHJ1ZSByaWNoZXM/CkFuZCBpZiB5ZSBoYXZlIG5vdCBiZWVuIGZhaXRoZnVsIGluIHRoYXQgd2hpY2ggaXMgYW5vdGhlciBtYW4ncywgd2hvIHNoYWxsIGdpdmUgeW91IHRoYXQgd2hpY2ggaXMgeW91ciBvd24/Ck5vIHNlcnZhbnQgY2FuIHNlcnZlIHR3byBtYXN0ZXJzOiBmb3IgZWl0aGVyIGhlIHdpbGwgaGF0ZSB0aGUgb25lLCBhbmQgbG92ZSB0aGUgb3RoZXI7IG9yIGVsc2UgaGUgd2lsbCBob2xkIHRvIHRoZSBvbmUsIGFuZCBkZXNwaXNlIHRoZSBvdGhlci4gWWUgY2Fubm90IHNlcnZlIEdvZCBhbmQgbWFtbW9uLgpBbmQgdGhlIFBoYXJpc2VlcyBhbHNvLCB3aG8gd2VyZSBjb3ZldG91cywgaGVhcmQgYWxsIHRoZXNlIHRoaW5nczogYW5kIHRoZXkgZGVyaWRlZCBoaW0uCkFuZCBoZSBzYWlkIHVudG8gdGhlbSwgWWUgYXJlIHRoZXkgd2hpY2gganVzdGlmeSB5b3Vyc2VsdmVzIGJlZm9yZSBtZW47IGJ1dCBHb2Qga25vd2V0aCB5b3VyIGhlYXJ0czogZm9yIHRoYXQgd2hpY2ggaXMgaGlnaGx5IGVzdGVlbWVkIGFtb25nIG1lbiBpcyBhYm9taW5hdGlvbiBpbiB0aGUgc2lnaHQgb2YgR29kLgpUaGUgbGF3IGFuZCB0aGUgcHJvcGhldHMgd2VyZSB1bnRpbCBKb2huOiBzaW5jZSB0aGF0IHRpbWUgdGhlIGtpbmdkb20gb2YgR29kIGlzIHByZWFjaGVkLCBhbmQgZXZlcnkgbWFuIHByZXNzZXRoIGludG8gaXQuCkFuZCBpdCBpcyBlYXNpZXIgZm9yIGhlYXZlbiBhbmQgZWFydGggdG8gcGFzcywgdGhhbiBvbmUgdGl0dGxlIG9mIHRoZSBsYXcgdG8gZmFpbC4KV2hvc29ldmVyIHB1dHRldGggYXdheSBoaXMgd2lmZSwgYW5kIG1hcnJpZXRoIGFub3RoZXIsIGNvbW1pdHRldGggYWR1bHRlcnk6IGFuZCB3aG9zb2V2ZXIgbWFycmlldGggaGVyIHRoYXQgaXMgcHV0IGF3YXkgZnJvbSBoZXIgaHVzYmFuZCBjb21taXR0ZXRoIGFkdWx0ZXJ5LgpUaGVyZSB3YXMgYSBjZXJ0YWluIHJpY2ggbWFuLCB3aGljaCB3YXMgY2xvdGhlZCBpbiBwdXJwbGUgYW5kIGZpbmUgbGluZW4sIGFuZCBmYXJlZCBzdW1wdHVvdXNseSBldmVyeSBkYXk6CkFuZCB0aGVyZSB3YXMgYSBjZXJ0YWluIGJlZ2dhciBuYW1lZCBMYXphcnVzLCB3aGljaCB3YXMgbGFpZCBhdCBoaXMgZ2F0ZSwgZnVsbCBvZiBzb3JlcywKQW5kIGRlc2lyaW5nIHRvIGJlIGZlZCB3aXRoIHRoZSBjcnVtYnMgd2hpY2ggZmVsbCBmcm9tIHRoZSByaWNoIG1hbidzIHRhYmxlOiBtb3Jlb3ZlciB0aGUgZG9ncyBjYW1lIGFuZCBsaWNrZWQgaGlzIHNvcmVzLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB0aGF0IHRoZSBiZWdnYXIgZGllZCwgYW5kIHdhcyBjYXJyaWVkIGJ5IHRoZSBhbmdlbHMgaW50byBBYnJhaGFtJ3MgYm9zb206IHRoZSByaWNoIG1hbiBhbHNvIGRpZWQsIGFuZCB3YXMgYnVyaWVkOwpBbmQgaW4gaGVsbCBoZSBsaWZ0IHVwIGhpcyBleWVzLCBiZWluZyBpbiB0b3JtZW50cywgYW5kIHNlZXRoIEFicmFoYW0gYWZhciBvZmYsIGFuZCBMYXphcnVzIGluIGhpcyBib3NvbS4KQW5kIGhlIGNyaWVkIGFuZCBzYWlkLCBGYXRoZXIgQWJyYWhhbSwgaGF2ZSBtZXJjeSBvbiBtZSwgYW5kIHNlbmQgTGF6YXJ1cywgdGhhdCBoZSBtYXkgZGlwIHRoZSB0aXAgb2YgaGlzIGZpbmdlciBpbiB3YXRlciwgYW5kIGNvb2wgbXkgdG9uZ3VlOyBmb3IgSSBhbSB0b3JtZW50ZWQgaW4gdGhpcyBmbGFtZS4KQnV0IEFicmFoYW0gc2FpZCwgU29uLCByZW1lbWJlciB0aGF0IHRob3UgaW4gdGh5IGxpZmV0aW1lIHJlY2VpdmVkc3QgdGh5IGdvb2QgdGhpbmdzLCBhbmQgbGlrZXdpc2UgTGF6YXJ1cyBldmlsIHRoaW5nczogYnV0IG5vdyBoZSBpcyBjb21mb3J0ZWQsIGFuZCB0aG91IGFydCB0b3JtZW50ZWQuCkFuZCBiZXNpZGUgYWxsIHRoaXMsIGJldHdlZW4gdXMgYW5kIHlvdSB0aGVyZSBpcyBhIGdyZWF0IGd1bGYgZml4ZWQ6IHNvIHRoYXQgdGhleSB3aGljaCB3b3VsZCBwYXNzIGZyb20gaGVuY2UgdG8geW91IGNhbm5vdDsgbmVpdGhlciBjYW4gdGhleSBwYXNzIHRvIHVzLCB0aGF0IHdvdWxkIGNvbWUgZnJvbSB0aGVuY2UuClRoZW4gaGUgc2FpZCwgSSBwcmF5IHRoZWUgdGhlcmVmb3JlLCBmYXRoZXIsIHRoYXQgdGhvdSB3b3VsZGVzdCBzZW5kIGhpbSB0byBteSBmYXRoZXIncyBob3VzZToKRm9yIEkgaGF2ZSBmaXZlIGJyZXRocmVuOyB0aGF0IGhlIG1heSB0ZXN0aWZ5IHVudG8gdGhlbSwgbGVzdCB0aGV5IGFsc28gY29tZSBpbnRvIHRoaXMgcGxhY2Ugb2YgdG9ybWVudC4KQWJyYWhhbSBzYWl0aCB1bnRvIGhpbSwgVGhleSBoYXZlIE1vc2VzIGFuZCB0aGUgcHJvcGhldHM7IGxldCB0aGVtIGhlYXIgdGhlbS4KQW5kIGhlIHNhaWQsIE5heSwgZmF0aGVyIEFicmFoYW06IGJ1dCBpZiBvbmUgd2VudCB1bnRvIHRoZW0gZnJvbSB0aGUgZGVhZCwgdGhleSB3aWxsIHJlcGVudC4KQW5kIGhlIHNhaWQgdW50byBoaW0sIElmIHRoZXkgaGVhciBub3QgTW9zZXMgYW5kIHRoZSBwcm9waGV0cywgbmVpdGhlciB3aWxsIHRoZXkgYmUgcGVyc3VhZGVkLCB0aG91Z2ggb25lIHJvc2UgZnJvbSB0aGUgZGVhZC4KVGhlbiBzYWlkIGhlIHVudG8gdGhlIGRpc2NpcGxlcywgSXQgaXMgaW1wb3NzaWJsZSBidXQgdGhhdCBvZmZlbmNlcyB3aWxsIGNvbWU6IGJ1dCB3b2UgdW50byBoaW0sIHRocm91Z2ggd2hvbSB0aGV5IGNvbWUhCkl0IHdlcmUgYmV0dGVyIGZvciBoaW0gdGhhdCBhIG1pbGxzdG9uZSB3ZXJlIGhhbmdlZCBhYm91dCBoaXMgbmVjaywgYW5kIGhlIGNhc3QgaW50byB0aGUgc2VhLCB0aGFuIHRoYXQgaGUgc2hvdWxkIG9mZmVuZCBvbmUgb2YgdGhlc2UgbGl0dGxlIG9uZXMuClRha2UgaGVlZCB0byB5b3Vyc2VsdmVzOiBJZiB0aHkgYnJvdGhlciB0cmVzcGFzcyBhZ2FpbnN0IHRoZWUsIHJlYnVrZSBoaW07IGFuZCBpZiBoZSByZXBlbnQsIGZvcmdpdmUgaGltLgpBbmQgaWYgaGUgdHJlc3Bhc3MgYWdhaW5zdCB0aGVlIHNldmVuIHRpbWVzIGluIGEgZGF5LCBhbmQgc2V2ZW4gdGltZXMgaW4gYSBkYXkgdHVybiBhZ2FpbiB0byB0aGVlLCBzYXlpbmcsIEkgcmVwZW50OyB0aG91IHNoYWx0IGZvcmdpdmUgaGltLgpBbmQgdGhlIGFwb3N0bGVzIHNhaWQgdW50byB0aGUgTG9yZCwgSW5jcmVhc2Ugb3VyIGZhaXRoLgpBbmQgdGhlIExvcmQgc2FpZCwgSWYgeWUgaGFkIGZhaXRoIGFzIGEgZ3JhaW4gb2YgbXVzdGFyZCBzZWVkLCB5ZSBtaWdodCBzYXkgdW50byB0aGlzIHN5Y2FtaW5lIHRyZWUsIEJlIHRob3UgcGx1Y2tlZCB1cCBieSB0aGUgcm9vdCwgYW5kIGJlIHRob3UgcGxhbnRlZCBpbiB0aGUgc2VhOyBhbmQgaXQgc2hvdWxkIG9iZXkgeW91LgpCdXQgd2hpY2ggb2YgeW91LCBoYXZpbmcgYSBzZXJ2YW50IHBsb3dpbmcgb3IgZmVlZGluZyBjYXR0bGUsIHdpbGwgc2F5IHVudG8gaGltIGJ5IGFuZCBieSwgd2hlbiBoZSBpcyBjb21lIGZyb20gdGhlIGZpZWxkLCBHbyBhbmQgc2l0IGRvd24gdG8gbWVhdD8KQW5kIHdpbGwgbm90IHJhdGhlciBzYXkgdW50byBoaW0sIE1ha2UgcmVhZHkgd2hlcmV3aXRoIEkgbWF5IHN1cCwgYW5kIGdpcmQgdGh5c2VsZiwgYW5kIHNlcnZlIG1lLCB0aWxsIEkgaGF2ZSBlYXRlbiBhbmQgZHJ1bmtlbjsgYW5kIGFmdGVyd2FyZCB0aG91IHNoYWx0IGVhdCBhbmQgZHJpbms/CkRvdGggaGUgdGhhbmsgdGhhdCBzZXJ2YW50IGJlY2F1c2UgaGUgZGlkIHRoZSB0aGluZ3MgdGhhdCB3ZXJlIGNvbW1hbmRlZCBoaW0/IEkgdHJvdyBub3QuClNvIGxpa2V3aXNlIHllLCB3aGVuIHllIHNoYWxsIGhhdmUgZG9uZSBhbGwgdGhvc2UgdGhpbmdzIHdoaWNoIGFyZSBjb21tYW5kZWQgeW91LCBzYXksIFdlIGFyZSB1bnByb2ZpdGFibGUgc2VydmFudHM6IHdlIGhhdmUgZG9uZSB0aGF0IHdoaWNoIHdhcyBvdXIgZHV0eSB0byBkby4KQW5kIGl0IGNhbWUgdG8gcGFzcywgYXMgaGUgd2VudCB0byBKZXJ1c2FsZW0sIHRoYXQgaGUgcGFzc2VkIHRocm91Z2ggdGhlIG1pZHN0IG9mIFNhbWFyaWEgYW5kIEdhbGlsZWUuCkFuZCBhcyBoZSBlbnRlcmVkIGludG8gYSBjZXJ0YWluIHZpbGxhZ2UsIHRoZXJlIG1ldCBoaW0gdGVuIG1lbiB0aGF0IHdlcmUgbGVwZXJzLCB3aGljaCBzdG9vZCBhZmFyIG9mZjoKQW5kIHRoZXkgbGlmdGVkIHVwIHRoZWlyIHZvaWNlcywgYW5kIHNhaWQsIEplc3VzLCBNYXN0ZXIsIGhhdmUgbWVyY3kgb24gdXMuCkFuZCB3aGVuIGhlIHNhdyB0aGVtLCBoZSBzYWlkIHVudG8gdGhlbSwgR28gc2hldyB5b3Vyc2VsdmVzIHVudG8gdGhlIHByaWVzdHMuIEFuZCBpdCBjYW1lIHRvIHBhc3MsIHRoYXQsIGFzIHRoZXkgd2VudCwgdGhleSB3ZXJlIGNsZWFuc2VkLgpBbmQgb25lIG9mIHRoZW0sIHdoZW4gaGUgc2F3IHRoYXQgaGUgd2FzIGhlYWxlZCwgdHVybmVkIGJhY2ssIGFuZCB3aXRoIGEgbG91ZCB2b2ljZSBnbG9yaWZpZWQgR29kLApBbmQgZmVsbCBkb3duIG9uIGhpcyBmYWNlIGF0IGhpcyBmZWV0LCBnaXZpbmcgaGltIHRoYW5rczogYW5kIGhlIHdhcyBhIFNhbWFyaXRhbi4KQW5kIEplc3VzIGFuc3dlcmluZyBzYWlkLCBXZXJlIHRoZXJlIG5vdCB0ZW4gY2xlYW5zZWQ/IGJ1dCB3aGVyZSBhcmUgdGhlIG5pbmU/ClRoZXJlIGFyZSBub3QgZm91bmQgdGhhdCByZXR1cm5lZCB0byBnaXZlIGdsb3J5IHRvIEdvZCwgc2F2ZSB0aGlzIHN0cmFuZ2VyLgpBbmQgaGUgc2FpZCB1bnRvIGhpbSwgQXJpc2UsIGdvIHRoeSB3YXk6IHRoeSBmYWl0aCBoYXRoIG1hZGUgdGhlZSB3aG9sZS4KQW5kIHdoZW4gaGUgd2FzIGRlbWFuZGVkIG9mIHRoZSBQaGFyaXNlZXMsIHdoZW4gdGhlIGtpbmdkb20gb2YgR29kIHNob3VsZCBjb21lLCBoZSBhbnN3ZXJlZCB0aGVtIGFuZCBzYWlkLCBUaGUga2luZ2RvbSBvZiBHb2QgY29tZXRoIG5vdCB3aXRoIG9ic2VydmF0aW9uOgpOZWl0aGVyIHNoYWxsIHRoZXkgc2F5LCBMbyBoZXJlISBvciwgbG8gdGhlcmUhIGZvciwgYmVob2xkLCB0aGUga2luZ2RvbSBvZiBHb2QgaXMgd2l0aGluIHlvdS4KQW5kIGhlIHNhaWQgdW50byB0aGUgZGlzY2lwbGVzLCBUaGUgZGF5cyB3aWxsIGNvbWUsIHdoZW4geWUgc2hhbGwgZGVzaXJlIHRvIHNlZSBvbmUgb2YgdGhlIGRheXMgb2YgdGhlIFNvbiBvZiBtYW4sIGFuZCB5ZSBzaGFsbCBub3Qgc2VlIGl0LgpBbmQgdGhleSBzaGFsbCBzYXkgdG8geW91LCBTZWUgaGVyZTsgb3IsIHNlZSB0aGVyZTogZ28gbm90IGFmdGVyIHRoZW0sIG5vciBmb2xsb3cgdGhlbS4KRm9yIGFzIHRoZSBsaWdodG5pbmcsIHRoYXQgbGlnaHRlbmV0aCBvdXQgb2YgdGhlIG9uZSBwYXJ0IHVuZGVyIGhlYXZlbiwgc2hpbmV0aCB1bnRvIHRoZSBvdGhlciBwYXJ0IHVuZGVyIGhlYXZlbjsgc28gc2hhbGwgYWxzbyB0aGUgU29uIG9mIG1hbiBiZSBpbiBoaXMgZGF5LgpCdXQgZmlyc3QgbXVzdCBoZSBzdWZmZXIgbWFueSB0aGluZ3MsIGFuZCBiZSByZWplY3RlZCBvZiB0aGlzIGdlbmVyYXRpb24uCkFuZCBhcyBpdCB3YXMgaW4gdGhlIGRheXMgb2YgTm9lLCBzbyBzaGFsbCBpdCBiZSBhbHNvIGluIHRoZSBkYXlzIG9mIHRoZSBTb24gb2YgbWFuLgpUaGV5IGRpZCBlYXQsIHRoZXkgZHJhbmssIHRoZXkgbWFycmllZCB3aXZlcywgdGhleSB3ZXJlIGdpdmVuIGluIG1hcnJpYWdlLCB1bnRpbCB0aGUgZGF5IHRoYXQgTm9lIGVudGVyZWQgaW50byB0aGUgYXJrLCBhbmQgdGhlIGZsb29kIGNhbWUsIGFuZCBkZXN0cm95ZWQgdGhlbSBhbGwuCkxpa2V3aXNlIGFsc28gYXMgaXQgd2FzIGluIHRoZSBkYXlzIG9mIExvdDsgdGhleSBkaWQgZWF0LCB0aGV5IGRyYW5rLCB0aGV5IGJvdWdodCwgdGhleSBzb2xkLCB0aGV5IHBsYW50ZWQsIHRoZXkgYnVpbGRlZDsKQnV0IHRoZSBzYW1lIGRheSB0aGF0IExvdCB3ZW50IG91dCBvZiBTb2RvbSBpdCByYWluZWQgZmlyZSBhbmQgYnJpbXN0b25lIGZyb20gaGVhdmVuLCBhbmQgZGVzdHJveWVkIHRoZW0gYWxsLgpFdmVuIHRodXMgc2hhbGwgaXQgYmUgaW4gdGhlIGRheSB3aGVuIHRoZSBTb24gb2YgbWFuIGlzIHJldmVhbGVkLgpJbiB0aGF0IGRheSwgaGUgd2hpY2ggc2hhbGwgYmUgdXBvbiB0aGUgaG91c2V0b3AsIGFuZCBoaXMgc3R1ZmYgaW4gdGhlIGhvdXNlLCBsZXQgaGltIG5vdCBjb21lIGRvd24gdG8gdGFrZSBpdCBhd2F5OiBhbmQgaGUgdGhhdCBpcyBpbiB0aGUgZmllbGQsIGxldCBoaW0gbGlrZXdpc2Ugbm90IHJldHVybiBiYWNrLgpSZW1lbWJlciBMb3QncyB3aWZlLgpXaG9zb2V2ZXIgc2hhbGwgc2VlayB0byBzYXZlIGhpcyBsaWZlIHNoYWxsIGxvc2UgaXQ7IGFuZCB3aG9zb2V2ZXIgc2hhbGwgbG9zZSBoaXMgbGlmZSBzaGFsbCBwcmVzZXJ2ZSBpdC4KSSB0ZWxsIHlvdSwgaW4gdGhhdCBuaWdodCB0aGVyZSBzaGFsbCBiZSB0d28gbWVuIGluIG9uZSBiZWQ7IHRoZSBvbmUgc2hhbGwgYmUgdGFrZW4sIGFuZCB0aGUgb3RoZXIgc2hhbGwgYmUgbGVmdC4KVHdvIHdvbWVuIHNoYWxsIGJlIGdyaW5kaW5nIHRvZ2V0aGVyOyB0aGUgb25lIHNoYWxsIGJlIHRha2VuLCBhbmQgdGhlIG90aGVyIGxlZnQuClR3byBtZW4gc2hhbGwgYmUgaW4gdGhlIGZpZWxkOyB0aGUgb25lIHNoYWxsIGJlIHRha2VuLCBhbmQgdGhlIG90aGVyIGxlZnQuCkFuZCB0aGV5IGFuc3dlcmVkIGFuZCBzYWlkIHVudG8gaGltLCBXaGVyZSwgTG9yZD8gQW5kIGhlIHNhaWQgdW50byB0aGVtLCBXaGVyZXNvZXZlciB0aGUgYm9keSBpcywgdGhpdGhlciB3aWxsIHRoZSBlYWdsZXMgYmUgZ2F0aGVyZWQgdG9nZXRoZXIuCkFuZCBoZSBzcGFrZSBhIHBhcmFibGUgdW50byB0aGVtIHRvIHRoaXMgZW5kLCB0aGF0IG1lbiBvdWdodCBhbHdheXMgdG8gcHJheSwgYW5kIG5vdCB0byBmYWludDsKU2F5aW5nLCBUaGVyZSB3YXMgaW4gYSBjaXR5IGEganVkZ2UsIHdoaWNoIGZlYXJlZCBub3QgR29kLCBuZWl0aGVyIHJlZ2FyZGVkIG1hbjoKQW5kIHRoZXJlIHdhcyBhIHdpZG93IGluIHRoYXQgY2l0eTsgYW5kIHNoZSBjYW1lIHVudG8gaGltLCBzYXlpbmcsIEF2ZW5nZSBtZSBvZiBtaW5lIGFkdmVyc2FyeS4KQW5kIGhlIHdvdWxkIG5vdCBmb3IgYSB3aGlsZTogYnV0IGFmdGVyd2FyZCBoZSBzYWlkIHdpdGhpbiBoaW1zZWxmLCBUaG91Z2ggSSBmZWFyIG5vdCBHb2QsIG5vciByZWdhcmQgbWFuOwpZZXQgYmVjYXVzZSB0aGlzIHdpZG93IHRyb3VibGV0aCBtZSwgSSB3aWxsIGF2ZW5nZSBoZXIsIGxlc3QgYnkgaGVyIGNvbnRpbnVhbCBjb21pbmcgc2hlIHdlYXJ5IG1lLgpBbmQgdGhlIExvcmQgc2FpZCwgSGVhciB3aGF0IHRoZSB1bmp1c3QganVkZ2Ugc2FpdGguCkFuZCBzaGFsbCBub3QgR29kIGF2ZW5nZSBoaXMgb3duIGVsZWN0LCB3aGljaCBjcnkgZGF5IGFuZCBuaWdodCB1bnRvIGhpbSwgdGhvdWdoIGhlIGJlYXIgbG9uZyB3aXRoIHRoZW0/CkkgdGVsbCB5b3UgdGhhdCBoZSB3aWxsIGF2ZW5nZSB0aGVtIHNwZWVkaWx5LiBOZXZlcnRoZWxlc3Mgd2hlbiB0aGUgU29uIG9mIG1hbiBjb21ldGgsIHNoYWxsIGhlIGZpbmQgZmFpdGggb24gdGhlIGVhcnRoPwpBbmQgaGUgc3Bha2UgdGhpcyBwYXJhYmxlIHVudG8gY2VydGFpbiB3aGljaCB0cnVzdGVkIGluIHRoZW1zZWx2ZXMgdGhhdCB0aGV5IHdlcmUgcmlnaHRlb3VzLCBhbmQgZGVzcGlzZWQgb3RoZXJzOgpUd28gbWVuIHdlbnQgdXAgaW50byB0aGUgdGVtcGxlIHRvIHByYXk7IHRoZSBvbmUgYSBQaGFyaXNlZSwgYW5kIHRoZSBvdGhlciBhIHB1YmxpY2FuLgpUaGUgUGhhcmlzZWUgc3Rvb2QgYW5kIHByYXllZCB0aHVzIHdpdGggaGltc2VsZiwgR29kLCBJIHRoYW5rIHRoZWUsIHRoYXQgSSBhbSBub3QgYXMgb3RoZXIgbWVuIGFyZSwgZXh0b3J0aW9uZXJzLCB1bmp1c3QsIGFkdWx0ZXJlcnMsIG9yIGV2ZW4gYXMgdGhpcyBwdWJsaWNhbi4KSSBmYXN0IHR3aWNlIGluIHRoZSB3ZWVrLCBJIGdpdmUgdGl0aGVzIG9mIGFsbCB0aGF0IEkgcG9zc2Vzcy4KQW5kIHRoZSBwdWJsaWNhbiwgc3RhbmRpbmcgYWZhciBvZmYsIHdvdWxkIG5vdCBsaWZ0IHVwIHNvIG11Y2ggYXMgaGlzIGV5ZXMgdW50byBoZWF2ZW4sIGJ1dCBzbW90ZSB1cG9uIGhpcyBicmVhc3QsIHNheWluZywgR29kIGJlIG1lcmNpZnVsIHRvIG1lIGEgc2lubmVyLgpJIHRlbGwgeW91LCB0aGlzIG1hbiB3ZW50IGRvd24gdG8gaGlzIGhvdXNlIGp1c3RpZmllZCByYXRoZXIgdGhhbiB0aGUgb3RoZXI6IGZvciBldmVyeSBvbmUgdGhhdCBleGFsdGV0aCBoaW1zZWxmIHNoYWxsIGJlIGFiYXNlZDsgYW5kIGhlIHRoYXQgaHVtYmxldGggaGltc2VsZiBzaGFsbCBiZSBleGFsdGVkLgpBbmQgdGhleSBicm91Z2h0IHVudG8gaGltIGFsc28gaW5mYW50cywgdGhhdCBoZSB3b3VsZCB0b3VjaCB0aGVtOiBidXQgd2hlbiBoaXMgZGlzY2lwbGVzIHNhdyBpdCwgdGhleSByZWJ1a2VkIHRoZW0uCkJ1dCBKZXN1cyBjYWxsZWQgdGhlbSB1bnRvIGhpbSwgYW5kIHNhaWQsIFN1ZmZlciBsaXR0bGUgY2hpbGRyZW4gdG8gY29tZSB1bnRvIG1lLCBhbmQgZm9yYmlkIHRoZW0gbm90OiBmb3Igb2Ygc3VjaCBpcyB0aGUga2luZ2RvbSBvZiBHb2QuClZlcmlseSBJIHNheSB1bnRvIHlvdSwgV2hvc29ldmVyIHNoYWxsIG5vdCByZWNlaXZlIHRoZSBraW5nZG9tIG9mIEdvZCBhcyBhIGxpdHRsZSBjaGlsZCBzaGFsbCBpbiBubyB3aXNlIGVudGVyIHRoZXJlaW4uCkFuZCBhIGNlcnRhaW4gcnVsZXIgYXNrZWQgaGltLCBzYXlpbmcsIEdvb2QgTWFzdGVyLCB3aGF0IHNoYWxsIEkgZG8gdG8gaW5oZXJpdCBldGVybmFsIGxpZmU/CkFuZCBKZXN1cyBzYWlkIHVudG8gaGltLCBXaHkgY2FsbGVzdCB0aG91IG1lIGdvb2Q/IG5vbmUgaXMgZ29vZCwgc2F2ZSBvbmUsIHRoYXQgaXMsIEdvZC4KVGhvdSBrbm93ZXN0IHRoZSBjb21tYW5kbWVudHMsIERvIG5vdCBjb21taXQgYWR1bHRlcnksIERvIG5vdCBraWxsLCBEbyBub3Qgc3RlYWwsIERvIG5vdCBiZWFyIGZhbHNlIHdpdG5lc3MsIEhvbm91ciB0aHkgZmF0aGVyIGFuZCB0aHkgbW90aGVyLgpBbmQgaGUgc2FpZCwgQWxsIHRoZXNlIGhhdmUgSSBrZXB0IGZyb20gbXkgeW91dGggdXAuCk5vdyB3aGVuIEplc3VzIGhlYXJkIHRoZXNlIHRoaW5ncywgaGUgc2FpZCB1bnRvIGhpbSwgWWV0IGxhY2tlc3QgdGhvdSBvbmUgdGhpbmc6IHNlbGwgYWxsIHRoYXQgdGhvdSBoYXN0LCBhbmQgZGlzdHJpYnV0ZSB1bnRvIHRoZSBwb29yLCBhbmQgdGhvdSBzaGFsdCBoYXZlIHRyZWFzdXJlIGluIGhlYXZlbjogYW5kIGNvbWUsIGZvbGxvdyBtZS4KQW5kIHdoZW4gaGUgaGVhcmQgdGhpcywgaGUgd2FzIHZlcnkgc29ycm93ZnVsOiBmb3IgaGUgd2FzIHZlcnkgcmljaC4KQW5kIHdoZW4gSmVzdXMgc2F3IHRoYXQgaGUgd2FzIHZlcnkgc29ycm93ZnVsLCBoZSBzYWlkLCBIb3cgaGFyZGx5IHNoYWxsIHRoZXkgdGhhdCBoYXZlIHJpY2hlcyBlbnRlciBpbnRvIHRoZSBraW5nZG9tIG9mIEdvZCEKRm9yIGl0IGlzIGVhc2llciBmb3IgYSBjYW1lbCB0byBnbyB0aHJvdWdoIGEgbmVlZGxlJ3MgZXllLCB0aGFuIGZvciBhIHJpY2ggbWFuIHRvIGVudGVyIGludG8gdGhlIGtpbmdkb20gb2YgR29kLgpBbmQgdGhleSB0aGF0IGhlYXJkIGl0IHNhaWQsIFdobyB0aGVuIGNhbiBiZSBzYXZlZD8KQW5kIGhlIHNhaWQsIFRoZSB0aGluZ3Mgd2hpY2ggYXJlIGltcG9zc2libGUgd2l0aCBtZW4gYXJlIHBvc3NpYmxlIHdpdGggR29kLgpUaGVuIFBldGVyIHNhaWQsIExvLCB3ZSBoYXZlIGxlZnQgYWxsLCBhbmQgZm9sbG93ZWQgdGhlZS4KQW5kIGhlIHNhaWQgdW50byB0aGVtLCBWZXJpbHkgSSBzYXkgdW50byB5b3UsIFRoZXJlIGlzIG5vIG1hbiB0aGF0IGhhdGggbGVmdCBob3VzZSwgb3IgcGFyZW50cywgb3IgYnJldGhyZW4sIG9yIHdpZmUsIG9yIGNoaWxkcmVuLCBmb3IgdGhlIGtpbmdkb20gb2YgR29kJ3Mgc2FrZSwKV2hvIHNoYWxsIG5vdCByZWNlaXZlIG1hbmlmb2xkIG1vcmUgaW4gdGhpcyBwcmVzZW50IHRpbWUsIGFuZCBpbiB0aGUgd29ybGQgdG8gY29tZSBsaWZlIGV2ZXJsYXN0aW5nLgpUaGVuIGhlIHRvb2sgdW50byBoaW0gdGhlIHR3ZWx2ZSwgYW5kIHNhaWQgdW50byB0aGVtLCBCZWhvbGQsIHdlIGdvIHVwIHRvIEplcnVzYWxlbSwgYW5kIGFsbCB0aGluZ3MgdGhhdCBhcmUgd3JpdHRlbiBieSB0aGUgcHJvcGhldHMgY29uY2VybmluZyB0aGUgU29uIG9mIG1hbiBzaGFsbCBiZSBhY2NvbXBsaXNoZWQuCkZvciBoZSBzaGFsbCBiZSBkZWxpdmVyZWQgdW50byB0aGUgR2VudGlsZXMsIGFuZCBzaGFsbCBiZSBtb2NrZWQsIGFuZCBzcGl0ZWZ1bGx5IGVudHJlYXRlZCwgYW5kIHNwaXR0ZWQgb246CkFuZCB0aGV5IHNoYWxsIHNjb3VyZ2UgaGltLCBhbmQgcHV0IGhpbSB0byBkZWF0aDogYW5kIHRoZSB0aGlyZCBkYXkgaGUgc2hhbGwgcmlzZSBhZ2Fpbi4KQW5kIHRoZXkgdW5kZXJzdG9vZCBub25lIG9mIHRoZXNlIHRoaW5nczogYW5kIHRoaXMgc2F5aW5nIHdhcyBoaWQgZnJvbSB0aGVtLCBuZWl0aGVyIGtuZXcgdGhleSB0aGUgdGhpbmdzIHdoaWNoIHdlcmUgc3Bva2VuLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB0aGF0IGFzIGhlIHdhcyBjb21lIG5pZ2ggdW50byBKZXJpY2hvLCBhIGNlcnRhaW4gYmxpbmQgbWFuIHNhdCBieSB0aGUgd2F5IHNpZGUgYmVnZ2luZzoKQW5kIGhlYXJpbmcgdGhlIG11bHRpdHVkZSBwYXNzIGJ5LCBoZSBhc2tlZCB3aGF0IGl0IG1lYW50LgpBbmQgdGhleSB0b2xkIGhpbSwgdGhhdCBKZXN1cyBvZiBOYXphcmV0aCBwYXNzZXRoIGJ5LgpBbmQgaGUgY3JpZWQsIHNheWluZywgSmVzdXMsIHRob3Ugc29uIG9mIERhdmlkLCBoYXZlIG1lcmN5IG9uIG1lLgpBbmQgdGhleSB3aGljaCB3ZW50IGJlZm9yZSByZWJ1a2VkIGhpbSwgdGhhdCBoZSBzaG91bGQgaG9sZCBoaXMgcGVhY2U6IGJ1dCBoZSBjcmllZCBzbyBtdWNoIHRoZSBtb3JlLCBUaG91IHNvbiBvZiBEYXZpZCwgaGF2ZSBtZXJjeSBvbiBtZS4KQW5kIEplc3VzIHN0b29kLCBhbmQgY29tbWFuZGVkIGhpbSB0byBiZSBicm91Z2h0IHVudG8gaGltOiBhbmQgd2hlbiBoZSB3YXMgY29tZSBuZWFyLCBoZSBhc2tlZCBoaW0sClNheWluZywgV2hhdCB3aWx0IHRob3UgdGhhdCBJIHNoYWxsIGRvIHVudG8gdGhlZT8gQW5kIGhlIHNhaWQsIExvcmQsIHRoYXQgSSBtYXkgcmVjZWl2ZSBteSBzaWdodC4KQW5kIEplc3VzIHNhaWQgdW50byBoaW0sIFJlY2VpdmUgdGh5IHNpZ2h0OiB0aHkgZmFpdGggaGF0aCBzYXZlZCB0aGVlLgpBbmQgaW1tZWRpYXRlbHkgaGUgcmVjZWl2ZWQgaGlzIHNpZ2h0LCBhbmQgZm9sbG93ZWQgaGltLCBnbG9yaWZ5aW5nIEdvZDogYW5kIGFsbCB0aGUgcGVvcGxlLCB3aGVuIHRoZXkgc2F3IGl0LCBnYXZlIHByYWlzZSB1bnRvIEdvZC4KQW5kIEplc3VzIGVudGVyZWQgYW5kIHBhc3NlZCB0aHJvdWdoIEplcmljaG8uCkFuZCwgYmVob2xkLCB0aGVyZSB3YXMgYSBtYW4gbmFtZWQgWmFjY2hhZXVzLCB3aGljaCB3YXMgdGhlIGNoaWVmIGFtb25nIHRoZSBwdWJsaWNhbnMsIGFuZCBoZSB3YXMgcmljaC4KQW5kIGhlIHNvdWdodCB0byBzZWUgSmVzdXMgd2hvIGhlIHdhczsgYW5kIGNvdWxkIG5vdCBmb3IgdGhlIHByZXNzLCBiZWNhdXNlIGhlIHdhcyBsaXR0bGUgb2Ygc3RhdHVyZS4KQW5kIGhlIHJhbiBiZWZvcmUsIGFuZCBjbGltYmVkIHVwIGludG8gYSBzeWNvbW9yZSB0cmVlIHRvIHNlZSBoaW06IGZvciBoZSB3YXMgdG8gcGFzcyB0aGF0IHdheS4KQW5kIHdoZW4gSmVzdXMgY2FtZSB0byB0aGUgcGxhY2UsIGhlIGxvb2tlZCB1cCwgYW5kIHNhdyBoaW0sIGFuZCBzYWlkIHVudG8gaGltLCBaYWNjaGFldXMsIG1ha2UgaGFzdGUsIGFuZCBjb21lIGRvd247IGZvciB0byBkYXkgSSBtdXN0IGFiaWRlIGF0IHRoeSBob3VzZS4KQW5kIGhlIG1hZGUgaGFzdGUsIGFuZCBjYW1lIGRvd24sIGFuZCByZWNlaXZlZCBoaW0gam95ZnVsbHkuCkFuZCB3aGVuIHRoZXkgc2F3IGl0LCB0aGV5IGFsbCBtdXJtdXJlZCwgc2F5aW5nLCBUaGF0IGhlIHdhcyBnb25lIHRvIGJlIGd1ZXN0IHdpdGggYSBtYW4gdGhhdCBpcyBhIHNpbm5lci4KQW5kIFphY2NoYWV1cyBzdG9vZCwgYW5kIHNhaWQgdW50byB0aGUgTG9yZDogQmVob2xkLCBMb3JkLCB0aGUgaGFsZiBvZiBteSBnb29kcyBJIGdpdmUgdG8gdGhlIHBvb3I7IGFuZCBpZiBJIGhhdmUgdGFrZW4gYW55IHRoaW5nIGZyb20gYW55IG1hbiBieSBmYWxzZSBhY2N1c2F0aW9uLCBJIHJlc3RvcmUgaGltIGZvdXJmb2xkLgpBbmQgSmVzdXMgc2FpZCB1bnRvIGhpbSwgVGhpcyBkYXkgaXMgc2FsdmF0aW9uIGNvbWUgdG8gdGhpcyBob3VzZSwgZm9yc29tdWNoIGFzIGhlIGFsc28gaXMgYSBzb24gb2YgQWJyYWhhbS4KRm9yIHRoZSBTb24gb2YgbWFuIGlzIGNvbWUgdG8gc2VlayBhbmQgdG8gc2F2ZSB0aGF0IHdoaWNoIHdhcyBsb3N0LgpBbmQgYXMgdGhleSBoZWFyZCB0aGVzZSB0aGluZ3MsIGhlIGFkZGVkIGFuZCBzcGFrZSBhIHBhcmFibGUsIGJlY2F1c2UgaGUgd2FzIG5pZ2ggdG8gSmVydXNhbGVtLCBhbmQgYmVjYXVzZSB0aGV5IHRob3VnaHQgdGhhdCB0aGUga2luZ2RvbSBvZiBHb2Qgc2hvdWxkIGltbWVkaWF0ZWx5IGFwcGVhci4KSGUgc2FpZCB0aGVyZWZvcmUsIEEgY2VydGFpbiBub2JsZW1hbiB3ZW50IGludG8gYSBmYXIgY291bnRyeSB0byByZWNlaXZlIGZvciBoaW1zZWxmIGEga2luZ2RvbSwgYW5kIHRvIHJldHVybi4KQW5kIGhlIGNhbGxlZCBoaXMgdGVuIHNlcnZhbnRzLCBhbmQgZGVsaXZlcmVkIHRoZW0gdGVuIHBvdW5kcywgYW5kIHNhaWQgdW50byB0aGVtLCBPY2N1cHkgdGlsbCBJIGNvbWUuCkJ1dCBoaXMgY2l0aXplbnMgaGF0ZWQgaGltLCBhbmQgc2VudCBhIG1lc3NhZ2UgYWZ0ZXIgaGltLCBzYXlpbmcsIFdlIHdpbGwgbm90IGhhdmUgdGhpcyBtYW4gdG8gcmVpZ24gb3ZlciB1cy4KQW5kIGl0IGNhbWUgdG8gcGFzcywgdGhhdCB3aGVuIGhlIHdhcyByZXR1cm5lZCwgaGF2aW5nIHJlY2VpdmVkIHRoZSBraW5nZG9tLCB0aGVuIGhlIGNvbW1hbmRlZCB0aGVzZSBzZXJ2YW50cyB0byBiZSBjYWxsZWQgdW50byBoaW0sIHRvIHdob20gaGUgaGFkIGdpdmVuIHRoZSBtb25leSwgdGhhdCBoZSBtaWdodCBrbm93IGhvdyBtdWNoIGV2ZXJ5IG1hbiBoYWQgZ2FpbmVkIGJ5IHRyYWRpbmcuClRoZW4gY2FtZSB0aGUgZmlyc3QsIHNheWluZywgTG9yZCwgdGh5IHBvdW5kIGhhdGggZ2FpbmVkIHRlbiBwb3VuZHMuCkFuZCBoZSBzYWlkIHVudG8gaGltLCBXZWxsLCB0aG91IGdvb2Qgc2VydmFudDogYmVjYXVzZSB0aG91IGhhc3QgYmVlbiBmYWl0aGZ1bCBpbiBhIHZlcnkgbGl0dGxlLCBoYXZlIHRob3UgYXV0aG9yaXR5IG92ZXIgdGVuIGNpdGllcy4KQW5kIHRoZSBzZWNvbmQgY2FtZSwgc2F5aW5nLCBMb3JkLCB0aHkgcG91bmQgaGF0aCBnYWluZWQgZml2ZSBwb3VuZHMuCkFuZCBoZSBzYWlkIGxpa2V3aXNlIHRvIGhpbSwgQmUgdGhvdSBhbHNvIG92ZXIgZml2ZSBjaXRpZXMuCkFuZCBhbm90aGVyIGNhbWUsIHNheWluZywgTG9yZCwgYmVob2xkLCBoZXJlIGlzIHRoeSBwb3VuZCwgd2hpY2ggSSBoYXZlIGtlcHQgbGFpZCB1cCBpbiBhIG5hcGtpbjoKRm9yIEkgZmVhcmVkIHRoZWUsIGJlY2F1c2UgdGhvdSBhcnQgYW4gYXVzdGVyZSBtYW46IHRob3UgdGFrZXN0IHVwIHRoYXQgdGhvdSBsYXllZHN0IG5vdCBkb3duLCBhbmQgcmVhcGVzdCB0aGF0IHRob3UgZGlkc3Qgbm90IHNvdy4KQW5kIGhlIHNhaXRoIHVudG8gaGltLCBPdXQgb2YgdGhpbmUgb3duIG1vdXRoIHdpbGwgSSBqdWRnZSB0aGVlLCB0aG91IHdpY2tlZCBzZXJ2YW50LiBUaG91IGtuZXdlc3QgdGhhdCBJIHdhcyBhbiBhdXN0ZXJlIG1hbiwgdGFraW5nIHVwIHRoYXQgSSBsYWlkIG5vdCBkb3duLCBhbmQgcmVhcGluZyB0aGF0IEkgZGlkIG5vdCBzb3c6CldoZXJlZm9yZSB0aGVuIGdhdmVzdCBub3QgdGhvdSBteSBtb25leSBpbnRvIHRoZSBiYW5rLCB0aGF0IGF0IG15IGNvbWluZyBJIG1pZ2h0IGhhdmUgcmVxdWlyZWQgbWluZSBvd24gd2l0aCB1c3VyeT8KQW5kIGhlIHNhaWQgdW50byB0aGVtIHRoYXQgc3Rvb2QgYnksIFRha2UgZnJvbSBoaW0gdGhlIHBvdW5kLCBhbmQgZ2l2ZSBpdCB0byBoaW0gdGhhdCBoYXRoIHRlbiBwb3VuZHMuCihBbmQgdGhleSBzYWlkIHVudG8gaGltLCBMb3JkLCBoZSBoYXRoIHRlbiBwb3VuZHMuKQpGb3IgSSBzYXkgdW50byB5b3UsIFRoYXQgdW50byBldmVyeSBvbmUgd2hpY2ggaGF0aCBzaGFsbCBiZSBnaXZlbjsgYW5kIGZyb20gaGltIHRoYXQgaGF0aCBub3QsIGV2ZW4gdGhhdCBoZSBoYXRoIHNoYWxsIGJlIHRha2VuIGF3YXkgZnJvbSBoaW0uCkJ1dCB0aG9zZSBtaW5lIGVuZW1pZXMsIHdoaWNoIHdvdWxkIG5vdCB0aGF0IEkgc2hvdWxkIHJlaWduIG92ZXIgdGhlbSwgYnJpbmcgaGl0aGVyLCBhbmQgc2xheSB0aGVtIGJlZm9yZSBtZS4KQW5kIHdoZW4gaGUgaGFkIHRodXMgc3Bva2VuLCBoZSB3ZW50IGJlZm9yZSwgYXNjZW5kaW5nIHVwIHRvIEplcnVzYWxlbS4KQW5kIGl0IGNhbWUgdG8gcGFzcywgd2hlbiBoZSB3YXMgY29tZSBuaWdoIHRvIEJldGhwaGFnZSBhbmQgQmV0aGFueSwgYXQgdGhlIG1vdW50IGNhbGxlZCB0aGUgbW91bnQgb2YgT2xpdmVzLCBoZSBzZW50IHR3byBvZiBoaXMgZGlzY2lwbGVzLApTYXlpbmcsIEdvIHllIGludG8gdGhlIHZpbGxhZ2Ugb3ZlciBhZ2FpbnN0IHlvdTsgaW4gdGhlIHdoaWNoIGF0IHlvdXIgZW50ZXJpbmcgeWUgc2hhbGwgZmluZCBhIGNvbHQgdGllZCwgd2hlcmVvbiB5ZXQgbmV2ZXIgbWFuIHNhdDogbG9vc2UgaGltLCBhbmQgYnJpbmcgaGltIGhpdGhlci4KQW5kIGlmIGFueSBtYW4gYXNrIHlvdSwgV2h5IGRvIHllIGxvb3NlIGhpbT8gdGh1cyBzaGFsbCB5ZSBzYXkgdW50byBoaW0sIEJlY2F1c2UgdGhlIExvcmQgaGF0aCBuZWVkIG9mIGhpbS4KQW5kIHRoZXkgdGhhdCB3ZXJlIHNlbnQgd2VudCB0aGVpciB3YXksIGFuZCBmb3VuZCBldmVuIGFzIGhlIGhhZCBzYWlkIHVudG8gdGhlbS4KQW5kIGFzIHRoZXkgd2VyZSBsb29zaW5nIHRoZSBjb2x0LCB0aGUgb3duZXJzIHRoZXJlb2Ygc2FpZCB1bnRvIHRoZW0sIFdoeSBsb29zZSB5ZSB0aGUgY29sdD8KQW5kIHRoZXkgc2FpZCwgVGhlIExvcmQgaGF0aCBuZWVkIG9mIGhpbS4KQW5kIHRoZXkgYnJvdWdodCBoaW0gdG8gSmVzdXM6IGFuZCB0aGV5IGNhc3QgdGhlaXIgZ2FybWVudHMgdXBvbiB0aGUgY29sdCwgYW5kIHRoZXkgc2V0IEplc3VzIHRoZXJlb24uCkFuZCBhcyBoZSB3ZW50LCB0aGV5IHNwcmVhZCB0aGVpciBjbG90aGVzIGluIHRoZSB3YXkuCkFuZCB3aGVuIGhlIHdhcyBjb21lIG5pZ2gsIGV2ZW4gbm93IGF0IHRoZSBkZXNjZW50IG9mIHRoZSBtb3VudCBvZiBPbGl2ZXMsIHRoZSB3aG9sZSBtdWx0aXR1ZGUgb2YgdGhlIGRpc2NpcGxlcyBiZWdhbiB0byByZWpvaWNlIGFuZCBwcmFpc2UgR29kIHdpdGggYSBsb3VkIHZvaWNlIGZvciBhbGwgdGhlIG1pZ2h0eSB3b3JrcyB0aGF0IHRoZXkgaGFkIHNlZW47ClNheWluZywgQmxlc3NlZCBiZSB0aGUgS2luZyB0aGF0IGNvbWV0aCBpbiB0aGUgbmFtZSBvZiB0aGUgTG9yZDogcGVhY2UgaW4gaGVhdmVuLCBhbmQgZ2xvcnkgaW4gdGhlIGhpZ2hlc3QuCkFuZCBzb21lIG9mIHRoZSBQaGFyaXNlZXMgZnJvbSBhbW9uZyB0aGUgbXVsdGl0dWRlIHNhaWQgdW50byBoaW0sIE1hc3RlciwgcmVidWtlIHRoeSBkaXNjaXBsZXMuCkFuZCBoZSBhbnN3ZXJlZCBhbmQgc2FpZCB1bnRvIHRoZW0sIEkgdGVsbCB5b3UgdGhhdCwgaWYgdGhlc2Ugc2hvdWxkIGhvbGQgdGhlaXIgcGVhY2UsIHRoZSBzdG9uZXMgd291bGQgaW1tZWRpYXRlbHkgY3J5IG91dC4KQW5kIHdoZW4gaGUgd2FzIGNvbWUgbmVhciwgaGUgYmVoZWxkIHRoZSBjaXR5LCBhbmQgd2VwdCBvdmVyIGl0LApTYXlpbmcsIElmIHRob3UgaGFkc3Qga25vd24sIGV2ZW4gdGhvdSwgYXQgbGVhc3QgaW4gdGhpcyB0aHkgZGF5LCB0aGUgdGhpbmdzIHdoaWNoIGJlbG9uZyB1bnRvIHRoeSBwZWFjZSEgYnV0IG5vdyB0aGV5IGFyZSBoaWQgZnJvbSB0aGluZSBleWVzLgpGb3IgdGhlIGRheXMgc2hhbGwgY29tZSB1cG9uIHRoZWUsIHRoYXQgdGhpbmUgZW5lbWllcyBzaGFsbCBjYXN0IGEgdHJlbmNoIGFib3V0IHRoZWUsIGFuZCBjb21wYXNzIHRoZWUgcm91bmQsIGFuZCBrZWVwIHRoZWUgaW4gb24gZXZlcnkgc2lkZSwKQW5kIHNoYWxsIGxheSB0aGVlIGV2ZW4gd2l0aCB0aGUgZ3JvdW5kLCBhbmQgdGh5IGNoaWxkcmVuIHdpdGhpbiB0aGVlOyBhbmQgdGhleSBzaGFsbCBub3QgbGVhdmUgaW4gdGhlZSBvbmUgc3RvbmUgdXBvbiBhbm90aGVyOyBiZWNhdXNlIHRob3Uga25ld2VzdCBub3QgdGhlIHRpbWUgb2YgdGh5IHZpc2l0YXRpb24uCkFuZCBoZSB3ZW50IGludG8gdGhlIHRlbXBsZSwgYW5kIGJlZ2FuIHRvIGNhc3Qgb3V0IHRoZW0gdGhhdCBzb2xkIHRoZXJlaW4sIGFuZCB0aGVtIHRoYXQgYm91Z2h0OwpTYXlpbmcgdW50byB0aGVtLCBJdCBpcyB3cml0dGVuLCBNeSBob3VzZSBpcyB0aGUgaG91c2Ugb2YgcHJheWVyOiBidXQgeWUgaGF2ZSBtYWRlIGl0IGEgZGVuIG9mIHRoaWV2ZXMuCkFuZCBoZSB0YXVnaHQgZGFpbHkgaW4gdGhlIHRlbXBsZS4gQnV0IHRoZSBjaGllZiBwcmllc3RzIGFuZCB0aGUgc2NyaWJlcyBhbmQgdGhlIGNoaWVmIG9mIHRoZSBwZW9wbGUgc291Z2h0IHRvIGRlc3Ryb3kgaGltLApBbmQgY291bGQgbm90IGZpbmQgd2hhdCB0aGV5IG1pZ2h0IGRvOiBmb3IgYWxsIHRoZSBwZW9wbGUgd2VyZSB2ZXJ5IGF0dGVudGl2ZSB0byBoZWFyIGhpbS4KQW5kIGl0IGNhbWUgdG8gcGFzcywgdGhhdCBvbiBvbmUgb2YgdGhvc2UgZGF5cywgYXMgaGUgdGF1Z2h0IHRoZSBwZW9wbGUgaW4gdGhlIHRlbXBsZSwgYW5kIHByZWFjaGVkIHRoZSBnb3NwZWwsIHRoZSBjaGllZiBwcmllc3RzIGFuZCB0aGUgc2NyaWJlcyBjYW1lIHVwb24gaGltIHdpdGggdGhlIGVsZGVycywKQW5kIHNwYWtlIHVudG8gaGltLCBzYXlpbmcsIFRlbGwgdXMsIGJ5IHdoYXQgYXV0aG9yaXR5IGRvZXN0IHRob3UgdGhlc2UgdGhpbmdzPyBvciB3aG8gaXMgaGUgdGhhdCBnYXZlIHRoZWUgdGhpcyBhdXRob3JpdHk/CkFuZCBoZSBhbnN3ZXJlZCBhbmQgc2FpZCB1bnRvIHRoZW0sIEkgd2lsbCBhbHNvIGFzayB5b3Ugb25lIHRoaW5nOyBhbmQgYW5zd2VyIG1lOgpUaGUgYmFwdGlzbSBvZiBKb2huLCB3YXMgaXQgZnJvbSBoZWF2ZW4sIG9yIG9mIG1lbj8KQW5kIHRoZXkgcmVhc29uZWQgd2l0aCB0aGVtc2VsdmVzLCBzYXlpbmcsIElmIHdlIHNoYWxsIHNheSwgRnJvbSBoZWF2ZW47IGhlIHdpbGwgc2F5LCBXaHkgdGhlbiBiZWxpZXZlZCB5ZSBoaW0gbm90PwpCdXQgYW5kIGlmIHdlIHNheSwgT2YgbWVuOyBhbGwgdGhlIHBlb3BsZSB3aWxsIHN0b25lIHVzOiBmb3IgdGhleSBiZSBwZXJzdWFkZWQgdGhhdCBKb2huIHdhcyBhIHByb3BoZXQuCkFuZCB0aGV5IGFuc3dlcmVkLCB0aGF0IHRoZXkgY291bGQgbm90IHRlbGwgd2hlbmNlIGl0IHdhcy4KQW5kIEplc3VzIHNhaWQgdW50byB0aGVtLCBOZWl0aGVyIHRlbGwgSSB5b3UgYnkgd2hhdCBhdXRob3JpdHkgSSBkbyB0aGVzZSB0aGluZ3MuClRoZW4gYmVnYW4gaGUgdG8gc3BlYWsgdG8gdGhlIHBlb3BsZSB0aGlzIHBhcmFibGU7IEEgY2VydGFpbiBtYW4gcGxhbnRlZCBhIHZpbmV5YXJkLCBhbmQgbGV0IGl0IGZvcnRoIHRvIGh1c2JhbmRtZW4sIGFuZCB3ZW50IGludG8gYSBmYXIgY291bnRyeSBmb3IgYSBsb25nIHRpbWUuCkFuZCBhdCB0aGUgc2Vhc29uIGhlIHNlbnQgYSBzZXJ2YW50IHRvIHRoZSBodXNiYW5kbWVuLCB0aGF0IHRoZXkgc2hvdWxkIGdpdmUgaGltIG9mIHRoZSBmcnVpdCBvZiB0aGUgdmluZXlhcmQ6IGJ1dCB0aGUgaHVzYmFuZG1lbiBiZWF0IGhpbSwgYW5kIHNlbnQgaGltIGF3YXkgZW1wdHkuCkFuZCBhZ2FpbiBoZSBzZW50IGFub3RoZXIgc2VydmFudDogYW5kIHRoZXkgYmVhdCBoaW0gYWxzbywgYW5kIGVudHJlYXRlZCBoaW0gc2hhbWVmdWxseSwgYW5kIHNlbnQgaGltIGF3YXkgZW1wdHkuCkFuZCBhZ2FpbiBoZSBzZW50IGEgdGhpcmQ6IGFuZCB0aGV5IHdvdW5kZWQgaGltIGFsc28sIGFuZCBjYXN0IGhpbSBvdXQuClRoZW4gc2FpZCB0aGUgbG9yZCBvZiB0aGUgdmluZXlhcmQsIFdoYXQgc2hhbGwgSSBkbz8gSSB3aWxsIHNlbmQgbXkgYmVsb3ZlZCBzb246IGl0IG1heSBiZSB0aGV5IHdpbGwgcmV2ZXJlbmNlIGhpbSB3aGVuIHRoZXkgc2VlIGhpbS4KQnV0IHdoZW4gdGhlIGh1c2JhbmRtZW4gc2F3IGhpbSwgdGhleSByZWFzb25lZCBhbW9uZyB0aGVtc2VsdmVzLCBzYXlpbmcsIFRoaXMgaXMgdGhlIGhlaXI6IGNvbWUsIGxldCB1cyBraWxsIGhpbSwgdGhhdCB0aGUgaW5oZXJpdGFuY2UgbWF5IGJlIG91cnMuClNvIHRoZXkgY2FzdCBoaW0gb3V0IG9mIHRoZSB2aW5leWFyZCwgYW5kIGtpbGxlZCBoaW0uIFdoYXQgdGhlcmVmb3JlIHNoYWxsIHRoZSBsb3JkIG9mIHRoZSB2aW5leWFyZCBkbyB1bnRvIHRoZW0/CkhlIHNoYWxsIGNvbWUgYW5kIGRlc3Ryb3kgdGhlc2UgaHVzYmFuZG1lbiwgYW5kIHNoYWxsIGdpdmUgdGhlIHZpbmV5YXJkIHRvIG90aGVycy4gQW5kIHdoZW4gdGhleSBoZWFyZCBpdCwgdGhleSBzYWlkLCBHb2QgZm9yYmlkLgpBbmQgaGUgYmVoZWxkIHRoZW0sIGFuZCBzYWlkLCBXaGF0IGlzIHRoaXMgdGhlbiB0aGF0IGlzIHdyaXR0ZW4sIFRoZSBzdG9uZSB3aGljaCB0aGUgYnVpbGRlcnMgcmVqZWN0ZWQsIHRoZSBzYW1lIGlzIGJlY29tZSB0aGUgaGVhZCBvZiB0aGUgY29ybmVyPwpXaG9zb2V2ZXIgc2hhbGwgZmFsbCB1cG9uIHRoYXQgc3RvbmUgc2hhbGwgYmUgYnJva2VuOyBidXQgb24gd2hvbXNvZXZlciBpdCBzaGFsbCBmYWxsLCBpdCB3aWxsIGdyaW5kIGhpbSB0byBwb3dkZXIuCkFuZCB0aGUgY2hpZWYgcHJpZXN0cyBhbmQgdGhlIHNjcmliZXMgdGhlIHNhbWUgaG91ciBzb3VnaHQgdG8gbGF5IGhhbmRzIG9uIGhpbTsgYW5kIHRoZXkgZmVhcmVkIHRoZSBwZW9wbGU6IGZvciB0aGV5IHBlcmNlaXZlZCB0aGF0IGhlIGhhZCBzcG9rZW4gdGhpcyBwYXJhYmxlIGFnYWluc3QgdGhlbS4KQW5kIHRoZXkgd2F0Y2hlZCBoaW0sIGFuZCBzZW50IGZvcnRoIHNwaWVzLCB3aGljaCBzaG91bGQgZmVpZ24gdGhlbXNlbHZlcyBqdXN0IG1lbiwgdGhhdCB0aGV5IG1pZ2h0IHRha2UgaG9sZCBvZiBoaXMgd29yZHMsIHRoYXQgc28gdGhleSBtaWdodCBkZWxpdmVyIGhpbSB1bnRvIHRoZSBwb3dlciBhbmQgYXV0aG9yaXR5IG9mIHRoZSBnb3Zlcm5vci4KQW5kIHRoZXkgYXNrZWQgaGltLCBzYXlpbmcsIE1hc3Rlciwgd2Uga25vdyB0aGF0IHRob3Ugc2F5ZXN0IGFuZCB0ZWFjaGVzdCByaWdodGx5LCBuZWl0aGVyIGFjY2VwdGVzdCB0aG91IHRoZSBwZXJzb24gb2YgYW55LCBidXQgdGVhY2hlc3QgdGhlIHdheSBvZiBHb2QgdHJ1bHk6CklzIGl0IGxhd2Z1bCBmb3IgdXMgdG8gZ2l2ZSB0cmlidXRlIHVudG8gQ2Flc2FyLCBvciBubz8KQnV0IGhlIHBlcmNlaXZlZCB0aGVpciBjcmFmdGluZXNzLCBhbmQgc2FpZCB1bnRvIHRoZW0sIFdoeSB0ZW1wdCB5ZSBtZT8KU2hldyBtZSBhIHBlbm55LiBXaG9zZSBpbWFnZSBhbmQgc3VwZXJzY3JpcHRpb24gaGF0aCBpdD8gVGhleSBhbnN3ZXJlZCBhbmQgc2FpZCwgQ2Flc2FyJ3MuCkFuZCBoZSBzYWlkIHVudG8gdGhlbSwgUmVuZGVyIHRoZXJlZm9yZSB1bnRvIENhZXNhciB0aGUgdGhpbmdzIHdoaWNoIGJlIENhZXNhcidzLCBhbmQgdW50byBHb2QgdGhlIHRoaW5ncyB3aGljaCBiZSBHb2Qncy4KQW5kIHRoZXkgY291bGQgbm90IHRha2UgaG9sZCBvZiBoaXMgd29yZHMgYmVmb3JlIHRoZSBwZW9wbGU6IGFuZCB0aGV5IG1hcnZlbGxlZCBhdCBoaXMgYW5zd2VyLCBhbmQgaGVsZCB0aGVpciBwZWFjZS4KVGhlbiBjYW1lIHRvIGhpbSBjZXJ0YWluIG9mIHRoZSBTYWRkdWNlZXMsIHdoaWNoIGRlbnkgdGhhdCB0aGVyZSBpcyBhbnkgcmVzdXJyZWN0aW9uOyBhbmQgdGhleSBhc2tlZCBoaW0sClNheWluZywgTWFzdGVyLCBNb3NlcyB3cm90ZSB1bnRvIHVzLCBJZiBhbnkgbWFuJ3MgYnJvdGhlciBkaWUsIGhhdmluZyBhIHdpZmUsIGFuZCBoZSBkaWUgd2l0aG91dCBjaGlsZHJlbiwgdGhhdCBoaXMgYnJvdGhlciBzaG91bGQgdGFrZSBoaXMgd2lmZSwgYW5kIHJhaXNlIHVwIHNlZWQgdW50byBoaXMgYnJvdGhlci4KVGhlcmUgd2VyZSB0aGVyZWZvcmUgc2V2ZW4gYnJldGhyZW46IGFuZCB0aGUgZmlyc3QgdG9vayBhIHdpZmUsIGFuZCBkaWVkIHdpdGhvdXQgY2hpbGRyZW4uCkFuZCB0aGUgc2Vjb25kIHRvb2sgaGVyIHRvIHdpZmUsIGFuZCBoZSBkaWVkIGNoaWxkbGVzcy4KQW5kIHRoZSB0aGlyZCB0b29rIGhlcjsgYW5kIGluIGxpa2UgbWFubmVyIHRoZSBzZXZlbiBhbHNvOiBhbmQgdGhleSBsZWZ0IG5vIGNoaWxkcmVuLCBhbmQgZGllZC4KTGFzdCBvZiBhbGwgdGhlIHdvbWFuIGRpZWQgYWxzby4KVGhlcmVmb3JlIGluIHRoZSByZXN1cnJlY3Rpb24gd2hvc2Ugd2lmZSBvZiB0aGVtIGlzIHNoZT8gZm9yIHNldmVuIGhhZCBoZXIgdG8gd2lmZS4KQW5kIEplc3VzIGFuc3dlcmluZyBzYWlkIHVudG8gdGhlbSwgVGhlIGNoaWxkcmVuIG9mIHRoaXMgd29ybGQgbWFycnksIGFuZCBhcmUgZ2l2ZW4gaW4gbWFycmlhZ2U6CkJ1dCB0aGV5IHdoaWNoIHNoYWxsIGJlIGFjY291bnRlZCB3b3J0aHkgdG8gb2J0YWluIHRoYXQgd29ybGQsIGFuZCB0aGUgcmVzdXJyZWN0aW9uIGZyb20gdGhlIGRlYWQsIG5laXRoZXIgbWFycnksIG5vciBhcmUgZ2l2ZW4gaW4gbWFycmlhZ2U6Ck5laXRoZXIgY2FuIHRoZXkgZGllIGFueSBtb3JlOiBmb3IgdGhleSBhcmUgZXF1YWwgdW50byB0aGUgYW5nZWxzOyBhbmQgYXJlIHRoZSBjaGlsZHJlbiBvZiBHb2QsIGJlaW5nIHRoZSBjaGlsZHJlbiBvZiB0aGUgcmVzdXJyZWN0aW9uLgpOb3cgdGhhdCB0aGUgZGVhZCBhcmUgcmFpc2VkLCBldmVuIE1vc2VzIHNoZXdlZCBhdCB0aGUgYnVzaCwgd2hlbiBoZSBjYWxsZXRoIHRoZSBMb3JkIHRoZSBHb2Qgb2YgQWJyYWhhbSwgYW5kIHRoZSBHb2Qgb2YgSXNhYWMsIGFuZCB0aGUgR29kIG9mIEphY29iLgpGb3IgaGUgaXMgbm90IGEgR29kIG9mIHRoZSBkZWFkLCBidXQgb2YgdGhlIGxpdmluZzogZm9yIGFsbCBsaXZlIHVudG8gaGltLgpUaGVuIGNlcnRhaW4gb2YgdGhlIHNjcmliZXMgYW5zd2VyaW5nIHNhaWQsIE1hc3RlciwgdGhvdSBoYXN0IHdlbGwgc2FpZC4KQW5kIGFmdGVyIHRoYXQgdGhleSBkdXJzdCBub3QgYXNrIGhpbSBhbnkgcXVlc3Rpb24gYXQgYWxsLgpBbmQgaGUgc2FpZCB1bnRvIHRoZW0sIEhvdyBzYXkgdGhleSB0aGF0IENocmlzdCBpcyBEYXZpZCdzIHNvbj8KQW5kIERhdmlkIGhpbXNlbGYgc2FpdGggaW4gdGhlIGJvb2sgb2YgUHNhbG1zLCBUaGUgTE9SRCBzYWlkIHVudG8gbXkgTG9yZCwgU2l0IHRob3Ugb24gbXkgcmlnaHQgaGFuZCwKVGlsbCBJIG1ha2UgdGhpbmUgZW5lbWllcyB0aHkgZm9vdHN0b29sLgpEYXZpZCB0aGVyZWZvcmUgY2FsbGV0aCBoaW0gTG9yZCwgaG93IGlzIGhlIHRoZW4gaGlzIHNvbj8KVGhlbiBpbiB0aGUgYXVkaWVuY2Ugb2YgYWxsIHRoZSBwZW9wbGUgaGUgc2FpZCB1bnRvIGhpcyBkaXNjaXBsZXMsCkJld2FyZSBvZiB0aGUgc2NyaWJlcywgd2hpY2ggZGVzaXJlIHRvIHdhbGsgaW4gbG9uZyByb2JlcywgYW5kIGxvdmUgZ3JlZXRpbmdzIGluIHRoZSBtYXJrZXRzLCBhbmQgdGhlIGhpZ2hlc3Qgc2VhdHMgaW4gdGhlIHN5bmFnb2d1ZXMsIGFuZCB0aGUgY2hpZWYgcm9vbXMgYXQgZmVhc3RzOwpXaGljaCBkZXZvdXIgd2lkb3dzJyBob3VzZXMsIGFuZCBmb3IgYSBzaGV3IG1ha2UgbG9uZyBwcmF5ZXJzOiB0aGUgc2FtZSBzaGFsbCByZWNlaXZlIGdyZWF0ZXIgZGFtbmF0aW9uLgpBbmQgaGUgbG9va2VkIHVwLCBhbmQgc2F3IHRoZSByaWNoIG1lbiBjYXN0aW5nIHRoZWlyIGdpZnRzIGludG8gdGhlIHRyZWFzdXJ5LgpBbmQgaGUgc2F3IGFsc28gYSBjZXJ0YWluIHBvb3Igd2lkb3cgY2FzdGluZyBpbiB0aGl0aGVyIHR3byBtaXRlcy4KQW5kIGhlIHNhaWQsIE9mIGEgdHJ1dGggSSBzYXkgdW50byB5b3UsIHRoYXQgdGhpcyBwb29yIHdpZG93IGhhdGggY2FzdCBpbiBtb3JlIHRoYW4gdGhleSBhbGw6CkZvciBhbGwgdGhlc2UgaGF2ZSBvZiB0aGVpciBhYnVuZGFuY2UgY2FzdCBpbiB1bnRvIHRoZSBvZmZlcmluZ3Mgb2YgR29kOiBidXQgc2hlIG9mIGhlciBwZW51cnkgaGF0aCBjYXN0IGluIGFsbCB0aGUgbGl2aW5nIHRoYXQgc2hlIGhhZC4KQW5kIGFzIHNvbWUgc3Bha2Ugb2YgdGhlIHRlbXBsZSwgaG93IGl0IHdhcyBhZG9ybmVkIHdpdGggZ29vZGx5IHN0b25lcyBhbmQgZ2lmdHMsIGhlIHNhaWQsCkFzIGZvciB0aGVzZSB0aGluZ3Mgd2hpY2ggeWUgYmVob2xkLCB0aGUgZGF5cyB3aWxsIGNvbWUsIGluIHRoZSB3aGljaCB0aGVyZSBzaGFsbCBub3QgYmUgbGVmdCBvbmUgc3RvbmUgdXBvbiBhbm90aGVyLCB0aGF0IHNoYWxsIG5vdCBiZSB0aHJvd24gZG93bi4KQW5kIHRoZXkgYXNrZWQgaGltLCBzYXlpbmcsIE1hc3RlciwgYnV0IHdoZW4gc2hhbGwgdGhlc2UgdGhpbmdzIGJlPyBhbmQgd2hhdCBzaWduIHdpbGwgdGhlcmUgYmUgd2hlbiB0aGVzZSB0aGluZ3Mgc2hhbGwgY29tZSB0byBwYXNzPwpBbmQgaGUgc2FpZCwgVGFrZSBoZWVkIHRoYXQgeWUgYmUgbm90IGRlY2VpdmVkOiBmb3IgbWFueSBzaGFsbCBjb21lIGluIG15IG5hbWUsIHNheWluZywgSSBhbSBDaHJpc3Q7IGFuZCB0aGUgdGltZSBkcmF3ZXRoIG5lYXI6IGdvIHllIG5vdCB0aGVyZWZvcmUgYWZ0ZXIgdGhlbS4KQnV0IHdoZW4geWUgc2hhbGwgaGVhciBvZiB3YXJzIGFuZCBjb21tb3Rpb25zLCBiZSBub3QgdGVycmlmaWVkOiBmb3IgdGhlc2UgdGhpbmdzIG11c3QgZmlyc3QgY29tZSB0byBwYXNzOyBidXQgdGhlIGVuZCBpcyBub3QgYnkgYW5kIGJ5LgpUaGVuIHNhaWQgaGUgdW50byB0aGVtLCBOYXRpb24gc2hhbGwgcmlzZSBhZ2FpbnN0IG5hdGlvbiwgYW5kIGtpbmdkb20gYWdhaW5zdCBraW5nZG9tOgpBbmQgZ3JlYXQgZWFydGhxdWFrZXMgc2hhbGwgYmUgaW4gZGl2ZXJzIHBsYWNlcywgYW5kIGZhbWluZXMsIGFuZCBwZXN0aWxlbmNlczsgYW5kIGZlYXJmdWwgc2lnaHRzIGFuZCBncmVhdCBzaWducyBzaGFsbCB0aGVyZSBiZSBmcm9tIGhlYXZlbi4KQnV0IGJlZm9yZSBhbGwgdGhlc2UsIHRoZXkgc2hhbGwgbGF5IHRoZWlyIGhhbmRzIG9uIHlvdSwgYW5kIHBlcnNlY3V0ZSB5b3UsIGRlbGl2ZXJpbmcgeW91IHVwIHRvIHRoZSBzeW5hZ29ndWVzLCBhbmQgaW50byBwcmlzb25zLCBiZWluZyBicm91Z2h0IGJlZm9yZSBraW5ncyBhbmQgcnVsZXJzIGZvciBteSBuYW1lJ3Mgc2FrZS4KQW5kIGl0IHNoYWxsIHR1cm4gdG8geW91IGZvciBhIHRlc3RpbW9ueS4KU2V0dGxlIGl0IHRoZXJlZm9yZSBpbiB5b3VyIGhlYXJ0cywgbm90IHRvIG1lZGl0YXRlIGJlZm9yZSB3aGF0IHllIHNoYWxsIGFuc3dlcjoKRm9yIEkgd2lsbCBnaXZlIHlvdSBhIG1vdXRoIGFuZCB3aXNkb20sIHdoaWNoIGFsbCB5b3VyIGFkdmVyc2FyaWVzIHNoYWxsIG5vdCBiZSBhYmxlIHRvIGdhaW5zYXkgbm9yIHJlc2lzdC4KQW5kIHllIHNoYWxsIGJlIGJldHJheWVkIGJvdGggYnkgcGFyZW50cywgYW5kIGJyZXRocmVuLCBhbmQga2luc2ZvbGtzLCBhbmQgZnJpZW5kczsgYW5kIHNvbWUgb2YgeW91IHNoYWxsIHRoZXkgY2F1c2UgdG8gYmUgcHV0IHRvIGRlYXRoLgpBbmQgeWUgc2hhbGwgYmUgaGF0ZWQgb2YgYWxsIG1lbiBmb3IgbXkgbmFtZSdzIHNha2UuCkJ1dCB0aGVyZSBzaGFsbCBub3QgYW4gaGFpciBvZiB5b3VyIGhlYWQgcGVyaXNoLgpJbiB5b3VyIHBhdGllbmNlIHBvc3Nlc3MgeWUgeW91ciBzb3Vscy4KQW5kIHdoZW4geWUgc2hhbGwgc2VlIEplcnVzYWxlbSBjb21wYXNzZWQgd2l0aCBhcm1pZXMsIHRoZW4ga25vdyB0aGF0IHRoZSBkZXNvbGF0aW9uIHRoZXJlb2YgaXMgbmlnaC4KVGhlbiBsZXQgdGhlbSB3aGljaCBhcmUgaW4gSnVkYWVhIGZsZWUgdG8gdGhlIG1vdW50YWluczsgYW5kIGxldCB0aGVtIHdoaWNoIGFyZSBpbiB0aGUgbWlkc3Qgb2YgaXQgZGVwYXJ0IG91dDsgYW5kIGxldCBub3QgdGhlbSB0aGF0IGFyZSBpbiB0aGUgY291bnRyaWVzIGVudGVyIHRoZXJlaW50by4KRm9yIHRoZXNlIGJlIHRoZSBkYXlzIG9mIHZlbmdlYW5jZSwgdGhhdCBhbGwgdGhpbmdzIHdoaWNoIGFyZSB3cml0dGVuIG1heSBiZSBmdWxmaWxsZWQuCkJ1dCB3b2UgdW50byB0aGVtIHRoYXQgYXJlIHdpdGggY2hpbGQsIGFuZCB0byB0aGVtIHRoYXQgZ2l2ZSBzdWNrLCBpbiB0aG9zZSBkYXlzISBmb3IgdGhlcmUgc2hhbGwgYmUgZ3JlYXQgZGlzdHJlc3MgaW4gdGhlIGxhbmQsIGFuZCB3cmF0aCB1cG9uIHRoaXMgcGVvcGxlLgpBbmQgdGhleSBzaGFsbCBmYWxsIGJ5IHRoZSBlZGdlIG9mIHRoZSBzd29yZCwgYW5kIHNoYWxsIGJlIGxlZCBhd2F5IGNhcHRpdmUgaW50byBhbGwgbmF0aW9uczogYW5kIEplcnVzYWxlbSBzaGFsbCBiZSB0cm9kZGVuIGRvd24gb2YgdGhlIEdlbnRpbGVzLCB1bnRpbCB0aGUgdGltZXMgb2YgdGhlIEdlbnRpbGVzIGJlIGZ1bGZpbGxlZC4KQW5kIHRoZXJlIHNoYWxsIGJlIHNpZ25zIGluIHRoZSBzdW4sIGFuZCBpbiB0aGUgbW9vbiwgYW5kIGluIHRoZSBzdGFyczsgYW5kIHVwb24gdGhlIGVhcnRoIGRpc3RyZXNzIG9mIG5hdGlvbnMsIHdpdGggcGVycGxleGl0eTsgdGhlIHNlYSBhbmQgdGhlIHdhdmVzIHJvYXJpbmc7Ck1lbidzIGhlYXJ0cyBmYWlsaW5nIHRoZW0gZm9yIGZlYXIsIGFuZCBmb3IgbG9va2luZyBhZnRlciB0aG9zZSB0aGluZ3Mgd2hpY2ggYXJlIGNvbWluZyBvbiB0aGUgZWFydGg6IGZvciB0aGUgcG93ZXJzIG9mIGhlYXZlbiBzaGFsbCBiZSBzaGFrZW4uCkFuZCB0aGVuIHNoYWxsIHRoZXkgc2VlIHRoZSBTb24gb2YgbWFuIGNvbWluZyBpbiBhIGNsb3VkIHdpdGggcG93ZXIgYW5kIGdyZWF0IGdsb3J5LgpBbmQgd2hlbiB0aGVzZSB0aGluZ3MgYmVnaW4gdG8gY29tZSB0byBwYXNzLCB0aGVuIGxvb2sgdXAsIGFuZCBsaWZ0IHVwIHlvdXIgaGVhZHM7IGZvciB5b3VyIHJlZGVtcHRpb24gZHJhd2V0aCBuaWdoLgpBbmQgaGUgc3Bha2UgdG8gdGhlbSBhIHBhcmFibGU7IEJlaG9sZCB0aGUgZmlnIHRyZWUsIGFuZCBhbGwgdGhlIHRyZWVzOwpXaGVuIHRoZXkgbm93IHNob290IGZvcnRoLCB5ZSBzZWUgYW5kIGtub3cgb2YgeW91ciBvd24gc2VsdmVzIHRoYXQgc3VtbWVyIGlzIG5vdyBuaWdoIGF0IGhhbmQuClNvIGxpa2V3aXNlIHllLCB3aGVuIHllIHNlZSB0aGVzZSB0aGluZ3MgY29tZSB0byBwYXNzLCBrbm93IHllIHRoYXQgdGhlIGtpbmdkb20gb2YgR29kIGlzIG5pZ2ggYXQgaGFuZC4KVmVyaWx5IEkgc2F5IHVudG8geW91LCBUaGlzIGdlbmVyYXRpb24gc2hhbGwgbm90IHBhc3MgYXdheSwgdGlsbCBhbGwgYmUgZnVsZmlsbGVkLgpIZWF2ZW4gYW5kIGVhcnRoIHNoYWxsIHBhc3MgYXdheTogYnV0IG15IHdvcmRzIHNoYWxsIG5vdCBwYXNzIGF3YXkuCkFuZCB0YWtlIGhlZWQgdG8geW91cnNlbHZlcywgbGVzdCBhdCBhbnkgdGltZSB5b3VyIGhlYXJ0cyBiZSBvdmVyY2hhcmdlZCB3aXRoIHN1cmZlaXRpbmcsIGFuZCBkcnVua2VubmVzcywgYW5kIGNhcmVzIG9mIHRoaXMgbGlmZSwgYW5kIHNvIHRoYXQgZGF5IGNvbWUgdXBvbiB5b3UgdW5hd2FyZXMuCkZvciBhcyBhIHNuYXJlIHNoYWxsIGl0IGNvbWUgb24gYWxsIHRoZW0gdGhhdCBkd2VsbCBvbiB0aGUgZmFjZSBvZiB0aGUgd2hvbGUgZWFydGguCldhdGNoIHllIHRoZXJlZm9yZSwgYW5kIHByYXkgYWx3YXlzLCB0aGF0IHllIG1heSBiZSBhY2NvdW50ZWQgd29ydGh5IHRvIGVzY2FwZSBhbGwgdGhlc2UgdGhpbmdzIHRoYXQgc2hhbGwgY29tZSB0byBwYXNzLCBhbmQgdG8gc3RhbmQgYmVmb3JlIHRoZSBTb24gb2YgbWFuLgpBbmQgaW4gdGhlIGRheSB0aW1lIGhlIHdhcyB0ZWFjaGluZyBpbiB0aGUgdGVtcGxlOyBhbmQgYXQgbmlnaHQgaGUgd2VudCBvdXQsIGFuZCBhYm9kZSBpbiB0aGUgbW91bnQgdGhhdCBpcyBjYWxsZWQgdGhlIG1vdW50IG9mIE9saXZlcy4KQW5kIGFsbCB0aGUgcGVvcGxlIGNhbWUgZWFybHkgaW4gdGhlIG1vcm5pbmcgdG8gaGltIGluIHRoZSB0ZW1wbGUsIGZvciB0byBoZWFyIGhpbS4KTm93IHRoZSBmZWFzdCBvZiB1bmxlYXZlbmVkIGJyZWFkIGRyZXcgbmlnaCwgd2hpY2ggaXMgY2FsbGVkIHRoZSBQYXNzb3Zlci4KQW5kIHRoZSBjaGllZiBwcmllc3RzIGFuZCBzY3JpYmVzIHNvdWdodCBob3cgdGhleSBtaWdodCBraWxsIGhpbTsgZm9yIHRoZXkgZmVhcmVkIHRoZSBwZW9wbGUuClRoZW4gZW50ZXJlZCBTYXRhbiBpbnRvIEp1ZGFzIHN1cm5hbWVkIElzY2FyaW90LCBiZWluZyBvZiB0aGUgbnVtYmVyIG9mIHRoZSB0d2VsdmUuCkFuZCBoZSB3ZW50IGhpcyB3YXksIGFuZCBjb21tdW5lZCB3aXRoIHRoZSBjaGllZiBwcmllc3RzIGFuZCBjYXB0YWlucywgaG93IGhlIG1pZ2h0IGJldHJheSBoaW0gdW50byB0aGVtLgpBbmQgdGhleSB3ZXJlIGdsYWQsIGFuZCBjb3ZlbmFudGVkIHRvIGdpdmUgaGltIG1vbmV5LgpBbmQgaGUgcHJvbWlzZWQsIGFuZCBzb3VnaHQgb3Bwb3J0dW5pdHkgdG8gYmV0cmF5IGhpbSB1bnRvIHRoZW0gaW4gdGhlIGFic2VuY2Ugb2YgdGhlIG11bHRpdHVkZS4KVGhlbiBjYW1lIHRoZSBkYXkgb2YgdW5sZWF2ZW5lZCBicmVhZCwgd2hlbiB0aGUgcGFzc292ZXIgbXVzdCBiZSBraWxsZWQuCkFuZCBoZSBzZW50IFBldGVyIGFuZCBKb2huLCBzYXlpbmcsIEdvIGFuZCBwcmVwYXJlIHVzIHRoZSBwYXNzb3ZlciwgdGhhdCB3ZSBtYXkgZWF0LgpBbmQgdGhleSBzYWlkIHVudG8gaGltLCBXaGVyZSB3aWx0IHRob3UgdGhhdCB3ZSBwcmVwYXJlPwpBbmQgaGUgc2FpZCB1bnRvIHRoZW0sIEJlaG9sZCwgd2hlbiB5ZSBhcmUgZW50ZXJlZCBpbnRvIHRoZSBjaXR5LCB0aGVyZSBzaGFsbCBhIG1hbiBtZWV0IHlvdSwgYmVhcmluZyBhIHBpdGNoZXIgb2Ygd2F0ZXI7IGZvbGxvdyBoaW0gaW50byB0aGUgaG91c2Ugd2hlcmUgaGUgZW50ZXJldGggaW4uCkFuZCB5ZSBzaGFsbCBzYXkgdW50byB0aGUgZ29vZG1hbiBvZiB0aGUgaG91c2UsIFRoZSBNYXN0ZXIgc2FpdGggdW50byB0aGVlLCBXaGVyZSBpcyB0aGUgZ3Vlc3RjaGFtYmVyLCB3aGVyZSBJIHNoYWxsIGVhdCB0aGUgcGFzc292ZXIgd2l0aCBteSBkaXNjaXBsZXM/CkFuZCBoZSBzaGFsbCBzaGV3IHlvdSBhIGxhcmdlIHVwcGVyIHJvb20gZnVybmlzaGVkOiB0aGVyZSBtYWtlIHJlYWR5LgpBbmQgdGhleSB3ZW50LCBhbmQgZm91bmQgYXMgaGUgaGFkIHNhaWQgdW50byB0aGVtOiBhbmQgdGhleSBtYWRlIHJlYWR5IHRoZSBwYXNzb3Zlci4KQW5kIHdoZW4gdGhlIGhvdXIgd2FzIGNvbWUsIGhlIHNhdCBkb3duLCBhbmQgdGhlIHR3ZWx2ZSBhcG9zdGxlcyB3aXRoIGhpbS4KQW5kIGhlIHNhaWQgdW50byB0aGVtLCBXaXRoIGRlc2lyZSBJIGhhdmUgZGVzaXJlZCB0byBlYXQgdGhpcyBwYXNzb3ZlciB3aXRoIHlvdSBiZWZvcmUgSSBzdWZmZXI6CkZvciBJIHNheSB1bnRvIHlvdSwgSSB3aWxsIG5vdCBhbnkgbW9yZSBlYXQgdGhlcmVvZiwgdW50aWwgaXQgYmUgZnVsZmlsbGVkIGluIHRoZSBraW5nZG9tIG9mIEdvZC4KQW5kIGhlIHRvb2sgdGhlIGN1cCwgYW5kIGdhdmUgdGhhbmtzLCBhbmQgc2FpZCwgVGFrZSB0aGlzLCBhbmQgZGl2aWRlIGl0IGFtb25nIHlvdXJzZWx2ZXM6CkZvciBJIHNheSB1bnRvIHlvdSwgSSB3aWxsIG5vdCBkcmluayBvZiB0aGUgZnJ1aXQgb2YgdGhlIHZpbmUsIHVudGlsIHRoZSBraW5nZG9tIG9mIEdvZCBzaGFsbCBjb21lLgpBbmQgaGUgdG9vayBicmVhZCwgYW5kIGdhdmUgdGhhbmtzLCBhbmQgYnJha2UgaXQsIGFuZCBnYXZlIHVudG8gdGhlbSwgc2F5aW5nLCBUaGlzIGlzIG15IGJvZHkgd2hpY2ggaXMgZ2l2ZW4gZm9yIHlvdTogdGhpcyBkbyBpbiByZW1lbWJyYW5jZSBvZiBtZS4KTGlrZXdpc2UgYWxzbyB0aGUgY3VwIGFmdGVyIHN1cHBlciwgc2F5aW5nLCBUaGlzIGN1cCBpcyB0aGUgbmV3IHRlc3RhbWVudCBpbiBteSBibG9vZCwgd2hpY2ggaXMgc2hlZCBmb3IgeW91LgpCdXQsIGJlaG9sZCwgdGhlIGhhbmQgb2YgaGltIHRoYXQgYmV0cmF5ZXRoIG1lIGlzIHdpdGggbWUgb24gdGhlIHRhYmxlLgpBbmQgdHJ1bHkgdGhlIFNvbiBvZiBtYW4gZ29ldGgsIGFzIGl0IHdhcyBkZXRlcm1pbmVkOiBidXQgd29lIHVudG8gdGhhdCBtYW4gYnkgd2hvbSBoZSBpcyBiZXRyYXllZCEKQW5kIHRoZXkgYmVnYW4gdG8gZW5xdWlyZSBhbW9uZyB0aGVtc2VsdmVzLCB3aGljaCBvZiB0aGVtIGl0IHdhcyB0aGF0IHNob3VsZCBkbyB0aGlzIHRoaW5nLgpBbmQgdGhlcmUgd2FzIGFsc28gYSBzdHJpZmUgYW1vbmcgdGhlbSwgd2hpY2ggb2YgdGhlbSBzaG91bGQgYmUgYWNjb3VudGVkIHRoZSBncmVhdGVzdC4KQW5kIGhlIHNhaWQgdW50byB0aGVtLCBUaGUga2luZ3Mgb2YgdGhlIEdlbnRpbGVzIGV4ZXJjaXNlIGxvcmRzaGlwIG92ZXIgdGhlbTsgYW5kIHRoZXkgdGhhdCBleGVyY2lzZSBhdXRob3JpdHkgdXBvbiB0aGVtIGFyZSBjYWxsZWQgYmVuZWZhY3RvcnMuCkJ1dCB5ZSBzaGFsbCBub3QgYmUgc286IGJ1dCBoZSB0aGF0IGlzIGdyZWF0ZXN0IGFtb25nIHlvdSwgbGV0IGhpbSBiZSBhcyB0aGUgeW91bmdlcjsgYW5kIGhlIHRoYXQgaXMgY2hpZWYsIGFzIGhlIHRoYXQgZG90aCBzZXJ2ZS4KRm9yIHdoZXRoZXIgaXMgZ3JlYXRlciwgaGUgdGhhdCBzaXR0ZXRoIGF0IG1lYXQsIG9yIGhlIHRoYXQgc2VydmV0aD8gaXMgbm90IGhlIHRoYXQgc2l0dGV0aCBhdCBtZWF0PyBidXQgSSBhbSBhbW9uZyB5b3UgYXMgaGUgdGhhdCBzZXJ2ZXRoLgpZZSBhcmUgdGhleSB3aGljaCBoYXZlIGNvbnRpbnVlZCB3aXRoIG1lIGluIG15IHRlbXB0YXRpb25zLgpBbmQgSSBhcHBvaW50IHVudG8geW91IGEga2luZ2RvbSwgYXMgbXkgRmF0aGVyIGhhdGggYXBwb2ludGVkIHVudG8gbWU7ClRoYXQgeWUgbWF5IGVhdCBhbmQgZHJpbmsgYXQgbXkgdGFibGUgaW4gbXkga2luZ2RvbSwgYW5kIHNpdCBvbiB0aHJvbmVzIGp1ZGdpbmcgdGhlIHR3ZWx2ZSB0cmliZXMgb2YgSXNyYWVsLgpBbmQgdGhlIExvcmQgc2FpZCwgU2ltb24sIFNpbW9uLCBiZWhvbGQsIFNhdGFuIGhhdGggZGVzaXJlZCB0byBoYXZlIHlvdSwgdGhhdCBoZSBtYXkgc2lmdCB5b3UgYXMgd2hlYXQ6CkJ1dCBJIGhhdmUgcHJheWVkIGZvciB0aGVlLCB0aGF0IHRoeSBmYWl0aCBmYWlsIG5vdDogYW5kIHdoZW4gdGhvdSBhcnQgY29udmVydGVkLCBzdHJlbmd0aGVuIHRoeSBicmV0aHJlbi4KQW5kIGhlIHNhaWQgdW50byBoaW0sIExvcmQsIEkgYW0gcmVhZHkgdG8gZ28gd2l0aCB0aGVlLCBib3RoIGludG8gcHJpc29uLCBhbmQgdG8gZGVhdGguCkFuZCBoZSBzYWlkLCBJIHRlbGwgdGhlZSwgUGV0ZXIsIHRoZSBjb2NrIHNoYWxsIG5vdCBjcm93IHRoaXMgZGF5LCBiZWZvcmUgdGhhdCB0aG91IHNoYWx0IHRocmljZSBkZW55IHRoYXQgdGhvdSBrbm93ZXN0IG1lLgpBbmQgaGUgc2FpZCB1bnRvIHRoZW0sIFdoZW4gSSBzZW50IHlvdSB3aXRob3V0IHB1cnNlLCBhbmQgc2NyaXAsIGFuZCBzaG9lcywgbGFja2VkIHllIGFueSB0aGluZz8gQW5kIHRoZXkgc2FpZCwgTm90aGluZy4KVGhlbiBzYWlkIGhlIHVudG8gdGhlbSwgQnV0IG5vdywgaGUgdGhhdCBoYXRoIGEgcHVyc2UsIGxldCBoaW0gdGFrZSBpdCwgYW5kIGxpa2V3aXNlIGhpcyBzY3JpcDogYW5kIGhlIHRoYXQgaGF0aCBubyBzd29yZCwgbGV0IGhpbSBzZWxsIGhpcyBnYXJtZW50LCBhbmQgYnV5IG9uZS4KRm9yIEkgc2F5IHVudG8geW91LCB0aGF0IHRoaXMgdGhhdCBpcyB3cml0dGVuIG11c3QgeWV0IGJlIGFjY29tcGxpc2hlZCBpbiBtZSwgQW5kIGhlIHdhcyByZWNrb25lZCBhbW9uZyB0aGUgdHJhbnNncmVzc29yczogZm9yIHRoZSB0aGluZ3MgY29uY2VybmluZyBtZSBoYXZlIGFuIGVuZC4KQW5kIHRoZXkgc2FpZCwgTG9yZCwgYmVob2xkLCBoZXJlIGFyZSB0d28gc3dvcmRzLiBBbmQgaGUgc2FpZCB1bnRvIHRoZW0sIEl0IGlzIGVub3VnaC4KQW5kIGhlIGNhbWUgb3V0LCBhbmQgd2VudCwgYXMgaGUgd2FzIHdvbnQsIHRvIHRoZSBtb3VudCBvZiBPbGl2ZXM7IGFuZCBoaXMgZGlzY2lwbGVzIGFsc28gZm9sbG93ZWQgaGltLgpBbmQgd2hlbiBoZSB3YXMgYXQgdGhlIHBsYWNlLCBoZSBzYWlkIHVudG8gdGhlbSwgUHJheSB0aGF0IHllIGVudGVyIG5vdCBpbnRvIHRlbXB0YXRpb24uCkFuZCBoZSB3YXMgd2l0aGRyYXduIGZyb20gdGhlbSBhYm91dCBhIHN0b25lJ3MgY2FzdCwgYW5kIGtuZWVsZWQgZG93biwgYW5kIHByYXllZCwKU2F5aW5nLCBGYXRoZXIsIGlmIHRob3UgYmUgd2lsbGluZywgcmVtb3ZlIHRoaXMgY3VwIGZyb20gbWU6IG5ldmVydGhlbGVzcyBub3QgbXkgd2lsbCwgYnV0IHRoaW5lLCBiZSBkb25lLgpBbmQgdGhlcmUgYXBwZWFyZWQgYW4gYW5nZWwgdW50byBoaW0gZnJvbSBoZWF2ZW4sIHN0cmVuZ3RoZW5pbmcgaGltLgpBbmQgYmVpbmcgaW4gYW4gYWdvbnkgaGUgcHJheWVkIG1vcmUgZWFybmVzdGx5OiBhbmQgaGlzIHN3ZWF0IHdhcyBhcyBpdCB3ZXJlIGdyZWF0IGRyb3BzIG9mIGJsb29kIGZhbGxpbmcgZG93biB0byB0aGUgZ3JvdW5kLgpBbmQgd2hlbiBoZSByb3NlIHVwIGZyb20gcHJheWVyLCBhbmQgd2FzIGNvbWUgdG8gaGlzIGRpc2NpcGxlcywgaGUgZm91bmQgdGhlbSBzbGVlcGluZyBmb3Igc29ycm93LApBbmQgc2FpZCB1bnRvIHRoZW0sIFdoeSBzbGVlcCB5ZT8gcmlzZSBhbmQgcHJheSwgbGVzdCB5ZSBlbnRlciBpbnRvIHRlbXB0YXRpb24uCkFuZCB3aGlsZSBoZSB5ZXQgc3Bha2UsIGJlaG9sZCBhIG11bHRpdHVkZSwgYW5kIGhlIHRoYXQgd2FzIGNhbGxlZCBKdWRhcywgb25lIG9mIHRoZSB0d2VsdmUsIHdlbnQgYmVmb3JlIHRoZW0sIGFuZCBkcmV3IG5lYXIgdW50byBKZXN1cyB0byBraXNzIGhpbS4KQnV0IEplc3VzIHNhaWQgdW50byBoaW0sIEp1ZGFzLCBiZXRyYXllc3QgdGhvdSB0aGUgU29uIG9mIG1hbiB3aXRoIGEga2lzcz8KV2hlbiB0aGV5IHdoaWNoIHdlcmUgYWJvdXQgaGltIHNhdyB3aGF0IHdvdWxkIGZvbGxvdywgdGhleSBzYWlkIHVudG8gaGltLCBMb3JkLCBzaGFsbCB3ZSBzbWl0ZSB3aXRoIHRoZSBzd29yZD8KQW5kIG9uZSBvZiB0aGVtIHNtb3RlIHRoZSBzZXJ2YW50IG9mIHRoZSBoaWdoIHByaWVzdCwgYW5kIGN1dCBvZmYgaGlzIHJpZ2h0IGVhci4KQW5kIEplc3VzIGFuc3dlcmVkIGFuZCBzYWlkLCBTdWZmZXIgeWUgdGh1cyBmYXIuIEFuZCBoZSB0b3VjaGVkIGhpcyBlYXIsIGFuZCBoZWFsZWQgaGltLgpUaGVuIEplc3VzIHNhaWQgdW50byB0aGUgY2hpZWYgcHJpZXN0cywgYW5kIGNhcHRhaW5zIG9mIHRoZSB0ZW1wbGUsIGFuZCB0aGUgZWxkZXJzLCB3aGljaCB3ZXJlIGNvbWUgdG8gaGltLCBCZSB5ZSBjb21lIG91dCwgYXMgYWdhaW5zdCBhIHRoaWVmLCB3aXRoIHN3b3JkcyBhbmQgc3RhdmVzPwpXaGVuIEkgd2FzIGRhaWx5IHdpdGggeW91IGluIHRoZSB0ZW1wbGUsIHllIHN0cmV0Y2hlZCBmb3J0aCBubyBoYW5kcyBhZ2FpbnN0IG1lOiBidXQgdGhpcyBpcyB5b3VyIGhvdXIsIGFuZCB0aGUgcG93ZXIgb2YgZGFya25lc3MuClRoZW4gdG9vayB0aGV5IGhpbSwgYW5kIGxlZCBoaW0sIGFuZCBicm91Z2h0IGhpbSBpbnRvIHRoZSBoaWdoIHByaWVzdCdzIGhvdXNlLiBBbmQgUGV0ZXIgZm9sbG93ZWQgYWZhciBvZmYuCkFuZCB3aGVuIHRoZXkgaGFkIGtpbmRsZWQgYSBmaXJlIGluIHRoZSBtaWRzdCBvZiB0aGUgaGFsbCwgYW5kIHdlcmUgc2V0IGRvd24gdG9nZXRoZXIsIFBldGVyIHNhdCBkb3duIGFtb25nIHRoZW0uCkJ1dCBhIGNlcnRhaW4gbWFpZCBiZWhlbGQgaGltIGFzIGhlIHNhdCBieSB0aGUgZmlyZSwgYW5kIGVhcm5lc3RseSBsb29rZWQgdXBvbiBoaW0sIGFuZCBzYWlkLCBUaGlzIG1hbiB3YXMgYWxzbyB3aXRoIGhpbS4KQW5kIGhlIGRlbmllZCBoaW0sIHNheWluZywgV29tYW4sIEkga25vdyBoaW0gbm90LgpBbmQgYWZ0ZXIgYSBsaXR0bGUgd2hpbGUgYW5vdGhlciBzYXcgaGltLCBhbmQgc2FpZCwgVGhvdSBhcnQgYWxzbyBvZiB0aGVtLiBBbmQgUGV0ZXIgc2FpZCwgTWFuLCBJIGFtIG5vdC4KQW5kIGFib3V0IHRoZSBzcGFjZSBvZiBvbmUgaG91ciBhZnRlciBhbm90aGVyIGNvbmZpZGVudGx5IGFmZmlybWVkLCBzYXlpbmcsIE9mIGEgdHJ1dGggdGhpcyBmZWxsb3cgYWxzbyB3YXMgd2l0aCBoaW06IGZvciBoZSBpcyBhIEdhbGlsYWVhbi4KQW5kIFBldGVyIHNhaWQsIE1hbiwgSSBrbm93IG5vdCB3aGF0IHRob3Ugc2F5ZXN0LiBBbmQgaW1tZWRpYXRlbHksIHdoaWxlIGhlIHlldCBzcGFrZSwgdGhlIGNvY2sgY3Jldy4KQW5kIHRoZSBMb3JkIHR1cm5lZCwgYW5kIGxvb2tlZCB1cG9uIFBldGVyLiBBbmQgUGV0ZXIgcmVtZW1iZXJlZCB0aGUgd29yZCBvZiB0aGUgTG9yZCwgaG93IGhlIGhhZCBzYWlkIHVudG8gaGltLCBCZWZvcmUgdGhlIGNvY2sgY3JvdywgdGhvdSBzaGFsdCBkZW55IG1lIHRocmljZS4KQW5kIFBldGVyIHdlbnQgb3V0LCBhbmQgd2VwdCBiaXR0ZXJseS4KQW5kIHRoZSBtZW4gdGhhdCBoZWxkIEplc3VzIG1vY2tlZCBoaW0sIGFuZCBzbW90ZSBoaW0uCkFuZCB3aGVuIHRoZXkgaGFkIGJsaW5kZm9sZGVkIGhpbSwgdGhleSBzdHJ1Y2sgaGltIG9uIHRoZSBmYWNlLCBhbmQgYXNrZWQgaGltLCBzYXlpbmcsIFByb3BoZXN5LCB3aG8gaXMgaXQgdGhhdCBzbW90ZSB0aGVlPwpBbmQgbWFueSBvdGhlciB0aGluZ3MgYmxhc3BoZW1vdXNseSBzcGFrZSB0aGV5IGFnYWluc3QgaGltLgpBbmQgYXMgc29vbiBhcyBpdCB3YXMgZGF5LCB0aGUgZWxkZXJzIG9mIHRoZSBwZW9wbGUgYW5kIHRoZSBjaGllZiBwcmllc3RzIGFuZCB0aGUgc2NyaWJlcyBjYW1lIHRvZ2V0aGVyLCBhbmQgbGVkIGhpbSBpbnRvIHRoZWlyIGNvdW5jaWwsIHNheWluZywKQXJ0IHRob3UgdGhlIENocmlzdD8gdGVsbCB1cy4gQW5kIGhlIHNhaWQgdW50byB0aGVtLCBJZiBJIHRlbGwgeW91LCB5ZSB3aWxsIG5vdCBiZWxpZXZlOgpBbmQgaWYgSSBhbHNvIGFzayB5b3UsIHllIHdpbGwgbm90IGFuc3dlciBtZSwgbm9yIGxldCBtZSBnby4KSGVyZWFmdGVyIHNoYWxsIHRoZSBTb24gb2YgbWFuIHNpdCBvbiB0aGUgcmlnaHQgaGFuZCBvZiB0aGUgcG93ZXIgb2YgR29kLgpUaGVuIHNhaWQgdGhleSBhbGwsIEFydCB0aG91IHRoZW4gdGhlIFNvbiBvZiBHb2Q/IEFuZCBoZSBzYWlkIHVudG8gdGhlbSwgWWUgc2F5IHRoYXQgSSBhbS4KQW5kIHRoZXkgc2FpZCwgV2hhdCBuZWVkIHdlIGFueSBmdXJ0aGVyIHdpdG5lc3M/IGZvciB3ZSBvdXJzZWx2ZXMgaGF2ZSBoZWFyZCBvZiBoaXMgb3duIG1vdXRoLgpBbmQgdGhlIHdob2xlIG11bHRpdHVkZSBvZiB0aGVtIGFyb3NlLCBhbmQgbGVkIGhpbSB1bnRvIFBpbGF0ZS4KQW5kIHRoZXkgYmVnYW4gdG8gYWNjdXNlIGhpbSwgc2F5aW5nLCBXZSBmb3VuZCB0aGlzIGZlbGxvdyBwZXJ2ZXJ0aW5nIHRoZSBuYXRpb24sIGFuZCBmb3JiaWRkaW5nIHRvIGdpdmUgdHJpYnV0ZSB0byBDYWVzYXIsIHNheWluZyB0aGF0IGhlIGhpbXNlbGYgaXMgQ2hyaXN0IGEgS2luZy4KQW5kIFBpbGF0ZSBhc2tlZCBoaW0sIHNheWluZywgQXJ0IHRob3UgdGhlIEtpbmcgb2YgdGhlIEpld3M/IEFuZCBoZSBhbnN3ZXJlZCBoaW0gYW5kIHNhaWQsIFRob3Ugc2F5ZXN0IGl0LgpUaGVuIHNhaWQgUGlsYXRlIHRvIHRoZSBjaGllZiBwcmllc3RzIGFuZCB0byB0aGUgcGVvcGxlLCBJIGZpbmQgbm8gZmF1bHQgaW4gdGhpcyBtYW4uCkFuZCB0aGV5IHdlcmUgdGhlIG1vcmUgZmllcmNlLCBzYXlpbmcsIEhlIHN0aXJyZXRoIHVwIHRoZSBwZW9wbGUsIHRlYWNoaW5nIHRocm91Z2hvdXQgYWxsIEpld3J5LCBiZWdpbm5pbmcgZnJvbSBHYWxpbGVlIHRvIHRoaXMgcGxhY2UuCldoZW4gUGlsYXRlIGhlYXJkIG9mIEdhbGlsZWUsIGhlIGFza2VkIHdoZXRoZXIgdGhlIG1hbiB3ZXJlIGEgR2FsaWxhZWFuLgpBbmQgYXMgc29vbiBhcyBoZSBrbmV3IHRoYXQgaGUgYmVsb25nZWQgdW50byBIZXJvZCdzIGp1cmlzZGljdGlvbiwgaGUgc2VudCBoaW0gdG8gSGVyb2QsIHdobyBoaW1zZWxmIGFsc28gd2FzIGF0IEplcnVzYWxlbSBhdCB0aGF0IHRpbWUuCkFuZCB3aGVuIEhlcm9kIHNhdyBKZXN1cywgaGUgd2FzIGV4Y2VlZGluZyBnbGFkOiBmb3IgaGUgd2FzIGRlc2lyb3VzIHRvIHNlZSBoaW0gb2YgYSBsb25nIHNlYXNvbiwgYmVjYXVzZSBoZSBoYWQgaGVhcmQgbWFueSB0aGluZ3Mgb2YgaGltOyBhbmQgaGUgaG9wZWQgdG8gaGF2ZSBzZWVuIHNvbWUgbWlyYWNsZSBkb25lIGJ5IGhpbS4KVGhlbiBoZSBxdWVzdGlvbmVkIHdpdGggaGltIGluIG1hbnkgd29yZHM7IGJ1dCBoZSBhbnN3ZXJlZCBoaW0gbm90aGluZy4KQW5kIHRoZSBjaGllZiBwcmllc3RzIGFuZCBzY3JpYmVzIHN0b29kIGFuZCB2ZWhlbWVudGx5IGFjY3VzZWQgaGltLgpBbmQgSGVyb2Qgd2l0aCBoaXMgbWVuIG9mIHdhciBzZXQgaGltIGF0IG5vdWdodCwgYW5kIG1vY2tlZCBoaW0sIGFuZCBhcnJheWVkIGhpbSBpbiBhIGdvcmdlb3VzIHJvYmUsIGFuZCBzZW50IGhpbSBhZ2FpbiB0byBQaWxhdGUuCkFuZCB0aGUgc2FtZSBkYXkgUGlsYXRlIGFuZCBIZXJvZCB3ZXJlIG1hZGUgZnJpZW5kcyB0b2dldGhlcjogZm9yIGJlZm9yZSB0aGV5IHdlcmUgYXQgZW5taXR5IGJldHdlZW4gdGhlbXNlbHZlcy4KQW5kIFBpbGF0ZSwgd2hlbiBoZSBoYWQgY2FsbGVkIHRvZ2V0aGVyIHRoZSBjaGllZiBwcmllc3RzIGFuZCB0aGUgcnVsZXJzIGFuZCB0aGUgcGVvcGxlLApTYWlkIHVudG8gdGhlbSwgWWUgaGF2ZSBicm91Z2h0IHRoaXMgbWFuIHVudG8gbWUsIGFzIG9uZSB0aGF0IHBlcnZlcnRldGggdGhlIHBlb3BsZTogYW5kLCBiZWhvbGQsIEksIGhhdmluZyBleGFtaW5lZCBoaW0gYmVmb3JlIHlvdSwgaGF2ZSBmb3VuZCBubyBmYXVsdCBpbiB0aGlzIG1hbiB0b3VjaGluZyB0aG9zZSB0aGluZ3Mgd2hlcmVvZiB5ZSBhY2N1c2UgaGltOgpObywgbm9yIHlldCBIZXJvZDogZm9yIEkgc2VudCB5b3UgdG8gaGltOyBhbmQsIGxvLCBub3RoaW5nIHdvcnRoeSBvZiBkZWF0aCBpcyBkb25lIHVudG8gaGltLgpJIHdpbGwgdGhlcmVmb3JlIGNoYXN0aXNlIGhpbSwgYW5kIHJlbGVhc2UgaGltLgooRm9yIG9mIG5lY2Vzc2l0eSBoZSBtdXN0IHJlbGVhc2Ugb25lIHVudG8gdGhlbSBhdCB0aGUgZmVhc3QuKQpBbmQgdGhleSBjcmllZCBvdXQgYWxsIGF0IG9uY2UsIHNheWluZywgQXdheSB3aXRoIHRoaXMgbWFuLCBhbmQgcmVsZWFzZSB1bnRvIHVzIEJhcmFiYmFzOgooV2hvIGZvciBhIGNlcnRhaW4gc2VkaXRpb24gbWFkZSBpbiB0aGUgY2l0eSwgYW5kIGZvciBtdXJkZXIsIHdhcyBjYXN0IGludG8gcHJpc29uLikKUGlsYXRlIHRoZXJlZm9yZSwgd2lsbGluZyB0byByZWxlYXNlIEplc3VzLCBzcGFrZSBhZ2FpbiB0byB0aGVtLgpCdXQgdGhleSBjcmllZCwgc2F5aW5nLCBDcnVjaWZ5IGhpbSwgY3J1Y2lmeSBoaW0uCkFuZCBoZSBzYWlkIHVudG8gdGhlbSB0aGUgdGhpcmQgdGltZSwgV2h5LCB3aGF0IGV2aWwgaGF0aCBoZSBkb25lPyBJIGhhdmUgZm91bmQgbm8gY2F1c2Ugb2YgZGVhdGggaW4gaGltOiBJIHdpbGwgdGhlcmVmb3JlIGNoYXN0aXNlIGhpbSwgYW5kIGxldCBoaW0gZ28uCkFuZCB0aGV5IHdlcmUgaW5zdGFudCB3aXRoIGxvdWQgdm9pY2VzLCByZXF1aXJpbmcgdGhhdCBoZSBtaWdodCBiZSBjcnVjaWZpZWQuIEFuZCB0aGUgdm9pY2VzIG9mIHRoZW0gYW5kIG9mIHRoZSBjaGllZiBwcmllc3RzIHByZXZhaWxlZC4KQW5kIFBpbGF0ZSBnYXZlIHNlbnRlbmNlIHRoYXQgaXQgc2hvdWxkIGJlIGFzIHRoZXkgcmVxdWlyZWQuCkFuZCBoZSByZWxlYXNlZCB1bnRvIHRoZW0gaGltIHRoYXQgZm9yIHNlZGl0aW9uIGFuZCBtdXJkZXIgd2FzIGNhc3QgaW50byBwcmlzb24sIHdob20gdGhleSBoYWQgZGVzaXJlZDsgYnV0IGhlIGRlbGl2ZXJlZCBKZXN1cyB0byB0aGVpciB3aWxsLgpBbmQgYXMgdGhleSBsZWQgaGltIGF3YXksIHRoZXkgbGFpZCBob2xkIHVwb24gb25lIFNpbW9uLCBhIEN5cmVuaWFuLCBjb21pbmcgb3V0IG9mIHRoZSBjb3VudHJ5LCBhbmQgb24gaGltIHRoZXkgbGFpZCB0aGUgY3Jvc3MsIHRoYXQgaGUgbWlnaHQgYmVhciBpdCBhZnRlciBKZXN1cy4KQW5kIHRoZXJlIGZvbGxvd2VkIGhpbSBhIGdyZWF0IGNvbXBhbnkgb2YgcGVvcGxlLCBhbmQgb2Ygd29tZW4sIHdoaWNoIGFsc28gYmV3YWlsZWQgYW5kIGxhbWVudGVkIGhpbS4KQnV0IEplc3VzIHR1cm5pbmcgdW50byB0aGVtIHNhaWQsIERhdWdodGVycyBvZiBKZXJ1c2FsZW0sIHdlZXAgbm90IGZvciBtZSwgYnV0IHdlZXAgZm9yIHlvdXJzZWx2ZXMsIGFuZCBmb3IgeW91ciBjaGlsZHJlbi4KRm9yLCBiZWhvbGQsIHRoZSBkYXlzIGFyZSBjb21pbmcsIGluIHRoZSB3aGljaCB0aGV5IHNoYWxsIHNheSwgQmxlc3NlZCBhcmUgdGhlIGJhcnJlbiwgYW5kIHRoZSB3b21icyB0aGF0IG5ldmVyIGJhcmUsIGFuZCB0aGUgcGFwcyB3aGljaCBuZXZlciBnYXZlIHN1Y2suClRoZW4gc2hhbGwgdGhleSBiZWdpbiB0byBzYXkgdG8gdGhlIG1vdW50YWlucywgRmFsbCBvbiB1czsgYW5kIHRvIHRoZSBoaWxscywgQ292ZXIgdXMuCkZvciBpZiB0aGV5IGRvIHRoZXNlIHRoaW5ncyBpbiBhIGdyZWVuIHRyZWUsIHdoYXQgc2hhbGwgYmUgZG9uZSBpbiB0aGUgZHJ5PwpBbmQgdGhlcmUgd2VyZSBhbHNvIHR3byBvdGhlciwgbWFsZWZhY3RvcnMsIGxlZCB3aXRoIGhpbSB0byBiZSBwdXQgdG8gZGVhdGguCkFuZCB3aGVuIHRoZXkgd2VyZSBjb21lIHRvIHRoZSBwbGFjZSwgd2hpY2ggaXMgY2FsbGVkIENhbHZhcnksIHRoZXJlIHRoZXkgY3J1Y2lmaWVkIGhpbSwgYW5kIHRoZSBtYWxlZmFjdG9ycywgb25lIG9uIHRoZSByaWdodCBoYW5kLCBhbmQgdGhlIG90aGVyIG9uIHRoZSBsZWZ0LgpUaGVuIHNhaWQgSmVzdXMsIEZhdGhlciwgZm9yZ2l2ZSB0aGVtOyBmb3IgdGhleSBrbm93IG5vdCB3aGF0IHRoZXkgZG8uIEFuZCB0aGV5IHBhcnRlZCBoaXMgcmFpbWVudCwgYW5kIGNhc3QgbG90cy4KQW5kIHRoZSBwZW9wbGUgc3Rvb2QgYmVob2xkaW5nLiBBbmQgdGhlIHJ1bGVycyBhbHNvIHdpdGggdGhlbSBkZXJpZGVkIGhpbSwgc2F5aW5nLCBIZSBzYXZlZCBvdGhlcnM7IGxldCBoaW0gc2F2ZSBoaW1zZWxmLCBpZiBoZSBiZSBDaHJpc3QsIHRoZSBjaG9zZW4gb2YgR29kLgpBbmQgdGhlIHNvbGRpZXJzIGFsc28gbW9ja2VkIGhpbSwgY29taW5nIHRvIGhpbSwgYW5kIG9mZmVyaW5nIGhpbSB2aW5lZ2FyLApBbmQgc2F5aW5nLCBJZiB0aG91IGJlIHRoZSBraW5nIG9mIHRoZSBKZXdzLCBzYXZlIHRoeXNlbGYuCkFuZCBhIHN1cGVyc2NyaXB0aW9uIGFsc28gd2FzIHdyaXR0ZW4gb3ZlciBoaW0gaW4gbGV0dGVycyBvZiBHcmVlaywgYW5kIExhdGluLCBhbmQgSGVicmV3LCBUSElTIElTIFRIRSBLSU5HIE9GIFRIRSBKRVdTLgpBbmQgb25lIG9mIHRoZSBtYWxlZmFjdG9ycyB3aGljaCB3ZXJlIGhhbmdlZCByYWlsZWQgb24gaGltLCBzYXlpbmcsIElmIHRob3UgYmUgQ2hyaXN0LCBzYXZlIHRoeXNlbGYgYW5kIHVzLgpCdXQgdGhlIG90aGVyIGFuc3dlcmluZyByZWJ1a2VkIGhpbSwgc2F5aW5nLCBEb3N0IG5vdCB0aG91IGZlYXIgR29kLCBzZWVpbmcgdGhvdSBhcnQgaW4gdGhlIHNhbWUgY29uZGVtbmF0aW9uPwpBbmQgd2UgaW5kZWVkIGp1c3RseTsgZm9yIHdlIHJlY2VpdmUgdGhlIGR1ZSByZXdhcmQgb2Ygb3VyIGRlZWRzOiBidXQgdGhpcyBtYW4gaGF0aCBkb25lIG5vdGhpbmcgYW1pc3MuCkFuZCBoZSBzYWlkIHVudG8gSmVzdXMsIExvcmQsIHJlbWVtYmVyIG1lIHdoZW4gdGhvdSBjb21lc3QgaW50byB0aHkga2luZ2RvbS4KQW5kIEplc3VzIHNhaWQgdW50byBoaW0sIFZlcmlseSBJIHNheSB1bnRvIHRoZWUsIFRvIGRheSBzaGFsdCB0aG91IGJlIHdpdGggbWUgaW4gcGFyYWRpc2UuCkFuZCBpdCB3YXMgYWJvdXQgdGhlIHNpeHRoIGhvdXIsIGFuZCB0aGVyZSB3YXMgYSBkYXJrbmVzcyBvdmVyIGFsbCB0aGUgZWFydGggdW50aWwgdGhlIG5pbnRoIGhvdXIuCkFuZCB0aGUgc3VuIHdhcyBkYXJrZW5lZCwgYW5kIHRoZSB2ZWlsIG9mIHRoZSB0ZW1wbGUgd2FzIHJlbnQgaW4gdGhlIG1pZHN0LgpBbmQgd2hlbiBKZXN1cyBoYWQgY3JpZWQgd2l0aCBhIGxvdWQgdm9pY2UsIGhlIHNhaWQsIEZhdGhlciwgaW50byB0aHkgaGFuZHMgSSBjb21tZW5kIG15IHNwaXJpdDogYW5kIGhhdmluZyBzYWlkIHRodXMsIGhlIGdhdmUgdXAgdGhlIGdob3N0LgpOb3cgd2hlbiB0aGUgY2VudHVyaW9uIHNhdyB3aGF0IHdhcyBkb25lLCBoZSBnbG9yaWZpZWQgR29kLCBzYXlpbmcsIENlcnRhaW5seSB0aGlzIHdhcyBhIHJpZ2h0ZW91cyBtYW4uCkFuZCBhbGwgdGhlIHBlb3BsZSB0aGF0IGNhbWUgdG9nZXRoZXIgdG8gdGhhdCBzaWdodCwgYmVob2xkaW5nIHRoZSB0aGluZ3Mgd2hpY2ggd2VyZSBkb25lLCBzbW90ZSB0aGVpciBicmVhc3RzLCBhbmQgcmV0dXJuZWQuCkFuZCBhbGwgaGlzIGFjcXVhaW50YW5jZSwgYW5kIHRoZSB3b21lbiB0aGF0IGZvbGxvd2VkIGhpbSBmcm9tIEdhbGlsZWUsIHN0b29kIGFmYXIgb2ZmLCBiZWhvbGRpbmcgdGhlc2UgdGhpbmdzLgpBbmQsIGJlaG9sZCwgdGhlcmUgd2FzIGEgbWFuIG5hbWVkIEpvc2VwaCwgYSBjb3Vuc2VsbG9yOyBhbmQgaGUgd2FzIGEgZ29vZCBtYW4sIGFuZCBhIGp1c3Q6CihUaGUgc2FtZSBoYWQgbm90IGNvbnNlbnRlZCB0byB0aGUgY291bnNlbCBhbmQgZGVlZCBvZiB0aGVtOykgaGUgd2FzIG9mIEFyaW1hdGhhZWEsIGEgY2l0eSBvZiB0aGUgSmV3czogd2hvIGFsc28gaGltc2VsZiB3YWl0ZWQgZm9yIHRoZSBraW5nZG9tIG9mIEdvZC4KVGhpcyBtYW4gd2VudCB1bnRvIFBpbGF0ZSwgYW5kIGJlZ2dlZCB0aGUgYm9keSBvZiBKZXN1cy4KQW5kIGhlIHRvb2sgaXQgZG93biwgYW5kIHdyYXBwZWQgaXQgaW4gbGluZW4sIGFuZCBsYWlkIGl0IGluIGEgc2VwdWxjaHJlIHRoYXQgd2FzIGhld24gaW4gc3RvbmUsIHdoZXJlaW4gbmV2ZXIgbWFuIGJlZm9yZSB3YXMgbGFpZC4KQW5kIHRoYXQgZGF5IHdhcyB0aGUgcHJlcGFyYXRpb24sIGFuZCB0aGUgc2FiYmF0aCBkcmV3IG9uLgpBbmQgdGhlIHdvbWVuIGFsc28sIHdoaWNoIGNhbWUgd2l0aCBoaW0gZnJvbSBHYWxpbGVlLCBmb2xsb3dlZCBhZnRlciwgYW5kIGJlaGVsZCB0aGUgc2VwdWxjaHJlLCBhbmQgaG93IGhpcyBib2R5IHdhcyBsYWlkLgpBbmQgdGhleSByZXR1cm5lZCwgYW5kIHByZXBhcmVkIHNwaWNlcyBhbmQgb2ludG1lbnRzOyBhbmQgcmVzdGVkIHRoZSBzYWJiYXRoIGRheSBhY2NvcmRpbmcgdG8gdGhlIGNvbW1hbmRtZW50LgpOb3cgdXBvbiB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLCB2ZXJ5IGVhcmx5IGluIHRoZSBtb3JuaW5nLCB0aGV5IGNhbWUgdW50byB0aGUgc2VwdWxjaHJlLCBicmluZ2luZyB0aGUgc3BpY2VzIHdoaWNoIHRoZXkgaGFkIHByZXBhcmVkLCBhbmQgY2VydGFpbiBvdGhlcnMgd2l0aCB0aGVtLgpBbmQgdGhleSBmb3VuZCB0aGUgc3RvbmUgcm9sbGVkIGF3YXkgZnJvbSB0aGUgc2VwdWxjaHJlLgpBbmQgdGhleSBlbnRlcmVkIGluLCBhbmQgZm91bmQgbm90IHRoZSBib2R5IG9mIHRoZSBMb3JkIEplc3VzLgpBbmQgaXQgY2FtZSB0byBwYXNzLCBhcyB0aGV5IHdlcmUgbXVjaCBwZXJwbGV4ZWQgdGhlcmVhYm91dCwgYmVob2xkLCB0d28gbWVuIHN0b29kIGJ5IHRoZW0gaW4gc2hpbmluZyBnYXJtZW50czoKQW5kIGFzIHRoZXkgd2VyZSBhZnJhaWQsIGFuZCBib3dlZCBkb3duIHRoZWlyIGZhY2VzIHRvIHRoZSBlYXJ0aCwgdGhleSBzYWlkIHVudG8gdGhlbSwgV2h5IHNlZWsgeWUgdGhlIGxpdmluZyBhbW9uZyB0aGUgZGVhZD8KSGUgaXMgbm90IGhlcmUsIGJ1dCBpcyByaXNlbjogcmVtZW1iZXIgaG93IGhlIHNwYWtlIHVudG8geW91IHdoZW4gaGUgd2FzIHlldCBpbiBHYWxpbGVlLApTYXlpbmcsIFRoZSBTb24gb2YgbWFuIG11c3QgYmUgZGVsaXZlcmVkIGludG8gdGhlIGhhbmRzIG9mIHNpbmZ1bCBtZW4sIGFuZCBiZSBjcnVjaWZpZWQsIGFuZCB0aGUgdGhpcmQgZGF5IHJpc2UgYWdhaW4uCkFuZCB0aGV5IHJlbWVtYmVyZWQgaGlzIHdvcmRzLApBbmQgcmV0dXJuZWQgZnJvbSB0aGUgc2VwdWxjaHJlLCBhbmQgdG9sZCBhbGwgdGhlc2UgdGhpbmdzIHVudG8gdGhlIGVsZXZlbiwgYW5kIHRvIGFsbCB0aGUgcmVzdC4KSXQgd2FzIE1hcnkgTWFnZGFsZW5lIGFuZCBKb2FubmEsIGFuZCBNYXJ5IHRoZSBtb3RoZXIgb2YgSmFtZXMsIGFuZCBvdGhlciB3b21lbiB0aGF0IHdlcmUgd2l0aCB0aGVtLCB3aGljaCB0b2xkIHRoZXNlIHRoaW5ncyB1bnRvIHRoZSBhcG9zdGxlcy4KQW5kIHRoZWlyIHdvcmRzIHNlZW1lZCB0byB0aGVtIGFzIGlkbGUgdGFsZXMsIGFuZCB0aGV5IGJlbGlldmVkIHRoZW0gbm90LgpUaGVuIGFyb3NlIFBldGVyLCBhbmQgcmFuIHVudG8gdGhlIHNlcHVsY2hyZTsgYW5kIHN0b29waW5nIGRvd24sIGhlIGJlaGVsZCB0aGUgbGluZW4gY2xvdGhlcyBsYWlkIGJ5IHRoZW1zZWx2ZXMsIGFuZCBkZXBhcnRlZCwgd29uZGVyaW5nIGluIGhpbXNlbGYgYXQgdGhhdCB3aGljaCB3YXMgY29tZSB0byBwYXNzLgpBbmQsIGJlaG9sZCwgdHdvIG9mIHRoZW0gd2VudCB0aGF0IHNhbWUgZGF5IHRvIGEgdmlsbGFnZSBjYWxsZWQgRW1tYXVzLCB3aGljaCB3YXMgZnJvbSBKZXJ1c2FsZW0gYWJvdXQgdGhyZWVzY29yZSBmdXJsb25ncy4KQW5kIHRoZXkgdGFsa2VkIHRvZ2V0aGVyIG9mIGFsbCB0aGVzZSB0aGluZ3Mgd2hpY2ggaGFkIGhhcHBlbmVkLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB0aGF0LCB3aGlsZSB0aGV5IGNvbW11bmVkIHRvZ2V0aGVyIGFuZCByZWFzb25lZCwgSmVzdXMgaGltc2VsZiBkcmV3IG5lYXIsIGFuZCB3ZW50IHdpdGggdGhlbS4KQnV0IHRoZWlyIGV5ZXMgd2VyZSBob2xkZW4gdGhhdCB0aGV5IHNob3VsZCBub3Qga25vdyBoaW0uCkFuZCBoZSBzYWlkIHVudG8gdGhlbSwgV2hhdCBtYW5uZXIgb2YgY29tbXVuaWNhdGlvbnMgYXJlIHRoZXNlIHRoYXQgeWUgaGF2ZSBvbmUgdG8gYW5vdGhlciwgYXMgeWUgd2FsaywgYW5kIGFyZSBzYWQ/CkFuZCB0aGUgb25lIG9mIHRoZW0sIHdob3NlIG5hbWUgd2FzIENsZW9wYXMsIGFuc3dlcmluZyBzYWlkIHVudG8gaGltLCBBcnQgdGhvdSBvbmx5IGEgc3RyYW5nZXIgaW4gSmVydXNhbGVtLCBhbmQgaGFzdCBub3Qga25vd24gdGhlIHRoaW5ncyB3aGljaCBhcmUgY29tZSB0byBwYXNzIHRoZXJlIGluIHRoZXNlIGRheXM/CkFuZCBoZSBzYWlkIHVudG8gdGhlbSwgV2hhdCB0aGluZ3M/IEFuZCB0aGV5IHNhaWQgdW50byBoaW0sIENvbmNlcm5pbmcgSmVzdXMgb2YgTmF6YXJldGgsIHdoaWNoIHdhcyBhIHByb3BoZXQgbWlnaHR5IGluIGRlZWQgYW5kIHdvcmQgYmVmb3JlIEdvZCBhbmQgYWxsIHRoZSBwZW9wbGU6CkFuZCBob3cgdGhlIGNoaWVmIHByaWVzdHMgYW5kIG91ciBydWxlcnMgZGVsaXZlcmVkIGhpbSB0byBiZSBjb25kZW1uZWQgdG8gZGVhdGgsIGFuZCBoYXZlIGNydWNpZmllZCBoaW0uCkJ1dCB3ZSB0cnVzdGVkIHRoYXQgaXQgaGFkIGJlZW4gaGUgd2hpY2ggc2hvdWxkIGhhdmUgcmVkZWVtZWQgSXNyYWVsOiBhbmQgYmVzaWRlIGFsbCB0aGlzLCB0byBkYXkgaXMgdGhlIHRoaXJkIGRheSBzaW5jZSB0aGVzZSB0aGluZ3Mgd2VyZSBkb25lLgpZZWEsIGFuZCBjZXJ0YWluIHdvbWVuIGFsc28gb2Ygb3VyIGNvbXBhbnkgbWFkZSB1cyBhc3RvbmlzaGVkLCB3aGljaCB3ZXJlIGVhcmx5IGF0IHRoZSBzZXB1bGNocmU7CkFuZCB3aGVuIHRoZXkgZm91bmQgbm90IGhpcyBib2R5LCB0aGV5IGNhbWUsIHNheWluZywgdGhhdCB0aGV5IGhhZCBhbHNvIHNlZW4gYSB2aXNpb24gb2YgYW5nZWxzLCB3aGljaCBzYWlkIHRoYXQgaGUgd2FzIGFsaXZlLgpBbmQgY2VydGFpbiBvZiB0aGVtIHdoaWNoIHdlcmUgd2l0aCB1cyB3ZW50IHRvIHRoZSBzZXB1bGNocmUsIGFuZCBmb3VuZCBpdCBldmVuIHNvIGFzIHRoZSB3b21lbiBoYWQgc2FpZDogYnV0IGhpbSB0aGV5IHNhdyBub3QuClRoZW4gaGUgc2FpZCB1bnRvIHRoZW0sIE8gZm9vbHMsIGFuZCBzbG93IG9mIGhlYXJ0IHRvIGJlbGlldmUgYWxsIHRoYXQgdGhlIHByb3BoZXRzIGhhdmUgc3Bva2VuOgpPdWdodCBub3QgQ2hyaXN0IHRvIGhhdmUgc3VmZmVyZWQgdGhlc2UgdGhpbmdzLCBhbmQgdG8gZW50ZXIgaW50byBoaXMgZ2xvcnk/CkFuZCBiZWdpbm5pbmcgYXQgTW9zZXMgYW5kIGFsbCB0aGUgcHJvcGhldHMsIGhlIGV4cG91bmRlZCB1bnRvIHRoZW0gaW4gYWxsIHRoZSBzY3JpcHR1cmVzIHRoZSB0aGluZ3MgY29uY2VybmluZyBoaW1zZWxmLgpBbmQgdGhleSBkcmV3IG5pZ2ggdW50byB0aGUgdmlsbGFnZSwgd2hpdGhlciB0aGV5IHdlbnQ6IGFuZCBoZSBtYWRlIGFzIHRob3VnaCBoZSB3b3VsZCBoYXZlIGdvbmUgZnVydGhlci4KQnV0IHRoZXkgY29uc3RyYWluZWQgaGltLCBzYXlpbmcsIEFiaWRlIHdpdGggdXM6IGZvciBpdCBpcyB0b3dhcmQgZXZlbmluZywgYW5kIHRoZSBkYXkgaXMgZmFyIHNwZW50LiBBbmQgaGUgd2VudCBpbiB0byB0YXJyeSB3aXRoIHRoZW0uCkFuZCBpdCBjYW1lIHRvIHBhc3MsIGFzIGhlIHNhdCBhdCBtZWF0IHdpdGggdGhlbSwgaGUgdG9vayBicmVhZCwgYW5kIGJsZXNzZWQgaXQsIGFuZCBicmFrZSwgYW5kIGdhdmUgdG8gdGhlbS4KQW5kIHRoZWlyIGV5ZXMgd2VyZSBvcGVuZWQsIGFuZCB0aGV5IGtuZXcgaGltOyBhbmQgaGUgdmFuaXNoZWQgb3V0IG9mIHRoZWlyIHNpZ2h0LgpBbmQgdGhleSBzYWlkIG9uZSB0byBhbm90aGVyLCBEaWQgbm90IG91ciBoZWFydCBidXJuIHdpdGhpbiB1cywgd2hpbGUgaGUgdGFsa2VkIHdpdGggdXMgYnkgdGhlIHdheSwgYW5kIHdoaWxlIGhlIG9wZW5lZCB0byB1cyB0aGUgc2NyaXB0dXJlcz8KQW5kIHRoZXkgcm9zZSB1cCB0aGUgc2FtZSBob3VyLCBhbmQgcmV0dXJuZWQgdG8gSmVydXNhbGVtLCBhbmQgZm91bmQgdGhlIGVsZXZlbiBnYXRoZXJlZCB0b2dldGhlciwgYW5kIHRoZW0gdGhhdCB3ZXJlIHdpdGggdGhlbSwKU2F5aW5nLCBUaGUgTG9yZCBpcyByaXNlbiBpbmRlZWQsIGFuZCBoYXRoIGFwcGVhcmVkIHRvIFNpbW9uLgpBbmQgdGhleSB0b2xkIHdoYXQgdGhpbmdzIHdlcmUgZG9uZSBpbiB0aGUgd2F5LCBhbmQgaG93IGhlIHdhcyBrbm93biBvZiB0aGVtIGluIGJyZWFraW5nIG9mIGJyZWFkLgpBbmQgYXMgdGhleSB0aHVzIHNwYWtlLCBKZXN1cyBoaW1zZWxmIHN0b29kIGluIHRoZSBtaWRzdCBvZiB0aGVtLCBhbmQgc2FpdGggdW50byB0aGVtLCBQZWFjZSBiZSB1bnRvIHlvdS4KQnV0IHRoZXkgd2VyZSB0ZXJyaWZpZWQgYW5kIGFmZnJpZ2h0ZWQsIGFuZCBzdXBwb3NlZCB0aGF0IHRoZXkgaGFkIHNlZW4gYSBzcGlyaXQuCkFuZCBoZSBzYWlkIHVudG8gdGhlbSwgV2h5IGFyZSB5ZSB0cm91YmxlZD8gYW5kIHdoeSBkbyB0aG91Z2h0cyBhcmlzZSBpbiB5b3VyIGhlYXJ0cz8KQmVob2xkIG15IGhhbmRzIGFuZCBteSBmZWV0LCB0aGF0IGl0IGlzIEkgbXlzZWxmOiBoYW5kbGUgbWUsIGFuZCBzZWU7IGZvciBhIHNwaXJpdCBoYXRoIG5vdCBmbGVzaCBhbmQgYm9uZXMsIGFzIHllIHNlZSBtZSBoYXZlLgpBbmQgd2hlbiBoZSBoYWQgdGh1cyBzcG9rZW4sIGhlIHNoZXdlZCB0aGVtIGhpcyBoYW5kcyBhbmQgaGlzIGZlZXQuCkFuZCB3aGlsZSB0aGV5IHlldCBiZWxpZXZlZCBub3QgZm9yIGpveSwgYW5kIHdvbmRlcmVkLCBoZSBzYWlkIHVudG8gdGhlbSwgSGF2ZSB5ZSBoZXJlIGFueSBtZWF0PwpBbmQgdGhleSBnYXZlIGhpbSBhIHBpZWNlIG9mIGEgYnJvaWxlZCBmaXNoLCBhbmQgb2YgYW4gaG9uZXljb21iLgpBbmQgaGUgdG9vayBpdCwgYW5kIGRpZCBlYXQgYmVmb3JlIHRoZW0uCkFuZCBoZSBzYWlkIHVudG8gdGhlbSwgVGhlc2UgYXJlIHRoZSB3b3JkcyB3aGljaCBJIHNwYWtlIHVudG8geW91LCB3aGlsZSBJIHdhcyB5ZXQgd2l0aCB5b3UsIHRoYXQgYWxsIHRoaW5ncyBtdXN0IGJlIGZ1bGZpbGxlZCwgd2hpY2ggd2VyZSB3cml0dGVuIGluIHRoZSBsYXcgb2YgTW9zZXMsIGFuZCBpbiB0aGUgcHJvcGhldHMsIGFuZCBpbiB0aGUgcHNhbG1zLCBjb25jZXJuaW5nIG1lLgpUaGVuIG9wZW5lZCBoZSB0aGVpciB1bmRlcnN0YW5kaW5nLCB0aGF0IHRoZXkgbWlnaHQgdW5kZXJzdGFuZCB0aGUgc2NyaXB0dXJlcywKQW5kIHNhaWQgdW50byB0aGVtLCBUaHVzIGl0IGlzIHdyaXR0ZW4sIGFuZCB0aHVzIGl0IGJlaG92ZWQgQ2hyaXN0IHRvIHN1ZmZlciwgYW5kIHRvIHJpc2UgZnJvbSB0aGUgZGVhZCB0aGUgdGhpcmQgZGF5OgpBbmQgdGhhdCByZXBlbnRhbmNlIGFuZCByZW1pc3Npb24gb2Ygc2lucyBzaG91bGQgYmUgcHJlYWNoZWQgaW4gaGlzIG5hbWUgYW1vbmcgYWxsIG5hdGlvbnMsIGJlZ2lubmluZyBhdCBKZXJ1c2FsZW0uCkFuZCB5ZSBhcmUgd2l0bmVzc2VzIG9mIHRoZXNlIHRoaW5ncy4KQW5kLCBiZWhvbGQsIEkgc2VuZCB0aGUgcHJvbWlzZSBvZiBteSBGYXRoZXIgdXBvbiB5b3U6IGJ1dCB0YXJyeSB5ZSBpbiB0aGUgY2l0eSBvZiBKZXJ1c2FsZW0sIHVudGlsIHllIGJlIGVuZHVlZCB3aXRoIHBvd2VyIGZyb20gb24gaGlnaC4KQW5kIGhlIGxlZCB0aGVtIG91dCBhcyBmYXIgYXMgdG8gQmV0aGFueSwgYW5kIGhlIGxpZnRlZCB1cCBoaXMgaGFuZHMsIGFuZCBibGVzc2VkIHRoZW0uCkFuZCBpdCBjYW1lIHRvIHBhc3MsIHdoaWxlIGhlIGJsZXNzZWQgdGhlbSwgaGUgd2FzIHBhcnRlZCBmcm9tIHRoZW0sIGFuZCBjYXJyaWVkIHVwIGludG8gaGVhdmVuLgpBbmQgdGhleSB3b3JzaGlwcGVkIGhpbSwgYW5kIHJldHVybmVkIHRvIEplcnVzYWxlbSB3aXRoIGdyZWF0IGpveToKQW5kIHdlcmUgY29udGludWFsbHkgaW4gdGhlIHRlbXBsZSwgcHJhaXNpbmcgYW5kIGJsZXNzaW5nIEdvZC4gQW1lbi4KSW4gdGhlIGJlZ2lubmluZyB3YXMgdGhlIFdvcmQsIGFuZCB0aGUgV29yZCB3YXMgd2l0aCBHb2QsIGFuZCB0aGUgV29yZCB3YXMgR29kLgpUaGUgc2FtZSB3YXMgaW4gdGhlIGJlZ2lubmluZyB3aXRoIEdvZC4KQWxsIHRoaW5ncyB3ZXJlIG1hZGUgYnkgaGltOyBhbmQgd2l0aG91dCBoaW0gd2FzIG5vdCBhbnkgdGhpbmcgbWFkZSB0aGF0IHdhcyBtYWRlLgpJbiBoaW0gd2FzIGxpZmU7IGFuZCB0aGUgbGlmZSB3YXMgdGhlIGxpZ2h0IG9mIG1lbi4KQW5kIHRoZSBsaWdodCBzaGluZXRoIGluIGRhcmtuZXNzOyBhbmQgdGhlIGRhcmtuZXNzIGNvbXByZWhlbmRlZCBpdCBub3QuClRoZXJlIHdhcyBhIG1hbiBzZW50IGZyb20gR29kLCB3aG9zZSBuYW1lIHdhcyBKb2huLgpUaGUgc2FtZSBjYW1lIGZvciBhIHdpdG5lc3MsIHRvIGJlYXIgd2l0bmVzcyBvZiB0aGUgTGlnaHQsIHRoYXQgYWxsIG1lbiB0aHJvdWdoIGhpbSBtaWdodCBiZWxpZXZlLgpIZSB3YXMgbm90IHRoYXQgTGlnaHQsIGJ1dCB3YXMgc2VudCB0byBiZWFyIHdpdG5lc3Mgb2YgdGhhdCBMaWdodC4KVGhhdCB3YXMgdGhlIHRydWUgTGlnaHQsIHdoaWNoIGxpZ2h0ZXRoIGV2ZXJ5IG1hbiB0aGF0IGNvbWV0aCBpbnRvIHRoZSB3b3JsZC4KSGUgd2FzIGluIHRoZSB3b3JsZCwgYW5kIHRoZSB3b3JsZCB3YXMgbWFkZSBieSBoaW0sIGFuZCB0aGUgd29ybGQga25ldyBoaW0gbm90LgpIZSBjYW1lIHVudG8gaGlzIG93biwgYW5kIGhpcyBvd24gcmVjZWl2ZWQgaGltIG5vdC4KQnV0IGFzIG1hbnkgYXMgcmVjZWl2ZWQgaGltLCB0byB0aGVtIGdhdmUgaGUgcG93ZXIgdG8gYmVjb21lIHRoZSBzb25zIG9mIEdvZCwgZXZlbiB0byB0aGVtIHRoYXQgYmVsaWV2ZSBvbiBoaXMgbmFtZToKV2hpY2ggd2VyZSBib3JuLCBub3Qgb2YgYmxvb2QsIG5vciBvZiB0aGUgd2lsbCBvZiB0aGUgZmxlc2gsIG5vciBvZiB0aGUgd2lsbCBvZiBtYW4sIGJ1dCBvZiBHb2QuCkFuZCB0aGUgV29yZCB3YXMgbWFkZSBmbGVzaCwgYW5kIGR3ZWx0IGFtb25nIHVzLCAoYW5kIHdlIGJlaGVsZCBoaXMgZ2xvcnksIHRoZSBnbG9yeSBhcyBvZiB0aGUgb25seSBiZWdvdHRlbiBvZiB0aGUgRmF0aGVyLCkgZnVsbCBvZiBncmFjZSBhbmQgdHJ1dGguCkpvaG4gYmFyZSB3aXRuZXNzIG9mIGhpbSwgYW5kIGNyaWVkLCBzYXlpbmcsIFRoaXMgd2FzIGhlIG9mIHdob20gSSBzcGFrZSwgSGUgdGhhdCBjb21ldGggYWZ0ZXIgbWUgaXMgcHJlZmVycmVkIGJlZm9yZSBtZTogZm9yIGhlIHdhcyBiZWZvcmUgbWUuCkFuZCBvZiBoaXMgZnVsbmVzcyBoYXZlIGFsbCB3ZSByZWNlaXZlZCwgYW5kIGdyYWNlIGZvciBncmFjZS4KRm9yIHRoZSBsYXcgd2FzIGdpdmVuIGJ5IE1vc2VzLCBidXQgZ3JhY2UgYW5kIHRydXRoIGNhbWUgYnkgSmVzdXMgQ2hyaXN0LgpObyBtYW4gaGF0aCBzZWVuIEdvZCBhdCBhbnkgdGltZSwgdGhlIG9ubHkgYmVnb3R0ZW4gU29uLCB3aGljaCBpcyBpbiB0aGUgYm9zb20gb2YgdGhlIEZhdGhlciwgaGUgaGF0aCBkZWNsYXJlZCBoaW0uCkFuZCB0aGlzIGlzIHRoZSByZWNvcmQgb2YgSm9obiwgd2hlbiB0aGUgSmV3cyBzZW50IHByaWVzdHMgYW5kIExldml0ZXMgZnJvbSBKZXJ1c2FsZW0gdG8gYXNrIGhpbSwgV2hvIGFydCB0aG91PwpBbmQgaGUgY29uZmVzc2VkLCBhbmQgZGVuaWVkIG5vdDsgYnV0IGNvbmZlc3NlZCwgSSBhbSBub3QgdGhlIENocmlzdC4KQW5kIHRoZXkgYXNrZWQgaGltLCBXaGF0IHRoZW4/IEFydCB0aG91IEVsaWFzPyBBbmQgaGUgc2FpdGgsIEkgYW0gbm90LiBBcnQgdGhvdSB0aGF0IHByb3BoZXQ/IEFuZCBoZSBhbnN3ZXJlZCwgTm8uClRoZW4gc2FpZCB0aGV5IHVudG8gaGltLCBXaG8gYXJ0IHRob3U/IHRoYXQgd2UgbWF5IGdpdmUgYW4gYW5zd2VyIHRvIHRoZW0gdGhhdCBzZW50IHVzLiBXaGF0IHNheWVzdCB0aG91IG9mIHRoeXNlbGY/CkhlIHNhaWQsIEkgYW0gdGhlIHZvaWNlIG9mIG9uZSBjcnlpbmcgaW4gdGhlIHdpbGRlcm5lc3MsIE1ha2Ugc3RyYWlnaHQgdGhlIHdheSBvZiB0aGUgTG9yZCwgYXMgc2FpZCB0aGUgcHJvcGhldCBFc2FpYXMuCkFuZCB0aGV5IHdoaWNoIHdlcmUgc2VudCB3ZXJlIG9mIHRoZSBQaGFyaXNlZXMuCkFuZCB0aGV5IGFza2VkIGhpbSwgYW5kIHNhaWQgdW50byBoaW0sIFdoeSBiYXB0aXplc3QgdGhvdSB0aGVuLCBpZiB0aG91IGJlIG5vdCB0aGF0IENocmlzdCwgbm9yIEVsaWFzLCBuZWl0aGVyIHRoYXQgcHJvcGhldD8KSm9obiBhbnN3ZXJlZCB0aGVtLCBzYXlpbmcsIEkgYmFwdGl6ZSB3aXRoIHdhdGVyOiBidXQgdGhlcmUgc3RhbmRldGggb25lIGFtb25nIHlvdSwgd2hvbSB5ZSBrbm93IG5vdDsKSGUgaXQgaXMsIHdobyBjb21pbmcgYWZ0ZXIgbWUgaXMgcHJlZmVycmVkIGJlZm9yZSBtZSwgd2hvc2Ugc2hvZSdzIGxhdGNoZXQgSSBhbSBub3Qgd29ydGh5IHRvIHVubG9vc2UuClRoZXNlIHRoaW5ncyB3ZXJlIGRvbmUgaW4gQmV0aGFiYXJhIGJleW9uZCBKb3JkYW4sIHdoZXJlIEpvaG4gd2FzIGJhcHRpemluZy4KVGhlIG5leHQgZGF5IEpvaG4gc2VldGggSmVzdXMgY29taW5nIHVudG8gaGltLCBhbmQgc2FpdGgsIEJlaG9sZCB0aGUgTGFtYiBvZiBHb2QsIHdoaWNoIHRha2V0aCBhd2F5IHRoZSBzaW4gb2YgdGhlIHdvcmxkLgpUaGlzIGlzIGhlIG9mIHdob20gSSBzYWlkLCBBZnRlciBtZSBjb21ldGggYSBtYW4gd2hpY2ggaXMgcHJlZmVycmVkIGJlZm9yZSBtZTogZm9yIGhlIHdhcyBiZWZvcmUgbWUuCkFuZCBJIGtuZXcgaGltIG5vdDogYnV0IHRoYXQgaGUgc2hvdWxkIGJlIG1hZGUgbWFuaWZlc3QgdG8gSXNyYWVsLCB0aGVyZWZvcmUgYW0gSSBjb21lIGJhcHRpemluZyB3aXRoIHdhdGVyLgpBbmQgSm9obiBiYXJlIHJlY29yZCwgc2F5aW5nLCBJIHNhdyB0aGUgU3Bpcml0IGRlc2NlbmRpbmcgZnJvbSBoZWF2ZW4gbGlrZSBhIGRvdmUsIGFuZCBpdCBhYm9kZSB1cG9uIGhpbS4KQW5kIEkga25ldyBoaW0gbm90OiBidXQgaGUgdGhhdCBzZW50IG1lIHRvIGJhcHRpemUgd2l0aCB3YXRlciwgdGhlIHNhbWUgc2FpZCB1bnRvIG1lLCBVcG9uIHdob20gdGhvdSBzaGFsdCBzZWUgdGhlIFNwaXJpdCBkZXNjZW5kaW5nLCBhbmQgcmVtYWluaW5nIG9uIGhpbSwgdGhlIHNhbWUgaXMgaGUgd2hpY2ggYmFwdGl6ZXRoIHdpdGggdGhlIEhvbHkgR2hvc3QuCkFuZCBJIHNhdywgYW5kIGJhcmUgcmVjb3JkIHRoYXQgdGhpcyBpcyB0aGUgU29uIG9mIEdvZC4KQWdhaW4gdGhlIG5leHQgZGF5IGFmdGVyIEpvaG4gc3Rvb2QsIGFuZCB0d28gb2YgaGlzIGRpc2NpcGxlczsKQW5kIGxvb2tpbmcgdXBvbiBKZXN1cyBhcyBoZSB3YWxrZWQsIGhlIHNhaXRoLCBCZWhvbGQgdGhlIExhbWIgb2YgR29kIQpBbmQgdGhlIHR3byBkaXNjaXBsZXMgaGVhcmQgaGltIHNwZWFrLCBhbmQgdGhleSBmb2xsb3dlZCBKZXN1cy4KVGhlbiBKZXN1cyB0dXJuZWQsIGFuZCBzYXcgdGhlbSBmb2xsb3dpbmcsIGFuZCBzYWl0aCB1bnRvIHRoZW0sIFdoYXQgc2VlayB5ZT8gVGhleSBzYWlkIHVudG8gaGltLCBSYWJiaSwgKHdoaWNoIGlzIHRvIHNheSwgYmVpbmcgaW50ZXJwcmV0ZWQsIE1hc3RlciwpIHdoZXJlIGR3ZWxsZXN0IHRob3U/CkhlIHNhaXRoIHVudG8gdGhlbSwgQ29tZSBhbmQgc2VlLiBUaGV5IGNhbWUgYW5kIHNhdyB3aGVyZSBoZSBkd2VsdCwgYW5kIGFib2RlIHdpdGggaGltIHRoYXQgZGF5OiBmb3IgaXQgd2FzIGFib3V0IHRoZSB0ZW50aCBob3VyLgpPbmUgb2YgdGhlIHR3byB3aGljaCBoZWFyZCBKb2huIHNwZWFrLCBhbmQgZm9sbG93ZWQgaGltLCB3YXMgQW5kcmV3LCBTaW1vbiBQZXRlcidzIGJyb3RoZXIuCkhlIGZpcnN0IGZpbmRldGggaGlzIG93biBicm90aGVyIFNpbW9uLCBhbmQgc2FpdGggdW50byBoaW0sIFdlIGhhdmUgZm91bmQgdGhlIE1lc3NpYXMsIHdoaWNoIGlzLCBiZWluZyBpbnRlcnByZXRlZCwgdGhlIENocmlzdC4KQW5kIGhlIGJyb3VnaHQgaGltIHRvIEplc3VzLiBBbmQgd2hlbiBKZXN1cyBiZWhlbGQgaGltLCBoZSBzYWlkLCBUaG91IGFydCBTaW1vbiB0aGUgc29uIG9mIEpvbmE6IHRob3Ugc2hhbHQgYmUgY2FsbGVkIENlcGhhcywgd2hpY2ggaXMgYnkgaW50ZXJwcmV0YXRpb24sIEEgc3RvbmUuClRoZSBkYXkgZm9sbG93aW5nIEplc3VzIHdvdWxkIGdvIGZvcnRoIGludG8gR2FsaWxlZSwgYW5kIGZpbmRldGggUGhpbGlwLCBhbmQgc2FpdGggdW50byBoaW0sIEZvbGxvdyBtZS4KTm93IFBoaWxpcCB3YXMgb2YgQmV0aHNhaWRhLCB0aGUgY2l0eSBvZiBBbmRyZXcgYW5kIFBldGVyLgpQaGlsaXAgZmluZGV0aCBOYXRoYW5hZWwsIGFuZCBzYWl0aCB1bnRvIGhpbSwgV2UgaGF2ZSBmb3VuZCBoaW0sIG9mIHdob20gTW9zZXMgaW4gdGhlIGxhdywgYW5kIHRoZSBwcm9waGV0cywgZGlkIHdyaXRlLCBKZXN1cyBvZiBOYXphcmV0aCwgdGhlIHNvbiBvZiBKb3NlcGguCkFuZCBOYXRoYW5hZWwgc2FpZCB1bnRvIGhpbSwgQ2FuIHRoZXJlIGFueSBnb29kIHRoaW5nIGNvbWUgb3V0IG9mIE5hemFyZXRoPyBQaGlsaXAgc2FpdGggdW50byBoaW0sIENvbWUgYW5kIHNlZS4KSmVzdXMgc2F3IE5hdGhhbmFlbCBjb21pbmcgdG8gaGltLCBhbmQgc2FpdGggb2YgaGltLCBCZWhvbGQgYW4gSXNyYWVsaXRlIGluZGVlZCwgaW4gd2hvbSBpcyBubyBndWlsZSEKTmF0aGFuYWVsIHNhaXRoIHVudG8gaGltLCBXaGVuY2Uga25vd2VzdCB0aG91IG1lPyBKZXN1cyBhbnN3ZXJlZCBhbmQgc2FpZCB1bnRvIGhpbSwgQmVmb3JlIHRoYXQgUGhpbGlwIGNhbGxlZCB0aGVlLCB3aGVuIHRob3Ugd2FzdCB1bmRlciB0aGUgZmlnIHRyZWUsIEkgc2F3IHRoZWUuCk5hdGhhbmFlbCBhbnN3ZXJlZCBhbmQgc2FpdGggdW50byBoaW0sIFJhYmJpLCB0aG91IGFydCB0aGUgU29uIG9mIEdvZDsgdGhvdSBhcnQgdGhlIEtpbmcgb2YgSXNyYWVsLgpKZXN1cyBhbnN3ZXJlZCBhbmQgc2FpZCB1bnRvIGhpbSwgQmVjYXVzZSBJIHNhaWQgdW50byB0aGVlLCBJIHNhdyB0aGVlIHVuZGVyIHRoZSBmaWcgdHJlZSwgYmVsaWV2ZXN0IHRob3U/IHRob3Ugc2hhbHQgc2VlIGdyZWF0ZXIgdGhpbmdzIHRoYW4gdGhlc2UuCkFuZCBoZSBzYWl0aCB1bnRvIGhpbSwgVmVyaWx5LCB2ZXJpbHksIEkgc2F5IHVudG8geW91LCBIZXJlYWZ0ZXIgeWUgc2hhbGwgc2VlIGhlYXZlbiBvcGVuLCBhbmQgdGhlIGFuZ2VscyBvZiBHb2QgYXNjZW5kaW5nIGFuZCBkZXNjZW5kaW5nIHVwb24gdGhlIFNvbiBvZiBtYW4uCkFuZCB0aGUgdGhpcmQgZGF5IHRoZXJlIHdhcyBhIG1hcnJpYWdlIGluIENhbmEgb2YgR2FsaWxlZTsgYW5kIHRoZSBtb3RoZXIgb2YgSmVzdXMgd2FzIHRoZXJlOgpBbmQgYm90aCBKZXN1cyB3YXMgY2FsbGVkLCBhbmQgaGlzIGRpc2NpcGxlcywgdG8gdGhlIG1hcnJpYWdlLgpBbmQgd2hlbiB0aGV5IHdhbnRlZCB3aW5lLCB0aGUgbW90aGVyIG9mIEplc3VzIHNhaXRoIHVudG8gaGltLCBUaGV5IGhhdmUgbm8gd2luZS4KSmVzdXMgc2FpdGggdW50byBoZXIsIFdvbWFuLCB3aGF0IGhhdmUgSSB0byBkbyB3aXRoIHRoZWU/IG1pbmUgaG91ciBpcyBub3QgeWV0IGNvbWUuCkhpcyBtb3RoZXIgc2FpdGggdW50byB0aGUgc2VydmFudHMsIFdoYXRzb2V2ZXIgaGUgc2FpdGggdW50byB5b3UsIGRvIGl0LgpBbmQgdGhlcmUgd2VyZSBzZXQgdGhlcmUgc2l4IHdhdGVycG90cyBvZiBzdG9uZSwgYWZ0ZXIgdGhlIG1hbm5lciBvZiB0aGUgcHVyaWZ5aW5nIG9mIHRoZSBKZXdzLCBjb250YWluaW5nIHR3byBvciB0aHJlZSBmaXJraW5zIGFwaWVjZS4KSmVzdXMgc2FpdGggdW50byB0aGVtLCBGaWxsIHRoZSB3YXRlcnBvdHMgd2l0aCB3YXRlci4gQW5kIHRoZXkgZmlsbGVkIHRoZW0gdXAgdG8gdGhlIGJyaW0uCkFuZCBoZSBzYWl0aCB1bnRvIHRoZW0sIERyYXcgb3V0IG5vdywgYW5kIGJlYXIgdW50byB0aGUgZ292ZXJub3Igb2YgdGhlIGZlYXN0LiBBbmQgdGhleSBiYXJlIGl0LgpXaGVuIHRoZSBydWxlciBvZiB0aGUgZmVhc3QgaGFkIHRhc3RlZCB0aGUgd2F0ZXIgdGhhdCB3YXMgbWFkZSB3aW5lLCBhbmQga25ldyBub3Qgd2hlbmNlIGl0IHdhczogKGJ1dCB0aGUgc2VydmFudHMgd2hpY2ggZHJldyB0aGUgd2F0ZXIga25ldzspIHRoZSBnb3Zlcm5vciBvZiB0aGUgZmVhc3QgY2FsbGVkIHRoZSBicmlkZWdyb29tLApBbmQgc2FpdGggdW50byBoaW0sIEV2ZXJ5IG1hbiBhdCB0aGUgYmVnaW5uaW5nIGRvdGggc2V0IGZvcnRoIGdvb2Qgd2luZTsgYW5kIHdoZW4gbWVuIGhhdmUgd2VsbCBkcnVuaywgdGhlbiB0aGF0IHdoaWNoIGlzIHdvcnNlOiBidXQgdGhvdSBoYXN0IGtlcHQgdGhlIGdvb2Qgd2luZSB1bnRpbCBub3cuClRoaXMgYmVnaW5uaW5nIG9mIG1pcmFjbGVzIGRpZCBKZXN1cyBpbiBDYW5hIG9mIEdhbGlsZWUsIGFuZCBtYW5pZmVzdGVkIGZvcnRoIGhpcyBnbG9yeTsgYW5kIGhpcyBkaXNjaXBsZXMgYmVsaWV2ZWQgb24gaGltLgpBZnRlciB0aGlzIGhlIHdlbnQgZG93biB0byBDYXBlcm5hdW0sIGhlLCBhbmQgaGlzIG1vdGhlciwgYW5kIGhpcyBicmV0aHJlbiwgYW5kIGhpcyBkaXNjaXBsZXM6IGFuZCB0aGV5IGNvbnRpbnVlZCB0aGVyZSBub3QgbWFueSBkYXlzLgpBbmQgdGhlIEpld3MnIHBhc3NvdmVyIHdhcyBhdCBoYW5kLCBhbmQgSmVzdXMgd2VudCB1cCB0byBKZXJ1c2FsZW0uCkFuZCBmb3VuZCBpbiB0aGUgdGVtcGxlIHRob3NlIHRoYXQgc29sZCBveGVuIGFuZCBzaGVlcCBhbmQgZG92ZXMsIGFuZCB0aGUgY2hhbmdlcnMgb2YgbW9uZXkgc2l0dGluZzoKQW5kIHdoZW4gaGUgaGFkIG1hZGUgYSBzY291cmdlIG9mIHNtYWxsIGNvcmRzLCBoZSBkcm92ZSB0aGVtIGFsbCBvdXQgb2YgdGhlIHRlbXBsZSwgYW5kIHRoZSBzaGVlcCwgYW5kIHRoZSBveGVuOyBhbmQgcG91cmVkIG91dCB0aGUgY2hhbmdlcnMnIG1vbmV5LCBhbmQgb3ZlcnRocmV3IHRoZSB0YWJsZXM7CkFuZCBzYWlkIHVudG8gdGhlbSB0aGF0IHNvbGQgZG92ZXMsIFRha2UgdGhlc2UgdGhpbmdzIGhlbmNlOyBtYWtlIG5vdCBteSBGYXRoZXIncyBob3VzZSBhbiBob3VzZSBvZiBtZXJjaGFuZGlzZS4KQW5kIGhpcyBkaXNjaXBsZXMgcmVtZW1iZXJlZCB0aGF0IGl0IHdhcyB3cml0dGVuLCBUaGUgemVhbCBvZiB0aGluZSBob3VzZSBoYXRoIGVhdGVuIG1lIHVwLgpUaGVuIGFuc3dlcmVkIHRoZSBKZXdzIGFuZCBzYWlkIHVudG8gaGltLCBXaGF0IHNpZ24gc2hld2VzdCB0aG91IHVudG8gdXMsIHNlZWluZyB0aGF0IHRob3UgZG9lc3QgdGhlc2UgdGhpbmdzPwpKZXN1cyBhbnN3ZXJlZCBhbmQgc2FpZCB1bnRvIHRoZW0sIERlc3Ryb3kgdGhpcyB0ZW1wbGUsIGFuZCBpbiB0aHJlZSBkYXlzIEkgd2lsbCByYWlzZSBpdCB1cC4KVGhlbiBzYWlkIHRoZSBKZXdzLCBGb3J0eSBhbmQgc2l4IHllYXJzIHdhcyB0aGlzIHRlbXBsZSBpbiBidWlsZGluZywgYW5kIHdpbHQgdGhvdSByZWFyIGl0IHVwIGluIHRocmVlIGRheXM/CkJ1dCBoZSBzcGFrZSBvZiB0aGUgdGVtcGxlIG9mIGhpcyBib2R5LgpXaGVuIHRoZXJlZm9yZSBoZSB3YXMgcmlzZW4gZnJvbSB0aGUgZGVhZCwgaGlzIGRpc2NpcGxlcyByZW1lbWJlcmVkIHRoYXQgaGUgaGFkIHNhaWQgdGhpcyB1bnRvIHRoZW07IGFuZCB0aGV5IGJlbGlldmVkIHRoZSBzY3JpcHR1cmUsIGFuZCB0aGUgd29yZCB3aGljaCBKZXN1cyBoYWQgc2FpZC4KTm93IHdoZW4gaGUgd2FzIGluIEplcnVzYWxlbSBhdCB0aGUgcGFzc292ZXIsIGluIHRoZSBmZWFzdCBkYXksIG1hbnkgYmVsaWV2ZWQgaW4gaGlzIG5hbWUsIHdoZW4gdGhleSBzYXcgdGhlIG1pcmFjbGVzIHdoaWNoIGhlIGRpZC4KQnV0IEplc3VzIGRpZCBub3QgY29tbWl0IGhpbXNlbGYgdW50byB0aGVtLCBiZWNhdXNlIGhlIGtuZXcgYWxsIG1lbiwKQW5kIG5lZWRlZCBub3QgdGhhdCBhbnkgc2hvdWxkIHRlc3RpZnkgb2YgbWFuOiBmb3IgaGUga25ldyB3aGF0IHdhcyBpbiBtYW4uClRoZXJlIHdhcyBhIG1hbiBvZiB0aGUgUGhhcmlzZWVzLCBuYW1lZCBOaWNvZGVtdXMsIGEgcnVsZXIgb2YgdGhlIEpld3M6ClRoZSBzYW1lIGNhbWUgdG8gSmVzdXMgYnkgbmlnaHQsIGFuZCBzYWlkIHVudG8gaGltLCBSYWJiaSwgd2Uga25vdyB0aGF0IHRob3UgYXJ0IGEgdGVhY2hlciBjb21lIGZyb20gR29kOiBmb3Igbm8gbWFuIGNhbiBkbyB0aGVzZSBtaXJhY2xlcyB0aGF0IHRob3UgZG9lc3QsIGV4Y2VwdCBHb2QgYmUgd2l0aCBoaW0uCkplc3VzIGFuc3dlcmVkIGFuZCBzYWlkIHVudG8gaGltLCBWZXJpbHksIHZlcmlseSwgSSBzYXkgdW50byB0aGVlLCBFeGNlcHQgYSBtYW4gYmUgYm9ybiBhZ2FpbiwgaGUgY2Fubm90IHNlZSB0aGUga2luZ2RvbSBvZiBHb2QuCk5pY29kZW11cyBzYWl0aCB1bnRvIGhpbSwgSG93IGNhbiBhIG1hbiBiZSBib3JuIHdoZW4gaGUgaXMgb2xkPyBjYW4gaGUgZW50ZXIgdGhlIHNlY29uZCB0aW1lIGludG8gaGlzIG1vdGhlcidzIHdvbWIsIGFuZCBiZSBib3JuPwpKZXN1cyBhbnN3ZXJlZCwgVmVyaWx5LCB2ZXJpbHksIEkgc2F5IHVudG8gdGhlZSwgRXhjZXB0IGEgbWFuIGJlIGJvcm4gb2Ygd2F0ZXIgYW5kIG9mIHRoZSBTcGlyaXQsIGhlIGNhbm5vdCBlbnRlciBpbnRvIHRoZSBraW5nZG9tIG9mIEdvZC4KVGhhdCB3aGljaCBpcyBib3JuIG9mIHRoZSBmbGVzaCBpcyBmbGVzaDsgYW5kIHRoYXQgd2hpY2ggaXMgYm9ybiBvZiB0aGUgU3Bpcml0IGlzIHNwaXJpdC4KTWFydmVsIG5vdCB0aGF0IEkgc2FpZCB1bnRvIHRoZWUsIFllIG11c3QgYmUgYm9ybiBhZ2Fpbi4KVGhlIHdpbmQgYmxvd2V0aCB3aGVyZSBpdCBsaXN0ZXRoLCBhbmQgdGhvdSBoZWFyZXN0IHRoZSBzb3VuZCB0aGVyZW9mLCBidXQgY2Fuc3Qgbm90IHRlbGwgd2hlbmNlIGl0IGNvbWV0aCwgYW5kIHdoaXRoZXIgaXQgZ29ldGg6IHNvIGlzIGV2ZXJ5IG9uZSB0aGF0IGlzIGJvcm4gb2YgdGhlIFNwaXJpdC4KTmljb2RlbXVzIGFuc3dlcmVkIGFuZCBzYWlkIHVudG8gaGltLCBIb3cgY2FuIHRoZXNlIHRoaW5ncyBiZT8KSmVzdXMgYW5zd2VyZWQgYW5kIHNhaWQgdW50byBoaW0sIEFydCB0aG91IGEgbWFzdGVyIG9mIElzcmFlbCwgYW5kIGtub3dlc3Qgbm90IHRoZXNlIHRoaW5ncz8KVmVyaWx5LCB2ZXJpbHksIEkgc2F5IHVudG8gdGhlZSwgV2Ugc3BlYWsgdGhhdCB3ZSBkbyBrbm93LCBhbmQgdGVzdGlmeSB0aGF0IHdlIGhhdmUgc2VlbjsgYW5kIHllIHJlY2VpdmUgbm90IG91ciB3aXRuZXNzLgpJZiBJIGhhdmUgdG9sZCB5b3UgZWFydGhseSB0aGluZ3MsIGFuZCB5ZSBiZWxpZXZlIG5vdCwgaG93IHNoYWxsIHllIGJlbGlldmUsIGlmIEkgdGVsbCB5b3Ugb2YgaGVhdmVubHkgdGhpbmdzPwpBbmQgbm8gbWFuIGhhdGggYXNjZW5kZWQgdXAgdG8gaGVhdmVuLCBidXQgaGUgdGhhdCBjYW1lIGRvd24gZnJvbSBoZWF2ZW4sIGV2ZW4gdGhlIFNvbiBvZiBtYW4gd2hpY2ggaXMgaW4gaGVhdmVuLgpBbmQgYXMgTW9zZXMgbGlmdGVkIHVwIHRoZSBzZXJwZW50IGluIHRoZSB3aWxkZXJuZXNzLCBldmVuIHNvIG11c3QgdGhlIFNvbiBvZiBtYW4gYmUgbGlmdGVkIHVwOgpUaGF0IHdob3NvZXZlciBiZWxpZXZldGggaW4gaGltIHNob3VsZCBub3QgcGVyaXNoLCBidXQgaGF2ZSBldGVybmFsIGxpZmUuCkZvciBHb2Qgc28gbG92ZWQgdGhlIHdvcmxkLCB0aGF0IGhlIGdhdmUgaGlzIG9ubHkgYmVnb3R0ZW4gU29uLCB0aGF0IHdob3NvZXZlciBiZWxpZXZldGggaW4gaGltIHNob3VsZCBub3QgcGVyaXNoLCBidXQgaGF2ZSBldmVybGFzdGluZyBsaWZlLgpGb3IgR29kIHNlbnQgbm90IGhpcyBTb24gaW50byB0aGUgd29ybGQgdG8gY29uZGVtbiB0aGUgd29ybGQ7IGJ1dCB0aGF0IHRoZSB3b3JsZCB0aHJvdWdoIGhpbSBtaWdodCBiZSBzYXZlZC4KSGUgdGhhdCBiZWxpZXZldGggb24gaGltIGlzIG5vdCBjb25kZW1uZWQ6IGJ1dCBoZSB0aGF0IGJlbGlldmV0aCBub3QgaXMgY29uZGVtbmVkIGFscmVhZHksIGJlY2F1c2UgaGUgaGF0aCBub3QgYmVsaWV2ZWQgaW4gdGhlIG5hbWUgb2YgdGhlIG9ubHkgYmVnb3R0ZW4gU29uIG9mIEdvZC4KQW5kIHRoaXMgaXMgdGhlIGNvbmRlbW5hdGlvbiwgdGhhdCBsaWdodCBpcyBjb21lIGludG8gdGhlIHdvcmxkLCBhbmQgbWVuIGxvdmVkIGRhcmtuZXNzIHJhdGhlciB0aGFuIGxpZ2h0LCBiZWNhdXNlIHRoZWlyIGRlZWRzIHdlcmUgZXZpbC4KRm9yIGV2ZXJ5IG9uZSB0aGF0IGRvZXRoIGV2aWwgaGF0ZXRoIHRoZSBsaWdodCwgbmVpdGhlciBjb21ldGggdG8gdGhlIGxpZ2h0LCBsZXN0IGhpcyBkZWVkcyBzaG91bGQgYmUgcmVwcm92ZWQuCkJ1dCBoZSB0aGF0IGRvZXRoIHRydXRoIGNvbWV0aCB0byB0aGUgbGlnaHQsIHRoYXQgaGlzIGRlZWRzIG1heSBiZSBtYWRlIG1hbmlmZXN0LCB0aGF0IHRoZXkgYXJlIHdyb3VnaHQgaW4gR29kLgpBZnRlciB0aGVzZSB0aGluZ3MgY2FtZSBKZXN1cyBhbmQgaGlzIGRpc2NpcGxlcyBpbnRvIHRoZSBsYW5kIG9mIEp1ZGFlYTsgYW5kIHRoZXJlIGhlIHRhcnJpZWQgd2l0aCB0aGVtLCBhbmQgYmFwdGl6ZWQuCkFuZCBKb2huIGFsc28gd2FzIGJhcHRpemluZyBpbiBBZW5vbiBuZWFyIHRvIFNhbGltLCBiZWNhdXNlIHRoZXJlIHdhcyBtdWNoIHdhdGVyIHRoZXJlOiBhbmQgdGhleSBjYW1lLCBhbmQgd2VyZSBiYXB0aXplZC4KRm9yIEpvaG4gd2FzIG5vdCB5ZXQgY2FzdCBpbnRvIHByaXNvbi4KVGhlbiB0aGVyZSBhcm9zZSBhIHF1ZXN0aW9uIGJldHdlZW4gc29tZSBvZiBKb2huJ3MgZGlzY2lwbGVzIGFuZCB0aGUgSmV3cyBhYm91dCBwdXJpZnlpbmcuCkFuZCB0aGV5IGNhbWUgdW50byBKb2huLCBhbmQgc2FpZCB1bnRvIGhpbSwgUmFiYmksIGhlIHRoYXQgd2FzIHdpdGggdGhlZSBiZXlvbmQgSm9yZGFuLCB0byB3aG9tIHRob3UgYmFyZXN0IHdpdG5lc3MsIGJlaG9sZCwgdGhlIHNhbWUgYmFwdGl6ZXRoLCBhbmQgYWxsIG1lbiBjb21lIHRvIGhpbS4KSm9obiBhbnN3ZXJlZCBhbmQgc2FpZCwgQSBtYW4gY2FuIHJlY2VpdmUgbm90aGluZywgZXhjZXB0IGl0IGJlIGdpdmVuIGhpbSBmcm9tIGhlYXZlbi4KWWUgeW91cnNlbHZlcyBiZWFyIG1lIHdpdG5lc3MsIHRoYXQgSSBzYWlkLCBJIGFtIG5vdCB0aGUgQ2hyaXN0LCBidXQgdGhhdCBJIGFtIHNlbnQgYmVmb3JlIGhpbS4KSGUgdGhhdCBoYXRoIHRoZSBicmlkZSBpcyB0aGUgYnJpZGVncm9vbTogYnV0IHRoZSBmcmllbmQgb2YgdGhlIGJyaWRlZ3Jvb20sIHdoaWNoIHN0YW5kZXRoIGFuZCBoZWFyZXRoIGhpbSwgcmVqb2ljZXRoIGdyZWF0bHkgYmVjYXVzZSBvZiB0aGUgYnJpZGVncm9vbSdzIHZvaWNlOiB0aGlzIG15IGpveSB0aGVyZWZvcmUgaXMgZnVsZmlsbGVkLgpIZSBtdXN0IGluY3JlYXNlLCBidXQgSSBtdXN0IGRlY3JlYXNlLgpIZSB0aGF0IGNvbWV0aCBmcm9tIGFib3ZlIGlzIGFib3ZlIGFsbDogaGUgdGhhdCBpcyBvZiB0aGUgZWFydGggaXMgZWFydGhseSwgYW5kIHNwZWFrZXRoIG9mIHRoZSBlYXJ0aDogaGUgdGhhdCBjb21ldGggZnJvbSBoZWF2ZW4gaXMgYWJvdmUgYWxsLgpBbmQgd2hhdCBoZSBoYXRoIHNlZW4gYW5kIGhlYXJkLCB0aGF0IGhlIHRlc3RpZmlldGg7IGFuZCBubyBtYW4gcmVjZWl2ZXRoIGhpcyB0ZXN0aW1vbnkuCkhlIHRoYXQgaGF0aCByZWNlaXZlZCBoaXMgdGVzdGltb255IGhhdGggc2V0IHRvIGhpcyBzZWFsIHRoYXQgR29kIGlzIHRydWUuCkZvciBoZSB3aG9tIEdvZCBoYXRoIHNlbnQgc3BlYWtldGggdGhlIHdvcmRzIG9mIEdvZDogZm9yIEdvZCBnaXZldGggbm90IHRoZSBTcGlyaXQgYnkgbWVhc3VyZSB1bnRvIGhpbS4KVGhlIEZhdGhlciBsb3ZldGggdGhlIFNvbiwgYW5kIGhhdGggZ2l2ZW4gYWxsIHRoaW5ncyBpbnRvIGhpcyBoYW5kLgpIZSB0aGF0IGJlbGlldmV0aCBvbiB0aGUgU29uIGhhdGggZXZlcmxhc3RpbmcgbGlmZTogYW5kIGhlIHRoYXQgYmVsaWV2ZXRoIG5vdCB0aGUgU29uIHNoYWxsIG5vdCBzZWUgbGlmZTsgYnV0IHRoZSB3cmF0aCBvZiBHb2QgYWJpZGV0aCBvbiBoaW0uCldoZW4gdGhlcmVmb3JlIHRoZSBMT1JEIGtuZXcgaG93IHRoZSBQaGFyaXNlZXMgaGFkIGhlYXJkIHRoYXQgSmVzdXMgbWFkZSBhbmQgYmFwdGl6ZWQgbW9yZSBkaXNjaXBsZXMgdGhhbiBKb2huLAooVGhvdWdoIEplc3VzIGhpbXNlbGYgYmFwdGl6ZWQgbm90LCBidXQgaGlzIGRpc2NpcGxlcywpCkhlIGxlZnQgSnVkYWVhLCBhbmQgZGVwYXJ0ZWQgYWdhaW4gaW50byBHYWxpbGVlLgpBbmQgaGUgbXVzdCBuZWVkcyBnbyB0aHJvdWdoIFNhbWFyaWEuClRoZW4gY29tZXRoIGhlIHRvIGEgY2l0eSBvZiBTYW1hcmlhLCB3aGljaCBpcyBjYWxsZWQgU3ljaGFyLCBuZWFyIHRvIHRoZSBwYXJjZWwgb2YgZ3JvdW5kIHRoYXQgSmFjb2IgZ2F2ZSB0byBoaXMgc29uIEpvc2VwaC4KTm93IEphY29iJ3Mgd2VsbCB3YXMgdGhlcmUuIEplc3VzIHRoZXJlZm9yZSwgYmVpbmcgd2VhcmllZCB3aXRoIGhpcyBqb3VybmV5LCBzYXQgdGh1cyBvbiB0aGUgd2VsbDogYW5kIGl0IHdhcyBhYm91dCB0aGUgc2l4dGggaG91ci4KVGhlcmUgY29tZXRoIGEgd29tYW4gb2YgU2FtYXJpYSB0byBkcmF3IHdhdGVyOiBKZXN1cyBzYWl0aCB1bnRvIGhlciwgR2l2ZSBtZSB0byBkcmluay4KKEZvciBoaXMgZGlzY2lwbGVzIHdlcmUgZ29uZSBhd2F5IHVudG8gdGhlIGNpdHkgdG8gYnV5IG1lYXQuKQpUaGVuIHNhaXRoIHRoZSB3b21hbiBvZiBTYW1hcmlhIHVudG8gaGltLCBIb3cgaXMgaXQgdGhhdCB0aG91LCBiZWluZyBhIEpldywgYXNrZXN0IGRyaW5rIG9mIG1lLCB3aGljaCBhbSBhIHdvbWFuIG9mIFNhbWFyaWE/IGZvciB0aGUgSmV3cyBoYXZlIG5vIGRlYWxpbmdzIHdpdGggdGhlIFNhbWFyaXRhbnMuCkplc3VzIGFuc3dlcmVkIGFuZCBzYWlkIHVudG8gaGVyLCBJZiB0aG91IGtuZXdlc3QgdGhlIGdpZnQgb2YgR29kLCBhbmQgd2hvIGl0IGlzIHRoYXQgc2FpdGggdG8gdGhlZSwgR2l2ZSBtZSB0byBkcmluazsgdGhvdSB3b3VsZGVzdCBoYXZlIGFza2VkIG9mIGhpbSwgYW5kIGhlIHdvdWxkIGhhdmUgZ2l2ZW4gdGhlZSBsaXZpbmcgd2F0ZXIuClRoZSB3b21hbiBzYWl0aCB1bnRvIGhpbSwgU2lyLCB0aG91IGhhc3Qgbm90aGluZyB0byBkcmF3IHdpdGgsIGFuZCB0aGUgd2VsbCBpcyBkZWVwOiBmcm9tIHdoZW5jZSB0aGVuIGhhc3QgdGhvdSB0aGF0IGxpdmluZyB3YXRlcj8KQXJ0IHRob3UgZ3JlYXRlciB0aGFuIG91ciBmYXRoZXIgSmFjb2IsIHdoaWNoIGdhdmUgdXMgdGhlIHdlbGwsIGFuZCBkcmFuayB0aGVyZW9mIGhpbXNlbGYsIGFuZCBoaXMgY2hpbGRyZW4sIGFuZCBoaXMgY2F0dGxlPwpKZXN1cyBhbnN3ZXJlZCBhbmQgc2FpZCB1bnRvIGhlciwgV2hvc29ldmVyIGRyaW5rZXRoIG9mIHRoaXMgd2F0ZXIgc2hhbGwgdGhpcnN0IGFnYWluOgpCdXQgd2hvc29ldmVyIGRyaW5rZXRoIG9mIHRoZSB3YXRlciB0aGF0IEkgc2hhbGwgZ2l2ZSBoaW0gc2hhbGwgbmV2ZXIgdGhpcnN0OyBidXQgdGhlIHdhdGVyIHRoYXQgSSBzaGFsbCBnaXZlIGhpbSBzaGFsbCBiZSBpbiBoaW0gYSB3ZWxsIG9mIHdhdGVyIHNwcmluZ2luZyB1cCBpbnRvIGV2ZXJsYXN0aW5nIGxpZmUuClRoZSB3b21hbiBzYWl0aCB1bnRvIGhpbSwgU2lyLCBnaXZlIG1lIHRoaXMgd2F0ZXIsIHRoYXQgSSB0aGlyc3Qgbm90LCBuZWl0aGVyIGNvbWUgaGl0aGVyIHRvIGRyYXcuCkplc3VzIHNhaXRoIHVudG8gaGVyLCBHbywgY2FsbCB0aHkgaHVzYmFuZCwgYW5kIGNvbWUgaGl0aGVyLgpUaGUgd29tYW4gYW5zd2VyZWQgYW5kIHNhaWQsIEkgaGF2ZSBubyBodXNiYW5kLiBKZXN1cyBzYWlkIHVudG8gaGVyLCBUaG91IGhhc3Qgd2VsbCBzYWlkLCBJIGhhdmUgbm8gaHVzYmFuZDoKRm9yIHRob3UgaGFzdCBoYWQgZml2ZSBodXNiYW5kczsgYW5kIGhlIHdob20gdGhvdSBub3cgaGFzdCBpcyBub3QgdGh5IGh1c2JhbmQ6IGluIHRoYXQgc2FpZHN0IHRob3UgdHJ1bHkuClRoZSB3b21hbiBzYWl0aCB1bnRvIGhpbSwgU2lyLCBJIHBlcmNlaXZlIHRoYXQgdGhvdSBhcnQgYSBwcm9waGV0LgpPdXIgZmF0aGVycyB3b3JzaGlwcGVkIGluIHRoaXMgbW91bnRhaW47IGFuZCB5ZSBzYXksIHRoYXQgaW4gSmVydXNhbGVtIGlzIHRoZSBwbGFjZSB3aGVyZSBtZW4gb3VnaHQgdG8gd29yc2hpcC4KSmVzdXMgc2FpdGggdW50byBoZXIsIFdvbWFuLCBiZWxpZXZlIG1lLCB0aGUgaG91ciBjb21ldGgsIHdoZW4geWUgc2hhbGwgbmVpdGhlciBpbiB0aGlzIG1vdW50YWluLCBub3IgeWV0IGF0IEplcnVzYWxlbSwgd29yc2hpcCB0aGUgRmF0aGVyLgpZZSB3b3JzaGlwIHllIGtub3cgbm90IHdoYXQ6IHdlIGtub3cgd2hhdCB3ZSB3b3JzaGlwOiBmb3Igc2FsdmF0aW9uIGlzIG9mIHRoZSBKZXdzLgpCdXQgdGhlIGhvdXIgY29tZXRoLCBhbmQgbm93IGlzLCB3aGVuIHRoZSB0cnVlIHdvcnNoaXBwZXJzIHNoYWxsIHdvcnNoaXAgdGhlIEZhdGhlciBpbiBzcGlyaXQgYW5kIGluIHRydXRoOiBmb3IgdGhlIEZhdGhlciBzZWVrZXRoIHN1Y2ggdG8gd29yc2hpcCBoaW0uCkdvZCBpcyBhIFNwaXJpdDogYW5kIHRoZXkgdGhhdCB3b3JzaGlwIGhpbSBtdXN0IHdvcnNoaXAgaGltIGluIHNwaXJpdCBhbmQgaW4gdHJ1dGguClRoZSB3b21hbiBzYWl0aCB1bnRvIGhpbSwgSSBrbm93IHRoYXQgTWVzc2lhcyBjb21ldGgsIHdoaWNoIGlzIGNhbGxlZCBDaHJpc3Q6IHdoZW4gaGUgaXMgY29tZSwgaGUgd2lsbCB0ZWxsIHVzIGFsbCB0aGluZ3MuCkplc3VzIHNhaXRoIHVudG8gaGVyLCBJIHRoYXQgc3BlYWsgdW50byB0aGVlIGFtIGhlLgpBbmQgdXBvbiB0aGlzIGNhbWUgaGlzIGRpc2NpcGxlcywgYW5kIG1hcnZlbGxlZCB0aGF0IGhlIHRhbGtlZCB3aXRoIHRoZSB3b21hbjogeWV0IG5vIG1hbiBzYWlkLCBXaGF0IHNlZWtlc3QgdGhvdT8gb3IsIFdoeSB0YWxrZXN0IHRob3Ugd2l0aCBoZXI/ClRoZSB3b21hbiB0aGVuIGxlZnQgaGVyIHdhdGVycG90LCBhbmQgd2VudCBoZXIgd2F5IGludG8gdGhlIGNpdHksIGFuZCBzYWl0aCB0byB0aGUgbWVuLApDb21lLCBzZWUgYSBtYW4sIHdoaWNoIHRvbGQgbWUgYWxsIHRoaW5ncyB0aGF0IGV2ZXIgSSBkaWQ6IGlzIG5vdCB0aGlzIHRoZSBDaHJpc3Q/ClRoZW4gdGhleSB3ZW50IG91dCBvZiB0aGUgY2l0eSwgYW5kIGNhbWUgdW50byBoaW0uCkluIHRoZSBtZWFuIHdoaWxlIGhpcyBkaXNjaXBsZXMgcHJheWVkIGhpbSwgc2F5aW5nLCBNYXN0ZXIsIGVhdC4KQnV0IGhlIHNhaWQgdW50byB0aGVtLCBJIGhhdmUgbWVhdCB0byBlYXQgdGhhdCB5ZSBrbm93IG5vdCBvZi4KVGhlcmVmb3JlIHNhaWQgdGhlIGRpc2NpcGxlcyBvbmUgdG8gYW5vdGhlciwgSGF0aCBhbnkgbWFuIGJyb3VnaHQgaGltIG91Z2h0IHRvIGVhdD8KSmVzdXMgc2FpdGggdW50byB0aGVtLCBNeSBtZWF0IGlzIHRvIGRvIHRoZSB3aWxsIG9mIGhpbSB0aGF0IHNlbnQgbWUsIGFuZCB0byBmaW5pc2ggaGlzIHdvcmsuClNheSBub3QgeWUsIFRoZXJlIGFyZSB5ZXQgZm91ciBtb250aHMsIGFuZCB0aGVuIGNvbWV0aCBoYXJ2ZXN0PyBiZWhvbGQsIEkgc2F5IHVudG8geW91LCBMaWZ0IHVwIHlvdXIgZXllcywgYW5kIGxvb2sgb24gdGhlIGZpZWxkczsgZm9yIHRoZXkgYXJlIHdoaXRlIGFscmVhZHkgdG8gaGFydmVzdC4KQW5kIGhlIHRoYXQgcmVhcGV0aCByZWNlaXZldGggd2FnZXMsIGFuZCBnYXRoZXJldGggZnJ1aXQgdW50byBsaWZlIGV0ZXJuYWw6IHRoYXQgYm90aCBoZSB0aGF0IHNvd2V0aCBhbmQgaGUgdGhhdCByZWFwZXRoIG1heSByZWpvaWNlIHRvZ2V0aGVyLgpBbmQgaGVyZWluIGlzIHRoYXQgc2F5aW5nIHRydWUsIE9uZSBzb3dldGgsIGFuZCBhbm90aGVyIHJlYXBldGguCkkgc2VudCB5b3UgdG8gcmVhcCB0aGF0IHdoZXJlb24geWUgYmVzdG93ZWQgbm8gbGFib3VyOiBvdGhlciBtZW4gbGFib3VyZWQsIGFuZCB5ZSBhcmUgZW50ZXJlZCBpbnRvIHRoZWlyIGxhYm91cnMuCkFuZCBtYW55IG9mIHRoZSBTYW1hcml0YW5zIG9mIHRoYXQgY2l0eSBiZWxpZXZlZCBvbiBoaW0gZm9yIHRoZSBzYXlpbmcgb2YgdGhlIHdvbWFuLCB3aGljaCB0ZXN0aWZpZWQsIEhlIHRvbGQgbWUgYWxsIHRoYXQgZXZlciBJIGRpZC4KU28gd2hlbiB0aGUgU2FtYXJpdGFucyB3ZXJlIGNvbWUgdW50byBoaW0sIHRoZXkgYmVzb3VnaHQgaGltIHRoYXQgaGUgd291bGQgdGFycnkgd2l0aCB0aGVtOiBhbmQgaGUgYWJvZGUgdGhlcmUgdHdvIGRheXMuCkFuZCBtYW55IG1vcmUgYmVsaWV2ZWQgYmVjYXVzZSBvZiBoaXMgb3duIHdvcmQ7CkFuZCBzYWlkIHVudG8gdGhlIHdvbWFuLCBOb3cgd2UgYmVsaWV2ZSwgbm90IGJlY2F1c2Ugb2YgdGh5IHNheWluZzogZm9yIHdlIGhhdmUgaGVhcmQgaGltIG91cnNlbHZlcywgYW5kIGtub3cgdGhhdCB0aGlzIGlzIGluZGVlZCB0aGUgQ2hyaXN0LCB0aGUgU2F2aW91ciBvZiB0aGUgd29ybGQuCk5vdyBhZnRlciB0d28gZGF5cyBoZSBkZXBhcnRlZCB0aGVuY2UsIGFuZCB3ZW50IGludG8gR2FsaWxlZS4KRm9yIEplc3VzIGhpbXNlbGYgdGVzdGlmaWVkLCB0aGF0IGEgcHJvcGhldCBoYXRoIG5vIGhvbm91ciBpbiBoaXMgb3duIGNvdW50cnkuClRoZW4gd2hlbiBoZSB3YXMgY29tZSBpbnRvIEdhbGlsZWUsIHRoZSBHYWxpbGFlYW5zIHJlY2VpdmVkIGhpbSwgaGF2aW5nIHNlZW4gYWxsIHRoZSB0aGluZ3MgdGhhdCBoZSBkaWQgYXQgSmVydXNhbGVtIGF0IHRoZSBmZWFzdDogZm9yIHRoZXkgYWxzbyB3ZW50IHVudG8gdGhlIGZlYXN0LgpTbyBKZXN1cyBjYW1lIGFnYWluIGludG8gQ2FuYSBvZiBHYWxpbGVlLCB3aGVyZSBoZSBtYWRlIHRoZSB3YXRlciB3aW5lLiBBbmQgdGhlcmUgd2FzIGEgY2VydGFpbiBub2JsZW1hbiwgd2hvc2Ugc29uIHdhcyBzaWNrIGF0IENhcGVybmF1bS4KV2hlbiBoZSBoZWFyZCB0aGF0IEplc3VzIHdhcyBjb21lIG91dCBvZiBKdWRhZWEgaW50byBHYWxpbGVlLCBoZSB3ZW50IHVudG8gaGltLCBhbmQgYmVzb3VnaHQgaGltIHRoYXQgaGUgd291bGQgY29tZSBkb3duLCBhbmQgaGVhbCBoaXMgc29uOiBmb3IgaGUgd2FzIGF0IHRoZSBwb2ludCBvZiBkZWF0aC4KVGhlbiBzYWlkIEplc3VzIHVudG8gaGltLCBFeGNlcHQgeWUgc2VlIHNpZ25zIGFuZCB3b25kZXJzLCB5ZSB3aWxsIG5vdCBiZWxpZXZlLgpUaGUgbm9ibGVtYW4gc2FpdGggdW50byBoaW0sIFNpciwgY29tZSBkb3duIGVyZSBteSBjaGlsZCBkaWUuCkplc3VzIHNhaXRoIHVudG8gaGltLCBHbyB0aHkgd2F5OyB0aHkgc29uIGxpdmV0aC4gQW5kIHRoZSBtYW4gYmVsaWV2ZWQgdGhlIHdvcmQgdGhhdCBKZXN1cyBoYWQgc3Bva2VuIHVudG8gaGltLCBhbmQgaGUgd2VudCBoaXMgd2F5LgpBbmQgYXMgaGUgd2FzIG5vdyBnb2luZyBkb3duLCBoaXMgc2VydmFudHMgbWV0IGhpbSwgYW5kIHRvbGQgaGltLCBzYXlpbmcsIFRoeSBzb24gbGl2ZXRoLgpUaGVuIGVucXVpcmVkIGhlIG9mIHRoZW0gdGhlIGhvdXIgd2hlbiBoZSBiZWdhbiB0byBhbWVuZC4gQW5kIHRoZXkgc2FpZCB1bnRvIGhpbSwgWWVzdGVyZGF5IGF0IHRoZSBzZXZlbnRoIGhvdXIgdGhlIGZldmVyIGxlZnQgaGltLgpTbyB0aGUgZmF0aGVyIGtuZXcgdGhhdCBpdCB3YXMgYXQgdGhlIHNhbWUgaG91ciwgaW4gdGhlIHdoaWNoIEplc3VzIHNhaWQgdW50byBoaW0sIFRoeSBzb24gbGl2ZXRoOiBhbmQgaGltc2VsZiBiZWxpZXZlZCwgYW5kIGhpcyB3aG9sZSBob3VzZS4KVGhpcyBpcyBhZ2FpbiB0aGUgc2Vjb25kIG1pcmFjbGUgdGhhdCBKZXN1cyBkaWQsIHdoZW4gaGUgd2FzIGNvbWUgb3V0IG9mIEp1ZGFlYSBpbnRvIEdhbGlsZWUuCkFmdGVyIHRoaXMgdGhlcmUgd2FzIGEgZmVhc3Qgb2YgdGhlIEpld3M7IGFuZCBKZXN1cyB3ZW50IHVwIHRvIEplcnVzYWxlbS4KTm93IHRoZXJlIGlzIGF0IEplcnVzYWxlbSBieSB0aGUgc2hlZXAgbWFya2V0IGEgcG9vbCwgd2hpY2ggaXMgY2FsbGVkIGluIHRoZSBIZWJyZXcgdG9uZ3VlIEJldGhlc2RhLCBoYXZpbmcgZml2ZSBwb3JjaGVzLgpJbiB0aGVzZSBsYXkgYSBncmVhdCBtdWx0aXR1ZGUgb2YgaW1wb3RlbnQgZm9saywgb2YgYmxpbmQsIGhhbHQsIHdpdGhlcmVkLCB3YWl0aW5nIGZvciB0aGUgbW92aW5nIG9mIHRoZSB3YXRlci4KRm9yIGFuIGFuZ2VsIHdlbnQgZG93biBhdCBhIGNlcnRhaW4gc2Vhc29uIGludG8gdGhlIHBvb2wsIGFuZCB0cm91YmxlZCB0aGUgd2F0ZXI6IHdob3NvZXZlciB0aGVuIGZpcnN0IGFmdGVyIHRoZSB0cm91Ymxpbmcgb2YgdGhlIHdhdGVyIHN0ZXBwZWQgaW4gd2FzIG1hZGUgd2hvbGUgb2Ygd2hhdHNvZXZlciBkaXNlYXNlIGhlIGhhZC4KQW5kIGEgY2VydGFpbiBtYW4gd2FzIHRoZXJlLCB3aGljaCBoYWQgYW4gaW5maXJtaXR5IHRoaXJ0eSBhbmQgZWlnaHQgeWVhcnMuCldoZW4gSmVzdXMgc2F3IGhpbSBsaWUsIGFuZCBrbmV3IHRoYXQgaGUgaGFkIGJlZW4gbm93IGEgbG9uZyB0aW1lIGluIHRoYXQgY2FzZSwgaGUgc2FpdGggdW50byBoaW0sIFdpbHQgdGhvdSBiZSBtYWRlIHdob2xlPwpUaGUgaW1wb3RlbnQgbWFuIGFuc3dlcmVkIGhpbSwgU2lyLCBJIGhhdmUgbm8gbWFuLCB3aGVuIHRoZSB3YXRlciBpcyB0cm91YmxlZCwgdG8gcHV0IG1lIGludG8gdGhlIHBvb2w6IGJ1dCB3aGlsZSBJIGFtIGNvbWluZywgYW5vdGhlciBzdGVwcGV0aCBkb3duIGJlZm9yZSBtZS4KSmVzdXMgc2FpdGggdW50byBoaW0sIFJpc2UsIHRha2UgdXAgdGh5IGJlZCwgYW5kIHdhbGsuCkFuZCBpbW1lZGlhdGVseSB0aGUgbWFuIHdhcyBtYWRlIHdob2xlLCBhbmQgdG9vayB1cCBoaXMgYmVkLCBhbmQgd2Fsa2VkOiBhbmQgb24gdGhlIHNhbWUgZGF5IHdhcyB0aGUgc2FiYmF0aC4KVGhlIEpld3MgdGhlcmVmb3JlIHNhaWQgdW50byBoaW0gdGhhdCB3YXMgY3VyZWQsIEl0IGlzIHRoZSBzYWJiYXRoIGRheTogaXQgaXMgbm90IGxhd2Z1bCBmb3IgdGhlZSB0byBjYXJyeSB0aHkgYmVkLgpIZSBhbnN3ZXJlZCB0aGVtLCBIZSB0aGF0IG1hZGUgbWUgd2hvbGUsIHRoZSBzYW1lIHNhaWQgdW50byBtZSwgVGFrZSB1cCB0aHkgYmVkLCBhbmQgd2Fsay4KVGhlbiBhc2tlZCB0aGV5IGhpbSwgV2hhdCBtYW4gaXMgdGhhdCB3aGljaCBzYWlkIHVudG8gdGhlZSwgVGFrZSB1cCB0aHkgYmVkLCBhbmQgd2Fsaz8KQW5kIGhlIHRoYXQgd2FzIGhlYWxlZCB3aXN0IG5vdCB3aG8gaXQgd2FzOiBmb3IgSmVzdXMgaGFkIGNvbnZleWVkIGhpbXNlbGYgYXdheSwgYSBtdWx0aXR1ZGUgYmVpbmcgaW4gdGhhdCBwbGFjZS4KQWZ0ZXJ3YXJkIEplc3VzIGZpbmRldGggaGltIGluIHRoZSB0ZW1wbGUsIGFuZCBzYWlkIHVudG8gaGltLCBCZWhvbGQsIHRob3UgYXJ0IG1hZGUgd2hvbGU6IHNpbiBubyBtb3JlLCBsZXN0IGEgd29yc2UgdGhpbmcgY29tZSB1bnRvIHRoZWUuClRoZSBtYW4gZGVwYXJ0ZWQsIGFuZCB0b2xkIHRoZSBKZXdzIHRoYXQgaXQgd2FzIEplc3VzLCB3aGljaCBoYWQgbWFkZSBoaW0gd2hvbGUuCkFuZCB0aGVyZWZvcmUgZGlkIHRoZSBKZXdzIHBlcnNlY3V0ZSBKZXN1cywgYW5kIHNvdWdodCB0byBzbGF5IGhpbSwgYmVjYXVzZSBoZSBoYWQgZG9uZSB0aGVzZSB0aGluZ3Mgb24gdGhlIHNhYmJhdGggZGF5LgpCdXQgSmVzdXMgYW5zd2VyZWQgdGhlbSwgTXkgRmF0aGVyIHdvcmtldGggaGl0aGVydG8sIGFuZCBJIHdvcmsuClRoZXJlZm9yZSB0aGUgSmV3cyBzb3VnaHQgdGhlIG1vcmUgdG8ga2lsbCBoaW0sIGJlY2F1c2UgaGUgbm90IG9ubHkgaGFkIGJyb2tlbiB0aGUgc2FiYmF0aCwgYnV0IHNhaWQgYWxzbyB0aGF0IEdvZCB3YXMgaGlzIEZhdGhlciwgbWFraW5nIGhpbXNlbGYgZXF1YWwgd2l0aCBHb2QuClRoZW4gYW5zd2VyZWQgSmVzdXMgYW5kIHNhaWQgdW50byB0aGVtLCBWZXJpbHksIHZlcmlseSwgSSBzYXkgdW50byB5b3UsIFRoZSBTb24gY2FuIGRvIG5vdGhpbmcgb2YgaGltc2VsZiwgYnV0IHdoYXQgaGUgc2VldGggdGhlIEZhdGhlciBkbzogZm9yIHdoYXQgdGhpbmdzIHNvZXZlciBoZSBkb2V0aCwgdGhlc2UgYWxzbyBkb2V0aCB0aGUgU29uIGxpa2V3aXNlLgpGb3IgdGhlIEZhdGhlciBsb3ZldGggdGhlIFNvbiwgYW5kIHNoZXdldGggaGltIGFsbCB0aGluZ3MgdGhhdCBoaW1zZWxmIGRvZXRoOiBhbmQgaGUgd2lsbCBzaGV3IGhpbSBncmVhdGVyIHdvcmtzIHRoYW4gdGhlc2UsIHRoYXQgeWUgbWF5IG1hcnZlbC4KRm9yIGFzIHRoZSBGYXRoZXIgcmFpc2V0aCB1cCB0aGUgZGVhZCwgYW5kIHF1aWNrZW5ldGggdGhlbTsgZXZlbiBzbyB0aGUgU29uIHF1aWNrZW5ldGggd2hvbSBoZSB3aWxsLgpGb3IgdGhlIEZhdGhlciBqdWRnZXRoIG5vIG1hbiwgYnV0IGhhdGggY29tbWl0dGVkIGFsbCBqdWRnbWVudCB1bnRvIHRoZSBTb246ClRoYXQgYWxsIG1lbiBzaG91bGQgaG9ub3VyIHRoZSBTb24sIGV2ZW4gYXMgdGhleSBob25vdXIgdGhlIEZhdGhlci4gSGUgdGhhdCBob25vdXJldGggbm90IHRoZSBTb24gaG9ub3VyZXRoIG5vdCB0aGUgRmF0aGVyIHdoaWNoIGhhdGggc2VudCBoaW0uClZlcmlseSwgdmVyaWx5LCBJIHNheSB1bnRvIHlvdSwgSGUgdGhhdCBoZWFyZXRoIG15IHdvcmQsIGFuZCBiZWxpZXZldGggb24gaGltIHRoYXQgc2VudCBtZSwgaGF0aCBldmVybGFzdGluZyBsaWZlLCBhbmQgc2hhbGwgbm90IGNvbWUgaW50byBjb25kZW1uYXRpb247IGJ1dCBpcyBwYXNzZWQgZnJvbSBkZWF0aCB1bnRvIGxpZmUuClZlcmlseSwgdmVyaWx5LCBJIHNheSB1bnRvIHlvdSwgVGhlIGhvdXIgaXMgY29taW5nLCBhbmQgbm93IGlzLCB3aGVuIHRoZSBkZWFkIHNoYWxsIGhlYXIgdGhlIHZvaWNlIG9mIHRoZSBTb24gb2YgR29kOiBhbmQgdGhleSB0aGF0IGhlYXIgc2hhbGwgbGl2ZS4KRm9yIGFzIHRoZSBGYXRoZXIgaGF0aCBsaWZlIGluIGhpbXNlbGY7IHNvIGhhdGggaGUgZ2l2ZW4gdG8gdGhlIFNvbiB0byBoYXZlIGxpZmUgaW4gaGltc2VsZjsKQW5kIGhhdGggZ2l2ZW4gaGltIGF1dGhvcml0eSB0byBleGVjdXRlIGp1ZGdtZW50IGFsc28sIGJlY2F1c2UgaGUgaXMgdGhlIFNvbiBvZiBtYW4uCk1hcnZlbCBub3QgYXQgdGhpczogZm9yIHRoZSBob3VyIGlzIGNvbWluZywgaW4gdGhlIHdoaWNoIGFsbCB0aGF0IGFyZSBpbiB0aGUgZ3JhdmVzIHNoYWxsIGhlYXIgaGlzIHZvaWNlLApBbmQgc2hhbGwgY29tZSBmb3J0aDsgdGhleSB0aGF0IGhhdmUgZG9uZSBnb29kLCB1bnRvIHRoZSByZXN1cnJlY3Rpb24gb2YgbGlmZTsgYW5kIHRoZXkgdGhhdCBoYXZlIGRvbmUgZXZpbCwgdW50byB0aGUgcmVzdXJyZWN0aW9uIG9mIGRhbW5hdGlvbi4KSSBjYW4gb2YgbWluZSBvd24gc2VsZiBkbyBub3RoaW5nOiBhcyBJIGhlYXIsIEkganVkZ2U6IGFuZCBteSBqdWRnbWVudCBpcyBqdXN0OyBiZWNhdXNlIEkgc2VlayBub3QgbWluZSBvd24gd2lsbCwgYnV0IHRoZSB3aWxsIG9mIHRoZSBGYXRoZXIgd2hpY2ggaGF0aCBzZW50IG1lLgpJZiBJIGJlYXIgd2l0bmVzcyBvZiBteXNlbGYsIG15IHdpdG5lc3MgaXMgbm90IHRydWUuClRoZXJlIGlzIGFub3RoZXIgdGhhdCBiZWFyZXRoIHdpdG5lc3Mgb2YgbWU7IGFuZCBJIGtub3cgdGhhdCB0aGUgd2l0bmVzcyB3aGljaCBoZSB3aXRuZXNzZXRoIG9mIG1lIGlzIHRydWUuClllIHNlbnQgdW50byBKb2huLCBhbmQgaGUgYmFyZSB3aXRuZXNzIHVudG8gdGhlIHRydXRoLgpCdXQgSSByZWNlaXZlIG5vdCB0ZXN0aW1vbnkgZnJvbSBtYW46IGJ1dCB0aGVzZSB0aGluZ3MgSSBzYXksIHRoYXQgeWUgbWlnaHQgYmUgc2F2ZWQuCkhlIHdhcyBhIGJ1cm5pbmcgYW5kIGEgc2hpbmluZyBsaWdodDogYW5kIHllIHdlcmUgd2lsbGluZyBmb3IgYSBzZWFzb24gdG8gcmVqb2ljZSBpbiBoaXMgbGlnaHQuCkJ1dCBJIGhhdmUgZ3JlYXRlciB3aXRuZXNzIHRoYW4gdGhhdCBvZiBKb2huOiBmb3IgdGhlIHdvcmtzIHdoaWNoIHRoZSBGYXRoZXIgaGF0aCBnaXZlbiBtZSB0byBmaW5pc2gsIHRoZSBzYW1lIHdvcmtzIHRoYXQgSSBkbywgYmVhciB3aXRuZXNzIG9mIG1lLCB0aGF0IHRoZSBGYXRoZXIgaGF0aCBzZW50IG1lLgpBbmQgdGhlIEZhdGhlciBoaW1zZWxmLCB3aGljaCBoYXRoIHNlbnQgbWUsIGhhdGggYm9ybmUgd2l0bmVzcyBvZiBtZS4gWWUgaGF2ZSBuZWl0aGVyIGhlYXJkIGhpcyB2b2ljZSBhdCBhbnkgdGltZSwgbm9yIHNlZW4gaGlzIHNoYXBlLgpBbmQgeWUgaGF2ZSBub3QgaGlzIHdvcmQgYWJpZGluZyBpbiB5b3U6IGZvciB3aG9tIGhlIGhhdGggc2VudCwgaGltIHllIGJlbGlldmUgbm90LgpTZWFyY2ggdGhlIHNjcmlwdHVyZXM7IGZvciBpbiB0aGVtIHllIHRoaW5rIHllIGhhdmUgZXRlcm5hbCBsaWZlOiBhbmQgdGhleSBhcmUgdGhleSB3aGljaCB0ZXN0aWZ5IG9mIG1lLgpBbmQgeWUgd2lsbCBub3QgY29tZSB0byBtZSwgdGhhdCB5ZSBtaWdodCBoYXZlIGxpZmUuCkkgcmVjZWl2ZSBub3QgaG9ub3VyIGZyb20gbWVuLgpCdXQgSSBrbm93IHlvdSwgdGhhdCB5ZSBoYXZlIG5vdCB0aGUgbG92ZSBvZiBHb2QgaW4geW91LgpJIGFtIGNvbWUgaW4gbXkgRmF0aGVyJ3MgbmFtZSwgYW5kIHllIHJlY2VpdmUgbWUgbm90OiBpZiBhbm90aGVyIHNoYWxsIGNvbWUgaW4gaGlzIG93biBuYW1lLCBoaW0geWUgd2lsbCByZWNlaXZlLgpIb3cgY2FuIHllIGJlbGlldmUsIHdoaWNoIHJlY2VpdmUgaG9ub3VyIG9uZSBvZiBhbm90aGVyLCBhbmQgc2VlayBub3QgdGhlIGhvbm91ciB0aGF0IGNvbWV0aCBmcm9tIEdvZCBvbmx5PwpEbyBub3QgdGhpbmsgdGhhdCBJIHdpbGwgYWNjdXNlIHlvdSB0byB0aGUgRmF0aGVyOiB0aGVyZSBpcyBvbmUgdGhhdCBhY2N1c2V0aCB5b3UsIGV2ZW4gTW9zZXMsIGluIHdob20geWUgdHJ1c3QuCkZvciBoYWQgeWUgYmVsaWV2ZWQgTW9zZXMsIHllIHdvdWxkIGhhdmUgYmVsaWV2ZWQgbWU7IGZvciBoZSB3cm90ZSBvZiBtZS4KQnV0IGlmIHllIGJlbGlldmUgbm90IGhpcyB3cml0aW5ncywgaG93IHNoYWxsIHllIGJlbGlldmUgbXkgd29yZHM/CkFmdGVyIHRoZXNlIHRoaW5ncyBKZXN1cyB3ZW50IG92ZXIgdGhlIHNlYSBvZiBHYWxpbGVlLCB3aGljaCBpcyB0aGUgc2VhIG9mIFRpYmVyaWFzLgpBbmQgYSBncmVhdCBtdWx0aXR1ZGUgZm9sbG93ZWQgaGltLCBiZWNhdXNlIHRoZXkgc2F3IGhpcyBtaXJhY2xlcyB3aGljaCBoZSBkaWQgb24gdGhlbSB0aGF0IHdlcmUgZGlzZWFzZWQuCkFuZCBKZXN1cyB3ZW50IHVwIGludG8gYSBtb3VudGFpbiwgYW5kIHRoZXJlIGhlIHNhdCB3aXRoIGhpcyBkaXNjaXBsZXMuCkFuZCB0aGUgcGFzc292ZXIsIGEgZmVhc3Qgb2YgdGhlIEpld3MsIHdhcyBuaWdoLgpXaGVuIEplc3VzIHRoZW4gbGlmdGVkIHVwIGhpcyBleWVzLCBhbmQgc2F3IGEgZ3JlYXQgY29tcGFueSBjb21lIHVudG8gaGltLCBoZSBzYWl0aCB1bnRvIFBoaWxpcCwgV2hlbmNlIHNoYWxsIHdlIGJ1eSBicmVhZCwgdGhhdCB0aGVzZSBtYXkgZWF0PwpBbmQgdGhpcyBoZSBzYWlkIHRvIHByb3ZlIGhpbTogZm9yIGhlIGhpbXNlbGYga25ldyB3aGF0IGhlIHdvdWxkIGRvLgpQaGlsaXAgYW5zd2VyZWQgaGltLCBUd28gaHVuZHJlZCBwZW5ueXdvcnRoIG9mIGJyZWFkIGlzIG5vdCBzdWZmaWNpZW50IGZvciB0aGVtLCB0aGF0IGV2ZXJ5IG9uZSBvZiB0aGVtIG1heSB0YWtlIGEgbGl0dGxlLgpPbmUgb2YgaGlzIGRpc2NpcGxlcywgQW5kcmV3LCBTaW1vbiBQZXRlcidzIGJyb3RoZXIsIHNhaXRoIHVudG8gaGltLApUaGVyZSBpcyBhIGxhZCBoZXJlLCB3aGljaCBoYXRoIGZpdmUgYmFybGV5IGxvYXZlcywgYW5kIHR3byBzbWFsbCBmaXNoZXM6IGJ1dCB3aGF0IGFyZSB0aGV5IGFtb25nIHNvIG1hbnk/CkFuZCBKZXN1cyBzYWlkLCBNYWtlIHRoZSBtZW4gc2l0IGRvd24uIE5vdyB0aGVyZSB3YXMgbXVjaCBncmFzcyBpbiB0aGUgcGxhY2UuIFNvIHRoZSBtZW4gc2F0IGRvd24sIGluIG51bWJlciBhYm91dCBmaXZlIHRob3VzYW5kLgpBbmQgSmVzdXMgdG9vayB0aGUgbG9hdmVzOyBhbmQgd2hlbiBoZSBoYWQgZ2l2ZW4gdGhhbmtzLCBoZSBkaXN0cmlidXRlZCB0byB0aGUgZGlzY2lwbGVzLCBhbmQgdGhlIGRpc2NpcGxlcyB0byB0aGVtIHRoYXQgd2VyZSBzZXQgZG93bjsgYW5kIGxpa2V3aXNlIG9mIHRoZSBmaXNoZXMgYXMgbXVjaCBhcyB0aGV5IHdvdWxkLgpXaGVuIHRoZXkgd2VyZSBmaWxsZWQsIGhlIHNhaWQgdW50byBoaXMgZGlzY2lwbGVzLCBHYXRoZXIgdXAgdGhlIGZyYWdtZW50cyB0aGF0IHJlbWFpbiwgdGhhdCBub3RoaW5nIGJlIGxvc3QuClRoZXJlZm9yZSB0aGV5IGdhdGhlcmVkIHRoZW0gdG9nZXRoZXIsIGFuZCBmaWxsZWQgdHdlbHZlIGJhc2tldHMgd2l0aCB0aGUgZnJhZ21lbnRzIG9mIHRoZSBmaXZlIGJhcmxleSBsb2F2ZXMsIHdoaWNoIHJlbWFpbmVkIG92ZXIgYW5kIGFib3ZlIHVudG8gdGhlbSB0aGF0IGhhZCBlYXRlbi4KVGhlbiB0aG9zZSBtZW4sIHdoZW4gdGhleSBoYWQgc2VlbiB0aGUgbWlyYWNsZSB0aGF0IEplc3VzIGRpZCwgc2FpZCwgVGhpcyBpcyBvZiBhIHRydXRoIHRoYXQgcHJvcGhldCB0aGF0IHNob3VsZCBjb21lIGludG8gdGhlIHdvcmxkLgpXaGVuIEplc3VzIHRoZXJlZm9yZSBwZXJjZWl2ZWQgdGhhdCB0aGV5IHdvdWxkIGNvbWUgYW5kIHRha2UgaGltIGJ5IGZvcmNlLCB0byBtYWtlIGhpbSBhIGtpbmcsIGhlIGRlcGFydGVkIGFnYWluIGludG8gYSBtb3VudGFpbiBoaW1zZWxmIGFsb25lLgpBbmQgd2hlbiBldmVuIHdhcyBub3cgY29tZSwgaGlzIGRpc2NpcGxlcyB3ZW50IGRvd24gdW50byB0aGUgc2VhLApBbmQgZW50ZXJlZCBpbnRvIGEgc2hpcCwgYW5kIHdlbnQgb3ZlciB0aGUgc2VhIHRvd2FyZCBDYXBlcm5hdW0uIEFuZCBpdCB3YXMgbm93IGRhcmssIGFuZCBKZXN1cyB3YXMgbm90IGNvbWUgdG8gdGhlbS4KQW5kIHRoZSBzZWEgYXJvc2UgYnkgcmVhc29uIG9mIGEgZ3JlYXQgd2luZCB0aGF0IGJsZXcuClNvIHdoZW4gdGhleSBoYWQgcm93ZWQgYWJvdXQgZml2ZSBhbmQgdHdlbnR5IG9yIHRoaXJ0eSBmdXJsb25ncywgdGhleSBzZWUgSmVzdXMgd2Fsa2luZyBvbiB0aGUgc2VhLCBhbmQgZHJhd2luZyBuaWdoIHVudG8gdGhlIHNoaXA6IGFuZCB0aGV5IHdlcmUgYWZyYWlkLgpCdXQgaGUgc2FpdGggdW50byB0aGVtLCBJdCBpcyBJOyBiZSBub3QgYWZyYWlkLgpUaGVuIHRoZXkgd2lsbGluZ2x5IHJlY2VpdmVkIGhpbSBpbnRvIHRoZSBzaGlwOiBhbmQgaW1tZWRpYXRlbHkgdGhlIHNoaXAgd2FzIGF0IHRoZSBsYW5kIHdoaXRoZXIgdGhleSB3ZW50LgpUaGUgZGF5IGZvbGxvd2luZywgd2hlbiB0aGUgcGVvcGxlIHdoaWNoIHN0b29kIG9uIHRoZSBvdGhlciBzaWRlIG9mIHRoZSBzZWEgc2F3IHRoYXQgdGhlcmUgd2FzIG5vbmUgb3RoZXIgYm9hdCB0aGVyZSwgc2F2ZSB0aGF0IG9uZSB3aGVyZWludG8gaGlzIGRpc2NpcGxlcyB3ZXJlIGVudGVyZWQsIGFuZCB0aGF0IEplc3VzIHdlbnQgbm90IHdpdGggaGlzIGRpc2NpcGxlcyBpbnRvIHRoZSBib2F0LCBidXQgdGhhdCBoaXMgZGlzY2lwbGVzIHdlcmUgZ29uZSBhd2F5IGFsb25lOwooSG93YmVpdCB0aGVyZSBjYW1lIG90aGVyIGJvYXRzIGZyb20gVGliZXJpYXMgbmlnaCB1bnRvIHRoZSBwbGFjZSB3aGVyZSB0aGV5IGRpZCBlYXQgYnJlYWQsIGFmdGVyIHRoYXQgdGhlIExvcmQgaGFkIGdpdmVuIHRoYW5rczopCldoZW4gdGhlIHBlb3BsZSB0aGVyZWZvcmUgc2F3IHRoYXQgSmVzdXMgd2FzIG5vdCB0aGVyZSwgbmVpdGhlciBoaXMgZGlzY2lwbGVzLCB0aGV5IGFsc28gdG9vayBzaGlwcGluZywgYW5kIGNhbWUgdG8gQ2FwZXJuYXVtLCBzZWVraW5nIGZvciBKZXN1cy4KQW5kIHdoZW4gdGhleSBoYWQgZm91bmQgaGltIG9uIHRoZSBvdGhlciBzaWRlIG9mIHRoZSBzZWEsIHRoZXkgc2FpZCB1bnRvIGhpbSwgUmFiYmksIHdoZW4gY2FtZXN0IHRob3UgaGl0aGVyPwpKZXN1cyBhbnN3ZXJlZCB0aGVtIGFuZCBzYWlkLCBWZXJpbHksIHZlcmlseSwgSSBzYXkgdW50byB5b3UsIFllIHNlZWsgbWUsIG5vdCBiZWNhdXNlIHllIHNhdyB0aGUgbWlyYWNsZXMsIGJ1dCBiZWNhdXNlIHllIGRpZCBlYXQgb2YgdGhlIGxvYXZlcywgYW5kIHdlcmUgZmlsbGVkLgpMYWJvdXIgbm90IGZvciB0aGUgbWVhdCB3aGljaCBwZXJpc2hldGgsIGJ1dCBmb3IgdGhhdCBtZWF0IHdoaWNoIGVuZHVyZXRoIHVudG8gZXZlcmxhc3RpbmcgbGlmZSwgd2hpY2ggdGhlIFNvbiBvZiBtYW4gc2hhbGwgZ2l2ZSB1bnRvIHlvdTogZm9yIGhpbSBoYXRoIEdvZCB0aGUgRmF0aGVyIHNlYWxlZC4KVGhlbiBzYWlkIHRoZXkgdW50byBoaW0sIFdoYXQgc2hhbGwgd2UgZG8sIHRoYXQgd2UgbWlnaHQgd29yayB0aGUgd29ya3Mgb2YgR29kPwpKZXN1cyBhbnN3ZXJlZCBhbmQgc2FpZCB1bnRvIHRoZW0sIFRoaXMgaXMgdGhlIHdvcmsgb2YgR29kLCB0aGF0IHllIGJlbGlldmUgb24gaGltIHdob20gaGUgaGF0aCBzZW50LgpUaGV5IHNhaWQgdGhlcmVmb3JlIHVudG8gaGltLCBXaGF0IHNpZ24gc2hld2VzdCB0aG91IHRoZW4sIHRoYXQgd2UgbWF5IHNlZSwgYW5kIGJlbGlldmUgdGhlZT8gd2hhdCBkb3N0IHRob3Ugd29yaz8KT3VyIGZhdGhlcnMgZGlkIGVhdCBtYW5uYSBpbiB0aGUgZGVzZXJ0OyBhcyBpdCBpcyB3cml0dGVuLCBIZSBnYXZlIHRoZW0gYnJlYWQgZnJvbSBoZWF2ZW4gdG8gZWF0LgpUaGVuIEplc3VzIHNhaWQgdW50byB0aGVtLCBWZXJpbHksIHZlcmlseSwgSSBzYXkgdW50byB5b3UsIE1vc2VzIGdhdmUgeW91IG5vdCB0aGF0IGJyZWFkIGZyb20gaGVhdmVuOyBidXQgbXkgRmF0aGVyIGdpdmV0aCB5b3UgdGhlIHRydWUgYnJlYWQgZnJvbSBoZWF2ZW4uCkZvciB0aGUgYnJlYWQgb2YgR29kIGlzIGhlIHdoaWNoIGNvbWV0aCBkb3duIGZyb20gaGVhdmVuLCBhbmQgZ2l2ZXRoIGxpZmUgdW50byB0aGUgd29ybGQuClRoZW4gc2FpZCB0aGV5IHVudG8gaGltLCBMb3JkLCBldmVybW9yZSBnaXZlIHVzIHRoaXMgYnJlYWQuCkFuZCBKZXN1cyBzYWlkIHVudG8gdGhlbSwgSSBhbSB0aGUgYnJlYWQgb2YgbGlmZTogaGUgdGhhdCBjb21ldGggdG8gbWUgc2hhbGwgbmV2ZXIgaHVuZ2VyOyBhbmQgaGUgdGhhdCBiZWxpZXZldGggb24gbWUgc2hhbGwgbmV2ZXIgdGhpcnN0LgpCdXQgSSBzYWlkIHVudG8geW91LCBUaGF0IHllIGFsc28gaGF2ZSBzZWVuIG1lLCBhbmQgYmVsaWV2ZSBub3QuCkFsbCB0aGF0IHRoZSBGYXRoZXIgZ2l2ZXRoIG1lIHNoYWxsIGNvbWUgdG8gbWU7IGFuZCBoaW0gdGhhdCBjb21ldGggdG8gbWUgSSB3aWxsIGluIG5vIHdpc2UgY2FzdCBvdXQuCkZvciBJIGNhbWUgZG93biBmcm9tIGhlYXZlbiwgbm90IHRvIGRvIG1pbmUgb3duIHdpbGwsIGJ1dCB0aGUgd2lsbCBvZiBoaW0gdGhhdCBzZW50IG1lLgpBbmQgdGhpcyBpcyB0aGUgRmF0aGVyJ3Mgd2lsbCB3aGljaCBoYXRoIHNlbnQgbWUsIHRoYXQgb2YgYWxsIHdoaWNoIGhlIGhhdGggZ2l2ZW4gbWUgSSBzaG91bGQgbG9zZSBub3RoaW5nLCBidXQgc2hvdWxkIHJhaXNlIGl0IHVwIGFnYWluIGF0IHRoZSBsYXN0IGRheS4KQW5kIHRoaXMgaXMgdGhlIHdpbGwgb2YgaGltIHRoYXQgc2VudCBtZSwgdGhhdCBldmVyeSBvbmUgd2hpY2ggc2VldGggdGhlIFNvbiwgYW5kIGJlbGlldmV0aCBvbiBoaW0sIG1heSBoYXZlIGV2ZXJsYXN0aW5nIGxpZmU6IGFuZCBJIHdpbGwgcmFpc2UgaGltIHVwIGF0IHRoZSBsYXN0IGRheS4KVGhlIEpld3MgdGhlbiBtdXJtdXJlZCBhdCBoaW0sIGJlY2F1c2UgaGUgc2FpZCwgSSBhbSB0aGUgYnJlYWQgd2hpY2ggY2FtZSBkb3duIGZyb20gaGVhdmVuLgpBbmQgdGhleSBzYWlkLCBJcyBub3QgdGhpcyBKZXN1cywgdGhlIHNvbiBvZiBKb3NlcGgsIHdob3NlIGZhdGhlciBhbmQgbW90aGVyIHdlIGtub3c/IGhvdyBpcyBpdCB0aGVuIHRoYXQgaGUgc2FpdGgsIEkgY2FtZSBkb3duIGZyb20gaGVhdmVuPwpKZXN1cyB0aGVyZWZvcmUgYW5zd2VyZWQgYW5kIHNhaWQgdW50byB0aGVtLCBNdXJtdXIgbm90IGFtb25nIHlvdXJzZWx2ZXMuCk5vIG1hbiBjYW4gY29tZSB0byBtZSwgZXhjZXB0IHRoZSBGYXRoZXIgd2hpY2ggaGF0aCBzZW50IG1lIGRyYXcgaGltOiBhbmQgSSB3aWxsIHJhaXNlIGhpbSB1cCBhdCB0aGUgbGFzdCBkYXkuCkl0IGlzIHdyaXR0ZW4gaW4gdGhlIHByb3BoZXRzLCBBbmQgdGhleSBzaGFsbCBiZSBhbGwgdGF1Z2h0IG9mIEdvZC4gRXZlcnkgbWFuIHRoZXJlZm9yZSB0aGF0IGhhdGggaGVhcmQsIGFuZCBoYXRoIGxlYXJuZWQgb2YgdGhlIEZhdGhlciwgY29tZXRoIHVudG8gbWUuCk5vdCB0aGF0IGFueSBtYW4gaGF0aCBzZWVuIHRoZSBGYXRoZXIsIHNhdmUgaGUgd2hpY2ggaXMgb2YgR29kLCBoZSBoYXRoIHNlZW4gdGhlIEZhdGhlci4KVmVyaWx5LCB2ZXJpbHksIEkgc2F5IHVudG8geW91LCBIZSB0aGF0IGJlbGlldmV0aCBvbiBtZSBoYXRoIGV2ZXJsYXN0aW5nIGxpZmUuCkkgYW0gdGhhdCBicmVhZCBvZiBsaWZlLgpZb3VyIGZhdGhlcnMgZGlkIGVhdCBtYW5uYSBpbiB0aGUgd2lsZGVybmVzcywgYW5kIGFyZSBkZWFkLgpUaGlzIGlzIHRoZSBicmVhZCB3aGljaCBjb21ldGggZG93biBmcm9tIGhlYXZlbiwgdGhhdCBhIG1hbiBtYXkgZWF0IHRoZXJlb2YsIGFuZCBub3QgZGllLgpJIGFtIHRoZSBsaXZpbmcgYnJlYWQgd2hpY2ggY2FtZSBkb3duIGZyb20gaGVhdmVuOiBpZiBhbnkgbWFuIGVhdCBvZiB0aGlzIGJyZWFkLCBoZSBzaGFsbCBsaXZlIGZvciBldmVyOiBhbmQgdGhlIGJyZWFkIHRoYXQgSSB3aWxsIGdpdmUgaXMgbXkgZmxlc2gsIHdoaWNoIEkgd2lsbCBnaXZlIGZvciB0aGUgbGlmZSBvZiB0aGUgd29ybGQuClRoZSBKZXdzIHRoZXJlZm9yZSBzdHJvdmUgYW1vbmcgdGhlbXNlbHZlcywgc2F5aW5nLCBIb3cgY2FuIHRoaXMgbWFuIGdpdmUgdXMgaGlzIGZsZXNoIHRvIGVhdD8KVGhlbiBKZXN1cyBzYWlkIHVudG8gdGhlbSwgVmVyaWx5LCB2ZXJpbHksIEkgc2F5IHVudG8geW91LCBFeGNlcHQgeWUgZWF0IHRoZSBmbGVzaCBvZiB0aGUgU29uIG9mIG1hbiwgYW5kIGRyaW5rIGhpcyBibG9vZCwgeWUgaGF2ZSBubyBsaWZlIGluIHlvdS4KV2hvc28gZWF0ZXRoIG15IGZsZXNoLCBhbmQgZHJpbmtldGggbXkgYmxvb2QsIGhhdGggZXRlcm5hbCBsaWZlOyBhbmQgSSB3aWxsIHJhaXNlIGhpbSB1cCBhdCB0aGUgbGFzdCBkYXkuCkZvciBteSBmbGVzaCBpcyBtZWF0IGluZGVlZCwgYW5kIG15IGJsb29kIGlzIGRyaW5rIGluZGVlZC4KSGUgdGhhdCBlYXRldGggbXkgZmxlc2gsIGFuZCBkcmlua2V0aCBteSBibG9vZCwgZHdlbGxldGggaW4gbWUsIGFuZCBJIGluIGhpbS4KQXMgdGhlIGxpdmluZyBGYXRoZXIgaGF0aCBzZW50IG1lLCBhbmQgSSBsaXZlIGJ5IHRoZSBGYXRoZXI6IHNvIGhlIHRoYXQgZWF0ZXRoIG1lLCBldmVuIGhlIHNoYWxsIGxpdmUgYnkgbWUuClRoaXMgaXMgdGhhdCBicmVhZCB3aGljaCBjYW1lIGRvd24gZnJvbSBoZWF2ZW46IG5vdCBhcyB5b3VyIGZhdGhlcnMgZGlkIGVhdCBtYW5uYSwgYW5kIGFyZSBkZWFkOiBoZSB0aGF0IGVhdGV0aCBvZiB0aGlzIGJyZWFkIHNoYWxsIGxpdmUgZm9yIGV2ZXIuClRoZXNlIHRoaW5ncyBzYWlkIGhlIGluIHRoZSBzeW5hZ29ndWUsIGFzIGhlIHRhdWdodCBpbiBDYXBlcm5hdW0uCk1hbnkgdGhlcmVmb3JlIG9mIGhpcyBkaXNjaXBsZXMsIHdoZW4gdGhleSBoYWQgaGVhcmQgdGhpcywgc2FpZCwgVGhpcyBpcyBhbiBoYXJkIHNheWluZzsgd2hvIGNhbiBoZWFyIGl0PwpXaGVuIEplc3VzIGtuZXcgaW4gaGltc2VsZiB0aGF0IGhpcyBkaXNjaXBsZXMgbXVybXVyZWQgYXQgaXQsIGhlIHNhaWQgdW50byB0aGVtLCBEb3RoIHRoaXMgb2ZmZW5kIHlvdT8KV2hhdCBhbmQgaWYgeWUgc2hhbGwgc2VlIHRoZSBTb24gb2YgbWFuIGFzY2VuZCB1cCB3aGVyZSBoZSB3YXMgYmVmb3JlPwpJdCBpcyB0aGUgc3Bpcml0IHRoYXQgcXVpY2tlbmV0aDsgdGhlIGZsZXNoIHByb2ZpdGV0aCBub3RoaW5nOiB0aGUgd29yZHMgdGhhdCBJIHNwZWFrIHVudG8geW91LCB0aGV5IGFyZSBzcGlyaXQsIGFuZCB0aGV5IGFyZSBsaWZlLgpCdXQgdGhlcmUgYXJlIHNvbWUgb2YgeW91IHRoYXQgYmVsaWV2ZSBub3QuIEZvciBKZXN1cyBrbmV3IGZyb20gdGhlIGJlZ2lubmluZyB3aG8gdGhleSB3ZXJlIHRoYXQgYmVsaWV2ZWQgbm90LCBhbmQgd2hvIHNob3VsZCBiZXRyYXkgaGltLgpBbmQgaGUgc2FpZCwgVGhlcmVmb3JlIHNhaWQgSSB1bnRvIHlvdSwgdGhhdCBubyBtYW4gY2FuIGNvbWUgdW50byBtZSwgZXhjZXB0IGl0IHdlcmUgZ2l2ZW4gdW50byBoaW0gb2YgbXkgRmF0aGVyLgpGcm9tIHRoYXQgdGltZSBtYW55IG9mIGhpcyBkaXNjaXBsZXMgd2VudCBiYWNrLCBhbmQgd2Fsa2VkIG5vIG1vcmUgd2l0aCBoaW0uClRoZW4gc2FpZCBKZXN1cyB1bnRvIHRoZSB0d2VsdmUsIFdpbGwgeWUgYWxzbyBnbyBhd2F5PwpUaGVuIFNpbW9uIFBldGVyIGFuc3dlcmVkIGhpbSwgTG9yZCwgdG8gd2hvbSBzaGFsbCB3ZSBnbz8gdGhvdSBoYXN0IHRoZSB3b3JkcyBvZiBldGVybmFsIGxpZmUuCkFuZCB3ZSBiZWxpZXZlIGFuZCBhcmUgc3VyZSB0aGF0IHRob3UgYXJ0IHRoYXQgQ2hyaXN0LCB0aGUgU29uIG9mIHRoZSBsaXZpbmcgR29kLgpKZXN1cyBhbnN3ZXJlZCB0aGVtLCBIYXZlIG5vdCBJIGNob3NlbiB5b3UgdHdlbHZlLCBhbmQgb25lIG9mIHlvdSBpcyBhIGRldmlsPwpIZSBzcGFrZSBvZiBKdWRhcyBJc2NhcmlvdCB0aGUgc29uIG9mIFNpbW9uOiBmb3IgaGUgaXQgd2FzIHRoYXQgc2hvdWxkIGJldHJheSBoaW0sIGJlaW5nIG9uZSBvZiB0aGUgdHdlbHZlLgpBZnRlciB0aGVzZSB0aGluZ3MgSmVzdXMgd2Fsa2VkIGluIEdhbGlsZWU6IGZvciBoZSB3b3VsZCBub3Qgd2FsayBpbiBKZXdyeSwgYmVjYXVzZSB0aGUgSmV3cyBzb3VnaHQgdG8ga2lsbCBoaW0uCk5vdyB0aGUgSmV3J3MgZmVhc3Qgb2YgdGFiZXJuYWNsZXMgd2FzIGF0IGhhbmQuCkhpcyBicmV0aHJlbiB0aGVyZWZvcmUgc2FpZCB1bnRvIGhpbSwgRGVwYXJ0IGhlbmNlLCBhbmQgZ28gaW50byBKdWRhZWEsIHRoYXQgdGh5IGRpc2NpcGxlcyBhbHNvIG1heSBzZWUgdGhlIHdvcmtzIHRoYXQgdGhvdSBkb2VzdC4KRm9yIHRoZXJlIGlzIG5vIG1hbiB0aGF0IGRvZXRoIGFueSB0aGluZyBpbiBzZWNyZXQsIGFuZCBoZSBoaW1zZWxmIHNlZWtldGggdG8gYmUga25vd24gb3Blbmx5LiBJZiB0aG91IGRvIHRoZXNlIHRoaW5ncywgc2hldyB0aHlzZWxmIHRvIHRoZSB3b3JsZC4KRm9yIG5laXRoZXIgZGlkIGhpcyBicmV0aHJlbiBiZWxpZXZlIGluIGhpbS4KVGhlbiBKZXN1cyBzYWlkIHVudG8gdGhlbSwgTXkgdGltZSBpcyBub3QgeWV0IGNvbWU6IGJ1dCB5b3VyIHRpbWUgaXMgYWx3YXkgcmVhZHkuClRoZSB3b3JsZCBjYW5ub3QgaGF0ZSB5b3U7IGJ1dCBtZSBpdCBoYXRldGgsIGJlY2F1c2UgSSB0ZXN0aWZ5IG9mIGl0LCB0aGF0IHRoZSB3b3JrcyB0aGVyZW9mIGFyZSBldmlsLgpHbyB5ZSB1cCB1bnRvIHRoaXMgZmVhc3Q6IEkgZ28gbm90IHVwIHlldCB1bnRvIHRoaXMgZmVhc3Q6IGZvciBteSB0aW1lIGlzIG5vdCB5ZXQgZnVsbCBjb21lLgpXaGVuIGhlIGhhZCBzYWlkIHRoZXNlIHdvcmRzIHVudG8gdGhlbSwgaGUgYWJvZGUgc3RpbGwgaW4gR2FsaWxlZS4KQnV0IHdoZW4gaGlzIGJyZXRocmVuIHdlcmUgZ29uZSB1cCwgdGhlbiB3ZW50IGhlIGFsc28gdXAgdW50byB0aGUgZmVhc3QsIG5vdCBvcGVubHksIGJ1dCBhcyBpdCB3ZXJlIGluIHNlY3JldC4KVGhlbiB0aGUgSmV3cyBzb3VnaHQgaGltIGF0IHRoZSBmZWFzdCwgYW5kIHNhaWQsIFdoZXJlIGlzIGhlPwpBbmQgdGhlcmUgd2FzIG11Y2ggbXVybXVyaW5nIGFtb25nIHRoZSBwZW9wbGUgY29uY2VybmluZyBoaW06IGZvciBzb21lIHNhaWQsIEhlIGlzIGEgZ29vZCBtYW46IG90aGVycyBzYWlkLCBOYXk7IGJ1dCBoZSBkZWNlaXZldGggdGhlIHBlb3BsZS4KSG93YmVpdCBubyBtYW4gc3Bha2Ugb3Blbmx5IG9mIGhpbSBmb3IgZmVhciBvZiB0aGUgSmV3cy4KTm93IGFib3V0IHRoZSBtaWRzdCBvZiB0aGUgZmVhc3QgSmVzdXMgd2VudCB1cCBpbnRvIHRoZSB0ZW1wbGUsIGFuZCB0YXVnaHQuCkFuZCB0aGUgSmV3cyBtYXJ2ZWxsZWQsIHNheWluZywgSG93IGtub3dldGggdGhpcyBtYW4gbGV0dGVycywgaGF2aW5nIG5ldmVyIGxlYXJuZWQ/Ckplc3VzIGFuc3dlcmVkIHRoZW0sIGFuZCBzYWlkLCBNeSBkb2N0cmluZSBpcyBub3QgbWluZSwgYnV0IGhpcyB0aGF0IHNlbnQgbWUuCklmIGFueSBtYW4gd2lsbCBkbyBoaXMgd2lsbCwgaGUgc2hhbGwga25vdyBvZiB0aGUgZG9jdHJpbmUsIHdoZXRoZXIgaXQgYmUgb2YgR29kLCBvciB3aGV0aGVyIEkgc3BlYWsgb2YgbXlzZWxmLgpIZSB0aGF0IHNwZWFrZXRoIG9mIGhpbXNlbGYgc2Vla2V0aCBoaXMgb3duIGdsb3J5OiBidXQgaGUgdGhhdCBzZWVrZXRoIGhpcyBnbG9yeSB0aGF0IHNlbnQgaGltLCB0aGUgc2FtZSBpcyB0cnVlLCBhbmQgbm8gdW5yaWdodGVvdXNuZXNzIGlzIGluIGhpbS4KRGlkIG5vdCBNb3NlcyBnaXZlIHlvdSB0aGUgbGF3LCBhbmQgeWV0IG5vbmUgb2YgeW91IGtlZXBldGggdGhlIGxhdz8gV2h5IGdvIHllIGFib3V0IHRvIGtpbGwgbWU/ClRoZSBwZW9wbGUgYW5zd2VyZWQgYW5kIHNhaWQsIFRob3UgaGFzdCBhIGRldmlsOiB3aG8gZ29ldGggYWJvdXQgdG8ga2lsbCB0aGVlPwpKZXN1cyBhbnN3ZXJlZCBhbmQgc2FpZCB1bnRvIHRoZW0sIEkgaGF2ZSBkb25lIG9uZSB3b3JrLCBhbmQgeWUgYWxsIG1hcnZlbC4KTW9zZXMgdGhlcmVmb3JlIGdhdmUgdW50byB5b3UgY2lyY3VtY2lzaW9uOyAobm90IGJlY2F1c2UgaXQgaXMgb2YgTW9zZXMsIGJ1dCBvZiB0aGUgZmF0aGVyczspIGFuZCB5ZSBvbiB0aGUgc2FiYmF0aCBkYXkgY2lyY3VtY2lzZSBhIG1hbi4KSWYgYSBtYW4gb24gdGhlIHNhYmJhdGggZGF5IHJlY2VpdmUgY2lyY3VtY2lzaW9uLCB0aGF0IHRoZSBsYXcgb2YgTW9zZXMgc2hvdWxkIG5vdCBiZSBicm9rZW47IGFyZSB5ZSBhbmdyeSBhdCBtZSwgYmVjYXVzZSBJIGhhdmUgbWFkZSBhIG1hbiBldmVyeSB3aGl0IHdob2xlIG9uIHRoZSBzYWJiYXRoIGRheT8KSnVkZ2Ugbm90IGFjY29yZGluZyB0byB0aGUgYXBwZWFyYW5jZSwgYnV0IGp1ZGdlIHJpZ2h0ZW91cyBqdWRnbWVudC4KVGhlbiBzYWlkIHNvbWUgb2YgdGhlbSBvZiBKZXJ1c2FsZW0sIElzIG5vdCB0aGlzIGhlLCB3aG9tIHRoZXkgc2VlayB0byBraWxsPwpCdXQsIGxvLCBoZSBzcGVha2V0aCBib2xkbHksIGFuZCB0aGV5IHNheSBub3RoaW5nIHVudG8gaGltLiBEbyB0aGUgcnVsZXJzIGtub3cgaW5kZWVkIHRoYXQgdGhpcyBpcyB0aGUgdmVyeSBDaHJpc3Q/Ckhvd2JlaXQgd2Uga25vdyB0aGlzIG1hbiB3aGVuY2UgaGUgaXM6IGJ1dCB3aGVuIENocmlzdCBjb21ldGgsIG5vIG1hbiBrbm93ZXRoIHdoZW5jZSBoZSBpcy4KVGhlbiBjcmllZCBKZXN1cyBpbiB0aGUgdGVtcGxlIGFzIGhlIHRhdWdodCwgc2F5aW5nLCBZZSBib3RoIGtub3cgbWUsIGFuZCB5ZSBrbm93IHdoZW5jZSBJIGFtOiBhbmQgSSBhbSBub3QgY29tZSBvZiBteXNlbGYsIGJ1dCBoZSB0aGF0IHNlbnQgbWUgaXMgdHJ1ZSwgd2hvbSB5ZSBrbm93IG5vdC4KQnV0IEkga25vdyBoaW06IGZvciBJIGFtIGZyb20gaGltLCBhbmQgaGUgaGF0aCBzZW50IG1lLgpUaGVuIHRoZXkgc291Z2h0IHRvIHRha2UgaGltOiBidXQgbm8gbWFuIGxhaWQgaGFuZHMgb24gaGltLCBiZWNhdXNlIGhpcyBob3VyIHdhcyBub3QgeWV0IGNvbWUuCkFuZCBtYW55IG9mIHRoZSBwZW9wbGUgYmVsaWV2ZWQgb24gaGltLCBhbmQgc2FpZCwgV2hlbiBDaHJpc3QgY29tZXRoLCB3aWxsIGhlIGRvIG1vcmUgbWlyYWNsZXMgdGhhbiB0aGVzZSB3aGljaCB0aGlzIG1hbiBoYXRoIGRvbmU/ClRoZSBQaGFyaXNlZXMgaGVhcmQgdGhhdCB0aGUgcGVvcGxlIG11cm11cmVkIHN1Y2ggdGhpbmdzIGNvbmNlcm5pbmcgaGltOyBhbmQgdGhlIFBoYXJpc2VlcyBhbmQgdGhlIGNoaWVmIHByaWVzdHMgc2VudCBvZmZpY2VycyB0byB0YWtlIGhpbS4KVGhlbiBzYWlkIEplc3VzIHVudG8gdGhlbSwgWWV0IGEgbGl0dGxlIHdoaWxlIGFtIEkgd2l0aCB5b3UsIGFuZCB0aGVuIEkgZ28gdW50byBoaW0gdGhhdCBzZW50IG1lLgpZZSBzaGFsbCBzZWVrIG1lLCBhbmQgc2hhbGwgbm90IGZpbmQgbWU6IGFuZCB3aGVyZSBJIGFtLCB0aGl0aGVyIHllIGNhbm5vdCBjb21lLgpUaGVuIHNhaWQgdGhlIEpld3MgYW1vbmcgdGhlbXNlbHZlcywgV2hpdGhlciB3aWxsIGhlIGdvLCB0aGF0IHdlIHNoYWxsIG5vdCBmaW5kIGhpbT8gd2lsbCBoZSBnbyB1bnRvIHRoZSBkaXNwZXJzZWQgYW1vbmcgdGhlIEdlbnRpbGVzLCBhbmQgdGVhY2ggdGhlIEdlbnRpbGVzPwpXaGF0IG1hbm5lciBvZiBzYXlpbmcgaXMgdGhpcyB0aGF0IGhlIHNhaWQsIFllIHNoYWxsIHNlZWsgbWUsIGFuZCBzaGFsbCBub3QgZmluZCBtZTogYW5kIHdoZXJlIEkgYW0sIHRoaXRoZXIgeWUgY2Fubm90IGNvbWU/CkluIHRoZSBsYXN0IGRheSwgdGhhdCBncmVhdCBkYXkgb2YgdGhlIGZlYXN0LCBKZXN1cyBzdG9vZCBhbmQgY3JpZWQsIHNheWluZywgSWYgYW55IG1hbiB0aGlyc3QsIGxldCBoaW0gY29tZSB1bnRvIG1lLCBhbmQgZHJpbmsuCkhlIHRoYXQgYmVsaWV2ZXRoIG9uIG1lLCBhcyB0aGUgc2NyaXB0dXJlIGhhdGggc2FpZCwgb3V0IG9mIGhpcyBiZWxseSBzaGFsbCBmbG93IHJpdmVycyBvZiBsaXZpbmcgd2F0ZXIuCihCdXQgdGhpcyBzcGFrZSBoZSBvZiB0aGUgU3Bpcml0LCB3aGljaCB0aGV5IHRoYXQgYmVsaWV2ZSBvbiBoaW0gc2hvdWxkIHJlY2VpdmU6IGZvciB0aGUgSG9seSBHaG9zdCB3YXMgbm90IHlldCBnaXZlbjsgYmVjYXVzZSB0aGF0IEplc3VzIHdhcyBub3QgeWV0IGdsb3JpZmllZC4pCk1hbnkgb2YgdGhlIHBlb3BsZSB0aGVyZWZvcmUsIHdoZW4gdGhleSBoZWFyZCB0aGlzIHNheWluZywgc2FpZCwgT2YgYSB0cnV0aCB0aGlzIGlzIHRoZSBQcm9waGV0LgpPdGhlcnMgc2FpZCwgVGhpcyBpcyB0aGUgQ2hyaXN0LiBCdXQgc29tZSBzYWlkLCBTaGFsbCBDaHJpc3QgY29tZSBvdXQgb2YgR2FsaWxlZT8KSGF0aCBub3QgdGhlIHNjcmlwdHVyZSBzYWlkLCBUaGF0IENocmlzdCBjb21ldGggb2YgdGhlIHNlZWQgb2YgRGF2aWQsIGFuZCBvdXQgb2YgdGhlIHRvd24gb2YgQmV0aGxlaGVtLCB3aGVyZSBEYXZpZCB3YXM/ClNvIHRoZXJlIHdhcyBhIGRpdmlzaW9uIGFtb25nIHRoZSBwZW9wbGUgYmVjYXVzZSBvZiBoaW0uCkFuZCBzb21lIG9mIHRoZW0gd291bGQgaGF2ZSB0YWtlbiBoaW07IGJ1dCBubyBtYW4gbGFpZCBoYW5kcyBvbiBoaW0uClRoZW4gY2FtZSB0aGUgb2ZmaWNlcnMgdG8gdGhlIGNoaWVmIHByaWVzdHMgYW5kIFBoYXJpc2VlczsgYW5kIHRoZXkgc2FpZCB1bnRvIHRoZW0sIFdoeSBoYXZlIHllIG5vdCBicm91Z2h0IGhpbT8KVGhlIG9mZmljZXJzIGFuc3dlcmVkLCBOZXZlciBtYW4gc3Bha2UgbGlrZSB0aGlzIG1hbi4KVGhlbiBhbnN3ZXJlZCB0aGVtIHRoZSBQaGFyaXNlZXMsIEFyZSB5ZSBhbHNvIGRlY2VpdmVkPwpIYXZlIGFueSBvZiB0aGUgcnVsZXJzIG9yIG9mIHRoZSBQaGFyaXNlZXMgYmVsaWV2ZWQgb24gaGltPwpCdXQgdGhpcyBwZW9wbGUgd2hvIGtub3dldGggbm90IHRoZSBsYXcgYXJlIGN1cnNlZC4KTmljb2RlbXVzIHNhaXRoIHVudG8gdGhlbSwgKGhlIHRoYXQgY2FtZSB0byBKZXN1cyBieSBuaWdodCwgYmVpbmcgb25lIG9mIHRoZW0sKQpEb3RoIG91ciBsYXcganVkZ2UgYW55IG1hbiwgYmVmb3JlIGl0IGhlYXIgaGltLCBhbmQga25vdyB3aGF0IGhlIGRvZXRoPwpUaGV5IGFuc3dlcmVkIGFuZCBzYWlkIHVudG8gaGltLCBBcnQgdGhvdSBhbHNvIG9mIEdhbGlsZWU/IFNlYXJjaCwgYW5kIGxvb2s6IGZvciBvdXQgb2YgR2FsaWxlZSBhcmlzZXRoIG5vIHByb3BoZXQuCkFuZCBldmVyeSBtYW4gd2VudCB1bnRvIGhpcyBvd24gaG91c2UuCkplc3VzIHdlbnQgdW50byB0aGUgbW91bnQgb2YgT2xpdmVzLgpBbmQgZWFybHkgaW4gdGhlIG1vcm5pbmcgaGUgY2FtZSBhZ2FpbiBpbnRvIHRoZSB0ZW1wbGUsIGFuZCBhbGwgdGhlIHBlb3BsZSBjYW1lIHVudG8gaGltOyBhbmQgaGUgc2F0IGRvd24sIGFuZCB0YXVnaHQgdGhlbS4KQW5kIHRoZSBzY3JpYmVzIGFuZCBQaGFyaXNlZXMgYnJvdWdodCB1bnRvIGhpbSBhIHdvbWFuIHRha2VuIGluIGFkdWx0ZXJ5OyBhbmQgd2hlbiB0aGV5IGhhZCBzZXQgaGVyIGluIHRoZSBtaWRzdCwKVGhleSBzYXkgdW50byBoaW0sIE1hc3RlciwgdGhpcyB3b21hbiB3YXMgdGFrZW4gaW4gYWR1bHRlcnksIGluIHRoZSB2ZXJ5IGFjdC4KTm93IE1vc2VzIGluIHRoZSBsYXcgY29tbWFuZGVkIHVzLCB0aGF0IHN1Y2ggc2hvdWxkIGJlIHN0b25lZDogYnV0IHdoYXQgc2F5ZXN0IHRob3U/ClRoaXMgdGhleSBzYWlkLCB0ZW1wdGluZyBoaW0sIHRoYXQgdGhleSBtaWdodCBoYXZlIHRvIGFjY3VzZSBoaW0uIEJ1dCBKZXN1cyBzdG9vcGVkIGRvd24sIGFuZCB3aXRoIGhpcyBmaW5nZXIgd3JvdGUgb24gdGhlIGdyb3VuZCwgYXMgdGhvdWdoIGhlIGhlYXJkIHRoZW0gbm90LgpTbyB3aGVuIHRoZXkgY29udGludWVkIGFza2luZyBoaW0sIGhlIGxpZnRlZCB1cCBoaW1zZWxmLCBhbmQgc2FpZCB1bnRvIHRoZW0sIEhlIHRoYXQgaXMgd2l0aG91dCBzaW4gYW1vbmcgeW91LCBsZXQgaGltIGZpcnN0IGNhc3QgYSBzdG9uZSBhdCBoZXIuCkFuZCBhZ2FpbiBoZSBzdG9vcGVkIGRvd24sIGFuZCB3cm90ZSBvbiB0aGUgZ3JvdW5kLgpBbmQgdGhleSB3aGljaCBoZWFyZCBpdCwgYmVpbmcgY29udmljdGVkIGJ5IHRoZWlyIG93biBjb25zY2llbmNlLCB3ZW50IG91dCBvbmUgYnkgb25lLCBiZWdpbm5pbmcgYXQgdGhlIGVsZGVzdCwgZXZlbiB1bnRvIHRoZSBsYXN0OiBhbmQgSmVzdXMgd2FzIGxlZnQgYWxvbmUsIGFuZCB0aGUgd29tYW4gc3RhbmRpbmcgaW4gdGhlIG1pZHN0LgpXaGVuIEplc3VzIGhhZCBsaWZ0ZWQgdXAgaGltc2VsZiwgYW5kIHNhdyBub25lIGJ1dCB0aGUgd29tYW4sIGhlIHNhaWQgdW50byBoZXIsIFdvbWFuLCB3aGVyZSBhcmUgdGhvc2UgdGhpbmUgYWNjdXNlcnM/IGhhdGggbm8gbWFuIGNvbmRlbW5lZCB0aGVlPwpTaGUgc2FpZCwgTm8gbWFuLCBMb3JkLiBBbmQgSmVzdXMgc2FpZCB1bnRvIGhlciwgTmVpdGhlciBkbyBJIGNvbmRlbW4gdGhlZTogZ28sIGFuZCBzaW4gbm8gbW9yZS4KVGhlbiBzcGFrZSBKZXN1cyBhZ2FpbiB1bnRvIHRoZW0sIHNheWluZywgSSBhbSB0aGUgbGlnaHQgb2YgdGhlIHdvcmxkOiBoZSB0aGF0IGZvbGxvd2V0aCBtZSBzaGFsbCBub3Qgd2FsayBpbiBkYXJrbmVzcywgYnV0IHNoYWxsIGhhdmUgdGhlIGxpZ2h0IG9mIGxpZmUuClRoZSBQaGFyaXNlZXMgdGhlcmVmb3JlIHNhaWQgdW50byBoaW0sIFRob3UgYmVhcmVzdCByZWNvcmQgb2YgdGh5c2VsZjsgdGh5IHJlY29yZCBpcyBub3QgdHJ1ZS4KSmVzdXMgYW5zd2VyZWQgYW5kIHNhaWQgdW50byB0aGVtLCBUaG91Z2ggSSBiZWFyIHJlY29yZCBvZiBteXNlbGYsIHlldCBteSByZWNvcmQgaXMgdHJ1ZTogZm9yIEkga25vdyB3aGVuY2UgSSBjYW1lLCBhbmQgd2hpdGhlciBJIGdvOyBidXQgeWUgY2Fubm90IHRlbGwgd2hlbmNlIEkgY29tZSwgYW5kIHdoaXRoZXIgSSBnby4KWWUganVkZ2UgYWZ0ZXIgdGhlIGZsZXNoOyBJIGp1ZGdlIG5vIG1hbi4KQW5kIHlldCBpZiBJIGp1ZGdlLCBteSBqdWRnbWVudCBpcyB0cnVlOiBmb3IgSSBhbSBub3QgYWxvbmUsIGJ1dCBJIGFuZCB0aGUgRmF0aGVyIHRoYXQgc2VudCBtZS4KSXQgaXMgYWxzbyB3cml0dGVuIGluIHlvdXIgbGF3LCB0aGF0IHRoZSB0ZXN0aW1vbnkgb2YgdHdvIG1lbiBpcyB0cnVlLgpJIGFtIG9uZSB0aGF0IGJlYXIgd2l0bmVzcyBvZiBteXNlbGYsIGFuZCB0aGUgRmF0aGVyIHRoYXQgc2VudCBtZSBiZWFyZXRoIHdpdG5lc3Mgb2YgbWUuClRoZW4gc2FpZCB0aGV5IHVudG8gaGltLCBXaGVyZSBpcyB0aHkgRmF0aGVyPyBKZXN1cyBhbnN3ZXJlZCwgWWUgbmVpdGhlciBrbm93IG1lLCBub3IgbXkgRmF0aGVyOiBpZiB5ZSBoYWQga25vd24gbWUsIHllIHNob3VsZCBoYXZlIGtub3duIG15IEZhdGhlciBhbHNvLgpUaGVzZSB3b3JkcyBzcGFrZSBKZXN1cyBpbiB0aGUgdHJlYXN1cnksIGFzIGhlIHRhdWdodCBpbiB0aGUgdGVtcGxlOiBhbmQgbm8gbWFuIGxhaWQgaGFuZHMgb24gaGltOyBmb3IgaGlzIGhvdXIgd2FzIG5vdCB5ZXQgY29tZS4KVGhlbiBzYWlkIEplc3VzIGFnYWluIHVudG8gdGhlbSwgSSBnbyBteSB3YXksIGFuZCB5ZSBzaGFsbCBzZWVrIG1lLCBhbmQgc2hhbGwgZGllIGluIHlvdXIgc2luczogd2hpdGhlciBJIGdvLCB5ZSBjYW5ub3QgY29tZS4KVGhlbiBzYWlkIHRoZSBKZXdzLCBXaWxsIGhlIGtpbGwgaGltc2VsZj8gYmVjYXVzZSBoZSBzYWl0aCwgV2hpdGhlciBJIGdvLCB5ZSBjYW5ub3QgY29tZS4KQW5kIGhlIHNhaWQgdW50byB0aGVtLCBZZSBhcmUgZnJvbSBiZW5lYXRoOyBJIGFtIGZyb20gYWJvdmU6IHllIGFyZSBvZiB0aGlzIHdvcmxkOyBJIGFtIG5vdCBvZiB0aGlzIHdvcmxkLgpJIHNhaWQgdGhlcmVmb3JlIHVudG8geW91LCB0aGF0IHllIHNoYWxsIGRpZSBpbiB5b3VyIHNpbnM6IGZvciBpZiB5ZSBiZWxpZXZlIG5vdCB0aGF0IEkgYW0gaGUsIHllIHNoYWxsIGRpZSBpbiB5b3VyIHNpbnMuClRoZW4gc2FpZCB0aGV5IHVudG8gaGltLCBXaG8gYXJ0IHRob3U/IEFuZCBKZXN1cyBzYWl0aCB1bnRvIHRoZW0sIEV2ZW4gdGhlIHNhbWUgdGhhdCBJIHNhaWQgdW50byB5b3UgZnJvbSB0aGUgYmVnaW5uaW5nLgpJIGhhdmUgbWFueSB0aGluZ3MgdG8gc2F5IGFuZCB0byBqdWRnZSBvZiB5b3U6IGJ1dCBoZSB0aGF0IHNlbnQgbWUgaXMgdHJ1ZTsgYW5kIEkgc3BlYWsgdG8gdGhlIHdvcmxkIHRob3NlIHRoaW5ncyB3aGljaCBJIGhhdmUgaGVhcmQgb2YgaGltLgpUaGV5IHVuZGVyc3Rvb2Qgbm90IHRoYXQgaGUgc3Bha2UgdG8gdGhlbSBvZiB0aGUgRmF0aGVyLgpUaGVuIHNhaWQgSmVzdXMgdW50byB0aGVtLCBXaGVuIHllIGhhdmUgbGlmdGVkIHVwIHRoZSBTb24gb2YgbWFuLCB0aGVuIHNoYWxsIHllIGtub3cgdGhhdCBJIGFtIGhlLCBhbmQgdGhhdCBJIGRvIG5vdGhpbmcgb2YgbXlzZWxmOyBidXQgYXMgbXkgRmF0aGVyIGhhdGggdGF1Z2h0IG1lLCBJIHNwZWFrIHRoZXNlIHRoaW5ncy4KQW5kIGhlIHRoYXQgc2VudCBtZSBpcyB3aXRoIG1lOiB0aGUgRmF0aGVyIGhhdGggbm90IGxlZnQgbWUgYWxvbmU7IGZvciBJIGRvIGFsd2F5cyB0aG9zZSB0aGluZ3MgdGhhdCBwbGVhc2UgaGltLgpBcyBoZSBzcGFrZSB0aGVzZSB3b3JkcywgbWFueSBiZWxpZXZlZCBvbiBoaW0uClRoZW4gc2FpZCBKZXN1cyB0byB0aG9zZSBKZXdzIHdoaWNoIGJlbGlldmVkIG9uIGhpbSwgSWYgeWUgY29udGludWUgaW4gbXkgd29yZCwgdGhlbiBhcmUgeWUgbXkgZGlzY2lwbGVzIGluZGVlZDsKQW5kIHllIHNoYWxsIGtub3cgdGhlIHRydXRoLCBhbmQgdGhlIHRydXRoIHNoYWxsIG1ha2UgeW91IGZyZWUuClRoZXkgYW5zd2VyZWQgaGltLCBXZSBiZSBBYnJhaGFtJ3Mgc2VlZCwgYW5kIHdlcmUgbmV2ZXIgaW4gYm9uZGFnZSB0byBhbnkgbWFuOiBob3cgc2F5ZXN0IHRob3UsIFllIHNoYWxsIGJlIG1hZGUgZnJlZT8KSmVzdXMgYW5zd2VyZWQgdGhlbSwgVmVyaWx5LCB2ZXJpbHksIEkgc2F5IHVudG8geW91LCBXaG9zb2V2ZXIgY29tbWl0dGV0aCBzaW4gaXMgdGhlIHNlcnZhbnQgb2Ygc2luLgpBbmQgdGhlIHNlcnZhbnQgYWJpZGV0aCBub3QgaW4gdGhlIGhvdXNlIGZvciBldmVyOiBidXQgdGhlIFNvbiBhYmlkZXRoIGV2ZXIuCklmIHRoZSBTb24gdGhlcmVmb3JlIHNoYWxsIG1ha2UgeW91IGZyZWUsIHllIHNoYWxsIGJlIGZyZWUgaW5kZWVkLgpJIGtub3cgdGhhdCB5ZSBhcmUgQWJyYWhhbSdzIHNlZWQ7IGJ1dCB5ZSBzZWVrIHRvIGtpbGwgbWUsIGJlY2F1c2UgbXkgd29yZCBoYXRoIG5vIHBsYWNlIGluIHlvdS4KSSBzcGVhayB0aGF0IHdoaWNoIEkgaGF2ZSBzZWVuIHdpdGggbXkgRmF0aGVyOiBhbmQgeWUgZG8gdGhhdCB3aGljaCB5ZSBoYXZlIHNlZW4gd2l0aCB5b3VyIGZhdGhlci4KVGhleSBhbnN3ZXJlZCBhbmQgc2FpZCB1bnRvIGhpbSwgQWJyYWhhbSBpcyBvdXIgZmF0aGVyLiBKZXN1cyBzYWl0aCB1bnRvIHRoZW0sIElmIHllIHdlcmUgQWJyYWhhbSdzIGNoaWxkcmVuLCB5ZSB3b3VsZCBkbyB0aGUgd29ya3Mgb2YgQWJyYWhhbS4KQnV0IG5vdyB5ZSBzZWVrIHRvIGtpbGwgbWUsIGEgbWFuIHRoYXQgaGF0aCB0b2xkIHlvdSB0aGUgdHJ1dGgsIHdoaWNoIEkgaGF2ZSBoZWFyZCBvZiBHb2Q6IHRoaXMgZGlkIG5vdCBBYnJhaGFtLgpZZSBkbyB0aGUgZGVlZHMgb2YgeW91ciBmYXRoZXIuIFRoZW4gc2FpZCB0aGV5IHRvIGhpbSwgV2UgYmUgbm90IGJvcm4gb2YgZm9ybmljYXRpb247IHdlIGhhdmUgb25lIEZhdGhlciwgZXZlbiBHb2QuCkplc3VzIHNhaWQgdW50byB0aGVtLCBJZiBHb2Qgd2VyZSB5b3VyIEZhdGhlciwgeWUgd291bGQgbG92ZSBtZTogZm9yIEkgcHJvY2VlZGVkIGZvcnRoIGFuZCBjYW1lIGZyb20gR29kOyBuZWl0aGVyIGNhbWUgSSBvZiBteXNlbGYsIGJ1dCBoZSBzZW50IG1lLgpXaHkgZG8geWUgbm90IHVuZGVyc3RhbmQgbXkgc3BlZWNoPyBldmVuIGJlY2F1c2UgeWUgY2Fubm90IGhlYXIgbXkgd29yZC4KWWUgYXJlIG9mIHlvdXIgZmF0aGVyIHRoZSBkZXZpbCwgYW5kIHRoZSBsdXN0cyBvZiB5b3VyIGZhdGhlciB5ZSB3aWxsIGRvLiBIZSB3YXMgYSBtdXJkZXJlciBmcm9tIHRoZSBiZWdpbm5pbmcsIGFuZCBhYm9kZSBub3QgaW4gdGhlIHRydXRoLCBiZWNhdXNlIHRoZXJlIGlzIG5vIHRydXRoIGluIGhpbS4gV2hlbiBoZSBzcGVha2V0aCBhIGxpZSwgaGUgc3BlYWtldGggb2YgaGlzIG93bjogZm9yIGhlIGlzIGEgbGlhciwgYW5kIHRoZSBmYXRoZXIgb2YgaXQuCkFuZCBiZWNhdXNlIEkgdGVsbCB5b3UgdGhlIHRydXRoLCB5ZSBiZWxpZXZlIG1lIG5vdC4KV2hpY2ggb2YgeW91IGNvbnZpbmNldGggbWUgb2Ygc2luPyBBbmQgaWYgSSBzYXkgdGhlIHRydXRoLCB3aHkgZG8geWUgbm90IGJlbGlldmUgbWU/CkhlIHRoYXQgaXMgb2YgR29kIGhlYXJldGggR29kJ3Mgd29yZHM6IHllIHRoZXJlZm9yZSBoZWFyIHRoZW0gbm90LCBiZWNhdXNlIHllIGFyZSBub3Qgb2YgR29kLgpUaGVuIGFuc3dlcmVkIHRoZSBKZXdzLCBhbmQgc2FpZCB1bnRvIGhpbSwgU2F5IHdlIG5vdCB3ZWxsIHRoYXQgdGhvdSBhcnQgYSBTYW1hcml0YW4sIGFuZCBoYXN0IGEgZGV2aWw/Ckplc3VzIGFuc3dlcmVkLCBJIGhhdmUgbm90IGEgZGV2aWw7IGJ1dCBJIGhvbm91ciBteSBGYXRoZXIsIGFuZCB5ZSBkbyBkaXNob25vdXIgbWUuCkFuZCBJIHNlZWsgbm90IG1pbmUgb3duIGdsb3J5OiB0aGVyZSBpcyBvbmUgdGhhdCBzZWVrZXRoIGFuZCBqdWRnZXRoLgpWZXJpbHksIHZlcmlseSwgSSBzYXkgdW50byB5b3UsIElmIGEgbWFuIGtlZXAgbXkgc2F5aW5nLCBoZSBzaGFsbCBuZXZlciBzZWUgZGVhdGguClRoZW4gc2FpZCB0aGUgSmV3cyB1bnRvIGhpbSwgTm93IHdlIGtub3cgdGhhdCB0aG91IGhhc3QgYSBkZXZpbC4gQWJyYWhhbSBpcyBkZWFkLCBhbmQgdGhlIHByb3BoZXRzOyBhbmQgdGhvdSBzYXllc3QsIElmIGEgbWFuIGtlZXAgbXkgc2F5aW5nLCBoZSBzaGFsbCBuZXZlciB0YXN0ZSBvZiBkZWF0aC4KQXJ0IHRob3UgZ3JlYXRlciB0aGFuIG91ciBmYXRoZXIgQWJyYWhhbSwgd2hpY2ggaXMgZGVhZD8gYW5kIHRoZSBwcm9waGV0cyBhcmUgZGVhZDogd2hvbSBtYWtlc3QgdGhvdSB0aHlzZWxmPwpKZXN1cyBhbnN3ZXJlZCwgSWYgSSBob25vdXIgbXlzZWxmLCBteSBob25vdXIgaXMgbm90aGluZzogaXQgaXMgbXkgRmF0aGVyIHRoYXQgaG9ub3VyZXRoIG1lOyBvZiB3aG9tIHllIHNheSwgdGhhdCBoZSBpcyB5b3VyIEdvZDoKWWV0IHllIGhhdmUgbm90IGtub3duIGhpbTsgYnV0IEkga25vdyBoaW06IGFuZCBpZiBJIHNob3VsZCBzYXksIEkga25vdyBoaW0gbm90LCBJIHNoYWxsIGJlIGEgbGlhciBsaWtlIHVudG8geW91OiBidXQgSSBrbm93IGhpbSwgYW5kIGtlZXAgaGlzIHNheWluZy4KWW91ciBmYXRoZXIgQWJyYWhhbSByZWpvaWNlZCB0byBzZWUgbXkgZGF5OiBhbmQgaGUgc2F3IGl0LCBhbmQgd2FzIGdsYWQuClRoZW4gc2FpZCB0aGUgSmV3cyB1bnRvIGhpbSwgVGhvdSBhcnQgbm90IHlldCBmaWZ0eSB5ZWFycyBvbGQsIGFuZCBoYXN0IHRob3Ugc2VlbiBBYnJhaGFtPwpKZXN1cyBzYWlkIHVudG8gdGhlbSwgVmVyaWx5LCB2ZXJpbHksIEkgc2F5IHVudG8geW91LCBCZWZvcmUgQWJyYWhhbSB3YXMsIEkgYW0uClRoZW4gdG9vayB0aGV5IHVwIHN0b25lcyB0byBjYXN0IGF0IGhpbTogYnV0IEplc3VzIGhpZCBoaW1zZWxmLCBhbmQgd2VudCBvdXQgb2YgdGhlIHRlbXBsZSwgZ29pbmcgdGhyb3VnaCB0aGUgbWlkc3Qgb2YgdGhlbSwgYW5kIHNvIHBhc3NlZCBieS4KQW5kIGFzIEplc3VzIHBhc3NlZCBieSwgaGUgc2F3IGEgbWFuIHdoaWNoIHdhcyBibGluZCBmcm9tIGhpcyBiaXJ0aC4KQW5kIGhpcyBkaXNjaXBsZXMgYXNrZWQgaGltLCBzYXlpbmcsIE1hc3Rlciwgd2hvIGRpZCBzaW4sIHRoaXMgbWFuLCBvciBoaXMgcGFyZW50cywgdGhhdCBoZSB3YXMgYm9ybiBibGluZD8KSmVzdXMgYW5zd2VyZWQsIE5laXRoZXIgaGF0aCB0aGlzIG1hbiBzaW5uZWQsIG5vciBoaXMgcGFyZW50czogYnV0IHRoYXQgdGhlIHdvcmtzIG9mIEdvZCBzaG91bGQgYmUgbWFkZSBtYW5pZmVzdCBpbiBoaW0uCkkgbXVzdCB3b3JrIHRoZSB3b3JrcyBvZiBoaW0gdGhhdCBzZW50IG1lLCB3aGlsZSBpdCBpcyBkYXk6IHRoZSBuaWdodCBjb21ldGgsIHdoZW4gbm8gbWFuIGNhbiB3b3JrLgpBcyBsb25nIGFzIEkgYW0gaW4gdGhlIHdvcmxkLCBJIGFtIHRoZSBsaWdodCBvZiB0aGUgd29ybGQuCldoZW4gaGUgaGFkIHRodXMgc3Bva2VuLCBoZSBzcGF0IG9uIHRoZSBncm91bmQsIGFuZCBtYWRlIGNsYXkgb2YgdGhlIHNwaXR0bGUsIGFuZCBoZSBhbm9pbnRlZCB0aGUgZXllcyBvZiB0aGUgYmxpbmQgbWFuIHdpdGggdGhlIGNsYXksCkFuZCBzYWlkIHVudG8gaGltLCBHbywgd2FzaCBpbiB0aGUgcG9vbCBvZiBTaWxvYW0sICh3aGljaCBpcyBieSBpbnRlcnByZXRhdGlvbiwgU2VudC4pIEhlIHdlbnQgaGlzIHdheSB0aGVyZWZvcmUsIGFuZCB3YXNoZWQsIGFuZCBjYW1lIHNlZWluZy4KVGhlIG5laWdoYm91cnMgdGhlcmVmb3JlLCBhbmQgdGhleSB3aGljaCBiZWZvcmUgaGFkIHNlZW4gaGltIHRoYXQgaGUgd2FzIGJsaW5kLCBzYWlkLCBJcyBub3QgdGhpcyBoZSB0aGF0IHNhdCBhbmQgYmVnZ2VkPwpTb21lIHNhaWQsIFRoaXMgaXMgaGU6IG90aGVycyBzYWlkLCBIZSBpcyBsaWtlIGhpbTogYnV0IGhlIHNhaWQsIEkgYW0gaGUuClRoZXJlZm9yZSBzYWlkIHRoZXkgdW50byBoaW0sIEhvdyB3ZXJlIHRoaW5lIGV5ZXMgb3BlbmVkPwpIZSBhbnN3ZXJlZCBhbmQgc2FpZCwgQSBtYW4gdGhhdCBpcyBjYWxsZWQgSmVzdXMgbWFkZSBjbGF5LCBhbmQgYW5vaW50ZWQgbWluZSBleWVzLCBhbmQgc2FpZCB1bnRvIG1lLCBHbyB0byB0aGUgcG9vbCBvZiBTaWxvYW0sIGFuZCB3YXNoOiBhbmQgSSB3ZW50IGFuZCB3YXNoZWQsIGFuZCBJIHJlY2VpdmVkIHNpZ2h0LgpUaGVuIHNhaWQgdGhleSB1bnRvIGhpbSwgV2hlcmUgaXMgaGU/IEhlIHNhaWQsIEkga25vdyBub3QuClRoZXkgYnJvdWdodCB0byB0aGUgUGhhcmlzZWVzIGhpbSB0aGF0IGFmb3JldGltZSB3YXMgYmxpbmQuCkFuZCBpdCB3YXMgdGhlIHNhYmJhdGggZGF5IHdoZW4gSmVzdXMgbWFkZSB0aGUgY2xheSwgYW5kIG9wZW5lZCBoaXMgZXllcy4KVGhlbiBhZ2FpbiB0aGUgUGhhcmlzZWVzIGFsc28gYXNrZWQgaGltIGhvdyBoZSBoYWQgcmVjZWl2ZWQgaGlzIHNpZ2h0LiBIZSBzYWlkIHVudG8gdGhlbSwgSGUgcHV0IGNsYXkgdXBvbiBtaW5lIGV5ZXMsIGFuZCBJIHdhc2hlZCwgYW5kIGRvIHNlZS4KVGhlcmVmb3JlIHNhaWQgc29tZSBvZiB0aGUgUGhhcmlzZWVzLCBUaGlzIG1hbiBpcyBub3Qgb2YgR29kLCBiZWNhdXNlIGhlIGtlZXBldGggbm90IHRoZSBzYWJiYXRoIGRheS4gT3RoZXJzIHNhaWQsIEhvdyBjYW4gYSBtYW4gdGhhdCBpcyBhIHNpbm5lciBkbyBzdWNoIG1pcmFjbGVzPyBBbmQgdGhlcmUgd2FzIGEgZGl2aXNpb24gYW1vbmcgdGhlbS4KVGhleSBzYXkgdW50byB0aGUgYmxpbmQgbWFuIGFnYWluLCBXaGF0IHNheWVzdCB0aG91IG9mIGhpbSwgdGhhdCBoZSBoYXRoIG9wZW5lZCB0aGluZSBleWVzPyBIZSBzYWlkLCBIZSBpcyBhIHByb3BoZXQuCkJ1dCB0aGUgSmV3cyBkaWQgbm90IGJlbGlldmUgY29uY2VybmluZyBoaW0sIHRoYXQgaGUgaGFkIGJlZW4gYmxpbmQsIGFuZCByZWNlaXZlZCBoaXMgc2lnaHQsIHVudGlsIHRoZXkgY2FsbGVkIHRoZSBwYXJlbnRzIG9mIGhpbSB0aGF0IGhhZCByZWNlaXZlZCBoaXMgc2lnaHQuCkFuZCB0aGV5IGFza2VkIHRoZW0sIHNheWluZywgSXMgdGhpcyB5b3VyIHNvbiwgd2hvIHllIHNheSB3YXMgYm9ybiBibGluZD8gaG93IHRoZW4gZG90aCBoZSBub3cgc2VlPwpIaXMgcGFyZW50cyBhbnN3ZXJlZCB0aGVtIGFuZCBzYWlkLCBXZSBrbm93IHRoYXQgdGhpcyBpcyBvdXIgc29uLCBhbmQgdGhhdCBoZSB3YXMgYm9ybiBibGluZDoKQnV0IGJ5IHdoYXQgbWVhbnMgaGUgbm93IHNlZXRoLCB3ZSBrbm93IG5vdDsgb3Igd2hvIGhhdGggb3BlbmVkIGhpcyBleWVzLCB3ZSBrbm93IG5vdDogaGUgaXMgb2YgYWdlOyBhc2sgaGltOiBoZSBzaGFsbCBzcGVhayBmb3IgaGltc2VsZi4KVGhlc2Ugd29yZHMgc3Bha2UgaGlzIHBhcmVudHMsIGJlY2F1c2UgdGhleSBmZWFyZWQgdGhlIEpld3M6IGZvciB0aGUgSmV3cyBoYWQgYWdyZWVkIGFscmVhZHksIHRoYXQgaWYgYW55IG1hbiBkaWQgY29uZmVzcyB0aGF0IGhlIHdhcyBDaHJpc3QsIGhlIHNob3VsZCBiZSBwdXQgb3V0IG9mIHRoZSBzeW5hZ29ndWUuClRoZXJlZm9yZSBzYWlkIGhpcyBwYXJlbnRzLCBIZSBpcyBvZiBhZ2U7IGFzayBoaW0uClRoZW4gYWdhaW4gY2FsbGVkIHRoZXkgdGhlIG1hbiB0aGF0IHdhcyBibGluZCwgYW5kIHNhaWQgdW50byBoaW0sIEdpdmUgR29kIHRoZSBwcmFpc2U6IHdlIGtub3cgdGhhdCB0aGlzIG1hbiBpcyBhIHNpbm5lci4KSGUgYW5zd2VyZWQgYW5kIHNhaWQsIFdoZXRoZXIgaGUgYmUgYSBzaW5uZXIgb3Igbm8sIEkga25vdyBub3Q6IG9uZSB0aGluZyBJIGtub3csIHRoYXQsIHdoZXJlYXMgSSB3YXMgYmxpbmQsIG5vdyBJIHNlZS4KVGhlbiBzYWlkIHRoZXkgdG8gaGltIGFnYWluLCBXaGF0IGRpZCBoZSB0byB0aGVlPyBob3cgb3BlbmVkIGhlIHRoaW5lIGV5ZXM/CkhlIGFuc3dlcmVkIHRoZW0sIEkgaGF2ZSB0b2xkIHlvdSBhbHJlYWR5LCBhbmQgeWUgZGlkIG5vdCBoZWFyOiB3aGVyZWZvcmUgd291bGQgeWUgaGVhciBpdCBhZ2Fpbj8gd2lsbCB5ZSBhbHNvIGJlIGhpcyBkaXNjaXBsZXM/ClRoZW4gdGhleSByZXZpbGVkIGhpbSwgYW5kIHNhaWQsIFRob3UgYXJ0IGhpcyBkaXNjaXBsZTsgYnV0IHdlIGFyZSBNb3NlcycgZGlzY2lwbGVzLgpXZSBrbm93IHRoYXQgR29kIHNwYWtlIHVudG8gTW9zZXM6IGFzIGZvciB0aGlzIGZlbGxvdywgd2Uga25vdyBub3QgZnJvbSB3aGVuY2UgaGUgaXMuClRoZSBtYW4gYW5zd2VyZWQgYW5kIHNhaWQgdW50byB0aGVtLCBXaHkgaGVyZWluIGlzIGEgbWFydmVsbG91cyB0aGluZywgdGhhdCB5ZSBrbm93IG5vdCBmcm9tIHdoZW5jZSBoZSBpcywgYW5kIHlldCBoZSBoYXRoIG9wZW5lZCBtaW5lIGV5ZXMuCk5vdyB3ZSBrbm93IHRoYXQgR29kIGhlYXJldGggbm90IHNpbm5lcnM6IGJ1dCBpZiBhbnkgbWFuIGJlIGEgd29yc2hpcHBlciBvZiBHb2QsIGFuZCBkb2V0aCBoaXMgd2lsbCwgaGltIGhlIGhlYXJldGguClNpbmNlIHRoZSB3b3JsZCBiZWdhbiB3YXMgaXQgbm90IGhlYXJkIHRoYXQgYW55IG1hbiBvcGVuZWQgdGhlIGV5ZXMgb2Ygb25lIHRoYXQgd2FzIGJvcm4gYmxpbmQuCklmIHRoaXMgbWFuIHdlcmUgbm90IG9mIEdvZCwgaGUgY291bGQgZG8gbm90aGluZy4KVGhleSBhbnN3ZXJlZCBhbmQgc2FpZCB1bnRvIGhpbSwgVGhvdSB3YXN0IGFsdG9nZXRoZXIgYm9ybiBpbiBzaW5zLCBhbmQgZG9zdCB0aG91IHRlYWNoIHVzPyBBbmQgdGhleSBjYXN0IGhpbSBvdXQuCkplc3VzIGhlYXJkIHRoYXQgdGhleSBoYWQgY2FzdCBoaW0gb3V0OyBhbmQgd2hlbiBoZSBoYWQgZm91bmQgaGltLCBoZSBzYWlkIHVudG8gaGltLCBEb3N0IHRob3UgYmVsaWV2ZSBvbiB0aGUgU29uIG9mIEdvZD8KSGUgYW5zd2VyZWQgYW5kIHNhaWQsIFdobyBpcyBoZSwgTG9yZCwgdGhhdCBJIG1pZ2h0IGJlbGlldmUgb24gaGltPwpBbmQgSmVzdXMgc2FpZCB1bnRvIGhpbSwgVGhvdSBoYXN0IGJvdGggc2VlbiBoaW0sIGFuZCBpdCBpcyBoZSB0aGF0IHRhbGtldGggd2l0aCB0aGVlLgpBbmQgaGUgc2FpZCwgTG9yZCwgSSBiZWxpZXZlLiBBbmQgaGUgd29yc2hpcHBlZCBoaW0uCkFuZCBKZXN1cyBzYWlkLCBGb3IganVkZ21lbnQgSSBhbSBjb21lIGludG8gdGhpcyB3b3JsZCwgdGhhdCB0aGV5IHdoaWNoIHNlZSBub3QgbWlnaHQgc2VlOyBhbmQgdGhhdCB0aGV5IHdoaWNoIHNlZSBtaWdodCBiZSBtYWRlIGJsaW5kLgpBbmQgc29tZSBvZiB0aGUgUGhhcmlzZWVzIHdoaWNoIHdlcmUgd2l0aCBoaW0gaGVhcmQgdGhlc2Ugd29yZHMsIGFuZCBzYWlkIHVudG8gaGltLCBBcmUgd2UgYmxpbmQgYWxzbz8KSmVzdXMgc2FpZCB1bnRvIHRoZW0sIElmIHllIHdlcmUgYmxpbmQsIHllIHNob3VsZCBoYXZlIG5vIHNpbjogYnV0IG5vdyB5ZSBzYXksIFdlIHNlZTsgdGhlcmVmb3JlIHlvdXIgc2luIHJlbWFpbmV0aC4KVmVyaWx5LCB2ZXJpbHksIEkgc2F5IHVudG8geW91LCBIZSB0aGF0IGVudGVyZXRoIG5vdCBieSB0aGUgZG9vciBpbnRvIHRoZSBzaGVlcGZvbGQsIGJ1dCBjbGltYmV0aCB1cCBzb21lIG90aGVyIHdheSwgdGhlIHNhbWUgaXMgYSB0aGllZiBhbmQgYSByb2JiZXIuCkJ1dCBoZSB0aGF0IGVudGVyZXRoIGluIGJ5IHRoZSBkb29yIGlzIHRoZSBzaGVwaGVyZCBvZiB0aGUgc2hlZXAuClRvIGhpbSB0aGUgcG9ydGVyIG9wZW5ldGg7IGFuZCB0aGUgc2hlZXAgaGVhciBoaXMgdm9pY2U6IGFuZCBoZSBjYWxsZXRoIGhpcyBvd24gc2hlZXAgYnkgbmFtZSwgYW5kIGxlYWRldGggdGhlbSBvdXQuCkFuZCB3aGVuIGhlIHB1dHRldGggZm9ydGggaGlzIG93biBzaGVlcCwgaGUgZ29ldGggYmVmb3JlIHRoZW0sIGFuZCB0aGUgc2hlZXAgZm9sbG93IGhpbTogZm9yIHRoZXkga25vdyBoaXMgdm9pY2UuCkFuZCBhIHN0cmFuZ2VyIHdpbGwgdGhleSBub3QgZm9sbG93LCBidXQgd2lsbCBmbGVlIGZyb20gaGltOiBmb3IgdGhleSBrbm93IG5vdCB0aGUgdm9pY2Ugb2Ygc3RyYW5nZXJzLgpUaGlzIHBhcmFibGUgc3Bha2UgSmVzdXMgdW50byB0aGVtOiBidXQgdGhleSB1bmRlcnN0b29kIG5vdCB3aGF0IHRoaW5ncyB0aGV5IHdlcmUgd2hpY2ggaGUgc3Bha2UgdW50byB0aGVtLgpUaGVuIHNhaWQgSmVzdXMgdW50byB0aGVtIGFnYWluLCBWZXJpbHksIHZlcmlseSwgSSBzYXkgdW50byB5b3UsIEkgYW0gdGhlIGRvb3Igb2YgdGhlIHNoZWVwLgpBbGwgdGhhdCBldmVyIGNhbWUgYmVmb3JlIG1lIGFyZSB0aGlldmVzIGFuZCByb2JiZXJzOiBidXQgdGhlIHNoZWVwIGRpZCBub3QgaGVhciB0aGVtLgpJIGFtIHRoZSBkb29yOiBieSBtZSBpZiBhbnkgbWFuIGVudGVyIGluLCBoZSBzaGFsbCBiZSBzYXZlZCwgYW5kIHNoYWxsIGdvIGluIGFuZCBvdXQsIGFuZCBmaW5kIHBhc3R1cmUuClRoZSB0aGllZiBjb21ldGggbm90LCBidXQgZm9yIHRvIHN0ZWFsLCBhbmQgdG8ga2lsbCwgYW5kIHRvIGRlc3Ryb3k6IEkgYW0gY29tZSB0aGF0IHRoZXkgbWlnaHQgaGF2ZSBsaWZlLCBhbmQgdGhhdCB0aGV5IG1pZ2h0IGhhdmUgaXQgbW9yZSBhYnVuZGFudGx5LgpJIGFtIHRoZSBnb29kIHNoZXBoZXJkOiB0aGUgZ29vZCBzaGVwaGVyZCBnaXZldGggaGlzIGxpZmUgZm9yIHRoZSBzaGVlcC4KQnV0IGhlIHRoYXQgaXMgYW4gaGlyZWxpbmcsIGFuZCBub3QgdGhlIHNoZXBoZXJkLCB3aG9zZSBvd24gdGhlIHNoZWVwIGFyZSBub3QsIHNlZXRoIHRoZSB3b2xmIGNvbWluZywgYW5kIGxlYXZldGggdGhlIHNoZWVwLCBhbmQgZmxlZXRoOiBhbmQgdGhlIHdvbGYgY2F0Y2hldGggdGhlbSwgYW5kIHNjYXR0ZXJldGggdGhlIHNoZWVwLgpUaGUgaGlyZWxpbmcgZmxlZXRoLCBiZWNhdXNlIGhlIGlzIGFuIGhpcmVsaW5nLCBhbmQgY2FyZXRoIG5vdCBmb3IgdGhlIHNoZWVwLgpJIGFtIHRoZSBnb29kIHNoZXBoZXJkLCBhbmQga25vdyBteSBzaGVlcCwgYW5kIGFtIGtub3duIG9mIG1pbmUuCkFzIHRoZSBGYXRoZXIga25vd2V0aCBtZSwgZXZlbiBzbyBrbm93IEkgdGhlIEZhdGhlcjogYW5kIEkgbGF5IGRvd24gbXkgbGlmZSBmb3IgdGhlIHNoZWVwLgpBbmQgb3RoZXIgc2hlZXAgSSBoYXZlLCB3aGljaCBhcmUgbm90IG9mIHRoaXMgZm9sZDogdGhlbSBhbHNvIEkgbXVzdCBicmluZywgYW5kIHRoZXkgc2hhbGwgaGVhciBteSB2b2ljZTsgYW5kIHRoZXJlIHNoYWxsIGJlIG9uZSBmb2xkLCBhbmQgb25lIHNoZXBoZXJkLgpUaGVyZWZvcmUgZG90aCBteSBGYXRoZXIgbG92ZSBtZSwgYmVjYXVzZSBJIGxheSBkb3duIG15IGxpZmUsIHRoYXQgSSBtaWdodCB0YWtlIGl0IGFnYWluLgpObyBtYW4gdGFrZXRoIGl0IGZyb20gbWUsIGJ1dCBJIGxheSBpdCBkb3duIG9mIG15c2VsZi4gSSBoYXZlIHBvd2VyIHRvIGxheSBpdCBkb3duLCBhbmQgSSBoYXZlIHBvd2VyIHRvIHRha2UgaXQgYWdhaW4uIFRoaXMgY29tbWFuZG1lbnQgaGF2ZSBJIHJlY2VpdmVkIG9mIG15IEZhdGhlci4KVGhlcmUgd2FzIGEgZGl2aXNpb24gdGhlcmVmb3JlIGFnYWluIGFtb25nIHRoZSBKZXdzIGZvciB0aGVzZSBzYXlpbmdzLgpBbmQgbWFueSBvZiB0aGVtIHNhaWQsIEhlIGhhdGggYSBkZXZpbCwgYW5kIGlzIG1hZDsgd2h5IGhlYXIgeWUgaGltPwpPdGhlcnMgc2FpZCwgVGhlc2UgYXJlIG5vdCB0aGUgd29yZHMgb2YgaGltIHRoYXQgaGF0aCBhIGRldmlsLiBDYW4gYSBkZXZpbCBvcGVuIHRoZSBleWVzIG9mIHRoZSBibGluZD8KQW5kIGl0IHdhcyBhdCBKZXJ1c2FsZW0gdGhlIGZlYXN0IG9mIHRoZSBkZWRpY2F0aW9uLCBhbmQgaXQgd2FzIHdpbnRlci4KQW5kIEplc3VzIHdhbGtlZCBpbiB0aGUgdGVtcGxlIGluIFNvbG9tb24ncyBwb3JjaC4KVGhlbiBjYW1lIHRoZSBKZXdzIHJvdW5kIGFib3V0IGhpbSwgYW5kIHNhaWQgdW50byBoaW0sIEhvdyBsb25nIGRvc3QgdGhvdSBtYWtlIHVzIHRvIGRvdWJ0PyBJZiB0aG91IGJlIHRoZSBDaHJpc3QsIHRlbGwgdXMgcGxhaW5seS4KSmVzdXMgYW5zd2VyZWQgdGhlbSwgSSB0b2xkIHlvdSwgYW5kIHllIGJlbGlldmVkIG5vdDogdGhlIHdvcmtzIHRoYXQgSSBkbyBpbiBteSBGYXRoZXIncyBuYW1lLCB0aGV5IGJlYXIgd2l0bmVzcyBvZiBtZS4KQnV0IHllIGJlbGlldmUgbm90LCBiZWNhdXNlIHllIGFyZSBub3Qgb2YgbXkgc2hlZXAsIGFzIEkgc2FpZCB1bnRvIHlvdS4KTXkgc2hlZXAgaGVhciBteSB2b2ljZSwgYW5kIEkga25vdyB0aGVtLCBhbmQgdGhleSBmb2xsb3cgbWU6CkFuZCBJIGdpdmUgdW50byB0aGVtIGV0ZXJuYWwgbGlmZTsgYW5kIHRoZXkgc2hhbGwgbmV2ZXIgcGVyaXNoLCBuZWl0aGVyIHNoYWxsIGFueSBtYW4gcGx1Y2sgdGhlbSBvdXQgb2YgbXkgaGFuZC4KTXkgRmF0aGVyLCB3aGljaCBnYXZlIHRoZW0gbWUsIGlzIGdyZWF0ZXIgdGhhbiBhbGw7IGFuZCBubyBtYW4gaXMgYWJsZSB0byBwbHVjayB0aGVtIG91dCBvZiBteSBGYXRoZXIncyBoYW5kLgpJIGFuZCBteSBGYXRoZXIgYXJlIG9uZS4KVGhlbiB0aGUgSmV3cyB0b29rIHVwIHN0b25lcyBhZ2FpbiB0byBzdG9uZSBoaW0uCkplc3VzIGFuc3dlcmVkIHRoZW0sIE1hbnkgZ29vZCB3b3JrcyBoYXZlIEkgc2hld2VkIHlvdSBmcm9tIG15IEZhdGhlcjsgZm9yIHdoaWNoIG9mIHRob3NlIHdvcmtzIGRvIHllIHN0b25lIG1lPwpUaGUgSmV3cyBhbnN3ZXJlZCBoaW0sIHNheWluZywgRm9yIGEgZ29vZCB3b3JrIHdlIHN0b25lIHRoZWUgbm90OyBidXQgZm9yIGJsYXNwaGVteTsgYW5kIGJlY2F1c2UgdGhhdCB0aG91LCBiZWluZyBhIG1hbiwgbWFrZXN0IHRoeXNlbGYgR29kLgpKZXN1cyBhbnN3ZXJlZCB0aGVtLCBJcyBpdCBub3Qgd3JpdHRlbiBpbiB5b3VyIGxhdywgSSBzYWlkLCBZZSBhcmUgZ29kcz8KSWYgaGUgY2FsbGVkIHRoZW0gZ29kcywgdW50byB3aG9tIHRoZSB3b3JkIG9mIEdvZCBjYW1lLCBhbmQgdGhlIHNjcmlwdHVyZSBjYW5ub3QgYmUgYnJva2VuOwpTYXkgeWUgb2YgaGltLCB3aG9tIHRoZSBGYXRoZXIgaGF0aCBzYW5jdGlmaWVkLCBhbmQgc2VudCBpbnRvIHRoZSB3b3JsZCwgVGhvdSBibGFzcGhlbWVzdDsgYmVjYXVzZSBJIHNhaWQsIEkgYW0gdGhlIFNvbiBvZiBHb2Q/CklmIEkgZG8gbm90IHRoZSB3b3JrcyBvZiBteSBGYXRoZXIsIGJlbGlldmUgbWUgbm90LgpCdXQgaWYgSSBkbywgdGhvdWdoIHllIGJlbGlldmUgbm90IG1lLCBiZWxpZXZlIHRoZSB3b3JrczogdGhhdCB5ZSBtYXkga25vdywgYW5kIGJlbGlldmUsIHRoYXQgdGhlIEZhdGhlciBpcyBpbiBtZSwgYW5kIEkgaW4gaGltLgpUaGVyZWZvcmUgdGhleSBzb3VnaHQgYWdhaW4gdG8gdGFrZSBoaW06IGJ1dCBoZSBlc2NhcGVkIG91dCBvZiB0aGVpciBoYW5kLApBbmQgd2VudCBhd2F5IGFnYWluIGJleW9uZCBKb3JkYW4gaW50byB0aGUgcGxhY2Ugd2hlcmUgSm9obiBhdCBmaXJzdCBiYXB0aXplZDsgYW5kIHRoZXJlIGhlIGFib2RlLgpBbmQgbWFueSByZXNvcnRlZCB1bnRvIGhpbSwgYW5kIHNhaWQsIEpvaG4gZGlkIG5vIG1pcmFjbGU6IGJ1dCBhbGwgdGhpbmdzIHRoYXQgSm9obiBzcGFrZSBvZiB0aGlzIG1hbiB3ZXJlIHRydWUuCkFuZCBtYW55IGJlbGlldmVkIG9uIGhpbSB0aGVyZS4KTm93IGEgY2VydGFpbiBtYW4gd2FzIHNpY2ssIG5hbWVkIExhemFydXMsIG9mIEJldGhhbnksIHRoZSB0b3duIG9mIE1hcnkgYW5kIGhlciBzaXN0ZXIgTWFydGhhLgooSXQgd2FzIHRoYXQgTWFyeSB3aGljaCBhbm9pbnRlZCB0aGUgTG9yZCB3aXRoIG9pbnRtZW50LCBhbmQgd2lwZWQgaGlzIGZlZXQgd2l0aCBoZXIgaGFpciwgd2hvc2UgYnJvdGhlciBMYXphcnVzIHdhcyBzaWNrLikKVGhlcmVmb3JlIGhpcyBzaXN0ZXJzIHNlbnQgdW50byBoaW0sIHNheWluZywgTG9yZCwgYmVob2xkLCBoZSB3aG9tIHRob3UgbG92ZXN0IGlzIHNpY2suCldoZW4gSmVzdXMgaGVhcmQgdGhhdCwgaGUgc2FpZCwgVGhpcyBzaWNrbmVzcyBpcyBub3QgdW50byBkZWF0aCwgYnV0IGZvciB0aGUgZ2xvcnkgb2YgR29kLCB0aGF0IHRoZSBTb24gb2YgR29kIG1pZ2h0IGJlIGdsb3JpZmllZCB0aGVyZWJ5LgpOb3cgSmVzdXMgbG92ZWQgTWFydGhhLCBhbmQgaGVyIHNpc3RlciwgYW5kIExhemFydXMuCldoZW4gaGUgaGFkIGhlYXJkIHRoZXJlZm9yZSB0aGF0IGhlIHdhcyBzaWNrLCBoZSBhYm9kZSB0d28gZGF5cyBzdGlsbCBpbiB0aGUgc2FtZSBwbGFjZSB3aGVyZSBoZSB3YXMuClRoZW4gYWZ0ZXIgdGhhdCBzYWl0aCBoZSB0byBoaXMgZGlzY2lwbGVzLCBMZXQgdXMgZ28gaW50byBKdWRhZWEgYWdhaW4uCkhpcyBkaXNjaXBsZXMgc2F5IHVudG8gaGltLCBNYXN0ZXIsIHRoZSBKZXdzIG9mIGxhdGUgc291Z2h0IHRvIHN0b25lIHRoZWU7IGFuZCBnb2VzdCB0aG91IHRoaXRoZXIgYWdhaW4/Ckplc3VzIGFuc3dlcmVkLCBBcmUgdGhlcmUgbm90IHR3ZWx2ZSBob3VycyBpbiB0aGUgZGF5PyBJZiBhbnkgbWFuIHdhbGsgaW4gdGhlIGRheSwgaGUgc3R1bWJsZXRoIG5vdCwgYmVjYXVzZSBoZSBzZWV0aCB0aGUgbGlnaHQgb2YgdGhpcyB3b3JsZC4KQnV0IGlmIGEgbWFuIHdhbGsgaW4gdGhlIG5pZ2h0LCBoZSBzdHVtYmxldGgsIGJlY2F1c2UgdGhlcmUgaXMgbm8gbGlnaHQgaW4gaGltLgpUaGVzZSB0aGluZ3Mgc2FpZCBoZTogYW5kIGFmdGVyIHRoYXQgaGUgc2FpdGggdW50byB0aGVtLCBPdXIgZnJpZW5kIExhemFydXMgc2xlZXBldGg7IGJ1dCBJIGdvLCB0aGF0IEkgbWF5IGF3YWtlIGhpbSBvdXQgb2Ygc2xlZXAuClRoZW4gc2FpZCBoaXMgZGlzY2lwbGVzLCBMb3JkLCBpZiBoZSBzbGVlcCwgaGUgc2hhbGwgZG8gd2VsbC4KSG93YmVpdCBKZXN1cyBzcGFrZSBvZiBoaXMgZGVhdGg6IGJ1dCB0aGV5IHRob3VnaHQgdGhhdCBoZSBoYWQgc3Bva2VuIG9mIHRha2luZyBvZiByZXN0IGluIHNsZWVwLgpUaGVuIHNhaWQgSmVzdXMgdW50byB0aGVtIHBsYWlubHksIExhemFydXMgaXMgZGVhZC4KQW5kIEkgYW0gZ2xhZCBmb3IgeW91ciBzYWtlcyB0aGF0IEkgd2FzIG5vdCB0aGVyZSwgdG8gdGhlIGludGVudCB5ZSBtYXkgYmVsaWV2ZTsgbmV2ZXJ0aGVsZXNzIGxldCB1cyBnbyB1bnRvIGhpbS4KVGhlbiBzYWlkIFRob21hcywgd2hpY2ggaXMgY2FsbGVkIERpZHltdXMsIHVudG8gaGlzIGZlbGxvd2Rpc2NpcGxlcywgTGV0IHVzIGFsc28gZ28sIHRoYXQgd2UgbWF5IGRpZSB3aXRoIGhpbS4KVGhlbiB3aGVuIEplc3VzIGNhbWUsIGhlIGZvdW5kIHRoYXQgaGUgaGFkIGxhaW4gaW4gdGhlIGdyYXZlIGZvdXIgZGF5cyBhbHJlYWR5LgpOb3cgQmV0aGFueSB3YXMgbmlnaCB1bnRvIEplcnVzYWxlbSwgYWJvdXQgZmlmdGVlbiBmdXJsb25ncyBvZmY6CkFuZCBtYW55IG9mIHRoZSBKZXdzIGNhbWUgdG8gTWFydGhhIGFuZCBNYXJ5LCB0byBjb21mb3J0IHRoZW0gY29uY2VybmluZyB0aGVpciBicm90aGVyLgpUaGVuIE1hcnRoYSwgYXMgc29vbiBhcyBzaGUgaGVhcmQgdGhhdCBKZXN1cyB3YXMgY29taW5nLCB3ZW50IGFuZCBtZXQgaGltOiBidXQgTWFyeSBzYXQgc3RpbGwgaW4gdGhlIGhvdXNlLgpUaGVuIHNhaWQgTWFydGhhIHVudG8gSmVzdXMsIExvcmQsIGlmIHRob3UgaGFkc3QgYmVlbiBoZXJlLCBteSBicm90aGVyIGhhZCBub3QgZGllZC4KQnV0IEkga25vdywgdGhhdCBldmVuIG5vdywgd2hhdHNvZXZlciB0aG91IHdpbHQgYXNrIG9mIEdvZCwgR29kIHdpbGwgZ2l2ZSBpdCB0aGVlLgpKZXN1cyBzYWl0aCB1bnRvIGhlciwgVGh5IGJyb3RoZXIgc2hhbGwgcmlzZSBhZ2Fpbi4KTWFydGhhIHNhaXRoIHVudG8gaGltLCBJIGtub3cgdGhhdCBoZSBzaGFsbCByaXNlIGFnYWluIGluIHRoZSByZXN1cnJlY3Rpb24gYXQgdGhlIGxhc3QgZGF5LgpKZXN1cyBzYWlkIHVudG8gaGVyLCBJIGFtIHRoZSByZXN1cnJlY3Rpb24sIGFuZCB0aGUgbGlmZTogaGUgdGhhdCBiZWxpZXZldGggaW4gbWUsIHRob3VnaCBoZSB3ZXJlIGRlYWQsIHlldCBzaGFsbCBoZSBsaXZlOgpBbmQgd2hvc29ldmVyIGxpdmV0aCBhbmQgYmVsaWV2ZXRoIGluIG1lIHNoYWxsIG5ldmVyIGRpZS4gQmVsaWV2ZXN0IHRob3UgdGhpcz8KU2hlIHNhaXRoIHVudG8gaGltLCBZZWEsIExvcmQ6IEkgYmVsaWV2ZSB0aGF0IHRob3UgYXJ0IHRoZSBDaHJpc3QsIHRoZSBTb24gb2YgR29kLCB3aGljaCBzaG91bGQgY29tZSBpbnRvIHRoZSB3b3JsZC4KQW5kIHdoZW4gc2hlIGhhZCBzbyBzYWlkLCBzaGUgd2VudCBoZXIgd2F5LCBhbmQgY2FsbGVkIE1hcnkgaGVyIHNpc3RlciBzZWNyZXRseSwgc2F5aW5nLCBUaGUgTWFzdGVyIGlzIGNvbWUsIGFuZCBjYWxsZXRoIGZvciB0aGVlLgpBcyBzb29uIGFzIHNoZSBoZWFyZCB0aGF0LCBzaGUgYXJvc2UgcXVpY2tseSwgYW5kIGNhbWUgdW50byBoaW0uCk5vdyBKZXN1cyB3YXMgbm90IHlldCBjb21lIGludG8gdGhlIHRvd24sIGJ1dCB3YXMgaW4gdGhhdCBwbGFjZSB3aGVyZSBNYXJ0aGEgbWV0IGhpbS4KVGhlIEpld3MgdGhlbiB3aGljaCB3ZXJlIHdpdGggaGVyIGluIHRoZSBob3VzZSwgYW5kIGNvbWZvcnRlZCBoZXIsIHdoZW4gdGhleSBzYXcgTWFyeSwgdGhhdCBzaGUgcm9zZSB1cCBoYXN0aWx5IGFuZCB3ZW50IG91dCwgZm9sbG93ZWQgaGVyLCBzYXlpbmcsIFNoZSBnb2V0aCB1bnRvIHRoZSBncmF2ZSB0byB3ZWVwIHRoZXJlLgpUaGVuIHdoZW4gTWFyeSB3YXMgY29tZSB3aGVyZSBKZXN1cyB3YXMsIGFuZCBzYXcgaGltLCBzaGUgZmVsbCBkb3duIGF0IGhpcyBmZWV0LCBzYXlpbmcgdW50byBoaW0sIExvcmQsIGlmIHRob3UgaGFkc3QgYmVlbiBoZXJlLCBteSBicm90aGVyIGhhZCBub3QgZGllZC4KV2hlbiBKZXN1cyB0aGVyZWZvcmUgc2F3IGhlciB3ZWVwaW5nLCBhbmQgdGhlIEpld3MgYWxzbyB3ZWVwaW5nIHdoaWNoIGNhbWUgd2l0aCBoZXIsIGhlIGdyb2FuZWQgaW4gdGhlIHNwaXJpdCwgYW5kIHdhcyB0cm91YmxlZC4KQW5kIHNhaWQsIFdoZXJlIGhhdmUgeWUgbGFpZCBoaW0/IFRoZXkgc2FpZCB1bnRvIGhpbSwgTG9yZCwgY29tZSBhbmQgc2VlLgpKZXN1cyB3ZXB0LgpUaGVuIHNhaWQgdGhlIEpld3MsIEJlaG9sZCBob3cgaGUgbG92ZWQgaGltIQpBbmQgc29tZSBvZiB0aGVtIHNhaWQsIENvdWxkIG5vdCB0aGlzIG1hbiwgd2hpY2ggb3BlbmVkIHRoZSBleWVzIG9mIHRoZSBibGluZCwgaGF2ZSBjYXVzZWQgdGhhdCBldmVuIHRoaXMgbWFuIHNob3VsZCBub3QgaGF2ZSBkaWVkPwpKZXN1cyB0aGVyZWZvcmUgYWdhaW4gZ3JvYW5pbmcgaW4gaGltc2VsZiBjb21ldGggdG8gdGhlIGdyYXZlLiBJdCB3YXMgYSBjYXZlLCBhbmQgYSBzdG9uZSBsYXkgdXBvbiBpdC4KSmVzdXMgc2FpZCwgVGFrZSB5ZSBhd2F5IHRoZSBzdG9uZS4gTWFydGhhLCB0aGUgc2lzdGVyIG9mIGhpbSB0aGF0IHdhcyBkZWFkLCBzYWl0aCB1bnRvIGhpbSwgTG9yZCwgYnkgdGhpcyB0aW1lIGhlIHN0aW5rZXRoOiBmb3IgaGUgaGF0aCBiZWVuIGRlYWQgZm91ciBkYXlzLgpKZXN1cyBzYWl0aCB1bnRvIGhlciwgU2FpZCBJIG5vdCB1bnRvIHRoZWUsIHRoYXQsIGlmIHRob3Ugd291bGRlc3QgYmVsaWV2ZSwgdGhvdSBzaG91bGRlc3Qgc2VlIHRoZSBnbG9yeSBvZiBHb2Q/ClRoZW4gdGhleSB0b29rIGF3YXkgdGhlIHN0b25lIGZyb20gdGhlIHBsYWNlIHdoZXJlIHRoZSBkZWFkIHdhcyBsYWlkLiBBbmQgSmVzdXMgbGlmdGVkIHVwIGhpcyBleWVzLCBhbmQgc2FpZCwgRmF0aGVyLCBJIHRoYW5rIHRoZWUgdGhhdCB0aG91IGhhc3QgaGVhcmQgbWUuCkFuZCBJIGtuZXcgdGhhdCB0aG91IGhlYXJlc3QgbWUgYWx3YXlzOiBidXQgYmVjYXVzZSBvZiB0aGUgcGVvcGxlIHdoaWNoIHN0YW5kIGJ5IEkgc2FpZCBpdCwgdGhhdCB0aGV5IG1heSBiZWxpZXZlIHRoYXQgdGhvdSBoYXN0IHNlbnQgbWUuCkFuZCB3aGVuIGhlIHRodXMgaGFkIHNwb2tlbiwgaGUgY3JpZWQgd2l0aCBhIGxvdWQgdm9pY2UsIExhemFydXMsIGNvbWUgZm9ydGguCkFuZCBoZSB0aGF0IHdhcyBkZWFkIGNhbWUgZm9ydGgsIGJvdW5kIGhhbmQgYW5kIGZvb3Qgd2l0aCBncmF2ZWNsb3RoZXM6IGFuZCBoaXMgZmFjZSB3YXMgYm91bmQgYWJvdXQgd2l0aCBhIG5hcGtpbi4gSmVzdXMgc2FpdGggdW50byB0aGVtLCBMb29zZSBoaW0sIGFuZCBsZXQgaGltIGdvLgpUaGVuIG1hbnkgb2YgdGhlIEpld3Mgd2hpY2ggY2FtZSB0byBNYXJ5LCBhbmQgaGFkIHNlZW4gdGhlIHRoaW5ncyB3aGljaCBKZXN1cyBkaWQsIGJlbGlldmVkIG9uIGhpbS4KQnV0IHNvbWUgb2YgdGhlbSB3ZW50IHRoZWlyIHdheXMgdG8gdGhlIFBoYXJpc2VlcywgYW5kIHRvbGQgdGhlbSB3aGF0IHRoaW5ncyBKZXN1cyBoYWQgZG9uZS4KVGhlbiBnYXRoZXJlZCB0aGUgY2hpZWYgcHJpZXN0cyBhbmQgdGhlIFBoYXJpc2VlcyBhIGNvdW5jaWwsIGFuZCBzYWlkLCBXaGF0IGRvIHdlPyBmb3IgdGhpcyBtYW4gZG9ldGggbWFueSBtaXJhY2xlcy4KSWYgd2UgbGV0IGhpbSB0aHVzIGFsb25lLCBhbGwgbWVuIHdpbGwgYmVsaWV2ZSBvbiBoaW06IGFuZCB0aGUgUm9tYW5zIHNoYWxsIGNvbWUgYW5kIHRha2UgYXdheSBib3RoIG91ciBwbGFjZSBhbmQgbmF0aW9uLgpBbmQgb25lIG9mIHRoZW0sIG5hbWVkIENhaWFwaGFzLCBiZWluZyB0aGUgaGlnaCBwcmllc3QgdGhhdCBzYW1lIHllYXIsIHNhaWQgdW50byB0aGVtLCBZZSBrbm93IG5vdGhpbmcgYXQgYWxsLApOb3IgY29uc2lkZXIgdGhhdCBpdCBpcyBleHBlZGllbnQgZm9yIHVzLCB0aGF0IG9uZSBtYW4gc2hvdWxkIGRpZSBmb3IgdGhlIHBlb3BsZSwgYW5kIHRoYXQgdGhlIHdob2xlIG5hdGlvbiBwZXJpc2ggbm90LgpBbmQgdGhpcyBzcGFrZSBoZSBub3Qgb2YgaGltc2VsZjogYnV0IGJlaW5nIGhpZ2ggcHJpZXN0IHRoYXQgeWVhciwgaGUgcHJvcGhlc2llZCB0aGF0IEplc3VzIHNob3VsZCBkaWUgZm9yIHRoYXQgbmF0aW9uOwpBbmQgbm90IGZvciB0aGF0IG5hdGlvbiBvbmx5LCBidXQgdGhhdCBhbHNvIGhlIHNob3VsZCBnYXRoZXIgdG9nZXRoZXIgaW4gb25lIHRoZSBjaGlsZHJlbiBvZiBHb2QgdGhhdCB3ZXJlIHNjYXR0ZXJlZCBhYnJvYWQuClRoZW4gZnJvbSB0aGF0IGRheSBmb3J0aCB0aGV5IHRvb2sgY291bnNlbCB0b2dldGhlciBmb3IgdG8gcHV0IGhpbSB0byBkZWF0aC4KSmVzdXMgdGhlcmVmb3JlIHdhbGtlZCBubyBtb3JlIG9wZW5seSBhbW9uZyB0aGUgSmV3czsgYnV0IHdlbnQgdGhlbmNlIHVudG8gYSBjb3VudHJ5IG5lYXIgdG8gdGhlIHdpbGRlcm5lc3MsIGludG8gYSBjaXR5IGNhbGxlZCBFcGhyYWltLCBhbmQgdGhlcmUgY29udGludWVkIHdpdGggaGlzIGRpc2NpcGxlcy4KQW5kIHRoZSBKZXdzJyBwYXNzb3ZlciB3YXMgbmlnaCBhdCBoYW5kOiBhbmQgbWFueSB3ZW50IG91dCBvZiB0aGUgY291bnRyeSB1cCB0byBKZXJ1c2FsZW0gYmVmb3JlIHRoZSBwYXNzb3ZlciwgdG8gcHVyaWZ5IHRoZW1zZWx2ZXMuClRoZW4gc291Z2h0IHRoZXkgZm9yIEplc3VzLCBhbmQgc3Bha2UgYW1vbmcgdGhlbXNlbHZlcywgYXMgdGhleSBzdG9vZCBpbiB0aGUgdGVtcGxlLCBXaGF0IHRoaW5rIHllLCB0aGF0IGhlIHdpbGwgbm90IGNvbWUgdG8gdGhlIGZlYXN0PwpOb3cgYm90aCB0aGUgY2hpZWYgcHJpZXN0cyBhbmQgdGhlIFBoYXJpc2VlcyBoYWQgZ2l2ZW4gYSBjb21tYW5kbWVudCwgdGhhdCwgaWYgYW55IG1hbiBrbmV3IHdoZXJlIGhlIHdlcmUsIGhlIHNob3VsZCBzaGV3IGl0LCB0aGF0IHRoZXkgbWlnaHQgdGFrZSBoaW0uClRoZW4gSmVzdXMgc2l4IGRheXMgYmVmb3JlIHRoZSBwYXNzb3ZlciBjYW1lIHRvIEJldGhhbnksIHdoZXJlIExhemFydXMgd2FzLCB3aGljaCBoYWQgYmVlbiBkZWFkLCB3aG9tIGhlIHJhaXNlZCBmcm9tIHRoZSBkZWFkLgpUaGVyZSB0aGV5IG1hZGUgaGltIGEgc3VwcGVyOyBhbmQgTWFydGhhIHNlcnZlZDogYnV0IExhemFydXMgd2FzIG9uZSBvZiB0aGVtIHRoYXQgc2F0IGF0IHRoZSB0YWJsZSB3aXRoIGhpbS4KVGhlbiB0b29rIE1hcnkgYSBwb3VuZCBvZiBvaW50bWVudCBvZiBzcGlrZW5hcmQsIHZlcnkgY29zdGx5LCBhbmQgYW5vaW50ZWQgdGhlIGZlZXQgb2YgSmVzdXMsIGFuZCB3aXBlZCBoaXMgZmVldCB3aXRoIGhlciBoYWlyOiBhbmQgdGhlIGhvdXNlIHdhcyBmaWxsZWQgd2l0aCB0aGUgb2RvdXIgb2YgdGhlIG9pbnRtZW50LgpUaGVuIHNhaXRoIG9uZSBvZiBoaXMgZGlzY2lwbGVzLCBKdWRhcyBJc2NhcmlvdCwgU2ltb24ncyBzb24sIHdoaWNoIHNob3VsZCBiZXRyYXkgaGltLApXaHkgd2FzIG5vdCB0aGlzIG9pbnRtZW50IHNvbGQgZm9yIHRocmVlIGh1bmRyZWQgcGVuY2UsIGFuZCBnaXZlbiB0byB0aGUgcG9vcj8KVGhpcyBoZSBzYWlkLCBub3QgdGhhdCBoZSBjYXJlZCBmb3IgdGhlIHBvb3I7IGJ1dCBiZWNhdXNlIGhlIHdhcyBhIHRoaWVmLCBhbmQgaGFkIHRoZSBiYWcsIGFuZCBiYXJlIHdoYXQgd2FzIHB1dCB0aGVyZWluLgpUaGVuIHNhaWQgSmVzdXMsIExldCBoZXIgYWxvbmU6IGFnYWluc3QgdGhlIGRheSBvZiBteSBidXJ5aW5nIGhhdGggc2hlIGtlcHQgdGhpcy4KRm9yIHRoZSBwb29yIGFsd2F5cyB5ZSBoYXZlIHdpdGggeW91OyBidXQgbWUgeWUgaGF2ZSBub3QgYWx3YXlzLgpNdWNoIHBlb3BsZSBvZiB0aGUgSmV3cyB0aGVyZWZvcmUga25ldyB0aGF0IGhlIHdhcyB0aGVyZTogYW5kIHRoZXkgY2FtZSBub3QgZm9yIEplc3VzJyBzYWtlIG9ubHksIGJ1dCB0aGF0IHRoZXkgbWlnaHQgc2VlIExhemFydXMgYWxzbywgd2hvbSBoZSBoYWQgcmFpc2VkIGZyb20gdGhlIGRlYWQuCkJ1dCB0aGUgY2hpZWYgcHJpZXN0cyBjb25zdWx0ZWQgdGhhdCB0aGV5IG1pZ2h0IHB1dCBMYXphcnVzIGFsc28gdG8gZGVhdGg7CkJlY2F1c2UgdGhhdCBieSByZWFzb24gb2YgaGltIG1hbnkgb2YgdGhlIEpld3Mgd2VudCBhd2F5LCBhbmQgYmVsaWV2ZWQgb24gSmVzdXMuCk9uIHRoZSBuZXh0IGRheSBtdWNoIHBlb3BsZSB0aGF0IHdlcmUgY29tZSB0byB0aGUgZmVhc3QsIHdoZW4gdGhleSBoZWFyZCB0aGF0IEplc3VzIHdhcyBjb21pbmcgdG8gSmVydXNhbGVtLApUb29rIGJyYW5jaGVzIG9mIHBhbG0gdHJlZXMsIGFuZCB3ZW50IGZvcnRoIHRvIG1lZXQgaGltLCBhbmQgY3JpZWQsIEhvc2FubmE6IEJsZXNzZWQgaXMgdGhlIEtpbmcgb2YgSXNyYWVsIHRoYXQgY29tZXRoIGluIHRoZSBuYW1lIG9mIHRoZSBMb3JkLgpBbmQgSmVzdXMsIHdoZW4gaGUgaGFkIGZvdW5kIGEgeW91bmcgYXNzLCBzYXQgdGhlcmVvbjsgYXMgaXQgaXMgd3JpdHRlbiwKRmVhciBub3QsIGRhdWdodGVyIG9mIFNpb246IGJlaG9sZCwgdGh5IEtpbmcgY29tZXRoLCBzaXR0aW5nIG9uIGFuIGFzcydzIGNvbHQuClRoZXNlIHRoaW5ncyB1bmRlcnN0b29kIG5vdCBoaXMgZGlzY2lwbGVzIGF0IHRoZSBmaXJzdDogYnV0IHdoZW4gSmVzdXMgd2FzIGdsb3JpZmllZCwgdGhlbiByZW1lbWJlcmVkIHRoZXkgdGhhdCB0aGVzZSB0aGluZ3Mgd2VyZSB3cml0dGVuIG9mIGhpbSwgYW5kIHRoYXQgdGhleSBoYWQgZG9uZSB0aGVzZSB0aGluZ3MgdW50byBoaW0uClRoZSBwZW9wbGUgdGhlcmVmb3JlIHRoYXQgd2FzIHdpdGggaGltIHdoZW4gaGUgY2FsbGVkIExhemFydXMgb3V0IG9mIGhpcyBncmF2ZSwgYW5kIHJhaXNlZCBoaW0gZnJvbSB0aGUgZGVhZCwgYmFyZSByZWNvcmQuCkZvciB0aGlzIGNhdXNlIHRoZSBwZW9wbGUgYWxzbyBtZXQgaGltLCBmb3IgdGhhdCB0aGV5IGhlYXJkIHRoYXQgaGUgaGFkIGRvbmUgdGhpcyBtaXJhY2xlLgpUaGUgUGhhcmlzZWVzIHRoZXJlZm9yZSBzYWlkIGFtb25nIHRoZW1zZWx2ZXMsIFBlcmNlaXZlIHllIGhvdyB5ZSBwcmV2YWlsIG5vdGhpbmc/IGJlaG9sZCwgdGhlIHdvcmxkIGlzIGdvbmUgYWZ0ZXIgaGltLgpBbmQgdGhlcmUgd2VyZSBjZXJ0YWluIEdyZWVrcyBhbW9uZyB0aGVtIHRoYXQgY2FtZSB1cCB0byB3b3JzaGlwIGF0IHRoZSBmZWFzdDoKVGhlIHNhbWUgY2FtZSB0aGVyZWZvcmUgdG8gUGhpbGlwLCB3aGljaCB3YXMgb2YgQmV0aHNhaWRhIG9mIEdhbGlsZWUsIGFuZCBkZXNpcmVkIGhpbSwgc2F5aW5nLCBTaXIsIHdlIHdvdWxkIHNlZSBKZXN1cy4KUGhpbGlwIGNvbWV0aCBhbmQgdGVsbGV0aCBBbmRyZXc6IGFuZCBhZ2FpbiBBbmRyZXcgYW5kIFBoaWxpcCB0ZWxsIEplc3VzLgpBbmQgSmVzdXMgYW5zd2VyZWQgdGhlbSwgc2F5aW5nLCBUaGUgaG91ciBpcyBjb21lLCB0aGF0IHRoZSBTb24gb2YgbWFuIHNob3VsZCBiZSBnbG9yaWZpZWQuClZlcmlseSwgdmVyaWx5LCBJIHNheSB1bnRvIHlvdSwgRXhjZXB0IGEgY29ybiBvZiB3aGVhdCBmYWxsIGludG8gdGhlIGdyb3VuZCBhbmQgZGllLCBpdCBhYmlkZXRoIGFsb25lOiBidXQgaWYgaXQgZGllLCBpdCBicmluZ2V0aCBmb3J0aCBtdWNoIGZydWl0LgpIZSB0aGF0IGxvdmV0aCBoaXMgbGlmZSBzaGFsbCBsb3NlIGl0OyBhbmQgaGUgdGhhdCBoYXRldGggaGlzIGxpZmUgaW4gdGhpcyB3b3JsZCBzaGFsbCBrZWVwIGl0IHVudG8gbGlmZSBldGVybmFsLgpJZiBhbnkgbWFuIHNlcnZlIG1lLCBsZXQgaGltIGZvbGxvdyBtZTsgYW5kIHdoZXJlIEkgYW0sIHRoZXJlIHNoYWxsIGFsc28gbXkgc2VydmFudCBiZTogaWYgYW55IG1hbiBzZXJ2ZSBtZSwgaGltIHdpbGwgbXkgRmF0aGVyIGhvbm91ci4KTm93IGlzIG15IHNvdWwgdHJvdWJsZWQ7IGFuZCB3aGF0IHNoYWxsIEkgc2F5PyBGYXRoZXIsIHNhdmUgbWUgZnJvbSB0aGlzIGhvdXI6IGJ1dCBmb3IgdGhpcyBjYXVzZSBjYW1lIEkgdW50byB0aGlzIGhvdXIuCkZhdGhlciwgZ2xvcmlmeSB0aHkgbmFtZS4gVGhlbiBjYW1lIHRoZXJlIGEgdm9pY2UgZnJvbSBoZWF2ZW4sIHNheWluZywgSSBoYXZlIGJvdGggZ2xvcmlmaWVkIGl0LCBhbmQgd2lsbCBnbG9yaWZ5IGl0IGFnYWluLgpUaGUgcGVvcGxlIHRoZXJlZm9yZSwgdGhhdCBzdG9vZCBieSwgYW5kIGhlYXJkIGl0LCBzYWlkIHRoYXQgaXQgdGh1bmRlcmVkOiBvdGhlcnMgc2FpZCwgQW4gYW5nZWwgc3Bha2UgdG8gaGltLgpKZXN1cyBhbnN3ZXJlZCBhbmQgc2FpZCwgVGhpcyB2b2ljZSBjYW1lIG5vdCBiZWNhdXNlIG9mIG1lLCBidXQgZm9yIHlvdXIgc2FrZXMuCk5vdyBpcyB0aGUganVkZ21lbnQgb2YgdGhpcyB3b3JsZDogbm93IHNoYWxsIHRoZSBwcmluY2Ugb2YgdGhpcyB3b3JsZCBiZSBjYXN0IG91dC4KQW5kIEksIGlmIEkgYmUgbGlmdGVkIHVwIGZyb20gdGhlIGVhcnRoLCB3aWxsIGRyYXcgYWxsIG1lbiB1bnRvIG1lLgpUaGlzIGhlIHNhaWQsIHNpZ25pZnlpbmcgd2hhdCBkZWF0aCBoZSBzaG91bGQgZGllLgpUaGUgcGVvcGxlIGFuc3dlcmVkIGhpbSwgV2UgaGF2ZSBoZWFyZCBvdXQgb2YgdGhlIGxhdyB0aGF0IENocmlzdCBhYmlkZXRoIGZvciBldmVyOiBhbmQgaG93IHNheWVzdCB0aG91LCBUaGUgU29uIG9mIG1hbiBtdXN0IGJlIGxpZnRlZCB1cD8gd2hvIGlzIHRoaXMgU29uIG9mIG1hbj8KVGhlbiBKZXN1cyBzYWlkIHVudG8gdGhlbSwgWWV0IGEgbGl0dGxlIHdoaWxlIGlzIHRoZSBsaWdodCB3aXRoIHlvdS4gV2FsayB3aGlsZSB5ZSBoYXZlIHRoZSBsaWdodCwgbGVzdCBkYXJrbmVzcyBjb21lIHVwb24geW91OiBmb3IgaGUgdGhhdCB3YWxrZXRoIGluIGRhcmtuZXNzIGtub3dldGggbm90IHdoaXRoZXIgaGUgZ29ldGguCldoaWxlIHllIGhhdmUgbGlnaHQsIGJlbGlldmUgaW4gdGhlIGxpZ2h0LCB0aGF0IHllIG1heSBiZSB0aGUgY2hpbGRyZW4gb2YgbGlnaHQuIFRoZXNlIHRoaW5ncyBzcGFrZSBKZXN1cywgYW5kIGRlcGFydGVkLCBhbmQgZGlkIGhpZGUgaGltc2VsZiBmcm9tIHRoZW0uCkJ1dCB0aG91Z2ggaGUgaGFkIGRvbmUgc28gbWFueSBtaXJhY2xlcyBiZWZvcmUgdGhlbSwgeWV0IHRoZXkgYmVsaWV2ZWQgbm90IG9uIGhpbToKVGhhdCB0aGUgc2F5aW5nIG9mIEVzYWlhcyB0aGUgcHJvcGhldCBtaWdodCBiZSBmdWxmaWxsZWQsIHdoaWNoIGhlIHNwYWtlLCBMb3JkLCB3aG8gaGF0aCBiZWxpZXZlZCBvdXIgcmVwb3J0PyBhbmQgdG8gd2hvbSBoYXRoIHRoZSBhcm0gb2YgdGhlIExvcmQgYmVlbiByZXZlYWxlZD8KVGhlcmVmb3JlIHRoZXkgY291bGQgbm90IGJlbGlldmUsIGJlY2F1c2UgdGhhdCBFc2FpYXMgc2FpZCBhZ2FpbiwKSGUgaGF0aCBibGluZGVkIHRoZWlyIGV5ZXMsIGFuZCBoYXJkZW5lZCB0aGVpciBoZWFydDsgdGhhdCB0aGV5IHNob3VsZCBub3Qgc2VlIHdpdGggdGhlaXIgZXllcywgbm9yIHVuZGVyc3RhbmQgd2l0aCB0aGVpciBoZWFydCwgYW5kIGJlIGNvbnZlcnRlZCwgYW5kIEkgc2hvdWxkIGhlYWwgdGhlbS4KVGhlc2UgdGhpbmdzIHNhaWQgRXNhaWFzLCB3aGVuIGhlIHNhdyBoaXMgZ2xvcnksIGFuZCBzcGFrZSBvZiBoaW0uCk5ldmVydGhlbGVzcyBhbW9uZyB0aGUgY2hpZWYgcnVsZXJzIGFsc28gbWFueSBiZWxpZXZlZCBvbiBoaW07IGJ1dCBiZWNhdXNlIG9mIHRoZSBQaGFyaXNlZXMgdGhleSBkaWQgbm90IGNvbmZlc3MgaGltLCBsZXN0IHRoZXkgc2hvdWxkIGJlIHB1dCBvdXQgb2YgdGhlIHN5bmFnb2d1ZToKRm9yIHRoZXkgbG92ZWQgdGhlIHByYWlzZSBvZiBtZW4gbW9yZSB0aGFuIHRoZSBwcmFpc2Ugb2YgR29kLgpKZXN1cyBjcmllZCBhbmQgc2FpZCwgSGUgdGhhdCBiZWxpZXZldGggb24gbWUsIGJlbGlldmV0aCBub3Qgb24gbWUsIGJ1dCBvbiBoaW0gdGhhdCBzZW50IG1lLgpBbmQgaGUgdGhhdCBzZWV0aCBtZSBzZWV0aCBoaW0gdGhhdCBzZW50IG1lLgpJIGFtIGNvbWUgYSBsaWdodCBpbnRvIHRoZSB3b3JsZCwgdGhhdCB3aG9zb2V2ZXIgYmVsaWV2ZXRoIG9uIG1lIHNob3VsZCBub3QgYWJpZGUgaW4gZGFya25lc3MuCkFuZCBpZiBhbnkgbWFuIGhlYXIgbXkgd29yZHMsIGFuZCBiZWxpZXZlIG5vdCwgSSBqdWRnZSBoaW0gbm90OiBmb3IgSSBjYW1lIG5vdCB0byBqdWRnZSB0aGUgd29ybGQsIGJ1dCB0byBzYXZlIHRoZSB3b3JsZC4KSGUgdGhhdCByZWplY3RldGggbWUsIGFuZCByZWNlaXZldGggbm90IG15IHdvcmRzLCBoYXRoIG9uZSB0aGF0IGp1ZGdldGggaGltOiB0aGUgd29yZCB0aGF0IEkgaGF2ZSBzcG9rZW4sIHRoZSBzYW1lIHNoYWxsIGp1ZGdlIGhpbSBpbiB0aGUgbGFzdCBkYXkuCkZvciBJIGhhdmUgbm90IHNwb2tlbiBvZiBteXNlbGY7IGJ1dCB0aGUgRmF0aGVyIHdoaWNoIHNlbnQgbWUsIGhlIGdhdmUgbWUgYSBjb21tYW5kbWVudCwgd2hhdCBJIHNob3VsZCBzYXksIGFuZCB3aGF0IEkgc2hvdWxkIHNwZWFrLgpBbmQgSSBrbm93IHRoYXQgaGlzIGNvbW1hbmRtZW50IGlzIGxpZmUgZXZlcmxhc3Rpbmc6IHdoYXRzb2V2ZXIgSSBzcGVhayB0aGVyZWZvcmUsIGV2ZW4gYXMgdGhlIEZhdGhlciBzYWlkIHVudG8gbWUsIHNvIEkgc3BlYWsuCk5vdyBiZWZvcmUgdGhlIGZlYXN0IG9mIHRoZSBwYXNzb3Zlciwgd2hlbiBKZXN1cyBrbmV3IHRoYXQgaGlzIGhvdXIgd2FzIGNvbWUgdGhhdCBoZSBzaG91bGQgZGVwYXJ0IG91dCBvZiB0aGlzIHdvcmxkIHVudG8gdGhlIEZhdGhlciwgaGF2aW5nIGxvdmVkIGhpcyBvd24gd2hpY2ggd2VyZSBpbiB0aGUgd29ybGQsIGhlIGxvdmVkIHRoZW0gdW50byB0aGUgZW5kLgpBbmQgc3VwcGVyIGJlaW5nIGVuZGVkLCB0aGUgZGV2aWwgaGF2aW5nIG5vdyBwdXQgaW50byB0aGUgaGVhcnQgb2YgSnVkYXMgSXNjYXJpb3QsIFNpbW9uJ3Mgc29uLCB0byBiZXRyYXkgaGltOwpKZXN1cyBrbm93aW5nIHRoYXQgdGhlIEZhdGhlciBoYWQgZ2l2ZW4gYWxsIHRoaW5ncyBpbnRvIGhpcyBoYW5kcywgYW5kIHRoYXQgaGUgd2FzIGNvbWUgZnJvbSBHb2QsIGFuZCB3ZW50IHRvIEdvZDsKSGUgcmlzZXRoIGZyb20gc3VwcGVyLCBhbmQgbGFpZCBhc2lkZSBoaXMgZ2FybWVudHM7IGFuZCB0b29rIGEgdG93ZWwsIGFuZCBnaXJkZWQgaGltc2VsZi4KQWZ0ZXIgdGhhdCBoZSBwb3VyZXRoIHdhdGVyIGludG8gYSBiYXNvbiwgYW5kIGJlZ2FuIHRvIHdhc2ggdGhlIGRpc2NpcGxlcycgZmVldCwgYW5kIHRvIHdpcGUgdGhlbSB3aXRoIHRoZSB0b3dlbCB3aGVyZXdpdGggaGUgd2FzIGdpcmRlZC4KVGhlbiBjb21ldGggaGUgdG8gU2ltb24gUGV0ZXI6IGFuZCBQZXRlciBzYWl0aCB1bnRvIGhpbSwgTG9yZCwgZG9zdCB0aG91IHdhc2ggbXkgZmVldD8KSmVzdXMgYW5zd2VyZWQgYW5kIHNhaWQgdW50byBoaW0sIFdoYXQgSSBkbyB0aG91IGtub3dlc3Qgbm90IG5vdzsgYnV0IHRob3Ugc2hhbHQga25vdyBoZXJlYWZ0ZXIuClBldGVyIHNhaXRoIHVudG8gaGltLCBUaG91IHNoYWx0IG5ldmVyIHdhc2ggbXkgZmVldC4gSmVzdXMgYW5zd2VyZWQgaGltLCBJZiBJIHdhc2ggdGhlZSBub3QsIHRob3UgaGFzdCBubyBwYXJ0IHdpdGggbWUuClNpbW9uIFBldGVyIHNhaXRoIHVudG8gaGltLCBMb3JkLCBub3QgbXkgZmVldCBvbmx5LCBidXQgYWxzbyBteSBoYW5kcyBhbmQgbXkgaGVhZC4KSmVzdXMgc2FpdGggdG8gaGltLCBIZSB0aGF0IGlzIHdhc2hlZCBuZWVkZXRoIG5vdCBzYXZlIHRvIHdhc2ggaGlzIGZlZXQsIGJ1dCBpcyBjbGVhbiBldmVyeSB3aGl0OiBhbmQgeWUgYXJlIGNsZWFuLCBidXQgbm90IGFsbC4KRm9yIGhlIGtuZXcgd2hvIHNob3VsZCBiZXRyYXkgaGltOyB0aGVyZWZvcmUgc2FpZCBoZSwgWWUgYXJlIG5vdCBhbGwgY2xlYW4uClNvIGFmdGVyIGhlIGhhZCB3YXNoZWQgdGhlaXIgZmVldCwgYW5kIGhhZCB0YWtlbiBoaXMgZ2FybWVudHMsIGFuZCB3YXMgc2V0IGRvd24gYWdhaW4sIGhlIHNhaWQgdW50byB0aGVtLCBLbm93IHllIHdoYXQgSSBoYXZlIGRvbmUgdG8geW91PwpZZSBjYWxsIG1lIE1hc3RlciBhbmQgTG9yZDogYW5kIHllIHNheSB3ZWxsOyBmb3Igc28gSSBhbS4KSWYgSSB0aGVuLCB5b3VyIExvcmQgYW5kIE1hc3RlciwgaGF2ZSB3YXNoZWQgeW91ciBmZWV0OyB5ZSBhbHNvIG91Z2h0IHRvIHdhc2ggb25lIGFub3RoZXIncyBmZWV0LgpGb3IgSSBoYXZlIGdpdmVuIHlvdSBhbiBleGFtcGxlLCB0aGF0IHllIHNob3VsZCBkbyBhcyBJIGhhdmUgZG9uZSB0byB5b3UuClZlcmlseSwgdmVyaWx5LCBJIHNheSB1bnRvIHlvdSwgVGhlIHNlcnZhbnQgaXMgbm90IGdyZWF0ZXIgdGhhbiBoaXMgbG9yZDsgbmVpdGhlciBoZSB0aGF0IGlzIHNlbnQgZ3JlYXRlciB0aGFuIGhlIHRoYXQgc2VudCBoaW0uCklmIHllIGtub3cgdGhlc2UgdGhpbmdzLCBoYXBweSBhcmUgeWUgaWYgeWUgZG8gdGhlbS4KSSBzcGVhayBub3Qgb2YgeW91IGFsbDogSSBrbm93IHdob20gSSBoYXZlIGNob3NlbjogYnV0IHRoYXQgdGhlIHNjcmlwdHVyZSBtYXkgYmUgZnVsZmlsbGVkLCBIZSB0aGF0IGVhdGV0aCBicmVhZCB3aXRoIG1lIGhhdGggbGlmdGVkIHVwIGhpcyBoZWVsIGFnYWluc3QgbWUuCk5vdyBJIHRlbGwgeW91IGJlZm9yZSBpdCBjb21lLCB0aGF0LCB3aGVuIGl0IGlzIGNvbWUgdG8gcGFzcywgeWUgbWF5IGJlbGlldmUgdGhhdCBJIGFtIGhlLgpWZXJpbHksIHZlcmlseSwgSSBzYXkgdW50byB5b3UsIEhlIHRoYXQgcmVjZWl2ZXRoIHdob21zb2V2ZXIgSSBzZW5kIHJlY2VpdmV0aCBtZTsgYW5kIGhlIHRoYXQgcmVjZWl2ZXRoIG1lIHJlY2VpdmV0aCBoaW0gdGhhdCBzZW50IG1lLgpXaGVuIEplc3VzIGhhZCB0aHVzIHNhaWQsIGhlIHdhcyB0cm91YmxlZCBpbiBzcGlyaXQsIGFuZCB0ZXN0aWZpZWQsIGFuZCBzYWlkLCBWZXJpbHksIHZlcmlseSwgSSBzYXkgdW50byB5b3UsIHRoYXQgb25lIG9mIHlvdSBzaGFsbCBiZXRyYXkgbWUuClRoZW4gdGhlIGRpc2NpcGxlcyBsb29rZWQgb25lIG9uIGFub3RoZXIsIGRvdWJ0aW5nIG9mIHdob20gaGUgc3Bha2UuCk5vdyB0aGVyZSB3YXMgbGVhbmluZyBvbiBKZXN1cycgYm9zb20gb25lIG9mIGhpcyBkaXNjaXBsZXMsIHdob20gSmVzdXMgbG92ZWQuClNpbW9uIFBldGVyIHRoZXJlZm9yZSBiZWNrb25lZCB0byBoaW0sIHRoYXQgaGUgc2hvdWxkIGFzayB3aG8gaXQgc2hvdWxkIGJlIG9mIHdob20gaGUgc3Bha2UuCkhlIHRoZW4gbHlpbmcgb24gSmVzdXMnIGJyZWFzdCBzYWl0aCB1bnRvIGhpbSwgTG9yZCwgd2hvIGlzIGl0PwpKZXN1cyBhbnN3ZXJlZCwgSGUgaXQgaXMsIHRvIHdob20gSSBzaGFsbCBnaXZlIGEgc29wLCB3aGVuIEkgaGF2ZSBkaXBwZWQgaXQuIEFuZCB3aGVuIGhlIGhhZCBkaXBwZWQgdGhlIHNvcCwgaGUgZ2F2ZSBpdCB0byBKdWRhcyBJc2NhcmlvdCwgdGhlIHNvbiBvZiBTaW1vbi4KQW5kIGFmdGVyIHRoZSBzb3AgU2F0YW4gZW50ZXJlZCBpbnRvIGhpbS4gVGhlbiBzYWlkIEplc3VzIHVudG8gaGltLCBUaGF0IHRob3UgZG9lc3QsIGRvIHF1aWNrbHkuCk5vdyBubyBtYW4gYXQgdGhlIHRhYmxlIGtuZXcgZm9yIHdoYXQgaW50ZW50IGhlIHNwYWtlIHRoaXMgdW50byBoaW0uCkZvciBzb21lIG9mIHRoZW0gdGhvdWdodCwgYmVjYXVzZSBKdWRhcyBoYWQgdGhlIGJhZywgdGhhdCBKZXN1cyBoYWQgc2FpZCB1bnRvIGhpbSwgQnV5IHRob3NlIHRoaW5ncyB0aGF0IHdlIGhhdmUgbmVlZCBvZiBhZ2FpbnN0IHRoZSBmZWFzdDsgb3IsIHRoYXQgaGUgc2hvdWxkIGdpdmUgc29tZXRoaW5nIHRvIHRoZSBwb29yLgpIZSB0aGVuIGhhdmluZyByZWNlaXZlZCB0aGUgc29wIHdlbnQgaW1tZWRpYXRlbHkgb3V0OiBhbmQgaXQgd2FzIG5pZ2h0LgpUaGVyZWZvcmUsIHdoZW4gaGUgd2FzIGdvbmUgb3V0LCBKZXN1cyBzYWlkLCBOb3cgaXMgdGhlIFNvbiBvZiBtYW4gZ2xvcmlmaWVkLCBhbmQgR29kIGlzIGdsb3JpZmllZCBpbiBoaW0uCklmIEdvZCBiZSBnbG9yaWZpZWQgaW4gaGltLCBHb2Qgc2hhbGwgYWxzbyBnbG9yaWZ5IGhpbSBpbiBoaW1zZWxmLCBhbmQgc2hhbGwgc3RyYWlnaHR3YXkgZ2xvcmlmeSBoaW0uCkxpdHRsZSBjaGlsZHJlbiwgeWV0IGEgbGl0dGxlIHdoaWxlIEkgYW0gd2l0aCB5b3UuIFllIHNoYWxsIHNlZWsgbWU6IGFuZCBhcyBJIHNhaWQgdW50byB0aGUgSmV3cywgV2hpdGhlciBJIGdvLCB5ZSBjYW5ub3QgY29tZTsgc28gbm93IEkgc2F5IHRvIHlvdS4KQSBuZXcgY29tbWFuZG1lbnQgSSBnaXZlIHVudG8geW91LCBUaGF0IHllIGxvdmUgb25lIGFub3RoZXI7IGFzIEkgaGF2ZSBsb3ZlZCB5b3UsIHRoYXQgeWUgYWxzbyBsb3ZlIG9uZSBhbm90aGVyLgpCeSB0aGlzIHNoYWxsIGFsbCBtZW4ga25vdyB0aGF0IHllIGFyZSBteSBkaXNjaXBsZXMsIGlmIHllIGhhdmUgbG92ZSBvbmUgdG8gYW5vdGhlci4KU2ltb24gUGV0ZXIgc2FpZCB1bnRvIGhpbSwgTG9yZCwgd2hpdGhlciBnb2VzdCB0aG91PyBKZXN1cyBhbnN3ZXJlZCBoaW0sIFdoaXRoZXIgSSBnbywgdGhvdSBjYW5zdCBub3QgZm9sbG93IG1lIG5vdzsgYnV0IHRob3Ugc2hhbHQgZm9sbG93IG1lIGFmdGVyd2FyZHMuClBldGVyIHNhaWQgdW50byBoaW0sIExvcmQsIHdoeSBjYW5ub3QgSSBmb2xsb3cgdGhlZSBub3c/IEkgd2lsbCBsYXkgZG93biBteSBsaWZlIGZvciB0aHkgc2FrZS4KSmVzdXMgYW5zd2VyZWQgaGltLCBXaWx0IHRob3UgbGF5IGRvd24gdGh5IGxpZmUgZm9yIG15IHNha2U/IFZlcmlseSwgdmVyaWx5LCBJIHNheSB1bnRvIHRoZWUsIFRoZSBjb2NrIHNoYWxsIG5vdCBjcm93LCB0aWxsIHRob3UgaGFzdCBkZW5pZWQgbWUgdGhyaWNlLgpMZXQgbm90IHlvdXIgaGVhcnQgYmUgdHJvdWJsZWQ6IHllIGJlbGlldmUgaW4gR29kLCBiZWxpZXZlIGFsc28gaW4gbWUuCkluIG15IEZhdGhlcidzIGhvdXNlIGFyZSBtYW55IG1hbnNpb25zOiBpZiBpdCB3ZXJlIG5vdCBzbywgSSB3b3VsZCBoYXZlIHRvbGQgeW91LiBJIGdvIHRvIHByZXBhcmUgYSBwbGFjZSBmb3IgeW91LgpBbmQgaWYgSSBnbyBhbmQgcHJlcGFyZSBhIHBsYWNlIGZvciB5b3UsIEkgd2lsbCBjb21lIGFnYWluLCBhbmQgcmVjZWl2ZSB5b3UgdW50byBteXNlbGY7IHRoYXQgd2hlcmUgSSBhbSwgdGhlcmUgeWUgbWF5IGJlIGFsc28uCkFuZCB3aGl0aGVyIEkgZ28geWUga25vdywgYW5kIHRoZSB3YXkgeWUga25vdy4KVGhvbWFzIHNhaXRoIHVudG8gaGltLCBMb3JkLCB3ZSBrbm93IG5vdCB3aGl0aGVyIHRob3UgZ29lc3Q7IGFuZCBob3cgY2FuIHdlIGtub3cgdGhlIHdheT8KSmVzdXMgc2FpdGggdW50byBoaW0sIEkgYW0gdGhlIHdheSwgdGhlIHRydXRoLCBhbmQgdGhlIGxpZmU6IG5vIG1hbiBjb21ldGggdW50byB0aGUgRmF0aGVyLCBidXQgYnkgbWUuCklmIHllIGhhZCBrbm93biBtZSwgeWUgc2hvdWxkIGhhdmUga25vd24gbXkgRmF0aGVyIGFsc286IGFuZCBmcm9tIGhlbmNlZm9ydGggeWUga25vdyBoaW0sIGFuZCBoYXZlIHNlZW4gaGltLgpQaGlsaXAgc2FpdGggdW50byBoaW0sIExvcmQsIHNoZXcgdXMgdGhlIEZhdGhlciwgYW5kIGl0IHN1ZmZpY2V0aCB1cy4KSmVzdXMgc2FpdGggdW50byBoaW0sIEhhdmUgSSBiZWVuIHNvIGxvbmcgdGltZSB3aXRoIHlvdSwgYW5kIHlldCBoYXN0IHRob3Ugbm90IGtub3duIG1lLCBQaGlsaXA/IGhlIHRoYXQgaGF0aCBzZWVuIG1lIGhhdGggc2VlbiB0aGUgRmF0aGVyOyBhbmQgaG93IHNheWVzdCB0aG91IHRoZW4sIFNoZXcgdXMgdGhlIEZhdGhlcj8KQmVsaWV2ZXN0IHRob3Ugbm90IHRoYXQgSSBhbSBpbiB0aGUgRmF0aGVyLCBhbmQgdGhlIEZhdGhlciBpbiBtZT8gdGhlIHdvcmRzIHRoYXQgSSBzcGVhayB1bnRvIHlvdSBJIHNwZWFrIG5vdCBvZiBteXNlbGY6IGJ1dCB0aGUgRmF0aGVyIHRoYXQgZHdlbGxldGggaW4gbWUsIGhlIGRvZXRoIHRoZSB3b3Jrcy4KQmVsaWV2ZSBtZSB0aGF0IEkgYW0gaW4gdGhlIEZhdGhlciwgYW5kIHRoZSBGYXRoZXIgaW4gbWU6IG9yIGVsc2UgYmVsaWV2ZSBtZSBmb3IgdGhlIHZlcnkgd29ya3MnIHNha2UuClZlcmlseSwgdmVyaWx5LCBJIHNheSB1bnRvIHlvdSwgSGUgdGhhdCBiZWxpZXZldGggb24gbWUsIHRoZSB3b3JrcyB0aGF0IEkgZG8gc2hhbGwgaGUgZG8gYWxzbzsgYW5kIGdyZWF0ZXIgd29ya3MgdGhhbiB0aGVzZSBzaGFsbCBoZSBkbzsgYmVjYXVzZSBJIGdvIHVudG8gbXkgRmF0aGVyLgpBbmQgd2hhdHNvZXZlciB5ZSBzaGFsbCBhc2sgaW4gbXkgbmFtZSwgdGhhdCB3aWxsIEkgZG8sIHRoYXQgdGhlIEZhdGhlciBtYXkgYmUgZ2xvcmlmaWVkIGluIHRoZSBTb24uCklmIHllIHNoYWxsIGFzayBhbnkgdGhpbmcgaW4gbXkgbmFtZSwgSSB3aWxsIGRvIGl0LgpJZiB5ZSBsb3ZlIG1lLCBrZWVwIG15IGNvbW1hbmRtZW50cy4KQW5kIEkgd2lsbCBwcmF5IHRoZSBGYXRoZXIsIGFuZCBoZSBzaGFsbCBnaXZlIHlvdSBhbm90aGVyIENvbWZvcnRlciwgdGhhdCBoZSBtYXkgYWJpZGUgd2l0aCB5b3UgZm9yIGV2ZXI7CkV2ZW4gdGhlIFNwaXJpdCBvZiB0cnV0aDsgd2hvbSB0aGUgd29ybGQgY2Fubm90IHJlY2VpdmUsIGJlY2F1c2UgaXQgc2VldGggaGltIG5vdCwgbmVpdGhlciBrbm93ZXRoIGhpbTogYnV0IHllIGtub3cgaGltOyBmb3IgaGUgZHdlbGxldGggd2l0aCB5b3UsIGFuZCBzaGFsbCBiZSBpbiB5b3UuCkkgd2lsbCBub3QgbGVhdmUgeW91IGNvbWZvcnRsZXNzOiBJIHdpbGwgY29tZSB0byB5b3UuCllldCBhIGxpdHRsZSB3aGlsZSwgYW5kIHRoZSB3b3JsZCBzZWV0aCBtZSBubyBtb3JlOyBidXQgeWUgc2VlIG1lOiBiZWNhdXNlIEkgbGl2ZSwgeWUgc2hhbGwgbGl2ZSBhbHNvLgpBdCB0aGF0IGRheSB5ZSBzaGFsbCBrbm93IHRoYXQgSSBhbSBpbiBteSBGYXRoZXIsIGFuZCB5ZSBpbiBtZSwgYW5kIEkgaW4geW91LgpIZSB0aGF0IGhhdGggbXkgY29tbWFuZG1lbnRzLCBhbmQga2VlcGV0aCB0aGVtLCBoZSBpdCBpcyB0aGF0IGxvdmV0aCBtZTogYW5kIGhlIHRoYXQgbG92ZXRoIG1lIHNoYWxsIGJlIGxvdmVkIG9mIG15IEZhdGhlciwgYW5kIEkgd2lsbCBsb3ZlIGhpbSwgYW5kIHdpbGwgbWFuaWZlc3QgbXlzZWxmIHRvIGhpbS4KSnVkYXMgc2FpdGggdW50byBoaW0sIG5vdCBJc2NhcmlvdCwgTG9yZCwgaG93IGlzIGl0IHRoYXQgdGhvdSB3aWx0IG1hbmlmZXN0IHRoeXNlbGYgdW50byB1cywgYW5kIG5vdCB1bnRvIHRoZSB3b3JsZD8KSmVzdXMgYW5zd2VyZWQgYW5kIHNhaWQgdW50byBoaW0sIElmIGEgbWFuIGxvdmUgbWUsIGhlIHdpbGwga2VlcCBteSB3b3JkczogYW5kIG15IEZhdGhlciB3aWxsIGxvdmUgaGltLCBhbmQgd2Ugd2lsbCBjb21lIHVudG8gaGltLCBhbmQgbWFrZSBvdXIgYWJvZGUgd2l0aCBoaW0uCkhlIHRoYXQgbG92ZXRoIG1lIG5vdCBrZWVwZXRoIG5vdCBteSBzYXlpbmdzOiBhbmQgdGhlIHdvcmQgd2hpY2ggeWUgaGVhciBpcyBub3QgbWluZSwgYnV0IHRoZSBGYXRoZXIncyB3aGljaCBzZW50IG1lLgpUaGVzZSB0aGluZ3MgaGF2ZSBJIHNwb2tlbiB1bnRvIHlvdSwgYmVpbmcgeWV0IHByZXNlbnQgd2l0aCB5b3UuCkJ1dCB0aGUgQ29tZm9ydGVyLCB3aGljaCBpcyB0aGUgSG9seSBHaG9zdCwgd2hvbSB0aGUgRmF0aGVyIHdpbGwgc2VuZCBpbiBteSBuYW1lLCBoZSBzaGFsbCB0ZWFjaCB5b3UgYWxsIHRoaW5ncywgYW5kIGJyaW5nIGFsbCB0aGluZ3MgdG8geW91ciByZW1lbWJyYW5jZSwgd2hhdHNvZXZlciBJIGhhdmUgc2FpZCB1bnRvIHlvdS4KUGVhY2UgSSBsZWF2ZSB3aXRoIHlvdSwgbXkgcGVhY2UgSSBnaXZlIHVudG8geW91OiBub3QgYXMgdGhlIHdvcmxkIGdpdmV0aCwgZ2l2ZSBJIHVudG8geW91LiBMZXQgbm90IHlvdXIgaGVhcnQgYmUgdHJvdWJsZWQsIG5laXRoZXIgbGV0IGl0IGJlIGFmcmFpZC4KWWUgaGF2ZSBoZWFyZCBob3cgSSBzYWlkIHVudG8geW91LCBJIGdvIGF3YXksIGFuZCBjb21lIGFnYWluIHVudG8geW91LiBJZiB5ZSBsb3ZlZCBtZSwgeWUgd291bGQgcmVqb2ljZSwgYmVjYXVzZSBJIHNhaWQsIEkgZ28gdW50byB0aGUgRmF0aGVyOiBmb3IgbXkgRmF0aGVyIGlzIGdyZWF0ZXIgdGhhbiBJLgpBbmQgbm93IEkgaGF2ZSB0b2xkIHlvdSBiZWZvcmUgaXQgY29tZSB0byBwYXNzLCB0aGF0LCB3aGVuIGl0IGlzIGNvbWUgdG8gcGFzcywgeWUgbWlnaHQgYmVsaWV2ZS4KSGVyZWFmdGVyIEkgd2lsbCBub3QgdGFsayBtdWNoIHdpdGggeW91OiBmb3IgdGhlIHByaW5jZSBvZiB0aGlzIHdvcmxkIGNvbWV0aCwgYW5kIGhhdGggbm90aGluZyBpbiBtZS4KQnV0IHRoYXQgdGhlIHdvcmxkIG1heSBrbm93IHRoYXQgSSBsb3ZlIHRoZSBGYXRoZXI7IGFuZCBhcyB0aGUgRmF0aGVyIGdhdmUgbWUgY29tbWFuZG1lbnQsIGV2ZW4gc28gSSBkby4gQXJpc2UsIGxldCB1cyBnbyBoZW5jZS4KSSBhbSB0aGUgdHJ1ZSB2aW5lLCBhbmQgbXkgRmF0aGVyIGlzIHRoZSBodXNiYW5kbWFuLgpFdmVyeSBicmFuY2ggaW4gbWUgdGhhdCBiZWFyZXRoIG5vdCBmcnVpdCBoZSB0YWtldGggYXdheTogYW5kIGV2ZXJ5IGJyYW5jaCB0aGF0IGJlYXJldGggZnJ1aXQsIGhlIHB1cmdldGggaXQsIHRoYXQgaXQgbWF5IGJyaW5nIGZvcnRoIG1vcmUgZnJ1aXQuCk5vdyB5ZSBhcmUgY2xlYW4gdGhyb3VnaCB0aGUgd29yZCB3aGljaCBJIGhhdmUgc3Bva2VuIHVudG8geW91LgpBYmlkZSBpbiBtZSwgYW5kIEkgaW4geW91LiBBcyB0aGUgYnJhbmNoIGNhbm5vdCBiZWFyIGZydWl0IG9mIGl0c2VsZiwgZXhjZXB0IGl0IGFiaWRlIGluIHRoZSB2aW5lOyBubyBtb3JlIGNhbiB5ZSwgZXhjZXB0IHllIGFiaWRlIGluIG1lLgpJIGFtIHRoZSB2aW5lLCB5ZSBhcmUgdGhlIGJyYW5jaGVzOiBIZSB0aGF0IGFiaWRldGggaW4gbWUsIGFuZCBJIGluIGhpbSwgdGhlIHNhbWUgYnJpbmdldGggZm9ydGggbXVjaCBmcnVpdDogZm9yIHdpdGhvdXQgbWUgeWUgY2FuIGRvIG5vdGhpbmcuCklmIGEgbWFuIGFiaWRlIG5vdCBpbiBtZSwgaGUgaXMgY2FzdCBmb3J0aCBhcyBhIGJyYW5jaCwgYW5kIGlzIHdpdGhlcmVkOyBhbmQgbWVuIGdhdGhlciB0aGVtLCBhbmQgY2FzdCB0aGVtIGludG8gdGhlIGZpcmUsIGFuZCB0aGV5IGFyZSBidXJuZWQuCklmIHllIGFiaWRlIGluIG1lLCBhbmQgbXkgd29yZHMgYWJpZGUgaW4geW91LCB5ZSBzaGFsbCBhc2sgd2hhdCB5ZSB3aWxsLCBhbmQgaXQgc2hhbGwgYmUgZG9uZSB1bnRvIHlvdS4KSGVyZWluIGlzIG15IEZhdGhlciBnbG9yaWZpZWQsIHRoYXQgeWUgYmVhciBtdWNoIGZydWl0OyBzbyBzaGFsbCB5ZSBiZSBteSBkaXNjaXBsZXMuCkFzIHRoZSBGYXRoZXIgaGF0aCBsb3ZlZCBtZSwgc28gaGF2ZSBJIGxvdmVkIHlvdTogY29udGludWUgeWUgaW4gbXkgbG92ZS4KSWYgeWUga2VlcCBteSBjb21tYW5kbWVudHMsIHllIHNoYWxsIGFiaWRlIGluIG15IGxvdmU7IGV2ZW4gYXMgSSBoYXZlIGtlcHQgbXkgRmF0aGVyJ3MgY29tbWFuZG1lbnRzLCBhbmQgYWJpZGUgaW4gaGlzIGxvdmUuClRoZXNlIHRoaW5ncyBoYXZlIEkgc3Bva2VuIHVudG8geW91LCB0aGF0IG15IGpveSBtaWdodCByZW1haW4gaW4geW91LCBhbmQgdGhhdCB5b3VyIGpveSBtaWdodCBiZSBmdWxsLgpUaGlzIGlzIG15IGNvbW1hbmRtZW50LCBUaGF0IHllIGxvdmUgb25lIGFub3RoZXIsIGFzIEkgaGF2ZSBsb3ZlZCB5b3UuCkdyZWF0ZXIgbG92ZSBoYXRoIG5vIG1hbiB0aGFuIHRoaXMsIHRoYXQgYSBtYW4gbGF5IGRvd24gaGlzIGxpZmUgZm9yIGhpcyBmcmllbmRzLgpZZSBhcmUgbXkgZnJpZW5kcywgaWYgeWUgZG8gd2hhdHNvZXZlciBJIGNvbW1hbmQgeW91LgpIZW5jZWZvcnRoIEkgY2FsbCB5b3Ugbm90IHNlcnZhbnRzOyBmb3IgdGhlIHNlcnZhbnQga25vd2V0aCBub3Qgd2hhdCBoaXMgbG9yZCBkb2V0aDogYnV0IEkgaGF2ZSBjYWxsZWQgeW91IGZyaWVuZHM7IGZvciBhbGwgdGhpbmdzIHRoYXQgSSBoYXZlIGhlYXJkIG9mIG15IEZhdGhlciBJIGhhdmUgbWFkZSBrbm93biB1bnRvIHlvdS4KWWUgaGF2ZSBub3QgY2hvc2VuIG1lLCBidXQgSSBoYXZlIGNob3NlbiB5b3UsIGFuZCBvcmRhaW5lZCB5b3UsIHRoYXQgeWUgc2hvdWxkIGdvIGFuZCBicmluZyBmb3J0aCBmcnVpdCwgYW5kIHRoYXQgeW91ciBmcnVpdCBzaG91bGQgcmVtYWluOiB0aGF0IHdoYXRzb2V2ZXIgeWUgc2hhbGwgYXNrIG9mIHRoZSBGYXRoZXIgaW4gbXkgbmFtZSwgaGUgbWF5IGdpdmUgaXQgeW91LgpUaGVzZSB0aGluZ3MgSSBjb21tYW5kIHlvdSwgdGhhdCB5ZSBsb3ZlIG9uZSBhbm90aGVyLgpJZiB0aGUgd29ybGQgaGF0ZSB5b3UsIHllIGtub3cgdGhhdCBpdCBoYXRlZCBtZSBiZWZvcmUgaXQgaGF0ZWQgeW91LgpJZiB5ZSB3ZXJlIG9mIHRoZSB3b3JsZCwgdGhlIHdvcmxkIHdvdWxkIGxvdmUgaGlzIG93bjogYnV0IGJlY2F1c2UgeWUgYXJlIG5vdCBvZiB0aGUgd29ybGQsIGJ1dCBJIGhhdmUgY2hvc2VuIHlvdSBvdXQgb2YgdGhlIHdvcmxkLCB0aGVyZWZvcmUgdGhlIHdvcmxkIGhhdGV0aCB5b3UuClJlbWVtYmVyIHRoZSB3b3JkIHRoYXQgSSBzYWlkIHVudG8geW91LCBUaGUgc2VydmFudCBpcyBub3QgZ3JlYXRlciB0aGFuIGhpcyBsb3JkLiBJZiB0aGV5IGhhdmUgcGVyc2VjdXRlZCBtZSwgdGhleSB3aWxsIGFsc28gcGVyc2VjdXRlIHlvdTsgaWYgdGhleSBoYXZlIGtlcHQgbXkgc2F5aW5nLCB0aGV5IHdpbGwga2VlcCB5b3VycyBhbHNvLgpCdXQgYWxsIHRoZXNlIHRoaW5ncyB3aWxsIHRoZXkgZG8gdW50byB5b3UgZm9yIG15IG5hbWUncyBzYWtlLCBiZWNhdXNlIHRoZXkga25vdyBub3QgaGltIHRoYXQgc2VudCBtZS4KSWYgSSBoYWQgbm90IGNvbWUgYW5kIHNwb2tlbiB1bnRvIHRoZW0sIHRoZXkgaGFkIG5vdCBoYWQgc2luOiBidXQgbm93IHRoZXkgaGF2ZSBubyBjbG9hayBmb3IgdGhlaXIgc2luLgpIZSB0aGF0IGhhdGV0aCBtZSBoYXRldGggbXkgRmF0aGVyIGFsc28uCklmIEkgaGFkIG5vdCBkb25lIGFtb25nIHRoZW0gdGhlIHdvcmtzIHdoaWNoIG5vbmUgb3RoZXIgbWFuIGRpZCwgdGhleSBoYWQgbm90IGhhZCBzaW46IGJ1dCBub3cgaGF2ZSB0aGV5IGJvdGggc2VlbiBhbmQgaGF0ZWQgYm90aCBtZSBhbmQgbXkgRmF0aGVyLgpCdXQgdGhpcyBjb21ldGggdG8gcGFzcywgdGhhdCB0aGUgd29yZCBtaWdodCBiZSBmdWxmaWxsZWQgdGhhdCBpcyB3cml0dGVuIGluIHRoZWlyIGxhdywgVGhleSBoYXRlZCBtZSB3aXRob3V0IGEgY2F1c2UuCkJ1dCB3aGVuIHRoZSBDb21mb3J0ZXIgaXMgY29tZSwgd2hvbSBJIHdpbGwgc2VuZCB1bnRvIHlvdSBmcm9tIHRoZSBGYXRoZXIsIGV2ZW4gdGhlIFNwaXJpdCBvZiB0cnV0aCwgd2hpY2ggcHJvY2VlZGV0aCBmcm9tIHRoZSBGYXRoZXIsIGhlIHNoYWxsIHRlc3RpZnkgb2YgbWU6CkFuZCB5ZSBhbHNvIHNoYWxsIGJlYXIgd2l0bmVzcywgYmVjYXVzZSB5ZSBoYXZlIGJlZW4gd2l0aCBtZSBmcm9tIHRoZSBiZWdpbm5pbmcuClRoZXNlIHRoaW5ncyBoYXZlIEkgc3Bva2VuIHVudG8geW91LCB0aGF0IHllIHNob3VsZCBub3QgYmUgb2ZmZW5kZWQuClRoZXkgc2hhbGwgcHV0IHlvdSBvdXQgb2YgdGhlIHN5bmFnb2d1ZXM6IHllYSwgdGhlIHRpbWUgY29tZXRoLCB0aGF0IHdob3NvZXZlciBraWxsZXRoIHlvdSB3aWxsIHRoaW5rIHRoYXQgaGUgZG9ldGggR29kIHNlcnZpY2UuCkFuZCB0aGVzZSB0aGluZ3Mgd2lsbCB0aGV5IGRvIHVudG8geW91LCBiZWNhdXNlIHRoZXkgaGF2ZSBub3Qga25vd24gdGhlIEZhdGhlciwgbm9yIG1lLgpCdXQgdGhlc2UgdGhpbmdzIGhhdmUgSSB0b2xkIHlvdSwgdGhhdCB3aGVuIHRoZSB0aW1lIHNoYWxsIGNvbWUsIHllIG1heSByZW1lbWJlciB0aGF0IEkgdG9sZCB5b3Ugb2YgdGhlbS4gQW5kIHRoZXNlIHRoaW5ncyBJIHNhaWQgbm90IHVudG8geW91IGF0IHRoZSBiZWdpbm5pbmcsIGJlY2F1c2UgSSB3YXMgd2l0aCB5b3UuCkJ1dCBub3cgSSBnbyBteSB3YXkgdG8gaGltIHRoYXQgc2VudCBtZTsgYW5kIG5vbmUgb2YgeW91IGFza2V0aCBtZSwgV2hpdGhlciBnb2VzdCB0aG91PwpCdXQgYmVjYXVzZSBJIGhhdmUgc2FpZCB0aGVzZSB0aGluZ3MgdW50byB5b3UsIHNvcnJvdyBoYXRoIGZpbGxlZCB5b3VyIGhlYXJ0LgpOZXZlcnRoZWxlc3MgSSB0ZWxsIHlvdSB0aGUgdHJ1dGg7IEl0IGlzIGV4cGVkaWVudCBmb3IgeW91IHRoYXQgSSBnbyBhd2F5OiBmb3IgaWYgSSBnbyBub3QgYXdheSwgdGhlIENvbWZvcnRlciB3aWxsIG5vdCBjb21lIHVudG8geW91OyBidXQgaWYgSSBkZXBhcnQsIEkgd2lsbCBzZW5kIGhpbSB1bnRvIHlvdS4KQW5kIHdoZW4gaGUgaXMgY29tZSwgaGUgd2lsbCByZXByb3ZlIHRoZSB3b3JsZCBvZiBzaW4sIGFuZCBvZiByaWdodGVvdXNuZXNzLCBhbmQgb2YganVkZ21lbnQ6Ck9mIHNpbiwgYmVjYXVzZSB0aGV5IGJlbGlldmUgbm90IG9uIG1lOwpPZiByaWdodGVvdXNuZXNzLCBiZWNhdXNlIEkgZ28gdG8gbXkgRmF0aGVyLCBhbmQgeWUgc2VlIG1lIG5vIG1vcmU7Ck9mIGp1ZGdtZW50LCBiZWNhdXNlIHRoZSBwcmluY2Ugb2YgdGhpcyB3b3JsZCBpcyBqdWRnZWQuCkkgaGF2ZSB5ZXQgbWFueSB0aGluZ3MgdG8gc2F5IHVudG8geW91LCBidXQgeWUgY2Fubm90IGJlYXIgdGhlbSBub3cuCkhvd2JlaXQgd2hlbiBoZSwgdGhlIFNwaXJpdCBvZiB0cnV0aCwgaXMgY29tZSwgaGUgd2lsbCBndWlkZSB5b3UgaW50byBhbGwgdHJ1dGg6IGZvciBoZSBzaGFsbCBub3Qgc3BlYWsgb2YgaGltc2VsZjsgYnV0IHdoYXRzb2V2ZXIgaGUgc2hhbGwgaGVhciwgdGhhdCBzaGFsbCBoZSBzcGVhazogYW5kIGhlIHdpbGwgc2hldyB5b3UgdGhpbmdzIHRvIGNvbWUuCkhlIHNoYWxsIGdsb3JpZnkgbWU6IGZvciBoZSBzaGFsbCByZWNlaXZlIG9mIG1pbmUsIGFuZCBzaGFsbCBzaGV3IGl0IHVudG8geW91LgpBbGwgdGhpbmdzIHRoYXQgdGhlIEZhdGhlciBoYXRoIGFyZSBtaW5lOiB0aGVyZWZvcmUgc2FpZCBJLCB0aGF0IGhlIHNoYWxsIHRha2Ugb2YgbWluZSwgYW5kIHNoYWxsIHNoZXcgaXQgdW50byB5b3UuCkEgbGl0dGxlIHdoaWxlLCBhbmQgeWUgc2hhbGwgbm90IHNlZSBtZTogYW5kIGFnYWluLCBhIGxpdHRsZSB3aGlsZSwgYW5kIHllIHNoYWxsIHNlZSBtZSwgYmVjYXVzZSBJIGdvIHRvIHRoZSBGYXRoZXIuClRoZW4gc2FpZCBzb21lIG9mIGhpcyBkaXNjaXBsZXMgYW1vbmcgdGhlbXNlbHZlcywgV2hhdCBpcyB0aGlzIHRoYXQgaGUgc2FpdGggdW50byB1cywgQSBsaXR0bGUgd2hpbGUsIGFuZCB5ZSBzaGFsbCBub3Qgc2VlIG1lOiBhbmQgYWdhaW4sIGEgbGl0dGxlIHdoaWxlLCBhbmQgeWUgc2hhbGwgc2VlIG1lOiBhbmQsIEJlY2F1c2UgSSBnbyB0byB0aGUgRmF0aGVyPwpUaGV5IHNhaWQgdGhlcmVmb3JlLCBXaGF0IGlzIHRoaXMgdGhhdCBoZSBzYWl0aCwgQSBsaXR0bGUgd2hpbGU/IHdlIGNhbm5vdCB0ZWxsIHdoYXQgaGUgc2FpdGguCk5vdyBKZXN1cyBrbmV3IHRoYXQgdGhleSB3ZXJlIGRlc2lyb3VzIHRvIGFzayBoaW0sIGFuZCBzYWlkIHVudG8gdGhlbSwgRG8geWUgZW5xdWlyZSBhbW9uZyB5b3Vyc2VsdmVzIG9mIHRoYXQgSSBzYWlkLCBBIGxpdHRsZSB3aGlsZSwgYW5kIHllIHNoYWxsIG5vdCBzZWUgbWU6IGFuZCBhZ2FpbiwgYSBsaXR0bGUgd2hpbGUsIGFuZCB5ZSBzaGFsbCBzZWUgbWU/ClZlcmlseSwgdmVyaWx5LCBJIHNheSB1bnRvIHlvdSwgVGhhdCB5ZSBzaGFsbCB3ZWVwIGFuZCBsYW1lbnQsIGJ1dCB0aGUgd29ybGQgc2hhbGwgcmVqb2ljZTogYW5kIHllIHNoYWxsIGJlIHNvcnJvd2Z1bCwgYnV0IHlvdXIgc29ycm93IHNoYWxsIGJlIHR1cm5lZCBpbnRvIGpveS4KQSB3b21hbiB3aGVuIHNoZSBpcyBpbiB0cmF2YWlsIGhhdGggc29ycm93LCBiZWNhdXNlIGhlciBob3VyIGlzIGNvbWU6IGJ1dCBhcyBzb29uIGFzIHNoZSBpcyBkZWxpdmVyZWQgb2YgdGhlIGNoaWxkLCBzaGUgcmVtZW1iZXJldGggbm8gbW9yZSB0aGUgYW5ndWlzaCwgZm9yIGpveSB0aGF0IGEgbWFuIGlzIGJvcm4gaW50byB0aGUgd29ybGQuCkFuZCB5ZSBub3cgdGhlcmVmb3JlIGhhdmUgc29ycm93OiBidXQgSSB3aWxsIHNlZSB5b3UgYWdhaW4sIGFuZCB5b3VyIGhlYXJ0IHNoYWxsIHJlam9pY2UsIGFuZCB5b3VyIGpveSBubyBtYW4gdGFrZXRoIGZyb20geW91LgpBbmQgaW4gdGhhdCBkYXkgeWUgc2hhbGwgYXNrIG1lIG5vdGhpbmcuIFZlcmlseSwgdmVyaWx5LCBJIHNheSB1bnRvIHlvdSwgV2hhdHNvZXZlciB5ZSBzaGFsbCBhc2sgdGhlIEZhdGhlciBpbiBteSBuYW1lLCBoZSB3aWxsIGdpdmUgaXQgeW91LgpIaXRoZXJ0byBoYXZlIHllIGFza2VkIG5vdGhpbmcgaW4gbXkgbmFtZTogYXNrLCBhbmQgeWUgc2hhbGwgcmVjZWl2ZSwgdGhhdCB5b3VyIGpveSBtYXkgYmUgZnVsbC4KVGhlc2UgdGhpbmdzIGhhdmUgSSBzcG9rZW4gdW50byB5b3UgaW4gcHJvdmVyYnM6IGJ1dCB0aGUgdGltZSBjb21ldGgsIHdoZW4gSSBzaGFsbCBubyBtb3JlIHNwZWFrIHVudG8geW91IGluIHByb3ZlcmJzLCBidXQgSSBzaGFsbCBzaGV3IHlvdSBwbGFpbmx5IG9mIHRoZSBGYXRoZXIuCkF0IHRoYXQgZGF5IHllIHNoYWxsIGFzayBpbiBteSBuYW1lOiBhbmQgSSBzYXkgbm90IHVudG8geW91LCB0aGF0IEkgd2lsbCBwcmF5IHRoZSBGYXRoZXIgZm9yIHlvdToKRm9yIHRoZSBGYXRoZXIgaGltc2VsZiBsb3ZldGggeW91LCBiZWNhdXNlIHllIGhhdmUgbG92ZWQgbWUsIGFuZCBoYXZlIGJlbGlldmVkIHRoYXQgSSBjYW1lIG91dCBmcm9tIEdvZC4KSSBjYW1lIGZvcnRoIGZyb20gdGhlIEZhdGhlciwgYW5kIGFtIGNvbWUgaW50byB0aGUgd29ybGQ6IGFnYWluLCBJIGxlYXZlIHRoZSB3b3JsZCwgYW5kIGdvIHRvIHRoZSBGYXRoZXIuCkhpcyBkaXNjaXBsZXMgc2FpZCB1bnRvIGhpbSwgTG8sIG5vdyBzcGVha2VzdCB0aG91IHBsYWlubHksIGFuZCBzcGVha2VzdCBubyBwcm92ZXJiLgpOb3cgYXJlIHdlIHN1cmUgdGhhdCB0aG91IGtub3dlc3QgYWxsIHRoaW5ncywgYW5kIG5lZWRlc3Qgbm90IHRoYXQgYW55IG1hbiBzaG91bGQgYXNrIHRoZWU6IGJ5IHRoaXMgd2UgYmVsaWV2ZSB0aGF0IHRob3UgY2FtZXN0IGZvcnRoIGZyb20gR29kLgpKZXN1cyBhbnN3ZXJlZCB0aGVtLCBEbyB5ZSBub3cgYmVsaWV2ZT8KQmVob2xkLCB0aGUgaG91ciBjb21ldGgsIHllYSwgaXMgbm93IGNvbWUsIHRoYXQgeWUgc2hhbGwgYmUgc2NhdHRlcmVkLCBldmVyeSBtYW4gdG8gaGlzIG93biwgYW5kIHNoYWxsIGxlYXZlIG1lIGFsb25lOiBhbmQgeWV0IEkgYW0gbm90IGFsb25lLCBiZWNhdXNlIHRoZSBGYXRoZXIgaXMgd2l0aCBtZS4KVGhlc2UgdGhpbmdzIEkgaGF2ZSBzcG9rZW4gdW50byB5b3UsIHRoYXQgaW4gbWUgeWUgbWlnaHQgaGF2ZSBwZWFjZS4gSW4gdGhlIHdvcmxkIHllIHNoYWxsIGhhdmUgdHJpYnVsYXRpb246IGJ1dCBiZSBvZiBnb29kIGNoZWVyOyBJIGhhdmUgb3ZlcmNvbWUgdGhlIHdvcmxkLgpUaGVzZSB3b3JkcyBzcGFrZSBKZXN1cywgYW5kIGxpZnRlZCB1cCBoaXMgZXllcyB0byBoZWF2ZW4sIGFuZCBzYWlkLCBGYXRoZXIsIHRoZSBob3VyIGlzIGNvbWU7IGdsb3JpZnkgdGh5IFNvbiwgdGhhdCB0aHkgU29uIGFsc28gbWF5IGdsb3JpZnkgdGhlZToKQXMgdGhvdSBoYXN0IGdpdmVuIGhpbSBwb3dlciBvdmVyIGFsbCBmbGVzaCwgdGhhdCBoZSBzaG91bGQgZ2l2ZSBldGVybmFsIGxpZmUgdG8gYXMgbWFueSBhcyB0aG91IGhhc3QgZ2l2ZW4gaGltLgpBbmQgdGhpcyBpcyBsaWZlIGV0ZXJuYWwsIHRoYXQgdGhleSBtaWdodCBrbm93IHRoZWUgdGhlIG9ubHkgdHJ1ZSBHb2QsIGFuZCBKZXN1cyBDaHJpc3QsIHdob20gdGhvdSBoYXN0IHNlbnQuCkkgaGF2ZSBnbG9yaWZpZWQgdGhlZSBvbiB0aGUgZWFydGg6IEkgaGF2ZSBmaW5pc2hlZCB0aGUgd29yayB3aGljaCB0aG91IGdhdmVzdCBtZSB0byBkby4KQW5kIG5vdywgTyBGYXRoZXIsIGdsb3JpZnkgdGhvdSBtZSB3aXRoIHRoaW5lIG93biBzZWxmIHdpdGggdGhlIGdsb3J5IHdoaWNoIEkgaGFkIHdpdGggdGhlZSBiZWZvcmUgdGhlIHdvcmxkIHdhcy4KSSBoYXZlIG1hbmlmZXN0ZWQgdGh5IG5hbWUgdW50byB0aGUgbWVuIHdoaWNoIHRob3UgZ2F2ZXN0IG1lIG91dCBvZiB0aGUgd29ybGQ6IHRoaW5lIHRoZXkgd2VyZSwgYW5kIHRob3UgZ2F2ZXN0IHRoZW0gbWU7IGFuZCB0aGV5IGhhdmUga2VwdCB0aHkgd29yZC4KTm93IHRoZXkgaGF2ZSBrbm93biB0aGF0IGFsbCB0aGluZ3Mgd2hhdHNvZXZlciB0aG91IGhhc3QgZ2l2ZW4gbWUgYXJlIG9mIHRoZWUuCkZvciBJIGhhdmUgZ2l2ZW4gdW50byB0aGVtIHRoZSB3b3JkcyB3aGljaCB0aG91IGdhdmVzdCBtZTsgYW5kIHRoZXkgaGF2ZSByZWNlaXZlZCB0aGVtLCBhbmQgaGF2ZSBrbm93biBzdXJlbHkgdGhhdCBJIGNhbWUgb3V0IGZyb20gdGhlZSwgYW5kIHRoZXkgaGF2ZSBiZWxpZXZlZCB0aGF0IHRob3UgZGlkc3Qgc2VuZCBtZS4KSSBwcmF5IGZvciB0aGVtOiBJIHByYXkgbm90IGZvciB0aGUgd29ybGQsIGJ1dCBmb3IgdGhlbSB3aGljaCB0aG91IGhhc3QgZ2l2ZW4gbWU7IGZvciB0aGV5IGFyZSB0aGluZS4KQW5kIGFsbCBtaW5lIGFyZSB0aGluZSwgYW5kIHRoaW5lIGFyZSBtaW5lOyBhbmQgSSBhbSBnbG9yaWZpZWQgaW4gdGhlbS4KQW5kIG5vdyBJIGFtIG5vIG1vcmUgaW4gdGhlIHdvcmxkLCBidXQgdGhlc2UgYXJlIGluIHRoZSB3b3JsZCwgYW5kIEkgY29tZSB0byB0aGVlLiBIb2x5IEZhdGhlciwga2VlcCB0aHJvdWdoIHRoaW5lIG93biBuYW1lIHRob3NlIHdob20gdGhvdSBoYXN0IGdpdmVuIG1lLCB0aGF0IHRoZXkgbWF5IGJlIG9uZSwgYXMgd2UgYXJlLgpXaGlsZSBJIHdhcyB3aXRoIHRoZW0gaW4gdGhlIHdvcmxkLCBJIGtlcHQgdGhlbSBpbiB0aHkgbmFtZTogdGhvc2UgdGhhdCB0aG91IGdhdmVzdCBtZSBJIGhhdmUga2VwdCwgYW5kIG5vbmUgb2YgdGhlbSBpcyBsb3N0LCBidXQgdGhlIHNvbiBvZiBwZXJkaXRpb247IHRoYXQgdGhlIHNjcmlwdHVyZSBtaWdodCBiZSBmdWxmaWxsZWQuCkFuZCBub3cgY29tZSBJIHRvIHRoZWU7IGFuZCB0aGVzZSB0aGluZ3MgSSBzcGVhayBpbiB0aGUgd29ybGQsIHRoYXQgdGhleSBtaWdodCBoYXZlIG15IGpveSBmdWxmaWxsZWQgaW4gdGhlbXNlbHZlcy4KSSBoYXZlIGdpdmVuIHRoZW0gdGh5IHdvcmQ7IGFuZCB0aGUgd29ybGQgaGF0aCBoYXRlZCB0aGVtLCBiZWNhdXNlIHRoZXkgYXJlIG5vdCBvZiB0aGUgd29ybGQsIGV2ZW4gYXMgSSBhbSBub3Qgb2YgdGhlIHdvcmxkLgpJIHByYXkgbm90IHRoYXQgdGhvdSBzaG91bGRlc3QgdGFrZSB0aGVtIG91dCBvZiB0aGUgd29ybGQsIGJ1dCB0aGF0IHRob3Ugc2hvdWxkZXN0IGtlZXAgdGhlbSBmcm9tIHRoZSBldmlsLgpUaGV5IGFyZSBub3Qgb2YgdGhlIHdvcmxkLCBldmVuIGFzIEkgYW0gbm90IG9mIHRoZSB3b3JsZC4KU2FuY3RpZnkgdGhlbSB0aHJvdWdoIHRoeSB0cnV0aDogdGh5IHdvcmQgaXMgdHJ1dGguCkFzIHRob3UgaGFzdCBzZW50IG1lIGludG8gdGhlIHdvcmxkLCBldmVuIHNvIGhhdmUgSSBhbHNvIHNlbnQgdGhlbSBpbnRvIHRoZSB3b3JsZC4KQW5kIGZvciB0aGVpciBzYWtlcyBJIHNhbmN0aWZ5IG15c2VsZiwgdGhhdCB0aGV5IGFsc28gbWlnaHQgYmUgc2FuY3RpZmllZCB0aHJvdWdoIHRoZSB0cnV0aC4KTmVpdGhlciBwcmF5IEkgZm9yIHRoZXNlIGFsb25lLCBidXQgZm9yIHRoZW0gYWxzbyB3aGljaCBzaGFsbCBiZWxpZXZlIG9uIG1lIHRocm91Z2ggdGhlaXIgd29yZDsKVGhhdCB0aGV5IGFsbCBtYXkgYmUgb25lOyBhcyB0aG91LCBGYXRoZXIsIGFydCBpbiBtZSwgYW5kIEkgaW4gdGhlZSwgdGhhdCB0aGV5IGFsc28gbWF5IGJlIG9uZSBpbiB1czogdGhhdCB0aGUgd29ybGQgbWF5IGJlbGlldmUgdGhhdCB0aG91IGhhc3Qgc2VudCBtZS4KQW5kIHRoZSBnbG9yeSB3aGljaCB0aG91IGdhdmVzdCBtZSBJIGhhdmUgZ2l2ZW4gdGhlbTsgdGhhdCB0aGV5IG1heSBiZSBvbmUsIGV2ZW4gYXMgd2UgYXJlIG9uZToKSSBpbiB0aGVtLCBhbmQgdGhvdSBpbiBtZSwgdGhhdCB0aGV5IG1heSBiZSBtYWRlIHBlcmZlY3QgaW4gb25lOyBhbmQgdGhhdCB0aGUgd29ybGQgbWF5IGtub3cgdGhhdCB0aG91IGhhc3Qgc2VudCBtZSwgYW5kIGhhc3QgbG92ZWQgdGhlbSwgYXMgdGhvdSBoYXN0IGxvdmVkIG1lLgpGYXRoZXIsIEkgd2lsbCB0aGF0IHRoZXkgYWxzbywgd2hvbSB0aG91IGhhc3QgZ2l2ZW4gbWUsIGJlIHdpdGggbWUgd2hlcmUgSSBhbTsgdGhhdCB0aGV5IG1heSBiZWhvbGQgbXkgZ2xvcnksIHdoaWNoIHRob3UgaGFzdCBnaXZlbiBtZTogZm9yIHRob3UgbG92ZWRzdCBtZSBiZWZvcmUgdGhlIGZvdW5kYXRpb24gb2YgdGhlIHdvcmxkLgpPIHJpZ2h0ZW91cyBGYXRoZXIsIHRoZSB3b3JsZCBoYXRoIG5vdCBrbm93biB0aGVlOiBidXQgSSBoYXZlIGtub3duIHRoZWUsIGFuZCB0aGVzZSBoYXZlIGtub3duIHRoYXQgdGhvdSBoYXN0IHNlbnQgbWUuCkFuZCBJIGhhdmUgZGVjbGFyZWQgdW50byB0aGVtIHRoeSBuYW1lLCBhbmQgd2lsbCBkZWNsYXJlIGl0OiB0aGF0IHRoZSBsb3ZlIHdoZXJld2l0aCB0aG91IGhhc3QgbG92ZWQgbWUgbWF5IGJlIGluIHRoZW0sIGFuZCBJIGluIHRoZW0uCldoZW4gSmVzdXMgaGFkIHNwb2tlbiB0aGVzZSB3b3JkcywgaGUgd2VudCBmb3J0aCB3aXRoIGhpcyBkaXNjaXBsZXMgb3ZlciB0aGUgYnJvb2sgQ2Vkcm9uLCB3aGVyZSB3YXMgYSBnYXJkZW4sIGludG8gdGhlIHdoaWNoIGhlIGVudGVyZWQsIGFuZCBoaXMgZGlzY2lwbGVzLgpBbmQgSnVkYXMgYWxzbywgd2hpY2ggYmV0cmF5ZWQgaGltLCBrbmV3IHRoZSBwbGFjZTogZm9yIEplc3VzIG9mdHRpbWVzIHJlc29ydGVkIHRoaXRoZXIgd2l0aCBoaXMgZGlzY2lwbGVzLgpKdWRhcyB0aGVuLCBoYXZpbmcgcmVjZWl2ZWQgYSBiYW5kIG9mIG1lbiBhbmQgb2ZmaWNlcnMgZnJvbSB0aGUgY2hpZWYgcHJpZXN0cyBhbmQgUGhhcmlzZWVzLCBjb21ldGggdGhpdGhlciB3aXRoIGxhbnRlcm5zIGFuZCB0b3JjaGVzIGFuZCB3ZWFwb25zLgpKZXN1cyB0aGVyZWZvcmUsIGtub3dpbmcgYWxsIHRoaW5ncyB0aGF0IHNob3VsZCBjb21lIHVwb24gaGltLCB3ZW50IGZvcnRoLCBhbmQgc2FpZCB1bnRvIHRoZW0sIFdob20gc2VlayB5ZT8KVGhleSBhbnN3ZXJlZCBoaW0sIEplc3VzIG9mIE5hemFyZXRoLiBKZXN1cyBzYWl0aCB1bnRvIHRoZW0sIEkgYW0gaGUuIEFuZCBKdWRhcyBhbHNvLCB3aGljaCBiZXRyYXllZCBoaW0sIHN0b29kIHdpdGggdGhlbS4KQXMgc29vbiB0aGVuIGFzIGhlIGhhZCBzYWlkIHVudG8gdGhlbSwgSSBhbSBoZSwgdGhleSB3ZW50IGJhY2t3YXJkLCBhbmQgZmVsbCB0byB0aGUgZ3JvdW5kLgpUaGVuIGFza2VkIGhlIHRoZW0gYWdhaW4sIFdob20gc2VlayB5ZT8gQW5kIHRoZXkgc2FpZCwgSmVzdXMgb2YgTmF6YXJldGguCkplc3VzIGFuc3dlcmVkLCBJIGhhdmUgdG9sZCB5b3UgdGhhdCBJIGFtIGhlOiBpZiB0aGVyZWZvcmUgeWUgc2VlayBtZSwgbGV0IHRoZXNlIGdvIHRoZWlyIHdheToKVGhhdCB0aGUgc2F5aW5nIG1pZ2h0IGJlIGZ1bGZpbGxlZCwgd2hpY2ggaGUgc3Bha2UsIE9mIHRoZW0gd2hpY2ggdGhvdSBnYXZlc3QgbWUgaGF2ZSBJIGxvc3Qgbm9uZS4KVGhlbiBTaW1vbiBQZXRlciBoYXZpbmcgYSBzd29yZCBkcmV3IGl0LCBhbmQgc21vdGUgdGhlIGhpZ2ggcHJpZXN0J3Mgc2VydmFudCwgYW5kIGN1dCBvZmYgaGlzIHJpZ2h0IGVhci4gVGhlIHNlcnZhbnQncyBuYW1lIHdhcyBNYWxjaHVzLgpUaGVuIHNhaWQgSmVzdXMgdW50byBQZXRlciwgUHV0IHVwIHRoeSBzd29yZCBpbnRvIHRoZSBzaGVhdGg6IHRoZSBjdXAgd2hpY2ggbXkgRmF0aGVyIGhhdGggZ2l2ZW4gbWUsIHNoYWxsIEkgbm90IGRyaW5rIGl0PwpUaGVuIHRoZSBiYW5kIGFuZCB0aGUgY2FwdGFpbiBhbmQgb2ZmaWNlcnMgb2YgdGhlIEpld3MgdG9vayBKZXN1cywgYW5kIGJvdW5kIGhpbSwKQW5kIGxlZCBoaW0gYXdheSB0byBBbm5hcyBmaXJzdDsgZm9yIGhlIHdhcyBmYXRoZXIgaW4gbGF3IHRvIENhaWFwaGFzLCB3aGljaCB3YXMgdGhlIGhpZ2ggcHJpZXN0IHRoYXQgc2FtZSB5ZWFyLgpOb3cgQ2FpYXBoYXMgd2FzIGhlLCB3aGljaCBnYXZlIGNvdW5zZWwgdG8gdGhlIEpld3MsIHRoYXQgaXQgd2FzIGV4cGVkaWVudCB0aGF0IG9uZSBtYW4gc2hvdWxkIGRpZSBmb3IgdGhlIHBlb3BsZS4KQW5kIFNpbW9uIFBldGVyIGZvbGxvd2VkIEplc3VzLCBhbmQgc28gZGlkIGFub3RoZXIgZGlzY2lwbGU6IHRoYXQgZGlzY2lwbGUgd2FzIGtub3duIHVudG8gdGhlIGhpZ2ggcHJpZXN0LCBhbmQgd2VudCBpbiB3aXRoIEplc3VzIGludG8gdGhlIHBhbGFjZSBvZiB0aGUgaGlnaCBwcmllc3QuCkJ1dCBQZXRlciBzdG9vZCBhdCB0aGUgZG9vciB3aXRob3V0LiBUaGVuIHdlbnQgb3V0IHRoYXQgb3RoZXIgZGlzY2lwbGUsIHdoaWNoIHdhcyBrbm93biB1bnRvIHRoZSBoaWdoIHByaWVzdCwgYW5kIHNwYWtlIHVudG8gaGVyIHRoYXQga2VwdCB0aGUgZG9vciwgYW5kIGJyb3VnaHQgaW4gUGV0ZXIuClRoZW4gc2FpdGggdGhlIGRhbXNlbCB0aGF0IGtlcHQgdGhlIGRvb3IgdW50byBQZXRlciwgQXJ0IG5vdCB0aG91IGFsc28gb25lIG9mIHRoaXMgbWFuJ3MgZGlzY2lwbGVzPyBIZSBzYWl0aCwgSSBhbSBub3QuCkFuZCB0aGUgc2VydmFudHMgYW5kIG9mZmljZXJzIHN0b29kIHRoZXJlLCB3aG8gaGFkIG1hZGUgYSBmaXJlIG9mIGNvYWxzOyBmb3IgaXQgd2FzIGNvbGQ6IGFuZCB0aGV5IHdhcm1lZCB0aGVtc2VsdmVzOiBhbmQgUGV0ZXIgc3Rvb2Qgd2l0aCB0aGVtLCBhbmQgd2FybWVkIGhpbXNlbGYuClRoZSBoaWdoIHByaWVzdCB0aGVuIGFza2VkIEplc3VzIG9mIGhpcyBkaXNjaXBsZXMsIGFuZCBvZiBoaXMgZG9jdHJpbmUuCkplc3VzIGFuc3dlcmVkIGhpbSwgSSBzcGFrZSBvcGVubHkgdG8gdGhlIHdvcmxkOyBJIGV2ZXIgdGF1Z2h0IGluIHRoZSBzeW5hZ29ndWUsIGFuZCBpbiB0aGUgdGVtcGxlLCB3aGl0aGVyIHRoZSBKZXdzIGFsd2F5cyByZXNvcnQ7IGFuZCBpbiBzZWNyZXQgaGF2ZSBJIHNhaWQgbm90aGluZy4KV2h5IGFza2VzdCB0aG91IG1lPyBhc2sgdGhlbSB3aGljaCBoZWFyZCBtZSwgd2hhdCBJIGhhdmUgc2FpZCB1bnRvIHRoZW06IGJlaG9sZCwgdGhleSBrbm93IHdoYXQgSSBzYWlkLgpBbmQgd2hlbiBoZSBoYWQgdGh1cyBzcG9rZW4sIG9uZSBvZiB0aGUgb2ZmaWNlcnMgd2hpY2ggc3Rvb2QgYnkgc3RydWNrIEplc3VzIHdpdGggdGhlIHBhbG0gb2YgaGlzIGhhbmQsIHNheWluZywgQW5zd2VyZXN0IHRob3UgdGhlIGhpZ2ggcHJpZXN0IHNvPwpKZXN1cyBhbnN3ZXJlZCBoaW0sIElmIEkgaGF2ZSBzcG9rZW4gZXZpbCwgYmVhciB3aXRuZXNzIG9mIHRoZSBldmlsOiBidXQgaWYgd2VsbCwgd2h5IHNtaXRlc3QgdGhvdSBtZT8KTm93IEFubmFzIGhhZCBzZW50IGhpbSBib3VuZCB1bnRvIENhaWFwaGFzIHRoZSBoaWdoIHByaWVzdC4KQW5kIFNpbW9uIFBldGVyIHN0b29kIGFuZCB3YXJtZWQgaGltc2VsZi4gVGhleSBzYWlkIHRoZXJlZm9yZSB1bnRvIGhpbSwgQXJ0IG5vdCB0aG91IGFsc28gb25lIG9mIGhpcyBkaXNjaXBsZXM/IEhlIGRlbmllZCBpdCwgYW5kIHNhaWQsIEkgYW0gbm90LgpPbmUgb2YgdGhlIHNlcnZhbnRzIG9mIHRoZSBoaWdoIHByaWVzdCwgYmVpbmcgaGlzIGtpbnNtYW4gd2hvc2UgZWFyIFBldGVyIGN1dCBvZmYsIHNhaXRoLCBEaWQgbm90IEkgc2VlIHRoZWUgaW4gdGhlIGdhcmRlbiB3aXRoIGhpbT8KUGV0ZXIgdGhlbiBkZW5pZWQgYWdhaW46IGFuZCBpbW1lZGlhdGVseSB0aGUgY29jayBjcmV3LgpUaGVuIGxlZCB0aGV5IEplc3VzIGZyb20gQ2FpYXBoYXMgdW50byB0aGUgaGFsbCBvZiBqdWRnbWVudDogYW5kIGl0IHdhcyBlYXJseTsgYW5kIHRoZXkgdGhlbXNlbHZlcyB3ZW50IG5vdCBpbnRvIHRoZSBqdWRnbWVudCBoYWxsLCBsZXN0IHRoZXkgc2hvdWxkIGJlIGRlZmlsZWQ7IGJ1dCB0aGF0IHRoZXkgbWlnaHQgZWF0IHRoZSBwYXNzb3Zlci4KUGlsYXRlIHRoZW4gd2VudCBvdXQgdW50byB0aGVtLCBhbmQgc2FpZCwgV2hhdCBhY2N1c2F0aW9uIGJyaW5nIHllIGFnYWluc3QgdGhpcyBtYW4/ClRoZXkgYW5zd2VyZWQgYW5kIHNhaWQgdW50byBoaW0sIElmIGhlIHdlcmUgbm90IGEgbWFsZWZhY3Rvciwgd2Ugd291bGQgbm90IGhhdmUgZGVsaXZlcmVkIGhpbSB1cCB1bnRvIHRoZWUuClRoZW4gc2FpZCBQaWxhdGUgdW50byB0aGVtLCBUYWtlIHllIGhpbSwgYW5kIGp1ZGdlIGhpbSBhY2NvcmRpbmcgdG8geW91ciBsYXcuIFRoZSBKZXdzIHRoZXJlZm9yZSBzYWlkIHVudG8gaGltLCBJdCBpcyBub3QgbGF3ZnVsIGZvciB1cyB0byBwdXQgYW55IG1hbiB0byBkZWF0aDoKVGhhdCB0aGUgc2F5aW5nIG9mIEplc3VzIG1pZ2h0IGJlIGZ1bGZpbGxlZCwgd2hpY2ggaGUgc3Bha2UsIHNpZ25pZnlpbmcgd2hhdCBkZWF0aCBoZSBzaG91bGQgZGllLgpUaGVuIFBpbGF0ZSBlbnRlcmVkIGludG8gdGhlIGp1ZGdtZW50IGhhbGwgYWdhaW4sIGFuZCBjYWxsZWQgSmVzdXMsIGFuZCBzYWlkIHVudG8gaGltLCBBcnQgdGhvdSB0aGUgS2luZyBvZiB0aGUgSmV3cz8KSmVzdXMgYW5zd2VyZWQgaGltLCBTYXllc3QgdGhvdSB0aGlzIHRoaW5nIG9mIHRoeXNlbGYsIG9yIGRpZCBvdGhlcnMgdGVsbCBpdCB0aGVlIG9mIG1lPwpQaWxhdGUgYW5zd2VyZWQsIEFtIEkgYSBKZXc/IFRoaW5lIG93biBuYXRpb24gYW5kIHRoZSBjaGllZiBwcmllc3RzIGhhdmUgZGVsaXZlcmVkIHRoZWUgdW50byBtZTogd2hhdCBoYXN0IHRob3UgZG9uZT8KSmVzdXMgYW5zd2VyZWQsIE15IGtpbmdkb20gaXMgbm90IG9mIHRoaXMgd29ybGQ6IGlmIG15IGtpbmdkb20gd2VyZSBvZiB0aGlzIHdvcmxkLCB0aGVuIHdvdWxkIG15IHNlcnZhbnRzIGZpZ2h0LCB0aGF0IEkgc2hvdWxkIG5vdCBiZSBkZWxpdmVyZWQgdG8gdGhlIEpld3M6IGJ1dCBub3cgaXMgbXkga2luZ2RvbSBub3QgZnJvbSBoZW5jZS4KUGlsYXRlIHRoZXJlZm9yZSBzYWlkIHVudG8gaGltLCBBcnQgdGhvdSBhIGtpbmcgdGhlbj8gSmVzdXMgYW5zd2VyZWQsIFRob3Ugc2F5ZXN0IHRoYXQgSSBhbSBhIGtpbmcuIFRvIHRoaXMgZW5kIHdhcyBJIGJvcm4sIGFuZCBmb3IgdGhpcyBjYXVzZSBjYW1lIEkgaW50byB0aGUgd29ybGQsIHRoYXQgSSBzaG91bGQgYmVhciB3aXRuZXNzIHVudG8gdGhlIHRydXRoLiBFdmVyeSBvbmUgdGhhdCBpcyBvZiB0aGUgdHJ1dGggaGVhcmV0aCBteSB2b2ljZS4KUGlsYXRlIHNhaXRoIHVudG8gaGltLCBXaGF0IGlzIHRydXRoPyBBbmQgd2hlbiBoZSBoYWQgc2FpZCB0aGlzLCBoZSB3ZW50IG91dCBhZ2FpbiB1bnRvIHRoZSBKZXdzLCBhbmQgc2FpdGggdW50byB0aGVtLCBJIGZpbmQgaW4gaGltIG5vIGZhdWx0IGF0IGFsbC4KQnV0IHllIGhhdmUgYSBjdXN0b20sIHRoYXQgSSBzaG91bGQgcmVsZWFzZSB1bnRvIHlvdSBvbmUgYXQgdGhlIHBhc3NvdmVyOiB3aWxsIHllIHRoZXJlZm9yZSB0aGF0IEkgcmVsZWFzZSB1bnRvIHlvdSB0aGUgS2luZyBvZiB0aGUgSmV3cz8KVGhlbiBjcmllZCB0aGV5IGFsbCBhZ2Fpbiwgc2F5aW5nLCBOb3QgdGhpcyBtYW4sIGJ1dCBCYXJhYmJhcy4gTm93IEJhcmFiYmFzIHdhcyBhIHJvYmJlci4KVGhlbiBQaWxhdGUgdGhlcmVmb3JlIHRvb2sgSmVzdXMsIGFuZCBzY291cmdlZCBoaW0uCkFuZCB0aGUgc29sZGllcnMgcGxhdHRlZCBhIGNyb3duIG9mIHRob3JucywgYW5kIHB1dCBpdCBvbiBoaXMgaGVhZCwgYW5kIHRoZXkgcHV0IG9uIGhpbSBhIHB1cnBsZSByb2JlLApBbmQgc2FpZCwgSGFpbCwgS2luZyBvZiB0aGUgSmV3cyEgYW5kIHRoZXkgc21vdGUgaGltIHdpdGggdGhlaXIgaGFuZHMuClBpbGF0ZSB0aGVyZWZvcmUgd2VudCBmb3J0aCBhZ2FpbiwgYW5kIHNhaXRoIHVudG8gdGhlbSwgQmVob2xkLCBJIGJyaW5nIGhpbSBmb3J0aCB0byB5b3UsIHRoYXQgeWUgbWF5IGtub3cgdGhhdCBJIGZpbmQgbm8gZmF1bHQgaW4gaGltLgpUaGVuIGNhbWUgSmVzdXMgZm9ydGgsIHdlYXJpbmcgdGhlIGNyb3duIG9mIHRob3JucywgYW5kIHRoZSBwdXJwbGUgcm9iZS4gQW5kIFBpbGF0ZSBzYWl0aCB1bnRvIHRoZW0sIEJlaG9sZCB0aGUgbWFuIQpXaGVuIHRoZSBjaGllZiBwcmllc3RzIHRoZXJlZm9yZSBhbmQgb2ZmaWNlcnMgc2F3IGhpbSwgdGhleSBjcmllZCBvdXQsIHNheWluZywgQ3J1Y2lmeSBoaW0sIGNydWNpZnkgaGltLiBQaWxhdGUgc2FpdGggdW50byB0aGVtLCBUYWtlIHllIGhpbSwgYW5kIGNydWNpZnkgaGltOiBmb3IgSSBmaW5kIG5vIGZhdWx0IGluIGhpbS4KVGhlIEpld3MgYW5zd2VyZWQgaGltLCBXZSBoYXZlIGEgbGF3LCBhbmQgYnkgb3VyIGxhdyBoZSBvdWdodCB0byBkaWUsIGJlY2F1c2UgaGUgbWFkZSBoaW1zZWxmIHRoZSBTb24gb2YgR29kLgpXaGVuIFBpbGF0ZSB0aGVyZWZvcmUgaGVhcmQgdGhhdCBzYXlpbmcsIGhlIHdhcyB0aGUgbW9yZSBhZnJhaWQ7CkFuZCB3ZW50IGFnYWluIGludG8gdGhlIGp1ZGdtZW50IGhhbGwsIGFuZCBzYWl0aCB1bnRvIEplc3VzLCBXaGVuY2UgYXJ0IHRob3U/IEJ1dCBKZXN1cyBnYXZlIGhpbSBubyBhbnN3ZXIuClRoZW4gc2FpdGggUGlsYXRlIHVudG8gaGltLCBTcGVha2VzdCB0aG91IG5vdCB1bnRvIG1lPyBrbm93ZXN0IHRob3Ugbm90IHRoYXQgSSBoYXZlIHBvd2VyIHRvIGNydWNpZnkgdGhlZSwgYW5kIGhhdmUgcG93ZXIgdG8gcmVsZWFzZSB0aGVlPwpKZXN1cyBhbnN3ZXJlZCwgVGhvdSBjb3VsZGVzdCBoYXZlIG5vIHBvd2VyIGF0IGFsbCBhZ2FpbnN0IG1lLCBleGNlcHQgaXQgd2VyZSBnaXZlbiB0aGVlIGZyb20gYWJvdmU6IHRoZXJlZm9yZSBoZSB0aGF0IGRlbGl2ZXJlZCBtZSB1bnRvIHRoZWUgaGF0aCB0aGUgZ3JlYXRlciBzaW4uCkFuZCBmcm9tIHRoZW5jZWZvcnRoIFBpbGF0ZSBzb3VnaHQgdG8gcmVsZWFzZSBoaW06IGJ1dCB0aGUgSmV3cyBjcmllZCBvdXQsIHNheWluZywgSWYgdGhvdSBsZXQgdGhpcyBtYW4gZ28sIHRob3UgYXJ0IG5vdCBDYWVzYXIncyBmcmllbmQ6IHdob3NvZXZlciBtYWtldGggaGltc2VsZiBhIGtpbmcgc3BlYWtldGggYWdhaW5zdCBDYWVzYXIuCldoZW4gUGlsYXRlIHRoZXJlZm9yZSBoZWFyZCB0aGF0IHNheWluZywgaGUgYnJvdWdodCBKZXN1cyBmb3J0aCwgYW5kIHNhdCBkb3duIGluIHRoZSBqdWRnbWVudCBzZWF0IGluIGEgcGxhY2UgdGhhdCBpcyBjYWxsZWQgdGhlIFBhdmVtZW50LCBidXQgaW4gdGhlIEhlYnJldywgR2FiYmF0aGEuCkFuZCBpdCB3YXMgdGhlIHByZXBhcmF0aW9uIG9mIHRoZSBwYXNzb3ZlciwgYW5kIGFib3V0IHRoZSBzaXh0aCBob3VyOiBhbmQgaGUgc2FpdGggdW50byB0aGUgSmV3cywgQmVob2xkIHlvdXIgS2luZyEKQnV0IHRoZXkgY3JpZWQgb3V0LCBBd2F5IHdpdGggaGltLCBhd2F5IHdpdGggaGltLCBjcnVjaWZ5IGhpbS4gUGlsYXRlIHNhaXRoIHVudG8gdGhlbSwgU2hhbGwgSSBjcnVjaWZ5IHlvdXIgS2luZz8gVGhlIGNoaWVmIHByaWVzdHMgYW5zd2VyZWQsIFdlIGhhdmUgbm8ga2luZyBidXQgQ2Flc2FyLgpUaGVuIGRlbGl2ZXJlZCBoZSBoaW0gdGhlcmVmb3JlIHVudG8gdGhlbSB0byBiZSBjcnVjaWZpZWQuIEFuZCB0aGV5IHRvb2sgSmVzdXMsIGFuZCBsZWQgaGltIGF3YXkuCkFuZCBoZSBiZWFyaW5nIGhpcyBjcm9zcyB3ZW50IGZvcnRoIGludG8gYSBwbGFjZSBjYWxsZWQgdGhlIHBsYWNlIG9mIGEgc2t1bGwsIHdoaWNoIGlzIGNhbGxlZCBpbiB0aGUgSGVicmV3IEdvbGdvdGhhOgpXaGVyZSB0aGV5IGNydWNpZmllZCBoaW0sIGFuZCB0d28gb3RoZXIgd2l0aCBoaW0sIG9uIGVpdGhlciBzaWRlIG9uZSwgYW5kIEplc3VzIGluIHRoZSBtaWRzdC4KQW5kIFBpbGF0ZSB3cm90ZSBhIHRpdGxlLCBhbmQgcHV0IGl0IG9uIHRoZSBjcm9zcy4gQW5kIHRoZSB3cml0aW5nIHdhcyBKRVNVUyBPRiBOQVpBUkVUSCBUSEUgS0lORyBPRiBUSEUgSkVXUy4KVGhpcyB0aXRsZSB0aGVuIHJlYWQgbWFueSBvZiB0aGUgSmV3czogZm9yIHRoZSBwbGFjZSB3aGVyZSBKZXN1cyB3YXMgY3J1Y2lmaWVkIHdhcyBuaWdoIHRvIHRoZSBjaXR5OiBhbmQgaXQgd2FzIHdyaXR0ZW4gaW4gSGVicmV3LCBhbmQgR3JlZWssIGFuZCBMYXRpbi4KVGhlbiBzYWlkIHRoZSBjaGllZiBwcmllc3RzIG9mIHRoZSBKZXdzIHRvIFBpbGF0ZSwgV3JpdGUgbm90LCBUaGUgS2luZyBvZiB0aGUgSmV3czsgYnV0IHRoYXQgaGUgc2FpZCwgSSBhbSBLaW5nIG9mIHRoZSBKZXdzLgpQaWxhdGUgYW5zd2VyZWQsIFdoYXQgSSBoYXZlIHdyaXR0ZW4gSSBoYXZlIHdyaXR0ZW4uClRoZW4gdGhlIHNvbGRpZXJzLCB3aGVuIHRoZXkgaGFkIGNydWNpZmllZCBKZXN1cywgdG9vayBoaXMgZ2FybWVudHMsIGFuZCBtYWRlIGZvdXIgcGFydHMsIHRvIGV2ZXJ5IHNvbGRpZXIgYSBwYXJ0OyBhbmQgYWxzbyBoaXMgY29hdDogbm93IHRoZSBjb2F0IHdhcyB3aXRob3V0IHNlYW0sIHdvdmVuIGZyb20gdGhlIHRvcCB0aHJvdWdob3V0LgpUaGV5IHNhaWQgdGhlcmVmb3JlIGFtb25nIHRoZW1zZWx2ZXMsIExldCB1cyBub3QgcmVuZCBpdCwgYnV0IGNhc3QgbG90cyBmb3IgaXQsIHdob3NlIGl0IHNoYWxsIGJlOiB0aGF0IHRoZSBzY3JpcHR1cmUgbWlnaHQgYmUgZnVsZmlsbGVkLCB3aGljaCBzYWl0aCwgVGhleSBwYXJ0ZWQgbXkgcmFpbWVudCBhbW9uZyB0aGVtLCBhbmQgZm9yIG15IHZlc3R1cmUgdGhleSBkaWQgY2FzdCBsb3RzLiBUaGVzZSB0aGluZ3MgdGhlcmVmb3JlIHRoZSBzb2xkaWVycyBkaWQuCk5vdyB0aGVyZSBzdG9vZCBieSB0aGUgY3Jvc3Mgb2YgSmVzdXMgaGlzIG1vdGhlciwgYW5kIGhpcyBtb3RoZXIncyBzaXN0ZXIsIE1hcnkgdGhlIHdpZmUgb2YgQ2xlb3BoYXMsIGFuZCBNYXJ5IE1hZ2RhbGVuZS4KV2hlbiBKZXN1cyB0aGVyZWZvcmUgc2F3IGhpcyBtb3RoZXIsIGFuZCB0aGUgZGlzY2lwbGUgc3RhbmRpbmcgYnksIHdob20gaGUgbG92ZWQsIGhlIHNhaXRoIHVudG8gaGlzIG1vdGhlciwgV29tYW4sIGJlaG9sZCB0aHkgc29uIQpUaGVuIHNhaXRoIGhlIHRvIHRoZSBkaXNjaXBsZSwgQmVob2xkIHRoeSBtb3RoZXIhIEFuZCBmcm9tIHRoYXQgaG91ciB0aGF0IGRpc2NpcGxlIHRvb2sgaGVyIHVudG8gaGlzIG93biBob21lLgpBZnRlciB0aGlzLCBKZXN1cyBrbm93aW5nIHRoYXQgYWxsIHRoaW5ncyB3ZXJlIG5vdyBhY2NvbXBsaXNoZWQsIHRoYXQgdGhlIHNjcmlwdHVyZSBtaWdodCBiZSBmdWxmaWxsZWQsIHNhaXRoLCBJIHRoaXJzdC4KTm93IHRoZXJlIHdhcyBzZXQgYSB2ZXNzZWwgZnVsbCBvZiB2aW5lZ2FyOiBhbmQgdGhleSBmaWxsZWQgYSBzcHVuZ2Ugd2l0aCB2aW5lZ2FyLCBhbmQgcHV0IGl0IHVwb24gaHlzc29wLCBhbmQgcHV0IGl0IHRvIGhpcyBtb3V0aC4KV2hlbiBKZXN1cyB0aGVyZWZvcmUgaGFkIHJlY2VpdmVkIHRoZSB2aW5lZ2FyLCBoZSBzYWlkLCBJdCBpcyBmaW5pc2hlZDogYW5kIGhlIGJvd2VkIGhpcyBoZWFkLCBhbmQgZ2F2ZSB1cCB0aGUgZ2hvc3QuClRoZSBKZXdzIHRoZXJlZm9yZSwgYmVjYXVzZSBpdCB3YXMgdGhlIHByZXBhcmF0aW9uLCB0aGF0IHRoZSBib2RpZXMgc2hvdWxkIG5vdCByZW1haW4gdXBvbiB0aGUgY3Jvc3Mgb24gdGhlIHNhYmJhdGggZGF5LCAoZm9yIHRoYXQgc2FiYmF0aCBkYXkgd2FzIGFuIGhpZ2ggZGF5LCkgYmVzb3VnaHQgUGlsYXRlIHRoYXQgdGhlaXIgbGVncyBtaWdodCBiZSBicm9rZW4sIGFuZCB0aGF0IHRoZXkgbWlnaHQgYmUgdGFrZW4gYXdheS4KVGhlbiBjYW1lIHRoZSBzb2xkaWVycywgYW5kIGJyYWtlIHRoZSBsZWdzIG9mIHRoZSBmaXJzdCwgYW5kIG9mIHRoZSBvdGhlciB3aGljaCB3YXMgY3J1Y2lmaWVkIHdpdGggaGltLgpCdXQgd2hlbiB0aGV5IGNhbWUgdG8gSmVzdXMsIGFuZCBzYXcgdGhhdCBoZSB3YXMgZGVhZCBhbHJlYWR5LCB0aGV5IGJyYWtlIG5vdCBoaXMgbGVnczoKQnV0IG9uZSBvZiB0aGUgc29sZGllcnMgd2l0aCBhIHNwZWFyIHBpZXJjZWQgaGlzIHNpZGUsIGFuZCBmb3J0aHdpdGggY2FtZSB0aGVyZSBvdXQgYmxvb2QgYW5kIHdhdGVyLgpBbmQgaGUgdGhhdCBzYXcgaXQgYmFyZSByZWNvcmQsIGFuZCBoaXMgcmVjb3JkIGlzIHRydWU6IGFuZCBoZSBrbm93ZXRoIHRoYXQgaGUgc2FpdGggdHJ1ZSwgdGhhdCB5ZSBtaWdodCBiZWxpZXZlLgpGb3IgdGhlc2UgdGhpbmdzIHdlcmUgZG9uZSwgdGhhdCB0aGUgc2NyaXB0dXJlIHNob3VsZCBiZSBmdWxmaWxsZWQsIEEgYm9uZSBvZiBoaW0gc2hhbGwgbm90IGJlIGJyb2tlbi4KQW5kIGFnYWluIGFub3RoZXIgc2NyaXB0dXJlIHNhaXRoLCBUaGV5IHNoYWxsIGxvb2sgb24gaGltIHdob20gdGhleSBwaWVyY2VkLgpBbmQgYWZ0ZXIgdGhpcyBKb3NlcGggb2YgQXJpbWF0aGFlYSwgYmVpbmcgYSBkaXNjaXBsZSBvZiBKZXN1cywgYnV0IHNlY3JldGx5IGZvciBmZWFyIG9mIHRoZSBKZXdzLCBiZXNvdWdodCBQaWxhdGUgdGhhdCBoZSBtaWdodCB0YWtlIGF3YXkgdGhlIGJvZHkgb2YgSmVzdXM6IGFuZCBQaWxhdGUgZ2F2ZSBoaW0gbGVhdmUuIEhlIGNhbWUgdGhlcmVmb3JlLCBhbmQgdG9vayB0aGUgYm9keSBvZiBKZXN1cy4KQW5kIHRoZXJlIGNhbWUgYWxzbyBOaWNvZGVtdXMsIHdoaWNoIGF0IHRoZSBmaXJzdCBjYW1lIHRvIEplc3VzIGJ5IG5pZ2h0LCBhbmQgYnJvdWdodCBhIG1peHR1cmUgb2YgbXlycmggYW5kIGFsb2VzLCBhYm91dCBhbiBodW5kcmVkIHBvdW5kIHdlaWdodC4KVGhlbiB0b29rIHRoZXkgdGhlIGJvZHkgb2YgSmVzdXMsIGFuZCB3b3VuZCBpdCBpbiBsaW5lbiBjbG90aGVzIHdpdGggdGhlIHNwaWNlcywgYXMgdGhlIG1hbm5lciBvZiB0aGUgSmV3cyBpcyB0byBidXJ5LgpOb3cgaW4gdGhlIHBsYWNlIHdoZXJlIGhlIHdhcyBjcnVjaWZpZWQgdGhlcmUgd2FzIGEgZ2FyZGVuOyBhbmQgaW4gdGhlIGdhcmRlbiBhIG5ldyBzZXB1bGNocmUsIHdoZXJlaW4gd2FzIG5ldmVyIG1hbiB5ZXQgbGFpZC4KVGhlcmUgbGFpZCB0aGV5IEplc3VzIHRoZXJlZm9yZSBiZWNhdXNlIG9mIHRoZSBKZXdzJyBwcmVwYXJhdGlvbiBkYXk7IGZvciB0aGUgc2VwdWxjaHJlIHdhcyBuaWdoIGF0IGhhbmQuClRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsgY29tZXRoIE1hcnkgTWFnZGFsZW5lIGVhcmx5LCB3aGVuIGl0IHdhcyB5ZXQgZGFyaywgdW50byB0aGUgc2VwdWxjaHJlLCBhbmQgc2VldGggdGhlIHN0b25lIHRha2VuIGF3YXkgZnJvbSB0aGUgc2VwdWxjaHJlLgpUaGVuIHNoZSBydW5uZXRoLCBhbmQgY29tZXRoIHRvIFNpbW9uIFBldGVyLCBhbmQgdG8gdGhlIG90aGVyIGRpc2NpcGxlLCB3aG9tIEplc3VzIGxvdmVkLCBhbmQgc2FpdGggdW50byB0aGVtLCBUaGV5IGhhdmUgdGFrZW4gYXdheSB0aGUgTE9SRCBvdXQgb2YgdGhlIHNlcHVsY2hyZSwgYW5kIHdlIGtub3cgbm90IHdoZXJlIHRoZXkgaGF2ZSBsYWlkIGhpbS4KUGV0ZXIgdGhlcmVmb3JlIHdlbnQgZm9ydGgsIGFuZCB0aGF0IG90aGVyIGRpc2NpcGxlLCBhbmQgY2FtZSB0byB0aGUgc2VwdWxjaHJlLgpTbyB0aGV5IHJhbiBib3RoIHRvZ2V0aGVyOiBhbmQgdGhlIG90aGVyIGRpc2NpcGxlIGRpZCBvdXRydW4gUGV0ZXIsIGFuZCBjYW1lIGZpcnN0IHRvIHRoZSBzZXB1bGNocmUuCkFuZCBoZSBzdG9vcGluZyBkb3duLCBhbmQgbG9va2luZyBpbiwgc2F3IHRoZSBsaW5lbiBjbG90aGVzIGx5aW5nOyB5ZXQgd2VudCBoZSBub3QgaW4uClRoZW4gY29tZXRoIFNpbW9uIFBldGVyIGZvbGxvd2luZyBoaW0sIGFuZCB3ZW50IGludG8gdGhlIHNlcHVsY2hyZSwgYW5kIHNlZXRoIHRoZSBsaW5lbiBjbG90aGVzIGxpZSwKQW5kIHRoZSBuYXBraW4sIHRoYXQgd2FzIGFib3V0IGhpcyBoZWFkLCBub3QgbHlpbmcgd2l0aCB0aGUgbGluZW4gY2xvdGhlcywgYnV0IHdyYXBwZWQgdG9nZXRoZXIgaW4gYSBwbGFjZSBieSBpdHNlbGYuClRoZW4gd2VudCBpbiBhbHNvIHRoYXQgb3RoZXIgZGlzY2lwbGUsIHdoaWNoIGNhbWUgZmlyc3QgdG8gdGhlIHNlcHVsY2hyZSwgYW5kIGhlIHNhdywgYW5kIGJlbGlldmVkLgpGb3IgYXMgeWV0IHRoZXkga25ldyBub3QgdGhlIHNjcmlwdHVyZSwgdGhhdCBoZSBtdXN0IHJpc2UgYWdhaW4gZnJvbSB0aGUgZGVhZC4KVGhlbiB0aGUgZGlzY2lwbGVzIHdlbnQgYXdheSBhZ2FpbiB1bnRvIHRoZWlyIG93biBob21lLgpCdXQgTWFyeSBzdG9vZCB3aXRob3V0IGF0IHRoZSBzZXB1bGNocmUgd2VlcGluZzogYW5kIGFzIHNoZSB3ZXB0LCBzaGUgc3Rvb3BlZCBkb3duLCBhbmQgbG9va2VkIGludG8gdGhlIHNlcHVsY2hyZSwKQW5kIHNlZXRoIHR3byBhbmdlbHMgaW4gd2hpdGUgc2l0dGluZywgdGhlIG9uZSBhdCB0aGUgaGVhZCwgYW5kIHRoZSBvdGhlciBhdCB0aGUgZmVldCwgd2hlcmUgdGhlIGJvZHkgb2YgSmVzdXMgaGFkIGxhaW4uCkFuZCB0aGV5IHNheSB1bnRvIGhlciwgV29tYW4sIHdoeSB3ZWVwZXN0IHRob3U/IFNoZSBzYWl0aCB1bnRvIHRoZW0sIEJlY2F1c2UgdGhleSBoYXZlIHRha2VuIGF3YXkgbXkgTE9SRCwgYW5kIEkga25vdyBub3Qgd2hlcmUgdGhleSBoYXZlIGxhaWQgaGltLgpBbmQgd2hlbiBzaGUgaGFkIHRodXMgc2FpZCwgc2hlIHR1cm5lZCBoZXJzZWxmIGJhY2ssIGFuZCBzYXcgSmVzdXMgc3RhbmRpbmcsIGFuZCBrbmV3IG5vdCB0aGF0IGl0IHdhcyBKZXN1cy4KSmVzdXMgc2FpdGggdW50byBoZXIsIFdvbWFuLCB3aHkgd2VlcGVzdCB0aG91PyB3aG9tIHNlZWtlc3QgdGhvdT8gU2hlLCBzdXBwb3NpbmcgaGltIHRvIGJlIHRoZSBnYXJkZW5lciwgc2FpdGggdW50byBoaW0sIFNpciwgaWYgdGhvdSBoYXZlIGJvcm5lIGhpbSBoZW5jZSwgdGVsbCBtZSB3aGVyZSB0aG91IGhhc3QgbGFpZCBoaW0sIGFuZCBJIHdpbGwgdGFrZSBoaW0gYXdheS4KSmVzdXMgc2FpdGggdW50byBoZXIsIE1hcnkuIFNoZSB0dXJuZWQgaGVyc2VsZiwgYW5kIHNhaXRoIHVudG8gaGltLCBSYWJib25pOyB3aGljaCBpcyB0byBzYXksIE1hc3Rlci4KSmVzdXMgc2FpdGggdW50byBoZXIsIFRvdWNoIG1lIG5vdDsgZm9yIEkgYW0gbm90IHlldCBhc2NlbmRlZCB0byBteSBGYXRoZXI6IGJ1dCBnbyB0byBteSBicmV0aHJlbiwgYW5kIHNheSB1bnRvIHRoZW0sIEkgYXNjZW5kIHVudG8gbXkgRmF0aGVyLCBhbmQgeW91ciBGYXRoZXI7IGFuZCB0byBteSBHb2QsIGFuZCB5b3VyIEdvZC4KTWFyeSBNYWdkYWxlbmUgY2FtZSBhbmQgdG9sZCB0aGUgZGlzY2lwbGVzIHRoYXQgc2hlIGhhZCBzZWVuIHRoZSBMT1JELCBhbmQgdGhhdCBoZSBoYWQgc3Bva2VuIHRoZXNlIHRoaW5ncyB1bnRvIGhlci4KVGhlbiB0aGUgc2FtZSBkYXkgYXQgZXZlbmluZywgYmVpbmcgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlaywgd2hlbiB0aGUgZG9vcnMgd2VyZSBzaHV0IHdoZXJlIHRoZSBkaXNjaXBsZXMgd2VyZSBhc3NlbWJsZWQgZm9yIGZlYXIgb2YgdGhlIEpld3MsIGNhbWUgSmVzdXMgYW5kIHN0b29kIGluIHRoZSBtaWRzdCwgYW5kIHNhaXRoIHVudG8gdGhlbSwgUGVhY2UgYmUgdW50byB5b3UuCkFuZCB3aGVuIGhlIGhhZCBzbyBzYWlkLCBoZSBzaGV3ZWQgdW50byB0aGVtIGhpcyBoYW5kcyBhbmQgaGlzIHNpZGUuIFRoZW4gd2VyZSB0aGUgZGlzY2lwbGVzIGdsYWQsIHdoZW4gdGhleSBzYXcgdGhlIExPUkQuClRoZW4gc2FpZCBKZXN1cyB0byB0aGVtIGFnYWluLCBQZWFjZSBiZSB1bnRvIHlvdTogYXMgbXkgRmF0aGVyIGhhdGggc2VudCBtZSwgZXZlbiBzbyBzZW5kIEkgeW91LgpBbmQgd2hlbiBoZSBoYWQgc2FpZCB0aGlzLCBoZSBicmVhdGhlZCBvbiB0aGVtLCBhbmQgc2FpdGggdW50byB0aGVtLCBSZWNlaXZlIHllIHRoZSBIb2x5IEdob3N0OgpXaG9zZSBzb2V2ZXIgc2lucyB5ZSByZW1pdCwgdGhleSBhcmUgcmVtaXR0ZWQgdW50byB0aGVtOyBhbmQgd2hvc2Ugc29ldmVyIHNpbnMgeWUgcmV0YWluLCB0aGV5IGFyZSByZXRhaW5lZC4KQnV0IFRob21hcywgb25lIG9mIHRoZSB0d2VsdmUsIGNhbGxlZCBEaWR5bXVzLCB3YXMgbm90IHdpdGggdGhlbSB3aGVuIEplc3VzIGNhbWUuClRoZSBvdGhlciBkaXNjaXBsZXMgdGhlcmVmb3JlIHNhaWQgdW50byBoaW0sIFdlIGhhdmUgc2VlbiB0aGUgTE9SRC4gQnV0IGhlIHNhaWQgdW50byB0aGVtLCBFeGNlcHQgSSBzaGFsbCBzZWUgaW4gaGlzIGhhbmRzIHRoZSBwcmludCBvZiB0aGUgbmFpbHMsIGFuZCBwdXQgbXkgZmluZ2VyIGludG8gdGhlIHByaW50IG9mIHRoZSBuYWlscywgYW5kIHRocnVzdCBteSBoYW5kIGludG8gaGlzIHNpZGUsIEkgd2lsbCBub3QgYmVsaWV2ZS4KQW5kIGFmdGVyIGVpZ2h0IGRheXMgYWdhaW4gaGlzIGRpc2NpcGxlcyB3ZXJlIHdpdGhpbiwgYW5kIFRob21hcyB3aXRoIHRoZW06IHRoZW4gY2FtZSBKZXN1cywgdGhlIGRvb3JzIGJlaW5nIHNodXQsIGFuZCBzdG9vZCBpbiB0aGUgbWlkc3QsIGFuZCBzYWlkLCBQZWFjZSBiZSB1bnRvIHlvdS4KVGhlbiBzYWl0aCBoZSB0byBUaG9tYXMsIFJlYWNoIGhpdGhlciB0aHkgZmluZ2VyLCBhbmQgYmVob2xkIG15IGhhbmRzOyBhbmQgcmVhY2ggaGl0aGVyIHRoeSBoYW5kLCBhbmQgdGhydXN0IGl0IGludG8gbXkgc2lkZTogYW5kIGJlIG5vdCBmYWl0aGxlc3MsIGJ1dCBiZWxpZXZpbmcuCkFuZCBUaG9tYXMgYW5zd2VyZWQgYW5kIHNhaWQgdW50byBoaW0sIE15IExPUkQgYW5kIG15IEdvZC4KSmVzdXMgc2FpdGggdW50byBoaW0sIFRob21hcywgYmVjYXVzZSB0aG91IGhhc3Qgc2VlbiBtZSwgdGhvdSBoYXN0IGJlbGlldmVkOiBibGVzc2VkIGFyZSB0aGV5IHRoYXQgaGF2ZSBub3Qgc2VlbiwgYW5kIHlldCBoYXZlIGJlbGlldmVkLgpBbmQgbWFueSBvdGhlciBzaWducyB0cnVseSBkaWQgSmVzdXMgaW4gdGhlIHByZXNlbmNlIG9mIGhpcyBkaXNjaXBsZXMsIHdoaWNoIGFyZSBub3Qgd3JpdHRlbiBpbiB0aGlzIGJvb2s6CkJ1dCB0aGVzZSBhcmUgd3JpdHRlbiwgdGhhdCB5ZSBtaWdodCBiZWxpZXZlIHRoYXQgSmVzdXMgaXMgdGhlIENocmlzdCwgdGhlIFNvbiBvZiBHb2Q7IGFuZCB0aGF0IGJlbGlldmluZyB5ZSBtaWdodCBoYXZlIGxpZmUgdGhyb3VnaCBoaXMgbmFtZS4KQWZ0ZXIgdGhlc2UgdGhpbmdzIEplc3VzIHNoZXdlZCBoaW1zZWxmIGFnYWluIHRvIHRoZSBkaXNjaXBsZXMgYXQgdGhlIHNlYSBvZiBUaWJlcmlhczsgYW5kIG9uIHRoaXMgd2lzZSBzaGV3ZWQgaGUgaGltc2VsZi4KVGhlcmUgd2VyZSB0b2dldGhlciBTaW1vbiBQZXRlciwgYW5kIFRob21hcyBjYWxsZWQgRGlkeW11cywgYW5kIE5hdGhhbmFlbCBvZiBDYW5hIGluIEdhbGlsZWUsIGFuZCB0aGUgc29ucyBvZiBaZWJlZGVlLCBhbmQgdHdvIG90aGVyIG9mIGhpcyBkaXNjaXBsZXMuClNpbW9uIFBldGVyIHNhaXRoIHVudG8gdGhlbSwgSSBnbyBhIGZpc2hpbmcuIFRoZXkgc2F5IHVudG8gaGltLCBXZSBhbHNvIGdvIHdpdGggdGhlZS4gVGhleSB3ZW50IGZvcnRoLCBhbmQgZW50ZXJlZCBpbnRvIGEgc2hpcCBpbW1lZGlhdGVseTsgYW5kIHRoYXQgbmlnaHQgdGhleSBjYXVnaHQgbm90aGluZy4KQnV0IHdoZW4gdGhlIG1vcm5pbmcgd2FzIG5vdyBjb21lLCBKZXN1cyBzdG9vZCBvbiB0aGUgc2hvcmU6IGJ1dCB0aGUgZGlzY2lwbGVzIGtuZXcgbm90IHRoYXQgaXQgd2FzIEplc3VzLgpUaGVuIEplc3VzIHNhaXRoIHVudG8gdGhlbSwgQ2hpbGRyZW4sIGhhdmUgeWUgYW55IG1lYXQ/IFRoZXkgYW5zd2VyZWQgaGltLCBOby4KQW5kIGhlIHNhaWQgdW50byB0aGVtLCBDYXN0IHRoZSBuZXQgb24gdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIHNoaXAsIGFuZCB5ZSBzaGFsbCBmaW5kLiBUaGV5IGNhc3QgdGhlcmVmb3JlLCBhbmQgbm93IHRoZXkgd2VyZSBub3QgYWJsZSB0byBkcmF3IGl0IGZvciB0aGUgbXVsdGl0dWRlIG9mIGZpc2hlcy4KVGhlcmVmb3JlIHRoYXQgZGlzY2lwbGUgd2hvbSBKZXN1cyBsb3ZlZCBzYWl0aCB1bnRvIFBldGVyLCBJdCBpcyB0aGUgTG9yZC4gTm93IHdoZW4gU2ltb24gUGV0ZXIgaGVhcmQgdGhhdCBpdCB3YXMgdGhlIExvcmQsIGhlIGdpcnQgaGlzIGZpc2hlcidzIGNvYXQgdW50byBoaW0sIChmb3IgaGUgd2FzIG5ha2VkLCkgYW5kIGRpZCBjYXN0IGhpbXNlbGYgaW50byB0aGUgc2VhLgpBbmQgdGhlIG90aGVyIGRpc2NpcGxlcyBjYW1lIGluIGEgbGl0dGxlIHNoaXA7IChmb3IgdGhleSB3ZXJlIG5vdCBmYXIgZnJvbSBsYW5kLCBidXQgYXMgaXQgd2VyZSB0d28gaHVuZHJlZCBjdWJpdHMsKSBkcmFnZ2luZyB0aGUgbmV0IHdpdGggZmlzaGVzLgpBcyBzb29uIHRoZW4gYXMgdGhleSB3ZXJlIGNvbWUgdG8gbGFuZCwgdGhleSBzYXcgYSBmaXJlIG9mIGNvYWxzIHRoZXJlLCBhbmQgZmlzaCBsYWlkIHRoZXJlb24sIGFuZCBicmVhZC4KSmVzdXMgc2FpdGggdW50byB0aGVtLCBCcmluZyBvZiB0aGUgZmlzaCB3aGljaCB5ZSBoYXZlIG5vdyBjYXVnaHQuClNpbW9uIFBldGVyIHdlbnQgdXAsIGFuZCBkcmV3IHRoZSBuZXQgdG8gbGFuZCBmdWxsIG9mIGdyZWF0IGZpc2hlcywgYW4gaHVuZHJlZCBhbmQgZmlmdHkgYW5kIHRocmVlOiBhbmQgZm9yIGFsbCB0aGVyZSB3ZXJlIHNvIG1hbnksIHlldCB3YXMgbm90IHRoZSBuZXQgYnJva2VuLgpKZXN1cyBzYWl0aCB1bnRvIHRoZW0sIENvbWUgYW5kIGRpbmUuIEFuZCBub25lIG9mIHRoZSBkaXNjaXBsZXMgZHVyc3QgYXNrIGhpbSwgV2hvIGFydCB0aG91PyBrbm93aW5nIHRoYXQgaXQgd2FzIHRoZSBMb3JkLgpKZXN1cyB0aGVuIGNvbWV0aCwgYW5kIHRha2V0aCBicmVhZCwgYW5kIGdpdmV0aCB0aGVtLCBhbmQgZmlzaCBsaWtld2lzZS4KVGhpcyBpcyBub3cgdGhlIHRoaXJkIHRpbWUgdGhhdCBKZXN1cyBzaGV3ZWQgaGltc2VsZiB0byBoaXMgZGlzY2lwbGVzLCBhZnRlciB0aGF0IGhlIHdhcyByaXNlbiBmcm9tIHRoZSBkZWFkLgpTbyB3aGVuIHRoZXkgaGFkIGRpbmVkLCBKZXN1cyBzYWl0aCB0byBTaW1vbiBQZXRlciwgU2ltb24sIHNvbiBvZiBKb25hcywgbG92ZXN0IHRob3UgbWUgbW9yZSB0aGFuIHRoZXNlPyBIZSBzYWl0aCB1bnRvIGhpbSwgWWVhLCBMb3JkOyB0aG91IGtub3dlc3QgdGhhdCBJIGxvdmUgdGhlZS4gSGUgc2FpdGggdW50byBoaW0sIEZlZWQgbXkgbGFtYnMuCkhlIHNhaXRoIHRvIGhpbSBhZ2FpbiB0aGUgc2Vjb25kIHRpbWUsIFNpbW9uLCBzb24gb2YgSm9uYXMsIGxvdmVzdCB0aG91IG1lPyBIZSBzYWl0aCB1bnRvIGhpbSwgWWVhLCBMb3JkOyB0aG91IGtub3dlc3QgdGhhdCBJIGxvdmUgdGhlZS4gSGUgc2FpdGggdW50byBoaW0sIEZlZWQgbXkgc2hlZXAuCkhlIHNhaXRoIHVudG8gaGltIHRoZSB0aGlyZCB0aW1lLCBTaW1vbiwgc29uIG9mIEpvbmFzLCBsb3Zlc3QgdGhvdSBtZT8gUGV0ZXIgd2FzIGdyaWV2ZWQgYmVjYXVzZSBoZSBzYWlkIHVudG8gaGltIHRoZSB0aGlyZCB0aW1lLCBMb3Zlc3QgdGhvdSBtZT8gQW5kIGhlIHNhaWQgdW50byBoaW0sIExvcmQsIHRob3Uga25vd2VzdCBhbGwgdGhpbmdzOyB0aG91IGtub3dlc3QgdGhhdCBJIGxvdmUgdGhlZS4gSmVzdXMgc2FpdGggdW50byBoaW0sIEZlZWQgbXkgc2hlZXAuClZlcmlseSwgdmVyaWx5LCBJIHNheSB1bnRvIHRoZWUsIFdoZW4gdGhvdSB3YXN0IHlvdW5nLCB0aG91IGdpcmRlc3QgdGh5c2VsZiwgYW5kIHdhbGtlZHN0IHdoaXRoZXIgdGhvdSB3b3VsZGVzdDogYnV0IHdoZW4gdGhvdSBzaGFsdCBiZSBvbGQsIHRob3Ugc2hhbHQgc3RyZXRjaCBmb3J0aCB0aHkgaGFuZHMsIGFuZCBhbm90aGVyIHNoYWxsIGdpcmQgdGhlZSwgYW5kIGNhcnJ5IHRoZWUgd2hpdGhlciB0aG91IHdvdWxkZXN0IG5vdC4KVGhpcyBzcGFrZSBoZSwgc2lnbmlmeWluZyBieSB3aGF0IGRlYXRoIGhlIHNob3VsZCBnbG9yaWZ5IEdvZC4gQW5kIHdoZW4gaGUgaGFkIHNwb2tlbiB0aGlzLCBoZSBzYWl0aCB1bnRvIGhpbSwgRm9sbG93IG1lLgpUaGVuIFBldGVyLCB0dXJuaW5nIGFib3V0LCBzZWV0aCB0aGUgZGlzY2lwbGUgd2hvbSBKZXN1cyBsb3ZlZCBmb2xsb3dpbmc7IHdoaWNoIGFsc28gbGVhbmVkIG9uIGhpcyBicmVhc3QgYXQgc3VwcGVyLCBhbmQgc2FpZCwgTG9yZCwgd2hpY2ggaXMgaGUgdGhhdCBiZXRyYXlldGggdGhlZT8KUGV0ZXIgc2VlaW5nIGhpbSBzYWl0aCB0byBKZXN1cywgTG9yZCwgYW5kIHdoYXQgc2hhbGwgdGhpcyBtYW4gZG8/Ckplc3VzIHNhaXRoIHVudG8gaGltLCBJZiBJIHdpbGwgdGhhdCBoZSB0YXJyeSB0aWxsIEkgY29tZSwgd2hhdCBpcyB0aGF0IHRvIHRoZWU/IGZvbGxvdyB0aG91IG1lLgpUaGVuIHdlbnQgdGhpcyBzYXlpbmcgYWJyb2FkIGFtb25nIHRoZSBicmV0aHJlbiwgdGhhdCB0aGF0IGRpc2NpcGxlIHNob3VsZCBub3QgZGllOiB5ZXQgSmVzdXMgc2FpZCBub3QgdW50byBoaW0sIEhlIHNoYWxsIG5vdCBkaWU7IGJ1dCwgSWYgSSB3aWxsIHRoYXQgaGUgdGFycnkgdGlsbCBJIGNvbWUsIHdoYXQgaXMgdGhhdCB0byB0aGVlPwpUaGlzIGlzIHRoZSBkaXNjaXBsZSB3aGljaCB0ZXN0aWZpZXRoIG9mIHRoZXNlIHRoaW5ncywgYW5kIHdyb3RlIHRoZXNlIHRoaW5nczogYW5kIHdlIGtub3cgdGhhdCBoaXMgdGVzdGltb255IGlzIHRydWUuCkFuZCB0aGVyZSBhcmUgYWxzbyBtYW55IG90aGVyIHRoaW5ncyB3aGljaCBKZXN1cyBkaWQsIHRoZSB3aGljaCwgaWYgdGhleSBzaG91bGQgYmUgd3JpdHRlbiBldmVyeSBvbmUsIEkgc3VwcG9zZSB0aGF0IGV2ZW4gdGhlIHdvcmxkIGl0c2VsZiBjb3VsZCBub3QgY29udGFpbiB0aGUgYm9va3MgdGhhdCBzaG91bGQgYmUgd3JpdHRlbi4gQW1lbi4KVGhlIGZvcm1lciB0cmVhdGlzZSBoYXZlIEkgbWFkZSwgTyBUaGVvcGhpbHVzLCBvZiBhbGwgdGhhdCBKZXN1cyBiZWdhbiBib3RoIHRvIGRvIGFuZCB0ZWFjaCwKVW50aWwgdGhlIGRheSBpbiB3aGljaCBoZSB3YXMgdGFrZW4gdXAsIGFmdGVyIHRoYXQgaGUgdGhyb3VnaCB0aGUgSG9seSBHaG9zdCBoYWQgZ2l2ZW4gY29tbWFuZG1lbnRzIHVudG8gdGhlIGFwb3N0bGVzIHdob20gaGUgaGFkIGNob3NlbjoKVG8gd2hvbSBhbHNvIGhlIHNoZXdlZCBoaW1zZWxmIGFsaXZlIGFmdGVyIGhpcyBwYXNzaW9uIGJ5IG1hbnkgaW5mYWxsaWJsZSBwcm9vZnMsIGJlaW5nIHNlZW4gb2YgdGhlbSBmb3J0eSBkYXlzLCBhbmQgc3BlYWtpbmcgb2YgdGhlIHRoaW5ncyBwZXJ0YWluaW5nIHRvIHRoZSBraW5nZG9tIG9mIEdvZDoKQW5kLCBiZWluZyBhc3NlbWJsZWQgdG9nZXRoZXIgd2l0aCB0aGVtLCBjb21tYW5kZWQgdGhlbSB0aGF0IHRoZXkgc2hvdWxkIG5vdCBkZXBhcnQgZnJvbSBKZXJ1c2FsZW0sIGJ1dCB3YWl0IGZvciB0aGUgcHJvbWlzZSBvZiB0aGUgRmF0aGVyLCB3aGljaCwgc2FpdGggaGUsIHllIGhhdmUgaGVhcmQgb2YgbWUuCkZvciBKb2huIHRydWx5IGJhcHRpemVkIHdpdGggd2F0ZXI7IGJ1dCB5ZSBzaGFsbCBiZSBiYXB0aXplZCB3aXRoIHRoZSBIb2x5IEdob3N0IG5vdCBtYW55IGRheXMgaGVuY2UuCldoZW4gdGhleSB0aGVyZWZvcmUgd2VyZSBjb21lIHRvZ2V0aGVyLCB0aGV5IGFza2VkIG9mIGhpbSwgc2F5aW5nLCBMb3JkLCB3aWx0IHRob3UgYXQgdGhpcyB0aW1lIHJlc3RvcmUgYWdhaW4gdGhlIGtpbmdkb20gdG8gSXNyYWVsPwpBbmQgaGUgc2FpZCB1bnRvIHRoZW0sIEl0IGlzIG5vdCBmb3IgeW91IHRvIGtub3cgdGhlIHRpbWVzIG9yIHRoZSBzZWFzb25zLCB3aGljaCB0aGUgRmF0aGVyIGhhdGggcHV0IGluIGhpcyBvd24gcG93ZXIuCkJ1dCB5ZSBzaGFsbCByZWNlaXZlIHBvd2VyLCBhZnRlciB0aGF0IHRoZSBIb2x5IEdob3N0IGlzIGNvbWUgdXBvbiB5b3U6IGFuZCB5ZSBzaGFsbCBiZSB3aXRuZXNzZXMgdW50byBtZSBib3RoIGluIEplcnVzYWxlbSwgYW5kIGluIGFsbCBKdWRhZWEsIGFuZCBpbiBTYW1hcmlhLCBhbmQgdW50byB0aGUgdXR0ZXJtb3N0IHBhcnQgb2YgdGhlIGVhcnRoLgpBbmQgd2hlbiBoZSBoYWQgc3Bva2VuIHRoZXNlIHRoaW5ncywgd2hpbGUgdGhleSBiZWhlbGQsIGhlIHdhcyB0YWtlbiB1cDsgYW5kIGEgY2xvdWQgcmVjZWl2ZWQgaGltIG91dCBvZiB0aGVpciBzaWdodC4KQW5kIHdoaWxlIHRoZXkgbG9va2VkIHN0ZWRmYXN0bHkgdG93YXJkIGhlYXZlbiBhcyBoZSB3ZW50IHVwLCBiZWhvbGQsIHR3byBtZW4gc3Rvb2QgYnkgdGhlbSBpbiB3aGl0ZSBhcHBhcmVsOwpXaGljaCBhbHNvIHNhaWQsIFllIG1lbiBvZiBHYWxpbGVlLCB3aHkgc3RhbmQgeWUgZ2F6aW5nIHVwIGludG8gaGVhdmVuPyB0aGlzIHNhbWUgSmVzdXMsIHdoaWNoIGlzIHRha2VuIHVwIGZyb20geW91IGludG8gaGVhdmVuLCBzaGFsbCBzbyBjb21lIGluIGxpa2UgbWFubmVyIGFzIHllIGhhdmUgc2VlbiBoaW0gZ28gaW50byBoZWF2ZW4uClRoZW4gcmV0dXJuZWQgdGhleSB1bnRvIEplcnVzYWxlbSBmcm9tIHRoZSBtb3VudCBjYWxsZWQgT2xpdmV0LCB3aGljaCBpcyBmcm9tIEplcnVzYWxlbSBhIHNhYmJhdGggZGF5J3Mgam91cm5leS4KQW5kIHdoZW4gdGhleSB3ZXJlIGNvbWUgaW4sIHRoZXkgd2VudCB1cCBpbnRvIGFuIHVwcGVyIHJvb20sIHdoZXJlIGFib2RlIGJvdGggUGV0ZXIsIGFuZCBKYW1lcywgYW5kIEpvaG4sIGFuZCBBbmRyZXcsIFBoaWxpcCwgYW5kIFRob21hcywgQmFydGhvbG9tZXcsIGFuZCBNYXR0aGV3LCBKYW1lcyB0aGUgc29uIG9mIEFscGhhZXVzLCBhbmQgU2ltb24gWmVsb3RlcywgYW5kIEp1ZGFzIHRoZSBicm90aGVyIG9mIEphbWVzLgpUaGVzZSBhbGwgY29udGludWVkIHdpdGggb25lIGFjY29yZCBpbiBwcmF5ZXIgYW5kIHN1cHBsaWNhdGlvbiwgd2l0aCB0aGUgd29tZW4sIGFuZCBNYXJ5IHRoZSBtb3RoZXIgb2YgSmVzdXMsIGFuZCB3aXRoIGhpcyBicmV0aHJlbi4KQW5kIGluIHRob3NlIGRheXMgUGV0ZXIgc3Rvb2QgdXAgaW4gdGhlIG1pZHN0IG9mIHRoZSBkaXNjaXBsZXMsIGFuZCBzYWlkLCAodGhlIG51bWJlciBvZiBuYW1lcyB0b2dldGhlciB3ZXJlIGFib3V0IGFuIGh1bmRyZWQgYW5kIHR3ZW50eSwpCk1lbiBhbmQgYnJldGhyZW4sIHRoaXMgc2NyaXB0dXJlIG11c3QgbmVlZHMgaGF2ZSBiZWVuIGZ1bGZpbGxlZCwgd2hpY2ggdGhlIEhvbHkgR2hvc3QgYnkgdGhlIG1vdXRoIG9mIERhdmlkIHNwYWtlIGJlZm9yZSBjb25jZXJuaW5nIEp1ZGFzLCB3aGljaCB3YXMgZ3VpZGUgdG8gdGhlbSB0aGF0IHRvb2sgSmVzdXMuCkZvciBoZSB3YXMgbnVtYmVyZWQgd2l0aCB1cywgYW5kIGhhZCBvYnRhaW5lZCBwYXJ0IG9mIHRoaXMgbWluaXN0cnkuCk5vdyB0aGlzIG1hbiBwdXJjaGFzZWQgYSBmaWVsZCB3aXRoIHRoZSByZXdhcmQgb2YgaW5pcXVpdHk7IGFuZCBmYWxsaW5nIGhlYWRsb25nLCBoZSBidXJzdCBhc3VuZGVyIGluIHRoZSBtaWRzdCwgYW5kIGFsbCBoaXMgYm93ZWxzIGd1c2hlZCBvdXQuCkFuZCBpdCB3YXMga25vd24gdW50byBhbGwgdGhlIGR3ZWxsZXJzIGF0IEplcnVzYWxlbTsgaW5zb211Y2ggYXMgdGhhdCBmaWVsZCBpcyBjYWxsZWQgaW4gdGhlaXIgcHJvcGVyIHRvbmd1ZSwgQWNlbGRhbWEsIHRoYXQgaXMgdG8gc2F5LCBUaGUgZmllbGQgb2YgYmxvb2QuCkZvciBpdCBpcyB3cml0dGVuIGluIHRoZSBib29rIG9mIFBzYWxtcywgTGV0IGhpcyBoYWJpdGF0aW9uIGJlIGRlc29sYXRlLCBhbmQgbGV0IG5vIG1hbiBkd2VsbCB0aGVyZWluOiBhbmQgaGlzIGJpc2hvcHJpY2sgbGV0IGFub3RoZXIgdGFrZS4KV2hlcmVmb3JlIG9mIHRoZXNlIG1lbiB3aGljaCBoYXZlIGNvbXBhbmllZCB3aXRoIHVzIGFsbCB0aGUgdGltZSB0aGF0IHRoZSBMb3JkIEplc3VzIHdlbnQgaW4gYW5kIG91dCBhbW9uZyB1cywKQmVnaW5uaW5nIGZyb20gdGhlIGJhcHRpc20gb2YgSm9obiwgdW50byB0aGF0IHNhbWUgZGF5IHRoYXQgaGUgd2FzIHRha2VuIHVwIGZyb20gdXMsIG11c3Qgb25lIGJlIG9yZGFpbmVkIHRvIGJlIGEgd2l0bmVzcyB3aXRoIHVzIG9mIGhpcyByZXN1cnJlY3Rpb24uCkFuZCB0aGV5IGFwcG9pbnRlZCB0d28sIEpvc2VwaCBjYWxsZWQgQmFyc2FiYXMsIHdobyB3YXMgc3VybmFtZWQgSnVzdHVzLCBhbmQgTWF0dGhpYXMuCkFuZCB0aGV5IHByYXllZCwgYW5kIHNhaWQsIFRob3UsIExvcmQsIHdoaWNoIGtub3dlc3QgdGhlIGhlYXJ0cyBvZiBhbGwgbWVuLCBzaGV3IHdoZXRoZXIgb2YgdGhlc2UgdHdvIHRob3UgaGFzdCBjaG9zZW4sClRoYXQgaGUgbWF5IHRha2UgcGFydCBvZiB0aGlzIG1pbmlzdHJ5IGFuZCBhcG9zdGxlc2hpcCwgZnJvbSB3aGljaCBKdWRhcyBieSB0cmFuc2dyZXNzaW9uIGZlbGwsIHRoYXQgaGUgbWlnaHQgZ28gdG8gaGlzIG93biBwbGFjZS4KQW5kIHRoZXkgZ2F2ZSBmb3J0aCB0aGVpciBsb3RzOyBhbmQgdGhlIGxvdCBmZWxsIHVwb24gTWF0dGhpYXM7IGFuZCBoZSB3YXMgbnVtYmVyZWQgd2l0aCB0aGUgZWxldmVuIGFwb3N0bGVzLgpBbmQgd2hlbiB0aGUgZGF5IG9mIFBlbnRlY29zdCB3YXMgZnVsbHkgY29tZSwgdGhleSB3ZXJlIGFsbCB3aXRoIG9uZSBhY2NvcmQgaW4gb25lIHBsYWNlLgpBbmQgc3VkZGVubHkgdGhlcmUgY2FtZSBhIHNvdW5kIGZyb20gaGVhdmVuIGFzIG9mIGEgcnVzaGluZyBtaWdodHkgd2luZCwgYW5kIGl0IGZpbGxlZCBhbGwgdGhlIGhvdXNlIHdoZXJlIHRoZXkgd2VyZSBzaXR0aW5nLgpBbmQgdGhlcmUgYXBwZWFyZWQgdW50byB0aGVtIGNsb3ZlbiB0b25ndWVzIGxpa2UgYXMgb2YgZmlyZSwgYW5kIGl0IHNhdCB1cG9uIGVhY2ggb2YgdGhlbS4KQW5kIHRoZXkgd2VyZSBhbGwgZmlsbGVkIHdpdGggdGhlIEhvbHkgR2hvc3QsIGFuZCBiZWdhbiB0byBzcGVhayB3aXRoIG90aGVyIHRvbmd1ZXMsIGFzIHRoZSBTcGlyaXQgZ2F2ZSB0aGVtIHV0dGVyYW5jZS4KQW5kIHRoZXJlIHdlcmUgZHdlbGxpbmcgYXQgSmVydXNhbGVtIEpld3MsIGRldm91dCBtZW4sIG91dCBvZiBldmVyeSBuYXRpb24gdW5kZXIgaGVhdmVuLgpOb3cgd2hlbiB0aGlzIHdhcyBub2lzZWQgYWJyb2FkLCB0aGUgbXVsdGl0dWRlIGNhbWUgdG9nZXRoZXIsIGFuZCB3ZXJlIGNvbmZvdW5kZWQsIGJlY2F1c2UgdGhhdCBldmVyeSBtYW4gaGVhcmQgdGhlbSBzcGVhayBpbiBoaXMgb3duIGxhbmd1YWdlLgpBbmQgdGhleSB3ZXJlIGFsbCBhbWF6ZWQgYW5kIG1hcnZlbGxlZCwgc2F5aW5nIG9uZSB0byBhbm90aGVyLCBCZWhvbGQsIGFyZSBub3QgYWxsIHRoZXNlIHdoaWNoIHNwZWFrIEdhbGlsYWVhbnM/CkFuZCBob3cgaGVhciB3ZSBldmVyeSBtYW4gaW4gb3VyIG93biB0b25ndWUsIHdoZXJlaW4gd2Ugd2VyZSBib3JuPwpQYXJ0aGlhbnMsIGFuZCBNZWRlcywgYW5kIEVsYW1pdGVzLCBhbmQgdGhlIGR3ZWxsZXJzIGluIE1lc29wb3RhbWlhLCBhbmQgaW4gSnVkYWVhLCBhbmQgQ2FwcGFkb2NpYSwgaW4gUG9udHVzLCBhbmQgQXNpYSwKUGhyeWdpYSwgYW5kIFBhbXBoeWxpYSwgaW4gRWd5cHQsIGFuZCBpbiB0aGUgcGFydHMgb2YgTGlieWEgYWJvdXQgQ3lyZW5lLCBhbmQgc3RyYW5nZXJzIG9mIFJvbWUsIEpld3MgYW5kIHByb3NlbHl0ZXMsCkNyZXRlcyBhbmQgQXJhYmlhbnMsIHdlIGRvIGhlYXIgdGhlbSBzcGVhayBpbiBvdXIgdG9uZ3VlcyB0aGUgd29uZGVyZnVsIHdvcmtzIG9mIEdvZC4KQW5kIHRoZXkgd2VyZSBhbGwgYW1hemVkLCBhbmQgd2VyZSBpbiBkb3VidCwgc2F5aW5nIG9uZSB0byBhbm90aGVyLCBXaGF0IG1lYW5ldGggdGhpcz8KT3RoZXJzIG1vY2tpbmcgc2FpZCwgVGhlc2UgbWVuIGFyZSBmdWxsIG9mIG5ldyB3aW5lLgpCdXQgUGV0ZXIsIHN0YW5kaW5nIHVwIHdpdGggdGhlIGVsZXZlbiwgbGlmdGVkIHVwIGhpcyB2b2ljZSwgYW5kIHNhaWQgdW50byB0aGVtLCBZZSBtZW4gb2YgSnVkYWVhLCBhbmQgYWxsIHllIHRoYXQgZHdlbGwgYXQgSmVydXNhbGVtLCBiZSB0aGlzIGtub3duIHVudG8geW91LCBhbmQgaGVhcmtlbiB0byBteSB3b3JkczoKRm9yIHRoZXNlIGFyZSBub3QgZHJ1bmtlbiwgYXMgeWUgc3VwcG9zZSwgc2VlaW5nIGl0IGlzIGJ1dCB0aGUgdGhpcmQgaG91ciBvZiB0aGUgZGF5LgpCdXQgdGhpcyBpcyB0aGF0IHdoaWNoIHdhcyBzcG9rZW4gYnkgdGhlIHByb3BoZXQgSm9lbDsKQW5kIGl0IHNoYWxsIGNvbWUgdG8gcGFzcyBpbiB0aGUgbGFzdCBkYXlzLCBzYWl0aCBHb2QsIEkgd2lsbCBwb3VyIG91dCBvZiBteSBTcGlyaXQgdXBvbiBhbGwgZmxlc2g6IGFuZCB5b3VyIHNvbnMgYW5kIHlvdXIgZGF1Z2h0ZXJzIHNoYWxsIHByb3BoZXN5LCBhbmQgeW91ciB5b3VuZyBtZW4gc2hhbGwgc2VlIHZpc2lvbnMsIGFuZCB5b3VyIG9sZCBtZW4gc2hhbGwgZHJlYW0gZHJlYW1zOgpBbmQgb24gbXkgc2VydmFudHMgYW5kIG9uIG15IGhhbmRtYWlkZW5zIEkgd2lsbCBwb3VyIG91dCBpbiB0aG9zZSBkYXlzIG9mIG15IFNwaXJpdDsgYW5kIHRoZXkgc2hhbGwgcHJvcGhlc3k6CkFuZCBJIHdpbGwgc2hldyB3b25kZXJzIGluIGhlYXZlbiBhYm92ZSwgYW5kIHNpZ25zIGluIHRoZSBlYXJ0aCBiZW5lYXRoOyBibG9vZCwgYW5kIGZpcmUsIGFuZCB2YXBvdXIgb2Ygc21va2U6ClRoZSBzdW4gc2hhbGwgYmUgdHVybmVkIGludG8gZGFya25lc3MsIGFuZCB0aGUgbW9vbiBpbnRvIGJsb29kLCBiZWZvcmUgdGhlIGdyZWF0IGFuZCBub3RhYmxlIGRheSBvZiB0aGUgTG9yZCBjb21lOgpBbmQgaXQgc2hhbGwgY29tZSB0byBwYXNzLCB0aGF0IHdob3NvZXZlciBzaGFsbCBjYWxsIG9uIHRoZSBuYW1lIG9mIHRoZSBMb3JkIHNoYWxsIGJlIHNhdmVkLgpZZSBtZW4gb2YgSXNyYWVsLCBoZWFyIHRoZXNlIHdvcmRzOyBKZXN1cyBvZiBOYXphcmV0aCwgYSBtYW4gYXBwcm92ZWQgb2YgR29kIGFtb25nIHlvdSBieSBtaXJhY2xlcyBhbmQgd29uZGVycyBhbmQgc2lnbnMsIHdoaWNoIEdvZCBkaWQgYnkgaGltIGluIHRoZSBtaWRzdCBvZiB5b3UsIGFzIHllIHlvdXJzZWx2ZXMgYWxzbyBrbm93OgpIaW0sIGJlaW5nIGRlbGl2ZXJlZCBieSB0aGUgZGV0ZXJtaW5hdGUgY291bnNlbCBhbmQgZm9yZWtub3dsZWRnZSBvZiBHb2QsIHllIGhhdmUgdGFrZW4sIGFuZCBieSB3aWNrZWQgaGFuZHMgaGF2ZSBjcnVjaWZpZWQgYW5kIHNsYWluOgpXaG9tIEdvZCBoYXRoIHJhaXNlZCB1cCwgaGF2aW5nIGxvb3NlZCB0aGUgcGFpbnMgb2YgZGVhdGg6IGJlY2F1c2UgaXQgd2FzIG5vdCBwb3NzaWJsZSB0aGF0IGhlIHNob3VsZCBiZSBob2xkZW4gb2YgaXQuCkZvciBEYXZpZCBzcGVha2V0aCBjb25jZXJuaW5nIGhpbSwgSSBmb3Jlc2F3IHRoZSBMb3JkIGFsd2F5cyBiZWZvcmUgbXkgZmFjZSwgZm9yIGhlIGlzIG9uIG15IHJpZ2h0IGhhbmQsIHRoYXQgSSBzaG91bGQgbm90IGJlIG1vdmVkOgpUaGVyZWZvcmUgZGlkIG15IGhlYXJ0IHJlam9pY2UsIGFuZCBteSB0b25ndWUgd2FzIGdsYWQ7IG1vcmVvdmVyIGFsc28gbXkgZmxlc2ggc2hhbGwgcmVzdCBpbiBob3BlOgpCZWNhdXNlIHRob3Ugd2lsdCBub3QgbGVhdmUgbXkgc291bCBpbiBoZWxsLCBuZWl0aGVyIHdpbHQgdGhvdSBzdWZmZXIgdGhpbmUgSG9seSBPbmUgdG8gc2VlIGNvcnJ1cHRpb24uClRob3UgaGFzdCBtYWRlIGtub3duIHRvIG1lIHRoZSB3YXlzIG9mIGxpZmU7IHRob3Ugc2hhbHQgbWFrZSBtZSBmdWxsIG9mIGpveSB3aXRoIHRoeSBjb3VudGVuYW5jZS4KTWVuIGFuZCBicmV0aHJlbiwgbGV0IG1lIGZyZWVseSBzcGVhayB1bnRvIHlvdSBvZiB0aGUgcGF0cmlhcmNoIERhdmlkLCB0aGF0IGhlIGlzIGJvdGggZGVhZCBhbmQgYnVyaWVkLCBhbmQgaGlzIHNlcHVsY2hyZSBpcyB3aXRoIHVzIHVudG8gdGhpcyBkYXkuClRoZXJlZm9yZSBiZWluZyBhIHByb3BoZXQsIGFuZCBrbm93aW5nIHRoYXQgR29kIGhhZCBzd29ybiB3aXRoIGFuIG9hdGggdG8gaGltLCB0aGF0IG9mIHRoZSBmcnVpdCBvZiBoaXMgbG9pbnMsIGFjY29yZGluZyB0byB0aGUgZmxlc2gsIGhlIHdvdWxkIHJhaXNlIHVwIENocmlzdCB0byBzaXQgb24gaGlzIHRocm9uZTsKSGUgc2VlaW5nIHRoaXMgYmVmb3JlIHNwYWtlIG9mIHRoZSByZXN1cnJlY3Rpb24gb2YgQ2hyaXN0LCB0aGF0IGhpcyBzb3VsIHdhcyBub3QgbGVmdCBpbiBoZWxsLCBuZWl0aGVyIGhpcyBmbGVzaCBkaWQgc2VlIGNvcnJ1cHRpb24uClRoaXMgSmVzdXMgaGF0aCBHb2QgcmFpc2VkIHVwLCB3aGVyZW9mIHdlIGFsbCBhcmUgd2l0bmVzc2VzLgpUaGVyZWZvcmUgYmVpbmcgYnkgdGhlIHJpZ2h0IGhhbmQgb2YgR29kIGV4YWx0ZWQsIGFuZCBoYXZpbmcgcmVjZWl2ZWQgb2YgdGhlIEZhdGhlciB0aGUgcHJvbWlzZSBvZiB0aGUgSG9seSBHaG9zdCwgaGUgaGF0aCBzaGVkIGZvcnRoIHRoaXMsIHdoaWNoIHllIG5vdyBzZWUgYW5kIGhlYXIuCkZvciBEYXZpZCBpcyBub3QgYXNjZW5kZWQgaW50byB0aGUgaGVhdmVuczogYnV0IGhlIHNhaXRoIGhpbXNlbGYsIFRoZSBMb3JkIHNhaWQgdW50byBteSBMb3JkLCBTaXQgdGhvdSBvbiBteSByaWdodCBoYW5kLApVbnRpbCBJIG1ha2UgdGh5IGZvZXMgdGh5IGZvb3RzdG9vbC4KVGhlcmVmb3JlIGxldCBhbGwgdGhlIGhvdXNlIG9mIElzcmFlbCBrbm93IGFzc3VyZWRseSwgdGhhdCBHb2QgaGF0aCBtYWRlIHRoZSBzYW1lIEplc3VzLCB3aG9tIHllIGhhdmUgY3J1Y2lmaWVkLCBib3RoIExvcmQgYW5kIENocmlzdC4KTm93IHdoZW4gdGhleSBoZWFyZCB0aGlzLCB0aGV5IHdlcmUgcHJpY2tlZCBpbiB0aGVpciBoZWFydCwgYW5kIHNhaWQgdW50byBQZXRlciBhbmQgdG8gdGhlIHJlc3Qgb2YgdGhlIGFwb3N0bGVzLCBNZW4gYW5kIGJyZXRocmVuLCB3aGF0IHNoYWxsIHdlIGRvPwpUaGVuIFBldGVyIHNhaWQgdW50byB0aGVtLCBSZXBlbnQsIGFuZCBiZSBiYXB0aXplZCBldmVyeSBvbmUgb2YgeW91IGluIHRoZSBuYW1lIG9mIEplc3VzIENocmlzdCBmb3IgdGhlIHJlbWlzc2lvbiBvZiBzaW5zLCBhbmQgeWUgc2hhbGwgcmVjZWl2ZSB0aGUgZ2lmdCBvZiB0aGUgSG9seSBHaG9zdC4KRm9yIHRoZSBwcm9taXNlIGlzIHVudG8geW91LCBhbmQgdG8geW91ciBjaGlsZHJlbiwgYW5kIHRvIGFsbCB0aGF0IGFyZSBhZmFyIG9mZiwgZXZlbiBhcyBtYW55IGFzIHRoZSBMT1JEIG91ciBHb2Qgc2hhbGwgY2FsbC4KQW5kIHdpdGggbWFueSBvdGhlciB3b3JkcyBkaWQgaGUgdGVzdGlmeSBhbmQgZXhob3J0LCBzYXlpbmcsIFNhdmUgeW91cnNlbHZlcyBmcm9tIHRoaXMgdW50b3dhcmQgZ2VuZXJhdGlvbi4KVGhlbiB0aGV5IHRoYXQgZ2xhZGx5IHJlY2VpdmVkIGhpcyB3b3JkIHdlcmUgYmFwdGl6ZWQ6IGFuZCB0aGUgc2FtZSBkYXkgdGhlcmUgd2VyZSBhZGRlZCB1bnRvIHRoZW0gYWJvdXQgdGhyZWUgdGhvdXNhbmQgc291bHMuCkFuZCB0aGV5IGNvbnRpbnVlZCBzdGVkZmFzdGx5IGluIHRoZSBhcG9zdGxlcycgZG9jdHJpbmUgYW5kIGZlbGxvd3NoaXAsIGFuZCBpbiBicmVha2luZyBvZiBicmVhZCwgYW5kIGluIHByYXllcnMuCkFuZCBmZWFyIGNhbWUgdXBvbiBldmVyeSBzb3VsOiBhbmQgbWFueSB3b25kZXJzIGFuZCBzaWducyB3ZXJlIGRvbmUgYnkgdGhlIGFwb3N0bGVzLgpBbmQgYWxsIHRoYXQgYmVsaWV2ZWQgd2VyZSB0b2dldGhlciwgYW5kIGhhZCBhbGwgdGhpbmdzIGNvbW1vbjsKQW5kIHNvbGQgdGhlaXIgcG9zc2Vzc2lvbnMgYW5kIGdvb2RzLCBhbmQgcGFydGVkIHRoZW0gdG8gYWxsIG1lbiwgYXMgZXZlcnkgbWFuIGhhZCBuZWVkLgpBbmQgdGhleSwgY29udGludWluZyBkYWlseSB3aXRoIG9uZSBhY2NvcmQgaW4gdGhlIHRlbXBsZSwgYW5kIGJyZWFraW5nIGJyZWFkIGZyb20gaG91c2UgdG8gaG91c2UsIGRpZCBlYXQgdGhlaXIgbWVhdCB3aXRoIGdsYWRuZXNzIGFuZCBzaW5nbGVuZXNzIG9mIGhlYXJ0LApQcmFpc2luZyBHb2QsIGFuZCBoYXZpbmcgZmF2b3VyIHdpdGggYWxsIHRoZSBwZW9wbGUuIEFuZCB0aGUgTG9yZCBhZGRlZCB0byB0aGUgY2h1cmNoIGRhaWx5IHN1Y2ggYXMgc2hvdWxkIGJlIHNhdmVkLgpOb3cgUGV0ZXIgYW5kIEpvaG4gd2VudCB1cCB0b2dldGhlciBpbnRvIHRoZSB0ZW1wbGUgYXQgdGhlIGhvdXIgb2YgcHJheWVyLCBiZWluZyB0aGUgbmludGggaG91ci4KQW5kIGEgY2VydGFpbiBtYW4gbGFtZSBmcm9tIGhpcyBtb3RoZXIncyB3b21iIHdhcyBjYXJyaWVkLCB3aG9tIHRoZXkgbGFpZCBkYWlseSBhdCB0aGUgZ2F0ZSBvZiB0aGUgdGVtcGxlIHdoaWNoIGlzIGNhbGxlZCBCZWF1dGlmdWwsIHRvIGFzayBhbG1zIG9mIHRoZW0gdGhhdCBlbnRlcmVkIGludG8gdGhlIHRlbXBsZTsKV2hvIHNlZWluZyBQZXRlciBhbmQgSm9obiBhYm91dCB0byBnbyBpbnRvIHRoZSB0ZW1wbGUgYXNrZWQgYW4gYWxtcy4KQW5kIFBldGVyLCBmYXN0ZW5pbmcgaGlzIGV5ZXMgdXBvbiBoaW0gd2l0aCBKb2huLCBzYWlkLCBMb29rIG9uIHVzLgpBbmQgaGUgZ2F2ZSBoZWVkIHVudG8gdGhlbSwgZXhwZWN0aW5nIHRvIHJlY2VpdmUgc29tZXRoaW5nIG9mIHRoZW0uClRoZW4gUGV0ZXIgc2FpZCwgU2lsdmVyIGFuZCBnb2xkIGhhdmUgSSBub25lOyBidXQgc3VjaCBhcyBJIGhhdmUgZ2l2ZSBJIHRoZWU6IEluIHRoZSBuYW1lIG9mIEplc3VzIENocmlzdCBvZiBOYXphcmV0aCByaXNlIHVwIGFuZCB3YWxrLgpBbmQgaGUgdG9vayBoaW0gYnkgdGhlIHJpZ2h0IGhhbmQsIGFuZCBsaWZ0ZWQgaGltIHVwOiBhbmQgaW1tZWRpYXRlbHkgaGlzIGZlZXQgYW5kIGFua2xlIGJvbmVzIHJlY2VpdmVkIHN0cmVuZ3RoLgpBbmQgaGUgbGVhcGluZyB1cCBzdG9vZCwgYW5kIHdhbGtlZCwgYW5kIGVudGVyZWQgd2l0aCB0aGVtIGludG8gdGhlIHRlbXBsZSwgd2Fsa2luZywgYW5kIGxlYXBpbmcsIGFuZCBwcmFpc2luZyBHb2QuCkFuZCBhbGwgdGhlIHBlb3BsZSBzYXcgaGltIHdhbGtpbmcgYW5kIHByYWlzaW5nIEdvZDoKQW5kIHRoZXkga25ldyB0aGF0IGl0IHdhcyBoZSB3aGljaCBzYXQgZm9yIGFsbXMgYXQgdGhlIEJlYXV0aWZ1bCBnYXRlIG9mIHRoZSB0ZW1wbGU6IGFuZCB0aGV5IHdlcmUgZmlsbGVkIHdpdGggd29uZGVyIGFuZCBhbWF6ZW1lbnQgYXQgdGhhdCB3aGljaCBoYWQgaGFwcGVuZWQgdW50byBoaW0uCkFuZCBhcyB0aGUgbGFtZSBtYW4gd2hpY2ggd2FzIGhlYWxlZCBoZWxkIFBldGVyIGFuZCBKb2huLCBhbGwgdGhlIHBlb3BsZSByYW4gdG9nZXRoZXIgdW50byB0aGVtIGluIHRoZSBwb3JjaCB0aGF0IGlzIGNhbGxlZCBTb2xvbW9uJ3MsIGdyZWF0bHkgd29uZGVyaW5nLgpBbmQgd2hlbiBQZXRlciBzYXcgaXQsIGhlIGFuc3dlcmVkIHVudG8gdGhlIHBlb3BsZSwgWWUgbWVuIG9mIElzcmFlbCwgd2h5IG1hcnZlbCB5ZSBhdCB0aGlzPyBvciB3aHkgbG9vayB5ZSBzbyBlYXJuZXN0bHkgb24gdXMsIGFzIHRob3VnaCBieSBvdXIgb3duIHBvd2VyIG9yIGhvbGluZXNzIHdlIGhhZCBtYWRlIHRoaXMgbWFuIHRvIHdhbGs/ClRoZSBHb2Qgb2YgQWJyYWhhbSwgYW5kIG9mIElzYWFjLCBhbmQgb2YgSmFjb2IsIHRoZSBHb2Qgb2Ygb3VyIGZhdGhlcnMsIGhhdGggZ2xvcmlmaWVkIGhpcyBTb24gSmVzdXM7IHdob20geWUgZGVsaXZlcmVkIHVwLCBhbmQgZGVuaWVkIGhpbSBpbiB0aGUgcHJlc2VuY2Ugb2YgUGlsYXRlLCB3aGVuIGhlIHdhcyBkZXRlcm1pbmVkIHRvIGxldCBoaW0gZ28uCkJ1dCB5ZSBkZW5pZWQgdGhlIEhvbHkgT25lIGFuZCB0aGUgSnVzdCwgYW5kIGRlc2lyZWQgYSBtdXJkZXJlciB0byBiZSBncmFudGVkIHVudG8geW91OwpBbmQga2lsbGVkIHRoZSBQcmluY2Ugb2YgbGlmZSwgd2hvbSBHb2QgaGF0aCByYWlzZWQgZnJvbSB0aGUgZGVhZDsgd2hlcmVvZiB3ZSBhcmUgd2l0bmVzc2VzLgpBbmQgaGlzIG5hbWUgdGhyb3VnaCBmYWl0aCBpbiBoaXMgbmFtZSBoYXRoIG1hZGUgdGhpcyBtYW4gc3Ryb25nLCB3aG9tIHllIHNlZSBhbmQga25vdzogeWVhLCB0aGUgZmFpdGggd2hpY2ggaXMgYnkgaGltIGhhdGggZ2l2ZW4gaGltIHRoaXMgcGVyZmVjdCBzb3VuZG5lc3MgaW4gdGhlIHByZXNlbmNlIG9mIHlvdSBhbGwuCkFuZCBub3csIGJyZXRocmVuLCBJIHdvdCB0aGF0IHRocm91Z2ggaWdub3JhbmNlIHllIGRpZCBpdCwgYXMgZGlkIGFsc28geW91ciBydWxlcnMuCkJ1dCB0aG9zZSB0aGluZ3MsIHdoaWNoIEdvZCBiZWZvcmUgaGFkIHNoZXdlZCBieSB0aGUgbW91dGggb2YgYWxsIGhpcyBwcm9waGV0cywgdGhhdCBDaHJpc3Qgc2hvdWxkIHN1ZmZlciwgaGUgaGF0aCBzbyBmdWxmaWxsZWQuClJlcGVudCB5ZSB0aGVyZWZvcmUsIGFuZCBiZSBjb252ZXJ0ZWQsIHRoYXQgeW91ciBzaW5zIG1heSBiZSBibG90dGVkIG91dCwgd2hlbiB0aGUgdGltZXMgb2YgcmVmcmVzaGluZyBzaGFsbCBjb21lIGZyb20gdGhlIHByZXNlbmNlIG9mIHRoZSBMb3JkLgpBbmQgaGUgc2hhbGwgc2VuZCBKZXN1cyBDaHJpc3QsIHdoaWNoIGJlZm9yZSB3YXMgcHJlYWNoZWQgdW50byB5b3U6Cldob20gdGhlIGhlYXZlbiBtdXN0IHJlY2VpdmUgdW50aWwgdGhlIHRpbWVzIG9mIHJlc3RpdHV0aW9uIG9mIGFsbCB0aGluZ3MsIHdoaWNoIEdvZCBoYXRoIHNwb2tlbiBieSB0aGUgbW91dGggb2YgYWxsIGhpcyBob2x5IHByb3BoZXRzIHNpbmNlIHRoZSB3b3JsZCBiZWdhbi4KRm9yIE1vc2VzIHRydWx5IHNhaWQgdW50byB0aGUgZmF0aGVycywgQSBwcm9waGV0IHNoYWxsIHRoZSBMb3JkIHlvdXIgR29kIHJhaXNlIHVwIHVudG8geW91IG9mIHlvdXIgYnJldGhyZW4sIGxpa2UgdW50byBtZTsgaGltIHNoYWxsIHllIGhlYXIgaW4gYWxsIHRoaW5ncyB3aGF0c29ldmVyIGhlIHNoYWxsIHNheSB1bnRvIHlvdS4KQW5kIGl0IHNoYWxsIGNvbWUgdG8gcGFzcywgdGhhdCBldmVyeSBzb3VsLCB3aGljaCB3aWxsIG5vdCBoZWFyIHRoYXQgcHJvcGhldCwgc2hhbGwgYmUgZGVzdHJveWVkIGZyb20gYW1vbmcgdGhlIHBlb3BsZS4KWWVhLCBhbmQgYWxsIHRoZSBwcm9waGV0cyBmcm9tIFNhbXVlbCBhbmQgdGhvc2UgdGhhdCBmb2xsb3cgYWZ0ZXIsIGFzIG1hbnkgYXMgaGF2ZSBzcG9rZW4sIGhhdmUgbGlrZXdpc2UgZm9yZXRvbGQgb2YgdGhlc2UgZGF5cy4KWWUgYXJlIHRoZSBjaGlsZHJlbiBvZiB0aGUgcHJvcGhldHMsIGFuZCBvZiB0aGUgY292ZW5hbnQgd2hpY2ggR29kIG1hZGUgd2l0aCBvdXIgZmF0aGVycywgc2F5aW5nIHVudG8gQWJyYWhhbSwgQW5kIGluIHRoeSBzZWVkIHNoYWxsIGFsbCB0aGUga2luZHJlZHMgb2YgdGhlIGVhcnRoIGJlIGJsZXNzZWQuClVudG8geW91IGZpcnN0IEdvZCwgaGF2aW5nIHJhaXNlZCB1cCBoaXMgU29uIEplc3VzLCBzZW50IGhpbSB0byBibGVzcyB5b3UsIGluIHR1cm5pbmcgYXdheSBldmVyeSBvbmUgb2YgeW91IGZyb20gaGlzIGluaXF1aXRpZXMuCkFuZCBhcyB0aGV5IHNwYWtlIHVudG8gdGhlIHBlb3BsZSwgdGhlIHByaWVzdHMsIGFuZCB0aGUgY2FwdGFpbiBvZiB0aGUgdGVtcGxlLCBhbmQgdGhlIFNhZGR1Y2VlcywgY2FtZSB1cG9uIHRoZW0sCkJlaW5nIGdyaWV2ZWQgdGhhdCB0aGV5IHRhdWdodCB0aGUgcGVvcGxlLCBhbmQgcHJlYWNoZWQgdGhyb3VnaCBKZXN1cyB0aGUgcmVzdXJyZWN0aW9uIGZyb20gdGhlIGRlYWQuCkFuZCB0aGV5IGxhaWQgaGFuZHMgb24gdGhlbSwgYW5kIHB1dCB0aGVtIGluIGhvbGQgdW50byB0aGUgbmV4dCBkYXk6IGZvciBpdCB3YXMgbm93IGV2ZW50aWRlLgpIb3diZWl0IG1hbnkgb2YgdGhlbSB3aGljaCBoZWFyZCB0aGUgd29yZCBiZWxpZXZlZDsgYW5kIHRoZSBudW1iZXIgb2YgdGhlIG1lbiB3YXMgYWJvdXQgZml2ZSB0aG91c2FuZC4KQW5kIGl0IGNhbWUgdG8gcGFzcyBvbiB0aGUgbW9ycm93LCB0aGF0IHRoZWlyIHJ1bGVycywgYW5kIGVsZGVycywgYW5kIHNjcmliZXMsCkFuZCBBbm5hcyB0aGUgaGlnaCBwcmllc3QsIGFuZCBDYWlhcGhhcywgYW5kIEpvaG4sIGFuZCBBbGV4YW5kZXIsIGFuZCBhcyBtYW55IGFzIHdlcmUgb2YgdGhlIGtpbmRyZWQgb2YgdGhlIGhpZ2ggcHJpZXN0LCB3ZXJlIGdhdGhlcmVkIHRvZ2V0aGVyIGF0IEplcnVzYWxlbS4KQW5kIHdoZW4gdGhleSBoYWQgc2V0IHRoZW0gaW4gdGhlIG1pZHN0LCB0aGV5IGFza2VkLCBCeSB3aGF0IHBvd2VyLCBvciBieSB3aGF0IG5hbWUsIGhhdmUgeWUgZG9uZSB0aGlzPwpUaGVuIFBldGVyLCBmaWxsZWQgd2l0aCB0aGUgSG9seSBHaG9zdCwgc2FpZCB1bnRvIHRoZW0sIFllIHJ1bGVycyBvZiB0aGUgcGVvcGxlLCBhbmQgZWxkZXJzIG9mIElzcmFlbCwKSWYgd2UgdGhpcyBkYXkgYmUgZXhhbWluZWQgb2YgdGhlIGdvb2QgZGVlZCBkb25lIHRvIHRoZSBpbXBvdGVudCBtYW4sIGJ5IHdoYXQgbWVhbnMgaGUgaXMgbWFkZSB3aG9sZTsKQmUgaXQga25vd24gdW50byB5b3UgYWxsLCBhbmQgdG8gYWxsIHRoZSBwZW9wbGUgb2YgSXNyYWVsLCB0aGF0IGJ5IHRoZSBuYW1lIG9mIEplc3VzIENocmlzdCBvZiBOYXphcmV0aCwgd2hvbSB5ZSBjcnVjaWZpZWQsIHdob20gR29kIHJhaXNlZCBmcm9tIHRoZSBkZWFkLCBldmVuIGJ5IGhpbSBkb3RoIHRoaXMgbWFuIHN0YW5kIGhlcmUgYmVmb3JlIHlvdSB3aG9sZS4KVGhpcyBpcyB0aGUgc3RvbmUgd2hpY2ggd2FzIHNldCBhdCBub3VnaHQgb2YgeW91IGJ1aWxkZXJzLCB3aGljaCBpcyBiZWNvbWUgdGhlIGhlYWQgb2YgdGhlIGNvcm5lci4KTmVpdGhlciBpcyB0aGVyZSBzYWx2YXRpb24gaW4gYW55IG90aGVyOiBmb3IgdGhlcmUgaXMgbm9uZSBvdGhlciBuYW1lIHVuZGVyIGhlYXZlbiBnaXZlbiBhbW9uZyBtZW4sIHdoZXJlYnkgd2UgbXVzdCBiZSBzYXZlZC4KTm93IHdoZW4gdGhleSBzYXcgdGhlIGJvbGRuZXNzIG9mIFBldGVyIGFuZCBKb2huLCBhbmQgcGVyY2VpdmVkIHRoYXQgdGhleSB3ZXJlIHVubGVhcm5lZCBhbmQgaWdub3JhbnQgbWVuLCB0aGV5IG1hcnZlbGxlZDsgYW5kIHRoZXkgdG9vayBrbm93bGVkZ2Ugb2YgdGhlbSwgdGhhdCB0aGV5IGhhZCBiZWVuIHdpdGggSmVzdXMuCkFuZCBiZWhvbGRpbmcgdGhlIG1hbiB3aGljaCB3YXMgaGVhbGVkIHN0YW5kaW5nIHdpdGggdGhlbSwgdGhleSBjb3VsZCBzYXkgbm90aGluZyBhZ2FpbnN0IGl0LgpCdXQgd2hlbiB0aGV5IGhhZCBjb21tYW5kZWQgdGhlbSB0byBnbyBhc2lkZSBvdXQgb2YgdGhlIGNvdW5jaWwsIHRoZXkgY29uZmVycmVkIGFtb25nIHRoZW1zZWx2ZXMsClNheWluZywgV2hhdCBzaGFsbCB3ZSBkbyB0byB0aGVzZSBtZW4/IGZvciB0aGF0IGluZGVlZCBhIG5vdGFibGUgbWlyYWNsZSBoYXRoIGJlZW4gZG9uZSBieSB0aGVtIGlzIG1hbmlmZXN0IHRvIGFsbCB0aGVtIHRoYXQgZHdlbGwgaW4gSmVydXNhbGVtOyBhbmQgd2UgY2Fubm90IGRlbnkgaXQuCkJ1dCB0aGF0IGl0IHNwcmVhZCBubyBmdXJ0aGVyIGFtb25nIHRoZSBwZW9wbGUsIGxldCB1cyBzdHJhaXRseSB0aHJlYXRlbiB0aGVtLCB0aGF0IHRoZXkgc3BlYWsgaGVuY2Vmb3J0aCB0byBubyBtYW4gaW4gdGhpcyBuYW1lLgpBbmQgdGhleSBjYWxsZWQgdGhlbSwgYW5kIGNvbW1hbmRlZCB0aGVtIG5vdCB0byBzcGVhayBhdCBhbGwgbm9yIHRlYWNoIGluIHRoZSBuYW1lIG9mIEplc3VzLgpCdXQgUGV0ZXIgYW5kIEpvaG4gYW5zd2VyZWQgYW5kIHNhaWQgdW50byB0aGVtLCBXaGV0aGVyIGl0IGJlIHJpZ2h0IGluIHRoZSBzaWdodCBvZiBHb2QgdG8gaGVhcmtlbiB1bnRvIHlvdSBtb3JlIHRoYW4gdW50byBHb2QsIGp1ZGdlIHllLgpGb3Igd2UgY2Fubm90IGJ1dCBzcGVhayB0aGUgdGhpbmdzIHdoaWNoIHdlIGhhdmUgc2VlbiBhbmQgaGVhcmQuClNvIHdoZW4gdGhleSBoYWQgZnVydGhlciB0aHJlYXRlbmVkIHRoZW0sIHRoZXkgbGV0IHRoZW0gZ28sIGZpbmRpbmcgbm90aGluZyBob3cgdGhleSBtaWdodCBwdW5pc2ggdGhlbSwgYmVjYXVzZSBvZiB0aGUgcGVvcGxlOiBmb3IgYWxsIG1lbiBnbG9yaWZpZWQgR29kIGZvciB0aGF0IHdoaWNoIHdhcyBkb25lLgpGb3IgdGhlIG1hbiB3YXMgYWJvdmUgZm9ydHkgeWVhcnMgb2xkLCBvbiB3aG9tIHRoaXMgbWlyYWNsZSBvZiBoZWFsaW5nIHdhcyBzaGV3ZWQuCkFuZCBiZWluZyBsZXQgZ28sIHRoZXkgd2VudCB0byB0aGVpciBvd24gY29tcGFueSwgYW5kIHJlcG9ydGVkIGFsbCB0aGF0IHRoZSBjaGllZiBwcmllc3RzIGFuZCBlbGRlcnMgaGFkIHNhaWQgdW50byB0aGVtLgpBbmQgd2hlbiB0aGV5IGhlYXJkIHRoYXQsIHRoZXkgbGlmdGVkIHVwIHRoZWlyIHZvaWNlIHRvIEdvZCB3aXRoIG9uZSBhY2NvcmQsIGFuZCBzYWlkLCBMb3JkLCB0aG91IGFydCBHb2QsIHdoaWNoIGhhc3QgbWFkZSBoZWF2ZW4sIGFuZCBlYXJ0aCwgYW5kIHRoZSBzZWEsIGFuZCBhbGwgdGhhdCBpbiB0aGVtIGlzOgpXaG8gYnkgdGhlIG1vdXRoIG9mIHRoeSBzZXJ2YW50IERhdmlkIGhhc3Qgc2FpZCwgV2h5IGRpZCB0aGUgaGVhdGhlbiByYWdlLCBhbmQgdGhlIHBlb3BsZSBpbWFnaW5lIHZhaW4gdGhpbmdzPwpUaGUga2luZ3Mgb2YgdGhlIGVhcnRoIHN0b29kIHVwLCBhbmQgdGhlIHJ1bGVycyB3ZXJlIGdhdGhlcmVkIHRvZ2V0aGVyIGFnYWluc3QgdGhlIExvcmQsIGFuZCBhZ2FpbnN0IGhpcyBDaHJpc3QuCkZvciBvZiBhIHRydXRoIGFnYWluc3QgdGh5IGhvbHkgY2hpbGQgSmVzdXMsIHdob20gdGhvdSBoYXN0IGFub2ludGVkLCBib3RoIEhlcm9kLCBhbmQgUG9udGl1cyBQaWxhdGUsIHdpdGggdGhlIEdlbnRpbGVzLCBhbmQgdGhlIHBlb3BsZSBvZiBJc3JhZWwsIHdlcmUgZ2F0aGVyZWQgdG9nZXRoZXIsCkZvciB0byBkbyB3aGF0c29ldmVyIHRoeSBoYW5kIGFuZCB0aHkgY291bnNlbCBkZXRlcm1pbmVkIGJlZm9yZSB0byBiZSBkb25lLgpBbmQgbm93LCBMb3JkLCBiZWhvbGQgdGhlaXIgdGhyZWF0ZW5pbmdzOiBhbmQgZ3JhbnQgdW50byB0aHkgc2VydmFudHMsIHRoYXQgd2l0aCBhbGwgYm9sZG5lc3MgdGhleSBtYXkgc3BlYWsgdGh5IHdvcmQsCkJ5IHN0cmV0Y2hpbmcgZm9ydGggdGhpbmUgaGFuZCB0byBoZWFsOyBhbmQgdGhhdCBzaWducyBhbmQgd29uZGVycyBtYXkgYmUgZG9uZSBieSB0aGUgbmFtZSBvZiB0aHkgaG9seSBjaGlsZCBKZXN1cy4KQW5kIHdoZW4gdGhleSBoYWQgcHJheWVkLCB0aGUgcGxhY2Ugd2FzIHNoYWtlbiB3aGVyZSB0aGV5IHdlcmUgYXNzZW1ibGVkIHRvZ2V0aGVyOyBhbmQgdGhleSB3ZXJlIGFsbCBmaWxsZWQgd2l0aCB0aGUgSG9seSBHaG9zdCwgYW5kIHRoZXkgc3Bha2UgdGhlIHdvcmQgb2YgR29kIHdpdGggYm9sZG5lc3MuCkFuZCB0aGUgbXVsdGl0dWRlIG9mIHRoZW0gdGhhdCBiZWxpZXZlZCB3ZXJlIG9mIG9uZSBoZWFydCBhbmQgb2Ygb25lIHNvdWw6IG5laXRoZXIgc2FpZCBhbnkgb2YgdGhlbSB0aGF0IG91Z2h0IG9mIHRoZSB0aGluZ3Mgd2hpY2ggaGUgcG9zc2Vzc2VkIHdhcyBoaXMgb3duOyBidXQgdGhleSBoYWQgYWxsIHRoaW5ncyBjb21tb24uCkFuZCB3aXRoIGdyZWF0IHBvd2VyIGdhdmUgdGhlIGFwb3N0bGVzIHdpdG5lc3Mgb2YgdGhlIHJlc3VycmVjdGlvbiBvZiB0aGUgTG9yZCBKZXN1czogYW5kIGdyZWF0IGdyYWNlIHdhcyB1cG9uIHRoZW0gYWxsLgpOZWl0aGVyIHdhcyB0aGVyZSBhbnkgYW1vbmcgdGhlbSB0aGF0IGxhY2tlZDogZm9yIGFzIG1hbnkgYXMgd2VyZSBwb3NzZXNzb3JzIG9mIGxhbmRzIG9yIGhvdXNlcyBzb2xkIHRoZW0sIGFuZCBicm91Z2h0IHRoZSBwcmljZXMgb2YgdGhlIHRoaW5ncyB0aGF0IHdlcmUgc29sZCwKQW5kIGxhaWQgdGhlbSBkb3duIGF0IHRoZSBhcG9zdGxlcycgZmVldDogYW5kIGRpc3RyaWJ1dGlvbiB3YXMgbWFkZSB1bnRvIGV2ZXJ5IG1hbiBhY2NvcmRpbmcgYXMgaGUgaGFkIG5lZWQuCkFuZCBKb3Nlcywgd2hvIGJ5IHRoZSBhcG9zdGxlcyB3YXMgc3VybmFtZWQgQmFybmFiYXMsICh3aGljaCBpcywgYmVpbmcgaW50ZXJwcmV0ZWQsIFRoZSBzb24gb2YgY29uc29sYXRpb24sKSBhIExldml0ZSwgYW5kIG9mIHRoZSBjb3VudHJ5IG9mIEN5cHJ1cywKSGF2aW5nIGxhbmQsIHNvbGQgaXQsIGFuZCBicm91Z2h0IHRoZSBtb25leSwgYW5kIGxhaWQgaXQgYXQgdGhlIGFwb3N0bGVzJyBmZWV0LgpCdXQgYSBjZXJ0YWluIG1hbiBuYW1lZCBBbmFuaWFzLCB3aXRoIFNhcHBoaXJhIGhpcyB3aWZlLCBzb2xkIGEgcG9zc2Vzc2lvbiwKQW5kIGtlcHQgYmFjayBwYXJ0IG9mIHRoZSBwcmljZSwgaGlzIHdpZmUgYWxzbyBiZWluZyBwcml2eSB0byBpdCwgYW5kIGJyb3VnaHQgYSBjZXJ0YWluIHBhcnQsIGFuZCBsYWlkIGl0IGF0IHRoZSBhcG9zdGxlcycgZmVldC4KQnV0IFBldGVyIHNhaWQsIEFuYW5pYXMsIHdoeSBoYXRoIFNhdGFuIGZpbGxlZCB0aGluZSBoZWFydCB0byBsaWUgdG8gdGhlIEhvbHkgR2hvc3QsIGFuZCB0byBrZWVwIGJhY2sgcGFydCBvZiB0aGUgcHJpY2Ugb2YgdGhlIGxhbmQ/CldoaWxlcyBpdCByZW1haW5lZCwgd2FzIGl0IG5vdCB0aGluZSBvd24/IGFuZCBhZnRlciBpdCB3YXMgc29sZCwgd2FzIGl0IG5vdCBpbiB0aGluZSBvd24gcG93ZXI/IHdoeSBoYXN0IHRob3UgY29uY2VpdmVkIHRoaXMgdGhpbmcgaW4gdGhpbmUgaGVhcnQ/IHRob3UgaGFzdCBub3QgbGllZCB1bnRvIG1lbiwgYnV0IHVudG8gR29kLgpBbmQgQW5hbmlhcyBoZWFyaW5nIHRoZXNlIHdvcmRzIGZlbGwgZG93biwgYW5kIGdhdmUgdXAgdGhlIGdob3N0OiBhbmQgZ3JlYXQgZmVhciBjYW1lIG9uIGFsbCB0aGVtIHRoYXQgaGVhcmQgdGhlc2UgdGhpbmdzLgpBbmQgdGhlIHlvdW5nIG1lbiBhcm9zZSwgd291bmQgaGltIHVwLCBhbmQgY2FycmllZCBoaW0gb3V0LCBhbmQgYnVyaWVkIGhpbS4KQW5kIGl0IHdhcyBhYm91dCB0aGUgc3BhY2Ugb2YgdGhyZWUgaG91cnMgYWZ0ZXIsIHdoZW4gaGlzIHdpZmUsIG5vdCBrbm93aW5nIHdoYXQgd2FzIGRvbmUsIGNhbWUgaW4uCkFuZCBQZXRlciBhbnN3ZXJlZCB1bnRvIGhlciwgVGVsbCBtZSB3aGV0aGVyIHllIHNvbGQgdGhlIGxhbmQgZm9yIHNvIG11Y2g/IEFuZCBzaGUgc2FpZCwgWWVhLCBmb3Igc28gbXVjaC4KVGhlbiBQZXRlciBzYWlkIHVudG8gaGVyLCBIb3cgaXMgaXQgdGhhdCB5ZSBoYXZlIGFncmVlZCB0b2dldGhlciB0byB0ZW1wdCB0aGUgU3Bpcml0IG9mIHRoZSBMb3JkPyBiZWhvbGQsIHRoZSBmZWV0IG9mIHRoZW0gd2hpY2ggaGF2ZSBidXJpZWQgdGh5IGh1c2JhbmQgYXJlIGF0IHRoZSBkb29yLCBhbmQgc2hhbGwgY2FycnkgdGhlZSBvdXQuClRoZW4gZmVsbCBzaGUgZG93biBzdHJhaWdodHdheSBhdCBoaXMgZmVldCwgYW5kIHlpZWxkZWQgdXAgdGhlIGdob3N0OiBhbmQgdGhlIHlvdW5nIG1lbiBjYW1lIGluLCBhbmQgZm91bmQgaGVyIGRlYWQsIGFuZCwgY2FycnlpbmcgaGVyIGZvcnRoLCBidXJpZWQgaGVyIGJ5IGhlciBodXNiYW5kLgpBbmQgZ3JlYXQgZmVhciBjYW1lIHVwb24gYWxsIHRoZSBjaHVyY2gsIGFuZCB1cG9uIGFzIG1hbnkgYXMgaGVhcmQgdGhlc2UgdGhpbmdzLgpBbmQgYnkgdGhlIGhhbmRzIG9mIHRoZSBhcG9zdGxlcyB3ZXJlIG1hbnkgc2lnbnMgYW5kIHdvbmRlcnMgd3JvdWdodCBhbW9uZyB0aGUgcGVvcGxlOyAoYW5kIHRoZXkgd2VyZSBhbGwgd2l0aCBvbmUgYWNjb3JkIGluIFNvbG9tb24ncyBwb3JjaC4KQW5kIG9mIHRoZSByZXN0IGR1cnN0IG5vIG1hbiBqb2luIGhpbXNlbGYgdG8gdGhlbTogYnV0IHRoZSBwZW9wbGUgbWFnbmlmaWVkIHRoZW0uCkFuZCBiZWxpZXZlcnMgd2VyZSB0aGUgbW9yZSBhZGRlZCB0byB0aGUgTG9yZCwgbXVsdGl0dWRlcyBib3RoIG9mIG1lbiBhbmQgd29tZW4uKQpJbnNvbXVjaCB0aGF0IHRoZXkgYnJvdWdodCBmb3J0aCB0aGUgc2ljayBpbnRvIHRoZSBzdHJlZXRzLCBhbmQgbGFpZCB0aGVtIG9uIGJlZHMgYW5kIGNvdWNoZXMsIHRoYXQgYXQgdGhlIGxlYXN0IHRoZSBzaGFkb3cgb2YgUGV0ZXIgcGFzc2luZyBieSBtaWdodCBvdmVyc2hhZG93IHNvbWUgb2YgdGhlbS4KVGhlcmUgY2FtZSBhbHNvIGEgbXVsdGl0dWRlIG91dCBvZiB0aGUgY2l0aWVzIHJvdW5kIGFib3V0IHVudG8gSmVydXNhbGVtLCBicmluZ2luZyBzaWNrIGZvbGtzLCBhbmQgdGhlbSB3aGljaCB3ZXJlIHZleGVkIHdpdGggdW5jbGVhbiBzcGlyaXRzOiBhbmQgdGhleSB3ZXJlIGhlYWxlZCBldmVyeSBvbmUuClRoZW4gdGhlIGhpZ2ggcHJpZXN0IHJvc2UgdXAsIGFuZCBhbGwgdGhleSB0aGF0IHdlcmUgd2l0aCBoaW0sICh3aGljaCBpcyB0aGUgc2VjdCBvZiB0aGUgU2FkZHVjZWVzLCkgYW5kIHdlcmUgZmlsbGVkIHdpdGggaW5kaWduYXRpb24sCkFuZCBsYWlkIHRoZWlyIGhhbmRzIG9uIHRoZSBhcG9zdGxlcywgYW5kIHB1dCB0aGVtIGluIHRoZSBjb21tb24gcHJpc29uLgpCdXQgdGhlIGFuZ2VsIG9mIHRoZSBMb3JkIGJ5IG5pZ2h0IG9wZW5lZCB0aGUgcHJpc29uIGRvb3JzLCBhbmQgYnJvdWdodCB0aGVtIGZvcnRoLCBhbmQgc2FpZCwKR28sIHN0YW5kIGFuZCBzcGVhayBpbiB0aGUgdGVtcGxlIHRvIHRoZSBwZW9wbGUgYWxsIHRoZSB3b3JkcyBvZiB0aGlzIGxpZmUuCkFuZCB3aGVuIHRoZXkgaGVhcmQgdGhhdCwgdGhleSBlbnRlcmVkIGludG8gdGhlIHRlbXBsZSBlYXJseSBpbiB0aGUgbW9ybmluZywgYW5kIHRhdWdodC4gQnV0IHRoZSBoaWdoIHByaWVzdCBjYW1lLCBhbmQgdGhleSB0aGF0IHdlcmUgd2l0aCBoaW0sIGFuZCBjYWxsZWQgdGhlIGNvdW5jaWwgdG9nZXRoZXIsIGFuZCBhbGwgdGhlIHNlbmF0ZSBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLCBhbmQgc2VudCB0byB0aGUgcHJpc29uIHRvIGhhdmUgdGhlbSBicm91Z2h0LgpCdXQgd2hlbiB0aGUgb2ZmaWNlcnMgY2FtZSwgYW5kIGZvdW5kIHRoZW0gbm90IGluIHRoZSBwcmlzb24sIHRoZXkgcmV0dXJuZWQgYW5kIHRvbGQsClNheWluZywgVGhlIHByaXNvbiB0cnVseSBmb3VuZCB3ZSBzaHV0IHdpdGggYWxsIHNhZmV0eSwgYW5kIHRoZSBrZWVwZXJzIHN0YW5kaW5nIHdpdGhvdXQgYmVmb3JlIHRoZSBkb29yczogYnV0IHdoZW4gd2UgaGFkIG9wZW5lZCwgd2UgZm91bmQgbm8gbWFuIHdpdGhpbi4KTm93IHdoZW4gdGhlIGhpZ2ggcHJpZXN0IGFuZCB0aGUgY2FwdGFpbiBvZiB0aGUgdGVtcGxlIGFuZCB0aGUgY2hpZWYgcHJpZXN0cyBoZWFyZCB0aGVzZSB0aGluZ3MsIHRoZXkgZG91YnRlZCBvZiB0aGVtIHdoZXJldW50byB0aGlzIHdvdWxkIGdyb3cuClRoZW4gY2FtZSBvbmUgYW5kIHRvbGQgdGhlbSwgc2F5aW5nLCBCZWhvbGQsIHRoZSBtZW4gd2hvbSB5ZSBwdXQgaW4gcHJpc29uIGFyZSBzdGFuZGluZyBpbiB0aGUgdGVtcGxlLCBhbmQgdGVhY2hpbmcgdGhlIHBlb3BsZS4KVGhlbiB3ZW50IHRoZSBjYXB0YWluIHdpdGggdGhlIG9mZmljZXJzLCBhbmQgYnJvdWdodCB0aGVtIHdpdGhvdXQgdmlvbGVuY2U6IGZvciB0aGV5IGZlYXJlZCB0aGUgcGVvcGxlLCBsZXN0IHRoZXkgc2hvdWxkIGhhdmUgYmVlbiBzdG9uZWQuCkFuZCB3aGVuIHRoZXkgaGFkIGJyb3VnaHQgdGhlbSwgdGhleSBzZXQgdGhlbSBiZWZvcmUgdGhlIGNvdW5jaWw6IGFuZCB0aGUgaGlnaCBwcmllc3QgYXNrZWQgdGhlbSwKU2F5aW5nLCBEaWQgbm90IHdlIHN0cmFpdGx5IGNvbW1hbmQgeW91IHRoYXQgeWUgc2hvdWxkIG5vdCB0ZWFjaCBpbiB0aGlzIG5hbWU/IGFuZCwgYmVob2xkLCB5ZSBoYXZlIGZpbGxlZCBKZXJ1c2FsZW0gd2l0aCB5b3VyIGRvY3RyaW5lLCBhbmQgaW50ZW5kIHRvIGJyaW5nIHRoaXMgbWFuJ3MgYmxvb2QgdXBvbiB1cy4KVGhlbiBQZXRlciBhbmQgdGhlIG90aGVyIGFwb3N0bGVzIGFuc3dlcmVkIGFuZCBzYWlkLCBXZSBvdWdodCB0byBvYmV5IEdvZCByYXRoZXIgdGhhbiBtZW4uClRoZSBHb2Qgb2Ygb3VyIGZhdGhlcnMgcmFpc2VkIHVwIEplc3VzLCB3aG9tIHllIHNsZXcgYW5kIGhhbmdlZCBvbiBhIHRyZWUuCkhpbSBoYXRoIEdvZCBleGFsdGVkIHdpdGggaGlzIHJpZ2h0IGhhbmQgdG8gYmUgYSBQcmluY2UgYW5kIGEgU2F2aW91ciwgZm9yIHRvIGdpdmUgcmVwZW50YW5jZSB0byBJc3JhZWwsIGFuZCBmb3JnaXZlbmVzcyBvZiBzaW5zLgpBbmQgd2UgYXJlIGhpcyB3aXRuZXNzZXMgb2YgdGhlc2UgdGhpbmdzOyBhbmQgc28gaXMgYWxzbyB0aGUgSG9seSBHaG9zdCwgd2hvbSBHb2QgaGF0aCBnaXZlbiB0byB0aGVtIHRoYXQgb2JleSBoaW0uCldoZW4gdGhleSBoZWFyZCB0aGF0LCB0aGV5IHdlcmUgY3V0IHRvIHRoZSBoZWFydCwgYW5kIHRvb2sgY291bnNlbCB0byBzbGF5IHRoZW0uClRoZW4gc3Rvb2QgdGhlcmUgdXAgb25lIGluIHRoZSBjb3VuY2lsLCBhIFBoYXJpc2VlLCBuYW1lZCBHYW1hbGllbCwgYSBkb2N0b3Igb2YgdGhlIGxhdywgaGFkIGluIHJlcHV0YXRpb24gYW1vbmcgYWxsIHRoZSBwZW9wbGUsIGFuZCBjb21tYW5kZWQgdG8gcHV0IHRoZSBhcG9zdGxlcyBmb3J0aCBhIGxpdHRsZSBzcGFjZTsKQW5kIHNhaWQgdW50byB0aGVtLCBZZSBtZW4gb2YgSXNyYWVsLCB0YWtlIGhlZWQgdG8geW91cnNlbHZlcyB3aGF0IHllIGludGVuZCB0byBkbyBhcyB0b3VjaGluZyB0aGVzZSBtZW4uCkZvciBiZWZvcmUgdGhlc2UgZGF5cyByb3NlIHVwIFRoZXVkYXMsIGJvYXN0aW5nIGhpbXNlbGYgdG8gYmUgc29tZWJvZHk7IHRvIHdob20gYSBudW1iZXIgb2YgbWVuLCBhYm91dCBmb3VyIGh1bmRyZWQsIGpvaW5lZCB0aGVtc2VsdmVzOiB3aG8gd2FzIHNsYWluOyBhbmQgYWxsLCBhcyBtYW55IGFzIG9iZXllZCBoaW0sIHdlcmUgc2NhdHRlcmVkLCBhbmQgYnJvdWdodCB0byBub3VnaHQuCkFmdGVyIHRoaXMgbWFuIHJvc2UgdXAgSnVkYXMgb2YgR2FsaWxlZSBpbiB0aGUgZGF5cyBvZiB0aGUgdGF4aW5nLCBhbmQgZHJldyBhd2F5IG11Y2ggcGVvcGxlIGFmdGVyIGhpbTogaGUgYWxzbyBwZXJpc2hlZDsgYW5kIGFsbCwgZXZlbiBhcyBtYW55IGFzIG9iZXllZCBoaW0sIHdlcmUgZGlzcGVyc2VkLgpBbmQgbm93IEkgc2F5IHVudG8geW91LCBSZWZyYWluIGZyb20gdGhlc2UgbWVuLCBhbmQgbGV0IHRoZW0gYWxvbmU6IGZvciBpZiB0aGlzIGNvdW5zZWwgb3IgdGhpcyB3b3JrIGJlIG9mIG1lbiwgaXQgd2lsbCBjb21lIHRvIG5vdWdodDoKQnV0IGlmIGl0IGJlIG9mIEdvZCwgeWUgY2Fubm90IG92ZXJ0aHJvdyBpdDsgbGVzdCBoYXBseSB5ZSBiZSBmb3VuZCBldmVuIHRvIGZpZ2h0IGFnYWluc3QgR29kLgpBbmQgdG8gaGltIHRoZXkgYWdyZWVkOiBhbmQgd2hlbiB0aGV5IGhhZCBjYWxsZWQgdGhlIGFwb3N0bGVzLCBhbmQgYmVhdGVuIHRoZW0sIHRoZXkgY29tbWFuZGVkIHRoYXQgdGhleSBzaG91bGQgbm90IHNwZWFrIGluIHRoZSBuYW1lIG9mIEplc3VzLCBhbmQgbGV0IHRoZW0gZ28uCkFuZCB0aGV5IGRlcGFydGVkIGZyb20gdGhlIHByZXNlbmNlIG9mIHRoZSBjb3VuY2lsLCByZWpvaWNpbmcgdGhhdCB0aGV5IHdlcmUgY291bnRlZCB3b3J0aHkgdG8gc3VmZmVyIHNoYW1lIGZvciBoaXMgbmFtZS4KQW5kIGRhaWx5IGluIHRoZSB0ZW1wbGUsIGFuZCBpbiBldmVyeSBob3VzZSwgdGhleSBjZWFzZWQgbm90IHRvIHRlYWNoIGFuZCBwcmVhY2ggSmVzdXMgQ2hyaXN0LgpBbmQgaW4gdGhvc2UgZGF5cywgd2hlbiB0aGUgbnVtYmVyIG9mIHRoZSBkaXNjaXBsZXMgd2FzIG11bHRpcGxpZWQsIHRoZXJlIGFyb3NlIGEgbXVybXVyaW5nIG9mIHRoZSBHcmVjaWFucyBhZ2FpbnN0IHRoZSBIZWJyZXdzLCBiZWNhdXNlIHRoZWlyIHdpZG93cyB3ZXJlIG5lZ2xlY3RlZCBpbiB0aGUgZGFpbHkgbWluaXN0cmF0aW9uLgpUaGVuIHRoZSB0d2VsdmUgY2FsbGVkIHRoZSBtdWx0aXR1ZGUgb2YgdGhlIGRpc2NpcGxlcyB1bnRvIHRoZW0sIGFuZCBzYWlkLCBJdCBpcyBub3QgcmVhc29uIHRoYXQgd2Ugc2hvdWxkIGxlYXZlIHRoZSB3b3JkIG9mIEdvZCwgYW5kIHNlcnZlIHRhYmxlcy4KV2hlcmVmb3JlLCBicmV0aHJlbiwgbG9vayB5ZSBvdXQgYW1vbmcgeW91IHNldmVuIG1lbiBvZiBob25lc3QgcmVwb3J0LCBmdWxsIG9mIHRoZSBIb2x5IEdob3N0IGFuZCB3aXNkb20sIHdob20gd2UgbWF5IGFwcG9pbnQgb3ZlciB0aGlzIGJ1c2luZXNzLgpCdXQgd2Ugd2lsbCBnaXZlIG91cnNlbHZlcyBjb250aW51YWxseSB0byBwcmF5ZXIsIGFuZCB0byB0aGUgbWluaXN0cnkgb2YgdGhlIHdvcmQuCkFuZCB0aGUgc2F5aW5nIHBsZWFzZWQgdGhlIHdob2xlIG11bHRpdHVkZTogYW5kIHRoZXkgY2hvc2UgU3RlcGhlbiwgYSBtYW4gZnVsbCBvZiBmYWl0aCBhbmQgb2YgdGhlIEhvbHkgR2hvc3QsIGFuZCBQaGlsaXAsIGFuZCBQcm9jaG9ydXMsIGFuZCBOaWNhbm9yLCBhbmQgVGltb24sIGFuZCBQYXJtZW5hcywgYW5kIE5pY29sYXMgYSBwcm9zZWx5dGUgb2YgQW50aW9jaDoKV2hvbSB0aGV5IHNldCBiZWZvcmUgdGhlIGFwb3N0bGVzOiBhbmQgd2hlbiB0aGV5IGhhZCBwcmF5ZWQsIHRoZXkgbGFpZCB0aGVpciBoYW5kcyBvbiB0aGVtLgpBbmQgdGhlIHdvcmQgb2YgR29kIGluY3JlYXNlZDsgYW5kIHRoZSBudW1iZXIgb2YgdGhlIGRpc2NpcGxlcyBtdWx0aXBsaWVkIGluIEplcnVzYWxlbSBncmVhdGx5OyBhbmQgYSBncmVhdCBjb21wYW55IG9mIHRoZSBwcmllc3RzIHdlcmUgb2JlZGllbnQgdG8gdGhlIGZhaXRoLgpBbmQgU3RlcGhlbiwgZnVsbCBvZiBmYWl0aCBhbmQgcG93ZXIsIGRpZCBncmVhdCB3b25kZXJzIGFuZCBtaXJhY2xlcyBhbW9uZyB0aGUgcGVvcGxlLgpUaGVuIHRoZXJlIGFyb3NlIGNlcnRhaW4gb2YgdGhlIHN5bmFnb2d1ZSwgd2hpY2ggaXMgY2FsbGVkIHRoZSBzeW5hZ29ndWUgb2YgdGhlIExpYmVydGluZXMsIGFuZCBDeXJlbmlhbnMsIGFuZCBBbGV4YW5kcmlhbnMsIGFuZCBvZiB0aGVtIG9mIENpbGljaWEgYW5kIG9mIEFzaWEsIGRpc3B1dGluZyB3aXRoIFN0ZXBoZW4uCkFuZCB0aGV5IHdlcmUgbm90IGFibGUgdG8gcmVzaXN0IHRoZSB3aXNkb20gYW5kIHRoZSBzcGlyaXQgYnkgd2hpY2ggaGUgc3Bha2UuClRoZW4gdGhleSBzdWJvcm5lZCBtZW4sIHdoaWNoIHNhaWQsIFdlIGhhdmUgaGVhcmQgaGltIHNwZWFrIGJsYXNwaGVtb3VzIHdvcmRzIGFnYWluc3QgTW9zZXMsIGFuZCBhZ2FpbnN0IEdvZC4KQW5kIHRoZXkgc3RpcnJlZCB1cCB0aGUgcGVvcGxlLCBhbmQgdGhlIGVsZGVycywgYW5kIHRoZSBzY3JpYmVzLCBhbmQgY2FtZSB1cG9uIGhpbSwgYW5kIGNhdWdodCBoaW0sIGFuZCBicm91Z2h0IGhpbSB0byB0aGUgY291bmNpbCwKQW5kIHNldCB1cCBmYWxzZSB3aXRuZXNzZXMsIHdoaWNoIHNhaWQsIFRoaXMgbWFuIGNlYXNldGggbm90IHRvIHNwZWFrIGJsYXNwaGVtb3VzIHdvcmRzIGFnYWluc3QgdGhpcyBob2x5IHBsYWNlLCBhbmQgdGhlIGxhdzoKRm9yIHdlIGhhdmUgaGVhcmQgaGltIHNheSwgdGhhdCB0aGlzIEplc3VzIG9mIE5hemFyZXRoIHNoYWxsIGRlc3Ryb3kgdGhpcyBwbGFjZSwgYW5kIHNoYWxsIGNoYW5nZSB0aGUgY3VzdG9tcyB3aGljaCBNb3NlcyBkZWxpdmVyZWQgdXMuCkFuZCBhbGwgdGhhdCBzYXQgaW4gdGhlIGNvdW5jaWwsIGxvb2tpbmcgc3RlZGZhc3RseSBvbiBoaW0sIHNhdyBoaXMgZmFjZSBhcyBpdCBoYWQgYmVlbiB0aGUgZmFjZSBvZiBhbiBhbmdlbC4KVGhlbiBzYWlkIHRoZSBoaWdoIHByaWVzdCwgQXJlIHRoZXNlIHRoaW5ncyBzbz8KQW5kIGhlIHNhaWQsIE1lbiwgYnJldGhyZW4sIGFuZCBmYXRoZXJzLCBoZWFya2VuOyBUaGUgR29kIG9mIGdsb3J5IGFwcGVhcmVkIHVudG8gb3VyIGZhdGhlciBBYnJhaGFtLCB3aGVuIGhlIHdhcyBpbiBNZXNvcG90YW1pYSwgYmVmb3JlIGhlIGR3ZWx0IGluIENoYXJyYW4sCkFuZCBzYWlkIHVudG8gaGltLCBHZXQgdGhlZSBvdXQgb2YgdGh5IGNvdW50cnksIGFuZCBmcm9tIHRoeSBraW5kcmVkLCBhbmQgY29tZSBpbnRvIHRoZSBsYW5kIHdoaWNoIEkgc2hhbGwgc2hldyB0aGVlLgpUaGVuIGNhbWUgaGUgb3V0IG9mIHRoZSBsYW5kIG9mIHRoZSBDaGFsZGFlYW5zLCBhbmQgZHdlbHQgaW4gQ2hhcnJhbjogYW5kIGZyb20gdGhlbmNlLCB3aGVuIGhpcyBmYXRoZXIgd2FzIGRlYWQsIGhlIHJlbW92ZWQgaGltIGludG8gdGhpcyBsYW5kLCB3aGVyZWluIHllIG5vdyBkd2VsbC4KQW5kIGhlIGdhdmUgaGltIG5vbmUgaW5oZXJpdGFuY2UgaW4gaXQsIG5vLCBub3Qgc28gbXVjaCBhcyB0byBzZXQgaGlzIGZvb3Qgb246IHlldCBoZSBwcm9taXNlZCB0aGF0IGhlIHdvdWxkIGdpdmUgaXQgdG8gaGltIGZvciBhIHBvc3Nlc3Npb24sIGFuZCB0byBoaXMgc2VlZCBhZnRlciBoaW0sIHdoZW4gYXMgeWV0IGhlIGhhZCBubyBjaGlsZC4KQW5kIEdvZCBzcGFrZSBvbiB0aGlzIHdpc2UsIFRoYXQgaGlzIHNlZWQgc2hvdWxkIHNvam91cm4gaW4gYSBzdHJhbmdlIGxhbmQ7IGFuZCB0aGF0IHRoZXkgc2hvdWxkIGJyaW5nIHRoZW0gaW50byBib25kYWdlLCBhbmQgZW50cmVhdCB0aGVtIGV2aWwgZm91ciBodW5kcmVkIHllYXJzLgpBbmQgdGhlIG5hdGlvbiB0byB3aG9tIHRoZXkgc2hhbGwgYmUgaW4gYm9uZGFnZSB3aWxsIEkganVkZ2UsIHNhaWQgR29kOiBhbmQgYWZ0ZXIgdGhhdCBzaGFsbCB0aGV5IGNvbWUgZm9ydGgsIGFuZCBzZXJ2ZSBtZSBpbiB0aGlzIHBsYWNlLgpBbmQgaGUgZ2F2ZSBoaW0gdGhlIGNvdmVuYW50IG9mIGNpcmN1bWNpc2lvbjogYW5kIHNvIEFicmFoYW0gYmVnYXQgSXNhYWMsIGFuZCBjaXJjdW1jaXNlZCBoaW0gdGhlIGVpZ2h0aCBkYXk7IGFuZCBJc2FhYyBiZWdhdCBKYWNvYjsgYW5kIEphY29iIGJlZ2F0IHRoZSB0d2VsdmUgcGF0cmlhcmNocy4KQW5kIHRoZSBwYXRyaWFyY2hzLCBtb3ZlZCB3aXRoIGVudnksIHNvbGQgSm9zZXBoIGludG8gRWd5cHQ6IGJ1dCBHb2Qgd2FzIHdpdGggaGltLApBbmQgZGVsaXZlcmVkIGhpbSBvdXQgb2YgYWxsIGhpcyBhZmZsaWN0aW9ucywgYW5kIGdhdmUgaGltIGZhdm91ciBhbmQgd2lzZG9tIGluIHRoZSBzaWdodCBvZiBQaGFyYW9oIGtpbmcgb2YgRWd5cHQ7IGFuZCBoZSBtYWRlIGhpbSBnb3Zlcm5vciBvdmVyIEVneXB0IGFuZCBhbGwgaGlzIGhvdXNlLgpOb3cgdGhlcmUgY2FtZSBhIGRlYXJ0aCBvdmVyIGFsbCB0aGUgbGFuZCBvZiBFZ3lwdCBhbmQgQ2hhbmFhbiwgYW5kIGdyZWF0IGFmZmxpY3Rpb246IGFuZCBvdXIgZmF0aGVycyBmb3VuZCBubyBzdXN0ZW5hbmNlLgpCdXQgd2hlbiBKYWNvYiBoZWFyZCB0aGF0IHRoZXJlIHdhcyBjb3JuIGluIEVneXB0LCBoZSBzZW50IG91dCBvdXIgZmF0aGVycyBmaXJzdC4KQW5kIGF0IHRoZSBzZWNvbmQgdGltZSBKb3NlcGggd2FzIG1hZGUga25vd24gdG8gaGlzIGJyZXRocmVuOyBhbmQgSm9zZXBoJ3Mga2luZHJlZCB3YXMgbWFkZSBrbm93biB1bnRvIFBoYXJhb2guClRoZW4gc2VudCBKb3NlcGgsIGFuZCBjYWxsZWQgaGlzIGZhdGhlciBKYWNvYiB0byBoaW0sIGFuZCBhbGwgaGlzIGtpbmRyZWQsIHRocmVlc2NvcmUgYW5kIGZpZnRlZW4gc291bHMuClNvIEphY29iIHdlbnQgZG93biBpbnRvIEVneXB0LCBhbmQgZGllZCwgaGUsIGFuZCBvdXIgZmF0aGVycywKQW5kIHdlcmUgY2FycmllZCBvdmVyIGludG8gU3ljaGVtLCBhbmQgbGFpZCBpbiB0aGUgc2VwdWxjaHJlIHRoYXQgQWJyYWhhbSBib3VnaHQgZm9yIGEgc3VtIG9mIG1vbmV5IG9mIHRoZSBzb25zIG9mIEVtbW9yIHRoZSBmYXRoZXIgb2YgU3ljaGVtLgpCdXQgd2hlbiB0aGUgdGltZSBvZiB0aGUgcHJvbWlzZSBkcmV3IG5pZ2gsIHdoaWNoIEdvZCBoYWQgc3dvcm4gdG8gQWJyYWhhbSwgdGhlIHBlb3BsZSBncmV3IGFuZCBtdWx0aXBsaWVkIGluIEVneXB0LApUaWxsIGFub3RoZXIga2luZyBhcm9zZSwgd2hpY2gga25ldyBub3QgSm9zZXBoLgpUaGUgc2FtZSBkZWFsdCBzdWJ0aWxseSB3aXRoIG91ciBraW5kcmVkLCBhbmQgZXZpbCBlbnRyZWF0ZWQgb3VyIGZhdGhlcnMsIHNvIHRoYXQgdGhleSBjYXN0IG91dCB0aGVpciB5b3VuZyBjaGlsZHJlbiwgdG8gdGhlIGVuZCB0aGV5IG1pZ2h0IG5vdCBsaXZlLgpJbiB3aGljaCB0aW1lIE1vc2VzIHdhcyBib3JuLCBhbmQgd2FzIGV4Y2VlZGluZyBmYWlyLCBhbmQgbm91cmlzaGVkIHVwIGluIGhpcyBmYXRoZXIncyBob3VzZSB0aHJlZSBtb250aHM6CkFuZCB3aGVuIGhlIHdhcyBjYXN0IG91dCwgUGhhcmFvaCdzIGRhdWdodGVyIHRvb2sgaGltIHVwLCBhbmQgbm91cmlzaGVkIGhpbSBmb3IgaGVyIG93biBzb24uCkFuZCBNb3NlcyB3YXMgbGVhcm5lZCBpbiBhbGwgdGhlIHdpc2RvbSBvZiB0aGUgRWd5cHRpYW5zLCBhbmQgd2FzIG1pZ2h0eSBpbiB3b3JkcyBhbmQgaW4gZGVlZHMuCkFuZCB3aGVuIGhlIHdhcyBmdWxsIGZvcnR5IHllYXJzIG9sZCwgaXQgY2FtZSBpbnRvIGhpcyBoZWFydCB0byB2aXNpdCBoaXMgYnJldGhyZW4gdGhlIGNoaWxkcmVuIG9mIElzcmFlbC4KQW5kIHNlZWluZyBvbmUgb2YgdGhlbSBzdWZmZXIgd3JvbmcsIGhlIGRlZmVuZGVkIGhpbSwgYW5kIGF2ZW5nZWQgaGltIHRoYXQgd2FzIG9wcHJlc3NlZCwgYW5kIHNtb3RlIHRoZSBFZ3lwdGlhbjoKRm9yIGhlIHN1cHBvc2VkIGhpcyBicmV0aHJlbiB3b3VsZCBoYXZlIHVuZGVyc3Rvb2QgaG93IHRoYXQgR29kIGJ5IGhpcyBoYW5kIHdvdWxkIGRlbGl2ZXIgdGhlbTogYnV0IHRoZXkgdW5kZXJzdG9vZCBub3QuCkFuZCB0aGUgbmV4dCBkYXkgaGUgc2hld2VkIGhpbXNlbGYgdW50byB0aGVtIGFzIHRoZXkgc3Ryb3ZlLCBhbmQgd291bGQgaGF2ZSBzZXQgdGhlbSBhdCBvbmUgYWdhaW4sIHNheWluZywgU2lycywgeWUgYXJlIGJyZXRocmVuOyB3aHkgZG8geWUgd3Jvbmcgb25lIHRvIGFub3RoZXI/CkJ1dCBoZSB0aGF0IGRpZCBoaXMgbmVpZ2hib3VyIHdyb25nIHRocnVzdCBoaW0gYXdheSwgc2F5aW5nLCBXaG8gbWFkZSB0aGVlIGEgcnVsZXIgYW5kIGEganVkZ2Ugb3ZlciB1cz8KV2lsdCB0aG91IGtpbGwgbWUsIGFzIHRob3UgZGlkZGVzdCB0aGUgRWd5cHRpYW4geWVzdGVyZGF5PwpUaGVuIGZsZWQgTW9zZXMgYXQgdGhpcyBzYXlpbmcsIGFuZCB3YXMgYSBzdHJhbmdlciBpbiB0aGUgbGFuZCBvZiBNYWRpYW4sIHdoZXJlIGhlIGJlZ2F0IHR3byBzb25zLgpBbmQgd2hlbiBmb3J0eSB5ZWFycyB3ZXJlIGV4cGlyZWQsIHRoZXJlIGFwcGVhcmVkIHRvIGhpbSBpbiB0aGUgd2lsZGVybmVzcyBvZiBtb3VudCBTaW5hIGFuIGFuZ2VsIG9mIHRoZSBMb3JkIGluIGEgZmxhbWUgb2YgZmlyZSBpbiBhIGJ1c2guCldoZW4gTW9zZXMgc2F3IGl0LCBoZSB3b25kZXJlZCBhdCB0aGUgc2lnaHQ6IGFuZCBhcyBoZSBkcmV3IG5lYXIgdG8gYmVob2xkIGl0LCB0aGUgdm9pY2Ugb2YgdGhlIExPUkQgY2FtZSB1bnRvIGhpbSwKU2F5aW5nLCBJIGFtIHRoZSBHb2Qgb2YgdGh5IGZhdGhlcnMsIHRoZSBHb2Qgb2YgQWJyYWhhbSwgYW5kIHRoZSBHb2Qgb2YgSXNhYWMsIGFuZCB0aGUgR29kIG9mIEphY29iLiBUaGVuIE1vc2VzIHRyZW1ibGVkLCBhbmQgZHVyc3Qgbm90IGJlaG9sZC4KVGhlbiBzYWlkIHRoZSBMb3JkIHRvIGhpbSwgUHV0IG9mZiB0aHkgc2hvZXMgZnJvbSB0aHkgZmVldDogZm9yIHRoZSBwbGFjZSB3aGVyZSB0aG91IHN0YW5kZXN0IGlzIGhvbHkgZ3JvdW5kLgpJIGhhdmUgc2VlbiwgSSBoYXZlIHNlZW4gdGhlIGFmZmxpY3Rpb24gb2YgbXkgcGVvcGxlIHdoaWNoIGlzIGluIEVneXB0LCBhbmQgSSBoYXZlIGhlYXJkIHRoZWlyIGdyb2FuaW5nLCBhbmQgYW0gY29tZSBkb3duIHRvIGRlbGl2ZXIgdGhlbS4gQW5kIG5vdyBjb21lLCBJIHdpbGwgc2VuZCB0aGVlIGludG8gRWd5cHQuClRoaXMgTW9zZXMgd2hvbSB0aGV5IHJlZnVzZWQsIHNheWluZywgV2hvIG1hZGUgdGhlZSBhIHJ1bGVyIGFuZCBhIGp1ZGdlPyB0aGUgc2FtZSBkaWQgR29kIHNlbmQgdG8gYmUgYSBydWxlciBhbmQgYSBkZWxpdmVyZXIgYnkgdGhlIGhhbmQgb2YgdGhlIGFuZ2VsIHdoaWNoIGFwcGVhcmVkIHRvIGhpbSBpbiB0aGUgYnVzaC4KSGUgYnJvdWdodCB0aGVtIG91dCwgYWZ0ZXIgdGhhdCBoZSBoYWQgc2hld2VkIHdvbmRlcnMgYW5kIHNpZ25zIGluIHRoZSBsYW5kIG9mIEVneXB0LCBhbmQgaW4gdGhlIFJlZCBzZWEsIGFuZCBpbiB0aGUgd2lsZGVybmVzcyBmb3J0eSB5ZWFycy4KVGhpcyBpcyB0aGF0IE1vc2VzLCB3aGljaCBzYWlkIHVudG8gdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgQSBwcm9waGV0IHNoYWxsIHRoZSBMb3JkIHlvdXIgR29kIHJhaXNlIHVwIHVudG8geW91IG9mIHlvdXIgYnJldGhyZW4sIGxpa2UgdW50byBtZTsgaGltIHNoYWxsIHllIGhlYXIuClRoaXMgaXMgaGUsIHRoYXQgd2FzIGluIHRoZSBjaHVyY2ggaW4gdGhlIHdpbGRlcm5lc3Mgd2l0aCB0aGUgYW5nZWwgd2hpY2ggc3Bha2UgdG8gaGltIGluIHRoZSBtb3VudCBTaW5hLCBhbmQgd2l0aCBvdXIgZmF0aGVyczogd2hvIHJlY2VpdmVkIHRoZSBsaXZlbHkgb3JhY2xlcyB0byBnaXZlIHVudG8gdXM6ClRvIHdob20gb3VyIGZhdGhlcnMgd291bGQgbm90IG9iZXksIGJ1dCB0aHJ1c3QgaGltIGZyb20gdGhlbSwgYW5kIGluIHRoZWlyIGhlYXJ0cyB0dXJuZWQgYmFjayBhZ2FpbiBpbnRvIEVneXB0LApTYXlpbmcgdW50byBBYXJvbiwgTWFrZSB1cyBnb2RzIHRvIGdvIGJlZm9yZSB1czogZm9yIGFzIGZvciB0aGlzIE1vc2VzLCB3aGljaCBicm91Z2h0IHVzIG91dCBvZiB0aGUgbGFuZCBvZiBFZ3lwdCwgd2Ugd290IG5vdCB3aGF0IGlzIGJlY29tZSBvZiBoaW0uCkFuZCB0aGV5IG1hZGUgYSBjYWxmIGluIHRob3NlIGRheXMsIGFuZCBvZmZlcmVkIHNhY3JpZmljZSB1bnRvIHRoZSBpZG9sLCBhbmQgcmVqb2ljZWQgaW4gdGhlIHdvcmtzIG9mIHRoZWlyIG93biBoYW5kcy4KVGhlbiBHb2QgdHVybmVkLCBhbmQgZ2F2ZSB0aGVtIHVwIHRvIHdvcnNoaXAgdGhlIGhvc3Qgb2YgaGVhdmVuOyBhcyBpdCBpcyB3cml0dGVuIGluIHRoZSBib29rIG9mIHRoZSBwcm9waGV0cywgTyB5ZSBob3VzZSBvZiBJc3JhZWwsIGhhdmUgeWUgb2ZmZXJlZCB0byBtZSBzbGFpbiBiZWFzdHMgYW5kIHNhY3JpZmljZXMgYnkgdGhlIHNwYWNlIG9mIGZvcnR5IHllYXJzIGluIHRoZSB3aWxkZXJuZXNzPwpZZWEsIHllIHRvb2sgdXAgdGhlIHRhYmVybmFjbGUgb2YgTW9sb2NoLCBhbmQgdGhlIHN0YXIgb2YgeW91ciBnb2QgUmVtcGhhbiwgZmlndXJlcyB3aGljaCB5ZSBtYWRlIHRvIHdvcnNoaXAgdGhlbTogYW5kIEkgd2lsbCBjYXJyeSB5b3UgYXdheSBiZXlvbmQgQmFieWxvbi4KT3VyIGZhdGhlcnMgaGFkIHRoZSB0YWJlcm5hY2xlIG9mIHdpdG5lc3MgaW4gdGhlIHdpbGRlcm5lc3MsIGFzIGhlIGhhZCBhcHBvaW50ZWQsIHNwZWFraW5nIHVudG8gTW9zZXMsIHRoYXQgaGUgc2hvdWxkIG1ha2UgaXQgYWNjb3JkaW5nIHRvIHRoZSBmYXNoaW9uIHRoYXQgaGUgaGFkIHNlZW4uCldoaWNoIGFsc28gb3VyIGZhdGhlcnMgdGhhdCBjYW1lIGFmdGVyIGJyb3VnaHQgaW4gd2l0aCBKZXN1cyBpbnRvIHRoZSBwb3NzZXNzaW9uIG9mIHRoZSBHZW50aWxlcywgd2hvbSBHb2QgZHJhdmUgb3V0IGJlZm9yZSB0aGUgZmFjZSBvZiBvdXIgZmF0aGVycywgdW50byB0aGUgZGF5cyBvZiBEYXZpZDsKV2hvIGZvdW5kIGZhdm91ciBiZWZvcmUgR29kLCBhbmQgZGVzaXJlZCB0byBmaW5kIGEgdGFiZXJuYWNsZSBmb3IgdGhlIEdvZCBvZiBKYWNvYi4KQnV0IFNvbG9tb24gYnVpbHQgaGltIGFuIGhvdXNlLgpIb3diZWl0IHRoZSBtb3N0IEhpZ2ggZHdlbGxldGggbm90IGluIHRlbXBsZXMgbWFkZSB3aXRoIGhhbmRzOyBhcyBzYWl0aCB0aGUgcHJvcGhldCwKSGVhdmVuIGlzIG15IHRocm9uZSwgYW5kIGVhcnRoIGlzIG15IGZvb3RzdG9vbDogd2hhdCBob3VzZSB3aWxsIHllIGJ1aWxkIG1lPyBzYWl0aCB0aGUgTG9yZDogb3Igd2hhdCBpcyB0aGUgcGxhY2Ugb2YgbXkgcmVzdD8KSGF0aCBub3QgbXkgaGFuZCBtYWRlIGFsbCB0aGVzZSB0aGluZ3M/ClllIHN0aWZmbmVja2VkIGFuZCB1bmNpcmN1bWNpc2VkIGluIGhlYXJ0IGFuZCBlYXJzLCB5ZSBkbyBhbHdheXMgcmVzaXN0IHRoZSBIb2x5IEdob3N0OiBhcyB5b3VyIGZhdGhlcnMgZGlkLCBzbyBkbyB5ZS4KV2hpY2ggb2YgdGhlIHByb3BoZXRzIGhhdmUgbm90IHlvdXIgZmF0aGVycyBwZXJzZWN1dGVkPyBhbmQgdGhleSBoYXZlIHNsYWluIHRoZW0gd2hpY2ggc2hld2VkIGJlZm9yZSBvZiB0aGUgY29taW5nIG9mIHRoZSBKdXN0IE9uZTsgb2Ygd2hvbSB5ZSBoYXZlIGJlZW4gbm93IHRoZSBiZXRyYXllcnMgYW5kIG11cmRlcmVyczoKV2hvIGhhdmUgcmVjZWl2ZWQgdGhlIGxhdyBieSB0aGUgZGlzcG9zaXRpb24gb2YgYW5nZWxzLCBhbmQgaGF2ZSBub3Qga2VwdCBpdC4KV2hlbiB0aGV5IGhlYXJkIHRoZXNlIHRoaW5ncywgdGhleSB3ZXJlIGN1dCB0byB0aGUgaGVhcnQsIGFuZCB0aGV5IGduYXNoZWQgb24gaGltIHdpdGggdGhlaXIgdGVldGguCkJ1dCBoZSwgYmVpbmcgZnVsbCBvZiB0aGUgSG9seSBHaG9zdCwgbG9va2VkIHVwIHN0ZWRmYXN0bHkgaW50byBoZWF2ZW4sIGFuZCBzYXcgdGhlIGdsb3J5IG9mIEdvZCwgYW5kIEplc3VzIHN0YW5kaW5nIG9uIHRoZSByaWdodCBoYW5kIG9mIEdvZCwKQW5kIHNhaWQsIEJlaG9sZCwgSSBzZWUgdGhlIGhlYXZlbnMgb3BlbmVkLCBhbmQgdGhlIFNvbiBvZiBtYW4gc3RhbmRpbmcgb24gdGhlIHJpZ2h0IGhhbmQgb2YgR29kLgpUaGVuIHRoZXkgY3JpZWQgb3V0IHdpdGggYSBsb3VkIHZvaWNlLCBhbmQgc3RvcHBlZCB0aGVpciBlYXJzLCBhbmQgcmFuIHVwb24gaGltIHdpdGggb25lIGFjY29yZCwKQW5kIGNhc3QgaGltIG91dCBvZiB0aGUgY2l0eSwgYW5kIHN0b25lZCBoaW06IGFuZCB0aGUgd2l0bmVzc2VzIGxhaWQgZG93biB0aGVpciBjbG90aGVzIGF0IGEgeW91bmcgbWFuJ3MgZmVldCwgd2hvc2UgbmFtZSB3YXMgU2F1bC4KQW5kIHRoZXkgc3RvbmVkIFN0ZXBoZW4sIGNhbGxpbmcgdXBvbiBHb2QsIGFuZCBzYXlpbmcsIExvcmQgSmVzdXMsIHJlY2VpdmUgbXkgc3Bpcml0LgpBbmQgaGUga25lZWxlZCBkb3duLCBhbmQgY3JpZWQgd2l0aCBhIGxvdWQgdm9pY2UsIExvcmQsIGxheSBub3QgdGhpcyBzaW4gdG8gdGhlaXIgY2hhcmdlLiBBbmQgd2hlbiBoZSBoYWQgc2FpZCB0aGlzLCBoZSBmZWxsIGFzbGVlcC4KQW5kIFNhdWwgd2FzIGNvbnNlbnRpbmcgdW50byBoaXMgZGVhdGguIEFuZCBhdCB0aGF0IHRpbWUgdGhlcmUgd2FzIGEgZ3JlYXQgcGVyc2VjdXRpb24gYWdhaW5zdCB0aGUgY2h1cmNoIHdoaWNoIHdhcyBhdCBKZXJ1c2FsZW07IGFuZCB0aGV5IHdlcmUgYWxsIHNjYXR0ZXJlZCBhYnJvYWQgdGhyb3VnaG91dCB0aGUgcmVnaW9ucyBvZiBKdWRhZWEgYW5kIFNhbWFyaWEsIGV4Y2VwdCB0aGUgYXBvc3RsZXMuCkFuZCBkZXZvdXQgbWVuIGNhcnJpZWQgU3RlcGhlbiB0byBoaXMgYnVyaWFsLCBhbmQgbWFkZSBncmVhdCBsYW1lbnRhdGlvbiBvdmVyIGhpbS4KQXMgZm9yIFNhdWwsIGhlIG1hZGUgaGF2b2NrIG9mIHRoZSBjaHVyY2gsIGVudGVyaW5nIGludG8gZXZlcnkgaG91c2UsIGFuZCBoYWxpbmcgbWVuIGFuZCB3b21lbiBjb21taXR0ZWQgdGhlbSB0byBwcmlzb24uClRoZXJlZm9yZSB0aGV5IHRoYXQgd2VyZSBzY2F0dGVyZWQgYWJyb2FkIHdlbnQgZXZlcnkgd2hlcmUgcHJlYWNoaW5nIHRoZSB3b3JkLgpUaGVuIFBoaWxpcCB3ZW50IGRvd24gdG8gdGhlIGNpdHkgb2YgU2FtYXJpYSwgYW5kIHByZWFjaGVkIENocmlzdCB1bnRvIHRoZW0uCkFuZCB0aGUgcGVvcGxlIHdpdGggb25lIGFjY29yZCBnYXZlIGhlZWQgdW50byB0aG9zZSB0aGluZ3Mgd2hpY2ggUGhpbGlwIHNwYWtlLCBoZWFyaW5nIGFuZCBzZWVpbmcgdGhlIG1pcmFjbGVzIHdoaWNoIGhlIGRpZC4KRm9yIHVuY2xlYW4gc3Bpcml0cywgY3J5aW5nIHdpdGggbG91ZCB2b2ljZSwgY2FtZSBvdXQgb2YgbWFueSB0aGF0IHdlcmUgcG9zc2Vzc2VkIHdpdGggdGhlbTogYW5kIG1hbnkgdGFrZW4gd2l0aCBwYWxzaWVzLCBhbmQgdGhhdCB3ZXJlIGxhbWUsIHdlcmUgaGVhbGVkLgpBbmQgdGhlcmUgd2FzIGdyZWF0IGpveSBpbiB0aGF0IGNpdHkuCkJ1dCB0aGVyZSB3YXMgYSBjZXJ0YWluIG1hbiwgY2FsbGVkIFNpbW9uLCB3aGljaCBiZWZvcmV0aW1lIGluIHRoZSBzYW1lIGNpdHkgdXNlZCBzb3JjZXJ5LCBhbmQgYmV3aXRjaGVkIHRoZSBwZW9wbGUgb2YgU2FtYXJpYSwgZ2l2aW5nIG91dCB0aGF0IGhpbXNlbGYgd2FzIHNvbWUgZ3JlYXQgb25lOgpUbyB3aG9tIHRoZXkgYWxsIGdhdmUgaGVlZCwgZnJvbSB0aGUgbGVhc3QgdG8gdGhlIGdyZWF0ZXN0LCBzYXlpbmcsIFRoaXMgbWFuIGlzIHRoZSBncmVhdCBwb3dlciBvZiBHb2QuCkFuZCB0byBoaW0gdGhleSBoYWQgcmVnYXJkLCBiZWNhdXNlIHRoYXQgb2YgbG9uZyB0aW1lIGhlIGhhZCBiZXdpdGNoZWQgdGhlbSB3aXRoIHNvcmNlcmllcy4KQnV0IHdoZW4gdGhleSBiZWxpZXZlZCBQaGlsaXAgcHJlYWNoaW5nIHRoZSB0aGluZ3MgY29uY2VybmluZyB0aGUga2luZ2RvbSBvZiBHb2QsIGFuZCB0aGUgbmFtZSBvZiBKZXN1cyBDaHJpc3QsIHRoZXkgd2VyZSBiYXB0aXplZCwgYm90aCBtZW4gYW5kIHdvbWVuLgpUaGVuIFNpbW9uIGhpbXNlbGYgYmVsaWV2ZWQgYWxzbzogYW5kIHdoZW4gaGUgd2FzIGJhcHRpemVkLCBoZSBjb250aW51ZWQgd2l0aCBQaGlsaXAsIGFuZCB3b25kZXJlZCwgYmVob2xkaW5nIHRoZSBtaXJhY2xlcyBhbmQgc2lnbnMgd2hpY2ggd2VyZSBkb25lLgpOb3cgd2hlbiB0aGUgYXBvc3RsZXMgd2hpY2ggd2VyZSBhdCBKZXJ1c2FsZW0gaGVhcmQgdGhhdCBTYW1hcmlhIGhhZCByZWNlaXZlZCB0aGUgd29yZCBvZiBHb2QsIHRoZXkgc2VudCB1bnRvIHRoZW0gUGV0ZXIgYW5kIEpvaG46Cldobywgd2hlbiB0aGV5IHdlcmUgY29tZSBkb3duLCBwcmF5ZWQgZm9yIHRoZW0sIHRoYXQgdGhleSBtaWdodCByZWNlaXZlIHRoZSBIb2x5IEdob3N0OgooRm9yIGFzIHlldCBoZSB3YXMgZmFsbGVuIHVwb24gbm9uZSBvZiB0aGVtOiBvbmx5IHRoZXkgd2VyZSBiYXB0aXplZCBpbiB0aGUgbmFtZSBvZiB0aGUgTG9yZCBKZXN1cy4pClRoZW4gbGFpZCB0aGV5IHRoZWlyIGhhbmRzIG9uIHRoZW0sIGFuZCB0aGV5IHJlY2VpdmVkIHRoZSBIb2x5IEdob3N0LgpBbmQgd2hlbiBTaW1vbiBzYXcgdGhhdCB0aHJvdWdoIGxheWluZyBvbiBvZiB0aGUgYXBvc3RsZXMnIGhhbmRzIHRoZSBIb2x5IEdob3N0IHdhcyBnaXZlbiwgaGUgb2ZmZXJlZCB0aGVtIG1vbmV5LApTYXlpbmcsIEdpdmUgbWUgYWxzbyB0aGlzIHBvd2VyLCB0aGF0IG9uIHdob21zb2V2ZXIgSSBsYXkgaGFuZHMsIGhlIG1heSByZWNlaXZlIHRoZSBIb2x5IEdob3N0LgpCdXQgUGV0ZXIgc2FpZCB1bnRvIGhpbSwgVGh5IG1vbmV5IHBlcmlzaCB3aXRoIHRoZWUsIGJlY2F1c2UgdGhvdSBoYXN0IHRob3VnaHQgdGhhdCB0aGUgZ2lmdCBvZiBHb2QgbWF5IGJlIHB1cmNoYXNlZCB3aXRoIG1vbmV5LgpUaG91IGhhc3QgbmVpdGhlciBwYXJ0IG5vciBsb3QgaW4gdGhpcyBtYXR0ZXI6IGZvciB0aHkgaGVhcnQgaXMgbm90IHJpZ2h0IGluIHRoZSBzaWdodCBvZiBHb2QuClJlcGVudCB0aGVyZWZvcmUgb2YgdGhpcyB0aHkgd2lja2VkbmVzcywgYW5kIHByYXkgR29kLCBpZiBwZXJoYXBzIHRoZSB0aG91Z2h0IG9mIHRoaW5lIGhlYXJ0IG1heSBiZSBmb3JnaXZlbiB0aGVlLgpGb3IgSSBwZXJjZWl2ZSB0aGF0IHRob3UgYXJ0IGluIHRoZSBnYWxsIG9mIGJpdHRlcm5lc3MsIGFuZCBpbiB0aGUgYm9uZCBvZiBpbmlxdWl0eS4KVGhlbiBhbnN3ZXJlZCBTaW1vbiwgYW5kIHNhaWQsIFByYXkgeWUgdG8gdGhlIExPUkQgZm9yIG1lLCB0aGF0IG5vbmUgb2YgdGhlc2UgdGhpbmdzIHdoaWNoIHllIGhhdmUgc3Bva2VuIGNvbWUgdXBvbiBtZS4KQW5kIHRoZXksIHdoZW4gdGhleSBoYWQgdGVzdGlmaWVkIGFuZCBwcmVhY2hlZCB0aGUgd29yZCBvZiB0aGUgTG9yZCwgcmV0dXJuZWQgdG8gSmVydXNhbGVtLCBhbmQgcHJlYWNoZWQgdGhlIGdvc3BlbCBpbiBtYW55IHZpbGxhZ2VzIG9mIHRoZSBTYW1hcml0YW5zLgpBbmQgdGhlIGFuZ2VsIG9mIHRoZSBMb3JkIHNwYWtlIHVudG8gUGhpbGlwLCBzYXlpbmcsIEFyaXNlLCBhbmQgZ28gdG93YXJkIHRoZSBzb3V0aCB1bnRvIHRoZSB3YXkgdGhhdCBnb2V0aCBkb3duIGZyb20gSmVydXNhbGVtIHVudG8gR2F6YSwgd2hpY2ggaXMgZGVzZXJ0LgpBbmQgaGUgYXJvc2UgYW5kIHdlbnQ6IGFuZCwgYmVob2xkLCBhIG1hbiBvZiBFdGhpb3BpYSwgYW4gZXVudWNoIG9mIGdyZWF0IGF1dGhvcml0eSB1bmRlciBDYW5kYWNlIHF1ZWVuIG9mIHRoZSBFdGhpb3BpYW5zLCB3aG8gaGFkIHRoZSBjaGFyZ2Ugb2YgYWxsIGhlciB0cmVhc3VyZSwgYW5kIGhhZCBjb21lIHRvIEplcnVzYWxlbSBmb3IgdG8gd29yc2hpcCwKV2FzIHJldHVybmluZywgYW5kIHNpdHRpbmcgaW4gaGlzIGNoYXJpb3QgcmVhZCBFc2FpYXMgdGhlIHByb3BoZXQuClRoZW4gdGhlIFNwaXJpdCBzYWlkIHVudG8gUGhpbGlwLCBHbyBuZWFyLCBhbmQgam9pbiB0aHlzZWxmIHRvIHRoaXMgY2hhcmlvdC4KQW5kIFBoaWxpcCByYW4gdGhpdGhlciB0byBoaW0sIGFuZCBoZWFyZCBoaW0gcmVhZCB0aGUgcHJvcGhldCBFc2FpYXMsIGFuZCBzYWlkLCBVbmRlcnN0YW5kZXN0IHRob3Ugd2hhdCB0aG91IHJlYWRlc3Q/CkFuZCBoZSBzYWlkLCBIb3cgY2FuIEksIGV4Y2VwdCBzb21lIG1hbiBzaG91bGQgZ3VpZGUgbWU/IEFuZCBoZSBkZXNpcmVkIFBoaWxpcCB0aGF0IGhlIHdvdWxkIGNvbWUgdXAgYW5kIHNpdCB3aXRoIGhpbS4KVGhlIHBsYWNlIG9mIHRoZSBzY3JpcHR1cmUgd2hpY2ggaGUgcmVhZCB3YXMgdGhpcywgSGUgd2FzIGxlZCBhcyBhIHNoZWVwIHRvIHRoZSBzbGF1Z2h0ZXI7IGFuZCBsaWtlIGEgbGFtYiBkdW1iIGJlZm9yZSBoaXMgc2hlYXJlciwgc28gb3BlbmVkIGhlIG5vdCBoaXMgbW91dGg6CkluIGhpcyBodW1pbGlhdGlvbiBoaXMganVkZ21lbnQgd2FzIHRha2VuIGF3YXk6IGFuZCB3aG8gc2hhbGwgZGVjbGFyZSBoaXMgZ2VuZXJhdGlvbj8gZm9yIGhpcyBsaWZlIGlzIHRha2VuIGZyb20gdGhlIGVhcnRoLgpBbmQgdGhlIGV1bnVjaCBhbnN3ZXJlZCBQaGlsaXAsIGFuZCBzYWlkLCBJIHByYXkgdGhlZSwgb2Ygd2hvbSBzcGVha2V0aCB0aGUgcHJvcGhldCB0aGlzPyBvZiBoaW1zZWxmLCBvciBvZiBzb21lIG90aGVyIG1hbj8KVGhlbiBQaGlsaXAgb3BlbmVkIGhpcyBtb3V0aCwgYW5kIGJlZ2FuIGF0IHRoZSBzYW1lIHNjcmlwdHVyZSwgYW5kIHByZWFjaGVkIHVudG8gaGltIEplc3VzLgpBbmQgYXMgdGhleSB3ZW50IG9uIHRoZWlyIHdheSwgdGhleSBjYW1lIHVudG8gYSBjZXJ0YWluIHdhdGVyOiBhbmQgdGhlIGV1bnVjaCBzYWlkLCBTZWUsIGhlcmUgaXMgd2F0ZXI7IHdoYXQgZG90aCBoaW5kZXIgbWUgdG8gYmUgYmFwdGl6ZWQ/CkFuZCBQaGlsaXAgc2FpZCwgSWYgdGhvdSBiZWxpZXZlc3Qgd2l0aCBhbGwgdGhpbmUgaGVhcnQsIHRob3UgbWF5ZXN0LiBBbmQgaGUgYW5zd2VyZWQgYW5kIHNhaWQsIEkgYmVsaWV2ZSB0aGF0IEplc3VzIENocmlzdCBpcyB0aGUgU29uIG9mIEdvZC4KQW5kIGhlIGNvbW1hbmRlZCB0aGUgY2hhcmlvdCB0byBzdGFuZCBzdGlsbDogYW5kIHRoZXkgd2VudCBkb3duIGJvdGggaW50byB0aGUgd2F0ZXIsIGJvdGggUGhpbGlwIGFuZCB0aGUgZXVudWNoOyBhbmQgaGUgYmFwdGl6ZWQgaGltLgpBbmQgd2hlbiB0aGV5IHdlcmUgY29tZSB1cCBvdXQgb2YgdGhlIHdhdGVyLCB0aGUgU3Bpcml0IG9mIHRoZSBMb3JkIGNhdWdodCBhd2F5IFBoaWxpcCwgdGhhdCB0aGUgZXVudWNoIHNhdyBoaW0gbm8gbW9yZTogYW5kIGhlIHdlbnQgb24gaGlzIHdheSByZWpvaWNpbmcuCkJ1dCBQaGlsaXAgd2FzIGZvdW5kIGF0IEF6b3R1czogYW5kIHBhc3NpbmcgdGhyb3VnaCBoZSBwcmVhY2hlZCBpbiBhbGwgdGhlIGNpdGllcywgdGlsbCBoZSBjYW1lIHRvIENhZXNhcmVhLgpBbmQgU2F1bCwgeWV0IGJyZWF0aGluZyBvdXQgdGhyZWF0ZW5pbmdzIGFuZCBzbGF1Z2h0ZXIgYWdhaW5zdCB0aGUgZGlzY2lwbGVzIG9mIHRoZSBMb3JkLCB3ZW50IHVudG8gdGhlIGhpZ2ggcHJpZXN0LApBbmQgZGVzaXJlZCBvZiBoaW0gbGV0dGVycyB0byBEYW1hc2N1cyB0byB0aGUgc3luYWdvZ3VlcywgdGhhdCBpZiBoZSBmb3VuZCBhbnkgb2YgdGhpcyB3YXksIHdoZXRoZXIgdGhleSB3ZXJlIG1lbiBvciB3b21lbiwgaGUgbWlnaHQgYnJpbmcgdGhlbSBib3VuZCB1bnRvIEplcnVzYWxlbS4KQW5kIGFzIGhlIGpvdXJuZXllZCwgaGUgY2FtZSBuZWFyIERhbWFzY3VzOiBhbmQgc3VkZGVubHkgdGhlcmUgc2hpbmVkIHJvdW5kIGFib3V0IGhpbSBhIGxpZ2h0IGZyb20gaGVhdmVuOgpBbmQgaGUgZmVsbCB0byB0aGUgZWFydGgsIGFuZCBoZWFyZCBhIHZvaWNlIHNheWluZyB1bnRvIGhpbSwgU2F1bCwgU2F1bCwgd2h5IHBlcnNlY3V0ZXN0IHRob3UgbWU/CkFuZCBoZSBzYWlkLCBXaG8gYXJ0IHRob3UsIExvcmQ/IEFuZCB0aGUgTG9yZCBzYWlkLCBJIGFtIEplc3VzIHdob20gdGhvdSBwZXJzZWN1dGVzdDogaXQgaXMgaGFyZCBmb3IgdGhlZSB0byBraWNrIGFnYWluc3QgdGhlIHByaWNrcy4KQW5kIGhlIHRyZW1ibGluZyBhbmQgYXN0b25pc2hlZCBzYWlkLCBMb3JkLCB3aGF0IHdpbHQgdGhvdSBoYXZlIG1lIHRvIGRvPyBBbmQgdGhlIExvcmQgc2FpZCB1bnRvIGhpbSwgQXJpc2UsIGFuZCBnbyBpbnRvIHRoZSBjaXR5LCBhbmQgaXQgc2hhbGwgYmUgdG9sZCB0aGVlIHdoYXQgdGhvdSBtdXN0IGRvLgpBbmQgdGhlIG1lbiB3aGljaCBqb3VybmV5ZWQgd2l0aCBoaW0gc3Rvb2Qgc3BlZWNobGVzcywgaGVhcmluZyBhIHZvaWNlLCBidXQgc2VlaW5nIG5vIG1hbi4KQW5kIFNhdWwgYXJvc2UgZnJvbSB0aGUgZWFydGg7IGFuZCB3aGVuIGhpcyBleWVzIHdlcmUgb3BlbmVkLCBoZSBzYXcgbm8gbWFuOiBidXQgdGhleSBsZWQgaGltIGJ5IHRoZSBoYW5kLCBhbmQgYnJvdWdodCBoaW0gaW50byBEYW1hc2N1cy4KQW5kIGhlIHdhcyB0aHJlZSBkYXlzIHdpdGhvdXQgc2lnaHQsIGFuZCBuZWl0aGVyIGRpZCBlYXQgbm9yIGRyaW5rLgpBbmQgdGhlcmUgd2FzIGEgY2VydGFpbiBkaXNjaXBsZSBhdCBEYW1hc2N1cywgbmFtZWQgQW5hbmlhczsgYW5kIHRvIGhpbSBzYWlkIHRoZSBMb3JkIGluIGEgdmlzaW9uLCBBbmFuaWFzLiBBbmQgaGUgc2FpZCwgQmVob2xkLCBJIGFtIGhlcmUsIExvcmQuCkFuZCB0aGUgTG9yZCBzYWlkIHVudG8gaGltLCBBcmlzZSwgYW5kIGdvIGludG8gdGhlIHN0cmVldCB3aGljaCBpcyBjYWxsZWQgU3RyYWlnaHQsIGFuZCBlbnF1aXJlIGluIHRoZSBob3VzZSBvZiBKdWRhcyBmb3Igb25lIGNhbGxlZCBTYXVsLCBvZiBUYXJzdXM6IGZvciwgYmVob2xkLCBoZSBwcmF5ZXRoLApBbmQgaGF0aCBzZWVuIGluIGEgdmlzaW9uIGEgbWFuIG5hbWVkIEFuYW5pYXMgY29taW5nIGluLCBhbmQgcHV0dGluZyBoaXMgaGFuZCBvbiBoaW0sIHRoYXQgaGUgbWlnaHQgcmVjZWl2ZSBoaXMgc2lnaHQuClRoZW4gQW5hbmlhcyBhbnN3ZXJlZCwgTG9yZCwgSSBoYXZlIGhlYXJkIGJ5IG1hbnkgb2YgdGhpcyBtYW4sIGhvdyBtdWNoIGV2aWwgaGUgaGF0aCBkb25lIHRvIHRoeSBzYWludHMgYXQgSmVydXNhbGVtOgpBbmQgaGVyZSBoZSBoYXRoIGF1dGhvcml0eSBmcm9tIHRoZSBjaGllZiBwcmllc3RzIHRvIGJpbmQgYWxsIHRoYXQgY2FsbCBvbiB0aHkgbmFtZS4KQnV0IHRoZSBMb3JkIHNhaWQgdW50byBoaW0sIEdvIHRoeSB3YXk6IGZvciBoZSBpcyBhIGNob3NlbiB2ZXNzZWwgdW50byBtZSwgdG8gYmVhciBteSBuYW1lIGJlZm9yZSB0aGUgR2VudGlsZXMsIGFuZCBraW5ncywgYW5kIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWw6CkZvciBJIHdpbGwgc2hldyBoaW0gaG93IGdyZWF0IHRoaW5ncyBoZSBtdXN0IHN1ZmZlciBmb3IgbXkgbmFtZSdzIHNha2UuCkFuZCBBbmFuaWFzIHdlbnQgaGlzIHdheSwgYW5kIGVudGVyZWQgaW50byB0aGUgaG91c2U7IGFuZCBwdXR0aW5nIGhpcyBoYW5kcyBvbiBoaW0gc2FpZCwgQnJvdGhlciBTYXVsLCB0aGUgTG9yZCwgZXZlbiBKZXN1cywgdGhhdCBhcHBlYXJlZCB1bnRvIHRoZWUgaW4gdGhlIHdheSBhcyB0aG91IGNhbWVzdCwgaGF0aCBzZW50IG1lLCB0aGF0IHRob3UgbWlnaHRlc3QgcmVjZWl2ZSB0aHkgc2lnaHQsIGFuZCBiZSBmaWxsZWQgd2l0aCB0aGUgSG9seSBHaG9zdC4KQW5kIGltbWVkaWF0ZWx5IHRoZXJlIGZlbGwgZnJvbSBoaXMgZXllcyBhcyBpdCBoYWQgYmVlbiBzY2FsZXM6IGFuZCBoZSByZWNlaXZlZCBzaWdodCBmb3J0aHdpdGgsIGFuZCBhcm9zZSwgYW5kIHdhcyBiYXB0aXplZC4KQW5kIHdoZW4gaGUgaGFkIHJlY2VpdmVkIG1lYXQsIGhlIHdhcyBzdHJlbmd0aGVuZWQuIFRoZW4gd2FzIFNhdWwgY2VydGFpbiBkYXlzIHdpdGggdGhlIGRpc2NpcGxlcyB3aGljaCB3ZXJlIGF0IERhbWFzY3VzLgpBbmQgc3RyYWlnaHR3YXkgaGUgcHJlYWNoZWQgQ2hyaXN0IGluIHRoZSBzeW5hZ29ndWVzLCB0aGF0IGhlIGlzIHRoZSBTb24gb2YgR29kLgpCdXQgYWxsIHRoYXQgaGVhcmQgaGltIHdlcmUgYW1hemVkLCBhbmQgc2FpZDsgSXMgbm90IHRoaXMgaGUgdGhhdCBkZXN0cm95ZWQgdGhlbSB3aGljaCBjYWxsZWQgb24gdGhpcyBuYW1lIGluIEplcnVzYWxlbSwgYW5kIGNhbWUgaGl0aGVyIGZvciB0aGF0IGludGVudCwgdGhhdCBoZSBtaWdodCBicmluZyB0aGVtIGJvdW5kIHVudG8gdGhlIGNoaWVmIHByaWVzdHM/CkJ1dCBTYXVsIGluY3JlYXNlZCB0aGUgbW9yZSBpbiBzdHJlbmd0aCwgYW5kIGNvbmZvdW5kZWQgdGhlIEpld3Mgd2hpY2ggZHdlbHQgYXQgRGFtYXNjdXMsIHByb3ZpbmcgdGhhdCB0aGlzIGlzIHZlcnkgQ2hyaXN0LgpBbmQgYWZ0ZXIgdGhhdCBtYW55IGRheXMgd2VyZSBmdWxmaWxsZWQsIHRoZSBKZXdzIHRvb2sgY291bnNlbCB0byBraWxsIGhpbToKQnV0IHRoZWlyIGxheWluZyBhd2FpdCB3YXMga25vd24gb2YgU2F1bC4gQW5kIHRoZXkgd2F0Y2hlZCB0aGUgZ2F0ZXMgZGF5IGFuZCBuaWdodCB0byBraWxsIGhpbS4KVGhlbiB0aGUgZGlzY2lwbGVzIHRvb2sgaGltIGJ5IG5pZ2h0LCBhbmQgbGV0IGhpbSBkb3duIGJ5IHRoZSB3YWxsIGluIGEgYmFza2V0LgpBbmQgd2hlbiBTYXVsIHdhcyBjb21lIHRvIEplcnVzYWxlbSwgaGUgYXNzYXllZCB0byBqb2luIGhpbXNlbGYgdG8gdGhlIGRpc2NpcGxlczogYnV0IHRoZXkgd2VyZSBhbGwgYWZyYWlkIG9mIGhpbSwgYW5kIGJlbGlldmVkIG5vdCB0aGF0IGhlIHdhcyBhIGRpc2NpcGxlLgpCdXQgQmFybmFiYXMgdG9vayBoaW0sIGFuZCBicm91Z2h0IGhpbSB0byB0aGUgYXBvc3RsZXMsIGFuZCBkZWNsYXJlZCB1bnRvIHRoZW0gaG93IGhlIGhhZCBzZWVuIHRoZSBMb3JkIGluIHRoZSB3YXksIGFuZCB0aGF0IGhlIGhhZCBzcG9rZW4gdG8gaGltLCBhbmQgaG93IGhlIGhhZCBwcmVhY2hlZCBib2xkbHkgYXQgRGFtYXNjdXMgaW4gdGhlIG5hbWUgb2YgSmVzdXMuCkFuZCBoZSB3YXMgd2l0aCB0aGVtIGNvbWluZyBpbiBhbmQgZ29pbmcgb3V0IGF0IEplcnVzYWxlbS4KQW5kIGhlIHNwYWtlIGJvbGRseSBpbiB0aGUgbmFtZSBvZiB0aGUgTG9yZCBKZXN1cywgYW5kIGRpc3B1dGVkIGFnYWluc3QgdGhlIEdyZWNpYW5zOiBidXQgdGhleSB3ZW50IGFib3V0IHRvIHNsYXkgaGltLgpXaGljaCB3aGVuIHRoZSBicmV0aHJlbiBrbmV3LCB0aGV5IGJyb3VnaHQgaGltIGRvd24gdG8gQ2Flc2FyZWEsIGFuZCBzZW50IGhpbSBmb3J0aCB0byBUYXJzdXMuClRoZW4gaGFkIHRoZSBjaHVyY2hlcyByZXN0IHRocm91Z2hvdXQgYWxsIEp1ZGFlYSBhbmQgR2FsaWxlZSBhbmQgU2FtYXJpYSwgYW5kIHdlcmUgZWRpZmllZDsgYW5kIHdhbGtpbmcgaW4gdGhlIGZlYXIgb2YgdGhlIExvcmQsIGFuZCBpbiB0aGUgY29tZm9ydCBvZiB0aGUgSG9seSBHaG9zdCwgd2VyZSBtdWx0aXBsaWVkLgpBbmQgaXQgY2FtZSB0byBwYXNzLCBhcyBQZXRlciBwYXNzZWQgdGhyb3VnaG91dCBhbGwgcXVhcnRlcnMsIGhlIGNhbWUgZG93biBhbHNvIHRvIHRoZSBzYWludHMgd2hpY2ggZHdlbHQgYXQgTHlkZGEuCkFuZCB0aGVyZSBoZSBmb3VuZCBhIGNlcnRhaW4gbWFuIG5hbWVkIEFlbmVhcywgd2hpY2ggaGFkIGtlcHQgaGlzIGJlZCBlaWdodCB5ZWFycywgYW5kIHdhcyBzaWNrIG9mIHRoZSBwYWxzeS4KQW5kIFBldGVyIHNhaWQgdW50byBoaW0sIEFlbmVhcywgSmVzdXMgQ2hyaXN0IG1ha2V0aCB0aGVlIHdob2xlOiBhcmlzZSwgYW5kIG1ha2UgdGh5IGJlZC4gQW5kIGhlIGFyb3NlIGltbWVkaWF0ZWx5LgpBbmQgYWxsIHRoYXQgZHdlbHQgYXQgTHlkZGEgYW5kIFNhcm9uIHNhdyBoaW0sIGFuZCB0dXJuZWQgdG8gdGhlIExvcmQuCk5vdyB0aGVyZSB3YXMgYXQgSm9wcGEgYSBjZXJ0YWluIGRpc2NpcGxlIG5hbWVkIFRhYml0aGEsIHdoaWNoIGJ5IGludGVycHJldGF0aW9uIGlzIGNhbGxlZCBEb3JjYXM6IHRoaXMgd29tYW4gd2FzIGZ1bGwgb2YgZ29vZCB3b3JrcyBhbmQgYWxtc2RlZWRzIHdoaWNoIHNoZSBkaWQuCkFuZCBpdCBjYW1lIHRvIHBhc3MgaW4gdGhvc2UgZGF5cywgdGhhdCBzaGUgd2FzIHNpY2ssIGFuZCBkaWVkOiB3aG9tIHdoZW4gdGhleSBoYWQgd2FzaGVkLCB0aGV5IGxhaWQgaGVyIGluIGFuIHVwcGVyIGNoYW1iZXIuCkFuZCBmb3Jhc211Y2ggYXMgTHlkZGEgd2FzIG5pZ2ggdG8gSm9wcGEsIGFuZCB0aGUgZGlzY2lwbGVzIGhhZCBoZWFyZCB0aGF0IFBldGVyIHdhcyB0aGVyZSwgdGhleSBzZW50IHVudG8gaGltIHR3byBtZW4sIGRlc2lyaW5nIGhpbSB0aGF0IGhlIHdvdWxkIG5vdCBkZWxheSB0byBjb21lIHRvIHRoZW0uClRoZW4gUGV0ZXIgYXJvc2UgYW5kIHdlbnQgd2l0aCB0aGVtLiBXaGVuIGhlIHdhcyBjb21lLCB0aGV5IGJyb3VnaHQgaGltIGludG8gdGhlIHVwcGVyIGNoYW1iZXI6IGFuZCBhbGwgdGhlIHdpZG93cyBzdG9vZCBieSBoaW0gd2VlcGluZywgYW5kIHNoZXdpbmcgdGhlIGNvYXRzIGFuZCBnYXJtZW50cyB3aGljaCBEb3JjYXMgbWFkZSwgd2hpbGUgc2hlIHdhcyB3aXRoIHRoZW0uCkJ1dCBQZXRlciBwdXQgdGhlbSBhbGwgZm9ydGgsIGFuZCBrbmVlbGVkIGRvd24sIGFuZCBwcmF5ZWQ7IGFuZCB0dXJuaW5nIGhpbSB0byB0aGUgYm9keSBzYWlkLCBUYWJpdGhhLCBhcmlzZS4gQW5kIHNoZSBvcGVuZWQgaGVyIGV5ZXM6IGFuZCB3aGVuIHNoZSBzYXcgUGV0ZXIsIHNoZSBzYXQgdXAuCkFuZCBoZSBnYXZlIGhlciBoaXMgaGFuZCwgYW5kIGxpZnRlZCBoZXIgdXAsIGFuZCB3aGVuIGhlIGhhZCBjYWxsZWQgdGhlIHNhaW50cyBhbmQgd2lkb3dzLCBwcmVzZW50ZWQgaGVyIGFsaXZlLgpBbmQgaXQgd2FzIGtub3duIHRocm91Z2hvdXQgYWxsIEpvcHBhOyBhbmQgbWFueSBiZWxpZXZlZCBpbiB0aGUgTG9yZC4KQW5kIGl0IGNhbWUgdG8gcGFzcywgdGhhdCBoZSB0YXJyaWVkIG1hbnkgZGF5cyBpbiBKb3BwYSB3aXRoIG9uZSBTaW1vbiBhIHRhbm5lci4KVGhlcmUgd2FzIGEgY2VydGFpbiBtYW4gaW4gQ2Flc2FyZWEgY2FsbGVkIENvcm5lbGl1cywgYSBjZW50dXJpb24gb2YgdGhlIGJhbmQgY2FsbGVkIHRoZSBJdGFsaWFuIGJhbmQsCkEgZGV2b3V0IG1hbiwgYW5kIG9uZSB0aGF0IGZlYXJlZCBHb2Qgd2l0aCBhbGwgaGlzIGhvdXNlLCB3aGljaCBnYXZlIG11Y2ggYWxtcyB0byB0aGUgcGVvcGxlLCBhbmQgcHJheWVkIHRvIEdvZCBhbHdheS4KSGUgc2F3IGluIGEgdmlzaW9uIGV2aWRlbnRseSBhYm91dCB0aGUgbmludGggaG91ciBvZiB0aGUgZGF5IGFuIGFuZ2VsIG9mIEdvZCBjb21pbmcgaW4gdG8gaGltLCBhbmQgc2F5aW5nIHVudG8gaGltLCBDb3JuZWxpdXMuCkFuZCB3aGVuIGhlIGxvb2tlZCBvbiBoaW0sIGhlIHdhcyBhZnJhaWQsIGFuZCBzYWlkLCBXaGF0IGlzIGl0LCBMb3JkPyBBbmQgaGUgc2FpZCB1bnRvIGhpbSwgVGh5IHByYXllcnMgYW5kIHRoaW5lIGFsbXMgYXJlIGNvbWUgdXAgZm9yIGEgbWVtb3JpYWwgYmVmb3JlIEdvZC4KQW5kIG5vdyBzZW5kIG1lbiB0byBKb3BwYSwgYW5kIGNhbGwgZm9yIG9uZSBTaW1vbiwgd2hvc2Ugc3VybmFtZSBpcyBQZXRlcjoKSGUgbG9kZ2V0aCB3aXRoIG9uZSBTaW1vbiBhIHRhbm5lciwgd2hvc2UgaG91c2UgaXMgYnkgdGhlIHNlYSBzaWRlOiBoZSBzaGFsbCB0ZWxsIHRoZWUgd2hhdCB0aG91IG91Z2h0ZXN0IHRvIGRvLgpBbmQgd2hlbiB0aGUgYW5nZWwgd2hpY2ggc3Bha2UgdW50byBDb3JuZWxpdXMgd2FzIGRlcGFydGVkLCBoZSBjYWxsZWQgdHdvIG9mIGhpcyBob3VzZWhvbGQgc2VydmFudHMsIGFuZCBhIGRldm91dCBzb2xkaWVyIG9mIHRoZW0gdGhhdCB3YWl0ZWQgb24gaGltIGNvbnRpbnVhbGx5OwpBbmQgd2hlbiBoZSBoYWQgZGVjbGFyZWQgYWxsIHRoZXNlIHRoaW5ncyB1bnRvIHRoZW0sIGhlIHNlbnQgdGhlbSB0byBKb3BwYS4KT24gdGhlIG1vcnJvdywgYXMgdGhleSB3ZW50IG9uIHRoZWlyIGpvdXJuZXksIGFuZCBkcmV3IG5pZ2ggdW50byB0aGUgY2l0eSwgUGV0ZXIgd2VudCB1cCB1cG9uIHRoZSBob3VzZXRvcCB0byBwcmF5IGFib3V0IHRoZSBzaXh0aCBob3VyOgpBbmQgaGUgYmVjYW1lIHZlcnkgaHVuZ3J5LCBhbmQgd291bGQgaGF2ZSBlYXRlbjogYnV0IHdoaWxlIHRoZXkgbWFkZSByZWFkeSwgaGUgZmVsbCBpbnRvIGEgdHJhbmNlLApBbmQgc2F3IGhlYXZlbiBvcGVuZWQsIGFuZCBhIGNlcnRhaW4gdmVzc2VsIGRlc2NlbmRpbmcgdXBvbiBoaW0sIGFzIGl0IGhhZCBiZWVuIGEgZ3JlYXQgc2hlZXQga25pdCBhdCB0aGUgZm91ciBjb3JuZXJzLCBhbmQgbGV0IGRvd24gdG8gdGhlIGVhcnRoOgpXaGVyZWluIHdlcmUgYWxsIG1hbm5lciBvZiBmb3VyZm9vdGVkIGJlYXN0cyBvZiB0aGUgZWFydGgsIGFuZCB3aWxkIGJlYXN0cywgYW5kIGNyZWVwaW5nIHRoaW5ncywgYW5kIGZvd2xzIG9mIHRoZSBhaXIuCkFuZCB0aGVyZSBjYW1lIGEgdm9pY2UgdG8gaGltLCBSaXNlLCBQZXRlcjsga2lsbCwgYW5kIGVhdC4KQnV0IFBldGVyIHNhaWQsIE5vdCBzbywgTG9yZDsgZm9yIEkgaGF2ZSBuZXZlciBlYXRlbiBhbnkgdGhpbmcgdGhhdCBpcyBjb21tb24gb3IgdW5jbGVhbi4KQW5kIHRoZSB2b2ljZSBzcGFrZSB1bnRvIGhpbSBhZ2FpbiB0aGUgc2Vjb25kIHRpbWUsIFdoYXQgR29kIGhhdGggY2xlYW5zZWQsIHRoYXQgY2FsbCBub3QgdGhvdSBjb21tb24uClRoaXMgd2FzIGRvbmUgdGhyaWNlOiBhbmQgdGhlIHZlc3NlbCB3YXMgcmVjZWl2ZWQgdXAgYWdhaW4gaW50byBoZWF2ZW4uCk5vdyB3aGlsZSBQZXRlciBkb3VidGVkIGluIGhpbXNlbGYgd2hhdCB0aGlzIHZpc2lvbiB3aGljaCBoZSBoYWQgc2VlbiBzaG91bGQgbWVhbiwgYmVob2xkLCB0aGUgbWVuIHdoaWNoIHdlcmUgc2VudCBmcm9tIENvcm5lbGl1cyBoYWQgbWFkZSBlbnF1aXJ5IGZvciBTaW1vbidzIGhvdXNlLCBhbmQgc3Rvb2QgYmVmb3JlIHRoZSBnYXRlLApBbmQgY2FsbGVkLCBhbmQgYXNrZWQgd2hldGhlciBTaW1vbiwgd2hpY2ggd2FzIHN1cm5hbWVkIFBldGVyLCB3ZXJlIGxvZGdlZCB0aGVyZS4KV2hpbGUgUGV0ZXIgdGhvdWdodCBvbiB0aGUgdmlzaW9uLCB0aGUgU3Bpcml0IHNhaWQgdW50byBoaW0sIEJlaG9sZCwgdGhyZWUgbWVuIHNlZWsgdGhlZS4KQXJpc2UgdGhlcmVmb3JlLCBhbmQgZ2V0IHRoZWUgZG93biwgYW5kIGdvIHdpdGggdGhlbSwgZG91YnRpbmcgbm90aGluZzogZm9yIEkgaGF2ZSBzZW50IHRoZW0uClRoZW4gUGV0ZXIgd2VudCBkb3duIHRvIHRoZSBtZW4gd2hpY2ggd2VyZSBzZW50IHVudG8gaGltIGZyb20gQ29ybmVsaXVzOyBhbmQgc2FpZCwgQmVob2xkLCBJIGFtIGhlIHdob20geWUgc2Vlazogd2hhdCBpcyB0aGUgY2F1c2Ugd2hlcmVmb3JlIHllIGFyZSBjb21lPwpBbmQgdGhleSBzYWlkLCBDb3JuZWxpdXMgdGhlIGNlbnR1cmlvbiwgYSBqdXN0IG1hbiwgYW5kIG9uZSB0aGF0IGZlYXJldGggR29kLCBhbmQgb2YgZ29vZCByZXBvcnQgYW1vbmcgYWxsIHRoZSBuYXRpb24gb2YgdGhlIEpld3MsIHdhcyB3YXJuZWQgZnJvbSBHb2QgYnkgYW4gaG9seSBhbmdlbCB0byBzZW5kIGZvciB0aGVlIGludG8gaGlzIGhvdXNlLCBhbmQgdG8gaGVhciB3b3JkcyBvZiB0aGVlLgpUaGVuIGNhbGxlZCBoZSB0aGVtIGluLCBhbmQgbG9kZ2VkIHRoZW0uIEFuZCBvbiB0aGUgbW9ycm93IFBldGVyIHdlbnQgYXdheSB3aXRoIHRoZW0sIGFuZCBjZXJ0YWluIGJyZXRocmVuIGZyb20gSm9wcGEgYWNjb21wYW5pZWQgaGltLgpBbmQgdGhlIG1vcnJvdyBhZnRlciB0aGV5IGVudGVyZWQgaW50byBDYWVzYXJlYS4gQW5kIENvcm5lbGl1cyB3YWl0ZWQgZm9yIHRoZW0sIGFuZCBoZSBoYWQgY2FsbGVkIHRvZ2V0aGVyIGhpcyBraW5zbWVuIGFuZCBuZWFyIGZyaWVuZHMuCkFuZCBhcyBQZXRlciB3YXMgY29taW5nIGluLCBDb3JuZWxpdXMgbWV0IGhpbSwgYW5kIGZlbGwgZG93biBhdCBoaXMgZmVldCwgYW5kIHdvcnNoaXBwZWQgaGltLgpCdXQgUGV0ZXIgdG9vayBoaW0gdXAsIHNheWluZywgU3RhbmQgdXA7IEkgbXlzZWxmIGFsc28gYW0gYSBtYW4uCkFuZCBhcyBoZSB0YWxrZWQgd2l0aCBoaW0sIGhlIHdlbnQgaW4sIGFuZCBmb3VuZCBtYW55IHRoYXQgd2VyZSBjb21lIHRvZ2V0aGVyLgpBbmQgaGUgc2FpZCB1bnRvIHRoZW0sIFllIGtub3cgaG93IHRoYXQgaXQgaXMgYW4gdW5sYXdmdWwgdGhpbmcgZm9yIGEgbWFuIHRoYXQgaXMgYSBKZXcgdG8ga2VlcCBjb21wYW55LCBvciBjb21lIHVudG8gb25lIG9mIGFub3RoZXIgbmF0aW9uOyBidXQgR29kIGhhdGggc2hld2VkIG1lIHRoYXQgSSBzaG91bGQgbm90IGNhbGwgYW55IG1hbiBjb21tb24gb3IgdW5jbGVhbi4KVGhlcmVmb3JlIGNhbWUgSSB1bnRvIHlvdSB3aXRob3V0IGdhaW5zYXlpbmcsIGFzIHNvb24gYXMgSSB3YXMgc2VudCBmb3I6IEkgYXNrIHRoZXJlZm9yZSBmb3Igd2hhdCBpbnRlbnQgeWUgaGF2ZSBzZW50IGZvciBtZT8KQW5kIENvcm5lbGl1cyBzYWlkLCBGb3VyIGRheXMgYWdvIEkgd2FzIGZhc3RpbmcgdW50aWwgdGhpcyBob3VyOyBhbmQgYXQgdGhlIG5pbnRoIGhvdXIgSSBwcmF5ZWQgaW4gbXkgaG91c2UsIGFuZCwgYmVob2xkLCBhIG1hbiBzdG9vZCBiZWZvcmUgbWUgaW4gYnJpZ2h0IGNsb3RoaW5nLApBbmQgc2FpZCwgQ29ybmVsaXVzLCB0aHkgcHJheWVyIGlzIGhlYXJkLCBhbmQgdGhpbmUgYWxtcyBhcmUgaGFkIGluIHJlbWVtYnJhbmNlIGluIHRoZSBzaWdodCBvZiBHb2QuClNlbmQgdGhlcmVmb3JlIHRvIEpvcHBhLCBhbmQgY2FsbCBoaXRoZXIgU2ltb24sIHdob3NlIHN1cm5hbWUgaXMgUGV0ZXI7IGhlIGlzIGxvZGdlZCBpbiB0aGUgaG91c2Ugb2Ygb25lIFNpbW9uIGEgdGFubmVyIGJ5IHRoZSBzZWEgc2lkZTogd2hvLCB3aGVuIGhlIGNvbWV0aCwgc2hhbGwgc3BlYWsgdW50byB0aGVlLgpJbW1lZGlhdGVseSB0aGVyZWZvcmUgSSBzZW50IHRvIHRoZWU7IGFuZCB0aG91IGhhc3Qgd2VsbCBkb25lIHRoYXQgdGhvdSBhcnQgY29tZS4gTm93IHRoZXJlZm9yZSBhcmUgd2UgYWxsIGhlcmUgcHJlc2VudCBiZWZvcmUgR29kLCB0byBoZWFyIGFsbCB0aGluZ3MgdGhhdCBhcmUgY29tbWFuZGVkIHRoZWUgb2YgR29kLgpUaGVuIFBldGVyIG9wZW5lZCBoaXMgbW91dGgsIGFuZCBzYWlkLCBPZiBhIHRydXRoIEkgcGVyY2VpdmUgdGhhdCBHb2QgaXMgbm8gcmVzcGVjdGVyIG9mIHBlcnNvbnM6CkJ1dCBpbiBldmVyeSBuYXRpb24gaGUgdGhhdCBmZWFyZXRoIGhpbSwgYW5kIHdvcmtldGggcmlnaHRlb3VzbmVzcywgaXMgYWNjZXB0ZWQgd2l0aCBoaW0uClRoZSB3b3JkIHdoaWNoIEdvZCBzZW50IHVudG8gdGhlIGNoaWxkcmVuIG9mIElzcmFlbCwgcHJlYWNoaW5nIHBlYWNlIGJ5IEplc3VzIENocmlzdDogKGhlIGlzIExvcmQgb2YgYWxsOikKVGhhdCB3b3JkLCBJIHNheSwgeWUga25vdywgd2hpY2ggd2FzIHB1Ymxpc2hlZCB0aHJvdWdob3V0IGFsbCBKdWRhZWEsIGFuZCBiZWdhbiBmcm9tIEdhbGlsZWUsIGFmdGVyIHRoZSBiYXB0aXNtIHdoaWNoIEpvaG4gcHJlYWNoZWQ7CkhvdyBHb2QgYW5vaW50ZWQgSmVzdXMgb2YgTmF6YXJldGggd2l0aCB0aGUgSG9seSBHaG9zdCBhbmQgd2l0aCBwb3dlcjogd2hvIHdlbnQgYWJvdXQgZG9pbmcgZ29vZCwgYW5kIGhlYWxpbmcgYWxsIHRoYXQgd2VyZSBvcHByZXNzZWQgb2YgdGhlIGRldmlsOyBmb3IgR29kIHdhcyB3aXRoIGhpbS4KQW5kIHdlIGFyZSB3aXRuZXNzZXMgb2YgYWxsIHRoaW5ncyB3aGljaCBoZSBkaWQgYm90aCBpbiB0aGUgbGFuZCBvZiB0aGUgSmV3cywgYW5kIGluIEplcnVzYWxlbTsgd2hvbSB0aGV5IHNsZXcgYW5kIGhhbmdlZCBvbiBhIHRyZWU6CkhpbSBHb2QgcmFpc2VkIHVwIHRoZSB0aGlyZCBkYXksIGFuZCBzaGV3ZWQgaGltIG9wZW5seTsKTm90IHRvIGFsbCB0aGUgcGVvcGxlLCBidXQgdW50byB3aXRuZXNzZXMgY2hvc2VuIGJlZm9yZSBHb2QsIGV2ZW4gdG8gdXMsIHdobyBkaWQgZWF0IGFuZCBkcmluayB3aXRoIGhpbSBhZnRlciBoZSByb3NlIGZyb20gdGhlIGRlYWQuCkFuZCBoZSBjb21tYW5kZWQgdXMgdG8gcHJlYWNoIHVudG8gdGhlIHBlb3BsZSwgYW5kIHRvIHRlc3RpZnkgdGhhdCBpdCBpcyBoZSB3aGljaCB3YXMgb3JkYWluZWQgb2YgR29kIHRvIGJlIHRoZSBKdWRnZSBvZiBxdWljayBhbmQgZGVhZC4KVG8gaGltIGdpdmUgYWxsIHRoZSBwcm9waGV0cyB3aXRuZXNzLCB0aGF0IHRocm91Z2ggaGlzIG5hbWUgd2hvc29ldmVyIGJlbGlldmV0aCBpbiBoaW0gc2hhbGwgcmVjZWl2ZSByZW1pc3Npb24gb2Ygc2lucy4KV2hpbGUgUGV0ZXIgeWV0IHNwYWtlIHRoZXNlIHdvcmRzLCB0aGUgSG9seSBHaG9zdCBmZWxsIG9uIGFsbCB0aGVtIHdoaWNoIGhlYXJkIHRoZSB3b3JkLgpBbmQgdGhleSBvZiB0aGUgY2lyY3VtY2lzaW9uIHdoaWNoIGJlbGlldmVkIHdlcmUgYXN0b25pc2hlZCwgYXMgbWFueSBhcyBjYW1lIHdpdGggUGV0ZXIsIGJlY2F1c2UgdGhhdCBvbiB0aGUgR2VudGlsZXMgYWxzbyB3YXMgcG91cmVkIG91dCB0aGUgZ2lmdCBvZiB0aGUgSG9seSBHaG9zdC4KRm9yIHRoZXkgaGVhcmQgdGhlbSBzcGVhayB3aXRoIHRvbmd1ZXMsIGFuZCBtYWduaWZ5IEdvZC4gVGhlbiBhbnN3ZXJlZCBQZXRlciwKQ2FuIGFueSBtYW4gZm9yYmlkIHdhdGVyLCB0aGF0IHRoZXNlIHNob3VsZCBub3QgYmUgYmFwdGl6ZWQsIHdoaWNoIGhhdmUgcmVjZWl2ZWQgdGhlIEhvbHkgR2hvc3QgYXMgd2VsbCBhcyB3ZT8KQW5kIGhlIGNvbW1hbmRlZCB0aGVtIHRvIGJlIGJhcHRpemVkIGluIHRoZSBuYW1lIG9mIHRoZSBMb3JkLiBUaGVuIHByYXllZCB0aGV5IGhpbSB0byB0YXJyeSBjZXJ0YWluIGRheXMuCkFuZCB0aGUgYXBvc3RsZXMgYW5kIGJyZXRocmVuIHRoYXQgd2VyZSBpbiBKdWRhZWEgaGVhcmQgdGhhdCB0aGUgR2VudGlsZXMgaGFkIGFsc28gcmVjZWl2ZWQgdGhlIHdvcmQgb2YgR29kLgpBbmQgd2hlbiBQZXRlciB3YXMgY29tZSB1cCB0byBKZXJ1c2FsZW0sIHRoZXkgdGhhdCB3ZXJlIG9mIHRoZSBjaXJjdW1jaXNpb24gY29udGVuZGVkIHdpdGggaGltLApTYXlpbmcsIFRob3Ugd2VudGVzdCBpbiB0byBtZW4gdW5jaXJjdW1jaXNlZCwgYW5kIGRpZHN0IGVhdCB3aXRoIHRoZW0uCkJ1dCBQZXRlciByZWhlYXJzZWQgdGhlIG1hdHRlciBmcm9tIHRoZSBiZWdpbm5pbmcsIGFuZCBleHBvdW5kZWQgaXQgYnkgb3JkZXIgdW50byB0aGVtLCBzYXlpbmcsCkkgd2FzIGluIHRoZSBjaXR5IG9mIEpvcHBhIHByYXlpbmc6IGFuZCBpbiBhIHRyYW5jZSBJIHNhdyBhIHZpc2lvbiwgQSBjZXJ0YWluIHZlc3NlbCBkZXNjZW5kLCBhcyBpdCBoYWQgYmVlbiBhIGdyZWF0IHNoZWV0LCBsZXQgZG93biBmcm9tIGhlYXZlbiBieSBmb3VyIGNvcm5lcnM7IGFuZCBpdCBjYW1lIGV2ZW4gdG8gbWU6ClVwb24gdGhlIHdoaWNoIHdoZW4gSSBoYWQgZmFzdGVuZWQgbWluZSBleWVzLCBJIGNvbnNpZGVyZWQsIGFuZCBzYXcgZm91cmZvb3RlZCBiZWFzdHMgb2YgdGhlIGVhcnRoLCBhbmQgd2lsZCBiZWFzdHMsIGFuZCBjcmVlcGluZyB0aGluZ3MsIGFuZCBmb3dscyBvZiB0aGUgYWlyLgpBbmQgSSBoZWFyZCBhIHZvaWNlIHNheWluZyB1bnRvIG1lLCBBcmlzZSwgUGV0ZXI7IHNsYXkgYW5kIGVhdC4KQnV0IEkgc2FpZCwgTm90IHNvLCBMb3JkOiBmb3Igbm90aGluZyBjb21tb24gb3IgdW5jbGVhbiBoYXRoIGF0IGFueSB0aW1lIGVudGVyZWQgaW50byBteSBtb3V0aC4KQnV0IHRoZSB2b2ljZSBhbnN3ZXJlZCBtZSBhZ2FpbiBmcm9tIGhlYXZlbiwgV2hhdCBHb2QgaGF0aCBjbGVhbnNlZCwgdGhhdCBjYWxsIG5vdCB0aG91IGNvbW1vbi4KQW5kIHRoaXMgd2FzIGRvbmUgdGhyZWUgdGltZXM6IGFuZCBhbGwgd2VyZSBkcmF3biB1cCBhZ2FpbiBpbnRvIGhlYXZlbi4KQW5kLCBiZWhvbGQsIGltbWVkaWF0ZWx5IHRoZXJlIHdlcmUgdGhyZWUgbWVuIGFscmVhZHkgY29tZSB1bnRvIHRoZSBob3VzZSB3aGVyZSBJIHdhcywgc2VudCBmcm9tIENhZXNhcmVhIHVudG8gbWUuCkFuZCB0aGUgU3Bpcml0IGJhZGUgbWUgZ28gd2l0aCB0aGVtLCBub3RoaW5nIGRvdWJ0aW5nLiBNb3Jlb3ZlciB0aGVzZSBzaXggYnJldGhyZW4gYWNjb21wYW5pZWQgbWUsIGFuZCB3ZSBlbnRlcmVkIGludG8gdGhlIG1hbidzIGhvdXNlOgpBbmQgaGUgc2hld2VkIHVzIGhvdyBoZSBoYWQgc2VlbiBhbiBhbmdlbCBpbiBoaXMgaG91c2UsIHdoaWNoIHN0b29kIGFuZCBzYWlkIHVudG8gaGltLCBTZW5kIG1lbiB0byBKb3BwYSwgYW5kIGNhbGwgZm9yIFNpbW9uLCB3aG9zZSBzdXJuYW1lIGlzIFBldGVyOwpXaG8gc2hhbGwgdGVsbCB0aGVlIHdvcmRzLCB3aGVyZWJ5IHRob3UgYW5kIGFsbCB0aHkgaG91c2Ugc2hhbGwgYmUgc2F2ZWQuCkFuZCBhcyBJIGJlZ2FuIHRvIHNwZWFrLCB0aGUgSG9seSBHaG9zdCBmZWxsIG9uIHRoZW0sIGFzIG9uIHVzIGF0IHRoZSBiZWdpbm5pbmcuClRoZW4gcmVtZW1iZXJlZCBJIHRoZSB3b3JkIG9mIHRoZSBMb3JkLCBob3cgdGhhdCBoZSBzYWlkLCBKb2huIGluZGVlZCBiYXB0aXplZCB3aXRoIHdhdGVyOyBidXQgeWUgc2hhbGwgYmUgYmFwdGl6ZWQgd2l0aCB0aGUgSG9seSBHaG9zdC4KRm9yYXNtdWNoIHRoZW4gYXMgR29kIGdhdmUgdGhlbSB0aGUgbGlrZSBnaWZ0IGFzIGhlIGRpZCB1bnRvIHVzLCB3aG8gYmVsaWV2ZWQgb24gdGhlIExvcmQgSmVzdXMgQ2hyaXN0OyB3aGF0IHdhcyBJLCB0aGF0IEkgY291bGQgd2l0aHN0YW5kIEdvZD8KV2hlbiB0aGV5IGhlYXJkIHRoZXNlIHRoaW5ncywgdGhleSBoZWxkIHRoZWlyIHBlYWNlLCBhbmQgZ2xvcmlmaWVkIEdvZCwgc2F5aW5nLCBUaGVuIGhhdGggR29kIGFsc28gdG8gdGhlIEdlbnRpbGVzIGdyYW50ZWQgcmVwZW50YW5jZSB1bnRvIGxpZmUuCk5vdyB0aGV5IHdoaWNoIHdlcmUgc2NhdHRlcmVkIGFicm9hZCB1cG9uIHRoZSBwZXJzZWN1dGlvbiB0aGF0IGFyb3NlIGFib3V0IFN0ZXBoZW4gdHJhdmVsbGVkIGFzIGZhciBhcyBQaGVuaWNlLCBhbmQgQ3lwcnVzLCBhbmQgQW50aW9jaCwgcHJlYWNoaW5nIHRoZSB3b3JkIHRvIG5vbmUgYnV0IHVudG8gdGhlIEpld3Mgb25seS4KQW5kIHNvbWUgb2YgdGhlbSB3ZXJlIG1lbiBvZiBDeXBydXMgYW5kIEN5cmVuZSwgd2hpY2gsIHdoZW4gdGhleSB3ZXJlIGNvbWUgdG8gQW50aW9jaCwgc3Bha2UgdW50byB0aGUgR3JlY2lhbnMsIHByZWFjaGluZyB0aGUgTE9SRCBKZXN1cy4KQW5kIHRoZSBoYW5kIG9mIHRoZSBMb3JkIHdhcyB3aXRoIHRoZW06IGFuZCBhIGdyZWF0IG51bWJlciBiZWxpZXZlZCwgYW5kIHR1cm5lZCB1bnRvIHRoZSBMb3JkLgpUaGVuIHRpZGluZ3Mgb2YgdGhlc2UgdGhpbmdzIGNhbWUgdW50byB0aGUgZWFycyBvZiB0aGUgY2h1cmNoIHdoaWNoIHdhcyBpbiBKZXJ1c2FsZW06IGFuZCB0aGV5IHNlbnQgZm9ydGggQmFybmFiYXMsIHRoYXQgaGUgc2hvdWxkIGdvIGFzIGZhciBhcyBBbnRpb2NoLgpXaG8sIHdoZW4gaGUgY2FtZSwgYW5kIGhhZCBzZWVuIHRoZSBncmFjZSBvZiBHb2QsIHdhcyBnbGFkLCBhbmQgZXhob3J0ZWQgdGhlbSBhbGwsIHRoYXQgd2l0aCBwdXJwb3NlIG9mIGhlYXJ0IHRoZXkgd291bGQgY2xlYXZlIHVudG8gdGhlIExvcmQuCkZvciBoZSB3YXMgYSBnb29kIG1hbiwgYW5kIGZ1bGwgb2YgdGhlIEhvbHkgR2hvc3QgYW5kIG9mIGZhaXRoOiBhbmQgbXVjaCBwZW9wbGUgd2FzIGFkZGVkIHVudG8gdGhlIExvcmQuClRoZW4gZGVwYXJ0ZWQgQmFybmFiYXMgdG8gVGFyc3VzLCBmb3IgdG8gc2VlayBTYXVsOgpBbmQgd2hlbiBoZSBoYWQgZm91bmQgaGltLCBoZSBicm91Z2h0IGhpbSB1bnRvIEFudGlvY2guIEFuZCBpdCBjYW1lIHRvIHBhc3MsIHRoYXQgYSB3aG9sZSB5ZWFyIHRoZXkgYXNzZW1ibGVkIHRoZW1zZWx2ZXMgd2l0aCB0aGUgY2h1cmNoLCBhbmQgdGF1Z2h0IG11Y2ggcGVvcGxlLiBBbmQgdGhlIGRpc2NpcGxlcyB3ZXJlIGNhbGxlZCBDaHJpc3RpYW5zIGZpcnN0IGluIEFudGlvY2guCkFuZCBpbiB0aGVzZSBkYXlzIGNhbWUgcHJvcGhldHMgZnJvbSBKZXJ1c2FsZW0gdW50byBBbnRpb2NoLgpBbmQgdGhlcmUgc3Rvb2QgdXAgb25lIG9mIHRoZW0gbmFtZWQgQWdhYnVzLCBhbmQgc2lnbmlmaWVkIGJ5IHRoZSBTcGlyaXQgdGhhdCB0aGVyZSBzaG91bGQgYmUgZ3JlYXQgZGVhcnRoIHRocm91Z2hvdXQgYWxsIHRoZSB3b3JsZDogd2hpY2ggY2FtZSB0byBwYXNzIGluIHRoZSBkYXlzIG9mIENsYXVkaXVzIENhZXNhci4KVGhlbiB0aGUgZGlzY2lwbGVzLCBldmVyeSBtYW4gYWNjb3JkaW5nIHRvIGhpcyBhYmlsaXR5LCBkZXRlcm1pbmVkIHRvIHNlbmQgcmVsaWVmIHVudG8gdGhlIGJyZXRocmVuIHdoaWNoIGR3ZWx0IGluIEp1ZGFlYToKV2hpY2ggYWxzbyB0aGV5IGRpZCwgYW5kIHNlbnQgaXQgdG8gdGhlIGVsZGVycyBieSB0aGUgaGFuZHMgb2YgQmFybmFiYXMgYW5kIFNhdWwuCk5vdyBhYm91dCB0aGF0IHRpbWUgSGVyb2QgdGhlIGtpbmcgc3RyZXRjaGVkIGZvcnRoIGhpcyBoYW5kcyB0byB2ZXggY2VydGFpbiBvZiB0aGUgY2h1cmNoLgpBbmQgaGUga2lsbGVkIEphbWVzIHRoZSBicm90aGVyIG9mIEpvaG4gd2l0aCB0aGUgc3dvcmQuCkFuZCBiZWNhdXNlIGhlIHNhdyBpdCBwbGVhc2VkIHRoZSBKZXdzLCBoZSBwcm9jZWVkZWQgZnVydGhlciB0byB0YWtlIFBldGVyIGFsc28uIChUaGVuIHdlcmUgdGhlIGRheXMgb2YgdW5sZWF2ZW5lZCBicmVhZC4pCkFuZCB3aGVuIGhlIGhhZCBhcHByZWhlbmRlZCBoaW0sIGhlIHB1dCBoaW0gaW4gcHJpc29uLCBhbmQgZGVsaXZlcmVkIGhpbSB0byBmb3VyIHF1YXRlcm5pb25zIG9mIHNvbGRpZXJzIHRvIGtlZXAgaGltOyBpbnRlbmRpbmcgYWZ0ZXIgRWFzdGVyIHRvIGJyaW5nIGhpbSBmb3J0aCB0byB0aGUgcGVvcGxlLgpQZXRlciB0aGVyZWZvcmUgd2FzIGtlcHQgaW4gcHJpc29uOiBidXQgcHJheWVyIHdhcyBtYWRlIHdpdGhvdXQgY2Vhc2luZyBvZiB0aGUgY2h1cmNoIHVudG8gR29kIGZvciBoaW0uCkFuZCB3aGVuIEhlcm9kIHdvdWxkIGhhdmUgYnJvdWdodCBoaW0gZm9ydGgsIHRoZSBzYW1lIG5pZ2h0IFBldGVyIHdhcyBzbGVlcGluZyBiZXR3ZWVuIHR3byBzb2xkaWVycywgYm91bmQgd2l0aCB0d28gY2hhaW5zOiBhbmQgdGhlIGtlZXBlcnMgYmVmb3JlIHRoZSBkb29yIGtlcHQgdGhlIHByaXNvbi4KQW5kLCBiZWhvbGQsIHRoZSBhbmdlbCBvZiB0aGUgTG9yZCBjYW1lIHVwb24gaGltLCBhbmQgYSBsaWdodCBzaGluZWQgaW4gdGhlIHByaXNvbjogYW5kIGhlIHNtb3RlIFBldGVyIG9uIHRoZSBzaWRlLCBhbmQgcmFpc2VkIGhpbSB1cCwgc2F5aW5nLCBBcmlzZSB1cCBxdWlja2x5LiBBbmQgaGlzIGNoYWlucyBmZWxsIG9mZiBmcm9tIGhpcyBoYW5kcy4KQW5kIHRoZSBhbmdlbCBzYWlkIHVudG8gaGltLCBHaXJkIHRoeXNlbGYsIGFuZCBiaW5kIG9uIHRoeSBzYW5kYWxzLiBBbmQgc28gaGUgZGlkLiBBbmQgaGUgc2FpdGggdW50byBoaW0sIENhc3QgdGh5IGdhcm1lbnQgYWJvdXQgdGhlZSwgYW5kIGZvbGxvdyBtZS4KQW5kIGhlIHdlbnQgb3V0LCBhbmQgZm9sbG93ZWQgaGltOyBhbmQgd2lzdCBub3QgdGhhdCBpdCB3YXMgdHJ1ZSB3aGljaCB3YXMgZG9uZSBieSB0aGUgYW5nZWw7IGJ1dCB0aG91Z2h0IGhlIHNhdyBhIHZpc2lvbi4KV2hlbiB0aGV5IHdlcmUgcGFzdCB0aGUgZmlyc3QgYW5kIHRoZSBzZWNvbmQgd2FyZCwgdGhleSBjYW1lIHVudG8gdGhlIGlyb24gZ2F0ZSB0aGF0IGxlYWRldGggdW50byB0aGUgY2l0eTsgd2hpY2ggb3BlbmVkIHRvIHRoZW0gb2YgaGlzIG93biBhY2NvcmQ6IGFuZCB0aGV5IHdlbnQgb3V0LCBhbmQgcGFzc2VkIG9uIHRocm91Z2ggb25lIHN0cmVldDsgYW5kIGZvcnRod2l0aCB0aGUgYW5nZWwgZGVwYXJ0ZWQgZnJvbSBoaW0uCkFuZCB3aGVuIFBldGVyIHdhcyBjb21lIHRvIGhpbXNlbGYsIGhlIHNhaWQsIE5vdyBJIGtub3cgb2YgYSBzdXJldHksIHRoYXQgdGhlIExPUkQgaGF0aCBzZW50IGhpcyBhbmdlbCwgYW5kIGhhdGggZGVsaXZlcmVkIG1lIG91dCBvZiB0aGUgaGFuZCBvZiBIZXJvZCwgYW5kIGZyb20gYWxsIHRoZSBleHBlY3RhdGlvbiBvZiB0aGUgcGVvcGxlIG9mIHRoZSBKZXdzLgpBbmQgd2hlbiBoZSBoYWQgY29uc2lkZXJlZCB0aGUgdGhpbmcsIGhlIGNhbWUgdG8gdGhlIGhvdXNlIG9mIE1hcnkgdGhlIG1vdGhlciBvZiBKb2huLCB3aG9zZSBzdXJuYW1lIHdhcyBNYXJrOyB3aGVyZSBtYW55IHdlcmUgZ2F0aGVyZWQgdG9nZXRoZXIgcHJheWluZy4KQW5kIGFzIFBldGVyIGtub2NrZWQgYXQgdGhlIGRvb3Igb2YgdGhlIGdhdGUsIGEgZGFtc2VsIGNhbWUgdG8gaGVhcmtlbiwgbmFtZWQgUmhvZGEuCkFuZCB3aGVuIHNoZSBrbmV3IFBldGVyJ3Mgdm9pY2UsIHNoZSBvcGVuZWQgbm90IHRoZSBnYXRlIGZvciBnbGFkbmVzcywgYnV0IHJhbiBpbiwgYW5kIHRvbGQgaG93IFBldGVyIHN0b29kIGJlZm9yZSB0aGUgZ2F0ZS4KQW5kIHRoZXkgc2FpZCB1bnRvIGhlciwgVGhvdSBhcnQgbWFkLiBCdXQgc2hlIGNvbnN0YW50bHkgYWZmaXJtZWQgdGhhdCBpdCB3YXMgZXZlbiBzby4gVGhlbiBzYWlkIHRoZXksIEl0IGlzIGhpcyBhbmdlbC4KQnV0IFBldGVyIGNvbnRpbnVlZCBrbm9ja2luZzogYW5kIHdoZW4gdGhleSBoYWQgb3BlbmVkIHRoZSBkb29yLCBhbmQgc2F3IGhpbSwgdGhleSB3ZXJlIGFzdG9uaXNoZWQuCkJ1dCBoZSwgYmVja29uaW5nIHVudG8gdGhlbSB3aXRoIHRoZSBoYW5kIHRvIGhvbGQgdGhlaXIgcGVhY2UsIGRlY2xhcmVkIHVudG8gdGhlbSBob3cgdGhlIExvcmQgaGFkIGJyb3VnaHQgaGltIG91dCBvZiB0aGUgcHJpc29uLiBBbmQgaGUgc2FpZCwgR28gc2hldyB0aGVzZSB0aGluZ3MgdW50byBKYW1lcywgYW5kIHRvIHRoZSBicmV0aHJlbi4gQW5kIGhlIGRlcGFydGVkLCBhbmQgd2VudCBpbnRvIGFub3RoZXIgcGxhY2UuCk5vdyBhcyBzb29uIGFzIGl0IHdhcyBkYXksIHRoZXJlIHdhcyBubyBzbWFsbCBzdGlyIGFtb25nIHRoZSBzb2xkaWVycywgd2hhdCB3YXMgYmVjb21lIG9mIFBldGVyLgpBbmQgd2hlbiBIZXJvZCBoYWQgc291Z2h0IGZvciBoaW0sIGFuZCBmb3VuZCBoaW0gbm90LCBoZSBleGFtaW5lZCB0aGUga2VlcGVycywgYW5kIGNvbW1hbmRlZCB0aGF0IHRoZXkgc2hvdWxkIGJlIHB1dCB0byBkZWF0aC4gQW5kIGhlIHdlbnQgZG93biBmcm9tIEp1ZGFlYSB0byBDYWVzYXJlYSwgYW5kIHRoZXJlIGFib2RlLgpBbmQgSGVyb2Qgd2FzIGhpZ2hseSBkaXNwbGVhc2VkIHdpdGggdGhlbSBvZiBUeXJlIGFuZCBTaWRvbjogYnV0IHRoZXkgY2FtZSB3aXRoIG9uZSBhY2NvcmQgdG8gaGltLCBhbmQsIGhhdmluZyBtYWRlIEJsYXN0dXMgdGhlIGtpbmcncyBjaGFtYmVybGFpbiB0aGVpciBmcmllbmQsIGRlc2lyZWQgcGVhY2U7IGJlY2F1c2UgdGhlaXIgY291bnRyeSB3YXMgbm91cmlzaGVkIGJ5IHRoZSBraW5nJ3MgY291bnRyeS4KQW5kIHVwb24gYSBzZXQgZGF5IEhlcm9kLCBhcnJheWVkIGluIHJveWFsIGFwcGFyZWwsIHNhdCB1cG9uIGhpcyB0aHJvbmUsIGFuZCBtYWRlIGFuIG9yYXRpb24gdW50byB0aGVtLgpBbmQgdGhlIHBlb3BsZSBnYXZlIGEgc2hvdXQsIHNheWluZywgSXQgaXMgdGhlIHZvaWNlIG9mIGEgZ29kLCBhbmQgbm90IG9mIGEgbWFuLgpBbmQgaW1tZWRpYXRlbHkgdGhlIGFuZ2VsIG9mIHRoZSBMb3JkIHNtb3RlIGhpbSwgYmVjYXVzZSBoZSBnYXZlIG5vdCBHb2QgdGhlIGdsb3J5OiBhbmQgaGUgd2FzIGVhdGVuIG9mIHdvcm1zLCBhbmQgZ2F2ZSB1cCB0aGUgZ2hvc3QuCkJ1dCB0aGUgd29yZCBvZiBHb2QgZ3JldyBhbmQgbXVsdGlwbGllZC4KQW5kIEJhcm5hYmFzIGFuZCBTYXVsIHJldHVybmVkIGZyb20gSmVydXNhbGVtLCB3aGVuIHRoZXkgaGFkIGZ1bGZpbGxlZCB0aGVpciBtaW5pc3RyeSwgYW5kIHRvb2sgd2l0aCB0aGVtIEpvaG4sIHdob3NlIHN1cm5hbWUgd2FzIE1hcmsuCk5vdyB0aGVyZSB3ZXJlIGluIHRoZSBjaHVyY2ggdGhhdCB3YXMgYXQgQW50aW9jaCBjZXJ0YWluIHByb3BoZXRzIGFuZCB0ZWFjaGVyczsgYXMgQmFybmFiYXMsIGFuZCBTaW1lb24gdGhhdCB3YXMgY2FsbGVkIE5pZ2VyLCBhbmQgTHVjaXVzIG9mIEN5cmVuZSwgYW5kIE1hbmFlbiwgd2hpY2ggaGFkIGJlZW4gYnJvdWdodCB1cCB3aXRoIEhlcm9kIHRoZSB0ZXRyYXJjaCwgYW5kIFNhdWwuCkFzIHRoZXkgbWluaXN0ZXJlZCB0byB0aGUgTG9yZCwgYW5kIGZhc3RlZCwgdGhlIEhvbHkgR2hvc3Qgc2FpZCwgU2VwYXJhdGUgbWUgQmFybmFiYXMgYW5kIFNhdWwgZm9yIHRoZSB3b3JrIHdoZXJldW50byBJIGhhdmUgY2FsbGVkIHRoZW0uCkFuZCB3aGVuIHRoZXkgaGFkIGZhc3RlZCBhbmQgcHJheWVkLCBhbmQgbGFpZCB0aGVpciBoYW5kcyBvbiB0aGVtLCB0aGV5IHNlbnQgdGhlbSBhd2F5LgpTbyB0aGV5LCBiZWluZyBzZW50IGZvcnRoIGJ5IHRoZSBIb2x5IEdob3N0LCBkZXBhcnRlZCB1bnRvIFNlbGV1Y2lhOyBhbmQgZnJvbSB0aGVuY2UgdGhleSBzYWlsZWQgdG8gQ3lwcnVzLgpBbmQgd2hlbiB0aGV5IHdlcmUgYXQgU2FsYW1pcywgdGhleSBwcmVhY2hlZCB0aGUgd29yZCBvZiBHb2QgaW4gdGhlIHN5bmFnb2d1ZXMgb2YgdGhlIEpld3M6IGFuZCB0aGV5IGhhZCBhbHNvIEpvaG4gdG8gdGhlaXIgbWluaXN0ZXIuCkFuZCB3aGVuIHRoZXkgaGFkIGdvbmUgdGhyb3VnaCB0aGUgaXNsZSB1bnRvIFBhcGhvcywgdGhleSBmb3VuZCBhIGNlcnRhaW4gc29yY2VyZXIsIGEgZmFsc2UgcHJvcGhldCwgYSBKZXcsIHdob3NlIG5hbWUgd2FzIEJhcmplc3VzOgpXaGljaCB3YXMgd2l0aCB0aGUgZGVwdXR5IG9mIHRoZSBjb3VudHJ5LCBTZXJnaXVzIFBhdWx1cywgYSBwcnVkZW50IG1hbjsgd2hvIGNhbGxlZCBmb3IgQmFybmFiYXMgYW5kIFNhdWwsIGFuZCBkZXNpcmVkIHRvIGhlYXIgdGhlIHdvcmQgb2YgR29kLgpCdXQgRWx5bWFzIHRoZSBzb3JjZXJlciAoZm9yIHNvIGlzIGhpcyBuYW1lIGJ5IGludGVycHJldGF0aW9uKSB3aXRoc3Rvb2QgdGhlbSwgc2Vla2luZyB0byB0dXJuIGF3YXkgdGhlIGRlcHV0eSBmcm9tIHRoZSBmYWl0aC4KVGhlbiBTYXVsLCAod2hvIGFsc28gaXMgY2FsbGVkIFBhdWwsKSBmaWxsZWQgd2l0aCB0aGUgSG9seSBHaG9zdCwgc2V0IGhpcyBleWVzIG9uIGhpbS4KQW5kIHNhaWQsIE8gZnVsbCBvZiBhbGwgc3VidGlsdHkgYW5kIGFsbCBtaXNjaGllZiwgdGhvdSBjaGlsZCBvZiB0aGUgZGV2aWwsIHRob3UgZW5lbXkgb2YgYWxsIHJpZ2h0ZW91c25lc3MsIHdpbHQgdGhvdSBub3QgY2Vhc2UgdG8gcGVydmVydCB0aGUgcmlnaHQgd2F5cyBvZiB0aGUgTG9yZD8KQW5kIG5vdywgYmVob2xkLCB0aGUgaGFuZCBvZiB0aGUgTG9yZCBpcyB1cG9uIHRoZWUsIGFuZCB0aG91IHNoYWx0IGJlIGJsaW5kLCBub3Qgc2VlaW5nIHRoZSBzdW4gZm9yIGEgc2Vhc29uLiBBbmQgaW1tZWRpYXRlbHkgdGhlcmUgZmVsbCBvbiBoaW0gYSBtaXN0IGFuZCBhIGRhcmtuZXNzOyBhbmQgaGUgd2VudCBhYm91dCBzZWVraW5nIHNvbWUgdG8gbGVhZCBoaW0gYnkgdGhlIGhhbmQuClRoZW4gdGhlIGRlcHV0eSwgd2hlbiBoZSBzYXcgd2hhdCB3YXMgZG9uZSwgYmVsaWV2ZWQsIGJlaW5nIGFzdG9uaXNoZWQgYXQgdGhlIGRvY3RyaW5lIG9mIHRoZSBMb3JkLgpOb3cgd2hlbiBQYXVsIGFuZCBoaXMgY29tcGFueSBsb29zZWQgZnJvbSBQYXBob3MsIHRoZXkgY2FtZSB0byBQZXJnYSBpbiBQYW1waHlsaWE6IGFuZCBKb2huIGRlcGFydGluZyBmcm9tIHRoZW0gcmV0dXJuZWQgdG8gSmVydXNhbGVtLgpCdXQgd2hlbiB0aGV5IGRlcGFydGVkIGZyb20gUGVyZ2EsIHRoZXkgY2FtZSB0byBBbnRpb2NoIGluIFBpc2lkaWEsIGFuZCB3ZW50IGludG8gdGhlIHN5bmFnb2d1ZSBvbiB0aGUgc2FiYmF0aCBkYXksIGFuZCBzYXQgZG93bi4KQW5kIGFmdGVyIHRoZSByZWFkaW5nIG9mIHRoZSBsYXcgYW5kIHRoZSBwcm9waGV0cyB0aGUgcnVsZXJzIG9mIHRoZSBzeW5hZ29ndWUgc2VudCB1bnRvIHRoZW0sIHNheWluZywgWWUgbWVuIGFuZCBicmV0aHJlbiwgaWYgeWUgaGF2ZSBhbnkgd29yZCBvZiBleGhvcnRhdGlvbiBmb3IgdGhlIHBlb3BsZSwgc2F5IG9uLgpUaGVuIFBhdWwgc3Rvb2QgdXAsIGFuZCBiZWNrb25pbmcgd2l0aCBoaXMgaGFuZCBzYWlkLCBNZW4gb2YgSXNyYWVsLCBhbmQgeWUgdGhhdCBmZWFyIEdvZCwgZ2l2ZSBhdWRpZW5jZS4KVGhlIEdvZCBvZiB0aGlzIHBlb3BsZSBvZiBJc3JhZWwgY2hvc2Ugb3VyIGZhdGhlcnMsIGFuZCBleGFsdGVkIHRoZSBwZW9wbGUgd2hlbiB0aGV5IGR3ZWx0IGFzIHN0cmFuZ2VycyBpbiB0aGUgbGFuZCBvZiBFZ3lwdCwgYW5kIHdpdGggYW4gaGlnaCBhcm0gYnJvdWdodCBoZSB0aGVtIG91dCBvZiBpdC4KQW5kIGFib3V0IHRoZSB0aW1lIG9mIGZvcnR5IHllYXJzIHN1ZmZlcmVkIGhlIHRoZWlyIG1hbm5lcnMgaW4gdGhlIHdpbGRlcm5lc3MuCkFuZCB3aGVuIGhlIGhhZCBkZXN0cm95ZWQgc2V2ZW4gbmF0aW9ucyBpbiB0aGUgbGFuZCBvZiBDaGFuYWFuLCBoZSBkaXZpZGVkIHRoZWlyIGxhbmQgdG8gdGhlbSBieSBsb3QuCkFuZCBhZnRlciB0aGF0IGhlIGdhdmUgdW50byB0aGVtIGp1ZGdlcyBhYm91dCB0aGUgc3BhY2Ugb2YgZm91ciBodW5kcmVkIGFuZCBmaWZ0eSB5ZWFycywgdW50aWwgU2FtdWVsIHRoZSBwcm9waGV0LgpBbmQgYWZ0ZXJ3YXJkIHRoZXkgZGVzaXJlZCBhIGtpbmc6IGFuZCBHb2QgZ2F2ZSB1bnRvIHRoZW0gU2F1bCB0aGUgc29uIG9mIENpcywgYSBtYW4gb2YgdGhlIHRyaWJlIG9mIEJlbmphbWluLCBieSB0aGUgc3BhY2Ugb2YgZm9ydHkgeWVhcnMuCkFuZCB3aGVuIGhlIGhhZCByZW1vdmVkIGhpbSwgaGUgcmFpc2VkIHVwIHVudG8gdGhlbSBEYXZpZCB0byBiZSB0aGVpciBraW5nOyB0byB3aG9tIGFsc28gaGUgZ2F2ZSB0aGVpciB0ZXN0aW1vbnksIGFuZCBzYWlkLCBJIGhhdmUgZm91bmQgRGF2aWQgdGhlIHNvbiBvZiBKZXNzZSwgYSBtYW4gYWZ0ZXIgbWluZSBvd24gaGVhcnQsIHdoaWNoIHNoYWxsIGZ1bGZpbCBhbGwgbXkgd2lsbC4KT2YgdGhpcyBtYW4ncyBzZWVkIGhhdGggR29kIGFjY29yZGluZyB0byBoaXMgcHJvbWlzZSByYWlzZWQgdW50byBJc3JhZWwgYSBTYXZpb3VyLCBKZXN1czoKV2hlbiBKb2huIGhhZCBmaXJzdCBwcmVhY2hlZCBiZWZvcmUgaGlzIGNvbWluZyB0aGUgYmFwdGlzbSBvZiByZXBlbnRhbmNlIHRvIGFsbCB0aGUgcGVvcGxlIG9mIElzcmFlbC4KQW5kIGFzIEpvaG4gZnVsZmlsbGVkIGhpcyBjb3Vyc2UsIGhlIHNhaWQsIFdob20gdGhpbmsgeWUgdGhhdCBJIGFtPyBJIGFtIG5vdCBoZS4gQnV0LCBiZWhvbGQsIHRoZXJlIGNvbWV0aCBvbmUgYWZ0ZXIgbWUsIHdob3NlIHNob2VzIG9mIGhpcyBmZWV0IEkgYW0gbm90IHdvcnRoeSB0byBsb29zZS4KTWVuIGFuZCBicmV0aHJlbiwgY2hpbGRyZW4gb2YgdGhlIHN0b2NrIG9mIEFicmFoYW0sIGFuZCB3aG9zb2V2ZXIgYW1vbmcgeW91IGZlYXJldGggR29kLCB0byB5b3UgaXMgdGhlIHdvcmQgb2YgdGhpcyBzYWx2YXRpb24gc2VudC4KRm9yIHRoZXkgdGhhdCBkd2VsbCBhdCBKZXJ1c2FsZW0sIGFuZCB0aGVpciBydWxlcnMsIGJlY2F1c2UgdGhleSBrbmV3IGhpbSBub3QsIG5vciB5ZXQgdGhlIHZvaWNlcyBvZiB0aGUgcHJvcGhldHMgd2hpY2ggYXJlIHJlYWQgZXZlcnkgc2FiYmF0aCBkYXksIHRoZXkgaGF2ZSBmdWxmaWxsZWQgdGhlbSBpbiBjb25kZW1uaW5nIGhpbS4KQW5kIHRob3VnaCB0aGV5IGZvdW5kIG5vIGNhdXNlIG9mIGRlYXRoIGluIGhpbSwgeWV0IGRlc2lyZWQgdGhleSBQaWxhdGUgdGhhdCBoZSBzaG91bGQgYmUgc2xhaW4uCkFuZCB3aGVuIHRoZXkgaGFkIGZ1bGZpbGxlZCBhbGwgdGhhdCB3YXMgd3JpdHRlbiBvZiBoaW0sIHRoZXkgdG9vayBoaW0gZG93biBmcm9tIHRoZSB0cmVlLCBhbmQgbGFpZCBoaW0gaW4gYSBzZXB1bGNocmUuCkJ1dCBHb2QgcmFpc2VkIGhpbSBmcm9tIHRoZSBkZWFkOgpBbmQgaGUgd2FzIHNlZW4gbWFueSBkYXlzIG9mIHRoZW0gd2hpY2ggY2FtZSB1cCB3aXRoIGhpbSBmcm9tIEdhbGlsZWUgdG8gSmVydXNhbGVtLCB3aG8gYXJlIGhpcyB3aXRuZXNzZXMgdW50byB0aGUgcGVvcGxlLgpBbmQgd2UgZGVjbGFyZSB1bnRvIHlvdSBnbGFkIHRpZGluZ3MsIGhvdyB0aGF0IHRoZSBwcm9taXNlIHdoaWNoIHdhcyBtYWRlIHVudG8gdGhlIGZhdGhlcnMsCkdvZCBoYXRoIGZ1bGZpbGxlZCB0aGUgc2FtZSB1bnRvIHVzIHRoZWlyIGNoaWxkcmVuLCBpbiB0aGF0IGhlIGhhdGggcmFpc2VkIHVwIEplc3VzIGFnYWluOyBhcyBpdCBpcyBhbHNvIHdyaXR0ZW4gaW4gdGhlIHNlY29uZCBwc2FsbSwgVGhvdSBhcnQgbXkgU29uLCB0aGlzIGRheSBoYXZlIEkgYmVnb3R0ZW4gdGhlZS4KQW5kIGFzIGNvbmNlcm5pbmcgdGhhdCBoZSByYWlzZWQgaGltIHVwIGZyb20gdGhlIGRlYWQsIG5vdyBubyBtb3JlIHRvIHJldHVybiB0byBjb3JydXB0aW9uLCBoZSBzYWlkIG9uIHRoaXMgd2lzZSwgSSB3aWxsIGdpdmUgeW91IHRoZSBzdXJlIG1lcmNpZXMgb2YgRGF2aWQuCldoZXJlZm9yZSBoZSBzYWl0aCBhbHNvIGluIGFub3RoZXIgcHNhbG0sIFRob3Ugc2hhbHQgbm90IHN1ZmZlciB0aGluZSBIb2x5IE9uZSB0byBzZWUgY29ycnVwdGlvbi4KRm9yIERhdmlkLCBhZnRlciBoZSBoYWQgc2VydmVkIGhpcyBvd24gZ2VuZXJhdGlvbiBieSB0aGUgd2lsbCBvZiBHb2QsIGZlbGwgb24gc2xlZXAsIGFuZCB3YXMgbGFpZCB1bnRvIGhpcyBmYXRoZXJzLCBhbmQgc2F3IGNvcnJ1cHRpb246CkJ1dCBoZSwgd2hvbSBHb2QgcmFpc2VkIGFnYWluLCBzYXcgbm8gY29ycnVwdGlvbi4KQmUgaXQga25vd24gdW50byB5b3UgdGhlcmVmb3JlLCBtZW4gYW5kIGJyZXRocmVuLCB0aGF0IHRocm91Z2ggdGhpcyBtYW4gaXMgcHJlYWNoZWQgdW50byB5b3UgdGhlIGZvcmdpdmVuZXNzIG9mIHNpbnM6CkFuZCBieSBoaW0gYWxsIHRoYXQgYmVsaWV2ZSBhcmUganVzdGlmaWVkIGZyb20gYWxsIHRoaW5ncywgZnJvbSB3aGljaCB5ZSBjb3VsZCBub3QgYmUganVzdGlmaWVkIGJ5IHRoZSBsYXcgb2YgTW9zZXMuCkJld2FyZSB0aGVyZWZvcmUsIGxlc3QgdGhhdCBjb21lIHVwb24geW91LCB3aGljaCBpcyBzcG9rZW4gb2YgaW4gdGhlIHByb3BoZXRzOwpCZWhvbGQsIHllIGRlc3Bpc2VycywgYW5kIHdvbmRlciwgYW5kIHBlcmlzaDogZm9yIEkgd29yayBhIHdvcmsgaW4geW91ciBkYXlzLCBhIHdvcmsgd2hpY2ggeWUgc2hhbGwgaW4gbm8gd2lzZSBiZWxpZXZlLCB0aG91Z2ggYSBtYW4gZGVjbGFyZSBpdCB1bnRvIHlvdS4KQW5kIHdoZW4gdGhlIEpld3Mgd2VyZSBnb25lIG91dCBvZiB0aGUgc3luYWdvZ3VlLCB0aGUgR2VudGlsZXMgYmVzb3VnaHQgdGhhdCB0aGVzZSB3b3JkcyBtaWdodCBiZSBwcmVhY2hlZCB0byB0aGVtIHRoZSBuZXh0IHNhYmJhdGguCk5vdyB3aGVuIHRoZSBjb25ncmVnYXRpb24gd2FzIGJyb2tlbiB1cCwgbWFueSBvZiB0aGUgSmV3cyBhbmQgcmVsaWdpb3VzIHByb3NlbHl0ZXMgZm9sbG93ZWQgUGF1bCBhbmQgQmFybmFiYXM6IHdobywgc3BlYWtpbmcgdG8gdGhlbSwgcGVyc3VhZGVkIHRoZW0gdG8gY29udGludWUgaW4gdGhlIGdyYWNlIG9mIEdvZC4KQW5kIHRoZSBuZXh0IHNhYmJhdGggZGF5IGNhbWUgYWxtb3N0IHRoZSB3aG9sZSBjaXR5IHRvZ2V0aGVyIHRvIGhlYXIgdGhlIHdvcmQgb2YgR29kLgpCdXQgd2hlbiB0aGUgSmV3cyBzYXcgdGhlIG11bHRpdHVkZXMsIHRoZXkgd2VyZSBmaWxsZWQgd2l0aCBlbnZ5LCBhbmQgc3Bha2UgYWdhaW5zdCB0aG9zZSB0aGluZ3Mgd2hpY2ggd2VyZSBzcG9rZW4gYnkgUGF1bCwgY29udHJhZGljdGluZyBhbmQgYmxhc3BoZW1pbmcuClRoZW4gUGF1bCBhbmQgQmFybmFiYXMgd2F4ZWQgYm9sZCwgYW5kIHNhaWQsIEl0IHdhcyBuZWNlc3NhcnkgdGhhdCB0aGUgd29yZCBvZiBHb2Qgc2hvdWxkIGZpcnN0IGhhdmUgYmVlbiBzcG9rZW4gdG8geW91OiBidXQgc2VlaW5nIHllIHB1dCBpdCBmcm9tIHlvdSwgYW5kIGp1ZGdlIHlvdXJzZWx2ZXMgdW53b3J0aHkgb2YgZXZlcmxhc3RpbmcgbGlmZSwgbG8sIHdlIHR1cm4gdG8gdGhlIEdlbnRpbGVzLgpGb3Igc28gaGF0aCB0aGUgTG9yZCBjb21tYW5kZWQgdXMsIHNheWluZywgSSBoYXZlIHNldCB0aGVlIHRvIGJlIGEgbGlnaHQgb2YgdGhlIEdlbnRpbGVzLCB0aGF0IHRob3Ugc2hvdWxkZXN0IGJlIGZvciBzYWx2YXRpb24gdW50byB0aGUgZW5kcyBvZiB0aGUgZWFydGguCkFuZCB3aGVuIHRoZSBHZW50aWxlcyBoZWFyZCB0aGlzLCB0aGV5IHdlcmUgZ2xhZCwgYW5kIGdsb3JpZmllZCB0aGUgd29yZCBvZiB0aGUgTG9yZDogYW5kIGFzIG1hbnkgYXMgd2VyZSBvcmRhaW5lZCB0byBldGVybmFsIGxpZmUgYmVsaWV2ZWQuCkFuZCB0aGUgd29yZCBvZiB0aGUgTG9yZCB3YXMgcHVibGlzaGVkIHRocm91Z2hvdXQgYWxsIHRoZSByZWdpb24uCkJ1dCB0aGUgSmV3cyBzdGlycmVkIHVwIHRoZSBkZXZvdXQgYW5kIGhvbm91cmFibGUgd29tZW4sIGFuZCB0aGUgY2hpZWYgbWVuIG9mIHRoZSBjaXR5LCBhbmQgcmFpc2VkIHBlcnNlY3V0aW9uIGFnYWluc3QgUGF1bCBhbmQgQmFybmFiYXMsIGFuZCBleHBlbGxlZCB0aGVtIG91dCBvZiB0aGVpciBjb2FzdHMuCkJ1dCB0aGV5IHNob29rIG9mZiB0aGUgZHVzdCBvZiB0aGVpciBmZWV0IGFnYWluc3QgdGhlbSwgYW5kIGNhbWUgdW50byBJY29uaXVtLgpBbmQgdGhlIGRpc2NpcGxlcyB3ZXJlIGZpbGxlZCB3aXRoIGpveSwgYW5kIHdpdGggdGhlIEhvbHkgR2hvc3QuCkFuZCBpdCBjYW1lIHRvIHBhc3MgaW4gSWNvbml1bSwgdGhhdCB0aGV5IHdlbnQgYm90aCB0b2dldGhlciBpbnRvIHRoZSBzeW5hZ29ndWUgb2YgdGhlIEpld3MsIGFuZCBzbyBzcGFrZSwgdGhhdCBhIGdyZWF0IG11bHRpdHVkZSBib3RoIG9mIHRoZSBKZXdzIGFuZCBhbHNvIG9mIHRoZSBHcmVla3MgYmVsaWV2ZWQuCkJ1dCB0aGUgdW5iZWxpZXZpbmcgSmV3cyBzdGlycmVkIHVwIHRoZSBHZW50aWxlcywgYW5kIG1hZGUgdGhlaXIgbWluZHMgZXZpbCBhZmZlY3RlZCBhZ2FpbnN0IHRoZSBicmV0aHJlbi4KTG9uZyB0aW1lIHRoZXJlZm9yZSBhYm9kZSB0aGV5IHNwZWFraW5nIGJvbGRseSBpbiB0aGUgTG9yZCwgd2hpY2ggZ2F2ZSB0ZXN0aW1vbnkgdW50byB0aGUgd29yZCBvZiBoaXMgZ3JhY2UsIGFuZCBncmFudGVkIHNpZ25zIGFuZCB3b25kZXJzIHRvIGJlIGRvbmUgYnkgdGhlaXIgaGFuZHMuCkJ1dCB0aGUgbXVsdGl0dWRlIG9mIHRoZSBjaXR5IHdhcyBkaXZpZGVkOiBhbmQgcGFydCBoZWxkIHdpdGggdGhlIEpld3MsIGFuZCBwYXJ0IHdpdGggdGhlIGFwb3N0bGVzLgpBbmQgd2hlbiB0aGVyZSB3YXMgYW4gYXNzYXVsdCBtYWRlIGJvdGggb2YgdGhlIEdlbnRpbGVzLCBhbmQgYWxzbyBvZiB0aGUgSmV3cyB3aXRoIHRoZWlyIHJ1bGVycywgdG8gdXNlIHRoZW0gZGVzcGl0ZWZ1bGx5LCBhbmQgdG8gc3RvbmUgdGhlbSwKVGhleSB3ZXJlIHdhcmUgb2YgaXQsIGFuZCBmbGVkIHVudG8gTHlzdHJhIGFuZCBEZXJiZSwgY2l0aWVzIG9mIEx5Y2FvbmlhLCBhbmQgdW50byB0aGUgcmVnaW9uIHRoYXQgbGlldGggcm91bmQgYWJvdXQ6CkFuZCB0aGVyZSB0aGV5IHByZWFjaGVkIHRoZSBnb3NwZWwuCkFuZCB0aGVyZSBzYXQgYSBjZXJ0YWluIG1hbiBhdCBMeXN0cmEsIGltcG90ZW50IGluIGhpcyBmZWV0LCBiZWluZyBhIGNyaXBwbGUgZnJvbSBoaXMgbW90aGVyJ3Mgd29tYiwgd2hvIG5ldmVyIGhhZCB3YWxrZWQ6ClRoZSBzYW1lIGhlYXJkIFBhdWwgc3BlYWs6IHdobyBzdGVkZmFzdGx5IGJlaG9sZGluZyBoaW0sIGFuZCBwZXJjZWl2aW5nIHRoYXQgaGUgaGFkIGZhaXRoIHRvIGJlIGhlYWxlZCwKU2FpZCB3aXRoIGEgbG91ZCB2b2ljZSwgU3RhbmQgdXByaWdodCBvbiB0aHkgZmVldC4gQW5kIGhlIGxlYXBlZCBhbmQgd2Fsa2VkLgpBbmQgd2hlbiB0aGUgcGVvcGxlIHNhdyB3aGF0IFBhdWwgaGFkIGRvbmUsIHRoZXkgbGlmdGVkIHVwIHRoZWlyIHZvaWNlcywgc2F5aW5nIGluIHRoZSBzcGVlY2ggb2YgTHljYW9uaWEsIFRoZSBnb2RzIGFyZSBjb21lIGRvd24gdG8gdXMgaW4gdGhlIGxpa2VuZXNzIG9mIG1lbi4KQW5kIHRoZXkgY2FsbGVkIEJhcm5hYmFzLCBKdXBpdGVyOyBhbmQgUGF1bCwgTWVyY3VyaXVzLCBiZWNhdXNlIGhlIHdhcyB0aGUgY2hpZWYgc3BlYWtlci4KVGhlbiB0aGUgcHJpZXN0IG9mIEp1cGl0ZXIsIHdoaWNoIHdhcyBiZWZvcmUgdGhlaXIgY2l0eSwgYnJvdWdodCBveGVuIGFuZCBnYXJsYW5kcyB1bnRvIHRoZSBnYXRlcywgYW5kIHdvdWxkIGhhdmUgZG9uZSBzYWNyaWZpY2Ugd2l0aCB0aGUgcGVvcGxlLgpXaGljaCB3aGVuIHRoZSBhcG9zdGxlcywgQmFybmFiYXMgYW5kIFBhdWwsIGhlYXJkIG9mLCB0aGV5IHJlbnQgdGhlaXIgY2xvdGhlcywgYW5kIHJhbiBpbiBhbW9uZyB0aGUgcGVvcGxlLCBjcnlpbmcgb3V0LApBbmQgc2F5aW5nLCBTaXJzLCB3aHkgZG8geWUgdGhlc2UgdGhpbmdzPyBXZSBhbHNvIGFyZSBtZW4gb2YgbGlrZSBwYXNzaW9ucyB3aXRoIHlvdSwgYW5kIHByZWFjaCB1bnRvIHlvdSB0aGF0IHllIHNob3VsZCB0dXJuIGZyb20gdGhlc2UgdmFuaXRpZXMgdW50byB0aGUgbGl2aW5nIEdvZCwgd2hpY2ggbWFkZSBoZWF2ZW4sIGFuZCBlYXJ0aCwgYW5kIHRoZSBzZWEsIGFuZCBhbGwgdGhpbmdzIHRoYXQgYXJlIHRoZXJlaW46CldobyBpbiB0aW1lcyBwYXN0IHN1ZmZlcmVkIGFsbCBuYXRpb25zIHRvIHdhbGsgaW4gdGhlaXIgb3duIHdheXMuCk5ldmVydGhlbGVzcyBoZSBsZWZ0IG5vdCBoaW1zZWxmIHdpdGhvdXQgd2l0bmVzcywgaW4gdGhhdCBoZSBkaWQgZ29vZCwgYW5kIGdhdmUgdXMgcmFpbiBmcm9tIGhlYXZlbiwgYW5kIGZydWl0ZnVsIHNlYXNvbnMsIGZpbGxpbmcgb3VyIGhlYXJ0cyB3aXRoIGZvb2QgYW5kIGdsYWRuZXNzLgpBbmQgd2l0aCB0aGVzZSBzYXlpbmdzIHNjYXJjZSByZXN0cmFpbmVkIHRoZXkgdGhlIHBlb3BsZSwgdGhhdCB0aGV5IGhhZCBub3QgZG9uZSBzYWNyaWZpY2UgdW50byB0aGVtLgpBbmQgdGhlcmUgY2FtZSB0aGl0aGVyIGNlcnRhaW4gSmV3cyBmcm9tIEFudGlvY2ggYW5kIEljb25pdW0sIHdobyBwZXJzdWFkZWQgdGhlIHBlb3BsZSwgYW5kIGhhdmluZyBzdG9uZWQgUGF1bCwgZHJldyBoaW0gb3V0IG9mIHRoZSBjaXR5LCBzdXBwb3NpbmcgaGUgaGFkIGJlZW4gZGVhZC4KSG93YmVpdCwgYXMgdGhlIGRpc2NpcGxlcyBzdG9vZCByb3VuZCBhYm91dCBoaW0sIGhlIHJvc2UgdXAsIGFuZCBjYW1lIGludG8gdGhlIGNpdHk6IGFuZCB0aGUgbmV4dCBkYXkgaGUgZGVwYXJ0ZWQgd2l0aCBCYXJuYWJhcyB0byBEZXJiZS4KQW5kIHdoZW4gdGhleSBoYWQgcHJlYWNoZWQgdGhlIGdvc3BlbCB0byB0aGF0IGNpdHksIGFuZCBoYWQgdGF1Z2h0IG1hbnksIHRoZXkgcmV0dXJuZWQgYWdhaW4gdG8gTHlzdHJhLCBhbmQgdG8gSWNvbml1bSwgYW5kIEFudGlvY2gsCkNvbmZpcm1pbmcgdGhlIHNvdWxzIG9mIHRoZSBkaXNjaXBsZXMsIGFuZCBleGhvcnRpbmcgdGhlbSB0byBjb250aW51ZSBpbiB0aGUgZmFpdGgsIGFuZCB0aGF0IHdlIG11c3QgdGhyb3VnaCBtdWNoIHRyaWJ1bGF0aW9uIGVudGVyIGludG8gdGhlIGtpbmdkb20gb2YgR29kLgpBbmQgd2hlbiB0aGV5IGhhZCBvcmRhaW5lZCB0aGVtIGVsZGVycyBpbiBldmVyeSBjaHVyY2gsIGFuZCBoYWQgcHJheWVkIHdpdGggZmFzdGluZywgdGhleSBjb21tZW5kZWQgdGhlbSB0byB0aGUgTG9yZCwgb24gd2hvbSB0aGV5IGJlbGlldmVkLgpBbmQgYWZ0ZXIgdGhleSBoYWQgcGFzc2VkIHRocm91Z2hvdXQgUGlzaWRpYSwgdGhleSBjYW1lIHRvIFBhbXBoeWxpYS4KQW5kIHdoZW4gdGhleSBoYWQgcHJlYWNoZWQgdGhlIHdvcmQgaW4gUGVyZ2EsIHRoZXkgd2VudCBkb3duIGludG8gQXR0YWxpYToKQW5kIHRoZW5jZSBzYWlsZWQgdG8gQW50aW9jaCwgZnJvbSB3aGVuY2UgdGhleSBoYWQgYmVlbiByZWNvbW1lbmRlZCB0byB0aGUgZ3JhY2Ugb2YgR29kIGZvciB0aGUgd29yayB3aGljaCB0aGV5IGZ1bGZpbGxlZC4KQW5kIHdoZW4gdGhleSB3ZXJlIGNvbWUsIGFuZCBoYWQgZ2F0aGVyZWQgdGhlIGNodXJjaCB0b2dldGhlciwgdGhleSByZWhlYXJzZWQgYWxsIHRoYXQgR29kIGhhZCBkb25lIHdpdGggdGhlbSwgYW5kIGhvdyBoZSBoYWQgb3BlbmVkIHRoZSBkb29yIG9mIGZhaXRoIHVudG8gdGhlIEdlbnRpbGVzLgpBbmQgdGhlcmUgdGhleSBhYm9kZSBsb25nIHRpbWUgd2l0aCB0aGUgZGlzY2lwbGVzLgpBbmQgY2VydGFpbiBtZW4gd2hpY2ggY2FtZSBkb3duIGZyb20gSnVkYWVhIHRhdWdodCB0aGUgYnJldGhyZW4sIGFuZCBzYWlkLCBFeGNlcHQgeWUgYmUgY2lyY3VtY2lzZWQgYWZ0ZXIgdGhlIG1hbm5lciBvZiBNb3NlcywgeWUgY2Fubm90IGJlIHNhdmVkLgpXaGVuIHRoZXJlZm9yZSBQYXVsIGFuZCBCYXJuYWJhcyBoYWQgbm8gc21hbGwgZGlzc2Vuc2lvbiBhbmQgZGlzcHV0YXRpb24gd2l0aCB0aGVtLCB0aGV5IGRldGVybWluZWQgdGhhdCBQYXVsIGFuZCBCYXJuYWJhcywgYW5kIGNlcnRhaW4gb3RoZXIgb2YgdGhlbSwgc2hvdWxkIGdvIHVwIHRvIEplcnVzYWxlbSB1bnRvIHRoZSBhcG9zdGxlcyBhbmQgZWxkZXJzIGFib3V0IHRoaXMgcXVlc3Rpb24uCkFuZCBiZWluZyBicm91Z2h0IG9uIHRoZWlyIHdheSBieSB0aGUgY2h1cmNoLCB0aGV5IHBhc3NlZCB0aHJvdWdoIFBoZW5pY2UgYW5kIFNhbWFyaWEsIGRlY2xhcmluZyB0aGUgY29udmVyc2lvbiBvZiB0aGUgR2VudGlsZXM6IGFuZCB0aGV5IGNhdXNlZCBncmVhdCBqb3kgdW50byBhbGwgdGhlIGJyZXRocmVuLgpBbmQgd2hlbiB0aGV5IHdlcmUgY29tZSB0byBKZXJ1c2FsZW0sIHRoZXkgd2VyZSByZWNlaXZlZCBvZiB0aGUgY2h1cmNoLCBhbmQgb2YgdGhlIGFwb3N0bGVzIGFuZCBlbGRlcnMsIGFuZCB0aGV5IGRlY2xhcmVkIGFsbCB0aGluZ3MgdGhhdCBHb2QgaGFkIGRvbmUgd2l0aCB0aGVtLgpCdXQgdGhlcmUgcm9zZSB1cCBjZXJ0YWluIG9mIHRoZSBzZWN0IG9mIHRoZSBQaGFyaXNlZXMgd2hpY2ggYmVsaWV2ZWQsIHNheWluZywgVGhhdCBpdCB3YXMgbmVlZGZ1bCB0byBjaXJjdW1jaXNlIHRoZW0sIGFuZCB0byBjb21tYW5kIHRoZW0gdG8ga2VlcCB0aGUgbGF3IG9mIE1vc2VzLgpBbmQgdGhlIGFwb3N0bGVzIGFuZCBlbGRlcnMgY2FtZSB0b2dldGhlciBmb3IgdG8gY29uc2lkZXIgb2YgdGhpcyBtYXR0ZXIuCkFuZCB3aGVuIHRoZXJlIGhhZCBiZWVuIG11Y2ggZGlzcHV0aW5nLCBQZXRlciByb3NlIHVwLCBhbmQgc2FpZCB1bnRvIHRoZW0sIE1lbiBhbmQgYnJldGhyZW4sIHllIGtub3cgaG93IHRoYXQgYSBnb29kIHdoaWxlIGFnbyBHb2QgbWFkZSBjaG9pY2UgYW1vbmcgdXMsIHRoYXQgdGhlIEdlbnRpbGVzIGJ5IG15IG1vdXRoIHNob3VsZCBoZWFyIHRoZSB3b3JkIG9mIHRoZSBnb3NwZWwsIGFuZCBiZWxpZXZlLgpBbmQgR29kLCB3aGljaCBrbm93ZXRoIHRoZSBoZWFydHMsIGJhcmUgdGhlbSB3aXRuZXNzLCBnaXZpbmcgdGhlbSB0aGUgSG9seSBHaG9zdCwgZXZlbiBhcyBoZSBkaWQgdW50byB1czsKQW5kIHB1dCBubyBkaWZmZXJlbmNlIGJldHdlZW4gdXMgYW5kIHRoZW0sIHB1cmlmeWluZyB0aGVpciBoZWFydHMgYnkgZmFpdGguCk5vdyB0aGVyZWZvcmUgd2h5IHRlbXB0IHllIEdvZCwgdG8gcHV0IGEgeW9rZSB1cG9uIHRoZSBuZWNrIG9mIHRoZSBkaXNjaXBsZXMsIHdoaWNoIG5laXRoZXIgb3VyIGZhdGhlcnMgbm9yIHdlIHdlcmUgYWJsZSB0byBiZWFyPwpCdXQgd2UgYmVsaWV2ZSB0aGF0IHRocm91Z2ggdGhlIGdyYWNlIG9mIHRoZSBMT1JEIEplc3VzIENocmlzdCB3ZSBzaGFsbCBiZSBzYXZlZCwgZXZlbiBhcyB0aGV5LgpUaGVuIGFsbCB0aGUgbXVsdGl0dWRlIGtlcHQgc2lsZW5jZSwgYW5kIGdhdmUgYXVkaWVuY2UgdG8gQmFybmFiYXMgYW5kIFBhdWwsIGRlY2xhcmluZyB3aGF0IG1pcmFjbGVzIGFuZCB3b25kZXJzIEdvZCBoYWQgd3JvdWdodCBhbW9uZyB0aGUgR2VudGlsZXMgYnkgdGhlbS4KQW5kIGFmdGVyIHRoZXkgaGFkIGhlbGQgdGhlaXIgcGVhY2UsIEphbWVzIGFuc3dlcmVkLCBzYXlpbmcsIE1lbiBhbmQgYnJldGhyZW4sIGhlYXJrZW4gdW50byBtZToKU2ltZW9uIGhhdGggZGVjbGFyZWQgaG93IEdvZCBhdCB0aGUgZmlyc3QgZGlkIHZpc2l0IHRoZSBHZW50aWxlcywgdG8gdGFrZSBvdXQgb2YgdGhlbSBhIHBlb3BsZSBmb3IgaGlzIG5hbWUuCkFuZCB0byB0aGlzIGFncmVlIHRoZSB3b3JkcyBvZiB0aGUgcHJvcGhldHM7IGFzIGl0IGlzIHdyaXR0ZW4sCkFmdGVyIHRoaXMgSSB3aWxsIHJldHVybiwgYW5kIHdpbGwgYnVpbGQgYWdhaW4gdGhlIHRhYmVybmFjbGUgb2YgRGF2aWQsIHdoaWNoIGlzIGZhbGxlbiBkb3duOyBhbmQgSSB3aWxsIGJ1aWxkIGFnYWluIHRoZSBydWlucyB0aGVyZW9mLCBhbmQgSSB3aWxsIHNldCBpdCB1cDoKVGhhdCB0aGUgcmVzaWR1ZSBvZiBtZW4gbWlnaHQgc2VlayBhZnRlciB0aGUgTG9yZCwgYW5kIGFsbCB0aGUgR2VudGlsZXMsIHVwb24gd2hvbSBteSBuYW1lIGlzIGNhbGxlZCwgc2FpdGggdGhlIExvcmQsIHdobyBkb2V0aCBhbGwgdGhlc2UgdGhpbmdzLgpLbm93biB1bnRvIEdvZCBhcmUgYWxsIGhpcyB3b3JrcyBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHdvcmxkLgpXaGVyZWZvcmUgbXkgc2VudGVuY2UgaXMsIHRoYXQgd2UgdHJvdWJsZSBub3QgdGhlbSwgd2hpY2ggZnJvbSBhbW9uZyB0aGUgR2VudGlsZXMgYXJlIHR1cm5lZCB0byBHb2Q6CkJ1dCB0aGF0IHdlIHdyaXRlIHVudG8gdGhlbSwgdGhhdCB0aGV5IGFic3RhaW4gZnJvbSBwb2xsdXRpb25zIG9mIGlkb2xzLCBhbmQgZnJvbSBmb3JuaWNhdGlvbiwgYW5kIGZyb20gdGhpbmdzIHN0cmFuZ2xlZCwgYW5kIGZyb20gYmxvb2QuCkZvciBNb3NlcyBvZiBvbGQgdGltZSBoYXRoIGluIGV2ZXJ5IGNpdHkgdGhlbSB0aGF0IHByZWFjaCBoaW0sIGJlaW5nIHJlYWQgaW4gdGhlIHN5bmFnb2d1ZXMgZXZlcnkgc2FiYmF0aCBkYXkuClRoZW4gcGxlYXNlZCBpdCB0aGUgYXBvc3RsZXMgYW5kIGVsZGVycyB3aXRoIHRoZSB3aG9sZSBjaHVyY2gsIHRvIHNlbmQgY2hvc2VuIG1lbiBvZiB0aGVpciBvd24gY29tcGFueSB0byBBbnRpb2NoIHdpdGggUGF1bCBhbmQgQmFybmFiYXM7IG5hbWVseSwgSnVkYXMgc3VybmFtZWQgQmFyc2FiYXMgYW5kIFNpbGFzLCBjaGllZiBtZW4gYW1vbmcgdGhlIGJyZXRocmVuOgpBbmQgdGhleSB3cm90ZSBsZXR0ZXJzIGJ5IHRoZW0gYWZ0ZXIgdGhpcyBtYW5uZXI7IFRoZSBhcG9zdGxlcyBhbmQgZWxkZXJzIGFuZCBicmV0aHJlbiBzZW5kIGdyZWV0aW5nIHVudG8gdGhlIGJyZXRocmVuIHdoaWNoIGFyZSBvZiB0aGUgR2VudGlsZXMgaW4gQW50aW9jaCBhbmQgU3lyaWEgYW5kIENpbGljaWEuCkZvcmFzbXVjaCBhcyB3ZSBoYXZlIGhlYXJkLCB0aGF0IGNlcnRhaW4gd2hpY2ggd2VudCBvdXQgZnJvbSB1cyBoYXZlIHRyb3VibGVkIHlvdSB3aXRoIHdvcmRzLCBzdWJ2ZXJ0aW5nIHlvdXIgc291bHMsIHNheWluZywgWWUgbXVzdCBiZSBjaXJjdW1jaXNlZCwgYW5kIGtlZXAgdGhlIGxhdzogdG8gd2hvbSB3ZSBnYXZlIG5vIHN1Y2ggY29tbWFuZG1lbnQ6Ckl0IHNlZW1lZCBnb29kIHVudG8gdXMsIGJlaW5nIGFzc2VtYmxlZCB3aXRoIG9uZSBhY2NvcmQsIHRvIHNlbmQgY2hvc2VuIG1lbiB1bnRvIHlvdSB3aXRoIG91ciBiZWxvdmVkIEJhcm5hYmFzIGFuZCBQYXVsLApNZW4gdGhhdCBoYXZlIGhhemFyZGVkIHRoZWlyIGxpdmVzIGZvciB0aGUgbmFtZSBvZiBvdXIgTG9yZCBKZXN1cyBDaHJpc3QuCldlIGhhdmUgc2VudCB0aGVyZWZvcmUgSnVkYXMgYW5kIFNpbGFzLCB3aG8gc2hhbGwgYWxzbyB0ZWxsIHlvdSB0aGUgc2FtZSB0aGluZ3MgYnkgbW91dGguCkZvciBpdCBzZWVtZWQgZ29vZCB0byB0aGUgSG9seSBHaG9zdCwgYW5kIHRvIHVzLCB0byBsYXkgdXBvbiB5b3Ugbm8gZ3JlYXRlciBidXJkZW4gdGhhbiB0aGVzZSBuZWNlc3NhcnkgdGhpbmdzOwpUaGF0IHllIGFic3RhaW4gZnJvbSBtZWF0cyBvZmZlcmVkIHRvIGlkb2xzLCBhbmQgZnJvbSBibG9vZCwgYW5kIGZyb20gdGhpbmdzIHN0cmFuZ2xlZCwgYW5kIGZyb20gZm9ybmljYXRpb246IGZyb20gd2hpY2ggaWYgeWUga2VlcCB5b3Vyc2VsdmVzLCB5ZSBzaGFsbCBkbyB3ZWxsLiBGYXJlIHllIHdlbGwuClNvIHdoZW4gdGhleSB3ZXJlIGRpc21pc3NlZCwgdGhleSBjYW1lIHRvIEFudGlvY2g6IGFuZCB3aGVuIHRoZXkgaGFkIGdhdGhlcmVkIHRoZSBtdWx0aXR1ZGUgdG9nZXRoZXIsIHRoZXkgZGVsaXZlcmVkIHRoZSBlcGlzdGxlOgpXaGljaCB3aGVuIHRoZXkgaGFkIHJlYWQsIHRoZXkgcmVqb2ljZWQgZm9yIHRoZSBjb25zb2xhdGlvbi4KQW5kIEp1ZGFzIGFuZCBTaWxhcywgYmVpbmcgcHJvcGhldHMgYWxzbyB0aGVtc2VsdmVzLCBleGhvcnRlZCB0aGUgYnJldGhyZW4gd2l0aCBtYW55IHdvcmRzLCBhbmQgY29uZmlybWVkIHRoZW0uCkFuZCBhZnRlciB0aGV5IGhhZCB0YXJyaWVkIHRoZXJlIGEgc3BhY2UsIHRoZXkgd2VyZSBsZXQgZ28gaW4gcGVhY2UgZnJvbSB0aGUgYnJldGhyZW4gdW50byB0aGUgYXBvc3RsZXMuCk5vdHdpdGhzdGFuZGluZyBpdCBwbGVhc2VkIFNpbGFzIHRvIGFiaWRlIHRoZXJlIHN0aWxsLgpQYXVsIGFsc28gYW5kIEJhcm5hYmFzIGNvbnRpbnVlZCBpbiBBbnRpb2NoLCB0ZWFjaGluZyBhbmQgcHJlYWNoaW5nIHRoZSB3b3JkIG9mIHRoZSBMb3JkLCB3aXRoIG1hbnkgb3RoZXJzIGFsc28uCkFuZCBzb21lIGRheXMgYWZ0ZXIgUGF1bCBzYWlkIHVudG8gQmFybmFiYXMsIExldCB1cyBnbyBhZ2FpbiBhbmQgdmlzaXQgb3VyIGJyZXRocmVuIGluIGV2ZXJ5IGNpdHkgd2hlcmUgd2UgaGF2ZSBwcmVhY2hlZCB0aGUgd29yZCBvZiB0aGUgTE9SRCwgYW5kIHNlZSBob3cgdGhleSBkby4KQW5kIEJhcm5hYmFzIGRldGVybWluZWQgdG8gdGFrZSB3aXRoIHRoZW0gSm9obiwgd2hvc2Ugc3VybmFtZSB3YXMgTWFyay4KQnV0IFBhdWwgdGhvdWdodCBub3QgZ29vZCB0byB0YWtlIGhpbSB3aXRoIHRoZW0sIHdobyBkZXBhcnRlZCBmcm9tIHRoZW0gZnJvbSBQYW1waHlsaWEsIGFuZCB3ZW50IG5vdCB3aXRoIHRoZW0gdG8gdGhlIHdvcmsuCkFuZCB0aGUgY29udGVudGlvbiB3YXMgc28gc2hhcnAgYmV0d2VlbiB0aGVtLCB0aGF0IHRoZXkgZGVwYXJ0ZWQgYXN1bmRlciBvbmUgZnJvbSB0aGUgb3RoZXI6IGFuZCBzbyBCYXJuYWJhcyB0b29rIE1hcmssIGFuZCBzYWlsZWQgdW50byBDeXBydXM7CkFuZCBQYXVsIGNob3NlIFNpbGFzLCBhbmQgZGVwYXJ0ZWQsIGJlaW5nIHJlY29tbWVuZGVkIGJ5IHRoZSBicmV0aHJlbiB1bnRvIHRoZSBncmFjZSBvZiBHb2QuCkFuZCBoZSB3ZW50IHRocm91Z2ggU3lyaWEgYW5kIENpbGljaWEsIGNvbmZpcm1pbmcgdGhlIGNodXJjaGVzLgpUaGVuIGNhbWUgaGUgdG8gRGVyYmUgYW5kIEx5c3RyYTogYW5kLCBiZWhvbGQsIGEgY2VydGFpbiBkaXNjaXBsZSB3YXMgdGhlcmUsIG5hbWVkIFRpbW90aGV1cywgdGhlIHNvbiBvZiBhIGNlcnRhaW4gd29tYW4sIHdoaWNoIHdhcyBhIEpld2VzcywgYW5kIGJlbGlldmVkOyBidXQgaGlzIGZhdGhlciB3YXMgYSBHcmVlazoKV2hpY2ggd2FzIHdlbGwgcmVwb3J0ZWQgb2YgYnkgdGhlIGJyZXRocmVuIHRoYXQgd2VyZSBhdCBMeXN0cmEgYW5kIEljb25pdW0uCkhpbSB3b3VsZCBQYXVsIGhhdmUgdG8gZ28gZm9ydGggd2l0aCBoaW07IGFuZCB0b29rIGFuZCBjaXJjdW1jaXNlZCBoaW0gYmVjYXVzZSBvZiB0aGUgSmV3cyB3aGljaCB3ZXJlIGluIHRob3NlIHF1YXJ0ZXJzOiBmb3IgdGhleSBrbmV3IGFsbCB0aGF0IGhpcyBmYXRoZXIgd2FzIGEgR3JlZWsuCkFuZCBhcyB0aGV5IHdlbnQgdGhyb3VnaCB0aGUgY2l0aWVzLCB0aGV5IGRlbGl2ZXJlZCB0aGVtIHRoZSBkZWNyZWVzIGZvciB0byBrZWVwLCB0aGF0IHdlcmUgb3JkYWluZWQgb2YgdGhlIGFwb3N0bGVzIGFuZCBlbGRlcnMgd2hpY2ggd2VyZSBhdCBKZXJ1c2FsZW0uCkFuZCBzbyB3ZXJlIHRoZSBjaHVyY2hlcyBlc3RhYmxpc2hlZCBpbiB0aGUgZmFpdGgsIGFuZCBpbmNyZWFzZWQgaW4gbnVtYmVyIGRhaWx5LgpOb3cgd2hlbiB0aGV5IGhhZCBnb25lIHRocm91Z2hvdXQgUGhyeWdpYSBhbmQgdGhlIHJlZ2lvbiBvZiBHYWxhdGlhLCBhbmQgd2VyZSBmb3JiaWRkZW4gb2YgdGhlIEhvbHkgR2hvc3QgdG8gcHJlYWNoIHRoZSB3b3JkIGluIEFzaWEsCkFmdGVyIHRoZXkgd2VyZSBjb21lIHRvIE15c2lhLCB0aGV5IGFzc2F5ZWQgdG8gZ28gaW50byBCaXRoeW5pYTogYnV0IHRoZSBTcGlyaXQgc3VmZmVyZWQgdGhlbSBub3QuCkFuZCB0aGV5IHBhc3NpbmcgYnkgTXlzaWEgY2FtZSBkb3duIHRvIFRyb2FzLgpBbmQgYSB2aXNpb24gYXBwZWFyZWQgdG8gUGF1bCBpbiB0aGUgbmlnaHQ7IFRoZXJlIHN0b29kIGEgbWFuIG9mIE1hY2Vkb25pYSwgYW5kIHByYXllZCBoaW0sIHNheWluZywgQ29tZSBvdmVyIGludG8gTWFjZWRvbmlhLCBhbmQgaGVscCB1cy4KQW5kIGFmdGVyIGhlIGhhZCBzZWVuIHRoZSB2aXNpb24sIGltbWVkaWF0ZWx5IHdlIGVuZGVhdm91cmVkIHRvIGdvIGludG8gTWFjZWRvbmlhLCBhc3N1cmVkbHkgZ2F0aGVyaW5nIHRoYXQgdGhlIExvcmQgaGFkIGNhbGxlZCB1cyBmb3IgdG8gcHJlYWNoIHRoZSBnb3NwZWwgdW50byB0aGVtLgpUaGVyZWZvcmUgbG9vc2luZyBmcm9tIFRyb2FzLCB3ZSBjYW1lIHdpdGggYSBzdHJhaWdodCBjb3Vyc2UgdG8gU2Ftb3RocmFjaWEsIGFuZCB0aGUgbmV4dCBkYXkgdG8gTmVhcG9saXM7CkFuZCBmcm9tIHRoZW5jZSB0byBQaGlsaXBwaSwgd2hpY2ggaXMgdGhlIGNoaWVmIGNpdHkgb2YgdGhhdCBwYXJ0IG9mIE1hY2Vkb25pYSwgYW5kIGEgY29sb255OiBhbmQgd2Ugd2VyZSBpbiB0aGF0IGNpdHkgYWJpZGluZyBjZXJ0YWluIGRheXMuCkFuZCBvbiB0aGUgc2FiYmF0aCB3ZSB3ZW50IG91dCBvZiB0aGUgY2l0eSBieSBhIHJpdmVyIHNpZGUsIHdoZXJlIHByYXllciB3YXMgd29udCB0byBiZSBtYWRlOyBhbmQgd2Ugc2F0IGRvd24sIGFuZCBzcGFrZSB1bnRvIHRoZSB3b21lbiB3aGljaCByZXNvcnRlZCB0aGl0aGVyLgpBbmQgYSBjZXJ0YWluIHdvbWFuIG5hbWVkIEx5ZGlhLCBhIHNlbGxlciBvZiBwdXJwbGUsIG9mIHRoZSBjaXR5IG9mIFRoeWF0aXJhLCB3aGljaCB3b3JzaGlwcGVkIEdvZCwgaGVhcmQgdXM6IHdob3NlIGhlYXJ0IHRoZSBMb3JkIG9wZW5lZCwgdGhhdCBzaGUgYXR0ZW5kZWQgdW50byB0aGUgdGhpbmdzIHdoaWNoIHdlcmUgc3Bva2VuIG9mIFBhdWwuCkFuZCB3aGVuIHNoZSB3YXMgYmFwdGl6ZWQsIGFuZCBoZXIgaG91c2Vob2xkLCBzaGUgYmVzb3VnaHQgdXMsIHNheWluZywgSWYgeWUgaGF2ZSBqdWRnZWQgbWUgdG8gYmUgZmFpdGhmdWwgdG8gdGhlIExvcmQsIGNvbWUgaW50byBteSBob3VzZSwgYW5kIGFiaWRlIHRoZXJlLiBBbmQgc2hlIGNvbnN0cmFpbmVkIHVzLgpBbmQgaXQgY2FtZSB0byBwYXNzLCBhcyB3ZSB3ZW50IHRvIHByYXllciwgYSBjZXJ0YWluIGRhbXNlbCBwb3NzZXNzZWQgd2l0aCBhIHNwaXJpdCBvZiBkaXZpbmF0aW9uIG1ldCB1cywgd2hpY2ggYnJvdWdodCBoZXIgbWFzdGVycyBtdWNoIGdhaW4gYnkgc29vdGhzYXlpbmc6ClRoZSBzYW1lIGZvbGxvd2VkIFBhdWwgYW5kIHVzLCBhbmQgY3JpZWQsIHNheWluZywgVGhlc2UgbWVuIGFyZSB0aGUgc2VydmFudHMgb2YgdGhlIG1vc3QgaGlnaCBHb2QsIHdoaWNoIHNoZXcgdW50byB1cyB0aGUgd2F5IG9mIHNhbHZhdGlvbi4KQW5kIHRoaXMgZGlkIHNoZSBtYW55IGRheXMuIEJ1dCBQYXVsLCBiZWluZyBncmlldmVkLCB0dXJuZWQgYW5kIHNhaWQgdG8gdGhlIHNwaXJpdCwgSSBjb21tYW5kIHRoZWUgaW4gdGhlIG5hbWUgb2YgSmVzdXMgQ2hyaXN0IHRvIGNvbWUgb3V0IG9mIGhlci4gQW5kIGhlIGNhbWUgb3V0IHRoZSBzYW1lIGhvdXIuCkFuZCB3aGVuIGhlciBtYXN0ZXJzIHNhdyB0aGF0IHRoZSBob3BlIG9mIHRoZWlyIGdhaW5zIHdhcyBnb25lLCB0aGV5IGNhdWdodCBQYXVsIGFuZCBTaWxhcywgYW5kIGRyZXcgdGhlbSBpbnRvIHRoZSBtYXJrZXRwbGFjZSB1bnRvIHRoZSBydWxlcnMsCkFuZCBicm91Z2h0IHRoZW0gdG8gdGhlIG1hZ2lzdHJhdGVzLCBzYXlpbmcsIFRoZXNlIG1lbiwgYmVpbmcgSmV3cywgZG8gZXhjZWVkaW5nbHkgdHJvdWJsZSBvdXIgY2l0eSwKQW5kIHRlYWNoIGN1c3RvbXMsIHdoaWNoIGFyZSBub3QgbGF3ZnVsIGZvciB1cyB0byByZWNlaXZlLCBuZWl0aGVyIHRvIG9ic2VydmUsIGJlaW5nIFJvbWFucy4KQW5kIHRoZSBtdWx0aXR1ZGUgcm9zZSB1cCB0b2dldGhlciBhZ2FpbnN0IHRoZW06IGFuZCB0aGUgbWFnaXN0cmF0ZXMgcmVudCBvZmYgdGhlaXIgY2xvdGhlcywgYW5kIGNvbW1hbmRlZCB0byBiZWF0IHRoZW0uCkFuZCB3aGVuIHRoZXkgaGFkIGxhaWQgbWFueSBzdHJpcGVzIHVwb24gdGhlbSwgdGhleSBjYXN0IHRoZW0gaW50byBwcmlzb24sIGNoYXJnaW5nIHRoZSBqYWlsb3IgdG8ga2VlcCB0aGVtIHNhZmVseToKV2hvLCBoYXZpbmcgcmVjZWl2ZWQgc3VjaCBhIGNoYXJnZSwgdGhydXN0IHRoZW0gaW50byB0aGUgaW5uZXIgcHJpc29uLCBhbmQgbWFkZSB0aGVpciBmZWV0IGZhc3QgaW4gdGhlIHN0b2Nrcy4KQW5kIGF0IG1pZG5pZ2h0IFBhdWwgYW5kIFNpbGFzIHByYXllZCwgYW5kIHNhbmcgcHJhaXNlcyB1bnRvIEdvZDogYW5kIHRoZSBwcmlzb25lcnMgaGVhcmQgdGhlbS4KQW5kIHN1ZGRlbmx5IHRoZXJlIHdhcyBhIGdyZWF0IGVhcnRocXVha2UsIHNvIHRoYXQgdGhlIGZvdW5kYXRpb25zIG9mIHRoZSBwcmlzb24gd2VyZSBzaGFrZW46IGFuZCBpbW1lZGlhdGVseSBhbGwgdGhlIGRvb3JzIHdlcmUgb3BlbmVkLCBhbmQgZXZlcnkgb25lJ3MgYmFuZHMgd2VyZSBsb29zZWQuCkFuZCB0aGUga2VlcGVyIG9mIHRoZSBwcmlzb24gYXdha2luZyBvdXQgb2YgaGlzIHNsZWVwLCBhbmQgc2VlaW5nIHRoZSBwcmlzb24gZG9vcnMgb3BlbiwgaGUgZHJldyBvdXQgaGlzIHN3b3JkLCBhbmQgd291bGQgaGF2ZSBraWxsZWQgaGltc2VsZiwgc3VwcG9zaW5nIHRoYXQgdGhlIHByaXNvbmVycyBoYWQgYmVlbiBmbGVkLgpCdXQgUGF1bCBjcmllZCB3aXRoIGEgbG91ZCB2b2ljZSwgc2F5aW5nLCBEbyB0aHlzZWxmIG5vIGhhcm06IGZvciB3ZSBhcmUgYWxsIGhlcmUuClRoZW4gaGUgY2FsbGVkIGZvciBhIGxpZ2h0LCBhbmQgc3ByYW5nIGluLCBhbmQgY2FtZSB0cmVtYmxpbmcsIGFuZCBmZWxsIGRvd24gYmVmb3JlIFBhdWwgYW5kIFNpbGFzLApBbmQgYnJvdWdodCB0aGVtIG91dCwgYW5kIHNhaWQsIFNpcnMsIHdoYXQgbXVzdCBJIGRvIHRvIGJlIHNhdmVkPwpBbmQgdGhleSBzYWlkLCBCZWxpZXZlIG9uIHRoZSBMb3JkIEplc3VzIENocmlzdCwgYW5kIHRob3Ugc2hhbHQgYmUgc2F2ZWQsIGFuZCB0aHkgaG91c2UuCkFuZCB0aGV5IHNwYWtlIHVudG8gaGltIHRoZSB3b3JkIG9mIHRoZSBMb3JkLCBhbmQgdG8gYWxsIHRoYXQgd2VyZSBpbiBoaXMgaG91c2UuCkFuZCBoZSB0b29rIHRoZW0gdGhlIHNhbWUgaG91ciBvZiB0aGUgbmlnaHQsIGFuZCB3YXNoZWQgdGhlaXIgc3RyaXBlczsgYW5kIHdhcyBiYXB0aXplZCwgaGUgYW5kIGFsbCBoaXMsIHN0cmFpZ2h0d2F5LgpBbmQgd2hlbiBoZSBoYWQgYnJvdWdodCB0aGVtIGludG8gaGlzIGhvdXNlLCBoZSBzZXQgbWVhdCBiZWZvcmUgdGhlbSwgYW5kIHJlam9pY2VkLCBiZWxpZXZpbmcgaW4gR29kIHdpdGggYWxsIGhpcyBob3VzZS4KQW5kIHdoZW4gaXQgd2FzIGRheSwgdGhlIG1hZ2lzdHJhdGVzIHNlbnQgdGhlIHNlcmplYW50cywgc2F5aW5nLCBMZXQgdGhvc2UgbWVuIGdvLgpBbmQgdGhlIGtlZXBlciBvZiB0aGUgcHJpc29uIHRvbGQgdGhpcyBzYXlpbmcgdG8gUGF1bCwgVGhlIG1hZ2lzdHJhdGVzIGhhdmUgc2VudCB0byBsZXQgeW91IGdvOiBub3cgdGhlcmVmb3JlIGRlcGFydCwgYW5kIGdvIGluIHBlYWNlLgpCdXQgUGF1bCBzYWlkIHVudG8gdGhlbSwgVGhleSBoYXZlIGJlYXRlbiB1cyBvcGVubHkgdW5jb25kZW1uZWQsIGJlaW5nIFJvbWFucywgYW5kIGhhdmUgY2FzdCB1cyBpbnRvIHByaXNvbjsgYW5kIG5vdyBkbyB0aGV5IHRocnVzdCB1cyBvdXQgcHJpdmlseT8gbmF5IHZlcmlseTsgYnV0IGxldCB0aGVtIGNvbWUgdGhlbXNlbHZlcyBhbmQgZmV0Y2ggdXMgb3V0LgpBbmQgdGhlIHNlcmplYW50cyB0b2xkIHRoZXNlIHdvcmRzIHVudG8gdGhlIG1hZ2lzdHJhdGVzOiBhbmQgdGhleSBmZWFyZWQsIHdoZW4gdGhleSBoZWFyZCB0aGF0IHRoZXkgd2VyZSBSb21hbnMuCkFuZCB0aGV5IGNhbWUgYW5kIGJlc291Z2h0IHRoZW0sIGFuZCBicm91Z2h0IHRoZW0gb3V0LCBhbmQgZGVzaXJlZCB0aGVtIHRvIGRlcGFydCBvdXQgb2YgdGhlIGNpdHkuCkFuZCB0aGV5IHdlbnQgb3V0IG9mIHRoZSBwcmlzb24sIGFuZCBlbnRlcmVkIGludG8gdGhlIGhvdXNlIG9mIEx5ZGlhOiBhbmQgd2hlbiB0aGV5IGhhZCBzZWVuIHRoZSBicmV0aHJlbiwgdGhleSBjb21mb3J0ZWQgdGhlbSwgYW5kIGRlcGFydGVkLgpOb3cgd2hlbiB0aGV5IGhhZCBwYXNzZWQgdGhyb3VnaCBBbXBoaXBvbGlzIGFuZCBBcG9sbG9uaWEsIHRoZXkgY2FtZSB0byBUaGVzc2Fsb25pY2EsIHdoZXJlIHdhcyBhIHN5bmFnb2d1ZSBvZiB0aGUgSmV3czoKQW5kIFBhdWwsIGFzIGhpcyBtYW5uZXIgd2FzLCB3ZW50IGluIHVudG8gdGhlbSwgYW5kIHRocmVlIHNhYmJhdGggZGF5cyByZWFzb25lZCB3aXRoIHRoZW0gb3V0IG9mIHRoZSBzY3JpcHR1cmVzLApPcGVuaW5nIGFuZCBhbGxlZ2luZywgdGhhdCBDaHJpc3QgbXVzdCBuZWVkcyBoYXZlIHN1ZmZlcmVkLCBhbmQgcmlzZW4gYWdhaW4gZnJvbSB0aGUgZGVhZDsgYW5kIHRoYXQgdGhpcyBKZXN1cywgd2hvbSBJIHByZWFjaCB1bnRvIHlvdSwgaXMgQ2hyaXN0LgpBbmQgc29tZSBvZiB0aGVtIGJlbGlldmVkLCBhbmQgY29uc29ydGVkIHdpdGggUGF1bCBhbmQgU2lsYXM7IGFuZCBvZiB0aGUgZGV2b3V0IEdyZWVrcyBhIGdyZWF0IG11bHRpdHVkZSwgYW5kIG9mIHRoZSBjaGllZiB3b21lbiBub3QgYSBmZXcuCkJ1dCB0aGUgSmV3cyB3aGljaCBiZWxpZXZlZCBub3QsIG1vdmVkIHdpdGggZW52eSwgdG9vayB1bnRvIHRoZW0gY2VydGFpbiBsZXdkIGZlbGxvd3Mgb2YgdGhlIGJhc2VyIHNvcnQsIGFuZCBnYXRoZXJlZCBhIGNvbXBhbnksIGFuZCBzZXQgYWxsIHRoZSBjaXR5IG9uIGFuIHVwcm9hciwgYW5kIGFzc2F1bHRlZCB0aGUgaG91c2Ugb2YgSmFzb24sIGFuZCBzb3VnaHQgdG8gYnJpbmcgdGhlbSBvdXQgdG8gdGhlIHBlb3BsZS4KQW5kIHdoZW4gdGhleSBmb3VuZCB0aGVtIG5vdCwgdGhleSBkcmV3IEphc29uIGFuZCBjZXJ0YWluIGJyZXRocmVuIHVudG8gdGhlIHJ1bGVycyBvZiB0aGUgY2l0eSwgY3J5aW5nLCBUaGVzZSB0aGF0IGhhdmUgdHVybmVkIHRoZSB3b3JsZCB1cHNpZGUgZG93biBhcmUgY29tZSBoaXRoZXIgYWxzbzsKV2hvbSBKYXNvbiBoYXRoIHJlY2VpdmVkOiBhbmQgdGhlc2UgYWxsIGRvIGNvbnRyYXJ5IHRvIHRoZSBkZWNyZWVzIG9mIENhZXNhciwgc2F5aW5nIHRoYXQgdGhlcmUgaXMgYW5vdGhlciBraW5nLCBvbmUgSmVzdXMuCkFuZCB0aGV5IHRyb3VibGVkIHRoZSBwZW9wbGUgYW5kIHRoZSBydWxlcnMgb2YgdGhlIGNpdHksIHdoZW4gdGhleSBoZWFyZCB0aGVzZSB0aGluZ3MuCkFuZCB3aGVuIHRoZXkgaGFkIHRha2VuIHNlY3VyaXR5IG9mIEphc29uLCBhbmQgb2YgdGhlIG90aGVyLCB0aGV5IGxldCB0aGVtIGdvLgpBbmQgdGhlIGJyZXRocmVuIGltbWVkaWF0ZWx5IHNlbnQgYXdheSBQYXVsIGFuZCBTaWxhcyBieSBuaWdodCB1bnRvIEJlcmVhOiB3aG8gY29taW5nIHRoaXRoZXIgd2VudCBpbnRvIHRoZSBzeW5hZ29ndWUgb2YgdGhlIEpld3MuClRoZXNlIHdlcmUgbW9yZSBub2JsZSB0aGFuIHRob3NlIGluIFRoZXNzYWxvbmljYSwgaW4gdGhhdCB0aGV5IHJlY2VpdmVkIHRoZSB3b3JkIHdpdGggYWxsIHJlYWRpbmVzcyBvZiBtaW5kLCBhbmQgc2VhcmNoZWQgdGhlIHNjcmlwdHVyZXMgZGFpbHksIHdoZXRoZXIgdGhvc2UgdGhpbmdzIHdlcmUgc28uClRoZXJlZm9yZSBtYW55IG9mIHRoZW0gYmVsaWV2ZWQ7IGFsc28gb2YgaG9ub3VyYWJsZSB3b21lbiB3aGljaCB3ZXJlIEdyZWVrcywgYW5kIG9mIG1lbiwgbm90IGEgZmV3LgpCdXQgd2hlbiB0aGUgSmV3cyBvZiBUaGVzc2Fsb25pY2EgaGFkIGtub3dsZWRnZSB0aGF0IHRoZSB3b3JkIG9mIEdvZCB3YXMgcHJlYWNoZWQgb2YgUGF1bCBhdCBCZXJlYSwgdGhleSBjYW1lIHRoaXRoZXIgYWxzbywgYW5kIHN0aXJyZWQgdXAgdGhlIHBlb3BsZS4KQW5kIHRoZW4gaW1tZWRpYXRlbHkgdGhlIGJyZXRocmVuIHNlbnQgYXdheSBQYXVsIHRvIGdvIGFzIGl0IHdlcmUgdG8gdGhlIHNlYTogYnV0IFNpbGFzIGFuZCBUaW1vdGhldXMgYWJvZGUgdGhlcmUgc3RpbGwuCkFuZCB0aGV5IHRoYXQgY29uZHVjdGVkIFBhdWwgYnJvdWdodCBoaW0gdW50byBBdGhlbnM6IGFuZCByZWNlaXZpbmcgYSBjb21tYW5kbWVudCB1bnRvIFNpbGFzIGFuZCBUaW1vdGhldXMgZm9yIHRvIGNvbWUgdG8gaGltIHdpdGggYWxsIHNwZWVkLCB0aGV5IGRlcGFydGVkLgpOb3cgd2hpbGUgUGF1bCB3YWl0ZWQgZm9yIHRoZW0gYXQgQXRoZW5zLCBoaXMgc3Bpcml0IHdhcyBzdGlycmVkIGluIGhpbSwgd2hlbiBoZSBzYXcgdGhlIGNpdHkgd2hvbGx5IGdpdmVuIHRvIGlkb2xhdHJ5LgpUaGVyZWZvcmUgZGlzcHV0ZWQgaGUgaW4gdGhlIHN5bmFnb2d1ZSB3aXRoIHRoZSBKZXdzLCBhbmQgd2l0aCB0aGUgZGV2b3V0IHBlcnNvbnMsIGFuZCBpbiB0aGUgbWFya2V0IGRhaWx5IHdpdGggdGhlbSB0aGF0IG1ldCB3aXRoIGhpbS4KVGhlbiBjZXJ0YWluIHBoaWxvc29waGVycyBvZiB0aGUgRXBpY3VyZWFucywgYW5kIG9mIHRoZSBTdG9pY2tzLCBlbmNvdW50ZXJlZCBoaW0uIEFuZCBzb21lIHNhaWQsIFdoYXQgd2lsbCB0aGlzIGJhYmJsZXIgc2F5PyBvdGhlciBzb21lLCBIZSBzZWVtZXRoIHRvIGJlIGEgc2V0dGVyIGZvcnRoIG9mIHN0cmFuZ2UgZ29kczogYmVjYXVzZSBoZSBwcmVhY2hlZCB1bnRvIHRoZW0gSmVzdXMsIGFuZCB0aGUgcmVzdXJyZWN0aW9uLgpBbmQgdGhleSB0b29rIGhpbSwgYW5kIGJyb3VnaHQgaGltIHVudG8gQXJlb3BhZ3VzLCBzYXlpbmcsIE1heSB3ZSBrbm93IHdoYXQgdGhpcyBuZXcgZG9jdHJpbmUsIHdoZXJlb2YgdGhvdSBzcGVha2VzdCwgaXM/CkZvciB0aG91IGJyaW5nZXN0IGNlcnRhaW4gc3RyYW5nZSB0aGluZ3MgdG8gb3VyIGVhcnM6IHdlIHdvdWxkIGtub3cgdGhlcmVmb3JlIHdoYXQgdGhlc2UgdGhpbmdzIG1lYW4uCihGb3IgYWxsIHRoZSBBdGhlbmlhbnMgYW5kIHN0cmFuZ2VycyB3aGljaCB3ZXJlIHRoZXJlIHNwZW50IHRoZWlyIHRpbWUgaW4gbm90aGluZyBlbHNlLCBidXQgZWl0aGVyIHRvIHRlbGwsIG9yIHRvIGhlYXIgc29tZSBuZXcgdGhpbmcuKQpUaGVuIFBhdWwgc3Rvb2QgaW4gdGhlIG1pZHN0IG9mIE1hcnMnIGhpbGwsIGFuZCBzYWlkLCBZZSBtZW4gb2YgQXRoZW5zLCBJIHBlcmNlaXZlIHRoYXQgaW4gYWxsIHRoaW5ncyB5ZSBhcmUgdG9vIHN1cGVyc3RpdGlvdXMuCkZvciBhcyBJIHBhc3NlZCBieSwgYW5kIGJlaGVsZCB5b3VyIGRldm90aW9ucywgSSBmb3VuZCBhbiBhbHRhciB3aXRoIHRoaXMgaW5zY3JpcHRpb24sIFRPIFRIRSBVTktOT1dOIEdPRC4gV2hvbSB0aGVyZWZvcmUgeWUgaWdub3JhbnRseSB3b3JzaGlwLCBoaW0gZGVjbGFyZSBJIHVudG8geW91LgpHb2QgdGhhdCBtYWRlIHRoZSB3b3JsZCBhbmQgYWxsIHRoaW5ncyB0aGVyZWluLCBzZWVpbmcgdGhhdCBoZSBpcyBMb3JkIG9mIGhlYXZlbiBhbmQgZWFydGgsIGR3ZWxsZXRoIG5vdCBpbiB0ZW1wbGVzIG1hZGUgd2l0aCBoYW5kczsKTmVpdGhlciBpcyB3b3JzaGlwcGVkIHdpdGggbWVuJ3MgaGFuZHMsIGFzIHRob3VnaCBoZSBuZWVkZWQgYW55IHRoaW5nLCBzZWVpbmcgaGUgZ2l2ZXRoIHRvIGFsbCBsaWZlLCBhbmQgYnJlYXRoLCBhbmQgYWxsIHRoaW5nczsKQW5kIGhhdGggbWFkZSBvZiBvbmUgYmxvb2QgYWxsIG5hdGlvbnMgb2YgbWVuIGZvciB0byBkd2VsbCBvbiBhbGwgdGhlIGZhY2Ugb2YgdGhlIGVhcnRoLCBhbmQgaGF0aCBkZXRlcm1pbmVkIHRoZSB0aW1lcyBiZWZvcmUgYXBwb2ludGVkLCBhbmQgdGhlIGJvdW5kcyBvZiB0aGVpciBoYWJpdGF0aW9uOwpUaGF0IHRoZXkgc2hvdWxkIHNlZWsgdGhlIExvcmQsIGlmIGhhcGx5IHRoZXkgbWlnaHQgZmVlbCBhZnRlciBoaW0sIGFuZCBmaW5kIGhpbSwgdGhvdWdoIGhlIGJlIG5vdCBmYXIgZnJvbSBldmVyeSBvbmUgb2YgdXM6CkZvciBpbiBoaW0gd2UgbGl2ZSwgYW5kIG1vdmUsIGFuZCBoYXZlIG91ciBiZWluZzsgYXMgY2VydGFpbiBhbHNvIG9mIHlvdXIgb3duIHBvZXRzIGhhdmUgc2FpZCwgRm9yIHdlIGFyZSBhbHNvIGhpcyBvZmZzcHJpbmcuCkZvcmFzbXVjaCB0aGVuIGFzIHdlIGFyZSB0aGUgb2Zmc3ByaW5nIG9mIEdvZCwgd2Ugb3VnaHQgbm90IHRvIHRoaW5rIHRoYXQgdGhlIEdvZGhlYWQgaXMgbGlrZSB1bnRvIGdvbGQsIG9yIHNpbHZlciwgb3Igc3RvbmUsIGdyYXZlbiBieSBhcnQgYW5kIG1hbidzIGRldmljZS4KQW5kIHRoZSB0aW1lcyBvZiB0aGlzIGlnbm9yYW5jZSBHb2Qgd2lua2VkIGF0OyBidXQgbm93IGNvbW1hbmRldGggYWxsIG1lbiBldmVyeSB3aGVyZSB0byByZXBlbnQ6CkJlY2F1c2UgaGUgaGF0aCBhcHBvaW50ZWQgYSBkYXksIGluIHRoZSB3aGljaCBoZSB3aWxsIGp1ZGdlIHRoZSB3b3JsZCBpbiByaWdodGVvdXNuZXNzIGJ5IHRoYXQgbWFuIHdob20gaGUgaGF0aCBvcmRhaW5lZDsgd2hlcmVvZiBoZSBoYXRoIGdpdmVuIGFzc3VyYW5jZSB1bnRvIGFsbCBtZW4sIGluIHRoYXQgaGUgaGF0aCByYWlzZWQgaGltIGZyb20gdGhlIGRlYWQuCkFuZCB3aGVuIHRoZXkgaGVhcmQgb2YgdGhlIHJlc3VycmVjdGlvbiBvZiB0aGUgZGVhZCwgc29tZSBtb2NrZWQ6IGFuZCBvdGhlcnMgc2FpZCwgV2Ugd2lsbCBoZWFyIHRoZWUgYWdhaW4gb2YgdGhpcyBtYXR0ZXIuClNvIFBhdWwgZGVwYXJ0ZWQgZnJvbSBhbW9uZyB0aGVtLgpIb3diZWl0IGNlcnRhaW4gbWVuIGNsYXZlIHVudG8gaGltLCBhbmQgYmVsaWV2ZWQ6IGFtb25nIHRoZSB3aGljaCB3YXMgRGlvbnlzaXVzIHRoZSBBcmVvcGFnaXRlLCBhbmQgYSB3b21hbiBuYW1lZCBEYW1hcmlzLCBhbmQgb3RoZXJzIHdpdGggdGhlbS4KQWZ0ZXIgdGhlc2UgdGhpbmdzIFBhdWwgZGVwYXJ0ZWQgZnJvbSBBdGhlbnMsIGFuZCBjYW1lIHRvIENvcmludGg7CkFuZCBmb3VuZCBhIGNlcnRhaW4gSmV3IG5hbWVkIEFxdWlsYSwgYm9ybiBpbiBQb250dXMsIGxhdGVseSBjb21lIGZyb20gSXRhbHksIHdpdGggaGlzIHdpZmUgUHJpc2NpbGxhOyAoYmVjYXVzZSB0aGF0IENsYXVkaXVzIGhhZCBjb21tYW5kZWQgYWxsIEpld3MgdG8gZGVwYXJ0IGZyb20gUm9tZTopIGFuZCBjYW1lIHVudG8gdGhlbS4KQW5kIGJlY2F1c2UgaGUgd2FzIG9mIHRoZSBzYW1lIGNyYWZ0LCBoZSBhYm9kZSB3aXRoIHRoZW0sIGFuZCB3cm91Z2h0OiBmb3IgYnkgdGhlaXIgb2NjdXBhdGlvbiB0aGV5IHdlcmUgdGVudG1ha2Vycy4KQW5kIGhlIHJlYXNvbmVkIGluIHRoZSBzeW5hZ29ndWUgZXZlcnkgc2FiYmF0aCwgYW5kIHBlcnN1YWRlZCB0aGUgSmV3cyBhbmQgdGhlIEdyZWVrcy4KQW5kIHdoZW4gU2lsYXMgYW5kIFRpbW90aGV1cyB3ZXJlIGNvbWUgZnJvbSBNYWNlZG9uaWEsIFBhdWwgd2FzIHByZXNzZWQgaW4gdGhlIHNwaXJpdCwgYW5kIHRlc3RpZmllZCB0byB0aGUgSmV3cyB0aGF0IEplc3VzIHdhcyBDaHJpc3QuCkFuZCB3aGVuIHRoZXkgb3Bwb3NlZCB0aGVtc2VsdmVzLCBhbmQgYmxhc3BoZW1lZCwgaGUgc2hvb2sgaGlzIHJhaW1lbnQsIGFuZCBzYWlkIHVudG8gdGhlbSwgWW91ciBibG9vZCBiZSB1cG9uIHlvdXIgb3duIGhlYWRzOyBJIGFtIGNsZWFuOyBmcm9tIGhlbmNlZm9ydGggSSB3aWxsIGdvIHVudG8gdGhlIEdlbnRpbGVzLgpBbmQgaGUgZGVwYXJ0ZWQgdGhlbmNlLCBhbmQgZW50ZXJlZCBpbnRvIGEgY2VydGFpbiBtYW4ncyBob3VzZSwgbmFtZWQgSnVzdHVzLCBvbmUgdGhhdCB3b3JzaGlwcGVkIEdvZCwgd2hvc2UgaG91c2Ugam9pbmVkIGhhcmQgdG8gdGhlIHN5bmFnb2d1ZS4KQW5kIENyaXNwdXMsIHRoZSBjaGllZiBydWxlciBvZiB0aGUgc3luYWdvZ3VlLCBiZWxpZXZlZCBvbiB0aGUgTG9yZCB3aXRoIGFsbCBoaXMgaG91c2U7IGFuZCBtYW55IG9mIHRoZSBDb3JpbnRoaWFucyBoZWFyaW5nIGJlbGlldmVkLCBhbmQgd2VyZSBiYXB0aXplZC4KVGhlbiBzcGFrZSB0aGUgTG9yZCB0byBQYXVsIGluIHRoZSBuaWdodCBieSBhIHZpc2lvbiwgQmUgbm90IGFmcmFpZCwgYnV0IHNwZWFrLCBhbmQgaG9sZCBub3QgdGh5IHBlYWNlOgpGb3IgSSBhbSB3aXRoIHRoZWUsIGFuZCBubyBtYW4gc2hhbGwgc2V0IG9uIHRoZWUgdG8gaHVydCB0aGVlOiBmb3IgSSBoYXZlIG11Y2ggcGVvcGxlIGluIHRoaXMgY2l0eS4KQW5kIGhlIGNvbnRpbnVlZCB0aGVyZSBhIHllYXIgYW5kIHNpeCBtb250aHMsIHRlYWNoaW5nIHRoZSB3b3JkIG9mIEdvZCBhbW9uZyB0aGVtLgpBbmQgd2hlbiBHYWxsaW8gd2FzIHRoZSBkZXB1dHkgb2YgQWNoYWlhLCB0aGUgSmV3cyBtYWRlIGluc3VycmVjdGlvbiB3aXRoIG9uZSBhY2NvcmQgYWdhaW5zdCBQYXVsLCBhbmQgYnJvdWdodCBoaW0gdG8gdGhlIGp1ZGdtZW50IHNlYXQsClNheWluZywgVGhpcyBmZWxsb3cgcGVyc3VhZGV0aCBtZW4gdG8gd29yc2hpcCBHb2QgY29udHJhcnkgdG8gdGhlIGxhdy4KQW5kIHdoZW4gUGF1bCB3YXMgbm93IGFib3V0IHRvIG9wZW4gaGlzIG1vdXRoLCBHYWxsaW8gc2FpZCB1bnRvIHRoZSBKZXdzLCBJZiBpdCB3ZXJlIGEgbWF0dGVyIG9mIHdyb25nIG9yIHdpY2tlZCBsZXdkbmVzcywgTyB5ZSBKZXdzLCByZWFzb24gd291bGQgdGhhdCBJIHNob3VsZCBiZWFyIHdpdGggeW91OgpCdXQgaWYgaXQgYmUgYSBxdWVzdGlvbiBvZiB3b3JkcyBhbmQgbmFtZXMsIGFuZCBvZiB5b3VyIGxhdywgbG9vayB5ZSB0byBpdDsgZm9yIEkgd2lsbCBiZSBubyBqdWRnZSBvZiBzdWNoIG1hdHRlcnMuCkFuZCBoZSBkcmF2ZSB0aGVtIGZyb20gdGhlIGp1ZGdtZW50IHNlYXQuClRoZW4gYWxsIHRoZSBHcmVla3MgdG9vayBTb3N0aGVuZXMsIHRoZSBjaGllZiBydWxlciBvZiB0aGUgc3luYWdvZ3VlLCBhbmQgYmVhdCBoaW0gYmVmb3JlIHRoZSBqdWRnbWVudCBzZWF0LiBBbmQgR2FsbGlvIGNhcmVkIGZvciBub25lIG9mIHRob3NlIHRoaW5ncy4KQW5kIFBhdWwgYWZ0ZXIgdGhpcyB0YXJyaWVkIHRoZXJlIHlldCBhIGdvb2Qgd2hpbGUsIGFuZCB0aGVuIHRvb2sgaGlzIGxlYXZlIG9mIHRoZSBicmV0aHJlbiwgYW5kIHNhaWxlZCB0aGVuY2UgaW50byBTeXJpYSwgYW5kIHdpdGggaGltIFByaXNjaWxsYSBhbmQgQXF1aWxhOyBoYXZpbmcgc2hvcm4gaGlzIGhlYWQgaW4gQ2VuY2hyZWE6IGZvciBoZSBoYWQgYSB2b3cuCkFuZCBoZSBjYW1lIHRvIEVwaGVzdXMsIGFuZCBsZWZ0IHRoZW0gdGhlcmU6IGJ1dCBoZSBoaW1zZWxmIGVudGVyZWQgaW50byB0aGUgc3luYWdvZ3VlLCBhbmQgcmVhc29uZWQgd2l0aCB0aGUgSmV3cy4KV2hlbiB0aGV5IGRlc2lyZWQgaGltIHRvIHRhcnJ5IGxvbmdlciB0aW1lIHdpdGggdGhlbSwgaGUgY29uc2VudGVkIG5vdDsKQnV0IGJhZGUgdGhlbSBmYXJld2VsbCwgc2F5aW5nLCBJIG11c3QgYnkgYWxsIG1lYW5zIGtlZXAgdGhpcyBmZWFzdCB0aGF0IGNvbWV0aCBpbiBKZXJ1c2FsZW06IGJ1dCBJIHdpbGwgcmV0dXJuIGFnYWluIHVudG8geW91LCBpZiBHb2Qgd2lsbC4gQW5kIGhlIHNhaWxlZCBmcm9tIEVwaGVzdXMuCkFuZCB3aGVuIGhlIGhhZCBsYW5kZWQgYXQgQ2Flc2FyZWEsIGFuZCBnb25lIHVwLCBhbmQgc2FsdXRlZCB0aGUgY2h1cmNoLCBoZSB3ZW50IGRvd24gdG8gQW50aW9jaC4KQW5kIGFmdGVyIGhlIGhhZCBzcGVudCBzb21lIHRpbWUgdGhlcmUsIGhlIGRlcGFydGVkLCBhbmQgd2VudCBvdmVyIGFsbCB0aGUgY291bnRyeSBvZiBHYWxhdGlhIGFuZCBQaHJ5Z2lhIGluIG9yZGVyLCBzdHJlbmd0aGVuaW5nIGFsbCB0aGUgZGlzY2lwbGVzLgpBbmQgYSBjZXJ0YWluIEpldyBuYW1lZCBBcG9sbG9zLCBib3JuIGF0IEFsZXhhbmRyaWEsIGFuIGVsb3F1ZW50IG1hbiwgYW5kIG1pZ2h0eSBpbiB0aGUgc2NyaXB0dXJlcywgY2FtZSB0byBFcGhlc3VzLgpUaGlzIG1hbiB3YXMgaW5zdHJ1Y3RlZCBpbiB0aGUgd2F5IG9mIHRoZSBMb3JkOyBhbmQgYmVpbmcgZmVydmVudCBpbiB0aGUgc3Bpcml0LCBoZSBzcGFrZSBhbmQgdGF1Z2h0IGRpbGlnZW50bHkgdGhlIHRoaW5ncyBvZiB0aGUgTG9yZCwga25vd2luZyBvbmx5IHRoZSBiYXB0aXNtIG9mIEpvaG4uCkFuZCBoZSBiZWdhbiB0byBzcGVhayBib2xkbHkgaW4gdGhlIHN5bmFnb2d1ZTogd2hvbSB3aGVuIEFxdWlsYSBhbmQgUHJpc2NpbGxhIGhhZCBoZWFyZCwgdGhleSB0b29rIGhpbSB1bnRvIHRoZW0sIGFuZCBleHBvdW5kZWQgdW50byBoaW0gdGhlIHdheSBvZiBHb2QgbW9yZSBwZXJmZWN0bHkuCkFuZCB3aGVuIGhlIHdhcyBkaXNwb3NlZCB0byBwYXNzIGludG8gQWNoYWlhLCB0aGUgYnJldGhyZW4gd3JvdGUsIGV4aG9ydGluZyB0aGUgZGlzY2lwbGVzIHRvIHJlY2VpdmUgaGltOiB3aG8sIHdoZW4gaGUgd2FzIGNvbWUsIGhlbHBlZCB0aGVtIG11Y2ggd2hpY2ggaGFkIGJlbGlldmVkIHRocm91Z2ggZ3JhY2U6CkZvciBoZSBtaWdodGlseSBjb252aW5jZWQgdGhlIEpld3MsIGFuZCB0aGF0IHB1YmxpY2tseSwgc2hld2luZyBieSB0aGUgc2NyaXB0dXJlcyB0aGF0IEplc3VzIHdhcyBDaHJpc3QuCkFuZCBpdCBjYW1lIHRvIHBhc3MsIHRoYXQsIHdoaWxlIEFwb2xsb3Mgd2FzIGF0IENvcmludGgsIFBhdWwgaGF2aW5nIHBhc3NlZCB0aHJvdWdoIHRoZSB1cHBlciBjb2FzdHMgY2FtZSB0byBFcGhlc3VzOiBhbmQgZmluZGluZyBjZXJ0YWluIGRpc2NpcGxlcywKSGUgc2FpZCB1bnRvIHRoZW0sIEhhdmUgeWUgcmVjZWl2ZWQgdGhlIEhvbHkgR2hvc3Qgc2luY2UgeWUgYmVsaWV2ZWQ/IEFuZCB0aGV5IHNhaWQgdW50byBoaW0sIFdlIGhhdmUgbm90IHNvIG11Y2ggYXMgaGVhcmQgd2hldGhlciB0aGVyZSBiZSBhbnkgSG9seSBHaG9zdC4KQW5kIGhlIHNhaWQgdW50byB0aGVtLCBVbnRvIHdoYXQgdGhlbiB3ZXJlIHllIGJhcHRpemVkPyBBbmQgdGhleSBzYWlkLCBVbnRvIEpvaG4ncyBiYXB0aXNtLgpUaGVuIHNhaWQgUGF1bCwgSm9obiB2ZXJpbHkgYmFwdGl6ZWQgd2l0aCB0aGUgYmFwdGlzbSBvZiByZXBlbnRhbmNlLCBzYXlpbmcgdW50byB0aGUgcGVvcGxlLCB0aGF0IHRoZXkgc2hvdWxkIGJlbGlldmUgb24gaGltIHdoaWNoIHNob3VsZCBjb21lIGFmdGVyIGhpbSwgdGhhdCBpcywgb24gQ2hyaXN0IEplc3VzLgpXaGVuIHRoZXkgaGVhcmQgdGhpcywgdGhleSB3ZXJlIGJhcHRpemVkIGluIHRoZSBuYW1lIG9mIHRoZSBMb3JkIEplc3VzLgpBbmQgd2hlbiBQYXVsIGhhZCBsYWlkIGhpcyBoYW5kcyB1cG9uIHRoZW0sIHRoZSBIb2x5IEdob3N0IGNhbWUgb24gdGhlbTsgYW5kIHRoZXkgc3Bha2Ugd2l0aCB0b25ndWVzLCBhbmQgcHJvcGhlc2llZC4KQW5kIGFsbCB0aGUgbWVuIHdlcmUgYWJvdXQgdHdlbHZlLgpBbmQgaGUgd2VudCBpbnRvIHRoZSBzeW5hZ29ndWUsIGFuZCBzcGFrZSBib2xkbHkgZm9yIHRoZSBzcGFjZSBvZiB0aHJlZSBtb250aHMsIGRpc3B1dGluZyBhbmQgcGVyc3VhZGluZyB0aGUgdGhpbmdzIGNvbmNlcm5pbmcgdGhlIGtpbmdkb20gb2YgR29kLgpCdXQgd2hlbiBkaXZlcnMgd2VyZSBoYXJkZW5lZCwgYW5kIGJlbGlldmVkIG5vdCwgYnV0IHNwYWtlIGV2aWwgb2YgdGhhdCB3YXkgYmVmb3JlIHRoZSBtdWx0aXR1ZGUsIGhlIGRlcGFydGVkIGZyb20gdGhlbSwgYW5kIHNlcGFyYXRlZCB0aGUgZGlzY2lwbGVzLCBkaXNwdXRpbmcgZGFpbHkgaW4gdGhlIHNjaG9vbCBvZiBvbmUgVHlyYW5udXMuCkFuZCB0aGlzIGNvbnRpbnVlZCBieSB0aGUgc3BhY2Ugb2YgdHdvIHllYXJzOyBzbyB0aGF0IGFsbCB0aGV5IHdoaWNoIGR3ZWx0IGluIEFzaWEgaGVhcmQgdGhlIHdvcmQgb2YgdGhlIExvcmQgSmVzdXMsIGJvdGggSmV3cyBhbmQgR3JlZWtzLgpBbmQgR29kIHdyb3VnaHQgc3BlY2lhbCBtaXJhY2xlcyBieSB0aGUgaGFuZHMgb2YgUGF1bDoKU28gdGhhdCBmcm9tIGhpcyBib2R5IHdlcmUgYnJvdWdodCB1bnRvIHRoZSBzaWNrIGhhbmRrZXJjaGllZnMgb3IgYXByb25zLCBhbmQgdGhlIGRpc2Vhc2VzIGRlcGFydGVkIGZyb20gdGhlbSwgYW5kIHRoZSBldmlsIHNwaXJpdHMgd2VudCBvdXQgb2YgdGhlbS4KVGhlbiBjZXJ0YWluIG9mIHRoZSB2YWdhYm9uZCBKZXdzLCBleG9yY2lzdHMsIHRvb2sgdXBvbiB0aGVtIHRvIGNhbGwgb3ZlciB0aGVtIHdoaWNoIGhhZCBldmlsIHNwaXJpdHMgdGhlIG5hbWUgb2YgdGhlIExPUkQgSmVzdXMsIHNheWluZywgV2UgYWRqdXJlIHlvdSBieSBKZXN1cyB3aG9tIFBhdWwgcHJlYWNoZXRoLgpBbmQgdGhlcmUgd2VyZSBzZXZlbiBzb25zIG9mIG9uZSBTY2V2YSwgYSBKZXcsIGFuZCBjaGllZiBvZiB0aGUgcHJpZXN0cywgd2hpY2ggZGlkIHNvLgpBbmQgdGhlIGV2aWwgc3Bpcml0IGFuc3dlcmVkIGFuZCBzYWlkLCBKZXN1cyBJIGtub3csIGFuZCBQYXVsIEkga25vdzsgYnV0IHdobyBhcmUgeWU/CkFuZCB0aGUgbWFuIGluIHdob20gdGhlIGV2aWwgc3Bpcml0IHdhcyBsZWFwZWQgb24gdGhlbSwgYW5kIG92ZXJjYW1lIHRoZW0sIGFuZCBwcmV2YWlsZWQgYWdhaW5zdCB0aGVtLCBzbyB0aGF0IHRoZXkgZmxlZCBvdXQgb2YgdGhhdCBob3VzZSBuYWtlZCBhbmQgd291bmRlZC4KQW5kIHRoaXMgd2FzIGtub3duIHRvIGFsbCB0aGUgSmV3cyBhbmQgR3JlZWtzIGFsc28gZHdlbGxpbmcgYXQgRXBoZXN1czsgYW5kIGZlYXIgZmVsbCBvbiB0aGVtIGFsbCwgYW5kIHRoZSBuYW1lIG9mIHRoZSBMb3JkIEplc3VzIHdhcyBtYWduaWZpZWQuCkFuZCBtYW55IHRoYXQgYmVsaWV2ZWQgY2FtZSwgYW5kIGNvbmZlc3NlZCwgYW5kIHNoZXdlZCB0aGVpciBkZWVkcy4KTWFueSBvZiB0aGVtIGFsc28gd2hpY2ggdXNlZCBjdXJpb3VzIGFydHMgYnJvdWdodCB0aGVpciBib29rcyB0b2dldGhlciwgYW5kIGJ1cm5lZCB0aGVtIGJlZm9yZSBhbGwgbWVuOiBhbmQgdGhleSBjb3VudGVkIHRoZSBwcmljZSBvZiB0aGVtLCBhbmQgZm91bmQgaXQgZmlmdHkgdGhvdXNhbmQgcGllY2VzIG9mIHNpbHZlci4KU28gbWlnaHRpbHkgZ3JldyB0aGUgd29yZCBvZiBHb2QgYW5kIHByZXZhaWxlZC4KQWZ0ZXIgdGhlc2UgdGhpbmdzIHdlcmUgZW5kZWQsIFBhdWwgcHVycG9zZWQgaW4gdGhlIHNwaXJpdCwgd2hlbiBoZSBoYWQgcGFzc2VkIHRocm91Z2ggTWFjZWRvbmlhIGFuZCBBY2hhaWEsIHRvIGdvIHRvIEplcnVzYWxlbSwgc2F5aW5nLCBBZnRlciBJIGhhdmUgYmVlbiB0aGVyZSwgSSBtdXN0IGFsc28gc2VlIFJvbWUuClNvIGhlIHNlbnQgaW50byBNYWNlZG9uaWEgdHdvIG9mIHRoZW0gdGhhdCBtaW5pc3RlcmVkIHVudG8gaGltLCBUaW1vdGhldXMgYW5kIEVyYXN0dXM7IGJ1dCBoZSBoaW1zZWxmIHN0YXllZCBpbiBBc2lhIGZvciBhIHNlYXNvbi4KQW5kIHRoZSBzYW1lIHRpbWUgdGhlcmUgYXJvc2Ugbm8gc21hbGwgc3RpciBhYm91dCB0aGF0IHdheS4KRm9yIGEgY2VydGFpbiBtYW4gbmFtZWQgRGVtZXRyaXVzLCBhIHNpbHZlcnNtaXRoLCB3aGljaCBtYWRlIHNpbHZlciBzaHJpbmVzIGZvciBEaWFuYSwgYnJvdWdodCBubyBzbWFsbCBnYWluIHVudG8gdGhlIGNyYWZ0c21lbjsKV2hvbSBoZSBjYWxsZWQgdG9nZXRoZXIgd2l0aCB0aGUgd29ya21lbiBvZiBsaWtlIG9jY3VwYXRpb24sIGFuZCBzYWlkLCBTaXJzLCB5ZSBrbm93IHRoYXQgYnkgdGhpcyBjcmFmdCB3ZSBoYXZlIG91ciB3ZWFsdGguCk1vcmVvdmVyIHllIHNlZSBhbmQgaGVhciwgdGhhdCBub3QgYWxvbmUgYXQgRXBoZXN1cywgYnV0IGFsbW9zdCB0aHJvdWdob3V0IGFsbCBBc2lhLCB0aGlzIFBhdWwgaGF0aCBwZXJzdWFkZWQgYW5kIHR1cm5lZCBhd2F5IG11Y2ggcGVvcGxlLCBzYXlpbmcgdGhhdCB0aGV5IGJlIG5vIGdvZHMsIHdoaWNoIGFyZSBtYWRlIHdpdGggaGFuZHM6ClNvIHRoYXQgbm90IG9ubHkgdGhpcyBvdXIgY3JhZnQgaXMgaW4gZGFuZ2VyIHRvIGJlIHNldCBhdCBub3VnaHQ7IGJ1dCBhbHNvIHRoYXQgdGhlIHRlbXBsZSBvZiB0aGUgZ3JlYXQgZ29kZGVzcyBEaWFuYSBzaG91bGQgYmUgZGVzcGlzZWQsIGFuZCBoZXIgbWFnbmlmaWNlbmNlIHNob3VsZCBiZSBkZXN0cm95ZWQsIHdob20gYWxsIEFzaWEgYW5kIHRoZSB3b3JsZCB3b3JzaGlwcGV0aC4KQW5kIHdoZW4gdGhleSBoZWFyZCB0aGVzZSBzYXlpbmdzLCB0aGV5IHdlcmUgZnVsbCBvZiB3cmF0aCwgYW5kIGNyaWVkIG91dCwgc2F5aW5nLCBHcmVhdCBpcyBEaWFuYSBvZiB0aGUgRXBoZXNpYW5zLgpBbmQgdGhlIHdob2xlIGNpdHkgd2FzIGZpbGxlZCB3aXRoIGNvbmZ1c2lvbjogYW5kIGhhdmluZyBjYXVnaHQgR2FpdXMgYW5kIEFyaXN0YXJjaHVzLCBtZW4gb2YgTWFjZWRvbmlhLCBQYXVsJ3MgY29tcGFuaW9ucyBpbiB0cmF2ZWwsIHRoZXkgcnVzaGVkIHdpdGggb25lIGFjY29yZCBpbnRvIHRoZSB0aGVhdHJlLgpBbmQgd2hlbiBQYXVsIHdvdWxkIGhhdmUgZW50ZXJlZCBpbiB1bnRvIHRoZSBwZW9wbGUsIHRoZSBkaXNjaXBsZXMgc3VmZmVyZWQgaGltIG5vdC4KQW5kIGNlcnRhaW4gb2YgdGhlIGNoaWVmIG9mIEFzaWEsIHdoaWNoIHdlcmUgaGlzIGZyaWVuZHMsIHNlbnQgdW50byBoaW0sIGRlc2lyaW5nIGhpbSB0aGF0IGhlIHdvdWxkIG5vdCBhZHZlbnR1cmUgaGltc2VsZiBpbnRvIHRoZSB0aGVhdHJlLgpTb21lIHRoZXJlZm9yZSBjcmllZCBvbmUgdGhpbmcsIGFuZCBzb21lIGFub3RoZXI6IGZvciB0aGUgYXNzZW1ibHkgd2FzIGNvbmZ1c2VkOiBhbmQgdGhlIG1vcmUgcGFydCBrbmV3IG5vdCB3aGVyZWZvcmUgdGhleSB3ZXJlIGNvbWUgdG9nZXRoZXIuCkFuZCB0aGV5IGRyZXcgQWxleGFuZGVyIG91dCBvZiB0aGUgbXVsdGl0dWRlLCB0aGUgSmV3cyBwdXR0aW5nIGhpbSBmb3J3YXJkLiBBbmQgQWxleGFuZGVyIGJlY2tvbmVkIHdpdGggdGhlIGhhbmQsIGFuZCB3b3VsZCBoYXZlIG1hZGUgaGlzIGRlZmVuY2UgdW50byB0aGUgcGVvcGxlLgpCdXQgd2hlbiB0aGV5IGtuZXcgdGhhdCBoZSB3YXMgYSBKZXcsIGFsbCB3aXRoIG9uZSB2b2ljZSBhYm91dCB0aGUgc3BhY2Ugb2YgdHdvIGhvdXJzIGNyaWVkIG91dCwgR3JlYXQgaXMgRGlhbmEgb2YgdGhlIEVwaGVzaWFucy4KQW5kIHdoZW4gdGhlIHRvd25jbGVyayBoYWQgYXBwZWFzZWQgdGhlIHBlb3BsZSwgaGUgc2FpZCwgWWUgbWVuIG9mIEVwaGVzdXMsIHdoYXQgbWFuIGlzIHRoZXJlIHRoYXQga25vd2V0aCBub3QgaG93IHRoYXQgdGhlIGNpdHkgb2YgdGhlIEVwaGVzaWFucyBpcyBhIHdvcnNoaXBwZXIgb2YgdGhlIGdyZWF0IGdvZGRlc3MgRGlhbmEsIGFuZCBvZiB0aGUgaW1hZ2Ugd2hpY2ggZmVsbCBkb3duIGZyb20gSnVwaXRlcj8KU2VlaW5nIHRoZW4gdGhhdCB0aGVzZSB0aGluZ3MgY2Fubm90IGJlIHNwb2tlbiBhZ2FpbnN0LCB5ZSBvdWdodCB0byBiZSBxdWlldCwgYW5kIHRvIGRvIG5vdGhpbmcgcmFzaGx5LgpGb3IgeWUgaGF2ZSBicm91Z2h0IGhpdGhlciB0aGVzZSBtZW4sIHdoaWNoIGFyZSBuZWl0aGVyIHJvYmJlcnMgb2YgY2h1cmNoZXMsIG5vciB5ZXQgYmxhc3BoZW1lcnMgb2YgeW91ciBnb2RkZXNzLgpXaGVyZWZvcmUgaWYgRGVtZXRyaXVzLCBhbmQgdGhlIGNyYWZ0c21lbiB3aGljaCBhcmUgd2l0aCBoaW0sIGhhdmUgYSBtYXR0ZXIgYWdhaW5zdCBhbnkgbWFuLCB0aGUgbGF3IGlzIG9wZW4sIGFuZCB0aGVyZSBhcmUgZGVwdXRpZXM6IGxldCB0aGVtIGltcGxlYWQgb25lIGFub3RoZXIuCkJ1dCBpZiB5ZSBlbnF1aXJlIGFueSB0aGluZyBjb25jZXJuaW5nIG90aGVyIG1hdHRlcnMsIGl0IHNoYWxsIGJlIGRldGVybWluZWQgaW4gYSBsYXdmdWwgYXNzZW1ibHkuCkZvciB3ZSBhcmUgaW4gZGFuZ2VyIHRvIGJlIGNhbGxlZCBpbiBxdWVzdGlvbiBmb3IgdGhpcyBkYXkncyB1cHJvYXIsIHRoZXJlIGJlaW5nIG5vIGNhdXNlIHdoZXJlYnkgd2UgbWF5IGdpdmUgYW4gYWNjb3VudCBvZiB0aGlzIGNvbmNvdXJzZS4KQW5kIHdoZW4gaGUgaGFkIHRodXMgc3Bva2VuLCBoZSBkaXNtaXNzZWQgdGhlIGFzc2VtYmx5LgpBbmQgYWZ0ZXIgdGhlIHVwcm9hciB3YXMgY2Vhc2VkLCBQYXVsIGNhbGxlZCB1bnRvIGhpbSB0aGUgZGlzY2lwbGVzLCBhbmQgZW1icmFjZWQgdGhlbSwgYW5kIGRlcGFydGVkIGZvciB0byBnbyBpbnRvIE1hY2Vkb25pYS4KQW5kIHdoZW4gaGUgaGFkIGdvbmUgb3ZlciB0aG9zZSBwYXJ0cywgYW5kIGhhZCBnaXZlbiB0aGVtIG11Y2ggZXhob3J0YXRpb24sIGhlIGNhbWUgaW50byBHcmVlY2UsCkFuZCB0aGVyZSBhYm9kZSB0aHJlZSBtb250aHMuIEFuZCB3aGVuIHRoZSBKZXdzIGxhaWQgd2FpdCBmb3IgaGltLCBhcyBoZSB3YXMgYWJvdXQgdG8gc2FpbCBpbnRvIFN5cmlhLCBoZSBwdXJwb3NlZCB0byByZXR1cm4gdGhyb3VnaCBNYWNlZG9uaWEuCkFuZCB0aGVyZSBhY2NvbXBhbmllZCBoaW0gaW50byBBc2lhIFNvcGF0ZXIgb2YgQmVyZWE7IGFuZCBvZiB0aGUgVGhlc3NhbG9uaWFucywgQXJpc3RhcmNodXMgYW5kIFNlY3VuZHVzOyBhbmQgR2FpdXMgb2YgRGVyYmUsIGFuZCBUaW1vdGhldXM7IGFuZCBvZiBBc2lhLCBUeWNoaWN1cyBhbmQgVHJvcGhpbXVzLgpUaGVzZSBnb2luZyBiZWZvcmUgdGFycmllZCBmb3IgdXMgYXQgVHJvYXMuCkFuZCB3ZSBzYWlsZWQgYXdheSBmcm9tIFBoaWxpcHBpIGFmdGVyIHRoZSBkYXlzIG9mIHVubGVhdmVuZWQgYnJlYWQsIGFuZCBjYW1lIHVudG8gdGhlbSB0byBUcm9hcyBpbiBmaXZlIGRheXM7IHdoZXJlIHdlIGFib2RlIHNldmVuIGRheXMuCkFuZCB1cG9uIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWssIHdoZW4gdGhlIGRpc2NpcGxlcyBjYW1lIHRvZ2V0aGVyIHRvIGJyZWFrIGJyZWFkLCBQYXVsIHByZWFjaGVkIHVudG8gdGhlbSwgcmVhZHkgdG8gZGVwYXJ0IG9uIHRoZSBtb3Jyb3c7IGFuZCBjb250aW51ZWQgaGlzIHNwZWVjaCB1bnRpbCBtaWRuaWdodC4KQW5kIHRoZXJlIHdlcmUgbWFueSBsaWdodHMgaW4gdGhlIHVwcGVyIGNoYW1iZXIsIHdoZXJlIHRoZXkgd2VyZSBnYXRoZXJlZCB0b2dldGhlci4KQW5kIHRoZXJlIHNhdCBpbiBhIHdpbmRvdyBhIGNlcnRhaW4geW91bmcgbWFuIG5hbWVkIEV1dHljaHVzLCBiZWluZyBmYWxsZW4gaW50byBhIGRlZXAgc2xlZXA6IGFuZCBhcyBQYXVsIHdhcyBsb25nIHByZWFjaGluZywgaGUgc3VuayBkb3duIHdpdGggc2xlZXAsIGFuZCBmZWxsIGRvd24gZnJvbSB0aGUgdGhpcmQgbG9mdCwgYW5kIHdhcyB0YWtlbiB1cCBkZWFkLgpBbmQgUGF1bCB3ZW50IGRvd24sIGFuZCBmZWxsIG9uIGhpbSwgYW5kIGVtYnJhY2luZyBoaW0gc2FpZCwgVHJvdWJsZSBub3QgeW91cnNlbHZlczsgZm9yIGhpcyBsaWZlIGlzIGluIGhpbS4KV2hlbiBoZSB0aGVyZWZvcmUgd2FzIGNvbWUgdXAgYWdhaW4sIGFuZCBoYWQgYnJva2VuIGJyZWFkLCBhbmQgZWF0ZW4sIGFuZCB0YWxrZWQgYSBsb25nIHdoaWxlLCBldmVuIHRpbGwgYnJlYWsgb2YgZGF5LCBzbyBoZSBkZXBhcnRlZC4KQW5kIHRoZXkgYnJvdWdodCB0aGUgeW91bmcgbWFuIGFsaXZlLCBhbmQgd2VyZSBub3QgYSBsaXR0bGUgY29tZm9ydGVkLgpBbmQgd2Ugd2VudCBiZWZvcmUgdG8gc2hpcCwgYW5kIHNhaWxlZCB1bnRvIEFzc29zLCB0aGVyZSBpbnRlbmRpbmcgdG8gdGFrZSBpbiBQYXVsOiBmb3Igc28gaGFkIGhlIGFwcG9pbnRlZCwgbWluZGluZyBoaW1zZWxmIHRvIGdvIGFmb290LgpBbmQgd2hlbiBoZSBtZXQgd2l0aCB1cyBhdCBBc3Nvcywgd2UgdG9vayBoaW0gaW4sIGFuZCBjYW1lIHRvIE1pdHlsZW5lLgpBbmQgd2Ugc2FpbGVkIHRoZW5jZSwgYW5kIGNhbWUgdGhlIG5leHQgZGF5IG92ZXIgYWdhaW5zdCBDaGlvczsgYW5kIHRoZSBuZXh0IGRheSB3ZSBhcnJpdmVkIGF0IFNhbW9zLCBhbmQgdGFycmllZCBhdCBUcm9neWxsaXVtOyBhbmQgdGhlIG5leHQgZGF5IHdlIGNhbWUgdG8gTWlsZXR1cy4KRm9yIFBhdWwgaGFkIGRldGVybWluZWQgdG8gc2FpbCBieSBFcGhlc3VzLCBiZWNhdXNlIGhlIHdvdWxkIG5vdCBzcGVuZCB0aGUgdGltZSBpbiBBc2lhOiBmb3IgaGUgaGFzdGVkLCBpZiBpdCB3ZXJlIHBvc3NpYmxlIGZvciBoaW0sIHRvIGJlIGF0IEplcnVzYWxlbSB0aGUgZGF5IG9mIFBlbnRlY29zdC4KQW5kIGZyb20gTWlsZXR1cyBoZSBzZW50IHRvIEVwaGVzdXMsIGFuZCBjYWxsZWQgdGhlIGVsZGVycyBvZiB0aGUgY2h1cmNoLgpBbmQgd2hlbiB0aGV5IHdlcmUgY29tZSB0byBoaW0sIGhlIHNhaWQgdW50byB0aGVtLCBZZSBrbm93LCBmcm9tIHRoZSBmaXJzdCBkYXkgdGhhdCBJIGNhbWUgaW50byBBc2lhLCBhZnRlciB3aGF0IG1hbm5lciBJIGhhdmUgYmVlbiB3aXRoIHlvdSBhdCBhbGwgc2Vhc29ucywKU2VydmluZyB0aGUgTE9SRCB3aXRoIGFsbCBodW1pbGl0eSBvZiBtaW5kLCBhbmQgd2l0aCBtYW55IHRlYXJzLCBhbmQgdGVtcHRhdGlvbnMsIHdoaWNoIGJlZmVsbCBtZSBieSB0aGUgbHlpbmcgaW4gd2FpdCBvZiB0aGUgSmV3czoKQW5kIGhvdyBJIGtlcHQgYmFjayBub3RoaW5nIHRoYXQgd2FzIHByb2ZpdGFibGUgdW50byB5b3UsIGJ1dCBoYXZlIHNoZXdlZCB5b3UsIGFuZCBoYXZlIHRhdWdodCB5b3UgcHVibGlja2x5LCBhbmQgZnJvbSBob3VzZSB0byBob3VzZSwKVGVzdGlmeWluZyBib3RoIHRvIHRoZSBKZXdzLCBhbmQgYWxzbyB0byB0aGUgR3JlZWtzLCByZXBlbnRhbmNlIHRvd2FyZCBHb2QsIGFuZCBmYWl0aCB0b3dhcmQgb3VyIExvcmQgSmVzdXMgQ2hyaXN0LgpBbmQgbm93LCBiZWhvbGQsIEkgZ28gYm91bmQgaW4gdGhlIHNwaXJpdCB1bnRvIEplcnVzYWxlbSwgbm90IGtub3dpbmcgdGhlIHRoaW5ncyB0aGF0IHNoYWxsIGJlZmFsbCBtZSB0aGVyZToKU2F2ZSB0aGF0IHRoZSBIb2x5IEdob3N0IHdpdG5lc3NldGggaW4gZXZlcnkgY2l0eSwgc2F5aW5nIHRoYXQgYm9uZHMgYW5kIGFmZmxpY3Rpb25zIGFiaWRlIG1lLgpCdXQgbm9uZSBvZiB0aGVzZSB0aGluZ3MgbW92ZSBtZSwgbmVpdGhlciBjb3VudCBJIG15IGxpZmUgZGVhciB1bnRvIG15c2VsZiwgc28gdGhhdCBJIG1pZ2h0IGZpbmlzaCBteSBjb3Vyc2Ugd2l0aCBqb3ksIGFuZCB0aGUgbWluaXN0cnksIHdoaWNoIEkgaGF2ZSByZWNlaXZlZCBvZiB0aGUgTG9yZCBKZXN1cywgdG8gdGVzdGlmeSB0aGUgZ29zcGVsIG9mIHRoZSBncmFjZSBvZiBHb2QuCkFuZCBub3csIGJlaG9sZCwgSSBrbm93IHRoYXQgeWUgYWxsLCBhbW9uZyB3aG9tIEkgaGF2ZSBnb25lIHByZWFjaGluZyB0aGUga2luZ2RvbSBvZiBHb2QsIHNoYWxsIHNlZSBteSBmYWNlIG5vIG1vcmUuCldoZXJlZm9yZSBJIHRha2UgeW91IHRvIHJlY29yZCB0aGlzIGRheSwgdGhhdCBJIGFtIHB1cmUgZnJvbSB0aGUgYmxvb2Qgb2YgYWxsIG1lbi4KRm9yIEkgaGF2ZSBub3Qgc2h1bm5lZCB0byBkZWNsYXJlIHVudG8geW91IGFsbCB0aGUgY291bnNlbCBvZiBHb2QuClRha2UgaGVlZCB0aGVyZWZvcmUgdW50byB5b3Vyc2VsdmVzLCBhbmQgdG8gYWxsIHRoZSBmbG9jaywgb3ZlciB0aGUgd2hpY2ggdGhlIEhvbHkgR2hvc3QgaGF0aCBtYWRlIHlvdSBvdmVyc2VlcnMsIHRvIGZlZWQgdGhlIGNodXJjaCBvZiBHb2QsIHdoaWNoIGhlIGhhdGggcHVyY2hhc2VkIHdpdGggaGlzIG93biBibG9vZC4KRm9yIEkga25vdyB0aGlzLCB0aGF0IGFmdGVyIG15IGRlcGFydGluZyBzaGFsbCBncmlldm91cyB3b2x2ZXMgZW50ZXIgaW4gYW1vbmcgeW91LCBub3Qgc3BhcmluZyB0aGUgZmxvY2suCkFsc28gb2YgeW91ciBvd24gc2VsdmVzIHNoYWxsIG1lbiBhcmlzZSwgc3BlYWtpbmcgcGVydmVyc2UgdGhpbmdzLCB0byBkcmF3IGF3YXkgZGlzY2lwbGVzIGFmdGVyIHRoZW0uClRoZXJlZm9yZSB3YXRjaCwgYW5kIHJlbWVtYmVyLCB0aGF0IGJ5IHRoZSBzcGFjZSBvZiB0aHJlZSB5ZWFycyBJIGNlYXNlZCBub3QgdG8gd2FybiBldmVyeSBvbmUgbmlnaHQgYW5kIGRheSB3aXRoIHRlYXJzLgpBbmQgbm93LCBicmV0aHJlbiwgSSBjb21tZW5kIHlvdSB0byBHb2QsIGFuZCB0byB0aGUgd29yZCBvZiBoaXMgZ3JhY2UsIHdoaWNoIGlzIGFibGUgdG8gYnVpbGQgeW91IHVwLCBhbmQgdG8gZ2l2ZSB5b3UgYW4gaW5oZXJpdGFuY2UgYW1vbmcgYWxsIHRoZW0gd2hpY2ggYXJlIHNhbmN0aWZpZWQuCkkgaGF2ZSBjb3ZldGVkIG5vIG1hbidzIHNpbHZlciwgb3IgZ29sZCwgb3IgYXBwYXJlbC4KWWVhLCB5ZSB5b3Vyc2VsdmVzIGtub3csIHRoYXQgdGhlc2UgaGFuZHMgaGF2ZSBtaW5pc3RlcmVkIHVudG8gbXkgbmVjZXNzaXRpZXMsIGFuZCB0byB0aGVtIHRoYXQgd2VyZSB3aXRoIG1lLgpJIGhhdmUgc2hld2VkIHlvdSBhbGwgdGhpbmdzLCBob3cgdGhhdCBzbyBsYWJvdXJpbmcgeWUgb3VnaHQgdG8gc3VwcG9ydCB0aGUgd2VhaywgYW5kIHRvIHJlbWVtYmVyIHRoZSB3b3JkcyBvZiB0aGUgTG9yZCBKZXN1cywgaG93IGhlIHNhaWQsIEl0IGlzIG1vcmUgYmxlc3NlZCB0byBnaXZlIHRoYW4gdG8gcmVjZWl2ZS4KQW5kIHdoZW4gaGUgaGFkIHRodXMgc3Bva2VuLCBoZSBrbmVlbGVkIGRvd24sIGFuZCBwcmF5ZWQgd2l0aCB0aGVtIGFsbC4KQW5kIHRoZXkgYWxsIHdlcHQgc29yZSwgYW5kIGZlbGwgb24gUGF1bCdzIG5lY2ssIGFuZCBraXNzZWQgaGltLApTb3Jyb3dpbmcgbW9zdCBvZiBhbGwgZm9yIHRoZSB3b3JkcyB3aGljaCBoZSBzcGFrZSwgdGhhdCB0aGV5IHNob3VsZCBzZWUgaGlzIGZhY2Ugbm8gbW9yZS4gQW5kIHRoZXkgYWNjb21wYW5pZWQgaGltIHVudG8gdGhlIHNoaXAuCkFuZCBpdCBjYW1lIHRvIHBhc3MsIHRoYXQgYWZ0ZXIgd2Ugd2VyZSBnb3R0ZW4gZnJvbSB0aGVtLCBhbmQgaGFkIGxhdW5jaGVkLCB3ZSBjYW1lIHdpdGggYSBzdHJhaWdodCBjb3Vyc2UgdW50byBDb29zLCBhbmQgdGhlIGRheSBmb2xsb3dpbmcgdW50byBSaG9kZXMsIGFuZCBmcm9tIHRoZW5jZSB1bnRvIFBhdGFyYToKQW5kIGZpbmRpbmcgYSBzaGlwIHNhaWxpbmcgb3ZlciB1bnRvIFBoZW5pY2lhLCB3ZSB3ZW50IGFib2FyZCwgYW5kIHNldCBmb3J0aC4KTm93IHdoZW4gd2UgaGFkIGRpc2NvdmVyZWQgQ3lwcnVzLCB3ZSBsZWZ0IGl0IG9uIHRoZSBsZWZ0IGhhbmQsIGFuZCBzYWlsZWQgaW50byBTeXJpYSwgYW5kIGxhbmRlZCBhdCBUeXJlOiBmb3IgdGhlcmUgdGhlIHNoaXAgd2FzIHRvIHVubGFkZSBoZXIgYnVyZGVuLgpBbmQgZmluZGluZyBkaXNjaXBsZXMsIHdlIHRhcnJpZWQgdGhlcmUgc2V2ZW4gZGF5czogd2hvIHNhaWQgdG8gUGF1bCB0aHJvdWdoIHRoZSBTcGlyaXQsIHRoYXQgaGUgc2hvdWxkIG5vdCBnbyB1cCB0byBKZXJ1c2FsZW0uCkFuZCB3aGVuIHdlIGhhZCBhY2NvbXBsaXNoZWQgdGhvc2UgZGF5cywgd2UgZGVwYXJ0ZWQgYW5kIHdlbnQgb3VyIHdheTsgYW5kIHRoZXkgYWxsIGJyb3VnaHQgdXMgb24gb3VyIHdheSwgd2l0aCB3aXZlcyBhbmQgY2hpbGRyZW4sIHRpbGwgd2Ugd2VyZSBvdXQgb2YgdGhlIGNpdHk6IGFuZCB3ZSBrbmVlbGVkIGRvd24gb24gdGhlIHNob3JlLCBhbmQgcHJheWVkLgpBbmQgd2hlbiB3ZSBoYWQgdGFrZW4gb3VyIGxlYXZlIG9uZSBvZiBhbm90aGVyLCB3ZSB0b29rIHNoaXA7IGFuZCB0aGV5IHJldHVybmVkIGhvbWUgYWdhaW4uCkFuZCB3aGVuIHdlIGhhZCBmaW5pc2hlZCBvdXIgY291cnNlIGZyb20gVHlyZSwgd2UgY2FtZSB0byBQdG9sZW1haXMsIGFuZCBzYWx1dGVkIHRoZSBicmV0aHJlbiwgYW5kIGFib2RlIHdpdGggdGhlbSBvbmUgZGF5LgpBbmQgdGhlIG5leHQgZGF5IHdlIHRoYXQgd2VyZSBvZiBQYXVsJ3MgY29tcGFueSBkZXBhcnRlZCwgYW5kIGNhbWUgdW50byBDYWVzYXJlYTogYW5kIHdlIGVudGVyZWQgaW50byB0aGUgaG91c2Ugb2YgUGhpbGlwIHRoZSBldmFuZ2VsaXN0LCB3aGljaCB3YXMgb25lIG9mIHRoZSBzZXZlbjsgYW5kIGFib2RlIHdpdGggaGltLgpBbmQgdGhlIHNhbWUgbWFuIGhhZCBmb3VyIGRhdWdodGVycywgdmlyZ2lucywgd2hpY2ggZGlkIHByb3BoZXN5LgpBbmQgYXMgd2UgdGFycmllZCB0aGVyZSBtYW55IGRheXMsIHRoZXJlIGNhbWUgZG93biBmcm9tIEp1ZGFlYSBhIGNlcnRhaW4gcHJvcGhldCwgbmFtZWQgQWdhYnVzLgpBbmQgd2hlbiBoZSB3YXMgY29tZSB1bnRvIHVzLCBoZSB0b29rIFBhdWwncyBnaXJkbGUsIGFuZCBib3VuZCBoaXMgb3duIGhhbmRzIGFuZCBmZWV0LCBhbmQgc2FpZCwgVGh1cyBzYWl0aCB0aGUgSG9seSBHaG9zdCwgU28gc2hhbGwgdGhlIEpld3MgYXQgSmVydXNhbGVtIGJpbmQgdGhlIG1hbiB0aGF0IG93bmV0aCB0aGlzIGdpcmRsZSwgYW5kIHNoYWxsIGRlbGl2ZXIgaGltIGludG8gdGhlIGhhbmRzIG9mIHRoZSBHZW50aWxlcy4KQW5kIHdoZW4gd2UgaGVhcmQgdGhlc2UgdGhpbmdzLCBib3RoIHdlLCBhbmQgdGhleSBvZiB0aGF0IHBsYWNlLCBiZXNvdWdodCBoaW0gbm90IHRvIGdvIHVwIHRvIEplcnVzYWxlbS4KVGhlbiBQYXVsIGFuc3dlcmVkLCBXaGF0IG1lYW4geWUgdG8gd2VlcCBhbmQgdG8gYnJlYWsgbWluZSBoZWFydD8gZm9yIEkgYW0gcmVhZHkgbm90IHRvIGJlIGJvdW5kIG9ubHksIGJ1dCBhbHNvIHRvIGRpZSBhdCBKZXJ1c2FsZW0gZm9yIHRoZSBuYW1lIG9mIHRoZSBMb3JkIEplc3VzLgpBbmQgd2hlbiBoZSB3b3VsZCBub3QgYmUgcGVyc3VhZGVkLCB3ZSBjZWFzZWQsIHNheWluZywgVGhlIHdpbGwgb2YgdGhlIExvcmQgYmUgZG9uZS4KQW5kIGFmdGVyIHRob3NlIGRheXMgd2UgdG9vayB1cCBvdXIgY2FycmlhZ2VzLCBhbmQgd2VudCB1cCB0byBKZXJ1c2FsZW0uClRoZXJlIHdlbnQgd2l0aCB1cyBhbHNvIGNlcnRhaW4gb2YgdGhlIGRpc2NpcGxlcyBvZiBDYWVzYXJlYSwgYW5kIGJyb3VnaHQgd2l0aCB0aGVtIG9uZSBNbmFzb24gb2YgQ3lwcnVzLCBhbiBvbGQgZGlzY2lwbGUsIHdpdGggd2hvbSB3ZSBzaG91bGQgbG9kZ2UuCkFuZCB3aGVuIHdlIHdlcmUgY29tZSB0byBKZXJ1c2FsZW0sIHRoZSBicmV0aHJlbiByZWNlaXZlZCB1cyBnbGFkbHkuCkFuZCB0aGUgZGF5IGZvbGxvd2luZyBQYXVsIHdlbnQgaW4gd2l0aCB1cyB1bnRvIEphbWVzOyBhbmQgYWxsIHRoZSBlbGRlcnMgd2VyZSBwcmVzZW50LgpBbmQgd2hlbiBoZSBoYWQgc2FsdXRlZCB0aGVtLCBoZSBkZWNsYXJlZCBwYXJ0aWN1bGFybHkgd2hhdCB0aGluZ3MgR29kIGhhZCB3cm91Z2h0IGFtb25nIHRoZSBHZW50aWxlcyBieSBoaXMgbWluaXN0cnkuCkFuZCB3aGVuIHRoZXkgaGVhcmQgaXQsIHRoZXkgZ2xvcmlmaWVkIHRoZSBMb3JkLCBhbmQgc2FpZCB1bnRvIGhpbSwgVGhvdSBzZWVzdCwgYnJvdGhlciwgaG93IG1hbnkgdGhvdXNhbmRzIG9mIEpld3MgdGhlcmUgYXJlIHdoaWNoIGJlbGlldmU7IGFuZCB0aGV5IGFyZSBhbGwgemVhbG91cyBvZiB0aGUgbGF3OgpBbmQgdGhleSBhcmUgaW5mb3JtZWQgb2YgdGhlZSwgdGhhdCB0aG91IHRlYWNoZXN0IGFsbCB0aGUgSmV3cyB3aGljaCBhcmUgYW1vbmcgdGhlIEdlbnRpbGVzIHRvIGZvcnNha2UgTW9zZXMsIHNheWluZyB0aGF0IHRoZXkgb3VnaHQgbm90IHRvIGNpcmN1bWNpc2UgdGhlaXIgY2hpbGRyZW4sIG5laXRoZXIgdG8gd2FsayBhZnRlciB0aGUgY3VzdG9tcy4KV2hhdCBpcyBpdCB0aGVyZWZvcmU/IHRoZSBtdWx0aXR1ZGUgbXVzdCBuZWVkcyBjb21lIHRvZ2V0aGVyOiBmb3IgdGhleSB3aWxsIGhlYXIgdGhhdCB0aG91IGFydCBjb21lLgpEbyB0aGVyZWZvcmUgdGhpcyB0aGF0IHdlIHNheSB0byB0aGVlOiBXZSBoYXZlIGZvdXIgbWVuIHdoaWNoIGhhdmUgYSB2b3cgb24gdGhlbTsKVGhlbSB0YWtlLCBhbmQgcHVyaWZ5IHRoeXNlbGYgd2l0aCB0aGVtLCBhbmQgYmUgYXQgY2hhcmdlcyB3aXRoIHRoZW0sIHRoYXQgdGhleSBtYXkgc2hhdmUgdGhlaXIgaGVhZHM6IGFuZCBhbGwgbWF5IGtub3cgdGhhdCB0aG9zZSB0aGluZ3MsIHdoZXJlb2YgdGhleSB3ZXJlIGluZm9ybWVkIGNvbmNlcm5pbmcgdGhlZSwgYXJlIG5vdGhpbmc7IGJ1dCB0aGF0IHRob3UgdGh5c2VsZiBhbHNvIHdhbGtlc3Qgb3JkZXJseSwgYW5kIGtlZXBlc3QgdGhlIGxhdy4KQXMgdG91Y2hpbmcgdGhlIEdlbnRpbGVzIHdoaWNoIGJlbGlldmUsIHdlIGhhdmUgd3JpdHRlbiBhbmQgY29uY2x1ZGVkIHRoYXQgdGhleSBvYnNlcnZlIG5vIHN1Y2ggdGhpbmcsIHNhdmUgb25seSB0aGF0IHRoZXkga2VlcCB0aGVtc2VsdmVzIGZyb20gdGhpbmdzIG9mZmVyZWQgdG8gaWRvbHMsIGFuZCBmcm9tIGJsb29kLCBhbmQgZnJvbSBzdHJhbmdsZWQsIGFuZCBmcm9tIGZvcm5pY2F0aW9uLgpUaGVuIFBhdWwgdG9vayB0aGUgbWVuLCBhbmQgdGhlIG5leHQgZGF5IHB1cmlmeWluZyBoaW1zZWxmIHdpdGggdGhlbSBlbnRlcmVkIGludG8gdGhlIHRlbXBsZSwgdG8gc2lnbmlmeSB0aGUgYWNjb21wbGlzaG1lbnQgb2YgdGhlIGRheXMgb2YgcHVyaWZpY2F0aW9uLCB1bnRpbCB0aGF0IGFuIG9mZmVyaW5nIHNob3VsZCBiZSBvZmZlcmVkIGZvciBldmVyeSBvbmUgb2YgdGhlbS4KQW5kIHdoZW4gdGhlIHNldmVuIGRheXMgd2VyZSBhbG1vc3QgZW5kZWQsIHRoZSBKZXdzIHdoaWNoIHdlcmUgb2YgQXNpYSwgd2hlbiB0aGV5IHNhdyBoaW0gaW4gdGhlIHRlbXBsZSwgc3RpcnJlZCB1cCBhbGwgdGhlIHBlb3BsZSwgYW5kIGxhaWQgaGFuZHMgb24gaGltLApDcnlpbmcgb3V0LCBNZW4gb2YgSXNyYWVsLCBoZWxwOiBUaGlzIGlzIHRoZSBtYW4sIHRoYXQgdGVhY2hldGggYWxsIG1lbiBldmVyeSB3aGVyZSBhZ2FpbnN0IHRoZSBwZW9wbGUsIGFuZCB0aGUgbGF3LCBhbmQgdGhpcyBwbGFjZTogYW5kIGZ1cnRoZXIgYnJvdWdodCBHcmVla3MgYWxzbyBpbnRvIHRoZSB0ZW1wbGUsIGFuZCBoYXRoIHBvbGx1dGVkIHRoaXMgaG9seSBwbGFjZS4KKEZvciB0aGV5IGhhZCBzZWVuIGJlZm9yZSB3aXRoIGhpbSBpbiB0aGUgY2l0eSBUcm9waGltdXMgYW4gRXBoZXNpYW4sIHdob20gdGhleSBzdXBwb3NlZCB0aGF0IFBhdWwgaGFkIGJyb3VnaHQgaW50byB0aGUgdGVtcGxlLikKQW5kIGFsbCB0aGUgY2l0eSB3YXMgbW92ZWQsIGFuZCB0aGUgcGVvcGxlIHJhbiB0b2dldGhlcjogYW5kIHRoZXkgdG9vayBQYXVsLCBhbmQgZHJldyBoaW0gb3V0IG9mIHRoZSB0ZW1wbGU6IGFuZCBmb3J0aHdpdGggdGhlIGRvb3JzIHdlcmUgc2h1dC4KQW5kIGFzIHRoZXkgd2VudCBhYm91dCB0byBraWxsIGhpbSwgdGlkaW5ncyBjYW1lIHVudG8gdGhlIGNoaWVmIGNhcHRhaW4gb2YgdGhlIGJhbmQsIHRoYXQgYWxsIEplcnVzYWxlbSB3YXMgaW4gYW4gdXByb2FyLgpXaG8gaW1tZWRpYXRlbHkgdG9vayBzb2xkaWVycyBhbmQgY2VudHVyaW9ucywgYW5kIHJhbiBkb3duIHVudG8gdGhlbTogYW5kIHdoZW4gdGhleSBzYXcgdGhlIGNoaWVmIGNhcHRhaW4gYW5kIHRoZSBzb2xkaWVycywgdGhleSBsZWZ0IGJlYXRpbmcgb2YgUGF1bC4KVGhlbiB0aGUgY2hpZWYgY2FwdGFpbiBjYW1lIG5lYXIsIGFuZCB0b29rIGhpbSwgYW5kIGNvbW1hbmRlZCBoaW0gdG8gYmUgYm91bmQgd2l0aCB0d28gY2hhaW5zOyBhbmQgZGVtYW5kZWQgd2hvIGhlIHdhcywgYW5kIHdoYXQgaGUgaGFkIGRvbmUuCkFuZCBzb21lIGNyaWVkIG9uZSB0aGluZywgc29tZSBhbm90aGVyLCBhbW9uZyB0aGUgbXVsdGl0dWRlOiBhbmQgd2hlbiBoZSBjb3VsZCBub3Qga25vdyB0aGUgY2VydGFpbnR5IGZvciB0aGUgdHVtdWx0LCBoZSBjb21tYW5kZWQgaGltIHRvIGJlIGNhcnJpZWQgaW50byB0aGUgY2FzdGxlLgpBbmQgd2hlbiBoZSBjYW1lIHVwb24gdGhlIHN0YWlycywgc28gaXQgd2FzLCB0aGF0IGhlIHdhcyBib3JuZSBvZiB0aGUgc29sZGllcnMgZm9yIHRoZSB2aW9sZW5jZSBvZiB0aGUgcGVvcGxlLgpGb3IgdGhlIG11bHRpdHVkZSBvZiB0aGUgcGVvcGxlIGZvbGxvd2VkIGFmdGVyLCBjcnlpbmcsIEF3YXkgd2l0aCBoaW0uCkFuZCBhcyBQYXVsIHdhcyB0byBiZSBsZWQgaW50byB0aGUgY2FzdGxlLCBoZSBzYWlkIHVudG8gdGhlIGNoaWVmIGNhcHRhaW4sIE1heSBJIHNwZWFrIHVudG8gdGhlZT8gV2hvIHNhaWQsIENhbnN0IHRob3Ugc3BlYWsgR3JlZWs/CkFydCBub3QgdGhvdSB0aGF0IEVneXB0aWFuLCB3aGljaCBiZWZvcmUgdGhlc2UgZGF5cyBtYWRlc3QgYW4gdXByb2FyLCBhbmQgbGVkZGVzdCBvdXQgaW50byB0aGUgd2lsZGVybmVzcyBmb3VyIHRob3VzYW5kIG1lbiB0aGF0IHdlcmUgbXVyZGVyZXJzPwpCdXQgUGF1bCBzYWlkLCBJIGFtIGEgbWFuIHdoaWNoIGFtIGEgSmV3IG9mIFRhcnN1cywgYSBjaXR5IGluIENpbGljaWEsIGEgY2l0aXplbiBvZiBubyBtZWFuIGNpdHk6IGFuZCwgSSBiZXNlZWNoIHRoZWUsIHN1ZmZlciBtZSB0byBzcGVhayB1bnRvIHRoZSBwZW9wbGUuCkFuZCB3aGVuIGhlIGhhZCBnaXZlbiBoaW0gbGljZW5jZSwgUGF1bCBzdG9vZCBvbiB0aGUgc3RhaXJzLCBhbmQgYmVja29uZWQgd2l0aCB0aGUgaGFuZCB1bnRvIHRoZSBwZW9wbGUuIEFuZCB3aGVuIHRoZXJlIHdhcyBtYWRlIGEgZ3JlYXQgc2lsZW5jZSwgaGUgc3Bha2UgdW50byB0aGVtIGluIHRoZSBIZWJyZXcgdG9uZ3VlLCBzYXlpbmcsCk1lbiwgYnJldGhyZW4sIGFuZCBmYXRoZXJzLCBoZWFyIHllIG15IGRlZmVuY2Ugd2hpY2ggSSBtYWtlIG5vdyB1bnRvIHlvdS4KKEFuZCB3aGVuIHRoZXkgaGVhcmQgdGhhdCBoZSBzcGFrZSBpbiB0aGUgSGVicmV3IHRvbmd1ZSB0byB0aGVtLCB0aGV5IGtlcHQgdGhlIG1vcmUgc2lsZW5jZTogYW5kIGhlIHNhaXRoLCkKSSBhbSB2ZXJpbHkgYSBtYW4gd2hpY2ggYW0gYSBKZXcsIGJvcm4gaW4gVGFyc3VzLCBhIGNpdHkgaW4gQ2lsaWNpYSwgeWV0IGJyb3VnaHQgdXAgaW4gdGhpcyBjaXR5IGF0IHRoZSBmZWV0IG9mIEdhbWFsaWVsLCBhbmQgdGF1Z2h0IGFjY29yZGluZyB0byB0aGUgcGVyZmVjdCBtYW5uZXIgb2YgdGhlIGxhdyBvZiB0aGUgZmF0aGVycywgYW5kIHdhcyB6ZWFsb3VzIHRvd2FyZCBHb2QsIGFzIHllIGFsbCBhcmUgdGhpcyBkYXkuCkFuZCBJIHBlcnNlY3V0ZWQgdGhpcyB3YXkgdW50byB0aGUgZGVhdGgsIGJpbmRpbmcgYW5kIGRlbGl2ZXJpbmcgaW50byBwcmlzb25zIGJvdGggbWVuIGFuZCB3b21lbi4KQXMgYWxzbyB0aGUgaGlnaCBwcmllc3QgZG90aCBiZWFyIG1lIHdpdG5lc3MsIGFuZCBhbGwgdGhlIGVzdGF0ZSBvZiB0aGUgZWxkZXJzOiBmcm9tIHdob20gYWxzbyBJIHJlY2VpdmVkIGxldHRlcnMgdW50byB0aGUgYnJldGhyZW4sIGFuZCB3ZW50IHRvIERhbWFzY3VzLCB0byBicmluZyB0aGVtIHdoaWNoIHdlcmUgdGhlcmUgYm91bmQgdW50byBKZXJ1c2FsZW0sIGZvciB0byBiZSBwdW5pc2hlZC4KQW5kIGl0IGNhbWUgdG8gcGFzcywgdGhhdCwgYXMgSSBtYWRlIG15IGpvdXJuZXksIGFuZCB3YXMgY29tZSBuaWdoIHVudG8gRGFtYXNjdXMgYWJvdXQgbm9vbiwgc3VkZGVubHkgdGhlcmUgc2hvbmUgZnJvbSBoZWF2ZW4gYSBncmVhdCBsaWdodCByb3VuZCBhYm91dCBtZS4KQW5kIEkgZmVsbCB1bnRvIHRoZSBncm91bmQsIGFuZCBoZWFyZCBhIHZvaWNlIHNheWluZyB1bnRvIG1lLCBTYXVsLCBTYXVsLCB3aHkgcGVyc2VjdXRlc3QgdGhvdSBtZT8KQW5kIEkgYW5zd2VyZWQsIFdobyBhcnQgdGhvdSwgTG9yZD8gQW5kIGhlIHNhaWQgdW50byBtZSwgSSBhbSBKZXN1cyBvZiBOYXphcmV0aCwgd2hvbSB0aG91IHBlcnNlY3V0ZXN0LgpBbmQgdGhleSB0aGF0IHdlcmUgd2l0aCBtZSBzYXcgaW5kZWVkIHRoZSBsaWdodCwgYW5kIHdlcmUgYWZyYWlkOyBidXQgdGhleSBoZWFyZCBub3QgdGhlIHZvaWNlIG9mIGhpbSB0aGF0IHNwYWtlIHRvIG1lLgpBbmQgSSBzYWlkLCBXaGF0IHNoYWxsIEkgZG8sIExPUkQ/IEFuZCB0aGUgTG9yZCBzYWlkIHVudG8gbWUsIEFyaXNlLCBhbmQgZ28gaW50byBEYW1hc2N1czsgYW5kIHRoZXJlIGl0IHNoYWxsIGJlIHRvbGQgdGhlZSBvZiBhbGwgdGhpbmdzIHdoaWNoIGFyZSBhcHBvaW50ZWQgZm9yIHRoZWUgdG8gZG8uCkFuZCB3aGVuIEkgY291bGQgbm90IHNlZSBmb3IgdGhlIGdsb3J5IG9mIHRoYXQgbGlnaHQsIGJlaW5nIGxlZCBieSB0aGUgaGFuZCBvZiB0aGVtIHRoYXQgd2VyZSB3aXRoIG1lLCBJIGNhbWUgaW50byBEYW1hc2N1cy4KQW5kIG9uZSBBbmFuaWFzLCBhIGRldm91dCBtYW4gYWNjb3JkaW5nIHRvIHRoZSBsYXcsIGhhdmluZyBhIGdvb2QgcmVwb3J0IG9mIGFsbCB0aGUgSmV3cyB3aGljaCBkd2VsdCB0aGVyZSwKQ2FtZSB1bnRvIG1lLCBhbmQgc3Rvb2QsIGFuZCBzYWlkIHVudG8gbWUsIEJyb3RoZXIgU2F1bCwgcmVjZWl2ZSB0aHkgc2lnaHQuIEFuZCB0aGUgc2FtZSBob3VyIEkgbG9va2VkIHVwIHVwb24gaGltLgpBbmQgaGUgc2FpZCwgVGhlIEdvZCBvZiBvdXIgZmF0aGVycyBoYXRoIGNob3NlbiB0aGVlLCB0aGF0IHRob3Ugc2hvdWxkZXN0IGtub3cgaGlzIHdpbGwsIGFuZCBzZWUgdGhhdCBKdXN0IE9uZSwgYW5kIHNob3VsZGVzdCBoZWFyIHRoZSB2b2ljZSBvZiBoaXMgbW91dGguCkZvciB0aG91IHNoYWx0IGJlIGhpcyB3aXRuZXNzIHVudG8gYWxsIG1lbiBvZiB3aGF0IHRob3UgaGFzdCBzZWVuIGFuZCBoZWFyZC4KQW5kIG5vdyB3aHkgdGFycmllc3QgdGhvdT8gYXJpc2UsIGFuZCBiZSBiYXB0aXplZCwgYW5kIHdhc2ggYXdheSB0aHkgc2lucywgY2FsbGluZyBvbiB0aGUgbmFtZSBvZiB0aGUgTG9yZC4KQW5kIGl0IGNhbWUgdG8gcGFzcywgdGhhdCwgd2hlbiBJIHdhcyBjb21lIGFnYWluIHRvIEplcnVzYWxlbSwgZXZlbiB3aGlsZSBJIHByYXllZCBpbiB0aGUgdGVtcGxlLCBJIHdhcyBpbiBhIHRyYW5jZTsKQW5kIHNhdyBoaW0gc2F5aW5nIHVudG8gbWUsIE1ha2UgaGFzdGUsIGFuZCBnZXQgdGhlZSBxdWlja2x5IG91dCBvZiBKZXJ1c2FsZW06IGZvciB0aGV5IHdpbGwgbm90IHJlY2VpdmUgdGh5IHRlc3RpbW9ueSBjb25jZXJuaW5nIG1lLgpBbmQgSSBzYWlkLCBMb3JkLCB0aGV5IGtub3cgdGhhdCBJIGltcHJpc29uZWQgYW5kIGJlYXQgaW4gZXZlcnkgc3luYWdvZ3VlIHRoZW0gdGhhdCBiZWxpZXZlZCBvbiB0aGVlOgpBbmQgd2hlbiB0aGUgYmxvb2Qgb2YgdGh5IG1hcnR5ciBTdGVwaGVuIHdhcyBzaGVkLCBJIGFsc28gd2FzIHN0YW5kaW5nIGJ5LCBhbmQgY29uc2VudGluZyB1bnRvIGhpcyBkZWF0aCwgYW5kIGtlcHQgdGhlIHJhaW1lbnQgb2YgdGhlbSB0aGF0IHNsZXcgaGltLgpBbmQgaGUgc2FpZCB1bnRvIG1lLCBEZXBhcnQ6IGZvciBJIHdpbGwgc2VuZCB0aGVlIGZhciBoZW5jZSB1bnRvIHRoZSBHZW50aWxlcy4KQW5kIHRoZXkgZ2F2ZSBoaW0gYXVkaWVuY2UgdW50byB0aGlzIHdvcmQsIGFuZCB0aGVuIGxpZnRlZCB1cCB0aGVpciB2b2ljZXMsIGFuZCBzYWlkLCBBd2F5IHdpdGggc3VjaCBhIGZlbGxvdyBmcm9tIHRoZSBlYXJ0aDogZm9yIGl0IGlzIG5vdCBmaXQgdGhhdCBoZSBzaG91bGQgbGl2ZS4KQW5kIGFzIHRoZXkgY3JpZWQgb3V0LCBhbmQgY2FzdCBvZmYgdGhlaXIgY2xvdGhlcywgYW5kIHRocmV3IGR1c3QgaW50byB0aGUgYWlyLApUaGUgY2hpZWYgY2FwdGFpbiBjb21tYW5kZWQgaGltIHRvIGJlIGJyb3VnaHQgaW50byB0aGUgY2FzdGxlLCBhbmQgYmFkZSB0aGF0IGhlIHNob3VsZCBiZSBleGFtaW5lZCBieSBzY291cmdpbmc7IHRoYXQgaGUgbWlnaHQga25vdyB3aGVyZWZvcmUgdGhleSBjcmllZCBzbyBhZ2FpbnN0IGhpbS4KQW5kIGFzIHRoZXkgYm91bmQgaGltIHdpdGggdGhvbmdzLCBQYXVsIHNhaWQgdW50byB0aGUgY2VudHVyaW9uIHRoYXQgc3Rvb2QgYnksIElzIGl0IGxhd2Z1bCBmb3IgeW91IHRvIHNjb3VyZ2UgYSBtYW4gdGhhdCBpcyBhIFJvbWFuLCBhbmQgdW5jb25kZW1uZWQ/CldoZW4gdGhlIGNlbnR1cmlvbiBoZWFyZCB0aGF0LCBoZSB3ZW50IGFuZCB0b2xkIHRoZSBjaGllZiBjYXB0YWluLCBzYXlpbmcsIFRha2UgaGVlZCB3aGF0IHRob3UgZG9lc3Q6IGZvciB0aGlzIG1hbiBpcyBhIFJvbWFuLgpUaGVuIHRoZSBjaGllZiBjYXB0YWluIGNhbWUsIGFuZCBzYWlkIHVudG8gaGltLCBUZWxsIG1lLCBhcnQgdGhvdSBhIFJvbWFuPyBIZSBzYWlkLCBZZWEuCkFuZCB0aGUgY2hpZWYgY2FwdGFpbiBhbnN3ZXJlZCwgV2l0aCBhIGdyZWF0IHN1bSBvYnRhaW5lZCBJIHRoaXMgZnJlZWRvbS4gQW5kIFBhdWwgc2FpZCwgQnV0IEkgd2FzIGZyZWUgYm9ybi4KVGhlbiBzdHJhaWdodHdheSB0aGV5IGRlcGFydGVkIGZyb20gaGltIHdoaWNoIHNob3VsZCBoYXZlIGV4YW1pbmVkIGhpbTogYW5kIHRoZSBjaGllZiBjYXB0YWluIGFsc28gd2FzIGFmcmFpZCwgYWZ0ZXIgaGUga25ldyB0aGF0IGhlIHdhcyBhIFJvbWFuLCBhbmQgYmVjYXVzZSBoZSBoYWQgYm91bmQgaGltLgpPbiB0aGUgbW9ycm93LCBiZWNhdXNlIGhlIHdvdWxkIGhhdmUga25vd24gdGhlIGNlcnRhaW50eSB3aGVyZWZvcmUgaGUgd2FzIGFjY3VzZWQgb2YgdGhlIEpld3MsIGhlIGxvb3NlZCBoaW0gZnJvbSBoaXMgYmFuZHMsIGFuZCBjb21tYW5kZWQgdGhlIGNoaWVmIHByaWVzdHMgYW5kIGFsbCB0aGVpciBjb3VuY2lsIHRvIGFwcGVhciwgYW5kIGJyb3VnaHQgUGF1bCBkb3duLCBhbmQgc2V0IGhpbSBiZWZvcmUgdGhlbS4KQW5kIFBhdWwsIGVhcm5lc3RseSBiZWhvbGRpbmcgdGhlIGNvdW5jaWwsIHNhaWQsIE1lbiBhbmQgYnJldGhyZW4sIEkgaGF2ZSBsaXZlZCBpbiBhbGwgZ29vZCBjb25zY2llbmNlIGJlZm9yZSBHb2QgdW50aWwgdGhpcyBkYXkuCkFuZCB0aGUgaGlnaCBwcmllc3QgQW5hbmlhcyBjb21tYW5kZWQgdGhlbSB0aGF0IHN0b29kIGJ5IGhpbSB0byBzbWl0ZSBoaW0gb24gdGhlIG1vdXRoLgpUaGVuIHNhaWQgUGF1bCB1bnRvIGhpbSwgR29kIHNoYWxsIHNtaXRlIHRoZWUsIHRob3Ugd2hpdGVkIHdhbGw6IGZvciBzaXR0ZXN0IHRob3UgdG8ganVkZ2UgbWUgYWZ0ZXIgdGhlIGxhdywgYW5kIGNvbW1hbmRlc3QgbWUgdG8gYmUgc21pdHRlbiBjb250cmFyeSB0byB0aGUgbGF3PwpBbmQgdGhleSB0aGF0IHN0b29kIGJ5IHNhaWQsIFJldmlsZXN0IHRob3UgR29kJ3MgaGlnaCBwcmllc3Q/ClRoZW4gc2FpZCBQYXVsLCBJIHdpc3Qgbm90LCBicmV0aHJlbiwgdGhhdCBoZSB3YXMgdGhlIGhpZ2ggcHJpZXN0OiBmb3IgaXQgaXMgd3JpdHRlbiwgVGhvdSBzaGFsdCBub3Qgc3BlYWsgZXZpbCBvZiB0aGUgcnVsZXIgb2YgdGh5IHBlb3BsZS4KQnV0IHdoZW4gUGF1bCBwZXJjZWl2ZWQgdGhhdCB0aGUgb25lIHBhcnQgd2VyZSBTYWRkdWNlZXMsIGFuZCB0aGUgb3RoZXIgUGhhcmlzZWVzLCBoZSBjcmllZCBvdXQgaW4gdGhlIGNvdW5jaWwsIE1lbiBhbmQgYnJldGhyZW4sIEkgYW0gYSBQaGFyaXNlZSwgdGhlIHNvbiBvZiBhIFBoYXJpc2VlOiBvZiB0aGUgaG9wZSBhbmQgcmVzdXJyZWN0aW9uIG9mIHRoZSBkZWFkIEkgYW0gY2FsbGVkIGluIHF1ZXN0aW9uLgpBbmQgd2hlbiBoZSBoYWQgc28gc2FpZCwgdGhlcmUgYXJvc2UgYSBkaXNzZW5zaW9uIGJldHdlZW4gdGhlIFBoYXJpc2VlcyBhbmQgdGhlIFNhZGR1Y2VlczogYW5kIHRoZSBtdWx0aXR1ZGUgd2FzIGRpdmlkZWQuCkZvciB0aGUgU2FkZHVjZWVzIHNheSB0aGF0IHRoZXJlIGlzIG5vIHJlc3VycmVjdGlvbiwgbmVpdGhlciBhbmdlbCwgbm9yIHNwaXJpdDogYnV0IHRoZSBQaGFyaXNlZXMgY29uZmVzcyBib3RoLgpBbmQgdGhlcmUgYXJvc2UgYSBncmVhdCBjcnk6IGFuZCB0aGUgc2NyaWJlcyB0aGF0IHdlcmUgb2YgdGhlIFBoYXJpc2VlcycgcGFydCBhcm9zZSwgYW5kIHN0cm92ZSwgc2F5aW5nLCBXZSBmaW5kIG5vIGV2aWwgaW4gdGhpcyBtYW46IGJ1dCBpZiBhIHNwaXJpdCBvciBhbiBhbmdlbCBoYXRoIHNwb2tlbiB0byBoaW0sIGxldCB1cyBub3QgZmlnaHQgYWdhaW5zdCBHb2QuCkFuZCB3aGVuIHRoZXJlIGFyb3NlIGEgZ3JlYXQgZGlzc2Vuc2lvbiwgdGhlIGNoaWVmIGNhcHRhaW4sIGZlYXJpbmcgbGVzdCBQYXVsIHNob3VsZCBoYXZlIGJlZW4gcHVsbGVkIGluIHBpZWNlcyBvZiB0aGVtLCBjb21tYW5kZWQgdGhlIHNvbGRpZXJzIHRvIGdvIGRvd24sIGFuZCB0byB0YWtlIGhpbSBieSBmb3JjZSBmcm9tIGFtb25nIHRoZW0sIGFuZCB0byBicmluZyBoaW0gaW50byB0aGUgY2FzdGxlLgpBbmQgdGhlIG5pZ2h0IGZvbGxvd2luZyB0aGUgTG9yZCBzdG9vZCBieSBoaW0sIGFuZCBzYWlkLCBCZSBvZiBnb29kIGNoZWVyLCBQYXVsOiBmb3IgYXMgdGhvdSBoYXN0IHRlc3RpZmllZCBvZiBtZSBpbiBKZXJ1c2FsZW0sIHNvIG11c3QgdGhvdSBiZWFyIHdpdG5lc3MgYWxzbyBhdCBSb21lLgpBbmQgd2hlbiBpdCB3YXMgZGF5LCBjZXJ0YWluIG9mIHRoZSBKZXdzIGJhbmRlZCB0b2dldGhlciwgYW5kIGJvdW5kIHRoZW1zZWx2ZXMgdW5kZXIgYSBjdXJzZSwgc2F5aW5nIHRoYXQgdGhleSB3b3VsZCBuZWl0aGVyIGVhdCBub3IgZHJpbmsgdGlsbCB0aGV5IGhhZCBraWxsZWQgUGF1bC4KQW5kIHRoZXkgd2VyZSBtb3JlIHRoYW4gZm9ydHkgd2hpY2ggaGFkIG1hZGUgdGhpcyBjb25zcGlyYWN5LgpBbmQgdGhleSBjYW1lIHRvIHRoZSBjaGllZiBwcmllc3RzIGFuZCBlbGRlcnMsIGFuZCBzYWlkLCBXZSBoYXZlIGJvdW5kIG91cnNlbHZlcyB1bmRlciBhIGdyZWF0IGN1cnNlLCB0aGF0IHdlIHdpbGwgZWF0IG5vdGhpbmcgdW50aWwgd2UgaGF2ZSBzbGFpbiBQYXVsLgpOb3cgdGhlcmVmb3JlIHllIHdpdGggdGhlIGNvdW5jaWwgc2lnbmlmeSB0byB0aGUgY2hpZWYgY2FwdGFpbiB0aGF0IGhlIGJyaW5nIGhpbSBkb3duIHVudG8geW91IHRvIG1vcnJvdywgYXMgdGhvdWdoIHllIHdvdWxkIGVucXVpcmUgc29tZXRoaW5nIG1vcmUgcGVyZmVjdGx5IGNvbmNlcm5pbmcgaGltOiBhbmQgd2UsIG9yIGV2ZXIgaGUgY29tZSBuZWFyLCBhcmUgcmVhZHkgdG8ga2lsbCBoaW0uCkFuZCB3aGVuIFBhdWwncyBzaXN0ZXIncyBzb24gaGVhcmQgb2YgdGhlaXIgbHlpbmcgaW4gd2FpdCwgaGUgd2VudCBhbmQgZW50ZXJlZCBpbnRvIHRoZSBjYXN0bGUsIGFuZCB0b2xkIFBhdWwuClRoZW4gUGF1bCBjYWxsZWQgb25lIG9mIHRoZSBjZW50dXJpb25zIHVudG8gaGltLCBhbmQgc2FpZCwgQnJpbmcgdGhpcyB5b3VuZyBtYW4gdW50byB0aGUgY2hpZWYgY2FwdGFpbjogZm9yIGhlIGhhdGggYSBjZXJ0YWluIHRoaW5nIHRvIHRlbGwgaGltLgpTbyBoZSB0b29rIGhpbSwgYW5kIGJyb3VnaHQgaGltIHRvIHRoZSBjaGllZiBjYXB0YWluLCBhbmQgc2FpZCwgUGF1bCB0aGUgcHJpc29uZXIgY2FsbGVkIG1lIHVudG8gaGltLCBhbmQgcHJheWVkIG1lIHRvIGJyaW5nIHRoaXMgeW91bmcgbWFuIHVudG8gdGhlZSwgd2hvIGhhdGggc29tZXRoaW5nIHRvIHNheSB1bnRvIHRoZWUuClRoZW4gdGhlIGNoaWVmIGNhcHRhaW4gdG9vayBoaW0gYnkgdGhlIGhhbmQsIGFuZCB3ZW50IHdpdGggaGltIGFzaWRlIHByaXZhdGVseSwgYW5kIGFza2VkIGhpbSwgV2hhdCBpcyB0aGF0IHRob3UgaGFzdCB0byB0ZWxsIG1lPwpBbmQgaGUgc2FpZCwgVGhlIEpld3MgaGF2ZSBhZ3JlZWQgdG8gZGVzaXJlIHRoZWUgdGhhdCB0aG91IHdvdWxkZXN0IGJyaW5nIGRvd24gUGF1bCB0byBtb3Jyb3cgaW50byB0aGUgY291bmNpbCwgYXMgdGhvdWdoIHRoZXkgd291bGQgZW5xdWlyZSBzb21ld2hhdCBvZiBoaW0gbW9yZSBwZXJmZWN0bHkuCkJ1dCBkbyBub3QgdGhvdSB5aWVsZCB1bnRvIHRoZW06IGZvciB0aGVyZSBsaWUgaW4gd2FpdCBmb3IgaGltIG9mIHRoZW0gbW9yZSB0aGFuIGZvcnR5IG1lbiwgd2hpY2ggaGF2ZSBib3VuZCB0aGVtc2VsdmVzIHdpdGggYW4gb2F0aCwgdGhhdCB0aGV5IHdpbGwgbmVpdGhlciBlYXQgbm9yIGRyaW5rIHRpbGwgdGhleSBoYXZlIGtpbGxlZCBoaW06IGFuZCBub3cgYXJlIHRoZXkgcmVhZHksIGxvb2tpbmcgZm9yIGEgcHJvbWlzZSBmcm9tIHRoZWUuClNvIHRoZSBjaGllZiBjYXB0YWluIHRoZW4gbGV0IHRoZSB5b3VuZyBtYW4gZGVwYXJ0LCBhbmQgY2hhcmdlZCBoaW0sIFNlZSB0aG91IHRlbGwgbm8gbWFuIHRoYXQgdGhvdSBoYXN0IHNoZXdlZCB0aGVzZSB0aGluZ3MgdG8gbWUuCkFuZCBoZSBjYWxsZWQgdW50byBoaW0gdHdvIGNlbnR1cmlvbnMsIHNheWluZywgTWFrZSByZWFkeSB0d28gaHVuZHJlZCBzb2xkaWVycyB0byBnbyB0byBDYWVzYXJlYSwgYW5kIGhvcnNlbWVuIHRocmVlc2NvcmUgYW5kIHRlbiwgYW5kIHNwZWFybWVuIHR3byBodW5kcmVkLCBhdCB0aGUgdGhpcmQgaG91ciBvZiB0aGUgbmlnaHQ7CkFuZCBwcm92aWRlIHRoZW0gYmVhc3RzLCB0aGF0IHRoZXkgbWF5IHNldCBQYXVsIG9uLCBhbmQgYnJpbmcgaGltIHNhZmUgdW50byBGZWxpeCB0aGUgZ292ZXJub3IuCkFuZCBoZSB3cm90ZSBhIGxldHRlciBhZnRlciB0aGlzIG1hbm5lcjoKQ2xhdWRpdXMgTHlzaWFzIHVudG8gdGhlIG1vc3QgZXhjZWxsZW50IGdvdmVybm9yIEZlbGl4IHNlbmRldGggZ3JlZXRpbmcuClRoaXMgbWFuIHdhcyB0YWtlbiBvZiB0aGUgSmV3cywgYW5kIHNob3VsZCBoYXZlIGJlZW4ga2lsbGVkIG9mIHRoZW06IHRoZW4gY2FtZSBJIHdpdGggYW4gYXJteSwgYW5kIHJlc2N1ZWQgaGltLCBoYXZpbmcgdW5kZXJzdG9vZCB0aGF0IGhlIHdhcyBhIFJvbWFuLgpBbmQgd2hlbiBJIHdvdWxkIGhhdmUga25vd24gdGhlIGNhdXNlIHdoZXJlZm9yZSB0aGV5IGFjY3VzZWQgaGltLCBJIGJyb3VnaHQgaGltIGZvcnRoIGludG8gdGhlaXIgY291bmNpbDoKV2hvbSBJIHBlcmNlaXZlZCB0byBiZSBhY2N1c2VkIG9mIHF1ZXN0aW9ucyBvZiB0aGVpciBsYXcsIGJ1dCB0byBoYXZlIG5vdGhpbmcgbGFpZCB0byBoaXMgY2hhcmdlIHdvcnRoeSBvZiBkZWF0aCBvciBvZiBib25kcy4KQW5kIHdoZW4gaXQgd2FzIHRvbGQgbWUgaG93IHRoYXQgdGhlIEpld3MgbGFpZCB3YWl0IGZvciB0aGUgbWFuLCBJIHNlbnQgc3RyYWlnaHR3YXkgdG8gdGhlZSwgYW5kIGdhdmUgY29tbWFuZG1lbnQgdG8gaGlzIGFjY3VzZXJzIGFsc28gdG8gc2F5IGJlZm9yZSB0aGVlIHdoYXQgdGhleSBoYWQgYWdhaW5zdCBoaW0uIEZhcmV3ZWxsLgpUaGVuIHRoZSBzb2xkaWVycywgYXMgaXQgd2FzIGNvbW1hbmRlZCB0aGVtLCB0b29rIFBhdWwsIGFuZCBicm91Z2h0IGhpbSBieSBuaWdodCB0byBBbnRpcGF0cmlzLgpPbiB0aGUgbW9ycm93IHRoZXkgbGVmdCB0aGUgaG9yc2VtZW4gdG8gZ28gd2l0aCBoaW0sIGFuZCByZXR1cm5lZCB0byB0aGUgY2FzdGxlOgpXaG8sIHdoZW4gdGhleSBjYW1lIHRvIENhZXNhcmVhIGFuZCBkZWxpdmVyZWQgdGhlIGVwaXN0bGUgdG8gdGhlIGdvdmVybm9yLCBwcmVzZW50ZWQgUGF1bCBhbHNvIGJlZm9yZSBoaW0uCkFuZCB3aGVuIHRoZSBnb3Zlcm5vciBoYWQgcmVhZCB0aGUgbGV0dGVyLCBoZSBhc2tlZCBvZiB3aGF0IHByb3ZpbmNlIGhlIHdhcy4gQW5kIHdoZW4gaGUgdW5kZXJzdG9vZCB0aGF0IGhlIHdhcyBvZiBDaWxpY2lhOwpJIHdpbGwgaGVhciB0aGVlLCBzYWlkIGhlLCB3aGVuIHRoaW5lIGFjY3VzZXJzIGFyZSBhbHNvIGNvbWUuIEFuZCBoZSBjb21tYW5kZWQgaGltIHRvIGJlIGtlcHQgaW4gSGVyb2QncyBqdWRnbWVudCBoYWxsLgpBbmQgYWZ0ZXIgZml2ZSBkYXlzIEFuYW5pYXMgdGhlIGhpZ2ggcHJpZXN0IGRlc2NlbmRlZCB3aXRoIHRoZSBlbGRlcnMsIGFuZCB3aXRoIGEgY2VydGFpbiBvcmF0b3IgbmFtZWQgVGVydHVsbHVzLCB3aG8gaW5mb3JtZWQgdGhlIGdvdmVybm9yIGFnYWluc3QgUGF1bC4KQW5kIHdoZW4gaGUgd2FzIGNhbGxlZCBmb3J0aCwgVGVydHVsbHVzIGJlZ2FuIHRvIGFjY3VzZSBoaW0sIHNheWluZywgU2VlaW5nIHRoYXQgYnkgdGhlZSB3ZSBlbmpveSBncmVhdCBxdWlldG5lc3MsIGFuZCB0aGF0IHZlcnkgd29ydGh5IGRlZWRzIGFyZSBkb25lIHVudG8gdGhpcyBuYXRpb24gYnkgdGh5IHByb3ZpZGVuY2UsCldlIGFjY2VwdCBpdCBhbHdheXMsIGFuZCBpbiBhbGwgcGxhY2VzLCBtb3N0IG5vYmxlIEZlbGl4LCB3aXRoIGFsbCB0aGFua2Z1bG5lc3MuCk5vdHdpdGhzdGFuZGluZywgdGhhdCBJIGJlIG5vdCBmdXJ0aGVyIHRlZGlvdXMgdW50byB0aGVlLCBJIHByYXkgdGhlZSB0aGF0IHRob3Ugd291bGRlc3QgaGVhciB1cyBvZiB0aHkgY2xlbWVuY3kgYSBmZXcgd29yZHMuCkZvciB3ZSBoYXZlIGZvdW5kIHRoaXMgbWFuIGEgcGVzdGlsZW50IGZlbGxvdywgYW5kIGEgbW92ZXIgb2Ygc2VkaXRpb24gYW1vbmcgYWxsIHRoZSBKZXdzIHRocm91Z2hvdXQgdGhlIHdvcmxkLCBhbmQgYSByaW5nbGVhZGVyIG9mIHRoZSBzZWN0IG9mIHRoZSBOYXphcmVuZXM6CldobyBhbHNvIGhhdGggZ29uZSBhYm91dCB0byBwcm9mYW5lIHRoZSB0ZW1wbGU6IHdob20gd2UgdG9vaywgYW5kIHdvdWxkIGhhdmUganVkZ2VkIGFjY29yZGluZyB0byBvdXIgbGF3LgpCdXQgdGhlIGNoaWVmIGNhcHRhaW4gTHlzaWFzIGNhbWUgdXBvbiB1cywgYW5kIHdpdGggZ3JlYXQgdmlvbGVuY2UgdG9vayBoaW0gYXdheSBvdXQgb2Ygb3VyIGhhbmRzLApDb21tYW5kaW5nIGhpcyBhY2N1c2VycyB0byBjb21lIHVudG8gdGhlZTogYnkgZXhhbWluaW5nIG9mIHdob20gdGh5c2VsZiBtYXllc3QgdGFrZSBrbm93bGVkZ2Ugb2YgYWxsIHRoZXNlIHRoaW5ncywgd2hlcmVvZiB3ZSBhY2N1c2UgaGltLgpBbmQgdGhlIEpld3MgYWxzbyBhc3NlbnRlZCwgc2F5aW5nIHRoYXQgdGhlc2UgdGhpbmdzIHdlcmUgc28uClRoZW4gUGF1bCwgYWZ0ZXIgdGhhdCB0aGUgZ292ZXJub3IgaGFkIGJlY2tvbmVkIHVudG8gaGltIHRvIHNwZWFrLCBhbnN3ZXJlZCwgRm9yYXNtdWNoIGFzIEkga25vdyB0aGF0IHRob3UgaGFzdCBiZWVuIG9mIG1hbnkgeWVhcnMgYSBqdWRnZSB1bnRvIHRoaXMgbmF0aW9uLCBJIGRvIHRoZSBtb3JlIGNoZWVyZnVsbHkgYW5zd2VyIGZvciBteXNlbGY6CkJlY2F1c2UgdGhhdCB0aG91IG1heWVzdCB1bmRlcnN0YW5kLCB0aGF0IHRoZXJlIGFyZSB5ZXQgYnV0IHR3ZWx2ZSBkYXlzIHNpbmNlIEkgd2VudCB1cCB0byBKZXJ1c2FsZW0gZm9yIHRvIHdvcnNoaXAuCkFuZCB0aGV5IG5laXRoZXIgZm91bmQgbWUgaW4gdGhlIHRlbXBsZSBkaXNwdXRpbmcgd2l0aCBhbnkgbWFuLCBuZWl0aGVyIHJhaXNpbmcgdXAgdGhlIHBlb3BsZSwgbmVpdGhlciBpbiB0aGUgc3luYWdvZ3Vlcywgbm9yIGluIHRoZSBjaXR5OgpOZWl0aGVyIGNhbiB0aGV5IHByb3ZlIHRoZSB0aGluZ3Mgd2hlcmVvZiB0aGV5IG5vdyBhY2N1c2UgbWUuCkJ1dCB0aGlzIEkgY29uZmVzcyB1bnRvIHRoZWUsIHRoYXQgYWZ0ZXIgdGhlIHdheSB3aGljaCB0aGV5IGNhbGwgaGVyZXN5LCBzbyB3b3JzaGlwIEkgdGhlIEdvZCBvZiBteSBmYXRoZXJzLCBiZWxpZXZpbmcgYWxsIHRoaW5ncyB3aGljaCBhcmUgd3JpdHRlbiBpbiB0aGUgbGF3IGFuZCBpbiB0aGUgcHJvcGhldHM6CkFuZCBoYXZlIGhvcGUgdG93YXJkIEdvZCwgd2hpY2ggdGhleSB0aGVtc2VsdmVzIGFsc28gYWxsb3csIHRoYXQgdGhlcmUgc2hhbGwgYmUgYSByZXN1cnJlY3Rpb24gb2YgdGhlIGRlYWQsIGJvdGggb2YgdGhlIGp1c3QgYW5kIHVuanVzdC4KQW5kIGhlcmVpbiBkbyBJIGV4ZXJjaXNlIG15c2VsZiwgdG8gaGF2ZSBhbHdheXMgYSBjb25zY2llbmNlIHZvaWQgdG8gb2ZmZW5jZSB0b3dhcmQgR29kLCBhbmQgdG93YXJkIG1lbi4KTm93IGFmdGVyIG1hbnkgeWVhcnMgSSBjYW1lIHRvIGJyaW5nIGFsbXMgdG8gbXkgbmF0aW9uLCBhbmQgb2ZmZXJpbmdzLgpXaGVyZXVwb24gY2VydGFpbiBKZXdzIGZyb20gQXNpYSBmb3VuZCBtZSBwdXJpZmllZCBpbiB0aGUgdGVtcGxlLCBuZWl0aGVyIHdpdGggbXVsdGl0dWRlLCBub3Igd2l0aCB0dW11bHQuCldobyBvdWdodCB0byBoYXZlIGJlZW4gaGVyZSBiZWZvcmUgdGhlZSwgYW5kIG9iamVjdCwgaWYgdGhleSBoYWQgb3VnaHQgYWdhaW5zdCBtZS4KT3IgZWxzZSBsZXQgdGhlc2Ugc2FtZSBoZXJlIHNheSwgaWYgdGhleSBoYXZlIGZvdW5kIGFueSBldmlsIGRvaW5nIGluIG1lLCB3aGlsZSBJIHN0b29kIGJlZm9yZSB0aGUgY291bmNpbCwKRXhjZXB0IGl0IGJlIGZvciB0aGlzIG9uZSB2b2ljZSwgdGhhdCBJIGNyaWVkIHN0YW5kaW5nIGFtb25nIHRoZW0sIFRvdWNoaW5nIHRoZSByZXN1cnJlY3Rpb24gb2YgdGhlIGRlYWQgSSBhbSBjYWxsZWQgaW4gcXVlc3Rpb24gYnkgeW91IHRoaXMgZGF5LgpBbmQgd2hlbiBGZWxpeCBoZWFyZCB0aGVzZSB0aGluZ3MsIGhhdmluZyBtb3JlIHBlcmZlY3Qga25vd2xlZGdlIG9mIHRoYXQgd2F5LCBoZSBkZWZlcnJlZCB0aGVtLCBhbmQgc2FpZCwgV2hlbiBMeXNpYXMgdGhlIGNoaWVmIGNhcHRhaW4gc2hhbGwgY29tZSBkb3duLCBJIHdpbGwga25vdyB0aGUgdXR0ZXJtb3N0IG9mIHlvdXIgbWF0dGVyLgpBbmQgaGUgY29tbWFuZGVkIGEgY2VudHVyaW9uIHRvIGtlZXAgUGF1bCwgYW5kIHRvIGxldCBoaW0gaGF2ZSBsaWJlcnR5LCBhbmQgdGhhdCBoZSBzaG91bGQgZm9yYmlkIG5vbmUgb2YgaGlzIGFjcXVhaW50YW5jZSB0byBtaW5pc3RlciBvciBjb21lIHVudG8gaGltLgpBbmQgYWZ0ZXIgY2VydGFpbiBkYXlzLCB3aGVuIEZlbGl4IGNhbWUgd2l0aCBoaXMgd2lmZSBEcnVzaWxsYSwgd2hpY2ggd2FzIGEgSmV3ZXNzLCBoZSBzZW50IGZvciBQYXVsLCBhbmQgaGVhcmQgaGltIGNvbmNlcm5pbmcgdGhlIGZhaXRoIGluIENocmlzdC4KQW5kIGFzIGhlIHJlYXNvbmVkIG9mIHJpZ2h0ZW91c25lc3MsIHRlbXBlcmFuY2UsIGFuZCBqdWRnbWVudCB0byBjb21lLCBGZWxpeCB0cmVtYmxlZCwgYW5kIGFuc3dlcmVkLCBHbyB0aHkgd2F5IGZvciB0aGlzIHRpbWU7IHdoZW4gSSBoYXZlIGEgY29udmVuaWVudCBzZWFzb24sIEkgd2lsbCBjYWxsIGZvciB0aGVlLgpIZSBob3BlZCBhbHNvIHRoYXQgbW9uZXkgc2hvdWxkIGhhdmUgYmVlbiBnaXZlbiBoaW0gb2YgUGF1bCwgdGhhdCBoZSBtaWdodCBsb29zZSBoaW06IHdoZXJlZm9yZSBoZSBzZW50IGZvciBoaW0gdGhlIG9mdGVuZXIsIGFuZCBjb21tdW5lZCB3aXRoIGhpbS4KQnV0IGFmdGVyIHR3byB5ZWFycyBQb3JjaXVzIEZlc3R1cyBjYW1lIGludG8gRmVsaXgnIHJvb206IGFuZCBGZWxpeCwgd2lsbGluZyB0byBzaGV3IHRoZSBKZXdzIGEgcGxlYXN1cmUsIGxlZnQgUGF1bCBib3VuZC4KTm93IHdoZW4gRmVzdHVzIHdhcyBjb21lIGludG8gdGhlIHByb3ZpbmNlLCBhZnRlciB0aHJlZSBkYXlzIGhlIGFzY2VuZGVkIGZyb20gQ2Flc2FyZWEgdG8gSmVydXNhbGVtLgpUaGVuIHRoZSBoaWdoIHByaWVzdCBhbmQgdGhlIGNoaWVmIG9mIHRoZSBKZXdzIGluZm9ybWVkIGhpbSBhZ2FpbnN0IFBhdWwsIGFuZCBiZXNvdWdodCBoaW0sCkFuZCBkZXNpcmVkIGZhdm91ciBhZ2FpbnN0IGhpbSwgdGhhdCBoZSB3b3VsZCBzZW5kIGZvciBoaW0gdG8gSmVydXNhbGVtLCBsYXlpbmcgd2FpdCBpbiB0aGUgd2F5IHRvIGtpbGwgaGltLgpCdXQgRmVzdHVzIGFuc3dlcmVkLCB0aGF0IFBhdWwgc2hvdWxkIGJlIGtlcHQgYXQgQ2Flc2FyZWEsIGFuZCB0aGF0IGhlIGhpbXNlbGYgd291bGQgZGVwYXJ0IHNob3J0bHkgdGhpdGhlci4KTGV0IHRoZW0gdGhlcmVmb3JlLCBzYWlkIGhlLCB3aGljaCBhbW9uZyB5b3UgYXJlIGFibGUsIGdvIGRvd24gd2l0aCBtZSwgYW5kIGFjY3VzZSB0aGlzIG1hbiwgaWYgdGhlcmUgYmUgYW55IHdpY2tlZG5lc3MgaW4gaGltLgpBbmQgd2hlbiBoZSBoYWQgdGFycmllZCBhbW9uZyB0aGVtIG1vcmUgdGhhbiB0ZW4gZGF5cywgaGUgd2VudCBkb3duIHVudG8gQ2Flc2FyZWE7IGFuZCB0aGUgbmV4dCBkYXkgc2l0dGluZyBvbiB0aGUganVkZ21lbnQgc2VhdCBjb21tYW5kZWQgUGF1bCB0byBiZSBicm91Z2h0LgpBbmQgd2hlbiBoZSB3YXMgY29tZSwgdGhlIEpld3Mgd2hpY2ggY2FtZSBkb3duIGZyb20gSmVydXNhbGVtIHN0b29kIHJvdW5kIGFib3V0LCBhbmQgbGFpZCBtYW55IGFuZCBncmlldm91cyBjb21wbGFpbnRzIGFnYWluc3QgUGF1bCwgd2hpY2ggdGhleSBjb3VsZCBub3QgcHJvdmUuCldoaWxlIGhlIGFuc3dlcmVkIGZvciBoaW1zZWxmLCBOZWl0aGVyIGFnYWluc3QgdGhlIGxhdyBvZiB0aGUgSmV3cywgbmVpdGhlciBhZ2FpbnN0IHRoZSB0ZW1wbGUsIG5vciB5ZXQgYWdhaW5zdCBDYWVzYXIsIGhhdmUgSSBvZmZlbmRlZCBhbnkgdGhpbmcgYXQgYWxsLgpCdXQgRmVzdHVzLCB3aWxsaW5nIHRvIGRvIHRoZSBKZXdzIGEgcGxlYXN1cmUsIGFuc3dlcmVkIFBhdWwsIGFuZCBzYWlkLCBXaWx0IHRob3UgZ28gdXAgdG8gSmVydXNhbGVtLCBhbmQgdGhlcmUgYmUganVkZ2VkIG9mIHRoZXNlIHRoaW5ncyBiZWZvcmUgbWU/ClRoZW4gc2FpZCBQYXVsLCBJIHN0YW5kIGF0IENhZXNhcidzIGp1ZGdtZW50IHNlYXQsIHdoZXJlIEkgb3VnaHQgdG8gYmUganVkZ2VkOiB0byB0aGUgSmV3cyBoYXZlIEkgZG9uZSBubyB3cm9uZywgYXMgdGhvdSB2ZXJ5IHdlbGwga25vd2VzdC4KRm9yIGlmIEkgYmUgYW4gb2ZmZW5kZXIsIG9yIGhhdmUgY29tbWl0dGVkIGFueSB0aGluZyB3b3J0aHkgb2YgZGVhdGgsIEkgcmVmdXNlIG5vdCB0byBkaWU6IGJ1dCBpZiB0aGVyZSBiZSBub25lIG9mIHRoZXNlIHRoaW5ncyB3aGVyZW9mIHRoZXNlIGFjY3VzZSBtZSwgbm8gbWFuIG1heSBkZWxpdmVyIG1lIHVudG8gdGhlbS4gSSBhcHBlYWwgdW50byBDYWVzYXIuClRoZW4gRmVzdHVzLCB3aGVuIGhlIGhhZCBjb25mZXJyZWQgd2l0aCB0aGUgY291bmNpbCwgYW5zd2VyZWQsIEhhc3QgdGhvdSBhcHBlYWxlZCB1bnRvIENhZXNhcj8gdW50byBDYWVzYXIgc2hhbHQgdGhvdSBnby4KQW5kIGFmdGVyIGNlcnRhaW4gZGF5cyBraW5nIEFncmlwcGEgYW5kIEJlcm5pY2UgY2FtZSB1bnRvIENhZXNhcmVhIHRvIHNhbHV0ZSBGZXN0dXMuCkFuZCB3aGVuIHRoZXkgaGFkIGJlZW4gdGhlcmUgbWFueSBkYXlzLCBGZXN0dXMgZGVjbGFyZWQgUGF1bCdzIGNhdXNlIHVudG8gdGhlIGtpbmcsIHNheWluZywgVGhlcmUgaXMgYSBjZXJ0YWluIG1hbiBsZWZ0IGluIGJvbmRzIGJ5IEZlbGl4OgpBYm91dCB3aG9tLCB3aGVuIEkgd2FzIGF0IEplcnVzYWxlbSwgdGhlIGNoaWVmIHByaWVzdHMgYW5kIHRoZSBlbGRlcnMgb2YgdGhlIEpld3MgaW5mb3JtZWQgbWUsIGRlc2lyaW5nIHRvIGhhdmUganVkZ21lbnQgYWdhaW5zdCBoaW0uClRvIHdob20gSSBhbnN3ZXJlZCwgSXQgaXMgbm90IHRoZSBtYW5uZXIgb2YgdGhlIFJvbWFucyB0byBkZWxpdmVyIGFueSBtYW4gdG8gZGllLCBiZWZvcmUgdGhhdCBoZSB3aGljaCBpcyBhY2N1c2VkIGhhdmUgdGhlIGFjY3VzZXJzIGZhY2UgdG8gZmFjZSwgYW5kIGhhdmUgbGljZW5jZSB0byBhbnN3ZXIgZm9yIGhpbXNlbGYgY29uY2VybmluZyB0aGUgY3JpbWUgbGFpZCBhZ2FpbnN0IGhpbS4KVGhlcmVmb3JlLCB3aGVuIHRoZXkgd2VyZSBjb21lIGhpdGhlciwgd2l0aG91dCBhbnkgZGVsYXkgb24gdGhlIG1vcnJvdyBJIHNhdCBvbiB0aGUganVkZ21lbnQgc2VhdCwgYW5kIGNvbW1hbmRlZCB0aGUgbWFuIHRvIGJlIGJyb3VnaHQgZm9ydGguCkFnYWluc3Qgd2hvbSB3aGVuIHRoZSBhY2N1c2VycyBzdG9vZCB1cCwgdGhleSBicm91Z2h0IG5vbmUgYWNjdXNhdGlvbiBvZiBzdWNoIHRoaW5ncyBhcyBJIHN1cHBvc2VkOgpCdXQgaGFkIGNlcnRhaW4gcXVlc3Rpb25zIGFnYWluc3QgaGltIG9mIHRoZWlyIG93biBzdXBlcnN0aXRpb24sIGFuZCBvZiBvbmUgSmVzdXMsIHdoaWNoIHdhcyBkZWFkLCB3aG9tIFBhdWwgYWZmaXJtZWQgdG8gYmUgYWxpdmUuCkFuZCBiZWNhdXNlIEkgZG91YnRlZCBvZiBzdWNoIG1hbm5lciBvZiBxdWVzdGlvbnMsIEkgYXNrZWQgaGltIHdoZXRoZXIgaGUgd291bGQgZ28gdG8gSmVydXNhbGVtLCBhbmQgdGhlcmUgYmUganVkZ2VkIG9mIHRoZXNlIG1hdHRlcnMuCkJ1dCB3aGVuIFBhdWwgaGFkIGFwcGVhbGVkIHRvIGJlIHJlc2VydmVkIHVudG8gdGhlIGhlYXJpbmcgb2YgQXVndXN0dXMsIEkgY29tbWFuZGVkIGhpbSB0byBiZSBrZXB0IHRpbGwgSSBtaWdodCBzZW5kIGhpbSB0byBDYWVzYXIuClRoZW4gQWdyaXBwYSBzYWlkIHVudG8gRmVzdHVzLCBJIHdvdWxkIGFsc28gaGVhciB0aGUgbWFuIG15c2VsZi4gVG8gbW9ycm93LCBzYWlkIGhlLCB0aG91IHNoYWx0IGhlYXIgaGltLgpBbmQgb24gdGhlIG1vcnJvdywgd2hlbiBBZ3JpcHBhIHdhcyBjb21lLCBhbmQgQmVybmljZSwgd2l0aCBncmVhdCBwb21wLCBhbmQgd2FzIGVudGVyZWQgaW50byB0aGUgcGxhY2Ugb2YgaGVhcmluZywgd2l0aCB0aGUgY2hpZWYgY2FwdGFpbnMsIGFuZCBwcmluY2lwYWwgbWVuIG9mIHRoZSBjaXR5LCBhdCBGZXN0dXMnIGNvbW1hbmRtZW50IFBhdWwgd2FzIGJyb3VnaHQgZm9ydGguCkFuZCBGZXN0dXMgc2FpZCwgS2luZyBBZ3JpcHBhLCBhbmQgYWxsIG1lbiB3aGljaCBhcmUgaGVyZSBwcmVzZW50IHdpdGggdXMsIHllIHNlZSB0aGlzIG1hbiwgYWJvdXQgd2hvbSBhbGwgdGhlIG11bHRpdHVkZSBvZiB0aGUgSmV3cyBoYXZlIGRlYWx0IHdpdGggbWUsIGJvdGggYXQgSmVydXNhbGVtLCBhbmQgYWxzbyBoZXJlLCBjcnlpbmcgdGhhdCBoZSBvdWdodCBub3QgdG8gbGl2ZSBhbnkgbG9uZ2VyLgpCdXQgd2hlbiBJIGZvdW5kIHRoYXQgaGUgaGFkIGNvbW1pdHRlZCBub3RoaW5nIHdvcnRoeSBvZiBkZWF0aCwgYW5kIHRoYXQgaGUgaGltc2VsZiBoYXRoIGFwcGVhbGVkIHRvIEF1Z3VzdHVzLCBJIGhhdmUgZGV0ZXJtaW5lZCB0byBzZW5kIGhpbS4KT2Ygd2hvbSBJIGhhdmUgbm8gY2VydGFpbiB0aGluZyB0byB3cml0ZSB1bnRvIG15IGxvcmQuIFdoZXJlZm9yZSBJIGhhdmUgYnJvdWdodCBoaW0gZm9ydGggYmVmb3JlIHlvdSwgYW5kIHNwZWNpYWxseSBiZWZvcmUgdGhlZSwgTyBraW5nIEFncmlwcGEsIHRoYXQsIGFmdGVyIGV4YW1pbmF0aW9uIGhhZCwgSSBtaWdodCBoYXZlIHNvbWV3aGF0IHRvIHdyaXRlLgpGb3IgaXQgc2VlbWV0aCB0byBtZSB1bnJlYXNvbmFibGUgdG8gc2VuZCBhIHByaXNvbmVyLCBhbmQgbm90IHdpdGhhbCB0byBzaWduaWZ5IHRoZSBjcmltZXMgbGFpZCBhZ2FpbnN0IGhpbS4KVGhlbiBBZ3JpcHBhIHNhaWQgdW50byBQYXVsLCBUaG91IGFydCBwZXJtaXR0ZWQgdG8gc3BlYWsgZm9yIHRoeXNlbGYuIFRoZW4gUGF1bCBzdHJldGNoZWQgZm9ydGggdGhlIGhhbmQsIGFuZCBhbnN3ZXJlZCBmb3IgaGltc2VsZjoKSSB0aGluayBteXNlbGYgaGFwcHksIGtpbmcgQWdyaXBwYSwgYmVjYXVzZSBJIHNoYWxsIGFuc3dlciBmb3IgbXlzZWxmIHRoaXMgZGF5IGJlZm9yZSB0aGVlIHRvdWNoaW5nIGFsbCB0aGUgdGhpbmdzIHdoZXJlb2YgSSBhbSBhY2N1c2VkIG9mIHRoZSBKZXdzOgpFc3BlY2lhbGx5IGJlY2F1c2UgSSBrbm93IHRoZWUgdG8gYmUgZXhwZXJ0IGluIGFsbCBjdXN0b21zIGFuZCBxdWVzdGlvbnMgd2hpY2ggYXJlIGFtb25nIHRoZSBKZXdzOiB3aGVyZWZvcmUgSSBiZXNlZWNoIHRoZWUgdG8gaGVhciBtZSBwYXRpZW50bHkuCk15IG1hbm5lciBvZiBsaWZlIGZyb20gbXkgeW91dGgsIHdoaWNoIHdhcyBhdCB0aGUgZmlyc3QgYW1vbmcgbWluZSBvd24gbmF0aW9uIGF0IEplcnVzYWxlbSwga25vdyBhbGwgdGhlIEpld3M7CldoaWNoIGtuZXcgbWUgZnJvbSB0aGUgYmVnaW5uaW5nLCBpZiB0aGV5IHdvdWxkIHRlc3RpZnksIHRoYXQgYWZ0ZXIgdGhlIG1vc3Qgc3RyYWl0ZXN0IHNlY3Qgb2Ygb3VyIHJlbGlnaW9uIEkgbGl2ZWQgYSBQaGFyaXNlZS4KQW5kIG5vdyBJIHN0YW5kIGFuZCBhbSBqdWRnZWQgZm9yIHRoZSBob3BlIG9mIHRoZSBwcm9taXNlIG1hZGUgb2YgR29kLCB1bnRvIG91ciBmYXRoZXJzOgpVbnRvIHdoaWNoIHByb21pc2Ugb3VyIHR3ZWx2ZSB0cmliZXMsIGluc3RhbnRseSBzZXJ2aW5nIEdvZCBkYXkgYW5kIG5pZ2h0LCBob3BlIHRvIGNvbWUuIEZvciB3aGljaCBob3BlJ3Mgc2FrZSwga2luZyBBZ3JpcHBhLCBJIGFtIGFjY3VzZWQgb2YgdGhlIEpld3MuCldoeSBzaG91bGQgaXQgYmUgdGhvdWdodCBhIHRoaW5nIGluY3JlZGlibGUgd2l0aCB5b3UsIHRoYXQgR29kIHNob3VsZCByYWlzZSB0aGUgZGVhZD8KSSB2ZXJpbHkgdGhvdWdodCB3aXRoIG15c2VsZiwgdGhhdCBJIG91Z2h0IHRvIGRvIG1hbnkgdGhpbmdzIGNvbnRyYXJ5IHRvIHRoZSBuYW1lIG9mIEplc3VzIG9mIE5hemFyZXRoLgpXaGljaCB0aGluZyBJIGFsc28gZGlkIGluIEplcnVzYWxlbTogYW5kIG1hbnkgb2YgdGhlIHNhaW50cyBkaWQgSSBzaHV0IHVwIGluIHByaXNvbiwgaGF2aW5nIHJlY2VpdmVkIGF1dGhvcml0eSBmcm9tIHRoZSBjaGllZiBwcmllc3RzOyBhbmQgd2hlbiB0aGV5IHdlcmUgcHV0IHRvIGRlYXRoLCBJIGdhdmUgbXkgdm9pY2UgYWdhaW5zdCB0aGVtLgpBbmQgSSBwdW5pc2hlZCB0aGVtIG9mdCBpbiBldmVyeSBzeW5hZ29ndWUsIGFuZCBjb21wZWxsZWQgdGhlbSB0byBibGFzcGhlbWU7IGFuZCBiZWluZyBleGNlZWRpbmdseSBtYWQgYWdhaW5zdCB0aGVtLCBJIHBlcnNlY3V0ZWQgdGhlbSBldmVuIHVudG8gc3RyYW5nZSBjaXRpZXMuCldoZXJldXBvbiBhcyBJIHdlbnQgdG8gRGFtYXNjdXMgd2l0aCBhdXRob3JpdHkgYW5kIGNvbW1pc3Npb24gZnJvbSB0aGUgY2hpZWYgcHJpZXN0cywKQXQgbWlkZGF5LCBPIGtpbmcsIEkgc2F3IGluIHRoZSB3YXkgYSBsaWdodCBmcm9tIGhlYXZlbiwgYWJvdmUgdGhlIGJyaWdodG5lc3Mgb2YgdGhlIHN1biwgc2hpbmluZyByb3VuZCBhYm91dCBtZSBhbmQgdGhlbSB3aGljaCBqb3VybmV5ZWQgd2l0aCBtZS4KQW5kIHdoZW4gd2Ugd2VyZSBhbGwgZmFsbGVuIHRvIHRoZSBlYXJ0aCwgSSBoZWFyZCBhIHZvaWNlIHNwZWFraW5nIHVudG8gbWUsIGFuZCBzYXlpbmcgaW4gdGhlIEhlYnJldyB0b25ndWUsIFNhdWwsIFNhdWwsIHdoeSBwZXJzZWN1dGVzdCB0aG91IG1lPyBpdCBpcyBoYXJkIGZvciB0aGVlIHRvIGtpY2sgYWdhaW5zdCB0aGUgcHJpY2tzLgpBbmQgSSBzYWlkLCBXaG8gYXJ0IHRob3UsIExvcmQ/IEFuZCBoZSBzYWlkLCBJIGFtIEplc3VzIHdob20gdGhvdSBwZXJzZWN1dGVzdC4KQnV0IHJpc2UsIGFuZCBzdGFuZCB1cG9uIHRoeSBmZWV0OiBmb3IgSSBoYXZlIGFwcGVhcmVkIHVudG8gdGhlZSBmb3IgdGhpcyBwdXJwb3NlLCB0byBtYWtlIHRoZWUgYSBtaW5pc3RlciBhbmQgYSB3aXRuZXNzIGJvdGggb2YgdGhlc2UgdGhpbmdzIHdoaWNoIHRob3UgaGFzdCBzZWVuLCBhbmQgb2YgdGhvc2UgdGhpbmdzIGluIHRoZSB3aGljaCBJIHdpbGwgYXBwZWFyIHVudG8gdGhlZTsKRGVsaXZlcmluZyB0aGVlIGZyb20gdGhlIHBlb3BsZSwgYW5kIGZyb20gdGhlIEdlbnRpbGVzLCB1bnRvIHdob20gbm93IEkgc2VuZCB0aGVlLApUbyBvcGVuIHRoZWlyIGV5ZXMsIGFuZCB0byB0dXJuIHRoZW0gZnJvbSBkYXJrbmVzcyB0byBsaWdodCwgYW5kIGZyb20gdGhlIHBvd2VyIG9mIFNhdGFuIHVudG8gR29kLCB0aGF0IHRoZXkgbWF5IHJlY2VpdmUgZm9yZ2l2ZW5lc3Mgb2Ygc2lucywgYW5kIGluaGVyaXRhbmNlIGFtb25nIHRoZW0gd2hpY2ggYXJlIHNhbmN0aWZpZWQgYnkgZmFpdGggdGhhdCBpcyBpbiBtZS4KV2hlcmV1cG9uLCBPIGtpbmcgQWdyaXBwYSwgSSB3YXMgbm90IGRpc29iZWRpZW50IHVudG8gdGhlIGhlYXZlbmx5IHZpc2lvbjoKQnV0IHNoZXdlZCBmaXJzdCB1bnRvIHRoZW0gb2YgRGFtYXNjdXMsIGFuZCBhdCBKZXJ1c2FsZW0sIGFuZCB0aHJvdWdob3V0IGFsbCB0aGUgY29hc3RzIG9mIEp1ZGFlYSwgYW5kIHRoZW4gdG8gdGhlIEdlbnRpbGVzLCB0aGF0IHRoZXkgc2hvdWxkIHJlcGVudCBhbmQgdHVybiB0byBHb2QsIGFuZCBkbyB3b3JrcyBtZWV0IGZvciByZXBlbnRhbmNlLgpGb3IgdGhlc2UgY2F1c2VzIHRoZSBKZXdzIGNhdWdodCBtZSBpbiB0aGUgdGVtcGxlLCBhbmQgd2VudCBhYm91dCB0byBraWxsIG1lLgpIYXZpbmcgdGhlcmVmb3JlIG9idGFpbmVkIGhlbHAgb2YgR29kLCBJIGNvbnRpbnVlIHVudG8gdGhpcyBkYXksIHdpdG5lc3NpbmcgYm90aCB0byBzbWFsbCBhbmQgZ3JlYXQsIHNheWluZyBub25lIG90aGVyIHRoaW5ncyB0aGFuIHRob3NlIHdoaWNoIHRoZSBwcm9waGV0cyBhbmQgTW9zZXMgZGlkIHNheSBzaG91bGQgY29tZToKVGhhdCBDaHJpc3Qgc2hvdWxkIHN1ZmZlciwgYW5kIHRoYXQgaGUgc2hvdWxkIGJlIHRoZSBmaXJzdCB0aGF0IHNob3VsZCByaXNlIGZyb20gdGhlIGRlYWQsIGFuZCBzaG91bGQgc2hldyBsaWdodCB1bnRvIHRoZSBwZW9wbGUsIGFuZCB0byB0aGUgR2VudGlsZXMuCkFuZCBhcyBoZSB0aHVzIHNwYWtlIGZvciBoaW1zZWxmLCBGZXN0dXMgc2FpZCB3aXRoIGEgbG91ZCB2b2ljZSwgUGF1bCwgdGhvdSBhcnQgYmVzaWRlIHRoeXNlbGY7IG11Y2ggbGVhcm5pbmcgZG90aCBtYWtlIHRoZWUgbWFkLgpCdXQgaGUgc2FpZCwgSSBhbSBub3QgbWFkLCBtb3N0IG5vYmxlIEZlc3R1czsgYnV0IHNwZWFrIGZvcnRoIHRoZSB3b3JkcyBvZiB0cnV0aCBhbmQgc29iZXJuZXNzLgpGb3IgdGhlIGtpbmcga25vd2V0aCBvZiB0aGVzZSB0aGluZ3MsIGJlZm9yZSB3aG9tIGFsc28gSSBzcGVhayBmcmVlbHk6IGZvciBJIGFtIHBlcnN1YWRlZCB0aGF0IG5vbmUgb2YgdGhlc2UgdGhpbmdzIGFyZSBoaWRkZW4gZnJvbSBoaW07IGZvciB0aGlzIHRoaW5nIHdhcyBub3QgZG9uZSBpbiBhIGNvcm5lci4KS2luZyBBZ3JpcHBhLCBiZWxpZXZlc3QgdGhvdSB0aGUgcHJvcGhldHM/IEkga25vdyB0aGF0IHRob3UgYmVsaWV2ZXN0LgpUaGVuIEFncmlwcGEgc2FpZCB1bnRvIFBhdWwsIEFsbW9zdCB0aG91IHBlcnN1YWRlc3QgbWUgdG8gYmUgYSBDaHJpc3RpYW4uCkFuZCBQYXVsIHNhaWQsIEkgd291bGQgdG8gR29kLCB0aGF0IG5vdCBvbmx5IHRob3UsIGJ1dCBhbHNvIGFsbCB0aGF0IGhlYXIgbWUgdGhpcyBkYXksIHdlcmUgYm90aCBhbG1vc3QsIGFuZCBhbHRvZ2V0aGVyIHN1Y2ggYXMgSSBhbSwgZXhjZXB0IHRoZXNlIGJvbmRzLgpBbmQgd2hlbiBoZSBoYWQgdGh1cyBzcG9rZW4sIHRoZSBraW5nIHJvc2UgdXAsIGFuZCB0aGUgZ292ZXJub3IsIGFuZCBCZXJuaWNlLCBhbmQgdGhleSB0aGF0IHNhdCB3aXRoIHRoZW06CkFuZCB3aGVuIHRoZXkgd2VyZSBnb25lIGFzaWRlLCB0aGV5IHRhbGtlZCBiZXR3ZWVuIHRoZW1zZWx2ZXMsIHNheWluZywgVGhpcyBtYW4gZG9ldGggbm90aGluZyB3b3J0aHkgb2YgZGVhdGggb3Igb2YgYm9uZHMuClRoZW4gc2FpZCBBZ3JpcHBhIHVudG8gRmVzdHVzLCBUaGlzIG1hbiBtaWdodCBoYXZlIGJlZW4gc2V0IGF0IGxpYmVydHksIGlmIGhlIGhhZCBub3QgYXBwZWFsZWQgdW50byBDYWVzYXIuCkFuZCB3aGVuIGl0IHdhcyBkZXRlcm1pbmVkIHRoYXQgd2Ugc2hvdWxkIHNhaWwgaW50byBJdGFseSwgdGhleSBkZWxpdmVyZWQgUGF1bCBhbmQgY2VydGFpbiBvdGhlciBwcmlzb25lcnMgdW50byBvbmUgbmFtZWQgSnVsaXVzLCBhIGNlbnR1cmlvbiBvZiBBdWd1c3R1cycgYmFuZC4KQW5kIGVudGVyaW5nIGludG8gYSBzaGlwIG9mIEFkcmFteXR0aXVtLCB3ZSBsYXVuY2hlZCwgbWVhbmluZyB0byBzYWlsIGJ5IHRoZSBjb2FzdHMgb2YgQXNpYTsgb25lIEFyaXN0YXJjaHVzLCBhIE1hY2Vkb25pYW4gb2YgVGhlc3NhbG9uaWNhLCBiZWluZyB3aXRoIHVzLgpBbmQgdGhlIG5leHQgZGF5IHdlIHRvdWNoZWQgYXQgU2lkb24uIEFuZCBKdWxpdXMgY291cnRlb3VzbHkgZW50cmVhdGVkIFBhdWwsIGFuZCBnYXZlIGhpbSBsaWJlcnR5IHRvIGdvIHVudG8gaGlzIGZyaWVuZHMgdG8gcmVmcmVzaCBoaW1zZWxmLgpBbmQgd2hlbiB3ZSBoYWQgbGF1bmNoZWQgZnJvbSB0aGVuY2UsIHdlIHNhaWxlZCB1bmRlciBDeXBydXMsIGJlY2F1c2UgdGhlIHdpbmRzIHdlcmUgY29udHJhcnkuCkFuZCB3aGVuIHdlIGhhZCBzYWlsZWQgb3ZlciB0aGUgc2VhIG9mIENpbGljaWEgYW5kIFBhbXBoeWxpYSwgd2UgY2FtZSB0byBNeXJhLCBhIGNpdHkgb2YgTHljaWEuCkFuZCB0aGVyZSB0aGUgY2VudHVyaW9uIGZvdW5kIGEgc2hpcCBvZiBBbGV4YW5kcmlhIHNhaWxpbmcgaW50byBJdGFseTsgYW5kIGhlIHB1dCB1cyB0aGVyZWluLgpBbmQgd2hlbiB3ZSBoYWQgc2FpbGVkIHNsb3dseSBtYW55IGRheXMsIGFuZCBzY2FyY2Ugd2VyZSBjb21lIG92ZXIgYWdhaW5zdCBDbmlkdXMsIHRoZSB3aW5kIG5vdCBzdWZmZXJpbmcgdXMsIHdlIHNhaWxlZCB1bmRlciBDcmV0ZSwgb3ZlciBhZ2FpbnN0IFNhbG1vbmU7CkFuZCwgaGFyZGx5IHBhc3NpbmcgaXQsIGNhbWUgdW50byBhIHBsYWNlIHdoaWNoIGlzIGNhbGxlZCBUaGUgZmFpciBoYXZlbnM7IG5pZ2ggd2hlcmV1bnRvIHdhcyB0aGUgY2l0eSBvZiBMYXNlYS4KTm93IHdoZW4gbXVjaCB0aW1lIHdhcyBzcGVudCwgYW5kIHdoZW4gc2FpbGluZyB3YXMgbm93IGRhbmdlcm91cywgYmVjYXVzZSB0aGUgZmFzdCB3YXMgbm93IGFscmVhZHkgcGFzdCwgUGF1bCBhZG1vbmlzaGVkIHRoZW0sCkFuZCBzYWlkIHVudG8gdGhlbSwgU2lycywgSSBwZXJjZWl2ZSB0aGF0IHRoaXMgdm95YWdlIHdpbGwgYmUgd2l0aCBodXJ0IGFuZCBtdWNoIGRhbWFnZSwgbm90IG9ubHkgb2YgdGhlIGxhZGluZyBhbmQgc2hpcCwgYnV0IGFsc28gb2Ygb3VyIGxpdmVzLgpOZXZlcnRoZWxlc3MgdGhlIGNlbnR1cmlvbiBiZWxpZXZlZCB0aGUgbWFzdGVyIGFuZCB0aGUgb3duZXIgb2YgdGhlIHNoaXAsIG1vcmUgdGhhbiB0aG9zZSB0aGluZ3Mgd2hpY2ggd2VyZSBzcG9rZW4gYnkgUGF1bC4KQW5kIGJlY2F1c2UgdGhlIGhhdmVuIHdhcyBub3QgY29tbW9kaW91cyB0byB3aW50ZXIgaW4sIHRoZSBtb3JlIHBhcnQgYWR2aXNlZCB0byBkZXBhcnQgdGhlbmNlIGFsc28sIGlmIGJ5IGFueSBtZWFucyB0aGV5IG1pZ2h0IGF0dGFpbiB0byBQaGVuaWNlLCBhbmQgdGhlcmUgdG8gd2ludGVyOyB3aGljaCBpcyBhbiBoYXZlbiBvZiBDcmV0ZSwgYW5kIGxpZXRoIHRvd2FyZCB0aGUgc291dGggd2VzdCBhbmQgbm9ydGggd2VzdC4KQW5kIHdoZW4gdGhlIHNvdXRoIHdpbmQgYmxldyBzb2Z0bHksIHN1cHBvc2luZyB0aGF0IHRoZXkgaGFkIG9idGFpbmVkIHRoZWlyIHB1cnBvc2UsIGxvb3NpbmcgdGhlbmNlLCB0aGV5IHNhaWxlZCBjbG9zZSBieSBDcmV0ZS4KQnV0IG5vdCBsb25nIGFmdGVyIHRoZXJlIGFyb3NlIGFnYWluc3QgaXQgYSB0ZW1wZXN0dW91cyB3aW5kLCBjYWxsZWQgRXVyb2NseWRvbi4KQW5kIHdoZW4gdGhlIHNoaXAgd2FzIGNhdWdodCwgYW5kIGNvdWxkIG5vdCBiZWFyIHVwIGludG8gdGhlIHdpbmQsIHdlIGxldCBoZXIgZHJpdmUuCkFuZCBydW5uaW5nIHVuZGVyIGEgY2VydGFpbiBpc2xhbmQgd2hpY2ggaXMgY2FsbGVkIENsYXVkYSwgd2UgaGFkIG11Y2ggd29yayB0byBjb21lIGJ5IHRoZSBib2F0OgpXaGljaCB3aGVuIHRoZXkgaGFkIHRha2VuIHVwLCB0aGV5IHVzZWQgaGVscHMsIHVuZGVyZ2lyZGluZyB0aGUgc2hpcDsgYW5kLCBmZWFyaW5nIGxlc3QgdGhleSBzaG91bGQgZmFsbCBpbnRvIHRoZSBxdWlja3NhbmRzLCBzdHJha2Ugc2FpbCwgYW5kIHNvIHdlcmUgZHJpdmVuLgpBbmQgd2UgYmVpbmcgZXhjZWVkaW5nbHkgdG9zc2VkIHdpdGggYSB0ZW1wZXN0LCB0aGUgbmV4dCBkYXkgdGhleSBsaWdodGVuZWQgdGhlIHNoaXA7CkFuZCB0aGUgdGhpcmQgZGF5IHdlIGNhc3Qgb3V0IHdpdGggb3VyIG93biBoYW5kcyB0aGUgdGFja2xpbmcgb2YgdGhlIHNoaXAuCkFuZCB3aGVuIG5laXRoZXIgc3VuIG5vciBzdGFycyBpbiBtYW55IGRheXMgYXBwZWFyZWQsIGFuZCBubyBzbWFsbCB0ZW1wZXN0IGxheSBvbiB1cywgYWxsIGhvcGUgdGhhdCB3ZSBzaG91bGQgYmUgc2F2ZWQgd2FzIHRoZW4gdGFrZW4gYXdheS4KQnV0IGFmdGVyIGxvbmcgYWJzdGluZW5jZSBQYXVsIHN0b29kIGZvcnRoIGluIHRoZSBtaWRzdCBvZiB0aGVtLCBhbmQgc2FpZCwgU2lycywgeWUgc2hvdWxkIGhhdmUgaGVhcmtlbmVkIHVudG8gbWUsIGFuZCBub3QgaGF2ZSBsb29zZWQgZnJvbSBDcmV0ZSwgYW5kIHRvIGhhdmUgZ2FpbmVkIHRoaXMgaGFybSBhbmQgbG9zcy4KQW5kIG5vdyBJIGV4aG9ydCB5b3UgdG8gYmUgb2YgZ29vZCBjaGVlcjogZm9yIHRoZXJlIHNoYWxsIGJlIG5vIGxvc3Mgb2YgYW55IG1hbidzIGxpZmUgYW1vbmcgeW91LCBidXQgb2YgdGhlIHNoaXAuCkZvciB0aGVyZSBzdG9vZCBieSBtZSB0aGlzIG5pZ2h0IHRoZSBhbmdlbCBvZiBHb2QsIHdob3NlIEkgYW0sIGFuZCB3aG9tIEkgc2VydmUsClNheWluZywgRmVhciBub3QsIFBhdWw7IHRob3UgbXVzdCBiZSBicm91Z2h0IGJlZm9yZSBDYWVzYXI6IGFuZCwgbG8sIEdvZCBoYXRoIGdpdmVuIHRoZWUgYWxsIHRoZW0gdGhhdCBzYWlsIHdpdGggdGhlZS4KV2hlcmVmb3JlLCBzaXJzLCBiZSBvZiBnb29kIGNoZWVyOiBmb3IgSSBiZWxpZXZlIEdvZCwgdGhhdCBpdCBzaGFsbCBiZSBldmVuIGFzIGl0IHdhcyB0b2xkIG1lLgpIb3diZWl0IHdlIG11c3QgYmUgY2FzdCB1cG9uIGEgY2VydGFpbiBpc2xhbmQuCkJ1dCB3aGVuIHRoZSBmb3VydGVlbnRoIG5pZ2h0IHdhcyBjb21lLCBhcyB3ZSB3ZXJlIGRyaXZlbiB1cCBhbmQgZG93biBpbiBBZHJpYSwgYWJvdXQgbWlkbmlnaHQgdGhlIHNoaXBtZW4gZGVlbWVkIHRoYXQgdGhleSBkcmV3IG5lYXIgdG8gc29tZSBjb3VudHJ5OwpBbmQgc291bmRlZCwgYW5kIGZvdW5kIGl0IHR3ZW50eSBmYXRob21zOiBhbmQgd2hlbiB0aGV5IGhhZCBnb25lIGEgbGl0dGxlIGZ1cnRoZXIsIHRoZXkgc291bmRlZCBhZ2FpbiwgYW5kIGZvdW5kIGl0IGZpZnRlZW4gZmF0aG9tcy4KVGhlbiBmZWFyaW5nIGxlc3Qgd2Ugc2hvdWxkIGhhdmUgZmFsbGVuIHVwb24gcm9ja3MsIHRoZXkgY2FzdCBmb3VyIGFuY2hvcnMgb3V0IG9mIHRoZSBzdGVybiwgYW5kIHdpc2hlZCBmb3IgdGhlIGRheS4KQW5kIGFzIHRoZSBzaGlwbWVuIHdlcmUgYWJvdXQgdG8gZmxlZSBvdXQgb2YgdGhlIHNoaXAsIHdoZW4gdGhleSBoYWQgbGV0IGRvd24gdGhlIGJvYXQgaW50byB0aGUgc2VhLCB1bmRlciBjb2xvdXIgYXMgdGhvdWdoIHRoZXkgd291bGQgaGF2ZSBjYXN0IGFuY2hvcnMgb3V0IG9mIHRoZSBmb3Jlc2hpcCwKUGF1bCBzYWlkIHRvIHRoZSBjZW50dXJpb24gYW5kIHRvIHRoZSBzb2xkaWVycywgRXhjZXB0IHRoZXNlIGFiaWRlIGluIHRoZSBzaGlwLCB5ZSBjYW5ub3QgYmUgc2F2ZWQuClRoZW4gdGhlIHNvbGRpZXJzIGN1dCBvZmYgdGhlIHJvcGVzIG9mIHRoZSBib2F0LCBhbmQgbGV0IGhlciBmYWxsIG9mZi4KQW5kIHdoaWxlIHRoZSBkYXkgd2FzIGNvbWluZyBvbiwgUGF1bCBiZXNvdWdodCB0aGVtIGFsbCB0byB0YWtlIG1lYXQsIHNheWluZywgVGhpcyBkYXkgaXMgdGhlIGZvdXJ0ZWVudGggZGF5IHRoYXQgeWUgaGF2ZSB0YXJyaWVkIGFuZCBjb250aW51ZWQgZmFzdGluZywgaGF2aW5nIHRha2VuIG5vdGhpbmcuCldoZXJlZm9yZSBJIHByYXkgeW91IHRvIHRha2Ugc29tZSBtZWF0OiBmb3IgdGhpcyBpcyBmb3IgeW91ciBoZWFsdGg6IGZvciB0aGVyZSBzaGFsbCBub3QgYW4gaGFpciBmYWxsIGZyb20gdGhlIGhlYWQgb2YgYW55IG9mIHlvdS4KQW5kIHdoZW4gaGUgaGFkIHRodXMgc3Bva2VuLCBoZSB0b29rIGJyZWFkLCBhbmQgZ2F2ZSB0aGFua3MgdG8gR29kIGluIHByZXNlbmNlIG9mIHRoZW0gYWxsOiBhbmQgd2hlbiBoZSBoYWQgYnJva2VuIGl0LCBoZSBiZWdhbiB0byBlYXQuClRoZW4gd2VyZSB0aGV5IGFsbCBvZiBnb29kIGNoZWVyLCBhbmQgdGhleSBhbHNvIHRvb2sgc29tZSBtZWF0LgpBbmQgd2Ugd2VyZSBpbiBhbGwgaW4gdGhlIHNoaXAgdHdvIGh1bmRyZWQgdGhyZWVzY29yZSBhbmQgc2l4dGVlbiBzb3Vscy4KQW5kIHdoZW4gdGhleSBoYWQgZWF0ZW4gZW5vdWdoLCB0aGV5IGxpZ2h0ZW5lZCB0aGUgc2hpcCwgYW5kIGNhc3Qgb3V0IHRoZSB3aGVhdCBpbnRvIHRoZSBzZWEuCkFuZCB3aGVuIGl0IHdhcyBkYXksIHRoZXkga25ldyBub3QgdGhlIGxhbmQ6IGJ1dCB0aGV5IGRpc2NvdmVyZWQgYSBjZXJ0YWluIGNyZWVrIHdpdGggYSBzaG9yZSwgaW50byB0aGUgd2hpY2ggdGhleSB3ZXJlIG1pbmRlZCwgaWYgaXQgd2VyZSBwb3NzaWJsZSwgdG8gdGhydXN0IGluIHRoZSBzaGlwLgpBbmQgd2hlbiB0aGV5IGhhZCB0YWtlbiB1cCB0aGUgYW5jaG9ycywgdGhleSBjb21taXR0ZWQgdGhlbXNlbHZlcyB1bnRvIHRoZSBzZWEsIGFuZCBsb29zZWQgdGhlIHJ1ZGRlciBiYW5kcywgYW5kIGhvaXNlZCB1cCB0aGUgbWFpbnNhaWwgdG8gdGhlIHdpbmQsIGFuZCBtYWRlIHRvd2FyZCBzaG9yZS4KQW5kIGZhbGxpbmcgaW50byBhIHBsYWNlIHdoZXJlIHR3byBzZWFzIG1ldCwgdGhleSByYW4gdGhlIHNoaXAgYWdyb3VuZDsgYW5kIHRoZSBmb3JlcGFydCBzdHVjayBmYXN0LCBhbmQgcmVtYWluZWQgdW5tb3ZlYWJsZSwgYnV0IHRoZSBoaW5kZXIgcGFydCB3YXMgYnJva2VuIHdpdGggdGhlIHZpb2xlbmNlIG9mIHRoZSB3YXZlcy4KQW5kIHRoZSBzb2xkaWVycycgY291bnNlbCB3YXMgdG8ga2lsbCB0aGUgcHJpc29uZXJzLCBsZXN0IGFueSBvZiB0aGVtIHNob3VsZCBzd2ltIG91dCwgYW5kIGVzY2FwZS4KQnV0IHRoZSBjZW50dXJpb24sIHdpbGxpbmcgdG8gc2F2ZSBQYXVsLCBrZXB0IHRoZW0gZnJvbSB0aGVpciBwdXJwb3NlOyBhbmQgY29tbWFuZGVkIHRoYXQgdGhleSB3aGljaCBjb3VsZCBzd2ltIHNob3VsZCBjYXN0IHRoZW1zZWx2ZXMgZmlyc3QgaW50byB0aGUgc2VhLCBhbmQgZ2V0IHRvIGxhbmQ6CkFuZCB0aGUgcmVzdCwgc29tZSBvbiBib2FyZHMsIGFuZCBzb21lIG9uIGJyb2tlbiBwaWVjZXMgb2YgdGhlIHNoaXAuIEFuZCBzbyBpdCBjYW1lIHRvIHBhc3MsIHRoYXQgdGhleSBlc2NhcGVkIGFsbCBzYWZlIHRvIGxhbmQuCkFuZCB3aGVuIHRoZXkgd2VyZSBlc2NhcGVkLCB0aGVuIHRoZXkga25ldyB0aGF0IHRoZSBpc2xhbmQgd2FzIGNhbGxlZCBNZWxpdGEuCkFuZCB0aGUgYmFyYmFyb3VzIHBlb3BsZSBzaGV3ZWQgdXMgbm8gbGl0dGxlIGtpbmRuZXNzOiBmb3IgdGhleSBraW5kbGVkIGEgZmlyZSwgYW5kIHJlY2VpdmVkIHVzIGV2ZXJ5IG9uZSwgYmVjYXVzZSBvZiB0aGUgcHJlc2VudCByYWluLCBhbmQgYmVjYXVzZSBvZiB0aGUgY29sZC4KQW5kIHdoZW4gUGF1bCBoYWQgZ2F0aGVyZWQgYSBidW5kbGUgb2Ygc3RpY2tzLCBhbmQgbGFpZCB0aGVtIG9uIHRoZSBmaXJlLCB0aGVyZSBjYW1lIGEgdmlwZXIgb3V0IG9mIHRoZSBoZWF0LCBhbmQgZmFzdGVuZWQgb24gaGlzIGhhbmQuCkFuZCB3aGVuIHRoZSBiYXJiYXJpYW5zIHNhdyB0aGUgdmVub21vdXMgYmVhc3QgaGFuZyBvbiBoaXMgaGFuZCwgdGhleSBzYWlkIGFtb25nIHRoZW1zZWx2ZXMsIE5vIGRvdWJ0IHRoaXMgbWFuIGlzIGEgbXVyZGVyZXIsIHdob20sIHRob3VnaCBoZSBoYXRoIGVzY2FwZWQgdGhlIHNlYSwgeWV0IHZlbmdlYW5jZSBzdWZmZXJldGggbm90IHRvIGxpdmUuCkFuZCBoZSBzaG9vayBvZmYgdGhlIGJlYXN0IGludG8gdGhlIGZpcmUsIGFuZCBmZWx0IG5vIGhhcm0uCkhvd2JlaXQgdGhleSBsb29rZWQgd2hlbiBoZSBzaG91bGQgaGF2ZSBzd29sbGVuLCBvciBmYWxsZW4gZG93biBkZWFkIHN1ZGRlbmx5OiBidXQgYWZ0ZXIgdGhleSBoYWQgbG9va2VkIGEgZ3JlYXQgd2hpbGUsIGFuZCBzYXcgbm8gaGFybSBjb21lIHRvIGhpbSwgdGhleSBjaGFuZ2VkIHRoZWlyIG1pbmRzLCBhbmQgc2FpZCB0aGF0IGhlIHdhcyBhIGdvZC4KSW4gdGhlIHNhbWUgcXVhcnRlcnMgd2VyZSBwb3NzZXNzaW9ucyBvZiB0aGUgY2hpZWYgbWFuIG9mIHRoZSBpc2xhbmQsIHdob3NlIG5hbWUgd2FzIFB1YmxpdXM7IHdobyByZWNlaXZlZCB1cywgYW5kIGxvZGdlZCB1cyB0aHJlZSBkYXlzIGNvdXJ0ZW91c2x5LgpBbmQgaXQgY2FtZSB0byBwYXNzLCB0aGF0IHRoZSBmYXRoZXIgb2YgUHVibGl1cyBsYXkgc2ljayBvZiBhIGZldmVyIGFuZCBvZiBhIGJsb29keSBmbHV4OiB0byB3aG9tIFBhdWwgZW50ZXJlZCBpbiwgYW5kIHByYXllZCwgYW5kIGxhaWQgaGlzIGhhbmRzIG9uIGhpbSwgYW5kIGhlYWxlZCBoaW0uClNvIHdoZW4gdGhpcyB3YXMgZG9uZSwgb3RoZXJzIGFsc28sIHdoaWNoIGhhZCBkaXNlYXNlcyBpbiB0aGUgaXNsYW5kLCBjYW1lLCBhbmQgd2VyZSBoZWFsZWQ6CldobyBhbHNvIGhvbm91cmVkIHVzIHdpdGggbWFueSBob25vdXJzOyBhbmQgd2hlbiB3ZSBkZXBhcnRlZCwgdGhleSBsYWRlZCB1cyB3aXRoIHN1Y2ggdGhpbmdzIGFzIHdlcmUgbmVjZXNzYXJ5LgpBbmQgYWZ0ZXIgdGhyZWUgbW9udGhzIHdlIGRlcGFydGVkIGluIGEgc2hpcCBvZiBBbGV4YW5kcmlhLCB3aGljaCBoYWQgd2ludGVyZWQgaW4gdGhlIGlzbGUsIHdob3NlIHNpZ24gd2FzIENhc3RvciBhbmQgUG9sbHV4LgpBbmQgbGFuZGluZyBhdCBTeXJhY3VzZSwgd2UgdGFycmllZCB0aGVyZSB0aHJlZSBkYXlzLgpBbmQgZnJvbSB0aGVuY2Ugd2UgZmV0Y2hlZCBhIGNvbXBhc3MsIGFuZCBjYW1lIHRvIFJoZWdpdW06IGFuZCBhZnRlciBvbmUgZGF5IHRoZSBzb3V0aCB3aW5kIGJsZXcsIGFuZCB3ZSBjYW1lIHRoZSBuZXh0IGRheSB0byBQdXRlb2xpOgpXaGVyZSB3ZSBmb3VuZCBicmV0aHJlbiwgYW5kIHdlcmUgZGVzaXJlZCB0byB0YXJyeSB3aXRoIHRoZW0gc2V2ZW4gZGF5czogYW5kIHNvIHdlIHdlbnQgdG93YXJkIFJvbWUuCkFuZCBmcm9tIHRoZW5jZSwgd2hlbiB0aGUgYnJldGhyZW4gaGVhcmQgb2YgdXMsIHRoZXkgY2FtZSB0byBtZWV0IHVzIGFzIGZhciBhcyBBcHBpaSBmb3J1bSwgYW5kIFRoZSB0aHJlZSB0YXZlcm5zOiB3aG9tIHdoZW4gUGF1bCBzYXcsIGhlIHRoYW5rZWQgR29kLCBhbmQgdG9vayBjb3VyYWdlLgpBbmQgd2hlbiB3ZSBjYW1lIHRvIFJvbWUsIHRoZSBjZW50dXJpb24gZGVsaXZlcmVkIHRoZSBwcmlzb25lcnMgdG8gdGhlIGNhcHRhaW4gb2YgdGhlIGd1YXJkOiBidXQgUGF1bCB3YXMgc3VmZmVyZWQgdG8gZHdlbGwgYnkgaGltc2VsZiB3aXRoIGEgc29sZGllciB0aGF0IGtlcHQgaGltLgpBbmQgaXQgY2FtZSB0byBwYXNzLCB0aGF0IGFmdGVyIHRocmVlIGRheXMgUGF1bCBjYWxsZWQgdGhlIGNoaWVmIG9mIHRoZSBKZXdzIHRvZ2V0aGVyOiBhbmQgd2hlbiB0aGV5IHdlcmUgY29tZSB0b2dldGhlciwgaGUgc2FpZCB1bnRvIHRoZW0sIE1lbiBhbmQgYnJldGhyZW4sIHRob3VnaCBJIGhhdmUgY29tbWl0dGVkIG5vdGhpbmcgYWdhaW5zdCB0aGUgcGVvcGxlLCBvciBjdXN0b21zIG9mIG91ciBmYXRoZXJzLCB5ZXQgd2FzIEkgZGVsaXZlcmVkIHByaXNvbmVyIGZyb20gSmVydXNhbGVtIGludG8gdGhlIGhhbmRzIG9mIHRoZSBSb21hbnMuCldobywgd2hlbiB0aGV5IGhhZCBleGFtaW5lZCBtZSwgd291bGQgaGF2ZSBsZXQgbWUgZ28sIGJlY2F1c2UgdGhlcmUgd2FzIG5vIGNhdXNlIG9mIGRlYXRoIGluIG1lLgpCdXQgd2hlbiB0aGUgSmV3cyBzcGFrZSBhZ2FpbnN0IGl0LCBJIHdhcyBjb25zdHJhaW5lZCB0byBhcHBlYWwgdW50byBDYWVzYXI7IG5vdCB0aGF0IEkgaGFkIG91Z2h0IHRvIGFjY3VzZSBteSBuYXRpb24gb2YuCkZvciB0aGlzIGNhdXNlIHRoZXJlZm9yZSBoYXZlIEkgY2FsbGVkIGZvciB5b3UsIHRvIHNlZSB5b3UsIGFuZCB0byBzcGVhayB3aXRoIHlvdTogYmVjYXVzZSB0aGF0IGZvciB0aGUgaG9wZSBvZiBJc3JhZWwgSSBhbSBib3VuZCB3aXRoIHRoaXMgY2hhaW4uCkFuZCB0aGV5IHNhaWQgdW50byBoaW0sIFdlIG5laXRoZXIgcmVjZWl2ZWQgbGV0dGVycyBvdXQgb2YgSnVkYWVhIGNvbmNlcm5pbmcgdGhlZSwgbmVpdGhlciBhbnkgb2YgdGhlIGJyZXRocmVuIHRoYXQgY2FtZSBzaGV3ZWQgb3Igc3Bha2UgYW55IGhhcm0gb2YgdGhlZS4KQnV0IHdlIGRlc2lyZSB0byBoZWFyIG9mIHRoZWUgd2hhdCB0aG91IHRoaW5rZXN0OiBmb3IgYXMgY29uY2VybmluZyB0aGlzIHNlY3QsIHdlIGtub3cgdGhhdCBldmVyeSB3aGVyZSBpdCBpcyBzcG9rZW4gYWdhaW5zdC4KQW5kIHdoZW4gdGhleSBoYWQgYXBwb2ludGVkIGhpbSBhIGRheSwgdGhlcmUgY2FtZSBtYW55IHRvIGhpbSBpbnRvIGhpcyBsb2RnaW5nOyB0byB3aG9tIGhlIGV4cG91bmRlZCBhbmQgdGVzdGlmaWVkIHRoZSBraW5nZG9tIG9mIEdvZCwgcGVyc3VhZGluZyB0aGVtIGNvbmNlcm5pbmcgSmVzdXMsIGJvdGggb3V0IG9mIHRoZSBsYXcgb2YgTW9zZXMsIGFuZCBvdXQgb2YgdGhlIHByb3BoZXRzLCBmcm9tIG1vcm5pbmcgdGlsbCBldmVuaW5nLgpBbmQgc29tZSBiZWxpZXZlZCB0aGUgdGhpbmdzIHdoaWNoIHdlcmUgc3Bva2VuLCBhbmQgc29tZSBiZWxpZXZlZCBub3QuCkFuZCB3aGVuIHRoZXkgYWdyZWVkIG5vdCBhbW9uZyB0aGVtc2VsdmVzLCB0aGV5IGRlcGFydGVkLCBhZnRlciB0aGF0IFBhdWwgaGFkIHNwb2tlbiBvbmUgd29yZCwgV2VsbCBzcGFrZSB0aGUgSG9seSBHaG9zdCBieSBFc2FpYXMgdGhlIHByb3BoZXQgdW50byBvdXIgZmF0aGVycywKU2F5aW5nLCBHbyB1bnRvIHRoaXMgcGVvcGxlLCBhbmQgc2F5LCBIZWFyaW5nIHllIHNoYWxsIGhlYXIsIGFuZCBzaGFsbCBub3QgdW5kZXJzdGFuZDsgYW5kIHNlZWluZyB5ZSBzaGFsbCBzZWUsIGFuZCBub3QgcGVyY2VpdmU6CkZvciB0aGUgaGVhcnQgb2YgdGhpcyBwZW9wbGUgaXMgd2F4ZWQgZ3Jvc3MsIGFuZCB0aGVpciBlYXJzIGFyZSBkdWxsIG9mIGhlYXJpbmcsIGFuZCB0aGVpciBleWVzIGhhdmUgdGhleSBjbG9zZWQ7IGxlc3QgdGhleSBzaG91bGQgc2VlIHdpdGggdGhlaXIgZXllcywgYW5kIGhlYXIgd2l0aCB0aGVpciBlYXJzLCBhbmQgdW5kZXJzdGFuZCB3aXRoIHRoZWlyIGhlYXJ0LCBhbmQgc2hvdWxkIGJlIGNvbnZlcnRlZCwgYW5kIEkgc2hvdWxkIGhlYWwgdGhlbS4KQmUgaXQga25vd24gdGhlcmVmb3JlIHVudG8geW91LCB0aGF0IHRoZSBzYWx2YXRpb24gb2YgR29kIGlzIHNlbnQgdW50byB0aGUgR2VudGlsZXMsIGFuZCB0aGF0IHRoZXkgd2lsbCBoZWFyIGl0LgpBbmQgd2hlbiBoZSBoYWQgc2FpZCB0aGVzZSB3b3JkcywgdGhlIEpld3MgZGVwYXJ0ZWQsIGFuZCBoYWQgZ3JlYXQgcmVhc29uaW5nIGFtb25nIHRoZW1zZWx2ZXMuCkFuZCBQYXVsIGR3ZWx0IHR3byB3aG9sZSB5ZWFycyBpbiBoaXMgb3duIGhpcmVkIGhvdXNlLCBhbmQgcmVjZWl2ZWQgYWxsIHRoYXQgY2FtZSBpbiB1bnRvIGhpbSwKUHJlYWNoaW5nIHRoZSBraW5nZG9tIG9mIEdvZCwgYW5kIHRlYWNoaW5nIHRob3NlIHRoaW5ncyB3aGljaCBjb25jZXJuIHRoZSBMb3JkIEplc3VzIENocmlzdCwgd2l0aCBhbGwgY29uZmlkZW5jZSwgbm8gbWFuIGZvcmJpZGRpbmcgaGltLgpQYXVsLCBhIHNlcnZhbnQgb2YgSmVzdXMgQ2hyaXN0LCBjYWxsZWQgdG8gYmUgYW4gYXBvc3RsZSwgc2VwYXJhdGVkIHVudG8gdGhlIGdvc3BlbCBvZiBHb2QsCihXaGljaCBoZSBoYWQgcHJvbWlzZWQgYWZvcmUgYnkgaGlzIHByb3BoZXRzIGluIHRoZSBob2x5IHNjcmlwdHVyZXMsKQpDb25jZXJuaW5nIGhpcyBTb24gSmVzdXMgQ2hyaXN0IG91ciBMb3JkLCB3aGljaCB3YXMgbWFkZSBvZiB0aGUgc2VlZCBvZiBEYXZpZCBhY2NvcmRpbmcgdG8gdGhlIGZsZXNoOwpBbmQgZGVjbGFyZWQgdG8gYmUgdGhlIFNvbiBvZiBHb2Qgd2l0aCBwb3dlciwgYWNjb3JkaW5nIHRvIHRoZSBzcGlyaXQgb2YgaG9saW5lc3MsIGJ5IHRoZSByZXN1cnJlY3Rpb24gZnJvbSB0aGUgZGVhZDoKQnkgd2hvbSB3ZSBoYXZlIHJlY2VpdmVkIGdyYWNlIGFuZCBhcG9zdGxlc2hpcCwgZm9yIG9iZWRpZW5jZSB0byB0aGUgZmFpdGggYW1vbmcgYWxsIG5hdGlvbnMsIGZvciBoaXMgbmFtZToKQW1vbmcgd2hvbSBhcmUgeWUgYWxzbyB0aGUgY2FsbGVkIG9mIEplc3VzIENocmlzdDoKVG8gYWxsIHRoYXQgYmUgaW4gUm9tZSwgYmVsb3ZlZCBvZiBHb2QsIGNhbGxlZCB0byBiZSBzYWludHM6IEdyYWNlIHRvIHlvdSBhbmQgcGVhY2UgZnJvbSBHb2Qgb3VyIEZhdGhlciwgYW5kIHRoZSBMb3JkIEplc3VzIENocmlzdC4KRmlyc3QsIEkgdGhhbmsgbXkgR29kIHRocm91Z2ggSmVzdXMgQ2hyaXN0IGZvciB5b3UgYWxsLCB0aGF0IHlvdXIgZmFpdGggaXMgc3Bva2VuIG9mIHRocm91Z2hvdXQgdGhlIHdob2xlIHdvcmxkLgpGb3IgR29kIGlzIG15IHdpdG5lc3MsIHdob20gSSBzZXJ2ZSB3aXRoIG15IHNwaXJpdCBpbiB0aGUgZ29zcGVsIG9mIGhpcyBTb24sIHRoYXQgd2l0aG91dCBjZWFzaW5nIEkgbWFrZSBtZW50aW9uIG9mIHlvdSBhbHdheXMgaW4gbXkgcHJheWVyczsKTWFraW5nIHJlcXVlc3QsIGlmIGJ5IGFueSBtZWFucyBub3cgYXQgbGVuZ3RoIEkgbWlnaHQgaGF2ZSBhIHByb3NwZXJvdXMgam91cm5leSBieSB0aGUgd2lsbCBvZiBHb2QgdG8gY29tZSB1bnRvIHlvdS4KRm9yIEkgbG9uZyB0byBzZWUgeW91LCB0aGF0IEkgbWF5IGltcGFydCB1bnRvIHlvdSBzb21lIHNwaXJpdHVhbCBnaWZ0LCB0byB0aGUgZW5kIHllIG1heSBiZSBlc3RhYmxpc2hlZDsKVGhhdCBpcywgdGhhdCBJIG1heSBiZSBjb21mb3J0ZWQgdG9nZXRoZXIgd2l0aCB5b3UgYnkgdGhlIG11dHVhbCBmYWl0aCBib3RoIG9mIHlvdSBhbmQgbWUuCk5vdyBJIHdvdWxkIG5vdCBoYXZlIHlvdSBpZ25vcmFudCwgYnJldGhyZW4sIHRoYXQgb2Z0ZW50aW1lcyBJIHB1cnBvc2VkIHRvIGNvbWUgdW50byB5b3UsIChidXQgd2FzIGxldCBoaXRoZXJ0bywpIHRoYXQgSSBtaWdodCBoYXZlIHNvbWUgZnJ1aXQgYW1vbmcgeW91IGFsc28sIGV2ZW4gYXMgYW1vbmcgb3RoZXIgR2VudGlsZXMuCkkgYW0gZGVidG9yIGJvdGggdG8gdGhlIEdyZWVrcywgYW5kIHRvIHRoZSBCYXJiYXJpYW5zOyBib3RoIHRvIHRoZSB3aXNlLCBhbmQgdG8gdGhlIHVud2lzZS4KU28sIGFzIG11Y2ggYXMgaW4gbWUgaXMsIEkgYW0gcmVhZHkgdG8gcHJlYWNoIHRoZSBnb3NwZWwgdG8geW91IHRoYXQgYXJlIGF0IFJvbWUgYWxzby4KRm9yIEkgYW0gbm90IGFzaGFtZWQgb2YgdGhlIGdvc3BlbCBvZiBDaHJpc3Q6IGZvciBpdCBpcyB0aGUgcG93ZXIgb2YgR29kIHVudG8gc2FsdmF0aW9uIHRvIGV2ZXJ5IG9uZSB0aGF0IGJlbGlldmV0aDsgdG8gdGhlIEpldyBmaXJzdCwgYW5kIGFsc28gdG8gdGhlIEdyZWVrLgpGb3IgdGhlcmVpbiBpcyB0aGUgcmlnaHRlb3VzbmVzcyBvZiBHb2QgcmV2ZWFsZWQgZnJvbSBmYWl0aCB0byBmYWl0aDogYXMgaXQgaXMgd3JpdHRlbiwgVGhlIGp1c3Qgc2hhbGwgbGl2ZSBieSBmYWl0aC4KRm9yIHRoZSB3cmF0aCBvZiBHb2QgaXMgcmV2ZWFsZWQgZnJvbSBoZWF2ZW4gYWdhaW5zdCBhbGwgdW5nb2RsaW5lc3MgYW5kIHVucmlnaHRlb3VzbmVzcyBvZiBtZW4sIHdobyBob2xkIHRoZSB0cnV0aCBpbiB1bnJpZ2h0ZW91c25lc3M7CkJlY2F1c2UgdGhhdCB3aGljaCBtYXkgYmUga25vd24gb2YgR29kIGlzIG1hbmlmZXN0IGluIHRoZW07IGZvciBHb2QgaGF0aCBzaGV3ZWQgaXQgdW50byB0aGVtLgpGb3IgdGhlIGludmlzaWJsZSB0aGluZ3Mgb2YgaGltIGZyb20gdGhlIGNyZWF0aW9uIG9mIHRoZSB3b3JsZCBhcmUgY2xlYXJseSBzZWVuLCBiZWluZyB1bmRlcnN0b29kIGJ5IHRoZSB0aGluZ3MgdGhhdCBhcmUgbWFkZSwgZXZlbiBoaXMgZXRlcm5hbCBwb3dlciBhbmQgR29kaGVhZDsgc28gdGhhdCB0aGV5IGFyZSB3aXRob3V0IGV4Y3VzZToKQmVjYXVzZSB0aGF0LCB3aGVuIHRoZXkga25ldyBHb2QsIHRoZXkgZ2xvcmlmaWVkIGhpbSBub3QgYXMgR29kLCBuZWl0aGVyIHdlcmUgdGhhbmtmdWw7IGJ1dCBiZWNhbWUgdmFpbiBpbiB0aGVpciBpbWFnaW5hdGlvbnMsIGFuZCB0aGVpciBmb29saXNoIGhlYXJ0IHdhcyBkYXJrZW5lZC4KUHJvZmVzc2luZyB0aGVtc2VsdmVzIHRvIGJlIHdpc2UsIHRoZXkgYmVjYW1lIGZvb2xzLApBbmQgY2hhbmdlZCB0aGUgZ2xvcnkgb2YgdGhlIHVuY29ycnVwdGlibGUgR29kIGludG8gYW4gaW1hZ2UgbWFkZSBsaWtlIHRvIGNvcnJ1cHRpYmxlIG1hbiwgYW5kIHRvIGJpcmRzLCBhbmQgZm91cmZvb3RlZCBiZWFzdHMsIGFuZCBjcmVlcGluZyB0aGluZ3MuCldoZXJlZm9yZSBHb2QgYWxzbyBnYXZlIHRoZW0gdXAgdG8gdW5jbGVhbm5lc3MgdGhyb3VnaCB0aGUgbHVzdHMgb2YgdGhlaXIgb3duIGhlYXJ0cywgdG8gZGlzaG9ub3VyIHRoZWlyIG93biBib2RpZXMgYmV0d2VlbiB0aGVtc2VsdmVzOgpXaG8gY2hhbmdlZCB0aGUgdHJ1dGggb2YgR29kIGludG8gYSBsaWUsIGFuZCB3b3JzaGlwcGVkIGFuZCBzZXJ2ZWQgdGhlIGNyZWF0dXJlIG1vcmUgdGhhbiB0aGUgQ3JlYXRvciwgd2hvIGlzIGJsZXNzZWQgZm9yIGV2ZXIuIEFtZW4uCkZvciB0aGlzIGNhdXNlIEdvZCBnYXZlIHRoZW0gdXAgdW50byB2aWxlIGFmZmVjdGlvbnM6IGZvciBldmVuIHRoZWlyIHdvbWVuIGRpZCBjaGFuZ2UgdGhlIG5hdHVyYWwgdXNlIGludG8gdGhhdCB3aGljaCBpcyBhZ2FpbnN0IG5hdHVyZToKQW5kIGxpa2V3aXNlIGFsc28gdGhlIG1lbiwgbGVhdmluZyB0aGUgbmF0dXJhbCB1c2Ugb2YgdGhlIHdvbWFuLCBidXJuZWQgaW4gdGhlaXIgbHVzdCBvbmUgdG93YXJkIGFub3RoZXI7IG1lbiB3aXRoIG1lbiB3b3JraW5nIHRoYXQgd2hpY2ggaXMgdW5zZWVtbHksIGFuZCByZWNlaXZpbmcgaW4gdGhlbXNlbHZlcyB0aGF0IHJlY29tcGVuY2Ugb2YgdGhlaXIgZXJyb3Igd2hpY2ggd2FzIG1lZXQuCkFuZCBldmVuIGFzIHRoZXkgZGlkIG5vdCBsaWtlIHRvIHJldGFpbiBHb2QgaW4gdGhlaXIga25vd2xlZGdlLCBHb2QgZ2F2ZSB0aGVtIG92ZXIgdG8gYSByZXByb2JhdGUgbWluZCwgdG8gZG8gdGhvc2UgdGhpbmdzIHdoaWNoIGFyZSBub3QgY29udmVuaWVudDsKQmVpbmcgZmlsbGVkIHdpdGggYWxsIHVucmlnaHRlb3VzbmVzcywgZm9ybmljYXRpb24sIHdpY2tlZG5lc3MsIGNvdmV0b3VzbmVzcywgbWFsaWNpb3VzbmVzczsgZnVsbCBvZiBlbnZ5LCBtdXJkZXIsIGRlYmF0ZSwgZGVjZWl0LCBtYWxpZ25pdHk7IHdoaXNwZXJlcnMsCkJhY2tiaXRlcnMsIGhhdGVycyBvZiBHb2QsIGRlc3BpdGVmdWwsIHByb3VkLCBib2FzdGVycywgaW52ZW50b3JzIG9mIGV2aWwgdGhpbmdzLCBkaXNvYmVkaWVudCB0byBwYXJlbnRzLApXaXRob3V0IHVuZGVyc3RhbmRpbmcsIGNvdmVuYW50YnJlYWtlcnMsIHdpdGhvdXQgbmF0dXJhbCBhZmZlY3Rpb24sIGltcGxhY2FibGUsIHVubWVyY2lmdWw6CldobyBrbm93aW5nIHRoZSBqdWRnbWVudCBvZiBHb2QsIHRoYXQgdGhleSB3aGljaCBjb21taXQgc3VjaCB0aGluZ3MgYXJlIHdvcnRoeSBvZiBkZWF0aCwgbm90IG9ubHkgZG8gdGhlIHNhbWUsIGJ1dCBoYXZlIHBsZWFzdXJlIGluIHRoZW0gdGhhdCBkbyB0aGVtLgpUaGVyZWZvcmUgdGhvdSBhcnQgaW5leGN1c2FibGUsIE8gbWFuLCB3aG9zb2V2ZXIgdGhvdSBhcnQgdGhhdCBqdWRnZXN0OiBmb3Igd2hlcmVpbiB0aG91IGp1ZGdlc3QgYW5vdGhlciwgdGhvdSBjb25kZW1uZXN0IHRoeXNlbGY7IGZvciB0aG91IHRoYXQganVkZ2VzdCBkb2VzdCB0aGUgc2FtZSB0aGluZ3MuCkJ1dCB3ZSBhcmUgc3VyZSB0aGF0IHRoZSBqdWRnbWVudCBvZiBHb2QgaXMgYWNjb3JkaW5nIHRvIHRydXRoIGFnYWluc3QgdGhlbSB3aGljaCBjb21taXQgc3VjaCB0aGluZ3MuCkFuZCB0aGlua2VzdCB0aG91IHRoaXMsIE8gbWFuLCB0aGF0IGp1ZGdlc3QgdGhlbSB3aGljaCBkbyBzdWNoIHRoaW5ncywgYW5kIGRvZXN0IHRoZSBzYW1lLCB0aGF0IHRob3Ugc2hhbHQgZXNjYXBlIHRoZSBqdWRnbWVudCBvZiBHb2Q/Ck9yIGRlc3Bpc2VzdCB0aG91IHRoZSByaWNoZXMgb2YgaGlzIGdvb2RuZXNzIGFuZCBmb3JiZWFyYW5jZSBhbmQgbG9uZ3N1ZmZlcmluZzsgbm90IGtub3dpbmcgdGhhdCB0aGUgZ29vZG5lc3Mgb2YgR29kIGxlYWRldGggdGhlZSB0byByZXBlbnRhbmNlPwpCdXQgYWZ0ZXIgdGh5IGhhcmRuZXNzIGFuZCBpbXBlbml0ZW50IGhlYXJ0IHRyZWFzdXJlc3QgdXAgdW50byB0aHlzZWxmIHdyYXRoIGFnYWluc3QgdGhlIGRheSBvZiB3cmF0aCBhbmQgcmV2ZWxhdGlvbiBvZiB0aGUgcmlnaHRlb3VzIGp1ZGdtZW50IG9mIEdvZDsKV2hvIHdpbGwgcmVuZGVyIHRvIGV2ZXJ5IG1hbiBhY2NvcmRpbmcgdG8gaGlzIGRlZWRzOgpUbyB0aGVtIHdobyBieSBwYXRpZW50IGNvbnRpbnVhbmNlIGluIHdlbGwgZG9pbmcgc2VlayBmb3IgZ2xvcnkgYW5kIGhvbm91ciBhbmQgaW1tb3J0YWxpdHksIGV0ZXJuYWwgbGlmZToKQnV0IHVudG8gdGhlbSB0aGF0IGFyZSBjb250ZW50aW91cywgYW5kIGRvIG5vdCBvYmV5IHRoZSB0cnV0aCwgYnV0IG9iZXkgdW5yaWdodGVvdXNuZXNzLCBpbmRpZ25hdGlvbiBhbmQgd3JhdGgsClRyaWJ1bGF0aW9uIGFuZCBhbmd1aXNoLCB1cG9uIGV2ZXJ5IHNvdWwgb2YgbWFuIHRoYXQgZG9ldGggZXZpbCwgb2YgdGhlIEpldyBmaXJzdCwgYW5kIGFsc28gb2YgdGhlIEdlbnRpbGU7CkJ1dCBnbG9yeSwgaG9ub3VyLCBhbmQgcGVhY2UsIHRvIGV2ZXJ5IG1hbiB0aGF0IHdvcmtldGggZ29vZCwgdG8gdGhlIEpldyBmaXJzdCwgYW5kIGFsc28gdG8gdGhlIEdlbnRpbGU6CkZvciB0aGVyZSBpcyBubyByZXNwZWN0IG9mIHBlcnNvbnMgd2l0aCBHb2QuCkZvciBhcyBtYW55IGFzIGhhdmUgc2lubmVkIHdpdGhvdXQgbGF3IHNoYWxsIGFsc28gcGVyaXNoIHdpdGhvdXQgbGF3OiBhbmQgYXMgbWFueSBhcyBoYXZlIHNpbm5lZCBpbiB0aGUgbGF3IHNoYWxsIGJlIGp1ZGdlZCBieSB0aGUgbGF3OwooRm9yIG5vdCB0aGUgaGVhcmVycyBvZiB0aGUgbGF3IGFyZSBqdXN0IGJlZm9yZSBHb2QsIGJ1dCB0aGUgZG9lcnMgb2YgdGhlIGxhdyBzaGFsbCBiZSBqdXN0aWZpZWQuCkZvciB3aGVuIHRoZSBHZW50aWxlcywgd2hpY2ggaGF2ZSBub3QgdGhlIGxhdywgZG8gYnkgbmF0dXJlIHRoZSB0aGluZ3MgY29udGFpbmVkIGluIHRoZSBsYXcsIHRoZXNlLCBoYXZpbmcgbm90IHRoZSBsYXcsIGFyZSBhIGxhdyB1bnRvIHRoZW1zZWx2ZXM6CldoaWNoIHNoZXcgdGhlIHdvcmsgb2YgdGhlIGxhdyB3cml0dGVuIGluIHRoZWlyIGhlYXJ0cywgdGhlaXIgY29uc2NpZW5jZSBhbHNvIGJlYXJpbmcgd2l0bmVzcywgYW5kIHRoZWlyIHRob3VnaHRzIHRoZSBtZWFuIHdoaWxlIGFjY3VzaW5nIG9yIGVsc2UgZXhjdXNpbmcgb25lIGFub3RoZXI7KQpJbiB0aGUgZGF5IHdoZW4gR29kIHNoYWxsIGp1ZGdlIHRoZSBzZWNyZXRzIG9mIG1lbiBieSBKZXN1cyBDaHJpc3QgYWNjb3JkaW5nIHRvIG15IGdvc3BlbC4KQmVob2xkLCB0aG91IGFydCBjYWxsZWQgYSBKZXcsIGFuZCByZXN0ZXN0IGluIHRoZSBsYXcsIGFuZCBtYWtlc3QgdGh5IGJvYXN0IG9mIEdvZCwKQW5kIGtub3dlc3QgaGlzIHdpbGwsIGFuZCBhcHByb3Zlc3QgdGhlIHRoaW5ncyB0aGF0IGFyZSBtb3JlIGV4Y2VsbGVudCwgYmVpbmcgaW5zdHJ1Y3RlZCBvdXQgb2YgdGhlIGxhdzsKQW5kIGFydCBjb25maWRlbnQgdGhhdCB0aG91IHRoeXNlbGYgYXJ0IGEgZ3VpZGUgb2YgdGhlIGJsaW5kLCBhIGxpZ2h0IG9mIHRoZW0gd2hpY2ggYXJlIGluIGRhcmtuZXNzLApBbiBpbnN0cnVjdG9yIG9mIHRoZSBmb29saXNoLCBhIHRlYWNoZXIgb2YgYmFiZXMsIHdoaWNoIGhhc3QgdGhlIGZvcm0gb2Yga25vd2xlZGdlIGFuZCBvZiB0aGUgdHJ1dGggaW4gdGhlIGxhdy4KVGhvdSB0aGVyZWZvcmUgd2hpY2ggdGVhY2hlc3QgYW5vdGhlciwgdGVhY2hlc3QgdGhvdSBub3QgdGh5c2VsZj8gdGhvdSB0aGF0IHByZWFjaGVzdCBhIG1hbiBzaG91bGQgbm90IHN0ZWFsLCBkb3N0IHRob3Ugc3RlYWw/ClRob3UgdGhhdCBzYXllc3QgYSBtYW4gc2hvdWxkIG5vdCBjb21taXQgYWR1bHRlcnksIGRvc3QgdGhvdSBjb21taXQgYWR1bHRlcnk/IHRob3UgdGhhdCBhYmhvcnJlc3QgaWRvbHMsIGRvc3QgdGhvdSBjb21taXQgc2FjcmlsZWdlPwpUaG91IHRoYXQgbWFrZXN0IHRoeSBib2FzdCBvZiB0aGUgbGF3LCB0aHJvdWdoIGJyZWFraW5nIHRoZSBsYXcgZGlzaG9ub3VyZXN0IHRob3UgR29kPwpGb3IgdGhlIG5hbWUgb2YgR29kIGlzIGJsYXNwaGVtZWQgYW1vbmcgdGhlIEdlbnRpbGVzIHRocm91Z2ggeW91LCBhcyBpdCBpcyB3cml0dGVuLgpGb3IgY2lyY3VtY2lzaW9uIHZlcmlseSBwcm9maXRldGgsIGlmIHRob3Uga2VlcCB0aGUgbGF3OiBidXQgaWYgdGhvdSBiZSBhIGJyZWFrZXIgb2YgdGhlIGxhdywgdGh5IGNpcmN1bWNpc2lvbiBpcyBtYWRlIHVuY2lyY3VtY2lzaW9uLgpUaGVyZWZvcmUgaWYgdGhlIHVuY2lyY3VtY2lzaW9uIGtlZXAgdGhlIHJpZ2h0ZW91c25lc3Mgb2YgdGhlIGxhdywgc2hhbGwgbm90IGhpcyB1bmNpcmN1bWNpc2lvbiBiZSBjb3VudGVkIGZvciBjaXJjdW1jaXNpb24/CkFuZCBzaGFsbCBub3QgdW5jaXJjdW1jaXNpb24gd2hpY2ggaXMgYnkgbmF0dXJlLCBpZiBpdCBmdWxmaWwgdGhlIGxhdywganVkZ2UgdGhlZSwgd2hvIGJ5IHRoZSBsZXR0ZXIgYW5kIGNpcmN1bWNpc2lvbiBkb3N0IHRyYW5zZ3Jlc3MgdGhlIGxhdz8KRm9yIGhlIGlzIG5vdCBhIEpldywgd2hpY2ggaXMgb25lIG91dHdhcmRseTsgbmVpdGhlciBpcyB0aGF0IGNpcmN1bWNpc2lvbiwgd2hpY2ggaXMgb3V0d2FyZCBpbiB0aGUgZmxlc2g6CkJ1dCBoZSBpcyBhIEpldywgd2hpY2ggaXMgb25lIGlud2FyZGx5OyBhbmQgY2lyY3VtY2lzaW9uIGlzIHRoYXQgb2YgdGhlIGhlYXJ0LCBpbiB0aGUgc3Bpcml0LCBhbmQgbm90IGluIHRoZSBsZXR0ZXI7IHdob3NlIHByYWlzZSBpcyBub3Qgb2YgbWVuLCBidXQgb2YgR29kLgpXaGF0IGFkdmFudGFnZSB0aGVuIGhhdGggdGhlIEpldz8gb3Igd2hhdCBwcm9maXQgaXMgdGhlcmUgb2YgY2lyY3VtY2lzaW9uPwpNdWNoIGV2ZXJ5IHdheTogY2hpZWZseSwgYmVjYXVzZSB0aGF0IHVudG8gdGhlbSB3ZXJlIGNvbW1pdHRlZCB0aGUgb3JhY2xlcyBvZiBHb2QuCkZvciB3aGF0IGlmIHNvbWUgZGlkIG5vdCBiZWxpZXZlPyBzaGFsbCB0aGVpciB1bmJlbGllZiBtYWtlIHRoZSBmYWl0aCBvZiBHb2Qgd2l0aG91dCBlZmZlY3Q/CkdvZCBmb3JiaWQ6IHllYSwgbGV0IEdvZCBiZSB0cnVlLCBidXQgZXZlcnkgbWFuIGEgbGlhcjsgYXMgaXQgaXMgd3JpdHRlbiwgVGhhdCB0aG91IG1pZ2h0ZXN0IGJlIGp1c3RpZmllZCBpbiB0aHkgc2F5aW5ncywgYW5kIG1pZ2h0ZXN0IG92ZXJjb21lIHdoZW4gdGhvdSBhcnQganVkZ2VkLgpCdXQgaWYgb3VyIHVucmlnaHRlb3VzbmVzcyBjb21tZW5kIHRoZSByaWdodGVvdXNuZXNzIG9mIEdvZCwgd2hhdCBzaGFsbCB3ZSBzYXk/IElzIEdvZCB1bnJpZ2h0ZW91cyB3aG8gdGFrZXRoIHZlbmdlYW5jZT8gKEkgc3BlYWsgYXMgYSBtYW4pCkdvZCBmb3JiaWQ6IGZvciB0aGVuIGhvdyBzaGFsbCBHb2QganVkZ2UgdGhlIHdvcmxkPwpGb3IgaWYgdGhlIHRydXRoIG9mIEdvZCBoYXRoIG1vcmUgYWJvdW5kZWQgdGhyb3VnaCBteSBsaWUgdW50byBoaXMgZ2xvcnk7IHdoeSB5ZXQgYW0gSSBhbHNvIGp1ZGdlZCBhcyBhIHNpbm5lcj8KQW5kIG5vdCByYXRoZXIsIChhcyB3ZSBiZSBzbGFuZGVyb3VzbHkgcmVwb3J0ZWQsIGFuZCBhcyBzb21lIGFmZmlybSB0aGF0IHdlIHNheSwpIExldCB1cyBkbyBldmlsLCB0aGF0IGdvb2QgbWF5IGNvbWU/IHdob3NlIGRhbW5hdGlvbiBpcyBqdXN0LgpXaGF0IHRoZW4/IGFyZSB3ZSBiZXR0ZXIgdGhhbiB0aGV5PyBObywgaW4gbm8gd2lzZTogZm9yIHdlIGhhdmUgYmVmb3JlIHByb3ZlZCBib3RoIEpld3MgYW5kIEdlbnRpbGVzLCB0aGF0IHRoZXkgYXJlIGFsbCB1bmRlciBzaW47CkFzIGl0IGlzIHdyaXR0ZW4sIFRoZXJlIGlzIG5vbmUgcmlnaHRlb3VzLCBubywgbm90IG9uZToKVGhlcmUgaXMgbm9uZSB0aGF0IHVuZGVyc3RhbmRldGgsIHRoZXJlIGlzIG5vbmUgdGhhdCBzZWVrZXRoIGFmdGVyIEdvZC4KVGhleSBhcmUgYWxsIGdvbmUgb3V0IG9mIHRoZSB3YXksIHRoZXkgYXJlIHRvZ2V0aGVyIGJlY29tZSB1bnByb2ZpdGFibGU7IHRoZXJlIGlzIG5vbmUgdGhhdCBkb2V0aCBnb29kLCBubywgbm90IG9uZS4KVGhlaXIgdGhyb2F0IGlzIGFuIG9wZW4gc2VwdWxjaHJlOyB3aXRoIHRoZWlyIHRvbmd1ZXMgdGhleSBoYXZlIHVzZWQgZGVjZWl0OyB0aGUgcG9pc29uIG9mIGFzcHMgaXMgdW5kZXIgdGhlaXIgbGlwczoKV2hvc2UgbW91dGggaXMgZnVsbCBvZiBjdXJzaW5nIGFuZCBiaXR0ZXJuZXNzOgpUaGVpciBmZWV0IGFyZSBzd2lmdCB0byBzaGVkIGJsb29kOgpEZXN0cnVjdGlvbiBhbmQgbWlzZXJ5IGFyZSBpbiB0aGVpciB3YXlzOgpBbmQgdGhlIHdheSBvZiBwZWFjZSBoYXZlIHRoZXkgbm90IGtub3duOgpUaGVyZSBpcyBubyBmZWFyIG9mIEdvZCBiZWZvcmUgdGhlaXIgZXllcy4KTm93IHdlIGtub3cgdGhhdCB3aGF0IHRoaW5ncyBzb2V2ZXIgdGhlIGxhdyBzYWl0aCwgaXQgc2FpdGggdG8gdGhlbSB3aG8gYXJlIHVuZGVyIHRoZSBsYXc6IHRoYXQgZXZlcnkgbW91dGggbWF5IGJlIHN0b3BwZWQsIGFuZCBhbGwgdGhlIHdvcmxkIG1heSBiZWNvbWUgZ3VpbHR5IGJlZm9yZSBHb2QuClRoZXJlZm9yZSBieSB0aGUgZGVlZHMgb2YgdGhlIGxhdyB0aGVyZSBzaGFsbCBubyBmbGVzaCBiZSBqdXN0aWZpZWQgaW4gaGlzIHNpZ2h0OiBmb3IgYnkgdGhlIGxhdyBpcyB0aGUga25vd2xlZGdlIG9mIHNpbi4KQnV0IG5vdyB0aGUgcmlnaHRlb3VzbmVzcyBvZiBHb2Qgd2l0aG91dCB0aGUgbGF3IGlzIG1hbmlmZXN0ZWQsIGJlaW5nIHdpdG5lc3NlZCBieSB0aGUgbGF3IGFuZCB0aGUgcHJvcGhldHM7CkV2ZW4gdGhlIHJpZ2h0ZW91c25lc3Mgb2YgR29kIHdoaWNoIGlzIGJ5IGZhaXRoIG9mIEplc3VzIENocmlzdCB1bnRvIGFsbCBhbmQgdXBvbiBhbGwgdGhlbSB0aGF0IGJlbGlldmU6IGZvciB0aGVyZSBpcyBubyBkaWZmZXJlbmNlOgpGb3IgYWxsIGhhdmUgc2lubmVkLCBhbmQgY29tZSBzaG9ydCBvZiB0aGUgZ2xvcnkgb2YgR29kOwpCZWluZyBqdXN0aWZpZWQgZnJlZWx5IGJ5IGhpcyBncmFjZSB0aHJvdWdoIHRoZSByZWRlbXB0aW9uIHRoYXQgaXMgaW4gQ2hyaXN0IEplc3VzOgpXaG9tIEdvZCBoYXRoIHNldCBmb3J0aCB0byBiZSBhIHByb3BpdGlhdGlvbiB0aHJvdWdoIGZhaXRoIGluIGhpcyBibG9vZCwgdG8gZGVjbGFyZSBoaXMgcmlnaHRlb3VzbmVzcyBmb3IgdGhlIHJlbWlzc2lvbiBvZiBzaW5zIHRoYXQgYXJlIHBhc3QsIHRocm91Z2ggdGhlIGZvcmJlYXJhbmNlIG9mIEdvZDsKVG8gZGVjbGFyZSwgSSBzYXksIGF0IHRoaXMgdGltZSBoaXMgcmlnaHRlb3VzbmVzczogdGhhdCBoZSBtaWdodCBiZSBqdXN0LCBhbmQgdGhlIGp1c3RpZmllciBvZiBoaW0gd2hpY2ggYmVsaWV2ZXRoIGluIEplc3VzLgpXaGVyZSBpcyBib2FzdGluZyB0aGVuPyBJdCBpcyBleGNsdWRlZC4gQnkgd2hhdCBsYXc/IG9mIHdvcmtzPyBOYXk6IGJ1dCBieSB0aGUgbGF3IG9mIGZhaXRoLgpUaGVyZWZvcmUgd2UgY29uY2x1ZGUgdGhhdCBhIG1hbiBpcyBqdXN0aWZpZWQgYnkgZmFpdGggd2l0aG91dCB0aGUgZGVlZHMgb2YgdGhlIGxhdy4KSXMgaGUgdGhlIEdvZCBvZiB0aGUgSmV3cyBvbmx5PyBpcyBoZSBub3QgYWxzbyBvZiB0aGUgR2VudGlsZXM/IFllcywgb2YgdGhlIEdlbnRpbGVzIGFsc286ClNlZWluZyBpdCBpcyBvbmUgR29kLCB3aGljaCBzaGFsbCBqdXN0aWZ5IHRoZSBjaXJjdW1jaXNpb24gYnkgZmFpdGgsIGFuZCB1bmNpcmN1bWNpc2lvbiB0aHJvdWdoIGZhaXRoLgpEbyB3ZSB0aGVuIG1ha2Ugdm9pZCB0aGUgbGF3IHRocm91Z2ggZmFpdGg/IEdvZCBmb3JiaWQ6IHllYSwgd2UgZXN0YWJsaXNoIHRoZSBsYXcuCldoYXQgc2hhbGwgd2Ugc2F5IHRoZW4gdGhhdCBBYnJhaGFtIG91ciBmYXRoZXIsIGFzIHBlcnRhaW5pbmcgdG8gdGhlIGZsZXNoLCBoYXRoIGZvdW5kPwpGb3IgaWYgQWJyYWhhbSB3ZXJlIGp1c3RpZmllZCBieSB3b3JrcywgaGUgaGF0aCB3aGVyZW9mIHRvIGdsb3J5OyBidXQgbm90IGJlZm9yZSBHb2QuCkZvciB3aGF0IHNhaXRoIHRoZSBzY3JpcHR1cmU/IEFicmFoYW0gYmVsaWV2ZWQgR29kLCBhbmQgaXQgd2FzIGNvdW50ZWQgdW50byBoaW0gZm9yIHJpZ2h0ZW91c25lc3MuCk5vdyB0byBoaW0gdGhhdCB3b3JrZXRoIGlzIHRoZSByZXdhcmQgbm90IHJlY2tvbmVkIG9mIGdyYWNlLCBidXQgb2YgZGVidC4KQnV0IHRvIGhpbSB0aGF0IHdvcmtldGggbm90LCBidXQgYmVsaWV2ZXRoIG9uIGhpbSB0aGF0IGp1c3RpZmlldGggdGhlIHVuZ29kbHksIGhpcyBmYWl0aCBpcyBjb3VudGVkIGZvciByaWdodGVvdXNuZXNzLgpFdmVuIGFzIERhdmlkIGFsc28gZGVzY3JpYmV0aCB0aGUgYmxlc3NlZG5lc3Mgb2YgdGhlIG1hbiwgdW50byB3aG9tIEdvZCBpbXB1dGV0aCByaWdodGVvdXNuZXNzIHdpdGhvdXQgd29ya3MsClNheWluZywgQmxlc3NlZCBhcmUgdGhleSB3aG9zZSBpbmlxdWl0aWVzIGFyZSBmb3JnaXZlbiwgYW5kIHdob3NlIHNpbnMgYXJlIGNvdmVyZWQuCkJsZXNzZWQgaXMgdGhlIG1hbiB0byB3aG9tIHRoZSBMb3JkIHdpbGwgbm90IGltcHV0ZSBzaW4uCkNvbWV0aCB0aGlzIGJsZXNzZWRuZXNzIHRoZW4gdXBvbiB0aGUgY2lyY3VtY2lzaW9uIG9ubHksIG9yIHVwb24gdGhlIHVuY2lyY3VtY2lzaW9uIGFsc28/IGZvciB3ZSBzYXkgdGhhdCBmYWl0aCB3YXMgcmVja29uZWQgdG8gQWJyYWhhbSBmb3IgcmlnaHRlb3VzbmVzcy4KSG93IHdhcyBpdCB0aGVuIHJlY2tvbmVkPyB3aGVuIGhlIHdhcyBpbiBjaXJjdW1jaXNpb24sIG9yIGluIHVuY2lyY3VtY2lzaW9uPyBOb3QgaW4gY2lyY3VtY2lzaW9uLCBidXQgaW4gdW5jaXJjdW1jaXNpb24uCkFuZCBoZSByZWNlaXZlZCB0aGUgc2lnbiBvZiBjaXJjdW1jaXNpb24sIGEgc2VhbCBvZiB0aGUgcmlnaHRlb3VzbmVzcyBvZiB0aGUgZmFpdGggd2hpY2ggaGUgaGFkIHlldCBiZWluZyB1bmNpcmN1bWNpc2VkOiB0aGF0IGhlIG1pZ2h0IGJlIHRoZSBmYXRoZXIgb2YgYWxsIHRoZW0gdGhhdCBiZWxpZXZlLCB0aG91Z2ggdGhleSBiZSBub3QgY2lyY3VtY2lzZWQ7IHRoYXQgcmlnaHRlb3VzbmVzcyBtaWdodCBiZSBpbXB1dGVkIHVudG8gdGhlbSBhbHNvOgpBbmQgdGhlIGZhdGhlciBvZiBjaXJjdW1jaXNpb24gdG8gdGhlbSB3aG8gYXJlIG5vdCBvZiB0aGUgY2lyY3VtY2lzaW9uIG9ubHksIGJ1dCB3aG8gYWxzbyB3YWxrIGluIHRoZSBzdGVwcyBvZiB0aGF0IGZhaXRoIG9mIG91ciBmYXRoZXIgQWJyYWhhbSwgd2hpY2ggaGUgaGFkIGJlaW5nIHlldCB1bmNpcmN1bWNpc2VkLgpGb3IgdGhlIHByb21pc2UsIHRoYXQgaGUgc2hvdWxkIGJlIHRoZSBoZWlyIG9mIHRoZSB3b3JsZCwgd2FzIG5vdCB0byBBYnJhaGFtLCBvciB0byBoaXMgc2VlZCwgdGhyb3VnaCB0aGUgbGF3LCBidXQgdGhyb3VnaCB0aGUgcmlnaHRlb3VzbmVzcyBvZiBmYWl0aC4KRm9yIGlmIHRoZXkgd2hpY2ggYXJlIG9mIHRoZSBsYXcgYmUgaGVpcnMsIGZhaXRoIGlzIG1hZGUgdm9pZCwgYW5kIHRoZSBwcm9taXNlIG1hZGUgb2Ygbm9uZSBlZmZlY3Q6CkJlY2F1c2UgdGhlIGxhdyB3b3JrZXRoIHdyYXRoOiBmb3Igd2hlcmUgbm8gbGF3IGlzLCB0aGVyZSBpcyBubyB0cmFuc2dyZXNzaW9uLgpUaGVyZWZvcmUgaXQgaXMgb2YgZmFpdGgsIHRoYXQgaXQgbWlnaHQgYmUgYnkgZ3JhY2U7IHRvIHRoZSBlbmQgdGhlIHByb21pc2UgbWlnaHQgYmUgc3VyZSB0byBhbGwgdGhlIHNlZWQ7IG5vdCB0byB0aGF0IG9ubHkgd2hpY2ggaXMgb2YgdGhlIGxhdywgYnV0IHRvIHRoYXQgYWxzbyB3aGljaCBpcyBvZiB0aGUgZmFpdGggb2YgQWJyYWhhbTsgd2hvIGlzIHRoZSBmYXRoZXIgb2YgdXMgYWxsLAooQXMgaXQgaXMgd3JpdHRlbiwgSSBoYXZlIG1hZGUgdGhlZSBhIGZhdGhlciBvZiBtYW55IG5hdGlvbnMsKSBiZWZvcmUgaGltIHdob20gaGUgYmVsaWV2ZWQsIGV2ZW4gR29kLCB3aG8gcXVpY2tlbmV0aCB0aGUgZGVhZCwgYW5kIGNhbGxldGggdGhvc2UgdGhpbmdzIHdoaWNoIGJlIG5vdCBhcyB0aG91Z2ggdGhleSB3ZXJlLgpXaG8gYWdhaW5zdCBob3BlIGJlbGlldmVkIGluIGhvcGUsIHRoYXQgaGUgbWlnaHQgYmVjb21lIHRoZSBmYXRoZXIgb2YgbWFueSBuYXRpb25zLCBhY2NvcmRpbmcgdG8gdGhhdCB3aGljaCB3YXMgc3Bva2VuLCBTbyBzaGFsbCB0aHkgc2VlZCBiZS4KQW5kIGJlaW5nIG5vdCB3ZWFrIGluIGZhaXRoLCBoZSBjb25zaWRlcmVkIG5vdCBoaXMgb3duIGJvZHkgbm93IGRlYWQsIHdoZW4gaGUgd2FzIGFib3V0IGFuIGh1bmRyZWQgeWVhcnMgb2xkLCBuZWl0aGVyIHlldCB0aGUgZGVhZG5lc3Mgb2YgU2FyYWgncyB3b21iOgpIZSBzdGFnZ2VyZWQgbm90IGF0IHRoZSBwcm9taXNlIG9mIEdvZCB0aHJvdWdoIHVuYmVsaWVmOyBidXQgd2FzIHN0cm9uZyBpbiBmYWl0aCwgZ2l2aW5nIGdsb3J5IHRvIEdvZDsKQW5kIGJlaW5nIGZ1bGx5IHBlcnN1YWRlZCB0aGF0LCB3aGF0IGhlIGhhZCBwcm9taXNlZCwgaGUgd2FzIGFibGUgYWxzbyB0byBwZXJmb3JtLgpBbmQgdGhlcmVmb3JlIGl0IHdhcyBpbXB1dGVkIHRvIGhpbSBmb3IgcmlnaHRlb3VzbmVzcy4KTm93IGl0IHdhcyBub3Qgd3JpdHRlbiBmb3IgaGlzIHNha2UgYWxvbmUsIHRoYXQgaXQgd2FzIGltcHV0ZWQgdG8gaGltOwpCdXQgZm9yIHVzIGFsc28sIHRvIHdob20gaXQgc2hhbGwgYmUgaW1wdXRlZCwgaWYgd2UgYmVsaWV2ZSBvbiBoaW0gdGhhdCByYWlzZWQgdXAgSmVzdXMgb3VyIExvcmQgZnJvbSB0aGUgZGVhZDsKV2hvIHdhcyBkZWxpdmVyZWQgZm9yIG91ciBvZmZlbmNlcywgYW5kIHdhcyByYWlzZWQgYWdhaW4gZm9yIG91ciBqdXN0aWZpY2F0aW9uLgpUaGVyZWZvcmUgYmVpbmcganVzdGlmaWVkIGJ5IGZhaXRoLCB3ZSBoYXZlIHBlYWNlIHdpdGggR29kIHRocm91Z2ggb3VyIExvcmQgSmVzdXMgQ2hyaXN0OgpCeSB3aG9tIGFsc28gd2UgaGF2ZSBhY2Nlc3MgYnkgZmFpdGggaW50byB0aGlzIGdyYWNlIHdoZXJlaW4gd2Ugc3RhbmQsIGFuZCByZWpvaWNlIGluIGhvcGUgb2YgdGhlIGdsb3J5IG9mIEdvZC4KQW5kIG5vdCBvbmx5IHNvLCBidXQgd2UgZ2xvcnkgaW4gdHJpYnVsYXRpb25zIGFsc286IGtub3dpbmcgdGhhdCB0cmlidWxhdGlvbiB3b3JrZXRoIHBhdGllbmNlOwpBbmQgcGF0aWVuY2UsIGV4cGVyaWVuY2U7IGFuZCBleHBlcmllbmNlLCBob3BlOgpBbmQgaG9wZSBtYWtldGggbm90IGFzaGFtZWQ7IGJlY2F1c2UgdGhlIGxvdmUgb2YgR29kIGlzIHNoZWQgYWJyb2FkIGluIG91ciBoZWFydHMgYnkgdGhlIEhvbHkgR2hvc3Qgd2hpY2ggaXMgZ2l2ZW4gdW50byB1cy4KRm9yIHdoZW4gd2Ugd2VyZSB5ZXQgd2l0aG91dCBzdHJlbmd0aCwgaW4gZHVlIHRpbWUgQ2hyaXN0IGRpZWQgZm9yIHRoZSB1bmdvZGx5LgpGb3Igc2NhcmNlbHkgZm9yIGEgcmlnaHRlb3VzIG1hbiB3aWxsIG9uZSBkaWU6IHlldCBwZXJhZHZlbnR1cmUgZm9yIGEgZ29vZCBtYW4gc29tZSB3b3VsZCBldmVuIGRhcmUgdG8gZGllLgpCdXQgR29kIGNvbW1lbmRldGggaGlzIGxvdmUgdG93YXJkIHVzLCBpbiB0aGF0LCB3aGlsZSB3ZSB3ZXJlIHlldCBzaW5uZXJzLCBDaHJpc3QgZGllZCBmb3IgdXMuCk11Y2ggbW9yZSB0aGVuLCBiZWluZyBub3cganVzdGlmaWVkIGJ5IGhpcyBibG9vZCwgd2Ugc2hhbGwgYmUgc2F2ZWQgZnJvbSB3cmF0aCB0aHJvdWdoIGhpbS4KRm9yIGlmLCB3aGVuIHdlIHdlcmUgZW5lbWllcywgd2Ugd2VyZSByZWNvbmNpbGVkIHRvIEdvZCBieSB0aGUgZGVhdGggb2YgaGlzIFNvbiwgbXVjaCBtb3JlLCBiZWluZyByZWNvbmNpbGVkLCB3ZSBzaGFsbCBiZSBzYXZlZCBieSBoaXMgbGlmZS4KQW5kIG5vdCBvbmx5IHNvLCBidXQgd2UgYWxzbyBqb3kgaW4gR29kIHRocm91Z2ggb3VyIExvcmQgSmVzdXMgQ2hyaXN0LCBieSB3aG9tIHdlIGhhdmUgbm93IHJlY2VpdmVkIHRoZSBhdG9uZW1lbnQuCldoZXJlZm9yZSwgYXMgYnkgb25lIG1hbiBzaW4gZW50ZXJlZCBpbnRvIHRoZSB3b3JsZCwgYW5kIGRlYXRoIGJ5IHNpbjsgYW5kIHNvIGRlYXRoIHBhc3NlZCB1cG9uIGFsbCBtZW4sIGZvciB0aGF0IGFsbCBoYXZlIHNpbm5lZDoKKEZvciB1bnRpbCB0aGUgbGF3IHNpbiB3YXMgaW4gdGhlIHdvcmxkOiBidXQgc2luIGlzIG5vdCBpbXB1dGVkIHdoZW4gdGhlcmUgaXMgbm8gbGF3LgpOZXZlcnRoZWxlc3MgZGVhdGggcmVpZ25lZCBmcm9tIEFkYW0gdG8gTW9zZXMsIGV2ZW4gb3ZlciB0aGVtIHRoYXQgaGFkIG5vdCBzaW5uZWQgYWZ0ZXIgdGhlIHNpbWlsaXR1ZGUgb2YgQWRhbSdzIHRyYW5zZ3Jlc3Npb24sIHdobyBpcyB0aGUgZmlndXJlIG9mIGhpbSB0aGF0IHdhcyB0byBjb21lLgpCdXQgbm90IGFzIHRoZSBvZmZlbmNlLCBzbyBhbHNvIGlzIHRoZSBmcmVlIGdpZnQuIEZvciBpZiB0aHJvdWdoIHRoZSBvZmZlbmNlIG9mIG9uZSBtYW55IGJlIGRlYWQsIG11Y2ggbW9yZSB0aGUgZ3JhY2Ugb2YgR29kLCBhbmQgdGhlIGdpZnQgYnkgZ3JhY2UsIHdoaWNoIGlzIGJ5IG9uZSBtYW4sIEplc3VzIENocmlzdCwgaGF0aCBhYm91bmRlZCB1bnRvIG1hbnkuCkFuZCBub3QgYXMgaXQgd2FzIGJ5IG9uZSB0aGF0IHNpbm5lZCwgc28gaXMgdGhlIGdpZnQ6IGZvciB0aGUganVkZ21lbnQgd2FzIGJ5IG9uZSB0byBjb25kZW1uYXRpb24sIGJ1dCB0aGUgZnJlZSBnaWZ0IGlzIG9mIG1hbnkgb2ZmZW5jZXMgdW50byBqdXN0aWZpY2F0aW9uLgpGb3IgaWYgYnkgb25lIG1hbidzIG9mZmVuY2UgZGVhdGggcmVpZ25lZCBieSBvbmU7IG11Y2ggbW9yZSB0aGV5IHdoaWNoIHJlY2VpdmUgYWJ1bmRhbmNlIG9mIGdyYWNlIGFuZCBvZiB0aGUgZ2lmdCBvZiByaWdodGVvdXNuZXNzIHNoYWxsIHJlaWduIGluIGxpZmUgYnkgb25lLCBKZXN1cyBDaHJpc3QuKQpUaGVyZWZvcmUgYXMgYnkgdGhlIG9mZmVuY2Ugb2Ygb25lIGp1ZGdtZW50IGNhbWUgdXBvbiBhbGwgbWVuIHRvIGNvbmRlbW5hdGlvbjsgZXZlbiBzbyBieSB0aGUgcmlnaHRlb3VzbmVzcyBvZiBvbmUgdGhlIGZyZWUgZ2lmdCBjYW1lIHVwb24gYWxsIG1lbiB1bnRvIGp1c3RpZmljYXRpb24gb2YgbGlmZS4KRm9yIGFzIGJ5IG9uZSBtYW4ncyBkaXNvYmVkaWVuY2UgbWFueSB3ZXJlIG1hZGUgc2lubmVycywgc28gYnkgdGhlIG9iZWRpZW5jZSBvZiBvbmUgc2hhbGwgbWFueSBiZSBtYWRlIHJpZ2h0ZW91cy4KTW9yZW92ZXIgdGhlIGxhdyBlbnRlcmVkLCB0aGF0IHRoZSBvZmZlbmNlIG1pZ2h0IGFib3VuZC4gQnV0IHdoZXJlIHNpbiBhYm91bmRlZCwgZ3JhY2UgZGlkIG11Y2ggbW9yZSBhYm91bmQ6ClRoYXQgYXMgc2luIGhhdGggcmVpZ25lZCB1bnRvIGRlYXRoLCBldmVuIHNvIG1pZ2h0IGdyYWNlIHJlaWduIHRocm91Z2ggcmlnaHRlb3VzbmVzcyB1bnRvIGV0ZXJuYWwgbGlmZSBieSBKZXN1cyBDaHJpc3Qgb3VyIExvcmQuCldoYXQgc2hhbGwgd2Ugc2F5IHRoZW4/IFNoYWxsIHdlIGNvbnRpbnVlIGluIHNpbiwgdGhhdCBncmFjZSBtYXkgYWJvdW5kPwpHb2QgZm9yYmlkLiBIb3cgc2hhbGwgd2UsIHRoYXQgYXJlIGRlYWQgdG8gc2luLCBsaXZlIGFueSBsb25nZXIgdGhlcmVpbj8KS25vdyB5ZSBub3QsIHRoYXQgc28gbWFueSBvZiB1cyBhcyB3ZXJlIGJhcHRpemVkIGludG8gSmVzdXMgQ2hyaXN0IHdlcmUgYmFwdGl6ZWQgaW50byBoaXMgZGVhdGg/ClRoZXJlZm9yZSB3ZSBhcmUgYnVyaWVkIHdpdGggaGltIGJ5IGJhcHRpc20gaW50byBkZWF0aDogdGhhdCBsaWtlIGFzIENocmlzdCB3YXMgcmFpc2VkIHVwIGZyb20gdGhlIGRlYWQgYnkgdGhlIGdsb3J5IG9mIHRoZSBGYXRoZXIsIGV2ZW4gc28gd2UgYWxzbyBzaG91bGQgd2FsayBpbiBuZXduZXNzIG9mIGxpZmUuCkZvciBpZiB3ZSBoYXZlIGJlZW4gcGxhbnRlZCB0b2dldGhlciBpbiB0aGUgbGlrZW5lc3Mgb2YgaGlzIGRlYXRoLCB3ZSBzaGFsbCBiZSBhbHNvIGluIHRoZSBsaWtlbmVzcyBvZiBoaXMgcmVzdXJyZWN0aW9uOgpLbm93aW5nIHRoaXMsIHRoYXQgb3VyIG9sZCBtYW4gaXMgY3J1Y2lmaWVkIHdpdGggaGltLCB0aGF0IHRoZSBib2R5IG9mIHNpbiBtaWdodCBiZSBkZXN0cm95ZWQsIHRoYXQgaGVuY2Vmb3J0aCB3ZSBzaG91bGQgbm90IHNlcnZlIHNpbi4KRm9yIGhlIHRoYXQgaXMgZGVhZCBpcyBmcmVlZCBmcm9tIHNpbi4KTm93IGlmIHdlIGJlIGRlYWQgd2l0aCBDaHJpc3QsIHdlIGJlbGlldmUgdGhhdCB3ZSBzaGFsbCBhbHNvIGxpdmUgd2l0aCBoaW06Cktub3dpbmcgdGhhdCBDaHJpc3QgYmVpbmcgcmFpc2VkIGZyb20gdGhlIGRlYWQgZGlldGggbm8gbW9yZTsgZGVhdGggaGF0aCBubyBtb3JlIGRvbWluaW9uIG92ZXIgaGltLgpGb3IgaW4gdGhhdCBoZSBkaWVkLCBoZSBkaWVkIHVudG8gc2luIG9uY2U6IGJ1dCBpbiB0aGF0IGhlIGxpdmV0aCwgaGUgbGl2ZXRoIHVudG8gR29kLgpMaWtld2lzZSByZWNrb24geWUgYWxzbyB5b3Vyc2VsdmVzIHRvIGJlIGRlYWQgaW5kZWVkIHVudG8gc2luLCBidXQgYWxpdmUgdW50byBHb2QgdGhyb3VnaCBKZXN1cyBDaHJpc3Qgb3VyIExvcmQuCkxldCBub3Qgc2luIHRoZXJlZm9yZSByZWlnbiBpbiB5b3VyIG1vcnRhbCBib2R5LCB0aGF0IHllIHNob3VsZCBvYmV5IGl0IGluIHRoZSBsdXN0cyB0aGVyZW9mLgpOZWl0aGVyIHlpZWxkIHllIHlvdXIgbWVtYmVycyBhcyBpbnN0cnVtZW50cyBvZiB1bnJpZ2h0ZW91c25lc3MgdW50byBzaW46IGJ1dCB5aWVsZCB5b3Vyc2VsdmVzIHVudG8gR29kLCBhcyB0aG9zZSB0aGF0IGFyZSBhbGl2ZSBmcm9tIHRoZSBkZWFkLCBhbmQgeW91ciBtZW1iZXJzIGFzIGluc3RydW1lbnRzIG9mIHJpZ2h0ZW91c25lc3MgdW50byBHb2QuCkZvciBzaW4gc2hhbGwgbm90IGhhdmUgZG9taW5pb24gb3ZlciB5b3U6IGZvciB5ZSBhcmUgbm90IHVuZGVyIHRoZSBsYXcsIGJ1dCB1bmRlciBncmFjZS4KV2hhdCB0aGVuPyBzaGFsbCB3ZSBzaW4sIGJlY2F1c2Ugd2UgYXJlIG5vdCB1bmRlciB0aGUgbGF3LCBidXQgdW5kZXIgZ3JhY2U/IEdvZCBmb3JiaWQuCktub3cgeWUgbm90LCB0aGF0IHRvIHdob20geWUgeWllbGQgeW91cnNlbHZlcyBzZXJ2YW50cyB0byBvYmV5LCBoaXMgc2VydmFudHMgeWUgYXJlIHRvIHdob20geWUgb2JleTsgd2hldGhlciBvZiBzaW4gdW50byBkZWF0aCwgb3Igb2Ygb2JlZGllbmNlIHVudG8gcmlnaHRlb3VzbmVzcz8KQnV0IEdvZCBiZSB0aGFua2VkLCB0aGF0IHllIHdlcmUgdGhlIHNlcnZhbnRzIG9mIHNpbiwgYnV0IHllIGhhdmUgb2JleWVkIGZyb20gdGhlIGhlYXJ0IHRoYXQgZm9ybSBvZiBkb2N0cmluZSB3aGljaCB3YXMgZGVsaXZlcmVkIHlvdS4KQmVpbmcgdGhlbiBtYWRlIGZyZWUgZnJvbSBzaW4sIHllIGJlY2FtZSB0aGUgc2VydmFudHMgb2YgcmlnaHRlb3VzbmVzcy4KSSBzcGVhayBhZnRlciB0aGUgbWFubmVyIG9mIG1lbiBiZWNhdXNlIG9mIHRoZSBpbmZpcm1pdHkgb2YgeW91ciBmbGVzaDogZm9yIGFzIHllIGhhdmUgeWllbGRlZCB5b3VyIG1lbWJlcnMgc2VydmFudHMgdG8gdW5jbGVhbm5lc3MgYW5kIHRvIGluaXF1aXR5IHVudG8gaW5pcXVpdHk7IGV2ZW4gc28gbm93IHlpZWxkIHlvdXIgbWVtYmVycyBzZXJ2YW50cyB0byByaWdodGVvdXNuZXNzIHVudG8gaG9saW5lc3MuCkZvciB3aGVuIHllIHdlcmUgdGhlIHNlcnZhbnRzIG9mIHNpbiwgeWUgd2VyZSBmcmVlIGZyb20gcmlnaHRlb3VzbmVzcy4KV2hhdCBmcnVpdCBoYWQgeWUgdGhlbiBpbiB0aG9zZSB0aGluZ3Mgd2hlcmVvZiB5ZSBhcmUgbm93IGFzaGFtZWQ/IGZvciB0aGUgZW5kIG9mIHRob3NlIHRoaW5ncyBpcyBkZWF0aC4KQnV0IG5vdyBiZWluZyBtYWRlIGZyZWUgZnJvbSBzaW4sIGFuZCBiZWNvbWUgc2VydmFudHMgdG8gR29kLCB5ZSBoYXZlIHlvdXIgZnJ1aXQgdW50byBob2xpbmVzcywgYW5kIHRoZSBlbmQgZXZlcmxhc3RpbmcgbGlmZS4KRm9yIHRoZSB3YWdlcyBvZiBzaW4gaXMgZGVhdGg7IGJ1dCB0aGUgZ2lmdCBvZiBHb2QgaXMgZXRlcm5hbCBsaWZlIHRocm91Z2ggSmVzdXMgQ2hyaXN0IG91ciBMb3JkLgpLbm93IHllIG5vdCwgYnJldGhyZW4sIChmb3IgSSBzcGVhayB0byB0aGVtIHRoYXQga25vdyB0aGUgbGF3LCkgaG93IHRoYXQgdGhlIGxhdyBoYXRoIGRvbWluaW9uIG92ZXIgYSBtYW4gYXMgbG9uZyBhcyBoZSBsaXZldGg/CkZvciB0aGUgd29tYW4gd2hpY2ggaGF0aCBhbiBodXNiYW5kIGlzIGJvdW5kIGJ5IHRoZSBsYXcgdG8gaGVyIGh1c2JhbmQgc28gbG9uZyBhcyBoZSBsaXZldGg7IGJ1dCBpZiB0aGUgaHVzYmFuZCBiZSBkZWFkLCBzaGUgaXMgbG9vc2VkIGZyb20gdGhlIGxhdyBvZiBoZXIgaHVzYmFuZC4KU28gdGhlbiBpZiwgd2hpbGUgaGVyIGh1c2JhbmQgbGl2ZXRoLCBzaGUgYmUgbWFycmllZCB0byBhbm90aGVyIG1hbiwgc2hlIHNoYWxsIGJlIGNhbGxlZCBhbiBhZHVsdGVyZXNzOiBidXQgaWYgaGVyIGh1c2JhbmQgYmUgZGVhZCwgc2hlIGlzIGZyZWUgZnJvbSB0aGF0IGxhdzsgc28gdGhhdCBzaGUgaXMgbm8gYWR1bHRlcmVzcywgdGhvdWdoIHNoZSBiZSBtYXJyaWVkIHRvIGFub3RoZXIgbWFuLgpXaGVyZWZvcmUsIG15IGJyZXRocmVuLCB5ZSBhbHNvIGFyZSBiZWNvbWUgZGVhZCB0byB0aGUgbGF3IGJ5IHRoZSBib2R5IG9mIENocmlzdDsgdGhhdCB5ZSBzaG91bGQgYmUgbWFycmllZCB0byBhbm90aGVyLCBldmVuIHRvIGhpbSB3aG8gaXMgcmFpc2VkIGZyb20gdGhlIGRlYWQsIHRoYXQgd2Ugc2hvdWxkIGJyaW5nIGZvcnRoIGZydWl0IHVudG8gR29kLgpGb3Igd2hlbiB3ZSB3ZXJlIGluIHRoZSBmbGVzaCwgdGhlIG1vdGlvbnMgb2Ygc2lucywgd2hpY2ggd2VyZSBieSB0aGUgbGF3LCBkaWQgd29yayBpbiBvdXIgbWVtYmVycyB0byBicmluZyBmb3J0aCBmcnVpdCB1bnRvIGRlYXRoLgpCdXQgbm93IHdlIGFyZSBkZWxpdmVyZWQgZnJvbSB0aGUgbGF3LCB0aGF0IGJlaW5nIGRlYWQgd2hlcmVpbiB3ZSB3ZXJlIGhlbGQ7IHRoYXQgd2Ugc2hvdWxkIHNlcnZlIGluIG5ld25lc3Mgb2Ygc3Bpcml0LCBhbmQgbm90IGluIHRoZSBvbGRuZXNzIG9mIHRoZSBsZXR0ZXIuCldoYXQgc2hhbGwgd2Ugc2F5IHRoZW4/IElzIHRoZSBsYXcgc2luPyBHb2QgZm9yYmlkLiBOYXksIEkgaGFkIG5vdCBrbm93biBzaW4sIGJ1dCBieSB0aGUgbGF3OiBmb3IgSSBoYWQgbm90IGtub3duIGx1c3QsIGV4Y2VwdCB0aGUgbGF3IGhhZCBzYWlkLCBUaG91IHNoYWx0IG5vdCBjb3ZldC4KQnV0IHNpbiwgdGFraW5nIG9jY2FzaW9uIGJ5IHRoZSBjb21tYW5kbWVudCwgd3JvdWdodCBpbiBtZSBhbGwgbWFubmVyIG9mIGNvbmN1cGlzY2VuY2UuIEZvciB3aXRob3V0IHRoZSBsYXcgc2luIHdhcyBkZWFkLgpGb3IgSSB3YXMgYWxpdmUgd2l0aG91dCB0aGUgbGF3IG9uY2U6IGJ1dCB3aGVuIHRoZSBjb21tYW5kbWVudCBjYW1lLCBzaW4gcmV2aXZlZCwgYW5kIEkgZGllZC4KQW5kIHRoZSBjb21tYW5kbWVudCwgd2hpY2ggd2FzIG9yZGFpbmVkIHRvIGxpZmUsIEkgZm91bmQgdG8gYmUgdW50byBkZWF0aC4KRm9yIHNpbiwgdGFraW5nIG9jY2FzaW9uIGJ5IHRoZSBjb21tYW5kbWVudCwgZGVjZWl2ZWQgbWUsIGFuZCBieSBpdCBzbGV3IG1lLgpXaGVyZWZvcmUgdGhlIGxhdyBpcyBob2x5LCBhbmQgdGhlIGNvbW1hbmRtZW50IGhvbHksIGFuZCBqdXN0LCBhbmQgZ29vZC4KV2FzIHRoZW4gdGhhdCB3aGljaCBpcyBnb29kIG1hZGUgZGVhdGggdW50byBtZT8gR29kIGZvcmJpZC4gQnV0IHNpbiwgdGhhdCBpdCBtaWdodCBhcHBlYXIgc2luLCB3b3JraW5nIGRlYXRoIGluIG1lIGJ5IHRoYXQgd2hpY2ggaXMgZ29vZDsgdGhhdCBzaW4gYnkgdGhlIGNvbW1hbmRtZW50IG1pZ2h0IGJlY29tZSBleGNlZWRpbmcgc2luZnVsLgpGb3Igd2Uga25vdyB0aGF0IHRoZSBsYXcgaXMgc3Bpcml0dWFsOiBidXQgSSBhbSBjYXJuYWwsIHNvbGQgdW5kZXIgc2luLgpGb3IgdGhhdCB3aGljaCBJIGRvIEkgYWxsb3cgbm90OiBmb3Igd2hhdCBJIHdvdWxkLCB0aGF0IGRvIEkgbm90OyBidXQgd2hhdCBJIGhhdGUsIHRoYXQgZG8gSS4KSWYgdGhlbiBJIGRvIHRoYXQgd2hpY2ggSSB3b3VsZCBub3QsIEkgY29uc2VudCB1bnRvIHRoZSBsYXcgdGhhdCBpdCBpcyBnb29kLgpOb3cgdGhlbiBpdCBpcyBubyBtb3JlIEkgdGhhdCBkbyBpdCwgYnV0IHNpbiB0aGF0IGR3ZWxsZXRoIGluIG1lLgpGb3IgSSBrbm93IHRoYXQgaW4gbWUgKHRoYXQgaXMsIGluIG15IGZsZXNoLCkgZHdlbGxldGggbm8gZ29vZCB0aGluZzogZm9yIHRvIHdpbGwgaXMgcHJlc2VudCB3aXRoIG1lOyBidXQgaG93IHRvIHBlcmZvcm0gdGhhdCB3aGljaCBpcyBnb29kIEkgZmluZCBub3QuCkZvciB0aGUgZ29vZCB0aGF0IEkgd291bGQgSSBkbyBub3Q6IGJ1dCB0aGUgZXZpbCB3aGljaCBJIHdvdWxkIG5vdCwgdGhhdCBJIGRvLgpOb3cgaWYgSSBkbyB0aGF0IEkgd291bGQgbm90LCBpdCBpcyBubyBtb3JlIEkgdGhhdCBkbyBpdCwgYnV0IHNpbiB0aGF0IGR3ZWxsZXRoIGluIG1lLgpJIGZpbmQgdGhlbiBhIGxhdywgdGhhdCwgd2hlbiBJIHdvdWxkIGRvIGdvb2QsIGV2aWwgaXMgcHJlc2VudCB3aXRoIG1lLgpGb3IgSSBkZWxpZ2h0IGluIHRoZSBsYXcgb2YgR29kIGFmdGVyIHRoZSBpbndhcmQgbWFuOgpCdXQgSSBzZWUgYW5vdGhlciBsYXcgaW4gbXkgbWVtYmVycywgd2FycmluZyBhZ2FpbnN0IHRoZSBsYXcgb2YgbXkgbWluZCwgYW5kIGJyaW5naW5nIG1lIGludG8gY2FwdGl2aXR5IHRvIHRoZSBsYXcgb2Ygc2luIHdoaWNoIGlzIGluIG15IG1lbWJlcnMuCk8gd3JldGNoZWQgbWFuIHRoYXQgSSBhbSEgd2hvIHNoYWxsIGRlbGl2ZXIgbWUgZnJvbSB0aGUgYm9keSBvZiB0aGlzIGRlYXRoPwpJIHRoYW5rIEdvZCB0aHJvdWdoIEplc3VzIENocmlzdCBvdXIgTG9yZC4gU28gdGhlbiB3aXRoIHRoZSBtaW5kIEkgbXlzZWxmIHNlcnZlIHRoZSBsYXcgb2YgR29kOyBidXQgd2l0aCB0aGUgZmxlc2ggdGhlIGxhdyBvZiBzaW4uClRoZXJlIGlzIHRoZXJlZm9yZSBub3cgbm8gY29uZGVtbmF0aW9uIHRvIHRoZW0gd2hpY2ggYXJlIGluIENocmlzdCBKZXN1cywgd2hvIHdhbGsgbm90IGFmdGVyIHRoZSBmbGVzaCwgYnV0IGFmdGVyIHRoZSBTcGlyaXQuCkZvciB0aGUgbGF3IG9mIHRoZSBTcGlyaXQgb2YgbGlmZSBpbiBDaHJpc3QgSmVzdXMgaGF0aCBtYWRlIG1lIGZyZWUgZnJvbSB0aGUgbGF3IG9mIHNpbiBhbmQgZGVhdGguCkZvciB3aGF0IHRoZSBsYXcgY291bGQgbm90IGRvLCBpbiB0aGF0IGl0IHdhcyB3ZWFrIHRocm91Z2ggdGhlIGZsZXNoLCBHb2Qgc2VuZGluZyBoaXMgb3duIFNvbiBpbiB0aGUgbGlrZW5lc3Mgb2Ygc2luZnVsIGZsZXNoLCBhbmQgZm9yIHNpbiwgY29uZGVtbmVkIHNpbiBpbiB0aGUgZmxlc2g6ClRoYXQgdGhlIHJpZ2h0ZW91c25lc3Mgb2YgdGhlIGxhdyBtaWdodCBiZSBmdWxmaWxsZWQgaW4gdXMsIHdobyB3YWxrIG5vdCBhZnRlciB0aGUgZmxlc2gsIGJ1dCBhZnRlciB0aGUgU3Bpcml0LgpGb3IgdGhleSB0aGF0IGFyZSBhZnRlciB0aGUgZmxlc2ggZG8gbWluZCB0aGUgdGhpbmdzIG9mIHRoZSBmbGVzaDsgYnV0IHRoZXkgdGhhdCBhcmUgYWZ0ZXIgdGhlIFNwaXJpdCB0aGUgdGhpbmdzIG9mIHRoZSBTcGlyaXQuCkZvciB0byBiZSBjYXJuYWxseSBtaW5kZWQgaXMgZGVhdGg7IGJ1dCB0byBiZSBzcGlyaXR1YWxseSBtaW5kZWQgaXMgbGlmZSBhbmQgcGVhY2UuCkJlY2F1c2UgdGhlIGNhcm5hbCBtaW5kIGlzIGVubWl0eSBhZ2FpbnN0IEdvZDogZm9yIGl0IGlzIG5vdCBzdWJqZWN0IHRvIHRoZSBsYXcgb2YgR29kLCBuZWl0aGVyIGluZGVlZCBjYW4gYmUuClNvIHRoZW4gdGhleSB0aGF0IGFyZSBpbiB0aGUgZmxlc2ggY2Fubm90IHBsZWFzZSBHb2QuCkJ1dCB5ZSBhcmUgbm90IGluIHRoZSBmbGVzaCwgYnV0IGluIHRoZSBTcGlyaXQsIGlmIHNvIGJlIHRoYXQgdGhlIFNwaXJpdCBvZiBHb2QgZHdlbGwgaW4geW91LiBOb3cgaWYgYW55IG1hbiBoYXZlIG5vdCB0aGUgU3Bpcml0IG9mIENocmlzdCwgaGUgaXMgbm9uZSBvZiBoaXMuCkFuZCBpZiBDaHJpc3QgYmUgaW4geW91LCB0aGUgYm9keSBpcyBkZWFkIGJlY2F1c2Ugb2Ygc2luOyBidXQgdGhlIFNwaXJpdCBpcyBsaWZlIGJlY2F1c2Ugb2YgcmlnaHRlb3VzbmVzcy4KQnV0IGlmIHRoZSBTcGlyaXQgb2YgaGltIHRoYXQgcmFpc2VkIHVwIEplc3VzIGZyb20gdGhlIGRlYWQgZHdlbGwgaW4geW91LCBoZSB0aGF0IHJhaXNlZCB1cCBDaHJpc3QgZnJvbSB0aGUgZGVhZCBzaGFsbCBhbHNvIHF1aWNrZW4geW91ciBtb3J0YWwgYm9kaWVzIGJ5IGhpcyBTcGlyaXQgdGhhdCBkd2VsbGV0aCBpbiB5b3UuClRoZXJlZm9yZSwgYnJldGhyZW4sIHdlIGFyZSBkZWJ0b3JzLCBub3QgdG8gdGhlIGZsZXNoLCB0byBsaXZlIGFmdGVyIHRoZSBmbGVzaC4KRm9yIGlmIHllIGxpdmUgYWZ0ZXIgdGhlIGZsZXNoLCB5ZSBzaGFsbCBkaWU6IGJ1dCBpZiB5ZSB0aHJvdWdoIHRoZSBTcGlyaXQgZG8gbW9ydGlmeSB0aGUgZGVlZHMgb2YgdGhlIGJvZHksIHllIHNoYWxsIGxpdmUuCkZvciBhcyBtYW55IGFzIGFyZSBsZWQgYnkgdGhlIFNwaXJpdCBvZiBHb2QsIHRoZXkgYXJlIHRoZSBzb25zIG9mIEdvZC4KRm9yIHllIGhhdmUgbm90IHJlY2VpdmVkIHRoZSBzcGlyaXQgb2YgYm9uZGFnZSBhZ2FpbiB0byBmZWFyOyBidXQgeWUgaGF2ZSByZWNlaXZlZCB0aGUgU3Bpcml0IG9mIGFkb3B0aW9uLCB3aGVyZWJ5IHdlIGNyeSwgQWJiYSwgRmF0aGVyLgpUaGUgU3Bpcml0IGl0c2VsZiBiZWFyZXRoIHdpdG5lc3Mgd2l0aCBvdXIgc3Bpcml0LCB0aGF0IHdlIGFyZSB0aGUgY2hpbGRyZW4gb2YgR29kOgpBbmQgaWYgY2hpbGRyZW4sIHRoZW4gaGVpcnM7IGhlaXJzIG9mIEdvZCwgYW5kIGpvaW50LWhlaXJzIHdpdGggQ2hyaXN0OyBpZiBzbyBiZSB0aGF0IHdlIHN1ZmZlciB3aXRoIGhpbSwgdGhhdCB3ZSBtYXkgYmUgYWxzbyBnbG9yaWZpZWQgdG9nZXRoZXIuCkZvciBJIHJlY2tvbiB0aGF0IHRoZSBzdWZmZXJpbmdzIG9mIHRoaXMgcHJlc2VudCB0aW1lIGFyZSBub3Qgd29ydGh5IHRvIGJlIGNvbXBhcmVkIHdpdGggdGhlIGdsb3J5IHdoaWNoIHNoYWxsIGJlIHJldmVhbGVkIGluIHVzLgpGb3IgdGhlIGVhcm5lc3QgZXhwZWN0YXRpb24gb2YgdGhlIGNyZWF0dXJlIHdhaXRldGggZm9yIHRoZSBtYW5pZmVzdGF0aW9uIG9mIHRoZSBzb25zIG9mIEdvZC4KRm9yIHRoZSBjcmVhdHVyZSB3YXMgbWFkZSBzdWJqZWN0IHRvIHZhbml0eSwgbm90IHdpbGxpbmdseSwgYnV0IGJ5IHJlYXNvbiBvZiBoaW0gd2hvIGhhdGggc3ViamVjdGVkIHRoZSBzYW1lIGluIGhvcGUsCkJlY2F1c2UgdGhlIGNyZWF0dXJlIGl0c2VsZiBhbHNvIHNoYWxsIGJlIGRlbGl2ZXJlZCBmcm9tIHRoZSBib25kYWdlIG9mIGNvcnJ1cHRpb24gaW50byB0aGUgZ2xvcmlvdXMgbGliZXJ0eSBvZiB0aGUgY2hpbGRyZW4gb2YgR29kLgpGb3Igd2Uga25vdyB0aGF0IHRoZSB3aG9sZSBjcmVhdGlvbiBncm9hbmV0aCBhbmQgdHJhdmFpbGV0aCBpbiBwYWluIHRvZ2V0aGVyIHVudGlsIG5vdy4KQW5kIG5vdCBvbmx5IHRoZXksIGJ1dCBvdXJzZWx2ZXMgYWxzbywgd2hpY2ggaGF2ZSB0aGUgZmlyc3RmcnVpdHMgb2YgdGhlIFNwaXJpdCwgZXZlbiB3ZSBvdXJzZWx2ZXMgZ3JvYW4gd2l0aGluIG91cnNlbHZlcywgd2FpdGluZyBmb3IgdGhlIGFkb3B0aW9uLCB0byB3aXQsIHRoZSByZWRlbXB0aW9uIG9mIG91ciBib2R5LgpGb3Igd2UgYXJlIHNhdmVkIGJ5IGhvcGU6IGJ1dCBob3BlIHRoYXQgaXMgc2VlbiBpcyBub3QgaG9wZTogZm9yIHdoYXQgYSBtYW4gc2VldGgsIHdoeSBkb3RoIGhlIHlldCBob3BlIGZvcj8KQnV0IGlmIHdlIGhvcGUgZm9yIHRoYXQgd2Ugc2VlIG5vdCwgdGhlbiBkbyB3ZSB3aXRoIHBhdGllbmNlIHdhaXQgZm9yIGl0LgpMaWtld2lzZSB0aGUgU3Bpcml0IGFsc28gaGVscGV0aCBvdXIgaW5maXJtaXRpZXM6IGZvciB3ZSBrbm93IG5vdCB3aGF0IHdlIHNob3VsZCBwcmF5IGZvciBhcyB3ZSBvdWdodDogYnV0IHRoZSBTcGlyaXQgaXRzZWxmIG1ha2V0aCBpbnRlcmNlc3Npb24gZm9yIHVzIHdpdGggZ3JvYW5pbmdzIHdoaWNoIGNhbm5vdCBiZSB1dHRlcmVkLgpBbmQgaGUgdGhhdCBzZWFyY2hldGggdGhlIGhlYXJ0cyBrbm93ZXRoIHdoYXQgaXMgdGhlIG1pbmQgb2YgdGhlIFNwaXJpdCwgYmVjYXVzZSBoZSBtYWtldGggaW50ZXJjZXNzaW9uIGZvciB0aGUgc2FpbnRzIGFjY29yZGluZyB0byB0aGUgd2lsbCBvZiBHb2QuCkFuZCB3ZSBrbm93IHRoYXQgYWxsIHRoaW5ncyB3b3JrIHRvZ2V0aGVyIGZvciBnb29kIHRvIHRoZW0gdGhhdCBsb3ZlIEdvZCwgdG8gdGhlbSB3aG8gYXJlIHRoZSBjYWxsZWQgYWNjb3JkaW5nIHRvIGhpcyBwdXJwb3NlLgpGb3Igd2hvbSBoZSBkaWQgZm9yZWtub3csIGhlIGFsc28gZGlkIHByZWRlc3RpbmF0ZSB0byBiZSBjb25mb3JtZWQgdG8gdGhlIGltYWdlIG9mIGhpcyBTb24sIHRoYXQgaGUgbWlnaHQgYmUgdGhlIGZpcnN0Ym9ybiBhbW9uZyBtYW55IGJyZXRocmVuLgpNb3Jlb3ZlciB3aG9tIGhlIGRpZCBwcmVkZXN0aW5hdGUsIHRoZW0gaGUgYWxzbyBjYWxsZWQ6IGFuZCB3aG9tIGhlIGNhbGxlZCwgdGhlbSBoZSBhbHNvIGp1c3RpZmllZDogYW5kIHdob20gaGUganVzdGlmaWVkLCB0aGVtIGhlIGFsc28gZ2xvcmlmaWVkLgpXaGF0IHNoYWxsIHdlIHRoZW4gc2F5IHRvIHRoZXNlIHRoaW5ncz8gSWYgR29kIGJlIGZvciB1cywgd2hvIGNhbiBiZSBhZ2FpbnN0IHVzPwpIZSB0aGF0IHNwYXJlZCBub3QgaGlzIG93biBTb24sIGJ1dCBkZWxpdmVyZWQgaGltIHVwIGZvciB1cyBhbGwsIGhvdyBzaGFsbCBoZSBub3Qgd2l0aCBoaW0gYWxzbyBmcmVlbHkgZ2l2ZSB1cyBhbGwgdGhpbmdzPwpXaG8gc2hhbGwgbGF5IGFueSB0aGluZyB0byB0aGUgY2hhcmdlIG9mIEdvZCdzIGVsZWN0PyBJdCBpcyBHb2QgdGhhdCBqdXN0aWZpZXRoLgpXaG8gaXMgaGUgdGhhdCBjb25kZW1uZXRoPyBJdCBpcyBDaHJpc3QgdGhhdCBkaWVkLCB5ZWEgcmF0aGVyLCB0aGF0IGlzIHJpc2VuIGFnYWluLCB3aG8gaXMgZXZlbiBhdCB0aGUgcmlnaHQgaGFuZCBvZiBHb2QsIHdobyBhbHNvIG1ha2V0aCBpbnRlcmNlc3Npb24gZm9yIHVzLgpXaG8gc2hhbGwgc2VwYXJhdGUgdXMgZnJvbSB0aGUgbG92ZSBvZiBDaHJpc3Q/IHNoYWxsIHRyaWJ1bGF0aW9uLCBvciBkaXN0cmVzcywgb3IgcGVyc2VjdXRpb24sIG9yIGZhbWluZSwgb3IgbmFrZWRuZXNzLCBvciBwZXJpbCwgb3Igc3dvcmQ/CkFzIGl0IGlzIHdyaXR0ZW4sIEZvciB0aHkgc2FrZSB3ZSBhcmUga2lsbGVkIGFsbCB0aGUgZGF5IGxvbmc7IHdlIGFyZSBhY2NvdW50ZWQgYXMgc2hlZXAgZm9yIHRoZSBzbGF1Z2h0ZXIuCk5heSwgaW4gYWxsIHRoZXNlIHRoaW5ncyB3ZSBhcmUgbW9yZSB0aGFuIGNvbnF1ZXJvcnMgdGhyb3VnaCBoaW0gdGhhdCBsb3ZlZCB1cy4KRm9yIEkgYW0gcGVyc3VhZGVkLCB0aGF0IG5laXRoZXIgZGVhdGgsIG5vciBsaWZlLCBub3IgYW5nZWxzLCBub3IgcHJpbmNpcGFsaXRpZXMsIG5vciBwb3dlcnMsIG5vciB0aGluZ3MgcHJlc2VudCwgbm9yIHRoaW5ncyB0byBjb21lLApOb3IgaGVpZ2h0LCBub3IgZGVwdGgsIG5vciBhbnkgb3RoZXIgY3JlYXR1cmUsIHNoYWxsIGJlIGFibGUgdG8gc2VwYXJhdGUgdXMgZnJvbSB0aGUgbG92ZSBvZiBHb2QsIHdoaWNoIGlzIGluIENocmlzdCBKZXN1cyBvdXIgTG9yZC4KSSBzYXkgdGhlIHRydXRoIGluIENocmlzdCwgSSBsaWUgbm90LCBteSBjb25zY2llbmNlIGFsc28gYmVhcmluZyBtZSB3aXRuZXNzIGluIHRoZSBIb2x5IEdob3N0LApUaGF0IEkgaGF2ZSBncmVhdCBoZWF2aW5lc3MgYW5kIGNvbnRpbnVhbCBzb3Jyb3cgaW4gbXkgaGVhcnQuCkZvciBJIGNvdWxkIHdpc2ggdGhhdCBteXNlbGYgd2VyZSBhY2N1cnNlZCBmcm9tIENocmlzdCBmb3IgbXkgYnJldGhyZW4sIG15IGtpbnNtZW4gYWNjb3JkaW5nIHRvIHRoZSBmbGVzaDoKV2hvIGFyZSBJc3JhZWxpdGVzOyB0byB3aG9tIHBlcnRhaW5ldGggdGhlIGFkb3B0aW9uLCBhbmQgdGhlIGdsb3J5LCBhbmQgdGhlIGNvdmVuYW50cywgYW5kIHRoZSBnaXZpbmcgb2YgdGhlIGxhdywgYW5kIHRoZSBzZXJ2aWNlIG9mIEdvZCwgYW5kIHRoZSBwcm9taXNlczsKV2hvc2UgYXJlIHRoZSBmYXRoZXJzLCBhbmQgb2Ygd2hvbSBhcyBjb25jZXJuaW5nIHRoZSBmbGVzaCBDaHJpc3QgY2FtZSwgd2hvIGlzIG92ZXIgYWxsLCBHb2QgYmxlc3NlZCBmb3IgZXZlci4gQW1lbi4KTm90IGFzIHRob3VnaCB0aGUgd29yZCBvZiBHb2QgaGF0aCB0YWtlbiBub25lIGVmZmVjdC4gRm9yIHRoZXkgYXJlIG5vdCBhbGwgSXNyYWVsLCB3aGljaCBhcmUgb2YgSXNyYWVsOgpOZWl0aGVyLCBiZWNhdXNlIHRoZXkgYXJlIHRoZSBzZWVkIG9mIEFicmFoYW0sIGFyZSB0aGV5IGFsbCBjaGlsZHJlbjogYnV0LCBJbiBJc2FhYyBzaGFsbCB0aHkgc2VlZCBiZSBjYWxsZWQuClRoYXQgaXMsIFRoZXkgd2hpY2ggYXJlIHRoZSBjaGlsZHJlbiBvZiB0aGUgZmxlc2gsIHRoZXNlIGFyZSBub3QgdGhlIGNoaWxkcmVuIG9mIEdvZDogYnV0IHRoZSBjaGlsZHJlbiBvZiB0aGUgcHJvbWlzZSBhcmUgY291bnRlZCBmb3IgdGhlIHNlZWQuCkZvciB0aGlzIGlzIHRoZSB3b3JkIG9mIHByb21pc2UsIEF0IHRoaXMgdGltZSB3aWxsIEkgY29tZSwgYW5kIFNhcmFoIHNoYWxsIGhhdmUgYSBzb24uCkFuZCBub3Qgb25seSB0aGlzOyBidXQgd2hlbiBSZWJlY2NhIGFsc28gaGFkIGNvbmNlaXZlZCBieSBvbmUsIGV2ZW4gYnkgb3VyIGZhdGhlciBJc2FhYzsKKEZvciB0aGUgY2hpbGRyZW4gYmVpbmcgbm90IHlldCBib3JuLCBuZWl0aGVyIGhhdmluZyBkb25lIGFueSBnb29kIG9yIGV2aWwsIHRoYXQgdGhlIHB1cnBvc2Ugb2YgR29kIGFjY29yZGluZyB0byBlbGVjdGlvbiBtaWdodCBzdGFuZCwgbm90IG9mIHdvcmtzLCBidXQgb2YgaGltIHRoYXQgY2FsbGV0aDspCkl0IHdhcyBzYWlkIHVudG8gaGVyLCBUaGUgZWxkZXIgc2hhbGwgc2VydmUgdGhlIHlvdW5nZXIuCkFzIGl0IGlzIHdyaXR0ZW4sIEphY29iIGhhdmUgSSBsb3ZlZCwgYnV0IEVzYXUgaGF2ZSBJIGhhdGVkLgpXaGF0IHNoYWxsIHdlIHNheSB0aGVuPyBJcyB0aGVyZSB1bnJpZ2h0ZW91c25lc3Mgd2l0aCBHb2Q/IEdvZCBmb3JiaWQuCkZvciBoZSBzYWl0aCB0byBNb3NlcywgSSB3aWxsIGhhdmUgbWVyY3kgb24gd2hvbSBJIHdpbGwgaGF2ZSBtZXJjeSwgYW5kIEkgd2lsbCBoYXZlIGNvbXBhc3Npb24gb24gd2hvbSBJIHdpbGwgaGF2ZSBjb21wYXNzaW9uLgpTbyB0aGVuIGl0IGlzIG5vdCBvZiBoaW0gdGhhdCB3aWxsZXRoLCBub3Igb2YgaGltIHRoYXQgcnVubmV0aCwgYnV0IG9mIEdvZCB0aGF0IHNoZXdldGggbWVyY3kuCkZvciB0aGUgc2NyaXB0dXJlIHNhaXRoIHVudG8gUGhhcmFvaCwgRXZlbiBmb3IgdGhpcyBzYW1lIHB1cnBvc2UgaGF2ZSBJIHJhaXNlZCB0aGVlIHVwLCB0aGF0IEkgbWlnaHQgc2hldyBteSBwb3dlciBpbiB0aGVlLCBhbmQgdGhhdCBteSBuYW1lIG1pZ2h0IGJlIGRlY2xhcmVkIHRocm91Z2hvdXQgYWxsIHRoZSBlYXJ0aC4KVGhlcmVmb3JlIGhhdGggaGUgbWVyY3kgb24gd2hvbSBoZSB3aWxsIGhhdmUgbWVyY3ksIGFuZCB3aG9tIGhlIHdpbGwgaGUgaGFyZGVuZXRoLgpUaG91IHdpbHQgc2F5IHRoZW4gdW50byBtZSwgV2h5IGRvdGggaGUgeWV0IGZpbmQgZmF1bHQ/IEZvciB3aG8gaGF0aCByZXNpc3RlZCBoaXMgd2lsbD8KTmF5IGJ1dCwgTyBtYW4sIHdobyBhcnQgdGhvdSB0aGF0IHJlcGxpZXN0IGFnYWluc3QgR29kPyBTaGFsbCB0aGUgdGhpbmcgZm9ybWVkIHNheSB0byBoaW0gdGhhdCBmb3JtZWQgaXQsIFdoeSBoYXN0IHRob3UgbWFkZSBtZSB0aHVzPwpIYXRoIG5vdCB0aGUgcG90dGVyIHBvd2VyIG92ZXIgdGhlIGNsYXksIG9mIHRoZSBzYW1lIGx1bXAgdG8gbWFrZSBvbmUgdmVzc2VsIHVudG8gaG9ub3VyLCBhbmQgYW5vdGhlciB1bnRvIGRpc2hvbm91cj8KV2hhdCBpZiBHb2QsIHdpbGxpbmcgdG8gc2hldyBoaXMgd3JhdGgsIGFuZCB0byBtYWtlIGhpcyBwb3dlciBrbm93biwgZW5kdXJlZCB3aXRoIG11Y2ggbG9uZ3N1ZmZlcmluZyB0aGUgdmVzc2VscyBvZiB3cmF0aCBmaXR0ZWQgdG8gZGVzdHJ1Y3Rpb246CkFuZCB0aGF0IGhlIG1pZ2h0IG1ha2Uga25vd24gdGhlIHJpY2hlcyBvZiBoaXMgZ2xvcnkgb24gdGhlIHZlc3NlbHMgb2YgbWVyY3ksIHdoaWNoIGhlIGhhZCBhZm9yZSBwcmVwYXJlZCB1bnRvIGdsb3J5LApFdmVuIHVzLCB3aG9tIGhlIGhhdGggY2FsbGVkLCBub3Qgb2YgdGhlIEpld3Mgb25seSwgYnV0IGFsc28gb2YgdGhlIEdlbnRpbGVzPwpBcyBoZSBzYWl0aCBhbHNvIGluIE9zZWUsIEkgd2lsbCBjYWxsIHRoZW0gbXkgcGVvcGxlLCB3aGljaCB3ZXJlIG5vdCBteSBwZW9wbGU7IGFuZCBoZXIgYmVsb3ZlZCwgd2hpY2ggd2FzIG5vdCBiZWxvdmVkLgpBbmQgaXQgc2hhbGwgY29tZSB0byBwYXNzLCB0aGF0IGluIHRoZSBwbGFjZSB3aGVyZSBpdCB3YXMgc2FpZCB1bnRvIHRoZW0sIFllIGFyZSBub3QgbXkgcGVvcGxlOyB0aGVyZSBzaGFsbCB0aGV5IGJlIGNhbGxlZCB0aGUgY2hpbGRyZW4gb2YgdGhlIGxpdmluZyBHb2QuCkVzYWlhcyBhbHNvIGNyaWV0aCBjb25jZXJuaW5nIElzcmFlbCwgVGhvdWdoIHRoZSBudW1iZXIgb2YgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBiZSBhcyB0aGUgc2FuZCBvZiB0aGUgc2VhLCBhIHJlbW5hbnQgc2hhbGwgYmUgc2F2ZWQ6CkZvciBoZSB3aWxsIGZpbmlzaCB0aGUgd29yaywgYW5kIGN1dCBpdCBzaG9ydCBpbiByaWdodGVvdXNuZXNzOiBiZWNhdXNlIGEgc2hvcnQgd29yayB3aWxsIHRoZSBMb3JkIG1ha2UgdXBvbiB0aGUgZWFydGguCkFuZCBhcyBFc2FpYXMgc2FpZCBiZWZvcmUsIEV4Y2VwdCB0aGUgTG9yZCBvZiBTYWJhb3RoIGhhZCBsZWZ0IHVzIGEgc2VlZCwgd2UgaGFkIGJlZW4gYXMgU29kb21hLCBhbmQgYmVlbiBtYWRlIGxpa2UgdW50byBHb21vcnJoYS4KV2hhdCBzaGFsbCB3ZSBzYXkgdGhlbj8gVGhhdCB0aGUgR2VudGlsZXMsIHdoaWNoIGZvbGxvd2VkIG5vdCBhZnRlciByaWdodGVvdXNuZXNzLCBoYXZlIGF0dGFpbmVkIHRvIHJpZ2h0ZW91c25lc3MsIGV2ZW4gdGhlIHJpZ2h0ZW91c25lc3Mgd2hpY2ggaXMgb2YgZmFpdGguCkJ1dCBJc3JhZWwsIHdoaWNoIGZvbGxvd2VkIGFmdGVyIHRoZSBsYXcgb2YgcmlnaHRlb3VzbmVzcywgaGF0aCBub3QgYXR0YWluZWQgdG8gdGhlIGxhdyBvZiByaWdodGVvdXNuZXNzLgpXaGVyZWZvcmU/IEJlY2F1c2UgdGhleSBzb3VnaHQgaXQgbm90IGJ5IGZhaXRoLCBidXQgYXMgaXQgd2VyZSBieSB0aGUgd29ya3Mgb2YgdGhlIGxhdy4gRm9yIHRoZXkgc3R1bWJsZWQgYXQgdGhhdCBzdHVtYmxpbmdzdG9uZTsKQXMgaXQgaXMgd3JpdHRlbiwgQmVob2xkLCBJIGxheSBpbiBTaW9uIGEgc3R1bWJsaW5nc3RvbmUgYW5kIHJvY2sgb2Ygb2ZmZW5jZTogYW5kIHdob3NvZXZlciBiZWxpZXZldGggb24gaGltIHNoYWxsIG5vdCBiZSBhc2hhbWVkLgpCcmV0aHJlbiwgbXkgaGVhcnQncyBkZXNpcmUgYW5kIHByYXllciB0byBHb2QgZm9yIElzcmFlbCBpcywgdGhhdCB0aGV5IG1pZ2h0IGJlIHNhdmVkLgpGb3IgSSBiZWFyIHRoZW0gcmVjb3JkIHRoYXQgdGhleSBoYXZlIGEgemVhbCBvZiBHb2QsIGJ1dCBub3QgYWNjb3JkaW5nIHRvIGtub3dsZWRnZS4KRm9yIHRoZXkgYmVpbmcgaWdub3JhbnQgb2YgR29kJ3MgcmlnaHRlb3VzbmVzcywgYW5kIGdvaW5nIGFib3V0IHRvIGVzdGFibGlzaCB0aGVpciBvd24gcmlnaHRlb3VzbmVzcywgaGF2ZSBub3Qgc3VibWl0dGVkIHRoZW1zZWx2ZXMgdW50byB0aGUgcmlnaHRlb3VzbmVzcyBvZiBHb2QuCkZvciBDaHJpc3QgaXMgdGhlIGVuZCBvZiB0aGUgbGF3IGZvciByaWdodGVvdXNuZXNzIHRvIGV2ZXJ5IG9uZSB0aGF0IGJlbGlldmV0aC4KRm9yIE1vc2VzIGRlc2NyaWJldGggdGhlIHJpZ2h0ZW91c25lc3Mgd2hpY2ggaXMgb2YgdGhlIGxhdywgVGhhdCB0aGUgbWFuIHdoaWNoIGRvZXRoIHRob3NlIHRoaW5ncyBzaGFsbCBsaXZlIGJ5IHRoZW0uCkJ1dCB0aGUgcmlnaHRlb3VzbmVzcyB3aGljaCBpcyBvZiBmYWl0aCBzcGVha2V0aCBvbiB0aGlzIHdpc2UsIFNheSBub3QgaW4gdGhpbmUgaGVhcnQsIFdobyBzaGFsbCBhc2NlbmQgaW50byBoZWF2ZW4/ICh0aGF0IGlzLCB0byBicmluZyBDaHJpc3QgZG93biBmcm9tIGFib3ZlOikKT3IsIFdobyBzaGFsbCBkZXNjZW5kIGludG8gdGhlIGRlZXA/ICh0aGF0IGlzLCB0byBicmluZyB1cCBDaHJpc3QgYWdhaW4gZnJvbSB0aGUgZGVhZC4pCkJ1dCB3aGF0IHNhaXRoIGl0PyBUaGUgd29yZCBpcyBuaWdoIHRoZWUsIGV2ZW4gaW4gdGh5IG1vdXRoLCBhbmQgaW4gdGh5IGhlYXJ0OiB0aGF0IGlzLCB0aGUgd29yZCBvZiBmYWl0aCwgd2hpY2ggd2UgcHJlYWNoOwpUaGF0IGlmIHRob3Ugc2hhbHQgY29uZmVzcyB3aXRoIHRoeSBtb3V0aCB0aGUgTG9yZCBKZXN1cywgYW5kIHNoYWx0IGJlbGlldmUgaW4gdGhpbmUgaGVhcnQgdGhhdCBHb2QgaGF0aCByYWlzZWQgaGltIGZyb20gdGhlIGRlYWQsIHRob3Ugc2hhbHQgYmUgc2F2ZWQuCkZvciB3aXRoIHRoZSBoZWFydCBtYW4gYmVsaWV2ZXRoIHVudG8gcmlnaHRlb3VzbmVzczsgYW5kIHdpdGggdGhlIG1vdXRoIGNvbmZlc3Npb24gaXMgbWFkZSB1bnRvIHNhbHZhdGlvbi4KRm9yIHRoZSBzY3JpcHR1cmUgc2FpdGgsIFdob3NvZXZlciBiZWxpZXZldGggb24gaGltIHNoYWxsIG5vdCBiZSBhc2hhbWVkLgpGb3IgdGhlcmUgaXMgbm8gZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBKZXcgYW5kIHRoZSBHcmVlazogZm9yIHRoZSBzYW1lIExvcmQgb3ZlciBhbGwgaXMgcmljaCB1bnRvIGFsbCB0aGF0IGNhbGwgdXBvbiBoaW0uCkZvciB3aG9zb2V2ZXIgc2hhbGwgY2FsbCB1cG9uIHRoZSBuYW1lIG9mIHRoZSBMb3JkIHNoYWxsIGJlIHNhdmVkLgpIb3cgdGhlbiBzaGFsbCB0aGV5IGNhbGwgb24gaGltIGluIHdob20gdGhleSBoYXZlIG5vdCBiZWxpZXZlZD8gYW5kIGhvdyBzaGFsbCB0aGV5IGJlbGlldmUgaW4gaGltIG9mIHdob20gdGhleSBoYXZlIG5vdCBoZWFyZD8gYW5kIGhvdyBzaGFsbCB0aGV5IGhlYXIgd2l0aG91dCBhIHByZWFjaGVyPwpBbmQgaG93IHNoYWxsIHRoZXkgcHJlYWNoLCBleGNlcHQgdGhleSBiZSBzZW50PyBhcyBpdCBpcyB3cml0dGVuLCBIb3cgYmVhdXRpZnVsIGFyZSB0aGUgZmVldCBvZiB0aGVtIHRoYXQgcHJlYWNoIHRoZSBnb3NwZWwgb2YgcGVhY2UsIGFuZCBicmluZyBnbGFkIHRpZGluZ3Mgb2YgZ29vZCB0aGluZ3MhCkJ1dCB0aGV5IGhhdmUgbm90IGFsbCBvYmV5ZWQgdGhlIGdvc3BlbC4gRm9yIEVzYWlhcyBzYWl0aCwgTG9yZCwgd2hvIGhhdGggYmVsaWV2ZWQgb3VyIHJlcG9ydD8KU28gdGhlbiBmYWl0aCBjb21ldGggYnkgaGVhcmluZywgYW5kIGhlYXJpbmcgYnkgdGhlIHdvcmQgb2YgR29kLgpCdXQgSSBzYXksIEhhdmUgdGhleSBub3QgaGVhcmQ/IFllcyB2ZXJpbHksIHRoZWlyIHNvdW5kIHdlbnQgaW50byBhbGwgdGhlIGVhcnRoLCBhbmQgdGhlaXIgd29yZHMgdW50byB0aGUgZW5kcyBvZiB0aGUgd29ybGQuCkJ1dCBJIHNheSwgRGlkIG5vdCBJc3JhZWwga25vdz8gRmlyc3QgTW9zZXMgc2FpdGgsIEkgd2lsbCBwcm92b2tlIHlvdSB0byBqZWFsb3VzeSBieSB0aGVtIHRoYXQgYXJlIG5vIHBlb3BsZSwgYW5kIGJ5IGEgZm9vbGlzaCBuYXRpb24gSSB3aWxsIGFuZ2VyIHlvdS4KQnV0IEVzYWlhcyBpcyB2ZXJ5IGJvbGQsIGFuZCBzYWl0aCwgSSB3YXMgZm91bmQgb2YgdGhlbSB0aGF0IHNvdWdodCBtZSBub3Q7IEkgd2FzIG1hZGUgbWFuaWZlc3QgdW50byB0aGVtIHRoYXQgYXNrZWQgbm90IGFmdGVyIG1lLgpCdXQgdG8gSXNyYWVsIGhlIHNhaXRoLCBBbGwgZGF5IGxvbmcgSSBoYXZlIHN0cmV0Y2hlZCBmb3J0aCBteSBoYW5kcyB1bnRvIGEgZGlzb2JlZGllbnQgYW5kIGdhaW5zYXlpbmcgcGVvcGxlLgpJIHNheSB0aGVuLCBIYXRoIEdvZCBjYXN0IGF3YXkgaGlzIHBlb3BsZT8gR29kIGZvcmJpZC4gRm9yIEkgYWxzbyBhbSBhbiBJc3JhZWxpdGUsIG9mIHRoZSBzZWVkIG9mIEFicmFoYW0sIG9mIHRoZSB0cmliZSBvZiBCZW5qYW1pbi4KR29kIGhhdGggbm90IGNhc3QgYXdheSBoaXMgcGVvcGxlIHdoaWNoIGhlIGZvcmVrbmV3LiBXb3QgeWUgbm90IHdoYXQgdGhlIHNjcmlwdHVyZSBzYWl0aCBvZiBFbGlhcz8gaG93IGhlIG1ha2V0aCBpbnRlcmNlc3Npb24gdG8gR29kIGFnYWluc3QgSXNyYWVsIHNheWluZywKTG9yZCwgdGhleSBoYXZlIGtpbGxlZCB0aHkgcHJvcGhldHMsIGFuZCBkaWdnZWQgZG93biB0aGluZSBhbHRhcnM7IGFuZCBJIGFtIGxlZnQgYWxvbmUsIGFuZCB0aGV5IHNlZWsgbXkgbGlmZS4KQnV0IHdoYXQgc2FpdGggdGhlIGFuc3dlciBvZiBHb2QgdW50byBoaW0/IEkgaGF2ZSByZXNlcnZlZCB0byBteXNlbGYgc2V2ZW4gdGhvdXNhbmQgbWVuLCB3aG8gaGF2ZSBub3QgYm93ZWQgdGhlIGtuZWUgdG8gdGhlIGltYWdlIG9mIEJhYWwuCkV2ZW4gc28gdGhlbiBhdCB0aGlzIHByZXNlbnQgdGltZSBhbHNvIHRoZXJlIGlzIGEgcmVtbmFudCBhY2NvcmRpbmcgdG8gdGhlIGVsZWN0aW9uIG9mIGdyYWNlLgpBbmQgaWYgYnkgZ3JhY2UsIHRoZW4gaXMgaXQgbm8gbW9yZSBvZiB3b3Jrczogb3RoZXJ3aXNlIGdyYWNlIGlzIG5vIG1vcmUgZ3JhY2UuIEJ1dCBpZiBpdCBiZSBvZiB3b3JrcywgdGhlbiBpdCBpcyBubyBtb3JlIGdyYWNlOiBvdGhlcndpc2Ugd29yayBpcyBubyBtb3JlIHdvcmsuCldoYXQgdGhlbj8gSXNyYWVsIGhhdGggbm90IG9idGFpbmVkIHRoYXQgd2hpY2ggaGUgc2Vla2V0aCBmb3I7IGJ1dCB0aGUgZWxlY3Rpb24gaGF0aCBvYnRhaW5lZCBpdCwgYW5kIHRoZSByZXN0IHdlcmUgYmxpbmRlZC4KKEFjY29yZGluZyBhcyBpdCBpcyB3cml0dGVuLCBHb2QgaGF0aCBnaXZlbiB0aGVtIHRoZSBzcGlyaXQgb2Ygc2x1bWJlciwgZXllcyB0aGF0IHRoZXkgc2hvdWxkIG5vdCBzZWUsIGFuZCBlYXJzIHRoYXQgdGhleSBzaG91bGQgbm90IGhlYXI7KSB1bnRvIHRoaXMgZGF5LgpBbmQgRGF2aWQgc2FpdGgsIExldCB0aGVpciB0YWJsZSBiZSBtYWRlIGEgc25hcmUsIGFuZCBhIHRyYXAsIGFuZCBhIHN0dW1ibGluZ2Jsb2NrLCBhbmQgYSByZWNvbXBlbmNlIHVudG8gdGhlbToKTGV0IHRoZWlyIGV5ZXMgYmUgZGFya2VuZWQsIHRoYXQgdGhleSBtYXkgbm90IHNlZSwgYW5kIGJvdyBkb3duIHRoZWlyIGJhY2sgYWx3YXkuCkkgc2F5IHRoZW4sIEhhdmUgdGhleSBzdHVtYmxlZCB0aGF0IHRoZXkgc2hvdWxkIGZhbGw/IEdvZCBmb3JiaWQ6IGJ1dCByYXRoZXIgdGhyb3VnaCB0aGVpciBmYWxsIHNhbHZhdGlvbiBpcyBjb21lIHVudG8gdGhlIEdlbnRpbGVzLCBmb3IgdG8gcHJvdm9rZSB0aGVtIHRvIGplYWxvdXN5LgpOb3cgaWYgdGhlIGZhbGwgb2YgdGhlbSBiZSB0aGUgcmljaGVzIG9mIHRoZSB3b3JsZCwgYW5kIHRoZSBkaW1pbmlzaGluZyBvZiB0aGVtIHRoZSByaWNoZXMgb2YgdGhlIEdlbnRpbGVzOyBob3cgbXVjaCBtb3JlIHRoZWlyIGZ1bG5lc3M/CkZvciBJIHNwZWFrIHRvIHlvdSBHZW50aWxlcywgaW5hc211Y2ggYXMgSSBhbSB0aGUgYXBvc3RsZSBvZiB0aGUgR2VudGlsZXMsIEkgbWFnbmlmeSBtaW5lIG9mZmljZToKSWYgYnkgYW55IG1lYW5zIEkgbWF5IHByb3Zva2UgdG8gZW11bGF0aW9uIHRoZW0gd2hpY2ggYXJlIG15IGZsZXNoLCBhbmQgbWlnaHQgc2F2ZSBzb21lIG9mIHRoZW0uCkZvciBpZiB0aGUgY2FzdGluZyBhd2F5IG9mIHRoZW0gYmUgdGhlIHJlY29uY2lsaW5nIG9mIHRoZSB3b3JsZCwgd2hhdCBzaGFsbCB0aGUgcmVjZWl2aW5nIG9mIHRoZW0gYmUsIGJ1dCBsaWZlIGZyb20gdGhlIGRlYWQ/CkZvciBpZiB0aGUgZmlyc3RmcnVpdCBiZSBob2x5LCB0aGUgbHVtcCBpcyBhbHNvIGhvbHk6IGFuZCBpZiB0aGUgcm9vdCBiZSBob2x5LCBzbyBhcmUgdGhlIGJyYW5jaGVzLgpBbmQgaWYgc29tZSBvZiB0aGUgYnJhbmNoZXMgYmUgYnJva2VuIG9mZiwgYW5kIHRob3UsIGJlaW5nIGEgd2lsZCBvbGl2ZSB0cmVlLCB3ZXJ0IGdyYWZmZWQgaW4gYW1vbmcgdGhlbSwgYW5kIHdpdGggdGhlbSBwYXJ0YWtlc3Qgb2YgdGhlIHJvb3QgYW5kIGZhdG5lc3Mgb2YgdGhlIG9saXZlIHRyZWU7CkJvYXN0IG5vdCBhZ2FpbnN0IHRoZSBicmFuY2hlcy4gQnV0IGlmIHRob3UgYm9hc3QsIHRob3UgYmVhcmVzdCBub3QgdGhlIHJvb3QsIGJ1dCB0aGUgcm9vdCB0aGVlLgpUaG91IHdpbHQgc2F5IHRoZW4sIFRoZSBicmFuY2hlcyB3ZXJlIGJyb2tlbiBvZmYsIHRoYXQgSSBtaWdodCBiZSBncmFmZmVkIGluLgpXZWxsOyBiZWNhdXNlIG9mIHVuYmVsaWVmIHRoZXkgd2VyZSBicm9rZW4gb2ZmLCBhbmQgdGhvdSBzdGFuZGVzdCBieSBmYWl0aC4gQmUgbm90IGhpZ2htaW5kZWQsIGJ1dCBmZWFyOgpGb3IgaWYgR29kIHNwYXJlZCBub3QgdGhlIG5hdHVyYWwgYnJhbmNoZXMsIHRha2UgaGVlZCBsZXN0IGhlIGFsc28gc3BhcmUgbm90IHRoZWUuCkJlaG9sZCB0aGVyZWZvcmUgdGhlIGdvb2RuZXNzIGFuZCBzZXZlcml0eSBvZiBHb2Q6IG9uIHRoZW0gd2hpY2ggZmVsbCwgc2V2ZXJpdHk7IGJ1dCB0b3dhcmQgdGhlZSwgZ29vZG5lc3MsIGlmIHRob3UgY29udGludWUgaW4gaGlzIGdvb2RuZXNzOiBvdGhlcndpc2UgdGhvdSBhbHNvIHNoYWx0IGJlIGN1dCBvZmYuCkFuZCB0aGV5IGFsc28sIGlmIHRoZXkgYWJpZGUgbm90IHN0aWxsIGluIHVuYmVsaWVmLCBzaGFsbCBiZSBncmFmZmVkIGluOiBmb3IgR29kIGlzIGFibGUgdG8gZ3JhZmYgdGhlbSBpbiBhZ2Fpbi4KRm9yIGlmIHRob3Ugd2VydCBjdXQgb3V0IG9mIHRoZSBvbGl2ZSB0cmVlIHdoaWNoIGlzIHdpbGQgYnkgbmF0dXJlLCBhbmQgd2VydCBncmFmZmVkIGNvbnRyYXJ5IHRvIG5hdHVyZSBpbnRvIGEgZ29vZCBvbGl2ZSB0cmVlOiBob3cgbXVjaCBtb3JlIHNoYWxsIHRoZXNlLCB3aGljaCBiZSB0aGUgbmF0dXJhbCBicmFuY2hlcywgYmUgZ3JhZmZlZCBpbnRvIHRoZWlyIG93biBvbGl2ZSB0cmVlPwpGb3IgSSB3b3VsZCBub3QsIGJyZXRocmVuLCB0aGF0IHllIHNob3VsZCBiZSBpZ25vcmFudCBvZiB0aGlzIG15c3RlcnksIGxlc3QgeWUgc2hvdWxkIGJlIHdpc2UgaW4geW91ciBvd24gY29uY2VpdHM7IHRoYXQgYmxpbmRuZXNzIGluIHBhcnQgaXMgaGFwcGVuZWQgdG8gSXNyYWVsLCB1bnRpbCB0aGUgZnVsbmVzcyBvZiB0aGUgR2VudGlsZXMgYmUgY29tZSBpbi4KQW5kIHNvIGFsbCBJc3JhZWwgc2hhbGwgYmUgc2F2ZWQ6IGFzIGl0IGlzIHdyaXR0ZW4sIFRoZXJlIHNoYWxsIGNvbWUgb3V0IG9mIFNpb24gdGhlIERlbGl2ZXJlciwgYW5kIHNoYWxsIHR1cm4gYXdheSB1bmdvZGxpbmVzcyBmcm9tIEphY29iOgpGb3IgdGhpcyBpcyBteSBjb3ZlbmFudCB1bnRvIHRoZW0sIHdoZW4gSSBzaGFsbCB0YWtlIGF3YXkgdGhlaXIgc2lucy4KQXMgY29uY2VybmluZyB0aGUgZ29zcGVsLCB0aGV5IGFyZSBlbmVtaWVzIGZvciB5b3VyIHNha2VzOiBidXQgYXMgdG91Y2hpbmcgdGhlIGVsZWN0aW9uLCB0aGV5IGFyZSBiZWxvdmVkIGZvciB0aGUgZmF0aGVyJ3Mgc2FrZXMuCkZvciB0aGUgZ2lmdHMgYW5kIGNhbGxpbmcgb2YgR29kIGFyZSB3aXRob3V0IHJlcGVudGFuY2UuCkZvciBhcyB5ZSBpbiB0aW1lcyBwYXN0IGhhdmUgbm90IGJlbGlldmVkIEdvZCwgeWV0IGhhdmUgbm93IG9idGFpbmVkIG1lcmN5IHRocm91Z2ggdGhlaXIgdW5iZWxpZWY6CkV2ZW4gc28gaGF2ZSB0aGVzZSBhbHNvIG5vdyBub3QgYmVsaWV2ZWQsIHRoYXQgdGhyb3VnaCB5b3VyIG1lcmN5IHRoZXkgYWxzbyBtYXkgb2J0YWluIG1lcmN5LgpGb3IgR29kIGhhdGggY29uY2x1ZGVkIHRoZW0gYWxsIGluIHVuYmVsaWVmLCB0aGF0IGhlIG1pZ2h0IGhhdmUgbWVyY3kgdXBvbiBhbGwuCk8gdGhlIGRlcHRoIG9mIHRoZSByaWNoZXMgYm90aCBvZiB0aGUgd2lzZG9tIGFuZCBrbm93bGVkZ2Ugb2YgR29kISBob3cgdW5zZWFyY2hhYmxlIGFyZSBoaXMganVkZ21lbnRzLCBhbmQgaGlzIHdheXMgcGFzdCBmaW5kaW5nIG91dCEKRm9yIHdobyBoYXRoIGtub3duIHRoZSBtaW5kIG9mIHRoZSBMb3JkPyBvciB3aG8gaGF0aCBiZWVuIGhpcyBjb3Vuc2VsbG9yPwpPciB3aG8gaGF0aCBmaXJzdCBnaXZlbiB0byBoaW0sIGFuZCBpdCBzaGFsbCBiZSByZWNvbXBlbnNlZCB1bnRvIGhpbSBhZ2Fpbj8KRm9yIG9mIGhpbSwgYW5kIHRocm91Z2ggaGltLCBhbmQgdG8gaGltLCBhcmUgYWxsIHRoaW5nczogdG8gd2hvbSBiZSBnbG9yeSBmb3IgZXZlci4gQW1lbi4KSSBiZXNlZWNoIHlvdSB0aGVyZWZvcmUsIGJyZXRocmVuLCBieSB0aGUgbWVyY2llcyBvZiBHb2QsIHRoYXQgeWUgcHJlc2VudCB5b3VyIGJvZGllcyBhIGxpdmluZyBzYWNyaWZpY2UsIGhvbHksIGFjY2VwdGFibGUgdW50byBHb2QsIHdoaWNoIGlzIHlvdXIgcmVhc29uYWJsZSBzZXJ2aWNlLgpBbmQgYmUgbm90IGNvbmZvcm1lZCB0byB0aGlzIHdvcmxkOiBidXQgYmUgeWUgdHJhbnNmb3JtZWQgYnkgdGhlIHJlbmV3aW5nIG9mIHlvdXIgbWluZCwgdGhhdCB5ZSBtYXkgcHJvdmUgd2hhdCBpcyB0aGF0IGdvb2QsIGFuZCBhY2NlcHRhYmxlLCBhbmQgcGVyZmVjdCwgd2lsbCBvZiBHb2QuCkZvciBJIHNheSwgdGhyb3VnaCB0aGUgZ3JhY2UgZ2l2ZW4gdW50byBtZSwgdG8gZXZlcnkgbWFuIHRoYXQgaXMgYW1vbmcgeW91LCBub3QgdG8gdGhpbmsgb2YgaGltc2VsZiBtb3JlIGhpZ2hseSB0aGFuIGhlIG91Z2h0IHRvIHRoaW5rOyBidXQgdG8gdGhpbmsgc29iZXJseSwgYWNjb3JkaW5nIGFzIEdvZCBoYXRoIGRlYWx0IHRvIGV2ZXJ5IG1hbiB0aGUgbWVhc3VyZSBvZiBmYWl0aC4KRm9yIGFzIHdlIGhhdmUgbWFueSBtZW1iZXJzIGluIG9uZSBib2R5LCBhbmQgYWxsIG1lbWJlcnMgaGF2ZSBub3QgdGhlIHNhbWUgb2ZmaWNlOgpTbyB3ZSwgYmVpbmcgbWFueSwgYXJlIG9uZSBib2R5IGluIENocmlzdCwgYW5kIGV2ZXJ5IG9uZSBtZW1iZXJzIG9uZSBvZiBhbm90aGVyLgpIYXZpbmcgdGhlbiBnaWZ0cyBkaWZmZXJpbmcgYWNjb3JkaW5nIHRvIHRoZSBncmFjZSB0aGF0IGlzIGdpdmVuIHRvIHVzLCB3aGV0aGVyIHByb3BoZWN5LCBsZXQgdXMgcHJvcGhlc3kgYWNjb3JkaW5nIHRvIHRoZSBwcm9wb3J0aW9uIG9mIGZhaXRoOwpPciBtaW5pc3RyeSwgbGV0IHVzIHdhaXQgb24gb3VyIG1pbmlzdGVyaW5nOiBvciBoZSB0aGF0IHRlYWNoZXRoLCBvbiB0ZWFjaGluZzsKT3IgaGUgdGhhdCBleGhvcnRldGgsIG9uIGV4aG9ydGF0aW9uOiBoZSB0aGF0IGdpdmV0aCwgbGV0IGhpbSBkbyBpdCB3aXRoIHNpbXBsaWNpdHk7IGhlIHRoYXQgcnVsZXRoLCB3aXRoIGRpbGlnZW5jZTsgaGUgdGhhdCBzaGV3ZXRoIG1lcmN5LCB3aXRoIGNoZWVyZnVsbmVzcy4KTGV0IGxvdmUgYmUgd2l0aG91dCBkaXNzaW11bGF0aW9uLiBBYmhvciB0aGF0IHdoaWNoIGlzIGV2aWw7IGNsZWF2ZSB0byB0aGF0IHdoaWNoIGlzIGdvb2QuCkJlIGtpbmRseSBhZmZlY3Rpb25lZCBvbmUgdG8gYW5vdGhlciB3aXRoIGJyb3RoZXJseSBsb3ZlOyBpbiBob25vdXIgcHJlZmVycmluZyBvbmUgYW5vdGhlcjsKTm90IHNsb3RoZnVsIGluIGJ1c2luZXNzOyBmZXJ2ZW50IGluIHNwaXJpdDsgc2VydmluZyB0aGUgTG9yZDsKUmVqb2ljaW5nIGluIGhvcGU7IHBhdGllbnQgaW4gdHJpYnVsYXRpb247IGNvbnRpbnVpbmcgaW5zdGFudCBpbiBwcmF5ZXI7CkRpc3RyaWJ1dGluZyB0byB0aGUgbmVjZXNzaXR5IG9mIHNhaW50czsgZ2l2ZW4gdG8gaG9zcGl0YWxpdHkuCkJsZXNzIHRoZW0gd2hpY2ggcGVyc2VjdXRlIHlvdTogYmxlc3MsIGFuZCBjdXJzZSBub3QuClJlam9pY2Ugd2l0aCB0aGVtIHRoYXQgZG8gcmVqb2ljZSwgYW5kIHdlZXAgd2l0aCB0aGVtIHRoYXQgd2VlcC4KQmUgb2YgdGhlIHNhbWUgbWluZCBvbmUgdG93YXJkIGFub3RoZXIuIE1pbmQgbm90IGhpZ2ggdGhpbmdzLCBidXQgY29uZGVzY2VuZCB0byBtZW4gb2YgbG93IGVzdGF0ZS4gQmUgbm90IHdpc2UgaW4geW91ciBvd24gY29uY2VpdHMuClJlY29tcGVuc2UgdG8gbm8gbWFuIGV2aWwgZm9yIGV2aWwuIFByb3ZpZGUgdGhpbmdzIGhvbmVzdCBpbiB0aGUgc2lnaHQgb2YgYWxsIG1lbi4KSWYgaXQgYmUgcG9zc2libGUsIGFzIG11Y2ggYXMgbGlldGggaW4geW91LCBsaXZlIHBlYWNlYWJseSB3aXRoIGFsbCBtZW4uCkRlYXJseSBiZWxvdmVkLCBhdmVuZ2Ugbm90IHlvdXJzZWx2ZXMsIGJ1dCByYXRoZXIgZ2l2ZSBwbGFjZSB1bnRvIHdyYXRoOiBmb3IgaXQgaXMgd3JpdHRlbiwgVmVuZ2VhbmNlIGlzIG1pbmU7IEkgd2lsbCByZXBheSwgc2FpdGggdGhlIExvcmQuClRoZXJlZm9yZSBpZiB0aGluZSBlbmVteSBodW5nZXIsIGZlZWQgaGltOyBpZiBoZSB0aGlyc3QsIGdpdmUgaGltIGRyaW5rOiBmb3IgaW4gc28gZG9pbmcgdGhvdSBzaGFsdCBoZWFwIGNvYWxzIG9mIGZpcmUgb24gaGlzIGhlYWQuCkJlIG5vdCBvdmVyY29tZSBvZiBldmlsLCBidXQgb3ZlcmNvbWUgZXZpbCB3aXRoIGdvb2QuCkxldCBldmVyeSBzb3VsIGJlIHN1YmplY3QgdW50byB0aGUgaGlnaGVyIHBvd2Vycy4gRm9yIHRoZXJlIGlzIG5vIHBvd2VyIGJ1dCBvZiBHb2Q6IHRoZSBwb3dlcnMgdGhhdCBiZSBhcmUgb3JkYWluZWQgb2YgR29kLgpXaG9zb2V2ZXIgdGhlcmVmb3JlIHJlc2lzdGV0aCB0aGUgcG93ZXIsIHJlc2lzdGV0aCB0aGUgb3JkaW5hbmNlIG9mIEdvZDogYW5kIHRoZXkgdGhhdCByZXNpc3Qgc2hhbGwgcmVjZWl2ZSB0byB0aGVtc2VsdmVzIGRhbW5hdGlvbi4KRm9yIHJ1bGVycyBhcmUgbm90IGEgdGVycm9yIHRvIGdvb2Qgd29ya3MsIGJ1dCB0byB0aGUgZXZpbC4gV2lsdCB0aG91IHRoZW4gbm90IGJlIGFmcmFpZCBvZiB0aGUgcG93ZXI/IGRvIHRoYXQgd2hpY2ggaXMgZ29vZCwgYW5kIHRob3Ugc2hhbHQgaGF2ZSBwcmFpc2Ugb2YgdGhlIHNhbWU6CkZvciBoZSBpcyB0aGUgbWluaXN0ZXIgb2YgR29kIHRvIHRoZWUgZm9yIGdvb2QuIEJ1dCBpZiB0aG91IGRvIHRoYXQgd2hpY2ggaXMgZXZpbCwgYmUgYWZyYWlkOyBmb3IgaGUgYmVhcmV0aCBub3QgdGhlIHN3b3JkIGluIHZhaW46IGZvciBoZSBpcyB0aGUgbWluaXN0ZXIgb2YgR29kLCBhIHJldmVuZ2VyIHRvIGV4ZWN1dGUgd3JhdGggdXBvbiBoaW0gdGhhdCBkb2V0aCBldmlsLgpXaGVyZWZvcmUgeWUgbXVzdCBuZWVkcyBiZSBzdWJqZWN0LCBub3Qgb25seSBmb3Igd3JhdGgsIGJ1dCBhbHNvIGZvciBjb25zY2llbmNlIHNha2UuCkZvciBmb3IgdGhpcyBjYXVzZSBwYXkgeWUgdHJpYnV0ZSBhbHNvOiBmb3IgdGhleSBhcmUgR29kJ3MgbWluaXN0ZXJzLCBhdHRlbmRpbmcgY29udGludWFsbHkgdXBvbiB0aGlzIHZlcnkgdGhpbmcuClJlbmRlciB0aGVyZWZvcmUgdG8gYWxsIHRoZWlyIGR1ZXM6IHRyaWJ1dGUgdG8gd2hvbSB0cmlidXRlIGlzIGR1ZTsgY3VzdG9tIHRvIHdob20gY3VzdG9tOyBmZWFyIHRvIHdob20gZmVhcjsgaG9ub3VyIHRvIHdob20gaG9ub3VyLgpPd2Ugbm8gbWFuIGFueSB0aGluZywgYnV0IHRvIGxvdmUgb25lIGFub3RoZXI6IGZvciBoZSB0aGF0IGxvdmV0aCBhbm90aGVyIGhhdGggZnVsZmlsbGVkIHRoZSBsYXcuCkZvciB0aGlzLCBUaG91IHNoYWx0IG5vdCBjb21taXQgYWR1bHRlcnksIFRob3Ugc2hhbHQgbm90IGtpbGwsIFRob3Ugc2hhbHQgbm90IHN0ZWFsLCBUaG91IHNoYWx0IG5vdCBiZWFyIGZhbHNlIHdpdG5lc3MsIFRob3Ugc2hhbHQgbm90IGNvdmV0OyBhbmQgaWYgdGhlcmUgYmUgYW55IG90aGVyIGNvbW1hbmRtZW50LCBpdCBpcyBicmllZmx5IGNvbXByZWhlbmRlZCBpbiB0aGlzIHNheWluZywgbmFtZWx5LCBUaG91IHNoYWx0IGxvdmUgdGh5IG5laWdoYm91ciBhcyB0aHlzZWxmLgpMb3ZlIHdvcmtldGggbm8gaWxsIHRvIGhpcyBuZWlnaGJvdXI6IHRoZXJlZm9yZSBsb3ZlIGlzIHRoZSBmdWxmaWxsaW5nIG9mIHRoZSBsYXcuCkFuZCB0aGF0LCBrbm93aW5nIHRoZSB0aW1lLCB0aGF0IG5vdyBpdCBpcyBoaWdoIHRpbWUgdG8gYXdha2Ugb3V0IG9mIHNsZWVwOiBmb3Igbm93IGlzIG91ciBzYWx2YXRpb24gbmVhcmVyIHRoYW4gd2hlbiB3ZSBiZWxpZXZlZC4KVGhlIG5pZ2h0IGlzIGZhciBzcGVudCwgdGhlIGRheSBpcyBhdCBoYW5kOiBsZXQgdXMgdGhlcmVmb3JlIGNhc3Qgb2ZmIHRoZSB3b3JrcyBvZiBkYXJrbmVzcywgYW5kIGxldCB1cyBwdXQgb24gdGhlIGFybW91ciBvZiBsaWdodC4KTGV0IHVzIHdhbGsgaG9uZXN0bHksIGFzIGluIHRoZSBkYXk7IG5vdCBpbiByaW90aW5nIGFuZCBkcnVua2VubmVzcywgbm90IGluIGNoYW1iZXJpbmcgYW5kIHdhbnRvbm5lc3MsIG5vdCBpbiBzdHJpZmUgYW5kIGVudnlpbmcuCkJ1dCBwdXQgeWUgb24gdGhlIExvcmQgSmVzdXMgQ2hyaXN0LCBhbmQgbWFrZSBub3QgcHJvdmlzaW9uIGZvciB0aGUgZmxlc2gsIHRvIGZ1bGZpbCB0aGUgbHVzdHMgdGhlcmVvZi4KSGltIHRoYXQgaXMgd2VhayBpbiB0aGUgZmFpdGggcmVjZWl2ZSB5ZSwgYnV0IG5vdCB0byBkb3VidGZ1bCBkaXNwdXRhdGlvbnMuCkZvciBvbmUgYmVsaWV2ZXRoIHRoYXQgaGUgbWF5IGVhdCBhbGwgdGhpbmdzOiBhbm90aGVyLCB3aG8gaXMgd2VhaywgZWF0ZXRoIGhlcmJzLgpMZXQgbm90IGhpbSB0aGF0IGVhdGV0aCBkZXNwaXNlIGhpbSB0aGF0IGVhdGV0aCBub3Q7IGFuZCBsZXQgbm90IGhpbSB3aGljaCBlYXRldGggbm90IGp1ZGdlIGhpbSB0aGF0IGVhdGV0aDogZm9yIEdvZCBoYXRoIHJlY2VpdmVkIGhpbS4KV2hvIGFydCB0aG91IHRoYXQganVkZ2VzdCBhbm90aGVyIG1hbidzIHNlcnZhbnQ/IHRvIGhpcyBvd24gbWFzdGVyIGhlIHN0YW5kZXRoIG9yIGZhbGxldGguIFllYSwgaGUgc2hhbGwgYmUgaG9sZGVuIHVwOiBmb3IgR29kIGlzIGFibGUgdG8gbWFrZSBoaW0gc3RhbmQuCk9uZSBtYW4gZXN0ZWVtZXRoIG9uZSBkYXkgYWJvdmUgYW5vdGhlcjogYW5vdGhlciBlc3RlZW1ldGggZXZlcnkgZGF5IGFsaWtlLiBMZXQgZXZlcnkgbWFuIGJlIGZ1bGx5IHBlcnN1YWRlZCBpbiBoaXMgb3duIG1pbmQuCkhlIHRoYXQgcmVnYXJkZXRoIHRoZSBkYXksIHJlZ2FyZGV0aCBpdCB1bnRvIHRoZSBMb3JkOyBhbmQgaGUgdGhhdCByZWdhcmRldGggbm90IHRoZSBkYXksIHRvIHRoZSBMb3JkIGhlIGRvdGggbm90IHJlZ2FyZCBpdC4gSGUgdGhhdCBlYXRldGgsIGVhdGV0aCB0byB0aGUgTG9yZCwgZm9yIGhlIGdpdmV0aCBHb2QgdGhhbmtzOyBhbmQgaGUgdGhhdCBlYXRldGggbm90LCB0byB0aGUgTG9yZCBoZSBlYXRldGggbm90LCBhbmQgZ2l2ZXRoIEdvZCB0aGFua3MuCkZvciBub25lIG9mIHVzIGxpdmV0aCB0byBoaW1zZWxmLCBhbmQgbm8gbWFuIGRpZXRoIHRvIGhpbXNlbGYuCkZvciB3aGV0aGVyIHdlIGxpdmUsIHdlIGxpdmUgdW50byB0aGUgTG9yZDsgYW5kIHdoZXRoZXIgd2UgZGllLCB3ZSBkaWUgdW50byB0aGUgTG9yZDogd2hldGhlciB3ZSBsaXZlIHRoZXJlZm9yZSwgb3IgZGllLCB3ZSBhcmUgdGhlIExvcmQncy4KRm9yIHRvIHRoaXMgZW5kIENocmlzdCBib3RoIGRpZWQsIGFuZCByb3NlLCBhbmQgcmV2aXZlZCwgdGhhdCBoZSBtaWdodCBiZSBMb3JkIGJvdGggb2YgdGhlIGRlYWQgYW5kIGxpdmluZy4KQnV0IHdoeSBkb3N0IHRob3UganVkZ2UgdGh5IGJyb3RoZXI/IG9yIHdoeSBkb3N0IHRob3Ugc2V0IGF0IG5vdWdodCB0aHkgYnJvdGhlcj8gZm9yIHdlIHNoYWxsIGFsbCBzdGFuZCBiZWZvcmUgdGhlIGp1ZGdtZW50IHNlYXQgb2YgQ2hyaXN0LgpGb3IgaXQgaXMgd3JpdHRlbiwgQXMgSSBsaXZlLCBzYWl0aCB0aGUgTG9yZCwgZXZlcnkga25lZSBzaGFsbCBib3cgdG8gbWUsIGFuZCBldmVyeSB0b25ndWUgc2hhbGwgY29uZmVzcyB0byBHb2QuClNvIHRoZW4gZXZlcnkgb25lIG9mIHVzIHNoYWxsIGdpdmUgYWNjb3VudCBvZiBoaW1zZWxmIHRvIEdvZC4KTGV0IHVzIG5vdCB0aGVyZWZvcmUganVkZ2Ugb25lIGFub3RoZXIgYW55IG1vcmU6IGJ1dCBqdWRnZSB0aGlzIHJhdGhlciwgdGhhdCBubyBtYW4gcHV0IGEgc3R1bWJsaW5nYmxvY2sgb3IgYW4gb2NjYXNpb24gdG8gZmFsbCBpbiBoaXMgYnJvdGhlcidzIHdheS4KSSBrbm93LCBhbmQgYW0gcGVyc3VhZGVkIGJ5IHRoZSBMb3JkIEplc3VzLCB0aGF0IHRoZXJlIGlzIG5vdGhpbmcgdW5jbGVhbiBvZiBpdHNlbGY6IGJ1dCB0byBoaW0gdGhhdCBlc3RlZW1ldGggYW55IHRoaW5nIHRvIGJlIHVuY2xlYW4sIHRvIGhpbSBpdCBpcyB1bmNsZWFuLgpCdXQgaWYgdGh5IGJyb3RoZXIgYmUgZ3JpZXZlZCB3aXRoIHRoeSBtZWF0LCBub3cgd2Fsa2VzdCB0aG91IG5vdCBjaGFyaXRhYmx5LiBEZXN0cm95IG5vdCBoaW0gd2l0aCB0aHkgbWVhdCwgZm9yIHdob20gQ2hyaXN0IGRpZWQuCkxldCBub3QgdGhlbiB5b3VyIGdvb2QgYmUgZXZpbCBzcG9rZW4gb2Y6CkZvciB0aGUga2luZ2RvbSBvZiBHb2QgaXMgbm90IG1lYXQgYW5kIGRyaW5rOyBidXQgcmlnaHRlb3VzbmVzcywgYW5kIHBlYWNlLCBhbmQgam95IGluIHRoZSBIb2x5IEdob3N0LgpGb3IgaGUgdGhhdCBpbiB0aGVzZSB0aGluZ3Mgc2VydmV0aCBDaHJpc3QgaXMgYWNjZXB0YWJsZSB0byBHb2QsIGFuZCBhcHByb3ZlZCBvZiBtZW4uCkxldCB1cyB0aGVyZWZvcmUgZm9sbG93IGFmdGVyIHRoZSB0aGluZ3Mgd2hpY2ggbWFrZSBmb3IgcGVhY2UsIGFuZCB0aGluZ3Mgd2hlcmV3aXRoIG9uZSBtYXkgZWRpZnkgYW5vdGhlci4KRm9yIG1lYXQgZGVzdHJveSBub3QgdGhlIHdvcmsgb2YgR29kLiBBbGwgdGhpbmdzIGluZGVlZCBhcmUgcHVyZTsgYnV0IGl0IGlzIGV2aWwgZm9yIHRoYXQgbWFuIHdobyBlYXRldGggd2l0aCBvZmZlbmNlLgpJdCBpcyBnb29kIG5laXRoZXIgdG8gZWF0IGZsZXNoLCBub3IgdG8gZHJpbmsgd2luZSwgbm9yIGFueSB0aGluZyB3aGVyZWJ5IHRoeSBicm90aGVyIHN0dW1ibGV0aCwgb3IgaXMgb2ZmZW5kZWQsIG9yIGlzIG1hZGUgd2Vhay4KSGFzdCB0aG91IGZhaXRoPyBoYXZlIGl0IHRvIHRoeXNlbGYgYmVmb3JlIEdvZC4gSGFwcHkgaXMgaGUgdGhhdCBjb25kZW1uZXRoIG5vdCBoaW1zZWxmIGluIHRoYXQgdGhpbmcgd2hpY2ggaGUgYWxsb3dldGguCkFuZCBoZSB0aGF0IGRvdWJ0ZXRoIGlzIGRhbW5lZCBpZiBoZSBlYXQsIGJlY2F1c2UgaGUgZWF0ZXRoIG5vdCBvZiBmYWl0aDogZm9yIHdoYXRzb2V2ZXIgaXMgbm90IG9mIGZhaXRoIGlzIHNpbi4KV2UgdGhlbiB0aGF0IGFyZSBzdHJvbmcgb3VnaHQgdG8gYmVhciB0aGUgaW5maXJtaXRpZXMgb2YgdGhlIHdlYWssIGFuZCBub3QgdG8gcGxlYXNlIG91cnNlbHZlcy4KTGV0IGV2ZXJ5IG9uZSBvZiB1cyBwbGVhc2UgaGlzIG5laWdoYm91ciBmb3IgaGlzIGdvb2QgdG8gZWRpZmljYXRpb24uCkZvciBldmVuIENocmlzdCBwbGVhc2VkIG5vdCBoaW1zZWxmOyBidXQsIGFzIGl0IGlzIHdyaXR0ZW4sIFRoZSByZXByb2FjaGVzIG9mIHRoZW0gdGhhdCByZXByb2FjaGVkIHRoZWUgZmVsbCBvbiBtZS4KRm9yIHdoYXRzb2V2ZXIgdGhpbmdzIHdlcmUgd3JpdHRlbiBhZm9yZXRpbWUgd2VyZSB3cml0dGVuIGZvciBvdXIgbGVhcm5pbmcsIHRoYXQgd2UgdGhyb3VnaCBwYXRpZW5jZSBhbmQgY29tZm9ydCBvZiB0aGUgc2NyaXB0dXJlcyBtaWdodCBoYXZlIGhvcGUuCk5vdyB0aGUgR29kIG9mIHBhdGllbmNlIGFuZCBjb25zb2xhdGlvbiBncmFudCB5b3UgdG8gYmUgbGlrZW1pbmRlZCBvbmUgdG93YXJkIGFub3RoZXIgYWNjb3JkaW5nIHRvIENocmlzdCBKZXN1czoKVGhhdCB5ZSBtYXkgd2l0aCBvbmUgbWluZCBhbmQgb25lIG1vdXRoIGdsb3JpZnkgR29kLCBldmVuIHRoZSBGYXRoZXIgb2Ygb3VyIExvcmQgSmVzdXMgQ2hyaXN0LgpXaGVyZWZvcmUgcmVjZWl2ZSB5ZSBvbmUgYW5vdGhlciwgYXMgQ2hyaXN0IGFsc28gcmVjZWl2ZWQgdXMgdG8gdGhlIGdsb3J5IG9mIEdvZC4KTm93IEkgc2F5IHRoYXQgSmVzdXMgQ2hyaXN0IHdhcyBhIG1pbmlzdGVyIG9mIHRoZSBjaXJjdW1jaXNpb24gZm9yIHRoZSB0cnV0aCBvZiBHb2QsIHRvIGNvbmZpcm0gdGhlIHByb21pc2VzIG1hZGUgdW50byB0aGUgZmF0aGVyczoKQW5kIHRoYXQgdGhlIEdlbnRpbGVzIG1pZ2h0IGdsb3JpZnkgR29kIGZvciBoaXMgbWVyY3k7IGFzIGl0IGlzIHdyaXR0ZW4sIEZvciB0aGlzIGNhdXNlIEkgd2lsbCBjb25mZXNzIHRvIHRoZWUgYW1vbmcgdGhlIEdlbnRpbGVzLCBhbmQgc2luZyB1bnRvIHRoeSBuYW1lLgpBbmQgYWdhaW4gaGUgc2FpdGgsIFJlam9pY2UsIHllIEdlbnRpbGVzLCB3aXRoIGhpcyBwZW9wbGUuCkFuZCBhZ2FpbiwgUHJhaXNlIHRoZSBMb3JkLCBhbGwgeWUgR2VudGlsZXM7IGFuZCBsYXVkIGhpbSwgYWxsIHllIHBlb3BsZS4KQW5kIGFnYWluLCBFc2FpYXMgc2FpdGgsIFRoZXJlIHNoYWxsIGJlIGEgcm9vdCBvZiBKZXNzZSwgYW5kIGhlIHRoYXQgc2hhbGwgcmlzZSB0byByZWlnbiBvdmVyIHRoZSBHZW50aWxlczsgaW4gaGltIHNoYWxsIHRoZSBHZW50aWxlcyB0cnVzdC4KTm93IHRoZSBHb2Qgb2YgaG9wZSBmaWxsIHlvdSB3aXRoIGFsbCBqb3kgYW5kIHBlYWNlIGluIGJlbGlldmluZywgdGhhdCB5ZSBtYXkgYWJvdW5kIGluIGhvcGUsIHRocm91Z2ggdGhlIHBvd2VyIG9mIHRoZSBIb2x5IEdob3N0LgpBbmQgSSBteXNlbGYgYWxzbyBhbSBwZXJzdWFkZWQgb2YgeW91LCBteSBicmV0aHJlbiwgdGhhdCB5ZSBhbHNvIGFyZSBmdWxsIG9mIGdvb2RuZXNzLCBmaWxsZWQgd2l0aCBhbGwga25vd2xlZGdlLCBhYmxlIGFsc28gdG8gYWRtb25pc2ggb25lIGFub3RoZXIuCk5ldmVydGhlbGVzcywgYnJldGhyZW4sIEkgaGF2ZSB3cml0dGVuIHRoZSBtb3JlIGJvbGRseSB1bnRvIHlvdSBpbiBzb21lIHNvcnQsIGFzIHB1dHRpbmcgeW91IGluIG1pbmQsIGJlY2F1c2Ugb2YgdGhlIGdyYWNlIHRoYXQgaXMgZ2l2ZW4gdG8gbWUgb2YgR29kLApUaGF0IEkgc2hvdWxkIGJlIHRoZSBtaW5pc3RlciBvZiBKZXN1cyBDaHJpc3QgdG8gdGhlIEdlbnRpbGVzLCBtaW5pc3RlcmluZyB0aGUgZ29zcGVsIG9mIEdvZCwgdGhhdCB0aGUgb2ZmZXJpbmcgdXAgb2YgdGhlIEdlbnRpbGVzIG1pZ2h0IGJlIGFjY2VwdGFibGUsIGJlaW5nIHNhbmN0aWZpZWQgYnkgdGhlIEhvbHkgR2hvc3QuCkkgaGF2ZSB0aGVyZWZvcmUgd2hlcmVvZiBJIG1heSBnbG9yeSB0aHJvdWdoIEplc3VzIENocmlzdCBpbiB0aG9zZSB0aGluZ3Mgd2hpY2ggcGVydGFpbiB0byBHb2QuCkZvciBJIHdpbGwgbm90IGRhcmUgdG8gc3BlYWsgb2YgYW55IG9mIHRob3NlIHRoaW5ncyB3aGljaCBDaHJpc3QgaGF0aCBub3Qgd3JvdWdodCBieSBtZSwgdG8gbWFrZSB0aGUgR2VudGlsZXMgb2JlZGllbnQsIGJ5IHdvcmQgYW5kIGRlZWQsClRocm91Z2ggbWlnaHR5IHNpZ25zIGFuZCB3b25kZXJzLCBieSB0aGUgcG93ZXIgb2YgdGhlIFNwaXJpdCBvZiBHb2Q7IHNvIHRoYXQgZnJvbSBKZXJ1c2FsZW0sIGFuZCByb3VuZCBhYm91dCB1bnRvIElsbHlyaWN1bSwgSSBoYXZlIGZ1bGx5IHByZWFjaGVkIHRoZSBnb3NwZWwgb2YgQ2hyaXN0LgpZZWEsIHNvIGhhdmUgSSBzdHJpdmVkIHRvIHByZWFjaCB0aGUgZ29zcGVsLCBub3Qgd2hlcmUgQ2hyaXN0IHdhcyBuYW1lZCwgbGVzdCBJIHNob3VsZCBidWlsZCB1cG9uIGFub3RoZXIgbWFuJ3MgZm91bmRhdGlvbjoKQnV0IGFzIGl0IGlzIHdyaXR0ZW4sIFRvIHdob20gaGUgd2FzIG5vdCBzcG9rZW4gb2YsIHRoZXkgc2hhbGwgc2VlOiBhbmQgdGhleSB0aGF0IGhhdmUgbm90IGhlYXJkIHNoYWxsIHVuZGVyc3RhbmQuCkZvciB3aGljaCBjYXVzZSBhbHNvIEkgaGF2ZSBiZWVuIG11Y2ggaGluZGVyZWQgZnJvbSBjb21pbmcgdG8geW91LgpCdXQgbm93IGhhdmluZyBubyBtb3JlIHBsYWNlIGluIHRoZXNlIHBhcnRzLCBhbmQgaGF2aW5nIGEgZ3JlYXQgZGVzaXJlIHRoZXNlIG1hbnkgeWVhcnMgdG8gY29tZSB1bnRvIHlvdTsKV2hlbnNvZXZlciBJIHRha2UgbXkgam91cm5leSBpbnRvIFNwYWluLCBJIHdpbGwgY29tZSB0byB5b3U6IGZvciBJIHRydXN0IHRvIHNlZSB5b3UgaW4gbXkgam91cm5leSwgYW5kIHRvIGJlIGJyb3VnaHQgb24gbXkgd2F5IHRoaXRoZXJ3YXJkIGJ5IHlvdSwgaWYgZmlyc3QgSSBiZSBzb21ld2hhdCBmaWxsZWQgd2l0aCB5b3VyIGNvbXBhbnkuCkJ1dCBub3cgSSBnbyB1bnRvIEplcnVzYWxlbSB0byBtaW5pc3RlciB1bnRvIHRoZSBzYWludHMuCkZvciBpdCBoYXRoIHBsZWFzZWQgdGhlbSBvZiBNYWNlZG9uaWEgYW5kIEFjaGFpYSB0byBtYWtlIGEgY2VydGFpbiBjb250cmlidXRpb24gZm9yIHRoZSBwb29yIHNhaW50cyB3aGljaCBhcmUgYXQgSmVydXNhbGVtLgpJdCBoYXRoIHBsZWFzZWQgdGhlbSB2ZXJpbHk7IGFuZCB0aGVpciBkZWJ0b3JzIHRoZXkgYXJlLiBGb3IgaWYgdGhlIEdlbnRpbGVzIGhhdmUgYmVlbiBtYWRlIHBhcnRha2VycyBvZiB0aGVpciBzcGlyaXR1YWwgdGhpbmdzLCB0aGVpciBkdXR5IGlzIGFsc28gdG8gbWluaXN0ZXIgdW50byB0aGVtIGluIGNhcm5hbCB0aGluZ3MuCldoZW4gdGhlcmVmb3JlIEkgaGF2ZSBwZXJmb3JtZWQgdGhpcywgYW5kIGhhdmUgc2VhbGVkIHRvIHRoZW0gdGhpcyBmcnVpdCwgSSB3aWxsIGNvbWUgYnkgeW91IGludG8gU3BhaW4uCkFuZCBJIGFtIHN1cmUgdGhhdCwgd2hlbiBJIGNvbWUgdW50byB5b3UsIEkgc2hhbGwgY29tZSBpbiB0aGUgZnVsbmVzcyBvZiB0aGUgYmxlc3Npbmcgb2YgdGhlIGdvc3BlbCBvZiBDaHJpc3QuCk5vdyBJIGJlc2VlY2ggeW91LCBicmV0aHJlbiwgZm9yIHRoZSBMb3JkIEplc3VzIENocmlzdCdzIHNha2UsIGFuZCBmb3IgdGhlIGxvdmUgb2YgdGhlIFNwaXJpdCwgdGhhdCB5ZSBzdHJpdmUgdG9nZXRoZXIgd2l0aCBtZSBpbiB5b3VyIHByYXllcnMgdG8gR29kIGZvciBtZTsKVGhhdCBJIG1heSBiZSBkZWxpdmVyZWQgZnJvbSB0aGVtIHRoYXQgZG8gbm90IGJlbGlldmUgaW4gSnVkYWVhOyBhbmQgdGhhdCBteSBzZXJ2aWNlIHdoaWNoIEkgaGF2ZSBmb3IgSmVydXNhbGVtIG1heSBiZSBhY2NlcHRlZCBvZiB0aGUgc2FpbnRzOwpUaGF0IEkgbWF5IGNvbWUgdW50byB5b3Ugd2l0aCBqb3kgYnkgdGhlIHdpbGwgb2YgR29kLCBhbmQgbWF5IHdpdGggeW91IGJlIHJlZnJlc2hlZC4KTm93IHRoZSBHb2Qgb2YgcGVhY2UgYmUgd2l0aCB5b3UgYWxsLiBBbWVuLgpJIGNvbW1lbmQgdW50byB5b3UgUGhlYmUgb3VyIHNpc3Rlciwgd2hpY2ggaXMgYSBzZXJ2YW50IG9mIHRoZSBjaHVyY2ggd2hpY2ggaXMgYXQgQ2VuY2hyZWE6ClRoYXQgeWUgcmVjZWl2ZSBoZXIgaW4gdGhlIExvcmQsIGFzIGJlY29tZXRoIHNhaW50cywgYW5kIHRoYXQgeWUgYXNzaXN0IGhlciBpbiB3aGF0c29ldmVyIGJ1c2luZXNzIHNoZSBoYXRoIG5lZWQgb2YgeW91OiBmb3Igc2hlIGhhdGggYmVlbiBhIHN1Y2NvdXJlciBvZiBtYW55LCBhbmQgb2YgbXlzZWxmIGFsc28uCkdyZWV0IFByaXNjaWxsYSBhbmQgQXF1aWxhIG15IGhlbHBlcnMgaW4gQ2hyaXN0IEplc3VzOgpXaG8gaGF2ZSBmb3IgbXkgbGlmZSBsYWlkIGRvd24gdGhlaXIgb3duIG5lY2tzOiB1bnRvIHdob20gbm90IG9ubHkgSSBnaXZlIHRoYW5rcywgYnV0IGFsc28gYWxsIHRoZSBjaHVyY2hlcyBvZiB0aGUgR2VudGlsZXMuCkxpa2V3aXNlIGdyZWV0IHRoZSBjaHVyY2ggdGhhdCBpcyBpbiB0aGVpciBob3VzZS4gU2FsdXRlIG15IHdlbGwtYmVsb3ZlZCBFcGFlbmV0dXMsIHdobyBpcyB0aGUgZmlyc3RmcnVpdHMgb2YgQWNoYWlhIHVudG8gQ2hyaXN0LgpHcmVldCBNYXJ5LCB3aG8gYmVzdG93ZWQgbXVjaCBsYWJvdXIgb24gdXMuClNhbHV0ZSBBbmRyb25pY3VzIGFuZCBKdW5pYSwgbXkga2luc21lbiwgYW5kIG15IGZlbGxvdy1wcmlzb25lcnMsIHdobyBhcmUgb2Ygbm90ZSBhbW9uZyB0aGUgYXBvc3RsZXMsIHdobyBhbHNvIHdlcmUgaW4gQ2hyaXN0IGJlZm9yZSBtZS4KR3JlZXQgQW1wbGlhcyBteSBiZWxvdmVkIGluIHRoZSBMb3JkLgpTYWx1dGUgVXJiYW5lLCBvdXIgaGVscGVyIGluIENocmlzdCwgYW5kIFN0YWNoeXMgbXkgYmVsb3ZlZC4KU2FsdXRlIEFwZWxsZXMgYXBwcm92ZWQgaW4gQ2hyaXN0LiBTYWx1dGUgdGhlbSB3aGljaCBhcmUgb2YgQXJpc3RvYnVsdXMnIGhvdXNlaG9sZC4KU2FsdXRlIEhlcm9kaW9uIG15IGtpbnNtYW4uIEdyZWV0IHRoZW0gdGhhdCBiZSBvZiB0aGUgaG91c2Vob2xkIG9mIE5hcmNpc3N1cywgd2hpY2ggYXJlIGluIHRoZSBMb3JkLgpTYWx1dGUgVHJ5cGhlbmEgYW5kIFRyeXBob3NhLCB3aG8gbGFib3VyIGluIHRoZSBMb3JkLiBTYWx1dGUgdGhlIGJlbG92ZWQgUGVyc2lzLCB3aGljaCBsYWJvdXJlZCBtdWNoIGluIHRoZSBMb3JkLgpTYWx1dGUgUnVmdXMgY2hvc2VuIGluIHRoZSBMb3JkLCBhbmQgaGlzIG1vdGhlciBhbmQgbWluZS4KU2FsdXRlIEFzeW5jcml0dXMsIFBobGVnb24sIEhlcm1hcywgUGF0cm9iYXMsIEhlcm1lcywgYW5kIHRoZSBicmV0aHJlbiB3aGljaCBhcmUgd2l0aCB0aGVtLgpTYWx1dGUgUGhpbG9sb2d1cywgYW5kIEp1bGlhLCBOZXJldXMsIGFuZCBoaXMgc2lzdGVyLCBhbmQgT2x5bXBhcywgYW5kIGFsbCB0aGUgc2FpbnRzIHdoaWNoIGFyZSB3aXRoIHRoZW0uClNhbHV0ZSBvbmUgYW5vdGhlciB3aXRoIGFuIGhvbHkga2lzcy4gVGhlIGNodXJjaGVzIG9mIENocmlzdCBzYWx1dGUgeW91LgpOb3cgSSBiZXNlZWNoIHlvdSwgYnJldGhyZW4sIG1hcmsgdGhlbSB3aGljaCBjYXVzZSBkaXZpc2lvbnMgYW5kIG9mZmVuY2VzIGNvbnRyYXJ5IHRvIHRoZSBkb2N0cmluZSB3aGljaCB5ZSBoYXZlIGxlYXJuZWQ7IGFuZCBhdm9pZCB0aGVtLgpGb3IgdGhleSB0aGF0IGFyZSBzdWNoIHNlcnZlIG5vdCBvdXIgTG9yZCBKZXN1cyBDaHJpc3QsIGJ1dCB0aGVpciBvd24gYmVsbHk7IGFuZCBieSBnb29kIHdvcmRzIGFuZCBmYWlyIHNwZWVjaGVzIGRlY2VpdmUgdGhlIGhlYXJ0cyBvZiB0aGUgc2ltcGxlLgpGb3IgeW91ciBvYmVkaWVuY2UgaXMgY29tZSBhYnJvYWQgdW50byBhbGwgbWVuLiBJIGFtIGdsYWQgdGhlcmVmb3JlIG9uIHlvdXIgYmVoYWxmOiBidXQgeWV0IEkgd291bGQgaGF2ZSB5b3Ugd2lzZSB1bnRvIHRoYXQgd2hpY2ggaXMgZ29vZCwgYW5kIHNpbXBsZSBjb25jZXJuaW5nIGV2aWwuCkFuZCB0aGUgR29kIG9mIHBlYWNlIHNoYWxsIGJydWlzZSBTYXRhbiB1bmRlciB5b3VyIGZlZXQgc2hvcnRseS4gVGhlIGdyYWNlIG9mIG91ciBMb3JkIEplc3VzIENocmlzdCBiZSB3aXRoIHlvdS4gQW1lbi4KVGltb3RoZXVzIG15IHdvcmtmZWxsb3csIGFuZCBMdWNpdXMsIGFuZCBKYXNvbiwgYW5kIFNvc2lwYXRlciwgbXkga2luc21lbiwgc2FsdXRlIHlvdS4KSSBUZXJ0aXVzLCB3aG8gd3JvdGUgdGhpcyBlcGlzdGxlLCBzYWx1dGUgeW91IGluIHRoZSBMb3JkLgpHYWl1cyBtaW5lIGhvc3QsIGFuZCBvZiB0aGUgd2hvbGUgY2h1cmNoLCBzYWx1dGV0aCB5b3UuIEVyYXN0dXMgdGhlIGNoYW1iZXJsYWluIG9mIHRoZSBjaXR5IHNhbHV0ZXRoIHlvdSwgYW5kIFF1YXJ0dXMgYSBicm90aGVyLgpUaGUgZ3JhY2Ugb2Ygb3VyIExvcmQgSmVzdXMgQ2hyaXN0IGJlIHdpdGggeW91IGFsbC4gQW1lbi4KTm93IHRvIGhpbSB0aGF0IGlzIG9mIHBvd2VyIHRvIHN0YWJsaXNoIHlvdSBhY2NvcmRpbmcgdG8gbXkgZ29zcGVsLCBhbmQgdGhlIHByZWFjaGluZyBvZiBKZXN1cyBDaHJpc3QsIGFjY29yZGluZyB0byB0aGUgcmV2ZWxhdGlvbiBvZiB0aGUgbXlzdGVyeSwgd2hpY2ggd2FzIGtlcHQgc2VjcmV0IHNpbmNlIHRoZSB3b3JsZCBiZWdhbiwKQnV0IG5vdyBpcyBtYWRlIG1hbmlmZXN0LCBhbmQgYnkgdGhlIHNjcmlwdHVyZXMgb2YgdGhlIHByb3BoZXRzLCBhY2NvcmRpbmcgdG8gdGhlIGNvbW1hbmRtZW50IG9mIHRoZSBldmVybGFzdGluZyBHb2QsIG1hZGUga25vd24gdG8gYWxsIG5hdGlvbnMgZm9yIHRoZSBvYmVkaWVuY2Ugb2YgZmFpdGg6ClRvIEdvZCBvbmx5IHdpc2UsIGJlIGdsb3J5IHRocm91Z2ggSmVzdXMgQ2hyaXN0IGZvciBldmVyLiBBbWVuLgpQYXVsLCBjYWxsZWQgW3RvIGJlXSBhbiBhcG9zdGxlIG9mIEplc3VzIENocmlzdCB0aGUgd2lsbCBvZiBHb2QsIGFuZCBTb3N0aGVuZXMgW291cl0gYnJvdGhlciwKVW50byB0aGUgY2h1cmNoIG9mIEdvZCB3aGljaCBpcyBhdCBDb3JpbnRoLCB0byB0aGVtIHRoYXQgYXJlIHNhbmN0aWZpZWQgaW4gQ2hyaXN0IEplc3VzLCBjYWxsZWQgW3RvIGJlXSBzYWludHMsIHdpdGggYWxsIHRoYXQgaW4gZXZlcnkgcGxhY2UgY2FsbCB1cG9uIHRoZSBuYW1lIG9mIEplc3VzIENocmlzdCBvdXIgTG9yZCwgYm90aCB0aGVpcnMgYW5kIG91cnM6CkdyYWNlIFtiZV0gdW50byB5b3UsIGFuZCBwZWFjZSwgZnJvbSBHb2Qgb3VyIEZhdGhlciwgYW5kIFtmcm9tXSB0aGUgTG9yZCBKZXN1cyBDaHJpc3QuCkkgdGhhbmsgbXkgR29kIGFsd2F5cyBvbiB5b3VyIGJlaGFsZiwgZm9yIHRoZSBncmFjZSBvZiBHb2Qgd2hpY2ggaXMgZ2l2ZW4geW91IGJ5IEplc3VzIENocmlzdDsKVGhhdCBpbiBldmVyeSB0aGluZyB5ZSBhcmUgZW5yaWNoZWQgYnkgaGltLCBpbiBhbGwgdXR0ZXJhbmNlLCBhbmQgaW4gYWxsIGtub3dsZWRnZTsgNwpFdmVuIGFzIHRoZSB0ZXN0aW1vbnkgb2YgQ2hyaXN0IHdhcyBjb25maXJtZWQgaW4geW91OgpTbyB0aGF0IHllIGNvbWUgYmVoaW5kIGluIG5vIGdpZnQ7IHdhaXRpbmcgZm9yIHRoZSBjb21pbmcKV2hvIHNoYWxsIGFsc28gY29uZmlybSB5b3UgdW50byB0aGUgZW5kLCBbdGhhdCB5ZSBtYXkgYmVdIENocmlzdC4KR29kIFtpc10gZmFpdGhmdWwsIGJ5IHdob20geWUgd2VyZSBjYWxsZWQgdW50byB0aGUgZmVsbG93c2hpcCBvZiBoaXMgU29uIEplc3VzIENocmlzdCBvdXIgTG9yZC4KTm93IEkgYmVzZWVjaCB5b3UsIGJyZXRocmVuLCBieSB0aGUgbmFtZSBvZiBvdXIgTG9yZCBKZXN1cyBDaHJpc3QsIHRoYXQgeWUgYWxsIHNwZWFrIHRoZSBzYW1lIHRoaW5nLCBhbmQgW3RoYXRdIHRoZXJlIGJlIG5vIGRpdmlzaW9ucyBhbW9uZyB5b3U7IGJ1dCBbdGhhdF0geWUgYmUgcGVyZmVjdGx5IGpvaW5lZCB0b2dldGhlciBpbiB0aGUgc2FtZSBtaW5kIGFuZCBpbiB0aGUgc2FtZSBqdWRnbWVudC4KRm9yIGl0IGhhdGggYmVlbiBkZWNsYXJlZCB1bnRvIG1lIG9mIHlvdSwgbXkgYnJldGhyZW4sIGJ5IHRoZW0gW3doaWNoIGFyZSBvZiB0aGUgaG91c2VdIG9mIENobG9lLCB0aGF0IHRoZXJlIGFyZSBjb250ZW50aW9ucyBhbW9uZyB5b3UuCk5vdyB0aGlzIEkgc2F5LCB0aGF0IGV2ZXJ5IG9uZSBvZiB5b3Ugc2FpdGgsIEkgYW0gb2YgUGF1bDsgYW5kIEkgb2YgQXBvbGxvczsgYW5kIEkgb2YgQ2VwaGFzOyBhbmQgSSBvZiBDaHJpc3QuCklzIENocmlzdCBkaXZpZGVkPyB3YXMgUGF1bCBjcnVjaWZpZWQgZm9yIHlvdT8gb3Igd2VyZSB5ZSBiYXB0aXplZCBpbiB0aGUgbmFtZSBvZiBQYXVsPwpJIHRoYW5rIEdvZCB0aGF0IEkgYmFwdGl6ZWQgbm9uZSBvZiB5b3UsIGJ1dCBDcmlzcHVzIGFuZCBHYWl1czsKTGVzdCBhbnkgc2hvdWxkIHNheSB0aGF0IEkgaGFkIGJhcHRpemVkIGluIG1pbmUgb3duIG5hbWUuCkFuZCBJIGJhcHRpemVkIGFsc28gdGhlIGhvdXNlaG9sZCBvZiBTdGVwaGFuYXM6IGJlc2lkZXMsIEkga25vdyBub3Qgd2hldGhlciBJIGJhcHRpemVkIGFueSBvdGhlci4KRm9yIENocmlzdCBzZW50IG1lIG5vdCB0byBiYXB0aXplLCBidXQgdG8gcHJlYWNoIHRoZSBnb3NwZWw6IG5vdCB3aXRoIHdpc2RvbSBvZiB3b3JkcywgbGVzdCB0aGUgY3Jvc3Mgb2YgQ2hyaXN0IHNob3VsZCBiZSBtYWRlIG9mIG5vbmUgZWZmZWN0LgpGb3IgdGhlIHByZWFjaGluZyBvZiB0aGUgY3Jvc3MgaXMgdG8gdGhlbSB0aGF0IHBlcmlzaCBmb29saXNobmVzczsgYnV0IHVudG8gdXMgd2hpY2ggYXJlIHNhdmVkIGl0IGlzIHRoZSBwb3dlciBvZiBHb2QuCkZvciBpdCBpcyB3cml0dGVuLCBJIHdpbGwgZGVzdHJveSB0aGUgd2lzZG9tIG9mIHRoZSB3aXNlLCBhbmQgd2lsbCBicmluZyB0byBub3RoaW5nIHRoZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBwcnVkZW50LgpXaGVyZSBbaXNdIHRoZSB3aXNlPyB3aGVyZSBbaXNdIHRoZSBzY3JpYmU/IHdoZXJlIFtpc10gdGhlIGRpc3B1dGVyIG9mIHRoaXMgd29ybGQ/IGhhdGggbm90IEdvZCBtYWRlIGZvb2xpc2ggdGhlIHdpc2RvbSBvZiB0aGlzIHdvcmxkPwpGb3IgYWZ0ZXIgdGhhdCBpbiB0aGUgd2lzZG9tIG9mIEdvZCB0aGUgd29ybGQgYnkgd2lzZG9tIGtuZXcgbm90IEdvZCwgaXQgcGxlYXNlZCBHb2QgYnkgdGhlIGZvb2xpc2huZXNzIG9mIHByZWFjaGluZyB0byBzYXZlIHRoZW0gdGhhdCBiZWxpZXZlLgpGb3IgdGhlIEpld3MgcmVxdWlyZSBhIHNpZ24sIGFuZCB0aGUgR3JlZWtzIHNlZWsgYWZ0ZXIgd2lzZG9tOgpCdXQgd2UgcHJlYWNoIENocmlzdCBjcnVjaWZpZWQsIHVudG8gdGhlIEpld3MgYSBzdHVtYmxpbmdibG9jaywgYW5kIHVudG8gdGhlIEdyZWVrcyBmb29saXNobmVzczsKQnV0IHVudG8gdGhlbSB3aGljaCBhcmUgY2FsbGVkLCBib3RoIEpld3MgYW5kIEdyZWVrcywgQ2hyaXN0IHRoZSBwb3dlciBvZiBHb2QsIGFuZCB0aGUgd2lzZG9tIG9mIEdvZC4KQmVjYXVzZSB0aGUgZm9vbGlzaG5lc3Mgb2YgR29kIGlzIHdpc2VyIHRoYW4gbWVuOyBhbmQgdGhlIHdlYWtuZXNzIG9mIEdvZCBpcyBzdHJvbmdlciB0aGFuIG1lbi4KRm9yIHllIHNlZSB5b3VyIGNhbGxpbmcsIGJyZXRocmVuLCBob3cgdGhhdCBub3QgbWFueSB3aXNlIG1lbiBhZnRlciB0aGUgZmxlc2gsIG5vdCBtYW55IG1pZ2h0eSwgbm90IG1hbnkgbm9ibGUsIFthcmUgY2FsbGVkXToKQnV0IEdvZCBoYXRoIGNob3NlbiB0aGUgZm9vbGlzaCB0aGluZ3Mgb2YgdGhlIHdvcmxkIHRvIGNvbmZvdW5kIHRoZSB3aXNlOyBhbmQgR29kIGhhdGggY2hvc2VuIHRoZSB3ZWFrIHRoaW5ncyBvZiB0aGUgd29ybGQgdG8gY29uZm91bmQgdGhlIHRoaW5ncyB3aGljaCBhcmUgbWlnaHR5OwpBbmQgYmFzZSB0aGluZ3Mgb2YgdGhlIHdvcmxkLCBhbmQgdGhpbmdzIHdoaWNoIGFyZSBkZXNwaXNlZCwgaGF0aCBHb2QgY2hvc2VuLCBbeWVhXSwgYW5kIHRoaW5ncyB3aGljaCBhcmUgbm90LCB0byBicmluZyB0byBub3VnaHQgdGhpbmdzIHRoYXQgYXJlOgpUaGF0IG5vIGZsZXNoIHNob3VsZCBnbG9yeSBpbiBoaXMgcHJlc2VuY2UuCkJ1dCBvZiBoaW0gYXJlIHllIGluIENocmlzdCBKZXN1cywgd2hvIG9mIEdvZCBpcyBtYWRlIHVudG8gdXMgd2lzZG9tLCBhbmQgcmlnaHRlb3VzbmVzcywgYW5kIHNhbmN0aWZpY2F0aW9uLCBhbmQgcmVkZW1wdGlvbjoKVGhhdCwgYWNjb3JkaW5nIGFzIGl0IGlzIHdyaXR0ZW4sIEhlIHRoYXQgZ2xvcmlldGgsIGxldCBoaW0gZ2xvcnkgaW4gdGhlIExvcmQuCkFuZCBJLCBicmV0aHJlbiwgd2hlbiBJIGNhbWUgdG8geW91LCBjYW1lIG5vdCB3aXRoIGV4Y2VsbGVuY3kgb2Ygc3BlZWNoIG9yIG9mIHdpc2RvbSwgZGVjbGFyaW5nIHVudG8geW91IHRoZSB0ZXN0aW1vbnkgb2YgR29kLgpGb3IgSSBkZXRlcm1pbmVkIG5vdCB0byBrbm93IGFueSB0aGluZyBhbW9uZyB5b3UsIHNhdmUgSmVzdXMgQ2hyaXN0LCBhbmQgaGltIGNydWNpZmllZC4KQW5kIEkgd2FzIHdpdGggeW91IGluIHdlYWtuZXNzLCBhbmQgaW4gZmVhciwgYW5kIGluIG11Y2ggdHJlbWJsaW5nLgpBbmQgbXkgc3BlZWNoIGFuZCBteSBwcmVhY2hpbmcgW3dhc10gbm90IHdpdGggZW50aWNpbmcgd29yZHMgb2YgbWFuJ3Mgd2lzZG9tLCBidXQgaW4gZGVtb25zdHJhdGlvbiBvZiB0aGUgU3Bpcml0IGFuZCBvZiBwb3dlcjoKVGhhdCB5b3VyIGZhaXRoIHNob3VsZCBub3Qgc3RhbmQgaW4gdGhlIHdpc2RvbSBvZiBtZW4sIGJ1dCBpbiB0aGUgcG93ZXIgb2YgR29kLgpIb3diZWl0IHdlIHNwZWFrIHdpc2RvbSBhbW9uZyB0aGVtIHRoYXQgYXJlIHBlcmZlY3Q6IHlldCBub3QgdGhlIHdpc2RvbSBvZiB0aGlzIHdvcmxkLCBub3Igb2YgdGhlIHByaW5jZXMgb2YgdGhpcyB3b3JsZCwgdGhhdCBjb21lIHRvIG5vdWdodDoKQnV0IHdlIHNwZWFrIHRoZSB3aXNkb20gb2YgR29kIGluIGEgbXlzdGVyeSwgW2V2ZW5dIHRoZSBoaWRkZW4gW3dpc2RvbV0sIHdoaWNoIEdvZCBvcmRhaW5lZCBiZWZvcmUgdGhlIHdvcmxkIHVudG8gb3VyIGdsb3J5OgpXaGljaCBub25lIG9mIHRoZSBwcmluY2VzIG9mIHRoaXMgd29ybGQga25ldzogZm9yIGhhZCB0aGV5IGtub3duIFtpdF0sIHRoZXkgd291bGQgbm90IGhhdmUgY3J1Y2lmaWVkIHRoZSBMb3JkIG9mIGdsb3J5LgpCdXQgYXMgaXQgaXMgd3JpdHRlbiwgRXllIGhhdGggbm90IHNlZW4sIG5vciBlYXIgaGVhcmQsIG5laXRoZXIgaGF2ZSBlbnRlcmVkIGludG8gdGhlIGhlYXJ0IG9mIG1hbiwgdGhlIHRoaW5ncyB3aGljaCBHb2QgaGF0aCBwcmVwYXJlZCBmb3IgdGhlbSB0aGF0IGxvdmUgaGltLgpCdXQgR29kIGhhdGggcmV2ZWFsZWQgW3RoZW1dIHVudG8gdXMgYnkgaGlzIFNwaXJpdDogZm9yIHRoZSBTcGlyaXQgc2VhcmNoZXRoIGFsbCB0aGluZ3MsIHllYSwgdGhlIGRlZXAgdGhpbmdzIG9mIEdvZC4KRm9yIHdoYXQgbWFuIGtub3dldGggdGhlIHRoaW5ncyBvZiBhIG1hbiwgc2F2ZSB0aGUgc3Bpcml0IG9mIG1hbiB3aGljaCBpcyBpbiBoaW0/IGV2ZW4gc28gdGhlIHRoaW5ncyBvZiBHb2Qga25vd2V0aCBubyBtYW4sIGJ1dCB0aGUgU3Bpcml0IG9mIEdvZC4KTm93IHdlIGhhdmUgcmVjZWl2ZWQsIG5vdCB0aGUgc3Bpcml0IG9mIHRoZSB3b3JsZCwgYnV0IHRoZSBzcGlyaXQgd2hpY2ggaXMgb2YgR29kOyB0aGF0IHdlIG1pZ2h0IGtub3cgdGhlIHRoaW5ncyB0aGF0IGFyZSBmcmVlbHkgZ2l2ZW4gdG8gdXMgb2YgR29kLgpXaGljaCB0aGluZ3MgYWxzbyB3ZSBzcGVhaywgbm90IGluIHRoZSB3b3JkcyB3aGljaCBtYW4ncyB3aXNkb20gdGVhY2hldGgsIGJ1dCB3aGljaCB0aGUgSG9seSBHaG9zdCB0ZWFjaGV0aDsgY29tcGFyaW5nIHNwaXJpdHVhbCB0aGluZ3Mgd2l0aCBzcGlyaXR1YWwuCkJ1dCB0aGUgbmF0dXJhbCBtYW4gcmVjZWl2ZXRoIG5vdCB0aGUgdGhpbmdzIG9mIHRoZSBTcGlyaXQgb2YgR29kOiBmb3IgdGhleSBhcmUgZm9vbGlzaG5lc3MgdW50byBoaW06IG5laXRoZXIgY2FuIGhlIGtub3cgW3RoZW1dLCBiZWNhdXNlIHRoZXkgYXJlIHNwaXJpdHVhbGx5IGRpc2Nlcm5lZC4KQnV0IGhlIHRoYXQgaXMgc3Bpcml0dWFsIGp1ZGdldGggYWxsIHRoaW5ncywgeWV0IGhlIGhpbXNlbGYgaXMganVkZ2VkIG9mIG5vIG1hbi4KRm9yIHdobyBoYXRoIGtub3duIHRoZSBtaW5kIG9mIHRoZSBMb3JkLCB0aGF0IGhlIG1heSBpbnN0cnVjdCBoaW0/IEJ1dCB3ZSBoYXZlIHRoZSBtaW5kIG9mIENocmlzdC4KQW5kIEksIGJyZXRocmVuLCBjb3VsZCBub3Qgc3BlYWsgdW50byB5b3UgYXMgdW50byBzcGlyaXR1YWwsIGJ1dCBhcyB1bnRvIGNhcm5hbCwgW2V2ZW5dIGFzIHVudG8gYmFiZXMgaW4gQ2hyaXN0LgpJIGhhdmUgZmVkIHlvdSB3aXRoIG1pbGssIGFuZCBub3Qgd2l0aCBtZWF0OiBmb3IgaGl0aGVydG8geWUgd2VyZSBub3QgYWJsZSBbdG8gYmVhciBpdF0sIG5laXRoZXIgeWV0IG5vdyBhcmUgeWUgYWJsZS4KRm9yIHllIGFyZSB5ZXQgY2FybmFsOiBmb3Igd2hlcmVhcyBbdGhlcmUgaXNdIGFtb25nIHlvdSBlbnZ5aW5nLCBhbmQgc3RyaWZlLCBhbmQgZGl2aXNpb25zLCBhcmUgeWUgbm90IGNhcm5hbCwgYW5kIHdhbGsgYXMgbWVuPwpGb3Igd2hpbGUgb25lIHNhaXRoLCBJIGFtIG9mIFBhdWw7IGFuZCBhbm90aGVyLCBJIFthbV0gb2YgQXBvbGxvczsgYXJlIHllIG5vdCBjYXJuYWw/CldobyB0aGVuIGlzIFBhdWwsIGFuZCB3aG8gW2lzXSBBcG9sbG9zLCBidXQgbWluaXN0ZXJzIGJ5IHdob20geWUgYmVsaWV2ZWQsIGV2ZW4gYXMgdGhlIExvcmQgZ2F2ZSB0byBldmVyeSBtYW4/CkkgaGF2ZSBwbGFudGVkLCBBcG9sbG9zIHdhdGVyZWQ7IGJ1dCBHb2QgZ2F2ZSB0aGUgaW5jcmVhc2UuClNvIHRoZW4gbmVpdGhlciBpcyBoZSB0aGF0IHBsYW50ZXRoIGFueSB0aGluZywgbmVpdGhlciBoZSB0aGF0IHdhdGVyZXRoOyBidXQgR29kIHRoYXQgZ2l2ZXRoIHRoZSBpbmNyZWFzZS4KTm93IGhlIHRoYXQgcGxhbnRldGggYW5kIGhlIHRoYXQgd2F0ZXJldGggYXJlIG9uZTogYW5kIGV2ZXJ5IG1hbiBzaGFsbCByZWNlaXZlIGhpcyBvd24gcmV3YXJkIGFjY29yZGluZyB0byBoaXMgb3duIGxhYm91ci4KRm9yIHdlIGFyZSBsYWJvdXJlcnMgdG9nZXRoZXIgd2l0aCBHb2Q6IHllIGFyZSBHb2QncyBodXNiYW5kcnksIFt5ZSBhcmVdIEdvZCdzIGJ1aWxkaW5nLgpBY2NvcmRpbmcgdG8gdGhlIGdyYWNlIG9mIEdvZCB3aGljaCBpcyBnaXZlbiB1bnRvIG1lLCBhcyBhIHdpc2UgbWFzdGVyYnVpbGRlciwgSSBoYXZlIGxhaWQgdGhlIGZvdW5kYXRpb24sIGFuZCBhbm90aGVyIGJ1aWxkZXRoIHRoZXJlb24uIEJ1dCBsZXQgZXZlcnkgbWFuIHRha2UgaGVlZCBob3cgaGUgYnVpbGRldGggdGhlcmV1cG9uLgpGb3Igb3RoZXIgZm91bmRhdGlvbiBjYW4gbm8gbWFuIGxheSB0aGFuIHRoYXQgaXMgbGFpZCwgd2hpY2ggaXMgSmVzdXMgQ2hyaXN0LgpOb3cgaWYgYW55IG1hbiBidWlsZCB1cG9uIHRoaXMgZm91bmRhdGlvbiBnb2xkLCBzaWx2ZXIsIHByZWNpb3VzIHN0b25lcywgd29vZCwgaGF5LCBzdHViYmxlOwpFdmVyeSBtYW4ncyB3b3JrIHNoYWxsIGJlIG1hZGUgbWFuaWZlc3Q6IGZvciB0aGUgZGF5IHNoYWxsIGRlY2xhcmUgaXQsIGJlY2F1c2UgaXQgc2hhbGwgYmUgcmV2ZWFsZWQgYnkgZmlyZTsgYW5kIHRoZSBmaXJlIHNoYWxsIHRyeSBldmVyeSBtYW4ncyB3b3JrIG9mIHdoYXQgc29ydCBpdCBpcy4KSWYgYW55IG1hbidzIHdvcmsgYWJpZGUgd2hpY2ggaGUgaGF0aCBidWlsdCB0aGVyZXVwb24sIGhlIHNoYWxsIHJlY2VpdmUgYSByZXdhcmQuCklmIGFueSBtYW4ncyB3b3JrIHNoYWxsIGJlIGJ1cm5lZCwgaGUgc2hhbGwgc3VmZmVyIGxvc3M6IGJ1dCBoZSBoaW1zZWxmIHNoYWxsIGJlIHNhdmVkOyB5ZXQgc28gYXMgYnkgZmlyZS4KS25vdyB5ZSBub3QgdGhhdCB5ZSBhcmUgdGhlIHRlbXBsZSBvZiBHb2QsIGFuZCBbdGhhdF0gdGhlIFNwaXJpdCBvZiBHb2QgZHdlbGxldGggaW4geW91PwpJZiBhbnkgbWFuIGRlZmlsZSB0aGUgdGVtcGxlIG9mIEdvZCwgaGltIHNoYWxsIEdvZCBkZXN0cm95OyBmb3IgdGhlIHRlbXBsZSBvZiBHb2QgaXMgaG9seSwgd2hpY2ggW3RlbXBsZV0geWUgYXJlLgpMZXQgbm8gbWFuIGRlY2VpdmUgaGltc2VsZi4gSWYgYW55IG1hbiBhbW9uZyB5b3Ugc2VlbWV0aCB0byBiZSB3aXNlIGluIHRoaXMgd29ybGQsIGxldCBoaW0gYmVjb21lIGEgZm9vbCwgdGhhdCBoZSBtYXkgYmUgd2lzZS4KRm9yIHRoZSB3aXNkb20gb2YgdGhpcyB3b3JsZCBpcyBmb29saXNobmVzcyB3aXRoIEdvZC4gRm9yIGl0IGlzIHdyaXR0ZW4sIEhlIHRha2V0aCB0aGUgd2lzZSBpbiB0aGVpciBvd24gY3JhZnRpbmVzcy4KQW5kIGFnYWluLCBUaGUgTG9yZCBrbm93ZXRoIHRoZSB0aG91Z2h0cyBvZiB0aGUgd2lzZSwgdGhhdCB0aGV5IGFyZSB2YWluLgpUaGVyZWZvcmUgbGV0IG5vIG1hbiBnbG9yeSBpbiBtZW4uIEZvciBhbGwgdGhpbmdzIGFyZSB5b3VyczsKV2hldGhlciBQYXVsLCBvciBBcG9sbG9zLCBvciBDZXBoYXMsIG9yIHRoZSB3b3JsZCwgb3IgbGlmZSwgb3IgZGVhdGgsIG9yIHRoaW5ncyBwcmVzZW50LCBvciB0aGluZ3MgdG8gY29tZTsgYWxsIGFyZSB5b3VyczsKQW5kIHllIGFyZSBDaHJpc3QnczsgYW5kIENocmlzdCBbaXNdIEdvZCdzLgpMZXQgYSBtYW4gc28gYWNjb3VudCBvZiB1cywgYXMgb2YgdGhlIG1pbmlzdGVycyBvZiBDaHJpc3QsIGFuZCBzdGV3YXJkcyBvZiB0aGUgbXlzdGVyaWVzIG9mIEdvZC4KTW9yZW92ZXIgaXQgaXMgcmVxdWlyZWQgaW4gc3Rld2FyZHMsIHRoYXQgYSBtYW4gYmUgZm91bmQgZmFpdGhmdWwuCkJ1dCB3aXRoIG1lIGl0IGlzIGEgdmVyeSBzbWFsbCB0aGluZyB0aGF0IEkgc2hvdWxkIGJlIGp1ZGdlZCBvZiB5b3UsIG9yIG9mIG1hbidzIGp1ZGdtZW50OiB5ZWEsIEkganVkZ2Ugbm90IG1pbmUgb3duIHNlbGYuCkZvciBJIGtub3cgbm90aGluZyBieSBteXNlbGY7IHlldCBhbSBJIG5vdCBoZXJlYnkganVzdGlmaWVkOiBidXQgaGUgdGhhdCBqdWRnZXRoIG1lIGlzIHRoZSBMb3JkLgpUaGVyZWZvcmUganVkZ2Ugbm90aGluZyBiZWZvcmUgdGhlIHRpbWUsIHVudGlsIHRoZSBMb3JkIGNvbWUsIHdobyBib3RoIHdpbGwgYnJpbmcgdG8gbGlnaHQgdGhlIGhpZGRlbiB0aGluZ3Mgb2YgZGFya25lc3MsIGFuZCB3aWxsIG1ha2UgbWFuaWZlc3QgdGhlIGNvdW5zZWxzIG9mIHRoZSBoZWFydHM6IGFuZCB0aGVuIHNoYWxsIGV2ZXJ5IG1hbiBoYXZlIHByYWlzZSBvZiBHb2QuCkFuZCB0aGVzZSB0aGluZ3MsIGJyZXRocmVuLCBJIGhhdmUgaW4gYSBmaWd1cmUgdHJhbnNmZXJyZWQgdG8gbXlzZWxmIGFuZCBbdG9dIEFwb2xsb3MgZm9yIHlvdXIgc2FrZXM7IHRoYXQgeWUgbWlnaHQgbGVhcm4gaW4gdXMgbm90IHRvIHRoaW5rIFtvZiBtZW5dIGFib3ZlIHRoYXQgd2hpY2ggaXMgd3JpdHRlbiwgdGhhdCBubyBvbmUgb2YgeW91IGJlIHB1ZmZlZCB1cCBmb3Igb25lIGFnYWluc3QgYW5vdGhlci4KRm9yIHdobyBtYWtldGggdGhlZSB0byBkaWZmZXIgW2Zyb20gYW5vdGhlcl0/IGFuZCB3aGF0IGhhc3QgdGhvdSB0aGF0IHRob3UgZGlkc3Qgbm90IHJlY2VpdmU/IG5vdyBpZiB0aG91IGRpZHN0IHJlY2VpdmUgW2l0XSwgd2h5IGRvc3QgdGhvdSBnbG9yeSwgYXMgaWYgdGhvdSBoYWRzdCBub3QgcmVjZWl2ZWQgW2l0XT8KTm93IHllIGFyZSBmdWxsLCBub3cgeWUgYXJlIHJpY2gsIHllIGhhdmUgcmVpZ25lZCBhcyBraW5ncyB3aXRob3V0IHVzOiBhbmQgSSB3b3VsZCB0byBHb2QgeWUgZGlkIHJlaWduLCB0aGF0IHdlIGFsc28gbWlnaHQgcmVpZ24gd2l0aCB5b3UuCkZvciBJIHRoaW5rIHRoYXQgR29kIGhhdGggc2V0IGZvcnRoIHVzIHRoZSBhcG9zdGxlcyBsYXN0LCBhcyBpdCB3ZXJlIGFwcG9pbnRlZCB0byBkZWF0aDogZm9yIHdlIGFyZSBtYWRlIGEgc3BlY3RhY2xlIHVudG8gdGhlIHdvcmxkLCBhbmQgdG8gYW5nZWxzLCBhbmQgdG8gbWVuLgpXZSBbYXJlXSBmb29scyBmb3IgQ2hyaXN0J3Mgc2FrZSwgYnV0IHllIFthcmVdIHdpc2UgaW4gQ2hyaXN0OyB3ZSBbYXJlXSB3ZWFrLCBidXQgeWUgW2FyZV0gc3Ryb25nOyB5ZSBbYXJlXSBob25vdXJhYmxlLCBidXQgd2UgW2FyZV0gZGVzcGlzZWQuCkV2ZW4gdW50byB0aGlzIHByZXNlbnQgaG91ciB3ZSBib3RoIGh1bmdlciwgYW5kIHRoaXJzdCwgYW5kIGFyZSBuYWtlZCwgYW5kIGFyZSBidWZmZXRlZCwgYW5kIGhhdmUgbm8gY2VydGFpbiBkd2VsbGluZ3BsYWNlOwpBbmQgbGFib3VyLCB3b3JraW5nIHdpdGggb3VyIG93biBoYW5kczogYmVpbmcgcmV2aWxlZCwgd2UgYmxlc3M7IGJlaW5nIHBlcnNlY3V0ZWQsIHdlIHN1ZmZlciBpdDoKQmVpbmcgZGVmYW1lZCwgd2UgZW50cmVhdDogd2UgYXJlIG1hZGUgYXMgdGhlIGZpbHRoIG9mIHRoZSB3b3JsZCwgW2FuZCBhcmVdIHRoZSBvZmZzY291cmluZyBvZiBhbGwgdGhpbmdzIHVudG8gdGhpcyBkYXkuCkkgd3JpdGUgbm90IHRoZXNlIHRoaW5ncyB0byBzaGFtZSB5b3UsIGJ1dCBhcyBteSBiZWxvdmVkIHNvbnMgSSB3YXJuIFt5b3VdLgpGb3IgdGhvdWdoIHllIGhhdmUgdGVuIHRob3VzYW5kIGluc3RydWN0b3JzIGluIENocmlzdCwgeWV0IFtoYXZlIHllXSBub3QgbWFueSBmYXRoZXJzOiBmb3IgaW4gQ2hyaXN0IEplc3VzIEkgaGF2ZSBiZWdvdHRlbiB5b3UgdGhyb3VnaCB0aGUgZ29zcGVsLgpXaGVyZWZvcmUgSSBiZXNlZWNoIHlvdSwgYmUgeWUgZm9sbG93ZXJzIG9mIG1lLgpGb3IgdGhpcyBjYXVzZSBoYXZlIEkgc2VudCB1bnRvIHlvdSBUaW1vdGhldXMsIHdobyBpcyBteSBiZWxvdmVkIHNvbiwgYW5kIGZhaXRoZnVsIGluIHRoZSBMb3JkLCB3aG8gc2hhbGwgYnJpbmcgeW91IGludG8gcmVtZW1icmFuY2Ugb2YgbXkgd2F5cyB3aGljaCBiZSBpbiBDaHJpc3QsIGFzIEkgdGVhY2ggZXZlcnkgd2hlcmUgaW4gZXZlcnkgY2h1cmNoLgpOb3cgc29tZSBhcmUgcHVmZmVkIHVwLCBhcyB0aG91Z2ggSSB3b3VsZCBub3QgY29tZSB0byB5b3UuCkJ1dCBJIHdpbGwgY29tZSB0byB5b3Ugc2hvcnRseSwgaWYgdGhlIExvcmQgd2lsbCwgYW5kIHdpbGwga25vdywgbm90IHRoZSBzcGVlY2ggb2YgdGhlbSB3aGljaCBhcmUgcHVmZmVkIHVwLCBidXQgdGhlIHBvd2VyLgpGb3IgdGhlIGtpbmdkb20gb2YgR29kIFtpc10gbm90IGluIHdvcmQsIGJ1dCBpbiBwb3dlci4KV2hhdCB3aWxsIHllPyBzaGFsbCBJIGNvbWUgdW50byB5b3Ugd2l0aCBhIHJvZCwgb3IgaW4gbG92ZSwgYW5kIFtpbl0gdGhlIHNwaXJpdCBvZiBtZWVrbmVzcz8KSXQgaXMgcmVwb3J0ZWQgY29tbW9ubHkgW3RoYXQgdGhlcmUgaXNdIGZvcm5pY2F0aW9uIGFtb25nIHlvdSwgYW5kIHN1Y2ggZm9ybmljYXRpb24gYXMgaXMgbm90IHNvIG11Y2ggYXMgbmFtZWQgYW1vbmcgdGhlIEdlbnRpbGVzLCB0aGF0IG9uZSBzaG91bGQgaGF2ZSBoaXMgZmF0aGVyJ3Mgd2lmZS4KQW5kIHllIGFyZSBwdWZmZWQgdXAsIGFuZCBoYXZlIG5vdCByYXRoZXIgbW91cm5lZCwgdGhhdCBoZSB0aGF0IGhhdGggZG9uZSB0aGlzIGRlZWQgbWlnaHQgYmUgdGFrZW4gYXdheSBmcm9tIGFtb25nIHlvdS4KRm9yIEkgdmVyaWx5LCBhcyBhYnNlbnQgaW4gYm9keSwgYnV0IHByZXNlbnQgaW4gc3Bpcml0LCBoYXZlIGp1ZGdlZCBhbHJlYWR5LCBhcyB0aG91Z2ggSSB3ZXJlIHByZXNlbnQsIFtjb25jZXJuaW5nXSBoaW0gdGhhdCBoYXRoIHNvIGRvbmUgdGhpcyBkZWVkLApJbiB0aGUgbmFtZSBvZiBvdXIgTG9yZCBKZXN1cyBDaHJpc3QsIHdoZW4geWUgYXJlIGdhdGhlcmVkIHRvZ2V0aGVyLCBhbmQgbXkgc3Bpcml0LCB3aXRoIHRoZSBwb3dlciBvZiBvdXIgTG9yZCBKZXN1cyBDaHJpc3QsClRvIGRlbGl2ZXIgc3VjaCBhbiBvbmUgdW50byBTYXRhbiBmb3IgdGhlIGRlc3RydWN0aW9uIG9mIHRoZSBmbGVzaCwgdGhhdCB0aGUgc3Bpcml0IG1heSBiZSBzYXZlZCBpbiB0aGUgZGF5IG9mIHRoZSBMb3JkIEplc3VzLgpZb3VyIGdsb3J5aW5nIFtpc10gbm90IGdvb2QuIEtub3cgeWUgbm90IHRoYXQgYSBsaXR0bGUgbGVhdmVuIGxlYXZlbmV0aCB0aGUgd2hvbGUgbHVtcD8KUHVyZ2Ugb3V0IHRoZXJlZm9yZSB0aGUgb2xkIGxlYXZlbiwgdGhhdCB5ZSBtYXkgYmUgYSBuZXcgbHVtcCwgYXMgeWUgYXJlIHVubGVhdmVuZWQuIEZvciBldmVuIENocmlzdCBvdXIgcGFzc292ZXIgaXMgc2FjcmlmaWNlZCBmb3IgdXM6ClRoZXJlZm9yZSBsZXQgdXMga2VlcCB0aGUgZmVhc3QsIG5vdCB3aXRoIG9sZCBsZWF2ZW4sIG5laXRoZXIgd2l0aCB0aGUgbGVhdmVuIG9mIG1hbGljZSBhbmQgd2lja2VkbmVzczsgYnV0IHdpdGggdGhlIHVubGVhdmVuZWQgW2JyZWFkXSBvZiBzaW5jZXJpdHkgYW5kIHRydXRoLgpJIHdyb3RlIHVudG8geW91IGluIGFuIGVwaXN0bGUgbm90IHRvIGNvbXBhbnkgd2l0aCBmb3JuaWNhdG9yczoKWWV0IG5vdCBhbHRvZ2V0aGVyIHdpdGggdGhlIGZvcm5pY2F0b3JzIG9mIHRoaXMgd29ybGQsIG9yIHdpdGggdGhlIGNvdmV0b3VzLCBvciBleHRvcnRpb25lcnMsIG9yIHdpdGggaWRvbGF0ZXJzOyBmb3IgdGhlbiBtdXN0IHllIG5lZWRzIGdvIG91dCBvZiB0aGUgd29ybGQuCkJ1dCBub3cgSSBoYXZlIHdyaXR0ZW4gdW50byB5b3Ugbm90IHRvIGtlZXAgY29tcGFueSwgaWYgYW55IG1hbiB0aGF0IGlzIGNhbGxlZCBhIGJyb3RoZXIgYmUgYSBmb3JuaWNhdG9yLCBvciBjb3ZldG91cywgb3IgYW4gaWRvbGF0ZXIsIG9yIGEgcmFpbGVyLCBvciBhIGRydW5rYXJkLCBvciBhbiBleHRvcnRpb25lcjsgd2l0aCBzdWNoIGFuIG9uZSBubyBub3QgdG8gZWF0LgpGb3Igd2hhdCBoYXZlIEkgdG8gZG8gdG8ganVkZ2UgdGhlbSBhbHNvIHRoYXQgYXJlIHdpdGhvdXQ/IGRvIG5vdCB5ZSBqdWRnZSB0aGVtIHRoYXQgYXJlIHdpdGhpbj8KQnV0IHRoZW0gdGhhdCBhcmUgd2l0aG91dCBHb2QganVkZ2V0aC4gVGhlcmVmb3JlIHB1dCBhd2F5IGZyb20gYW1vbmcgeW91cnNlbHZlcyB0aGF0IHdpY2tlZCBwZXJzb24uCkRhcmUgYW55IG9mIHlvdSwgaGF2aW5nIGEgbWF0dGVyIGFnYWluc3QgYW5vdGhlciwgZ28gdG8gbGF3IGJlZm9yZSB0aGUgdW5qdXN0LCBhbmQgbm90IGJlZm9yZSB0aGUgc2FpbnRzPwpEbyB5ZSBub3Qga25vdyB0aGF0IHRoZSBzYWludHMgc2hhbGwganVkZ2UgdGhlIHdvcmxkPyBhbmQgaWYgdGhlIHdvcmxkIHNoYWxsIGJlIGp1ZGdlZCBieSB5b3UsIGFyZSB5ZSB1bndvcnRoeSB0byBqdWRnZSB0aGUgc21hbGxlc3QgbWF0dGVycz8KS25vdyB5ZSBub3QgdGhhdCB3ZSBzaGFsbCBqdWRnZSBhbmdlbHM/IGhvdyBtdWNoIG1vcmUgdGhpbmdzIHRoYXQgcGVydGFpbiB0byB0aGlzIGxpZmU/CklmIHRoZW4geWUgaGF2ZSBqdWRnbWVudHMgb2YgdGhpbmdzIHBlcnRhaW5pbmcgdG8gdGhpcyBsaWZlLCBzZXQgdGhlbSB0byBqdWRnZSB3aG8gYXJlIGxlYXN0IGVzdGVlbWVkIGluIHRoZSBjaHVyY2guCkkgc3BlYWsgdG8geW91ciBzaGFtZS4gSXMgaXQgc28sIHRoYXQgdGhlcmUgaXMgbm90IGEgd2lzZSBtYW4gYW1vbmcgeW91PyBubywgbm90IG9uZSB0aGF0IHNoYWxsIGJlIGFibGUgdG8ganVkZ2UgYmV0d2VlbiBoaXMgYnJldGhyZW4/CkJ1dCBicm90aGVyIGdvZXRoIHRvIGxhdyB3aXRoIGJyb3RoZXIsIGFuZCB0aGF0IGJlZm9yZSB0aGUgdW5iZWxpZXZlcnMuCk5vdyB0aGVyZWZvcmUgdGhlcmUgaXMgdXR0ZXJseSBhIGZhdWx0IGFtb25nIHlvdSwgYmVjYXVzZSB5ZSBnbyB0byBsYXcgb25lIHdpdGggYW5vdGhlci4gV2h5IGRvIHllIG5vdCByYXRoZXIgdGFrZSB3cm9uZz8gd2h5IGRvIHllIG5vdCByYXRoZXIgW3N1ZmZlciB5b3Vyc2VsdmVzIHRvXSBiZSBkZWZyYXVkZWQ/Ck5heSwgeWUgZG8gd3JvbmcsIGFuZCBkZWZyYXVkLCBhbmQgdGhhdCBbeW91cl0gYnJldGhyZW4uCktub3cgeWUgbm90IHRoYXQgdGhlIHVucmlnaHRlb3VzIHNoYWxsIG5vdCBpbmhlcml0IHRoZSBraW5nZG9tIG9mIEdvZD8gQmUgbm90IGRlY2VpdmVkOiBuZWl0aGVyIGZvcm5pY2F0b3JzLCBub3IgaWRvbGF0ZXJzLCBub3IgYWR1bHRlcmVycywgbm9yIGVmZmVtaW5hdGUsIG5vciBhYnVzZXJzIG9mIHRoZW1zZWx2ZXMgd2l0aCBtYW5raW5kLApOb3IgdGhpZXZlcywgbm9yIGNvdmV0b3VzLCBub3IgZHJ1bmthcmRzLCBub3IgcmV2aWxlcnMsIG5vciBleHRvcnRpb25lcnMsIHNoYWxsIGluaGVyaXQgdGhlIGtpbmdkb20gb2YgR29kLgpBbmQgc3VjaCB3ZXJlIHNvbWUgb2YgeW91OiBidXQgeWUgYXJlIHdhc2hlZCwgYnV0IHllIGFyZSBzYW5jdGlmaWVkLCBidXQgeWUgYXJlIGp1c3RpZmllZCBpbiB0aGUgbmFtZSBvZiB0aGUgTG9yZCBKZXN1cywgYW5kIGJ5IHRoZSBTcGlyaXQgb2Ygb3VyIEdvZC4KQWxsIHRoaW5ncyBhcmUgbGF3ZnVsIHVudG8gbWUsIGJ1dCBhbGwgdGhpbmdzIGFyZSBub3QgZXhwZWRpZW50OiBhbGwgdGhpbmdzIGFyZSBsYXdmdWwgZm9yIG1lLCBidXQgSSB3aWxsIG5vdCBiZSBicm91Z2h0IHVuZGVyIHRoZSBwb3dlciBvZiBhbnkuCk1lYXRzIGZvciB0aGUgYmVsbHksIGFuZCB0aGUgYmVsbHkgZm9yIG1lYXRzOiBidXQgR29kIHNoYWxsIGRlc3Ryb3kgYm90aCBpdCBhbmQgdGhlbS4gTm93IHRoZSBib2R5IFtpc10gbm90IGZvciBmb3JuaWNhdGlvbiwgYnV0IGZvciB0aGUgTG9yZDsgYW5kIHRoZSBMb3JkIGZvciB0aGUgYm9keS4KQW5kIEdvZCBoYXRoIGJvdGggcmFpc2VkIHVwIHRoZSBMb3JkLCBhbmQgd2lsbCBhbHNvIHJhaXNlIHVwIHVzIGJ5IGhpcyBvd24gcG93ZXIuCktub3cgeWUgbm90IHRoYXQgeW91ciBib2RpZXMgYXJlIHRoZSBtZW1iZXJzIG9mIENocmlzdD8gc2hhbGwgSSB0aGVuIHRha2UgdGhlIG1lbWJlcnMgb2YgQ2hyaXN0LCBhbmQgbWFrZSBbdGhlbV0gdGhlIG1lbWJlcnMgb2YgYW4gaGFybG90PyBHb2QgZm9yYmlkLgpXaGF0PyBrbm93IHllIG5vdCB0aGF0IGhlIHdoaWNoIGlzIGpvaW5lZCB0byBhbiBoYXJsb3QgaXMgb25lIGJvZHk/IGZvciB0d28sIHNhaXRoIGhlLCBzaGFsbCBiZSBvbmUgZmxlc2guCkJ1dCBoZSB0aGF0IGlzIGpvaW5lZCB1bnRvIHRoZSBMb3JkIGlzIG9uZSBzcGlyaXQuCkZsZWUgZm9ybmljYXRpb24uIEV2ZXJ5IHNpbiB0aGF0IGEgbWFuIGRvZXRoIGlzIHdpdGhvdXQgdGhlIGJvZHk7IGJ1dCBoZSB0aGF0IGNvbW1pdHRldGggZm9ybmljYXRpb24gc2lubmV0aCBhZ2FpbnN0IGhpcyBvd24gYm9keS4KV2hhdD8ga25vdyB5ZSBub3QgdGhhdCB5b3VyIGJvZHkgaXMgdGhlIHRlbXBsZSBvZiB0aGUgSG9seSBHaG9zdCBbd2hpY2ggaXNdIGluIHlvdSwgd2hpY2ggeWUgaGF2ZSBvZiBHb2QsIGFuZCB5ZSBhcmUgbm90IHlvdXIgb3duPwpGb3IgeWUgYXJlIGJvdWdodCB3aXRoIGEgcHJpY2U6IHRoZXJlZm9yZSBnbG9yaWZ5IEdvZCBpbiB5b3VyIGJvZHksIGFuZCBpbiB5b3VyIHNwaXJpdCwgd2hpY2ggYXJlIEdvZCdzLgpOb3cgY29uY2VybmluZyB0aGUgdGhpbmdzIHdoZXJlb2YgeWUgd3JvdGUgdW50byBtZTogW0l0IGlzXSBnb29kIGZvciBhIG1hbiBub3QgdG8gdG91Y2ggYSB3b21hbi4KTmV2ZXJ0aGVsZXNzLCBbdG8gYXZvaWRdIGZvcm5pY2F0aW9uLCBsZXQgZXZlcnkgbWFuIGhhdmUgaGlzIG93biB3aWZlLCBhbmQgbGV0IGV2ZXJ5IHdvbWFuIGhhdmUgaGVyIG93biBodXNiYW5kLgpMZXQgdGhlIGh1c2JhbmQgcmVuZGVyIHVudG8gdGhlIHdpZmUgZHVlIGJlbmV2b2xlbmNlOiBhbmQgbGlrZXdpc2UgYWxzbyB0aGUgd2lmZSB1bnRvIHRoZSBodXNiYW5kLgpUaGUgd2lmZSBoYXRoIG5vdCBwb3dlciBvZiBoZXIgb3duIGJvZHksIGJ1dCB0aGUgaHVzYmFuZDogYW5kIGxpa2V3aXNlIGFsc28gdGhlIGh1c2JhbmQgaGF0aCBub3QgcG93ZXIgb2YgaGlzIG93biBib2R5LCBidXQgdGhlIHdpZmUuCkRlZnJhdWQgeWUgbm90IG9uZSB0aGUgb3RoZXIsIGV4Y2VwdCBbaXQgYmVdIHdpdGggY29uc2VudCBmb3IgYSB0aW1lLCB0aGF0IHllIG1heSBnaXZlIHlvdXJzZWx2ZXMgdG8gZmFzdGluZyBhbmQgcHJheWVyOyBhbmQgY29tZSB0b2dldGhlciBhZ2FpbiwgdGhhdCBTYXRhbiB0ZW1wdCB5b3Ugbm90IGZvciB5b3VyIGluY29udGluZW5jeS4KQnV0IEkgc3BlYWsgdGhpcyBieSBwZXJtaXNzaW9uLCBbYW5kXSBub3Qgb2YgY29tbWFuZG1lbnQuCkZvciBJIHdvdWxkIHRoYXQgYWxsIG1lbiB3ZXJlIGV2ZW4gYXMgSSBteXNlbGYuIEJ1dCBldmVyeSBtYW4gaGF0aCBoaXMgcHJvcGVyIGdpZnQgb2YgR29kLCBvbmUgYWZ0ZXIgdGhpcyBtYW5uZXIsIGFuZCBhbm90aGVyIGFmdGVyIHRoYXQuCkkgc2F5IHRoZXJlZm9yZSB0byB0aGUgdW5tYXJyaWVkIGFuZCB3aWRvd3MsIEl0IGlzIGdvb2QgZm9yIHRoZW0gaWYgdGhleSBhYmlkZSBldmVuIGFzIEkuCkJ1dCBpZiB0aGV5IGNhbm5vdCBjb250YWluLCBsZXQgdGhlbSBtYXJyeTogZm9yIGl0IGlzIGJldHRlciB0byBtYXJyeSB0aGFuIHRvIGJ1cm4uCkFuZCB1bnRvIHRoZSBtYXJyaWVkIEkgY29tbWFuZCwgW3lldF0gbm90IEksIGJ1dCB0aGUgTG9yZCwgTGV0IG5vdCB0aGUgd2lmZSBkZXBhcnQgZnJvbSBbaGVyXSBodXNiYW5kOgpCdXQgYW5kIGlmIHNoZSBkZXBhcnQsIGxldCBoZXIgcmVtYWluIHVubWFycmllZCwgb3IgYmUgcmVjb25jaWxlZCB0byBbaGVyXSBodXNiYW5kOiBhbmQgbGV0IG5vdCB0aGUgaHVzYmFuZCBwdXQgYXdheSBbaGlzXSB3aWZlLgpCdXQgdG8gdGhlIHJlc3Qgc3BlYWsgSSwgbm90IHRoZSBMb3JkOiBJZiBhbnkgYnJvdGhlciBoYXRoIGEgd2lmZSB0aGF0IGJlbGlldmV0aCBub3QsIGFuZCBzaGUgYmUgcGxlYXNlZCB0byBkd2VsbCB3aXRoIGhpbSwgbGV0IGhpbSBub3QgcHV0IGhlciBhd2F5LgpBbmQgdGhlIHdvbWFuIHdoaWNoIGhhdGggYW4gaHVzYmFuZCB0aGF0IGJlbGlldmV0aCBub3QsIGFuZCBpZiBoZSBiZSBwbGVhc2VkIHRvIGR3ZWxsIHdpdGggaGVyLCBsZXQgaGVyIG5vdCBsZWF2ZSBoaW0uCkZvciB0aGUgdW5iZWxpZXZpbmcgaHVzYmFuZCBpcyBzYW5jdGlmaWVkIGJ5IHRoZSB3aWZlLCBhbmQgdGhlIHVuYmVsaWV2aW5nIHdpZmUgaXMgc2FuY3RpZmllZCBieSB0aGUgaHVzYmFuZDogZWxzZSB3ZXJlIHlvdXIgY2hpbGRyZW4gdW5jbGVhbjsgYnV0IG5vdyBhcmUgdGhleSBob2x5LgpCdXQgaWYgdGhlIHVuYmVsaWV2aW5nIGRlcGFydCwgbGV0IGhpbSBkZXBhcnQuIEEgYnJvdGhlciBvciBhIHNpc3RlciBpcyBub3QgdW5kZXIgYm9uZGFnZSBpbiBzdWNoIFtjYXNlc106IGJ1dCBHb2QgaGF0aCBjYWxsZWQgdXMgdG8gcGVhY2UuCkZvciB3aGF0IGtub3dlc3QgdGhvdSwgTyB3aWZlLCB3aGV0aGVyIHRob3Ugc2hhbHQgc2F2ZSBbdGh5XSBodXNiYW5kPyBvciBob3cga25vd2VzdCB0aG91LCBPIG1hbiwgd2hldGhlciB0aG91IHNoYWx0IHNhdmUgW3RoeV0gd2lmZT8KQnV0IGFzIEdvZCBoYXRoIGRpc3RyaWJ1dGVkIHRvIGV2ZXJ5IG1hbiwgYXMgdGhlIExvcmQgaGF0aCBjYWxsZWQgZXZlcnkgb25lLCBzbyBsZXQgaGltIHdhbGsuIEFuZCBzbyBvcmRhaW4gSSBpbiBhbGwgY2h1cmNoZXMuCklzIGFueSBtYW4gY2FsbGVkIGJlaW5nIGNpcmN1bWNpc2VkPyBsZXQgaGltIG5vdCBiZWNvbWUgdW5jaXJjdW1jaXNlZC4gSXMgYW55IGNhbGxlZCBpbiB1bmNpcmN1bWNpc2lvbj8gbGV0IGhpbSBub3QgYmUgY2lyY3VtY2lzZWQuCkNpcmN1bWNpc2lvbiBpcyBub3RoaW5nLCBhbmQgdW5jaXJjdW1jaXNpb24gaXMgbm90aGluZywgYnV0IHRoZSBrZWVwaW5nIG9mIHRoZSBjb21tYW5kbWVudHMgb2YgR29kLgpMZXQgZXZlcnkgbWFuIGFiaWRlIGluIHRoZSBzYW1lIGNhbGxpbmcgd2hlcmVpbiBoZSB3YXMgY2FsbGVkLgpBcnQgdGhvdSBjYWxsZWQgW2JlaW5nXSBhIHNlcnZhbnQ/IGNhcmUgbm90IGZvciBpdDogYnV0IGlmIHRob3UgbWF5ZXN0IGJlIG1hZGUgZnJlZSwgdXNlIFtpdF0gcmF0aGVyLgpGb3IgaGUgdGhhdCBpcyBjYWxsZWQgaW4gdGhlIExvcmQsIFtiZWluZ10gYSBzZXJ2YW50LCBpcyB0aGUgTG9yZCdzIGZyZWVtYW46IGxpa2V3aXNlIGFsc28gaGUgdGhhdCBpcyBjYWxsZWQsIFtiZWluZ10gZnJlZSwgaXMgQ2hyaXN0J3Mgc2VydmFudC4KWWUgYXJlIGJvdWdodCB3aXRoIGEgcHJpY2U7IGJlIG5vdCB5ZSB0aGUgc2VydmFudHMgb2YgbWVuLgpCcmV0aHJlbiwgbGV0IGV2ZXJ5IG1hbiwgd2hlcmVpbiBoZSBpcyBjYWxsZWQsIHRoZXJlaW4gYWJpZGUgd2l0aCBHb2QuCk5vdyBjb25jZXJuaW5nIHZpcmdpbnMgSSBoYXZlIG5vIGNvbW1hbmRtZW50IG9mIHRoZSBMb3JkOiB5ZXQgSSBnaXZlIG15IGp1ZGdtZW50LCBhcyBvbmUgdGhhdCBoYXRoIG9idGFpbmVkIG1lcmN5IG9mIHRoZSBMb3JkIHRvIGJlIGZhaXRoZnVsLgpJIHN1cHBvc2UgdGhlcmVmb3JlIHRoYXQgdGhpcyBpcyBnb29kIGZvciB0aGUgcHJlc2VudCBkaXN0cmVzcywgW0kgc2F5XSwgdGhhdCBbaXQgaXNdIGdvb2QgZm9yIGEgbWFuIHNvIHRvIGJlLgpBcnQgdGhvdSBib3VuZCB1bnRvIGEgd2lmZT8gc2VlayBub3QgdG8gYmUgbG9vc2VkLiBBcnQgdGhvdSBsb29zZWQgZnJvbSBhIHdpZmU/IHNlZWsgbm90IGEgd2lmZS4KQnV0IGFuZCBpZiB0aG91IG1hcnJ5LCB0aG91IGhhc3Qgbm90IHNpbm5lZDsgYW5kIGlmIGEgdmlyZ2luIG1hcnJ5LCBzaGUgaGF0aCBub3Qgc2lubmVkLiBOZXZlcnRoZWxlc3Mgc3VjaCBzaGFsbCBoYXZlIHRyb3VibGUgaW4gdGhlIGZsZXNoOiBidXQgSSBzcGFyZSB5b3UuCkJ1dCB0aGlzIEkgc2F5LCBicmV0aHJlbiwgdGhlIHRpbWUgW2lzXSBzaG9ydDogaXQgcmVtYWluZXRoLCB0aGF0IGJvdGggdGhleSB0aGF0IGhhdmUgd2l2ZXMgYmUgYXMgdGhvdWdoIHRoZXkgaGFkIG5vbmU7CkFuZCB0aGV5IHRoYXQgd2VlcCwgYXMgdGhvdWdoIHRoZXkgd2VwdCBub3Q7IGFuZCB0aGV5IHRoYXQgcmVqb2ljZSwgYXMgdGhvdWdoIHRoZXkgcmVqb2ljZWQgbm90OyBhbmQgdGhleSB0aGF0IGJ1eSwgYXMgdGhvdWdoIHRoZXkgcG9zc2Vzc2VkIG5vdDsKQW5kIHRoZXkgdGhhdCB1c2UgdGhpcyB3b3JsZCwgYXMgbm90IGFidXNpbmcgW2l0XTogZm9yIHRoZSBmYXNoaW9uIG9mIHRoaXMgd29ybGQgcGFzc2V0aCBhd2F5LgpCdXQgSSB3b3VsZCBoYXZlIHlvdSB3aXRob3V0IGNhcmVmdWxuZXNzLiBIZSB0aGF0IGlzIHVubWFycmllZCBjYXJldGggZm9yIHRoZSB0aGluZ3MgdGhhdCBiZWxvbmcgdG8gdGhlIExvcmQsIGhvdyBoZSBtYXkgcGxlYXNlIHRoZSBMb3JkOgpCdXQgaGUgdGhhdCBpcyBtYXJyaWVkIGNhcmV0aCBmb3IgdGhlIHRoaW5ncyB0aGF0IGFyZSBvZiB0aGUgd29ybGQsIGhvdyBoZSBtYXkgcGxlYXNlIFtoaXNdIHdpZmUuClRoZXJlIGlzIGRpZmZlcmVuY2UgW2Fsc29dIGJldHdlZW4gYSB3aWZlIGFuZCBhIHZpcmdpbi4gVGhlIHVubWFycmllZCB3b21hbiBjYXJldGggZm9yIHRoZSB0aGluZ3Mgb2YgdGhlIExvcmQsIHRoYXQgc2hlIG1heSBiZSBob2x5IGJvdGggaW4gYm9keSBhbmQgaW4gc3Bpcml0OiBidXQgc2hlIHRoYXQgaXMgbWFycmllZCBjYXJldGggZm9yIHRoZSB0aGluZ3Mgb2YgdGhlIHdvcmxkLCBob3cgc2hlIG1heSBwbGVhc2UgW2hlcl0gaHVzYmFuZC4KQW5kIHRoaXMgSSBzcGVhayBmb3IgeW91ciBvd24gcHJvZml0OyBub3QgdGhhdCBJIG1heSBjYXN0IGEgc25hcmUgdXBvbiB5b3UsIGJ1dCBmb3IgdGhhdCB3aGljaCBpcyBjb21lbHksIGFuZCB0aGF0IHllIG1heSBhdHRlbmQgdXBvbiB0aGUgTG9yZCB3aXRob3V0IGRpc3RyYWN0aW9uLgpCdXQgaWYgYW55IG1hbiB0aGluayB0aGF0IGhlIGJlaGF2ZXRoIGhpbXNlbGYgdW5jb21lbHkgdG93YXJkIGhpcyB2aXJnaW4sIGlmIHNoZSBwYXNzIHRoZSBmbG93ZXIgb2YgW2hlcl0gYWdlLCBhbmQgbmVlZCBzbyByZXF1aXJlLCBsZXQgaGltIGRvIHdoYXQgaGUgd2lsbCwgaGUgc2lubmV0aCBub3Q6IGxldCB0aGVtIG1hcnJ5LgpOZXZlcnRoZWxlc3MgaGUgdGhhdCBzdGFuZGV0aCBzdGVkZmFzdCBpbiBoaXMgaGVhcnQsIGhhdmluZyBubyBuZWNlc3NpdHksIGJ1dCBoYXRoIHBvd2VyIG92ZXIgaGlzIG93biB3aWxsLCBhbmQgaGF0aCBzbyBkZWNyZWVkIGluIGhpcyBoZWFydCB0aGF0IGhlIHdpbGwga2VlcCBoaXMgdmlyZ2luLCBkb2V0aCB3ZWxsLgpTbyB0aGVuIGhlIHRoYXQgZ2l2ZXRoIFtoZXJdIGluIG1hcnJpYWdlIGRvZXRoIHdlbGw7IGJ1dCBoZSB0aGF0IGdpdmV0aCBbaGVyXSBub3QgaW4gbWFycmlhZ2UgZG9ldGggYmV0dGVyLgpUaGUgd2lmZSBpcyBib3VuZCBieSB0aGUgbGF3IGFzIGxvbmcgYXMgaGVyIGh1c2JhbmQgbGl2ZXRoOyBidXQgaWYgaGVyIGh1c2JhbmQgYmUgZGVhZCwgc2hlIGlzIGF0IGxpYmVydHkgdG8gYmUgbWFycmllZCB0byB3aG9tIHNoZSB3aWxsOyBvbmx5IGluIHRoZSBMb3JkLgpCdXQgc2hlIGlzIGhhcHBpZXIgaWYgc2hlIHNvIGFiaWRlLCBhZnRlciBteSBqdWRnbWVudDogYW5kIEkgdGhpbmsgYWxzbyB0aGF0IEkgaGF2ZSB0aGUgU3Bpcml0IG9mIEdvZC4KTm93IGFzIHRvdWNoaW5nIHRoaW5ncyBvZmZlcmVkIHVudG8gaWRvbHMsIHdlIGtub3cgdGhhdCB3ZSBhbGwgaGF2ZSBrbm93bGVkZ2UuIEtub3dsZWRnZSBwdWZmZXRoIHVwLCBidXQgY2hhcml0eSBlZGlmaWV0aC4KQW5kIGlmIGFueSBtYW4gdGhpbmsgdGhhdCBoZSBrbm93ZXRoIGFueSB0aGluZywgaGUga25vd2V0aCBub3RoaW5nIHlldCBhcyBoZSBvdWdodCB0byBrbm93LgpCdXQgaWYgYW55IG1hbiBsb3ZlIEdvZCwgdGhlIHNhbWUgaXMga25vd24gb2YgaGltLgpBcyBjb25jZXJuaW5nIHRoZXJlZm9yZSB0aGUgZWF0aW5nIG9mIHRob3NlIHRoaW5ncyB0aGF0IGFyZSBvZmZlcmVkIGluIHNhY3JpZmljZSB1bnRvIGlkb2xzLCB3ZSBrbm93IHRoYXQgYW4gaWRvbCBbaXNdIG5vdGhpbmcgaW4gdGhlIHdvcmxkLCBhbmQgdGhhdCBbdGhlcmUgaXNdIG5vbmUgb3RoZXIgR29kIGJ1dCBvbmUuCkZvciB0aG91Z2ggdGhlcmUgYmUgdGhhdCBhcmUgY2FsbGVkIGdvZHMsIHdoZXRoZXIgaW4gaGVhdmVuIG9yIGluIGVhcnRoLCAoYXMgdGhlcmUgYmUgZ29kcyBtYW55LCBhbmQgbG9yZHMgbWFueSwpCkJ1dCB0byB1cyBbdGhlcmUgaXMgYnV0XSBvbmUgR29kLCB0aGUgRmF0aGVyLCBvZiB3aG9tIFthcmVdIGFsbCB0aGluZ3MsIGFuZCB3ZSBpbiBoaW07IGFuZCBvbmUgTG9yZCBKZXN1cyBDaHJpc3QsIGJ5IHdob20gW2FyZV0gYWxsIHRoaW5ncywgYW5kIHdlIGJ5IGhpbS4KSG93YmVpdCBbdGhlcmUgaXNdIG5vdCBpbiBldmVyeSBtYW4gdGhhdCBrbm93bGVkZ2U6IGZvciBzb21lIHdpdGggY29uc2NpZW5jZSBvZiB0aGUgaWRvbCB1bnRvIHRoaXMgaG91ciBlYXQgW2l0XSBhcyBhIHRoaW5nIG9mZmVyZWQgdW50byBhbiBpZG9sOyBhbmQgdGhlaXIgY29uc2NpZW5jZSBiZWluZyB3ZWFrIGlzIGRlZmlsZWQuCkJ1dCBtZWF0IGNvbW1lbmRldGggdXMgbm90IHRvIEdvZDogZm9yIG5laXRoZXIsIGlmIHdlIGVhdCwgYXJlIHdlIHRoZSBiZXR0ZXI7IG5laXRoZXIsIGlmIHdlIGVhdCBub3QsIGFyZSB3ZSB0aGUgd29yc2UuCkJ1dCB0YWtlIGhlZWQgbGVzdCBieSBhbnkgbWVhbnMgdGhpcyBsaWJlcnR5IG9mIHlvdXJzIGJlY29tZSBhIHN0dW1ibGluZ2Jsb2NrIHRvIHRoZW0gdGhhdCBhcmUgd2Vhay4KRm9yIGlmIGFueSBtYW4gc2VlIHRoZWUgd2hpY2ggaGFzdCBrbm93bGVkZ2Ugc2l0IGF0IG1lYXQgaW4gdGhlIGlkb2wncyB0ZW1wbGUsIHNoYWxsIG5vdCB0aGUgY29uc2NpZW5jZSBvZiBoaW0gd2hpY2ggaXMgd2VhayBiZSBlbWJvbGRlbmVkIHRvIGVhdCB0aG9zZSB0aGluZ3Mgd2hpY2ggYXJlIG9mZmVyZWQgdG8gaWRvbHM7CkFuZCB0aHJvdWdoIHRoeSBrbm93bGVkZ2Ugc2hhbGwgdGhlIHdlYWsgYnJvdGhlciBwZXJpc2gsIGZvciB3aG9tIENocmlzdCBkaWVkPwpCdXQgd2hlbiB5ZSBzaW4gc28gYWdhaW5zdCB0aGUgYnJldGhyZW4sIGFuZCB3b3VuZCB0aGVpciB3ZWFrIGNvbnNjaWVuY2UsIHllIHNpbiBhZ2FpbnN0IENocmlzdC4KV2hlcmVmb3JlLCBpZiBtZWF0IG1ha2UgbXkgYnJvdGhlciB0byBvZmZlbmQsIEkgd2lsbCBlYXQgbm8gZmxlc2ggd2hpbGUgdGhlIHdvcmxkIHN0YW5kZXRoLCBsZXN0IEkgbWFrZSBteSBicm90aGVyIHRvIG9mZmVuZC4KQW0gSSBub3QgYW4gYXBvc3RsZT8gYW0gSSBub3QgZnJlZT8gaGF2ZSBJIG5vdCBzZWVuIEplc3VzIENocmlzdCBvdXIgTG9yZD8gYXJlIG5vdCB5ZSBteSB3b3JrIGluIHRoZSBMb3JkPwpJZiBJIGJlIG5vdCBhbiBhcG9zdGxlIHVudG8gb3RoZXJzLCB5ZXQgZG91YnRsZXNzIEkgYW0gdG8geW91OiBmb3IgdGhlIHNlYWwgb2YgbWluZSBhcG9zdGxlc2hpcCBhcmUgeWUgaW4gdGhlIExvcmQuCk1pbmUgYW5zd2VyIHRvIHRoZW0gdGhhdCBkbyBleGFtaW5lIG1lIGlzIHRoaXMsCkhhdmUgd2Ugbm90IHBvd2VyIHRvIGVhdCBhbmQgdG8gZHJpbms/CkhhdmUgd2Ugbm90IHBvd2VyIHRvIGxlYWQgYWJvdXQgYSBzaXN0ZXIsIGEgd2lmZSwgYXMgd2VsbCBhcyBvdGhlciBhcG9zdGxlcywgYW5kIFthc10gdGhlIGJyZXRocmVuIG9mIHRoZSBMb3JkLCBhbmQgQ2VwaGFzPwpPciBJIG9ubHkgYW5kIEJhcm5hYmFzLCBoYXZlIG5vdCB3ZSBwb3dlciB0byBmb3JiZWFyIHdvcmtpbmc/CldobyBnb2V0aCBhIHdhcmZhcmUgYW55IHRpbWUgYXQgaGlzIG93biBjaGFyZ2VzPyB3aG8gcGxhbnRldGggYSB2aW5leWFyZCwgYW5kIGVhdGV0aCBub3Qgb2YgdGhlIGZydWl0IHRoZXJlb2Y/IG9yIHdobyBmZWVkZXRoIGEgZmxvY2ssIGFuZCBlYXRldGggbm90IG9mIHRoZSBtaWxrIG9mIHRoZSBmbG9jaz8KU2F5IEkgdGhlc2UgdGhpbmdzIGFzIGEgbWFuPyBvciBzYWl0aCBub3QgdGhlIGxhdyB0aGUgc2FtZSBhbHNvPwpGb3IgaXQgaXMgd3JpdHRlbiBpbiB0aGUgbGF3IG9mIE1vc2VzLCBUaG91IHNoYWx0IG5vdCBtdXp6bGUgdGhlIG1vdXRoIG9mIHRoZSBveCB0aGF0IHRyZWFkZXRoIG91dCB0aGUgY29ybi4gRG90aCBHb2QgdGFrZSBjYXJlIGZvciBveGVuPwpPciBzYWl0aCBoZSBbaXRdIGFsdG9nZXRoZXIgZm9yIG91ciBzYWtlcz8gRm9yIG91ciBzYWtlcywgbm8gZG91YnQsIFt0aGlzXSBpcyB3cml0dGVuOiB0aGF0IGhlIHRoYXQgcGxvd2V0aCBzaG91bGQgcGxvdyBpbiBob3BlOyBhbmQgdGhhdCBoZSB0aGF0IHRocmVzaGV0aCBpbiBob3BlIHNob3VsZCBiZSBwYXJ0YWtlciBvZiBoaXMgaG9wZS4KSWYgd2UgaGF2ZSBzb3duIHVudG8geW91IHNwaXJpdHVhbCB0aGluZ3MsIFtpcyBpdF0gYSBncmVhdCB0aGluZyBpZiB3ZSBzaGFsbCByZWFwIHlvdXIgY2FybmFsIHRoaW5ncz8KSWYgb3RoZXJzIGJlIHBhcnRha2VycyBvZiBbdGhpc10gcG93ZXIgb3ZlciB5b3UsIFthcmVdIG5vdCB3ZSByYXRoZXI/IE5ldmVydGhlbGVzcyB3ZSBoYXZlIG5vdCB1c2VkIHRoaXMgcG93ZXI7IGJ1dCBzdWZmZXIgYWxsIHRoaW5ncywgbGVzdCB3ZSBzaG91bGQgaGluZGVyIHRoZSBnb3NwZWwgb2YgQ2hyaXN0LgpEbyB5ZSBub3Qga25vdyB0aGF0IHRoZXkgd2hpY2ggbWluaXN0ZXIgYWJvdXQgaG9seSB0aGluZ3MgbGl2ZSBbb2YgdGhlIHRoaW5nc10gb2YgdGhlIHRlbXBsZT8gYW5kIHRoZXkgd2hpY2ggd2FpdCBhdCB0aGUgYWx0YXIgYXJlIHBhcnRha2VycyB3aXRoIHRoZSBhbHRhcj8KRXZlbiBzbyBoYXRoIHRoZSBMb3JkIG9yZGFpbmVkIHRoYXQgdGhleSB3aGljaCBwcmVhY2ggdGhlIGdvc3BlbCBzaG91bGQgbGl2ZSBvZiB0aGUgZ29zcGVsLgpCdXQgSSBoYXZlIHVzZWQgbm9uZSBvZiB0aGVzZSB0aGluZ3M6IG5laXRoZXIgaGF2ZSBJIHdyaXR0ZW4gdGhlc2UgdGhpbmdzLCB0aGF0IGl0IHNob3VsZCBiZSBzbyBkb25lIHVudG8gbWU6IGZvciBbaXQgd2VyZV0gYmV0dGVyIGZvciBtZSB0byBkaWUsIHRoYW4gdGhhdCBhbnkgbWFuIHNob3VsZCBtYWtlIG15IGdsb3J5aW5nIHZvaWQuCkZvciB0aG91Z2ggSSBwcmVhY2ggdGhlIGdvc3BlbCwgSSBoYXZlIG5vdGhpbmcgdG8gZ2xvcnkgb2Y6IGZvciBuZWNlc3NpdHkgaXMgbGFpZCB1cG9uIG1lOyB5ZWEsIHdvZSBpcyB1bnRvIG1lLCBpZiBJIHByZWFjaCBub3QgdGhlIGdvc3BlbCEKRm9yIGlmIEkgZG8gdGhpcyB0aGluZyB3aWxsaW5nbHksIEkgaGF2ZSBhIHJld2FyZDogYnV0IGlmIGFnYWluc3QgbXkgd2lsbCwgYSBkaXNwZW5zYXRpb24gW29mIHRoZSBnb3NwZWxdIGlzIGNvbW1pdHRlZCB1bnRvIG1lLgpXaGF0IGlzIG15IHJld2FyZCB0aGVuPyBbVmVyaWx5XSB0aGF0LCB3aGVuIEkgcHJlYWNoIHRoZSBnb3NwZWwsIEkgbWF5IG1ha2UgdGhlIGdvc3BlbCBvZiBDaHJpc3Qgd2l0aG91dCBjaGFyZ2UsIHRoYXQgSSBhYnVzZSBub3QgbXkgcG93ZXIgaW4gdGhlIGdvc3BlbC4KRm9yIHRob3VnaCBJIGJlIGZyZWUgZnJvbSBhbGwgW21lbl0sIHlldCBoYXZlIEkgbWFkZSBteXNlbGYgc2VydmFudCB1bnRvIGFsbCwgdGhhdCBJIG1pZ2h0IGdhaW4gdGhlIG1vcmUuCkFuZCB1bnRvIHRoZSBKZXdzIEkgYmVjYW1lIGFzIGEgSmV3LCB0aGF0IEkgbWlnaHQgZ2FpbiB0aGUgSmV3czsgdG8gdGhlbSB0aGF0IGFyZSB1bmRlciB0aGUgbGF3LCBhcyB1bmRlciB0aGUgbGF3LCB0aGF0IEkgbWlnaHQgZ2FpbiB0aGVtIHRoYXQgYXJlIHVuZGVyIHRoZSBsYXc7ClRvIHRoZW0gdGhhdCBhcmUgd2l0aG91dCBsYXcsIGFzIHdpdGhvdXQgbGF3LCAoYmVpbmcgbm90IHdpdGhvdXQgbGF3IHRvIEdvZCwgYnV0IHVuZGVyIHRoZSBsYXcgdG8gQ2hyaXN0LCkgdGhhdCBJIG1pZ2h0IGdhaW4gdGhlbSB0aGF0IGFyZSB3aXRob3V0IGxhdy4KVG8gdGhlIHdlYWsgYmVjYW1lIEkgYXMgd2VhaywgdGhhdCBJIG1pZ2h0IGdhaW4gdGhlIHdlYWs6IEkgYW0gbWFkZSBhbGwgdGhpbmdzIHRvIGFsbCBbbWVuXSwgdGhhdCBJIG1pZ2h0IGJ5IGFsbCBtZWFucyBzYXZlIHNvbWUuCkFuZCB0aGlzIEkgZG8gZm9yIHRoZSBnb3NwZWwncyBzYWtlLCB0aGF0IEkgbWlnaHQgYmUgcGFydGFrZXIgdGhlcmVvZiB3aXRoIFt5b3VdLgpLbm93IHllIG5vdCB0aGF0IHRoZXkgd2hpY2ggcnVuIGluIGEgcmFjZSBydW4gYWxsLCBidXQgb25lIHJlY2VpdmV0aCB0aGUgcHJpemU/IFNvIHJ1biwgdGhhdCB5ZSBtYXkgb2J0YWluLgpBbmQgZXZlcnkgbWFuIHRoYXQgc3RyaXZldGggZm9yIHRoZSBtYXN0ZXJ5IGlzIHRlbXBlcmF0ZSBpbiBhbGwgdGhpbmdzLiBOb3cgdGhleSBbZG8gaXRdIHRvIG9idGFpbiBhIGNvcnJ1cHRpYmxlIGNyb3duOyBidXQgd2UgYW4gaW5jb3JydXB0aWJsZS4KSSB0aGVyZWZvcmUgc28gcnVuLCBub3QgYXMgdW5jZXJ0YWlubHk7IHNvIGZpZ2h0IEksIG5vdCBhcyBvbmUgdGhhdCBiZWF0ZXRoIHRoZSBhaXI6CkJ1dCBJIGtlZXAgdW5kZXIgbXkgYm9keSwgYW5kIGJyaW5nIFtpdF0gaW50byBzdWJqZWN0aW9uOiBsZXN0IHRoYXQgYnkgYW55IG1lYW5zLCB3aGVuIEkgaGF2ZSBwcmVhY2hlZCB0byBvdGhlcnMsIEkgbXlzZWxmIHNob3VsZCBiZSBhIGNhc3Rhd2F5LgpNb3Jlb3ZlciwgYnJldGhyZW4sIEkgd291bGQgbm90IHRoYXQgeWUgc2hvdWxkIGJlIGlnbm9yYW50LCBob3cgdGhhdCBhbGwgb3VyIGZhdGhlcnMgd2VyZSB1bmRlciB0aGUgY2xvdWQsIGFuZCBhbGwgcGFzc2VkIHRocm91Z2ggdGhlIHNlYTsKQW5kIHdlcmUgYWxsIGJhcHRpemVkIHVudG8gTW9zZXMgaW4gdGhlIGNsb3VkIGFuZCBpbiB0aGUgc2VhOwpBbmQgZGlkIGFsbCBlYXQgdGhlIHNhbWUgc3Bpcml0dWFsIG1lYXQ7CkFuZCBkaWQgYWxsIGRyaW5rIHRoZSBzYW1lIHNwaXJpdHVhbCBkcmluazogZm9yIHRoZXkgZHJhbmsgb2YgdGhhdCBzcGlyaXR1YWwgUm9jayB0aGF0IGZvbGxvd2VkIHRoZW06IGFuZCB0aGF0IFJvY2sgd2FzIENocmlzdC4KQnV0IHdpdGggbWFueSBvZiB0aGVtIEdvZCB3YXMgbm90IHdlbGwgcGxlYXNlZDogZm9yIHRoZXkgd2VyZSBvdmVydGhyb3duIGluIHRoZSB3aWxkZXJuZXNzLgpOb3cgdGhlc2UgdGhpbmdzIHdlcmUgb3VyIGV4YW1wbGVzLCB0byB0aGUgaW50ZW50IHdlIHNob3VsZCBub3QgbHVzdCBhZnRlciBldmlsIHRoaW5ncywgYXMgdGhleSBhbHNvIGx1c3RlZC4KTmVpdGhlciBiZSB5ZSBpZG9sYXRlcnMsIGFzIFt3ZXJlXSBzb21lIG9mIHRoZW07IGFzIGl0IGlzIHdyaXR0ZW4sIFRoZSBwZW9wbGUgc2F0IGRvd24gdG8gZWF0IGFuZCBkcmluaywgYW5kIHJvc2UgdXAgdG8gcGxheS4KTmVpdGhlciBsZXQgdXMgY29tbWl0IGZvcm5pY2F0aW9uLCBhcyBzb21lIG9mIHRoZW0gY29tbWl0dGVkLCBhbmQgZmVsbCBpbiBvbmUgZGF5IHRocmVlIGFuZCB0d2VudHkgdGhvdXNhbmQuCk5laXRoZXIgbGV0IHVzIHRlbXB0IENocmlzdCwgYXMgc29tZSBvZiB0aGVtIGFsc28gdGVtcHRlZCwgYW5kIHdlcmUgZGVzdHJveWVkIG9mIHNlcnBlbnRzLgpOZWl0aGVyIG11cm11ciB5ZSwgYXMgc29tZSBvZiB0aGVtIGFsc28gbXVybXVyZWQsIGFuZCB3ZXJlIGRlc3Ryb3llZCBvZiB0aGUgZGVzdHJveWVyLgpOb3cgYWxsIHRoZXNlIHRoaW5ncyBoYXBwZW5lZCB1bnRvIHRoZW0gZm9yIGVuc2FtcGxlczogYW5kIHRoZXkgYXJlIHdyaXR0ZW4gZm9yIG91ciBhZG1vbml0aW9uLCB1cG9uIHdob20gdGhlIGVuZHMgb2YgdGhlIHdvcmxkIGFyZSBjb21lLgpXaGVyZWZvcmUgbGV0IGhpbSB0aGF0IHRoaW5rZXRoIGhlIHN0YW5kZXRoIHRha2UgaGVlZCBsZXN0IGhlIGZhbGwuClRoZXJlIGhhdGggbm8gdGVtcHRhdGlvbiB0YWtlbiB5b3UgYnV0IHN1Y2ggYXMgaXMgY29tbW9uIHRvIG1hbjogYnV0IEdvZCBbaXNdIGZhaXRoZnVsLCB3aG8gd2lsbCBub3Qgc3VmZmVyIHlvdSB0byBiZSB0ZW1wdGVkIGFib3ZlIHRoYXQgeWUgYXJlIGFibGU7IGJ1dCB3aWxsIHdpdGggdGhlIHRlbXB0YXRpb24gYWxzbyBtYWtlIGEgd2F5IHRvIGVzY2FwZSwgdGhhdCB5ZSBtYXkgYmUgYWJsZSB0byBiZWFyIFtpdF0uCldoZXJlZm9yZSwgbXkgZGVhcmx5IGJlbG92ZWQsIGZsZWUgZnJvbSBpZG9sYXRyeS4KSSBzcGVhayBhcyB0byB3aXNlIG1lbjsganVkZ2UgeWUgd2hhdCBJIHNheS4KVGhlIGN1cCBvZiBibGVzc2luZyB3aGljaCB3ZSBibGVzcywgaXMgaXQgbm90IHRoZSBjb21tdW5pb24gb2YgdGhlIGJsb29kIG9mIENocmlzdD8gVGhlIGJyZWFkIHdoaWNoIHdlIGJyZWFrLCBpcyBpdCBub3QgdGhlIGNvbW11bmlvbiBvZiB0aGUgYm9keSBvZiBDaHJpc3Q/CkZvciB3ZSBbYmVpbmddIG1hbnkgYXJlIG9uZSBicmVhZCwgW2FuZF0gb25lIGJvZHk6IGZvciB3ZSBhcmUgYWxsIHBhcnRha2VycyBvZiB0aGF0IG9uZSBicmVhZC4KQmVob2xkIElzcmFlbCBhZnRlciB0aGUgZmxlc2g6IGFyZSBub3QgdGhleSB3aGljaCBlYXQgb2YgdGhlIHNhY3JpZmljZXMgcGFydGFrZXJzIG9mIHRoZSBhbHRhcj8KV2hhdCBzYXkgSSB0aGVuPyB0aGF0IHRoZSBpZG9sIGlzIGFueSB0aGluZywgb3IgdGhhdCB3aGljaCBpcyBvZmZlcmVkIGluIHNhY3JpZmljZSB0byBpZG9scyBpcyBhbnkgdGhpbmc/CkJ1dCBJIFtzYXldLCB0aGF0IHRoZSB0aGluZ3Mgd2hpY2ggdGhlIEdlbnRpbGVzIHNhY3JpZmljZSwgdGhleSBzYWNyaWZpY2UgdG8gZGV2aWxzLCBhbmQgbm90IHRvIEdvZDogYW5kIEkgd291bGQgbm90IHRoYXQgeWUgc2hvdWxkIGhhdmUgZmVsbG93c2hpcCB3aXRoIGRldmlscy4KWWUgY2Fubm90IGRyaW5rIHRoZSBjdXAgb2YgdGhlIExvcmQsIGFuZCB0aGUgY3VwIG9mIGRldmlsczogeWUgY2Fubm90IGJlIHBhcnRha2VycyBvZiB0aGUgTG9yZCdzIHRhYmxlLCBhbmQgb2YgdGhlIHRhYmxlIG9mIGRldmlscy4KRG8gd2UgcHJvdm9rZSB0aGUgTG9yZCB0byBqZWFsb3VzeT8gYXJlIHdlIHN0cm9uZ2VyIHRoYW4gaGU/CkFsbCB0aGluZ3MgYXJlIGxhd2Z1bCBmb3IgbWUsIGJ1dCBhbGwgdGhpbmdzIGFyZSBub3QgZXhwZWRpZW50OiBhbGwgdGhpbmdzIGFyZSBsYXdmdWwgZm9yIG1lLCBidXQgYWxsIHRoaW5ncyBlZGlmeSBub3QuCkxldCBubyBtYW4gc2VlayBoaXMgb3duLCBidXQgZXZlcnkgbWFuIGFub3RoZXIncyBbd2VhbHRoXS4KV2hhdHNvZXZlciBpcyBzb2xkIGluIHRoZSBzaGFtYmxlcywgW3RoYXRdIGVhdCwgYXNraW5nIG5vIHF1ZXN0aW9uIGZvciBjb25zY2llbmNlIHNha2U6CkZvciB0aGUgZWFydGggW2lzXSB0aGUgTG9yZCdzLCBhbmQgdGhlIGZ1bG5lc3MgdGhlcmVvZi4KSWYgYW55IG9mIHRoZW0gdGhhdCBiZWxpZXZlIG5vdCBiaWQgeW91IFt0byBhIGZlYXN0XSwgYW5kIHllIGJlIGRpc3Bvc2VkIHRvIGdvOyB3aGF0c29ldmVyIGlzIHNldCBiZWZvcmUgeW91LCBlYXQsIGFza2luZyBubyBxdWVzdGlvbiBmb3IgY29uc2NpZW5jZSBzYWtlLgpCdXQgaWYgYW55IG1hbiBzYXkgdW50byB5b3UsIFRoaXMgaXMgb2ZmZXJlZCBpbiBzYWNyaWZpY2UgdW50byBpZG9scywgZWF0IG5vdCBmb3IgaGlzIHNha2UgdGhhdCBzaG93ZWQgaXQsIGFuZCBmb3IgY29uc2NpZW5jZSBzYWtlOiBmb3IgdGhlIGVhcnRoIFtpc10gdGhlIExvcmQncywgYW5kIHRoZSBmdWxuZXNzIHRoZXJlb2Y6CkNvbnNjaWVuY2UsIEkgc2F5LCBub3QgdGhpbmUgb3duLCBidXQgb2YgdGhlIG90aGVyOiBmb3Igd2h5IGlzIG15IGxpYmVydHkganVkZ2VkIG9mIGFub3RoZXIgW21hbidzXSBjb25zY2llbmNlPwpGb3IgaWYgSSBieSBncmFjZSBiZSBhIHBhcnRha2VyLCB3aHkgYW0gSSBldmlsIHNwb2tlbiBvZiBmb3IgdGhhdCBmb3Igd2hpY2ggSSBnaXZlIHRoYW5rcz8KV2hldGhlciB0aGVyZWZvcmUgeWUgZWF0LCBvciBkcmluaywgb3Igd2hhdHNvZXZlciB5ZSBkbywgZG8gYWxsIHRvIHRoZSBnbG9yeSBvZiBHb2QuCkdpdmUgbm9uZSBvZmZlbmNlLCBuZWl0aGVyIHRvIHRoZSBKZXdzLCBub3IgdG8gdGhlIEdlbnRpbGVzLCBub3IgdG8gdGhlIGNodXJjaCBvZiBHb2Q6CkV2ZW4gYXMgSSBwbGVhc2UgYWxsIFttZW5dIGluIGFsbCBbdGhpbmdzXSwgbm90IHNlZWtpbmcgbWluZSBvd24gcHJvZml0LCBidXQgdGhlIFtwcm9maXRdIG9mIG1hbnksIHRoYXQgdGhleSBtYXkgYmUgc2F2ZWQuCkJlIHllIGZvbGxvd2VycyBvZiBtZSwgZXZlbiBhcyBJIGFsc28gW2FtXSBvZiBDaHJpc3QuCk5vdyBJIHByYWlzZSB5b3UsIGJyZXRocmVuLCB0aGF0IHllIHJlbWVtYmVyIG1lIGluIGFsbCB0aGluZ3MsIGFuZCBrZWVwIHRoZSBvcmRpbmFuY2VzLCBhcyBJIGRlbGl2ZXJlZCBbdGhlbV0gdG8geW91LgpCdXQgSSB3b3VsZCBoYXZlIHlvdSBrbm93LCB0aGF0IHRoZSBoZWFkIG9mIGV2ZXJ5IG1hbiBpcyBDaHJpc3Q7IGFuZCB0aGUgaGVhZCBvZiB0aGUgd29tYW4gW2lzXSB0aGUgbWFuOyBhbmQgdGhlIGhlYWQgb2YgQ2hyaXN0IFtpc10gR29kLgpFdmVyeSBtYW4gcHJheWluZyBvciBwcm9waGVzeWluZywgaGF2aW5nIFtoaXNdIGhlYWQgY292ZXJlZCwgZGlzaG9ub3VyZXRoIGhpcyBoZWFkLgpCdXQgZXZlcnkgd29tYW4gdGhhdCBwcmF5ZXRoIG9yIHByb3BoZXNpZXRoIHdpdGggW2hlcl0gaGVhZCB1bmNvdmVyZWQgZGlzaG9ub3VyZXRoIGhlciBoZWFkOiBmb3IgdGhhdCBpcyBldmVuIGFsbCBvbmUgYXMgaWYgc2hlIHdlcmUgc2hhdmVuLgpGb3IgaWYgdGhlIHdvbWFuIGJlIG5vdCBjb3ZlcmVkLCBsZXQgaGVyIGFsc28gYmUgc2hvcm46IGJ1dCBpZiBpdCBiZSBhIHNoYW1lIGZvciBhIHdvbWFuIHRvIGJlIHNob3JuIG9yIHNoYXZlbiwgbGV0IGhlciBiZSBjb3ZlcmVkLgpGb3IgYSBtYW4gaW5kZWVkIG91Z2h0IG5vdCB0byBjb3ZlciBbaGlzXSBoZWFkLCBmb3Jhc211Y2ggYXMgaGUgaXMgdGhlIGltYWdlIGFuZCBnbG9yeSBvZiBHb2Q6IGJ1dCB0aGUgd29tYW4gaXMgdGhlIGdsb3J5IG9mIHRoZSBtYW4uCkZvciB0aGUgbWFuIGlzIG5vdCBvZiB0aGUgd29tYW47IGJ1dCB0aGUgd29tYW4gb2YgdGhlIG1hbi4KTmVpdGhlciB3YXMgdGhlIG1hbiBjcmVhdGVkIGZvciB0aGUgd29tYW47IGJ1dCB0aGUgd29tYW4gZm9yIHRoZSBtYW4uCkZvciB0aGlzIGNhdXNlIG91Z2h0IHRoZSB3b21hbiB0byBoYXZlIHBvd2VyIG9uIFtoZXJdIGhlYWQgYmVjYXVzZSBvZiB0aGUgYW5nZWxzLgpOZXZlcnRoZWxlc3MgbmVpdGhlciBpcyB0aGUgbWFuIHdpdGhvdXQgdGhlIHdvbWFuLCBuZWl0aGVyIHRoZSB3b21hbiB3aXRob3V0IHRoZSBtYW4sIGluIHRoZSBMb3JkLgpGb3IgYXMgdGhlIHdvbWFuIFtpc10gb2YgdGhlIG1hbiwgZXZlbiBzbyBbaXNdIHRoZSBtYW4gYWxzbyBieSB0aGUgd29tYW47IGJ1dCBhbGwgdGhpbmdzIG9mIEdvZC4KSnVkZ2UgaW4geW91cnNlbHZlczogaXMgaXQgY29tZWx5IHRoYXQgYSB3b21hbiBwcmF5IHVudG8gR29kIHVuY292ZXJlZD8KRG90aCBub3QgZXZlbiBuYXR1cmUgaXRzZWxmIHRlYWNoIHlvdSwgdGhhdCwgaWYgYSBtYW4gaGF2ZSBsb25nIGhhaXIsIGl0IGlzIGEgc2hhbWUgdW50byBoaW0/CkJ1dCBpZiBhIHdvbWFuIGhhdmUgbG9uZyBoYWlyLCBpdCBpcyBhIGdsb3J5IHRvIGhlcjogZm9yIFtoZXJdIGhhaXIgaXMgZ2l2ZW4gaGVyIGZvciBhIGNvdmVyaW5nLgpCdXQgaWYgYW55IG1hbiBzZWVtIHRvIGJlIGNvbnRlbnRpb3VzLCB3ZSBoYXZlIG5vIHN1Y2ggY3VzdG9tLCBuZWl0aGVyIHRoZSBjaHVyY2hlcyBvZiBHb2QuCk5vdyBpbiB0aGlzIHRoYXQgSSBkZWNsYXJlIFt1bnRvIHlvdV0gSSBwcmFpc2UgW3lvdV0gbm90LCB0aGF0IHllIGNvbWUgdG9nZXRoZXIgbm90IGZvciB0aGUgYmV0dGVyLCBidXQgZm9yIHRoZSB3b3JzZS4KRm9yIGZpcnN0IG9mIGFsbCwgd2hlbiB5ZSBjb21lIHRvZ2V0aGVyIGluIHRoZSBjaHVyY2gsIEkgaGVhciB0aGF0IHRoZXJlIGJlIGRpdmlzaW9ucyBhbW9uZyB5b3U7IGFuZCBJIHBhcnRseSBiZWxpZXZlIGl0LgpGb3IgdGhlcmUgbXVzdCBiZSBhbHNvIGhlcmVzaWVzIGFtb25nIHlvdSwgdGhhdCB0aGV5IHdoaWNoIGFyZSBhcHByb3ZlZCBtYXkgYmUgbWFkZSBtYW5pZmVzdCBhbW9uZyB5b3UuCldoZW4geWUgY29tZSB0b2dldGhlciB0aGVyZWZvcmUgaW50byBvbmUgcGxhY2UsIFt0aGlzXSBpcyBub3QgdG8gZWF0IHRoZSBMb3JkJ3Mgc3VwcGVyLgpGb3IgaW4gZWF0aW5nIGV2ZXJ5IG9uZSB0YWtldGggYmVmb3JlIFtvdGhlcl0gaGlzIG93biBzdXBwZXI6IGFuZCBvbmUgaXMgaHVuZ3J5LCBhbmQgYW5vdGhlciBpcyBkcnVua2VuLgpXaGF0PyBoYXZlIHllIG5vdCBob3VzZXMgdG8gZWF0IGFuZCB0byBkcmluayBpbj8gb3IgZGVzcGlzZSB5ZSB0aGUgY2h1cmNoIG9mIEdvZCwgYW5kIHNoYW1lIHRoZW0gdGhhdCBoYXZlIG5vdD8gV2hhdCBzaGFsbCBJIHNheSB0byB5b3U/IHNoYWxsIEkgcHJhaXNlIHlvdSBpbiB0aGlzPyBJIHByYWlzZSBbeW91XSBub3QuCkZvciBJIGhhdmUgcmVjZWl2ZWQgb2YgdGhlIExvcmQgdGhhdCB3aGljaCBhbHNvIEkgZGVsaXZlcmVkIHVudG8geW91LCBUaGF0IHRoZSBMb3JkIEplc3VzIHRoZSBbc2FtZV0gbmlnaHQgaW4gd2hpY2ggaGUgd2FzIGJldHJheWVkIHRvb2sgYnJlYWQ6CkFuZCB3aGVuIGhlIGhhZCBnaXZlbiB0aGFua3MsIGhlIGJyYWtlIFtpdF0sIGFuZCBzYWlkLCBUYWtlLCBlYXQ6IHRoaXMgaXMgbXkgYm9keSwgd2hpY2ggaXMgYnJva2VuIGZvciB5b3U6IHRoaXMgZG8gaW4gcmVtZW1icmFuY2Ugb2YgbWUuCkFmdGVyIHRoZSBzYW1lIG1hbm5lciBhbHNvIFtoZSB0b29rXSB0aGUgY3VwLCB3aGVuIGhlIGhhZCBzdXBwZWQsIHNheWluZywgVGhpcyBjdXAgaXMgdGhlIG5ldyB0ZXN0YW1lbnQgaW4gbXkgYmxvb2Q6IHRoaXMgZG8geWUsIGFzIG9mdCBhcyB5ZSBkcmluayBbaXRdLCBpbiByZW1lbWJyYW5jZSBvZiBtZS4KRm9yIGFzIG9mdGVuIGFzIHllIGVhdCB0aGlzIGJyZWFkLCBhbmQgZHJpbmsgdGhpcyBjdXAsIHllIGRvIHNob3cgdGhlIExvcmQncyBkZWF0aCB0aWxsIGhlIGNvbWUuCldoZXJlZm9yZSB3aG9zb2V2ZXIgc2hhbGwgZWF0IHRoaXMgYnJlYWQsIGFuZCBkcmluayBbdGhpc10gY3VwIG9mIHRoZSBMb3JkLCB1bndvcnRoaWx5LCBzaGFsbCBiZSBndWlsdHkgb2YgdGhlIGJvZHkgYW5kIGJsb29kIG9mIHRoZSBMb3JkLgpCdXQgbGV0IGEgbWFuIGV4YW1pbmUgaGltc2VsZiwgYW5kIHNvIGxldCBoaW0gZWF0IG9mIFt0aGF0XSBicmVhZCwgYW5kIGRyaW5rIG9mIFt0aGF0XSBjdXAuCkZvciBoZSB0aGF0IGVhdGV0aCBhbmQgZHJpbmtldGggdW53b3J0aGlseSwgZWF0ZXRoIGFuZCBkcmlua2V0aCBkYW1uYXRpb24gdG8gaGltc2VsZiwgbm90IGRpc2Nlcm5pbmcgdGhlIExvcmQncyBib2R5LgpGb3IgdGhpcyBjYXVzZSBtYW55IFthcmVdIHdlYWsgYW5kIHNpY2tseSBhbW9uZyB5b3UsIGFuZCBtYW55IHNsZWVwLgpGb3IgaWYgd2Ugd291bGQganVkZ2Ugb3Vyc2VsdmVzLCB3ZSBzaG91bGQgbm90IGJlIGp1ZGdlZC4KQnV0IHdoZW4gd2UgYXJlIGp1ZGdlZCwgd2UgYXJlIGNoYXN0ZW5lZCBvZiB0aGUgTG9yZCwgdGhhdCB3ZSBzaG91bGQgbm90IGJlIGNvbmRlbW5lZCB3aXRoIHRoZSB3b3JsZC4KV2hlcmVmb3JlLCBteSBicmV0aHJlbiwgd2hlbiB5ZSBjb21lIHRvZ2V0aGVyIHRvIGVhdCwgdGFycnkgb25lIGZvciBhbm90aGVyLgpBbmQgaWYgYW55IG1hbiBodW5nZXIsIGxldCBoaW0gZWF0IGF0IGhvbWU7IHRoYXQgeWUgY29tZSBub3QgdG9nZXRoZXIgdW50byBjb25kZW1uYXRpb24uIEFuZCB0aGUgcmVzdCB3aWxsIEkgc2V0IGluIG9yZGVyIHdoZW4gSSBjb21lLgpOb3cgY29uY2VybmluZyBzcGlyaXR1YWwgW2dpZnRzXSwgYnJldGhyZW4sIEkgd291bGQgbm90IGhhdmUgeW91IGlnbm9yYW50LgpZZSBrbm93IHRoYXQgeWUgd2VyZSBHZW50aWxlcywgY2FycmllZCBhd2F5IHVudG8gdGhlc2UgZHVtYiBpZG9scywgZXZlbiBhcyB5ZSB3ZXJlIGxlZC4KV2hlcmVmb3JlIEkgZ2l2ZSB5b3UgdG8gdW5kZXJzdGFuZCwgdGhhdCBubyBtYW4gc3BlYWtpbmcgYnkgdGhlIFNwaXJpdCBvZiBHb2QgY2FsbGV0aCBKZXN1cyBhY2N1cnNlZDogYW5kIFt0aGF0XSBubyBtYW4gY2FuIHNheSB0aGF0IEplc3VzIGlzIHRoZSBMb3JkLCBidXQgYnkgdGhlIEhvbHkgR2hvc3QuCk5vdyB0aGVyZSBhcmUgZGl2ZXJzaXRpZXMgb2YgZ2lmdHMsIGJ1dCB0aGUgc2FtZSBTcGlyaXQuCkFuZCB0aGVyZSBhcmUgZGlmZmVyZW5jZXMgb2YgYWRtaW5pc3RyYXRpb25zLCBidXQgdGhlIHNhbWUgTG9yZC4KQW5kIHRoZXJlIGFyZSBkaXZlcnNpdGllcyBvZiBvcGVyYXRpb25zLCBidXQgaXQgaXMgdGhlIHNhbWUgR29kIHdoaWNoIHdvcmtldGggYWxsIGluIGFsbC4KQnV0IHRoZSBtYW5pZmVzdGF0aW9uIG9mIHRoZSBTcGlyaXQgaXMgZ2l2ZW4gdG8gZXZlcnkgbWFuIHRvIHByb2ZpdCB3aXRoYWwuCkZvciB0byBvbmUgaXMgZ2l2ZW4gYnkgdGhlIFNwaXJpdCB0aGUgd29yZCBvZiB3aXNkb207IHRvIGFub3RoZXIgdGhlIHdvcmQgb2Yga25vd2xlZGdlIGJ5IHRoZSBzYW1lIFNwaXJpdDsKVG8gYW5vdGhlciBmYWl0aCBieSB0aGUgc2FtZSBTcGlyaXQ7IHRvIGFub3RoZXIgdGhlIGdpZnRzIG9mIGhlYWxpbmcgYnkgdGhlIHNhbWUgU3Bpcml0OwpUbyBhbm90aGVyIHRoZSB3b3JraW5nIG9mIG1pcmFjbGVzOyB0byBhbm90aGVyIHByb3BoZWN5OyB0byBhbm90aGVyIGRpc2Nlcm5pbmcgb2Ygc3Bpcml0czsgdG8gYW5vdGhlciBbZGl2ZXJzXSBraW5kcyBvZiB0b25ndWVzOyB0byBhbm90aGVyIHRoZSBpbnRlcnByZXRhdGlvbiBvZiB0b25ndWVzOgpCdXQgYWxsIHRoZXNlIHdvcmtldGggdGhhdCBvbmUgYW5kIHRoZSBzZWxmc2FtZSBTcGlyaXQsIGRpdmlkaW5nIHRvIGV2ZXJ5IG1hbiBzZXZlcmFsbHkgYXMgaGUgd2lsbC4KRm9yIGFzIHRoZSBib2R5IGlzIG9uZSwgYW5kIGhhdGggbWFueSBtZW1iZXJzLCBhbmQgYWxsIHRoZSBtZW1iZXJzIG9mIHRoYXQgb25lIGJvZHksIGJlaW5nIG1hbnksIGFyZSBvbmUgYm9keTogc28gYWxzbyBbaXNdIENocmlzdC4KRm9yIGJ5IG9uZSBTcGlyaXQgYXJlIHdlIGFsbCBiYXB0aXplZCBpbnRvIG9uZSBib2R5LCB3aGV0aGVyIFt3ZSBiZV0gSmV3cyBvciBHZW50aWxlcywgd2hldGhlciBbd2UgYmVdIGJvbmQgb3IgZnJlZTsgYW5kIGhhdmUgYmVlbiBhbGwgbWFkZSB0byBkcmluayBpbnRvIG9uZSBTcGlyaXQuCkZvciB0aGUgYm9keSBpcyBub3Qgb25lIG1lbWJlciwgYnV0IG1hbnkuCklmIHRoZSBmb290IHNoYWxsIHNheSwgQmVjYXVzZSBJIGFtIG5vdCB0aGUgaGFuZCwgSSBhbSBub3Qgb2YgdGhlIGJvZHk7IGlzIGl0IHRoZXJlZm9yZSBub3Qgb2YgdGhlIGJvZHk/CkFuZCBpZiB0aGUgZWFyIHNoYWxsIHNheSwgQmVjYXVzZSBJIGFtIG5vdCB0aGUgZXllLCBJIGFtIG5vdCBvZiB0aGUgYm9keTsgaXMgaXQgdGhlcmVmb3JlIG5vdCBvZiB0aGUgYm9keT8KSWYgdGhlIHdob2xlIGJvZHkgW3dlcmVdIGFuIGV5ZSwgd2hlcmUgW3dlcmVdIHRoZSBoZWFyaW5nPyBJZiB0aGUgd2hvbGUgW3dlcmVdIGhlYXJpbmcsIHdoZXJlIFt3ZXJlXSB0aGUgc21lbGxpbmc/CkJ1dCBub3cgaGF0aCBHb2Qgc2V0IHRoZSBtZW1iZXJzIGV2ZXJ5IG9uZSBvZiB0aGVtIGluIHRoZSBib2R5LCBhcyBpdCBoYXRoIHBsZWFzZWQgaGltLgpBbmQgaWYgdGhleSB3ZXJlIGFsbCBvbmUgbWVtYmVyLCB3aGVyZSBbd2VyZV0gdGhlIGJvZHk/CkJ1dCBub3cgW2FyZSB0aGV5XSBtYW55IG1lbWJlcnMsIHlldCBidXQgb25lIGJvZHkuCkFuZCB0aGUgZXllIGNhbm5vdCBzYXkgdW50byB0aGUgaGFuZCwgSSBoYXZlIG5vIG5lZWQgb2YgdGhlZTogbm9yIGFnYWluIHRoZSBoZWFkIHRvIHRoZSBmZWV0LCBJIGhhdmUgbm8gbmVlZCBvZiB5b3UuCk5heSwgbXVjaCBtb3JlIHRob3NlIG1lbWJlcnMgb2YgdGhlIGJvZHksIHdoaWNoIHNlZW0gdG8gYmUgbW9yZSBmZWVibGUsIGFyZSBuZWNlc3Nhcnk6CkFuZCB0aG9zZSBbbWVtYmVyc10gb2YgdGhlIGJvZHksIHdoaWNoIHdlIHRoaW5rIHRvIGJlIGxlc3MgaG9ub3VyYWJsZSwgdXBvbiB0aGVzZSB3ZSBiZXN0b3cgbW9yZSBhYnVuZGFudCBob25vdXI7IGFuZCBvdXIgdW5jb21lbHkgW3BhcnRzXSBoYXZlIG1vcmUgYWJ1bmRhbnQgY29tZWxpbmVzcy4KRm9yIG91ciBjb21lbHkgW3BhcnRzXSBoYXZlIG5vIG5lZWQ6IGJ1dCBHb2QgaGF0aCB0ZW1wZXJlZCB0aGUgYm9keSB0b2dldGhlciwgaGF2aW5nIGdpdmVuIG1vcmUgYWJ1bmRhbnQgaG9ub3VyIHRvIHRoYXQgW3BhcnRdIHdoaWNoIGxhY2tlZDoKVGhhdCB0aGVyZSBzaG91bGQgYmUgbm8gc2NoaXNtIGluIHRoZSBib2R5OyBidXQgW3RoYXRdIHRoZSBtZW1iZXJzIHNob3VsZCBoYXZlIHRoZSBzYW1lIGNhcmUgb25lIGZvciBhbm90aGVyLgpBbmQgd2hldGhlciBvbmUgbWVtYmVyIHN1ZmZlciwgYWxsIHRoZSBtZW1iZXJzIHN1ZmZlciB3aXRoIGl0OyBvciBvbmUgbWVtYmVyIGJlIGhvbm91cmVkLCBhbGwgdGhlIG1lbWJlcnMgcmVqb2ljZSB3aXRoIGl0LgpOb3cgeWUgYXJlIHRoZSBib2R5IG9mIENocmlzdCwgYW5kIG1lbWJlcnMgaW4gcGFydGljdWxhci4KQW5kIEdvZCBoYXRoIHNldCBzb21lIGluIHRoZSBjaHVyY2gsIGZpcnN0IGFwb3N0bGVzLCBzZWNvbmRhcmlseSBwcm9waGV0cywgdGhpcmRseSB0ZWFjaGVycywgYWZ0ZXIgdGhhdCBtaXJhY2xlcywgdGhlbiBnaWZ0cyBvZiBoZWFsaW5ncywgaGVscHMsIGdvdmVybm1lbnRzLCBkaXZlcnNpdGllcyBvZiB0b25ndWVzLgpbQXJlXSBhbGwgYXBvc3RsZXM/IFthcmVdIGFsbCBwcm9waGV0cz8gW2FyZV0gYWxsIHRlYWNoZXJzPyBbYXJlXSBhbGwgd29ya2VycyBvZiBtaXJhY2xlcz8KSGF2ZSBhbGwgdGhlIGdpZnRzIG9mIGhlYWxpbmc/IGRvIGFsbCBzcGVhayB3aXRoIHRvbmd1ZXM/IGRvIGFsbCBpbnRlcnByZXQ/CkJ1dCBjb3ZldCBlYXJuZXN0bHkgdGhlIGJlc3QgZ2lmdHM6IGFuZCB5ZXQgc2hvdyBJIHVudG8geW91IGEgbW9yZSBleGNlbGxlbnQgd2F5LgpUaG91Z2ggSSBzcGVhayB3aXRoIHRoZSB0b25ndWVzIG9mIG1lbiBhbmQgb2YgYW5nZWxzLCBhbmQgaGF2ZSBub3QgY2hhcml0eSwgSSBhbSBiZWNvbWUgW2FzXSBzb3VuZGluZyBicmFzcywgb3IgYSB0aW5rbGluZyBjeW1iYWwuCkFuZCB0aG91Z2ggSSBoYXZlIFt0aGUgZ2lmdCBvZl0gcHJvcGhlY3ksIGFuZCB1bmRlcnN0YW5kIGFsbCBteXN0ZXJpZXMsIGFuZCBhbGwga25vd2xlZGdlOyBhbmQgdGhvdWdoIEkgaGF2ZSBhbGwgZmFpdGgsIHNvIHRoYXQgSSBjb3VsZCByZW1vdmUgbW91bnRhaW5zLCBhbmQgaGF2ZSBub3QgY2hhcml0eSwgSSBhbSBub3RoaW5nLgpBbmQgdGhvdWdoIEkgYmVzdG93IGFsbCBteSBnb29kcyB0byBmZWVkIFt0aGUgcG9vcl0sIGFuZCB0aG91Z2ggSSBnaXZlIG15IGJvZHkgdG8gYmUgYnVybmVkLCBhbmQgaGF2ZSBub3QgY2hhcml0eSwgaXQgcHJvZml0ZXRoIG1lIG5vdGhpbmcuCkNoYXJpdHkgc3VmZmVyZXRoIGxvbmcsIFthbmRdIGlzIGtpbmQ7IGNoYXJpdHkgZW52aWV0aCBub3Q7IGNoYXJpdHkgdmF1bnRldGggbm90IGl0c2VsZiwgaXMgbm90IHB1ZmZlZCB1cCwKRG90aCBub3QgYmVoYXZlIGl0c2VsZiB1bnNlZW1seSwgc2Vla2V0aCBub3QgaGVyIG93biwgaXMgbm90IGVhc2lseSBwcm92b2tlZCwgdGhpbmtldGggbm8gZXZpbDsKUmVqb2ljZXRoIG5vdCBpbiBpbmlxdWl0eSwgYnV0IHJlam9pY2V0aCBpbiB0aGUgdHJ1dGg7CkJlYXJldGggYWxsIHRoaW5ncywgYmVsaWV2ZXRoIGFsbCB0aGluZ3MsIGhvcGV0aCBhbGwgdGhpbmdzLCBlbmR1cmV0aCBhbGwgdGhpbmdzLgpDaGFyaXR5IG5ldmVyIGZhaWxldGg6IGJ1dCB3aGV0aGVyIFt0aGVyZSBiZV0gcHJvcGhlY2llcywgdGhleSBzaGFsbCBmYWlsOyB3aGV0aGVyIFt0aGVyZSBiZV0gdG9uZ3VlcywgdGhleSBzaGFsbCBjZWFzZTsgd2hldGhlciBbdGhlcmUgYmVdIGtub3dsZWRnZSwgaXQgc2hhbGwgdmFuaXNoIGF3YXkuCkZvciB3ZSBrbm93IGluIHBhcnQsIGFuZCB3ZSBwcm9waGVzeSBpbiBwYXJ0LgpCdXQgd2hlbiB0aGF0IHdoaWNoIGlzIHBlcmZlY3QgaXMgY29tZSwgdGhlbiB0aGF0IHdoaWNoIGlzIGluIHBhcnQgc2hhbGwgYmUgZG9uZSBhd2F5LgpXaGVuIEkgd2FzIGEgY2hpbGQsIEkgc3Bha2UgYXMgYSBjaGlsZCwgSSB1bmRlcnN0b29kIGFzIGEgY2hpbGQsIEkgdGhvdWdodCBhcyBhIGNoaWxkOiBidXQgd2hlbiBJIGJlY2FtZSBhIG1hbiwgSSBwdXQgYXdheSBjaGlsZGlzaCB0aGluZ3MuCkZvciBub3cgd2Ugc2VlIHRocm91Z2ggYSBnbGFzcywgZGFya2x5OyBidXQgdGhlbiBmYWNlIHRvIGZhY2U6IG5vdyBJIGtub3cgaW4gcGFydDsgYnV0IHRoZW4gc2hhbGwgSSBrbm93IGV2ZW4gYXMgYWxzbyBJIGFtIGtub3duLgpBbmQgbm93IGFiaWRldGggZmFpdGgsIGhvcGUsIGNoYXJpdHksIHRoZXNlIHRocmVlOyBidXQgdGhlIGdyZWF0ZXN0IG9mIHRoZXNlIFtpc10gY2hhcml0eS4KRm9sbG93IGFmdGVyIGNoYXJpdHksIGFuZCBkZXNpcmUgc3Bpcml0dWFsIFtnaWZ0c10sIGJ1dCByYXRoZXIgdGhhdCB5ZSBtYXkgcHJvcGhlc3kuCkZvciBoZSB0aGF0IHNwZWFrZXRoIGluIGFuIFt1bmtub3duXSB0b25ndWUgc3BlYWtldGggbm90IHVudG8gbWVuLCBidXQgdW50byBHb2Q6IGZvciBubyBtYW4gdW5kZXJzdGFuZGV0aCBbaGltXTsgaG93YmVpdCBpbiB0aGUgc3Bpcml0IGhlIHNwZWFrZXRoIG15c3Rlcmllcy4KQnV0IGhlIHRoYXQgcHJvcGhlc2lldGggc3BlYWtldGggdW50byBtZW4gW3RvXSBlZGlmaWNhdGlvbiwgYW5kIGV4aG9ydGF0aW9uLCBhbmQgY29tZm9ydC4KSGUgdGhhdCBzcGVha2V0aCBpbiBhbiBbdW5rbm93bl0gdG9uZ3VlIGVkaWZpZXRoIGhpbXNlbGY7IGJ1dCBoZSB0aGF0IHByb3BoZXNpZXRoIGVkaWZpZXRoIHRoZSBjaHVyY2guCkkgd291bGQgdGhhdCB5ZSBhbGwgc3Bha2Ugd2l0aCB0b25ndWVzLCBidXQgcmF0aGVyIHRoYXQgeWUgcHJvcGhlc2llZDogZm9yIGdyZWF0ZXIgW2lzXSBoZSB0aGF0IHByb3BoZXNpZXRoIHRoYW4gaGUgdGhhdCBzcGVha2V0aCB3aXRoIHRvbmd1ZXMsIGV4Y2VwdCBoZSBpbnRlcnByZXQsIHRoYXQgdGhlIGNodXJjaCBtYXkgcmVjZWl2ZSBlZGlmeWluZy4KTm93LCBicmV0aHJlbiwgaWYgSSBjb21lIHVudG8geW91IHNwZWFraW5nIHdpdGggdG9uZ3Vlcywgd2hhdCBzaGFsbCBJIHByb2ZpdCB5b3UsIGV4Y2VwdCBJIHNoYWxsIHNwZWFrIHRvIHlvdSBlaXRoZXIgYnkgcmV2ZWxhdGlvbiwgb3IgYnkga25vd2xlZGdlLCBvciBieSBwcm9waGVzeWluZywgb3IgYnkgZG9jdHJpbmU/CkFuZCBldmVuIHRoaW5ncyB3aXRob3V0IGxpZmUgZ2l2aW5nIHNvdW5kLCB3aGV0aGVyIHBpcGUgb3IgaGFycCwgZXhjZXB0IHRoZXkgZ2l2ZSBhIGRpc3RpbmN0aW9uIGluIHRoZSBzb3VuZHMsIGhvdyBzaGFsbCBpdCBiZSBrbm93biB3aGF0IGlzIHBpcGVkIG9yIGhhcnBlZD8KRm9yIGlmIHRoZSB0cnVtcGV0IGdpdmUgYW4gdW5jZXJ0YWluIHNvdW5kLCB3aG8gc2hhbGwgcHJlcGFyZSBoaW1zZWxmIHRvIHRoZSBiYXR0bGU/ClNvIGxpa2V3aXNlIHllLCBleGNlcHQgeWUgdXR0ZXIgYnkgdGhlIHRvbmd1ZSB3b3JkcyBlYXN5IHRvIGJlIHVuZGVyc3Rvb2QsIGhvdyBzaGFsbCBpdCBiZSBrbm93biB3aGF0IGlzIHNwb2tlbj8gZm9yIHllIHNoYWxsIHNwZWFrIGludG8gdGhlIGFpci4KVGhlcmUgYXJlLCBpdCBtYXkgYmUsIHNvIG1hbnkga2luZHMgb2Ygdm9pY2VzIGluIHRoZSB3b3JsZCwgYW5kIG5vbmUgb2YgdGhlbSBbaXNdIHdpdGhvdXQgc2lnbmlmaWNhdGlvbi4KVGhlcmVmb3JlIGlmIEkga25vdyBub3QgdGhlIG1lYW5pbmcgb2YgdGhlIHZvaWNlLCBJIHNoYWxsIGJlIHVudG8gaGltIHRoYXQgc3BlYWtldGggYSBiYXJiYXJpYW4sIGFuZCBoZSB0aGF0IHNwZWFrZXRoIFtzaGFsbCBiZV0gYSBiYXJiYXJpYW4gdW50byBtZS4KRXZlbiBzbyB5ZSwgZm9yYXNtdWNoIGFzIHllIGFyZSB6ZWFsb3VzIG9mIHNwaXJpdHVhbCBbZ2lmdHNdLCBzZWVrIHRoYXQgeWUgbWF5IGV4Y2VsIHRvIHRoZSBlZGlmeWluZyBvZiB0aGUgY2h1cmNoLgpXaGVyZWZvcmUgbGV0IGhpbSB0aGF0IHNwZWFrZXRoIGluIGFuIFt1bmtub3duXSB0b25ndWUgcHJheSB0aGF0IGhlIG1heSBpbnRlcnByZXQuCkZvciBpZiBJIHByYXkgaW4gYW4gW3Vua25vd25dIHRvbmd1ZSwgbXkgc3Bpcml0IHByYXlldGgsIGJ1dCBteSB1bmRlcnN0YW5kaW5nIGlzIHVuZnJ1aXRmdWwuCldoYXQgaXMgaXQgdGhlbj8gSSB3aWxsIHByYXkgd2l0aCB0aGUgc3Bpcml0LCBhbmQgSSB3aWxsIHByYXkgd2l0aCB0aGUgdW5kZXJzdGFuZGluZyBhbHNvOiBJIHdpbGwgc2luZyB3aXRoIHRoZSBzcGlyaXQsIGFuZCBJIHdpbGwgc2luZyB3aXRoIHRoZSB1bmRlcnN0YW5kaW5nIGFsc28uCkVsc2Ugd2hlbiB0aG91IHNoYWx0IGJsZXNzIHdpdGggdGhlIHNwaXJpdCwgaG93IHNoYWxsIGhlIHRoYXQgb2NjdXBpZXRoIHRoZSByb29tIG9mIHRoZSB1bmxlYXJuZWQgc2F5IEFtZW4gYXQgdGh5IGdpdmluZyBvZiB0aGFua3MsIHNlZWluZyBoZSB1bmRlcnN0YW5kZXRoIG5vdCB3aGF0IHRob3Ugc2F5ZXN0PwpGb3IgdGhvdSB2ZXJpbHkgZ2l2ZXN0IHRoYW5rcyB3ZWxsLCBidXQgdGhlIG90aGVyIGlzIG5vdCBlZGlmaWVkLgpJIHRoYW5rIG15IEdvZCwgSSBzcGVhayB3aXRoIHRvbmd1ZXMgbW9yZSB0aGFuIHllIGFsbDoKWWV0IGluIHRoZSBjaHVyY2ggSSBoYWQgcmF0aGVyIHNwZWFrIGZpdmUgd29yZHMgd2l0aCBteSB1bmRlcnN0YW5kaW5nLCB0aGF0IFtieSBteSB2b2ljZV0gSSBtaWdodCB0ZWFjaCBvdGhlcnMgYWxzbywgdGhhbiB0ZW4gdGhvdXNhbmQgd29yZHMgaW4gYW4gW3Vua25vd25dIHRvbmd1ZS4KQnJldGhyZW4sIGJlIG5vdCBjaGlsZHJlbiBpbiB1bmRlcnN0YW5kaW5nOiBob3diZWl0IGluIG1hbGljZSBiZSB5ZSBjaGlsZHJlbiwgYnV0IGluIHVuZGVyc3RhbmRpbmcgYmUgbWVuLgpJbiB0aGUgbGF3IGl0IGlzIHdyaXR0ZW4sIFdpdGggW21lbiBvZl0gb3RoZXIgdG9uZ3VlcyBhbmQgb3RoZXIgbGlwcyB3aWxsIEkgc3BlYWsgdW50byB0aGlzIHBlb3BsZTsgYW5kIHlldCBmb3IgYWxsIHRoYXQgd2lsbCB0aGV5IG5vdCBoZWFyIG1lLCBzYWl0aCB0aGUgTG9yZC4KV2hlcmVmb3JlIHRvbmd1ZXMgYXJlIGZvciBhIHNpZ24sIG5vdCB0byB0aGVtIHRoYXQgYmVsaWV2ZSwgYnV0IHRvIHRoZW0gdGhhdCBiZWxpZXZlIG5vdDogYnV0IHByb3BoZXN5aW5nIFtzZXJ2ZXRoXSBub3QgZm9yIHRoZW0gdGhhdCBiZWxpZXZlIG5vdCwgYnV0IGZvciB0aGVtIHdoaWNoIGJlbGlldmUuCklmIHRoZXJlZm9yZSB0aGUgd2hvbGUgY2h1cmNoIGJlIGNvbWUgdG9nZXRoZXIgaW50byBvbmUgcGxhY2UsIGFuZCBhbGwgc3BlYWsgd2l0aCB0b25ndWVzLCBhbmQgdGhlcmUgY29tZSBpbiBbdGhvc2UgdGhhdCBhcmVdIHVubGVhcm5lZCwgb3IgdW5iZWxpZXZlcnMsIHdpbGwgdGhleSBub3Qgc2F5IHRoYXQgeWUgYXJlIG1hZD8KQnV0IGlmIGFsbCBwcm9waGVzeSwgYW5kIHRoZXJlIGNvbWUgaW4gb25lIHRoYXQgYmVsaWV2ZXRoIG5vdCwgb3IgW29uZV0gdW5sZWFybmVkLCBoZSBpcyBjb252aW5jZWQgb2YgYWxsLCBoZSBpcyBqdWRnZWQgb2YgYWxsOgpBbmQgdGh1cyBhcmUgdGhlIHNlY3JldHMgb2YgaGlzIGhlYXJ0IG1hZGUgbWFuaWZlc3Q7IGFuZCBzbyBmYWxsaW5nIGRvd24gb24gW2hpc10gZmFjZSBoZSB3aWxsIHdvcnNoaXAgR29kLCBhbmQgcmVwb3J0IHRoYXQgR29kIGlzIGluIHlvdSBvZiBhIHRydXRoLgpIb3cgaXMgaXQgdGhlbiwgYnJldGhyZW4/IHdoZW4geWUgY29tZSB0b2dldGhlciwgZXZlcnkgb25lIG9mIHlvdSBoYXRoIGEgcHNhbG0sIGhhdGggYSBkb2N0cmluZSwgaGF0aCBhIHRvbmd1ZSwgaGF0aCBhIHJldmVsYXRpb24sIGhhdGggYW4gaW50ZXJwcmV0YXRpb24uIExldCBhbGwgdGhpbmdzIGJlIGRvbmUgdW50byBlZGlmeWluZy4KSWYgYW55IG1hbiBzcGVhayBpbiBhbiBbdW5rbm93bl0gdG9uZ3VlLCBbbGV0IGl0IGJlXSBieSB0d28sIG9yIGF0IHRoZSBtb3N0IFtieV0gdGhyZWUsIGFuZCBbdGhhdF0gYnkgY291cnNlOyBhbmQgbGV0IG9uZSBpbnRlcnByZXQuCkJ1dCBpZiB0aGVyZSBiZSBubyBpbnRlcnByZXRlciwgbGV0IGhpbSBrZWVwIHNpbGVuY2UgaW4gdGhlIGNodXJjaDsgYW5kIGxldCBoaW0gc3BlYWsgdG8gaGltc2VsZiwgYW5kIHRvIEdvZC4KTGV0IHRoZSBwcm9waGV0cyBzcGVhayB0d28gb3IgdGhyZWUsIGFuZCBsZXQgdGhlIG90aGVyIGp1ZGdlLgpJZiBbYW55IHRoaW5nXSBiZSByZXZlYWxlZCB0byBhbm90aGVyIHRoYXQgc2l0dGV0aCBieSwgbGV0IHRoZSBmaXJzdCBob2xkIGhpcyBwZWFjZS4KRm9yIHllIG1heSBhbGwgcHJvcGhlc3kgb25lIGJ5IG9uZSwgdGhhdCBhbGwgbWF5IGxlYXJuLCBhbmQgYWxsIG1heSBiZSBjb21mb3J0ZWQuCkFuZCB0aGUgc3Bpcml0cyBvZiB0aGUgcHJvcGhldHMgYXJlIHN1YmplY3QgdG8gdGhlIHByb3BoZXRzLgpGb3IgR29kIGlzIG5vdCBbdGhlIGF1dGhvcl0gb2YgY29uZnVzaW9uLCBidXQgb2YgcGVhY2UsIGFzIGluIGFsbCBjaHVyY2hlcyBvZiB0aGUgc2FpbnRzLgpMZXQgeW91ciB3b21lbiBrZWVwIHNpbGVuY2UgaW4gdGhlIGNodXJjaGVzOiBmb3IgaXQgaXMgbm90IHBlcm1pdHRlZCB1bnRvIHRoZW0gdG8gc3BlYWs7IGJ1dCBbdGhleSBhcmUgY29tbWFuZGVkXSB0byBiZSB1bmRlciBvYmVkaWVuY2UsIGFzIGFsc28gc2FpdGggdGhlIGxhdy4KQW5kIGlmIHRoZXkgd2lsbCBsZWFybiBhbnkgdGhpbmcsIGxldCB0aGVtIGFzayB0aGVpciBodXNiYW5kcyBhdCBob21lOiBmb3IgaXQgaXMgYSBzaGFtZSBmb3Igd29tZW4gdG8gc3BlYWsgaW4gdGhlIGNodXJjaC4KV2hhdD8gY2FtZSB0aGUgd29yZCBvZiBHb2Qgb3V0IGZyb20geW91PyBvciBjYW1lIGl0IHVudG8geW91IG9ubHk/CklmIGFueSBtYW4gdGhpbmsgaGltc2VsZiB0byBiZSBhIHByb3BoZXQsIG9yIHNwaXJpdHVhbCwgbGV0IGhpbSBhY2tub3dsZWRnZSB0aGF0IHRoZSB0aGluZ3MgdGhhdCBJIHdyaXRlIHVudG8geW91IGFyZSB0aGUgY29tbWFuZG1lbnRzIG9mIHRoZSBMb3JkLgpCdXQgaWYgYW55IG1hbiBiZSBpZ25vcmFudCwgbGV0IGhpbSBiZSBpZ25vcmFudC4KV2hlcmVmb3JlLCBicmV0aHJlbiwgY292ZXQgdG8gcHJvcGhlc3ksIGFuZCBmb3JiaWQgbm90IHRvIHNwZWFrIHdpdGggdG9uZ3Vlcy4KTGV0IGFsbCB0aGluZ3MgYmUgZG9uZSBkZWNlbnRseSBhbmQgaW4gb3JkZXIuCk1vcmVvdmVyLCBicmV0aHJlbiwgSSBkZWNsYXJlIHVudG8geW91IHRoZSBnb3NwZWwgd2hpY2ggSSBwcmVhY2hlZCB1bnRvIHlvdSwgd2hpY2ggYWxzbyB5ZSBoYXZlIHJlY2VpdmVkLCBhbmQgd2hlcmVpbiB5ZSBzdGFuZDsKQnkgd2hpY2ggYWxzbyB5ZSBhcmUgc2F2ZWQsIGlmIHllIGtlZXAgaW4gbWVtb3J5IHdoYXQgSSBwcmVhY2hlZCB1bnRvIHlvdSwgdW5sZXNzIHllIGhhdmUgYmVsaWV2ZWQgaW4gdmFpbi4KRm9yIEkgZGVsaXZlcmVkIHVudG8geW91IGZpcnN0IG9mIGFsbCB0aGF0IHdoaWNoIEkgYWxzbyByZWNlaXZlZCwgaG93IHRoYXQgQ2hyaXN0IGRpZWQgZm9yIG91ciBzaW5zIGFjY29yZGluZyB0byB0aGUgc2NyaXB0dXJlczsKQW5kIHRoYXQgaGUgd2FzIGJ1cmllZCwgYW5kIHRoYXQgaGUgcm9zZSBhZ2FpbiB0aGUgdGhpcmQgZGF5IGFjY29yZGluZyB0byB0aGUgc2NyaXB0dXJlczoKQW5kIHRoYXQgaGUgd2FzIHNlZW4gb2YgQ2VwaGFzLCB0aGVuIG9mIHRoZSB0d2VsdmU6CkFmdGVyIHRoYXQsIGhlIHdhcyBzZWVuIG9mIGFib3ZlIGZpdmUgaHVuZHJlZCBicmV0aHJlbiBhdCBvbmNlOyBvZiB3aG9tIHRoZSBncmVhdGVyIHBhcnQgcmVtYWluIHVudG8gdGhpcyBwcmVzZW50LCBidXQgc29tZSBhcmUgZmFsbGVuIGFzbGVlcC4KQWZ0ZXIgdGhhdCwgaGUgd2FzIHNlZW4gb2YgSmFtZXM7IHRoZW4gb2YgYWxsIHRoZSBhcG9zdGxlcy4KQW5kIGxhc3Qgb2YgYWxsIGhlIHdhcyBzZWVuIG9mIG1lIGFsc28sIGFzIG9mIG9uZSBib3JuIG91dCBvZiBkdWUgdGltZS4KRm9yIEkgYW0gdGhlIGxlYXN0IG9mIHRoZSBhcG9zdGxlcywgdGhhdCBhbSBub3QgbWVldCB0byBiZSBjYWxsZWQgYW4gYXBvc3RsZSwgYmVjYXVzZSBJIHBlcnNlY3V0ZWQgdGhlIGNodXJjaCBvZiBHb2QuCkJ1dCBieSB0aGUgZ3JhY2Ugb2YgR29kIEkgYW0gd2hhdCBJIGFtOiBhbmQgaGlzIGdyYWNlIHdoaWNoIFt3YXMgYmVzdG93ZWRdIHVwb24gbWUgd2FzIG5vdCBpbiB2YWluOyBidXQgSSBsYWJvdXJlZCBtb3JlIGFidW5kYW50bHkgdGhhbiB0aGV5IGFsbDogeWV0IG5vdCBJLCBidXQgdGhlIGdyYWNlIG9mIEdvZCB3aGljaCB3YXMgd2l0aCBtZS4KVGhlcmVmb3JlIHdoZXRoZXIgW2l0IHdlcmVdIEkgb3IgdGhleSwgc28gd2UgcHJlYWNoLCBhbmQgc28geWUgYmVsaWV2ZWQuCk5vdyBpZiBDaHJpc3QgYmUgcHJlYWNoZWQgdGhhdCBoZSByb3NlIGZyb20gdGhlIGRlYWQsIGhvdyBzYXkgc29tZSBhbW9uZyB5b3UgdGhhdCB0aGVyZSBpcyBubyByZXN1cnJlY3Rpb24gb2YgdGhlIGRlYWQ/CkJ1dCBpZiB0aGVyZSBiZSBubyByZXN1cnJlY3Rpb24gb2YgdGhlIGRlYWQsIHRoZW4gaXMgQ2hyaXN0IG5vdCByaXNlbjoKQW5kIGlmIENocmlzdCBiZSBub3QgcmlzZW4sIHRoZW4gW2lzXSBvdXIgcHJlYWNoaW5nIHZhaW4sIGFuZCB5b3VyIGZhaXRoIFtpc10gYWxzbyB2YWluLgpZZWEsIGFuZCB3ZSBhcmUgZm91bmQgZmFsc2Ugd2l0bmVzc2VzIG9mIEdvZDsgYmVjYXVzZSB3ZSBoYXZlIHRlc3RpZmllZCBvZiBHb2QgdGhhdCBoZSByYWlzZWQgdXAgQ2hyaXN0OiB3aG9tIGhlIHJhaXNlZCBub3QgdXAsIGlmIHNvIGJlIHRoYXQgdGhlIGRlYWQgcmlzZSBub3QuCkZvciBpZiB0aGUgZGVhZCByaXNlIG5vdCwgdGhlbiBpcyBub3QgQ2hyaXN0IHJhaXNlZDoKQW5kIGlmIENocmlzdCBiZSBub3QgcmFpc2VkLCB5b3VyIGZhaXRoIFtpc10gdmFpbjsgeWUgYXJlIHlldCBpbiB5b3VyIHNpbnMuClRoZW4gdGhleSBhbHNvIHdoaWNoIGFyZSBmYWxsZW4gYXNsZWVwIGluIENocmlzdCBhcmUgcGVyaXNoZWQuCklmIGluIHRoaXMgbGlmZSBvbmx5IHdlIGhhdmUgaG9wZSBpbiBDaHJpc3QsIHdlIGFyZSBvZiBhbGwgbWVuIG1vc3QgbWlzZXJhYmxlLgpCdXQgbm93IGlzIENocmlzdCByaXNlbiBmcm9tIHRoZSBkZWFkLCBbYW5kXSBiZWNvbWUgdGhlIGZpcnN0ZnJ1aXRzIG9mIHRoZW0gdGhhdCBzbGVwdC4KRm9yIHNpbmNlIGJ5IG1hbiBbY2FtZV0gZGVhdGgsIGJ5IG1hbiBbY2FtZV0gYWxzbyB0aGUgcmVzdXJyZWN0aW9uIG9mIHRoZSBkZWFkLgpGb3IgYXMgaW4gQWRhbSBhbGwgZGllLCBldmVuIHNvIGluIENocmlzdCBzaGFsbCBhbGwgYmUgbWFkZSBhbGl2ZS4KQnV0IGV2ZXJ5IG1hbiBpbiBoaXMgb3duIG9yZGVyOiBDaHJpc3QgdGhlIGZpcnN0ZnJ1aXRzOyBhZnRlcndhcmQgdGhleSB0aGF0IGFyZSBDaHJpc3QncyBhdCBoaXMgY29taW5nLgpUaGVuIFtjb21ldGhdIHRoZSBlbmQsIHdoZW4gaGUgc2hhbGwgaGF2ZSBkZWxpdmVyZWQgdXAgdGhlIGtpbmdkb20gdG8gR29kLCBldmVuIHRoZSBGYXRoZXI7IHdoZW4gaGUgc2hhbGwgaGF2ZSBwdXQgZG93biBhbGwgcnVsZSBhbmQgYWxsIGF1dGhvcml0eSBhbmQgcG93ZXIuCkZvciBoZSBtdXN0IHJlaWduLCB0aWxsIGhlIGhhdGggcHV0IGFsbCBlbmVtaWVzIHVuZGVyIGhpcyBmZWV0LgpUaGUgbGFzdCBlbmVteSBbdGhhdF0gc2hhbGwgYmUgZGVzdHJveWVkIFtpc10gZGVhdGguCkZvciBoZSBoYXRoIHB1dCBhbGwgdGhpbmdzIHVuZGVyIGhpcyBmZWV0LiBCdXQgd2hlbiBoZSBzYWl0aCBhbGwgdGhpbmdzIGFyZSBwdXQgdW5kZXIgW2hpbSwgaXQgaXNdIG1hbmlmZXN0IHRoYXQgaGUgaXMgZXhjZXB0ZWQsIHdoaWNoIGRpZCBwdXQgYWxsIHRoaW5ncyB1bmRlciBoaW0uCkFuZCB3aGVuIGFsbCB0aGluZ3Mgc2hhbGwgYmUgc3ViZHVlZCB1bnRvIGhpbSwgdGhlbiBzaGFsbCB0aGUgU29uIGFsc28gaGltc2VsZiBiZSBzdWJqZWN0IHVudG8gaGltIHRoYXQgcHV0IGFsbCB0aGluZ3MgdW5kZXIgaGltLCB0aGF0IEdvZCBtYXkgYmUgYWxsIGluIGFsbC4KRWxzZSB3aGF0IHNoYWxsIHRoZXkgZG8gd2hpY2ggYXJlIGJhcHRpemVkIGZvciB0aGUgZGVhZCwgaWYgdGhlIGRlYWQgcmlzZSBub3QgYXQgYWxsPyB3aHkgYXJlIHRoZXkgdGhlbiBiYXB0aXplZCBmb3IgdGhlIGRlYWQ/CkFuZCB3aHkgc3RhbmQgd2UgaW4gamVvcGFyZHkgZXZlcnkgaG91cj8KSSBwcm90ZXN0IGJ5IHlvdXIgcmVqb2ljaW5nIHdoaWNoIEkgaGF2ZSBpbiBDaHJpc3QgSmVzdXMgb3VyIExvcmQsIEkgZGllIGRhaWx5LgpJZiBhZnRlciB0aGUgbWFubmVyIG9mIG1lbiBJIGhhdmUgZm91Z2h0IHdpdGggYmVhc3RzIGF0IEVwaGVzdXMsIHdoYXQgYWR2YW50YWdldGggaXQgbWUsIGlmIHRoZSBkZWFkIHJpc2Ugbm90PyBsZXQgdXMgZWF0IGFuZCBkcmluazsgZm9yIHRvIG1vcnJvdyB3ZSBkaWUuCkJlIG5vdCBkZWNlaXZlZDogZXZpbCBjb21tdW5pY2F0aW9ucyBjb3JydXB0IGdvb2QgbWFubmVycy4KQXdha2UgdG8gcmlnaHRlb3VzbmVzcywgYW5kIHNpbiBub3Q7IGZvciBzb21lIGhhdmUgbm90IHRoZSBrbm93bGVkZ2Ugb2YgR29kOiBJIHNwZWFrIFt0aGlzXSB0byB5b3VyIHNoYW1lLgpCdXQgc29tZSBbbWFuXSB3aWxsIHNheSwgSG93IGFyZSB0aGUgZGVhZCByYWlzZWQgdXA/IGFuZCB3aXRoIHdoYXQgYm9keSBkbyB0aGV5IGNvbWU/CltUaG91XSBmb29sLCB0aGF0IHdoaWNoIHRob3Ugc293ZXN0IGlzIG5vdCBxdWlja2VuZWQsIGV4Y2VwdCBpdCBkaWU6CkFuZCB0aGF0IHdoaWNoIHRob3Ugc293ZXN0LCB0aG91IHNvd2VzdCBub3QgdGhhdCBib2R5IHRoYXQgc2hhbGwgYmUsIGJ1dCBiYXJlIGdyYWluLCBpdCBtYXkgY2hhbmNlIG9mIHdoZWF0LCBvciBvZiBzb21lIG90aGVyIFtncmFpbl06CkJ1dCBHb2QgZ2l2ZXRoIGl0IGEgYm9keSBhcyBpdCBoYXRoIHBsZWFzZWQgaGltLCBhbmQgdG8gZXZlcnkgc2VlZCBoaXMgb3duIGJvZHkuCkFsbCBmbGVzaCBbaXNdIG5vdCB0aGUgc2FtZSBmbGVzaDogYnV0IFt0aGVyZSBpc10gb25lIFtraW5kIG9mXSBmbGVzaCBvZiBtZW4sIGFub3RoZXIgZmxlc2ggb2YgYmVhc3RzLCBhbm90aGVyIG9mIGZpc2hlcywgW2FuZF0gYW5vdGhlciBvZiBiaXJkcy4KW1RoZXJlIGFyZV0gYWxzbyBjZWxlc3RpYWwgYm9kaWVzLCBhbmQgYm9kaWVzIHRlcnJlc3RyaWFsOiBidXQgdGhlIGdsb3J5IG9mIHRoZSBjZWxlc3RpYWwgW2lzXSBvbmUsIGFuZCB0aGUgW2dsb3J5XSBvZiB0aGUgdGVycmVzdHJpYWwgW2lzXSBhbm90aGVyLgpbVGhlcmUgaXNdIG9uZSBnbG9yeSBvZiB0aGUgc3VuLCBhbmQgYW5vdGhlciBnbG9yeSBvZiB0aGUgbW9vbiwgYW5kIGFub3RoZXIgZ2xvcnkgb2YgdGhlIHN0YXJzOiBmb3IgW29uZV0gc3RhciBkaWZmZXJldGggZnJvbSBbYW5vdGhlcl0gc3RhciBpbiBnbG9yeS4KU28gYWxzbyBbaXNdIHRoZSByZXN1cnJlY3Rpb24gb2YgdGhlIGRlYWQuIEl0IGlzIHNvd24gaW4gY29ycnVwdGlvbjsgaXQgaXMgcmFpc2VkIGluIGluY29ycnVwdGlvbjoKSXQgaXMgc293biBpbiBkaXNob25vdXI7IGl0IGlzIHJhaXNlZCBpbiBnbG9yeTogaXQgaXMgc293biBpbiB3ZWFrbmVzczsgaXQgaXMgcmFpc2VkIGluIHBvd2VyOgpJdCBpcyBzb3duIGEgbmF0dXJhbCBib2R5OyBpdCBpcyByYWlzZWQgYSBzcGlyaXR1YWwgYm9keS4gVGhlcmUgaXMgYSBuYXR1cmFsIGJvZHksIGFuZCB0aGVyZSBpcyBhIHNwaXJpdHVhbCBib2R5LgpBbmQgc28gaXQgaXMgd3JpdHRlbiwgVGhlIGZpcnN0IG1hbiBBZGFtIHdhcyBtYWRlIGEgbGl2aW5nIHNvdWw7IHRoZSBsYXN0IEFkYW0gW3dhcyBtYWRlXSBhIHF1aWNrZW5pbmcgc3Bpcml0LgpIb3diZWl0IHRoYXQgW3dhc10gbm90IGZpcnN0IHdoaWNoIGlzIHNwaXJpdHVhbCwgYnV0IHRoYXQgd2hpY2ggaXMgbmF0dXJhbDsgYW5kIGFmdGVyd2FyZCB0aGF0IHdoaWNoIGlzIHNwaXJpdHVhbC4KVGhlIGZpcnN0IG1hbiBbaXNdIG9mIHRoZSBlYXJ0aCwgZWFydGh5OiB0aGUgc2Vjb25kIG1hbiBbaXNdIHRoZSBMb3JkIGZyb20gaGVhdmVuLgpBcyBbaXNdIHRoZSBlYXJ0aHksIHN1Y2ggW2FyZV0gdGhleSBhbHNvIHRoYXQgYXJlIGVhcnRoeTogYW5kIGFzIFtpc10gdGhlIGhlYXZlbmx5LCBzdWNoIFthcmVdIHRoZXkgYWxzbyB0aGF0IGFyZSBoZWF2ZW5seS4KQW5kIGFzIHdlIGhhdmUgYm9ybmUgdGhlIGltYWdlIG9mIHRoZSBlYXJ0aHksIHdlIHNoYWxsIGFsc28gYmVhciB0aGUgaW1hZ2Ugb2YgdGhlIGhlYXZlbmx5LgpOb3cgdGhpcyBJIHNheSwgYnJldGhyZW4sIHRoYXQgZmxlc2ggYW5kIGJsb29kIGNhbm5vdCBpbmhlcml0IHRoZSBraW5nZG9tIG9mIEdvZDsgbmVpdGhlciBkb3RoIGNvcnJ1cHRpb24gaW5oZXJpdCBpbmNvcnJ1cHRpb24uCkJlaG9sZCwgSSBzaG93IHlvdSBhIG15c3Rlcnk7IFdlIHNoYWxsIG5vdCBhbGwgc2xlZXAsIGJ1dCB3ZSBzaGFsbCBhbGwgYmUgY2hhbmdlZCwKSW4gYSBtb21lbnQsIGluIHRoZSB0d2lua2xpbmcgb2YgYW4gZXllLCBhdCB0aGUgbGFzdCB0cnVtcDogZm9yIHRoZSB0cnVtcGV0IHNoYWxsIHNvdW5kLCBhbmQgdGhlIGRlYWQgc2hhbGwgYmUgcmFpc2VkIGluY29ycnVwdGlibGUsIGFuZCB3ZSBzaGFsbCBiZSBjaGFuZ2VkLgpGb3IgdGhpcyBjb3JydXB0aWJsZSBtdXN0IHB1dCBvbiBpbmNvcnJ1cHRpb24sIGFuZCB0aGlzIG1vcnRhbCBbbXVzdF0gcHV0IG9uIGltbW9ydGFsaXR5LgpTbyB3aGVuIHRoaXMgY29ycnVwdGlibGUgc2hhbGwgaGF2ZSBwdXQgb24gaW5jb3JydXB0aW9uLCBhbmQgdGhpcyBtb3J0YWwgc2hhbGwgaGF2ZSBwdXQgb24gaW1tb3J0YWxpdHksIHRoZW4gc2hhbGwgYmUgYnJvdWdodCB0byBwYXNzIHRoZSBzYXlpbmcgdGhhdCBpcyB3cml0dGVuLCBEZWF0aCBpcyBzd2FsbG93ZWQgdXAgaW4gdmljdG9yeS4KTyBkZWF0aCwgd2hlcmUgW2lzXSB0aHkgc3Rpbmc/IE8gZ3JhdmUsIHdoZXJlIFtpc10gdGh5IHZpY3Rvcnk/CmZUaGUgc3Rpbmcgb2YgZGVhdGggW2lzXSBzaW47IGFuZCB0aGUgc3RyZW5ndGggb2Ygc2luIFtpc10gdGhlIGxhdy4KQnV0IHRoYW5rcyBbYmVdIHRvIEdvZCwgd2hpY2ggZ2l2ZXRoIHVzIHRoZSB2aWN0b3J5IHRocm91Z2ggb3VyIExvcmQgSmVzdXMgQ2hyaXN0LgpUaGVyZWZvcmUsIG15IGJlbG92ZWQgYnJldGhyZW4sIGJlIHllIHN0ZWRmYXN0LCB1bm1vdmVhYmxlLCBhbHdheXMgYWJvdW5kaW5nIGluIHRoZSB3b3JrIG9mIHRoZSBMb3JkLCBmb3Jhc211Y2ggYXMgeWUga25vdyB0aGF0IHlvdXIgbGFib3VyIGlzIG5vdCBpbiB2YWluIGluIHRoZSBMb3JkLgpOb3cgY29uY2VybmluZyB0aGUgY29sbGVjdGlvbiBmb3IgdGhlIHNhaW50cywgYXMgSSBoYXZlIGdpdmVuIG9yZGVyIHRvIHRoZSBjaHVyY2hlcyBvZiBHYWxhdGlhLCBldmVuIHNvIGRvIHllLgpVcG9uIHRoZSBmaXJzdCBbZGF5XSBvZiB0aGUgd2VlayBsZXQgZXZlcnkgb25lIG9mIHlvdSBsYXkgYnkgaGltIGluIHN0b3JlLCBhcyBbR29kXSBoYXRoIHByb3NwZXJlZCBoaW0sIHRoYXQgdGhlcmUgYmUgbm8gZ2F0aGVyaW5ncyB3aGVuIEkgY29tZS4KQW5kIHdoZW4gSSBjb21lLCB3aG9tc29ldmVyIHllIHNoYWxsIGFwcHJvdmUgYnkgW3lvdXJdIGxldHRlcnMsIHRoZW0gd2lsbCBJIHNlbmQgdG8gYnJpbmcgeW91ciBsaWJlcmFsaXR5IHVudG8gSmVydXNhbGVtLgpBbmQgaWYgaXQgYmUgbWVldCB0aGF0IEkgZ28gYWxzbywgdGhleSBzaGFsbCBnbyB3aXRoIG1lLgpOb3cgSSB3aWxsIGNvbWUgdW50byB5b3UsIHdoZW4gSSBzaGFsbCBwYXNzIHRocm91Z2ggTWFjZWRvbmlhOiBmb3IgSSBkbyBwYXNzIHRocm91Z2ggTWFjZWRvbmlhLgpBbmQgaXQgbWF5IGJlIHRoYXQgSSB3aWxsIGFiaWRlLCB5ZWEsIGFuZCB3aW50ZXIgd2l0aCB5b3UsIHRoYXQgeWUgbWF5IGJyaW5nIG1lIG9uIG15IGpvdXJuZXkgd2hpdGhlcnNvZXZlciBJIGdvLgpGb3IgSSB3aWxsIG5vdCBzZWUgeW91IG5vdyBieSB0aGUgd2F5OyBidXQgSSB0cnVzdCB0byB0YXJyeSBhIHdoaWxlIHdpdGggeW91LCBpZiB0aGUgTG9yZCBwZXJtaXQuCkJ1dCBJIHdpbGwgdGFycnkgYXQgRXBoZXN1cyB1bnRpbCBQZW50ZWNvc3QuCkZvciBhIGdyZWF0IGRvb3IgYW5kIGVmZmVjdHVhbCBpcyBvcGVuZWQgdW50byBtZSwgYW5kIFt0aGVyZSBhcmVdIG1hbnkgYWR2ZXJzYXJpZXMuCk5vdyBpZiBUaW1vdGhldXMgY29tZSwgc2VlIHRoYXQgaGUgbWF5IGJlIHdpdGggeW91IHdpdGhvdXQgZmVhcjogZm9yIGhlIHdvcmtldGggdGhlIHdvcmsgb2YgdGhlIExvcmQsIGFzIEkgYWxzbyBbZG9dLgpMZXQgbm8gbWFuIHRoZXJlZm9yZSBkZXNwaXNlIGhpbTogYnV0IGNvbmR1Y3QgaGltIGZvcnRoIGluIHBlYWNlLCB0aGF0IGhlIG1heSBjb21lIHVudG8gbWU6IGZvciBJIGxvb2sgZm9yIGhpbSB3aXRoIHRoZSBicmV0aHJlbi4KQXMgdG91Y2hpbmcgW291cl0gYnJvdGhlciBBcG9sbG9zLCBJIGdyZWF0bHkgZGVzaXJlZCBoaW0gdG8gY29tZSB1bnRvIHlvdSB3aXRoIHRoZSBicmV0aHJlbjogYnV0IGhpcyB3aWxsIHdhcyBub3QgYXQgYWxsIHRvIGNvbWUgYXQgdGhpcyB0aW1lOyBidXQgaGUgd2lsbCBjb21lIHdoZW4gaGUgc2hhbGwgaGF2ZSBjb252ZW5pZW50IHRpbWUuCldhdGNoIHllLCBzdGFuZCBmYXN0IGluIHRoZSBmYWl0aCwgcXVpdCB5b3UgbGlrZSBtZW4sIGJlIHN0cm9uZy4KTGV0IGFsbCB5b3VyIHRoaW5ncyBiZSBkb25lIHdpdGggY2hhcml0eS4KSSBiZXNlZWNoIHlvdSwgYnJldGhyZW4sICh5ZSBrbm93IHRoZSBob3VzZSBvZiBTdGVwaGFuYXMsIHRoYXQgaXQgaXMgdGhlIGZpcnN0ZnJ1aXRzIG9mIEFjaGFpYSwgYW5kIFt0aGF0XSB0aGV5IGhhdmUgYWRkaWN0ZWQgdGhlbXNlbHZlcyB0byB0aGUgbWluaXN0cnkgb2YgdGhlIHNhaW50cywpClRoYXQgeWUgc3VibWl0IHlvdXJzZWx2ZXMgdW50byBzdWNoLCBhbmQgdG8gZXZlcnkgb25lIHRoYXQgaGVscGV0aCB3aXRoIFt1c10sIGFuZCBsYWJvdXJldGguCkkgYW0gZ2xhZCBvZiB0aGUgY29taW5nIG9mIFN0ZXBoYW5hcyBhbmQgRm9ydHVuYXR1cyBhbmQgQWNoYWljdXM6IGZvciB0aGF0IHdoaWNoIHdhcyBsYWNraW5nIG9uIHlvdXIgcGFydCB0aGV5IGhhdmUgc3VwcGxpZWQuCkZvciB0aGV5IGhhdmUgcmVmcmVzaGVkIG15IHNwaXJpdCBhbmQgeW91cnM6IHRoZXJlZm9yZSBhY2tub3dsZWRnZSB5ZSB0aGVtIHRoYXQgYXJlIHN1Y2guClRoZSBjaHVyY2hlcyBvZiBBc2lhIHNhbHV0ZSB5b3UuIEFxdWlsYSBhbmQgUHJpc2NpbGxhIHNhbHV0ZSB5b3UgbXVjaCBpbiB0aGUgTG9yZCwgd2l0aCB0aGUgY2h1cmNoIHRoYXQgaXMgaW4gdGhlaXIgaG91c2UuCkFsbCB0aGUgYnJldGhyZW4gZ3JlZXQgeW91LiBHcmVldCB5ZSBvbmUgYW5vdGhlciB3aXRoIGFuIGhvbHkga2lzcy4KVGhlIHNhbHV0YXRpb24gb2YgW21lXSBQYXVsIHdpdGggbWluZSBvd24gaGFuZC4KSWYgYW55IG1hbiBsb3ZlIG5vdCB0aGUgTG9yZCBKZXN1cyBDaHJpc3QsIGxldCBoaW0gYmUgQW5hdGhlbWEgTWFyYW5hdGhhLgpUaGUgZ3JhY2Ugb2Ygb3VyIExvcmQgSmVzdXMgQ2hyaXN0IFtiZV0gd2l0aCB5b3UuCk15IGxvdmUgW2JlXSB3aXRoIHlvdSBhbGwgaW4gQ2hyaXN0IEplc3VzLiBBbWVuLgpQYXVsLCBhbiBhcG9zdGxlIG9mIEplc3VzIENocmlzdCBieSB0aGUgd2lsbCBvZiBHb2QsIGFuZCBUaW1vdGh5IFtvdXJdIGJyb3RoZXIsIHVudG8gdGhlIGNodXJjaCBvZiBHb2Qgd2hpY2ggaXMgYXQgQ29yaW50aCwgd2l0aCBhbGwgdGhlIHNhaW50cyB3aGljaCBhcmUgaW4gYWxsIEFjaGFpYToKR3JhY2UgW2JlXSB0byB5b3UgYW5kIHBlYWNlIGZyb20gR29kIG91ciBGYXRoZXIsIGFuZCBbZnJvbV0gdGhlIExvcmQgSmVzdXMgQ2hyaXN0LgpCbGVzc2VkIFtiZV0gR29kLCBldmVuIHRoZSBGYXRoZXIgb2Ygb3VyIExvcmQgSmVzdXMgQ2hyaXN0LCB0aGUgRmF0aGVyIG9mIG1lcmNpZXMsIGFuZCB0aGUgR29kIG9mIGFsbCBjb21mb3J0OwpXaG8gY29tZm9ydGV0aCB1cyBpbiBhbGwgb3VyIHRyaWJ1bGF0aW9uLCB0aGF0IHdlIG1heSBiZSBhYmxlIHRvIGNvbWZvcnQgdGhlbSB3aGljaCBhcmUgaW4gYW55IHRyb3VibGUsIGJ5IHRoZSBjb21mb3J0IHdoZXJld2l0aCB3ZSBvdXJzZWx2ZXMgYXJlIGNvbWZvcnRlZCBvZiBHb2QuCkZvciBhcyB0aGUgc3VmZmVyaW5ncyBvZiBDaHJpc3QgYWJvdW5kIGluIHVzLCBzbyBvdXIgY29uc29sYXRpb24gYWxzbyBhYm91bmRldGggYnkgQ2hyaXN0LgpBbmQgd2hldGhlciB3ZSBiZSBhZmZsaWN0ZWQsIFtpdCBpc10gZm9yIHlvdXIgY29uc29sYXRpb24gYW5kIHNhbHZhdGlvbiwgd2hpY2ggaXMgZWZmZWN0dWFsIGluIHRoZSBlbmR1cmluZyBvZiB0aGUgc2FtZSBzdWZmZXJpbmdzIHdoaWNoIHdlIGFsc28gc3VmZmVyOiBvciB3aGV0aGVyIHdlIGJlIGNvbWZvcnRlZCwgW2l0IGlzXSBmb3IgeW91ciBjb25zb2xhdGlvbiBhbmQgc2FsdmF0aW9uLgpBbmQgb3VyIGhvcGUgb2YgeW91IFtpc10gc3RlZGZhc3QsIGtub3dpbmcsIHRoYXQgYXMgeWUgYXJlIHBhcnRha2VycyBvZiB0aGUgc3VmZmVyaW5ncywgc28gW3NoYWxsIHllIGJlXSBhbHNvIG9mIHRoZSBjb25zb2xhdGlvbi4KRm9yIHdlIHdvdWxkIG5vdCwgYnJldGhyZW4sIGhhdmUgeW91IGlnbm9yYW50IG9mIG91ciB0cm91YmxlIHdoaWNoIGNhbWUgdG8gdXMgaW4gQXNpYSwgdGhhdCB3ZSB3ZXJlIHByZXNzZWQgb3V0IG9mIG1lYXN1cmUsIGFib3ZlIHN0cmVuZ3RoLCBpbnNvbXVjaCB0aGF0IHdlIGRlc3BhaXJlZCBldmVuIG9mIGxpZmU6CkJ1dCB3ZSBoYWQgdGhlIHNlbnRlbmNlIG9mIGRlYXRoIGluIG91cnNlbHZlcywgdGhhdCB3ZSBzaG91bGQgbm90IHRydXN0IGluIG91cnNlbHZlcywgYnV0IGluIEdvZCB3aGljaCByYWlzZXRoIHRoZSBkZWFkOgpXaG8gZGVsaXZlcmVkIHVzIGZyb20gc28gZ3JlYXQgYSBkZWF0aCwgYW5kIGRvdGggZGVsaXZlcjogaW4gd2hvbSB3ZSB0cnVzdCB0aGF0IGhlIHdpbGwgeWV0IGRlbGl2ZXIgW3VzXTsKWWUgYWxzbyBoZWxwaW5nIHRvZ2V0aGVyIGJ5IHByYXllciBmb3IgdXMsIHRoYXQgZm9yIHRoZSBnaWZ0IFtiZXN0b3dlZF0gdXBvbiB1cyBieSB0aGUgbWVhbnMgb2YgbWFueSBwZXJzb25zIHRoYW5rcyBtYXkgYmUgZ2l2ZW4gYnkgbWFueSBvbiBvdXIgYmVoYWxmLgpGb3Igb3VyIHJlam9pY2luZyBpcyB0aGlzLCB0aGUgdGVzdGltb255IG9mIG91ciBjb25zY2llbmNlLCB0aGF0IGluIHNpbXBsaWNpdHkgYW5kIGdvZGx5IHNpbmNlcml0eSwgbm90IHdpdGggZmxlc2hseSB3aXNkb20sIGJ1dCBieSB0aGUgZ3JhY2Ugb2YgR29kLCB3ZSBoYXZlIGhhZCBvdXIgY29udmVyc2F0aW9uIGluIHRoZSB3b3JsZCwgYW5kIG1vcmUgYWJ1bmRhbnRseSB0byB5b3Utd2FyZC4KRm9yIHdlIHdyaXRlIG5vbmUgb3RoZXIgdGhpbmdzIHVudG8geW91LCB0aGFuIHdoYXQgeWUgcmVhZCBvciBhY2tub3dsZWRnZTsgYW5kIEkgdHJ1c3QgeWUgc2hhbGwgYWNrbm93bGVkZ2UgZXZlbiB0byB0aGUgZW5kOwpBcyBhbHNvIHllIGhhdmUgYWNrbm93bGVkZ2VkIHVzIGluIHBhcnQsIHRoYXQgd2UgYXJlIHlvdXIgcmVqb2ljaW5nLCBldmVuIGFzIHllIGFsc28gW2FyZV0gb3VycyBpbiB0aGUgZGF5IG9mIHRoZSBMb3JkIEplc3VzLgpBbmQgaW4gdGhpcyBjb25maWRlbmNlIEkgd2FzIG1pbmRlZCB0byBjb21lIHVudG8geW91IGJlZm9yZSwgdGhhdCB5ZSBtaWdodCBoYXZlIGEgc2Vjb25kIGJlbmVmaXQ7CkFuZCB0byBwYXNzIGJ5IHlvdSBpbnRvIE1hY2Vkb25pYSwgYW5kIHRvIGNvbWUgYWdhaW4gb3V0IG9mIE1hY2Vkb25pYSB1bnRvIHlvdSwgYW5kIG9mIHlvdSB0byBiZSBicm91Z2h0IG9uIG15IHdheSB0b3dhcmQgSnVkYWVhLgpXaGVuIEkgdGhlcmVmb3JlIHdhcyB0aHVzIG1pbmRlZCwgZGlkIEkgdXNlIGxpZ2h0bmVzcz8gb3IgdGhlIHRoaW5ncyB0aGF0IEkgcHVycG9zZSwgZG8gSSBwdXJwb3NlIGFjY29yZGluZyB0byB0aGUgZmxlc2gsIHRoYXQgd2l0aCBtZSB0aGVyZSBzaG91bGQgYmUgeWVhIHllYSwgYW5kIG5heSBuYXk/CkJ1dCBbYXNdIEdvZCBbaXNdIHRydWUsIG91ciB3b3JkIHRvd2FyZCB5b3Ugd2FzIG5vdCB5ZWEgYW5kIG5heS4KRm9yIHRoZSBTb24gb2YgR29kLCBKZXN1cyBDaHJpc3QsIHdobyB3YXMgcHJlYWNoZWQgYW1vbmcgeW91IGJ5IHVzLCBbZXZlbl0gYnkgbWUgYW5kIFNpbHZhbnVzIGFuZCBUaW1vdGhldXMsIHdhcyBub3QgeWVhIGFuZCBuYXksIGJ1dCBpbiBoaW0gd2FzIHllYS4KRm9yIGFsbCB0aGUgcHJvbWlzZXMgb2YgR29kIGluIGhpbSBbYXJlXSB5ZWEsIGFuZCBpbiBoaW0gQW1lbiwgdW50byB0aGUgZ2xvcnkgb2YgR29kIGJ5IHVzLgpOb3cgaGUgd2hpY2ggc3RhYmxpc2hldGggdXMgd2l0aCB5b3UgaW4gQ2hyaXN0LCBhbmQgaGF0aCBhbm9pbnRlZCB1cywgW2lzXSBHb2Q7CldobyBoYXRoIGFsc28gc2VhbGVkIHVzLCBhbmQgZ2l2ZW4gdGhlIGVhcm5lc3Qgb2YgdGhlIFNwaXJpdCBpbiBvdXIgaGVhcnRzLgpNb3Jlb3ZlciBJIGNhbGwgR29kIGZvciBhIHJlY29yZCB1cG9uIG15IHNvdWwsIHRoYXQgdG8gc3BhcmUgeW91IEkgY2FtZSBub3QgYXMgeWV0IHVudG8gQ29yaW50aC4KTm90IGZvciB0aGF0IHdlIGhhdmUgZG9taW5pb24gb3ZlciB5b3VyIGZhaXRoLCBidXQgYXJlIGhlbHBlcnMgb2YgeW91ciBqb3k6IGZvciBieSBmYWl0aCB5ZSBzdGFuZC4KQnV0IEkgZGV0ZXJtaW5lZCB0aGlzIHdpdGggbXlzZWxmLCB0aGF0IEkgd291bGQgbm90IGNvbWUgYWdhaW4gdG8geW91IGluIGhlYXZpbmVzcy4KRm9yIGlmIEkgbWFrZSB5b3Ugc29ycnksIHdobyBpcyBoZSB0aGVuIHRoYXQgbWFrZXRoIG1lIGdsYWQsIGJ1dCB0aGUgc2FtZSB3aGljaCBpcyBtYWRlIHNvcnJ5IGJ5IG1lPwpBbmQgSSB3cm90ZSB0aGlzIHNhbWUgdW50byB5b3UsIGxlc3QsIHdoZW4gSSBjYW1lLCBJIHNob3VsZCBoYXZlIHNvcnJvdyBmcm9tIHRoZW0gb2Ygd2hvbSBJIG91Z2h0IHRvIHJlam9pY2U7IGhhdmluZyBjb25maWRlbmNlIGluIHlvdSBhbGwsIHRoYXQgbXkgam95IGlzIFt0aGUgam95XSBvZiB5b3UgYWxsLgpGb3Igb3V0IG9mIG11Y2ggYWZmbGljdGlvbiBhbmQgYW5ndWlzaCBvZiBoZWFydCBJIHdyb3RlIHVudG8geW91IHdpdGggbWFueSB0ZWFyczsgbm90IHRoYXQgeWUgc2hvdWxkIGJlIGdyaWV2ZWQsIGJ1dCB0aGF0IHllIG1pZ2h0IGtub3cgdGhlIGxvdmUgd2hpY2ggSSBoYXZlIG1vcmUgYWJ1bmRhbnRseSB1bnRvIHlvdS4KQnV0IGlmIGFueSBoYXZlIGNhdXNlZCBncmllZiwgaGUgaGF0aCBub3QgZ3JpZXZlZCBtZSwgYnV0IGluIHBhcnQ6IHRoYXQgSSBtYXkgbm90IG92ZXJjaGFyZ2UgeW91IGFsbC4KU3VmZmljaWVudCB0byBzdWNoIGEgbWFuIFtpc10gdGhpcyBwdW5pc2htZW50LCB3aGljaCBbd2FzIGluZmxpY3RlZF0gb2YgbWFueS4KU28gdGhhdCBjb250cmFyaXdpc2UgeWUgW291Z2h0XSByYXRoZXIgdG8gZm9yZ2l2ZSBbaGltXSwgYW5kIGNvbWZvcnQgW2hpbV0sIGxlc3QgcGVyaGFwcyBzdWNoIGEgb25lIHNob3VsZCBiZSBzd2FsbG93ZWQgdXAgd2l0aCBvdmVybXVjaCBzb3Jyb3cuCldoZXJlZm9yZSBJIGJlc2VlY2ggeW91IHRoYXQgeWUgd291bGQgY29uZmlybSBbeW91cl0gbG92ZSB0b3dhcmQgaGltLgpGb3IgdG8gdGhpcyBlbmQgYWxzbyBkaWQgSSB3cml0ZSwgdGhhdCBJIG1pZ2h0IGtub3cgdGhlIHByb29mIG9mIHlvdSwgd2hldGhlciB5ZSBiZSBvYmVkaWVudCBpbiBhbGwgdGhpbmdzLgpUbyB3aG9tIHllIGZvcmdpdmUgYW55IHRoaW5nLCBJIFtmb3JnaXZlXSBhbHNvOiBmb3IgaWYgSSBmb3JnYXZlIGFueSB0aGluZywgdG8gd2hvbSBJIGZvcmdhdmUgW2l0XSwgZm9yIHlvdXIgc2FrZXMgW2ZvcmdhdmUgSSBpdF0gaW4gdGhlIHBlcnNvbiBvZiBDaHJpc3Q7Ckxlc3QgU2F0YW4gc2hvdWxkIGdldCBhbiBhZHZhbnRhZ2Ugb2YgdXM6IGZvciB3ZSBhcmUgbm90IGlnbm9yYW50IG9mIGhpcyBkZXZpY2VzLgpGdXJ0aGVybW9yZSwgd2hlbiBJIGNhbWUgdG8gVHJvYXMgdG8gW3ByZWFjaF0gQ2hyaXN0J3MgZ29zcGVsLCBhbmQgYSBkb29yIHdhcyBvcGVuZWQgdW50byBtZSBvZiB0aGUgTG9yZCwKSSBoYWQgbm8gcmVzdCBpbiBteSBzcGlyaXQsIGJlY2F1c2UgSSBmb3VuZCBub3QgVGl0dXMgbXkgYnJvdGhlcjogYnV0IHRha2luZyBteSBsZWF2ZSBvZiB0aGVtLCBJIHdlbnQgZnJvbSB0aGVuY2UgaW50byBNYWNlZG9uaWEuCk5vdyB0aGFua3MgW2JlXSB1bnRvIEdvZCwgd2hpY2ggYWx3YXlzIGNhdXNldGggdXMgdG8gdHJpdW1waCBpbiBDaHJpc3QsIGFuZCBtYWtldGggbWFuaWZlc3QgdGhlIHNhdm91ciBvZiBoaXMga25vd2xlZGdlIGJ5IHVzIGluIGV2ZXJ5IHBsYWNlLgpGb3Igd2UgYXJlIHVudG8gR29kIGEgc3dlZXQgc2F2b3VyIG9mIENocmlzdCwgaW4gdGhlbSB0aGF0IGFyZSBzYXZlZCwgYW5kIGluIHRoZW0gdGhhdCBwZXJpc2g6ClRvIHRoZSBvbmUgW3dlIGFyZV0gdGhlIHNhdm91ciBvZiBkZWF0aCB1bnRvIGRlYXRoOyBhbmQgdG8gdGhlIG90aGVyIHRoZSBzYXZvdXIgb2YgbGlmZSB1bnRvIGxpZmUuIEFuZCB3aG8gW2lzXSBzdWZmaWNpZW50IGZvciB0aGVzZSB0aGluZ3M/CkZvciB3ZSBhcmUgbm90IGFzIG1hbnksIHdoaWNoIGNvcnJ1cHQgdGhlIHdvcmQgb2YgR29kOiBidXQgYXMgb2Ygc2luY2VyaXR5LCBidXQgYXMgb2YgR29kLCBpbiB0aGUgc2lnaHQgb2YgR29kIHNwZWFrIHdlIGluIENocmlzdC4KRG8gd2UgYmVnaW4gYWdhaW4gdG8gY29tbWVuZCBvdXJzZWx2ZXM/IG9yIG5lZWQgd2UsIGFzIHNvbWUgW290aGVyc10sIGVwaXN0bGVzIG9mIGNvbW1lbmRhdGlvbiB0byB5b3UsIG9yIFtsZXR0ZXJzXSBvZiBjb21tZW5kYXRpb24gZnJvbSB5b3U/ClllIGFyZSBvdXIgZXBpc3RsZSB3cml0dGVuIGluIG91ciBoZWFydHMsIGtub3duIGFuZCByZWFkIG9mIGFsbCBtZW46CltGb3Jhc211Y2ggYXMgeWUgYXJlXSBtYW5pZmVzdGx5IGRlY2xhcmVkIHRvIGJlIHRoZSBlcGlzdGxlIG9mIENocmlzdCBtaW5pc3RlcmVkIGJ5IHVzLCB3cml0dGVuIG5vdCB3aXRoIGluaywgYnV0IHdpdGggdGhlIFNwaXJpdCBvZiB0aGUgbGl2aW5nIEdvZDsgbm90IGluIHRhYmxlcyBvZiBzdG9uZSwgYnV0IGluIGZsZXNobHkgdGFibGVzIG9mIHRoZSBoZWFydC4KQW5kIHN1Y2ggdHJ1c3QgaGF2ZSB3ZSB0aHJvdWdoIENocmlzdCB0byBHb2Qtd2FyZDoKTm90IHRoYXQgd2UgYXJlIHN1ZmZpY2llbnQgb2Ygb3Vyc2VsdmVzIHRvIHRoaW5rIGFueSB0aGluZyBhcyBvZiBvdXJzZWx2ZXM7IGJ1dCBvdXIgc3VmZmljaWVuY3kgW2lzXSBvZiBHb2Q7CldobyBhbHNvIGhhdGggbWFkZSB1cyBhYmxlIG1pbmlzdGVycyBvZiB0aGUgbmV3IHRlc3RhbWVudDsgbm90IG9mIHRoZSBsZXR0ZXIsIGJ1dCBvZiB0aGUgc3Bpcml0OiBmb3IgdGhlIGxldHRlciBraWxsZXRoLCBidXQgdGhlIHNwaXJpdCBnaXZldGggbGlmZS4KQnV0IGlmIHRoZSBtaW5pc3RyYXRpb24gb2YgZGVhdGgsIHdyaXR0ZW4gW2FuZF0gZW5ncmF2ZW4gaW4gc3RvbmVzLCB3YXMgZ2xvcmlvdXMsIHNvIHRoYXQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBjb3VsZCBub3Qgc3RlZGZhc3RseSBiZWhvbGQgdGhlIGZhY2Ugb2YgTW9zZXMgZm9yIHRoZSBnbG9yeSBvZiBoaXMgY291bnRlbmFuY2U7IHdoaWNoIFtnbG9yeV0gd2FzIHRvIGJlIGRvbmUgYXdheToKSG93IHNoYWxsIG5vdCB0aGUgbWluaXN0cmF0aW9uIG9mIHRoZSBzcGlyaXQgYmUgcmF0aGVyIGdsb3Jpb3VzPwpGb3IgaWYgdGhlIG1pbmlzdHJhdGlvbiBvZiBjb25kZW1uYXRpb24gW2JlXSBnbG9yeSwgbXVjaCBtb3JlIGRvdGggdGhlIG1pbmlzdHJhdGlvbiBvZiByaWdodGVvdXNuZXNzIGV4Y2VlZCBpbiBnbG9yeS4KRm9yIGV2ZW4gdGhhdCB3aGljaCB3YXMgbWFkZSBnbG9yaW91cyBoYWQgbm8gZ2xvcnkgaW4gdGhpcyByZXNwZWN0LCBieSByZWFzb24gb2YgdGhlIGdsb3J5IHRoYXQgZXhjZWxsZXRoLgpGb3IgaWYgdGhhdCB3aGljaCBpcyBkb25lIGF3YXkgW3dhc10gZ2xvcmlvdXMsIG11Y2ggbW9yZSB0aGF0IHdoaWNoIHJlbWFpbmV0aCBbaXNdIGdsb3Jpb3VzLgpTZWVpbmcgdGhlbiB0aGF0IHdlIGhhdmUgc3VjaCBob3BlLCB3ZSB1c2UgZ3JlYXQgcGxhaW5uZXNzIG9mIHNwZWVjaDoKQW5kIG5vdCBhcyBNb3NlcywgW3doaWNoXSBwdXQgYSB2ZWlsIG92ZXIgaGlzIGZhY2UsIHRoYXQgdGhlIGNoaWxkcmVuIG9mIElzcmFlbCBjb3VsZCBub3Qgc3RlZGZhc3RseSBsb29rIHRvIHRoZSBlbmQgb2YgdGhhdCB3aGljaCBpcyBhYm9saXNoZWQ6CkJ1dCB0aGVpciBtaW5kcyB3ZXJlIGJsaW5kZWQ6IGZvciB1bnRpbCB0aGlzIGRheSByZW1haW5ldGggdGhlIHNhbWUgdmVpbCB1bnRha2VuIGF3YXkgaW4gdGhlIHJlYWRpbmcgb2YgdGhlIG9sZCB0ZXN0YW1lbnQ7IHdoaWNoIFt2ZWlsXSBpcyBkb25lIGF3YXkgaW4gQ2hyaXN0LgpCdXQgZXZlbiB1bnRvIHRoaXMgZGF5LCB3aGVuIE1vc2VzIGlzIHJlYWQsIHRoZSB2ZWlsIGlzIHVwb24gdGhlaXIgaGVhcnQuCk5ldmVydGhlbGVzcyB3aGVuIGl0IHNoYWxsIHR1cm4gdG8gdGhlIExvcmQsIHRoZSB2ZWlsIHNoYWxsIGJlIHRha2VuIGF3YXkuCk5vdyB0aGUgTG9yZCBpcyB0aGF0IFNwaXJpdDogYW5kIHdoZXJlIHRoZSBTcGlyaXQgb2YgdGhlIExvcmQgW2lzXSwgdGhlcmUgW2lzXSBsaWJlcnR5LgpCdXQgd2UgYWxsLCB3aXRoIG9wZW4gZmFjZSBiZWhvbGRpbmcgYXMgaW4gYSBnbGFzcyB0aGUgZ2xvcnkgb2YgdGhlIExvcmQsIGFyZSBjaGFuZ2VkIGludG8gdGhlIHNhbWUgaW1hZ2UgZnJvbSBnbG9yeSB0byBnbG9yeSwgW2V2ZW5dIGFzIGJ5IHRoZSBTcGlyaXQgb2YgdGhlIExvcmQuClRoZXJlZm9yZSBzZWVpbmcgd2UgaGF2ZSB0aGlzIG1pbmlzdHJ5LCBhcyB3ZSBoYXZlIHJlY2VpdmVkIG1lcmN5LCB3ZSBmYWludCBub3Q7CkJ1dCBoYXZlIHJlbm91bmNlZCB0aGUgaGlkZGVuIHRoaW5ncyBvZiBkaXNob25lc3R5LCBub3Qgd2Fsa2luZyBpbiBjcmFmdGluZXNzLCBub3IgaGFuZGxpbmcgdGhlIHdvcmQgb2YgR29kIGRlY2VpdGZ1bGx5OyBidXQgYnkgbWFuaWZlc3RhdGlvbiBvZiB0aGUgdHJ1dGggY29tbWVuZGluZyBvdXJzZWx2ZXMgdG8gZXZlcnkgbWFuJ3MgY29uc2NpZW5jZSBpbiB0aGUgc2lnaHQgb2YgR29kLgpCdXQgaWYgb3VyIGdvc3BlbCBiZSBoaWQsIGl0IGlzIGhpZCB0byB0aGVtIHRoYXQgYXJlIGxvc3Q6CkluIHdob20gdGhlIGdvZCBvZiB0aGlzIHdvcmxkIGhhdGggYmxpbmRlZCB0aGUgbWluZHMgb2YgdGhlbSB3aGljaCBiZWxpZXZlIG5vdCwgbGVzdCB0aGUgbGlnaHQgb2YgdGhlIGdsb3Jpb3VzIGdvc3BlbCBvZiBDaHJpc3QsIHdobyBpcyB0aGUgaW1hZ2Ugb2YgR29kLCBzaG91bGQgc2hpbmUgdW50byB0aGVtLgpGb3Igd2UgcHJlYWNoIG5vdCBvdXJzZWx2ZXMsIGJ1dCBDaHJpc3QgSmVzdXMgdGhlIExvcmQ7IGFuZCBvdXJzZWx2ZXMgeW91ciBzZXJ2YW50cyBmb3IgSmVzdXMnIHNha2UuCkZvciBHb2QsIHdobyBjb21tYW5kZWQgdGhlIGxpZ2h0IHRvIHNoaW5lIG91dCBvZiBkYXJrbmVzcywgaGF0aCBzaGluZWQgaW4gb3VyIGhlYXJ0cywgdG8gW2dpdmVdIHRoZSBsaWdodCBvZiB0aGUga25vd2xlZGdlIG9mIHRoZSBnbG9yeSBvZiBHb2QgaW4gdGhlIGZhY2Ugb2YgSmVzdXMgQ2hyaXN0LgpCdXQgd2UgaGF2ZSB0aGlzIHRyZWFzdXJlIGluIGVhcnRoZW4gdmVzc2VscywgdGhhdCB0aGUgZXhjZWxsZW5jeSBvZiB0aGUgcG93ZXIgbWF5IGJlIG9mIEdvZCwgYW5kIG5vdCBvZiB1cy4KW1dlIGFyZV0gdHJvdWJsZWQgb24gZXZlcnkgc2lkZSwgeWV0IG5vdCBkaXN0cmVzc2VkOyBbd2UgYXJlXSBwZXJwbGV4ZWQsIGJ1dCBub3QgaW4gZGVzcGFpcjsKUGVyc2VjdXRlZCwgYnV0IG5vdCBmb3JzYWtlbjsgY2FzdCBkb3duLCBidXQgbm90IGRlc3Ryb3llZDsKQWx3YXlzIGJlYXJpbmcgYWJvdXQgaW4gdGhlIGJvZHkgdGhlIGR5aW5nIG9mIHRoZSBMb3JkIEplc3VzLCB0aGF0IHRoZSBsaWZlIGFsc28gb2YgSmVzdXMgbWlnaHQgYmUgbWFkZSBtYW5pZmVzdCBpbiBvdXIgYm9keS4KRm9yIHdlIHdoaWNoIGxpdmUgYXJlIGFsd2F5IGRlbGl2ZXJlZCB1bnRvIGRlYXRoIGZvciBKZXN1cycgc2FrZSwgdGhhdCB0aGUgbGlmZSBhbHNvIG9mIEplc3VzIG1pZ2h0IGJlIG1hZGUgbWFuaWZlc3QgaW4gb3VyIG1vcnRhbCBmbGVzaC4KU28gdGhlbiBkZWF0aCB3b3JrZXRoIGluIHVzLCBidXQgbGlmZSBpbiB5b3UuCldlIGhhdmluZyB0aGUgc2FtZSBzcGlyaXQgb2YgZmFpdGgsIGFjY29yZGluZyBhcyBpdCBpcyB3cml0dGVuLCBJIGJlbGlldmVkLCBhbmQgdGhlcmVmb3JlIGhhdmUgSSBzcG9rZW47IHdlIGFsc28gYmVsaWV2ZSwgYW5kIHRoZXJlZm9yZSBzcGVhazsKS25vd2luZyB0aGF0IGhlIHdoaWNoIHJhaXNlZCB1cCB0aGUgTG9yZCBKZXN1cyBzaGFsbCByYWlzZSB1cCB1cyBhbHNvIGJ5IEplc3VzLCBhbmQgc2hhbGwgcHJlc2VudCBbdXNdIHdpdGggeW91LgpGb3IgYWxsIHRoaW5ncyBbYXJlXSBmb3IgeW91ciBzYWtlcywgdGhhdCB0aGUgYWJ1bmRhbnQgZ3JhY2UgbWlnaHQgdGhyb3VnaCB0aGUgdGhhbmtzZ2l2aW5nIG9mIG1hbnkgcmVkb3VuZCB0byB0aGUgZ2xvcnkgb2YgR29kLgpGb3Igd2hpY2ggY2F1c2Ugd2UgZmFpbnQgbm90OyBidXQgdGhvdWdoIG91ciBvdXR3YXJkIG1hbiBwZXJpc2gsIHlldCB0aGUgaW53YXJkIFttYW5dIGlzIHJlbmV3ZWQgZGF5IGJ5IGRheS4KRm9yIG91ciBsaWdodCBhZmZsaWN0aW9uLCB3aGljaCBpcyBidXQgZm9yIGEgbW9tZW50LCB3b3JrZXRoIGZvciB1cyBhIGZhciBtb3JlIGV4Y2VlZGluZyBbYW5kXSBldGVybmFsIHdlaWdodCBvZiBnbG9yeTsKV2hpbGUgd2UgbG9vayBub3QgYXQgdGhlIHRoaW5ncyB3aGljaCBhcmUgc2VlbiwgYnV0IGF0IHRoZSB0aGluZ3Mgd2hpY2ggYXJlIG5vdCBzZWVuOiBmb3IgdGhlIHRoaW5ncyB3aGljaCBhcmUgc2VlbiBbYXJlXSB0ZW1wb3JhbDsgYnV0IHRoZSB0aGluZ3Mgd2hpY2ggYXJlIG5vdCBzZWVuIFthcmVdIGV0ZXJuYWwuCkZvciB3ZSBrbm93IHRoYXQgaWYgb3VyIGVhcnRobHkgaG91c2Ugb2YgW3RoaXNdIHRhYmVybmFjbGUgd2VyZSBkaXNzb2x2ZWQsIHdlIGhhdmUgYSBidWlsZGluZyBvZiBHb2QsIGFuIGhvdXNlIG5vdCBtYWRlIHdpdGggaGFuZHMsIGV0ZXJuYWwgaW4gdGhlIGhlYXZlbnMuCkZvciBpbiB0aGlzIHdlIGdyb2FuLCBlYXJuZXN0bHkgZGVzaXJpbmcgdG8gYmUgY2xvdGhlZCB1cG9uIHdpdGggb3VyIGhvdXNlIHdoaWNoIGlzIGZyb20gaGVhdmVuOgpJZiBzbyBiZSB0aGF0IGJlaW5nIGNsb3RoZWQgd2Ugc2hhbGwgbm90IGJlIGZvdW5kIG5ha2VkLgpGb3Igd2UgdGhhdCBhcmUgaW4gW3RoaXNdIHRhYmVybmFjbGUgZG8gZ3JvYW4sIGJlaW5nIGJ1cmRlbmVkOiBub3QgZm9yIHRoYXQgd2Ugd291bGQgYmUgdW5jbG90aGVkLCBidXQgY2xvdGhlZCB1cG9uLCB0aGF0IG1vcnRhbGl0eSBtaWdodCBiZSBzd2FsbG93ZWQgdXAgb2YgbGlmZS4KTm93IGhlIHRoYXQgaGF0aCB3cm91Z2h0IHVzIGZvciB0aGUgc2VsZnNhbWUgdGhpbmcgW2lzXSBHb2QsIHdobyBhbHNvIGhhdGggZ2l2ZW4gdW50byB1cyB0aGUgZWFybmVzdCBvZiB0aGUgU3Bpcml0LgpUaGVyZWZvcmUgW3dlIGFyZV0gYWx3YXlzIGNvbmZpZGVudCwga25vd2luZyB0aGF0LCB3aGlsc3Qgd2UgYXJlIGF0IGhvbWUgaW4gdGhlIGJvZHksIHdlIGFyZSBhYnNlbnQgZnJvbSB0aGUgTG9yZDoKKEZvciB3ZSB3YWxrIGJ5IGZhaXRoLCBub3QgYnkgc2lnaHQ6KQpXZSBhcmUgY29uZmlkZW50LCBbSSBzYXldLCBhbmQgd2lsbGluZyByYXRoZXIgdG8gYmUgYWJzZW50IGZyb20gdGhlIGJvZHksIGFuZCB0byBiZSBwcmVzZW50IHdpdGggdGhlIExvcmQuCldoZXJlZm9yZSB3ZSBsYWJvdXIsIHRoYXQsIHdoZXRoZXIgcHJlc2VudCBvciBhYnNlbnQsIHdlIG1heSBiZSBhY2NlcHRlZCBvZiBoaW0uCkZvciB3ZSBtdXN0IGFsbCBhcHBlYXIgYmVmb3JlIHRoZSBqdWRnbWVudCBzZWF0IG9mIENocmlzdDsgdGhhdCBldmVyeSBvbmUgbWF5IHJlY2VpdmUgdGhlIHRoaW5ncyBbZG9uZV0gaW4gW2hpc10gYm9keSwgYWNjb3JkaW5nIHRvIHRoYXQgaGUgaGF0aCBkb25lLCB3aGV0aGVyIFtpdCBiZV0gZ29vZCBvciBiYWQuCktub3dpbmcgdGhlcmVmb3JlIHRoZSB0ZXJyb3Igb2YgdGhlIExvcmQsIHdlIHBlcnN1YWRlIG1lbjsgYnV0IHdlIGFyZSBtYWRlIG1hbmlmZXN0IHVudG8gR29kOyBhbmQgSSB0cnVzdCBhbHNvIGFyZSBtYWRlIG1hbmlmZXN0IGluIHlvdXIgY29uc2NpZW5jZXMuCkZvciB3ZSBjb21tZW5kIG5vdCBvdXJzZWx2ZXMgYWdhaW4gdW50byB5b3UsIGJ1dCBnaXZlIHlvdSBvY2Nhc2lvbiB0byBnbG9yeSBvbiBvdXIgYmVoYWxmLCB0aGF0IHllIG1heSBoYXZlIHNvbWV3aGF0IHRvIFthbnN3ZXJdIHRoZW0gd2hpY2ggZ2xvcnkgaW4gYXBwZWFyYW5jZSwgYW5kIG5vdCBpbiBoZWFydC4KRm9yIHdoZXRoZXIgd2UgYmUgYmVzaWRlIG91cnNlbHZlcywgW2l0IGlzXSB0byBHb2Q6IG9yIHdoZXRoZXIgd2UgYmUgc29iZXIsIFtpdCBpc10gZm9yIHlvdXIgY2F1c2UuCkZvciB0aGUgbG92ZSBvZiBDaHJpc3QgY29uc3RyYWluZXRoIHVzOyBiZWNhdXNlIHdlIHRodXMganVkZ2UsIHRoYXQgaWYgb25lIGRpZWQgZm9yIGFsbCwgdGhlbiB3ZXJlIGFsbCBkZWFkOgpBbmQgW3RoYXRdIGhlIGRpZWQgZm9yIGFsbCwgdGhhdCB0aGV5IHdoaWNoIGxpdmUgc2hvdWxkIG5vdCBoZW5jZWZvcnRoIGxpdmUgdW50byB0aGVtc2VsdmVzLCBidXQgdW50byBoaW0gd2hpY2ggZGllZCBmb3IgdGhlbSwgYW5kIHJvc2UgYWdhaW4uCldoZXJlZm9yZSBoZW5jZWZvcnRoIGtub3cgd2Ugbm8gbWFuIGFmdGVyIHRoZSBmbGVzaDogeWVhLCB0aG91Z2ggd2UgaGF2ZSBrbm93biBDaHJpc3QgYWZ0ZXIgdGhlIGZsZXNoLCB5ZXQgbm93IGhlbmNlZm9ydGgga25vdyB3ZSBbaGltXSBubyBtb3JlLgpUaGVyZWZvcmUgaWYgYW55IG1hbiBbYmVdIGluIENocmlzdCwgW2hlIGlzXSBhIG5ldyBjcmVhdHVyZTogb2xkIHRoaW5ncyBhcmUgcGFzc2VkIGF3YXk7IGJlaG9sZCwgYWxsIHRoaW5ncyBhcmUgYmVjb21lIG5ldy4KQW5kIGFsbCB0aGluZ3MgW2FyZV0gb2YgR29kLCB3aG8gaGF0aCByZWNvbmNpbGVkIHVzIHRvIGhpbXNlbGYgYnkgSmVzdXMgQ2hyaXN0LCBhbmQgaGF0aCBnaXZlbiB0byB1cyB0aGUgbWluaXN0cnkgb2YgcmVjb25jaWxpYXRpb247ClRvIHdpdCwgdGhhdCBHb2Qgd2FzIGluIENocmlzdCwgcmVjb25jaWxpbmcgdGhlIHdvcmxkIHVudG8gaGltc2VsZiwgbm90IGltcHV0aW5nIHRoZWlyIHRyZXNwYXNzZXMgdW50byB0aGVtOyBhbmQgaGF0aCBjb21taXR0ZWQgdW50byB1cyB0aGUgd29yZCBvZiByZWNvbmNpbGlhdGlvbi4KTm93IHRoZW4gd2UgYXJlIGFtYmFzc2Fkb3JzIGZvciBDaHJpc3QsIGFzIHRob3VnaCBHb2QgZGlkIGJlc2VlY2ggW3lvdV0gYnkgdXM6IHdlIHByYXkgW3lvdV0gaW4gQ2hyaXN0J3Mgc3RlYWQsIGJlIHllIHJlY29uY2lsZWQgdG8gR29kLgpGb3IgaGUgaGF0aCBtYWRlIGhpbSBbdG8gYmVdIHNpbiBmb3IgdXMsIHdobyBrbmV3IG5vIHNpbjsgdGhhdCB3ZSBtaWdodCBiZSBtYWRlIHRoZSByaWdodGVvdXNuZXNzIG9mIEdvZCBpbiBoaW0uCldlIHRoZW4sIFthc10gd29ya2VycyB0b2dldGhlciBbd2l0aCBoaW1dLCBiZXNlZWNoIFt5b3VdIGFsc28gdGhhdCB5ZSByZWNlaXZlIG5vdCB0aGUgZ3JhY2Ugb2YgR29kIGluIHZhaW4uCihGb3IgaGUgc2FpdGgsIEkgaGF2ZSBoZWFyZCB0aGVlIGluIGEgdGltZSBhY2NlcHRlZCwgYW5kIGluIHRoZSBkYXkgb2Ygc2FsdmF0aW9uIGhhdmUgSSBzdWNjb3VyZWQgdGhlZTogYmVob2xkLCBub3cgW2lzXSB0aGUgYWNjZXB0ZWQgdGltZTsgYmVob2xkLCBub3cgW2lzXSB0aGUgZGF5IG9mIHNhbHZhdGlvbi4pCkdpdmluZyBubyBvZmZlbmNlIGluIGFueSB0aGluZywgdGhhdCB0aGUgbWluaXN0cnkgYmUgbm90IGJsYW1lZDoKQnV0IGluIGFsbCBbdGhpbmdzXSBhcHByb3Zpbmcgb3Vyc2VsdmVzIGFzIHRoZSBtaW5pc3RlcnMgb2YgR29kLCBpbiBtdWNoIHBhdGllbmNlLCBpbiBhZmZsaWN0aW9ucywgaW4gbmVjZXNzaXRpZXMsIGluIGRpc3RyZXNzZXMsCkluIHN0cmlwZXMsIGluIGltcHJpc29ubWVudHMsIGluIHR1bXVsdHMsIGluIGxhYm91cnMsIGluIHdhdGNoaW5ncywgaW4gZmFzdGluZ3M7CkJ5IHB1cmVuZXNzLCBieSBrbm93bGVkZ2UsIGJ5IGxvbmdzdWZmZXJpbmcsIGJ5IGtpbmRuZXNzLCBieSB0aGUgSG9seSBHaG9zdCwgYnkgbG92ZSB1bmZlaWduZWQsCkJ5IHRoZSB3b3JkIG9mIHRydXRoLCBieSB0aGUgcG93ZXIgb2YgR29kLCBieSB0aGUgYXJtb3VyIG9mIHJpZ2h0ZW91c25lc3Mgb24gdGhlIHJpZ2h0IGhhbmQgYW5kIG9uIHRoZSBsZWZ0LApCeSBob25vdXIgYW5kIGRpc2hvbm91ciwgYnkgZXZpbCByZXBvcnQgYW5kIGdvb2QgcmVwb3J0OiBhcyBkZWNlaXZlcnMsIGFuZCBbeWV0XSB0cnVlOwpBcyB1bmtub3duLCBhbmQgW3lldF0gd2VsbCBrbm93bjsgYXMgZHlpbmcsIGFuZCwgYmVob2xkLCB3ZSBsaXZlOyBhcyBjaGFzdGVuZWQsIGFuZCBub3Qga2lsbGVkOwpBcyBzb3Jyb3dmdWwsIHlldCBhbHdheSByZWpvaWNpbmc7IGFzIHBvb3IsIHlldCBtYWtpbmcgbWFueSByaWNoOyBhcyBoYXZpbmcgbm90aGluZywgYW5kIFt5ZXRdIHBvc3Nlc3NpbmcgYWxsIHRoaW5ncy4KTyBbeWVdIENvcmludGhpYW5zLCBvdXIgbW91dGggaXMgb3BlbiB1bnRvIHlvdSwgb3VyIGhlYXJ0IGlzIGVubGFyZ2VkLgpZZSBhcmUgbm90IHN0cmFpdGVuZWQgaW4gdXMsIGJ1dCB5ZSBhcmUgc3RyYWl0ZW5lZCBpbiB5b3VyIG93biBib3dlbHMuCk5vdyBmb3IgYSByZWNvbXBlbnNlIGluIHRoZSBzYW1lLCAoSSBzcGVhayBhcyB1bnRvIFtteV0gY2hpbGRyZW4sKSBiZSB5ZSBhbHNvIGVubGFyZ2VkLgpCZSB5ZSBub3QgdW5lcXVhbGx5IHlva2VkIHRvZ2V0aGVyIHdpdGggdW5iZWxpZXZlcnM6IGZvciB3aGF0IGZlbGxvd3NoaXAgaGF0aCByaWdodGVvdXNuZXNzIHdpdGggdW5yaWdodGVvdXNuZXNzPyBhbmQgd2hhdCBjb21tdW5pb24gaGF0aCBsaWdodCB3aXRoIGRhcmtuZXNzPwpBbmQgd2hhdCBjb25jb3JkIGhhdGggQ2hyaXN0IHdpdGggQmVsaWFsPyBvciB3aGF0IHBhcnQgaGF0aCBoZSB0aGF0IGJlbGlldmV0aCB3aXRoIGFuIGluZmlkZWw/CkFuZCB3aGF0IGFncmVlbWVudCBoYXRoIHRoZSB0ZW1wbGUgb2YgR29kIHdpdGggaWRvbHM/IGZvciB5ZSBhcmUgdGhlIHRlbXBsZSBvZiB0aGUgbGl2aW5nIEdvZDsgYXMgR29kIGhhdGggc2FpZCwgSSB3aWxsIGR3ZWxsIGluIHRoZW0sIGFuZCB3YWxrIGluIFt0aGVtXTsgYW5kIEkgd2lsbCBiZSB0aGVpciBHb2QsIGFuZCB0aGV5IHNoYWxsIGJlIG15IHBlb3BsZS4KV2hlcmVmb3JlIGNvbWUgb3V0IGZyb20gYW1vbmcgdGhlbSwgYW5kIGJlIHllIHNlcGFyYXRlLCBzYWl0aCB0aGUgTG9yZCwgYW5kIHRvdWNoIG5vdCB0aGUgdW5jbGVhbiBbdGhpbmddOyBhbmQgSSB3aWxsIHJlY2VpdmUgeW91LApBbmQgd2lsbCBiZSBhIEZhdGhlciB1bnRvIHlvdSwgYW5kIHllIHNoYWxsIGJlIG15IHNvbnMgYW5kIGRhdWdodGVycywgc2FpdGggdGhlIExvcmQgQWxtaWdodHkuCkhhdmluZyB0aGVyZWZvcmUgdGhlc2UgcHJvbWlzZXMsIGRlYXJseSBiZWxvdmVkLCBsZXQgdXMgY2xlYW5zZSBvdXJzZWx2ZXMgZnJvbSBhbGwgZmlsdGhpbmVzcyBvZiB0aGUgZmxlc2ggYW5kIHNwaXJpdCwgcGVyZmVjdGluZyBob2xpbmVzcyBpbiB0aGUgZmVhciBvZiBHb2QuClJlY2VpdmUgdXM7IHdlIGhhdmUgd3JvbmdlZCBubyBtYW4sIHdlIGhhdmUgY29ycnVwdGVkIG5vIG1hbiwgd2UgaGF2ZSBkZWZyYXVkZWQgbm8gbWFuLgpJIHNwZWFrIG5vdCBbdGhpc10gdG8gY29uZGVtbiBbeW91XTogZm9yIEkgaGF2ZSBzYWlkIGJlZm9yZSwgdGhhdCB5ZSBhcmUgaW4gb3VyIGhlYXJ0cyB0byBkaWUgYW5kIGxpdmUgd2l0aCBbeW91XS4KR3JlYXQgW2lzXSBteSBib2xkbmVzcyBvZiBzcGVlY2ggdG93YXJkIHlvdSwgZ3JlYXQgW2lzXSBteSBnbG9yeWluZyBvZiB5b3U6IEkgYW0gZmlsbGVkIHdpdGggY29tZm9ydCwgSSBhbSBleGNlZWRpbmcgam95ZnVsIGluIGFsbCBvdXIgdHJpYnVsYXRpb24uCkZvciwgd2hlbiB3ZSB3ZXJlIGNvbWUgaW50byBNYWNlZG9uaWEsIG91ciBmbGVzaCBoYWQgbm8gcmVzdCwgYnV0IHdlIHdlcmUgdHJvdWJsZWQgb24gZXZlcnkgc2lkZTsgd2l0aG91dCBbd2VyZV0gZmlnaHRpbmdzLCB3aXRoaW4gW3dlcmVdIGZlYXJzLgpOZXZlcnRoZWxlc3MgR29kLCB0aGF0IGNvbWZvcnRldGggdGhvc2UgdGhhdCBhcmUgY2FzdCBkb3duLCBjb21mb3J0ZWQgdXMgYnkgdGhlIGNvbWluZyBvZiBUaXR1czsKQW5kIG5vdCBieSBoaXMgY29taW5nIG9ubHksIGJ1dCBieSB0aGUgY29uc29sYXRpb24gd2hlcmV3aXRoIGhlIHdhcyBjb21mb3J0ZWQgaW4geW91LCB3aGVuIGhlIHRvbGQgdXMgeW91ciBlYXJuZXN0IGRlc2lyZSwgeW91ciBtb3VybmluZywgeW91ciBmZXJ2ZW50IG1pbmQgdG93YXJkIG1lOyBzbyB0aGF0IEkgcmVqb2ljZWQgdGhlIG1vcmUuCkZvciB0aG91Z2ggSSBtYWRlIHlvdSBzb3JyeSB3aXRoIGEgbGV0dGVyLCBJIGRvIG5vdCByZXBlbnQsIHRob3VnaCBJIGRpZCByZXBlbnQ6IGZvciBJIHBlcmNlaXZlIHRoYXQgdGhlIHNhbWUgZXBpc3RsZSBoYXRoIG1hZGUgeW91IHNvcnJ5LCB0aG91Z2ggW2l0IHdlcmVdIGJ1dCBmb3IgYSBzZWFzb24uCk5vdyBJIHJlam9pY2UsIG5vdCB0aGF0IHllIHdlcmUgbWFkZSBzb3JyeSwgYnV0IHRoYXQgeWUgc29ycm93ZWQgdG8gcmVwZW50YW5jZTogZm9yIHllIHdlcmUgbWFkZSBzb3JyeSBhZnRlciBhIGdvZGx5IG1hbm5lciwgdGhhdCB5ZSBtaWdodCByZWNlaXZlIGRhbWFnZSBieSB1cyBpbiBub3RoaW5nLgpGb3IgZ29kbHkgc29ycm93IHdvcmtldGggcmVwZW50YW5jZSB0byBzYWx2YXRpb24gbm90IHRvIGJlIHJlcGVudGVkIG9mOiBidXQgdGhlIHNvcnJvdyBvZiB0aGUgd29ybGQgd29ya2V0aCBkZWF0aC4KRm9yIGJlaG9sZCB0aGlzIHNlbGZzYW1lIHRoaW5nLCB0aGF0IHllIHNvcnJvd2VkIGFmdGVyIGEgZ29kbHkgc29ydCwgd2hhdCBjYXJlZnVsbmVzcyBpdCB3cm91Z2h0IGluIHlvdSwgeWVhLCBbd2hhdF0gY2xlYXJpbmcgb2YgeW91cnNlbHZlcywgeWVhLCBbd2hhdF0gaW5kaWduYXRpb24sIHllYSwgW3doYXRdIGZlYXIsIHllYSwgW3doYXRdIHZlaGVtZW50IGRlc2lyZSwgeWVhLCBbd2hhdF0gemVhbCwgeWVhLCBbd2hhdF0gcmV2ZW5nZSEgSW4gYWxsIFt0aGluZ3NdIHllIGhhdmUgYXBwcm92ZWQgeW91cnNlbHZlcyB0byBiZSBjbGVhciBpbiB0aGlzIG1hdHRlci4KV2hlcmVmb3JlLCB0aG91Z2ggSSB3cm90ZSB1bnRvIHlvdSwgW0kgZGlkIGl0XSBub3QgZm9yIGhpcyBjYXVzZSB0aGF0IGhhZCBkb25lIHRoZSB3cm9uZywgbm9yIGZvciBoaXMgY2F1c2UgdGhhdCBzdWZmZXJlZCB3cm9uZywgYnV0IHRoYXQgb3VyIGNhcmUgZm9yIHlvdSBpbiB0aGUgc2lnaHQgb2YgR29kIG1pZ2h0IGFwcGVhciB1bnRvIHlvdS4KVGhlcmVmb3JlIHdlIHdlcmUgY29tZm9ydGVkIGluIHlvdXIgY29tZm9ydDogeWVhLCBhbmQgZXhjZWVkaW5nbHkgdGhlIG1vcmUgam95ZWQgd2UgZm9yIHRoZSBqb3kgb2YgVGl0dXMsIGJlY2F1c2UgaGlzIHNwaXJpdCB3YXMgcmVmcmVzaGVkIGJ5IHlvdSBhbGwuCkZvciBpZiBJIGhhdmUgYm9hc3RlZCBhbnkgdGhpbmcgdG8gaGltIG9mIHlvdSwgSSBhbSBub3QgYXNoYW1lZDsgYnV0IGFzIHdlIHNwYWtlIGFsbCB0aGluZ3MgdG8geW91IGluIHRydXRoLCBldmVuIHNvIG91ciBib2FzdGluZywgd2hpY2ggW0kgbWFkZV0gYmVmb3JlIFRpdHVzLCBpcyBmb3VuZCBhIHRydXRoLgpBbmQgaGlzIGlud2FyZCBhZmZlY3Rpb24gaXMgbW9yZSBhYnVuZGFudCB0b3dhcmQgeW91LCB3aGlsc3QgaGUgcmVtZW1iZXJldGggdGhlIG9iZWRpZW5jZSBvZiB5b3UgYWxsLCBob3cgd2l0aCBmZWFyIGFuZCB0cmVtYmxpbmcgeWUgcmVjZWl2ZWQgaGltLgpJIHJlam9pY2UgdGhlcmVmb3JlIHRoYXQgSSBoYXZlIGNvbmZpZGVuY2UgaW4geW91IGluIGFsbCBbdGhpbmdzXS4KTW9yZW92ZXIsIGJyZXRocmVuLCB3ZSBkbyB5b3UgdG8gd2l0IG9mIHRoZSBncmFjZSBvZiBHb2QgYmVzdG93ZWQgb24gdGhlIGNodXJjaGVzIG9mIE1hY2Vkb25pYTsKSG93IHRoYXQgaW4gYSBncmVhdCB0cmlhbCBvZiBhZmZsaWN0aW9uIHRoZSBhYnVuZGFuY2Ugb2YgdGhlaXIgam95IGFuZCB0aGVpciBkZWVwIHBvdmVydHkgYWJvdW5kZWQgdW50byB0aGUgcmljaGVzIG9mIHRoZWlyIGxpYmVyYWxpdHkuCkZvciB0byBbdGhlaXJdIHBvd2VyLCBJIGJlYXIgcmVjb3JkLCB5ZWEsIGFuZCBiZXlvbmQgW3RoZWlyXSBwb3dlciBbdGhleSB3ZXJlXSB3aWxsaW5nIG9mIHRoZW1zZWx2ZXM7ClByYXlpbmcgdXMgd2l0aCBtdWNoIGVudHJlYXR5IHRoYXQgd2Ugd291bGQgcmVjZWl2ZSB0aGUgZ2lmdCwgYW5kIFt0YWtlIHVwb24gdXNdIHRoZSBmZWxsb3dzaGlwIG9mIHRoZSBtaW5pc3RlcmluZyB0byB0aGUgc2FpbnRzLgpBbmQgW3RoaXMgdGhleSBkaWRdLCBub3QgYXMgd2UgaG9wZWQsIGJ1dCBmaXJzdCBnYXZlIHRoZWlyIG93biBzZWx2ZXMgdG8gdGhlIExvcmQsIGFuZCB1bnRvIHVzIGJ5IHRoZSB3aWxsIG9mIEdvZC4KSW5zb211Y2ggdGhhdCB3ZSBkZXNpcmVkIFRpdHVzLCB0aGF0IGFzIGhlIGhhZCBiZWd1biwgc28gaGUgd291bGQgYWxzbyBmaW5pc2ggaW4geW91IHRoZSBzYW1lIGdyYWNlIGFsc28uClRoZXJlZm9yZSwgYXMgeWUgYWJvdW5kIGluIGV2ZXJ5IFt0aGluZywgaW5dIGZhaXRoLCBhbmQgdXR0ZXJhbmNlLCBhbmQga25vd2xlZGdlLCBhbmQgW2luXSBhbGwgZGlsaWdlbmNlLCBhbmQgW2luXSB5b3VyIGxvdmUgdG8gdXMsIFtzZWVdIHRoYXQgeWUgYWJvdW5kIGluIHRoaXMgZ3JhY2UgYWxzby4KSSBzcGVhayBub3QgYnkgY29tbWFuZG1lbnQsIGJ1dCBieSBvY2Nhc2lvbiBvZiB0aGUgZm9yd2FyZG5lc3Mgb2Ygb3RoZXJzLCBhbmQgdG8gcHJvdmUgdGhlIHNpbmNlcml0eSBvZiB5b3VyIGxvdmUuCkZvciB5ZSBrbm93IHRoZSBncmFjZSBvZiBvdXIgTG9yZCBKZXN1cyBDaHJpc3QsIHRoYXQsIHRob3VnaCBoZSB3YXMgcmljaCwgeWV0IGZvciB5b3VyIHNha2VzIGhlIGJlY2FtZSBwb29yLCB0aGF0IHllIHRocm91Z2ggaGlzIHBvdmVydHkgbWlnaHQgYmUgcmljaC4KQW5kIGhlcmVpbiBJIGdpdmUgW215XSBhZHZpY2U6IGZvciB0aGlzIGlzIGV4cGVkaWVudCBmb3IgeW91LCB3aG8gaGF2ZSBiZWd1biBiZWZvcmUsIG5vdCBvbmx5IHRvIGRvLCBidXQgYWxzbyB0byBiZSBmb3J3YXJkIGEgeWVhciBhZ28uCk5vdyB0aGVyZWZvcmUgcGVyZm9ybSB0aGUgZG9pbmcgW29mIGl0XTsgdGhhdCBhcyBbdGhlcmUgd2FzXSBhIHJlYWRpbmVzcyB0byB3aWxsLCBzbyBbdGhlcmUgbWF5IGJlXSBhIHBlcmZvcm1hbmNlIGFsc28gb3V0IG9mIHRoYXQgd2hpY2ggeWUgaGF2ZS4KRm9yIGlmIHRoZXJlIGJlIGZpcnN0IGEgd2lsbGluZyBtaW5kLCBbaXQgaXNdIGFjY2VwdGVkIGFjY29yZGluZyB0byB0aGF0IGEgbWFuIGhhdGgsIFthbmRdIG5vdCBhY2NvcmRpbmcgdG8gdGhhdCBoZSBoYXRoIG5vdC4KRm9yIFtJIG1lYW5dIG5vdCB0aGF0IG90aGVyIG1lbiBiZSBlYXNlZCwgYW5kIHllIGJ1cmRlbmVkOgpCdXQgYnkgYW4gZXF1YWxpdHksIFt0aGF0XSBub3cgYXQgdGhpcyB0aW1lIHlvdXIgYWJ1bmRhbmNlIFttYXkgYmUgYSBzdXBwbHldIGZvciB0aGVpciB3YW50LCB0aGF0IHRoZWlyIGFidW5kYW5jZSBhbHNvIG1heSBiZSBbYSBzdXBwbHldIGZvciB5b3VyIHdhbnQ6IHRoYXQgdGhlcmUgbWF5IGJlIGVxdWFsaXR5OgpBcyBpdCBpcyB3cml0dGVuLCBIZSB0aGF0IFtoYWQgZ2F0aGVyZWRdIG11Y2ggaGFkIG5vdGhpbmcgb3ZlcjsgYW5kIGhlIHRoYXQgW2hhZCBnYXRoZXJlZF0gbGl0dGxlIGhhZCBubyBsYWNrLgpCdXQgdGhhbmtzIFtiZV0gdG8gR29kLCB3aGljaCBwdXQgdGhlIHNhbWUgZWFybmVzdCBjYXJlIGludG8gdGhlIGhlYXJ0IG9mIFRpdHVzIGZvciB5b3UuCkZvciBpbmRlZWQgaGUgYWNjZXB0ZWQgdGhlIGV4aG9ydGF0aW9uOyBidXQgYmVpbmcgbW9yZSBmb3J3YXJkLCBvZiBoaXMgb3duIGFjY29yZCBoZSB3ZW50IHVudG8geW91LgpBbmQgd2UgaGF2ZSBzZW50IHdpdGggaGltIHRoZSBicm90aGVyLCB3aG9zZSBwcmFpc2UgW2lzXSBpbiB0aGUgZ29zcGVsIHRocm91Z2hvdXQgYWxsIHRoZSBjaHVyY2hlczsKQW5kIG5vdCBbdGhhdF0gb25seSwgYnV0IHdobyB3YXMgYWxzbyBjaG9zZW4gb2YgdGhlIGNodXJjaGVzIHRvIHRyYXZlbCB3aXRoIHVzIHdpdGggdGhpcyBncmFjZSwgd2hpY2ggaXMgYWRtaW5pc3RlcmVkIGJ5IHVzIHRvIHRoZSBnbG9yeSBvZiB0aGUgc2FtZSBMb3JkLCBhbmQgW2RlY2xhcmF0aW9uIG9mXSB5b3VyIHJlYWR5IG1pbmQ6CkF2b2lkaW5nIHRoaXMsIHRoYXQgbm8gbWFuIHNob3VsZCBibGFtZSB1cyBpbiB0aGlzIGFidW5kYW5jZSB3aGljaCBpcyBhZG1pbmlzdGVyZWQgYnkgdXM6ClByb3ZpZGluZyBmb3IgaG9uZXN0IHRoaW5ncywgbm90IG9ubHkgaW4gdGhlIHNpZ2h0IG9mIHRoZSBMb3JkLCBidXQgYWxzbyBpbiB0aGUgc2lnaHQgb2YgbWVuLgpBbmQgd2UgaGF2ZSBzZW50IHdpdGggdGhlbSBvdXIgYnJvdGhlciwgd2hvbSB3ZSBoYXZlIG9mdGVudGltZXMgcHJvdmVkIGRpbGlnZW50IGluIG1hbnkgdGhpbmdzLCBidXQgbm93IG11Y2ggbW9yZSBkaWxpZ2VudCwgdXBvbiB0aGUgZ3JlYXQgY29uZmlkZW5jZSB3aGljaCBbSSBoYXZlXSBpbiB5b3UuCldoZXRoZXIgW2FueSBkbyBpbnF1aXJlXSBvZiBUaXR1cywgW2hlIGlzXSBteSBwYXJ0bmVyIGFuZCBmZWxsb3doZWxwZXIgY29uY2VybmluZyB5b3U6IG9yIG91ciBicmV0aHJlbiBbYmUgaW5xdWlyZWQgb2YsIHRoZXkgYXJlXSB0aGUgbWVzc2VuZ2VycyBvZiB0aGUgY2h1cmNoZXMsIFthbmRdIHRoZSBnbG9yeSBvZiBDaHJpc3QuCldoZXJlZm9yZSBzaG93IHllIHRvIHRoZW0sIGFuZCBiZWZvcmUgdGhlIGNodXJjaGVzLCB0aGUgcHJvb2Ygb2YgeW91ciBsb3ZlLCBhbmQgb2Ygb3VyIGJvYXN0aW5nIG9uIHlvdXIgYmVoYWxmLgpGb3IgYXMgdG91Y2hpbmcgdGhlIG1pbmlzdGVyaW5nIHRvIHRoZSBzYWludHMsIGl0IGlzIHN1cGVyZmx1b3VzIGZvciBtZSB0byB3cml0ZSB0byB5b3U6CkZvciBJIGtub3cgdGhlIGZvcndhcmRuZXNzIG9mIHlvdXIgbWluZCwgZm9yIHdoaWNoIEkgYm9hc3Qgb2YgeW91IHRvIHRoZW0gb2YgTWFjZWRvbmlhLCB0aGF0IEFjaGFpYSB3YXMgcmVhZHkgYSB5ZWFyIGFnbzsgYW5kIHlvdXIgemVhbCBoYXRoIHByb3Zva2VkIHZlcnkgbWFueS4KWWV0IGhhdmUgSSBzZW50IHRoZSBicmV0aHJlbiwgbGVzdCBvdXIgYm9hc3Rpbmcgb2YgeW91IHNob3VsZCBiZSBpbiB2YWluIGluIHRoaXMgYmVoYWxmOyB0aGF0LCBhcyBJIHNhaWQsIHllIG1heSBiZSByZWFkeToKTGVzdCBoYXBseSBpZiB0aGV5IG9mIE1hY2Vkb25pYSBjb21lIHdpdGggbWUsIGFuZCBmaW5kIHlvdSB1bnByZXBhcmVkLCB3ZSAodGhhdCB3ZSBzYXkgbm90LCB5ZSkgc2hvdWxkIGJlIGFzaGFtZWQgaW4gdGhpcyBzYW1lIGNvbmZpZGVudCBib2FzdGluZy4KVGhlcmVmb3JlIEkgdGhvdWdodCBpdCBuZWNlc3NhcnkgdG8gZXhob3J0IHRoZSBicmV0aHJlbiwgdGhhdCB0aGV5IHdvdWxkIGdvIGJlZm9yZSB1bnRvIHlvdSwgYW5kIG1ha2UgdXAgYmVmb3JlIGhhbmQgeW91ciBib3VudHksIHdoZXJlb2YgeWUgaGFkIG5vdGljZSBiZWZvcmUsIHRoYXQgdGhlIHNhbWUgbWlnaHQgYmUgcmVhZHksIGFzIFthIG1hdHRlciBvZl0gYm91bnR5LCBhbmQgbm90IGFzIFtvZl0gY292ZXRvdXNuZXNzLgpCdXQgdGhpcyBbSSBzYXldLCBIZSB3aGljaCBzb3dldGggc3BhcmluZ2x5IHNoYWxsIHJlYXAgYWxzbyBzcGFyaW5nbHk7IGFuZCBoZSB3aGljaCBzb3dldGggYm91bnRpZnVsbHkgc2hhbGwgcmVhcCBhbHNvIGJvdW50aWZ1bGx5LgpFdmVyeSBtYW4gYWNjb3JkaW5nIGFzIGhlIHB1cnBvc2V0aCBpbiBoaXMgaGVhcnQsIFtzbyBsZXQgaGltIGdpdmVdOyBub3QgZ3J1ZGdpbmdseSwgb3Igb2YgbmVjZXNzaXR5OiBmb3IgR29kIGxvdmV0aCBhIGNoZWVyZnVsIGdpdmVyLgpBbmQgR29kIFtpc10gYWJsZSB0byBtYWtlIGFsbCBncmFjZSBhYm91bmQgdG93YXJkIHlvdTsgdGhhdCB5ZSwgYWx3YXlzIGhhdmluZyBhbGwgc3VmZmljaWVuY3kgaW4gYWxsIFt0aGluZ3NdLCBtYXkgYWJvdW5kIHRvIGV2ZXJ5IGdvb2Qgd29yazoKKEFzIGl0IGlzIHdyaXR0ZW4sIEhlIGhhdGggZGlzcGVyc2VkIGFicm9hZDsgaGUgaGF0aCBnaXZlbiB0byB0aGUgcG9vcjogaGlzIHJpZ2h0ZW91c25lc3MgcmVtYWluZXRoIGZvciBldmVyLgpOb3cgaGUgdGhhdCBtaW5pc3RlcmV0aCBzZWVkIHRvIHRoZSBzb3dlciBib3RoIG1pbmlzdGVyIGJyZWFkIGZvciBbeW91cl0gZm9vZCwgYW5kIG11bHRpcGx5IHlvdXIgc2VlZCBzb3duLCBhbmQgaW5jcmVhc2UgdGhlIGZydWl0cyBvZiB5b3VyIHJpZ2h0ZW91c25lc3M7KQpCZWluZyBlbnJpY2hlZCBpbiBldmVyeSB0aGluZyB0byBhbGwgYm91bnRpZnVsbmVzcywgd2hpY2ggY2F1c2V0aCB0aHJvdWdoIHVzIHRoYW5rc2dpdmluZyB0byBHb2QuCkZvciB0aGUgYWRtaW5pc3RyYXRpb24gb2YgdGhpcyBzZXJ2aWNlIG5vdCBvbmx5IHN1cHBsaWV0aCB0aGUgd2FudCBvZiB0aGUgc2FpbnRzLCBidXQgaXMgYWJ1bmRhbnQgYWxzbyBieSBtYW55IHRoYW5rc2dpdmluZ3MgdW50byBHb2Q7CldoaWxlcyBieSB0aGUgZXhwZXJpbWVudCBvZiB0aGlzIG1pbmlzdHJhdGlvbiB0aGV5IGdsb3JpZnkgR29kIGZvciB5b3VyIHByb2Zlc3NlZCBzdWJqZWN0aW9uIHVudG8gdGhlIGdvc3BlbCBvZiBDaHJpc3QsIGFuZCBmb3IgW3lvdXJdIGxpYmVyYWwgZGlzdHJpYnV0aW9uIHVudG8gdGhlbSwgYW5kIHVudG8gYWxsIFttZW5dOwpBbmQgYnkgdGhlaXIgcHJheWVyIGZvciB5b3UsIHdoaWNoIGxvbmcgYWZ0ZXIgeW91IGZvciB0aGUgZXhjZWVkaW5nIGdyYWNlIG9mIEdvZCBpbiB5b3UuClRoYW5rcyBbYmVdIHVudG8gR29kIGZvciBoaXMgdW5zcGVha2FibGUgZ2lmdC4KTm93IEkgUGF1bCBteXNlbGYgYmVzZWVjaCB5b3UgYnkgdGhlIG1lZWtuZXNzIGFuZCBnZW50bGVuZXNzIG9mIENocmlzdCwgd2hvIGluIHByZXNlbmNlIFthbV0gYmFzZSBhbW9uZyB5b3UsIGJ1dCBiZWluZyBhYnNlbnQgYW0gYm9sZCB0b3dhcmQgeW91OgpCdXQgSSBiZXNlZWNoIFt5b3VdLCB0aGF0IEkgbWF5IG5vdCBiZSBib2xkIHdoZW4gSSBhbSBwcmVzZW50IHdpdGggdGhhdCBjb25maWRlbmNlLCB3aGVyZXdpdGggSSB0aGluayB0byBiZSBib2xkIGFnYWluc3Qgc29tZSwgd2hpY2ggdGhpbmsgb2YgdXMgYXMgaWYgd2Ugd2Fsa2VkIGFjY29yZGluZyB0byB0aGUgZmxlc2guCkZvciB0aG91Z2ggd2Ugd2FsayBpbiB0aGUgZmxlc2gsIHdlIGRvIG5vdCB3YXIgYWZ0ZXIgdGhlIGZsZXNoOgooRm9yIHRoZSB3ZWFwb25zIG9mIG91ciB3YXJmYXJlIFthcmVdIG5vdCBjYXJuYWwsIGJ1dCBtaWdodHkgdGhyb3VnaCBHb2QgdG8gdGhlIHB1bGxpbmcgZG93biBvZiBzdHJvbmcgaG9sZHM7KQpDYXN0aW5nIGRvd24gaW1hZ2luYXRpb25zLCBhbmQgZXZlcnkgaGlnaCB0aGluZyB0aGF0IGV4YWx0ZXRoIGl0c2VsZiBhZ2FpbnN0IHRoZSBrbm93bGVkZ2Ugb2YgR29kLCBhbmQgYnJpbmdpbmcgaW50byBjYXB0aXZpdHkgZXZlcnkgdGhvdWdodCB0byB0aGUgb2JlZGllbmNlIG9mIENocmlzdDsKQW5kIGhhdmluZyBpbiBhIHJlYWRpbmVzcyB0byByZXZlbmdlIGFsbCBkaXNvYmVkaWVuY2UsIHdoZW4geW91ciBvYmVkaWVuY2UgaXMgZnVsZmlsbGVkLgpEbyB5ZSBsb29rIG9uIHRoaW5ncyBhZnRlciB0aGUgb3V0d2FyZCBhcHBlYXJhbmNlPyBJZiBhbnkgbWFuIHRydXN0IHRvIGhpbXNlbGYgdGhhdCBoZSBpcyBDaHJpc3QncywgbGV0IGhpbSBvZiBoaW1zZWxmIHRoaW5rIHRoaXMgYWdhaW4sIHRoYXQsIGFzIGhlIFtpc10gQ2hyaXN0J3MsIGV2ZW4gc28gW2FyZV0gd2UgQ2hyaXN0J3MuCkZvciB0aG91Z2ggSSBzaG91bGQgYm9hc3Qgc29tZXdoYXQgbW9yZSBvZiBvdXIgYXV0aG9yaXR5LCB3aGljaCB0aGUgTG9yZCBoYXRoIGdpdmVuIHVzIGZvciBlZGlmaWNhdGlvbiwgYW5kIG5vdCBmb3IgeW91ciBkZXN0cnVjdGlvbiwgSSBzaG91bGQgbm90IGJlIGFzaGFtZWQ6ClRoYXQgSSBtYXkgbm90IHNlZW0gYXMgaWYgSSB3b3VsZCB0ZXJyaWZ5IHlvdSBieSBsZXR0ZXJzLgpGb3IgW2hpc10gbGV0dGVycywgc2F5IHRoZXksIFthcmVdIHdlaWdodHkgYW5kIHBvd2VyZnVsOyBidXQgW2hpc10gYm9kaWx5IHByZXNlbmNlIFtpc10gd2VhaywgYW5kIFtoaXNdIHNwZWVjaCBjb250ZW1wdGlibGUuCkxldCBzdWNoIGFuIG9uZSB0aGluayB0aGlzLCB0aGF0LCBzdWNoIGFzIHdlIGFyZSBpbiB3b3JkIGJ5IGxldHRlcnMgd2hlbiB3ZSBhcmUgYWJzZW50LCBzdWNoIFt3aWxsIHdlIGJlXSBhbHNvIGluIGRlZWQgd2hlbiB3ZSBhcmUgcHJlc2VudC4KRm9yIHdlIGRhcmUgbm90IG1ha2Ugb3Vyc2VsdmVzIG9mIHRoZSBudW1iZXIsIG9yIGNvbXBhcmUgb3Vyc2VsdmVzIHdpdGggc29tZSB0aGF0IGNvbW1lbmQgdGhlbXNlbHZlczogYnV0IHRoZXkgbWVhc3VyaW5nIHRoZW1zZWx2ZXMgYnkgdGhlbXNlbHZlcywgYW5kIGNvbXBhcmluZyB0aGVtc2VsdmVzIGFtb25nIHRoZW1zZWx2ZXMsIGFyZSBub3Qgd2lzZS4KQnV0IHdlIHdpbGwgbm90IGJvYXN0IG9mIHRoaW5ncyB3aXRob3V0IFtvdXJdIG1lYXN1cmUsIGJ1dCBhY2NvcmRpbmcgdG8gdGhlIG1lYXN1cmUgb2YgdGhlIHJ1bGUgd2hpY2ggR29kIGhhdGggZGlzdHJpYnV0ZWQgdG8gdXMsIGEgbWVhc3VyZSB0byByZWFjaCBldmVuIHVudG8geW91LgpGb3Igd2Ugc3RyZXRjaCBub3Qgb3Vyc2VsdmVzIGJleW9uZCBbb3VyIG1lYXN1cmVdLCBhcyB0aG91Z2ggd2UgcmVhY2hlZCBub3QgdW50byB5b3U6IGZvciB3ZSBhcmUgY29tZSBhcyBmYXIgYXMgdG8geW91IGFsc28gaW4gW3ByZWFjaGluZ10gdGhlIGdvc3BlbCBvZiBDaHJpc3Q6Ck5vdCBib2FzdGluZyBvZiB0aGluZ3Mgd2l0aG91dCBbb3VyXSBtZWFzdXJlLCBbdGhhdCBpc10sIG9mIG90aGVyIG1lbidzIGxhYm91cnM7IGJ1dCBoYXZpbmcgaG9wZSwgd2hlbiB5b3VyIGZhaXRoIGlzIGluY3JlYXNlZCwgdGhhdCB3ZSBzaGFsbCBiZSBlbmxhcmdlZCBieSB5b3UgYWNjb3JkaW5nIHRvIG91ciBydWxlIGFidW5kYW50bHksClRvIHByZWFjaCB0aGUgZ29zcGVsIGluIHRoZSBbcmVnaW9uc10gYmV5b25kIHlvdSwgW2FuZF0gbm90IHRvIGJvYXN0IGluIGFub3RoZXIgbWFuJ3MgbGluZSBvZiB0aGluZ3MgbWFkZSByZWFkeSB0byBvdXIgaGFuZC4KQnV0IGhlIHRoYXQgZ2xvcmlldGgsIGxldCBoaW0gZ2xvcnkgaW4gdGhlIExvcmQuCkZvciBub3QgaGUgdGhhdCBjb21tZW5kZXRoIGhpbXNlbGYgaXMgYXBwcm92ZWQsIGJ1dCB3aG9tIHRoZSBMb3JkIGNvbW1lbmRldGguCldvdWxkIHRvIEdvZCB5ZSBjb3VsZCBiZWFyIHdpdGggbWUgYSBsaXR0bGUgaW4gW215XSBmb2xseTogYW5kIGluZGVlZCBiZWFyIHdpdGggbWUuCkZvciBJIGFtIGplYWxvdXMgb3ZlciB5b3Ugd2l0aCBnb2RseSBqZWFsb3VzeTogZm9yIEkgaGF2ZSBlc3BvdXNlZCB5b3UgdG8gb25lIGh1c2JhbmQsIHRoYXQgSSBtYXkgcHJlc2VudCBbeW91IGFzXSBhIGNoYXN0ZSB2aXJnaW4gdG8gQ2hyaXN0LgpCdXQgSSBmZWFyLCBsZXN0IGJ5IGFueSBtZWFucywgYXMgdGhlIHNlcnBlbnQgYmVndWlsZWQgRXZlIHRocm91Z2ggaGlzIHN1YnRsZXR5LCBzbyB5b3VyIG1pbmRzIHNob3VsZCBiZSBjb3JydXB0ZWQgZnJvbSB0aGUgc2ltcGxpY2l0eSB0aGF0IGlzIGluIENocmlzdC4KRm9yIGlmIGhlIHRoYXQgY29tZXRoIHByZWFjaGV0aCBhbm90aGVyIEplc3VzLCB3aG9tIHdlIGhhdmUgbm90IHByZWFjaGVkLCBvciBbaWZdIHllIHJlY2VpdmUgYW5vdGhlciBzcGlyaXQsIHdoaWNoIHllIGhhdmUgbm90IHJlY2VpdmVkLCBvciBhbm90aGVyIGdvc3BlbCwgd2hpY2ggeWUgaGF2ZSBub3QgYWNjZXB0ZWQsIHllIG1pZ2h0IHdlbGwgYmVhciB3aXRoIFtoaW1dLgpGb3IgSSBzdXBwb3NlIEkgd2FzIG5vdCBhIHdoaXQgYmVoaW5kIHRoZSB2ZXJ5IGNoaWVmZXN0IGFwb3N0bGVzLgpCdXQgdGhvdWdoIFtJIGJlXSBydWRlIGluIHNwZWVjaCwgeWV0IG5vdCBpbiBrbm93bGVkZ2U7IGJ1dCB3ZSBoYXZlIGJlZW4gdGhvcm91Z2hseSBtYWRlIG1hbmlmZXN0IGFtb25nIHlvdSBpbiBhbGwgdGhpbmdzLgpIYXZlIEkgY29tbWl0dGVkIGFuIG9mZmVuY2UgaW4gYWJhc2luZyBteXNlbGYgdGhhdCB5ZSBtaWdodCBiZSBleGFsdGVkLCBiZWNhdXNlIEkgaGF2ZSBwcmVhY2hlZCB0byB5b3UgdGhlIGdvc3BlbCBvZiBHb2QgZnJlZWx5PwpJIHJvYmJlZCBvdGhlciBjaHVyY2hlcywgdGFraW5nIHdhZ2VzIFtvZiB0aGVtXSwgdG8gZG8geW91IHNlcnZpY2UuCkFuZCB3aGVuIEkgd2FzIHByZXNlbnQgd2l0aCB5b3UsIGFuZCB3YW50ZWQsIEkgd2FzIGNoYXJnZWFibGUgdG8gbm8gbWFuOiBmb3IgdGhhdCB3aGljaCB3YXMgbGFja2luZyB0byBtZSB0aGUgYnJldGhyZW4gd2hpY2ggY2FtZSBmcm9tIE1hY2Vkb25pYSBzdXBwbGllZDogYW5kIGluIGFsbCBbdGhpbmdzXSBJIGhhdmUga2VwdCBteXNlbGYgZnJvbSBiZWluZyBidXJkZW5zb21lIHVudG8geW91LCBhbmQgW3NvXSB3aWxsIEkga2VlcCBbbXlzZWxmXS4KQXMgdGhlIHRydXRoIG9mIENocmlzdCBpcyBpbiBtZSwgbm8gbWFuIHNoYWxsIHN0b3AgbWUgb2YgdGhpcyBib2FzdGluZyBpbiB0aGUgcmVnaW9ucyBvZiBBY2hhaWEuCldoZXJlZm9yZT8gYmVjYXVzZSBJIGxvdmUgeW91IG5vdD8gR29kIGtub3dldGguCkJ1dCB3aGF0IEkgZG8sIHRoYXQgSSB3aWxsIGRvLCB0aGF0IEkgbWF5IGN1dCBvZmYgb2NjYXNpb24gZnJvbSB0aGVtIHdoaWNoIGRlc2lyZSBvY2Nhc2lvbjsgdGhhdCB3aGVyZWluIHRoZXkgZ2xvcnksIHRoZXkgbWF5IGJlIGZvdW5kIGV2ZW4gYXMgd2UuCkZvciBzdWNoIFthcmVdIGZhbHNlIGFwb3N0bGVzLCBkZWNlaXRmdWwgd29ya2VycywgdHJhbnNmb3JtaW5nIHRoZW1zZWx2ZXMgaW50byB0aGUgYXBvc3RsZXMgb2YgQ2hyaXN0LgpBbmQgbm8gbWFydmVsOyBmb3IgU2F0YW4gaGltc2VsZiBpcyB0cmFuc2Zvcm1lZCBpbnRvIGFuIGFuZ2VsIG9mIGxpZ2h0LgpUaGVyZWZvcmUgW2l0IGlzXSBubyBncmVhdCB0aGluZyBpZiBoaXMgbWluaXN0ZXJzIGFsc28gYmUgdHJhbnNmb3JtZWQgYXMgdGhlIG1pbmlzdGVycyBvZiByaWdodGVvdXNuZXNzOyB3aG9zZSBlbmQgc2hhbGwgYmUgYWNjb3JkaW5nIHRvIHRoZWlyIHdvcmtzLgpJIHNheSBhZ2FpbiwgTGV0IG5vIG1hbiB0aGluayBtZSBhIGZvb2w7IGlmIG90aGVyd2lzZSwgeWV0IGFzIGEgZm9vbCByZWNlaXZlIG1lLCB0aGF0IEkgbWF5IGJvYXN0IG15c2VsZiBhIGxpdHRsZS4KVGhhdCB3aGljaCBJIHNwZWFrLCBJIHNwZWFrIFtpdF0gbm90IGFmdGVyIHRoZSBMb3JkLCBidXQgYXMgaXQgd2VyZSBmb29saXNobHksIGluIHRoaXMgY29uZmlkZW5jZSBvZiBib2FzdGluZy4KU2VlaW5nIHRoYXQgbWFueSBnbG9yeSBhZnRlciB0aGUgZmxlc2gsIEkgd2lsbCBnbG9yeSBhbHNvLgpGb3IgeWUgc3VmZmVyIGZvb2xzIGdsYWRseSwgc2VlaW5nIHllIFt5b3Vyc2VsdmVzXSBhcmUgd2lzZS4KRm9yIHllIHN1ZmZlciwgaWYgYSBtYW4gYnJpbmcgeW91IGludG8gYm9uZGFnZSwgaWYgYSBtYW4gZGV2b3VyIFt5b3VdLCBpZiBhIG1hbiB0YWtlIFtvZiB5b3VdLCBpZiBhIG1hbiBleGFsdCBoaW1zZWxmLCBpZiBhIG1hbiBzbWl0ZSB5b3Ugb24gdGhlIGZhY2UuCkkgc3BlYWsgYXMgY29uY2VybmluZyByZXByb2FjaCwgYXMgdGhvdWdoIHdlIGhhZCBiZWVuIHdlYWsuIEhvd2JlaXQgd2hlcmVpbnNvZXZlciBhbnkgaXMgYm9sZCwgKEkgc3BlYWsgZm9vbGlzaGx5LCkgSSBhbSBib2xkIGFsc28uCkFyZSB0aGV5IEhlYnJld3M/IHNvIFthbV0gSS4gQXJlIHRoZXkgSXNyYWVsaXRlcz8gc28gW2FtXSBJLiBBcmUgdGhleSB0aGUgc2VlZCBvZiBBYnJhaGFtPyBzbyBbYW1dIEkuCkFyZSB0aGV5IG1pbmlzdGVycyBvZiBDaHJpc3Q/IChJIHNwZWFrIGFzIGEgZm9vbCkgSSBbYW1dIG1vcmU7IGluIGxhYm91cnMgbW9yZSBhYnVuZGFudCwgaW4gc3RyaXBlcyBhYm92ZSBtZWFzdXJlLCBpbiBwcmlzb25zIG1vcmUgZnJlcXVlbnQsIGluIGRlYXRocyBvZnQuCk9mIHRoZSBKZXdzIGZpdmUgdGltZXMgcmVjZWl2ZWQgSSBmb3J0eSBbc3RyaXBlc10gc2F2ZSBvbmUuClRocmljZSB3YXMgSSBiZWF0ZW4gd2l0aCByb2RzLCBvbmNlIHdhcyBJIHN0b25lZCwgdGhyaWNlIEkgc3VmZmVyZWQgc2hpcHdyZWNrLCBhIG5pZ2h0IGFuZCBhIGRheSBJIGhhdmUgYmVlbiBpbiB0aGUgZGVlcDsKW0luXSBqb3VybmV5aW5ncyBvZnRlbiwgW2luXSBwZXJpbHMgb2Ygd2F0ZXJzLCBbaW5dIHBlcmlscyBvZiByb2JiZXJzLCBbaW5dIHBlcmlscyBieSBbbWluZSBvd25dIGNvdW50cnltZW4sIFtpbl0gcGVyaWxzIGJ5IHRoZSBoZWF0aGVuLCBbaW5dIHBlcmlscyBpbiB0aGUgY2l0eSwgW2luXSBwZXJpbHMgaW4gdGhlIHdpbGRlcm5lc3MsIFtpbl0gcGVyaWxzIGluIHRoZSBzZWEsIFtpbl0gcGVyaWxzIGFtb25nIGZhbHNlIGJyZXRocmVuOwpJbiB3ZWFyaW5lc3MgYW5kIHBhaW5mdWxuZXNzLCBpbiB3YXRjaGluZ3Mgb2Z0ZW4sIGluIGh1bmdlciBhbmQgdGhpcnN0LCBpbiBmYXN0aW5ncyBvZnRlbiwgaW4gY29sZCBhbmQgbmFrZWRuZXNzLgpCZXNpZGUgdGhvc2UgdGhpbmdzIHRoYXQgYXJlIHdpdGhvdXQsIHRoYXQgd2hpY2ggY29tZXRoIHVwb24gbWUgZGFpbHksIHRoZSBjYXJlIG9mIGFsbCB0aGUgY2h1cmNoZXMuCldobyBpcyB3ZWFrLCBhbmQgSSBhbSBub3Qgd2Vhaz8gd2hvIGlzIG9mZmVuZGVkLCBhbmQgSSBidXJuIG5vdD8KSWYgSSBtdXN0IG5lZWRzIGdsb3J5LCBJIHdpbGwgZ2xvcnkgb2YgdGhlIHRoaW5ncyB3aGljaCBjb25jZXJuIG1pbmUgaW5maXJtaXRpZXMuClRoZSBHb2QgYW5kIEZhdGhlciBvZiBvdXIgTG9yZCBKZXN1cyBDaHJpc3QsIHdoaWNoIGlzIGJsZXNzZWQgZm9yIGV2ZXJtb3JlLCBrbm93ZXRoIHRoYXQgSSBsaWUgbm90LgpJbiBEYW1hc2N1cyB0aGUgZ292ZXJub3IgdW5kZXIgQXJldGFzIHRoZSBraW5nIGtlcHQgdGhlIGNpdHkgb2YgdGhlIERhbWFzY2VuZXMgd2l0aCBhIGdhcnJpc29uLCBkZXNpcm91cyB0byBhcHByZWhlbmQgbWU6CkFuZCB0aHJvdWdoIGEgd2luZG93IGluIGEgYmFza2V0IHdhcyBJIGxldCBkb3duIGJ5IHRoZSB3YWxsLCBhbmQgZXNjYXBlZCBoaXMgaGFuZHMuCkl0IGlzIG5vdCBleHBlZGllbnQgZm9yIG1lIGRvdWJ0bGVzcyB0byBnbG9yeS4gSSB3aWxsIGNvbWUgdG8gdmlzaW9ucyBhbmQgcmV2ZWxhdGlvbnMgb2YgdGhlIExvcmQuCkkga25ldyBhIG1hbiBpbiBDaHJpc3QgYWJvdmUgZm91cnRlZW4geWVhcnMgYWdvLCAod2hldGhlciBpbiB0aGUgYm9keSwgSSBjYW5ub3QgdGVsbDsgb3Igd2hldGhlciBvdXQgb2YgdGhlIGJvZHksIEkgY2Fubm90IHRlbGw6IEdvZCBrbm93ZXRoOykgc3VjaCBhbiBvbmUgY2F1Z2h0IHVwIHRvIHRoZSB0aGlyZCBoZWF2ZW4uCkFuZCBJIGtuZXcgc3VjaCBhIG1hbiwgKHdoZXRoZXIgaW4gdGhlIGJvZHksIG9yIG91dCBvZiB0aGUgYm9keSwgSSBjYW5ub3QgdGVsbDogR29kIGtub3dldGg7KQpIb3cgdGhhdCBoZSB3YXMgY2F1Z2h0IHVwIGludG8gcGFyYWRpc2UsIGFuZCBoZWFyZCB1bnNwZWFrYWJsZSB3b3Jkcywgd2hpY2ggaXQgaXMgbm90IGxhd2Z1bCBmb3IgYSBtYW4gdG8gdXR0ZXIuCk9mIHN1Y2ggYW4gb25lIHdpbGwgSSBnbG9yeTogeWV0IG9mIG15c2VsZiBJIHdpbGwgbm90IGdsb3J5LCBidXQgaW4gbWluZSBpbmZpcm1pdGllcy4KRm9yIHRob3VnaCBJIHdvdWxkIGRlc2lyZSB0byBnbG9yeSwgSSBzaGFsbCBub3QgYmUgYSBmb29sOyBmb3IgSSB3aWxsIHNheSB0aGUgdHJ1dGg6IGJ1dCBbbm93XSBJIGZvcmJlYXIsIGxlc3QgYW55IG1hbiBzaG91bGQgdGhpbmsgb2YgbWUgYWJvdmUgdGhhdCB3aGljaCBoZSBzZWV0aCBtZSBbdG8gYmVdLCBvciBbdGhhdF0gaGUgaGVhcmV0aCBvZiBtZS4KQW5kIGxlc3QgSSBzaG91bGQgYmUgZXhhbHRlZCBhYm92ZSBtZWFzdXJlIHRocm91Z2ggdGhlIGFidW5kYW5jZSBvZiB0aGUgcmV2ZWxhdGlvbnMsIHRoZXJlIHdhcyBnaXZlbiB0byBtZSBhIHRob3JuIGluIHRoZSBmbGVzaCwgdGhlIG1lc3NlbmdlciBvZiBTYXRhbiB0byBidWZmZXQgbWUsIGxlc3QgSSBzaG91bGQgYmUgZXhhbHRlZCBhYm92ZSBtZWFzdXJlLgpGb3IgdGhpcyB0aGluZyBJIGJlc291Z2h0IHRoZSBMb3JkIHRocmljZSwgdGhhdCBpdCBtaWdodCBkZXBhcnQgZnJvbSBtZS4KQW5kIGhlIHNhaWQgdW50byBtZSwgTXkgZ3JhY2UgaXMgc3VmZmljaWVudCBmb3IgdGhlZTogZm9yIG15IHN0cmVuZ3RoIGlzIG1hZGUgcGVyZmVjdCBpbiB3ZWFrbmVzcy4gTW9zdCBnbGFkbHkgdGhlcmVmb3JlIHdpbGwgSSByYXRoZXIgZ2xvcnkgaW4gbXkgaW5maXJtaXRpZXMsIHRoYXQgdGhlIHBvd2VyIG9mIENocmlzdCBtYXkgcmVzdCB1cG9uIG1lLgpUaGVyZWZvcmUgSSB0YWtlIHBsZWFzdXJlIGluIGluZmlybWl0aWVzLCBpbiByZXByb2FjaGVzLCBpbiBuZWNlc3NpdGllcywgaW4gcGVyc2VjdXRpb25zLCBpbiBkaXN0cmVzc2VzIGZvciBDaHJpc3QncyBzYWtlOiBmb3Igd2hlbiBJIGFtIHdlYWssIHRoZW4gYW0gSSBzdHJvbmcuCkkgYW0gYmVjb21lIGEgZm9vbCBpbiBnbG9yeWluZzsgeWUgaGF2ZSBjb21wZWxsZWQgbWU6IGZvciBJIG91Z2h0IHRvIGhhdmUgYmVlbiBjb21tZW5kZWQgb2YgeW91OiBmb3IgaW4gbm90aGluZyBhbSBJIGJlaGluZCB0aGUgdmVyeSBjaGllZmVzdCBhcG9zdGxlcywgdGhvdWdoIEkgYmUgbm90aGluZy4KVHJ1bHkgdGhlIHNpZ25zIG9mIGFuIGFwb3N0bGUgd2VyZSB3cm91Z2h0IGFtb25nIHlvdSBpbiBhbGwgcGF0aWVuY2UsIGluIHNpZ25zLCBhbmQgd29uZGVycywgYW5kIG1pZ2h0eSBkZWVkcy4KRm9yIHdoYXQgaXMgaXQgd2hlcmVpbiB5ZSB3ZXJlIGluZmVyaW9yIHRvIG90aGVyIGNodXJjaGVzLCBleGNlcHQgW2l0IGJlXSB0aGF0IEkgbXlzZWxmIHdhcyBub3QgYnVyZGVuc29tZSB0byB5b3U/IGZvcmdpdmUgbWUgdGhpcyB3cm9uZy4KQmVob2xkLCB0aGUgdGhpcmQgdGltZSBJIGFtIHJlYWR5IHRvIGNvbWUgdG8geW91OyBhbmQgSSB3aWxsIG5vdCBiZSBidXJkZW5zb21lIHRvIHlvdTogZm9yIEkgc2VlayBub3QgeW91cnMsIGJ1dCB5b3U6IGZvciB0aGUgY2hpbGRyZW4gb3VnaHQgbm90IHRvIGxheSB1cCBmb3IgdGhlIHBhcmVudHMsIGJ1dCB0aGUgcGFyZW50cyBmb3IgdGhlIGNoaWxkcmVuLgpBbmQgSSB3aWxsIHZlcnkgZ2xhZGx5IHNwZW5kIGFuZCBiZSBzcGVudCBmb3IgeW91OyB0aG91Z2ggdGhlIG1vcmUgYWJ1bmRhbnRseSBJIGxvdmUgeW91LCB0aGUgbGVzcyBJIGJlIGxvdmVkLgpCdXQgYmUgaXQgc28sIEkgZGlkIG5vdCBidXJkZW4geW91OiBuZXZlcnRoZWxlc3MsIGJlaW5nIGNyYWZ0eSwgSSBjYXVnaHQgeW91IHdpdGggZ3VpbGUuCkRpZCBJIG1ha2UgYSBnYWluIG9mIHlvdSBieSBhbnkgb2YgdGhlbSB3aG9tIEkgc2VudCB1bnRvIHlvdT8KSSBkZXNpcmVkIFRpdHVzLCBhbmQgd2l0aCBbaGltXSBJIHNlbnQgYSBicm90aGVyLiBEaWQgVGl0dXMgbWFrZSBhIGdhaW4gb2YgeW91PyB3YWxrZWQgd2Ugbm90IGluIHRoZSBzYW1lIHNwaXJpdD8gW3dhbGtlZCB3ZV0gbm90IGluIHRoZSBzYW1lIHN0ZXBzPwpBZ2FpbiwgdGhpbmsgeWUgdGhhdCB3ZSBleGN1c2Ugb3Vyc2VsdmVzIHVudG8geW91PyB3ZSBzcGVhayBiZWZvcmUgR29kIGluIENocmlzdDogYnV0IFt3ZSBkb10gYWxsIHRoaW5ncywgZGVhcmx5IGJlbG92ZWQsIGZvciB5b3VyIGVkaWZ5aW5nLgpGb3IgSSBmZWFyLCBsZXN0LCB3aGVuIEkgY29tZSwgSSBzaGFsbCBub3QgZmluZCB5b3Ugc3VjaCBhcyBJIHdvdWxkLCBhbmQgW3RoYXRdIEkgc2hhbGwgYmUgZm91bmQgdW50byB5b3Ugc3VjaCBhcyB5ZSB3b3VsZCBub3Q6IGxlc3QgW3RoZXJlIGJlXSBkZWJhdGVzLCBlbnZ5aW5ncywgd3JhdGhzLCBzdHJpZmVzLCBiYWNrYml0aW5ncywgd2hpc3BlcmluZ3MsIHN3ZWxsaW5ncywgdHVtdWx0czoKW0FuZF0gbGVzdCwgd2hlbiBJIGNvbWUgYWdhaW4sIG15IEdvZCB3aWxsIGh1bWJsZSBtZSBhbW9uZyB5b3UsIGFuZCBbdGhhdF0gSSBzaGFsbCBiZXdhaWwgbWFueSB3aGljaCBoYXZlIHNpbm5lZCBhbHJlYWR5LCBhbmQgaGF2ZSBub3QgcmVwZW50ZWQgb2YgdGhlIHVuY2xlYW5uZXNzIGFuZCBmb3JuaWNhdGlvbiBhbmQgbGFzY2l2aW91c25lc3Mgd2hpY2ggdGhleSBoYXZlIGNvbW1pdHRlZC4KVGhpcyBbaXNdIHRoZSB0aGlyZCBbdGltZV0gSSBhbSBjb21pbmcgdG8geW91LiBJbiB0aGUgbW91dGggb2YgdHdvIG9yIHRocmVlIHdpdG5lc3NlcyBzaGFsbCBldmVyeSB3b3JkIGJlIGVzdGFibGlzaGVkLgpJIHRvbGQgeW91IGJlZm9yZSwgYW5kIGZvcmV0ZWxsIHlvdSwgYXMgaWYgSSB3ZXJlIHByZXNlbnQsIHRoZSBzZWNvbmQgdGltZTsgYW5kIGJlaW5nIGFic2VudCBub3cgSSB3cml0ZSB0byB0aGVtIHdoaWNoIGhlcmV0b2ZvcmUgaGF2ZSBzaW5uZWQsIGFuZCB0byBhbGwgb3RoZXIsIHRoYXQsIGlmIEkgY29tZSBhZ2FpbiwgSSB3aWxsIG5vdCBzcGFyZToKU2luY2UgeWUgc2VlayBhIHByb29mIG9mIENocmlzdCBzcGVha2luZyBpbiBtZSwgd2hpY2ggdG8geW91LXdhcmQgaXMgbm90IHdlYWssIGJ1dCBpcyBtaWdodHkgaW4geW91LgpGb3IgdGhvdWdoIGhlIHdhcyBjcnVjaWZpZWQgdGhyb3VnaCB3ZWFrbmVzcywgeWV0IGhlIGxpdmV0aCBieSB0aGUgcG93ZXIgb2YgR29kLiBGb3Igd2UgYWxzbyBhcmUgd2VhayBpbiBoaW0sIGJ1dCB3ZSBzaGFsbCBsaXZlIHdpdGggaGltIGJ5IHRoZSBwb3dlciBvZiBHb2QgdG93YXJkIHlvdS4KRXhhbWluZSB5b3Vyc2VsdmVzLCB3aGV0aGVyIHllIGJlIGluIHRoZSBmYWl0aDsgcHJvdmUgeW91ciBvd24gc2VsdmVzLiBLbm93IHllIG5vdCB5b3VyIG93biBzZWx2ZXMsIGhvdyB0aGF0IEplc3VzIENocmlzdCBpcyBpbiB5b3UsIGV4Y2VwdCB5ZSBiZSByZXByb2JhdGVzPwpCdXQgSSB0cnVzdCB0aGF0IHllIHNoYWxsIGtub3cgdGhhdCB3ZSBhcmUgbm90IHJlcHJvYmF0ZXMuCk5vdyBJIHByYXkgdG8gR29kIHRoYXQgeWUgZG8gbm8gZXZpbDsgbm90IHRoYXQgd2Ugc2hvdWxkIGFwcGVhciBhcHByb3ZlZCwgYnV0IHRoYXQgeWUgc2hvdWxkIGRvIHRoYXQgd2hpY2ggaXMgaG9uZXN0LCB0aG91Z2ggd2UgYmUgYXMgcmVwcm9iYXRlcy4KRm9yIHdlIGNhbiBkbyBub3RoaW5nIGFnYWluc3QgdGhlIHRydXRoLCBidXQgZm9yIHRoZSB0cnV0aC4KRm9yIHdlIGFyZSBnbGFkLCB3aGVuIHdlIGFyZSB3ZWFrLCBhbmQgeWUgYXJlIHN0cm9uZzogYW5kIHRoaXMgYWxzbyB3ZSB3aXNoLCBbZXZlbl0geW91ciBwZXJmZWN0aW9uLgpUaGVyZWZvcmUgSSB3cml0ZSB0aGVzZSB0aGluZ3MgYmVpbmcgYWJzZW50LCBsZXN0IGJlaW5nIHByZXNlbnQgSSBzaG91bGQgdXNlIHNoYXJwbmVzcywgYWNjb3JkaW5nIHRvIHRoZSBwb3dlciB3aGljaCB0aGUgTG9yZCBoYXRoIGdpdmVuIG1lIHRvIGVkaWZpY2F0aW9uLCBhbmQgbm90IHRvIGRlc3RydWN0aW9uLgpGaW5hbGx5LCBicmV0aHJlbiwgZmFyZXdlbGwuIEJlIHBlcmZlY3QsIGJlIG9mIGdvb2QgY29tZm9ydCwgYmUgb2Ygb25lIG1pbmQsIGxpdmUgaW4gcGVhY2U7IGFuZCB0aGUgR29kIG9mIGxvdmUgYW5kIHBlYWNlIHNoYWxsIGJlIHdpdGggeW91LgpHcmVldCBvbmUgYW5vdGhlciB3aXRoIGFuIGhvbHkga2lzcy4KQWxsIHRoZSBzYWludHMgc2FsdXRlIHlvdS4KVGhlIGdyYWNlIG9mIHRoZSBMb3JkIEplc3VzIENocmlzdCwgYW5kIHRoZSBsb3ZlIG9mIEdvZCwgYW5kIHRoZSBjb21tdW5pb24gb2YgdGhlIEhvbHkgR2hvc3QsIFtiZV0gd2l0aCB5b3UgYWxsLiBBbWVuLgpQYXVsLCBhbiBhcG9zdGxlLCAobm90IG9mIG1lbiwgbmVpdGhlciBieSBtYW4sIGJ1dCBieSBKZXN1cyBDaHJpc3QsIGFuZCBHb2QgdGhlIEZhdGhlciwgd2hvIHJhaXNlZCBoaW0gZnJvbSB0aGUgZGVhZDspCkFuZCBhbGwgdGhlIGJyZXRocmVuIHdoaWNoIGFyZSB3aXRoIG1lLCB1bnRvIHRoZSBjaHVyY2hlcyBvZiBHYWxhdGlhOgpHcmFjZSBiZSB0byB5b3UgYW5kIHBlYWNlIGZyb20gR29kIHRoZSBGYXRoZXIsIGFuZCBmcm9tIG91ciBMb3JkIEplc3VzIENocmlzdCwKV2hvIGdhdmUgaGltc2VsZiBmb3Igb3VyIHNpbnMsIHRoYXQgaGUgbWlnaHQgZGVsaXZlciB1cyBmcm9tIHRoaXMgcHJlc2VudCBldmlsIHdvcmxkLCBhY2NvcmRpbmcgdG8gdGhlIHdpbGwgb2YgR29kIGFuZCBvdXIgRmF0aGVyOgpUbyB3aG9tIGJlIGdsb3J5IGZvciBldmVyIGFuZCBldmVyLiBBbWVuLgpJIG1hcnZlbCB0aGF0IHllIGFyZSBzbyBzb29uIHJlbW92ZWQgZnJvbSBoaW0gdGhhdCBjYWxsZWQgeW91IGludG8gdGhlIGdyYWNlIG9mIENocmlzdCB1bnRvIGFub3RoZXIgZ29zcGVsOgpXaGljaCBpcyBub3QgYW5vdGhlcjsgYnV0IHRoZXJlIGJlIHNvbWUgdGhhdCB0cm91YmxlIHlvdSwgYW5kIHdvdWxkIHBlcnZlcnQgdGhlIGdvc3BlbCBvZiBDaHJpc3QuCkJ1dCB0aG91Z2ggd2UsIG9yIGFuIGFuZ2VsIGZyb20gaGVhdmVuLCBwcmVhY2ggYW55IG90aGVyIGdvc3BlbCB1bnRvIHlvdSB0aGFuIHRoYXQgd2hpY2ggd2UgaGF2ZSBwcmVhY2hlZCB1bnRvIHlvdSwgbGV0IGhpbSBiZSBhY2N1cnNlZC4KQXMgd2Ugc2FpZCBiZWZvcmUsIHNvIHNheSBJIG5vdyBhZ2FpbiwgaWYgYW55IG1hbiBwcmVhY2ggYW55IG90aGVyIGdvc3BlbCB1bnRvIHlvdSB0aGFuIHRoYXQgeWUgaGF2ZSByZWNlaXZlZCwgbGV0IGhpbSBiZSBhY2N1cnNlZC4KRm9yIGRvIEkgbm93IHBlcnN1YWRlIG1lbiwgb3IgR29kPyBvciBkbyBJIHNlZWsgdG8gcGxlYXNlIG1lbj8gZm9yIGlmIEkgeWV0IHBsZWFzZWQgbWVuLCBJIHNob3VsZCBub3QgYmUgdGhlIHNlcnZhbnQgb2YgQ2hyaXN0LgpCdXQgSSBjZXJ0aWZ5IHlvdSwgYnJldGhyZW4sIHRoYXQgdGhlIGdvc3BlbCB3aGljaCB3YXMgcHJlYWNoZWQgb2YgbWUgaXMgbm90IGFmdGVyIG1hbi4KRm9yIEkgbmVpdGhlciByZWNlaXZlZCBpdCBvZiBtYW4sIG5laXRoZXIgd2FzIEkgdGF1Z2h0IGl0LCBidXQgYnkgdGhlIHJldmVsYXRpb24gb2YgSmVzdXMgQ2hyaXN0LgpGb3IgeWUgaGF2ZSBoZWFyZCBvZiBteSBjb252ZXJzYXRpb24gaW4gdGltZSBwYXN0IGluIHRoZSBKZXdzJyByZWxpZ2lvbiwgaG93IHRoYXQgYmV5b25kIG1lYXN1cmUgSSBwZXJzZWN1dGVkIHRoZSBjaHVyY2ggb2YgR29kLCBhbmQgd2FzdGVkIGl0OgpBbmQgcHJvZml0ZWQgaW4gdGhlIEpld3MnIHJlbGlnaW9uIGFib3ZlIG1hbnkgbXkgZXF1YWxzIGluIG1pbmUgb3duIG5hdGlvbiwgYmVpbmcgbW9yZSBleGNlZWRpbmdseSB6ZWFsb3VzIG9mIHRoZSB0cmFkaXRpb25zIG9mIG15IGZhdGhlcnMuCkJ1dCB3aGVuIGl0IHBsZWFzZWQgR29kLCB3aG8gc2VwYXJhdGVkIG1lIGZyb20gbXkgbW90aGVyJ3Mgd29tYiwgYW5kIGNhbGxlZCBtZSBieSBoaXMgZ3JhY2UsClRvIHJldmVhbCBoaXMgU29uIGluIG1lLCB0aGF0IEkgbWlnaHQgcHJlYWNoIGhpbSBhbW9uZyB0aGUgaGVhdGhlbjsgaW1tZWRpYXRlbHkgSSBjb25mZXJyZWQgbm90IHdpdGggZmxlc2ggYW5kIGJsb29kOgpOZWl0aGVyIHdlbnQgSSB1cCB0byBKZXJ1c2FsZW0gdG8gdGhlbSB3aGljaCB3ZXJlIGFwb3N0bGVzIGJlZm9yZSBtZTsgYnV0IEkgd2VudCBpbnRvIEFyYWJpYSwgYW5kIHJldHVybmVkIGFnYWluIHVudG8gRGFtYXNjdXMuClRoZW4gYWZ0ZXIgdGhyZWUgeWVhcnMgSSB3ZW50IHVwIHRvIEplcnVzYWxlbSB0byBzZWUgUGV0ZXIsIGFuZCBhYm9kZSB3aXRoIGhpbSBmaWZ0ZWVuIGRheXMuCkJ1dCBvdGhlciBvZiB0aGUgYXBvc3RsZXMgc2F3IEkgbm9uZSwgc2F2ZSBKYW1lcyB0aGUgTG9yZCdzIGJyb3RoZXIuCk5vdyB0aGUgdGhpbmdzIHdoaWNoIEkgd3JpdGUgdW50byB5b3UsIGJlaG9sZCwgYmVmb3JlIEdvZCwgSSBsaWUgbm90LgpBZnRlcndhcmRzIEkgY2FtZSBpbnRvIHRoZSByZWdpb25zIG9mIFN5cmlhIGFuZCBDaWxpY2lhOwpBbmQgd2FzIHVua25vd24gYnkgZmFjZSB1bnRvIHRoZSBjaHVyY2hlcyBvZiBKdWRhZWEgd2hpY2ggd2VyZSBpbiBDaHJpc3Q6CkJ1dCB0aGV5IGhhZCBoZWFyZCBvbmx5LCBUaGF0IGhlIHdoaWNoIHBlcnNlY3V0ZWQgdXMgaW4gdGltZXMgcGFzdCBub3cgcHJlYWNoZXRoIHRoZSBmYWl0aCB3aGljaCBvbmNlIGhlIGRlc3Ryb3llZC4KQW5kIHRoZXkgZ2xvcmlmaWVkIEdvZCBpbiBtZS4KVGhlbiBmb3VydGVlbiB5ZWFycyBhZnRlciBJIHdlbnQgdXAgYWdhaW4gdG8gSmVydXNhbGVtIHdpdGggQmFybmFiYXMsIGFuZCB0b29rIFRpdHVzIHdpdGggbWUgYWxzby4KQW5kIEkgd2VudCB1cCBieSByZXZlbGF0aW9uLCBhbmQgY29tbXVuaWNhdGVkIHVudG8gdGhlbSB0aGF0IGdvc3BlbCB3aGljaCBJIHByZWFjaCBhbW9uZyB0aGUgR2VudGlsZXMsIGJ1dCBwcml2YXRlbHkgdG8gdGhlbSB3aGljaCB3ZXJlIG9mIHJlcHV0YXRpb24sIGxlc3QgYnkgYW55IG1lYW5zIEkgc2hvdWxkIHJ1biwgb3IgaGFkIHJ1biwgaW4gdmFpbi4KQnV0IG5laXRoZXIgVGl0dXMsIHdobyB3YXMgd2l0aCBtZSwgYmVpbmcgYSBHcmVlaywgd2FzIGNvbXBlbGxlZCB0byBiZSBjaXJjdW1jaXNlZDoKQW5kIHRoYXQgYmVjYXVzZSBvZiBmYWxzZSBicmV0aHJlbiB1bmF3YXJlcyBicm91Z2h0IGluLCB3aG8gY2FtZSBpbiBwcml2aWx5IHRvIHNweSBvdXQgb3VyIGxpYmVydHkgd2hpY2ggd2UgaGF2ZSBpbiBDaHJpc3QgSmVzdXMsIHRoYXQgdGhleSBtaWdodCBicmluZyB1cyBpbnRvIGJvbmRhZ2U6ClRvIHdob20gd2UgZ2F2ZSBwbGFjZSBieSBzdWJqZWN0aW9uLCBubywgbm90IGZvciBhbiBob3VyOyB0aGF0IHRoZSB0cnV0aCBvZiB0aGUgZ29zcGVsIG1pZ2h0IGNvbnRpbnVlIHdpdGggeW91LgpCdXQgb2YgdGhlc2Ugd2hvIHNlZW1lZCB0byBiZSBzb21ld2hhdCwgKHdoYXRzb2V2ZXIgdGhleSB3ZXJlLCBpdCBtYWtldGggbm8gbWF0dGVyIHRvIG1lOiBHb2QgYWNjZXB0ZXRoIG5vIG1hbidzIHBlcnNvbjopIGZvciB0aGV5IHdobyBzZWVtZWQgdG8gYmUgc29tZXdoYXQgaW4gY29uZmVyZW5jZSBhZGRlZCBub3RoaW5nIHRvIG1lOgpCdXQgY29udHJhcml3aXNlLCB3aGVuIHRoZXkgc2F3IHRoYXQgdGhlIGdvc3BlbCBvZiB0aGUgdW5jaXJjdW1jaXNpb24gd2FzIGNvbW1pdHRlZCB1bnRvIG1lLCBhcyB0aGUgZ29zcGVsIG9mIHRoZSBjaXJjdW1jaXNpb24gd2FzIHVudG8gUGV0ZXI7CihGb3IgaGUgdGhhdCB3cm91Z2h0IGVmZmVjdHVhbGx5IGluIFBldGVyIHRvIHRoZSBhcG9zdGxlc2hpcCBvZiB0aGUgY2lyY3VtY2lzaW9uLCB0aGUgc2FtZSB3YXMgbWlnaHR5IGluIG1lIHRvd2FyZCB0aGUgR2VudGlsZXM6KQpBbmQgd2hlbiBKYW1lcywgQ2VwaGFzLCBhbmQgSm9obiwgd2hvIHNlZW1lZCB0byBiZSBwaWxsYXJzLCBwZXJjZWl2ZWQgdGhlIGdyYWNlIHRoYXQgd2FzIGdpdmVuIHVudG8gbWUsIHRoZXkgZ2F2ZSB0byBtZSBhbmQgQmFybmFiYXMgdGhlIHJpZ2h0IGhhbmRzIG9mIGZlbGxvd3NoaXA7IHRoYXQgd2Ugc2hvdWxkIGdvIHVudG8gdGhlIGhlYXRoZW4sIGFuZCB0aGV5IHVudG8gdGhlIGNpcmN1bWNpc2lvbi4KT25seSB0aGV5IHdvdWxkIHRoYXQgd2Ugc2hvdWxkIHJlbWVtYmVyIHRoZSBwb29yOyB0aGUgc2FtZSB3aGljaCBJIGFsc28gd2FzIGZvcndhcmQgdG8gZG8uCkJ1dCB3aGVuIFBldGVyIHdhcyBjb21lIHRvIEFudGlvY2gsIEkgd2l0aHN0b29kIGhpbSB0byB0aGUgZmFjZSwgYmVjYXVzZSBoZSB3YXMgdG8gYmUgYmxhbWVkLgpGb3IgYmVmb3JlIHRoYXQgY2VydGFpbiBjYW1lIGZyb20gSmFtZXMsIGhlIGRpZCBlYXQgd2l0aCB0aGUgR2VudGlsZXM6IGJ1dCB3aGVuIHRoZXkgd2VyZSBjb21lLCBoZSB3aXRoZHJldyBhbmQgc2VwYXJhdGVkIGhpbXNlbGYsIGZlYXJpbmcgdGhlbSB3aGljaCB3ZXJlIG9mIHRoZSBjaXJjdW1jaXNpb24uCkFuZCB0aGUgb3RoZXIgSmV3cyBkaXNzZW1ibGVkIGxpa2V3aXNlIHdpdGggaGltOyBpbnNvbXVjaCB0aGF0IEJhcm5hYmFzIGFsc28gd2FzIGNhcnJpZWQgYXdheSB3aXRoIHRoZWlyIGRpc3NpbXVsYXRpb24uCkJ1dCB3aGVuIEkgc2F3IHRoYXQgdGhleSB3YWxrZWQgbm90IHVwcmlnaHRseSBhY2NvcmRpbmcgdG8gdGhlIHRydXRoIG9mIHRoZSBnb3NwZWwsIEkgc2FpZCB1bnRvIFBldGVyIGJlZm9yZSB0aGVtIGFsbCwgSWYgdGhvdSwgYmVpbmcgYSBKZXcsIGxpdmVzdCBhZnRlciB0aGUgbWFubmVyIG9mIEdlbnRpbGVzLCBhbmQgbm90IGFzIGRvIHRoZSBKZXdzLCB3aHkgY29tcGVsbGVzdCB0aG91IHRoZSBHZW50aWxlcyB0byBsaXZlIGFzIGRvIHRoZSBKZXdzPwpXZSB3aG8gYXJlIEpld3MgYnkgbmF0dXJlLCBhbmQgbm90IHNpbm5lcnMgb2YgdGhlIEdlbnRpbGVzLApLbm93aW5nIHRoYXQgYSBtYW4gaXMgbm90IGp1c3RpZmllZCBieSB0aGUgd29ya3Mgb2YgdGhlIGxhdywgYnV0IGJ5IHRoZSBmYWl0aCBvZiBKZXN1cyBDaHJpc3QsIGV2ZW4gd2UgaGF2ZSBiZWxpZXZlZCBpbiBKZXN1cyBDaHJpc3QsIHRoYXQgd2UgbWlnaHQgYmUganVzdGlmaWVkIGJ5IHRoZSBmYWl0aCBvZiBDaHJpc3QsIGFuZCBub3QgYnkgdGhlIHdvcmtzIG9mIHRoZSBsYXc6IGZvciBieSB0aGUgd29ya3Mgb2YgdGhlIGxhdyBzaGFsbCBubyBmbGVzaCBiZSBqdXN0aWZpZWQuCkJ1dCBpZiwgd2hpbGUgd2Ugc2VlayB0byBiZSBqdXN0aWZpZWQgYnkgQ2hyaXN0LCB3ZSBvdXJzZWx2ZXMgYWxzbyBhcmUgZm91bmQgc2lubmVycywgaXMgdGhlcmVmb3JlIENocmlzdCB0aGUgbWluaXN0ZXIgb2Ygc2luPyBHb2QgZm9yYmlkLgpGb3IgaWYgSSBidWlsZCBhZ2FpbiB0aGUgdGhpbmdzIHdoaWNoIEkgZGVzdHJveWVkLCBJIG1ha2UgbXlzZWxmIGEgdHJhbnNncmVzc29yLgpGb3IgSSB0aHJvdWdoIHRoZSBsYXcgYW0gZGVhZCB0byB0aGUgbGF3LCB0aGF0IEkgbWlnaHQgbGl2ZSB1bnRvIEdvZC4KSSBhbSBjcnVjaWZpZWQgd2l0aCBDaHJpc3Q6IG5ldmVydGhsZXNzIEkgbGl2ZTsgeWV0IG5vdCBJLCBidXQgQ2hyaXN0IGxpdmV0aCBpbiBtZTogYW5kIHRoZSBsaWZlIHdoaWNoIEkgbm93IGxpdmUgaW4gdGhlIGZsZXNoIEkgbGl2ZSBieSB0aGUgZmFpdGggb2YgdGhlIFNvbiBvZiBHb2QsIHdobyBsb3ZlZCBtZSwgYW5kIGdhdmUgaGltc2VsZiBmb3IgbWUuCkkgZG8gbm90IGZydXN0cmF0ZSB0aGUgZ3JhY2Ugb2YgR29kOiBmb3IgaWYgcmlnaHRlb3VzbmVzcyBjb21lIGJ5IHRoZSBsYXcsIHRoZW4gQ2hyaXN0IGlzIGRlYWQgaW4gdmFpbi4KTyBmb29saXNoIEdhbGF0aWFucywgd2hvIGhhdGggYmV3aXRjaGVkIHlvdSwgdGhhdCB5ZSBzaG91bGQgbm90IG9iZXkgdGhlIHRydXRoLCBiZWZvcmUgd2hvc2UgZXllcyBKZXN1cyBDaHJpc3QgaGF0aCBiZWVuIGV2aWRlbnRseSBzZXQgZm9ydGgsIGNydWNpZmllZCBhbW9uZyB5b3U/ClRoaXMgb25seSB3b3VsZCBJIGxlYXJuIG9mIHlvdSwgUmVjZWl2ZWQgeWUgdGhlIFNwaXJpdCBieSB0aGUgd29ya3Mgb2YgdGhlIGxhdywgb3IgYnkgdGhlIGhlYXJpbmcgb2YgZmFpdGg/CkFyZSB5ZSBzbyBmb29saXNoPyBoYXZpbmcgYmVndW4gaW4gdGhlIFNwaXJpdCwgYXJlIHllIG5vdyBtYWRlIHBlcmZlY3QgYnkgdGhlIGZsZXNoPwpIYXZlIHllIHN1ZmZlcmVkIHNvIG1hbnkgdGhpbmdzIGluIHZhaW4/IGlmIGl0IGJlIHlldCBpbiB2YWluLgpIZSB0aGVyZWZvcmUgdGhhdCBtaW5pc3RlcmV0aCB0byB5b3UgdGhlIFNwaXJpdCwgYW5kIHdvcmtldGggbWlyYWNsZXMgYW1vbmcgeW91LCBkb2V0aCBoZSBpdCBieSB0aGUgd29ya3Mgb2YgdGhlIGxhdywgb3IgYnkgdGhlIGhlYXJpbmcgb2YgZmFpdGg/CkV2ZW4gYXMgQWJyYWhhbSBiZWxpZXZlZCBHb2QsIGFuZCBpdCB3YXMgYWNjb3VudGVkIHRvIGhpbSBmb3IgcmlnaHRlb3VzbmVzcy4KS25vdyB5ZSB0aGVyZWZvcmUgdGhhdCB0aGV5IHdoaWNoIGFyZSBvZiBmYWl0aCwgdGhlIHNhbWUgYXJlIHRoZSBjaGlsZHJlbiBvZiBBYnJhaGFtLgpBbmQgdGhlIHNjcmlwdHVyZSwgZm9yZXNlZWluZyB0aGF0IEdvZCB3b3VsZCBqdXN0aWZ5IHRoZSBoZWF0aGVuIHRocm91Z2ggZmFpdGgsIHByZWFjaGVkIGJlZm9yZSB0aGUgZ29zcGVsIHVudG8gQWJyYWhhbSwgc2F5aW5nLCBJbiB0aGVlIHNoYWxsIGFsbCBuYXRpb25zIGJlIGJsZXNzZWQuClNvIHRoZW4gdGhleSB3aGljaCBiZSBvZiBmYWl0aCBhcmUgYmxlc3NlZCB3aXRoIGZhaXRoZnVsIEFicmFoYW0uCkZvciBhcyBtYW55IGFzIGFyZSBvZiB0aGUgd29ya3Mgb2YgdGhlIGxhdyBhcmUgdW5kZXIgdGhlIGN1cnNlOiBmb3IgaXQgaXMgd3JpdHRlbiwgQ3Vyc2VkIGlzIGV2ZXJ5IG9uZSB0aGF0IGNvbnRpbnVldGggbm90IGluIGFsbCB0aGluZ3Mgd2hpY2ggYXJlIHdyaXR0ZW4gaW4gdGhlIGJvb2sgb2YgdGhlIGxhdyB0byBkbyB0aGVtLgpCdXQgdGhhdCBubyBtYW4gaXMganVzdGlmaWVkIGJ5IHRoZSBsYXcgaW4gdGhlIHNpZ2h0IG9mIEdvZCwgaXQgaXMgZXZpZGVudDogZm9yLCBUaGUganVzdCBzaGFsbCBsaXZlIGJ5IGZhaXRoLgpBbmQgdGhlIGxhdyBpcyBub3Qgb2YgZmFpdGg6IGJ1dCwgVGhlIG1hbiB0aGF0IGRvZXRoIHRoZW0gc2hhbGwgbGl2ZSBpbiB0aGVtLgpDaHJpc3QgaGF0aCByZWRlZW1lZCB1cyBmcm9tIHRoZSBjdXJzZSBvZiB0aGUgbGF3LCBiZWluZyBtYWRlIGEgY3Vyc2UgZm9yIHVzOiBmb3IgaXQgaXMgd3JpdHRlbiwgQ3Vyc2VkIGlzIGV2ZXJ5IG9uZSB0aGF0IGhhbmdldGggb24gYSB0cmVlOgpUaGF0IHRoZSBibGVzc2luZyBvZiBBYnJhaGFtIG1pZ2h0IGNvbWUgb24gdGhlIEdlbnRpbGVzIHRocm91Z2ggSmVzdXMgQ2hyaXN0OyB0aGF0IHdlIG1pZ2h0IHJlY2VpdmUgdGhlIHByb21pc2Ugb2YgdGhlIFNwaXJpdCB0aHJvdWdoIGZhaXRoLgpCcmV0aHJlbiwgSSBzcGVhayBhZnRlciB0aGUgbWFubmVyIG9mIG1lbjsgVGhvdWdoIGl0IGJlIGJ1dCBhIG1hbidzIGNvdmVuYW50LCB5ZXQgaWYgaXQgYmUgY29uZmlybWVkLCBubyBtYW4gZGlzYW5udWxsZXRoLCBvciBhZGRldGggdGhlcmV0by4KTm93IHRvIEFicmFoYW0gYW5kIGhpcyBzZWVkIHdlcmUgdGhlIHByb21pc2VzIG1hZGUuIEhlIHNhaXRoIG5vdCwgQW5kIHRvIHNlZWRzLCBhcyBvZiBtYW55OyBidXQgYXMgb2Ygb25lLCBBbmQgdG8gdGh5IHNlZWQsIHdoaWNoIGlzIENocmlzdC4KQW5kIHRoaXMgSSBzYXksIHRoYXQgdGhlIGNvdmVuYW50LCB0aGF0IHdhcyBjb25maXJtZWQgYmVmb3JlIG9mIEdvZCBpbiBDaHJpc3QsIHRoZSBsYXcsIHdoaWNoIHdhcyBmb3VyIGh1bmRyZWQgYW5kIHRoaXJ0eSB5ZWFycyBhZnRlciwgY2Fubm90IGRpc2FubnVsLCB0aGF0IGl0IHNob3VsZCBtYWtlIHRoZSBwcm9taXNlIG9mIG5vbmUgZWZmZWN0LgpGb3IgaWYgdGhlIGluaGVyaXRhbmNlIGJlIG9mIHRoZSBsYXcsIGl0IGlzIG5vIG1vcmUgb2YgcHJvbWlzZTogYnV0IEdvZCBnYXZlIGl0IHRvIEFicmFoYW0gYnkgcHJvbWlzZS4KV2hlcmVmb3JlIHRoZW4gc2VydmV0aCB0aGUgbGF3PyBJdCB3YXMgYWRkZWQgYmVjYXVzZSBvZiB0cmFuc2dyZXNzaW9ucywgdGlsbCB0aGUgc2VlZCBzaG91bGQgY29tZSB0byB3aG9tIHRoZSBwcm9taXNlIHdhcyBtYWRlOyBhbmQgaXQgd2FzIG9yZGFpbmVkIGJ5IGFuZ2VscyBpbiB0aGUgaGFuZCBvZiBhIG1lZGlhdG9yLgpOb3cgYSBtZWRpYXRvciBpcyBub3QgYSBtZWRpYXRvciBvZiBvbmUsIGJ1dCBHb2QgaXMgb25lLgpJcyB0aGUgbGF3IHRoZW4gYWdhaW5zdCB0aGUgcHJvbWlzZXMgb2YgR29kPyBHb2QgZm9yYmlkOiBmb3IgaWYgdGhlcmUgaGFkIGJlZW4gYSBsYXcgZ2l2ZW4gd2hpY2ggY291bGQgaGF2ZSBnaXZlbiBsaWZlLCB2ZXJpbHkgcmlnaHRlb3VzbmVzcyBzaG91bGQgaGF2ZSBiZWVuIGJ5IHRoZSBsYXcuCkJ1dCB0aGUgc2NyaXB0dXJlIGhhdGggY29uY2x1ZGVkIGFsbCB1bmRlciBzaW4sIHRoYXQgdGhlIHByb21pc2UgYnkgZmFpdGggb2YgSmVzdXMgQ2hyaXN0IG1pZ2h0IGJlIGdpdmVuIHRvIHRoZW0gdGhhdCBiZWxpZXZlLgpCdXQgYmVmb3JlIGZhaXRoIGNhbWUsIHdlIHdlcmUga2VwdCB1bmRlciB0aGUgbGF3LCBzaHV0IHVwIHVudG8gdGhlIGZhaXRoIHdoaWNoIHNob3VsZCBhZnRlcndhcmRzIGJlIHJldmVhbGVkLgpXaGVyZWZvcmUgdGhlIGxhdyB3YXMgb3VyIHNjaG9vbG1hc3RlciB0byBicmluZyB1cyB1bnRvIENocmlzdCwgdGhhdCB3ZSBtaWdodCBiZSBqdXN0aWZpZWQgYnkgZmFpdGguCkJ1dCBhZnRlciB0aGF0IGZhaXRoIGlzIGNvbWUsIHdlIGFyZSBubyBsb25nZXIgdW5kZXIgYSBzY2hvb2xtYXN0ZXIuCkZvciB5ZSBhcmUgYWxsIHRoZSBjaGlsZHJlbiBvZiBHb2QgYnkgZmFpdGggaW4gQ2hyaXN0IEplc3VzLgpGb3IgYXMgbWFueSBvZiB5b3UgYXMgaGF2ZSBiZWVuIGJhcHRpemVkIGludG8gQ2hyaXN0IGhhdmUgcHV0IG9uIENocmlzdC4KVGhlcmUgaXMgbmVpdGhlciBKZXcgbm9yIEdyZWVrLCB0aGVyZSBpcyBuZWl0aGVyIGJvbmQgbm9yIGZyZWUsIHRoZXJlIGlzIG5laXRoZXIgbWFsZSBub3IgZmVtYWxlOiBmb3IgeWUgYXJlIGFsbCBvbmUgaW4gQ2hyaXN0IEplc3VzLgpBbmQgaWYgeWUgYmUgQ2hyaXN0J3MsIHRoZW4gYXJlIHllIEFicmFoYW0ncyBzZWVkLCBhbmQgaGVpcnMgYWNjb3JkaW5nIHRvIHRoZSBwcm9taXNlLgpOb3cgSSBzYXksIFRoYXQgdGhlIGhlaXIsIGFzIGxvbmcgYXMgaGUgaXMgYSBjaGlsZCwgZGlmZmVyZXRoIG5vdGhpbmcgZnJvbSBhIHNlcnZhbnQsIHRob3VnaCBoZSBiZSBsb3JkIG9mIGFsbDsKQnV0IGlzIHVuZGVyIHR1dG9ycyBhbmQgZ292ZXJub3JzIHVudGlsIHRoZSB0aW1lIGFwcG9pbnRlZCBvZiB0aGUgZmF0aGVyLgpFdmVuIHNvIHdlLCB3aGVuIHdlIHdlcmUgY2hpbGRyZW4sIHdlcmUgaW4gYm9uZGFnZSB1bmRlciB0aGUgZWxlbWVudHMgb2YgdGhlIHdvcmxkOgpCdXQgd2hlbiB0aGUgZnVsbmVzcyBvZiB0aGUgdGltZSB3YXMgY29tZSwgR29kIHNlbnQgZm9ydGggaGlzIFNvbiwgbWFkZSBvZiBhIHdvbWFuLCBtYWRlIHVuZGVyIHRoZSBsYXcsClRvIHJlZGVlbSB0aGVtIHRoYXQgd2VyZSB1bmRlciB0aGUgbGF3LCB0aGF0IHdlIG1pZ2h0IHJlY2VpdmUgdGhlIGFkb3B0aW9uIG9mIHNvbnMuCkFuZCBiZWNhdXNlIHllIGFyZSBzb25zLCBHb2QgaGF0aCBzZW50IGZvcnRoIHRoZSBTcGlyaXQgb2YgaGlzIFNvbiBpbnRvIHlvdXIgaGVhcnRzLCBjcnlpbmcsIEFiYmEsIEZhdGhlci4KV2hlcmVmb3JlIHRob3UgYXJ0IG5vIG1vcmUgYSBzZXJ2YW50LCBidXQgYSBzb247IGFuZCBpZiBhIHNvbiwgdGhlbiBhbiBoZWlyIG9mIEdvZCB0aHJvdWdoIENocmlzdC4KSG93YmVpdCB0aGVuLCB3aGVuIHllIGtuZXcgbm90IEdvZCwgeWUgZGlkIHNlcnZpY2UgdW50byB0aGVtIHdoaWNoIGJ5IG5hdHVyZSBhcmUgbm8gZ29kcy4KQnV0IG5vdywgYWZ0ZXIgdGhhdCB5ZSBoYXZlIGtub3duIEdvZCwgb3IgcmF0aGVyIGFyZSBrbm93biBvZiBHb2QsIGhvdyB0dXJuIHllIGFnYWluIHRvIHRoZSB3ZWFrIGFuZCBiZWdnYXJseSBlbGVtZW50cywgd2hlcmV1bnRvIHllIGRlc2lyZSBhZ2FpbiB0byBiZSBpbiBib25kYWdlPwpZZSBvYnNlcnZlIGRheXMsIGFuZCBtb250aHMsIGFuZCB0aW1lcywgYW5kIHllYXJzLgpJIGFtIGFmcmFpZCBvZiB5b3UsIGxlc3QgSSBoYXZlIGJlc3Rvd2VkIHVwb24geW91IGxhYm91ciBpbiB2YWluLgpCcmV0aHJlbiwgSSBiZXNlZWNoIHlvdSwgYmUgYXMgSSBhbTsgZm9yIEkgYW0gYXMgeWUgYXJlOiB5ZSBoYXZlIG5vdCBpbmp1cmVkIG1lIGF0IGFsbC4KWWUga25vdyBob3cgdGhyb3VnaCBpbmZpcm1pdHkgb2YgdGhlIGZsZXNoIEkgcHJlYWNoZWQgdGhlIGdvc3BlbCB1bnRvIHlvdSBhdCB0aGUgZmlyc3QuCkFuZCBteSB0ZW1wdGF0aW9uIHdoaWNoIHdhcyBpbiBteSBmbGVzaCB5ZSBkZXNwaXNlZCBub3QsIG5vciByZWplY3RlZDsgYnV0IHJlY2VpdmVkIG1lIGFzIGFuIGFuZ2VsIG9mIEdvZCwgZXZlbiBhcyBDaHJpc3QgSmVzdXMuCldoZXJlIGlzIHRoZW4gdGhlIGJsZXNzZWRuZXNzIHllIHNwYWtlIG9mPyBmb3IgSSBiZWFyIHlvdSByZWNvcmQsIHRoYXQsIGlmIGl0IGhhZCBiZWVuIHBvc3NpYmxlLCB5ZSB3b3VsZCBoYXZlIHBsdWNrZWQgb3V0IHlvdXIgb3duIGV5ZXMsIGFuZCBoYXZlIGdpdmVuIHRoZW0gdG8gbWUuCkFtIEkgdGhlcmVmb3JlIGJlY29tZSB5b3VyIGVuZW15LCBiZWNhdXNlIEkgdGVsbCB5b3UgdGhlIHRydXRoPwpUaGV5IHplYWxvdXNseSBhZmZlY3QgeW91LCBidXQgbm90IHdlbGw7IHllYSwgdGhleSB3b3VsZCBleGNsdWRlIHlvdSwgdGhhdCB5ZSBtaWdodCBhZmZlY3QgdGhlbS4KQnV0IGl0IGlzIGdvb2QgdG8gYmUgemVhbG91c2x5IGFmZmVjdGVkIGFsd2F5cyBpbiBhIGdvb2QgdGhpbmcsIGFuZCBub3Qgb25seSB3aGVuIEkgYW0gcHJlc2VudCB3aXRoIHlvdS4KTXkgbGl0dGxlIGNoaWxkcmVuLCBvZiB3aG9tIEkgdHJhdmFpbCBpbiBiaXJ0aCBhZ2FpbiB1bnRpbCBDaHJpc3QgYmUgZm9ybWVkIGluIHlvdSwKSSBkZXNpcmUgdG8gYmUgcHJlc2VudCB3aXRoIHlvdSBub3csIGFuZCB0byBjaGFuZ2UgbXkgdm9pY2U7IGZvciBJIHN0YW5kIGluIGRvdWJ0IG9mIHlvdS4KVGVsbCBtZSwgeWUgdGhhdCBkZXNpcmUgdG8gYmUgdW5kZXIgdGhlIGxhdywgZG8geWUgbm90IGhlYXIgdGhlIGxhdz8KRm9yIGl0IGlzIHdyaXR0ZW4sIHRoYXQgQWJyYWhhbSBoYWQgdHdvIHNvbnMsIHRoZSBvbmUgYnkgYSBib25kbWFpZCwgdGhlIG90aGVyIGJ5IGEgZnJlZXdvbWFuLgpCdXQgaGUgd2hvIHdhcyBvZiB0aGUgYm9uZHdvbWFuIHdhcyBib3JuIGFmdGVyIHRoZSBmbGVzaDsgYnV0IGhlIG9mIHRoZSBmcmVld29tYW4gd2FzIGJ5IHByb21pc2UuCldoaWNoIHRoaW5ncyBhcmUgYW4gYWxsZWdvcnk6IGZvciB0aGVzZSBhcmUgdGhlIHR3byBjb3ZlbmFudHM7IHRoZSBvbmUgZnJvbSB0aGUgbW91bnQgU2luYWksIHdoaWNoIGdlbmRlcmV0aCB0byBib25kYWdlLCB3aGljaCBpcyBBZ2FyLgpGb3IgdGhpcyBBZ2FyIGlzIG1vdW50IFNpbmFpIGluIEFyYWJpYSwgYW5kIGFuc3dlcmV0aCB0byBKZXJ1c2FsZW0gd2hpY2ggbm93IGlzLCBhbmQgaXMgaW4gYm9uZGFnZSB3aXRoIGhlciBjaGlsZHJlbi4KQnV0IEplcnVzYWxlbSB3aGljaCBpcyBhYm92ZSBpcyBmcmVlLCB3aGljaCBpcyB0aGUgbW90aGVyIG9mIHVzIGFsbC4KRm9yIGl0IGlzIHdyaXR0ZW4sIFJlam9pY2UsIHRob3UgYmFycmVuIHRoYXQgYmVhcmVzdCBub3Q7IGJyZWFrIGZvcnRoIGFuZCBjcnksIHRob3UgdGhhdCB0cmF2YWlsZXN0IG5vdDogZm9yIHRoZSBkZXNvbGF0ZSBoYXRoIG1hbnkgbW9yZSBjaGlsZHJlbiB0aGFuIHNoZSB3aGljaCBoYXRoIGFuIGh1c2JhbmQuCk5vdyB3ZSwgYnJldGhyZW4sIGFzIElzYWFjIHdhcywgYXJlIHRoZSBjaGlsZHJlbiBvZiBwcm9taXNlLgpCdXQgYXMgdGhlbiBoZSB0aGF0IHdhcyBib3JuIGFmdGVyIHRoZSBmbGVzaCBwZXJzZWN1dGVkIGhpbSB0aGF0IHdhcyBib3JuIGFmdGVyIHRoZSBTcGlyaXQsIGV2ZW4gc28gaXQgaXMgbm93LgpOZXZlcnRoZWxlc3Mgd2hhdCBzYWl0aCB0aGUgc2NyaXB0dXJlPyBDYXN0IG91dCB0aGUgYm9uZHdvbWFuIGFuZCBoZXIgc29uOiBmb3IgdGhlIHNvbiBvZiB0aGUgYm9uZHdvbWFuIHNoYWxsIG5vdCBiZSBoZWlyIHdpdGggdGhlIHNvbiBvZiB0aGUgZnJlZXdvbWFuLgpTbyB0aGVuLCBicmV0aHJlbiwgd2UgYXJlIG5vdCBjaGlsZHJlbiBvZiB0aGUgYm9uZHdvbWFuLCBidXQgb2YgdGhlIGZyZWUuClN0YW5kIGZhc3QgdGhlcmVmb3JlIGluIHRoZSBsaWJlcnR5IHdoZXJld2l0aCBDaHJpc3QgaGF0aCBtYWRlIHVzIGZyZWUsIGFuZCBiZSBub3QgZW50YW5nbGVkIGFnYWluIHdpdGggdGhlIHlva2Ugb2YgYm9uZGFnZS4KQmVob2xkLCBJIFBhdWwgc2F5IHVudG8geW91LCB0aGF0IGlmIHllIGJlIGNpcmN1bWNpc2VkLCBDaHJpc3Qgc2hhbGwgcHJvZml0IHlvdSBub3RoaW5nLgpGb3IgSSB0ZXN0aWZ5IGFnYWluIHRvIGV2ZXJ5IG1hbiB0aGF0IGlzIGNpcmN1bWNpc2VkLCB0aGF0IGhlIGlzIGEgZGVidG9yIHRvIGRvIHRoZSB3aG9sZSBsYXcuCkNocmlzdCBpcyBiZWNvbWUgb2Ygbm8gZWZmZWN0IHVudG8geW91LCB3aG9zb2V2ZXIgb2YgeW91IGFyZSBqdXN0aWZpZWQgYnkgdGhlIGxhdzsgeWUgYXJlIGZhbGxlbiBmcm9tIGdyYWNlLgpGb3Igd2UgdGhyb3VnaCB0aGUgU3Bpcml0IHdhaXQgZm9yIHRoZSBob3BlIG9mIHJpZ2h0ZW91c25lc3MgYnkgZmFpdGguCkZvciBpbiBKZXN1cyBDaHJpc3QgbmVpdGhlciBjaXJjdW1jaXNpb24gYXZhaWxldGggYW55IHRoaW5nLCBub3IgdW5jaXJjdW1jaXNpb247IGJ1dCBmYWl0aCB3aGljaCB3b3JrZXRoIGJ5IGxvdmUuClllIGRpZCBydW4gd2VsbDsgd2hvIGRpZCBoaW5kZXIgeW91IHRoYXQgeWUgc2hvdWxkIG5vdCBvYmV5IHRoZSB0cnV0aD8KVGhpcyBwZXJzdWFzaW9uIGNvbWV0aCBub3Qgb2YgaGltIHRoYXQgY2FsbGV0aCB5b3UuCkEgbGl0dGxlIGxlYXZlbiBsZWF2ZW5ldGggdGhlIHdob2xlIGx1bXAuCkkgaGF2ZSBjb25maWRlbmNlIGluIHlvdSB0aHJvdWdoIHRoZSBMb3JkLCB0aGF0IHllIHdpbGwgYmUgbm9uZSBvdGhlcndpc2UgbWluZGVkOiBidXQgaGUgdGhhdCB0cm91YmxldGggeW91IHNoYWxsIGJlYXIgaGlzIGp1ZGdtZW50LCB3aG9zb2V2ZXIgaGUgYmUuCkFuZCBJLCBicmV0aHJlbiwgaWYgSSB5ZXQgcHJlYWNoIGNpcmN1bWNpc2lvbiwgd2h5IGRvIEkgeWV0IHN1ZmZlciBwZXJzZWN1dGlvbj8gdGhlbiBpcyB0aGUgb2ZmZW5jZSBvZiB0aGUgY3Jvc3MgY2Vhc2VkLgpJIHdvdWxkIHRoZXkgd2VyZSBldmVuIGN1dCBvZmYgd2hpY2ggdHJvdWJsZSB5b3UuCkZvciwgYnJldGhyZW4sIHllIGhhdmUgYmVlbiBjYWxsZWQgdW50byBsaWJlcnR5OyBvbmx5IHVzZSBub3QgbGliZXJ0eSBmb3IgYW4gb2NjYXNpb24gdG8gdGhlIGZsZXNoLCBidXQgYnkgbG92ZSBzZXJ2ZSBvbmUgYW5vdGhlci4KRm9yIGFsbCB0aGUgbGF3IGlzIGZ1bGZpbGxlZCBpbiBvbmUgd29yZCwgZXZlbiBpbiB0aGlzOyBUaG91IHNoYWx0IGxvdmUgdGh5IG5laWdoYm91ciBhcyB0aHlzZWxmLgpCdXQgaWYgeWUgYml0ZSBhbmQgZGV2b3VyIG9uZSBhbm90aGVyLCB0YWtlIGhlZWQgdGhhdCB5ZSBiZSBub3QgY29uc3VtZWQgb25lIG9mIGFub3RoZXIuClRoaXMgSSBzYXkgdGhlbiwgV2FsayBpbiB0aGUgU3Bpcml0LCBhbmQgeWUgc2hhbGwgbm90IGZ1bGZpbCB0aGUgbHVzdCBvZiB0aGUgZmxlc2guCkZvciB0aGUgZmxlc2ggbHVzdGV0aCBhZ2FpbnN0IHRoZSBTcGlyaXQsIGFuZCB0aGUgU3Bpcml0IGFnYWluc3QgdGhlIGZsZXNoOiBhbmQgdGhlc2UgYXJlIGNvbnRyYXJ5IHRoZSBvbmUgdG8gdGhlIG90aGVyOiBzbyB0aGF0IHllIGNhbm5vdCBkbyB0aGUgdGhpbmdzIHRoYXQgeWUgd291bGQuCkJ1dCBpZiB5ZSBiZSBsZWQgb2YgdGhlIFNwaXJpdCwgeWUgYXJlIG5vdCB1bmRlciB0aGUgbGF3LgpOb3cgdGhlIHdvcmtzIG9mIHRoZSBmbGVzaCBhcmUgbWFuaWZlc3QsIHdoaWNoIGFyZSB0aGVzZTsgQWR1bHRlcnksIGZvcm5pY2F0aW9uLCB1bmNsZWFubmVzcywgbGFzY2l2aW91c25lc3MsCklkb2xhdHJ5LCB3aXRjaGNyYWZ0LCBoYXRyZWQsIHZhcmlhbmNlLCBlbXVsYXRpb25zLCB3cmF0aCwgc3RyaWZlLCBzZWRpdGlvbnMsIGhlcmVzaWVzLApFbnZ5aW5ncywgbXVyZGVycywgZHJ1bmtlbm5lc3MsIHJldmVsbGluZ3MsIGFuZCBzdWNoIGxpa2U6IG9mIHRoZSB3aGljaCBJIHRlbGwgeW91IGJlZm9yZSwgYXMgSSBoYXZlIGFsc28gdG9sZCB5b3UgaW4gdGltZSBwYXN0LCB0aGF0IHRoZXkgd2hpY2ggZG8gc3VjaCB0aGluZ3Mgc2hhbGwgbm90IGluaGVyaXQgdGhlIGtpbmdkb20gb2YgR29kLgpCdXQgdGhlIGZydWl0IG9mIHRoZSBTcGlyaXQgaXMgbG92ZSwgam95LCBwZWFjZSwgbG9uZ3N1ZmZlcmluZywgZ2VudGxlbmVzcywgZ29vZG5lc3MsIGZhaXRoLApNZWVrbmVzcywgdGVtcGVyYW5jZTogYWdhaW5zdCBzdWNoIHRoZXJlIGlzIG5vIGxhdy4KQW5kIHRoZXkgdGhhdCBhcmUgQ2hyaXN0J3MgaGF2ZSBjcnVjaWZpZWQgdGhlIGZsZXNoIHdpdGggdGhlIGFmZmVjdGlvbnMgYW5kIGx1c3RzLgpJZiB3ZSBsaXZlIGluIHRoZSBTcGlyaXQsIGxldCB1cyBhbHNvIHdhbGsgaW4gdGhlIFNwaXJpdC4KTGV0IHVzIG5vdCBiZSBkZXNpcm91cyBvZiB2YWluIGdsb3J5LCBwcm92b2tpbmcgb25lIGFub3RoZXIsIGVudnlpbmcgb25lIGFub3RoZXIuCkJyZXRocmVuLCBpZiBhIG1hbiBiZSBvdmVydGFrZW4gaW4gYSBmYXVsdCwgeWUgd2hpY2ggYXJlIHNwaXJpdHVhbCwgcmVzdG9yZSBzdWNoIGFuIG9uZSBpbiB0aGUgc3Bpcml0IG9mIG1lZWtuZXNzOyBjb25zaWRlcmluZyB0aHlzZWxmLCBsZXN0IHRob3UgYWxzbyBiZSB0ZW1wdGVkLgpCZWFyIHllIG9uZSBhbm90aGVyJ3MgYnVyZGVucywgYW5kIHNvIGZ1bGZpbCB0aGUgbGF3IG9mIENocmlzdC4KRm9yIGlmIGEgbWFuIHRoaW5rIGhpbXNlbGYgdG8gYmUgc29tZXRoaW5nLCB3aGVuIGhlIGlzIG5vdGhpbmcsIGhlIGRlY2VpdmV0aCBoaW1zZWxmLgpCdXQgbGV0IGV2ZXJ5IG1hbiBwcm92ZSBoaXMgb3duIHdvcmssIGFuZCB0aGVuIHNoYWxsIGhlIGhhdmUgcmVqb2ljaW5nIGluIGhpbXNlbGYgYWxvbmUsIGFuZCBub3QgaW4gYW5vdGhlci4KRm9yIGV2ZXJ5IG1hbiBzaGFsbCBiZWFyIGhpcyBvd24gYnVyZGVuLgpMZXQgaGltIHRoYXQgaXMgdGF1Z2h0IGluIHRoZSB3b3JkIGNvbW11bmljYXRlIHVudG8gaGltIHRoYXQgdGVhY2hldGggaW4gYWxsIGdvb2QgdGhpbmdzLgpCZSBub3QgZGVjZWl2ZWQ7IEdvZCBpcyBub3QgbW9ja2VkOiBmb3Igd2hhdHNvZXZlciBhIG1hbiBzb3dldGgsIHRoYXQgc2hhbGwgaGUgYWxzbyByZWFwLgpGb3IgaGUgdGhhdCBzb3dldGggdG8gaGlzIGZsZXNoIHNoYWxsIG9mIHRoZSBmbGVzaCByZWFwIGNvcnJ1cHRpb247IGJ1dCBoZSB0aGF0IHNvd2V0aCB0byB0aGUgU3Bpcml0IHNoYWxsIG9mIHRoZSBTcGlyaXQgcmVhcCBsaWZlIGV2ZXJsYXN0aW5nLgpBbmQgbGV0IHVzIG5vdCBiZSB3ZWFyeSBpbiB3ZWxsIGRvaW5nOiBmb3IgaW4gZHVlIHNlYXNvbiB3ZSBzaGFsbCByZWFwLCBpZiB3ZSBmYWludCBub3QuCkFzIHdlIGhhdmUgdGhlcmVmb3JlIG9wcG9ydHVuaXR5LCBsZXQgdXMgZG8gZ29vZCB1bnRvIGFsbCBtZW4sIGVzcGVjaWFsbHkgdW50byB0aGVtIHdobyBhcmUgb2YgdGhlIGhvdXNlaG9sZCBvZiBmYWl0aC4KWWUgc2VlIGhvdyBsYXJnZSBhIGxldHRlciBJIGhhdmUgd3JpdHRlbiB1bnRvIHlvdSB3aXRoIG1pbmUgb3duIGhhbmQuCkFzIG1hbnkgYXMgZGVzaXJlIHRvIG1ha2UgYSBmYWlyIHNoZXcgaW4gdGhlIGZsZXNoLCB0aGV5IGNvbnN0cmFpbiB5b3UgdG8gYmUgY2lyY3VtY2lzZWQ7IG9ubHkgbGVzdCB0aGV5IHNob3VsZCBzdWZmZXIgcGVyc2VjdXRpb24gZm9yIHRoZSBjcm9zcyBvZiBDaHJpc3QuCkZvciBuZWl0aGVyIHRoZXkgdGhlbXNlbHZlcyB3aG8gYXJlIGNpcmN1bWNpc2VkIGtlZXAgdGhlIGxhdzsgYnV0IGRlc2lyZSB0byBoYXZlIHlvdSBjaXJjdW1jaXNlZCwgdGhhdCB0aGV5IG1heSBnbG9yeSBpbiB5b3VyIGZsZXNoLgpCdXQgR29kIGZvcmJpZCB0aGF0IEkgc2hvdWxkIGdsb3J5LCBzYXZlIGluIHRoZSBjcm9zcyBvZiBvdXIgTG9yZCBKZXN1cyBDaHJpc3QsIGJ5IHdob20gdGhlIHdvcmxkIGlzIGNydWNpZmllZCB1bnRvIG1lLCBhbmQgSSB1bnRvIHRoZSB3b3JsZC4KRm9yIGluIENocmlzdCBKZXN1cyBuZWl0aGVyIGNpcmN1bWNpc2lvbiBhdmFpbGV0aCBhbnkgdGhpbmcsIG5vciB1bmNpcmN1bWNpc2lvbiwgYnV0IGEgbmV3IGNyZWF0dXJlLgpBbmQgYXMgbWFueSBhcyB3YWxrIGFjY29yZGluZyB0byB0aGlzIHJ1bGUsIHBlYWNlIGJlIG9uIHRoZW0sIGFuZCBtZXJjeSwgYW5kIHVwb24gdGhlIElzcmFlbCBvZiBHb2QuCkZyb20gaGVuY2Vmb3J0aCBsZXQgbm8gbWFuIHRyb3VibGUgbWU6IGZvciBJIGJlYXIgaW4gbXkgYm9keSB0aGUgbWFya3Mgb2YgdGhlIExvcmQgSmVzdXMuCkJyZXRocmVuLCB0aGUgZ3JhY2Ugb2Ygb3VyIExvcmQgSmVzdXMgQ2hyaXN0IGJlIHdpdGggeW91ciBzcGlyaXQuIEFtZW4uClBhdWwsIGFuIGFwb3N0bGUgb2YgSmVzdXMgQ2hyaXN0IGJ5IHRoZSB3aWxsIG9mIEdvZCwgdG8gdGhlIHNhaW50cyB3aGljaCBhcmUgYXQgRXBoZXN1cywgYW5kIHRvIHRoZSBmYWl0aGZ1bCBpbiBDaHJpc3QgSmVzdXM6CkdyYWNlIGJlIHRvIHlvdSwgYW5kIHBlYWNlLCBmcm9tIEdvZCBvdXIgRmF0aGVyLCBhbmQgZnJvbSB0aGUgTG9yZCBKZXN1cyBDaHJpc3QuCkJsZXNzZWQgYmUgdGhlIEdvZCBhbmQgRmF0aGVyIG9mIG91ciBMb3JkIEplc3VzIENocmlzdCwgd2hvIGhhdGggYmxlc3NlZCB1cyB3aXRoIGFsbCBzcGlyaXR1YWwgYmxlc3NpbmdzIGluIGhlYXZlbmx5IHBsYWNlcyBpbiBDaHJpc3Q6CkFjY29yZGluZyBhcyBoZSBoYXRoIGNob3NlbiB1cyBpbiBoaW0gYmVmb3JlIHRoZSBmb3VuZGF0aW9uIG9mIHRoZSB3b3JsZCwgdGhhdCB3ZSBzaG91bGQgYmUgaG9seSBhbmQgd2l0aG91dCBibGFtZSBiZWZvcmUgaGltIGluIGxvdmU6CkhhdmluZyBwcmVkZXN0aW5hdGVkIHVzIHVudG8gdGhlIGFkb3B0aW9uIG9mIGNoaWxkcmVuIGJ5IEplc3VzIENocmlzdCB0byBoaW1zZWxmLCBhY2NvcmRpbmcgdG8gdGhlIGdvb2QgcGxlYXN1cmUgb2YgaGlzIHdpbGwsClRvIHRoZSBwcmFpc2Ugb2YgdGhlIGdsb3J5IG9mIGhpcyBncmFjZSwgd2hlcmVpbiBoZSBoYXRoIG1hZGUgdXMgYWNjZXB0ZWQgaW4gdGhlIGJlbG92ZWQuCkluIHdob20gd2UgaGF2ZSByZWRlbXB0aW9uIHRocm91Z2ggaGlzIGJsb29kLCB0aGUgZm9yZ2l2ZW5lc3Mgb2Ygc2lucywgYWNjb3JkaW5nIHRvIHRoZSByaWNoZXMgb2YgaGlzIGdyYWNlOwpXaGVyZWluIGhlIGhhdGggYWJvdW5kZWQgdG93YXJkIHVzIGluIGFsbCB3aXNkb20gYW5kIHBydWRlbmNlOwpIYXZpbmcgbWFkZSBrbm93biB1bnRvIHVzIHRoZSBteXN0ZXJ5IG9mIGhpcyB3aWxsLCBhY2NvcmRpbmcgdG8gaGlzIGdvb2QgcGxlYXN1cmUgd2hpY2ggaGUgaGF0aCBwdXJwb3NlZCBpbiBoaW1zZWxmOgpUaGF0IGluIHRoZSBkaXNwZW5zYXRpb24gb2YgdGhlIGZ1bG5lc3Mgb2YgdGltZXMgaGUgbWlnaHQgZ2F0aGVyIHRvZ2V0aGVyIGluIG9uZSBhbGwgdGhpbmdzIGluIENocmlzdCwgYm90aCB3aGljaCBhcmUgaW4gaGVhdmVuLCBhbmQgd2hpY2ggYXJlIG9uIGVhcnRoOyBldmVuIGluIGhpbToKSW4gd2hvbSBhbHNvIHdlIGhhdmUgb2J0YWluZWQgYW4gaW5oZXJpdGFuY2UsIGJlaW5nIHByZWRlc3RpbmF0ZWQgYWNjb3JkaW5nIHRvIHRoZSBwdXJwb3NlIG9mIGhpbSB3aG8gd29ya2V0aCBhbGwgdGhpbmdzIGFmdGVyIHRoZSBjb3Vuc2VsIG9mIGhpcyBvd24gd2lsbDoKVGhhdCB3ZSBzaG91bGQgYmUgdG8gdGhlIHByYWlzZSBvZiBoaXMgZ2xvcnksIHdobyBmaXJzdCB0cnVzdGVkIGluIENocmlzdC4KSW4gd2hvbSB5ZSBhbHNvIHRydXN0ZWQsIGFmdGVyIHRoYXQgeWUgaGVhcmQgdGhlIHdvcmQgb2YgdHJ1dGgsIHRoZSBnb3NwZWwgb2YgeW91ciBzYWx2YXRpb246IGluIHdob20gYWxzbyBhZnRlciB0aGF0IHllIGJlbGlldmVkLCB5ZSB3ZXJlIHNlYWxlZCB3aXRoIHRoYXQgaG9seSBTcGlyaXQgb2YgcHJvbWlzZSwKV2hpY2ggaXMgdGhlIGVhcm5lc3Qgb2Ygb3VyIGluaGVyaXRhbmNlIHVudGlsIHRoZSByZWRlbXB0aW9uIG9mIHRoZSBwdXJjaGFzZWQgcG9zc2Vzc2lvbiwgdW50byB0aGUgcHJhaXNlIG9mIGhpcyBnbG9yeS4KV2hlcmVmb3JlIEkgYWxzbywgYWZ0ZXIgSSBoZWFyZCBvZiB5b3VyIGZhaXRoIGluIHRoZSBMb3JkIEplc3VzLCBhbmQgbG92ZSB1bnRvIGFsbCB0aGUgc2FpbnRzLApDZWFzZSBub3QgdG8gZ2l2ZSB0aGFua3MgZm9yIHlvdSwgbWFraW5nIG1lbnRpb24gb2YgeW91IGluIG15IHByYXllcnM7ClRoYXQgdGhlIEdvZCBvZiBvdXIgTG9yZCBKZXN1cyBDaHJpc3QsIHRoZSBGYXRoZXIgb2YgZ2xvcnksIG1heSBnaXZlIHVudG8geW91IHRoZSBzcGlyaXQgb2Ygd2lzZG9tIGFuZCByZXZlbGF0aW9uIGluIHRoZSBrbm93bGVkZ2Ugb2YgaGltOgpUaGUgZXllcyBvZiB5b3VyIHVuZGVyc3RhbmRpbmcgYmVpbmcgZW5saWdodGVuZWQ7IHRoYXQgeWUgbWF5IGtub3cgd2hhdCBpcyB0aGUgaG9wZSBvZiBoaXMgY2FsbGluZywgYW5kIHdoYXQgdGhlIHJpY2hlcyBvZiB0aGUgZ2xvcnkgb2YgaGlzIGluaGVyaXRhbmNlIGluIHRoZSBzYWludHMsCkFuZCB3aGF0IGlzIHRoZSBleGNlZWRpbmcgZ3JlYXRuZXNzIG9mIGhpcyBwb3dlciB0byB1cy13YXJkIHdobyBiZWxpZXZlLCBhY2NvcmRpbmcgdG8gdGhlIHdvcmtpbmcgb2YgaGlzIG1pZ2h0eSBwb3dlciwKV2hpY2ggaGUgd3JvdWdodCBpbiBDaHJpc3QsIHdoZW4gaGUgcmFpc2VkIGhpbSBmcm9tIHRoZSBkZWFkLCBhbmQgc2V0IGhpbSBhdCBoaXMgb3duIHJpZ2h0IGhhbmQgaW4gdGhlIGhlYXZlbmx5IHBsYWNlcywKRmFyIGFib3ZlIGFsbCBwcmluY2lwYWxpdHksIGFuZCBwb3dlciwgYW5kIG1pZ2h0LCBhbmQgZG9taW5pb24sIGFuZCBldmVyeSBuYW1lIHRoYXQgaXMgbmFtZWQsIG5vdCBvbmx5IGluIHRoaXMgd29ybGQsIGJ1dCBhbHNvIGluIHRoYXQgd2hpY2ggaXMgdG8gY29tZToKQW5kIGhhdGggcHV0IGFsbCB0aGluZ3MgdW5kZXIgaGlzIGZlZXQsIGFuZCBnYXZlIGhpbSB0byBiZSB0aGUgaGVhZCBvdmVyIGFsbCB0aGluZ3MgdG8gdGhlIGNodXJjaCwKV2hpY2ggaXMgaGlzIGJvZHksIHRoZSBmdWxuZXNzIG9mIGhpbSB0aGF0IGZpbGxldGggYWxsIGluIGFsbC4KQW5kIHlvdSBoYXRoIGhlIHF1aWNrZW5lZCwgd2hvIHdlcmUgZGVhZCBpbiB0cmVzcGFzc2VzIGFuZCBzaW5zOwpXaGVyZWluIGluIHRpbWUgcGFzdCB5ZSB3YWxrZWQgYWNjb3JkaW5nIHRvIHRoZSBjb3Vyc2Ugb2YgdGhpcyB3b3JsZCwgYWNjb3JkaW5nIHRvIHRoZSBwcmluY2Ugb2YgdGhlIHBvd2VyIG9mIHRoZSBhaXIsIHRoZSBzcGlyaXQgdGhhdCBub3cgd29ya2V0aCBpbiB0aGUgY2hpbGRyZW4gb2YgZGlzb2JlZGllbmNlOgpBbW9uZyB3aG9tIGFsc28gd2UgYWxsIGhhZCBvdXIgY29udmVyc2F0aW9uIGluIHRpbWVzIHBhc3QgaW4gdGhlIGx1c3RzIG9mIG91ciBmbGVzaCwgZnVsZmlsbGluZyB0aGUgZGVzaXJlcyBvZiB0aGUgZmxlc2ggYW5kIG9mIHRoZSBtaW5kOyBhbmQgd2VyZSBieSBuYXR1cmUgdGhlIGNoaWxkcmVuIG9mIHdyYXRoLCBldmVuIGFzIG90aGVycy4KQnV0IEdvZCwgd2hvIGlzIHJpY2ggaW4gbWVyY3ksIGZvciBoaXMgZ3JlYXQgbG92ZSB3aGVyZXdpdGggaGUgbG92ZWQgdXMsCkV2ZW4gd2hlbiB3ZSB3ZXJlIGRlYWQgaW4gc2lucywgaGF0aCBxdWlja2VuZWQgdXMgdG9nZXRoZXIgd2l0aCBDaHJpc3QsIChieSBncmFjZSB5ZSBhcmUgc2F2ZWQ7KQpBbmQgaGF0aCByYWlzZWQgdXMgdXAgdG9nZXRoZXIsIGFuZCBtYWRlIHVzIHNpdCB0b2dldGhlciBpbiBoZWF2ZW5seSBwbGFjZXMgaW4gQ2hyaXN0IEplc3VzOgpUaGF0IGluIHRoZSBhZ2VzIHRvIGNvbWUgaGUgbWlnaHQgc2hldyB0aGUgZXhjZWVkaW5nIHJpY2hlcyBvZiBoaXMgZ3JhY2UgaW4gaGlzIGtpbmRuZXNzIHRvd2FyZCB1cyB0aHJvdWdoIENocmlzdCBKZXN1cy4KRm9yIGJ5IGdyYWNlIGFyZSB5ZSBzYXZlZCB0aHJvdWdoIGZhaXRoOyBhbmQgdGhhdCBub3Qgb2YgeW91cnNlbHZlczogaXQgaXMgdGhlIGdpZnQgb2YgR29kOgpOb3Qgb2Ygd29ya3MsIGxlc3QgYW55IG1hbiBzaG91bGQgYm9hc3QuCkZvciB3ZSBhcmUgaGlzIHdvcmttYW5zaGlwLCBjcmVhdGVkIGluIENocmlzdCBKZXN1cyB1bnRvIGdvb2Qgd29ya3MsIHdoaWNoIEdvZCBoYXRoIGJlZm9yZSBvcmRhaW5lZCB0aGF0IHdlIHNob3VsZCB3YWxrIGluIHRoZW0uCldoZXJlZm9yZSByZW1lbWJlciwgdGhhdCB5ZSBiZWluZyBpbiB0aW1lIHBhc3QgR2VudGlsZXMgaW4gdGhlIGZsZXNoLCB3aG8gYXJlIGNhbGxlZCBVbmNpcmN1bWNpc2lvbiBieSB0aGF0IHdoaWNoIGlzIGNhbGxlZCB0aGUgQ2lyY3VtY2lzaW9uIGluIHRoZSBmbGVzaCBtYWRlIGJ5IGhhbmRzOwpUaGF0IGF0IHRoYXQgdGltZSB5ZSB3ZXJlIHdpdGhvdXQgQ2hyaXN0LCBiZWluZyBhbGllbnMgZnJvbSB0aGUgY29tbW9ud2VhbHRoIG9mIElzcmFlbCwgYW5kIHN0cmFuZ2VycyBmcm9tIHRoZSBjb3ZlbmFudHMgb2YgcHJvbWlzZSwgaGF2aW5nIG5vIGhvcGUsIGFuZCB3aXRob3V0IEdvZCBpbiB0aGUgd29ybGQ6CkJ1dCBub3cgaW4gQ2hyaXN0IEplc3VzIHllIHdobyBzb21ldGltZXMgd2VyZSBmYXIgb2ZmIGFyZSBtYWRlIG5pZ2ggYnkgdGhlIGJsb29kIG9mIENocmlzdC4KRm9yIGhlIGlzIG91ciBwZWFjZSwgd2hvIGhhdGggbWFkZSBib3RoIG9uZSwgYW5kIGhhdGggYnJva2VuIGRvd24gdGhlIG1pZGRsZSB3YWxsIG9mIHBhcnRpdGlvbiBiZXR3ZWVuIHVzOwpIYXZpbmcgYWJvbGlzaGVkIGluIGhpcyBmbGVzaCB0aGUgZW5taXR5LCBldmVuIHRoZSBsYXcgb2YgY29tbWFuZG1lbnRzIGNvbnRhaW5lZCBpbiBvcmRpbmFuY2VzOyBmb3IgdG8gbWFrZSBpbiBoaW1zZWxmIG9mIHR3YWluIG9uZSBuZXcgbWFuLCBzbyBtYWtpbmcgcGVhY2U7CkFuZCB0aGF0IGhlIG1pZ2h0IHJlY29uY2lsZSBib3RoIHVudG8gR29kIGluIG9uZSBib2R5IGJ5IHRoZSBjcm9zcywgaGF2aW5nIHNsYWluIHRoZSBlbm1pdHkgdGhlcmVieToKQW5kIGNhbWUgYW5kIHByZWFjaGVkIHBlYWNlIHRvIHlvdSB3aGljaCB3ZXJlIGFmYXIgb2ZmLCBhbmQgdG8gdGhlbSB0aGF0IHdlcmUgbmlnaC4KRm9yIHRocm91Z2ggaGltIHdlIGJvdGggaGF2ZSBhY2Nlc3MgYnkgb25lIFNwaXJpdCB1bnRvIHRoZSBGYXRoZXIuCk5vdyB0aGVyZWZvcmUgeWUgYXJlIG5vIG1vcmUgc3RyYW5nZXJzIGFuZCBmb3JlaWduZXJzLCBidXQgZmVsbG93Y2l0aXplbnMgd2l0aCB0aGUgc2FpbnRzLCBhbmQgb2YgdGhlIGhvdXNlaG9sZCBvZiBHb2Q7CkFuZCBhcmUgYnVpbHQgdXBvbiB0aGUgZm91bmRhdGlvbiBvZiB0aGUgYXBvc3RsZXMgYW5kIHByb3BoZXRzLCBKZXN1cyBDaHJpc3QgaGltc2VsZiBiZWluZyB0aGUgY2hpZWYgY29ybmVyIHN0b25lOwpJbiB3aG9tIGFsbCB0aGUgYnVpbGRpbmcgZml0bHkgZnJhbWVkIHRvZ2V0aGVyIGdyb3dldGggdW50byBhbiBob2x5IHRlbXBsZSBpbiB0aGUgTG9yZDoKSW4gd2hvbSB5ZSBhbHNvIGFyZSBidWlsZGVkIHRvZ2V0aGVyIGZvciBhbiBoYWJpdGF0aW9uIG9mIEdvZCB0aHJvdWdoIHRoZSBTcGlyaXQuCkZvciB0aGlzIGNhdXNlIEkgUGF1bCwgdGhlIHByaXNvbmVyIG9mIEplc3VzIENocmlzdCBmb3IgeW91IEdlbnRpbGVzLApJZiB5ZSBoYXZlIGhlYXJkIG9mIHRoZSBkaXNwZW5zYXRpb24gb2YgdGhlIGdyYWNlIG9mIEdvZCB3aGljaCBpcyBnaXZlbiBtZSB0byB5b3Utd2FyZDoKSG93IHRoYXQgYnkgcmV2ZWxhdGlvbiBoZSBtYWRlIGtub3duIHVudG8gbWUgdGhlIG15c3Rlcnk7IChhcyBJIHdyb3RlIGFmb3JlIGluIGZldyB3b3JkcywKV2hlcmVieSwgd2hlbiB5ZSByZWFkLCB5ZSBtYXkgdW5kZXJzdGFuZCBteSBrbm93bGVkZ2UgaW4gdGhlIG15c3Rlcnkgb2YgQ2hyaXN0KQpXaGljaCBpbiBvdGhlciBhZ2VzIHdhcyBub3QgbWFkZSBrbm93biB1bnRvIHRoZSBzb25zIG9mIG1lbiwgYXMgaXQgaXMgbm93IHJldmVhbGVkIHVudG8gaGlzIGhvbHkgYXBvc3RsZXMgYW5kIHByb3BoZXRzIGJ5IHRoZSBTcGlyaXQ7ClRoYXQgdGhlIEdlbnRpbGVzIHNob3VsZCBiZSBmZWxsb3doZWlycywgYW5kIG9mIHRoZSBzYW1lIGJvZHksIGFuZCBwYXJ0YWtlcnMgb2YgaGlzIHByb21pc2UgaW4gQ2hyaXN0IGJ5IHRoZSBnb3NwZWw6CldoZXJlb2YgSSB3YXMgbWFkZSBhIG1pbmlzdGVyLCBhY2NvcmRpbmcgdG8gdGhlIGdpZnQgb2YgdGhlIGdyYWNlIG9mIEdvZCBnaXZlbiB1bnRvIG1lIGJ5IHRoZSBlZmZlY3R1YWwgd29ya2luZyBvZiBoaXMgcG93ZXIuClVudG8gbWUsIHdobyBhbSBsZXNzIHRoYW4gdGhlIGxlYXN0IG9mIGFsbCBzYWludHMsIGlzIHRoaXMgZ3JhY2UgZ2l2ZW4sIHRoYXQgSSBzaG91bGQgcHJlYWNoIGFtb25nIHRoZSBHZW50aWxlcyB0aGUgdW5zZWFyY2hhYmxlIHJpY2hlcyBvZiBDaHJpc3Q7CkFuZCB0byBtYWtlIGFsbCBtZW4gc2VlIHdoYXQgaXMgdGhlIGZlbGxvd3NoaXAgb2YgdGhlIG15c3RlcnksIHdoaWNoIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgd29ybGQgaGF0aCBiZWVuIGhpZCBpbiBHb2QsIHdobyBjcmVhdGVkIGFsbCB0aGluZ3MgYnkgSmVzdXMgQ2hyaXN0OgpUbyB0aGUgaW50ZW50IHRoYXQgbm93IHVudG8gdGhlIHByaW5jaXBhbGl0aWVzIGFuZCBwb3dlcnMgaW4gaGVhdmVubHkgcGxhY2VzIG1pZ2h0IGJlIGtub3duIGJ5IHRoZSBjaHVyY2ggdGhlIG1hbmlmb2xkIHdpc2RvbSBvZiBHb2QsCkFjY29yZGluZyB0byB0aGUgZXRlcm5hbCBwdXJwb3NlIHdoaWNoIGhlIHB1cnBvc2VkIGluIENocmlzdCBKZXN1cyBvdXIgTG9yZDoKSW4gd2hvbSB3ZSBoYXZlIGJvbGRuZXNzIGFuZCBhY2Nlc3Mgd2l0aCBjb25maWRlbmNlIGJ5IHRoZSBmYWl0aCBvZiBoaW0uCldoZXJlZm9yZSBJIGRlc2lyZSB0aGF0IHllIGZhaW50IG5vdCBhdCBteSB0cmlidWxhdGlvbnMgZm9yIHlvdSwgd2hpY2ggaXMgeW91ciBnbG9yeS4KRm9yIHRoaXMgY2F1c2UgSSBib3cgbXkga25lZXMgdW50byB0aGUgRmF0aGVyIG9mIG91ciBMb3JkIEplc3VzIENocmlzdCwKT2Ygd2hvbSB0aGUgd2hvbGUgZmFtaWx5IGluIGhlYXZlbiBhbmQgZWFydGggaXMgbmFtZWQsClRoYXQgaGUgd291bGQgZ3JhbnQgeW91LCBhY2NvcmRpbmcgdG8gdGhlIHJpY2hlcyBvZiBoaXMgZ2xvcnksIHRvIGJlIHN0cmVuZ3RoZW5lZCB3aXRoIG1pZ2h0IGJ5IGhpcyBTcGlyaXQgaW4gdGhlIGlubmVyIG1hbjsKVGhhdCBDaHJpc3QgbWF5IGR3ZWxsIGluIHlvdXIgaGVhcnRzIGJ5IGZhaXRoOyB0aGF0IHllLCBiZWluZyByb290ZWQgYW5kIGdyb3VuZGVkIGluIGxvdmUsCk1heSBiZSBhYmxlIHRvIGNvbXByZWhlbmQgd2l0aCBhbGwgc2FpbnRzIHdoYXQgaXMgdGhlIGJyZWFkdGgsIGFuZCBsZW5ndGgsIGFuZCBkZXB0aCwgYW5kIGhlaWdodDsKQW5kIHRvIGtub3cgdGhlIGxvdmUgb2YgQ2hyaXN0LCB3aGljaCBwYXNzZXRoIGtub3dsZWRnZSwgdGhhdCB5ZSBtaWdodCBiZSBmaWxsZWQgd2l0aCBhbGwgdGhlIGZ1bG5lc3Mgb2YgR29kLgpOb3cgdW50byBoaW0gdGhhdCBpcyBhYmxlIHRvIGRvIGV4Y2VlZGluZyBhYnVuZGFudGx5IGFib3ZlIGFsbCB0aGF0IHdlIGFzayBvciB0aGluaywgYWNjb3JkaW5nIHRvIHRoZSBwb3dlciB0aGF0IHdvcmtldGggaW4gdXMsClVudG8gaGltIGJlIGdsb3J5IGluIHRoZSBjaHVyY2ggYnkgQ2hyaXN0IEplc3VzIHRocm91Z2hvdXQgYWxsIGFnZXMsIHdvcmxkIHdpdGhvdXQgZW5kLiBBbWVuLgpJIHRoZXJlZm9yZSwgdGhlIHByaXNvbmVyIG9mIHRoZSBMb3JkLCBiZXNlZWNoIHlvdSB0aGF0IHllIHdhbGsgd29ydGh5IG9mIHRoZSB2b2NhdGlvbiB3aGVyZXdpdGggeWUgYXJlIGNhbGxlZCwKV2l0aCBhbGwgbG93bGluZXNzIGFuZCBtZWVrbmVzcywgd2l0aCBsb25nc3VmZmVyaW5nLCBmb3JiZWFyaW5nIG9uZSBhbm90aGVyIGluIGxvdmU7CkVuZGVhdm91cmluZyB0byBrZWVwIHRoZSB1bml0eSBvZiB0aGUgU3Bpcml0IGluIHRoZSBib25kIG9mIHBlYWNlLgpUaGVyZSBpcyBvbmUgYm9keSwgYW5kIG9uZSBTcGlyaXQsIGV2ZW4gYXMgeWUgYXJlIGNhbGxlZCBpbiBvbmUgaG9wZSBvZiB5b3VyIGNhbGxpbmc7Ck9uZSBMb3JkLCBvbmUgZmFpdGgsIG9uZSBiYXB0aXNtLApPbmUgR29kIGFuZCBGYXRoZXIgb2YgYWxsLCB3aG8gaXMgYWJvdmUgYWxsLCBhbmQgdGhyb3VnaCBhbGwsIGFuZCBpbiB5b3UgYWxsLgpCdXQgdW50byBldmVyeSBvbmUgb2YgdXMgaXMgZ2l2ZW4gZ3JhY2UgYWNjb3JkaW5nIHRvIHRoZSBtZWFzdXJlIG9mIHRoZSBnaWZ0IG9mIENocmlzdC4KV2hlcmVmb3JlIGhlIHNhaXRoLCBXaGVuIGhlIGFzY2VuZGVkIHVwIG9uIGhpZ2gsIGhlIGxlZCBjYXB0aXZpdHkgY2FwdGl2ZSwgYW5kIGdhdmUgZ2lmdHMgdW50byBtZW4uCihOb3cgdGhhdCBoZSBhc2NlbmRlZCwgd2hhdCBpcyBpdCBidXQgdGhhdCBoZSBhbHNvIGRlc2NlbmRlZCBmaXJzdCBpbnRvIHRoZSBsb3dlciBwYXJ0cyBvZiB0aGUgZWFydGg/CkhlIHRoYXQgZGVzY2VuZGVkIGlzIHRoZSBzYW1lIGFsc28gdGhhdCBhc2NlbmRlZCB1cCBmYXIgYWJvdmUgYWxsIGhlYXZlbnMsIHRoYXQgaGUgbWlnaHQgZmlsbCBhbGwgdGhpbmdzLikKQW5kIGhlIGdhdmUgc29tZSwgYXBvc3RsZXM7IGFuZCBzb21lLCBwcm9waGV0czsgYW5kIHNvbWUsIGV2YW5nZWxpc3RzOyBhbmQgc29tZSwgcGFzdG9ycyBhbmQgdGVhY2hlcnM7CkZvciB0aGUgcGVyZmVjdGluZyBvZiB0aGUgc2FpbnRzLCBmb3IgdGhlIHdvcmsgb2YgdGhlIG1pbmlzdHJ5LCBmb3IgdGhlIGVkaWZ5aW5nIG9mIHRoZSBib2R5IG9mIENocmlzdDoKVGlsbCB3ZSBhbGwgY29tZSBpbiB0aGUgdW5pdHkgb2YgdGhlIGZhaXRoLCBhbmQgb2YgdGhlIGtub3dsZWRnZSBvZiB0aGUgU29uIG9mIEdvZCwgdW50byBhIHBlcmZlY3QgbWFuLCB1bnRvIHRoZSBtZWFzdXJlIG9mIHRoZSBzdGF0dXJlIG9mIHRoZSBmdWxuZXNzIG9mIENocmlzdDoKVGhhdCB3ZSBoZW5jZWZvcnRoIGJlIG5vIG1vcmUgY2hpbGRyZW4sIHRvc3NlZCB0byBhbmQgZnJvLCBhbmQgY2FycmllZCBhYm91dCB3aXRoIGV2ZXJ5IHdpbmQgb2YgZG9jdHJpbmUsIGJ5IHRoZSBzbGVpZ2h0IG9mIG1lbiwgYW5kIGN1bm5pbmcgY3JhZnRpbmVzcywgd2hlcmVieSB0aGV5IGxpZSBpbiB3YWl0IHRvIGRlY2VpdmU7CkJ1dCBzcGVha2luZyB0aGUgdHJ1dGggaW4gbG92ZSwgbWF5IGdyb3cgdXAgaW50byBoaW0gaW4gYWxsIHRoaW5ncywgd2hpY2ggaXMgdGhlIGhlYWQsIGV2ZW4gQ2hyaXN0OgpGcm9tIHdob20gdGhlIHdob2xlIGJvZHkgZml0bHkgam9pbmVkIHRvZ2V0aGVyIGFuZCBjb21wYWN0ZWQgYnkgdGhhdCB3aGljaCBldmVyeSBqb2ludCBzdXBwbGlldGgsIGFjY29yZGluZyB0byB0aGUgZWZmZWN0dWFsIHdvcmtpbmcgaW4gdGhlIG1lYXN1cmUgb2YgZXZlcnkgcGFydCwgbWFrZXRoIGluY3JlYXNlIG9mIHRoZSBib2R5IHVudG8gdGhlIGVkaWZ5aW5nIG9mIGl0c2VsZiBpbiBsb3ZlLgpUaGlzIEkgc2F5IHRoZXJlZm9yZSwgYW5kIHRlc3RpZnkgaW4gdGhlIExvcmQsIHRoYXQgeWUgaGVuY2Vmb3J0aCB3YWxrIG5vdCBhcyBvdGhlciBHZW50aWxlcyB3YWxrLCBpbiB0aGUgdmFuaXR5IG9mIHRoZWlyIG1pbmQsCkhhdmluZyB0aGUgdW5kZXJzdGFuZGluZyBkYXJrZW5lZCwgYmVpbmcgYWxpZW5hdGVkIGZyb20gdGhlIGxpZmUgb2YgR29kIHRocm91Z2ggdGhlIGlnbm9yYW5jZSB0aGF0IGlzIGluIHRoZW0sIGJlY2F1c2Ugb2YgdGhlIGJsaW5kbmVzcyBvZiB0aGVpciBoZWFydDoKV2hvIGJlaW5nIHBhc3QgZmVlbGluZyBoYXZlIGdpdmVuIHRoZW1zZWx2ZXMgb3ZlciB1bnRvIGxhc2NpdmlvdXNuZXNzLCB0byB3b3JrIGFsbCB1bmNsZWFubmVzcyB3aXRoIGdyZWVkaW5lc3MuCkJ1dCB5ZSBoYXZlIG5vdCBzbyBsZWFybmVkIENocmlzdDsKSWYgc28gYmUgdGhhdCB5ZSBoYXZlIGhlYXJkIGhpbSwgYW5kIGhhdmUgYmVlbiB0YXVnaHQgYnkgaGltLCBhcyB0aGUgdHJ1dGggaXMgaW4gSmVzdXM6ClRoYXQgeWUgcHV0IG9mZiBjb25jZXJuaW5nIHRoZSBmb3JtZXIgY29udmVyc2F0aW9uIHRoZSBvbGQgbWFuLCB3aGljaCBpcyBjb3JydXB0IGFjY29yZGluZyB0byB0aGUgZGVjZWl0ZnVsIGx1c3RzOwpBbmQgYmUgcmVuZXdlZCBpbiB0aGUgc3Bpcml0IG9mIHlvdXIgbWluZDsKQW5kIHRoYXQgeWUgcHV0IG9uIHRoZSBuZXcgbWFuLCB3aGljaCBhZnRlciBHb2QgaXMgY3JlYXRlZCBpbiByaWdodGVvdXNuZXNzIGFuZCB0cnVlIGhvbGluZXNzLgpXaGVyZWZvcmUgcHV0dGluZyBhd2F5IGx5aW5nLCBzcGVhayBldmVyeSBtYW4gdHJ1dGggd2l0aCBoaXMgbmVpZ2hib3VyOiBmb3Igd2UgYXJlIG1lbWJlcnMgb25lIG9mIGFub3RoZXIuCkJlIHllIGFuZ3J5LCBhbmQgc2luIG5vdDogbGV0IG5vdCB0aGUgc3VuIGdvIGRvd24gdXBvbiB5b3VyIHdyYXRoOgpOZWl0aGVyIGdpdmUgcGxhY2UgdG8gdGhlIGRldmlsLgpMZXQgaGltIHRoYXQgc3RvbGUgc3RlYWwgbm8gbW9yZTogYnV0IHJhdGhlciBsZXQgaGltIGxhYm91ciwgd29ya2luZyB3aXRoIGhpcyBoYW5kcyB0aGUgdGhpbmcgd2hpY2ggaXMgZ29vZCwgdGhhdCBoZSBtYXkgaGF2ZSB0byBnaXZlIHRvIGhpbSB0aGF0IG5lZWRldGguCkxldCBubyBjb3JydXB0IGNvbW11bmljYXRpb24gcHJvY2VlZCBvdXQgb2YgeW91ciBtb3V0aCwgYnV0IHRoYXQgd2hpY2ggaXMgZ29vZCB0byB0aGUgdXNlIG9mIGVkaWZ5aW5nLCB0aGF0IGl0IG1heSBtaW5pc3RlciBncmFjZSB1bnRvIHRoZSBoZWFyZXJzLgpBbmQgZ3JpZXZlIG5vdCB0aGUgaG9seSBTcGlyaXQgb2YgR29kLCB3aGVyZWJ5IHllIGFyZSBzZWFsZWQgdW50byB0aGUgZGF5IG9mIHJlZGVtcHRpb24uCkxldCBhbGwgYml0dGVybmVzcywgYW5kIHdyYXRoLCBhbmQgYW5nZXIsIGFuZCBjbGFtb3VyLCBhbmQgZXZpbCBzcGVha2luZywgYmUgcHV0IGF3YXkgZnJvbSB5b3UsIHdpdGggYWxsIG1hbGljZToKQW5kIGJlIHllIGtpbmQgb25lIHRvIGFub3RoZXIsIHRlbmRlcmhlYXJ0ZWQsIGZvcmdpdmluZyBvbmUgYW5vdGhlciwgZXZlbiBhcyBHb2QgZm9yIENocmlzdCdzIHNha2UgaGF0aCBmb3JnaXZlbiB5b3UuCkJlIHllIHRoZXJlZm9yZSBmb2xsb3dlcnMgb2YgR29kLCBhcyBkZWFyIGNoaWxkcmVuOwpBbmQgd2FsayBpbiBsb3ZlLCBhcyBDaHJpc3QgYWxzbyBoYXRoIGxvdmVkIHVzLCBhbmQgaGF0aCBnaXZlbiBoaW1zZWxmIGZvciB1cyBhbiBvZmZlcmluZyBhbmQgYSBzYWNyaWZpY2UgdG8gR29kIGZvciBhIHN3ZWV0c21lbGxpbmcgc2F2b3VyLgpCdXQgZm9ybmljYXRpb24sIGFuZCBhbGwgdW5jbGVhbm5lc3MsIG9yIGNvdmV0b3VzbmVzcywgbGV0IGl0IG5vdCBiZSBvbmNlIG5hbWVkIGFtb25nIHlvdSwgYXMgYmVjb21ldGggc2FpbnRzOwpOZWl0aGVyIGZpbHRoaW5lc3MsIG5vciBmb29saXNoIHRhbGtpbmcsIG5vciBqZXN0aW5nLCB3aGljaCBhcmUgbm90IGNvbnZlbmllbnQ6IGJ1dCByYXRoZXIgZ2l2aW5nIG9mIHRoYW5rcy4KRm9yIHRoaXMgeWUga25vdywgdGhhdCBubyB3aG9yZW1vbmdlciwgbm9yIHVuY2xlYW4gcGVyc29uLCBub3IgY292ZXRvdXMgbWFuLCB3aG8gaXMgYW4gaWRvbGF0ZXIsIGhhdGggYW55IGluaGVyaXRhbmNlIGluIHRoZSBraW5nZG9tIG9mIENocmlzdCBhbmQgb2YgR29kLgpMZXQgbm8gbWFuIGRlY2VpdmUgeW91IHdpdGggdmFpbiB3b3JkczogZm9yIGJlY2F1c2Ugb2YgdGhlc2UgdGhpbmdzIGNvbWV0aCB0aGUgd3JhdGggb2YgR29kIHVwb24gdGhlIGNoaWxkcmVuIG9mIGRpc29iZWRpZW5jZS4KQmUgbm90IHllIHRoZXJlZm9yZSBwYXJ0YWtlcnMgd2l0aCB0aGVtLgpGb3IgeWUgd2VyZSBzb21ldGltZXMgZGFya25lc3MsIGJ1dCBub3cgYXJlIHllIGxpZ2h0IGluIHRoZSBMb3JkOiB3YWxrIGFzIGNoaWxkcmVuIG9mIGxpZ2h0OgooRm9yIHRoZSBmcnVpdCBvZiB0aGUgU3Bpcml0IGlzIGluIGFsbCBnb29kbmVzcyBhbmQgcmlnaHRlb3VzbmVzcyBhbmQgdHJ1dGg7KQpQcm92aW5nIHdoYXQgaXMgYWNjZXB0YWJsZSB1bnRvIHRoZSBMb3JkLgpBbmQgaGF2ZSBubyBmZWxsb3dzaGlwIHdpdGggdGhlIHVuZnJ1aXRmdWwgd29ya3Mgb2YgZGFya25lc3MsIGJ1dCByYXRoZXIgcmVwcm92ZSB0aGVtLgpGb3IgaXQgaXMgYSBzaGFtZSBldmVuIHRvIHNwZWFrIG9mIHRob3NlIHRoaW5ncyB3aGljaCBhcmUgZG9uZSBvZiB0aGVtIGluIHNlY3JldC4KQnV0IGFsbCB0aGluZ3MgdGhhdCBhcmUgcmVwcm92ZWQgYXJlIG1hZGUgbWFuaWZlc3QgYnkgdGhlIGxpZ2h0OiBmb3Igd2hhdHNvZXZlciBkb3RoIG1ha2UgbWFuaWZlc3QgaXMgbGlnaHQuCldoZXJlZm9yZSBoZSBzYWl0aCwgQXdha2UgdGhvdSB0aGF0IHNsZWVwZXN0LCBhbmQgYXJpc2UgZnJvbSB0aGUgZGVhZCwgYW5kIENocmlzdCBzaGFsbCBnaXZlIHRoZWUgbGlnaHQuClNlZSB0aGVuIHRoYXQgeWUgd2FsayBjaXJjdW1zcGVjdGx5LCBub3QgYXMgZm9vbHMsIGJ1dCBhcyB3aXNlLApSZWRlZW1pbmcgdGhlIHRpbWUsIGJlY2F1c2UgdGhlIGRheXMgYXJlIGV2aWwuCldoZXJlZm9yZSBiZSB5ZSBub3QgdW53aXNlLCBidXQgdW5kZXJzdGFuZGluZyB3aGF0IHRoZSB3aWxsIG9mIHRoZSBMb3JkIGlzLgpBbmQgYmUgbm90IGRydW5rIHdpdGggd2luZSwgd2hlcmVpbiBpcyBleGNlc3M7IGJ1dCBiZSBmaWxsZWQgd2l0aCB0aGUgU3Bpcml0OwpTcGVha2luZyB0byB5b3Vyc2VsdmVzIGluIHBzYWxtcyBhbmQgaHltbnMgYW5kIHNwaXJpdHVhbCBzb25ncywgc2luZ2luZyBhbmQgbWFraW5nIG1lbG9keSBpbiB5b3VyIGhlYXJ0IHRvIHRoZSBMb3JkOwpHaXZpbmcgdGhhbmtzIGFsd2F5cyBmb3IgYWxsIHRoaW5ncyB1bnRvIEdvZCBhbmQgdGhlIEZhdGhlciBpbiB0aGUgbmFtZSBvZiBvdXIgTG9yZCBKZXN1cyBDaHJpc3Q7ClN1Ym1pdHRpbmcgeW91cnNlbHZlcyBvbmUgdG8gYW5vdGhlciBpbiB0aGUgZmVhciBvZiBHb2QuCldpdmVzLCBzdWJtaXQgeW91cnNlbHZlcyB1bnRvIHlvdXIgb3duIGh1c2JhbmRzLCBhcyB1bnRvIHRoZSBMb3JkLgpGb3IgdGhlIGh1c2JhbmQgaXMgdGhlIGhlYWQgb2YgdGhlIHdpZmUsIGV2ZW4gYXMgQ2hyaXN0IGlzIHRoZSBoZWFkIG9mIHRoZSBjaHVyY2g6IGFuZCBoZSBpcyB0aGUgc2F2aW91ciBvZiB0aGUgYm9keS4KVGhlcmVmb3JlIGFzIHRoZSBjaHVyY2ggaXMgc3ViamVjdCB1bnRvIENocmlzdCwgc28gbGV0IHRoZSB3aXZlcyBiZSB0byB0aGVpciBvd24gaHVzYmFuZHMgaW4gZXZlcnkgdGhpbmcuCkh1c2JhbmRzLCBsb3ZlIHlvdXIgd2l2ZXMsIGV2ZW4gYXMgQ2hyaXN0IGFsc28gbG92ZWQgdGhlIGNodXJjaCwgYW5kIGdhdmUgaGltc2VsZiBmb3IgaXQ7ClRoYXQgaGUgbWlnaHQgc2FuY3RpZnkgYW5kIGNsZWFuc2UgaXQgd2l0aCB0aGUgd2FzaGluZyBvZiB3YXRlciBieSB0aGUgd29yZCwKVGhhdCBoZSBtaWdodCBwcmVzZW50IGl0IHRvIGhpbXNlbGYgYSBnbG9yaW91cyBjaHVyY2gsIG5vdCBoYXZpbmcgc3BvdCwgb3Igd3JpbmtsZSwgb3IgYW55IHN1Y2ggdGhpbmc7IGJ1dCB0aGF0IGl0IHNob3VsZCBiZSBob2x5IGFuZCB3aXRob3V0IGJsZW1pc2guClNvIG91Z2h0IG1lbiB0byBsb3ZlIHRoZWlyIHdpdmVzIGFzIHRoZWlyIG93biBib2RpZXMuIEhlIHRoYXQgbG92ZXRoIGhpcyB3aWZlIGxvdmV0aCBoaW1zZWxmLgpGb3Igbm8gbWFuIGV2ZXIgeWV0IGhhdGVkIGhpcyBvd24gZmxlc2g7IGJ1dCBub3VyaXNoZXRoIGFuZCBjaGVyaXNoZXRoIGl0LCBldmVuIGFzIHRoZSBMb3JkIHRoZSBjaHVyY2g6CkZvciB3ZSBhcmUgbWVtYmVycyBvZiBoaXMgYm9keSwgb2YgaGlzIGZsZXNoLCBhbmQgb2YgaGlzIGJvbmVzLgpGb3IgdGhpcyBjYXVzZSBzaGFsbCBhIG1hbiBsZWF2ZSBoaXMgZmF0aGVyIGFuZCBtb3RoZXIsIGFuZCBzaGFsbCBiZSBqb2luZWQgdW50byBoaXMgd2lmZSwgYW5kIHRoZXkgdHdvIHNoYWxsIGJlIG9uZSBmbGVzaC4KVGhpcyBpcyBhIGdyZWF0IG15c3Rlcnk6IGJ1dCBJIHNwZWFrIGNvbmNlcm5pbmcgQ2hyaXN0IGFuZCB0aGUgY2h1cmNoLgpOZXZlcnRoZWxlc3MgbGV0IGV2ZXJ5IG9uZSBvZiB5b3UgaW4gcGFydGljdWxhciBzbyBsb3ZlIGhpcyB3aWZlIGV2ZW4gYXMgaGltc2VsZjsgYW5kIHRoZSB3aWZlIHNlZSB0aGF0IHNoZSByZXZlcmVuY2UgaGVyIGh1c2JhbmQuCkNoaWxkcmVuLCBvYmV5IHlvdXIgcGFyZW50cyBpbiB0aGUgTG9yZDogZm9yIHRoaXMgaXMgcmlnaHQuCkhvbm91ciB0aHkgZmF0aGVyIGFuZCBtb3RoZXI7IHdoaWNoIGlzIHRoZSBmaXJzdCBjb21tYW5kbWVudCB3aXRoIHByb21pc2U7ClRoYXQgaXQgbWF5IGJlIHdlbGwgd2l0aCB0aGVlLCBhbmQgdGhvdSBtYXllc3QgbGl2ZSBsb25nIG9uIHRoZSBlYXJ0aC4KQW5kLCB5ZSBmYXRoZXJzLCBwcm92b2tlIG5vdCB5b3VyIGNoaWxkcmVuIHRvIHdyYXRoOiBidXQgYnJpbmcgdGhlbSB1cCBpbiB0aGUgbnVydHVyZSBhbmQgYWRtb25pdGlvbiBvZiB0aGUgTG9yZC4KU2VydmFudHMsIGJlIG9iZWRpZW50IHRvIHRoZW0gdGhhdCBhcmUgeW91ciBtYXN0ZXJzIGFjY29yZGluZyB0byB0aGUgZmxlc2gsIHdpdGggZmVhciBhbmQgdHJlbWJsaW5nLCBpbiBzaW5nbGVuZXNzIG9mIHlvdXIgaGVhcnQsIGFzIHVudG8gQ2hyaXN0OwpOb3Qgd2l0aCBleWVzZXJ2aWNlLCBhcyBtZW5wbGVhc2VyczsgYnV0IGFzIHRoZSBzZXJ2YW50cyBvZiBDaHJpc3QsIGRvaW5nIHRoZSB3aWxsIG9mIEdvZCBmcm9tIHRoZSBoZWFydDsKV2l0aCBnb29kIHdpbGwgZG9pbmcgc2VydmljZSwgYXMgdG8gdGhlIExvcmQsIGFuZCBub3QgdG8gbWVuOgpLbm93aW5nIHRoYXQgd2hhdHNvZXZlciBnb29kIHRoaW5nIGFueSBtYW4gZG9ldGgsIHRoZSBzYW1lIHNoYWxsIGhlIHJlY2VpdmUgb2YgdGhlIExvcmQsIHdoZXRoZXIgaGUgYmUgYm9uZCBvciBmcmVlLgpBbmQsIHllIG1hc3RlcnMsIGRvIHRoZSBzYW1lIHRoaW5ncyB1bnRvIHRoZW0sIGZvcmJlYXJpbmcgdGhyZWF0ZW5pbmc6IGtub3dpbmcgdGhhdCB5b3VyIE1hc3RlciBhbHNvIGlzIGluIGhlYXZlbjsgbmVpdGhlciBpcyB0aGVyZSByZXNwZWN0IG9mIHBlcnNvbnMgd2l0aCBoaW0uCkZpbmFsbHksIG15IGJyZXRocmVuLCBiZSBzdHJvbmcgaW4gdGhlIExvcmQsIGFuZCBpbiB0aGUgcG93ZXIgb2YgaGlzIG1pZ2h0LgpQdXQgb24gdGhlIHdob2xlIGFybW91ciBvZiBHb2QsIHRoYXQgeWUgbWF5IGJlIGFibGUgdG8gc3RhbmQgYWdhaW5zdCB0aGUgd2lsZXMgb2YgdGhlIGRldmlsLgpGb3Igd2Ugd3Jlc3RsZSBub3QgYWdhaW5zdCBmbGVzaCBhbmQgYmxvb2QsIGJ1dCBhZ2FpbnN0IHByaW5jaXBhbGl0aWVzLCBhZ2FpbnN0IHBvd2VycywgYWdhaW5zdCB0aGUgcnVsZXJzIG9mIHRoZSBkYXJrbmVzcyBvZiB0aGlzIHdvcmxkLCBhZ2FpbnN0IHNwaXJpdHVhbCB3aWNrZWRuZXNzIGluIGhpZ2ggcGxhY2VzLgpXaGVyZWZvcmUgdGFrZSB1bnRvIHlvdSB0aGUgd2hvbGUgYXJtb3VyIG9mIEdvZCwgdGhhdCB5ZSBtYXkgYmUgYWJsZSB0byB3aXRoc3RhbmQgaW4gdGhlIGV2aWwgZGF5LCBhbmQgaGF2aW5nIGRvbmUgYWxsLCB0byBzdGFuZC4KU3RhbmQgdGhlcmVmb3JlLCBoYXZpbmcgeW91ciBsb2lucyBnaXJ0IGFib3V0IHdpdGggdHJ1dGgsIGFuZCBoYXZpbmcgb24gdGhlIGJyZWFzdHBsYXRlIG9mIHJpZ2h0ZW91c25lc3M7CkFuZCB5b3VyIGZlZXQgc2hvZCB3aXRoIHRoZSBwcmVwYXJhdGlvbiBvZiB0aGUgZ29zcGVsIG9mIHBlYWNlOwpBYm92ZSBhbGwsIHRha2luZyB0aGUgc2hpZWxkIG9mIGZhaXRoLCB3aGVyZXdpdGggeWUgc2hhbGwgYmUgYWJsZSB0byBxdWVuY2ggYWxsIHRoZSBmaWVyeSBkYXJ0cyBvZiB0aGUgd2lja2VkLgpBbmQgdGFrZSB0aGUgaGVsbWV0IG9mIHNhbHZhdGlvbiwgYW5kIHRoZSBzd29yZCBvZiB0aGUgU3Bpcml0LCB3aGljaCBpcyB0aGUgd29yZCBvZiBHb2Q6ClByYXlpbmcgYWx3YXlzIHdpdGggYWxsIHByYXllciBhbmQgc3VwcGxpY2F0aW9uIGluIHRoZSBTcGlyaXQsIGFuZCB3YXRjaGluZyB0aGVyZXVudG8gd2l0aCBhbGwgcGVyc2V2ZXJhbmNlIGFuZCBzdXBwbGljYXRpb24gZm9yIGFsbCBzYWludHM7CkFuZCBmb3IgbWUsIHRoYXQgdXR0ZXJhbmNlIG1heSBiZSBnaXZlbiB1bnRvIG1lLCB0aGF0IEkgbWF5IG9wZW4gbXkgbW91dGggYm9sZGx5LCB0byBtYWtlIGtub3duIHRoZSBteXN0ZXJ5IG9mIHRoZSBnb3NwZWwsCkZvciB3aGljaCBJIGFtIGFuIGFtYmFzc2Fkb3IgaW4gYm9uZHM6IHRoYXQgdGhlcmVpbiBJIG1heSBzcGVhayBib2xkbHksIGFzIEkgb3VnaHQgdG8gc3BlYWsuCkJ1dCB0aGF0IHllIGFsc28gbWF5IGtub3cgbXkgYWZmYWlycywgYW5kIGhvdyBJIGRvLCBUeWNoaWN1cywgYSBiZWxvdmVkIGJyb3RoZXIgYW5kIGZhaXRoZnVsIG1pbmlzdGVyIGluIHRoZSBMb3JkLCBzaGFsbCBtYWtlIGtub3duIHRvIHlvdSBhbGwgdGhpbmdzOgpXaG9tIEkgaGF2ZSBzZW50IHVudG8geW91IGZvciB0aGUgc2FtZSBwdXJwb3NlLCB0aGF0IHllIG1pZ2h0IGtub3cgb3VyIGFmZmFpcnMsIGFuZCB0aGF0IGhlIG1pZ2h0IGNvbWZvcnQgeW91ciBoZWFydHMuClBlYWNlIGJlIHRvIHRoZSBicmV0aHJlbiwgYW5kIGxvdmUgd2l0aCBmYWl0aCwgZnJvbSBHb2QgdGhlIEZhdGhlciBhbmQgdGhlIExvcmQgSmVzdXMgQ2hyaXN0LgpHcmFjZSBiZSB3aXRoIGFsbCB0aGVtIHRoYXQgbG92ZSBvdXIgTG9yZCBKZXN1cyBDaHJpc3QgaW4gc2luY2VyaXR5LiBBbWVuLgpQYXVsIGFuZCBUaW1vdGhldXMsIHRoZSBzZXJ2YW50cyBvZiBKZXN1cyBDaHJpc3QsIHRvIGFsbCB0aGUgc2FpbnRzIGluIENocmlzdCBKZXN1cyB3aGljaCBhcmUgYXQgUGhpbGlwcGksIHdpdGggdGhlIGJpc2hvcHMgYW5kIGRlYWNvbnM6CkdyYWNlIGJlIHVudG8geW91LCBhbmQgcGVhY2UsIGZyb20gR29kIG91ciBGYXRoZXIsIGFuZCBmcm9tIHRoZSBMb3JkIEplc3VzIENocmlzdC4KSSB0aGFuayBteSBHb2QgdXBvbiBldmVyeSByZW1lbWJyYW5jZSBvZiB5b3UsCkFsd2F5cyBpbiBldmVyeSBwcmF5ZXIgb2YgbWluZSBmb3IgeW91IGFsbCBtYWtpbmcgcmVxdWVzdCB3aXRoIGpveSwKRm9yIHlvdXIgZmVsbG93c2hpcCBpbiB0aGUgZ29zcGVsIGZyb20gdGhlIGZpcnN0IGRheSB1bnRpbCBub3c7CkJlaW5nIGNvbmZpZGVudCBvZiB0aGlzIHZlcnkgdGhpbmcsIHRoYXQgaGUgd2hpY2ggaGF0aCBiZWd1biBhIGdvb2Qgd29yayBpbiB5b3Ugd2lsbCBwZXJmb3JtIGl0IHVudGlsIHRoZSBkYXkgb2YgSmVzdXMgQ2hyaXN0OgpFdmVuIGFzIGl0IGlzIG1lZXQgZm9yIG1lIHRvIHRoaW5rIHRoaXMgb2YgeW91IGFsbCwgYmVjYXVzZSBJIGhhdmUgeW91IGluIG15IGhlYXJ0OyBpbmFzbXVjaCBhcyBib3RoIGluIG15IGJvbmRzLCBhbmQgaW4gdGhlIGRlZmVuY2UgYW5kIGNvbmZpcm1hdGlvbiBvZiB0aGUgZ29zcGVsLCB5ZSBhbGwgYXJlIHBhcnRha2VycyBvZiBteSBncmFjZS4KRm9yIEdvZCBpcyBteSByZWNvcmQsIGhvdyBncmVhdGx5IEkgbG9uZyBhZnRlciB5b3UgYWxsIGluIHRoZSBib3dlbHMgb2YgSmVzdXMgQ2hyaXN0LgpBbmQgdGhpcyBJIHByYXksIHRoYXQgeW91ciBsb3ZlIG1heSBhYm91bmQgeWV0IG1vcmUgYW5kIG1vcmUgaW4ga25vd2xlZGdlIGFuZCBpbiBhbGwganVkZ21lbnQ7ClRoYXQgeWUgbWF5IGFwcHJvdmUgdGhpbmdzIHRoYXQgYXJlIGV4Y2VsbGVudDsgdGhhdCB5ZSBtYXkgYmUgc2luY2VyZSBhbmQgd2l0aG91dCBvZmZlbmNlIHRpbGwgdGhlIGRheSBvZiBDaHJpc3QuCkJlaW5nIGZpbGxlZCB3aXRoIHRoZSBmcnVpdHMgb2YgcmlnaHRlb3VzbmVzcywgd2hpY2ggYXJlIGJ5IEplc3VzIENocmlzdCwgdW50byB0aGUgZ2xvcnkgYW5kIHByYWlzZSBvZiBHb2QuCkJ1dCBJIHdvdWxkIHllIHNob3VsZCB1bmRlcnN0YW5kLCBicmV0aHJlbiwgdGhhdCB0aGUgdGhpbmdzIHdoaWNoIGhhcHBlbmVkIHVudG8gbWUgaGF2ZSBmYWxsZW4gb3V0IHJhdGhlciB1bnRvIHRoZSBmdXJ0aGVyYW5jZSBvZiB0aGUgZ29zcGVsOwpTbyB0aGF0IG15IGJvbmRzIGluIENocmlzdCBhcmUgbWFuaWZlc3QgaW4gYWxsIHRoZSBwYWxhY2UsIGFuZCBpbiBhbGwgb3RoZXIgcGxhY2VzOwpBbmQgbWFueSBvZiB0aGUgYnJldGhyZW4gaW4gdGhlIExvcmQsIHdheGluZyBjb25maWRlbnQgYnkgbXkgYm9uZHMsIGFyZSBtdWNoIG1vcmUgYm9sZCB0byBzcGVhayB0aGUgd29yZCB3aXRob3V0IGZlYXIuClNvbWUgaW5kZWVkIHByZWFjaCBDaHJpc3QgZXZlbiBvZiBlbnZ5IGFuZCBzdHJpZmU7IGFuZCBzb21lIGFsc28gb2YgZ29vZCB3aWxsOgpUaGUgb25lIHByZWFjaCBDaHJpc3Qgb2YgY29udGVudGlvbiwgbm90IHNpbmNlcmVseSwgc3VwcG9zaW5nIHRvIGFkZCBhZmZsaWN0aW9uIHRvIG15IGJvbmRzOgpCdXQgdGhlIG90aGVyIG9mIGxvdmUsIGtub3dpbmcgdGhhdCBJIGFtIHNldCBmb3IgdGhlIGRlZmVuY2Ugb2YgdGhlIGdvc3BlbC4KV2hhdCB0aGVuPyBub3R3aXRoc3RhbmRpbmcsIGV2ZXJ5IHdheSwgd2hldGhlciBpbiBwcmV0ZW5jZSwgb3IgaW4gdHJ1dGgsIENocmlzdCBpcyBwcmVhY2hlZDsgYW5kIEkgdGhlcmVpbiBkbyByZWpvaWNlLCB5ZWEsIGFuZCB3aWxsIHJlam9pY2UuCkZvciBJIGtub3cgdGhhdCB0aGlzIHNoYWxsIHR1cm4gdG8gbXkgc2FsdmF0aW9uIHRocm91Z2ggeW91ciBwcmF5ZXIsIGFuZCB0aGUgc3VwcGx5IG9mIHRoZSBTcGlyaXQgb2YgSmVzdXMgQ2hyaXN0LApBY2NvcmRpbmcgdG8gbXkgZWFybmVzdCBleHBlY3RhdGlvbiBhbmQgbXkgaG9wZSwgdGhhdCBpbiBub3RoaW5nIEkgc2hhbGwgYmUgYXNoYW1lZCwgYnV0IHRoYXQgd2l0aCBhbGwgYm9sZG5lc3MsIGFzIGFsd2F5cywgc28gbm93IGFsc28gQ2hyaXN0IHNoYWxsIGJlIG1hZ25pZmllZCBpbiBteSBib2R5LCB3aGV0aGVyIGl0IGJlIGJ5IGxpZmUsIG9yIGJ5IGRlYXRoLgpGb3IgdG8gbWUgdG8gbGl2ZSBpcyBDaHJpc3QsIGFuZCB0byBkaWUgaXMgZ2Fpbi4KQnV0IGlmIEkgbGl2ZSBpbiB0aGUgZmxlc2gsIHRoaXMgaXMgdGhlIGZydWl0IG9mIG15IGxhYm91cjogeWV0IHdoYXQgSSBzaGFsbCBjaG9vc2UgSSB3b3Qgbm90LgpGb3IgSSBhbSBpbiBhIHN0cmFpdCBiZXR3aXh0IHR3bywgaGF2aW5nIGEgZGVzaXJlIHRvIGRlcGFydCwgYW5kIHRvIGJlIHdpdGggQ2hyaXN0OyB3aGljaCBpcyBmYXIgYmV0dGVyOgpOZXZlcnRoZWxlc3MgdG8gYWJpZGUgaW4gdGhlIGZsZXNoIGlzIG1vcmUgbmVlZGZ1bCBmb3IgeW91LgpBbmQgaGF2aW5nIHRoaXMgY29uZmlkZW5jZSwgSSBrbm93IHRoYXQgSSBzaGFsbCBhYmlkZSBhbmQgY29udGludWUgd2l0aCB5b3UgYWxsIGZvciB5b3VyIGZ1cnRoZXJhbmNlIGFuZCBqb3kgb2YgZmFpdGg7ClRoYXQgeW91ciByZWpvaWNpbmcgbWF5IGJlIG1vcmUgYWJ1bmRhbnQgaW4gSmVzdXMgQ2hyaXN0IGZvciBtZSBieSBteSBjb21pbmcgdG8geW91IGFnYWluLgpPbmx5IGxldCB5b3VyIGNvbnZlcnNhdGlvbiBiZSBhcyBpdCBiZWNvbWV0aCB0aGUgZ29zcGVsIG9mIENocmlzdDogdGhhdCB3aGV0aGVyIEkgY29tZSBhbmQgc2VlIHlvdSwgb3IgZWxzZSBiZSBhYnNlbnQsIEkgbWF5IGhlYXIgb2YgeW91ciBhZmZhaXJzLCB0aGF0IHllIHN0YW5kIGZhc3QgaW4gb25lIHNwaXJpdCwgd2l0aCBvbmUgbWluZCBzdHJpdmluZyB0b2dldGhlciBmb3IgdGhlIGZhaXRoIG9mIHRoZSBnb3NwZWw7CkFuZCBpbiBub3RoaW5nIHRlcnJpZmllZCBieSB5b3VyIGFkdmVyc2FyaWVzOiB3aGljaCBpcyB0byB0aGVtIGFuIGV2aWRlbnQgdG9rZW4gb2YgcGVyZGl0aW9uLCBidXQgdG8geW91IG9mIHNhbHZhdGlvbiwgYW5kIHRoYXQgb2YgR29kLgpGb3IgdW50byB5b3UgaXQgaXMgZ2l2ZW4gaW4gdGhlIGJlaGFsZiBvZiBDaHJpc3QsIG5vdCBvbmx5IHRvIGJlbGlldmUgb24gaGltLCBidXQgYWxzbyB0byBzdWZmZXIgZm9yIGhpcyBzYWtlOwpIYXZpbmcgdGhlIHNhbWUgY29uZmxpY3Qgd2hpY2ggeWUgc2F3IGluIG1lLCBhbmQgbm93IGhlYXIgdG8gYmUgaW4gbWUuCklmIHRoZXJlIGJlIHRoZXJlZm9yZSBhbnkgY29uc29sYXRpb24gaW4gQ2hyaXN0LCBpZiBhbnkgY29tZm9ydCBvZiBsb3ZlLCBpZiBhbnkgZmVsbG93c2hpcCBvZiB0aGUgU3Bpcml0LCBpZiBhbnkgYm93ZWxzIGFuZCBtZXJjaWVzLApGdWxmaWwgeWUgbXkgam95LCB0aGF0IHllIGJlIGxpa2VtaW5kZWQsIGhhdmluZyB0aGUgc2FtZSBsb3ZlLCBiZWluZyBvZiBvbmUgYWNjb3JkLCBvZiBvbmUgbWluZC4KTGV0IG5vdGhpbmcgYmUgZG9uZSB0aHJvdWdoIHN0cmlmZSBvciB2YWluZ2xvcnk7IGJ1dCBpbiBsb3dsaW5lc3Mgb2YgbWluZCBsZXQgZWFjaCBlc3RlZW0gb3RoZXIgYmV0dGVyIHRoYW4gdGhlbXNlbHZlcy4KTG9vayBub3QgZXZlcnkgbWFuIG9uIGhpcyBvd24gdGhpbmdzLCBidXQgZXZlcnkgbWFuIGFsc28gb24gdGhlIHRoaW5ncyBvZiBvdGhlcnMuCkxldCB0aGlzIG1pbmQgYmUgaW4geW91LCB3aGljaCB3YXMgYWxzbyBpbiBDaHJpc3QgSmVzdXM6CldobywgYmVpbmcgaW4gdGhlIGZvcm0gb2YgR29kLCB0aG91Z2h0IGl0IG5vdCByb2JiZXJ5IHRvIGJlIGVxdWFsIHdpdGggR29kOgpCdXQgbWFkZSBoaW1zZWxmIG9mIG5vIHJlcHV0YXRpb24sIGFuZCB0b29rIHVwb24gaGltIHRoZSBmb3JtIG9mIGEgc2VydmFudCwgYW5kIHdhcyBtYWRlIGluIHRoZSBsaWtlbmVzcyBvZiBtZW46CkFuZCBiZWluZyBmb3VuZCBpbiBmYXNoaW9uIGFzIGEgbWFuLCBoZSBodW1ibGVkIGhpbXNlbGYsIGFuZCBiZWNhbWUgb2JlZGllbnQgdW50byBkZWF0aCwgZXZlbiB0aGUgZGVhdGggb2YgdGhlIGNyb3NzLgpXaGVyZWZvcmUgR29kIGFsc28gaGF0aCBoaWdobHkgZXhhbHRlZCBoaW0sIGFuZCBnaXZlbiBoaW0gYSBuYW1lIHdoaWNoIGlzIGFib3ZlIGV2ZXJ5IG5hbWU6ClRoYXQgYXQgdGhlIG5hbWUgb2YgSmVzdXMgZXZlcnkga25lZSBzaG91bGQgYm93LCBvZiB0aGluZ3MgaW4gaGVhdmVuLCBhbmQgdGhpbmdzIGluIGVhcnRoLCBhbmQgdGhpbmdzIHVuZGVyIHRoZSBlYXJ0aDsKQW5kIHRoYXQgZXZlcnkgdG9uZ3VlIHNob3VsZCBjb25mZXNzIHRoYXQgSmVzdXMgQ2hyaXN0IGlzIExvcmQsIHRvIHRoZSBnbG9yeSBvZiBHb2QgdGhlIEZhdGhlci4KV2hlcmVmb3JlLCBteSBiZWxvdmVkLCBhcyB5ZSBoYXZlIGFsd2F5cyBvYmV5ZWQsIG5vdCBhcyBpbiBteSBwcmVzZW5jZSBvbmx5LCBidXQgbm93IG11Y2ggbW9yZSBpbiBteSBhYnNlbmNlLCB3b3JrIG91dCB5b3VyIG93biBzYWx2YXRpb24gd2l0aCBmZWFyIGFuZCB0cmVtYmxpbmcuCkZvciBpdCBpcyBHb2Qgd2hpY2ggd29ya2V0aCBpbiB5b3UgYm90aCB0byB3aWxsIGFuZCB0byBkbyBvZiBoaXMgZ29vZCBwbGVhc3VyZS4KRG8gYWxsIHRoaW5ncyB3aXRob3V0IG11cm11cmluZ3MgYW5kIGRpc3B1dGluZ3M6ClRoYXQgeWUgbWF5IGJlIGJsYW1lbGVzcyBhbmQgaGFybWxlc3MsIHRoZSBzb25zIG9mIEdvZCwgd2l0aG91dCByZWJ1a2UsIGluIHRoZSBtaWRzdCBvZiBhIGNyb29rZWQgYW5kIHBlcnZlcnNlIG5hdGlvbiwgYW1vbmcgd2hvbSB5ZSBzaGluZSBhcyBsaWdodHMgaW4gdGhlIHdvcmxkOwpIb2xkaW5nIGZvcnRoIHRoZSB3b3JkIG9mIGxpZmU7IHRoYXQgSSBtYXkgcmVqb2ljZSBpbiB0aGUgZGF5IG9mIENocmlzdCwgdGhhdCBJIGhhdmUgbm90IHJ1biBpbiB2YWluLCBuZWl0aGVyIGxhYm91cmVkIGluIHZhaW4uClllYSwgYW5kIGlmIEkgYmUgb2ZmZXJlZCB1cG9uIHRoZSBzYWNyaWZpY2UgYW5kIHNlcnZpY2Ugb2YgeW91ciBmYWl0aCwgSSBqb3ksIGFuZCByZWpvaWNlIHdpdGggeW91IGFsbC4KRm9yIHRoZSBzYW1lIGNhdXNlIGFsc28gZG8geWUgam95LCBhbmQgcmVqb2ljZSB3aXRoIG1lLgpCdXQgSSB0cnVzdCBpbiB0aGUgTG9yZCBKZXN1cyB0byBzZW5kIFRpbW90aGV1cyBzaG9ydGx5IHVudG8geW91LCB0aGF0IEkgYWxzbyBtYXkgYmUgb2YgZ29vZCBjb21mb3J0LCB3aGVuIEkga25vdyB5b3VyIHN0YXRlLgpGb3IgSSBoYXZlIG5vIG1hbiBsaWtlbWluZGVkLCB3aG8gd2lsbCBuYXR1cmFsbHkgY2FyZSBmb3IgeW91ciBzdGF0ZS4KRm9yIGFsbCBzZWVrIHRoZWlyIG93biwgbm90IHRoZSB0aGluZ3Mgd2hpY2ggYXJlIEplc3VzIENocmlzdCdzLgpCdXQgeWUga25vdyB0aGUgcHJvb2Ygb2YgaGltLCB0aGF0LCBhcyBhIHNvbiB3aXRoIHRoZSBmYXRoZXIsIGhlIGhhdGggc2VydmVkIHdpdGggbWUgaW4gdGhlIGdvc3BlbC4KSGltIHRoZXJlZm9yZSBJIGhvcGUgdG8gc2VuZCBwcmVzZW50bHksIHNvIHNvb24gYXMgSSBzaGFsbCBzZWUgaG93IGl0IHdpbGwgZ28gd2l0aCBtZS4KQnV0IEkgdHJ1c3QgaW4gdGhlIExvcmQgdGhhdCBJIGFsc28gbXlzZWxmIHNoYWxsIGNvbWUgc2hvcnRseS4KWWV0IEkgc3VwcG9zZWQgaXQgbmVjZXNzYXJ5IHRvIHNlbmQgdG8geW91IEVwYXBocm9kaXR1cywgbXkgYnJvdGhlciwgYW5kIGNvbXBhbmlvbiBpbiBsYWJvdXIsIGFuZCBmZWxsb3dzb2xkaWVyLCBidXQgeW91ciBtZXNzZW5nZXIsIGFuZCBoZSB0aGF0IG1pbmlzdGVyZWQgdG8gbXkgd2FudHMuCkZvciBoZSBsb25nZWQgYWZ0ZXIgeW91IGFsbCwgYW5kIHdhcyBmdWxsIG9mIGhlYXZpbmVzcywgYmVjYXVzZSB0aGF0IHllIGhhZCBoZWFyZCB0aGF0IGhlIGhhZCBiZWVuIHNpY2suCkZvciBpbmRlZWQgaGUgd2FzIHNpY2sgbmlnaCB1bnRvIGRlYXRoOiBidXQgR29kIGhhZCBtZXJjeSBvbiBoaW07IGFuZCBub3Qgb24gaGltIG9ubHksIGJ1dCBvbiBtZSBhbHNvLCBsZXN0IEkgc2hvdWxkIGhhdmUgc29ycm93IHVwb24gc29ycm93LgpJIHNlbnQgaGltIHRoZXJlZm9yZSB0aGUgbW9yZSBjYXJlZnVsbHksIHRoYXQsIHdoZW4geWUgc2VlIGhpbSBhZ2FpbiwgeWUgbWF5IHJlam9pY2UsIGFuZCB0aGF0IEkgbWF5IGJlIHRoZSBsZXNzIHNvcnJvd2Z1bC4KUmVjZWl2ZSBoaW0gdGhlcmVmb3JlIGluIHRoZSBMb3JkIHdpdGggYWxsIGdsYWRuZXNzOyBhbmQgaG9sZCBzdWNoIGluIHJlcHV0YXRpb246CkJlY2F1c2UgZm9yIHRoZSB3b3JrIG9mIENocmlzdCBoZSB3YXMgbmlnaCB1bnRvIGRlYXRoLCBub3QgcmVnYXJkaW5nIGhpcyBsaWZlLCB0byBzdXBwbHkgeW91ciBsYWNrIG9mIHNlcnZpY2UgdG93YXJkIG1lLgpGaW5hbGx5LCBteSBicmV0aHJlbiwgcmVqb2ljZSBpbiB0aGUgTG9yZC4gVG8gd3JpdGUgdGhlIHNhbWUgdGhpbmdzIHRvIHlvdSwgdG8gbWUgaW5kZWVkIGlzIG5vdCBncmlldm91cywgYnV0IGZvciB5b3UgaXQgaXMgc2FmZS4KQmV3YXJlIG9mIGRvZ3MsIGJld2FyZSBvZiBldmlsIHdvcmtlcnMsIGJld2FyZSBvZiB0aGUgY29uY2lzaW9uLgpGb3Igd2UgYXJlIHRoZSBjaXJjdW1jaXNpb24sIHdoaWNoIHdvcnNoaXAgR29kIGluIHRoZSBzcGlyaXQsIGFuZCByZWpvaWNlIGluIENocmlzdCBKZXN1cywgYW5kIGhhdmUgbm8gY29uZmlkZW5jZSBpbiB0aGUgZmxlc2guClRob3VnaCBJIG1pZ2h0IGFsc28gaGF2ZSBjb25maWRlbmNlIGluIHRoZSBmbGVzaC4gSWYgYW55IG90aGVyIG1hbiB0aGlua2V0aCB0aGF0IGhlIGhhdGggd2hlcmVvZiBoZSBtaWdodCB0cnVzdCBpbiB0aGUgZmxlc2gsIEkgbW9yZToKQ2lyY3VtY2lzZWQgdGhlIGVpZ2h0aCBkYXksIG9mIHRoZSBzdG9jayBvZiBJc3JhZWwsIG9mIHRoZSB0cmliZSBvZiBCZW5qYW1pbiwgYW4gSGVicmV3IG9mIHRoZSBIZWJyZXdzOyBhcyB0b3VjaGluZyB0aGUgbGF3LCBhIFBoYXJpc2VlOwpDb25jZXJuaW5nIHplYWwsIHBlcnNlY3V0aW5nIHRoZSBjaHVyY2g7IHRvdWNoaW5nIHRoZSByaWdodGVvdXNuZXNzIHdoaWNoIGlzIGluIHRoZSBsYXcsIGJsYW1lbGVzcy4KQnV0IHdoYXQgdGhpbmdzIHdlcmUgZ2FpbiB0byBtZSwgdGhvc2UgSSBjb3VudGVkIGxvc3MgZm9yIENocmlzdC4KWWVhIGRvdWJ0bGVzcywgYW5kIEkgY291bnQgYWxsIHRoaW5ncyBidXQgbG9zcyBmb3IgdGhlIGV4Y2VsbGVuY3kgb2YgdGhlIGtub3dsZWRnZSBvZiBDaHJpc3QgSmVzdXMgbXkgTG9yZDogZm9yIHdob20gSSBoYXZlIHN1ZmZlcmVkIHRoZSBsb3NzIG9mIGFsbCB0aGluZ3MsIGFuZCBkbyBjb3VudCB0aGVtIGJ1dCBkdW5nLCB0aGF0IEkgbWF5IHdpbiBDaHJpc3QsCkFuZCBiZSBmb3VuZCBpbiBoaW0sIG5vdCBoYXZpbmcgbWluZSBvd24gcmlnaHRlb3VzbmVzcywgd2hpY2ggaXMgb2YgdGhlIGxhdywgYnV0IHRoYXQgd2hpY2ggaXMgdGhyb3VnaCB0aGUgZmFpdGggb2YgQ2hyaXN0LCB0aGUgcmlnaHRlb3VzbmVzcyB3aGljaCBpcyBvZiBHb2QgYnkgZmFpdGg6ClRoYXQgSSBtYXkga25vdyBoaW0sIGFuZCB0aGUgcG93ZXIgb2YgaGlzIHJlc3VycmVjdGlvbiwgYW5kIHRoZSBmZWxsb3dzaGlwIG9mIGhpcyBzdWZmZXJpbmdzLCBiZWluZyBtYWRlIGNvbmZvcm1hYmxlIHVudG8gaGlzIGRlYXRoOwpJZiBieSBhbnkgbWVhbnMgSSBtaWdodCBhdHRhaW4gdW50byB0aGUgcmVzdXJyZWN0aW9uIG9mIHRoZSBkZWFkLgpOb3QgYXMgdGhvdWdoIEkgaGFkIGFscmVhZHkgYXR0YWluZWQsIGVpdGhlciB3ZXJlIGFscmVhZHkgcGVyZmVjdDogYnV0IEkgZm9sbG93IGFmdGVyLCBpZiB0aGF0IEkgbWF5IGFwcHJlaGVuZCB0aGF0IGZvciB3aGljaCBhbHNvIEkgYW0gYXBwcmVoZW5kZWQgb2YgQ2hyaXN0IEplc3VzLgpCcmV0aHJlbiwgSSBjb3VudCBub3QgbXlzZWxmIHRvIGhhdmUgYXBwcmVoZW5kZWQ6IGJ1dCB0aGlzIG9uZSB0aGluZyBJIGRvLCBmb3JnZXR0aW5nIHRob3NlIHRoaW5ncyB3aGljaCBhcmUgYmVoaW5kLCBhbmQgcmVhY2hpbmcgZm9ydGggdW50byB0aG9zZSB0aGluZ3Mgd2hpY2ggYXJlIGJlZm9yZSwKSSBwcmVzcyB0b3dhcmQgdGhlIG1hcmsgZm9yIHRoZSBwcml6ZSBvZiB0aGUgaGlnaCBjYWxsaW5nIG9mIEdvZCBpbiBDaHJpc3QgSmVzdXMuCkxldCB1cyB0aGVyZWZvcmUsIGFzIG1hbnkgYXMgYmUgcGVyZmVjdCwgYmUgdGh1cyBtaW5kZWQ6IGFuZCBpZiBpbiBhbnkgdGhpbmcgeWUgYmUgb3RoZXJ3aXNlIG1pbmRlZCwgR29kIHNoYWxsIHJldmVhbCBldmVuIHRoaXMgdW50byB5b3UuCk5ldmVydGhlbGVzcywgd2hlcmV0byB3ZSBoYXZlIGFscmVhZHkgYXR0YWluZWQsIGxldCB1cyB3YWxrIGJ5IHRoZSBzYW1lIHJ1bGUsIGxldCB1cyBtaW5kIHRoZSBzYW1lIHRoaW5nLgpCcmV0aHJlbiwgYmUgZm9sbG93ZXJzIHRvZ2V0aGVyIG9mIG1lLCBhbmQgbWFyayB0aGVtIHdoaWNoIHdhbGsgc28gYXMgeWUgaGF2ZSB1cyBmb3IgYW4gZW5zYW1wbGUuCihGb3IgbWFueSB3YWxrLCBvZiB3aG9tIEkgaGF2ZSB0b2xkIHlvdSBvZnRlbiwgYW5kIG5vdyB0ZWxsIHlvdSBldmVuIHdlZXBpbmcsIHRoYXQgdGhleSBhcmUgdGhlIGVuZW1pZXMgb2YgdGhlIGNyb3NzIG9mIENocmlzdDoKV2hvc2UgZW5kIGlzIGRlc3RydWN0aW9uLCB3aG9zZSBHb2QgaXMgdGhlaXIgYmVsbHksIGFuZCB3aG9zZSBnbG9yeSBpcyBpbiB0aGVpciBzaGFtZSwgd2hvIG1pbmQgZWFydGhseSB0aGluZ3MuKQpGb3Igb3VyIGNvbnZlcnNhdGlvbiBpcyBpbiBoZWF2ZW47IGZyb20gd2hlbmNlIGFsc28gd2UgbG9vayBmb3IgdGhlIFNhdmlvdXIsIHRoZSBMb3JkIEplc3VzIENocmlzdDoKV2hvIHNoYWxsIGNoYW5nZSBvdXIgdmlsZSBib2R5LCB0aGF0IGl0IG1heSBiZSBmYXNoaW9uZWQgbGlrZSB1bnRvIGhpcyBnbG9yaW91cyBib2R5LCBhY2NvcmRpbmcgdG8gdGhlIHdvcmtpbmcgd2hlcmVieSBoZSBpcyBhYmxlIGV2ZW4gdG8gc3ViZHVlIGFsbCB0aGluZ3MgdW50byBoaW1zZWxmLgpUaGVyZWZvcmUsIG15IGJyZXRocmVuIGRlYXJseSBiZWxvdmVkIGFuZCBsb25nZWQgZm9yLCBteSBqb3kgYW5kIGNyb3duLCBzbyBzdGFuZCBmYXN0IGluIHRoZSBMb3JkLCBteSBkZWFybHkgYmVsb3ZlZC4KSSBiZXNlZWNoIEV1b2RpYXMsIGFuZCBiZXNlZWNoIFN5bnR5Y2hlLCB0aGF0IHRoZXkgYmUgb2YgdGhlIHNhbWUgbWluZCBpbiB0aGUgTG9yZC4KQW5kIEkgaW50cmVhdCB0aGVlIGFsc28sIHRydWUgeW9rZWZlbGxvdywgaGVscCB0aG9zZSB3b21lbiB3aGljaCBsYWJvdXJlZCB3aXRoIG1lIGluIHRoZSBnb3NwZWwsIHdpdGggQ2xlbWVudCBhbHNvLCBhbmQgd2l0aCBvdGhlciBteSBmZWxsb3dsYWJvdXJlcnMsIHdob3NlIG5hbWVzIGFyZSBpbiB0aGUgYm9vayBvZiBsaWZlLgpSZWpvaWNlIGluIHRoZSBMb3JkIGFsd2F5OiBhbmQgYWdhaW4gSSBzYXksIFJlam9pY2UuCkxldCB5b3VyIG1vZGVyYXRpb24gYmUga25vd24gdW50byBhbGwgbWVuLiBUaGUgTG9yZCBpcyBhdCBoYW5kLgpCZSBjYXJlZnVsIGZvciBub3RoaW5nOyBidXQgaW4gZXZlcnkgdGhpbmcgYnkgcHJheWVyIGFuZCBzdXBwbGljYXRpb24gd2l0aCB0aGFua3NnaXZpbmcgbGV0IHlvdXIgcmVxdWVzdHMgYmUgbWFkZSBrbm93biB1bnRvIEdvZC4KQW5kIHRoZSBwZWFjZSBvZiBHb2QsIHdoaWNoIHBhc3NldGggYWxsIHVuZGVyc3RhbmRpbmcsIHNoYWxsIGtlZXAgeW91ciBoZWFydHMgYW5kIG1pbmRzIHRocm91Z2ggQ2hyaXN0IEplc3VzLgpGaW5hbGx5LCBicmV0aHJlbiwgd2hhdHNvZXZlciB0aGluZ3MgYXJlIHRydWUsIHdoYXRzb2V2ZXIgdGhpbmdzIGFyZSBob25lc3QsIHdoYXRzb2V2ZXIgdGhpbmdzIGFyZSBqdXN0LCB3aGF0c29ldmVyIHRoaW5ncyBhcmUgcHVyZSwgd2hhdHNvZXZlciB0aGluZ3MgYXJlIGxvdmVseSwgd2hhdHNvZXZlciB0aGluZ3MgYXJlIG9mIGdvb2QgcmVwb3J0OyBpZiB0aGVyZSBiZSBhbnkgdmlydHVlLCBhbmQgaWYgdGhlcmUgYmUgYW55IHByYWlzZSwgdGhpbmsgb24gdGhlc2UgdGhpbmdzLgpUaG9zZSB0aGluZ3MsIHdoaWNoIHllIGhhdmUgYm90aCBsZWFybmVkLCBhbmQgcmVjZWl2ZWQsIGFuZCBoZWFyZCwgYW5kIHNlZW4gaW4gbWUsIGRvOiBhbmQgdGhlIEdvZCBvZiBwZWFjZSBzaGFsbCBiZSB3aXRoIHlvdS4KQnV0IEkgcmVqb2ljZWQgaW4gdGhlIExvcmQgZ3JlYXRseSwgdGhhdCBub3cgYXQgdGhlIGxhc3QgeW91ciBjYXJlIG9mIG1lIGhhdGggZmxvdXJpc2hlZCBhZ2Fpbjsgd2hlcmVpbiB5ZSB3ZXJlIGFsc28gY2FyZWZ1bCwgYnV0IHllIGxhY2tlZCBvcHBvcnR1bml0eS4KTm90IHRoYXQgSSBzcGVhayBpbiByZXNwZWN0IG9mIHdhbnQ6IGZvciBJIGhhdmUgbGVhcm5lZCwgaW4gd2hhdHNvZXZlciBzdGF0ZSBJIGFtLCB0aGVyZXdpdGggdG8gYmUgY29udGVudC4KSSBrbm93IGJvdGggaG93IHRvIGJlIGFiYXNlZCwgYW5kIEkga25vdyBob3cgdG8gYWJvdW5kOiBldmVyeSB3aGVyZSBhbmQgaW4gYWxsIHRoaW5ncyBJIGFtIGluc3RydWN0ZWQgYm90aCB0byBiZSBmdWxsIGFuZCB0byBiZSBodW5ncnksIGJvdGggdG8gYWJvdW5kIGFuZCB0byBzdWZmZXIgbmVlZC4KSSBjYW4gZG8gYWxsIHRoaW5ncyB0aHJvdWdoIENocmlzdCB3aGljaCBzdHJlbmd0aGVuZXRoIG1lLgpOb3R3aXRoc3RhbmRpbmcgeWUgaGF2ZSB3ZWxsIGRvbmUsIHRoYXQgeWUgZGlkIGNvbW11bmljYXRlIHdpdGggbXkgYWZmbGljdGlvbi4KTm93IHllIFBoaWxpcHBpYW5zIGtub3cgYWxzbywgdGhhdCBpbiB0aGUgYmVnaW5uaW5nIG9mIHRoZSBnb3NwZWwsIHdoZW4gSSBkZXBhcnRlZCBmcm9tIE1hY2Vkb25pYSwgbm8gY2h1cmNoIGNvbW11bmljYXRlZCB3aXRoIG1lIGFzIGNvbmNlcm5pbmcgZ2l2aW5nIGFuZCByZWNlaXZpbmcsIGJ1dCB5ZSBvbmx5LgpGb3IgZXZlbiBpbiBUaGVzc2Fsb25pY2EgeWUgc2VudCBvbmNlIGFuZCBhZ2FpbiB1bnRvIG15IG5lY2Vzc2l0eS4KTm90IGJlY2F1c2UgSSBkZXNpcmUgYSBnaWZ0OiBidXQgSSBkZXNpcmUgZnJ1aXQgdGhhdCBtYXkgYWJvdW5kIHRvIHlvdXIgYWNjb3VudC4KQnV0IEkgaGF2ZSBhbGwsIGFuZCBhYm91bmQ6IEkgYW0gZnVsbCwgaGF2aW5nIHJlY2VpdmVkIG9mIEVwYXBocm9kaXR1cyB0aGUgdGhpbmdzIHdoaWNoIHdlcmUgc2VudCBmcm9tIHlvdSwgYW4gb2RvdXIgb2YgYSBzd2VldCBzbWVsbCwgYSBzYWNyaWZpY2UgYWNjZXB0YWJsZSwgd2VsbHBsZWFzaW5nIHRvIEdvZC4KQnV0IG15IEdvZCBzaGFsbCBzdXBwbHkgYWxsIHlvdXIgbmVlZCBhY2NvcmRpbmcgdG8gaGlzIHJpY2hlcyBpbiBnbG9yeSBieSBDaHJpc3QgSmVzdXMuCk5vdyB1bnRvIEdvZCBhbmQgb3VyIEZhdGhlciBiZSBnbG9yeSBmb3IgZXZlciBhbmQgZXZlci4gQW1lbi4KU2FsdXRlIGV2ZXJ5IHNhaW50IGluIENocmlzdCBKZXN1cy4gVGhlIGJyZXRocmVuIHdoaWNoIGFyZSB3aXRoIG1lIGdyZWV0IHlvdS4KQWxsIHRoZSBzYWludHMgc2FsdXRlIHlvdSwgY2hpZWZseSB0aGV5IHRoYXQgYXJlIG9mIENhZXNhcidzIGhvdXNlaG9sZC4KVGhlIGdyYWNlIG9mIG91ciBMb3JkIEplc3VzIENocmlzdCBiZSB3aXRoIHlvdSBhbGwuIEFtZW4uClBhdWwsIGFuIGFwb3N0bGUgb2YgSmVzdXMgQ2hyaXN0IGJ5IHRoZSB3aWxsIG9mIEdvZCwgYW5kIFRpbW90aGV1cyBvdXIgYnJvdGhlciwKVG8gdGhlIHNhaW50cyBhbmQgZmFpdGhmdWwgYnJldGhyZW4gaW4gQ2hyaXN0IHdoaWNoIGFyZSBhdCBDb2xvc3NlOiBHcmFjZSBiZSB1bnRvIHlvdSwgYW5kIHBlYWNlLCBmcm9tIEdvZCBvdXIgRmF0aGVyIGFuZCB0aGUgTG9yZCBKZXN1cyBDaHJpc3QuCldlIGdpdmUgdGhhbmtzIHRvIEdvZCBhbmQgdGhlIEZhdGhlciBvZiBvdXIgTG9yZCBKZXN1cyBDaHJpc3QsIHByYXlpbmcgYWx3YXlzIGZvciB5b3UsClNpbmNlIHdlIGhlYXJkIG9mIHlvdXIgZmFpdGggaW4gQ2hyaXN0IEplc3VzLCBhbmQgb2YgdGhlIGxvdmUgd2hpY2ggeWUgaGF2ZSB0byBhbGwgdGhlIHNhaW50cywKRm9yIHRoZSBob3BlIHdoaWNoIGlzIGxhaWQgdXAgZm9yIHlvdSBpbiBoZWF2ZW4sIHdoZXJlb2YgeWUgaGVhcmQgYmVmb3JlIGluIHRoZSB3b3JkIG9mIHRoZSB0cnV0aCBvZiB0aGUgZ29zcGVsOwpXaGljaCBpcyBjb21lIHVudG8geW91LCBhcyBpdCBpcyBpbiBhbGwgdGhlIHdvcmxkOyBhbmQgYnJpbmdldGggZm9ydGggZnJ1aXQsIGFzIGl0IGRvdGggYWxzbyBpbiB5b3UsIHNpbmNlIHRoZSBkYXkgeWUgaGVhcmQgb2YgaXQsIGFuZCBrbmV3IHRoZSBncmFjZSBvZiBHb2QgaW4gdHJ1dGg6CkFzIHllIGFsc28gbGVhcm5lZCBvZiBFcGFwaHJhcyBvdXIgZGVhciBmZWxsb3dzZXJ2YW50LCB3aG8gaXMgZm9yIHlvdSBhIGZhaXRoZnVsIG1pbmlzdGVyIG9mIENocmlzdDsKV2hvIGFsc28gZGVjbGFyZWQgdW50byB1cyB5b3VyIGxvdmUgaW4gdGhlIFNwaXJpdC4KRm9yIHRoaXMgY2F1c2Ugd2UgYWxzbywgc2luY2UgdGhlIGRheSB3ZSBoZWFyZCBpdCwgZG8gbm90IGNlYXNlIHRvIHByYXkgZm9yIHlvdSwgYW5kIHRvIGRlc2lyZSB0aGF0IHllIG1pZ2h0IGJlIGZpbGxlZCB3aXRoIHRoZSBrbm93bGVkZ2Ugb2YgaGlzIHdpbGwgaW4gYWxsIHdpc2RvbSBhbmQgc3Bpcml0dWFsIHVuZGVyc3RhbmRpbmc7ClRoYXQgeWUgbWlnaHQgd2FsayB3b3J0aHkgb2YgdGhlIExvcmQgdW50byBhbGwgcGxlYXNpbmcsIGJlaW5nIGZydWl0ZnVsIGluIGV2ZXJ5IGdvb2Qgd29yaywgYW5kIGluY3JlYXNpbmcgaW4gdGhlIGtub3dsZWRnZSBvZiBHb2Q7ClN0cmVuZ3RoZW5lZCB3aXRoIGFsbCBtaWdodCwgYWNjb3JkaW5nIHRvIGhpcyBnbG9yaW91cyBwb3dlciwgdW50byBhbGwgcGF0aWVuY2UgYW5kIGxvbmdzdWZmZXJpbmcgd2l0aCBqb3lmdWxuZXNzOwpHaXZpbmcgdGhhbmtzIHVudG8gdGhlIEZhdGhlciwgd2hpY2ggaGF0aCBtYWRlIHVzIG1lZXQgdG8gYmUgcGFydGFrZXJzIG9mIHRoZSBpbmhlcml0YW5jZSBvZiB0aGUgc2FpbnRzIGluIGxpZ2h0OgpXaG8gaGF0aCBkZWxpdmVyZWQgdXMgZnJvbSB0aGUgcG93ZXIgb2YgZGFya25lc3MsIGFuZCBoYXRoIHRyYW5zbGF0ZWQgdXMgaW50byB0aGUga2luZ2RvbSBvZiBoaXMgZGVhciBTb246CkluIHdob20gd2UgaGF2ZSByZWRlbXB0aW9uIHRocm91Z2ggaGlzIGJsb29kLCBldmVuIHRoZSBmb3JnaXZlbmVzcyBvZiBzaW5zOgpXaG8gaXMgdGhlIGltYWdlIG9mIHRoZSBpbnZpc2libGUgR29kLCB0aGUgZmlyc3Rib3JuIG9mIGV2ZXJ5IGNyZWF0dXJlOgpGb3IgYnkgaGltIHdlcmUgYWxsIHRoaW5ncyBjcmVhdGVkLCB0aGF0IGFyZSBpbiBoZWF2ZW4sIGFuZCB0aGF0IGFyZSBpbiBlYXJ0aCwgdmlzaWJsZSBhbmQgaW52aXNpYmxlLCB3aGV0aGVyIHRoZXkgYmUgdGhyb25lcywgb3IgZG9taW5pb25zLCBvciBwcmluY2lwYWxpdGllcywgb3IgcG93ZXJzOiBhbGwgdGhpbmdzIHdlcmUgY3JlYXRlZCBieSBoaW0sIGFuZCBmb3IgaGltOgpBbmQgaGUgaXMgYmVmb3JlIGFsbCB0aGluZ3MsIGFuZCBieSBoaW0gYWxsIHRoaW5ncyBjb25zaXN0LgpBbmQgaGUgaXMgdGhlIGhlYWQgb2YgdGhlIGJvZHksIHRoZSBjaHVyY2g6IHdobyBpcyB0aGUgYmVnaW5uaW5nLCB0aGUgZmlyc3Rib3JuIGZyb20gdGhlIGRlYWQ7IHRoYXQgaW4gYWxsIHRoaW5ncyBoZSBtaWdodCBoYXZlIHRoZSBwcmVlbWluZW5jZS4KRm9yIGl0IHBsZWFzZWQgdGhlIEZhdGhlciB0aGF0IGluIGhpbSBzaG91bGQgYWxsIGZ1bG5lc3MgZHdlbGw7CkFuZCwgaGF2aW5nIG1hZGUgcGVhY2UgdGhyb3VnaCB0aGUgYmxvb2Qgb2YgaGlzIGNyb3NzLCBieSBoaW0gdG8gcmVjb25jaWxlIGFsbCB0aGluZ3MgdW50byBoaW1zZWxmOyBieSBoaW0sIEkgc2F5LCB3aGV0aGVyIHRoZXkgYmUgdGhpbmdzIGluIGVhcnRoLCBvciB0aGluZ3MgaW4gaGVhdmVuLgpBbmQgeW91LCB0aGF0IHdlcmUgc29tZXRpbWUgYWxpZW5hdGVkIGFuZCBlbmVtaWVzIGluIHlvdXIgbWluZCBieSB3aWNrZWQgd29ya3MsIHlldCBub3cgaGF0aCBoZSByZWNvbmNpbGVkCkluIHRoZSBib2R5IG9mIGhpcyBmbGVzaCB0aHJvdWdoIGRlYXRoLCB0byBwcmVzZW50IHlvdSBob2x5IGFuZCB1bmJsYW1lYWJsZSBhbmQgdW5yZXByb3ZlYWJsZSBpbiBoaXMgc2lnaHQ6CklmIHllIGNvbnRpbnVlIGluIHRoZSBmYWl0aCBncm91bmRlZCBhbmQgc2V0dGxlZCwgYW5kIGJlIG5vdCBtb3ZlZCBhd2F5IGZyb20gdGhlIGhvcGUgb2YgdGhlIGdvc3BlbCwgd2hpY2ggeWUgaGF2ZSBoZWFyZCwgYW5kIHdoaWNoIHdhcyBwcmVhY2hlZCB0byBldmVyeSBjcmVhdHVyZSB3aGljaCBpcyB1bmRlciBoZWF2ZW47IHdoZXJlb2YgSSBQYXVsIGFtIG1hZGUgYSBtaW5pc3RlcjsKV2hvIG5vdyByZWpvaWNlIGluIG15IHN1ZmZlcmluZ3MgZm9yIHlvdSwgYW5kIGZpbGwgdXAgdGhhdCB3aGljaCBpcyBiZWhpbmQgb2YgdGhlIGFmZmxpY3Rpb25zIG9mIENocmlzdCBpbiBteSBmbGVzaCBmb3IgaGlzIGJvZHkncyBzYWtlLCB3aGljaCBpcyB0aGUgY2h1cmNoOgpXaGVyZW9mIEkgYW0gbWFkZSBhIG1pbmlzdGVyLCBhY2NvcmRpbmcgdG8gdGhlIGRpc3BlbnNhdGlvbiBvZiBHb2Qgd2hpY2ggaXMgZ2l2ZW4gdG8gbWUgZm9yIHlvdSwgdG8gZnVsZmlsIHRoZSB3b3JkIG9mIEdvZDsKRXZlbiB0aGUgbXlzdGVyeSB3aGljaCBoYXRoIGJlZW4gaGlkIGZyb20gYWdlcyBhbmQgZnJvbSBnZW5lcmF0aW9ucywgYnV0IG5vdyBpcyBtYWRlIG1hbmlmZXN0IHRvIGhpcyBzYWludHM6ClRvIHdob20gR29kIHdvdWxkIG1ha2Uga25vd24gd2hhdCBpcyB0aGUgcmljaGVzIG9mIHRoZSBnbG9yeSBvZiB0aGlzIG15c3RlcnkgYW1vbmcgdGhlIEdlbnRpbGVzOyB3aGljaCBpcyBDaHJpc3QgaW4geW91LCB0aGUgaG9wZSBvZiBnbG9yeToKV2hvbSB3ZSBwcmVhY2gsIHdhcm5pbmcgZXZlcnkgbWFuLCBhbmQgdGVhY2hpbmcgZXZlcnkgbWFuIGluIGFsbCB3aXNkb207IHRoYXQgd2UgbWF5IHByZXNlbnQgZXZlcnkgbWFuIHBlcmZlY3QgaW4gQ2hyaXN0IEplc3VzOgpXaGVyZXVudG8gSSBhbHNvIGxhYm91ciwgc3RyaXZpbmcgYWNjb3JkaW5nIHRvIGhpcyB3b3JraW5nLCB3aGljaCB3b3JrZXRoIGluIG1lIG1pZ2h0aWx5LgpGb3IgSSB3b3VsZCB0aGF0IHllIGtuZXcgd2hhdCBncmVhdCBjb25mbGljdCBJIGhhdmUgZm9yIHlvdSwgYW5kIGZvciB0aGVtIGF0IExhb2RpY2VhLCBhbmQgZm9yIGFzIG1hbnkgYXMgaGF2ZSBub3Qgc2VlbiBteSBmYWNlIGluIHRoZSBmbGVzaDsKVGhhdCB0aGVpciBoZWFydHMgbWlnaHQgYmUgY29tZm9ydGVkLCBiZWluZyBrbml0IHRvZ2V0aGVyIGluIGxvdmUsIGFuZCB1bnRvIGFsbCByaWNoZXMgb2YgdGhlIGZ1bGwgYXNzdXJhbmNlIG9mIHVuZGVyc3RhbmRpbmcsIHRvIHRoZSBhY2tub3dsZWRnZW1lbnQgb2YgdGhlIG15c3Rlcnkgb2YgR29kLCBhbmQgb2YgdGhlIEZhdGhlciwgYW5kIG9mIENocmlzdDsKSW4gd2hvbSBhcmUgaGlkIGFsbCB0aGUgdHJlYXN1cmVzIG9mIHdpc2RvbSBhbmQga25vd2xlZGdlLgpBbmQgdGhpcyBJIHNheSwgbGVzdCBhbnkgbWFuIHNob3VsZCBiZWd1aWxlIHlvdSB3aXRoIGVudGljaW5nIHdvcmRzLgpGb3IgdGhvdWdoIEkgYmUgYWJzZW50IGluIHRoZSBmbGVzaCwgeWV0IGFtIEkgd2l0aCB5b3UgaW4gdGhlIHNwaXJpdCwgam95aW5nIGFuZCBiZWhvbGRpbmcgeW91ciBvcmRlciwgYW5kIHRoZSBzdGVkZmFzdG5lc3Mgb2YgeW91ciBmYWl0aCBpbiBDaHJpc3QuCkFzIHllIGhhdmUgdGhlcmVmb3JlIHJlY2VpdmVkIENocmlzdCBKZXN1cyB0aGUgTG9yZCwgc28gd2FsayB5ZSBpbiBoaW06ClJvb3RlZCBhbmQgYnVpbHQgdXAgaW4gaGltLCBhbmQgc3RhYmxpc2hlZCBpbiB0aGUgZmFpdGgsIGFzIHllIGhhdmUgYmVlbiB0YXVnaHQsIGFib3VuZGluZyB0aGVyZWluIHdpdGggdGhhbmtzZ2l2aW5nLgpCZXdhcmUgbGVzdCBhbnkgbWFuIHNwb2lsIHlvdSB0aHJvdWdoIHBoaWxvc29waHkgYW5kIHZhaW4gZGVjZWl0LCBhZnRlciB0aGUgdHJhZGl0aW9uIG9mIG1lbiwgYWZ0ZXIgdGhlIHJ1ZGltZW50cyBvZiB0aGUgd29ybGQsIGFuZCBub3QgYWZ0ZXIgQ2hyaXN0LgpGb3IgaW4gaGltIGR3ZWxsZXRoIGFsbCB0aGUgZnVsbmVzcyBvZiB0aGUgR29kaGVhZCBib2RpbHkuCkFuZCB5ZSBhcmUgY29tcGxldGUgaW4gaGltLCB3aGljaCBpcyB0aGUgaGVhZCBvZiBhbGwgcHJpbmNpcGFsaXR5IGFuZCBwb3dlcjoKSW4gd2hvbSBhbHNvIHllIGFyZSBjaXJjdW1jaXNlZCB3aXRoIHRoZSBjaXJjdW1jaXNpb24gbWFkZSB3aXRob3V0IGhhbmRzLCBpbiBwdXR0aW5nIG9mZiB0aGUgYm9keSBvZiB0aGUgc2lucyBvZiB0aGUgZmxlc2ggYnkgdGhlIGNpcmN1bWNpc2lvbiBvZiBDaHJpc3Q6CkJ1cmllZCB3aXRoIGhpbSBpbiBiYXB0aXNtLCB3aGVyZWluIGFsc28geWUgYXJlIHJpc2VuIHdpdGggaGltIHRocm91Z2ggdGhlIGZhaXRoIG9mIHRoZSBvcGVyYXRpb24gb2YgR29kLCB3aG8gaGF0aCByYWlzZWQgaGltIGZyb20gdGhlIGRlYWQuCkFuZCB5b3UsIGJlaW5nIGRlYWQgaW4geW91ciBzaW5zIGFuZCB0aGUgdW5jaXJjdW1jaXNpb24gb2YgeW91ciBmbGVzaCwgaGF0aCBoZSBxdWlja2VuZWQgdG9nZXRoZXIgd2l0aCBoaW0sIGhhdmluZyBmb3JnaXZlbiB5b3UgYWxsIHRyZXNwYXNzZXM7CkJsb3R0aW5nIG91dCB0aGUgaGFuZHdyaXRpbmcgb2Ygb3JkaW5hbmNlcyB0aGF0IHdhcyBhZ2FpbnN0IHVzLCB3aGljaCB3YXMgY29udHJhcnkgdG8gdXMsIGFuZCB0b29rIGl0IG91dCBvZiB0aGUgd2F5LCBuYWlsaW5nIGl0IHRvIGhpcyBjcm9zczsKQW5kIGhhdmluZyBzcG9pbGVkIHByaW5jaXBhbGl0aWVzIGFuZCBwb3dlcnMsIGhlIG1hZGUgYSBzaGV3IG9mIHRoZW0gb3Blbmx5LCB0cml1bXBoaW5nIG92ZXIgdGhlbSBpbiBpdC4KTGV0IG5vIG1hbiB0aGVyZWZvcmUganVkZ2UgeW91IGluIG1lYXQsIG9yIGluIGRyaW5rLCBvciBpbiByZXNwZWN0IG9mIGFuIGhvbHlkYXksIG9yIG9mIHRoZSBuZXcgbW9vbiwgb3Igb2YgdGhlIHNhYmJhdGggZGF5czoKV2hpY2ggYXJlIGEgc2hhZG93IG9mIHRoaW5ncyB0byBjb21lOyBidXQgdGhlIGJvZHkgaXMgb2YgQ2hyaXN0LgpMZXQgbm8gbWFuIGJlZ3VpbGUgeW91IG9mIHlvdXIgcmV3YXJkIGluIGEgdm9sdW50YXJ5IGh1bWlsaXR5IGFuZCB3b3JzaGlwcGluZyBvZiBhbmdlbHMsIGludHJ1ZGluZyBpbnRvIHRob3NlIHRoaW5ncyB3aGljaCBoZSBoYXRoIG5vdCBzZWVuLCB2YWlubHkgcHVmZmVkIHVwIGJ5IGhpcyBmbGVzaGx5IG1pbmQsCkFuZCBub3QgaG9sZGluZyB0aGUgSGVhZCwgZnJvbSB3aGljaCBhbGwgdGhlIGJvZHkgYnkgam9pbnRzIGFuZCBiYW5kcyBoYXZpbmcgbm91cmlzaG1lbnQgbWluaXN0ZXJlZCwgYW5kIGtuaXQgdG9nZXRoZXIsIGluY3JlYXNldGggd2l0aCB0aGUgaW5jcmVhc2Ugb2YgR29kLgpXaGVyZWZvcmUgaWYgeWUgYmUgZGVhZCB3aXRoIENocmlzdCBmcm9tIHRoZSBydWRpbWVudHMgb2YgdGhlIHdvcmxkLCB3aHksIGFzIHRob3VnaCBsaXZpbmcgaW4gdGhlIHdvcmxkLCBhcmUgeWUgc3ViamVjdCB0byBvcmRpbmFuY2VzLAooVG91Y2ggbm90OyB0YXN0ZSBub3Q7IGhhbmRsZSBub3Q7CldoaWNoIGFsbCBhcmUgdG8gcGVyaXNoIHdpdGggdGhlIHVzaW5nOykgYWZ0ZXIgdGhlIGNvbW1hbmRtZW50cyBhbmQgZG9jdHJpbmVzIG9mIG1lbj8KV2hpY2ggdGhpbmdzIGhhdmUgaW5kZWVkIGEgc2hldyBvZiB3aXNkb20gaW4gd2lsbCB3b3JzaGlwLCBhbmQgaHVtaWxpdHksIGFuZCBuZWdsZWN0aW5nIG9mIHRoZSBib2R5OiBub3QgaW4gYW55IGhvbm91ciB0byB0aGUgc2F0aXNmeWluZyBvZiB0aGUgZmxlc2guCklmIHllIHRoZW4gYmUgcmlzZW4gd2l0aCBDaHJpc3QsIHNlZWsgdGhvc2UgdGhpbmdzIHdoaWNoIGFyZSBhYm92ZSwgd2hlcmUgQ2hyaXN0IHNpdHRldGggb24gdGhlIHJpZ2h0IGhhbmQgb2YgR29kLgpTZXQgeW91ciBhZmZlY3Rpb24gb24gdGhpbmdzIGFib3ZlLCBub3Qgb24gdGhpbmdzIG9uIHRoZSBlYXJ0aC4KRm9yIHllIGFyZSBkZWFkLCBhbmQgeW91ciBsaWZlIGlzIGhpZCB3aXRoIENocmlzdCBpbiBHb2QuCldoZW4gQ2hyaXN0LCB3aG8gaXMgb3VyIGxpZmUsIHNoYWxsIGFwcGVhciwgdGhlbiBzaGFsbCB5ZSBhbHNvIGFwcGVhciB3aXRoIGhpbSBpbiBnbG9yeS4KTW9ydGlmeSB0aGVyZWZvcmUgeW91ciBtZW1iZXJzIHdoaWNoIGFyZSB1cG9uIHRoZSBlYXJ0aDsgZm9ybmljYXRpb24sIHVuY2xlYW5uZXNzLCBpbm9yZGluYXRlIGFmZmVjdGlvbiwgZXZpbCBjb25jdXBpc2NlbmNlLCBhbmQgY292ZXRvdXNuZXNzLCB3aGljaCBpcyBpZG9sYXRyeToKRm9yIHdoaWNoIHRoaW5ncycgc2FrZSB0aGUgd3JhdGggb2YgR29kIGNvbWV0aCBvbiB0aGUgY2hpbGRyZW4gb2YgZGlzb2JlZGllbmNlOgpJbiB0aGUgd2hpY2ggeWUgYWxzbyB3YWxrZWQgc29tZSB0aW1lLCB3aGVuIHllIGxpdmVkIGluIHRoZW0uCkJ1dCBub3cgeWUgYWxzbyBwdXQgb2ZmIGFsbCB0aGVzZTsgYW5nZXIsIHdyYXRoLCBtYWxpY2UsIGJsYXNwaGVteSwgZmlsdGh5IGNvbW11bmljYXRpb24gb3V0IG9mIHlvdXIgbW91dGguCkxpZSBub3Qgb25lIHRvIGFub3RoZXIsIHNlZWluZyB0aGF0IHllIGhhdmUgcHV0IG9mZiB0aGUgb2xkIG1hbiB3aXRoIGhpcyBkZWVkczsKQW5kIGhhdmUgcHV0IG9uIHRoZSBuZXcgbWFuLCB3aGljaCBpcyByZW5ld2VkIGluIGtub3dsZWRnZSBhZnRlciB0aGUgaW1hZ2Ugb2YgaGltIHRoYXQgY3JlYXRlZCBoaW06CldoZXJlIHRoZXJlIGlzIG5laXRoZXIgR3JlZWsgbm9yIEpldywgY2lyY3VtY2lzaW9uIG5vciB1bmNpcmN1bWNpc2lvbiwgQmFyYmFyaWFuLCBTY3l0aGlhbiwgYm9uZCBub3IgZnJlZTogYnV0IENocmlzdCBpcyBhbGwsIGFuZCBpbiBhbGwuClB1dCBvbiB0aGVyZWZvcmUsIGFzIHRoZSBlbGVjdCBvZiBHb2QsIGhvbHkgYW5kIGJlbG92ZWQsIGJvd2VscyBvZiBtZXJjaWVzLCBraW5kbmVzcywgaHVtYmxlbmVzcyBvZiBtaW5kLCBtZWVrbmVzcywgbG9uZ3N1ZmZlcmluZzsKRm9yYmVhcmluZyBvbmUgYW5vdGhlciwgYW5kIGZvcmdpdmluZyBvbmUgYW5vdGhlciwgaWYgYW55IG1hbiBoYXZlIGEgcXVhcnJlbCBhZ2FpbnN0IGFueTogZXZlbiBhcyBDaHJpc3QgZm9yZ2F2ZSB5b3UsIHNvIGFsc28gZG8geWUuCkFuZCBhYm92ZSBhbGwgdGhlc2UgdGhpbmdzIHB1dCBvbiBjaGFyaXR5LCB3aGljaCBpcyB0aGUgYm9uZCBvZiBwZXJmZWN0bmVzcy4KQW5kIGxldCB0aGUgcGVhY2Ugb2YgR29kIHJ1bGUgaW4geW91ciBoZWFydHMsIHRvIHRoZSB3aGljaCBhbHNvIHllIGFyZSBjYWxsZWQgaW4gb25lIGJvZHk7IGFuZCBiZSB5ZSB0aGFua2Z1bC4KTGV0IHRoZSB3b3JkIG9mIENocmlzdCBkd2VsbCBpbiB5b3UgcmljaGx5IGluIGFsbCB3aXNkb207IHRlYWNoaW5nIGFuZCBhZG1vbmlzaGluZyBvbmUgYW5vdGhlciBpbiBwc2FsbXMgYW5kIGh5bW5zIGFuZCBzcGlyaXR1YWwgc29uZ3MsIHNpbmdpbmcgd2l0aCBncmFjZSBpbiB5b3VyIGhlYXJ0cyB0byB0aGUgTG9yZC4KQW5kIHdoYXRzb2V2ZXIgeWUgZG8gaW4gd29yZCBvciBkZWVkLCBkbyBhbGwgaW4gdGhlIG5hbWUgb2YgdGhlIExvcmQgSmVzdXMsIGdpdmluZyB0aGFua3MgdG8gR29kIGFuZCB0aGUgRmF0aGVyIGJ5IGhpbS4KV2l2ZXMsIHN1Ym1pdCB5b3Vyc2VsdmVzIHVudG8geW91ciBvd24gaHVzYmFuZHMsIGFzIGl0IGlzIGZpdCBpbiB0aGUgTG9yZC4KSHVzYmFuZHMsIGxvdmUgeW91ciB3aXZlcywgYW5kIGJlIG5vdCBiaXR0ZXIgYWdhaW5zdCB0aGVtLgpDaGlsZHJlbiwgb2JleSB5b3VyIHBhcmVudHMgaW4gYWxsIHRoaW5nczogZm9yIHRoaXMgaXMgd2VsbCBwbGVhc2luZyB1bnRvIHRoZSBMb3JkLgpGYXRoZXJzLCBwcm92b2tlIG5vdCB5b3VyIGNoaWxkcmVuIHRvIGFuZ2VyLCBsZXN0IHRoZXkgYmUgZGlzY291cmFnZWQuClNlcnZhbnRzLCBvYmV5IGluIGFsbCB0aGluZ3MgeW91ciBtYXN0ZXJzIGFjY29yZGluZyB0byB0aGUgZmxlc2g7IG5vdCB3aXRoIGV5ZXNlcnZpY2UsIGFzIG1lbnBsZWFzZXJzOyBidXQgaW4gc2luZ2xlbmVzcyBvZiBoZWFydCwgZmVhcmluZyBHb2Q7CkFuZCB3aGF0c29ldmVyIHllIGRvLCBkbyBpdCBoZWFydGlseSwgYXMgdG8gdGhlIExvcmQsIGFuZCBub3QgdW50byBtZW47Cktub3dpbmcgdGhhdCBvZiB0aGUgTG9yZCB5ZSBzaGFsbCByZWNlaXZlIHRoZSByZXdhcmQgb2YgdGhlIGluaGVyaXRhbmNlOiBmb3IgeWUgc2VydmUgdGhlIExvcmQgQ2hyaXN0LgpCdXQgaGUgdGhhdCBkb2V0aCB3cm9uZyBzaGFsbCByZWNlaXZlIGZvciB0aGUgd3Jvbmcgd2hpY2ggaGUgaGF0aCBkb25lOiBhbmQgdGhlcmUgaXMgbm8gcmVzcGVjdCBvZiBwZXJzb25zLgpNYXN0ZXJzLCBnaXZlIHVudG8geW91ciBzZXJ2YW50cyB0aGF0IHdoaWNoIGlzIGp1c3QgYW5kIGVxdWFsOyBrbm93aW5nIHRoYXQgeWUgYWxzbyBoYXZlIGEgTWFzdGVyIGluIGhlYXZlbi4KQ29udGludWUgaW4gcHJheWVyLCBhbmQgd2F0Y2ggaW4gdGhlIHNhbWUgd2l0aCB0aGFua3NnaXZpbmc7CldpdGhhbCBwcmF5aW5nIGFsc28gZm9yIHVzLCB0aGF0IEdvZCB3b3VsZCBvcGVuIHVudG8gdXMgYSBkb29yIG9mIHV0dGVyYW5jZSwgdG8gc3BlYWsgdGhlIG15c3Rlcnkgb2YgQ2hyaXN0LCBmb3Igd2hpY2ggSSBhbSBhbHNvIGluIGJvbmRzOgpUaGF0IEkgbWF5IG1ha2UgaXQgbWFuaWZlc3QsIGFzIEkgb3VnaHQgdG8gc3BlYWsuCldhbGsgaW4gd2lzZG9tIHRvd2FyZCB0aGVtIHRoYXQgYXJlIHdpdGhvdXQsIHJlZGVlbWluZyB0aGUgdGltZS4KTGV0IHlvdXIgc3BlZWNoIGJlIGFsd2F5IHdpdGggZ3JhY2UsIHNlYXNvbmVkIHdpdGggc2FsdCwgdGhhdCB5ZSBtYXkga25vdyBob3cgeWUgb3VnaHQgdG8gYW5zd2VyIGV2ZXJ5IG1hbi4KQWxsIG15IHN0YXRlIHNoYWxsIFR5Y2hpY3VzIGRlY2xhcmUgdW50byB5b3UsIHdobyBpcyBhIGJlbG92ZWQgYnJvdGhlciwgYW5kIGEgZmFpdGhmdWwgbWluaXN0ZXIgYW5kIGZlbGxvd3NlcnZhbnQgaW4gdGhlIExvcmQ6Cldob20gSSBoYXZlIHNlbnQgdW50byB5b3UgZm9yIHRoZSBzYW1lIHB1cnBvc2UsIHRoYXQgaGUgbWlnaHQga25vdyB5b3VyIGVzdGF0ZSwgYW5kIGNvbWZvcnQgeW91ciBoZWFydHM7CldpdGggT25lc2ltdXMsIGEgZmFpdGhmdWwgYW5kIGJlbG92ZWQgYnJvdGhlciwgd2hvIGlzIG9uZSBvZiB5b3UuIFRoZXkgc2hhbGwgbWFrZSBrbm93biB1bnRvIHlvdSBhbGwgdGhpbmdzIHdoaWNoIGFyZSBkb25lIGhlcmUuCkFyaXN0YXJjaHVzIG15IGZlbGxvd3ByaXNvbmVyIHNhbHV0ZXRoIHlvdSwgYW5kIE1hcmN1cywgc2lzdGVyJ3Mgc29uIHRvIEJhcm5hYmFzLCAodG91Y2hpbmcgd2hvbSB5ZSByZWNlaXZlZCBjb21tYW5kbWVudHM6IGlmIGhlIGNvbWUgdW50byB5b3UsIHJlY2VpdmUgaGltOykKQW5kIEplc3VzLCB3aGljaCBpcyBjYWxsZWQgSnVzdHVzLCB3aG8gYXJlIG9mIHRoZSBjaXJjdW1jaXNpb24uIFRoZXNlIG9ubHkgYXJlIG15IGZlbGxvd3dvcmtlcnMgdW50byB0aGUga2luZ2RvbSBvZiBHb2QsIHdoaWNoIGhhdmUgYmVlbiBhIGNvbWZvcnQgdW50byBtZS4KRXBhcGhyYXMsIHdobyBpcyBvbmUgb2YgeW91LCBhIHNlcnZhbnQgb2YgQ2hyaXN0LCBzYWx1dGV0aCB5b3UsIGFsd2F5cyBsYWJvdXJpbmcgZmVydmVudGx5IGZvciB5b3UgaW4gcHJheWVycywgdGhhdCB5ZSBtYXkgc3RhbmQgcGVyZmVjdCBhbmQgY29tcGxldGUgaW4gYWxsIHRoZSB3aWxsIG9mIEdvZC4KRm9yIEkgYmVhciBoaW0gcmVjb3JkLCB0aGF0IGhlIGhhdGggYSBncmVhdCB6ZWFsIGZvciB5b3UsIGFuZCB0aGVtIHRoYXQgYXJlIGluIExhb2RpY2VhLCBhbmQgdGhlbSBpbiBIaWVyYXBvbGlzLgpMdWtlLCB0aGUgYmVsb3ZlZCBwaHlzaWNpYW4sIGFuZCBEZW1hcywgZ3JlZXQgeW91LgpTYWx1dGUgdGhlIGJyZXRocmVuIHdoaWNoIGFyZSBpbiBMYW9kaWNlYSwgYW5kIE55bXBoYXMsIGFuZCB0aGUgY2h1cmNoIHdoaWNoIGlzIGluIGhpcyBob3VzZS4KQW5kIHdoZW4gdGhpcyBlcGlzdGxlIGlzIHJlYWQgYW1vbmcgeW91LCBjYXVzZSB0aGF0IGl0IGJlIHJlYWQgYWxzbyBpbiB0aGUgY2h1cmNoIG9mIHRoZSBMYW9kaWNlYW5zOyBhbmQgdGhhdCB5ZSBsaWtld2lzZSByZWFkIHRoZSBlcGlzdGxlIGZyb20gTGFvZGljZWEuCkFuZCBzYXkgdG8gQXJjaGlwcHVzLCBUYWtlIGhlZWQgdG8gdGhlIG1pbmlzdHJ5IHdoaWNoIHRob3UgaGFzdCByZWNlaXZlZCBpbiB0aGUgTG9yZCwgdGhhdCB0aG91IGZ1bGZpbCBpdC4KVGhlIHNhbHV0YXRpb24gYnkgdGhlIGhhbmQgb2YgbWUgUGF1bC4gUmVtZW1iZXIgbXkgYm9uZHMuIEdyYWNlIGJlIHdpdGggeW91LiBBbWVuLgpQYXVsLCBhbmQgU2lsdmFudXMsIGFuZCBUaW1vdGhldXMsIHVudG8gdGhlIGNodXJjaCBvZiB0aGUgVGhlc3NhbG9uaWFucyB3aGljaCBpcyBpbiBHb2QgdGhlIEZhdGhlciBhbmQgaW4gdGhlIExvcmQgSmVzdXMgQ2hyaXN0OiBHcmFjZSBiZSB1bnRvIHlvdSwgYW5kIHBlYWNlLCBmcm9tIEdvZCBvdXIgRmF0aGVyLCBhbmQgdGhlIExvcmQgSmVzdXMgQ2hyaXN0LgpXZSBnaXZlIHRoYW5rcyB0byBHb2QgYWx3YXlzIGZvciB5b3UgYWxsLCBtYWtpbmcgbWVudGlvbiBvZiB5b3UgaW4gb3VyIHByYXllcnM7ClJlbWVtYmVyaW5nIHdpdGhvdXQgY2Vhc2luZyB5b3VyIHdvcmsgb2YgZmFpdGgsIGFuZCBsYWJvdXIgb2YgbG92ZSwgYW5kIHBhdGllbmNlIG9mIGhvcGUgaW4gb3VyIExvcmQgSmVzdXMgQ2hyaXN0LCBpbiB0aGUgc2lnaHQgb2YgR29kIGFuZCBvdXIgRmF0aGVyOwpLbm93aW5nLCBicmV0aHJlbiBiZWxvdmVkLCB5b3VyIGVsZWN0aW9uIG9mIEdvZC4KRm9yIG91ciBnb3NwZWwgY2FtZSBub3QgdW50byB5b3UgaW4gd29yZCBvbmx5LCBidXQgYWxzbyBpbiBwb3dlciwgYW5kIGluIHRoZSBIb2x5IEdob3N0LCBhbmQgaW4gbXVjaCBhc3N1cmFuY2U7IGFzIHllIGtub3cgd2hhdCBtYW5uZXIgb2YgbWVuIHdlIHdlcmUgYW1vbmcgeW91IGZvciB5b3VyIHNha2UuCkFuZCB5ZSBiZWNhbWUgZm9sbG93ZXJzIG9mIHVzLCBhbmQgb2YgdGhlIExvcmQsIGhhdmluZyByZWNlaXZlZCB0aGUgd29yZCBpbiBtdWNoIGFmZmxpY3Rpb24sIHdpdGggam95IG9mIHRoZSBIb2x5IEdob3N0LgpTbyB0aGF0IHllIHdlcmUgZW5zYW1wbGVzIHRvIGFsbCB0aGF0IGJlbGlldmUgaW4gTWFjZWRvbmlhIGFuZCBBY2hhaWEuCkZvciBmcm9tIHlvdSBzb3VuZGVkIG91dCB0aGUgd29yZCBvZiB0aGUgTG9yZCBub3Qgb25seSBpbiBNYWNlZG9uaWEgYW5kIEFjaGFpYSwgYnV0IGFsc28gaW4gZXZlcnkgcGxhY2UgeW91ciBmYWl0aCB0byBHb2Qtd2FyZCBpcyBzcHJlYWQgYWJyb2FkOyBzbyB0aGF0IHdlIG5lZWQgbm90IHRvIHNwZWFrIGFueSB0aGluZy4KRm9yIHRoZXkgdGhlbXNlbHZlcyBzaGV3IG9mIHVzIHdoYXQgbWFubmVyIG9mIGVudGVyaW5nIGluIHdlIGhhZCB1bnRvIHlvdSwgYW5kIGhvdyB5ZSB0dXJuZWQgdG8gR29kIGZyb20gaWRvbHMgdG8gc2VydmUgdGhlIGxpdmluZyBhbmQgdHJ1ZSBHb2Q7CkFuZCB0byB3YWl0IGZvciBoaXMgU29uIGZyb20gaGVhdmVuLCB3aG9tIGhlIHJhaXNlZCBmcm9tIHRoZSBkZWFkLCBldmVuIEplc3VzLCB3aGljaCBkZWxpdmVyZWQgdXMgZnJvbSB0aGUgd3JhdGggdG8gY29tZS4KRm9yIHlvdXJzZWx2ZXMsIGJyZXRocmVuLCBrbm93IG91ciBlbnRyYW5jZSBpbiB1bnRvIHlvdSwgdGhhdCBpdCB3YXMgbm90IGluIHZhaW46CkJ1dCBldmVuIGFmdGVyIHRoYXQgd2UgaGFkIHN1ZmZlcmVkIGJlZm9yZSwgYW5kIHdlcmUgc2hhbWVmdWxseSBlbnRyZWF0ZWQsIGFzIHllIGtub3csIGF0IFBoaWxpcHBpLCB3ZSB3ZXJlIGJvbGQgaW4gb3VyIEdvZCB0byBzcGVhayB1bnRvIHlvdSB0aGUgZ29zcGVsIG9mIEdvZCB3aXRoIG11Y2ggY29udGVudGlvbi4KRm9yIG91ciBleGhvcnRhdGlvbiB3YXMgbm90IG9mIGRlY2VpdCwgbm9yIG9mIHVuY2xlYW5uZXNzLCBub3IgaW4gZ3VpbGU6CkJ1dCBhcyB3ZSB3ZXJlIGFsbG93ZWQgb2YgR29kIHRvIGJlIHB1dCBpbiB0cnVzdCB3aXRoIHRoZSBnb3NwZWwsIGV2ZW4gc28gd2Ugc3BlYWs7IG5vdCBhcyBwbGVhc2luZyBtZW4sIGJ1dCBHb2QsIHdoaWNoIHRyaWV0aCBvdXIgaGVhcnRzLgpGb3IgbmVpdGhlciBhdCBhbnkgdGltZSB1c2VkIHdlIGZsYXR0ZXJpbmcgd29yZHMsIGFzIHllIGtub3csIG5vciBhIGNsb2tlIG9mIGNvdmV0b3VzbmVzczsgR29kIGlzIHdpdG5lc3M6Ck5vciBvZiBtZW4gc291Z2h0IHdlIGdsb3J5LCBuZWl0aGVyIG9mIHlvdSwgbm9yIHlldCBvZiBvdGhlcnMsIHdoZW4gd2UgbWlnaHQgaGF2ZSBiZWVuIGJ1cmRlbnNvbWUsIGFzIHRoZSBhcG9zdGxlcyBvZiBDaHJpc3QuCkJ1dCB3ZSB3ZXJlIGdlbnRsZSBhbW9uZyB5b3UsIGV2ZW4gYXMgYSBudXJzZSBjaGVyaXNoZXRoIGhlciBjaGlsZHJlbjoKU28gYmVpbmcgYWZmZWN0aW9uYXRlbHkgZGVzaXJvdXMgb2YgeW91LCB3ZSB3ZXJlIHdpbGxpbmcgdG8gaGF2ZSBpbXBhcnRlZCB1bnRvIHlvdSwgbm90IHRoZSBnb3NwZWwgb2YgR29kIG9ubHksIGJ1dCBhbHNvIG91ciBvd24gc291bHMsIGJlY2F1c2UgeWUgd2VyZSBkZWFyIHVudG8gdXMuCkZvciB5ZSByZW1lbWJlciwgYnJldGhyZW4sIG91ciBsYWJvdXIgYW5kIHRyYXZhaWw6IGZvciBsYWJvdXJpbmcgbmlnaHQgYW5kIGRheSwgYmVjYXVzZSB3ZSB3b3VsZCBub3QgYmUgY2hhcmdlYWJsZSB1bnRvIGFueSBvZiB5b3UsIHdlIHByZWFjaGVkIHVudG8geW91IHRoZSBnb3NwZWwgb2YgR29kLgpZZSBhcmUgd2l0bmVzc2VzLCBhbmQgR29kIGFsc28sIGhvdyBob2xpbHkgYW5kIGp1c3RseSBhbmQgdW5ibGFtZWFibHkgd2UgYmVoYXZlZCBvdXJzZWx2ZXMgYW1vbmcgeW91IHRoYXQgYmVsaWV2ZToKQXMgeWUga25vdyBob3cgd2UgZXhob3J0ZWQgYW5kIGNvbWZvcnRlZCBhbmQgY2hhcmdlZCBldmVyeSBvbmUgb2YgeW91LCBhcyBhIGZhdGhlciBkb3RoIGhpcyBjaGlsZHJlbiwKVGhhdCB5ZSB3b3VsZCB3YWxrIHdvcnRoeSBvZiBHb2QsIHdobyBoYXRoIGNhbGxlZCB5b3UgdW50byBoaXMga2luZ2RvbSBhbmQgZ2xvcnkuCkZvciB0aGlzIGNhdXNlIGFsc28gdGhhbmsgd2UgR29kIHdpdGhvdXQgY2Vhc2luZywgYmVjYXVzZSwgd2hlbiB5ZSByZWNlaXZlZCB0aGUgd29yZCBvZiBHb2Qgd2hpY2ggeWUgaGVhcmQgb2YgdXMsIHllIHJlY2VpdmVkIGl0IG5vdCBhcyB0aGUgd29yZCBvZiBtZW4sIGJ1dCBhcyBpdCBpcyBpbiB0cnV0aCwgdGhlIHdvcmQgb2YgR29kLCB3aGljaCBlZmZlY3R1YWxseSB3b3JrZXRoIGFsc28gaW4geW91IHRoYXQgYmVsaWV2ZS4KRm9yIHllLCBicmV0aHJlbiwgYmVjYW1lIGZvbGxvd2VycyBvZiB0aGUgY2h1cmNoZXMgb2YgR29kIHdoaWNoIGluIEp1ZGFlYSBhcmUgaW4gQ2hyaXN0IEplc3VzOiBmb3IgeWUgYWxzbyBoYXZlIHN1ZmZlcmVkIGxpa2UgdGhpbmdzIG9mIHlvdXIgb3duIGNvdW50cnltZW4sIGV2ZW4gYXMgdGhleSBoYXZlIG9mIHRoZSBKZXdzOgpXaG8gYm90aCBraWxsZWQgdGhlIExvcmQgSmVzdXMsIGFuZCB0aGVpciBvd24gcHJvcGhldHMsIGFuZCBoYXZlIHBlcnNlY3V0ZWQgdXM7IGFuZCB0aGV5IHBsZWFzZSBub3QgR29kLCBhbmQgYXJlIGNvbnRyYXJ5IHRvIGFsbCBtZW46CkZvcmJpZGRpbmcgdXMgdG8gc3BlYWsgdG8gdGhlIEdlbnRpbGVzIHRoYXQgdGhleSBtaWdodCBiZSBzYXZlZCwgdG8gZmlsbCB1cCB0aGVpciBzaW5zIGFsd2F5OiBmb3IgdGhlIHdyYXRoIGlzIGNvbWUgdXBvbiB0aGVtIHRvIHRoZSB1dHRlcm1vc3QuCkJ1dCB3ZSwgYnJldGhyZW4sIGJlaW5nIHRha2VuIGZyb20geW91IGZvciBhIHNob3J0IHRpbWUgaW4gcHJlc2VuY2UsIG5vdCBpbiBoZWFydCwgZW5kZWF2b3VyZWQgdGhlIG1vcmUgYWJ1bmRhbnRseSB0byBzZWUgeW91ciBmYWNlIHdpdGggZ3JlYXQgZGVzaXJlLgpXaGVyZWZvcmUgd2Ugd291bGQgaGF2ZSBjb21lIHVudG8geW91LCBldmVuIEkgUGF1bCwgb25jZSBhbmQgYWdhaW47IGJ1dCBTYXRhbiBoaW5kZXJlZCB1cy4KRm9yIHdoYXQgaXMgb3VyIGhvcGUsIG9yIGpveSwgb3IgY3Jvd24gb2YgcmVqb2ljaW5nPyBBcmUgbm90IGV2ZW4geWUgaW4gdGhlIHByZXNlbmNlIG9mIG91ciBMb3JkIEplc3VzIENocmlzdCBhdCBoaXMgY29taW5nPwpGb3IgeWUgYXJlIG91ciBnbG9yeSBhbmQgam95LgpXaGVyZWZvcmUgd2hlbiB3ZSBjb3VsZCBubyBsb25nZXIgZm9yYmVhciwgd2UgdGhvdWdodCBpdCBnb29kIHRvIGJlIGxlZnQgYXQgQXRoZW5zIGFsb25lOwpBbmQgc2VudCBUaW1vdGhldXMsIG91ciBicm90aGVyLCBhbmQgbWluaXN0ZXIgb2YgR29kLCBhbmQgb3VyIGZlbGxvd2xhYm91cmVyIGluIHRoZSBnb3NwZWwgb2YgQ2hyaXN0LCB0byBlc3RhYmxpc2ggeW91LCBhbmQgdG8gY29tZm9ydCB5b3UgY29uY2VybmluZyB5b3VyIGZhaXRoOgpUaGF0IG5vIG1hbiBzaG91bGQgYmUgbW92ZWQgYnkgdGhlc2UgYWZmbGljdGlvbnM6IGZvciB5b3Vyc2VsdmVzIGtub3cgdGhhdCB3ZSBhcmUgYXBwb2ludGVkIHRoZXJldW50by4KRm9yIHZlcmlseSwgd2hlbiB3ZSB3ZXJlIHdpdGggeW91LCB3ZSB0b2xkIHlvdSBiZWZvcmUgdGhhdCB3ZSBzaG91bGQgc3VmZmVyIHRyaWJ1bGF0aW9uOyBldmVuIGFzIGl0IGNhbWUgdG8gcGFzcywgYW5kIHllIGtub3cuCkZvciB0aGlzIGNhdXNlLCB3aGVuIEkgY291bGQgbm8gbG9uZ2VyIGZvcmJlYXIsIEkgc2VudCB0byBrbm93IHlvdXIgZmFpdGgsIGxlc3QgYnkgc29tZSBtZWFucyB0aGUgdGVtcHRlciBoYXZlIHRlbXB0ZWQgeW91LCBhbmQgb3VyIGxhYm91ciBiZSBpbiB2YWluLgpCdXQgbm93IHdoZW4gVGltb3RoZXVzIGNhbWUgZnJvbSB5b3UgdW50byB1cywgYW5kIGJyb3VnaHQgdXMgZ29vZCB0aWRpbmdzIG9mIHlvdXIgZmFpdGggYW5kIGNoYXJpdHksIGFuZCB0aGF0IHllIGhhdmUgZ29vZCByZW1lbWJyYW5jZSBvZiB1cyBhbHdheXMsIGRlc2lyaW5nIGdyZWF0bHkgdG8gc2VlIHVzLCBhcyB3ZSBhbHNvIHRvIHNlZSB5b3U6ClRoZXJlZm9yZSwgYnJldGhyZW4sIHdlIHdlcmUgY29tZm9ydGVkIG92ZXIgeW91IGluIGFsbCBvdXIgYWZmbGljdGlvbiBhbmQgZGlzdHJlc3MgYnkgeW91ciBmYWl0aDoKRm9yIG5vdyB3ZSBsaXZlLCBpZiB5ZSBzdGFuZCBmYXN0IGluIHRoZSBMb3JkLgpGb3Igd2hhdCB0aGFua3MgY2FuIHdlIHJlbmRlciB0byBHb2QgYWdhaW4gZm9yIHlvdSwgZm9yIGFsbCB0aGUgam95IHdoZXJld2l0aCB3ZSBqb3kgZm9yIHlvdXIgc2FrZXMgYmVmb3JlIG91ciBHb2Q7Ck5pZ2h0IGFuZCBkYXkgcHJheWluZyBleGNlZWRpbmdseSB0aGF0IHdlIG1pZ2h0IHNlZSB5b3VyIGZhY2UsIGFuZCBtaWdodCBwZXJmZWN0IHRoYXQgd2hpY2ggaXMgbGFja2luZyBpbiB5b3VyIGZhaXRoPwpOb3cgR29kIGhpbXNlbGYgYW5kIG91ciBGYXRoZXIsIGFuZCBvdXIgTG9yZCBKZXN1cyBDaHJpc3QsIGRpcmVjdCBvdXIgd2F5IHVudG8geW91LgpBbmQgdGhlIExvcmQgbWFrZSB5b3UgdG8gaW5jcmVhc2UgYW5kIGFib3VuZCBpbiBsb3ZlIG9uZSB0b3dhcmQgYW5vdGhlciwgYW5kIHRvd2FyZCBhbGwgbWVuLCBldmVuIGFzIHdlIGRvIHRvd2FyZCB5b3U6ClRvIHRoZSBlbmQgaGUgbWF5IHN0YWJsaXNoIHlvdXIgaGVhcnRzIHVuYmxhbWVhYmxlIGluIGhvbGluZXNzIGJlZm9yZSBHb2QsIGV2ZW4gb3VyIEZhdGhlciwgYXQgdGhlIGNvbWluZyBvZiBvdXIgTG9yZCBKZXN1cyBDaHJpc3Qgd2l0aCBhbGwgaGlzIHNhaW50cy4KRnVydGhlcm1vcmUgdGhlbiB3ZSBiZXNlZWNoIHlvdSwgYnJldGhyZW4sIGFuZCBleGhvcnQgeW91IGJ5IHRoZSBMb3JkIEplc3VzLCB0aGF0IGFzIHllIGhhdmUgcmVjZWl2ZWQgb2YgdXMgaG93IHllIG91Z2h0IHRvIHdhbGsgYW5kIHRvIHBsZWFzZSBHb2QsIHNvIHllIHdvdWxkIGFib3VuZCBtb3JlIGFuZCBtb3JlLgpGb3IgeWUga25vdyB3aGF0IGNvbW1hbmRtZW50cyB3ZSBnYXZlIHlvdSBieSB0aGUgTG9yZCBKZXN1cy4KRm9yIHRoaXMgaXMgdGhlIHdpbGwgb2YgR29kLCBldmVuIHlvdXIgc2FuY3RpZmljYXRpb24sIHRoYXQgeWUgc2hvdWxkIGFic3RhaW4gZnJvbSBmb3JuaWNhdGlvbjoKVGhhdCBldmVyeSBvbmUgb2YgeW91IHNob3VsZCBrbm93IGhvdyB0byBwb3NzZXNzIGhpcyB2ZXNzZWwgaW4gc2FuY3RpZmljYXRpb24gYW5kIGhvbm91cjsKTm90IGluIHRoZSBsdXN0IG9mIGNvbmN1cGlzY2VuY2UsIGV2ZW4gYXMgdGhlIEdlbnRpbGVzIHdoaWNoIGtub3cgbm90IEdvZDoKVGhhdCBubyBtYW4gZ28gYmV5b25kIGFuZCBkZWZyYXVkIGhpcyBicm90aGVyIGluIGFueSBtYXR0ZXI6IGJlY2F1c2UgdGhhdCB0aGUgTG9yZCBpcyB0aGUgYXZlbmdlciBvZiBhbGwgc3VjaCwgYXMgd2UgYWxzbyBoYXZlIGZvcmV3YXJuZWQgeW91IGFuZCB0ZXN0aWZpZWQuCkZvciBHb2QgaGF0aCBub3QgY2FsbGVkIHVzIHVudG8gdW5jbGVhbm5lc3MsIGJ1dCB1bnRvIGhvbGluZXNzLgpIZSB0aGVyZWZvcmUgdGhhdCBkZXNwaXNldGgsIGRlc3Bpc2V0aCBub3QgbWFuLCBidXQgR29kLCB3aG8gaGF0aCBhbHNvIGdpdmVuIHVudG8gdXMgaGlzIGhvbHkgU3Bpcml0LgpCdXQgYXMgdG91Y2hpbmcgYnJvdGhlcmx5IGxvdmUgeWUgbmVlZCBub3QgdGhhdCBJIHdyaXRlIHVudG8geW91OiBmb3IgeWUgeW91cnNlbHZlcyBhcmUgdGF1Z2h0IG9mIEdvZCB0byBsb3ZlIG9uZSBhbm90aGVyLgpBbmQgaW5kZWVkIHllIGRvIGl0IHRvd2FyZCBhbGwgdGhlIGJyZXRocmVuIHdoaWNoIGFyZSBpbiBhbGwgTWFjZWRvbmlhOiBidXQgd2UgYmVzZWVjaCB5b3UsIGJyZXRocmVuLCB0aGF0IHllIGluY3JlYXNlIG1vcmUgYW5kIG1vcmU7CkFuZCB0aGF0IHllIHN0dWR5IHRvIGJlIHF1aWV0LCBhbmQgdG8gZG8geW91ciBvd24gYnVzaW5lc3MsIGFuZCB0byB3b3JrIHdpdGggeW91ciBvd24gaGFuZHMsIGFzIHdlIGNvbW1hbmRlZCB5b3U7ClRoYXQgeWUgbWF5IHdhbGsgaG9uZXN0bHkgdG93YXJkIHRoZW0gdGhhdCBhcmUgd2l0aG91dCwgYW5kIHRoYXQgeWUgbWF5IGhhdmUgbGFjayBvZiBub3RoaW5nLgpCdXQgSSB3b3VsZCBub3QgaGF2ZSB5b3UgdG8gYmUgaWdub3JhbnQsIGJyZXRocmVuLCBjb25jZXJuaW5nIHRoZW0gd2hpY2ggYXJlIGFzbGVlcCwgdGhhdCB5ZSBzb3Jyb3cgbm90LCBldmVuIGFzIG90aGVycyB3aGljaCBoYXZlIG5vIGhvcGUuCkZvciBpZiB3ZSBiZWxpZXZlIHRoYXQgSmVzdXMgZGllZCBhbmQgcm9zZSBhZ2FpbiwgZXZlbiBzbyB0aGVtIGFsc28gd2hpY2ggc2xlZXAgaW4gSmVzdXMgd2lsbCBHb2QgYnJpbmcgd2l0aCBoaW0uCkZvciB0aGlzIHdlIHNheSB1bnRvIHlvdSBieSB0aGUgd29yZCBvZiB0aGUgTG9yZCwgdGhhdCB3ZSB3aGljaCBhcmUgYWxpdmUgYW5kIHJlbWFpbiB1bnRvIHRoZSBjb21pbmcgb2YgdGhlIExvcmQgc2hhbGwgbm90IHByZXZlbnQgdGhlbSB3aGljaCBhcmUgYXNsZWVwLgpGb3IgdGhlIExvcmQgaGltc2VsZiBzaGFsbCBkZXNjZW5kIGZyb20gaGVhdmVuIHdpdGggYSBzaG91dCwgd2l0aCB0aGUgdm9pY2Ugb2YgdGhlIGFyY2hhbmdlbCwgYW5kIHdpdGggdGhlIHRydW1wIG9mIEdvZDogYW5kIHRoZSBkZWFkIGluIENocmlzdCBzaGFsbCByaXNlIGZpcnN0OgpUaGVuIHdlIHdoaWNoIGFyZSBhbGl2ZSBhbmQgcmVtYWluIHNoYWxsIGJlIGNhdWdodCB1cCB0b2dldGhlciB3aXRoIHRoZW0gaW4gdGhlIGNsb3VkcywgdG8gbWVldCB0aGUgTG9yZCBpbiB0aGUgYWlyOiBhbmQgc28gc2hhbGwgd2UgZXZlciBiZSB3aXRoIHRoZSBMb3JkLgpXaGVyZWZvcmUgY29tZm9ydCBvbmUgYW5vdGhlciB3aXRoIHRoZXNlIHdvcmRzLgpCdXQgb2YgdGhlIHRpbWVzIGFuZCB0aGUgc2Vhc29ucywgYnJldGhyZW4sIHllIGhhdmUgbm8gbmVlZCB0aGF0IEkgd3JpdGUgdW50byB5b3UuCkZvciB5b3Vyc2VsdmVzIGtub3cgcGVyZmVjdGx5IHRoYXQgdGhlIGRheSBvZiB0aGUgTG9yZCBzbyBjb21ldGggYXMgYSB0aGllZiBpbiB0aGUgbmlnaHQuCkZvciB3aGVuIHRoZXkgc2hhbGwgc2F5LCBQZWFjZSBhbmQgc2FmZXR5OyB0aGVuIHN1ZGRlbiBkZXN0cnVjdGlvbiBjb21ldGggdXBvbiB0aGVtLCBhcyB0cmF2YWlsIHVwb24gYSB3b21hbiB3aXRoIGNoaWxkOyBhbmQgdGhleSBzaGFsbCBub3QgZXNjYXBlLgpCdXQgeWUsIGJyZXRocmVuLCBhcmUgbm90IGluIGRhcmtuZXNzLCB0aGF0IHRoYXQgZGF5IHNob3VsZCBvdmVydGFrZSB5b3UgYXMgYSB0aGllZi4KWWUgYXJlIGFsbCB0aGUgY2hpbGRyZW4gb2YgbGlnaHQsIGFuZCB0aGUgY2hpbGRyZW4gb2YgdGhlIGRheTogd2UgYXJlIG5vdCBvZiB0aGUgbmlnaHQsIG5vciBvZiBkYXJrbmVzcy4KVGhlcmVmb3JlIGxldCB1cyBub3Qgc2xlZXAsIGFzIGRvIG90aGVyczsgYnV0IGxldCB1cyB3YXRjaCBhbmQgYmUgc29iZXIuCkZvciB0aGV5IHRoYXQgc2xlZXAgc2xlZXAgaW4gdGhlIG5pZ2h0OyBhbmQgdGhleSB0aGF0IGJlIGRydW5rZW4gYXJlIGRydW5rZW4gaW4gdGhlIG5pZ2h0LgpCdXQgbGV0IHVzLCB3aG8gYXJlIG9mIHRoZSBkYXksIGJlIHNvYmVyLCBwdXR0aW5nIG9uIHRoZSBicmVhc3RwbGF0ZSBvZiBmYWl0aCBhbmQgbG92ZTsgYW5kIGZvciBhbiBoZWxtZXQsIHRoZSBob3BlIG9mIHNhbHZhdGlvbi4KRm9yIEdvZCBoYXRoIG5vdCBhcHBvaW50ZWQgdXMgdG8gd3JhdGgsIGJ1dCB0byBvYnRhaW4gc2FsdmF0aW9uIGJ5IG91ciBMb3JkIEplc3VzIENocmlzdCwKV2hvIGRpZWQgZm9yIHVzLCB0aGF0LCB3aGV0aGVyIHdlIHdha2Ugb3Igc2xlZXAsIHdlIHNob3VsZCBsaXZlIHRvZ2V0aGVyIHdpdGggaGltLgpXaGVyZWZvcmUgY29tZm9ydCB5b3Vyc2VsdmVzIHRvZ2V0aGVyLCBhbmQgZWRpZnkgb25lIGFub3RoZXIsIGV2ZW4gYXMgYWxzbyB5ZSBkby4KQW5kIHdlIGJlc2VlY2ggeW91LCBicmV0aHJlbiwgdG8ga25vdyB0aGVtIHdoaWNoIGxhYm91ciBhbW9uZyB5b3UsIGFuZCBhcmUgb3ZlciB5b3UgaW4gdGhlIExvcmQsIGFuZCBhZG1vbmlzaCB5b3U7CkFuZCB0byBlc3RlZW0gdGhlbSB2ZXJ5IGhpZ2hseSBpbiBsb3ZlIGZvciB0aGVpciB3b3JrJ3Mgc2FrZS4gQW5kIGJlIGF0IHBlYWNlIGFtb25nIHlvdXJzZWx2ZXMuCk5vdyB3ZSBleGhvcnQgeW91LCBicmV0aHJlbiwgd2FybiB0aGVtIHRoYXQgYXJlIHVucnVseSwgY29tZm9ydCB0aGUgZmVlYmxlbWluZGVkLCBzdXBwb3J0IHRoZSB3ZWFrLCBiZSBwYXRpZW50IHRvd2FyZCBhbGwgbWVuLgpTZWUgdGhhdCBub25lIHJlbmRlciBldmlsIGZvciBldmlsIHVudG8gYW55IG1hbjsgYnV0IGV2ZXIgZm9sbG93IHRoYXQgd2hpY2ggaXMgZ29vZCwgYm90aCBhbW9uZyB5b3Vyc2VsdmVzLCBhbmQgdG8gYWxsIG1lbi4KUmVqb2ljZSBldmVybW9yZS4KUHJheSB3aXRob3V0IGNlYXNpbmcuCkluIGV2ZXJ5IHRoaW5nIGdpdmUgdGhhbmtzOiBmb3IgdGhpcyBpcyB0aGUgd2lsbCBvZiBHb2QgaW4gQ2hyaXN0IEplc3VzIGNvbmNlcm5pbmcgeW91LgpRdWVuY2ggbm90IHRoZSBTcGlyaXQuCkRlc3Bpc2Ugbm90IHByb3BoZXN5aW5ncy4KUHJvdmUgYWxsIHRoaW5nczsgaG9sZCBmYXN0IHRoYXQgd2hpY2ggaXMgZ29vZC4KQWJzdGFpbiBmcm9tIGFsbCBhcHBlYXJhbmNlIG9mIGV2aWwuCkFuZCB0aGUgdmVyeSBHb2Qgb2YgcGVhY2Ugc2FuY3RpZnkgeW91IHdob2xseTsgYW5kIEkgcHJheSBHb2QgeW91ciB3aG9sZSBzcGlyaXQgYW5kIHNvdWwgYW5kIGJvZHkgYmUgcHJlc2VydmVkIGJsYW1lbGVzcyB1bnRvIHRoZSBjb21pbmcgb2Ygb3VyIExvcmQgSmVzdXMgQ2hyaXN0LgpGYWl0aGZ1bCBpcyBoZSB0aGF0IGNhbGxldGggeW91LCB3aG8gYWxzbyB3aWxsIGRvIGl0LgpCcmV0aHJlbiwgcHJheSBmb3IgdXMuCkdyZWV0IGFsbCB0aGUgYnJldGhyZW4gd2l0aCBhbiBob2x5IGtpc3MuCkkgY2hhcmdlIHlvdSBieSB0aGUgTG9yZCB0aGF0IHRoaXMgZXBpc3RsZSBiZSByZWFkIHVudG8gYWxsIHRoZSBob2x5IGJyZXRocmVuLgpUaGUgZ3JhY2Ugb2Ygb3VyIExvcmQgSmVzdXMgQ2hyaXN0IGJlIHdpdGggeW91LiBBbWVuLgpQYXVsLCBhbmQgU2lsdmFudXMsIGFuZCBUaW1vdGhldXMsIHVudG8gdGhlIGNodXJjaCBvZiB0aGUgVGhlc3NhbG9uaWFucyBpbiBHb2Qgb3VyIEZhdGhlciBhbmQgdGhlIExvcmQgSmVzdXMgQ2hyaXN0OgpHcmFjZSB1bnRvIHlvdSwgYW5kIHBlYWNlLCBmcm9tIEdvZCBvdXIgRmF0aGVyIGFuZCB0aGUgTG9yZCBKZXN1cyBDaHJpc3QuCldlIGFyZSBib3VuZCB0byB0aGFuayBHb2QgYWx3YXlzIGZvciB5b3UsIGJyZXRocmVuLCBhcyBpdCBpcyBtZWV0LCBiZWNhdXNlIHRoYXQgeW91ciBmYWl0aCBncm93ZXRoIGV4Y2VlZGluZ2x5LCBhbmQgdGhlIGNoYXJpdHkgb2YgZXZlcnkgb25lIG9mIHlvdSBhbGwgdG93YXJkIGVhY2ggb3RoZXIgYWJvdW5kZXRoOwpTbyB0aGF0IHdlIG91cnNlbHZlcyBnbG9yeSBpbiB5b3UgaW4gdGhlIGNodXJjaGVzIG9mIEdvZCBmb3IgeW91ciBwYXRpZW5jZSBhbmQgZmFpdGggaW4gYWxsIHlvdXIgcGVyc2VjdXRpb25zIGFuZCB0cmlidWxhdGlvbnMgdGhhdCB5ZSBlbmR1cmU6CldoaWNoIGlzIGEgbWFuaWZlc3QgdG9rZW4gb2YgdGhlIHJpZ2h0ZW91cyBqdWRnbWVudCBvZiBHb2QsIHRoYXQgeWUgbWF5IGJlIGNvdW50ZWQgd29ydGh5IG9mIHRoZSBraW5nZG9tIG9mIEdvZCwgZm9yIHdoaWNoIHllIGFsc28gc3VmZmVyOgpTZWVpbmcgaXQgaXMgYSByaWdodGVvdXMgdGhpbmcgd2l0aCBHb2QgdG8gcmVjb21wZW5zZSB0cmlidWxhdGlvbiB0byB0aGVtIHRoYXQgdHJvdWJsZSB5b3U7CkFuZCB0byB5b3Ugd2hvIGFyZSB0cm91YmxlZCByZXN0IHdpdGggdXMsIHdoZW4gdGhlIExvcmQgSmVzdXMgc2hhbGwgYmUgcmV2ZWFsZWQgZnJvbSBoZWF2ZW4gd2l0aCBoaXMgbWlnaHR5IGFuZ2VscywKSW4gZmxhbWluZyBmaXJlIHRha2luZyB2ZW5nZWFuY2Ugb24gdGhlbSB0aGF0IGtub3cgbm90IEdvZCwgYW5kIHRoYXQgb2JleSBub3QgdGhlIGdvc3BlbCBvZiBvdXIgTG9yZCBKZXN1cyBDaHJpc3Q6CldobyBzaGFsbCBiZSBwdW5pc2hlZCB3aXRoIGV2ZXJsYXN0aW5nIGRlc3RydWN0aW9uIGZyb20gdGhlIHByZXNlbmNlIG9mIHRoZSBMb3JkLCBhbmQgZnJvbSB0aGUgZ2xvcnkgb2YgaGlzIHBvd2VyOwpXaGVuIGhlIHNoYWxsIGNvbWUgdG8gYmUgZ2xvcmlmaWVkIGluIGhpcyBzYWludHMsIGFuZCB0byBiZSBhZG1pcmVkIGluIGFsbCB0aGVtIHRoYXQgYmVsaWV2ZSAoYmVjYXVzZSBvdXIgdGVzdGltb255IGFtb25nIHlvdSB3YXMgYmVsaWV2ZWQpIGluIHRoYXQgZGF5LgpXaGVyZWZvcmUgYWxzbyB3ZSBwcmF5IGFsd2F5cyBmb3IgeW91LCB0aGF0IG91ciBHb2Qgd291bGQgY291bnQgeW91IHdvcnRoeSBvZiB0aGlzIGNhbGxpbmcsIGFuZCBmdWxmaWwgYWxsIHRoZSBnb29kIHBsZWFzdXJlIG9mIGhpcyBnb29kbmVzcywgYW5kIHRoZSB3b3JrIG9mIGZhaXRoIHdpdGggcG93ZXI6ClRoYXQgdGhlIG5hbWUgb2Ygb3VyIExvcmQgSmVzdXMgQ2hyaXN0IG1heSBiZSBnbG9yaWZpZWQgaW4geW91LCBhbmQgeWUgaW4gaGltLCBhY2NvcmRpbmcgdG8gdGhlIGdyYWNlIG9mIG91ciBHb2QgYW5kIHRoZSBMb3JkIEplc3VzIENocmlzdC4KTm93IHdlIGJlc2VlY2ggeW91LCBicmV0aHJlbiwgYnkgdGhlIGNvbWluZyBvZiBvdXIgTG9yZCBKZXN1cyBDaHJpc3QsIGFuZCBieSBvdXIgZ2F0aGVyaW5nIHRvZ2V0aGVyIHVudG8gaGltLApUaGF0IHllIGJlIG5vdCBzb29uIHNoYWtlbiBpbiBtaW5kLCBvciBiZSB0cm91YmxlZCwgbmVpdGhlciBieSBzcGlyaXQsIG5vciBieSB3b3JkLCBub3IgYnkgbGV0dGVyIGFzIGZyb20gdXMsIGFzIHRoYXQgdGhlIGRheSBvZiBDaHJpc3QgaXMgYXQgaGFuZC4KTGV0IG5vIG1hbiBkZWNlaXZlIHlvdSBieSBhbnkgbWVhbnM6IGZvciB0aGF0IGRheSBzaGFsbCBub3QgY29tZSwgZXhjZXB0IHRoZXJlIGNvbWUgYSBmYWxsaW5nIGF3YXkgZmlyc3QsIGFuZCB0aGF0IG1hbiBvZiBzaW4gYmUgcmV2ZWFsZWQsIHRoZSBzb24gb2YgcGVyZGl0aW9uOwpXaG8gb3Bwb3NldGggYW5kIGV4YWx0ZXRoIGhpbXNlbGYgYWJvdmUgYWxsIHRoYXQgaXMgY2FsbGVkIEdvZCwgb3IgdGhhdCBpcyB3b3JzaGlwcGVkOyBzbyB0aGF0IGhlIGFzIEdvZCBzaXR0ZXRoIGluIHRoZSB0ZW1wbGUgb2YgR29kLCBzaGV3aW5nIGhpbXNlbGYgdGhhdCBoZSBpcyBHb2QuClJlbWVtYmVyIHllIG5vdCwgdGhhdCwgd2hlbiBJIHdhcyB5ZXQgd2l0aCB5b3UsIEkgdG9sZCB5b3UgdGhlc2UgdGhpbmdzPwpBbmQgbm93IHllIGtub3cgd2hhdCB3aXRoaG9sZGV0aCB0aGF0IGhlIG1pZ2h0IGJlIHJldmVhbGVkIGluIGhpcyB0aW1lLgpGb3IgdGhlIG15c3Rlcnkgb2YgaW5pcXVpdHkgZG90aCBhbHJlYWR5IHdvcms6IG9ubHkgaGUgd2hvIG5vdyBsZXR0ZXRoIHdpbGwgbGV0LCB1bnRpbCBoZSBiZSB0YWtlbiBvdXQgb2YgdGhlIHdheS4KQW5kIHRoZW4gc2hhbGwgdGhhdCBXaWNrZWQgYmUgcmV2ZWFsZWQsIHdob20gdGhlIExvcmQgc2hhbGwgY29uc3VtZSB3aXRoIHRoZSBzcGlyaXQgb2YgaGlzIG1vdXRoLCBhbmQgc2hhbGwgZGVzdHJveSB3aXRoIHRoZSBicmlnaHRuZXNzIG9mIGhpcyBjb21pbmc6CkV2ZW4gaGltLCB3aG9zZSBjb21pbmcgaXMgYWZ0ZXIgdGhlIHdvcmtpbmcgb2YgU2F0YW4gd2l0aCBhbGwgcG93ZXIgYW5kIHNpZ25zIGFuZCBseWluZyB3b25kZXJzLApBbmQgd2l0aCBhbGwgZGVjZWl2YWJsZW5lc3Mgb2YgdW5yaWdodGVvdXNuZXNzIGluIHRoZW0gdGhhdCBwZXJpc2g7IGJlY2F1c2UgdGhleSByZWNlaXZlZCBub3QgdGhlIGxvdmUgb2YgdGhlIHRydXRoLCB0aGF0IHRoZXkgbWlnaHQgYmUgc2F2ZWQuCkFuZCBmb3IgdGhpcyBjYXVzZSBHb2Qgc2hhbGwgc2VuZCB0aGVtIHN0cm9uZyBkZWx1c2lvbiwgdGhhdCB0aGV5IHNob3VsZCBiZWxpZXZlIGEgbGllOgpUaGF0IHRoZXkgYWxsIG1pZ2h0IGJlIGRhbW5lZCB3aG8gYmVsaWV2ZWQgbm90IHRoZSB0cnV0aCwgYnV0IGhhZCBwbGVhc3VyZSBpbiB1bnJpZ2h0ZW91c25lc3MuCkJ1dCB3ZSBhcmUgYm91bmQgdG8gZ2l2ZSB0aGFua3MgYWx3YXkgdG8gR29kIGZvciB5b3UsIGJyZXRocmVuIGJlbG92ZWQgb2YgdGhlIExvcmQsIGJlY2F1c2UgR29kIGhhdGggZnJvbSB0aGUgYmVnaW5uaW5nIGNob3NlbiB5b3UgdG8gc2FsdmF0aW9uIHRocm91Z2ggc2FuY3RpZmljYXRpb24gb2YgdGhlIFNwaXJpdCBhbmQgYmVsaWVmIG9mIHRoZSB0cnV0aDoKV2hlcmV1bnRvIGhlIGNhbGxlZCB5b3UgYnkgb3VyIGdvc3BlbCwgdG8gdGhlIG9idGFpbmluZyBvZiB0aGUgZ2xvcnkgb2Ygb3VyIExvcmQgSmVzdXMgQ2hyaXN0LgpUaGVyZWZvcmUsIGJyZXRocmVuLCBzdGFuZCBmYXN0LCBhbmQgaG9sZCB0aGUgdHJhZGl0aW9ucyB3aGljaCB5ZSBoYXZlIGJlZW4gdGF1Z2h0LCB3aGV0aGVyIGJ5IHdvcmQsIG9yIG91ciBlcGlzdGxlLgpOb3cgb3VyIExvcmQgSmVzdXMgQ2hyaXN0IGhpbXNlbGYsIGFuZCBHb2QsIGV2ZW4gb3VyIEZhdGhlciwgd2hpY2ggaGF0aCBsb3ZlZCB1cywgYW5kIGhhdGggZ2l2ZW4gdXMgZXZlcmxhc3RpbmcgY29uc29sYXRpb24gYW5kIGdvb2QgaG9wZSB0aHJvdWdoIGdyYWNlLApDb21mb3J0IHlvdXIgaGVhcnRzLCBhbmQgc3RhYmxpc2ggeW91IGluIGV2ZXJ5IGdvb2Qgd29yZCBhbmQgd29yay4KRmluYWxseSwgYnJldGhyZW4sIHByYXkgZm9yIHVzLCB0aGF0IHRoZSB3b3JkIG9mIHRoZSBMb3JkIG1heSBoYXZlIGZyZWUgY291cnNlLCBhbmQgYmUgZ2xvcmlmaWVkLCBldmVuIGFzIGl0IGlzIHdpdGggeW91OgpBbmQgdGhhdCB3ZSBtYXkgYmUgZGVsaXZlcmVkIGZyb20gdW5yZWFzb25hYmxlIGFuZCB3aWNrZWQgbWVuOiBmb3IgYWxsIG1lbiBoYXZlIG5vdCBmYWl0aC4KQnV0IHRoZSBMb3JkIGlzIGZhaXRoZnVsLCB3aG8gc2hhbGwgc3RhYmxpc2ggeW91LCBhbmQga2VlcCB5b3UgZnJvbSBldmlsLgpBbmQgd2UgaGF2ZSBjb25maWRlbmNlIGluIHRoZSBMb3JkIHRvdWNoaW5nIHlvdSwgdGhhdCB5ZSBib3RoIGRvIGFuZCB3aWxsIGRvIHRoZSB0aGluZ3Mgd2hpY2ggd2UgY29tbWFuZCB5b3UuCkFuZCB0aGUgTG9yZCBkaXJlY3QgeW91ciBoZWFydHMgaW50byB0aGUgbG92ZSBvZiBHb2QsIGFuZCBpbnRvIHRoZSBwYXRpZW50IHdhaXRpbmcgZm9yIENocmlzdC4KTm93IHdlIGNvbW1hbmQgeW91LCBicmV0aHJlbiwgaW4gdGhlIG5hbWUgb2Ygb3VyIExvcmQgSmVzdXMgQ2hyaXN0LCB0aGF0IHllIHdpdGhkcmF3IHlvdXJzZWx2ZXMgZnJvbSBldmVyeSBicm90aGVyIHRoYXQgd2Fsa2V0aCBkaXNvcmRlcmx5LCBhbmQgbm90IGFmdGVyIHRoZSB0cmFkaXRpb24gd2hpY2ggaGUgcmVjZWl2ZWQgb2YgdXMuCkZvciB5b3Vyc2VsdmVzIGtub3cgaG93IHllIG91Z2h0IHRvIGZvbGxvdyB1czogZm9yIHdlIGJlaGF2ZWQgbm90IG91cnNlbHZlcyBkaXNvcmRlcmx5IGFtb25nIHlvdTsKTmVpdGhlciBkaWQgd2UgZWF0IGFueSBtYW4ncyBicmVhZCBmb3Igbm91Z2h0OyBidXQgd3JvdWdodCB3aXRoIGxhYm91ciBhbmQgdHJhdmFpbCBuaWdodCBhbmQgZGF5LCB0aGF0IHdlIG1pZ2h0IG5vdCBiZSBjaGFyZ2VhYmxlIHRvIGFueSBvZiB5b3U6Ck5vdCBiZWNhdXNlIHdlIGhhdmUgbm90IHBvd2VyLCBidXQgdG8gbWFrZSBvdXJzZWx2ZXMgYW4gZW5zYW1wbGUgdW50byB5b3UgdG8gZm9sbG93IHVzLgpGb3IgZXZlbiB3aGVuIHdlIHdlcmUgd2l0aCB5b3UsIHRoaXMgd2UgY29tbWFuZGVkIHlvdSwgdGhhdCBpZiBhbnkgd291bGQgbm90IHdvcmssIG5laXRoZXIgc2hvdWxkIGhlIGVhdC4KRm9yIHdlIGhlYXIgdGhhdCB0aGVyZSBhcmUgc29tZSB3aGljaCB3YWxrIGFtb25nIHlvdSBkaXNvcmRlcmx5LCB3b3JraW5nIG5vdCBhdCBhbGwsIGJ1dCBhcmUgYnVzeWJvZGllcy4KTm93IHRoZW0gdGhhdCBhcmUgc3VjaCB3ZSBjb21tYW5kIGFuZCBleGhvcnQgYnkgb3VyIExvcmQgSmVzdXMgQ2hyaXN0LCB0aGF0IHdpdGggcXVpZXRuZXNzIHRoZXkgd29yaywgYW5kIGVhdCB0aGVpciBvd24gYnJlYWQuCkJ1dCB5ZSwgYnJldGhyZW4sIGJlIG5vdCB3ZWFyeSBpbiB3ZWxsIGRvaW5nLgpBbmQgaWYgYW55IG1hbiBvYmV5IG5vdCBvdXIgd29yZCBieSB0aGlzIGVwaXN0bGUsIG5vdGUgdGhhdCBtYW4sIGFuZCBoYXZlIG5vIGNvbXBhbnkgd2l0aCBoaW0sIHRoYXQgaGUgbWF5IGJlIGFzaGFtZWQuCllldCBjb3VudCBoaW0gbm90IGFzIGFuIGVuZW15LCBidXQgYWRtb25pc2ggaGltIGFzIGEgYnJvdGhlci4KTm93IHRoZSBMb3JkIG9mIHBlYWNlIGhpbXNlbGYgZ2l2ZSB5b3UgcGVhY2UgYWx3YXlzIGJ5IGFsbCBtZWFucy4gVGhlIExvcmQgYmUgd2l0aCB5b3UgYWxsLgpUaGUgc2FsdXRhdGlvbiBvZiBQYXVsIHdpdGggbWluZSBvd24gaGFuZCwgd2hpY2ggaXMgdGhlIHRva2VuIGluIGV2ZXJ5IGVwaXN0bGU6IHNvIEkgd3JpdGUuClRoZSBncmFjZSBvZiBvdXIgTG9yZCBKZXN1cyBDaHJpc3QgYmUgd2l0aCB5b3UgYWxsLiBBbWVuLgpQYXVsLCBhbiBhcG9zdGxlIG9mIEplc3VzIENocmlzdCBieSB0aGUgY29tbWFuZG1lbnQgb2YgR29kIG91ciBTYXZpb3VyLCBhbmQgTG9yZCBKZXN1cyBDaHJpc3QsIFt3aGljaCBpc10gb3VyIGhvcGU7ClVudG8gVGltb3RoeSwgW215XSBvd24gc29uIGluIHRoZSBmYWl0aDogR3JhY2UsIG1lcmN5LCBbYW5kXSBwZWFjZSwgZnJvbSBHb2Qgb3VyIEZhdGhlciBhbmQgSmVzdXMgQ2hyaXN0IG91ciBMb3JkLgpBcyBJIGJlc291Z2h0IHRoZWUgdG8gYWJpZGUgc3RpbGwgYXQgRXBoZXN1cywgd2hlbiBJIHdlbnQgaW50byBNYWNlZG9uaWEsIHRoYXQgdGhvdSBtaWdodGVzdCBjaGFyZ2Ugc29tZSB0aGF0IHRoZXkgdGVhY2ggbm8gb3RoZXIgZG9jdHJpbmUsCk5laXRoZXIgZ2l2ZSBoZWVkIHRvIGZhYmxlcyBhbmQgZW5kbGVzcyBnZW5lYWxvZ2llcywgd2hpY2ggbWluaXN0ZXIgcXVlc3Rpb25zLCByYXRoZXIgdGhhbiBnb2RseSBlZGlmeWluZyB3aGljaCBpcyBpbiBmYWl0aDogW3NvIGRvXS4KTm93IHRoZSBlbmQgb2YgdGhlIGNvbW1hbmRtZW50IGlzIGNoYXJpdHkgb3V0IG9mIGEgcHVyZSBoZWFydCwgYW5kIFtvZl0gYSBnb29kIGNvbnNjaWVuY2UsIGFuZCBbb2ZdIGZhaXRoIHVuZmVpZ25lZDoKRnJvbSB3aGljaCBzb21lIGhhdmluZyBzd2VydmVkIGhhdmUgdHVybmVkIGFzaWRlIHVudG8gdmFpbiBqYW5nbGluZzsKRGVzaXJpbmcgdG8gYmUgdGVhY2hlcnMgb2YgdGhlIGxhdzsgdW5kZXJzdGFuZGluZyBuZWl0aGVyIHdoYXQgdGhleSBzYXksIG5vciB3aGVyZW9mIHRoZXkgYWZmaXJtLgpCdXQgd2Uga25vdyB0aGF0IHRoZSBsYXcgW2lzXSBnb29kLCBpZiBhIG1hbiB1c2UgaXQgbGF3ZnVsbHk7Cktub3dpbmcgdGhpcywgdGhhdCB0aGUgbGF3IGlzIG5vdCBtYWRlIGZvciBhIHJpZ2h0ZW91cyBtYW4sIGJ1dCBmb3IgdGhlIGxhd2xlc3MgYW5kIGRpc29iZWRpZW50LCBmb3IgdGhlIHVuZ29kbHkgYW5kIGZvciBzaW5uZXJzLCBmb3IgdW5ob2x5IGFuZCBwcm9mYW5lLCBmb3IgbXVyZGVyZXJzIG9mIGZhdGhlcnMgYW5kIG11cmRlcmVycyBvZiBtb3RoZXJzLCBmb3IgbWFuc2xheWVycywKRm9yIHdob3JlbW9uZ2VycywgZm9yIHRoZW0gdGhhdCBkZWZpbGUgdGhlbXNlbHZlcyB3aXRoIG1hbmtpbmQsIGZvciBtZW5zdGVhbGVycywgZm9yIGxpYXJzLCBmb3IgcGVyanVyZWQgcGVyc29ucywgYW5kIGlmIHRoZXJlIGJlIGFueSBvdGhlciB0aGluZyB0aGF0IGlzIGNvbnRyYXJ5IHRvIHNvdW5kIGRvY3RyaW5lOwpBY2NvcmRpbmcgdG8gdGhlIGdsb3Jpb3VzIGdvc3BlbCBvZiB0aGUgYmxlc3NlZCBHb2QsIHdoaWNoIHdhcyBjb21taXR0ZWQgdG8gbXkgdHJ1c3QuCkFuZCBJIHRoYW5rIENocmlzdCBKZXN1cyBvdXIgTG9yZCwgd2hvIGhhdGggZW5hYmxlZCBtZSwgZm9yIHRoYXQgaGUgY291bnRlZCBtZSBmYWl0aGZ1bCwgcHV0dGluZyBtZSBpbnRvIHRoZSBtaW5pc3RyeTsKV2hvIHdhcyBiZWZvcmUgYSBibGFzcGhlbWVyLCBhbmQgYSBwZXJzZWN1dG9yLCBhbmQgaW5qdXJpb3VzOiBidXQgSSBvYnRhaW5lZCBtZXJjeSwgYmVjYXVzZSBJIGRpZCBbaXRdIGlnbm9yYW50bHkgaW4gdW5iZWxpZWYuCkFuZCB0aGUgZ3JhY2Ugb2Ygb3VyIExvcmQgd2FzIGV4Y2VlZGluZyBhYnVuZGFudCB3aXRoIGZhaXRoIGFuZCBsb3ZlIHdoaWNoIGlzIGluIENocmlzdCBKZXN1cy4KVGhpcyBbaXNdIGEgZmFpdGhmdWwgc2F5aW5nLCBhbmQgd29ydGh5IG9mIGFsbCBhY2NlcHRhdGlvbiwgdGhhdCBDaHJpc3QgSmVzdXMgY2FtZSBpbnRvIHRoZSB3b3JsZCB0byBzYXZlIHNpbm5lcnM7IG9mIHdob20gSSBhbSBjaGllZi4KSG93YmVpdCBmb3IgdGhpcyBjYXVzZSBJIG9idGFpbmVkIG1lcmN5LCB0aGF0IGluIG1lIGZpcnN0IEplc3VzIENocmlzdCBtaWdodCBzaG93IGZvcnRoIGFsbCBsb25nc3VmZmVyaW5nLCBmb3IgYSBwYXR0ZXJuIHRvIHRoZW0gd2hpY2ggc2hvdWxkIGhlcmVhZnRlciBiZWxpZXZlIG9uIGhpbSB0byBsaWZlIGV2ZXJsYXN0aW5nLgpOb3cgdW50byB0aGUgS2luZyBldGVybmFsLCBpbW1vcnRhbCwgaW52aXNpYmxlLCB0aGUgb25seSB3aXNlIEdvZCwgW2JlXSBob25vdXIgYW5kIGdsb3J5IGZvciBldmVyIGFuZCBldmVyLiBBbWVuLgpUaGlzIGNoYXJnZSBJIGNvbW1pdCB1bnRvIHRoZWUsIHNvbiBUaW1vdGh5LCBhY2NvcmRpbmcgdG8gdGhlIHByb3BoZWNpZXMgd2hpY2ggd2VudCBiZWZvcmUgb24gdGhlZSwgdGhhdCB0aG91IGJ5IHRoZW0gbWlnaHRlc3Qgd2FyIGEgZ29vZCB3YXJmYXJlOwpIb2xkaW5nIGZhaXRoLCBhbmQgYSBnb29kIGNvbnNjaWVuY2U7IHdoaWNoIHNvbWUgaGF2aW5nIHB1dCBhd2F5IGNvbmNlcm5pbmcgZmFpdGggaGF2ZSBtYWRlIHNoaXB3cmVjazoKT2Ygd2hvbSBpcyBIeW1lbmFldXMgYW5kIEFsZXhhbmRlcjsgd2hvbSBJIGhhdmUgZGVsaXZlcmVkIHVudG8gU2F0YW4sIHRoYXQgdGhleSBtYXkgbGVhcm4gbm90IHRvIGJsYXNwaGVtZS4KSSBleGhvcnQgdGhlcmVmb3JlLCB0aGF0LCBmaXJzdCBvZiBhbGwsIHN1cHBsaWNhdGlvbnMsIHByYXllcnMsIGludGVyY2Vzc2lvbnMsIFthbmRdIGdpdmluZyBvZiB0aGFua3MsIGJlIG1hZGUgZm9yIGFsbCBtZW47CkZvciBraW5ncywgYW5kIFtmb3JdIGFsbCB0aGF0IGFyZSBpbiBhdXRob3JpdHk7IHRoYXQgd2UgbWF5IGxlYWQgYSBxdWlldCBhbmQgcGVhY2VhYmxlIGxpZmUgaW4gYWxsIGdvZGxpbmVzcyBhbmQgaG9uZXN0eS4KRm9yIHRoaXMgW2lzXSBnb29kIGFuZCBhY2NlcHRhYmxlIGluIHRoZSBzaWdodCBvZiBHb2Qgb3VyIFNhdmlvdXI7CldobyB3aWxsIGhhdmUgYWxsIG1lbiB0byBiZSBzYXZlZCwgYW5kIHRvIGNvbWUgdW50byB0aGUga25vd2xlZGdlIG9mIHRoZSB0cnV0aC4KRm9yIFt0aGVyZSBpc10gb25lIEdvZCwgYW5kIG9uZSBtZWRpYXRvciBiZXR3ZWVuIEdvZCBhbmQgbWVuLCB0aGUgbWFuIENocmlzdCBKZXN1czsKV2hvIGdhdmUgaGltc2VsZiBhIHJhbnNvbSBmb3IgYWxsLCB0byBiZSB0ZXN0aWZpZWQgaW4gZHVlIHRpbWUuCldoZXJldW50byBJIGFtIG9yZGFpbmVkIGEgcHJlYWNoZXIsIGFuZCBhbiBhcG9zdGxlLCAoSSBzcGVhayB0aGUgdHJ1dGggaW4gQ2hyaXN0LCBbYW5kXSBsaWUgbm90OykgYSB0ZWFjaGVyIG9mIHRoZSBHZW50aWxlcyBpbiBmYWl0aCBhbmQgdmVyaXR5LgpJIHdpbGwgdGhlcmVmb3JlIHRoYXQgbWVuIHByYXkgZXZlcnkgd2hlcmUsIGxpZnRpbmcgdXAgaG9seSBoYW5kcywgd2l0aG91dCB3cmF0aCBhbmQgZG91YnRpbmcuCkluIGxpa2UgbWFubmVyIGFsc28sIHRoYXQgd29tZW4gYWRvcm4gdGhlbXNlbHZlcyBpbiBtb2Rlc3QgYXBwYXJlbCwgd2l0aCBzaGFtZWZhY2VkbmVzcyBhbmQgc29icmlldHk7IG5vdCB3aXRoIGJyb2lkZWQgaGFpciwgb3IgZ29sZCwgb3IgcGVhcmxzLCBvciBjb3N0bHkgYXJyYXk7CkJ1dCAod2hpY2ggYmVjb21ldGggd29tZW4gcHJvZmVzc2luZyBnb2RsaW5lc3MpIHdpdGggZ29vZCB3b3Jrcy4KTGV0IHRoZSB3b21hbiBsZWFybiBpbiBzaWxlbmNlIHdpdGggYWxsIHN1YmplY3Rpb24uCkJ1dCBJIHN1ZmZlciBub3QgYSB3b21hbiB0byB0ZWFjaCwgbm9yIHRvIHVzdXJwIGF1dGhvcml0eSBvdmVyIHRoZSBtYW4sIGJ1dCB0byBiZSBpbiBzaWxlbmNlLgpGb3IgQWRhbSB3YXMgZmlyc3QgZm9ybWVkLCB0aGVuIEV2ZS4KQW5kIEFkYW0gd2FzIG5vdCBkZWNlaXZlZCwgYnV0IHRoZSB3b21hbiBiZWluZyBkZWNlaXZlZCB3YXMgaW4gdGhlIHRyYW5zZ3Jlc3Npb24uCk5vdHdpdGhzdGFuZGluZyBzaGUgc2hhbGwgYmUgc2F2ZWQgaW4gY2hpbGRiZWFyaW5nLCBpZiB0aGV5IGNvbnRpbnVlIGluIGZhaXRoIGFuZCBjaGFyaXR5IGFuZCBob2xpbmVzcyB3aXRoIHNvYnJpZXR5LgpUaGlzIFtpc10gYSB0cnVlIHNheWluZywgSWYgYSBtYW4gZGVzaXJlIHRoZSBvZmZpY2Ugb2YgYSBiaXNob3AsIGhlIGRlc2lyZXRoIGEgZ29vZCB3b3JrLgpBIGJpc2hvcCB0aGVuIG11c3QgYmUgYmxhbWVsZXNzLCB0aGUgaHVzYmFuZCBvZiBvbmUgd2lmZSwgdmlnaWxhbnQsIHNvYmVyLCBvZiBnb29kIGJlaGF2aW91ciwgZ2l2ZW4gdG8gaG9zcGl0YWxpdHksIGFwdCB0byB0ZWFjaDsKTm90IGdpdmVuIHRvIHdpbmUsIG5vIHN0cmlrZXIsIG5vdCBncmVlZHkgb2YgZmlsdGh5IGx1Y3JlOyBidXQgcGF0aWVudCwgbm90IGEgYnJhd2xlciwgbm90IGNvdmV0b3VzOwpPbmUgdGhhdCBydWxldGggd2VsbCBoaXMgb3duIGhvdXNlLCBoYXZpbmcgaGlzIGNoaWxkcmVuIGluIHN1YmplY3Rpb24gd2l0aCBhbGwgZ3Jhdml0eTsKKEZvciBpZiBhIG1hbiBrbm93IG5vdCBob3cgdG8gcnVsZSBoaXMgb3duIGhvdXNlLCBob3cgc2hhbGwgaGUgdGFrZSBjYXJlIG9mIHRoZSBjaHVyY2ggb2YgR29kPykKTm90IGEgbm92aWNlLCBsZXN0IGJlaW5nIGxpZnRlZCB1cCB3aXRoIHByaWRlIGhlIGZhbGwgaW50byB0aGUgY29uZGVtbmF0aW9uIG9mIHRoZSBkZXZpbC4KTW9yZW92ZXIgaGUgbXVzdCBoYXZlIGEgZ29vZCByZXBvcnQgb2YgdGhlbSB3aGljaCBhcmUgd2l0aG91dDsgbGVzdCBoZSBmYWxsIGludG8gcmVwcm9hY2ggYW5kIHRoZSBzbmFyZSBvZiB0aGUgZGV2aWwuCkxpa2V3aXNlIFttdXN0XSB0aGUgZGVhY29ucyBbYmVdIGdyYXZlLCBub3QgZG91YmxldG9uZ3VlZCwgbm90IGdpdmVuIHRvIG11Y2ggd2luZSwgbm90IGdyZWVkeSBvZiBmaWx0aHkgbHVjcmU7CkhvbGRpbmcgdGhlIG15c3Rlcnkgb2YgdGhlIGZhaXRoIGluIGEgcHVyZSBjb25zY2llbmNlLgpBbmQgbGV0IHRoZXNlIGFsc28gZmlyc3QgYmUgcHJvdmVkOyB0aGVuIGxldCB0aGVtIHVzZSB0aGUgb2ZmaWNlIG9mIGEgZGVhY29uLCBiZWluZyBbZm91bmRdIGJsYW1lbGVzcy4KRXZlbiBzbyBbbXVzdCB0aGVpcl0gd2l2ZXMgW2JlXSBncmF2ZSwgbm90IHNsYW5kZXJlcnMsIHNvYmVyLCBmYWl0aGZ1bCBpbiBhbGwgdGhpbmdzLgpMZXQgdGhlIGRlYWNvbnMgYmUgdGhlIGh1c2JhbmRzIG9mIG9uZSB3aWZlLCBydWxpbmcgdGhlaXIgY2hpbGRyZW4gYW5kIHRoZWlyIG93biBob3VzZXMgd2VsbC4KRm9yIHRoZXkgdGhhdCBoYXZlIHVzZWQgdGhlIG9mZmljZSBvZiBhIGRlYWNvbiB3ZWxsIHB1cmNoYXNlIHRvIHRoZW1zZWx2ZXMgYSBnb29kIGRlZ3JlZSwgYW5kIGdyZWF0IGJvbGRuZXNzIGluIHRoZSBmYWl0aCB3aGljaCBpcyBpbiBDaHJpc3QgSmVzdXMuClRoZXNlIHRoaW5ncyB3cml0ZSBJIHVudG8gdGhlZSwgaG9waW5nIHRvIGNvbWUgdW50byB0aGVlIHNob3J0bHk6CkJ1dCBpZiBJIHRhcnJ5IGxvbmcsIHRoYXQgdGhvdSBtYXllc3Qga25vdyBob3cgdGhvdSBvdWdodGVzdCB0byBiZWhhdmUgdGh5c2VsZiBpbiB0aGUgaG91c2Ugb2YgR29kLCB3aGljaCBpcyB0aGUgY2h1cmNoIG9mIHRoZSBsaXZpbmcgR29kLCB0aGUgcGlsbGFyIGFuZCBncm91bmQgb2YgdGhlIHRydXRoLgpBbmQgd2l0aG91dCBjb250cm92ZXJzeSBncmVhdCBpcyB0aGUgbXlzdGVyeSBvZiBnb2RsaW5lc3M6IEdvZCB3YXMgbWFuaWZlc3QgaW4gdGhlIGZsZXNoLCBqdXN0aWZpZWQgaW4gdGhlIFNwaXJpdCwgc2VlbiBvZiBhbmdlbHMsIHByZWFjaGVkIHVudG8gdGhlIEdlbnRpbGVzLCBiZWxpZXZlZCBvbiBpbiB0aGUgd29ybGQsIHJlY2VpdmVkIHVwIGludG8gZ2xvcnkuCk5vdyB0aGUgU3Bpcml0IHNwZWFrZXRoIGV4cHJlc3NseSwgdGhhdCBpbiB0aGUgbGF0dGVyIHRpbWVzIHNvbWUgc2hhbGwgZGVwYXJ0IGZyb20gdGhlIGZhaXRoLCBnaXZpbmcgaGVlZCB0byBzZWR1Y2luZyBzcGlyaXRzLCBhbmQgZG9jdHJpbmVzIG9mIGRldmlsczsKU3BlYWtpbmcgbGllcyBpbiBoeXBvY3Jpc3k7IGhhdmluZyB0aGVpciBjb25zY2llbmNlIHNlYXJlZCB3aXRoIGEgaG90IGlyb247CkZvcmJpZGRpbmcgdG8gbWFycnksIFthbmQgY29tbWFuZGluZ10gdG8gYWJzdGFpbiBmcm9tIG1lYXRzLCB3aGljaCBHb2QgaGF0aCBjcmVhdGVkIHRvIGJlIHJlY2VpdmVkIHdpdGggdGhhbmtzZ2l2aW5nIG9mIHRoZW0gd2hpY2ggYmVsaWV2ZSBhbmQga25vdyB0aGUgdHJ1dGguCkZvciBldmVyeSBjcmVhdHVyZSBvZiBHb2QgW2lzXSBnb29kLCBhbmQgbm90aGluZyB0byBiZSByZWZ1c2VkLCBpZiBpdCBiZSByZWNlaXZlZCB3aXRoIHRoYW5rc2dpdmluZzoKRm9yIGl0IGlzIHNhbmN0aWZpZWQgYnkgdGhlIHdvcmQgb2YgR29kIGFuZCBwcmF5ZXIuCklmIHRob3UgcHV0IHRoZSBicmV0aHJlbiBpbiByZW1lbWJyYW5jZSBvZiB0aGVzZSB0aGluZ3MsIHRob3Ugc2hhbHQgYmUgYSBnb29kIG1pbmlzdGVyIG9mIEplc3VzIENocmlzdCwgbm91cmlzaGVkIHVwIGluIHRoZSB3b3JkcyBvZiBmYWl0aCBhbmQgb2YgZ29vZCBkb2N0cmluZSwgd2hlcmV1bnRvIHRob3UgaGFzdCBhdHRhaW5lZC4KQnV0IHJlZnVzZSBwcm9mYW5lIGFuZCBvbGQgd2l2ZXMnIGZhYmxlcywgYW5kIGV4ZXJjaXNlIHRoeXNlbGYgW3JhdGhlcl0gdW50byBnb2RsaW5lc3MuCkZvciBib2RpbHkgZXhlcmNpc2UgcHJvZml0ZXRoIGxpdHRsZTogYnV0IGdvZGxpbmVzcyBpcyBwcm9maXRhYmxlIHVudG8gYWxsIHRoaW5ncywgaGF2aW5nIHByb21pc2Ugb2YgdGhlIGxpZmUgdGhhdCBub3cgaXMsIGFuZCBvZiB0aGF0IHdoaWNoIGlzIHRvIGNvbWUuClRoaXMgW2lzXSBhIGZhaXRoZnVsIHNheWluZyBhbmQgd29ydGh5IG9mIGFsbCBhY2NlcHRhdGlvbi4KRm9yIHRoZXJlZm9yZSB3ZSBib3RoIGxhYm91ciBhbmQgc3VmZmVyIHJlcHJvYWNoLCBiZWNhdXNlIHdlIHRydXN0IGluIHRoZSBsaXZpbmcgR29kLCB3aG8gaXMgdGhlIFNhdmlvdXIgb2YgYWxsIG1lbiwgc3BlY2lhbGx5IG9mIHRob3NlIHRoYXQgYmVsaWV2ZS4KVGhlc2UgdGhpbmdzIGNvbW1hbmQgYW5kIHRlYWNoLgpMZXQgbm8gbWFuIGRlc3Bpc2UgdGh5IHlvdXRoOyBidXQgYmUgdGhvdSBhbiBleGFtcGxlIG9mIHRoZSBiZWxpZXZlcnMsIGluIHdvcmQsIGluIGNvbnZlcnNhdGlvbiwgaW4gY2hhcml0eSwgaW4gc3Bpcml0LCBpbiBmYWl0aCwgaW4gcHVyaXR5LgpUaWxsIEkgY29tZSwgZ2l2ZSBhdHRlbmRhbmNlIHRvIHJlYWRpbmcsIHRvIGV4aG9ydGF0aW9uLCB0byBkb2N0cmluZS4KTmVnbGVjdCBub3QgdGhlIGdpZnQgdGhhdCBpcyBpbiB0aGVlLCB3aGljaCB3YXMgZ2l2ZW4gdGhlZSBieSBwcm9waGVjeSwgd2l0aCB0aGUgbGF5aW5nIG9uIG9mIHRoZSBoYW5kcyBvZiB0aGUgcHJlc2J5dGVyeS4KTWVkaXRhdGUgdXBvbiB0aGVzZSB0aGluZ3M7IGdpdmUgdGh5c2VsZiB3aG9sbHkgdG8gdGhlbTsgdGhhdCB0aHkgcHJvZml0aW5nIG1heSBhcHBlYXIgdG8gYWxsLgpUYWtlIGhlZWQgdW50byB0aHlzZWxmLCBhbmQgdW50byB0aGUgZG9jdHJpbmU7IGNvbnRpbnVlIGluIHRoZW06IGZvciBpbiBkb2luZyB0aGlzIHRob3Ugc2hhbHQgYm90aCBzYXZlIHRoeXNlbGYsIGFuZCB0aGVtIHRoYXQgaGVhciB0aGVlLgpSZWJ1a2Ugbm90IGFuIGVsZGVyLCBidXQgZW50cmVhdCBbaGltXSBhcyBhIGZhdGhlcjsgW2FuZF0gdGhlIHlvdW5nZXIgbWVuIGFzIGJyZXRocmVuOwpUaGUgZWxkZXIgd29tZW4gYXMgbW90aGVyczsgdGhlIHlvdW5nZXIgYXMgc2lzdGVycywgd2l0aCBhbGwgcHVyaXR5LgpIb25vdXIgd2lkb3dzIHRoYXQgYXJlIHdpZG93cyBpbmRlZWQuCkJ1dCBpZiBhbnkgd2lkb3cgaGF2ZSBjaGlsZHJlbiBvciBuZXBoZXdzLCBsZXQgdGhlbSBsZWFybiBmaXJzdCB0byBzaG93IHBpZXR5IGF0IGhvbWUsIGFuZCB0byByZXF1aXRlIHRoZWlyIHBhcmVudHM6IGZvciB0aGF0IGlzIGdvb2QgYW5kIGFjY2VwdGFibGUgYmVmb3JlIEdvZC4KTm93IHNoZSB0aGF0IGlzIGEgd2lkb3cgaW5kZWVkLCBhbmQgZGVzb2xhdGUsIHRydXN0ZXRoIGluIEdvZCwgYW5kIGNvbnRpbnVldGggaW4gc3VwcGxpY2F0aW9ucyBhbmQgcHJheWVycyBuaWdodCBhbmQgZGF5LgpCdXQgc2hlIHRoYXQgbGl2ZXRoIGluIHBsZWFzdXJlIGlzIGRlYWQgd2hpbGUgc2hlIGxpdmV0aC4KQW5kIHRoZXNlIHRoaW5ncyBnaXZlIGluIGNoYXJnZSwgdGhhdCB0aGV5IG1heSBiZSBibGFtZWxlc3MuCkJ1dCBpZiBhbnkgcHJvdmlkZSBub3QgZm9yIGhpcyBvd24sIGFuZCBzcGVjaWFsbHkgZm9yIHRob3NlIG9mIGhpcyBvd24gaG91c2UsIGhlIGhhdGggZGVuaWVkIHRoZSBmYWl0aCwgYW5kIGlzIHdvcnNlIHRoYW4gYW4gaW5maWRlbC4KTGV0IG5vdCBhIHdpZG93IGJlIHRha2VuIGludG8gdGhlIG51bWJlciB1bmRlciB0aHJlZXNjb3JlIHllYXJzIG9sZCwgaGF2aW5nIGJlZW4gdGhlIHdpZmUgb2Ygb25lIG1hbiwKV2VsbCByZXBvcnRlZCBvZiBmb3IgZ29vZCB3b3JrczsgaWYgc2hlIGhhdmUgYnJvdWdodCB1cCBjaGlsZHJlbiwgaWYgc2hlIGhhdmUgbG9kZ2VkIHN0cmFuZ2VycywgaWYgc2hlIGhhdmUgd2FzaGVkIHRoZSBzYWludHMnIGZlZXQsIGlmIHNoZSBoYXZlIHJlbGlldmVkIHRoZSBhZmZsaWN0ZWQsIGlmIHNoZSBoYXZlIGRpbGlnZW50bHkgZm9sbG93ZWQgZXZlcnkgZ29vZCB3b3JrLgpCdXQgdGhlIHlvdW5nZXIgd2lkb3dzIHJlZnVzZTogZm9yIHdoZW4gdGhleSBoYXZlIGJlZ3VuIHRvIHdheCB3YW50b24gYWdhaW5zdCBDaHJpc3QsIHRoZXkgd2lsbCBtYXJyeTsKSGF2aW5nIGRhbW5hdGlvbiwgYmVjYXVzZSB0aGV5IGhhdmUgY2FzdCBvZmYgdGhlaXIgZmlyc3QgZmFpdGguCkFuZCB3aXRoYWwgdGhleSBsZWFybiBbdG8gYmVdIGlkbGUsIHdhbmRlcmluZyBhYm91dCBmcm9tIGhvdXNlIHRvIGhvdXNlOyBhbmQgbm90IG9ubHkgaWRsZSwgYnV0IHRhdHRsZXJzIGFsc28gYW5kIGJ1c3lib2RpZXMsIHNwZWFraW5nIHRoaW5ncyB3aGljaCB0aGV5IG91Z2h0IG5vdC4KSSB3aWxsIHRoZXJlZm9yZSB0aGF0IHRoZSB5b3VuZ2VyIHdvbWVuIG1hcnJ5LCBiZWFyIGNoaWxkcmVuLCBndWlkZSB0aGUgaG91c2UsIGdpdmUgbm9uZSBvY2Nhc2lvbiB0byB0aGUgYWR2ZXJzYXJ5IHRvIHNwZWFrIHJlcHJvYWNoZnVsbHkuCkZvciBzb21lIGFyZSBhbHJlYWR5IHR1cm5lZCBhc2lkZSBhZnRlciBTYXRhbi4KSWYgYW55IG1hbiBvciB3b21hbiB0aGF0IGJlbGlldmV0aCBoYXZlIHdpZG93cywgbGV0IHRoZW0gcmVsaWV2ZSB0aGVtLCBhbmQgbGV0IG5vdCB0aGUgY2h1cmNoIGJlIGNoYXJnZWQ7IHRoYXQgaXQgbWF5IHJlbGlldmUgdGhlbSB0aGF0IGFyZSB3aWRvd3MgaW5kZWVkLgpMZXQgdGhlIGVsZGVycyB0aGF0IHJ1bGUgd2VsbCBiZSBjb3VudGVkIHdvcnRoeSBvZiBkb3VibGUgaG9ub3VyLCBlc3BlY2lhbGx5IHRoZXkgd2hvIGxhYm91ciBpbiB0aGUgd29yZCBhbmQgZG9jdHJpbmUuCkZvciB0aGUgc2NyaXB0dXJlIHNhaXRoLCBUaG91IHNoYWx0IG5vdCBtdXp6bGUgdGhlIG94IHRoYXQgdHJlYWRldGggb3V0IHRoZSBjb3JuLiBBbmQsIFRoZSBsYWJvdXJlciBbaXNdIHdvcnRoeSBvZiBoaXMgcmV3YXJkLgpBZ2FpbnN0IGFuIGVsZGVyIHJlY2VpdmUgbm90IGFuIGFjY3VzYXRpb24sIGJ1dCBiZWZvcmUgdHdvIG9yIHRocmVlIHdpdG5lc3Nlcy4KVGhlbSB0aGF0IHNpbiByZWJ1a2UgYmVmb3JlIGFsbCwgdGhhdCBvdGhlcnMgYWxzbyBtYXkgZmVhci4KSSBjaGFyZ2UgW3RoZWVdIGJlZm9yZSBHb2QsIGFuZCB0aGUgTG9yZCBKZXN1cyBDaHJpc3QsIGFuZCB0aGUgZWxlY3QgYW5nZWxzLCB0aGF0IHRob3Ugb2JzZXJ2ZSB0aGVzZSB0aGluZ3Mgd2l0aG91dCBwcmVmZXJyaW5nIG9uZSBiZWZvcmUgYW5vdGhlciwgZG9pbmcgbm90aGluZyBieSBwYXJ0aWFsaXR5LgpMYXkgaGFuZHMgc3VkZGVubHkgb24gbm8gbWFuLCBuZWl0aGVyIGJlIHBhcnRha2VyIG9mIG90aGVyIG1lbidzIHNpbnM6IGtlZXAgdGh5c2VsZiBwdXJlLgpEcmluayBubyBsb25nZXIgd2F0ZXIsIGJ1dCB1c2UgYSBsaXR0bGUgd2luZSBmb3IgdGh5IHN0b21hY2gncyBzYWtlIGFuZCB0aGluZSBvZnRlbiBpbmZpcm1pdGllcy4KU29tZSBtZW4ncyBzaW5zIGFyZSBvcGVuIGJlZm9yZWhhbmQsIGdvaW5nIGJlZm9yZSB0byBqdWRnbWVudDsgYW5kIHNvbWUgW21lbl0gdGhleSBmb2xsb3cgYWZ0ZXIuCkxpa2V3aXNlIGFsc28gdGhlIGdvb2Qgd29ya3MgW29mIHNvbWVdIGFyZSBtYW5pZmVzdCBiZWZvcmVoYW5kOyBhbmQgdGhleSB0aGF0IGFyZSBvdGhlcndpc2UgY2Fubm90IGJlIGhpZC4KTGV0IGFzIG1hbnkgc2VydmFudHMgYXMgYXJlIHVuZGVyIHRoZSB5b2tlIGNvdW50IHRoZWlyIG93biBtYXN0ZXJzIHdvcnRoeSBvZiBhbGwgaG9ub3VyLCB0aGF0IHRoZSBuYW1lIG9mIEdvZCBhbmQgW2hpc10gZG9jdHJpbmUgYmUgbm90IGJsYXNwaGVtZWQuCkFuZCB0aGV5IHRoYXQgaGF2ZSBiZWxpZXZpbmcgbWFzdGVycywgbGV0IHRoZW0gbm90IGRlc3Bpc2UgW3RoZW1dLCBiZWNhdXNlIHRoZXkgYXJlIGJyZXRocmVuOyBidXQgcmF0aGVyIGRvIFt0aGVtXSBzZXJ2aWNlLCBiZWNhdXNlIHRoZXkgYXJlIGZhaXRoZnVsIGFuZCBiZWxvdmVkLCBwYXJ0YWtlcnMgb2YgdGhlIGJlbmVmaXQuIFRoZXNlIHRoaW5ncyB0ZWFjaCBhbmQgZXhob3J0LgpJZiBhbnkgbWFuIHRlYWNoIG90aGVyd2lzZSwgYW5kIGNvbnNlbnQgbm90IHRvIHdob2xlc29tZSB3b3JkcywgW2V2ZW5dIHRoZSB3b3JkcyBvZiBvdXIgTG9yZCBKZXN1cyBDaHJpc3QsIGFuZCB0byB0aGUgZG9jdHJpbmUgd2hpY2ggaXMgYWNjb3JkaW5nIHRvIGdvZGxpbmVzczsKSGUgaXMgcHJvdWQsIGtub3dpbmcgbm90aGluZywgYnV0IGRvdGluZyBhYm91dCBxdWVzdGlvbnMgYW5kIHN0cmlmZXMgb2Ygd29yZHMsIHdoZXJlb2YgY29tZXRoIGVudnksIHN0cmlmZSwgcmFpbGluZ3MsIGV2aWwgc3VybWlzaW5ncywKUGVydmVyc2UgZGlzcHV0aW5ncyBvZiBtZW4gb2YgY29ycnVwdCBtaW5kcywgYW5kIGRlc3RpdHV0ZSBvZiB0aGUgdHJ1dGgsIHN1cHBvc2luZyB0aGF0IGdhaW4gaXMgZ29kbGluZXNzOiBmcm9tIHN1Y2ggd2l0aGRyYXcgdGh5c2VsZi4KQnV0IGdvZGxpbmVzcyB3aXRoIGNvbnRlbnRtZW50IGlzIGdyZWF0IGdhaW4uCkZvciB3ZSBicm91Z2h0IG5vdGhpbmcgaW50byBbdGhpc10gd29ybGQsIFthbmQgaXQgaXNdIGNlcnRhaW4gd2UgY2FuIGNhcnJ5IG5vdGhpbmcgb3V0LgpBbmQgaGF2aW5nIGZvb2QgYW5kIHJhaW1lbnQgbGV0IHVzIGJlIHRoZXJld2l0aCBjb250ZW50LgpCdXQgdGhleSB0aGF0IHdpbGwgYmUgcmljaCBmYWxsIGludG8gdGVtcHRhdGlvbiBhbmQgYSBzbmFyZSwgYW5kIFtpbnRvXSBtYW55IGZvb2xpc2ggYW5kIGh1cnRmdWwgbHVzdHMsIHdoaWNoIGRyb3duIG1lbiBpbiBkZXN0cnVjdGlvbiBhbmQgcGVyZGl0aW9uLgpGb3IgdGhlIGxvdmUgb2YgbW9uZXkgaXMgdGhlIHJvb3Qgb2YgYWxsIGV2aWw6IHdoaWNoIHdoaWxlIHNvbWUgY292ZXRlZCBhZnRlciwgdGhleSBoYXZlIGVycmVkIGZyb20gdGhlIGZhaXRoLCBhbmQgcGllcmNlZCB0aGVtc2VsdmVzIHRocm91Z2ggd2l0aCBtYW55IHNvcnJvd3MuCkJ1dCB0aG91LCBPIG1hbiBvZiBHb2QsIGZsZWUgdGhlc2UgdGhpbmdzOyBhbmQgZm9sbG93IGFmdGVyIHJpZ2h0ZW91c25lc3MsIGdvZGxpbmVzcywgZmFpdGgsIGxvdmUsIHBhdGllbmNlLCBtZWVrbmVzcy4KRmlnaHQgdGhlIGdvb2QgZmlnaHQgb2YgZmFpdGgsIGxheSBob2xkIG9uIGV0ZXJuYWwgbGlmZSwgd2hlcmV1bnRvIHRob3UgYXJ0IGFsc28gY2FsbGVkLCBhbmQgaGFzdCBwcm9mZXNzZWQgYSBnb29kIHByb2Zlc3Npb24gYmVmb3JlIG1hbnkgd2l0bmVzc2VzLgpJIGdpdmUgdGhlZSBjaGFyZ2UgaW4gdGhlIHNpZ2h0IG9mIEdvZCwgd2hvIHF1aWNrZW5ldGggYWxsIHRoaW5ncywgYW5kIFtiZWZvcmVdIENocmlzdCBKZXN1cywgd2hvIGJlZm9yZSBQb250aXVzIFBpbGF0ZSB3aXRuZXNzZWQgYSBnb29kIGNvbmZlc3Npb247ClRoYXQgdGhvdSBrZWVwIFt0aGlzXSBjb21tYW5kbWVudCB3aXRob3V0IHNwb3QsIHVucmVidWtlYWJsZSwgdW50aWwgdGhlIGFwcGVhcmluZyBvZiBvdXIgTG9yZCBKZXN1cyBDaHJpc3Q6CldoaWNoIGluIGhpcyB0aW1lcyBoZSBzaGFsbCBzaG93LCBbd2hvIGlzXSB0aGUgYmxlc3NlZCBhbmQgb25seSBQb3RlbnRhdGUsIHRoZSBLaW5nIG9mIGtpbmdzLCBhbmQgTG9yZCBvZiBsb3JkczsKV2hvIG9ubHkgaGF0aCBpbW1vcnRhbGl0eSwgZHdlbGxpbmcgaW4gdGhlIGxpZ2h0IHdoaWNoIG5vIG1hbiBjYW4gYXBwcm9hY2ggdW50bzsgd2hvbSBubyBtYW4gaGF0aCBzZWVuLCBub3IgY2FuIHNlZTogdG8gd2hvbSBbYmVdIGhvbm91ciBhbmQgcG93ZXIgZXZlcmxhc3RpbmcuIEFtZW4uCkNoYXJnZSB0aGVtIHRoYXQgYXJlIHJpY2ggaW4gdGhpcyB3b3JsZCwgdGhhdCB0aGV5IGJlIG5vdCBoaWdobWluZGVkLCBub3IgdHJ1c3QgaW4gdW5jZXJ0YWluIHJpY2hlcywgYnV0IGluIHRoZSBsaXZpbmcgR29kLCB3aG8gZ2l2ZXRoIHVzIHJpY2hseSBhbGwgdGhpbmdzIHRvIGVuam95OwpUaGF0IHRoZXkgZG8gZ29vZCwgdGhhdCB0aGV5IGJlIHJpY2ggaW4gZ29vZCB3b3JrcywgcmVhZHkgdG8gZGlzdHJpYnV0ZSwgd2lsbGluZyB0byBjb21tdW5pY2F0ZTsKTGF5aW5nIHVwIGluIHN0b3JlIGZvciB0aGVtc2VsdmVzIGEgZ29vZCBmb3VuZGF0aW9uIGFnYWluc3QgdGhlIHRpbWUgdG8gY29tZSwgdGhhdCB0aGV5IG1heSBsYXkgaG9sZCBvbiBldGVybmFsIGxpZmUuCk8gVGltb3RoeSwga2VlcCB0aGF0IHdoaWNoIGlzIGNvbW1pdHRlZCB0byB0aHkgdHJ1c3QsIGF2b2lkaW5nIHByb2ZhbmUgW2FuZF0gdmFpbiBiYWJibGluZ3MsIGFuZCBvcHBvc2l0aW9ucyBvZiBzY2llbmNlIGZhbHNlbHkgc28gY2FsbGVkOgpXaGljaCBzb21lIHByb2Zlc3NpbmcgaGF2ZSBlcnJlZCBjb25jZXJuaW5nIHRoZSBmYWl0aC4gR3JhY2UgW2JlXSB3aXRoIHRoZWUuIEFtZW4uClBhdWwsIGFuIGFwb3N0bGUgb2YgSmVzdXMgQ2hyaXN0IGJ5IHRoZSB3aWxsIG9mIEdvZCwgYWNjb3JkaW5nIHRvIHRoZSBwcm9taXNlIG9mIGxpZmUgd2hpY2ggaXMgaW4gQ2hyaXN0IEplc3VzLApUbyBUaW1vdGh5LCBbbXldIGRlYXJseSBiZWxvdmVkIHNvbjogR3JhY2UsIG1lcmN5LCBbYW5kXSBwZWFjZSwgZnJvbSBHb2QgdGhlIEZhdGhlciBhbmQgQ2hyaXN0IEplc3VzIG91ciBMb3JkLgpJIHRoYW5rIEdvZCwgd2hvbSBJIHNlcnZlIGZyb20gW215XSBmb3JlZmF0aGVycyB3aXRoIHB1cmUgY29uc2NpZW5jZSwgdGhhdCB3aXRob3V0IGNlYXNpbmcgSSBoYXZlIHJlbWVtYnJhbmNlIG9mIHRoZWUgaW4gbXkgcHJheWVycyBuaWdodCBhbmQgZGF5OwpHcmVhdGx5IGRlc2lyaW5nIHRvIHNlZSB0aGVlLCBiZWluZyBtaW5kZnVsIG9mIHRoeSB0ZWFycywgdGhhdCBJIG1heSBiZSBmaWxsZWQgd2l0aCBqb3k7CldoZW4gSSBjYWxsIHRvIHJlbWVtYnJhbmNlIHRoZSB1bmZlaWduZWQgZmFpdGggdGhhdCBpcyBpbiB0aGVlLCB3aGljaCBkd2VsdCBmaXJzdCBpbiB0aHkgZ3JhbmRtb3RoZXIgTG9pcywgYW5kIHRoeSBtb3RoZXIgRXVuaWNlOyBhbmQgSSBhbSBwZXJzdWFkZWQgdGhhdCBpbiB0aGVlIGFsc28uCldoZXJlZm9yZSBJIHB1dCB0aGVlIGluIHJlbWVtYnJhbmNlIHRoYXQgdGhvdSBzdGlyIHVwIHRoZSBnaWZ0IG9mIEdvZCwgd2hpY2ggaXMgaW4gdGhlZSBieSB0aGUgcHV0dGluZyBvbiBvZiBteSBoYW5kcy4KRm9yIEdvZCBoYXRoIG5vdCBnaXZlbiB1cyB0aGUgc3Bpcml0IG9mIGZlYXI7IGJ1dCBvZiBwb3dlciwgYW5kIG9mIGxvdmUsIGFuZCBvZiBhIHNvdW5kIG1pbmQuCkJlIG5vdCB0aG91IHRoZXJlZm9yZSBhc2hhbWVkIG9mIHRoZSB0ZXN0aW1vbnkgb2Ygb3VyIExvcmQsIG5vciBvZiBtZSBoaXMgcHJpc29uZXI6IGJ1dCBiZSB0aG91IHBhcnRha2VyIG9mIHRoZSBhZmZsaWN0aW9ucyBvZiB0aGUgZ29zcGVsIGFjY29yZGluZyB0byB0aGUgcG93ZXIgb2YgR29kOwpXaG8gaGF0aCBzYXZlZCB1cywgYW5kIGNhbGxlZCBbdXNdIHdpdGggYW4gaG9seSBjYWxsaW5nLCBub3QgYWNjb3JkaW5nIHRvIG91ciB3b3JrcywgYnV0IGFjY29yZGluZyB0byBoaXMgb3duIHB1cnBvc2UgYW5kIGdyYWNlLCB3aGljaCB3YXMgZ2l2ZW4gdXMgaW4gQ2hyaXN0IEplc3VzIGJlZm9yZSB0aGUgd29ybGQgYmVnYW4sCkJ1dCBpcyBub3cgbWFkZSBtYW5pZmVzdCBieSB0aGUgYXBwZWFyaW5nIG9mIG91ciBTYXZpb3VyIEplc3VzIENocmlzdCwgd2hvIGhhdGggYWJvbGlzaGVkIGRlYXRoLCBhbmQgaGF0aCBicm91Z2h0IGxpZmUgYW5kIGltbW9ydGFsaXR5IHRvIGxpZ2h0IHRocm91Z2ggdGhlIGdvc3BlbDoKV2hlcmV1bnRvIEkgYW0gYXBwb2ludGVkIGEgcHJlYWNoZXIsIGFuZCBhbiBhcG9zdGxlLCBhbmQgYSB0ZWFjaGVyIG9mIHRoZSBHZW50aWxlcy4KRm9yIHRoZSB3aGljaCBjYXVzZSBJIGFsc28gc3VmZmVyIHRoZXNlIHRoaW5nczogbmV2ZXJ0aGVsZXNzIEkgYW0gbm90IGFzaGFtZWQ6IGZvciBJIGtub3cgd2hvbSBJIGhhdmUgYmVsaWV2ZWQsIGFuZCBhbSBwZXJzdWFkZWQgdGhhdCBoZSBpcyBhYmxlIHRvIGtlZXAgdGhhdCB3aGljaCBJIGhhdmUgY29tbWl0dGVkIHVudG8gaGltIGFnYWluc3QgdGhhdCBkYXkuCkhvbGQgZmFzdCB0aGUgZm9ybSBvZiBzb3VuZCB3b3Jkcywgd2hpY2ggdGhvdSBoYXN0IGhlYXJkIG9mIG1lLCBpbiBmYWl0aCBhbmQgbG92ZSB3aGljaCBpcyBpbiBDaHJpc3QgSmVzdXMuClRoYXQgZ29vZCB0aGluZyB3aGljaCB3YXMgY29tbWl0dGVkIHVudG8gdGhlZSBrZWVwIGJ5IHRoZSBIb2x5IEdob3N0IHdoaWNoIGR3ZWxsZXRoIGluIHVzLgpUaGlzIHRob3Uga25vd2VzdCwgdGhhdCBhbGwgdGhleSB3aGljaCBhcmUgaW4gQXNpYSBiZSB0dXJuZWQgYXdheSBmcm9tIG1lOyBvZiB3aG9tIGFyZSBQaHlnZWxsdXMgYW5kIEhlcm1vZ2VuZXMuClRoZSBMb3JkIGdpdmUgbWVyY3kgdW50byB0aGUgaG91c2Ugb2YgT25lc2lwaG9ydXM7IGZvciBoZSBvZnQgcmVmcmVzaGVkIG1lLCBhbmQgd2FzIG5vdCBhc2hhbWVkIG9mIG15IGNoYWluOgpCdXQsIHdoZW4gaGUgd2FzIGluIFJvbWUsIGhlIHNvdWdodCBtZSBvdXQgdmVyeSBkaWxpZ2VudGx5LCBhbmQgZm91bmQgW21lXS4KVGhlIExvcmQgZ3JhbnQgdW50byBoaW0gdGhhdCBoZSBtYXkgZmluZCBtZXJjeSBvZiB0aGUgTG9yZCBpbiB0aGF0IGRheTogYW5kIGluIGhvdyBtYW55IHRoaW5ncyBoZSBtaW5pc3RlcmVkIHVudG8gbWUgYXQgRXBoZXN1cywgdGhvdSBrbm93ZXN0IHZlcnkgd2VsbC4KVGhvdSB0aGVyZWZvcmUsIG15IHNvbiwgYmUgc3Ryb25nIGluIHRoZSBncmFjZSB0aGF0IGlzIGluIENocmlzdCBKZXN1cy4KQW5kIHRoZSB0aGluZ3MgdGhhdCB0aG91IGhhc3QgaGVhcmQgb2YgbWUgYW1vbmcgbWFueSB3aXRuZXNzZXMsIHRoZSBzYW1lIGNvbW1pdCB0aG91IHRvIGZhaXRoZnVsIG1lbiwgd2hvIHNoYWxsIGJlIGFibGUgdG8gdGVhY2ggb3RoZXJzIGFsc28uClRob3UgdGhlcmVmb3JlIGVuZHVyZSBoYXJkbmVzcywgYXMgYSBnb29kIHNvbGRpZXIgb2YgSmVzdXMgQ2hyaXN0LgpObyBtYW4gdGhhdCB3YXJyZXRoIGVudGFuZ2xldGggaGltc2VsZiB3aXRoIHRoZSBhZmZhaXJzIG9mIFt0aGlzXSBsaWZlOyB0aGF0IGhlIG1heSBwbGVhc2UgaGltIHdobyBoYXRoIGNob3NlbiBoaW0gdG8gYmUgYSBzb2xkaWVyLgpBbmQgaWYgYSBtYW4gYWxzbyBzdHJpdmUgZm9yIG1hc3RlcmllcywgW3lldF0gaXMgaGUgbm90IGNyb3duZWQsIGV4Y2VwdCBoZSBzdHJpdmUgbGF3ZnVsbHkuClRoZSBodXNiYW5kbWFuIHRoYXQgbGFib3VyZXRoIG11c3QgYmUgZmlyc3QgcGFydGFrZXIgb2YgdGhlIGZydWl0cy4KQ29uc2lkZXIgd2hhdCBJIHNheTsgYW5kIHRoZSBMb3JkIGdpdmUgdGhlZSB1bmRlcnN0YW5kaW5nIGluIGFsbCB0aGluZ3MuClJlbWVtYmVyIHRoYXQgSmVzdXMgQ2hyaXN0IG9mIHRoZSBzZWVkIG9mIERhdmlkIHdhcyByYWlzZWQgZnJvbSB0aGUgZGVhZCBhY2NvcmRpbmcgdG8gbXkgZ29zcGVsOgpXaGVyZWluIEkgc3VmZmVyIHRyb3VibGUsIGFzIGFuIGV2aWwgZG9lciwgW2V2ZW5dIHVudG8gYm9uZHM7IGJ1dCB0aGUgd29yZCBvZiBHb2QgaXMgbm90IGJvdW5kLgpUaGVyZWZvcmUgSSBlbmR1cmUgYWxsIHRoaW5ncyBmb3IgdGhlIGVsZWN0J3Mgc2FrZXMsIHRoYXQgdGhleSBtYXkgYWxzbyBvYnRhaW4gdGhlIHNhbHZhdGlvbiB3aGljaCBpcyBpbiBDaHJpc3QgSmVzdXMgd2l0aCBldGVybmFsIGdsb3J5LgpbSXQgaXNdIGEgZmFpdGhmdWwgc2F5aW5nOiBGb3IgaWYgd2UgYmUgZGVhZCB3aXRoIFtoaW1dLCB3ZSBzaGFsbCBhbHNvIGxpdmUgd2l0aCBbaGltXToKSWYgd2Ugc3VmZmVyLCB3ZSBzaGFsbCBhbHNvIHJlaWduIHdpdGggW2hpbV06IGlmIHdlIGRlbnkgW2hpbV0sIGhlIGFsc28gd2lsbCBkZW55IHVzOgpJZiB3ZSBiZWxpZXZlIG5vdCwgW3lldF0gaGUgYWJpZGV0aCBmYWl0aGZ1bDogaGUgY2Fubm90IGRlbnkgaGltc2VsZi4KT2YgdGhlc2UgdGhpbmdzIHB1dCBbdGhlbV0gaW4gcmVtZW1icmFuY2UsIGNoYXJnaW5nIFt0aGVtXSBiZWZvcmUgdGhlIExvcmQgdGhhdCB0aGV5IHN0cml2ZSBub3QgYWJvdXQgd29yZHMgdG8gbm8gcHJvZml0LCBbYnV0XSB0byB0aGUgc3VidmVydGluZyBvZiB0aGUgaGVhcmVycy4KU3R1ZHkgdG8gc2hvdyB0aHlzZWxmIGFwcHJvdmVkIHVudG8gR29kLCBhIHdvcmttYW4gdGhhdCBuZWVkZXRoIG5vdCB0byBiZSBhc2hhbWVkLCByaWdodGx5IGRpdmlkaW5nIHRoZSB3b3JkIG9mIHRydXRoLgpCdXQgc2h1biBwcm9mYW5lIFthbmRdIHZhaW4gYmFiYmxpbmdzOiBmb3IgdGhleSB3aWxsIGluY3JlYXNlIHVudG8gbW9yZSB1bmdvZGxpbmVzcy4KQW5kIHRoZWlyIHdvcmQgd2lsbCBlYXQgYXMgZG90aCBhIGNhbmtlcjogb2Ygd2hvbSBpcyBIeW1lbmFldXMgYW5kIFBoaWxldHVzOwpXaG8gY29uY2VybmluZyB0aGUgdHJ1dGggaGF2ZSBlcnJlZCwgc2F5aW5nIHRoYXQgdGhlIHJlc3VycmVjdGlvbiBpcyBwYXN0IGFscmVhZHk7IGFuZCBvdmVydGhyb3cgdGhlIGZhaXRoIG9mIHNvbWUuCk5ldmVydGhlbGVzcyB0aGUgZm91bmRhdGlvbiBvZiBHb2Qgc3RhbmRldGggc3VyZSwgaGF2aW5nIHRoaXMgc2VhbCwgVGhlIExvcmQga25vd2V0aCB0aGVtIHRoYXQgYXJlIGhpcy4gQW5kLCBMZXQgZXZlcnkgb25lIHRoYXQgbmFtZXRoIHRoZSBuYW1lIG9mIENocmlzdCBkZXBhcnQgZnJvbSBpbmlxdWl0eS4KQnV0IGluIGEgZ3JlYXQgaG91c2UgdGhlcmUgYXJlIG5vdCBvbmx5IHZlc3NlbHMgb2YgZ29sZCBhbmQgb2Ygc2lsdmVyLCBidXQgYWxzbyBvZiB3b29kIGFuZCBvZiBlYXJ0aDsgYW5kIHNvbWUgdG8gaG9ub3VyLCBhbmQgc29tZSB0byBkaXNob25vdXIuCklmIGEgbWFuIHRoZXJlZm9yZSBwdXJnZSBoaW1zZWxmIGZyb20gdGhlc2UsIGhlIHNoYWxsIGJlIGEgdmVzc2VsIHVudG8gaG9ub3VyLCBzYW5jdGlmaWVkLCBhbmQgbWVldCBmb3IgdGhlIG1hc3RlcidzIHVzZSwgW2FuZF0gcHJlcGFyZWQgdW50byBldmVyeSBnb29kIHdvcmsuCkZsZWUgYWxzbyB5b3V0aGZ1bCBsdXN0czogYnV0IGZvbGxvdyByaWdodGVvdXNuZXNzLCBmYWl0aCwgY2hhcml0eSwgcGVhY2UsIHdpdGggdGhlbSB0aGF0IGNhbGwgb24gdGhlIExvcmQgb3V0IG9mIGEgcHVyZSBoZWFydC4KQnV0IGZvb2xpc2ggYW5kIHVubGVhcm5lZCBxdWVzdGlvbnMgYXZvaWQsIGtub3dpbmcgdGhhdCB0aGV5IGRvIGdlbmRlciBzdHJpZmVzLgpBbmQgdGhlIHNlcnZhbnQgb2YgdGhlIExvcmQgbXVzdCBub3Qgc3RyaXZlOyBidXQgYmUgZ2VudGxlIHVudG8gYWxsIFttZW5dLCBhcHQgdG8gdGVhY2gsIHBhdGllbnQsCkluIG1lZWtuZXNzIGluc3RydWN0aW5nIHRob3NlIHRoYXQgb3Bwb3NlIHRoZW1zZWx2ZXM7IGlmIEdvZCBwZXJhZHZlbnR1cmUgd2lsbCBnaXZlIHRoZW0gcmVwZW50YW5jZSB0byB0aGUgYWNrbm93bGVkZ2luZyBvZiB0aGUgdHJ1dGg7CkFuZCBbdGhhdF0gdGhleSBtYXkgcmVjb3ZlciB0aGVtc2VsdmVzIG91dCBvZiB0aGUgc25hcmUgb2YgdGhlIGRldmlsLCB3aG8gYXJlIHRha2VuIGNhcHRpdmUgYnkgaGltIGF0IGhpcyB3aWxsLgpUaGlzIGtub3cgYWxzbywgdGhhdCBpbiB0aGUgbGFzdCBkYXlzIHBlcmlsb3VzIHRpbWVzIHNoYWxsIGNvbWUuCkZvciBtZW4gc2hhbGwgYmUgbG92ZXJzIG9mIHRoZWlyIG93biBzZWx2ZXMsIGNvdmV0b3VzLCBib2FzdGVycywgcHJvdWQsIGJsYXNwaGVtZXJzLCBkaXNvYmVkaWVudCB0byBwYXJlbnRzLCB1bnRoYW5rZnVsLCB1bmhvbHksCldpdGhvdXQgbmF0dXJhbCBhZmZlY3Rpb24sIHRydWNlYnJlYWtlcnMsIGZhbHNlIGFjY3VzZXJzLCBpbmNvbnRpbmVudCwgZmllcmNlLCBkZXNwaXNlcnMgb2YgdGhvc2UgdGhhdCBhcmUgZ29vZCwKVHJhaXRvcnMsIGhlYWR5LCBoaWdobWluZGVkLCBsb3ZlcnMgb2YgcGxlYXN1cmVzIG1vcmUgdGhhbiBsb3ZlcnMgb2YgR29kOwpIYXZpbmcgYSBmb3JtIG9mIGdvZGxpbmVzcywgYnV0IGRlbnlpbmcgdGhlIHBvd2VyIHRoZXJlb2Y6IGZyb20gc3VjaCB0dXJuIGF3YXkuCkZvciBvZiB0aGlzIHNvcnQgYXJlIHRoZXkgd2hpY2ggY3JlZXAgaW50byBob3VzZXMsIGFuZCBsZWFkIGNhcHRpdmUgc2lsbHkgd29tZW4gbGFkZW4gd2l0aCBzaW5zLCBsZWQgYXdheSB3aXRoIGRpdmVycyBsdXN0cywKRXZlciBsZWFybmluZywgYW5kIG5ldmVyIGFibGUgdG8gY29tZSB0byB0aGUga25vd2xlZGdlIG9mIHRoZSB0cnV0aC4KTm93IGFzIEphbm5lcyBhbmQgSmFtYnJlcyB3aXRoc3Rvb2QgTW9zZXMsIHNvIGRvIHRoZXNlIGFsc28gcmVzaXN0IHRoZSB0cnV0aDogbWVuIG9mIGNvcnJ1cHQgbWluZHMsIHJlcHJvYmF0ZSBjb25jZXJuaW5nIHRoZSBmYWl0aC4KQnV0IHRoZXkgc2hhbGwgcHJvY2VlZCBubyBmdXJ0aGVyOiBmb3IgdGhlaXIgZm9sbHkgc2hhbGwgYmUgbWFuaWZlc3QgdW50byBhbGwgW21lbl0sIGFzIHRoZWlycyBhbHNvIHdhcy4KQnV0IHRob3UgaGFzdCBmdWxseSBrbm93biBteSBkb2N0cmluZSwgbWFubmVyIG9mIGxpZmUsIHB1cnBvc2UsIGZhaXRoLCBsb25nc3VmZmVyaW5nLCBjaGFyaXR5LCBwYXRpZW5jZSwKUGVyc2VjdXRpb25zLCBhZmZsaWN0aW9ucywgd2hpY2ggY2FtZSB1bnRvIG1lIGF0IEFudGlvY2gsIGF0IEljb25pdW0sIGF0IEx5c3RyYTsgd2hhdCBwZXJzZWN1dGlvbnMgSSBlbmR1cmVkOiBidXQgb3V0IG9mIFt0aGVtXSBhbGwgdGhlIExvcmQgZGVsaXZlcmVkIG1lLgpZZWEsIGFuZCBhbGwgdGhhdCB3aWxsIGxpdmUgZ29kbHkgaW4gQ2hyaXN0IEplc3VzIHNoYWxsIHN1ZmZlciBwZXJzZWN1dGlvbi4KQnV0IGV2aWwgbWVuIGFuZCBzZWR1Y2VycyBzaGFsbCB3YXggd29yc2UgYW5kIHdvcnNlLCBkZWNlaXZpbmcsIGFuZCBiZWluZyBkZWNlaXZlZC4KQnV0IGNvbnRpbnVlIHRob3UgaW4gdGhlIHRoaW5ncyB3aGljaCB0aG91IGhhc3QgbGVhcm5lZCBhbmQgaGFzdCBiZWVuIGFzc3VyZWQgb2YsIGtub3dpbmcgb2Ygd2hvbSB0aG91IGhhc3QgbGVhcm5lZCBbdGhlbV07CkFuZCB0aGF0IGZyb20gYSBjaGlsZCB0aG91IGhhc3Qga25vd24gdGhlIGhvbHkgc2NyaXB0dXJlcywgd2hpY2ggYXJlIGFibGUgdG8gbWFrZSB0aGVlIHdpc2UgdW50byBzYWx2YXRpb24gdGhyb3VnaCBmYWl0aCB3aGljaCBpcyBpbiBDaHJpc3QgSmVzdXMuCkFsbCBzY3JpcHR1cmUgW2lzXSBnaXZlbiBieSBpbnNwaXJhdGlvbiBvZiBHb2QsIGFuZCBbaXNdIHByb2ZpdGFibGUgZm9yIGRvY3RyaW5lLCBmb3IgcmVwcm9vZiwgZm9yIGNvcnJlY3Rpb24sIGZvciBpbnN0cnVjdGlvbiBpbiByaWdodGVvdXNuZXNzOgpUaGF0IHRoZSBtYW4gb2YgR29kIG1heSBiZSBwZXJmZWN0LCB0aG9yb3VnaGx5IGZ1cm5pc2hlZCB1bnRvIGFsbCBnb29kIHdvcmtzLgpJIGNoYXJnZSBbdGhlZV0gdGhlcmVmb3JlIGJlZm9yZSBHb2QsIGFuZCB0aGUgTG9yZCBKZXN1cyBDaHJpc3QsIHdobyBzaGFsbCBqdWRnZSB0aGUgcXVpY2sgYW5kIHRoZSBkZWFkIGF0IGhpcyBhcHBlYXJpbmcgYW5kIGhpcyBraW5nZG9tOwpQcmVhY2ggdGhlIHdvcmQ7IGJlIGluc3RhbnQgaW4gc2Vhc29uLCBvdXQgb2Ygc2Vhc29uOyByZXByb3ZlLCByZWJ1a2UsIGV4aG9ydCB3aXRoIGFsbCBsb25nc3VmZmVyaW5nIGFuZCBkb2N0cmluZS4KRm9yIHRoZSB0aW1lIHdpbGwgY29tZSB3aGVuIHRoZXkgd2lsbCBub3QgZW5kdXJlIHNvdW5kIGRvY3RyaW5lOyBidXQgYWZ0ZXIgdGhlaXIgb3duIGx1c3RzIHNoYWxsIHRoZXkgaGVhcCB0byB0aGVtc2VsdmVzIHRlYWNoZXJzLCBoYXZpbmcgaXRjaGluZyBlYXJzOwpBbmQgdGhleSBzaGFsbCB0dXJuIGF3YXkgW3RoZWlyXSBlYXJzIGZyb20gdGhlIHRydXRoLCBhbmQgc2hhbGwgYmUgdHVybmVkIHVudG8gZmFibGVzLgpCdXQgd2F0Y2ggdGhvdSBpbiBhbGwgdGhpbmdzLCBlbmR1cmUgYWZmbGljdGlvbnMsIGRvIHRoZSB3b3JrIG9mIGFuIGV2YW5nZWxpc3QsIG1ha2UgZnVsbCBwcm9vZiBvZiB0aHkgbWluaXN0cnkuCkZvciBJIGFtIG5vdyByZWFkeSB0byBiZSBvZmZlcmVkLCBhbmQgdGhlIHRpbWUgb2YgbXkgZGVwYXJ0dXJlIGlzIGF0IGhhbmQuCkkgaGF2ZSBmb3VnaHQgYSBnb29kIGZpZ2h0LCBJIGhhdmUgZmluaXNoZWQgW215XSBjb3Vyc2UsIEkgaGF2ZSBrZXB0IHRoZSBmYWl0aDoKSGVuY2Vmb3J0aCB0aGVyZSBpcyBsYWlkIHVwIGZvciBtZSBhIGNyb3duIG9mIHJpZ2h0ZW91c25lc3MsIHdoaWNoIHRoZSBMb3JkLCB0aGUgcmlnaHRlb3VzIGp1ZGdlLCBzaGFsbCBnaXZlIG1lIGF0IHRoYXQgZGF5OiBhbmQgbm90IHRvIG1lIG9ubHksIGJ1dCB1bnRvIGFsbCB0aGVtIGFsc28gdGhhdCBsb3ZlIGhpcyBhcHBlYXJpbmcuCkRvIHRoeSBkaWxpZ2VuY2UgdG8gY29tZSBzaG9ydGx5IHVudG8gbWU6CkZvciBEZW1hcyBoYXRoIGZvcnNha2VuIG1lLCBoYXZpbmcgbG92ZWQgdGhpcyBwcmVzZW50IHdvcmxkLCBhbmQgaXMgZGVwYXJ0ZWQgdW50byBUaGVzc2Fsb25pY2E7IENyZXNjZW5zIHRvIEdhbGF0aWEsIFRpdHVzIHVudG8gRGFsbWF0aWEuCk9ubHkgTHVrZSBpcyB3aXRoIG1lLiBUYWtlIE1hcmssIGFuZCBicmluZyBoaW0gd2l0aCB0aGVlOiBmb3IgaGUgaXMgcHJvZml0YWJsZSB0byBtZSBmb3IgdGhlIG1pbmlzdHJ5LgpBbmQgVHljaGljdXMgaGF2ZSBJIHNlbnQgdG8gRXBoZXN1cy4KVGhlIGNsb2FrIHRoYXQgSSBsZWZ0IGF0IFRyb2FzIHdpdGggQ2FycHVzLCB3aGVuIHRob3UgY29tZXN0LCBicmluZyBbd2l0aCB0aGVlXSwgYW5kIHRoZSBib29rcywgW2J1dF0gZXNwZWNpYWxseSB0aGUgcGFyY2htZW50cy4KQWxleGFuZGVyIHRoZSBjb3BwZXJzbWl0aCBkaWQgbWUgbXVjaCBldmlsOiB0aGUgTG9yZCByZXdhcmQgaGltIGFjY29yZGluZyB0byBoaXMgd29ya3M6Ck9mIHdob20gYmUgdGhvdSB3YXJlIGFsc287IGZvciBoZSBoYXRoIGdyZWF0bHkgd2l0aHN0b29kIG91ciB3b3Jkcy4KQXQgbXkgZmlyc3QgYW5zd2VyIG5vIG1hbiBzdG9vZCB3aXRoIG1lLCBidXQgYWxsIFttZW5dIGZvcnNvb2sgbWU6IFtJIHByYXkgR29kXSB0aGF0IGl0IG1heSBub3QgYmUgbGFpZCB0byB0aGVpciBjaGFyZ2UuCk5vdHdpdGhzdGFuZGluZyB0aGUgTG9yZCBzdG9vZCB3aXRoIG1lLCBhbmQgc3RyZW5ndGhlbmVkIG1lOyB0aGF0IGJ5IG1lIHRoZSBwcmVhY2hpbmcgbWlnaHQgYmUgZnVsbHkga25vd24sIGFuZCBbdGhhdF0gYWxsIHRoZSBHZW50aWxlcyBtaWdodCBoZWFyOiBhbmQgSSB3YXMgZGVsaXZlcmVkIG91dCBvZiB0aGUgbW91dGggb2YgdGhlIGxpb24uCkFuZCB0aGUgTG9yZCBzaGFsbCBkZWxpdmVyIG1lIGZyb20gZXZlcnkgZXZpbCB3b3JrLCBhbmQgd2lsbCBwcmVzZXJ2ZSBbbWVdIHVudG8gaGlzIGhlYXZlbmx5IGtpbmdkb206IHRvIHdob20gW2JlXSBnbG9yeSBmb3IgZXZlciBhbmQgZXZlci4gQW1lbi4KU2FsdXRlIFByaXNjYSBhbmQgQXF1aWxhLCBhbmQgdGhlIGhvdXNlaG9sZCBvZiBPbmVzaXBob3J1cy4KRXJhc3R1cyBhYm9kZSBhdCBDb3JpbnRoOiBidXQgVHJvcGhpbXVzIGhhdmUgSSBsZWZ0IGF0IE1pbGV0dW0gc2ljay4KRG8gdGh5IGRpbGlnZW5jZSB0byBjb21lIGJlZm9yZSB3aW50ZXIuIEV1YnVsdXMgZ3JlZXRldGggdGhlZSwgYW5kIFB1ZGVucywgYW5kIExpbnVzLCBhbmQgQ2xhdWRpYSwgYW5kIGFsbCB0aGUgYnJldGhyZW4uClRoZSBMb3JkIEplc3VzIENocmlzdCBbYmVdIHdpdGggdGh5IHNwaXJpdC4gR3JhY2UgW2JlXSB3aXRoIHlvdS4gQW1lbi4KUGF1bCwgYSBzZXJ2YW50IG9mIEdvZCwgYW5kIGFuIGFwb3N0bGUgb2YgSmVzdXMgQ2hyaXN0LCBhY2NvcmRpbmcgdG8gdGhlIGZhaXRoIG9mIEdvZCdzIGVsZWN0LCBhbmQgdGhlIGFja25vd2xlZGdpbmcgb2YgdGhlIHRydXRoIHdoaWNoIGlzIGFmdGVyIGdvZGxpbmVzczsKSW4gaG9wZSBvZiBldGVybmFsIGxpZmUsIHdoaWNoIEdvZCwgdGhhdCBjYW5ub3QgbGllIHByb21pc2VkIGJlZm9yZSB0aGUgd29ybGQgYmVnYW47CkJ1dCBoYXRoIGluIGR1ZSB0aW1lcyBtYW5pZmVzdGVkIGhpcyB3b3JkIHRocm91Z2ggcHJlYWNoaW5nLCB3aGljaCBpcyBjb21taXR0ZWQgdW50byBtZSBhY2NvcmRpbmcgdG8gdGhlIGNvbW1hbmRtZW50IG9mIEdvZCBvdXIgU2F2aW91cjsKVG8gVGl0dXMsIG1pbmUgb3duIHNvbiBhZnRlciB0aGUgY29tbW9uIGZhaXRoOiBHcmFjZSwgbWVyY3ksIGFuZCBwZWFjZSwgZnJvbSBHb2QgdGhlIEZhdGhlciBhbmQgdGhlIExvcmQgSmVzdXMgQ2hyaXN0IG91ciBTYXZpb3VyLgpGb3IgdGhpcyBjYXVzZSBsZWZ0IEkgdGhlZSBpbiBDcmV0ZSwgdGhhdCB0aG91IHNob3VsZGVzdCBzZXQgaW4gb3JkZXIgdGhlIHRoaW5ncyB0aGF0IGFyZSB3YW50aW5nLCBhbmQgb3JkYWluIGVsZGVycyBpbiBldmVyeSBjaXR5LCBhcyBJIGhhZCBhcHBvaW50ZWQgdGhlZToKSWYgYW55IGJlIGJsYW1lbGVzcywgdGhlIGh1c2JhbmQgb2Ygb25lIHdpZmUsIGhhdmluZyBmYWl0aGZ1bCBjaGlsZHJlbiBub3QgYWNjdXNlZCBvZiByaW90IG9yIHVucnVseS4KRm9yIGEgYmlzaG9wIG11c3QgYmUgYmxhbWVsZXNzLCBhcyB0aGUgc3Rld2FyZCBvZiBHb2Q7IG5vdCBzZWxmd2lsbGVkLCBub3Qgc29vbiBhbmdyeSwgbm90IGdpdmVuIHRvIHdpbmUsIG5vIHN0cmlrZXIsIG5vdCBnaXZlbiB0byBmaWx0aHkgbHVjcmU7CkJ1dCBhIGxvdmVyIG9mIGhvc3BpdGFsaXR5LCBhIGxvdmVyIG9mIGdvb2QgbWVuLCBzb2JlciwganVzdCwgaG9seSwgdGVtcGVyYXRlOwpIb2xkaW5nIGZhc3QgdGhlIGZhaXRoZnVsIHdvcmQgYXMgaGUgaGF0aCBiZWVuIHRhdWdodCwgdGhhdCBoZSBtYXkgYmUgYWJsZSBieSBzb3VuZCBkb2N0cmluZSBib3RoIHRvIGV4aG9ydCBhbmQgdG8gY29udmluY2UgdGhlIGdhaW5zYXllcnMuCkZvciB0aGVyZSBhcmUgbWFueSB1bnJ1bHkgYW5kIHZhaW4gdGFsa2VycyBhbmQgZGVjZWl2ZXJzLCBzcGVjaWFsbHkgdGhleSBvZiB0aGUgY2lyY3VtY2lzaW9uOgpXaG9zZSBtb3V0aHMgbXVzdCBiZSBzdG9wcGVkLCB3aG8gc3VidmVydCB3aG9sZSBob3VzZXMsIHRlYWNoaW5nIHRoaW5ncyB3aGljaCB0aGV5IG91Z2h0IG5vdCwgZm9yIGZpbHRoeSBsdWNyZSdzIHNha2UuCk9uZSBvZiB0aGVtc2VsdmVzLCBldmVuIGEgcHJvcGhldCBvZiB0aGVpciBvd24sIHNhaWQsIFRoZSBDcmV0aWFucyBhcmUgYWx3YXkgbGlhcnMsIGV2aWwgYmVhc3RzLCBzbG93IGJlbGxpZXMuClRoaXMgd2l0bmVzcyBpcyB0cnVlLiBXaGVyZWZvcmUgcmVidWtlIHRoZW0gc2hhcnBseSwgdGhhdCB0aGV5IG1heSBiZSBzb3VuZCBpbiB0aGUgZmFpdGg7Ck5vdCBnaXZpbmcgaGVlZCB0byBKZXdpc2ggZmFibGVzIGFuZCBjb21tYW5kbWVudHMgb2YgbWVuLCB0aGF0IHR1cm4gZnJvbSB0aGUgdHJ1dGguClVudG8gdGhlIHB1cmUgYWxsIHRoaW5ncyBhcmUgcHVyZTogYnV0IHVudG8gdGhlbSB0aGF0IGFyZSBkZWZpbGVkIGFuZCB1bmJlbGlldmluZyBpcyBub3RoaW5nIHB1cmU7IGJ1dCBldmVuIHRoZWlyIG1pbmQgYW5kIGNvbnNjaWVuY2UgaXMgZGVmaWxlZC4KVGhleSBwcm9mZXNzIHRoYXQgdGhleSBrbm93IEdvZDsgYnV0IGluIHdvcmtzIHRoZXkgZGVueSBoaW0sIGJlaW5nIGFib21pbmFibGUsIGFuZCBkaXNvYmVkaWVudCwgYW5kIHVudG8gZXZlcnkgZ29vZCB3b3JrIHJlcHJvYmF0ZS4KQnV0IHNwZWFrIHRob3UgdGhlIHRoaW5ncyB3aGljaCBiZWNvbWUgc291bmQgZG9jdHJpbmU6ClRoYXQgdGhlIGFnZWQgbWVuIGJlIHNvYmVyLCBncmF2ZSwgdGVtcGVyYXRlLCBzb3VuZCBpbiBmYWl0aCwgaW4gY2hhcml0eSwgaW4gcGF0aWVuY2UuClRoZSBhZ2VkIHdvbWVuIGxpa2V3aXNlLCB0aGF0IHRoZXkgYmUgaW4gYmVoYXZpb3IgYXMgYmVjb21ldGggaG9saW5lc3MsIG5vdCBmYWxzZSBhY2N1c2Vycywgbm90IGdpdmVuIHRvIG11Y2ggd2luZSwgdGVhY2hlcnMgb2YgZ29vZCB0aGluZ3M7ClRoYXQgdGhleSBtYXkgdGVhY2ggdGhlIHlvdW5nIHdvbWVuIHRvIGJlIHNvYmVyLCB0byBsb3ZlIHRoZWlyIGh1c2JhbmRzLCB0byBsb3ZlIHRoZWlyIGNoaWxkcmVuLApUbyBiZSBkaXNjcmVldCwgY2hhc3RlLCBrZWVwZXJzIGF0IGhvbWUsIGdvb2QsIG9iZWRpZW50IHRvIHRoZWlyIG93biBodXNiYW5kcywgdGhhdCB0aGUgd29yZCBvZiBHb2QgYmUgbm90IGJsYXNwaGVtZWQuCllvdW5nIG1lbiBsaWtld2lzZSBleGhvcnQgdG8gYmUgc29iZXIgbWluZGVkLgpJbiBhbGwgdGhpbmdzIHNoZXdpbmcgdGh5c2VsZiBhIHBhdHRlcm4gb2YgZ29vZCB3b3JrczogaW4gZG9jdHJpbmUgc2hld2luZyB1bmNvcnJ1cHRuZXNzLCBncmF2aXR5LCBzaW5jZXJpdHksClNvdW5kIHNwZWVjaCB0aGF0IGNhbm5vdCBiZSBjb25kZW1uZWQ7IHRoYXQgaGUgdGhhdCBpcyBvZiB0aGUgY29udHJhcnkgcGFydCBtYXkgYmUgYXNoYW1lZCwgaGF2aW5nIG5vIGV2aWwgdGhpbmcgdG8gc2F5IG9mIHlvdS4KRXhob3J0IHNlcnZhbnRzIHRvIGJlIG9iZWRpZW50IHVudG8gdGhlaXIgb3duIG1hc3RlcnMsIGFuZCB0byBwbGVhc2UgdGhlbSB3ZWxsIGluIGFsbCB0aGluZ3M7IG5vdCBhbnN3ZXJpbmcgYWdhaW47Ck5vdCBwdXJsb2luaW5nLCBidXQgc2hld2luZyBhbGwgZ29vZCBmaWRlbGl0eTsgdGhhdCB0aGV5IG1heSBhZG9ybiB0aGUgZG9jdHJpbmUgb2YgR29kIG91ciBTYXZpb3VyIGluIGFsbCB0aGluZ3MuCkZvciB0aGUgZ3JhY2Ugb2YgR29kIHRoYXQgYnJpbmdldGggc2FsdmF0aW9uIGhhdGggYXBwZWFyZWQgdG8gYWxsIG1lbiwKVGVhY2hpbmcgdXMgdGhhdCwgZGVueWluZyB1bmdvZGxpbmVzcyBhbmQgd29ybGRseSBsdXN0cywgd2Ugc2hvdWxkIGxpdmUgc29iZXJseSwgcmlnaHRlb3VzbHksIGFuZCBnb2RseSwgaW4gdGhpcyBwcmVzZW50IHdvcmxkOwpMb29raW5nIGZvciB0aGF0IGJsZXNzZWQgaG9wZSwgYW5kIHRoZSBnbG9yaW91cyBhcHBlYXJpbmcgb2YgdGhlIGdyZWF0IEdvZCBhbmQgb3VyIFNhdmlvdXIgSmVzdXMgQ2hyaXN0OwpXaG8gZ2F2ZSBoaW1zZWxmIGZvciB1cywgdGhhdCBoZSBtaWdodCByZWRlZW0gdXMgZnJvbSBhbGwgaW5pcXVpdHksIGFuZCBwdXJpZnkgdW50byBoaW1zZWxmIGEgcGVjdWxpYXIgcGVvcGxlLCB6ZWFsb3VzIG9mIGdvb2Qgd29ya3MuClRoZXNlIHRoaW5ncyBzcGVhaywgYW5kIGV4aG9ydCwgYW5kIHJlYnVrZSB3aXRoIGFsbCBhdXRob3JpdHkuIExldCBubyBtYW4gZGVzcGlzZSB0aGVlLgpQdXQgdGhlbSBpbiBtaW5kIHRvIGJlIHN1YmplY3QgdG8gcHJpbmNpcGFsaXRpZXMgYW5kIHBvd2VycywgdG8gb2JleSBtYWdpc3RyYXRlcywgdG8gYmUgcmVhZHkgdG8gZXZlcnkgZ29vZCB3b3JrLApUbyBzcGVhayBldmlsIG9mIG5vIG1hbiwgdG8gYmUgbm8gYnJhd2xlcnMsIGJ1dCBnZW50bGUsIHNoZXdpbmcgYWxsIG1lZWtuZXNzIHVudG8gYWxsIG1lbi4KRm9yIHdlIG91cnNlbHZlcyBhbHNvIHdlcmUgc29tZXRpbWVzIGZvb2xpc2gsIGRpc29iZWRpZW50LCBkZWNlaXZlZCwgc2VydmluZyBkaXZlcnMgbHVzdHMgYW5kIHBsZWFzdXJlcywgbGl2aW5nIGluIG1hbGljZSBhbmQgZW52eSwgaGF0ZWZ1bCwgYW5kIGhhdGluZyBvbmUgYW5vdGhlci4KQnV0IGFmdGVyIHRoYXQgdGhlIGtpbmRuZXNzIGFuZCBsb3ZlIG9mIEdvZCBvdXIgU2F2aW91ciB0b3dhcmQgbWFuIGFwcGVhcmVkLApOb3QgYnkgd29ya3Mgb2YgcmlnaHRlb3VzbmVzcyB3aGljaCB3ZSBoYXZlIGRvbmUsIGJ1dCBhY2NvcmRpbmcgdG8gaGlzIG1lcmN5IGhlIHNhdmVkIHVzLCBieSB0aGUgd2FzaGluZyBvZiByZWdlbmVyYXRpb24sIGFuZCByZW5ld2luZyBvZiB0aGUgSG9seSBHaG9zdDsKV2hpY2ggaGUgc2hlZCBvbiB1cyBhYnVuZGFudGx5IHRocm91Z2ggSmVzdXMgQ2hyaXN0IG91ciBTYXZpb3VyOwpUaGF0IGJlaW5nIGp1c3RpZmllZCBieSBoaXMgZ3JhY2UsIHdlIHNob3VsZCBiZSBtYWRlIGhlaXJzIGFjY29yZGluZyB0byB0aGUgaG9wZSBvZiBldGVybmFsIGxpZmUuClRoaXMgaXMgYSBmYWl0aGZ1bCBzYXlpbmcsIGFuZCB0aGVzZSB0aGluZ3MgSSB3aWxsIHRoYXQgdGhvdSBhZmZpcm0gY29uc3RhbnRseSwgdGhhdCB0aGV5IHdoaWNoIGhhdmUgYmVsaWV2ZWQgaW4gR29kIG1pZ2h0IGJlIGNhcmVmdWwgdG8gbWFpbnRhaW4gZ29vZCB3b3Jrcy4gVGhlc2UgdGhpbmdzIGFyZSBnb29kIGFuZCBwcm9maXRhYmxlIHVudG8gbWVuLgpCdXQgYXZvaWQgZm9vbGlzaCBxdWVzdGlvbnMsIGFuZCBnZW5lYWxvZ2llcywgYW5kIGNvbnRlbnRpb25zLCBhbmQgc3RyaXZpbmdzIGFib3V0IHRoZSBsYXc7IGZvciB0aGV5IGFyZSB1bnByb2ZpdGFibGUgYW5kIHZhaW4uCkEgbWFuIHRoYXQgaXMgYW4gaGVyZXRpYyBhZnRlciB0aGUgZmlyc3QgYW5kIHNlY29uZCBhZG1vbml0aW9uIHJlamVjdDsKS25vd2luZyB0aGF0IGhlIHRoYXQgaXMgc3VjaCBpcyBzdWJ2ZXJ0ZWQsIGFuZCBzaW5uZXRoLCBiZWluZyBjb25kZW1uZWQgb2YgaGltc2VsZi4KV2hlbiBJIHNoYWxsIHNlbmQgQXJ0ZW1hcyB1bnRvIHRoZWUsIG9yIFR5Y2hpY3VzLCBiZSBkaWxpZ2VudCB0byBjb21lIHVudG8gbWUgdG8gTmljb3BvbGlzOiBmb3IgSSBoYXZlIGRldGVybWluZWQgdGhlcmUgdG8gd2ludGVyLgpCcmluZyBaZW5hcyB0aGUgbGF3eWVyIGFuZCBBcG9sbG9zIG9uIHRoZWlyIGpvdXJuZXkgZGlsaWdlbnRseSwgdGhhdCBub3RoaW5nIGJlIHdhbnRpbmcgdW50byB0aGVtLgpBbmQgbGV0IG91cnMgYWxzbyBsZWFybiB0byBtYWludGFpbiBnb29kIHdvcmtzIGZvciBuZWNlc3NhcnkgdXNlcywgdGhhdCB0aGV5IGJlIG5vdCB1bmZydWl0ZnVsLgpBbGwgdGhhdCBhcmUgd2l0aCBtZSBzYWx1dGUgdGhlZS4gR3JlZXQgdGhlbSB0aGF0IGxvdmUgdXMgaW4gdGhlIGZhaXRoLiBHcmFjZSBiZSB3aXRoIHlvdSBhbGwuIEFtZW4uClBhdWwsIGEgcHJpc29uZXIgb2YgSmVzdXMgQ2hyaXN0LCBhbmQgVGltb3RoeSBbb3VyXSBicm90aGVyLCB1bnRvIFBoaWxlbW9uIG91ciBkZWFybHkgYmVsb3ZlZCwgYW5kIGZlbGxvd2xhYm91cmVyLApBbmQgdG8gW291cl0gYmVsb3ZlZCBBcHBoaWEsIGFuZCBBcmNoaXBwdXMgb3VyIGZlbGxvd3NvbGRpZXIsIGFuZCB0byB0aGUgY2h1cmNoIGluIHRoeSBob3VzZToKR3JhY2UgdG8geW91LCBhbmQgcGVhY2UsIGZyb20gR29kIG91ciBGYXRoZXIgYW5kIHRoZSBMb3JkIEplc3VzIENocmlzdC4KSSB0aGFuayBteSBHb2QsIG1ha2luZyBtZW50aW9uIG9mIHRoZWUgYWx3YXlzIGluIG15IHByYXllcnMsCkhlYXJpbmcgb2YgdGh5IGxvdmUgYW5kIGZhaXRoLCB3aGljaCB0aG91IGhhc3QgdG93YXJkIHRoZSBMb3JkIEplc3VzLCBhbmQgdG93YXJkIGFsbCBzYWludHM7ClRoYXQgdGhlIGNvbW11bmljYXRpb24gb2YgdGh5IGZhaXRoIG1heSBiZWNvbWUgZWZmZWN0dWFsIGJ5IHRoZSBhY2tub3dsZWRnaW5nIG9mIGV2ZXJ5IGdvb2QgdGhpbmcgd2hpY2ggaXMgaW4geW91IGluIENocmlzdCBKZXN1cy4KRm9yIHdlIGhhdmUgZ3JlYXQgam95IGFuZCBjb25zb2xhdGlvbiBpbiB0aHkgbG92ZSwgYmVjYXVzZSB0aGUgYm93ZWxzIG9mIHRoZSBzYWludHMgYXJlIHJlZnJlc2hlZCBieSB0aGVlLCBicm90aGVyLgpXaGVyZWZvcmUsIHRob3VnaCBJIG1pZ2h0IGJlIG11Y2ggYm9sZCBpbiBDaHJpc3QgdG8gZW5qb2luIHRoZWUgdGhhdCB3aGljaCBpcyBjb252ZW5pZW50LApZZXQgZm9yIGxvdmUncyBzYWtlIEkgcmF0aGVyIGJlc2VlY2ggW3RoZWVdLCBiZWluZyBzdWNoIGFuIG9uZSBhcyBQYXVsIHRoZSBhZ2VkLCBhbmQgbm93IGFsc28gYSBwcmlzb25lciBvZiBKZXN1cyBDaHJpc3QuCkkgYmVzZWVjaCB0aGVlIGZvciBteSBzb24gT25lc2ltdXMsIHdob20gSSBoYXZlIGJlZ290dGVuIGluIG15IGJvbmRzOgpXaGljaCBpbiB0aW1lIHBhc3Qgd2FzIHRvIHRoZWUgdW5wcm9maXRhYmxlLCBidXQgbm93IHByb2ZpdGFibGUgdG8gdGhlZSBhbmQgdG8gbWU6Cldob20gSSBoYXZlIHNlbnQgYWdhaW46IHRob3UgdGhlcmVmb3JlIHJlY2VpdmUgaGltLCB0aGF0IGlzLCBtaW5lIG93biBib3dlbHM6Cldob20gSSB3b3VsZCBoYXZlIHJldGFpbmVkIHdpdGggbWUsIHRoYXQgaW4gdGh5IHN0ZWFkIGhlIG1pZ2h0IGhhdmUgbWluaXN0ZXJlZCB1bnRvIG1lIGluIHRoZSBib25kcyBvZiB0aGUgZ29zcGVsOgpCdXQgd2l0aG91dCB0aHkgbWluZCB3b3VsZCBJIGRvIG5vdGhpbmc7IHRoYXQgdGh5IGJlbmVmaXQgc2hvdWxkIG5vdCBiZSBhcyBpdCB3ZXJlIG9mIG5lY2Vzc2l0eSwgYnV0IHdpbGxpbmdseS4KRm9yIHBlcmhhcHMgaGUgdGhlcmVmb3JlIGRlcGFydGVkIGZvciBhIHNlYXNvbiwgdGhhdCB0aG91IHNob3VsZGVzdCByZWNlaXZlIGhpbSBmb3IgZXZlcjsKTm90IG5vdyBhcyBhIHNlcnZhbnQsIGJ1dCBhYm92ZSBhIHNlcnZhbnQsIGEgYnJvdGhlciBiZWxvdmVkLCBzcGVjaWFsbHkgdG8gbWUsIGJ1dCBob3cgbXVjaCBtb3JlIHVudG8gdGhlZSwgYm90aCBpbiB0aGUgZmxlc2gsIGFuZCBpbiB0aGUgTG9yZD8KSWYgdGhvdSBjb3VudCBtZSB0aGVyZWZvcmUgYSBwYXJ0bmVyLCByZWNlaXZlIGhpbSBhcyBteXNlbGYuCklmIGhlIGhhdGggd3JvbmdlZCB0aGVlLCBvciBvd2V0aCBbdGhlZV0gb3VnaHQsIHB1dCB0aGF0IG9uIG1pbmUgYWNjb3VudDsKSSBQYXVsIGhhdmUgd3JpdHRlbiBbaXRdIHdpdGggbWluZSBvd24gaGFuZCwgSSB3aWxsIHJlcGF5IFtpdF06IGFsYmVpdCBJIGRvIG5vdCBzYXkgdG8gdGhlZSBob3cgdGhvdSBvd2VzdCB1bnRvIG1lIGV2ZW4gdGhpbmUgb3duIHNlbGYgYmVzaWRlcy4KWWVhLCBicm90aGVyLCBsZXQgbWUgaGF2ZSBqb3kgb2YgdGhlZSBpbiB0aGUgTG9yZDogcmVmcmVzaCBteSBib3dlbHMgaW4gdGhlIExvcmQuCkhhdmluZyBjb25maWRlbmNlIGluIHRoeSBvYmVkaWVuY2UgSSB3cm90ZSB1bnRvIHRoZWUsIGtub3dpbmcgdGhhdCB0aG91IHdpbHQgYWxzbyBkbyBtb3JlIHRoYW4gSSBzYXkuCkJ1dCB3aXRoYWwgcHJlcGFyZSBtZSBhbHNvIGEgbG9kZ2luZzogZm9yIEkgdHJ1c3QgdGhhdCB0aHJvdWdoIHlvdXIgcHJheWVycyBJIHNoYWxsIGJlIGdpdmVuIHVudG8geW91LgpUaGVyZSBzYWx1dGUgdGhlZSBFcGFwaHJhcywgbXkgZmVsbG93cHJpc29uZXIgaW4gQ2hyaXN0IEplc3VzOwpNYXJjdXMsIEFyaXN0YXJjaHVzLCBEZW1hcywgTHVjYXMsIG15IGZlbGxvd2xhYm91cmVycy4KVGhlIGdyYWNlIG9mIG91ciBMb3JkIEplc3VzIENocmlzdCBbYmVdIHdpdGggeW91ciBzcGlyaXQuIEFtZW4uCkdvZCwgd2hvIGF0IHN1bmRyeSB0aW1lcyBhbmQgaW4gZGl2ZXJzIG1hbm5lcnMgc3Bha2UgaW4gdGltZSBwYXN0IHVudG8gdGhlIGZhdGhlcnMgYnkgdGhlIHByb3BoZXRzLApIYXRoIGluIHRoZXNlIGxhc3QgZGF5cyBzcG9rZW4gdW50byB1cyBieSBoaXMgU29uLCB3aG9tIGhlIGhhdGggYXBwb2ludGVkIGhlaXIgb2YgYWxsIHRoaW5ncywgYnkgd2hvbSBhbHNvIGhlIG1hZGUgdGhlIHdvcmxkczsKV2hvIGJlaW5nIHRoZSBicmlnaHRuZXNzIG9mIGhpcyBnbG9yeSwgYW5kIHRoZSBleHByZXNzIGltYWdlIG9mIGhpcyBwZXJzb24sIGFuZCB1cGhvbGRpbmcgYWxsIHRoaW5ncyBieSB0aGUgd29yZCBvZiBoaXMgcG93ZXIsIHdoZW4gaGUgaGFkIGJ5IGhpbXNlbGYgcHVyZ2VkIG91ciBzaW5zLCBzYXQgZG93biBvbiB0aGUgcmlnaHQgaGFuZCBvZiB0aGUgTWFqZXN0eSBvbiBoaWdoOgpCZWluZyBtYWRlIHNvIG11Y2ggYmV0dGVyIHRoYW4gdGhlIGFuZ2VscywgYXMgaGUgaGF0aCBieSBpbmhlcml0YW5jZSBvYnRhaW5lZCBhIG1vcmUgZXhjZWxsZW50IG5hbWUgdGhhbiB0aGV5LgpGb3IgdW50byB3aGljaCBvZiB0aGUgYW5nZWxzIHNhaWQgaGUgYXQgYW55IHRpbWUsIFRob3UgYXJ0IG15IFNvbiwgdGhpcyBkYXkgaGF2ZSBJIGJlZ290dGVuIHRoZWU/IEFuZCBhZ2FpbiwgSSB3aWxsIGJlIHRvIGhpbSBhIEZhdGhlciwgYW5kIGhlIHNoYWxsIGJlIHRvIG1lIGEgU29uPwpBbmQgYWdhaW4sIHdoZW4gaGUgYnJpbmdldGggaW4gdGhlIGZpcnN0YmVnb3R0ZW4gaW50byB0aGUgd29ybGQsIGhlIHNhaXRoLCBBbmQgbGV0IGFsbCB0aGUgYW5nZWxzIG9mIEdvZCB3b3JzaGlwIGhpbS4KQW5kIG9mIHRoZSBhbmdlbHMgaGUgc2FpdGgsIFdobyBtYWtldGggaGlzIGFuZ2VscyBzcGlyaXRzLCBhbmQgaGlzIG1pbmlzdGVycyBhIGZsYW1lIG9mIGZpcmUuCkJ1dCB1bnRvIHRoZSBTb24gaGUgc2FpdGgsIFRoeSB0aHJvbmUsIE8gR29kLCBpcyBmb3IgZXZlciBhbmQgZXZlcjogYSBzY2VwdHJlIG9mIHJpZ2h0ZW91c25lc3MgaXMgdGhlIHNjZXB0cmUgb2YgdGh5IGtpbmdkb20uClRob3UgaGFzdCBsb3ZlZCByaWdodGVvdXNuZXNzLCBhbmQgaGF0ZWQgaW5pcXVpdHk7IHRoZXJlZm9yZSBHb2QsIGV2ZW4gdGh5IEdvZCwgaGF0aCBhbm9pbnRlZCB0aGVlIHdpdGggdGhlIG9pbCBvZiBnbGFkbmVzcyBhYm92ZSB0aHkgZmVsbG93cy4KQW5kLCBUaG91LCBMb3JkLCBpbiB0aGUgYmVnaW5uaW5nIGhhc3QgbGFpZCB0aGUgZm91bmRhdGlvbiBvZiB0aGUgZWFydGg7IGFuZCB0aGUgaGVhdmVucyBhcmUgdGhlIHdvcmtzIG9mIHRoaW5lIGhhbmRzOgpUaGV5IHNoYWxsIHBlcmlzaDsgYnV0IHRob3UgcmVtYWluZXN0OyBhbmQgdGhleSBhbGwgc2hhbGwgd2F4IG9sZCBhcyBkb3RoIGEgZ2FybWVudDsKQW5kIGFzIGEgdmVzdHVyZSBzaGFsdCB0aG91IGZvbGQgdGhlbSB1cCwgYW5kIHRoZXkgc2hhbGwgYmUgY2hhbmdlZDogYnV0IHRob3UgYXJ0IHRoZSBzYW1lLCBhbmQgdGh5IHllYXJzIHNoYWxsIG5vdCBmYWlsLgpCdXQgdG8gd2hpY2ggb2YgdGhlIGFuZ2VscyBzYWlkIGhlIGF0IGFueSB0aW1lLCBTaXQgb24gbXkgcmlnaHQgaGFuZCwgdW50aWwgSSBtYWtlIHRoaW5lIGVuZW1pZXMgdGh5IGZvb3RzdG9vbD8KQXJlIHRoZXkgbm90IGFsbCBtaW5pc3RlcmluZyBzcGlyaXRzLCBzZW50IGZvcnRoIHRvIG1pbmlzdGVyIGZvciB0aGVtIHdobyBzaGFsbCBiZSBoZWlycyBvZiBzYWx2YXRpb24/ClRoZXJlZm9yZSB3ZSBvdWdodCB0byBnaXZlIHRoZSBtb3JlIGVhcm5lc3QgaGVlZCB0byB0aGUgdGhpbmdzIHdoaWNoIHdlIGhhdmUgaGVhcmQsIGxlc3QgYXQgYW55IHRpbWUgd2Ugc2hvdWxkIGxldCB0aGVtIHNsaXAuCkZvciBpZiB0aGUgd29yZCBzcG9rZW4gYnkgYW5nZWxzIHdhcyBzdGVkZmFzdCwgYW5kIGV2ZXJ5IHRyYW5zZ3Jlc3Npb24gYW5kIGRpc29iZWRpZW5jZSByZWNlaXZlZCBhIGp1c3QgcmVjb21wZW5jZSBvZiByZXdhcmQ7CkhvdyBzaGFsbCB3ZSBlc2NhcGUsIGlmIHdlIG5lZ2xlY3Qgc28gZ3JlYXQgc2FsdmF0aW9uOyB3aGljaCBhdCB0aGUgZmlyc3QgYmVnYW4gdG8gYmUgc3Bva2VuIGJ5IHRoZSBMb3JkLCBhbmQgd2FzIGNvbmZpcm1lZCB1bnRvIHVzIGJ5IHRoZW0gdGhhdCBoZWFyZCBoaW07CkdvZCBhbHNvIGJlYXJpbmcgdGhlbSB3aXRuZXNzLCBib3RoIHdpdGggc2lnbnMgYW5kIHdvbmRlcnMsIGFuZCB3aXRoIGRpdmVycyBtaXJhY2xlcywgYW5kIGdpZnRzIG9mIHRoZSBIb2x5IEdob3N0LCBhY2NvcmRpbmcgdG8gaGlzIG93biB3aWxsPwpGb3IgdW50byB0aGUgYW5nZWxzIGhhdGggaGUgbm90IHB1dCBpbiBzdWJqZWN0aW9uIHRoZSB3b3JsZCB0byBjb21lLCB3aGVyZW9mIHdlIHNwZWFrLgpCdXQgb25lIGluIGEgY2VydGFpbiBwbGFjZSB0ZXN0aWZpZWQsIHNheWluZywgV2hhdCBpcyBtYW4sIHRoYXQgdGhvdSBhcnQgbWluZGZ1bCBvZiBoaW0/IG9yIHRoZSBzb24gb2YgbWFuIHRoYXQgdGhvdSB2aXNpdGVzdCBoaW0/ClRob3UgbWFkZXN0IGhpbSBhIGxpdHRsZSBsb3dlciB0aGFuIHRoZSBhbmdlbHM7IHRob3UgY3Jvd25lZHN0IGhpbSB3aXRoIGdsb3J5IGFuZCBob25vdXIsIGFuZCBkaWRzdCBzZXQgaGltIG92ZXIgdGhlIHdvcmtzIG9mIHRoeSBoYW5kczoKVGhvdSBoYXN0IHB1dCBhbGwgdGhpbmdzIGluIHN1YmplY3Rpb24gdW5kZXIgaGlzIGZlZXQuIEZvciBpbiB0aGF0IGhlIHB1dCBhbGwgaW4gc3ViamVjdGlvbiB1bmRlciBoaW0sIGhlIGxlZnQgbm90aGluZyB0aGF0IGlzIG5vdCBwdXQgdW5kZXIgaGltLiBCdXQgbm93IHdlIHNlZSBub3QgeWV0IGFsbCB0aGluZ3MgcHV0IHVuZGVyIGhpbS4KQnV0IHdlIHNlZSBKZXN1cywgd2hvIHdhcyBtYWRlIGEgbGl0dGxlIGxvd2VyIHRoYW4gdGhlIGFuZ2VscyBmb3IgdGhlIHN1ZmZlcmluZyBvZiBkZWF0aCwgY3Jvd25lZCB3aXRoIGdsb3J5IGFuZCBob25vdXI7IHRoYXQgaGUgYnkgdGhlIGdyYWNlIG9mIEdvZCBzaG91bGQgdGFzdGUgZGVhdGggZm9yIGV2ZXJ5IG1hbi4KRm9yIGl0IGJlY2FtZSBoaW0sIGZvciB3aG9tIGFyZSBhbGwgdGhpbmdzLCBhbmQgYnkgd2hvbSBhcmUgYWxsIHRoaW5ncywgaW4gYnJpbmdpbmcgbWFueSBzb25zIHVudG8gZ2xvcnksIHRvIG1ha2UgdGhlIGNhcHRhaW4gb2YgdGhlaXIgc2FsdmF0aW9uIHBlcmZlY3QgdGhyb3VnaCBzdWZmZXJpbmdzLgpGb3IgYm90aCBoZSB0aGF0IHNhbmN0aWZpZXRoIGFuZCB0aGV5IHdobyBhcmUgc2FuY3RpZmllZCBhcmUgYWxsIG9mIG9uZTogZm9yIHdoaWNoIGNhdXNlIGhlIGlzIG5vdCBhc2hhbWVkIHRvIGNhbGwgdGhlbSBicmV0aHJlbiwKU2F5aW5nLCBJIHdpbGwgZGVjbGFyZSB0aHkgbmFtZSB1bnRvIG15IGJyZXRocmVuLCBpbiB0aGUgbWlkc3Qgb2YgdGhlIGNodXJjaCB3aWxsIEkgc2luZyBwcmFpc2UgdW50byB0aGVlLgpBbmQgYWdhaW4sIEkgd2lsbCBwdXQgbXkgdHJ1c3QgaW4gaGltLiBBbmQgYWdhaW4sIEJlaG9sZCBJIGFuZCB0aGUgY2hpbGRyZW4gd2hpY2ggR29kIGhhdGggZ2l2ZW4gbWUuCkZvcmFzbXVjaCB0aGVuIGFzIHRoZSBjaGlsZHJlbiBhcmUgcGFydGFrZXJzIG9mIGZsZXNoIGFuZCBibG9vZCwgaGUgYWxzbyBoaW1zZWxmIGxpa2V3aXNlIHRvb2sgcGFydCBvZiB0aGUgc2FtZTsgdGhhdCB0aHJvdWdoIGRlYXRoIGhlIG1pZ2h0IGRlc3Ryb3kgaGltIHRoYXQgaGFkIHRoZSBwb3dlciBvZiBkZWF0aCwgdGhhdCBpcywgdGhlIGRldmlsOwpBbmQgZGVsaXZlciB0aGVtIHdobyB0aHJvdWdoIGZlYXIgb2YgZGVhdGggd2VyZSBhbGwgdGhlaXIgbGlmZXRpbWUgc3ViamVjdCB0byBib25kYWdlLgpGb3IgdmVyaWx5IGhlIHRvb2sgbm90IG9uIGhpbSB0aGUgbmF0dXJlIG9mIGFuZ2VsczsgYnV0IGhlIHRvb2sgb24gaGltIHRoZSBzZWVkIG9mIEFicmFoYW0uCldoZXJlZm9yZSBpbiBhbGwgdGhpbmdzIGl0IGJlaG92ZWQgaGltIHRvIGJlIG1hZGUgbGlrZSB1bnRvIGhpcyBicmV0aHJlbiwgdGhhdCBoZSBtaWdodCBiZSBhIG1lcmNpZnVsIGFuZCBmYWl0aGZ1bCBoaWdoIHByaWVzdCBpbiB0aGluZ3MgcGVydGFpbmluZyB0byBHb2QsIHRvIG1ha2UgcmVjb25jaWxpYXRpb24gZm9yIHRoZSBzaW5zIG9mIHRoZSBwZW9wbGUuCkZvciBpbiB0aGF0IGhlIGhpbXNlbGYgaGF0aCBzdWZmZXJlZCBiZWluZyB0ZW1wdGVkLCBoZSBpcyBhYmxlIHRvIHN1Y2NvdXIgdGhlbSB0aGF0IGFyZSB0ZW1wdGVkLgpXaGVyZWZvcmUsIGhvbHkgYnJldGhyZW4sIHBhcnRha2VycyBvZiB0aGUgaGVhdmVubHkgY2FsbGluZywgY29uc2lkZXIgdGhlIEFwb3N0bGUgYW5kIEhpZ2ggUHJpZXN0IG9mIG91ciBwcm9mZXNzaW9uLCBDaHJpc3QgSmVzdXM7CldobyB3YXMgZmFpdGhmdWwgdG8gaGltIHRoYXQgYXBwb2ludGVkIGhpbSwgYXMgYWxzbyBNb3NlcyB3YXMgZmFpdGhmdWwgaW4gYWxsIGhpcyBob3VzZS4KRm9yIHRoaXMgbWFuIHdhcyBjb3VudGVkIHdvcnRoeSBvZiBtb3JlIGdsb3J5IHRoYW4gTW9zZXMsIGluYXNtdWNoIGFzIGhlIHdobyBoYXRoIGJ1aWxkZWQgdGhlIGhvdXNlIGhhdGggbW9yZSBob25vdXIgdGhhbiB0aGUgaG91c2UuCkZvciBldmVyeSBob3VzZSBpcyBidWlsZGVkIGJ5IHNvbWUgbWFuOyBidXQgaGUgdGhhdCBidWlsdCBhbGwgdGhpbmdzIGlzIEdvZC4KQW5kIE1vc2VzIHZlcmlseSB3YXMgZmFpdGhmdWwgaW4gYWxsIGhpcyBob3VzZSwgYXMgYSBzZXJ2YW50LCBmb3IgYSB0ZXN0aW1vbnkgb2YgdGhvc2UgdGhpbmdzIHdoaWNoIHdlcmUgdG8gYmUgc3Bva2VuIGFmdGVyOwpCdXQgQ2hyaXN0IGFzIGEgc29uIG92ZXIgaGlzIG93biBob3VzZTsgd2hvc2UgaG91c2UgYXJlIHdlLCBpZiB3ZSBob2xkIGZhc3QgdGhlIGNvbmZpZGVuY2UgYW5kIHRoZSByZWpvaWNpbmcgb2YgdGhlIGhvcGUgZmlybSB1bnRvIHRoZSBlbmQuCldoZXJlZm9yZSAoYXMgdGhlIEhvbHkgR2hvc3Qgc2FpdGgsIFRvIGRheSBpZiB5ZSB3aWxsIGhlYXIgaGlzIHZvaWNlLApIYXJkZW4gbm90IHlvdXIgaGVhcnRzLCBhcyBpbiB0aGUgcHJvdm9jYXRpb24sIGluIHRoZSBkYXkgb2YgdGVtcHRhdGlvbiBpbiB0aGUgd2lsZGVybmVzczoKV2hlbiB5b3VyIGZhdGhlcnMgdGVtcHRlZCBtZSwgcHJvdmVkIG1lLCBhbmQgc2F3IG15IHdvcmtzIGZvcnR5IHllYXJzLgpXaGVyZWZvcmUgSSB3YXMgZ3JpZXZlZCB3aXRoIHRoYXQgZ2VuZXJhdGlvbiwgYW5kIHNhaWQsIFRoZXkgZG8gYWx3YXkgZXJyIGluIHRoZWlyIGhlYXJ0OyBhbmQgdGhleSBoYXZlIG5vdCBrbm93biBteSB3YXlzLgpTbyBJIHN3YXJlIGluIG15IHdyYXRoLCBUaGV5IHNoYWxsIG5vdCBlbnRlciBpbnRvIG15IHJlc3QuKQpUYWtlIGhlZWQsIGJyZXRocmVuLCBsZXN0IHRoZXJlIGJlIGluIGFueSBvZiB5b3UgYW4gZXZpbCBoZWFydCBvZiB1bmJlbGllZiwgaW4gZGVwYXJ0aW5nIGZyb20gdGhlIGxpdmluZyBHb2QuCkJ1dCBleGhvcnQgb25lIGFub3RoZXIgZGFpbHksIHdoaWxlIGl0IGlzIGNhbGxlZCBUbyBkYXk7IGxlc3QgYW55IG9mIHlvdSBiZSBoYXJkZW5lZCB0aHJvdWdoIHRoZSBkZWNlaXRmdWxuZXNzIG9mIHNpbi4KRm9yIHdlIGFyZSBtYWRlIHBhcnRha2VycyBvZiBDaHJpc3QsIGlmIHdlIGhvbGQgdGhlIGJlZ2lubmluZyBvZiBvdXIgY29uZmlkZW5jZSBzdGVkZmFzdCB1bnRvIHRoZSBlbmQ7CldoaWxlIGl0IGlzIHNhaWQsIFRvIGRheSBpZiB5ZSB3aWxsIGhlYXIgaGlzIHZvaWNlLCBoYXJkZW4gbm90IHlvdXIgaGVhcnRzLCBhcyBpbiB0aGUgcHJvdm9jYXRpb24uCkZvciBzb21lLCB3aGVuIHRoZXkgaGFkIGhlYXJkLCBkaWQgcHJvdm9rZTogaG93YmVpdCBub3QgYWxsIHRoYXQgY2FtZSBvdXQgb2YgRWd5cHQgYnkgTW9zZXMuCkJ1dCB3aXRoIHdob20gd2FzIGhlIGdyaWV2ZWQgZm9ydHkgeWVhcnM/IHdhcyBpdCBub3Qgd2l0aCB0aGVtIHRoYXQgaGFkIHNpbm5lZCwgd2hvc2UgY2FyY2FzZXMgZmVsbCBpbiB0aGUgd2lsZGVybmVzcz8KQW5kIHRvIHdob20gc3dhcmUgaGUgdGhhdCB0aGV5IHNob3VsZCBub3QgZW50ZXIgaW50byBoaXMgcmVzdCwgYnV0IHRvIHRoZW0gdGhhdCBiZWxpZXZlZCBub3Q/ClNvIHdlIHNlZSB0aGF0IHRoZXkgY291bGQgbm90IGVudGVyIGluIGJlY2F1c2Ugb2YgdW5iZWxpZWYuCkxldCB1cyB0aGVyZWZvcmUgZmVhciwgbGVzdCwgYSBwcm9taXNlIGJlaW5nIGxlZnQgdXMgb2YgZW50ZXJpbmcgaW50byBoaXMgcmVzdCwgYW55IG9mIHlvdSBzaG91bGQgc2VlbSB0byBjb21lIHNob3J0IG9mIGl0LgpGb3IgdW50byB1cyB3YXMgdGhlIGdvc3BlbCBwcmVhY2hlZCwgYXMgd2VsbCBhcyB1bnRvIHRoZW06IGJ1dCB0aGUgd29yZCBwcmVhY2hlZCBkaWQgbm90IHByb2ZpdCB0aGVtLCBub3QgYmVpbmcgbWl4ZWQgd2l0aCBmYWl0aCBpbiB0aGVtIHRoYXQgaGVhcmQgaXQuCkZvciB3ZSB3aGljaCBoYXZlIGJlbGlldmVkIGRvIGVudGVyIGludG8gcmVzdCwgYXMgaGUgc2FpZCwgQXMgSSBoYXZlIHN3b3JuIGluIG15IHdyYXRoLCBpZiB0aGV5IHNoYWxsIGVudGVyIGludG8gbXkgcmVzdDogYWx0aG91Z2ggdGhlIHdvcmtzIHdlcmUgZmluaXNoZWQgZnJvbSB0aGUgZm91bmRhdGlvbiBvZiB0aGUgd29ybGQuCkZvciBoZSBzcGFrZSBpbiBhIGNlcnRhaW4gcGxhY2Ugb2YgdGhlIHNldmVudGggZGF5IG9uIHRoaXMgd2lzZSwgQW5kIEdvZCBkaWQgcmVzdCB0aGUgc2V2ZW50aCBkYXkgZnJvbSBhbGwgaGlzIHdvcmtzLgpBbmQgaW4gdGhpcyBwbGFjZSBhZ2FpbiwgSWYgdGhleSBzaGFsbCBlbnRlciBpbnRvIG15IHJlc3QuClNlZWluZyB0aGVyZWZvcmUgaXQgcmVtYWluZXRoIHRoYXQgc29tZSBtdXN0IGVudGVyIHRoZXJlaW4sIGFuZCB0aGV5IHRvIHdob20gaXQgd2FzIGZpcnN0IHByZWFjaGVkIGVudGVyZWQgbm90IGluIGJlY2F1c2Ugb2YgdW5iZWxpZWY6CkFnYWluLCBoZSBsaW1pdGV0aCBhIGNlcnRhaW4gZGF5LCBzYXlpbmcgaW4gRGF2aWQsIFRvIGRheSwgYWZ0ZXIgc28gbG9uZyBhIHRpbWU7IGFzIGl0IGlzIHNhaWQsIFRvIGRheSBpZiB5ZSB3aWxsIGhlYXIgaGlzIHZvaWNlLCBoYXJkZW4gbm90IHlvdXIgaGVhcnRzLgpGb3IgaWYgSmVzdXMgaGFkIGdpdmVuIHRoZW0gcmVzdCwgdGhlbiB3b3VsZCBoZSBub3QgYWZ0ZXJ3YXJkIGhhdmUgc3Bva2VuIG9mIGFub3RoZXIgZGF5LgpUaGVyZSByZW1haW5ldGggdGhlcmVmb3JlIGEgcmVzdCB0byB0aGUgcGVvcGxlIG9mIEdvZC4KRm9yIGhlIHRoYXQgaXMgZW50ZXJlZCBpbnRvIGhpcyByZXN0LCBoZSBhbHNvIGhhdGggY2Vhc2VkIGZyb20gaGlzIG93biB3b3JrcywgYXMgR29kIGRpZCBmcm9tIGhpcy4KTGV0IHVzIGxhYm91ciB0aGVyZWZvcmUgdG8gZW50ZXIgaW50byB0aGF0IHJlc3QsIGxlc3QgYW55IG1hbiBmYWxsIGFmdGVyIHRoZSBzYW1lIGV4YW1wbGUgb2YgdW5iZWxpZWYuCkZvciB0aGUgd29yZCBvZiBHb2QgaXMgcXVpY2ssIGFuZCBwb3dlcmZ1bCwgYW5kIHNoYXJwZXIgdGhhbiBhbnkgdHdvZWRnZWQgc3dvcmQsIHBpZXJjaW5nIGV2ZW4gdG8gdGhlIGRpdmlkaW5nIGFzdW5kZXIgb2Ygc291bCBhbmQgc3Bpcml0LCBhbmQgb2YgdGhlIGpvaW50cyBhbmQgbWFycm93LCBhbmQgaXMgYSBkaXNjZXJuZXIgb2YgdGhlIHRob3VnaHRzIGFuZCBpbnRlbnRzIG9mIHRoZSBoZWFydC4KTmVpdGhlciBpcyB0aGVyZSBhbnkgY3JlYXR1cmUgdGhhdCBpcyBub3QgbWFuaWZlc3QgaW4gaGlzIHNpZ2h0OiBidXQgYWxsIHRoaW5ncyBhcmUgbmFrZWQgYW5kIG9wZW5lZCB1bnRvIHRoZSBleWVzIG9mIGhpbSB3aXRoIHdob20gd2UgaGF2ZSB0byBkby4KU2VlaW5nIHRoZW4gdGhhdCB3ZSBoYXZlIGEgZ3JlYXQgaGlnaCBwcmllc3QsIHRoYXQgaXMgcGFzc2VkIGludG8gdGhlIGhlYXZlbnMsIEplc3VzIHRoZSBTb24gb2YgR29kLCBsZXQgdXMgaG9sZCBmYXN0IG91ciBwcm9mZXNzaW9uLgpGb3Igd2UgaGF2ZSBub3QgYW4gaGlnaCBwcmllc3Qgd2hpY2ggY2Fubm90IGJlIHRvdWNoZWQgd2l0aCB0aGUgZmVlbGluZyBvZiBvdXIgaW5maXJtaXRpZXM7IGJ1dCB3YXMgaW4gYWxsIHBvaW50cyB0ZW1wdGVkIGxpa2UgYXMgd2UgYXJlLCB5ZXQgd2l0aG91dCBzaW4uCkxldCB1cyB0aGVyZWZvcmUgY29tZSBib2xkbHkgdW50byB0aGUgdGhyb25lIG9mIGdyYWNlLCB0aGF0IHdlIG1heSBvYnRhaW4gbWVyY3ksIGFuZCBmaW5kIGdyYWNlIHRvIGhlbHAgaW4gdGltZSBvZiBuZWVkLgpGb3IgZXZlcnkgaGlnaCBwcmllc3QgdGFrZW4gZnJvbSBhbW9uZyBtZW4gaXMgb3JkYWluZWQgZm9yIG1lbiBpbiB0aGluZ3MgcGVydGFpbmluZyB0byBHb2QsIHRoYXQgaGUgbWF5IG9mZmVyIGJvdGggZ2lmdHMgYW5kIHNhY3JpZmljZXMgZm9yIHNpbnM6CldobyBjYW4gaGF2ZSBjb21wYXNzaW9uIG9uIHRoZSBpZ25vcmFudCwgYW5kIG9uIHRoZW0gdGhhdCBhcmUgb3V0IG9mIHRoZSB3YXk7IGZvciB0aGF0IGhlIGhpbXNlbGYgYWxzbyBpcyBjb21wYXNzZWQgd2l0aCBpbmZpcm1pdHkuCkFuZCBieSByZWFzb24gaGVyZW9mIGhlIG91Z2h0LCBhcyBmb3IgdGhlIHBlb3BsZSwgc28gYWxzbyBmb3IgaGltc2VsZiwgdG8gb2ZmZXIgZm9yIHNpbnMuCkFuZCBubyBtYW4gdGFrZXRoIHRoaXMgaG9ub3VyIHVudG8gaGltc2VsZiwgYnV0IGhlIHRoYXQgaXMgY2FsbGVkIG9mIEdvZCwgYXMgd2FzIEFhcm9uLgpTbyBhbHNvIENocmlzdCBnbG9yaWZpZWQgbm90IGhpbXNlbGYgdG8gYmUgbWFkZSBhbiBoaWdoIHByaWVzdDsgYnV0IGhlIHRoYXQgc2FpZCB1bnRvIGhpbSwgVGhvdSBhcnQgbXkgU29uLCB0byBkYXkgaGF2ZSBJIGJlZ290dGVuIHRoZWUuCkFzIGhlIHNhaXRoIGFsc28gaW4gYW5vdGhlciBwbGFjZSwgVGhvdSBhcnQgYSBwcmllc3QgZm9yIGV2ZXIgYWZ0ZXIgdGhlIG9yZGVyIG9mIE1lbGNoaXNlZGVjLgpXaG8gaW4gdGhlIGRheXMgb2YgaGlzIGZsZXNoLCB3aGVuIGhlIGhhZCBvZmZlcmVkIHVwIHByYXllcnMgYW5kIHN1cHBsaWNhdGlvbnMgd2l0aCBzdHJvbmcgY3J5aW5nIGFuZCB0ZWFycyB1bnRvIGhpbSB0aGF0IHdhcyBhYmxlIHRvIHNhdmUgaGltIGZyb20gZGVhdGgsIGFuZCB3YXMgaGVhcmQgaW4gdGhhdCBoZSBmZWFyZWQ7ClRob3VnaCBoZSB3ZXJlIGEgU29uLCB5ZXQgbGVhcm5lZCBoZSBvYmVkaWVuY2UgYnkgdGhlIHRoaW5ncyB3aGljaCBoZSBzdWZmZXJlZDsKQW5kIGJlaW5nIG1hZGUgcGVyZmVjdCwgaGUgYmVjYW1lIHRoZSBhdXRob3Igb2YgZXRlcm5hbCBzYWx2YXRpb24gdW50byBhbGwgdGhlbSB0aGF0IG9iZXkgaGltOwpDYWxsZWQgb2YgR29kIGFuIGhpZ2ggcHJpZXN0IGFmdGVyIHRoZSBvcmRlciBvZiBNZWxjaGlzZWRlYy4KT2Ygd2hvbSB3ZSBoYXZlIG1hbnkgdGhpbmdzIHRvIHNheSwgYW5kIGhhcmQgdG8gYmUgdXR0ZXJlZCwgc2VlaW5nIHllIGFyZSBkdWxsIG9mIGhlYXJpbmcuCkZvciB3aGVuIGZvciB0aGUgdGltZSB5ZSBvdWdodCB0byBiZSB0ZWFjaGVycywgeWUgaGF2ZSBuZWVkIHRoYXQgb25lIHRlYWNoIHlvdSBhZ2FpbiB3aGljaCBiZSB0aGUgZmlyc3QgcHJpbmNpcGxlcyBvZiB0aGUgb3JhY2xlcyBvZiBHb2Q7IGFuZCBhcmUgYmVjb21lIHN1Y2ggYXMgaGF2ZSBuZWVkIG9mIG1pbGssIGFuZCBub3Qgb2Ygc3Ryb25nIG1lYXQuCkZvciBldmVyeSBvbmUgdGhhdCB1c2V0aCBtaWxrIGlzIHVuc2tpbGZ1bCBpbiB0aGUgd29yZCBvZiByaWdodGVvdXNuZXNzOiBmb3IgaGUgaXMgYSBiYWJlLgpCdXQgc3Ryb25nIG1lYXQgYmVsb25nZXRoIHRvIHRoZW0gdGhhdCBhcmUgb2YgZnVsbCBhZ2UsIGV2ZW4gdGhvc2Ugd2hvIGJ5IHJlYXNvbiBvZiB1c2UgaGF2ZSB0aGVpciBzZW5zZXMgZXhlcmNpc2VkIHRvIGRpc2Nlcm4gYm90aCBnb29kIGFuZCBldmlsLgpUaGVyZWZvcmUgbGVhdmluZyB0aGUgcHJpbmNpcGxlcyBvZiB0aGUgZG9jdHJpbmUgb2YgQ2hyaXN0LCBsZXQgdXMgZ28gb24gdW50byBwZXJmZWN0aW9uOyBub3QgbGF5aW5nIGFnYWluIHRoZSBmb3VuZGF0aW9uIG9mIHJlcGVudGFuY2UgZnJvbSBkZWFkIHdvcmtzLCBhbmQgb2YgZmFpdGggdG93YXJkIEdvZCwKT2YgdGhlIGRvY3RyaW5lIG9mIGJhcHRpc21zLCBhbmQgb2YgbGF5aW5nIG9uIG9mIGhhbmRzLCBhbmQgb2YgcmVzdXJyZWN0aW9uIG9mIHRoZSBkZWFkLCBhbmQgb2YgZXRlcm5hbCBqdWRnbWVudC4KQW5kIHRoaXMgd2lsbCB3ZSBkbywgaWYgR29kIHBlcm1pdC4KRm9yIGl0IGlzIGltcG9zc2libGUgZm9yIHRob3NlIHdobyB3ZXJlIG9uY2UgZW5saWdodGVuZWQsIGFuZCBoYXZlIHRhc3RlZCBvZiB0aGUgaGVhdmVubHkgZ2lmdCwgYW5kIHdlcmUgbWFkZSBwYXJ0YWtlcnMgb2YgdGhlIEhvbHkgR2hvc3QsCkFuZCBoYXZlIHRhc3RlZCB0aGUgZ29vZCB3b3JkIG9mIEdvZCwgYW5kIHRoZSBwb3dlcnMgb2YgdGhlIHdvcmxkIHRvIGNvbWUsCklmIHRoZXkgc2hhbGwgZmFsbCBhd2F5LCB0byByZW5ldyB0aGVtIGFnYWluIHVudG8gcmVwZW50YW5jZTsgc2VlaW5nIHRoZXkgY3J1Y2lmeSB0byB0aGVtc2VsdmVzIHRoZSBTb24gb2YgR29kIGFmcmVzaCwgYW5kIHB1dCBoaW0gdG8gYW4gb3BlbiBzaGFtZS4KRm9yIHRoZSBlYXJ0aCB3aGljaCBkcmlua2V0aCBpbiB0aGUgcmFpbiB0aGF0IGNvbWV0aCBvZnQgdXBvbiBpdCwgYW5kIGJyaW5nZXRoIGZvcnRoIGhlcmJzIG1lZXQgZm9yIHRoZW0gYnkgd2hvbSBpdCBpcyBkcmVzc2VkLCByZWNlaXZldGggYmxlc3NpbmcgZnJvbSBHb2Q6CkJ1dCB0aGF0IHdoaWNoIGJlYXJldGggdGhvcm5zIGFuZCBicmllcnMgaXMgcmVqZWN0ZWQsIGFuZCBpcyBuaWdoIHVudG8gY3Vyc2luZzsgd2hvc2UgZW5kIGlzIHRvIGJlIGJ1cm5lZC4KQnV0LCBiZWxvdmVkLCB3ZSBhcmUgcGVyc3VhZGVkIGJldHRlciB0aGluZ3Mgb2YgeW91LCBhbmQgdGhpbmdzIHRoYXQgYWNjb21wYW55IHNhbHZhdGlvbiwgdGhvdWdoIHdlIHRodXMgc3BlYWsuCkZvciBHb2QgaXMgbm90IHVucmlnaHRlb3VzIHRvIGZvcmdldCB5b3VyIHdvcmsgYW5kIGxhYm91ciBvZiBsb3ZlLCB3aGljaCB5ZSBoYXZlIHNoZXdlZCB0b3dhcmQgaGlzIG5hbWUsIGluIHRoYXQgeWUgaGF2ZSBtaW5pc3RlcmVkIHRvIHRoZSBzYWludHMsIGFuZCBkbyBtaW5pc3Rlci4KQW5kIHdlIGRlc2lyZSB0aGF0IGV2ZXJ5IG9uZSBvZiB5b3UgZG8gc2hldyB0aGUgc2FtZSBkaWxpZ2VuY2UgdG8gdGhlIGZ1bGwgYXNzdXJhbmNlIG9mIGhvcGUgdW50byB0aGUgZW5kOgpUaGF0IHllIGJlIG5vdCBzbG90aGZ1bCwgYnV0IGZvbGxvd2VycyBvZiB0aGVtIHdobyB0aHJvdWdoIGZhaXRoIGFuZCBwYXRpZW5jZSBpbmhlcml0IHRoZSBwcm9taXNlcy4KRm9yIHdoZW4gR29kIG1hZGUgcHJvbWlzZSB0byBBYnJhaGFtLCBiZWNhdXNlIGhlIGNvdWxkIHN3ZWFyIGJ5IG5vIGdyZWF0ZXIsIGhlIHN3YXJlIGJ5IGhpbXNlbGYsClNheWluZywgU3VyZWx5IGJsZXNzaW5nIEkgd2lsbCBibGVzcyB0aGVlLCBhbmQgbXVsdGlwbHlpbmcgSSB3aWxsIG11bHRpcGx5IHRoZWUuCkFuZCBzbywgYWZ0ZXIgaGUgaGFkIHBhdGllbnRseSBlbmR1cmVkLCBoZSBvYnRhaW5lZCB0aGUgcHJvbWlzZS4KRm9yIG1lbiB2ZXJpbHkgc3dlYXIgYnkgdGhlIGdyZWF0ZXI6IGFuZCBhbiBvYXRoIGZvciBjb25maXJtYXRpb24gaXMgdG8gdGhlbSBhbiBlbmQgb2YgYWxsIHN0cmlmZS4KV2hlcmVpbiBHb2QsIHdpbGxpbmcgbW9yZSBhYnVuZGFudGx5IHRvIHNoZXcgdW50byB0aGUgaGVpcnMgb2YgcHJvbWlzZSB0aGUgaW1tdXRhYmlsaXR5IG9mIGhpcyBjb3Vuc2VsLCBjb25maXJtZWQgaXQgYnkgYW4gb2F0aDoKVGhhdCBieSB0d28gaW1tdXRhYmxlIHRoaW5ncywgaW4gd2hpY2ggaXQgd2FzIGltcG9zc2libGUgZm9yIEdvZCB0byBsaWUsIHdlIG1pZ2h0IGhhdmUgYSBzdHJvbmcgY29uc29sYXRpb24sIHdobyBoYXZlIGZsZWQgZm9yIHJlZnVnZSB0byBsYXkgaG9sZCB1cG9uIHRoZSBob3BlIHNldCBiZWZvcmUgdXM6CldoaWNoIGhvcGUgd2UgaGF2ZSBhcyBhbiBhbmNob3Igb2YgdGhlIHNvdWwsIGJvdGggc3VyZSBhbmQgc3RlZGZhc3QsIGFuZCB3aGljaCBlbnRlcmV0aCBpbnRvIHRoYXQgd2l0aGluIHRoZSB2ZWlsOwpXaGl0aGVyIHRoZSBmb3JlcnVubmVyIGlzIGZvciB1cyBlbnRlcmVkLCBldmVuIEplc3VzLCBtYWRlIGFuIGhpZ2ggcHJpZXN0IGZvciBldmVyIGFmdGVyIHRoZSBvcmRlciBvZiBNZWxjaGlzZWRlYy4KRm9yIHRoaXMgTWVsY2hpc2VkZWMsIGtpbmcgb2YgU2FsZW0sIHByaWVzdCBvZiB0aGUgbW9zdCBoaWdoIEdvZCwgd2hvIG1ldCBBYnJhaGFtIHJldHVybmluZyBmcm9tIHRoZSBzbGF1Z2h0ZXIgb2YgdGhlIGtpbmdzLCBhbmQgYmxlc3NlZCBoaW07ClRvIHdob20gYWxzbyBBYnJhaGFtIGdhdmUgYSB0ZW50aCBwYXJ0IG9mIGFsbDsgZmlyc3QgYmVpbmcgYnkgaW50ZXJwcmV0YXRpb24gS2luZyBvZiByaWdodGVvdXNuZXNzLCBhbmQgYWZ0ZXIgdGhhdCBhbHNvIEtpbmcgb2YgU2FsZW0sIHdoaWNoIGlzLCBLaW5nIG9mIHBlYWNlOwpXaXRob3V0IGZhdGhlciwgd2l0aG91dCBtb3RoZXIsIHdpdGhvdXQgZGVzY2VudCwgaGF2aW5nIG5laXRoZXIgYmVnaW5uaW5nIG9mIGRheXMsIG5vciBlbmQgb2YgbGlmZTsgYnV0IG1hZGUgbGlrZSB1bnRvIHRoZSBTb24gb2YgR29kOyBhYmlkZXRoIGEgcHJpZXN0IGNvbnRpbnVhbGx5LgpOb3cgY29uc2lkZXIgaG93IGdyZWF0IHRoaXMgbWFuIHdhcywgdW50byB3aG9tIGV2ZW4gdGhlIHBhdHJpYXJjaCBBYnJhaGFtIGdhdmUgdGhlIHRlbnRoIG9mIHRoZSBzcG9pbHMuCkFuZCB2ZXJpbHkgdGhleSB0aGF0IGFyZSBvZiB0aGUgc29ucyBvZiBMZXZpLCB3aG8gcmVjZWl2ZSB0aGUgb2ZmaWNlIG9mIHRoZSBwcmllc3Rob29kLCBoYXZlIGEgY29tbWFuZG1lbnQgdG8gdGFrZSB0aXRoZXMgb2YgdGhlIHBlb3BsZSBhY2NvcmRpbmcgdG8gdGhlIGxhdywgdGhhdCBpcywgb2YgdGhlaXIgYnJldGhyZW4sIHRob3VnaCB0aGV5IGNvbWUgb3V0IG9mIHRoZSBsb2lucyBvZiBBYnJhaGFtOgpCdXQgaGUgd2hvc2UgZGVzY2VudCBpcyBub3QgY291bnRlZCBmcm9tIHRoZW0gcmVjZWl2ZWQgdGl0aGVzIG9mIEFicmFoYW0sIGFuZCBibGVzc2VkIGhpbSB0aGF0IGhhZCB0aGUgcHJvbWlzZXMuCkFuZCB3aXRob3V0IGFsbCBjb250cmFkaWN0aW9uIHRoZSBsZXNzIGlzIGJsZXNzZWQgb2YgdGhlIGJldHRlci4KQW5kIGhlcmUgbWVuIHRoYXQgZGllIHJlY2VpdmUgdGl0aGVzOyBidXQgdGhlcmUgaGUgcmVjZWl2ZXRoIHRoZW0sIG9mIHdob20gaXQgaXMgd2l0bmVzc2VkIHRoYXQgaGUgbGl2ZXRoLgpBbmQgYXMgSSBtYXkgc28gc2F5LCBMZXZpIGFsc28sIHdobyByZWNlaXZldGggdGl0aGVzLCBwYXllZCB0aXRoZXMgaW4gQWJyYWhhbS4KRm9yIGhlIHdhcyB5ZXQgaW4gdGhlIGxvaW5zIG9mIGhpcyBmYXRoZXIsIHdoZW4gTWVsY2hpc2VkZWMgbWV0IGhpbS4KSWYgdGhlcmVmb3JlIHBlcmZlY3Rpb24gd2VyZSBieSB0aGUgTGV2aXRpY2FsIHByaWVzdGhvb2QsIChmb3IgdW5kZXIgaXQgdGhlIHBlb3BsZSByZWNlaXZlZCB0aGUgbGF3LCkgd2hhdCBmdXJ0aGVyIG5lZWQgd2FzIHRoZXJlIHRoYXQgYW5vdGhlciBwcmllc3Qgc2hvdWxkIHJpc2UgYWZ0ZXIgdGhlIG9yZGVyIG9mIE1lbGNoaXNlZGVjLCBhbmQgbm90IGJlIGNhbGxlZCBhZnRlciB0aGUgb3JkZXIgb2YgQWFyb24/CkZvciB0aGUgcHJpZXN0aG9vZCBiZWluZyBjaGFuZ2VkLCB0aGVyZSBpcyBtYWRlIG9mIG5lY2Vzc2l0eSBhIGNoYW5nZSBhbHNvIG9mIHRoZSBsYXcuCkZvciBoZSBvZiB3aG9tIHRoZXNlIHRoaW5ncyBhcmUgc3Bva2VuIHBlcnRhaW5ldGggdG8gYW5vdGhlciB0cmliZSwgb2Ygd2hpY2ggbm8gbWFuIGdhdmUgYXR0ZW5kYW5jZSBhdCB0aGUgYWx0YXIuCkZvciBpdCBpcyBldmlkZW50IHRoYXQgb3VyIExvcmQgc3ByYW5nIG91dCBvZiBKdWRhOyBvZiB3aGljaCB0cmliZSBNb3NlcyBzcGFrZSBub3RoaW5nIGNvbmNlcm5pbmcgcHJpZXN0aG9vZC4KQW5kIGl0IGlzIHlldCBmYXIgbW9yZSBldmlkZW50OiBmb3IgdGhhdCBhZnRlciB0aGUgc2ltaWxpdHVkZSBvZiBNZWxjaGlzZWRlYyB0aGVyZSBhcmlzZXRoIGFub3RoZXIgcHJpZXN0LApXaG8gaXMgbWFkZSwgbm90IGFmdGVyIHRoZSBsYXcgb2YgYSBjYXJuYWwgY29tbWFuZG1lbnQsIGJ1dCBhZnRlciB0aGUgcG93ZXIgb2YgYW4gZW5kbGVzcyBsaWZlLgpGb3IgaGUgdGVzdGlmaWV0aCwgVGhvdSBhcnQgYSBwcmllc3QgZm9yIGV2ZXIgYWZ0ZXIgdGhlIG9yZGVyIG9mIE1lbGNoaXNlZGVjLgpGb3IgdGhlcmUgaXMgdmVyaWx5IGEgZGlzYW5udWxsaW5nIG9mIHRoZSBjb21tYW5kbWVudCBnb2luZyBiZWZvcmUgZm9yIHRoZSB3ZWFrbmVzcyBhbmQgdW5wcm9maXRhYmxlbmVzcyB0aGVyZW9mLgpGb3IgdGhlIGxhdyBtYWRlIG5vdGhpbmcgcGVyZmVjdCwgYnV0IHRoZSBicmluZ2luZyBpbiBvZiBhIGJldHRlciBob3BlIGRpZDsgYnkgdGhlIHdoaWNoIHdlIGRyYXcgbmlnaCB1bnRvIEdvZC4KQW5kIGluYXNtdWNoIGFzIG5vdCB3aXRob3V0IGFuIG9hdGggaGUgd2FzIG1hZGUgcHJpZXN0OgooRm9yIHRob3NlIHByaWVzdHMgd2VyZSBtYWRlIHdpdGhvdXQgYW4gb2F0aDsgYnV0IHRoaXMgd2l0aCBhbiBvYXRoIGJ5IGhpbSB0aGF0IHNhaWQgdW50byBoaW0sIFRoZSBMb3JkIHN3YXJlIGFuZCB3aWxsIG5vdCByZXBlbnQsIFRob3UgYXJ0IGEgcHJpZXN0IGZvciBldmVyIGFmdGVyIHRoZSBvcmRlciBvZiBNZWxjaGlzZWRlYzopCkJ5IHNvIG11Y2ggd2FzIEplc3VzIG1hZGUgYSBzdXJldHkgb2YgYSBiZXR0ZXIgdGVzdGFtZW50LgpBbmQgdGhleSB0cnVseSB3ZXJlIG1hbnkgcHJpZXN0cywgYmVjYXVzZSB0aGV5IHdlcmUgbm90IHN1ZmZlcmVkIHRvIGNvbnRpbnVlIGJ5IHJlYXNvbiBvZiBkZWF0aDoKQnV0IHRoaXMgbWFuLCBiZWNhdXNlIGhlIGNvbnRpbnVldGggZXZlciwgaGF0aCBhbiB1bmNoYW5nZWFibGUgcHJpZXN0aG9vZC4KV2hlcmVmb3JlIGhlIGlzIGFibGUgYWxzbyB0byBzYXZlIHRoZW0gdG8gdGhlIHV0dGVybW9zdCB0aGF0IGNvbWUgdW50byBHb2QgYnkgaGltLCBzZWVpbmcgaGUgZXZlciBsaXZldGggdG8gbWFrZSBpbnRlcmNlc3Npb24gZm9yIHRoZW0uCkZvciBzdWNoIGFuIGhpZ2ggcHJpZXN0IGJlY2FtZSB1cywgd2hvIGlzIGhvbHksIGhhcm1sZXNzLCB1bmRlZmlsZWQsIHNlcGFyYXRlIGZyb20gc2lubmVycywgYW5kIG1hZGUgaGlnaGVyIHRoYW4gdGhlIGhlYXZlbnM7CldobyBuZWVkZXRoIG5vdCBkYWlseSwgYXMgdGhvc2UgaGlnaCBwcmllc3RzLCB0byBvZmZlciB1cCBzYWNyaWZpY2UsIGZpcnN0IGZvciBoaXMgb3duIHNpbnMsIGFuZCB0aGVuIGZvciB0aGUgcGVvcGxlJ3M6IGZvciB0aGlzIGhlIGRpZCBvbmNlLCB3aGVuIGhlIG9mZmVyZWQgdXAgaGltc2VsZi4KRm9yIHRoZSBsYXcgbWFrZXRoIG1lbiBoaWdoIHByaWVzdHMgd2hpY2ggaGF2ZSBpbmZpcm1pdHk7IGJ1dCB0aGUgd29yZCBvZiB0aGUgb2F0aCwgd2hpY2ggd2FzIHNpbmNlIHRoZSBsYXcsIG1ha2V0aCB0aGUgU29uLCB3aG8gaXMgY29uc2VjcmF0ZWQgZm9yIGV2ZXJtb3JlLgpOb3cgb2YgdGhlIHRoaW5ncyB3aGljaCB3ZSBoYXZlIHNwb2tlbiB0aGlzIGlzIHRoZSBzdW06IFdlIGhhdmUgc3VjaCBhbiBoaWdoIHByaWVzdCwgd2hvIGlzIHNldCBvbiB0aGUgcmlnaHQgaGFuZCBvZiB0aGUgdGhyb25lIG9mIHRoZSBNYWplc3R5IGluIHRoZSBoZWF2ZW5zOwpBIG1pbmlzdGVyIG9mIHRoZSBzYW5jdHVhcnksIGFuZCBvZiB0aGUgdHJ1ZSB0YWJlcm5hY2xlLCB3aGljaCB0aGUgTG9yZCBwaXRjaGVkLCBhbmQgbm90IG1hbi4KRm9yIGV2ZXJ5IGhpZ2ggcHJpZXN0IGlzIG9yZGFpbmVkIHRvIG9mZmVyIGdpZnRzIGFuZCBzYWNyaWZpY2VzOiB3aGVyZWZvcmUgaXQgaXMgb2YgbmVjZXNzaXR5IHRoYXQgdGhpcyBtYW4gaGF2ZSBzb21ld2hhdCBhbHNvIHRvIG9mZmVyLgpGb3IgaWYgaGUgd2VyZSBvbiBlYXJ0aCwgaGUgc2hvdWxkIG5vdCBiZSBhIHByaWVzdCwgc2VlaW5nIHRoYXQgdGhlcmUgYXJlIHByaWVzdHMgdGhhdCBvZmZlciBnaWZ0cyBhY2NvcmRpbmcgdG8gdGhlIGxhdzoKV2hvIHNlcnZlIHVudG8gdGhlIGV4YW1wbGUgYW5kIHNoYWRvdyBvZiBoZWF2ZW5seSB0aGluZ3MsIGFzIE1vc2VzIHdhcyBhZG1vbmlzaGVkIG9mIEdvZCB3aGVuIGhlIHdhcyBhYm91dCB0byBtYWtlIHRoZSB0YWJlcm5hY2xlOiBmb3IsIFNlZSwgc2FpdGggaGUsIHRoYXQgdGhvdSBtYWtlIGFsbCB0aGluZ3MgYWNjb3JkaW5nIHRvIHRoZSBwYXR0ZXJuIHNoZXdlZCB0byB0aGVlIGluIHRoZSBtb3VudC4KQnV0IG5vdyBoYXRoIGhlIG9idGFpbmVkIGEgbW9yZSBleGNlbGxlbnQgbWluaXN0cnksIGJ5IGhvdyBtdWNoIGFsc28gaGUgaXMgdGhlIG1lZGlhdG9yIG9mIGEgYmV0dGVyIGNvdmVuYW50LCB3aGljaCB3YXMgZXN0YWJsaXNoZWQgdXBvbiBiZXR0ZXIgcHJvbWlzZXMuCkZvciBpZiB0aGF0IGZpcnN0IGNvdmVuYW50IGhhZCBiZWVuIGZhdWx0bGVzcywgdGhlbiBzaG91bGQgbm8gcGxhY2UgaGF2ZSBiZWVuIHNvdWdodCBmb3IgdGhlIHNlY29uZC4KRm9yIGZpbmRpbmcgZmF1bHQgd2l0aCB0aGVtLCBoZSBzYWl0aCwgQmVob2xkLCB0aGUgZGF5cyBjb21lLCBzYWl0aCB0aGUgTG9yZCwgd2hlbiBJIHdpbGwgbWFrZSBhIG5ldyBjb3ZlbmFudCB3aXRoIHRoZSBob3VzZSBvZiBJc3JhZWwgYW5kIHdpdGggdGhlIGhvdXNlIG9mIEp1ZGFoOgpOb3QgYWNjb3JkaW5nIHRvIHRoZSBjb3ZlbmFudCB0aGF0IEkgbWFkZSB3aXRoIHRoZWlyIGZhdGhlcnMgaW4gdGhlIGRheSB3aGVuIEkgdG9vayB0aGVtIGJ5IHRoZSBoYW5kIHRvIGxlYWQgdGhlbSBvdXQgb2YgdGhlIGxhbmQgb2YgRWd5cHQ7IGJlY2F1c2UgdGhleSBjb250aW51ZWQgbm90IGluIG15IGNvdmVuYW50LCBhbmQgSSByZWdhcmRlZCB0aGVtIG5vdCwgc2FpdGggdGhlIExvcmQuCkZvciB0aGlzIGlzIHRoZSBjb3ZlbmFudCB0aGF0IEkgd2lsbCBtYWtlIHdpdGggdGhlIGhvdXNlIG9mIElzcmFlbCBhZnRlciB0aG9zZSBkYXlzLCBzYWl0aCB0aGUgTG9yZDsgSSB3aWxsIHB1dCBteSBsYXdzIGludG8gdGhlaXIgbWluZCwgYW5kIHdyaXRlIHRoZW0gaW4gdGhlaXIgaGVhcnRzOiBhbmQgSSB3aWxsIGJlIHRvIHRoZW0gYSBHb2QsIGFuZCB0aGV5IHNoYWxsIGJlIHRvIG1lIGEgcGVvcGxlOgpBbmQgdGhleSBzaGFsbCBub3QgdGVhY2ggZXZlcnkgbWFuIGhpcyBuZWlnaGJvdXIsIGFuZCBldmVyeSBtYW4gaGlzIGJyb3RoZXIsIHNheWluZywgS25vdyB0aGUgTG9yZDogZm9yIGFsbCBzaGFsbCBrbm93IG1lLCBmcm9tIHRoZSBsZWFzdCB0byB0aGUgZ3JlYXRlc3QuCkZvciBJIHdpbGwgYmUgbWVyY2lmdWwgdG8gdGhlaXIgdW5yaWdodGVvdXNuZXNzLCBhbmQgdGhlaXIgc2lucyBhbmQgdGhlaXIgaW5pcXVpdGllcyB3aWxsIEkgcmVtZW1iZXIgbm8gbW9yZS4KSW4gdGhhdCBoZSBzYWl0aCwgQSBuZXcgY292ZW5hbnQsIGhlIGhhdGggbWFkZSB0aGUgZmlyc3Qgb2xkLiBOb3cgdGhhdCB3aGljaCBkZWNheWV0aCBhbmQgd2F4ZXRoIG9sZCBpcyByZWFkeSB0byB2YW5pc2ggYXdheS4KVGhlbiB2ZXJpbHkgdGhlIGZpcnN0IGNvdmVuYW50IGhhZCBhbHNvIG9yZGluYW5jZXMgb2YgZGl2aW5lIHNlcnZpY2UsIGFuZCBhIHdvcmxkbHkgc2FuY3R1YXJ5LgpGb3IgdGhlcmUgd2FzIGEgdGFiZXJuYWNsZSBtYWRlOyB0aGUgZmlyc3QsIHdoZXJlaW4gd2FzIHRoZSBjYW5kbGVzdGljaywgYW5kIHRoZSB0YWJsZSwgYW5kIHRoZSBzaGV3YnJlYWQ7IHdoaWNoIGlzIGNhbGxlZCB0aGUgc2FuY3R1YXJ5LgpBbmQgYWZ0ZXIgdGhlIHNlY29uZCB2ZWlsLCB0aGUgdGFiZXJuYWNsZSB3aGljaCBpcyBjYWxsZWQgdGhlIEhvbGllc3Qgb2YgYWxsOwpXaGljaCBoYWQgdGhlIGdvbGRlbiBjZW5zZXIsIGFuZCB0aGUgYXJrIG9mIHRoZSBjb3ZlbmFudCBvdmVybGFpZCByb3VuZCBhYm91dCB3aXRoIGdvbGQsIHdoZXJlaW4gd2FzIHRoZSBnb2xkZW4gcG90IHRoYXQgaGFkIG1hbm5hLCBhbmQgQWFyb24ncyByb2QgdGhhdCBidWRkZWQsIGFuZCB0aGUgdGFibGVzIG9mIHRoZSBjb3ZlbmFudDsKQW5kIG92ZXIgaXQgdGhlIGNoZXJ1YmltcyBvZiBnbG9yeSBzaGFkb3dpbmcgdGhlIG1lcmN5c2VhdDsgb2Ygd2hpY2ggd2UgY2Fubm90IG5vdyBzcGVhayBwYXJ0aWN1bGFybHkuCk5vdyB3aGVuIHRoZXNlIHRoaW5ncyB3ZXJlIHRodXMgb3JkYWluZWQsIHRoZSBwcmllc3RzIHdlbnQgYWx3YXlzIGludG8gdGhlIGZpcnN0IHRhYmVybmFjbGUsIGFjY29tcGxpc2hpbmcgdGhlIHNlcnZpY2Ugb2YgR29kLgpCdXQgaW50byB0aGUgc2Vjb25kIHdlbnQgdGhlIGhpZ2ggcHJpZXN0IGFsb25lIG9uY2UgZXZlcnkgeWVhciwgbm90IHdpdGhvdXQgYmxvb2QsIHdoaWNoIGhlIG9mZmVyZWQgZm9yIGhpbXNlbGYsIGFuZCBmb3IgdGhlIGVycm9ycyBvZiB0aGUgcGVvcGxlOgpUaGUgSG9seSBHaG9zdCB0aGlzIHNpZ25pZnlpbmcsIHRoYXQgdGhlIHdheSBpbnRvIHRoZSBob2xpZXN0IG9mIGFsbCB3YXMgbm90IHlldCBtYWRlIG1hbmlmZXN0LCB3aGlsZSBhcyB0aGUgZmlyc3QgdGFiZXJuYWNsZSB3YXMgeWV0IHN0YW5kaW5nOgpXaGljaCB3YXMgYSBmaWd1cmUgZm9yIHRoZSB0aW1lIHRoZW4gcHJlc2VudCwgaW4gd2hpY2ggd2VyZSBvZmZlcmVkIGJvdGggZ2lmdHMgYW5kIHNhY3JpZmljZXMsIHRoYXQgY291bGQgbm90IG1ha2UgaGltIHRoYXQgZGlkIHRoZSBzZXJ2aWNlIHBlcmZlY3QsIGFzIHBlcnRhaW5pbmcgdG8gdGhlIGNvbnNjaWVuY2U7CldoaWNoIHN0b29kIG9ubHkgaW4gbWVhdHMgYW5kIGRyaW5rcywgYW5kIGRpdmVycyB3YXNoaW5ncywgYW5kIGNhcm5hbCBvcmRpbmFuY2VzLCBpbXBvc2VkIG9uIHRoZW0gdW50aWwgdGhlIHRpbWUgb2YgcmVmb3JtYXRpb24uCkJ1dCBDaHJpc3QgYmVpbmcgY29tZSBhbiBoaWdoIHByaWVzdCBvZiBnb29kIHRoaW5ncyB0byBjb21lLCBieSBhIGdyZWF0ZXIgYW5kIG1vcmUgcGVyZmVjdCB0YWJlcm5hY2xlLCBub3QgbWFkZSB3aXRoIGhhbmRzLCB0aGF0IGlzIHRvIHNheSwgbm90IG9mIHRoaXMgYnVpbGRpbmc7Ck5laXRoZXIgYnkgdGhlIGJsb29kIG9mIGdvYXRzIGFuZCBjYWx2ZXMsIGJ1dCBieSBoaXMgb3duIGJsb29kIGhlIGVudGVyZWQgaW4gb25jZSBpbnRvIHRoZSBob2x5IHBsYWNlLCBoYXZpbmcgb2J0YWluZWQgZXRlcm5hbCByZWRlbXB0aW9uIGZvciB1cy4KRm9yIGlmIHRoZSBibG9vZCBvZiBidWxscyBhbmQgb2YgZ29hdHMsIGFuZCB0aGUgYXNoZXMgb2YgYW4gaGVpZmVyIHNwcmlua2xpbmcgdGhlIHVuY2xlYW4sIHNhbmN0aWZpZXRoIHRvIHRoZSBwdXJpZnlpbmcgb2YgdGhlIGZsZXNoOgpIb3cgbXVjaCBtb3JlIHNoYWxsIHRoZSBibG9vZCBvZiBDaHJpc3QsIHdobyB0aHJvdWdoIHRoZSBldGVybmFsIFNwaXJpdCBvZmZlcmVkIGhpbXNlbGYgd2l0aG91dCBzcG90IHRvIEdvZCwgcHVyZ2UgeW91ciBjb25zY2llbmNlIGZyb20gZGVhZCB3b3JrcyB0byBzZXJ2ZSB0aGUgbGl2aW5nIEdvZD8KQW5kIGZvciB0aGlzIGNhdXNlIGhlIGlzIHRoZSBtZWRpYXRvciBvZiB0aGUgbmV3IHRlc3RhbWVudCwgdGhhdCBieSBtZWFucyBvZiBkZWF0aCwgZm9yIHRoZSByZWRlbXB0aW9uIG9mIHRoZSB0cmFuc2dyZXNzaW9ucyB0aGF0IHdlcmUgdW5kZXIgdGhlIGZpcnN0IHRlc3RhbWVudCwgdGhleSB3aGljaCBhcmUgY2FsbGVkIG1pZ2h0IHJlY2VpdmUgdGhlIHByb21pc2Ugb2YgZXRlcm5hbCBpbmhlcml0YW5jZS4KRm9yIHdoZXJlIGEgdGVzdGFtZW50IGlzLCB0aGVyZSBtdXN0IGFsc28gb2YgbmVjZXNzaXR5IGJlIHRoZSBkZWF0aCBvZiB0aGUgdGVzdGF0b3IuCkZvciBhIHRlc3RhbWVudCBpcyBvZiBmb3JjZSBhZnRlciBtZW4gYXJlIGRlYWQ6IG90aGVyd2lzZSBpdCBpcyBvZiBubyBzdHJlbmd0aCBhdCBhbGwgd2hpbGUgdGhlIHRlc3RhdG9yIGxpdmV0aC4KV2hlcmV1cG9uIG5laXRoZXIgdGhlIGZpcnN0IHRlc3RhbWVudCB3YXMgZGVkaWNhdGVkIHdpdGhvdXQgYmxvb2QuCkZvciB3aGVuIE1vc2VzIGhhZCBzcG9rZW4gZXZlcnkgcHJlY2VwdCB0byBhbGwgdGhlIHBlb3BsZSBhY2NvcmRpbmcgdG8gdGhlIGxhdywgaGUgdG9vayB0aGUgYmxvb2Qgb2YgY2FsdmVzIGFuZCBvZiBnb2F0cywgd2l0aCB3YXRlciwgYW5kIHNjYXJsZXQgd29vbCwgYW5kIGh5c3NvcCwgYW5kIHNwcmlua2xlZCBib3RoIHRoZSBib29rLCBhbmQgYWxsIHRoZSBwZW9wbGUsClNheWluZywgVGhpcyBpcyB0aGUgYmxvb2Qgb2YgdGhlIHRlc3RhbWVudCB3aGljaCBHb2QgaGF0aCBlbmpvaW5lZCB1bnRvIHlvdS4KTW9yZW92ZXIgaGUgc3ByaW5rbGVkIHdpdGggYmxvb2QgYm90aCB0aGUgdGFiZXJuYWNsZSwgYW5kIGFsbCB0aGUgdmVzc2VscyBvZiB0aGUgbWluaXN0cnkuCkFuZCBhbG1vc3QgYWxsIHRoaW5ncyBhcmUgYnkgdGhlIGxhdyBwdXJnZWQgd2l0aCBibG9vZDsgYW5kIHdpdGhvdXQgc2hlZGRpbmcgb2YgYmxvb2QgaXMgbm8gcmVtaXNzaW9uLgpJdCB3YXMgdGhlcmVmb3JlIG5lY2Vzc2FyeSB0aGF0IHRoZSBwYXR0ZXJucyBvZiB0aGluZ3MgaW4gdGhlIGhlYXZlbnMgc2hvdWxkIGJlIHB1cmlmaWVkIHdpdGggdGhlc2U7IGJ1dCB0aGUgaGVhdmVubHkgdGhpbmdzIHRoZW1zZWx2ZXMgd2l0aCBiZXR0ZXIgc2FjcmlmaWNlcyB0aGFuIHRoZXNlLgpGb3IgQ2hyaXN0IGlzIG5vdCBlbnRlcmVkIGludG8gdGhlIGhvbHkgcGxhY2VzIG1hZGUgd2l0aCBoYW5kcywgd2hpY2ggYXJlIHRoZSBmaWd1cmVzIG9mIHRoZSB0cnVlOyBidXQgaW50byBoZWF2ZW4gaXRzZWxmLCBub3cgdG8gYXBwZWFyIGluIHRoZSBwcmVzZW5jZSBvZiBHb2QgZm9yIHVzOgpOb3IgeWV0IHRoYXQgaGUgc2hvdWxkIG9mZmVyIGhpbXNlbGYgb2Z0ZW4sIGFzIHRoZSBoaWdoIHByaWVzdCBlbnRlcmV0aCBpbnRvIHRoZSBob2x5IHBsYWNlIGV2ZXJ5IHllYXIgd2l0aCBibG9vZCBvZiBvdGhlcnM7CkZvciB0aGVuIG11c3QgaGUgb2Z0ZW4gaGF2ZSBzdWZmZXJlZCBzaW5jZSB0aGUgZm91bmRhdGlvbiBvZiB0aGUgd29ybGQ6IGJ1dCBub3cgb25jZSBpbiB0aGUgZW5kIG9mIHRoZSB3b3JsZCBoYXRoIGhlIGFwcGVhcmVkIHRvIHB1dCBhd2F5IHNpbiBieSB0aGUgc2FjcmlmaWNlIG9mIGhpbXNlbGYuCkFuZCBhcyBpdCBpcyBhcHBvaW50ZWQgdW50byBtZW4gb25jZSB0byBkaWUsIGJ1dCBhZnRlciB0aGlzIHRoZSBqdWRnbWVudDoKU28gQ2hyaXN0IHdhcyBvbmNlIG9mZmVyZWQgdG8gYmVhciB0aGUgc2lucyBvZiBtYW55OyBhbmQgdW50byB0aGVtIHRoYXQgbG9vayBmb3IgaGltIHNoYWxsIGhlIGFwcGVhciB0aGUgc2Vjb25kIHRpbWUgd2l0aG91dCBzaW4gdW50byBzYWx2YXRpb24uCkZvciB0aGUgbGF3IGhhdmluZyBhIHNoYWRvdyBvZiBnb29kIHRoaW5ncyB0byBjb21lLCBhbmQgbm90IHRoZSB2ZXJ5IGltYWdlIG9mIHRoZSB0aGluZ3MsIGNhbiBuZXZlciB3aXRoIHRob3NlIHNhY3JpZmljZXMgd2hpY2ggdGhleSBvZmZlcmVkIHllYXIgYnkgeWVhciBjb250aW51YWxseSBtYWtlIHRoZSBjb21lcnMgdGhlcmV1bnRvIHBlcmZlY3QuCkZvciB0aGVuIHdvdWxkIHRoZXkgbm90IGhhdmUgY2Vhc2VkIHRvIGJlIG9mZmVyZWQ/IGJlY2F1c2UgdGhhdCB0aGUgd29yc2hpcHBlcnMgb25jZSBwdXJnZWQgc2hvdWxkIGhhdmUgaGFkIG5vIG1vcmUgY29uc2NpZW5jZSBvZiBzaW5zLgpCdXQgaW4gdGhvc2Ugc2FjcmlmaWNlcyB0aGVyZSBpcyBhIHJlbWVtYnJhbmNlIGFnYWluIG1hZGUgb2Ygc2lucyBldmVyeSB5ZWFyLgpGb3IgaXQgaXMgbm90IHBvc3NpYmxlIHRoYXQgdGhlIGJsb29kIG9mIGJ1bGxzIGFuZCBvZiBnb2F0cyBzaG91bGQgdGFrZSBhd2F5IHNpbnMuCldoZXJlZm9yZSB3aGVuIGhlIGNvbWV0aCBpbnRvIHRoZSB3b3JsZCwgaGUgc2FpdGgsIFNhY3JpZmljZSBhbmQgb2ZmZXJpbmcgdGhvdSB3b3VsZGVzdCBub3QsIGJ1dCBhIGJvZHkgaGFzdCB0aG91IHByZXBhcmVkIG1lOgpJbiBidXJudCBvZmZlcmluZ3MgYW5kIHNhY3JpZmljZXMgZm9yIHNpbiB0aG91IGhhc3QgaGFkIG5vIHBsZWFzdXJlLgpUaGVuIHNhaWQgSSwgTG8sIEkgY29tZSAoaW4gdGhlIHZvbHVtZSBvZiB0aGUgYm9vayBpdCBpcyB3cml0dGVuIG9mIG1lLCkgdG8gZG8gdGh5IHdpbGwsIE8gR29kLgpBYm92ZSB3aGVuIGhlIHNhaWQsIFNhY3JpZmljZSBhbmQgb2ZmZXJpbmcgYW5kIGJ1cm50IG9mZmVyaW5ncyBhbmQgb2ZmZXJpbmcgZm9yIHNpbiB0aG91IHdvdWxkZXN0IG5vdCwgbmVpdGhlciBoYWRzdCBwbGVhc3VyZSB0aGVyZWluOyB3aGljaCBhcmUgb2ZmZXJlZCBieSB0aGUgbGF3OwpUaGVuIHNhaWQgaGUsIExvLCBJIGNvbWUgdG8gZG8gdGh5IHdpbGwsIE8gR29kLiBIZSB0YWtldGggYXdheSB0aGUgZmlyc3QsIHRoYXQgaGUgbWF5IGVzdGFibGlzaCB0aGUgc2Vjb25kLgpCeSB0aGUgd2hpY2ggd2lsbCB3ZSBhcmUgc2FuY3RpZmllZCB0aHJvdWdoIHRoZSBvZmZlcmluZyBvZiB0aGUgYm9keSBvZiBKZXN1cyBDaHJpc3Qgb25jZSBmb3IgYWxsLgpBbmQgZXZlcnkgcHJpZXN0IHN0YW5kZXRoIGRhaWx5IG1pbmlzdGVyaW5nIGFuZCBvZmZlcmluZyBvZnRlbnRpbWVzIHRoZSBzYW1lIHNhY3JpZmljZXMsIHdoaWNoIGNhbiBuZXZlciB0YWtlIGF3YXkgc2luczoKQnV0IHRoaXMgbWFuLCBhZnRlciBoZSBoYWQgb2ZmZXJlZCBvbmUgc2FjcmlmaWNlIGZvciBzaW5zIGZvciBldmVyLCBzYXQgZG93biBvbiB0aGUgcmlnaHQgaGFuZCBvZiBHb2Q7CkZyb20gaGVuY2Vmb3J0aCBleHBlY3RpbmcgdGlsbCBoaXMgZW5lbWllcyBiZSBtYWRlIGhpcyBmb290c3Rvb2wuCkZvciBieSBvbmUgb2ZmZXJpbmcgaGUgaGF0aCBwZXJmZWN0ZWQgZm9yIGV2ZXIgdGhlbSB0aGF0IGFyZSBzYW5jdGlmaWVkLgpXaGVyZW9mIHRoZSBIb2x5IEdob3N0IGFsc28gaXMgYSB3aXRuZXNzIHRvIHVzOiBmb3IgYWZ0ZXIgdGhhdCBoZSBoYWQgc2FpZCBiZWZvcmUsClRoaXMgaXMgdGhlIGNvdmVuYW50IHRoYXQgSSB3aWxsIG1ha2Ugd2l0aCB0aGVtIGFmdGVyIHRob3NlIGRheXMsIHNhaXRoIHRoZSBMb3JkLCBJIHdpbGwgcHV0IG15IGxhd3MgaW50byB0aGVpciBoZWFydHMsIGFuZCBpbiB0aGVpciBtaW5kcyB3aWxsIEkgd3JpdGUgdGhlbTsKQW5kIHRoZWlyIHNpbnMgYW5kIGluaXF1aXRpZXMgd2lsbCBJIHJlbWVtYmVyIG5vIG1vcmUuCk5vdyB3aGVyZSByZW1pc3Npb24gb2YgdGhlc2UgaXMsIHRoZXJlIGlzIG5vIG1vcmUgb2ZmZXJpbmcgZm9yIHNpbi4KSGF2aW5nIHRoZXJlZm9yZSwgYnJldGhyZW4sIGJvbGRuZXNzIHRvIGVudGVyIGludG8gdGhlIGhvbGllc3QgYnkgdGhlIGJsb29kIG9mIEplc3VzLApCeSBhIG5ldyBhbmQgbGl2aW5nIHdheSwgd2hpY2ggaGUgaGF0aCBjb25zZWNyYXRlZCBmb3IgdXMsIHRocm91Z2ggdGhlIHZlaWwsIHRoYXQgaXMgdG8gc2F5LCBoaXMgZmxlc2g7CkFuZCBoYXZpbmcgYW4gaGlnaCBwcmllc3Qgb3ZlciB0aGUgaG91c2Ugb2YgR29kOwpMZXQgdXMgZHJhdyBuZWFyIHdpdGggYSB0cnVlIGhlYXJ0IGluIGZ1bGwgYXNzdXJhbmNlIG9mIGZhaXRoLCBoYXZpbmcgb3VyIGhlYXJ0cyBzcHJpbmtsZWQgZnJvbSBhbiBldmlsIGNvbnNjaWVuY2UsIGFuZCBvdXIgYm9kaWVzIHdhc2hlZCB3aXRoIHB1cmUgd2F0ZXIuCkxldCB1cyBob2xkIGZhc3QgdGhlIHByb2Zlc3Npb24gb2Ygb3VyIGZhaXRoIHdpdGhvdXQgd2F2ZXJpbmc7IChmb3IgaGUgaXMgZmFpdGhmdWwgdGhhdCBwcm9taXNlZDspCkFuZCBsZXQgdXMgY29uc2lkZXIgb25lIGFub3RoZXIgdG8gcHJvdm9rZSB1bnRvIGxvdmUgYW5kIHRvIGdvb2Qgd29ya3M6Ck5vdCBmb3JzYWtpbmcgdGhlIGFzc2VtYmxpbmcgb2Ygb3Vyc2VsdmVzIHRvZ2V0aGVyLCBhcyB0aGUgbWFubmVyIG9mIHNvbWUgaXM7IGJ1dCBleGhvcnRpbmcgb25lIGFub3RoZXI6IGFuZCBzbyBtdWNoIHRoZSBtb3JlLCBhcyB5ZSBzZWUgdGhlIGRheSBhcHByb2FjaGluZy4KRm9yIGlmIHdlIHNpbiB3aWxmdWxseSBhZnRlciB0aGF0IHdlIGhhdmUgcmVjZWl2ZWQgdGhlIGtub3dsZWRnZSBvZiB0aGUgdHJ1dGgsIHRoZXJlIHJlbWFpbmV0aCBubyBtb3JlIHNhY3JpZmljZSBmb3Igc2lucywKQnV0IGEgY2VydGFpbiBmZWFyZnVsIGxvb2tpbmcgZm9yIG9mIGp1ZGdtZW50IGFuZCBmaWVyeSBpbmRpZ25hdGlvbiwgd2hpY2ggc2hhbGwgZGV2b3VyIHRoZSBhZHZlcnNhcmllcy4KSGUgdGhhdCBkZXNwaXNlZCBNb3NlcycgbGF3IGRpZWQgd2l0aG91dCBtZXJjeSB1bmRlciB0d28gb3IgdGhyZWUgd2l0bmVzc2VzOgpPZiBob3cgbXVjaCBzb3JlciBwdW5pc2htZW50LCBzdXBwb3NlIHllLCBzaGFsbCBoZSBiZSB0aG91Z2h0IHdvcnRoeSwgd2hvIGhhdGggdHJvZGRlbiB1bmRlciBmb290IHRoZSBTb24gb2YgR29kLCBhbmQgaGF0aCBjb3VudGVkIHRoZSBibG9vZCBvZiB0aGUgY292ZW5hbnQsIHdoZXJld2l0aCBoZSB3YXMgc2FuY3RpZmllZCwgYW4gdW5ob2x5IHRoaW5nLCBhbmQgaGF0aCBkb25lIGRlc3BpdGUgdW50byB0aGUgU3Bpcml0IG9mIGdyYWNlPwpGb3Igd2Uga25vdyBoaW0gdGhhdCBoYXRoIHNhaWQsIFZlbmdlYW5jZSBiZWxvbmdldGggdW50byBtZSwgSSB3aWxsIHJlY29tcGVuc2UsIHNhaXRoIHRoZSBMb3JkLiBBbmQgYWdhaW4sIFRoZSBMb3JkIHNoYWxsIGp1ZGdlIGhpcyBwZW9wbGUuCkl0IGlzIGEgZmVhcmZ1bCB0aGluZyB0byBmYWxsIGludG8gdGhlIGhhbmRzIG9mIHRoZSBsaXZpbmcgR29kLgpCdXQgY2FsbCB0byByZW1lbWJyYW5jZSB0aGUgZm9ybWVyIGRheXMsIGluIHdoaWNoLCBhZnRlciB5ZSB3ZXJlIGlsbHVtaW5hdGVkLCB5ZSBlbmR1cmVkIGEgZ3JlYXQgZmlnaHQgb2YgYWZmbGljdGlvbnM7ClBhcnRseSwgd2hpbHN0IHllIHdlcmUgbWFkZSBhIGdhemluZ3N0b2NrIGJvdGggYnkgcmVwcm9hY2hlcyBhbmQgYWZmbGljdGlvbnM7IGFuZCBwYXJ0bHksIHdoaWxzdCB5ZSBiZWNhbWUgY29tcGFuaW9ucyBvZiB0aGVtIHRoYXQgd2VyZSBzbyB1c2VkLgpGb3IgeWUgaGFkIGNvbXBhc3Npb24gb2YgbWUgaW4gbXkgYm9uZHMsIGFuZCB0b29rIGpveWZ1bGx5IHRoZSBzcG9pbGluZyBvZiB5b3VyIGdvb2RzLCBrbm93aW5nIGluIHlvdXJzZWx2ZXMgdGhhdCB5ZSBoYXZlIGluIGhlYXZlbiBhIGJldHRlciBhbmQgYW4gZW5kdXJpbmcgc3Vic3RhbmNlLgpDYXN0IG5vdCBhd2F5IHRoZXJlZm9yZSB5b3VyIGNvbmZpZGVuY2UsIHdoaWNoIGhhdGggZ3JlYXQgcmVjb21wZW5jZSBvZiByZXdhcmQuCkZvciB5ZSBoYXZlIG5lZWQgb2YgcGF0aWVuY2UsIHRoYXQsIGFmdGVyIHllIGhhdmUgZG9uZSB0aGUgd2lsbCBvZiBHb2QsIHllIG1pZ2h0IHJlY2VpdmUgdGhlIHByb21pc2UuCkZvciB5ZXQgYSBsaXR0bGUgd2hpbGUsIGFuZCBoZSB0aGF0IHNoYWxsIGNvbWUgd2lsbCBjb21lLCBhbmQgd2lsbCBub3QgdGFycnkuCk5vdyB0aGUganVzdCBzaGFsbCBsaXZlIGJ5IGZhaXRoOiBidXQgaWYgYW55IG1hbiBkcmF3IGJhY2ssIG15IHNvdWwgc2hhbGwgaGF2ZSBubyBwbGVhc3VyZSBpbiBoaW0uCkJ1dCB3ZSBhcmUgbm90IG9mIHRoZW0gd2hvIGRyYXcgYmFjayB1bnRvIHBlcmRpdGlvbjsgYnV0IG9mIHRoZW0gdGhhdCBiZWxpZXZlIHRvIHRoZSBzYXZpbmcgb2YgdGhlIHNvdWwuCk5vdyBmYWl0aCBpcyB0aGUgc3Vic3RhbmNlIG9mIHRoaW5ncyBob3BlZCBmb3IsIHRoZSBldmlkZW5jZSBvZiB0aGluZ3Mgbm90IHNlZW4uCkZvciBieSBpdCB0aGUgZWxkZXJzIG9idGFpbmVkIGEgZ29vZCByZXBvcnQuClRocm91Z2ggZmFpdGggd2UgdW5kZXJzdGFuZCB0aGF0IHRoZSB3b3JsZHMgd2VyZSBmcmFtZWQgYnkgdGhlIHdvcmQgb2YgR29kLCBzbyB0aGF0IHRoaW5ncyB3aGljaCBhcmUgc2VlbiB3ZXJlIG5vdCBtYWRlIG9mIHRoaW5ncyB3aGljaCBkbyBhcHBlYXIuCkJ5IGZhaXRoIEFiZWwgb2ZmZXJlZCB1bnRvIEdvZCBhIG1vcmUgZXhjZWxsZW50IHNhY3JpZmljZSB0aGFuIENhaW4sIGJ5IHdoaWNoIGhlIG9idGFpbmVkIHdpdG5lc3MgdGhhdCBoZSB3YXMgcmlnaHRlb3VzLCBHb2QgdGVzdGlmeWluZyBvZiBoaXMgZ2lmdHM6IGFuZCBieSBpdCBoZSBiZWluZyBkZWFkIHlldCBzcGVha2V0aC4KQnkgZmFpdGggRW5vY2ggd2FzIHRyYW5zbGF0ZWQgdGhhdCBoZSBzaG91bGQgbm90IHNlZSBkZWF0aDsgYW5kIHdhcyBub3QgZm91bmQsIGJlY2F1c2UgR29kIGhhZCB0cmFuc2xhdGVkIGhpbTogZm9yIGJlZm9yZSBoaXMgdHJhbnNsYXRpb24gaGUgaGFkIHRoaXMgdGVzdGltb255LCB0aGF0IGhlIHBsZWFzZWQgR29kLgpCdXQgd2l0aG91dCBmYWl0aCBpdCBpcyBpbXBvc3NpYmxlIHRvIHBsZWFzZSBoaW06IGZvciBoZSB0aGF0IGNvbWV0aCB0byBHb2QgbXVzdCBiZWxpZXZlIHRoYXQgaGUgaXMsIGFuZCB0aGF0IGhlIGlzIGEgcmV3YXJkZXIgb2YgdGhlbSB0aGF0IGRpbGlnZW50bHkgc2VlayBoaW0uCkJ5IGZhaXRoIE5vYWgsIGJlaW5nIHdhcm5lZCBvZiBHb2Qgb2YgdGhpbmdzIG5vdCBzZWVuIGFzIHlldCwgbW92ZWQgd2l0aCBmZWFyLCBwcmVwYXJlZCBhbiBhcmsgdG8gdGhlIHNhdmluZyBvZiBoaXMgaG91c2U7IGJ5IHRoZSB3aGljaCBoZSBjb25kZW1uZWQgdGhlIHdvcmxkLCBhbmQgYmVjYW1lIGhlaXIgb2YgdGhlIHJpZ2h0ZW91c25lc3Mgd2hpY2ggaXMgYnkgZmFpdGguCkJ5IGZhaXRoIEFicmFoYW0sIHdoZW4gaGUgd2FzIGNhbGxlZCB0byBnbyBvdXQgaW50byBhIHBsYWNlIHdoaWNoIGhlIHNob3VsZCBhZnRlciByZWNlaXZlIGZvciBhbiBpbmhlcml0YW5jZSwgb2JleWVkOyBhbmQgaGUgd2VudCBvdXQsIG5vdCBrbm93aW5nIHdoaXRoZXIgaGUgd2VudC4KQnkgZmFpdGggaGUgc29qb3VybmVkIGluIHRoZSBsYW5kIG9mIHByb21pc2UsIGFzIGluIGEgc3RyYW5nZSBjb3VudHJ5LCBkd2VsbGluZyBpbiB0YWJlcm5hY2xlcyB3aXRoIElzYWFjIGFuZCBKYWNvYiwgdGhlIGhlaXJzIHdpdGggaGltIG9mIHRoZSBzYW1lIHByb21pc2U6CkZvciBoZSBsb29rZWQgZm9yIGEgY2l0eSB3aGljaCBoYXRoIGZvdW5kYXRpb25zLCB3aG9zZSBidWlsZGVyIGFuZCBtYWtlciBpcyBHb2QuClRocm91Z2ggZmFpdGggYWxzbyBTYXJhIGhlcnNlbGYgcmVjZWl2ZWQgc3RyZW5ndGggdG8gY29uY2VpdmUgc2VlZCwgYW5kIHdhcyBkZWxpdmVyZWQgb2YgYSBjaGlsZCB3aGVuIHNoZSB3YXMgcGFzdCBhZ2UsIGJlY2F1c2Ugc2hlIGp1ZGdlZCBoaW0gZmFpdGhmdWwgd2hvIGhhZCBwcm9taXNlZC4KVGhlcmVmb3JlIHNwcmFuZyB0aGVyZSBldmVuIG9mIG9uZSwgYW5kIGhpbSBhcyBnb29kIGFzIGRlYWQsIHNvIG1hbnkgYXMgdGhlIHN0YXJzIG9mIHRoZSBza3kgaW4gbXVsdGl0dWRlLCBhbmQgYXMgdGhlIHNhbmQgd2hpY2ggaXMgYnkgdGhlIHNlYSBzaG9yZSBpbm51bWVyYWJsZS4KVGhlc2UgYWxsIGRpZWQgaW4gZmFpdGgsIG5vdCBoYXZpbmcgcmVjZWl2ZWQgdGhlIHByb21pc2VzLCBidXQgaGF2aW5nIHNlZW4gdGhlbSBhZmFyIG9mZiwgYW5kIHdlcmUgcGVyc3VhZGVkIG9mIHRoZW0sIGFuZCBlbWJyYWNlZCB0aGVtLCBhbmQgY29uZmVzc2VkIHRoYXQgdGhleSB3ZXJlIHN0cmFuZ2VycyBhbmQgcGlsZ3JpbXMgb24gdGhlIGVhcnRoLgpGb3IgdGhleSB0aGF0IHNheSBzdWNoIHRoaW5ncyBkZWNsYXJlIHBsYWlubHkgdGhhdCB0aGV5IHNlZWsgYSBjb3VudHJ5LgpBbmQgdHJ1bHksIGlmIHRoZXkgaGFkIGJlZW4gbWluZGZ1bCBvZiB0aGF0IGNvdW50cnkgZnJvbSB3aGVuY2UgdGhleSBjYW1lIG91dCwgdGhleSBtaWdodCBoYXZlIGhhZCBvcHBvcnR1bml0eSB0byBoYXZlIHJldHVybmVkLgpCdXQgbm93IHRoZXkgZGVzaXJlIGEgYmV0dGVyIGNvdW50cnksIHRoYXQgaXMsIGFuIGhlYXZlbmx5OiB3aGVyZWZvcmUgR29kIGlzIG5vdCBhc2hhbWVkIHRvIGJlIGNhbGxlZCB0aGVpciBHb2Q6IGZvciBoZSBoYXRoIHByZXBhcmVkIGZvciB0aGVtIGEgY2l0eS4KQnkgZmFpdGggQWJyYWhhbSwgd2hlbiBoZSB3YXMgdHJpZWQsIG9mZmVyZWQgdXAgSXNhYWM6IGFuZCBoZSB0aGF0IGhhZCByZWNlaXZlZCB0aGUgcHJvbWlzZXMgb2ZmZXJlZCB1cCBoaXMgb25seSBiZWdvdHRlbiBzb24sCk9mIHdob20gaXQgd2FzIHNhaWQsIFRoYXQgaW4gSXNhYWMgc2hhbGwgdGh5IHNlZWQgYmUgY2FsbGVkOgpBY2NvdW50aW5nIHRoYXQgR29kIHdhcyBhYmxlIHRvIHJhaXNlIGhpbSB1cCwgZXZlbiBmcm9tIHRoZSBkZWFkOyBmcm9tIHdoZW5jZSBhbHNvIGhlIHJlY2VpdmVkIGhpbSBpbiBhIGZpZ3VyZS4KQnkgZmFpdGggSXNhYWMgYmxlc3NlZCBKYWNvYiBhbmQgRXNhdSBjb25jZXJuaW5nIHRoaW5ncyB0byBjb21lLgpCeSBmYWl0aCBKYWNvYiwgd2hlbiBoZSB3YXMgYSBkeWluZywgYmxlc3NlZCBib3RoIHRoZSBzb25zIG9mIEpvc2VwaDsgYW5kIHdvcnNoaXBwZWQsIGxlYW5pbmcgdXBvbiB0aGUgdG9wIG9mIGhpcyBzdGFmZi4KQnkgZmFpdGggSm9zZXBoLCB3aGVuIGhlIGRpZWQsIG1hZGUgbWVudGlvbiBvZiB0aGUgZGVwYXJ0aW5nIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWw7IGFuZCBnYXZlIGNvbW1hbmRtZW50IGNvbmNlcm5pbmcgaGlzIGJvbmVzLgpCeSBmYWl0aCBNb3Nlcywgd2hlbiBoZSB3YXMgYm9ybiwgd2FzIGhpZCB0aHJlZSBtb250aHMgb2YgaGlzIHBhcmVudHMsIGJlY2F1c2UgdGhleSBzYXcgaGUgd2FzIGEgcHJvcGVyIGNoaWxkOyBhbmQgdGhleSB3ZXJlIG5vdCBhZnJhaWQgb2YgdGhlIGtpbmcncyBjb21tYW5kbWVudC4KQnkgZmFpdGggTW9zZXMsIHdoZW4gaGUgd2FzIGNvbWUgdG8geWVhcnMsIHJlZnVzZWQgdG8gYmUgY2FsbGVkIHRoZSBzb24gb2YgUGhhcmFvaCdzIGRhdWdodGVyOwpDaG9vc2luZyByYXRoZXIgdG8gc3VmZmVyIGFmZmxpY3Rpb24gd2l0aCB0aGUgcGVvcGxlIG9mIEdvZCwgdGhhbiB0byBlbmpveSB0aGUgcGxlYXN1cmVzIG9mIHNpbiBmb3IgYSBzZWFzb247CkVzdGVlbWluZyB0aGUgcmVwcm9hY2ggb2YgQ2hyaXN0IGdyZWF0ZXIgcmljaGVzIHRoYW4gdGhlIHRyZWFzdXJlcyBpbiBFZ3lwdDogZm9yIGhlIGhhZCByZXNwZWN0IHVudG8gdGhlIHJlY29tcGVuY2Ugb2YgdGhlIHJld2FyZC4KQnkgZmFpdGggaGUgZm9yc29vayBFZ3lwdCwgbm90IGZlYXJpbmcgdGhlIHdyYXRoIG9mIHRoZSBraW5nOiBmb3IgaGUgZW5kdXJlZCwgYXMgc2VlaW5nIGhpbSB3aG8gaXMgaW52aXNpYmxlLgpUaHJvdWdoIGZhaXRoIGhlIGtlcHQgdGhlIHBhc3NvdmVyLCBhbmQgdGhlIHNwcmlua2xpbmcgb2YgYmxvb2QsIGxlc3QgaGUgdGhhdCBkZXN0cm95ZWQgdGhlIGZpcnN0Ym9ybiBzaG91bGQgdG91Y2ggdGhlbS4KQnkgZmFpdGggdGhleSBwYXNzZWQgdGhyb3VnaCB0aGUgUmVkIHNlYSBhcyBieSBkcnkgbGFuZDogd2hpY2ggdGhlIEVneXB0aWFucyBhc3NheWluZyB0byBkbyB3ZXJlIGRyb3duZWQuCkJ5IGZhaXRoIHRoZSB3YWxscyBvZiBKZXJpY2hvIGZlbGwgZG93biwgYWZ0ZXIgdGhleSB3ZXJlIGNvbXBhc3NlZCBhYm91dCBzZXZlbiBkYXlzLgpCeSBmYWl0aCB0aGUgaGFybG90IFJhaGFiIHBlcmlzaGVkIG5vdCB3aXRoIHRoZW0gdGhhdCBiZWxpZXZlZCBub3QsIHdoZW4gc2hlIGhhZCByZWNlaXZlZCB0aGUgc3BpZXMgd2l0aCBwZWFjZS4KQW5kIHdoYXQgc2hhbGwgSSBtb3JlIHNheT8gZm9yIHRoZSB0aW1lIHdvdWxkIGZhaWwgbWUgdG8gdGVsbCBvZiBHZWRlb24sIGFuZCBvZiBCYXJhaywgYW5kIG9mIFNhbXNvbiwgYW5kIG9mIEplcGh0aGFlOyBvZiBEYXZpZCBhbHNvLCBhbmQgU2FtdWVsLCBhbmQgb2YgdGhlIHByb3BoZXRzOgpXaG8gdGhyb3VnaCBmYWl0aCBzdWJkdWVkIGtpbmdkb21zLCB3cm91Z2h0IHJpZ2h0ZW91c25lc3MsIG9idGFpbmVkIHByb21pc2VzLCBzdG9wcGVkIHRoZSBtb3V0aHMgb2YgbGlvbnMuClF1ZW5jaGVkIHRoZSB2aW9sZW5jZSBvZiBmaXJlLCBlc2NhcGVkIHRoZSBlZGdlIG9mIHRoZSBzd29yZCwgb3V0IG9mIHdlYWtuZXNzIHdlcmUgbWFkZSBzdHJvbmcsIHdheGVkIHZhbGlhbnQgaW4gZmlnaHQsIHR1cm5lZCB0byBmbGlnaHQgdGhlIGFybWllcyBvZiB0aGUgYWxpZW5zLgpXb21lbiByZWNlaXZlZCB0aGVpciBkZWFkIHJhaXNlZCB0byBsaWZlIGFnYWluOiBhbmQgb3RoZXJzIHdlcmUgdG9ydHVyZWQsIG5vdCBhY2NlcHRpbmcgZGVsaXZlcmFuY2U7IHRoYXQgdGhleSBtaWdodCBvYnRhaW4gYSBiZXR0ZXIgcmVzdXJyZWN0aW9uOgpBbmQgb3RoZXJzIGhhZCB0cmlhbCBvZiBjcnVlbCBtb2NraW5ncyBhbmQgc2NvdXJnaW5ncywgeWVhLCBtb3Jlb3ZlciBvZiBib25kcyBhbmQgaW1wcmlzb25tZW50OgpUaGV5IHdlcmUgc3RvbmVkLCB0aGV5IHdlcmUgc2F3biBhc3VuZGVyLCB3ZXJlIHRlbXB0ZWQsIHdlcmUgc2xhaW4gd2l0aCB0aGUgc3dvcmQ6IHRoZXkgd2FuZGVyZWQgYWJvdXQgaW4gc2hlZXBza2lucyBhbmQgZ29hdHNraW5zOyBiZWluZyBkZXN0aXR1dGUsIGFmZmxpY3RlZCwgdG9ybWVudGVkOwooT2Ygd2hvbSB0aGUgd29ybGQgd2FzIG5vdCB3b3J0aHk6KSB0aGV5IHdhbmRlcmVkIGluIGRlc2VydHMsIGFuZCBpbiBtb3VudGFpbnMsIGFuZCBpbiBkZW5zIGFuZCBjYXZlcyBvZiB0aGUgZWFydGguCkFuZCB0aGVzZSBhbGwsIGhhdmluZyBvYnRhaW5lZCBhIGdvb2QgcmVwb3J0IHRocm91Z2ggZmFpdGgsIHJlY2VpdmVkIG5vdCB0aGUgcHJvbWlzZToKR29kIGhhdmluZyBwcm92aWRlZCBzb21lIGJldHRlciB0aGluZyBmb3IgdXMsIHRoYXQgdGhleSB3aXRob3V0IHVzIHNob3VsZCBub3QgYmUgbWFkZSBwZXJmZWN0LgpXaGVyZWZvcmUgc2VlaW5nIHdlIGFsc28gYXJlIGNvbXBhc3NlZCBhYm91dCB3aXRoIHNvIGdyZWF0IGEgY2xvdWQgb2Ygd2l0bmVzc2VzLCBsZXQgdXMgbGF5IGFzaWRlIGV2ZXJ5IHdlaWdodCwgYW5kIHRoZSBzaW4gd2hpY2ggZG90aCBzbyBlYXNpbHkgYmVzZXQgdXMsIGFuZCBsZXQgdXMgcnVuIHdpdGggcGF0aWVuY2UgdGhlIHJhY2UgdGhhdCBpcyBzZXQgYmVmb3JlIHVzLApMb29raW5nIHVudG8gSmVzdXMgdGhlIGF1dGhvciBhbmQgZmluaXNoZXIgb2Ygb3VyIGZhaXRoOyB3aG8gZm9yIHRoZSBqb3kgdGhhdCB3YXMgc2V0IGJlZm9yZSBoaW0gZW5kdXJlZCB0aGUgY3Jvc3MsIGRlc3Bpc2luZyB0aGUgc2hhbWUsIGFuZCBpcyBzZXQgZG93biBhdCB0aGUgcmlnaHQgaGFuZCBvZiB0aGUgdGhyb25lIG9mIEdvZC4KRm9yIGNvbnNpZGVyIGhpbSB0aGF0IGVuZHVyZWQgc3VjaCBjb250cmFkaWN0aW9uIG9mIHNpbm5lcnMgYWdhaW5zdCBoaW1zZWxmLCBsZXN0IHllIGJlIHdlYXJpZWQgYW5kIGZhaW50IGluIHlvdXIgbWluZHMuClllIGhhdmUgbm90IHlldCByZXNpc3RlZCB1bnRvIGJsb29kLCBzdHJpdmluZyBhZ2FpbnN0IHNpbi4KQW5kIHllIGhhdmUgZm9yZ290dGVuIHRoZSBleGhvcnRhdGlvbiB3aGljaCBzcGVha2V0aCB1bnRvIHlvdSBhcyB1bnRvIGNoaWxkcmVuLCBNeSBzb24sIGRlc3Bpc2Ugbm90IHRob3UgdGhlIGNoYXN0ZW5pbmcgb2YgdGhlIExvcmQsIG5vciBmYWludCB3aGVuIHRob3UgYXJ0IHJlYnVrZWQgb2YgaGltOgpGb3Igd2hvbSB0aGUgTG9yZCBsb3ZldGggaGUgY2hhc3RlbmV0aCwgYW5kIHNjb3VyZ2V0aCBldmVyeSBzb24gd2hvbSBoZSByZWNlaXZldGguCklmIHllIGVuZHVyZSBjaGFzdGVuaW5nLCBHb2QgZGVhbGV0aCB3aXRoIHlvdSBhcyB3aXRoIHNvbnM7IGZvciB3aGF0IHNvbiBpcyBoZSB3aG9tIHRoZSBmYXRoZXIgY2hhc3RlbmV0aCBub3Q/CkJ1dCBpZiB5ZSBiZSB3aXRob3V0IGNoYXN0aXNlbWVudCwgd2hlcmVvZiBhbGwgYXJlIHBhcnRha2VycywgdGhlbiBhcmUgeWUgYmFzdGFyZHMsIGFuZCBub3Qgc29ucy4KRnVydGhlcm1vcmUgd2UgaGF2ZSBoYWQgZmF0aGVycyBvZiBvdXIgZmxlc2ggd2hpY2ggY29ycmVjdGVkIHVzLCBhbmQgd2UgZ2F2ZSB0aGVtIHJldmVyZW5jZTogc2hhbGwgd2Ugbm90IG11Y2ggcmF0aGVyIGJlIGluIHN1YmplY3Rpb24gdW50byB0aGUgRmF0aGVyIG9mIHNwaXJpdHMsIGFuZCBsaXZlPwpGb3IgdGhleSB2ZXJpbHkgZm9yIGEgZmV3IGRheXMgY2hhc3RlbmVkIHVzIGFmdGVyIHRoZWlyIG93biBwbGVhc3VyZTsgYnV0IGhlIGZvciBvdXIgcHJvZml0LCB0aGF0IHdlIG1pZ2h0IGJlIHBhcnRha2VycyBvZiBoaXMgaG9saW5lc3MuCk5vdyBubyBjaGFzdGVuaW5nIGZvciB0aGUgcHJlc2VudCBzZWVtZXRoIHRvIGJlIGpveW91cywgYnV0IGdyaWV2b3VzOiBuZXZlcnRoZWxlc3MgYWZ0ZXJ3YXJkIGl0IHlpZWxkZXRoIHRoZSBwZWFjZWFibGUgZnJ1aXQgb2YgcmlnaHRlb3VzbmVzcyB1bnRvIHRoZW0gd2hpY2ggYXJlIGV4ZXJjaXNlZCB0aGVyZWJ5LgpXaGVyZWZvcmUgbGlmdCB1cCB0aGUgaGFuZHMgd2hpY2ggaGFuZyBkb3duLCBhbmQgdGhlIGZlZWJsZSBrbmVlczsKQW5kIG1ha2Ugc3RyYWlnaHQgcGF0aHMgZm9yIHlvdXIgZmVldCwgbGVzdCB0aGF0IHdoaWNoIGlzIGxhbWUgYmUgdHVybmVkIG91dCBvZiB0aGUgd2F5OyBidXQgbGV0IGl0IHJhdGhlciBiZSBoZWFsZWQuCkZvbGxvdyBwZWFjZSB3aXRoIGFsbCBtZW4sIGFuZCBob2xpbmVzcywgd2l0aG91dCB3aGljaCBubyBtYW4gc2hhbGwgc2VlIHRoZSBMb3JkOgpMb29raW5nIGRpbGlnZW50bHkgbGVzdCBhbnkgbWFuIGZhaWwgb2YgdGhlIGdyYWNlIG9mIEdvZDsgbGVzdCBhbnkgcm9vdCBvZiBiaXR0ZXJuZXNzIHNwcmluZ2luZyB1cCB0cm91YmxlIHlvdSwgYW5kIHRoZXJlYnkgbWFueSBiZSBkZWZpbGVkOwpMZXN0IHRoZXJlIGJlIGFueSBmb3JuaWNhdG9yLCBvciBwcm9mYW5lIHBlcnNvbiwgYXMgRXNhdSwgd2hvIGZvciBvbmUgbW9yc2VsIG9mIG1lYXQgc29sZCBoaXMgYmlydGhyaWdodC4KRm9yIHllIGtub3cgaG93IHRoYXQgYWZ0ZXJ3YXJkLCB3aGVuIGhlIHdvdWxkIGhhdmUgaW5oZXJpdGVkIHRoZSBibGVzc2luZywgaGUgd2FzIHJlamVjdGVkOiBmb3IgaGUgZm91bmQgbm8gcGxhY2Ugb2YgcmVwZW50YW5jZSwgdGhvdWdoIGhlIHNvdWdodCBpdCBjYXJlZnVsbHkgd2l0aCB0ZWFycy4KRm9yIHllIGFyZSBub3QgY29tZSB1bnRvIHRoZSBtb3VudCB0aGF0IG1pZ2h0IGJlIHRvdWNoZWQsIGFuZCB0aGF0IGJ1cm5lZCB3aXRoIGZpcmUsIG5vciB1bnRvIGJsYWNrbmVzcywgYW5kIGRhcmtuZXNzLCBhbmQgdGVtcGVzdCwKQW5kIHRoZSBzb3VuZCBvZiBhIHRydW1wZXQsIGFuZCB0aGUgdm9pY2Ugb2Ygd29yZHM7IHdoaWNoIHZvaWNlIHRoZXkgdGhhdCBoZWFyZCBpbnRyZWF0ZWQgdGhhdCB0aGUgd29yZCBzaG91bGQgbm90IGJlIHNwb2tlbiB0byB0aGVtIGFueSBtb3JlOgooRm9yIHRoZXkgY291bGQgbm90IGVuZHVyZSB0aGF0IHdoaWNoIHdhcyBjb21tYW5kZWQsIEFuZCBpZiBzbyBtdWNoIGFzIGEgYmVhc3QgdG91Y2ggdGhlIG1vdW50YWluLCBpdCBzaGFsbCBiZSBzdG9uZWQsIG9yIHRocnVzdCB0aHJvdWdoIHdpdGggYSBkYXJ0OgpBbmQgc28gdGVycmlibGUgd2FzIHRoZSBzaWdodCwgdGhhdCBNb3NlcyBzYWlkLCBJIGV4Y2VlZGluZ2x5IGZlYXIgYW5kIHF1YWtlOikKQnV0IHllIGFyZSBjb21lIHVudG8gbW91bnQgU2lvbiwgYW5kIHVudG8gdGhlIGNpdHkgb2YgdGhlIGxpdmluZyBHb2QsIHRoZSBoZWF2ZW5seSBKZXJ1c2FsZW0sIGFuZCB0byBhbiBpbm51bWVyYWJsZSBjb21wYW55IG9mIGFuZ2VscywKVG8gdGhlIGdlbmVyYWwgYXNzZW1ibHkgYW5kIGNodXJjaCBvZiB0aGUgZmlyc3Rib3JuLCB3aGljaCBhcmUgd3JpdHRlbiBpbiBoZWF2ZW4sIGFuZCB0byBHb2QgdGhlIEp1ZGdlIG9mIGFsbCwgYW5kIHRvIHRoZSBzcGlyaXRzIG9mIGp1c3QgbWVuIG1hZGUgcGVyZmVjdCwKQW5kIHRvIEplc3VzIHRoZSBtZWRpYXRvciBvZiB0aGUgbmV3IGNvdmVuYW50LCBhbmQgdG8gdGhlIGJsb29kIG9mIHNwcmlua2xpbmcsIHRoYXQgc3BlYWtldGggYmV0dGVyIHRoaW5ncyB0aGF0IHRoYXQgb2YgQWJlbC4KU2VlIHRoYXQgeWUgcmVmdXNlIG5vdCBoaW0gdGhhdCBzcGVha2V0aC4gRm9yIGlmIHRoZXkgZXNjYXBlZCBub3Qgd2hvIHJlZnVzZWQgaGltIHRoYXQgc3Bha2Ugb24gZWFydGgsIG11Y2ggbW9yZSBzaGFsbCBub3Qgd2UgZXNjYXBlLCBpZiB3ZSB0dXJuIGF3YXkgZnJvbSBoaW0gdGhhdCBzcGVha2V0aCBmcm9tIGhlYXZlbjoKV2hvc2Ugdm9pY2UgdGhlbiBzaG9vayB0aGUgZWFydGg6IGJ1dCBub3cgaGUgaGF0aCBwcm9taXNlZCwgc2F5aW5nLCBZZXQgb25jZSBtb3JlIEkgc2hha2Ugbm90IHRoZSBlYXJ0aCBvbmx5LCBidXQgYWxzbyBoZWF2ZW4uCkFuZCB0aGlzIHdvcmQsIFlldCBvbmNlIG1vcmUsIHNpZ25pZmlldGggdGhlIHJlbW92aW5nIG9mIHRob3NlIHRoaW5ncyB0aGF0IGFyZSBzaGFrZW4sIGFzIG9mIHRoaW5ncyB0aGF0IGFyZSBtYWRlLCB0aGF0IHRob3NlIHRoaW5ncyB3aGljaCBjYW5ub3QgYmUgc2hha2VuIG1heSByZW1haW4uCldoZXJlZm9yZSB3ZSByZWNlaXZpbmcgYSBraW5nZG9tIHdoaWNoIGNhbm5vdCBiZSBtb3ZlZCwgbGV0IHVzIGhhdmUgZ3JhY2UsIHdoZXJlYnkgd2UgbWF5IHNlcnZlIEdvZCBhY2NlcHRhYmx5IHdpdGggcmV2ZXJlbmNlIGFuZCBnb2RseSBmZWFyOgpGb3Igb3VyIEdvZCBpcyBhIGNvbnN1bWluZyBmaXJlLgpMZXQgYnJvdGhlcmx5IGxvdmUgY29udGludWUuCkJlIG5vdCBmb3JnZXRmdWwgdG8gZW50ZXJ0YWluIHN0cmFuZ2VyczogZm9yIHRoZXJlYnkgc29tZSBoYXZlIGVudGVydGFpbmVkIGFuZ2VscyB1bmF3YXJlcy4KUmVtZW1iZXIgdGhlbSB0aGF0IGFyZSBpbiBib25kcywgYXMgYm91bmQgd2l0aCB0aGVtOyBhbmQgdGhlbSB3aGljaCBzdWZmZXIgYWR2ZXJzaXR5LCBhcyBiZWluZyB5b3Vyc2VsdmVzIGFsc28gaW4gdGhlIGJvZHkuCk1hcnJpYWdlIGlzIGhvbm91cmFibGUgaW4gYWxsLCBhbmQgdGhlIGJlZCB1bmRlZmlsZWQ6IGJ1dCB3aG9yZW1vbmdlcnMgYW5kIGFkdWx0ZXJlcnMgR29kIHdpbGwganVkZ2UuCkxldCB5b3VyIGNvbnZlcnNhdGlvbiBiZSB3aXRob3V0IGNvdmV0b3VzbmVzczsgYW5kIGJlIGNvbnRlbnQgd2l0aCBzdWNoIHRoaW5ncyBhcyB5ZSBoYXZlOiBmb3IgaGUgaGF0aCBzYWlkLCBJIHdpbGwgbmV2ZXIgbGVhdmUgdGhlZSwgbm9yIGZvcnNha2UgdGhlZS4KU28gdGhhdCB3ZSBtYXkgYm9sZGx5IHNheSwgVGhlIExvcmQgaXMgbXkgaGVscGVyLCBhbmQgSSB3aWxsIG5vdCBmZWFyIHdoYXQgbWFuIHNoYWxsIGRvIHVudG8gbWUuClJlbWVtYmVyIHRoZW0gd2hpY2ggaGF2ZSB0aGUgcnVsZSBvdmVyIHlvdSwgd2hvIGhhdmUgc3Bva2VuIHVudG8geW91IHRoZSB3b3JkIG9mIEdvZDogd2hvc2UgZmFpdGggZm9sbG93LCBjb25zaWRlcmluZyB0aGUgZW5kIG9mIHRoZWlyIGNvbnZlcnNhdGlvbi4KSmVzdXMgQ2hyaXN0IHRoZSBzYW1lIHllc3RlcmRheSwgYW5kIHRvIGRheSwgYW5kIGZvciBldmVyLgpCZSBub3QgY2FycmllZCBhYm91dCB3aXRoIGRpdmVycyBhbmQgc3RyYW5nZSBkb2N0cmluZXMuIEZvciBpdCBpcyBhIGdvb2QgdGhpbmcgdGhhdCB0aGUgaGVhcnQgYmUgZXN0YWJsaXNoZWQgd2l0aCBncmFjZTsgbm90IHdpdGggbWVhdHMsIHdoaWNoIGhhdmUgbm90IHByb2ZpdGVkIHRoZW0gdGhhdCBoYXZlIGJlZW4gb2NjdXBpZWQgdGhlcmVpbi4KV2UgaGF2ZSBhbiBhbHRhciwgd2hlcmVvZiB0aGV5IGhhdmUgbm8gcmlnaHQgdG8gZWF0IHdoaWNoIHNlcnZlIHRoZSB0YWJlcm5hY2xlLgpGb3IgdGhlIGJvZGllcyBvZiB0aG9zZSBiZWFzdHMsIHdob3NlIGJsb29kIGlzIGJyb3VnaHQgaW50byB0aGUgc2FuY3R1YXJ5IGJ5IHRoZSBoaWdoIHByaWVzdCBmb3Igc2luLCBhcmUgYnVybmVkIHdpdGhvdXQgdGhlIGNhbXAuCldoZXJlZm9yZSBKZXN1cyBhbHNvLCB0aGF0IGhlIG1pZ2h0IHNhbmN0aWZ5IHRoZSBwZW9wbGUgd2l0aCBoaXMgb3duIGJsb29kLCBzdWZmZXJlZCB3aXRob3V0IHRoZSBnYXRlLgpMZXQgdXMgZ28gZm9ydGggdGhlcmVmb3JlIHVudG8gaGltIHdpdGhvdXQgdGhlIGNhbXAsIGJlYXJpbmcgaGlzIHJlcHJvYWNoLgpGb3IgaGVyZSBoYXZlIHdlIG5vIGNvbnRpbnVpbmcgY2l0eSwgYnV0IHdlIHNlZWsgb25lIHRvIGNvbWUuCkJ5IGhpbSB0aGVyZWZvcmUgbGV0IHVzIG9mZmVyIHRoZSBzYWNyaWZpY2Ugb2YgcHJhaXNlIHRvIEdvZCBjb250aW51YWxseSwgdGhhdCBpcywgdGhlIGZydWl0IG9mIG91ciBsaXBzIGdpdmluZyB0aGFua3MgdG8gaGlzIG5hbWUuCkJ1dCB0byBkbyBnb29kIGFuZCB0byBjb21tdW5pY2F0ZSBmb3JnZXQgbm90OiBmb3Igd2l0aCBzdWNoIHNhY3JpZmljZXMgR29kIGlzIHdlbGwgcGxlYXNlZC4KT2JleSB0aGVtIHRoYXQgaGF2ZSB0aGUgcnVsZSBvdmVyIHlvdSwgYW5kIHN1Ym1pdCB5b3Vyc2VsdmVzOiBmb3IgdGhleSB3YXRjaCBmb3IgeW91ciBzb3VscywgYXMgdGhleSB0aGF0IG11c3QgZ2l2ZSBhY2NvdW50LCB0aGF0IHRoZXkgbWF5IGRvIGl0IHdpdGggam95LCBhbmQgbm90IHdpdGggZ3JpZWY6IGZvciB0aGF0IGlzIHVucHJvZml0YWJsZSBmb3IgeW91LgpQcmF5IGZvciB1czogZm9yIHdlIHRydXN0IHdlIGhhdmUgYSBnb29kIGNvbnNjaWVuY2UsIGluIGFsbCB0aGluZ3Mgd2lsbGluZyB0byBsaXZlIGhvbmVzdGx5LgpCdXQgSSBiZXNlZWNoIHlvdSB0aGUgcmF0aGVyIHRvIGRvIHRoaXMsIHRoYXQgSSBtYXkgYmUgcmVzdG9yZWQgdG8geW91IHRoZSBzb29uZXIuCk5vdyB0aGUgR29kIG9mIHBlYWNlLCB0aGF0IGJyb3VnaHQgYWdhaW4gZnJvbSB0aGUgZGVhZCBvdXIgTG9yZCBKZXN1cywgdGhhdCBncmVhdCBzaGVwaGVyZCBvZiB0aGUgc2hlZXAsIHRocm91Z2ggdGhlIGJsb29kIG9mIHRoZSBldmVybGFzdGluZyBjb3ZlbmFudCwKTWFrZSB5b3UgcGVyZmVjdCBpbiBldmVyeSBnb29kIHdvcmsgdG8gZG8gaGlzIHdpbGwsIHdvcmtpbmcgaW4geW91IHRoYXQgd2hpY2ggaXMgd2VsbHBsZWFzaW5nIGluIGhpcyBzaWdodCwgdGhyb3VnaCBKZXN1cyBDaHJpc3Q7IHRvIHdob20gYmUgZ2xvcnkgZm9yIGV2ZXIgYW5kIGV2ZXIuIEFtZW4uCkFuZCBJIGJlc2VlY2ggeW91LCBicmV0aHJlbiwgc3VmZmVyIHRoZSB3b3JkIG9mIGV4aG9ydGF0aW9uOiBmb3IgSSBoYXZlIHdyaXR0ZW4gYSBsZXR0ZXIgdW50byB5b3UgaW4gZmV3IHdvcmRzLgpLbm93IHllIHRoYXQgb3VyIGJyb3RoZXIgVGltb3RoeSBpcyBzZXQgYXQgbGliZXJ0eTsgd2l0aCB3aG9tLCBpZiBoZSBjb21lIHNob3J0bHksIEkgd2lsbCBzZWUgeW91LgpTYWx1dGUgYWxsIHRoZW0gdGhhdCBoYXZlIHRoZSBydWxlIG92ZXIgeW91LCBhbmQgYWxsIHRoZSBzYWludHMuIFRoZXkgb2YgSXRhbHkgc2FsdXRlIHlvdS4KR3JhY2UgYmUgd2l0aCB5b3UgYWxsLiBBbWVuLgpKYW1lcywgYSBzZXJ2YW50IG9mIEdvZCBhbmQgb2YgdGhlIExvcmQgSmVzdXMgQ2hyaXN0LCB0byB0aGUgdHdlbHZlIHRyaWJlcyB3aGljaCBhcmUgc2NhdHRlcmVkIGFicm9hZCwgZ3JlZXRpbmcuCk15IGJyZXRocmVuLCBjb3VudCBpdCBhbGwgam95IHdoZW4geWUgZmFsbCBpbnRvIGRpdmVycyB0ZW1wdGF0aW9uczsKS25vd2luZyB0aGlzLCB0aGF0IHRoZSB0cnlpbmcgb2YgeW91ciBmYWl0aCB3b3JrZXRoIHBhdGllbmNlLgpCdXQgbGV0IHBhdGllbmNlIGhhdmUgaGVyIHBlcmZlY3Qgd29yaywgdGhhdCB5ZSBtYXkgYmUgcGVyZmVjdCBhbmQgZW50aXJlLCB3YW50aW5nIG5vdGhpbmcuCklmIGFueSBvZiB5b3UgbGFjayB3aXNkb20sIGxldCBoaW0gYXNrIG9mIEdvZCwgdGhhdCBnaXZldGggdG8gYWxsIG1lbiBsaWJlcmFsbHksIGFuZCB1cGJyYWlkZXRoIG5vdDsgYW5kIGl0IHNoYWxsIGJlIGdpdmVuIGhpbS4KQnV0IGxldCBoaW0gYXNrIGluIGZhaXRoLCBub3RoaW5nIHdhdmVyaW5nLiBGb3IgaGUgdGhhdCB3YXZlcmV0aCBpcyBsaWtlIGEgd2F2ZSBvZiB0aGUgc2VhIGRyaXZlbiB3aXRoIHRoZSB3aW5kIGFuZCB0b3NzZWQuCkZvciBsZXQgbm90IHRoYXQgbWFuIHRoaW5rIHRoYXQgaGUgc2hhbGwgcmVjZWl2ZSBhbnkgdGhpbmcgb2YgdGhlIExvcmQuCkEgZG91YmxlIG1pbmRlZCBtYW4gaXMgdW5zdGFibGUgaW4gYWxsIGhpcyB3YXlzLgpMZXQgdGhlIGJyb3RoZXIgb2YgbG93IGRlZ3JlZSByZWpvaWNlIGluIHRoYXQgaGUgaXMgZXhhbHRlZDoKQnV0IHRoZSByaWNoLCBpbiB0aGF0IGhlIGlzIG1hZGUgbG93OiBiZWNhdXNlIGFzIHRoZSBmbG93ZXIgb2YgdGhlIGdyYXNzIGhlIHNoYWxsIHBhc3MgYXdheS4KRm9yIHRoZSBzdW4gaXMgbm8gc29vbmVyIHJpc2VuIHdpdGggYSBidXJuaW5nIGhlYXQsIGJ1dCBpdCB3aXRoZXJldGggdGhlIGdyYXNzLCBhbmQgdGhlIGZsb3dlciB0aGVyZW9mIGZhbGxldGgsIGFuZCB0aGUgZ3JhY2Ugb2YgdGhlIGZhc2hpb24gb2YgaXQgcGVyaXNoZXRoOiBzbyBhbHNvIHNoYWxsIHRoZSByaWNoIG1hbiBmYWRlIGF3YXkgaW4gaGlzIHdheXMuCkJsZXNzZWQgaXMgdGhlIG1hbiB0aGF0IGVuZHVyZXRoIHRlbXB0YXRpb246IGZvciB3aGVuIGhlIGlzIHRyaWVkLCBoZSBzaGFsbCByZWNlaXZlIHRoZSBjcm93biBvZiBsaWZlLCB3aGljaCB0aGUgTG9yZCBoYXRoIHByb21pc2VkIHRvIHRoZW0gdGhhdCBsb3ZlIGhpbS4KTGV0IG5vIG1hbiBzYXkgd2hlbiBoZSBpcyB0ZW1wdGVkLCBJIGFtIHRlbXB0ZWQgb2YgR29kOiBmb3IgR29kIGNhbm5vdCBiZSB0ZW1wdGVkIHdpdGggZXZpbCwgbmVpdGhlciB0ZW1wdGV0aCBoZSBhbnkgbWFuOgpCdXQgZXZlcnkgbWFuIGlzIHRlbXB0ZWQsIHdoZW4gaGUgaXMgZHJhd24gYXdheSBvZiBoaXMgb3duIGx1c3QsIGFuZCBlbnRpY2VkLgpUaGVuIHdoZW4gbHVzdCBoYXRoIGNvbmNlaXZlZCwgaXQgYnJpbmdldGggZm9ydGggc2luOiBhbmQgc2luLCB3aGVuIGl0IGlzIGZpbmlzaGVkLCBicmluZ2V0aCBmb3J0aCBkZWF0aC4KRG8gbm90IGVyciwgbXkgYmVsb3ZlZCBicmV0aHJlbi4KRXZlcnkgZ29vZCBnaWZ0IGFuZCBldmVyeSBwZXJmZWN0IGdpZnQgaXMgZnJvbSBhYm92ZSwgYW5kIGNvbWV0aCBkb3duIGZyb20gdGhlIEZhdGhlciBvZiBsaWdodHMsIHdpdGggd2hvbSBpcyBubyB2YXJpYWJsZW5lc3MsIG5laXRoZXIgc2hhZG93IG9mIHR1cm5pbmcuCk9mIGhpcyBvd24gd2lsbCBiZWdhdCBoZSB1cyB3aXRoIHRoZSB3b3JkIG9mIHRydXRoLCB0aGF0IHdlIHNob3VsZCBiZSBhIGtpbmQgb2YgZmlyc3RmcnVpdHMgb2YgaGlzIGNyZWF0dXJlcy4KV2hlcmVmb3JlLCBteSBiZWxvdmVkIGJyZXRocmVuLCBsZXQgZXZlcnkgbWFuIGJlIHN3aWZ0IHRvIGhlYXIsIHNsb3cgdG8gc3BlYWssIHNsb3cgdG8gd3JhdGg6CkZvciB0aGUgd3JhdGggb2YgbWFuIHdvcmtldGggbm90IHRoZSByaWdodGVvdXNuZXNzIG9mIEdvZC4KV2hlcmVmb3JlIGxheSBhcGFydCBhbGwgZmlsdGhpbmVzcyBhbmQgc3VwZXJmbHVpdHkgb2YgbmF1Z2h0aW5lc3MsIGFuZCByZWNlaXZlIHdpdGggbWVla25lc3MgdGhlIGVuZ3JhZnRlZCB3b3JkLCB3aGljaCBpcyBhYmxlIHRvIHNhdmUgeW91ciBzb3Vscy4KQnV0IGJlIHllIGRvZXJzIG9mIHRoZSB3b3JkLCBhbmQgbm90IGhlYXJlcnMgb25seSwgZGVjZWl2aW5nIHlvdXIgb3duIHNlbHZlcy4KRm9yIGlmIGFueSBiZSBhIGhlYXJlciBvZiB0aGUgd29yZCwgYW5kIG5vdCBhIGRvZXIsIGhlIGlzIGxpa2UgdW50byBhIG1hbiBiZWhvbGRpbmcgaGlzIG5hdHVyYWwgZmFjZSBpbiBhIGdsYXNzOgpGb3IgaGUgYmVob2xkZXRoIGhpbXNlbGYsIGFuZCBnb2V0aCBoaXMgd2F5LCBhbmQgc3RyYWlnaHR3YXkgZm9yZ2V0dGV0aCB3aGF0IG1hbm5lciBvZiBtYW4gaGUgd2FzLgpCdXQgd2hvc28gbG9va2V0aCBpbnRvIHRoZSBwZXJmZWN0IGxhdyBvZiBsaWJlcnR5LCBhbmQgY29udGludWV0aCB0aGVyZWluLCBoZSBiZWluZyBub3QgYSBmb3JnZXRmdWwgaGVhcmVyLCBidXQgYSBkb2VyIG9mIHRoZSB3b3JrLCB0aGlzIG1hbiBzaGFsbCBiZSBibGVzc2VkIGluIGhpcyBkZWVkLgpJZiBhbnkgbWFuIGFtb25nIHlvdSBzZWVtIHRvIGJlIHJlbGlnaW91cywgYW5kIGJyaWRsZXRoIG5vdCBoaXMgdG9uZ3VlLCBidXQgZGVjZWl2ZXRoIGhpcyBvd24gaGVhcnQsIHRoaXMgbWFuJ3MgcmVsaWdpb24gaXMgdmFpbi4KUHVyZSByZWxpZ2lvbiBhbmQgdW5kZWZpbGVkIGJlZm9yZSBHb2QgYW5kIHRoZSBGYXRoZXIgaXMgdGhpcywgVG8gdmlzaXQgdGhlIGZhdGhlcmxlc3MgYW5kIHdpZG93cyBpbiB0aGVpciBhZmZsaWN0aW9uLCBhbmQgdG8ga2VlcCBoaW1zZWxmIHVuc3BvdHRlZCBmcm9tIHRoZSB3b3JsZC4KTXkgYnJldGhyZW4sIGhhdmUgbm90IHRoZSBmYWl0aCBvZiBvdXIgTG9yZCBKZXN1cyBDaHJpc3QsIHRoZSBMb3JkIG9mIGdsb3J5LCB3aXRoIHJlc3BlY3Qgb2YgcGVyc29ucy4KRm9yIGlmIHRoZXJlIGNvbWUgdW50byB5b3VyIGFzc2VtYmx5IGEgbWFuIHdpdGggYSBnb2xkIHJpbmcsIGluIGdvb2RseSBhcHBhcmVsLCBhbmQgdGhlcmUgY29tZSBpbiBhbHNvIGEgcG9vciBtYW4gaW4gdmlsZSByYWltZW50OwpBbmQgeWUgaGF2ZSByZXNwZWN0IHRvIGhpbSB0aGF0IHdlYXJldGggdGhlIGdheSBjbG90aGluZywgYW5kIHNheSB1bnRvIGhpbSwgU2l0IHRob3UgaGVyZSBpbiBhIGdvb2QgcGxhY2U7IGFuZCBzYXkgdG8gdGhlIHBvb3IsIFN0YW5kIHRob3UgdGhlcmUsIG9yIHNpdCBoZXJlIHVuZGVyIG15IGZvb3RzdG9vbDoKQXJlIHllIG5vdCB0aGVuIHBhcnRpYWwgaW4geW91cnNlbHZlcywgYW5kIGFyZSBiZWNvbWUganVkZ2VzIG9mIGV2aWwgdGhvdWdodHM/CkhlYXJrZW4sIG15IGJlbG92ZWQgYnJldGhyZW4sIEhhdGggbm90IEdvZCBjaG9zZW4gdGhlIHBvb3Igb2YgdGhpcyB3b3JsZCByaWNoIGluIGZhaXRoLCBhbmQgaGVpcnMgb2YgdGhlIGtpbmdkb20gd2hpY2ggaGUgaGF0aCBwcm9taXNlZCB0byB0aGVtIHRoYXQgbG92ZSBoaW0/CkJ1dCB5ZSBoYXZlIGRlc3Bpc2VkIHRoZSBwb29yLiBEbyBub3QgcmljaCBtZW4gb3BwcmVzcyB5b3UsIGFuZCBkcmF3IHlvdSBiZWZvcmUgdGhlIGp1ZGdtZW50IHNlYXRzPwpEbyBub3QgdGhleSBibGFzcGhlbWUgdGhhdCB3b3J0aHkgbmFtZSBieSB0aGUgd2hpY2ggeWUgYXJlIGNhbGxlZD8KSWYgeWUgZnVsZmlsIHRoZSByb3lhbCBsYXcgYWNjb3JkaW5nIHRvIHRoZSBzY3JpcHR1cmUsIFRob3Ugc2hhbHQgbG92ZSB0aHkgbmVpZ2hib3VyIGFzIHRoeXNlbGYsIHllIGRvIHdlbGw6CkJ1dCBpZiB5ZSBoYXZlIHJlc3BlY3QgdG8gcGVyc29ucywgeWUgY29tbWl0IHNpbiwgYW5kIGFyZSBjb252aW5jZWQgb2YgdGhlIGxhdyBhcyB0cmFuc2dyZXNzb3JzLgpGb3Igd2hvc29ldmVyIHNoYWxsIGtlZXAgdGhlIHdob2xlIGxhdywgYW5kIHlldCBvZmZlbmQgaW4gb25lIHBvaW50LCBoZSBpcyBndWlsdHkgb2YgYWxsLgpGb3IgaGUgdGhhdCBzYWlkLCBEbyBub3QgY29tbWl0IGFkdWx0ZXJ5LCBzYWlkIGFsc28sIERvIG5vdCBraWxsLiBOb3cgaWYgdGhvdSBjb21taXQgbm8gYWR1bHRlcnksIHlldCBpZiB0aG91IGtpbGwsIHRob3UgYXJ0IGJlY29tZSBhIHRyYW5zZ3Jlc3NvciBvZiB0aGUgbGF3LgpTbyBzcGVhayB5ZSwgYW5kIHNvIGRvLCBhcyB0aGV5IHRoYXQgc2hhbGwgYmUganVkZ2VkIGJ5IHRoZSBsYXcgb2YgbGliZXJ0eS4KRm9yIGhlIHNoYWxsIGhhdmUganVkZ21lbnQgd2l0aG91dCBtZXJjeSwgdGhhdCBoYXRoIHNoZXdlZCBubyBtZXJjeTsgYW5kIG1lcmN5IHJlam9pY2V0aCBhZ2FpbnN0IGp1ZGdtZW50LgpXaGF0IGRvdGggaXQgcHJvZml0LCBteSBicmV0aHJlbiwgdGhvdWdoIGEgbWFuIHNheSBoZSBoYXRoIGZhaXRoLCBhbmQgaGF2ZSBub3Qgd29ya3M/IGNhbiBmYWl0aCBzYXZlIGhpbT8KSWYgYSBicm90aGVyIG9yIHNpc3RlciBiZSBuYWtlZCwgYW5kIGRlc3RpdHV0ZSBvZiBkYWlseSBmb29kLApBbmQgb25lIG9mIHlvdSBzYXkgdW50byB0aGVtLCBEZXBhcnQgaW4gcGVhY2UsIGJlIHllIHdhcm1lZCBhbmQgZmlsbGVkOyBub3R3aXRoc3RhbmRpbmcgeWUgZ2l2ZSB0aGVtIG5vdCB0aG9zZSB0aGluZ3Mgd2hpY2ggYXJlIG5lZWRmdWwgdG8gdGhlIGJvZHk7IHdoYXQgZG90aCBpdCBwcm9maXQ/CkV2ZW4gc28gZmFpdGgsIGlmIGl0IGhhdGggbm90IHdvcmtzLCBpcyBkZWFkLCBiZWluZyBhbG9uZS4KWWVhLCBhIG1hbiBtYXkgc2F5LCBUaG91IGhhc3QgZmFpdGgsIGFuZCBJIGhhdmUgd29ya3M6IHNoZXcgbWUgdGh5IGZhaXRoIHdpdGhvdXQgdGh5IHdvcmtzLCBhbmQgSSB3aWxsIHNoZXcgdGhlZSBteSBmYWl0aCBieSBteSB3b3Jrcy4KVGhvdSBiZWxpZXZlc3QgdGhhdCB0aGVyZSBpcyBvbmUgR29kOyB0aG91IGRvZXN0IHdlbGw6IHRoZSBkZXZpbHMgYWxzbyBiZWxpZXZlLCBhbmQgdHJlbWJsZS4KQnV0IHdpbHQgdGhvdSBrbm93LCBPIHZhaW4gbWFuLCB0aGF0IGZhaXRoIHdpdGhvdXQgd29ya3MgaXMgZGVhZD8KV2FzIG5vdCBBYnJhaGFtIG91ciBmYXRoZXIganVzdGlmaWVkIGJ5IHdvcmtzLCB3aGVuIGhlIGhhZCBvZmZlcmVkIElzYWFjIGhpcyBzb24gdXBvbiB0aGUgYWx0YXI/ClNlZXN0IHRob3UgaG93IGZhaXRoIHdyb3VnaHQgd2l0aCBoaXMgd29ya3MsIGFuZCBieSB3b3JrcyB3YXMgZmFpdGggbWFkZSBwZXJmZWN0PwpBbmQgdGhlIHNjcmlwdHVyZSB3YXMgZnVsZmlsbGVkIHdoaWNoIHNhaXRoLCBBYnJhaGFtIGJlbGlldmVkIEdvZCwgYW5kIGl0IHdhcyBpbXB1dGVkIHVudG8gaGltIGZvciByaWdodGVvdXNuZXNzOiBhbmQgaGUgd2FzIGNhbGxlZCB0aGUgRnJpZW5kIG9mIEdvZC4KWWUgc2VlIHRoZW4gaG93IHRoYXQgYnkgd29ya3MgYSBtYW4gaXMganVzdGlmaWVkLCBhbmQgbm90IGJ5IGZhaXRoIG9ubHkuCkxpa2V3aXNlIGFsc28gd2FzIG5vdCBSYWhhYiB0aGUgaGFybG90IGp1c3RpZmllZCBieSB3b3Jrcywgd2hlbiBzaGUgaGFkIHJlY2VpdmVkIHRoZSBtZXNzZW5nZXJzLCBhbmQgaGFkIHNlbnQgdGhlbSBvdXQgYW5vdGhlciB3YXk/CkZvciBhcyB0aGUgYm9keSB3aXRob3V0IHRoZSBzcGlyaXQgaXMgZGVhZCwgc28gZmFpdGggd2l0aG91dCB3b3JrcyBpcyBkZWFkIGFsc28uCk15IGJyZXRocmVuLCBiZSBub3QgbWFueSBtYXN0ZXJzLCBrbm93aW5nIHRoYXQgd2Ugc2hhbGwgcmVjZWl2ZSB0aGUgZ3JlYXRlciBjb25kZW1uYXRpb24uCkZvciBpbiBtYW55IHRoaW5ncyB3ZSBvZmZlbmQgYWxsLiBJZiBhbnkgbWFuIG9mZmVuZCBub3QgaW4gd29yZCwgdGhlIHNhbWUgaXMgYSBwZXJmZWN0IG1hbiwgYW5kIGFibGUgYWxzbyB0byBicmlkbGUgdGhlIHdob2xlIGJvZHkuCkJlaG9sZCwgd2UgcHV0IGJpdHMgaW4gdGhlIGhvcnNlcycgbW91dGhzLCB0aGF0IHRoZXkgbWF5IG9iZXkgdXM7IGFuZCB3ZSB0dXJuIGFib3V0IHRoZWlyIHdob2xlIGJvZHkuCkJlaG9sZCBhbHNvIHRoZSBzaGlwcywgd2hpY2ggdGhvdWdoIHRoZXkgYmUgc28gZ3JlYXQsIGFuZCBhcmUgZHJpdmVuIG9mIGZpZXJjZSB3aW5kcywgeWV0IGFyZSB0aGV5IHR1cm5lZCBhYm91dCB3aXRoIGEgdmVyeSBzbWFsbCBoZWxtLCB3aGl0aGVyc29ldmVyIHRoZSBnb3Zlcm5vciBsaXN0ZXRoLgpFdmVuIHNvIHRoZSB0b25ndWUgaXMgYSBsaXR0bGUgbWVtYmVyLCBhbmQgYm9hc3RldGggZ3JlYXQgdGhpbmdzLiBCZWhvbGQsIGhvdyBncmVhdCBhIG1hdHRlciBhIGxpdHRsZSBmaXJlIGtpbmRsZXRoIQpBbmQgdGhlIHRvbmd1ZSBpcyBhIGZpcmUsIGEgd29ybGQgb2YgaW5pcXVpdHk6IHNvIGlzIHRoZSB0b25ndWUgYW1vbmcgb3VyIG1lbWJlcnMsIHRoYXQgaXQgZGVmaWxldGggdGhlIHdob2xlIGJvZHksIGFuZCBzZXR0ZXRoIG9uIGZpcmUgdGhlIGNvdXJzZSBvZiBuYXR1cmU7IGFuZCBpdCBpcyBzZXQgb24gZmlyZSBvZiBoZWxsLgpGb3IgZXZlcnkga2luZCBvZiBiZWFzdHMsIGFuZCBvZiBiaXJkcywgYW5kIG9mIHNlcnBlbnRzLCBhbmQgb2YgdGhpbmdzIGluIHRoZSBzZWEsIGlzIHRhbWVkLCBhbmQgaGF0aCBiZWVuIHRhbWVkIG9mIG1hbmtpbmQ6CkJ1dCB0aGUgdG9uZ3VlIGNhbiBubyBtYW4gdGFtZTsgaXQgaXMgYW4gdW5ydWx5IGV2aWwsIGZ1bGwgb2YgZGVhZGx5IHBvaXNvbi4KVGhlcmV3aXRoIGJsZXNzIHdlIEdvZCwgZXZlbiB0aGUgRmF0aGVyOyBhbmQgdGhlcmV3aXRoIGN1cnNlIHdlIG1lbiwgd2hpY2ggYXJlIG1hZGUgYWZ0ZXIgdGhlIHNpbWlsaXR1ZGUgb2YgR29kLgpPdXQgb2YgdGhlIHNhbWUgbW91dGggcHJvY2VlZGV0aCBibGVzc2luZyBhbmQgY3Vyc2luZy4gTXkgYnJldGhyZW4sIHRoZXNlIHRoaW5ncyBvdWdodCBub3Qgc28gdG8gYmUuCkRvdGggYSBmb3VudGFpbiBzZW5kIGZvcnRoIGF0IHRoZSBzYW1lIHBsYWNlIHN3ZWV0IHdhdGVyIGFuZCBiaXR0ZXI/CkNhbiB0aGUgZmlnIHRyZWUsIG15IGJyZXRocmVuLCBiZWFyIG9saXZlIGJlcnJpZXM/IGVpdGhlciBhIHZpbmUsIGZpZ3M/IHNvIGNhbiBubyBmb3VudGFpbiBib3RoIHlpZWxkIHNhbHQgd2F0ZXIgYW5kIGZyZXNoLgpXaG8gaXMgYSB3aXNlIG1hbiBhbmQgZW5kdWVkIHdpdGgga25vd2xlZGdlIGFtb25nIHlvdT8gbGV0IGhpbSBzaGV3IG91dCBvZiBhIGdvb2QgY29udmVyc2F0aW9uIGhpcyB3b3JrcyB3aXRoIG1lZWtuZXNzIG9mIHdpc2RvbS4KQnV0IGlmIHllIGhhdmUgYml0dGVyIGVudnlpbmcgYW5kIHN0cmlmZSBpbiB5b3VyIGhlYXJ0cywgZ2xvcnkgbm90LCBhbmQgbGllIG5vdCBhZ2FpbnN0IHRoZSB0cnV0aC4KVGhpcyB3aXNkb20gZGVzY2VuZGV0aCBub3QgZnJvbSBhYm92ZSwgYnV0IGlzIGVhcnRobHksIHNlbnN1YWwsIGRldmlsaXNoLgpGb3Igd2hlcmUgZW52eWluZyBhbmQgc3RyaWZlIGlzLCB0aGVyZSBpcyBjb25mdXNpb24gYW5kIGV2ZXJ5IGV2aWwgd29yay4KQnV0IHRoZSB3aXNkb20gdGhhdCBpcyBmcm9tIGFib3ZlIGlzIGZpcnN0IHB1cmUsIHRoZW4gcGVhY2VhYmxlLCBnZW50bGUsIGFuZCBlYXN5IHRvIGJlIGludHJlYXRlZCwgZnVsbCBvZiBtZXJjeSBhbmQgZ29vZCBmcnVpdHMsIHdpdGhvdXQgcGFydGlhbGl0eSwgYW5kIHdpdGhvdXQgaHlwb2NyaXN5LgpBbmQgdGhlIGZydWl0IG9mIHJpZ2h0ZW91c25lc3MgaXMgc293biBpbiBwZWFjZSBvZiB0aGVtIHRoYXQgbWFrZSBwZWFjZS4KRnJvbSB3aGVuY2UgY29tZSB3YXJzIGFuZCBmaWdodGluZ3MgYW1vbmcgeW91PyBjb21lIHRoZXkgbm90IGhlbmNlLCBldmVuIG9mIHlvdXIgbHVzdHMgdGhhdCB3YXIgaW4geW91ciBtZW1iZXJzPwpZZSBsdXN0LCBhbmQgaGF2ZSBub3Q6IHllIGtpbGwsIGFuZCBkZXNpcmUgdG8gaGF2ZSwgYW5kIGNhbm5vdCBvYnRhaW46IHllIGZpZ2h0IGFuZCB3YXIsIHlldCB5ZSBoYXZlIG5vdCwgYmVjYXVzZSB5ZSBhc2sgbm90LgpZZSBhc2ssIGFuZCByZWNlaXZlIG5vdCwgYmVjYXVzZSB5ZSBhc2sgYW1pc3MsIHRoYXQgeWUgbWF5IGNvbnN1bWUgaXQgdXBvbiB5b3VyIGx1c3RzLgpZZSBhZHVsdGVyZXJzIGFuZCBhZHVsdGVyZXNzZXMsIGtub3cgeWUgbm90IHRoYXQgdGhlIGZyaWVuZHNoaXAgb2YgdGhlIHdvcmxkIGlzIGVubWl0eSB3aXRoIEdvZD8gd2hvc29ldmVyIHRoZXJlZm9yZSB3aWxsIGJlIGEgZnJpZW5kIG9mIHRoZSB3b3JsZCBpcyB0aGUgZW5lbXkgb2YgR29kLgpEbyB5ZSB0aGluayB0aGF0IHRoZSBzY3JpcHR1cmUgc2FpdGggaW4gdmFpbiwgVGhlIHNwaXJpdCB0aGF0IGR3ZWxsZXRoIGluIHVzIGx1c3RldGggdG8gZW52eT8KQnV0IGhlIGdpdmV0aCBtb3JlIGdyYWNlLiBXaGVyZWZvcmUgaGUgc2FpdGgsIEdvZCByZXNpc3RldGggdGhlIHByb3VkLCBidXQgZ2l2ZXRoIGdyYWNlIHVudG8gdGhlIGh1bWJsZS4KU3VibWl0IHlvdXJzZWx2ZXMgdGhlcmVmb3JlIHRvIEdvZC4gUmVzaXN0IHRoZSBkZXZpbCwgYW5kIGhlIHdpbGwgZmxlZSBmcm9tIHlvdS4KRHJhdyBuaWdoIHRvIEdvZCwgYW5kIGhlIHdpbGwgZHJhdyBuaWdoIHRvIHlvdS4gQ2xlYW5zZSB5b3VyIGhhbmRzLCB5ZSBzaW5uZXJzOyBhbmQgcHVyaWZ5IHlvdXIgaGVhcnRzLCB5ZSBkb3VibGUgbWluZGVkLgpCZSBhZmZsaWN0ZWQsIGFuZCBtb3VybiwgYW5kIHdlZXA6IGxldCB5b3VyIGxhdWdodGVyIGJlIHR1cm5lZCB0byBtb3VybmluZywgYW5kIHlvdXIgam95IHRvIGhlYXZpbmVzcy4KSHVtYmxlIHlvdXJzZWx2ZXMgaW4gdGhlIHNpZ2h0IG9mIHRoZSBMb3JkLCBhbmQgaGUgc2hhbGwgbGlmdCB5b3UgdXAuClNwZWFrIG5vdCBldmlsIG9uZSBvZiBhbm90aGVyLCBicmV0aHJlbi4gSGUgdGhhdCBzcGVha2V0aCBldmlsIG9mIGhpcyBicm90aGVyLCBhbmQganVkZ2V0aCBoaXMgYnJvdGhlciwgc3BlYWtldGggZXZpbCBvZiB0aGUgbGF3LCBhbmQganVkZ2V0aCB0aGUgbGF3OiBidXQgaWYgdGhvdSBqdWRnZSB0aGUgbGF3LCB0aG91IGFydCBub3QgYSBkb2VyIG9mIHRoZSBsYXcsIGJ1dCBhIGp1ZGdlLgpUaGVyZSBpcyBvbmUgbGF3Z2l2ZXIsIHdobyBpcyBhYmxlIHRvIHNhdmUgYW5kIHRvIGRlc3Ryb3k6IHdobyBhcnQgdGhvdSB0aGF0IGp1ZGdlc3QgYW5vdGhlcj8KR28gdG8gbm93LCB5ZSB0aGF0IHNheSwgVG8gZGF5IG9yIHRvIG1vcnJvdyB3ZSB3aWxsIGdvIGludG8gc3VjaCBhIGNpdHksIGFuZCBjb250aW51ZSB0aGVyZSBhIHllYXIsIGFuZCBidXkgYW5kIHNlbGwsIGFuZCBnZXQgZ2FpbjoKV2hlcmVhcyB5ZSBrbm93IG5vdCB3aGF0IHNoYWxsIGJlIG9uIHRoZSBtb3Jyb3cuIEZvciB3aGF0IGlzIHlvdXIgbGlmZT8gSXQgaXMgZXZlbiBhIHZhcG91ciwgdGhhdCBhcHBlYXJldGggZm9yIGEgbGl0dGxlIHRpbWUsIGFuZCB0aGVuIHZhbmlzaGV0aCBhd2F5LgpGb3IgdGhhdCB5ZSBvdWdodCB0byBzYXksIElmIHRoZSBMb3JkIHdpbGwsIHdlIHNoYWxsIGxpdmUsIGFuZCBkbyB0aGlzLCBvciB0aGF0LgpCdXQgbm93IHllIHJlam9pY2UgaW4geW91ciBib2FzdGluZ3M6IGFsbCBzdWNoIHJlam9pY2luZyBpcyBldmlsLgpUaGVyZWZvcmUgdG8gaGltIHRoYXQga25vd2V0aCB0byBkbyBnb29kLCBhbmQgZG9ldGggaXQgbm90LCB0byBoaW0gaXQgaXMgc2luLgpHbyB0byBub3csIHllIHJpY2ggbWVuLCB3ZWVwIGFuZCBob3dsIGZvciB5b3VyIG1pc2VyaWVzIHRoYXQgc2hhbGwgY29tZSB1cG9uIHlvdS4KWW91ciByaWNoZXMgYXJlIGNvcnJ1cHRlZCwgYW5kIHlvdXIgZ2FybWVudHMgYXJlIG1vdGhlYXRlbi4KWW91ciBnb2xkIGFuZCBzaWx2ZXIgaXMgY2Fua2VyZWQ7IGFuZCB0aGUgcnVzdCBvZiB0aGVtIHNoYWxsIGJlIGEgd2l0bmVzcyBhZ2FpbnN0IHlvdSwgYW5kIHNoYWxsIGVhdCB5b3VyIGZsZXNoIGFzIGl0IHdlcmUgZmlyZS4gWWUgaGF2ZSBoZWFwZWQgdHJlYXN1cmUgdG9nZXRoZXIgZm9yIHRoZSBsYXN0IGRheXMuCkJlaG9sZCwgdGhlIGhpcmUgb2YgdGhlIGxhYm91cmVycyB3aG8gaGF2ZSByZWFwZWQgZG93biB5b3VyIGZpZWxkcywgd2hpY2ggaXMgb2YgeW91IGtlcHQgYmFjayBieSBmcmF1ZCwgY3JpZXRoOiBhbmQgdGhlIGNyaWVzIG9mIHRoZW0gd2hpY2ggaGF2ZSByZWFwZWQgYXJlIGVudGVyZWQgaW50byB0aGUgZWFycyBvZiB0aGUgTG9yZCBvZiBzYWJhb3RoLgpZZSBoYXZlIGxpdmVkIGluIHBsZWFzdXJlIG9uIHRoZSBlYXJ0aCwgYW5kIGJlZW4gd2FudG9uOyB5ZSBoYXZlIG5vdXJpc2hlZCB5b3VyIGhlYXJ0cywgYXMgaW4gYSBkYXkgb2Ygc2xhdWdodGVyLgpZZSBoYXZlIGNvbmRlbW5lZCBhbmQga2lsbGVkIHRoZSBqdXN0OyBhbmQgaGUgZG90aCBub3QgcmVzaXN0IHlvdS4KQmUgcGF0aWVudCB0aGVyZWZvcmUsIGJyZXRocmVuLCB1bnRvIHRoZSBjb21pbmcgb2YgdGhlIExvcmQuIEJlaG9sZCwgdGhlIGh1c2JhbmRtYW4gd2FpdGV0aCBmb3IgdGhlIHByZWNpb3VzIGZydWl0IG9mIHRoZSBlYXJ0aCwgYW5kIGhhdGggbG9uZyBwYXRpZW5jZSBmb3IgaXQsIHVudGlsIGhlIHJlY2VpdmUgdGhlIGVhcmx5IGFuZCBsYXR0ZXIgcmFpbi4KQmUgeWUgYWxzbyBwYXRpZW50OyBzdGFibGlzaCB5b3VyIGhlYXJ0czogZm9yIHRoZSBjb21pbmcgb2YgdGhlIExvcmQgZHJhd2V0aCBuaWdoLgpHcnVkZ2Ugbm90IG9uZSBhZ2FpbnN0IGFub3RoZXIsIGJyZXRocmVuLCBsZXN0IHllIGJlIGNvbmRlbW5lZDogYmVob2xkLCB0aGUganVkZ2Ugc3RhbmRldGggYmVmb3JlIHRoZSBkb29yLgpUYWtlLCBteSBicmV0aHJlbiwgdGhlIHByb3BoZXRzLCB3aG8gaGF2ZSBzcG9rZW4gaW4gdGhlIG5hbWUgb2YgdGhlIExvcmQsIGZvciBhbiBleGFtcGxlIG9mIHN1ZmZlcmluZyBhZmZsaWN0aW9uLCBhbmQgb2YgcGF0aWVuY2UuCkJlaG9sZCwgd2UgY291bnQgdGhlbSBoYXBweSB3aGljaCBlbmR1cmUuIFllIGhhdmUgaGVhcmQgb2YgdGhlIHBhdGllbmNlIG9mIEpvYiwgYW5kIGhhdmUgc2VlbiB0aGUgZW5kIG9mIHRoZSBMb3JkOyB0aGF0IHRoZSBMb3JkIGlzIHZlcnkgcGl0aWZ1bCwgYW5kIG9mIHRlbmRlciBtZXJjeS4KQnV0IGFib3ZlIGFsbCB0aGluZ3MsIG15IGJyZXRocmVuLCBzd2VhciBub3QsIG5laXRoZXIgYnkgaGVhdmVuLCBuZWl0aGVyIGJ5IHRoZSBlYXJ0aCwgbmVpdGhlciBieSBhbnkgb3RoZXIgb2F0aDogYnV0IGxldCB5b3VyIHllYSBiZSB5ZWE7IGFuZCB5b3VyIG5heSwgbmF5OyBsZXN0IHllIGZhbGwgaW50byBjb25kZW1uYXRpb24uCklzIGFueSBhbW9uZyB5b3UgYWZmbGljdGVkPyBsZXQgaGltIHByYXkuIElzIGFueSBtZXJyeT8gbGV0IGhpbSBzaW5nIHBzYWxtcy4KSXMgYW55IHNpY2sgYW1vbmcgeW91PyBsZXQgaGltIGNhbGwgZm9yIHRoZSBlbGRlcnMgb2YgdGhlIGNodXJjaDsgYW5kIGxldCB0aGVtIHByYXkgb3ZlciBoaW0sIGFub2ludGluZyBoaW0gd2l0aCBvaWwgaW4gdGhlIG5hbWUgb2YgdGhlIExvcmQ6CkFuZCB0aGUgcHJheWVyIG9mIGZhaXRoIHNoYWxsIHNhdmUgdGhlIHNpY2ssIGFuZCB0aGUgTG9yZCBzaGFsbCByYWlzZSBoaW0gdXA7IGFuZCBpZiBoZSBoYXZlIGNvbW1pdHRlZCBzaW5zLCB0aGV5IHNoYWxsIGJlIGZvcmdpdmVuIGhpbS4KQ29uZmVzcyB5b3VyIGZhdWx0cyBvbmUgdG8gYW5vdGhlciwgYW5kIHByYXkgb25lIGZvciBhbm90aGVyLCB0aGF0IHllIG1heSBiZSBoZWFsZWQuIFRoZSBlZmZlY3R1YWwgZmVydmVudCBwcmF5ZXIgb2YgYSByaWdodGVvdXMgbWFuIGF2YWlsZXRoIG11Y2guCkVsaWFzIHdhcyBhIG1hbiBzdWJqZWN0IHRvIGxpa2UgcGFzc2lvbnMgYXMgd2UgYXJlLCBhbmQgaGUgcHJheWVkIGVhcm5lc3RseSB0aGF0IGl0IG1pZ2h0IG5vdCByYWluOiBhbmQgaXQgcmFpbmVkIG5vdCBvbiB0aGUgZWFydGggYnkgdGhlIHNwYWNlIG9mIHRocmVlIHllYXJzIGFuZCBzaXggbW9udGhzLgpBbmQgaGUgcHJheWVkIGFnYWluLCBhbmQgdGhlIGhlYXZlbiBnYXZlIHJhaW4sIGFuZCB0aGUgZWFydGggYnJvdWdodCBmb3J0aCBoZXIgZnJ1aXQuCkJyZXRocmVuLCBpZiBhbnkgb2YgeW91IGRvIGVyciBmcm9tIHRoZSB0cnV0aCwgYW5kIG9uZSBjb252ZXJ0IGhpbTsKTGV0IGhpbSBrbm93LCB0aGF0IGhlIHdoaWNoIGNvbnZlcnRldGggdGhlIHNpbm5lciBmcm9tIHRoZSBlcnJvciBvZiBoaXMgd2F5IHNoYWxsIHNhdmUgYSBzb3VsIGZyb20gZGVhdGgsIGFuZCBzaGFsbCBoaWRlIGEgbXVsdGl0dWRlIG9mIHNpbnMuClBldGVyLCBhbiBhcG9zdGxlIG9mIEplc3VzIENocmlzdCwgdG8gdGhlIHN0cmFuZ2VycyBzY2F0dGVyZWQgdGhyb3VnaG91dCBQb250dXMsIEdhbGF0aWEsIENhcHBhZG9jaWEsIEFzaWEsIGFuZCBCaXRoeW5pYSwKRWxlY3QgYWNjb3JkaW5nIHRvIHRoZSBmb3Jla25vd2xlZGdlIG9mIEdvZCB0aGUgRmF0aGVyLCB0aHJvdWdoIHNhbmN0aWZpY2F0aW9uIG9mIHRoZSBTcGlyaXQsIHVudG8gb2JlZGllbmNlIGFuZCBzcHJpbmtsaW5nIG9mIHRoZSBibG9vZCBvZiBKZXN1cyBDaHJpc3Q6IEdyYWNlIHVudG8geW91LCBhbmQgcGVhY2UsIGJlIG11bHRpcGxpZWQuCkJsZXNzZWQgYmUgdGhlIEdvZCBhbmQgRmF0aGVyIG9mIG91ciBMb3JkIEplc3VzIENocmlzdCwgd2hpY2ggYWNjb3JkaW5nIHRvIGhpcyBhYnVuZGFudCBtZXJjeSBoYXRoIGJlZ290dGVuIHVzIGFnYWluIHVudG8gYSBsaXZlbHkgaG9wZSBieSB0aGUgcmVzdXJyZWN0aW9uIG9mIEplc3VzIENocmlzdCBmcm9tIHRoZSBkZWFkLApUbyBhbiBpbmhlcml0YW5jZSBpbmNvcnJ1cHRpYmxlLCBhbmQgdW5kZWZpbGVkLCBhbmQgdGhhdCBmYWRldGggbm90IGF3YXksIHJlc2VydmVkIGluIGhlYXZlbiBmb3IgeW91LApXaG8gYXJlIGtlcHQgYnkgdGhlIHBvd2VyIG9mIEdvZCB0aHJvdWdoIGZhaXRoIHVudG8gc2FsdmF0aW9uIHJlYWR5IHRvIGJlIHJldmVhbGVkIGluIHRoZSBsYXN0IHRpbWUuCldoZXJlaW4geWUgZ3JlYXRseSByZWpvaWNlLCB0aG91Z2ggbm93IGZvciBhIHNlYXNvbiwgaWYgbmVlZCBiZSwgeWUgYXJlIGluIGhlYXZpbmVzcyB0aHJvdWdoIG1hbmlmb2xkIHRlbXB0YXRpb25zOgpUaGF0IHRoZSB0cmlhbCBvZiB5b3VyIGZhaXRoLCBiZWluZyBtdWNoIG1vcmUgcHJlY2lvdXMgdGhhbiBvZiBnb2xkIHRoYXQgcGVyaXNoZXRoLCB0aG91Z2ggaXQgYmUgdHJpZWQgd2l0aCBmaXJlLCBtaWdodCBiZSBmb3VuZCB1bnRvIHByYWlzZSBhbmQgaG9ub3VyIGFuZCBnbG9yeSBhdCB0aGUgYXBwZWFyaW5nIG9mIEplc3VzIENocmlzdDoKV2hvbSBoYXZpbmcgbm90IHNlZW4sIHllIGxvdmU7IGluIHdob20sIHRob3VnaCBub3cgeWUgc2VlIGhpbSBub3QsIHlldCBiZWxpZXZpbmcsIHllIHJlam9pY2Ugd2l0aCBqb3kgdW5zcGVha2FibGUgYW5kIGZ1bGwgb2YgZ2xvcnk6ClJlY2VpdmluZyB0aGUgZW5kIG9mIHlvdXIgZmFpdGgsIGV2ZW4gdGhlIHNhbHZhdGlvbiBvZiB5b3VyIHNvdWxzLgpPZiB3aGljaCBzYWx2YXRpb24gdGhlIHByb3BoZXRzIGhhdmUgZW5xdWlyZWQgYW5kIHNlYXJjaGVkIGRpbGlnZW50bHksIHdobyBwcm9waGVzaWVkIG9mIHRoZSBncmFjZSB0aGF0IHNob3VsZCBjb21lIHVudG8geW91OgpTZWFyY2hpbmcgd2hhdCwgb3Igd2hhdCBtYW5uZXIgb2YgdGltZSB0aGUgU3Bpcml0IG9mIENocmlzdCB3aGljaCB3YXMgaW4gdGhlbSBkaWQgc2lnbmlmeSwgd2hlbiBpdCB0ZXN0aWZpZWQgYmVmb3JlaGFuZCB0aGUgc3VmZmVyaW5ncyBvZiBDaHJpc3QsIGFuZCB0aGUgZ2xvcnkgdGhhdCBzaG91bGQgZm9sbG93LgpVbnRvIHdob20gaXQgd2FzIHJldmVhbGVkLCB0aGF0IG5vdCB1bnRvIHRoZW1zZWx2ZXMsIGJ1dCB1bnRvIHVzIHRoZXkgZGlkIG1pbmlzdGVyIHRoZSB0aGluZ3MsIHdoaWNoIGFyZSBub3cgcmVwb3J0ZWQgdW50byB5b3UgYnkgdGhlbSB0aGF0IGhhdmUgcHJlYWNoZWQgdGhlIGdvc3BlbCB1bnRvIHlvdSB3aXRoIHRoZSBIb2x5IEdob3N0IHNlbnQgZG93biBmcm9tIGhlYXZlbjsgd2hpY2ggdGhpbmdzIHRoZSBhbmdlbHMgZGVzaXJlIHRvIGxvb2sgaW50by4KV2hlcmVmb3JlIGdpcmQgdXAgdGhlIGxvaW5zIG9mIHlvdXIgbWluZCwgYmUgc29iZXIsIGFuZCBob3BlIHRvIHRoZSBlbmQgZm9yIHRoZSBncmFjZSB0aGF0IGlzIHRvIGJlIGJyb3VnaHQgdW50byB5b3UgYXQgdGhlIHJldmVsYXRpb24gb2YgSmVzdXMgQ2hyaXN0OwpBcyBvYmVkaWVudCBjaGlsZHJlbiwgbm90IGZhc2hpb25pbmcgeW91cnNlbHZlcyBhY2NvcmRpbmcgdG8gdGhlIGZvcm1lciBsdXN0cyBpbiB5b3VyIGlnbm9yYW5jZToKQnV0IGFzIGhlIHdoaWNoIGhhdGggY2FsbGVkIHlvdSBpcyBob2x5LCBzbyBiZSB5ZSBob2x5IGluIGFsbCBtYW5uZXIgb2YgY29udmVyc2F0aW9uOwpCZWNhdXNlIGl0IGlzIHdyaXR0ZW4sIEJlIHllIGhvbHk7IGZvciBJIGFtIGhvbHkuCkFuZCBpZiB5ZSBjYWxsIG9uIHRoZSBGYXRoZXIsIHdobyB3aXRob3V0IHJlc3BlY3Qgb2YgcGVyc29ucyBqdWRnZXRoIGFjY29yZGluZyB0byBldmVyeSBtYW4ncyB3b3JrLCBwYXNzIHRoZSB0aW1lIG9mIHlvdXIgc29qb3VybmluZyBoZXJlIGluIGZlYXI6CkZvcmFzbXVjaCBhcyB5ZSBrbm93IHRoYXQgeWUgd2VyZSBub3QgcmVkZWVtZWQgd2l0aCBjb3JydXB0aWJsZSB0aGluZ3MsIGFzIHNpbHZlciBhbmQgZ29sZCwgZnJvbSB5b3VyIHZhaW4gY29udmVyc2F0aW9uIHJlY2VpdmVkIGJ5IHRyYWRpdGlvbiBmcm9tIHlvdXIgZmF0aGVyczsKQnV0IHdpdGggdGhlIHByZWNpb3VzIGJsb29kIG9mIENocmlzdCwgYXMgb2YgYSBsYW1iIHdpdGhvdXQgYmxlbWlzaCBhbmQgd2l0aG91dCBzcG90OgpXaG8gdmVyaWx5IHdhcyBmb3Jlb3JkYWluZWQgYmVmb3JlIHRoZSBmb3VuZGF0aW9uIG9mIHRoZSB3b3JsZCwgYnV0IHdhcyBtYW5pZmVzdCBpbiB0aGVzZSBsYXN0IHRpbWVzIGZvciB5b3UsCldobyBieSBoaW0gZG8gYmVsaWV2ZSBpbiBHb2QsIHRoYXQgcmFpc2VkIGhpbSB1cCBmcm9tIHRoZSBkZWFkLCBhbmQgZ2F2ZSBoaW0gZ2xvcnk7IHRoYXQgeW91ciBmYWl0aCBhbmQgaG9wZSBtaWdodCBiZSBpbiBHb2QuClNlZWluZyB5ZSBoYXZlIHB1cmlmaWVkIHlvdXIgc291bHMgaW4gb2JleWluZyB0aGUgdHJ1dGggdGhyb3VnaCB0aGUgU3Bpcml0IHVudG8gdW5mZWlnbmVkIGxvdmUgb2YgdGhlIGJyZXRocmVuLCBzZWUgdGhhdCB5ZSBsb3ZlIG9uZSBhbm90aGVyIHdpdGggYSBwdXJlIGhlYXJ0IGZlcnZlbnRseToKQmVpbmcgYm9ybiBhZ2Fpbiwgbm90IG9mIGNvcnJ1cHRpYmxlIHNlZWQsIGJ1dCBvZiBpbmNvcnJ1cHRpYmxlLCBieSB0aGUgd29yZCBvZiBHb2QsIHdoaWNoIGxpdmV0aCBhbmQgYWJpZGV0aCBmb3IgZXZlci4KRm9yIGFsbCBmbGVzaCBpcyBhcyBncmFzcywgYW5kIGFsbCB0aGUgZ2xvcnkgb2YgbWFuIGFzIHRoZSBmbG93ZXIgb2YgZ3Jhc3MuIFRoZSBncmFzcyB3aXRoZXJldGgsIGFuZCB0aGUgZmxvd2VyIHRoZXJlb2YgZmFsbGV0aCBhd2F5OgpCdXQgdGhlIHdvcmQgb2YgdGhlIExvcmQgZW5kdXJldGggZm9yIGV2ZXIuIEFuZCB0aGlzIGlzIHRoZSB3b3JkIHdoaWNoIGJ5IHRoZSBnb3NwZWwgaXMgcHJlYWNoZWQgdW50byB5b3UuCldoZXJlZm9yZSBsYXlpbmcgYXNpZGUgYWxsIG1hbGljZSwgYW5kIGFsbCBndWlsZSwgYW5kIGh5cG9jcmlzaWVzLCBhbmQgZW52aWVzLCBhbGwgZXZpbCBzcGVha2luZ3MsCkFzIG5ld2Jvcm4gYmFiZXMsIGRlc2lyZSB0aGUgc2luY2VyZSBtaWxrIG9mIHRoZSB3b3JkLCB0aGF0IHllIG1heSBncm93IHRoZXJlYnk6CklmIHNvIGJlIHllIGhhdmUgdGFzdGVkIHRoYXQgdGhlIExvcmQgaXMgZ3JhY2lvdXMuClRvIHdob20gY29taW5nLCBhcyB1bnRvIGEgbGl2aW5nIHN0b25lLCBkaXNhbGxvd2VkIGluZGVlZCBvZiBtZW4sIGJ1dCBjaG9zZW4gb2YgR29kLCBhbmQgcHJlY2lvdXMsClllIGFsc28sIGFzIGxpdmVseSBzdG9uZXMsIGFyZSBidWlsdCB1cCBhIHNwaXJpdHVhbCBob3VzZSwgYW4gaG9seSBwcmllc3Rob29kLCB0byBvZmZlciB1cCBzcGlyaXR1YWwgc2FjcmlmaWNlcywgYWNjZXB0YWJsZSB0byBHb2QgYnkgSmVzdXMgQ2hyaXN0LgpXaGVyZWZvcmUgYWxzbyBpdCBpcyBjb250YWluZWQgaW4gdGhlIHNjcmlwdHVyZSwgQmVob2xkLCBJIGxheSBpbiBTaW9uIGEgY2hpZWYgY29ybmVyIHN0b25lLCBlbGVjdCwgcHJlY2lvdXM6IGFuZCBoZSB0aGF0IGJlbGlldmV0aCBvbiBoaW0gc2hhbGwgbm90IGJlIGNvbmZvdW5kZWQuClVudG8geW91IHRoZXJlZm9yZSB3aGljaCBiZWxpZXZlIGhlIGlzIHByZWNpb3VzOiBidXQgdW50byB0aGVtIHdoaWNoIGJlIGRpc29iZWRpZW50LCB0aGUgc3RvbmUgd2hpY2ggdGhlIGJ1aWxkZXJzIGRpc2FsbG93ZWQsIHRoZSBzYW1lIGlzIG1hZGUgdGhlIGhlYWQgb2YgdGhlIGNvcm5lciwKQW5kIGEgc3RvbmUgb2Ygc3R1bWJsaW5nLCBhbmQgYSByb2NrIG9mIG9mZmVuY2UsIGV2ZW4gdG8gdGhlbSB3aGljaCBzdHVtYmxlIGF0IHRoZSB3b3JkLCBiZWluZyBkaXNvYmVkaWVudDogd2hlcmV1bnRvIGFsc28gdGhleSB3ZXJlIGFwcG9pbnRlZC4KQnV0IHllIGFyZSBhIGNob3NlbiBnZW5lcmF0aW9uLCBhIHJveWFsIHByaWVzdGhvb2QsIGFuIGhvbHkgbmF0aW9uLCBhIHBlY3VsaWFyIHBlb3BsZTsgdGhhdCB5ZSBzaG91bGQgc2hldyBmb3J0aCB0aGUgcHJhaXNlcyBvZiBoaW0gd2hvIGhhdGggY2FsbGVkIHlvdSBvdXQgb2YgZGFya25lc3MgaW50byBoaXMgbWFydmVsbG91cyBsaWdodDsKV2hpY2ggaW4gdGltZSBwYXN0IHdlcmUgbm90IGEgcGVvcGxlLCBidXQgYXJlIG5vdyB0aGUgcGVvcGxlIG9mIEdvZDogd2hpY2ggaGFkIG5vdCBvYnRhaW5lZCBtZXJjeSwgYnV0IG5vdyBoYXZlIG9idGFpbmVkIG1lcmN5LgpEZWFybHkgYmVsb3ZlZCwgSSBiZXNlZWNoIHlvdSBhcyBzdHJhbmdlcnMgYW5kIHBpbGdyaW1zLCBhYnN0YWluIGZyb20gZmxlc2hseSBsdXN0cywgd2hpY2ggd2FyIGFnYWluc3QgdGhlIHNvdWw7CkhhdmluZyB5b3VyIGNvbnZlcnNhdGlvbiBob25lc3QgYW1vbmcgdGhlIEdlbnRpbGVzOiB0aGF0LCB3aGVyZWFzIHRoZXkgc3BlYWsgYWdhaW5zdCB5b3UgYXMgZXZpbGRvZXJzLCB0aGV5IG1heSBieSB5b3VyIGdvb2Qgd29ya3MsIHdoaWNoIHRoZXkgc2hhbGwgYmVob2xkLCBnbG9yaWZ5IEdvZCBpbiB0aGUgZGF5IG9mIHZpc2l0YXRpb24uClN1Ym1pdCB5b3Vyc2VsdmVzIHRvIGV2ZXJ5IG9yZGluYW5jZSBvZiBtYW4gZm9yIHRoZSBMb3JkJ3Mgc2FrZTogd2hldGhlciBpdCBiZSB0byB0aGUga2luZywgYXMgc3VwcmVtZTsKT3IgdW50byBnb3Zlcm5vcnMsIGFzIHVudG8gdGhlbSB0aGF0IGFyZSBzZW50IGJ5IGhpbSBmb3IgdGhlIHB1bmlzaG1lbnQgb2YgZXZpbGRvZXJzLCBhbmQgZm9yIHRoZSBwcmFpc2Ugb2YgdGhlbSB0aGF0IGRvIHdlbGwuCkZvciBzbyBpcyB0aGUgd2lsbCBvZiBHb2QsIHRoYXQgd2l0aCB3ZWxsIGRvaW5nIHllIG1heSBwdXQgdG8gc2lsZW5jZSB0aGUgaWdub3JhbmNlIG9mIGZvb2xpc2ggbWVuOgpBcyBmcmVlLCBhbmQgbm90IHVzaW5nIHlvdXIgbGliZXJ0eSBmb3IgYSBjbG9rZSBvZiBtYWxpY2lvdXNuZXNzLCBidXQgYXMgdGhlIHNlcnZhbnRzIG9mIEdvZC4KSG9ub3VyIGFsbCBtZW4uIExvdmUgdGhlIGJyb3RoZXJob29kLiBGZWFyIEdvZC4gSG9ub3VyIHRoZSBraW5nLgpTZXJ2YW50cywgYmUgc3ViamVjdCB0byB5b3VyIG1hc3RlcnMgd2l0aCBhbGwgZmVhcjsgbm90IG9ubHkgdG8gdGhlIGdvb2QgYW5kIGdlbnRsZSwgYnV0IGFsc28gdG8gdGhlIGZyb3dhcmQuCkZvciB0aGlzIGlzIHRoYW5rd29ydGh5LCBpZiBhIG1hbiBmb3IgY29uc2NpZW5jZSB0b3dhcmQgR29kIGVuZHVyZSBncmllZiwgc3VmZmVyaW5nIHdyb25nZnVsbHkuCkZvciB3aGF0IGdsb3J5IGlzIGl0LCBpZiwgd2hlbiB5ZSBiZSBidWZmZXRlZCBmb3IgeW91ciBmYXVsdHMsIHllIHNoYWxsIHRha2UgaXQgcGF0aWVudGx5PyBidXQgaWYsIHdoZW4geWUgZG8gd2VsbCwgYW5kIHN1ZmZlciBmb3IgaXQsIHllIHRha2UgaXQgcGF0aWVudGx5LCB0aGlzIGlzIGFjY2VwdGFibGUgd2l0aCBHb2QuCkZvciBldmVuIGhlcmV1bnRvIHdlcmUgeWUgY2FsbGVkOiBiZWNhdXNlIENocmlzdCBhbHNvIHN1ZmZlcmVkIGZvciB1cywgbGVhdmluZyB1cyBhbiBleGFtcGxlLCB0aGF0IHllIHNob3VsZCBmb2xsb3cgaGlzIHN0ZXBzOgpXaG8gZGlkIG5vIHNpbiwgbmVpdGhlciB3YXMgZ3VpbGUgZm91bmQgaW4gaGlzIG1vdXRoOgpXaG8sIHdoZW4gaGUgd2FzIHJldmlsZWQsIHJldmlsZWQgbm90IGFnYWluOyB3aGVuIGhlIHN1ZmZlcmVkLCBoZSB0aHJlYXRlbmVkIG5vdDsgYnV0IGNvbW1pdHRlZCBoaW1zZWxmIHRvIGhpbSB0aGF0IGp1ZGdldGggcmlnaHRlb3VzbHk6CldobyBoaXMgb3duIHNlbGYgYmFyZSBvdXIgc2lucyBpbiBoaXMgb3duIGJvZHkgb24gdGhlIHRyZWUsIHRoYXQgd2UsIGJlaW5nIGRlYWQgdG8gc2lucywgc2hvdWxkIGxpdmUgdW50byByaWdodGVvdXNuZXNzOiBieSB3aG9zZSBzdHJpcGVzIHllIHdlcmUgaGVhbGVkLgpGb3IgeWUgd2VyZSBhcyBzaGVlcCBnb2luZyBhc3RyYXk7IGJ1dCBhcmUgbm93IHJldHVybmVkIHVudG8gdGhlIFNoZXBoZXJkIGFuZCBCaXNob3Agb2YgeW91ciBzb3Vscy4KTGlrZXdpc2UsIHllIHdpdmVzLCBiZSBpbiBzdWJqZWN0aW9uIHRvIHlvdXIgb3duIGh1c2JhbmRzOyB0aGF0LCBpZiBhbnkgb2JleSBub3QgdGhlIHdvcmQsIHRoZXkgYWxzbyBtYXkgd2l0aG91dCB0aGUgd29yZCBiZSB3b24gYnkgdGhlIGNvbnZlcnNhdGlvbiBvZiB0aGUgd2l2ZXM7CldoaWxlIHRoZXkgYmVob2xkIHlvdXIgY2hhc3RlIGNvbnZlcnNhdGlvbiBjb3VwbGVkIHdpdGggZmVhci4KV2hvc2UgYWRvcm5pbmcgbGV0IGl0IG5vdCBiZSB0aGF0IG91dHdhcmQgYWRvcm5pbmcgb2YgcGxhaXRpbmcgdGhlIGhhaXIsIGFuZCBvZiB3ZWFyaW5nIG9mIGdvbGQsIG9yIG9mIHB1dHRpbmcgb24gb2YgYXBwYXJlbDsKQnV0IGxldCBpdCBiZSB0aGUgaGlkZGVuIG1hbiBvZiB0aGUgaGVhcnQsIGluIHRoYXQgd2hpY2ggaXMgbm90IGNvcnJ1cHRpYmxlLCBldmVuIHRoZSBvcm5hbWVudCBvZiBhIG1lZWsgYW5kIHF1aWV0IHNwaXJpdCwgd2hpY2ggaXMgaW4gdGhlIHNpZ2h0IG9mIEdvZCBvZiBncmVhdCBwcmljZS4KRm9yIGFmdGVyIHRoaXMgbWFubmVyIGluIHRoZSBvbGQgdGltZSB0aGUgaG9seSB3b21lbiBhbHNvLCB3aG8gdHJ1c3RlZCBpbiBHb2QsIGFkb3JuZWQgdGhlbXNlbHZlcywgYmVpbmcgaW4gc3ViamVjdGlvbiB1bnRvIHRoZWlyIG93biBodXNiYW5kczoKRXZlbiBhcyBTYXJhIG9iZXllZCBBYnJhaGFtLCBjYWxsaW5nIGhpbSBsb3JkOiB3aG9zZSBkYXVnaHRlcnMgeWUgYXJlLCBhcyBsb25nIGFzIHllIGRvIHdlbGwsIGFuZCBhcmUgbm90IGFmcmFpZCB3aXRoIGFueSBhbWF6ZW1lbnQuCkxpa2V3aXNlLCB5ZSBodXNiYW5kcywgZHdlbGwgd2l0aCB0aGVtIGFjY29yZGluZyB0byBrbm93bGVkZ2UsIGdpdmluZyBob25vdXIgdW50byB0aGUgd2lmZSwgYXMgdW50byB0aGUgd2Vha2VyIHZlc3NlbCwgYW5kIGFzIGJlaW5nIGhlaXJzIHRvZ2V0aGVyIG9mIHRoZSBncmFjZSBvZiBsaWZlOyB0aGF0IHlvdXIgcHJheWVycyBiZSBub3QgaGluZGVyZWQuCkZpbmFsbHksIGJlIHllIGFsbCBvZiBvbmUgbWluZCwgaGF2aW5nIGNvbXBhc3Npb24gb25lIG9mIGFub3RoZXIsIGxvdmUgYXMgYnJldGhyZW4sIGJlIHBpdGlmdWwsIGJlIGNvdXJ0ZW91czoKTm90IHJlbmRlcmluZyBldmlsIGZvciBldmlsLCBvciByYWlsaW5nIGZvciByYWlsaW5nOiBidXQgY29udHJhcml3aXNlIGJsZXNzaW5nOyBrbm93aW5nIHRoYXQgeWUgYXJlIHRoZXJldW50byBjYWxsZWQsIHRoYXQgeWUgc2hvdWxkIGluaGVyaXQgYSBibGVzc2luZy4KRm9yIGhlIHRoYXQgd2lsbCBsb3ZlIGxpZmUsIGFuZCBzZWUgZ29vZCBkYXlzLCBsZXQgaGltIHJlZnJhaW4gaGlzIHRvbmd1ZSBmcm9tIGV2aWwsIGFuZCBoaXMgbGlwcyB0aGF0IHRoZXkgc3BlYWsgbm8gZ3VpbGU6CkxldCBoaW0gZXNjaGV3IGV2aWwsIGFuZCBkbyBnb29kOyBsZXQgaGltIHNlZWsgcGVhY2UsIGFuZCBlbnN1ZSBpdC4KRm9yIHRoZSBleWVzIG9mIHRoZSBMb3JkIGFyZSBvdmVyIHRoZSByaWdodGVvdXMsIGFuZCBoaXMgZWFycyBhcmUgb3BlbiB1bnRvIHRoZWlyIHByYXllcnM6IGJ1dCB0aGUgZmFjZSBvZiB0aGUgTG9yZCBpcyBhZ2FpbnN0IHRoZW0gdGhhdCBkbyBldmlsLgpBbmQgd2hvIGlzIGhlIHRoYXQgd2lsbCBoYXJtIHlvdSwgaWYgeWUgYmUgZm9sbG93ZXJzIG9mIHRoYXQgd2hpY2ggaXMgZ29vZD8KQnV0IGFuZCBpZiB5ZSBzdWZmZXIgZm9yIHJpZ2h0ZW91c25lc3MnIHNha2UsIGhhcHB5IGFyZSB5ZTogYW5kIGJlIG5vdCBhZnJhaWQgb2YgdGhlaXIgdGVycm9yLCBuZWl0aGVyIGJlIHRyb3VibGVkOwpCdXQgc2FuY3RpZnkgdGhlIExvcmQgR29kIGluIHlvdXIgaGVhcnRzOiBhbmQgYmUgcmVhZHkgYWx3YXlzIHRvIGdpdmUgYW4gYW5zd2VyIHRvIGV2ZXJ5IG1hbiB0aGF0IGFza2V0aCB5b3UgYSByZWFzb24gb2YgdGhlIGhvcGUgdGhhdCBpcyBpbiB5b3Ugd2l0aCBtZWVrbmVzcyBhbmQgZmVhcjoKSGF2aW5nIGEgZ29vZCBjb25zY2llbmNlOyB0aGF0LCB3aGVyZWFzIHRoZXkgc3BlYWsgZXZpbCBvZiB5b3UsIGFzIG9mIGV2aWxkb2VycywgdGhleSBtYXkgYmUgYXNoYW1lZCB0aGF0IGZhbHNlbHkgYWNjdXNlIHlvdXIgZ29vZCBjb252ZXJzYXRpb24gaW4gQ2hyaXN0LgpGb3IgaXQgaXMgYmV0dGVyLCBpZiB0aGUgd2lsbCBvZiBHb2QgYmUgc28sIHRoYXQgeWUgc3VmZmVyIGZvciB3ZWxsIGRvaW5nLCB0aGFuIGZvciBldmlsIGRvaW5nLgpGb3IgQ2hyaXN0IGFsc28gaGF0aCBvbmNlIHN1ZmZlcmVkIGZvciBzaW5zLCB0aGUganVzdCBmb3IgdGhlIHVuanVzdCwgdGhhdCBoZSBtaWdodCBicmluZyB1cyB0byBHb2QsIGJlaW5nIHB1dCB0byBkZWF0aCBpbiB0aGUgZmxlc2gsIGJ1dCBxdWlja2VuZWQgYnkgdGhlIFNwaXJpdDoKQnkgd2hpY2ggYWxzbyBoZSB3ZW50IGFuZCBwcmVhY2hlZCB1bnRvIHRoZSBzcGlyaXRzIGluIHByaXNvbjsKV2hpY2ggc29tZXRpbWUgd2VyZSBkaXNvYmVkaWVudCwgd2hlbiBvbmNlIHRoZSBsb25nc3VmZmVyaW5nIG9mIEdvZCB3YWl0ZWQgaW4gdGhlIGRheXMgb2YgTm9haCwgd2hpbGUgdGhlIGFyayB3YXMgYSBwcmVwYXJpbmcsIHdoZXJlaW4gZmV3LCB0aGF0IGlzLCBlaWdodCBzb3VscyB3ZXJlIHNhdmVkIGJ5IHdhdGVyLgpUaGUgbGlrZSBmaWd1cmUgd2hlcmV1bnRvIGV2ZW4gYmFwdGlzbSBkb3RoIGFsc28gbm93IHNhdmUgdXMgKG5vdCB0aGUgcHV0dGluZyBhd2F5IG9mIHRoZSBmaWx0aCBvZiB0aGUgZmxlc2gsIGJ1dCB0aGUgYW5zd2VyIG9mIGEgZ29vZCBjb25zY2llbmNlIHRvd2FyZCBHb2QsKSBieSB0aGUgcmVzdXJyZWN0aW9uIG9mIEplc3VzIENocmlzdDoKV2hvIGlzIGdvbmUgaW50byBoZWF2ZW4sIGFuZCBpcyBvbiB0aGUgcmlnaHQgaGFuZCBvZiBHb2Q7IGFuZ2VscyBhbmQgYXV0aG9yaXRpZXMgYW5kIHBvd2VycyBiZWluZyBtYWRlIHN1YmplY3QgdW50byBoaW0uCkZvcmFzbXVjaCB0aGVuIGFzIENocmlzdCBoYXRoIHN1ZmZlcmVkIGZvciB1cyBpbiB0aGUgZmxlc2gsIGFybSB5b3Vyc2VsdmVzIGxpa2V3aXNlIHdpdGggdGhlIHNhbWUgbWluZDogZm9yIGhlIHRoYXQgaGF0aCBzdWZmZXJlZCBpbiB0aGUgZmxlc2ggaGF0aCBjZWFzZWQgZnJvbSBzaW47ClRoYXQgaGUgbm8gbG9uZ2VyIHNob3VsZCBsaXZlIHRoZSByZXN0IG9mIGhpcyB0aW1lIGluIHRoZSBmbGVzaCB0byB0aGUgbHVzdHMgb2YgbWVuLCBidXQgdG8gdGhlIHdpbGwgb2YgR29kLgpGb3IgdGhlIHRpbWUgcGFzdCBvZiBvdXIgbGlmZSBtYXkgc3VmZmljZSB1cyB0byBoYXZlIHdyb3VnaHQgdGhlIHdpbGwgb2YgdGhlIEdlbnRpbGVzLCB3aGVuIHdlIHdhbGtlZCBpbiBsYXNjaXZpb3VzbmVzcywgbHVzdHMsIGV4Y2VzcyBvZiB3aW5lLCByZXZlbGxpbmdzLCBiYW5xdWV0aW5ncywgYW5kIGFib21pbmFibGUgaWRvbGF0cmllczoKV2hlcmVpbiB0aGV5IHRoaW5rIGl0IHN0cmFuZ2UgdGhhdCB5ZSBydW4gbm90IHdpdGggdGhlbSB0byB0aGUgc2FtZSBleGNlc3Mgb2YgcmlvdCwgc3BlYWtpbmcgZXZpbCBvZiB5b3U6CldobyBzaGFsbCBnaXZlIGFjY291bnQgdG8gaGltIHRoYXQgaXMgcmVhZHkgdG8ganVkZ2UgdGhlIHF1aWNrIGFuZCB0aGUgZGVhZC4KRm9yIGZvciB0aGlzIGNhdXNlIHdhcyB0aGUgZ29zcGVsIHByZWFjaGVkIGFsc28gdG8gdGhlbSB0aGF0IGFyZSBkZWFkLCB0aGF0IHRoZXkgbWlnaHQgYmUganVkZ2VkIGFjY29yZGluZyB0byBtZW4gaW4gdGhlIGZsZXNoLCBidXQgbGl2ZSBhY2NvcmRpbmcgdG8gR29kIGluIHRoZSBzcGlyaXQuCkJ1dCB0aGUgZW5kIG9mIGFsbCB0aGluZ3MgaXMgYXQgaGFuZDogYmUgeWUgdGhlcmVmb3JlIHNvYmVyLCBhbmQgd2F0Y2ggdW50byBwcmF5ZXIuCkFuZCBhYm92ZSBhbGwgdGhpbmdzIGhhdmUgZmVydmVudCBjaGFyaXR5IGFtb25nIHlvdXJzZWx2ZXM6IGZvciBjaGFyaXR5IHNoYWxsIGNvdmVyIHRoZSBtdWx0aXR1ZGUgb2Ygc2lucy4KVXNlIGhvc3BpdGFsaXR5IG9uZSB0byBhbm90aGVyIHdpdGhvdXQgZ3J1ZGdpbmcuCkFzIGV2ZXJ5IG1hbiBoYXRoIHJlY2VpdmVkIHRoZSBnaWZ0LCBldmVuIHNvIG1pbmlzdGVyIHRoZSBzYW1lIG9uZSB0byBhbm90aGVyLCBhcyBnb29kIHN0ZXdhcmRzIG9mIHRoZSBtYW5pZm9sZCBncmFjZSBvZiBHb2QuCklmIGFueSBtYW4gc3BlYWssIGxldCBoaW0gc3BlYWsgYXMgdGhlIG9yYWNsZXMgb2YgR29kOyBpZiBhbnkgbWFuIG1pbmlzdGVyLCBsZXQgaGltIGRvIGl0IGFzIG9mIHRoZSBhYmlsaXR5IHdoaWNoIEdvZCBnaXZldGg6IHRoYXQgR29kIGluIGFsbCB0aGluZ3MgbWF5IGJlIGdsb3JpZmllZCB0aHJvdWdoIEplc3VzIENocmlzdCwgdG8gd2hvbSBiZSBwcmFpc2UgYW5kIGRvbWluaW9uIGZvciBldmVyIGFuZCBldmVyLiBBbWVuLgpCZWxvdmVkLCB0aGluayBpdCBub3Qgc3RyYW5nZSBjb25jZXJuaW5nIHRoZSBmaWVyeSB0cmlhbCB3aGljaCBpcyB0byB0cnkgeW91LCBhcyB0aG91Z2ggc29tZSBzdHJhbmdlIHRoaW5nIGhhcHBlbmVkIHVudG8geW91OgpCdXQgcmVqb2ljZSwgaW5hc211Y2ggYXMgeWUgYXJlIHBhcnRha2VycyBvZiBDaHJpc3QncyBzdWZmZXJpbmdzOyB0aGF0LCB3aGVuIGhpcyBnbG9yeSBzaGFsbCBiZSByZXZlYWxlZCwgeWUgbWF5IGJlIGdsYWQgYWxzbyB3aXRoIGV4Y2VlZGluZyBqb3kuCklmIHllIGJlIHJlcHJvYWNoZWQgZm9yIHRoZSBuYW1lIG9mIENocmlzdCwgaGFwcHkgYXJlIHllOyBmb3IgdGhlIHNwaXJpdCBvZiBnbG9yeSBhbmQgb2YgR29kIHJlc3RldGggdXBvbiB5b3U6IG9uIHRoZWlyIHBhcnQgaGUgaXMgZXZpbCBzcG9rZW4gb2YsIGJ1dCBvbiB5b3VyIHBhcnQgaGUgaXMgZ2xvcmlmaWVkLgpCdXQgbGV0IG5vbmUgb2YgeW91IHN1ZmZlciBhcyBhIG11cmRlcmVyLCBvciBhcyBhIHRoaWVmLCBvciBhcyBhbiBldmlsZG9lciwgb3IgYXMgYSBidXN5Ym9keSBpbiBvdGhlciBtZW4ncyBtYXR0ZXJzLgpZZXQgaWYgYW55IG1hbiBzdWZmZXIgYXMgYSBDaHJpc3RpYW4sIGxldCBoaW0gbm90IGJlIGFzaGFtZWQ7IGJ1dCBsZXQgaGltIGdsb3JpZnkgR29kIG9uIHRoaXMgYmVoYWxmLgpGb3IgdGhlIHRpbWUgaXMgY29tZSB0aGF0IGp1ZGdtZW50IG11c3QgYmVnaW4gYXQgdGhlIGhvdXNlIG9mIEdvZDogYW5kIGlmIGl0IGZpcnN0IGJlZ2luIGF0IHVzLCB3aGF0IHNoYWxsIHRoZSBlbmQgYmUgb2YgdGhlbSB0aGF0IG9iZXkgbm90IHRoZSBnb3NwZWwgb2YgR29kPwpBbmQgaWYgdGhlIHJpZ2h0ZW91cyBzY2FyY2VseSBiZSBzYXZlZCwgd2hlcmUgc2hhbGwgdGhlIHVuZ29kbHkgYW5kIHRoZSBzaW5uZXIgYXBwZWFyPwpXaGVyZWZvcmUgbGV0IHRoZW0gdGhhdCBzdWZmZXIgYWNjb3JkaW5nIHRvIHRoZSB3aWxsIG9mIEdvZCBjb21taXQgdGhlIGtlZXBpbmcgb2YgdGhlaXIgc291bHMgdG8gaGltIGluIHdlbGwgZG9pbmcsIGFzIHVudG8gYSBmYWl0aGZ1bCBDcmVhdG9yLgpUaGUgZWxkZXJzIHdoaWNoIGFyZSBhbW9uZyB5b3UgSSBleGhvcnQsIHdobyBhbSBhbHNvIGFuIGVsZGVyLCBhbmQgYSB3aXRuZXNzIG9mIHRoZSBzdWZmZXJpbmdzIG9mIENocmlzdCwgYW5kIGFsc28gYSBwYXJ0YWtlciBvZiB0aGUgZ2xvcnkgdGhhdCBzaGFsbCBiZSByZXZlYWxlZDoKRmVlZCB0aGUgZmxvY2sgb2YgR29kIHdoaWNoIGlzIGFtb25nIHlvdSwgdGFraW5nIHRoZSBvdmVyc2lnaHQgdGhlcmVvZiwgbm90IGJ5IGNvbnN0cmFpbnQsIGJ1dCB3aWxsaW5nbHk7IG5vdCBmb3IgZmlsdGh5IGx1Y3JlLCBidXQgb2YgYSByZWFkeSBtaW5kOwpOZWl0aGVyIGFzIGJlaW5nIGxvcmRzIG92ZXIgR29kJ3MgaGVyaXRhZ2UsIGJ1dCBiZWluZyBlbnNhbXBsZXMgdG8gdGhlIGZsb2NrLgpBbmQgd2hlbiB0aGUgY2hpZWYgU2hlcGhlcmQgc2hhbGwgYXBwZWFyLCB5ZSBzaGFsbCByZWNlaXZlIGEgY3Jvd24gb2YgZ2xvcnkgdGhhdCBmYWRldGggbm90IGF3YXkuCkxpa2V3aXNlLCB5ZSB5b3VuZ2VyLCBzdWJtaXQgeW91cnNlbHZlcyB1bnRvIHRoZSBlbGRlci4gWWVhLCBhbGwgb2YgeW91IGJlIHN1YmplY3Qgb25lIHRvIGFub3RoZXIsIGFuZCBiZSBjbG90aGVkIHdpdGggaHVtaWxpdHk6IGZvciBHb2QgcmVzaXN0ZXRoIHRoZSBwcm91ZCwgYW5kIGdpdmV0aCBncmFjZSB0byB0aGUgaHVtYmxlLgpIdW1ibGUgeW91cnNlbHZlcyB0aGVyZWZvcmUgdW5kZXIgdGhlIG1pZ2h0eSBoYW5kIG9mIEdvZCwgdGhhdCBoZSBtYXkgZXhhbHQgeW91IGluIGR1ZSB0aW1lOgpDYXN0aW5nIGFsbCB5b3VyIGNhcmUgdXBvbiBoaW07IGZvciBoZSBjYXJldGggZm9yIHlvdS4KQmUgc29iZXIsIGJlIHZpZ2lsYW50OyBiZWNhdXNlIHlvdXIgYWR2ZXJzYXJ5IHRoZSBkZXZpbCwgYXMgYSByb2FyaW5nIGxpb24sIHdhbGtldGggYWJvdXQsIHNlZWtpbmcgd2hvbSBoZSBtYXkgZGV2b3VyOgpXaG9tIHJlc2lzdCBzdGVkZmFzdCBpbiB0aGUgZmFpdGgsIGtub3dpbmcgdGhhdCB0aGUgc2FtZSBhZmZsaWN0aW9ucyBhcmUgYWNjb21wbGlzaGVkIGluIHlvdXIgYnJldGhyZW4gdGhhdCBhcmUgaW4gdGhlIHdvcmxkLgpCdXQgdGhlIEdvZCBvZiBhbGwgZ3JhY2UsIHdobyBoYXRoIGNhbGxlZCB1cyB1bnRvIGhpcyBldGVybmFsIGdsb3J5IGJ5IENocmlzdCBKZXN1cywgYWZ0ZXIgdGhhdCB5ZSBoYXZlIHN1ZmZlcmVkIGEgd2hpbGUsIG1ha2UgeW91IHBlcmZlY3QsIHN0YWJsaXNoLCBzdHJlbmd0aGVuLCBzZXR0bGUgeW91LgpUbyBoaW0gYmUgZ2xvcnkgYW5kIGRvbWluaW9uIGZvciBldmVyIGFuZCBldmVyLiBBbWVuLgpCeSBTaWx2YW51cywgYSBmYWl0aGZ1bCBicm90aGVyIHVudG8geW91LCBhcyBJIHN1cHBvc2UsIEkgaGF2ZSB3cml0dGVuIGJyaWVmbHksIGV4aG9ydGluZywgYW5kIHRlc3RpZnlpbmcgdGhhdCB0aGlzIGlzIHRoZSB0cnVlIGdyYWNlIG9mIEdvZCB3aGVyZWluIHllIHN0YW5kLgpUaGUgY2h1cmNoIHRoYXQgaXMgYXQgQmFieWxvbiwgZWxlY3RlZCB0b2dldGhlciB3aXRoIHlvdSwgc2FsdXRldGggeW91OyBhbmQgc28gZG90aCBNYXJjdXMgbXkgc29uLgpHcmVldCB5ZSBvbmUgYW5vdGhlciB3aXRoIGEga2lzcyBvZiBjaGFyaXR5LiBQZWFjZSBiZSB3aXRoIHlvdSBhbGwgdGhhdCBhcmUgaW4gQ2hyaXN0IEplc3VzLiBBbWVuLgpTaW1vbiBQZXRlciwgYSBzZXJ2YW50IGFuZCBhbiBhcG9zdGxlIG9mIEplc3VzIENocmlzdCwgdG8gdGhlbSB0aGF0IGhhdmUgb2J0YWluZWQgbGlrZSBwcmVjaW91cyBmYWl0aCB3aXRoIHVzIHRocm91Z2ggdGhlIHJpZ2h0ZW91c25lc3Mgb2YgR29kIGFuZCBvdXIgU2F2aW91ciBKZXN1cyBDaHJpc3Q6CkdyYWNlIGFuZCBwZWFjZSBiZSBtdWx0aXBsaWVkIHVudG8geW91IHRocm91Z2ggdGhlIGtub3dsZWRnZSBvZiBHb2QsIGFuZCBvZiBKZXN1cyBvdXIgTG9yZCwKQWNjb3JkaW5nIGFzIGhpcyBkaXZpbmUgcG93ZXIgaGF0aCBnaXZlbiB1bnRvIHVzIGFsbCB0aGluZ3MgdGhhdCBwZXJ0YWluIHVudG8gbGlmZSBhbmQgZ29kbGluZXNzLCB0aHJvdWdoIHRoZSBrbm93bGVkZ2Ugb2YgaGltIHRoYXQgaGF0aCBjYWxsZWQgdXMgdG8gZ2xvcnkgYW5kIHZpcnR1ZToKV2hlcmVieSBhcmUgZ2l2ZW4gdW50byB1cyBleGNlZWRpbmcgZ3JlYXQgYW5kIHByZWNpb3VzIHByb21pc2VzOiB0aGF0IGJ5IHRoZXNlIHllIG1pZ2h0IGJlIHBhcnRha2VycyBvZiB0aGUgZGl2aW5lIG5hdHVyZSwgaGF2aW5nIGVzY2FwZWQgdGhlIGNvcnJ1cHRpb24gdGhhdCBpcyBpbiB0aGUgd29ybGQgdGhyb3VnaCBsdXN0LgpBbmQgYmVzaWRlIHRoaXMsIGdpdmluZyBhbGwgZGlsaWdlbmNlLCBhZGQgdG8geW91ciBmYWl0aCB2aXJ0dWU7IGFuZCB0byB2aXJ0dWUga25vd2xlZGdlOwpBbmQgdG8ga25vd2xlZGdlIHRlbXBlcmFuY2U7IGFuZCB0byB0ZW1wZXJhbmNlIHBhdGllbmNlOyBhbmQgdG8gcGF0aWVuY2UgZ29kbGluZXNzOwpBbmQgdG8gZ29kbGluZXNzIGJyb3RoZXJseSBraW5kbmVzczsgYW5kIHRvIGJyb3RoZXJseSBraW5kbmVzcyBjaGFyaXR5LgpGb3IgaWYgdGhlc2UgdGhpbmdzIGJlIGluIHlvdSwgYW5kIGFib3VuZCwgdGhleSBtYWtlIHlvdSB0aGF0IHllIHNoYWxsIG5laXRoZXIgYmUgYmFycmVuIG5vciB1bmZydWl0ZnVsIGluIHRoZSBrbm93bGVkZ2Ugb2Ygb3VyIExvcmQgSmVzdXMgQ2hyaXN0LgpCdXQgaGUgdGhhdCBsYWNrZXRoIHRoZXNlIHRoaW5ncyBpcyBibGluZCwgYW5kIGNhbm5vdCBzZWUgYWZhciBvZmYsIGFuZCBoYXRoIGZvcmdvdHRlbiB0aGF0IGhlIHdhcyBwdXJnZWQgZnJvbSBoaXMgb2xkIHNpbnMuCldoZXJlZm9yZSB0aGUgcmF0aGVyLCBicmV0aHJlbiwgZ2l2ZSBkaWxpZ2VuY2UgdG8gbWFrZSB5b3VyIGNhbGxpbmcgYW5kIGVsZWN0aW9uIHN1cmU6IGZvciBpZiB5ZSBkbyB0aGVzZSB0aGluZ3MsIHllIHNoYWxsIG5ldmVyIGZhbGw6CkZvciBzbyBhbiBlbnRyYW5jZSBzaGFsbCBiZSBtaW5pc3RlcmVkIHVudG8geW91IGFidW5kYW50bHkgaW50byB0aGUgZXZlcmxhc3Rpbmcga2luZ2RvbSBvZiBvdXIgTG9yZCBhbmQgU2F2aW91ciBKZXN1cyBDaHJpc3QuCldoZXJlZm9yZSBJIHdpbGwgbm90IGJlIG5lZ2xpZ2VudCB0byBwdXQgeW91IGFsd2F5cyBpbiByZW1lbWJyYW5jZSBvZiB0aGVzZSB0aGluZ3MsIHRob3VnaCB5ZSBrbm93IHRoZW0sIGFuZCBiZSBlc3RhYmxpc2hlZCBpbiB0aGUgcHJlc2VudCB0cnV0aC4KWWVhLCBJIHRoaW5rIGl0IG1lZXQsIGFzIGxvbmcgYXMgSSBhbSBpbiB0aGlzIHRhYmVybmFjbGUsIHRvIHN0aXIgeW91IHVwIGJ5IHB1dHRpbmcgeW91IGluIHJlbWVtYnJhbmNlOwpLbm93aW5nIHRoYXQgc2hvcnRseSBJIG11c3QgcHV0IG9mZiB0aGlzIG15IHRhYmVybmFjbGUsIGV2ZW4gYXMgb3VyIExvcmQgSmVzdXMgQ2hyaXN0IGhhdGggc2hld2VkIG1lLgpNb3Jlb3ZlciBJIHdpbGwgZW5kZWF2b3VyIHRoYXQgeWUgbWF5IGJlIGFibGUgYWZ0ZXIgbXkgZGVjZWFzZSB0byBoYXZlIHRoZXNlIHRoaW5ncyBhbHdheXMgaW4gcmVtZW1icmFuY2UuCkZvciB3ZSBoYXZlIG5vdCBmb2xsb3dlZCBjdW5uaW5nbHkgZGV2aXNlZCBmYWJsZXMsIHdoZW4gd2UgbWFkZSBrbm93biB1bnRvIHlvdSB0aGUgcG93ZXIgYW5kIGNvbWluZyBvZiBvdXIgTG9yZCBKZXN1cyBDaHJpc3QsIGJ1dCB3ZXJlIGV5ZXdpdG5lc3NlcyBvZiBoaXMgbWFqZXN0eS4KRm9yIGhlIHJlY2VpdmVkIGZyb20gR29kIHRoZSBGYXRoZXIgaG9ub3VyIGFuZCBnbG9yeSwgd2hlbiB0aGVyZSBjYW1lIHN1Y2ggYSB2b2ljZSB0byBoaW0gZnJvbSB0aGUgZXhjZWxsZW50IGdsb3J5LCBUaGlzIGlzIG15IGJlbG92ZWQgU29uLCBpbiB3aG9tIEkgYW0gd2VsbCBwbGVhc2VkLgpBbmQgdGhpcyB2b2ljZSB3aGljaCBjYW1lIGZyb20gaGVhdmVuIHdlIGhlYXJkLCB3aGVuIHdlIHdlcmUgd2l0aCBoaW0gaW4gdGhlIGhvbHkgbW91bnQuCldlIGhhdmUgYWxzbyBhIG1vcmUgc3VyZSB3b3JkIG9mIHByb3BoZWN5OyB3aGVyZXVudG8geWUgZG8gd2VsbCB0aGF0IHllIHRha2UgaGVlZCwgYXMgdW50byBhIGxpZ2h0IHRoYXQgc2hpbmV0aCBpbiBhIGRhcmsgcGxhY2UsIHVudGlsIHRoZSBkYXkgZGF3biwgYW5kIHRoZSBkYXkgc3RhciBhcmlzZSBpbiB5b3VyIGhlYXJ0czoKS25vd2luZyB0aGlzIGZpcnN0LCB0aGF0IG5vIHByb3BoZWN5IG9mIHRoZSBzY3JpcHR1cmUgaXMgb2YgYW55IHByaXZhdGUgaW50ZXJwcmV0YXRpb24uCkZvciB0aGUgcHJvcGhlY3kgY2FtZSBub3QgaW4gb2xkIHRpbWUgYnkgdGhlIHdpbGwgb2YgbWFuOiBidXQgaG9seSBtZW4gb2YgR29kIHNwYWtlIGFzIHRoZXkgd2VyZSBtb3ZlZCBieSB0aGUgSG9seSBHaG9zdC4KQnV0IHRoZXJlIHdlcmUgZmFsc2UgcHJvcGhldHMgYWxzbyBhbW9uZyB0aGUgcGVvcGxlLCBldmVuIGFzIHRoZXJlIHNoYWxsIGJlIGZhbHNlIHRlYWNoZXJzIGFtb25nIHlvdSwgd2hvIHByaXZpbHkgc2hhbGwgYnJpbmcgaW4gZGFtbmFibGUgaGVyZXNpZXMsIGV2ZW4gZGVueWluZyB0aGUgTG9yZCB0aGF0IGJvdWdodCB0aGVtLCBhbmQgYnJpbmcgdXBvbiB0aGVtc2VsdmVzIHN3aWZ0IGRlc3RydWN0aW9uLgpBbmQgbWFueSBzaGFsbCBmb2xsb3cgdGhlaXIgcGVybmljaW91cyB3YXlzOyBieSByZWFzb24gb2Ygd2hvbSB0aGUgd2F5IG9mIHRydXRoIHNoYWxsIGJlIGV2aWwgc3Bva2VuIG9mLgpBbmQgdGhyb3VnaCBjb3ZldG91c25lc3Mgc2hhbGwgdGhleSB3aXRoIGZlaWduZWQgd29yZHMgbWFrZSBtZXJjaGFuZGlzZSBvZiB5b3U6IHdob3NlIGp1ZGdtZW50IG5vdyBvZiBhIGxvbmcgdGltZSBsaW5nZXJldGggbm90LCBhbmQgdGhlaXIgZGFtbmF0aW9uIHNsdW1iZXJldGggbm90LgpGb3IgaWYgR29kIHNwYXJlZCBub3QgdGhlIGFuZ2VscyB0aGF0IHNpbm5lZCwgYnV0IGNhc3QgdGhlbSBkb3duIHRvIGhlbGwsIGFuZCBkZWxpdmVyZWQgdGhlbSBpbnRvIGNoYWlucyBvZiBkYXJrbmVzcywgdG8gYmUgcmVzZXJ2ZWQgdW50byBqdWRnbWVudDsKQW5kIHNwYXJlZCBub3QgdGhlIG9sZCB3b3JsZCwgYnV0IHNhdmVkIE5vYWggdGhlIGVpZ2h0aCBwZXJzb24sIGEgcHJlYWNoZXIgb2YgcmlnaHRlb3VzbmVzcywgYnJpbmdpbmcgaW4gdGhlIGZsb29kIHVwb24gdGhlIHdvcmxkIG9mIHRoZSB1bmdvZGx5OwpBbmQgdHVybmluZyB0aGUgY2l0aWVzIG9mIFNvZG9tIGFuZCBHb21vcnJoYSBpbnRvIGFzaGVzIGNvbmRlbW5lZCB0aGVtIHdpdGggYW4gb3ZlcnRocm93LCBtYWtpbmcgdGhlbSBhbiBlbnNhbXBsZSB1bnRvIHRob3NlIHRoYXQgYWZ0ZXIgc2hvdWxkIGxpdmUgdW5nb2RseTsKQW5kIGRlbGl2ZXJlZCBqdXN0IExvdCwgdmV4ZWQgd2l0aCB0aGUgZmlsdGh5IGNvbnZlcnNhdGlvbiBvZiB0aGUgd2lja2VkOgooRm9yIHRoYXQgcmlnaHRlb3VzIG1hbiBkd2VsbGluZyBhbW9uZyB0aGVtLCBpbiBzZWVpbmcgYW5kIGhlYXJpbmcsIHZleGVkIGhpcyByaWdodGVvdXMgc291bCBmcm9tIGRheSB0byBkYXkgd2l0aCB0aGVpciB1bmxhd2Z1bCBkZWVkczspClRoZSBMb3JkIGtub3dldGggaG93IHRvIGRlbGl2ZXIgdGhlIGdvZGx5IG91dCBvZiB0ZW1wdGF0aW9ucywgYW5kIHRvIHJlc2VydmUgdGhlIHVuanVzdCB1bnRvIHRoZSBkYXkgb2YganVkZ21lbnQgdG8gYmUgcHVuaXNoZWQ6CkJ1dCBjaGllZmx5IHRoZW0gdGhhdCB3YWxrIGFmdGVyIHRoZSBmbGVzaCBpbiB0aGUgbHVzdCBvZiB1bmNsZWFubmVzcywgYW5kIGRlc3Bpc2UgZ292ZXJubWVudC4gUHJlc3VtcHR1b3VzIGFyZSB0aGV5LCBzZWxmd2lsbGVkLCB0aGV5IGFyZSBub3QgYWZyYWlkIHRvIHNwZWFrIGV2aWwgb2YgZGlnbml0aWVzLgpXaGVyZWFzIGFuZ2Vscywgd2hpY2ggYXJlIGdyZWF0ZXIgaW4gcG93ZXIgYW5kIG1pZ2h0LCBicmluZyBub3QgcmFpbGluZyBhY2N1c2F0aW9uIGFnYWluc3QgdGhlbSBiZWZvcmUgdGhlIExvcmQuCkJ1dCB0aGVzZSwgYXMgbmF0dXJhbCBicnV0ZSBiZWFzdHMsIG1hZGUgdG8gYmUgdGFrZW4gYW5kIGRlc3Ryb3llZCwgc3BlYWsgZXZpbCBvZiB0aGUgdGhpbmdzIHRoYXQgdGhleSB1bmRlcnN0YW5kIG5vdDsgYW5kIHNoYWxsIHV0dGVybHkgcGVyaXNoIGluIHRoZWlyIG93biBjb3JydXB0aW9uOwpBbmQgc2hhbGwgcmVjZWl2ZSB0aGUgcmV3YXJkIG9mIHVucmlnaHRlb3VzbmVzcywgYXMgdGhleSB0aGF0IGNvdW50IGl0IHBsZWFzdXJlIHRvIHJpb3QgaW4gdGhlIGRheSB0aW1lLiBTcG90cyB0aGV5IGFyZSBhbmQgYmxlbWlzaGVzLCBzcG9ydGluZyB0aGVtc2VsdmVzIHdpdGggdGhlaXIgb3duIGRlY2VpdmluZ3Mgd2hpbGUgdGhleSBmZWFzdCB3aXRoIHlvdTsKSGF2aW5nIGV5ZXMgZnVsbCBvZiBhZHVsdGVyeSwgYW5kIHRoYXQgY2Fubm90IGNlYXNlIGZyb20gc2luOyBiZWd1aWxpbmcgdW5zdGFibGUgc291bHM6IGFuIGhlYXJ0IHRoZXkgaGF2ZSBleGVyY2lzZWQgd2l0aCBjb3ZldG91cyBwcmFjdGljZXM7IGN1cnNlZCBjaGlsZHJlbjoKV2hpY2ggaGF2ZSBmb3JzYWtlbiB0aGUgcmlnaHQgd2F5LCBhbmQgYXJlIGdvbmUgYXN0cmF5LCBmb2xsb3dpbmcgdGhlIHdheSBvZiBCYWxhYW0gdGhlIHNvbiBvZiBCb3Nvciwgd2hvIGxvdmVkIHRoZSB3YWdlcyBvZiB1bnJpZ2h0ZW91c25lc3M7CkJ1dCB3YXMgcmVidWtlZCBmb3IgaGlzIGluaXF1aXR5OiB0aGUgZHVtYiBhc3Mgc3BlYWtpbmcgd2l0aCBtYW4ncyB2b2ljZSBmb3JiYWQgdGhlIG1hZG5lc3Mgb2YgdGhlIHByb3BoZXQuClRoZXNlIGFyZSB3ZWxscyB3aXRob3V0IHdhdGVyLCBjbG91ZHMgdGhhdCBhcmUgY2FycmllZCB3aXRoIGEgdGVtcGVzdDsgdG8gd2hvbSB0aGUgbWlzdCBvZiBkYXJrbmVzcyBpcyByZXNlcnZlZCBmb3IgZXZlci4KRm9yIHdoZW4gdGhleSBzcGVhayBncmVhdCBzd2VsbGluZyB3b3JkcyBvZiB2YW5pdHksIHRoZXkgYWxsdXJlIHRocm91Z2ggdGhlIGx1c3RzIG9mIHRoZSBmbGVzaCwgdGhyb3VnaCBtdWNoIHdhbnRvbm5lc3MsIHRob3NlIHRoYXQgd2VyZSBjbGVhbiBlc2NhcGVkIGZyb20gdGhlbSB3aG8gbGl2ZSBpbiBlcnJvci4KV2hpbGUgdGhleSBwcm9taXNlIHRoZW0gbGliZXJ0eSwgdGhleSB0aGVtc2VsdmVzIGFyZSB0aGUgc2VydmFudHMgb2YgY29ycnVwdGlvbjogZm9yIG9mIHdob20gYSBtYW4gaXMgb3ZlcmNvbWUsIG9mIHRoZSBzYW1lIGlzIGhlIGJyb3VnaHQgaW4gYm9uZGFnZS4KRm9yIGlmIGFmdGVyIHRoZXkgaGF2ZSBlc2NhcGVkIHRoZSBwb2xsdXRpb25zIG9mIHRoZSB3b3JsZCB0aHJvdWdoIHRoZSBrbm93bGVkZ2Ugb2YgdGhlIExvcmQgYW5kIFNhdmlvdXIgSmVzdXMgQ2hyaXN0LCB0aGV5IGFyZSBhZ2FpbiBlbnRhbmdsZWQgdGhlcmVpbiwgYW5kIG92ZXJjb21lLCB0aGUgbGF0dGVyIGVuZCBpcyB3b3JzZSB3aXRoIHRoZW0gdGhhbiB0aGUgYmVnaW5uaW5nLgpGb3IgaXQgaGFkIGJlZW4gYmV0dGVyIGZvciB0aGVtIG5vdCB0byBoYXZlIGtub3duIHRoZSB3YXkgb2YgcmlnaHRlb3VzbmVzcywgdGhhbiwgYWZ0ZXIgdGhleSBoYXZlIGtub3duIGl0LCB0byB0dXJuIGZyb20gdGhlIGhvbHkgY29tbWFuZG1lbnQgZGVsaXZlcmVkIHVudG8gdGhlbS4KQnV0IGl0IGlzIGhhcHBlbmVkIHVudG8gdGhlbSBhY2NvcmRpbmcgdG8gdGhlIHRydWUgcHJvdmVyYiwgVGhlIGRvZyBpcyB0dXJuZWQgdG8gaGlzIG93biB2b21pdCBhZ2FpbjsgYW5kIHRoZSBzb3cgdGhhdCB3YXMgd2FzaGVkIHRvIGhlciB3YWxsb3dpbmcgaW4gdGhlIG1pcmUuClRoaXMgc2Vjb25kIGVwaXN0bGUsIGJlbG92ZWQsIEkgbm93IHdyaXRlIHVudG8geW91OyBpbiBib3RoIHdoaWNoIEkgc3RpciB1cCB5b3VyIHB1cmUgbWluZHMgYnkgd2F5IG9mIHJlbWVtYnJhbmNlOgpUaGF0IHllIG1heSBiZSBtaW5kZnVsIG9mIHRoZSB3b3JkcyB3aGljaCB3ZXJlIHNwb2tlbiBiZWZvcmUgYnkgdGhlIGhvbHkgcHJvcGhldHMsIGFuZCBvZiB0aGUgY29tbWFuZG1lbnQgb2YgdXMgdGhlIGFwb3N0bGVzIG9mIHRoZSBMb3JkIGFuZCBTYXZpb3VyOgpLbm93aW5nIHRoaXMgZmlyc3QsIHRoYXQgdGhlcmUgc2hhbGwgY29tZSBpbiB0aGUgbGFzdCBkYXlzIHNjb2ZmZXJzLCB3YWxraW5nIGFmdGVyIHRoZWlyIG93biBsdXN0cywKQW5kIHNheWluZywgV2hlcmUgaXMgdGhlIHByb21pc2Ugb2YgaGlzIGNvbWluZz8gZm9yIHNpbmNlIHRoZSBmYXRoZXJzIGZlbGwgYXNsZWVwLCBhbGwgdGhpbmdzIGNvbnRpbnVlIGFzIHRoZXkgd2VyZSBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGNyZWF0aW9uLgpGb3IgdGhpcyB0aGV5IHdpbGxpbmdseSBhcmUgaWdub3JhbnQgb2YsIHRoYXQgYnkgdGhlIHdvcmQgb2YgR29kIHRoZSBoZWF2ZW5zIHdlcmUgb2Ygb2xkLCBhbmQgdGhlIGVhcnRoIHN0YW5kaW5nIG91dCBvZiB0aGUgd2F0ZXIgYW5kIGluIHRoZSB3YXRlcjoKV2hlcmVieSB0aGUgd29ybGQgdGhhdCB0aGVuIHdhcywgYmVpbmcgb3ZlcmZsb3dlZCB3aXRoIHdhdGVyLCBwZXJpc2hlZDoKQnV0IHRoZSBoZWF2ZW5zIGFuZCB0aGUgZWFydGgsIHdoaWNoIGFyZSBub3csIGJ5IHRoZSBzYW1lIHdvcmQgYXJlIGtlcHQgaW4gc3RvcmUsIHJlc2VydmVkIHVudG8gZmlyZSBhZ2FpbnN0IHRoZSBkYXkgb2YganVkZ21lbnQgYW5kIHBlcmRpdGlvbiBvZiB1bmdvZGx5IG1lbi4KQnV0LCBiZWxvdmVkLCBiZSBub3QgaWdub3JhbnQgb2YgdGhpcyBvbmUgdGhpbmcsIHRoYXQgb25lIGRheSBpcyB3aXRoIHRoZSBMb3JkIGFzIGEgdGhvdXNhbmQgeWVhcnMsIGFuZCBhIHRob3VzYW5kIHllYXJzIGFzIG9uZSBkYXkuClRoZSBMb3JkIGlzIG5vdCBzbGFjayBjb25jZXJuaW5nIGhpcyBwcm9taXNlLCBhcyBzb21lIG1lbiBjb3VudCBzbGFja25lc3M7IGJ1dCBpcyBsb25nc3VmZmVyaW5nIHRvIHVzLXdhcmQsIG5vdCB3aWxsaW5nIHRoYXQgYW55IHNob3VsZCBwZXJpc2gsIGJ1dCB0aGF0IGFsbCBzaG91bGQgY29tZSB0byByZXBlbnRhbmNlLgpCdXQgdGhlIGRheSBvZiB0aGUgTG9yZCB3aWxsIGNvbWUgYXMgYSB0aGllZiBpbiB0aGUgbmlnaHQ7IGluIHRoZSB3aGljaCB0aGUgaGVhdmVucyBzaGFsbCBwYXNzIGF3YXkgd2l0aCBhIGdyZWF0IG5vaXNlLCBhbmQgdGhlIGVsZW1lbnRzIHNoYWxsIG1lbHQgd2l0aCBmZXJ2ZW50IGhlYXQsIHRoZSBlYXJ0aCBhbHNvIGFuZCB0aGUgd29ya3MgdGhhdCBhcmUgdGhlcmVpbiBzaGFsbCBiZSBidXJuZWQgdXAuClNlZWluZyB0aGVuIHRoYXQgYWxsIHRoZXNlIHRoaW5ncyBzaGFsbCBiZSBkaXNzb2x2ZWQsIHdoYXQgbWFubmVyIG9mIHBlcnNvbnMgb3VnaHQgeWUgdG8gYmUgaW4gYWxsIGhvbHkgY29udmVyc2F0aW9uIGFuZCBnb2RsaW5lc3MsCkxvb2tpbmcgZm9yIGFuZCBoYXN0aW5nIHVudG8gdGhlIGNvbWluZyBvZiB0aGUgZGF5IG9mIEdvZCwgd2hlcmVpbiB0aGUgaGVhdmVucyBiZWluZyBvbiBmaXJlIHNoYWxsIGJlIGRpc3NvbHZlZCwgYW5kIHRoZSBlbGVtZW50cyBzaGFsbCBtZWx0IHdpdGggZmVydmVudCBoZWF0PwpOZXZlcnRoZWxlc3Mgd2UsIGFjY29yZGluZyB0byBoaXMgcHJvbWlzZSwgbG9vayBmb3IgbmV3IGhlYXZlbnMgYW5kIGEgbmV3IGVhcnRoLCB3aGVyZWluIGR3ZWxsZXRoIHJpZ2h0ZW91c25lc3MuCldoZXJlZm9yZSwgYmVsb3ZlZCwgc2VlaW5nIHRoYXQgeWUgbG9vayBmb3Igc3VjaCB0aGluZ3MsIGJlIGRpbGlnZW50IHRoYXQgeWUgbWF5IGJlIGZvdW5kIG9mIGhpbSBpbiBwZWFjZSwgd2l0aG91dCBzcG90LCBhbmQgYmxhbWVsZXNzLgpBbmQgYWNjb3VudCB0aGF0IHRoZSBsb25nc3VmZmVyaW5nIG9mIG91ciBMb3JkIGlzIHNhbHZhdGlvbjsgZXZlbiBhcyBvdXIgYmVsb3ZlZCBicm90aGVyIFBhdWwgYWxzbyBhY2NvcmRpbmcgdG8gdGhlIHdpc2RvbSBnaXZlbiB1bnRvIGhpbSBoYXRoIHdyaXR0ZW4gdW50byB5b3U7CkFzIGFsc28gaW4gYWxsIGhpcyBlcGlzdGxlcywgc3BlYWtpbmcgaW4gdGhlbSBvZiB0aGVzZSB0aGluZ3M7IGluIHdoaWNoIGFyZSBzb21lIHRoaW5ncyBoYXJkIHRvIGJlIHVuZGVyc3Rvb2QsIHdoaWNoIHRoZXkgdGhhdCBhcmUgdW5sZWFybmVkIGFuZCB1bnN0YWJsZSB3cmVzdCwgYXMgdGhleSBkbyBhbHNvIHRoZSBvdGhlciBzY3JpcHR1cmVzLCB1bnRvIHRoZWlyIG93biBkZXN0cnVjdGlvbi4KWWUgdGhlcmVmb3JlLCBiZWxvdmVkLCBzZWVpbmcgeWUga25vdyB0aGVzZSB0aGluZ3MgYmVmb3JlLCBiZXdhcmUgbGVzdCB5ZSBhbHNvLCBiZWluZyBsZWQgYXdheSB3aXRoIHRoZSBlcnJvciBvZiB0aGUgd2lja2VkLCBmYWxsIGZyb20geW91ciBvd24gc3RlZGZhc3RuZXNzLgpCdXQgZ3JvdyBpbiBncmFjZSwgYW5kIGluIHRoZSBrbm93bGVkZ2Ugb2Ygb3VyIExvcmQgYW5kIFNhdmlvdXIgSmVzdXMgQ2hyaXN0LiBUbyBoaW0gYmUgZ2xvcnkgYm90aCBub3cgYW5kIGZvciBldmVyLiBBbWVuLgpUaGF0IHdoaWNoIHdhcyBmcm9tIHRoZSBiZWdpbm5pbmcsIHdoaWNoIHdlIGhhdmUgaGVhcmQsIHdoaWNoIHdlIGhhdmUgc2VlbiB3aXRoIG91ciBleWVzLCB3aGljaCB3ZSBoYXZlIGxvb2tlZCB1cG9uLCBhbmQgb3VyIGhhbmRzIGhhdmUgaGFuZGxlZCwgb2YgdGhlIFdvcmQgb2YgbGlmZTsKKEZvciB0aGUgbGlmZSB3YXMgbWFuaWZlc3RlZCwgYW5kIHdlIGhhdmUgc2VlbiBpdCwgYW5kIGJlYXIgd2l0bmVzcywgYW5kIHNoZXcgdW50byB5b3UgdGhhdCBldGVybmFsIGxpZmUsIHdoaWNoIHdhcyB3aXRoIHRoZSBGYXRoZXIsIGFuZCB3YXMgbWFuaWZlc3RlZCB1bnRvIHVzOykKVGhhdCB3aGljaCB3ZSBoYXZlIHNlZW4gYW5kIGhlYXJkIGRlY2xhcmUgd2UgdW50byB5b3UsIHRoYXQgeWUgYWxzbyBtYXkgaGF2ZSBmZWxsb3dzaGlwIHdpdGggdXM6IGFuZCB0cnVseSBvdXIgZmVsbG93c2hpcCBpcyB3aXRoIHRoZSBGYXRoZXIsIGFuZCB3aXRoIGhpcyBTb24gSmVzdXMgQ2hyaXN0LgpBbmQgdGhlc2UgdGhpbmdzIHdyaXRlIHdlIHVudG8geW91LCB0aGF0IHlvdXIgam95IG1heSBiZSBmdWxsLgpUaGlzIHRoZW4gaXMgdGhlIG1lc3NhZ2Ugd2hpY2ggd2UgaGF2ZSBoZWFyZCBvZiBoaW0sIGFuZCBkZWNsYXJlIHVudG8geW91LCB0aGF0IEdvZCBpcyBsaWdodCwgYW5kIGluIGhpbSBpcyBubyBkYXJrbmVzcyBhdCBhbGwuCklmIHdlIHNheSB0aGF0IHdlIGhhdmUgZmVsbG93c2hpcCB3aXRoIGhpbSwgYW5kIHdhbGsgaW4gZGFya25lc3MsIHdlIGxpZSwgYW5kIGRvIG5vdCB0aGUgdHJ1dGg6CkJ1dCBpZiB3ZSB3YWxrIGluIHRoZSBsaWdodCwgYXMgaGUgaXMgaW4gdGhlIGxpZ2h0LCB3ZSBoYXZlIGZlbGxvd3NoaXAgb25lIHdpdGggYW5vdGhlciwgYW5kIHRoZSBibG9vZCBvZiBKZXN1cyBDaHJpc3QgaGlzIFNvbiBjbGVhbnNldGggdXMgZnJvbSBhbGwgc2luLgpJZiB3ZSBzYXkgdGhhdCB3ZSBoYXZlIG5vIHNpbiwgd2UgZGVjZWl2ZSBvdXJzZWx2ZXMsIGFuZCB0aGUgdHJ1dGggaXMgbm90IGluIHVzLgpJZiB3ZSBjb25mZXNzIG91ciBzaW5zLCBoZSBpcyBmYWl0aGZ1bCBhbmQganVzdCB0byBmb3JnaXZlIHVzIG91ciBzaW5zLCBhbmQgdG8gY2xlYW5zZSB1cyBmcm9tIGFsbCB1bnJpZ2h0ZW91c25lc3MuCklmIHdlIHNheSB0aGF0IHdlIGhhdmUgbm90IHNpbm5lZCwgd2UgbWFrZSBoaW0gYSBsaWFyLCBhbmQgaGlzIHdvcmQgaXMgbm90IGluIHVzLgpNeSBsaXR0bGUgY2hpbGRyZW4sIHRoZXNlIHRoaW5ncyB3cml0ZSBJIHVudG8geW91LCB0aGF0IHllIHNpbiBub3QuIEFuZCBpZiBhbnkgbWFuIHNpbiwgd2UgaGF2ZSBhbiBhZHZvY2F0ZSB3aXRoIHRoZSBGYXRoZXIsIEplc3VzIENocmlzdCB0aGUgcmlnaHRlb3VzOgpBbmQgaGUgaXMgdGhlIHByb3BpdGlhdGlvbiBmb3Igb3VyIHNpbnM6IGFuZCBub3QgZm9yIG91cidzIG9ubHksIGJ1dCBhbHNvIGZvciB0aGUgc2lucyBvZiB0aGUgd2hvbGUgd29ybGQuCkFuZCBoZXJlYnkgd2UgZG8ga25vdyB0aGF0IHdlIGtub3cgaGltLCBpZiB3ZSBrZWVwIGhpcyBjb21tYW5kbWVudHMuCkhlIHRoYXQgc2FpdGgsIEkga25vdyBoaW0sIGFuZCBrZWVwZXRoIG5vdCBoaXMgY29tbWFuZG1lbnRzLCBpcyBhIGxpYXIsIGFuZCB0aGUgdHJ1dGggaXMgbm90IGluIGhpbS4KQnV0IHdob3NvIGtlZXBldGggaGlzIHdvcmQsIGluIGhpbSB2ZXJpbHkgaXMgdGhlIGxvdmUgb2YgR29kIHBlcmZlY3RlZDogaGVyZWJ5IGtub3cgd2UgdGhhdCB3ZSBhcmUgaW4gaGltLgpIZSB0aGF0IHNhaXRoIGhlIGFiaWRldGggaW4gaGltIG91Z2h0IGhpbXNlbGYgYWxzbyBzbyB0byB3YWxrLCBldmVuIGFzIGhlIHdhbGtlZC4KQnJldGhyZW4sIEkgd3JpdGUgbm8gbmV3IGNvbW1hbmRtZW50IHVudG8geW91LCBidXQgYW4gb2xkIGNvbW1hbmRtZW50IHdoaWNoIHllIGhhZCBmcm9tIHRoZSBiZWdpbm5pbmcuIFRoZSBvbGQgY29tbWFuZG1lbnQgaXMgdGhlIHdvcmQgd2hpY2ggeWUgaGF2ZSBoZWFyZCBmcm9tIHRoZSBiZWdpbm5pbmcuCkFnYWluLCBhIG5ldyBjb21tYW5kbWVudCBJIHdyaXRlIHVudG8geW91LCB3aGljaCB0aGluZyBpcyB0cnVlIGluIGhpbSBhbmQgaW4geW91OiBiZWNhdXNlIHRoZSBkYXJrbmVzcyBpcyBwYXN0LCBhbmQgdGhlIHRydWUgbGlnaHQgbm93IHNoaW5ldGguCkhlIHRoYXQgc2FpdGggaGUgaXMgaW4gdGhlIGxpZ2h0LCBhbmQgaGF0ZXRoIGhpcyBicm90aGVyLCBpcyBpbiBkYXJrbmVzcyBldmVuIHVudGlsIG5vdy4KSGUgdGhhdCBsb3ZldGggaGlzIGJyb3RoZXIgYWJpZGV0aCBpbiB0aGUgbGlnaHQsIGFuZCB0aGVyZSBpcyBub25lIG9jY2FzaW9uIG9mIHN0dW1ibGluZyBpbiBoaW0uCkJ1dCBoZSB0aGF0IGhhdGV0aCBoaXMgYnJvdGhlciBpcyBpbiBkYXJrbmVzcywgYW5kIHdhbGtldGggaW4gZGFya25lc3MsIGFuZCBrbm93ZXRoIG5vdCB3aGl0aGVyIGhlIGdvZXRoLCBiZWNhdXNlIHRoYXQgZGFya25lc3MgaGF0aCBibGluZGVkIGhpcyBleWVzLgpJIHdyaXRlIHVudG8geW91LCBsaXR0bGUgY2hpbGRyZW4sIGJlY2F1c2UgeW91ciBzaW5zIGFyZSBmb3JnaXZlbiB5b3UgZm9yIGhpcyBuYW1lJ3Mgc2FrZS4KSSB3cml0ZSB1bnRvIHlvdSwgZmF0aGVycywgYmVjYXVzZSB5ZSBoYXZlIGtub3duIGhpbSB0aGF0IGlzIGZyb20gdGhlIGJlZ2lubmluZy4gSSB3cml0ZSB1bnRvIHlvdSwgeW91bmcgbWVuLCBiZWNhdXNlIHllIGhhdmUgb3ZlcmNvbWUgdGhlIHdpY2tlZCBvbmUuIEkgd3JpdGUgdW50byB5b3UsIGxpdHRsZSBjaGlsZHJlbiwgYmVjYXVzZSB5ZSBoYXZlIGtub3duIHRoZSBGYXRoZXIuCkkgaGF2ZSB3cml0dGVuIHVudG8geW91LCBmYXRoZXJzLCBiZWNhdXNlIHllIGhhdmUga25vd24gaGltIHRoYXQgaXMgZnJvbSB0aGUgYmVnaW5uaW5nLiBJIGhhdmUgd3JpdHRlbiB1bnRvIHlvdSwgeW91bmcgbWVuLCBiZWNhdXNlIHllIGFyZSBzdHJvbmcsIGFuZCB0aGUgd29yZCBvZiBHb2QgYWJpZGV0aCBpbiB5b3UsIGFuZCB5ZSBoYXZlIG92ZXJjb21lIHRoZSB3aWNrZWQgb25lLgpMb3ZlIG5vdCB0aGUgd29ybGQsIG5laXRoZXIgdGhlIHRoaW5ncyB0aGF0IGFyZSBpbiB0aGUgd29ybGQuIElmIGFueSBtYW4gbG92ZSB0aGUgd29ybGQsIHRoZSBsb3ZlIG9mIHRoZSBGYXRoZXIgaXMgbm90IGluIGhpbS4KRm9yIGFsbCB0aGF0IGlzIGluIHRoZSB3b3JsZCwgdGhlIGx1c3Qgb2YgdGhlIGZsZXNoLCBhbmQgdGhlIGx1c3Qgb2YgdGhlIGV5ZXMsIGFuZCB0aGUgcHJpZGUgb2YgbGlmZSwgaXMgbm90IG9mIHRoZSBGYXRoZXIsIGJ1dCBpcyBvZiB0aGUgd29ybGQuCkFuZCB0aGUgd29ybGQgcGFzc2V0aCBhd2F5LCBhbmQgdGhlIGx1c3QgdGhlcmVvZjogYnV0IGhlIHRoYXQgZG9ldGggdGhlIHdpbGwgb2YgR29kIGFiaWRldGggZm9yIGV2ZXIuCkxpdHRsZSBjaGlsZHJlbiwgaXQgaXMgdGhlIGxhc3QgdGltZTogYW5kIGFzIHllIGhhdmUgaGVhcmQgdGhhdCBhbnRpY2hyaXN0IHNoYWxsIGNvbWUsIGV2ZW4gbm93IGFyZSB0aGVyZSBtYW55IGFudGljaHJpc3RzOyB3aGVyZWJ5IHdlIGtub3cgdGhhdCBpdCBpcyB0aGUgbGFzdCB0aW1lLgpUaGV5IHdlbnQgb3V0IGZyb20gdXMsIGJ1dCB0aGV5IHdlcmUgbm90IG9mIHVzOyBmb3IgaWYgdGhleSBoYWQgYmVlbiBvZiB1cywgdGhleSB3b3VsZCBubyBkb3VidCBoYXZlIGNvbnRpbnVlZCB3aXRoIHVzOiBidXQgdGhleSB3ZW50IG91dCwgdGhhdCB0aGV5IG1pZ2h0IGJlIG1hZGUgbWFuaWZlc3QgdGhhdCB0aGV5IHdlcmUgbm90IGFsbCBvZiB1cy4KQnV0IHllIGhhdmUgYW4gdW5jdGlvbiBmcm9tIHRoZSBIb2x5IE9uZSwgYW5kIHllIGtub3cgYWxsIHRoaW5ncy4KSSBoYXZlIG5vdCB3cml0dGVuIHVudG8geW91IGJlY2F1c2UgeWUga25vdyBub3QgdGhlIHRydXRoLCBidXQgYmVjYXVzZSB5ZSBrbm93IGl0LCBhbmQgdGhhdCBubyBsaWUgaXMgb2YgdGhlIHRydXRoLgpXaG8gaXMgYSBsaWFyIGJ1dCBoZSB0aGF0IGRlbmlldGggdGhhdCBKZXN1cyBpcyB0aGUgQ2hyaXN0PyBIZSBpcyBhbnRpY2hyaXN0LCB0aGF0IGRlbmlldGggdGhlIEZhdGhlciBhbmQgdGhlIFNvbi4KV2hvc29ldmVyIGRlbmlldGggdGhlIFNvbiwgdGhlIHNhbWUgaGF0aCBub3QgdGhlIEZhdGhlcjogaGUgdGhhdCBhY2tub3dsZWRnZXRoIHRoZSBTb24gaGF0aCB0aGUgRmF0aGVyIGFsc28uCkxldCB0aGF0IHRoZXJlZm9yZSBhYmlkZSBpbiB5b3UsIHdoaWNoIHllIGhhdmUgaGVhcmQgZnJvbSB0aGUgYmVnaW5uaW5nLiBJZiB0aGF0IHdoaWNoIHllIGhhdmUgaGVhcmQgZnJvbSB0aGUgYmVnaW5uaW5nIHNoYWxsIHJlbWFpbiBpbiB5b3UsIHllIGFsc28gc2hhbGwgY29udGludWUgaW4gdGhlIFNvbiwgYW5kIGluIHRoZSBGYXRoZXIuCkFuZCB0aGlzIGlzIHRoZSBwcm9taXNlIHRoYXQgaGUgaGF0aCBwcm9taXNlZCB1cywgZXZlbiBldGVybmFsIGxpZmUuClRoZXNlIHRoaW5ncyBoYXZlIEkgd3JpdHRlbiB1bnRvIHlvdSBjb25jZXJuaW5nIHRoZW0gdGhhdCBzZWR1Y2UgeW91LgpCdXQgdGhlIGFub2ludGluZyB3aGljaCB5ZSBoYXZlIHJlY2VpdmVkIG9mIGhpbSBhYmlkZXRoIGluIHlvdSwgYW5kIHllIG5lZWQgbm90IHRoYXQgYW55IG1hbiB0ZWFjaCB5b3U6IGJ1dCBhcyB0aGUgc2FtZSBhbm9pbnRpbmcgdGVhY2hldGggeW91IG9mIGFsbCB0aGluZ3MsIGFuZCBpcyB0cnV0aCwgYW5kIGlzIG5vIGxpZSwgYW5kIGV2ZW4gYXMgaXQgaGF0aCB0YXVnaHQgeW91LCB5ZSBzaGFsbCBhYmlkZSBpbiBoaW0uCkFuZCBub3csIGxpdHRsZSBjaGlsZHJlbiwgYWJpZGUgaW4gaGltOyB0aGF0LCB3aGVuIGhlIHNoYWxsIGFwcGVhciwgd2UgbWF5IGhhdmUgY29uZmlkZW5jZSwgYW5kIG5vdCBiZSBhc2hhbWVkIGJlZm9yZSBoaW0gYXQgaGlzIGNvbWluZy4KSWYgeWUga25vdyB0aGF0IGhlIGlzIHJpZ2h0ZW91cywgeWUga25vdyB0aGF0IGV2ZXJ5IG9uZSB0aGF0IGRvZXRoIHJpZ2h0ZW91c25lc3MgaXMgYm9ybiBvZiBoaW0uCkJlaG9sZCwgd2hhdCBtYW5uZXIgb2YgbG92ZSB0aGUgRmF0aGVyIGhhdGggYmVzdG93ZWQgdXBvbiB1cywgdGhhdCB3ZSBzaG91bGQgYmUgY2FsbGVkIHRoZSBzb25zIG9mIEdvZDogdGhlcmVmb3JlIHRoZSB3b3JsZCBrbm93ZXRoIHVzIG5vdCwgYmVjYXVzZSBpdCBrbmV3IGhpbSBub3QuCkJlbG92ZWQsIG5vdyBhcmUgd2UgdGhlIHNvbnMgb2YgR29kLCBhbmQgaXQgZG90aCBub3QgeWV0IGFwcGVhciB3aGF0IHdlIHNoYWxsIGJlOiBidXQgd2Uga25vdyB0aGF0LCB3aGVuIGhlIHNoYWxsIGFwcGVhciwgd2Ugc2hhbGwgYmUgbGlrZSBoaW07IGZvciB3ZSBzaGFsbCBzZWUgaGltIGFzIGhlIGlzLgpBbmQgZXZlcnkgbWFuIHRoYXQgaGF0aCB0aGlzIGhvcGUgaW4gaGltIHB1cmlmaWV0aCBoaW1zZWxmLCBldmVuIGFzIGhlIGlzIHB1cmUuCldob3NvZXZlciBjb21taXR0ZXRoIHNpbiB0cmFuc2dyZXNzZXRoIGFsc28gdGhlIGxhdzogZm9yIHNpbiBpcyB0aGUgdHJhbnNncmVzc2lvbiBvZiB0aGUgbGF3LgpBbmQgeWUga25vdyB0aGF0IGhlIHdhcyBtYW5pZmVzdGVkIHRvIHRha2UgYXdheSBvdXIgc2luczsgYW5kIGluIGhpbSBpcyBubyBzaW4uCldob3NvZXZlciBhYmlkZXRoIGluIGhpbSBzaW5uZXRoIG5vdDogd2hvc29ldmVyIHNpbm5ldGggaGF0aCBub3Qgc2VlbiBoaW0sIG5laXRoZXIga25vd24gaGltLgpMaXR0bGUgY2hpbGRyZW4sIGxldCBubyBtYW4gZGVjZWl2ZSB5b3U6IGhlIHRoYXQgZG9ldGggcmlnaHRlb3VzbmVzcyBpcyByaWdodGVvdXMsIGV2ZW4gYXMgaGUgaXMgcmlnaHRlb3VzLgpIZSB0aGF0IGNvbW1pdHRldGggc2luIGlzIG9mIHRoZSBkZXZpbDsgZm9yIHRoZSBkZXZpbCBzaW5uZXRoIGZyb20gdGhlIGJlZ2lubmluZy4gRm9yIHRoaXMgcHVycG9zZSB0aGUgU29uIG9mIEdvZCB3YXMgbWFuaWZlc3RlZCwgdGhhdCBoZSBtaWdodCBkZXN0cm95IHRoZSB3b3JrcyBvZiB0aGUgZGV2aWwuCldob3NvZXZlciBpcyBib3JuIG9mIEdvZCBkb3RoIG5vdCBjb21taXQgc2luOyBmb3IgaGlzIHNlZWQgcmVtYWluZXRoIGluIGhpbTogYW5kIGhlIGNhbm5vdCBzaW4sIGJlY2F1c2UgaGUgaXMgYm9ybiBvZiBHb2QuCkluIHRoaXMgdGhlIGNoaWxkcmVuIG9mIEdvZCBhcmUgbWFuaWZlc3QsIGFuZCB0aGUgY2hpbGRyZW4gb2YgdGhlIGRldmlsOiB3aG9zb2V2ZXIgZG9ldGggbm90IHJpZ2h0ZW91c25lc3MgaXMgbm90IG9mIEdvZCwgbmVpdGhlciBoZSB0aGF0IGxvdmV0aCBub3QgaGlzIGJyb3RoZXIuCkZvciB0aGlzIGlzIHRoZSBtZXNzYWdlIHRoYXQgeWUgaGVhcmQgZnJvbSB0aGUgYmVnaW5uaW5nLCB0aGF0IHdlIHNob3VsZCBsb3ZlIG9uZSBhbm90aGVyLgpOb3QgYXMgQ2Fpbiwgd2hvIHdhcyBvZiB0aGF0IHdpY2tlZCBvbmUsIGFuZCBzbGV3IGhpcyBicm90aGVyLiBBbmQgd2hlcmVmb3JlIHNsZXcgaGUgaGltPyBCZWNhdXNlIGhpcyBvd24gd29ya3Mgd2VyZSBldmlsLCBhbmQgaGlzIGJyb3RoZXIncyByaWdodGVvdXMuCk1hcnZlbCBub3QsIG15IGJyZXRocmVuLCBpZiB0aGUgd29ybGQgaGF0ZSB5b3UuCldlIGtub3cgdGhhdCB3ZSBoYXZlIHBhc3NlZCBmcm9tIGRlYXRoIHVudG8gbGlmZSwgYmVjYXVzZSB3ZSBsb3ZlIHRoZSBicmV0aHJlbi4gSGUgdGhhdCBsb3ZldGggbm90IGhpcyBicm90aGVyIGFiaWRldGggaW4gZGVhdGguCldob3NvZXZlciBoYXRldGggaGlzIGJyb3RoZXIgaXMgYSBtdXJkZXJlcjogYW5kIHllIGtub3cgdGhhdCBubyBtdXJkZXJlciBoYXRoIGV0ZXJuYWwgbGlmZSBhYmlkaW5nIGluIGhpbS4KSGVyZWJ5IHBlcmNlaXZlIHdlIHRoZSBsb3ZlIG9mIEdvZCwgYmVjYXVzZSBoZSBsYWlkIGRvd24gaGlzIGxpZmUgZm9yIHVzOiBhbmQgd2Ugb3VnaHQgdG8gbGF5IGRvd24gb3VyIGxpdmVzIGZvciB0aGUgYnJldGhyZW4uCkJ1dCB3aG9zbyBoYXRoIHRoaXMgd29ybGQncyBnb29kLCBhbmQgc2VldGggaGlzIGJyb3RoZXIgaGF2ZSBuZWVkLCBhbmQgc2h1dHRldGggdXAgaGlzIGJvd2VscyBvZiBjb21wYXNzaW9uIGZyb20gaGltLCBob3cgZHdlbGxldGggdGhlIGxvdmUgb2YgR29kIGluIGhpbT8KTXkgbGl0dGxlIGNoaWxkcmVuLCBsZXQgdXMgbm90IGxvdmUgaW4gd29yZCwgbmVpdGhlciBpbiB0b25ndWU7IGJ1dCBpbiBkZWVkIGFuZCBpbiB0cnV0aC4KQW5kIGhlcmVieSB3ZSBrbm93IHRoYXQgd2UgYXJlIG9mIHRoZSB0cnV0aCwgYW5kIHNoYWxsIGFzc3VyZSBvdXIgaGVhcnRzIGJlZm9yZSBoaW0uCkZvciBpZiBvdXIgaGVhcnQgY29uZGVtbiB1cywgR29kIGlzIGdyZWF0ZXIgdGhhbiBvdXIgaGVhcnQsIGFuZCBrbm93ZXRoIGFsbCB0aGluZ3MuCkJlbG92ZWQsIGlmIG91ciBoZWFydCBjb25kZW1uIHVzIG5vdCwgdGhlbiBoYXZlIHdlIGNvbmZpZGVuY2UgdG93YXJkIEdvZC4KQW5kIHdoYXRzb2V2ZXIgd2UgYXNrLCB3ZSByZWNlaXZlIG9mIGhpbSwgYmVjYXVzZSB3ZSBrZWVwIGhpcyBjb21tYW5kbWVudHMsIGFuZCBkbyB0aG9zZSB0aGluZ3MgdGhhdCBhcmUgcGxlYXNpbmcgaW4gaGlzIHNpZ2h0LgpBbmQgdGhpcyBpcyBoaXMgY29tbWFuZG1lbnQsIFRoYXQgd2Ugc2hvdWxkIGJlbGlldmUgb24gdGhlIG5hbWUgb2YgaGlzIFNvbiBKZXN1cyBDaHJpc3QsIGFuZCBsb3ZlIG9uZSBhbm90aGVyLCBhcyBoZSBnYXZlIHVzIGNvbW1hbmRtZW50LgpBbmQgaGUgdGhhdCBrZWVwZXRoIGhpcyBjb21tYW5kbWVudHMgZHdlbGxldGggaW4gaGltLCBhbmQgaGUgaW4gaGltLiBBbmQgaGVyZWJ5IHdlIGtub3cgdGhhdCBoZSBhYmlkZXRoIGluIHVzLCBieSB0aGUgU3Bpcml0IHdoaWNoIGhlIGhhdGggZ2l2ZW4gdXMuCkJlbG92ZWQsIGJlbGlldmUgbm90IGV2ZXJ5IHNwaXJpdCwgYnV0IHRyeSB0aGUgc3Bpcml0cyB3aGV0aGVyIHRoZXkgYXJlIG9mIEdvZDogYmVjYXVzZSBtYW55IGZhbHNlIHByb3BoZXRzIGFyZSBnb25lIG91dCBpbnRvIHRoZSB3b3JsZC4KSGVyZWJ5IGtub3cgeWUgdGhlIFNwaXJpdCBvZiBHb2Q6IEV2ZXJ5IHNwaXJpdCB0aGF0IGNvbmZlc3NldGggdGhhdCBKZXN1cyBDaHJpc3QgaXMgY29tZSBpbiB0aGUgZmxlc2ggaXMgb2YgR29kOgpBbmQgZXZlcnkgc3Bpcml0IHRoYXQgY29uZmVzc2V0aCBub3QgdGhhdCBKZXN1cyBDaHJpc3QgaXMgY29tZSBpbiB0aGUgZmxlc2ggaXMgbm90IG9mIEdvZDogYW5kIHRoaXMgaXMgdGhhdCBzcGlyaXQgb2YgYW50aWNocmlzdCwgd2hlcmVvZiB5ZSBoYXZlIGhlYXJkIHRoYXQgaXQgc2hvdWxkIGNvbWU7IGFuZCBldmVuIG5vdyBhbHJlYWR5IGlzIGl0IGluIHRoZSB3b3JsZC4KWWUgYXJlIG9mIEdvZCwgbGl0dGxlIGNoaWxkcmVuLCBhbmQgaGF2ZSBvdmVyY29tZSB0aGVtOiBiZWNhdXNlIGdyZWF0ZXIgaXMgaGUgdGhhdCBpcyBpbiB5b3UsIHRoYW4gaGUgdGhhdCBpcyBpbiB0aGUgd29ybGQuClRoZXkgYXJlIG9mIHRoZSB3b3JsZDogdGhlcmVmb3JlIHNwZWFrIHRoZXkgb2YgdGhlIHdvcmxkLCBhbmQgdGhlIHdvcmxkIGhlYXJldGggdGhlbS4KV2UgYXJlIG9mIEdvZDogaGUgdGhhdCBrbm93ZXRoIEdvZCBoZWFyZXRoIHVzOyBoZSB0aGF0IGlzIG5vdCBvZiBHb2QgaGVhcmV0aCBub3QgdXMuIEhlcmVieSBrbm93IHdlIHRoZSBzcGlyaXQgb2YgdHJ1dGgsIGFuZCB0aGUgc3Bpcml0IG9mIGVycm9yLgpCZWxvdmVkLCBsZXQgdXMgbG92ZSBvbmUgYW5vdGhlcjogZm9yIGxvdmUgaXMgb2YgR29kOyBhbmQgZXZlcnkgb25lIHRoYXQgbG92ZXRoIGlzIGJvcm4gb2YgR29kLCBhbmQga25vd2V0aCBHb2QuCkhlIHRoYXQgbG92ZXRoIG5vdCBrbm93ZXRoIG5vdCBHb2Q7IGZvciBHb2QgaXMgbG92ZS4KSW4gdGhpcyB3YXMgbWFuaWZlc3RlZCB0aGUgbG92ZSBvZiBHb2QgdG93YXJkIHVzLCBiZWNhdXNlIHRoYXQgR29kIHNlbnQgaGlzIG9ubHkgYmVnb3R0ZW4gU29uIGludG8gdGhlIHdvcmxkLCB0aGF0IHdlIG1pZ2h0IGxpdmUgdGhyb3VnaCBoaW0uCkhlcmVpbiBpcyBsb3ZlLCBub3QgdGhhdCB3ZSBsb3ZlZCBHb2QsIGJ1dCB0aGF0IGhlIGxvdmVkIHVzLCBhbmQgc2VudCBoaXMgU29uIHRvIGJlIHRoZSBwcm9waXRpYXRpb24gZm9yIG91ciBzaW5zLgpCZWxvdmVkLCBpZiBHb2Qgc28gbG92ZWQgdXMsIHdlIG91Z2h0IGFsc28gdG8gbG92ZSBvbmUgYW5vdGhlci4KTm8gbWFuIGhhdGggc2VlbiBHb2QgYXQgYW55IHRpbWUuIElmIHdlIGxvdmUgb25lIGFub3RoZXIsIEdvZCBkd2VsbGV0aCBpbiB1cywgYW5kIGhpcyBsb3ZlIGlzIHBlcmZlY3RlZCBpbiB1cy4KSGVyZWJ5IGtub3cgd2UgdGhhdCB3ZSBkd2VsbCBpbiBoaW0sIGFuZCBoZSBpbiB1cywgYmVjYXVzZSBoZSBoYXRoIGdpdmVuIHVzIG9mIGhpcyBTcGlyaXQuCkFuZCB3ZSBoYXZlIHNlZW4gYW5kIGRvIHRlc3RpZnkgdGhhdCB0aGUgRmF0aGVyIHNlbnQgdGhlIFNvbiB0byBiZSB0aGUgU2F2aW91ciBvZiB0aGUgd29ybGQuCldob3NvZXZlciBzaGFsbCBjb25mZXNzIHRoYXQgSmVzdXMgaXMgdGhlIFNvbiBvZiBHb2QsIEdvZCBkd2VsbGV0aCBpbiBoaW0sIGFuZCBoZSBpbiBHb2QuCkFuZCB3ZSBoYXZlIGtub3duIGFuZCBiZWxpZXZlZCB0aGUgbG92ZSB0aGF0IEdvZCBoYXRoIHRvIHVzLiBHb2QgaXMgbG92ZTsgYW5kIGhlIHRoYXQgZHdlbGxldGggaW4gbG92ZSBkd2VsbGV0aCBpbiBHb2QsIGFuZCBHb2QgaW4gaGltLgpIZXJlaW4gaXMgb3VyIGxvdmUgbWFkZSBwZXJmZWN0LCB0aGF0IHdlIG1heSBoYXZlIGJvbGRuZXNzIGluIHRoZSBkYXkgb2YganVkZ21lbnQ6IGJlY2F1c2UgYXMgaGUgaXMsIHNvIGFyZSB3ZSBpbiB0aGlzIHdvcmxkLgpUaGVyZSBpcyBubyBmZWFyIGluIGxvdmU7IGJ1dCBwZXJmZWN0IGxvdmUgY2FzdGV0aCBvdXQgZmVhcjogYmVjYXVzZSBmZWFyIGhhdGggdG9ybWVudC4gSGUgdGhhdCBmZWFyZXRoIGlzIG5vdCBtYWRlIHBlcmZlY3QgaW4gbG92ZS4KV2UgbG92ZSBoaW0sIGJlY2F1c2UgaGUgZmlyc3QgbG92ZWQgdXMuCklmIGEgbWFuIHNheSwgSSBsb3ZlIEdvZCwgYW5kIGhhdGV0aCBoaXMgYnJvdGhlciwgaGUgaXMgYSBsaWFyOiBmb3IgaGUgdGhhdCBsb3ZldGggbm90IGhpcyBicm90aGVyIHdob20gaGUgaGF0aCBzZWVuLCBob3cgY2FuIGhlIGxvdmUgR29kIHdob20gaGUgaGF0aCBub3Qgc2Vlbj8KQW5kIHRoaXMgY29tbWFuZG1lbnQgaGF2ZSB3ZSBmcm9tIGhpbSwgVGhhdCBoZSB3aG8gbG92ZXRoIEdvZCBsb3ZlIGhpcyBicm90aGVyIGFsc28uCldob3NvZXZlciBiZWxpZXZldGggdGhhdCBKZXN1cyBpcyB0aGUgQ2hyaXN0IGlzIGJvcm4gb2YgR29kOiBhbmQgZXZlcnkgb25lIHRoYXQgbG92ZXRoIGhpbSB0aGF0IGJlZ2F0IGxvdmV0aCBoaW0gYWxzbyB0aGF0IGlzIGJlZ290dGVuIG9mIGhpbS4KQnkgdGhpcyB3ZSBrbm93IHRoYXQgd2UgbG92ZSB0aGUgY2hpbGRyZW4gb2YgR29kLCB3aGVuIHdlIGxvdmUgR29kLCBhbmQga2VlcCBoaXMgY29tbWFuZG1lbnRzLgpGb3IgdGhpcyBpcyB0aGUgbG92ZSBvZiBHb2QsIHRoYXQgd2Uga2VlcCBoaXMgY29tbWFuZG1lbnRzOiBhbmQgaGlzIGNvbW1hbmRtZW50cyBhcmUgbm90IGdyaWV2b3VzLgpGb3Igd2hhdHNvZXZlciBpcyBib3JuIG9mIEdvZCBvdmVyY29tZXRoIHRoZSB3b3JsZDogYW5kIHRoaXMgaXMgdGhlIHZpY3RvcnkgdGhhdCBvdmVyY29tZXRoIHRoZSB3b3JsZCwgZXZlbiBvdXIgZmFpdGguCldobyBpcyBoZSB0aGF0IG92ZXJjb21ldGggdGhlIHdvcmxkLCBidXQgaGUgdGhhdCBiZWxpZXZldGggdGhhdCBKZXN1cyBpcyB0aGUgU29uIG9mIEdvZD8KVGhpcyBpcyBoZSB0aGF0IGNhbWUgYnkgd2F0ZXIgYW5kIGJsb29kLCBldmVuIEplc3VzIENocmlzdDsgbm90IGJ5IHdhdGVyIG9ubHksIGJ1dCBieSB3YXRlciBhbmQgYmxvb2QuIEFuZCBpdCBpcyB0aGUgU3Bpcml0IHRoYXQgYmVhcmV0aCB3aXRuZXNzLCBiZWNhdXNlIHRoZSBTcGlyaXQgaXMgdHJ1dGguCkZvciB0aGVyZSBhcmUgdGhyZWUgdGhhdCBiZWFyIHJlY29yZCBpbiBoZWF2ZW4sIHRoZSBGYXRoZXIsIHRoZSBXb3JkLCBhbmQgdGhlIEhvbHkgR2hvc3Q6IGFuZCB0aGVzZSB0aHJlZSBhcmUgb25lLgpBbmQgdGhlcmUgYXJlIHRocmVlIHRoYXQgYmVhciB3aXRuZXNzIGluIGVhcnRoLCB0aGUgU3Bpcml0LCBhbmQgdGhlIHdhdGVyLCBhbmQgdGhlIGJsb29kOiBhbmQgdGhlc2UgdGhyZWUgYWdyZWUgaW4gb25lLgpJZiB3ZSByZWNlaXZlIHRoZSB3aXRuZXNzIG9mIG1lbiwgdGhlIHdpdG5lc3Mgb2YgR29kIGlzIGdyZWF0ZXI6IGZvciB0aGlzIGlzIHRoZSB3aXRuZXNzIG9mIEdvZCB3aGljaCBoZSBoYXRoIHRlc3RpZmllZCBvZiBoaXMgU29uLgpIZSB0aGF0IGJlbGlldmV0aCBvbiB0aGUgU29uIG9mIEdvZCBoYXRoIHRoZSB3aXRuZXNzIGluIGhpbXNlbGY6IGhlIHRoYXQgYmVsaWV2ZXRoIG5vdCBHb2QgaGF0aCBtYWRlIGhpbSBhIGxpYXI7IGJlY2F1c2UgaGUgYmVsaWV2ZXRoIG5vdCB0aGUgcmVjb3JkIHRoYXQgR29kIGdhdmUgb2YgaGlzIFNvbi4KQW5kIHRoaXMgaXMgdGhlIHJlY29yZCwgdGhhdCBHb2QgaGF0aCBnaXZlbiB0byB1cyBldGVybmFsIGxpZmUsIGFuZCB0aGlzIGxpZmUgaXMgaW4gaGlzIFNvbi4KSGUgdGhhdCBoYXRoIHRoZSBTb24gaGF0aCBsaWZlOyBhbmQgaGUgdGhhdCBoYXRoIG5vdCB0aGUgU29uIG9mIEdvZCBoYXRoIG5vdCBsaWZlLgpUaGVzZSB0aGluZ3MgaGF2ZSBJIHdyaXR0ZW4gdW50byB5b3UgdGhhdCBiZWxpZXZlIG9uIHRoZSBuYW1lIG9mIHRoZSBTb24gb2YgR29kOyB0aGF0IHllIG1heSBrbm93IHRoYXQgeWUgaGF2ZSBldGVybmFsIGxpZmUsIGFuZCB0aGF0IHllIG1heSBiZWxpZXZlIG9uIHRoZSBuYW1lIG9mIHRoZSBTb24gb2YgR29kLgpBbmQgdGhpcyBpcyB0aGUgY29uZmlkZW5jZSB0aGF0IHdlIGhhdmUgaW4gaGltLCB0aGF0LCBpZiB3ZSBhc2sgYW55IHRoaW5nIGFjY29yZGluZyB0byBoaXMgd2lsbCwgaGUgaGVhcmV0aCB1czoKQW5kIGlmIHdlIGtub3cgdGhhdCBoZSBoZWFyIHVzLCB3aGF0c29ldmVyIHdlIGFzaywgd2Uga25vdyB0aGF0IHdlIGhhdmUgdGhlIHBldGl0aW9ucyB0aGF0IHdlIGRlc2lyZWQgb2YgaGltLgpJZiBhbnkgbWFuIHNlZSBoaXMgYnJvdGhlciBzaW4gYSBzaW4gd2hpY2ggaXMgbm90IHVudG8gZGVhdGgsIGhlIHNoYWxsIGFzaywgYW5kIGhlIHNoYWxsIGdpdmUgaGltIGxpZmUgZm9yIHRoZW0gdGhhdCBzaW4gbm90IHVudG8gZGVhdGguIFRoZXJlIGlzIGEgc2luIHVudG8gZGVhdGg6IEkgZG8gbm90IHNheSB0aGF0IGhlIHNoYWxsIHByYXkgZm9yIGl0LgpBbGwgdW5yaWdodGVvdXNuZXNzIGlzIHNpbjogYW5kIHRoZXJlIGlzIGEgc2luIG5vdCB1bnRvIGRlYXRoLgpXZSBrbm93IHRoYXQgd2hvc29ldmVyIGlzIGJvcm4gb2YgR29kIHNpbm5ldGggbm90OyBidXQgaGUgdGhhdCBpcyBiZWdvdHRlbiBvZiBHb2Qga2VlcGV0aCBoaW1zZWxmLCBhbmQgdGhhdCB3aWNrZWQgb25lIHRvdWNoZXRoIGhpbSBub3QuCkFuZCB3ZSBrbm93IHRoYXQgd2UgYXJlIG9mIEdvZCwgYW5kIHRoZSB3aG9sZSB3b3JsZCBsaWV0aCBpbiB3aWNrZWRuZXNzLgpBbmQgd2Uga25vdyB0aGF0IHRoZSBTb24gb2YgR29kIGlzIGNvbWUsIGFuZCBoYXRoIGdpdmVuIHVzIGFuIHVuZGVyc3RhbmRpbmcsIHRoYXQgd2UgbWF5IGtub3cgaGltIHRoYXQgaXMgdHJ1ZSwgYW5kIHdlIGFyZSBpbiBoaW0gdGhhdCBpcyB0cnVlLCBldmVuIGluIGhpcyBTb24gSmVzdXMgQ2hyaXN0LiBUaGlzIGlzIHRoZSB0cnVlIEdvZCwgYW5kIGV0ZXJuYWwgbGlmZS4KTGl0dGxlIGNoaWxkcmVuLCBrZWVwIHlvdXJzZWx2ZXMgZnJvbSBpZG9scy4gQW1lbi4KVGhlIGVsZGVyIHVudG8gdGhlIGVsZWN0IGxhZHkgYW5kIGhlciBjaGlsZHJlbiwgd2hvbSBJIGxvdmUgaW4gdGhlIHRydXRoOyBhbmQgbm90IEkgb25seSwgYnV0IGFsc28gYWxsIHRoZXkgdGhhdCBoYXZlIGtub3duIHRoZSB0cnV0aDsKRm9yIHRoZSB0cnV0aCdzIHNha2UsIHdoaWNoIGR3ZWxsZXRoIGluIHVzLCBhbmQgc2hhbGwgYmUgd2l0aCB1cyBmb3IgZXZlci4KR3JhY2UgYmUgd2l0aCB5b3UsIG1lcmN5LCBhbmQgcGVhY2UsIGZyb20gR29kIHRoZSBGYXRoZXIsIGFuZCBmcm9tIHRoZSBMb3JkIEplc3VzIENocmlzdCwgdGhlIFNvbiBvZiB0aGUgRmF0aGVyLCBpbiB0cnV0aCBhbmQgbG92ZS4KSSByZWpvaWNlZCBncmVhdGx5IHRoYXQgSSBmb3VuZCBvZiB0aHkgY2hpbGRyZW4gd2Fsa2luZyBpbiB0cnV0aCwgYXMgd2UgaGF2ZSByZWNlaXZlZCBhIGNvbW1hbmRtZW50IGZyb20gdGhlIEZhdGhlci4KQW5kIG5vdyBJIGJlc2VlY2ggdGhlZSwgbGFkeSwgbm90IGFzIHRob3VnaCBJIHdyb3RlIGEgbmV3IGNvbW1hbmRtZW50IHVudG8gdGhlZSwgYnV0IHRoYXQgd2hpY2ggd2UgaGFkIGZyb20gdGhlIGJlZ2lubmluZywgdGhhdCB3ZSBsb3ZlIG9uZSBhbm90aGVyLgpBbmQgdGhpcyBpcyBsb3ZlLCB0aGF0IHdlIHdhbGsgYWZ0ZXIgaGlzIGNvbW1hbmRtZW50cy4gVGhpcyBpcyB0aGUgY29tbWFuZG1lbnQsIFRoYXQsIGFzIHllIGhhdmUgaGVhcmQgZnJvbSB0aGUgYmVnaW5uaW5nLCB5ZSBzaG91bGQgd2FsayBpbiBpdC4KRm9yIG1hbnkgZGVjZWl2ZXJzIGFyZSBlbnRlcmVkIGludG8gdGhlIHdvcmxkLCB3aG8gY29uZmVzcyBub3QgdGhhdCBKZXN1cyBDaHJpc3QgaXMgY29tZSBpbiB0aGUgZmxlc2guIFRoaXMgaXMgYSBkZWNlaXZlciBhbmQgYW4gYW50aWNocmlzdC4KTG9vayB0byB5b3Vyc2VsdmVzLCB0aGF0IHdlIGxvc2Ugbm90IHRob3NlIHRoaW5ncyB3aGljaCB3ZSBoYXZlIHdyb3VnaHQsIGJ1dCB0aGF0IHdlIHJlY2VpdmUgYSBmdWxsIHJld2FyZC4KV2hvc29ldmVyIHRyYW5zZ3Jlc3NldGgsIGFuZCBhYmlkZXRoIG5vdCBpbiB0aGUgZG9jdHJpbmUgb2YgQ2hyaXN0LCBoYXRoIG5vdCBHb2QuIEhlIHRoYXQgYWJpZGV0aCBpbiB0aGUgZG9jdHJpbmUgb2YgQ2hyaXN0LCBoZSBoYXRoIGJvdGggdGhlIEZhdGhlciBhbmQgdGhlIFNvbi4KSWYgdGhlcmUgY29tZSBhbnkgdW50byB5b3UsIGFuZCBicmluZyBub3QgdGhpcyBkb2N0cmluZSwgcmVjZWl2ZSBoaW0gbm90IGludG8geW91ciBob3VzZSwgbmVpdGhlciBiaWQgaGltIEdvZCBzcGVlZDoKRm9yIGhlIHRoYXQgYmlkZGV0aCBoaW0gR29kIHNwZWVkIGlzIHBhcnRha2VyIG9mIGhpcyBldmlsIGRlZWRzLgpIYXZpbmcgbWFueSB0aGluZ3MgdG8gd3JpdGUgdW50byB5b3UsIEkgd291bGQgbm90IHdyaXRlIHdpdGggcGFwZXIgYW5kIGluazogYnV0IEkgdHJ1c3QgdG8gY29tZSB1bnRvIHlvdSwgYW5kIHNwZWFrIGZhY2UgdG8gZmFjZSwgdGhhdCBvdXIgam95IG1heSBiZSBmdWxsLgpUaGUgY2hpbGRyZW4gb2YgdGh5IGVsZWN0IHNpc3RlciBncmVldCB0aGVlLiBBbWVuLgpUaGUgZWxkZXIgdW50byB0aGUgd2VsbGJlbG92ZWQgR2FpdXMsIHdob20gSSBsb3ZlIGluIHRoZSB0cnV0aC4KQmVsb3ZlZCwgSSB3aXNoIGFib3ZlIGFsbCB0aGluZ3MgdGhhdCB0aG91IG1heWVzdCBwcm9zcGVyIGFuZCBiZSBpbiBoZWFsdGgsIGV2ZW4gYXMgdGh5IHNvdWwgcHJvc3BlcmV0aC4KRm9yIEkgcmVqb2ljZWQgZ3JlYXRseSwgd2hlbiB0aGUgYnJldGhyZW4gY2FtZSBhbmQgdGVzdGlmaWVkIG9mIHRoZSB0cnV0aCB0aGF0IGlzIGluIHRoZWUsIGV2ZW4gYXMgdGhvdSB3YWxrZXN0IGluIHRoZSB0cnV0aC4KSSBoYXZlIG5vIGdyZWF0ZXIgam95IHRoYW4gdG8gaGVhciB0aGF0IG15IGNoaWxkcmVuIHdhbGsgaW4gdHJ1dGguCkJlbG92ZWQsIHRob3UgZG9lc3QgZmFpdGhmdWxseSB3aGF0c29ldmVyIHRob3UgZG9lc3QgdG8gdGhlIGJyZXRocmVuLCBhbmQgdG8gc3RyYW5nZXJzOwpXaGljaCBoYXZlIGJvcm5lIHdpdG5lc3Mgb2YgdGh5IGNoYXJpdHkgYmVmb3JlIHRoZSBjaHVyY2g6IHdob20gaWYgdGhvdSBicmluZyBmb3J3YXJkIG9uIHRoZWlyIGpvdXJuZXkgYWZ0ZXIgYSBnb2RseSBzb3J0LCB0aG91IHNoYWx0IGRvIHdlbGw6CkJlY2F1c2UgdGhhdCBmb3IgaGlzIG5hbWUncyBzYWtlIHRoZXkgd2VudCBmb3J0aCwgdGFraW5nIG5vdGhpbmcgb2YgdGhlIEdlbnRpbGVzLgpXZSB0aGVyZWZvcmUgb3VnaHQgdG8gcmVjZWl2ZSBzdWNoLCB0aGF0IHdlIG1pZ2h0IGJlIGZlbGxvd2hlbHBlcnMgdG8gdGhlIHRydXRoLgpJIHdyb3RlIHVudG8gdGhlIGNodXJjaDogYnV0IERpb3RyZXBoZXMsIHdobyBsb3ZldGggdG8gaGF2ZSB0aGUgcHJlZW1pbmVuY2UgYW1vbmcgdGhlbSwgcmVjZWl2ZXRoIHVzIG5vdC4KV2hlcmVmb3JlLCBpZiBJIGNvbWUsIEkgd2lsbCByZW1lbWJlciBoaXMgZGVlZHMgd2hpY2ggaGUgZG9ldGgsIHByYXRpbmcgYWdhaW5zdCB1cyB3aXRoIG1hbGljaW91cyB3b3JkczogYW5kIG5vdCBjb250ZW50IHRoZXJld2l0aCwgbmVpdGhlciBkb3RoIGhlIGhpbXNlbGYgcmVjZWl2ZSB0aGUgYnJldGhyZW4sIGFuZCBmb3JiaWRkZXRoIHRoZW0gdGhhdCB3b3VsZCwgYW5kIGNhc3RldGggdGhlbSBvdXQgb2YgdGhlIGNodXJjaC4KQmVsb3ZlZCwgZm9sbG93IG5vdCB0aGF0IHdoaWNoIGlzIGV2aWwsIGJ1dCB0aGF0IHdoaWNoIGlzIGdvb2QuIEhlIHRoYXQgZG9ldGggZ29vZCBpcyBvZiBHb2Q6IGJ1dCBoZSB0aGF0IGRvZXRoIGV2aWwgaGF0aCBub3Qgc2VlbiBHb2QuCkRlbWV0cml1cyBoYXRoIGdvb2QgcmVwb3J0IG9mIGFsbCBtZW4sIGFuZCBvZiB0aGUgdHJ1dGggaXRzZWxmOiB5ZWEsIGFuZCB3ZSBhbHNvIGJlYXIgcmVjb3JkOyBhbmQgeWUga25vdyB0aGF0IG91ciByZWNvcmQgaXMgdHJ1ZS4KSSBoYWQgbWFueSB0aGluZ3MgdG8gd3JpdGUsIGJ1dCBJIHdpbGwgbm90IHdpdGggaW5rIGFuZCBwZW4gd3JpdGUgdW50byB0aGVlOgpCdXQgSSB0cnVzdCBJIHNoYWxsIHNob3J0bHkgc2VlIHRoZWUsIGFuZCB3ZSBzaGFsbCBzcGVhayBmYWNlIHRvIGZhY2UuIFBlYWNlIGJlIHRvIHRoZWUuIE91ciBmcmllbmRzIHNhbHV0ZSB0aGVlLiBHcmVldCB0aGUgZnJpZW5kcyBieSBuYW1lLgpKdWRlLCB0aGUgc2VydmFudCBvZiBKZXN1cyBDaHJpc3QsIGFuZCBicm90aGVyIG9mIEphbWVzLCB0byB0aGVtIHRoYXQgYXJlIHNhbmN0aWZpZWQgYnkgR29kIHRoZSBGYXRoZXIsIGFuZCBwcmVzZXJ2ZWQgaW4gSmVzdXMgQ2hyaXN0LCBhbmQgY2FsbGVkOgpNZXJjeSB1bnRvIHlvdSwgYW5kIHBlYWNlLCBhbmQgbG92ZSwgYmUgbXVsdGlwbGllZC4KQmVsb3ZlZCwgd2hlbiBJIGdhdmUgYWxsIGRpbGlnZW5jZSB0byB3cml0ZSB1bnRvIHlvdSBvZiB0aGUgY29tbW9uIHNhbHZhdGlvbiwgaXQgd2FzIG5lZWRmdWwgZm9yIG1lIHRvIHdyaXRlIHVudG8geW91LCBhbmQgZXhob3J0IHlvdSB0aGF0IHllIHNob3VsZCBlYXJuZXN0bHkgY29udGVuZCBmb3IgdGhlIGZhaXRoIHdoaWNoIHdhcyBvbmNlIGRlbGl2ZXJlZCB1bnRvIHRoZSBzYWludHMuCkZvciB0aGVyZSBhcmUgY2VydGFpbiBtZW4gY3JlcHQgaW4gdW5hd2FyZXMsIHdobyB3ZXJlIGJlZm9yZSBvZiBvbGQgb3JkYWluZWQgdG8gdGhpcyBjb25kZW1uYXRpb24sIHVuZ29kbHkgbWVuLCB0dXJuaW5nIHRoZSBncmFjZSBvZiBvdXIgR29kIGludG8gbGFzY2l2aW91c25lc3MsIGFuZCBkZW55aW5nIHRoZSBvbmx5IExvcmQgR29kLCBhbmQgb3VyIExvcmQgSmVzdXMgQ2hyaXN0LgpJIHdpbGwgdGhlcmVmb3JlIHB1dCB5b3UgaW4gcmVtZW1icmFuY2UsIHRob3VnaCB5ZSBvbmNlIGtuZXcgdGhpcywgaG93IHRoYXQgdGhlIExvcmQsIGhhdmluZyBzYXZlZCB0aGUgcGVvcGxlIG91dCBvZiB0aGUgbGFuZCBvZiBFZ3lwdCwgYWZ0ZXJ3YXJkIGRlc3Ryb3llZCB0aGVtIHRoYXQgYmVsaWV2ZWQgbm90LgpBbmQgdGhlIGFuZ2VscyB3aGljaCBrZXB0IG5vdCB0aGVpciBmaXJzdCBlc3RhdGUsIGJ1dCBsZWZ0IHRoZWlyIG93biBoYWJpdGF0aW9uLCBoZSBoYXRoIHJlc2VydmVkIGluIGV2ZXJsYXN0aW5nIGNoYWlucyB1bmRlciBkYXJrbmVzcyB1bnRvIHRoZSBqdWRnbWVudCBvZiB0aGUgZ3JlYXQgZGF5LgpFdmVuIGFzIFNvZG9tIGFuZCBHb21vcnJoYSwgYW5kIHRoZSBjaXRpZXMgYWJvdXQgdGhlbSBpbiBsaWtlIG1hbm5lciwgZ2l2aW5nIHRoZW1zZWx2ZXMgb3ZlciB0byBmb3JuaWNhdGlvbiwgYW5kIGdvaW5nIGFmdGVyIHN0cmFuZ2UgZmxlc2gsIGFyZSBzZXQgZm9ydGggZm9yIGFuIGV4YW1wbGUsIHN1ZmZlcmluZyB0aGUgdmVuZ2VhbmNlIG9mIGV0ZXJuYWwgZmlyZS4KTGlrZXdpc2UgYWxzbyB0aGVzZSBmaWx0aHkgZHJlYW1lcnMgZGVmaWxlIHRoZSBmbGVzaCwgZGVzcGlzZSBkb21pbmlvbiwgYW5kIHNwZWFrIGV2aWwgb2YgZGlnbml0aWVzLgpZZXQgTWljaGFlbCB0aGUgYXJjaGFuZ2VsLCB3aGVuIGNvbnRlbmRpbmcgd2l0aCB0aGUgZGV2aWwgaGUgZGlzcHV0ZWQgYWJvdXQgdGhlIGJvZHkgb2YgTW9zZXMsIGR1cnN0IG5vdCBicmluZyBhZ2FpbnN0IGhpbSBhIHJhaWxpbmcgYWNjdXNhdGlvbiwgYnV0IHNhaWQsIFRoZSBMb3JkIHJlYnVrZSB0aGVlLgpCdXQgdGhlc2Ugc3BlYWsgZXZpbCBvZiB0aG9zZSB0aGluZ3Mgd2hpY2ggdGhleSBrbm93IG5vdDogYnV0IHdoYXQgdGhleSBrbm93IG5hdHVyYWxseSwgYXMgYnJ1dGUgYmVhc3RzLCBpbiB0aG9zZSB0aGluZ3MgdGhleSBjb3JydXB0IHRoZW1zZWx2ZXMuCldvZSB1bnRvIHRoZW0hIGZvciB0aGV5IGhhdmUgZ29uZSBpbiB0aGUgd2F5IG9mIENhaW4sIGFuZCByYW4gZ3JlZWRpbHkgYWZ0ZXIgdGhlIGVycm9yIG9mIEJhbGFhbSBmb3IgcmV3YXJkLCBhbmQgcGVyaXNoZWQgaW4gdGhlIGdhaW5zYXlpbmcgb2YgQ29yZS4KVGhlc2UgYXJlIHNwb3RzIGluIHlvdXIgZmVhc3RzIG9mIGNoYXJpdHksIHdoZW4gdGhleSBmZWFzdCB3aXRoIHlvdSwgZmVlZGluZyB0aGVtc2VsdmVzIHdpdGhvdXQgZmVhcjogY2xvdWRzIHRoZXkgYXJlIHdpdGhvdXQgd2F0ZXIsIGNhcnJpZWQgYWJvdXQgb2Ygd2luZHM7IHRyZWVzIHdob3NlIGZydWl0IHdpdGhlcmV0aCwgd2l0aG91dCBmcnVpdCwgdHdpY2UgZGVhZCwgcGx1Y2tlZCB1cCBieSB0aGUgcm9vdHM7ClJhZ2luZyB3YXZlcyBvZiB0aGUgc2VhLCBmb2FtaW5nIG91dCB0aGVpciBvd24gc2hhbWU7IHdhbmRlcmluZyBzdGFycywgdG8gd2hvbSBpcyByZXNlcnZlZCB0aGUgYmxhY2tuZXNzIG9mIGRhcmtuZXNzIGZvciBldmVyLgpBbmQgRW5vY2ggYWxzbywgdGhlIHNldmVudGggZnJvbSBBZGFtLCBwcm9waGVzaWVkIG9mIHRoZXNlLCBzYXlpbmcsIEJlaG9sZCwgdGhlIExvcmQgY29tZXRoIHdpdGggdGVuIHRob3VzYW5kcyBvZiBoaXMgc2FpbnRzLApUbyBleGVjdXRlIGp1ZGdtZW50IHVwb24gYWxsLCBhbmQgdG8gY29udmluY2UgYWxsIHRoYXQgYXJlIHVuZ29kbHkgYW1vbmcgdGhlbSBvZiBhbGwgdGhlaXIgdW5nb2RseSBkZWVkcyB3aGljaCB0aGV5IGhhdmUgdW5nb2RseSBjb21taXR0ZWQsIGFuZCBvZiBhbGwgdGhlaXIgaGFyZCBzcGVlY2hlcyB3aGljaCB1bmdvZGx5IHNpbm5lcnMgaGF2ZSBzcG9rZW4gYWdhaW5zdCBoaW0uClRoZXNlIGFyZSBtdXJtdXJlcnMsIGNvbXBsYWluZXJzLCB3YWxraW5nIGFmdGVyIHRoZWlyIG93biBsdXN0czsgYW5kIHRoZWlyIG1vdXRoIHNwZWFrZXRoIGdyZWF0IHN3ZWxsaW5nIHdvcmRzLCBoYXZpbmcgbWVuJ3MgcGVyc29ucyBpbiBhZG1pcmF0aW9uIGJlY2F1c2Ugb2YgYWR2YW50YWdlLgpCdXQsIGJlbG92ZWQsIHJlbWVtYmVyIHllIHRoZSB3b3JkcyB3aGljaCB3ZXJlIHNwb2tlbiBiZWZvcmUgb2YgdGhlIGFwb3N0bGVzIG9mIG91ciBMb3JkIEplc3VzIENocmlzdDsKSG93IHRoYXQgdGhleSB0b2xkIHlvdSB0aGVyZSBzaG91bGQgYmUgbW9ja2VycyBpbiB0aGUgbGFzdCB0aW1lLCB3aG8gc2hvdWxkIHdhbGsgYWZ0ZXIgdGhlaXIgb3duIHVuZ29kbHkgbHVzdHMuClRoZXNlIGJlIHRoZXkgd2hvIHNlcGFyYXRlIHRoZW1zZWx2ZXMsIHNlbnN1YWwsIGhhdmluZyBub3QgdGhlIFNwaXJpdC4KQnV0IHllLCBiZWxvdmVkLCBidWlsZGluZyB1cCB5b3Vyc2VsdmVzIG9uIHlvdXIgbW9zdCBob2x5IGZhaXRoLCBwcmF5aW5nIGluIHRoZSBIb2x5IEdob3N0LApLZWVwIHlvdXJzZWx2ZXMgaW4gdGhlIGxvdmUgb2YgR29kLCBsb29raW5nIGZvciB0aGUgbWVyY3kgb2Ygb3VyIExvcmQgSmVzdXMgQ2hyaXN0IHVudG8gZXRlcm5hbCBsaWZlLgpBbmQgb2Ygc29tZSBoYXZlIGNvbXBhc3Npb24sIG1ha2luZyBhIGRpZmZlcmVuY2U6CkFuZCBvdGhlcnMgc2F2ZSB3aXRoIGZlYXIsIHB1bGxpbmcgdGhlbSBvdXQgb2YgdGhlIGZpcmU7IGhhdGluZyBldmVuIHRoZSBnYXJtZW50IHNwb3R0ZWQgYnkgdGhlIGZsZXNoLgpOb3cgdW50byBoaW0gdGhhdCBpcyBhYmxlIHRvIGtlZXAgeW91IGZyb20gZmFsbGluZywgYW5kIHRvIHByZXNlbnQgeW91IGZhdWx0bGVzcyBiZWZvcmUgdGhlIHByZXNlbmNlIG9mIGhpcyBnbG9yeSB3aXRoIGV4Y2VlZGluZyBqb3ksClRvIHRoZSBvbmx5IHdpc2UgR29kIG91ciBTYXZpb3VyLCBiZSBnbG9yeSBhbmQgbWFqZXN0eSwgZG9taW5pb24gYW5kIHBvd2VyLCBib3RoIG5vdyBhbmQgZXZlci4gQW1lbi4KVGhlIFJldmVsYXRpb24gb2YgSmVzdXMgQ2hyaXN0LCB3aGljaCBHb2QgZ2F2ZSB1bnRvIGhpbSwgdG8gc2hldyB1bnRvIGhpcyBzZXJ2YW50cyB0aGluZ3Mgd2hpY2ggbXVzdCBzaG9ydGx5IGNvbWUgdG8gcGFzczsgYW5kIGhlIHNlbnQgYW5kIHNpZ25pZmllZCBpdCBieSBoaXMgYW5nZWwgdW50byBoaXMgc2VydmFudCBKb2huOgpXaG8gYmFyZSByZWNvcmQgb2YgdGhlIHdvcmQgb2YgR29kLCBhbmQgb2YgdGhlIHRlc3RpbW9ueSBvZiBKZXN1cyBDaHJpc3QsIGFuZCBvZiBhbGwgdGhpbmdzIHRoYXQgaGUgc2F3LgpCbGVzc2VkIGlzIGhlIHRoYXQgcmVhZGV0aCwgYW5kIHRoZXkgdGhhdCBoZWFyIHRoZSB3b3JkcyBvZiB0aGlzIHByb3BoZWN5LCBhbmQga2VlcCB0aG9zZSB0aGluZ3Mgd2hpY2ggYXJlIHdyaXR0ZW4gdGhlcmVpbjogZm9yIHRoZSB0aW1lIGlzIGF0IGhhbmQuCkpvaG4gdG8gdGhlIHNldmVuIGNodXJjaGVzIHdoaWNoIGFyZSBpbiBBc2lhOiBHcmFjZSBiZSB1bnRvIHlvdSwgYW5kIHBlYWNlLCBmcm9tIGhpbSB3aGljaCBpcywgYW5kIHdoaWNoIHdhcywgYW5kIHdoaWNoIGlzIHRvIGNvbWU7IGFuZCBmcm9tIHRoZSBzZXZlbiBTcGlyaXRzIHdoaWNoIGFyZSBiZWZvcmUgaGlzIHRocm9uZTsKQW5kIGZyb20gSmVzdXMgQ2hyaXN0LCB3aG8gaXMgdGhlIGZhaXRoZnVsIHdpdG5lc3MsIGFuZCB0aGUgZmlyc3QgYmVnb3R0ZW4gb2YgdGhlIGRlYWQsIGFuZCB0aGUgcHJpbmNlIG9mIHRoZSBraW5ncyBvZiB0aGUgZWFydGguIFVudG8gaGltIHRoYXQgbG92ZWQgdXMsIGFuZCB3YXNoZWQgdXMgZnJvbSBvdXIgc2lucyBpbiBoaXMgb3duIGJsb29kLApBbmQgaGF0aCBtYWRlIHVzIGtpbmdzIGFuZCBwcmllc3RzIHVudG8gR29kIGFuZCBoaXMgRmF0aGVyOyB0byBoaW0gYmUgZ2xvcnkgYW5kIGRvbWluaW9uIGZvciBldmVyIGFuZCBldmVyLiBBbWVuLgpCZWhvbGQsIGhlIGNvbWV0aCB3aXRoIGNsb3VkczsgYW5kIGV2ZXJ5IGV5ZSBzaGFsbCBzZWUgaGltLCBhbmQgdGhleSBhbHNvIHdoaWNoIHBpZXJjZWQgaGltOiBhbmQgYWxsIGtpbmRyZWRzIG9mIHRoZSBlYXJ0aCBzaGFsbCB3YWlsIGJlY2F1c2Ugb2YgaGltLiBFdmVuIHNvLCBBbWVuLgpJIGFtIEFscGhhIGFuZCBPbWVnYSwgdGhlIGJlZ2lubmluZyBhbmQgdGhlIGVuZGluZywgc2FpdGggdGhlIExvcmQsIHdoaWNoIGlzLCBhbmQgd2hpY2ggd2FzLCBhbmQgd2hpY2ggaXMgdG8gY29tZSwgdGhlIEFsbWlnaHR5LgpJIEpvaG4sIHdobyBhbHNvIGFtIHlvdXIgYnJvdGhlciwgYW5kIGNvbXBhbmlvbiBpbiB0cmlidWxhdGlvbiwgYW5kIGluIHRoZSBraW5nZG9tIGFuZCBwYXRpZW5jZSBvZiBKZXN1cyBDaHJpc3QsIHdhcyBpbiB0aGUgaXNsZSB0aGF0IGlzIGNhbGxlZCBQYXRtb3MsIGZvciB0aGUgd29yZCBvZiBHb2QsIGFuZCBmb3IgdGhlIHRlc3RpbW9ueSBvZiBKZXN1cyBDaHJpc3QuCkkgd2FzIGluIHRoZSBTcGlyaXQgb24gdGhlIExvcmQncyBkYXksIGFuZCBoZWFyZCBiZWhpbmQgbWUgYSBncmVhdCB2b2ljZSwgYXMgb2YgYSB0cnVtcGV0LApTYXlpbmcsIEkgYW0gQWxwaGEgYW5kIE9tZWdhLCB0aGUgZmlyc3QgYW5kIHRoZSBsYXN0OiBhbmQsIFdoYXQgdGhvdSBzZWVzdCwgd3JpdGUgaW4gYSBib29rLCBhbmQgc2VuZCBpdCB1bnRvIHRoZSBzZXZlbiBjaHVyY2hlcyB3aGljaCBhcmUgaW4gQXNpYTsgdW50byBFcGhlc3VzLCBhbmQgdW50byBTbXlybmEsIGFuZCB1bnRvIFBlcmdhbW9zLCBhbmQgdW50byBUaHlhdGlyYSwgYW5kIHVudG8gU2FyZGlzLCBhbmQgdW50byBQaGlsYWRlbHBoaWEsIGFuZCB1bnRvIExhb2RpY2VhLgpBbmQgSSB0dXJuZWQgdG8gc2VlIHRoZSB2b2ljZSB0aGF0IHNwYWtlIHdpdGggbWUuIEFuZCBiZWluZyB0dXJuZWQsIEkgc2F3IHNldmVuIGdvbGRlbiBjYW5kbGVzdGlja3M7CkFuZCBpbiB0aGUgbWlkc3Qgb2YgdGhlIHNldmVuIGNhbmRsZXN0aWNrcyBvbmUgbGlrZSB1bnRvIHRoZSBTb24gb2YgbWFuLCBjbG90aGVkIHdpdGggYSBnYXJtZW50IGRvd24gdG8gdGhlIGZvb3QsIGFuZCBnaXJ0IGFib3V0IHRoZSBwYXBzIHdpdGggYSBnb2xkZW4gZ2lyZGxlLgpIaXMgaGVhZCBhbmQgaGlzIGhhaXJzIHdlcmUgd2hpdGUgbGlrZSB3b29sLCBhcyB3aGl0ZSBhcyBzbm93OyBhbmQgaGlzIGV5ZXMgd2VyZSBhcyBhIGZsYW1lIG9mIGZpcmU7CkFuZCBoaXMgZmVldCBsaWtlIHVudG8gZmluZSBicmFzcywgYXMgaWYgdGhleSBidXJuZWQgaW4gYSBmdXJuYWNlOyBhbmQgaGlzIHZvaWNlIGFzIHRoZSBzb3VuZCBvZiBtYW55IHdhdGVycy4KQW5kIGhlIGhhZCBpbiBoaXMgcmlnaHQgaGFuZCBzZXZlbiBzdGFyczogYW5kIG91dCBvZiBoaXMgbW91dGggd2VudCBhIHNoYXJwIHR3b2VkZ2VkIHN3b3JkOiBhbmQgaGlzIGNvdW50ZW5hbmNlIHdhcyBhcyB0aGUgc3VuIHNoaW5ldGggaW4gaGlzIHN0cmVuZ3RoLgpBbmQgd2hlbiBJIHNhdyBoaW0sIEkgZmVsbCBhdCBoaXMgZmVldCBhcyBkZWFkLiBBbmQgaGUgbGFpZCBoaXMgcmlnaHQgaGFuZCB1cG9uIG1lLCBzYXlpbmcgdW50byBtZSwgRmVhciBub3Q7IEkgYW0gdGhlIGZpcnN0IGFuZCB0aGUgbGFzdDoKSSBhbSBoZSB0aGF0IGxpdmV0aCwgYW5kIHdhcyBkZWFkOyBhbmQsIGJlaG9sZCwgSSBhbSBhbGl2ZSBmb3IgZXZlcm1vcmUsIEFtZW47IGFuZCBoYXZlIHRoZSBrZXlzIG9mIGhlbGwgYW5kIG9mIGRlYXRoLgpXcml0ZSB0aGUgdGhpbmdzIHdoaWNoIHRob3UgaGFzdCBzZWVuLCBhbmQgdGhlIHRoaW5ncyB3aGljaCBhcmUsIGFuZCB0aGUgdGhpbmdzIHdoaWNoIHNoYWxsIGJlIGhlcmVhZnRlcjsKVGhlIG15c3Rlcnkgb2YgdGhlIHNldmVuIHN0YXJzIHdoaWNoIHRob3Ugc2F3ZXN0IGluIG15IHJpZ2h0IGhhbmQsIGFuZCB0aGUgc2V2ZW4gZ29sZGVuIGNhbmRsZXN0aWNrcy4gVGhlIHNldmVuIHN0YXJzIGFyZSB0aGUgYW5nZWxzIG9mIHRoZSBzZXZlbiBjaHVyY2hlczogYW5kIHRoZSBzZXZlbiBjYW5kbGVzdGlja3Mgd2hpY2ggdGhvdSBzYXdlc3QgYXJlIHRoZSBzZXZlbiBjaHVyY2hlcy4KVW50byB0aGUgYW5nZWwgb2YgdGhlIGNodXJjaCBvZiBFcGhlc3VzIHdyaXRlOyBUaGVzZSB0aGluZ3Mgc2FpdGggaGUgdGhhdCBob2xkZXRoIHRoZSBzZXZlbiBzdGFycyBpbiBoaXMgcmlnaHQgaGFuZCwgd2hvIHdhbGtldGggaW4gdGhlIG1pZHN0IG9mIHRoZSBzZXZlbiBnb2xkZW4gY2FuZGxlc3RpY2tzOwpJIGtub3cgdGh5IHdvcmtzLCBhbmQgdGh5IGxhYm91ciwgYW5kIHRoeSBwYXRpZW5jZSwgYW5kIGhvdyB0aG91IGNhbnN0IG5vdCBiZWFyIHRoZW0gd2hpY2ggYXJlIGV2aWw6IGFuZCB0aG91IGhhc3QgdHJpZWQgdGhlbSB3aGljaCBzYXkgdGhleSBhcmUgYXBvc3RsZXMsIGFuZCBhcmUgbm90LCBhbmQgaGFzdCBmb3VuZCB0aGVtIGxpYXJzOgpBbmQgaGFzdCBib3JuZSwgYW5kIGhhc3QgcGF0aWVuY2UsIGFuZCBmb3IgbXkgbmFtZSdzIHNha2UgaGFzdCBsYWJvdXJlZCwgYW5kIGhhc3Qgbm90IGZhaW50ZWQuCk5ldmVydGhlbGVzcyBJIGhhdmUgc29tZXdoYXQgYWdhaW5zdCB0aGVlLCBiZWNhdXNlIHRob3UgaGFzdCBsZWZ0IHRoeSBmaXJzdCBsb3ZlLgpSZW1lbWJlciB0aGVyZWZvcmUgZnJvbSB3aGVuY2UgdGhvdSBhcnQgZmFsbGVuLCBhbmQgcmVwZW50LCBhbmQgZG8gdGhlIGZpcnN0IHdvcmtzOyBvciBlbHNlIEkgd2lsbCBjb21lIHVudG8gdGhlZSBxdWlja2x5LCBhbmQgd2lsbCByZW1vdmUgdGh5IGNhbmRsZXN0aWNrIG91dCBvZiBoaXMgcGxhY2UsIGV4Y2VwdCB0aG91IHJlcGVudC4KQnV0IHRoaXMgdGhvdSBoYXN0LCB0aGF0IHRob3UgaGF0ZXN0IHRoZSBkZWVkcyBvZiB0aGUgTmljb2xhaXRhbmVzLCB3aGljaCBJIGFsc28gaGF0ZS4KSGUgdGhhdCBoYXRoIGFuIGVhciwgbGV0IGhpbSBoZWFyIHdoYXQgdGhlIFNwaXJpdCBzYWl0aCB1bnRvIHRoZSBjaHVyY2hlczsgVG8gaGltIHRoYXQgb3ZlcmNvbWV0aCB3aWxsIEkgZ2l2ZSB0byBlYXQgb2YgdGhlIHRyZWUgb2YgbGlmZSwgd2hpY2ggaXMgaW4gdGhlIG1pZHN0IG9mIHRoZSBwYXJhZGlzZSBvZiBHb2QuCkFuZCB1bnRvIHRoZSBhbmdlbCBvZiB0aGUgY2h1cmNoIGluIFNteXJuYSB3cml0ZTsgVGhlc2UgdGhpbmdzIHNhaXRoIHRoZSBmaXJzdCBhbmQgdGhlIGxhc3QsIHdoaWNoIHdhcyBkZWFkLCBhbmQgaXMgYWxpdmU7Ckkga25vdyB0aHkgd29ya3MsIGFuZCB0cmlidWxhdGlvbiwgYW5kIHBvdmVydHksIChidXQgdGhvdSBhcnQgcmljaCkgYW5kIEkga25vdyB0aGUgYmxhc3BoZW15IG9mIHRoZW0gd2hpY2ggc2F5IHRoZXkgYXJlIEpld3MsIGFuZCBhcmUgbm90LCBidXQgYXJlIHRoZSBzeW5hZ29ndWUgb2YgU2F0YW4uCkZlYXIgbm9uZSBvZiB0aG9zZSB0aGluZ3Mgd2hpY2ggdGhvdSBzaGFsdCBzdWZmZXI6IGJlaG9sZCwgdGhlIGRldmlsIHNoYWxsIGNhc3Qgc29tZSBvZiB5b3UgaW50byBwcmlzb24sIHRoYXQgeWUgbWF5IGJlIHRyaWVkOyBhbmQgeWUgc2hhbGwgaGF2ZSB0cmlidWxhdGlvbiB0ZW4gZGF5czogYmUgdGhvdSBmYWl0aGZ1bCB1bnRvIGRlYXRoLCBhbmQgSSB3aWxsIGdpdmUgdGhlZSBhIGNyb3duIG9mIGxpZmUuCkhlIHRoYXQgaGF0aCBhbiBlYXIsIGxldCBoaW0gaGVhciB3aGF0IHRoZSBTcGlyaXQgc2FpdGggdW50byB0aGUgY2h1cmNoZXM7IEhlIHRoYXQgb3ZlcmNvbWV0aCBzaGFsbCBub3QgYmUgaHVydCBvZiB0aGUgc2Vjb25kIGRlYXRoLgpBbmQgdG8gdGhlIGFuZ2VsIG9mIHRoZSBjaHVyY2ggaW4gUGVyZ2Ftb3Mgd3JpdGU7IFRoZXNlIHRoaW5ncyBzYWl0aCBoZSB3aGljaCBoYXRoIHRoZSBzaGFycCBzd29yZCB3aXRoIHR3byBlZGdlczsKSSBrbm93IHRoeSB3b3JrcywgYW5kIHdoZXJlIHRob3UgZHdlbGxlc3QsIGV2ZW4gd2hlcmUgU2F0YW4ncyBzZWF0IGlzOiBhbmQgdGhvdSBob2xkZXN0IGZhc3QgbXkgbmFtZSwgYW5kIGhhc3Qgbm90IGRlbmllZCBteSBmYWl0aCwgZXZlbiBpbiB0aG9zZSBkYXlzIHdoZXJlaW4gQW50aXBhcyB3YXMgbXkgZmFpdGhmdWwgbWFydHlyLCB3aG8gd2FzIHNsYWluIGFtb25nIHlvdSwgd2hlcmUgU2F0YW4gZHdlbGxldGguCkJ1dCBJIGhhdmUgYSBmZXcgdGhpbmdzIGFnYWluc3QgdGhlZSwgYmVjYXVzZSB0aG91IGhhc3QgdGhlcmUgdGhlbSB0aGF0IGhvbGQgdGhlIGRvY3RyaW5lIG9mIEJhbGFhbSwgd2hvIHRhdWdodCBCYWxhYyB0byBjYXN0IGEgc3R1bWJsaW5nYmxvY2sgYmVmb3JlIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWwsIHRvIGVhdCB0aGluZ3Mgc2FjcmlmaWNlZCB1bnRvIGlkb2xzLCBhbmQgdG8gY29tbWl0IGZvcm5pY2F0aW9uLgpTbyBoYXN0IHRob3UgYWxzbyB0aGVtIHRoYXQgaG9sZCB0aGUgZG9jdHJpbmUgb2YgdGhlIE5pY29sYWl0YW5lcywgd2hpY2ggdGhpbmcgSSBoYXRlLgpSZXBlbnQ7IG9yIGVsc2UgSSB3aWxsIGNvbWUgdW50byB0aGVlIHF1aWNrbHksIGFuZCB3aWxsIGZpZ2h0IGFnYWluc3QgdGhlbSB3aXRoIHRoZSBzd29yZCBvZiBteSBtb3V0aC4KSGUgdGhhdCBoYXRoIGFuIGVhciwgbGV0IGhpbSBoZWFyIHdoYXQgdGhlIFNwaXJpdCBzYWl0aCB1bnRvIHRoZSBjaHVyY2hlczsgVG8gaGltIHRoYXQgb3ZlcmNvbWV0aCB3aWxsIEkgZ2l2ZSB0byBlYXQgb2YgdGhlIGhpZGRlbiBtYW5uYSwgYW5kIHdpbGwgZ2l2ZSBoaW0gYSB3aGl0ZSBzdG9uZSwgYW5kIGluIHRoZSBzdG9uZSBhIG5ldyBuYW1lIHdyaXR0ZW4sIHdoaWNoIG5vIG1hbiBrbm93ZXRoIHNhdmluZyBoZSB0aGF0IHJlY2VpdmV0aCBpdC4KQW5kIHVudG8gdGhlIGFuZ2VsIG9mIHRoZSBjaHVyY2ggaW4gVGh5YXRpcmEgd3JpdGU7IFRoZXNlIHRoaW5ncyBzYWl0aCB0aGUgU29uIG9mIEdvZCwgd2hvIGhhdGggaGlzIGV5ZXMgbGlrZSB1bnRvIGEgZmxhbWUgb2YgZmlyZSwgYW5kIGhpcyBmZWV0IGFyZSBsaWtlIGZpbmUgYnJhc3M7Ckkga25vdyB0aHkgd29ya3MsIGFuZCBjaGFyaXR5LCBhbmQgc2VydmljZSwgYW5kIGZhaXRoLCBhbmQgdGh5IHBhdGllbmNlLCBhbmQgdGh5IHdvcmtzOyBhbmQgdGhlIGxhc3QgdG8gYmUgbW9yZSB0aGFuIHRoZSBmaXJzdC4KTm90d2l0aHN0YW5kaW5nIEkgaGF2ZSBhIGZldyB0aGluZ3MgYWdhaW5zdCB0aGVlLCBiZWNhdXNlIHRob3Ugc3VmZmVyZXN0IHRoYXQgd29tYW4gSmV6ZWJlbCwgd2hpY2ggY2FsbGV0aCBoZXJzZWxmIGEgcHJvcGhldGVzcywgdG8gdGVhY2ggYW5kIHRvIHNlZHVjZSBteSBzZXJ2YW50cyB0byBjb21taXQgZm9ybmljYXRpb24sIGFuZCB0byBlYXQgdGhpbmdzIHNhY3JpZmljZWQgdW50byBpZG9scy4KQW5kIEkgZ2F2ZSBoZXIgc3BhY2UgdG8gcmVwZW50IG9mIGhlciBmb3JuaWNhdGlvbjsgYW5kIHNoZSByZXBlbnRlZCBub3QuCkJlaG9sZCwgSSB3aWxsIGNhc3QgaGVyIGludG8gYSBiZWQsIGFuZCB0aGVtIHRoYXQgY29tbWl0IGFkdWx0ZXJ5IHdpdGggaGVyIGludG8gZ3JlYXQgdHJpYnVsYXRpb24sIGV4Y2VwdCB0aGV5IHJlcGVudCBvZiB0aGVpciBkZWVkcy4KQW5kIEkgd2lsbCBraWxsIGhlciBjaGlsZHJlbiB3aXRoIGRlYXRoOyBhbmQgYWxsIHRoZSBjaHVyY2hlcyBzaGFsbCBrbm93IHRoYXQgSSBhbSBoZSB3aGljaCBzZWFyY2hldGggdGhlIHJlaW5zIGFuZCBoZWFydHM6IGFuZCBJIHdpbGwgZ2l2ZSB1bnRvIGV2ZXJ5IG9uZSBvZiB5b3UgYWNjb3JkaW5nIHRvIHlvdXIgd29ya3MuCkJ1dCB1bnRvIHlvdSBJIHNheSwgYW5kIHVudG8gdGhlIHJlc3QgaW4gVGh5YXRpcmEsIGFzIG1hbnkgYXMgaGF2ZSBub3QgdGhpcyBkb2N0cmluZSwgYW5kIHdoaWNoIGhhdmUgbm90IGtub3duIHRoZSBkZXB0aHMgb2YgU2F0YW4sIGFzIHRoZXkgc3BlYWs7IEkgd2lsbCBwdXQgdXBvbiB5b3Ugbm9uZSBvdGhlciBidXJkZW4uCkJ1dCB0aGF0IHdoaWNoIHllIGhhdmUgYWxyZWFkeSBob2xkIGZhc3QgdGlsbCBJIGNvbWUuCkFuZCBoZSB0aGF0IG92ZXJjb21ldGgsIGFuZCBrZWVwZXRoIG15IHdvcmtzIHVudG8gdGhlIGVuZCwgdG8gaGltIHdpbGwgSSBnaXZlIHBvd2VyIG92ZXIgdGhlIG5hdGlvbnM6CkFuZCBoZSBzaGFsbCBydWxlIHRoZW0gd2l0aCBhIHJvZCBvZiBpcm9uOyBhcyB0aGUgdmVzc2VscyBvZiBhIHBvdHRlciBzaGFsbCB0aGV5IGJlIGJyb2tlbiB0byBzaGl2ZXJzOiBldmVuIGFzIEkgcmVjZWl2ZWQgb2YgbXkgRmF0aGVyLgpBbmQgSSB3aWxsIGdpdmUgaGltIHRoZSBtb3JuaW5nIHN0YXIuCkhlIHRoYXQgaGF0aCBhbiBlYXIsIGxldCBoaW0gaGVhciB3aGF0IHRoZSBTcGlyaXQgc2FpdGggdW50byB0aGUgY2h1cmNoZXMuCkFuZCB1bnRvIHRoZSBhbmdlbCBvZiB0aGUgY2h1cmNoIGluIFNhcmRpcyB3cml0ZTsgVGhlc2UgdGhpbmdzIHNhaXRoIGhlIHRoYXQgaGF0aCB0aGUgc2V2ZW4gU3Bpcml0cyBvZiBHb2QsIGFuZCB0aGUgc2V2ZW4gc3RhcnM7IEkga25vdyB0aHkgd29ya3MsIHRoYXQgdGhvdSBoYXN0IGEgbmFtZSB0aGF0IHRob3UgbGl2ZXN0LCBhbmQgYXJ0IGRlYWQuCkJlIHdhdGNoZnVsLCBhbmQgc3RyZW5ndGhlbiB0aGUgdGhpbmdzIHdoaWNoIHJlbWFpbiwgdGhhdCBhcmUgcmVhZHkgdG8gZGllOiBmb3IgSSBoYXZlIG5vdCBmb3VuZCB0aHkgd29ya3MgcGVyZmVjdCBiZWZvcmUgR29kLgpSZW1lbWJlciB0aGVyZWZvcmUgaG93IHRob3UgaGFzdCByZWNlaXZlZCBhbmQgaGVhcmQsIGFuZCBob2xkIGZhc3QsIGFuZCByZXBlbnQuIElmIHRoZXJlZm9yZSB0aG91IHNoYWx0IG5vdCB3YXRjaCwgSSB3aWxsIGNvbWUgb24gdGhlZSBhcyBhIHRoaWVmLCBhbmQgdGhvdSBzaGFsdCBub3Qga25vdyB3aGF0IGhvdXIgSSB3aWxsIGNvbWUgdXBvbiB0aGVlLgpUaG91IGhhc3QgYSBmZXcgbmFtZXMgZXZlbiBpbiBTYXJkaXMgd2hpY2ggaGF2ZSBub3QgZGVmaWxlZCB0aGVpciBnYXJtZW50czsgYW5kIHRoZXkgc2hhbGwgd2FsayB3aXRoIG1lIGluIHdoaXRlOiBmb3IgdGhleSBhcmUgd29ydGh5LgpIZSB0aGF0IG92ZXJjb21ldGgsIHRoZSBzYW1lIHNoYWxsIGJlIGNsb3RoZWQgaW4gd2hpdGUgcmFpbWVudDsgYW5kIEkgd2lsbCBub3QgYmxvdCBvdXQgaGlzIG5hbWUgb3V0IG9mIHRoZSBib29rIG9mIGxpZmUsIGJ1dCBJIHdpbGwgY29uZmVzcyBoaXMgbmFtZSBiZWZvcmUgbXkgRmF0aGVyLCBhbmQgYmVmb3JlIGhpcyBhbmdlbHMuCkhlIHRoYXQgaGF0aCBhbiBlYXIsIGxldCBoaW0gaGVhciB3aGF0IHRoZSBTcGlyaXQgc2FpdGggdW50byB0aGUgY2h1cmNoZXMuCkFuZCB0byB0aGUgYW5nZWwgb2YgdGhlIGNodXJjaCBpbiBQaGlsYWRlbHBoaWEgd3JpdGU7IFRoZXNlIHRoaW5ncyBzYWl0aCBoZSB0aGF0IGlzIGhvbHksIGhlIHRoYXQgaXMgdHJ1ZSwgaGUgdGhhdCBoYXRoIHRoZSBrZXkgb2YgRGF2aWQsIGhlIHRoYXQgb3BlbmV0aCwgYW5kIG5vIG1hbiBzaHV0dGV0aDsgYW5kIHNodXR0ZXRoLCBhbmQgbm8gbWFuIG9wZW5ldGg7Ckkga25vdyB0aHkgd29ya3M6IGJlaG9sZCwgSSBoYXZlIHNldCBiZWZvcmUgdGhlZSBhbiBvcGVuIGRvb3IsIGFuZCBubyBtYW4gY2FuIHNodXQgaXQ6IGZvciB0aG91IGhhc3QgYSBsaXR0bGUgc3RyZW5ndGgsIGFuZCBoYXN0IGtlcHQgbXkgd29yZCwgYW5kIGhhc3Qgbm90IGRlbmllZCBteSBuYW1lLgpCZWhvbGQsIEkgd2lsbCBtYWtlIHRoZW0gb2YgdGhlIHN5bmFnb2d1ZSBvZiBTYXRhbiwgd2hpY2ggc2F5IHRoZXkgYXJlIEpld3MsIGFuZCBhcmUgbm90LCBidXQgZG8gbGllOyBiZWhvbGQsIEkgd2lsbCBtYWtlIHRoZW0gdG8gY29tZSBhbmQgd29yc2hpcCBiZWZvcmUgdGh5IGZlZXQsIGFuZCB0byBrbm93IHRoYXQgSSBoYXZlIGxvdmVkIHRoZWUuCkJlY2F1c2UgdGhvdSBoYXN0IGtlcHQgdGhlIHdvcmQgb2YgbXkgcGF0aWVuY2UsIEkgYWxzbyB3aWxsIGtlZXAgdGhlZSBmcm9tIHRoZSBob3VyIG9mIHRlbXB0YXRpb24sIHdoaWNoIHNoYWxsIGNvbWUgdXBvbiBhbGwgdGhlIHdvcmxkLCB0byB0cnkgdGhlbSB0aGF0IGR3ZWxsIHVwb24gdGhlIGVhcnRoLgpCZWhvbGQsIEkgY29tZSBxdWlja2x5OiBob2xkIHRoYXQgZmFzdCB3aGljaCB0aG91IGhhc3QsIHRoYXQgbm8gbWFuIHRha2UgdGh5IGNyb3duLgpIaW0gdGhhdCBvdmVyY29tZXRoIHdpbGwgSSBtYWtlIGEgcGlsbGFyIGluIHRoZSB0ZW1wbGUgb2YgbXkgR29kLCBhbmQgaGUgc2hhbGwgZ28gbm8gbW9yZSBvdXQ6IGFuZCBJIHdpbGwgd3JpdGUgdXBvbiBoaW0gdGhlIG5hbWUgb2YgbXkgR29kLCBhbmQgdGhlIG5hbWUgb2YgdGhlIGNpdHkgb2YgbXkgR29kLCB3aGljaCBpcyBuZXcgSmVydXNhbGVtLCB3aGljaCBjb21ldGggZG93biBvdXQgb2YgaGVhdmVuIGZyb20gbXkgR29kOiBhbmQgSSB3aWxsIHdyaXRlIHVwb24gaGltIG15IG5ldyBuYW1lLgpIZSB0aGF0IGhhdGggYW4gZWFyLCBsZXQgaGltIGhlYXIgd2hhdCB0aGUgU3Bpcml0IHNhaXRoIHVudG8gdGhlIGNodXJjaGVzLgpBbmQgdW50byB0aGUgYW5nZWwgb2YgdGhlIGNodXJjaCBvZiB0aGUgTGFvZGljZWFucyB3cml0ZTsgVGhlc2UgdGhpbmdzIHNhaXRoIHRoZSBBbWVuLCB0aGUgZmFpdGhmdWwgYW5kIHRydWUgd2l0bmVzcywgdGhlIGJlZ2lubmluZyBvZiB0aGUgY3JlYXRpb24gb2YgR29kOwpJIGtub3cgdGh5IHdvcmtzLCB0aGF0IHRob3UgYXJ0IG5laXRoZXIgY29sZCBub3IgaG90OiBJIHdvdWxkIHRob3Ugd2VydCBjb2xkIG9yIGhvdC4KU28gdGhlbiBiZWNhdXNlIHRob3UgYXJ0IGx1a2V3YXJtLCBhbmQgbmVpdGhlciBjb2xkIG5vciBob3QsIEkgd2lsbCBzcHVlIHRoZWUgb3V0IG9mIG15IG1vdXRoLgpCZWNhdXNlIHRob3Ugc2F5ZXN0LCBJIGFtIHJpY2gsIGFuZCBpbmNyZWFzZWQgd2l0aCBnb29kcywgYW5kIGhhdmUgbmVlZCBvZiBub3RoaW5nOyBhbmQga25vd2VzdCBub3QgdGhhdCB0aG91IGFydCB3cmV0Y2hlZCwgYW5kIG1pc2VyYWJsZSwgYW5kIHBvb3IsIGFuZCBibGluZCwgYW5kIG5ha2VkOgpJIGNvdW5zZWwgdGhlZSB0byBidXkgb2YgbWUgZ29sZCB0cmllZCBpbiB0aGUgZmlyZSwgdGhhdCB0aG91IG1heWVzdCBiZSByaWNoOyBhbmQgd2hpdGUgcmFpbWVudCwgdGhhdCB0aG91IG1heWVzdCBiZSBjbG90aGVkLCBhbmQgdGhhdCB0aGUgc2hhbWUgb2YgdGh5IG5ha2VkbmVzcyBkbyBub3QgYXBwZWFyOyBhbmQgYW5vaW50IHRoaW5lIGV5ZXMgd2l0aCBleWVzYWx2ZSwgdGhhdCB0aG91IG1heWVzdCBzZWUuCkFzIG1hbnkgYXMgSSBsb3ZlLCBJIHJlYnVrZSBhbmQgY2hhc3RlbjogYmUgemVhbG91cyB0aGVyZWZvcmUsIGFuZCByZXBlbnQuCkJlaG9sZCwgSSBzdGFuZCBhdCB0aGUgZG9vciwgYW5kIGtub2NrOiBpZiBhbnkgbWFuIGhlYXIgbXkgdm9pY2UsIGFuZCBvcGVuIHRoZSBkb29yLCBJIHdpbGwgY29tZSBpbiB0byBoaW0sIGFuZCB3aWxsIHN1cCB3aXRoIGhpbSwgYW5kIGhlIHdpdGggbWUuClRvIGhpbSB0aGF0IG92ZXJjb21ldGggd2lsbCBJIGdyYW50IHRvIHNpdCB3aXRoIG1lIGluIG15IHRocm9uZSwgZXZlbiBhcyBJIGFsc28gb3ZlcmNhbWUsIGFuZCBhbSBzZXQgZG93biB3aXRoIG15IEZhdGhlciBpbiBoaXMgdGhyb25lLgpIZSB0aGF0IGhhdGggYW4gZWFyLCBsZXQgaGltIGhlYXIgd2hhdCB0aGUgU3Bpcml0IHNhaXRoIHVudG8gdGhlIGNodXJjaGVzLgpBZnRlciB0aGlzIEkgbG9va2VkLCBhbmQsIGJlaG9sZCwgYSBkb29yIHdhcyBvcGVuZWQgaW4gaGVhdmVuOiBhbmQgdGhlIGZpcnN0IHZvaWNlIHdoaWNoIEkgaGVhcmQgd2FzIGFzIGl0IHdlcmUgb2YgYSB0cnVtcGV0IHRhbGtpbmcgd2l0aCBtZTsgd2hpY2ggc2FpZCwgQ29tZSB1cCBoaXRoZXIsIGFuZCBJIHdpbGwgc2hldyB0aGVlIHRoaW5ncyB3aGljaCBtdXN0IGJlIGhlcmVhZnRlci4KQW5kIGltbWVkaWF0ZWx5IEkgd2FzIGluIHRoZSBzcGlyaXQ6IGFuZCwgYmVob2xkLCBhIHRocm9uZSB3YXMgc2V0IGluIGhlYXZlbiwgYW5kIG9uZSBzYXQgb24gdGhlIHRocm9uZS4KQW5kIGhlIHRoYXQgc2F0IHdhcyB0byBsb29rIHVwb24gbGlrZSBhIGphc3BlciBhbmQgYSBzYXJkaW5lIHN0b25lOiBhbmQgdGhlcmUgd2FzIGEgcmFpbmJvdyByb3VuZCBhYm91dCB0aGUgdGhyb25lLCBpbiBzaWdodCBsaWtlIHVudG8gYW4gZW1lcmFsZC4KQW5kIHJvdW5kIGFib3V0IHRoZSB0aHJvbmUgd2VyZSBmb3VyIGFuZCB0d2VudHkgc2VhdHM6IGFuZCB1cG9uIHRoZSBzZWF0cyBJIHNhdyBmb3VyIGFuZCB0d2VudHkgZWxkZXJzIHNpdHRpbmcsIGNsb3RoZWQgaW4gd2hpdGUgcmFpbWVudDsgYW5kIHRoZXkgaGFkIG9uIHRoZWlyIGhlYWRzIGNyb3ducyBvZiBnb2xkLgpBbmQgb3V0IG9mIHRoZSB0aHJvbmUgcHJvY2VlZGVkIGxpZ2h0bmluZ3MgYW5kIHRodW5kZXJpbmdzIGFuZCB2b2ljZXM6IGFuZCB0aGVyZSB3ZXJlIHNldmVuIGxhbXBzIG9mIGZpcmUgYnVybmluZyBiZWZvcmUgdGhlIHRocm9uZSwgd2hpY2ggYXJlIHRoZSBzZXZlbiBTcGlyaXRzIG9mIEdvZC4KQW5kIGJlZm9yZSB0aGUgdGhyb25lIHRoZXJlIHdhcyBhIHNlYSBvZiBnbGFzcyBsaWtlIHVudG8gY3J5c3RhbDogYW5kIGluIHRoZSBtaWRzdCBvZiB0aGUgdGhyb25lLCBhbmQgcm91bmQgYWJvdXQgdGhlIHRocm9uZSwgd2VyZSBmb3VyIGJlYXN0cyBmdWxsIG9mIGV5ZXMgYmVmb3JlIGFuZCBiZWhpbmQuCkFuZCB0aGUgZmlyc3QgYmVhc3Qgd2FzIGxpa2UgYSBsaW9uLCBhbmQgdGhlIHNlY29uZCBiZWFzdCBsaWtlIGEgY2FsZiwgYW5kIHRoZSB0aGlyZCBiZWFzdCBoYWQgYSBmYWNlIGFzIGEgbWFuLCBhbmQgdGhlIGZvdXJ0aCBiZWFzdCB3YXMgbGlrZSBhIGZseWluZyBlYWdsZS4KQW5kIHRoZSBmb3VyIGJlYXN0cyBoYWQgZWFjaCBvZiB0aGVtIHNpeCB3aW5ncyBhYm91dCBoaW07IGFuZCB0aGV5IHdlcmUgZnVsbCBvZiBleWVzIHdpdGhpbjogYW5kIHRoZXkgcmVzdCBub3QgZGF5IGFuZCBuaWdodCwgc2F5aW5nLCBIb2x5LCBob2x5LCBob2x5LCBMT1JEIEdvZCBBbG1pZ2h0eSwgd2hpY2ggd2FzLCBhbmQgaXMsIGFuZCBpcyB0byBjb21lLgpBbmQgd2hlbiB0aG9zZSBiZWFzdHMgZ2l2ZSBnbG9yeSBhbmQgaG9ub3VyIGFuZCB0aGFua3MgdG8gaGltIHRoYXQgc2F0IG9uIHRoZSB0aHJvbmUsIHdobyBsaXZldGggZm9yIGV2ZXIgYW5kIGV2ZXIsClRoZSBmb3VyIGFuZCB0d2VudHkgZWxkZXJzIGZhbGwgZG93biBiZWZvcmUgaGltIHRoYXQgc2F0IG9uIHRoZSB0aHJvbmUsIGFuZCB3b3JzaGlwIGhpbSB0aGF0IGxpdmV0aCBmb3IgZXZlciBhbmQgZXZlciwgYW5kIGNhc3QgdGhlaXIgY3Jvd25zIGJlZm9yZSB0aGUgdGhyb25lLCBzYXlpbmcsClRob3UgYXJ0IHdvcnRoeSwgTyBMb3JkLCB0byByZWNlaXZlIGdsb3J5IGFuZCBob25vdXIgYW5kIHBvd2VyOiBmb3IgdGhvdSBoYXN0IGNyZWF0ZWQgYWxsIHRoaW5ncywgYW5kIGZvciB0aHkgcGxlYXN1cmUgdGhleSBhcmUgYW5kIHdlcmUgY3JlYXRlZC4KQW5kIEkgc2F3IGluIHRoZSByaWdodCBoYW5kIG9mIGhpbSB0aGF0IHNhdCBvbiB0aGUgdGhyb25lIGEgYm9vayB3cml0dGVuIHdpdGhpbiBhbmQgb24gdGhlIGJhY2tzaWRlLCBzZWFsZWQgd2l0aCBzZXZlbiBzZWFscy4KQW5kIEkgc2F3IGEgc3Ryb25nIGFuZ2VsIHByb2NsYWltaW5nIHdpdGggYSBsb3VkIHZvaWNlLCBXaG8gaXMgd29ydGh5IHRvIG9wZW4gdGhlIGJvb2ssIGFuZCB0byBsb29zZSB0aGUgc2VhbHMgdGhlcmVvZj8KQW5kIG5vIG1hbiBpbiBoZWF2ZW4sIG5vciBpbiBlYXJ0aCwgbmVpdGhlciB1bmRlciB0aGUgZWFydGgsIHdhcyBhYmxlIHRvIG9wZW4gdGhlIGJvb2ssIG5laXRoZXIgdG8gbG9vayB0aGVyZW9uLgpBbmQgSSB3ZXB0IG11Y2gsIGJlY2F1c2Ugbm8gbWFuIHdhcyBmb3VuZCB3b3J0aHkgdG8gb3BlbiBhbmQgdG8gcmVhZCB0aGUgYm9vaywgbmVpdGhlciB0byBsb29rIHRoZXJlb24uCkFuZCBvbmUgb2YgdGhlIGVsZGVycyBzYWl0aCB1bnRvIG1lLCBXZWVwIG5vdDogYmVob2xkLCB0aGUgTGlvbiBvZiB0aGUgdHJpYmUgb2YgSnVkYSwgdGhlIFJvb3Qgb2YgRGF2aWQsIGhhdGggcHJldmFpbGVkIHRvIG9wZW4gdGhlIGJvb2ssIGFuZCB0byBsb29zZSB0aGUgc2V2ZW4gc2VhbHMgdGhlcmVvZi4KQW5kIEkgYmVoZWxkLCBhbmQsIGxvLCBpbiB0aGUgbWlkc3Qgb2YgdGhlIHRocm9uZSBhbmQgb2YgdGhlIGZvdXIgYmVhc3RzLCBhbmQgaW4gdGhlIG1pZHN0IG9mIHRoZSBlbGRlcnMsIHN0b29kIGEgTGFtYiBhcyBpdCBoYWQgYmVlbiBzbGFpbiwgaGF2aW5nIHNldmVuIGhvcm5zIGFuZCBzZXZlbiBleWVzLCB3aGljaCBhcmUgdGhlIHNldmVuIFNwaXJpdHMgb2YgR29kIHNlbnQgZm9ydGggaW50byBhbGwgdGhlIGVhcnRoLgpBbmQgaGUgY2FtZSBhbmQgdG9vayB0aGUgYm9vayBvdXQgb2YgdGhlIHJpZ2h0IGhhbmQgb2YgaGltIHRoYXQgc2F0IHVwb24gdGhlIHRocm9uZS4KQW5kIHdoZW4gaGUgaGFkIHRha2VuIHRoZSBib29rLCB0aGUgZm91ciBiZWFzdHMgYW5kIGZvdXIgYW5kIHR3ZW50eSBlbGRlcnMgZmVsbCBkb3duIGJlZm9yZSB0aGUgTGFtYiwgaGF2aW5nIGV2ZXJ5IG9uZSBvZiB0aGVtIGhhcnBzLCBhbmQgZ29sZGVuIHZpYWxzIGZ1bGwgb2Ygb2RvdXJzLCB3aGljaCBhcmUgdGhlIHByYXllcnMgb2Ygc2FpbnRzLgpBbmQgdGhleSBzdW5nIGEgbmV3IHNvbmcsIHNheWluZywgVGhvdSBhcnQgd29ydGh5IHRvIHRha2UgdGhlIGJvb2ssIGFuZCB0byBvcGVuIHRoZSBzZWFscyB0aGVyZW9mOiBmb3IgdGhvdSB3YXN0IHNsYWluLCBhbmQgaGFzdCByZWRlZW1lZCB1cyB0byBHb2QgYnkgdGh5IGJsb29kIG91dCBvZiBldmVyeSBraW5kcmVkLCBhbmQgdG9uZ3VlLCBhbmQgcGVvcGxlLCBhbmQgbmF0aW9uOwpBbmQgaGFzdCBtYWRlIHVzIHVudG8gb3VyIEdvZCBraW5ncyBhbmQgcHJpZXN0czogYW5kIHdlIHNoYWxsIHJlaWduIG9uIHRoZSBlYXJ0aC4KQW5kIEkgYmVoZWxkLCBhbmQgSSBoZWFyZCB0aGUgdm9pY2Ugb2YgbWFueSBhbmdlbHMgcm91bmQgYWJvdXQgdGhlIHRocm9uZSBhbmQgdGhlIGJlYXN0cyBhbmQgdGhlIGVsZGVyczogYW5kIHRoZSBudW1iZXIgb2YgdGhlbSB3YXMgdGVuIHRob3VzYW5kIHRpbWVzIHRlbiB0aG91c2FuZCwgYW5kIHRob3VzYW5kcyBvZiB0aG91c2FuZHM7ClNheWluZyB3aXRoIGEgbG91ZCB2b2ljZSwgV29ydGh5IGlzIHRoZSBMYW1iIHRoYXQgd2FzIHNsYWluIHRvIHJlY2VpdmUgcG93ZXIsIGFuZCByaWNoZXMsIGFuZCB3aXNkb20sIGFuZCBzdHJlbmd0aCwgYW5kIGhvbm91ciwgYW5kIGdsb3J5LCBhbmQgYmxlc3NpbmcuCkFuZCBldmVyeSBjcmVhdHVyZSB3aGljaCBpcyBpbiBoZWF2ZW4sIGFuZCBvbiB0aGUgZWFydGgsIGFuZCB1bmRlciB0aGUgZWFydGgsIGFuZCBzdWNoIGFzIGFyZSBpbiB0aGUgc2VhLCBhbmQgYWxsIHRoYXQgYXJlIGluIHRoZW0sIGhlYXJkIEkgc2F5aW5nLCBCbGVzc2luZywgYW5kIGhvbm91ciwgYW5kIGdsb3J5LCBhbmQgcG93ZXIsIGJlIHVudG8gaGltIHRoYXQgc2l0dGV0aCB1cG9uIHRoZSB0aHJvbmUsIGFuZCB1bnRvIHRoZSBMYW1iIGZvciBldmVyIGFuZCBldmVyLgpBbmQgdGhlIGZvdXIgYmVhc3RzIHNhaWQsIEFtZW4uIEFuZCB0aGUgZm91ciBhbmQgdHdlbnR5IGVsZGVycyBmZWxsIGRvd24gYW5kIHdvcnNoaXBwZWQgaGltIHRoYXQgbGl2ZXRoIGZvciBldmVyIGFuZCBldmVyLgpBbmQgSSBzYXcgd2hlbiB0aGUgTGFtYiBvcGVuZWQgb25lIG9mIHRoZSBzZWFscywgYW5kIEkgaGVhcmQsIGFzIGl0IHdlcmUgdGhlIG5vaXNlIG9mIHRodW5kZXIsIG9uZSBvZiB0aGUgZm91ciBiZWFzdHMgc2F5aW5nLCBDb21lIGFuZCBzZWUuCkFuZCBJIHNhdywgYW5kIGJlaG9sZCBhIHdoaXRlIGhvcnNlOiBhbmQgaGUgdGhhdCBzYXQgb24gaGltIGhhZCBhIGJvdzsgYW5kIGEgY3Jvd24gd2FzIGdpdmVuIHVudG8gaGltOiBhbmQgaGUgd2VudCBmb3J0aCBjb25xdWVyaW5nLCBhbmQgdG8gY29ucXVlci4KQW5kIHdoZW4gaGUgaGFkIG9wZW5lZCB0aGUgc2Vjb25kIHNlYWwsIEkgaGVhcmQgdGhlIHNlY29uZCBiZWFzdCBzYXksIENvbWUgYW5kIHNlZS4KQW5kIHRoZXJlIHdlbnQgb3V0IGFub3RoZXIgaG9yc2UgdGhhdCB3YXMgcmVkOiBhbmQgcG93ZXIgd2FzIGdpdmVuIHRvIGhpbSB0aGF0IHNhdCB0aGVyZW9uIHRvIHRha2UgcGVhY2UgZnJvbSB0aGUgZWFydGgsIGFuZCB0aGF0IHRoZXkgc2hvdWxkIGtpbGwgb25lIGFub3RoZXI6IGFuZCB0aGVyZSB3YXMgZ2l2ZW4gdW50byBoaW0gYSBncmVhdCBzd29yZC4KQW5kIHdoZW4gaGUgaGFkIG9wZW5lZCB0aGUgdGhpcmQgc2VhbCwgSSBoZWFyZCB0aGUgdGhpcmQgYmVhc3Qgc2F5LCBDb21lIGFuZCBzZWUuIEFuZCBJIGJlaGVsZCwgYW5kIGxvIGEgYmxhY2sgaG9yc2U7IGFuZCBoZSB0aGF0IHNhdCBvbiBoaW0gaGFkIGEgcGFpciBvZiBiYWxhbmNlcyBpbiBoaXMgaGFuZC4KQW5kIEkgaGVhcmQgYSB2b2ljZSBpbiB0aGUgbWlkc3Qgb2YgdGhlIGZvdXIgYmVhc3RzIHNheSwgQSBtZWFzdXJlIG9mIHdoZWF0IGZvciBhIHBlbm55LCBhbmQgdGhyZWUgbWVhc3VyZXMgb2YgYmFybGV5IGZvciBhIHBlbm55OyBhbmQgc2VlIHRob3UgaHVydCBub3QgdGhlIG9pbCBhbmQgdGhlIHdpbmUuCkFuZCB3aGVuIGhlIGhhZCBvcGVuZWQgdGhlIGZvdXJ0aCBzZWFsLCBJIGhlYXJkIHRoZSB2b2ljZSBvZiB0aGUgZm91cnRoIGJlYXN0IHNheSwgQ29tZSBhbmQgc2VlLgpBbmQgSSBsb29rZWQsIGFuZCBiZWhvbGQgYSBwYWxlIGhvcnNlOiBhbmQgaGlzIG5hbWUgdGhhdCBzYXQgb24gaGltIHdhcyBEZWF0aCwgYW5kIEhlbGwgZm9sbG93ZWQgd2l0aCBoaW0uIEFuZCBwb3dlciB3YXMgZ2l2ZW4gdW50byB0aGVtIG92ZXIgdGhlIGZvdXJ0aCBwYXJ0IG9mIHRoZSBlYXJ0aCwgdG8ga2lsbCB3aXRoIHN3b3JkLCBhbmQgd2l0aCBodW5nZXIsIGFuZCB3aXRoIGRlYXRoLCBhbmQgd2l0aCB0aGUgYmVhc3RzIG9mIHRoZSBlYXJ0aC4KQW5kIHdoZW4gaGUgaGFkIG9wZW5lZCB0aGUgZmlmdGggc2VhbCwgSSBzYXcgdW5kZXIgdGhlIGFsdGFyIHRoZSBzb3VscyBvZiB0aGVtIHRoYXQgd2VyZSBzbGFpbiBmb3IgdGhlIHdvcmQgb2YgR29kLCBhbmQgZm9yIHRoZSB0ZXN0aW1vbnkgd2hpY2ggdGhleSBoZWxkOgpBbmQgdGhleSBjcmllZCB3aXRoIGEgbG91ZCB2b2ljZSwgc2F5aW5nLCBIb3cgbG9uZywgTyBMb3JkLCBob2x5IGFuZCB0cnVlLCBkb3N0IHRob3Ugbm90IGp1ZGdlIGFuZCBhdmVuZ2Ugb3VyIGJsb29kIG9uIHRoZW0gdGhhdCBkd2VsbCBvbiB0aGUgZWFydGg/CkFuZCB3aGl0ZSByb2JlcyB3ZXJlIGdpdmVuIHVudG8gZXZlcnkgb25lIG9mIHRoZW07IGFuZCBpdCB3YXMgc2FpZCB1bnRvIHRoZW0sIHRoYXQgdGhleSBzaG91bGQgcmVzdCB5ZXQgZm9yIGEgbGl0dGxlIHNlYXNvbiwgdW50aWwgdGhlaXIgZmVsbG93c2VydmFudHMgYWxzbyBhbmQgdGhlaXIgYnJldGhyZW4sIHRoYXQgc2hvdWxkIGJlIGtpbGxlZCBhcyB0aGV5IHdlcmUsIHNob3VsZCBiZSBmdWxmaWxsZWQuCkFuZCBJIGJlaGVsZCB3aGVuIGhlIGhhZCBvcGVuZWQgdGhlIHNpeHRoIHNlYWwsIGFuZCwgbG8sIHRoZXJlIHdhcyBhIGdyZWF0IGVhcnRocXVha2U7IGFuZCB0aGUgc3VuIGJlY2FtZSBibGFjayBhcyBzYWNrY2xvdGggb2YgaGFpciwgYW5kIHRoZSBtb29uIGJlY2FtZSBhcyBibG9vZDsKQW5kIHRoZSBzdGFycyBvZiBoZWF2ZW4gZmVsbCB1bnRvIHRoZSBlYXJ0aCwgZXZlbiBhcyBhIGZpZyB0cmVlIGNhc3RldGggaGVyIHVudGltZWx5IGZpZ3MsIHdoZW4gc2hlIGlzIHNoYWtlbiBvZiBhIG1pZ2h0eSB3aW5kLgpBbmQgdGhlIGhlYXZlbiBkZXBhcnRlZCBhcyBhIHNjcm9sbCB3aGVuIGl0IGlzIHJvbGxlZCB0b2dldGhlcjsgYW5kIGV2ZXJ5IG1vdW50YWluIGFuZCBpc2xhbmQgd2VyZSBtb3ZlZCBvdXQgb2YgdGhlaXIgcGxhY2VzLgpBbmQgdGhlIGtpbmdzIG9mIHRoZSBlYXJ0aCwgYW5kIHRoZSBncmVhdCBtZW4sIGFuZCB0aGUgcmljaCBtZW4sIGFuZCB0aGUgY2hpZWYgY2FwdGFpbnMsIGFuZCB0aGUgbWlnaHR5IG1lbiwgYW5kIGV2ZXJ5IGJvbmRtYW4sIGFuZCBldmVyeSBmcmVlIG1hbiwgaGlkIHRoZW1zZWx2ZXMgaW4gdGhlIGRlbnMgYW5kIGluIHRoZSByb2NrcyBvZiB0aGUgbW91bnRhaW5zOwpBbmQgc2FpZCB0byB0aGUgbW91bnRhaW5zIGFuZCByb2NrcywgRmFsbCBvbiB1cywgYW5kIGhpZGUgdXMgZnJvbSB0aGUgZmFjZSBvZiBoaW0gdGhhdCBzaXR0ZXRoIG9uIHRoZSB0aHJvbmUsIGFuZCBmcm9tIHRoZSB3cmF0aCBvZiB0aGUgTGFtYjoKRm9yIHRoZSBncmVhdCBkYXkgb2YgaGlzIHdyYXRoIGlzIGNvbWU7IGFuZCB3aG8gc2hhbGwgYmUgYWJsZSB0byBzdGFuZD8KQW5kIGFmdGVyIHRoZXNlIHRoaW5ncyBJIHNhdyBmb3VyIGFuZ2VscyBzdGFuZGluZyBvbiB0aGUgZm91ciBjb3JuZXJzIG9mIHRoZSBlYXJ0aCwgaG9sZGluZyB0aGUgZm91ciB3aW5kcyBvZiB0aGUgZWFydGgsIHRoYXQgdGhlIHdpbmQgc2hvdWxkIG5vdCBibG93IG9uIHRoZSBlYXJ0aCwgbm9yIG9uIHRoZSBzZWEsIG5vciBvbiBhbnkgdHJlZS4KQW5kIEkgc2F3IGFub3RoZXIgYW5nZWwgYXNjZW5kaW5nIGZyb20gdGhlIGVhc3QsIGhhdmluZyB0aGUgc2VhbCBvZiB0aGUgbGl2aW5nIEdvZDogYW5kIGhlIGNyaWVkIHdpdGggYSBsb3VkIHZvaWNlIHRvIHRoZSBmb3VyIGFuZ2VscywgdG8gd2hvbSBpdCB3YXMgZ2l2ZW4gdG8gaHVydCB0aGUgZWFydGggYW5kIHRoZSBzZWEsClNheWluZywgSHVydCBub3QgdGhlIGVhcnRoLCBuZWl0aGVyIHRoZSBzZWEsIG5vciB0aGUgdHJlZXMsIHRpbGwgd2UgaGF2ZSBzZWFsZWQgdGhlIHNlcnZhbnRzIG9mIG91ciBHb2QgaW4gdGhlaXIgZm9yZWhlYWRzLgpBbmQgSSBoZWFyZCB0aGUgbnVtYmVyIG9mIHRoZW0gd2hpY2ggd2VyZSBzZWFsZWQ6IGFuZCB0aGVyZSB3ZXJlIHNlYWxlZCBhbiBodW5kcmVkIGFuZCBmb3J0eSBhbmQgZm91ciB0aG91c2FuZCBvZiBhbGwgdGhlIHRyaWJlcyBvZiB0aGUgY2hpbGRyZW4gb2YgSXNyYWVsLgpPZiB0aGUgdHJpYmUgb2YgSnVkYSB3ZXJlIHNlYWxlZCB0d2VsdmUgdGhvdXNhbmQuIE9mIHRoZSB0cmliZSBvZiBSZXViZW4gd2VyZSBzZWFsZWQgdHdlbHZlIHRob3VzYW5kLiBPZiB0aGUgdHJpYmUgb2YgR2FkIHdlcmUgc2VhbGVkIHR3ZWx2ZSB0aG91c2FuZC4KT2YgdGhlIHRyaWJlIG9mIEFzZXIgd2VyZSBzZWFsZWQgdHdlbHZlIHRob3VzYW5kLiBPZiB0aGUgdHJpYmUgb2YgTmVwaHRoYWxpbSB3ZXJlIHNlYWxlZCB0d2VsdmUgdGhvdXNhbmQuIE9mIHRoZSB0cmliZSBvZiBNYW5hc3NlcyB3ZXJlIHNlYWxlZCB0d2VsdmUgdGhvdXNhbmQuCk9mIHRoZSB0cmliZSBvZiBTaW1lb24gd2VyZSBzZWFsZWQgdHdlbHZlIHRob3VzYW5kLiBPZiB0aGUgdHJpYmUgb2YgTGV2aSB3ZXJlIHNlYWxlZCB0d2VsdmUgdGhvdXNhbmQuIE9mIHRoZSB0cmliZSBvZiBJc3NhY2hhciB3ZXJlIHNlYWxlZCB0d2VsdmUgdGhvdXNhbmQuCk9mIHRoZSB0cmliZSBvZiBaYWJ1bG9uIHdlcmUgc2VhbGVkIHR3ZWx2ZSB0aG91c2FuZC4gT2YgdGhlIHRyaWJlIG9mIEpvc2VwaCB3ZXJlIHNlYWxlZCB0d2VsdmUgdGhvdXNhbmQuIE9mIHRoZSB0cmliZSBvZiBCZW5qYW1pbiB3ZXJlIHNlYWxlZCB0d2VsdmUgdGhvdXNhbmQuCkFmdGVyIHRoaXMgSSBiZWhlbGQsIGFuZCwgbG8sIGEgZ3JlYXQgbXVsdGl0dWRlLCB3aGljaCBubyBtYW4gY291bGQgbnVtYmVyLCBvZiBhbGwgbmF0aW9ucywgYW5kIGtpbmRyZWRzLCBhbmQgcGVvcGxlLCBhbmQgdG9uZ3Vlcywgc3Rvb2QgYmVmb3JlIHRoZSB0aHJvbmUsIGFuZCBiZWZvcmUgdGhlIExhbWIsIGNsb3RoZWQgd2l0aCB3aGl0ZSByb2JlcywgYW5kIHBhbG1zIGluIHRoZWlyIGhhbmRzOwpBbmQgY3JpZWQgd2l0aCBhIGxvdWQgdm9pY2UsIHNheWluZywgU2FsdmF0aW9uIHRvIG91ciBHb2Qgd2hpY2ggc2l0dGV0aCB1cG9uIHRoZSB0aHJvbmUsIGFuZCB1bnRvIHRoZSBMYW1iLgpBbmQgYWxsIHRoZSBhbmdlbHMgc3Rvb2Qgcm91bmQgYWJvdXQgdGhlIHRocm9uZSwgYW5kIGFib3V0IHRoZSBlbGRlcnMgYW5kIHRoZSBmb3VyIGJlYXN0cywgYW5kIGZlbGwgYmVmb3JlIHRoZSB0aHJvbmUgb24gdGhlaXIgZmFjZXMsIGFuZCB3b3JzaGlwcGVkIEdvZCwKU2F5aW5nLCBBbWVuOiBCbGVzc2luZywgYW5kIGdsb3J5LCBhbmQgd2lzZG9tLCBhbmQgdGhhbmtzZ2l2aW5nLCBhbmQgaG9ub3VyLCBhbmQgcG93ZXIsIGFuZCBtaWdodCwgYmUgdW50byBvdXIgR29kIGZvciBldmVyIGFuZCBldmVyLiBBbWVuLgpBbmQgb25lIG9mIHRoZSBlbGRlcnMgYW5zd2VyZWQsIHNheWluZyB1bnRvIG1lLCBXaGF0IGFyZSB0aGVzZSB3aGljaCBhcmUgYXJyYXllZCBpbiB3aGl0ZSByb2Jlcz8gYW5kIHdoZW5jZSBjYW1lIHRoZXk/CkFuZCBJIHNhaWQgdW50byBoaW0sIFNpciwgdGhvdSBrbm93ZXN0LiBBbmQgaGUgc2FpZCB0byBtZSwgVGhlc2UgYXJlIHRoZXkgd2hpY2ggY2FtZSBvdXQgb2YgZ3JlYXQgdHJpYnVsYXRpb24sIGFuZCBoYXZlIHdhc2hlZCB0aGVpciByb2JlcywgYW5kIG1hZGUgdGhlbSB3aGl0ZSBpbiB0aGUgYmxvb2Qgb2YgdGhlIExhbWIuClRoZXJlZm9yZSBhcmUgdGhleSBiZWZvcmUgdGhlIHRocm9uZSBvZiBHb2QsIGFuZCBzZXJ2ZSBoaW0gZGF5IGFuZCBuaWdodCBpbiBoaXMgdGVtcGxlOiBhbmQgaGUgdGhhdCBzaXR0ZXRoIG9uIHRoZSB0aHJvbmUgc2hhbGwgZHdlbGwgYW1vbmcgdGhlbS4KVGhleSBzaGFsbCBodW5nZXIgbm8gbW9yZSwgbmVpdGhlciB0aGlyc3QgYW55IG1vcmU7IG5laXRoZXIgc2hhbGwgdGhlIHN1biBsaWdodCBvbiB0aGVtLCBub3IgYW55IGhlYXQuCkZvciB0aGUgTGFtYiB3aGljaCBpcyBpbiB0aGUgbWlkc3Qgb2YgdGhlIHRocm9uZSBzaGFsbCBmZWVkIHRoZW0sIGFuZCBzaGFsbCBsZWFkIHRoZW0gdW50byBsaXZpbmcgZm91bnRhaW5zIG9mIHdhdGVyczogYW5kIEdvZCBzaGFsbCB3aXBlIGF3YXkgYWxsIHRlYXJzIGZyb20gdGhlaXIgZXllcy4KQW5kIHdoZW4gaGUgaGFkIG9wZW5lZCB0aGUgc2V2ZW50aCBzZWFsLCB0aGVyZSB3YXMgc2lsZW5jZSBpbiBoZWF2ZW4gYWJvdXQgdGhlIHNwYWNlIG9mIGhhbGYgYW4gaG91ci4KQW5kIEkgc2F3IHRoZSBzZXZlbiBhbmdlbHMgd2hpY2ggc3Rvb2QgYmVmb3JlIEdvZDsgYW5kIHRvIHRoZW0gd2VyZSBnaXZlbiBzZXZlbiB0cnVtcGV0cy4KQW5kIGFub3RoZXIgYW5nZWwgY2FtZSBhbmQgc3Rvb2QgYXQgdGhlIGFsdGFyLCBoYXZpbmcgYSBnb2xkZW4gY2Vuc2VyOyBhbmQgdGhlcmUgd2FzIGdpdmVuIHVudG8gaGltIG11Y2ggaW5jZW5zZSwgdGhhdCBoZSBzaG91bGQgb2ZmZXIgaXQgd2l0aCB0aGUgcHJheWVycyBvZiBhbGwgc2FpbnRzIHVwb24gdGhlIGdvbGRlbiBhbHRhciB3aGljaCB3YXMgYmVmb3JlIHRoZSB0aHJvbmUuCkFuZCB0aGUgc21va2Ugb2YgdGhlIGluY2Vuc2UsIHdoaWNoIGNhbWUgd2l0aCB0aGUgcHJheWVycyBvZiB0aGUgc2FpbnRzLCBhc2NlbmRlZCB1cCBiZWZvcmUgR29kIG91dCBvZiB0aGUgYW5nZWwncyBoYW5kLgpBbmQgdGhlIGFuZ2VsIHRvb2sgdGhlIGNlbnNlciwgYW5kIGZpbGxlZCBpdCB3aXRoIGZpcmUgb2YgdGhlIGFsdGFyLCBhbmQgY2FzdCBpdCBpbnRvIHRoZSBlYXJ0aDogYW5kIHRoZXJlIHdlcmUgdm9pY2VzLCBhbmQgdGh1bmRlcmluZ3MsIGFuZCBsaWdodG5pbmdzLCBhbmQgYW4gZWFydGhxdWFrZS4KQW5kIHRoZSBzZXZlbiBhbmdlbHMgd2hpY2ggaGFkIHRoZSBzZXZlbiB0cnVtcGV0cyBwcmVwYXJlZCB0aGVtc2VsdmVzIHRvIHNvdW5kLgpUaGUgZmlyc3QgYW5nZWwgc291bmRlZCwgYW5kIHRoZXJlIGZvbGxvd2VkIGhhaWwgYW5kIGZpcmUgbWluZ2xlZCB3aXRoIGJsb29kLCBhbmQgdGhleSB3ZXJlIGNhc3QgdXBvbiB0aGUgZWFydGg6IGFuZCB0aGUgdGhpcmQgcGFydCBvZiB0cmVlcyB3YXMgYnVybnQgdXAsIGFuZCBhbGwgZ3JlZW4gZ3Jhc3Mgd2FzIGJ1cm50IHVwLgpBbmQgdGhlIHNlY29uZCBhbmdlbCBzb3VuZGVkLCBhbmQgYXMgaXQgd2VyZSBhIGdyZWF0IG1vdW50YWluIGJ1cm5pbmcgd2l0aCBmaXJlIHdhcyBjYXN0IGludG8gdGhlIHNlYTogYW5kIHRoZSB0aGlyZCBwYXJ0IG9mIHRoZSBzZWEgYmVjYW1lIGJsb29kOwpBbmQgdGhlIHRoaXJkIHBhcnQgb2YgdGhlIGNyZWF0dXJlcyB3aGljaCB3ZXJlIGluIHRoZSBzZWEsIGFuZCBoYWQgbGlmZSwgZGllZDsgYW5kIHRoZSB0aGlyZCBwYXJ0IG9mIHRoZSBzaGlwcyB3ZXJlIGRlc3Ryb3llZC4KQW5kIHRoZSB0aGlyZCBhbmdlbCBzb3VuZGVkLCBhbmQgdGhlcmUgZmVsbCBhIGdyZWF0IHN0YXIgZnJvbSBoZWF2ZW4sIGJ1cm5pbmcgYXMgaXQgd2VyZSBhIGxhbXAsIGFuZCBpdCBmZWxsIHVwb24gdGhlIHRoaXJkIHBhcnQgb2YgdGhlIHJpdmVycywgYW5kIHVwb24gdGhlIGZvdW50YWlucyBvZiB3YXRlcnM7CkFuZCB0aGUgbmFtZSBvZiB0aGUgc3RhciBpcyBjYWxsZWQgV29ybXdvb2Q6IGFuZCB0aGUgdGhpcmQgcGFydCBvZiB0aGUgd2F0ZXJzIGJlY2FtZSB3b3Jtd29vZDsgYW5kIG1hbnkgbWVuIGRpZWQgb2YgdGhlIHdhdGVycywgYmVjYXVzZSB0aGV5IHdlcmUgbWFkZSBiaXR0ZXIuCkFuZCB0aGUgZm91cnRoIGFuZ2VsIHNvdW5kZWQsIGFuZCB0aGUgdGhpcmQgcGFydCBvZiB0aGUgc3VuIHdhcyBzbWl0dGVuLCBhbmQgdGhlIHRoaXJkIHBhcnQgb2YgdGhlIG1vb24sIGFuZCB0aGUgdGhpcmQgcGFydCBvZiB0aGUgc3RhcnM7IHNvIGFzIHRoZSB0aGlyZCBwYXJ0IG9mIHRoZW0gd2FzIGRhcmtlbmVkLCBhbmQgdGhlIGRheSBzaG9uZSBub3QgZm9yIGEgdGhpcmQgcGFydCBvZiBpdCwgYW5kIHRoZSBuaWdodCBsaWtld2lzZS4KQW5kIEkgYmVoZWxkLCBhbmQgaGVhcmQgYW4gYW5nZWwgZmx5aW5nIHRocm91Z2ggdGhlIG1pZHN0IG9mIGhlYXZlbiwgc2F5aW5nIHdpdGggYSBsb3VkIHZvaWNlLCBXb2UsIHdvZSwgd29lLCB0byB0aGUgaW5oYWJpdGVycyBvZiB0aGUgZWFydGggYnkgcmVhc29uIG9mIHRoZSBvdGhlciB2b2ljZXMgb2YgdGhlIHRydW1wZXQgb2YgdGhlIHRocmVlIGFuZ2Vscywgd2hpY2ggYXJlIHlldCB0byBzb3VuZCEKQW5kIHRoZSBmaWZ0aCBhbmdlbCBzb3VuZGVkLCBhbmQgSSBzYXcgYSBzdGFyIGZhbGwgZnJvbSBoZWF2ZW4gdW50byB0aGUgZWFydGg6IGFuZCB0byBoaW0gd2FzIGdpdmVuIHRoZSBrZXkgb2YgdGhlIGJvdHRvbWxlc3MgcGl0LgpBbmQgaGUgb3BlbmVkIHRoZSBib3R0b21sZXNzIHBpdDsgYW5kIHRoZXJlIGFyb3NlIGEgc21va2Ugb3V0IG9mIHRoZSBwaXQsIGFzIHRoZSBzbW9rZSBvZiBhIGdyZWF0IGZ1cm5hY2U7IGFuZCB0aGUgc3VuIGFuZCB0aGUgYWlyIHdlcmUgZGFya2VuZWQgYnkgcmVhc29uIG9mIHRoZSBzbW9rZSBvZiB0aGUgcGl0LgpBbmQgdGhlcmUgY2FtZSBvdXQgb2YgdGhlIHNtb2tlIGxvY3VzdHMgdXBvbiB0aGUgZWFydGg6IGFuZCB1bnRvIHRoZW0gd2FzIGdpdmVuIHBvd2VyLCBhcyB0aGUgc2NvcnBpb25zIG9mIHRoZSBlYXJ0aCBoYXZlIHBvd2VyLgpBbmQgaXQgd2FzIGNvbW1hbmRlZCB0aGVtIHRoYXQgdGhleSBzaG91bGQgbm90IGh1cnQgdGhlIGdyYXNzIG9mIHRoZSBlYXJ0aCwgbmVpdGhlciBhbnkgZ3JlZW4gdGhpbmcsIG5laXRoZXIgYW55IHRyZWU7IGJ1dCBvbmx5IHRob3NlIG1lbiB3aGljaCBoYXZlIG5vdCB0aGUgc2VhbCBvZiBHb2QgaW4gdGhlaXIgZm9yZWhlYWRzLgpBbmQgdG8gdGhlbSBpdCB3YXMgZ2l2ZW4gdGhhdCB0aGV5IHNob3VsZCBub3Qga2lsbCB0aGVtLCBidXQgdGhhdCB0aGV5IHNob3VsZCBiZSB0b3JtZW50ZWQgZml2ZSBtb250aHM6IGFuZCB0aGVpciB0b3JtZW50IHdhcyBhcyB0aGUgdG9ybWVudCBvZiBhIHNjb3JwaW9uLCB3aGVuIGhlIHN0cmlrZXRoIGEgbWFuLgpBbmQgaW4gdGhvc2UgZGF5cyBzaGFsbCBtZW4gc2VlayBkZWF0aCwgYW5kIHNoYWxsIG5vdCBmaW5kIGl0OyBhbmQgc2hhbGwgZGVzaXJlIHRvIGRpZSwgYW5kIGRlYXRoIHNoYWxsIGZsZWUgZnJvbSB0aGVtLgpBbmQgdGhlIHNoYXBlcyBvZiB0aGUgbG9jdXN0cyB3ZXJlIGxpa2UgdW50byBob3JzZXMgcHJlcGFyZWQgdW50byBiYXR0bGU7IGFuZCBvbiB0aGVpciBoZWFkcyB3ZXJlIGFzIGl0IHdlcmUgY3Jvd25zIGxpa2UgZ29sZCwgYW5kIHRoZWlyIGZhY2VzIHdlcmUgYXMgdGhlIGZhY2VzIG9mIG1lbi4KQW5kIHRoZXkgaGFkIGhhaXIgYXMgdGhlIGhhaXIgb2Ygd29tZW4sIGFuZCB0aGVpciB0ZWV0aCB3ZXJlIGFzIHRoZSB0ZWV0aCBvZiBsaW9ucy4KQW5kIHRoZXkgaGFkIGJyZWFzdHBsYXRlcywgYXMgaXQgd2VyZSBicmVhc3RwbGF0ZXMgb2YgaXJvbjsgYW5kIHRoZSBzb3VuZCBvZiB0aGVpciB3aW5ncyB3YXMgYXMgdGhlIHNvdW5kIG9mIGNoYXJpb3RzIG9mIG1hbnkgaG9yc2VzIHJ1bm5pbmcgdG8gYmF0dGxlLgpBbmQgdGhleSBoYWQgdGFpbHMgbGlrZSB1bnRvIHNjb3JwaW9ucywgYW5kIHRoZXJlIHdlcmUgc3RpbmdzIGluIHRoZWlyIHRhaWxzOiBhbmQgdGhlaXIgcG93ZXIgd2FzIHRvIGh1cnQgbWVuIGZpdmUgbW9udGhzLgpBbmQgdGhleSBoYWQgYSBraW5nIG92ZXIgdGhlbSwgd2hpY2ggaXMgdGhlIGFuZ2VsIG9mIHRoZSBib3R0b21sZXNzIHBpdCwgd2hvc2UgbmFtZSBpbiB0aGUgSGVicmV3IHRvbmd1ZSBpcyBBYmFkZG9uLCBidXQgaW4gdGhlIEdyZWVrIHRvbmd1ZSBoYXRoIGhpcyBuYW1lIEFwb2xseW9uLgpPbmUgd29lIGlzIHBhc3Q7IGFuZCwgYmVob2xkLCB0aGVyZSBjb21lIHR3byB3b2VzIG1vcmUgaGVyZWFmdGVyLgpBbmQgdGhlIHNpeHRoIGFuZ2VsIHNvdW5kZWQsIGFuZCBJIGhlYXJkIGEgdm9pY2UgZnJvbSB0aGUgZm91ciBob3JucyBvZiB0aGUgZ29sZGVuIGFsdGFyIHdoaWNoIGlzIGJlZm9yZSBHb2QsClNheWluZyB0byB0aGUgc2l4dGggYW5nZWwgd2hpY2ggaGFkIHRoZSB0cnVtcGV0LCBMb29zZSB0aGUgZm91ciBhbmdlbHMgd2hpY2ggYXJlIGJvdW5kIGluIHRoZSBncmVhdCByaXZlciBFdXBocmF0ZXMuCkFuZCB0aGUgZm91ciBhbmdlbHMgd2VyZSBsb29zZWQsIHdoaWNoIHdlcmUgcHJlcGFyZWQgZm9yIGFuIGhvdXIsIGFuZCBhIGRheSwgYW5kIGEgbW9udGgsIGFuZCBhIHllYXIsIGZvciB0byBzbGF5IHRoZSB0aGlyZCBwYXJ0IG9mIG1lbi4KQW5kIHRoZSBudW1iZXIgb2YgdGhlIGFybXkgb2YgdGhlIGhvcnNlbWVuIHdlcmUgdHdvIGh1bmRyZWQgdGhvdXNhbmQgdGhvdXNhbmQ6IGFuZCBJIGhlYXJkIHRoZSBudW1iZXIgb2YgdGhlbS4KQW5kIHRodXMgSSBzYXcgdGhlIGhvcnNlcyBpbiB0aGUgdmlzaW9uLCBhbmQgdGhlbSB0aGF0IHNhdCBvbiB0aGVtLCBoYXZpbmcgYnJlYXN0cGxhdGVzIG9mIGZpcmUsIGFuZCBvZiBqYWNpbnRoLCBhbmQgYnJpbXN0b25lOiBhbmQgdGhlIGhlYWRzIG9mIHRoZSBob3JzZXMgd2VyZSBhcyB0aGUgaGVhZHMgb2YgbGlvbnM7IGFuZCBvdXQgb2YgdGhlaXIgbW91dGhzIGlzc3VlZCBmaXJlIGFuZCBzbW9rZSBhbmQgYnJpbXN0b25lLgpCeSB0aGVzZSB0aHJlZSB3YXMgdGhlIHRoaXJkIHBhcnQgb2YgbWVuIGtpbGxlZCwgYnkgdGhlIGZpcmUsIGFuZCBieSB0aGUgc21va2UsIGFuZCBieSB0aGUgYnJpbXN0b25lLCB3aGljaCBpc3N1ZWQgb3V0IG9mIHRoZWlyIG1vdXRocy4KRm9yIHRoZWlyIHBvd2VyIGlzIGluIHRoZWlyIG1vdXRoLCBhbmQgaW4gdGhlaXIgdGFpbHM6IGZvciB0aGVpciB0YWlscyB3ZXJlIGxpa2UgdW50byBzZXJwZW50cywgYW5kIGhhZCBoZWFkcywgYW5kIHdpdGggdGhlbSB0aGV5IGRvIGh1cnQuCkFuZCB0aGUgcmVzdCBvZiB0aGUgbWVuIHdoaWNoIHdlcmUgbm90IGtpbGxlZCBieSB0aGVzZSBwbGFndWVzIHlldCByZXBlbnRlZCBub3Qgb2YgdGhlIHdvcmtzIG9mIHRoZWlyIGhhbmRzLCB0aGF0IHRoZXkgc2hvdWxkIG5vdCB3b3JzaGlwIGRldmlscywgYW5kIGlkb2xzIG9mIGdvbGQsIGFuZCBzaWx2ZXIsIGFuZCBicmFzcywgYW5kIHN0b25lLCBhbmQgb2Ygd29vZDogd2hpY2ggbmVpdGhlciBjYW4gc2VlLCBub3IgaGVhciwgbm9yIHdhbGs6Ck5laXRoZXIgcmVwZW50ZWQgdGhleSBvZiB0aGVpciBtdXJkZXJzLCBub3Igb2YgdGhlaXIgc29yY2VyaWVzLCBub3Igb2YgdGhlaXIgZm9ybmljYXRpb24sIG5vciBvZiB0aGVpciB0aGVmdHMuCkFuZCBJIHNhdyBhbm90aGVyIG1pZ2h0eSBhbmdlbCBjb21lIGRvd24gZnJvbSBoZWF2ZW4sIGNsb3RoZWQgd2l0aCBhIGNsb3VkOiBhbmQgYSByYWluYm93IHdhcyB1cG9uIGhpcyBoZWFkLCBhbmQgaGlzIGZhY2Ugd2FzIGFzIGl0IHdlcmUgdGhlIHN1biwgYW5kIGhpcyBmZWV0IGFzIHBpbGxhcnMgb2YgZmlyZToKQW5kIGhlIGhhZCBpbiBoaXMgaGFuZCBhIGxpdHRsZSBib29rIG9wZW46IGFuZCBoZSBzZXQgaGlzIHJpZ2h0IGZvb3QgdXBvbiB0aGUgc2VhLCBhbmQgaGlzIGxlZnQgZm9vdCBvbiB0aGUgZWFydGgsCkFuZCBjcmllZCB3aXRoIGEgbG91ZCB2b2ljZSwgYXMgd2hlbiBhIGxpb24gcm9hcmV0aDogYW5kIHdoZW4gaGUgaGFkIGNyaWVkLCBzZXZlbiB0aHVuZGVycyB1dHRlcmVkIHRoZWlyIHZvaWNlcy4KQW5kIHdoZW4gdGhlIHNldmVuIHRodW5kZXJzIGhhZCB1dHRlcmVkIHRoZWlyIHZvaWNlcywgSSB3YXMgYWJvdXQgdG8gd3JpdGU6IGFuZCBJIGhlYXJkIGEgdm9pY2UgZnJvbSBoZWF2ZW4gc2F5aW5nIHVudG8gbWUsIFNlYWwgdXAgdGhvc2UgdGhpbmdzIHdoaWNoIHRoZSBzZXZlbiB0aHVuZGVycyB1dHRlcmVkLCBhbmQgd3JpdGUgdGhlbSBub3QuCkFuZCB0aGUgYW5nZWwgd2hpY2ggSSBzYXcgc3RhbmQgdXBvbiB0aGUgc2VhIGFuZCB1cG9uIHRoZSBlYXJ0aCBsaWZ0ZWQgdXAgaGlzIGhhbmQgdG8gaGVhdmVuLApBbmQgc3dhcmUgYnkgaGltIHRoYXQgbGl2ZXRoIGZvciBldmVyIGFuZCBldmVyLCB3aG8gY3JlYXRlZCBoZWF2ZW4sIGFuZCB0aGUgdGhpbmdzIHRoYXQgdGhlcmVpbiBhcmUsIGFuZCB0aGUgZWFydGgsIGFuZCB0aGUgdGhpbmdzIHRoYXQgdGhlcmVpbiBhcmUsIGFuZCB0aGUgc2VhLCBhbmQgdGhlIHRoaW5ncyB3aGljaCBhcmUgdGhlcmVpbiwgdGhhdCB0aGVyZSBzaG91bGQgYmUgdGltZSBubyBsb25nZXI6CkJ1dCBpbiB0aGUgZGF5cyBvZiB0aGUgdm9pY2Ugb2YgdGhlIHNldmVudGggYW5nZWwsIHdoZW4gaGUgc2hhbGwgYmVnaW4gdG8gc291bmQsIHRoZSBteXN0ZXJ5IG9mIEdvZCBzaG91bGQgYmUgZmluaXNoZWQsIGFzIGhlIGhhdGggZGVjbGFyZWQgdG8gaGlzIHNlcnZhbnRzIHRoZSBwcm9waGV0cy4KQW5kIHRoZSB2b2ljZSB3aGljaCBJIGhlYXJkIGZyb20gaGVhdmVuIHNwYWtlIHVudG8gbWUgYWdhaW4sIGFuZCBzYWlkLCBHbyBhbmQgdGFrZSB0aGUgbGl0dGxlIGJvb2sgd2hpY2ggaXMgb3BlbiBpbiB0aGUgaGFuZCBvZiB0aGUgYW5nZWwgd2hpY2ggc3RhbmRldGggdXBvbiB0aGUgc2VhIGFuZCB1cG9uIHRoZSBlYXJ0aC4KQW5kIEkgd2VudCB1bnRvIHRoZSBhbmdlbCwgYW5kIHNhaWQgdW50byBoaW0sIEdpdmUgbWUgdGhlIGxpdHRsZSBib29rLiBBbmQgaGUgc2FpZCB1bnRvIG1lLCBUYWtlIGl0LCBhbmQgZWF0IGl0IHVwOyBhbmQgaXQgc2hhbGwgbWFrZSB0aHkgYmVsbHkgYml0dGVyLCBidXQgaXQgc2hhbGwgYmUgaW4gdGh5IG1vdXRoIHN3ZWV0IGFzIGhvbmV5LgpBbmQgSSB0b29rIHRoZSBsaXR0bGUgYm9vayBvdXQgb2YgdGhlIGFuZ2VsJ3MgaGFuZCwgYW5kIGF0ZSBpdCB1cDsgYW5kIGl0IHdhcyBpbiBteSBtb3V0aCBzd2VldCBhcyBob25leTogYW5kIGFzIHNvb24gYXMgSSBoYWQgZWF0ZW4gaXQsIG15IGJlbGx5IHdhcyBiaXR0ZXIuCkFuZCBoZSBzYWlkIHVudG8gbWUsIFRob3UgbXVzdCBwcm9waGVzeSBhZ2FpbiBiZWZvcmUgbWFueSBwZW9wbGVzLCBhbmQgbmF0aW9ucywgYW5kIHRvbmd1ZXMsIGFuZCBraW5ncy4KQW5kIHRoZXJlIHdhcyBnaXZlbiBtZSBhIHJlZWQgbGlrZSB1bnRvIGEgcm9kOiBhbmQgdGhlIGFuZ2VsIHN0b29kLCBzYXlpbmcsIFJpc2UsIGFuZCBtZWFzdXJlIHRoZSB0ZW1wbGUgb2YgR29kLCBhbmQgdGhlIGFsdGFyLCBhbmQgdGhlbSB0aGF0IHdvcnNoaXAgdGhlcmVpbi4KQnV0IHRoZSBjb3VydCB3aGljaCBpcyB3aXRob3V0IHRoZSB0ZW1wbGUgbGVhdmUgb3V0LCBhbmQgbWVhc3VyZSBpdCBub3Q7IGZvciBpdCBpcyBnaXZlbiB1bnRvIHRoZSBHZW50aWxlczogYW5kIHRoZSBob2x5IGNpdHkgc2hhbGwgdGhleSB0cmVhZCB1bmRlciBmb290IGZvcnR5IGFuZCB0d28gbW9udGhzLgpBbmQgSSB3aWxsIGdpdmUgcG93ZXIgdW50byBteSB0d28gd2l0bmVzc2VzLCBhbmQgdGhleSBzaGFsbCBwcm9waGVzeSBhIHRob3VzYW5kIHR3byBodW5kcmVkIGFuZCB0aHJlZXNjb3JlIGRheXMsIGNsb3RoZWQgaW4gc2Fja2Nsb3RoLgpUaGVzZSBhcmUgdGhlIHR3byBvbGl2ZSB0cmVlcywgYW5kIHRoZSB0d28gY2FuZGxlc3RpY2tzIHN0YW5kaW5nIGJlZm9yZSB0aGUgR29kIG9mIHRoZSBlYXJ0aC4KQW5kIGlmIGFueSBtYW4gd2lsbCBodXJ0IHRoZW0sIGZpcmUgcHJvY2VlZGV0aCBvdXQgb2YgdGhlaXIgbW91dGgsIGFuZCBkZXZvdXJldGggdGhlaXIgZW5lbWllczogYW5kIGlmIGFueSBtYW4gd2lsbCBodXJ0IHRoZW0sIGhlIG11c3QgaW4gdGhpcyBtYW5uZXIgYmUga2lsbGVkLgpUaGVzZSBoYXZlIHBvd2VyIHRvIHNodXQgaGVhdmVuLCB0aGF0IGl0IHJhaW4gbm90IGluIHRoZSBkYXlzIG9mIHRoZWlyIHByb3BoZWN5OiBhbmQgaGF2ZSBwb3dlciBvdmVyIHdhdGVycyB0byB0dXJuIHRoZW0gdG8gYmxvb2QsIGFuZCB0byBzbWl0ZSB0aGUgZWFydGggd2l0aCBhbGwgcGxhZ3VlcywgYXMgb2Z0ZW4gYXMgdGhleSB3aWxsLgpBbmQgd2hlbiB0aGV5IHNoYWxsIGhhdmUgZmluaXNoZWQgdGhlaXIgdGVzdGltb255LCB0aGUgYmVhc3QgdGhhdCBhc2NlbmRldGggb3V0IG9mIHRoZSBib3R0b21sZXNzIHBpdCBzaGFsbCBtYWtlIHdhciBhZ2FpbnN0IHRoZW0sIGFuZCBzaGFsbCBvdmVyY29tZSB0aGVtLCBhbmQga2lsbCB0aGVtLgpBbmQgdGhlaXIgZGVhZCBib2RpZXMgc2hhbGwgbGllIGluIHRoZSBzdHJlZXQgb2YgdGhlIGdyZWF0IGNpdHksIHdoaWNoIHNwaXJpdHVhbGx5IGlzIGNhbGxlZCBTb2RvbSBhbmQgRWd5cHQsIHdoZXJlIGFsc28gb3VyIExvcmQgd2FzIGNydWNpZmllZC4KQW5kIHRoZXkgb2YgdGhlIHBlb3BsZSBhbmQga2luZHJlZHMgYW5kIHRvbmd1ZXMgYW5kIG5hdGlvbnMgc2hhbGwgc2VlIHRoZWlyIGRlYWQgYm9kaWVzIHRocmVlIGRheXMgYW5kIGFuIGhhbGYsIGFuZCBzaGFsbCBub3Qgc3VmZmVyIHRoZWlyIGRlYWQgYm9kaWVzIHRvIGJlIHB1dCBpbiBncmF2ZXMuCkFuZCB0aGV5IHRoYXQgZHdlbGwgdXBvbiB0aGUgZWFydGggc2hhbGwgcmVqb2ljZSBvdmVyIHRoZW0sIGFuZCBtYWtlIG1lcnJ5LCBhbmQgc2hhbGwgc2VuZCBnaWZ0cyBvbmUgdG8gYW5vdGhlcjsgYmVjYXVzZSB0aGVzZSB0d28gcHJvcGhldHMgdG9ybWVudGVkIHRoZW0gdGhhdCBkd2VsdCBvbiB0aGUgZWFydGguCkFuZCBhZnRlciB0aHJlZSBkYXlzIGFuZCBhbiBoYWxmIHRoZSBzcGlyaXQgb2YgbGlmZSBmcm9tIEdvZCBlbnRlcmVkIGludG8gdGhlbSwgYW5kIHRoZXkgc3Rvb2QgdXBvbiB0aGVpciBmZWV0OyBhbmQgZ3JlYXQgZmVhciBmZWxsIHVwb24gdGhlbSB3aGljaCBzYXcgdGhlbS4KQW5kIHRoZXkgaGVhcmQgYSBncmVhdCB2b2ljZSBmcm9tIGhlYXZlbiBzYXlpbmcgdW50byB0aGVtLCBDb21lIHVwIGhpdGhlci4gQW5kIHRoZXkgYXNjZW5kZWQgdXAgdG8gaGVhdmVuIGluIGEgY2xvdWQ7IGFuZCB0aGVpciBlbmVtaWVzIGJlaGVsZCB0aGVtLgpBbmQgdGhlIHNhbWUgaG91ciB3YXMgdGhlcmUgYSBncmVhdCBlYXJ0aHF1YWtlLCBhbmQgdGhlIHRlbnRoIHBhcnQgb2YgdGhlIGNpdHkgZmVsbCwgYW5kIGluIHRoZSBlYXJ0aHF1YWtlIHdlcmUgc2xhaW4gb2YgbWVuIHNldmVuIHRob3VzYW5kOiBhbmQgdGhlIHJlbW5hbnQgd2VyZSBhZmZyaWdodGVkLCBhbmQgZ2F2ZSBnbG9yeSB0byB0aGUgR29kIG9mIGhlYXZlbi4KVGhlIHNlY29uZCB3b2UgaXMgcGFzdDsgYW5kLCBiZWhvbGQsIHRoZSB0aGlyZCB3b2UgY29tZXRoIHF1aWNrbHkuCkFuZCB0aGUgc2V2ZW50aCBhbmdlbCBzb3VuZGVkOyBhbmQgdGhlcmUgd2VyZSBncmVhdCB2b2ljZXMgaW4gaGVhdmVuLCBzYXlpbmcsIFRoZSBraW5nZG9tcyBvZiB0aGlzIHdvcmxkIGFyZSBiZWNvbWUgdGhlIGtpbmdkb21zIG9mIG91ciBMb3JkLCBhbmQgb2YgaGlzIENocmlzdDsgYW5kIGhlIHNoYWxsIHJlaWduIGZvciBldmVyIGFuZCBldmVyLgpBbmQgdGhlIGZvdXIgYW5kIHR3ZW50eSBlbGRlcnMsIHdoaWNoIHNhdCBiZWZvcmUgR29kIG9uIHRoZWlyIHNlYXRzLCBmZWxsIHVwb24gdGhlaXIgZmFjZXMsIGFuZCB3b3JzaGlwcGVkIEdvZCwKU2F5aW5nLCBXZSBnaXZlIHRoZWUgdGhhbmtzLCBPIExPUkQgR29kIEFsbWlnaHR5LCB3aGljaCBhcnQsIGFuZCB3YXN0LCBhbmQgYXJ0IHRvIGNvbWU7IGJlY2F1c2UgdGhvdSBoYXN0IHRha2VuIHRvIHRoZWUgdGh5IGdyZWF0IHBvd2VyLCBhbmQgaGFzdCByZWlnbmVkLgpBbmQgdGhlIG5hdGlvbnMgd2VyZSBhbmdyeSwgYW5kIHRoeSB3cmF0aCBpcyBjb21lLCBhbmQgdGhlIHRpbWUgb2YgdGhlIGRlYWQsIHRoYXQgdGhleSBzaG91bGQgYmUganVkZ2VkLCBhbmQgdGhhdCB0aG91IHNob3VsZGVzdCBnaXZlIHJld2FyZCB1bnRvIHRoeSBzZXJ2YW50cyB0aGUgcHJvcGhldHMsIGFuZCB0byB0aGUgc2FpbnRzLCBhbmQgdGhlbSB0aGF0IGZlYXIgdGh5IG5hbWUsIHNtYWxsIGFuZCBncmVhdDsgYW5kIHNob3VsZGVzdCBkZXN0cm95IHRoZW0gd2hpY2ggZGVzdHJveSB0aGUgZWFydGguCkFuZCB0aGUgdGVtcGxlIG9mIEdvZCB3YXMgb3BlbmVkIGluIGhlYXZlbiwgYW5kIHRoZXJlIHdhcyBzZWVuIGluIGhpcyB0ZW1wbGUgdGhlIGFyayBvZiBoaXMgdGVzdGFtZW50OiBhbmQgdGhlcmUgd2VyZSBsaWdodG5pbmdzLCBhbmQgdm9pY2VzLCBhbmQgdGh1bmRlcmluZ3MsIGFuZCBhbiBlYXJ0aHF1YWtlLCBhbmQgZ3JlYXQgaGFpbC4KQW5kIHRoZXJlIGFwcGVhcmVkIGEgZ3JlYXQgd29uZGVyIGluIGhlYXZlbjsgYSB3b21hbiBjbG90aGVkIHdpdGggdGhlIHN1biwgYW5kIHRoZSBtb29uIHVuZGVyIGhlciBmZWV0LCBhbmQgdXBvbiBoZXIgaGVhZCBhIGNyb3duIG9mIHR3ZWx2ZSBzdGFyczoKQW5kIHNoZSBiZWluZyB3aXRoIGNoaWxkIGNyaWVkLCB0cmF2YWlsaW5nIGluIGJpcnRoLCBhbmQgcGFpbmVkIHRvIGJlIGRlbGl2ZXJlZC4KQW5kIHRoZXJlIGFwcGVhcmVkIGFub3RoZXIgd29uZGVyIGluIGhlYXZlbjsgYW5kIGJlaG9sZCBhIGdyZWF0IHJlZCBkcmFnb24sIGhhdmluZyBzZXZlbiBoZWFkcyBhbmQgdGVuIGhvcm5zLCBhbmQgc2V2ZW4gY3Jvd25zIHVwb24gaGlzIGhlYWRzLgpBbmQgaGlzIHRhaWwgZHJldyB0aGUgdGhpcmQgcGFydCBvZiB0aGUgc3RhcnMgb2YgaGVhdmVuLCBhbmQgZGlkIGNhc3QgdGhlbSB0byB0aGUgZWFydGg6IGFuZCB0aGUgZHJhZ29uIHN0b29kIGJlZm9yZSB0aGUgd29tYW4gd2hpY2ggd2FzIHJlYWR5IHRvIGJlIGRlbGl2ZXJlZCwgZm9yIHRvIGRldm91ciBoZXIgY2hpbGQgYXMgc29vbiBhcyBpdCB3YXMgYm9ybi4KQW5kIHNoZSBicm91Z2h0IGZvcnRoIGEgbWFuIGNoaWxkLCB3aG8gd2FzIHRvIHJ1bGUgYWxsIG5hdGlvbnMgd2l0aCBhIHJvZCBvZiBpcm9uOiBhbmQgaGVyIGNoaWxkIHdhcyBjYXVnaHQgdXAgdW50byBHb2QsIGFuZCB0byBoaXMgdGhyb25lLgpBbmQgdGhlIHdvbWFuIGZsZWQgaW50byB0aGUgd2lsZGVybmVzcywgd2hlcmUgc2hlIGhhdGggYSBwbGFjZSBwcmVwYXJlZCBvZiBHb2QsIHRoYXQgdGhleSBzaG91bGQgZmVlZCBoZXIgdGhlcmUgYSB0aG91c2FuZCB0d28gaHVuZHJlZCBhbmQgdGhyZWVzY29yZSBkYXlzLgpBbmQgdGhlcmUgd2FzIHdhciBpbiBoZWF2ZW46IE1pY2hhZWwgYW5kIGhpcyBhbmdlbHMgZm91Z2h0IGFnYWluc3QgdGhlIGRyYWdvbjsgYW5kIHRoZSBkcmFnb24gZm91Z2h0IGFuZCBoaXMgYW5nZWxzLApBbmQgcHJldmFpbGVkIG5vdDsgbmVpdGhlciB3YXMgdGhlaXIgcGxhY2UgZm91bmQgYW55IG1vcmUgaW4gaGVhdmVuLgpBbmQgdGhlIGdyZWF0IGRyYWdvbiB3YXMgY2FzdCBvdXQsIHRoYXQgb2xkIHNlcnBlbnQsIGNhbGxlZCB0aGUgRGV2aWwsIGFuZCBTYXRhbiwgd2hpY2ggZGVjZWl2ZXRoIHRoZSB3aG9sZSB3b3JsZDogaGUgd2FzIGNhc3Qgb3V0IGludG8gdGhlIGVhcnRoLCBhbmQgaGlzIGFuZ2VscyB3ZXJlIGNhc3Qgb3V0IHdpdGggaGltLgpBbmQgSSBoZWFyZCBhIGxvdWQgdm9pY2Ugc2F5aW5nIGluIGhlYXZlbiwgTm93IGlzIGNvbWUgc2FsdmF0aW9uLCBhbmQgc3RyZW5ndGgsIGFuZCB0aGUga2luZ2RvbSBvZiBvdXIgR29kLCBhbmQgdGhlIHBvd2VyIG9mIGhpcyBDaHJpc3Q6IGZvciB0aGUgYWNjdXNlciBvZiBvdXIgYnJldGhyZW4gaXMgY2FzdCBkb3duLCB3aGljaCBhY2N1c2VkIHRoZW0gYmVmb3JlIG91ciBHb2QgZGF5IGFuZCBuaWdodC4KQW5kIHRoZXkgb3ZlcmNhbWUgaGltIGJ5IHRoZSBibG9vZCBvZiB0aGUgTGFtYiwgYW5kIGJ5IHRoZSB3b3JkIG9mIHRoZWlyIHRlc3RpbW9ueTsgYW5kIHRoZXkgbG92ZWQgbm90IHRoZWlyIGxpdmVzIHVudG8gdGhlIGRlYXRoLgpUaGVyZWZvcmUgcmVqb2ljZSwgeWUgaGVhdmVucywgYW5kIHllIHRoYXQgZHdlbGwgaW4gdGhlbS4gV29lIHRvIHRoZSBpbmhhYml0ZXJzIG9mIHRoZSBlYXJ0aCBhbmQgb2YgdGhlIHNlYSEgZm9yIHRoZSBkZXZpbCBpcyBjb21lIGRvd24gdW50byB5b3UsIGhhdmluZyBncmVhdCB3cmF0aCwgYmVjYXVzZSBoZSBrbm93ZXRoIHRoYXQgaGUgaGF0aCBidXQgYSBzaG9ydCB0aW1lLgpBbmQgd2hlbiB0aGUgZHJhZ29uIHNhdyB0aGF0IGhlIHdhcyBjYXN0IHVudG8gdGhlIGVhcnRoLCBoZSBwZXJzZWN1dGVkIHRoZSB3b21hbiB3aGljaCBicm91Z2h0IGZvcnRoIHRoZSBtYW4gY2hpbGQuCkFuZCB0byB0aGUgd29tYW4gd2VyZSBnaXZlbiB0d28gd2luZ3Mgb2YgYSBncmVhdCBlYWdsZSwgdGhhdCBzaGUgbWlnaHQgZmx5IGludG8gdGhlIHdpbGRlcm5lc3MsIGludG8gaGVyIHBsYWNlLCB3aGVyZSBzaGUgaXMgbm91cmlzaGVkIGZvciBhIHRpbWUsIGFuZCB0aW1lcywgYW5kIGhhbGYgYSB0aW1lLCBmcm9tIHRoZSBmYWNlIG9mIHRoZSBzZXJwZW50LgpBbmQgdGhlIHNlcnBlbnQgY2FzdCBvdXQgb2YgaGlzIG1vdXRoIHdhdGVyIGFzIGEgZmxvb2QgYWZ0ZXIgdGhlIHdvbWFuLCB0aGF0IGhlIG1pZ2h0IGNhdXNlIGhlciB0byBiZSBjYXJyaWVkIGF3YXkgb2YgdGhlIGZsb29kLgpBbmQgdGhlIGVhcnRoIGhlbHBlZCB0aGUgd29tYW4sIGFuZCB0aGUgZWFydGggb3BlbmVkIGhlciBtb3V0aCwgYW5kIHN3YWxsb3dlZCB1cCB0aGUgZmxvb2Qgd2hpY2ggdGhlIGRyYWdvbiBjYXN0IG91dCBvZiBoaXMgbW91dGguCkFuZCB0aGUgZHJhZ29uIHdhcyB3cm90aCB3aXRoIHRoZSB3b21hbiwgYW5kIHdlbnQgdG8gbWFrZSB3YXIgd2l0aCB0aGUgcmVtbmFudCBvZiBoZXIgc2VlZCwgd2hpY2gga2VlcCB0aGUgY29tbWFuZG1lbnRzIG9mIEdvZCwgYW5kIGhhdmUgdGhlIHRlc3RpbW9ueSBvZiBKZXN1cyBDaHJpc3QuCkFuZCBJIHN0b29kIHVwb24gdGhlIHNhbmQgb2YgdGhlIHNlYSwgYW5kIHNhdyBhIGJlYXN0IHJpc2UgdXAgb3V0IG9mIHRoZSBzZWEsIGhhdmluZyBzZXZlbiBoZWFkcyBhbmQgdGVuIGhvcm5zLCBhbmQgdXBvbiBoaXMgaG9ybnMgdGVuIGNyb3ducywgYW5kIHVwb24gaGlzIGhlYWRzIHRoZSBuYW1lIG9mIGJsYXNwaGVteS4KQW5kIHRoZSBiZWFzdCB3aGljaCBJIHNhdyB3YXMgbGlrZSB1bnRvIGEgbGVvcGFyZCwgYW5kIGhpcyBmZWV0IHdlcmUgYXMgdGhlIGZlZXQgb2YgYSBiZWFyLCBhbmQgaGlzIG1vdXRoIGFzIHRoZSBtb3V0aCBvZiBhIGxpb246IGFuZCB0aGUgZHJhZ29uIGdhdmUgaGltIGhpcyBwb3dlciwgYW5kIGhpcyBzZWF0LCBhbmQgZ3JlYXQgYXV0aG9yaXR5LgpBbmQgSSBzYXcgb25lIG9mIGhpcyBoZWFkcyBhcyBpdCB3ZXJlIHdvdW5kZWQgdG8gZGVhdGg7IGFuZCBoaXMgZGVhZGx5IHdvdW5kIHdhcyBoZWFsZWQ6IGFuZCBhbGwgdGhlIHdvcmxkIHdvbmRlcmVkIGFmdGVyIHRoZSBiZWFzdC4KQW5kIHRoZXkgd29yc2hpcHBlZCB0aGUgZHJhZ29uIHdoaWNoIGdhdmUgcG93ZXIgdW50byB0aGUgYmVhc3Q6IGFuZCB0aGV5IHdvcnNoaXBwZWQgdGhlIGJlYXN0LCBzYXlpbmcsIFdobyBpcyBsaWtlIHVudG8gdGhlIGJlYXN0PyB3aG8gaXMgYWJsZSB0byBtYWtlIHdhciB3aXRoIGhpbT8KQW5kIHRoZXJlIHdhcyBnaXZlbiB1bnRvIGhpbSBhIG1vdXRoIHNwZWFraW5nIGdyZWF0IHRoaW5ncyBhbmQgYmxhc3BoZW1pZXM7IGFuZCBwb3dlciB3YXMgZ2l2ZW4gdW50byBoaW0gdG8gY29udGludWUgZm9ydHkgYW5kIHR3byBtb250aHMuCkFuZCBoZSBvcGVuZWQgaGlzIG1vdXRoIGluIGJsYXNwaGVteSBhZ2FpbnN0IEdvZCwgdG8gYmxhc3BoZW1lIGhpcyBuYW1lLCBhbmQgaGlzIHRhYmVybmFjbGUsIGFuZCB0aGVtIHRoYXQgZHdlbGwgaW4gaGVhdmVuLgpBbmQgaXQgd2FzIGdpdmVuIHVudG8gaGltIHRvIG1ha2Ugd2FyIHdpdGggdGhlIHNhaW50cywgYW5kIHRvIG92ZXJjb21lIHRoZW06IGFuZCBwb3dlciB3YXMgZ2l2ZW4gaGltIG92ZXIgYWxsIGtpbmRyZWRzLCBhbmQgdG9uZ3VlcywgYW5kIG5hdGlvbnMuCkFuZCBhbGwgdGhhdCBkd2VsbCB1cG9uIHRoZSBlYXJ0aCBzaGFsbCB3b3JzaGlwIGhpbSwgd2hvc2UgbmFtZXMgYXJlIG5vdCB3cml0dGVuIGluIHRoZSBib29rIG9mIGxpZmUgb2YgdGhlIExhbWIgc2xhaW4gZnJvbSB0aGUgZm91bmRhdGlvbiBvZiB0aGUgd29ybGQuCklmIGFueSBtYW4gaGF2ZSBhbiBlYXIsIGxldCBoaW0gaGVhci4KSGUgdGhhdCBsZWFkZXRoIGludG8gY2FwdGl2aXR5IHNoYWxsIGdvIGludG8gY2FwdGl2aXR5OiBoZSB0aGF0IGtpbGxldGggd2l0aCB0aGUgc3dvcmQgbXVzdCBiZSBraWxsZWQgd2l0aCB0aGUgc3dvcmQuIEhlcmUgaXMgdGhlIHBhdGllbmNlIGFuZCB0aGUgZmFpdGggb2YgdGhlIHNhaW50cy4KQW5kIEkgYmVoZWxkIGFub3RoZXIgYmVhc3QgY29taW5nIHVwIG91dCBvZiB0aGUgZWFydGg7IGFuZCBoZSBoYWQgdHdvIGhvcm5zIGxpa2UgYSBsYW1iLCBhbmQgaGUgc3Bha2UgYXMgYSBkcmFnb24uCkFuZCBoZSBleGVyY2lzZXRoIGFsbCB0aGUgcG93ZXIgb2YgdGhlIGZpcnN0IGJlYXN0IGJlZm9yZSBoaW0sIGFuZCBjYXVzZXRoIHRoZSBlYXJ0aCBhbmQgdGhlbSB3aGljaCBkd2VsbCB0aGVyZWluIHRvIHdvcnNoaXAgdGhlIGZpcnN0IGJlYXN0LCB3aG9zZSBkZWFkbHkgd291bmQgd2FzIGhlYWxlZC4KQW5kIGhlIGRvZXRoIGdyZWF0IHdvbmRlcnMsIHNvIHRoYXQgaGUgbWFrZXRoIGZpcmUgY29tZSBkb3duIGZyb20gaGVhdmVuIG9uIHRoZSBlYXJ0aCBpbiB0aGUgc2lnaHQgb2YgbWVuLApBbmQgZGVjZWl2ZXRoIHRoZW0gdGhhdCBkd2VsbCBvbiB0aGUgZWFydGggYnkgdGhlIG1lYW5zIG9mIHRob3NlIG1pcmFjbGVzIHdoaWNoIGhlIGhhZCBwb3dlciB0byBkbyBpbiB0aGUgc2lnaHQgb2YgdGhlIGJlYXN0OyBzYXlpbmcgdG8gdGhlbSB0aGF0IGR3ZWxsIG9uIHRoZSBlYXJ0aCwgdGhhdCB0aGV5IHNob3VsZCBtYWtlIGFuIGltYWdlIHRvIHRoZSBiZWFzdCwgd2hpY2ggaGFkIHRoZSB3b3VuZCBieSBhIHN3b3JkLCBhbmQgZGlkIGxpdmUuCkFuZCBoZSBoYWQgcG93ZXIgdG8gZ2l2ZSBsaWZlIHVudG8gdGhlIGltYWdlIG9mIHRoZSBiZWFzdCwgdGhhdCB0aGUgaW1hZ2Ugb2YgdGhlIGJlYXN0IHNob3VsZCBib3RoIHNwZWFrLCBhbmQgY2F1c2UgdGhhdCBhcyBtYW55IGFzIHdvdWxkIG5vdCB3b3JzaGlwIHRoZSBpbWFnZSBvZiB0aGUgYmVhc3Qgc2hvdWxkIGJlIGtpbGxlZC4KQW5kIGhlIGNhdXNldGggYWxsLCBib3RoIHNtYWxsIGFuZCBncmVhdCwgcmljaCBhbmQgcG9vciwgZnJlZSBhbmQgYm9uZCwgdG8gcmVjZWl2ZSBhIG1hcmsgaW4gdGhlaXIgcmlnaHQgaGFuZCwgb3IgaW4gdGhlaXIgZm9yZWhlYWRzOgpBbmQgdGhhdCBubyBtYW4gbWlnaHQgYnV5IG9yIHNlbGwsIHNhdmUgaGUgdGhhdCBoYWQgdGhlIG1hcmssIG9yIHRoZSBuYW1lIG9mIHRoZSBiZWFzdCwgb3IgdGhlIG51bWJlciBvZiBoaXMgbmFtZS4KSGVyZSBpcyB3aXNkb20uIExldCBoaW0gdGhhdCBoYXRoIHVuZGVyc3RhbmRpbmcgY291bnQgdGhlIG51bWJlciBvZiB0aGUgYmVhc3Q6IGZvciBpdCBpcyB0aGUgbnVtYmVyIG9mIGEgbWFuOyBhbmQgaGlzIG51bWJlciBpcyBTaXggaHVuZHJlZCB0aHJlZXNjb3JlIGFuZCBzaXguCkFuZCBJIGxvb2tlZCwgYW5kLCBsbywgYSBMYW1iIHN0b29kIG9uIHRoZSBtb3VudCBTaW9uLCBhbmQgd2l0aCBoaW0gYW4gaHVuZHJlZCBmb3J0eSBhbmQgZm91ciB0aG91c2FuZCwgaGF2aW5nIGhpcyBGYXRoZXIncyBuYW1lIHdyaXR0ZW4gaW4gdGhlaXIgZm9yZWhlYWRzLgpBbmQgSSBoZWFyZCBhIHZvaWNlIGZyb20gaGVhdmVuLCBhcyB0aGUgdm9pY2Ugb2YgbWFueSB3YXRlcnMsIGFuZCBhcyB0aGUgdm9pY2Ugb2YgYSBncmVhdCB0aHVuZGVyOiBhbmQgSSBoZWFyZCB0aGUgdm9pY2Ugb2YgaGFycGVycyBoYXJwaW5nIHdpdGggdGhlaXIgaGFycHM6CkFuZCB0aGV5IHN1bmcgYXMgaXQgd2VyZSBhIG5ldyBzb25nIGJlZm9yZSB0aGUgdGhyb25lLCBhbmQgYmVmb3JlIHRoZSBmb3VyIGJlYXN0cywgYW5kIHRoZSBlbGRlcnM6IGFuZCBubyBtYW4gY291bGQgbGVhcm4gdGhhdCBzb25nIGJ1dCB0aGUgaHVuZHJlZCBhbmQgZm9ydHkgYW5kIGZvdXIgdGhvdXNhbmQsIHdoaWNoIHdlcmUgcmVkZWVtZWQgZnJvbSB0aGUgZWFydGguClRoZXNlIGFyZSB0aGV5IHdoaWNoIHdlcmUgbm90IGRlZmlsZWQgd2l0aCB3b21lbjsgZm9yIHRoZXkgYXJlIHZpcmdpbnMuIFRoZXNlIGFyZSB0aGV5IHdoaWNoIGZvbGxvdyB0aGUgTGFtYiB3aGl0aGVyc29ldmVyIGhlIGdvZXRoLiBUaGVzZSB3ZXJlIHJlZGVlbWVkIGZyb20gYW1vbmcgbWVuLCBiZWluZyB0aGUgZmlyc3RmcnVpdHMgdW50byBHb2QgYW5kIHRvIHRoZSBMYW1iLgpBbmQgaW4gdGhlaXIgbW91dGggd2FzIGZvdW5kIG5vIGd1aWxlOiBmb3IgdGhleSBhcmUgd2l0aG91dCBmYXVsdCBiZWZvcmUgdGhlIHRocm9uZSBvZiBHb2QuCkFuZCBJIHNhdyBhbm90aGVyIGFuZ2VsIGZseSBpbiB0aGUgbWlkc3Qgb2YgaGVhdmVuLCBoYXZpbmcgdGhlIGV2ZXJsYXN0aW5nIGdvc3BlbCB0byBwcmVhY2ggdW50byB0aGVtIHRoYXQgZHdlbGwgb24gdGhlIGVhcnRoLCBhbmQgdG8gZXZlcnkgbmF0aW9uLCBhbmQga2luZHJlZCwgYW5kIHRvbmd1ZSwgYW5kIHBlb3BsZSwKU2F5aW5nIHdpdGggYSBsb3VkIHZvaWNlLCBGZWFyIEdvZCwgYW5kIGdpdmUgZ2xvcnkgdG8gaGltOyBmb3IgdGhlIGhvdXIgb2YgaGlzIGp1ZGdtZW50IGlzIGNvbWU6IGFuZCB3b3JzaGlwIGhpbSB0aGF0IG1hZGUgaGVhdmVuLCBhbmQgZWFydGgsIGFuZCB0aGUgc2VhLCBhbmQgdGhlIGZvdW50YWlucyBvZiB3YXRlcnMuCkFuZCB0aGVyZSBmb2xsb3dlZCBhbm90aGVyIGFuZ2VsLCBzYXlpbmcsIEJhYnlsb24gaXMgZmFsbGVuLCBpcyBmYWxsZW4sIHRoYXQgZ3JlYXQgY2l0eSwgYmVjYXVzZSBzaGUgbWFkZSBhbGwgbmF0aW9ucyBkcmluayBvZiB0aGUgd2luZSBvZiB0aGUgd3JhdGggb2YgaGVyIGZvcm5pY2F0aW9uLgpBbmQgdGhlIHRoaXJkIGFuZ2VsIGZvbGxvd2VkIHRoZW0sIHNheWluZyB3aXRoIGEgbG91ZCB2b2ljZSwgSWYgYW55IG1hbiB3b3JzaGlwIHRoZSBiZWFzdCBhbmQgaGlzIGltYWdlLCBhbmQgcmVjZWl2ZSBoaXMgbWFyayBpbiBoaXMgZm9yZWhlYWQsIG9yIGluIGhpcyBoYW5kLApUaGUgc2FtZSBzaGFsbCBkcmluayBvZiB0aGUgd2luZSBvZiB0aGUgd3JhdGggb2YgR29kLCB3aGljaCBpcyBwb3VyZWQgb3V0IHdpdGhvdXQgbWl4dHVyZSBpbnRvIHRoZSBjdXAgb2YgaGlzIGluZGlnbmF0aW9uOyBhbmQgaGUgc2hhbGwgYmUgdG9ybWVudGVkIHdpdGggZmlyZSBhbmQgYnJpbXN0b25lIGluIHRoZSBwcmVzZW5jZSBvZiB0aGUgaG9seSBhbmdlbHMsIGFuZCBpbiB0aGUgcHJlc2VuY2Ugb2YgdGhlIExhbWI6CkFuZCB0aGUgc21va2Ugb2YgdGhlaXIgdG9ybWVudCBhc2NlbmRldGggdXAgZm9yIGV2ZXIgYW5kIGV2ZXI6IGFuZCB0aGV5IGhhdmUgbm8gcmVzdCBkYXkgbm9yIG5pZ2h0LCB3aG8gd29yc2hpcCB0aGUgYmVhc3QgYW5kIGhpcyBpbWFnZSwgYW5kIHdob3NvZXZlciByZWNlaXZldGggdGhlIG1hcmsgb2YgaGlzIG5hbWUuCkhlcmUgaXMgdGhlIHBhdGllbmNlIG9mIHRoZSBzYWludHM6IGhlcmUgYXJlIHRoZXkgdGhhdCBrZWVwIHRoZSBjb21tYW5kbWVudHMgb2YgR29kLCBhbmQgdGhlIGZhaXRoIG9mIEplc3VzLgpBbmQgSSBoZWFyZCBhIHZvaWNlIGZyb20gaGVhdmVuIHNheWluZyB1bnRvIG1lLCBXcml0ZSwgQmxlc3NlZCBhcmUgdGhlIGRlYWQgd2hpY2ggZGllIGluIHRoZSBMb3JkIGZyb20gaGVuY2Vmb3J0aDogWWVhLCBzYWl0aCB0aGUgU3Bpcml0LCB0aGF0IHRoZXkgbWF5IHJlc3QgZnJvbSB0aGVpciBsYWJvdXJzOyBhbmQgdGhlaXIgd29ya3MgZG8gZm9sbG93IHRoZW0uCkFuZCBJIGxvb2tlZCwgYW5kIGJlaG9sZCBhIHdoaXRlIGNsb3VkLCBhbmQgdXBvbiB0aGUgY2xvdWQgb25lIHNhdCBsaWtlIHVudG8gdGhlIFNvbiBvZiBtYW4sIGhhdmluZyBvbiBoaXMgaGVhZCBhIGdvbGRlbiBjcm93biwgYW5kIGluIGhpcyBoYW5kIGEgc2hhcnAgc2lja2xlLgpBbmQgYW5vdGhlciBhbmdlbCBjYW1lIG91dCBvZiB0aGUgdGVtcGxlLCBjcnlpbmcgd2l0aCBhIGxvdWQgdm9pY2UgdG8gaGltIHRoYXQgc2F0IG9uIHRoZSBjbG91ZCwgVGhydXN0IGluIHRoeSBzaWNrbGUsIGFuZCByZWFwOiBmb3IgdGhlIHRpbWUgaXMgY29tZSBmb3IgdGhlZSB0byByZWFwOyBmb3IgdGhlIGhhcnZlc3Qgb2YgdGhlIGVhcnRoIGlzIHJpcGUuCkFuZCBoZSB0aGF0IHNhdCBvbiB0aGUgY2xvdWQgdGhydXN0IGluIGhpcyBzaWNrbGUgb24gdGhlIGVhcnRoOyBhbmQgdGhlIGVhcnRoIHdhcyByZWFwZWQuCkFuZCBhbm90aGVyIGFuZ2VsIGNhbWUgb3V0IG9mIHRoZSB0ZW1wbGUgd2hpY2ggaXMgaW4gaGVhdmVuLCBoZSBhbHNvIGhhdmluZyBhIHNoYXJwIHNpY2tsZS4KQW5kIGFub3RoZXIgYW5nZWwgY2FtZSBvdXQgZnJvbSB0aGUgYWx0YXIsIHdoaWNoIGhhZCBwb3dlciBvdmVyIGZpcmU7IGFuZCBjcmllZCB3aXRoIGEgbG91ZCBjcnkgdG8gaGltIHRoYXQgaGFkIHRoZSBzaGFycCBzaWNrbGUsIHNheWluZywgVGhydXN0IGluIHRoeSBzaGFycCBzaWNrbGUsIGFuZCBnYXRoZXIgdGhlIGNsdXN0ZXJzIG9mIHRoZSB2aW5lIG9mIHRoZSBlYXJ0aDsgZm9yIGhlciBncmFwZXMgYXJlIGZ1bGx5IHJpcGUuCkFuZCB0aGUgYW5nZWwgdGhydXN0IGluIGhpcyBzaWNrbGUgaW50byB0aGUgZWFydGgsIGFuZCBnYXRoZXJlZCB0aGUgdmluZSBvZiB0aGUgZWFydGgsIGFuZCBjYXN0IGl0IGludG8gdGhlIGdyZWF0IHdpbmVwcmVzcyBvZiB0aGUgd3JhdGggb2YgR29kLgpBbmQgdGhlIHdpbmVwcmVzcyB3YXMgdHJvZGRlbiB3aXRob3V0IHRoZSBjaXR5LCBhbmQgYmxvb2QgY2FtZSBvdXQgb2YgdGhlIHdpbmVwcmVzcywgZXZlbiB1bnRvIHRoZSBob3JzZSBicmlkbGVzLCBieSB0aGUgc3BhY2Ugb2YgYSB0aG91c2FuZCBhbmQgc2l4IGh1bmRyZWQgZnVybG9uZ3MuCkFuZCBJIHNhdyBhbm90aGVyIHNpZ24gaW4gaGVhdmVuLCBncmVhdCBhbmQgbWFydmVsbG91cywgc2V2ZW4gYW5nZWxzIGhhdmluZyB0aGUgc2V2ZW4gbGFzdCBwbGFndWVzOyBmb3IgaW4gdGhlbSBpcyBmaWxsZWQgdXAgdGhlIHdyYXRoIG9mIEdvZC4KQW5kIEkgc2F3IGFzIGl0IHdlcmUgYSBzZWEgb2YgZ2xhc3MgbWluZ2xlZCB3aXRoIGZpcmU6IGFuZCB0aGVtIHRoYXQgaGFkIGdvdHRlbiB0aGUgdmljdG9yeSBvdmVyIHRoZSBiZWFzdCwgYW5kIG92ZXIgaGlzIGltYWdlLCBhbmQgb3ZlciBoaXMgbWFyaywgYW5kIG92ZXIgdGhlIG51bWJlciBvZiBoaXMgbmFtZSwgc3RhbmQgb24gdGhlIHNlYSBvZiBnbGFzcywgaGF2aW5nIHRoZSBoYXJwcyBvZiBHb2QuCkFuZCB0aGV5IHNpbmcgdGhlIHNvbmcgb2YgTW9zZXMgdGhlIHNlcnZhbnQgb2YgR29kLCBhbmQgdGhlIHNvbmcgb2YgdGhlIExhbWIsIHNheWluZywgR3JlYXQgYW5kIG1hcnZlbGxvdXMgYXJlIHRoeSB3b3JrcywgTG9yZCBHb2QgQWxtaWdodHk7IGp1c3QgYW5kIHRydWUgYXJlIHRoeSB3YXlzLCB0aG91IEtpbmcgb2Ygc2FpbnRzLgpXaG8gc2hhbGwgbm90IGZlYXIgdGhlZSwgTyBMb3JkLCBhbmQgZ2xvcmlmeSB0aHkgbmFtZT8gZm9yIHRob3Ugb25seSBhcnQgaG9seTogZm9yIGFsbCBuYXRpb25zIHNoYWxsIGNvbWUgYW5kIHdvcnNoaXAgYmVmb3JlIHRoZWU7IGZvciB0aHkganVkZ21lbnRzIGFyZSBtYWRlIG1hbmlmZXN0LgpBbmQgYWZ0ZXIgdGhhdCBJIGxvb2tlZCwgYW5kLCBiZWhvbGQsIHRoZSB0ZW1wbGUgb2YgdGhlIHRhYmVybmFjbGUgb2YgdGhlIHRlc3RpbW9ueSBpbiBoZWF2ZW4gd2FzIG9wZW5lZDoKQW5kIHRoZSBzZXZlbiBhbmdlbHMgY2FtZSBvdXQgb2YgdGhlIHRlbXBsZSwgaGF2aW5nIHRoZSBzZXZlbiBwbGFndWVzLCBjbG90aGVkIGluIHB1cmUgYW5kIHdoaXRlIGxpbmVuLCBhbmQgaGF2aW5nIHRoZWlyIGJyZWFzdHMgZ2lyZGVkIHdpdGggZ29sZGVuIGdpcmRsZXMuCkFuZCBvbmUgb2YgdGhlIGZvdXIgYmVhc3RzIGdhdmUgdW50byB0aGUgc2V2ZW4gYW5nZWxzIHNldmVuIGdvbGRlbiB2aWFscyBmdWxsIG9mIHRoZSB3cmF0aCBvZiBHb2QsIHdobyBsaXZldGggZm9yIGV2ZXIgYW5kIGV2ZXIuCkFuZCB0aGUgdGVtcGxlIHdhcyBmaWxsZWQgd2l0aCBzbW9rZSBmcm9tIHRoZSBnbG9yeSBvZiBHb2QsIGFuZCBmcm9tIGhpcyBwb3dlcjsgYW5kIG5vIG1hbiB3YXMgYWJsZSB0byBlbnRlciBpbnRvIHRoZSB0ZW1wbGUsIHRpbGwgdGhlIHNldmVuIHBsYWd1ZXMgb2YgdGhlIHNldmVuIGFuZ2VscyB3ZXJlIGZ1bGZpbGxlZC4KQW5kIEkgaGVhcmQgYSBncmVhdCB2b2ljZSBvdXQgb2YgdGhlIHRlbXBsZSBzYXlpbmcgdG8gdGhlIHNldmVuIGFuZ2VscywgR28geW91ciB3YXlzLCBhbmQgcG91ciBvdXQgdGhlIHZpYWxzIG9mIHRoZSB3cmF0aCBvZiBHb2QgdXBvbiB0aGUgZWFydGguCkFuZCB0aGUgZmlyc3Qgd2VudCwgYW5kIHBvdXJlZCBvdXQgaGlzIHZpYWwgdXBvbiB0aGUgZWFydGg7IGFuZCB0aGVyZSBmZWxsIGEgbm9pc29tZSBhbmQgZ3JpZXZvdXMgc29yZSB1cG9uIHRoZSBtZW4gd2hpY2ggaGFkIHRoZSBtYXJrIG9mIHRoZSBiZWFzdCwgYW5kIHVwb24gdGhlbSB3aGljaCB3b3JzaGlwcGVkIGhpcyBpbWFnZS4KQW5kIHRoZSBzZWNvbmQgYW5nZWwgcG91cmVkIG91dCBoaXMgdmlhbCB1cG9uIHRoZSBzZWE7IGFuZCBpdCBiZWNhbWUgYXMgdGhlIGJsb29kIG9mIGEgZGVhZCBtYW46IGFuZCBldmVyeSBsaXZpbmcgc291bCBkaWVkIGluIHRoZSBzZWEuCkFuZCB0aGUgdGhpcmQgYW5nZWwgcG91cmVkIG91dCBoaXMgdmlhbCB1cG9uIHRoZSByaXZlcnMgYW5kIGZvdW50YWlucyBvZiB3YXRlcnM7IGFuZCB0aGV5IGJlY2FtZSBibG9vZC4KQW5kIEkgaGVhcmQgdGhlIGFuZ2VsIG9mIHRoZSB3YXRlcnMgc2F5LCBUaG91IGFydCByaWdodGVvdXMsIE8gTG9yZCwgd2hpY2ggYXJ0LCBhbmQgd2FzdCwgYW5kIHNoYWx0IGJlLCBiZWNhdXNlIHRob3UgaGFzdCBqdWRnZWQgdGh1cy4KRm9yIHRoZXkgaGF2ZSBzaGVkIHRoZSBibG9vZCBvZiBzYWludHMgYW5kIHByb3BoZXRzLCBhbmQgdGhvdSBoYXN0IGdpdmVuIHRoZW0gYmxvb2QgdG8gZHJpbms7IGZvciB0aGV5IGFyZSB3b3J0aHkuCkFuZCBJIGhlYXJkIGFub3RoZXIgb3V0IG9mIHRoZSBhbHRhciBzYXksIEV2ZW4gc28sIExvcmQgR29kIEFsbWlnaHR5LCB0cnVlIGFuZCByaWdodGVvdXMgYXJlIHRoeSBqdWRnbWVudHMuCkFuZCB0aGUgZm91cnRoIGFuZ2VsIHBvdXJlZCBvdXQgaGlzIHZpYWwgdXBvbiB0aGUgc3VuOyBhbmQgcG93ZXIgd2FzIGdpdmVuIHVudG8gaGltIHRvIHNjb3JjaCBtZW4gd2l0aCBmaXJlLgpBbmQgbWVuIHdlcmUgc2NvcmNoZWQgd2l0aCBncmVhdCBoZWF0LCBhbmQgYmxhc3BoZW1lZCB0aGUgbmFtZSBvZiBHb2QsIHdoaWNoIGhhdGggcG93ZXIgb3ZlciB0aGVzZSBwbGFndWVzOiBhbmQgdGhleSByZXBlbnRlZCBub3QgdG8gZ2l2ZSBoaW0gZ2xvcnkuCkFuZCB0aGUgZmlmdGggYW5nZWwgcG91cmVkIG91dCBoaXMgdmlhbCB1cG9uIHRoZSBzZWF0IG9mIHRoZSBiZWFzdDsgYW5kIGhpcyBraW5nZG9tIHdhcyBmdWxsIG9mIGRhcmtuZXNzOyBhbmQgdGhleSBnbmF3ZWQgdGhlaXIgdG9uZ3VlcyBmb3IgcGFpbiwKQW5kIGJsYXNwaGVtZWQgdGhlIEdvZCBvZiBoZWF2ZW4gYmVjYXVzZSBvZiB0aGVpciBwYWlucyBhbmQgdGhlaXIgc29yZXMsIGFuZCByZXBlbnRlZCBub3Qgb2YgdGhlaXIgZGVlZHMuCkFuZCB0aGUgc2l4dGggYW5nZWwgcG91cmVkIG91dCBoaXMgdmlhbCB1cG9uIHRoZSBncmVhdCByaXZlciBFdXBocmF0ZXM7IGFuZCB0aGUgd2F0ZXIgdGhlcmVvZiB3YXMgZHJpZWQgdXAsIHRoYXQgdGhlIHdheSBvZiB0aGUga2luZ3Mgb2YgdGhlIGVhc3QgbWlnaHQgYmUgcHJlcGFyZWQuCkFuZCBJIHNhdyB0aHJlZSB1bmNsZWFuIHNwaXJpdHMgbGlrZSBmcm9ncyBjb21lIG91dCBvZiB0aGUgbW91dGggb2YgdGhlIGRyYWdvbiwgYW5kIG91dCBvZiB0aGUgbW91dGggb2YgdGhlIGJlYXN0LCBhbmQgb3V0IG9mIHRoZSBtb3V0aCBvZiB0aGUgZmFsc2UgcHJvcGhldC4KRm9yIHRoZXkgYXJlIHRoZSBzcGlyaXRzIG9mIGRldmlscywgd29ya2luZyBtaXJhY2xlcywgd2hpY2ggZ28gZm9ydGggdW50byB0aGUga2luZ3Mgb2YgdGhlIGVhcnRoIGFuZCBvZiB0aGUgd2hvbGUgd29ybGQsIHRvIGdhdGhlciB0aGVtIHRvIHRoZSBiYXR0bGUgb2YgdGhhdCBncmVhdCBkYXkgb2YgR29kIEFsbWlnaHR5LgpCZWhvbGQsIEkgY29tZSBhcyBhIHRoaWVmLiBCbGVzc2VkIGlzIGhlIHRoYXQgd2F0Y2hldGgsIGFuZCBrZWVwZXRoIGhpcyBnYXJtZW50cywgbGVzdCBoZSB3YWxrIG5ha2VkLCBhbmQgdGhleSBzZWUgaGlzIHNoYW1lLgpBbmQgaGUgZ2F0aGVyZWQgdGhlbSB0b2dldGhlciBpbnRvIGEgcGxhY2UgY2FsbGVkIGluIHRoZSBIZWJyZXcgdG9uZ3VlIEFybWFnZWRkb24uCkFuZCB0aGUgc2V2ZW50aCBhbmdlbCBwb3VyZWQgb3V0IGhpcyB2aWFsIGludG8gdGhlIGFpcjsgYW5kIHRoZXJlIGNhbWUgYSBncmVhdCB2b2ljZSBvdXQgb2YgdGhlIHRlbXBsZSBvZiBoZWF2ZW4sIGZyb20gdGhlIHRocm9uZSwgc2F5aW5nLCBJdCBpcyBkb25lLgpBbmQgdGhlcmUgd2VyZSB2b2ljZXMsIGFuZCB0aHVuZGVycywgYW5kIGxpZ2h0bmluZ3M7IGFuZCB0aGVyZSB3YXMgYSBncmVhdCBlYXJ0aHF1YWtlLCBzdWNoIGFzIHdhcyBub3Qgc2luY2UgbWVuIHdlcmUgdXBvbiB0aGUgZWFydGgsIHNvIG1pZ2h0eSBhbiBlYXJ0aHF1YWtlLCBhbmQgc28gZ3JlYXQuCkFuZCB0aGUgZ3JlYXQgY2l0eSB3YXMgZGl2aWRlZCBpbnRvIHRocmVlIHBhcnRzLCBhbmQgdGhlIGNpdGllcyBvZiB0aGUgbmF0aW9ucyBmZWxsOiBhbmQgZ3JlYXQgQmFieWxvbiBjYW1lIGluIHJlbWVtYnJhbmNlIGJlZm9yZSBHb2QsIHRvIGdpdmUgdW50byBoZXIgdGhlIGN1cCBvZiB0aGUgd2luZSBvZiB0aGUgZmllcmNlbmVzcyBvZiBoaXMgd3JhdGguCkFuZCBldmVyeSBpc2xhbmQgZmxlZCBhd2F5LCBhbmQgdGhlIG1vdW50YWlucyB3ZXJlIG5vdCBmb3VuZC4KQW5kIHRoZXJlIGZlbGwgdXBvbiBtZW4gYSBncmVhdCBoYWlsIG91dCBvZiBoZWF2ZW4sIGV2ZXJ5IHN0b25lIGFib3V0IHRoZSB3ZWlnaHQgb2YgYSB0YWxlbnQ6IGFuZCBtZW4gYmxhc3BoZW1lZCBHb2QgYmVjYXVzZSBvZiB0aGUgcGxhZ3VlIG9mIHRoZSBoYWlsOyBmb3IgdGhlIHBsYWd1ZSB0aGVyZW9mIHdhcyBleGNlZWRpbmcgZ3JlYXQuCkFuZCB0aGVyZSBjYW1lIG9uZSBvZiB0aGUgc2V2ZW4gYW5nZWxzIHdoaWNoIGhhZCB0aGUgc2V2ZW4gdmlhbHMsIGFuZCB0YWxrZWQgd2l0aCBtZSwgc2F5aW5nIHVudG8gbWUsIENvbWUgaGl0aGVyOyBJIHdpbGwgc2hldyB1bnRvIHRoZWUgdGhlIGp1ZGdtZW50IG9mIHRoZSBncmVhdCB3aG9yZSB0aGF0IHNpdHRldGggdXBvbiBtYW55IHdhdGVyczoKV2l0aCB3aG9tIHRoZSBraW5ncyBvZiB0aGUgZWFydGggaGF2ZSBjb21taXR0ZWQgZm9ybmljYXRpb24sIGFuZCB0aGUgaW5oYWJpdGFudHMgb2YgdGhlIGVhcnRoIGhhdmUgYmVlbiBtYWRlIGRydW5rIHdpdGggdGhlIHdpbmUgb2YgaGVyIGZvcm5pY2F0aW9uLgpTbyBoZSBjYXJyaWVkIG1lIGF3YXkgaW4gdGhlIHNwaXJpdCBpbnRvIHRoZSB3aWxkZXJuZXNzOiBhbmQgSSBzYXcgYSB3b21hbiBzaXQgdXBvbiBhIHNjYXJsZXQgY29sb3VyZWQgYmVhc3QsIGZ1bGwgb2YgbmFtZXMgb2YgYmxhc3BoZW15LCBoYXZpbmcgc2V2ZW4gaGVhZHMgYW5kIHRlbiBob3Jucy4KQW5kIHRoZSB3b21hbiB3YXMgYXJyYXllZCBpbiBwdXJwbGUgYW5kIHNjYXJsZXQgY29sb3VyLCBhbmQgZGVja2VkIHdpdGggZ29sZCBhbmQgcHJlY2lvdXMgc3RvbmVzIGFuZCBwZWFybHMsIGhhdmluZyBhIGdvbGRlbiBjdXAgaW4gaGVyIGhhbmQgZnVsbCBvZiBhYm9taW5hdGlvbnMgYW5kIGZpbHRoaW5lc3Mgb2YgaGVyIGZvcm5pY2F0aW9uOgpBbmQgdXBvbiBoZXIgZm9yZWhlYWQgd2FzIGEgbmFtZSB3cml0dGVuLCBNWVNURVJZLCBCQUJZTE9OIFRIRSBHUkVBVCwgVEhFIE1PVEhFUiBPRiBIQVJMT1RTIEFORCBBQk9NSU5BVElPTlMgT0YgVEhFIEVBUlRILgpBbmQgSSBzYXcgdGhlIHdvbWFuIGRydW5rZW4gd2l0aCB0aGUgYmxvb2Qgb2YgdGhlIHNhaW50cywgYW5kIHdpdGggdGhlIGJsb29kIG9mIHRoZSBtYXJ0eXJzIG9mIEplc3VzOiBhbmQgd2hlbiBJIHNhdyBoZXIsIEkgd29uZGVyZWQgd2l0aCBncmVhdCBhZG1pcmF0aW9uLgpBbmQgdGhlIGFuZ2VsIHNhaWQgdW50byBtZSwgV2hlcmVmb3JlIGRpZHN0IHRob3UgbWFydmVsPyBJIHdpbGwgdGVsbCB0aGVlIHRoZSBteXN0ZXJ5IG9mIHRoZSB3b21hbiwgYW5kIG9mIHRoZSBiZWFzdCB0aGF0IGNhcnJpZXRoIGhlciwgd2hpY2ggaGF0aCB0aGUgc2V2ZW4gaGVhZHMgYW5kIHRlbiBob3Jucy4KVGhlIGJlYXN0IHRoYXQgdGhvdSBzYXdlc3Qgd2FzLCBhbmQgaXMgbm90OyBhbmQgc2hhbGwgYXNjZW5kIG91dCBvZiB0aGUgYm90dG9tbGVzcyBwaXQsIGFuZCBnbyBpbnRvIHBlcmRpdGlvbjogYW5kIHRoZXkgdGhhdCBkd2VsbCBvbiB0aGUgZWFydGggc2hhbGwgd29uZGVyLCB3aG9zZSBuYW1lcyB3ZXJlIG5vdCB3cml0dGVuIGluIHRoZSBib29rIG9mIGxpZmUgZnJvbSB0aGUgZm91bmRhdGlvbiBvZiB0aGUgd29ybGQsIHdoZW4gdGhleSBiZWhvbGQgdGhlIGJlYXN0IHRoYXQgd2FzLCBhbmQgaXMgbm90LCBhbmQgeWV0IGlzLgpBbmQgaGVyZSBpcyB0aGUgbWluZCB3aGljaCBoYXRoIHdpc2RvbS4gVGhlIHNldmVuIGhlYWRzIGFyZSBzZXZlbiBtb3VudGFpbnMsIG9uIHdoaWNoIHRoZSB3b21hbiBzaXR0ZXRoLgpBbmQgdGhlcmUgYXJlIHNldmVuIGtpbmdzOiBmaXZlIGFyZSBmYWxsZW4sIGFuZCBvbmUgaXMsIGFuZCB0aGUgb3RoZXIgaXMgbm90IHlldCBjb21lOyBhbmQgd2hlbiBoZSBjb21ldGgsIGhlIG11c3QgY29udGludWUgYSBzaG9ydCBzcGFjZS4KQW5kIHRoZSBiZWFzdCB0aGF0IHdhcywgYW5kIGlzIG5vdCwgZXZlbiBoZSBpcyB0aGUgZWlnaHRoLCBhbmQgaXMgb2YgdGhlIHNldmVuLCBhbmQgZ29ldGggaW50byBwZXJkaXRpb24uCkFuZCB0aGUgdGVuIGhvcm5zIHdoaWNoIHRob3Ugc2F3ZXN0IGFyZSB0ZW4ga2luZ3MsIHdoaWNoIGhhdmUgcmVjZWl2ZWQgbm8ga2luZ2RvbSBhcyB5ZXQ7IGJ1dCByZWNlaXZlIHBvd2VyIGFzIGtpbmdzIG9uZSBob3VyIHdpdGggdGhlIGJlYXN0LgpUaGVzZSBoYXZlIG9uZSBtaW5kLCBhbmQgc2hhbGwgZ2l2ZSB0aGVpciBwb3dlciBhbmQgc3RyZW5ndGggdW50byB0aGUgYmVhc3QuClRoZXNlIHNoYWxsIG1ha2Ugd2FyIHdpdGggdGhlIExhbWIsIGFuZCB0aGUgTGFtYiBzaGFsbCBvdmVyY29tZSB0aGVtOiBmb3IgaGUgaXMgTG9yZCBvZiBsb3JkcywgYW5kIEtpbmcgb2Yga2luZ3M6IGFuZCB0aGV5IHRoYXQgYXJlIHdpdGggaGltIGFyZSBjYWxsZWQsIGFuZCBjaG9zZW4sIGFuZCBmYWl0aGZ1bC4KQW5kIGhlIHNhaXRoIHVudG8gbWUsIFRoZSB3YXRlcnMgd2hpY2ggdGhvdSBzYXdlc3QsIHdoZXJlIHRoZSB3aG9yZSBzaXR0ZXRoLCBhcmUgcGVvcGxlcywgYW5kIG11bHRpdHVkZXMsIGFuZCBuYXRpb25zLCBhbmQgdG9uZ3Vlcy4KQW5kIHRoZSB0ZW4gaG9ybnMgd2hpY2ggdGhvdSBzYXdlc3QgdXBvbiB0aGUgYmVhc3QsIHRoZXNlIHNoYWxsIGhhdGUgdGhlIHdob3JlLCBhbmQgc2hhbGwgbWFrZSBoZXIgZGVzb2xhdGUgYW5kIG5ha2VkLCBhbmQgc2hhbGwgZWF0IGhlciBmbGVzaCwgYW5kIGJ1cm4gaGVyIHdpdGggZmlyZS4KRm9yIEdvZCBoYXRoIHB1dCBpbiB0aGVpciBoZWFydHMgdG8gZnVsZmlsIGhpcyB3aWxsLCBhbmQgdG8gYWdyZWUsIGFuZCBnaXZlIHRoZWlyIGtpbmdkb20gdW50byB0aGUgYmVhc3QsIHVudGlsIHRoZSB3b3JkcyBvZiBHb2Qgc2hhbGwgYmUgZnVsZmlsbGVkLgpBbmQgdGhlIHdvbWFuIHdoaWNoIHRob3Ugc2F3ZXN0IGlzIHRoYXQgZ3JlYXQgY2l0eSwgd2hpY2ggcmVpZ25ldGggb3ZlciB0aGUga2luZ3Mgb2YgdGhlIGVhcnRoLgpBbmQgYWZ0ZXIgdGhlc2UgdGhpbmdzIEkgc2F3IGFub3RoZXIgYW5nZWwgY29tZSBkb3duIGZyb20gaGVhdmVuLCBoYXZpbmcgZ3JlYXQgcG93ZXI7IGFuZCB0aGUgZWFydGggd2FzIGxpZ2h0ZW5lZCB3aXRoIGhpcyBnbG9yeS4KQW5kIGhlIGNyaWVkIG1pZ2h0aWx5IHdpdGggYSBzdHJvbmcgdm9pY2UsIHNheWluZywgQmFieWxvbiB0aGUgZ3JlYXQgaXMgZmFsbGVuLCBpcyBmYWxsZW4sIGFuZCBpcyBiZWNvbWUgdGhlIGhhYml0YXRpb24gb2YgZGV2aWxzLCBhbmQgdGhlIGhvbGQgb2YgZXZlcnkgZm91bCBzcGlyaXQsIGFuZCBhIGNhZ2Ugb2YgZXZlcnkgdW5jbGVhbiBhbmQgaGF0ZWZ1bCBiaXJkLgpGb3IgYWxsIG5hdGlvbnMgaGF2ZSBkcnVuayBvZiB0aGUgd2luZSBvZiB0aGUgd3JhdGggb2YgaGVyIGZvcm5pY2F0aW9uLCBhbmQgdGhlIGtpbmdzIG9mIHRoZSBlYXJ0aCBoYXZlIGNvbW1pdHRlZCBmb3JuaWNhdGlvbiB3aXRoIGhlciwgYW5kIHRoZSBtZXJjaGFudHMgb2YgdGhlIGVhcnRoIGFyZSB3YXhlZCByaWNoIHRocm91Z2ggdGhlIGFidW5kYW5jZSBvZiBoZXIgZGVsaWNhY2llcy4KQW5kIEkgaGVhcmQgYW5vdGhlciB2b2ljZSBmcm9tIGhlYXZlbiwgc2F5aW5nLCBDb21lIG91dCBvZiBoZXIsIG15IHBlb3BsZSwgdGhhdCB5ZSBiZSBub3QgcGFydGFrZXJzIG9mIGhlciBzaW5zLCBhbmQgdGhhdCB5ZSByZWNlaXZlIG5vdCBvZiBoZXIgcGxhZ3Vlcy4KRm9yIGhlciBzaW5zIGhhdmUgcmVhY2hlZCB1bnRvIGhlYXZlbiwgYW5kIEdvZCBoYXRoIHJlbWVtYmVyZWQgaGVyIGluaXF1aXRpZXMuClJld2FyZCBoZXIgZXZlbiBhcyBzaGUgcmV3YXJkZWQgeW91LCBhbmQgZG91YmxlIHVudG8gaGVyIGRvdWJsZSBhY2NvcmRpbmcgdG8gaGVyIHdvcmtzOiBpbiB0aGUgY3VwIHdoaWNoIHNoZSBoYXRoIGZpbGxlZCBmaWxsIHRvIGhlciBkb3VibGUuCkhvdyBtdWNoIHNoZSBoYXRoIGdsb3JpZmllZCBoZXJzZWxmLCBhbmQgbGl2ZWQgZGVsaWNpb3VzbHksIHNvIG11Y2ggdG9ybWVudCBhbmQgc29ycm93IGdpdmUgaGVyOiBmb3Igc2hlIHNhaXRoIGluIGhlciBoZWFydCwgSSBzaXQgYSBxdWVlbiwgYW5kIGFtIG5vIHdpZG93LCBhbmQgc2hhbGwgc2VlIG5vIHNvcnJvdy4KVGhlcmVmb3JlIHNoYWxsIGhlciBwbGFndWVzIGNvbWUgaW4gb25lIGRheSwgZGVhdGgsIGFuZCBtb3VybmluZywgYW5kIGZhbWluZTsgYW5kIHNoZSBzaGFsbCBiZSB1dHRlcmx5IGJ1cm5lZCB3aXRoIGZpcmU6IGZvciBzdHJvbmcgaXMgdGhlIExvcmQgR29kIHdobyBqdWRnZXRoIGhlci4KQW5kIHRoZSBraW5ncyBvZiB0aGUgZWFydGgsIHdobyBoYXZlIGNvbW1pdHRlZCBmb3JuaWNhdGlvbiBhbmQgbGl2ZWQgZGVsaWNpb3VzbHkgd2l0aCBoZXIsIHNoYWxsIGJld2FpbCBoZXIsIGFuZCBsYW1lbnQgZm9yIGhlciwgd2hlbiB0aGV5IHNoYWxsIHNlZSB0aGUgc21va2Ugb2YgaGVyIGJ1cm5pbmcsClN0YW5kaW5nIGFmYXIgb2ZmIGZvciB0aGUgZmVhciBvZiBoZXIgdG9ybWVudCwgc2F5aW5nLCBBbGFzLCBhbGFzIHRoYXQgZ3JlYXQgY2l0eSBCYWJ5bG9uLCB0aGF0IG1pZ2h0eSBjaXR5ISBmb3IgaW4gb25lIGhvdXIgaXMgdGh5IGp1ZGdtZW50IGNvbWUuCkFuZCB0aGUgbWVyY2hhbnRzIG9mIHRoZSBlYXJ0aCBzaGFsbCB3ZWVwIGFuZCBtb3VybiBvdmVyIGhlcjsgZm9yIG5vIG1hbiBidXlldGggdGhlaXIgbWVyY2hhbmRpc2UgYW55IG1vcmU6ClRoZSBtZXJjaGFuZGlzZSBvZiBnb2xkLCBhbmQgc2lsdmVyLCBhbmQgcHJlY2lvdXMgc3RvbmVzLCBhbmQgb2YgcGVhcmxzLCBhbmQgZmluZSBsaW5lbiwgYW5kIHB1cnBsZSwgYW5kIHNpbGssIGFuZCBzY2FybGV0LCBhbmQgYWxsIHRoeWluZSB3b29kLCBhbmQgYWxsIG1hbm5lciB2ZXNzZWxzIG9mIGl2b3J5LCBhbmQgYWxsIG1hbm5lciB2ZXNzZWxzIG9mIG1vc3QgcHJlY2lvdXMgd29vZCwgYW5kIG9mIGJyYXNzLCBhbmQgaXJvbiwgYW5kIG1hcmJsZSwKQW5kIGNpbm5hbW9uLCBhbmQgb2RvdXJzLCBhbmQgb2ludG1lbnRzLCBhbmQgZnJhbmtpbmNlbnNlLCBhbmQgd2luZSwgYW5kIG9pbCwgYW5kIGZpbmUgZmxvdXIsIGFuZCB3aGVhdCwgYW5kIGJlYXN0cywgYW5kIHNoZWVwLCBhbmQgaG9yc2VzLCBhbmQgY2hhcmlvdHMsIGFuZCBzbGF2ZXMsIGFuZCBzb3VscyBvZiBtZW4uCkFuZCB0aGUgZnJ1aXRzIHRoYXQgdGh5IHNvdWwgbHVzdGVkIGFmdGVyIGFyZSBkZXBhcnRlZCBmcm9tIHRoZWUsIGFuZCBhbGwgdGhpbmdzIHdoaWNoIHdlcmUgZGFpbnR5IGFuZCBnb29kbHkgYXJlIGRlcGFydGVkIGZyb20gdGhlZSwgYW5kIHRob3Ugc2hhbHQgZmluZCB0aGVtIG5vIG1vcmUgYXQgYWxsLgpUaGUgbWVyY2hhbnRzIG9mIHRoZXNlIHRoaW5ncywgd2hpY2ggd2VyZSBtYWRlIHJpY2ggYnkgaGVyLCBzaGFsbCBzdGFuZCBhZmFyIG9mZiBmb3IgdGhlIGZlYXIgb2YgaGVyIHRvcm1lbnQsIHdlZXBpbmcgYW5kIHdhaWxpbmcsCkFuZCBzYXlpbmcsIEFsYXMsIGFsYXMgdGhhdCBncmVhdCBjaXR5LCB0aGF0IHdhcyBjbG90aGVkIGluIGZpbmUgbGluZW4sIGFuZCBwdXJwbGUsIGFuZCBzY2FybGV0LCBhbmQgZGVja2VkIHdpdGggZ29sZCwgYW5kIHByZWNpb3VzIHN0b25lcywgYW5kIHBlYXJscyEKRm9yIGluIG9uZSBob3VyIHNvIGdyZWF0IHJpY2hlcyBpcyBjb21lIHRvIG5vdWdodC4gQW5kIGV2ZXJ5IHNoaXBtYXN0ZXIsIGFuZCBhbGwgdGhlIGNvbXBhbnkgaW4gc2hpcHMsIGFuZCBzYWlsb3JzLCBhbmQgYXMgbWFueSBhcyB0cmFkZSBieSBzZWEsIHN0b29kIGFmYXIgb2ZmLApBbmQgY3JpZWQgd2hlbiB0aGV5IHNhdyB0aGUgc21va2Ugb2YgaGVyIGJ1cm5pbmcsIHNheWluZywgV2hhdCBjaXR5IGlzIGxpa2UgdW50byB0aGlzIGdyZWF0IGNpdHkhCkFuZCB0aGV5IGNhc3QgZHVzdCBvbiB0aGVpciBoZWFkcywgYW5kIGNyaWVkLCB3ZWVwaW5nIGFuZCB3YWlsaW5nLCBzYXlpbmcsIEFsYXMsIGFsYXMgdGhhdCBncmVhdCBjaXR5LCB3aGVyZWluIHdlcmUgbWFkZSByaWNoIGFsbCB0aGF0IGhhZCBzaGlwcyBpbiB0aGUgc2VhIGJ5IHJlYXNvbiBvZiBoZXIgY29zdGxpbmVzcyEgZm9yIGluIG9uZSBob3VyIGlzIHNoZSBtYWRlIGRlc29sYXRlLgpSZWpvaWNlIG92ZXIgaGVyLCB0aG91IGhlYXZlbiwgYW5kIHllIGhvbHkgYXBvc3RsZXMgYW5kIHByb3BoZXRzOyBmb3IgR29kIGhhdGggYXZlbmdlZCB5b3Ugb24gaGVyLgpBbmQgYSBtaWdodHkgYW5nZWwgdG9vayB1cCBhIHN0b25lIGxpa2UgYSBncmVhdCBtaWxsc3RvbmUsIGFuZCBjYXN0IGl0IGludG8gdGhlIHNlYSwgc2F5aW5nLCBUaHVzIHdpdGggdmlvbGVuY2Ugc2hhbGwgdGhhdCBncmVhdCBjaXR5IEJhYnlsb24gYmUgdGhyb3duIGRvd24sIGFuZCBzaGFsbCBiZSBmb3VuZCBubyBtb3JlIGF0IGFsbC4KQW5kIHRoZSB2b2ljZSBvZiBoYXJwZXJzLCBhbmQgbXVzaWNpYW5zLCBhbmQgb2YgcGlwZXJzLCBhbmQgdHJ1bXBldGVycywgc2hhbGwgYmUgaGVhcmQgbm8gbW9yZSBhdCBhbGwgaW4gdGhlZTsgYW5kIG5vIGNyYWZ0c21hbiwgb2Ygd2hhdHNvZXZlciBjcmFmdCBoZSBiZSwgc2hhbGwgYmUgZm91bmQgYW55IG1vcmUgaW4gdGhlZTsgYW5kIHRoZSBzb3VuZCBvZiBhIG1pbGxzdG9uZSBzaGFsbCBiZSBoZWFyZCBubyBtb3JlIGF0IGFsbCBpbiB0aGVlOwpBbmQgdGhlIGxpZ2h0IG9mIGEgY2FuZGxlIHNoYWxsIHNoaW5lIG5vIG1vcmUgYXQgYWxsIGluIHRoZWU7IGFuZCB0aGUgdm9pY2Ugb2YgdGhlIGJyaWRlZ3Jvb20gYW5kIG9mIHRoZSBicmlkZSBzaGFsbCBiZSBoZWFyZCBubyBtb3JlIGF0IGFsbCBpbiB0aGVlOiBmb3IgdGh5IG1lcmNoYW50cyB3ZXJlIHRoZSBncmVhdCBtZW4gb2YgdGhlIGVhcnRoOyBmb3IgYnkgdGh5IHNvcmNlcmllcyB3ZXJlIGFsbCBuYXRpb25zIGRlY2VpdmVkLgpBbmQgaW4gaGVyIHdhcyBmb3VuZCB0aGUgYmxvb2Qgb2YgcHJvcGhldHMsIGFuZCBvZiBzYWludHMsIGFuZCBvZiBhbGwgdGhhdCB3ZXJlIHNsYWluIHVwb24gdGhlIGVhcnRoLgpBbmQgYWZ0ZXIgdGhlc2UgdGhpbmdzIEkgaGVhcmQgYSBncmVhdCB2b2ljZSBvZiBtdWNoIHBlb3BsZSBpbiBoZWF2ZW4sIHNheWluZywgQWxsZWx1aWE7IFNhbHZhdGlvbiwgYW5kIGdsb3J5LCBhbmQgaG9ub3VyLCBhbmQgcG93ZXIsIHVudG8gdGhlIExvcmQgb3VyIEdvZDoKRm9yIHRydWUgYW5kIHJpZ2h0ZW91cyBhcmUgaGlzIGp1ZGdtZW50czogZm9yIGhlIGhhdGgganVkZ2VkIHRoZSBncmVhdCB3aG9yZSwgd2hpY2ggZGlkIGNvcnJ1cHQgdGhlIGVhcnRoIHdpdGggaGVyIGZvcm5pY2F0aW9uLCBhbmQgaGF0aCBhdmVuZ2VkIHRoZSBibG9vZCBvZiBoaXMgc2VydmFudHMgYXQgaGVyIGhhbmQuCkFuZCBhZ2FpbiB0aGV5IHNhaWQsIEFsbGVsdWlhIEFuZCBoZXIgc21va2Ugcm9zZSB1cCBmb3IgZXZlciBhbmQgZXZlci4KQW5kIHRoZSBmb3VyIGFuZCB0d2VudHkgZWxkZXJzIGFuZCB0aGUgZm91ciBiZWFzdHMgZmVsbCBkb3duIGFuZCB3b3JzaGlwcGVkIEdvZCB0aGF0IHNhdCBvbiB0aGUgdGhyb25lLCBzYXlpbmcsIEFtZW47IEFsbGVsdWlhLgpBbmQgYSB2b2ljZSBjYW1lIG91dCBvZiB0aGUgdGhyb25lLCBzYXlpbmcsIFByYWlzZSBvdXIgR29kLCBhbGwgeWUgaGlzIHNlcnZhbnRzLCBhbmQgeWUgdGhhdCBmZWFyIGhpbSwgYm90aCBzbWFsbCBhbmQgZ3JlYXQuCkFuZCBJIGhlYXJkIGFzIGl0IHdlcmUgdGhlIHZvaWNlIG9mIGEgZ3JlYXQgbXVsdGl0dWRlLCBhbmQgYXMgdGhlIHZvaWNlIG9mIG1hbnkgd2F0ZXJzLCBhbmQgYXMgdGhlIHZvaWNlIG9mIG1pZ2h0eSB0aHVuZGVyaW5ncywgc2F5aW5nLCBBbGxlbHVpYTogZm9yIHRoZSBMb3JkIEdvZCBvbW5pcG90ZW50IHJlaWduZXRoLgpMZXQgdXMgYmUgZ2xhZCBhbmQgcmVqb2ljZSwgYW5kIGdpdmUgaG9ub3VyIHRvIGhpbTogZm9yIHRoZSBtYXJyaWFnZSBvZiB0aGUgTGFtYiBpcyBjb21lLCBhbmQgaGlzIHdpZmUgaGF0aCBtYWRlIGhlcnNlbGYgcmVhZHkuCkFuZCB0byBoZXIgd2FzIGdyYW50ZWQgdGhhdCBzaGUgc2hvdWxkIGJlIGFycmF5ZWQgaW4gZmluZSBsaW5lbiwgY2xlYW4gYW5kIHdoaXRlOiBmb3IgdGhlIGZpbmUgbGluZW4gaXMgdGhlIHJpZ2h0ZW91c25lc3Mgb2Ygc2FpbnRzLgpBbmQgaGUgc2FpdGggdW50byBtZSwgV3JpdGUsIEJsZXNzZWQgYXJlIHRoZXkgd2hpY2ggYXJlIGNhbGxlZCB1bnRvIHRoZSBtYXJyaWFnZSBzdXBwZXIgb2YgdGhlIExhbWIuIEFuZCBoZSBzYWl0aCB1bnRvIG1lLCBUaGVzZSBhcmUgdGhlIHRydWUgc2F5aW5ncyBvZiBHb2QuCkFuZCBJIGZlbGwgYXQgaGlzIGZlZXQgdG8gd29yc2hpcCBoaW0uIEFuZCBoZSBzYWlkIHVudG8gbWUsIFNlZSB0aG91IGRvIGl0IG5vdDogSSBhbSB0aHkgZmVsbG93c2VydmFudCwgYW5kIG9mIHRoeSBicmV0aHJlbiB0aGF0IGhhdmUgdGhlIHRlc3RpbW9ueSBvZiBKZXN1czogd29yc2hpcCBHb2Q6IGZvciB0aGUgdGVzdGltb255IG9mIEplc3VzIGlzIHRoZSBzcGlyaXQgb2YgcHJvcGhlY3kuCkFuZCBJIHNhdyBoZWF2ZW4gb3BlbmVkLCBhbmQgYmVob2xkIGEgd2hpdGUgaG9yc2U7IGFuZCBoZSB0aGF0IHNhdCB1cG9uIGhpbSB3YXMgY2FsbGVkIEZhaXRoZnVsIGFuZCBUcnVlLCBhbmQgaW4gcmlnaHRlb3VzbmVzcyBoZSBkb3RoIGp1ZGdlIGFuZCBtYWtlIHdhci4KSGlzIGV5ZXMgd2VyZSBhcyBhIGZsYW1lIG9mIGZpcmUsIGFuZCBvbiBoaXMgaGVhZCB3ZXJlIG1hbnkgY3Jvd25zOyBhbmQgaGUgaGFkIGEgbmFtZSB3cml0dGVuLCB0aGF0IG5vIG1hbiBrbmV3LCBidXQgaGUgaGltc2VsZi4KQW5kIGhlIHdhcyBjbG90aGVkIHdpdGggYSB2ZXN0dXJlIGRpcHBlZCBpbiBibG9vZDogYW5kIGhpcyBuYW1lIGlzIGNhbGxlZCBUaGUgV29yZCBvZiBHb2QuCkFuZCB0aGUgYXJtaWVzIHdoaWNoIHdlcmUgaW4gaGVhdmVuIGZvbGxvd2VkIGhpbSB1cG9uIHdoaXRlIGhvcnNlcywgY2xvdGhlZCBpbiBmaW5lIGxpbmVuLCB3aGl0ZSBhbmQgY2xlYW4uCkFuZCBvdXQgb2YgaGlzIG1vdXRoIGdvZXRoIGEgc2hhcnAgc3dvcmQsIHRoYXQgd2l0aCBpdCBoZSBzaG91bGQgc21pdGUgdGhlIG5hdGlvbnM6IGFuZCBoZSBzaGFsbCBydWxlIHRoZW0gd2l0aCBhIHJvZCBvZiBpcm9uOiBhbmQgaGUgdHJlYWRldGggdGhlIHdpbmVwcmVzcyBvZiB0aGUgZmllcmNlbmVzcyBhbmQgd3JhdGggb2YgQWxtaWdodHkgR29kLgpBbmQgaGUgaGF0aCBvbiBoaXMgdmVzdHVyZSBhbmQgb24gaGlzIHRoaWdoIGEgbmFtZSB3cml0dGVuLCBLSU5HIE9GIEtJTkdTLCBBTkQgTE9SRCBPRiBMT1JEUy4KQW5kIEkgc2F3IGFuIGFuZ2VsIHN0YW5kaW5nIGluIHRoZSBzdW47IGFuZCBoZSBjcmllZCB3aXRoIGEgbG91ZCB2b2ljZSwgc2F5aW5nIHRvIGFsbCB0aGUgZm93bHMgdGhhdCBmbHkgaW4gdGhlIG1pZHN0IG9mIGhlYXZlbiwgQ29tZSBhbmQgZ2F0aGVyIHlvdXJzZWx2ZXMgdG9nZXRoZXIgdW50byB0aGUgc3VwcGVyIG9mIHRoZSBncmVhdCBHb2Q7ClRoYXQgeWUgbWF5IGVhdCB0aGUgZmxlc2ggb2Yga2luZ3MsIGFuZCB0aGUgZmxlc2ggb2YgY2FwdGFpbnMsIGFuZCB0aGUgZmxlc2ggb2YgbWlnaHR5IG1lbiwgYW5kIHRoZSBmbGVzaCBvZiBob3JzZXMsIGFuZCBvZiB0aGVtIHRoYXQgc2l0IG9uIHRoZW0sIGFuZCB0aGUgZmxlc2ggb2YgYWxsIG1lbiwgYm90aCBmcmVlIGFuZCBib25kLCBib3RoIHNtYWxsIGFuZCBncmVhdC4KQW5kIEkgc2F3IHRoZSBiZWFzdCwgYW5kIHRoZSBraW5ncyBvZiB0aGUgZWFydGgsIGFuZCB0aGVpciBhcm1pZXMsIGdhdGhlcmVkIHRvZ2V0aGVyIHRvIG1ha2Ugd2FyIGFnYWluc3QgaGltIHRoYXQgc2F0IG9uIHRoZSBob3JzZSwgYW5kIGFnYWluc3QgaGlzIGFybXkuCkFuZCB0aGUgYmVhc3Qgd2FzIHRha2VuLCBhbmQgd2l0aCBoaW0gdGhlIGZhbHNlIHByb3BoZXQgdGhhdCB3cm91Z2h0IG1pcmFjbGVzIGJlZm9yZSBoaW0sIHdpdGggd2hpY2ggaGUgZGVjZWl2ZWQgdGhlbSB0aGF0IGhhZCByZWNlaXZlZCB0aGUgbWFyayBvZiB0aGUgYmVhc3QsIGFuZCB0aGVtIHRoYXQgd29yc2hpcHBlZCBoaXMgaW1hZ2UuIFRoZXNlIGJvdGggd2VyZSBjYXN0IGFsaXZlIGludG8gYSBsYWtlIG9mIGZpcmUgYnVybmluZyB3aXRoIGJyaW1zdG9uZS4KQW5kIHRoZSByZW1uYW50IHdlcmUgc2xhaW4gd2l0aCB0aGUgc3dvcmQgb2YgaGltIHRoYXQgc2F0IHVwb24gdGhlIGhvcnNlLCB3aGljaCBzd29yZCBwcm9jZWVkZWQgb3V0IG9mIGhpcyBtb3V0aDogYW5kIGFsbCB0aGUgZm93bHMgd2VyZSBmaWxsZWQgd2l0aCB0aGVpciBmbGVzaC4KQW5kIEkgc2F3IGFuIGFuZ2VsIGNvbWUgZG93biBmcm9tIGhlYXZlbiwgaGF2aW5nIHRoZSBrZXkgb2YgdGhlIGJvdHRvbWxlc3MgcGl0IGFuZCBhIGdyZWF0IGNoYWluIGluIGhpcyBoYW5kLgpBbmQgaGUgbGFpZCBob2xkIG9uIHRoZSBkcmFnb24sIHRoYXQgb2xkIHNlcnBlbnQsIHdoaWNoIGlzIHRoZSBEZXZpbCwgYW5kIFNhdGFuLCBhbmQgYm91bmQgaGltIGEgdGhvdXNhbmQgeWVhcnMsCkFuZCBjYXN0IGhpbSBpbnRvIHRoZSBib3R0b21sZXNzIHBpdCwgYW5kIHNodXQgaGltIHVwLCBhbmQgc2V0IGEgc2VhbCB1cG9uIGhpbSwgdGhhdCBoZSBzaG91bGQgZGVjZWl2ZSB0aGUgbmF0aW9ucyBubyBtb3JlLCB0aWxsIHRoZSB0aG91c2FuZCB5ZWFycyBzaG91bGQgYmUgZnVsZmlsbGVkOiBhbmQgYWZ0ZXIgdGhhdCBoZSBtdXN0IGJlIGxvb3NlZCBhIGxpdHRsZSBzZWFzb24uCkFuZCBJIHNhdyB0aHJvbmVzLCBhbmQgdGhleSBzYXQgdXBvbiB0aGVtLCBhbmQganVkZ21lbnQgd2FzIGdpdmVuIHVudG8gdGhlbTogYW5kIEkgc2F3IHRoZSBzb3VscyBvZiB0aGVtIHRoYXQgd2VyZSBiZWhlYWRlZCBmb3IgdGhlIHdpdG5lc3Mgb2YgSmVzdXMsIGFuZCBmb3IgdGhlIHdvcmQgb2YgR29kLCBhbmQgd2hpY2ggaGFkIG5vdCB3b3JzaGlwcGVkIHRoZSBiZWFzdCwgbmVpdGhlciBoaXMgaW1hZ2UsIG5laXRoZXIgaGFkIHJlY2VpdmVkIGhpcyBtYXJrIHVwb24gdGhlaXIgZm9yZWhlYWRzLCBvciBpbiB0aGVpciBoYW5kczsgYW5kIHRoZXkgbGl2ZWQgYW5kIHJlaWduZWQgd2l0aCBDaHJpc3QgYSB0aG91c2FuZCB5ZWFycy4KQnV0IHRoZSByZXN0IG9mIHRoZSBkZWFkIGxpdmVkIG5vdCBhZ2FpbiB1bnRpbCB0aGUgdGhvdXNhbmQgeWVhcnMgd2VyZSBmaW5pc2hlZC4gVGhpcyBpcyB0aGUgZmlyc3QgcmVzdXJyZWN0aW9uLgpCbGVzc2VkIGFuZCBob2x5IGlzIGhlIHRoYXQgaGF0aCBwYXJ0IGluIHRoZSBmaXJzdCByZXN1cnJlY3Rpb246IG9uIHN1Y2ggdGhlIHNlY29uZCBkZWF0aCBoYXRoIG5vIHBvd2VyLCBidXQgdGhleSBzaGFsbCBiZSBwcmllc3RzIG9mIEdvZCBhbmQgb2YgQ2hyaXN0LCBhbmQgc2hhbGwgcmVpZ24gd2l0aCBoaW0gYSB0aG91c2FuZCB5ZWFycy4KQW5kIHdoZW4gdGhlIHRob3VzYW5kIHllYXJzIGFyZSBleHBpcmVkLCBTYXRhbiBzaGFsbCBiZSBsb29zZWQgb3V0IG9mIGhpcyBwcmlzb24sCkFuZCBzaGFsbCBnbyBvdXQgdG8gZGVjZWl2ZSB0aGUgbmF0aW9ucyB3aGljaCBhcmUgaW4gdGhlIGZvdXIgcXVhcnRlcnMgb2YgdGhlIGVhcnRoLCBHb2csIGFuZCBNYWdvZywgdG8gZ2F0aGVyIHRoZW0gdG9nZXRoZXIgdG8gYmF0dGxlOiB0aGUgbnVtYmVyIG9mIHdob20gaXMgYXMgdGhlIHNhbmQgb2YgdGhlIHNlYS4KQW5kIHRoZXkgd2VudCB1cCBvbiB0aGUgYnJlYWR0aCBvZiB0aGUgZWFydGgsIGFuZCBjb21wYXNzZWQgdGhlIGNhbXAgb2YgdGhlIHNhaW50cyBhYm91dCwgYW5kIHRoZSBiZWxvdmVkIGNpdHk6IGFuZCBmaXJlIGNhbWUgZG93biBmcm9tIEdvZCBvdXQgb2YgaGVhdmVuLCBhbmQgZGV2b3VyZWQgdGhlbS4KQW5kIHRoZSBkZXZpbCB0aGF0IGRlY2VpdmVkIHRoZW0gd2FzIGNhc3QgaW50byB0aGUgbGFrZSBvZiBmaXJlIGFuZCBicmltc3RvbmUsIHdoZXJlIHRoZSBiZWFzdCBhbmQgdGhlIGZhbHNlIHByb3BoZXQgYXJlLCBhbmQgc2hhbGwgYmUgdG9ybWVudGVkIGRheSBhbmQgbmlnaHQgZm9yIGV2ZXIgYW5kIGV2ZXIuCkFuZCBJIHNhdyBhIGdyZWF0IHdoaXRlIHRocm9uZSwgYW5kIGhpbSB0aGF0IHNhdCBvbiBpdCwgZnJvbSB3aG9zZSBmYWNlIHRoZSBlYXJ0aCBhbmQgdGhlIGhlYXZlbiBmbGVkIGF3YXk7IGFuZCB0aGVyZSB3YXMgZm91bmQgbm8gcGxhY2UgZm9yIHRoZW0uCkFuZCBJIHNhdyB0aGUgZGVhZCwgc21hbGwgYW5kIGdyZWF0LCBzdGFuZCBiZWZvcmUgR29kOyBhbmQgdGhlIGJvb2tzIHdlcmUgb3BlbmVkOiBhbmQgYW5vdGhlciBib29rIHdhcyBvcGVuZWQsIHdoaWNoIGlzIHRoZSBib29rIG9mIGxpZmU6IGFuZCB0aGUgZGVhZCB3ZXJlIGp1ZGdlZCBvdXQgb2YgdGhvc2UgdGhpbmdzIHdoaWNoIHdlcmUgd3JpdHRlbiBpbiB0aGUgYm9va3MsIGFjY29yZGluZyB0byB0aGVpciB3b3Jrcy4KQW5kIHRoZSBzZWEgZ2F2ZSB1cCB0aGUgZGVhZCB3aGljaCB3ZXJlIGluIGl0OyBhbmQgZGVhdGggYW5kIGhlbGwgZGVsaXZlcmVkIHVwIHRoZSBkZWFkIHdoaWNoIHdlcmUgaW4gdGhlbTogYW5kIHRoZXkgd2VyZSBqdWRnZWQgZXZlcnkgbWFuIGFjY29yZGluZyB0byB0aGVpciB3b3Jrcy4KQW5kIGRlYXRoIGFuZCBoZWxsIHdlcmUgY2FzdCBpbnRvIHRoZSBsYWtlIG9mIGZpcmUuIFRoaXMgaXMgdGhlIHNlY29uZCBkZWF0aC4KQW5kIHdob3NvZXZlciB3YXMgbm90IGZvdW5kIHdyaXR0ZW4gaW4gdGhlIGJvb2sgb2YgbGlmZSB3YXMgY2FzdCBpbnRvIHRoZSBsYWtlIG9mIGZpcmUuCkFuZCBJIHNhdyBhIG5ldyBoZWF2ZW4gYW5kIGEgbmV3IGVhcnRoOiBmb3IgdGhlIGZpcnN0IGhlYXZlbiBhbmQgdGhlIGZpcnN0IGVhcnRoIHdlcmUgcGFzc2VkIGF3YXk7IGFuZCB0aGVyZSB3YXMgbm8gbW9yZSBzZWEuCkFuZCBJIEpvaG4gc2F3IHRoZSBob2x5IGNpdHksIG5ldyBKZXJ1c2FsZW0sIGNvbWluZyBkb3duIGZyb20gR29kIG91dCBvZiBoZWF2ZW4sIHByZXBhcmVkIGFzIGEgYnJpZGUgYWRvcm5lZCBmb3IgaGVyIGh1c2JhbmQuCkFuZCBJIGhlYXJkIGEgZ3JlYXQgdm9pY2Ugb3V0IG9mIGhlYXZlbiBzYXlpbmcsIEJlaG9sZCwgdGhlIHRhYmVybmFjbGUgb2YgR29kIGlzIHdpdGggbWVuLCBhbmQgaGUgd2lsbCBkd2VsbCB3aXRoIHRoZW0sIGFuZCB0aGV5IHNoYWxsIGJlIGhpcyBwZW9wbGUsIGFuZCBHb2QgaGltc2VsZiBzaGFsbCBiZSB3aXRoIHRoZW0sIGFuZCBiZSB0aGVpciBHb2QuCkFuZCBHb2Qgc2hhbGwgd2lwZSBhd2F5IGFsbCB0ZWFycyBmcm9tIHRoZWlyIGV5ZXM7IGFuZCB0aGVyZSBzaGFsbCBiZSBubyBtb3JlIGRlYXRoLCBuZWl0aGVyIHNvcnJvdywgbm9yIGNyeWluZywgbmVpdGhlciBzaGFsbCB0aGVyZSBiZSBhbnkgbW9yZSBwYWluOiBmb3IgdGhlIGZvcm1lciB0aGluZ3MgYXJlIHBhc3NlZCBhd2F5LgpBbmQgaGUgdGhhdCBzYXQgdXBvbiB0aGUgdGhyb25lIHNhaWQsIEJlaG9sZCwgSSBtYWtlIGFsbCB0aGluZ3MgbmV3LiBBbmQgaGUgc2FpZCB1bnRvIG1lLCBXcml0ZTogZm9yIHRoZXNlIHdvcmRzIGFyZSB0cnVlIGFuZCBmYWl0aGZ1bC4KQW5kIGhlIHNhaWQgdW50byBtZSwgSXQgaXMgZG9uZS4gSSBhbSBBbHBoYSBhbmQgT21lZ2EsIHRoZSBiZWdpbm5pbmcgYW5kIHRoZSBlbmQuIEkgd2lsbCBnaXZlIHVudG8gaGltIHRoYXQgaXMgYXRoaXJzdCBvZiB0aGUgZm91bnRhaW4gb2YgdGhlIHdhdGVyIG9mIGxpZmUgZnJlZWx5LgpIZSB0aGF0IG92ZXJjb21ldGggc2hhbGwgaW5oZXJpdCBhbGwgdGhpbmdzOyBhbmQgSSB3aWxsIGJlIGhpcyBHb2QsIGFuZCBoZSBzaGFsbCBiZSBteSBzb24uCkJ1dCB0aGUgZmVhcmZ1bCwgYW5kIHVuYmVsaWV2aW5nLCBhbmQgdGhlIGFib21pbmFibGUsIGFuZCBtdXJkZXJlcnMsIGFuZCB3aG9yZW1vbmdlcnMsIGFuZCBzb3JjZXJlcnMsIGFuZCBpZG9sYXRlcnMsIGFuZCBhbGwgbGlhcnMsIHNoYWxsIGhhdmUgdGhlaXIgcGFydCBpbiB0aGUgbGFrZSB3aGljaCBidXJuZXRoIHdpdGggZmlyZSBhbmQgYnJpbXN0b25lOiB3aGljaCBpcyB0aGUgc2Vjb25kIGRlYXRoLgpBbmQgdGhlcmUgY2FtZSB1bnRvIG1lIG9uZSBvZiB0aGUgc2V2ZW4gYW5nZWxzIHdoaWNoIGhhZCB0aGUgc2V2ZW4gdmlhbHMgZnVsbCBvZiB0aGUgc2V2ZW4gbGFzdCBwbGFndWVzLCBhbmQgdGFsa2VkIHdpdGggbWUsIHNheWluZywgQ29tZSBoaXRoZXIsIEkgd2lsbCBzaGV3IHRoZWUgdGhlIGJyaWRlLCB0aGUgTGFtYidzIHdpZmUuCkFuZCBoZSBjYXJyaWVkIG1lIGF3YXkgaW4gdGhlIHNwaXJpdCB0byBhIGdyZWF0IGFuZCBoaWdoIG1vdW50YWluLCBhbmQgc2hld2VkIG1lIHRoYXQgZ3JlYXQgY2l0eSwgdGhlIGhvbHkgSmVydXNhbGVtLCBkZXNjZW5kaW5nIG91dCBvZiBoZWF2ZW4gZnJvbSBHb2QsCkhhdmluZyB0aGUgZ2xvcnkgb2YgR29kOiBhbmQgaGVyIGxpZ2h0IHdhcyBsaWtlIHVudG8gYSBzdG9uZSBtb3N0IHByZWNpb3VzLCBldmVuIGxpa2UgYSBqYXNwZXIgc3RvbmUsIGNsZWFyIGFzIGNyeXN0YWw7CkFuZCBoYWQgYSB3YWxsIGdyZWF0IGFuZCBoaWdoLCBhbmQgaGFkIHR3ZWx2ZSBnYXRlcywgYW5kIGF0IHRoZSBnYXRlcyB0d2VsdmUgYW5nZWxzLCBhbmQgbmFtZXMgd3JpdHRlbiB0aGVyZW9uLCB3aGljaCBhcmUgdGhlIG5hbWVzIG9mIHRoZSB0d2VsdmUgdHJpYmVzIG9mIHRoZSBjaGlsZHJlbiBvZiBJc3JhZWw6Ck9uIHRoZSBlYXN0IHRocmVlIGdhdGVzOyBvbiB0aGUgbm9ydGggdGhyZWUgZ2F0ZXM7IG9uIHRoZSBzb3V0aCB0aHJlZSBnYXRlczsgYW5kIG9uIHRoZSB3ZXN0IHRocmVlIGdhdGVzLgpBbmQgdGhlIHdhbGwgb2YgdGhlIGNpdHkgaGFkIHR3ZWx2ZSBmb3VuZGF0aW9ucywgYW5kIGluIHRoZW0gdGhlIG5hbWVzIG9mIHRoZSB0d2VsdmUgYXBvc3RsZXMgb2YgdGhlIExhbWIuCkFuZCBoZSB0aGF0IHRhbGtlZCB3aXRoIG1lIGhhZCBhIGdvbGRlbiByZWVkIHRvIG1lYXN1cmUgdGhlIGNpdHksIGFuZCB0aGUgZ2F0ZXMgdGhlcmVvZiwgYW5kIHRoZSB3YWxsIHRoZXJlb2YuCkFuZCB0aGUgY2l0eSBsaWV0aCBmb3Vyc3F1YXJlLCBhbmQgdGhlIGxlbmd0aCBpcyBhcyBsYXJnZSBhcyB0aGUgYnJlYWR0aDogYW5kIGhlIG1lYXN1cmVkIHRoZSBjaXR5IHdpdGggdGhlIHJlZWQsIHR3ZWx2ZSB0aG91c2FuZCBmdXJsb25ncy4gVGhlIGxlbmd0aCBhbmQgdGhlIGJyZWFkdGggYW5kIHRoZSBoZWlnaHQgb2YgaXQgYXJlIGVxdWFsLgpBbmQgaGUgbWVhc3VyZWQgdGhlIHdhbGwgdGhlcmVvZiwgYW4gaHVuZHJlZCBhbmQgZm9ydHkgYW5kIGZvdXIgY3ViaXRzLCBhY2NvcmRpbmcgdG8gdGhlIG1lYXN1cmUgb2YgYSBtYW4sIHRoYXQgaXMsIG9mIHRoZSBhbmdlbC4KQW5kIHRoZSBidWlsZGluZyBvZiB0aGUgd2FsbCBvZiBpdCB3YXMgb2YgamFzcGVyOiBhbmQgdGhlIGNpdHkgd2FzIHB1cmUgZ29sZCwgbGlrZSB1bnRvIGNsZWFyIGdsYXNzLgpBbmQgdGhlIGZvdW5kYXRpb25zIG9mIHRoZSB3YWxsIG9mIHRoZSBjaXR5IHdlcmUgZ2FybmlzaGVkIHdpdGggYWxsIG1hbm5lciBvZiBwcmVjaW91cyBzdG9uZXMuIFRoZSBmaXJzdCBmb3VuZGF0aW9uIHdhcyBqYXNwZXI7IHRoZSBzZWNvbmQsIHNhcHBoaXJlOyB0aGUgdGhpcmQsIGEgY2hhbGNlZG9ueTsgdGhlIGZvdXJ0aCwgYW4gZW1lcmFsZDsKVGhlIGZpZnRoLCBzYXJkb255eDsgdGhlIHNpeHRoLCBzYXJkaXVzOyB0aGUgc2V2ZW50aCwgY2hyeXNvbHl0ZTsgdGhlIGVpZ2h0aCwgYmVyeWw7IHRoZSBuaW50aCwgYSB0b3BhejsgdGhlIHRlbnRoLCBhIGNocnlzb3ByYXN1czsgdGhlIGVsZXZlbnRoLCBhIGphY2ludGg7IHRoZSB0d2VsZnRoLCBhbiBhbWV0aHlzdC4KQW5kIHRoZSB0d2VsdmUgZ2F0ZXMgd2VyZSB0d2VsdmUgcGVhcmxzOiBldmVyeSBzZXZlcmFsIGdhdGUgd2FzIG9mIG9uZSBwZWFybDogYW5kIHRoZSBzdHJlZXQgb2YgdGhlIGNpdHkgd2FzIHB1cmUgZ29sZCwgYXMgaXQgd2VyZSB0cmFuc3BhcmVudCBnbGFzcy4KQW5kIEkgc2F3IG5vIHRlbXBsZSB0aGVyZWluOiBmb3IgdGhlIExvcmQgR29kIEFsbWlnaHR5IGFuZCB0aGUgTGFtYiBhcmUgdGhlIHRlbXBsZSBvZiBpdC4KQW5kIHRoZSBjaXR5IGhhZCBubyBuZWVkIG9mIHRoZSBzdW4sIG5laXRoZXIgb2YgdGhlIG1vb24sIHRvIHNoaW5lIGluIGl0OiBmb3IgdGhlIGdsb3J5IG9mIEdvZCBkaWQgbGlnaHRlbiBpdCwgYW5kIHRoZSBMYW1iIGlzIHRoZSBsaWdodCB0aGVyZW9mLgpBbmQgdGhlIG5hdGlvbnMgb2YgdGhlbSB3aGljaCBhcmUgc2F2ZWQgc2hhbGwgd2FsayBpbiB0aGUgbGlnaHQgb2YgaXQ6IGFuZCB0aGUga2luZ3Mgb2YgdGhlIGVhcnRoIGRvIGJyaW5nIHRoZWlyIGdsb3J5IGFuZCBob25vdXIgaW50byBpdC4KQW5kIHRoZSBnYXRlcyBvZiBpdCBzaGFsbCBub3QgYmUgc2h1dCBhdCBhbGwgYnkgZGF5OiBmb3IgdGhlcmUgc2hhbGwgYmUgbm8gbmlnaHQgdGhlcmUuCkFuZCB0aGV5IHNoYWxsIGJyaW5nIHRoZSBnbG9yeSBhbmQgaG9ub3VyIG9mIHRoZSBuYXRpb25zIGludG8gaXQuCkFuZCB0aGVyZSBzaGFsbCBpbiBubyB3aXNlIGVudGVyIGludG8gaXQgYW55IHRoaW5nIHRoYXQgZGVmaWxldGgsIG5laXRoZXIgd2hhdHNvZXZlciB3b3JrZXRoIGFib21pbmF0aW9uLCBvciBtYWtldGggYSBsaWU6IGJ1dCB0aGV5IHdoaWNoIGFyZSB3cml0dGVuIGluIHRoZSBMYW1iJ3MgYm9vayBvZiBsaWZlLgpBbmQgaGUgc2hld2VkIG1lIGEgcHVyZSByaXZlciBvZiB3YXRlciBvZiBsaWZlLCBjbGVhciBhcyBjcnlzdGFsLCBwcm9jZWVkaW5nIG91dCBvZiB0aGUgdGhyb25lIG9mIEdvZCBhbmQgb2YgdGhlIExhbWIuCkluIHRoZSBtaWRzdCBvZiB0aGUgc3RyZWV0IG9mIGl0LCBhbmQgb24gZWl0aGVyIHNpZGUgb2YgdGhlIHJpdmVyLCB3YXMgdGhlcmUgdGhlIHRyZWUgb2YgbGlmZSwgd2hpY2ggYmFyZSB0d2VsdmUgbWFubmVyIG9mIGZydWl0cywgYW5kIHlpZWxkZWQgaGVyIGZydWl0IGV2ZXJ5IG1vbnRoOiBhbmQgdGhlIGxlYXZlcyBvZiB0aGUgdHJlZSB3ZXJlIGZvciB0aGUgaGVhbGluZyBvZiB0aGUgbmF0aW9ucy4KQW5kIHRoZXJlIHNoYWxsIGJlIG5vIG1vcmUgY3Vyc2U6IGJ1dCB0aGUgdGhyb25lIG9mIEdvZCBhbmQgb2YgdGhlIExhbWIgc2hhbGwgYmUgaW4gaXQ7IGFuZCBoaXMgc2VydmFudHMgc2hhbGwgc2VydmUgaGltOgpBbmQgdGhleSBzaGFsbCBzZWUgaGlzIGZhY2U7IGFuZCBoaXMgbmFtZSBzaGFsbCBiZSBpbiB0aGVpciBmb3JlaGVhZHMuCkFuZCB0aGVyZSBzaGFsbCBiZSBubyBuaWdodCB0aGVyZTsgYW5kIHRoZXkgbmVlZCBubyBjYW5kbGUsIG5laXRoZXIgbGlnaHQgb2YgdGhlIHN1bjsgZm9yIHRoZSBMb3JkIEdvZCBnaXZldGggdGhlbSBsaWdodDogYW5kIHRoZXkgc2hhbGwgcmVpZ24gZm9yIGV2ZXIgYW5kIGV2ZXIuCkFuZCBoZSBzYWlkIHVudG8gbWUsIFRoZXNlIHNheWluZ3MgYXJlIGZhaXRoZnVsIGFuZCB0cnVlOiBhbmQgdGhlIExvcmQgR29kIG9mIHRoZSBob2x5IHByb3BoZXRzIHNlbnQgaGlzIGFuZ2VsIHRvIHNoZXcgdW50byBoaXMgc2VydmFudHMgdGhlIHRoaW5ncyB3aGljaCBtdXN0IHNob3J0bHkgYmUgZG9uZS4KQmVob2xkLCBJIGNvbWUgcXVpY2tseTogYmxlc3NlZCBpcyBoZSB0aGF0IGtlZXBldGggdGhlIHNheWluZ3Mgb2YgdGhlIHByb3BoZWN5IG9mIHRoaXMgYm9vay4KQW5kIEkgSm9obiBzYXcgdGhlc2UgdGhpbmdzLCBhbmQgaGVhcmQgdGhlbS4gQW5kIHdoZW4gSSBoYWQgaGVhcmQgYW5kIHNlZW4sIEkgZmVsbCBkb3duIHRvIHdvcnNoaXAgYmVmb3JlIHRoZSBmZWV0IG9mIHRoZSBhbmdlbCB3aGljaCBzaGV3ZWQgbWUgdGhlc2UgdGhpbmdzLgpUaGVuIHNhaXRoIGhlIHVudG8gbWUsIFNlZSB0aG91IGRvIGl0IG5vdDogZm9yIEkgYW0gdGh5IGZlbGxvd3NlcnZhbnQsIGFuZCBvZiB0aHkgYnJldGhyZW4gdGhlIHByb3BoZXRzLCBhbmQgb2YgdGhlbSB3aGljaCBrZWVwIHRoZSBzYXlpbmdzIG9mIHRoaXMgYm9vazogd29yc2hpcCBHb2QuCkFuZCBoZSBzYWl0aCB1bnRvIG1lLCBTZWFsIG5vdCB0aGUgc2F5aW5ncyBvZiB0aGUgcHJvcGhlY3kgb2YgdGhpcyBib29rOiBmb3IgdGhlIHRpbWUgaXMgYXQgaGFuZC4KSGUgdGhhdCBpcyB1bmp1c3QsIGxldCBoaW0gYmUgdW5qdXN0IHN0aWxsOiBhbmQgaGUgd2hpY2ggaXMgZmlsdGh5LCBsZXQgaGltIGJlIGZpbHRoeSBzdGlsbDogYW5kIGhlIHRoYXQgaXMgcmlnaHRlb3VzLCBsZXQgaGltIGJlIHJpZ2h0ZW91cyBzdGlsbDogYW5kIGhlIHRoYXQgaXMgaG9seSwgbGV0IGhpbSBiZSBob2x5IHN0aWxsLgpBbmQsIGJlaG9sZCwgSSBjb21lIHF1aWNrbHk7IGFuZCBteSByZXdhcmQgaXMgd2l0aCBtZSwgdG8gZ2l2ZSBldmVyeSBtYW4gYWNjb3JkaW5nIGFzIGhpcyB3b3JrIHNoYWxsIGJlLgpJIGFtIEFscGhhIGFuZCBPbWVnYSwgdGhlIGJlZ2lubmluZyBhbmQgdGhlIGVuZCwgdGhlIGZpcnN0IGFuZCB0aGUgbGFzdC4KQmxlc3NlZCBhcmUgdGhleSB0aGF0IGRvIGhpcyBjb21tYW5kbWVudHMsIHRoYXQgdGhleSBtYXkgaGF2ZSByaWdodCB0byB0aGUgdHJlZSBvZiBsaWZlLCBhbmQgbWF5IGVudGVyIGluIHRocm91Z2ggdGhlIGdhdGVzIGludG8gdGhlIGNpdHkuCkZvciB3aXRob3V0IGFyZSBkb2dzLCBhbmQgc29yY2VyZXJzLCBhbmQgd2hvcmVtb25nZXJzLCBhbmQgbXVyZGVyZXJzLCBhbmQgaWRvbGF0ZXJzLCBhbmQgd2hvc29ldmVyIGxvdmV0aCBhbmQgbWFrZXRoIGEgbGllLgpJIEplc3VzIGhhdmUgc2VudCBtaW5lIGFuZ2VsIHRvIHRlc3RpZnkgdW50byB5b3UgdGhlc2UgdGhpbmdzIGluIHRoZSBjaHVyY2hlcy4gSSBhbSB0aGUgcm9vdCBhbmQgdGhlIG9mZnNwcmluZyBvZiBEYXZpZCwgYW5kIHRoZSBicmlnaHQgYW5kIG1vcm5pbmcgc3Rhci4KQW5kIHRoZSBTcGlyaXQgYW5kIHRoZSBicmlkZSBzYXksIENvbWUuIEFuZCBsZXQgaGltIHRoYXQgaGVhcmV0aCBzYXksIENvbWUuIEFuZCBsZXQgaGltIHRoYXQgaXMgYXRoaXJzdCBjb21lLiBBbmQgd2hvc29ldmVyIHdpbGwsIGxldCBoaW0gdGFrZSB0aGUgd2F0ZXIgb2YgbGlmZSBmcmVlbHkuCkZvciBJIHRlc3RpZnkgdW50byBldmVyeSBtYW4gdGhhdCBoZWFyZXRoIHRoZSB3b3JkcyBvZiB0aGUgcHJvcGhlY3kgb2YgdGhpcyBib29rLCBJZiBhbnkgbWFuIHNoYWxsIGFkZCB1bnRvIHRoZXNlIHRoaW5ncywgR29kIHNoYWxsIGFkZCB1bnRvIGhpbSB0aGUgcGxhZ3VlcyB0aGF0IGFyZSB3cml0dGVuIGluIHRoaXMgYm9vazoKQW5kIGlmIGFueSBtYW4gc2hhbGwgdGFrZSBhd2F5IGZyb20gdGhlIHdvcmRzIG9mIHRoZSBib29rIG9mIHRoaXMgcHJvcGhlY3ksIEdvZCBzaGFsbCB0YWtlIGF3YXkgaGlzIHBhcnQgb3V0IG9mIHRoZSBib29rIG9mIGxpZmUsIGFuZCBvdXQgb2YgdGhlIGhvbHkgY2l0eSwgYW5kIGZyb20gdGhlIHRoaW5ncyB3aGljaCBhcmUgd3JpdHRlbiBpbiB0aGlzIGJvb2suCkhlIHdoaWNoIHRlc3RpZmlldGggdGhlc2UgdGhpbmdzIHNhaXRoLCBTdXJlbHkgSSBjb21lIHF1aWNrbHkuIEFtZW4uIEV2ZW4gc28sIGNvbWUsIExvcmQgSmVzdXMuClRoZSBncmFjZSBvZiBvdXIgTG9yZCBKZXN1cyBDaHJpc3QgYmUgd2l0aCB5b3UgYWxsLiBBbWVuLgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdGVzdGRpci9ULmZ1bmMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA3NzUAMDAwMTc1MAAwMDAxNzUwADAwMDAwMDA1NzQyADEzMzM3MTc0NzAzADAxMzE2MQAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlY2hvIFQuZnVuYzogdGVzdCB1c2VyLWRlZmluZWQgZnVuY3Rpb25zCgphd2s9JHthd2stLi4vYS5vdXR9CgplY2hvICcxMCAyCjIgMTAKMTAgMTAKMTAgMWUxCjFlMSA5JyB8ICRhd2sgJwojIHRlc3RzIHdoZXRoZXIgZnVuY3Rpb24gcmV0dXJucyBzZW5zaWJsZSB0eXBlIGJpdHMKCmZ1bmN0aW9uIGFzc2VydChjb25kKSB7ICMgYXNzZXJ0aW9uCiAgICBpZiAoY29uZCkgcHJpbnQgMTsgZWxzZSBwcmludCAwCn0KCmZ1bmN0aW9uIGkoeCkgeyByZXR1cm4geCB9Cgp7IG09JDE7IG49aSgkMik7IGFzc2VydChtPm4pIH0KJyA+Zm9vMQplY2hvICcxCjAKMAowCjEnID5mb28yCmRpZmYgZm9vMSBmb28yIHx8IGVjaG8gJ0JBRDogVC5mdW5jIChmdW5jdGlvbiByZXR1cm4gdHlwZSknCgplY2hvICdkYXRhOiBkYXRhJyA+Zm9vMQokYXdrICcKZnVuY3Rpb24gdGVzdDEoYXJyYXkpIHsgYXJyYXlbInRlc3QiXSA9ICJkYXRhIiB9CmZ1bmN0aW9uIHRlc3QyKGFycmF5KSB7IHJldHVybihhcnJheVsidGVzdCJdKSB9CkJFR0lOIHsgdGVzdDEoZm9vKTsgcHJpbnQgImRhdGE6ICIgdGVzdDIoZm9vKSB9CicgPmZvbzIKZGlmZiBmb28xIGZvbzIgfHwgZWNobyAnQkFEOiBULmZ1bmMgKGFycmF5IHR5cGUpJwoKJGF3ayAnCkJFR0lOCXsgY29kZSgpIH0KRU5ECXsgY29kZW91dCgieCIpIH0KZnVuY3Rpb24gY29kZSgpIHsgOyB9CmZ1bmN0aW9uIGNvZGVvdXQoZXgpIHsgcHJpbnQgZXggfQonIC9kZXYvbnVsbCA+Zm9vMQplY2hvIHggPmZvbzIKZGlmZiBmb28xIGZvbzIgfHwgZWNobyAnQkFEOiBULmZ1bmMgKGFyZ3VtZW50IHBhc3NpbmcpJwoKJGF3ayAnCkJFR0lOIHsgdW5pcmVnaGYoKSB9CgpmdW5jdGlvbiB1bmlyZWdoZihoZmVlZCkgewoJaGZlZWRbMV09MAoJcmNlbGwoImZvbyIsaGZlZWQpCgloZmVlZFsxXT0wCglyY2VsbCgiYmFyIixoZmVlZCkKfQoKZnVuY3Rpb24gcmNlbGwoY2VsbG5hbWUsaGZlZWQpIHsKCXByaW50IGNlbGxuYW1lCn0KJyA+Zm9vMQplY2hvICJmb28KYmFyIiA+Zm9vMgpkaWZmIGZvbzEgZm9vMiB8fCBlY2hvICdCQUQ6IFQuZnVuYyAoY29udmVydCBhcmcgdG8gYXJyYXkpJwoKJGF3ayAnCmZ1bmN0aW9uIGYobikgewoJaWYgKG4gPD0gMSkKCQlyZXR1cm4gMQoJZWxzZQoJCXJldHVybiBuICogZihuLTEpCn0KeyBwcmludCBmKCQxKSB9CicgPDwhID5mb28yCjAKMQoyCjMKNAo1CjYKNwo4CjkKIQpjYXQgPDwhID5mb28xCjEKMQoyCjYKMjQKMTIwCjcyMAo1MDQwCjQwMzIwCjM2Mjg4MAohCmRpZmYgZm9vMSBmb28yIHx8IGVjaG8gJ0JBRDogVC5mdW5jIChmYWN0b3JpYWwpJwoKJGF3ayAnCmZ1bmN0aW9uIGFjayhtLG4pIHsKCWsgPSBrKzEKCWlmIChtID09IDApIHJldHVybiBuKzEKCWlmIChuID09IDApIHJldHVybiBhY2sobS0xLCAxKQoJcmV0dXJuIGFjayhtLTEsIGFjayhtLCBuLTEpKQp9CnsgayA9IDA7IHByaW50IGFjaygkMSwkMiksICIoIiBrICIgY2FsbHMpIiB9CicgPDwhID5mb28yCjAgMAoxIDEKMiAyCjMgMwozIDQKMyA1CiEKY2F0IDw8ISA+Zm9vMQoxICgxIGNhbGxzKQozICg0IGNhbGxzKQo3ICgyNyBjYWxscykKNjEgKDI0MzIgY2FsbHMpCjEyNSAoMTAzMDcgY2FsbHMpCjI1MyAoNDI0MzggY2FsbHMpCiEKZGlmZiBmb28xIGZvbzIgfHwgZWNobyAnQkFEOiBULmZ1bmMgKGFja2VybWFubiknCgokYXdrICcKRU5EIHsgcHJpbnQgImVuZCIgfQp7IHByaW50IGZpYigkMSkgfQpmdW5jdGlvbiBmaWIobikgewoJaWYgKG4gPD0gMSkgcmV0dXJuIDEKCWVsc2UgcmV0dXJuIGFkZChmaWIobi0xKSwgZmliKG4tMikpCn0KZnVuY3Rpb24gYWRkKG0sbikgeyByZXR1cm4gbStuIH0KQkVHSU4geyBwcmludCAiYmVnaW4iIH0KJyA8PCEgPmZvbzIKMQozCjUKMTAKIQpjYXQgPDwhID5mb28xCmJlZ2luCjEKMwo4Cjg5CmVuZAohCmRpZmYgZm9vMSBmb28yIHx8IGVjaG8gJ0JBRDogVC5mdW5jIChmaWIpJwoKJGF3ayAnCmZ1bmN0aW9uIGZvbygpIHsKCWZvciAoaSA9IDE7IGkgPD0gMjsgaSsrKQoJCXJldHVybiAzCglwcmludCAic2hvdWxkIG5vdCBzZWUgdGhpcwciCn0KQkVHSU4geyBmb28oKTsgZXhpdCB9CicgPmZvbzEKZ3JlcCAnc2hvdWxkIG5vdCcgZm9vMSAmJiBlY2hvICdCQUQ6IFQuZnVuYyAocmV0dXJuKScKCiMgdGhpcyBleGVyY2lzZXMgbXVsdGlwbGUgZnJlZSBvZiB0ZW1wIGNlbGxzCmVjaG8gJ2VxbgplcW4yJyA+Zm9vMQokYXdrICdCRUdJTiAJeyBlcHJvY2VzcygiZXFuIiwgIngiLCBjb250aWcpIAoJICBwcm9jZXNzKCJ0YmwiICkKCSAgZXByb2Nlc3MoImVxbiIgIjIiLCAieCIsIGNvbnRpZykgCgl9CmZ1bmN0aW9uIGVwcm9jZXNzKGZpbGUsIGZpcnN0LCBjb250aWcpIHsKCXByaW50IGZpbGUKfQpmdW5jdGlvbiBwcm9jZXNzKGZpbGUpIHsKCWNsb3NlKGZpbGUpCn0nID5mb28yCmRpZmYgZm9vMSBmb28yIHx8IGVjaG8gJ0JBRDogVC5mdW5jIChlcW4pJwoKZWNobyAxID5mb28xCiRhd2sgJ2Z1bmN0aW9uIGYoKSB7IG4gPSAxOyBleGl0IH0KCUJFR0lOIHsgbiA9IDA7IGYoKTsgbiA9IDIgfTsgRU5EIHsgcHJpbnQgbn0nID5mb28yCmRpZmYgZm9vMSBmb28yIHx8IGVjaG8gJ0JBRDogVC5mdW5jIChleGl0IGluIGZ1bmN0aW9uKScKCmVjaG8gMSA+Zm9vMQokYXdrICcKQkVHSU4gewluID0gMTAKCWZvciAoaSA9IDE7IGkgPD0gbjsgaSsrKQoJZm9yIChqID0gMTsgaiA8PSBuOyBqKyspCgkJeFtpLGpdID0gbiAqIGkgKyBqCglmb3IgKGkgPSAxOyBpIDw9IG47IGkrKykKCWZvciAoaiA9IDE7IGogPD0gbjsgaisrKQoJCWlmICgoaSxqKSBpbiB4KQoJCQlrKysKCXByaW50IChrID09IG5eMikKICAgICAgfQonID5mb28yCmRpZmYgZm9vMSBmb28yIHx8IGVjaG8gJ0JBRDogVC5mdW5jIChtdWx0aS1kaW0gc3Vic2NyaXB0KScKCmVjaG8gJzw+IDAnID5mb28xCiRhd2sgJwpmdW5jdGlvbiBmb28oKSB7IGkgPSAwIH0KICAgICAgICBCRUdJTiB7IHggPSBmb28oKTsgcHJpbnRmICI8JXM+ICVkXG4iLCB4LCB4IH0nID5mb28yCmRpZmYgZm9vMSBmb28yIHx8IGVjaG8gJ0JBRDogVC5mdW5jIChmYWxsIG9mZiBlbmQpJwoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0ZXN0ZGlyL3QubnVsbDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY2NAAwMDAxNzUwADAwMDE3NTAAMDAwMDAwMDA2MTUAMTMzMzcxNzQ3MDMAMDEzMzA3ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEJFR0lOIHsgRlMgPSAiOiIgfQp7CWlmIChhKSBwcmludCAiYSIsIGEKCWlmIChiID09IDApIHByaW50ICJiIiwgYgoJaWYgKCBjID09ICIwIikgcHJpbnQgImMiLCBjCglpZiAoZCA9PSAiIikgcHJpbnQgImQiLCBkCglpZiAoZSA9PSAxLTEpIHByaW50ICJlIiwgZQp9CiQxID09IDAJe3ByaW50ICIkMSA9IDAifQokMSA9PSAiMCIJe3ByaW50ICIkMSA9IHF1b3RlZCAwIn0KJDEgPT0gIiIJe3ByaW50ICIkMSA9IG51bGwgc3RyaW5nIn0KJDUgPT0gMAl7cHJpbnQgIiQ1ID0gMCJ9CiQ1ID09ICIwIgl7cHJpbnQgIiQ1ID0gcXVvdGVkIDAifQokNSA9PSAiIgl7cHJpbnQgIiQ1ID0gbnVsbCBzdHJpbmcifQokMSA9PSAkMyB7cHJpbnQgIiQxID0gJDMifQokNSA9PSAkNiB7cHJpbnQgIiQ1ID0gJDYifQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdGVzdGRpci9ULmdhd2sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA3NzUAMDAwMTc1MAAwMDAxNzUwADAwMDAwMDE2MzQwADEzMzM3MTc0NzAzADAxMzE1MwAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlY2hvIFQuZ2F3azogdGVzdHMgYWRhcHRlZCBmcm9tIGdhd2sgdGVzdCBzdWl0ZQojIGZvciB3aGljaCB0aGFua3MuCgphd2s9JHthd2stLi4vYS5vdXR9CgojIGFycmF5cmVmOiAgCi4vZWNobyAnMQoxJyA+Zm9vMQokYXdrICcKCUJFR0lOIHsgIyBmb29bMTBdID0gMAkJIyBwdXQgdGhpcyBsaW5lIGluIGFuZCBpdCB3aWxsIHdvcmsKCQl0ZXN0KGZvbyk7IHByaW50IGZvb1sxXQoJCXRlc3QyKGZvbzIpOyBwcmludCBmb28yWzFdCgl9CglmdW5jdGlvbiB0ZXN0KGZvbykgeyB0ZXN0Mihmb28pIH0KCWZ1bmN0aW9uIHRlc3QyKGJhcikgeyBiYXJbMV0gPSAxIH0KJyA+Zm9vMgpjbXAgLXMgZm9vMSBmb28yIHx8IC4vZWNobyAnB0JBRDogVC5nYXdrIGFycmF5cmVmJwoKIyBhc2dleHQKLi9lY2hvICcxIDIgMwoxCjEgMiAzIDQnID5mb28KLi9lY2hvICczCjEgMiAzIGEKCjEgICBhCjMKMSAyIDMgYScgPmZvbzEKJGF3ayAneyBwcmludCAkMzsgJDQgPSAiYSI7IHByaW50IH0nIGZvbyA+Zm9vMgpjbXAgLXMgZm9vMSBmb28yIHx8IC4vZWNobyAnB0JBRDogVC5nYXdrIGFzZ2V4dCcKCiMgYmFja2dzdWI6Ci4vZWNobyAneFx5CnhcXHknID5mb28KLi9lY2hvICd4XHkKeEF5CnhBeQp4QUF5JyA+Zm9vMQokYXdrICd7CXggPSB5ID0gJDAKICAgICAgICBnc3ViKCAvXFxcXC8sICJBIiwgeCk7IHByaW50IHgKICAgICAgICBnc3ViKCAiXFxcXCIsICJBIiwgeSk7IHByaW50IHkKfScgZm9vID5mb28yCmNtcCAtcyBmb28xIGZvbzIgfHwgLi9lY2hvICcHQkFEOiBULmdhd2sgYmFja2dzdWInCgoKIyBiYWNrZ3N1YjI6Ci4vZWNobyAneFx5CnhcXHkKeFxcXHknID5mb28KLi9lY2hvICcJeFx5Cgl4XHkKCXhceQoJeFx5Cgl4XFx5Cgl4XFxceQoJeFxceQoJeFxcXHkKCXhcXFxceScgPmZvbzEKJGF3ayAnewl3ID0geCA9IHkgPSB6ID0gJDAKICAgICAgICBnc3ViKCAvXFxcXC8sICJcXCIsIHcpOyBwcmludCAiCSIgdwogICAgICAgIGdzdWIoIC9cXFxcLywgIlxcXFwiLCB4KTsgcHJpbnQgIgkiIHgKICAgICAgICBnc3ViKCAvXFxcXC8sICJcXFxcXFwiLCB5KTsgcHJpbnQgIgkiIHkKfQonIGZvbyA+Zm9vMgpjbXAgLXMgZm9vMSBmb28yIHx8IC4vZWNobyAnB0JBRDogVC5nYXdrIGJhY2tnc3ViMicKCgojIGJhY2tnc3ViMzoKLi9lY2hvICd4YXgKeGFheCcgPmZvbwouL2VjaG8gJwl4YXgKCXgmeAoJeCZ4Cgl4XGF4Cgl4XGF4Cgl4XCZ4Cgl4YWF4Cgl4JiZ4Cgl4JiZ4Cgl4XGFcYXgKCXhcYVxheAoJeFwmXCZ4JyA+Zm9vMQokYXdrICd7CXcgPSB4ID0geSA9IHogPSB6MSA9IHoyID0gJDAKICAgICAgICBnc3ViKCAvYS8sICJcJiIsIHcpOyBwcmludCAiCSIgdwogICAgICAgIGdzdWIoIC9hLywgIlxcJiIsIHgpOyBwcmludCAiCSIgeAogICAgICAgIGdzdWIoIC9hLywgIlxcXCYiLCB5KTsgcHJpbnQgIgkiIHkKICAgICAgICBnc3ViKCAvYS8sICJcXFxcJiIsIHopOyBwcmludCAiCSIgegogICAgICAgIGdzdWIoIC9hLywgIlxcXFxcJiIsIHoxKTsgcHJpbnQgIgkiIHoxCiAgICAgICAgZ3N1YiggL2EvLCAiXFxcXFxcJiIsIHoyKTsgcHJpbnQgIgkiIHoyCn0KJyBmb28gPmZvbzIKY21wIC1zIGZvbzEgZm9vMiB8fCAuL2VjaG8gJwdCQUQ6IFQuZ2F3ayBiYWNrZ3N1YjMnCgoKIyBiYWNrc3ViMzoKLi9lY2hvICd4YXgKeGFheCcgPmZvbwouL2VjaG8gJwl4YXgKCXgmeAoJeCZ4Cgl4XGF4Cgl4XGF4Cgl4XCZ4Cgl4YWF4Cgl4JmF4Cgl4JmF4Cgl4XGFheAoJeFxhYXgKCXhcJmF4JyA+Zm9vMQokYXdrICd7CXcgPSB4ID0geSA9IHogPSB6MSA9IHoyID0gJDAKICAgICAgICBzdWIoIC9hLywgIlwmIiwgdyk7IHByaW50ICIJIiB3CiAgICAgICAgc3ViKCAvYS8sICJcXCYiLCB4KTsgcHJpbnQgIgkiIHgKICAgICAgICBzdWIoIC9hLywgIlxcXCYiLCB5KTsgcHJpbnQgIgkiIHkKICAgICAgICBzdWIoIC9hLywgIlxcXFwmIiwgeik7IHByaW50ICIJIiB6CiAgICAgICAgc3ViKCAvYS8sICJcXFxcXCYiLCB6MSk7IHByaW50ICIJIiB6MQogICAgICAgIHN1YiggL2EvLCAiXFxcXFxcJiIsIHoyKTsgcHJpbnQgIgkiIHoyCn0KJyBmb28gPmZvbzIKY21wIC1zIGZvbzEgZm9vMiB8fCAuL2VjaG8gJwdCQUQ6IFQuZ2F3ayBiYWNrc3ViMycKCgojIGJhY2tzdWI6Ci4vZWNobyAneFx5CnhcXHknID5mb28KLi9lY2hvICd4XHkKeFxceQp4XFx5CnhcXFx5JyA+Zm9vMQokYXdrICd7CXggPSB5ID0gJDAKICAgICAgICBzdWIoIC9cXFxcLywgIlxcXFwiLCB4KTsgcHJpbnQgeAogICAgICAgIHN1YiggIlxcXFwiLCAiXFxcXCIsIHkpOyBwcmludCB5Cn0nIGZvbyA+Zm9vMgpjbXAgLXMgZm9vMSBmb28yIHx8IC4vZWNobyAnB0JBRDogVC5nYXdrIGJhY2tzdWInCgoKCgojIGR5bmxqOiAgCi4vZWNobyAnaGVsbG8gICAgICAgICAgICAgICB3b3JsZCcgPmZvbzEKJGF3ayAnQkVHSU4geyBwcmludGYgIiUqc3dvcmxkXG4iLCAtMjAsICJoZWxsbyIgfScgPmZvbzIKY21wIC1zIGZvbzEgZm9vMiB8fCAuL2VjaG8gJwdCQUQ6IFQuZ2F3ayBkeW5saicKCiMgZnNyczogIAouL2VjaG8gJ2EgYgpjIGQKZSBmCgoxIDIKMyA0CjUgNicgPmZvbwojIG5vdGUgLW46Ci4vZWNobyAtbiAnYSBiCmMgZAplIGYxIDIKMyA0CjUgNicgPmZvbzEKJGF3ayAnCkJFR0lOIHsKICAgICAgIFJTPSIiOyBGUz0iXG4iOwogICAgICAgT1JTPSIiOyBPRlM9IlxuIjsKICAgICAgfQp7CiAgICAgICAgc3BsaXQgKCQyLGYsIiAiKQogICAgICAgIHByaW50ICQwOwp9JyBmb28gPmZvbzIKY21wIC1zIGZvbzEgZm9vMiB8fCAuL2VjaG8gJwdCQUQ6IFQuZ2F3ayBmc3JzJwoKIyBpbnRlc3QKLi9lY2hvICcwIDEnID5mb28xCiRhd2sgJ0JFR0lOIHsKCWJvb2wgPSAoKGIgPSAxKSBpbiBjKTsKCXByaW50IGJvb2wsIGIJIyBnYXdrLTMuMC4xIHByaW50cyAiMCAiOyBzaG91bGQgcHJpbnQgIjAgMSIKfScgPmZvbzIKY21wIC1zIGZvbzEgZm9vMiB8fCAuL2VjaG8gJwdCQUQ6IFQuZ2F3ayBpbnRlc3QnCgojIGludHByZWM6ICAKLi9lY2hvICcwMDAwMDAwMDA1OjAwMDAwMDAwMGUnID5mb28xCiRhd2sgJ0JFR0lOIHsgcHJpbnRmICIlLjEwZDolLjEweFxuIiwgNSwgMTQgfScgPmZvbzIKY21wIC1zIGZvbzEgZm9vMiB8fCAuL2VjaG8gJwdCQUQ6IFQuZ2F3ayBpbnRwcmVjJwoKIyBsaXRvY3Q6ICAKLi9lY2hvICdheGIKYWIKYSpiJyA+Zm9vCi4vZWNobyAnbm8gbWF0Y2gKbm8gbWF0Y2gKbWF0Y2gnID5mb28xCiRhd2sgJ3sgaWYgKC9hXDUyYi8pIHByaW50ICJtYXRjaCIgOyBlbHNlIHByaW50ICJubyBtYXRjaCIgfScgZm9vID5mb28yCmNtcCAtcyBmb28xIGZvbzIgfHwgLi9lY2hvICcHQkFEOiBULmdhd2sgbGl0b2N0JwoKIyBtYXRoOiAgCi4vZWNobyAnY29zKDAuNzg1Mzk4KSA9IDAuNzA3MTA3CnNpbigwLjc4NTM5OCkgPSAwLjcwNzEwNwplID0gMi43MTgyODIKbG9nKGUpID0gMS4wMDAwMDAKc3FydChwaSBeIDIpID0gMy4xNDE1OTMKYXRhbjIoMSwgMSkgPSAwLjc4NTM5OCcgPmZvbzEKJGF3ayAnQkVHSU4gewoJcGkgPSAzLjE0MTU5MjcKCXByaW50ZiAiY29zKCVmKSA9ICVmXG4iLCBwaS80LCBjb3MocGkvNCkKCXByaW50ZiAic2luKCVmKSA9ICVmXG4iLCBwaS80LCBzaW4ocGkvNCkKCWUgPSBleHAoMSkKCXByaW50ZiAiZSA9ICVmXG4iLCBlCglwcmludGYgImxvZyhlKSA9ICVmXG4iLCBsb2coZSkKCXByaW50ZiAic3FydChwaSBeIDIpID0gJWZcbiIsIHNxcnQocGkgXiAyKQoJcHJpbnRmICJhdGFuMigxLCAxKSA9ICVmXG4iLCBhdGFuMigxLCAxKQp9JyA+Zm9vMgpjbXAgLXMgZm9vMSBmb28yIHx8IC4vZWNobyAnB0JBRDogVC5nYXdrIG1hdGgnCgojIG5sZmxkc2VwOiAgCi4vZWNobyAnc29tZSBzdHVmZgptb3JlIHN0dWZmQQpqdW5rCnN0dWZmQQpmaW5hbCcgPmZvbwouL2VjaG8gJzQKc29tZQpzdHVmZgptb3JlCnN0dWZmCgoyCmp1bmsKc3R1ZmYKCjEKZmluYWwKJyA+Zm9vMQokYXdrICdCRUdJTiB7IFJTID0gIkEiIH0Ke3ByaW50IE5GOyBmb3IgKGkgPSAxOyBpIDw9IE5GOyBpKyspIHByaW50ICRpIDsgcHJpbnQgIiJ9CicgZm9vID5mb28yCmNtcCAtcyBmb28xIGZvbzIgfHwgLi9lY2hvICcHQkFEOiBULmdhd2sgbmxmbGRzZXAnCgojIG51bXN1YnN0cjogIAouL2VjaG8gJzUwMDAKMTAwMDAKNTAwMCcgPmZvbwouL2VjaG8gJzAwMAoxMDAwCjAwMCcgPmZvbzEKJGF3ayAneyBwcmludCBzdWJzdHIoMTAwMCskMSwgMikgfScgZm9vID5mb28yCmNtcCAtcyBmb28xIGZvbzIgfHwgLi9lY2hvICcHQkFEOiBULmdhd2sgbnVtc3Vic3RyJwoKIyBwY250cGx1czogIAouL2VjaG8gJyszIDQnID5mb28xCiRhd2sgJ0JFR0lOIHsgcHJpbnRmICIlK2QgJWRcbiIsIDMsIDQgfScgPmZvbzIKY21wIC1zIGZvbzEgZm9vMiB8fCAuL2VjaG8gJwdCQUQ6IFQuZ2F3ayBwY250cGx1cycKCiMgcHJ0MWV2YWw6ICAKLi9lY2hvIDEgPmZvbzEKJGF3ayAnZnVuY3Rpb24gdHN0ICgpIHsKCXN1bSArPSAxCglyZXR1cm4gc3VtCn0KQkVHSU4geyBPRk1UID0gIiUuMGYiIDsgcHJpbnQgdHN0KCkgfQonID5mb28yCmNtcCAtcyBmb28xIGZvbzIgfHwgLi9lY2hvICcHQkFEOiBULmdhd2sgcHJ0MWV2YWwnCgojIHJlcGFyc2U6ICAKLi9lY2hvICcxIGF4YnhjIDInID5mb28KLi9lY2hvICcxCjEgYSBiIGMgMgoxIGEgYicgPmZvbzEKJGF3ayAnewlnc3ViKC94LywgIiAiKQoJJDAgPSAkMAoJcHJpbnQgJDEKCXByaW50ICQwCglwcmludCAkMSwgJDIsICQzCn0nIGZvbyA+Zm9vMgpjbXAgLXMgZm9vMSBmb28yIHx8IC4vZWNobyAnB0JBRDogVC5nYXdrIHJlcGFyc2UnCgojIHJzd2hpdGU6ICAKLi9lY2hvICcgICAgYSBiCmMgZCcgPmZvbwouL2VjaG8gJzwgICAgYSBiCmMgZD4nID5mb28xCiRhd2sgJ0JFR0lOIHsgUlMgPSAiIiB9CnsgcHJpbnRmKCI8JXM+XG4iLCAkMCkgfScgZm9vICA+Zm9vMgpjbXAgLXMgZm9vMSBmb28yIHx8IC4vZWNobyAnB0JBRDogVC5nYXdrIHJzd2hpdGUnCgojIHNwbGl0dmFyOiAgCi4vZWNobyAnSGVyZT09PUlzPVNvbWU9PT09PURhdGEnID5mb28KLi9lY2hvIDQgPmZvbzEKJGF3ayAnewlzZXAgPSAiPSsiCgluID0gc3BsaXQoJDAsIGEsIHNlcCkKCXByaW50IG4KfScgZm9vID5mb28yCmNtcCAtcyBmb28xIGZvbzIgfHwgLi9lY2hvICcHQkFEOiBULmdhd2sgc3BsaXR2YXInCgojIHNwbGl0d2h0OiAgCi4vZWNobyAnNAo1JyA+Zm9vMQokYXdrICdCRUdJTiB7CglzdHIgPSAiYSAgIGJcdFx0YyBkIgoJbiA9IHNwbGl0KHN0ciwgYSwgIiAiKQoJcHJpbnQgbgoJbSA9IHNwbGl0KHN0ciwgYiwgLyAvKQoJcHJpbnQgbQp9JyA+Zm9vMgpjbXAgLXMgZm9vMSBmb28yIHx8IC4vZWNobyAnB0JBRDogVC5nYXdrIHNwbGl0d2h0JwoKIyBzcHJpbnRmYzogIAouL2VjaG8gJzY1CjY2CmZvbycgPmZvbwouL2VjaG8gJ0EgNjUKQiA2NgpmIGZvbycgPmZvbzEKJGF3ayAneyBwcmludCBzcHJpbnRmKCIlYyIsICQxKSwgJDEgfScgZm9vID5mb28yCmNtcCAtcyBmb28xIGZvbzIgfHwgLi9lY2hvICcHQkFEOiBULmdhd2sgc3ByaW50ZmMnCgojIHN1YnN0cjogIAouL2VjaG8gJ3h4QSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCnh4YWIKeHhiYwp4eGFiCnh4Cnh4Cnh4YWIKeHgKeHhlZgp4eCcgPmZvbzEKJGF3ayAnQkVHSU4gewoJeCA9ICJBIgoJcHJpbnRmKCJ4eCUtMzlzXG4iLCBzdWJzdHIoeCwxLDM5KSkKCXByaW50ICJ4eCIgc3Vic3RyKCJhYmNkZWYiLCAwLCAyKQoJcHJpbnQgInh4IiBzdWJzdHIoImFiY2RlZiIsIDIuMywgMikKCXByaW50ICJ4eCIgc3Vic3RyKCJhYmNkZWYiLCAtMSwgMikKCXByaW50ICJ4eCIgc3Vic3RyKCJhYmNkZWYiLCAxLCAwKQoJcHJpbnQgInh4IiBzdWJzdHIoImFiY2RlZiIsIDEsIC0zKQoJcHJpbnQgInh4IiBzdWJzdHIoImFiY2RlZiIsIDEsIDIuMykKCXByaW50ICJ4eCIgc3Vic3RyKCIiLCAxLCAyKQoJcHJpbnQgInh4IiBzdWJzdHIoImFiY2RlZiIsIDUsIDUpCglwcmludCAieHgiIHN1YnN0cigiYWJjZGVmIiwgNywgMikKCWV4aXQgKDApCn0nID5mb28yCmNtcCAtcyBmb28xIGZvbzIgfHwgLi9lY2hvICcHQkFEOiBULmdhd2sgc3Vic3RyJwoKIyBmbGRjaGc6ICAKLi9lY2hvICdhYSBhYWIgYyBkIGUgZicgPmZvbwouL2VjaG8gJzE6ICsgK2IgYyBkIGUgZgoyOiArICtiIDxjPiBkIGUgZgoyYTolKyUrYiU8Yz4lZCVlJyA+Zm9vMQokYXdrICd7CWdzdWIoImFhIiwgIisiKQoJcHJpbnQgIjE6IiwgJDAKCSQzID0gIjwiICQzICI+IgoJcHJpbnQgIjI6IiwgJDAKCXByaW50ICIyYToiICIlIiAkMSAiJSIgJDIgIiUiICQzICIlIiAkNCAiJSIgJDUKfScgZm9vID5mb28yCmNtcCAtcyBmb28xIGZvbzIgfHwgLi9lY2hvICcHQkFEOiBULmdhd2sgZmxkY2hnJwoKIyBmbGRjaGduZjogIAouL2VjaG8gJ2EgYiBjIGQnID5mb28KLi9lY2hvICdhOjpjOmQKNCcgPmZvbzEKJGF3ayAneyBPRlMgPSAiOiI7ICQyID0gIiI7IHByaW50ICQwOyBwcmludCBORiB9JyBmb28gPmZvbzIKY21wIC1zIGZvbzEgZm9vMiB8fCAuL2VjaG8gJwdCQUQ6IFQuZ2F3ayBmbGRjaGduZicKCiMgZnVuc3RhY2s6CiMgLi9lY2hvICcJZnVuc3RhY2sgdGVzdCB0YWtlcyA1LTEwIHNlYywgcmVwbGljYXRlcyBwYXJ0IG9mIFQuYmVlYmUnCiRhd2sgLWYgZnVuc3RhY2suYXdrIGZ1bnN0YWNrLmluID5mb28gMj4mMQpjbXAgLXMgZm9vIGZ1bnN0YWNrLm9rIHx8IC4vZWNobyAnB0JBRDogVC5nYXdrIGZ1bnN0YWNrJwoKIyBPRk1UIGZyb20gYXJub2xkIHJvYmJpbnMgNi8wMjoKIwk1Ljcgd2l0aCBPRk1UID0gJTAuZiBpcyA2Ci4vZWNobyAnNicgPmZvbzEKJGF3ayAnQkVHSU4gewoJT0ZNVCA9ICIlLjBmIgoJcHJpbnQgNS43Cn0nID5mb28yCmNtcCAtcyBmb28xIGZvbzIgfHwgLi9lY2hvICcHQkFEOiBULmdhd2sgb2ZtdCcKCgojIyMgZG9uJ3Qga25vdyB3aGF0IHRoaXMgaXMgc3VwcG9zZWQgdG8gZG8gbm93LgojIyMgIyBjb252Zm10OiAgCiMjIyAuL2VjaG8gJ2EgPSAgMTIzLjQ2CiMjIyBhID0gIDEyMy40NTYKIyMjIGEgPSAgMTIzLjQ1NicgPmZvbzEKIyMjICRhd2sgJ0JFR0lOIHsKIyMjIAlDT05WRk1UID0gIiUyLjJmIgojIyMg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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC9hLywvYi8KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdGVzdGRpci90LjMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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TU9MID0gIk0iOyBCT05EID0gIkIiOyBPVEhFUiA9ICJPIgkjIG1hbmlmZXN0cwoJbGFzdCA9IE9USEVSCglkaXIgPSA5MAp9CmZ1bmN0aW9uIHNldHBhcmFtcyhzY2FsZSkgewoJbGluZWh0ID0gc2NhbGUgKiAwLjIKCWxpbmV3aWQgPSBzY2FsZSAqIDAuMgoJdGV4dGh0ID0gc2NhbGUgKiAwLjE2CglkYiA9IHNjYWxlICogMC4yCQkjIGJvbmQgbGVuZ3RoCgljd2lkID0gc2NhbGUgKiAwLjEyCQkjIGNoYXJhY3RlciB3aWR0aAoJY3IgPSBzY2FsZSAqIDAuMDgJCSMgcmFkIG9mIGludmlzIGNpcmNsZXMgYXQgcmluZyB2ZXJ0aWNlcwoJY3JoID0gc2NhbGUgKiAwLjE2CQkjIGh0IG9mIGludmlzIGVsbGlwc2UgYXQgcmluZyB2ZXJ0aWNlcwoJY3J3ID0gc2NhbGUgKiAwLjEyCQkjIHdpZAkKCWRhdiA9IHNjYWxlICogMC4wMTUJCSMgdmVydGljYWwgc2hpZnQgdXAgZm9yIGF0b21zIGluIGF0b20gbWFjcm8KCWRldyA9IHNjYWxlICogMC4wMgkJIyBlYXN0LXdlc3Qgc2hpZnQgZm9yIGxlZnQgb2YvcmlnaHQgb2YKCXJpbmdzaWRlID0gc2NhbGUgKiAwLjMJCSMgc2lkZSBvZiBhbGwgcmluZ3MKCWRicmFjayA9IHNjYWxlICogMC4xCQkjIGxlbmd0aCBvZiBib3R0b20gb2YgYnJhY2tldAp9CgoJeyBsaW5lbm8rKyB9CgovXihcLmNzdGFydCl8KGJlZ2luIGNoZW0pLwl7IGluaXQoKTsgaW5jaGVtID0gMTsgbmV4dCB9Ci9eKFwuY2VuZCl8KGVuZCkvCQl7IGluY2hlbSA9IDA7IHByaW50ICIuUEUiOyBuZXh0IH0KCi9eXC4vCQl7IHByaW50OyBuZXh0IH0JCSMgdHJvZmYKCmluY2hlbSA9PSAwCXsgcHJpbnQ7IG5leHQgfQkJIyBldmVyeXRoaW5nIGVsc2UKCiQxID09ICJwaWMiCXsgc2hpZnRmaWVsZHMoMSk7IHByaW50OyBuZXh0IH0JIyBwaWMgcGFzcy10aHJ1CiQxIH4gL14jLwl7IG5leHQgfQkjIGNvbW1lbnQKCiQxID09ICJ0ZXh0aHQiCXsgdGV4dGh0ID0gJE5GOyBuZXh0IH0KJDEgPT0gImN3aWQiCXsgY3dpZCA9ICRORjsgbmV4dCB9CiQxID09ICJkYiIJeyBkYiA9ICRORjsgbmV4dCB9CiQxID09ICJzaXplIgl7IGlmICgkTkYgPD0gNCkgc2l6ZSA9ICRORjsgZWxzZSBzaXplID0gJE5GLzEwCgkJICBzZXRwYXJhbXMoc2l6ZSk7IG5leHQgfQoKCXsgcHJpbnQgIlxuIyIsICQwIH0JIyBkZWJ1Z2dpbmcsIGV0Yy4KCXsgbGFzdG5hbWUgPSAiIiB9CgokMSB+IC9eW0EtWl0uKjokLyB7CSMgbGFiZWw7ICBmYWxscyB0aHJ1IGFmdGVyIHNoaWZ0aW5nIGxlZnQKCWxhc3RuYW1lID0gc3Vic3RyKCQxLCAxLCBsZW5ndGgoJDEpLTEpCglwcmludCAkMQoJc2hpZnRmaWVsZHMoMSkKfQoKJDEgfiAvXlwiLwl7IHByaW50ICJMYXN0OiAiLCAkMDsgbGFzdCA9IE9USEVSOyBuZXh0IH0KCiQxIH4gL2JvbmQvCXsgYm9uZCgkMSk7IG5leHQgfQokMSB+IC9eKGRvdWJsZXx0cmlwbGV8ZnJvbnR8YmFjaykkLyAmJiAkMiA9PSAiYm9uZCIgewoJCSAgICQxID0gJDEgJDI7IHNoaWZ0ZmllbGRzKDIpOyBib25kKCQxKTsgbmV4dCB9CgokMSA9PSAiYXJvbWF0aWMiIHsgdGVtcCA9ICQxOyAkMSA9ICQyOyAkMiA9IHRlbXAgfQokMSB+IC9yaW5nfGJlbnovIHsgcmluZygkMSk7IG5leHQgfQoKJDEgPT0gIm1ldGh5bCIJeyAkMSA9ICJDSDMiIH0JIyBsZWZ0IGhlcmUgYXMgYW4gZXhhbXBsZQoKJDEgfiAvXltBLVpdLwl7IG1vbGVjdWxlKCk7IG5leHQgfQoKJDEgPT0gImxlZnQiCXsgbGVmdFsrK3N0YWNrXSA9IGZpZWxkcygyLCBORik7IHByaW50ZigiTGFzdDogW1xuIik7IG5leHQgfQoKJDEgPT0gInJpZ2h0Igl7IGJyYWNrZXQoKTsgc3RhY2stLTsgbmV4dCB9CgokMSA9PSAibGFiZWwiCXsgbGFiZWwoKTsgbmV4dCB9CgovLi8JeyBwcmludCAiTGFzdDogIiwgJDA7IGxhc3QgPSBPVEhFUiB9CQoKRU5ECXsgaWYgKGZpcnN0dGltZSA9PSAwKSBlcnJvcigiZGlkIHlvdSBmb3JnZXQgLmNzdGFydCBhbmQgLmNlbmQ/IikKCSAgaWYgKGluY2hlbSkgcHJpbnRmICIuUEVcbiIKfQoKZnVuY3Rpb24gYm9uZCh0eXBlLAlpLCBnb2VzLCBmcm9tKSB7Cglnb2VzID0gIiIKCWZvciAoaSA9IDI7IGkgPD0gTkY7IGkrKykKCQlpZiAoJGkgPT0gIjsiKSB7CgkJCWdvZXMgPSAkKGkrMSkKCQkJTkYgPSBpIC0gMQoJCQlicmVhawoJCX0KCWxlbmcgPSBkYgoJZnJvbSA9ICIiCglmb3IgKGNmID0gMjsgY2YgPD0gTkY7ICkgewoJCWlmICgkY2YgfiAvKFwrfC0pP1swLTldK3x1cHxkb3dufHJpZ2h0fGxlZnR8bmV8c2V8bnd8c3cvKQoJCQlkaXIgPSBjdnRkaXIoZGlyKQoJCWVsc2UgaWYgKCRjZiB+IC9ebGVuZy8pIHsKCQkJbGVuZyA9ICQoY2YrMSkKCQkJY2YgKz0gMgoJCX0gZWxzZSBpZiAoJGNmID09ICJ0byIpIHsKCQkJbGVuZyA9IDAKCQkJZnJvbSA9IGZpZWxkcyhjZiwgTkYpCgkJCWJyZWFrCgkJfSBlbHNlIGlmICgkY2YgPT0gImZyb20iKSB7CgkJCWZyb20gPSBkb2Zyb20oKQoJCQlicmVhawoJCX0gZWxzZSBpZiAoJGNmIH4gL14jLykgewoJCQljZiA9IE5GKzEKCQkJYnJlYWs7CgkJfSBlbHNlIHsKCQkJZnJvbSA9IGZpZWxkcyhjZiwgTkYpCgkJCWJyZWFrCgkJfQoJfQoJaWYgKGZyb20gfiAvKCB0byApfF50by8pCSMgc2FpZCAiZnJvbSAuLi4gdG8gLi4uIiwgc28gemFwIGxlbmd0aAoJCWxlbmcgPSAwCgllbHNlIGlmIChmcm9tID09ICIiKQkjIG5vIGZyb20gZ2l2ZW4gYXQgYWxsCgkJZnJvbSA9ICJmcm9tIExhc3QuIiBsZWF2ZShsYXN0LCBkaXIpICIgIiBmaWVsZHMoY2YsIE5GKQoJcHJpbnRmICJMYXN0OiAlcyglZywgJWcsICVzKVxuIiwgdHlwZSwgbGVuZywgZGlyLCBmcm9tCglsYXN0ID0gQk9ORAoJaWYgKGxhc3RuYW1lICE9ICIiKQoJCWxhYnNhdmUobGFzdG5hbWUsIGxhc3QsIGRpcikKCWlmIChnb2VzKSB7CgkJJDAgPSBnb2VzCgkJbW9sZWN1bGUoKQoJfQp9CgpmdW5jdGlvbiBkb2Zyb20oCW4sIHMpIHsKCWNmKysJIyBza2lwICJmcm9tIgoJbiA9ICRjZgoJaWYgKG4gaW4gbGFidHlwZSkJIyAiZnJvbSBUaGluZyIgPT4gImZyb20gVGhpbmcuVi5zIgoJCXJldHVybiAiZnJvbSAiIG4gIi4iIGxlYXZlKGxhYnR5cGVbbl0sIGRpcikKCWlmIChuIH4gL15cLltBLVpdLykJIyAiZnJvbSAuViIgPT4gImZyb20gTGFzdC5WLnMiCgkJcmV0dXJuICJmcm9tIExhc3QiIG4gIi4iIGNvcm5lcihkaXIpCglpZiAobiB+IC9eW0EtWl1bXi5dKlwuW0EtWl1bXi5dKiQvKQkjICJmcm9tIFguViIgPT4gImZyb20gWC5WLnMiCgkJcmV0dXJuICJmcm9tICIgbiAiLiIgY29ybmVyKGRpcikKCXJldHVybiBmaWVsZHMoY2YtMSwgTkYpCn0KCmZ1bmN0aW9uIGJyYWNrZXQoCXQpIHsKCXByaW50ZigiXVxuIikKCWlmICgkMiA9PSAiKSIpCgkJdCA9ICJzcGxpbmUiCgllbHNlCgkJdCA9ICJsaW5lIgoJcHJpbnRmKCIlcyBmcm9tIGxhc3QgW10uc3crKCVnLDApIHRvIGxhc3QgW10uc3cgdG8gbGFzdCBbXS5udyB0byBsYXN0IFtdLm53KyglZywwKVxuIiwKCQl0LCBkYnJhY2ssIGRicmFjaykKCXByaW50ZigiJXMgZnJvbSBsYXN0IFtdLnNlLSglZywwKSB0byBsYXN0IFtdLnNlIHRvIGxhc3QgW10ubmUgdG8gbGFzdCBbXS5uZS0oJWcsMClcbiIsCgkJdCwgZGJyYWNrLCBkYnJhY2spCglpZiAoJDMgPT0gInN1YiIpCgkJcHJpbnRmKCJcIiAlc1wiIGxqdXN0IGF0IGxhc3QgW10uc2VcbiIsIGZpZWxkcyg0LE5GKSkKfQoKZnVuY3Rpb24gbW9sZWN1bGUoCW4sIHR5cGUpIHsKCW4gPSAkMQoJaWYgKG4gPT0gIkJQIikgewoJCSQxID0gIlwiXCIgaHQgMCB3aWQgMCIKCQl0eXBlID0gT1RIRVIKCX0gZWxzZSB7CgkJJDEgPSBhdG9tKG4pCgkJdHlwZSA9IE1PTAoJfQoJZ3N1YigvW15BLVphLXowLTldLywgIiIsIG4pCSMgZm9yIHN0dWZmIGxpa2UgQyhPSDMpOiB6YXAgbm9uLWFsbnVtCglpZiAoJDIgPT0gIiIpCgkJcHJpbnRmICJMYXN0OiAlczogJXMgd2l0aCAuJXMgYXQgTGFzdC4lc1xuIiwgXAoJCQluLCAkMCwgbGVhdmUodHlwZSxkaXIrMTgwKSwgbGVhdmUobGFzdCxkaXIpCgllbHNlIGlmICgkMiA9PSAiYmVsb3ciKQoJCXByaW50ZigiTGFzdDogJXM6ICVzIHdpdGggLm4gYXQgJXMuc1xuIiwgbiwgJDEsICQzKQoJZWxzZSBpZiAoJDIgPT0gImFib3ZlIikKCQlwcmludGYoIkxhc3Q6ICVzOiAlcyB3aXRoIC5zIGF0ICVzLm5cbiIsIG4sICQxLCAkMykKCWVsc2UgaWYgKCQyID09ICJsZWZ0IiAmJiAkMyA9PSAib2YiKQoJCXByaW50ZigiTGFzdDogJXM6ICVzIHdpdGggLmUgYXQgJXMudysoJWcsMClcbiIsIG4sICQxLCAkNCwgZGV3KQoJZWxzZSBpZiAoJDIgPT0gInJpZ2h0IiAmJiAkMyA9PSAib2YiKQoJCXByaW50ZigiTGFzdDogJXM6ICVzIHdpdGggLncgYXQgJXMuZS0oJWcsMClcbiIsIG4sICQxLCAkNCwgZGV3KQoJZWxzZQoJCXByaW50ZiAiTGFzdDogJXM6ICVzXG4iLCBuLCAkMAoJbGFzdCA9IHR5cGUKCWlmIChsYXN0bmFtZSAhPSAiIikKCQlsYWJzYXZlKGxhc3RuYW1lLCBsYXN0LCBkaXIpCglsYWJzYXZlKG4sIGxhc3QsIGRpcikKfQoKZnVuY3Rpb24gbGFiZWwoCWksIHYpIHsKCWlmIChzdWJzdHIobGFidHlwZVskMl0sIDEsIDEpICE9IFJJTkcpCgkJZXJyb3Ioc3ByaW50ZigiJXMgaXMgbm90IGEgcmluZyIsICQyKSkKCWVsc2UgewoJCXYgPSBzdWJzdHIobGFidHlwZVskMl0sIDIsIDEpCgkJZm9yIChpID0gMTsgaSA8PSB2OyBpKyspCgkJCXByaW50ZigiXCJcXHMtMyVkXFxzMFwiIGF0IDAuJWQ8JXMuQywlcy5WJWQ+XG4iLCBpLCB2KzIsICQyLCAkMiwgaSkKCX0KfQoKZnVuY3Rpb24gcmluZyh0eXBlLAl0eXBlaW50LCBwdCwgdmVydHMsIGkpIHsKCXB0ID0gMAkjIHBvaW50cyB1cCBieSBkZWZhdWx0CglpZiAodHlwZSB+IC9bMS04XSQvKQoJCXZlcnRzID0gc3Vic3RyKHR5cGUsIGxlbmd0aCh0eXBlKSwgMSkKCWVsc2UgaWYgKHR5cGUgfiAvZmxhdC8pCgkJdmVydHMgPSA1CgllbHNlCgkJdmVydHMgPSA2CglmdXNlZCA9IG90aGVyID0gIiIKCWZvciAoaSA9IDE7IGkgPD0gdmVydHM7IGkrKykKCQlwdXRbaV0gPSBkYmxbaV0gPSAiIgoJbnB1dCA9IGFyb21hdGljID0gd2l0aGF0ID0gMAoJZm9yIChjZiA9IDI7IGNmIDw9IE5GOyApIHsKCQlpZiAoJGNmID09ICJwb2ludGluZyIpCgkJCXB0ID0gY3Z0ZGlyKDApCgkJZWxzZSBpZiAoJGNmID09ICJkb3VibGUiIHx8ICRjZiA9PSAidHJpcGxlIikKCQkJZGJscmluZyh2ZXJ0cykKCQllbHNlIGlmICgkY2YgfiAvYXJvbS8pIHsKCQkJYXJvbWF0aWMrKwoJCQljZisrCSMgaGFuZGxlZCBsYXRlcgoJCX0gZWxzZSBpZiAoJGNmID09ICJwdXQiKSB7CgkJCXB1dHJpbmcodmVydHMpCgkJCW5wdXQrKwoJCX0gZWxzZSBpZiAoJGNmIH4gL14jLykgewoJCQljZiA9IE5GKzEKCQkJYnJlYWs7CgkJfSBlbHNlIHsKCQkJaWYgKCRjZiA9PSAid2l0aCIgfHwgJGNmID09ICJhdCIpCgkJCQl3aXRoYXQgPSAxCgkJCW90aGVyID0gb3RoZXIgIiAiICRjZgoJCQljZisrCgkJfQoJfQoJdHlwZWludCA9IFJJTkcgdmVydHMgcHQJCSMgUklORyB8IHZlcnRzIHwgZGlyCglpZiAod2l0aGF0ID09IDApCgkJZnVzZWQgPSBqb2lucmluZyh0eXBlaW50LCBkaXIsIGxhc3QpCglwcmludGYgIkxhc3Q6IFtcbiIKCW1ha2VyaW5nKHR5cGUsIHB0LCB2ZXJ0cykKCXByaW50ZiAiXSAlcyAlc1xuIiwgZnVzZWQsIG90aGVyCglsYXN0ID0gdHlwZWludAoJaWYgKGxhc3RuYW1lICE9ICIiKQoJCWxhYnNhdmUobGFzdG5hbWUsIGxhc3QsIGRpcikKfQoKZnVuY3Rpb24gbWFrZXJpbmcodHlwZSwgcHQsIHYsICAgICAgIGksIGEsIHIpIHsKCWlmICh0eXBlIH4gL2ZsYXQvKQoJCXYgPSA2CiAgICAjIHZlcnRpY2VzCglyID0gcmluZ3NpZGUgLyAoMiAqIHNpbihwaS92KSkKCXByaW50ZiAiXHRDOiAwLDBcbiIKCWZvciAoaSA9IDA7IGkgPD0gdisxOyBpKyspIHsKCQlhID0gKChpLTEpIC8gdiAqIDM2MCArIHB0KSAvIGRlZwoJCXByaW50ZiAiXHRWJWQ6ICglZywlZylcbiIsIGksIHIgKiBzaW4oYSksIHIgKiBjb3MoYSkKCX0KCWlmICh0eXBlIH4gL2ZsYXQvKSB7CgkJcHJpbnRmICJcdFY0OiBWNTsgVjU6IFY2XG4iCgkJdiA9IDUKCX0KICAgICMgc2lkZXMKCWlmIChucHV0ID4gMCkgewkjIGhldGVybyAuLi4KCQlmb3IgKGkgPSAxOyBpIDw9IHY7IGkrKykgewoJCQljMSA9IGMyID0gMAoJCQlpZiAocHV0W2ldICE9ICIiKSB7CgkJCQlwcmludGYoIlx0ViVkOiBlbGxpcHNlIGludmlzIGh0ICVnIHdpZCAlZyBhdCBWJWRcbiIsCgkJCQkJaSwgY3JoLCBjcncsIGkpCgkJCQlwcmludGYoIlx0JXMgYXQgViVkXG4iLCBwdXRbaV0sIGkpCgkJCQljMSA9IGNyCgkJCX0KCQkJaiA9IGkrMQoJCQlpZiAoaiA+IHYpCgkJCQlqID0gMQoJCQlpZiAocHV0W2pdICE9ICIiKQoJCQkJYzIgPSBjcgoJCQlwcmludGYgIlx0bGluZSBmcm9tIFYlZCB0byBWJWQgY2hvcCAlZyBjaG9wICVnXG4iLCBpLCBqLCBjMSwgYzIKCQkJaWYgKGRibFtpXSAhPSAiIikgewkjIHNob3VsZCBjaGVjayBpPGoKCQkJCWlmICh0eXBlIH4gL2ZsYXQvICYmIGkgPT0gMykgewoJCQkJCXJhdCA9IDAuNzU7IGZpeCA9IDUKCQkJCX0gZWxzZSB7CgkJCQkJcmF0ID0gMC44NTsgZml4ID0gMS41CgkJCQl9CgkJCQlpZiAocHV0W2ldID09ICIiKQoJCQkJCWMxID0gMAoJCQkJZWxzZQoJCQkJCWMxID0gY3IvZml4CgkJCQlpZiAocHV0W2pdID09ICIiKQoJCQkJCWMyID0gMAoJCQkJZWxzZQoJCQkJCWMyID0gY3IvZml4CgkJCQlwcmludGYgIlx0bGluZSBmcm9tICVnPEMsViVkPiB0byAlZzxDLFYlZD4gY2hvcCAlZyBjaG9wICVnXG4iLAoJCQkJCXJhdCwgaSwgcmF0LCBqLCBjMSwgYzIKCQkJCWlmIChkYmxbaV0gPT0gInRyaXBsZSIpCgkJCQkJcHJpbnRmICJcdGxpbmUgZnJvbSAlZzxDLFYlZD4gdG8gJWc8QyxWJWQ+IGNob3AgJWcgY2hvcCAlZ1xuIiwKCQkJCQkJMi1yYXQsIGksIDItcmF0LCBqLCBjMSwgYzIKCQkJfQoJCX0KCX0gZWxzZSB7CSMgcmVndWxhcgoJCWZvciAoaSA9IDE7IGkgPD0gdjsgaSsrKSB7CgkJCWogPSBpKzEKCQkJaWYgKGogPiB2KQoJCQkJaiA9IDEKCQkJcHJpbnRmICJcdGxpbmUgZnJvbSBWJWQgdG8gViVkXG4iLCBpLCBqCgkJCWlmIChkYmxbaV0gIT0gIiIpIHsJIyBzaG91bGQgY2hlY2sgaTxqCgkJCQlpZiAodHlwZSB+IC9mbGF0LyAmJiBpID09IDMpIHsKCQkJCQlyYXQgPSAwLjc1CgkJCQl9IGVsc2UKCQkJCQlyYXQgPSAwLjg1CgkJCQlwcmludGYgIlx0bGluZSBmcm9tICVnPEMsViVkPiB0byAlZzxDLFYlZD5cbiIsCgkJCQkJcmF0LCBpLCByYXQsIGoKCQkJCWlmIChkYmxbaV0gPT0gInRyaXBsZSIpCgkJCQkJcHJpbnRmICJcdGxpbmUgZnJvbSAlZzxDLFYlZD4gdG8gJWc8QyxWJWQ+XG4iLAoJCQkJCQkyLXJhdCwgaSwgMi1yYXQsIGoKCQkJfQoJCX0KCX0KCSMgcHVudCBvbiB0cmlwbGUgdGVtcG9yYXJpbHkKICAgICMgY2lyY2xlCglpZiAodHlwZSB+IC9iZW56LyB8fCBhcm9tYXRpYyA+IDApIHsKCQlpZiAodHlwZSB+IC9mbGF0LykKCQkJciAqPSAuNAoJCWVsc2UKCQkJciAqPSAuNQoJCXByaW50ZiAiXHRjaXJjbGUgcmFkICVnIGF0IDAsMFxuIiwgcgoJfQp9CgpmdW5jdGlvbiBwdXRyaW5nKHYpIHsJIyBjb2xsZWN0ICJwdXQgTW9sIGF0IG4iCgljZisrCgltb2wgPSAkKGNmKyspCglpZiAoJGNmID09ICJhdCIpCgkJY2YrKwoJaWYgKCRjZiA+PSAxICYmICRjZiA8PSB2KSB7CgkJbSA9IG1vbAoJCWdzdWIoL1teQS1aYS16MC05XS8sICIiLCBtKQoJCXB1dFskY2ZdID0gbSAiOiIgYXRvbShtb2wpCgl9CgljZisrCn0KCmZ1bmN0aW9uIGpvaW5yaW5nKHR5cGUsIGRpciwgbGFzdCkgewkjIGpvaW4gYSByaW5nIHRvIHNvbWV0aGluZwoJaWYgKHN1YnN0cihsYXN0LCAxLCAxKSA9PSBSSU5HKSB7CSMgcmluZyB0byByaW5nCgkJaWYgKHN1YnN0cih0eXBlLCAzKSA9PSBzdWJzdHIobGFzdCwgMykpCSMgZmFpbHMgaWYgbm90IDYtc2lkZWQKCQkJcmV0dXJuICJ3aXRoIC5WNiBhdCBMYXN0LlYyIgoJfQoJIyBpZiBhbGwgZWxzZSBmYWlscwoJcmV0dXJuIHNwcmludGYoIndpdGggLiVzIGF0IExhc3QuJXMiLCBcCgkJbGVhdmUodHlwZSxkaXIrMTgwKSwgbGVhdmUobGFzdCxkaXIpKQp9CgpmdW5jdGlvbiBsZWF2ZShsYXN0LCBkLAkJYywgYzEpIHsJIyByZXR1cm4gdmVydGV4IG9mIGxhc3QgaW4gZGlyIGQKCWlmIChsYXN0ID09IEJPTkQpCgkJcmV0dXJuICJlbmQiCglkID0gcmVkdWNlKGQpCglpZiAoc3Vic3RyKGxhc3QsIDEsIDEpID09IFJJTkcpCgkJcmV0dXJuIHJpbmdsZWF2ZShsYXN0LCBkKQoJaWYgKGxhc3QgPT0gTU9MKSB7CgkJaWYgKGQgPT0gMCB8fCBkID09IDE4MCkKCQkJYyA9ICJDIgoJCWVsc2UgaWYgKGQgPiAwICYmIGQgPCAxODApCgkJCWMgPSAiUiIKCQllbHNlCgkJCWMgPSAiTCIKCQlpZiAoZCBpbiBkYykKCQkJYzEgPSBkY1tkXQoJCWVsc2UgCgkJCWMxID0gY29ybmVyKGQpCgkJcmV0dXJuIHNwcmludGYoIiVzLiVzIiwgYywgYzEpCgl9CglpZiAobGFzdCA9PSBPVEhFUikKCQlyZXR1cm4gY29ybmVyKGQpCglyZXR1cm4gImMiCn0KCmZ1bmN0aW9uIHJpbmdsZWF2ZShsYXN0LCBkLAlyZCwgdmVydHMpIHsJIyByZXR1cm4gdmVydGV4IG9mIHJpbmcgaW4gZGlyIGQKCXZlcnRzID0gc3Vic3RyKGxhc3QsIDIsIDEpCglyZCA9IHN1YnN0cihsYXN0LCAzKQoJcmV0dXJuIHNwcmludGYoIlYlZC4lcyIsIGludChyZWR1Y2UoZC1yZCkvKDM2MC92ZXJ0cykpICsgMSwgY29ybmVyKGQpKQp9CgpmdW5jdGlvbiBjb3JuZXIoZGlyKSB7CglyZXR1cm4gZGNbcmVkdWNlKDQ1ICogaW50KChkaXIrMjIuNSkvNDUpKV0KfQkKCmZ1bmN0aW9uIGxhYnNhdmUobmFtZSwgdHlwZSwgZGlyKSB7CglsYWJ0eXBlW25hbWVdID0gdHlwZQoJbGFiZGlyW25hbWVdID0gZGlyCn0KCmZ1bmN0aW9uIGRibHJpbmcodiwJZCwgdjEsIHYyKSB7CSMgc2hvdWxkIGNhbm9uaWNhbGl6ZSB0byBpLGkrMSBtb2QgdgoJZCA9ICRjZgoJZm9yIChjZisrOyAkY2YgfiAvXlsxLTldLzsgY2YrKykgewoJCXYxID0gc3Vic3RyKCRjZiwxLDEpCgkJdjIgPSBzdWJzdHIoJGNmLDMsMSkKCQlpZiAodjIgPT0gdjErMSB8fCB2MSA9PSB2ICYmIHYyID09IDEpCSMgZS5nLiwgMiwzIG9yIDUsMQoJCQlkYmxbdjFdID0gZAoJCWVsc2UgaWYgKHYxID09IHYyKzEgfHwgdjIgPT0gdiAmJiB2MSA9PSAxKQkjIGUuZy4sIDMsMiBvciAxLDUKCQkJZGJsW3YyXSA9IGQKCQllbHNlCgkJCWVycm9yKHNwcmludGYoIndlaXJkICVzIGJvbmQgaW5cblx0JXMiLCBkLCAkMCkpCgl9Cn0KCmZ1bmN0aW9uIGN2dGRpcihkKSB7CSMgbWFwcyAiW3BvaW50aW5nXSBzb21ld2hlcmUiIHRvIGRlZ3JlZXMKCWlmICgkY2YgPT0gInBvaW50aW5nIikKCQljZisrCglpZiAoJGNmIH4gL15bK1wtXT9bMC05XSsvKQoJCXJldHVybiByZWR1Y2UoJChjZisrKSkKCWVsc2UgaWYgKCRjZiB+IC9sZWZ0fHJpZ2h0fHVwfGRvd258bmV8bnd8c2V8c3cvKQoJCXJldHVybiByZWR1Y2UoZGNbJChjZisrKV0pCgllbHNlIHsKCQljZisrCgkJcmV0dXJuIGQKCX0KfQoKZnVuY3Rpb24gcmVkdWNlKGQpIHsJIyByZWR1Y2VzIGQgdG8gMCA8PSBkIDwgMzYwCgl3aGlsZSAoZCA+PSAzNjApCgkJZCAtPSAzNjAKCXdoaWxlIChkIDwgMCkKCQlkICs9IDM2MAoJcmV0dXJuIGQKfQoKZnVuY3Rpb24gYXRvbShzLCAgICBjLCBpLCBuLCBuc3ViLCBjbG9jLCBuc3ViYykgeyAjIGNvbnZlcnQgQ0gzIHRvIGF0b20oLi4uKQoJaWYgKHMgPT0gIlwiXCIiKQoJCXJldHVybiBzCgluID0gbGVuZ3RoKHMpCgluc3ViID0gbnN1YmMgPSAwCgljbG9jID0gaW5kZXgocywgIkMiKQoJaWYgKGNsb2MgPT0gMCkKCQljbG9jID0gMQoJZm9yIChpID0gMTsgaSA8PSBuOyBpKyspCgkJaWYgKHN1YnN0cihzLCBpLCAxKSAhfiAvW0EtWl0vKSB7CgkJCW5zdWIrKwoJCQlpZiAoaSA8IGNsb2MpCgkJCQluc3ViYysrCgkJfQoJZ3N1YigvKFswLTldK1wuWzAtOV0rKXwoWzAtOV0rKS8sICJcXHMtM1xcZCZcXHVcXHMrMyIsIHMpCglpZiAocyB+IC8oW14wLTldXC4pfChcLlteMC05XSkvKQkjIGNlbnRlcmVkIGRvdAoJCWdzdWIoL1wuLywgIlxcdiMtLjNtIy5cXHYjLjNtIyIsIHMpCglyZXR1cm4gc3ByaW50ZigiYXRvbShcIiVzXCIsICVnLCAlZywgJWcsICVnLCAlZywgJWcpIiwKCQlzLCAobi1uc3ViLzIpKmN3aWQsIHRleHRodCwgKGNsb2MtbnN1YmMvMi0wLjUpKmN3aWQsIGNyaCwgY3J3LCBkYXYpCn0KCmZ1bmN0aW9uIGluX2xpbmUoCWksIG4sIHMsIHMxLCBvcykgewoJcyA9ICQwCglvcyA9ICIiCgl3aGlsZSAoKG4gPSBtYXRjaChzLCAvIT9bQS1aXVtBLVphLXpdKigoWzAtOV0rXC5bMC05XSspfChbMC05XSspKS8pKSA+IDApIHsKCQlvcyA9IG9zIHN1YnN0cihzLCAxLCBuLTEpCSMgcHJlZml4CgkJczEgPSBzdWJzdHIocywgbiwgUkxFTkdUSCkJIyBtb2xlY3VsZQoJCWlmIChzdWJzdHIoczEsIDEsIDEpID09ICIhIikgewkjICFtb2wgPT4gbGVhdmUgYWxvbmUKCQkJczEgPSBzdWJzdHIoczEsIDIpCgkJfSBlbHNlIHsKCQkJZ3N1YigvKFswLTldK1wuWzAtOV0rKXwoWzAtOV0rKS8sICJcXHMtM1xcZCZcXHVcXHMrMyIsIHMxKQoJCQlpZiAoczEgfiAvKFteMC05XVwuKXwoXC5bXjAtOV0pLykJIyBjZW50ZXJlZCBkb3QKCQkJCWdzdWIoL1wuLywgIlxcdiMtLjNtIy5cXHYjLjNtIyIsIHMxKQoJCX0KCQlvcyA9IG9zIHMxCgkJcyA9IHN1YnN0cihzLCBuICsgUkxFTkdUSCkJIyB0YWlsCgl9CglvcyA9IG9zIHMKCXByaW50IG9zCglyZXR1cm4KfQoKZnVuY3Rpb24gc2hpZnRmaWVsZHMobiwJCWkpIHsJIyBtb3ZlICRuKzEuLiRORiB0byAkbi4uJE5GLTEsIHphcCAkTkYKCWZvciAoaSA9IG47IGkgPCBORjsgaSsrKQoJCSRpID0gJChpKzEpCgkkTkYgPSAiIgoJTkYtLQp9CgpmdW5jdGlvbiBmaWVsZHMobjEsIG4yLAkJaSwgcykgewoJ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CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0ZXN0ZGlyL3QuMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY2NAAwMDAxNzUwADAwMDE3NTAAMDAwMDAwMDAwMTIAMTMzMzcxNzQ3MDMAMDEyNDAzACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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dW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSA1LCAgTnVtYmVyIDEyLCBEZWNlbWJlciwgMTk2MgoKICAgICAgICAgICAgICAgICAgIEouIE4uIE1lcm5lciAgIEFDTSBBbGdvcml0aG0gMTQ5OiBDb21wbGV0ZSBFbGxpcHRpYwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZWdyYWwgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAgNjA1CgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSA2LCAgTnVtYmVyIDYsIEp1bmUsIDE5NjMKCiAgICAgICAgICAgICAgICAgICBPLiBHLiBMdWR3aWcgICBBQ00gQWxnb3JpdGhtIDE3OTogSW5jb21wbGV0ZSBCZXRhIFJhdGlvICAzMTQKCkNvbW11bmljYXRpb25zIG9mIHRoZSBBQ00KVm9sdW1lIDYsICBOdW1iZXIgMTIsIERlY2VtYmVyLCAxOTYzCgogICAgICAgICAgICAgICAgICAgICBSLiBILiBLYXNlICAgQUNNIEFsZ29yaXRobSAyMTk6IFRvcG9sb2dpY2FsIE9yZGVyaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgUGVydCBOZXR3b3JrcyAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDczOC0tNzM5CgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSA3LCAgTnVtYmVyIDgsIEF1Z3VzdCwgMTk2NAoKICAgICAgICAgICAgICAgICAgICBXLiBHYXV0c2NoaSAgIEFDTSBBbGdvcml0aG0gMjM2OiBCZXNzZWwgRnVuY3Rpb25zIG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgRmlyc3QgS2luZCAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDQ3OS0tNDgwCgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSA3LCAgTnVtYmVyIDEyLCBEZWNlbWJlciwgMTk2NAoKICAgICAgICAgICAgICAgICAgIEouIEJvb3Rocm95ZCAgIEFDTSBBbGdvcml0aG0gMjQ2OiBHcmF5Y29kZSAgLiAuIC4gLiAuIC4gIDcwMQoKQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTQpWb2x1bWUgOCwgIE51bWJlciA4LCBBdWd1c3QsIDE5NjUKCiAgICAgICAgICAgICAgICAgICAgVy4gR2F1dHNjaGkgICBBQ00gQWxnb3JpdGhtIDI1OTogTGVnZW5kcmUgRnVuY3Rpb25zCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgQXJndW1lbnRzIExhcmdlciB0aGFuIE9uZSAgLiAuIC4gLiAuIDQ4OC0tNDkyCgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSA5LCAgTnVtYmVyIDUsIE1heSwgMTk2NgoKICAgICAgICAgICAgICAgICAgICBXLiBGbGV0Y2hlciAgIEFDTSBBbGdvcml0aG0gMjg0OiBJbnRlcmNoYW5nZSBvZiBUd28KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJsb2NrcyBvZiBEYXRhIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gIDMyNgoKQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTQpWb2x1bWUgMTAsICBOdW1iZXIgNCwgQXByaWwsIDE5NjcKCiAgICAgICAgICAgICAgICAgSS4gRC4gSGlsbCBhbmQgICAKICAgICAgICAgICAgICAgICAgICAgTS4gQy4gUGlrZSAgIEFDTSBBbGdvcml0aG0gMjk5OiBDaGktU3F1YXJlZCBJbnRlZ3JhbCAgMjQzLS0yNDQKCkNvbW11bmljYXRpb25zIG9mIHRoZSBBQ00KVm9sdW1lIDExLCAgTnVtYmVyIDMsIE1hcmNoLCAxOTY4CgogICAgICAgICAgIEVkc2dlciBXeWJlIERpamtzdHJhICAgR28gdG8gc3RhdGVtZW50IGNvbnNpZGVyZWQgaGFybWZ1bCAuIC4gLiAxNDctLTE0OAoKQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTQpWb2x1bWUgMTIsICBOdW1iZXIgNSwgTWF5LCAxOTY5CgogICAgICAgICBBTlNJIFN1YmNvbW1pdHRlZSBYM0ozICAgQ2xhcmlmaWNhdGlvbiBvZiBGb3J0cmFuIFN0YW5kYXJkcyAtLS0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluaXRpYWwgUHJvZ3Jlc3MgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMjg5LS0yOTQKCkNvbW11bmljYXRpb25zIG9mIHRoZSBBQ00KVm9sdW1lIDEyLCAgTnVtYmVyIDksIFNlcHRlbWJlciwgMTk2OQoKICAgICAgICAgICAgICAgICAgICAgICBOLiBXaXJ0aCAgIE9uIE11bHRpcHJvZ3JhbW1pbmcsIE1hY2hpbmUgQ29kaW5nLCBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXB1dGVyIE9yZ2FuaXphdGlvbiAgLiAuIC4gLiAuIC4gLiAuIC4gNDg5LS00OTgKCkNvbW11bmljYXRpb25zIG9mIHRoZSBBQ00KVm9sdW1lIDEsICBOdW1iZXIgMTEsIE5vdmVtYmVyLCAxOTcwCgogICAgICAgICAgICAgICAgICAgICAgVi4gWS4gTHVtICAgTXVsdGktQXR0cmlidXRlIFJldHJpZXZhbCB3aXRoIENvbWJpbmVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleGVzICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDY2MC0tNjY1CgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSAxMywgIE51bWJlciAxLCBKYW51YXJ5LCAxOTcwCgogICAgICAgICAgICAgICAgICAgICBULiBDLiBMb3dlICAgQXV0b21hdGljIHNlZ21lbnRhdGlvbiBvZiBjeWNsaWMgcHJvZ3JhbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlcyBiYXNlZCBvbiBjb25uZWN0aXZpdHkgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzb3IgdGltaW5nIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDMtLTYKICAgICAgICAgICAgV2FsdGVyIEdhdXRzY2hpIGFuZCAgIAogICAgICAgICAgICAgICAgIEJydWNlIEouIEtsZWluICAgUmVjdXJzaXZlIGNvbXB1dGF0aW9uIG9mIGNlcnRhaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcml2YXRpdmVzIC0tLSBBIHN0dWR5IG9mIGVycm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wYWdhdGlvbiAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDctLTkKICAgICAgICAgICAgICBBLiBQLiBNdWxsZXJ5IGFuZCAgIAogICAgICAgICAgICAgICAgIEcuIEMuIERyaXNjb2xsICAgQSBwcm9jZXNzb3IgYWxsb2NhdGlvbiBtZXRob2QgZm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lLXNoYXJpbmcgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDEwLS0xNAogICAgICAgICAgICAgICAgICBSLiBGLiBTaW1tb25zICAgTmF0dXJhbCBMYW5ndWFnZSBRdWVzdGlvbi1BbnN3ZXJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbXM6IDE5NjkgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMTUtLTMwCiAgICAgICAgICAgICAgICAgICAgRS4gVC4gSXJvbnMgICBFeHBlcmllbmNlIHdpdGggYW4gZXh0ZW5zaWJsZSBsYW5ndWFnZSAgIDMxLS00MAogICAgICAgICAgICAgICAgICAgVS4gTW9udGFuYXJpICAgQSBub3RlIG9uIG1pbmltYWwgbGVuZ3RoIHBvbHlnb25hbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwcm94aW1hdGlvbiB0byBhIGRpZ2l0aXplZCBjb250b3VyIC4gLiA0MS0tNDcKICAgICAgICAgICAgICAgIEhhcmFsZCBTdGVoZmVzdCAgIEFDTSBBbGdvcml0aG0gMzY4OiBOdW1lcmljYWwgSW52ZXJzaW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBMYXBsYWNlIFRyYW5zZm9ybXMgIC4gLiAuIC4gLiAuIC4gLiAuIDQ3LS00OQogICAgICAgICAgICAgICAgIEguIEUuIFNjaGFmZmVyICAgQUNNIEFsZ29yaXRobSAzNjk6IEdlbmVyYXRvciBvZiBSYW5kb20KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bWJlcnMgU2F0aXNmeWluZyB0aGUgUG9pc3NvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlzdHJpYnV0aW9uIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA0OS0tNDkKICAgICAgICAgICAgICAgICAgIEUuIEwuIEJ1dGxlciAgIEFDTSBBbGdvcml0aG0gMzcwOiBHZW5lcmFsIFJhbmRvbSBOdW1iZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRvciAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNDktLTUyCiAgICAgICAgICAgICAgICAgSi4gSy4gUy4gTWNLYXkgICBBQ00gQWxnb3JpdGhtIDM3MTogUGFydGl0aW9ucyBpbiBOYXR1cmFsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlciAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDUyLS01MgogICAgICAgICAgICAgICAgICAgSy4gQi4gRHVuaGFtICAgQUNNIEFsZ29yaXRobSAzNzI6IEFuIEFsZ29yaXRobSB0bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvZHVjZSBDb21wbGV4IFByaW1lcyBDU0lFVkUgIC4gLiAuIC4gLiA1Mi0tNTQKICAgICAgICAgICAgICAgICBSLiBHcmlmZmluIGFuZCAgIAogICAgICAgICAgICAgICAgICAgSy4gQS4gUmVkaWNoICAgUmVtYXJrIG9uIGBgQWxnb3JpdGhtIDM0NyBbTTFdOiBBbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWZmaWNpZW50IEFsZ29yaXRobSBmb3IgU29ydGluZyB3aXRoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNaW5pbWFsIFN0b3JhZ2UnJywgYnkgUi4gQy4gU2luZ2xldG9uICAgIDU0LS01NAogICAgICAgICAgICAgICAgICAgICAgQW5vbnltb3VzICAgUmVwcmVzZW50YXRpb24gZm9yIGNhbGVuZGFyIGRhdGUgZm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lLXRvLW1hY2hpbmUgZGF0YSBpbnRlcmNoYW5nZSAgLiAuIDU1LS01NQogICAgICAgICAgICAgICAgICAgICAgQW5vbnltb3VzICAgSW50ZXJjaGFuZ2Ugcm9sbHMgb2YgcGVyZm9yYXRlZCB0YXBlIGZvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gaW50ZXJjaGFuZ2UgIC4gLiAuIC4gLiAuIC4gLiA1Ni0tNTYKICAgICAgICAgICAgICAgICAgICBXLiBILiBQYXluZSAgIEZvcnRyYW4gVGF1c3dvcnRoZSBwc2V1ZG9yYW5kb20gbnVtYmVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDU3LS01NwoKQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTQpWb2x1bWUgMTMsICBOdW1iZXIgMiwgRmVicnVhcnksIDE5NzAKCiAgICAgICAgICAgICBEYXZpZCBLLiBIc2lhbyBhbmQgICAKICAgICAgICAgICAgICAgIEZyYW5rIEQuIEhhcmFyeSAgIEEgRm9ybWFsIFN5c3RlbSBmb3IgSW5mb3JtYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHJpZXZhbCBmcm9tIEZpbGVzIC4gLiAuIC4gLiAuIC4gLiAuIC4gNjctLTczCiAgICAgICAgICBFLiB2b24gR2xhc2VyZmVsZCBhbmQgICAKICAgICAgICAgICAgICAgICAgIFAuIFAuIFBpc2FuaSAgIFRoZSBtdWx0aXN0b3JlIHBhcnNlciBmb3IgaGllcmFyY2hpY2FsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW50YWN0aWMgc3RydWN0dXJlcyAuIC4gLiAuIC4gLiAuIC4gLiAuIDc0LS04MgogICAgICAgICAgICAgICAgICAgIFN0ZXZlbiBWZXJlICAgVHJhbnNsYXRpb24gZXF1YXRpb25zICAuIC4gLiAuIC4gLiAuIC4gLiA4My0tODkKICAgICAgICAgICAgICAgICAgIEguIEwuIE1vcmdhbiAgIFNwZWxsaW5nIGNvcnJlY3Rpb24gaW4gc3lzdGVtcyBwcm9ncmFtcyAgOTAtLTk0CiAgICAgICAgICAgICAgICAgICAgICBKLiBFYXJsZXkgICBBbiBFZmZpY2llbnQgQ29udGV4dC1GcmVlIFBhcnNpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsZ29yaXRobSAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gOTQtLTEwMgogICAgICAgICAgICAgICAgICAgIEMuIEUuIFJhZGtlICAgVGhlIFVzZSBvZiBRdWFkcmF0aWMgUmVzaWR1ZSBSZXNlYXJjaCAgICAxMDMtLTEwNQogICAgICAgICAgICAgICAgICAgICAgIEIuIEpvbmVzICAgQSBWYXJpYXRpb24gb24gU29ydGluZyBieSBBZGRyZXNzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxhdGlvbiAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDEwNS0tMTA3CiAgICAgICAgICAgICAgICAgIEphbWVzIFIuIEJlbGwgICBUaGUgUXVhZHJhdGljIFF1b3RpZW50IE1ldGhvZDogQSBIYXNoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2RlIEVsaW1pbmF0aW5nIFNlY29uZGFyeSBDbHVzdGVyaW5nICAgIDEwNy0tMTA5CiAgICAgICAgICAgICAgICAgRC4gTi4gTmVzcyBhbmQgICAKICAgICAgICAgICAgICAgIFIuIFMuIEdyZWVuIGFuZCAgIAogICAgICAgICAgICAgICBXLiBBLiBNYXJ0aW4gYW5kICAgCiAgICAgICAgICAgICAgICAgIEcuIEEuIE1vdWx0b24gICBDb21wdXRlciBlZHVjYXRpb24gaW4gYSBncmFkdWF0ZSBzY2hvb2wKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIG1hbmFnZW1lbnQgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMTEwLS0xMTQsIDE5CiAgICAgICAgICAgICAgTS4gRi4gUm9iYmlucyBhbmQgICAKICAgICAgICAgICAgICAgICAgICBKLiBELiBCZXllciAgIEFuIGludGVyYWN0aXZlIGNvbXB1dGVyIHN5c3RlbSB1c2luZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY2FsIGZsb3djaGFydCBpbnB1dCAgLiAuIC4gLiAuIC4gLiAxMTUtLTExOQogICAgICAgICAgICAgICAgICAgIEouIFMuIFdoaXRlICAgQUNNIEFsZ29yaXRobSAzNzM6IE51bWJlciBvZiBEb3VibHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3RyaWN0ZWQgUGFydGl0aW9ucyAgLiAuIC4gLiAuIC4gLiAuIC4gMTIwLS0xMjAKICAgICAgICAgICAgICAgICAgICBKLiBTLiBXaGl0ZSAgIEFDTSBBbGdvcml0aG0gMzc0OiBSZXN0cmljdGVkIFBhcnRpdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdG9yICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAxMjAtLTEyMAogICAgICAgICAgICAgICAgICAgICAgIEguIFNwYXRoICAgQUNNIEFsZ29yaXRobSAzNzU6IEZpdHRpbmcgRGF0YSB0byBPbmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4cG9uZW50aWFsICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMTIwLS0xMjEKICAgICAgICAgICAgICAgICAgICAgICBILiBTcGF0aCAgIEZpdHRpbmcgZGF0YSB0byBvbmUgZXhwb25lbnRpYWwgIC4gLiAuIC4gMTIwLS0xMjEKICAgICAgICAgICAgICAgICAgICAgICBILiBTcGF0aCAgIEFDTSBBbGdvcml0aG0gMzc2OiBMZWFzdCBTcXVhcmVzIEZpdCBieQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGYoeCk9QVxjb3MoQngrQykkIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAxMjEtLTEyMgoKQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTQpWb2x1bWUgMTMsICBOdW1iZXIgMywgTWFyY2gsIDE5NzAKCiAgICAgICAgICAgICAgICAgICBILiBMLiBNb3JnYW4gICBTcGVsbGluZyBjb3JyZWN0aW9uIGluIHN5c3RlbXMgcHJvZ3JhbXMgIDkwLS05NAogICAgICAgICAgICAgUi4gUi4gRmVuaWNoZWwgYW5kICAgCiAgICAgICAgICAgICAgSi4gV2VpemVuYmF1bSBhbmQgICAKICAgICAgICAgICAgICAgIEouIEMuIFlvY2hlbHNvbiAgIEEgUHJvZ3JhbSB0byBUZWFjaCBQcm9ncmFtbWluZyAuIC4gLiAuIC4gMTQxLS0xNDYKICAgICAgICAgICAgICAgSi4gUi4gU2xhZ2xlIGFuZCAgIAogICAgICAgICAgICAgICAgICAgIEouIEsuIERpeG9uICAgRXhwZXJpbWVudHMgd2l0aCB0aGUgTSAmIE4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyZWUtU2VhcmNoaW5nIFByb2dyYW0gLiAuIC4gLiAuIC4gLiAuIC4gMTQ3LS0xNTQsIDE1OQogICAgICAgICAgICAgICAgICBBLiBCYXRzb24gYW5kICAgCiAgICAgICAgICAgICBTaHktTWluZyBNLiBKdSBhbmQgICAKICAgICAgICAgICAgICAgICAgICAgRC4gQy4gV29vZCAgIE1lYXN1cmVtZW50cyBvZiBTZWdtZW50IFNpemUgLiAuIC4gLiAuIC4gMTU1LS0xNTkKICAgICAgICAgICAgICAgICAgIEcuIEEuIFdhdHNvbiAgIE9uIGFuIEFsZ29yaXRobSBmb3IgTm9ubGluZWFyIE1pbmltYXgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFwcHJveGltYXRpb24gIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMTYwLS0xNjIKICAgICAgICAgICAgICAgRC4gRy4gU2Nod2Vpa2VydCAgIEEgQ29tcGFyaXNvbiBvZiBFcnJvciBJbXByb3ZlbWVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXN0aW1hdGVzIGZvciBBZGFwdGl2ZSBUcmFwZXpvaWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludGVncmF0aW9uICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMTYzLS0xNjYKICAgICAgICAgUm9iZXJ0IE0uIFNjaHdhcmN6IGFuZCAgIAogICAgICAgICAgICAgSm9obiBGLiBCdXJnZXIgYW5kICAgCiAgICAgICAgICAgICAgUm9iZXJ0IEYuIFNpbW1vbnMgICBBIERlZHVjdGl2ZSBRdWVzdGlvbiBBbnN3ZXJlciBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hdHVyYWwgTGFuZ3VhZ2UgSW5mZXJlbmNlIC4gLiAuIC4gLiAuIC4gMTY3LS0xODMKICAgICAgICAgICAgIEEuIEYuIENhcmRlbmFzIGFuZCAgIAogICAgICAgICAgICAgICAgICBXLiBKLiBLYXJwbHVzICAgUERFTCwgYSBMYW5ndWFnZSBmb3IgUGFydGlhbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlmZmVyZW50aWFsIEVxdWF0aW9ucyAuIC4gLiAuIC4gLiAuIC4gLiAxODQtLTE5MSAob3IgMTg0LS0xOTA/PykKICAgICAgICAgICAgICAgTS4gSi4gTGV2aW5lIGFuZCAgIAogICAgICAgICAgICAgICAgICBTLiBNLiBTd2Fuc29uICAgQUNNIEFsZ29yaXRobSAzNzc6IFN5bWJvbGljIEV4cGFuc2lvbiBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxnZWJyYWljIEV4cHJlc3Npb25zICAuIC4gLiAuIC4gLiAuIC4gLiAxOTEtLTE5MgogICAgICAgICAgICAgICAgICAgTS4gVi4gS2FpbGFzICAgQW5vdGhlciBtZXRob2Qgb2YgY29udmVydGluZyBmcm9tCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZXhhZGVjaW1hbCB0byBkZWNpbWFsIC4gLiAuIC4gLiAuIC4gLiAuIDE5My0tMTkzCiAgICAgICAgICAgICAgICAgICAgICAgRC4gUGFnZXIgICBBIG51bWJlciBzeXN0ZW0gZm9yIHRoZSBwZXJtdXRhdGlvbnMgLiAuIDE5My0tMTkzCiAgICAgICAgICAgICAgSi4gUi4gSC4gRGVtcHN0ZXIgICBDb21tZW50IG9uIGEgUGFnaW5nIEFub21hbHkgIC4gLiAuIC4gLiAuIDE5My0tMTk0CiAgICAgICAgICAgICAgICAgICBILiBBLiBNYXVyZXIgICBBIE5vdGUgb24gdGhlIENvbXBsZW1lbnQgb2YgSW5oZXJlbnRseQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQW1iaWd1b3VzIENvbnRleHQtRnJlZSBMYW5ndWFnZXMgLiAuIC4gLiAxOTQtLTE5NAogICAgICAgICAgICAgICAgRC4gSy4gSHNpYW8gYW5kICAgCiAgICAgICAgICAgICAgICAgICBGLiBELiBIYXJhcnkgICBDb3JyaWdlbmRhOiBgYEEgRm9ybWFsIFN5c3RlbSBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZm9ybWF0aW9uIFJldHJpZXZhbCBmcm9tIEZpbGVzJycgLiAuIC4gMjY2LS0yNjYKCkNvbW11bmljYXRpb25zIG9mIHRoZSBBQ00KVm9sdW1lIDEzLCAgTnVtYmVyIDQsIEFwcmlsLCAxOTcwCgogICAgICAgICAgICAgQS4gSi4gRGVTYWx2aW8gYW5kICAgCiAgICAgICAgICAgICAgICBKLiBHLiBQdXJkeSBhbmQgICAKICAgICAgICAgICAgICAgICAgICAgICAgIEouIFJhdSAgIENyZWF0aW9uIGFuZCBDb250cm9sIG9mIEludGVybmFsIERhdGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhc2VzIFVuZGVyIGEgRm9ydHJhbiBQcm9ncmFtbWluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW52aXJvbm1lbnQgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAyMTEtLTIxNQogICAgICAgICAgICAgICAgICAgIEguIEQuIE1pbGxzICAgU3ludGF4LURpcmVjdGVkIERvY3VtZW50YXRpb24gZm9yIFBMMzYwICAyMTYtLTIyMgogICAgICAgICAgICAgICBSdWRvbGYgQmF5ZXIgYW5kICAgCiAgICAgICAgICAgICBDaHJpc3RvcGggV2l0emdhbGwgICBTb21lIENvbXBsZXRlIENhbGN1bGkgZm9yIE1hdHJpY2VzIC4gLiAuIDIyMy0tMjM3CiAgICAgICAgICAgICAgIFAuIEJyaW5jaCBIYW5zZW4gICBUaGUgTnVjbGV1cyBvZiBhIE11bHRpcHJvZ3JhbW1pbmcgU3lzdGVtIDIzOC0tMjQxLCAyNTAKICAgICAgICAgICAgICAgICAgQy4gTS4gRWFzdG1hbiAgIFJlcHJlc2VudGF0aW9ucyBmb3IgU3BhY2UgUGxhbm5pbmcgLiAuIC4gMjQyLS0yNTAKICAgICAgICAgICAgIEouIEUuIFBvbWVyYW56IGFuZCAgIAogICAgICAgICAgICAgICAgUi4gTC4gV2VpbCwgSnIuICAgVGhlIGN5Y2xpY2FsIG1ham9yaXR5IHByb2JsZW0gIC4gLiAuIC4gLiAyNTEtLTI1NAogICAgICAgICAgICAgICAgICAgRS4gTi4gTmlsc29uICAgQ3ViaWMgU3BsaW5lcyBvbiBVbmlmb3JtIE1lc2hlcyAgLiAuIC4gLiAyNTUtLTI1OAogICAgICAgICAgICAgICAgICBXLiBQYW5raWV3aWN6ICAgQUNNIEFsZ29yaXRobSAzNzg6IERpc2NyZXRpemVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXd0b24tbGlrZSBNZXRob2QgZm9yIFNvbHZpbmcgYSBTeXN0ZW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIFNpbXVsdGFuZW91cyBOb25saW5lYXIgRXF1YXRpb25zICAuIC4gMjU5LS0yNjAKICAgICAgICAgICAgICAgICAgIEouIE4uIEx5bmVzcyAgIEFDTSBBbGdvcml0aG0gMzc5OiBTUVVBTksgKFNpbXBzb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1YWRyYXR1cmUgVXNlZCBBZGFwdGl2ZWx5LU5vaXNlIEtpbGxlZCkgMjYwLS0yNjMgKG9yIDI2MC0tMjYyPz8pCiAgICAgICAgICAgICAgIFcuIEYuIEhlZXNzLCBKci4gICBDb21tZW50cyBvbiBhIHBhcGVyIGJ5IFdhbGxhY2UgYW5kIE1hc29uIDI2NC0tMjY1CiAgICAgICAgICAgICAgICAgICAgSi4gTC4gU21pdGggICBDb21tZW50IG9uIG11bHRpcHJvZ3JhbW1pbmcgdW5kZXIgYSBwYWdlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbiBkZW1hbmQgc3RyYXRlZ3kgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDI2NS0tMjY1CiAgICAgICAgICAgICBSb25hbGQgQy4gZGUgVnJpZXMgICBDb21tZW50IG9uIExhd2xlcidzIE11bHRpbGV2ZWwgQm9vbGVhbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluaW1pemF0aW9uIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAyNjUtLTI2NgogICAgICAgICAgICAgICAgICAgSy4gUi4gS25pZ2h0ICAgQW4gQWxnb2wgY29uc3RydWN0aW9uIGZvciBwcm9jZWR1cmVzIGFzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzIG9mIHByb2NlZHVyZXMgLiAuIC4gLiAuIC4gLiAuIDI2Ni0tMjY2CiAgICAgICAgICAgICAgICAgICAgICAgTi4gV2lydGggICBDb3JyaWdlbmRhOiBgYE9uIE11bHRpcHJvZ3JhbW1pbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWNoaW5lIENvZGluZywgYW5kIENvbXB1dGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmdhbml6YXRpb24nJyAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDI2Ni0tMjY2CgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSAxMywgIE51bWJlciA1LCBNYXksIDE5NzAKCiAgICAgICAgICAgICAgICAgICAgICAgTC4gSG9kZXMgICBQcm9ncmFtbWluZyBTeXN0ZW0gZm9yIHRoZSBPbi1MaW5lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbmFseXNpcyBvZiBCaW9tZWRpY2FsIEltYWdlcyAgLiAuIC4gLiAuIDI3OS0tMjgzLCAyODYKICAgICAgICAgICAgICAgICAgIEcuIEEuIFNpdHRvbiAgIE9wZXJhdGlvbnMgb24gR2VuZXJhbGl6ZWQgQXJyYXlzIHdpdGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBHZW5pZSBDb21waWxlciAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMjg0LS0yODYKICAgICAgICAgICAgICAgICAgICAgICAgUy4gVmVyZSAgIFRyYW5zbGF0aW9uIEVxdWF0aW9ucyAoRXJyYXRhKSAuIC4gLiAuIC4gMjg2LS0yODYKICAgICAgICAgICAgICAgVy4gRS4gU2Fzc2VyIGFuZCAgIAogICAgICAgICAgICAgIEQuIFMuIEJ1cmRpY2sgYW5kICAgCiAgICAgICAgICAgICAgIEQuIEEuIEdyYWhhbSBhbmQgICAKICAgICAgICAgICAgICAgICAgIFQuIEguIE5heWxvciAgIEFwcGxpY2F0aW9uIG9mIFNlcXVlbnRpYWwgU2FtcGxpbmcgdG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpbXVsYXRpb24uIGFuIEV4YW1wbGUgSW52ZW50b3J5IE1vZGVsICAgMjg3LS0yOTYKICAgICAgICAgICAgICAgICAgICAgIEouIExvZWNreCAgIEFsZ29yaXRobSBmb3IgdGhlIENvbnN0cnVjdGlvbiBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQm91bmRlZC1Db250ZXh0IFBhcnNlcnMgIC4gLiAuIC4gLiAuIC4gLiAyOTctLTMwNwogICAgICAgICAgICAgICBKb2huIEMuIFJleW5vbGRzICAgR0VEQU5LRU4gLS0tIEEgU2ltcGxlIFR5cGVsZXNzIExhbmd1YWdlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXNlZCBvbiB0aGUgUHJpbmNpcGxlIG9mIENvbXBsZXRlbmVzcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHRoZSBSZWZlcmVuY2UgQ29uY2VwdCAgLiAuIC4gLiAuIC4gLiAzMDgtLTMxOQogICAgICAgICBTLiBDcmVzcGktUmVnaGl6emkgYW5kICAgCiAgICAgICAgICAgICAgICAgICAgUi4gTW9ycHVyZ28gICBBIGxhbmd1YWdlIGZvciB0cmVhdGluZyBncmFwaHMgLiAuIC4gLiAuIDMxOS0tMzIzCiAgICAgICAgICAgICAgICAgIFMuIExhZmxpbiBhbmQgICAKICAgICAgICAgICAgICAgICAgTS4gQS4gQnJlYm5lciAgIEFDTSBBbGdvcml0aG0gMzgwOiBJbi1zaXR1IFRyYW5zcG9zaXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIGEgUmVjdGFuZ3VsYXIgTWF0cml4ICAuIC4gLiAuIC4gLiAuIC4gMzI0LS0zMjYgKG9yIDMyNC0tMzI1Pz8pCiAgICAgICAgICAgICAgICAgICAgIFIuIEUuIEtub3AgICBBQ00gQWxnb3JpdGhtIDM4MTogUmFuZG9tIFZlY3RvcnMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm0gSW4gU29saWQgQW5nbGUgLiAuIC4gLiAuIC4gLiAuIC4gMzI2LS0zMjYKCkNvbW11bmljYXRpb25zIG9mIHRoZSBBQ00KVm9sdW1lIDEzLCAgTnVtYmVyIDYsIEp1bmUsIDE5NzAKCiAgICAgICAgICAgICAgICAgICAgSC4gQS4gRWxkZXIgICBPbiB0aGUgRmVhc2liaWxpdHkgb2YgVm9pY2UgSW5wdXQgdG8gYW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uLUxpbmUgQ29tcHV0ZXIgUHJvY2Vzc2luZyBTeXN0ZW0gLiAuIC4gMzM5LS0zNDYKICAgICAgICBDLiBSLiBNdXRodWtyaXNobmFuIGFuZCAgIAogICAgICAgICAgICAgICAgICAgVi4gUmFqYXJhbWFuICAgT24gdGhlIENvbnZlcnNpb24gb2YgRGVjaXNpb24gVGFibGVzIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21wdXRlciBQcm9ncmFtcyAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDM0Ny0tMzUxCiAgICAgICAgICAgICAgICAgICBKLiBFLiBHcmltZXMgICBTY2hlZHVsaW5nIHRvIFJlZHVjZSBDb25mbGljdCBpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVldGluZ3MgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAzNTEtLTM1MgogICAgICAgICAgICAgICAgICAgRC4gRy4gRnJhbnR6ICAgQSBQTFxzbGFzaCAxIHByb2dyYW0gdG8gYXNzaXN0IHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGFyYXRpdmUgbGluZ3Vpc3QgLiAuIC4gLiAuIC4gLiAuIC4gLiAzNTMtLTM1NgogICAgICAgICAgICAgICAgICBGLiBKLiBEYW1lcmF1ICAgQXV0b21hdGljIFBhcnNpbmcgZm9yIENvbnRlbnQgQW5hbHlzaXMgICAzNTYtLTM2MAogICAgICAgICAgICAgICAgICAgICBQZXRlciBMaW56ICAgQWNjdXJhdGUgRmxvYXRpbmctUG9pbnQgU3VtbWF0aW9uICAuIC4gLiAzNjEtLTM2MgogICAgICAgICAgICAgICAgSy4gRS4gSGlsbHN0cm9tICAgQ29tcGFyaXNvbiBvZiBTZXZlcmFsIEFkYXB0aXZlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXd0b24tQ290ZXMgUXVhZHJhdHVyZSBSb3V0aW5lcyBpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXZhbHVhdGluZyBEZWZpbml0ZSBJbnRlZ3JhbHMgd2l0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGVha2VkIEludGVncmFuZHMgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAzNjItLTM2NQogICAgICAgICAgICAgICAgICBHLiBXLiBTdGV3YXJ0ICAgSW5jb3Jwb3JhdGluZyBPcmlnaW4gU2hpZnRzIGludG8gdGhlIFFSCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGdvcml0aG0gZm9yIFN5bW1ldHJpYyBUcmlkaWFnb25hbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0cmljZXMgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAzNjUtLTM2NwogICAgICAgICAgICAgICAgICAgIFAuIEouIENoYXNlICAgQUNNIEFsZ29yaXRobSAzODI6IENvbWJpbmF0aW9ucyBvZiAke019JAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0IG9mICR7Tn0kIE9iamVjdHMgLiAuIC4gLiAuIC4gLiAuIC4gLiAzNjgtLTM2OAogICAgICAgICAgICAgICAgICAgIFAuIEouIENoYXNlICAgQUNNIEFsZ29yaXRobSAzODM6IFBlcm11dGF0aW9ucyBvZiBhIFNldAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBSZXBldGl0aW9ucyAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAzNjgtLTM2OQogICAgICAgICAgICAgICAgICBHLiBXLiBTdGV3YXJ0ICAgQUNNIEFsZ29yaXRobSAzODQ6IEVpZ2VudmFsdWVzIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWlnZW52ZWN0b3JzIG9mIGEgUmVhbCBTeW1tZXRyaWMgTWF0cml4CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbRjJdIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDM2OS0tMzcxCiAgICAgICAgICAgICAgICAgICBSLiBMLiBMb25kb24gICBDZXJ0aWZpY2F0aW9uIG9mIEFsZ29yaXRobSAyNDUgKE0xKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJlZXNvcnQgMzogUHJvb2Ygb2YgQWxnb3JpdGhtcyAtLS0gQQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV3IEtpbmQgb2YgQ2VydGlmaWNhdGlvbiAgLiAuIC4gLiAuIC4gLiAzNzEtLTM3NAogICAgICAgICAgICAgSi4gUC4gQ2hhbmRsZXIgYW5kICAgCiAgICAgICAgICAgICAgICAgVy4gQy4gSGFycmlzb24gICBSMjAxLS1TSEVMTFNPUlQgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDM3My0tMzc0CiAgICAgICAgICAgICAgICAgICAgIEUuIEYuIENvZGQgICBBIFJlbGF0aW9uYWwgTW9kZWwgb2YgRGF0YSBmb3IgTGFyZ2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYXJlZCBEYXRhIEJhbmtzICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMzc3LS0zODcKCkNvbW11bmljYXRpb25zIG9mIHRoZSBBQ00KVm9sdW1lIDEzLCAgTnVtYmVyIDcsIEp1bHksIDE5NzAKCiAgICAgICAgICAgICAgICAgICAgQy4gQS4gR3JhbnQgICBBbiBpbnRlcmFjdGl2ZSBjb21tYW5kIGdlbmVyYXRpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhY2lsaXR5IC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNDAzLS00MDYKICAgICAgICAgICAgICAgICAgIE0uIEEuIFdpbGtlcyAgIENvbnZlcnNhdGlvbmFsIEFjY2VzcyB0byBhIDIwNDgtV29yZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFjaGluZSAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA0MDctLTQxNAogICAgICAgICAgICAgICAgICAgIFcuIE0uIFdhaXRlICAgVGhlIG1vYmlsZSBwcm9ncmFtbWluZyBzeXN0ZW06IFNUQUdFIDIgICA0MTUtLTQyMQogICAgICAgICAgICAgICAgQnVydG9uIEguIEJsb29tICAgU3BhY2UvVGltZSBUcmFkZS1vZmZzIGluIEhhc2ggQ29kaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIEFsbG93YWJsZSBFcnJvcnMgIC4gLiAuIC4gLiAuIC4gLiAuIDQyMi0tNDI2CiAgICAgICAgIEUuIEcuIENvZmZtYW4sIEpyLiBhbmQgICAKICAgICAgICAgICAgICAgICAgICAgICAgIEouIEV2ZSAgIEZpbGUgU3RydWN0dXJlcyBVc2luZyBIYXNoaW5nIEZ1bmN0aW9ucyAgNDI3LS00MzIsIDQzNgogICAgICAgICAgICAgIEdvcmRvbiBILiBCcmFkbGV5ICAgQWxnb3JpdGhtIGFuZCBCb3VuZCBmb3IgdGhlIEdyZWF0ZXN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24gRGl2aXNvciBvZiAkbiQgSW50ZWdlcnMgLiAuIC4gLiAuIDQzMy0tNDM2CiAgICAgICAgICAgICAgICAgICAgVy4gQS4gV29vZHMgICBDb250ZXh0LVNlbnNpdGl2ZSBQYXJzaW5nICAuIC4gLiAuIC4gLiAuIDQzNy0tNDQ1CiAgICAgICAgICAgICAgICAgSy4gQS4gUGFjaW9yZWsgICBBQ00gQWxnb3JpdGhtIDM4NTogRXhwb25lbnRpYWwgSW50ZWdyYWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7RX1faSh4KSQgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNDQ2LS00NDcKICAgICAgICAgICAgICAgICAgRy4gSC4gQnJhZGxleSAgIEFDTSBBbGdvcml0aG0gMzg2OiBHcmVhdGVzdCBDb21tb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpdmlzb3Igb2YgJG4kIEludGVnZXJzIGFuZCBNdWx0aXBsaWVycyAgNDQ3LS00NDgKICAgICAgICAgICAgICAgICBLLiBTYXR0bGV5IGFuZCAgIAogICAgICAgICAgICAgICAgICAgUi4gTWlsbHN0ZWluICAgQ29tbWVudHMgb24gYSBwYXBlciBieSBMb3dlICAuIC4gLiAuIC4gLiA0NTAtLTQ1MQogICAgICAgICAgICAgICAgICBILiBELiBCYWVja2VyICAgQSBub3RlIG9uIGRhdGEgYmFzZSBkZWFkbG9ja3MgIC4gLiAuIC4gLiA0NTEtLTQ1MQogICAgICAgICAgICAgICAgIEouIEUuIFBvbWVyYW56ICAgTm90ZSBvbiBhbiBBbm9tYWx5IGluIFBhZ2luZyAuIC4gLiAuIC4gLiA0NTEtLTQ1MQogICAgICAgICAgICAgICAgICAgICBCLiBSLiBIdW50ICAgQSBDb21tZW50IG9uIEF4aW9tYXRpYyBBcHByb2FjaGVzIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9ncmFtbWluZyAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDQ1Mi0tNDUyCgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSAxMywgIE51bWJlciA4LCBBdWd1c3QsIDE5NzAKCiAgICAgICAgICAgICAgICAgIE4uIFIuIE5pZWxzZW4gICBBbGxvY2F0aW9uIG9mIENvbXB1dGVyIFJlc291cmNlcy4gaXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaWNpbmcgdGhlIEFuc3dlciAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNDY3LS00NzQKICAgICAgICAgICAgICAgICAgICBHLiBOYWd5IGFuZCAgIAogICAgICAgICAgICAgICAgICAgICAgIE4uIFR1b25nICAgTm9ybWFsaXphdGlvbiBUZWNobmlxdWVzIGZvciBIYW5kcHJpbnRlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTnVtZXJhbHMgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA0NzUtLTQ4MQogICAgICAgICAgICAgICAgICAgICAgQS4gQy4gRGF5ICAgRnVsbCBUYWJsZSBRdWFkcmF0aWMgU2VhcmNoaW5nIGZvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2NhdHRlciBTdG9yYWdlICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA0ODEtLTQ4MgogICAgICAgICAgICAgICAgQi4gUy4gQnJhd24gYW5kICAgCiAgICAgICAgICAgIEYuIEcuIEd1c3RhdnNvbiBhbmQgICAKICAgICAgICAgICAgICAgICAgIEUuIFMuIE1hbmtpbiAgIFNvcnRpbmcgaW4gYSBQYWdpbmcgRW52aXJvbm1lbnQgIC4gLiAuIC4gNDgzLS00OTQKICAgICAgICAgICAgICBKLiBILiBTYWx0emVyIGFuZCAgIAogICAgICAgICAgICAgICAgICBKLiBXLiBHaW50ZWxsICAgVGhlIGluc3RydW1lbnRhdGlvbiBvZiBNdWx0aWNzIC4gLiAuIC4gLiA0OTUtLTUwMAogICAgICAgICAgICAgIEouIEQuIEljaGJpYWggYW5kICAgCiAgICAgICAgICAgICAgICAgICAgUy4gUC4gTW9yc2UgICBBIHRlY2huaXF1ZSBmb3IgZ2VuZXJhdGluZyBhbG1vc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGltYWwgRmxveWQtRXZhbnMgcHJvZHVjdGlvbnMgZm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVjZWRlbmNlIGdyYW1tYXJzICAuIC4gLiAuIC4gLiAuIC4gLiAuIDUwMS0tNTA4CiAgICAgICAgICAgICAgICAgICAgSy4gRmllbGRpbmcgICBBQ00gQWxnb3JpdGhtIDM4NzogRnVuY3Rpb24gTWluaW1pemF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgTGluZWFyIFNlYXJjaCAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDUwOS0tNTEwCiAgICAgICAgICAgICAgICAgIEguIEh1Ym5lciBhbmQgICAKICAgICAgICAgICAgICAgICAgSC4gS3JlbWVyIGFuZCAgIAogICAgICAgICAgICAgICAgIEsuIE8uIExpbm4gYW5kICAgCiAgICAgICAgICAgICAgICAgICBXLiBTY2h3ZXJpbmcgICBBQ00gQWxnb3JpdGhtIDM4ODogUmFkZW1hY2hlciBGdW5jdGlvbiAgIDUxMC0tNTExCiAgICAgICAgICAgICAgICAgIEguIEh1Ym5lciBhbmQgICAKICAgICAgICAgICAgICAgICAgSC4gS3JlbWVyIGFuZCAgIAogICAgICAgICAgICAgICAgIEsuIE8uIExpbm4gYW5kICAgCiAgICAgICAgICAgICAgICAgICBXLiBTY2h3ZXJpbmcgICBBQ00gQWxnb3JpdGhtIDM4OTogQmluYXJ5IE9yZGVyZWQgV2Fsc2gKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9ucyAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNTExLS01MTEKICAgICAgICAgICAgICAgICAgSC4gSHVibmVyIGFuZCAgIAogICAgICAgICAgICAgICAgICBILiBLcmVtZXIgYW5kICAgCiAgICAgICAgICAgICAgICAgSy4gTy4gTGlubiBhbmQgICAKICAgICAgICAgICAgICAgICAgIFcuIFNjaHdlcmluZyAgIEFDTSBBbGdvcml0aG0gMzkwOiBTZXF1ZW5jeSBPcmRlcmVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXYWxzaCBGdW5jdGlvbnMgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDUxMS0tNTEyIChvciA1MTEtLTUxMT8/KQogICAgICAgICAgICAgICAgICAgICAgIEouIE1jS2F5ICAgQUNNIEFsZ29yaXRobSAzOTE6IFVuaXRhcnkgU3ltbWV0cmljCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb2x5bm9taWFscyAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDUxMi0tNTEyCiAgICAgICAgICAgICAgICAgICAgICBBbm9ueW1vdXMgICBJZGVudGlmaWNhdGlvbiBvZiBTdGF0ZXMgb2YgdGhlIFVuaXRlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGVzIChpbmNsdWRpbmcgdGhlIERpc3RyaWN0IG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bWJpYSkgZm9yIGluZm9ybWF0aW9uIGludGVyY2hhbmdlICAgIDUxNC0tNTE1CgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSAxMywgIE51bWJlciA5LCBTZXB0ZW1iZXIsIDE5NzAKCiAgICAgICAgICAgICAgVy4gSmFjayBCb3VrbmlnaHQgICBBIFByb2NlZHVyZSBmb3IgR2VuZXJhdGlvbiBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhyZWUtRGltZW5zaW9uYWwgSGFsZi1Ub25lZCBDb21wdXRlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JhcGhpY3MgUHJlc2VudGF0aW9ucyAuIC4gLiAuIC4gLiAuIC4gLiA1MjctLTUzNgogICAgICAgICAgICAgICAgIEcuIEJyYWNjaGkgYW5kICAgCiAgICAgICAgICAgICAgICAgICBNLiBTb21hbHZpY28gICBJbnRlcmFjdGl2ZSBTb2Z0d2FyZSBTeXN0ZW0gZm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21wdXRlci1BaWRlZCBEZXNpZ24uIGFuIEFwcGxpY2F0aW9uIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaXJjdWl0IFByb2plY3QgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDUzNy0tNTQ1CiAgICAgICAgICAgICAgICAgIEkuIEhpcnNjaHNvaG4gICBBTUVTUExPVCwgYSBIaWdoZXIgTGV2ZWwgRGF0YSBQbG90dGluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29mdHdhcmUgU3lzdGVtICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA1NDYtLTU1NQogICAgICAgICAgICAgQ2xldmUgQi4gTW9sZXIgYW5kICAgCiAgICAgICAgICAgICAgIExvdWlzIFAuIFNvbG9tb24gICBJbnRlZ3JhdGluZyBTcXVhcmUgUm9vdHMgLiAuIC4gLiAuIC4gLiAuIDU1Ni0tNTU3CiAgICAgICAgICAgICAgICAgICBHLiBXLiBLaW1ibGUgICBBIFZhcmlhdGlvbiBvZiB0aGUgR29vZG1hbi1MYW5jZSBNZXRob2QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgU29sdXRpb24gb2YgVHdvLVBvaW50IEJvdW5kYXJ5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSBQcm9ibGVtcyAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDU1Ny0tNTU4CiAgICAgICAgICAgICAgICBNLiBXYXluZSBXaWxzb24gICBPcHRpbWFsIFN0YXJ0aW5nIEFwcHJveGltYXRpb25zIGZvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGluZyBTcXVhcmUgUm9vdCBmb3IgU2xvdyBvciBObwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGl2aWRlIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA1NTktLTU2MSAob3IgNTU5LS01NjA/PykKICAgICAgICAgICAgICAgICAgTC4gVy4gRWhybGljaCAgIENvbXBsZXggTWF0cml4IEludmVyc2lvbiBWZXJzdXMgUmVhbCAuIC4gNTYxLS01NjIKICAgICAgICAgICAgICAgIE0uIEguIHZhbiBFbWRlbiAgIEluY3JlYXNpbmcgdGhlIEVmZmljaWVuY3kgb2YgUXVpY2tzb3J0ICAgNTYzLS01NjcgKG9yIDU2My0tNTY2Pz8pCiAgICAgICAgICAgIFJvYmVydCBSLiBTbWl0aCBhbmQgICAKICAgICAgICAgICAgICAgICAgRGVubmlzIE1jQ2FsbCAgIEFDTSBBbGdvcml0aG0gMzkyOiBTeXN0ZW1zIG9mIEh5cGVyYm9saWMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFAuRC5FLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNTY3LS01NzAKICAgICAgICAgICAgICAgICAgIFMuIEsuIEFiZGFsaSAgIEFDTSBBbGdvcml0aG0gMzkzOiBTcGVjaWFsIFNlcmllcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3VtbWF0aW9uIHdpdGggQXJiaXRyYXJ5IFByZWNpc2lvbiAuIC4gLiA1NzAtLTU3MAogICAgICAgICAgICAgICAgICAgICBSLiBCLiBEaWFsICAgQUNNIEFsZ29yaXRobSAzOTQ6IERlY2lzaW9uIFRhYmxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDU3MS0tNTczIChvciA1NzEtLTU3Mj8/KQogICAgICAgICAgICAgTGVzbGllIExhbXBvcnQgYW5kICAgCiAgICAgICAgICAgICAgICAgICAgIEouIFIuIEJlbGwgICBDb21tZW50IG9uIEJlbGwncyBRdWFkcmF0aWMgUXVvdGllbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1ldGhvZCBmb3IgSGFzaCBDb2RlIFNlYXJjaGluZyAuIC4gLiAuIC4gNTczLS01NzQKICAgICAgICAgICAgICAgICAgICAgICBaLiBCYXZlbCAgIE9uIHRoZSBOdW1iZXIgb2YgQXV0b21vcnBoaXNtcyBvZiBhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaW5nbHkgR2VuZXJhdGVkIEF1dG9tYXRvbiAuIC4gLiAuIC4gLiAuIDU3NC0tNTc1CgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSAxMywgIE51bWJlciAxMCwgT2N0b2JlciwgMTk3MAoKICAgICAgICAgICAgICAgICAgICBXLiBBLiBXb29kcyAgIFRyYW5zaXRpb24gTmV0d29yayBHcmFtbWFycyBmb3IgTmF0dXJhbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFuZ3VhZ2UgQW5hbHlzaXMgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA1OTEtLTYwNgogICAgICAgICAgICAgICAgICBKLiBFYXJsZXkgYW5kICAgCiAgICAgICAgICAgICAgICAgICAgIEguIFN0dXJnaXMgICBBIGZvcm1hbGlzbSBmb3IgdHJhbnNsYXRvciBpbnRlcmFjdGlvbnMgIDYwNy0tNjE3CiAgICAgICAgICAgICAgICAgICAgIEcuIFcuIEhpbGwgICBBQ00gQWxnb3JpdGhtIDM5NTogU3R1ZGVudCdzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdCQtRGlzdHJpYnV0aW9uIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDYxNy0tNjE5CiAgICAgICAgICAgICAgICAgICAgIEcuIFcuIEhpbGwgICBBQ00gQWxnb3JpdGhtIDM5NjogU3R1ZGVudCdzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdCQtUXVhbnRpbGVzICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDYxOS0tNjIwCiAgICAgICAgICAgICAgICBTLiBLLiBDaGFuZyBhbmQgICAKICAgICAgICAgICAgICAgICAgICAgICAgQS4gR2lsbCAgIEFDTSBBbGdvcml0aG0gMzk3OiBBbiBJbnRlZ2VyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9ncmFtbWluZyBQcm9ibGVtICAuIC4gLiAuIC4gLiAuIC4gLiAuIDYyMC0tNjIxCiAgICAgICAgICAgICAgICAgICAgUi4gQS4gU3RvbmUgICBBQ00gQWxnb3JpdGhtIDM5ODogVGFibGVsZXNzIERhdGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnZlcnNpb24gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNjIxLS02MjEKICAgICAgICAgICAgICAgICBKLiBKLiBTZXBwYW5lbiAgIEFDTSBBbGdvcml0aG0gMzk5OiBTcGFubmluZyBUcmVlIC4gLiAuIC4gNjIxLS02MjIKICAgICAgICAgICAgICAgICAgRy4gQy4gV2FsbGljayAgIEFDTSBBbGdvcml0aG0gNDAwOiBNb2RpZmllZCBIYXZpZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZWdyYXRpb24gIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA2MjItLTYyNAogICAgICAgICAgICAgICAgICAgICAgICBSLiBQZXRvICAgUmVtYXJrIG9uIGBgQWxnb3JpdGhtIDM0NyBbTTFdOiBBbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWZmaWNpZW50IEFsZ29yaXRobSBmb3IgU29ydGluZyB3aXRoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNaW5pbWFsIFN0b3JhZ2UnJyAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuICA2MjQKICAgICAgICAgICAgICAgICAgICBMLiBCLiBTbWl0aCAgIFRoZSB1c2Ugb2YgaW50ZXJhY3RpdmUgZ3JhcGhpY3MgdG8gc29sdmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWVyaWNhbCBwcm9ibGVtcyAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNjI1LS02MzQKCkNvbW11bmljYXRpb25zIG9mIHRoZSBBQ00KVm9sdW1lIDEzLCAgTnVtYmVyIDExLCBOb3ZlbWJlciwgMTk3MAoKICAgICAgICAgICAgICAgICAgUC4gTGFGYXRhIGFuZCAgIAogICAgICAgICAgICAgICAgICAgIEouIEIuIFJvc2VuICAgQW4gaW50ZXJhY3RpdmUgZGlzcGxheSBmb3IgYXBwcm94aW1hdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgbGluZWFyIHByb2dyYW1taW5nICAuIC4gLiAuIC4gLiAuIC4gLiA2NTEtLTY1OQogICAgICAgICAgICAgICAgICAgICAgVi4gWS4gTHVtICAgTXVsdGktYXR0cmlidXRlIHJldHJpZXZhbCB3aXRoIGNvbWJpbmVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleGVzICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDY2MC0tNjY1CiAgICAgICAgICAgICAgICAgICBDLiBKLiBNaWZzdWQgICBBIG11bHRpcGxlLXByZWNpc2lvbiBkaXZpc2lvbiBhbGdvcml0aG0gIDY2Ni0tNjY4CiAgICAgICAgICAgICAgICAgIEsuIENvbnJvdyBhbmQgICAKICAgICAgICAgICAgICAgICAgICBSLiBHLiBTbWl0aCAgIE5FQVRFUjI6IEEgUEwvSSBTb3VyY2UgU3RhdGVtZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWZvcm1hdHRlciAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDY2OS0tNjc1CiAgICAgICAgICAgICAgSmFtZXMgUi4gQmVsbCBhbmQgICAKICAgICAgICAgICAgICAgQ2hhcmxlcyBILiBLYW1hbiAgIFRoZSBMaW5lYXIgUXVvdGllbnQgSGFzaCBDb2RlICAuIC4gLiAuIC4gNjc1LS02NzcKICAgICAgICAgICAgICAgICAgIEMuIEouIENoZW5leSAgIEEgTm9ucmVjdXJzaXZlIExpc3QgQ29tcGFjdGluZyBBbGdvcml0aG0gNjc3LS02NzgKICAgICAgICAgICAgICAgICAgICAgIEFub255bW91cyAgIFByb3Bvc2VkIEFtZXJpY2FuIE5hdGlvbmFsIFN0YW5kYXJkLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVjb3JkZWQgbWFnbmV0aWMgdGFwZSBmb3IgaW5mb3JtYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyY2hhbmdlICgxNjAwIENQSSwgcGhhc2UgZW5jb2RlZCkgICAgNjc5LS02ODUKICAgICAgICAgICAgICAgICAgICAgIEFub255bW91cyAgIFByb3Bvc2VkIEFtZXJpY2FuIE5hdGlvbmFsIFN0YW5kYXJkLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5yZWNvcmRlZCBtYWduZXRpYyB0YXBlIGZvciBpbmZvcm1hdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJjaGFuZ2UgKDkgdHJhY2stMjAwIGFuZCA4MDAgQ1BJLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlJaSSBhbmQgMTYwMCBDUEksIFAuRS4pIC4gLiAuIC4gLiAuIC4gLiA2ODYtLTY5MgogICAgICAgICAgICAgICAgICAgICBQLiBCcmF0bGV5ICAgQUNNIEFsZ29yaXRobSA0MDE6IEFuIEltcHJvdmVkIEFsZ29yaXRobQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gUHJvZHVjZSBDb21wbGV4IFByaW1lcyAgLiAuIC4gLiAuIC4gLiA2OTMtLTY5MwogICAgICAgICAgICAgICAgTS4gSC4gdmFuIEVtZGVuICAgQUNNIEFsZ29yaXRobSA0MDI6IEluY3JlYXNpbmcgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFZmZpY2llbmN5IG9mIFF1aWNrc29ydCAgLiAuIC4gLiAuIC4gLiAuIDY5My0tNjk0CiAgICAgICAgICAgICAgICAgICBXLiBKLiBXaWxzb24gICBBIGdlbmVyYWxpemVkIG1ldGhvZCBmb3IgZ2VuZXJhdGluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnQvZnVuY3Rpb24gdmFsdWVzIC4gLiAuIC4gLiAuIC4gLiA2OTYtLTY5NwogICAgICAgICAgICAgICAgICAgSi4gUi4gRWhybWFuICAgQ29ycmVjdGlvbiB0byAnbG9naWNhbCcgYXJpdGhtZXRpYyBvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHV0ZXJzIHdpdGggdHdvJ3MgY29tcGxlbWVudCBiaW5hcnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaXRobWV0aWMgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNjk3LS02OTgKICAgICAgICAgICAgICAgICAgIEEuIEJlcm5zdGVpbiAgIENvbW1lbnQgb24gdGhlIHdvcmtpbmcgc2V0IG1vZGVsIGZvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbSBiZWhhdmlvciAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA2OTgtLTY5OQogICAgICAgICAgICAgICAgICAgICAgIEouIFJva25lICAgQ29uZGl0aW9uIG51bWJlcnMgb2YgUGVpIG1hdHJpY2VzICAuIC4gLiA2OTktLTY5OQoKQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTQpWb2x1bWUgMTMsICBOdW1iZXIgMTIsIERlY2VtYmVyLCAxOTcwCgogICAgICAgICAgICAgIE0uIFYuIE1hdGhld3MgYW5kICAgCiAgICAgICAgICAgICAgICAgICAgRi4gUi4gTW9vcmUgICBHUk9PVkUtQSBwcm9ncmFtIHRvIGNvbXBvc2UsIHN0b3JlLCBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXQgZnVuY3Rpb25zIG9mIHRpbWUgLiAuIC4gLiAuIC4gLiAuIC4gNzE1LS03MjEKICAgICAgICAgICAgICAgSmFtZXMgQy4gVGllcm5hbiAgIEFuIEVmZmljaWVudCBTZWFyY2ggQWxnb3JpdGhtIHRvIEZpbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBFbGVtZW50YXJ5IENpcmN1aXRzIG9mIGEgR3JhcGggLiAuIC4gNzIyLS03MjYKICAgICAgICAgICAgICAgIEMuIEJldG91cm5lIGFuZCAgIAogICAgICAgICAgICAgICBKLiBCb3VsZW5nZXIgYW5kICAgCiAgICAgICAgICAgICAgICAgIEouIEZlcnJpZSBhbmQgICAKICAgICAgICAgICAgICAgICAgQy4gS2Fpc2VyIGFuZCAgIAogICAgICAgICAgICAgICBTLiBLcmFrb3dpYWsgYW5kICAgCiAgICAgICAgICAgICAgICAgICAgSi4gTW9zc2llcmUgICBQcm9jZXNzIG1hbmFnZW1lbnQgYW5kIHJlc291cmNlIHNoYXJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBtdWx0aWFjY2VzcyBzeXN0ZW0gRVNPUEUgIC4gLiAuIC4gNzI3LS03MzMKICAgICAgICAgICAgICAgICAgIEguIEwuIE1vcmdhbiAgIEFuIGludGVycnVwdCBiYXNlZCBvcmdhbml6YXRpb24gZm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYW5hZ2VtZW50IGluZm9ybWF0aW9uIHN5c3RlbXMgLiAuIC4gLiAuIDczNC0tNzM5CiAgICAgICAgICAgICAgICAgUi4gSi4gVGhvbXBzb24gICBJbXByb3Zpbmcgcm91bmQtb2ZmIGluIFJ1bmdlLUt1dHRhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wdXRhdGlvbnMgd2l0aCBHaWxsJ3MgbWV0aG9kICAuIC4gLiAuIDczOS0tNzQwCiAgICAgICAgICAgICAgICAgIFMuIEMuIFNoYXBpcm8gICBUaGUgbGlzdCBzZXQgZ2VuZXJhdG9yOiBhIGNvbnN0cnVjdCBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2YWx1YXRpbmcgc2V0IGV4cHJlc3Npb25zIC4gLiAuIC4gLiAuIC4gNzQxLS03NDQKICAgICAgICAgICAgICAgICAgICBOLiBBLiBCbGFjayAgIE9wdGltdW0gTWVyZ2luZyBmcm9tIE1hc3MgU3RvcmFnZSAgLiAuIC4gNzQ1LS03NDkKICAgICAgICAgICAgICAgICAgRy4gVy4gU3Rld2FydCAgIEVycmF0YTogQUNNIEFsZ29yaXRobSAzODQ6IEVpZ2VudmFsdWVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgRWlnZW52ZWN0b3JzIG9mIGEgUmVhbCBTeW1tZXRyaWMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdHJpeCBbRjJdICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNzUwLS03NTAKICAgICAgICAgICAgICAgIEUuIEEuIEZ1Y2hzIGFuZCAgIAogICAgICAgICAgICAgICAgICBQLiBFLiBKYWNrc29uICAgRXN0aW1hdGVzIG9mIERpc3RyaWJ1dGlvbnMgb2YgUmFuZG9tCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZXMgZm9yIENlcnRhaW4gQ29tcHV0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW11bmljYXRpb25zIFRyYWZmaWMgTW9kZWxzICAuIC4gLiAuIC4gNzUyLS03NTcKICAgICAgICAgICAgICAgICAgIEMuIEMuIFBpbnRlciAgIE9uIGRlY29tcG9zaW5nIGEgQm9vbGVhbiBmdW5jdGlvbiBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbXBsaWZ5aW5nIHRoZSBjb21wb25lbnRzIHNlcGFyYXRlbHkgICAgNzU4LS03NTgKICAgICAgICAgICAgICAgICBXLiBKLiBSYWR1Y2hlbCAgIEVmZmljaWVudCBoYW5kbGluZyBvZiBiaW5hcnkgZGF0YSAgLiAuIC4gNzU4LS03NTkKICAgICAgICAgICAgICAgUm9iZXJ0IEEuIFdhZ25lciAgIEZpbml0ZW5lc3MgQXNzdW1wdGlvbnMgYW5kIEludGVsbGVjdHVhbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXNvbGF0aW9uIG9mIENvbXB1dGVyIFNjaWVudGlzdHMgLiAuIC4gLiA3NTktLTc2MAoKQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTQpWb2x1bWUgMTIsICBOdW1iZXIgMSwgSmFudWFyeSwgMTk3MQoKICAgICAgICAgICAgICAgICAgIEUuIExvd3J5IGFuZCAgIAogICAgICAgICAgICAgICAgICBDLiBXLiBNZWRsb2NrICAgT2JqZWN0IENvZGUgT3B0aW1pemF0aW9uIC4gLiAuIC4gLiAuIC4gLiAxMy0tMjIKICAgICAgICAgICAgICAgICAgICBDYXJsIEhhbW1lciAgIFNpZ25hdHVyZSBTaW11bGF0aW9uIGFuZCBDZXJ0YWluCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcnlwdG9ncmFwaGljIENvZGVzICAuIC4gLiAuIC4gLiAuIC4gLiAuIDMtLTE0CiAgICAgICAgICAgICAgICAgICAgIEEuIEtsaW5nZXIgICBQYXR0ZXJuIHdpZHRoIGF0IGEgZ2l2ZW4gYW5nbGUgLiAuIC4gLiAuIDE1LS0yMAogICAgICAgICAgICAgICAgICBTaGktS3VvIENoYW5nICAgVGhlIFJlY29uc3RydWN0aW9uIG9mIEJpbmFyeSBQYXR0ZXJucwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSBUaGVpciBQcm9qZWN0aW9ucyAuIC4gLiAuIC4gLiAuIC4gLiAyMS0tMjUKICAgICAgICAgICAgICAgICBHLiBCcmFjY2hpIGFuZCAgIAogICAgICAgICAgICAgICAgICAgICBELiBGZXJyYXJpICAgTGFuZ3VhZ2UgZm9yIFRyZWF0aW5nIEdlb21ldHJpYyBQYXR0ZXJucwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYSBUd28tRGltZW5zaW9uYWwgU3BhY2UgLiAuIC4gLiAuIC4gLiAyNi0tMzIKICAgICAgICAgICAgICAgICAgUi4gQS4gQnJvdWNrZSAgIENvbnN0cnVjdGlvbiBvZiByYXRpb25hbCBhbmQgbmVnYXRpdmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvd2VycyBvZiBhIGZvcm1hbCBzZXJpZXMgIC4gLiAuIC4gLiAuIC4gMzItLTM1CiAgICAgICAgICAgICAgICAgICAgIFIuIEMuIEhvbHQgICBDb21tZW50cyBvbiBQcmV2ZW50aW9uIG9mIFN5c3RlbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVhZGxvY2tzICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAzNi0tMzgKICAgICAgICAgICAgICAgICBDLiBBLiBSLiBIb2FyZSAgIFByb29mIG9mIGEgUHJvZ3JhbTogRklORCAuIC4gLiAuIC4gLiAuIC4gMzktLTQ1CiAgICAgICAgICAgICAgICAgICAgTC4gRy4gUHJvbGwgICBGdXJ0aGVyIGV2aWRlbmNlIGZvciB0aGUgYW5hbHlzaXMgb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsZ29yaXRobXMgZm9yIHRoZSB6ZXJvLW9uZSBwcm9ncmFtbWluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvYmxlbSAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA0Ni0tNDcKICAgICAgICAgICAgICBNLiBXLiBDb2xlbWFuIGFuZCAgIAogICAgICAgICAgICAgICAgICAgTS4gUy4gVGF5bG9yICAgQUNNIEFsZ29yaXRobSA0MDM6IENpcmN1bGFyIEludGVnZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcnRpdGlvbmluZyAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNDgtLTQ4CiAgICAgICAgICAgQy4gVy4gTHVjYXMsIEpyLiBhbmQgICAKICAgICAgICAgICAgICAgICAgQy4gVy4gVGVycmlsbCAgIEFDTSBBbGdvcml0aG0gNDA0OiBDb21wbGV4IEdhbW1hCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdW5jdGlvbiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDQ4LS00OSAob3IgNDgtLTQ4Pz8pCiAgICAgICAgICAgICAgICAgICBLLiBBLiBSZWRpc2ggICBDb21tZW50IG9uIExvbmRvbidzIENlcnRpZmljYXRpb24gb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsZ29yaXRobSAyNDUgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNTAtLTUxCiAgICAgICAgICAgICAgICAgIFMuIEwuIFBvbGxhY2sgICBDb21tZW50IG9uIHRoZSBjb252ZXJzaW9uIG9mIGRlY2lzaW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZXMgdG8gY29tcHV0ZXIgcHJvZ3JhbXMgIC4gLiAuIC4gLiAuIDUyLS01MgoKQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTQpWb2x1bWUgMTQsICBOdW1iZXIgMiwgRmVicnVhcnksIDE5NzEKCiAgICAgICAgICAgICAgICAgICBLLiBTY2h3YXlkZXIgICBDb252ZXJzaW9uIG9mIExpbWl0ZWQtRW50cnkgRGVjaXNpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxlcyB0byBDb21wdXRlciBQcm9ncmFtcy4gYSBQcm9wb3NlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTW9kaWZpY2F0aW9uIHRvIFBvbGxhY2sncyBBbGdvcml0aG0gIC4gLiA2OS0tNzMKICAgICAgICAgICAgICAgICAgICBLLiBTaHdheWRlciAgIENvbnZlcnNpb24gb2YgbGltaXRlZC1lbnRyeSBkZWNpc2lvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVzIHRvIGNvbXB1dGVyIHByb2dyYW1zLWEgcHJvcG9zZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWNhdGlvbiB0byBQb2xsYWNrJ3MgYWxnb3JpdGhtICAuIC4gNjktLTczCiAgICAgICAgICAgIEEuIEouIEJlcm5zdGVpbiBhbmQgICAKICAgICAgICAgICAgICAgICAgICBKLiBDLiBTaGFycCAgIEEgcG9saWN5LWRyaXZlbiBzY2hlZHVsZXIgZm9yIGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUtc2hhcmluZyBzeXN0ZW0gIC4gLiAuIC4gLiAuIC4gLiAuIC4gNzQtLTc4CiAgICAgICAgICAgICAgICAgIE4uIFIuIE5pZWxzZW4gICBBbiBhbmFseXNpcyBvZiBzb21lIHRpbWUtc2hhcmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVjaG5pcXVlcyAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA3OS0tOTAKICAgICAgICAgICAgICAgSi4gUi4gU2xhZ2xlIGFuZCAgIAogICAgICAgICAgICAgICAgICBDLiBELiBGYXJyZWxsICAgRXhwZXJpbWVudHMgaW4gQXV0b21hdGljIExlYXJuaW5nIGZvciBhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNdWx0aXB1cnBvc2UgSGV1cmlzdGljIFByb2dyYW0gLiAuIC4gLiAuIDkxLS05OSAob3IgOTEtLTk4Pz8pCiAgICAgICAgICAgICAgICBILiBIdXJ3aXR6LCBKci4gICBPbiB0aGUgUHJvYmFiaWxpdHkgRGlzdHJpYnV0aW9uIG9mIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzIG9mIEJpbmFyeSBUcmVlcyAuIC4gLiAuIC4gLiAuIC4gLiA5OS0tMTAyCiAgICAgICAgICAgICAgIEouIFIuIFNsYWdsZSBhbmQgICAKICAgICAgICAgICAgICAgICAgIFIuIEMuIFQuIExlZSAgIEFwcGxpY2F0aW9uIG9mIEdhbWUgVHJlZSBTZWFyY2hpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlY2huaXF1ZXMgdG8gU2VxdWVudGlhbCBQYXR0ZXJuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWNvZ25pdGlvbiAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDEwMy0tMTEwCiAgICAgICAgICAgICAgICAgICBKLiBSb2tuZSBhbmQgICAKICAgICAgICAgICAgICAgICAgIFAuIExhbmNhc3RlciAgIENvbXBsZXggSW50ZXJ2YWwgQXJpdGhtZXRpYyAgLiAuIC4gLiAuIC4gMTExLS0xMTIKICAgICAgICAgICAgICAgICBBLiBNLiBEZWxsIGFuZCAgIAogICAgICAgICAgICAgICAgIFIuIEwuIFdlaWwgYW5kICAgCiAgICAgICAgICAgICAgICAgRy4gTC4gVGhvbXBzb24gICBBQ00gQWxnb3JpdGhtIDQwNTogUm9vdHMgb2YgTWF0cml4CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQZW5jaWxzOiBUaGUgR2VuZXJhbGl6ZWQgRWlnZW52YWx1ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYmxlbSAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAxMTMtLTExNwoKQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTQpWb2x1bWUgMTQsICBOdW1iZXIgMywgTWFyY2gsIDE5NzEKCiAgICAgICAgICAgICAgICAgICAgIEEuIE0uIE5vbGwgICBTY2FubmVkLURpc3BsYXkgQ29tcHV0ZXIgR3JhcGhpY3MgIC4gLiAuIDE0My0tMTUwCiAgICAgICAgICAgICAgICAgICBaLiBNYW5uYSBhbmQgICAKICAgICAgICAgICAgICAgIFIuIEouIFdhbGRpbmdlciAgIFRvd2FyZCBBdXRvbWF0aWMgUHJvZ3JhbSBTeW50aGVzaXMgLiAuIC4gMTUxLS0xNjUKICAgICAgICAgICAgICAgICAgVy4gSy4gV2ludGVycyAgIFNjaGVkdWxpbmcgQWxnb3JpdGhtIGZvciBhIENvbXB1dGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBc3Npc3RlZCBSZWdpc3RyYXRpb24gU3lzdGVtIC4gLiAuIC4gLiAuIDE2Ni0tMTcxCiAgICAgICAgICAgICAgICAgSi4gRy4gV2lsbGlhbXMgICBTdG9yYWdlIFV0aWxpemF0aW9uIGluIGEgTWVtb3J5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIaWVyYXJjaHkgV2hlbiBTdG9yYWdlIEFzc2lnbm1lbnQgaXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBlcmZvcm1lZCBieSBhIEhhc2hpbmcgQWxnb3JpdGhtIC4gLiAuIC4gMTcyLS0xNzUKICAgICAgICAgICAgICAgICAgICAgQy4gVy4gR2VhciAgIFRoZSBBdXRvbWF0aWMgSW50ZWdyYXRpb24gb2YgT3JkaW5hcnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpZmZlcmVudGlhbCBFcXVhdGlvbnMgLiAuIC4gLiAuIC4gLiAuIC4gMTc2LS0xNzkKICAgICAgICAgICAgICAgICAgIEouIEEuIEhvd2VsbCAgIEFDTSBBbGdvcml0aG0gNDA2OiBFeGFjdCBTb2x1dGlvbiBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGluZWFyIEVxdWF0aW9ucyBVc2luZyBSZXNpZHVlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcml0aG1ldGljIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDE4MC0tMTg0CiAgICAgICAgICAgICAgICAgICAgIEMuIFcuIEdlYXIgICBBQ00gQWxnb3JpdGhtIDQwNzogRElGU1VCIGZvciBTb2x1dGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgT3JkaW5hcnkgRGlmZmVyZW50aWFsIEVxdWF0aW9ucyAuIC4gLiAxODUtLTE5MAoKQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTQpWb2x1bWUgMTQsICBOdW1iZXIgNCwgQXByaWwsIDE5NzEKCiAgICAgICAgICAgICAgICAgICAgICAgTi4gV2lydGggICBQcm9ncmFtIERldmVsb3BtZW50IGJ5IFN0ZXB3aXNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWZpbmVtZW50IC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDIyMS0tMjI3CiAgICAgICAgICAgICAgICAgIFYuIFkuIEx1bSBhbmQgICAKICAgICAgICAgICAgICBQLiBTLiBULiBZdWVuIGFuZCAgIAogICAgICAgICAgICAgICAgICAgICAgICBNLiBEb2RkICAgS2V5LXRvLUFkZHJlc3MgVHJhbnNmb3JtIFRlY2huaXF1ZXM6IEEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZ1bmRhbWVudGFsIFBlcmZvcm1hbmNlIFN0dWR5IG9uIExhcmdlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGlzdGluZyBGb3JtYXR0ZWQgRmlsZXMgLiAuIC4gLiAuIC4gLiAuIDIyOC0tMjM5CiAgICAgICAgICAgICAgIEEuIEIuIFR1Y2tlciBhbmQgICAKICAgICAgICAgICAgICAgICAgICBNLiBKLiBGbHlubiAgIER5bmFtaWMgTWljcm9wcm9ncmFtbWluZy4gUHJvY2Vzc29yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmdhbml6YXRpb24gYW5kIFByb2dyYW1taW5nIC4gLiAuIC4gLiAuIDI0MC0tMjUwCiAgICAgICAgICAgICAgIFAuIEEuIFRhbGJvdCBhbmQgICAKICAgICAgICAgICAgICAgICBKLiBXLiBDYXJyIGFuZCAgIAogICAgICAgICBSLiBSLiBDb3VsdGVyLCBKci4gYW5kICAgCiAgICAgICAgICAgICAgICAgICAgUi4gQy4gSHdhbmcgICBBbmltYXRvcjogYW4gb24tbGluZSB0d28tZGltZW5zaW9uYWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbG0gYW5pbWF0aW9uIHN5c3RlbSAgLiAuIC4gLiAuIC4gLiAuIC4gMjUxLS0yNTkKICAgICAgICAgICAgICAgIE0uIEwuIFN0ZWluIGFuZCAgIAogICAgICAgICAgICAgICAgICAgIFcuIEQuIE11bnJvICAgT24gQ29tcGxlbWVudCBEaXZpc2lvbiAuIC4gLiAuIC4gLiAuIC4gLiAyNjAtLTI2NAogICAgICAgICAgICAgICAgICBKLiBNLiBNY05hbWVlICAgQUNNIEFsZ29yaXRobSA0MDg6IEEgU3BhcnNlIE1hdHJpeAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZSAoUGFydCBJKSAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAyNjUtLTI3MwoKQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTQpWb2x1bWUgMTQsICBOdW1iZXIgNSwgTWF5LCAxOTcxCgogVC4gV2lsbGlhbSBPbGxlIChDaGFpcm1hbikgYW5kICAgCiAgICAgIENvZGFzeWwgU3lzdGVtcyBDb21taXR0ZWUgICBJbnRyb2R1Y3Rpb24gdG8gYEZlYXR1cmUgYW5hbHlzaXMgb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYWxpemVkIGRhdGEgYmFzZSBtYW5hZ2VtZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW1zJyAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDMwOC0tMzE4CiAgICAgICAgICAgICAgICAgIE4uIFIuIE5pZWxzZW4gICBUaGUgbWVyaXQgb2YgcmVnaW9uYWwgY29tcHV0aW5nIG5ldHdvcmtzIDMxOS0tMzI2CiAgICAgICAgICAgICAgICAgIFAuIEtyb2xhayBhbmQgICAKICAgICAgICAgICAgICAgICAgIFcuIEZlbHRzIGFuZCAgIAogICAgICAgICAgICAgICAgICAgICAgRy4gTWFyYmxlICAgQSBNYW4tTWFjaGluZSBBcHByb2FjaCBUb3dhcmQgU29sdmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIFRyYXZlbGluZyBTYWxlc21hbiBQcm9ibGVtIC4gLiAuIC4gLiAzMjctLTMzNAogICAgICAgICAgICAgICAgICBVZ28gTW9udGFuYXJpICAgT24gdGhlIG9wdGltYWwgZGV0ZWN0aW9uIG9mIGN1cnZlcyBpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9pc3kgcGljdHVyZXMgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAzMzUtLTM0NQogICAgICAgICAgICAgICAgIEQuIEwuIFJpY2hhcmRzICAgSG93IHRvIEtlZXAgdGhlIEFkZHJlc3NlcyBTaG9ydCAgLiAuIC4gLiAzNDYtLTM0OQogICAgICAgICAgICAgICAgIFIuIFIuIEZlbmljaGVsICAgT24gSW1wbGVtZW50YXRpb24gb2YgTGFiZWwgVmFyaWFibGVzIC4gLiAzNDktLTM1MAogICAgICAgICAgIEphbWVzIEguIE1vcnJpcywgSnIuICAgQW5vdGhlciBSZWN1cnNpb24gSW5kdWN0aW9uIFByaW5jaXBsZSAgICAzNTEtLTM1NAogICAgICAgICAgICAgICAgICAgICBILiBTY2htaXR0ICAgQUNNIEFsZ29yaXRobSA0MDk6IERpc2NyZXRlIENoZWJ5Y2hldgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3VydmUgRml0ICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAzNTUtLTM1NgogICAgICAgICAgICAgICAgIEouIE0uIENoYW1iZXJzICAgQUNNIEFsZ29yaXRobSA0MTA6IFBhcnRpYWwgU29ydGluZyBbTTFdICAzNTctLTM1OAoKQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTQpWb2x1bWUgMTQsICBOdW1iZXIgNiwgSnVuZSwgMTk3MQoKICAgICAgICAgICAgICAgICBLYXp1YWtpIEhhcmFkYSAgIEdlbmVyYXRpb24gb2Ygcm9zYXJ5IHBlcm11dGF0aW9ucwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2VkIGluIEhhbWlsdG9uaWFuIGNpcmN1aXRzICAuIC4gLiAzNzMtLTM3OQogICAgICAgICAgICAgICAgICAgIEouIEQuIEZvbGV5ICAgQW4gYXBwcm9hY2ggdG8gdGhlIG9wdGltdW0gZGVzaWduIG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wdXRlciBncmFwaGljcyBzeXN0ZW1zICAuIC4gLiAuIC4gLiAuIDM4MC0tMzkwCiAgICAgICAgICAgICAgICAgICAgICBTLiBBbWFyZWwgICBDb21wdXRlciBTY2llbmNlOiBBIENvbmNlcHR1YWwgRnJhbWV3b3JrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgQ3VycmljdWx1bSBQbGFubmluZyAgLiAuIC4gLiAuIC4gLiAuIDM5MS0tNDAxCiAgICAgICAgIFcuIEUuIEJvc2FyZ2UsIEpyLiBhbmQgICAKICAgICAgICAgICAgICAgICAgTy4gRy4gSm9obnNvbiAgIE51bWVyaWNhbCBwcm9wZXJ0aWVzIG9mIHRoZSBSaXR6LVRyZWZmdHoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsZ29yaXRobSBmb3Igb3B0aW1hbCBjb250cm9sICAuIC4gLiAuIC4gNDAyLS00MDYKICAgICAgICAgICAgICAgICBILiBUaW0gR2xhZHdpbiAgIEEgTm90ZSBvbiBDb21waWxpbmcgRml4ZWQgUG9pbnQgQmluYXJ5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNdWx0aXBsaWNhdGlvbnMgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDQwNy0tNDA4CiAgICAgICAgICAgICAgICAgICBBLiBHLiBGcmFzZXIgICBPbiB0aGUgTWVhbmluZyBvZiBOYW1lcyBpbiBQcm9ncmFtbWluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtcyAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA0MDktLTQxNgogICAgICAgICAgICAgICAgICAgUi4gSi4gV2Fsa2VyICAgQmluYXJ5IHN1bW1hdGlvbiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA0MTctLTQxNwogICAgICAgICAgICAgICAgICAgTS4gWmVsa293aXR6ICAgSW50ZXJydXB0IGRyaXZlbiBwcm9ncmFtbWluZyAuIC4gLiAuIC4gLiA0MTctLTQxOAoKQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTQpWb2x1bWUgMTQsICBOdW1iZXIgNywgSnVseSwgMTk3MQoKICAgICAgICAgICAgIEouIEwuIE1jS2VubmV5IGFuZCAgIAogICAgICAgICAgICAgICAgICAgIEYuIE0uIFRvbmdlICAgVGhlIFN0YXRlIG9mIENvbXB1dGVyLU9yaWVudGVkIEN1cnJpY3VsYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gQnVzaW5lc3MgU2Nob29scyAxOTcwIC4gLiAuIC4gLiAuIC4gLiA0NDMtLTQ0OAogICAgICAgICAgICAgICAgQS4gSi4gQmVybnN0ZWluICAgQSBwcm9ncmFtbWVyIHRyYWluaW5nIHByb2plY3QgIC4gLiAuIC4gLiA0NDktLTQ1MgogICAgICAgICAgICBGcmFua2xpbiBMLiBEZVJlbWVyICAgU2ltcGxlIExSKGspIGdyYW1tYXJzICAuIC4gLiAuIC4gLiAuIC4gLiA0NTMtLTQ2MAogICAgICAgICAgVGVycmVuY2UgVy4gUHJhdHQgYW5kICAgCiAgICAgICAgICAgICBEYW5pZWwgUC4gRnJpZWRtYW4gICBBIExhbmd1YWdlIEV4dGVuc2lvbiBmb3IgR3JhcGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2Nlc3NpbmcsIGFuZCBJdHMgRm9ybWFsIFNlbWFudGljcyAuIC4gNDYwLS00NjcgKG9yIDQ2MS0tNDY3Pz8pCiAgICAgICAgICAgICAgICAgICAgS2VpdGggUGF0b24gICBBbiBhbGdvcml0aG0gZm9yIHRoZSBibG9ja3MgYW5kIGN1dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXMgb2YgYSBncmFwaCAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA0NjgtLTQ3NQogICAgICAgICAgICAgICAgIEQuIEUuIEZlcmd1c29uICAgQnVmZmVyIEFsbG9jYXRpb24gaW4gTWVyZ2UtU29ydGluZyAuIC4gLiA0NzYtLTQ3OAogICAgICAgICAgQy4gVi4gUmFtYW1vb3J0aHkgYW5kICAgCiAgICAgICAgICAgICAgICAgTS4gSi4gR29uemFsZXogICBTdWJleHByZXNzaW9uIG9yZGVyaW5nIGluIHRoZSBleGVjdXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIGFyaXRobWV0aWMgZXhwcmVzc2lvbnMgIC4gLiAuIC4gLiAuIC4gNDc5LS00ODUKICAgICAgICAgICAgICBELiBHLiBNY1ZpdGllIGFuZCAgIAogICAgICAgICAgICAgICAgICAgTC4gQi4gV2lsc29uICAgVGhlIFN0YWJsZSBNYXJyaWFnZSBQcm9ibGVtICAuIC4gLiAuIC4gLiA0ODYtLTQ5MAogICAgICAgICAgICAgIEQuIEcuIE1jVml0aWUgYW5kICAgCiAgICAgICAgICAgICAgICAgICBMLiBCLiBXaWxzb24gICBBQ00gQWxnb3JpdGhtIDQxMTogVGhyZWUgUHJvY2VkdXJlcyBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBTdGFibGUgTWFycmlhZ2UgUHJvYmxlbSAgLiAuIC4gLiAuIC4gNDkxLS00OTIKICAgICAgICAgICAgICAgICAgICBKLiBcdkNlcm1hayAgIEFDTSBBbGdvcml0aG0gNDEyOiBHcmFwaCBQbG90dGVyIC4gLiAuIC4gNDkyLS00OTMKCkNvbW11bmljYXRpb25zIG9mIHRoZSBBQ00KVm9sdW1lIDE0LCAgTnVtYmVyIDgsIEF1Z3VzdCwgMTk3MQoKICAgICAgICAgICAgICAgICAgICAgIEFub255bW91cyAgIFBhcGVycyBmcm9tIHRoZSAybmQgc3ltcG9zaXVtIG9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1ib2xpYyBhbmQgYWxnZWJyYWljIG1hbmlwdWxhdGlvbiAgLiAuICAgPz8KICAgICAgICAgICAgICAgQW50aG9ueSBDLiBIZWFybiAgIEFwcGxpY2F0aW9ucyBvZiBTeW1ib2xpYyBNYW5pcHVsYXRpb24gaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZW9yZXRpY2FsIFBoeXNpY3MgIC4gLiAuIC4gLiAuIC4gLiAuIC4gNTExLS01MTYKICAgICAgICAgICAgICAgIEEuIEQuIEhhbGwsIEpyLiAgIFRoZSBBbHRyYW4gc3lzdGVtIGZvciByYXRpb25hbCBmdW5jdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFuaXB1bGF0aW9uIC0tLSBhIHN1cnZleSAgLiAuIC4gLiAuIC4gLiA1MTctLTUyMQogICAgICAgICAgICAgUm9iZXJ0IFIuIEZlbmljaGVsICAgTGlzdCBUcmFjaW5nIGluIFN5c3RlbXMgQWxsb3dpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE11bHRpcGxlIENlbGwgVHlwZXMgIC4gLiAuIC4gLiAuIC4gLiAuIC4gNTIyLS01MjYKICAgICAgICAgICAgICAgICAgICAgICBKLiBNb3NlcyAgIEFsZ2VicmFpYyBTaW1wbGlmaWNhdGlvbjogQSBHdWlkZSBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBQZXJwbGV4ZWQgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNTI3LS01MzcKICAgICAgICAgICAgICAgICBXLiBILiBKZWZmZXJ5cyAgIEF1dG9tYXRpYyBhbGdlYnJhaWMgbWFuaXB1bGF0aW9uIGluCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxlc3RpYWwgbWVjaGFuaWNzICAuIC4gLiAuIC4gLiAuIC4gLiAuIDUzOC0tNTQxCiAgICAgICAgICAgICAgICAgIEQuIEJhcnRvbiBhbmQgICAKICAgICAgICAgICAgICAgICAgICBKLiBQLiBGaXRjaCAgIEdlbmVyYWwgcmVsYXRpdml0eSBhbmQgdGhlIGFwcGxpY2F0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBhbGdlYnJhaWMgbWFuaXB1bGF0aXZlIHN5c3RlbXMgIC4gLiAuIDU0Mi0tNTQ3CiAgICAgICAgICAgICAgICAgICAgIEpvZWwgTW9zZXMgICBTeW1ib2xpYyBJbnRlZ3JhdGlvbjogVGhlIFN0b3JteSBEZWNhZGUgIDU0OC0tNTYwCgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSAxNCwgIE51bWJlciA5LCBTZXB0ZW1iZXIsIDE5NzEKCiAgICAgICAgICAgICAgIERhbmllbCBUZWljaHJvZXcgICBFZHVjYXRpb24gUmVsYXRlZCB0byB0aGUgVXNlIG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21wdXRlcnMgaW4gT3JnYW5pemF0aW9ucyAuIC4gLiAuIC4gLiAuIDU3My0tNTg4CiAgICAgICAgICAgICBTYWRhaGlybyBJc29kYSBhbmQgICAKICAgICAgICAgICAgICAgIEVpaWNoaSBHb3RvIGFuZCAgIAogICAgICAgICAgICAgICAgICAgSXp1bWkgS2ltdXJhICAgQW4gRWZmaWNpZW50IEJpdCBUYWJsZSBUZWNobmlxdWUgZm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljIFN0b3JhZ2UgQWxsb2NhdGlvbiBvZiAkMl5uJC13b3JkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCbG9ja3MgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDU4OS0tNTkyCiAgICAgICAgICAgICAgICAgICAgS2VpdGggUGF0b24gICBDb3JyaWdlbmR1bTogYGBBbiBhbGdvcml0aG0gZm9yIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tzIGFuZCBjdXRub2RlcyBvZiBhIGdyYXBoJycgLiAuIC4gLiA1OTItLTU5MgogICAgICAgICAgICAgICAgRXVnZW5lIFdvbmcgYW5kICAgCiAgICAgICAgICAgICAgICAgICBULiBDLiBDaGlhbmcgICBDYW5vbmljYWwgU3RydWN0dXJlIGluIEF0dHJpYnV0ZSBCYXNlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZSBPcmdhbml6YXRpb24gIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA1OTMtLTU5NwogICAgICAgICAgICAgIERhdmlkIEwuIFBoaWxsaXBzICAgQSBub3RlIG9uIGJlc3Qgb25lLXNpZGVkIGFwcHJveGltYXRpb25zICA1OTgtLTYwMAogICAgICAgICAgICAgICAgICAgICBXLiBMaW5pZ2VyICAgQSBzdG9wcGluZyBjcml0ZXJpb24gZm9yIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV3dG9uLVJhcGhzb24gbWV0aG9kIGluIGltcGxpY2l0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXN0ZXAgaW50ZWdyYXRpb24gYWxnb3JpdGhtcyBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbmxpbmVhciBzeXN0ZW1zIG9mIG9yZGluYXJ5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWZmZXJlbnRpYWwgZXF1YXRpb25zIC4gLiAuIC4gLiAuIC4gLiAuIDYwMC0tNjAxCiAgICAgICAgICAgICAgICBJdmFuIEZsb3JlcyBhbmQgICAKICAgICAgICAgICAgICAgICAgR2VvcmdlIE1hZHBpcyAgIEF2ZXJhZ2UgQmluYXJ5IFNlYXJjaCBMZW5ndGggZm9yIERlbnNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlcmVkIExpc3RzICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDYwMi0tNjAzCiAgICAgICAgICAgICAgICAgUi4gUi4gRmVuaWNoZWwgICBDb21tZW50IG9uIENoZW5leSdzIExpc3QtQ29tcGFjdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxnb3JpdGhtICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA2MDMtLTYwNAoKQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTQpWb2x1bWUgMTQsICBOdW1iZXIgMTAsIE9jdG9iZXIsIDE5NzEKCiAgICAgICAgICAgICAgICAgICAgIEpheSBFYXJsZXkgICBUb3dhcmQgYW4gVW5kZXJzdGFuZGluZyBvZiBEYXRhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVzIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDYxNy0tNjI3CiAgICAgICAgIEFOU0kgU3ViY29tbWl0dGVlIFgzSjMgICBDbGFyaWZpY2F0aW9uIG9mIEZvcnRyYW4gU3RhbmRhcmRzIC0tLQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kIFJlcG9ydCAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA2MjgtLTY0MgogICAgICAgICAgICBBLiBFLiBPbGRlaG9lZnQgYW5kICAgCiAgICAgICAgICAgICAgICAgICAgUy4gRC4gQ29udGUgICBFeHBlcmltZW50cyB3aXRoIGFuIGF1dG9tYXRlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25hbCBzeXN0ZW0gZm9yIG51bWVyaWNhbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kcyAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA2NDMtLTY1MAogICAgICAgICAgICAgICAgICAgVy4gTS4gTmV3bWFuICAgRGlzcGxheSBwcm9jZWR1cmVzIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA2NTEtLTY2MAogICAgICAgICAgICAgICBBLiBHLiBOZW1ldGggYW5kICAgCiAgICAgICAgICAgICAgICAgICBQLiBELiBSb3ZuZXIgICBVc2VyIHByb2dyYW0gbWVhc3VyZW1lbnQgaW4gYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZS1zaGFyZWQgZW52aXJvbm1lbnQgIC4gLiAuIC4gLiAuIC4gLiA2NjEtLTY2NgogICAgICAgICAgICAgUC4gSi4gQ291cnRvaXMgYW5kICAgCiAgICAgICAgICAgICAgICAgRi4gSGV5bWFucyBhbmQgICAKICAgICAgICAgICAgICAgICAgIEQuIEwuIFBhcm5hcyAgIENvbmN1cnJlbnQgQ29udHJvbCB3aXRoIGBSZWFkZXJzJyBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBXcml0ZXJzJyAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNjY3LS02NjgKICAgICAgICAgICAgICAgSi4gTi4gTHluZXNzIGFuZCAgIAogICAgICAgICAgICAgICAgICAgICAgIEcuIFNhbmRlICAgQUNNIEFsZ29yaXRobSA0MTM6IEVOVENBRiBhbmQgRU5UQ1JFOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXZhbHVhdGlvbiBvZiBOb3JtYWxpemVkIFRheWxvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29lZmZpY2llbnRzIG9mIGFuIEFuYWx5dGljIEZ1bmN0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQzUpIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDY2OS0tNjc1CgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSAxNCwgIE51bWJlciAxMSwgTm92ZW1iZXIsIDE5NzEKCiAgICAgICAgICAgICAgIFAuIEJyYW5xdWFydCBhbmQgICAKICAgICAgICAgICAgICAgICAgICBKLiBMZXdpIGFuZCAgIAogICAgICAgICAgICAgICAgTS4gU2ludHpvZmYgYW5kICAgCiAgICAgICAgICAgICAgICAgICAgUC4gTC4gV29kb24gICBUaGUgY29tcG9zaXRpb24gb2Ygc2VtYW50aWNzIGluIEFsZ29sIDY4IDY5Ny0tNzA4CiAgICAgICAgICAgICAgICAgIEouIFcuIEhhbWJsZW4gICBVc2luZyBjb21wdXRlcnMgaW4gaGlnaGVyIGVkdWNhdGlvbjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3QgcmVjb21tZW5kYXRpb25zLCBzdGF0dXMsIGFuZCBuZWVkcyAgNzA5LS03MTIKICAgICAgICAgICAgICAgICAgICBELiBMLiBTaGVsbCAgIE9wdGltaXppbmcgdGhlIFBvbHlwaGFzZSBTb3J0ICAuIC4gLiAuIC4gNzEzLS03MTkKICAgICAgICAgICAgICAgICBJLiBBcmFtYWtpIGFuZCAgIAogICAgICAgICAgICAgICAgVC4gS2F3YWJhdGEgYW5kICAgCiAgICAgICAgICAgICAgICAgICAgIEsuIEFyaW1vdG8gICBBdXRvbWF0aW9uIG9mIGV0Y2hpbmctcGF0dGVybiBsYXlvdXQgLiAuIDcyMC0tNzMwCiAgICAgICAgICAgICBNaWNoYWVsIEEuIE1hbGNvbG0gICBPbiBBY2N1cmF0ZSBGbG9hdGluZy1Qb2ludCBTdW1tYXRpb24gLiAuIDczMS0tNzM2CiAgICAgICAgICAgICAgICBHLiBILiBHb2x1YiBhbmQgICAKICAgICAgICAgICAgICAgICAgICBMLiBCLiBTbWl0aCAgIEFDTSBBbGdvcml0aG0gNDE0OiBDaGVieXNoZXYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFwcHJveGltYXRpb24gb2YgQ29udGludW91cyBGdW5jdGlvbnMgYnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgQ2hlYnlzaGV2IFN5c3RlbSBvZiBGdW5jdGlvbnMgIC4gLiAuIC4gNzM3LS03NDYKCkNvbW11bmljYXRpb25zIG9mIHRoZSBBQ00KVm9sdW1lIDE0LCAgTnVtYmVyIDEyLCBEZWNlbWJlciwgMTk3MQoKICAgICAgICAgICAgICAgICAgUi4gR29yZG9uIGFuZCAgIAogICAgICAgICAgICAgICAgICAgRy4gVC4gSGVybWFuICAgUmVjb25zdHJ1Y3Rpb24gb2YgUGljdHVyZXMgZnJvbSBUaGVpcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvamVjdGlvbnMgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA3NTktLTc2OAogICAgICAgICAgICAgICBFLiBMLiBBbWlkb24gYW5kICAgCiAgICAgICAgICAgICAgICAgICAgIEcuIFMuIEFraW4gICBBbGdvcml0aG1pYyBTZWxlY3Rpb24gb2YgdGhlIEJlc3QgTWV0aG9kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgQ29tcHJlc3NpbmcgTWFwIERhdGEgU3RyaW5ncyAuIC4gLiAuIDc2OS0tNzc0CiAgICAgICAgICAgICAgICBKYW1lcyBLLiBNdWxsaW4gICBSZXRyaWV2YWwtVXBkYXRlIFNwZWVkIFRyYWRlLW9mZnMgVXNpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbWJpbmVkIEluZGV4ZXMgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNzc1LS03NzYKICAgICAgICAgICAgICAgICBNLiBDLiBIYXJyaXNvbiAgIEltcGxlbWVudGF0aW9uIG9mIHRoZSBTdWJzdHJpbmcgVGVzdCBieQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFzaGluZyAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA3NzctLTc3OQogICAgICAgICAgICAgICAgIFcuIEEuIFd1bGYgYW5kICAgCiAgICAgICAgICAgICAgRC4gQi4gUnVzc2VsbCBhbmQgICAKICAgICAgICAgICAgICAgIEEuIE4uIEhhYmVybWFubiAgIEJMSVNTOiBBIGxhbmd1YWdlIGZvciBzeXN0ZW1zCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtbWluZyAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDc4MC0tNzkwCiAgICAgICAgICAgICAgICAgICAgQS4gUm9jaGZlbGQgICBOZXcgTElTUCBUZWNobmlxdWVzIGZvciBhIFBhZ2luZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW52aXJvbm1lbnQgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA3OTEtLTc5NQogICAgICAgICAgICAgSi4gVy4gQmx1bWJlcmcgYW5kICAgCiAgICAgICAgICAgICAgICAgICAgQy4gUi4gRm91bGsgICBBIG5vdGUgb24gYGEgbW9kaWZpY2F0aW9uIG9mIE5vcmRzaWVjaydzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2QgdXNpbmcgYW4gYGBvZmYtc3RlcCcnIHBvaW50JyAgLiAuIDc5Ni0tNzk2CiAgICAgICAgU3Zlbi1cQUFrZSBBLiBHdXN0YWZzb24gICBSYXBpZCBDb21wdXRhdGlvbiBvZiBHZW5lcmFsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlcnBvbGF0aW9uIEZvcm11bGFzIGFuZCBNZWNoYW5pY2FsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWFkcmF0dXJlIFJ1bGVzIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDc5Ny0tODAxCiAgICAgICBGcmFuXGNjb2lzIEJvdXJnZW9pcyBhbmQgICAKICAgICAgICAgICBKZWFuLUNsYXVkZSBMYXNzYWxsZSAgIEFuIGV4dGVuc2lvbiBvZiB0aGUgTXVua3JlcyBhbGdvcml0aG0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgYXNzaWdubWVudCBwcm9ibGVtIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0YW5ndWxhciBtYXRyaWNlcyAuIC4gLiAuIC4gLiAuIC4gLiAuIDgwMi0tODA0CiAgICAgICAgICAgICAgIEYuIEJvdXJnZW9pcyBhbmQgICAKICAgICAgICAgICAgICAgICBKLiBDLiBMYXNzYWxsZSAgIEFDTSBBbGdvcml0aG0gNDE1OiBBbGdvcml0aG0gZm9yIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXNzaWdubWVudCBQcm9ibGVtIChSZWN0YW5ndWxhcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0cmljZXMpICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA4MDUtLTgwNgogICAgICAgICAgIFN2ZW4tXEFBa2UgR3VzdGFmc29uICAgQUNNIEFsZ29yaXRobSA0MTY6IFJhcGlkIENvbXB1dGF0aW9uIG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2VmZmljaWVudHMgb2YgSW50ZXJwb2xhdGlvbiBGb3JtdWxhcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0UxXSAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA4MDYtLTgwNwogICAgICAgICAgIFN2ZW4tXEFBa2UgR3VzdGFmc29uICAgQUNNIEFsZ29yaXRobSA0MTc6IFJhcGlkIENvbXB1dGF0aW9uIG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWlnaHRzIG9mIEludGVycG9sYXRvcnkgUXVhZHJhdHVyZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVsZXMgW0QxXSAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA4MDctLTgwNwoKQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTQpWb2x1bWUgMTgsICBOdW1iZXIgMSwgSmFudWFyeSwgMTk3MQoKICAgICAgICAgICAgICAgICAgQS4gVi4gQWhvIGFuZCAgIAogICAgICAgICAgICAgIFAuIEouIERlbm5pbmcgYW5kICAgCiAgICAgICAgICAgICAgICAgICBKLiBELiBVbGxtYW4gICBQcmluY2lwbGVzIG9mIG9wdGltYWwgcGFnZSByZXBsYWNlbWVudCAgIDgwLS05MwoKQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTQpWb2x1bWUgNSwgIE51bWJlciA2LCBKdW5lLCAxOTcyCgogICAgICAgICAgICAgIFMuIEMuIEpvaG5zb24gYW5kICAgCiAgICAgICAgICAgICAgICBCLiBXLiBLZXJuaWdoYW4gICBSZW1hcmsgb24gYGBDQUNNIEFsZ29yaXRobSAzOTcnJyAuIC4gLiAuICA0NjkKCkNvbW11bmljYXRpb25zIG9mIHRoZSBBQ00KVm9sdW1lIDgsICBOdW1iZXIgOSwgU2VwdGVtYmVyLCAxOTcyCgogICAgICAgICAgICAgIFIuIEguIEJhcnRlbHMgYW5kICAgCiAgICAgICAgICAgICAgICAgIEcuIFcuIFN0ZXdhcnQgICBBbGdvcml0aG0gNDMyOiBUaGUgU29sdXRpb24gb2YgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRyaXggRXF1YXRpb24gJEFYIC0rQlggPSBDJCAgLiAuIC4gLiAuIDgyMC0tODI2CgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSAxNSwgIE51bWJlciAxLCBKYW51YXJ5LCAxOTcyCgogICAgICAgICAgICAgICAgICAgICBBLiBNLiBMZXNrICAgUGljdG9yaWFsIHBhdHRlcm4gcmVjb2duaXRpb24gYW5kIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGhhc2UgcHJvYmxlbSBvZiBYLXJheSBjcnlzdGFsbG9ncmFwaHkgICAzLS02CiAgICAgICAgICAgICAgICAgICAgUy4gTGV2aWFsZGkgICBPbiBTaHJpbmtpbmcgQmluYXJ5IFBpY3R1cmUgUGF0dGVybnMgLiAuIDctLTEwCiAgICAgICAgICAgICAgICAgUi4gTy4gRHVkYSBhbmQgICAKICAgICAgICAgICAgICAgICAgICAgUC4gRS4gSGFydCAgIFVzZSBvZiB0aGUgSG91Z2ggdHJhbnNmb3JtYXRpb24gdG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGVjdCBsaW5lcyBhbmQgY3VydmVzIGluIHBpY3R1cmVzICAuIC4gMTEtLTE1CiAgICAgICAgICAgICAgICBFLiBULiBJcm9ucyBhbmQgICAKICAgICAgICAgICAgICAgICAgIEYuIE0uIERqb3J1cCAgIEEgQ1JUIGVkaXRpbmcgc3lzdGVtIC4gLiAuIC4gLiAuIC4gLiAuIC4gMTYtLTIwCiAgICAgICAgICAgICAgICAgICAgVC4gQS4gRHd5ZXIgICBUZWFjaGVyL3N0dWRlbnQgYXV0aG9yZWQgQ0FJIHVzaW5nIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVXQkFTSUMgc3lzdGVtICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAyMS0tMjgKICAgICAgICAgICAgICAgIERvbmFsZCBMLiBTaGVsbCAgIENvcnJpZ2VuZHVtOiBgYE9wdGltaXppbmcgdGhlIFBvbHlwaGFzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29ydCcnIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAyOC0tMjgKICAgICAgICAgICAgICBHLiBJLiBNY0NhbGxhIGFuZCAgIAogICAgICAgICAgICAgICAgICBKLiBSLiBTYW1wc29uICAgTVVTRTogQSBNb2RlbCB0byBVbmRlcnN0YW5kIFNpbXBsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5nbGlzaCAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAyOS0tNDAKICAgICAgICAgICAgICAgICAgUi4gSS4gU2hyYWdlciAgIFF1YWRyYXRpYyBwcm9ncmFtbWluZyBmb3Igbm9ubGluZWFyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdyZXNzaW9uIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDQxLS00NQogICAgICAgICAgICAgICAgICAgSC4gRS4gU2FsemVyICAgT3JkZXJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICtvci1mKCtvci1mKCtvci1mKFxsZG90cytvci1mKHgpXGxkb3RzKSkpIHdoZW4gZih4KSBpcyBwb3NpdGl2ZSBtb25vdG9uaWMgIDQ1LS00NgogICAgICAgICAgICAgICAgICAgQi4gRWluYXJzc29uICAgQUNNIEFsZ29yaXRobSA0MTg6IENhbGN1bGF0aW9uIG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3VyaWVyIEludGVncmFscyAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDQ3LS00OAoKQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTQpWb2x1bWUgMTUsICBOdW1iZXIgMiwgRmVicnVhcnksIDE5NzIKCiAgICAgICAgICAgICAgICAgICAgRGF2aWQgUGFnZXIgICBBIFByb3Bvc2FsIGZvciBhIENvbXB1dGVyLUJhc2VkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlcmFjdGl2ZSBTY2llbnRpZmljIENvbW11bml0eSAuIC4gLiAuIDcxLS03NQogICAgICAgICAgICAgICAgICBDLiBNLiBFYXN0bWFuICAgUHJlbGltaW5hcnkgcmVwb3J0IG9uIGEgc3lzdGVtIGZvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhbCBzcGFjZSBwbGFubmluZyAuIC4gLiAuIC4gLiAuIC4gLiA3Ni0tODcKICAgICAgICAgICAgICAgVy4gQS4gTWFydGluIGFuZCAgIAogICAgICAgICAgICAgICAgICAgICBELiBOLiBOZXNzICAgT3B0aW1pemluZyBCaW5hcnkgVHJlZXMgR3Jvd24gd2l0aCBhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdG9yaW5nIEFsZ29yaXRobSAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDg4LS05MwogICAgICAgICAgICBBLiBFLiBPbGRlaG9lZnQgYW5kICAgCiAgICAgICAgICAgICAgICAgTS4gSC4gSGFsc3RlYWQgICBNYXhpbXVtIGNvbXB1dGluZyBwb3dlciBhbmQgY29zdCBmYWN0b3JzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgY2VudHJhbGl6YXRpb24gcHJvYmxlbSAgLiAuIC4gLiAuIDk0LS05NgogICAgICAgICAgICAgIE0uIEEuIEplbmtpbnMgYW5kICAgCiAgICAgICAgICAgICAgICAgICAgSi4gRi4gVHJhdWIgICBBQ00gQWxnb3JpdGhtIDQxOTogWmVyb3Mgb2YgYSBDb21wbGV4CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb2x5bm9taWFsIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDk3LS05OQogICAgICAgICAgICAgICAgICBILiBXaWxsaWFtc29uICAgQUNNIEFsZ29yaXRobSA0MjA6IEhpZGRlbi1MaW5lIFBsb3R0aW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9ncmFtICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDEwMC0tMTAzCiAgICAgICAgICAgICAgICAgICBKLiBBLiBNb29yZXIgICBNdXNpYyBhbmQgY29tcHV0ZXIgY29tcG9zaXRpb24gLiAuIC4gLiAuIDEwNC0tMTEzCiAgICAgICAgICAgICAgICBJdmFuIEZsb3JlcyBhbmQgICAKICAgICAgICAgICAgICAgICAgR2VvcmdlIE1hZHBpcyAgIENvcnJpZ2VuZHVtOiBgYEF2ZXJhZ2UgQmluYXJ5IFNlYXJjaAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVuZ3RoIGZvciBEZW5zZSBPcmRlcmVkIExpc3RzJycgLiAuIC4gLiAxMTMtLTExMwogICAgICAgICAgICAgUmljaGFyZCBHb3Jkb24gYW5kICAgCiAgICAgICAgICAgICAgICBHYWJvciBULiBIZXJtYW4gICBDb3JyaWdlbmR1bTogYGBSZWNvbnN0cnVjdGlvbiBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGljdHVyZXMgZnJvbSBUaGVpciBQcm9qZWN0aW9ucycnICAuIC4gLiAxMTMtLTExMwoKQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTQpWb2x1bWUgMTUsICBOdW1iZXIgMywgTWFyY2gsIDE5NzIKCiAgICAgICAgICAgICAgICAgICAgICBBbm9ueW1vdXMgICBQYXBlcnMgZnJvbSB0aGUgM3JkIEFDTSBzeW1wb3NpdW0gb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGluZyBzeXN0ZW1zIHByaW5jaXBsZXMgLiAuIC4gLiAuIC4gICA/PwogICAgICAgICAgICAgICBELiBHLiBCb2Jyb3cgYW5kICAgCiAgICAgICAgICAgIEouIEQuIEJ1cmNoZmllbCBhbmQgICAKICAgICAgICAgICAgICAgRC4gTC4gTXVycGh5IGFuZCAgIAogICAgICAgICAgICAgICAgUi4gUy4gVG9tbGluc29uICAgVEVORVgsIEEgUGFnZWQgVGltZS1TaGFyaW5nIFN5c3RlbSBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBQRFAtMTAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMTM1LS0xNDMKICAgICAgICAgICAgICAgICAgIEIuIEguIExpc2tvdiAgIFRoZSBEZXNpZ24gb2YgdGhlIFZlbnVzIE9wZXJhdGluZyBTeXN0ZW0gMTQ0LS0xNDkKICAgICAgICAgICAgICBSLiBTdG9ja3RvbiBHYWlucyAgIEFuIG9wZXJhdGluZyBzeXN0ZW0gYmFzZWQgb24gdGhlIGNvbmNlcHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIGEgc3VwZXJ2aXNvcnkgY29tcHV0ZXIgIC4gLiAuIC4gLiAuIC4gMTUwLS0xNTYKICAgICAgIE1pY2hhZWwgRC4gU2Nocm9lZGVyIGFuZCAgIAogICAgICAgICAgICAgIEplcm9tZSBILiBTYWx0emVyICAgQSBIYXJkd2FyZSBBcmNoaXRlY3R1cmUgZm9yIEltcGxlbWVudGluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvdGVjdGlvbiBSaW5ncyAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAxNTctLTE3MAogICAgICAgICAgICAgIEEuIE5pY28gSGFiZXJtYW5uICAgU3luY2hyb25pemF0aW9uIG9mIENvbW11bmljYXRpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2Nlc3NlcyAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMTcxLS0xNzYKICAgICAgICAgICAgIFRvYnkgSi4gVGVvcmV5IGFuZCAgIAogICAgICAgICAgICAgICBUYWQgQi4gUGlua2VydG9uICAgQSBDb21wYXJhdGl2ZSBBbmFseXNpcyBvZiBEaXNrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTY2hlZHVsaW5nIFBvbGljaWVzICAuIC4gLiAuIC4gLiAuIC4gLiAuIDE3Ny0tMTg0CiAgICAgICAgIEUuIEcuIENvZmZtYW4sIEpyLiBhbmQgICAKICAgICAgICAgICAgICAgIFQuIEEuIFJ5YW4sIEpyLiAgIEEgc3R1ZHkgb2Ygc3RvcmFnZSBwYXJ0aXRpb25pbmcgdXNpbmcgYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0aGVtYXRpY2FsIG1vZGVsIG9mIGxvY2FsaXR5IC4gLiAuIC4gLiAxODUtLTE5MAogICAgICAgICAgIFBldGVyIEouIERlbm5pbmcgYW5kICAgCiAgICAgICAgICAgICBTdHVhcnQgQy4gU2Nod2FydHogICBQcm9wZXJ0aWVzIG9mIHRoZSB3b3JraW5nLXNldCBtb2RlbCAgLiAuIDE5MS0tMTk4CgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSAxNSwgIE51bWJlciA0LCBBcHJpbCwgMTk3MgoKICAgICAgICAgICAgICAgUi4gVy4gQ29ud2F5IGFuZCAgIAogICAgICAgICAgICAgIFcuIEwuIE1heHdlbGwgYW5kICAgCiAgICAgICAgICAgICAgICAgICBILiBMLiBNb3JnYW4gICBPbiB0aGUgSW1wbGVtZW50YXRpb24gb2YgU2VjdXJpdHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lYXN1cmVzIGluIEluZm9ybWF0aW9uIFN5c3RlbXMgIC4gLiAuIC4gMjExLS0yMjAKICAgICAgICAgICAgICAgICAgIEQuIEMuIFdhbGRlbiAgIEEgc3lzdGVtIGZvciBpbnRlcnByb2Nlc3MgY29tbXVuaWNhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYSByZXNvdXJjZSBzaGFyaW5nIGNvbXB1dGVyIG5ldHdvcmsgICAyMjEtLTIzMAogICAgICAgICAgICAgICBOLiBNLiBIZXJic3QgYW5kICAgCiAgICAgICAgICAgICAgICAgICAgIFAuIE0uIFdpbGwgICBBbiBleHBlcmltZW50YWwgbGFib3JhdG9yeSBmb3IgcGF0dGVybgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb2duaXRpb24gYW5kIHNpZ25hbCBwcm9jZXNzaW5nICAuIC4gLiAyMzEtLTI0NAogICAgICAgICAgICAgIFl1dGFrYSBNYXRzdXNoaXRhICAgSGlkZGVuIGxpbmVzIGVsaW1pbmF0aW9uIGZvciBhIHJvdGF0aW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3QgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDI0NS0tMjUyCiAgICAgICAgICAgICAgICAgICAgUy4gTS4gQ2hhc2UgICBBbiBpbXBsZW1lbnRlZCBncmFwaCBhbGdvcml0aG0gZm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5uaW5nIFNoYW5ub24gU3dpdGNoaW5nIEdhbWVzICAuIC4gLiAuIDI1My0tMjU2CiAgICAgICAgICAgICAgICBFLiBIb3Jvd2l0eiBhbmQgICAKICAgICAgICAgICAgICAgSC4gTC4gTW9yZ2FuIGFuZCAgIAogICAgICAgICAgICAgICAgICAgICBBLiBDLiBTaGF3ICAgQ29tcHV0ZXJzIGFuZCBTb2NpZXR5OiBBIFByb3Bvc2VkIENvdXJzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIENvbXB1dGVyIFNjaWVudGlzdHMgIC4gLiAuIC4gLiAuIC4gLiAyNTctLTI2MQogICAgICAgICAgICAgICAgICAgICAgICBILiBLdWtpICAgQ29tcGxleCBnYW1tYSBmdW5jdGlvbiB3aXRoIGVycm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDI2Mi0tMjY3CiAgICAgICAgICAgICAgICAgICAgQy4gQi4gTW9sZXIgICBNYXRyaXggQ29tcHV0YXRpb25zIHdpdGggRm9ydHJhbiBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhZ2luZyAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMjY4LS0yNzAKICAgICAgICAgICAgICAgICAgIEhpcm9uZG8gS3VraSAgIEFDTSBBbGdvcml0aG0gNDIxOiBDb21wbGV4IEdhbW1hCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdW5jdGlvbiB3aXRoIEVycm9yIENvbnRyb2wgIC4gLiAuIC4gLiAuIDI3MS0tMjcyCiAgICAgICAgICAgICAgIFYuIEsuIE0uIFdoaXRuZXkgICBBQ00gQWxnb3JpdGhtIDQyMjogTWluaW1hbCBTcGFubmluZyBUcmVlIDI3My0tMjc0CiAgICAgICAgICAgICAgICAgICAgQy4gQi4gTW9sZXIgICBBQ00gQWxnb3JpdGhtIDQyMzogTGluZWFyIEVxdWF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb2x2ZXIgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDI3NC0tMjc0CiAgICAgICAgICAgICAgICAgICBELiBDLiBXYWxkZW4gICBBIE5vdGUgb24gQ2hlbmV5J3MgTm9ucmVjdXJzaXZlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0LUNvbXBhY3RpbmcgQWxnb3JpdGhtICAuIC4gLiAuIC4gLiAuIDI3NS0tMjc1CiAgICAgICAgICAgICAgICAgICAgICAgVC4gQy4gSHUgICBBIENvbW1lbnQgb24gdGhlIERvdWJsZS1DaGFpbmVkIFRyZWUgLiAuIDI3Ni0tMjc2CgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSAxNSwgIE51bWJlciA1LCBNYXksIDE5NzIKCiAgICAgICAgICAgICAgICBKYW1lcyBLLiBNdWxsaW4gICBBbiBJbXByb3ZlZCBJbmRleGVkLVNlcXVlbnRpYWwgQWNjZXNzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXRob2QgVXNpbmcgSGFzaGVkIE92ZXJmbG93IC4gLiAuIC4gLiAuIDMwMS0tMzA3CiAgICAgICAgICAgICAgQS4gQmVuc291c3NhbiBhbmQgICAKICAgICAgICAgICAgICBDLiBULiBDbGluZ2VuIGFuZCAgIAogICAgICAgICAgICAgICAgICAgIFIuIEMuIERhbGV5ICAgVGhlIE11bHRpY3MgVmlydHVhbCBNZW1vcnk6IENvbmNlcHRzIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVzaWduIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAzMDgtLTMxOAogICAgICAgICAgICAgICAgUi4gRC4gQ2hyaXN0bWFuICAgTVVYLCBhIHNpbXBsZSBhcHByb2FjaCB0byBvbi1saW5lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wdXRpbmcgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDMxOS0tMzI5CiAgICAgICAgICAgICAgICBEYXZpZCBMLiBQYXJuYXMgICBBIHRlY2huaXF1ZSBmb3Igc29mdHdhcmUgbW9kdWxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpY2F0aW9uIHdpdGggZXhhbXBsZXMgIC4gLiAuIC4gLiAuIDMzMC0tMzM2CiAgICAgICAgICAgIFcuIE1vcnZlbiBHZW50bGVtYW4gICBJbXBsZW1lbnRpbmcgQ2xlbnNoYXctQ3VydGlzIHF1YWRyYXR1cmUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJLiBNZXRob2RvbG9neSBhbmQgZXhwZXJpZW5jZSAgLiAuIC4gLiAuIDMzNy0tMzQyCiAgICAgICAgICAgIFcuIE1vcnZpbiBHZW50bGVtYW4gICBJbXBsZW1lbnRpbmcgQ2xlbnNoYXctQ3VydGlzIHF1YWRyYXR1cmUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJSS4gQ29tcHV0aW5nIHRoZSBjb3NpbmUgdHJhbnNmb3JtYXRpb24gIDM0My0tMzQ2CiAgICAgICAgICAgICAgIEQuIEdyZWVuc3BhbiBhbmQgICAKICAgICAgICAgICAgICAgICAgICAgRC4gU2NodWx0eiAgIEZhc3QgZmluaXRlLWRpZmZlcmVuY2Ugc29sdXRpb24gb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpaGFybW9uaWMgcHJvYmxlbXMgIC4gLiAuIC4gLiAuIC4gLiAuIC4gMzQ3LS0zNTAKICAgICAgICAgICAgICAgICAgIEMuIEIuIER1bmhhbSAgIE1pbmltYXggbm9ubGluZWFyIGFwcHJveGltYXRpb24gYnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcHJveGltYXRpb24gb24gc3Vic2V0cyAuIC4gLiAuIC4gLiAuIC4gMzUxLS0zNTEKICAgICAgICAgICAgICAgICBSaWNoYXJkIEhhcnRlciAgIFRoZSBPcHRpbWFsaXR5IG9mIFdpbm9ncmFkJ3MgRm9ybXVsYSAuIC4gMzUyLS0zNTIKICAgICAgICAgICAgICAgIFcuIE0uIEdlbnRsZW1hbiAgIEFDTSBBbGdvcml0aG0gNDI0OiBDbGVuc2hhdy1DdXJ0aXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1YWRyYXR1cmUgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMzUzLS0zNTUKICAgICAgICAgICAgICAgIFIuIEwuIEh1cnN0IGFuZCAgIAogICAgICAgICAgICAgICAgICAgICBSLiBFLiBLbm9wICAgQUNNIEFsZ29yaXRobSA0MjU6IEdlbmVyYXRpb24gb2YgUmFuZG9tCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3JyZWxhdGVkIE5vcm1hbCBWYXJpYWJsZXMgIC4gLiAuIC4gLiAuIDM1NS0tMzU3CiAgICAgICAgICAgICAgICAgICAgICAgIEMuIEJyb24gICBBQ00gQWxnb3JpdGhtIDQyNjogTWVyZ2UgU29ydCBBbGdvcml0aG0gIDM1Ny0tMzU4CiAgICAgICAgICAgICAgICAgICAgICAgIFAuIExpbnogICBBQ00gQWxnb3JpdGhtIDQyNzogRm91cmllciBDb3NpbmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludGVncmFsIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMzU4LS0zNjAKICAgICAgICAgICAgICAgICAgICAgSi4gTS4gWW9oZSAgIEFDTSBBbGdvcml0aG0gNDI4OiBIdS1UdWNrZXIgTWluaW11bQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVkdW5kYW5jeSBBbHBoYWJldGljIENvZGluZyBNZXRob2QgIC4gLiAzNjAtLTM2MgogICAgICAgICAgICAgICBSLiBMLiBBc2hlbmh1cnN0ICAgQSByZXBvcnQgb2YgdGhlIEFDTSBjdXJyaWN1bHVtIGNvbW1pdHRlZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb24gY29tcHV0ZXIgZWR1Y2F0aW9uIGZvciBtYW5hZ2VtZW50LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3VycmljdWx1bSByZWNvbW1lbmRhdGlvbnMgZm9yIGdyYWR1YXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9mZXNzaW9uYWwgcHJvZ3JhbXMgaW4gaW5mb3JtYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbXMgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMzYzLS0zOTgKCkNvbW11bmljYXRpb25zIG9mIHRoZSBBQ00KVm9sdW1lIDE1LCAgTnVtYmVyIDYsIEp1bmUsIDE5NzIKCiAgICAgICAgICAgICAgICAgIEouIEJsYXRueSBhbmQgICAKICAgICAgICAgICAgICAgIFMuIFIuIENsYXJrIGFuZCAgIAogICAgICAgICAgICAgICAgICAgVC4gQS4gUm91cmtlICAgT24gdGhlIG9wdGltaXphdGlvbiBvZiBwZXJmb3JtYW5jZSBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZS1zaGFyaW5nIHN5c3RlbXMgYnkgc2ltdWxhdGlvbiAuIC4gLiA0MTEtLTQyMAogICAgICAgICAgICAgICAgICAgVC4gUi4gU3BhY2VrICAgQSBwcm9wb3NhbCB0byBlc3RhYmxpc2ggYSBwc2V1ZG8gdmlydHVhbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5IHZpYSB3cml0YWJsZSBvdmVybGF5cyAuIC4gLiAuIC4gLiA0MjEtLTQyNgogICAgICAgICAgICAgICAgIFAuIEdpbGJlcnQgYW5kICAgCiAgICAgICAgICAgICAgICAgVy4gSi4gQ2hhbmRsZXIgICBJbnRlcmZlcmVuY2UgYmV0d2VlbiBDb21tdW5pY2F0aW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJhbGxlbCBQcm9jZXNzZXMgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDQyNy0tNDM3CiAgICAgICAgICAgICAgICAgICBKLiBGLiBHaW1wZWwgICBCbG9ja3MtYSBuZXcgZGF0YXR5cGUgZm9yIFNOT0JPTCA0IC4gLiAuIDQzOC0tNDQ3CiAgICAgICAgICAgICAgICBEYXZpZCBGLiBNYXJ0aW4gICBBIEJvb2xlYW4gbWF0cml4IG1ldGhvZCBmb3IgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wdXRhdGlvbiBvZiBsaW5lYXIgcHJlY2VkZW5jZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25zICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA0NDgtLTQ1NAogICAgICAgICAgICAgUm9iZXJ0IFQuIE8nUmVhZ2FuICAgQ29tcHV0ZXIgQXNzaWduZWQgQ29kZXMgZnJvbSBWZXJiYWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3BvbnNlcyAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNDU1LS00NTkKICAgICAgICAgICAgICAgICAgICAgIEsuIElndWNoaSAgIEEgc3RhcnRpbmcgbWV0aG9kIGZvciBzb2x2aW5nIG5vbmxpbmVhcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVm9sdGVycmEgaW50ZWdyYWwgZXF1YXRpb25zIG9mIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kIGtpbmQgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA0NjAtLTQ2MQogICAgICAgICAgICAgICAgICAgICAgICBJLiBQb2hsICAgQSBTb3J0aW5nIFByb2JsZW0gYW5kIEl0cyBDb21wbGV4aXR5IC4gLiA0NjItLTQ2NAogICAgICAgICAgICAgICAgICAgSy4gUy4gS29sYmlnICAgQ2VydGlmaWNhdGlvbiBvZiBhbGdvcml0aG0gMzYzIChjb21wbGV4CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciBmdW5jdGlvbikgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDQ2NS0tNDY2CiAgICAgICAgICAgICAgICAgICAgSC4gTmllc3NuZXIgICBSZW1hcmsgb24gYWxnb3JpdGhtIDM0MyAoRWlnZW52YWx1ZXMgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlaWdlbnZlY3RvcnMgb2YgYSByZWFsIGdlbmVyYWwgbWF0cml4KSAgIDQ2Ni0tNDY2CiAgICAgICAgICAgICAgICAgICAgTC4gRy4gUHJvbGwgICBSZW1hcmsgb24gYGBBQ00gQWxnb3JpdGhtIDM3MCAoR2VuZXJhbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IpIFtHNV0nJyAgLiAuIC4gLiA0NjctLTQ2OAogICAgICAgICAgICAgICAgICBHLiBGLiBTY2hyYWNrICAgUmVtYXJrIG9uIGFsZ29yaXRobSAzODEgKFJhbmRvbSB2ZWN0b3JzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlmb3JtIGluIHNvbGlkIGFuZ2xlKSAgLiAuIC4gLiAuIC4gLiAuIDQ2OC0tNDY4CiAgICAgICAgICAgICAgICAgIEEuIEguIEouIFNhbGUgICBSZW1hcmsgb24gYWxnb3JpdGhtIDM5MyAoU3BlY2lhbCBzZXJpZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1bW1hdGlvbiB3aXRoIGFyYml0cmFyeSBwcmVjaXNpb24pICAuIC4gNDY4LS00NjkKICAgICAgICAgICAgICAgICAgIEIuIEVpbmFyc3NvbiAgIFJlbWFyayBvbiBhbGdvcml0aG0gNDE4IChDYWxjdWxhdGlvbiBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm91cmllciBpbnRlZ3JhbHMpIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA0NjktLTQ2OQogICAgICAgICAgICAgIFMuIEMuIEpvaG5zb24gYW5kICAgCiAgICAgICAgICAgICAgICBCLiBXLiBLZXJuaWdoYW4gICBSZW1hcmsgb24gYWxnb3JpdGhtIDM5NyAoQW4gaW50ZWdlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbW1pbmcgcHJvYmxlbSkgLiAuIC4gLiAuIC4gLiAuIC4gLiA0NjktLTQ2OQogICAgICAgICAgICAgICAgIEFicmFoYW0gS2FuZGVsICAgQ29tcHV0ZXIgU2NpZW5jZSAtLS0gQSBWaWNpb3VzIENpcmNsZSAgICA0NzAtLTQ3MQogICAgICAgICAgICAgICAgICBFLiBCLiBLb2ZmbWFuICAgSW5kaXZpZHVhbGl6aW5nIGluc3RydWN0aW9uIGluIGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRpdmUgQ0FJIHR1dG9yIC4gLiAuIC4gLiAuIC4gLiAuIC4gNDcyLS00NzMKICAgICAgICAgICAgICBFLiBOLiBIb3VzdGlzIGFuZCAgIAogICAgICAgICAgICAgVy4gRi4gTWl0Y2hlbGwgYW5kICAgCiAgICAgICAgICAgICAgICAgICAgIEouIFIuIFJpY2UgICBBQ00gQWxnb3JpdGhtIDQzODogUHJvZHVjdCBUeXBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUd28tcG9pbnQgR2F1c3MtTGVnZW5kcmUtU2ltcHNvbidzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlZ3JhdGlvbiAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDEwNzEKCkNvbW11bmljYXRpb25zIG9mIHRoZSBBQ00KVm9sdW1lIDE1LCAgTnVtYmVyIDcsIEp1bHksIDE5NzIKCiAgICAgICAgICAgICAgICAgICAgIExlZSBSZXZlbnMgICBUaGUgZmlyc3QgdHdlbnR5LWZpdmUgeWVhcnMgQUNNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOTQ3LS0xOTYyIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDQ4NS0tNDkwCiAgICAgICAgICAgICAgICAgIEVyaWMgQS4gV2Vpc3MgICBQdWJsaWNhdGlvbnMgaW4gY29tcHV0aW5nOiBhbiBpbmZvcm1hbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2aWV3IC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA0OTEtLTQ5NwogICAgICAgICAgICAgICAgICAgQS4gUC4gRXJzaG92ICAgQWVzdGhldGljcyBhbmQgdGhlIEh1bWFuIEZhY3RvciBpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvZ3JhbW1pbmcgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA1MDEtLTUwNQogICAgICAgICAgICAgICAgICAgICAgQW5vbnltb3VzICAgQXMgdGhlIGluZHVzdHJ5IHNlZXMgaXQgIC4gLiAuIC4gLiAuIC4gLiA1MDYtLTUxNwogICAgICAgICAgICAgICBNaWNoYWVsIEEuIEFyYmliICAgVG93YXJkIGFuIEF1dG9tYXRhIFRoZW9yeSBvZiBCcmFpbnMgIC4gLiA1MjEtLTUyNwogICAgICAgICAgICAgICAgWm9oYXIgTWFubmEgYW5kICAgCiAgICAgICAgICAgICAgICAgSmVhbiBWdWlsbGVtaW4gICBGaXhwb2ludCBBcHByb2FjaCB0byB0aGUgVGhlb3J5IG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21wdXRhdGlvbiAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDUyOC0tNTM2CiAgICAgICAgICAgICAgICAgICAgSi4gRi4gVHJhdWIgICBOdW1lcmljYWwgTWF0aGVtYXRpY3MgYW5kIENvbXB1dGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTY2llbmNlICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDUzNy0tNTQxCiAgICAgICAgICAgIERhdmlkIEYuIFNoYW5ubyBhbmQgICAKICAgICAgICAgICAgICAgICAgUm9tYW4gTC4gV2VpbCAgIE1hbmFnZW1lbnQgc2NpZW5jZTogYSB2aWV3IGZyb20KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbmxpbmVhciBwcm9ncmFtbWluZyAgLiAuIC4gLiAuIC4gLiAuIC4gNTQyLS01NDkKICAgICAgICAgICAgICAgICAgICAgSm9lbCBNb3NlcyAgIFRvd2FyZCBhIEdlbmVyYWwgVGhlb3J5IG9mIFNwZWNpYWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9ucyAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNTUwLS01NTYgKG9yIDU1MC0tNTU0Pz8pCiAgICAgICAgICAgICAgICAgICBDLiBDLiBGb3N0ZXIgICBBIHZpZXcgb2YgY29tcHV0ZXIgYXJjaGl0ZWN0dXJlICAuIC4gLiAuIDU1Ny0tNTY1CiAgICAgICAgICAgICAgICAgICBBLiBHLiBGcmFzZXIgICBPbiB0aGUgaW50ZXJmYWNlIGJldHdlZW4gY29tcHV0ZXJzIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSBjb21tdW5pY2F0aW9ucyBzeXN0ZW1zICAuIC4gLiAuIC4gLiA1NjYtLTU3MwogICAgICAgICAgICAgIFBlciBCcmluY2ggSGFuc2VuICAgU3RydWN0dXJlZCBNdWx0aXByb2dyYW1taW5nICAuIC4gLiAuIC4gLiA1NzQtLTU3OAogICAgICAgICAgICAgICAgICAgIFcuIEMuIEx5bmNoICAgT3BlcmF0aW5nIHN5c3RlbSBwZXJmb3JtYW5jZSAuIC4gLiAuIC4gLiA1NzktLTU4NQogICAgICAgICAgICAgICAgUy4gUi4gS2ltYmxldG9uICAgVGhlIHJvbGUgb2YgY29tcHV0ZXIgc3lzdGVtIG1vZGVscyBpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyZm9ybWFuY2UgZXZhbHVhdGlvbiAuIC4gLiAuIC4gLiAuIC4gLiA1ODYtLTU5MAogICAgICAgICAgICAgICAgICAgICBTYXVsIFJvc2VuICAgUHJvZ3JhbW1pbmcgU3lzdGVtcyBhbmQgTGFuZ3VhZ2VzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTk2NS0tMTk3NSkgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDU5MS0tNjAwCiAgICAgICAgICAgICAgICAgSmVhbiBFLiBTYW1tZXQgICBQcm9ncmFtbWluZyBMYW5ndWFnZXM6IEhpc3RvcnkgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdXR1cmUgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDYwMS0tNjEwCiAgICAgICAgICAgICAgICAgIEwuIEQuIEZvc2RpY2sgICBUaGUgcHJvZHVjdGlvbiBvZiBiZXR0ZXIgbWF0aGVtYXRpY2FsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2Z0d2FyZSAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDYxMS0tNjE3CiAgICAgICAgICAgICAgICAgICBELiBHLiBCb2Jyb3cgICBSZXF1aXJlbWVudHMgZm9yIEFkdmFuY2VkIFByb2dyYW1taW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW1zIGZvciBMaXN0IFByb2Nlc3NpbmcgIC4gLiAuIC4gLiAuIDYxOC0tNjI3CiAgICAgICAgICAgICBDaGFybGVzIFcuIEJhY2htYW4gICBUaGUgRXZvbHV0aW9uIG9mIFN0b3JhZ2UgU3RydWN0dXJlcyAgLiAuIDYyOC0tNjM0CiAgICAgICAgICAgICAgICAgICAgIEouIFIuIFJpY2UgICBPbiB0aGUgcHJlc2VudCBhbmQgZnV0dXJlIG9mIHNjaWVudGlmaWMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXB1dGF0aW9uICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNjM3LS02MzkKICAgICAgICAgICAgIFJvYmVydCBJLiBCZW5qYW1pbiAgIEEgZ2VuZXJhdGlvbmFsIHBlcnNwZWN0aXZlIG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBzeXN0ZW0gZGV2ZWxvcG1lbnQgLiAuIC4gLiAuIDY0MC0tNjQzCiAgICAgICAgICAgICAgICAgIFMuIFkuIFNlZGVsb3cgICBMYW5ndWFnZSBhbmFseXNpcyBpbiB0aGUgaHVtYW5pdGllcyAgLiAuIDY0NC0tNjQ3CiAgICAgICAgICAgICAgICAgICAgIEsuIEwuIFppbm4gICBDb21wdXRlcnMgaW4gdGhlIGluc3RydWN0aW9uYWwgcHJvY2VzczoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbnMgZm9yIHJlc2VhcmNoIGFuZCBkZXZlbG9wbWVudCAgNjQ4LS02NTEKICAgICAgICAgICAgICAgICAgRy4gTS4gU3R1cm1hbiAgIENvbXB1dGVycyBhbmQgdXJiYW4gc29jaWV0eSAgLiAuIC4gLiAuIC4gNjUyLS02NTcKICAgICAgICAgICAgICAgICAgICAgIEcuIFNhbHRvbiAgIER5bmFtaWMgZG9jdW1lbnQgcHJvY2Vzc2luZyAgLiAuIC4gLiAuIC4gNjU4LS02NjgKICAgICAgICAgICAgICAgIERvbmFsZCBFLiBLbnV0aCAgIEFuY2llbnQgQmFieWxvbmlhbiBhbGdvcml0aG1zICAuIC4gLiAuIC4gNjcxLS02NzcKICAgICAgICAgICAgICAgIEYuIEwuIEJhdWVyIGFuZCAgIAogICAgICAgICAgICAgICAgIEguIFdvc3NuZXIgYW5kICAgCiAgICAgICAgICAgICAgICAgICAgS29ucmFkIFp1c2UgICBUaGUgYGBQbGFua2Fsa3VsJycgb2YgS29ucmFkIFp1c2U6IGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVydW5uZXIgb2YgdG9kYXkncyBwcm9ncmFtbWluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2VzLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA2NzgtLTY4NQogICAgICAgICAgICAgUmljaGFyZCBFLiBTcHJhZ3VlICAgQSBXZXN0ZXJuIFZpZXcgb2YgQ29tcHV0ZXIgSGlzdG9yeSAuIC4gLiA2ODYtLTY5MgogICAgICAgICAgICAgICAgICAgRnJhbnogTC4gQWx0ICAgQXJjaGFlb2xvZ3kgb2YgY29tcHV0ZXJzIC0tLQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtaW5pc2NlbmNlcywgMTk0NS0tMTk0NyAgLiAuIC4gLiAuIC4gLiA2OTMtLTY5NAogICAgICAgICAgICAgICAgIEEuIEJvcm9kaW4gYW5kICAgCiAgICAgICAgICAgICAgICAgIEMuIEMuIEdvdGxpZWIgICBDb21wdXRlcnMgYW5kIGVtcGxveW1lbnQgLiAuIC4gLiAuIC4gLiAuIDY5NS0tNzAyCgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSAxNSwgIE51bWJlciA4LCBBdWd1c3QsIDE5NzIKCiAgICAgICAgICAgICAgICBKb2huIEcuIEhlcnJpb3QgICBJbiBtZW1vcnkgb2YgR2VvcmdlIEUuIEZvcnN5dGhlICAuIC4gLiAuIDcxOS0tNzIwCiAgICAgICAgICAgICAgICBEb25hbGQgRS4gS251dGggICBHZW9yZ2UgRm9yc3l0aGUgYW5kIHRoZSBkZXZlbG9wbWVudCBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHV0ZXIgU2NpZW5jZSAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA3MjEtLTcyNgogICAgICAgICAgICAgICAgICAgIERhdmlkIENyb3dlICAgR2VuZXJhdGluZyBwYXJzZXJzIGZvciBhZmZpeCBncmFtbWFycy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxlY3Rpb24gb2YgYXJ0aWNsZXMgaW4gaG9ub3Igb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlb3JnZSBFLiBGb3JzeXRoZSAoQUNNIFN0dWRlbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXBldGl0aW9uIEF3YXJkIFBhcGVycykgIC4gLiAuIC4gLiAuIC4gNzI4LS03MzQKICAgICAgICAgICBSb2JlcnQgRS4gSGVsYmlnIGFuZCAgIAogICAgICAgICAgICAgUGF0cmljayBLLiBPcnIgYW5kICAgCiAgICAgICAgICAgICBSb2JlcnQgUi4gUm9lZGlnZXIgICBQb2xpdGljYWwgUmVkaXN0cmljdGluZyBieSBDb21wdXRlciAgLiAuIDczNS0tNzQxCiAgICAgICAgICAgICBBcnRodXIgSi4gQmVuamFtaW4gICBFeHRlbnNpYmxlIEVkaXRvciBmb3IgYSBTbWFsbCBNYWNoaW5lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIERpc2sgU3RvcmFnZSAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDc0Mi0tNzQ3CiAgICAgICAgICAgIFJvYmVydCBGLiBSb3NpbiBhbmQgICAKICAgICAgICAgICAgIEdpZGVvbiBGcmllZGVyIGFuZCAgIAogICAgICAgUmljaGFyZCBILiBFY2tob3VzZSwgSnIuICAgRW52aXJvbm1lbnQgZm9yIFJlc2VhcmNoIGluCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNaWNyb3Byb2dyYW1taW5nIGFuZCBFbXVsYXRpb24gLiAuIC4gLiAuIDc0OC0tNzYwCiAgICAgICAgICAgICAgICAgUC4gSC4gT2RlbiBhbmQgICAKICAgICAgICAgICAgICAgICAgRy4gUy4gU2hlZGxlciAgIEEgTW9kZWwgb2YgTWVtb3J5IENvbnRlbnRpb24gaW4gYSBQYWdpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hY2hpbmUgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNzYxLS03NzEKICAgICAgICAgICAgSC4gSi4gQmVybnN0ZWluIGFuZCAgIAogICAgICAgICAgICAgICAgICBILiBULiBHbGFkd2luICAgQ29tcGlsaW5nIGZpeGVkLXBvaW50IG11bHRpcGxpY2F0aW9ucyAgICA3NzItLTc3MgogICAgICAgICAgICAgVy4gTC4gdmFuIGRlciBQb2VsICAgQ29tbWVudCBvbiB0aGUgY29tcG9zaXRpb24gb2Ygc2VtYW50aWNzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBBbGdvbCA2OCAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDc3Mi0tNzcyCiAgICAgICAgICAgSmFtZXMgSC4gTW9ycmlzLCBKci4gICBBIEJvbnVzIGZyb20gdmFuIFdpam5nYWFyZGVuJ3MgRGV2aWNlICAgIDc3My0tNzczCiAgICAgICAgICAgICAgICAgICAgUC4gUi4gSm9uZXMgICBDb21tZW50IG9uIGF2ZXJhZ2UgYmluYXJ5IHNlYXJjaCBsZW5ndGggIDc3NC0tNzc0CiAgICAgICAgICAgICBSb25hbGQgQy4gUmVhZCBhbmQgICAKICAgICAgICAgICAgICAgICAgICAgIEsuIEhhcmFkYSAgIEEgbm90ZSBvbiB0aGUgZ2VuZXJhdGlvbiBvZiByb3NhcnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcm11dGF0aW9ucy4gV2l0aCBhIHJlc3BvbnNlIGJ5IEsuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYXJhZGEgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDc3NS0tNzc1CiAgICAgICAgICAgICAgICAgICAgICBXLiBTcXVpcmUgICBBQ00gQWxnb3JpdGhtIDQyOTogTG9jYWxpemF0aW9uIG9mIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9vdHMgb2YgYSBQb2x5bm9taWFsICAuIC4gLiAuIC4gLiAuIC4gLiA3NzYtLTc3NwogICAgICAgICAgIFAuIFcuIFB1cmRvbSBKci4gYW5kICAgCiAgICAgICAgICAgICAgICAgICAgRS4gRi4gTW9vcmUgICBBQ00gQWxnb3JpdGhtIDQzMDogSW1tZWRpYXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVkb21pbmF0b3JzIGluIGEgRGlyZWN0ZWQgR3JhcGggIC4gLiAuIDc3Ny0tNzc4CgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSAxNSwgIE51bWJlciA5LCBTZXB0ZW1iZXIsIDE5NzIKCiAgICAgICAgICAgICAgIEsuIE4uIExldml0dCBhbmQgICAKICAgICAgICAgICAgICAgICAgICBXLiBILiBLYXV0eiAgIENlbGx1bGFyIEFycmF5cyBmb3IgdGhlIFNvbHV0aW9uIG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcmFwaCBQcm9ibGVtcyAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDc4OS0tODAxCiAgICAgICAgICAgICAgICAgU2FrdGkgUC4gR2hvc2ggICBGaWxlIE9yZ2FuaXphdGlvbiAtLS0gVGhlIENvbnNlY3V0aXZlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXRyaWV2YWwgUHJvcGVydHkgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDgwMi0tODA4CiAgICAgICAgICAgICAgICAgICAgIE0uIE1vciBhbmQgICAKICAgICAgICAgICAgICAgICAgICAgIFQuIExhbWRhbiAgIEEgTmV3IEFwcHJvYWNoIHRvIEF1dG9tYXRpYyBTY2FubmluZyBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udG91ciBNYXBzIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA4MDktLTgxMgogICAgICAgICAgICAgICAgUGF1bCBMLiBSaWNobWFuICAgQXV0b21hdGljIEVycm9yIEFuYWx5c2lzIGZvciBEZXRlcm1pbmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlY2lzaW9uICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA4MTMtLTgxNwogICAgICAgICAgICAgICAgICAgQS4gUmF2aW5kcmFuICAgQUNNIEFsZ29yaXRobSA0MzE6IEEgQ29tcHV0ZXIgUm91dGluZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIFF1YWRyYXRpYyBhbmQgTGluZWFyIFByb2dyYW1taW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9ibGVtcyAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDgxOC0tODIwCiAgICAgICAgICAgICAgUi4gSC4gQmFydGVscyBhbmQgICAKICAgICAgICAgICAgICAgICAgRy4gVy4gU3Rld2FydCAgIEFDTSBBbGdvcml0aG0gNDMyOiBTb2x1dGlvbiBvZiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdHJpeCBFcXVhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtcYmZ7QX19eCt4e1xiZntCfX09e1xiZntDfX0kIC4gLiAuIC4gLiA4MjAtLTgyNgogICAgICAgICAgICAgICAgICBFLiBTLiBEZXV0c2NoICAgVGhpbm5pbmcgQWxnb3JpdGhtcyBvbiBSZWN0YW5ndWxhciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhleGFnb25hbCwgYW5kIFRyaWFuZ3VsYXIgQXJyYXlzIC4gLiAuIC4gODI3LS04MzcKICAgICAgICAgICAgICAgICAgICAgSi4gR3JlZ29yeSAgIEEgQ29tcGFyaXNvbiBvZiBGbG9hdGluZyBQb2ludCBTdW1tYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1ldGhvZHMgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gODM4LS04MzgKICAgICAgICAgICAgICAgIEhhdGVtIE0uIEtoYWxpbCAgIFRoZSBlaWdlbnByb2JsZW0gb2YgYmxvY2sgdHJpZGlhZ29uYWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdHJpY2VzIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gODM5LS04MzkKICAgICAgICAgICAgICAgRC4gTC4gUGFybmFzIGFuZCAgIAogICAgICAgICAgICBBLiBOLiBIYWJlcm1hbm4gYW5kICAgCiAgICAgICAgICAgICAgICAgICAgIFIuIEMuIEhvbHQgICBDb21tZW50IG9uIERlYWRsb2NrIFByZXZlbnRpb24gTWV0aG9kICAgIDg0MC0tODQxCiAgICAgICAgICAgICAgUi4gUnViaW5zdGVpbiBhbmQgICAKICAgICAgICAgICAgICAgICAgICAgSi4gRmVsZG1hbiAgIEEgY29udHJvbGxlciBmb3IgYSBCcmFpbGxlIHRlcm1pbmFsICAuIC4gODQxLS04NDIKICAgICAgICAgICAgICAgICAgICAgIEsuIEMuIFRhbiAgIE9uIEZvc3RlcidzIEluZm9ybWF0aW9uIFN0b3JhZ2UgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXRyaWV2YWwgVXNpbmcgQVZMIFRyZWVzICAuIC4gLiAuIC4gLiAuIDg0My0tODQzCgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSAxNSwgIE51bWJlciAxMCwgT2N0b2JlciwgMTk3MgoKICAgICAgICAgICAgICAgICBFLiBXLiBEaWprc3RyYSAgIFRoZSBIdW1ibGUgUHJvZ3JhbW1lciAgLiAuIC4gLiAuIC4gLiAuIC4gODU5LS04NjYKICAgICAgICAgICAgICAgIEphbWVzIEIuIE1vcnJpcyAgIERlbWFuZCBQYWdpbmcgVGhyb3VnaCBVdGlsaXphdGlvbiBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29ya2luZyBTZXRzIG9uIHRoZSBNYW5pYWMgSUkgIC4gLiAuIC4gLiA4NjctLTg3MgogICAgICAgICAgICAgICBKLiBILiBBaHJlbnMgYW5kICAgCiAgICAgICAgICAgICAgICAgICAgICBVLiBEaWV0ZXIgICBDb21wdXRlciBNZXRob2RzIGZvciBTYW1wbGluZyBmcm9tIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhwb25lbnRpYWwgYW5kIE5vcm1hbCBEaXN0cmlidXRpb25zIC4gLiA4NzMtLTg4MgogICAgICAgICAgICAgIFJpY2hhcmQgSi4gSGFuc29uICAgSW50ZWdyYWwgRXF1YXRpb25zIG9mIEltbXVub2xvZ3kgLiAuIC4gLiA4ODMtLTg5MAogICAgICAgICAgUm9iZXJ0IEYuIFNpbW1vbnMgYW5kICAgCiAgICAgICAgICAgICAgICBKb25hdGhhbiBTbG9jdW0gICBHZW5lcmF0aW5nIEVuZ2xpc2ggRGlzY291cnNlIGZyb20KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbWFudGljIE5ldHdvcmtzICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gODkxLS05MDUKICAgICAgICAgICAgICAgICAgICAgR2VydCBEYXRoZSAgIENvbnZlcnNpb24gb2YgRGVjaXNpb24gVGFibGVzIGJ5IFJ1bGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hc2sgTWV0aG9kIHdpdGhvdXQgUnVsZSBNYXNrICAuIC4gLiAuIC4gOTA2LS05MDkKICAgICAgICAgICAgICAgVy4gRC4gRnJhemVyIGFuZCAgIAogICAgICAgICAgICAgICAgICAgICBDLiBLLiBXb25nICAgU29ydGluZyBieSBOYXR1cmFsIFNlbGVjdGlvbiAuIC4gLiAuIC4gLiA5MTAtLTkxMwogICAgICAgICAgICAgICAgICAgQS4gUC4gRXJzaG92ICAgQ29ycmlnZW5kdW06IGBgQWVzdGhldGljcyBhbmQgdGhlIEh1bWFuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYWN0b3IgaW4gUHJvZ3JhbW1pbmcnJyAgLiAuIC4gLiAuIC4gLiAuIDkxMy0tOTEzCiAgICAgICAgICAgICAgICAgICAgICAgSC4gQWtpbWEgICBBQ00gQWxnb3JpdGhtIDQzMzogSW50ZXJwb2xhdGlvbiBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNtb290aCBDdXJ2ZSBGaXR0aW5nIEJhc2VkIG9uIExvY2FsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9jZWR1cmVzIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDkxNC0tOTE4CgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSAxNSwgIE51bWJlciAxMSwgTm92ZW1iZXIsIDE5NzIKCiAgICAgICAgICAgICAgICAgICAgUGh5bGxpcyBGb3ggICBDb21wYXJhdGl2ZSBTdHVkeSBvZiBDb21wdXRlciBQcm9ncmFtcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIEludGVncmF0aW5nIERpZmZlcmVudGlhbCBFcXVhdGlvbnMgICA5NDEtLTk0OAogICAgICAgICAgICAgTWljaGFlbCBBLiBNYWxjb2xtICAgQWxnb3JpdGhtcyB0byBSZXZlYWwgUHJvcGVydGllcyBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxvYXRpbmctUG9pbnQgQXJpdGhtZXRpYyAgLiAuIC4gLiAuIC4gLiA5NDktLTk1MQogICAgICAgICAgICAgTWVycmVsbCBMLiBQYXRyaWNrICAgQSBIaWdobHkgUGFyYWxsZWwgQWxnb3JpdGhtIGZvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXBwcm94aW1hdGluZyBBbGwgWmVyb3Mgb2YgYSBQb2x5bm9taWFsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIE9ubHkgUmVhbCBaZXJvcyAuIC4gLiAuIC4gLiAuIC4gLiAuIDk1Mi0tOTU1CiAgICAgICAgICAgICAgIEhlbnJ5IEYuIExlZGdhcmQgICBNb2RlbCBmb3IgVHlwZSBDaGVja2luZyAtLS0gd2l0aCBhbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXBwbGljYXRpb24gdG8gQWxnb2wgNjAgIC4gLiAuIC4gLiAuIC4gLiA5NTYtLTk2NgogICAgICAgICAgICAgICAgUGV0ZXIgSGVuZGVyc29uICAgRGVyaXZlZCBTZW1hbnRpY3MgZm9yIFNvbWUgUHJvZ3JhbW1pbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhbmd1YWdlIENvbnN0cnVjdHMgIC4gLiAuIC4gLiAuIC4gLiAuIC4gOTY3LS05NzMKICAgICAgICAgICAgICAgICAgICBNLiBWZXJoZWxzdCAgIENvbnZlcnNpb24gb2YgTGltaXRlZC1FbnRyeSBEZWNpc2lvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFibGVzIHRvIE9wdGltYWwgYW5kIE5lYXItT3B0aW1hbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxvd2NoYXJ0czogVHdvIE5ldyBBbGdvcml0aG1zIC4gLiAuIC4gLiA5NzQtLTk4MAogICAgICAgICAgICAgICAgICBILiBELiBCYWVja2VyICAgR2FyYmFnZSBDb2xsZWN0aW9uIGZvciBWaXJ0dWFsIE1lbW9yeQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHV0ZXIgU3lzdGVtcyAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA5ODEtLTk4NgogICAgICAgICAgICBKb2huIFMuIFJhbWJlcmcgYW5kICAgCiAgICAgICAgICAgICBCcnVjZSBXLiBTY2htZWlzZXIgICBBcHByb3hpbWF0ZSBNZXRob2QgZm9yIEdlbmVyYXRpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5bW1ldHJpYyBSYW5kb20gVmFyaWFibGVzIC4gLiAuIC4gLiAuIC4gOTg3LS05OTAKICAgICAgICAgICAgICAgICAgICBELiBMLiBNYXJjaCAgIEFDTSBBbGdvcml0aG0gNDM0OiBFeGFjdCBQcm9iYWJpbGl0aWVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgJHtSXHRpbWVze0N9fSQgQ29udGluZ2VuY3kgVGFibGVzICAgIDk5MS0tOTkyCiAgICAgICAgICAgICAgICAgICBXLiBGdWxsZXJ0b24gICBBQ00gQWxnb3JpdGhtIDQzNTogTW9kaWZpZWQgSW5jb21wbGV0ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2FtbWEgRnVuY3Rpb24gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA5OTMtLTk5NQogICAgICAgICAgICAgICAgICBWLiBZLiBMdW0gYW5kICAgCiAgICAgICAgICAgICAgICAgIFAuIFMuIFQuIFl1ZW4gICBBZGRpdGlvbmFsIHJlc3VsdHMgb24ga2V5LXRvLWFkZHJlc3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybSB0ZWNobmlxdWVzOiBhIGZ1bmRhbWVudGFsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJmb3JtYW5jZSBzdHVkeSBvbiBsYXJnZSBleGlzdGluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkIGZpbGVzICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA5OTYtLTk5NwogICAgICAgICAgICAgICAgICAgICBTLiBLZW5uZWR5ICAgQSBub3RlIG9uIG9wdGltYWwgZG91Ymx5LWNoYWluZWQgdHJlZXMgICA5OTctLTk5OAogICAgICAgIE11cnJheSBBLiBFaXNlbmJlcmcgYW5kICAgCiAgICAgICAgICAgICBNaWNoYWVsIFIuIE1jR3VpcmUgICBGdXJ0aGVyIGNvbW1lbnRzIG9uIERpamtzdHJhJ3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmN1cnJlbnQgcHJvZ3JhbW1pbmcgY29udHJvbCBwcm9ibGVtICAgOTk5LS05OTkKICAgICAgICAgICAgICAgICAgUy4gVy4gU21vbGlhciAgIENvbW1lbnRzIG9uIE1vb3JlcidzIE11c2ljIGFuZCBjb21wdXRlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9zaXRpb24gIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAxMDAwLS0xMDAxCgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSAxNSwgIE51bWJlciAxMiwgRGVjZW1iZXIsIDE5NzIKCiAgICAgICAgSi4gUmljaGFyZCBQaGlsbGlwcyBhbmQgICAKICAgICAgICAgICAgICAgICAgICBILiBDLiBBZGFtcyAgIER5bmFtaWMgUGFydGl0aW9uaW5nIGZvciBBcnJheSBMYW5ndWFnZXMgMTAyMy0tMTAzMgogICAgICAgICAgICAgICAgICAgUi4gQmF5ZXIgYW5kICAgCiAgICAgICAgICAgICAgICAgICAgQy4gV2l0emdhbGwgICBJbmRleCBSYW5nZXMgZm9yIE1hdHJpeCBDYWxjdWxpICAuIC4gLiAuIDEwMzMtLTEwMzkKICAgICAgICAgICAgICAgICBKYXkgRWFybGV5IGFuZCAgIAogICAgICAgICAgICAgICAgUGF1bCBDYWl6ZXJndWVzICAgTWV0aG9kIGZvciBJbmNyZW1lbnRhbGx5IENvbXBpbGluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFuZ3VhZ2VzIHdpdGggTmVzdGVkIFN0YXRlbWVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAxMDQwLS0xMDQ0CiAgICAgICAgICAgICAgICBGYWJyaXppbyBMdWNjaW8gICBXZWlnaHRlZCBJbmNyZW1lbnQgTGluZWFyIFNlYXJjaCBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNjYXR0ZXIgVGFibGVzIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMTA0NS0tMTA0NwogICAgICAgICAgICAgICAgIEQuIFIuIEJhcnIgYW5kICAgCiAgICAgICAgICAgICAgICAgICBOLiBMLiBTbGV6YWsgICBBIGNvbXBhcmlzb24gb2YgbXVsdGl2YXJpYXRlIG5vcm1hbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9ycyAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAxMDQ4LS0xMDQ5CiAgICAgICAgICAgICAgICAgSm9obiBNb29yZSBhbmQgICAKICAgICAgICAgICAgICBQcmVudGlzcyBSb2JpbnNvbiAgIE5ldyBNZXRob2QgZm9yIHRoZSBTb2x1dGlvbiBvZiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhdWNoeSBQcm9ibGVtIGZvciBQYXJhYm9saWMgRXF1YXRpb25zICAgMTA1MC0tMTA1MgogICAgICAgICAgICAgICAgICAgRC4gTC4gUGFybmFzICAgT24gdGhlIENyaXRlcmlhIHRvIEJlIFVzZWQgaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlY29tcG9zaW5nIFN5c3RlbXMgaW50byBNb2R1bGVzIC4gLiAuIC4gMTA1My0tMTA1OAogICAgICAgICAgICAgICAgICAgIFAuIEouIEJyb3duICAgTGV2ZWxzIG9mIExhbmd1YWdlIGZvciBQb3J0YWJsZSBTb2Z0d2FyZSAxMDU5LS0xMDYyCiAgICAgICAgICAgIFN0ZXBoZW4gU2hlcm1hbiBhbmQgICAKICAgICAgICBGb3Jlc3QgQmFza2V0dCwgSUlJIGFuZCAgIAogICAgICAgICAgICAgICAgICAgSi4gQy4gQnJvd25lICAgVHJhY2UtRHJpdmVuIE1vZGVsaW5nIGFuZCBBbmFseXNpcyBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1BVIFNjaGVkdWxpbmcgaW4gYSBNdWx0aXByb2dyYW1taW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW0gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDEwNjMtLTEwNjkKICAgICAgICAgICAgICAgICAgIFcuIFIuIEJvbGFuZCAgIEFDTSBBbGdvcml0aG0gNDM2OiBQcm9kdWN0IFR5cGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYXBlem9pZGFsIEludGVncmF0aW9uICAuIC4gLiAuIC4gLiAuIC4gMTA3MC0tMTA3MAogICAgICAgICAgICAgICAgICAgVy4gUi4gQm9sYW5kICAgQUNNIEFsZ29yaXRobSA0Mzc6IFByb2R1Y3QgVHlwZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2ltcHNvbidzIEludGVncmF0aW9uICAuIC4gLiAuIC4gLiAuIC4gLiAxMDcwLS0xMDcxCiAgICAgICAgICAgICAgICAgICBXLiBSLiBCb2xhbmQgICBBQ00gQWxnb3JpdGhtIDQzOTogUHJvZHVjdCBUeXBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaHJlZS1wb2ludCBHYXVzcy1MZWdlbmRyZS1TaW1wc29uJ3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludGVncmF0aW9uICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMTA3MgoKQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTQpWb2x1bWUgMTUsICBOdW1iZXIgMiwgRmVicnVhcnksIDE5NzMKCiAgICAgICAgICAgUGV0ZXIgSi4gRGVubmluZyBhbmQgICAKICAgICAgICAgICAgIFN0dWFydCBDLiBTY2h3YXJ0eiAgIENvcnJpZ2VuZHVtOiBgYFByb3BlcnRpZXMgb2YgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JraW5nLXNldCBtb2RlbCcnICAuIC4gLiAuIC4gLiAuIC4gLiAuIDE5MS0tMTk4CgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSAxNiwgIE51bWJlciAxLCBKYW51YXJ5LCAxOTczCgogICAgICAgICAgICAgICAgICBHLiBTLiBTaGVkbGVyICAgQSBRdWV1aW5nIE1vZGVsIG9mIGEgTXVsdGlwcm9ncmFtbWVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21wdXRlciB3aXRoIGEgVHdvLUxldmVsIFN0b3JhZ2UgU3lzdGVtIDMtLTEwCiAgICAgICAgICAgICAgICAgICAgQ2FydGVyIEJheXMgICBUaGUgUmVhbGxvY2F0aW9uIG9mIEhhc2gtQ29kZWQgVGFibGVzICAgIDExLS0xNAogICAgICAgICAgIEphbWVzIEguIE1vcnJpcywgSnIuICAgUHJvdGVjdGlvbiBpbiBQcm9ncmFtbWluZyBMYW5ndWFnZXMgIC4gLiAxNS0tMjEKICAgICAgICAgICAgIFlvaWNoaSBNdXJhb2thIGFuZCAgIAogICAgICAgICAgICAgICAgICBEYXZpZCBKLiBLdWNrICAgT24gdGhlIFRpbWUgUmVxdWlyZWQgZm9yIGEgU2VxdWVuY2Ugb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdHJpeCBQcm9kdWN0cyAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMjItLTI2CiAgICAgICAgICAgICAgICBFLiBCLiBKYW1lcyBhbmQgICAKICAgICAgICAgICAgICAgIEQuIFAuIFBhcnRyaWRnZSAgIEFkYXB0aXZlIENvcnJlY3Rpb24gb2YgUHJvZ3JhbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGVtZW50cyAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAyNy0tMzcKICAgICAgICAgICAgICAgICAgUC4gTC4gUmljaG1hbiAgIFZhcmlhYmxlLVByZWNpc2lvbiBFeHBvbmVudGlhdGlvbiAgLiAuIC4gMzgtLTQwCiAgICAgICAgICAgICAgICAgQy4gUi4gQ3Jhd2ZvcmQgICBSZWR1Y3Rpb24gb2YgYSBCYW5kLVN5bW1ldHJpYwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhbGl6ZWQgRWlnZW52YWx1ZSBQcm9ibGVtIC4gLiAuIC4gLiA0MS0tNDQKICAgICAgICAgICAgICAgUy4gRS4gQmxvdW50IGFuZCAgIAogICAgICAgICAgICAgICAgICAgICAgICBMLiBGZWluICAgVGhlIHByYWN0aWNhbCBhc3BlY3Qgb2YgY29tcHV0ZXIgc2NpZW5jZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWR1Y2F0aW9uIC0tLSBkaXNjdXNzaW9uIC4gLiAuIC4gLiAuIC4gLiA0NS0tNDYKICAgICAgICAgICAgICAgICAgICAgICAgQy4gQmF5cyAgIEEgbm90ZSBvbiB3aGVuIHRvIGNoYWluIG92ZXJmbG93IGl0ZW1zCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoaW4gYSBkaXJlY3QtYWNjZXNzIHRhYmxlIC4gLiAuIC4gLiAuIDQ2LS00NwogICAgICAgICAgICAgICAgICAgTS4gUy4gQXRraW5zICAgTXV0dWFsIHJlY3Vyc2lvbiBpbiBBbGdvbCA2MCB1c2luZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3RlZCBjb21waWxlcnMgLiAuIC4gLiAuIC4gLiAuIC4gLiA0Ny0tNDgKICAgICAgICAgICAgICAgICBMLiBKLiBHYWxsYWhlciAgIEFDTSBBbGdvcml0aG0gNDQwOiBBIE11bHRpZGltZW5zaW9uYWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vbnRlIENhcmxvIFF1YWRyYXR1cmUgd2l0aCBBZGFwdGl2ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyYXRpZmllZCBTYW1wbGluZyAgLiAuIC4gLiAuIC4gLiAuIC4gLiA0OS0tNTAKICAgICAgICAgICAgICAgICAgICAgUi4gRS4gS25vcCAgIEFDTSBBbGdvcml0aG0gNDQxOiBSYW5kb20gc2FtcGxlcyBmcm9tCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZGlwb2xlIGRpc3RyaWJ1dGlvbiBbRzVdIC4gLiAuIC4gLiAuIDUxLS01MQogICAgICAgICAgICAgICAgIEcuIFcuIEhpbGwgYW5kICAgCiAgICAgICAgICAgICAgICAgICAgQS4gVy4gRGF2aXMgICBBQ00gQWxnb3JpdGhtIDQ0MjogTm9ybWFsIGRldmlhdGUgW1MxNF0gIDUxLS01MgoKQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTQpWb2x1bWUgMTYsICBOdW1iZXIgMiwgRmVicnVhcnksIDE5NzMKCiAgICAgICAgICAgICAgICAgIFIuIEQuIE1lcnJpbGwgICBSZXByZXNlbnRhdGlvbiBvZiBDb250b3VycyBhbmQgUmVnaW9ucwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIEVmZmljaWVudCBDb21wdXRlciBTZWFyY2ggIC4gLiAuIC4gLiA2OS0tODIKICAgICAgICAgUy4gQ3Jlc3BpLVJlZ2hpenppIGFuZCAgIAogICAgICAgICAgICBNLiBBLiBNZWxrYW5vZmYgYW5kICAgCiAgICAgICAgICAgICAgICAgICAgIEwuIExpY2h0ZW4gICBUaGUgVXNlIG9mIEdyYW1tYXRpY2FsIEluZmVyZW5jZSBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlc2lnbmluZyBQcm9ncmFtbWluZyBMYW5ndWFnZXMgIC4gLiAuIC4gODMtLTkwCiAgICAgICAgICAgICAgICAgICBKLiBGLiBHaW1wZWwgICBBIFRoZW9yeSBvZiBEaXNjcmV0ZSBQYXR0ZXJucyBhbmQgVGhlaXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEltcGxlbWVudGF0aW9uIGluIFNOT0JPTDQgIC4gLiAuIC4gLiAuIC4gOTEtLTEwMAogICAgICAgICAgICAgICAgICAgICAgIEouIFJva25lICAgQXV0b21hdGljIEVycm9yYm91bmRzIGZvciBTaW1wbGUgWmVyb3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIEFuYWx5dGljIEZ1bmN0aW9ucyAgLiAuIC4gLiAuIC4gLiAuIC4gMTAxLS0xMDQKICAgICAgICAgICAgICAgUmljaGFyZCBQLiBCcmVudCAgIFJlZHVjaW5nIHRoZSBSZXRyaWV2YWwgVGltZSBvZiBTY2F0dGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdG9yYWdlIFRlY2huaXF1ZXMgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDEwNS0tMTA5CiAgICAgICAgICAgUm9iZXJ0IE0uIEdyYWhhbSBhbmQgICAKICAgICAgR2VyYWxkIEouIENsYW5jeSwgSnIuIGFuZCAgIAogICAgICAgICAgICAgICBEYXZpZCBCLiBEZVZhbmV5ICAgQSBzb2Z0d2FyZSBkZXNpZ24gYW5kIGV2YWx1YXRpb24gc3lzdGVtICAxMTAtLTExNgogICAgICAgICAgICAgICAgICAgUi4gTS4gQmFsemVyICAgQW4gb3ZlcnZpZXcgb2YgdGhlIElTUEwgY29tcHV0ZXIgc3lzdGVtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNpZ24gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDExNy0tMTIyCiAgICAgICAgICAgICAgRi4gTi4gRnJpdHNjaCBhbmQgICAKICAgICAgICAgICAgICAgUi4gRS4gU2hhZmVyIGFuZCAgIAogICAgICAgICAgICAgICAgICBXLiBQLiBDcm93bGV5ICAgQUNNIEFsZ29yaXRobSA0NDM6IFNvbHV0aW9uIG9mIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNjZW5kZW50YWwgRXF1YXRpb24gJHcgZV53ID0geCQgIC4gLiAxMjMtLTEyNAoKQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTQpWb2x1bWUgMTYsICBOdW1iZXIgMywgTWFyY2gsIDE5NzMKCiAgICAgICAgIFJpY2hhcmQgSC4gQXVzdGluZyBhbmQgICAKICAgICAgICAgICAgICAgIEdlcmFsZCBMLiBFbmdlbCAgIEEgQ29tcHV0ZXIgU2NpZW5jZSBDb3Vyc2UgUHJvZ3JhbSBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNtYWxsIENvbGxlZ2VzIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMTM5LS0xNDcKICAgICAgICAgICAgICAgUm9iZXJ0IEEuIFdhZ25lciAgIENvbW1vbiBQaHJhc2VzIGFuZCBNaW5pbXVtLVNwYWNlIFRleHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JhZ2UgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMTQ4LS0xNTIKICAgICAgICAgICAgICAgIFkuIEZlaW5yb3RoIGFuZCAgIAogICAgICAgICAgICBFLiBGcmFuY2VzY2hpbmkgYW5kICAgCiAgICAgICAgICAgICAgICAgICBNLiBHb2xkc3RlaW4gICBUZWxlY29tbXVuaWNhdGlvbnMgVXNpbmcgYSBGcm9udC1FbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1pbmljb21wdXRlciAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMTUzLS0xNjAKICAgICAgICAgICAgICAgIENoYXJsZXMgRC4gUGFjayAgIFRoZSBFZmZlY3RzIG9mIE11bHRpcGxleGluZyBvbiBhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21wdXRlci1Db21tdW5pY2F0aW9ucyBTeXN0ZW0gLiAuIC4gLiAuIDE2MS0tMTY4CiAgICAgICAgICBSaWNoYXJkIFcuIENvbndheSBhbmQgICAKICAgICAgICAgICAgICAgVGhvbWFzIFIuIFdpbGNveCAgIERlc2lnbiBhbmQgSW1wbGVtZW50YXRpb24gb2YgRGlhZ25vc3RpYwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tcGlsZXIgZm9yIFBML0kgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAxNjktLTE3OQogICAgICAgICAgICAgICAgICAgSC4gRS4gU2FsemVyICAgR3JheSBjb2RlIGFuZCB0aGUgK29yLXNpZ24gc2VxdWVuY2Ugd2hlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK29yLWYoK29yLWYoK29yLWYoIC4gLiArb3ItZih4KSAuIC4gLikpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgb3JkZXJlZCAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAxODAtLTE4MAogICAgICAgICAgICAgIEFicmFoYW0gQm9va3N0ZWluICAgT24gSGFycmlzb24ncyBTdWJzdHJpbmcgVGVzdGluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVjaG5pcXVlICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAxODAtLTE4MQogICAgICAgICAgICAgICAgICAgIFcuIEguIFBheW5lICAgR3JhZHVhdGUgRWR1Y2F0aW9uOiBUaGUgUGguRC4gR2x1dCAuIC4gLiAxODEtLTE4MgogICAgICAgICAgICAgICAgICAgUi4gQS4gV2FnbmVyICAgQUNNIEFsZ29yaXRobSA0NDQ6IEFuIEFsZ29yaXRobSBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4dHJhY3RpbmcgUGhyYXNlcyBpbiBhIFNwYWNlLU9wdGltYWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhc2hpb24gIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMTgzLS0xODUKICAgICAgICAgICAgICAgICAgU2hpLUt1byBDaGFuZyAgIEFDTSBBbGdvcml0aG0gNDQ1OiBCaW5hcnkgUGF0dGVybgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVjb25zdHJ1Y3Rpb24gZnJvbSBQcm9qZWN0aW9ucyAgLiAuIC4gLiAxODUtLTE4NgogICAgICAgICAgICAgICAgICAgICAgICAgSi4gTGF1ICAgQmluYXJ5IHBhdHRlcm4gcmVjb25zdHJ1Y3Rpb24gZnJvbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdGlvbnMgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAxODYtLTE4NgoKQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTQpWb2x1bWUgMTYsICBOdW1iZXIgNCwgQXByaWwsIDE5NzMKCiAgICAgICAgICAgICAgICAgQS4gSGFzc2l0dCBhbmQgICAKICAgICAgICAgIEouIFcuIExhZ2VzY2h1bHRlIGFuZCAgIAogICAgICAgICAgICAgICAgICAgICBMLiBFLiBMeW9uICAgSW1wbGVtZW50YXRpb24gb2YgYSBIaWdoIExldmVsIExhbmd1YWdlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWNoaW5lICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDE5OS0tMjEyCiAgICAgICAgICAgICAgIEpvaG4gRy4gV2lsbGlhbXMgICBBc3ltbWV0cmljIE1lbW9yeSBIaWVyYXJjaGllcyAgLiAuIC4gLiAuIDIxMy0tMjIyCiAgICAgICAgICAgICAgICAgICAgSC4gS3VraSBhbmQgICAKICAgICAgICAgICAgICAgICAgICAgVy4gSi4gQ29keSAgIEEgU3RhdGlzdGljYWwgU3R1ZHkgb2YgdGhlIEFjY3VyYWN5IG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbG9hdGluZyBQb2ludCBOdW1iZXIgU3lzdGVtcyAgLiAuIC4gLiAuIDIyMy0tMjMwCiAgICAgICAgICAgICBXLiBBLiBCdXJraGFyZCBhbmQgICAKICAgICAgICAgICAgICAgICAgIFIuIE0uIEtlbGxlciAgIFNvbWUgQXBwcm9hY2hlcyB0byBCZXN0LU1hdGNoIEZpbGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlYXJjaGluZyAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMjMwLS0yMzYKICAgICAgIEphbWVzIFAuIFN0cm9uZywgSUlJIGFuZCAgIAogICAgICAgICAgICAgICBBenJpZWwgUm9zZW5mZWxkICAgQSByZWdpb24gY29sb3JpbmcgdGVjaG5pcXVlIGZvciBzY2VuZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5hbHlzaXMgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAyMzctLTI0NgogICAgICBKdWFuIFJvZHJpZ3Vlei1Sb3NlbGwgYW5kICAgCiAgICAgICAgICAgICAgSmVhbi1QaWVycmUgRHVwdXkgICBUaGUgZGVzaWduLCBpbXBsZW1lbnRhdGlvbiwgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmFsdWF0aW9uIG9mIGEgd29ya2luZyBzZXQgZGlzcGF0Y2hlciAgIDI0Ny0tMjUzCiAgICAgICAgICAgICAgICAgICAgIFIuIEJyb3Vja2UgICBBQ00gQWxnb3JpdGhtIDQ0NjogVGVuIFN1YnJvdXRpbmVzIGZvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIE1hbmlwdWxhdGlvbiBvZiBDaGVieXNoZXYgU2VyaWVzIC4gLiAyNTQtLTI1NgogICAgICAgICAgICAgIEwuIEMuIFJhZ2xhbmQgYW5kICAgCiAgICAgICAgICAgICAgICAgICAgIEQuIEkuIEdvb2QgICBHcmVhdGVzdCBjb21tb24gZGl2aXNvciBvZiAkbiQgaW50ZWdlcnMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBtdWx0aXBsaWVycyAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMjU3LS0yNTcKCkNvbW11bmljYXRpb25zIG9mIHRoZSBBQ00KVm9sdW1lIDE2LCAgTnVtYmVyIDUsIE1heSwgMTk3MwoKICAgICAgICAgICAgICAgICAgICBEYXZpZCBQYWdlciAgIE9uIHRoZSBQcm9ibGVtIG9mIENvbW11bmljYXRpbmcgQ29tcGxleAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5mb3JtYXRpb24gIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAyNzUtLTI4MQogICAgICAgICAgICAgICAgICAgRGF2aWQgVy4gTG93ICAgUHJvZ3JhbW1pbmcgYnkgUXVlc3Rpb25uYWlyZTogYW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVmZmVjdGl2ZSBXYXkgdG8gVXNlIERlY2lzaW9uIFRhYmxlcyAuIC4gMjgyLS0yODYKICAgICAgICAgICAgICBQLiBKLiBILiBLaW5nIGFuZCAgIAogICAgICAgICAgICAgICAgICBSLiBHLiBKb2huc29uICAgU29tZSBDb21tZW50cyBvbiB0aGUgVXNlIG9mIEFtYmlndW91cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaXNpb24gVGFibGVzIGFuZCBUaGVpciBDb252ZXJzaW9uIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21wdXRlciBQcm9ncmFtcyAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDI4Ny0tMjkwCiAgICAgICAgICAgICAgICAgICBKb2huIFNhbGFzaW4gICBIaWVyYXJjaGljYWwgU3RvcmFnZSBpbiBJbmZvcm1hdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0cmlldmFsICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAyOTEtLTI5NQogICAgICAgICAgICAgIEQuIEcuIENvcm5laWwgYW5kICAgCiAgICAgICAgICAgICAgQy4gQy4gR290bGllYiBhbmQgICAKICAgICAgICAgICAgICAgICAgICAgIFkuIE0uIExlZSAgIE1pbmltYWwgRXZlbnQtTm9kZSBOZXR3b3JrIG9mIFByb2plY3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByZWNlZGVuY2UgUmVsYXRpb25zIC4gLiAuIC4gLiAuIC4gLiAuIC4gMjk2LS0yOTgKICAgICAgICAgICAgICBBbmRyZXcgTWVyY2VyIGFuZCAgIAogICAgICAgICAgICAgICBBenJpZWwgUm9zZW5mZWxkICAgQW4gYXJyYXkgZ3JhbW1hciBwcm9ncmFtbWluZyBzeXN0ZW0gIC4gLiAyOTktLTMwNQogICAgICAgICAgICAgRWR3YXJkIE0uIFJlaW5nb2xkICAgQSBOb25yZWN1cnNpdmUgTGlzdCBNb3ZpbmcgQWxnb3JpdGhtIC4gLiAzMDUtLTMwNwogICAgICAgICAgICAgICAgICAgICAgICAgSC4gVm9zICAgQ291bG9tYiB3YXZlIGZ1bmN0aW9ucyAuIC4gLiAuIC4gLiAuIC4gLiAzMDgtLTMwOQogICAgICAgICAgICAgICAgICAgICAgIEcuIEJheWVyICAgTWF4ZmxvdyAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAzMDktLTMwOQogICAgICAgICAgICAgICAgQi4gSG9sbWdyZW4gYW5kICAgCiAgICAgICAgICAgICAgICAgICAgQS4gS29sbSBhbmQgICAKICAgICAgICAgICAgICAgICAgIEQuIE9icmFkb3ZpYyAgIE1pbml0IGFsZ29yaXRobSBmb3IgbGluZWFyIHByb2dyYW1taW5nICAgMzEwLS0zMTAKICAgICAgICAgICAgICAgICAgIEQuIE9icmFkb3ZpYyAgIE1pbml0IGFsZ29yaXRobSBmb3IgbGluZWFyIHByb2dyYW1taW5nICAgMzEwLS0zMTAKICAgICAgICAgICAgICAgICAgIEouIEEuIEhvd2VsbCAgIEV4YWN0IHNvbHV0aW9uIG9mIGxpbmVhciBlcXVhdGlvbnMgdXNpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2lkdWUgYXJpdGhtZXRpYyAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMzExLS0zMTEKICAgICAgICAgICAgICAgICAgQS4gSC4gSi4gU2FsZSAgIEEgc3BhcnNlIG1hdHJpeCBwYWNrYWdlICAuIC4gLiAuIC4gLiAuIC4gMzExLS0zMTEKICAgICAgICAgICAgICAgICAgUi4gRS4gV2hlZWxlciAgIEluY3JlYXNpbmcgdGhlIGVmZmljaWVuY3kgb2YgcXVpY2tzb3J0ICAgMzExLS0zMTEKICAgICAgICAgICAgICAgICAgICAgIE0uIEsuIFJveSAgIFJlZmxlY3Rpb24tZnJlZSBwZXJtdXRhdGlvbnMsIHJvc2FyeQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVybXV0YXRpb25zIGFuZCBhZGphY2VudCB0cmFuc3Bvc2l0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGdvcml0aG1zIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDMxMi0tMzEyCiAgICAgICAgICAgICAgICAgQy4gSC4gTWNNb3Jyb3cgICBDb25jZXJuaW5nIG11c2ljIGFuZCBjb21wdXRlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9zaXRpb24gaW4gY29tcHV0YXRpb25hbCBsaW5ndWlzdGljcyAzMTMtLTMxMwogICAgICAgICAgICAgICAgUi4gTC4gV2V4ZWxibGF0ICAgQW5vdGhlciBjb21tZW50IG9uIGNvbXB1dGVyIG11c2ljICAuIC4gLiAzMTMtLTMxNAogICAgICAgICAgICAgICAgICAgUi4gRy4gRXN0ZWxsICAgQSBjb21tZW50IG9uIHRoZSBwcmFjdGljYWwgYXNwZWN0cyBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHV0ZXIgc2NpZW5jZSBlZHVjYXRpb24gLiAuIC4gLiAuIC4gLiAzMTQtLTMxNQogICAgICAgICAgICAgICBSb2dlciBGYWptYW4gYW5kICAgCiAgICAgICAgICAgICAgICAgICBKb2huIEJvcmdlbHQgICBXWUxCVVIsIEFuIEludGVyYWN0aXZlIFRleHQgRWRpdGluZyBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbW90ZSBKb2IgRW50cnkgU3lzdGVtICAuIC4gLiAuIC4gLiAuIC4gMzE0LS0zMjIKICAgICAgICAgICAgICBEZW5uaXMgSi4gRnJhaWxleSAgIEEgUHJhY3RpY2FsIEFwcHJvYWNoIHRvIE1hbmFnaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZXMgYW5kIEF2b2lkaW5nIERlYWRsb2NrcyAuIC4gLiAuIDMyMy0tMzI5CgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSAxNiwgIE51bWJlciA2LCBKdW5lLCAxOTczCgogICAgICAgICAgICAgICAgICAgUi4gRy4gSGFtbGV0ICAgRWZmaWNpZW50IG11bHRpcHJvZ3JhbW1pbmcgcmVzb3VyY2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG9jYXRpb24gYW5kIGFjY291bnRpbmcgIC4gLiAuIC4gLiAuIC4gMzM3LS0zNDIKICAgICAgICAgICAgICAgICBFLiBHZWxlbmJlIGFuZCAgIAogICAgICAgICBKLiBDLiBBLiBCb2VraG9yc3QgYW5kICAgCiAgICAgICAgICAgICAgIEouIEwuIFcuIEtlc3NlbHMgICBNaW5pbWl6aW5nIHdhc3RlZCBzcGFjZSBpbiBwYXJ0aXRpb25lZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VnbWVudGF0aW9uIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAzNDMtLTM0OQogICAgICAgICAgICAgICAgICAgICBKLiBDLiBIaWxsICAgU3luY2hyb25pemluZyBwcm9jZXNzb3JzIHdpdGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeS1jb250ZW50LWdlbmVyYXRlZCBpbnRlcnJ1cHRzICAuIC4gMzUwLS0zNTEKICAgICAgICAgICAgSGFyb2xkIFMuIFN0b25lIGFuZCAgIAogICAgICAgICAgICAgICBTYW11ZWwgRi4gRnVsbGVyICAgT24gdGhlIE5lYXItT3B0aW1hbGl0eSBvZiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNob3J0ZXN0LUxhdGVuY3ktVGltZS1GaXJzdCBEcnVtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTY2hlZHVsaW5nIERpc2NpcGxpbmUgIC4gLiAuIC4gLiAuIC4gLiAuIDM1Mi0tMzUzCiAgICAgICAgICAgICAgUC4gRi4gU3RvY2toYXVzZW4gICBBZGFwdGluZyBvcHRpbWFsIGNvZGUgZ2VuZXJhdGlvbiBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaXRobWV0aWMgZXhwcmVzc2lvbnMgdG8gdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbiBzZXRzIGF2YWlsYWJsZSBvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2VudC1kYXkgY29tcHV0ZXJzICAuIC4gLiAuIC4gLiAuIC4gLiAzNTMtLTM1NAogICAgICAgICAgICAgICAgICAgICBSLiBGLiBMaW5nICAgQSBjb21wdXRlciBnZW5lcmF0ZWQgYWlkIGZvciBjbHVzdGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmFseXNpcyAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDM1NS0tMzYxCiAgICAgICAgICAgICAgICBCZW4gU2huZWlkZXJtYW4gICBPcHRpbXVtIERhdGEgQmFzZSBSZW9yZ2FuaXphdGlvbiBQb2ludHMgIDM2Mi0tMzY1CiAgICAgICAgICAgICAgICAgICAgICBILiBTdHJ1bnogICBUaGUgZGV2ZWxvcG1lbnQgb2YgZGVjaXNpb24gdGFibGVzIHZpYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2luZyBvZiBjb21wbGV4IGRlY2lzaW9uIHNpdHVhdGlvbnMgICAzNjYtLTM2OQogICAgICAgICAgICAgICAgICBKYW1lcyBSLiBCZWxsICAgVGhyZWFkZWQgQ29kZSAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAzNzAtLTM3MgogICAgICAgICAgICAgICAgSi4gSG9wY3JvZnQgYW5kICAgCiAgICAgICAgICAgICAgICAgICAgICBSLiBUYXJqYW4gICBBQ00gQWxnb3JpdGhtIDQ0NzogRWZmaWNpZW50IEFsZ29yaXRobXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBHcmFwaCBNYW5pcHVsYXRpb24gLiAuIC4gLiAuIC4gLiAuIC4gMzcyLS0zNzgKICAgICAgICAgICAgICAgICAgIFQuIEJleWVyIGFuZCAgIAogICAgICAgICAgICAgICAgRC4gRi4gU3dpbmVoYXJ0ICAgQUNNIEFsZ29yaXRobSA0NDg6IE51bWJlciBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTXVsdGlwbHktUmVzdHJpY3RlZCBQYXJ0aXRpb25zIC4gLiAuIC4gLiAzNzktLTM3OQogICAgICAgICAgICAgICAgSi4gRmVyZ3Vzb24gYW5kICAgCiAgICAgICAgICAgICAgICAgICBQLiBBLiBTdGFsZXkgICBMZWFzdCBzcXVhcmVzIHBpZWNld2lzZSBjdWJpYyBjdXJ2ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZml0dGluZyAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAzODAtLTM4MgogICAgICAgICAgICAgICAgICBXLiBELiBIb3NraW5zICAgQ3ViaWMgc3BsaW5lIHNvbHV0aW9ucyB0byBmb3VydGgtb3JkZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5kYXJ5IHZhbHVlIHByb2JsZW1zICAuIC4gLiAuIC4gLiAuIC4gMzgyLS0zODUKICAgICAgICAgICAgICAgRnJhbnogTC4gQWx0IGFuZCAgIAogICAgICAgICAgICAgICBKdWRpdGggWXVuaSBLaXJrICAgQ29tcHV0ZXIgUGhvdG9jb21wb3NpdGlvbiBvZiBUZWNobmljYWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHQgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMzg2LS0zOTEKCkNvbW11bmljYXRpb25zIG9mIHRoZSBBQ00KVm9sdW1lIDE2LCAgTnVtYmVyIDcsIEp1bHksIDE5NzMKCiAgICAgICAgICAgICAgIFJpY2hhcmQgTC4gTm9sYW4gICBNYW5hZ2luZyB0aGUgQ29tcHV0ZXIgUmVzb3VyY2U6IFN0YWdlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIeXBvdGhlc2lzIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDM5OS0tNDA1CiAgICAgICAgICAgICAgICAgICAgSi4gQy4gSHVhbmcgICBBIE5vdGUgb24gSW5mb3JtYXRpb24gT3JnYW5pemF0aW9uIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RvcmFnZSAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA0MDYtLTQxMAogICAgICBFZHdhcmQgVy4gS296ZHJvd2lja2kgYW5kICAgCiAgICAgICAgICAgICAgIERlbm5pcyBXLiBDb29wZXIgICBDT0tPIElJSTogdGhlIENvb3Blci1Lb3ogQ2hlc3MgUHJvZ3JhbSAgIDQxMS0tNDI3IChvciA0MTEtLTQyNj8/KQogICAgICAgICAgICBKb2huIEguIEhvd2FyZCwgSnIuICAgTWl4ZWQgU29sdXRpb25zIGZvciB0aGUgRGVhZGxvY2sgUHJvYmxlbSA0MjctLTQzMAogICAgICAgICAgICAgICAgICAgRXJvbCBHZWxlbmJlICAgRGlzdHJpYnV0aW9uIG9mIGEgUHJvZ3JhbSBpbiBQcmltYXJ5IGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmFzdCBCdWZmZXIgU3RvcmFnZSAgLiAuIC4gLiAuIC4gLiAuIC4gLiA0MzEtLTQzNAogICAgICAgICAgICAgICAgUm9iZXJ0IEYuIFJvc2luICAgVGVhY2hpbmcgYGBBYm91dCBQcm9ncmFtbWluZycnIC4gLiAuIC4gLiA0MzUtLTQzOQogICAgICAgICBGLiBXYXJyZW4gTWNGYXJsYW4gYW5kICAgCiAgICAgICAgICAgICAgIFJpY2hhcmQgTC4gTm9sYW4gICBDdXJyaWN1bHVtIFJlY29tbWVuZGF0aW9ucyBmb3IgR3JhZHVhdGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2Zlc3Npb25hbCBQcm9ncmFtcyBpbiBJbmZvcm1hdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtczogUmVjb21tZW5kZWQgQWRkZW5kdW0gb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZm9ybWF0aW9uIFN5c3RlbXMgQWRtaW5pc3RyYXRpb24gLiAuIC4gNDM5LS00NDIgKG9yIDQzOS0tNDQxPz8pCiAgICAgICAgICAgICAgICAgICAgICBBLiBLYW5kZWwgICBDb21wdXRlciBTY2llbmNlIC0tLSBTZW1pbmFycyBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuZGVyZ3JhZHVhdGVzIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNDQyLS00NDIKICAgICAgICAgICAgICAgICBHLiBWLiBCb2NobWFubiAgIE11bHRpcGxlIEV4aXRzIGZyb20gYSBMb29wIFdpdGhvdXQgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHT1RPIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDQ0My0tNDQ0CiAgICAgICAgICAgICBQYXRyaWNrIEEuIFYuIEhhbGwgICBFcXVpdmFsZW5jZSBCZXR3ZWVuIEFORC9PUiBHcmFwaHMgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZXh0LUZyZWUgR3JhbW1hcnMgIC4gLiAuIC4gLiAuIC4gLiAuIDQ0NC0tNDQ1CiAgICAgICAgICAgICAgICAgICAgICAgRi4gRmlhbGEgICBBQ00gQWxnb3JpdGhtIDQ0OTogU29sdXRpb24gb2YgTGluZWFyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9ncmFtbWluZyBQcm9ibGVtcyBpbiAwLTEgVmFyaWFibGVzICAgIDQ0NS0tNDQ4IChvciA0NDUtLTQ0Nz8/KQogICAgICAgICAgICAgICAgQi4gVy4gS2VybmlnaGFuICAgUmVtYXJrIG9uIGBgQWxnb3JpdGhtIDQyMjogTWluaW1hbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3Bhbm5pbmcgVHJlZScnICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA0NDgtLTQ0OAogICAgICAgICAgIEkuIEQuIEcuIE1hY2xlb2QgYW5kICAgCiAgICAgICAgICAgICAgICAgIEEuIE0uIENvbGxpbnMgICBIaWRkZW4tbGluZSBwbG90dGluZyBwcm9ncmFtIC4gLiAuIC4gLiAuIDQ0OC0tNDQ4CiAgICAgICAgICAgICAgICAgIFAuIEouIE5pa29sYWkgICBESUZTVUIgZm9yIHNvbHV0aW9uIG9mIG9yZGluYXJ5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWZmZXJlbnRpYWwgZXF1YXRpb25zIC4gLiAuIC4gLiAuIC4gLiAuIDQ0OC0tNDQ4CgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSAxNiwgIE51bWJlciA4LCBBdWd1c3QsIDE5NzMKCiAgICAgICAgICAgICAgIE1pY2hhZWwgSC4gU21pdGggICBBIGxlYXJuaW5nIHByb2dyYW0gd2hpY2ggcGxheXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRuZXJzaGlwIGRvbWlub2VzIC4gLiAuIC4gLiAuIC4gLiAuIC4gNDYyLS00NjcKICAgICAgICAgICAgICAgIEIuIEouIE1hY0xlbm5hbiAgIEZlbiAtLS0gYW4gQXhpb21hdGljIEJhc2lzIGZvciBQcm9ncmFtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZW1hbnRpY3MgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDQ2OC0tNDc0CiAgICAgICAgICAgICAgICAgIERhdmlkIE1pc3VuYXMgICBQZXRyaSBOZXRzIGFuZCBTcGVlZCBJbmRlcGVuZGVudCBEZXNpZ24gIDQ3NC0tNDgyIChvciA0NzQtLTQ4MT8/KQogICAgICAgICAgICAgICAgIE0uIE1hY0h1cmEgYW5kICAgCiAgICAgICAgICAgICAgICAgICAgICBBLiBNdWxhd2EgICBBQ00gQWxnb3JpdGhtIDQ1MDogUm9zZW5icm9jayBGdW5jdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWluaW1pemF0aW9uIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA0ODItLTQ4MwogICAgICAgICAgICAgICAgUi4gQi4gR29sZHN0ZWluICAgQUNNIEFsZ29yaXRobSA0NTE6IENoaS1TcXVhcmUgUXVhbnRpbGVzICA0ODMtLTQ4NQogICAgICAgICAgICAgICAgICBDLiBOLiBMaXUgYW5kICAgCiAgICAgICAgICAgICAgICAgICAgIEQuIFQuIFRhbmcgICBBQ00gQWxnb3JpdGhtIDQ1MjogRW51bWVyYXRpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbWJpbmF0aW9ucyBvZiAkbSQgT3V0IG9mICRuJCBPYmplY3RzICAgNDg1LS00ODUKICAgICAgICAgICAgICAgIFJvYmVydCBQaWVzc2VucyAgIEFDTSBBbGdvcml0aG0gNDUzOiBHYXVzc2lhbiBRdWFkcmF0dXJlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtdWxhcyBmb3IgQnJvbXdpY2gncyBJbnRlZ3JhbCAuIC4gLiAuIDQ4Ni0tNDg3CiAgICAgICAgICAgSi4gQS4gUmljaGFyZHNvbiBhbmQgICAKICAgICAgICAgICAgICAgICAgSi4gTC4gS3Vlc3RlciAgIEFDTSBBbGdvcml0aG0gNDU0OiBUaGUgQ29tcGxleCBNZXRob2QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBDb25zdHJhaW5lZCBPcHRpbWl6YXRpb24gLiAuIC4gLiAuIC4gNDg3LS00ODkKICAgICAgICAgICAgICBHLiBBbmRyZWprb3ZhIGFuZCAgIAogICAgICAgICAgICAgICAgICAgICAgIEouIFZpbmFyICAgQ29tcGxleCBnYW1tYSBmdW5jdGlvbiAuIC4gLiAuIC4gLiAuIC4gLiA0ODktLTQ4OQogICAgICAgICAgICAgICAgUi4gTS4gRGUgTW9yZ2FuICAgUmVtYXJrIG9uIGBgQWxnb3JpdGhtIDM1NyBbQTFdOiBBbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWZmaWNpZW50IFByaW1lIE51bWJlciBHZW5lcmF0b3InJyAuIC4gLiA0ODktLTQ4OQogICAgICAgICAgICAgICAgICBSLiBQLiBXYXRraW5zICAgR3JhcGggcGxvdHRlciAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA0ODktLTQ5MAogICAgICAgICAgICAgICAgICAgIEouIEcuIEJ5cm5lICAgSHUtVHVja2VyIG1pbmltdW0gcmVkdW5kYW5jeSBhbHBoYWJldGljCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RpbmcgbWV0aG9kICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDQ5MC0tNDkwCiAgICAgICAgICAgICAgICAgICAgIEEuIEouIEdvb2QgICBDbGVuc2hhdy1DdXJ0aXMgcXVhZHJhdHVyZSAuIC4gLiAuIC4gLiAuIDQ5MC0tNDkwCiAgICAgICAgICAgICAgICAgRS4gSi4gV2lsbGlhbXMgICBMb2NhbGl6YXRpb24gb2YgdGhlIHJvb3RzIG9mIGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbHlub21pYWwgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNDkwLS00OTAKICAgICAgICAgICAgICAgIFpvaGFyIE1hbm5hIGFuZCAgIAogICAgICAgICAgICAgICBTdGVwaGVuIE5lc3MgYW5kICAgCiAgICAgICAgICAgICAgICAgSmVhbiBWdWlsbGVtaW4gICBJbmR1Y3RpdmUgTWV0aG9kcyBmb3IgUHJvdmluZyBQcm9wZXJ0aWVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBQcm9ncmFtcyAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDQ5MS0tNTAyCiAgICAgICAgICAgICBXLiBXLiBQZXRlcnNvbiBhbmQgICAKICAgICAgICAgICAgICAgICAgVC4gS2FzYW1pIGFuZCAgIAogICAgICAgICAgICAgICAgICAgICAgTi4gVG9rdXJhICAgT24gdGhlIENhcGFiaWxpdGllcyBvZiBXaGlsZSwgUmVwZWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIEV4aXQgU3RhdGVtZW50cyAgLiAuIC4gLiAuIC4gLiAuIC4gLiA1MDMtLTUxMgogICAgICAgICAgICAgICBDYXh0b24gQy4gRm9zdGVyICAgQSBHZW5lcmFsaXphdGlvbiBvZiBBVkwgVHJlZXMgIC4gLiAuIC4gLiA1MTMtLTUxNwoKQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTQpWb2x1bWUgMTYsICBOdW1iZXIgOSwgU2VwdGVtYmVyLCAxOTczCgogICAgICAgICAgICAgICBKZWZmcmV5IFAuIEJ1emVuICAgQ29tcHV0YXRpb25hbCBBbGdvcml0aG1zIGZvciBDbG9zZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXVlaW5nIE5ldHdvcmtzIHdpdGggRXhwb25lbnRpYWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlcnZlcnMgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNTI3LS01MzEKICAgICAgICAgICAgICAgUy4gR2FuYXBhdGh5IGFuZCAgIAogICAgICAgICAgICAgICAgICAgVi4gUmFqYXJhbWFuICAgSW5mb3JtYXRpb24gVGhlb3J5IEFwcGxpZWQgdG8gdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb252ZXJzaW9uIG9mIERlY2lzaW9uIFRhYmxlcyB0bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHV0ZXIgUHJvZ3JhbXMgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA1MzItLTUzOQogICAgICAgICAgICBBbGZvbnNvIEYuIENhcmRlbmFzICAgRXZhbHVhdGlvbiBhbmQgU2VsZWN0aW9uIG9mIEZpbGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yZ2FuaXphdGlvbiAtLS0gQSBNb2RlbCBhbmQgYSBTeXN0ZW0gICAgNTQwLS01NDgKICAgICAgICAgICAgICAgICAgICBSLiBHLiBDYXNleSAgIERlc2lnbiBvZiBUcmVlIFN0cnVjdHVyZXMgZm9yIEVmZmljaWVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXVlcnlpbmcgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA1NDktLTU1NgogICAgICAgICAgSnVhbiBSb2RyaWd1ZXotUm9zZWxsICAgRW1waXJpY2FsIFdvcmtpbmcgU2V0IEJlaGF2aW9yIC4gLiAuIC4gLiA1NTYtLTU2MAogICAgICAgICAgR2VvZmZyZXkgVy4gR2F0ZXMgYW5kICAgCiAgICAgICAgICAgICBEYXZpZCBBLiBQb3BsYXdza2kgICBBIHNpbXBsZSB0ZWNobmlxdWUgZm9yIHN0cnVjdHVyZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGxvb2t1cCAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNTYxLS01NjUKICAgICAgICAgICAgICAgIE0uIFYuIFplbGtvd2l0eiAgIFJldmVyc2libGUgRXhlY3V0aW9uIC4gLiAuIC4gLiAuIC4gLiAuIC4gNTY2LS01NjYKICAgICAgICAgUm9iZXJ0IEUuIEJhcm5oaWxsIGFuZCAgIAogICAgICAgICAgICAgICBEYXZpZCBULiBQaWxjaGVyICAgU2FyZCBrZXJuZWxzIGZvciBjZXJ0YWluIGJpdmFyaWF0ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3ViYXR1cmVzICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA1NjctLTU3MSAob3IgNTY3LS01NzA/PykKICAgICAgICAgICAgICAgRC4gQi4gSHVudGVyIGFuZCAgIAogICAgICAgICAgICAgICAgIEouIE0uIFdpbGxpYW1zICAgQUNNIEFsZ29yaXRobSA0NTU6IEFuYWx5c2lzIG9mIFNrZXcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcHJlc2VudGF0aW9ucyBvZiB0aGUgU3ltbWV0cmljIEdyb3VwICAgNTcxLS01NzIKICAgICAgICAgICAgICAgICBaZGVuXHZlayBGZW5jbCAgIEFDTSBBbGdvcml0aG0gNDU2OiBSb3V0aW5nIFByb2JsZW0gLiAuIC4gNTcyLS01NzQKICAgICAgICAgICAgICAgICAgQ29lbiBCcm9uIGFuZCAgIAogICAgICAgICAgICAgICAgICBKb2VwIEtlcmJvc2NoICAgQUNNIEFsZ29yaXRobSA0NTc6IEZpbmRpbmcgQWxsIENsaXF1ZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIGFuIFVuZGlyZWN0ZWQgR3JhcGggLiAuIC4gLiAuIC4gLiAuIC4gNTc1LS01NzcKICAgICAgICAgICAgICAgICAgICAgIE0uIEsuIFJveSAgIFJlbWFyayBvbiBgYEFsZ29yaXRobSAzMjMgW0c2XToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRpb24gb2YgUGVybXV0YXRpb25zIGluCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZXhpY29ncmFwaGljIE9yZGVyJycgIC4gLiAuIC4gLiAuIC4gLiAuIDU3Ny0tNTc4CiAgICAgICAgICAgICAgICBNb2hpdCBLdW1hciBSb3kgICBSZW1hcmsgb24gYGBBbGdvcml0aG0gMzIzIFtHNl06CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0aW9uIG9mIFBlcm11dGF0aW9ucyBpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGV4aWNvZ3JhcGhpYyBPcmRlcicnICAuIC4gLiAuIC4gLiAuIC4gLiA1NzctLTU3OAogICAgICAgICAgICAgICAgIEUuIEUuIExhd3JlbmNlICAgQSBzcGFyc2UgbWF0cml4IHBhY2thZ2UuIEkgLiAuIC4gLiAuIC4gLiA1NzgtLTU3OAogICAgICAgICAgICAgICAgICBILiBXaWxsaWFtc29uICAgSGlkZGVuLWxpbmUgcGxvdHRpbmcgcHJvZ3JhbSAuIC4gLiAuIC4gLiA1NzgtLTU3OQogICAgICAgICAgICAgSC4gQi4gRHJpZXNzZW4gYW5kICAgCiAgICAgICAgICAgICAgICBFLiBXLiBMZU0uIEh1bnQgICBMb2NhbGl6YXRpb24gb2YgdGhlIHJvb3RzIG9mIGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbHlub21pYWwgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNTc5LS01NzkKCkNvbW11bmljYXRpb25zIG9mIHRoZSBBQ00KVm9sdW1lIDE2LCAgTnVtYmVyIDEwLCBPY3RvYmVyLCAxOTczCgogICAgICAgICAgICAgIEpvaG4gUy4gTWNHZWFjaGllICAgTXVsdGlwbGUgVGVybWluYWxzIFVuZGVyIFVzZXIgUHJvZ3JhbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udHJvbCBpbiBhIFRpbWUtU2hhcmluZyBFbnZpcm9ubWVudCAgICA1ODctLTU5MAogICAgICAgICAgIERhbmllbCBHLiBCb2Jyb3cgYW5kICAgCiAgICAgICAgICAgICAgICAgICBCZW4gV2VnYnJlaXQgICBBIE1vZGVsIGFuZCBTdGFjayBJbXBsZW1lbnRhdGlvbiBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTXVsdGlwbGUgRW52aXJvbm1lbnRzICAuIC4gLiAuIC4gLiAuIC4gLiA1OTEtLTYwMwogICAgICAgICAgICAgICAgIFZpbmNlbnQgWS4gTHVtICAgR2VuZXJhbCBQZXJmb3JtYW5jZSBBbmFseXNpcyBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS2V5LXRvLUFkZHJlc3MgVHJhbnNmb3JtYXRpb24gTWV0aG9kcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNpbmcgYW4gQWJzdHJhY3QgRmlsZSBDb25jZXB0IC4gLiAuIC4gLiA2MDMtLTYxMgogICAgICAgICAgICAgIEJ1dGxlciBXLiBMYW1wc29uICAgQSBOb3RlIG9uIHRoZSBDb25maW5lbWVudCBQcm9ibGVtICAuIC4gLiA2MTMtLTYxNQogICAgICAgICAgIERhbmllbCBTLiBIaXJzY2hiZXJnICAgQSBDbGFzcyBvZiBEeW5hbWljIE1lbW9yeSBBbGxvY2F0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGdvcml0aG1zIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDYxNS0tNjE4CiAgICAgICAgICAgICAgIEJhcnRvbiBHLiBQcmlldmUgICBVc2luZyBQYWdlIFJlc2lkZW5jeSB0byBTZWxlY3QgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JraW5nIFNldCBQYXJhbWV0ZXIgIC4gLiAuIC4gLiAuIC4gLiAuIDYxOS0tNjIwCiAgICAgICAgICAgIFJvYmVydCBFLiBNaWxsc3RlaW4gICBDb250cm9sIFN0cnVjdHVyZXMgaW4gSWxsaWFjIElWIEZvcnRyYW4gIDYyMS0tNjI3CiAgICAgICAgICAgICAgIFAuIEQuIFJvYmVycyBhbmQgICAKICAgICAgICAgICAgICAgICAgIFMuIFMuIFJvYmVycyAgIEFDTSBBbGdvcml0aG0gNDU4OiBEaXNjcmV0ZSBMaW5lYXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7TH1fMSQgQXBwcm94aW1hdGlvbiBieSBJbnRlcnZhbCBMaW5lYXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2dyYW1taW5nICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNjI5LS02MzEKICAgICAgICAgICAgICAgICAgICBNLiBNLiBTeXNsbyAgIEFDTSBBbGdvcml0aG0gNDU5OiBUaGUgRWxlbWVudGFyeQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2lyY3VpdHMgb2YgYSBHcmFwaCAgLiAuIC4gLiAuIC4gLiAuIC4gLiA2MzItLTYzMwogICAgICAgICAgICAgUGF1bCBFLiBTYXlsb3IgYW5kICAgCiAgICAgICAgICAgICBKYW1lcyBELiBTZWJhc3RpYW4gICBBQ00gQWxnb3JpdGhtIDQ2MDogQ2FsY3VsYXRpb24gb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGltdW0gUGFyYW1ldGVycyBmb3IgQWx0ZXJuYXRpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpcmVjdGlvbiBJbXBsaWNpdCBQcm9jZWR1cmVzICAuIC4gLiAuIC4gNjMzLS02MzUKICAgICAgICAgICAgRi4gSi4gQnVya293c2tpIGFuZCAgIAogICAgICAgICAgICAgICAgICBXLiBELiBIb3NraW5zICAgQUNNIEFsZ29yaXRobSA0NjE6IEN1YmljIFNwbGluZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29sdXRpb25zIHRvIGEgQ2xhc3Mgb2YgRnVuY3Rpb25hbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlmZmVyZW50aWFsIEVxdWF0aW9ucyAuIC4gLiAuIC4gLiAuIC4gLiA2MzUtLTYzNwogICAgICAgICAgICAgICAgIFQuIEcuIERvbm5lbGx5ICAgQUNNIEFsZ29yaXRobSA0NjI6IEJpdmFyaWF0ZSBOb3JtYWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpc3RyaWJ1dGlvbiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNjM4LS02MzgKICAgICAgICAgICAgICAgICAgIEMuIFIuIExld2FydCAgIEFDTSBBbGdvcml0aG0gNDYzOiBBbGdvcml0aG1zIFNDQUxFMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNDQUxFMiwgYW5kIFNDQUxFMyBmb3IgRGV0ZXJtaW5hdGlvbiBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2NhbGVzIG9uIENvbXB1dGVyIEdlbmVyYXRlZCBQbG90cyAuIC4gLiA2MzktLTY0MAoKQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTQpWb2x1bWUgMTYsICBOdW1iZXIgMTEsIE5vdmVtYmVyLCAxOTczCgogICAgICAgICAgICAgQ2hhcmxlcyBXLiBCYWNobWFuICAgVGhlIFByb2dyYW1tZXIgYXMgTmF2aWdhdG9yICAuIC4gLiAuIC4gLiA2NTMtLTY1OAogICAgICAgICAgICAgICAgICAgIFIuIFMuIEZhYnJ5ICAgRHluYW1pYyBWZXJpZmljYXRpb24gb2YgT3BlcmF0aW5nIFN5c3RlbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaXNpb25zICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA2NTktLTY2OAogICAgICAgICAgICAgTS4gRC4gTWlja3VuYXMgYW5kICAgCiAgICAgICAgICAgICAgICBWLiBCLiBTY2huZWlkZXIgICBQYXJzZXItR2VuZXJhdGluZyBTeXN0ZW0gZm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25zdHJ1Y3RpbmcgQ29tcHJlc3NlZCBDb21waWxlcnMgIC4gLiAuIDY2OS0tNjc2CiAgICAgICAgICBCLiBXLiBKb3JkYW4sIEpyLiBhbmQgICAKICAgICAgICAgICAgICAgICAgUi4gQy4gQmFycmV0dCAgIFNjYW4gQ29udmVyc2lvbiBBbGdvcml0aG0gd2l0aCBSZWR1Y2VkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdG9yYWdlIFJlcXVpcmVtZW50cyAuIC4gLiAuIC4gLiAuIC4gLiAuIDY3Ni0tNjgyCiAgICAgICAgICAgIEphbWVzIFIuIFNsYWdsZSBhbmQgICAKICAgICAgICAgICAgICAgIExld2lzIE0uIE5vcnRvbiAgIEV4cGVyaW1lbnRzIHdpdGggYW4gQXV0b21hdGljCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGVvcmVtLVByb3ZlciBIYXZpbmcgUGFydGlhbCBPcmRlcmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5mZXJlbmNlIFJ1bGVzICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA2ODItLTY4OAogICAgICAgICAgICAgICAgICBDLiBILiBSZWluc2NoICAgQUNNIEFsZ29yaXRobSA0NjQ6IEVpZ2VudmFsdWVzIG9mIGEgUmVhbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3ltbWV0cmljIFRyaWRpYWdvbmFsIE1hdHJpeCAuIC4gLiAuIC4gLiA2ODktLTY4OQogICAgICAgICAgICAgICAgICAgICBHLiBXLiBIaWxsICAgQUNNIEFsZ29yaXRobSA0NjU6IFN0dWRlbnQncyAkdCQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyZXF1ZW5jeSAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNjkwLS02OTAKICAgICAgICAgICAgICAgICAgICAgRy4gRWhybGljaCAgIEFDTSBBbGdvcml0aG0gNDY2OiBGb3VyIENvbWJpbmF0b3JpYWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsZ29yaXRobXMgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNjkwLS02OTEKICAgICAgICAgICAgICAgICAgICAgTi4gQnJlbm5lciAgIEFDTSBBbGdvcml0aG0gNDY3OiBNYXRyaXggVHJhbnNwb3NpdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gUGxhY2UgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA2OTItLTY5NAogICAgICAgICAgICAgVC4gTi4gTC4gUGF0dGVyc29uICAgQUNNIEFsZ29yaXRobSA0Njg6IEFsZ29yaXRobSBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1dG9tYXRpYyBOdW1lcmljYWwgSW50ZWdyYXRpb24gT3ZlciBhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaW5pdGUgSW50ZXJ2YWwgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDY5NC0tNjk5CiAgICAgICAgICAgICAgICAgICAgIEMuIExhbSBhbmQgICAKICAgICAgICAgICAgICAgICAgICAgICBKLiBNY0theSAgIEFDTSBBbGdvcml0aG0gNDY5OiBBcml0aG1ldGljIE92ZXIgYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmluaXRlIEZpZWxkIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA2OTktLTY5OQogICAgICAgICAgIFBldGVyIEouIERlbm5pbmcgYW5kICAgCiAgICAgICAgICAgICAgICBHLiBTY290dCBHcmFoYW0gICBBIE5vdGUgb24gU3ViZXhwcmVzc2lvbiBPcmRlcmluZyBpbiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4ZWN1dGlvbiBvZiBBcml0aG1ldGljIEV4cHJlc3Npb25zICAuIC4gNzAwLS03MDIKICAgICAgICAgIEplcm9tZSBBLiBGZWxkbWFuIGFuZCAgIAogICAgICAgICAgICAgICBKYW1lcyBSLiBMb3cgYW5kICAgCiAgICAgICAgICAgICAgICAgICAgUi4gUC4gQnJlbnQgICBDb21tZW50IG9uIEJyZW50J3Mgc2NhdHRlciBzdG9yYWdlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGdvcml0aG0gKGFuZCBhdXRob3IncyByZXBseSkgLiAuIC4gLiAuIDcwMy0tNzAzCiAgICAgICAgICAgICAgICAgICAgICBFLiBXZWduZXIgICBUcmVlLXN0cnVjdHVyZWQgcHJvZ3JhbXMgLiAuIC4gLiAuIC4gLiAuIDcwNC0tNzA1CiAgICAgICAgICAgICAgSGVyYmVydCBFLiBTYWx6ZXIgICBBIHJlY3VycmVuY2Ugc2NoZW1lIGZvciBjb252ZXJ0aW5nIGZyb20KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uZSBvcnRob2dvbmFsIGV4cGFuc2lvbiBpbnRvIGFub3RoZXIgICAgNzA1LS03MDcKICAgICAgICAgICAgICAgICAgICAgRi4gU3RlbmdlciAgIEFuIGFsZ29yaXRobSBmb3IgdGhlIGFwcHJveGltYXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2x1dGlvbiBvZiBXaWVuZXItSG9wZiBpbnRlZ3JhbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXF1YXRpb25zICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA3MDgtLTcxMAogICAgICAgICAgICAgICAgICBMLiBXLiBFaHJsaWNoICAgU29sdmluZyB0aGUgQmloYXJtb25pYyBFcXVhdGlvbiBpbiBhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTcXVhcmU6IGEgRGlyZWN0IFZlcnN1cyBhIFNlbWlkaXJlY3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1ldGhvZCAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNzExLS03MTQKCkNvbW11bmljYXRpb25zIG9mIHRoZSBBQ00KVm9sdW1lIDE2LCAgTnVtYmVyIDEyLCBEZWNlbWJlciwgMTk3MwoKICAgICAgICAgICAgICAgSi4gRGFuaWVsIENvdWdlciAgIEN1cnJpY3VsdW0gUmVjb21tZW5kYXRpb25zIGZvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5kZXJncmFkdWF0ZSBQcm9ncmFtcyBpbiBJbmZvcm1hdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtcyAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA3MjctLTc0OQogICAgICAgICAgICBFZGdhciBILiBTaWJsZXkgYW5kICAgCiAgICAgICAgICAgICAgIFJvYmVydCBXLiBUYXlsb3IgICBBIERhdGEgRGVmaW5pdGlvbiBhbmQgTWFwcGluZyBMYW5ndWFnZSAgIDc1MC0tNzU5CiAgICAgICAgICAgICAgICAgICAgIE0uIEt1YmljZWsgICBBQ00gQWxnb3JpdGhtIDQ3MDogTGluZWFyIFN5c3RlbXMgd2l0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxtb3N0IFRyaWRpYWdvbmFsIE1hdHJpeCAgLiAuIC4gLiAuIC4gLiA3NjAtLTc2MQogICAgICAgICAgICAgICAgICAgIFcuIEdhdXRzY2hpICAgQUNNIEFsZ29yaXRobSA0NzE6IEV4cG9uZW50aWFsIEludGVncmFscyA3NjEtLTc2MwogICAgICAgICAgICAgIEouIEcuIEhlcnJpb3QgYW5kICAgCiAgICAgICAgICAgICAgICAgIEMuIEguIFJlaW5zY2ggICBBQ00gQWxnb3JpdGhtIDQ3MjogUHJvY2VkdXJlcyBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hdHVyYWwgU3BsaW5lIEludGVycG9sYXRpb24gLiAuIC4gLiAuIC4gNzYzLS03NjgKCkNvbW11bmljYXRpb25zIG9mIHRoZSBBQ00KVm9sdW1lIDE3LCAgTnVtYmVyIDEsIEphbnVhcnksIDE5NzQKCiAgICAgICAgICAgICAgICAgICAgICAgIEcuIEx5b24gICBTeW50YXgtZGlyZWN0ZWQgbGVhc3QtZXJyb3JzIGFuYWx5c2lzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgY29udGV4dC1mcmVlIGxhbmd1YWdlczogYSBwcmFjdGljYWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcHJvYWNoIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMy0tMTQKICAgICAgICAgTWljaGFlbCBBLiBNYWxjb2xtIGFuZCAgIAogICAgICAgICAgICAgICAgICAgIEpvaG4gUGFsbWVyICAgQSBGYXN0IE1ldGhvZCBGb3IgU29sdmluZyBhIENsYXNzIG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmlkaWFnb25hbCBTeXN0ZW1zIG9mIExpbmVhciBFcXVhdGlvbnMgIDE0LS0xNwogICAgICAgICAgICAgICAgICAgICAgIEguIEFraW1hICAgQSBtZXRob2Qgb2YgYml2YXJpYXRlIGludGVycG9sYXRpb24gYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbW9vdGggc3VyZmFjZSBmaXR0aW5nIGJhc2VkIG9uIGxvY2FsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZWR1cmVzIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDE4LS0yMAogICAgICAgICAgICBOb3JtYW4gRS4gR2liYnMgYW5kICAgCiAgICAgICAgICBXaWxsaWFtIEcuIFBvb2xlLCBKci4gICBUcmlkaWFnb25hbGl6YXRpb24gYnkgUGVybXV0YXRpb25zIC4gLiAuIDIwLS0yNAogICAgICAgICAgICAgICAgICAgIFIuIFBpZXNzZW5zICAgQUNNIEFsZ29yaXRobSA0NzM6IENvbXB1dGF0aW9uIG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZWdlbmRyZSBTZXJpZXMgQ29lZmZpY2llbnRzIC4gLiAuIC4gLiAuIDI1LS0yNQogICAgICAgICAgICAgICAgICAgICAgIEguIEFraW1hICAgQUNNIEFsZ29yaXRobSA0NzQ6IEJpdmFyaWF0ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZXJwb2xhdGlvbiBhbmQgU21vb3RoIFN1cmZhY2UgRml0dGluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFzZWQgb24gTG9jYWwgUHJvY2VkdXJlcyAgLiAuIC4gLiAuIC4gLiAyNi0tMzEKICAgICAgICAgSXZhbiBFLiBTdXRoZXJsYW5kIGFuZCAgIAogICAgICAgICAgICAgICAgR2FyeSBXLiBIb2RnbWFuICAgUmVlbnRyYW50IFBvbHlnb24gQ2xpcHBpbmcgLiAuIC4gLiAuIC4gLiAzMi0tNDIKICAgICAgICAgICAgICBQLiBKLiBILiBLaW5nIGFuZCAgIAogICAgICAgICAgICAgICAgICBSLiBHLiBKb2huc29uICAgQ29tbWVudHMgb24gdGhlIGFsZ29yaXRobXMgb2YgVmVyaGVsc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgY29udmVyc2lvbiBvZiBsaW1pdGVkLWVudHJ5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNpc2lvbiB0YWJsZXMgdG8gZmxvd2NoYXJ0cyAoYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRob3IncyByZXBseSkgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDQzLS00NQogICAgICAgICAgICAgICAgICBHYXJ5IEQuIEtub3R0ICAgQSBOdW1iZXJpbmcgU3lzdGVtIGZvciBDb21iaW5hdGlvbnMgIC4gLiA0NS0tNDYKICAgICAgICAgICAgICAgSC4gQy4gTHVjYXMsIEpyLiAgIEEgQ1JUIHJlcG9ydCBnZW5lcmF0aW5nIHN5c3RlbSAuIC4gLiAuIC4gNDctLTQ4CgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSAxNywgIE51bWJlciAyLCBGZWJydWFyeSwgMTk3NAoKICAgICAgSmFtZXMgQi4gUm90aG5pZSwgSnIuIGFuZCAgIAogICAgICAgICAgICAgICAgICAgVG9tYXMgTG96YW5vICAgQXR0cmlidXRlIEJhc2VkIEZpbGUgT3JnYW5pemF0aW9uIGluIGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhZ2VkIE1lbW9yeSBFbnZpcm9ubWVudCAuIC4gLiAuIC4gLiAuIC4gNjMtLTY5CiAgICAgICAgICBCLiBXLiBKb3JkYW4sIEpyLiBhbmQgICAKICAgICAgICAgICAgICAgICAgUi4gQy4gQmFycmV0dCAgIEEgY2VsbCBvcmdhbml6ZWQgcmFzdGVyIGRpc3BsYXkgZm9yIGxpbmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdpbmdzIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNzAtLTc3CiAgICAgICAgICAgIEpvaG4gUy4gUmFtYmVyZyBhbmQgICAKICAgICAgICAgICAgIEJydWNlIFcuIFNjaG1laXNlciAgIEFuIEFwcHJveGltYXRlIE1ldGhvZCBmb3IgR2VuZXJhdGluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXN5bW1ldHJpYyBSYW5kb20gVmFyaWFibGVzICAuIC4gLiAuIC4gLiA3OC0tODIKICAgICAgICAgICAgICAgICBMZXNsaWUgTGFtcG9ydCAgIFRoZSBQYXJhbGxlbCBFeGVjdXRpb24gb2YgRE8gTG9vcHMgLiAuIC4gODMtLTkzCiAgICAgICAgICAgICAgIEhlbnJ5IEYuIExlZGdhcmQgICBQcm9kdWN0aW9uIFN5c3RlbXM6IG9yIGNhbiB3ZSBkbyBiZXR0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYW4gQk5GPyAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gOTQtLTEwMgogICAgICAgICAgICAgICAgICAgQmVuIFdlZ2JyZWl0ICAgVGhlIFN5bnRoZXNpcyBvZiBMb29wIFByZWRpY2F0ZXMgLiAuIC4gLiAxMDItLTExMgoKQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTQpWb2x1bWUgMTcsICBOdW1iZXIgMywgTWFyY2gsIDE5NzQKCiAgICAgICAgICAgICBLLiBTcmVlbml2YXNhbiBhbmQgICAKICAgICAgICAgICAgICAgICBBLiBKLiBLbGVpbm1hbiAgIE9uIHRoZSBDb25zdHJ1Y3Rpb24gb2YgYSBSZXByZXNlbnRhdGl2ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3ludGhldGljIFdvcmtsb2FkIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAxMjctLTEzMwogICAgICAgICAgICAgICBFLiBCYWxrb3ZpY2ggYW5kICAgCiAgICAgICAgICAgICAgICAgICAgVy4gQ2hpdSBhbmQgICAKICAgICAgICAgICAgICAgICBMLiBQcmVzc2VyIGFuZCAgIAogICAgICAgICAgICAgICAgICAgICAgICBSLiBXb29kICAgRHluYW1pYyBNZW1vcnkgUmVwYWNraW5nIC4gLiAuIC4gLiAuIC4gLiAxMzMtLTEzOAogICAgICAgICAgICAgIEhvd2FyZCBMZWUgTW9yZ2FuICAgT3B0aW1hbCBTcGFjZSBBbGxvY2F0aW9uIG9uIERpc2sgU3RvcmFnZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGV2aWNlcyAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAxMzktLTE0MgogICAgICAgICAgICAgICAgICBSdWRvbGYgTG9lc2VyICAgU29tZSBQZXJmb3JtYW5jZSBUZXN0cyBvZiBgYFF1aWNrc29ydCcnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgRGVzY2VuZGFudHMgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDE0My0tMTUyCiAgICAgICAgICAgICAgICAgICAgICBULiBXcmlnaHQgICBWaXNpYmxlIHN1cmZhY2UgcGxvdHRpbmcgcHJvZ3JhbSAuIC4gLiAuIDE1Mi0tMTU3IChvciAxNTItLTE1NT8/KQogICAgICAgICAgICAgICBOLiBFLiBCb3N0ZW4gYW5kICAgCiAgICAgICAgICAgICAgICAgRS4gTC4gQmF0dGlzdGUgICBJbmNvbXBsZXRlIGJldGEgcmF0aW8gIC4gLiAuIC4gLiAuIC4gLiAuIDE1Ni0tMTU3CiAgICAgICAgICAgICAgUi4gQy4gQmFycmV0dCBhbmQgICAKICAgICAgICAgICAgICBCLiBXLiBKb3JkYW4sIEpyLiAgIFNjYW4gQ29udmVyc2lvbiBBbGdvcml0aG1zIGZvciBhIENlbGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yZ2FuaXplZCBSYXN0ZXIgRGlzcGxheSAuIC4gLiAuIC4gLiAuIC4gMTU3LS0xNjMKICAgICAgICAgICAgICBBLiBGcmFuayBBY2tlcm1hbiAgIFF1YWRyYXRpYyBTZWFyY2ggZm9yIEhhc2ggVGFibGVzIG9mIFNpemUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwXm4kICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMTY0LS0xNjQKICAgICAgICAgICAgICAgIEhhcm9sZCBTLiBTdG9uZSAgIEEgbm90ZSBvbiBhIGNvbWJpbmF0b3JpYWwgcHJvYmxlbSBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVybmV0dCBhbmQgQ29mZm1hbiAgLiAuIC4gLiAuIC4gLiAuIC4gLiAxNjUtLTE2NgogICAgICAgICAgICAgICAgICBGcmVkIFQuIEtyb2doICAgRWZmaWNpZW50IEltcGxlbWVudGF0aW9uIG9mIGEgVmFyaWFibGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2plY3Rpb24gQWxnb3JpdGhtIGZvciBOb25saW5lYXIgTGVhc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNxdWFyZXMgUHJvYmxlbXMgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMTY3LS0xNjkKCkNvbW11bmljYXRpb25zIG9mIHRoZSBBQ00KVm9sdW1lIDE3LCAgTnVtYmVyIDQsIEFwcmlsLCAxOTc0CgogICAgICAgICAgICAgIEplcm9tZSBILiBTYWx0emVyICAgQSBTaW1wbGUgTGluZWFyIE1vZGVsIG9mIERlbWFuZCBQYWdpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBlcmZvcm1hbmNlICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMTgxLS0xODYKICAgICAgICAgICAgIE0uIEEuIEZyYW5rbGluIGFuZCAgIAogICAgICAgICAgICAgICAgICAgIFIuIEsuIEd1cHRhICAgQ29tcHV0YXRpb24gb2YgUGFnZSBGYXVsdCBQcm9iYWJpbGl0eQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSBQcm9ncmFtIFRyYW5zaXRpb24gRGlhZ3JhbSAgLiAuIC4gLiAxODYtLTE5MQogICAgICAgICAgICAgICAgICBKb2huIFcuIEJveXNlICAgRXhlY3V0aW9uIENoYXJhY3RlcmlzdGljcyBvZiBQcm9ncmFtcyBpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSBQYWdlLU9uLURlbWFuZCBTeXN0ZW0gIC4gLiAuIC4gLiAuIC4gLiAxOTItLTE5NgogICAgICAgICAgICAgICBHcmFoYW0gU21pdGggYW5kICAgCiAgICAgICAgICAgICAgICAgIElhbiBNLiBTZWZ0b24gICBPbiBMaW9ucycgQ291bnRlciBFeGFtcGxlIGZvciBHb3RsaWViJ3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1ldGhvZCBmb3IgdGhlIENvbnN0cnVjdGlvbiBvZiBTY2hvb2wKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWV0YWJsZXMgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMTk2LS0xOTcKICAgICAgICAgICAgICAgICBHYXJ5IExpbmRzdHJvbSAgIENvcHlpbmcgTGlzdCBTdHJ1Y3R1cmVzIFVzaW5nIEJvdW5kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmtzcGFjZSAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMTk4LS0yMDIKICAgICAgICAgICAgICAgICAgICBTaGltb24gRXZlbiAgIFBhcmFsbGVsaXNtIGluIFRhcGUtU29ydGluZyAgLiAuIC4gLiAuIC4gMjAyLS0yMDQKICAgICAgICAgICBILiBDLiBMdWNhcywgSnIuIGFuZCAgIAogICAgICAgICAgIEQuIEIuIE1vbnRnb21lcnkgYW5kICAgCiAgICAgICAgICAgICAgICAgSi4gQy4gTGFycmVjaGUgICBBIHN0dWR5IG9mIGNvbXB1dGVyIHVzZSBpbiBhIGdyYWR1YXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2hvb2wgb2YgYnVzaW5lc3MgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDIwNS0tMjA2CiAgICAgICAgICAgICAgUGV0ZXIgRnJlZW1hbiBhbmQgICAKICAgICAgICAgTWljaGFlbCBBLiBNYWxjb2xtIGFuZCAgIAogICAgICAgICAgICAgICBXaWxsaWFtIEguIFBheW5lICAgR3JhZHVhdGUgRWR1Y2F0aW9uOiBUaGUgUGguRC4gR2x1dDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3BvbnNlIGFuZCBSZWJ1dHRhbCAgLiAuIC4gLiAuIC4gLiAuIC4gMjA2LS0yMDcKICAgICAgICAgICAgIFQuIEQuIFN0ZXJsaW5nIGFuZCAgIAogICAgICAgICAgICAgICAgICBTLiBWLiBQb2xsYWNrICAgSWRlYWwgdGVhY2hpbmcgbWFjaGluZXMgLS0tIGEgc29sdXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHRoZSBwZWRhZ29naWMgbGFuZ3VhZ2UgcHJvYmxlbSAgLiAuIC4gMjA3LS0yMDgKICAgICAgICAgICAgICAgICBQLiBXLiBBYnJhaGFtcyAgIFNvbWUgcmVtYXJrcyBvbiBsb29rdXAgb2Ygc3RydWN0dXJlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAyMDktLTIxMAogICAgICAgICAgICAgICAgICAgICBBLiBCYWxmb3VyICAgQW4gYWx0ZXJuYXRpdmUgYXBwcm9hY2ggdG8gbXV0dWFsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN1cnNpb24gaW4gQWxnb2wgNjAgdXNpbmcgcmVzdHJpY3RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsZXJzICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAyMTAtLTIxMAogICAgICAgICAgICAgICBSLiBDLiBULiBMZWUgYW5kICAgCiAgICAgICAgICAgICAgICBDLiBMLiBDaGFuZyBhbmQgICAKICAgICAgICAgICAgICAgIFIuIEouIFdhbGRpbmdlciAgIEFuIEltcHJvdmVkIFByb2dyYW0tU3ludGhlc2l6aW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGdvcml0aG0gYW5kIGl0cyBDb3JyZWN0bmVzcyAgLiAuIC4gLiAuIDIxMS0tMjE3CiAgICAgICAgICAgICAgICAgICAgQS4gSy4gQ2xpbmUgICBTY2FsYXItIGFuZCBwbGFuYXItdmFsdWVkIGN1cnZlIGZpdHRpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nIHNwbGluZXMgdW5kZXIgdGVuc2lvbi4gSSAuIC4gLiAuIC4gMjE4LS0yMjAKICAgICAgICAgICAgICAgICAgICBBLiBLLiBDbGluZSAgIEFDTSBBbGdvcml0aG0gNDc2OiBTaXggU3VicHJvZ3JhbXMgZm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXJ2ZSBGaXR0aW5nIFVzaW5nIFNwbGluZXMgVW5kZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlbnNpb24gIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMjIwLS0yMjMgKG9yIDIyMC0tMjIxPz8pCiAgICAgICAgICAgICAgICAgICAgIEcuIEVocmxpY2ggICBBQ00gQWxnb3JpdGhtIDQ3NzogR2VuZXJhdG9yIG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXQtUGFydGl0aW9ucyB0byBFeGFjdGx5ICR7Un0kIFN1YnNldHMgIDIyNC0tMjI1CiAgICAgICAgICAgICAgICAgICBCLiBFaW5hcnNzb24gICBTb2x1dGlvbiBvZiB0aGUgdHJhbnNjZW5kZW50YWwgZXF1YXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlL3N1cCB3Lz14ICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMjI1LS0yMjUKCkNvbW11bmljYXRpb25zIG9mIHRoZSBBQ00KVm9sdW1lIDE3LCAgTnVtYmVyIDUsIE1heSwgMTk3NAoKICAgICAgICAgICAgICAgICAgICAgIE1hcnkgU2hhdyAgIFJlZHVjdGlvbiBvZiBDb21waWxhdGlvbiBDb3N0cyBUaHJvdWdoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYW5ndWFnZSBDb250cmFjdGlvbiAuIC4gLiAuIC4gLiAuIC4gLiAuIDI0NS0tMjUwCiAgICAgICAgICAgICAgICAgICBCZW4gV2VnYnJlaXQgICBUaGUgdHJlYXRtZW50IG9mIGRhdGEgdHlwZXMgaW4gRUwxIC4gLiAuIDI1MS0tMjY0CiAgICAgICAgICAgICAgIFJvYmVydCBBLiBXYWduZXIgICBPcmRlci0kbiQgQ29ycmVjdGlvbiBmb3IgUmVndWxhcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFuZ3VhZ2VzICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAyNjUtLTI2OAogICAgICAgICAgICAgICAgICBOYWkgS3VhbiBUc2FvICAgT24gdGhlIERpc3RyaWJ1dGlvbnMgb2YgU2lnbmlmaWNhbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpZ2l0cyBhbmQgUm91bmRvZmYgRXJyb3JzIC4gLiAuIC4gLiAuIC4gMjY5LS0yNzEKICAgICAgICAgICBNLiBDLiBXdW5kZXJsaWNoIGFuZCAgIAogICAgICAgICAgICAgICAgSi4gTC4gU2VsZnJpZGdlICAgRGVzaWduIGZvciBhIE51bWJlciBUaGVvcnkgUGFja2FnZSB3aXRoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbiBPcHRpbWl6ZWQgVHJpYWwgRGl2aXNpb24gUm91dGluZSAgLiAuIDI3Mi0tMjc2CiAgICAgICAgICAgIFcuIE0uIEdlbnRsZW1hbiBhbmQgICAKICAgICAgICAgICAgICAgICBTLiBCLiBNYXJvdmljaCAgIE1vcmUgb24gQWxnb3JpdGhtcyB0aGF0IFJldmVhbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvcGVydGllcyBvZiBGbG9hdGluZyBQb2ludCBBcml0aG1ldGljCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbml0cyAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDI3Ni0tMjc3CiAgICAgICAgICAgICAgICAgRC4gRS4gR29sZCBhbmQgICAKICAgICAgICAgICAgICAgICAgICAgRC4gSi4gS3VjayAgIEEgTW9kZWwgZm9yIE1hc2tpbmcgUm90YXRpb25hbCBMYXRlbmN5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieSBEeW5hbWljIERpc2sgQWxsb2NhdGlvbiAuIC4gLiAuIC4gLiAuIDI3OC0tMjg4CgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSAxNywgIE51bWJlciA2LCBKdW5lLCAxOTc0CgogICAgICAgICAgICAgIEphY3F1ZXMgQ29oZW4gYW5kICAgCiAgICAgICAgICAgICAgICAgQ2FybCBadWNrZXJtYW4gICBUd28gTGFuZ3VhZ2VzIGZvciBFc3RpbWF0aW5nIFByb2dyYW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVmZmljaWVuY3kgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMzAxLS0zMDgKICAgICAgICAgICAgICAgIEwuIEhlbnNjaGVuIGFuZCAgIAogICAgICAgICAgIFJvc3MgQS4gT3ZlcmJlZWsgYW5kICAgCiAgICAgICAgICAgICAgICAgICAgICAgICBMLiBXb3MgICBBIFRoZW9yZW0tUHJvdmluZyBMYW5ndWFnZSBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4cGVyaW1lbnRhdGlvbiAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMzA4LS0zMTQKICAgICAgICAgICAgICAgIEphbWVzIEYuIEdpbXBlbCAgIFRoZSBtaW5pbWl6YXRpb24gb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwYXRpYWxseS1tdWx0aXBsZXhlZCBjaGFyYWN0ZXIgc2V0cyAuIC4gMzE1LS0zMTgKICAgICAgICAgICAgICAgSS4gQmFycm9kYWxlIGFuZCAgIAogICAgICAgICAgICAgICBGLiBELiBLLiBSb2JlcnRzICAgQUNNIEFsZ29yaXRobSA0Nzg6IFNvbHV0aW9uIG9mIGFuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdmVyZGV0ZXJtaW5lZCBTeXN0ZW0gb2YgRXF1YXRpb25zIGluCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgJHtMXzF9JCBOb3JtIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDMxOS0tMzIwCiAgICAgICAgICAgICAgICAgICAgIFIuIEwuIFBhZ2UgICBBQ00gQWxnb3JpdGhtIDQ3OTogQSBNaW5pbWFsIFNwYW5uaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmVlIENsdXN0ZXJpbmcgTWV0aG9kIC4gLiAuIC4gLiAuIC4gLiAuIDMyMS0tMzIzCiAgICAgICAgICAgICAgICAgICAgIEIuIEdhaXRoZXIgICBIaWRkZW4tbGluZSBwbG90dGluZyBwcm9ncmFtIC4gLiAuIC4gLiAuIDMyNC0tMzI0CiAgICAgICAgICAgICAgICAgICAgUi4gUGllc3NlbnMgICBDYWxjdWxhdGlvbiBvZiBGb3VyaWVyIGludGVncmFscyAuIC4gLiAuIDMyNC0tMzI0CiAgICAgICAgICAgICAgICAgICAgUi4gUGllc3NlbnMgICBNb2RpZmllZCBIYXZpZSBpbnRlZ3JhdGlvbiAuIC4gLiAuIC4gLiAuIDMyNC0tMzI0CiAgICAgICAgICAgICAgICAgVC4gTS4gUi4gRWxsaXMgICBIaWRkZW4tbGluZSBwbG90dGluZyBwcm9ncmFtIC4gLiAuIC4gLiAuIDMyNC0tMzI1CiAgICAgICAgICAgICAgICAgICAgIFIuIEwuIFBhZ2UgICBHZW5lcmF0aW9uIG9mIHJhbmRvbSBjb3JyZWxhdGVkIG5vcm1hbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAzMjUtLTMyNQogICAgICAgICAgICAgICAgICBELiBNLiBCb3VsdG9uICAgRXhhY3QgcHJvYmFiaWxpdGllcyBmb3IgUipDIGNvbnRpbmdlbmN5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZXMgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDMyNi0tMzI2CiAgICAgICAgICAgICAgICAgICAgVy4gRC4gU2x5c3ogICBBbiBldmFsdWF0aW9uIG9mIHNvZnR3YXJlIGluIHRoZSBzb2NpYWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaWVuY2VzIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMzI2LS0zMzIKICAgICAgICAgICAgICAgICBKb2huIEFkYW1zIGFuZCAgIAogICAgICAgICAgICAgICAgICAgICAgSm9obiBHYXJ5ICAgQ29tcGFjdCBSZXByZXNlbnRhdGlvbiBvZiBDb250b3VyIFBsb3RzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgUGhvbmUgTGluZSBUcmFuc21pc3Npb24gIC4gLiAuIC4gLiAuIDMzMy0tMzM2CiAgICAgICAgICAgICAgICAgICAgVy4gV3VsZiBhbmQgICAKICAgICAgICAgICAgICAgICAgIEUuIENvaGVuIGFuZCAgIAogICAgICAgICAgICAgICAgICBXLiBDb3J3aW4gYW5kICAgCiAgICAgICAgICAgICAgICAgICBBLiBKb25lcyBhbmQgICAKICAgICAgICAgICAgICAgICAgIFIuIExldmluIGFuZCAgIAogICAgICAgICAgICAgICAgIEMuIFBpZXJzb24gYW5kICAgCiAgICAgICAgICAgICAgICAgICAgIEYuIFBvbGxhY2sgICBIWURSQTogVGhlIEtlcm5lbCBvZiBhIE11bHRpcHJvY2Vzc29yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcGVyYXRpbmcgU3lzdGVtIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDMzNy0tMzQ1CiAgICAgICAgICAgICAgSWFuIEouIEJhcnRvbiBhbmQgICAKICAgICAgICAgICBTdXNhbiBFLiBDcmVhc2V5IGFuZCAgIAogICAgICAgICAgIE1pY2hhZWwgRi4gTHluY2ggYW5kICAgCiAgICAgICAgICAgICAgIE1pY2hhZWwgSi4gU25lbGwgICBBbiBJbmZvcm1hdGlvbi1UaGVvcmV0aWMgQXBwcm9hY2ggdG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHQgU2VhcmNoaW5nIGluIERpcmVjdCBBY2Nlc3MgU3lzdGVtcyAgMzQ1LS0zNTAKICAgICAgICAgICAgICAgICBFZHdhcmQgTWluaWVrYSAgIE9uIENvbXB1dGluZyBTZXRzIG9mIFNob3J0ZXN0IFBhdGhzIGluIGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyYXBoICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMzUxLS0zNTMKCkNvbW11bmljYXRpb25zIG9mIHRoZSBBQ00KVm9sdW1lIDE3LCAgTnVtYmVyIDcsIEp1bHksIDE5NzQKCiAgICAgICAgICBEZW5uaXMgTS4gUml0Y2hpZSBhbmQgICAKICAgICAgICAgICAgICAgICAgIEtlbiBUaG9tcHNvbiAgIFRoZSBVTklYIFRpbWUtU2hhcmluZyBTeXN0ZW0gLiAuIC4gLiAuIC4gMzY1LS0zNzUKICAgICAgICAgICAgICAgU2FtdWVsIEguIEZ1bGxlciAgIE1pbmltYWwtVG90YWwtUHJvY2Vzc2luZyBUaW1lIERydW0gYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEaXNrIFNjaGVkdWxpbmcgRGlzY2lwbGluZXMgIC4gLiAuIC4gLiAuIDM3Ni0tMzgxCiAgICAgICAgICAgICAgICAgICBKLiBCcnVubyBhbmQgICAKICAgICAgICAgRS4gRy4gQ29mZm1hbiwgSnIuIGFuZCAgIAogICAgICAgICAgICAgICAgICAgICAgIFIuIFNldGhpICAgU2NoZWR1bGluZyBJbmRlcGVuZGVudCBUYXNrcyBUbyBSZWR1Y2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lYW4gRmluaXNoaW5nIFRpbWUgIC4gLiAuIC4gLiAuIC4gLiAuIC4gMzgyLS0zODcKICAgICAgICAgICAgICBKZXJvbWUgSC4gU2FsdHplciAgIFByb3RlY3Rpb24gYW5kIHRoZSBDb250cm9sIG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmZvcm1hdGlvbiBTaGFyaW5nIGluIE11bHRpY3MgLiAuIC4gLiAuIDM4OC0tNDAyCiAgICAgICAgICAgICAgICAgICAgUi4gUy4gRmFicnkgICBDYXBhYmlsaXR5LUJhc2VkIEFkZHJlc3NpbmcgIC4gLiAuIC4gLiAuIDQwMy0tNDEyCiAgICAgICAgICAgIEdlcmFsZCBKLiBQb3BlayBhbmQgICAKICAgICAgICAgICAgIFJvYmVydCBQLiBHb2xkYmVyZyAgIEZvcm1hbCBSZXF1aXJlbWVudHMgZm9yIFZpcnR1YWxpemFibGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXJkIEdlbmVyYXRpb24gQXJjaGl0ZWN0dXJlcyAuIC4gLiAuIC4gNDEyLS00MjEKCkNvbW11bmljYXRpb25zIG9mIHRoZSBBQ00KVm9sdW1lIDE3LCAgTnVtYmVyIDgsIEF1Z3VzdCwgMTk3NAoKICAgICAgICAgICAgICAgICAgICAgQnJ1Y2UgSGFobiAgIEEgTmV3IFRlY2huaXF1ZSBmb3IgQ29tcHJlc3Npb24gYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdG9yYWdlIG9mIERhdGEgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDQzNC0tNDM2CiAgICAgICAgICBBcnRodXIgRXZhbnMsIEpyLiBhbmQgICAKICAgICAgICAgV2lsbGlhbSBLYW50cm93aXR6IGFuZCAgIAogICAgICAgICAgICAgICAgICAgIEVkd2luIFdlaXNzICAgQSBVc2VyIEF1dGhlbnRpY2F0aW9uIFNjaGVtZSBOb3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmluZyBTZWNyZWN5IGluIHRoZSBDb21wdXRlciAgLiAuIC4gNDM3LS00NDIKICAgICAgICAgICAgICAgIEdlb3JnZSBCLiBQdXJkeSAgIEEgSGlnaCBTZWN1cml0eSBMb2ctaW4gUHJvY2VkdXJlIC4gLiAuIC4gNDQyLS00NDUKICAgICAgIFRoZW9kb3JlIEQuIEZyaWVkbWFuIGFuZCAgIAogICAgICAgICAgICAgICBMYW5jZSBKLiBIb2ZmbWFuICAgRXhlY3V0aW9uIFRpbWUgUmVxdWlyZW1lbnRzIGZvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5jaXBoZXJtZW50IFByb2dyYW1zICAuIC4gLiAuIC4gLiAuIC4gLiA0NDUtLTQ0OQogICAgICAgICAgICAgIEcuIEEuIE5ldWZlbGQgYW5kICAgCiAgICAgICAgICAgICAgICAgICAgICBKLiBUYXJ0YXIgICBHcmFwaCBDb2xvcmluZyBDb25kaXRpb25zIGZvciB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4aXN0ZW5jZSBvZiBTb2x1dGlvbnMgdG8gdGhlIFRpbWV0YWJsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYmxlbSAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA0NTAtLTQ1MwogICAgICAgICAgICAgICAgIExlc2xpZSBMYW1wb3J0ICAgQSBOZXcgU29sdXRpb24gb2YgRGlqa3N0cmEncyBDb25jdXJyZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9ncmFtbWluZyBQcm9ibGVtICAuIC4gLiAuIC4gLiAuIC4gLiAuIDQ1My0tNDU1CiAgICAgICAgICAgICAgIEpvaG4gQy4gQ2F2b3VyYXMgICBPbiB0aGUgQ29udmVyc2lvbiBvZiBQcm9ncmFtcyB0bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaXNpb24gVGFibGVzOiBNZXRob2QgYW5kIE9iamVjdGl2ZXMgICA0NTYtLTQ2MgogICAgICAgICAgICAgICAgICAgVC4gTHljaGUgYW5kICAgCiAgICAgICAgICAgICAgICBMLiBMLiBTY2h1bWFrZXIgICBBQ00gQWxnb3JpdGhtIDQ4MDogUHJvY2VkdXJlcyBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXB1dGluZyBTbW9vdGhpbmcgYW5kIEludGVycG9sYXRpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hdHVyYWwgU3BsaW5lcyAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNDYzLS00NjcKICAgICAgICAgICAgICAgICBLLiBDLiBDcmFuZGFsbCAgIEFDTSBBbGdvcml0aG0gNDgxOiBBcnJvdyB0byBQcmVjZWRlbmNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXR3b3JrIFRyYW5zZm9ybWF0aW9uIC4gLiAuIC4gLiAuIC4gLiAuIDQ2Ny0tNDY5CiAgICAgICAgICAgICAgICAgSm9obiBNY0theSBhbmQgICAKICAgICAgICAgICAgICAgICAgICAgRS4gUmVnZW5lciAgIEFDTSBBbGdvcml0aG0gNDgyOiBUcmFuc2l0aXZpdHkgU2V0cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0c3XSAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA0NzAtLTQ3MAogICAgICAgICAgICAgICAgICAgQS4gSC4gU3Ryb3VkICAgR2F1c3MgSGFybW9uaWMgSW50ZXJwb2xhdGlvbiBGb3JtdWxhcyAgICA0NzEtLTQ3NQogICAgICAgICAgIFJvbGYgTy4gRS4gTGFnZXJsb2VmICAgSW50ZXJwb2xhdGlvbiB3aXRoIFJvdW5kZWQgUmFtcAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25zICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA0NzYtLTQ3OQogICAgICAgICAgICAgICAgRm9ybWFuIFMuIEFjdG9uICAgUmVjdXJyZW5jZSBSZWxhdGlvbnMgZm9yIHRoZSBGcmVzbmVsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlZ3JhbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFxpbnRfMF5caW5mdHlbXGV4cCgtY3QpZHQvKHQpXnsxLzJ9KDErdF4yKV0kIGFuZCBTaW1pbGFyIEludGVncmFscyAgNDgwLS00ODEKCkNvbW11bmljYXRpb25zIG9mIHRoZSBBQ00KVm9sdW1lIDE3LCAgTnVtYmVyIDksIFNlcHRlbWJlciwgMTk3NAoKICAgICAgICAgICAgICAgICAgSS4gTS4gV2lsbGVycyAgIEEgTmV3IEludGVncmF0aW9uIEFsZ29yaXRobSBmb3IgT3JkaW5hcnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpZmZlcmVudGlhbCBFcXVhdGlvbnMgQmFzZWQgb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRpbnVlZCBGcmFjdGlvbiBBcHByb3hpbWF0aW9ucyAgLiAuIC4gNTA0LS01MDgKICAgICAgICAgICAgICAgICAgT2xpdmVyIEFiZXJ0aCAgIEEgUHJlY2lzZSBOdW1lcmljYWwgQW5hbHlzaXMgUHJvZ3JhbSAuIC4gNTA5LS01MTMKICAgICAgICAgICAgICAgICBUby15YXQuIENoZXVuZyAgIEludGVyYWN0aXZlIEdyYXBoaWMgRGlzcGxheSBmb3IgUmVnaW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJ0aXRpb25pbmcgYnkgTGluZWFyIFByb2dyYW1taW5nIC4gLiAuIDUxMy0tNTE2CiAgICAgICAgICAgICAgIE1hcmlvIFNjaGtvbG5pY2sgICBUaGUgRXF1aXZhbGVuY2Ugb2YgUmVkdWNpbmcgVHJhbnNpdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFuZ3VhZ2VzIGFuZCBEZXRlcm1pbmlzdGljIExhbmd1YWdlcyAgICA1MTctLTUxOQogICAgICAgICAgICAgICAgICBTLiBMLiBXYXRraW5zICAgQUNNIEFsZ29yaXRobSA0ODM6IE1hc2tlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhyZWUtRGltZW5zaW9uYWwgUGxvdCBQcm9ncmFtIHdpdGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvdGF0aW9ucyAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNTIwLS01MjMKICAgICAgICAgICAgICAgICAgSy4gSC4gQnVycmVsbCAgIEFDTSBBbGdvcml0aG0gNDg0OiBFdmFsdWF0aW9uIG9mIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTW9kaWZpZWQgQmVzc2VsIEZ1bmN0aW9ucyAke0t9XzAoeikkIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtLfV8xKHopJCBmb3IgQ29tcGxleCBBcmd1bWVudHMgLiAuIC4gLiA1MjQtLTUyNgogICAgICAgICAgICAgICBILiBELiBFaWRzb24gYW5kICAgCiAgICAgICAgICAgICAgICBMLiBMLiBTY2h1bWFrZXIgICBBQ00gQWxnb3JpdGhtIDQ4NTogQ29tcHV0YXRpb24gb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRnJC1TcGxpbmVzIHZpYSBhIEZhY3Rvcml6YXRpb24gTWV0aG9kICAgNTI2LS01MzAKICAgICAgICAgICAgICAgICAgSm9obiBXLiBZb3VuZyAgIEEgRmlyc3QgT3JkZXIgQXBwcm94aW1hdGlvbiB0byB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGltdW0gQ2hlY2twb2ludCBJbnRlcnZhbCAgLiAuIC4gLiAuIC4gNTMwLS01MzEKICAgICAgICAgICAgICAgICBLZWl0aCBTaHdheWRlciAgIEV4dGVuZGluZyB0aGUgSW5mb3JtYXRpb24gVGhlb3J5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcHByb2FjaCB0byBDb252ZXJ0aW5nIExpbWl0ZWQtRW50cnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlY2lzaW9uIFRhYmxlcyB0byBDb21wdXRlciBQcm9ncmFtcyAuIC4gNTMyLS01MzcKCkNvbW11bmljYXRpb25zIG9mIHRoZSBBQ00KVm9sdW1lIDE3LCAgTnVtYmVyIDEwLCBPY3RvYmVyLCAxOTc0CgogICAgICAgICAgICAgICAgIEMuIEEuIFIuIEhvYXJlICAgTW9uaXRvcnM6IEFuIE9wZXJhdGluZyBTeXN0ZW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cnVjdHVyaW5nIENvbmNlcHQgIC4gLiAuIC4gLiAuIC4gLiAuIC4gNTQ5LS01NTcKICAgICAgICAgICAgS2VubmV0aCBLLiBTaGVuIGFuZCAgIAogICAgICAgICAgICAgIEphbWVzIEwuIFBldGVyc29uICAgQSBXZWlnaHRlZCBCdWRkeSBNZXRob2QgZm9yIER5bmFtaWMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JhZ2UgQWxsb2NhdGlvbiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNTU4LS01NjggKG9yIDU1OC0tNTYyPz8pCiAgICAgICAgICAgICAgICBELiBSLiBTbHV0eiBhbmQgICAKICAgICAgICAgICAgICAgICAgSS4gTC4gVHJhaWdlciAgIEEgbm90ZSBvbiB0aGUgY2FsY3VsYXRpb24gb2YgYXZlcmFnZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya2luZyBzZXQgc2l6ZSAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA1NjMtLTU2NQogICAgICAgICAgICBCZW4gU2huZWlkZXJtYW4gYW5kICAgCiAgICAgICAgICAgICAgUGV0ZXIgU2NoZXVlcm1hbm4gICBTdHJ1Y3R1cmVkIERhdGEgU3RydWN0dXJlcyAuIC4gLiAuIC4gLiAuIDU2Ni0tNTc0CiAgICAgICAgICAgICAgUi4gSC4gQ2FuYWRheSBhbmQgICAKICAgICAgICAgICAgIFIuIEQuIEhhcnJpc29uIGFuZCAgIAogICAgICAgICAgICAgICAgIEUuIEwuIEl2aWUgYW5kICAgCiAgICAgICAgICAgICAgICBKLiBMLiBSeWRlciBhbmQgICAKICAgICAgICAgICAgICAgICAgICAgTC4gQS4gV2VociAgIEEgQmFjay1lbmQgQ29tcHV0ZXIgZm9yIERhdGEgQmFzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFuYWdlbWVudCAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA1NzUtLTU4MyAob3IgNTc1LS01ODI/PykKICAgICAgICAgICAgICAgICBBLiBDaGFybmVzIGFuZCAgIAogICAgICAgICAgICAgICAgVy4gTS4gUmFpa2UgYW5kICAgCiAgICAgICAgICAgICAgICBKLiBELiBTdHV0eiBhbmQgICAKICAgICAgICAgICAgICAgICAgQS4gUy4gV2FsdGVycyAgIE9uIEdlbmVyYXRpb24gb2YgVGVzdCBQcm9ibGVtcyBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbmVhciBQcm9ncmFtbWluZyBDb2RlcyAuIC4gLiAuIC4gLiAuIC4gNTgzLS01ODcgKG9yIDU4My0tNTg2Pz8pCiAgICAgICAgICAgICAgICAgICAgIEYuIFZlaWxsb24gICBBQ00gQWxnb3JpdGhtIDQ4NjogTnVtZXJpY2FsIEludmVyc2lvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgTGFwbGFjZSBUcmFuc2Zvcm0gLiAuIC4gLiAuIC4gLiAuIC4gLiA1ODctLTU4OSAob3IgNTg3LS01ODg/PykKICAgICAgICAgICAgICAgICAgIEguIEtvcHBlbGFhciAgIENlcnRpZmljYXRpb24gYW5kIHJlbWFyayBvbiBhbGdvcml0aG0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5MSAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNTg5LS01OTAKICAgICAgICAgICAgICAgICAgICBMLiBHLiBQcm9sbCAgIEEgY29tcHV0ZXIgcm91dGluZSBmb3IgcXVhZHJhdGljIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZWFyIHByb2dyYW1taW5nIHByb2JsZW1zICAuIC4gLiAuIC4gLiA1OTAtLTU5MAogICAgICAgICAgICAgICAgICBKLiBLbGVtZXMgYW5kICAgCiAgICAgICAgICAgICAgICAgICAgICBKLiBLbGVtc2EgICBSb3NlbmJyb2NrIGZ1bmN0aW9uIG1pbmltaXphdGlvbiAuIC4gLiAuIDU5MC0tNTkxCiAgICAgICAgICAgICAgICAgIEZyZWQgVC4gS3JvZ2ggICBFcnJhdGE6IGBgRWZmaWNpZW50IEltcGxlbWVudGF0aW9uIG9mIGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlIFByb2plY3Rpb24gQWxnb3JpdGhtIGZvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9ubGluZWFyIExlYXN0IFNxdWFyZXMnJyAgLiAuIC4gLiAuIC4gLiA1OTEtLTU5MQogICAgICAgICAgICBCcnVjZSBHaWxjaHJpc3QgYW5kICAgCiAgICAgICAgICAgICAgIFJpY2hhcmQgRS4gV2ViZXIgICBFbnVtZXJhdGluZyBGdWxsLVRpbWUgUHJvZ3JhbW1lcnMgIC4gLiAuIDU5Mi0tNTkzCgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSAxNywgIE51bWJlciAxMSwgTm92ZW1iZXIsIDE5NzQKCiAgICAgICAgICAgIFRoZW9kb3IgRC4gU3RlcmxpbmcgICBHdWlkZWxpbmVzIGZvciBIdW1hbml6aW5nIENvbXB1dGVyaXplZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5mb3JtYXRpb24gU3lzdGVtcywgQSBSZXBvcnQgZnJvbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhbmxleSBIb3VzZSAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA2MDktLTYxMwogICAgICAgICAgICAgICBEb21lbmljbyBGZXJyYXJpICAgSW1wcm92aW5nIExvY2FsaXR5IGJ5IENyaXRpY2FsIFdvcmtpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNldHMgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNjE0LS02MjAKICAgICAgICAgICAgUGVycnkgTG93ZWxsIE1pbGxlciAgIEEgbG9jYWxseS1vcmdhbml6ZWQgcGFyc2VyIGZvciBzcG9rZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0ICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNjIxLS02MzAKICAgICAgICAgICAgICAgICAgR2FyeSBNLiBSYWRlciAgIE1ldGhvZCBmb3IgQ29tcG9zaW5nIFNpbXBsZSBUcmFkaXRpb25hbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTXVzaWMgYnkgQ29tcHV0ZXIgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA2MzEtLTYzOAogICAgICAgICAgICBSLiBBLiBGcmVpYnVyZ2hvdXNlICAgUmVnaXN0ZXIgQWxsb2NhdGlvbiB2aWEgVXNhZ2UgQ291bnRzIC4gLiA2MzgtLTY0MgogICAgICAgICAgICAgICAgIEUuIFcuIERpamtzdHJhICAgU2VsZi1zdGFiaWxpemluZyBTeXN0ZW1zIGluIFNwaXRlIG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEaXN0cmlidXRlZCBDb250cm9sICAuIC4gLiAuIC4gLiAuIC4gLiAuIDY0My0tNjQ0CiAgICAgICAgICAgICAgICBKLiBBLiBCcm93biBhbmQgICAKICAgICAgICAgICAgICAgICAgICAgIEIuIFdlcm5lciAgIEFuIG9uLXNpdGUgZGF0YSBtYW5hZ2VtZW50IHN5c3RlbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb24gaW4gZmllbGQgYXJjaGFlb2xvZ3kgLiAuIC4gLiA2NDQtLTY0NgogICAgICAgICAgICAgICAgICAgRC4gUi4gSGFuc29uICAgQSBzaW1wbGUgdGVjaG5pcXVlIGZvciByZXByZXNlbnRpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ3MgaW4gRm9ydHJhbiBJViAgLiAuIC4gLiAuIC4gLiAuIC4gNjQ2LS02NDcKICAgICAgICAgICBDLiBKLiBWYW4gUmlqc2JlcmdlbiAgIFRoZSBiZXN0LW1hdGNoIHByb2JsZW0gaW4gZG9jdW1lbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHJpZXZhbCAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNjQ4LS02NDkKICAgICAgICAgICAgICAgICAgICBSLiBWLiBFdmFucyAgIE11bHRpcGxlIGV4aXRzIGZyb20gYSBsb29wIHVzaW5nIG5laXRoZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdPIFRPIG5vciBsYWJlbHMgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNjUwLS02NTAKCkNvbW11bmljYXRpb25zIG9mIHRoZSBBQ00KVm9sdW1lIDE3LCAgTnVtYmVyIDEyLCBEZWNlbWJlciwgMTk3NAoKICAgICAgICAgICAgICAgIERvbmFsZCBFLiBLbnV0aCAgIENvbXB1dGVyIFByb2dyYW1taW5nIGFzIGFuIEFydCAuIC4gLiAuIC4gNjY3LS02NzMKICAgICAgICAgICAgICBMYXVyYW5jZSBJLiBQcmVzcyAgIEFyZ3VtZW50cyBmb3IgYSBNb3JhdG9yaXVtIG9uIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3RydWN0aW9uIG9mIGEgQ29tbXVuaXR5IEluZm9ybWF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVdGlsaXR5ICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDY3NC0tNjc4CiAgICAgICAgICAgICAgICAgIEouIEMuIFN0cmF1c3MgICBBbiBhbmFseXRpYyBtb2RlbCBvZiB0aGUgSGFzcCBleGVjdXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sgbW9uaXRvciAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNjc5LS02ODUKICAgICAgICAgICAgIFRob21hcyBMLiBBZGFtIGFuZCAgIAogICAgICAgICAgICAgICBLLiBNLiBDaGFuZHkgYW5kICAgCiAgICAgICAgICAgICAgICAgIEouIFIuIERpY2tzb24gICBBIENvbXBhcmlzb24gb2YgTGlzdCBTY2hlZHVsZXMgZm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJhbGxlbCBQcm9jZXNzaW5nIFN5c3RlbXMgIC4gLiAuIC4gLiAuIDY4NS0tNjkwCiAgICAgICAgICAgICAgICAgIE4uIEQuIFdhbGxhY2UgICBDb21wdXRlciBHZW5lcmF0aW9uIG9mIEdhbW1hIFJhbmRvbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFyaWF0ZXMgd2l0aCBOb24tSW50ZWdyYWwgU2hhcGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFtZXRlcnMgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNjkxLS02OTUKICAgICAgICAgICAgICAgICBBLiBTYWxhemFyIGFuZCAgIAogICAgICAgICAgICAgICAgICBSLiBWLiBPYWtmb3JkICAgQSBHcmFwaCBGb3JtdWxhdGlvbiBvZiBhIFNjaG9vbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2NoZWR1bGluZyBBbGdvcml0aG0gLiAuIC4gLiAuIC4gLiAuIC4gLiA2OTYtLTY5OAogICAgICAgICAgICBTaGVyd29vZCBDLiBDaHUgYW5kICAgCiAgICAgICAgICAgICAgICAgICBNb25lcyBCZXJtYW4gICBBbiBFeHBvbmVudGlhbCBNZXRob2QgZm9yIHRoZSBTb2x1dGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgU3lzdGVtcyBvZiBPcmRpbmFyeSBEaWZmZXJlbnRpYWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVxdWF0aW9ucyAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNjk5LS03MDIKICAgICAgICAgICAgICAgICAgICBKLiBQb21lcmFueiAgIEFDTSBBbGdvcml0aG0gNDg3OiBFeGFjdCBDdW11bGF0aXZlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEaXN0cmlidXRpb24gb2YgdGhlIEtvbG1vZ29yb3YtU21pcm5vdgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGlzdGljIGZvciBTbWFsbCBTYW1wbGVzICAuIC4gLiAuIC4gLiA3MDMtLTcwNAogICAgICAgICAgICAgICAgICAgIFIuIFAuIEJyZW50ICAgQUNNIEFsZ29yaXRobSA0ODg6IEEgR2F1c3NpYW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBzZXVkby1yYW5kb20gbnVtYmVyIGdlbmVyYXRvciBbRzVdICAuIC4gNzA0LS03MDYgKG9yIDcwNC0tNzA1Pz8pCiAgICAgICAgICAgICBDLiBXaWxsaWFtIFNraW5uZXIgICBIZXVyaXN0aWMgQXBwcm9hY2ggdG8gSW5kdWN0aXZlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmZlcmVuY2UgaW4gRmFjdCBSZXRyaWV2YWwgU3lzdGVtcyAgLiAuIDcwNy0tNzEyCgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSAyMSwgIE51bWJlciAxLCBKYW51YXJ5LCAxOTc0CgogICAgICAgICAgICAgICAgICAgICAgIEQuIE1pdHJhICAgU29tZSBBc3BlY3RzIG9mIEhpZXJhcmNoaWNhbCBNZW1vcnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbXMgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNTQtLTY1CgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSA2LCAgTnVtYmVyIDEwLCBPY3RvYmVyLCAxOTc1CgogICAgICAgICAgICAgICAgUi4gRS4gTWlsbHN0ZWluICAgQ29udHJvbCBTdHJ1Y3R1cmVzIGluIElsbGlhYyBJViBGb3J0cmFuICAxNTctLTE2NAogICAgICAgICAgICAgICAgVC4gU3RlcmxpbmcgYW5kICAgCiAgICAgICAgICAgICAgICAgICAgIFYuIEx1bSBhbmQgICAKICAgICAgICAgICAgICAgICAgICAgTi4gU2h1IGFuZCAgIAogICAgICAgICAgICAgICAgICAgICAgQi4gSG91c2VsICAgQ09OVkVSVDogQSBIaWdoIExldmVsIFRyYW5zbGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZpbml0aW9uIExhbmd1YWdlIGZvciBEYXRhIENvbnZlcnNpb24gIDU1Ny0tNTY3CgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSAxOCwgIE51bWJlciAxLCBKYW51YXJ5LCAxOTc1CgogICAgICAgICAgICAgICAgIEFhcm9uIEZpbmVybWFuICAgUHJvZmVzc2lvbmFsaXNtIGluIHRoZSBDb21wdXRpbmcgRmllbGQgICA0LS05CiAgICAgICAgICAgICAgICAgICAgRi4gTC4gQmF1ZXIgICBQb3NpdGl2aXR5IGFuZCBOb3JtcyAuIC4gLiAuIC4gLiAuIC4gLiAuIDktLTEzCiAgICAgICAgICAgICAgICAgICAgICBKb2huIFRvZGQgICBUaGUgTGVtbmlzY2F0ZSBDb25zdGFudHMgLiAuIC4gLiAuIC4gLiAuIDE0LS0xOQogICAgICAgICAgICAgICAgICBHLiBQZXRlcnMgYW5kICAgCiAgICAgICAgICAgICAgICBKLiBILiBXaWxraW5zb24gICBPbiB0aGUgU3RhYmlsaXR5IG9mIEdhdXNzLUpvcmRhbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWxpbWluYXRpb24gd2l0aCBQaXZvdGluZyAgLiAuIC4gLiAuIC4gLiAyMC0tMjQKICAgICAgICAgICAgICAgR2FycmV0dCBCaXJraG9mZiAgIFR3byBIYWRhbWFyZCBOdW1iZXJzIGZvciBNYXRyaWNlcyAgLiAuIC4gMjUtLTI5CiAgICAgICAgICAgICAgIEEuIHZhbiBkZXIgU2x1aXMgICBQZXJ0dXJiYXRpb25zIG9mIEVpZ2VudmFsdWVzIG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb24tTm9ybWFsIE1hdHJpY2VzICAuIC4gLiAuIC4gLiAuIC4gLiAuIDMwLS0zNgogICAgICAgICAgICAgIE1hcnZpbiBNYXJjdXMgYW5kICAgCiAgICAgICAgICAgICAgIEhlcmJlcnQgUm9iaW5zb24gICBFbGVtZW50YXJ5IERpdmlzb3JzIG9mIFRlbnNvciBQcm9kdWN0cyAgIDM2LS0zOQogICAgICAgICAgICAgTWFnbnVzIFIuIEhlc3RlbmVzICAgUHNldWRvaW52ZXJzZXMgYW5kIENvbmp1Z2F0ZSBHcmFkaWVudHMgICA0MC0tNDMKICAgICAgICAgICAgICAgIEhhcmxhbiBELiBNaWxscyAgIFRoZSBOZXcgTWF0aCBvZiBDb21wdXRlciBQcm9ncmFtbWluZyAuIC4gNDMtLTQ4CiAgICAgICAgICAgICAgVGllbiBDaGkgQ2hlbiBhbmQgICAKICAgICAgICAgICAgICAgICAgIElydmluZyBULiBIbyAgIFN0b3JhZ2UtRWZmaWNpZW50IFJlcHJlc2VudGF0aW9uIG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsIERhdGEgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDQ5LS01MgogICAgICAgICAgICAgICAgIFdlcm5lciBMaW5pZ2VyICAgQ29ubmVjdGlvbnMgQmV0d2VlbiBBY2N1cmFjeSBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YWJpbGl0eSBQcm9wZXJ0aWVzIG9mIExpbmVhciBNdWx0aXN0ZXAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm11bGFzIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNTMtLTU2CiAgICAgICAgICAgICAgUmljaGFyZCBKLiBIYW5zb24gICBTdGFibHkgVXBkYXRpbmcgTWVhbiBhbmQgU3RhbmRhcmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERldmlhdGlvbiBvZiBEYXRhICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNTctLTU4CgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSAxOCwgIE51bWJlciAyLCBGZWJydWFyeSwgMTk3NQoKICAgICAgICAgICAgICAgICAgSm9obiBNY0NhcnRoeSAgIFByb3Bvc2VkIENyaXRlcmlvbiBmb3IgYSBDaXBoZXIgdG8gYmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2JhYmxlLVdvcmQgUHJvb2YgIC4gLiAuIC4gLiAuIC4gLiAuIC4gICA/PwogICAgICAgICAgICAgIEcuIEouIEJ1cm5ldHQgYW5kICAgCiAgICAgICAgICAgICBFLiBHLiBDb2ZmbWFuLCBKci4gICBBbmFseXNpcyBvZiBJbnRlcmxlYXZlZCBNZW1vcnkgU3lzdGVtcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNpbmcgQmxvY2thZ2UgQnVmZmVycyAuIC4gLiAuIC4gLiAuIC4gLiA5MS0tOTUKICAgICAgICAgICAgICAgIE5laWwgTS4gR29sZG1hbiAgIFNlbnRlbmNlIFBhcmFwaHJhc2luZyBmcm9tIGEgQ29uY2VwdHVhbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFzZSAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA5Ni0tMTA2CiAgICAgICBHb3Jkb24gSi4gVmFuZGVyQnJ1ZyBhbmQgICAKICAgICAgICAgICAgICAgICAgICBKYWNrIE1pbmtlciAgIFN0YXRlLVNwYWNlLCBQcm9ibGVtLVJlZHVjdGlvbiwgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGVvcmVtIFByb3ZpbmcgLS0tIFNvbWUgUmVsYXRpb25zaGlwcyAgIDEwNy0tMTE1CiAgICAgICAgICAgICAgQ2Fyb2x5biBLaW1tZSBhbmQgICAKICAgICAgICAgICAgICAgRGFuYSBCYWxsYXJkIGFuZCAgIAogICAgICAgICAgICAgICAgICBKYWNrIFNrbGFuc2t5ICAgRmluZGluZyBDaXJjbGVzIGJ5IGFuIEFycmF5IG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY2N1bXVsYXRvcnMgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDEyMC0tMTIyCgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSAxOCwgIE51bWJlciAzLCBNYXJjaCwgMTk3NQoKICAgICAgICAgICAgIEguIEMuIEpvaG5zdG9uIGFuZCAgIAogICAgICAgICAgICAgICAgIEMuIEEuIFIuIEhvYXJlICAgTWF0cml4IFJlZHVjdGlvbiAtLS0gYW4gRWZmaWNpZW50IE1ldGhvZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNjaG9vbCB0aW1ldGFibGVzKSAgLiAuIC4gLiAuIC4gLiAuIC4gLiAxNDEtLTE1MAogICAgICAgICBCcmlhbiBXLiBLZXJuaWdoYW4gYW5kICAgCiAgICAgICAgICAgICAgTG9yaW5kYSBMLiBDaGVycnkgICBBIFN5c3RlbSBmb3IgVHlwZXNldHRpbmcgTWF0aGVtYXRpY3MgLiAuIDE1MS0tMTU3CiAgICAgICAgICAgICAgIEQuIEguIExhd3JpZSBhbmQgICAKICAgICAgICAgICAgICAgICAgVC4gTGF5bWFuIGFuZCAgIAogICAgICAgICAgICAgICAgICAgIEQuIEJhZXIgYW5kICAgCiAgICAgICAgICAgICAgICAgICBKLiBNLiBSYW5kYWwgICBHTFlQTklSIC0tLSBBIHByb2dyYW1taW5nIGxhbmd1YWdlIGZvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWxsaWFjIElWICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAxNTctLTE2NAogICAgICAgICAgICBSb2JlcnQgVy4gRmxveWQgYW5kICAgCiAgICAgICAgICAgICAgIFJvbmFsZCBMLiBSaXZlc3QgICBFeHBlY3RlZCBUaW1lIEJvdW5kcyBmb3IgU2VsZWN0aW9uIC4gLiAuIDE2NS0tMTcyCiAgICAgICAgICAgICAgICBSLiBXLiBGbG95ZCBhbmQgICAKICAgICAgICAgICAgICAgICAgIFIuIEwuIFJpdmVzdCAgIEFDTSBBbGdvcml0aG0gNDg5OiBUaGUgQWxnb3JpdGhtIFNFTEVDVAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0gZm9yIEZpbmRpbmcgdGhlICRpJHRoIFNtYWxsZXN0IG9mICRuJAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWxlbWVudHMgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAxNzMtLTE3MwogICAgICAgICAgICAgIEEuIE0uIEVyaXNtYW4gYW5kICAgCiAgICAgICAgICAgICAgICAgICBXLiBGLiBUaW5uZXkgICBPbiBDb21wdXRpbmcgQ2VydGFpbiBFbGVtZW50cyBvZiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludmVyc2Ugb2YgYSBTcGFyc2UgTWF0cml4IC4gLiAuIC4gLiAuIC4gMTc3LS0xNzkKICAgICAgICAgICAgICAgICBMLiBGLiBTaGFtcGluZSAgIERpc2NyZXRlIExlYXN0IFNxdWFyZXMgUG9seW5vbWlhbCBGaXRzICAgMTc5LS0xODAKICAgICAgICAgICAgICAgQS4gdmFuIGRlciBTbHVpcyAgIENvcnJpZ2VuZHVtOiBgYFBlcnR1cmJhdGlvbnMgb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVpZ2VudmFsdWVzIG9mIG5vbi1ub3JtYWwgbWF0cmljZXMnJyAuIC4gIDE4MAogICAgICAgICAgICAgICAgICAgRC4gTC4gUGFybmFzICAgT24gYSBTb2x1dGlvbiB0byB0aGUgQ2lnYXJldHRlIFNtb2tlcidzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9ibGVtIChXaXRob3V0IENvbmRpdGlvbmFsIFN0YXRlbWVudHMpIDE4MS0tMTgzCgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSAxOCwgIE51bWJlciA0LCBBcHJpbCwgMTk3NQoKICAgICAgICAgICBKYWNrIEEuIENoYW1iZXJzIGFuZCAgIAogICAgICAgICAgICAgICAgICAgUmF5IFYuIFBvb3JlICAgQ29tcHV0ZXIgTmV0d29ya3MgaW4gSGlnaGVyIEVkdWNhdGlvbjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvY2lvLUVjb25vbWljLVBvbGl0aWNhbCBGYWN0b3JzIC4gLiAuIC4gMTkzLS0xOTkKICAgICAgICAgICAgIEUuIFMuIEdpbnNiZXJnIGFuZCAgIAogICAgICAgICAgICAgICAgICBELiBaYWJvcm93c2tpICAgQUNNIEFsZ29yaXRobSA0OTA6IFRoZSBEaWxvZ2FyaXRobQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb24gb2YgYSBSZWFsIEFyZ3VtZW50ICAuIC4gLiAuIC4gLiAyMDAtLTIwMgogICAgICAgICAgICAgICAgIEsuIEsuIFNoZW4gYW5kICAgCiAgICAgICAgICAgICAgICAgSi4gTC4gUGV0ZXJzb24gICBDb3JyaWdlbmR1bTogYGBBIFdlaWdodGVkIEJ1ZGR5IE1ldGhvZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIER5bmFtaWMgU3RvcmFnZSBBbGxvY2F0aW9uJycgLiAuIC4gLiAyMDItLTIwMgogICAgICAgICAgICAgICAgICAgR3JhaGFtIFNtaXRoICAgT24gTWFpbnRlbmFuY2Ugb2YgdGhlIE9wcG9ydHVuaXR5IExpc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBDbGFzcy1UZWFjaGVyIFRpbWV0YWJsZSBQcm9ibGVtcyAuIC4gMjAzLS0yMDgKICAgICAgICAgICAgICAgICAgICBJLiBDLiBCcmFpZCAgIFRoZSBTeW50aGVzaXMgb2YgU29saWRzIEJvdW5kZWQgYnkgTWFueQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmFjZXMgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAyMDktLTIxNgogICAgICAgICAgICAgIFZsYWRpbWlyIEJhdGFnZWxqICAgUXVhZHJhdGljIEhhc2ggTWV0aG9kIFdoZW4gdGhlIFRhYmxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaXplIGlzIG5vdCBhIFByaW1lIE51bWJlciAuIC4gLiAuIC4gLiAuIDIxNi0tMjE3CiAgICAgICAgICAgSGVucnkgUy4gV2FycmVuLCBKci4gICBBIE1vZGlmaWNhdGlvbiBvZiBXYXJzaGFsbCdzIEFsZ29yaXRobQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSBUcmFuc2l0aXZlIENsb3N1cmUgb2YgQmluYXJ5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxhdGlvbnMgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDIxOC0tMjIwCiAgICAgICAgICAgICAgICAgSmFtZXMgQS4gSGluZHMgICBBbGdvcml0aG0gZm9yIExvY2F0aW5nIEFkamFjZW50IFN0b3JhZ2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJsb2NrcyBpbiB0aGUgQnVkZHkgU3lzdGVtIC4gLiAuIC4gLiAuIC4gMjIxLS0yMjIKICAgICAgICAgICAgSmVhbiBHLiBWYXVjaGVyIGFuZCAgIAogICAgICAgICAgICAgICAgICAgUGllcnJlIER1dmFsICAgQSBDb21wYXJpc29uIG9mIFNpbXVsYXRpb24gRXZlbnQgTGlzdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxnb3JpdGhtcyAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAyMjMtLTIzMAogICAgICAgICBSb2JlcnQgUi4gS29yZmhhZ2UgYW5kICAgCiAgICAgICAgICAgICAgICBEYXZpZCBXLiBNYXR1bGEgICBPbiBTYWxhemFyIGFuZCBPYWtmb3JkIC4gLiAuIC4gLiAuIC4gLiAuIDI0MC0tMjQwCiAgICAgICAgICAgTWljaGFlbCBSLiBHYXJleSBhbmQgICAKICAgICAgICAgICAgICAgRGF2aWQgUy4gSm9obnNvbiAgIE9uIFNhbGF6YXIgYW5kIE9ha2ZvcmQgLiAuIC4gLiAuIC4gLiAuIC4gMjQwLS0yNDEKCkNvbW11bmljYXRpb25zIG9mIHRoZSBBQ00KVm9sdW1lIDE4LCAgTnVtYmVyIDUsIE1heSwgMTk3NQoKICAgICAgICAgICAgICAgIERhdmlkIEEuIEZpc2hlciAgIENvcHlpbmcgQ3ljbGljIExpc3QgU3RydWN0dXJlcyBpbiBMaW5lYXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWUgVXNpbmcgQm91bmRlZCBXb3Jrc3BhY2UgLiAuIC4gLiAuIC4gMjUxLS0yNTIKICAgICAgICAgICAgQWxmb25zbyBGLiBDYXJkZW5hcyAgIEFuYWx5c2lzIGFuZCBQZXJmb3JtYW5jZSBvZiBJbnZlcnRlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSBCYXNlIFN0cnVjdHVyZXMgLiAuIC4gLiAuIC4gLiAuIC4gLiAyNTMtLTI2MwogICAgICAgICAgICAgICAgICAgWW9yaWNrIFdpbGtzICAgQW4gaW50ZWxsaWdlbnQgYW5hbHl6ZXIgYW5kIHVuZGVyc3RhbmRlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgRW5nbGlzaCAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAyNjQtLTI3NAogICAgICAgICAgICAgICAgICAgIE4uIEUuIEdpYmJzICAgQUNNIEFsZ29yaXRobSA0OTE6IEJhc2ljIEN5Y2xlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0aW9uIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDI3NS0tMjc2IChvciAyNzUtLTI3NT8/KQogICAgICAgICAgICAgICAgRC4gSi4gRXZhbnMgYW5kICAgCiAgICAgICAgICAgICAgICAgTS4gSGF0em9wb3Vsb3MgICBBIG5vdGUgb24gdGhlIExVIGZhY3Rvcml6YXRpb24gb2YgYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ltbWV0cmljIG1hdHJpeCAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAyNzgtLTI3OQogICAgICAgICAgICAgICAgICAgICAgQi4gTC4gRm94ICAgTW9yZSBvbiAkayR0aCBTaG9ydGVzdCBQYXRocyAuIC4gLiAuIC4gLiAyNzktLTI3OQogICAgICAgICAgICAgICAgQS4gSS4gV2Fzc2VybWFuICAgQSBwcm9ibGVtLWxpc3Qgb2YgcHVibGljIHBvbGljeSBpc3N1ZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmNlcm5pbmcgY29tcHV0ZXJzIGFuZCBoZWFsdGggY2FyZSAuIC4gMjc5LS0yODAKICAgICAgICAgICAgICAgIEhhcmxhbiBELiBNaWxscyAgIENvcnJpZ2VuZHVtOiBgYFRoZSBOZXcgTWF0aCBvZiBDb21wdXRlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvZ3JhbW1pbmcnJyAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAyODAtLTI4MAogICAgICAgICAgICAgU3RldmVuIEwuIEhvcm93aXR6ICAgU3ludGFjdGljIEFsZ29yaXRobSBmb3IgUGVhayBEZXRlY3Rpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFdhdmVmb3JtcyB3aXRoIEFwcGxpY2F0aW9ucyB0bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FyZGlvZ3JhcGh5IC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAyODEtLTI4NQogICAgICAgICBDaGFybGVzIEUuIFBmZWZmZXJrb3JuICAgSGV1cmlzdGljIFByb2JsZW0gU29sdmluZyBEZXNpZ24gU3lzdGVtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgRXF1aXBtZW50IG9yIEZ1cm5pdHVyZSBMYXlvdXRzIC4gLiAuIDI4Ni0tMjk3CiAgICAgICAgIFJvYmVydCBSLiBLb3JmaGFnZSBhbmQgICAKICAgICAgICAgICAgICAgIERhdmlkIFcuIE1hdHVsYSAgIE1vcmUgb24gdGhlIFNhbGF6YXIgYW5kIE9ha2ZvcmQgUGFwZXIgICAgMzAzLS0zMDMKCkNvbW11bmljYXRpb25zIG9mIHRoZSBBQ00KVm9sdW1lIDE4LCAgTnVtYmVyIDYsIEp1bmUsIDE5NzUKCiAgICAgICAgICAgICAgICAgICAgTi4gRS4gR2liYnMgICBBQ00gQWxnb3JpdGhtIDQ5MjogR2VuZXJhdGlvbiBvZiBBbGwgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDeWNsZXMgb2YgYSBHcmFwaCBmcm9tIGEgU2V0IG9mIEJhc2ljCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDeWNsZXMgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDMxMC0tMzEwCiAgICAgICAgICAgICAgICBCdWkgVHVvbmcgUGhvbmcgICBJbGx1bWluYXRpb24gZm9yIENvbXB1dGVyIEdlbmVyYXRlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGljdHVyZXMgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAzMTEtLTMxNwogICAgICAgICAgICAgICAgICBWLiBZLiBMdW0gYW5kICAgCiAgICAgICAgICAgICAgICBNLiBFLiBTZW5rbyBhbmQgICAKICAgICAgICAgICAgICAgICBDLiBQLiBXYW5nIGFuZCAgIAogICAgICAgICAgICAgICAgICAgICAgICBILiBMaW5nICAgQSBDb3N0IE9yaWVudGVkIEFsZ29yaXRobSBmb3IgRGF0YSBTZXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG9jYXRpb24gaW4gU3RvcmFnZSBIaWVyYXJjaGllcyAgLiAuIC4gMzE4LS0zMjIKICAgICAgICAgICAgIEFsYW4gRi4gQmFiaWNoIGFuZCAgIAogICAgICAgICAgICAgICAgSm9obiBHcmFzb24gYW5kICAgCiAgICAgICAgICAgICAgICBEYXZpZCBMLiBQYXJuYXMgICBTaWduaWZpY2FudCBFdmVudCBTaW11bGF0aW9uIC4gLiAuIC4gLiAuIDMyMy0tMzI5CiAgICAgICAgICAgICBSb2JlcnQgQi4gSy4gRGV3YXIgICBJbmRpcmVjdCBUaHJlYWRlZCBDb2RlIC4gLiAuIC4gLiAuIC4gLiAuIDMzMC0tMzMxCiAgICAgICAgICAgICAgIEJlbiBDcmFuc3RvbiBhbmQgICAKICAgICAgICAgICAgICAgICAgICBSaWNrIFRob21hcyAgIFNpbXBsaWZpZWQgUmVjb21iaW5hdGlvbiBTY2hlbWUgZm9yIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlib25hY2NpIEJ1ZGR5IFN5c3RlbSAuIC4gLiAuIC4gLiAuIC4gLiAzMzEtLTMzMgogICAgICAgICAgICAgIEFsZnJlZCBWLiBBaG8gYW5kICAgCiAgICAgICAgICAgTWFyZ2FyZXQgSi4gQ29yYXNpY2sgICBFZmZpY2llbnQgU3RyaW5nIE1hdGNoaW5nOiBhbiBBaWQgdG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpYmxpb2dyYXBoaWMgU2VhcmNoIC4gLiAuIC4gLiAuIC4gLiAuIC4gMzMzLS0zNDAKICAgICAgICAgICAgICAgRC4gUy4gSGlyc2NoYmVyZyAgIEEgTGluZWFyIFNwYWNlIEFsZ29yaXRobSBmb3IgQ29tcHV0aW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXhpbWFsIENvbW1vbiBTdWJzZXF1ZW5jZXMgIC4gLiAuIC4gLiAuIDM0MS0tMzQzCiAgICAgICAgICAgICAgICAgIFN0ZXBoZW4gU291bGUgICBBZGRpdGlvbiBpbiBhbiBBcmJpdHJhcnkgQmFzZSBXaXRob3V0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYWRpeCBDb252ZXJzaW9uIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDM0NC0tMzQ2CiAgICAgICAgICAgICAgIEwuIEguIEhhcnBlciBhbmQgICAKICAgICAgICAgICAgICAgIFQuIEguIFBheW5lIGFuZCAgIAogICAgICAgICAgICAgICBKLiBFLiBTYXZhZ2UgYW5kICAgCiAgICAgICAgICAgICAgICAgICAgICBFLiBTdHJhdXMgICBTb3J0aW5nICRYICsgWSQgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDM0Ny0tMzUwIChvciAzNDctLTM0OT8/KQogICAgICAgICAgICAgICAgICBGLiBQYXVsIFd5bWFuICAgSW1wcm92ZWQgRXZlbnQtU2Nhbm5pbmcgTWVjaGFuaXNtcyBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpc2NyZXRlIEV2ZW50IFNpbXVsYXRpb24gIC4gLiAuIC4gLiAuIC4gMzUwLS0zNTMKICAgICAgICAgICAgRG9uYWxkIEUuIEtudXRoIGFuZCAgIAogICAgICAgICAgIENoYXJsZXMgVC4gWmFobiwgSnIuICAgSWxsLUNob3NlbiBVc2Ugb2YgYGBFdmVudCcnICAuIC4gLiAuIC4gLiAzNjAtLTM2MAoKQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTQpWb2x1bWUgMTgsICBOdW1iZXIgNywgSnVseSwgMTk3NQoKICAgICAgICAgICAgICAgICBQLiBKLiBDb3VydG9pcyAgIERlY29tcG9zYWJpbGl0eSwgSW5zdGFiaWxpdGllcywgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYXR1cmF0aW9uIGluIE11bHRpcHJvZ3JhbW1pbmcgU3lzdGVtcyAgIDM3MS0tMzc3CiAgICAgICAgICAgICAgICAgIFNvcmVuIExhdWVzZW4gICBBIGxhcmdlIHNlbWFwaG9yZSBiYXNlZCBvcGVyYXRpbmcgc3lzdGVtIDM3Ny0tMzg5CiAgICAgICAgICAgICAgICBOYW9taSBTYWdlciBhbmQgICAKICAgICAgICAgICAgICAgICBSYWxwaCBHcmlzaG1hbiAgIFJlc3RyaWN0aW9uIExhbmd1YWdlIGZvciBDb21wdXRlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JhbW1hcnMgb2YgTmF0dXJhbCBMYW5ndWFnZSAuIC4gLiAuIC4gLiAzOTAtLTQwMAogICAgICAgICAgICAgICBELiBMLiBQYXJuYXMgYW5kICAgCiAgICAgICAgICAgICAgICBELiBQLiBTaWV3aW9yZWsgICBVc2Ugb2YgdGhlIENvbmNlcHQgb2YgVHJhbnNwYXJlbmN5IGluCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgRGVzaWduIG9mIEhpZXJhcmNoaWNhbGx5IFN0cnVjdHVyZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbXMgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNDAxLS00MDgKICAgICAgICAgICAgICAgICBILiBGcmVlbWFuIGFuZCAgIAogICAgICAgICAgICAgICAgICAgICBSLiBTaGFwaXJhICAgRGV0ZXJtaW5pbmcgdGhlIE1pbmltdW0tQXJlYSBFbmNhc2luZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVjdGFuZ2xlIGZvciBhbiBBcmJpdHJhcnkgQ2xvc2VkIEN1cnZlICA0MDktLTQxMwogICAgICAgICAgICAgICBEYW5pZWwgRy4gQm9icm93ICAgQSBOb3RlIG9uIEhhc2ggTGlua2luZyAuIC4gLiAuIC4gLiAuIC4gLiA0MTMtLTQxNQogICAgICAgICAgICAgICAgUi4gRS4gV2ViZXIgYW5kICAgCiAgICAgICAgICAgICAgICAgICBCLiBHaWxjaHJpc3QgICBEaXNjcmltaW5hdGlvbiBpbiB0aGUgZW1wbG95bWVudCBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29tZW4gaW4gdGhlIGNvbXB1dGVyIGluZHVzdHJ5IC4gLiAuIC4gLiA0MTYtLTQxOAoKQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTQpWb2x1bWUgMTgsICBOdW1iZXIgOCwgQXVndXN0LCAxOTc1CgogICAgICAgICAgICAgICAgICBKb2huIEUuIFNob3JlICAgT24gdGhlIEV4dGVybmFsIFN0b3JhZ2UgRnJhZ21lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvZHVjZWQgYnkgRmlyc3QtRml0IGFuZCBCZXN0LUZpdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb2NhdGlvbiBTdHJhdGVnaWVzICAuIC4gLiAuIC4gLiAuIC4gLiA0MzMtLTQ0MAogICAgICAgICAgICAgICAgICBBLiBWLiBBaG8gYW5kICAgCiAgICAgICAgICAgICAgUy4gQy4gSm9obnNvbiBhbmQgICAKICAgICAgICAgICAgICAgICAgIEouIEQuIFVsbG1hbiAgIERldGVybWluaXN0aWMgUGFyc2luZyBvZiBBbWJpZ3VvdXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyYW1tYXJzIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNDQxLS00NTIKICAgICAgICAgICAgIEVkc2dlciBXLiBEaWprc3RyYSAgIEd1YXJkZWQgQ29tbWFuZHMsIE5vbmRldGVybWluYWN5IGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWFsIERlcml2YXRpb24gb2YgUHJvZ3JhbXMgIC4gLiAuIC4gLiA0NTMtLTQ1NwogICAgICAgICAgICAgICAgICAgTC4gVy4gQ290dG9uICAgUmVtYXJrIG9uIHN0YWJseSB1cGRhdGluZyBtZWFuIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhbmRhcmQgZGV2aWF0aW9uIG9mIGRhdGEgLiAuIC4gLiAuIC4gLiA0NTgtLTQ1OAogICAgICAgICAgU3R1YXJ0IEMuIFNoYXBpcm8gYW5kICAgCiAgICAgICAgICAgICAgU3RhbmxleSBDLiBLd2FzbnkgICBJbnRlcmFjdGl2ZSBDb25zdWx0aW5nIHZpYSBOYXR1cmFsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYW5ndWFnZSAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDQ1OS0tNDYyCiAgICAgICAgICAgICAgICAgICAgICBKb2huIFRvZGQgICBDb3JyaWdlbmR1bTogYGBUaGUgTGVtbmlzY2F0ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3RhbnRzJycgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA0NjItLTQ2MgogICAgICAgICAgICAgIEouIEcuIFZhdWNoZXIgYW5kICAgCiAgICAgICAgICAgICAgICAgICAgICAgUC4gRHV2YWwgICBDb3JyaWdlbmR1bTogYGBBIGNvbXBhcmlzb24gb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbXVsYXRpb24gZXZlbnQgbGlzdCBhbGdvcml0aG1zJycgLiAuIC4gNDYyLS00NjIKICAgICAgICAgICAgICAgICAgICBBLiBKLiBTbWl0aCAgIENvbW1lbnRzIG9uIGEgcGFwZXIgYnkgVC4gQy4gQ2hlbiBhbmQgSS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFQuIEhvICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNDYzLS00NjMKICAgICAgICAgICAgICAgICBTYWt0aSBQLiBHaG9zaCAgIENvbnNlY3V0aXZlIFN0b3JhZ2Ugb2YgUmVsZXZhbnQgUmVjb3JkcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBSZWR1bmRhbmN5ICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA0NjQtLTQ3MQogICAgICAgICAgICAgICAgIExlc2xpZSBMYW1wb3J0ICAgTXVsdGlwbGUgQnl0ZSBQcm9jZXNzaW5nIHdpdGggRnVsbC1Xb3JkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnN0cnVjdGlvbnMgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDQ3MS0tNDc1CiAgICAgICAgICAgICAgICAgS2VpdGggU2h3YXlkZXIgICBDb21iaW5pbmcgRGVjaXNpb24gUnVsZXMgaW4gYSBEZWNpc2lvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFibGUgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA0NzYtLTQ4MAoKQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTQpWb2x1bWUgMTgsICBOdW1iZXIgOSwgU2VwdGVtYmVyLCAxOTc1CgogICAgICAgICAgICAgR3V5IEwuIFN0ZWVsZSwgSnIuICAgTXVsdGlwcm9jZXNzaW5nIENvbXBhY3RpZnlpbmcgR2FyYmFnZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGVjdGlvbiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA0OTUtLTUwOAogICAgICAgICAgICAgIEpvbiBMb3VpcyBCZW50bGV5ICAgTXVsdGlkaW1lbnNpb25hbCBCaW5hcnkgU2VhcmNoIFRyZWVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VkIGZvciBBc3NvY2lhdGl2ZSBTZWFyY2hpbmcgLiAuIC4gLiAuIDUwOS0tNTE3CiAgICAgICAgICAgICAgIFIuIE1hcmsgQ2xhdWRzb24gICBEaWdpdGFsIFNpbXVsYXRpb24gb2YgUml2ZXIgUGxhbmt0b24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvcHVsYXRpb24gRHluYW1pY3MgIC4gLiAuIC4gLiAuIC4gLiAuIC4gNTE3LS01MjMKICAgICAgICAgICBXaWxsaWFtIEYuIFBpZXBtZWllciAgIE9wdGltYWwgQmFsYW5jaW5nIG9mIEkvTyBSZXF1ZXN0cyB0bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlza3MgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA1MjQtLTUyNwogICAgICAgICAgICAgICAgICAgQmVuIFdlZ2JyZWl0ICAgTWVjaGFuaWNhbCBQcm9ncmFtIEFuYWx5c2lzICAuIC4gLiAuIC4gLiA1MjgtLTUzOQoKQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTQpWb2x1bWUgMTgsICBOdW1iZXIgMTAsIE9jdG9iZXIsIDE5NzUKCiAgICAgICAgICAgICAgICAgIFJvYiBHZXJyaXRzZW4gICBBIFByZWxpbWluYXJ5IFN5c3RlbSBmb3IgdGhlIERlc2lnbiBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREJURyBEYXRhIFN0cnVjdHVyZXMgLiAuIC4gLiAuIC4gLiAuIC4gLiA1NTEtLTU1NwogICAgICAgICAgICAgICAgIE5hbiBDLiBTaHUgYW5kICAgCiAgICAgICAgICAgQmFycm9uIEMuIEhvdXNlbCBhbmQgICAKICAgICAgICAgICAgICAgICBWaW5jZW50IFkuIEx1bSAgIENPTlZFUlQ6IEEgSGlnaCBMZXZlbCBUcmFuc2xhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbiBMYW5ndWFnZSBmb3IgRGF0YSBDb252ZXJzaW9uICA1NTctLTU2NwogICAgICAgICAgIEpvaG4gTWlsZXMgU21pdGggYW5kICAgCiAgICAgICAgICBQaGlsaXAgWWVuLVRhbmcgQ2hhbmcgICBPcHRpbWl6aW5nIHRoZSBQZXJmb3JtYW5jZSBvZiBhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxhdGlvbmFsIEFsZ2VicmEgRGF0YSBCYXNlIEludGVyZmFjZSAgIDU2OC0tNTc5CiAgICAgICAgICAgICBNLiBNLiBBc3RyYWhhbiBhbmQgICAKICAgICAgICAgICAgICAgRC4gRC4gQ2hhbWJlcmxpbiAgIEltcGxlbWVudGF0aW9uIG9mIGEgU3RydWN0dXJlZCBFbmdsaXNoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWVyeSBMYW5ndWFnZSAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDU4MC0tNTg4CiAgICAgICAgICAgICAgICAgIEZhbmljYSBHYXZyaWwgICBNZXJnaW5nIHdpdGggUGFyYWxsZWwgUHJvY2Vzc29ycyAuIC4gLiAuIDU4OC0tNTkxCiAgICAgICAgICAgICAgICAgIE0uIFJlaXNlciBhbmQgICAKICAgICAgICAgICAgICAgICAgIEguIEtvYmF5YXNoaSAgIEhvcm5lcidzIFJ1bGUgZm9yIHRoZSBFdmFsdWF0aW9uIG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmFsIENsb3NlZCBRdWV1ZWluZyBOZXR3b3JrcyAuIC4gLiAuIDU5Mi0tNTkzCgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSAxOCwgIE51bWJlciAxMSwgTm92ZW1iZXIsIDE5NzUKCiAgICAgICAgICAgICAgICAgIEcuIFNhbHRvbiBhbmQgICAKICAgICAgICAgICAgICAgICAgICBBLiBXb25nIGFuZCAgIAogICAgICAgICAgICAgICAgICAgICBDLiBTLiBZYW5nICAgQSBWZWN0b3IgU3BhY2UgTW9kZWwgZm9yIEF1dG9tYXRpYwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXhpbmcgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA2MTMtLTYyMAogICAgICAgICAgIFJheW1vbmQgRi4gQm95Y2UgYW5kICAgCiAgICAgICBEb25hbGQgRC4gQ2hhbWJlcmxpbiBhbmQgICAKICAgICAgICAgVy4gRnJhbmsgS2luZywgSUlJIGFuZCAgIAogICAgICAgICAgICAgIE1pY2hhZWwgTS4gSGFtbWVyICAgU3BlY2lmeWluZyBRdWVyaWVzIGFzIFJlbGF0aW9uYWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4cHJlc3Npb25zOiBUaGUgU3F1YXJlIERhdGEgU3VibGFuZ3VhZ2UgNjIxLS02MjgKICAgICAgICAgICBIZW5yeSBGLiBMZWRnYXJkIGFuZCAgIAogICAgICAgICAgICAgICBNaWNoYWVsIE1hcmNvdHR5ICAgQSBnZW5lYWxvZ3kgb2YgY29udHJvbCBzdHJ1Y3R1cmVzICAuIC4gLiA2MjktLTYzOQogICAgICAgICAgICBTdXNhbiBMLiBHcmFoYW0gYW5kICAgCiAgICAgICAgICAgICAgIFN0ZXZlbiBQLiBSaG9kZXMgICBQcmFjdGljYWwgU3ludGFjdGljIEVycm9yIFJlY292ZXJ5IC4gLiAuIDYzOS0tNjUwIChvciA2MzktLTY0OT8/KQogICAgICAgICAgICBKYW1lcyBSLiBCaXRuZXIgYW5kICAgCiAgICAgICAgICAgICBFZHdhcmQgTS4gUmVpbmdvbGQgICBCYWNrdHJhY2sgUHJvZ3JhbW1pbmcgVGVjaG5pcXVlcyAuIC4gLiAuIDY1MS0tNjU2CiAgICAgICAgICAgIExhd3JlbmNlIFQuIEtvdSBhbmQgICAKICAgICAgICAgICAgICAgICAgICAgQy4gSy4gV29uZyAgIEEgTm90ZSBvbiB0aGUgU2V0IEJhc2lzIFByb2JsZW0gUmVsYXRlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGhlIENvbXBhY3Rpb24gb2YgQ2hhcmFjdGVyIFNldHMgIC4gLiA2NTYtLTY1NwoKQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTQpWb2x1bWUgMTgsICBOdW1iZXIgMTIsIERlY2VtYmVyLCAxOTc1CgogICAgICAgICAgICAgICAgICAgICBQZXRlciBOYXVyICAgUHJvZ3JhbW1pbmcgTGFuZ3VhZ2VzLCBOYXR1cmFsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYW5ndWFnZXMsIGFuZCBNYXRoZW1hdGljcyAuIC4gLiAuIC4gLiAuIDY3Ni0tNjgzCiAgICAgICAgICAgICBKb2huIEIuIEdvb2Rlbm91Z2ggICBFeGNlcHRpb24gSGFuZGxpbmc6IElzc3VlcyBhbmQgYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvcG9zZWQgTm90YXRpb24gIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA2ODMtLTY5NgogICAgICAgICAgICAgTWVoZGkgSmF6YXllcmkgYW5kICAgCiAgICAgICAgICAgV2lsbGlhbSBGLiBPZ2RlbiBhbmQgICAKICAgICAgICAgICAgICBXaWxsaWFtIEMuIFJvdW5kcyAgIFRoZSBJbnRyaW5zaWNhbGx5IEV4cG9uZW50aWFsIENvbXBsZXhpdHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBDaXJjdWxhcml0eSBQcm9ibGVtIGZvciBBdHRyaWJ1dGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyYW1tYXJzIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNjk3LS03MDYKICAgICAgICAgSGFycnkgQi4gSHVudCwgSUlJIGFuZCAgIAogICAgICAgIFRob21hcyBHLiBTenltYW5za2kgYW5kICAgCiAgICAgICAgICAgICAgSmVmZnJleSBELiBVbGxtYW4gICBPbiB0aGUgQ29tcGxleGl0eSBvZiBMUihrKSBUZXN0aW5nIC4gLiAuIDcwNy0tNzE2CiAgICAgICAgICAgIFN1c2FuIEwuIEdyYWhhbSBhbmQgICAKICAgICAgICAgICAgICAgICAgICBNYXJrIFdlZ21hbiAgIEEgZmFzdCBhbmQgdXN1YWxseSBsaW5lYXIgYWxnb3JpdGhtIGZvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsIGZsb3cgYW5hbHlzaXMgLiAuIC4gLiAuIC4gLiAuIC4gLiA3MTYtLTcxNgogICAgICAgICAgICAgIFJpY2hhcmQgSi4gTGlwdG9uICAgUmVkdWN0aW9uOiBBIE1ldGhvZCBvZiBQcm92aW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9wZXJ0aWVzIG9mIFBhcmFsbGVsIFByb2dyYW1zICAuIC4gLiAuIDcxNy0tNzIxCiAgICAgICAgICAgICAgICAgSi4gVC4gU2Nod2FydHogICBBdXRvbWF0aWMgRGF0YSBTdHJ1Y3R1cmUgQ2hvaWNlIGluIGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhbmd1YWdlIG9mIFZlcnkgSGlnaCBMZXZlbCAgLiAuIC4gLiAuIC4gNzIyLS03MjgKCkNvbW11bmljYXRpb25zIG9mIHRoZSBBQ00KVm9sdW1lIDE5LCAgTnVtYmVyIDEsIEphbnVhcnksIDE5NzYKCiAgICAgICAgICBMZW9uYXJkIEtsZWlucm9jayBhbmQgICAKICAgICAgICAgIFdpbGxpYW0gRS4gTmF5bG9yIGFuZCAgIAogICAgICAgICAgICAgICBIb2xnZXIgT3BkZXJiZWNrICAgQSBTdHVkeSBvZiBMaW5lIE92ZXJoZWFkIGluIHRoZSBBUlBBTkVUICAzLS0xMwogICAgICAgICAgICAgICAgTmVpbCBDLiBXaWxoZWxtICAgQW4gQW5vbWFseSBpbiBEaXNrIFNjaGVkdWxpbmc6IEEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXBhcmlzb24gb2YgRkNGUyBhbmQgU1NURiBTZWVrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTY2hlZHVsaW5nIFVzaW5nIGFuIEVtcGlyaWNhbCBNb2RlbCBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpc2sgQWNjZXNzZXMgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMTMtLTE4IChvciAxMy0tMTc/PykKICAgICAgICAgICAgICAgIENhcnNvbiBFLiBBZ25ldyAgIE9uIFF1YWRyYXRpYyBBZGFwdGl2ZSBSb3V0aW5nIEFsZ29yaXRobXMgMTgtLTIyCiAgICAgICAgICAgICAgUC4gTC4gS2FybHRvbiBhbmQgICAKICAgICAgICAgICAgICAgUy4gSC4gRnVsbGVyIGFuZCAgIAogICAgICAgICAgICAgIFIuIEUuIFNjcm9nZ3MgYW5kICAgCiAgICAgICAgICAgICAgICAgIEUuIEIuIEthZWhsZXIgICBQZXJmb3JtYW5jZSBvZiBIZWlnaHQtQmFsYW5jZWQgVHJlZXMgLiAuIDIzLS0yOAogICAgICAgICAgICAgICAgSi4gSi4gRmxvcmVudGluICAgSW5mb3JtYXRpb24gUmVmZXJlbmNlIENvZGluZyAuIC4gLiAuIC4gLiAyOS0tMzMKICAgICAgICAgQ2hhcmxlcyBSLiBMaXRlY2t5IGFuZCAgIAogICAgICAgICAgICAgICAgR29yZG9uIEIuIERhdmlzICAgU3R1ZHkgb2YgRXJyb3JzLCBFcnJvci1Qcm9uZW5lc3MsIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3IgRGlhZ25vc2lzIGluIENvYm9sIC4gLiAuIC4gLiAuIC4gLiAzMy0tMzcKCkNvbW11bmljYXRpb25zIG9mIHRoZSBBQ00KVm9sdW1lIDE5LCAgTnVtYmVyIDIsIEZlYnJ1YXJ5LCAxOTc2CgogICAgICAgICAgICAgICAgRG9uYWxkIEUuIEtudXRoICAgRXJyYXRhOiBgYEFuY2llbnQgQmFieWxvbmlhbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxnb3JpdGhtcycnCiAgICAgICAgICAgICBHcmVnb3IgVi4gQm9jaG1hbm4gICBTZW1hbnRpYyBFdmFsdWF0aW9uIGZyb20gTGVmdCB0byBSaWdodCAgIDU1LS02MgogICAgICAgICAgICAgICBSb25hbGQgTC4gUml2ZXN0ICAgT24gU2VsZi1Pcmdhbml6aW5nIFNlcXVlbnRpYWwgU2VhcmNoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIZXVyaXN0aWNzIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDYzLS02NwogICAgICAgICAgICAgICAgICAgICBGLiBNLiBJdmVzICAgUGVybXV0YXRpb24gRW51bWVyYXRpb246IEZvdXIgTmV3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQZXJtdXRhdGlvbiBBbGdvcml0aG1zIC4gLiAuIC4gLiAuIC4gLiAuIDY4LS03MgogICAgICAgICAgICAgICBBbGJlcnRvIE1hcnRlbGxpICAgQXBwbGljYXRpb24gb2YgSGV1cmlzdGljIFNlYXJjaCBNZXRob2RzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBFZGdlIGFuZCBDb250b3VyIERldGVjdGlvbiAgLiAuIC4gLiAuIDczLS04MwogICAgICAgICAgICAgICBLZW5uZXRoIEYuIFNpbGVyICAgQSBTdG9jaGFzdGljIEV2YWx1YXRpb24gTW9kZWwgZm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhYmFzZSBPcmdhbml6YXRpb25zIGluIERhdGEgUmV0cmlldmFsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW1zICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDg0LS05NQogICAgICAgICAgICAgICAgICAgUm9uYWxkIEZhZ2luICAgQSBDb3VudGVyaW50dWl0aXZlIEV4YW1wbGUgb2YgQ29tcHV0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhZ2luZyAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gOTYtLTk3CiAgICAgICAgICAgICAgICAgRWh1ZCBBcnR6eSBhbmQgICAKICAgICAgICAgICAgIEphbWVzIEEuIEhpbmRzIGFuZCAgIAogICAgICAgICAgICAgICAgICBIYXJyeSBKLiBTYWFsICAgQSBGYXN0IERpdmlzaW9uIFRlY2huaXF1ZSBmb3IgQ29uc3RhbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpdmlzb3JzIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gOTgtLTEwMQoKQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTQpWb2x1bWUgMTksICBOdW1iZXIgMywgTWFyY2gsIDE5NzYKCiAgICAgICAgICAgICAgIEFsbGVuIE5ld2VsbCBhbmQgICAKICAgICAgICAgICAgICAgSGVyYmVydCBBLiBTaW1vbiAgIENvbXB1dGVyIFNjaWVuY2UgYXMgRW1waXJpY2FsIElucXVpcnk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeW1ib2xzIGFuZCBTZWFyY2ggLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDExMy0tMTI2CiAgICAgICAgICAgICAgSmFpciBNLiBCYWJhZCBhbmQgICAKICAgICAgICAgICAgICAgTWFyaW8gTS4gTW9kaWFubyAgIEpvaW5pbmcgUG9saWNpZXMgaW4gYSBNdWx0aXByaW9yaXR5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNdWx0aWNsYXNzIEJhdGNoIENvbXB1dGVyIFN5c3RlbSAuIC4gLiAuIDEyNy0tMTM2CiAgICAgICAgICAgICAgICBGLiBFLiBBbGxlbiBhbmQgICAKICAgICAgICAgICAgICAgICAgICAgICBKLiBDb2NrZSAgIEEgUHJvZ3JhbSBEYXRhIEZsb3cgQW5hbHlzaXMgUHJvY2VkdXJlICAgMTM3LS0xNDcgKG9yIDEzNy0tMTQ2Pz8pCiAgICAgICAgICAgICAgICAgTmFmdGFseSBNaW5za2kgICBJbnRlbnRpb25hbCBSZXNvbHV0aW9uIG9mIFByaXZhY3kKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb3RlY3Rpb24gaW4gRGF0YWJhc2UgU3lzdGVtcyAuIC4gLiAuIC4gMTQ4LS0xNTkKICAgICAgICAgICAgICAgICAgICAgTS4gTmFmdGFseSAgIEludGVudGlvbmFsIHJlc29sdXRpb24gb2YgcHJpdmFjeQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGlvbiBpbiBkYXRhYmFzZSBzeXN0ZW1zIC4gLiAuIC4gLiAxNDgtLTE1OQoKQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTQpWb2x1bWUgMTksICBOdW1iZXIgNCwgQXByaWwsIDE5NzYKCiAgICAgICAgICAgICAgICAgICAgTy4gUi4gU21vb3QgICBEZXZlbG9wbWVudCBvZiBhbiBpbnRlcm5hdGlvbmFsIHN5c3RlbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGxlZ2FsIHByb3RlY3Rpb24gb2YgY29tcHV0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW1zIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMTcxLS0xNzQKICAgICAgICAgICAgICAgQmVubmV0IFAuIExpZW50eiAgIEEgY29tcGFyYXRpdmUgZXZhbHVhdGlvbiBvZiB2ZXJzaW9ucyBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQkFTSUMgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAxNzUtLTE4MQogICAgICAgICAgICAgICAgICAgICBKLiBSYXltb25kICAgTEc6IEEgbGFuZ3VhZ2UgZm9yIGFuYWx5dGljIGdlb21ldHJ5IC4gLiAxODItLTE4NwogICAgICAgICAgICAgICAgICAgUm9uYWxkIEZhZ2luICAgQ29ycmlnZW5kdW06IGBgQSBDb3VudGVyaW50dWl0aXZlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGFtcGxlIG9mIENvbXB1dGVyIFBhZ2luZycnIC4gLiAuIC4gLiAuICAxODcKICAgICAgICAgICAgICAgIFNobXVlbCBLYXR6IGFuZCAgIAogICAgICAgICAgICAgICAgICAgIFpvaGFyIE1hbm5hICAgTG9naWNhbCBBbmFseXNpcyBvZiBQcm9ncmFtcyAuIC4gLiAuIC4gLiAxODgtLTIwNgoKQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTQpWb2x1bWUgMTksICBOdW1iZXIgNSwgTWF5LCAxOTc2CgogICAgICAgICAgICAgRG9yb3RoeSBFLiBEZW5uaW5nICAgQSBMYXR0aWNlIE1vZGVsIG9mIFNlY3VyZSBJbmZvcm1hdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxvdyAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAyMzYtLTI0MwogICAgICAgICAgICAgSm9uYXRoYW4gSy4gTWlsbGVuICAgU2VjdXJpdHkgS2VybmVsIFZhbGlkYXRpb24gaW4gUHJhY3RpY2UgICAyNDMtLTI1MAogICAgICAgICAgQnV0bGVyIFcuIExhbXBzb24gYW5kICAgCiAgICAgICAgICAgICAgSG93YXJkIEUuIFN0dXJnaXMgICBSZWZsZWN0aW9ucyBvbiBhbiBPcGVyYXRpbmcgU3lzdGVtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXNpZ24gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDI1MS0tMjY1CiAgICAgICAgICAgIEEuIE4uIEhhYmVybWFubiBhbmQgICAKICAgICAgICAgICAgICBMYXdyZW5jZSBGbG9uIGFuZCAgIAogICAgICAgICAgICAgICAgICBMZWUgQ29vcHJpZGVyICAgTW9kdWxhcml6YXRpb24gYW5kIEhpZXJhcmNoeSBpbiBhIEZhbWlseQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgT3BlcmF0aW5nIFN5c3RlbXMgLiAuIC4gLiAuIC4gLiAuIC4gLiAyNjYtLTI3MgogICAgICAgICAgICAgICAgIEpvaG4gSC4gSG93YXJkICAgUHJvdmluZyBNb25pdG9ycyAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAyNzMtLTI3OSAob3IgMjczLS0yNzg/PykKICAgICAgICAgICAgICAgU3VzYW4gT3dpY2tpIGFuZCAgIAogICAgICAgICAgICAgICAgICAgIERhdmlkIEdyaWVzICAgVmVyaWZ5aW5nIFByb3BlcnRpZXMgb2YgUGFyYWxsZWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2dyYW1zOiBBbiBBeGlvbWF0aWMgQXBwcm9hY2ggIC4gLiAuIC4gMjc5LS0yODUKICAgICAgICAgICBBLiBXYXluZSBNYWRpc29uIGFuZCAgIAogICAgICAgICAgICAgICAgIEFsYW4gUC4gQmF0c29uICAgQ2hhcmFjdGVyaXN0aWNzIG9mIFByb2dyYW0gTG9jYWxpdGllcyAgICAyODUtLTI5NAogICAgICAgICAgIEJhcnRvbiBHLiBQcmlldmUgYW5kICAgCiAgICAgICAgICAgICAgICAgICAgUi4gUy4gRmFicnkgICBWTUlOIC0tLSBhbiBPcHRpbWFsIFZhcmlhYmxlLVNwYWNlIFBhZ2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcGxhY2VtZW50IEFsZ29yaXRobSAgLiAuIC4gLiAuIC4gLiAuIC4gMjk1LS0yOTcKICAgICAgICAgICAgICBXZXNsZXkgVy4gQ2h1IGFuZCAgIAogICAgICAgICAgICAgICBIb2xnZXIgT3BkZXJiZWNrICAgQW5hbHlzaXMgb2YgdGhlIFBGRiBSZXBsYWNlbWVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxnb3JpdGhtIHZpYSBhIFNlbWktTWFya292IE1vZGVsICAuIC4gLiAyOTgtLTMwNAoKQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTQpWb2x1bWUgMTksICBOdW1iZXIgNiwgSnVuZSwgMTk3NgoKICAgICAgICAgICAgICBPLiBFLiBUYXVsYmVlIGFuZCAgIAogICAgICAgICAgICAgICAgICAgIFMuIEQuIENvbnRlICAgUHJvZHVjdGlvbiBhbmQgZW1wbG95bWVudCBvZiBQaC5ELidzIGluCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wdXRlciBzY2llbmNlIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDMxMS0tMzEzCiAgICAgICAgRGVubmlzIEcuIFNldmVyYW5jZSBhbmQgICAKICAgICAgICAgICAgICAgUmljYXJkbyBBLiBEdWhuZSAgIEEgUHJhY3RpdGlvbmVyJ3MgR3VpZGUgdG8gQWRkcmVzc2luZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxnb3JpdGhtcyAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAzMTQtLTMyNgogICAgICAgICAgICAgRm9yZXN0IEJhc2tldHQgYW5kICAgCiAgICAgICAgICAgICAgICAgQWxhbiBKYXkgU21pdGggICBJbnRlcmZlcmVuY2UgaW4gTXVsdGlwcm9jZXNzb3IgQ29tcHV0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbXMgd2l0aCBJbnRlcmxlYXZlZCBNZW1vcnkgIC4gLiAuIC4gMzI3LS0zMzQKICAgICAgICAgICAgIEdpZGVvbiBGcmllZGVyIGFuZCAgIAogICAgICAgICAgICAgICAgICBIYXJyeSBKLiBTYWFsICAgUHJvY2VzcyBmb3IgdGhlIERldGVybWluYXRpb24gb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZHJlc3NlcyBpbiBWYXJpYWJsZSBMZW5ndGggQWRkcmVzc2luZyAgMzM1LS0zMzgKICAgICAgICAgICAgICAgICAgRGF2aWQgUy4gV2lzZSAgIFJlZmVyZW5jaW5nIExpc3RzIGJ5IGFuIEVkZ2UgLiAuIC4gLiAuIC4gMzM4LS0zNDIKICAgICAgICAgIEhlbG11dCBTY2h1bWFjaGVyIGFuZCAgIAogICAgICAgICAgICAgIEtlbm5ldGggQy4gU2V2Y2lrICAgVGhlIHN5bnRoZXRpYyBhcHByb2FjaCB0byBkZWNpc2lvbiB0YWJsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udmVyc2lvbiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAzNDMtLTM1MQogICAgICAgICAgICAgICBEb3VnbGFzIFcuIENsYXJrICAgQW4gRWZmaWNpZW50IExpc3QgTW92aW5nIEFsZ29yaXRobSBVc2luZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RhbnQgV29ya3NwYWNlIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAzNTItLTM1NCAob3IgMzUzLS0zNTQ/PykKICAgICAgICAgICAgIEd1eSBMLiBTdGVlbGUsIEpyLiAgIENvcnJpZ2VuZHVtOiBgYE11bHRpcHJvY2Vzc2luZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tcGFjdGlmeWluZyBHYXJiYWdlIENvbGxlY3Rpb24nJyAuIC4gLiAzNTQtLTM1NAogICAgICAgICAgICAgICAgICBHYXJ5IEQuIEtub3R0ICAgQSBOdW1iZXJpbmcgU3lzdGVtIGZvciBQZXJtdXRhdGlvbnMgb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbWJpbmF0aW9ucyAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMzU1LS0zNTYKCkNvbW11bmljYXRpb25zIG9mIHRoZSBBQ00KVm9sdW1lIDE5LCAgTnVtYmVyIDcsIEp1bHksIDE5NzYKCiAgICAgICAgICAgICAgICBTLiBELiBDb250ZSBhbmQgICAKICAgICAgICAgICAgICAgICBNLiBILiBIYWxzdGVhZCAgIFRlY2hub2xvZ3kgb2YgQ29tcHV0ZXIgQ2VudGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYW5hZ2VtZW50OiBhIFByb3Bvc2VkIENvdXJzZSBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyYWR1YXRlIFByb2Zlc3Npb25hbCBQcm9ncmFtcyBpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHV0ZXIgU2NpZW5jZSBvciBpbiBJbmZvcm1hdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtcyAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAzNjktLTM3MAogICAgICAgICAgICAgICBSb2JlcnQgTS4gS2VsbGVyICAgRm9ybWFsIFZlcmlmaWNhdGlvbiBvZiBQYXJhbGxlbCBQcm9ncmFtcyAzNzEtLTM4NAogICAgICAgICAgICAgICAgICBKYW1lcyBDLiBLaW5nICAgU3ltYm9saWMgRXhlY3V0aW9uIGFuZCBQcm9ncmFtIFRlc3RpbmcgICAzODUtLTM5NAogICAgICAgICBSb2JlcnQgTS4gTWV0Y2FsZmUgYW5kICAgCiAgICAgICAgICAgICAgICAgRGF2aWQgUi4gQm9nZ3MgICBFdGhlcm5ldDogRGlzdHJpYnV0ZWQgUGFja2V0IFN3aXRjaGluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIExvY2FsIENvbXB1dGVyIE5ldHdvcmtzICAuIC4gLiAuIC4gLiAzOTUtLTQwNAogICAgICAgICAgICBDaGVuZy1XZW4gQ2hlbmcgYW5kICAgCiAgICAgICAgICAgICAgICAgICAgSm9uYXMgUmFiaW4gICBTeW50aGVzaXMgb2YgRGVjaXNpb24gUnVsZXMgIC4gLiAuIC4gLiAuIDQwNC0tNDA2CiAgICAgICAgICAgICAgR2VvcmdlIFMuIEZpc2htYW4gICBTYW1wbGluZyBmcm9tIHRoZSBHYW1tYS1kaXN0cmlidXRpb24gb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgY29tcHV0ZXIgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNDA3LS00MDkKICAgICAgICAgICAgICAgICAgICAgIEt1cnQgTWFseSAgIENvbXByZXNzZWQgVHJpZXMgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNDA5LS00MTUKICAgICAgICAgICAgICAgICAgV2FycmVuIEJ1cnRvbiAgIEEgYnVkZHkgc3lzdGVtIHZhcmlhdGlvbiBmb3IgZGlzawogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZSBhbGxvY2F0aW9uIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA0MTYtLTQxNwogICAgICAgICAgICAgICAgICAgRy4gSC4gR29ubmV0ICAgSGVhcHMgYXBwbGllZCB0byBldmVudCBkcml2ZW4gbWVjaGFuaXNtcyA0MTctLTQxOAoKQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTQpWb2x1bWUgMTksICBOdW1iZXIgOCwgQXVndXN0LCAxOTc2CgogICAgICAgICAgICAgICAgSm9obiBKLiBEb25vdmFuICAgVG9vbHMgYW5kIFBoaWxvc29waHkgZm9yIFNvZnR3YXJlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFZHVjYXRpb24gIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDQzMC0tNDM2CiAgICAgICAgICAgICAgICAgIFIuIEQuIFRlbm5lbnQgICBUaGUgRGVub3RhdGlvbmFsIFNlbWFudGljcyBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvZ3JhbW1pbmcgTGFuZ3VhZ2VzICAuIC4gLiAuIC4gLiAuIC4gLiA0MzctLTQ1MwogICAgICAgICAgICAgICAgIEphbWVzIEguIENsYXJrICAgRGVzaWduaW5nIFN1cmZhY2VzIGluIDMtRCAgLiAuIC4gLiAuIC4gLiA0NTQtLTQ2MAogICAgICAgIE1pY2hhZWwgQS4gSGFycmlzb24gYW5kICAgCiAgICAgICAgICAgIFdhbHRlciBMLiBSdXp6byBhbmQgICAKICAgICAgICAgICAgICBKZWZmcmV5IEQuIFVsbG1hbiAgIFByb3RlY3Rpb24gaW4gT3BlcmF0aW5nIFN5c3RlbXMgIC4gLiAuIC4gNDYxLS00NzEKICAgICAgICAgICAgICAgRC4gUy4gSGlyc2NoYmVyZyAgIEFuIEluc2VydGlvbiBUZWNobmlxdWUgZm9yIE9uZS1TaWRlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGVpZ2h0LUJhbGFuY2VkIFRyZWVzICAuIC4gLiAuIC4gLiAuIC4gLiA0NzEtLTQ3MwoKQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTQpWb2x1bWUgMTksICBOdW1iZXIgOSwgU2VwdGVtYmVyLCAxOTc2CgogICAgICAgICAgICAgIFdlc2xleSBXLiBDaHUgYW5kICAgCiAgICAgICAgICAgICAgIEhvbGdlciBPcGRlcmJlY2sgICBDb3JyaWdlbmR1bTogYGBBbmFseXNpcyBvZiB0aGUgUEZGCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlbWVudCBhbGdvcml0aG0gdmlhIGEgc2VtaS1NYXJrb3YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsJycKICAgICAgICAgICAgICAgICAgIEJlbiBXZWdicmVpdCAgIENvcnJpZ2VuZHVtOiBgYEZhc3RlciBSZXRyaWV2YWwgZnJvbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGV4dCBUcmVlcycnICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAgID8/CiAgICAgICAgICAgICAgIFBoaWxpcCBMLiBXYWRsZXIgICBBbmFseXNpcyBvZiBhbiBBbGdvcml0aG0gZm9yIFJlYWwgVGltZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2FyYmFnZSBDb2xsZWN0aW9uIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA0OTEtLTUwMAogICAgICAgICAgICAgICAgICAgIENoZWUgSy4gWWFwICAgTmV3IFVwcGVyIEJvdW5kcyBmb3IgU2VsZWN0aW9uIC4gLiAuIC4gLiA1MDEtLTUwOAogICAgICAgICAgICAgICAgTWljaGFlbCBDLiBMb3VpICAgV2VpZ2h0ZWQgRGVyaXZhdGlvbiBUcmVlcyAgLiAuIC4gLiAuIC4gLiA1MDktLTUxMwogICAgICAgICAgICAgIEtlbm5ldGggRy4gV2FsdGVyICAgUmVjdXJzaW9uIEFuYWx5c2lzIGZvciBDb21waWxlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW1pemF0aW9uIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA1MTQtLTUxNgogICAgICAgICAgICBKYW1lcyBSLiBCaXRuZXIgYW5kICAgCiAgICAgICAgICAgICBHaWRlb24gRWhybGljaCBhbmQgICAKICAgICAgICAgICAgIEVkd2FyZCBNLiBSZWluZ29sZCAgIEVmZmljaWVudCBHZW5lcmF0aW9uIG9mIHRoZSBCaW5hcnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZmxlY3RlZCBHcmF5IENvZGUgYW5kIEl0cyBBcHBsaWNhdGlvbnMgNTE3LS01MjEKICAgICAgICAgICBMLiBQZXRlciBEZXV0c2NoIGFuZCAgIAogICAgICAgICAgICAgICBEYW5pZWwgRy4gQm9icm93ICAgQW4gRWZmaWNpZW50LCBJbmNyZW1lbnRhbCwgQXV0b21hdGljCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHYXJiYWdlIENvbGxlY3RvciAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDUyMi0tNTI2CiAgICAgICAgICAgICAgICAgICBCZW4gV2VnYnJlaXQgICBGYXN0ZXIgUmV0cmlldmFsIGZyb20gQ29udGV4dCBUcmVlcyAgLiAuIDUyNi0tNTI5CgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSAxOSwgIE51bWJlciAxMCwgT2N0b2JlciwgMTk3NgoKICAgICAgICAgICAgIEphbWVzIEYuIEJsaW5uIGFuZCAgIAogICAgICAgICAgICAgICBNYXJ0aW4gRS4gTmV3ZWxsICAgVGV4dHVyZSBhbmQgUmVmbGVjdGlvbiBpbiBDb21wdXRlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVkIEltYWdlcyAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA1NDItLTU0NwogICAgICAgICAgICAgICAgIEphbWVzIEguIENsYXJrICAgSGllcmFyY2hpY2FsIEdlb21ldHJpYyBNb2RlbHMgZm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaXNpYmxlIFN1cmZhY2UgQWxnb3JpdGhtcyAuIC4gLiAuIC4gLiAuIDU0Ny0tNTU0CiAgICAgICAgICAgICAgICBKb3NodWEgWi4gTGV2aW4gICBBIFBhcmFtZXRyaWMgQWxnb3JpdGhtIGZvciBEcmF3aW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQaWN0dXJlcyBvZiBTb2xpZCBPYmplY3RzIENvbXBvc2VkIG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWFkcmljIFN1cmZhY2VzIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDU1NS0tNTYzCiAgICAgICAgICAgICAgICAgTi4gQnVydG55ayBhbmQgICAKICAgICAgICAgICAgICAgICAgICAgICAgTS4gV2VpbiAgIEludGVyYWN0aXZlIFNrZWxldG9uIFRlY2huaXF1ZXMgZm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmhhbmNpbmcgTW90aW9uIER5bmFtaWNzIGluIEtleSBGcmFtZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQW5pbWF0aW9uICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA1NjQtLTU2OQogICAgICAgICAgICAgICAgIEphbWVzIFcuIEZyYW5lICAgVGhlIEJNRCBhbmQgQk1EUCBTZXJpZXMgb2YgU3RhdGlzdGljYWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXB1dGVyIFByb2dyYW1zICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNTcwLS01NzYKICAgICAgICAgICAgICBDLiBEdW9uZy1LaWVuIGFuZCAgIAogICAgICAgICAgICAgSC4tSi4gSG9mZm1hbm4gYW5kICAgCiAgICAgICAgICAgICAgICAgICAgICAgIEQuIE11dGggICBBbiBpbXByb3ZlbWVudCB0byBNYXJ0aW4ncyBhbGdvcml0aG0gZm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wdXRhdGlvbiBvZiBsaW5lYXIgcHJlY2VkZW5jZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25zICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA1NzYtLTU3NwogUmljaGFyZCBHLiBNb250YW5lbGxpLCBKci4gYW5kICAgCiAgICAgICAgICAgICAgIFNhbmRyYSBBLiBNYW1yYWsgICBTdGF0dXMgb2YgV29tZW4gYW5kIE1pbm9yaXRpZXMgaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFjYWRlbWljIENvbXB1dGVyIFNjaWVuY2UgIC4gLiAuIC4gLiAuIC4gNTc4LS01ODEKCkNvbW11bmljYXRpb25zIG9mIHRoZSBBQ00KVm9sdW1lIDE5LCAgTnVtYmVyIDExLCBOb3ZlbWJlciwgMTk3NgoKICAgICAgICAgICAgICAgICAgICAgRC4gVC4gUm9zcyAgIEhvbWlsaWVzIGZvciBodW1ibGUgc3RhbmRhcmRzIChjb21wdXRlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25zKSAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA1OTUtLTYwMAogICAgICAgICAgIEhlbnJ5IEYuIExlZGdhcmQgYW5kICAgCiAgICAgICAgICAgICAgICBXaWxsaWFtIEMuIENhdmUgICBDb2JvbCBVbmRlciBDb250cm9sICAuIC4gLiAuIC4gLiAuIC4gLiAuIDYwMS0tNjA4CiAgICAgICAgICAgVGhvbWFzIFIuIFdpbGNveCBhbmQgICAKICAgICAgICAgICAgICBBbGFuIE0uIERhdmlzIGFuZCAgIAogICAgICAgICAgICAgTWljaGFlbCBILiBUaW5kYWxsICAgRGVzaWduIGFuZCBJbXBsZW1lbnRhdGlvbiBvZiBhIFRhYmxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEcml2ZW4sIEludGVyYWN0aXZlIERpYWdub3N0aWMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2dyYW1taW5nIFN5c3RlbSAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNjA5LS02MTYKICAgICAgICAgICAgICAgICAgICBGcmFuayBSdWJpbiAgIEV4cGVyaW1lbnRzIGluIFRleHQgRmlsZSBDb21wcmVzc2lvbiAuIC4gNjE3LS02MjMgKG9yIDYxNy0tNjIyPz8pCiAgICAgICAgICAgICAgSy4gUC4gRXN3YXJhbiBhbmQgICAKICAgICAgICAgICAgICAgICBKLiBOLiBHcmF5IGFuZCAgIAogICAgICAgICAgICAgICAgUi4gQS4gTG9yaWUgYW5kICAgCiAgICAgICAgICAgICAgICAgIEkuIEwuIFRyYWlnZXIgICBUaGUgbm90aW9ucyBvZiBjb25zaXN0ZW5jeSBhbmQgcHJlZGljYXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NrcyBpbiBhIGRhdGFiYXNlIHN5c3RlbSAuIC4gLiAuIC4gLiAuIDYyNC0tNjMzCiAgICAgICAgICAgICAgICBLLiBNYXJ1eWFtYSBhbmQgICAKICAgICAgICAgICAgICAgICAgICBTLiBFLiBTbWl0aCAgIE9wdGltYWwgUmVvcmdhbml6YXRpb24gb2YgRGlzdHJpYnV0ZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNwYWNlIERpc2sgRmlsZXMgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNjM0LS02NDIKICAgICAgICAgICAgICBSaWNoYXJkIEcuIEhhbWxldCAgIEhpZ2gtTGV2ZWwgQmluZGluZyB3aXRoIExvdy1MZXZlbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlua2VycyAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA2NDItLTY0NAoKQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTQpWb2x1bWUgMTksICBOdW1iZXIgMTIsIERlY2VtYmVyLCAxOTc2CgogICAgICAgICAgICAgICAgIEplYW4gRS4gU2FtbWV0ICAgUm9zdGVyIG9mIFByb2dyYW1taW5nIExhbmd1YWdlcyBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5NzQtLTc1IC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNjU1LS02NjkKICAgICAgICAgICAgICAgICBCcnVjZSBXLiBBcmRlbiAgIFRoZSBDb21wdXRlciBTY2llbmNlIGFuZCBFbmdpbmVlcmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzZWFyY2ggU3R1ZHkgKENPU0VSUykgIC4gLiAuIC4gLiAuIC4gLiA2NzAtLTY3MwogICAgICAgSi4gRi4gTnVuYW1ha2VyLCBKci4gYW5kICAgCiAgICAgQmVubiBSLiBLb25zeW5za2ksIEpyLiBhbmQgICAKICAgICAgICAgICAgICAgICAgVGhvbWFzIEhvIGFuZCAgIAogICAgICAgICAgICAgICAgICAgIENhcmwgU2luZ2VyICAgQ29tcHV0ZXItQWlkZWQgQW5hbHlzaXMgYW5kIERlc2lnbiBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5mb3JtYXRpb24gU3lzdGVtcyAgLiAuIC4gLiAuIC4gLiAuIC4gLiA2NzQtLTY4NwogICAgICAgICAgICBHZW9yZ2UgU3RvY2ttYW4gYW5kICAgCiAgICAgICAgICAgICAgIExhdmVlbiBLYW5hbCBhbmQgICAKICAgICAgICAgICAgICAgICAgICAgTS4gQy4gS3lsZSAgIFN0cnVjdHVyYWwgUGF0dGVybiBSZWNvZ25pdGlvbiBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2Fyb3RpZCBQdWxzZSBXYXZlcyBVc2luZyBhIEdlbmVyYWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdhdmVmb3JtIFBhcnNpbmcgU3lzdGVtICAuIC4gLiAuIC4gLiAuIC4gNjg4LS02OTUKCkNvbW11bmljYXRpb25zIG9mIHRoZSBBQ00KVm9sdW1lIDIwLCAgTnVtYmVyIDEsIEphbnVhcnksIDE5NzcKCiAgICAgICAgICAgICAgIEFsbGVuIHZhbiBHZWxkZXIgICBTdHJ1Y3R1cmVkIHByb2dyYW1taW5nIGluIENPQk9MOiBhbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwcm9hY2ggZm9yIGFwcGxpY2F0aW9uIHByb2dyYW1tZXJzIC4gLiAyLS0xMgogICAgICAgICBSaWNoYXJkIEguIEF1c3RpbmcgYW5kICAgCiAgICAgICAgICAgIEJydWNlIEguIEJhcm5lcyBhbmQgICAKICAgICAgICAgICAgICAgIEdlcmFsZCBMLiBFbmdlbCAgIEEgU3VydmV5IG9mIHRoZSBMaXRlcmF0dXJlIGluIENvbXB1dGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTY2llbmNlIEVkdWNhdGlvbiBTaW5jZSBDdXJyaWN1bHVtICc2OCAgIDEzLS0yMQogICAgICAgICAgICAgICAgICBKYWlyIE0uIEJhYmFkICAgQSBSZWNvcmQgYW5kIEZpbGUgUGFydGl0aW9uaW5nIE1vZGVsIC4gLiAyMi0tMzEgKG9yIDIyLS0zMD8/KQogICAgICAgICAgQWxiZXJ0IEwuIFpvYnJpc3QgYW5kICAgCiAgICAgIEZyZWRlcmljayBSLiBDYXJsc29uLCBKci4gICBEZXRlY3Rpb24gb2YgQ29tYmluZWQgT2NjdXJyZW5jZXMgIC4gLiAuIDMxLS0zNiAob3IgMzEtLTM1Pz8pCiAgICAgICAgICAgICAgIEEuIFAuIEJhdHNvbiBhbmQgICAKICAgICAgICAgICAgICAgICBSLiBFLiBCcnVuZGFnZSAgIFNlZ21lbnQgU2l6ZXMgYW5kIExpZmV0aW1lcyBpbiBBbGdvbCA2MAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvZ3JhbXMgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAzNi0tNDQKICAgICAgICAgICAgICAgICAgICBEYXZpZCBHcmllcyAgIE9uIEJlbGlldmluZyBQcm9ncmFtcyB0byBiZSBDb3JyZWN0ICAuIC4gNDktLTUwCgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSAyMCwgIE51bWJlciAyLCBGZWJydWFyeSwgMTk3NwoKICAgICAgICAgICAgICAgTWVydmluIEUuIE11bGxlciAgIEFuIEFwcHJvYWNoIHRvIE11bHRpZGltZW5zaW9uYWwgRGF0YQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXkgUHJvY2Vzc2luZyBieSBDb21wdXRlciAuIC4gLiAuIC4gLiA2My0tNzcKICAgICAgICAgICBEb3VnbGFzIFcuIENsYXJrIGFuZCAgIAogICAgICAgICAgICAgICBDLiBDb3JkZWxsIEdyZWVuICAgQW4gRW1waXJpY2FsIFN0dWR5IG9mIExpc3QgU3RydWN0dXJlIGluCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSVNQIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDc4LS04NwogICAgICAgICAgICBGLiBQLiBQcmVwYXJhdGEgYW5kICAgCiAgICAgICAgICAgICAgICAgICAgIFMuIEouIEhvbmcgICBDb252ZXggSHVsbHMgb2YgRmluaXRlIFNldHMgb2YgUG9pbnRzIGluCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUd28gYW5kIFRocmVlIERpbWVuc2lvbnMgLiAuIC4gLiAuIC4gLiAuIDg3LS05MwogICAgICAgICAgICAgICBNLiBDLiBFYXN0b24gYW5kICAgCiAgICAgICAgICAgICAgICAgIEIuIFQuIEJlbm5ldHQgICBUcmFuc2llbnQtRnJlZSBXb3JraW5nLVNldCBTdGF0aXN0aWNzICAgIDkzLS05OQogICAgICAgICAgICAgICAgIEphY2sgQnJlc2VuaGFtICAgQSBMaW5lYXIgQWxnb3JpdGhtIGZvciBJbmNyZW1lbnRhbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlnaXRhbCBEaXNwbGF5IG9mIENpcmN1bGFyIEFyY3MgLiAuIC4gLiAxMDAtLTEwNgogICAgICAgIFRob2RkaSBDLiBULiBLb3RpYWggYW5kICAgCiAgICAgICAgICAgICBEYXZpZCBJLiBTdGVpbmJlcmcgICBPY2N1cnJlbmNlcyBvZiBDeWNsaW5nIGFuZCBPdGhlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGhlbm9tZW5hIEFyaXNpbmcgaW4gYSBDbGFzcyBvZiBMaW5lYXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2dyYW1taW5nIE1vZGVscyAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMTA3LS0xMTIKICAgICAgICAgICAgICAgICAgR2FyeSBELiBLbm90dCAgIEEgTnVtYmVyaW5nIFN5c3RlbSBmb3IgQmluYXJ5IFRyZWVzICAuIC4gMTEzLS0xMTUKCkNvbW11bmljYXRpb25zIG9mIHRoZSBBQ00KVm9sdW1lIDIwLCAgTnVtYmVyIDMsIE1hcmNoLCAxOTc3CgogICAgICAgICAgICAgICAgIFBoaWxpcCBDbGFwc29uICAgSW1wcm92aW5nIHRoZSBBY2Nlc3MgVGltZSBmb3IgUmFuZG9tCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY2Nlc3MgRmlsZXMgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDEyNy0tMTM1CiAgICAgICAgICAgICAgICAgICBDLiBULiBZdSBhbmQgICAKICAgICAgICAgICAgICAgICAgICAgIEcuIFNhbHRvbiAgIEVmZmVjdGl2ZSBJbmZvcm1hdGlvbiBSZXRyaWV2YWwgVXNpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlcm0gQWNjdXJhY3kgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMTM1LS0xNDIKICAgICAgICAgICAgICAgICAgICBBbXVuZCBMdW5kZSAgIEVtcGlyaWNhbCBFdmFsdWF0aW9uIG9mIFNvbWUgRmVhdHVyZXMgb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3RydWN0aW9uIFNldCBQcm9jZXNzb3IgQXJjaGl0ZWN0dXJlcyAgMTQzLS0xNTMKICAgICAgICAgICAgICAgIFIuIE0uIEJyb3duIGFuZCAgIAogICAgICAgICAgICAgICBKLiBDLiBCcm93bmUgYW5kICAgCiAgICAgICAgICAgICAgICAgICBLLiBNLiBDaGFuZHkgICBNZW1vcnkgTWFuYWdlbWVudCBhbmQgUmVzcG9uc2UgVGltZSAgLiAuIDE1My0tMTY1CiAgICAgICAgICAgICAgICAgIFdhcnJlbiBCdXJ0b24gICBSZXByZXNlbnRhdGlvbiBvZiBNYW55LVNpZGVkIFBvbHlnb25zCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgUG9seWdvbmFsIExpbmVzIGZvciBSYXBpZCBQcm9jZXNzaW5nIDE2Ni0tMTcxCiAgICAgICAgICAgIEguIEIuIEh1bnQsIElJSSBhbmQgICAKICAgICAgICAgICAgVC4gRy4gU3p5bWFuc2tpIGFuZCAgIAogICAgICAgICAgICAgICAgICAgSi4gRC4gVWxsbWFuICAgT3BlcmF0aW9ucyBvbiBTcGFyc2UgUmVsYXRpb25zIC4gLiAuIC4gLiAxNzEtLTE3NgogICAgICAgICAgICAgICBSaWNoYXJkIEwuIE5vbGFuICAgRWZmZWN0cyBvZiBDaGFyZ2VvdXQgb24gVXNlci9NYW5hZ2VyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRpdHVkZXMgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDE3Ny0tMTg1CiAgICAgICAgICAgIElzcmFlbCBCb3Jvdml0cyBhbmQgICAKICAgICAgICAgICAgICAgICBQaGlsaXAgRWluLURvciAgIENvc3QvdXRpbGl6YXRpb246IEEgbWVhc3VyZSBvZiBzeXN0ZW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmZvcm1hbmNlICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMTg1LS0xOTEKICAgICAgICAgICAgICAgICAgICAgICAgQy4gQmF5cyAgIEEgY29tcGFyaXNvbiBvZiBuZXh0LWZpdCwgZmlyc3QtZml0LCBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlc3QtZml0IC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMTkxLS0xOTIKICAgICAgICAgICAgICAgRWJlcmhhcmQgQmVydHNjaCAgIFRoZSBzdG9yYWdlIHJlcXVpcmVtZW50IGluIHByZWNlZGVuY2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNpbmcgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMTkyLS0xOTYgKG9yIDE5Mi0tMTk0Pz8pCgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSAyMCwgIE51bWJlciA0LCBBcHJpbCwgMTk3NwoKICAgICAgIEphbWVzIEguIE1vcnJpcywgSnIuIGFuZCAgIAogICAgICAgICAgICAgICAgICAgQmVuIFdlZ2JyZWl0ICAgU3ViZ29hbCBJbmR1Y3Rpb24gIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAyMDktLTIyMgogICAgICAgICBTdGV2ZW4gTC4gVGFuaW1vdG8gYW5kICAgCiAgICAgICAgICAgIFRoZW9kb3Npb3MgUGF2bGlkaXMgICBFZGl0aW5nIG9mIFBpY3R1cmUgU2VnbWVudGF0aW9ucyBVc2luZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYWwgQW5hbHlzaXMgb2YgR3JhcGhzIC4gLiAuIC4gLiAuIC4gLiAyMjMtLTIyOQogICAgICAgICAgICBOaWNob2xhcyBWLiBGaW5kbGVyICAgU3R1ZGllcyBpbiBNYWNoaW5lIENvZ25pdGlvbiBVc2luZyB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdhbWUgb2YgUG9rZXIgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMjMwLS0yNDUKICAgICAgICAgICAgICAgIEsuIE1hcnV5YW1hIGFuZCAgIAogICAgICAgICAgICAgICAgICAgIFMuIEUuIFNtaXRoICAgQW5hbHlzaXMgb2YgRGVzaWduIEFsdGVybmF0aXZlcyBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpcnR1YWwgTWVtb3J5IEluZGV4ZXMgLiAuIC4gLiAuIC4gLiAuIC4gMjQ1LS0yNTQKICAgICAgICBIZW5yeSBDLiBMdWNhcywgSnIuIGFuZCAgIAogICAgICAgICAgICAgICAgSmltbXkgQS4gU3V0dG9uICAgU3RhZ2UgSHlwb3RoZXNpcyBhbmQgdGhlIFMtQ3VydmU6IFNvbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRyYWRpY3RvcnkgRXZpZGVuY2UgLiAuIC4gLiAuIC4gLiAuIC4gMjU0LS0yNTkKICAgICAgICAgICAgICAgICAgICAgIFMuIEIuIFlhbyAgIEFwcHJveGltYXRpbmcgYmxvY2sgYWNjZXNzZXMgaW4gZGF0YWJhc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZ2FuaXphdGlvbnMgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMjYwLS0yNjEKICAgICAgICAgICAgICAgIEMuIFIuIEhvbGxhbmRlciAgIFJlbWFyayBvbiB1bmlmb3JtIGluc2VydGlvbiBvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlZCBkYXRhIHN0cnVjdHVyZXMgLiAuIC4gLiAuIC4gLiAyNjEtLTI2MgogICAgICAgICAgICBTLiBLLiBCYW5keW9wYWRoeWF5ICAgQ29tbWVudCBvbiB3ZWlnaHRlZCBpbmNyZW1lbnQgbGluZWFyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2ggZm9yIHNjYXR0ZXIgdGFibGVzICAuIC4gLiAuIC4gLiAuIDI2Mi0tMjYzCiAgICAgICAgICAgICBDLiBELiBUaG9tcHNvbiBhbmQgICAKICAgICAgICAgICAgICAgICAgICAgSC4gVC4gS3VuZyAgIFNvcnRpbmcgb24gYSBNZXNoLUNvbm5lY3RlZCBQYXJhbGxlbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHV0ZXIgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAyNjMtLTI3MQogICAgICAgICAgTGF3cmVuY2UgUm9iaW5zb24gYW5kICAgCiAgICAgICAgICAgICAgICAgS2FybCBOLiBMZXZpdHQgICBQcm9vZiBUZWNobmlxdWVzIGZvciBIaWVyYXJjaGljYWxseQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlZCBQcm9ncmFtcyAgLiAuIC4gLiAuIC4gLiAuIC4gLiAyNzEtLTI4MwoKQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTQpWb2x1bWUgMjAsICBOdW1iZXIgNSwgTWF5LCAxOTc3CgogICAgICAgICAgICAgICAgIFIuIEMuIEhvbHQgYW5kICAgCiAgICAgICAgICAgICAgRC4gQi4gV29ydG1hbiBhbmQgICAKICAgICAgICAgICAgICBELiBULiBCYXJuYXJkIGFuZCAgIAogICAgICAgICAgICAgICAgICAgIEouIFIuIENvcmR5ICAgU1AvazogQSBTeXN0ZW0gZm9yIFRlYWNoaW5nIENvbXB1dGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9ncmFtbWluZyAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDMwMS0tMzA5CiAgICAgICAgICAgICAgR2VvcmdlIFMuIEZpc2htYW4gICBBY2hpZXZpbmcgU3BlY2lmaWMgQWNjdXJhY3kgaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpbXVsYXRpb24gT3V0cHV0IEFuYWx5c2lzIC4gLiAuIC4gLiAuIC4gMzEwLS0zMTUKICAgICAgICAgICBIb3dhcmQgTC4gTW9yZ2FuIGFuZCAgIAogICAgICAgICAgICAgICAgICAgSy4gRGFuIExldmluICAgT3B0aW1hbCBQcm9ncmFtIGFuZCBEYXRhIExvY2F0aW9ucyBpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHV0ZXIgTmV0d29ya3MgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAzMTUtLTMyMgogICAgICAgICAgICAgICAgIEouLUwuIEJhZXIgYW5kICAgCiAgICAgICAgICAgICAgICAgICAgICBCLiBTY2h3YWIgICBBIENvbXBhcmlzb24gb2YgVHJlZS1CYWxhbmNpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsZ29yaXRobXMgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMzIyLS0zMzAKICAgICAgICAgICBOZWlsIEouIFN0aWxsbWFuIGFuZCAgIAogICAgICAgICAgICAgICAgIFAuIEJydWNlIEJlcnJhICAgQSBDb21wYXJpc29uIG9mIEhhcmR3YXJlIGFuZCBTb2Z0d2FyZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXNzb2NpYXRpdmUgTWVtb3JpZXMgaW4gdGhlIENvbnRleHQgb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXB1dGVyIEdyYXBoaWNzICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMzMxLS0zMzkKICAgICAgICAgICAgICAgICBNYXJ2aW4gU2hhcGlybyAgIENob2ljZSBvZiBSZWZlcmVuY2UgUG9pbnRzIGluIEJlc3QtTWF0Y2gKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGUgU2VhcmNoaW5nIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMzM5LS0zNDMKICAgICAgICAgICAgICBNaWNoYWVsIFouIEhhbmFuaSAgIEFuIE9wdGltYWwgRXZhbHVhdGlvbiBvZiBCb29sZWFuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeHByZXNzaW9ucyBpbiBhbiBPbmxpbmUgUXVlcnkgU3lzdGVtICAgIDM0NC0tMzQ3CiAgICAgICAgICAgICAgICAgICAgICBZLiBNaWxtYW4gICBBbiBBcHByb2FjaCB0byBPcHRpbWFsIERlc2lnbiBvZiBTdG9yYWdlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJhbWV0ZXJzIGluIERhdGFiYXNlcyAgLiAuIC4gLiAuIC4gLiAuIDM0Ny0tMzUwCiAgICAgICAgICAgICAgSmFtZXMgVy4gSHVudCBhbmQgICAKICAgICAgICAgICAgVGhvbWFzIEcuIFN6eW1hbnNraSAgIEEgRmFzdCBBbGdvcml0aG0gZm9yIENvbXB1dGluZyBMb25nZXN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24gU3Vic2VxdWVuY2VzICAuIC4gLiAuIC4gLiAuIC4gLiAuIDM1MC0tMzUzCgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSAyMCwgIE51bWJlciA2LCBKdW5lLCAxOTc3CgogICAgICAgICAgIE9ycmluIEUuIFRhdWxiZWUgYW5kICAgCiAgICAgICAgICAgICAgICAgICAgUy4gRC4gQ29udGUgICBQcm9kdWN0aW9uIGFuZCBFbXBsb3ltZW50IG9mIFBoLkQuJ3MgaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXB1dGVyIFNjaWVuY2UgLS0tIDE5NzYgIC4gLiAuIC4gLiAuIC4gMzcwLS0zNzIKICAgICAgICAgICAgQmVuIFNobmVpZGVybWFuIGFuZCAgIAogICAgICAgICAgICAgIFJpY2hhcmQgTWF5ZXIgYW5kICAgCiAgICAgICAgICAgICAgICAgIERvbiBNY0theSBhbmQgICAKICAgICAgICAgICAgICAgICAgIFBldGVyIEhlbGxlciAgIEV4cGVyaW1lbnRhbCBJbnZlc3RpZ2F0aW9ucyBvZiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxpdHkgb2YgRGV0YWlsZWQgRmxvd2NoYXJ0cyBpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvZ3JhbW1pbmcgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAzNzMtLTM4MQogICAgICAgICAgICAgIEguIEYuIExlZGdhcmQgYW5kICAgCiAgICAgICAgICAgICAgICAgICBSLiBXLiBUYXlsb3IgICBUd28gVmlld3Mgb2YgRGF0YSBBYnN0cmFjdGlvbiAgLiAuIC4gLiAuIDM4Mi0tMzg0CiAgICAgICAgICAgICBNb3NoZSBNLiBabG9vZiBhbmQgICAKICAgICAgICAgICAgICAgUy4gUGV0ZXIgZGUgSm9uZyAgIFRoZSBTeXN0ZW0gZm9yIEJ1c2luZXNzIEF1dG9tYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTQkEpOiBQcm9ncmFtbWluZyBMYW5ndWFnZSAgLiAuIC4gLiAuIC4gMzg1LS0zOTYKICAgICAgICAgICAgICAgICBKb2huIFYuIEd1dHRhZyAgIEFic3RyYWN0IERhdGEgVHlwZXMgYW5kIHRoZSBEZXZlbG9wbWVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgRGF0YSBTdHJ1Y3R1cmVzIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAzOTYtLTQwNAogICAgICAgICAgIEpvaG4gTWlsZXMgU21pdGggYW5kICAgCiAgICAgICAgICAgICAgRGlhbmUgQy4gUC4gU21pdGggICBEYXRhYmFzZSBBYnN0cmFjdGlvbnM6IEFnZ3JlZ2F0aW9uIC4gLiAuIDQwNS0tNDEzCiAgICAgICAgICAgICAgICBEYXZpZCBHcmllcyBhbmQgICAKICAgICAgICAgICAgICAgICAgTmFyYWluIEdlaGFuaSAgIFNvbWUgSWRlYXMgb24gRGF0YSBUeXBlcyBpbiBIaWdoLUxldmVsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYW5ndWFnZXMgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDQxNC0tNDIwCiAgICAgICAgICBKYW1lcyBMLiBQZXRlcnNvbiBhbmQgICAKICAgICAgICAgICAgIFRoZW9kb3JlIEEuIE5vcm1hbiAgIEJ1ZGR5IFN5c3RlbXMgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNDIxLS00MzEKICAgICAgICAgICAgICAgICAgIEouIE0uIFJvYnNvbiAgIEEgQm91bmRlZCBTdG9yYWdlIEFsZ29yaXRobSBmb3IgQ29weWluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3ljbGljIFN0cnVjdHVyZXMgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA0MzEtLTQzMwogICAgICAgICAgICAgICAgICAgICBSLiBTLiBCaXJkICAgTm90ZXMgb24gUmVjdXJzaW9uIEVsaW1pbmF0aW9uIC4gLiAuIC4gLiA0MzQtLTQzOQogICAgICAgICAgIEhlbnJ5IFMuIFdhcnJlbiwgSnIuICAgRnVuY3Rpb25zIFJlYWxpemFibGUgd2l0aCBXb3JkLVBhcmFsbGVsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dpY2FsIGFuZCBUd28ncy1Db21wbGVtZW50IEFkZGl0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnN0cnVjdGlvbnMgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDQzOS0tNDQxCgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSAyMCwgIE51bWJlciA3LCBKdWx5LCAxOTc3CgogICAgICAgICAgICAgICBTYW5kcmEgQS4gTWFtcmFrICAgRHluYW1pYyBSZXNwb25zZSBUaW1lIFByZWRpY3Rpb24gZm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21wdXRlciBOZXR3b3JrcyAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDQ2MS0tNDY4CiAgICAgICAgIE1hbmZyZWQgUnVzY2hpdHprYSBhbmQgICAKICAgICAgICAgICAgICAgICAgICBSLiBTLiBGYWJyeSAgIEEgVW5pZnlpbmcgQXBwcm9hY2ggdG8gU2NoZWR1bGluZyAgLiAuIC4gNDY5LS00NzcKICAgICAgICAgIFdpbGxpYW0gRC4gVGFqaWJuYXBpcyAgIEEgQ29ycmVjdG5lc3MgUHJvb2Ygb2YgYSBUb3BvbG9neQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5mb3JtYXRpb24gTWFpbnRlbmFuY2UgUHJvdG9jb2wgZm9yIGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpc3RyaWJ1dGVkIENvbXB1dGVyIE5ldHdvcmsgLiAuIC4gLiAuIC4gNDc3LS00ODUKICAgICAgICAgICAgIFBhdWwgRy4gSGVja2VsIGFuZCAgIAogICAgICAgICAgICAgIEJ1dGxlciBXLiBMYW1wc29uICAgQSB0ZXJtaW5hbC1vcmllbnRlZCBjb21tdW5pY2F0aW9uIHN5c3RlbSA0ODYtLTQ5NAogICAgQmVuIFJvc3MgU2NobmVpZGVyLCBKci4gYW5kICAgCiAgICAgICAgICAgICAgICAgIFJlaWQgTS4gV2F0dHMgICBTSVRBUjogYW4gSW50ZXJhY3RpdmUgVGV4dCBQcm9jZXNzaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW0gZm9yIFNtYWxsIENvbXB1dGVycyAuIC4gLiAuIC4gLiAuIDQ5NS0tNDk5CiAgICAgICAgICAgICAgIEouIEwuIFcuIEtlc3NlbHMgICBBbHRlcm5hdGl2ZSB0byBFdmVudCBRdWV1ZXMgZm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeW5jaHJvbml6YXRpb24gaW4gTW9uaXRvcnMgIC4gLiAuIC4gLiAuIDUwMC0tNTAzCiAgICAgICAgIERvcm90aHkgRS4gRGVubmluZyBhbmQgICAKICAgICAgICAgICAgICAgUGV0ZXIgSi4gRGVubmluZyAgIENlcnRpZmljYXRpb24gb2YgUHJvZ3JhbXMgZm9yIFNlY3VyZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5mb3JtYXRpb24gRmxvdyAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA1MDQtLTUxMwogICAgICAgICAgICAgICBKZWZmcmV5IE0uIEJhcnRoICAgU2hpZnRpbmcgR2FyYmFnZSBDb2xsZWN0aW9uIE92ZXJoZWFkIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21waWxlIFRpbWUgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDUxMy0tNTE4CiAgICAgICAgICAgICBFLiBBLiBBc2hjcm9mdCBhbmQgICAKICAgICAgICAgICAgICAgICAgICBXLiBXLiBXYWRnZSAgIEx1Y2lkLCBhIE5vbnByb2NlZHVyYWwgTGFuZ3VhZ2Ugd2l0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA1MTktLTUyNgogICAgICAgICAgICAgIEouIE5ldmlsIEJyb3dubGVlICAgQW4gQWxnb2wtYmFzZWQgaW1wbGVtZW50YXRpb24gb2YgU05PQk9MCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0IHBhdHRlcm5zIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDUyNy0tNTI5CgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSAyMCwgIE51bWJlciA4LCBBdWd1c3QsIDE5NzcKCiAgICAgICAgIENoYXJsZXMgTS4gR2VzY2hrZSBhbmQgICAKICAgICAgIEphbWVzIEguIE1vcnJpcywgSnIuIGFuZCAgIAogICAgICAgICBFZHdpbiBILiBTYXR0ZXJ0aHdhaXRlICAgRWFybHkgRXhwZXJpZW5jZSB3aXRoIE1lc2EgLiAuIC4gLiAuIC4gLiA1NDAtLTU1MwogICAgICAgICAgICAgICAgICBNYXJ5IFNoYXcgYW5kICAgCiAgICAgICAgICAgIFdpbGxpYW0gQS4gV3VsZiBhbmQgICAKICAgICAgICAgICAgICAgIFJhbHBoIEwuIExvbmRvbiAgIEFic3RyYWN0aW9uIGFuZCBWZXJpZmljYXRpb24gaW4gQWxwaGFyZDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmluaW5nIGFuZCBTcGVjaWZ5aW5nIEl0ZXJhdGlvbiBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRvcnMgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNTUzLS01NjQKICAgICAgICAgICAgIEJhcmJhcmEgTGlza292IGFuZCAgIAogICAgICAgICAgICAgICAgQWxhbiBTbnlkZXIgYW5kICAgCiAgICAgICAgICAgUnVzc2VsbCBBdGtpbnNvbiBhbmQgICAKICAgICAgICAgICAgICAgIENyYWlnIFNjaGFmZmVydCAgIEFic3RyYWN0aW9uIE1lY2hhbmlzbXMgaW4gQ0xVICAuIC4gLiAuIC4gNTY0LS01NzYKICAgICAgICAgICAgICAgICAgTmlrbGF1cyBXaXJ0aCAgIFRvd2FyZCBhIERpc2NpcGxpbmUgb2YgUmVhbC1UaW1lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9ncmFtbWluZyAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDU3Ny0tNTgzCiAgICAgICAgICAgICAgICAgICBKLiBELiBHYW5ub24gICBBbiBleHBlcmltZW50YWwgZXZhbHVhdGlvbiBvZiBkYXRhIHR5cGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlbnRpb25zICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNTg0LS01OTUKICAgICAgICAgICAgICAgVy4gUi4gRnJhbnRhIGFuZCAgIAogICAgICAgICAgICAgICAgICAgICAgS3VydCBNYWx5ICAgQW4gRWZmaWNpZW50IERhdGEgU3RydWN0dXJlIGZvciB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpbXVsYXRpb24gRXZlbnQgU2V0IC4gLiAuIC4gLiAuIC4gLiAuIC4gNTk2LS02MDIKICAgICAgICAgICAgICAgRXVnZW5lIEwuIExhd2xlciAgIENvbW1lbnQgb24gY29tcHV0aW5nIHRoZSAkayQgc2hvcnRlc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhzIGluIGEgZ3JhcGggLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNjAzLS02MDQKICAgICAgICAgICAgICAgICAgICAgTi4gRnJhbmNleiAgIEFub3RoZXIgYWR2YW50YWdlIG9mIGtleXdvcmQgbm90YXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBwYXJhbWV0ZXIgY29tbXVuaWNhdGlvbiB3aXRoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJwcm9ncmFtcyAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDYwNC0tNjA1CgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSAyMCwgIE51bWJlciA5LCBTZXB0ZW1iZXIsIDE5NzcKCiAgICAgICAgICAgICAgIE1pY2hhZWwgTy4gUmFiaW4gICBDb21wbGV4aXR5IG9mIENvbXB1dGF0aW9ucyAuIC4gLiAuIC4gLiAuIDYyNS0tNjMzCiAgICAgICAgICAgICAgICAgIERhbmEgUy4gU2NvdHQgICBMb2dpYyBhbmQgUHJvZ3JhbW1pbmcgTGFuZ3VhZ2VzICAuIC4gLiAuIDYzNC0tNjQxCiAgICAgICAgICAgICBSaWNoYXJkIEguIEF1c3RpbmcgICBUaGUgR1JFIEFkdmFuY2VkIFRlc3QgaW4gQ29tcHV0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNjaWVuY2UgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNjQyLS02NDUKICAgICAgICAgICAgUm9iZXJ0IFcuIFNjaGVpZmxlciAgIEFuIEFuYWx5c2lzIG9mIElubGluZSBTdWJzdGl0dXRpb24gZm9yIGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cnVjdHVyZWQgUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgIC4gLiAuIC4gNjQ3LS02NTQKICAgICAgICAgICAgICAgRGF2aWQgSy4gR2lmZm9yZCAgIEhhcmR3YXJlIEVzdGltYXRpb24gb2YgYSBQcm9jZXNzJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpbWFyeSBNZW1vcnkgUmVxdWlyZW1lbnRzICAuIC4gLiAuIC4gLiA2NTUtLTY2MwogICAgICAgICAgICAgICBIYXJyeSBHLiBNYWlyc29uICAgU29tZSBOZXcgVXBwZXIgQm91bmRzIG9uIHRoZSBHZW5lcmF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBQcmltZSBOdW1iZXJzIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDY2NC0tNjY5CiAgICAgICAgICAgIEVkd2FyZCBNLiBNY0NyZWlnaHQgICBQYWdpbmF0aW9uIG9mIEIqLVRyZWVzIHdpdGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlLUxlbmd0aCBSZWNvcmRzICAuIC4gLiAuIC4gLiAuIC4gNjcwLS02NzQKCkNvbW11bmljYXRpb25zIG9mIHRoZSBBQ00KVm9sdW1lIDIwLCAgTnVtYmVyIDEwLCBPY3RvYmVyLCAxOTc3CgogICAgICAgICAgICAgICAgICAgSC4gRnVjaHMgYW5kICAgCiAgICAgICAgICAgICAgICBaLiBNLiBLZWRlbSBhbmQgICAKICAgICAgICAgICAgICAgICAgUy4gUC4gVXNlbHRvbiAgIE9wdGltYWwgU3VyZmFjZSBSZWNvbnN0cnVjdGlvbiBmcm9tCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQbGFuYXIgQ29udG91cnMgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDY5My0tNzAyCiAgICAgICAgICBTaGVuZy1DaHVhbiBDLiBXdSBhbmQgICAKICAgICAgICAgICAgICAgSm9obiBGLiBBYmVsIGFuZCAgIAogICAgICAgICAgICBEb25hbGQgUC4gR3JlZW5iZXJnICAgQW4gSW50ZXJhY3RpdmUgQ29tcHV0ZXIgR3JhcGhpY3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFwcHJvYWNoIHRvIFN1cmZhY2UgUmVwcmVzZW50YXRpb24gLiAuIC4gNzAzLS03MTIKICAgICAgICAgICAgICAgICBCYXJyeSBLLiBSb3NlbiAgIEhpZ2gtTGV2ZWwgRGF0YSBGbG93IEFuYWx5c2lzICAuIC4gLiAuIC4gNzEyLS03MjQKICAgICAgICAgICAgICBDLiBNb250YW5nZXJvIGFuZCAgIAogICAgICAgICAgICAgICAgICBHLiBQYWNpbmkgYW5kICAgCiAgICAgICAgICAgICAgICAgICAgICBGLiBUdXJpbmkgICBUd28tTGV2ZWwgQ29udHJvbCBTdHJ1Y3R1cmUgZm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25kZXRlcm1pbmlzdGljIFByb2dyYW1taW5nIC4gLiAuIC4gLiAuIDcyNS0tNzMwCiAgICAgICAgICAgICAgICBXaWxmIFIuIExhTG9uZGUgICBSZWd1bGFyIFJpZ2h0IFBhcnQgR3JhbW1hcnMgYW5kIFRoZWlyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJzZXJzICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDczMS0tNzQxCiAgICAgICAgICAgICAgICAgICBSLiBEZXZpbGxlcnMgICBHYW1lIEludGVycHJldGF0aW9uIG9mIHRoZSBEZWFkbG9jawogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXZvaWRhbmNlIFByb2JsZW0gIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA3NDEtLTc0NQogICAgICAgICAgICAgICAgICAgRXZhbiBMLiBJdmllICAgUHJvZ3JhbW1lcidzIFdvcmtiZW5jaCAtLS0gYSBNYWNoaW5lIGZvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29mdHdhcmUgRGV2ZWxvcG1lbnQgLiAuIC4gLiAuIC4gLiAuIC4gLiA3NDYtLTc1MwogICAgICAgICAgICAgICAgIEFsYW4gSmF5IFNtaXRoICAgTXVsdGlwcm9jZXNzb3IgTWVtb3J5IE9yZ2FuaXphdGlvbiBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lbW9yeSBJbnRlcmZlcmVuY2UgIC4gLiAuIC4gLiAuIC4gLiAuIC4gNzU0LS03NjEKICAgICAgICAgICAgUm9iZXJ0IFMuIEJveWVyIGFuZCAgIAogICAgICAgICAgICAgIEouIFN0cm90aGVyIE1vb3JlICAgQSBGYXN0IFN0cmluZyBTZWFyY2hpbmcgQWxnb3JpdGhtICAuIC4gLiA3NjItLTc3MgoKQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTQpWb2x1bWUgMjAsICBOdW1iZXIgMTEsIE5vdmVtYmVyLCAxOTc3CgogICAgICAgICAgICAgICAgICAgSi4gQS4gTi4gTGVlICAgQ29uc2lkZXJhdGlvbnMgZm9yIGZ1dHVyZSBwcm9ncmFtbWluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2Ugc3RhbmRhcmRzIGFjdGl2aXRpZXMgIC4gLiAuIC4gLiA3ODgtLTc5NAogICAgICAgICAgICAgUm9sbGlucyBUdXJuZXIgYW5kICAgCiAgICAgICAgICAgICAgICAgIEJpbGwgU3RyZWNrZXIgICBVc2Ugb2YgdGhlIExSVSBTdGFjayBEZXB0aCBEaXN0cmlidXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBTaW11bGF0aW9uIG9mIFBhZ2luZyBCZWhhdmlvciAgLiAuIC4gNzk1LS03OTgKICAgICAgICAgICAgICAgRnJhbmtsaW4gQy4gQ3JvdyAgIFRoZSBBbGlhc2luZyBQcm9ibGVtIGluCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21wdXRlci1HZW5lcmF0ZWQgU2hhZGVkIEltYWdlcyAuIC4gLiAuIDc5OS0tODA1CiAgICAgICAgICAgICAgICAgTGVzbGllIExhbXBvcnQgICBDb25jdXJyZW50IFJlYWRpbmcgYW5kIFdyaXRpbmcgLiAuIC4gLiAuIDgwNi0tODExCiAgICAgICAgICAgICAgICAgIEpvaG4gRS4gU2hvcmUgICBBbm9tYWxvdXMgQmVoYXZpb3Igb2YgdGhlIEZpZnR5LVBlcmNlbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bGUgaW4gRHluYW1pYyBNZW1vcnkgQWxsb2NhdGlvbiAgLiAuIC4gODEyLS04MjAKICAgICAgICAgICAgIEcuIEMuIFN0b2NrbWFuIGFuZCAgIAogICAgICAgICAgICAgICAgIEEuIEsuIEFncmF3YWxhICAgRXF1aXZhbGVuY2Ugb2YgSG91Z2ggY3VydmUgZGV0ZWN0aW9uIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZSBtYXRjaGluZyAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDgyMC0tODIyCiAgICAgICAgICAgICAgICAgICAgICAgTi4gV2lydGggICBXaGF0IGNhbiB3ZSBkbyBhYm91dCB0aGUgdW5uZWNlc3NhcnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpdmVyc2l0eSBvZiBub3RhdGlvbiBmb3Igc3ludGFjdGljCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbml0aW9ucz8gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDgyMi0tODIzCiAgICAgICAgICAgICAgICAgICAgICBNLiBLLiBSb3kgICBBIG5vdGUgb24gcmVmbGVjdGlvbi1mcmVlIHBlcm11dGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhdGlvbiAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDgyMy0tODIzCiAgICAgICAgICAgICAgICBab2hhciBNYW5uYSBhbmQgICAKICAgICAgICAgICAgICAgICAgICAgQWRpIFNoYW1pciAgIFRoZSBPcHRpbWFsIEFwcHJvYWNoIHRvIFJlY3Vyc2l2ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvZ3JhbXMgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA4MjQtLTgzMQogICAgICAgICAgICAgTWljaGFlbCBIYW1tZXIgYW5kICAgCiAgICAgICAgICAgICAgVy4gR2VycnkgSG93ZSBhbmQgICAKICAgICAgICAgVmluY2VudCBKLiBLcnVza2FsIGFuZCAgIAogICAgICAgICAgICAgICBJcnZpbmcgV2xhZGF3c2t5ICAgVmVyeSBIaWdoIExldmVsIFByb2dyYW1taW5nIExhbmd1YWdlIGZvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSBQcm9jZXNzaW5nIEFwcGxpY2F0aW9ucyAuIC4gLiAuIC4gLiA4MzItLTg0MAogICAgICAgICAgICAgICAgUmVuem8gU3BydWdub2xpICAgUGVyZmVjdCBIYXNoaW5nIEZ1bmN0aW9uczogQSBTaW5nbGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2JlIFJldHJpZXZpbmcgTWV0aG9kIGZvciBTdGF0aWMgU2V0cyAgODQxLS04NTAKICAgICAgICAgICAgICAgICBKb2huIENvY2tlIGFuZCAgIAogICAgICAgICAgICAgICAgICAgIEtlbiBLZW5uZWR5ICAgQW4gQWxnb3JpdGhtIGZvciBSZWR1Y3Rpb24gb2YgT3BlcmF0b3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmVuZ3RoIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gODUwLS04NTYKICAgICAgICAgICAgICAgICAgICAgUi4gUy4gQmlyZCAgIEltcHJvdmluZyBQcm9ncmFtcyBieSB0aGUgSW50cm9kdWN0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBSZWN1cnNpb24gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDg1Ni0tODYzCiAgICAgICAgICAgICAgTm9ybWFuIFIuIE5pZWxzZW4gICBEeW5hbWljIE1lbW9yeSBBbGxvY2F0aW9uIGluIENvbXB1dGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaW11bGF0aW9uIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDg2NC0tODczCiAgICAgICAgIE1pY2hhZWwgVy4gQmxhc2dlbiBhbmQgICAKICAgICAgICAgICBSaWNoYXJkIEcuIENhc2V5IGFuZCAgIAogICAgICAgICAgICAgIEthcGFsaSBQLiBFc3dhcmFuICAgQW4gRW5jb2RpbmcgTWV0aG9kIGZvciBNdWx0aWZpZWxkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0aW5nIGFuZCBJbmRleGluZyAuIC4gLiAuIC4gLiAuIC4gLiAuIDg3NC0tODc4CiAgICAgICAgICAgICAgRW5yaXF1ZSBHcmFwYSBhbmQgICAKICAgICAgICAgICAgICBHZW5ldmEgRy4gQmVsZm9yZCAgIFNvbWUgVGhlb3JlbXMgdG8gQWlkIGluIFNvbHZpbmcgdGhlIEZpbGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG9jYXRpb24gUHJvYmxlbSAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gODc4LS04ODIKCkNvbW11bmljYXRpb25zIG9mIHRoZSBBQ00KVm9sdW1lIDIwLCAgTnVtYmVyIDEyLCBEZWNlbWJlciwgMTk3NwoKICAgICAgICAgICAgICAgIEEuIEEuIExvcGV6IGFuZCAgIAogICAgICAgICAgICAgICAgIFIuIFJheW1vbmQgYW5kICAgCiAgICAgICAgICAgICAgICAgICAgIFIuIFRhcmRpZmYgICBBIHN1cnZleSBvZiBjb21wdXRlciBzY2llbmNlIG9mZmVyaW5ncwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gc21hbGwgbGliZXJhbCBhcnRzIGNvbGxlZ2VzIC4gLiAuIC4gLiA5MDItLTkwNgogICAgICAgICAgICAgICBKLiBMLiBXLiBLZXNzZWxzICAgQSBDb25jZXB0dWFsIEZyYW1ld29yayBmb3IgYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9ucHJvY2VkdXJhbCBQcm9ncmFtbWluZyBMYW5ndWFnZSAuIC4gLiA5MDYtLTkxMwogICAgICAgICAgICAgSi4gTGF3cmVuY2UgQ2FydGVyICAgQSBDYXNlIFN0dWR5IG9mIGEgTmV3IENvZGUgR2VuZXJhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVjaG5pcXVlIGZvciBDb21waWxlcnMgIC4gLiAuIC4gLiAuIC4gLiA5MTQtLTkyMAogICAgICAgICAgICAgICAgICAgIERhdmlkIEdyaWVzICAgQW4gRXhlcmNpc2UgaW4gUHJvdmluZyBQYXJhbGxlbCBQcm9ncmFtcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29ycmVjdCAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA5MjEtLTkzMAogICAgICAgICAgICAgICAgICAgIElyZW5lIEdyaWVmICAgQSBsYW5ndWFnZSBmb3IgZm9ybWFsIHByb2JsZW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmljYXRpb24gIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gOTMxLS05MzUKICAgICAgICAgTWFyc2hhbGwgRC4gQWJyYW1zIGFuZCAgIAogICAgICAgICAgICAgICAgIFNpZWdmcmllZCBUcmV1ICAgQSBNZXRob2RvbG9neSBmb3IgSW50ZXJhY3RpdmUgQ29tcHV0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlcnZpY2UgTWVhc3VyZW1lbnQgIC4gLiAuIC4gLiAuIC4gLiAuIC4gOTM2LS05NDQKICAgICAgICAgICAgIEouIE4uIERhbnppZ2VyIGFuZCAgIAogICAgICAgICAgICAgICAgICAgVy4gSC4gRHV0dG9uICAgQ29tcHV0ZXJzIGFzIGFuIGlubm92YXRpb24gaW4gQW1lcmljYW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsIGdvdmVybm1lbnRzICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gOTQ1LS05NTYKCkNvbW11bmljYXRpb25zIG9mIHRoZSBBQ00KVm9sdW1lIDI0LCAgTnVtYmVyIDEsIEphbnVhcnksIDE5NzcKCiAgICAgICAgICAgICAgICAgIFAuIEQuIFN1bW1lcnMgICBBIE1ldGhvZG9sb2d5IGZvciBMSVNQIFByb2dyYW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnN0cnVjdGlvbiBmcm9tIEV4YW1wbGVzIC4gLiAuIC4gLiAuIC4gMTYxLS0xNzUKICAgICAgICAgICAgICAgIFMuIEguIExhdmluZ3RvbiAgIFRoZSBNYW5jaGVzdGVyIE1hcmsgSSBhbmQgQXRsYXM6IGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpc3RvcmljYWwgcGVyc3BlY3RpdmUgLiAuIC4gLiAuIC4gLiAuIC4gNC0tMTIKICAgICAgICAgICAgICAgUi4gTi4gSWJiZXR0IGFuZCAgIAogICAgICAgICAgICAgICAgICAgIFAuIEMuIENhcG9uICAgVGhlIGRldmVsb3BtZW50IG9mIHRoZSBNVTUgY29tcHV0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbSAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMTMtLTI0CiAgICAgICAgICAgIEIuIFIuIEJvcmdlcnNvbiBhbmQgICAKICAgICAgICAgICAgICAgTS4gTC4gSGFuc29uIGFuZCAgIAogICAgICAgICAgICAgICAgICBQLiBBLiBIYXJ0bGV5ICAgRXZvbHV0aW9uIG9mIHRoZSBTcGVycnkgVW5pdmFjIDExMDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlcmllczogYSBIaXN0b3J5LCBBbmFseXNpcywgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9qZWN0aW9uIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDI1LS00MwogICAgICAgICAgICAgICAgIEMuIEcuIEJlbGwgYW5kICAgCiAgICAgICAgICAgICAgICAgICBBLiBLb3RvayBhbmQgICAKICAgICAgICAgICAgIFQuIE4uIEhhc3RpbmdzIGFuZCAgIAogICAgICAgICAgICAgICAgICAgICAgICBSLiBIaWxsICAgVGhlIEV2b2x1dGlvbiBvZiB0aGUgREVDc3lzdGVtIDEwICAuIC4gLiA0NC0tNjMKICAgICAgICAgICAgIFJpY2hhcmQgTS4gUnVzc2VsbCAgIFRoZSBDUkFZLTEgQ29tcHV0ZXIgU3lzdGVtIC4gLiAuIC4gLiAuIC4gNjMtLTcyCiAgICAgICAgICAgIFJpY2hhcmQgUC4gQ2FzZSBhbmQgICAKICAgICAgICAgICAgICAgICAgQW5kcmlzIFBhZGVncyAgIEFyY2hpdGVjdHVyZSBvZiB0aGUgSUJNIFN5c3RlbS8zNzAgLiAuIC4gNzMtLTk2CgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSAyMSwgIE51bWJlciAyLCBGZWJydWFyeSwgMTk3OAoKICAgICAgICAgICAgICAgUy4gQS4gTWFtcmFrIGFuZCAgIAogICAgICAgICAgUi4gRy4gTW9udGFuZWxsaSwgSnIuICAgQ29tcHV0ZXIgc2NpZW5jZSBmYWN1bHRpZXM6IHRoZSBjdXJyZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMgb2YgbWlub3JpdGllcyBhbmQgd29tZW4gLiAuIC4gLiAuIDExNS0tMTE5CiAgICAgICAgICAgICAgIFIuIEwuIFJpdmVzdCBhbmQgICAKICAgICAgICAgICAgICAgICAgQS4gU2hhbWlyIGFuZCAgIAogICAgICAgICAgICAgICAgICAgICBMLiBBZGVsbWFuICAgQSBNZXRob2QgZm9yIE9idGFpbmluZyBEaWdpdGFsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaWduYXR1cmVzIGFuZCBQdWJsaWMtS2V5IENyeXB0b3N5c3RlbXMgIDEyMC0tMTI2CiAgICAgICAgICAgIE0uIEEuIEF1c2xhbmRlciBhbmQgICAKICAgICAgICAgICAgICAgICAgIEguIFIuIFN0cm9uZyAgIFN5c3RlbWF0aWMgUmVjdXJzaW9uIFJlbW92YWwgLiAuIC4gLiAuIC4gMTI3LS0xMzQKICAgICAgICAgICAgICAgICAgTC4gVC4gS291IGFuZCAgIAogICAgICAgICAgIEwuIEouIFN0b2NrbWV5ZXIgYW5kICAgCiAgICAgICAgICAgICAgICAgICAgIEMuIEsuIFdvbmcgICBDb3ZlcmluZyBFZGdlcyBieSBDbGlxdWVzIHdpdGggUmVnYXJkIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLZXl3b3JkIENvbmZsaWN0cyBhbmQgSW50ZXJzZWN0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcmFwaHMgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDEzNS0tMTM5CiAgICAgICAgICAgICAgICBHZXJhbGQgSGVsZCBhbmQgICAKICAgICAgICAgICAgTWljaGFlbCBTdG9uZWJyYWtlciAgIEItVHJlZXMgUmUtRXhhbWluZWQgIC4gLiAuIC4gLiAuIC4gLiAuIC4gMTM5LS0xNDMKICAgICAgICAgICAgIFdpbGxpYW0gSi4gU3Rld2FydCAgIEEgQ29tcGFyaXNvbiBvZiBOdW1lcmljYWwgVGVjaG5pcXVlcyBpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFya292IE1vZGVsaW5nICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAxNDQtLTE1MgogICAgICAgICAgICBHYWJvciBULiBIZXJtYW4gYW5kICAgCiAgICAgICAgICAgICAgICBBcm5vbGQgTGVudCBhbmQgICAKICAgICAgICAgICAgICAgICAgUGV0ZXIgSC4gTHV0eiAgIFJlbGF4YXRpb24gTWV0aG9kcyBmb3IgSW1hZ2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlY29uc3RydWN0aW9uIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMTUyLS0xNTgKICAgICAgICAgICAgICAgIFpvaGFyIE1hbm5hIGFuZCAgIAogICAgICAgICAgICAgIFJpY2hhcmQgV2FsZGluZ2VyICAgSXMgYFNvbWV0aW1lJyBTb21ldGltZXMgQmV0dGVyIFRoYW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBBbHdheXMnPyAoSW50ZXJtaXR0ZW50IEFzc2VydGlvbnMgaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb3ZpbmcgUHJvZ3JhbSBDb3JyZWN0bmVzcykgLiAuIC4gLiAuIC4gMTU5LS0xNzIKICAgICAgICAgQnJ1Y2UgSi4gU2NoYWNodGVyIGFuZCAgIAogICAgICAgICAgICAgICBBenJpZWwgUm9zZW5mZWxkICAgU29tZSBOZXcgTWV0aG9kcyBvZiBEZXRlY3RpbmcgU3RlcCBFZGdlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRGlnaXRhbCBQaWN0dXJlcyAgLiAuIC4gLiAuIC4gLiAuIC4gLiAxNzItLTE3NgoKQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTQpWb2x1bWUgMjEsICBOdW1iZXIgMywgTWFyY2gsIDE5NzgKCiAgICAgICAgICAgICAgIE1pY2hhZWwgTy4gUmFiaW4gICBDb3JyaWdlbmR1bTogYGBDb21wbGV4aXR5IG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wdXRhdGlvbnMnJwogICAgICAgICAgICBIZW5yeSBDLiBMdWNhcywgSnIuICAgVXNlIG9mIGFuIEludGVyYWN0aXZlIEluZm9ybWF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdG9yYWdlIGFuZCBSZXRyaWV2YWwgU3lzdGVtIGluIE1lZGljYWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc2VhcmNoIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMTk3LS0yMDUKICAgICAgICAgIFdpbGxpYW0gSC4gRHV0dG9uIGFuZCAgIAogICAgICAgICAgICAgS2VubmV0aCBMLiBLcmFlbWVyICAgTWFuYWdlbWVudCBVdGlsaXphdGlvbiBvZiBDb21wdXRlcnMgaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFtZXJpY2FuIExvY2FsIEdvdmVybm1lbnRzIC4gLiAuIC4gLiAuIC4gMjA2LS0yMTgKICAgICAgICAgICAgICAgICBSLiBFLiBBbmRlcnNvbiAgIFZhbHVlIG9yaWVudGF0aW9uIG9mIGNvbXB1dGVyIHNjaWVuY2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWRlbnRzIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMjE5LS0yMjUKICAgICAgICAgICAgICAgIFMuIFJhbyBLb3NhcmFqdSAgIEluc2VydGlvbnMgYW5kIERlbGV0aW9ucyBpbiBPbmUtU2lkZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhlaWdodC1CYWxhbmNlZCBUcmVlcyAgLiAuIC4gLiAuIC4gLiAuIC4gMjI2LS0yMjcKICAgICAgICAgUmljaGFyZCBBLiBEZU1pbGxvIGFuZCAgIAogICAgICAgU3RhbmxleSBDLiBFaXNlbnN0YXQgYW5kICAgCiAgICAgICAgICAgICAgUmljaGFyZCBKLiBMaXB0b24gICBQcmVzZXJ2aW5nIEF2ZXJhZ2UgUHJveGltaXR5IGluIEFycmF5cyAgIDIyOC0tMjMxCiAgICAgICAgICAgICBNLiBBLiBGcmFua2xpbiBhbmQgICAKICAgICAgICAgICAgRy4gU2NvdHQgR3JhaGFtIGFuZCAgIAogICAgICAgICAgICAgICAgICAgIFIuIEsuIEd1cHRhICAgQW5vbWFsaWVzIHdpdGggVmFyaWFibGUgUGFydGl0aW9uIFBhZ2luZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxnb3JpdGhtcyAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAyMzItLTIzNgogICAgICAgICAgICBBbmRyZXcgUy4gVGFuZW5iYXVtICAgSW1wbGljYXRpb25zIG9mIFN0cnVjdHVyZWQgUHJvZ3JhbW1pbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBNYWNoaW5lIEFyY2hpdGVjdHVyZSAuIC4gLiAuIC4gLiAuIC4gMjM3LS0yNDYKCkNvbW11bmljYXRpb25zIG9mIHRoZSBBQ00KVm9sdW1lIDIxLCAgTnVtYmVyIDQsIEFwcmlsLCAxOTc4CgogICAgICAgICAgICAgICAgVy4gSC4gUGF5bmUgYW5kICAgCiAgICAgICAgICAgICAgICAgSy4gTC4gTWNNaWxsZW4gICBPcmRlcmx5IEVudW1lcmF0aW9uIG9mIE5vbnNpbmd1bGFyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaW5hcnkgTWF0cmljZXMgQXBwbGllZCB0byBUZXh0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmNyeXB0aW9uIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDI1OS0tMjYzCiAgICAgICAgICAgICAgICAgICAgUGF1bCBIZWNrZWwgICBBIFRlY2huaXF1ZSBmb3IgSXNvbGF0aW5nIERpZmZlcmVuY2VzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCZXR3ZWVuIEZpbGVzICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDI2NC0tMjY4CiAgICAgICAgICAgICAgICAgICAgICAgIEFydCBMZXcgICBPcHRpbWFsIENvbnZlcnNpb24gb2YgRXh0ZW5kZWQtRW50cnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlY2lzaW9uIFRhYmxlcyB3aXRoIEdlbmVyYWwgQ29zdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3JpdGVyaWEgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAyNjktLTI3OQogICAgICAgICAgICBIZW5yeSBHLiBCYWtlciwgSnIuICAgTGlzdCBQcm9jZXNzaW5nIGluIFJlYWwgVGltZSBvbiBhIFNlcmlhbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHV0ZXIgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAyODAtLTI5NAogICAgICAgICAgICAgICAgUmFscGggQy4gTWVya2xlICAgU2VjdXJlIENvbW11bmljYXRpb25zIE92ZXIgSW5zZWN1cmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYW5uZWxzIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMjk0LS0yOTkKICAgICAgICAgICAgVGhvbWFzIEcuIFN6eW1hbnNraSAgIEFzc2VtYmxpbmcgQ29kZSBmb3IgbWFjaGluZXMgd2l0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3Bhbi1EZXBlbmRlbnQgSW5zdHJ1Y3Rpb25zICAuIC4gLiAuIC4gLiAzMDAtLTMwOAogICAgICAgICAgICAgICAgIEplYW4gVnVpbGxlbWluICAgQSBEYXRhIFN0cnVjdHVyZSBmb3IgTWFuaXB1bGF0aW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSBRdWV1ZXMgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDMwOS0tMzE1CiAgICAgICAgICAgICAgICAgICAgUy4gRXZlbiBhbmQgICAKICAgICAgICAgICAgICAgICAgICAgICBNLiBSb2RlaCAgIEVjb25vbWljYWwgRW5jb2Rpbmcgb2YgQ29tbWFzIEJldHdlZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZ3MgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMzE1LS0zMTcKICAgICAgICAgICAgICAgICBSLiBDLiBILiBDaGVuZyAgIEdlbmVyYXRpbmcgYmV0YSB2YXJpYXRlcyB3aXRoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub25pbnRlZ3JhbCBzaGFwZSBwYXJhbWV0ZXJzIC4gLiAuIC4gLiAuIDMxNy0tMzIyCgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSAyMSwgIE51bWJlciA1LCBNYXksIDE5NzgKCiAgICAgICAgICAgICAgIERvdWdsYXMgVy4gQ2xhcmsgICBBIEZhc3QgQWxnb3JpdGhtIGZvciBDb3B5aW5nIExpc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cnVjdHVyZXMgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMzUxLS0zNTcKICAgICAgICAgICAgIEFuaXRhIEsuIEpvbmVzIGFuZCAgIAogICAgICAgICAgICAgIEJhcmJhcmEgSC4gTGlza292ICAgQSBMYW5ndWFnZSBFeHRlbnNpb24gZm9yIEV4cHJlc3NpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnN0cmFpbnRzIG9uIERhdGEgQWNjZXNzIC4gLiAuIC4gLiAuIC4gMzU4LS0zNjcKICAgICAgICAgICAgICAgICBNYXR0aGV3IEdlbGxlciAgIFRlc3QgRGF0YSBhcyBhbiBBaWQgaW4gUHJvdmluZyBQcm9ncmFtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3JyZWN0bmVzcyAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDM2OC0tMzc1CiAgICAgICAgICAgICAgICAgICBKYW1lcyBSLiBMb3cgICBBdXRvbWF0aWMgRGF0YSBTdHJ1Y3R1cmUgU2VsZWN0aW9uOiBhbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhhbXBsZSBhbmQgT3ZlcnZpZXcgLiAuIC4gLiAuIC4gLiAuIC4gLiAzNzYtLTM4NQogICAgICAgICAgICAgICBNaWNoYWVsIEthcnIgYW5kICAgCiAgICAgICAgICAgRGF2aWQgQi4gTG92ZW1hbiBJSUkgICBJbmNvcnBvcmF0aW9uIG9mIFVuaXRzIGludG8gUHJvZ3JhbW1pbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhbmd1YWdlcyAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMzg1LS0zOTEKICAgICAgICAgICAgRGF2aWQgUi4gSGFuc29uIGFuZCAgIAogICAgICAgICAgICAgIFJhbHBoIEUuIEdyaXN3b2xkICAgVGhlIFNMNSBwcm9jZWR1cmUgbWVjaGFuaXNtICAuIC4gLiAuIC4gLiAzOTItLTQwMAogICAgICAgRnJlZGVyaWNrIEhheWVzLVJvdGggYW5kICAgCiAgICAgICAgICAgICAgICAgSm9obiBNY0Rlcm1vdHQgICBBbiBJbnRlcmZlcmVuY2UgTWF0Y2hpbmcgVGVjaG5pcXVlIGZvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kdWNpbmcgQWJzdHJhY3Rpb25zICAuIC4gLiAuIC4gLiAuIC4gLiA0MDEtLTQxMQogICAgICAgICAgICAgSi4gTS4gRmxlaXNoZXIgYW5kICAgCiAgICAgICAgICAgICAgICAgICAgUi4gUi4gTWV5ZXIgICBOZXcgU3VmZmljaWVudCBPcHRpbWFsaXR5IENvbmRpdGlvbnMgZm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlZ2VyIFByb2dyYW1taW5nIGFuZCBUaGVpcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXBwbGljYXRpb24gIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA0MTEtLTQxOAogICAgICAgICAgIFBhbmR1IFIuIFRhZGlrYW1hbGxhICAgQ29tcHV0ZXIgR2VuZXJhdGlvbiBvZiBHYW1tYSBSYW5kb20KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlcyAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNDE5LS00MjIKICAgICAgICAgICAgICAgUmljaGFyZCBMLiBTaXRlcyAgIE9wdGltYWwgU2hpZnQgU3RyYXRlZ3kgZm9yIGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJsb2NrLVRyYW5zZmVyIENDRCBNZW1vcnkgIC4gLiAuIC4gLiAuIC4gNDIzLS00MjUKCkNvbW11bmljYXRpb25zIG9mIHRoZSBBQ00KVm9sdW1lIDIxLCAgTnVtYmVyIDYsIEp1bmUsIDE5NzgKCiAgICAgICAgICAgICAgIFMuIEguIFp3ZWJlbiBhbmQgICAKICAgICAgICAgICAgICAgICBNLiBBLiBNY0RvbmFsZCAgIEFuIE9wdGltYWwgTWV0aG9kIGZvciBEZWxldGlvbiBpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT25lLVNpZGVkIEhlaWdodC1CYWxhbmNlZCBUcmVlcyAgLiAuIC4gLiA0NDEtLTQ0NQogICAgICAgICAgSmFtZXMgUi4gRHJpc2NvbGwgYW5kICAgCiAgICAgICAgICAgICAgICAgWS4gRWRtdW5kIExpZW4gICBBIFNlbGVjdGl2ZSBUcmF2ZXJzYWwgQWxnb3JpdGhtIGZvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmluYXJ5IFNlYXJjaCBUcmVlcyAgLiAuIC4gLiAuIC4gLiAuIC4gLiA0NDUtLTQ0NwogICAgICAgICAgICAgIEphY3F1ZXMgQ29oZW4gYW5kICAgCiAgICAgICAgICAgICAgICAgTWFydGluIFMuIFJvdGggICBBbmFseXNlcyBvZiBEZXRlcm1pbmlzdGljIFBhcnNpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsZ29yaXRobXMgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNDQ4LS00NTgKICAgICAgICAgTS4gRGVubmlzIE1pY2t1bmFzIGFuZCAgIAogICAgICAgICAgICAgICAgICBKb2huIEEuIE1vZHJ5ICAgQXV0b21hdGljIEVycm9yIFJlY292ZXJ5IGZvciBMUiBQYXJzZXJzICA0NTktLTQ2NQogICAgICAgICAgICAgICBCLiBQLiBMaWVudHogYW5kICAgCiAgICAgICAgICAgICAgRS4gQi4gU3dhbnNvbiBhbmQgICAKICAgICAgICAgICAgICAgICBHLiBFLiBUb21wa2lucyAgIENoYXJhY3RlcmlzdGljcyBvZiBBcHBsaWNhdGlvbiBTb2Z0d2FyZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbnRlbmFuY2UgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA0NjYtLTQ3MQogICAgICAgICAgICAgICAgICBFYXJsIENocnlzbGVyICAgU29tZSBCYXNpYyBEZXRlcm1pbmFudHMgb2YgQ29tcHV0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2dyYW1taW5nIFByb2R1Y3Rpdml0eSAuIC4gLiAuIC4gLiAuIC4gNDcyLS00ODMKICAgICAgICAgICAgICAgICAgICAgIFJvYiBLbGluZyAgIEF1dG9tYXRlZCBXZWxmYXJlIENsaWVudC1UcmFja2luZyBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlcnZpY2UgSW50ZWdyYXRpb246IHRoZSBQb2xpdGljYWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVjb25vbXkgb2YgQ29tcHV0aW5nIC4gLiAuIC4gLiAuIC4gLiAuIC4gNDg0LS00OTMKICAgICAgICAgICAgICAgICBFLiBHZWxlbmJlIGFuZCAgIAogICAgICAgICAgICAgICAgICBELiBEZXJvY2hldHRlICAgUGVyZm9ybWFuY2Ugb2YgUm9sbGJhY2sgUmVjb3ZlcnkgU3lzdGVtcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5kZXIgSW50ZXJtaXR0ZW50IEZhaWx1cmVzICAuIC4gLiAuIC4gLiA0OTMtLTQ5OQogICAgICAgICAgICAgICAgIFRvYnkgSi4gVGVvcmV5ICAgR2VuZXJhbCBFcXVhdGlvbnMgZm9yIElkZWFsaXplZCBDUFUtSS9PCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdmVybGFwIENvbmZpZ3VyYXRpb25zIC4gLiAuIC4gLiAuIC4gLiAuIDUwMC0tNTA3CgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSAyMSwgIE51bWJlciA3LCBKdWx5LCAxOTc4CgogICAgICAgICAgICAgICAgIERhdmlkIEwuIFdhbHR6ICAgQW4gRW5nbGlzaCBMYW5ndWFnZSBRdWVyeSBBbnN3ZXJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbSBmb3IgYSBMYXJnZSBSZWxhdGlvbmFsIERhdGEgQmFzZSAgNTI2LS01MzkKICAgICAgICAgTWljaGFlbCBMLiBGcmVkbWFuIGFuZCAgIAogICAgICAgICAgICAgICAgICAgIEJydWNlIFdlaWRlICAgT24gdGhlIGNvbXBsZXhpdHkgb2YgY29tcHV0aW5nIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVhc3VyZSBvZiAkXGJpZ2N1cFthX2ksYl9pXSQgIC4gLiAuIC4gLiA1NDAtLTU0NAogICAgICAgICAgICAgICAgRnJhbmNpcyBZLiBDaGluICAgQW4gJHtPfShuKSQgQWxnb3JpdGhtIGZvciBEZXRlcm1pbmluZyBhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZWFyLU9wdGltYWwgQ29tcHV0YXRpb24gT3JkZXIgb2YgTWF0cml4CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFpbiBQcm9kdWN0cyAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDU0NC0tNTQ5CiAgICAgICAgICAgICAgWWVob3NodWEgUGVybCBhbmQgICAKICAgICAgICAgICAgICAgICAgQWxvbiBJdGFpIGFuZCAgIAogICAgICAgICAgICAgICAgICAgICAgSGFpbSBBdm5pICAgSW50ZXJwb2xhdGlvbiBTZWFyY2ggLS0tIEEgTG9nIExvZyBOCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWFyY2ggLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDU1MC0tNTUzCiAgICAgICBDb25zdGFudGluZSBIYWxhdHNpcyBhbmQgICAKICAgICAgICAgICAgIEdlb3JnZSBQaGlsb2t5cHJvdSAgIFBzZXVkb2NoYWluaW5nIGluIEhhc2ggVGFibGVzICAuIC4gLiAuIC4gNTU0LS01NTcKICAgICAgICAgICAgICAgICBMZXNsaWUgTGFtcG9ydCAgIFRpbWUsIENsb2NrcywgYW5kIHRoZSBPcmRlcmluZyBvZiBFdmVudHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGEgRGlzdHJpYnV0ZWQgU3lzdGVtICAuIC4gLiAuIC4gLiAuIC4gNTU4LS01NjUKICAgICAgICBIZW5yeSBHaXZlbnMgQmFrZXIsIEpyLiAgIFNoYWxsb3cgQmluZGluZyBpbiBMaXNwIDEuNSAgLiAuIC4gLiAuIC4gNTY1LS01NjkKICAgICAgICAgICAgICAgICAgICBIYW5hbiBTYW1ldCAgIFByb3ZpbmcgdGhlIENvcnJlY3RuZXNzIG9mIEhldXJpc3RpY2FsbHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGltaXplZCBDb2RlIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNTcwLS01ODIKICAgICAgICAgICAgICBSb2JlcnQgRS4gU2hvc3RhayAgIEFuIEFsZ29yaXRobSBmb3IgUmVhc29uaW5nIEFib3V0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFcXVhbGl0eSAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDU4My0tNTg1CiAgICAgICAgICAgIFJhaHVsIENoYXR0ZXJneSBhbmQgICAKICAgICAgICAgICAgICAgICAgIFVkbyBXLiBQb29jaCAgIEFuYWx5c2lzIG9mIHRoZSBBdmFpbGFiaWxpdHkgb2YgQ29tcHV0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbXMgVXNpbmcgQ29tcHV0ZXItQWlkZWQgQWxnZWJyYSAuIC4gNTg2LS01OTEKICAgICAgICAgICAgICAgIExhd3JlbmNlIFNueWRlciAgIEItVHJlZXMgUmUtZXhhbWluZWQgIC4gLiAuIC4gLiAuIC4gLiAuIC4gNTk0LS01OTQKCkNvbW11bmljYXRpb25zIG9mIHRoZSBBQ00KVm9sdW1lIDIxLCAgTnVtYmVyIDgsIEF1Z3VzdCwgMTk3OAoKICAgICAgICAgICAgICAgICAgICBKb2huIEJhY2t1cyAgIENhbiBQcm9ncmFtbWluZyBCZSBMaWJlcmF0ZWQgRnJvbSB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvbiBOZXVtYW5uIFN0eWxlPyBBIEZ1bmN0aW9uYWwgU3R5bGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBpdHMgQWxnZWJyYSBvZiBQcm9ncmFtcyAgLiAuIC4gLiAuIC4gNjEzLS02NDEKICAgICAgICAgICAgICAgICAgICAgICBSLiBLbGluZyAgIFZhbHVlIGNvbmZsaWN0cyBhbmQgc29jaWFsIGNob2ljZSBpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlY3Ryb25pYyBmdW5kcyB0cmFuc2ZlciBzeXN0ZW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmVsb3BtZW50cyAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNjQyLS02NTcKICAgICAgICAgICAgICAgRC4gUy4gSGlyc2NoYmVyZyAgIEZhc3QgUGFyYWxsZWwgU29ydGluZyBBbGdvcml0aG1zIC4gLiAuIC4gNjU3LS02NjEKICAgICAgICAgICAgIEYuIExvY2t3b29kIE1vcnJpcyAgIEEgVGltZS0gYW5kIFNwYWNlLUVmZmljaWVudCBHYXJiYWdlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21wYWN0aW9uIEFsZ29yaXRobSAuIC4gLiAuIC4gLiAuIC4gLiAuIDY2Mi0tNjY1CiAgICAgICAgICAgICAgICAgQy4gQS4gUi4gSG9hcmUgICBDb21tdW5pY2F0aW5nIFNlcXVlbnRpYWwgUHJvY2Vzc2VzIC4gLiAuIDY2Ni0tNjc3CiAgICAgICAgICAgUmljaGFyZCBTLiBCcmljZSBhbmQgICAKICAgICAgICAgICAgICAgICAgIEouIEMuIEJyb3duZSAgIEZlZWRiYWNrIENvdXBsZWQgUmVzb3VyY2UgQWxsb2NhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9saWNpZXMgaW4gdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNdWx0aXByb2dyYW1taW5nLU11bHRpcHJvY2Vzc29yIENvbXB1dGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW0gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDY3OC0tNjg2CiAgICAgICAgICBQZXRlciBTY2hldWVybWFubiBhbmQgICAKICAgICAgICAgICAgICBDLiBSb2JlcnQgQ2FybHNvbiAgIFNlbGYtQXNzZXNzbWVudCBQcm9jZWR1cmUgVjogYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi1hc3Nlc3NtZW50IHByb2NlZHVyZSBkZWFsaW5nIHdpdGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFiYXNlIHN5c3RlbXMgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNjg3LS02OTMKCkNvbW11bmljYXRpb25zIG9mIHRoZSBBQ00KVm9sdW1lIDIxLCAgTnVtYmVyIDksIFNlcHRlbWJlciwgMTk3OAoKICAgICAgICAgICAgICAgUi4gQS4gSGFycmlzIGFuZCAgIAogICAgICAgICAgICAgICAgICAgICBKLiBELiBadW5kICAgQW4gYWxnb3JpdGhtIHVzaW5nIHN5bWJvbGljIHRlY2huaXF1ZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgQmVsLVBldHJvdiBjbGFzc2lmaWNhdGlvbiBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3Jhdml0YXRpb25hbCBmaWVsZHMgLiAuIC4gLiAuIC4gLiAuIC4gLiA3MTUtLTcxNwogICAgICAgICAgICAgICAgSC4gRC4gU2Nod2V0bWFuICAgSHlicmlkIFNpbXVsYXRpb24gTW9kZWxzIG9mIENvbXB1dGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW1zICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDcxOC0tNzIzCiAgICAgICAgICAgICAgIEplZmZyZXkgTS4gQmFydGggICBBIFByYWN0aWNhbCBJbnRlcnByb2NlZHVyYWwgRGF0YSBGbG93CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbmFseXNpcyBBbGdvcml0aG0gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDcyNC0tNzM2CiAgICAgICAgICAgIEdlcmFsZCBKLiBQb3BlayBhbmQgICAKICAgICAgICAgICAgICAgIERhdmlkIEEuIEZhcmJlciAgIE1vZGVsIGZvciBWZXJpZmljYXRpb24gb2YgRGF0YSBTZWN1cml0eQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gT3BlcmF0aW5nIFN5c3RlbXMgLiAuIC4gLiAuIC4gLiAuIC4gLiA3MzctLTc0OQogICAgICAgICAgIFBldGVyIEouIERlbm5pbmcgYW5kICAgCiAgICAgICAgICAgICAgICBEb25hbGQgUi4gU2x1dHogICBHZW5lcmFsaXplZCBXb3JraW5nIFNldHMgZm9yIFNlZ21lbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZmVyZW5jZSBTdHJpbmdzICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNzUwLS03NTkKICAgICAgICAgICAgICBHbGVuZm9yZCBKLiBNeWVycyAgIENvbnRyb2xsZWQgRXhwZXJpbWVudCBpbiBQcm9ncmFtIFRlc3RpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBDb2RlIFdhbGt0aHJvdWdocy9JbnNwZWN0aW9ucyAgLiAuIC4gNzYwLS03NjgKICAgICAgICAgICAgICAgIFRoLiBPdHRtYW5uIGFuZCAgIAogICAgICAgICAgICAgICAgICBILiBXLiBTaXggYW5kICAgCiAgICAgICAgICAgICAgICAgICAgICAgIEQuIFdvb2QgICBSaWdodCBCcm90aGVyIFRyZWVzICAuIC4gLiAuIC4gLiAuIC4gLiAuIDc2OS0tNzc2CiAgICAgICAgICAgICAgICBFcm5zdCBHLiBVbHJpY2ggICBFdmVudCBNYW5pcHVsYXRpb24gZm9yIERpc2NyZXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaW11bGF0aW9ucyBSZXF1aXJpbmcgTGFyZ2UgTnVtYmVycyBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXZlbnRzIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA3NzctLTc4NQogICAgICAgICAgICAgICAgICAgICAgICBLLiBNYWx5ICAgQSBub3RlIG9uIHZpcnR1YWwgbWVtb3J5IGluZGV4ZXMgLiAuIC4gLiA3ODYtLTc4NwogICAgICAgICAgICAgICAgU3RlcGhlbiBBLiBXYXJkICAgUmVhbCBUaW1lIFBsb3R0aW5nIG9mIEFwcHJveGltYXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250b3VyIE1hcHMgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDc4OC0tNzkwCiAgICAgICAgICAgICAgICAgICBBLiBUZW5lbmJhdW0gICBTaW11bGF0aW9ucyBvZiBkeW5hbWljIHNlcXVlbnRpYWwgc2VhcmNoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGdvcml0aG1zIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDc5MC0tNzkxCgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSAyMSwgIE51bWJlciAxMCwgT2N0b2JlciwgMTk3OAoKICAgICAgICAgICAgICAgICAgV2FsdCBCcmFpbmVyZCAgIEZvcnRyYW4gNzcgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gODA2LS04MjAKICAgICAgICAgICAgICAgICBELiBUb3dzbGV5IGFuZCAgIAogICAgICAgICAgICAgICBLLiBNLiBDaGFuZHkgYW5kICAgCiAgICAgICAgICAgICAgICAgICBKLiBDLiBCcm93bmUgICBNb2RlbHMgZm9yIFBhcmFsbGVsIFByb2Nlc3NpbmcgV2l0aGluCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9ncmFtczogQXBwbGljYXRpb24gdG8gQ1BVOkkvTyBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEkvTzpJL08gT3ZlcmxhcCAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gODIxLS04MzEKICAgICAgICAgICAgICAgIEJlbiBTaG5laWRlcm1hbiAgIEp1bXAgU2VhcmNoaW5nOiBBIEZhc3QgU2VxdWVudGlhbCBTZWFyY2gKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlY2huaXF1ZSAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gODMxLS04MzQKICAgICAgICAgICAgICBTaGktS3VvIENoYW5nIGFuZCAgIAogICAgICAgICAgICAgICAgICAgWWluLVdhaCBXb25nICAgT3B0aW1hbCBIaXN0b2dyYW0gTWF0Y2hpbmcgYnkgTW9ub3RvbmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyYXkgTGV2ZWwgVHJhbnNmb3JtYXRpb24gIC4gLiAuIC4gLiAuIC4gODM1LS04NDAKICAgICAgICAgICAgICAgICAgUm9iZXJ0IE1vcnJpcyAgIENvdW50aW5nIExhcmdlIE51bWJlcnMgb2YgRXZlbnRzIGluCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbWFsbCBSZWdpc3RlcnMgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDg0MC0tODQyCiAgICAgICAgICAgICAgQ29saW4gTC4gTWNNYXN0ZXIgICBBbiBBbmFseXNpcyBvZiBBbGdvcml0aG1zIGZvciB0aGUgRHV0Y2gKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hdGlvbmFsIEZsYWcgUHJvYmxlbSAgLiAuIC4gLiAuIC4gLiAuIC4gODQyLS04NDYKICAgICAgICAgICAgICAgUm9iZXJ0IFNlZGdld2ljayAgIEltcGxlbWVudGluZyBRdWlja3NvcnQgUHJvZ3JhbXMgIC4gLiAuIC4gODQ3LS04NTcKICAgICAgICAgICAgICAgICAgICBHb3Jkb24gTHlvbiAgIFBhY2tlZCBTY2F0dGVyIFRhYmxlcyAgLiAuIC4gLiAuIC4gLiAuIC4gODU3LS04NjUKICAgICAgICAgIE1hbGNvbG0gQy4gRWFzdG9uIGFuZCAgIAogICAgICAgICAgICAgICAgICAgUm9uYWxkIEZhZ2luICAgQ29sZC1TdGFydCBWcy4gV2FybS1TdGFydCBNaXNzIFJhdGlvcyAgICA4NjYtLTg3MgogICAgICAgICAgICAgICBXLiBSLiBGcmFudGEgYW5kICAgCiAgICAgICAgICAgICAgICAgICAgICBLdXJ0IE1hbHkgICBBIGNvbXBhcmlzb24gb2YgaGVhcHMgYW5kIHRoZSBUTAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlIGZvciB0aGUgc2ltdWxhdGlvbiBldmVudCBzZXQgICA4NzMtLTg3NQoKQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTQpWb2x1bWUgMjEsICBOdW1iZXIgMTEsIE5vdmVtYmVyLCAxOTc4CgogICAgICAgICAgICAgICAgTm9ybWFuIFIuIEx5b25zICAgU3lzdGVtcyBEZXNpZ24gRWR1Y2F0aW9uOiBhIEdhbWluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXBwcm9hY2ggLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA4ODktLTg5NQogICAgICAgICAgICAgICAgICBKLiBXLiBXZW5kb3JmICAgQSBTaW1wbHkgRXh0ZW5kZWQgYW5kIE1vZGlmaWVkIEJhdGNoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnZpcm9ubWVudCBHcmFwaGljYWwgU3lzdGVtIChTZW1iZWdzKSAgIDg5Ny0tOTA0CiAgICAgICAgICAgICAgICAgICBCLiBLdW1hciBhbmQgICAKICAgICAgICAgICAgICAgICBFLiBTLiBEYXZpZHNvbiAgIFBlcmZvcm1hbmNlIEV2YWx1YXRpb24gb2YgSGlnaGx5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25jdXJyZW50IENvbXB1dGVycyBieSBEZXRlcm1pbmlzdGljCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaW11bGF0aW9uIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDkwNC0tOTEzCiAgICAgICAgQmVydGhvbGQgSy4gUC4gSG9ybiBhbmQgICAKICAgICAgICAgICAgICAgQnJldHQgTC4gQmFjaG1hbiAgIFVzaW5nIFN5bnRoZXRpYyBJbWFnZXMgdG8gUmVnaXN0ZXIgUmVhbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW1hZ2VzIHdpdGggU3VyZmFjZSBNb2RlbHMgLiAuIC4gLiAuIC4gLiA5MTQtLTkyNAogICAgICAgICAgICAgIFAuIFIuIFRhZGlrYW1hbGxhICAgQ29tcHV0ZXIgR2VuZXJhdGlvbiBvZiBHYW1tYSBSYW5kb20KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlcyAtLS0gSUkgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gOTI1LS05MjgKICAgICAgICAgICAgICAgIEcuIERhdmlkIFJpcGxleSAgIFNpbXBsZSBSZWNvdmVyeS1Pbmx5IFByb2NlZHVyZSBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpbXBsZSBQcmVjZWRlbmNlIFBhcnNlcnMgIC4gLiAuIC4gLiAuIC4gOTI4LS05MzAKICAgICAgICAgICAgIEQuIFAuIEZyaWVkbWFuIGFuZCAgIAogICAgICAgICAgICAgICAgICAgICBELiBTLiBXaXNlICAgQSBOb3RlIG9uIENvbmRpdGlvbmFsIEV4cHJlc3Npb25zICAuIC4gLiA5MzEtLTkzMwogICAgICAgICAgICAgIFBlciBCcmluY2ggSGFuc2VuICAgRGlzdHJpYnV0ZWQgUHJvY2Vzc2VzOiBBIENvbmN1cnJlbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2dyYW1taW5nIENvbmNlcHQgIC4gLiAuIC4gLiAuIC4gLiAuIC4gOTM0LS05NDEKICAgICAgICAgICAgRmFicml6aW8gTHVjY2lvIGFuZCAgIAogICAgICAgICAgICAgICAgICAgIExpbmRhIFBhZ2xpICAgUG93ZXIgVHJlZXMgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA5NDEtLTk0NwogICAgICAgICAgICAgICAgICAgIEIuIEEuIFNoZWlsICAgTWVkaWFuIFNwbGl0IFRyZWVzOiBBIEZhc3QgTG9va3VwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZWNobmlxdWUgZm9yIEZyZXF1ZW50bHkgT2NjdXJyaW5nIEtleXMgIDk0Ny0tOTU4CiAgICAgICAgICAgICAgICAgQy4gQS4gUi4gSG9hcmUgICBDb3JyaWdlbmR1bTogYGBDb21tdW5pY2F0aW5nIFNlcXVlbnRpYWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2Nlc3NlcycnICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gOTU4LS05NTgKICAgICAgICAgICAgICBFdWdlbmUgQy4gRnJldWRlciAgIFN5bnRoZXNpemluZyBDb25zdHJhaW50IEV4cHJlc3Npb25zICAuIC4gOTU4LS05NjYKICAgICAgICAgRWRzZ2VyIFcuIERpamtzdHJhIGFuZCAgIAogICAgICAgICAgICAgTGVzbGllIExhbXBvcnQgYW5kICAgCiAgICAgICAgICAgICAgIEEuIEouIE1hcnRpbiBhbmQgICAKICAgICAgICAgICAgIEMuIFMuIFNjaG9sdGVuIGFuZCAgIAogICAgICAgICAgICAgIEUuIEYuIE0uIFN0ZWZmZW5zICAgT24tdGhlLUZseSBHYXJiYWdlIENvbGxlY3Rpb246IEFuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGVyY2lzZSBpbiBDb29wZXJhdGlvbiAgLiAuIC4gLiAuIC4gLiAuIDk2Ni0tOTc1CgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSAyMSwgIE51bWJlciAxMiwgRGVjZW1iZXIsIDE5NzgKCiAgICAgICAgICAgICAgICAgICAgRGF2aWQgR3JpZXMgICBDb3JyaWdlbmR1bTogYGBBbiBleGVyY2lzZSBpbiBwcm92aW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbGxlbCBwcm9ncmFtcyBjb3JyZWN0JycKICAgICAgICAgICBSb2dlciBNLiBOZWVkaGFtIGFuZCAgIAogICAgICAgICAgIE1pY2hhZWwgRC4gU2Nocm9lZGVyICAgVXNpbmcgRW5jcnlwdGlvbiBmb3IgQXV0aGVudGljYXRpb24gaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhcmdlIE5ldHdvcmtzIG9mIENvbXB1dGVycyAgLiAuIC4gLiAuIC4gOTkzLS05OTkKICAgICAgICAgICAgICAgIERhdmlkIEdyaWVzIGFuZCAgIAogICAgICAgICAgICAgICAgICBKYXlhZGV2IE1pc3JhICAgQSBMaW5lYXIgU2lldmUgQWxnb3JpdGhtIGZvciBGaW5kaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmltZSBOdW1iZXJzICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDk5OS0tMTAwMwogICAgICAgICAgSmFtZXMgTC4gUGV0ZXJzb24gYW5kICAgCiAgICAgICAgICAgIEphbWVzIFIuIEJpdG5lciBhbmQgICAKICAgICAgICAgICAgICAgICBKb2huIEguIEhvd2FyZCAgIFRoZSBTZWxlY3Rpb24gb2YgT3B0aW1hbCBUYWIgU2V0dGluZ3MgICAgMTAwNC0tMTAwNwogICAgICAgICAgSmFtZXMgQy4gV2V0aGVyYmUgYW5kICAgCiAgICAgICAgICAgICAgICAgVi4gVGhvbWFzIERvY2sgICBTdHJhdGVnaWMgUGxhbm5pbmcgTWV0aG9kb2xvZ3kgZm9yIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHV0aW5nIEVmZm9ydCBpbiBIaWdoZXIgRWR1Y2F0aW9uOiBhbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1waXJpY2FsIEV2YWx1YXRpb24gLiAuIC4gLiAuIC4gLiAuIC4gLiAxMDA4LS0xMDE1CiAgICAgICAgICAgICAgICBNLiBJYnJhbXNoYSBhbmQgICAKICAgICAgICAgICAgICAgICAgIFYuIFJhamFyYW1hbiAgIERldGVjdGlvbiBvZiBMb2dpY2FsIEVycm9ycyBpbiBEZWNpc2lvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFibGUgUHJvZ3JhbXMgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAxMDE2LS0xMDI1CiAgICAgICAgICAgQWxiZXJ0byBNYXJ0ZWxsaSBhbmQgICAKICAgICAgICAgICAgICAgICAgVWdvIE1vbnRhbmFyaSAgIE9wdGltaXppbmcgRGVjaXNpb24gVHJlZXMgVGhyb3VnaAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGV1cmlzdGljYWxseSBHdWlkZWQgU2VhcmNoICAuIC4gLiAuIC4gLiAxMDI1LS0xMDM5CiAgICAgICAgICAgICBZb2dlbiBLLiBEYWxhbCBhbmQgICAKICAgICAgICAgICAgIFJvYmVydCBNLiBNZXRjYWxmZSAgIFJldmVyc2UgUGF0aCBGb3J3YXJkaW5nIG9mIEJyb2FkY2FzdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFja2V0cyAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAxMDQwLS0xMDQ4CiAgICAgICAgICAgICBKb2huIFYuIEd1dHRhZyBhbmQgICAKICAgICAgICAgICAgIEVsbGlzIEhvcm93aXR6IGFuZCAgIAogICAgICAgICAgICAgICAgRGF2aWQgUi4gTXVzc2VyICAgQWJzdHJhY3QgRGF0YSBUeXBlcyBhbmQgU29mdHdhcmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRpb24gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMTA0OC0tMTA2NAogICAgICAgICAgICAgSmF5IE0uIFNwaXR6ZW4gYW5kICAgCiAgICAgICAgICAgICBLYXJsIE4uIExldml0dCBhbmQgICAKICAgICAgICAgICAgICBMYXdyZW5jZSBSb2JpbnNvbiAgIEFuIEV4YW1wbGUgb2YgSGllcmFyY2hpY2FsIERlc2lnbiBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb29mICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMTA2NC0tMTA3NQoKQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTQpWb2x1bWUgMjMsICBOdW1iZXIgNCwgTWF5LCAxOTc4CgogICAgICAgICAgICAgICAgICBKLiBMLiBCZW50bGV5ICAgTXVsdGlkaW1lbnNpb25hbCBEaXZpZGUtYW5kLUNvbnF1ZXIgIC4gLiAyMTQtLTIyOAoKQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTQpWb2x1bWUgMjIsICBOdW1iZXIgMSwgSmFudWFyeSwgMTk3OQoKICAgICAgICAgICAgICAgICAgSm9obiBXLiBCb3lzZSAgIEludGVyZmVyZW5jZSBEZXRlY3Rpb24gQW1vbmcgU29saWRzIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3VyZmFjZXMgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAzLS05CiAgICAgICAgICAgICAgICAgS2VudCBXLiBDb2x0b24gICBUaGUgaW1wYWN0IGFuZCB1c2Ugb2YgY29tcHV0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlY2hub2xvZ3kgYnkgdGhlIHBvbGljZSAuIC4gLiAuIC4gLiAuIC4gMTAtLTIwCiAgICAgR2lhbiBDYXJsbyBCb25naW92YW5uaSBhbmQgICAKICAgICAgICAgICAgICAgIEZhYnJpemlvIEx1Y2NpbyAgIFBlcm11dGF0aW9uIG9mIERhdGEgQmxvY2tzIGluIGEgQnViYmxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZW1vcnkgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDIxLS0yNQogICAgICAgICAgIENoYXJsZXMgSC4gU2F1ZXIgYW5kICAgCiAgICAgICAgICAgICAgICAgSy4gTWFuaSBDaGFuZHkgICBUaGUgSW1wYWN0IG9mIERpc3RyaWJ1dGlvbnMgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEaXNjaXBsaW5lcyBvbiBNdWx0aXBsZSBQcm9jZXNzb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbXMgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMjUtLTM0CiAgICAgICAgICAgICAgSi4gUC4gQmFuYXRyZSBhbmQgICAKICAgICAgICAgICAgICBKLiBQLiBSb3V0ZWF1IGFuZCAgIAogICAgICAgICAgICAgICAgICAgIEwuIFRyaWxsaW5nICAgQW4gZXZlbnQtZHJpdmVuIGNvbXBpbGluZyB0ZWNobmlxdWUgIC4gLiAzNC0tNDIKICAgICAgICAgICAgICAgSmFjcXVlcyBKLiBBcnNhYyAgIFN5bnRhY3RpYyBTb3VyY2UgdG8gU291cmNlIFRyYW5zZm9ybXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBQcm9ncmFtIE1hbmlwdWxhdGlvbiAuIC4gLiAuIC4gLiAuIC4gNDMtLTU0CgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSAyMiwgIE51bWJlciAyLCBGZWJydWFyeSwgMTk3OQoKICAgICAgICAgICAgICBPLiBFLiBUYXVsYmVlIGFuZCAgIAogICAgICAgICAgICAgICAgICAgIFMuIEQuIENvbnRlICAgUHJvZHVjdGlvbiBhbmQgZW1wbG95bWVudCBvZiBQaC5ELnMgaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXB1dGVyIHNjaWVuY2UgLS0tIDE5NzcgYW5kIDE5NzggLiAuIC4gNzUtLTc2CiAgICAgICAgICAgICAgICAgIFIuIEUuIEZhaXJsZXkgICBFbXBsb3ltZW50IGNoYXJhY3RlcmlzdGljcyBvZiBkb2N0b3JhbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwgY29tcHV0ZXIgc2NpZW50aXN0cyAgLiAuIC4gLiAuIC4gLiA3Ny0tNzgKICAgICAgICAgICAgICAgICBXLiBFLiBHdWxsIGFuZCAgIAogICAgICAgICAgICAgICAgICBNLiBBLiBKZW5raW5zICAgUmVjdXJzaXZlIGRhdGEgc3RydWN0dXJlcyBpbiBBUEwuICAuIC4gLiA3OS0tOTYKICAgICAgICAgICAgICAgICAgIEUuIE1vcmVsIGFuZCAgIAogICAgICAgICAgICAgICAgICAgIEMuIFJlbnZvaXNlICAgR2xvYmFsIE9wdGltaXphdGlvbiBieSBTdXBwcmVzc2lvbiBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFydGlhbCBSZWR1bmRhbmNpZXMgLiAuIC4gLiAuIC4gLiAuIC4gLiA5Ni0tMTAzCiAgICAgICAgICAgICBNLiBSLiBBbmRlcnNvbiBhbmQgICAKICAgICAgICAgICAgICAgICBNLiBHLiBBbmRlcnNvbiAgIENvbW1lbnRzIG9uIFBlcmZlY3QgSGFzaGluZyBGdW5jdGlvbnM6IEEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpbmdsZSBQcm9iZSBSZXRyaWV2aW5nIE1ldGhvZCBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRpYyBTZXRzICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMTA0LS0xMDUKICAgICAgICAgIERhdmlkIFIuIENoZXJpdG9uIGFuZCAgIAogICAgICAgICBNaWNoYWVsIEEuIE1hbGNvbG0gYW5kICAgCiAgICAgICAgICBMYXdyZW5jZSBTLiBNZWxlbiBhbmQgICAKICAgICAgICAgICAgICAgICAgR2FyeSBSLiBTYWdlciAgIFRob3RoLCBhIFBvcnRhYmxlIFJlYWwtVGltZSBPcGVyYXRpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbSAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMTA1LS0xMTUKICAgICAgICAgICAgICBEYXZpZCBQLiBSZWVkIGFuZCAgIAogICAgICAgICAgICBSYWplbmRyYSBLLiBLYW5vZGlhICAgU3luY2hyb25pemF0aW9uIHdpdGggRXZlbnRjb3VudHMgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXF1ZW5jZXJzIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDExNS0tMTIzCiAgICAgICAgICAgICBIYWltIE1lbmRlbHNvbiBhbmQgICAKICAgICAgICAgIEpvc2VwaCBTLiBQbGlza2luIGFuZCAgIAogICAgICAgICAgICAgICAgICAgVXJpIFllY2hpYWxpICAgT3B0aW1hbCBTdG9yYWdlIEFsbG9jYXRpb24gZm9yIFNlcmlhbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZXMgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAxMjQtLTEzMAoKQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTQpWb2x1bWUgMjIsICBOdW1iZXIgMywgTWFyY2gsIDE5NzkKCiAgICAgICAgIFJpY2hhcmQgSC4gQXVzdGluZyBhbmQgICAKICAgICAgICAgICAgQnJ1Y2UgSC4gQmFybmVzIGFuZCAgIAogICAgICAgICAgRGVsbGEgVC4gQm9ubmV0dGUgYW5kICAgCiAgICAgICAgICAgIEdlcmFsZCBMLiBFbmdlbCBhbmQgICAKICAgICAgICAgICAgICAgICAgR29yZG9uIFN0b2tlcyAgIEN1cnJpY3VsdW0gJzc4OiBSZWNvbW1lbmRhdGlvbnMgZm9yIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5kZXJncmFkdWF0ZSBQcm9ncmFtIGluIENvbXB1dGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTY2llbmNlIC0tLSBBIFJlcG9ydCBvZiB0aGUgQUNNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXJyaWN1bHVtIENvbW1pdHRlZSBvbiBDb21wdXRlciBTY2llbmNlIDE0Ny0tMTY2CiAgICAgICAgICAgIEFsYmVydCBELiBFZGdhciBhbmQgICAKICAgICAgICAgICAgICAgICAgU2FtdWVsIEMuIExlZSAgIEZPQ1VTIG1pY3JvY29tcHV0ZXIgbnVtYmVyIHN5c3RlbSAgLiAuIC4gMTY2LS0xNzcKICAgICAgICAgICAgICAgICAgIEphbWVzIFNsYWdsZSAgIEV4cGVyaW1lbnRzIHdpdGggU29tZSBBbGdvcml0aG1zIHRoYXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbmQgQ2VudHJhbCBTb2x1dGlvbnMgZm9yIFBhdHRlcm4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzaWZpY2F0aW9uIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMTc4LS0xODMKICAgICAgICBBbWFyeWxsaXMgRGVsaXlhbm5pIGFuZCAgIAogICAgICAgICAgICAgUm9iZXJ0IEEuIEtvd2Fsc2tpICAgTG9naWMgYW5kIFNlbWFudGljIE5ldHdvcmtzICAuIC4gLiAuIC4gLiAxODQtLTE5MgogICAgICAgICAgICAgICAgICBEYWxpYSBNb3R6a2luICAgVXNlIG9mIE5vcm1hbCBNdWx0aXBsaWNhdGlvbiBUYWJsZXMgZm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmZvcm1hdGlvbiBTdG9yYWdlIGFuZCBSZXRyaWV2YWwgIC4gLiAuIDE5My0tMjA3CiAgICAgICAgICAgICAgICAgQy4gTC4gTWNNYXN0ZXIgICBDb3JyaWdlbmR1bTogYGBBbiBBbmFseXNpcyBvZiBBbGdvcml0aG1zCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIER1dGNoIE5hdGlvbmFsIEZsYWcgUHJvYmxlbScnICAgIDIwNy0tMjA3CgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSAyMiwgIE51bWJlciA0LCBBcHJpbCwgMTk3OQoKICAgICAgICAgICAgICAgICBBcnRodXIgTS4gTGVzayAgIERldGVjdGlvbiBvZiBUaHJlZS1EaW1lbnNpb25hbCBQYXR0ZXJucwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgQXRvbXMgaW4gQ2hlbWljYWwgU3RydWN0dXJlcyAgLiAuIC4gLiAyMTktLTIyNAogICAgICAgICAgICAgICAgIEUuIEcuIENhbGUgYW5kICAgCiAgICAgICAgICAgTC4gTC4gR3JlbWlsbGlvbiBhbmQgICAKICAgICAgICAgICAgICAgICBKLiBMLiBNY0tlbm5leSAgIFByaWNlL1BlcmZvcm1hbmNlIFBhdHRlcm5zIG9mIFUuUy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXB1dGVyIFN5c3RlbXMgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMjI1LS0yMzMKICAgICAgICAgICAgICBHaWFjb21vIEJ1Y2NpIGFuZCAgIAogICAgICAgICAgICAgRG9uYWxkIE4uIFN0cmVldGVyICAgTWV0aG9kb2xvZ3kgZm9yIHRoZSBEZXNpZ24gb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpc3RyaWJ1dGVkIEluZm9ybWF0aW9uIFN5c3RlbXMgIC4gLiAuIC4gMjMzLS0yNDUKICAgICAgICAgIFJpY2hhcmQgSi4gSGFuc29uIGFuZCAgIAogICAgICAgICAgICAgSm9obiBBLiBXaXNuaWV3c2tpICAgQSBNYXRoZW1hdGljYWwgUHJvZ3JhbW1pbmcgVXBkYXRpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1ldGhvZCBVc2luZyBNb2RpZmllZCBHaXZlbnMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9ucyBhbmQgQXBwbGllZCB0byBMUAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYmxlbXMgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAyNDUtLTI1MQogICAgICAgICAgICAgICAgICBEYW5pZWwgQnJlbGF6ICAgTmV3IE1ldGhvZHMgdG8gQ29sb3IgdGhlIFZlcnRpY2VzIG9mIGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyYXBoICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMjUxLS0yNTYKCkNvbW11bmljYXRpb25zIG9mIHRoZSBBQ00KVm9sdW1lIDIyLCAgTnVtYmVyIDUsIE1heSwgMTk3OQoKICAgICAgICBSaWNoYXJkIEEuIERlIE1pbGxvIGFuZCAgIAogICAgICAgICAgUmljaGFyZCBKLiBMaXB0b24gYW5kICAgCiAgICAgICAgICAgICAgICAgQWxhbiBKLiBQZXJsaXMgICBTb2NpYWwgUHJvY2Vzc2VzIGFuZCBQcm9vZnMgb2YgVGhlb3JlbXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBQcm9ncmFtcyAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMjcxLS0yODAKICAgICAgICAgICAgICAgRXJuZXN0IENoYW5nIGFuZCAgIAogICAgICAgICAgICAgICBSb3NlbWFyeSBSb2JlcnRzICAgQW4gSW1wcm92ZWQgQWxnb3JpdGhtIGZvciBEZWNlbnRyYWxpemVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeHRyZW1hLUZpbmRpbmcgaW4gQ2lyY3VsYXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb25zIG9mIFByb2Nlc3NvcnMgLiAuIC4gLiAuIC4gMjgxLS0yODMKICAgICAgICAgICAgICAgICBULiBELiBTdGVybGluZyAgIENvbnN1bWVyIERpZmZpY3VsdGllcyB3aXRoIENvbXB1dGVyaXplZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNhY3Rpb25zOiBhbiBFbXBpcmljYWwgSW52ZXN0aWdhdGlvbiAyODMtLTI4OQogICAgICAgICAgICAgICBKb2huIEMuIFJleW5vbGRzICAgUmVhc29uaW5nIEFib3V0IEFycmF5cyAuIC4gLiAuIC4gLiAuIC4gLiAyOTAtLTI5OQogICAgICAgICAgICAgTWljaGFlbCBKLiBNYW50aGV5ICAgTW9kZWwgZm9yIGFuZCBEaXNjdXNzaW9uIG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNdWx0aS1JbnRlcnByZXRlciBTeXN0ZW1zICAuIC4gLiAuIC4gLiAuIDI5OS0tMzA5CgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSAyMiwgIE51bWJlciA2LCBKdW5lLCAxOTc5CgogICAgICAgICAgICAgICAgICAgIFIuIFMuIExlbW9zICAgQW4gaW1wbGVtZW50YXRpb24gb2Ygc3RydWN0dXJlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Fsay10aHJvdWdocyBpbiB0ZWFjaGluZyBDT0JBTAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbW1pbmcgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAzMzUtLTM0MAogICAgICAgICAgICBTLiBOLiBCdXNlbmJlcmcgYW5kICAgCiAgICAgICAgICAgICAgICAgICAgICBXLiBDLiBUYW0gICBBbiBhY2FkZW1pYyBwcm9ncmFtIHByb3ZpZGluZyByZWFsaXN0aWMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWluaW5nIGluIHNvZnR3YXJlIGVuZ2luZWVyaW5nIC4gLiAuIC4gMzQxLS0zNDUKICAgICAgICAgICAgICAgICAgIFN0ZXZlbiBBbHRlciAgIE1vZGVsIGZvciBBdXRvbWF0aW5nIEZpbGUgYW5kIFByb2dyYW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlc2lnbiBpbiBCdXNpbmVzcyBBcHBsaWNhdGlvbiBTeXN0ZW1zICAgMzQ1LS0zNTMKICAgICAgICAgICAgICBKZXJvbWUgQS4gRmVsZG1hbiAgIEhpZ2ggTGV2ZWwgUHJvZ3JhbW1pbmcgZm9yIERpc3RyaWJ1dGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21wdXRpbmcgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDM1My0tMzY4CiAgICAgICAgICAgICAgIFJvYmVydCBTZWRnZXdpY2sgICBDb3JyaWdlbmR1bTogYGBJbXBsZW1lbnRpbmcgUXVpY2tzb3J0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9ncmFtcycnIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDM2OC0tMzY4CiAgICAgICAgICAgICAgICAgUi4gU2hhcGlyYSBhbmQgICAKICAgICAgICAgICAgICAgICAgICAgSC4gRnJlZW1hbiAgIFRoZSBDeWNsaWMgT3JkZXIgUHJvcGVydHkgb2YgVmVydGljZXMgYXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuIEFpZCBpbiBTY2VuZSBBbmFseXNpcyAuIC4gLiAuIC4gLiAuIC4gMzY4LS0zNzUKCkNvbW11bmljYXRpb25zIG9mIHRoZSBBQ00KVm9sdW1lIDIyLCAgTnVtYmVyIDcsIEp1bHksIDE5NzkKCiAgICAgICAgICAgICAgICAgICAgVC4gV2lub2dyYWQgICBCZXlvbmQgUHJvZ3JhbW1pbmcgTGFuZ3VhZ2VzIC4gLiAuIC4gLiAuIDM5MS0tNDAxCiAgICAgICAgICAgICAgICBGLiBQLiBQcmVwYXJhdGEgICBBbiBPcHRpbWFsIFJlYWwtVGltZSBBbGdvcml0aG0gZm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQbGFuYXIgQ29udmV4IEh1bGxzICAuIC4gLiAuIC4gLiAuIC4gLiAuIDQwMi0tNDA1CiAgICAgICAgIFBhdHJpY2sgQy4gRmlzY2hlciBhbmQgICAKICAgICAgICAgICAgICBSb2JlcnQgTC4gUHJvYmVydCAgIFN0b3JhZ2UgUmVvcmdhbml6YXRpb24gVGVjaG5pcXVlcyBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdHJpeCBDb21wdXRhdGlvbiBpbiBhIFBhZ2luZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW52aXJvbm1lbnQgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA0MDUtLTQxNQogICAgICAgICAgICAgICAgIEouIEguIEhpbmUgYW5kICAgCiAgICAgICAgICAgICAgICAgSS4gTWl0cmFuaSBhbmQgICAKICAgICAgICAgICAgICAgICAgICAgICAgUy4gVHN1ciAgIFRoZSBDb250cm9sIG9mIFJlc3BvbnNlIFRpbWVzIGluCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNdWx0aS1DbGFzcyBTeXN0ZW1zIGJ5IE1lbW9yeSBBbGxvY2F0aW9uIDQxNS0tNDI0CiAgICAgICAgICAgICBSb2JlcnQgQS4gS293YWxza2kgICBBbGdvcml0aG0gPSBMb2dpYyArIENvbnRyb2wgIC4gLiAuIC4gLiAuIDQyNC0tNDM2CgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSAyMiwgIE51bWJlciA4LCBBdWd1c3QsIDE5NzkKCiAgICAgICAgICAgICAgICAgSi4gVy4gV29uZyBhbmQgICAKICAgICAgICAgICAgICAgIEcuIFNjb3R0IEdyYWhhbSAgIFNlbGYtQXNzZXNzbWVudCBQcm9jZWR1cmUgVkk6IGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtYXNzZXNzbWVudCBwcm9jZWR1cmUgZGVhbGluZyB3aXRoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWV1ZWluZyBuZXR3b3JrIG1vZGVscyBvZiBjb21wdXRlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtcyAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA0NDktLTQ1NAogICAgICAgICAgICAgICAgICAgIFIuIFcuIEZsb3lkICAgVGhlIHBhcmFkaWdtcyBvZiBwcm9ncmFtbWluZyAuIC4gLiAuIC4gLiA0NTUtLTQ2MAogICAgICAgICAgIEQuIFMuIEhpcnNjaGJlcmcgYW5kICAgCiAgICAgICAgICAgICAgQS4gSy4gQ2hhbmRyYSBhbmQgICAKICAgICAgICAgICAgICAgICAgRC4gVi4gU2Fyd2F0ZSAgIENvbXB1dGluZyBDb25uZWN0ZWQgQ29tcG9uZW50cyBvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyYWxsZWwgQ29tcHV0ZXJzIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA0NjEtLTQ2NAogICAgICAgICAgTmFjaHVtIERlcnNob3dpdHogYW5kICAgCiAgICAgICAgICAgICAgICAgICAgWm9oYXIgTWFubmEgICBQcm92aW5nIFRlcm1pbmF0aW9uIHdpdGggTXVsdGlzZXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyaW5ncyAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNDY1LS00NzYKICAgICAgICAgICAgIERvcm90aHkgRS4gRGVubmluZyAgIFNlY3VyZSBQZXJzb25hbCBDb21wdXRpbmcgaW4gYW4gSW5zZWN1cmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHdvcmsgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNDc2LS00ODIKICAgICAgICAgICAgICAgICAgIEwuIFMuIE5lbHNvbiAgIEZ1cnRoZXIgcmVtYXJrIG9uIHN0YWJseSB1cGRhdGluZyBtZWFuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgc3RhbmRhcmQgZGV2aWF0aW9uIGVzdGltYXRlcyAuIC4gLiAuIDQ4My0tNDgzCgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSAyMiwgIE51bWJlciA5LCBTZXB0ZW1iZXIsIDE5NzkKCiAgICAgICAgICBKZXJvbWUgQS4gRmVsZG1hbiBhbmQgICAKICAgICAgICAgIFdpbGxpYW0gUi4gU3V0aGVybGFuZCAgIFJlanV2ZW5hdGluZyBFeHBlcmltZW50YWwgQ29tcHV0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNjaWVuY2UgLS0tIEEgUmVwb3J0IHRvIHRoZSBOYXRpb25hbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2NpZW5jZSBGb3VuZGF0aW9uIGFuZCBPdGhlcnMgIC4gLiAuIC4gLiA0OTctLTUwMgogICBEYW5pZWwgRC4gTWNDcmFja2VuLCBDQ1AgYW5kICAgCiAgICAgICAgICAgUGV0ZXIgSi4gRGVubmluZyBhbmQgICAKICAgICAgICAgICAgICAgRGF2aWQgSC4gQnJhbmRpbiAgIEFkZGVuZHVtOiBBbiBBQ00gRXhlY3V0aXZlIENvbW1pdHRlZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9zaXRpb24gb24gdGhlIENyaXNpcyBpbiBFeHBlcmltZW50YWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXB1dGVyIFNjaWVuY2UgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNTAzLS01MDQKICAgICAgICAgICAgICAgICAgICAgIFp2aSBHYWxpbCAgIE9uIEltcHJvdmluZyB0aGUgV29yc2UgQ2FzZSBSdW5uaW5nIFRpbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBCb3llci1Nb29yZSBTdHJpbmcgTWF0Y2hpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsZ29yaXRobSAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNTA1LS01MDgKICAgICAgICAgICBLYXJpLUpvdWtvIFJhaWhhIGFuZCAgIAogICAgICAgICAgICAgICBTdHVhcnQgSC4gWndlYmVuICAgQW4gT3B0aW1hbCBJbnNlcnRpb24gQWxnb3JpdGhtIGZvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT25lLVNpZGVkIEhlaWdodC1CYWxhbmNlZCBCaW5hcnkgU2VhcmNoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmVlcyAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDUwOC0tNTEyCiAgICAgICAgICAgICAgV2lsZnJlZCBKLiBIYW5zZW4gICBQcm9ncmVzc2l2ZSBhY3ljbGljIGRpZ3JhcGhzIC0tLSBhIHRvb2wKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBkYXRhYmFzZSBpbnRlZ3JpdHkgLiAuIC4gLiAuIC4gLiAuIC4gNTEzLS01MTgKICAgICAgICAgICAgICAgICAgICBHLiBOYWd5IGFuZCAgIAogICAgICAgICAgICAgICAgICAgIFMuIEcuIFdhZ2xlICAgQXBwcm94aW1hdGlvbiBvZiBQb2x5Z29uYWwgTWFwcyBieQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2VsbHVsYXIgTWFwcyAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA1MTgtLTUyNQogICAgICAgICAgICAgICAgIFQuIEYuIENoYW4gYW5kICAgCiAgICAgICAgICAgICAgICAgICAgSi4gRy4gTGV3aXMgICBDb21wdXRpbmcgc3RhbmRhcmQgZGV2aWF0aW9uczogYWNjdXJhY3kgIDUyNi0tNTMxCiAgICAgICAgICAgICAgICAgIEQuIEguIEQuIFdlc3QgICBVcGRhdGluZyBtZWFuIGFuZCB2YXJpYW5jZSBlc3RpbWF0ZXM6IGFuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXByb3ZlZCBtZXRob2QgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDUzMi0tNTM1CgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSAyMiwgIE51bWJlciAxMCwgT2N0b2JlciwgMTk3OQoKICAgICAgICAgICAgICAgICAgICBQLiBELiBMYWlyZCAgIENvbW1lbnQgb246IGBgQW4gb3B0aW1hbCBldmFsdWF0aW9uIG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCb29sZWFuIGV4cHJlc3Npb25zIGluIGFuIG9ubGluZSBxdWVyeQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtJycgW0NvbW0uIEFDTSwgMjAsIDE5NzcsIG5vLiA1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzQ0LS0zNDcsIE1SIDU1ICM5NjI3XSBieSBNLiBaLiBIYW5hbmkgICA1NDktLTU1MAogICAgICAgICAgICAgICAgIEVodWQgR3VkZXMgYW5kICAgCiAgICAgICAgICAgICAgICBBbnRob255IEhvZmZtYW4gICBBIG5vdGUgb246IGBgQW4gb3B0aW1hbCBldmFsdWF0aW9uIG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCb29sZWFuIGV4cHJlc3Npb25zIGluIGFuIG9ubGluZSBxdWVyeQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtJycgW0NvbW0uIEFDTSwgMjAsIDE5NzcsIG5vLiA1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzQ0LS0zNDcsIE1SIDU1ICM5NjI3XSBieSBNLiBaLiBIYW5hbmkgICA1NTAtLTU1MwogICAgICAgICAgICAgTS4gUi4gQW5kZXJzb24gYW5kICAgCiAgICAgICAgICAgICAgICAgTS4gRy4gQW5kZXJzb24gICBDb3JyaWdlbmR1bTogYGBDb21tZW50cyBvbiBQZXJmZWN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNoaW5nIEZ1bmN0aW9uczogQSBTaW5nbGUgUHJvYmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHJpZXZpbmcgTWV0aG9kIGZvciBTdGF0aWMgU2V0cycnICAuIC4gIDU1MwogICAgICAgICAgICAgICAgIExlc2xpZSBMYW1wb3J0ICAgT24gdGhlIFByb29mIG9mIENvcnJlY3RuZXNzIG9mIGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbGVuZGFyIFByb2dyYW0gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNTU0LS01NTYKICAgICAgICAgICAgICAgICAgICAgUGF1bCBLbGludCAgIExpbmUgTnVtYmVycyBNYWRlIENoZWFwICAuIC4gLiAuIC4gLiAuIC4gNTU3LS01NTkKICAgICAgICAgVG9tYXMgTG96YW5vLVBlcmV6IGFuZCAgIAogICAgICAgICAgICAgIE1pY2hhZWwgQS4gV2VzbGV5ICAgQW4gQWxnb3JpdGhtIGZvciBQbGFubmluZyBDb2xsaXNpb24tRnJlZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0aHMgQW1vbmcgUG9seWhlZHJhbCBPYnN0YWNsZXMgLiAuIC4gLiA1NjAtLTU3MAogICAgICAgICAgICAgICAgICAgRi4gTC4gTW9ycmlzICAgT24gYSBDb21wYXJpc29uIG9mIEdhcmJhZ2UgQ29sbGVjdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVjaG5pcXVlcyAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAgNTcxCgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSAyMiwgIE51bWJlciAxMSwgTm92ZW1iZXIsIDE5NzkKCiAgICAgICAgICAgICAgICAgICAgUi4gRS4gTWF5ZXIgICBBIHBzeWNob2xvZ3kgb2YgbGVhcm5pbmcgQkFTSUMgLiAuIC4gLiAuIDU4OS0tNTkzCiAgICAgICAgICAgICAgICAgIFIuIE1vcnJpcyBhbmQgICAKICAgICAgICAgICAgICAgICAgICBLLiBUaG9tcHNvbiAgIFBhc3N3b3JkIFNlY3VyaXR5IC0tLSBBIENhc2UgSGlzdG9yeSAuIC4gNTk0LS01OTcKICAgICAgICAgICAgICAgU2htdWVsIFBlbGVnIGFuZCAgIAogICAgICAgICAgICAgICBBenJpZWwgUm9zZW5mZWxkICAgQnJlYWtpbmcgU3Vic3RpdHV0aW9uIENpcGhlcnMgVXNpbmcgYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsYXhhdGlvbiBBbGdvcml0aG0gLiAuIC4gLiAuIC4gLiAuIC4gLiA1OTgtLTYwNQogICAgICAgIFJvYmVydCBFbmRyZSBUYXJqYW4gYW5kICAgCiAgICAgICAgICAgIEFuZHJldyBDaGkgQ2hpaCBZYW8gICBTdG9yaW5nIGEgU3BhcnNlIFRhYmxlIC4gLiAuIC4gLiAuIC4gLiAuIDYwNi0tNjExCiAgICAgICAgICAgICAgICAgICAgIEFkaSBTaGFtaXIgICBIb3cgdG8gU2hhcmUgYSBTZWNyZXQgIC4gLiAuIC4gLiAuIC4gLiAuIDYxMi0tNjEzCgpDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNClZvbHVtZSAyMiwgIE51bWJlciAxMiwgRGVjZW1iZXIsIDE5NzkKCiAgICAgICAgICAgICAgICAgICAgQS4gSC4gTGlwaXMgICBDb3N0cyBvZiB0aGUgY3VycmVudCBVUyBwYXltZW50cyBzeXN0ZW0gIDY0NC0tNjQ3CiAgICAgICAgICAgICAgICAgICAgIFIuIEguIExvbmcgICBQdWJsaWMgcHJvdGVjdGlvbiBhbmQgZWR1Y2F0aW9uIHdpdGggRUZUIDY0OC0tNjU0CiAgICAgICAgICAgICAgICAgICBELiBCLiBQYXJrZXIgICBWdWxuZXJhYmlsaXRpZXMgb2YgRUZUcyB0byBpbnRlbnRpb25hbGx5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXVzZWQgbG9zc2VzICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDY1NC0tNjYwCiAgICAgICAgICAgICAgSy4gTC4gS3JhZW1lciBhbmQgICAKICAgICAgICAgICAgICAgICAgICAgIEsuIENvbHRvbiAgIFBvbGljeSwgdmFsdWVzLCBhbmQgRUZUIHJlc2VhcmNoOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5hdG9teSBvZiBhIHJlc2VhcmNoIGFnZW5kYSAuIC4gLiAuIC4gLiA2NjAtLTY3MQogICAgICAgICAgICAgICAgSi4gRi4gU2hvY2ggYW5kICAgCiAgICAgICAgICAgICAgICAgICAgIEouIEEuIEh1cHAgICBNZWFzdXJlZCBQZXJmb3JtYW5jZSBvZiBhbiBFVEhFUk5FVAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYWwgTmV0d29yayAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA3MTEtLTcyMQoKQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTQpWb2x1bWUgMjYsICBOdW1iZXIgOSwgU2VwdGVtYmVyLCAxOTc5CgogICAgICAgICAgICAgICAgICAgIEhhbmFuIFNhbWV0ICAgQSBxdWFkdHJlZSBtZWRpYWwgYXhpcyB0cmFuc2Zvcm0gLiAuIC4gLiA2ODAtLTY5MwoKQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTQpWb2x1bWUgMzMsICBOdW1iZXIgNiwgSnVuZSwgMTk5MAoKICAgICAgICAgICAgICAgUGV0ZXIgSy4gUGVhcnNvbiAgIEZhc3QgSGFzaGluZyBvZiBWYXJpYWJsZS1MZW5ndGggVGV4dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5ncyAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA2NzctLTY4MAoKQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTQpWb2x1bWUgMzMsICBOdW1iZXIgOCwgQXVndXN0LCAxOTkwCgogICAgICAgICAgICAgICBEYW5pZWwgTS4gU3VuZGF5ICAgQSBWZXJ5IEZhc3QgU3Vic3RyaW5nIFNlYXJjaCBBbGdvcml0aG0gICAxMzItLTE0MgoKQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTQpWb2x1bWUgMzQsICBOdW1iZXIgMTEsIE5vdmVtYmVyLCAxOTkxCgogICAgICAgICAgICAgICAgICAgICBJLiBEaXR0bWVyICAgTm90ZSBvbiBGYXN0IEhhc2hpbmcgb2YgVmFyaWFibGUgTGVuZ3RoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0IFN0cmluZ3MgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuICAxMTgKICAgICAgICAgICAgICAgICAgSmFjcXVlcyBTYXZveSAgIE5vdGUgb24gRmFzdCBIYXNoaW5nIG9mIFZhcmlhYmxlIExlbmd0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dCBTdHJpbmdzIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAxMTgtLTExOQogICAgICAgICAgICAgICAgICBKYW1lcyBMaXRzaW9zICAgTm90ZSBvbiBGYXN0IEhhc2hpbmcgb2YgVmFyaWFibGUgTGVuZ3RoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0IFN0cmluZ3MgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDExOC0tMTIwCiAgICAgICAgICAgICAgICAgIFBldGVyIFBlYXJzb24gICBOb3RlIG9uIEZhc3QgSGFzaGluZyBvZiBWYXJpYWJsZSBMZW5ndGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHQgU3RyaW5ncyAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gIDEyMAoKQ29tcHV0aW5nIFN1cnZleXMKVm9sdW1lIDYsICBOdW1iZXIgNCwgRGVjZW1iZXIsIDE5NzQKCiAgICAgICAgICAgICAgICBEb25hbGQgRS4gS251dGggICBTdHJ1Y3R1cmVkIFByb2dyYW1taW5nIHdpdGggZ28gdG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRlbWVudHMgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMjYxLS0zMDEKCkpvdXJuYWwgb2YgdGhlIEFDTQpWb2x1bWUgMjMsICBOdW1iZXIgMSwgSmFudWFyeSwgMTk3NgoKICAgICAgICAgICAgU3VzYW4gTC4gR3JhaGFtIGFuZCAgIAogICAgICAgICAgICAgICAgICAgIE1hcmsgV2VnbWFuICAgQSBGYXN0IGFuZCBVc3VhbGx5IExpbmVhciBBbGdvcml0aG0gZm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHbG9iYWwgRmxvdyBBbmFseXNpcyAuIC4gLiAuIC4gLiAuIC4gLiAuIDE3Mi0tMjAyCgpNYW5hZ2VtZW50IFNjaWVuY2UKVm9sdW1lIDE5LCAgTnVtYmVyICwgLCAxOTcyCgogICAgICAgICAgICAgICAgICAgIFIuIEouIEJyb3duICAgQ2hyb21hdGljIHNjaGVkdWxpbmcgYW5kIHRoZSBjaHJvbWF0aWMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlciBwcm9ibGVtIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNDUxLS00NjMKClNJQU0gSm91cm5hbCBvZiBDb21wdXRpbmcKVm9sdW1lIDYsICBOdW1iZXIgMiwgSnVuZSwgMTk3NwoKICAgICAgICAgICAgRG9uYWxkIEUuIEtudXRoIGFuZCAgIAogICAgICAgICAgICAgICBKLiBILiBNb3JyaXMgYW5kICAgCiAgICAgICAgICAgICAgICAgICAgVi4gUi4gUHJhdHQgICBGYXN0IHBhdHRlcm4gbWF0Y2hpbmcgaW4gc3RyaW5ncyAuIC4gLiAuIDMyMy0tMzUwCgpTb2Z0d2FyZSAtLS0gUHJhY3RpY2UgYW5kIEV4cGVyaWVuY2UKVm9sdW1lIDEyLCAgTnVtYmVyIDEsIEphbnVhcnksIDE5ODIKCiAgICAgICAgICAgICAgICBBLiBMLiBUaGFycCBhbmQgICAKICAgICAgICAgICAgICAgICAgICAgIEsuLUMuIFRhaSAgIFRoZSBwcmFjdGljYWxpdHkgb2YgdGV4dCBzaWduYXR1cmVzIGZvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZWxlcmF0aW5nIHN0cmluZyBzZWFyY2hpbmcgIC4gLiAuIC4gLiAzNS0tNDQKCkFDTSBUcmFuc2FjdGlvbnMgb24gTWF0aGVtYXRpY2FsIFNvZnR3YXJlClZvbHVtZSAxLCAgTnVtYmVyIDMsIFNlcHRlbWJlciwgMTk3NQoKICAgICAgICAgICAgICAgICAgT3ZlIFNrb3ZnYWFyZCAgIFJlbWFyayBvbiBgYEFsZ29yaXRobSAyMzY6IEJlc3NlbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25zIG9mIHRoZSBGaXJzdCBLaW5kIFtTMTddJycgIC4gLiAyODItLTI4NAogICAgICAgICAgICAgICAgICBKYXlhZGV2IE1pc3JhICAgUmVtYXJrIG9uIGBgQWxnb3JpdGhtIDI0NjogR3JheWNvZGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtaXScnICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMjg1LS0yODUKCkFDTSBUcmFuc2FjdGlvbnMgb24gTWF0aGVtYXRpY2FsIFNvZnR3YXJlClZvbHVtZSAxLCAgTnVtYmVyIDksIFNlcHRlbWJlciwgMTk3NQoKICAgICAgICAgICAgICAgUm9iZXJ0IEZlaW5zdGVpbiAgIFJlbWFyayBvbiBgYEFsZ29yaXRobSA0ODM6IE1hc2tlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhyZWUtRGltZW5zaW9uYWwgUGxvdCBQcm9ncmFtIHdpdGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvdGF0aW9ucyBbSjZdJycgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMjg1LS0yODUKCkFDTSBUcmFuc2FjdGlvbnMgb24gTWF0aGVtYXRpY2FsIFNvZnR3YXJlClZvbHVtZSAyLCAgTnVtYmVyIDEsIE1hcmNoLCAxOTc2CgogICAgICAgICAgICAgICAgICBELiBNLiBCb3VsdG9uICAgUmVtYXJrIG9uIGBgQWxnb3JpdGhtIDQzNDogRXhhY3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2JhYmlsaXRpZXMgZm9yICRSXHRpbWVze0N9JAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGluZ2VuY3kgVGFibGVzIFtHMl0nJyAgLiAuIC4gLiAuIC4gLiAxMDgtLTEwOAogICAgICAgICAgICAgICAgIEx1Y2lhbiBELiBEdXRhICAgUmVtYXJrIG9uIGBgQWxnb3JpdGhtIDQ3NTogVmlzaWJsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3VyZmFjZSBQbG90dGluZyBQcm9ncmFtIFtKNl0nJyAgLiAuIC4gLiAxMDktLTExMAogICAgICAgICAgICAgICAgRy4gTS4gV2hpdGUgYW5kICAgCiAgICAgICAgICAgICAgICBTLiBHb3VkcmVhdSBhbmQgICAKICAgICAgICAgICAgICAgICAgIEouIEwuIExlZ3JvcyAgIFJlbWFyayBvbiBgYEFsZ29yaXRobSA0Nzk6IEEgTWluaW1hbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3Bhbm5pbmcgVHJlZSBDbHVzdGVyaW5nIE1ldGhvZCBbWl0nJyAgICAxMTAtLTExMQogICAgICAgICAgICAgICAgICAgIEouIFBvbWVyYW56ICAgUmVtYXJrIG9uIGBgQWxnb3JpdGhtIDQ4NzogRXhhY3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEN1bXVsYXRpdmUgRGlzdHJpYnV0aW9uIG9mIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS29sbW9nb3Jvdi1TbWlybm92IFN0YXRpc3RpYyBmb3IgU21hbGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhbXBsZXMgW1MxNF0nJyAgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMTExLS0xMTEKICAgICAgICAgICAgICAgICAgUm9iZXJ0IE1vcnJpcyAgIFJlbWFyayBvbiBgYEFsZ29yaXRobSA0OTA6IFRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlsb2dhcml0aG0gRnVuY3Rpb24gb2YgYSBSZWFsIEFyZ3VtZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbUzIyXScnICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDExMi0tMTEyCgpBQ00gVHJhbnNhY3Rpb25zIG9uIE1hdGhlbWF0aWNhbCBTb2Z0d2FyZQpWb2x1bWUgMiwgIE51bWJlciAyLCBKdW5lLCAxOTc2CgogICAgICAgICAgICBNYWxjb2xtIEMuIFBpa2UgYW5kICAgCiAgICAgICAgICAgICAgICAgIEplbm5pZSBTb29Ib28gICBSZW1hcmsgb24gYGBBbGdvcml0aG0gMTc5OiBJbmNvbXBsZXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCZXRhIFJhdGlvIFtTMTRdJycgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDIwNy0tMjA4CiAgICAgICAgICAgIE1pY2hhZWwgUi4gQW5kZXJzb24gICBSZW1hcmsgb24gYGBBbGdvcml0aG0gNDMzOiBJbnRlcnBvbGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgU21vb3RoIEN1cnZlIEZpdHRpbmcgQmFzZWQgb24gTG9jYWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2NlZHVyZXMgW0UyXScnICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMjA4LS0yMDgKCkFDTSBUcmFuc2FjdGlvbnMgb24gTWF0aGVtYXRpY2FsIFNvZnR3YXJlClZvbHVtZSAyLCAgTnVtYmVyIDMsIFNlcHRlbWJlciwgMTk3NgoKICAgICAgICAgICAgICAgICBBbGFuIE0uIERhdmllcyAgIFJlbWFyayBvbiBgYEFsZ29yaXRobSA0NTA6IFJvc2VuYnJvY2sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uIE1pbmltaXphdGlvbiBbRTRdJycgLiAuIC4gLiAuIC4gMzAwLS0zMDEKICAgICAgICAgICAgICAgICBUaGVvZG9yZSBCcm93biAgIFJlbWFyayBvbiBgYEFsZ29yaXRobSA0ODk6IFRoZSBBbGdvcml0aG0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFTEVDVCAtLS0gZm9yIEZpbmRpbmcgdGhlICRpJHRoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbWFsbGVzdCBvZiAkbiQgRWxlbWVudHMgW00xXScnICAuIC4gLiAuIDMwMS0tMzA0CgpBQ00gVHJhbnNhY3Rpb25zIG9uIE1hdGhlbWF0aWNhbCBTb2Z0d2FyZQpWb2x1bWUgMiwgIE51bWJlciA0LCBEZWNlbWJlciwgMTk3NgoKICAgICAgICAgICAgICAgICAgICAgIE0uIFIuIEl0byAgIFJlbWFyayBvbiBgYEFsZ29yaXRobSAyODQ6IEludGVyY2hhbmdlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBUd28gQmxvY2tzIG9mIERhdGEgW0syXScnIC4gLiAuIC4gLiAuIDM5Mi0tMzkzCiAgICAgICAgICAgICAgICBNb2hhbWVkIGVsIExvenkgICBSZW1hcmsgb24gYGBBbGdvcml0aG0gMjk5OiBDaGktU3F1YXJlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZWdyYWwgW1MxNV0nJyAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAzOTMtLTM5NQogICAgICAgICAgICAgSGVuayBLb3BwZWxhYXIgYW5kICAgCiAgICAgICAgICAgICAgICAgUGV0ZXIgTW9sZW5hYXIgICBSZW1hcmsgb24gYGBBbGdvcml0aG0gNDg2OiBOdW1lcmljYWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludmVyc2lvbiBvZiBMYXBsYWNlIFRyYW5zZm9ybSBbRDVdJycgICAgMzk1LS0zOTYKCkFDTSBUcmFuc2FjdGlvbnMgb24gTWF0aGVtYXRpY2FsIFNvZnR3YXJlClZvbHVtZSAzLCAgTnVtYmVyIDEsIE1hcmNoLCAxOTc3CgogICAgICAgICAgICAgICBFc2tvIEcuIENhdGUgYW5kICAgCiAgICAgICAgICAgICAgICAgRGF2aWQgVy4gVHdpZ2cgICBBbGdvcml0aG0gNTEzOiBBbmFseXNpcyBvZiBJbi1TaXR1CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc3Bvc2l0aW9uIFtGMV0gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDEwNC0tMTEwCiAgICAgICAgICAgIEZyYW5cY2NvaXNlIFZlaWxsb24gICBSZW1hcmsgb24gYGBBbGdvcml0aG0gNDg2OiBOdW1lcmljYWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludmVyc2lvbiBvZiBMYXBsYWNlIFRyYW5zZm9ybScnIC4gLiAuIC4gMTExLS0xMTEKCkFDTSBUcmFuc2FjdGlvbnMgb24gTWF0aGVtYXRpY2FsIFNvZnR3YXJlClZvbHVtZSAzLCAgTnVtYmVyIDIsIEp1bmUsIDE5NzcKCiAgICAgICAgICAgICAgICBKLiBLLiBNLiBKYW5zZW4gICBSZW1hcmsgb24gYGBBbGdvcml0aG0gMjU5OiBMZWdlbmRyZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25zIGZvciBBcmd1bWVudHMgTGFyZ2VyIHRoYW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uZScnICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMjA0LS0yNTAKCkFDTSBUcmFuc2FjdGlvbnMgb24gTWF0aGVtYXRpY2FsIFNvZnR3YXJlClZvbHVtZSAzLCAgTnVtYmVyIDMsIFNlcHRlbWJlciwgMTk3NwoKICAgICAgICAgICAgICAgICAgIFBhb2xvIFNpcGFsYSAgIFJlbWFyayBvbiBgYEFsZ29yaXRobSA0MDg6IEEgU3BhcnNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRyaXggUGFja2FnZSAoUGFydCBJKSBbRjRdJycgLiAuIC4gLiAuIDMwMy0tMzAzCiAgICAgICAgICAgICAgICAgIERlbm5pcyBUZW5uZXkgICBSZW1hcmsgb24gYGBBbGdvcml0aG0gMjE5OiBUb3BvbG9naWNhbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJpbmcgZm9yIFBFUlQgTmV0d29ya3MnJyAuIC4gLiAuIC4gLiAzMDMtLTMwMwoKQUNNIFRyYW5zYWN0aW9ucyBvbiBNYXRoZW1hdGljYWwgU29mdHdhcmUKVm9sdW1lIDQsICBOdW1iZXIgMSwgTWFyY2gsIDE5NzgKCiAgICAgICAgICAgICAgICAgIE92ZSBTa292Z2FhcmQgICBSZW1hcmsgb24gYGBBbGdvcml0aG0gMTQ5OiBDb21wbGV0ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWxsaXB0aWMgSW50ZWdyYWwgW1MyMV0nJyAgLiAuIC4gLiAuIC4gLiA5NS0tOTUKCkFDTSBUcmFuc2FjdGlvbnMgb24gTWF0aGVtYXRpY2FsIFNvZnR3YXJlClZvbHVtZSA0LCAgTnVtYmVyIDMsIFNlcHRlbWJlciwgMTk3OAoKICAgICAgICAgICAgICAgIEpvaG4gUC4gQ29sZW1hbiAgIFJlbWFyayBvbiBgYEFsZ29yaXRobSA0OTogU3BoZXJpY2FsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXVtYW5uIEZ1bmN0aW9uJycgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDI5NS0tMjk1CiAgICAgICAgICAgICAgRnJlZCBHLiBHdXN0YXZzb24gICBSZW1hcmsgb24gYGBBbGdvcml0aG0gNDA4OiBBIFNwYXJzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0cml4IFBhY2thZ2UgKFBhcnQgSSkgW0Y0XScnIC4gLiAuIC4gLiAyOTUtLTI5NQogICAgICAgICAgICAgIEFuZHJldyBZLiBTY2hvZW5lICAgUmVtYXJrIG9uIGBgQWxnb3JpdGhtIDQzNTogTW9kaWZpZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluY29tcGxldGUgR2FtbWEgRnVuY3Rpb24gW1MxNF0nJyAgLiAuIC4gMjk2LS0zMDQKCkFDTSBUcmFuc2FjdGlvbnMgb24gTWF0aGVtYXRpY2FsIFNvZnR3YXJlClZvbHVtZSA1LCAgTnVtYmVyIDIsIEp1bmUsIDE5NzkKCiAgICAgICAgICAgICAgICBNb2hhbWVkIGVsIExvenkgICBSZW1hcmsgb24gYGBBbGdvcml0aG0gMzk1OiBTdHVkZW50J3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0JC1EaXN0cmlidXRpb24nJyBhbmQgUmVtYXJrIG9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYEFsZ29yaXRobSAzOTY6IFN0dWRlbnQncyBRdWFudGlsZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtTMTRdJycgIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMjM4LS0yMzkKICAgICAgICAgICAgICAgICAgIEsuIE8uIEdlZGRlcyAgIFJlbWFyayBvbiBgYEFsZ29yaXRobSA0MjQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGVuc2hhdy1DdXJ0aXMgUXVhZHJhdHVyZSBbTzFdJycgIC4gLiAuIDI0MC0tMjQwCiAgICAgICAgICAgICAgICAgTS4gUi4gQW5kZXJzb24gICBSZW1hcmsgb24gYGBBbGdvcml0aG0gNDc0OiBCaXZhcmlhdGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludGVycG9sYXRpb24gYW5kIFNtb290aCBTdXJmYWNlIEZpdHRpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhc2VkIG9uIExvY2FsIFByb2NlZHVyZXMnJyAgLiAuIC4gLiAuIC4gMjQxLS0yNDEKCkFDTSBUcmFuc2FjdGlvbnMgb24gTWF0aGVtYXRpY2FsIFNvZnR3YXJlClZvbHVtZSA1LCAgTnVtYmVyIDQsIERlY2VtYmVyLCAxOTc5CgogICAgICAgICAgICAgQnVydG9uIEwuIExlYXRoZXJzICAgUmVtYXJrIG9uIGBgQWxnb3JpdGhtIDUxMzogQW5hbHlzaXMgb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluLVNpdHUgVHJhbnNwb3NpdGlvbiBbRjFdJycgYW5kIFJlbWFyawogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb24gYGBBbGdvcml0aG0gNDY3OiBNYXRyaXggVHJhbnNwb3NpdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gUGxhY2UnJyAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA1MjAtLTUyMAogICAgICAgQS4gQy4gTS4gdmFuIFN3aWV0ZW4gYW5kICAgCiAgICAgICAgICAgIEouIFRoLiBNLiBkZSBIb3Nzb24gICBSZW1hcmsgb24gYGBBbGdvcml0aG0gNDc1OiBWaXNpYmxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdXJmYWNlIFBsb3R0aW5nIFByb2dyYW0nJyAuIC4gLiAuIC4gLiAuIDUyMS0tNTIzCgpBQ00gVHJhbnNhY3Rpb25zIG9uIE1hdGhlbWF0aWNhbCBTb2Z0d2FyZQpWb2x1bWUgNiwgIE51bWJlciAzLCBTZXB0ZW1iZXIsIDE5ODAKCiAgICAgICAgICAgICAgICAgICBVLiBIYXJtcyBhbmQgICAKICAgICAgICAgICAgIEguIEtvbGxha293c2tpIGFuZCAgIAogICAgICAgICAgICAgICAgICAgICAgRy4gTW9sbGVyICAgUmVtYXJrIG9uIGBgQWxnb3JpdGhtIDQwODogQSBTcGFyc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdHJpeCBQYWNrYWdlIChQYXJ0IDEpIFtGNF0nJyAuIC4gLiAuIC4gNDU2LS00NTcKCkFDTSBUcmFuc2FjdGlvbnMgb24gTWF0aGVtYXRpY2FsIFNvZnR3YXJlClZvbHVtZSA3LCAgTnVtYmVyIDIsIEp1bmUsIDE5ODEKCiAgICAgICAgICAgICAgICAgICAgIEcuIFcuIEhpbGwgICBSZW1hcmsgb24gYGBBbGdvcml0aG0gMzk1OiBTdHVkZW50J3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0JC1EaXN0cmlidXRpb24nJyAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gMjQ3LS0yNDkKICAgICAgICAgICAgICAgICAgICAgRy4gVy4gSGlsbCAgIFJlbWFyayBvbiBgYEFsZ29yaXRobSAzOTY6IFN0dWRlbnQncwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHQkLVF1YW50aWxlcycnICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAyNTAtLTI1MQogICAgICAgICAgICAgICAgIEkuIEQuIEhpbGwgYW5kICAgCiAgICAgICAgICAgICAgICAgICAgIE0uIEMuIFBpa2UgICBSZW1hcmsgb24gYGBBbGdvcml0aG0gMjk5OiBDaGktU3F1YXJlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZWdyYWwnJyAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAxODUtLTE4NQoKQUNNIFRyYW5zYWN0aW9ucyBvbiBNYXRoZW1hdGljYWwgU29mdHdhcmUKVm9sdW1lIDExLCAgTnVtYmVyIDQsIERlY2VtYmVyLCAxOTg1CgogICAgICAgICAgICAgICAgICAgICAgIE0uIEMuIEVyICAgUmVtYXJrIG9uIGBgQWxnb3JpdGhtIDI0NjogR3JheWNvZGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtaXScnICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gNDQxLS00NDMKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0ZXN0ZGlyL3QucmVGUwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY2NAAwMDAxNzUwADAwMDE3NTAAMDAwMDAwMDAwNDcAMTMzMzcxNzQ3MDMAMDEzMTEzACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEJFR0lOCXsgRlMgPSAiXHQrIiB9Cgl7IHByaW50ICQxLCAkMiB9CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdGVzdGRpci9wLjQ3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NjQAMDAwMTc1MAAwMDAxNzUwADAwMDAwMDAwMDc3ADEzMzM3MTc0NzAzADAxMjUwNQAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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CiA3MzYwCWF2YQogNzI3MwlqcnYKIDcwODAJYmluCiA3MDYzCWdyZWcKIDY1NjcJZGljdAogNjQ2MglsY2sKIDYyOTEJcmplCiA2MjExCWx3ZgogNTY3MQlkYXZlCiA1MzczCWpoYwogNTIyMAlhZ2YKIDUxNjcJZG91ZwogNTAwNwl2YWxlcmllCiAzOTYzCWpjYQogMzg5NQliYnMKIDM3OTYJbW9oCiAzNDgxCXhjaGFyCiAzMjAwCXRibAogMjg0NQlzCiAyNzc0CXRncwogMjY0MQltZXQKIDI1NjYJamNrCiAyNTExCXBvcnQKIDI0NzkJc3VlCiAyMTI3CXJvb3QKIDE5ODkJYnNiCiAxOTg5CWplZwogMTkzMwllYWcKIDE4MDEJcGRqCiAxNTkwCXRwYwogMTM4NQljdncKIDEzNzAJcndtCiAxMzE2CWF2ZwogMTIwNQllZwogMTE5NAlqYW0KIDExNTMJZGwKIDExNTAJbGdtCiAxMDMxCWNtYgogMTAxOAlqd3IKICA5NTAJZ2RiCiAgOTMxCW1hcmMKICA4OTgJdXNnCiAgODY1CWdncgogIDgyMglkYWVtb24KICA4MDMJbWloYWxpcwogIDcwMAlob25leQogIDYyNAl0YWQKICA1NTkJYWNzCiAgNTQxCXV1Y3AKICA1MjMJcmFmCiAgNDk1CWFkaAogIDQ1NglrZWMKICA0MTQJY3JhaWcKICAzODYJZG9ubWFjCiAgMzc1CWpqCiAgMzQ4CXJhdmkKICAzNDQJZHJ3CiAgMzI3CXN0YXJzCiAgMjg4CW1yZwogIDI3MglqY2IKICAyNjMJcmFscGgKICAyNTMJdG9tCiAgMjUxCXNqYgogIDI0OAloYWlnaHQKICAyMjQJc2hhcm9uCiAgMjIyCWNodWNrCiAgMjEzCWRzagogIDIwMQliaWxsCiAgMTg0CWdvZAogIDE3NglzeXMKICAxNjYJbWVoCiAgMTYzCWpvbgogIDE0NAlkYW4KICAxNDMJZm94CiAgMTIzCWRhbGUKICAxMTYJa2FiCiAgIDk1CWJ1egogICA4MAlhc2MKICAgNzkJamFzCiAgIDc5CXRydAogICA2NAl3c2IKICAgNjIJZHdoCiAgIDU2CWt0ZgogICA1NAlscgogICA0NwlkbGMKICAgNDUJZGxzCiAgIDQ1CWp3ZgogICA0NAltYXNoCiAgIDQzCWFycwogICA0Mwl2Z2wKICAgMzcJamZvCiAgIDMyCXJhYgogICAzMQlwZAogICAyOQlqbnMKICAgMjUJc3BtCiAgIDIyCXJvYgogICAxNQllZ2IKICAgMTAJaG0KICAgMTAJbWhiCiAgICA2CWFlZAogICAgNgljcGIKICAgIDUJZXZwCiAgICA0CWJlcgogICAgNAltZW4KICAgIDQJbWl0Y2gKICAgIDMJYXN0CiAgICAzCWpmcgogICAgMwlsYXgKICAgIDMJbmVsCiAgICAyCWJsdWUKICAgIDIJamZrCiAgICAyCW5qYXMKICAgIDEJMTIyc2VjCiAgICAxCWRkd2FyCiAgICAxCWdvcGkKICAgIDEJamsKICAgIDEJbGVhcm4KICAgIDEJbG93CiAgICAxCW5hYwogICAgMQlzaWRvcgoxcm9vdDpFTXBOQjhacDU2OjA6MDpTdXBlci1Vc2VyLCwsLCwsLDovOi9iaW4vc2gKMnJvb3R0Y3NoOio6MDowOlN1cGVyLVVzZXIgcnVubmluZyB0Y3NoIFtjYm1dOi86L2Jpbi90Y3NoCjNzeXNhZG06KjowOjA6U3lzdGVtIFYgQWRtaW5pc3RyYXRpb246L3Vzci9hZG1pbjovYmluL3NoCjRkaWFnOio6MDo5OTY6SGFyZHdhcmUgRGlhZ25vc3RpY3M6L3Vzci9kaWFnczovYmluL2NzaAo1ZGFlbW9uOio6MToxOmRhZW1vbnM6LzovYmluL3NoCjZiaW46KjoyOjI6U3lzdGVtIFRvb2xzIE93bmVyOi9iaW46L2Rldi9udWxsCjdudXVjcDpCSm51UWJBbzo2OjEwOlVVQ1AuQWRtaW46L3Vzci9zcG9vbC91dWNwcHVibGljOi91c3IvbGliL3V1Y3AvdXVjaWNvCjh1dWNwOio6Mzo1OlVVQ1AuQWRtaW46L3Vzci9saWIvdXVjcDoKOXN5czoqOjQ6MDpTeXN0ZW0gQWN0aXZpdHkgT3duZXI6L3Vzci9hZG06L2Jpbi9zaAoxMGFkbToqOjU6MzpBY2NvdW50aW5nIEZpbGVzIE93bmVyOi91c3IvYWRtOi9iaW4vc2gKMTFscDoqOjk6OTpQcmludCBTcG9vbGVyIE93bmVyOi92YXIvc3Bvb2wvbHA6L2Jpbi9zaAoxMmF1ZGl0b3I6KjoxMTowOkF1ZGl0IEFjdGl2aXR5IE93bmVyOi9hdWRpdG9yOi9iaW4vc2gKMTNkYmFkbWluOio6MTI6MDpTZWN1cml0eSBEYXRhYmFzZSBPd25lcjovZGJhZG1pbjovYmluL3NoCjE0Ym9vdGVzOmRjb246NTA6MTpUb20gS2lsbGlhbiAoRE8gTk9UIFJFTU9WRSk6L3RtcDoKMTVjZGp1a2U6ZGNvbjo1MToxOlRvbSBLaWxsaWFuIChETyBOT1QgUkVNT1ZFKTovdG1wOgoxNnJmaW5kZDoqOjY2OjE6UmZpbmQgRGFlbW9uIGFuZCBGc2R1bXA6L3Zhci9yZmluZGQ6L2Jpbi9zaAoxN0Vac2V0dXA6Kjo5OTI6OTk4OlN5c3RlbSBTZXR1cDovdmFyL3N5c2FkbWRlc2t0b3AvRVpzZXR1cDovYmluL2NzaAoxOGRlbW9zOio6OTkzOjk5NzpEZW1vbnN0cmF0aW9uIFVzZXI6L3Vzci9kZW1vczovYmluL2NzaAoxOXR1dG9yOio6OTk0Ojk5NzpUdXRvcmlhbCBVc2VyOi91c3IvdHV0b3I6L2Jpbi9jc2gKMjB0b3VyOio6OTk1Ojk5NzpJUklTIFNwYWNlIFRvdXI6L3Vzci9wZW9wbGUvdG91cjovYmluL2NzaAoyMWd1ZXN0Om5mUDQvV3B2aW8vUnc6OTk4Ojk5ODpHdWVzdCBBY2NvdW50Oi91c3IvcGVvcGxlL2d1ZXN0Oi9iaW4vY3NoCjIyNERnaWZ0czowbldSVFpzT010Ljo5OTk6OTk4OjREZ2lmdHMgQWNjb3VudDovdXNyL3Blb3BsZS80RGdpZnRzOi9iaW4vY3NoCjIzbm9ib2R5Oio6NjAwMDE6NjAwMDE6U1ZSNCBub2JvZHkgdWlkOi9kZXYvbnVsbDovZGV2L251bGwKMjRub2FjY2VzczoqOjYwMDAyOjYwMDAyOnVpZCBubyBhY2Nlc3M6L2Rldi9udWxsOi9kZXYvbnVsbAoyNW5vYm9keToqOi0yOi0yOm9yaWdpbmFsIG5vYm9keSB1aWQ6L2Rldi9udWxsOi9kZXYvbnVsbAoyNnJqZToqOjg6ODpSSkUgT3duZXI6L3Vzci9zcG9vbC9yamU6CjI3Y2hhbmdlczoqOjExOjExOnN5c3RlbSBjaGFuZ2UgbG9nOi86CjI4ZGlzdDpzb3JyeTo5OTk5OjQ6ZmlsZSBkaXN0cmlidXRpb25zOi92L2FkbS9kaXN0Oi92L2Jpbi9zaAoyOW1hbjoqOjk5Ojk5NTpPbi1saW5lIE1hbnVhbCBPd25lcjovOgozMHBob25lY2E6Kjo5OTE6OTkxOnBob25lIGNhbGwgbG9nIFt0b21dOi92L2FkbS9sb2c6L3YvYmluL3NoCjFyIG9vdCBFTXBOQjhacDU2IDAgMCBTdXBlci1Vc2VyLCwsLCwsLCAvIC9iaW4vc2gKMnIgb290dGNzaCAqIDAgMCBTdXBlci1Vc2VyIHJ1bm5pbmcgdGNzaCBbY2JtXSAvIC9iaW4vdGNzaAozcyB5c2FkbSAqIDAgMCBTeXN0ZW0gViBBZG1pbmlzdHJhdGlvbiAvdXNyL2FkbWluIC9iaW4vc2gKNGQgaWFnICogMCA5OTYgSGFyZHdhcmUgRGlhZ25vc3RpY3MgL3Vzci9kaWFncyAvYmluL2NzaAo1ZCBhZW1vbiAqIDEgMSBkYWVtb25zIC8gL2Jpbi9zaAo2YiBpbiAqIDIgMiBTeXN0ZW0gVG9vbHMgT3duZXIgL2JpbiAvZGV2L251bGwKN24gdXVjcCBCSm51UWJBbyA2IDEwIFVVQ1AuQWRtaW4gL3Vzci9zcG9vbC91dWNwcHVibGljIC91c3IvbGliL3V1Y3AvdXVjaWNvCjh1IHVjcCAqIDMgNSBVVUNQLkFkbWluIC91c3IvbGliL3V1Y3AgCjlzIHlzICogNCAwIFN5c3RlbSBBY3Rpdml0eSBPd25lciAvdXNyL2FkbSAvYmluL3NoCjEwIGFkbSAqIDUgMyBBY2NvdW50aW5nIEZpbGVzIE93bmVyIC91c3IvYWRtIC9iaW4vc2gKMTEgbHAgKiA5IDkgUHJpbnQgU3Bvb2xlciBPd25lciAvdmFyL3Nwb29sL2xwIC9iaW4vc2gKMTIgYXVkaXRvciAqIDExIDAgQXVkaXQgQWN0aXZpdHkgT3duZXIgL2F1ZGl0b3IgL2Jpbi9zaAoxMyBkYmFkbWluICogMTIgMCBTZWN1cml0eSBEYXRhYmFzZSBPd25lciAvZGJhZG1pbiAvYmluL3NoCjE0IGJvb3RlcyBkY29uIDUwIDEgVG9tIEtpbGxpYW4gKERPIE5PVCBSRU1PVkUpIC90bXAgCjE1IGNkanVrZSBkY29uIDUxIDEgVG9tIEtpbGxpYW4gKERPIE5PVCBSRU1PVkUpIC90bXAgCjE2IHJmaW5kZCAqIDY2IDEgUmZpbmQgRGFlbW9uIGFuZCBGc2R1bXAgL3Zhci9yZmluZGQgL2Jpbi9zaAoxNyBFWnNldHVwICogOTkyIDk5OCBTeXN0ZW0gU2V0dXAgL3Zhci9zeXNhZG1kZXNrdG9wL0Vac2V0dXAgL2Jpbi9jc2gKMTggZGVtb3MgKiA5OTMgOTk3IERlbW9uc3RyYXRpb24gVXNlciAvdXNyL2RlbW9zIC9iaW4vY3NoCjE5IHR1dG9yICogOTk0IDk5NyBUdXRvcmlhbCBVc2VyIC91c3IvdHV0b3IgL2Jpbi9jc2gKMjAgdG91ciAqIDk5NSA5OTcgSVJJUyBTcGFjZSBUb3VyIC91c3IvcGVvcGxlL3RvdXIgL2Jpbi9jc2gKMjEgZ3Vlc3QgbmZQNC9XcHZpby9SdyA5OTggOTk4IEd1ZXN0IEFjY291bnQgL3Vzci9wZW9wbGUvZ3Vlc3QgL2Jpbi9jc2gKMjIgNERnaWZ0cyAwbldSVFpzT010LiA5OTkgOTk4IDREZ2lmdHMgQWNjb3VudCAvdXNyL3Blb3BsZS80RGdpZnRzIC9iaW4vY3NoCjIzIG5vYm9keSAqIDYwMDAxIDYwMDAxIFNWUjQgbm9ib2R5IHVpZCAvZGV2L251bGwgL2Rldi9udWxsCjI0IG5vYWNjZXNzICogNjAwMDIgNjAwMDIgdWlkIG5vIGFjY2VzcyAvZGV2L251bGwgL2Rldi9udWxsCjI1IG5vYm9keSAqIC0yIC0yIG9yaWdpbmFsIG5vYm9keSB1aWQgL2Rldi9udWxsIC9kZXYvbnVsbAoyNiByamUgKiA4IDggUkpFIE93bmVyIC91c3Ivc3Bvb2wvcmplIAoyNyBjaGFuZ2VzICogMTEgMTEgc3lzdGVtIGNoYW5nZSBsb2cgLyAKMjggZGlzdCBzb3JyeSA5OTk5IDQgZmlsZSBkaXN0cmlidXRpb25zIC92L2FkbS9kaXN0IC92L2Jpbi9zaAoyOSBtYW4gKiA5OSA5OTUgT24tbGluZSBNYW51YWwgT3duZXIgLyAKMzAg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ICAgICB2ZXJzaW9uICAgICAgICAgPSAiMS4wMCIsCiMjIyAgICAgZGF0ZSAgICAgICAgICAgID0gIjA5IE9jdG9iZXIgMTk5NiIsCiMjIyAgICAgdGltZSAgICAgICAgICAgID0gIjE1OjU3OjA2IE1EVCIsCiMjIyAgICAgZmlsZW5hbWUgICAgICAgID0gImpvdXJuYWwtdG9jLmF3ayIsCiMjIyAgICAgYWRkcmVzcyAgICAgICAgID0gIkNlbnRlciBmb3IgU2NpZW50aWZpYyBDb21wdXRpbmcKIyMjICAgICAgICAgICAgICAgICAgICAgICAgRGVwYXJ0bWVudCBvZiBNYXRoZW1hdGljcwojIyMgICAgICAgICAgICAgICAgICAgICAgICBVbml2ZXJzaXR5IG9mIFV0YWgKIyMjICAgICAgICAgICAgICAgICAgICAgICAgU2FsdCBMYWtlIENpdHksIFVUIDg0MTEyCiMjIyAgICAgICAgICAgICAgICAgICAgICAgIFVTQSIsCiMjIyAgICAgdGVsZXBob25lICAgICAgID0gIisxIDgwMSA1ODEgNTI1NCIsCiMjIyAgICAgRkFYICAgICAgICAgICAgID0gIisxIDgwMSA1ODEgNDE0OCIsCiMjIyAgICAgVVJMICAgICAgICAgICAgID0gImh0dHA6Ly93d3cubWF0aC51dGFoLmVkdS9+YmVlYmUiLAojIyMgICAgIGNoZWNrc3VtICAgICAgICA9ICIyNTA5MiA5NzcgMzM1NyAyNjQ5MyIsCiMjIyAgICAgZW1haWwgICAgICAgICAgID0gImJlZWJlQG1hdGgudXRhaC5lZHUgKEludGVybmV0KSIsCiMjIyAgICAgY29kZXRhYmxlICAgICAgID0gIklTTy9BU0NJSSIsCiMjIyAgICAga2V5d29yZHMgICAgICAgID0gIkJpYlRlWCwgYmlibGlvZ3JhcGh5LCBIVE1MLCBqb3VybmFsIHRhYmxlIG9mCiMjIyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzIiwKIyMjICAgICBzdXBwb3J0ZWQgICAgICAgPSAieWVzIiwKIyMjICAgICBkb2NzdHJpbmcgICAgICAgPSAiQ3JlYXRlIGEgam91cm5hbCBjb3ZlciB0YWJsZSBvZiBjb250ZW50cyBmcm9tCiMjIyAgICAgICAgICAgICAgICAgICAgICAgIDxhdD5BcnRpY2xley4uLn0gZW50cmllcyBpbiBhIGpvdXJuYWwgQmliVGVYCiMjIyAgICAgICAgICAgICAgICAgICAgICAgIC5iaWIgZmlsZSBmb3IgY2hlY2tpbmcgdGhlIGJpYmxpb2dyYXBoeQojIyMgICAgICAgICAgICAgICAgICAgICAgICBkYXRhYmFzZSBhZ2FpbnN0IHRoZSBhY3R1YWwgam91cm5hbCBjb3ZlcnMuCiMjIyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBvdXRwdXQgY2FuIGJlIGVpdGhlciBwbGFpbiB0ZXh0LCBvciBIVE1MLgojIyMKIyMjICAgICAgICAgICAgICAgICAgICAgICAgVXNhZ2U6CiMjIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaWJjbGVhbiAtbWF4LXdpZHRoIDAgQmliVGVYLWZpbGUocykgfCBcCiMjIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmlic29ydCAtYnl2b2x1bWUgfCBcCiMjIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdrIC1mIGpvdXJuYWwtdG9jLmF3ayBcCiMjIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFstdiBIVE1MPW5ubl0gWy12IElOREVOVD1ubm5dIFwKIyMjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWy12IEJJQkZJTEVVUkw9dXJsXSA+Zm9vLnRvYwojIyMKIyMjICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIGlmIHRoZSBiaWJsaW9ncmFwaHkgaXMgYWxyZWFkeSBzb3J0ZWQKIyMjICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5IHZvbHVtZSwKIyMjCiMjIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaWJjbGVhbiAtbWF4LXdpZHRoIDAgQmliVGVYLWZpbGUocykgfCBcCiMjIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdrIC1mIGpvdXJuYWwtdG9jLmF3ayBcCiMjIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFstdiBIVE1MPW5ubl0gWy12IElOREVOVD1ubm5dIFwKIyMjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWy12IEJJQkZJTEVVUkw9dXJsXSA+Zm9vLnRvYwojIyMKIyMjICAgICAgICAgICAgICAgICAgICAgICAgQSBub24temVybyB2YWx1ZSBvZiB0aGUgY29tbWFuZC1saW5lIG9wdGlvbiwKIyMjICAgICAgICAgICAgICAgICAgICAgICAgSFRNTD1ubm4sIHJlc3VsdHMgaW4gSFRNTCBvdXRwdXQgaW5zdGVhZCBvZgojIyMgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZGVmYXVsdCBwbGFpbiBBU0NJSSB0ZXh0IChjb3JyZXNwb25kaW5nCiMjIyAgICAgICAgICAgICAgICAgICAgICAgIHRvIEhUTUw9MCkuICBUaGUKIyMjCiMjIyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBJTkRFTlQ9bm5uIGNvbW1hbmQtbGluZSBvcHRpb24gc3BlY2lmaWVzCiMjIyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBudW1iZXIgb2YgYmxhbmtzIHRvIGluZGVudCBlYWNoIGxvZ2ljYWwKIyMjICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwgb2YgSFRNTC4gIFRoZSBkZWZhdWx0IGlzIElOREVOVD00LgojIyMgICAgICAgICAgICAgICAgICAgICAgICBJTkRFTlQ9MCBzdXBwcmVzc2VzIGluZGVudGF0aW9uLiAgVGhlIElOREVOVAojIyMgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24gaGFzIG5vIGVmZmVjdCB3aGVuIHRoZSBkZWZhdWx0IEhUTUw9MAojIyMgICAgICAgICAgICAgICAgICAgICAgICAocGxhaW4gdGV4dCBvdXRwdXQpIG9wdGlvbiBpcyBpbiBlZmZlY3QuCiMjIwojIyMgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIEhUTUwgb3V0cHV0IGlzIHNlbGVjdGVkLCB0aGUKIyMjICAgICAgICAgICAgICAgICAgICAgICAgQklCRklMRVVSTD11cmwgY29tbWFuZC1saW5lIG9wdGlvbiBwcm92aWRlcyBhCiMjIyAgICAgICAgICAgICAgICAgICAgICAgIHdheSB0byByZXF1ZXN0IGh5cGVydGV4dCBsaW5rcyBmcm9tIHRhYmxlIG9mCiMjIyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzIHBhZ2UgbnVtYmVycyB0byB0aGUgY29tcGxldGUgQmliVGVYCiMjIyAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5IGZvciB0aGUgYXJ0aWNsZS4gIFRoZXNlIGxpbmtzIGFyZQojIyMgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkIGJ5IGFwcGVuZGluZyBhIHNoYXJwICgjKSBhbmQgdGhlCiMjIyAgICAgICAgICAgICAgICAgICAgICAgIGNpdGF0aW9uIGxhYmVsIHRvIHRoZSBCSUJGSUxFVVJMIHZhbHVlLCB3aGljaAojIyMgICAgICAgICAgICAgICAgICAgICAgICBjb25mb3JtcyB3aXRoIHRoZSBwcmFjdGljZSBvZgojIyMgICAgICAgICAgICAgICAgICAgICAgICBiaWJ0ZXgtdG8taHRtbC5hd2suCiMjIwojIyMgICAgICAgICAgICAgICAgICAgICAgICBUaGUgSFRNTCBvdXRwdXQgZm9ybSBtYXkgYmUgdXNlZnVsIGFzIGEgbW9yZQojIyMgICAgICAgICAgICAgICAgICAgICAgICBjb21wYWN0IHJlcHJlc2VudGF0aW9uIG9mIGpvdXJuYWwgYXJ0aWNsZQojIyMgICAgICAgICAgICAgICAgICAgICAgICBiaWJsaW9ncmFwaHkgZGF0YSB0aGFuIHRoZSBvcmlnaW5hbCBCaWJUZVgKIyMjICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSBwcm92aWRlcy4gIE9mIGNvdXJzZSwgdGhlCiMjIyAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlLW9mLWNvbnRlbnRzIGZvcm1hdCBwcm92aWRlcyBsZXNzCiMjIyAgICAgICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uLCBhbmQgaXMgY29uc2lkZXJhYmx5IG1vcmUKIyMjICAgICAgICAgICAgICAgICAgICAgICAgdHJvdWJsZXNvbWUgZm9yIGEgY29tcHV0ZXIgcHJvZ3JhbSB0byBwYXJzZS4KIyMjCiMjIyAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4gVVJMIGtleSB2YWx1ZXMgYXJlIHByb3ZpZGVkLCB0aGV5IHdpbGwKIyMjICAgICAgICAgICAgICAgICAgICAgICAgYmUgdXNlZCB0byBjcmVhdGUgaHlwZXJ0ZXh0IGxpbmtzIGFyb3VuZAojIyMgICAgICAgICAgICAgICAgICAgICAgICBhcnRpY2xlIHRpdGxlcy4gIFRoaXMgc3VwcG9ydHMgam91cm5hbHMgdGhhdAojIyMgICAgICAgICAgICAgICAgICAgICAgICBwcm92aWRlIGFydGljbGUgY29udGVudHMgb24gdGhlIFdvcmxkLVdpZGUKIyMjICAgICAgICAgICAgICAgICAgICAgICAgV2ViLgojIyMKIyMjICAgICAgICAgICAgICAgICAgICAgICAgRm9yIHBhcnNpbmcgc2ltcGxpY2l0eSwgdGhpcyBwcm9ncmFtIHJlcXVpcmVzCiMjIyAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgQmliVGVYCiMjIwojIyMgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5ID0gInZhbHVlIgojIyMKIyMjICAgICAgICAgICAgICAgICAgICAgICAgYW5kCiMjIwojIyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgQFN0cmluZ3tuYW1lID0gInZhbHVlIn0KIyMjCiMjIyAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmljYXRpb25zIGJlIGVudGlyZWx5IGNvbnRhaW5lZCBvbgojIyMgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGUgbGluZXMsIHdoaWNoIGlzIHJlYWRpbHkgcHJvdmlkZWQgYnkKIyMjICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGBiaWJjbGVhbiAtbWF4LXdpZHRoIDAnIGZpbHRlci4gIEl0IGFsc28KIyMjICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZXMgdGhhdCBiaWJsaW9ncmFwaHkgZW50cmllcyBiZWdpbiBhbmQKIyMjICAgICAgICAgICAgICAgICAgICAgICAgZW5kIGF0IHRoZSBzdGFydCBvZiBhIGxpbmUsIGFuZCB0aGF0CiMjIyAgICAgICAgICAgICAgICAgICAgICAgIHF1b3RhdGlvbiBtYXJrcywgcmF0aGVyIHRoYW4gYmFsYW5jZWQgYnJhY2VzLAojIyMgICAgICAgICAgICAgICAgICAgICAgICBkZWxpbWl0IHN0cmluZyB2YWx1ZXMuICBUaGlzIGlzIGEKIyMjICAgICAgICAgICAgICAgICAgICAgICAgY29udmVudGlvbmFsIGZvcm1hdCB0aGF0IGFnYWluIGNhbiBiZQojIyMgICAgICAgICAgICAgICAgICAgICAgICBndWFyYW50ZWVkIGJ5IGJpYmNsZWFuLgojIyMKIyMjICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwcm9ncmFtIHJlcXVpcmVzIGBuZXcnIGF3aywgYXMgZGVzY3JpYmVkCiMjIyAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBib29rCiMjIwojIyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxmcmVkIFYuIEFobywgQnJpYW4gVy4gS2VybmlnaGFuLCBhbmQKIyMjICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBldGVyIEouIFdlaW5iZXJnZXIsCiMjIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYFRoZSBBV0sgUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UnJywKIyMjICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZGlzb24tV2VzbGV5ICgxOTg4KSwgSVNCTgojIyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC0yMDEtMDc5ODEtWCwKIyMjCiMjIyAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2ggYXMgcHJvdmlkZWQgYnkgcHJvZ3JhbXMgbmFtZWQgKEdOVSkKIyMjICAgICAgICAgICAgICAgICAgICAgICAgZ2F3aywgbmF3aywgYW5kIHJlY2VudCBBVCZUIGF3ay4KIyMjCiMjIyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBjaGVja3N1bSBmaWVsZCBhYm92ZSBjb250YWlucyBhIENSQy0xNgojIyMgICAgICAgICAgICAgICAgICAgICAgICBjaGVja3N1bSBhcyB0aGUgZmlyc3QgdmFsdWUsIGZvbGxvd2VkIGJ5IHRoZQojIyMgICAgICAgICAgICAgICAgICAgICAgICBlcXVpdmFsZW50IG9mIHRoZSBzdGFuZGFyZCBVTklYIHdjICh3b3JkCiMjIyAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50KSB1dGlsaXR5IG91dHB1dCBvZiBsaW5lcywgd29yZHMsIGFuZAojIyMgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzLiAgVGhpcyBpcyBwcm9kdWNlZCBieSBSb2JlcnQKIyMjICAgICAgICAgICAgICAgICAgICAgICAgU29sb3ZheSdzIGNoZWNrc3VtIHV0aWxpdHkuIiwKIyMjICB9CiMjIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKQkVHSU4JCQkJCQl7IGluaXRpYWxpemUoKSB9CgovXiAqQCAqW1NzXVtUdF1bUnJdW0lpXVtObl1bR2ddICp7LwkJeyBkb19TdHJpbmcoKTsgbmV4dCB9CgovXiAqQCAqW1BwXVtScl1bRWVdW0FhXVtNbV1bQmJdW0xsXVtFZV0vCXsgbmV4dCB9CgovXiAqQCAqW0FhXVtScl1bVHRdW0lpXVtDY11bTGxdW0VlXS8JCXsgZG9fQXJ0aWNsZSgpOyBuZXh0IH0KCi9eICpALwkJCQkJCXsgZG9fT3RoZXIoKTsgbmV4dCB9CgovXiAqYXV0aG9yICo9ICpcIi8gCQkJCXsgZG9fYXV0aG9yKCk7IG5leHQgfQoKL14gKmpvdXJuYWwgKj0gKi8JCQkJeyBkb19qb3VybmFsKCk7IG5leHQgfQoKL14gKnZvbHVtZSAqPSAqXCIvCQkJCXsgZG9fdm9sdW1lKCk7IG5leHQgfQoKL14gKm51bWJlciAqPSAqXCIvCQkJCXsgZG9fbnVtYmVyKCk7IG5leHQgfQoKL14gKnllYXIgKj0gKlwiLwkJCQl7IGRvX3llYXIoKTsgbmV4dCB9CgovXiAqbW9udGggKj0gKi8JCQkJCXsgZG9fbW9udGgoKTsgbmV4dCB9CgovXiAqdGl0bGUgKj0gKlwiLwkJCQl7IGRvX3RpdGxlKCk7IG5leHQgfQoKL14gKnBhZ2VzICo9ICpcIi8JCQkJeyBkb19wYWdlcygpOyBuZXh0IH0KCi9eICpVUkwgKj0gKlwiLwkJCQkJeyBkb19VUkwoKTsgbmV4dCB9CgovXiAqfSAqJC8JCQkJCXsgaWYgKEluX0FydGljbGUpIGRvX2VuZF9lbnRyeSgpOyBuZXh0IH0KCkVORAkJCQkJCXsgdGVybWluYXRlKCkgfQoKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE5COiBUaGUgcHJvZ3JhbW1pbmcgY29udmVudGlvbnMgZm9yIHZhcmlhYmxlcyBpbiB0aGlzIHByb2dyYW0gYXJlOiAgICMKIwlVUFBFUkNBU0UJCWdsb2JhbCBjb25zdGFudHMgYW5kIHVzZXIgb3B0aW9ucyAgICAgICMKIwlJbml0aWFsdXBwZXJjYXNlCWdsb2JhbCB2YXJpYWJsZXMgICAgICAgICAgICAgICAgICAgICAgICMKIwlsb3dlcmNhc2UJCWxvY2FsIHZhcmlhYmxlcyAgICAgICAgICAgICAgICAgICAgICAgICMKIyBBbnkgZGV2aWF0aW9uIGlzIGFuIGVycm9yISAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKCmZ1bmN0aW9uIGRvX0FydGljbGUoKQp7CglJbl9BcnRpY2xlID0gMQoKCUNpdGF0aW9uX2xhYmVsID0gJDAKCXN1YigvXlteXHtdKnsvLCIiLENpdGF0aW9uX2xhYmVsKQoJc3ViKC8gKiwgKiQvLCIiLENpdGF0aW9uX2xhYmVsKQoKCUF1dGhvciA9ICIiCiAgICAgICAgVGl0bGUgPSAiIgogICAgICAgIEpvdXJuYWwgPSAiIgogICAgICAgIFZvbHVtZSA9ICIiCiAgICAgICAgTnVtYmVyID0gIiIKICAgICAgICBNb250aCA9ICIiCiAgICAgICAgWWVhciA9ICIiCiAgICAgICAgUGFnZXMgPSAiIgogICAgICAgIFVybCA9ICIiCn0KCgpmdW5jdGlvbiBkb19hdXRob3IoKQp7CglBdXRob3IgPSBUZVhfdG9fSFRNTChnZXRfdmFsdWUoJDApKQp9CgoKZnVuY3Rpb24gZG9fZW5kX2VudHJ5KCBrLG4scGFydHMpCnsKCW4gPSBzcGxpdChBdXRob3IscGFydHMsIiBhbmQgIikKCWlmIChMYXN0X251bWJlciAhPSBOdW1iZXIpCgkJZG9fbmV3X2lzc3VlKCkKCWZvciAoayA9IDE7IGsgPCBuOyArK2spCgkJcHJpbnRfdG9jX2xpbmUocGFydHNba10gIiBhbmQiLCAiIiwgIiIpCglUaXRsZV9wcmVmaXggPSBodG1sX2JlZ2luX3RpdGxlKCkKCVRpdGxlX3N1ZmZpeCA9IGh0bWxfZW5kX3RpdGxlKCkKCWlmIChodG1sX2xlbmd0aChUaXRsZSkgPD0gKE1BWF9USVRMRV9DSEFSUyArIE1JTl9MRUFERVJTKSkgIyBjb21wbGV0ZSB0aXRsZSBmaXRzIG9uIGxpbmUKCQlwcmludF90b2NfbGluZShwYXJ0c1tuXSwgVGl0bGUsIGh0bWxfYmVnaW5fcGFnZXMoKSBQYWdlcyBodG1sX2VuZF9wYWdlcygpKQoJZWxzZQkJCSMgbmVlZCB0byBzcGxpdCBsb25nIHRpdGxlIG92ZXIgbXVsdGlwbGUgbGluZXMKCQlkb19sb25nX3RpdGxlKHBhcnRzW25dLCBUaXRsZSwgaHRtbF9iZWdpbl9wYWdlcygpIFBhZ2VzIGh0bWxfZW5kX3BhZ2VzKCkpCn0KCgpmdW5jdGlvbiBkb19qb3VybmFsKCkKewoJaWYgKCQwIH4gL1s9XSAqIi8pCSMgaGF2ZSBqb3VybmFsID0gInF1b3RlZCBqb3VybmFsIG5hbWUiLAoJCUpvdXJuYWwgPSBnZXRfdmFsdWUoJDApCgllbHNlCQkJIyBoYXZlIGpvdXJuYWwgPSBqb3VybmFsLWFiYnJldmlhdGlvbiwKCXsKICAgICAgICAJSm91cm5hbCA9IGdldF9hYmJyZXYoJDApCgkJaWYgKEpvdXJuYWwgaW4gU3RyaW5nKSAjIHJlcGxhY2UgYWJicmV2IGJ5IGl0cyBleHBhbnNpb24KCQkJSm91cm5hbCA9IFN0cmluZ1tKb3VybmFsXQoJfQoJZ3N1YigvXFwtLywiIixKb3VybmFsKQkjIHJlbW92ZSBkaXNjcmV0aW9uYXJ5IGh5cGhlbnMKfQoKCmZ1bmN0aW9uIGRvX2xvbmdfdGl0bGUoYXV0aG9yLHRpdGxlLHBhZ2VzLCBsYXN0X3RpdGxlLG4pCnsKCXRpdGxlID0gdHJpbSh0aXRsZSkJCQkjIGRpc2NhcmQgbGVhZGluZyBhbmQgdHJhaWxpbmcgc3BhY2UKCXdoaWxlIChsZW5ndGgodGl0bGUpID4gMCkKCXsKCQluID0gaHRtbF9icmVha3BvaW50KHRpdGxlLE1BWF9USVRMRV9DSEFSUytNSU5fTEVBREVSUykKCQlsYXN0X3RpdGxlID0gc3Vic3RyKHRpdGxlLDEsbikKCQl0aXRsZSA9IHN1YnN0cih0aXRsZSxuKzEpCgkJc3ViKC9eICsvLCIiLHRpdGxlKQkJIyBkaXNjYXJkIGFueSBsZWFkaW5nIHNwYWNlCgkJcHJpbnRfdG9jX2xpbmUoYXV0aG9yLCBsYXN0X3RpdGxlLCAobGVuZ3RoKHRpdGxlKSA9PSAwKSA/IHBhZ2VzIDogIiIpCgkJYXV0aG9yID0gIiIKCX0KfQoKCmZ1bmN0aW9uIGRvX21vbnRoKCBrLG4scGFydHMpCnsKCU1vbnRoID0gKCQwIH4gL1s9XSAqIi8pID8gZ2V0X3ZhbHVlKCQwKSA6IGdldF9hYmJyZXYoJDApCglnc3ViKC9bXCJdLywiIixNb250aCkKCWdzdWIoLyAqIyAqXFxzbGFzaCAqIyAqLywiIC8gIixNb250aCkKCWdzdWIoLyAqIyAqLSsgKiMgKi8sIiAvICIsTW9udGgpCgluID0gc3BsaXQoTW9udGgscGFydHMsIiAqLyAqIikKCU1vbnRoID0gIiIKCWZvciAoayA9IDE7IGsgPD0gbjsgKytrKQoJCU1vbnRoID0gTW9udGggKChrID4gMSkgPyAiIC8gIiA6ICIiKSBcCgkJCSgocGFydHNba10gaW4gTW9udGhfZXhwYW5zaW9uKSA/IE1vbnRoX2V4cGFuc2lvbltwYXJ0c1trXV0gOiBwYXJ0c1trXSkKfQoKCmZ1bmN0aW9uIGRvX25ld19pc3N1ZSgpCnsKCUxhc3RfbnVtYmVyID0gTnVtYmVyCglpZiAoSFRNTCkKCXsKCQlpZiAoTGFzdF92b2x1bWUgIT0gVm9sdW1lKQoJCXsKCQkJTGFzdF92b2x1bWUgPSBWb2x1bWUKCQkJcHJpbnRfbGluZShwcmVmaXgoMikgIjxCUj4iKQoJCX0KCQlodG1sX2VuZF90b2MoKQoJCWh0bWxfYmVnaW5faXNzdWUoKQoJCXByaW50X2xpbmUocHJlZml4KDIpIEpvdXJuYWwgIjxCUj4iKQoJfQoJZWxzZQoJewoJCXByaW50X2xpbmUoIiIpCgkJcHJpbnRfbGluZShKb3VybmFsKQoJfQoKCXByaW50X2xpbmUoc3RyaXBfaHRtbCh2b2xfbm9fbW9udGhfeWVhcigpKSkKCglpZiAoSFRNTCkKCXsKCQlodG1sX2VuZF9pc3N1ZSgpCgkJaHRtbF90b2NfZW50cnkoKQoJCWh0bWxfYmVnaW5fdG9jKCkKCX0KCWVsc2UKCQlwcmludF9saW5lKCIiKQp9CgoKZnVuY3Rpb24gZG9fbnVtYmVyKCkKewoJTnVtYmVyID0gZ2V0X3ZhbHVlKCQwKQp9CgoKZnVuY3Rpb24gZG9fT3RoZXIoKQp7CglJbl9BcnRpY2xlID0gMAp9CgoKZnVuY3Rpb24gZG9fcGFnZXMoKQp7CglQYWdlcyA9IGdldF92YWx1ZSgkMCkKCXN1YigvLS1bP11bP10vLCIiLFBhZ2VzKQp9CgoKZnVuY3Rpb24gZG9fU3RyaW5nKCkKewoJc3ViKC9eW15ce10qXHsvLCIiLCQwKQkjIGRpc2NhcmQgdXAgdG8gYW5kIGluY2x1ZGluZyBvcGVuIGJyYWNlCglzdWIoL1x9ICokLywiIiwkMCkJIyBkaXNjYXJkIGZyb20gb3B0aW9uYWwgd2hpdGVzcGFjZSBhbmQgdHJhaWxpbmcgYnJhY2UgdG8gZW5kIG9mIGxpbmUKCVN0cmluZ1tnZXRfa2V5KCQwKV0gPSBnZXRfdmFsdWUoJDApCn0KCgpmdW5jdGlvbiBkb190aXRsZSgpCnsKCVRpdGxlID0gVGVYX3RvX0hUTUwoZ2V0X3ZhbHVlKCQwKSkKfQoKCmZ1bmN0aW9uIGRvX1VSTCggcGFydHMpCnsKCVVybCA9IGdldF92YWx1ZSgkMCkKCXNwbGl0KFVybCxwYXJ0cywiWyw7XSIpCQkJIyBpbiBjYXNlIHdlIGhhdmUgbXVsdGlwbGUgVVJMcwoJVXJsID0gdHJpbShwYXJ0c1sxXSkKfQoKCmZ1bmN0aW9uIGRvX3ZvbHVtZSgpCnsKCVZvbHVtZSA9IGdldF92YWx1ZSgkMCkKfQoKCmZ1bmN0aW9uIGRvX3llYXIoKQp7CglZZWFyID0gZ2V0X3ZhbHVlKCQwKQp9CgoKZnVuY3Rpb24gZ2V0X2FiYnJldihzKQp7CSMgcmV0dXJuIGFiYnJldiBmcm9tIGBga2V5ID0gYWJicmV2LCcnCglzdWIoL15bXj1dKj0gKi8sIiIscykJIyBkaXNjYXJkIHRleHQgdXAgdG8gc3RhcnQgb2Ygbm9uLWJsYW5rIHZhbHVlCglzdWIoLyAqLD8gKiQvLCIiLHMpCSMgZGlzY2FyZCB0cmFpbGluZyBvcHRpb25hbCB3aGl0c3BhY2UsIHF1b3RlLAoJCQkJIyBvcHRpb25hbCBjb21tYSwgYW5kIG9wdGlvbmFsIHNwYWNlCglyZXR1cm4gKHMpCn0KCgpmdW5jdGlvbiBnZXRfa2V5KHMpCnsJIyByZXR1cm4ga2F5IGZyb20gYGBrZXkgPSAidmFsdWUiLCcnCglzdWIoL14gKi8sIiIscykJCSMgZGlzY2FyZCBsZWFkaW5nIHNwYWNlCglzdWIoLyAqPS4qJC8sIiIscykJIyBkaXNjYXJkIGV2ZXJ0aGluZyBhZnRlciBrZXkKCglyZXR1cm4gKHMpCn0KCgpmdW5jdGlvbiBnZXRfdmFsdWUocykKewkjIHJldHVybiB2YWx1ZSBmcm9tIGBga2V5ID0gInZhbHVlIiwnJwoJc3ViKC9eW15cIl0qXCIgKi8sIiIscykJIyBkaXNjYXJkIHRleHQgdXAgdG8gc3RhcnQgb2Ygbm9uLWJsYW5rIHZhbHVlCglzdWIoLyAqXCIsPyAqJC8sIiIscykJIyBkaXNjYXJkIHRyYWlsaW5nIG9wdGlvbmFsIHdoaXRzcGFjZSwgcXVvdGUsCgkJCQkjIG9wdGlvbmFsIGNvbW1hLCBhbmQgb3B0aW9uYWwgc3BhY2UKCXJldHVybiAocykKfQoKCmZ1bmN0aW9uIGh0bWxfYWNjZW50cyhzKQp7CglpZiAoaW5kZXgocywiXFwiKSA+IDApCQkJIyBpbXBvcnRhbnQgb3B0aW1pemF0aW9uCgl7CgkJIyBDb252ZXJ0IGNvbW1vbiBsb3dlci1jYXNlIGFjY2VudGVkIGxldHRlcnMgYWNjb3JkaW5nIHRvIHRoZQoJCSMgdGFibGUgb24gcC4gMTY5IG9mIGluIFBldGVyIEZseW5uJ3MgYGBUaGUgV29ybGQgV2lkZSBXZWIKCQkjIEhhbmRib29rJycsIEludGVybmF0aW9uYWwgVGhvbXNvbiBDb21wdXRlciBQcmVzcywgMTk5NSwgSVNCTgoJCSMgMS04NTAzMi0yMDUtOC4gIFRoZSBvZmZpY2lhbCB0YWJsZSBvZiBJU08gTGF0aW4gMSBTR01MCgkJIyBlbnRpdGllcyB1c2VkIGluIEhUTUwgY2FuIGJlIGZvdW5kIGluIHRoZSBmaWxlCgkJIyAvdXNyL2xvY2FsL2xpYi9odG1sLWNoZWNrL2xpYi9JU09sYXQxLnNnbWwgKHlvdXIgcGF0aAoJCSMgbWF5IGRpZmZlcikuCgoJCWdzdWIoL3tcXFxhfS8sCSJcXCZhZ3JhdmU7IiwJcykKCQlnc3ViKC97XFwnYX0vLAkiXFwmYWFjdXRlOyIsCXMpCgkJZ3N1Yigve1xcW1xeXWF9LywiXFwmYWNpcmM7IiwJcykKCQlnc3ViKC97XFx+YX0vLAkiXFwmYXRpbGRlOyIsCXMpCgkJZ3N1Yigve1xcXCJhfS8sCSJcXCZhdW1sOyIsCXMpCgkJZ3N1Yigve1xcYWF9LywJIlxcJmFyaW5nOyIsCXMpCgkJZ3N1Yigve1xcYWV9LywJIlxcJmFlbGlnOyIsCXMpCgoJCWdzdWIoL3tcXGN7Y319LywiXFwmY2NlZGlsOyIsCXMpCgoJCWdzdWIoL3tcXFxlfS8sCSJcXCZlZ3JhdmU7IiwJcykKCQlnc3ViKC97XFwnZX0vLAkiXFwmZWFjdXRlOyIsCXMpCgkJZ3N1Yigve1xcW1xeXWV9LywiXFwmZWNpcmM7IiwJcykKCQlnc3ViKC97XFxcImV9LywJIlxcJmV1bWw7IiwJcykKCgkJZ3N1Yigve1xcXGl9LywJIlxcJmlncmF2ZTsiLAlzKQoJCWdzdWIoL3tcXCdpfS8sCSJcXCZpYWN1dGU7IiwJcykKCQlnc3ViKC97XFxbXF5daX0vLCJcXCZpY2lyYzsiLAlzKQoJCWdzdWIoL3tcXFwiaX0vLAkiXFwmaXVtbDsiLAlzKQoKCQkjIGlnbm9yZSBldGggYW5kIHRob3JuCgoJCWdzdWIoL3tcXH5ufS8sCSJcXCZudGlsZGU7IiwJcykKCgkJZ3N1Yigve1xcXG99LywJIlxcJm9ncmF2ZTsiLAlzKQoJCWdzdWIoL3tcXCdvfS8sCSJcXCZvYWN1dGU7IiwJcykKCQlnc3ViKC97XFxbXF5db30vLCAiXFwmb2NpcmM7IiwJcykKCQlnc3ViKC97XFx+b30vLAkiXFwmb3RpbGRlOyIsCXMpCgkJZ3N1Yigve1xcXCJvfS8sCSJcXCZvdW1sOyIsCXMpCgkJZ3N1Yigve1xcb30vLAkiXFwmb3NsYXNoOyIsCXMpCgoJCWdzdWIoL3tcXFx1fS8sCSJcXCZ1Z3JhdmU7IiwJcykKCQlnc3ViKC97XFwndX0vLAkiXFwmdWFjdXRlOyIsCXMpCgkJZ3N1Yigve1xcW1xeXXV9LywiXFwmdWNpcmM7IiwJcykKCQlnc3ViKC97XFxcInV9LywJIlxcJnV1bWw7IiwJcykKCgkJZ3N1Yigve1xcJ3l9LywJIlxcJnlhY3V0ZTsiLAlzKQoJCWdzdWIoL3tcXFwieX0vLAkiXFwmeXVtbDsiLAlzKQoKCQkjIE5vdyBkbyB0aGUgc2FtZSBmb3IgdXBwZXItY2FzZSBhY2NlbnRzCgoJCWdzdWIoL3tcXFxBfS8sCSJcXCZBZ3JhdmU7IiwJcykKCQlnc3ViKC97XFwnQX0vLAkiXFwmQWFjdXRlOyIsCXMpCgkJZ3N1Yigve1xcW1xeXUF9LywJIlxcJkFjaXJjOyIsCXMpCgkJZ3N1Yigve1xcfkF9LywJIlxcJkF0aWxkZTsiLAlzKQoJCWdzdWIoL3tcXFwiQX0vLAkiXFwmQXVtbDsiLAlzKQoJCWdzdWIoL3tcXEFBfS8sCSJcXCZBcmluZzsiLAlzKQoJCWdzdWIoL3tcXEFFfS8sCSJcXCZBRWxpZzsiLAlzKQoKCQlnc3ViKC97XFxje0N9fS8sIlxcJkNjZWRpbDsiLAlzKQoKCQlnc3ViKC97XFxcZX0vLAkiXFwmRWdyYXZlOyIsCXMpCgkJZ3N1Yigve1xcJ0V9LywJIlxcJkVhY3V0ZTsiLAlzKQoJCWdzdWIoL3tcXFtcXl1FfS8sCSJcXCZFY2lyYzsiLAlzKQoJCWdzdWIoL3tcXFwiRX0vLAkiXFwmRXVtbDsiLAlzKQoKCQlnc3ViKC97XFxcSX0vLAkiXFwmSWdyYXZlOyIsCXMpCgkJZ3N1Yigve1xcJ0l9LywJIlxcJklhY3V0ZTsiLAlzKQoJCWdzdWIoL3tcXFtcXl1JfS8sCSJcXCZJY2lyYzsiLAlzKQoJCWdzdWIoL3tcXFwiSX0vLAkiXFwmSXVtbDsiLAlzKQoKCQkjIGlnbm9yZSBldGggYW5kIHRob3JuCgoJCWdzdWIoL3tcXH5OfS8sCSJcXCZOdGlsZGU7IiwJcykKCgkJZ3N1Yigve1xcXE99LywJIlxcJk9ncmF2ZTsiLAlzKQoJCWdzdWIoL3tcXCdPfS8sCSJcXCZPYWN1dGU7IiwJcykKCQlnc3ViKC97XFxbXF5dT30vLAkiXFwmT2NpcmM7IiwJcykKCQlnc3ViKC97XFx+T30vLAkiXFwmT3RpbGRlOyIsCXMpCgkJZ3N1Yigve1xcXCJPfS8sCSJcXCZPdW1sOyIsCXMpCgkJZ3N1Yigve1xcT30vLAkiXFwmT3NsYXNoOyIsCXMpCgoJCWdzdWIoL3tcXFxVfS8sCSJcXCZVZ3JhdmU7IiwJcykKCQlnc3ViKC97XFwnVX0vLAkiXFwmVWFjdXRlOyIsCXMpCgkJZ3N1Yigve1xcW1xeXVV9LywJIlxcJlVjaXJjOyIsCXMpCgkJZ3N1Yigve1xcXCJVfS8sCSJcXCZVdW1sOyIsCXMpCgoJCWdzdWIoL3tcXCdZfS8sCSJcXCZZYWN1dGU7IiwJcykKCgkJZ3N1Yigve1xcc3N9LywJIlxcJnN6bGlnOyIsCXMpCgoJCSMgT3RoZXJzIG5vdCBtZW50aW9uZWQgaW4gRmx5bm4ncyBib29rCgkJZ3N1Yigve1xcJ1xcaX0vLCJcXCZpYWN1dGU7IiwJcykKCQlnc3ViKC97XFwnXFxqfS8sImoiLAkJcykKCX0KCXJldHVybiAocykKfQoKCmZ1bmN0aW9uIGh0bWxfYmVnaW5faXNzdWUoKQp7CglwcmludF9saW5lKCIiKQoJcHJpbnRfbGluZShwcmVmaXgoMikgIjxIUj4iKQoJcHJpbnRfbGluZSgiIikKCXByaW50X2xpbmUocHJlZml4KDIpICI8SDE+IikKCXByaW50X2xpbmUocHJlZml4KDMpICI8QSBOQU1FPVwiIiBodG1sX2xhYmVsKCkgIlwiPiIpCn0KCgpmdW5jdGlvbiBodG1sX2JlZ2luX3BhZ2VzKCkKewoJcmV0dXJuICgoSFRNTCAmJiAoQklCRklMRVVSTCAhPSAiIikpID8gKCI8QSBIUkVGPVwiIiBCSUJGSUxFVVJMICIjIiBDaXRhdGlvbl9sYWJlbCAiXCI+IikgOiAiIikKfQoKCmZ1bmN0aW9uIGh0bWxfYmVnaW5fcHJlKCkKewoJSW5fUFJFID0gMQoJcHJpbnRfbGluZSgiPFBSRT4iKQp9CgoKZnVuY3Rpb24gaHRtbF9iZWdpbl90aXRsZSgpCnsKCXJldHVybiAoKEhUTUwgJiYgKFVybCAhPSAiIikpID8gKCI8QSBIUkVGPVwiIiBVcmwgIlwiPiIpIDogIiIpCn0KCgpmdW5jdGlvbiBodG1sX2JlZ2luX3RvYygpCnsKCWh0bWxfZW5kX3RvYygpCglodG1sX2JlZ2luX3ByZSgpCn0KCgpmdW5jdGlvbiBodG1sX2JvZHkoIGspCnsKCWZvciAoayA9IDE7IGsgPD0gQm9keUxpbmVzOyArK2spCgkJcHJpbnQgQm9keVtrXQp9CgpmdW5jdGlvbiBodG1sX2JyZWFrcG9pbnQodGl0bGUsbWF4bGVuZ3RoLCBicmVha19hZnRlcixrKQp7CgkjIFJldHVybiB0aGUgbGFyZ2VzdCBjaGFyYWN0ZXIgcG9zaXRpb24gaW4gdGl0bGUgQUZURVIgd2hpY2ggd2UKCSMgY2FuIGJyZWFrIHRoZSB0aXRsZSBhY3Jvc3MgbGluZXMsIHdpdGhvdXQgZXhjZWVkaW5nIG1heGxlbmd0aAoJIyB2aXNpYmxlIGNoYXJhY3RlcnMuCglpZiAoaHRtbF9sZW5ndGgodGl0bGUpID4gbWF4bGVuZ3RoKQkjIHRoZW4gbmVlZCB0byBzcGxpdCB0aXRsZSBhY3Jvc3MgbGluZXMKCXsKCQkjIEluIHRoZSBwcmVzZW5jZSBvZiBIVE1MIG1hcmt1cCwgdGhlIGluaXRpYWxpemF0aW9uIG9mCgkJIyBrIGhlcmUgaXMgY29tcGxpY2F0ZWQsIGJlY2F1c2Ugd2UgbmVlZCB0byBhZHZhbmNlIGl0CgkJIyB1bnRpbCBodG1sX2xlbmd0aCh0aXRsZSkgaXMgYXQgbGVhc3QgbWF4bGVuZ3RoLAoJCSMgd2l0aG91dCBpbnZva2luZyB0aGUgZXhwZW5zaXZlIGh0bWxfbGVuZ3RoKCkgZnVuY3Rpb24KCQkjIHRvbyBmcmVxdWVudGx5LiAgVGhlIG5lZWQgdG8gc3BsaXQgdGhlIHRpdGxlIG1ha2VzIHRoZQoJCSMgYWx0ZXJuYXRpdmUgb2YgZGVsYXllZCBpbnNlcnRpb24gb2YgSFRNTCBtYXJrdXAgbXVjaAoJCSMgbW9yZSBjb21wbGljYXRlZC4KCQlicmVha19hZnRlciA9IDAKCQlmb3IgKGsgPSBtaW4obWF4bGVuZ3RoLGxlbmd0aCh0aXRsZSkpOyBrIDwgbGVuZ3RoKHRpdGxlKTsgKytrKQoJCXsKCQkJaWYgKHN1YnN0cih0aXRsZSxrKzEsMSkgPT0gIiAiKQoJCQl7CQkjIGNvdWxkIGJyZWFrIGFmdGVyIHBvc2l0aW9uIGsKCQkJCWlmIChodG1sX2xlbmd0aChzdWJzdHIodGl0bGUsMSxrKSkgPD0gbWF4bGVuZ3RoKQoJCQkJCWJyZWFrX2FmdGVyID0gawoJCQkJZWxzZQkjIGFkdmFuY2VkIHRvbyBmYXIsIHJldHJlYXQgYmFjayB0byBsYXN0IGJyZWFrX2FmdGVyCgkJCQkJYnJlYWsKCQkJfQoJCX0KCQlpZiAoYnJlYWtfYWZ0ZXIgPT0gMCkJCSMgbm8gYnJlYWtwb2ludCBmb3VuZCBieSBmb3J3YXJkIHNjYW4KCQl7CQkJCSMgc28gc3dpdGNoIHRvIGJhY2t3YXJkIHNjYW4KCQkJZm9yIChrID0gbWluKG1heGxlbmd0aCxsZW5ndGgodGl0bGUpKSAtIDE7IFwKCQkJCShrID4gMCkgJiYgKHN1YnN0cih0aXRsZSxrKzEsMSkgIT0gIiAiKTsgLS1rKQoJCQkJOwkJIyBmaW5kIHNwYWNlIGF0IHdoaWNoIHRvIGJyZWFrIHRpdGxlCgkJCWlmIChrIDwgMSkJCSMgbm8gYnJlYWsgcG9pbnQgZm91bmQKCQkJCWsgPSBsZW5ndGgodGl0bGUpICMgc28gbXVzdCBwcmludCBlbnRpcmUgc3RyaW5nCgkJfQoJCWVsc2UKCQkJayA9IGJyZWFrX2FmdGVyCgl9CgllbHNlCQkJCQkjIHRpdGxlIGZpdHMgb24gb25lIGxpbmUKCQlrID0gbGVuZ3RoKHRpdGxlKQoJcmV0dXJuIChrKQp9CgoKCmZ1bmN0aW9uIGh0bWxfZW5kX2lzc3VlKCkKewoJcHJpbnRfbGluZShwcmVmaXgoMykgIjwvQT4iKQoJcHJpbnRfbGluZShwcmVmaXgoMikgIjwvSDE+IikKfQoKCmZ1bmN0aW9uIGh0bWxfZW5kX3BhZ2VzKCkKewoJcmV0dXJuICgoSFRNTCAmJiAoQklCRklMRVVSTCAhPSAiIikpID8gIjwvQT4iIDogIiIpCn0KCgpmdW5jdGlvbiBodG1sX2VuZF9wcmUoKQp7CglpZiAoSW5fUFJFKQoJewoJCXByaW50X2xpbmUoIjwvUFJFPiIpCgkJSW5fUFJFID0gMAoJfQp9CgoKZnVuY3Rpb24gaHRtbF9lbmRfdGl0bGUoKQp7CglyZXR1cm4gKChIVE1MICYmIChVcmwgIT0gIiIpKSA/ICI8L0E+IiA6ICIiKQp9CgoKZnVuY3Rpb24gaHRtbF9lbmRfdG9jKCkKewoJaHRtbF9lbmRfcHJlKCkKfQoKCmZ1bmN0aW9uIGh0bWxfZm9udHMocywgYXJnLGNvbnRyb2xfd29yZCxrLGxldmVsLG4sb3Blbl9icmFjZSkKewoJb3Blbl9icmFjZSA9IGluZGV4KHMsInsiKQoJaWYgKG9wZW5fYnJhY2UgPiAwKQkJCSMgaW1wb3J0YW50IG9wdGltaXphdGlvbgoJewoJCWxldmVsID0gMQoJCWZvciAoayA9IG9wZW5fYnJhY2UgKyAxOyAobGV2ZWwgIT0gMCkgJiYgKGsgPD0gbGVuZ3RoKHMpKTsgKytrKQoJCXsKCQkJaWYgKHN1YnN0cihzLGssMSkgPT0gInsiKQoJCQkJbGV2ZWwrKwoJCQllbHNlIGlmIChzdWJzdHIocyxrLDEpID09ICJ9IikKCQkJCWxldmVsLS0KCQl9CgoJCSMgey4uLn0gaXMgbm93IGZvdW5kIGF0IG9wZW5fYnJhY2UgLi4uIChrLTEpCgkJZm9yIChjb250cm9sX3dvcmQgaW4gRm9udF9kZWNsX21hcCkJIyBsb29rIGZvciB7XHh4eCAuLi59CgkJewoJCQlpZiAoc3Vic3RyKHMsb3Blbl9icmFjZSsxLGxlbmd0aChjb250cm9sX3dvcmQpKzEpIH4gXAoJCQkJKCJcXCIgY29udHJvbF93b3JkICJbXkEtWmEtel0iKSkKCQkJewoJCQkJbiA9IG9wZW5fYnJhY2UgKyAxICsgbGVuZ3RoKGNvbnRyb2xfd29yZCkKCQkJCWFyZyA9IHRyaW0oc3Vic3RyKHMsbixrIC0gbikpCgkJCQlpZiAoRm9udF9kZWNsX21hcFtjb250cm9sX3dvcmRdID09ICJ0b3VwcGVyIikgIyBhcmcgLT4gQVJHCgkJCQkJYXJnID0gdG91cHBlcihhcmcpCgkJCQllbHNlIGlmIChGb250X2RlY2xfbWFwW2NvbnRyb2xfd29yZF0gIT0gIiIpICMgYXJnIC0+IDxUQUc+YXJnPC9UQUc+CgkJCQkJYXJnID0gIjwiIEZvbnRfZGVjbF9tYXBbY29udHJvbF93b3JkXSAiPiIgYXJnICI8LyIgRm9udF9kZWNsX21hcFtjb250cm9sX3dvcmRdICI+IgoJCQkJcmV0dXJuIChzdWJzdHIocywxLG9wZW5fYnJhY2UtMSkgYXJnIGh0bWxfZm9udHMoc3Vic3RyKHMsaykpKQoJCQl9CgkJfQoJCWZvciAoY29udHJvbF93b3JkIGluIEZvbnRfY21kX21hcCkJIyBsb29rIGZvciBceHh4ey4uLn0KCQl7CgkJCWlmIChzdWJzdHIocyxvcGVuX2JyYWNlIC0gbGVuZ3RoKGNvbnRyb2xfd29yZCksbGVuZ3RoKGNvbnRyb2xfd29yZCkpIH4gXAoJCQkJKCJcXCIgY29udHJvbF93b3JkKSkKCQkJewoJCQkJbiA9IG9wZW5fYnJhY2UgKyAxCgkJCQlhcmcgPSB0cmltKHN1YnN0cihzLG4sayAtIG4pKQoJCQkJaWYgKEZvbnRfY21kX21hcFtjb250cm9sX3dvcmRdID09ICJ0b3VwcGVyIikgIyBhcmcgLT4gQVJHCgkJCQkJYXJnID0gdG91cHBlcihhcmcpCgkJCQllbHNlIGlmIChGb250X2NtZF9tYXBbY29udHJvbF93b3JkXSAhPSAiIikgIyBhcmcgLT4gPFRBRz5hcmc8L1RBRz4KCQkJCQlhcmcgPSAiPCIgRm9udF9jbWRfbWFwW2NvbnRyb2xfd29yZF0gIj4iIGFyZyAiPC8iIEZvbnRfY21kX21hcFtjb250cm9sX3dvcmRdICI+IgoJCQkJbiA9IG9wZW5fYnJhY2UgLSBsZW5ndGgoY29udHJvbF93b3JkKSAtIDEKCQkJCXJldHVybiAoc3Vic3RyKHMsMSxuKSBhcmcgaHRtbF9mb250cyhzdWJzdHIocyxrKSkpCgkJCX0KCQl9Cgl9CglyZXR1cm4gKHMpCn0KCgpmdW5jdGlvbiBodG1sX2hlYWRlcigpCnsKCVVTRVIgPSBFTlZJUk9OWyJVU0VSIl0KCWlmIChVU0VSID09ICIiKQoJICAgIFVTRVIgPSBFTlZJUk9OWyJMT0dOQU1FIl0KCWlmIChVU0VSID09ICIiKQoJICAgIFVTRVIgPSAiPz8/PyIKCSJob3N0bmFtZSIgfCBnZXRsaW5lIEhPU1ROQU1FCgkiZGF0ZSIgfCBnZXRsaW5lIERBVEUKCSgieXBjYXQgcGFzc3dkIHwgZ3JlcCAnXiIgVVNFUiAiOicgfCBhd2sgLUY6ICd7cHJpbnQgJDV9JyIpIHwgZ2V0bGluZSBQRVJTT05BTF9OQU1FCglpZiAoUEVSU09OQUxfTkFNRSA9PSAiIikKCSAgICAoImdyZXAgICdeIiBVU0VSICI6JyAvZXRjL3Bhc3N3ZCB8IGF3ayAtRjogJ3twcmludCAkNX0nIikgfCBnZXRsaW5lIFBFUlNPTkFMX05BTUUKCgoJcHJpbnQgIjwhLS0gV0FSTklORzogRG8gTk9UIGVkaXQgdGhpcyBmaWxlLiAgSXQgd2FzIGNvbnZlcnRlZCBmcm9tIC0tPiIKCXByaW50ICI8IS0tIEJpYlRlWCBmb3JtYXQgdG8gSFRNTCBieSBqb3VybmFsLXRvYy5hd2sgdmVyc2lvbiAiIFZFUlNJT05fTlVNQkVSICIgIiBWRVJTSU9OX0RBVEUgIiAtLT4iCglwcmludCAiPCEtLSBvbiAiIERBVEUgIiAtLT4iCglwcmludCAiPCEtLSBmb3IgIiBQRVJTT05BTF9OQU1FICIgKCIgVVNFUiAiQCIgSE9TVE5BTUUgIikgLS0+IgoJcHJpbnQgIiIKCXByaW50ICIiCglwcmludCAiPCFET0NUWVBFIEhUTUwgcHVibGljIFwiLS8vSUVURi8vRFREIEhUTUwvL0VOXCI+IgoJcHJpbnQgIiIKCXByaW50ICI8SFRNTD4iCglwcmludCBwcmVmaXgoMSkgIjxIRUFEPiIKCXByaW50IHByZWZpeCgyKSAiPFRJVExFPiIKCXByaW50IHByZWZpeCgzKSAgSm91cm5hbAoJcHJpbnQgcHJlZml4KDIpICI8L1RJVExFPiIKCXByaW50IHByZWZpeCgyKSAiPExJTksgUkVWPVwibWFkZVwiIEhSRUY9XCJtYWlsdG86IiBVU0VSICJAIiBIT1NUTkFNRSAiXCI+IgoJcHJpbnQgcHJlZml4KDEpICI8L0hFQUQ+IgoJcHJpbnQgIiIKCXByaW50IHByZWZpeCgxKSAiPEJPRFk+Igp9CgoKZnVuY3Rpb24gaHRtbF9sYWJlbCggbGFiZWwpCnsKCWxhYmVsID0gVm9sdW1lICIoIiBOdW1iZXIgIik6IiBNb250aCAiOiIgWWVhcgoJZ3N1YigvW15BLVphLXowLTkoKTosOy5cL1wtXS8sIiIsbGFiZWwpCglyZXR1cm4gKGxhYmVsKQp9CgoKZnVuY3Rpb24gaHRtbF9sZW5ndGgocykKewkjIFJldHVybiB2aXNpYmxlIGxlbmd0aCBvZiBzLCBpZ25vcmluZyBhbnkgSFRNTCBtYXJrdXAKCWlmIChIVE1MKQoJewoJCWdzdWIoLzxcLz9bXj5dKj4vLCIiLHMpCQkjIHJlbW92ZSBTR01MIHRhZ3MKCQlnc3ViKC8mW0EtWmEtejAtOV0rOy8sIiIscykJIyByZW1vdmUgU0dNTCBlbnRpdGllcwoJfQoJcmV0dXJuIChsZW5ndGgocykpCn0KCgpmdW5jdGlvbiBodG1sX3RvYygpCnsKCXByaW50IHByZWZpeCgyKSAiPEgxPiIKCXByaW50IHByZWZpeCgzKSAiVGFibGUgb2YgY29udGVudHMgZm9yIGlzc3VlcyBvZiAiIEpvdXJuYWwKCXByaW50IHByZWZpeCgyKSAiPC9IMT4iCglwcmludCBIVE1MX1RPQwp9CgoKZnVuY3Rpb24gaHRtbF90b2NfZW50cnkoKQp7CglIVE1MX1RPQyA9IEhUTUxfVE9DICIgICAgICAgIDxBIEhSRUY9XCIjIiBodG1sX2xhYmVsKCkgIlwiPiIKCUhUTUxfVE9DID0gSFRNTF9UT0Mgdm9sX25vX21vbnRoX3llYXIoKQoJSFRNTF9UT0MgPSBIVE1MX1RPQyAiPC9BPjxCUj4iICJcbiIKfQoKCmZ1bmN0aW9uIGh0bWxfdHJhaWxlcigpCnsKCWh0bWxfZW5kX3ByZSgpCglwcmludCBwcmVmaXgoMSkgIjwvQk9EWT4iCglwcmludCAiPC9IVE1MPiIKfQoKCmZ1bmN0aW9uIGluaXRpYWxpemUoKQp7CgkjIE5COiBVcGRhdGUgdGhlc2Ugd2hlbiB0aGUgcHJvZ3JhbSBjaGFuZ2VzCglWRVJTSU9OX0RBVEUgPSAiWzA5LU9jdC0xOTk2XSIKCVZFUlNJT05fTlVNQkVSID0gIjEuMDAiCgoJSFRNTCA9IChIVE1MID09ICIiKSA/IDAgOiAoMCArIEhUTUwpCgoJaWYgKElOREVOVCA9PSAiIikKCQlJTkRFTlQgPSA0CgoJaWYgKEhUTUwgPT0gMCkKCQlJTkRFTlQgPSAwCSMgaW5kZW50YXRpb24gc3VwcHJlc3NlZCBpbiBBU0NJSSBtb2RlCgoJTEVBREVSUyA9ICIgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIgoKCU1BWF9USVRMRV9DSEFSUyA9IDM2CSMgMzYgcHJvZHVjZXMgYSA3OS1jaGFyIG91dHB1dCBsaW5lIHdoZW4gdGhlcmUgaXMKCQkJCSMganVzdCBhbiBpbml0aWFsIHBhZ2UgbnVtYmVyLiAgSWYgdGhpcyBpcwoJCQkJIyBpbmNyZWFzZWQsIHRoZSBMRUFERVJTIHN0cmluZyBtYXkgbmVlZCB0byBiZQoJCQkJIyBsZW5ndGhlbmVkLgoKCU1JTl9MRUFERVJTID0gNAkJIyBNaW5pbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIGZyb20gTEVBREVSUwoJCQkJIyByZXF1aXJlZCB3aGVuIGxlYWRlcnMgYXJlIHVzZWQuICBUaGUgdG90YWwKCQkJCSMgbnVtYmVyIG9mIGNoYXJhY3RlcnMgdGhhdCBjYW4gYXBwZWFyIGluIGEKCQkJCSMgdGl0bGUgbGluZSBpcyBNQVhfVElUTEVfQ0hBUlMgKyBNSU5fTEVBREVSUy4KCQkJCSMgTGVhZGVycyBhcmUgb21pdHRlZCB3aGVuIHRoZSB0aXRsZSBsZW5ndGggaXMKCQkJCSMgYmV0d2VlbiBNQVhfVElUTEVfQ0hBUlMgYW5kIHRoaXMgc3VtLgoKCU1JTl9MRUFERVJTX1NQQUNFID0gIiAgICAgICAgIgkjIG11c3QgYmUgYXQgbGVhc3QgTUlOX0xFQURFUlMgY2hhcmFjdGVycyBsb25nCgoJTW9udGhfZXhwYW5zaW9uWyJqYW4iXQk9ICJKYW51YXJ5IgoJTW9udGhfZXhwYW5zaW9uWyJmZWIiXQk9ICJGZWJydWFyeSIKCU1vbnRoX2V4cGFuc2lvblsibWFyIl0JPSAiTWFyY2giCglNb250aF9leHBhbnNpb25bImFwciJdCT0gIkFwcmlsIgoJTW9udGhfZXhwYW5zaW9uWyJtYXkiXQk9ICJNYXkiCglNb250aF9leHBhbnNpb25bImp1biJdCT0gIkp1bmUiCglNb250aF9leHBhbnNpb25bImp1bCJdCT0gIkp1bHkiCglNb250aF9leHBhbnNpb25bImF1ZyJdCT0gIkF1Z3VzdCIKCU1vbnRoX2V4cGFuc2lvblsic2VwIl0JPSAiU2VwdGVtYmVyIgoJTW9udGhfZXhwYW5zaW9uWyJvY3QiXQk9ICJPY3RvYmVyIgoJTW9udGhfZXhwYW5zaW9uWyJub3YiXQk9ICJOb3ZlbWJlciIKCU1vbnRoX2V4cGFuc2lvblsiZGVjIl0JPSAiRGVjZW1iZXIiCgoJRm9udF9jbWRfbWFwWyJcXGVtcGgiXQkJPSAiRU0iCglGb250X2NtZF9tYXBbIlxcdGV4dGJmIl0JPSAiQiIKCUZvbnRfY21kX21hcFsiXFx0ZXh0aXQiXQk9ICJJIgoJRm9udF9jbWRfbWFwWyJcXHRleHRtZCJdCT0gIiIKCUZvbnRfY21kX21hcFsiXFx0ZXh0cm0iXQk9ICIiCglGb250X2NtZF9tYXBbIlxcdGV4dHNjIl0JPSAidG91cHBlciIKCUZvbnRfY21kX21hcFsiXFx0ZXh0c2wiXQk9ICJJIgoJRm9udF9jbWRfbWFwWyJcXHRleHR0dCJdCT0gInQiCglGb250X2NtZF9tYXBbIlxcdGV4dHVwIl0JPSAiIgoKCUZvbnRfZGVjbF9tYXBbIlxcYmYiXQkJPSAiQiIKCUZvbnRfZGVjbF9tYXBbIlxcZW0iXQkJPSAiRU0iCglGb250X2RlY2xfbWFwWyJcXGl0Il0JCT0gIkkiCglGb250X2RlY2xfbWFwWyJcXHJtIl0JCT0gIiIKCUZvbnRfZGVjbF9tYXBbIlxcc2MiXQkJPSAidG91cHBlciIKCUZvbnRfZGVjbF9tYXBbIlxcc2YiXQkJPSAiIgoJRm9udF9kZWNsX21hcFsiXFx0dCJdCQk9ICJUVCIKCUZvbnRfZGVjbF9tYXBbIlxcaXRzaGFwZSJdCT0gIkkiCglGb250X2RlY2xfbWFwWyJcXHVwc2hhcGUiXQk9ICIiCglGb250X2RlY2xfbWFwWyJcXHNsc2hhcGUiXQk9ICJJIgoJRm9udF9kZWNsX21hcFsiXFxzY3NoYXBlIl0JPSAidG91cHBlciIKCUZvbnRfZGVjbF9tYXBbIlxcbWRzZXJpZXMiXQk9ICIiCglGb250X2RlY2xfbWFwWyJcXGJmc2VyaWVzIl0JPSAiQiIKCUZvbnRfZGVjbF9tYXBbIlxccm1mYW1pbHkiXQk9ICIiCglGb250X2RlY2xfbWFwWyJcXHNmZmFtaWx5Il0JPSAiIgoJRm9udF9kZWNsX21hcFsiXFx0dGZhbWlseSJdCT0gIlRUIgp9CgpmdW5jdGlvbiBtaW4oYSxiKQp7CglyZXR1cm4gKGEgPCBiKSA/IGEgOiBiCn0KCgpmdW5jdGlvbiBwcmVmaXgobGV2ZWwpCnsKCSMgUmV0dXJuIGEgcHJlZml4IG9mIHVwIHRvIDYwIGJsYW5rcwoKCWlmIChJbl9QUkUpCgkJcmV0dXJuICgiIikKCWVsc2UKCQlyZXR1cm4gKHN1YnN0cigiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiwgXAoJCQkxLCBJTkRFTlQgKiBsZXZlbCkpCn0KCgpmdW5jdGlvbiBwcmludF9saW5lKGxpbmUpCnsKCWlmIChIVE1MKQkJIyBtdXN0IGJ1ZmZlciBpbiBtZW1vcnkgc28gdGhhdCB3ZSBjYW4gYWNjdW11bGF0ZSBUT0MKCQlCb2R5WysrQm9keUxpbmVzXSA9IGxpbmUKCWVsc2UKCQlwcmludCBsaW5lCn0KCgpmdW5jdGlvbiBwcmludF90b2NfbGluZShhdXRob3IsdGl0bGUscGFnZXMsIGV4dHJhLGxlYWRlcnMsbix0KQp7CgkjIFdoZW4gd2UgaGF2ZSBhIG11bHRpbGluZSB0aXRsZSwgdGhlIGh5cGVydGV4dCBsaW5rIGdvZXMgb25seQoJIyBvbiB0aGUgZmlyc3QgbGluZS4gIEEgbXVsdGlsaW5lIGh5cGVydGV4dCBsaW5rIGxvb2tzIGF3ZnVsCgkjIGJlY2F1c2Ugb2YgbG9uZyB1bmRlcmxpbmVzIHVuZGVyIHRoZSBsZWFkaW5nIGluZGVudGF0aW9uLgoKCWlmIChwYWdlcyA9PSAiIikJIyB0aGVuIG5vIGxlYWRlcnMgbmVlZGVkIGluIHRpdGxlIGxpbmVzIG90aGVyIHRoYW4gbGFzdCBvbmUKCQl0ID0gc3ByaW50ZigiJTMxcyAgICVzJXMlcyIsIGF1dGhvciwgVGl0bGVfcHJlZml4LCB0aXRsZSwgVGl0bGVfc3VmZml4KQoJZWxzZQkJCQkJIyBsYXN0IHRpdGxlIGxpbmUsIHdpdGggcGFnZSBudW1iZXIKCXsKCQluID0gaHRtbF9sZW5ndGgodGl0bGUpCQkjIHBvdGVudGlhbGx5IGV4cGVuc2l2ZQoJCWV4dHJhID0gbiAlIDIJCQkjIGV4dHJhIHNwYWNlIGZvciBhbGlnbmVkIGxlYWRlciBkb3RzCgkJaWYgKG4gPD0gTUFYX1RJVExFX0NIQVJTKSAJIyB0aGVuIG5lZWQgbGVhZGVycwoJCQlsZWFkZXJzID0gc3Vic3RyKExFQURFUlMsIDEsIE1BWF9USVRMRV9DSEFSUyArIE1JTl9MRUFERVJTIC0gZXh0cmEgLSBcCgkJCQkgICBtaW4oTUFYX1RJVExFX0NIQVJTLG4pKQoJCWVsc2UJCQkJIyB0aXRsZSAoYWxtb3N0KSBmaWxscyBsaW5lLCBzbyBubyBsZWFkZXJzCgkJCWxlYWRlcnMgPSBzdWJzdHIoTUlOX0xFQURFUlNfU1BBQ0UsMSwgXAoJCQkJCSAoTUFYX1RJVExFX0NIQVJTICsgTUlOX0xFQURFUlMgLSBleHRyYSAtIG4pKQoJCXQgPSBzcHJpbnRmKCIlMzFzICAgJXMlcyVzJXMlcyAlNHMiLCBcCgkJCSAgICBhdXRob3IsIFRpdGxlX3ByZWZpeCwgdGl0bGUsIFRpdGxlX3N1ZmZpeCwgXAoJCQkgICAgKGV4dHJhID8gIiAiIDogIiIpLCBsZWFkZXJzLCBwYWdlcykKCX0KCglUaXRsZV9wcmVmaXggPSAiIgkjIGZvcmdldCBhbnkgaHlwZXJ0ZXh0CglUaXRsZV9zdWZmaXggPSAiIgkjIGxpbmsgbWF0ZXJpYWwKCgkjIEVmZmljZW5jeSBub3RlOiBhbiBlYXJsaWVyIHZlcnNpb24gYWNjdW11bGF0ZWQgdGhlIGJvZHkgaW4gYQoJIyBzaW5nbGUgc2NhbGFyIGxpa2UgdGhpczogIkJvZHkgPSBCb2R5IHQiLiAgUHJvZmlsaW5nIHJldmVhbGVkCgkjIHRoaXMgc3RhdGVtZW50IGFzIHRoZSBtYWpvciBob3Qgc3BvdCwgYW5kIHRoZSBjaGFuZ2UgdG8gYXJyYXkKCSMgc3RvcmFnZSBtYWRlIHRoZSBwcm9ncmFtIG1vcmUgdGhhbiB0d2ljZSBhcyBmYXN0LiAgVGhpcwoJIyBzdWdnZXN0cyB0aGF0IGF3ayBtaWdodCBiZW5lZml0IGZyb20gYW4gb3B0aW1pemF0aW9uIG9mCgkjICJzID0gcyB0IiB0aGF0IHVzZXMgcmVhbGxvYygpIGluc3RlYWQgb2YgbWFsbG9jKCkuCglpZiAoSFRNTCkKCQlCb2R5WysrQm9keUxpbmVzXSA9IHQKCWVsc2UKCQlwcmludCB0Cn0KCgpmdW5jdGlvbiBwcm90ZWN0X1NHTUxfY2hhcmFjdGVycyhzKQp7CiAgICBnc3ViKC8mLywiXFwmYW1wOyIscykJIyBOQjogdGhpcyBvbmUgTVVTVCBiZSBmaXJzdAogICAgZ3N1YigvPC8sIlxcJmx0OyIscykKICAgIGdzdWIoLz4vLCJcXCZndDsiLHMpCiAgICBnc3ViKC9cIi8sIlxcJnF1b3Q7IixzKQogICAgcmV0dXJuIChzKQp9CgoKZnVuY3Rpb24gc3RyaXBfYnJhY2VzKHMsIGspCnsJIyBzdHJpcCBub24tYmFja3NsYXNoZWQgYnJhY2VzIGZyb20gcyBhbmQgcmV0dXJuIHRoZSByZXN1bHQKCglyZXR1cm4gKHN0cmlwX2NoYXIoc3RyaXBfY2hhcihzLCJ7IiksIn0iKSkKfQoKCmZ1bmN0aW9uIHN0cmlwX2NoYXIocyxjLCBrKQp7CSMgc3RyaXAgbm9uLWJhY2tzbGFzaGVkIGluc3RhbmNlcyBvZiBjIGZyb20gcywgYW5kIHJldHVybiB0aGUgcmVzdWx0CglrID0gaW5kZXgocyxjKQoJaWYgKGsgPiAwKQkJIyB0aGVuIGZvdW5kIHRoZSBjaGFyYWN0ZXIKCXsKCQlpZiAoc3Vic3RyKHMsay0xLDEpICE9ICJcXCIpICMgdGhlbiBub3QgYmFja3NsYXNoZWQgY2hhcgoJCQlzID0gc3Vic3RyKHMsMSxrLTEpIHN0cmlwX2NoYXIoc3Vic3RyKHMsaysxKSxjKSAjIHNvIHJlbW92ZSBpdCAocmVjdXJzaXZlbHkpCgkJZWxzZQkJIyBwcmVzZXJ2ZSBiYWNrc2xhc2hlZCBjaGFyCgkJCXMgPSBzdWJzdHIocywxLGspIHN0cmlwX2NoYXIocyxrKzEsYykKCX0KCXJldHVybiAocykKfQoKCmZ1bmN0aW9uIHN0cmlwX2h0bWwocykKewoJZ3N1YigvPFwvP1tePl0qPi8sIiIscykKCXJldHVybiAocykKfQoKCmZ1bmN0aW9uIHRlcm1pbmF0ZSgpCnsKCWlmIChIVE1MKQoJewoJCWh0bWxfZW5kX3ByZSgpCgoJCUhUTUwgPSAwCSMgTkI6IHN0b3AgbGluZSBidWZmZXJpbmcKCQlodG1sX2hlYWRlcigpCgkJaHRtbF90b2MoKQoJCWh0bWxfYm9keSgpCgkJaHRtbF90cmFpbGVyKCkKCX0KfQoKCmZ1bmN0aW9uIFRlWF90b19IVE1MKHMsIGssbixwYXJ0cykKewoJIyBGaXJzdCBjb252ZXJ0IHRoZSBmb3VyIFNHTUwgcmVzZXJ2ZWQgY2hhcmFjdGVycyB0byBTR01MIGVudGl0aWVzCglpZiAoSFRNTCkKCXsKCSAgICBnc3ViKC8+LywJIlxcJmd0OyIsCXMpCgkgICAgZ3N1YigvPC8sCSJcXCZsdDsiLAlzKQoJICAgIGdzdWIoLyIvLAkiXFwmcXVvdDsiLAlzKQoJfQoKCWdzdWIoL1skXVskXS8sIiQkIixzKQkjIGNoYW5nZSBkaXNwbGF5IG1hdGggdG8gdHJpcGxlIGRvbGxhcnMgZm9yIHNwbGl0CgluID0gc3BsaXQocyxwYXJ0cywvWyRdLykjIHNwbGl0IGludG8gbm9uLW1hdGggKG9kZCkgYW5kIG1hdGggKGV2ZW4pIHBhcnRzCgoJcyA9ICIiCglmb3IgKGsgPSAxOyBrIDw9IG47ICsraykgIyB1bmJyYWNlIG5vbi1tYXRoIHBhcnQsIGxlYXZpbmcgbWF0aCBtb2RlIGludGFjdAoJCXMgPSBzICgoayA+IDEpID8gIiQiIDogIiIpIFwKCQkJKChrICUgMikgPyBzdHJpcF9icmFjZXMoVGVYX3RvX0hUTUxfbm9ubWF0aChwYXJ0c1trXSkpIDogXAoJCQlUZVhfdG9fSFRNTF9tYXRoKHBhcnRzW2tdKSkKCglnc3ViKC9bJF1bJF1bJF0vLCIkJCIscykgIyByZXN0b3JlIGRpc3BsYXkgbWF0aAoKCXJldHVybiAocykKfQoKCmZ1bmN0aW9uIFRlWF90b19IVE1MX21hdGgocykKewoJIyBNb3N0bHkgYSBkdW1teSBmb3Igbm93LCBidXQgSFRNTCAzIGNvdWxkIHN1cHBvcnQgc29tZSBtYXRoIHRyYW5zbGF0aW9uCgoJZ3N1YigvXFwmLywiXFwmYW1wOyIscykJIyByZWR1Y2UgVGVYIGFtcGVyc2FuZHMgdG8gU0dNTCBlbnRpdGllcwoKCXJldHVybiAocykKfQoKCmZ1bmN0aW9uIFRlWF90b19IVE1MX25vbm1hdGgocykKewoJaWYgKGluZGV4KHMsIlxcIikgPiAwKQkJCSMgaW1wb3J0YW50IG9wdGltaXphdGlvbgoJewoJCWdzdWIoL1xcc2xhc2ggKy8sIi8iLHMpCQkjIHJlcGxhY2UgVGVYIHNsYXNoZXMgd2l0aCBjb252ZW50aW9uYWwgb25lcwoJCWdzdWIoLyAqXFxlbWRhc2ggKy8sIiAtLS0gIixzKQkjIHJlcGxhY2UgQmliTmV0IGVtZGFzaGVzIHdpdGggY29udmVudGlvbmFsIG9uZXMKCQlnc3ViKC9cXCUvLCIlIixzKQkJIyByZWR1Y2UgVGVYIHBlcmNlbnRzIHRvIGNvbnZlbnRpb25hbCBvbmVzCgkJZ3N1YigvXFxbJF0vLCIkIixzKQkJIyByZWR1Y2UgVGVYIGRvbGxhcnMgdG8gY29udmVudGlvbmFsIG9uZXMKCQlnc3ViKC9cXCMvLCIjIixzKQkJIyByZWR1Y2UgVGVYIHNoYXJwcyB0byBjb252ZW50aW9uYWwgb25lcwoKCQlpZiAoSFRNTCkJCQkjIHRyYW5zbGF0ZSBUZVggbWFya3VwIHRvIEhUTUwKCQl7CgkJCWdzdWIoL1xcJi8sIlxcJmFtcDsiLHMpCSMgcmVkdWNlIFRlWCBhbXBlcnNhbmRzIHRvIFNHTUwgZW50aXRpZXMKCQkJcyA9IGh0bWxfYWNjZW50cyhzKQoJCQlzID0gaHRtbF9mb250cyhzKQoJCX0KCQllbHNlCQkJCSMgcGxhaW4gQVNDSUkgdGV4dCBvdXRwdXQ6IGRpc2NhcmQgYWxsIFRlWCBtYXJrdXAKCQl7CgkJCWdzdWIoL1xcXCYvLCAiXFwmIiwgcykJIyByZWR1Y2UgVGVYIGFtcGVyc2FuZHMgdG8gY29udmVudGlvbmFsIG9uZXMKCgkJCWdzdWIoL1xcW2Etel1bYS16XSArLywiIixzKSAjIHJlbW92ZSBUZVggZm9udCBjaGFuZ2VzCgkJCWdzdWIoL1xcW15BLVphLXpdLywiIixzKSAjIHJlbW92ZSByZW1haW5pbmcgVGVYIGNvbnRyb2wgc3ltYm9scwoJCX0KCX0KCXJldHVybiAocykKfQoKCmZ1bmN0aW9uIHRyaW0ocykKewogICAgZ3N1YigvXlsgXHRdKy8sIiIscykKICAgIGdzdWIoL1sgXHRdKyQvLCIiLHMpCiAgICByZXR1cm4gKHMpCn0KCgpmdW5jdGlvbiB2b2xfbm9fbW9udGhfeWVhcigpCnsKCXJldHVybiAoIlZvbHVtZSAiIHdyYXAoVm9sdW1lKSAgIiwgIE51bWJlciAiIHdyYXAoTnVtYmVyKSAiLCAiIHdyYXAoTW9udGgpICIsICIgd3JhcChZZWFyKSkKfQoKCmZ1bmN0aW9uIHdyYXAodmFsdWUpCnsKCXJldHVybiAoSFRNTCA/ICgiPFNUUk9ORz4iIHZhbHVlICI8L1NUUk9ORz4iKSA6IHZhbHVlKQp9CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdGVzdGRpci90LmNybGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NjQAMDAwMTc1MAAwMDAxNzUwADAwMDAwMDAwMDc2ADEzMzM3MTc0NzAzADAxMzIwNAAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjIGNoZWNrcyB3aGV0aGVyIGxpbmVzIHdpdGggY3JsZiBhcmUgcGFyc2VkIG9rCgp7cHJpbnQgIFwNCiB9CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRlc3RkaXIvdC5vZnMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjY0ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDAwMDA3NAAxMzMzNzE3NDcwMwAwMTMwNDMAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQkVHSU4JeyBPRlMgPSAiICUlICI7IE9SUyA9ICIjIyIgfQoJeyBwcmludCAkMSwgJDI7IHByaW50IH0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0ZXN0ZGlyL3Quc3RyY21wMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY2NAAwMDAxNzUwADAwMDE3NTAAMDAwMDAwMDAwNjQAMTMzMzcxNzQ3MDMAMDEzNjQ0ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQxICE9IDEgJiYgJDEgIT0gMiAmJiAkMSAhPSAzICYmICQxICE9IDQgJiYgJDEgIT0gNQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdGVzdGRpci90cnkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA3NzUAMDAwMTc1MAAwMDAxNzUwADAwMDAwMDAwMjAxADEzMzM3MTc0NzAzADAxMjYyMwAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0ZD10ZC4xCgpmb3IgaSBpbiAkKgpkbwoJZWNobyAkaToKCWluZCA8JGkKCXRpbWUgLi4vYS5vdXQgLWYgJGkgJHRkID5mb28xCgl0aW1lIC91c3IvYmluL2F3ayAtZiAkaSAkdGQgPmZvbzIKCWNtcCBmb28xIGZvbzIKZG9uZQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRlc3RkaXIvdC5tb2QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjY0ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDAwMDAxNAAxMzMzNzE3NDcwMwAwMTMwMjUAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATlIgJSAyID09IDEKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRlc3RkaXIvdHQuMTIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjY0ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDAwMDA0NQAxMzMzNzE3NDcwMwAwMTI2NjAAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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JXN8JXNcbiIsIHRvbG93ZXIoJDApLCB0b3VwcGVyKCQwKSwgJDApfScgPmZvbzEKZWNobyAnaGVsbG8sIHdvcmxkIXxIRUxMTywgV09STEQhfGhlbGxvLCBXT1JMRCEnID5mb28yCmRpZmYgZm9vMSBmb28yIHx8IGVjaG8gJ0JBRDogVC5idWlsdGluICh0b3VwcGVyL3RvbG93ZXIpJwoKJGF3ayAnQkVHSU4gewoJaiA9IDE7IHNwcmludGYoIiVkIiwgOTksICsraikJIyBkb2VzIGogZ2V0IGluY3JlbWVudGVkPwoJaWYgKGogIT0gMikKCQlwcmludCAiQkFEOiBULmJ1aWx0aW4gKHByaW50ZiBhcmcgbGlzdCBub3QgZXZhbHVhdGVkKSIKfScKCiRhd2sgJ0JFR0lOIHsKCWogPSAxOyBzdWJzdHIoIiIsIDEsICsraikJIyBkb2VzIGogZ2V0IGluY3JlbWVudGVkPwoJaWYgKGogIT0gMikKCQlwcmludCAiQkFEOiBULmJ1aWx0aW4gKHN1YnN0ciBhcmcgbGlzdCBub3QgZXZhbHVhdGVkKSIKfScKCiRhd2sgJ0JFR0lOIHsKCWogPSAxOyBzdWIoLzEvLCArK2osIHopCSMgZG9lcyBqIGdldCBpbmNyZW1lbnRlZD8KCWlmIChqICE9IDIpCgkJcHJpbnQgIkJBRDogVC5idWlsdGluIChzdWIoKSBhcmcgbGlzdCBub3QgZXZhbHVhdGVkKSIKfScKCiRhd2sgJ0JFR0lOIHsKCWogPSAxOyBsZW5ndGgoInp6enoiLCArK2osICsraikJIyBkb2VzIGogZ2V0IGluY3JlbWVudGVkPwoJaWYgKGogIT0gMykKCQlwcmludCAiQkFEOiBULmJ1aWx0aW4gKGV4Y2VzcyBsZW5ndGggYXJncyBub3QgZXZhbHVhdGVkKSIKfScgMj5mb28KZ3JlcCAndG9vIG1hbnkgYXJnJyBmb28gPi9kZXYvbnVsbCB8fCBlY2hvICcHVC5iYWQ6IHRvbyBtYW55IGFyZ3Mgbm90IGNhdWdodCcKCmVjaG8gJ2EKYSBiCmEgYiBjJyA+Zm9vMAplY2hvICcxCjIKMycgPmZvbzEKJGF3ayAneyBuID0gc3BsaXQoJDAsIHgpOyBwcmludCBsZW5n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ZXN0IGlzIiwgdGVzdAoJCSMgcHJpbnQgICJvdXRwdXQgaXMiLCBvdXRwdXQKCQkjIHByaW50ICAicnVuIGlzIiwgcnVuCgkJc3lzdGVtKHRlc3Qgb3V0cHV0IHJ1bikKCX0KCXR0ICs9IG50Mgp9CkVORCB7IHByaW50IHR0LCAidGVzdHMiIH0KJyA8PFwhISEhCiMgR2VuZXJhbCBmb3JtYXQ6CiMgdHJ5IHByb2dyYW0gYXMgcmVzdCBvZiBsaW5lCiMgJDEJJDIJJDMJb3V0cHV0MSAgKFx0IGZvciB0YWIsIFxuIGZvciBuZXdsaW5lLAojICQxCSQyCSQzCW91dHB1dDIgICgiIiBmb3IgbnVsbCkKIyAuLi4gdGVybWluYXRlZCBieSBibGFuayBsaW5lCgojIHRyeSBhbm90aGVyIHByb2dyYW0uLi4KCnRyeSB7IHByaW50ICgkMSA9PSAxKSA/ICJ5ZXMiIDogIm5vIiB9CjEJeWVzCjEuMAl5ZXMKMUUwCXllcwowLjFFMQl5ZXMKMTBFLTEJeWVzCjAxCXllcwoxMAlubwoxMEUtMglubwoKdHJ5ICQxID4gMAoxCTEKMgkyCjAJIiIKLTEJIiIKMWUwCTFlMAowZTEJIiIKLTJlNjQJIiIKMy4xZTQJMy4xZTQKCnRyeSB7IHByaW50IE5GIH0KCTAKeAkxCngJeQkyCgl5CTIKeAkJMgoKdHJ5IHsgcHJpbnQgTkYsICRORiB9CgkwIAp4CTEgeAp4CXkJMiB5CngJeXkJenp6CTMgenp6CgojIHRoaXMgaG9ycm9yIHByaW50cyAkKCQyKzEpCnRyeSB7IGk9MTsgcHJpbnQgKCQrKyQrK2kpIH0KMQkxCjEJMgkzCTMKYWJjCWFiYwoKIyBjb25jYXRlbmF0ZSAkMSBhbmQgKyskMjsgcHJpbnQgbmV3ICQxIGFuZCBjb25jYXRlbmF0ZWQgdmFsdWUKdHJ5IHsgeCA9ICQxKysrKyQyOyBwcmludCAkMSwgeCB9CjEJMwkyIDE0CgojIGRvIHdlIGdldCB0aGUgcHJlY2VkZW5jZSBvZiAhIHJpZ2h0Pwp0cnkgJDEgISQyCjAJMAkwXHQwCjAJMQkwXHQxCjEJMAkxXHQwCjEJMQkxXHQxCgojIGFub3RoZXIgYXZhIHNwZWNpYWwKdHJ5IHsgcHJpbnQgKCQxfi9hYmMvICEkMikgfQowCTAJMDEKMAkxCTAwCmFiYwkwCTExCnhhYmNkCTEJMTAKCnRyeSB7IHByaW50ICEkMSArICQyIH0KMQkzCTMKMAkzCTQKLTEJMwkzCgojIGFzaWRlOiAgISQxID0gJDIgaXMgbm93IGEgc3ludGF4IGVycm9yCgojIHRoZSBkZWZpbml0aW9uIG9mICJudW1iZXIiIGNoYW5nZXMgd2l0aCBpc251bWJlci4KIyAyZTEwMCBpcyBvayBhY2NvcmRpbmcgdG8gc3RydG9kLgojIHRyeSAxIAoKdHJ5IHsgcHJpbnQgKCQxID09ICQyKSB9CjAJMAkxCjAJMQkwCjAJMDAJMQowCSIiCTAKKzAJLTAJMQoxCTEuMAkxCjEJMWUwCTEKMmUxMAkyLjAwZTEwCTEKMmUxMAkyZSsxMAkxCjJlLTEwCTJlLTEwCTEKMmUxMAkyZS0xMAkwCjJlMTAJMjBlOQkxCjJlMTAwCTIuMDAwZTEwMAkxCjJlMTAwMAkyLjBlMTAwMAkwCgojIHRoaXMgb25lICgzICYgNCkgbWF5ICJmYWlsIiBpZiBhIG5lZ2F0aXZlIDAgaXMgcHJpbnRlZCBhcyAtMCwKIyBidXQgaSB0aGluayB0aGlzIG1pZ2h0IGJlIGEgdHlwZS1jb2VyY2lvbiBwcm9ibGVtLgoKdHJ5IHsgcHJpbnQgJDEsICskMSwgLSQxLCAtIC0kMSB9CjEJMSAxIC0xIDEKLTEJLTEgLTEgMSAtMQowCTAgMCAwIDAKeAl4IDAgMCAwCgp0cnkgeyBwcmludGYoImElKnNiXG4iLCAkMSwgJDIpIH0KMQl4CWF4YgoyCXgJYSB4YgozCXgJYSAgeGIKCnRyeSB7IHByaW50ZigiYSUtKnNiXG4iLCAkMSwgJDIpIH0KMQl4CWF4YgoyCXgJYXggYgozCXgJYXggIGIKCnRyeSB7IHByaW50ZigiYSUqLipzYlxuIiwgJDEsICQyLCAiaGVsbG8iKSB9CjEJMQlhaGIKMgkxCWEgaGIKMwkxCWEgIGhiCgp0cnkgeyBwcmludGYoImElLSouKnNiXG4iLCAkMSwgJDIsICJoZWxsbyIpIH0KMQkxCWFoYgoyCTEJYWggYgozCTEJYWggIGIKCnRyeSB7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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRlc3RkaXIvdC5tYXgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjY0ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDAwMDA3MgAxMzMzNzE3NDcwMwAwMTMwMzcAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbGVuZ3RoID4gbWF4CXsgbWF4ID0gbGVuZ3RoOyB4ID0gJDB9CkVORCB7IHByaW50IG1heCwgeCB9CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0ZXN0ZGlyL3AuNTEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY2NAAwMDAxNzUwADAwMDE3NTAAMDAwMDAwMDAxNTQAMTMzMzcxNzQ3MDMAMDEyNDc0ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEJFR0lOCXsgRlMgPSAiOiIgfQp7CWlmICgkMSAhPSBwcmV2KSB7CgkJcHJpbnQgIlxuIiAkMSAiOiIKCQlwcmV2ID0gJDEKCX0KCXByaW50ZiAiXHQlLTEwcyAlNmRcbiIsICQyLCAkMwp9CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdGVzdGRpci90LmludGVzdDIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NjQAMDAwMTc1MAAwMDAxNzUwADAwMDAwMDAwMzU1ADEzMzM3MTc0NzAzADAxMzY0NgAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7CglsaW5lID0gc3Vic3RyKCQwLCBpbmRleCgkMCwgIiAiKSkKCXByaW50IGxpbmUKCW4gPSBzcGxpdChsaW5lLCB4KQoJeFskMCwgJDFdID0gJDAKCXByaW50IHhbJDAsICQxXQoJcHJpbnQgIjw8PCIKZm9yIChpIGluIHgpIHByaW50IGksIHhbaV0KCXByaW50ICI+Pj4iCglpZiAoKCQwLCQxKSBpbiB4KQoJCXByaW50ICJ5ZXMiCglpZiAoJDEgaW4geCkKCQlwcmludCAieWVzIgoJZWxzZQoJCXByaW50ICJubyIKfQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRlc3RkaXIvZWNoby5jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjY0ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDAwMDQ3NwAxMzMzNzE3NDcwMwAwMTMxNjAAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCmludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCnsKCWludCBpLCBzdGFydCwgbWludXNuOwoKCXN0YXJ0ID0gMTsKCW1pbnVzbiA9IDA7CglpZiAoYXJnYyA+IDEgJiYgc3RyY21wKGFyZ3ZbMV0sICItbiIpID09IDApIHsKCQlzdGFydCA9IDI7CgkJbWludXNuID0gMTsKCX0KCglmb3IgKGkgPSBzdGFydDsgaSA8IGFyZ2M7IGkrKykKCQlwcmludGYoIiVzJXMiLCBhcmd2W2ldLCBpPT1hcmdjLTEgPyAiIiA6ICIgIik7CglpZiAobWludXNuID09IDApCgkJcHJpbnRmKCJcbiIpOwp9CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0ZXN0ZGlyL3AuNDQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY2NAAwMDAxNzUwADAwMDE3NTAAMDAwMDAwMDAxNTAAMTMzMzcxNzQ3MDMAMDEyNDcyACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGZ1bmN0aW9uIGZhY3QobikgewoJaWYgKG4gPD0gMSkKCQlyZXR1cm4gMQoJZWxzZQoJCXJldHVybiBuICogZmFjdChuLTEpCn0KeyBwcmludCAkMSAiISBpcyAiIGZhY3QoJDEpIH0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdGVzdGRpci90LmRlbGV0ZTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NjQAMDAwMTc1MAAwMDAxNzUwADAwMDAwMDAwMzM3ADEzMzM3MTc0NzAzADAxMzYwMAAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABORiA+IDAgeyAKICBuID0gc3BsaXQoJDAsIHgpCiAgaWYgKG4gIT0gTkYpCglwcmludGYoInNwbGl0IHNjcmV3ZWQgdXAgJWQgJWRcbiIsIG4sIE5GKQogIGRlbGV0ZSB4WzFdCiAgayA9IDAKICBmb3IgKGkgaW4geCkKCWsrKwogIGlmIChrICE9IE5GLTEpCglwcmludGYgImRlbGV0ZSBtaXNjb3VudCAlZCBlbGVtcyBzaG91bGQgYmUgJWQgYXQgbGluZSAlZFxuIiwgaywgTkYtMSwgTlIgCn0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRlc3RkaXIvY2xlYW51cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNzc1ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDAwMDMwNQAxMzMzNzE3NDcwMwAwMTM0NDEAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcm0gLWYgY29yZSBmb28qIGp1bmsqIGdsb3AqICp0ZW1wKiAqLnAgYmlncG9wIHNtYWxscG9wIHR0LiogY291bnRyaWVzIHRkLjEKCnJtIC1mIFQuKiB0LiogcC4qIHUuKiBjaGVtLmF3ayB0ZXN0LmRhdGEgdGVzdC5jb3VudHJpZXMgQ29tcGFyZSoKCnJtIC1mICouYXdrICoub3V0IHRlc3RhbGwgdHJ5ICBpbmQgTk9URVMgY2xlYW51cCB4YyB5YwoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0ZXN0ZGlyL3QuNgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY2NAAwMDAxNzUwADAwMDE3NTAAMDAwMDAwMDAxMTQAMTMzMzcxNzQ3MDMAMDEyNDE0ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC9hfGJ8Yy8JewoJaSA9ICQxCglwcmludAoJd2hpbGUgKGkgPj0gMSkgewoJCXByaW50ICIJIiwgaQoJCWkgPSBpIC8gMTAKCX0KfQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdGVzdGRpci90LmZ1bjUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NjQAMDAwMTc1MAAwMDAxNzUwADAwMDAwMDAwMTQ3ADEzMzM3MTc0NzAzADAxMzEzMgAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmdW5jdGlvbiBmKGEpIHsKCXJldHVybiBzcGxpdCgkMCwgYSkKfQp7CglwcmludAoJbiA9IGYoeCkKCWZvciAoaSA9IDE7IGkgPD0gbjsgaSsrKQoJCXByaW50ICIJIiB4W2ldCn0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRlc3RkaXIvUkVBRE1FLlRFU1RTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjY0ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDAwMzMyNwAxMzMzNzE3NDcwMwAwMTM2NTQAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVGhlIGFyY2hpdmUgb2YgdGVzdCBmaWxlcyBjb250YWlucyAKCi0gQSBzaGVsbCBmaWxlIGNhbGxlZCBSRUdSRVNTIHRoYXQgY29udHJvbHMgdGhlIHRlc3RpbmcgcHJvY2Vzcy4KCi0gU2V2ZXJhbCBzaGVsbCBmaWxlcyBjYWxsZWQgQ29tcGFyZSogdGhhdCBjb250cm9sIHN1Yi1wYXJ0cwpvZiB0aGUgdGVzdGluZy4KCi0gQWJvdXQgMTYwIHNtYWxsIHRlc3RzIGNhbGxlZCB0LiogdGhhdCBjb25zdGl0dXRlIGEgcmFuZG9tCnNhbXBsaW5nIG9mIGF3ayBjb25zdHJ1Y3Rpb25zIGNvbGxlY3RlZCBvdmVyIHRoZSB5ZWFycy4KTm90IG9yZ2FuaXplZCwgYnV0IHRoZXkgdG91Y2ggYWxtb3N0IGV2ZXJ5dGhpbmcuCgotIEFib3V0IDYwIHNtYWxsIHRlc3RzIGNhbGxlZCBwLiogdGhhdCBjb21lIGZyb20gdGhlIGZpcnN0CnR3byBjaGFwdGVycyBvZiBUaGUgQVdLIFByb2dyYW1taW5nIExhbmd1YWdlLiAgVGhpcyBpcwpiYXNpYyBzdHVmZiAtLSB0aGV5IGhhdmUgdG8gd29yay4KClRoZXNlIHR3byBzZXRzIGFyZSBpbnRlbmRlZCBhcyByZWdyZXNzaW9uIHRlc3RzLCB0byBiZSBzdXJlCnRoYXQgYSBuZXcgdmVyc2lvbiBwcm9kdWNlcyB0aGUgc2FtZSByZXN1bHRzIGFzIGEgcHJldmlvdXMgb25lLgpUaGVyZSBhcmUgYSBjb3VwbGUgb2Ygc3RhbmRhcmQgZGF0YSBmaWxlcyB1c2VkIHdpdGggdGhlbSwKdGVzdC5kYXRhIGFuZCB0ZXN0LmNvdW50cmllcywgYnV0IG90aGVycyB3b3VsZCB3b3JrIHRvby4KCi0gQWJvdXQgMjAgZmlsZXMgY2FsbGVkIFQuKiB0aGF0IGFyZSBzZWxmLWNvbnRhaW5lZCBhbmQKbW9yZSBzeXN0ZW1hdGljIHRlc3RzIG9mIHNwZWNpZmljIGxhbmd1YWdlIGZlYXR1cmVzLgpGb3IgZXhhbXBsZSwgVC5jbHYgdGVzdHMgY29tbWFuZC1saW5lIHZhcmlhYmxlIGhhbmRsaW5nLgpUaGVzZSB0ZXN0cyBhcmUgbm90IHJlZ3Jlc3Npb25zIC0tIHRoZXkgY29tcHV0ZSB0aGUgcmlnaHQKYW5zd2VyIGJ5IHNlcGFyYXRlIG1lYW5zLCB0aGVuIGNvbXBhcmUgdGhlIGF3ayBvdXRwdXQuCkEgc3BlY2lmaWMgdGVzdCBmb3IgZWFjaCBuZXcgYnVnIGZvdW5kIHNob3dzIHVwIGluIGF0IGxlYXN0Cm9uZSBvZiB0aGVzZSwgbW9zdCBvZnRlbiBULm1pc2MuICBUaGVyZSBhcmUgYWJvdXQgMjIwIHRlc3RzCnRvdGFsIGluIHRoZXNlIGZpbGVzLgoKLSBUd28gb2YgdGhlc2UgZmlsZXMsIFQucmUgYW5kIFQuc3ViLCBhcmUgc3lzdGVtYXRpYyB0ZXN0cwpvZiB0aGUgcmVndWxhciBleHByZXNzaW9uIGFuZCBzdWJzdGl0dXRpb24gY29kZS4gIFRoZXkgZXhwcmVzcwp0ZXN0cyBpbiBhIHNtYWxsIGxhbmd1YWdlLCB0aGVuIGdlbmVyYXRlIGF3ayBwcm9ncmFtcyB0aGF0CnZlcmlmeSBiZWhhdmlvci4KCi0gQWJvdXQgMjAgZmlsZXMgY2FsbGVkIHR0LiogdGhhdCBhcmUgdXNlZCBhcyB0aW1pbmcgdGVzdHM7CnRoZXkgdXNlIHRoZSBtb3N0IGNvbW1vbiBhd2sgY29uc3RydWN0aW9ucyBpbiBzdHJhaWdodGZvcndhcmQKd2F5cywgYWdhaW5zdCBhIGxhcmdlIGlucHV0IGZpbGUgY29uc3RydWN0ZWQgYnkgQ29tcGFyZS50dC4KCgpUaGVyZSBpcyB1bmRvdWJ0ZWRs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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeyQxID0gMTsgcHJpbnQgJDB9CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0ZXN0ZGlyL3QuaW4xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY2NAAwMDAxNzUwADAwMDE3NTAAMDAwMDAwMDAyMDcAMTMzMzcxNzQ3MDMAMDEyNzQxACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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Cgp9CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRlc3RkaXIvdC5zcGxpdDEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjY0ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDAwMDEwMAAxMzMzNzE3NDcwMwAwMTM0NTYAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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ZCcgPmZvbzEKJGF3ayAneyBpZiAobWF0Y2goJDAsIC9eVGhlIGJpZyBicm93biBvdmVyIHRoZSBsYXp5IGRvZy8pID09IDApIHsKCQlwcmludGYoImZhaWxlZFxuIikKCX0gZWxzZSB7CgkJcHJpbnRmKCJzdWNjZWVkZWRcbiIpCgl9Cn0gJyBmb28gPmZvbzIKY21wIC1zIGZvbzEgZm9vMiB8fCBlY2hvICcHQkFEOiBULm1pc2MgZ2hvc2ggUkUgYnVnJwoKZWNobyAnMTIzCjEyMzQ1Njc4OTAKMTIzNDU2Nzg5MDEnID5mb28KZWNobyAnMTIzNDU2Nzg5MDEnID5mb28xCiRhd2sgJ2xlbmd0aCgkMCkgPiAxMCcgZm9vID5mb28yCmNtcCAtcyBmb28xIGZvbzIgfHwgZWNobyAnB0JBRDogVC5taXNjIGxhc3QgbnVtYmVyIGJ1ZycKCiMgY2hlY2sgc29tZSBcIHNlcXVlbmNlcyBpbiBzdHJpbmdzIChhc2NpaSkKZWNobyBISUpLTCA+Zm9vMQplY2hvIGZvbyB8ICRhd2sgJ3sgcHJpbnQgIkhceDQ5XHg0YVx4NEJMIiB9JyA+Zm9vMgpjbXAgLXMgZm9vMSBmb28yIHx8IGVjaG8gJwdCQUQ6IFQubWlzYyBoZXggc3RyaW5nIGN2dCcKCmVjaG8gMDEyeDQ1ID5mb28xCiRhd2sgJ0JFR0lOIHsgcHJpbnQgIjBcMDYxXDYyeFwwNjQ1IiB9JyA+Zm9vMgpjbXAgLXMgZm9vMSBmb28yIHx8IGVjaG8gJwdCQUQ6IFQubWlzYyBvY3Qgc3RyaW5nIGN2dCcKCiMgJGkrKyBtZWFucyAoJGkpKysKZWNobyAzIDUgfCAkYXdrICd7IGkgPSAxOyBwcmludCAkaSsrIDsgcHJpbnQgJDEsIGkgfScgPmZvbzEKZWNobyAnMwo0IDEnID5mb28yCmNtcCAtcyBmb28xIGZvbzIgfHwgZWNobyAnB0JBRDogVC5taXNjIGJhZCBmaWVsZCBpbmNyZW1lbnQnCgojIG1ha2VzIHN1cmUgdGhhdCBmaWVsZHMgYXJlIHJlY29tcHV0ZWQgZXZlbiBpZiBzZWxmLWFzc2lnbm1lbnQKIyB0YWtlIGludG8gYWNjb3VudCB0aGF0IHN1YnRyYWN0aW5nIGZyb20gTkYgbm93IHJlYnVpbGRzIHRoZSByZWNvcmQKZWNobyAnYSBiIGMKcyBwIHEgcgp4IHkgeicgPmZvbwplY2hvICdhCnMgcAp4JyA+Zm9vMQokYXdrICd7IE5GIC09IDI7ICQxID0gJDE7IHByaW50IH0nIDxmb28gPmZvbzIKZGlmZiBmb28xIGZvbzIgfHwgZWNobyAxPiYyICIHQkFEOiBULm1pc2MgYmFkIGZpZWxkIHNlbGYtYXNzaWdubWVudAciCgplY2hvICcxCjEnID5mb28xCiRhd2sgJ0JFR0lOIHt4ID0gMTsgcHJpbnQgeDsgeCA9IHg7IHByaW50IHh9JyA+Zm9vMgpkaWZmIGZvbzEgZm9vMiB8fCBlY2hvIDE+JjIgIgdCQUQ6IFQubWlzYyBiYWQgc2VsZi1hc3NpZ25tZW50ByIKCmVjaG8gNTczMTA5MzEyIHwgJGF3ayAne3ByaW50ICQxKjR9JyA+Zm9vMQplY2hvIDIyOTI0MzcyNDggPmZvbzIKZGlmZiBmb28xIGZvbzIgfHwgZWNobyAxPiYyICIHQkFEOiBULm1pc2MgYmFkIG92ZXJmbG93ByIKCiMgbm90ZSB0aGF0IHRoZXJlIGFyZSA4LWJpdCBjaGFyYWN0ZXJzIGluIHRoZSBlY2hvCiMgc29tZSBzaGVsbHMgd2lsbCBwcm9iYWJseSBzY3JldyB0aGlzIHVwLgplY2hvICcjCmNvZGUgwoAgMQpjb2RlIMKAIDInIHwKJGF3ayAnL14jLycgPmZvbzEKZWNobyAnIycgPmZvbzIKZGlmZiBmb28xIGZvbzIgfHwgZWNobyAxPiYyICIHQkFEOiBULm1pc2MgYmFkIG1hdGNoIG9mIDgtYml0IGNoYXIHIgoKZWNobyBoZWxsbyB8CiRhd2sgJ0JFR0lOCXsgRklMRU5BTUUgPSAiL2V0Yy9wYXNzd2QiIH0KCXsgcHJpbnQgJDAgfScgPi9kZXYvbnVsbAppZiB0ZXN0IC1yIGNvcmU7IHRoZW4gZWNobyAxPiYyICIHQkFEOiBULm1pc2MgL2V0Yy9wYXNzd2QgZHJvcHBlZCBjb3JlByI7IGZpCgplY2hvIGhlbGxvIHwKJGF3ayAnICBmdW5jdGlvbiBmb28oZm9vKSB7CiAgICAgICAgICAgICAgICBmb28gPSAxCiAgICAgICAgICAgICAgICBmb28oKQogICAgICAgIH0KCXsgZm9vKGJhcikgfQonID4vZGV2L251bGwgMj4mMQppZiB0ZXN0IC1yIGNvcmU7IHRoZW4KCWVjaG8gMT4mMiAiB0JBRDogVC5taXNjIGZ1bmN0aW9uIGZvbyhmb28pIGRyb3BwZWQgY29yZQciCglybSAtZiBjb3JlCmZpCgplY2hvICcyCjEwJyB8CiRhd2sgJ3sgeFtOUl0gPSAkMCB9CSMgdGVzdCB3aGV0aGVyICQwIGlzIE5VTSBhcyB3ZWxsIGFzIFNUUgpFTkQgeyBpZiAoeFsxXSA+IHhbMl0pIHByaW50ICIHQkFEOiBULm1pc2M6ICQwIGlzIG5vdCBOVU0iIH0nCgoKJGF3ayAnQkVHSU4gewoJbnBhZCA9IHN1YnN0cigiYWxleGFuZGVyIiAiICAgICAgICAgICAiLDEsMTUpCglwcmludCBucGFkCgl9JyA+Zm9vCmdyZXAgJ1xcJyBmb28gJiYgZWNobyAxPiYyICIHQkFEOiBULm1pc2MgYWxleGFuZGVyIGZhaWxzIgoKIyBUaGlzIHNob3VsZCBnaXZlIGFuIGVycm9yIGFib3V0IGZ1bmN0aW9uIGFyZ3VtZW50cwokYXdrICcKZnVuY3Rpb24gZm9vKHgpIHsgcHJpbnQgInggaXMiIHggfQpCRUdJTiB7IGZvbyhmb28pIH0KJyAyPmZvbwpncmVwICJjYW4ndCB1c2UgZnVuY3Rpb24gZm9vIiBmb28gPi9kZXYvbnVsbCB8fCBlY2hvIDE+JjIgIgdCQUQ6IFQubWlzYyBmY24gYXJncyIKCgojIGdhd2sgZGVmcmVmIHRlc3Q7IHNob3VsZCBnaXZlIGVycm9yIGFib3V0IHVuZGVmaW5lZCBmdW5jdGlvbgokYXdrICdCRUdJTiB7IGZvbygpIH0nIDI+Zm9vCmdyZXAgImNhbGxpbmcgdW5kZWZpbmVkIGZ1bmN0aW9uIGZvbyIgZm9vID4vZGV2L251bGwgfHwgZWNobyAxPiYyICIHQkFEOiBULm1pc2MgdW5kZWZpbmVkIGZ1bmN0aW9uIgoKCiMgZ2F3ayBhcnJheXBhcm0gdGVzdDsgc2hvdWxkIGdpdmUgZXJyb3IgYWJvdXQgZnVuY3Rpb24gCiRhd2sgJwpCRUdJTiB7CiAgICBmb29bMV09MTsKICAgIGZvb1syXT0yOwogICAgYnVnMShmb28pOwp9CmZ1bmN0aW9uIGJ1ZzEoaSkgewogICAgZm9yIChpIGluIGZvbykgewoJYnVnMihpKTsKCWRlbGV0ZSBmb29baV07CglwcmludCBpLDEsYm90WzFdOwogICAgfQp9CmZ1bmN0aW9uIGJ1ZzIoYXJnKSB7CiAgICBib3RbYXJnXT1hcmc7Cn0KJyAyPmZvbwpncmVwICJjYW4udCBhc3NpZ24gdG8gZm9vIiBmb28gPi9kZXYvbnVsbCB8fCBlY2hvIDE+JjIgIgdCQUQ6IFQubWlzYyBmb28gYnVnIgoKCiMgVGhpcyBzaG91bGQgYmUgYSBzeW50YXggZXJyb3IKJGF3ayAnCiF4ID0geQonIDI+Zm9vCmdyZXAgInN5bnRheCBlcnJvciIgZm9vID4vZGV2L251bGwgfHwgZWNobyAxPiYyICIHQkFEOiBULm1pc2Mgc3ludGF4IGVycm9yICF4PXkgZmFpbHMiCgojIFRoaXMgc2hvdWxkIHByaW50IGJiYgokYXdrICcKQkVHSU4geyB1cFsxXSA9ICJhIgoJZm9yIChpIGluIHVwKSBnc3ViKCJhIiwgIkEiLCB4KQoJcHJpbnQgeCB4ICJiYmIiCglleGl0CiAgICAgIH0KJyA+Zm9vCmdyZXAgYmJiIGZvbyA+L2Rldi9udWxsIHx8IGVjaG8gMT4mMiAiB0JBRDogVC5taXNjIGdzdWIgZmFpbGVkIgoKZWNobyB5ZXMgfAokYXdrICcKQkVHSU4gewoJcHJpbnRmICJwdXNoIHJldHVybgciID4iL2Rldi9udWxsIgoJZ2V0bGluZSBhbnMgPCIvZGV2L251bGwiCn0gJwppZiB0ZXN0IC1yIGNvcmU7IHRoZW4gZWNobyAxPiYyICIHQkFEOiBULm1pc2MgZ2V0bGluZSBhbnMgZHJvcHBlZCBjb3JlIjsgZmkKCiRhd2sgJ0JFR0lOIHsgdW5pcmVnaGYoKSB9CmZ1bmN0aW9uIHVuaXJlZ2hmKGhmZWVkKSB7IGhmZWVkWzFdID0gMCB9JwppZiB0ZXN0IC1yIGNvcmU7IHRoZW4gZWNobyAxPiYyICIHQkFEOiBULm1pc2MgdW5pcmVnaGYgZHJvcHBlZCBjb3JlIjsgZmkKCmVjaG8geCB8ICRhd2sgJy9bL10vJyAyPmZvbwpncmVwICdub250ZXJtaW5hdGVkIGNoYXJhY3RlciBjbGFzcycgZm9vID4vZGV2L251bGwgfHwgZXJyb3IgJwdCQUQ6IFQubWlzYyBub250ZXJtaW5hdGVkIGZhaWxzJwppZiB0ZXN0IC1yIGNvcmU7IHRoZW4gZWNobyAxPiYyICIHQkFEOiBULm1pc2Mgbm9udGVybWluYXRlZCBkcm9wcGVkIGNvcmUiOyBmaQoKJGF3ayAnCmZ1bmN0aW9uIGYoKSB7IHJldHVybiAxMjM0NSB9CkJFR0lOIHsgcHJpbnRmICI8JXM+XG4iLCBmKCkgfQonID5mb28KZ3JlcCAnPDEyMzQ1PicgZm9vID4vZGV2L251bGwgfHwgZWNobyAnB0JBRDogVC5taXNjIDwxMjM0NT4gZmFpbHMnCgplY2hvICdhYmMKZGVmCgpnaGkKamtsJyA+Zm9vCiRhd2sgJwpCRUdJTiB7CVJTID0gIiIKCXdoaWxlIChnZXRsaW5lIDwiZm9vIikKCQlwcmludAp9JyA+Zm9vMQokYXdrICdFTkQge3ByaW50IE5SfScgZm9vMSB8IGdyZXAgNCA+L2Rldi9udWxsIHx8IGVjaG8gJwdCQUQ6IFQubWlzYyBhYmNkZWYgZmFpbHMnCgoKIyBUaGUgZm9sbG93aW5nIHNob3VsZCBub3QgcHJvZHVjZSBhIHdhcm5pbmcgYWJvdXQgY2hhbmdpbmcgYSBjb25zdGFudAojIG5vciBhYm91dCBhIGN1cmRsZWQgdGVtcGNlbGwgbGlzdAokYXdrICdmdW5jdGlvbiBmKHgpIHsgeCA9IDIgfQpCRUdJTiB7IGYoMSkgfScgPmZvbwpncmVwICdeJyBmb28gJiYgZWNobyAnB0JBRDogdGVzdCBjb25zdGFudCBjaGFuZ2UgZmFpbHMnCgojIFRoZSBmb2xsb3dpbmcgc2hvdWxkIG5vdCBwcm9kdWNlIGEgd2FybmluZyBhYm91dCBhIGN1cmRsZWQgdGVtcGNlbGwgbGlzdAokYXdrICdmdW5jdGlvbiBmKHgpIHsgeCB9CkJFR0lOIHsgZigxKSB9JyA+Zm9vCmdyZXAgJ14nIGZvbyAmJiBlY2hvICcHQkFEOiB0ZXN0IHRlbXBjZWxsIGxpc3QgZmFpbHMnCgokYXdrICdCRUdJTiB7IHByaW50IDksIGE9MTAsIDExOyBwcmludCBhOyBleGl0IH0nID5mb28xCmVjaG8gJzkgMTAgMTEKMTAnID5mb28yCmRpZmYgZm9vMSBmb28yIHx8IGVjaG8gJwdCQUQ6IFQubWlzYyAoZW1iZWRkZWQgZXhwcmVzc2lvbiknCgplY2hvICJhYmMgZGVmZ2ggaWprbCIgfCAkYXdrICcKICB7ICQxID0gIiI7IGxpbmUgPSAkMDsgcHJpbnQgbGluZTsgcHJpbnQgJDA7ICQwID0gbGluZTsgcHJpbnQgJDAgfScgPmZvbzEKZWNobyAiIGRlZmdoIGlqa2wKIGRlZmdoIGlqa2wKIGRlZmdoIGlqa2wiID5mb28yCmRpZmYgZm9vMSBmb28yIHx8IGVjaG8gJwdCQUQ6IFQubWlzYyAoYXNzaWdubWVudCB0byAkMCknCgokYXdrICcKZnVuY3Rpb24gbWluKGEsIGIpCnsKCWlmIChhIDwgYikKCQlyZXR1cm4gYQoJZWxzZQoJCXJldHVybiBiCn0KQkVHSU4geyBleGl0IH0KJwppZiB0ZXN0IC1yIGNvcmU7IHRoZW4gZWNobyAxPiYyICIHQkFEOiBULm1pc2MgZnVuY3Rpb24gbWluIGRyb3BwZWQgY29yZQciOyBmaQoKIyBUaGUgZm9sbG93aW5nIHNob3VsZCBub3QgZ2l2ZSBhIHN5bnRheCBlcnJvciBtZXNzYWdlOgokYXdrICcKZnVuY3Rpb24gZXhwYW5kKGNoYXJ0KSB7CglnZXRsaW5lIGNoYXJ0IDwgIkNIQVIudGlja3MiCn0KJyA+Zm9vCmdyZXAgJ14nIGZvbyA+L2Rldi9udWxsICYmIGVjaG8gJwdCQUQ6IFQubWlzYyBleHBhbmQgZXJyb3InCgokYXdrICdCRUdJTiB7IHByaW50IDFlNDAgfScgPi9kZXYvbnVsbAppZiB0ZXN0IC1yIGNvcmU7IHRoZW4gZWNobyAxPiYyICIHQkFEOiBULm1pc2MgMUU0MCBkcm9wcGVkIGNvcmUHIjsgZmkKCiMgVGhlIGZvbGxvd2luZyBzeW50YXggZXJyb3Igc2hvdWxkIG5vdCBkdW1wIGNvcmU6CiRhd2sgJwokTkY9PTMJe2ZpcnN0PTF9CiRORj09MiAmJiBmaXJzdD09MCAmJiAoYWJzKCQxLW8xKT4xMjB8fGFicygkMi1vMik+MTIwKQl7cHJpbnQgJDB9CiRORj09Mgl7bzE9JTE7IG8yPSQyOyBmaXJzdD0wfQonIDI+L2Rldi9udWxsCmlmIHRlc3QgLXIgY29yZTsgdGhlbiBlY2hvIDE+JjIgIgdCQUQ6IFQubWlzYyBmaXJzdC9hYnMgZHJvcHBlZCBjb3JlByI7IGZpCgojIFRoZSBmb2xsb3dpbmcgc3ludGF4IGVycm9yIHNob3VsZCBub3QgZHVtcCBjb3JlOgokYXdrICd7IG4gPSBzcGxpdCgkMSwgYWRkcmVzcywgISk7IHByaW50IGFkZHJlc3NbMV0gfScgMj5mb28KZ3JlcCAnaWxsZWdhbCBzdGF0ZW1lbnQnIGZvbyA+L2Rldi9udWxsIHx8IGVjaG8gJwdCQUQ6IFQubWlzYyBzcGxpdCBlcnJvcicKaWYgdGVzdCAtciBjb3JlOyB0aGVuIGVjaG8gMT4mMiAiB0JBRDogVC5taXNjIHNwbGl0ISBkcm9wcGVkIGNvcmUHIjsgZmkKCiMgVGhlIGZvbGxvd2luZyBzaG91bGQgY2F1c2UgYSBzeW50YXggZXJyb3IgbWVzc2FnZQokYXdrICdCRUdJTiB7ImhlbGxvIn0nIDI+Zm9vCmdyZXAgJ2lsbGVnYWwgc3RhdGVtZW50JyBmb28gPi9kZXYvbnVsbCB8fCBlY2hvICcHQkFEOiBULm1pc2MgaGVsbG8gZXJyb3InCgojIFRoZSBmb2xsb3dpbmcgc2hvdWxkIGdpdmUgYSBzeW50YXggZXJyb3IgbWVzc2FnZToKJGF3ayAnCmZ1bmN0aW9uIHBpbGUoYywgICAgIHIpIHsKCXIgPSArK3BpbGVbY10KfQoKeyBwaWxlKCQxKSB9CicgMj5mb28KZ3JlcCAnY29udGV4dCBpcycgZm9vID4vZGV2L251bGwgfHwgZWNobyAnB0JBRDogVC5taXNjIHBpbGUgZXJyb3InCgojIFRoaXMgc2hvdWxkIGNvbXBsYWluIGFib3V0IG1pc3NpbmcgYXRhbjIgYXJndW1lbnQ6CiRhd2sgJ0JFR0lOIHsgYXRhbjIoMSkgfScgMj5mb28KZ3JlcCAncmVxdWlyZXMgdHdvIGFyZycgZm9vID4vZGV2L251bGwgfHwgZWNobyAnB0JBRDogVC5taXNjIGF0YW4yIGVycm9yJwoKIyBUaGlzIHNob3VsZCBub3QgY29yZSBkdW1wOgokYXdrICdCRUdJTiB7IGYoKSB9CmZ1bmN0aW9uIGYoQSkgeyBkZWxldGUgQVsxXSB9CicKaWYgdGVzdCAtciBjb3JlOyB0aGVuIGVjaG8gMT4mMiAiB0JBRDogVC5taXNjIGRlbGV0ZSBkcm9wcGVkIGNvcmUHIjsgZmkKCiMgbmFzdHkgb25lOiAgc2hvdWxkIG5vdCBiZSBhYmxlIHRvIG92ZXJ3cml0ZSBjb25zdGFudHMKJGF3ayAnQkVHSU4geyBnc3ViKC9hbmEvLCJhbmRhIiwiYmFuYW5hIikKCQlwcmludGYgInRoZSBtb25rZXkgYXRlIGEgJXNcbiIsICJiYW5hbmEiIH0KJyA+L2Rldi9udWxsIDI+Zm9vCmdyZXAgJ3N5bnRheCBlcnJvcicgZm9vID4vZGV2L251bGwgfHwgZWNobyAnB0JBRDogVC5taXNjIGdzdWIgYmFuYW5hIGVycm9yJwoKIyBuYXN0eSBvbmU6ICBzaG91bGQgbm90IGJlIGFibGUgdG8gb3ZlcndyaXRlIGNvbnN0YW50cwokYXdrICdCRUdJTiB7IHN1YigvYW5hLywiYW5kYSIsImJhbmFuYSIpCgkJcHJpbnRmICJ0aGUgbW9ua2V5IGF0ZSBhICVzXG4iLCAiYmFuYW5hIiB9CicgPi9kZXYvbnVsbCAyPmZvbwpncmVwICdzeW50YXggZXJyb3InIGZvbyA+L2Rldi9udWxsIHx8IGVjaG8gJwdCQUQ6IFQubWlzYyBzdWIgYmFuYW5hIGVycm9yJwoKIyBsaW5lIG51bWJlcnMgdXNlZCB0byBkb3VibGUtY291bnQgY29tbWVudHMKJGF3ayAnIwojCiMKL3gKJyA+L2Rldi9udWxsIDI+Zm9vCmdyZXAgJ2xpbmUgWzQ1XScgZm9vID4vZGV2L251bGwgfHwgZWNobyAnB0JBRDogVC5taXNjIGxpbmVubycKCmVjaG8gJ3gMDQgLB1x5JyA+Zm9vMQokYXdrICdCRUdJTiB7IHByaW50ICJ4XGZcclxiXHZcYVxceSIgfScgPmZvbzIKY21wIC1zIGZvbzEgZm9vMiB8fCBlY2hvICcHQkFEOiBULm1pc2Mgd2VpcmQgY2hhcnMnCgplY2hvIDAgPmZvbzEKJGF3ayAnCUJFR0lOIHsgZXhpdCB9Cgl7IHByaW50IH0KCUVORCB7IHByaW50IE5SIH0nID5mb28yCmNtcCAtcyBmb28xIGZvbzIgfHwgZWNobyAnB0JBRDogVC5taXNjIEJFR0lOIGV4aXQnCgplY2hvIDEgPmZvbzEKJGF3ayAnCXsgZXhpdCB9CglFTkQgeyBwcmludCBOUiB9JyAvZXRjL3Bhc3N3ZCA+Zm9vMgpjbXAgLXMgZm9vMSBmb28yIHx8IGVjaG8gJwdCQUQ6IFQubWlzYyBpbW1tZWRpYXRlIGV4aXQnCgplY2hvIDEgPmZvbzEKJGF3ayAnCXtpID0gMTsgd2hpbGUgKGkgPD0gTkYpIHtpZiAoaSA9PSBORikgZXhpdDsgaSsrIH0gfQoJRU5EIHsgcHJpbnQgTlIgfScgL2V0Yy9wYXNzd2QgPmZvbzIKY21wIC1zIGZvbzEgZm9vMiB8fCBlY2hvICcHQkFEOiBULm1pc2MgaW1tbWVkaWF0ZSBleGl0IDInCgplY2hvIDEgPmZvbzEKJGF3ayAnCWZ1bmN0aW9uIGYoKSB7CgkJaSA9IDE7IHdoaWxlIChpIDw9IE5GKSB7aWYgKGkgPT0gTkYpIHJldHVybiBOUjsgaSsrIH0KCX0KCXsgaWYgKGYoKSA9PSAxKSBleGl0IH0KCUVORCB7IHByaW50IE5SIH0nIC9ldGMvcGFzc3dkID5mb28yCmNtcCAtcyBmb28xIGZvbzIgfHwgZWNobyAnB0JBRDogVC5taXNjIHdoaWxlIHJldHVybicKCmVjaG8gMSA+Zm9vMQokYXdrICcJZnVuY3Rpb24gZigpIHsKCQlzcGxpdCgiYSBiIGMiLCBhcnIpCgkJZm9yIChpIGluIGFycikge2lmIChpID09IDMpIHJldHVybiBOUjsgaSsrIH0KCX0KCXsgaWYgKGYoKSA9PSAxKSBleGl0IH0KCUVORCB7IHByaW50IE5SIH0nIC9ldGMvcGFzc3dkID5mb28yCmNtcCAtcyBmb28xIGZvbzIgfHwgZWNobyAnB0JBRDogVC5taXNjIHdoaWxlIHJldHVybicKCmVjaG8gMSA+Zm9vMQokYXdrICcJe2kgPSAxOyBkbyB7IGlmIChpID09IE5GKSBleGl0OyBpKysgfSB3aGlsZSAoaSA8PSBORikgfQoJRU5EIHsgcHJpbnQgTlIgfScgL2V0Yy9wYXNzd2QgPmZvbzIKY21wIC1zIGZvbzEgZm9vMiB8fCBlY2hvICcHQkFEOiBULm1pc2MgaW1tbWVkaWF0ZSBleGl0IDMnCgplY2hvIDEgPmZvbzEKJGF3ayAnCWZ1bmN0aW9uIGYoKSB7CgkJaSA9IDE7IGRvIHsgaWYgKGkgPT0gTkYpIHJldHVybiBOUjsgaSsrIH0gd2hpbGUgKGkgPD0gTkYpCgl9Cgl7IGlmIChmKCkgPT0gMSkgZXhpdCB9CglFTkQgeyBwcmludCBOUiB9JyAvZXRjL3Bhc3N3ZCA+Zm9vMgpjbXAgLXMgZm9vMSBmb28yIHx8IGVjaG8gJwdCQUQ6IFQubWlzYyBkbyByZXR1cm4nCgplY2hvIDEgPmZvbzEKJGF3ayAnCXtpID0gMTsgZG8geyBpZiAoaSA9PSBORikgYnJlYWs7IGkrKyB9IHdoaWxlIChpIDw9IE5GKTsgZXhpdCB9CglFTkQgeyBwcmludCBOUiB9JyAvZXRjL3Bhc3N3ZCA+Zm9vMgpjbXAgLXMgZm9vMSBmb28yIHx8IGVjaG8gJwdCQUQ6IFQubWlzYyBpbW1tZWRpYXRlIGV4aXQgNCcKCmVjaG8gMSA+Zm9vMQokYXdrICcJeyBuID0gc3BsaXQoJDAsIHgpCgkgIGZvciAoaSBpbiB4KSB7CgkgCWlmIChpID09IDEpCgkJCWV4aXQgfSB9CglFTkQgeyBwcmludCBOUiB9JyAvZXRjL3Bhc3N3ZCA+Zm9vMgpjbXAgLXMgZm9vMSBmb28yIHx8IGVjaG8gJwdCQUQ6IFQubWlzYyBpbW1tZWRpYXRlIGV4aXQgNScKCmVjaG8gWFhYWFhYWFggPmZvbzEKJGF3ayAnQkVHSU4geyBzID0gImFiXGZjXHJkXGJlIgoJdCA9IHM7IAlnc3ViKCJbIiBzICJdIiwgIlgiLCB0KTsgcHJpbnQgdCB9JyA+Zm9vMgpjbXAgLXMgZm9vMSBmb28yIHx8IGVjaG8gJwdCQUQ6IFQubWlzYyB3ZWlyZCBlc2NhcGVzIGluIGNoYXIgY2xhc3MnCgokYXdrICd7fScgL2V0Yy9wYXNzd2QgZ2xvcC9nbG9wID5mb28gMj5mb28yCmdyZXAgImNhbid0IG9wZW4uKmdsb3AiIGZvbzIgPi9kZXYvbnVsbCB8fCBlY2hvICIHQkFEOiBULm1pc2MgY2FuJ3Qgb3BlbiIKCmVjaG8gJwoKCmEKYWEKCmIKCgpjCgonID5mb28KZWNobyAzID5mb28xCiRhd2sgJ0JFR0lOIHsgUlMgPSAiIiB9OyBFTkQgeyBwcmludCBOUiB9JyBmb28gPmZvbzIKY21wIC1zIGZvbzEgZm9vMiB8fCBlY2hvICcHQkFEOiBULm1pc2MgUlMgYm90Y2gnCgokYXdrICdCRUdJTiBcCgl7CgkJcHJpbnQgImhlbGxvLCB3b3JsZCIKCX0KfX19JyA+Zm9vMSAyPmZvbzIKZ3JlcCAnc291cmNlIGxpbmUgNScgZm9vMiA+L2Rldi9udWxsIDI+JjEgfHwgZWNobyAnB0JBRDogVC5taXNjIGNvbnRpbnVhdGlvbiBsaW5lIG51bWJlcicKCgplY2hvIDExMSAyMjIgMzMzID5mb28KJGF3ayAneyBmWzFdPTE7IGZbMl09MjsgcHJpbnQgJGZbMV0sICRmWzFdKyssICRmWzJdLCBmWzFdLCBmWzJdIH0nIGZvbyA+Zm9vMgplY2hvIDExMSAxMTEgMjIyIDIgMiA+Zm9vMQpjbXAgLXMgZm9vMSBmb28yIHx8IGVjaG8gJwdCQUQ6IFQubWlzYyAkZlsxXSsrJwoKCiMgVGhlc2Ugc2hvdWxkIGJlIHN5bnRheCBlcnJvcnMKJGF3ayAuIDI+Zm9vCmdyZXAgInN5bnRheCBlcnJvciIgZm9vID4vZGV2L251bGwgfHwgZWNobyAxPiYyICIHQkFEOiBULm1pc2Mgc3ludGF4IGVycm9yIC4gZmFpbHMiCgokYXdrIC4uIDI+Zm9vCmdyZXAgInN5bnRheCBlcnJvciIgZm9vID4vZGV2L251bGwgfHwgZWNobyAxPiYyICIHQkFEOiBULm1pc2Mgc3ludGF4IGVycm9yIC4uIGZhaWxzIgoKJGF3ayAuRS4gMj5mb28KZ3JlcCAic3ludGF4IGVycm9yIiBmb28gPi9kZXYvbnVsbCB8fCBlY2hvIDE+JjIgIgdCQUQ6IFQubWlzYyBzeW50YXggZXJyb3IgLkUuIGZhaWxzIgoKJGF3ayAuKysuIDI+Zm9vCmdyZXAgInN5bnRheCBlcnJvciIgZm9vID4vZGV2L251bGwgfHwgZWNobyAxPiYyICIHQkFEOiBULm1pc2Mgc3ludGF4IGVycm9yIC4rKy4gZmFpbHMiCgoKCiMgVGhlc2Ugc2hvdWxkIGJlIHN5bnRheCBlcnJvcnMKJGF3ayAnJCcgMj5mb28KZ3JlcCAidW5leHBlY3RlZCIgZm9vID4vZGV2L251bGwgfHwgZWNobyAxPiYyICIHQkFEOiBULm1pc2Mgc3ludGF4IGVycm9yICQgZmFpbHMiCgokYXdrICd7cHJpbnQgJCcgMj5mb28KZ3JlcCAidW5leHBlY3RlZCIgZm9vID4vZGV2L251bGwgfHwgZWNobyAxPiYyICIHQkFEOiBULm1pc2Mgc3ludGF4IGVycm9yICQyIGZhaWxzIgoKJGF3ayAnIicgMj5mb28KZ3JlcCAibm9uLXRlcm1pbmF0ZWQiIGZvbyA+L2Rldi9udWxsIHx8IGVjaG8gMT4mMiAiB0JBRDogVC5taXNjIGJhcmUgcXVvdGUgZmFpbHMiCgoKIyAlYyBvZiAwIGlzIGV4cGxpY2l0IG51bGwgYnl0ZQoKLi9lY2hvICczJyA+Zm9vMQokYXdrICdCRUdJTiB7cHJpbnRmKCIlYyVjXG4iLCAwLCAwKSB9JyB8IHdjIHwgJGF3ayAne3ByaW50ICQzfScgPmZvbzIKY21wIC1zIGZvbzEgZm9vMiB8fCBlY2hvICcHQkFEOiBULm1pc2MgbnVsbCBieXRlJwoKIyBub24tdGVybWluYXRlZCBSRQoKJGF3ayAveHl6ID5mb28gMj4mMQpncmVwICJub24tdGVybWluYXRlZCIgZm9vID4vZGV2L251bGwgfHwgZWNobyAxPiYyICIHQkFEOiBULm1pc2Mgbm9uLXRlcm1pbmF0ZWQgUkUiCgojIG5leHQgc2V2ZXJhbCB3ZXJlIGluZmluaXRlIGxvb3BzLCBmb3VuZCBieSBicmlhbiB0c2FuZy4KIyB0aGlzIGlzIGhpcyBleGFtcGxlOgoKJGF3ayAnQkVHSU4gewogICAgc3dpdGNoIChzdWJzdHIoIngiLDEsMSkpIHsKICAgIGNhc2UgL2Fzay5jb20vOgoJYnJlYWsKICAgIGNhc2UgImdvb2dsZSI6CglicmVhawogICAgfQp9JyA+Zm9vIDI+JjEKZ3JlcCAiaWxsZWdhbCBzdGF0ZW1lbnQiIGZvbyA+L2Rldi9udWxsIHx8IGVjaG8gMT4mMiAiB0JBRDogVC5taXNjIGxvb3Bpbmcgc3ludGF4IGVycm9yIDEiCgokYXdrICdCRUdJTiB7IHMgeyBjIC8uLyB9IH0nID5mb28gMj4mMQpncmVwICJpbGxlZ2FsIHN0YXRlbWVudCIgZm9vID4vZGV2L251bGwgfHwgZWNobyAxPiYyICIHQkFEOiBULm1pc2MgbG9vcGluZyBzeW50YXggZXJyb3IgMiIKCiRhd2sgJ0JFR0lOIHsgcyB7IGMgLy4uLyB9IH0nID5mb28gMj4mMQpncmVwICJpbGxlZ2FsIHN0YXRlbWVudCIgZm9vID4vZGV2L251bGwgfHwgZWNobyAxPiYyICIHQkFEOiBULm1pc2MgbG9vcGluZyBzeW50YXggZXJyb3IgMyIKCmVjaG8gJ2EKYiBjCmRlIGZnIGhpJyA+Zm9vMAokYXdrICdFTkQgeyBwcmludCBORiwgJDAgfScgZm9vMCA+Zm9vMQphd2sgJ3sgcHJpbnQgTkYsICQwIH0nIGZvbzB8IHRhaWwgLTEgPmZvbzIKY21wIC1zIGZvbzEgZm9vMiB8fCBlY2hvICcHQkFEOiBULm1pc2MgRU5EIG11c3QgcHJlc2VydmUgJDAnCgplY2hvICdmZyBoaScgPmZvbzAKJGF3ayAnRU5EIHsgcHJpbnQgTkYsICQwIH0nIGZvbzAgPmZvbzEKYXdrICd7IHByaW50IE5GLCAkMCB9JyBmb28wfCB0YWlsIC0xID5mb28yCmNtcCAtcyBmb28xIGZvbzIgfHwgZWNobyAnB0JBRDogVC5taXNjIEVORCBtdXN0IHByZXNlcnZlICQwJwoKZWNobyAnJyA+Zm9vMAokYXdrICdFTkQgeyBwcmludCBORiwgJDAgfScgZm9vMCA+Zm9vMQphd2sgJ3sgcHJpbnQgTkYsICQwIH0nIGZvbzB8IHRhaWwgLTEgPmZvbzIKY21wIC1zIGZvbzEgZm9vMiB8fCBlY2hvICcHQkFEOiBULm1pc2MgRU5EIG11c3QgcHJlc2VydmUgJDAnCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0ZXN0ZGlyL1QuZ2V0bGluZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDc3NQAwMDAxNzUwADAwMDE3NTAAMDAwMDAwMDM0MzYAMTMzMzcxNzQ3MDMAMDEzNjUzACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVjaG8gVC5nZXRsaW5lOiB0ZXN0IGdldGxpbmUgZnVuY3Rpb24KCmF3az0ke2F3ay0uLi9hLm91dH0KCndobyA+Zm9vMQpjYXQgZm9vMSB8ICRhd2sgJwpCRUdJTiB7Cgl3aGlsZSAoZ2V0bGluZSkKCQlwcmludAoJZXhpdAp9CicgPmZvbwpjbXAgLXMgZm9vMSBmb28gfHwgZWNobyAnQkFEOiBULmdldGxpbmUgKGJhcmUgZ2V0bGluZSknCgp3aG8gPmZvbzEKY2F0IGZvbzEgfCAkYXdrICcKQkVHSU4gewoJd2hpbGUgKGdldGxpbmUgeHh4KQoJCXByaW50IHh4eAoJZXhpdAp9CicgPmZvbwpjbXAgLXMgZm9vMSBmb28gfHwgZWNobyAnQkFEOiBULmdldGxpbmUgKGdldGxpbmUgeHh4KScKCiRhd2sgJwpCRUdJTiB7Cgl3aGlsZSAoZ2V0bGluZSA8Ii9ldGMvcGFzc3dkIikKCQlwcmludAoJZXhpdAp9CicgPmZvbwpjbXAgLXMgL2V0Yy9wYXNzd2QgZm9vIHx8IGVjaG8gJ0JBRDogVC5nZXRsaW5lIChnZXRsaW5lIDxmaWxlKScKCmNhdCAvZXRjL3Bhc3N3ZCB8ICRhd2sgJwpCRUdJTiB7Cgl3aGlsZSAoZ2V0bGluZSA8Ii0iKQkjIHN0ZGluCgkJcHJpbnQKCWV4aXQKfQonID5mb28KY21wIC1zIC9ldGMvcGFzc3dkIGZvbyB8fCBlY2hvICdCQUQ6IFQuZ2V0bGluZSAoZ2V0bGluZSA8Ii0iKScKCiRhd2sgJwpCRUdJTiB7Cgl3aGlsZSAoZ2V0bGluZSA8QVJHVlsxXSkKCQlwcmludAoJZXhpdAp9CicgL2V0Yy9wYXNzd2QgPmZvbwpjbXAgLXMgL2V0Yy9wYXNzd2QgZm9vIHx8IGVjaG8gJ0JBRDogVC5nZXRsaW5lIChnZXRsaW5lIDxhcmcpJwoKJGF3ayAnCkJFR0lOIHsKCXdoaWxlIChnZXRsaW5lIHggPEFSR1ZbMV0pCgkJcHJpbnQgeAoJZXhpdAp9CicgL2V0Yy9wYXNzd2QgPmZvbwpjbXAgLXMgL2V0Yy9wYXNzd2QgZm9vIHx8IGVjaG8gJ0JBRDogVC5nZXRsaW5lIChnZXRsaW5lIHggPGFyZyknCgokYXdrICcKQkVHSU4gewoJd2hpbGUgKCgiY2F0ICIgQVJHVlsxXSkg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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRlc3RkaXIvdC5yZWMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjY0ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDAwMDAyMwAxMzMzNzE3NDcwMwAwMTMwMTcAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeyBwcmludCBzcXJ0KCQxKSB9CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0ZXN0ZGlyL3QuZnVuMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY2NAAwMDAxNzUwADAwMDE3NTAAMDAwMDAwMDAxMDIAMTMzMzcxNzQ3MDMAMDEzMTE0ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGZ1bmN0aW9uIGYoYSkgeyBwcmludCAiaGVsbG8iOyByZXR1cm4gYSB9CnsgcHJpbnQgIjwiIGYoJDEpICI+IiB9CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdGVzdGRpci9wLjcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NjQAMDAwMTc1MAAwMDAxNzUwADAwMDAwMDAwMDExADEzMzM3MTc0NzAzADAxMjQwNQAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkMyA+IDEwMAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRlc3RkaXIvbGF0aW4xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjY0ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDAwMTA1MwAxMzMz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CgkJCXByaW50ZigiIDEyMzQ1Njc4OSIpCgkJcHJpbnRmKCJcbiIpOwoJfQp9ICcgPmZvbwokYXdrICAne3ByaW50IE5GfScgZm9vID5mb28xCmVjaG8gJzUwMAo1MDAnID5mb28yCmNtcCAtcyBmb28xIGZvbzIgfHwgZWNobyAnB0JBRDogVC5vdmVyZmxvdyAtbXIgLW1mIE5GJwoKcm0gLWYgY29yZQojIHRoaXMgc2hvdWxkIG5vdCBkcm9wIGNvcmUKJGF3ayAnQkVHSU4gewoJZm9yIChpID0gMTsgaSA8IDEwMDA7IGkrKykgcyA9IHMgImEteiIKCWlmICgieCIgfiAiWyIgcyAiXSIpCgkJcHJpbnQgInVnaCIKfScgPmZvbyAyPmZvbwp0ZXN0IC1yIGNvcmUgJiYgZWNobyAxPiYyICIHQkFEOiBULm92ZXJmbG93IHRvbyBsb25nIGNoYXIgY2xhc3MgZHJvcHBlZCBjb3JlIgoKZWNobyA0MDAwMDA0ID5mb28xCiRhd2sgJwpCRUdJTiB7Cgl4MSA9IHNwcmludGYoIiUxMDAwMDAwc1xuIiwgImhlbGxvIikKCXgyID0gc3ByaW50ZigiJS0xMDAwMDAwc1xuIiwgIndvcmxkIikKCXgzID0gc3ByaW50ZigiJTEwMDAwMDAuMTAwMDAwMHNcbiIsICJnb29kYnllIikKCXg0ID0gc3ByaW50ZigiJS0xMDAwMDAwLjEwMDAwMDBzXG4iLCAiZ29vZGJ5ZSIpCglwcmludCBsZW5ndGgoeDEgeDIgeDMgeDQpCn0nID5mb28yCmNtcCAtcyBmb28xIGZvbzIgfHwgZWNobyAnB0JBRDogVC5vdmVyZmxvdyBodWdlIHNwcmludGZzJwoKZWNobyAwID5mb28xCiRhd2sgJwpCRUdJTiB7Cglmb3IgKGkgPSAwOyBpIDwgMTAwMDAwOyBpKyspCgkJeFtpXSA9IGkKCWZvciAoaSBpbiB4KQoJCWRlbGV0ZSB4W2ldCgluID0gMAoJZm9yIChpIGluIHgpCgkJbisrCglwcmludCBuCn0nID5mb28yCmNtcCAtcyBmb28xIGZvbzIgfHwgZWNobyAnB0JBRDogVC5vdmVyZmxvdyBiaWcgYXJyYXknCgplY2hvIHggPmZvbzEKJGF3ayAne3ByaW50ICQ0MDAwMDAwMDAwMDAwMH0nIDxmb28xID5mb28yIDI+Zm9vCmdyZXAgIm91dCBvZiByYW5nZSBmaWVsZCIgZm9vID4vZGV2L251bGwgfHwgZWNobyAxPiYyICJCQUQ6IFQub3ZlcmZsb3cgXCQ0MDAwMDAiCgpybSAtcmYgL3RtcC9hd2t0ZXN0Zm9vKgokYXdrICdCRUdJTiB7IGZvciAoaT0xOyBpIDw9IDEwMDA7IGkrKykgcHJpbnQgaSA+KCIvdG1wL2F3a3Rlc3Rmb28iIGkpIH0nCmxzIC90bXAvYXdrdGVzdGZvbyogfCBncmVwICcxMDAwJyA+L2Rldi9udWxsIHx8IGVjaG8gMT4mMiAiQkFEOiBULm92ZXJmbG93IG9wZW5maWxlcyIKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRlc3RkaXIvdC5ORgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjY0ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDAwMDExNwAxMzMzNzE3NDcwMwAwMTI1NTUAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeyBPRlMgPSAifCI7IHByaW50IE5GOyBORiA9IDI7IHByaW50IE5GOyBwcmludDsgJDUgPSAiZml2ZSI7IHByaW50IE5GOyBwcmludCB9CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0ZXN0ZGlyL3Quc2V0MGIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY2NAAwMDAxNzUwADAwMDE3NTAAMDAwMDAwMDAxMTUAMTMzMzcxNzQ3MDMAMDEzMjY1ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHt4PSQxID0gJDAgPSAkMjsgcHJpbnQgfQp7JDAgPSAkMiA9ICQxOyBwcmludCB9CnskKDApID0gJCgyKSA9ICQoMSk7IHByaW50IH0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdGVzdGRpci9ULmFyZ3YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA3NzUAMDAwMTc1MAAwMDAxNzUwADAwMDAwMDA1MTIxADEzMzM3MTc0NzAzADAxMzE1NAAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGFybm9sZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYXJub2xkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlY2hvIFQuYXJndjogbWlzYyB0ZXN0cyBvZiBhcmdjIGFuZCBhcmd2Cgphd2s9JHthd2stLi4vYS5vdXR9CgplY2hvID5mb28xCmVjaG8gPmZvbzIKJGF3ayAnCkJFR0lOIHsKCWZvciAoaSA9IDE7IGkgPCBBUkdDLTE7IGkrKykKCQlwcmludGYgIiVzICIsIEFSR1ZbaV0KCWlmIChBUkdDID4gMSkKCQlwcmludGYgIiVzIiwgQVJHVltpXQoJcHJpbnRmICJcbiIKCWV4aXQKfScgKiA+Zm9vMQplY2hvICogPmZvbzIKZGlmZiBmb28xIGZvbzIgfHwgZWNobyAnQkFEOiBULmFyZ3YgKGVjaG8xICopJwoKJGF3ayAnCkJFR0lOIHsKCWZvciAoaSA9IDE7IGkgPCBBUkdDOyBpKyspIHsKCQlwcmludGYgIiVzIiwgQVJHVltpXQoJCWlmIChpIDwgQVJHQy0xKQoJCQlwcmludGYgIiAiCgl9CglwcmludGYgIlxuIgoJZXhpdAp9JyAqID5mb28xCmVjaG8gKiA+Zm9vMgpkaWZmIGZvbzEgZm9vMiB8fCBlY2hvICdCQUQ6IFQuYXJndiAoZWNobzIgKiknCgokYXdrICcKQkVHSU4gewoJcHJpbnQgQVJHQwoJQVJHVltBUkdDLTFdID0gIiIKCWZvciAoaT0wOyBpIDwgQVJHQzsgaSsrKQoJCXByaW50IEFSR1ZbaV0KCWV4aXQKfQonIGEgYmMgZGVmIGdoID5mb28xCmVjaG8gIjUKJGF3awphCmJjCmRlZgoiID5mb28yCmRpZmYgZm9vMSBmb28yIHx8IGVjaG8gJ0JBRDogVC5hcmd2IChhcmdjICopJwoKZWNobyAnMQoyCjMnID5mb28wCmVjaG8gJ2ZvbzEKZm9vMgpmb28zJyA+Zm9vMQokYXdrICd7cHJpbnQgTCAkMH0nIEw9Zm9vIDxmb28wID5mb28yCmRpZmYgZm9vMSBmb28yIHx8IGVjaG8gJ0JBRDogVC5hcmd2IChMPWZvbyA8Zm9vMSknCgplY2hvICcxCjIKMycgPmZvbzAKZWNobyAnZm9vMQpmb28yCmZvbzMnID5mb28xCiRhd2sgJ3twcmludCBMICQwfScgTD1mb28gZm9vMCA+Zm9vMgpkaWZmIGZvbzEgZm9vMiB8fCBlY2hvICdCQUQ6IFQuYXJndiAoTD1mb28gZm9vMSknCgplY2hvICcxCjIKMycgPmZvbzAKZWNobyAnZm9vMQpmb28yCmZvbzMnID5mb28xCmNhdCBmb28wIHwgJGF3ayAne3ByaW50IEwgJDB9JyBMPWZvbyAtID5mb28yCmRpZmYgZm9vMSBmb28yIHx8IGVjaG8gJ0JBRDogVC5hcmd2IChMPWZvbyAtKScKCmVjaG8gJzEKMgozJyA+Zm9vMAplY2hvICdmb28xCmZvbzIKZm9vMwpnbG9wMQpnbG9wMgpnbG9wMycgPmZvbzEKJGF3ayAne3ByaW50IEwgJDB9JyBMPWZvbyBmb28wIEw9Z2xvcCBmb28wID5mb28yCmRpZmYgZm9vMSBmb28yIHx8IGVjaG8gJ0JBRDogVC5hcmd2IChMPWZvbyBMPWdsb3ApJwoKZWNobyAnMQoyCjMnID5mb28wCmVjaG8gJzExMQoxMTIKMTEzCjIyMQoyMjIKMjIzJyA+Zm9vMQokYXdrICd7cHJpbnQgTCAkMH0nIEw9MTEgZm9vMCBMPTIyIGZvbzAgPmZvbzIKZGlmZiBmb28xIGZvbzIgfHwgZWNobyAnQkFEOiBULmFyZ3YgKEw9MTEgTD0yMiknCgplY2hvIDMuMzQ1ID5mb28xCiRhd2sgJ0JFR0lOIHsgcHJpbnQgQVJHVlsxXSArIEFSR1ZbMl19JyAxIDIuMzQ1ID5mb28yCmRpZmYgZm9vMSBmb28yIHx8IGVjaG8gJ0JBRDogVC5hcmd2IChBUkdWWzFdICsgQVJHVlsyXSknCgplY2hvIDMuMzQ1ID5mb28xCngxPTEgeDI9Mi4zNDUgJGF3ayAnQkVHSU4geyBwcmludCBFTlZJUk9OWyJ4MSJdICsgRU5WSVJPTlsieDIiXX0nIDEgMi4zNDUgPmZvbzIKZGlmZiBmb28xIGZvbzIgfHwgZWNobyAnQkFEOiBULmFyZ3YgKEVOVklST05beDFdICsgRU5WSVJPTlt4Ml0pJwoKCmVjaG8gJ2ZvbzEnID5mb28xCmVjaG8gJ2ZvbzInID5mb28yCmVjaG8gJ2ZvbzMnID5mb28zCiRhd2sgJ0JFR0lOIHsgQVJHVlsyXSA9ICIiIH0KCXsgcHJpbnQgfScgZm9vMSBmb28yIGZvbzMgPmZvbzQKZWNobyAnZm9vMQpmb28zJyA+Zm9vNQpkaWZmIGZvbzQgZm9vNSB8fCBlY2hvICdCQUQ6IFQuYXJndiB6YXAgQVJHVlsyXScKCmVjaG8gaGkgPiBmb28xIDsgbXYgZm9vMSBmb28yCiRhd2sgJ0JFR0lOIHsgQVJHVlsxXSA9ICJmb28yIiA7IHByaW50IEZJTEVOQU1FIH0KICAgICAgICAgICAgIHsgcHJpbnQgRklMRU5BTUUgfScgZm9vMSA+Zm9vMwplY2hvICcKZm9vMicgPmZvbzQKZGlmZiBmb28zIGZvbzQgfHwgZWNobyAnQkFEOiBULmFyZ3Ygc3RhcnR1cCBGSUxFTkFNRScKCSMgYXNzdW1lcyB0aGF0IHN0YXJ0dXAgRklMRU5BTUUgaXMgIiIKCgojIHRlc3QgZGF0YSBiYWxhbmNlZCBvbiBwaW5oZWFkLi4uCmVjaG8gJ0FSR1ZbM10gaXMgL2Rldi9udWxsCkFSR1ZbMF0gaXMgLi4vYS5vdXQKQVJHVlsxXSBpcyAvZGV2L251bGwnID5mb28xCgokYXdrICdCRUdJTiB7ICAgIyB0aGlzIGlzIGEgdmFyaWFudCBvZiBhcm5vbGRzIG9yaWdpbmFsIGV4YW1wbGUKICAgICAgICBBUkdWWzFdID0gIi9kZXYvbnVsbCIKICAgICAgICBBUkdWWzJdID0gImdsb3RjaCIgICMgZmlsZSBvcGVuIG11c3Qgc2tpcHBlZCBkZWxldGVkIGFyZ3YKICAgICAgICBBUkdWWzNdID0gIi9kZXYvbnVsbCIKICAgICAgICBBUkdDID0gNAogICAgICAgIGRlbGV0ZSBBUkdWWzJdCn0KIyBub3RlIHRoYXQgaW5wdXQgaXMgcmVhZCBoZXJlCkVORCB7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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NDQAMDAwMTE3MQAwMDAxNjMwADAwMDAwMDAwMDIxADEzMzM3NTIyNDY1ADAxNDMxMgAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGJ3awAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZmFjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhOmI6MzMzMzpkOmU6ZjpnCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRlc3RkaXIvVC5hcm5vbGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNzU1ADAwMDExNzEAMDAwMTYzMAAwMDAwMDAwMDUwMgAxMzM0MDAwMDc1NwAwMTIyMjcAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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ICcxMjM0NTY3ODkwMScgPmZvbzEKJGF3ayAnbGVuZ3RoKCQwKSA+IDEwJyBmb28gPmZvbzIKY21wIC1zIGZvbzEgZm9vMiB8fCBlY2hvICcHQkFEOiBULm1pc2MgbGFzdCBudW1iZXIgYnVnJwoKIyBjaGVjayBzb21lIFwgc2VxdWVuY2VzIGluIHN0cmluZ3MgKGFzY2lpKQplY2hvIEhJSktMID5mb28xCmVjaG8gZm9vIHwgJGF3ayAneyBwcmludCAiSFx4NDlceDRhXHg0QkwiIH0nID5mb28yCmNtcCAtcyBmb28xIGZvbzIgfHwgZWNobyAnB0JBRDogVC5taXNjIGhleCBzdHJpbmcgY3Z0JwoKZWNobyAwMTJ4NDUgPmZvbzEKJGF3ayAnQkVHSU4geyBwcmludCAiMFwwNjFcNjJ4XDA2NDUiIH0nID5mb28yCmNtcCAtcyBmb28xIGZvbzIgfHwgZWNobyAnB0JBRDogVC5taXNjIG9jdCBzdHJpbmcgY3Z0JwoKIyAkaSsrIG1lYW5zICgkaSkrKwplY2hvIDMgNSB8ICRhd2sgJ3sgaSA9IDE7IHByaW50ICRpKysgOyBwcmludCAkMSwgaSB9JyA+Zm9vMQplY2hvICczCjQgMScgPmZvbzIKY21wIC1zIGZvbzEgZm9vMiB8fCBlY2hvICcHQkFEOiBULm1pc2MgYmFkIGZpZWxkIGluY3JlbWVudCcKCiMgbWFrZXMgc3VyZSB0aGF0IGZpZWxkcyBhcmUgcmVjb21wdXRlZCBldmVuIGlmIHNlbGYtYXNzaWdubWVudAojIHRha2UgaW50byBhY2NvdW50IHRoYXQgc3VidHJhY3RpbmcgZnJvbSBORiBub3cgcmVidWlsZHMgdGhlIHJlY29yZAplY2hvICdhIGIgYwpzIHAgcSByCnggeSB6JyA+Zm9vCmVjaG8gJ2EKcyBwCngnID5mb28xCiRhd2sgJ3sgTkYgLT0gMjsgJDEgPSAkMTsgcHJpbnQgfScgPGZvbyA+Zm9vMgpkaWZmIGZvbzEgZm9vMiB8fCBlY2hvIDE+JjIgIgdCQUQ6IFQubWlzYyBiYWQgZmllbGQgc2VsZi1hc3NpZ25tZW50ByIKCmVjaG8gJzEKMScgPmZvbzEKJGF3ayAnQkVHSU4ge3ggPSAxOyBwcmludCB4OyB4ID0geDsgcHJpbnQgeH0nID5mb28yCmRpZmYgZm9vMSBmb28yIHx8IGVjaG8gMT4mMiAiB0JBRDogVC5taXNjIGJhZCBzZWxmLWFzc2lnbm1lbnQHIgoKZWNobyA1NzMxMDkzMTIgfCAkYXdrICd7cHJpbnQgJDEqNH0nID5mb28xCmVjaG8gMjI5MjQzNzI0OCA+Zm9vMgpkaWZmIGZvbzEgZm9vMiB8fCBlY2hvIDE+JjIgIgdCQUQ6IFQubWlzYyBiYWQgb3ZlcmZsb3cHIgoKIyBub3RlIHRoYXQgdGhlcmUgYXJlIDgtYml0IGNoYXJhY3RlcnMgaW4gdGhlIGVjaG8KIyBzb21lIHNoZWxscyB3aWxsIHByb2JhYmx5IHNjcmV3IHRoaXMgdXAuCmVjaG8gJyMKY29kZSDCgCAxCmNvZGUgwoAgMicgfAokYXdrICcvXiMvJyA+Zm9vMQplY2hvICcjJyA+Zm9vMgpkaWZmIGZvbzEgZm9vMiB8fCBlY2hvIDE+JjIgIgdCQUQ6IFQubWlzYyBiYWQgbWF0Y2ggb2YgOC1iaXQgY2hhcgciCgplY2hvIGhlbGxvIHwKJGF3ayAnQkVHSU4JeyBGSUxFTkFNRSA9ICIvZXRjL3Bhc3N3ZCIgfQoJeyBwcmludCAkMCB9JyA+L2Rldi9udWxsCmlmIHRlc3QgLXIgY29yZTsgdGhlbiBlY2hvIDE+JjIgIgdCQUQ6IFQubWlzYyAvZXRjL3Bhc3N3ZCBkcm9wcGVkIGNvcmUHIjsgZmkKCmVjaG8gaGVsbG8gfAokYXdrICcgIGZ1bmN0aW9uIGZvbyhmb28pIHsKICAgICAgICAgICAgICAgIGZvbyA9IDEKICAgICAgICAgICAgICAgIGZvbygpCiAgICAgICAgfQoJeyBmb28oYmFyKSB9CicgPi9kZXYvbnVsbCAyPiYxCmlmIHRlc3QgLXIgY29yZTsgdGhlbgoJZWNobyAxPiYyICIHQkFEOiBULm1pc2MgZnVuY3Rpb24gZm9vKGZvbykgZHJvcHBlZCBjb3JlByIKCXJtIC1mIGNvcmUKZmkKCmVjaG8gJzIKMTAnIHwKJGF3ayAneyB4W05SXSA9ICQwIH0JIyB0ZXN0IHdoZXRoZXIgJDAgaXMgTlVNIGFzIHdlbGwgYXMgU1RSCkVORCB7IGlmICh4WzFdID4geFsyXSkgcHJpbnQgIgdCQUQ6IFQubWlzYzogJDAgaXMgbm90IE5VTSIgfScKCgokYXdrICdCRUdJTiB7CglucGFkID0gc3Vic3RyKCJhbGV4YW5kZXIiICIgICAgICAgICAgICIsMSwxNSkKCXByaW50IG5wYWQKCX0nID5mb28KZ3JlcCAnXFwnIGZvbyAmJiBlY2hvIDE+JjIgIgdCQUQ6IFQubWlzYyBhbGV4YW5kZXIgZmFpbHMiCgojIFRoaXMgc2hvdWxkIGdpdmUgYW4gZXJyb3IgYWJvdXQgZnVuY3Rpb24gYXJndW1lbnRzCiRhd2sgJwpmdW5jdGlvbiBmb28oeCkgeyBwcmludCAieCBpcyIgeCB9CkJFR0lOIHsgZm9vKGZvbykgfQonIDI+Zm9vCmdyZXAgImNhbid0IHVzZSBmdW5jdGlvbiBmb28iIGZvbyA+L2Rldi9udWxsIHx8IGVjaG8gMT4mMiAiB0JBRDogVC5taXNjIGZjbiBhcmdzIgoKCiMgZ2F3ayBkZWZyZWYgdGVzdDsgc2hvdWxkIGdpdmUgZXJyb3IgYWJvdXQgdW5kZWZpbmVkIGZ1bmN0aW9uCiRhd2sgJ0JFR0lOIHsgZm9vKCkgfScgMj5mb28KZ3JlcCAiY2FsbGluZyB1bmRlZmluZWQgZnVuY3Rpb24gZm9vIiBmb28gPi9kZXYvbnVsbCB8fCBlY2hvIDE+JjIgIgdCQUQ6IFQubWlzYyB1bmRlZmluZWQgZnVuY3Rpb24iCgoKIyBnYXdrIGFycmF5cGFybSB0ZXN0OyBzaG91bGQgZ2l2ZSBlcnJvciBhYm91dCBmdW5jdGlvbiAKJGF3ayAnCkJFR0lOIHsKICAgIGZvb1sxXT0xOwogICAgZm9vWzJdPTI7CiAgICBidWcxKGZvbyk7Cn0KZnVuY3Rpb24gYnVnMShpKSB7CiAgICBmb3IgKGkgaW4gZm9vKSB7CglidWcyKGkpOwoJZGVsZXRlIGZvb1tpXTsKCXByaW50IGksMSxib3RbMV07CiAgICB9Cn0KZnVuY3Rpb24gYnVnMihhcmcpIHsKICAgIGJvdFthcmddPWFyZzsKfQonIDI+Zm9vCmdyZXAgImNhbi50IGFzc2lnbiB0byBmb28iIGZvbyA+L2Rldi9udWxsIHx8IGVjaG8gMT4mMiAiB0JBRDogVC5taXNjIGZvbyBidWciCgoKIyBUaGlzIHNob3VsZCBiZSBhIHN5bnRheCBlcnJvcgokYXdrICcKIXggPSB5CicgMj5mb28KZ3JlcCAic3ludGF4IGVycm9yIiBmb28gPi9kZXYvbnVsbCB8fCBlY2hvIDE+JjIgIgdCQUQ6IFQubWlzYyBzeW50YXggZXJyb3IgIXg9eSBmYWlscyIKCiMgVGhpcyBzaG91bGQgcHJpbnQgYmJiCiRhd2sgJwpCRUdJTiB7IHVwWzFdID0gImEiCglmb3IgKGkgaW4gdXApIGdzdWIoImEiLCAiQSIsIHgpCglwcmludCB4IHggImJiYiIKCWV4aXQKICAgICAgfQonID5mb28KZ3JlcCBiYmIgZm9vID4vZGV2L251bGwgfHwgZWNobyAxPiYyICIHQkFEOiBULm1pc2MgZ3N1YiBmYWlsZWQiCgplY2hvIHllcyB8CiRhd2sgJwpCRUdJTiB7CglwcmludGYgInB1c2ggcmV0dXJuByIgPiIvZGV2L251bGwiCglnZXRsaW5lIGFucyA8Ii9kZXYvbnVsbCIKfSAnCmlmIHRlc3QgLXIgY29yZTsgdGhlbiBlY2hvIDE+JjIgIgdCQUQ6IFQubWlzYyBnZXRsaW5lIGFucyBkcm9wcGVkIGNvcmUiOyBmaQoKJGF3ayAnQkVHSU4geyB1bmlyZWdoZigpIH0KZnVuY3Rpb24gdW5pcmVnaGYoaGZlZWQpIHsgaGZlZWRbMV0gPSAwIH0nCmlmIHRlc3QgLXIgY29yZTsgdGhlbiBlY2hvIDE+JjIgIgdCQUQ6IFQubWlzYyB1bmlyZWdoZiBkcm9wcGVkIGNvcmUiOyBmaQoKZWNobyB4IHwgJGF3ayAnL1svXS8nIDI+Zm9vCmdyZXAgJ25vbnRlcm1pbmF0ZWQgY2hhcmFjdGVyIGNsYXNzJyBmb28gPi9kZXYvbnVsbCB8fCBlcnJvciAnB0JBRDogVC5taXNjIG5vbnRlcm1pbmF0ZWQgZmFpbHMnCmlmIHRlc3QgLXIgY29yZTsgdGhlbiBlY2hvIDE+JjIgIgdCQUQ6IFQubWlzYyBub250ZXJtaW5hdGVkIGRyb3BwZWQgY29yZSI7IGZpCgokYXdrICcKZnVuY3Rpb24gZigpIHsgcmV0dXJuIDEyMzQ1IH0KQkVHSU4geyBwcmludGYgIjwlcz5cbiIsIGYoKSB9CicgPmZvbwpncmVwICc8MTIzNDU+JyBmb28gPi9kZXYvbnVsbCB8fCBlY2hvICcHQkFEOiBULm1pc2MgPDEyMzQ1PiBmYWlscycKCmVjaG8gJ2FiYwpkZWYKCmdoaQpqa2wnID5mb28KJGF3ayAnCkJFR0lOIHsJUlMgPSAiIgoJd2hpbGUgKGdldGxpbmUgPCJmb28iKQoJCXByaW50Cn0nID5mb28xCiRhd2sgJ0VORCB7cHJpbnQgTlJ9JyBmb28xIHwgZ3JlcCA0ID4vZGV2L251bGwgfHwgZWNobyAnB0JBRDogVC5taXNjIGFiY2RlZiBmYWlscycKCgojIFRoZSBmb2xsb3dpbmcgc2hvdWxkIG5vdCBwcm9kdWNlIGEgd2FybmluZyBhYm91dCBjaGFuZ2luZyBhIGNvbnN0YW50CiMgbm9yIGFib3V0IGEgY3VyZGxlZCB0ZW1wY2VsbCBsaXN0CiRhd2sgJ2Z1bmN0aW9uIGYoeCkgeyB4ID0gMiB9CkJFR0lOIHsgZigxKSB9JyA+Zm9vCmdyZXAgJ14nIGZvbyAmJiBlY2hvICcHQkFEOiB0ZXN0IGNvbnN0YW50IGNoYW5nZSBmYWlscycKCiMgVGhlIGZvbGxvd2luZyBzaG91bGQgbm90IHByb2R1Y2UgYSB3YXJuaW5nIGFib3V0IGEgY3VyZGxlZCB0ZW1wY2VsbCBsaXN0CiRhd2sgJ2Z1bmN0aW9uIGYoeCkgeyB4IH0KQkVHSU4geyBmKDEpIH0nID5mb28KZ3JlcCAnXicgZm9vICYmIGVjaG8gJwdCQUQ6IHRlc3QgdGVtcGNlbGwgbGlzdCBmYWlscycKCiRhd2sgJ0JFR0lOIHsgcHJpbnQgOSwgYT0xMCwgMTE7IHByaW50IGE7IGV4aXQgfScgPmZvbzEKZWNobyAnOSAxMCAxMQoxMCcgPmZvbzIKZGlmZiBmb28xIGZvbzIgfHwgZWNobyAnB0JBRDogVC5taXNjIChlbWJlZGRlZCBleHByZXNzaW9uKScKCmVjaG8gImFiYyBkZWZnaCBpamtsIiB8ICRhd2sgJwogIHsgJDEgPSAiIjsgbGluZSA9ICQwOyBwcmludCBsaW5lOyBwcmludCAkMDsgJDAgPSBsaW5lOyBwcmludCAkMCB9JyA+Zm9vMQplY2hvICIgZGVmZ2ggaWprbAogZGVmZ2ggaWprbAogZGVmZ2ggaWprbCIgPmZvbzIKZGlmZiBmb28xIGZvbzIgfHwgZWNobyAnB0JBRDogVC5taXNjIChhc3NpZ25tZW50IHRvICQwKScKCiRhd2sgJwpmdW5jdGlvbiBtaW4oYSwgYikKewoJaWYgKGEgPCBiKQoJCXJldHVybiBhCgllbHNlCgkJcmV0dXJuIGIKfQpCRUdJTiB7IGV4aXQgfQonCmlmIHRlc3QgLXIgY29yZTsgdGhlbiBlY2hvIDE+JjIgIgdCQUQ6IFQubWlzYyBmdW5jdGlvbiBtaW4gZHJvcHBlZCBjb3JlByI7IGZpCgojIFRoZSBmb2xsb3dpbmcgc2hvdWxkIG5vdCBnaXZlIGEgc3ludGF4IGVycm9yIG1lc3NhZ2U6CiRhd2sgJwpmdW5jdGlvbiBleHBhbmQoY2hhcnQpIHsKCWdldGxpbmUgY2hhcnQgPCAiQ0hBUi50aWNrcyIKfQonID5mb28KZ3JlcCAnXicgZm9vID4vZGV2L251bGwgJiYgZWNobyAnB0JBRDogVC5taXNjIGV4cGFuZCBlcnJvcicKCiRhd2sgJ0JFR0lOIHsgcHJpbnQgMWU0MCB9JyA+L2Rldi9udWxsCmlmIHRlc3QgLXIgY29yZTsgdGhlbiBlY2hvIDE+JjIgIgdCQUQ6IFQubWlzYyAxRTQwIGRyb3BwZWQgY29yZQciOyBmaQoKIyBUaGUgZm9sbG93aW5nIHN5bnRheCBlcnJvciBzaG91bGQgbm90IGR1bXAgY29yZToKJGF3ayAnCiRORj09Mwl7Zmlyc3Q9MX0KJE5GPT0yICYmIGZpcnN0PT0wICYmIChhYnMoJDEtbzEpPjEyMHx8YWJzKCQyLW8yKT4xMjApCXtwcmludCAkMH0KJE5GPT0yCXtvMT0lMTsgbzI9JDI7IGZpcnN0PTB9CicgMj4vZGV2L251bGwKaWYgdGVzdCAtciBjb3JlOyB0aGVuIGVjaG8gMT4mMiAiB0JBRDogVC5taXNjIGZpcnN0L2FicyBkcm9wcGVkIGNvcmUHIjsgZmkKCiMgVGhlIGZvbGxvd2luZyBzeW50YXggZXJyb3Igc2hvdWxkIG5vdCBkdW1wIGNvcmU6CiRhd2sgJ3sgbiA9IHNwbGl0KCQxLCBhZGRyZXNzLCAhKTsgcHJpbnQgYWRkcmVzc1sxXSB9JyAyPmZvbwpncmVwICdpbGxlZ2FsIHN0YXRlbWVudCcgZm9vID4vZGV2L251bGwgfHwgZWNobyAnB0JBRDogVC5taXNjIHNwbGl0IGVycm9yJwppZiB0ZXN0IC1yIGNvcmU7IHRoZW4gZWNobyAxPiYyICIHQkFEOiBULm1pc2Mgc3BsaXQhIGRyb3BwZWQgY29yZQciOyBmaQoKIyBUaGUgZm9sbG93aW5nIHNob3VsZCBjYXVzZSBhIHN5bnRheCBlcnJvciBtZXNzYWdlCiRhd2sgJ0JFR0lOIHsiaGVsbG8ifScgMj5mb28KZ3JlcCAnaWxsZWdhbCBzdGF0ZW1lbnQnIGZvbyA+L2Rldi9udWxsIHx8IGVjaG8gJwdCQUQ6IFQubWlzYyBoZWxsbyBlcnJvcicKCiMgVGhlIGZvbGxvd2luZyBzaG91bGQgZ2l2ZSBhIHN5bnRheCBlcnJvciBtZXNzYWdlOgokYXdrICcKZnVuY3Rpb24gcGlsZShjLCAgICAgcikgewoJciA9ICsrcGlsZVtjXQp9Cgp7IHBpbGUoJDEpIH0KJyAyPmZvbwpncmVwICdjb250ZXh0IGlzJyBmb28gPi9kZXYvbnVsbCB8fCBlY2hvICcHQkFEOiBULm1pc2MgcGlsZSBlcnJvcicKCiMgVGhpcyBzaG91bGQgY29tcGxhaW4gYWJvdXQgbWlzc2luZyBhdGFuMiBhcmd1bWVudDoKJGF3ayAnQkVHSU4geyBhdGFuMigxKSB9JyAyPmZvbwpncmVwICdyZXF1aXJlcyB0d28gYXJnJyBmb28gPi9kZXYvbnVsbCB8fCBlY2hvICcHQkFEOiBULm1pc2MgYXRhbjIgZXJyb3InCgojIFRoaXMgc2hvdWxkIG5vdCBjb3JlIGR1bXA6CiRhd2sgJ0JFR0lOIHsgZigpIH0KZnVuY3Rpb24gZihBKSB7IGRlbGV0ZSBBWzFdIH0KJwppZiB0ZXN0IC1yIGNvcmU7IHRoZW4gZWNobyAxPiYyICIHQkFEOiBULm1pc2MgZGVsZXRlIGRyb3BwZWQgY29yZQciOyBmaQoKIyBuYXN0eSBvbmU6ICBzaG91bGQgbm90IGJlIGFibGUgdG8gb3ZlcndyaXRlIGNvbnN0YW50cwokYXdrICdCRUdJTiB7IGdzdWIoL2FuYS8sImFuZGEiLCJiYW5hbmEiKQoJCXByaW50ZiAidGhlIG1vbmtleSBhdGUgYSAlc1xuIiwgImJhbmFuYSIgfQonID4vZGV2L251bGwgMj5mb28KZ3JlcCAnc3ludGF4IGVycm9yJyBmb28gPi9kZXYvbnVsbCB8fCBlY2hvICcHQkFEOiBULm1pc2MgZ3N1YiBiYW5hbmEgZXJyb3InCgojIG5hc3R5IG9uZTogIHNob3VsZCBub3QgYmUgYWJsZSB0byBvdmVyd3JpdGUgY29uc3RhbnRzCiRhd2sgJ0JFR0lOIHsgc3ViKC9hbmEvLCJhbmRhIiwiYmFuYW5hIikKCQlwcmludGYgInRoZSBtb25rZXkgYXRlIGEgJXNcbiIsICJiYW5hbmEiIH0KJyA+L2Rldi9udWxsIDI+Zm9vCmdyZXAgJ3N5bnRheCBlcnJvcicgZm9vID4vZGV2L251bGwgfHwgZWNobyAnB0JBRDogVC5taXNjIHN1YiBiYW5hbmEgZXJyb3InCgojIGxpbmUgbnVtYmVycyB1c2VkIHRvIGRvdWJsZS1jb3VudCBjb21tZW50cwokYXdrICcjCiMKIwoveAonID4vZGV2L251bGwgMj5mb28KZ3JlcCAnbGluZSBbNDVdJyBmb28gPi9kZXYvbnVsbCB8fCBlY2hvICcHQkFEOiBULm1pc2MgbGluZW5vJwoKZWNobyAneAwNCAsHXHknID5mb28xCiRhd2sgJ0JFR0lOIHsgcHJpbnQgInhcZlxyXGJcdlxhXFx5IiB9JyA+Zm9vMgpjbXAgLXMgZm9vMSBmb28yIHx8IGVjaG8gJwdCQUQ6IFQubWlzYyB3ZWlyZCBjaGFycycKCmVjaG8gMCA+Zm9vMQokYXdrICcJQkVHSU4geyBleGl0IH0KCXsgcHJpbnQgfQoJRU5EIHsgcHJpbnQgTlIgfScgPmZvbzIKY21wIC1zIGZvbzEgZm9vMiB8fCBlY2hvICcHQkFEOiBULm1pc2MgQkVHSU4gZXhpdCcKCmVjaG8gMSA+Zm9vMQokYXdrICcJeyBleGl0IH0KCUVORCB7IHByaW50IE5SIH0nIC9ldGMvcGFzc3dkID5mb28yCmNtcCAtcyBmb28xIGZvbzIgfHwgZWNobyAnB0JBRDogVC5taXNjIGltbW1lZGlhdGUgZXhpdCcKCmVjaG8gMSA+Zm9vMQokYXdrICcJe2kgPSAxOyB3aGlsZSAoaSA8PSBORikge2lmIChpID09IE5GKSBleGl0OyBpKysgfSB9CglFTkQgeyBwcmludCBOUiB9JyAvZXRjL3Bhc3N3ZCA+Zm9vMgpjbXAgLXMgZm9vMSBmb28yIHx8IGVjaG8gJwdCQUQ6IFQubWlzYyBpbW1tZWRpYXRlIGV4aXQgMicKCmVjaG8gMSA+Zm9vMQokYXdrICcJZnVuY3Rpb24gZigpIHsKCQlpID0gMTsgd2hpbGUgKGkgPD0gTkYpIHtpZiAoaSA9PSBORikgcmV0dXJuIE5SOyBpKysgfQoJfQoJeyBpZiAoZigpID09IDEpIGV4aXQgfQoJRU5EIHsgcHJpbnQgTlIgfScgL2V0Yy9wYXNzd2QgPmZvbzIKY21wIC1zIGZvbzEgZm9vMiB8fCBlY2hvICcHQkFEOiBULm1pc2Mgd2hpbGUgcmV0dXJuJwoKZWNobyAxID5mb28xCiRhd2sgJwlmdW5jdGlvbiBmKCkgewoJCXNwbGl0KCJhIGIgYyIsIGFycikKCQlmb3IgKGkgaW4gYXJyKSB7aWYgKGkgPT0gMykgcmV0dXJuIE5SOyBpKysgfQoJfQoJeyBpZiAoZigpID09IDEpIGV4aXQgfQoJRU5EIHsgcHJpbnQgTlIgfScgL2V0Yy9wYXNzd2QgPmZvbzIKY21wIC1zIGZvbzEgZm9vMiB8fCBlY2hvICcHQkFEOiBULm1pc2Mgd2hpbGUgcmV0dXJuJwoKZWNobyAxID5mb28xCiRhd2sgJwl7aSA9IDE7IGRvIHsgaWYgKGkgPT0gTkYpIGV4aXQ7IGkrKyB9IHdoaWxlIChpIDw9IE5GKSB9CglFTkQgeyBwcmludCBOUiB9JyAvZXRjL3Bhc3N3ZCA+Zm9vMgpjbXAgLXMgZm9vMSBmb28yIHx8IGVjaG8gJwdCQUQ6IFQubWlzYyBpbW1tZWRpYXRlIGV4aXQgMycKCmVjaG8gMSA+Zm9vMQokYXdrICcJZnVuY3Rpb24gZigpIHsKCQlpID0gMTsgZG8geyBpZiAoaSA9PSBORikgcmV0dXJuIE5SOyBpKysgfSB3aGlsZSAoaSA8PSBORikKCX0KCXsgaWYgKGYoKSA9PSAxKSBleGl0IH0KCUVORCB7IHByaW50IE5SIH0nIC9ldGMvcGFzc3dkID5mb28yCmNtcCAtcyBmb28xIGZvbzIgfHwgZWNobyAnB0JBRDogVC5taXNjIGRvIHJldHVybicKCmVjaG8gMSA+Zm9vMQokYXdrICcJe2kgPSAxOyBkbyB7IGlmIChpID09IE5GKSBicmVhazsgaSsrIH0gd2hpbGUgKGkgPD0gTkYpOyBleGl0IH0KCUVORCB7IHByaW50IE5SIH0nIC9ldGMvcGFzc3dkID5mb28yCmNtcCAtcyBmb28xIGZvbzIgfHwgZWNobyAnB0JBRDogVC5taXNjIGltbW1lZGlhdGUgZXhpdCA0JwoKZWNobyAxID5mb28xCiRhd2sgJwl7IG4gPSBzcGxpdCgkMCwgeCkKCSAgZm9yIChpIGluIHgpIHsKCSAJaWYgKGkgPT0gMSkKCQkJZXhpdCB9IH0KCUVORCB7IHByaW50IE5SIH0nIC9ldGMvcGFzc3dkID5mb28yCmNtcCAtcyBmb28xIGZvbzIgfHwgZWNobyAnB0JBRDogVC5taXNjIGltbW1lZGlhdGUgZXhpdCA1JwoKZWNobyBYWFhYWFhYWCA+Zm9vMQokYXdrICdCRUdJTiB7IHMgPSAiYWJcZmNccmRcYmUiCgl0ID0gczsgCWdzdWIoIlsiIHMgIl0iLCAiWCIsIHQpOyBwcmludCB0IH0nID5mb28yCmNtcCAtcyBmb28xIGZvbzIgfHwgZWNobyAnB0JBRDogVC5taXNjIHdlaXJkIGVzY2FwZXMgaW4gY2hhciBjbGFzcycKCiRhd2sgJ3t9JyAvZXRjL3Bhc3N3ZCBnbG9wL2dsb3AgPmZvbyAyPmZvbzIKZ3JlcCAiY2FuJ3Qgb3Blbi4qZ2xvcCIgZm9vMiA+L2Rldi9udWxsIHx8IGVjaG8gIgdCQUQ6IFQubWlzYyBjYW4ndCBvcGVuIgoKZWNobyAnCgoKYQphYQoKYgoKCmMKCicgPmZvbwplY2hvIDMgPmZvbzEKJGF3ayAnQkVHSU4geyBSUyA9ICIiIH07IEVORCB7IHByaW50IE5SIH0nIGZvbyA+Zm9vMgpjbXAgLXMgZm9vMSBmb28yIHx8IGVjaG8gJwdCQUQ6IFQubWlzYyBSUyBib3RjaCcKCiRhd2sgJ0JFR0lOIFwKCXsKCQlwcmludCAiaGVsbG8sIHdvcmxkIgoJfQp9fX0nID5mb28xIDI+Zm9vMgpncmVwICdzb3VyY2UgbGluZSA1JyBmb28yID4vZGV2L251bGwgMj4mMSB8fCBlY2hvICcHQkFEOiBULm1pc2MgY29udGludWF0aW9uIGxpbmUgbnVtYmVyJwoKCmVjaG8gMTExIDIyMiAzMzMgPmZvbwokYXdrICd7IGZbMV09MTsgZlsyXT0yOyBwcmludCAkZlsxXSwgJGZbMV0rKywgJGZbMl0sIGZbMV0sIGZbMl0gfScgZm9vID5mb28yCmVjaG8gMTExIDExMSAyMjIgMiAyID5mb28xCmNtcCAtcyBmb28xIGZvbzIgfHwgZWNobyAnB0JBRDogVC5taXNjICRmWzFdKysnCgoKIyBUaGVzZSBzaG91bGQgYmUgc3ludGF4IGVycm9ycwokYXdrIC4gMj5mb28KZ3JlcCAic3ludGF4IGVycm9yIiBmb28gPi9kZXYvbnVsbCB8fCBlY2hvIDE+JjIgIgdCQUQ6IFQubWlzYyBzeW50YXggZXJyb3IgLiBmYWlscyIKCiRhd2sgLi4gMj5mb28KZ3JlcCAic3ludGF4IGVycm9yIiBmb28gPi9kZXYvbnVsbCB8fCBlY2hvIDE+JjIgIgdCQUQ6IFQubWlzYyBzeW50YXggZXJyb3IgLi4gZmFpbHMiCgokYXdrIC5FLiAyPmZvbwpncmVwICJzeW50YXggZXJyb3IiIGZvbyA+L2Rldi9udWxsIHx8IGVjaG8gMT4mMiAiB0JBRDogVC5taXNjIHN5bnRheCBlcnJvciAuRS4gZmFpbHMiCgokYXdrIC4rKy4gMj5mb28KZ3JlcCAic3ludGF4IGVycm9yIiBmb28gPi9kZXYvbnVsbCB8fCBlY2hvIDE+JjIgIgdCQUQ6IFQubWlzYyBzeW50YXggZXJyb3IgLisrLiBmYWlscyIKCgoKIyBUaGVzZSBzaG91bGQgYmUgc3ludGF4IGVycm9ycwokYXdrICckJyAyPmZvbwpncmVwICJ1bmV4cGVjdGVkIiBmb28gPi9kZXYvbnVsbCB8fCBlY2hvIDE+JjIgIgdCQUQ6IFQubWlzYyBzeW50YXggZXJyb3IgJCBmYWlscyIKCiRhd2sgJ3twcmludCAkJyAyPmZvbwpncmVwICJ1bmV4cGVjdGVkIiBmb28gPi9kZXYvbnVsbCB8fCBlY2hvIDE+JjIgIgdCQUQ6IFQubWlzYyBzeW50YXggZXJyb3IgJDIgZmFpbHMiCgokYXdrICciJyAyPmZvbwpncmVwICJub24tdGVybWluYXRlZCIgZm9vID4vZGV2L251bGwgfHwgZWNobyAxPiYyICIHQkFEOiBULm1pc2MgYmFyZSBxdW90ZSBmYWlscyIKCgojICVjIG9mIDAgaXMgZXhwbGljaXQgbnVsbCBieXRlCgouL2VjaG8gJzMnID5mb28xCiRhd2sgJ0JFR0lOIHtwcmludGYoIiVjJWNcbiIsIDAsIDApIH0nIHwgd2MgfCAkYXdrICd7cHJpbnQgJDN9JyA+Zm9vMgpjbXAgLXMgZm9vMSBmb28yIHx8IGVjaG8gJwdCQUQ6IFQubWlzYyBudWxsIGJ5dGUnCgojIG5vbi10ZXJtaW5hdGVkIFJFCgokYXdrIC94eXogPmZvbyAyPiYxCmdyZXAgIm5vbi10ZXJtaW5hdGVkIiBmb28gPi9kZXYvbnVsbCB8fCBlY2hvIDE+JjIgIgdCQUQ6IFQubWlzYyBub24tdGVybWluYXRlZCBSRSIKCiMgbmV4dCBzZXZlcmFsIHdlcmUgaW5maW5pdGUgbG9vcHMsIGZvdW5kIGJ5IGJyaWFuIHRzYW5nLgojIHRoaXMgaXMgaGlzIGV4YW1wbGU6CgokYXdrICdCRUdJTiB7CiAgICBzd2l0Y2ggKHN1YnN0cigieCIsMSwxKSkgewogICAgY2FzZSAvYXNrLmNvbS86CglicmVhawogICAgY2FzZSAiZ29vZ2xlIjoKCWJyZWFrCiAgICB9Cn0nID5mb28gMj4mMQpncmVwICJpbGxlZ2FsIHN0YXRlbWVudCIgZm9vID4vZGV2L251bGwgfHwgZWNobyAxPiYyICIHQkFEOiBULm1pc2MgbG9vcGluZyBzeW50YXggZXJyb3IgMSIKCiRhd2sgJ0JFR0lOIHsgcyB7IGMgLy4vIH0gfScgPmZvbyAyPiYxCmdyZXAgImlsbGVnYWwgc3RhdGVtZW50IiBmb28gPi9kZXYvbnVsbCB8fCBlY2hvIDE+JjIgIgdCQUQ6IFQubWlzYyBsb29waW5nIHN5bnRheCBlcnJvciAyIgoKJGF3ayAnQkVHSU4geyBzIHsgYyAvLi4vIH0gfScgPmZvbyAyPiYxCmdyZXAgImlsbGVnYWwgc3RhdGVtZW50IiBmb28gPi9kZXYvbnVsbCB8fCBlY2hvIDE+JjIgIgdCQUQ6IFQubWlzYyBsb29waW5nIHN5bnRheCBlcnJvciAzIgoKJGF3ayAnQkVHSU4ge3ByaW50ZiAiJTIkcyAlMSRzXG4iLCAiYSIsICJiIn0nID5mb28gMj4mMQpncmVwICInJCcgbm90IHBlcm1pdHRlZCBpbiBhd2sgZm9ybWF0cyIgZm9vID4vZGV2L251bGwgfHwgZWNobyAxPiYyICIHQkFEOiBULm1pc2MgJyQnIG5vdCBwZXJtaXR0ZWQgaW4gZm9ybWF0cyIKCmVjaG8gJ2EKYiBjCmRlIGZnIGhpJyA+Zm9vMAokYXdrICdFTkQgeyBwcmludCBORiwgJDAgfScgZm9vMCA+Zm9vMQphd2sgJ3sgcHJpbnQgTkYsICQwIH0nIGZvbzB8IHRhaWwgLTEgPmZvbzIKY21wIC1zIGZvbzEgZm9vMiB8fCBlY2hvICcHQkFEOiBULm1pc2MgRU5EIG11c3QgcHJlc2VydmUgJDAnCgplY2hvICdmZyBoaScgPmZvbzAKJGF3ayAnRU5EIHsgcHJpbnQgTkYsICQwIH0nIGZvbzAgPmZvbzEKYXdrICd7IHByaW50IE5GLCAkMCB9JyBmb28wfCB0YWlsIC0xID5mb28yCmNtcCAtcyBmb28xIGZvbzIgfHwgZWNobyAnB0JBRDogVC5taXNjIEVORCBtdXN0IHByZXNlcnZlICQwJwoKZWNobyAnJyA+Zm9vMAokYXdrICdFTkQgeyBwcmludCBORiwgJDAgfScgZm9vMCA+Zm9vMQphd2sgJ3sgcHJpbnQgTkYsICQwIH0nIGZvbzB8IHRhaWwgLTEgPmZvbzIKY21wIC1zIGZvbzEgZm9vMiB8fCBlY2hvICcHQkFEOiBULm1pc2MgRU5EIG11c3QgcHJlc2VydmUgJDAnCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=